[DebianGIS-dev] r2489 - in packages/jts/branches/upstream/current: . bin doc doc/javadoc doc/javadoc/com doc/javadoc/com/vividsolutions doc/javadoc/com/vividsolutions/jts doc/javadoc/com/vividsolutions/jts/algorithm doc/javadoc/com/vividsolutions/jts/geom doc/javadoc/com/vividsolutions/jts/geom/impl doc/javadoc/com/vividsolutions/jts/geom/util doc/javadoc/com/vividsolutions/jts/geomgraph doc/javadoc/com/vividsolutions/jts/geomgraph/index doc/javadoc/com/vividsolutions/jts/index doc/javadoc/com/vividsolutions/jts/index/bintree doc/javadoc/com/vividsolutions/jts/index/chain doc/javadoc/com/vividsolutions/jts/index/quadtree doc/javadoc/com/vividsolutions/jts/index/strtree doc/javadoc/com/vividsolutions/jts/index/sweepline doc/javadoc/com/vividsolutions/jts/io doc/javadoc/com/vividsolutions/jts/linearref doc/javadoc/com/vividsolutions/jts/noding doc/javadoc/com/vividsolutions/jts/noding/snapround doc/javadoc/com/vividsolutions/jts/operation doc/javadoc/com/vividsolutions/jts/operation/buffer doc/javadoc/com/vividsolutions/jts/operation/distance doc/javadoc/com/vividsolutions/jts/operation/linemerge doc/javadoc/com/vividsolutions/jts/operation/overlay doc/javadoc/com/vividsolutions/jts/operation/overlay/snap doc/javadoc/com/vividsolutions/jts/operation/overlay/validate doc/javadoc/com/vividsolutions/jts/operation/polygonize doc/javadoc/com/vividsolutions/jts/operation/predicate doc/javadoc/com/vividsolutions/jts/operation/relate doc/javadoc/com/vividsolutions/jts/operation/valid doc/javadoc/com/vividsolutions/jts/planargraph doc/javadoc/com/vividsolutions/jts/planargraph/algorithm doc/javadoc/com/vividsolutions/jts/precision doc/javadoc/com/vividsolutions/jts/simplify doc/javadoc/com/vividsolutions/jts/util doc/javadoc/resources jtsio jtsio/doc jtsio/doc/javadoc jtsio/doc/javadoc/com jtsio/doc/javadoc/com/vividsolutions jtsio/doc/javadoc/com/vividsolutions/jts jtsio/doc/javadoc/com/vividsolutions/jts/io jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2 jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle jtsio/doc/javadoc/resources jtsio/src jtsio/src/com jtsio/src/com/vividsolutions jtsio/src/com/vividsolutions/jts jtsio/src/com/vividsolutions/jts/io jtsio/src/com/vividsolutions/jts/io/gml2 jtsio/src/com/vividsolutions/jts/io/oracle jtsio/test jtsio/test/com jtsio/test/com/vividsolutions jtsio/test/com/vividsolutions/jts jtsio/test/com/vividsolutions/jts/generator jtsio/test/com/vividsolutions/jts/io jtsio/test/com/vividsolutions/jts/io/gml2 jtsio/test/com/vividsolutions/jts/io/oracle jtsio/test/data src src/com/vividsolutions/jts src/com/vividsolutions/jts/algorithm src/com/vividsolutions/jts/geom src/com/vividsolutions/jts/geom/impl src/com/vividsolutions/jts/geom/util src/com/vividsolutions/jts/geomgraph src/com/vividsolutions/jts/index/bintree src/com/vividsolutions/jts/index/quadtree src/com/vividsolutions/jts/index/strtree src/com/vividsolutions/jts/io src/com/vividsolutions/jts/noding src/com/vividsolutions/jts/operation src/com/vividsolutions/jts/operation/buffer src/com/vividsolutions/jts/operation/distance src/com/vividsolutions/jts/operation/linemerge src/com/vividsolutions/jts/operation/overlay src/com/vividsolutions/jts/operation/overlay/snap src/com/vividsolutions/jts/operation/overlay/validate src/com/vividsolutions/jts/operation/polygonize src/com/vividsolutions/jts/operation/relate src/com/vividsolutions/jts/operation/valid src/com/vividsolutions/jts/planargraph src/com/vividsolutions/jts/precision src/com/vividsolutions/jts/simplify src/com/vividsolutions/jts/util testxml testxml/general testxml/robust testxml/stmlf testxml/validate

frankie at alioth.debian.org frankie at alioth.debian.org
Tue Sep 22 12:40:03 UTC 2009


Author: frankie
Date: 2009-09-22 12:40:02 +0000 (Tue, 22 Sep 2009)
New Revision: 2489

Added:
   packages/jts/branches/upstream/current/bin/test_stmlf.bat
   packages/jts/branches/upstream/current/doc/
   packages/jts/branches/upstream/current/doc/JTS Developer Guide.pdf
   packages/jts/branches/upstream/current/doc/JTS Technical Specs.pdf
   packages/jts/branches/upstream/current/doc/JTS TestBuilder & TestRunner User Guide.pdf
   packages/jts/branches/upstream/current/doc/JTS Version History.html
   packages/jts/branches/upstream/current/doc/javadoc/
   packages/jts/branches/upstream/current/doc/javadoc/allclasses-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/allclasses-noframe.html
   packages/jts/branches/upstream/current/doc/javadoc/com/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/JTSVersion.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/Angle.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CGAlgorithms.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidArea.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidLine.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidPoint.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/ConvexHull.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/HCoordinate.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointArea.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointLine.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointPoint.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/LineIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MCPointInRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MinimumDiameter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NotRepresentableException.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointInRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointLocator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustDeterminant.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustLineIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SIRtreePointInRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateList.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequence.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceComparator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequences.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Dimension.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Envelope.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Geometry.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollection.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollectionIterator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryComponentFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/IntersectionMatrix.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineSegment.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineString.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LinearRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Location.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiLineString.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPoint.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPolygon.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Point.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Polygon.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/PrecisionModel.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/TopologyException.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Triangle.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryTransformer.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/LinearComponentExtracter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/Matrix.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PointExtracter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PolygonExtracter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Depth.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Edge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEnd.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEndStar.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersection.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeList.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GeometryGraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GraphComponent.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Label.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Node.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeMap.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/PlanarGraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Position.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Quadrant.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/TopologyLocation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChain.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ArrayListVisitor.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ItemVisitor.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/SpatialIndex.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Bintree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Interval.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Key.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Node.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/NodeBase.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Root.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChain.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/DoubleBits.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/IntervalSize.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Key.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Node.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/NodeBase.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Quadtree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Root.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractNode.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Boundable.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Interval.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/ItemBoundable.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/SIRtree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/STRtree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineEvent.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineIndex.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineInterval.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteArrayInStream.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderDataInStream.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderValues.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InStream.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InputStreamInStream.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutStream.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutputStreamOutStream.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ParseException.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBConstants.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBReader.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBWriter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTReader.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTWriter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthIndexedLine.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthLocationMap.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearGeometryBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearIterator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearLocation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LocationIndexedLine.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/FastNodingValidator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/InteriorIntersectionFinder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionAdder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionFinderAdder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IteratedNoder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Noder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/NodingValidator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Octant.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/OrientedCoordinateArray.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/ScaledNoder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentIntersector.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNode.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNodeList.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentPointComparator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentString.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SimpleNoder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SinglePassNoder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/HotPixel.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/BoundaryOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/GeometryGraphOperation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/IsSimpleOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferSubgraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/DistanceOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/GeometryLocation.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/EdgeString.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMerger.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineSequencer.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/LineBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PointBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PolygonBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/EdgeRing.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/Polygonizer.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleContains.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleIntersects.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundle.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateComputer.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNode.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeGraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/IsValidOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/RepeatedPointTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/TopologyValidationError.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdgeStar.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Edge.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/GraphComponent.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Node.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/NodeMap.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/PlanarGraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Subgraph.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBits.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsRemover.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/EnhancedPrecisionOp.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/LineSegmentIndex.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineSegment.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineString.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Assert.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/AssertionFailedException.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.Function.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateArrayFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateCountFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Debug.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/GeometricShapeFactory.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Stopwatch.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/constant-values.html
   packages/jts/branches/upstream/current/doc/javadoc/deprecated-list.html
   packages/jts/branches/upstream/current/doc/javadoc/help-doc.html
   packages/jts/branches/upstream/current/doc/javadoc/index-all.html
   packages/jts/branches/upstream/current/doc/javadoc/index.html
   packages/jts/branches/upstream/current/doc/javadoc/overview-frame.html
   packages/jts/branches/upstream/current/doc/javadoc/overview-summary.html
   packages/jts/branches/upstream/current/doc/javadoc/overview-tree.html
   packages/jts/branches/upstream/current/doc/javadoc/package-list
   packages/jts/branches/upstream/current/doc/javadoc/packages.html
   packages/jts/branches/upstream/current/doc/javadoc/resources/
   packages/jts/branches/upstream/current/doc/javadoc/resources/inherit.gif
   packages/jts/branches/upstream/current/doc/javadoc/serialized-form.html
   packages/jts/branches/upstream/current/doc/javadoc/stylesheet.css
   packages/jts/branches/upstream/current/jtsio/
   packages/jts/branches/upstream/current/jtsio/doc/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-frame.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-noframe.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLHandler.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLReader.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLWriter.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GeometryStrategies.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-frame.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-summary.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-tree.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/constant-values.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/deprecated-list.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/help-doc.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/index-all.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/index.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-frame.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-summary.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-tree.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/package-list
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/packages.html
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/resources/
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/resources/inherit.gif
   packages/jts/branches/upstream/current/jtsio/doc/javadoc/stylesheet.css
   packages/jts/branches/upstream/current/jtsio/src/
   packages/jts/branches/upstream/current/jtsio/src/com/
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/package.html
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java
   packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/package.html
   packages/jts/branches/upstream/current/jtsio/test/
   packages/jts/branches/upstream/current/jtsio/test/com/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java
   packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties
   packages/jts/branches/upstream/current/jtsio/test/data/
   packages/jts/branches/upstream/current/jtsio/test/data/linestrings.xml
   packages/jts/branches/upstream/current/jtsio/test/data/multilinestrings.xml
   packages/jts/branches/upstream/current/jtsio/test/data/multipoints.xml
   packages/jts/branches/upstream/current/jtsio/test/data/multipolygons.xml
   packages/jts/branches/upstream/current/jtsio/test/data/points.xml
   packages/jts/branches/upstream/current/jtsio/test/data/polygons.xml
   packages/jts/branches/upstream/current/jtsio/test/readme
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/Angle.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformation.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/Matrix.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/FastNodingValidator.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/BoundaryOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java
   packages/jts/branches/upstream/current/testxml/
   packages/jts/branches/upstream/current/testxml/general/
   packages/jts/branches/upstream/current/testxml/general/TestBoundary.xml
   packages/jts/branches/upstream/current/testxml/general/TestCentroid.xml
   packages/jts/branches/upstream/current/testxml/general/TestConvexHull-big.xml
   packages/jts/branches/upstream/current/testxml/general/TestConvexHull.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionAA.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionAAPrec.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionLA.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionLAPrec.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionLL.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionLLPrec.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionPA.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionPL.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionPLPrec.xml
   packages/jts/branches/upstream/current/testxml/general/TestFunctionPP.xml
   packages/jts/branches/upstream/current/testxml/general/TestInteriorPoint.xml
   packages/jts/branches/upstream/current/testxml/general/TestRectanglePredicate.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelateAA.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelateAC.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelateLA.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelateLC.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelateLL.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelatePA.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelatePL.xml
   packages/jts/branches/upstream/current/testxml/general/TestRelatePP.xml
   packages/jts/branches/upstream/current/testxml/general/TestSimple.xml
   packages/jts/branches/upstream/current/testxml/general/TestValid.xml
   packages/jts/branches/upstream/current/testxml/general/TestValid2-big.xml
   packages/jts/branches/upstream/current/testxml/general/TestValid2.xml
   packages/jts/branches/upstream/current/testxml/general/TestWithinDistance.xml
   packages/jts/branches/upstream/current/testxml/robust/
   packages/jts/branches/upstream/current/testxml/robust/ExternalRobustness.xml
   packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFixed.xml
   packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFloat.xml
   packages/jts/branches/upstream/current/testxml/robust/TestRobustRelate.xml
   packages/jts/branches/upstream/current/testxml/stmlf/
   packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061018_int.xml
   packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061020_int.xml
   packages/jts/branches/upstream/current/testxml/validate/
   packages/jts/branches/upstream/current/testxml/validate/TestRelateAA-big.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelateAA.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelateAC.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelateLA.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelateLC.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelateLL.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelatePA.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelatePL.xml
   packages/jts/branches/upstream/current/testxml/validate/TestRelatePP.xml
   packages/jts/branches/upstream/current/testxml/vivid/
Removed:
   packages/jts/branches/upstream/current/bin/jts.css
   packages/jts/branches/upstream/current/bin/test_vivid.bat
   packages/jts/branches/upstream/current/src/Doxyfile
   packages/jts/branches/upstream/current/src/jtsio/
   packages/jts/branches/upstream/current/src/jump-workbench-properties.xml
   packages/jts/branches/upstream/current/test/
Modified:
   packages/jts/branches/upstream/current/bin/test.bat
   packages/jts/branches/upstream/current/bin/test_robust.bat
   packages/jts/branches/upstream/current/bin/testrunner.properties
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/JTSVersion.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/PointLocator.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateArrays.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Geometry.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryCollection.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryFactory.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/IntersectionMatrix.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineSegment.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineString.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LinearRing.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiLineString.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPoint.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPolygon.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Point.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Polygon.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/PrecisionModel.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Triangle.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeRing.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/Node.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Bintree.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Interval.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Node.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/NodeBase.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/quadtree/Root.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBReader.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBWriter.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTReader.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTWriter.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionAdder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/NodingValidator.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/ScaledNoder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/IsSimpleOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/distance/DistanceOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/RelateOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/DirectedEdge.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Edge.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/PlanarGraph.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Subgraph.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/CommonBits.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineString.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java
   packages/jts/branches/upstream/current/src/com/vividsolutions/jts/util/CollectionUtil.java
Log:
[svn-upgrade] Integrating new upstream version, jts (1.8.0)

Deleted: packages/jts/branches/upstream/current/bin/jts.css
===================================================================
--- packages/jts/branches/upstream/current/bin/jts.css	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/bin/jts.css	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,139 +0,0 @@
-BODY
-{
-    BACKGROUND-COLOR: lightblue;
-    FONT-FAMILY: Verdana, Arial;
-    FONT-SIZE: 10pt;
-    FONT-WEIGHT: normal
-}
-H2
-{
-    BACKGROUND-COLOR: darkblue;
-    COLOR: white;
-    FONT-FAMILY: Verdana, Arial;
-    FONT-SIZE: 12pt;
-    FONT-WEIGHT: bolder;
-    MARGIN-BOTTOM: 2pt;
-    PADDING-LEFT: 5px
-}
-H3
-{
-    BACKGROUND-COLOR: lightskyblue;
-    FONT-WEIGHT: normal;
-    MARGIN-BOTTOM: 2pt
-}
-H4
-{
-    BACKGROUND-COLOR: limegreen;
-    FONT-WEIGHT: normal
-}
-H5
-{
-    BACKGROUND-COLOR: burlywood;
-    FONT-WEIGHT: normal
-}
-H6
-{
-    FONT-SIZE: 12pt
-}
-TH
-{
-    BACKGROUND-COLOR: burlywood
-}
-.initialLetter
-{
-    COLOR: lightblue
-}
-.foo
-{
-    COLOR: goldenrod
-}
-.wktA
-{
-    COLOR: blue;
-    FONT-SIZE: 8pt
-}
-.wktB
-{
-    COLOR: red;
-    FONT-SIZE: 8pt
-}
-.methodTitle
-{
-    BACKGROUND-COLOR: steelblue;
-    COLOR: yellow
-}
-.wktR
-{
-    FONT-SIZE: 8pt
-}
-.precisionModel
-{
-    FONT-SIZE: 8pt
-}
-.resultTrue
-{
-    COLOR: green
-}
-.resultFalse
-{
-    COLOR: red
-}
-.MenuBody
-{
-    BACKGROUND-COLOR: midnightblue
-}
-.MenuItem
-{
-    COLOR: white
-}
-.MenuTitle
-{
-    COLOR: #3366ff;
-    FONT-SIZE: 14pt;
-    TEXT-ALIGN: center
-}
-TD
-{
-    FONT-SIZE: 10pt
-}
-.orgName
-{
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic;
-    FONT-WEIGHT: lighter
-}
-.creditName
-{
-    FONT-WEIGHT: bolder;
-    PADDING-LEFT: 10px
-}
-.creditTitle
-{
-    BACKGROUND-COLOR: steelblue;
-    COLOR: yellow;
-    FONT-WEIGHT: bolder;
-    PADDING-LEFT: 10px;
-    PADDING-RIGHT: 10px
-}
-H1
-{
-    BORDER-BOTTOM: darkblue thin solid;
-    BORDER-TOP: medium none;
-    FONT-STYLE: italic;
-    MARGIN-BOTTOM: 2px;
-    PADDING-BOTTOM: 4px
-}
-.testTitle
-{
-    FONT-SIZE: 16pt;
-    FONT-WEIGHT: bolder
-}
-.caption
-{
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic
-}
-.bigCaption
-{
-    FONT-WEIGHT: bolder
-}

Modified: packages/jts/branches/upstream/current/bin/test.bat
===================================================================
--- packages/jts/branches/upstream/current/bin/test.bat	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/bin/test.bat	2009-09-22 12:40:02 UTC (rev 2489)
@@ -13,7 +13,7 @@
  call :setclass
 )  
 
-java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\test\validate
+java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\testxml\validate ..\testxml\general
 pause
 
 goto :eof

Modified: packages/jts/branches/upstream/current/bin/test_robust.bat
===================================================================
--- packages/jts/branches/upstream/current/bin/test_robust.bat	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/bin/test_robust.bat	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,5 +1,5 @@
 @echo off
-rem A batch file to run the XML test files written by Geographic Data BC.
+rem A batch file to run a XML test files
 
 set CLASSPATH=
 for %%i in (..\lib\*.*) do (
@@ -13,7 +13,7 @@
  call :setclass
 )  
 
-java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\test\robust
+java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\testxml\robust
 pause
 
 goto :eof

Added: packages/jts/branches/upstream/current/bin/test_stmlf.bat
===================================================================
--- packages/jts/branches/upstream/current/bin/test_stmlf.bat	                        (rev 0)
+++ packages/jts/branches/upstream/current/bin/test_stmlf.bat	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,25 @@
+ at echo off
+rem A batch file to run a XML test files
+
+set CLASSPATH=
+for %%i in (..\lib\*.*) do (
+ set jarfile=%%i
+
+ rem If we append to a variable inside the for, only the last entry will
+ rem be kept. So append to the variable outside the for.
+ rem See http://www.experts-exchange.com/Operating_Systems/MSDOS/Q_20561701.html.
+ rem [Jon Aquino]
+
+ call :setclass
+)  
+
+java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\testxml\stmlf -geomop com.vividsolutions.jtstest.testrunner.geomop.OverlayValidatedGeometryOperation
+pause
+
+goto :eof
+
+:setclass
+set CLASSPATH=%jarfile%;%CLASSPATH%
+set jarfile=
+
+:eof
\ No newline at end of file

Deleted: packages/jts/branches/upstream/current/bin/test_vivid.bat
===================================================================
--- packages/jts/branches/upstream/current/bin/test_vivid.bat	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/bin/test_vivid.bat	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,25 +0,0 @@
- at echo off
-rem A batch file to run the XML test files written by Geographic Data BC.
-
-set CLASSPATH=
-for %%i in (..\lib\*.*) do (
- set jarfile=%%i
-
- rem If we append to a variable inside the for, only the last entry will
- rem be kept. So append to the variable outside the for.
- rem See http://www.experts-exchange.com/Operating_Systems/MSDOS/Q_20561701.html.
- rem [Jon Aquino]
-
- call :setclass
-)  
-
-java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\test\vivid
-pause
-
-goto :eof
-
-:setclass
-set CLASSPATH=%jarfile%;%CLASSPATH%
-set jarfile=
-
-:eof
\ No newline at end of file

Modified: packages/jts/branches/upstream/current/bin/testrunner.properties
===================================================================
--- packages/jts/branches/upstream/current/bin/testrunner.properties	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/bin/testrunner.properties	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,3 +1,3 @@
 #Properties file for class com.vividsolutions.jtstest.testrunner.TopologyTestApp
-#Fri May 24 10:18:11 PDT 2002
-TestFiles=
+#Wed Dec 06 16:08:49 PST 2006
+TestFiles=\ Z\:\\proj\\jts\\robust\\tests\\unit\\cmp-5966094-2025063.xml

Added: packages/jts/branches/upstream/current/doc/JTS Developer Guide.pdf
===================================================================
(Binary files differ)


Property changes on: packages/jts/branches/upstream/current/doc/JTS Developer Guide.pdf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: packages/jts/branches/upstream/current/doc/JTS Technical Specs.pdf
===================================================================
(Binary files differ)


Property changes on: packages/jts/branches/upstream/current/doc/JTS Technical Specs.pdf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: packages/jts/branches/upstream/current/doc/JTS TestBuilder & TestRunner User Guide.pdf
===================================================================
(Binary files differ)


Property changes on: packages/jts/branches/upstream/current/doc/JTS TestBuilder & TestRunner User Guide.pdf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: packages/jts/branches/upstream/current/doc/JTS Version History.html
===================================================================
--- packages/jts/branches/upstream/current/doc/JTS Version History.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/JTS Version History.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,511 @@
+<html>
+
+<head>
+<title>JTS Version History</title>
+</head>
+
+<body bgcolor='lightblue'>
+<h1 style='text-align:center;'>
+JTS TOPOLOGY SUITE
+<br>
+<i>Version History</i>
+</h1>
+
+
+This document lists the change history of release versions of the JTS Topology Suite
+<p>
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.8</h2>
+
+<i>Release Date: December 19, 2006</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Improved robustness for overlay operations, via using geometry snapping
+<li>Added <code>Angle</code> class
+<li>Added methods to <code>Triangle</code> class
+<li>Added <code>LineSegment.midPoint</code> method
+<li>Added ability to specify output of Z values to <code>WKTWriter</code>
+<li>Added <code>setFormatted</code>, <code>setTab</code>, <code>setMaxCoordinatesPerLine</code> methods to <code>WKTWriter</code>
+<li>Added <code>BoundaryNodeRule</code> classes, and ability to specify a Boundary Node Rule
+in <code>RelateOp</code>, <code>IsSimpleOp</code>, <code>BoundaryOp</code>
+<li>Added ability to get the failure location to <code>IsSimpleOp</code>
+<li>Added <code>BoundaryOp</code> with improved algorithm for lineal geometries.  Changed lineal Geometry classes to use it.
+<li>Enhanced <code>Geometry</code> overlay methods to accept empty <code>GeometryCollections.</code>
+<li>Enhanced Error Handling for <tt>WKTReader</tt>
+<li>Added <code>CoordinateSequenceFilter</code>
+<li>Added <code>AffineTransformation</code> and <code>AffineTransformationBuilder</code>
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Changed API for <code>IsSimpleOp</code> (required to support returning failure location)
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bug in <code>GeometryFactory.buildGeometry</code>
+causing failure if input contained all GeometryCollections of the same subclass
+<li>Changed AssertFailure to TopologyException in <code>PolygonBuilder</code>
+<li>Improved correctness of <tt>RobustLineIntersector</tt> in certain cases where segment endpoints intersect
+<li>Eliminated duplicate method execution in <code>TestRunner</code>
+</ul>
+
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
+
+<h3>New Features</h3>
+<ul>
+<li>Zoom tool can now draw zoom box as well as click
+<li>Cut, Copy and Paste buttons for Input WKT
+<li>added ability to specify custom Geometry Operations
+</ul>
+
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
+
+<h3>New Features</h3>
+<ul>
+<li>added ability to specify custom Geometry Operations
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Eliminated duplicate method execution
+</ul>
+
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.7.2</h2>
+
+<i>Release Date: June 22, 2006</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added support for EWKB (SRIDs only) to <code>WKBReader</code>
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bug in <code>CoordinateArrays.ptNotInList</code>.
+Changed <code>polygonize.EdgeRing</code> to used corrected code.
+<li>Fixed bug causing duplicate points in <code>ScaledNoder</code>
+<li>Fixed bug causing Null Pointer for empty geometries in <code>OraWriter</code>
+<li>Changed AssertFailure to TopologyException in <code>EdgeNode</code>
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.7.1</h2>
+
+<i>Release Date: March 20, 2006</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added Hex string conversion to <code>WKBReader</code> and <code>WKBWriter</code>
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed null point cloning bug in <code>TopologyValidationError</code> (<i>thanks to Markus Gebhard</i>)
+<li>Fixed bug in <code>PointLocator</code> fix for LinearRings
+<li>Fixed bug in <code>Geometry.isValid</code> and <code>IsValidOp</code> causing some valid polygons
+to be reported as having a Disconnected Interior (specifically, polygons containing
+holes touching at a single point, where the point is the highest point in the hole rings, and where the holes
+have a specific orientation)
+<li>Fixed bug in <code>Polygon.isRectangle</code>, which reported some valid rectangles as false
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance for <code>Geometry#withinDistance</code> (via short-circuiting)
+</ul>
+
+<h3>Contributors</h3>
+<ul>
+<li>Dave Blasby
+<li>Koen van Dijken
+</ul>
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.7</h2>
+
+<i>Release Date: December 7, 2005</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added <code>JTSVersion</code> class to provide access to the API version information
+<li>Added <code>covers</code> and <code>coveredBy</code> predicates to <code>Geometry</code>
+<li>Added <code>Geometry#buffer(distance, quadSegs, endCapStyle)</code> method to expose buffer end cap styles
+<li>Added <code>LineString#reverse</code> and <code>MultiLineString#reverse</code> methods
+<li>Added <code>centre</code>, <code>intersection</code>, <code>translate</code>,
+<code>expandBy(distance)</code>, <code>expandBy(dx, dy)</code>
+methods to <code>Envelope</code>
+<li>Added <code>CollectionUtil</code> class for performing operations over collections
+<li>Added <code>CoordinateArrays</code> comparators
+<li>Added <code>CoordinateSequence#getDimension</code>
+<li>Added convenience methods <code>toPoint</code> and <code>toLineString</code> to <code>WKTWriter</code>
+<li>Added WKB API (<code>WKBReader</code> and <code>WKBWriter</code> classes in <code>com.vividsolutions.jts.io</code>
+<li><code>WKTReader</code> has better handling of numeric parsing, including support for scientific notation
+<li>Added <code>IsValidOp#setSelfTouchingRingFormingHoleValid</code> to allow validating SDE-style polygons
+<li>Added check for non-closed rings in <code>IsValidOp</code>
+<li>Added Linear Referencing API (<code>com.vividsolutions.jts.linearref</code>
+<li>Added <code>LineSequencer</code> class to <code>com.vividsolutions.jts.operation.linemerge</code>
+<li>Added <code>Subgraph</code> class to <code>com.vividsolutions.jts.planargraph</code>
+<li>Added <code>isRemoved</code> method to <code>GraphComponent</code>
+<li>Added <code>ConnectedSubgraphFinder</code> class to <code>com.vividsolutions.jts.planargraph.algorithm</code>
+<li>Added <code>setVisited</code>, <code>getComponentWithVisitedState</code>,
+<code>setVisited</code>, <code>getComponentWithVisitedState</code>
+methods to <code>com.vividsolutions.jts.planargraph.GraphComponent</code>
+<li>Added classes to perform Snap Rounding (in <code>com.vividsolutions.jts.noding.snapround</code>>
+<li>Improved buffering speed and robustness by using Snap Rounding
+<li>Added buffer optimization for results with large numbers of polygons and/or holes
+<li>Added <code>STRtree#query(Envelope, ItemVisitor)</code> method
+<li>Added <code>Debug#toLine</code> methods
+<li>Added <code>ConvexHull(Coordinate[])</code> constructor
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed decimal formatting in <code>WKTWriter</code> to force a leading 0 in decimal numbers
+<li>Fixed bug in <code>CoordinateArraySequence#setOrdinate</code>
+<li>Fixed bug when checking validity of polygon with hole (<code>IsValidOp#checkHolesInShell</code>)
+<li>Improved correctness of computated intersections in <code>RobustLineIntersector</code>
+<li>Fixed bugs in <code>CoordinateList.clone</code> (thanks to Matthias Bobzien)
+<li>Fixed bug in <code>Envelope.equals</code> (thanks to John Cartwright)
+<li>Fixed <code>PointLocator</code> for LinearRings
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance for overlay operations (point inclusion, identical edge detection)
+<li>Improved Convex Hull performance
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Added <code>SpatiaIndex#query(Envelope, ItemVisitor)</code> method signature
+<li>Added <code>CoordinateSequence#getDimension()</code> method signature
+<li>Marked <code>GeometryEditor.CoordinateOperation#edit(Geometry, GeometryFactory)</code> method
+as <code>final</code>, to prevent incorrect use
+</ul>
+
+<h3>Semantics Changes</h3>
+<ul>
+<li>CoordinateArraySequence#setOrdinate now checks that the ordinate index is in range
+</ul>
+
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.6</h2>
+
+Release Date: February 3, 2005
+
+<h3>API Changes</h3>
+<ul>
+<li>Changed to using <code>CoordinateArraySequence</code> instead of <code>DefaultCoordinateSequence</code>
+(to provide a more descriptive name).
+</ul>
+
+<h3>Semantics Changes</h3>
+<ul>
+<li>PrecisionModel#makePrecise changed to use Symmetric Arithmetic Rounding rather than Banker's Rounding
+</ul>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added ability to enable <code>Debug</code> methods by setting a system property
+<li>Added <code>getNumGeometries</code> and <code>getGeometryN</code> methods to Geometry class, to make API more uniform
+<li>Improved API for <code>CoordinateSequence</code> allows more options for improving memory usage and handling custom coordinate storage methods
+<li>Added <code>PackedCoordinateSequence</code> to provide reduced memory footprint for geometry objects if desired
+<li>Added optimized spatial predicates for rectangles
+<li>Added Debug#isDebugging method
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bug in <code>Geometry#within()</code> short circuiting
+<li>Fixed bug causing <code>Geometry#isValid</code> to throw IllegalArgumentException for certain kinds of holes with invalid rings
+<li>Fixed bug causing redundant linestrings to be returned in the result of overlaying polygons containing holes touching their shell.
+<li><code>Polygon#getBoundary</code> now returns a <code>LinearRing</code> if the polygon does not have holes
+</ul>
+
+<h3>Architecture Changes</h3>
+<ul>
+<li>Removed a proliferation of references to the default <code>CoordinateSequenceFactory</code>
+</ul>
+
+<h3>Contributors</h3>
+<ul>
+<li>Andrea Aime
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.5</h2>
+Release Date: September 22, 2004
+<p>
+This version is upwards compatible with Version 1.4
+
+<h3>API Changes</h3>
+<ul>
+<li>None
+</ul>
+
+<h3>Semantics Changes</h3>
+<ul>
+<li>None
+</ul>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li><code>CGAlgorithms#isCCW</code> now handles coordinate lists with repeated points.  Also throws an IllegalArgumentException if the input ring does not have 3 distinct points
+<li><code>isValid</code> now checks for invalid coordinates (e.g. ones with Nan or infinite numbers)
+<li>added copyDeep() method to <code>CoordinateArrays</code>
+<li>added geometry simplification operations <code>DouglasPeuckerSimplifier</code> and <code>TopologyPreservingSimplifier</code>
+<li>added methods to <code>Quadtree</code> and <code>STRtree</code> to remove items and query using the Visitor pattern
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Added short-circuit tests in geometry named predicates based on envelope tests
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bugs in <code>Geometry</code> serialization
+<li>Fixed bug in <code>ValidOp</code> which reported some MultiPolygons with shells nested inside a hole as invalid
+<li>Fixed bug in buffer which caused buffers of some polygons with small & large holes to not contain any holes
+<li>Fixed bug in <code>Polygonizer</code> which caused exception if no lines were supplied
+</ul>
+<h3>Architecture Changes</h3>
+<ul>
+<li>Basic CG algorithm methods made static in the <code>CGAlgorithms</code> class
+<li>Various utility methods made public in <code>CoordinateArrays</code> class
+</ul>
+<h3>Documentation</h3>
+<ul>
+<li>More examples provided in <code>com.vividsolutions.jtsexamples package</code>
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.4</h2>
+
+Release Date: November 4, 2003
+<h3>Semantics Changes</h3>
+<ul>
+<li>none
+</ul>
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added "LINEARRING" tag to WKT syntax
+<li>Added GeometryEditor class to allow easy copy/modify of Geometrys
+<li>Added GeometricShapeFactory class to easily create standard geometric shapes
+<li>Geometries can now carry arbitrary user-defined data objects (via Geometry#get/setUserData(Object) method)
+<li>Added CoordinateSequence and CoordinateSequenceFactory interfaces, and default implementations (BasicCoordinateSequence, BasicCoordinateSequenceFactory)
+<li>Added Geometry#getFactory
+<li>Added new PrecisionModel type of FLOATING_SINGLE, for rounding to single precision floating point
+<li>Added DistanceOp#getClosestPoints method, which returns the closest points between two Geometries
+<li>Added com.vividsolutions.jts.noding package containing classes to perform fast indexed noding of linestrings
+<li>Added com.vividsolutions.jts.operation.polygonize package containing classes to perform polygonization
+<li>Added com.vividsolutions.jts.operation.linemerge package containing classes to perform line merging
+<li>Added SimpleGeometryPrecisionReducer to allow reducing precision of coordinates of a Geometry
+<li>Added LineSegment#closestPoints method to compute the closest points between two line segments
+<li>Added MinimumDiameter class to compute minimum diameters of Geometries
+<li>Added geom.Triangle class to contain algorithms for Triangles
+<li>BufferOp now allows end cap styles to be specified.  Three types are supported: round, butt and square.
+</ul>
+<h3>Performance Improvements</h3>
+<ul>
+<li>EdgeList now provides a findEqualEdge method which is substantially faster than findEdgeIndex, for large lists
+<li>Buffering is now faster and much more robust
+<li>Overlap operations are now more robust
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>Envelope#init(Envelope) now handles null Envelopes correctly
+<li>CoordinateList#add() now correctly ignores the z-value of Coordinates in determining equality
+<li>Geometry#isValid now correctly handles checking validity of LinearRings
+<li>Fixed infinite loop bug causing Out Of Memory errors during polygon intersection
+<li>Geometry#clone now correctly clones the Geometry's Envelope
+<li>LineIntersector#computeEdgeDistance now correctly computes a non-zero edge distance in certain situations when a fixed precision model was being used and the line segment was a single unit in length
+<li>Fixed incorrect calculation of depths in DirectedEdgeStar#computeDepths
+<li>Fixed BufferSubgraph#addReachable to use explicit stack to avoid stack overflow problems
+<li>Fixed various bugs causing some kinds of buffers to be computed incorrectly
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>WKTReader/Writer: changed protected members to private
+<li>PrecisionModel type is now an object rather than an int
+<li>ConvexHull API changed to remove requirement to pass in CGAlgorithms object
+</ul>
+<h3>Code Architecture Changes</h3>
+<ul>
+<li>geom.util package added for utility classes which parse and modify geometries
+</ul>
+<h3>Documentation</h3>
+<ul>
+<li>More examples provided in com.vividsolutions.jtsexamples package
+<li>Added JTS Developers Guide
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.3</h2>
+Release Date: April 4, 2003
+<h3>Semantics Changes</h3>
+<ul>
+<li>all Geometry methods are now reentrant (thread-safe)
+<li>Fixed-precision coordinates are now stored in a rounded but non-scaled form.  This makes them compatible with non-precise (Floating) coordinates, and simplifies working with precise coordinates directly.  Mixed precision models are now supported in Geometry methods; method results are in the more precise of the input precision models.
+<li>Offsets are no longer supported in the Fixed precision model.  This is necessary to allow storing fixed precision coordinates in a non-scaled form.  This does not reduce the total precision available, since coordinates are stored in a floating-point format.
+<li>SRID and Precision Model are no longer checked for equality during Geometry operations.  This removes a limitation which provided little semantic benefit.
+</ul>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>added Geometry.isWithinDistance(Geometry g, double distance) method, to provide optimized proximity queries
+<li>added Geometry.buffer(double distance, int quadrantSegments) method, allowing control over accuracy of buffer approximation
+<li>added Geometry.getCentroid() method
+<li>added Geometry.getInteriorPoint() method, which uses heuristic methods to return a point in the interior of a Geometry
+<li>GeometryFactory.toGeometryArray now returns null if the argument is null
+</ul>
+<h3>Performance Improvements</h3>
+<ul>
+<li>Removed unnecessary string construction in EdgeEndStar.propagateSideLabels()
+<li>Eliminated unnecessary computation of self-intersections in rings during relate and spatial functions.  This provides a large increase in speed when working with large rings and polygons.  (Note that IsValid still checks for these self-intersections, which are illegal in LinearRings)
+<li>Add short-circuit code to RobustLineIntersector to detect non-intersections more efficiently
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed ClassCastException occurring in GeometryCollection.getLength()
+<li>Fixed bug in Edge Intersection insertion (replaced Coordinate#equals with equals2D to ensure that intersection creation is not sensitive to Z-value).
+<li>Fixed handling LineStrings with too few points in GeometryGraph.addLineString
+<li>Fixed: was not checking that MultiPolygons don't contain components with too few points.
+<li>Fixed Envelope.distance() to return correct distance for all envelopes.
+<li>Fixed a few Geometry methods to make them re-entrant.
+<li>Fixed CoordinateList.closeRing() to ensure endpoints are not duplicated
+<li>Fixed CGAlgorithms.signedArea() to use a simpler algorithm which is more robust and faster.
+<li>Fixed bug preventing validating Rings containing an initial repeated point.
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>Added default constructor to WKTReader.  It uses the default GeometryFactory
+<li>Add two static intersects() methods to Envelope, to allow computing intersections with envelopes defined by points only.
+<li>Dropped BinaryPower; its functionality is provided by DoubleBits in a more robust fashion.
+<li>Removed a couple of redundant private static methods from Geometry; they have been replaced by methods in CoordinateArrays
+<li>The Geometry class is now marked as Serializable
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.2</h2>
+
+Release Date: 7 October 2002
+<h3>Semantics Changes</h3>
+<ul>
+<li>JTS now allows Geometrys to have repeated points.  All operations will continue to perform as before.  This removes a significant incompatibility with the OGC spatial data model.
+<li>TopologyExceptions may now be thrown by spatial overlay methods.  This helps to distinguish between code bugs and known robustness problems.  It also provides a machine-readable coordinate for the error location.
+</ul>
+<h3>Functionality Improvements</h3>
+<ul>
+<li>RobustLineIntersector now uses "normalized" coordinates to maximize the accuracy of intersection computation.
+<li>Upgraded Quadtree with more robust implementation
+<li>Replaced IntervalTree with a more robust implementation of BinTree
+<li>Added STRTree 2-D spatial index, which exhibits better performance than QuadTrees in many situations.
+<li>Added EnhancePrecisionOp, which uses precisioning enhancing techniques to reduce the number of failure cases due to robustness problems.
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>fixed ConvexHull to use TreeSet instead of HashSet for coordinates
+<li>Fixed isValid for GeometryCollections containing Polygons, which were sometimes erroneously returning a validity failure for correct Geometrys.
+<li>Fixed bug in LineSegment.distancePointLine() which would return the incorrect distance for a LineSegment with two identical points
+<li>Improved error handling in CGAlgorithms.isCCW()
+<li>IsValid now checks for too few points in a geometry component (e.g. due to repeated points in a ring)
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>added Stopwatch class
+<li>added Geometry.getArea() and Geometry.getLength() methods
+<li>added CGAlgorithms.signedArea() method
+<li>added methods to LineSegment - closestPoint(), getLength()
+<li>added CoordinateArrrays and CoordinateLists utility classes
+<li>Added TopologyValidationError.getErrorType() method
+<li>Added Envelope#intersects; deprecated Envelope#overlaps.
+<li>Added Geometry#geometryChanged() method to allow signaling when Geometry coordinates have been mutated by a client class
+<li>Added STRTree class implementing a Sort-Tile-Recursive spatial index (a variant of a packed R-tree)
+<li>Deleted IntervalTree 1-D spatial index (replaced by BinTree)
+<li>Add BinTree 1-D spatial index
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.1.1</h2>
+
+Release Date: 9 April 2002
+<h3>Bug Fixes</h3>
+<ul>
+<li>fixed decimal-point symbol localization bug in WKTWriter
+<li>fixed bug in Envelope.int(Envelope env)
+<li>fixed filename case of SFSMultiLineString.java and IntervalTree.java
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>deleted TopologyException class
+<li>renamed CGAlgorithms.isPointInPolygon to isPointInRing (a more accurate description of what the method computes)
+</ul>
+<h3>API Additions</h3>
+<ul>
+<li>added Geometry.getCoordinate() method
+<li>added Geometry.distance() method
+<li>added GeometryComponentFilter interface and Geometry.apply(GeometryComponentFilter) method
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.1</h2>
+
+Release Date: 28 March 2002
+<h3>New Features</h3>
+<ul>
+<li>added Geometry.isSimple() and Geometry.isValid() methods
+<li>improved design of topological data structures
+<li>added Geometry.setSRID() method
+<li>improved functionality of the Envelope class
+<li>added ability to write to an arbitrary java.io.Writer object to WKTWriter
+<li>added Validate and Mark Location functionality to TestBuilder
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.0</h2>
+Release Date: 1 February 2002
+<ul>
+<li>Removed some non-compatibilities with Java 1.1
+<li>Fixed bug in constructing buffer outline around inside of angles
+<li>In TestBuilder vertices are now displayed with fixed size in view units
+<li>Improved code for WKTWriter.writeFormatted()
+<li>Fixed bug in constructor for LinearRing
+<li>Improved implementation of sweepline intersection algorithm to avoid use of dynamic set.
+<li>Fixed bug in ConvexHull.cleanRing()
+<li>Refactored RobustLineIntersector and NonRobustLineIntersector
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 0.0</h2>
+Release Date: 30 May 2001
+
+<p>
+<i>Baseline version</i>
+
+</body>
+</html>

Added: packages/jts/branches/upstream/current/doc/javadoc/allclasses-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/allclasses-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/allclasses-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,586 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">AbstractNode</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">AbstractSTRtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree" target="classFrame"><I>AbstractSTRtree.IntersectsOp</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">AffineTransformation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">AffineTransformationBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">Angle</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index" target="classFrame">ArrayListVisitor</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util" target="classFrame">Assert</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util" target="classFrame">AssertionFailedException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Bintree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree" target="classFrame"><I>Boundable</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm" target="classFrame"><I>BoundaryNodeRule</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.EndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.Mod2BoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation" target="classFrame">BoundaryOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">BufferBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">BufferOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">BufferSubgraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">ByteArrayInStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">ByteOrderDataInStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io" target="classFrame">ByteOrderValues</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CGAlgorithms</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentralEndpointIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentroidArea</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentroidLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentroidPoint</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util" target="classFrame">CollectionUtil</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util" target="classFrame"><I>CollectionUtil.Function</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision" target="classFrame">CommonBits</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision" target="classFrame">CommonBitsOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision" target="classFrame">CommonBitsRemover</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">ConnectedElementLocationFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">ConnectedElementPointFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">ConnectedInteriorTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm" target="classFrame">ConnectedSubgraphFinder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">ConsistentAreaTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">ConsistentPolygonRingChecker</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">ConvexHull</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Coordinate</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Coordinate.DimensionalComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util" target="classFrame">CoordinateArrayFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">CoordinateArraySequence</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">CoordinateArraySequenceFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateArrays</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateArrays.BidirectionalComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateArrays.ForwardComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util" target="classFrame">CoordinateCountFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateSequence</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateSequenceComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateSequenceFactory</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateSequenceFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateSequences</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util" target="classFrame">Debug</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom" target="classFrame">DefaultCoordinateSequenceFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Depth</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Dimension</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">DirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">DirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">DirectedEdgeStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">DirectedEdgeStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">DistanceOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">DoubleBits</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">DouglasPeuckerLineSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">DouglasPeuckerSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Edge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">Edge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeEnd</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">EdgeEndBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">EdgeEndBundle</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">EdgeEndBundleStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeEndStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeIntersection</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeIntersectionList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeNodingValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize" target="classFrame">EdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">EdgeSetIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">EdgeSetNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">EdgeString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision" target="classFrame">EnhancedPrecisionOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Envelope</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding" target="classFrame">FastNodingValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate" target="classFrame">FuzzyPointLocator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util" target="classFrame">GeometricShapeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Geometry</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom" target="classFrame">GeometryCollection</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">GeometryCollectionIterator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>GeometryComponentFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">GeometryEditor</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">GeometryEditor.CoordinateOperation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util" target="classFrame"><I>GeometryEditor.GeometryEditorOperation</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom" target="classFrame">GeometryFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>GeometryFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">GeometryGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation" target="classFrame">GeometryGraphOperation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">GeometryLocation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">GeometrySnapper</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">GeometryTransformer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">GraphComponent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">GraphComponent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">HCoordinate</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">HotPixel</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io" target="classFrame"><I>InStream</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">InputStreamInStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">InteriorIntersectionFinder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">InteriorPointArea</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">InteriorPointLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">InteriorPointPoint</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">IntersectionAdder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">IntersectionFinderAdder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom" target="classFrame">IntersectionMatrix</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Interval</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">Interval</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">IntervalSize</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation" target="classFrame">IsSimpleOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">IsValidOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">ItemBoundable</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index" target="classFrame"><I>ItemVisitor</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">IteratedNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts" target="classFrame">JTSVersion</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Key</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Key</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Label</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LengthIndexedLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LengthLocationMap</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">LineBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">LineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMergeDirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMergeEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMergeGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMerger</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom" target="classFrame">LineSegment</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">LineSegmentIndex</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineSequencer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom" target="classFrame">LineString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">LineStringSnapper</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">LinearComponentExtracter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LinearGeometryBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LinearIterator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LinearLocation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom" target="classFrame">LinearRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Location</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LocationIndexedLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">MCIndexNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">MCIndexPointSnapper</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">MCIndexSnapRounder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">MCPointInRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">Matrix</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">MaximalEdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">MinimalEdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">MinimumDiameter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">MonotoneChain</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChain</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChainBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">MonotoneChainEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">MonotoneChainIndexer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChainOverlapAction</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChainSelectAction</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom" target="classFrame">MultiLineString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom" target="classFrame">MultiPoint</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom" target="classFrame">MultiPolygon</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">NodeBase</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">NodeBase</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">NodeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">NodeMap</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">NodeMap</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding" target="classFrame"><I>Noder</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding" target="classFrame">NodingValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">NonRobustCGAlgorithms</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">NonRobustLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">NoninvertibleTransformationException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">NotRepresentableException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding" target="classFrame">Octant</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">OffsetCurveBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">OffsetCurveSetBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate" target="classFrame">OffsetPointGenerator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding" target="classFrame">OrientedCoordinateArray</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io" target="classFrame"><I>OutStream</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">OutputStreamOutStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">OverlayNodeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">OverlayOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate" target="classFrame">OverlayResultValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequence</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequence.Double</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequence.Float</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequenceFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io" target="classFrame">ParseException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">PlanarGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">PlanarGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Point</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">PointBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">PointExtracter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm" target="classFrame"><I>PointInRing</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">PointLocator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Polygon</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">PolygonBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">PolygonExtracter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize" target="classFrame">PolygonizeDirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize" target="classFrame">Polygonizer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Position</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom" target="classFrame">PrecisionModel</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Quadrant</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Quadtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">QuadtreeNestedRingTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate" target="classFrame">RectangleContains</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate" target="classFrame">RectangleIntersects</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateComputer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateNode</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateNodeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateNodeGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">RepeatedPointTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">RightmostEdgeFinder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">RobustCGAlgorithms</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">RobustDeterminant</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">RobustLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Root</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Root</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">SIRtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">SIRtreePointInRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">STRtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">ScaledNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate" target="classFrame">SegmentIntersectionTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SegmentIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding" target="classFrame"><I>SegmentIntersector</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentNode</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentNodeList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentPointComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentStringDissolver</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding" target="classFrame"><I>SegmentStringDissolver.SegmentStringMerger</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">ShortCircuitedGeometryVisitor</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SimpleEdgeSetIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision" target="classFrame">SimpleGeometryPrecisionReducer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SimpleMCSweepLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">SimpleNestedRingTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SimpleNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">SimplePointInAreaLocator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">SimplePointInRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">SimpleSnapRounder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SimpleSweepLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SinglePassNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">SnapIfNeededOverlayOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">SnapOverlayOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index" target="classFrame"><I>SpatialIndex</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util" target="classFrame">Stopwatch</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">Subgraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">SubgraphDepthLocater</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SweepLineEvent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline" target="classFrame">SweepLineEvent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline" target="classFrame">SweepLineIndex</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline" target="classFrame">SweepLineInterval</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline" target="classFrame"><I>SweepLineOverlapAction</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SweepLineSegment</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">SweeplineNestedRingTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLineSegment</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLineString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLineStringSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLinesSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom" target="classFrame">TopologyException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">TopologyLocation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TopologyPreservingSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">TopologyValidationError</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Triangle</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util" target="classFrame">UniqueCoordinateArrayFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io" target="classFrame"><I>WKBConstants</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKBReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKBWriter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKTReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKTWriter</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/allclasses-noframe.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/allclasses-noframe.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/allclasses-noframe.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,586 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><I>AbstractSTRtree.IntersectsOp</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformationBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree"><I>Boundable</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><I>BoundaryNodeRule</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation">BoundaryOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm">CentralEndpointIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util"><I>CollectionUtil.Function</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementLocationFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementPointFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm">ConnectedSubgraphFinder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay">ConsistentPolygonRingChecker</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.ForwardComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><I>CoordinateFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><I>CoordinateSequence</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><I>CoordinateSequenceFactory</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><I>CoordinateSequenceFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom">CoordinateSequences</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundleStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph">EdgeNodingValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay">EdgeSetNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge">EdgeString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">FuzzyPointLocator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><I>GeometryComponentFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util"><I>GeometryEditor.GeometryEditorOperation</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom"><I>GeometryFilter</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><I>InStream</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io">InputStreamInStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointPoint</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><I>ItemVisitor</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">LineBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">LineStringSnapper</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<BR>
+<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm">MCPointInRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util">Matrix</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainIndexer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><I>Noder</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding">NodingValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding">Octant</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveSetBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OffsetPointGenerator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding">OrientedCoordinateArray</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><I>OutStream</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io">OutputStreamOutStream</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayNodeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PointBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><I>PointInRing</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleContains</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate">RelateComputer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate">RelateNode</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeFactory</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">RobustCGAlgorithms</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm">RobustDeterminant</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SIRtreePointInRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate">SegmentIntersectionTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><I>SegmentIntersector</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding">SegmentPointComparator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><I>SegmentStringDissolver.SegmentStringMerger</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInAreaLocator</A>
+<BR>
+<A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInRing</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A>
+<BR>
+<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><I>SpatialIndex</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<BR>
+<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer">SubgraphDepthLocater</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineIndex</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>
+<BR>
+<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline"><I>SweepLineOverlapAction</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLineStringSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLinesSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<BR>
+<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A>
+<BR>
+<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<BR>
+<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<BR>
+<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io"><I>WKBConstants</I></A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/JTSVersion.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/JTSVersion.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/JTSVersion.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,418 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+JTSVersion
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.JTSVersion class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="JTSVersion";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="JTSVersion.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts</FONT>
+<BR>
+Class JTSVersion</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.JTSVersion</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>JTSVersion</B><DT>extends java.lang.Object</DL>
+
+<P>
+JTS API version information.
+ <p>
+ Versions consist of a 3-part version number: <code>major.minor.patch</code>
+ An optional release status string may be present in the string version of
+ the version.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#CURRENT_VERSION">CURRENT_VERSION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The current version number of the JTS API.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#MAJOR">MAJOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The major version number.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#MINOR">MINOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The minor version number.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#PATCH">PATCH</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The patch version number.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#getMajor()">getMajor</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the major number of the release version.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#getMinor()">getMinor</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the minor number of the release version.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#getPatch()">getPatch</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the patch number of the release version.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prints the current JTS version to stdout.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the full version number, suitable for display.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CURRENT_VERSION"><!-- --></A><H3>
+CURRENT_VERSION</H3>
+<PRE>
+public static final <A HREF="../../../com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A> <B>CURRENT_VERSION</B></PRE>
+<DL>
+<DD>The current version number of the JTS API.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="MAJOR"><!-- --></A><H3>
+MAJOR</H3>
+<PRE>
+public static final int <B>MAJOR</B></PRE>
+<DL>
+<DD>The major version number.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.vividsolutions.jts.JTSVersion.MAJOR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="MINOR"><!-- --></A><H3>
+MINOR</H3>
+<PRE>
+public static final int <B>MINOR</B></PRE>
+<DL>
+<DD>The minor version number.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.vividsolutions.jts.JTSVersion.MINOR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PATCH"><!-- --></A><H3>
+PATCH</H3>
+<PRE>
+public static final int <B>PATCH</B></PRE>
+<DL>
+<DD>The patch version number.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.vividsolutions.jts.JTSVersion.PATCH">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)</PRE>
+<DL>
+<DD>Prints the current JTS version to stdout.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>args</CODE> - the command-line arguments (none are required).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMajor()"><!-- --></A><H3>
+getMajor</H3>
+<PRE>
+public int <B>getMajor</B>()</PRE>
+<DL>
+<DD>Gets the major number of the release version.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the major number of the release version.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMinor()"><!-- --></A><H3>
+getMinor</H3>
+<PRE>
+public int <B>getMinor</B>()</PRE>
+<DL>
+<DD>Gets the minor number of the release version.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the minor number of the release version.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPatch()"><!-- --></A><H3>
+getPatch</H3>
+<PRE>
+public int <B>getPatch</B>()</PRE>
+<DL>
+<DD>Gets the patch number of the release version.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the patch number of the release version.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Gets the full version number, suitable for display.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the full version number, suitable for display.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="JTSVersion.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/Angle.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/Angle.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/Angle.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,665 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+Angle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.Angle class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Angle";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Angle.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class Angle</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.Angle</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Angle</B><DT>extends java.lang.Object</DL>
+
+<P>
+Utility functions for working with angles.
+ Unless otherwise noted, methods in this class express angles in radians.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#CLOCKWISE">CLOCKWISE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constant representing clockwise orientation</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#COUNTERCLOCKWISE">COUNTERCLOCKWISE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constant representing counterclockwise orientation</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#NONE">NONE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constant representing no orientation</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#PI_OVER_2">PI_OVER_2</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#PI_OVER_4">PI_OVER_4</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#PI_TIMES_2">PI_TIMES_2</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#Angle()">Angle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#angle(com.vividsolutions.jts.geom.Coordinate)">angle</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the angle that the vector from (0,0) to p,
+ relative to the positive X-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#angle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">angle</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the angle of the vector from p0 to p1,
+ relative to the positive X-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#angleBetween(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">angleBetween</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;tip1,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;tail,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;tip2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the smallest angle between two vectors.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#diff(double, double)">diff</A></B>(double&nbsp;ang1,
+     double&nbsp;ang2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the unoriented (smallest) difference between two angles.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#getTurn(double, double)">getTurn</A></B>(double&nbsp;ang1,
+        double&nbsp;ang2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether an angle must turn clockwise or counterclockwise
+ to overlap another angle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#interiorAngle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">interiorAngle</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the interior angle between two segments of a ring.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#isAcute(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">isAcute</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the angle between p0-p1-p2 is acute.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#isObtuse(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">isObtuse</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the angle between p0-p1-p2 is obtuse.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#normalize(double)">normalize</A></B>(double&nbsp;angle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the normalized value of an angle, which is the
+ equivalent angle in the range [ -Pi, Pi ].</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#normalizePositive(double)">normalizePositive</A></B>(double&nbsp;angle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the normalized positive value of an angle, which is the
+ equivalent angle in the range [ 0, 2*Pi ].</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#toDegrees(double)">toDegrees</A></B>(double&nbsp;radians)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts from radians to degrees.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html#toRadians(double)">toRadians</A></B>(double&nbsp;angleDegrees)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts from degrees to radians.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PI_TIMES_2"><!-- --></A><H3>
+PI_TIMES_2</H3>
+<PRE>
+public static final double <B>PI_TIMES_2</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.Angle.PI_TIMES_2">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PI_OVER_2"><!-- --></A><H3>
+PI_OVER_2</H3>
+<PRE>
+public static final double <B>PI_OVER_2</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.Angle.PI_OVER_2">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="PI_OVER_4"><!-- --></A><H3>
+PI_OVER_4</H3>
+<PRE>
+public static final double <B>PI_OVER_4</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.Angle.PI_OVER_4">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="COUNTERCLOCKWISE"><!-- --></A><H3>
+COUNTERCLOCKWISE</H3>
+<PRE>
+public static final int <B>COUNTERCLOCKWISE</B></PRE>
+<DL>
+<DD>Constant representing counterclockwise orientation
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.Angle.COUNTERCLOCKWISE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="CLOCKWISE"><!-- --></A><H3>
+CLOCKWISE</H3>
+<PRE>
+public static final int <B>CLOCKWISE</B></PRE>
+<DL>
+<DD>Constant representing clockwise orientation
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.Angle.CLOCKWISE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="NONE"><!-- --></A><H3>
+NONE</H3>
+<PRE>
+public static final int <B>NONE</B></PRE>
+<DL>
+<DD>Constant representing no orientation
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.Angle.NONE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Angle()"><!-- --></A><H3>
+Angle</H3>
+<PRE>
+public <B>Angle</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toDegrees(double)"><!-- --></A><H3>
+toDegrees</H3>
+<PRE>
+public static double <B>toDegrees</B>(double&nbsp;radians)</PRE>
+<DL>
+<DD>Converts from radians to degrees.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>radians</CODE> - an angle in radians
+<DT><B>Returns:</B><DD>the angle in degrees</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toRadians(double)"><!-- --></A><H3>
+toRadians</H3>
+<PRE>
+public static double <B>toRadians</B>(double&nbsp;angleDegrees)</PRE>
+<DL>
+<DD>Converts from degrees to radians.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>angleDegrees</CODE> - an angle in degrees
+<DT><B>Returns:</B><DD>the angle in radians</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="angle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+angle</H3>
+<PRE>
+public static double <B>angle</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Returns the angle of the vector from p0 to p1,
+ relative to the positive X-axis.
+ The angle will be in the range [ -Pi, Pi ].
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the angle (in radians) that p0-p1 makes with the positive x-axis.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="angle(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+angle</H3>
+<PRE>
+public static double <B>angle</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Returns the angle that the vector from (0,0) to p,
+ relative to the positive X-axis.
+ The angle will be in the range [ -Pi, Pi ].
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the angle (in radians) that p makes with the positive x-axis.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isAcute(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isAcute</H3>
+<PRE>
+public static boolean <B>isAcute</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>Tests whether the angle between p0-p1-p2 is acute.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p0</CODE> - an endpoint of the angle<DD><CODE>p1</CODE> - the base of the angle<DD><CODE>p2</CODE> - the other endpoint of the angle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isObtuse(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isObtuse</H3>
+<PRE>
+public static boolean <B>isObtuse</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>Tests whether the angle between p0-p1-p2 is obtuse.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p0</CODE> - an endpoint of the angle<DD><CODE>p1</CODE> - the base of the angle<DD><CODE>p2</CODE> - the other endpoint of the angle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="angleBetween(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+angleBetween</H3>
+<PRE>
+public static double <B>angleBetween</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;tip1,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;tail,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;tip2)</PRE>
+<DL>
+<DD>Returns the smallest angle between two vectors.
+ The computed angle will be in the range [0, Pi].
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>tip1</CODE> - the tip of one vector<DD><CODE>tail</CODE> - the tail of each vector<DD><CODE>tip2</CODE> - the tip of the other vector
+<DT><B>Returns:</B><DD>the angle between tail-tip1 and tail-tip2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="interiorAngle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+interiorAngle</H3>
+<PRE>
+public static double <B>interiorAngle</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>Computes the interior angle between two segments of a ring.
+ The ring is assumed to be oriented in a clockwise direction.
+ The computed angle will be in the range [0, 2Pi]
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p0</CODE> - a point of the ring<DD><CODE>p1</CODE> - the next point of the ring<DD><CODE>p2</CODE> - the next point of the ring
+<DT><B>Returns:</B><DD>the interior angle based at <code>p1</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTurn(double, double)"><!-- --></A><H3>
+getTurn</H3>
+<PRE>
+public static int <B>getTurn</B>(double&nbsp;ang1,
+                          double&nbsp;ang2)</PRE>
+<DL>
+<DD>Returns whether an angle must turn clockwise or counterclockwise
+ to overlap another angle.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ang1</CODE> - an angle (in radians)<DD><CODE>ang2</CODE> - an angle (in radians)
+<DT><B>Returns:</B><DD>whether a1 must turn CLOCKWISE, COUNTERCLOCKWISE or NONE to
+ overlap a2.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize(double)"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public static double <B>normalize</B>(double&nbsp;angle)</PRE>
+<DL>
+<DD>Computes the normalized value of an angle, which is the
+ equivalent angle in the range [ -Pi, Pi ].
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>angle</CODE> - the angle to normalize
+<DT><B>Returns:</B><DD>an equivalent angle in the range [-Pi, Pi]</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalizePositive(double)"><!-- --></A><H3>
+normalizePositive</H3>
+<PRE>
+public static double <B>normalizePositive</B>(double&nbsp;angle)</PRE>
+<DL>
+<DD>Computes the normalized positive value of an angle, which is the
+ equivalent angle in the range [ 0, 2*Pi ].
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>angle</CODE> - the angle to normalize, in radians
+<DT><B>Returns:</B><DD>an equivalent positive angle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="diff(double, double)"><!-- --></A><H3>
+diff</H3>
+<PRE>
+public static double <B>diff</B>(double&nbsp;ang1,
+                          double&nbsp;ang2)</PRE>
+<DL>
+<DD>Computes the unoriented (smallest) difference between two angles.
+ The angles are assumed to be normalized to the range [-Pi, Pi].
+ The result will be in the range [0, Pi].
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ang1</CODE> - the angle of one vector (in [-Pi, Pi] )<DD><CODE>ang2</CODE> - the angle of the other vector (in range [-Pi, Pi] )
+<DT><B>Returns:</B><DD>the angle (in radians) between the two vectors (in range [0, Pi] )</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Angle.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,317 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+BoundaryNodeRule.EndPointBoundaryNodeRule
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.BoundaryNodeRule.EndPointBoundaryNodeRule class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BoundaryNodeRule.EndPointBoundaryNodeRule";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.EndPointBoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class BoundaryNodeRule.EndPointBoundaryNodeRule</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.BoundaryNodeRule.EndPointBoundaryNodeRule</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>BoundaryNodeRule.EndPointBoundaryNodeRule</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which specifies that any points which are endpoints
+ of lineal components are in the boundary of the
+ parent geometry.
+ This corresponds to the "intuitive" topological definition
+ of boundary.
+ Under this rule <CODE>LinearRing</CODE>s have a non-empty boundary
+ (the common endpoint of the underlying LineString).
+ <p>
+ This rule is useful when dealing with linear networks.
+ For example, it can be used to check
+ whether linear networks are correctly noded.
+ The usual network topology constraint is that linear segments may touch only at endpoints.
+ In the case of a segment touching a closed segment (ring) at one point,
+ the Mod2 rule cannot distinguish between the permitted case of touching at the
+ node point and the invalid case of touching at some other interior (non-node) point.
+ The EndPoint rule does distinguish between these cases,
+ so is more appropriate for use.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#ENDPOINT_BOUNDARY_RULE">ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MOD2_BOUNDARY_RULE">MOD2_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MONOVALENT_ENDPOINT_BOUNDARY_RULE">MONOVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MULTIVALENT_ENDPOINT_BOUNDARY_RULE">MULTIVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#OGC_SFS_BOUNDARY_RULE">OGC_SFS_BOUNDARY_RULE</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html#BoundaryNodeRule.EndPointBoundaryNodeRule()">BoundaryNodeRule.EndPointBoundaryNodeRule</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></B>(int&nbsp;boundaryCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BoundaryNodeRule.EndPointBoundaryNodeRule()"><!-- --></A><H3>
+BoundaryNodeRule.EndPointBoundaryNodeRule</H3>
+<PRE>
+public <B>BoundaryNodeRule.EndPointBoundaryNodeRule</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInBoundary(int)"><!-- --></A><H3>
+isInBoundary</H3>
+<PRE>
+public boolean <B>isInBoundary</B>(int&nbsp;boundaryCount)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.EndPointBoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,309 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+BoundaryNodeRule.Mod2BoundaryNodeRule
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.BoundaryNodeRule.Mod2BoundaryNodeRule class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BoundaryNodeRule.Mod2BoundaryNodeRule";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.Mod2BoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class BoundaryNodeRule.Mod2BoundaryNodeRule</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.BoundaryNodeRule.Mod2BoundaryNodeRule</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>BoundaryNodeRule.Mod2BoundaryNodeRule</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> specifies that points are in the
+ boundary of a lineal geometry iff
+ the point lies on the boundary of an odd number
+ of components.
+ Under this rule <CODE>LinearRing</CODE>s and closed
+ <CODE>LineString</CODE>s have an empty boundary.
+ <p>
+ This is the rule specified by the <i>OGC SFS</i>,
+ and is the default rule used in JTS.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#ENDPOINT_BOUNDARY_RULE">ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MOD2_BOUNDARY_RULE">MOD2_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MONOVALENT_ENDPOINT_BOUNDARY_RULE">MONOVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MULTIVALENT_ENDPOINT_BOUNDARY_RULE">MULTIVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#OGC_SFS_BOUNDARY_RULE">OGC_SFS_BOUNDARY_RULE</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html#BoundaryNodeRule.Mod2BoundaryNodeRule()">BoundaryNodeRule.Mod2BoundaryNodeRule</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></B>(int&nbsp;boundaryCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BoundaryNodeRule.Mod2BoundaryNodeRule()"><!-- --></A><H3>
+BoundaryNodeRule.Mod2BoundaryNodeRule</H3>
+<PRE>
+public <B>BoundaryNodeRule.Mod2BoundaryNodeRule</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInBoundary(int)"><!-- --></A><H3>
+isInBoundary</H3>
+<PRE>
+public boolean <B>isInBoundary</B>(int&nbsp;boundaryCount)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.Mod2BoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency of exactly 1 are on the boundary.
+ This corresponds to the boundary of a <CODE>MultiLineString</CODE>
+ being all the "unattached" endpoints.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#ENDPOINT_BOUNDARY_RULE">ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MOD2_BOUNDARY_RULE">MOD2_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MONOVALENT_ENDPOINT_BOUNDARY_RULE">MONOVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MULTIVALENT_ENDPOINT_BOUNDARY_RULE">MULTIVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#OGC_SFS_BOUNDARY_RULE">OGC_SFS_BOUNDARY_RULE</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html#BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule()">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></B>(int&nbsp;boundaryCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule()"><!-- --></A><H3>
+BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</H3>
+<PRE>
+public <B>BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInBoundary(int)"><!-- --></A><H3>
+isInBoundary</H3>
+<PRE>
+public boolean <B>isInBoundary</B>(int&nbsp;boundaryCount)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency greater than 1 are on the boundary.
+ This corresponds to the boundary of a <CODE>MultiLineString</CODE>
+ being all the "attached" endpoints, but not
+ the "unattached" ones.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.BoundaryNodeRule"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#ENDPOINT_BOUNDARY_RULE">ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MOD2_BOUNDARY_RULE">MOD2_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MONOVALENT_ENDPOINT_BOUNDARY_RULE">MONOVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MULTIVALENT_ENDPOINT_BOUNDARY_RULE">MULTIVALENT_ENDPOINT_BOUNDARY_RULE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#OGC_SFS_BOUNDARY_RULE">OGC_SFS_BOUNDARY_RULE</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html#BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule()">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></B>(int&nbsp;boundaryCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule()"><!-- --></A><H3>
+BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</H3>
+<PRE>
+public <B>BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInBoundary(int)"><!-- --></A><H3>
+isInBoundary</H3>
+<PRE>
+public boolean <B>isInBoundary</B>(int&nbsp;boundaryCount)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/BoundaryNodeRule.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,394 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+BoundaryNodeRule
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.BoundaryNodeRule interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BoundaryNodeRule";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Interface BoundaryNodeRule</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>BoundaryNodeRule</B></DL>
+
+<P>
+An interface for rules which determine whether node points
+ which are in boundaries of lineal geometry components
+ are in the boundary of the parent geometry collection.
+ The SFS specifies a single kind of boundary node rule,
+ the <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule.Mod2BoundaryNodeRule</CODE></A> rule.
+ However, other kinds of Boundary Node Rules are appropriate
+ in specific situations (for instance, linear network topology
+ usually follows the <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule.EndPointBoundaryNodeRule</CODE></A>.)
+ Some JTS operations allow the BoundaryNodeRule to be specified,
+ and respect this rule when computing the results of the operation.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+<DT><B>See Also:</B><DD><CODE>RelateOp</CODE>, 
+<CODE>IsSimpleOp</CODE></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which specifies that any points which are endpoints
+ of lineal components are in the boundary of the
+ parent geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> specifies that points are in the
+ boundary of a lineal geometry iff
+ the point lies on the boundary of an odd number
+ of components.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency of exactly 1 are on the boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency greater than 1 are on the boundary.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#ENDPOINT_BOUNDARY_RULE">ENDPOINT_BOUNDARY_RULE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Endpoint Boundary Node Rule.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MOD2_BOUNDARY_RULE">MOD2_BOUNDARY_RULE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Mod-2 Boundary Node Rule (as used in the OGC SFS).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MONOVALENT_ENDPOINT_BOUNDARY_RULE">MONOVALENT_ENDPOINT_BOUNDARY_RULE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Monovalent Endpoint Boundary Node Rule.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MULTIVALENT_ENDPOINT_BOUNDARY_RULE">MULTIVALENT_ENDPOINT_BOUNDARY_RULE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The MultiValent Endpoint Boundary Node Rule.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#OGC_SFS_BOUNDARY_RULE">OGC_SFS_BOUNDARY_RULE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Boundary Node Rule specified by the OGC Simple Features Specification,
+ equal to the Mod-2 rule.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#isInBoundary(int)">isInBoundary</A></B>(int&nbsp;boundaryCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MOD2_BOUNDARY_RULE"><!-- --></A><H3>
+MOD2_BOUNDARY_RULE</H3>
+<PRE>
+public static final <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A> <B>MOD2_BOUNDARY_RULE</B></PRE>
+<DL>
+<DD>The Mod-2 Boundary Node Rule (as used in the OGC SFS).
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="ENDPOINT_BOUNDARY_RULE"><!-- --></A><H3>
+ENDPOINT_BOUNDARY_RULE</H3>
+<PRE>
+public static final <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A> <B>ENDPOINT_BOUNDARY_RULE</B></PRE>
+<DL>
+<DD>The Endpoint Boundary Node Rule.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="MULTIVALENT_ENDPOINT_BOUNDARY_RULE"><!-- --></A><H3>
+MULTIVALENT_ENDPOINT_BOUNDARY_RULE</H3>
+<PRE>
+public static final <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A> <B>MULTIVALENT_ENDPOINT_BOUNDARY_RULE</B></PRE>
+<DL>
+<DD>The MultiValent Endpoint Boundary Node Rule.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="MONOVALENT_ENDPOINT_BOUNDARY_RULE"><!-- --></A><H3>
+MONOVALENT_ENDPOINT_BOUNDARY_RULE</H3>
+<PRE>
+public static final <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A> <B>MONOVALENT_ENDPOINT_BOUNDARY_RULE</B></PRE>
+<DL>
+<DD>The Monovalent Endpoint Boundary Node Rule.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="OGC_SFS_BOUNDARY_RULE"><!-- --></A><H3>
+OGC_SFS_BOUNDARY_RULE</H3>
+<PRE>
+public static final <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A> <B>OGC_SFS_BOUNDARY_RULE</B></PRE>
+<DL>
+<DD>The Boundary Node Rule specified by the OGC Simple Features Specification,
+ equal to the Mod-2 rule.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInBoundary(int)"><!-- --></A><H3>
+isInBoundary</H3>
+<PRE>
+public boolean <B>isInBoundary</B>(int&nbsp;boundaryCount)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryNodeRule.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CGAlgorithms.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CGAlgorithms.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CGAlgorithms.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,649 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+CGAlgorithms
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.CGAlgorithms class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CGAlgorithms";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CGAlgorithms.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class CGAlgorithms</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.CGAlgorithms</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">RobustCGAlgorithms</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>CGAlgorithms</B><DT>extends java.lang.Object</DL>
+
+<P>
+Specifies and implements various fundamental Computational Geometric algorithms.
+ The algorithms supplied in this class are robust for double-precision floating point.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#CLOCKWISE">CLOCKWISE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A value that indicates an orientation of clockwise, or a right turn.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#COLLINEAR">COLLINEAR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A value that indicates an orientation of collinear, or no turn (straight).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#COUNTERCLOCKWISE">COUNTERCLOCKWISE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A value that indicates an orientation of counterclockwise, or a left turn.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#LEFT">LEFT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#RIGHT">RIGHT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#STRAIGHT">STRAIGHT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#CGAlgorithms()">CGAlgorithms</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeOrientation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the orientation of a point q to the directed line segment p1-p2.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distanceLineLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distanceLineLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;A,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;B,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;C,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;D)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the distance from a line segment AB to a line segment CD
+
+ Note: NON-ROBUST!</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distancePointLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;A,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;B)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the distance from a point p to a line segment AB
+
+ Note: NON-ROBUST!</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLinePerpendicular(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distancePointLinePerpendicular</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;A,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;B)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the perpendicular distance from a point p
+ to the (infinite) line containing the points AB</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isCCW(com.vividsolutions.jts.geom.Coordinate[])">isCCW</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes whether a ring defined by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isOnLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isOnLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test whether a point lies on the line segments defined by a
+ list of coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isPointInRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test whether a point lies inside a ring.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#length(com.vividsolutions.jts.geom.CoordinateSequence)">length</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the length of a linestring specified by a sequence of points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#orientationIndex(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">orientationIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the direction of the point <code>q</code>
+ relative to a
+ vector specified by <code>p1-p2</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#signedArea(com.vividsolutions.jts.geom.Coordinate[])">signedArea</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the signed area for a ring.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CLOCKWISE"><!-- --></A><H3>
+CLOCKWISE</H3>
+<PRE>
+public static final int <B>CLOCKWISE</B></PRE>
+<DL>
+<DD>A value that indicates an orientation of clockwise, or a right turn.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.CGAlgorithms.CLOCKWISE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="RIGHT"><!-- --></A><H3>
+RIGHT</H3>
+<PRE>
+public static final int <B>RIGHT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.CGAlgorithms.RIGHT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="COUNTERCLOCKWISE"><!-- --></A><H3>
+COUNTERCLOCKWISE</H3>
+<PRE>
+public static final int <B>COUNTERCLOCKWISE</B></PRE>
+<DL>
+<DD>A value that indicates an orientation of counterclockwise, or a left turn.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.CGAlgorithms.COUNTERCLOCKWISE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="LEFT"><!-- --></A><H3>
+LEFT</H3>
+<PRE>
+public static final int <B>LEFT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.CGAlgorithms.LEFT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="COLLINEAR"><!-- --></A><H3>
+COLLINEAR</H3>
+<PRE>
+public static final int <B>COLLINEAR</B></PRE>
+<DL>
+<DD>A value that indicates an orientation of collinear, or no turn (straight).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.CGAlgorithms.COLLINEAR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="STRAIGHT"><!-- --></A><H3>
+STRAIGHT</H3>
+<PRE>
+public static final int <B>STRAIGHT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.CGAlgorithms.STRAIGHT">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CGAlgorithms()"><!-- --></A><H3>
+CGAlgorithms</H3>
+<PRE>
+public <B>CGAlgorithms</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="orientationIndex(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+orientationIndex</H3>
+<PRE>
+public static int <B>orientationIndex</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</PRE>
+<DL>
+<DD>Returns the index of the direction of the point <code>q</code>
+ relative to a
+ vector specified by <code>p1-p2</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p1</CODE> - the origin point of the vector<DD><CODE>p2</CODE> - the final point of the vector<DD><CODE>q</CODE> - the point to compute the direction to
+<DT><B>Returns:</B><DD>1 if q is counter-clockwise (left) from p1-p2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+isPointInRing</H3>
+<PRE>
+public static boolean <B>isPointInRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</PRE>
+<DL>
+<DD>Test whether a point lies inside a ring.
+ The ring may be oriented in either direction.
+ If the point lies on the ring boundary the result of this method is unspecified.
+ <p>
+ This algorithm does not attempt to first check the point against the envelope
+ of the ring.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p</CODE> - point to check for ring inclusion<DD><CODE>ring</CODE> - assumed to have first point identical to last point
+<DT><B>Returns:</B><DD><code>true</code> if p is inside ring</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isOnLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+isOnLine</H3>
+<PRE>
+public static boolean <B>isOnLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pt)</PRE>
+<DL>
+<DD>Test whether a point lies on the line segments defined by a
+ list of coordinates.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true true if
+ the point is a vertex of the line or lies in the interior of a line
+ segment in the linestring</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCCW(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+isCCW</H3>
+<PRE>
+public static boolean <B>isCCW</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</PRE>
+<DL>
+<DD>Computes whether a ring defined by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.
+ <ul>
+ <li>The list of points is assumed to have the first and last points equal.
+ <li>This will handle coordinate lists which contain repeated points.
+ </ul>
+ This algorithm is <b>only</b> guaranteed to work with valid rings.
+ If the ring is invalid (e.g. self-crosses or touches),
+ the computed result <b>may</b> not be correct.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ring</CODE> - an array of coordinates forming a ring
+<DT><B>Returns:</B><DD><code>true</code> if the ring is oriented counter-clockwise.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeOrientation</H3>
+<PRE>
+public static int <B>computeOrientation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</PRE>
+<DL>
+<DD>Computes the orientation of a point q to the directed line segment p1-p2.
+ The orientation of a point relative to a directed line segment indicates
+ which way you turn to get to q after travelling from p1 to p2.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>1 if q is counter-clockwise from p1-p2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distancePointLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+distancePointLine</H3>
+<PRE>
+public static double <B>distancePointLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;A,
+                                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;B)</PRE>
+<DL>
+<DD>Computes the distance from a point p to a line segment AB
+
+ Note: NON-ROBUST!
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p</CODE> - the point to compute the distance for<DD><CODE>A</CODE> - one point of the line<DD><CODE>B</CODE> - another point of the line (must be different to A)
+<DT><B>Returns:</B><DD>the distance from p to line segment AB</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distancePointLinePerpendicular(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+distancePointLinePerpendicular</H3>
+<PRE>
+public static double <B>distancePointLinePerpendicular</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;A,
+                                                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;B)</PRE>
+<DL>
+<DD>Computes the perpendicular distance from a point p
+ to the (infinite) line containing the points AB
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p</CODE> - the point to compute the distance for<DD><CODE>A</CODE> - one point of the line<DD><CODE>B</CODE> - another point of the line (must be different to A)
+<DT><B>Returns:</B><DD>the distance from p to line AB</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distanceLineLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+distanceLineLine</H3>
+<PRE>
+public static double <B>distanceLineLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;A,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;B,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;C,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;D)</PRE>
+<DL>
+<DD>Computes the distance from a line segment AB to a line segment CD
+
+ Note: NON-ROBUST!
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>A</CODE> - a point of one line<DD><CODE>B</CODE> - the second point of  (must be different to A)<DD><CODE>C</CODE> - one point of the line<DD><CODE>D</CODE> - another point of the line (must be different to A)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="signedArea(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+signedArea</H3>
+<PRE>
+public static double <B>signedArea</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</PRE>
+<DL>
+<DD>Returns the signed area for a ring.  The area is positive if
+ the ring is oriented CW.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="length(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+length</H3>
+<PRE>
+public static double <B>length</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;pts)</PRE>
+<DL>
+<DD>Computes the length of a linestring specified by a sequence of points.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pts</CODE> - the points specifying the linestring
+<DT><B>Returns:</B><DD>the length of the linestring</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CGAlgorithms.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+CentralEndpointIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.CentralEndpointIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CentralEndpointIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentralEndpointIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class CentralEndpointIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.CentralEndpointIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CentralEndpointIntersector</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes an approximate intersection of two line segments
+ by taking the most central of the endpoints of the segments.
+ This is effective in cases where the segments are nearly parallel
+ and should intersect at an endpoint.
+ It is also a reasonable strategy for cases where the 
+ endpoint of one segment lies on or almost on the interior of another one.
+ Taking the most central endpoint ensures that the computed intersection
+ point lies in the envelope of the segments.
+ Also, by always returning one of the input points, this should result 
+ in reducing segment fragmentation.
+ Intended to be used as a last resort for 
+ computing ill-conditioned intersection situations which 
+ cause other methods to fail.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.8</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html#CentralEndpointIntersector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">CentralEndpointIntersector</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p00,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p01,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p10,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p11)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html#getIntersection()">getIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html#getIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">getIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p00,
+                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p01,
+                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p10,
+                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p11)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CentralEndpointIntersector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+CentralEndpointIntersector</H3>
+<PRE>
+public <B>CentralEndpointIntersector</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p00,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p01,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p10,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p11)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getIntersection</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p00,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p01,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p10,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p11)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersection()"><!-- --></A><H3>
+getIntersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getIntersection</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentralEndpointIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidArea.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidArea.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidArea.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,311 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+CentroidArea
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.CentroidArea class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CentroidArea";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentroidArea.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class CentroidArea</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.CentroidArea</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CentroidArea</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the centroid of an area geometry.
+ <h2>Algorithm</h2>
+ Based on the usual algorithm for calculating
+ the centroid as a weighted sum of the centroids
+ of a decomposition of the area into (possibly overlapping) triangles.
+ The algorithm has been extended to handle holes and multi-polygons.
+ See <code>http://www.faqs.org/faqs/graphics/algorithms-faq/</code>
+ for further details of the basic approach.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html#CentroidArea()">CentroidArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html#add(com.vividsolutions.jts.geom.Coordinate[])">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the area defined by an array of
+ coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the area defined by a Geometry to the centroid total.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html#getCentroid()">getCentroid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CentroidArea()"><!-- --></A><H3>
+CentroidArea</H3>
+<PRE>
+public <B>CentroidArea</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Adds the area defined by a Geometry to the centroid total.
+ If the geometry has no area it does not contribute to the centroid.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</PRE>
+<DL>
+<DD>Adds the area defined by an array of
+ coordinates.  The array must be a ring;
+ i.e. end with the same coordinate as it starts with.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ring</CODE> - an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCentroid()"><!-- --></A><H3>
+getCentroid</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCentroid</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentroidArea.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidLine.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidLine.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidLine.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+CentroidLine
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.CentroidLine class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CentroidLine";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentroidLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class CentroidLine</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.CentroidLine</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CentroidLine</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the centroid of a linear geometry.
+ <h2>Algorithm</h2>
+ Compute the average of the midpoints
+ of all line segments weighted by the segment length.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html#CentroidLine()">CentroidLine</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html#add(com.vividsolutions.jts.geom.Coordinate[])">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the length defined by an array of coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the linestring(s) defined by a Geometry to the centroid total.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html#getCentroid()">getCentroid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CentroidLine()"><!-- --></A><H3>
+CentroidLine</H3>
+<PRE>
+public <B>CentroidLine</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Adds the linestring(s) defined by a Geometry to the centroid total.
+ If the geometry is not linear it does not contribute to the centroid
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCentroid()"><!-- --></A><H3>
+getCentroid</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCentroid</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Adds the length defined by an array of coordinates.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pts</CODE> - an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentroidLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidPoint.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidPoint.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/CentroidPoint.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+CentroidPoint
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.CentroidPoint class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CentroidPoint";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentroidPoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class CentroidPoint</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.CentroidPoint</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CentroidPoint</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the centroid of a point geometry.
+ <h2>Algorithm</h2>
+ Compute the average of all points.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html#CentroidPoint()">CentroidPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html#add(com.vividsolutions.jts.geom.Coordinate)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the length defined by an array of coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the point(s) defined by a Geometry to the centroid total.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html#getCentroid()">getCentroid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CentroidPoint()"><!-- --></A><H3>
+CentroidPoint</H3>
+<PRE>
+public <B>CentroidPoint</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Adds the point(s) defined by a Geometry to the centroid total.
+ If the geometry is not of dimension 0 it does not contribute to the centroid.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Adds the length defined by an array of coordinates.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCentroid()"><!-- --></A><H3>
+getCentroid</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCentroid</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CentroidPoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/ConvexHull.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/ConvexHull.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/ConvexHull.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,316 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+ConvexHull
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.ConvexHull class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConvexHull";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConvexHull.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class ConvexHull</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.ConvexHull</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ConvexHull</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the convex hull of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ The convex hull is the smallest convex Geometry that contains all the
+ points in the input Geometry.
+ <p>
+ Uses the Graham Scan algorithm.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html#ConvexHull(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.GeometryFactory)">ConvexHull</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+           <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geomFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new convex hull construction for the input <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html#ConvexHull(com.vividsolutions.jts.geom.Geometry)">ConvexHull</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new convex hull construction for the input <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html#getConvexHull()">getConvexHull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> that represents the convex hull of the input
+ geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html#toCoordinateArray(java.util.Stack)">toCoordinateArray</A></B>(java.util.Stack&nbsp;stack)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An alternative to Stack.toArray, which is not present in earlier versions
+ of Java.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ConvexHull(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+ConvexHull</H3>
+<PRE>
+public <B>ConvexHull</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Create a new convex hull construction for the input <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+</DL>
+<HR>
+
+<A NAME="ConvexHull(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+ConvexHull</H3>
+<PRE>
+public <B>ConvexHull</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geomFactory)</PRE>
+<DL>
+<DD>Create a new convex hull construction for the input <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getConvexHull()"><!-- --></A><H3>
+getConvexHull</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getConvexHull</B>()</PRE>
+<DL>
+<DD>Returns a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> that represents the convex hull of the input
+ geometry.
+ The returned geometry contains the minimal number of points needed to
+ represent the convex hull.  In particular, no more than two consecutive
+ points will be collinear.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>if the convex hull contains 3 or more points, a <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>;
+ 2 points, a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>;
+ 1 point, a <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>;
+ 0 points, an empty <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toCoordinateArray(java.util.Stack)"><!-- --></A><H3>
+toCoordinateArray</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>toCoordinateArray</B>(java.util.Stack&nbsp;stack)</PRE>
+<DL>
+<DD>An alternative to Stack.toArray, which is not present in earlier versions
+ of Java.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConvexHull.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/HCoordinate.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/HCoordinate.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/HCoordinate.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,478 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+HCoordinate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.HCoordinate class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="HCoordinate";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="HCoordinate.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class HCoordinate</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.HCoordinate</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>HCoordinate</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents a homogeneous coordinate in a 2-D coordinate space.
+ In JTS <A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><CODE>HCoordinate</CODE></A>s are used as a clean way
+ of computing intersections between line segments.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>David Skea</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#w">w</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#x">x</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#y">y</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate()">HCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(com.vividsolutions.jts.geom.Coordinate)">HCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(double, double)">HCoordinate</A></B>(double&nbsp;_x,
+            double&nbsp;_y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(double, double, double)">HCoordinate</A></B>(double&nbsp;_x,
+            double&nbsp;_y,
+            double&nbsp;_w)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(com.vividsolutions.jts.algorithm.HCoordinate, com.vividsolutions.jts.algorithm.HCoordinate)">HCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>&nbsp;p1,
+            <A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#getX()">getX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#getY()">getY</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html#intersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">intersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the (approximate) intersection point between two line segments
+ using homogeneous coordinates.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="x"><!-- --></A><H3>
+x</H3>
+<PRE>
+public double <B>x</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="y"><!-- --></A><H3>
+y</H3>
+<PRE>
+public double <B>y</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="w"><!-- --></A><H3>
+w</H3>
+<PRE>
+public double <B>w</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="HCoordinate()"><!-- --></A><H3>
+HCoordinate</H3>
+<PRE>
+public <B>HCoordinate</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="HCoordinate(double, double, double)"><!-- --></A><H3>
+HCoordinate</H3>
+<PRE>
+public <B>HCoordinate</B>(double&nbsp;_x,
+                   double&nbsp;_y,
+                   double&nbsp;_w)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="HCoordinate(double, double)"><!-- --></A><H3>
+HCoordinate</H3>
+<PRE>
+public <B>HCoordinate</B>(double&nbsp;_x,
+                   double&nbsp;_y)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="HCoordinate(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+HCoordinate</H3>
+<PRE>
+public <B>HCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="HCoordinate(com.vividsolutions.jts.algorithm.HCoordinate, com.vividsolutions.jts.algorithm.HCoordinate)"><!-- --></A><H3>
+HCoordinate</H3>
+<PRE>
+public <B>HCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>&nbsp;p1,
+                   <A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>&nbsp;p2)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>intersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)
+                               throws <A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></PRE>
+<DL>
+<DD>Computes the (approximate) intersection point between two line segments
+ using homogeneous coordinates.
+ <p>
+ Note that this algorithm is
+ not numerically stable; i.e. it can produce intersection points which
+ lie outside the envelope of the line segments themselves.  In order
+ to increase the precision of the calculation input points should be normalized
+ before passing them to this routine.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getX()"><!-- --></A><H3>
+getX</H3>
+<PRE>
+public double <B>getX</B>()
+            throws <A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getY()"><!-- --></A><H3>
+getY</H3>
+<PRE>
+public double <B>getY</B>()
+            throws <A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()
+                         throws <A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="HCoordinate.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointArea.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointArea.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointArea.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,355 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+InteriorPointArea
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.InteriorPointArea class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="InteriorPointArea";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorPointArea.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class InteriorPointArea</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.InteriorPointArea</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>InteriorPointArea</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes a point in the interior of an area geometry.
+
+ <h2>Algorithm</h2>
+ <ul>
+   <li>Find the intersections between the geometry
+       and the horizontal bisector of the area's envelope
+   <li>Pick the midpoint of the largest intersection (the intersections
+       will be lines and points)
+ </ul>
+
+ <b>
+ Note: If a fixed precision model is used,
+ in some cases this method may return a point
+ which does not lie in the interior.
+ </b>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html#InteriorPointArea(com.vividsolutions.jts.geom.Geometry)">InteriorPointArea</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html#addPolygon(com.vividsolutions.jts.geom.Geometry)">addPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Finds a reasonable point at which to label a Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html#centre(com.vividsolutions.jts.geom.Envelope)">centre</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;envelope)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the centre point of the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html#getInteriorPoint()">getInteriorPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html#horizontalBisector(com.vividsolutions.jts.geom.Geometry)">horizontalBisector</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html#widestGeometry(com.vividsolutions.jts.geom.Geometry)">widestGeometry</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="InteriorPointArea(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+InteriorPointArea</H3>
+<PRE>
+public <B>InteriorPointArea</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInteriorPoint()"><!-- --></A><H3>
+getInteriorPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInteriorPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addPolygon(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+addPolygon</H3>
+<PRE>
+public void <B>addPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Finds a reasonable point at which to label a Geometry.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - the geometry to analyze
+<DT><B>Returns:</B><DD>the midpoint of the largest intersection between the geometry and
+ a line halfway down its envelope</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="widestGeometry(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+widestGeometry</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>widestGeometry</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="horizontalBisector(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+horizontalBisector</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>horizontalBisector</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="centre(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+centre</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>centre</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;envelope)</PRE>
+<DL>
+<DD>Returns the centre point of the envelope.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>envelope</CODE> - the envelope to analyze
+<DT><B>Returns:</B><DD>the centre of the envelope</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorPointArea.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointLine.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointLine.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointLine.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+InteriorPointLine
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.InteriorPointLine class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="InteriorPointLine";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorPointLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class InteriorPointLine</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.InteriorPointLine</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>InteriorPointLine</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes a point in the interior of an linear geometry.
+ <h2>Algorithm</h2>
+ <ul>
+ <li>Find an interior vertex which is closest to
+ the centroid of the linestring.
+ <li>If there is no interior vertex, find the endpoint which is
+ closest to the centroid.
+ </ul>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html#InteriorPointLine(com.vividsolutions.jts.geom.Geometry)">InteriorPointLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html#getInteriorPoint()">getInteriorPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="InteriorPointLine(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+InteriorPointLine</H3>
+<PRE>
+public <B>InteriorPointLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInteriorPoint()"><!-- --></A><H3>
+getInteriorPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInteriorPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorPointLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointPoint.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointPoint.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/InteriorPointPoint.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,260 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+InteriorPointPoint
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.InteriorPointPoint class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="InteriorPointPoint";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorPointPoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class InteriorPointPoint</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.InteriorPointPoint</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>InteriorPointPoint</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes a point in the interior of an point geometry.
+ <h2>Algorithm</h2>
+ Find a point which is closest to the centroid of the geometry.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html#InteriorPointPoint(com.vividsolutions.jts.geom.Geometry)">InteriorPointPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html#getInteriorPoint()">getInteriorPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="InteriorPointPoint(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+InteriorPointPoint</H3>
+<PRE>
+public <B>InteriorPointPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInteriorPoint()"><!-- --></A><H3>
+getInteriorPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInteriorPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorPointPoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/LineIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/LineIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/LineIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,996 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+LineIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.LineIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class LineIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.LineIntersector</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>LineIntersector</B><DT>extends java.lang.Object</DL>
+
+<P>
+A LineIntersector is an algorithm that can both test whether
+ two line segments intersect and compute the intersection point
+ if they do.
+ The intersection point may be computed in a precise or non-precise manner.
+ Computing it precisely involves rounding it to an integer.  (This assumes
+ that the input coordinates have been made precise by scaling them to
+ an integer grid.)
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#COLLINEAR">COLLINEAR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#DO_INTERSECT">DO_INTERSECT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#DONT_INTERSECT">DONT_INTERSECT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[][]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#inputLines">inputLines</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int[][]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#intLineIndex">intLineIndex</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The indexes of the endpoints of the intersection lines, in order along
+ the corresponding line</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#intPt">intPt</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isProper">isProper</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#pa">pa</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#pb">pb</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#precisionModel">precisionModel</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If makePrecise is true, computed intersection coordinates will be made precise
+ using Coordinate#makePrecise</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#result">result</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#LineIntersector()">LineIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeEdgeDistance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the "edge distance" of an intersection point p along a segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersect</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the intersection of a point p and the line p1-p2.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p3,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p4)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the intersection of the lines p1-p2 and p3-p4.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex()">computeIntLineIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex(int)">computeIntLineIndex</A></B>(int&nbsp;segmentIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getEdgeDistance(int, int)">getEdgeDistance</A></B>(int&nbsp;segmentIndex,
+                int&nbsp;intIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the "edge distance" of an intersection point along the specified input line segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIndexAlongSegment(int, int)">getIndexAlongSegment</A></B>(int&nbsp;segmentIndex,
+                     int&nbsp;intIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the index of the intIndex'th intersection point in the direction of
+ a specified input line segment</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersection(int)">getIntersection</A></B>(int&nbsp;intIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the intIndex'th intersection point</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionAlongSegment(int, int)">getIntersectionAlongSegment</A></B>(int&nbsp;segmentIndex,
+                            int&nbsp;intIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the intIndex'th intersection point in the direction of
+ a specified input line segment</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionNum()">getIntersectionNum</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of intersection points found.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#hasIntersection()">hasIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the input geometries intersect.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isCollinear()">isCollinear</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isEndPoint()">isEndPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection()">isInteriorIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether either intersection point is an interior point of one of the input segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection(int)">isInteriorIntersection</A></B>(int&nbsp;inputLineIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether either intersection point is an interior point of the specified input segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isIntersection(com.vividsolutions.jts.geom.Coordinate)">isIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test whether a point is a intersection point of two line segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isProper()">isProper</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an intersection is proper.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#nonRobustComputeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">nonRobustComputeEdgeDistance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This function is non-robust, since it may compute the square of large numbers.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#setMakePrecise(com.vividsolutions.jts.geom.PrecisionModel)">setMakePrecise</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use <code>setPrecisionModel</code> instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#setPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)">setPrecisionModel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Force computed intersection to be rounded to a given precision model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DONT_INTERSECT"><!-- --></A><H3>
+DONT_INTERSECT</H3>
+<PRE>
+public static final int <B>DONT_INTERSECT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.LineIntersector.DONT_INTERSECT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DO_INTERSECT"><!-- --></A><H3>
+DO_INTERSECT</H3>
+<PRE>
+public static final int <B>DO_INTERSECT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.LineIntersector.DO_INTERSECT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="COLLINEAR"><!-- --></A><H3>
+COLLINEAR</H3>
+<PRE>
+public static final int <B>COLLINEAR</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.algorithm.LineIntersector.COLLINEAR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="result"><!-- --></A><H3>
+result</H3>
+<PRE>
+protected int <B>result</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="inputLines"><!-- --></A><H3>
+inputLines</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[][] <B>inputLines</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="intPt"><!-- --></A><H3>
+intPt</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>intPt</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="intLineIndex"><!-- --></A><H3>
+intLineIndex</H3>
+<PRE>
+protected int[][] <B>intLineIndex</B></PRE>
+<DL>
+<DD>The indexes of the endpoints of the intersection lines, in order along
+ the corresponding line
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="isProper"><!-- --></A><H3>
+isProper</H3>
+<PRE>
+protected boolean <B>isProper</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="pa"><!-- --></A><H3>
+pa</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>pa</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="pb"><!-- --></A><H3>
+pb</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>pb</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="precisionModel"><!-- --></A><H3>
+precisionModel</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A> <B>precisionModel</B></PRE>
+<DL>
+<DD>If makePrecise is true, computed intersection coordinates will be made precise
+ using Coordinate#makePrecise
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineIntersector()"><!-- --></A><H3>
+LineIntersector</H3>
+<PRE>
+public <B>LineIntersector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeEdgeDistance</H3>
+<PRE>
+public static double <B>computeEdgeDistance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Computes the "edge distance" of an intersection point p along a segment.
+ The edge distance is a metric of the point along the edge.
+ The metric used is a robust and easy to compute metric function.
+ It is <b>not</b> equivalent to the usual Euclidean metric.
+ It relies on the fact that either the x or the y ordinates of the
+ points in the edge are unique, depending on whether the edge is longer in
+ the horizontal or vertical direction.
+ <p>
+ NOTE: This function may produce incorrect distances
+  for inputs where p is not precisely on p1-p2
+ (E.g. p = (139,9) p1 = (139,10), p2 = (280,1) produces distanct 0.0, which is incorrect.
+ <p>
+ My hypothesis is that the function is safe to use for points which are the
+ result of <b>rounding</b> points which lie on the line,
+ but not safe to use for <b>truncated</b> points.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="nonRobustComputeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+nonRobustComputeEdgeDistance</H3>
+<PRE>
+public static double <B>nonRobustComputeEdgeDistance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>This function is non-robust, since it may compute the square of large numbers.
+ Currently not sure how to improve this.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setMakePrecise(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+setMakePrecise</H3>
+<PRE>
+public void <B>setMakePrecise</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use <code>setPrecisionModel</code> instead</I>
+<P>
+<DD>Force computed intersection to be rounded to a given precision model
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>precisionModel</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+setPrecisionModel</H3>
+<PRE>
+public void <B>setPrecisionModel</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</PRE>
+<DL>
+<DD>Force computed intersection to be rounded to a given precision model.
+ No getter is provided, because the precision model is not required to be specified.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>precisionModel</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersection</H3>
+<PRE>
+public abstract void <B>computeIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>Compute the intersection of a point p and the line p1-p2.
+ This function computes the boolean value of the hasIntersection test.
+ The actual value of the intersection (if there is one)
+ is equal to the value of <code>p</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCollinear()"><!-- --></A><H3>
+isCollinear</H3>
+<PRE>
+protected boolean <B>isCollinear</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersection</H3>
+<PRE>
+public void <B>computeIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p3,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p4)</PRE>
+<DL>
+<DD>Computes the intersection of the lines p1-p2 and p3-p4.
+ This function computes both the boolean value of the hasIntersection test
+ and the (approximate) value of the intersection point itself (if there is one).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersect</H3>
+<PRE>
+protected abstract int <B>computeIntersect</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+                                        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEndPoint()"><!-- --></A><H3>
+isEndPoint</H3>
+<PRE>
+protected boolean <B>isEndPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasIntersection()"><!-- --></A><H3>
+hasIntersection</H3>
+<PRE>
+public boolean <B>hasIntersection</B>()</PRE>
+<DL>
+<DD>Tests whether the input geometries intersect.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the input geometries intersect</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectionNum()"><!-- --></A><H3>
+getIntersectionNum</H3>
+<PRE>
+public int <B>getIntersectionNum</B>()</PRE>
+<DL>
+<DD>Returns the number of intersection points found.  This will be either 0, 1 or 2.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersection(int)"><!-- --></A><H3>
+getIntersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getIntersection</B>(int&nbsp;intIndex)</PRE>
+<DL>
+<DD>Returns the intIndex'th intersection point
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>intIndex</CODE> - is 0 or 1
+<DT><B>Returns:</B><DD>the intIndex'th intersection point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntLineIndex()"><!-- --></A><H3>
+computeIntLineIndex</H3>
+<PRE>
+protected void <B>computeIntLineIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIntersection(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isIntersection</H3>
+<PRE>
+public boolean <B>isIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Test whether a point is a intersection point of two line segments.
+ Note that if the intersection is a line segment, this method only tests for
+ equality with the endpoints of the intersection segment.
+ It does <b>not</b> return true if
+ the input point is internal to the intersection segment.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the input point is one of the intersection points.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInteriorIntersection()"><!-- --></A><H3>
+isInteriorIntersection</H3>
+<PRE>
+public boolean <B>isInteriorIntersection</B>()</PRE>
+<DL>
+<DD>Tests whether either intersection point is an interior point of one of the input segments.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if either intersection point is in the interior of one of the input segments</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInteriorIntersection(int)"><!-- --></A><H3>
+isInteriorIntersection</H3>
+<PRE>
+public boolean <B>isInteriorIntersection</B>(int&nbsp;inputLineIndex)</PRE>
+<DL>
+<DD>Tests whether either intersection point is an interior point of the specified input segment.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if either intersection point is in the interior of the input segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isProper()"><!-- --></A><H3>
+isProper</H3>
+<PRE>
+public boolean <B>isProper</B>()</PRE>
+<DL>
+<DD>Tests whether an intersection is proper.
+ <br>
+ The intersection between two line segments is considered proper if
+ they intersect in a single point in the interior of both segments
+ (e.g. the intersection is a single point and is not equal to any of the
+ endpoints).
+ <p>
+ The intersection between a point and a line segment is considered proper
+ if the point lies in the interior of the segment (e.g. is not equal to
+ either of the endpoints).
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the intersection is proper</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectionAlongSegment(int, int)"><!-- --></A><H3>
+getIntersectionAlongSegment</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getIntersectionAlongSegment</B>(int&nbsp;segmentIndex,
+                                              int&nbsp;intIndex)</PRE>
+<DL>
+<DD>Computes the intIndex'th intersection point in the direction of
+ a specified input line segment
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segmentIndex</CODE> - is 0 or 1<DD><CODE>intIndex</CODE> - is 0 or 1
+<DT><B>Returns:</B><DD>the intIndex'th intersection point in the direction of the specified input line segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndexAlongSegment(int, int)"><!-- --></A><H3>
+getIndexAlongSegment</H3>
+<PRE>
+public int <B>getIndexAlongSegment</B>(int&nbsp;segmentIndex,
+                                int&nbsp;intIndex)</PRE>
+<DL>
+<DD>Computes the index of the intIndex'th intersection point in the direction of
+ a specified input line segment
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segmentIndex</CODE> - is 0 or 1<DD><CODE>intIndex</CODE> - is 0 or 1
+<DT><B>Returns:</B><DD>the index of the intersection point along the segment (0 or 1)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntLineIndex(int)"><!-- --></A><H3>
+computeIntLineIndex</H3>
+<PRE>
+protected void <B>computeIntLineIndex</B>(int&nbsp;segmentIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeDistance(int, int)"><!-- --></A><H3>
+getEdgeDistance</H3>
+<PRE>
+public double <B>getEdgeDistance</B>(int&nbsp;segmentIndex,
+                              int&nbsp;intIndex)</PRE>
+<DL>
+<DD>Computes the "edge distance" of an intersection point along the specified input line segment.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segmentIndex</CODE> - is 0 or 1<DD><CODE>intIndex</CODE> - is 0 or 1
+<DT><B>Returns:</B><DD>the edge distance of the intersection point</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MCPointInRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MCPointInRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MCPointInRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,266 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+MCPointInRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.MCPointInRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MCPointInRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCPointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class MCPointInRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.MCPointInRing</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MCPointInRing</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></DL>
+
+<P>
+Implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>PointInRing</CODE></A>
+ using <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s and a <CODE>BinTree</CODE> index to
+ increase performance.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html#MCPointInRing(com.vividsolutions.jts.geom.LinearRing)">MCPointInRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MCPointInRing(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+MCPointInRing</H3>
+<PRE>
+public <B>MCPointInRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInside(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isInside</H3>
+<PRE>
+public boolean <B>isInside</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCPointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MinimumDiameter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MinimumDiameter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/MinimumDiameter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,365 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+MinimumDiameter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.MinimumDiameter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MinimumDiameter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MinimumDiameter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class MinimumDiameter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.MinimumDiameter</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MinimumDiameter</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the minimum diameter of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ The minimum diameter is defined to be the
+ width of the smallest band that
+ contains the geometry,
+ where a band is a strip of the plane defined
+ by two parallel lines.
+ This can be thought of as the smallest hole that the geometry can be
+ moved through, with a single rotation.
+ <p>
+ The first step in the algorithm is computing the convex hull of the Geometry.
+ If the input Geometry is known to be convex, a hint can be supplied to
+ avoid this computation.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><CODE>ConvexHull</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html#MinimumDiameter(com.vividsolutions.jts.geom.Geometry)">MinimumDiameter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute a minimum diameter for a giver <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html#MinimumDiameter(com.vividsolutions.jts.geom.Geometry, boolean)">MinimumDiameter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom,
+                boolean&nbsp;isConvex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute a minimum diameter for a giver <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+ with a hint if
+ the Geometry is convex
+ (e.g.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html#getDiameter()">getDiameter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> which is a minimum diameter</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html#getLength()">getLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the length of the minimum diameter of the input Geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html#getSupportingSegment()">getSupportingSegment</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the segment forming the base of the minimum diameter</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html#getWidthCoordinate()">getWidthCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> forming one end of the minimum diameter</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MinimumDiameter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+MinimumDiameter</H3>
+<PRE>
+public <B>MinimumDiameter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</PRE>
+<DL>
+<DD>Compute a minimum diameter for a giver <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+</DL>
+<HR>
+
+<A NAME="MinimumDiameter(com.vividsolutions.jts.geom.Geometry, boolean)"><!-- --></A><H3>
+MinimumDiameter</H3>
+<PRE>
+public <B>MinimumDiameter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom,
+                       boolean&nbsp;isConvex)</PRE>
+<DL>
+<DD>Compute a minimum diameter for a giver <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+ with a hint if
+ the Geometry is convex
+ (e.g. a convex Polygon or LinearRing,
+ or a two-point LineString, or a Point).
+<P>
+<DT><B>Parameters:</B><DD><CODE>isConvex</CODE> - <code>true</code> if the input geometry is convex</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLength()"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>()</PRE>
+<DL>
+<DD>Gets the length of the minimum diameter of the input Geometry
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the length of the minimum diameter</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getWidthCoordinate()"><!-- --></A><H3>
+getWidthCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getWidthCoordinate</B>()</PRE>
+<DL>
+<DD>Gets the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> forming one end of the minimum diameter
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a coordinate forming one end of the minimum diameter</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSupportingSegment()"><!-- --></A><H3>
+getSupportingSegment</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getSupportingSegment</B>()</PRE>
+<DL>
+<DD>Gets the segment forming the base of the minimum diameter
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the segment forming the base of the minimum diameter</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDiameter()"><!-- --></A><H3>
+getDiameter</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getDiameter</B>()</PRE>
+<DL>
+<DD>Gets a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> which is a minimum diameter
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> which is a minimum diameter</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MinimumDiameter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,353 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+NonRobustCGAlgorithms
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.NonRobustCGAlgorithms class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NonRobustCGAlgorithms";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NonRobustCGAlgorithms.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class NonRobustCGAlgorithms</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">com.vividsolutions.jts.algorithm.CGAlgorithms</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.NonRobustCGAlgorithms</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>NonRobustCGAlgorithms</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></DL>
+
+<P>
+Non-robust versions of various fundamental Computational Geometric algorithms,
+ <b>FOR TESTING PURPOSES ONLY!</b>.
+ The non-robustness is due to rounding error in floating point computation.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#CLOCKWISE">CLOCKWISE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#COLLINEAR">COLLINEAR</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#COUNTERCLOCKWISE">COUNTERCLOCKWISE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#LEFT">LEFT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#RIGHT">RIGHT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#STRAIGHT">STRAIGHT</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#NonRobustCGAlgorithms()">NonRobustCGAlgorithms</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeOrientation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the orientation of a point q to the directed line segment p1-p2.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#isCCW(com.vividsolutions.jts.geom.Coordinate[])">isCCW</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes whether a ring defined by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isPointInRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes whether a ring defined by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distanceLineLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distanceLineLine</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distancePointLine</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLinePerpendicular(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distancePointLinePerpendicular</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isOnLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isOnLine</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#length(com.vividsolutions.jts.geom.CoordinateSequence)">length</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#orientationIndex(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">orientationIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#signedArea(com.vividsolutions.jts.geom.Coordinate[])">signedArea</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NonRobustCGAlgorithms()"><!-- --></A><H3>
+NonRobustCGAlgorithms</H3>
+<PRE>
+public <B>NonRobustCGAlgorithms</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+isPointInRing</H3>
+<PRE>
+public static boolean <B>isPointInRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</PRE>
+<DL>
+<DD>Computes whether a ring defined by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.
+ <p>
+ This will handle coordinate lists which contain repeated points.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ring</CODE> - an array of coordinates forming a ring
+<DT><B>Returns:</B><DD><code>true</code> if the ring is oriented counter-clockwise.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if the ring is degenerate (does not contain 3 different points)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCCW(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+isCCW</H3>
+<PRE>
+public static boolean <B>isCCW</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;ring)</PRE>
+<DL>
+<DD>Computes whether a ring defined by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.
+ <p>
+ This will handle coordinate lists which contain repeated points.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ring</CODE> - an array of coordinates forming a ring
+<DT><B>Returns:</B><DD><code>true</code> if the ring is oriented counter-clockwise.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if the ring is degenerate (does not contain 3 different points)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeOrientation</H3>
+<PRE>
+public static int <B>computeOrientation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></CODE></B></DD>
+<DD>Computes the orientation of a point q to the directed line segment p1-p2.
+ The orientation of a point relative to a directed line segment indicates
+ which way you turn to get to q after travelling from p1 to p2.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NonRobustCGAlgorithms.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,348 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+NonRobustLineIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.NonRobustLineIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NonRobustLineIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NonRobustLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class NonRobustLineIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">com.vividsolutions.jts.algorithm.LineIntersector</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.NonRobustLineIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>NonRobustLineIntersector</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></DL>
+
+<P>
+A non-robust version of .
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#COLLINEAR">COLLINEAR</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#DO_INTERSECT">DO_INTERSECT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#DONT_INTERSECT">DONT_INTERSECT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#inputLines">inputLines</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#intLineIndex">intLineIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#intPt">intPt</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isProper">isProper</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#pa">pa</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#pb">pb</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#precisionModel">precisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#result">result</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#NonRobustLineIntersector()">NonRobustLineIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersect</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p3,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p4)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the intersection of a point p and the line p1-p2.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#isSameSignAndNonZero(double, double)">isSameSignAndNonZero</A></B>(double&nbsp;a,
+                     double&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeEdgeDistance</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex()">computeIntLineIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex(int)">computeIntLineIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getEdgeDistance(int, int)">getEdgeDistance</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIndexAlongSegment(int, int)">getIndexAlongSegment</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersection(int)">getIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionAlongSegment(int, int)">getIntersectionAlongSegment</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionNum()">getIntersectionNum</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#hasIntersection()">hasIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isCollinear()">isCollinear</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isEndPoint()">isEndPoint</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection()">isInteriorIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection(int)">isInteriorIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isIntersection(com.vividsolutions.jts.geom.Coordinate)">isIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isProper()">isProper</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#nonRobustComputeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">nonRobustComputeEdgeDistance</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#setMakePrecise(com.vividsolutions.jts.geom.PrecisionModel)">setMakePrecise</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#setPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)">setPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#toString()">toString</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NonRobustLineIntersector()"><!-- --></A><H3>
+NonRobustLineIntersector</H3>
+<PRE>
+public <B>NonRobustLineIntersector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isSameSignAndNonZero(double, double)"><!-- --></A><H3>
+isSameSignAndNonZero</H3>
+<PRE>
+public static boolean <B>isSameSignAndNonZero</B>(double&nbsp;a,
+                                           double&nbsp;b)</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if both numbers are positive or if both numbers are negative.
+ Returns false if both numbers are zero.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersection</H3>
+<PRE>
+public void <B>computeIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></B></DD>
+<DD>Compute the intersection of a point p and the line p1-p2.
+ This function computes the boolean value of the hasIntersection test.
+ The actual value of the intersection (if there is one)
+ is equal to the value of <code>p</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersect</H3>
+<PRE>
+protected int <B>computeIntersect</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p3,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p4)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersect</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NonRobustLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NotRepresentableException.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NotRepresentableException.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/NotRepresentableException.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,242 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+NotRepresentableException
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.NotRepresentableException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NotRepresentableException";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NotRepresentableException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class NotRepresentableException</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Throwable
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Exception
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.NotRepresentableException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>NotRepresentableException</B><DT>extends java.lang.Exception</DL>
+
+<P>
+Indicates that a <A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><CODE>HCoordinate</CODE></A> has been computed which is
+ not representable on the Cartesian plane.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><CODE>HCoordinate</CODE></A>, 
+<A HREF="../../../../serialized-form.html#com.vividsolutions.jts.algorithm.NotRepresentableException">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html#NotRepresentableException()">NotRepresentableException</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Throwable</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NotRepresentableException()"><!-- --></A><H3>
+NotRepresentableException</H3>
+<PRE>
+public <B>NotRepresentableException</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NotRepresentableException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointInRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointInRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointInRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,222 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+PointInRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.PointInRing interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PointInRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Interface PointInRing</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm">MCPointInRing</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInRing</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SIRtreePointInRing</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>PointInRing</B></DL>
+
+<P>
+An interface for classes which test whether a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> lies inside
+ a ring.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInside(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isInside</H3>
+<PRE>
+public boolean <B>isInside</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointLocator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointLocator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/PointLocator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,318 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+PointLocator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.PointLocator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PointLocator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointLocator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class PointLocator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.PointLocator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>PointLocator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the topological relationship (<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A>)
+ of a single point to a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ The algorithm obeys the <i>SFS Boundary Determination Rule</i>
+ to determine whether the point lies on the boundary or not.
+ <p>
+ Notes:
+ <ul>
+ <li><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s do not enclose any area - points inside the ring are still in the EXTERIOR of the ring.
+ </ul>
+ Instances of this class are not reentrant.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html#PointLocator()">PointLocator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html#PointLocator(com.vividsolutions.jts.algorithm.BoundaryNodeRule)">PointLocator</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)">intersects</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convenience method to test a point for intersection with
+ a Geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html#locate(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)">locate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the topological relationship (<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A>) of a single point
+ to a Geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PointLocator()"><!-- --></A><H3>
+PointLocator</H3>
+<PRE>
+public <B>PointLocator</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="PointLocator(com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+PointLocator</H3>
+<PRE>
+public <B>PointLocator</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryRule)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Convenience method to test a point for intersection with
+ a Geometry
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p</CODE> - the coordinate to test<DD><CODE>geom</CODE> - the Geometry to test
+<DT><B>Returns:</B><DD><code>true</code> if the point is in the interior or boundary of the Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="locate(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+locate</H3>
+<PRE>
+public int <B>locate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Computes the topological relationship (<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A>) of a single point
+ to a Geometry.
+ It handles both single-element
+ and multi-element Geometries.
+ The algorithm for multi-part Geometries
+ takes into account the SFS Boundary Determination Rule.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the <A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A> of the point relative to the input Geometry</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointLocator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,253 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+RobustCGAlgorithms
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.RobustCGAlgorithms class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RobustCGAlgorithms";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RobustCGAlgorithms.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class RobustCGAlgorithms</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">com.vividsolutions.jts.algorithm.CGAlgorithms</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.RobustCGAlgorithms</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RobustCGAlgorithms</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></DL>
+
+<P>
+Stub version of RobustCGAlgorithms for backwards compatibility.
+ Will be deprecated in next release - use CGAlgorithms instead.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#CLOCKWISE">CLOCKWISE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#COLLINEAR">COLLINEAR</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#COUNTERCLOCKWISE">COUNTERCLOCKWISE</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#LEFT">LEFT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#RIGHT">RIGHT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#STRAIGHT">STRAIGHT</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html#RobustCGAlgorithms()">RobustCGAlgorithms</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="methods_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeOrientation</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distanceLineLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distanceLineLine</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distancePointLine</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLinePerpendicular(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">distancePointLinePerpendicular</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isCCW(com.vividsolutions.jts.geom.Coordinate[])">isCCW</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isOnLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isOnLine</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isPointInRing</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#length(com.vividsolutions.jts.geom.CoordinateSequence)">length</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#orientationIndex(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">orientationIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#signedArea(com.vividsolutions.jts.geom.Coordinate[])">signedArea</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RobustCGAlgorithms()"><!-- --></A><H3>
+RobustCGAlgorithms</H3>
+<PRE>
+public <B>RobustCGAlgorithms</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RobustCGAlgorithms.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.vividsolutions.jts.algorithm.CGAlgorithms">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustDeterminant.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustDeterminant.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustDeterminant.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+RobustDeterminant
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.RobustDeterminant class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RobustDeterminant";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RobustDeterminant.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class RobustDeterminant</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.RobustDeterminant</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RobustDeterminant</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements an algorithm to compute the
+ sign of a 2x2 determinant for double precision values robustly.
+ It is a direct translation of code developed by Olivier Devillers.
+ <p>
+ The original code carries the following copyright notice:
+
+ <pre>
+
+ Author : Olivier Devillers
+ Olivier.Devillers at sophia.inria.fr
+ http:/www.inria.fr:/prisme/personnel/devillers/anglais/determinant.html
+
+
+
+              Copyright (c) 1995  by  INRIA Prisme Project
+                  BP 93 06902 Sophia Antipolis Cedex, France.
+                           All rights reserved
+
+ </pre>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html#RobustDeterminant()">RobustDeterminant</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html#signOfDet2x2(double, double, double, double)">signOfDet2x2</A></B>(double&nbsp;x1,
+             double&nbsp;y1,
+             double&nbsp;x2,
+             double&nbsp;y2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RobustDeterminant()"><!-- --></A><H3>
+RobustDeterminant</H3>
+<PRE>
+public <B>RobustDeterminant</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="signOfDet2x2(double, double, double, double)"><!-- --></A><H3>
+signOfDet2x2</H3>
+<PRE>
+public static int <B>signOfDet2x2</B>(double&nbsp;x1,
+                               double&nbsp;y1,
+                               double&nbsp;x2,
+                               double&nbsp;y2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RobustDeterminant.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustLineIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustLineIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/RobustLineIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,325 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+RobustLineIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.RobustLineIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RobustLineIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RobustLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class RobustLineIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">com.vividsolutions.jts.algorithm.LineIntersector</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.RobustLineIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RobustLineIntersector</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></DL>
+
+<P>
+A robust version of .
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><CODE>RobustDeterminant</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#COLLINEAR">COLLINEAR</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#DO_INTERSECT">DO_INTERSECT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#DONT_INTERSECT">DONT_INTERSECT</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#inputLines">inputLines</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#intLineIndex">intLineIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#intPt">intPt</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isProper">isProper</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#pa">pa</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#pb">pb</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#precisionModel">precisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#result">result</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html#RobustLineIntersector()">RobustLineIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersect</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the intersection of a point p and the line p1-p2.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeEdgeDistance</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex()">computeIntLineIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex(int)">computeIntLineIndex</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getEdgeDistance(int, int)">getEdgeDistance</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIndexAlongSegment(int, int)">getIndexAlongSegment</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersection(int)">getIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionAlongSegment(int, int)">getIntersectionAlongSegment</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionNum()">getIntersectionNum</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#hasIntersection()">hasIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isCollinear()">isCollinear</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isEndPoint()">isEndPoint</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection()">isInteriorIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection(int)">isInteriorIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isIntersection(com.vividsolutions.jts.geom.Coordinate)">isIntersection</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#isProper()">isProper</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#nonRobustComputeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">nonRobustComputeEdgeDistance</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#setMakePrecise(com.vividsolutions.jts.geom.PrecisionModel)">setMakePrecise</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#setPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)">setPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#toString()">toString</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RobustLineIntersector()"><!-- --></A><H3>
+RobustLineIntersector</H3>
+<PRE>
+public <B>RobustLineIntersector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersection</H3>
+<PRE>
+public void <B>computeIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></B></DD>
+<DD>Compute the intersection of a point p and the line p1-p2.
+ This function computes the boolean value of the hasIntersection test.
+ The actual value of the intersection (if there is one)
+ is equal to the value of <code>p</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersection</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+computeIntersect</H3>
+<PRE>
+protected int <B>computeIntersect</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+                               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">computeIntersect</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RobustLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.algorithm.LineIntersector">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SIRtreePointInRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SIRtreePointInRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SIRtreePointInRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,266 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+SIRtreePointInRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.SIRtreePointInRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SIRtreePointInRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SIRtreePointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class SIRtreePointInRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.SIRtreePointInRing</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SIRtreePointInRing</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></DL>
+
+<P>
+Implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>PointInRing</CODE></A>
+ using a <A HREF="../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>SIRtree</CODE></A> index to
+ increase performance.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html#SIRtreePointInRing(com.vividsolutions.jts.geom.LinearRing)">SIRtreePointInRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SIRtreePointInRing(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+SIRtreePointInRing</H3>
+<PRE>
+public <B>SIRtreePointInRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInside(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isInside</H3>
+<PRE>
+public boolean <B>isInside</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SIRtreePointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,288 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+SimplePointInAreaLocator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.SimplePointInAreaLocator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimplePointInAreaLocator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimplePointInAreaLocator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class SimplePointInAreaLocator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.SimplePointInAreaLocator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SimplePointInAreaLocator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes whether a point
+ lies in the interior of an area <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ The algorithm used is only guaranteed to return correct results
+ for points which are <b>not</b> on the boundary of the Geometry.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html#SimplePointInAreaLocator()">SimplePointInAreaLocator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html#containsPointInPolygon(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Polygon)">containsPointInPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;poly)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html#locate(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)">locate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;locate is the main location function.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimplePointInAreaLocator()"><!-- --></A><H3>
+SimplePointInAreaLocator</H3>
+<PRE>
+public <B>SimplePointInAreaLocator</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="locate(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+locate</H3>
+<PRE>
+public static int <B>locate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                         <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>locate is the main location function.  It handles both single-element
+ and multi-element Geometries.  The algorithm for multi-element Geometries
+ is more complex, since it has to take into account the boundaryDetermination rule
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="containsPointInPolygon(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Polygon)"><!-- --></A><H3>
+containsPointInPolygon</H3>
+<PRE>
+public static boolean <B>containsPointInPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p,
+                                             <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;poly)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimplePointInAreaLocator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/SimplePointInRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+SimplePointInRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm.SimplePointInRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimplePointInRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimplePointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.algorithm</FONT>
+<BR>
+Class SimplePointInRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.algorithm.SimplePointInRing</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SimplePointInRing</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></DL>
+
+<P>
+Tests whether a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> lies inside
+ a ring, using a linear-time algorithm.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html#SimplePointInRing(com.vividsolutions.jts.geom.LinearRing)">SimplePointInRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimplePointInRing(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+SimplePointInRing</H3>
+<PRE>
+public <B>SimplePointInRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInside(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isInside</H3>
+<PRE>
+public boolean <B>isInside</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)">isInside</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimplePointInRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.algorithm
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/algorithm/package-summary.html" target="classFrame">com.vividsolutions.jts.algorithm</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm" target="classFrame"><I>BoundaryNodeRule</I></A>
+<BR>
+<A HREF="PointInRing.html" title="interface in com.vividsolutions.jts.algorithm" target="classFrame"><I>PointInRing</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Angle.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">Angle</A>
+<BR>
+<A HREF="BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.EndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.Mod2BoundaryNodeRule</A>
+<BR>
+<A HREF="BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A>
+<BR>
+<A HREF="CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentralEndpointIntersector</A>
+<BR>
+<A HREF="CentroidArea.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentroidArea</A>
+<BR>
+<A HREF="CentroidLine.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentroidLine</A>
+<BR>
+<A HREF="CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CentroidPoint</A>
+<BR>
+<A HREF="CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">CGAlgorithms</A>
+<BR>
+<A HREF="ConvexHull.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">ConvexHull</A>
+<BR>
+<A HREF="HCoordinate.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">HCoordinate</A>
+<BR>
+<A HREF="InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">InteriorPointArea</A>
+<BR>
+<A HREF="InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">InteriorPointLine</A>
+<BR>
+<A HREF="InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">InteriorPointPoint</A>
+<BR>
+<A HREF="LineIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">LineIntersector</A>
+<BR>
+<A HREF="MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">MCPointInRing</A>
+<BR>
+<A HREF="MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">MinimumDiameter</A>
+<BR>
+<A HREF="NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">NonRobustCGAlgorithms</A>
+<BR>
+<A HREF="NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">NonRobustLineIntersector</A>
+<BR>
+<A HREF="PointLocator.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">PointLocator</A>
+<BR>
+<A HREF="RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">RobustCGAlgorithms</A>
+<BR>
+<A HREF="RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">RobustDeterminant</A>
+<BR>
+<A HREF="RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">RobustLineIntersector</A>
+<BR>
+<A HREF="SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">SimplePointInAreaLocator</A>
+<BR>
+<A HREF="SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">SimplePointInRing</A>
+<BR>
+<A HREF="SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">SIRtreePointInRing</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm" target="classFrame">NotRepresentableException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,357 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.algorithm
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.algorithm package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.algorithm";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.algorithm
+</H2>
+Contains classes and interfaces implementing fundamental computational geometry algorithms.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></B></TD>
+<TD>An interface for rules which determine whether node points
+ which are in boundaries of lineal geometry components
+ are in the boundary of the parent geometry collection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A></B></TD>
+<TD>An interface for classes which test whether a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> lies inside
+ a ring.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A></B></TD>
+<TD>Utility functions for working with angles.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which specifies that any points which are endpoints
+ of lineal components are in the boundary of the
+ parent geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> specifies that points are in the
+ boundary of a lineal geometry iff
+ the point lies on the boundary of an odd number
+ of components.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency of exactly 1 are on the boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency greater than 1 are on the boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm">CentralEndpointIntersector</A></B></TD>
+<TD>Computes an approximate intersection of two line segments
+ by taking the most central of the endpoints of the segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A></B></TD>
+<TD>Computes the centroid of an area geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A></B></TD>
+<TD>Computes the centroid of a linear geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A></B></TD>
+<TD>Computes the centroid of a point geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></B></TD>
+<TD>Specifies and implements various fundamental Computational Geometric algorithms.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A></B></TD>
+<TD>Computes the convex hull of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A></B></TD>
+<TD>Represents a homogeneous coordinate in a 2-D coordinate space.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A></B></TD>
+<TD>Computes a point in the interior of an area geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointLine</A></B></TD>
+<TD>Computes a point in the interior of an linear geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointPoint</A></B></TD>
+<TD>Computes a point in the interior of an point geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></B></TD>
+<TD>A LineIntersector is an algorithm that can both test whether
+ two line segments intersect and compute the intersection point
+ if they do.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm">MCPointInRing</A></B></TD>
+<TD>Implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>PointInRing</CODE></A>
+ using <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s and a <CODE>BinTree</CODE> index to
+ increase performance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A></B></TD>
+<TD>Computes the minimum diameter of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A></B></TD>
+<TD>Non-robust versions of various fundamental Computational Geometric algorithms,
+ <b>FOR TESTING PURPOSES ONLY!</b>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A></B></TD>
+<TD>A non-robust version of .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A></B></TD>
+<TD>Computes the topological relationship (<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A>)
+ of a single point to a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">RobustCGAlgorithms</A></B></TD>
+<TD>Stub version of RobustCGAlgorithms for backwards compatibility.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm">RobustDeterminant</A></B></TD>
+<TD>Implements an algorithm to compute the
+ sign of a 2x2 determinant for double precision values robustly.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A></B></TD>
+<TD>A robust version of .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInAreaLocator</A></B></TD>
+<TD>Computes whether a point
+ lies in the interior of an area <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInRing</A></B></TD>
+<TD>Tests whether a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> lies inside
+ a ring, using a linear-time algorithm.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SIRtreePointInRing</A></B></TD>
+<TD>Implements <A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>PointInRing</CODE></A>
+ using a <A HREF="../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>SIRtree</CODE></A> index to
+ increase performance.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A></B></TD>
+<TD>Indicates that a <A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><CODE>HCoordinate</CODE></A> has been computed which is
+ not representable on the Cartesian plane.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.algorithm Description
+</H2>
+
+<P>
+Contains classes and interfaces implementing fundamental computational geometry algorithms.
+
+<H3>Robustness</H3>
+
+Geometrical algorithms involve a combination of combinatorial and numerical computation.  As with
+all numerical computation using finite-precision numbers, the algorithms chosen are susceptible to
+problems of robustness.  A robustness problem occurs when a numerical calculation produces an
+incorrect answer for some inputs due to round-off errors.  Robustness problems are especially
+serious in geometric computation, since they can result in errors during topology building.
+<P>
+There are many approaches to dealing with the problem of robustness in geometrical computation.
+Not surprisingly, most robust algorithms are substantially more complex and less performant than
+the non-robust versions.  Fortunately, JTS is sensitive to robustness problems in only a few key
+functions (such as line intersection and the point-in-polygon test).  There are efficient robust
+algorithms available for these functions, and these algorithms are implemented in JTS.
+
+<H3>Computational Performance</H3>
+
+Runtime performance is an important consideration for a production-quality implementation of
+geometric algorithms.  The most computationally intensive algorithm used in JTS is intersection
+detection.  JTS methods need to determine both all intersection between the line segments in a
+single Geometry (self-intersection) and all intersections between the line segments of two different
+Geometries.
+<P>
+The obvious naive algorithm for intersection detection (comparing every segment with every other)
+has unacceptably slow performance.  There is a large literature of faster algorithms for intersection
+detection.  Unfortunately, many of them involve substantial code complexity.  JTS tries to balance code
+simplicity with performance gains.  It uses some simple techniques to produce substantial performance
+gains for common types of input data.
+
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/algorithm/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.algorithm Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.algorithm Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.algorithm
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm"><B>Angle</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.EndPointBoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.Mod2BoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>CentralEndpointIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidArea</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidPoint</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>CGAlgorithms</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NonRobustCGAlgorithms</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustCGAlgorithms</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>ConvexHull</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>HCoordinate</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointArea</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointPoint</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>LineIntersector</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NonRobustLineIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustLineIntersector</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>MCPointInRing</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>MinimumDiameter</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PointLocator</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustDeterminant</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>SimplePointInAreaLocator</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>SimplePointInRing</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>SIRtreePointInRing</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>)
+<LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm"><B>NotRepresentableException</B></A></UL>
+</UL>
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule</B></A><LI TYPE="circle">interface com.vividsolutions.jts.algorithm.<A HREF="../../../../com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><B>PointInRing</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,329 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Coordinate.DimensionalComparator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Coordinate.DimensionalComparator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Coordinate.DimensionalComparator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Coordinate.DimensionalComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Coordinate.DimensionalComparator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Coordinate.DimensionalComparator</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.util.Comparator</DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>Coordinate.DimensionalComparator</B><DT>extends java.lang.Object<DT>implements java.util.Comparator</DL>
+
+<P>
+Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, allowing for either a 2-dimensional
+ or 3-dimensional comparison, and handling NaN values correctly.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#Coordinate.DimensionalComparator()">Coordinate.DimensionalComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a comparator for 2 dimensional coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#Coordinate.DimensionalComparator(int)">Coordinate.DimensionalComparator</A></B>(int&nbsp;dimensionsToTest)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a comparator for 2 or 3 dimensional coordinates, depending
+ on the value provided.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#compare(double, double)">compare</A></B>(double&nbsp;a,
+        double&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compare two <code>double</code>s, allowing for NaN values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#compare(java.lang.Object, java.lang.Object)">compare</A></B>(java.lang.Object&nbsp;o1,
+        java.lang.Object&nbsp;o2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s along to the number of
+ dimensions specified.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.Comparator"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from interface java.util.Comparator</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Coordinate.DimensionalComparator()"><!-- --></A><H3>
+Coordinate.DimensionalComparator</H3>
+<PRE>
+public <B>Coordinate.DimensionalComparator</B>()</PRE>
+<DL>
+<DD>Creates a comparator for 2 dimensional coordinates.
+<P>
+</DL>
+<HR>
+
+<A NAME="Coordinate.DimensionalComparator(int)"><!-- --></A><H3>
+Coordinate.DimensionalComparator</H3>
+<PRE>
+public <B>Coordinate.DimensionalComparator</B>(int&nbsp;dimensionsToTest)</PRE>
+<DL>
+<DD>Creates a comparator for 2 or 3 dimensional coordinates, depending
+ on the value provided.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="compare(double, double)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public static int <B>compare</B>(double&nbsp;a,
+                          double&nbsp;b)</PRE>
+<DL>
+<DD>Compare two <code>double</code>s, allowing for NaN values.
+ NaN is treated as being less than any valid number.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a <code>double</code><DD><CODE>b</CODE> - a <code>double</code>
+<DT><B>Returns:</B><DD>-1, 0, or 1 depending on whether a is less than, equal to or greater than b</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compare(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public int <B>compare</B>(java.lang.Object&nbsp;o1,
+                   java.lang.Object&nbsp;o2)</PRE>
+<DL>
+<DD>Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s along to the number of
+ dimensions specified.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compare</CODE> in interface <CODE>java.util.Comparator</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o1</CODE> - a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A><DD><CODE>o2</CODE> - a {link Coordinate}
+<DT><B>Returns:</B><DD>-1, 0, or 1 depending on whether o1 is less than,
+ equal to, or greater than 02</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Coordinate.DimensionalComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Coordinate.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,667 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Coordinate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Coordinate class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Coordinate";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Coordinate.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Coordinate</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Coordinate</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Coordinate</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable, java.lang.Cloneable, java.io.Serializable</DL>
+
+<P>
+A lightweight class used to store coordinates
+ on the 2-dimensional Cartesian plane.
+  It is distinct from <code>Point</code>, which is a subclass of <code>Geometry</code>
+  . Unlike objects of type <code>Point</code> (which contain additional
+  information such as an envelope, a precision model, and spatial reference
+  system information), a <code>Coordinate</code> only contains ordinate values
+  and accessor methods. <P>
+
+  <code>Coordinate</code>s are two-dimensional points, with an additional
+  z-ordinate. JTS does not support any operations on the z-ordinate except
+  the basic accessor functions. Constructed coordinates will have a
+  z-ordinate of <code>NaN</code>.  The standard comparison functions will ignore
+  the z-ordinate.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.Coordinate">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, allowing for either a 2-dimensional
+ or 3-dimensional comparison, and handling NaN values correctly.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#x">x</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The x-coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#y">y</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The y-coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#z">z</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The z-coordinate.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#Coordinate()">Coordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>Coordinate</code> at (0,0,NaN).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#Coordinate(com.vividsolutions.jts.geom.Coordinate)">Coordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>Coordinate</code> having the same (x,y,z) values as
+  <code>other</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#Coordinate(double, double)">Coordinate</A></B>(double&nbsp;x,
+           double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>Coordinate</code> at (x,y,NaN).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#Coordinate(double, double, double)">Coordinate</A></B>(double&nbsp;x,
+           double&nbsp;y,
+           double&nbsp;z)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>Coordinate</code> at (x,y,z).</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> with the specified <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#distance(com.vividsolutions.jts.geom.Coordinate)">distance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if <code>other</code> has the same values for
+  the x and y ordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#equals2D(com.vividsolutions.jts.geom.Coordinate)">equals2D</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the planar projections of the two <code>Coordinate</code>s
+  are equal.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#equals3D(com.vividsolutions.jts.geom.Coordinate)">equals3D</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if <code>other</code> has the same values for x,
+  y and z.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#hashCode()">hashCode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#hashCode(double)">hashCode</A></B>(double&nbsp;x)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a hash code for a double value, using the algorithm from
+ Joshua Bloch's book <i>Effective Java"</i></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#setCoordinate(com.vividsolutions.jts.geom.Coordinate)">setCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this <code>Coordinate</code>s (x,y,z) values to that of <code>other</code>
+  .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <code>String</code> of the form <I>(x,y,z)</I> .</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>finalize, getClass, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="x"><!-- --></A><H3>
+x</H3>
+<PRE>
+public double <B>x</B></PRE>
+<DL>
+<DD>The x-coordinate.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="y"><!-- --></A><H3>
+y</H3>
+<PRE>
+public double <B>y</B></PRE>
+<DL>
+<DD>The y-coordinate.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="z"><!-- --></A><H3>
+z</H3>
+<PRE>
+public double <B>z</B></PRE>
+<DL>
+<DD>The z-coordinate.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Coordinate(double, double, double)"><!-- --></A><H3>
+Coordinate</H3>
+<PRE>
+public <B>Coordinate</B>(double&nbsp;x,
+                  double&nbsp;y,
+                  double&nbsp;z)</PRE>
+<DL>
+<DD>Constructs a <code>Coordinate</code> at (x,y,z).
+<P>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-value<DD><CODE>y</CODE> - the y-value<DD><CODE>z</CODE> - the z-value</DL>
+<HR>
+
+<A NAME="Coordinate()"><!-- --></A><H3>
+Coordinate</H3>
+<PRE>
+public <B>Coordinate</B>()</PRE>
+<DL>
+<DD>Constructs a <code>Coordinate</code> at (0,0,NaN).
+<P>
+</DL>
+<HR>
+
+<A NAME="Coordinate(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+Coordinate</H3>
+<PRE>
+public <B>Coordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Constructs a <code>Coordinate</code> having the same (x,y,z) values as
+  <code>other</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - the <code>Coordinate</code> to copy.</DL>
+<HR>
+
+<A NAME="Coordinate(double, double)"><!-- --></A><H3>
+Coordinate</H3>
+<PRE>
+public <B>Coordinate</B>(double&nbsp;x,
+                  double&nbsp;y)</PRE>
+<DL>
+<DD>Constructs a <code>Coordinate</code> at (x,y,NaN).
+<P>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-value<DD><CODE>y</CODE> - the y-value</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setCoordinate(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+setCoordinate</H3>
+<PRE>
+public void <B>setCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;other)</PRE>
+<DL>
+<DD>Sets this <code>Coordinate</code>s (x,y,z) values to that of <code>other</code>
+  .
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Coordinate</code> to copy</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals2D(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+equals2D</H3>
+<PRE>
+public boolean <B>equals2D</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns whether the planar projections of the two <code>Coordinate</code>s
+  are equal.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - a <code>Coordinate</code> with which to do the 2D comparison.
+<DT><B>Returns:</B><DD><code>true</code> if the x- and y-coordinates are equal; the
+      z-coordinates do not have to be equal.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;other)</PRE>
+<DL>
+<DD>Returns <code>true</code> if <code>other</code> has the same values for
+  the x and y ordinates.
+  Since Coordinates are 2.5D, this routine ignores the z value when making the comparison.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - a <code>Coordinate</code> with which to do the comparison.
+<DT><B>Returns:</B><DD><code>true</code> if <code>other</code> is a <code>Coordinate</code>
+      with the same values for the x and y ordinates.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Compares this <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> with the specified <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for order.
+  This method ignores the z value when making the comparison.
+  Returns:
+  <UL>
+    <LI> -1 : this.x < other.x || ((this.x == other.x) && (this.y <
+    other.y))
+    <LI> 0 : this.x == other.x && this.y = other.y
+    <LI> 1 : this.x > other.x || ((this.x == other.x) && (this.y > other.y))
+
+  </UL>
+  Note: This method assumes that ordinate values
+ are valid numbers.  NaN values are not handled correctly.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - the <code>Coordinate</code> with which this <code>Coordinate</code>
+      is being compared
+<DT><B>Returns:</B><DD>-1, zero, or 1 as this <code>Coordinate</code>
+      is less than, equal to, or greater than the specified <code>Coordinate</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals3D(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+equals3D</H3>
+<PRE>
+public boolean <B>equals3D</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns <code>true</code> if <code>other</code> has the same values for x,
+  y and z.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - a <code>Coordinate</code> with which to do the 3D comparison.
+<DT><B>Returns:</B><DD><code>true</code> if <code>other</code> is a <code>Coordinate</code>
+      with the same values for x, y and z.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Returns a <code>String</code> of the form <I>(x,y,z)</I> .
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <code>String</code> of the form <I>(x,y,z)</I></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distance(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public double <B>distance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hashCode()"><!-- --></A><H3>
+hashCode</H3>
+<PRE>
+public int <B>hashCode</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hashCode(double)"><!-- --></A><H3>
+hashCode</H3>
+<PRE>
+public static int <B>hashCode</B>(double&nbsp;x)</PRE>
+<DL>
+<DD>Returns a hash code for a double value, using the algorithm from
+ Joshua Bloch's book <i>Effective Java"</i>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Coordinate.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateArrays.BidirectionalComparator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateArrays.BidirectionalComparator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateArrays.BidirectionalComparator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrays.BidirectionalComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class CoordinateArrays.BidirectionalComparator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.CoordinateArrays.BidirectionalComparator</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.util.Comparator</DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>CoordinateArrays.BidirectionalComparator</B><DT>extends java.lang.Object<DT>implements java.util.Comparator</DL>
+
+<P>
+A <CODE>Comparator</CODE> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ modulo their directionality.
+ E.g. if two coordinate arrays are identical but reversed
+ they will compare as equal under this ordering.
+ If the arrays are not equal, the ordering returned
+ is the ordering in the forward direction.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html#CoordinateArrays.BidirectionalComparator()">CoordinateArrays.BidirectionalComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html#compare(java.lang.Object, java.lang.Object)">compare</A></B>(java.lang.Object&nbsp;o1,
+        java.lang.Object&nbsp;o2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html#OLDcompare(java.lang.Object, java.lang.Object)">OLDcompare</A></B>(java.lang.Object&nbsp;o1,
+           java.lang.Object&nbsp;o2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.Comparator"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from interface java.util.Comparator</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateArrays.BidirectionalComparator()"><!-- --></A><H3>
+CoordinateArrays.BidirectionalComparator</H3>
+<PRE>
+public <B>CoordinateArrays.BidirectionalComparator</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="compare(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public int <B>compare</B>(java.lang.Object&nbsp;o1,
+                   java.lang.Object&nbsp;o2)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compare</CODE> in interface <CODE>java.util.Comparator</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="OLDcompare(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+OLDcompare</H3>
+<PRE>
+public int <B>OLDcompare</B>(java.lang.Object&nbsp;o1,
+                      java.lang.Object&nbsp;o2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrays.BidirectionalComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,276 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateArrays.ForwardComparator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateArrays.ForwardComparator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateArrays.ForwardComparator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrays.ForwardComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class CoordinateArrays.ForwardComparator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.CoordinateArrays.ForwardComparator</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.util.Comparator</DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>CoordinateArrays.ForwardComparator</B><DT>extends java.lang.Object<DT>implements java.util.Comparator</DL>
+
+<P>
+A <CODE>Comparator</CODE> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html#CoordinateArrays.ForwardComparator()">CoordinateArrays.ForwardComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html#compare(java.lang.Object, java.lang.Object)">compare</A></B>(java.lang.Object&nbsp;o1,
+        java.lang.Object&nbsp;o2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.Comparator"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from interface java.util.Comparator</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateArrays.ForwardComparator()"><!-- --></A><H3>
+CoordinateArrays.ForwardComparator</H3>
+<PRE>
+public <B>CoordinateArrays.ForwardComparator</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="compare(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public int <B>compare</B>(java.lang.Object&nbsp;o1,
+                   java.lang.Object&nbsp;o2)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compare</CODE> in interface <CODE>java.util.Comparator</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrays.ForwardComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateArrays.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,640 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateArrays
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateArrays class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateArrays";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrays.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class CoordinateArrays</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.CoordinateArrays</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CoordinateArrays</B><DT>extends java.lang.Object</DL>
+
+<P>
+Useful utility functions for handling Coordinate arrays
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <CODE>Comparator</CODE> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ modulo their directionality.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.ForwardComparator</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <CODE>Comparator</CODE> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#CoordinateArrays()">CoordinateArrays</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#atLeastNCoordinatesOrNothing(int, com.vividsolutions.jts.geom.Coordinate[])">atLeastNCoordinatesOrNothing</A></B>(int&nbsp;n,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns either the given coordinate array if its length is greater than the
+ given amount, or an empty coordinate array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#compare(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])">compare</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts1,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#copyDeep(com.vividsolutions.jts.geom.Coordinate[])">copyDeep</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a deep copy of the argument {@link Coordinate) array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#equals(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])">equals</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord1,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two arrays are identical, both null, or pointwise
+ equal (as compared using Coordinate#equals)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#equals(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[], java.util.Comparator)">equals</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord1,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord2,
+       java.util.Comparator&nbsp;coordinateComparator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two arrays are identical, both null, or pointwise
+ equal, using a user-defined <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateArrays.ForwardComparator</CODE></A> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> s</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#extract(com.vividsolutions.jts.geom.Coordinate[], int, int)">extract</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+        int&nbsp;start,
+        int&nbsp;end)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts a subsequence of the input <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array
+ from indices <code>start</code> to
+ <code>end</code> (inclusive).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#hasRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])">hasRepeatedPoints</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether #equals returns true for any two consecutive Coordinates
+ in the given array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#increasingDirection(com.vividsolutions.jts.geom.Coordinate[])">increasingDirection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines which orientation of the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array
+ is (overall) increasing.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#indexOf(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">indexOf</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coordinate,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of <code>coordinate</code> in <code>coordinates</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#minCoordinate(com.vividsolutions.jts.geom.Coordinate[])">minCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum coordinate, using the usual lexicographic comparison.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#ptNotInList(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])">ptNotInList</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;testPts,
+            <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Finds a point in a list of points which is not contained in another list of points</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#removeRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])">removeRepeatedPoints</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the coordinate array argument has repeated points,
+ constructs a new array containing no repeated points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#reverse(com.vividsolutions.jts.geom.Coordinate[])">reverse</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reverses the coordinates in an array in-place.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#scroll(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate)">scroll</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;firstCoordinate)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shifts the positions of the coordinates until <code>firstCoordinate</code>
+  is first.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#toCoordinateArray(java.util.Collection)">toCoordinateArray</A></B>(java.util.Collection&nbsp;coordList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the given Collection of Coordinates into a Coordinate array.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateArrays()"><!-- --></A><H3>
+CoordinateArrays</H3>
+<PRE>
+public <B>CoordinateArrays</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ptNotInList(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+ptNotInList</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>ptNotInList</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;testPts,
+                                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Finds a point in a list of points which is not contained in another list of points
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>testPts</CODE> - the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s to test<DD><CODE>pts</CODE> - an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s to test the input points against
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> from <code>testPts</code> which is not in <code>pts</code>, '
+ or <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compare(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public static int <B>compare</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts1,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts2)</PRE>
+<DL>
+<DD>Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pts1</CODE> - <DD><CODE>pts2</CODE> - 
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="increasingDirection(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+increasingDirection</H3>
+<PRE>
+public static int <B>increasingDirection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Determines which orientation of the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array
+ is (overall) increasing.
+ In other words, determines which end of the array is "smaller"
+ (using the standard ordering on <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>).
+ Returns an integer indicating the increasing direction.
+ If the sequence is a palindrome, it is defined to be
+ oriented in a positive direction.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pts</CODE> - the array of Coordinates to test
+<DT><B>Returns:</B><DD><code>1</code> if the array is smaller at the start
+ or is a palindrome,
+ <code>-1</code> if smaller at the end</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="copyDeep(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+copyDeep</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>copyDeep</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a deep copy of the argument {@link Coordinate) array.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - an array of Coordinates
+<DT><B>Returns:</B><DD>a deep copy of the input</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toCoordinateArray(java.util.Collection)"><!-- --></A><H3>
+toCoordinateArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>toCoordinateArray</B>(java.util.Collection&nbsp;coordList)</PRE>
+<DL>
+<DD>Converts the given Collection of Coordinates into a Coordinate array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+hasRepeatedPoints</H3>
+<PRE>
+public static boolean <B>hasRepeatedPoints</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</PRE>
+<DL>
+<DD>Returns whether #equals returns true for any two consecutive Coordinates
+ in the given array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="atLeastNCoordinatesOrNothing(int, com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+atLeastNCoordinatesOrNothing</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>atLeastNCoordinatesOrNothing</B>(int&nbsp;n,
+                                                        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;c)</PRE>
+<DL>
+<DD>Returns either the given coordinate array if its length is greater than the
+ given amount, or an empty coordinate array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="removeRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+removeRepeatedPoints</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>removeRepeatedPoints</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</PRE>
+<DL>
+<DD>If the coordinate array argument has repeated points,
+ constructs a new array containing no repeated points.
+ Otherwise, returns the argument.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html#hasRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])"><CODE>hasRepeatedPoints(Coordinate[])</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reverse(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+reverse</H3>
+<PRE>
+public static void <B>reverse</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</PRE>
+<DL>
+<DD>Reverses the coordinates in an array in-place.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public static boolean <B>equals</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord1,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord2)</PRE>
+<DL>
+<DD>Returns true if the two arrays are identical, both null, or pointwise
+ equal (as compared using Coordinate#equals)
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#equals(java.lang.Object)"><CODE>Coordinate.equals(Object)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[], java.util.Comparator)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public static boolean <B>equals</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord1,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord2,
+                             java.util.Comparator&nbsp;coordinateComparator)</PRE>
+<DL>
+<DD>Returns true if the two arrays are identical, both null, or pointwise
+ equal, using a user-defined <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateArrays.ForwardComparator</CODE></A> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> s
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord1</CODE> - an array of Coordinates<DD><CODE>coord2</CODE> - an array of Coordinates<DD><CODE>coordinateComparator</CODE> - a Comparator for Coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="minCoordinate(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+minCoordinate</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>minCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Returns the minimum coordinate, using the usual lexicographic comparison.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the array to search
+<DT><B>Returns:</B><DD>the minimum coordinate in the array, found using <code>compareTo</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html#compareTo(java.lang.Object)"><CODE>Coordinate.compareTo(Object)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="scroll(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+scroll</H3>
+<PRE>
+public static void <B>scroll</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;firstCoordinate)</PRE>
+<DL>
+<DD>Shifts the positions of the coordinates until <code>firstCoordinate</code>
+  is first.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the array to rearrange<DD><CODE>firstCoordinate</CODE> - the coordinate to make first</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="indexOf(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+indexOf</H3>
+<PRE>
+public static int <B>indexOf</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coordinate,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Returns the index of <code>coordinate</code> in <code>coordinates</code>.
+  The first position is 0; the second, 1; etc.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinate</CODE> - the <code>Coordinate</code> to search for<DD><CODE>coordinates</CODE> - the array to search
+<DT><B>Returns:</B><DD>the position of <code>coordinate</code>, or -1 if it is
+      not found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="extract(com.vividsolutions.jts.geom.Coordinate[], int, int)"><!-- --></A><H3>
+extract</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>extract</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+                                   int&nbsp;start,
+                                   int&nbsp;end)</PRE>
+<DL>
+<DD>Extracts a subsequence of the input <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array
+ from indices <code>start</code> to
+ <code>end</code> (inclusive).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pts</CODE> - the input array<DD><CODE>start</CODE> - the index of the start of the subsequence to extract<DD><CODE>end</CODE> - the index of the end of the subsequence to extract
+<DT><B>Returns:</B><DD>a subsequence of the input array</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrays.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateFilter interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Interface CoordinateFilter</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A>, <A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A>, <A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>CoordinateFilter</B></DL>
+
+<P>
+<code>Geometry</code> classes support the concept of applying a
+  coordinate filter to every coordinate in the <code>Geometry</code>. A
+  coordinate filter can either record information about each coordinate or
+  change the coordinate in some way. Coordinate filters implement the
+  interface <code>CoordinateFilter</code>. (<code>CoordinateFilter</code> is
+  an example of the Gang-of-Four Visitor pattern). Coordinate filters can be
+  used to implement such things as coordinate transformations, centroid and
+  envelope computation, and many other functions.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>coord</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>Performs an operation with or on <code>coord</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - a <code>Coordinate</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateList.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateList.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateList.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,543 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateList
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateList class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateList";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.util.AbstractList">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class CoordinateList</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.util.AbstractCollection
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.util.AbstractList
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.util.ArrayList
+              <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.CoordinateList</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.util.Collection, java.util.List, java.util.RandomAccess, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>CoordinateList</B><DT>extends java.util.ArrayList</DL>
+
+<P>
+A list of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, which may
+ be set to prevent repeated coordinates from occuring in the list.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.CoordinateList">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_java.util.AbstractList"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.util.AbstractList</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>modCount</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#CoordinateList()">CoordinateList</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new list without any coordinates</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#CoordinateList(com.vividsolutions.jts.geom.Coordinate[])">CoordinateList</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The basic constructor for a CoordinateArray allows repeated points
+ (i.e produces a CoordinateList with exactly the same set of points)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#CoordinateList(com.vividsolutions.jts.geom.Coordinate[], boolean)">CoordinateList</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+               boolean&nbsp;allowRepeated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new list from an array of Coordinates,
+ allowing caller to specify if repeated points are to be removed.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#add(com.vividsolutions.jts.geom.Coordinate[], boolean)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+    boolean&nbsp;allowRepeated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add an array of coordinates</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#add(com.vividsolutions.jts.geom.Coordinate[], boolean, boolean)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+    boolean&nbsp;allowRepeated,
+    boolean&nbsp;direction)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add an array of coordinates</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#add(com.vividsolutions.jts.geom.Coordinate, boolean)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+    boolean&nbsp;allowRepeated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a coordinate</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#add(java.lang.Object, boolean)">add</A></B>(java.lang.Object&nbsp;obj,
+    boolean&nbsp;allowRepeated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a coordinate</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#addAll(java.util.Collection, boolean)">addAll</A></B>(java.util.Collection&nbsp;coll,
+       boolean&nbsp;allowRepeated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add an array of coordinates</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a deep copy of this <tt>CoordinateList</tt> instance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#closeRing()">closeRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ensure this coordList is a ring, by adding the start point if necessary</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html#toCoordinateArray()">toCoordinateArray</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Coordinates in this collection.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.ArrayList"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.util.ArrayList</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>add, add, addAll, addAll, clear, contains, ensureCapacity, get, indexOf, isEmpty, lastIndexOf, remove, removeRange, set, size, toArray, toArray, trimToSize</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.AbstractList"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.util.AbstractList</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, hashCode, iterator, listIterator, listIterator, subList</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.AbstractCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.util.AbstractCollection</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>containsAll, remove, removeAll, retainAll, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>finalize, getClass, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.List"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from interface java.util.List</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>containsAll, equals, hashCode, iterator, listIterator, listIterator, remove, removeAll, retainAll, subList</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateList()"><!-- --></A><H3>
+CoordinateList</H3>
+<PRE>
+public <B>CoordinateList</B>()</PRE>
+<DL>
+<DD>Constructs a new list without any coordinates
+<P>
+</DL>
+<HR>
+
+<A NAME="CoordinateList(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+CoordinateList</H3>
+<PRE>
+public <B>CoordinateList</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</PRE>
+<DL>
+<DD>The basic constructor for a CoordinateArray allows repeated points
+ (i.e produces a CoordinateList with exactly the same set of points)
+<P>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - the initial coordinates</DL>
+<HR>
+
+<A NAME="CoordinateList(com.vividsolutions.jts.geom.Coordinate[], boolean)"><!-- --></A><H3>
+CoordinateList</H3>
+<PRE>
+public <B>CoordinateList</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+                      boolean&nbsp;allowRepeated)</PRE>
+<DL>
+<DD>Constructs a new list from an array of Coordinates,
+ allowing caller to specify if repeated points are to be removed.
+<P>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - the array of coordinates to load into the list<DD><CODE>allowRepeated</CODE> - if <code>false</code>, repeated points are removed</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate[], boolean, boolean)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public boolean <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+                   boolean&nbsp;allowRepeated,
+                   boolean&nbsp;direction)</PRE>
+<DL>
+<DD>Add an array of coordinates
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - The coordinates<DD><CODE>allowRepeated</CODE> - if set to false, repeated coordinates are collapsed<DD><CODE>direction</CODE> - if false, the array is added in reverse order
+<DT><B>Returns:</B><DD>true (as by general collection contract)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate[], boolean)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public boolean <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+                   boolean&nbsp;allowRepeated)</PRE>
+<DL>
+<DD>Add an array of coordinates
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - The coordinates<DD><CODE>allowRepeated</CODE> - if set to false, repeated coordinates are collapsed
+<DT><B>Returns:</B><DD>true (as by general collection contract)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(java.lang.Object, boolean)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public boolean <B>add</B>(java.lang.Object&nbsp;obj,
+                   boolean&nbsp;allowRepeated)</PRE>
+<DL>
+<DD>Add a coordinate
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>obj</CODE> - The coordinate to add<DD><CODE>allowRepeated</CODE> - if set to false, repeated coordinates are collapsed
+<DT><B>Returns:</B><DD>true (as by general collection contract)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate, boolean)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                boolean&nbsp;allowRepeated)</PRE>
+<DL>
+<DD>Add a coordinate
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - The coordinates<DD><CODE>allowRepeated</CODE> - if set to false, repeated coordinates are collapsed</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addAll(java.util.Collection, boolean)"><!-- --></A><H3>
+addAll</H3>
+<PRE>
+public boolean <B>addAll</B>(java.util.Collection&nbsp;coll,
+                      boolean&nbsp;allowRepeated)</PRE>
+<DL>
+<DD>Add an array of coordinates
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coll</CODE> - The coordinates<DD><CODE>allowRepeated</CODE> - if set to false, repeated coordinates are collapsed
+<DT><B>Returns:</B><DD>true (as by general collection contract)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="closeRing()"><!-- --></A><H3>
+closeRing</H3>
+<PRE>
+public void <B>closeRing</B>()</PRE>
+<DL>
+<DD>Ensure this coordList is a ring, by adding the start point if necessary
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toCoordinateArray()"><!-- --></A><H3>
+toCoordinateArray</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>toCoordinateArray</B>()</PRE>
+<DL>
+<DD>Returns the Coordinates in this collection.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Returns a deep copy of this <tt>CoordinateList</tt> instance.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of this <tt>CoordinateList</tt> instance</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.util.AbstractList">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequence.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequence.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequence.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,637 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateSequence
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateSequence interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateSequence";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequence.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Interface CoordinateSequence</H2>
+<DL>
+<DT><B>All Superinterfaces:</B> <DD>java.lang.Cloneable</DD>
+</DL>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>, <A HREF="../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>CoordinateSequence</B><DT>extends java.lang.Cloneable</DL>
+
+<P>
+The internal representation of a list of coordinates inside a Geometry.
+ <p>
+ There are some cases in which you might want Geometries to store their
+ points using something other than the JTS Coordinate class. For example, you
+ may want to experiment with another implementation, such as an array of x's
+ and an array of y's. Or you might want to use your own coordinate class, one
+ that supports extra attributes like M-values.
+ <p>
+ You can do this by implementing the CoordinateSequence and
+ CoordinateSequenceFactory interfaces. You would then create a
+ GeometryFactory parameterized by your CoordinateSequenceFactory, and use
+ this GeometryFactory to create new Geometries. All of these new Geometries
+ will use your CoordinateSequence implementation.
+ <p>
+ For an example, see the code for
+ <CODE>com.vividsolutions.jtsexample.geom.TwoArrayCoordinateSequenceExample</CODE>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>DefaultCoordinateSequenceFactory</CODE></A>, 
+<CODE>TwoArrayCoordinateSequenceFactory</CODE></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#M">M</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#X">X</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard ordinate index values</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Y">Y</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Z">Z</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a deep copy of this collection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)">expandEnvelope</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expands the given <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns (possibly a copy of) the i'th coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A></B>(int&nbsp;index,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinateCopy(int)">getCoordinateCopy</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a copy of the i'th coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinateIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)">getX</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns ordinate X (0) of the specified coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getY(int)">getY</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns ordinate Y (1) of the specified coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinateIndex,
+            double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the value for a given ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of coordinates in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#toCoordinateArray()">toCoordinateArray</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns (possibly copies of) the Coordinates in this collection.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="X"><!-- --></A><H3>
+X</H3>
+<PRE>
+public static final int <B>X</B></PRE>
+<DL>
+<DD>Standard ordinate index values
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.CoordinateSequence.X">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="Y"><!-- --></A><H3>
+Y</H3>
+<PRE>
+public static final int <B>Y</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.CoordinateSequence.Y">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="Z"><!-- --></A><H3>
+Z</H3>
+<PRE>
+public static final int <B>Z</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.CoordinateSequence.Z">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="M"><!-- --></A><H3>
+M</H3>
+<PRE>
+public static final int <B>M</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.CoordinateSequence.M">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD>Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the sequence.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD>Returns (possibly a copy of) the i'th coordinate in this sequence.
+ Whether or not the Coordinate returned is the actual underlying
+ Coordinate or merely a copy depends on the implementation.
+ <p>
+ Note that in the future the semantics of this method may change
+ to guarantee that the Coordinate returned is always a copy.
+ Callers should not to assume that they can modify a CoordinateSequence by
+ modifying the object returned by this method.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate to retrieve
+<DT><B>Returns:</B><DD>the i'th coordinate in the sequence</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateCopy(int)"><!-- --></A><H3>
+getCoordinateCopy</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateCopy</B>(int&nbsp;i)</PRE>
+<DL>
+<DD>Returns a copy of the i'th coordinate in this sequence.
+ This method optimizes the situation where the caller is
+ going to make a copy anyway - if the implementation
+ has already created a new Coordinate object, no further copy is needed.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate to retrieve
+<DT><B>Returns:</B><DD>a copy of the i'th coordinate in the sequence</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public void <B>getCoordinate</B>(int&nbsp;index,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.  Only the first two dimensions are copied.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the index of the coordinate to copy<DD><CODE>coord</CODE> - a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> to receive the value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getX(int)"><!-- --></A><H3>
+getX</H3>
+<PRE>
+public double <B>getX</B>(int&nbsp;index)</PRE>
+<DL>
+<DD>Returns ordinate X (0) of the specified coordinate.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD>the value of the X ordinate in the index'th coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getY(int)"><!-- --></A><H3>
+getY</H3>
+<PRE>
+public double <B>getY</B>(int&nbsp;index)</PRE>
+<DL>
+<DD>Returns ordinate Y (1) of the specified coordinate.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD>the value of the Y ordinate in the index'th coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOrdinate(int, int)"><!-- --></A><H3>
+getOrdinate</H3>
+<PRE>
+public double <B>getOrdinate</B>(int&nbsp;index,
+                          int&nbsp;ordinateIndex)</PRE>
+<DL>
+<DD>Returns the ordinate of a coordinate in this sequence.
+ Ordinate indices 0 and 1 are assumed to be X and Y.
+ Ordinates indices greater than 1 have user-defined semantics
+ (for instance, they may contain other dimensions or measure values).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index in the sequence<DD><CODE>ordinateIndex</CODE> - the ordinate index in the coordinate (in range [0, dimension-1])</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD>Returns the number of coordinates in this sequence.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the size of the sequence</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setOrdinate(int, int, double)"><!-- --></A><H3>
+setOrdinate</H3>
+<PRE>
+public void <B>setOrdinate</B>(int&nbsp;index,
+                        int&nbsp;ordinateIndex,
+                        double&nbsp;value)</PRE>
+<DL>
+<DD>Sets the value for a given ordinate of a coordinate in this sequence.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index in the sequence<DD><CODE>ordinateIndex</CODE> - the ordinate index in the coordinate (in range [0, dimension-1])<DD><CODE>value</CODE> - the new ordinate value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toCoordinateArray()"><!-- --></A><H3>
+toCoordinateArray</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>toCoordinateArray</B>()</PRE>
+<DL>
+<DD>Returns (possibly copies of) the Coordinates in this collection.
+ Whether or not the Coordinates returned are the actual underlying
+ Coordinates or merely copies depends on the implementation. Note that
+ if this implementation does not store its data as an array of Coordinates,
+ this method will incur a performance penalty because the array needs to
+ be built from scratch.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a array of coordinates containing the point values in this sequence</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+expandEnvelope</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>expandEnvelope</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD>Expands the given <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.
+ Allows implementing classes to optimize access to coordinate values.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the envelope to expand
+<DT><B>Returns:</B><DD>a ref to the expanded envelope</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Returns a deep copy of this collection.
+ Called by Geometry#clone.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a copy of the coordinate sequence containing copies of all points</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequence.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceComparator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceComparator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceComparator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,393 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateSequenceComparator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateSequenceComparator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateSequenceComparator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequenceComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class CoordinateSequenceComparator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.CoordinateSequenceComparator</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.util.Comparator</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>CoordinateSequenceComparator</B><DT>extends java.lang.Object<DT>implements java.util.Comparator</DL>
+
+<P>
+Compares two <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.
+ For sequences of the same dimension, the ordering is lexicographic.
+ Otherwise, lower dimensions are sorted before higher.
+ The dimensions compared can be limited; if this is done
+ ordinate dimensions above the limit will not be compared.
+ <p>
+ If different behaviour is required for comparing size, dimension, or
+ coordinate values, any or all methods can be overridden.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#dimensionLimit">dimensionLimit</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of dimensions to test</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#CoordinateSequenceComparator()">CoordinateSequenceComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a comparator which will test all dimensions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#CoordinateSequenceComparator(int)">CoordinateSequenceComparator</A></B>(int&nbsp;dimensionLimit)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a comparator which will test only the specified number of dimensions.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#compare(double, double)">compare</A></B>(double&nbsp;a,
+        double&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compare two <code>double</code>s, allowing for NaN values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#compare(java.lang.Object, java.lang.Object)">compare</A></B>(java.lang.Object&nbsp;o1,
+        java.lang.Object&nbsp;o2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s for relative order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#compareCoordinate(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.CoordinateSequence, int, int)">compareCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;s1,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;s2,
+                  int&nbsp;i,
+                  int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares the same coordinate of two <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s
+ along the given number of dimensions.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.Comparator"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from interface java.util.Comparator</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="dimensionLimit"><!-- --></A><H3>
+dimensionLimit</H3>
+<PRE>
+protected int <B>dimensionLimit</B></PRE>
+<DL>
+<DD>The number of dimensions to test
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateSequenceComparator()"><!-- --></A><H3>
+CoordinateSequenceComparator</H3>
+<PRE>
+public <B>CoordinateSequenceComparator</B>()</PRE>
+<DL>
+<DD>Creates a comparator which will test all dimensions.
+<P>
+</DL>
+<HR>
+
+<A NAME="CoordinateSequenceComparator(int)"><!-- --></A><H3>
+CoordinateSequenceComparator</H3>
+<PRE>
+public <B>CoordinateSequenceComparator</B>(int&nbsp;dimensionLimit)</PRE>
+<DL>
+<DD>Creates a comparator which will test only the specified number of dimensions.
+<P>
+<DT><B>Parameters:</B><DD><CODE>dimensionLimit</CODE> - the number of dimensions to test</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="compare(double, double)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public static int <B>compare</B>(double&nbsp;a,
+                          double&nbsp;b)</PRE>
+<DL>
+<DD>Compare two <code>double</code>s, allowing for NaN values.
+ NaN is treated as being less than any valid number.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a <code>double</code><DD><CODE>b</CODE> - a <code>double</code>
+<DT><B>Returns:</B><DD>-1, 0, or 1 depending on whether a is less than, equal to or greater than b</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compare(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public int <B>compare</B>(java.lang.Object&nbsp;o1,
+                   java.lang.Object&nbsp;o2)</PRE>
+<DL>
+<DD>Compares two <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s for relative order.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compare</CODE> in interface <CODE>java.util.Comparator</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o1</CODE> - a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A><DD><CODE>o2</CODE> - a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>
+<DT><B>Returns:</B><DD>-1, 0, or 1 depending on whether o1 is less than, equal to, or greater than o2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareCoordinate(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.CoordinateSequence, int, int)"><!-- --></A><H3>
+compareCoordinate</H3>
+<PRE>
+protected int <B>compareCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;s1,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;s2,
+                                int&nbsp;i,
+                                int&nbsp;dimension)</PRE>
+<DL>
+<DD>Compares the same coordinate of two <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s
+ along the given number of dimensions.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>s1</CODE> - a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A><DD><CODE>s2</CODE> - a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A><DD><CODE>i</CODE> - the index of the coordinate to test<DD><CODE>dimension</CODE> - the number of dimensiosn to test
+<DT><B>Returns:</B><DD>-1, 0, or 1 depending on whether s1[i] is less than, equal to, or greater than s2[i]</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequenceComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,278 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateSequenceFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateSequenceFactory interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateSequenceFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Interface CoordinateSequenceFactory</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>CoordinateSequenceFactory</B></DL>
+
+<P>
+A factory to create concrete instances of <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.
+ Used to configure <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>s
+ to provide specific kinds of CoordinateSequences.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> based on the given array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)">create</A></B>(int&nbsp;size,
+       int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="create(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Returns a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> based on the given array.
+ Whether the array is copied or simply referenced
+ is implementation-dependent.
+ This method must handle null arguments by creating an empty sequence.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</PRE>
+<DL>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+ This method must handle null arguments by creating an empty sequence.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordSeq</CODE> - the coordinate sequence to copy</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(int, int)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(int&nbsp;size,
+                                 int&nbsp;dimension)</PRE>
+<DL>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.
+ For this to be useful, the <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation must
+ be mutable.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the number of coordinates in the sequence<DD><CODE>dimension</CODE> - the dimension of the coordinates in the sequence (if user-specifiable,
+ otherwise ignored)</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequenceFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateSequenceFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateSequenceFilter interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateSequenceFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequenceFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Interface CoordinateSequenceFilter</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>CoordinateSequenceFilter</B></DL>
+
+<P>
+Interface for classeswhich provide operations that
+  can be applied to the coordinates in a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>. 
+  A CoordinateSequence filter can either record information about each coordinate or
+  change the coordinate in some way. CoordinateSequence filters can be
+  used to implement such things as coordinate transformations, centroid and
+  envelope computation, and many other functions.
+  For maximum efficiency, the execution of filters can be short-circuited.
+  <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> classes support the concept of applying a
+  <code>CoordinateSequenceFilter</code> to each 
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s they contain. 
+  <p>
+  <code>CoordinateSequenceFilter</code> is
+  an example of the Gang-of-Four Visitor pattern.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><CODE>Geometry.apply(CoordinateSequenceFilter)</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#filter(com.vividsolutions.jts.geom.CoordinateSequence, int)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+       int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation on a coordinate in a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#isDone()">isDone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the application of this filter can be terminated.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#isGeometryChanged()">isGeometryChanged</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the execution of this filter
+ has modified the coordinates of the geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="filter(com.vividsolutions.jts.geom.CoordinateSequence, int)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+                   int&nbsp;i)</PRE>
+<DL>
+<DD>Performs an operation on a coordinate in a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seq</CODE> - the <code>CoordinateSequence</code> to which the filter is applied<DD><CODE>i</CODE> - the index of the coordinate to apply the filter to</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDone()"><!-- --></A><H3>
+isDone</H3>
+<PRE>
+public boolean <B>isDone</B>()</PRE>
+<DL>
+<DD>Reports whether the application of this filter can be terminated.
+ Once this method returns <tt>false</tt>, it should 
+ continue to return <tt>false</tt> on every subsequent call.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the application of this filter can be terminated.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isGeometryChanged()"><!-- --></A><H3>
+isGeometryChanged</H3>
+<PRE>
+public boolean <B>isGeometryChanged</B>()</PRE>
+<DL>
+<DD>Reports whether the execution of this filter
+ has modified the coordinates of the geometry.
+ If so, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()"><CODE>Geometry.geometryChanged()</CODE></A> will be executed.
+ <p>
+ Most filters can simply return a constant value reflecting
+ whether they are able to change the coordinates.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this filter has changed the coordinates of the geometry</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequenceFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequences.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequences.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/CoordinateSequences.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,285 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateSequences
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.CoordinateSequences class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateSequences";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequences.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class CoordinateSequences</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.CoordinateSequences</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CoordinateSequences</B><DT>extends java.lang.Object</DL>
+
+<P>
+Utility functions for manipulating <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html#CoordinateSequences()">CoordinateSequences</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html#reverse(com.vividsolutions.jts.geom.CoordinateSequence)">reverse</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reverses the coordinates in a sequence in-place.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html#swap(com.vividsolutions.jts.geom.CoordinateSequence, int, int)">swap</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+     int&nbsp;i,
+     int&nbsp;j)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Swaps two coordinates in a sequence.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateSequences()"><!-- --></A><H3>
+CoordinateSequences</H3>
+<PRE>
+public <B>CoordinateSequences</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="reverse(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+reverse</H3>
+<PRE>
+public static void <B>reverse</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq)</PRE>
+<DL>
+<DD>Reverses the coordinates in a sequence in-place.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="swap(com.vividsolutions.jts.geom.CoordinateSequence, int, int)"><!-- --></A><H3>
+swap</H3>
+<PRE>
+public static void <B>swap</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+                        int&nbsp;i,
+                        int&nbsp;j)</PRE>
+<DL>
+<DD>Swaps two coordinates in a sequence.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seq</CODE> - <DD><CODE>i</CODE> - <DD><CODE>j</CODE> - </DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateSequences.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,353 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+DefaultCoordinateSequenceFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DefaultCoordinateSequenceFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DefaultCoordinateSequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class DefaultCoordinateSequenceFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable</DD>
+</DL>
+<HR>
+<B>Deprecated.</B>&nbsp;<I>no longer used</I>
+<P>
+<DL>
+<DT>public class <B>DefaultCoordinateSequenceFactory</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable</DL>
+
+<P>
+Creates CoordinateSequences represented as an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#DefaultCoordinateSequenceFactory()">DefaultCoordinateSequenceFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;Returns a DefaultCoordinateSequence based on the given array (the array is
+ not copied).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#create(int, int)">create</A></B>(int&nbsp;size,
+       int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#instance()">instance</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;Returns the singleton instance of DefaultCoordinateSequenceFactory</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DefaultCoordinateSequenceFactory()"><!-- --></A><H3>
+DefaultCoordinateSequenceFactory</H3>
+<PRE>
+public <B>DefaultCoordinateSequenceFactory</B>()</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="instance()"><!-- --></A><H3>
+instance</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A> <B>instance</B>()</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<DD>Returns the singleton instance of DefaultCoordinateSequenceFactory
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<DD>Returns a DefaultCoordinateSequence based on the given array (the array is
+ not copied).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the coordinates, which may not be null nor contain null
+            elements</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+ This method must handle null arguments by creating an empty sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordSeq</CODE> - the coordinate sequence to copy<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><CODE>CoordinateSequenceFactory.create(com.vividsolutions.jts.geom.CoordinateSequence)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(int, int)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(int&nbsp;size,
+                                 int&nbsp;dimension)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.
+ For this to be useful, the <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation must
+ be mutable.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)">create</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the number of coordinates in the sequence<DD><CODE>dimension</CODE> - the dimension of the coordinates in the sequence (if user-specifiable,
+ otherwise ignored)<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)"><CODE>CoordinateSequenceFactory.create(int, int)</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DefaultCoordinateSequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Dimension.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Dimension.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Dimension.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,428 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Dimension
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Dimension class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Dimension";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Dimension.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Dimension</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Dimension</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Dimension</B><DT>extends java.lang.Object</DL>
+
+<P>
+Constants representing the dimensions of a point, a curve and a surface.
+ Also, constants representing the dimensions of the empty geometry and
+ non-empty geometries, and a wildcard dimension meaning "any dimension".
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#A">A</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension value of a surface (2).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#DONTCARE">DONTCARE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension value for any dimension (= {FALSE, TRUE}).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#FALSE">FALSE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension value of the empty geometry (-1).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#L">L</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension value of a curve (1).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#P">P</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension value of a point (0).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#TRUE">TRUE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension value of non-empty geometries (= {P, L, A}).</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#Dimension()">Dimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;char</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#toDimensionSymbol(int)">toDimensionSymbol</A></B>(int&nbsp;dimensionValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the dimension value to a dimension symbol, for example, <code>TRUE => 'T'</code>
+  .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html#toDimensionValue(char)">toDimensionValue</A></B>(char&nbsp;dimensionSymbol)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the dimension symbol to a dimension value, for example, <code>'*' => DONTCARE</code>
+  .</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="P"><!-- --></A><H3>
+P</H3>
+<PRE>
+public static final int <B>P</B></PRE>
+<DL>
+<DD>Dimension value of a point (0).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Dimension.P">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="L"><!-- --></A><H3>
+L</H3>
+<PRE>
+public static final int <B>L</B></PRE>
+<DL>
+<DD>Dimension value of a curve (1).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Dimension.L">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="A"><!-- --></A><H3>
+A</H3>
+<PRE>
+public static final int <B>A</B></PRE>
+<DL>
+<DD>Dimension value of a surface (2).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Dimension.A">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="FALSE"><!-- --></A><H3>
+FALSE</H3>
+<PRE>
+public static final int <B>FALSE</B></PRE>
+<DL>
+<DD>Dimension value of the empty geometry (-1).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Dimension.FALSE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="TRUE"><!-- --></A><H3>
+TRUE</H3>
+<PRE>
+public static final int <B>TRUE</B></PRE>
+<DL>
+<DD>Dimension value of non-empty geometries (= {P, L, A}).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Dimension.TRUE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DONTCARE"><!-- --></A><H3>
+DONTCARE</H3>
+<PRE>
+public static final int <B>DONTCARE</B></PRE>
+<DL>
+<DD>Dimension value for any dimension (= {FALSE, TRUE}).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Dimension.DONTCARE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Dimension()"><!-- --></A><H3>
+Dimension</H3>
+<PRE>
+public <B>Dimension</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toDimensionSymbol(int)"><!-- --></A><H3>
+toDimensionSymbol</H3>
+<PRE>
+public static char <B>toDimensionSymbol</B>(int&nbsp;dimensionValue)</PRE>
+<DL>
+<DD>Converts the dimension value to a dimension symbol, for example, <code>TRUE => 'T'</code>
+  .
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionValue</CODE> - a number that can be stored in the <code>IntersectionMatrix</code>
+      . Possible values are <code>{TRUE, FALSE, DONTCARE, 0, 1, 2}</code>.
+<DT><B>Returns:</B><DD>a character for use in the string representation of
+      an <code>IntersectionMatrix</code>. Possible values are <code>{T, F, * , 0, 1, 2}</code>
+      .</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toDimensionValue(char)"><!-- --></A><H3>
+toDimensionValue</H3>
+<PRE>
+public static int <B>toDimensionValue</B>(char&nbsp;dimensionSymbol)</PRE>
+<DL>
+<DD>Converts the dimension symbol to a dimension value, for example, <code>'*' => DONTCARE</code>
+  .
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionSymbol</CODE> - a character for use in the string representation of
+      an <code>IntersectionMatrix</code>. Possible values are <code>{T, F, * , 0, 1, 2}</code>
+      .
+<DT><B>Returns:</B><DD>a number that can be stored in the <code>IntersectionMatrix</code>
+      . Possible values are <code>{TRUE, FALSE, DONTCARE, 0, 1, 2}</code>.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Dimension.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Envelope.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Envelope.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Envelope.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1276 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Envelope
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Envelope class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Envelope";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Envelope.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Envelope</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Envelope</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Envelope</B><DT>extends java.lang.Object<DT>implements java.io.Serializable</DL>
+
+<P>
+Defines a rectangular region of the 2D coordinate plane.
+  It is often used to represent the bounding box of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+  e.g. the minimum and maximum x and y values of the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+  <p>
+  Note that Envelopes support infinite or half-infinite regions, by using the values of
+  <code>Double.POSITIVE_INFINITY</code> and <code>Double.NEGATIVE_INFINITY</code>.
+  <p>
+  When Envelope objects are created or initialized,
+  the supplies extent values are automatically sorted into the correct order.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.Envelope">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#Envelope()">Envelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a null <code>Envelope</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#Envelope(com.vividsolutions.jts.geom.Coordinate)">Envelope</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>Envelope</code> for a region defined by a single Coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#Envelope(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">Envelope</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>Envelope</code> for a region defined by two Coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#Envelope(double, double, double, double)">Envelope</A></B>(double&nbsp;x1,
+         double&nbsp;x2,
+         double&nbsp;y1,
+         double&nbsp;y2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>Envelope</code> for a region defined by maximum and minimum values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#Envelope(com.vividsolutions.jts.geom.Envelope)">Envelope</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create an <code>Envelope</code> from an existing Envelope.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#centre()">centre</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the coordinate of the centre of this envelope (as long as it is non-null</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#contains(com.vividsolutions.jts.geom.Coordinate)">contains</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if the given point lies in or on the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#contains(double, double)">contains</A></B>(double&nbsp;x,
+         double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if the given point lies in or on the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#contains(com.vividsolutions.jts.geom.Envelope)">contains</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if the <code>Envelope other</code>
+  lies wholely inside this <code>Envelope</code> (inclusive of the boundary).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#distance(com.vividsolutions.jts.geom.Envelope)">distance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the distance between this and another
+ <code>Envelope</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#expandBy(double)">expandBy</A></B>(double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expands this envelope by a given distance in all directions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#expandBy(double, double)">expandBy</A></B>(double&nbsp;deltaX,
+         double&nbsp;deltaY)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expands this envelope by a given distance in all directions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#expandToInclude(com.vividsolutions.jts.geom.Coordinate)">expandToInclude</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enlarges the boundary of the <code>Envelope</code> so that it contains
+  (x,y).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#expandToInclude(double, double)">expandToInclude</A></B>(double&nbsp;x,
+                double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enlarges the boundary of the <code>Envelope</code> so that it contains
+  (x,y).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#expandToInclude(com.vividsolutions.jts.geom.Envelope)">expandToInclude</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enlarges the boundary of the <code>Envelope</code> so that it contains
+  <code>other</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#getHeight()">getHeight</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the difference between the maximum and minimum y values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#getMaxX()">getMaxX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <code>Envelope</code>s maximum x-value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#getMaxY()">getMaxY</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <code>Envelope</code>s maximum y-value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#getMinX()">getMinX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <code>Envelope</code>s minimum x-value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#getMinY()">getMinY</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <code>Envelope</code>s minimum y-value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#getWidth()">getWidth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the difference between the maximum and minimum x values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#hashCode()">hashCode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#init()">init</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize to a null <code>Envelope</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#init(com.vividsolutions.jts.geom.Coordinate)">init</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize an <code>Envelope</code> to a region defined by a single Coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">init</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize an <code>Envelope</code> to a region defined by two Coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#init(double, double, double, double)">init</A></B>(double&nbsp;x1,
+     double&nbsp;x2,
+     double&nbsp;y1,
+     double&nbsp;y2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize an <code>Envelope</code> for a region defined by maximum and minimum values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#init(com.vividsolutions.jts.geom.Envelope)">init</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize an <code>Envelope</code> from an existing Envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#intersection(com.vividsolutions.jts.geom.Envelope)">intersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the intersection of two <CODE>Envelopes</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Coordinate)">intersects</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check if the point <code>p</code>
+  overlaps (lies inside) the region of this <code>Envelope</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">intersects</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test the point q to see whether it intersects the Envelope defined by p1-p2</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">intersects</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test the envelope defined by p1-p2 for intersection
+ with the envelope defined by q1-q2</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#intersects(double, double)">intersects</A></B>(double&nbsp;x,
+           double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check if the point <code>(x, y)</code>
+  overlaps (lies inside) the region of this <code>Envelope</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Envelope)">intersects</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check if the region defined by <code>other</code>
+  overlaps (intersects) the region of this <code>Envelope</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#isNull()">isNull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>Envelope</code> is a "null"
+  envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#overlaps(com.vividsolutions.jts.geom.Coordinate)">overlaps</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use #intersects instead.</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#overlaps(double, double)">overlaps</A></B>(double&nbsp;x,
+         double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use #intersects instead.</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#overlaps(com.vividsolutions.jts.geom.Envelope)">overlaps</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use #intersects instead. In the future, #overlaps may be
+ changed to be a true overlap check; that is, whether the intersection is
+ two-dimensional.</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#setToNull()">setToNull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Makes this <code>Envelope</code> a "null" envelope, that is, the envelope
+  of the empty geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html#translate(double, double)">translate</A></B>(double&nbsp;transX,
+          double&nbsp;transY)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translates this envelope by given amounts in the X and Y direction.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Envelope()"><!-- --></A><H3>
+Envelope</H3>
+<PRE>
+public <B>Envelope</B>()</PRE>
+<DL>
+<DD>Creates a null <code>Envelope</code>.
+<P>
+</DL>
+<HR>
+
+<A NAME="Envelope(double, double, double, double)"><!-- --></A><H3>
+Envelope</H3>
+<PRE>
+public <B>Envelope</B>(double&nbsp;x1,
+                double&nbsp;x2,
+                double&nbsp;y1,
+                double&nbsp;y2)</PRE>
+<DL>
+<DD>Creates an <code>Envelope</code> for a region defined by maximum and minimum values.
+<P>
+<DT><B>Parameters:</B><DD><CODE>x1</CODE> - the first x-value<DD><CODE>x2</CODE> - the second x-value<DD><CODE>y1</CODE> - the first y-value<DD><CODE>y2</CODE> - the second y-value</DL>
+<HR>
+
+<A NAME="Envelope(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+Envelope</H3>
+<PRE>
+public <B>Envelope</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>Creates an <code>Envelope</code> for a region defined by two Coordinates.
+<P>
+<DT><B>Parameters:</B><DD><CODE>p1</CODE> - the first Coordinate<DD><CODE>p2</CODE> - the second Coordinate</DL>
+<HR>
+
+<A NAME="Envelope(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+Envelope</H3>
+<PRE>
+public <B>Envelope</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Creates an <code>Envelope</code> for a region defined by a single Coordinate.
+<P>
+</DL>
+<HR>
+
+<A NAME="Envelope(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+Envelope</H3>
+<PRE>
+public <B>Envelope</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD>Create an <code>Envelope</code> from an existing Envelope.
+<P>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the Envelope to initialize from</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="hashCode()"><!-- --></A><H3>
+hashCode</H3>
+<PRE>
+public int <B>hashCode</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public static boolean <B>intersects</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q)</PRE>
+<DL>
+<DD>Test the point q to see whether it intersects the Envelope defined by p1-p2
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p1</CODE> - one extremal point of the envelope<DD><CODE>p2</CODE> - another extremal point of the envelope<DD><CODE>q</CODE> - the point to test for intersection
+<DT><B>Returns:</B><DD><code>true</code> if q intersects the envelope p1-p2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public static boolean <B>intersects</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q1,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;q2)</PRE>
+<DL>
+<DD>Test the envelope defined by p1-p2 for intersection
+ with the envelope defined by q1-q2
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p1</CODE> - one extremal point of the envelope P<DD><CODE>p2</CODE> - another extremal point of the envelope P<DD><CODE>q1</CODE> - one extremal point of the envelope Q<DD><CODE>q2</CODE> - another extremal point of the envelope Q
+<DT><B>Returns:</B><DD><code>true</code> if Q intersects P</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="init()"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>()</PRE>
+<DL>
+<DD>Initialize to a null <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="init(double, double, double, double)"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>(double&nbsp;x1,
+                 double&nbsp;x2,
+                 double&nbsp;y1,
+                 double&nbsp;y2)</PRE>
+<DL>
+<DD>Initialize an <code>Envelope</code> for a region defined by maximum and minimum values.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x1</CODE> - the first x-value<DD><CODE>x2</CODE> - the second x-value<DD><CODE>y1</CODE> - the first y-value<DD><CODE>y2</CODE> - the second y-value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                 <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD>Initialize an <code>Envelope</code> to a region defined by two Coordinates.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p1</CODE> - the first Coordinate<DD><CODE>p2</CODE> - the second Coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="init(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Initialize an <code>Envelope</code> to a region defined by a single Coordinate.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="init(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD>Initialize an <code>Envelope</code> from an existing Envelope.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the Envelope to initialize from</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToNull()"><!-- --></A><H3>
+setToNull</H3>
+<PRE>
+public void <B>setToNull</B>()</PRE>
+<DL>
+<DD>Makes this <code>Envelope</code> a "null" envelope, that is, the envelope
+  of the empty geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNull()"><!-- --></A><H3>
+isNull</H3>
+<PRE>
+public boolean <B>isNull</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>Envelope</code> is a "null"
+  envelope.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Envelope</code> is uninitialized
+      or is the envelope of the empty geometry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getWidth()"><!-- --></A><H3>
+getWidth</H3>
+<PRE>
+public double <B>getWidth</B>()</PRE>
+<DL>
+<DD>Returns the difference between the maximum and minimum x values.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>max x - min x, or 0 if this is a null <code>Envelope</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getHeight()"><!-- --></A><H3>
+getHeight</H3>
+<PRE>
+public double <B>getHeight</B>()</PRE>
+<DL>
+<DD>Returns the difference between the maximum and minimum y values.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>max y - min y, or 0 if this is a null <code>Envelope</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMinX()"><!-- --></A><H3>
+getMinX</H3>
+<PRE>
+public double <B>getMinX</B>()</PRE>
+<DL>
+<DD>Returns the <code>Envelope</code>s minimum x-value. min x > max x
+  indicates that this is a null <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the minimum x-coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaxX()"><!-- --></A><H3>
+getMaxX</H3>
+<PRE>
+public double <B>getMaxX</B>()</PRE>
+<DL>
+<DD>Returns the <code>Envelope</code>s maximum x-value. min x > max x
+  indicates that this is a null <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the maximum x-coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMinY()"><!-- --></A><H3>
+getMinY</H3>
+<PRE>
+public double <B>getMinY</B>()</PRE>
+<DL>
+<DD>Returns the <code>Envelope</code>s minimum y-value. min y > max y
+  indicates that this is a null <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the minimum y-coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaxY()"><!-- --></A><H3>
+getMaxY</H3>
+<PRE>
+public double <B>getMaxY</B>()</PRE>
+<DL>
+<DD>Returns the <code>Envelope</code>s maximum y-value. min y > max y
+  indicates that this is a null <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the maximum y-coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandToInclude(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+expandToInclude</H3>
+<PRE>
+public void <B>expandToInclude</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Enlarges the boundary of the <code>Envelope</code> so that it contains
+  (x,y). Does nothing if (x,y) is already on or within the boundaries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandBy(double)"><!-- --></A><H3>
+expandBy</H3>
+<PRE>
+public void <B>expandBy</B>(double&nbsp;distance)</PRE>
+<DL>
+<DD>Expands this envelope by a given distance in all directions.
+ Both positive and negative distances are supported.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distance</CODE> - the distance to expand the envelope
+<DT><B>Returns:</B><DD>this envelope</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandBy(double, double)"><!-- --></A><H3>
+expandBy</H3>
+<PRE>
+public void <B>expandBy</B>(double&nbsp;deltaX,
+                     double&nbsp;deltaY)</PRE>
+<DL>
+<DD>Expands this envelope by a given distance in all directions.
+ Both positive and negative distances are supported.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>deltaX</CODE> - the distance to expand the envelope along the the X axis<DD><CODE>deltaY</CODE> - the distance to expand the envelope along the the Y axis</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandToInclude(double, double)"><!-- --></A><H3>
+expandToInclude</H3>
+<PRE>
+public void <B>expandToInclude</B>(double&nbsp;x,
+                            double&nbsp;y)</PRE>
+<DL>
+<DD>Enlarges the boundary of the <code>Envelope</code> so that it contains
+  (x,y). Does nothing if (x,y) is already on or within the boundaries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the value to lower the minimum x to or to raise the maximum x to<DD><CODE>y</CODE> - the value to lower the minimum y to or to raise the maximum y to</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandToInclude(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+expandToInclude</H3>
+<PRE>
+public void <B>expandToInclude</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</PRE>
+<DL>
+<DD>Enlarges the boundary of the <code>Envelope</code> so that it contains
+  <code>other</code>. Does nothing if <code>other</code> is wholly on or
+  within the boundaries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Envelope</code> to merge with</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="translate(double, double)"><!-- --></A><H3>
+translate</H3>
+<PRE>
+public void <B>translate</B>(double&nbsp;transX,
+                      double&nbsp;transY)</PRE>
+<DL>
+<DD>Translates this envelope by given amounts in the X and Y direction.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>transX</CODE> - the amount to translate along the X axis<DD><CODE>transY</CODE> - the amount to translate along the Y axis</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="centre()"><!-- --></A><H3>
+centre</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>centre</B>()</PRE>
+<DL>
+<DD>Computes the coordinate of the centre of this envelope (as long as it is non-null
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the centre coordinate of this envelope
+ <code>null</code> if the envelope is null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>intersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD>Computes the intersection of two <CODE>Envelopes</CODE>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the envelope to intersect with
+<DT><B>Returns:</B><DD>a new Envelope representing the intersection of the envelopes (this will be
+ the null envelope if either argument is null, or they do not intersect</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Returns <code>true</code> if the given point lies in or on the envelope.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p</CODE> - the point which this <code>Envelope</code> is
+      being checked for containing
+<DT><B>Returns:</B><DD><code>true</code> if the point lies in the interior or
+      on the boundary of this <code>Envelope</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(double, double)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(double&nbsp;x,
+                        double&nbsp;y)</PRE>
+<DL>
+<DD>Returns <code>true</code> if the given point lies in or on the envelope.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-coordinate of the point which this <code>Envelope</code> is
+      being checked for containing<DD><CODE>y</CODE> - the y-coordinate of the point which this <code>Envelope</code> is
+      being checked for containing
+<DT><B>Returns:</B><DD><code>true</code> if <code>(x, y)</code> lies in the interior or
+      on the boundary of this <code>Envelope</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</PRE>
+<DL>
+<DD>Check if the region defined by <code>other</code>
+  overlaps (intersects) the region of this <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Envelope</code> which this <code>Envelope</code> is
+          being checked for overlapping
+<DT><B>Returns:</B><DD><code>true</code> if the <code>Envelope</code>s overlap</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlaps(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+overlaps</H3>
+<PRE>
+public boolean <B>overlaps</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use #intersects instead. In the future, #overlaps may be
+ changed to be a true overlap check; that is, whether the intersection is
+ two-dimensional.</I>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Check if the point <code>p</code>
+  overlaps (lies inside) the region of this <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the point overlaps this <code>Envelope</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlaps(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+overlaps</H3>
+<PRE>
+public boolean <B>overlaps</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use #intersects instead.</I>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(double, double)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(double&nbsp;x,
+                          double&nbsp;y)</PRE>
+<DL>
+<DD>Check if the point <code>(x, y)</code>
+  overlaps (lies inside) the region of this <code>Envelope</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-ordinate of the point<DD><CODE>y</CODE> - the y-ordinate of the point
+<DT><B>Returns:</B><DD><code>true</code> if the point overlaps this <code>Envelope</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlaps(double, double)"><!-- --></A><H3>
+overlaps</H3>
+<PRE>
+public boolean <B>overlaps</B>(double&nbsp;x,
+                        double&nbsp;y)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use #intersects instead.</I>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns <code>true</code> if the <code>Envelope other</code>
+  lies wholely inside this <code>Envelope</code> (inclusive of the boundary).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Envelope</code> which this <code>Envelope</code> is
+        being checked for containing
+<DT><B>Returns:</B><DD><code>true</code> if <code>other</code>
+              is contained in this <code>Envelope</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distance(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public double <B>distance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD>Computes the distance between this and another
+ <code>Envelope</code>.
+ The distance between overlapping Envelopes is 0.  Otherwise, the
+ distance is the Euclidean distance between the closest points.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;other)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Envelope.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Geometry.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Geometry.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Geometry.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,2636 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Geometry
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Geometry class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Geometry";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Geometry.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Geometry</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Geometry</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>Geometry</B><DT>extends java.lang.Object<DT>implements java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DL>
+
+<P>
+The base class for all geometric objects.
+ <P>
+
+  <H3>Binary Predicates</H3>
+ Because it is not clear at this time
+ what semantics for spatial
+  analysis methods involving <code>GeometryCollection</code>s would be useful,
+  <code>GeometryCollection</code>s are not supported as arguments to binary
+  predicates (other than <code>convexHull</code>) or the <code>relate</code>
+  method.
+
+  <H3>Set-Theoretic Methods</H3>
+
+  The spatial analysis methods will
+  return the most specific class possible to represent the result. If the
+  result is homogeneous, a <code>Point</code>, <code>LineString</code>, or
+  <code>Polygon</code> will be returned if the result contains a single
+  element; otherwise, a <code>MultiPoint</code>, <code>MultiLineString</code>,
+  or <code>MultiPolygon</code> will be returned. If the result is
+  heterogeneous a <code>GeometryCollection</code> will be returned. <P>
+
+  Because it is not clear at this time what semantics for set-theoretic
+  methods involving <code>GeometryCollection</code>s would be useful,
+ <code>GeometryCollections</code>
+  are not supported as arguments to the set-theoretic methods.
+
+  <H4>Representation of Computed Geometries </H4>
+
+  The SFS states that the result
+  of a set-theoretic method is the "point-set" result of the usual
+  set-theoretic definition of the operation (SFS 3.2.21.1). However, there are
+  sometimes many ways of representing a point set as a <code>Geometry</code>.
+  <P>
+
+  The SFS does not specify an unambiguous representation of a given point set
+  returned from a spatial analysis method. One goal of JTS is to make this
+  specification precise and unambiguous. JTS will use a canonical form for
+  <code>Geometry</code>s returned from spatial analysis methods. The canonical
+  form is a <code>Geometry</code> which is simple and noded:
+  <UL>
+    <LI> Simple means that the Geometry returned will be simple according to
+    the JTS definition of <code>isSimple</code>.
+    <LI> Noded applies only to overlays involving <code>LineString</code>s. It
+    means that all intersection points on <code>LineString</code>s will be
+    present as endpoints of <code>LineString</code>s in the result.
+  </UL>
+  This definition implies that non-simple geometries which are arguments to
+  spatial analysis methods must be subjected to a line-dissolve process to
+  ensure that the results are simple.
+
+  <H4> Constructed Points And The Precision Model </H4>
+
+  The results computed by the set-theoretic methods may
+  contain constructed points which are not present in the input <code>Geometry</code>
+  s. These new points arise from intersections between line segments in the
+  edges of the input <code>Geometry</code>s. In the general case it is not
+  possible to represent constructed points exactly. This is due to the fact
+  that the coordinates of an intersection point may contain twice as many bits
+  of precision as the coordinates of the input line segments. In order to
+  represent these constructed points explicitly, JTS must truncate them to fit
+  the <code>PrecisionModel</code>. <P>
+
+  Unfortunately, truncating coordinates moves them slightly. Line segments
+  which would not be coincident in the exact result may become coincident in
+  the truncated representation. This in turn leads to "topology collapses" --
+  situations where a computed element has a lower dimension than it would in
+  the exact result. <P>
+
+  When JTS detects topology collapses during the computation of spatial
+  analysis methods, it will throw an exception. If possible the exception will
+  report the location of the collapse. <P>
+
+  #equals(Object) and #hashCode are not overridden, so that when two
+  topologically equal Geometries are added to HashMaps and HashSets, they
+  remain distinct. This behaviour is desired in many cases.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.Geometry">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The bounding box of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> used to create this Geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The ID of the Spatial Reference System used by this <code>Geometry</code></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#Geometry(com.vividsolutions.jts.geom.GeometryFactory)">Geometry</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <tt>Geometry</tt> via the specified GeometryFactory.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code>'s
+  coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this Geometry and its
+  component Geometry's.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A></B>(double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a buffer area around this geometry having the given
+ width.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A></B>(double&nbsp;distance,
+       int&nbsp;quadrantSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a buffer area around this geometry having the given
+ width and with a specified accuracy of approximation for circular arcs.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A></B>(double&nbsp;distance,
+       int&nbsp;quadrantSegments,
+       int&nbsp;endCapStyle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a buffer area around this geometry having the given
+ width and with a specified accuracy of approximation for circular arcs,
+ and using a specified end cap style.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Throws an exception if <code>g</code>'s class is <code>GeometryCollection</code>
+  .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> object
+ (including all coordinates contained by it).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A></B>(java.util.Collection&nbsp;a,
+        java.util.Collection&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the first non-zero result of <code>compareTo</code> encountered as
+  the two <code>Collection</code>s are iterated over.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A></B>(java.lang.Object&nbsp;o,
+          <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code>,
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></B>(java.lang.Object&nbsp;o,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry contains the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the smallest convex <code>Polygon</code> that contains all the
+  points in the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry is covered by the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry covers the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry crosses the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a <code>Geometry</code> representing the points making up this
+  <code>Geometry</code> that do not make up <code>other</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry is disjoint to the specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum distance between this <code>Geometry</code>
+  and the <code>Geometry</code> g</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+      double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry is equal to the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notifies this Geometry that its Coordinates have been changed by an external
+ party (using a CoordinateFilter, for example).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notifies this Geometry that its Coordinates have been changed by an external
+ party.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getArea()">getArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the area of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the boundary, or an empty geometry of appropriate dimension
+ if this <code>Geometry</code>  is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the centroid of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a vertex of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>Geometry</code> s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>Geometry</code>s bounding box.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the factory which contains the context in which this geometry was created.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)">getGeometryN</A></B>(int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an element <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or <code>this</code>, if the geometry is not a collection).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes an interior point of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getLength()">getLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the length of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()">getNumGeometries</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or 1, if the geometry is not a collection).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumPoints()">getNumPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the count of this <code>Geometry</code>s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <code>PrecisionModel</code> used by the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ID of the Spatial Reference System used by the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the user data object for this geometry, if any.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the array contains any non-empty <code>Geometry</code>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A></B>(java.lang.Object[]&nbsp;array)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the array contains any <code>null</code> elements.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a <code>Geometry</code> representing the points shared by this
+  <code>Geometry</code> and <code>other</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry intersects the specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEmpty()">isEmpty</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the two <code>Geometry</code>s are equal, from the point
+  of view of the <code>equalsExact</code> method.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests the validity of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                 double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the distance from this <code>Geometry</code>
+ to another is less than or equal to a specified value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry overlaps the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the DE-9IM <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the two <code>Geometry</code>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+       java.lang.String&nbsp;intersectionPattern)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if the elements in the DE-9IM
+ <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the two <code>Geometry</code>s match the elements in <code>intersectionPattern</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A></B>(int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the ID of the Spatial Reference System used by the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A></B>(java.lang.Object&nbsp;userData)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A simple scheme for applications to add their own custom data to a Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a set combining the points in this <code>Geometry</code> not in
+  <code>other</code>, and the points in <code>other</code> not in this
+  <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Well-known Text representation of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry touches the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a <code>Geometry</code> representing all the points in this <code>Geometry</code>
+  and <code>other</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry is within the
+ specified geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="envelope"><!-- --></A><H3>
+envelope</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>envelope</B></PRE>
+<DL>
+<DD>The bounding box of this <code>Geometry</code>.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="factory"><!-- --></A><H3>
+factory</H3>
+<PRE>
+protected final <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A> <B>factory</B></PRE>
+<DL>
+<DD>The <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> used to create this Geometry
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="SRID"><!-- --></A><H3>
+SRID</H3>
+<PRE>
+protected int <B>SRID</B></PRE>
+<DL>
+<DD>The ID of the Spatial Reference System used by this <code>Geometry</code>
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Geometry(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+Geometry</H3>
+<PRE>
+public <B>Geometry</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD>Creates a new <tt>Geometry</tt> via the specified GeometryFactory.
+<P>
+<DT><B>Parameters:</B><DD><CODE>factory</CODE> - </DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public abstract java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
+      interface</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])"><!-- --></A><H3>
+hasNonEmptyElements</H3>
+<PRE>
+protected static boolean <B>hasNonEmptyElements</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries)</PRE>
+<DL>
+<DD>Returns true if the array contains any non-empty <code>Geometry</code>s.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometries</CODE> - an array of <code>Geometry</code>s; no elements may be
+      <code>null</code>
+<DT><B>Returns:</B><DD><code>true</code> if any of the <code>Geometry</code>s
+      <code>isEmpty</code> methods return <code>false</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasNullElements(java.lang.Object[])"><!-- --></A><H3>
+hasNullElements</H3>
+<PRE>
+protected static boolean <B>hasNullElements</B>(java.lang.Object[]&nbsp;array)</PRE>
+<DL>
+<DD>Returns true if the array contains any <code>null</code> elements.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>array</CODE> - an array to validate
+<DT><B>Returns:</B><DD><code>true</code> if any of <code>array</code>s elements are
+      <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSRID()"><!-- --></A><H3>
+getSRID</H3>
+<PRE>
+public int <B>getSRID</B>()</PRE>
+<DL>
+<DD>Returns the ID of the Spatial Reference System used by the <code>Geometry</code>.
+  <P>
+
+  JTS supports Spatial Reference System information in the simple way
+  defined in the SFS. A Spatial Reference System ID (SRID) is present in
+  each <code>Geometry</code> object. <code>Geometry</code> provides basic
+  accessor operations for this field, but no others. The SRID is represented
+  as an integer.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the ID of the coordinate space in which the <code>Geometry</code>
+      is defined.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setSRID(int)"><!-- --></A><H3>
+setSRID</H3>
+<PRE>
+public void <B>setSRID</B>(int&nbsp;SRID)</PRE>
+<DL>
+<DD>Sets the ID of the Spatial Reference System used by the <code>Geometry</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getFactory()"><!-- --></A><H3>
+getFactory</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A> <B>getFactory</B>()</PRE>
+<DL>
+<DD>Gets the factory which contains the context in which this geometry was created.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the factory for this geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getUserData()"><!-- --></A><H3>
+getUserData</H3>
+<PRE>
+public java.lang.Object <B>getUserData</B>()</PRE>
+<DL>
+<DD>Gets the user data object for this geometry, if any.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the user data object, or <code>null</code> if none set</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumGeometries()"><!-- --></A><H3>
+getNumGeometries</H3>
+<PRE>
+public int <B>getNumGeometries</B>()</PRE>
+<DL>
+<DD>Returns the number of <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or 1, if the geometry is not a collection).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of geometries contained in this geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryN(int)"><!-- --></A><H3>
+getGeometryN</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getGeometryN</B>(int&nbsp;n)</PRE>
+<DL>
+<DD>Returns an element <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or <code>this</code>, if the geometry is not a collection).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>n</CODE> - the index of the geometry element
+<DT><B>Returns:</B><DD>the n'th geometry contained in this geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setUserData(java.lang.Object)"><!-- --></A><H3>
+setUserData</H3>
+<PRE>
+public void <B>setUserData</B>(java.lang.Object&nbsp;userData)</PRE>
+<DL>
+<DD>A simple scheme for applications to add their own custom data to a Geometry.
+ An example use might be to add an object representing a Coordinate Reference System.
+ <p>
+ Note that user data objects are not present in geometries created by
+ construction methods.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>userData</CODE> - an object, the semantics for which are defined by the
+ application using this Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPrecisionModel()"><!-- --></A><H3>
+getPrecisionModel</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A> <B>getPrecisionModel</B>()</PRE>
+<DL>
+<DD>Returns the <code>PrecisionModel</code> used by the <code>Geometry</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the specification of the grid of allowable points, for this
+      <code>Geometry</code> and all other <code>Geometry</code>s</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public abstract <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD>Returns a vertex of this <code>Geometry</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> which is a vertex of this <code>Geometry</code>.
+          Returns <code>null</code> if this Geometry is empty</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public abstract <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD>Returns this <code>Geometry</code> s vertices. If you modify the coordinates
+  in this array, be sure to call #geometryChanged afterwards.
+  The <code>Geometry</code>s contained by composite <code>Geometry</code>s
+  must be Geometry's; that is, they must implement <code>getCoordinates</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the vertices of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumPoints()"><!-- --></A><H3>
+getNumPoints</H3>
+<PRE>
+public abstract int <B>getNumPoints</B>()</PRE>
+<DL>
+<DD>Returns the count of this <code>Geometry</code>s vertices. The <code>Geometry</code>
+  s contained by composite <code>Geometry</code>s must be
+  Geometry's; that is, they must implement <code>getNumPoints</code>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of vertices in this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple()"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>()</PRE>
+<DL>
+<DD>Tests whether this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.
+ In general, the SFS specification of simplicity
+ follows the rule:
+  <UL>
+    <LI> A Geometry is simple iff the only self-intersections are at
+    boundary points.
+  </UL>
+ Simplicity is defined for each <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> subclass as follows:
+ <ul>
+ <li>Valid polygonal geometries are simple by definition, so
+ <code>isSimple</code> trivially returns true.
+ <li>Linear geometries are simple iff they do not self-intersect at points
+ other than boundary points.
+ <li>Zero-dimensional geometries (points) are simple iff they have no
+ repeated points.
+ <li>Empty <code>Geometry</code>s are always simple
+ <ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> has any points of
+      self-tangency, self-intersection or other anomalous points<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()"><CODE>isValid()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid()"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>()</PRE>
+<DL>
+<DD>Tests the validity of this <code>Geometry</code>.
+  Subclasses provide their own definition of "valid".
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> is valid<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><CODE>IsValidOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEmpty()"><!-- --></A><H3>
+isEmpty</H3>
+<PRE>
+public abstract boolean <B>isEmpty</B>()</PRE>
+<DL>
+<DD>Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> equals the empty
+      geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distance(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public double <B>distance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns the minimum distance between this <code>Geometry</code>
+  and the <code>Geometry</code> g
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> from which to compute the distance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+isWithinDistance</H3>
+<PRE>
+public boolean <B>isWithinDistance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                                double&nbsp;distance)</PRE>
+<DL>
+<DD>Tests whether the distance from this <code>Geometry</code>
+ to another is less than or equal to a specified value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the Geometry to check the distance to<DD><CODE>distance</CODE> - the distance value to compare
+<DT><B>Returns:</B><DD><code>true</code> if the geometries are less than <code>distance</code> apart.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRectangle()"><!-- --></A><H3>
+isRectangle</H3>
+<PRE>
+public boolean <B>isRectangle</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getArea()"><!-- --></A><H3>
+getArea</H3>
+<PRE>
+public double <B>getArea</B>()</PRE>
+<DL>
+<DD>Returns the area of this <code>Geometry</code>.
+  Areal Geometries have a non-zero area.
+  They override this function to compute the area.
+  Others return 0.0
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the area of the Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength()"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>()</PRE>
+<DL>
+<DD>Returns the length of this <code>Geometry</code>.
+  Linear geometries return their length.
+  Areal geometries return their perimeter.
+  They override this function to compute the area.
+  Others return 0.0
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the length of the Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCentroid()"><!-- --></A><H3>
+getCentroid</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>getCentroid</B>()</PRE>
+<DL>
+<DD>Computes the centroid of this <code>Geometry</code>.
+ The centroid
+ is equal to the centroid of the set of component Geometries of highest
+ dimension (since the lower-dimension geometries contribute zero
+ "weight" to the centroid)
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A> which is the centroid of this Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInteriorPoint()"><!-- --></A><H3>
+getInteriorPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>getInteriorPoint</B>()</PRE>
+<DL>
+<DD>Computes an interior point of this <code>Geometry</code>.
+ An interior point is guaranteed to lie in the interior of the Geometry,
+ if it possible to calculate such a point exactly. Otherwise,
+ the point may lie on the boundary of the geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A> which is in the interior of this Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public abstract int <B>getDimension</B>()</PRE>
+<DL>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the class implementing this interface, whether
+      or not this object is the empty geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public abstract <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Returns the boundary, or an empty geometry of appropriate dimension
+ if this <code>Geometry</code>  is empty.
+ (In the case of zero-dimensional geometries, '
+ an empty GeometryCollection is returned.)
+ For a discussion of this function, see the OpenGIS Simple
+ Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
+ of a Geometry is a set of Geometries of the next lower dimension."
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the closure of the combinatorial boundary of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public abstract int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the boundary of the class implementing this
+      interface, whether or not this object is the empty geometry. Returns
+      <code>Dimension.FALSE</code> if the boundary is the empty geometry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelope()"><!-- --></A><H3>
+getEnvelope</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getEnvelope</B>()</PRE>
+<DL>
+<DD>Returns this <code>Geometry</code>s bounding box. If this <code>Geometry</code>
+  is the empty geometry, returns an empty <code>Point</code>. If the <code>Geometry</code>
+  is a point, returns a non-empty <code>Point</code>. Otherwise, returns a
+  <code>Polygon</code> whose points are (minx, miny), (maxx, miny), (maxx,
+  maxy), (minx, maxy), (minx, miny).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an empty <code>Point</code> (for empty <code>Geometry</code>s), a
+      <code>Point</code> (for <code>Point</code>s) or a <code>Polygon</code>
+      (in all other cases)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelopeInternal()"><!-- --></A><H3>
+getEnvelopeInternal</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getEnvelopeInternal</B>()</PRE>
+<DL>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>Geometry</code>s bounding box; if the <code>Geometry</code>
+      is empty, <code>Envelope#isNull</code> will return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="geometryChanged()"><!-- --></A><H3>
+geometryChanged</H3>
+<PRE>
+public void <B>geometryChanged</B>()</PRE>
+<DL>
+<DD>Notifies this Geometry that its Coordinates have been changed by an external
+ party (using a CoordinateFilter, for example). The Geometry will flush
+ and/or update any information it has cached (such as its <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> ).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="geometryChangedAction()"><!-- --></A><H3>
+geometryChangedAction</H3>
+<PRE>
+protected void <B>geometryChangedAction</B>()</PRE>
+<DL>
+<DD>Notifies this Geometry that its Coordinates have been changed by an external
+ party. When #geometryChanged is called, this method will be called for
+ this Geometry and its component Geometries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><CODE>apply(GeometryComponentFilter)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disjoint(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+disjoint</H3>
+<PRE>
+public boolean <B>disjoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry is disjoint to the specified geometry.
+ <p>
+ The <code>disjoint</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The two geometries have no point in common
+ <li>The DE-9IM Intersection Matrix for the two geometries is FF*FF****
+ <li>! <code>g.intersects(this)</code>
+ (<code>disjoint</code> is the inverse of <code>intersects</code>)
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s are
+      disjoint<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)"><CODE>intersects(com.vividsolutions.jts.geom.Geometry)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="touches(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+touches</H3>
+<PRE>
+public boolean <B>touches</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry touches the
+ specified geometry.
+ <p>
+ The <code>touches</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The geometries have at least one point in common, but their interiors do not intersect.
+ <li>The DE-9IM Intersection Matrix for the two geometries is
+   FT*******, F**T***** or F***T****
+ </ul>
+ If both geometries have dimension 0, this predicate returns <code>false</code>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s touch;
+      Returns <code>false</code> if both <code>Geometry</code>s are points</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry intersects the specified geometry.
+ <p>
+ The <code>intersects</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The two geometries have at least one point in common
+ <li>! <code>g.disjoint(this)</code>
+ (<code>intersects</code> is the inverse of <code>disjoint</code>)
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s intersect<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)"><CODE>disjoint(com.vividsolutions.jts.geom.Geometry)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="crosses(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+crosses</H3>
+<PRE>
+public boolean <B>crosses</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry crosses the
+ specified geometry.
+ <p>
+ The <code>crosses</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The geometries have some but not all interior points in common.
+ <li>The DE-9IM Intersection Matrix for the two geometries is
+   <ul>
+    <li>T*T****** (for P/L, P/A, and L/A situations)
+    <li>T*****T** (for L/P, L/A, and A/L situations)
+    <li>0******** (for L/L situations)
+   </ul>
+ </ul>
+ For any other combination of dimensions this predicate returns <code>false</code>.
+ <p>
+ The SFS defined this predicate only for P/L, P/A, L/L, and L/A situations.
+ JTS extends the definition to apply to L/P, A/P and A/L situations as well.
+ This makes the relation symmetric.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s cross.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="within(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+within</H3>
+<PRE>
+public boolean <B>within</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry is within the
+ specified geometry.
+ <p>
+ The <code>within</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>Every point of this geometry is a point of the other geometry,
+ and the interiors of the two geometries have at least one point in common.
+ <li>The DE-9IM Intersection Matrix for the two geometries is T*F**F***
+ <li><code>g.contains(this)</code>
+ (<code>within</code> is the inverse of <code>contains</code>)
+ </ul>
+ An implication of the definition is that
+ "The boundary of a Polygon is not within the Polygon".
+ In other words, if a geometry G is a subset of
+ the points in the boundary of a polygon P, <code>G.within(P) = false</code>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> is within
+      <code>other</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)"><CODE>contains(com.vividsolutions.jts.geom.Geometry)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry contains the
+ specified geometry.
+ <p>
+ The <code>contains</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>Every point of the other geometry is a point of this geometry,
+ and the interiors of the two geometries have at least one point in common.
+ <li>The DE-9IM Intersection Matrix for the two geometries is <code>T*****FF*</code>
+ <li><code>g.within(this)</code>
+ (<code>contains</code> is the inverse of <code>within</code>)
+ </ul>
+ An implication of the definition is that "Polygons do not
+ contain their boundary".  In other words, if a geometry G is a subset of
+ the points in the boundary of a polygon P, <code>P.contains(G) = false</code>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> contains <code>g</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)"><CODE>within(com.vividsolutions.jts.geom.Geometry)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlaps(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+overlaps</H3>
+<PRE>
+public boolean <B>overlaps</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry overlaps the
+ specified geometry.
+ <p>
+ The <code>overlaps</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The geometries have some but not all points in common,
+ they have the same dimension,
+ and the intersection of the interiors of the two geometries has
+ the same dimension as the geometries themselves.
+ <li>The DE-9IM Intersection Matrix for the two geometries is
+   <code>T*T***T**</code> (for two points or two surfaces)
+   or <code>1*T***T**</code> (for two curves)
+ </ul>
+ If the geometries are of different dimension this predicate returns <code>false</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s overlap.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="covers(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+covers</H3>
+<PRE>
+public boolean <B>covers</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry covers the
+ specified geometry.
+ <p>
+ The <code>covers</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>Every point of the other geometry is a point of this geometry.
+ <li>The DE-9IM Intersection Matrix for the two geometries is
+    <code>T*****FF*</code>
+ or <code>*T****FF*</code>
+ or <code>***T**FF*</code>
+ or <code>****T*FF*</code>
+ <li><code>g.coveredBy(this)</code>
+ (<code>covers</code> is the inverse of <code>coverdBy</code>)
+ </ul>
+ Note the difference between <code>covers</code> and <code>contains</code>
+ - <code>covers</code> is a more inclusive relation.
+ In particular, unlike <code>contains</code> it does not distinguish between
+ points in the boundary and in the interior of geometries.
+ For most situations, <code>covers</code> should be used in preference to <code>contains</code>.
+ As an added benefit, <code>covers</code> is more amenable to optimization,
+ and hence should be more performant.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> covers <code>g</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)"><CODE>contains(com.vividsolutions.jts.geom.Geometry)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)"><CODE>coveredBy(com.vividsolutions.jts.geom.Geometry)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="coveredBy(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+coveredBy</H3>
+<PRE>
+public boolean <B>coveredBy</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry is covered by the
+ specified geometry.
+ <p>
+ The <code>coveredBy</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>Every point of this geometry is a point of the other geometry.
+ <li>The DE-9IM Intersection Matrix for the two geometries is
+    <code>T*F**F***</code>
+ or <code>*TF**F***</code>
+ or <code>**FT*F***</code>
+ or <code>**F*TF***</code>
+ <li><code>g.covers(this)</code>
+ (<code>coveredBy</code> is the inverse of <code>covers</code>)
+ </ul>
+ Note the difference between <code>coveredBy</code> and <code>within</code>
+ - <code>coveredBy</code> is a more inclusive relation.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> is covered by <code>g</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)"><CODE>within(com.vividsolutions.jts.geom.Geometry)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)"><CODE>covers(com.vividsolutions.jts.geom.Geometry)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)"><!-- --></A><H3>
+relate</H3>
+<PRE>
+public boolean <B>relate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                      java.lang.String&nbsp;intersectionPattern)</PRE>
+<DL>
+<DD>Returns <code>true</code> if the elements in the DE-9IM
+ <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the two <code>Geometry</code>s match the elements in <code>intersectionPattern</code>.
+ The pattern is a 9-character string, with symbols drawn from the following set:
+  <UL>
+    <LI> 0 (dimension 0)
+    <LI> 1 (dimension 1)
+    <LI> 2 (dimension 2)
+    <LI> T ( matches 0, 1 or 2)
+    <LI> F ( matches FALSE)
+    <LI> * ( matches any value)
+  </UL>
+  For more information on the DE-9IM, see the <i>OpenGIS Simple Features
+  Specification</i>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>intersectionPattern</CODE> - the pattern against which to check the
+      intersection matrix for the two <code>Geometry</code>s
+<DT><B>Returns:</B><DD><code>true</code> if the DE-9IM intersection
+      matrix for the two <code>Geometry</code>s match <code>intersectionPattern</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="relate(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+relate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A> <B>relate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns the DE-9IM <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the two <code>Geometry</code>s.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> describing the intersections of the interiors,
+      boundaries and exteriors of the two <code>Geometry</code>s</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry is equal to the
+ specified geometry.
+ <p>
+ The <code>equals</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The two geometries have at least one point in common,
+ and no point of either geometry lies in the exterior of the other geometry.
+ <li>The DE-9IM Intersection Matrix for the two geometries is T*F**FFF*
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s are equal</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toText()"><!-- --></A><H3>
+toText</H3>
+<PRE>
+public java.lang.String <B>toText</B>()</PRE>
+<DL>
+<DD>Returns the Well-known Text representation of this <code>Geometry</code>.
+  For a definition of the Well-known Text format, see the OpenGIS Simple
+  Features Specification.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the Well-known Text representation of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buffer(double)"><!-- --></A><H3>
+buffer</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buffer</B>(double&nbsp;distance)</PRE>
+<DL>
+<DD>Computes a buffer area around this geometry having the given
+ width.
+ The buffer of a Geometry is the Minkowski sum or difference
+ of the geometry with a disc of radius <code>abs(distance)</code>.
+ The buffer is constructed using 8 segments per quadrant to represent curves.
+ The end cap style is <tt>CAP_ROUND</tt>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distance</CODE> - the width of the buffer (may be positive, negative or 0)
+<DT><B>Returns:</B><DD>an area geometry representing the buffer region
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)"><CODE>buffer(double, int)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)"><CODE>buffer(double, int, int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buffer(double, int)"><!-- --></A><H3>
+buffer</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buffer</B>(double&nbsp;distance,
+                       int&nbsp;quadrantSegments)</PRE>
+<DL>
+<DD>Computes a buffer area around this geometry having the given
+ width and with a specified accuracy of approximation for circular arcs.
+ <p>
+ Buffer area boundaries can contain circular arcs.
+ To represent these arcs using linear geometry they must be approximated with line segments.
+ The <code>quadrantSegments</code> argument allows controlling the
+ accuracy of the approximation
+ by specifying the number of line segments used to represent a quadrant of a circle
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distance</CODE> - the width of the buffer (may be positive, negative or 0)<DD><CODE>quadrantSegments</CODE> - the number of line segments used to represent a quadrant of a circle
+<DT><B>Returns:</B><DD>an area geometry representing the buffer region
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)"><CODE>buffer(double)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)"><CODE>buffer(double, int, int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buffer(double, int, int)"><!-- --></A><H3>
+buffer</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buffer</B>(double&nbsp;distance,
+                       int&nbsp;quadrantSegments,
+                       int&nbsp;endCapStyle)</PRE>
+<DL>
+<DD>Computes a buffer area around this geometry having the given
+ width and with a specified accuracy of approximation for circular arcs,
+ and using a specified end cap style.
+ <p>
+ Buffer area boundaries can contain circular arcs.
+ To represent these arcs using linear geometry they must be approximated with line segments.
+ The <code>quadrantSegments</code> argument allows controlling the
+ accuracy of the approximation
+ by specifying the number of line segments used to represent a quadrant of a circle
+ <p>
+ The end cap style specifies the buffer geometry that will be
+ created at the ends of linestrings.  The styles provided are:
+ <ul>
+ <li><tt>BufferOp.CAP_ROUND</tt> - (default) a semi-circle
+ <li><tt>BufferOp.CAP_BUTT</tt> - a straight line perpendicular to the end segment
+ <li><tt>BufferOp.CAP_SQUARE</tt> - a half-square
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distance</CODE> - the width of the buffer (may be positive, negative or 0)<DD><CODE>quadrantSegments</CODE> - the number of line segments used to represent a quadrant of a circle<DD><CODE>endCapStyle</CODE> - the end cap style to use
+<DT><B>Returns:</B><DD>an area geometry representing the buffer region
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)"><CODE>buffer(double)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)"><CODE>buffer(double, int)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><CODE>BufferOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="convexHull()"><!-- --></A><H3>
+convexHull</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>convexHull</B>()</PRE>
+<DL>
+<DD>Computes the smallest convex <code>Polygon</code> that contains all the
+  points in the <code>Geometry</code>. This obviously applies only to <code>Geometry</code>
+  s which contain 3 or more points; the results for degenerate cases are
+  specified as follows:
+  <TABLE>
+    <TR>
+      <TH>    Number of <code>Point</code>s in argument <code>Geometry</code>   </TH>
+      <TH>    <code>Geometry</code> class of result     </TH>
+    </TR>
+    <TR>
+      <TD>        0      </TD>
+      <TD>        empty <code>GeometryCollection</code>      </TD>
+    </TR>
+    <TR>  <TD>      1     </TD>
+      <TD>     <code>Point</code>     </TD>
+    </TR>
+    <TR>
+      <TD>      2     </TD>
+      <TD>     <code>LineString</code>     </TD>
+    </TR>
+    <TR>
+      <TD>       3 or more     </TD>
+      <TD>      <code>Polygon</code>     </TD>
+    </TR>
+  </TABLE>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the minimum-area convex polygon containing this <code>Geometry</code>'
+      s points</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>intersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD>Computes a <code>Geometry</code> representing the points shared by this
+  <code>Geometry</code> and <code>other</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compute the
+      intersection
+<DT><B>Returns:</B><DD>the points common to the two <code>Geometry</code>s
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if either input is a non-empty GeometryCollection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="union(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+union</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>union</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD>Computes a <code>Geometry</code> representing all the points in this <code>Geometry</code>
+  and <code>other</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compute the union
+<DT><B>Returns:</B><DD>a set combining the points of this <code>Geometry</code> and
+      the points of <code>other</code>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if either input is a non-empty GeometryCollection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="difference(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+difference</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>difference</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD>Computes a <code>Geometry</code> representing the points making up this
+  <code>Geometry</code> that do not make up <code>other</code>. This method
+  returns the closure of the resultant <code>Geometry</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compute the
+      difference
+<DT><B>Returns:</B><DD>the point set difference of this <code>Geometry</code> with
+      <code>other</code>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if either input is a non-empty GeometryCollection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="symDifference(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+symDifference</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>symDifference</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns a set combining the points in this <code>Geometry</code> not in
+  <code>other</code>, and the points in <code>other</code> not in this
+  <code>Geometry</code>. This method returns the closure of the resultant
+  <code>Geometry</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compute the symmetric
+      difference
+<DT><B>Returns:</B><DD>the point set symmetric difference of this <code>Geometry</code>
+      with <code>other</code>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if a robustness error occurs
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if either input is a non-empty GeometryCollection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public abstract boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                                    double&nbsp;tolerance)</PRE>
+<DL>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this and the other <code>Geometry</code>
+   are of the same class and have equal internal data.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal.
+ Two Geometries are exactly equal iff:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values of Coordinates in their internal
+ Coordinate lists, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+  composites and any children are not <code>Geometry</code>s, returns
+  false.
+ <p>
+  This provides a stricter test of equality than
+  <code>equals</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this and the other <code>Geometry</code>
+      are of the same class and have equal internal data.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public abstract void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD>Performs an operation with or on this <code>Geometry</code>'s
+  coordinates. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state. 
+  Note that you cannot use this
+  method to
+  modify this Geometry if its underlying CoordinateSequence's #get method
+  returns a copy of the Coordinate, rather than the actual Coordinate stored
+  (if it even stores Coordinates at all).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>'s
+      coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public abstract void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD>Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public abstract void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD>Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).
+  Only GeometryCollections and subclasses
+  have subelement Geometry's.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code> (and
+      its children, if it is a <code>GeometryCollection</code>).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public abstract void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD>Performs an operation with or on this Geometry and its
+  component Geometry's.  Only GeometryCollections and
+  Polygons have component Geometry's; for Polygons they are the LinearRings
+  of the shell and holes.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> object
+ (including all coordinates contained by it).
+ Subclasses are responsible for overriding this method and copying
+ their internal data.  Overrides should call this method first.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of this instance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public abstract void <B>normalize</B>()</PRE>
+<DL>
+<DD>Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ). Normal form is a unique representation for <code>Geometry</code>
+  s. It can be used to test whether two <code>Geometry</code>s are equal
+  in a way that is independent of the ordering of the coordinates within
+  them. Normal form equality is a stronger condition than topological
+  equality, but weaker than pointwise equality. The definitions for normal
+  form use the standard lexicographical ordering for coordinates. "Sorted in
+  order of coordinates" means the obvious extension of this ordering to
+  sequences of coordinates.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code>. <P>
+
+  If their classes are different, they are compared using the following
+  ordering:
+  <UL>
+    <LI> Point (lowest)
+    <LI> MultiPoint
+    <LI> LineString
+    <LI> LinearRing
+    <LI> MultiLineString
+    <LI> Polygon
+    <LI> MultiPolygon
+    <LI> GeometryCollection (highest)
+  </UL>
+  If the two <code>Geometry</code>s have the same class, their first
+  elements are compared. If those are the same, the second elements are
+  compared, etc.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o,
+                     <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</PRE>
+<DL>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code>,
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+ <P>
+
+  If their classes are different, they are compared using the following
+  ordering:
+  <UL>
+    <LI> Point (lowest)
+    <LI> MultiPoint
+    <LI> LineString
+    <LI> LinearRing
+    <LI> MultiLineString
+    <LI> Polygon
+    <LI> MultiPolygon
+    <LI> GeometryCollection (highest)
+  </UL>
+  If the two <code>Geometry</code>s have the same class, their first
+  elements are compared. If those are the same, the second elements are
+  compared, etc.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> with which to compare this <code>Geometry</code><DD><CODE>comp</CODE> - a <code>CoordinateSequenceComparator</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEquivalentClass(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+isEquivalentClass</H3>
+<PRE>
+protected boolean <B>isEquivalentClass</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns whether the two <code>Geometry</code>s are equal, from the point
+  of view of the <code>equalsExact</code> method. Called by <code>equalsExact</code>
+  . In general, two <code>Geometry</code> classes are considered to be
+  "equivalent" only if they are the same class. An exception is <code>LineString</code>
+  , which is considered to be equivalent to its subclasses.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+      for equality
+<DT><B>Returns:</B><DD><code>true</code> if the classes of the two <code>Geometry</code>
+      s are considered to be equal by the <code>equalsExact</code> method.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+checkNotGeometryCollection</H3>
+<PRE>
+protected void <B>checkNotGeometryCollection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Throws an exception if <code>g</code>'s class is <code>GeometryCollection</code>
+  . (Its subclasses do not trigger an exception).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the <code>Geometry</code> to check
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if <code>g</code> is a <code>GeometryCollection</code>
+      but not one of its subclasses</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEnvelopeInternal()"><!-- --></A><H3>
+computeEnvelopeInternal</H3>
+<PRE>
+protected abstract <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>computeEnvelopeInternal</B>()</PRE>
+<DL>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+  Unlike <code>getEnvelopeInternal</code>, this method calculates the <code>Envelope</code>
+  each time it is called; <code>getEnvelopeInternal</code> caches the result
+  of this method.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>Geometry</code>s bounding box; if the <code>Geometry</code>
+      is empty, <code>Envelope#isNull</code> will return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected abstract int <B>compareToSameClass</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected abstract int <B>compareToSameClass</B>(java.lang.Object&nbsp;o,
+                                          <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</PRE>
+<DL>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code><DD><CODE>comp</CODE> - a <code>CoordinateSequenceComparator</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compare(java.util.Collection, java.util.Collection)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+protected int <B>compare</B>(java.util.Collection&nbsp;a,
+                      java.util.Collection&nbsp;b)</PRE>
+<DL>
+<DD>Returns the first non-zero result of <code>compareTo</code> encountered as
+  the two <code>Collection</code>s are iterated over. If, by the time one of
+  the iterations is complete, no non-zero result has been encountered,
+  returns 0 if the other iteration is also complete. If <code>b</code>
+  completes before <code>a</code>, a positive number is returned; if a
+  before b, a negative number.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a <code>Collection</code> of <code>Comparable</code>s<DD><CODE>b</CODE> - a <code>Collection</code> of <code>Comparable</code>s
+<DT><B>Returns:</B><DD>the first non-zero <code>compareTo</code> result, if any;
+      otherwise, zero</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)"><!-- --></A><H3>
+equal</H3>
+<PRE>
+protected boolean <B>equal</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                        double&nbsp;tolerance)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Geometry.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollection.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollection.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollection.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,984 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+GeometryCollection
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.GeometryCollection class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryCollection";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryCollection.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class GeometryCollection</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.GeometryCollection</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>GeometryCollection</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></DL>
+
+<P>
+Basic implementation of <code>GeometryCollection</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.GeometryCollection">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#geometries">geometries</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal representation of this <code>GeometryCollection</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.GeometryFactory)">GeometryCollection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.PrecisionModel, int)">GeometryCollection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                   int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code>'s
+  coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this Geometry and its
+  component Geometry's.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A> object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></B>(java.lang.Object&nbsp;o,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getArea()">getArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the area of this <code>GeometryCollection</code></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the boundary, or an empty geometry of appropriate dimension
+ if this <code>Geometry</code>  is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a vertex of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collects all coordinates of all subgeometries into an Array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryN(int)">getGeometryN</A></B>(int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an element <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or <code>this</code>, if the geometry is not a collection).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getLength()">getLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the length of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumGeometries()">getNumGeometries</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or 1, if the geometry is not a collection).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumPoints()">getNumPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the count of this <code>Geometry</code>s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#isEmpty()">isEmpty</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ).</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="geometries"><!-- --></A><H3>
+geometries</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[] <B>geometries</B></PRE>
+<DL>
+<DD>Internal representation of this <code>GeometryCollection</code>.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+GeometryCollection</H3>
+<PRE>
+public <B>GeometryCollection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                          int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+</DL>
+<HR>
+
+<A NAME="GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+GeometryCollection</H3>
+<PRE>
+public <B>GeometryCollection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>geometries</CODE> - the <code>Geometry</code>s for this <code>GeometryCollection</code>,
+            or <code>null</code> or an empty array to create the empty
+            geometry. Elements may be empty <code>Geometry</code>s,
+            but not <code>null</code>s.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns a vertex of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinate()">getCoordinate</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> which is a vertex of this <code>Geometry</code>.
+          Returns <code>null</code> if this Geometry is empty</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD>Collects all coordinates of all subgeometries into an Array.
+
+ Note that while changes to the coordinate objects themselves
+ may modify the Geometries in place, the returned Array as such
+ is only a temporary container which is not synchronized back.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinates()">getCoordinates</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the collected coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEmpty()"><!-- --></A><H3>
+isEmpty</H3>
+<PRE>
+public boolean <B>isEmpty</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEmpty()">isEmpty</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> equals the empty
+      geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the class implementing this interface, whether
+      or not this object is the empty geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the boundary of the class implementing this
+      interface, whether or not this object is the empty geometry. Returns
+      <code>Dimension.FALSE</code> if the boundary is the empty geometry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumGeometries()"><!-- --></A><H3>
+getNumGeometries</H3>
+<PRE>
+public int <B>getNumGeometries</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the number of <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or 1, if the geometry is not a collection).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()">getNumGeometries</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of geometries contained in this geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryN(int)"><!-- --></A><H3>
+getGeometryN</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getGeometryN</B>(int&nbsp;n)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns an element <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or <code>this</code>, if the geometry is not a collection).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)">getGeometryN</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>n</CODE> - the index of the geometry element
+<DT><B>Returns:</B><DD>the n'th geometry contained in this geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumPoints()"><!-- --></A><H3>
+getNumPoints</H3>
+<PRE>
+public int <B>getNumPoints</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the count of this <code>Geometry</code>s vertices. The <code>Geometry</code>
+  s contained by composite <code>Geometry</code>s must be
+  Geometry's; that is, they must implement <code>getNumPoints</code>
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumPoints()">getNumPoints</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of vertices in this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
+      interface</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the boundary, or an empty geometry of appropriate dimension
+ if this <code>Geometry</code>  is empty.
+ (In the case of zero-dimensional geometries, '
+ an empty GeometryCollection is returned.)
+ For a discussion of this function, see the OpenGIS Simple
+ Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
+ of a Geometry is a set of Geometries of the next lower dimension."
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the closure of the combinatorial boundary of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getArea()"><!-- --></A><H3>
+getArea</H3>
+<PRE>
+public double <B>getArea</B>()</PRE>
+<DL>
+<DD>Returns the area of this <code>GeometryCollection</code>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getArea()">getArea</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the area of the polygon</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength()"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the length of this <code>Geometry</code>.
+  Linear geometries return their length.
+  Areal geometries return their perimeter.
+  They override this function to compute the area.
+  Others return 0.0
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getLength()">getLength</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the length of the Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this and the other <code>Geometry</code>
+   are of the same class and have equal internal data.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code>'s
+  coordinates. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state. 
+  Note that you cannot use this
+  method to
+  modify this Geometry if its underlying CoordinateSequence's #get method
+  returns a copy of the Coordinate, rather than the actual Coordinate stored
+  (if it even stores Coordinates at all).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>'s
+      coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).
+  Only GeometryCollections and subclasses
+  have subelement Geometry's.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code> (and
+      its children, if it is a <code>GeometryCollection</code>).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this Geometry and its
+  component Geometry's.  Only GeometryCollections and
+  Polygons have component Geometry's; for Polygons they are the LinearRings
+  of the shell and holes.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A> object.
+ (including all coordinates contained by it).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#clone()">clone</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of this instance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public void <B>normalize</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ). Normal form is a unique representation for <code>Geometry</code>
+  s. It can be used to test whether two <code>Geometry</code>s are equal
+  in a way that is independent of the ordering of the coordinates within
+  them. Normal form equality is a stronger condition than topological
+  equality, but weaker than pointwise equality. The definitions for normal
+  form use the standard lexicographical ordering for coordinates. "Sorted in
+  order of coordinates" means the obvious extension of this ordering to
+  sequences of coordinates.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#normalize()">normalize</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEnvelopeInternal()"><!-- --></A><H3>
+computeEnvelopeInternal</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>computeEnvelopeInternal</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+  Unlike <code>getEnvelopeInternal</code>, this method calculates the <code>Envelope</code>
+  each time it is called; <code>getEnvelopeInternal</code> caches the result
+  of this method.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>Geometry</code>s bounding box; if the <code>Geometry</code>
+      is empty, <code>Envelope#isNull</code> will return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;o,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code><DD><CODE>comp</CODE> - a <code>CoordinateSequenceComparator</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryCollection.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollectionIterator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollectionIterator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryCollectionIterator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,320 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+GeometryCollectionIterator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.GeometryCollectionIterator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryCollectionIterator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryCollectionIterator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class GeometryCollectionIterator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.GeometryCollectionIterator</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.util.Iterator</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>GeometryCollectionIterator</B><DT>extends java.lang.Object<DT>implements java.util.Iterator</DL>
+
+<P>
+Iterates over all <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>.
+  . Implements a pre-order depth-first traversal of the <code>GeometryCollection</code>
+  (which may be nested). The original <code>GeometryCollection</code> is
+  returned as well (as the first object), as are all sub-collections. It is
+  simple to ignore the <code>GeometryCollection</code> objects if they are not
+  needed.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html#GeometryCollectionIterator(com.vividsolutions.jts.geom.Geometry)">GeometryCollectionIterator</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an iterator over the given <code>GeometryCollection</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html#hasNext()">hasNext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html#next()">next</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html#remove()">remove</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Not implemented.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryCollectionIterator(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+GeometryCollectionIterator</H3>
+<PRE>
+public <B>GeometryCollectionIterator</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD>Constructs an iterator over the given <code>GeometryCollection</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>parent</CODE> - the collection over which to iterate; also, the first
+      element returned by the iterator.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="hasNext()"><!-- --></A><H3>
+hasNext</H3>
+<PRE>
+public boolean <B>hasNext</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>hasNext</CODE> in interface <CODE>java.util.Iterator</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="next()"><!-- --></A><H3>
+next</H3>
+<PRE>
+public java.lang.Object <B>next</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>next</CODE> in interface <CODE>java.util.Iterator</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove()"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public void <B>remove</B>()</PRE>
+<DL>
+<DD>Not implemented.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>remove</CODE> in interface <CODE>java.util.Iterator</CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.UnsupportedOperationException</CODE> - This method is not implemented.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryCollectionIterator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryComponentFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryComponentFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryComponentFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+GeometryComponentFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.GeometryComponentFilter interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryComponentFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryComponentFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Interface GeometryComponentFilter</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>GeometryComponentFilter</B></DL>
+
+<P>
+<code>Geometry</code> classes support the concept of applying
+  a <code>GeometryComponentFilter</code>
+  filter to the <code>Geometry</code>.
+  The filter is applied to every component of the <code>Geometry</code>
+  which is itself a <code>Geometry</code>.
+ (For instance, all the LinearRings in Polygons are visited.)
+  <p>
+  A <code>GeometryComponentFilter</code> filter can either
+  record information about the <code>Geometry</code>
+  or change the <code>Geometry</code> in some way.
+  <code>GeometryComponentFilter</code>
+  is an example of the Gang-of-Four Visitor pattern.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryComponentFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1086 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+GeometryFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.GeometryFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class GeometryFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.GeometryFactory</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>GeometryFactory</B><DT>extends java.lang.Object<DT>implements java.io.Serializable</DL>
+
+<P>
+Supplies a set of utility methods for building Geometry objects from lists
+ of Coordinates.
+ <p>
+ Note that the factory constructor methods do <b>not</b> change the input coordinates in any way.
+ In particular, they are not rounded to the supplied <tt>PrecisionModel</tt>.
+ It is assumed that input Coordinates meet the given precision.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.GeometryFactory">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory()">GeometryFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryFactory that generates Geometries having a floating
+ PrecisionModel and a spatial-reference ID of 0.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.CoordinateSequenceFactory)">GeometryFactory</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>&nbsp;coordinateSequenceFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryFactory that generates Geometries having the given
+ CoordinateSequence implementation, a double-precision floating PrecisionModel and a
+ spatial-reference ID of 0.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel)">GeometryFactory</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryFactory that generates Geometries having the given
+ <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> and the default CoordinateSequence
+ implementation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel, int)">GeometryFactory</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryFactory that generates Geometries having the given
+ <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> and spatial-reference ID, and the default CoordinateSequence
+ implementation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel, int, com.vividsolutions.jts.geom.CoordinateSequenceFactory)">GeometryFactory</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                int&nbsp;SRID,
+                <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>&nbsp;coordinateSequenceFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryFactory that generates Geometries having the given
+ PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#buildGeometry(java.util.Collection)">buildGeometry</A></B>(java.util.Collection&nbsp;geomList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build an appropriate <code>Geometry</code>, <code>MultiGeometry</code>, or
+  <code>GeometryCollection</code> to contain the <code>Geometry</code>s in
+  it.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createGeometry(com.vividsolutions.jts.geom.Geometry)">createGeometry</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createGeometryCollection(com.vividsolutions.jts.geom.Geometry[])">createGeometryCollection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a GeometryCollection using the given Geometries; a null or empty
+ array will create an empty GeometryCollection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createLinearRing(com.vividsolutions.jts.geom.Coordinate[])">createLinearRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a LinearRing using the given Coordinates; a null or empty array will
+ create an empty LinearRing.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createLinearRing(com.vividsolutions.jts.geom.CoordinateSequence)">createLinearRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a LinearRing using the given CoordinateSequence; a null or empty CoordinateSequence will
+ create an empty LinearRing.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createLineString(com.vividsolutions.jts.geom.Coordinate[])">createLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a LineString using the given Coordinates; a null or empty array will
+ create an empty LineString.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createLineString(com.vividsolutions.jts.geom.CoordinateSequence)">createLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a LineString using the given CoordinateSequence; a null or empty CoordinateSequence will
+ create an empty LineString.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createMultiLineString(com.vividsolutions.jts.geom.LineString[])">createMultiLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]&nbsp;lineStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a MultiLineString using the given LineStrings; a null or empty
+ array will create an empty MultiLineString.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPoint(com.vividsolutions.jts.geom.Coordinate[])">createMultiPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPoint</CODE></A> using the given <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPoint(com.vividsolutions.jts.geom.CoordinateSequence)">createMultiPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a MultiPoint using the given CoordinateSequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPoint(com.vividsolutions.jts.geom.Point[])">createMultiPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]&nbsp;point)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a MultiPoint using the given Points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPolygon(com.vividsolutions.jts.geom.Polygon[])">createMultiPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]&nbsp;polygons)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a MultiPolygon using the given Polygons; a null or empty array
+ will create an empty Polygon.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createPoint(com.vividsolutions.jts.geom.Coordinate)">createPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coordinate)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a Point using the given Coordinate; a null Coordinate will create
+ an empty Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createPoint(com.vividsolutions.jts.geom.CoordinateSequence)">createPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a Point using the given CoordinateSequence; a null or empty
+ CoordinateSequence will create an empty Point.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createPointFromInternalCoord(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)">createPointFromInternalCoord</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;exemplar)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#createPolygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[])">createPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+              <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]&nbsp;holes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>Polygon</code> with the given exterior boundary and
+ interior boundaries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#getCoordinateSequenceFactory()">getCoordinateSequenceFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#getPrecisionModel()">getPrecisionModel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the PrecisionModel that Geometries created by this factory
+ will be associated with.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#getSRID()">getSRID</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toGeometry(com.vividsolutions.jts.geom.Envelope)">toGeometry</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;envelope)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the <code>Envelope</code> is a null <code>Envelope</code>, returns an
+  empty <code>Point</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toGeometryArray(java.util.Collection)">toGeometryArray</A></B>(java.util.Collection&nbsp;geometries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toLinearRingArray(java.util.Collection)">toLinearRingArray</A></B>(java.util.Collection&nbsp;linearRings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toLineStringArray(java.util.Collection)">toLineStringArray</A></B>(java.util.Collection&nbsp;lineStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toMultiLineStringArray(java.util.Collection)">toMultiLineStringArray</A></B>(java.util.Collection&nbsp;multiLineStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toMultiPointArray(java.util.Collection)">toMultiPointArray</A></B>(java.util.Collection&nbsp;multiPoints)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toMultiPolygonArray(java.util.Collection)">toMultiPolygonArray</A></B>(java.util.Collection&nbsp;multiPolygons)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toPointArray(java.util.Collection)">toPointArray</A></B>(java.util.Collection&nbsp;points)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html#toPolygonArray(java.util.Collection)">toPolygonArray</A></B>(java.util.Collection&nbsp;polygons)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the <code>List</code> to an array.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel, int, com.vividsolutions.jts.geom.CoordinateSequenceFactory)"><!-- --></A><H3>
+GeometryFactory</H3>
+<PRE>
+public <B>GeometryFactory</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                       int&nbsp;SRID,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>&nbsp;coordinateSequenceFactory)</PRE>
+<DL>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.
+<P>
+</DL>
+<HR>
+
+<A NAME="GeometryFactory(com.vividsolutions.jts.geom.CoordinateSequenceFactory)"><!-- --></A><H3>
+GeometryFactory</H3>
+<PRE>
+public <B>GeometryFactory</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>&nbsp;coordinateSequenceFactory)</PRE>
+<DL>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ CoordinateSequence implementation, a double-precision floating PrecisionModel and a
+ spatial-reference ID of 0.
+<P>
+</DL>
+<HR>
+
+<A NAME="GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+GeometryFactory</H3>
+<PRE>
+public <B>GeometryFactory</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</PRE>
+<DL>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> and the default CoordinateSequence
+ implementation.
+<P>
+<DT><B>Parameters:</B><DD><CODE>precisionModel</CODE> - the PrecisionModel to use</DL>
+<HR>
+
+<A NAME="GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+GeometryFactory</H3>
+<PRE>
+public <B>GeometryFactory</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                       int&nbsp;SRID)</PRE>
+<DL>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> and spatial-reference ID, and the default CoordinateSequence
+ implementation.
+<P>
+<DT><B>Parameters:</B><DD><CODE>precisionModel</CODE> - the PrecisionModel to use<DD><CODE>SRID</CODE> - the SRID to use</DL>
+<HR>
+
+<A NAME="GeometryFactory()"><!-- --></A><H3>
+GeometryFactory</H3>
+<PRE>
+public <B>GeometryFactory</B>()</PRE>
+<DL>
+<DD>Constructs a GeometryFactory that generates Geometries having a floating
+ PrecisionModel and a spatial-reference ID of 0.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createPointFromInternalCoord(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+createPointFromInternalCoord</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>createPointFromInternalCoord</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                                                 <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;exemplar)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toPointArray(java.util.Collection)"><!-- --></A><H3>
+toPointArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[] <B>toPointArray</B>(java.util.Collection&nbsp;points)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>points</CODE> - the <code>List</code> of Points to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toGeometryArray(java.util.Collection)"><!-- --></A><H3>
+toGeometryArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[] <B>toGeometryArray</B>(java.util.Collection&nbsp;geometries)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometries</CODE> - the list of <code>Geometry's</code> to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLinearRingArray(java.util.Collection)"><!-- --></A><H3>
+toLinearRingArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[] <B>toLinearRingArray</B>(java.util.Collection&nbsp;linearRings)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linearRings</CODE> - the <code>List</code> of LinearRings to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLineStringArray(java.util.Collection)"><!-- --></A><H3>
+toLineStringArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[] <B>toLineStringArray</B>(java.util.Collection&nbsp;lineStrings)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>lineStrings</CODE> - the <code>List</code> of LineStrings to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toPolygonArray(java.util.Collection)"><!-- --></A><H3>
+toPolygonArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[] <B>toPolygonArray</B>(java.util.Collection&nbsp;polygons)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>polygons</CODE> - the <code>List</code> of Polygons to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toMultiPolygonArray(java.util.Collection)"><!-- --></A><H3>
+toMultiPolygonArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>[] <B>toMultiPolygonArray</B>(java.util.Collection&nbsp;multiPolygons)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>multiPolygons</CODE> - the <code>List</code> of MultiPolygons to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toMultiLineStringArray(java.util.Collection)"><!-- --></A><H3>
+toMultiLineStringArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>[] <B>toMultiLineStringArray</B>(java.util.Collection&nbsp;multiLineStrings)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>multiLineStrings</CODE> - the <code>List</code> of MultiLineStrings to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toMultiPointArray(java.util.Collection)"><!-- --></A><H3>
+toMultiPointArray</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>[] <B>toMultiPointArray</B>(java.util.Collection&nbsp;multiPoints)</PRE>
+<DL>
+<DD>Converts the <code>List</code> to an array.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>multiPoints</CODE> - the <code>List</code> of MultiPoints to convert
+<DT><B>Returns:</B><DD>the <code>List</code> in array format</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toGeometry(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+toGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>toGeometry</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;envelope)</PRE>
+<DL>
+<DD>If the <code>Envelope</code> is a null <code>Envelope</code>, returns an
+  empty <code>Point</code>. If the <code>Envelope</code> is a point, returns
+  a non-empty <code>Point</code>. If the <code>Envelope</code> is a
+  rectangle, returns a <code>Polygon</code> whose points are (minx, miny),
+  (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>envelope</CODE> - the <code>Envelope</code> to convert to a <code>Geometry</code>
+<DT><B>Returns:</B><DD>an empty <code>Point</code> (for null <code>Envelope</code>
+      s), a <code>Point</code> (when min x = max x and min y = max y) or a
+      <code>Polygon</code> (in all other cases)
+<DT><B>Throws:</B>
+<DD><CODE><code></CODE> - TopologyException</code> if <code>coordinates</code>
+      is not a closed linestring, that is, if the first and last coordinates
+      are not equal</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPrecisionModel()"><!-- --></A><H3>
+getPrecisionModel</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A> <B>getPrecisionModel</B>()</PRE>
+<DL>
+<DD>Returns the PrecisionModel that Geometries created by this factory
+ will be associated with.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createPoint(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+createPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>createPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coordinate)</PRE>
+<DL>
+<DD>Creates a Point using the given Coordinate; a null Coordinate will create
+ an empty Geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createPoint(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+createPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>createPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a Point using the given CoordinateSequence; a null or empty
+ CoordinateSequence will create an empty Point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMultiLineString(com.vividsolutions.jts.geom.LineString[])"><!-- --></A><H3>
+createMultiLineString</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A> <B>createMultiLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]&nbsp;lineStrings)</PRE>
+<DL>
+<DD>Creates a MultiLineString using the given LineStrings; a null or empty
+ array will create an empty MultiLineString.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>lineStrings</CODE> - LineStrings, each of which may be empty but not null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createGeometryCollection(com.vividsolutions.jts.geom.Geometry[])"><!-- --></A><H3>
+createGeometryCollection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A> <B>createGeometryCollection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]&nbsp;geometries)</PRE>
+<DL>
+<DD>Creates a GeometryCollection using the given Geometries; a null or empty
+ array will create an empty GeometryCollection.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometries</CODE> - Geometries, each of which may be empty but not null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMultiPolygon(com.vividsolutions.jts.geom.Polygon[])"><!-- --></A><H3>
+createMultiPolygon</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A> <B>createMultiPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]&nbsp;polygons)</PRE>
+<DL>
+<DD>Creates a MultiPolygon using the given Polygons; a null or empty array
+ will create an empty Polygon. The polygons must conform to the
+ assertions specified in the <A
+ HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
+ Specification for SQL</A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>polygons</CODE> - Polygons, each of which may be empty but not null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createLinearRing(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+createLinearRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>createLinearRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a LinearRing using the given Coordinates; a null or empty array will
+ create an empty LinearRing. The points must form a closed and simple
+ linestring. Consecutive points must not be equal.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - an array without null elements, or an empty array, or null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createLinearRing(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+createLinearRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>createLinearRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a LinearRing using the given CoordinateSequence; a null or empty CoordinateSequence will
+ create an empty LinearRing. The points must form a closed and simple
+ linestring. Consecutive points must not be equal.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - a CoordinateSequence possibly empty, or null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMultiPoint(com.vividsolutions.jts.geom.Point[])"><!-- --></A><H3>
+createMultiPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A> <B>createMultiPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]&nbsp;point)</PRE>
+<DL>
+<DD>Creates a MultiPoint using the given Points.
+ A null or empty array will create an empty MultiPoint.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a MultiPoint object</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMultiPoint(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+createMultiPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A> <B>createMultiPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPoint</CODE></A> using the given <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+ A null or empty array will create an empty MultiPoint.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - an array (without null elements), or an empty array, or <code>null</code>
+<DT><B>Returns:</B><DD>a MultiPoint object</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMultiPoint(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+createMultiPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A> <B>createMultiPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a MultiPoint using the given CoordinateSequence.
+ A a null or empty CoordinateSequence will create an empty MultiPoint.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - a CoordinateSequence (possibly empty), or <code>null</code>
+<DT><B>Returns:</B><DD>a MultiPoint object</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createPolygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[])"><!-- --></A><H3>
+createPolygon</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A> <B>createPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]&nbsp;holes)</PRE>
+<DL>
+<DD>Constructs a <code>Polygon</code> with the given exterior boundary and
+ interior boundaries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>shell</CODE> - the outer boundary of the new <code>Polygon</code>, or
+            <code>null</code> or an empty <code>LinearRing</code> if
+            the empty geometry is to be created.<DD><CODE>holes</CODE> - the inner boundaries of the new <code>Polygon</code>, or
+            <code>null</code> or empty <code>LinearRing</code> s if
+            the empty geometry is to be created.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buildGeometry(java.util.Collection)"><!-- --></A><H3>
+buildGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buildGeometry</B>(java.util.Collection&nbsp;geomList)</PRE>
+<DL>
+<DD>Build an appropriate <code>Geometry</code>, <code>MultiGeometry</code>, or
+  <code>GeometryCollection</code> to contain the <code>Geometry</code>s in
+  it.
+ For example:<br>
+
+  <ul>
+    <li> If <code>geomList</code> contains a single <code>Polygon</code>,
+    the <code>Polygon</code> is returned.
+    <li> If <code>geomList</code> contains several <code>Polygon</code>s, a
+    <code>MultiPolygon</code> is returned.
+    <li> If <code>geomList</code> contains some <code>Polygon</code>s and
+    some <code>LineString</code>s, a <code>GeometryCollection</code> is
+    returned.
+    <li> If <code>geomList</code> is empty, an empty <code>GeometryCollection</code>
+    is returned
+  </ul>
+
+ Note that this method does not "flatten" Geometries in the input, and hence if
+ any MultiGeometries are contained in the input a GeometryCollection containing
+ them will be returned.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geomList</CODE> - the <code>Geometry</code>s to combine
+<DT><B>Returns:</B><DD>a <code>Geometry</code> of the "smallest", "most
+      type-specific" class that can contain the elements of <code>geomList</code>
+      .</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createLineString(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+createLineString</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>createLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a LineString using the given Coordinates; a null or empty array will
+ create an empty LineString. Consecutive points must not be equal.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - an array without null elements, or an empty array, or null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createLineString(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+createLineString</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>createLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates)</PRE>
+<DL>
+<DD>Creates a LineString using the given CoordinateSequence; a null or empty CoordinateSequence will
+ create an empty LineString. Consecutive points must not be equal.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - a CoordinateSequence possibly empty, or null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createGeometry(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+createGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>createGeometry</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of g based on a CoordinateSequence created by this
+ GeometryFactory's CoordinateSequenceFactory</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSRID()"><!-- --></A><H3>
+getSRID</H3>
+<PRE>
+public int <B>getSRID</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateSequenceFactory()"><!-- --></A><H3>
+getCoordinateSequenceFactory</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A> <B>getCoordinateSequenceFactory</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/GeometryFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,229 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+GeometryFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.GeometryFilter interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Interface GeometryFilter</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementLocationFilter</A>, <A HREF="../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementPointFilter</A>, <A HREF="../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A>, <A HREF="../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>GeometryFilter</B></DL>
+
+<P>
+<code>GeometryCollection</code> classes support the concept of
+  applying a <code>GeometryFilter</code> to the <code>Geometry</code>.
+  The filter is applied to every element <code>Geometry</code>.
+  A <code>GeometryFilter</code> can either record information about the <code>Geometry</code>
+  or change the <code>Geometry</code> in some way.
+  <code>GeometryFilter</code>
+  is an example of the Gang-of-Four Visitor pattern.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/IntersectionMatrix.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/IntersectionMatrix.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/IntersectionMatrix.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1013 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+IntersectionMatrix
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.IntersectionMatrix class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IntersectionMatrix";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntersectionMatrix.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class IntersectionMatrix</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.IntersectionMatrix</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>IntersectionMatrix</B><DT>extends java.lang.Object<DT>implements java.lang.Cloneable</DL>
+
+<P>
+A Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. This class
+  can used to represent both computed DE-9IM's (like 212FF1FF2) as well as
+  patterns for matching them (like T*T******). <P>
+
+  Methods are provided to:
+  <UL>
+    <LI> set and query the elements of the matrix in a convenient fashion
+    <LI> convert to and from the standard string representation (specified in
+    SFS Section 2.1.13.2).
+    <LI> test to see if a matrix matches a given pattern string.
+  </UL>
+  <P>
+
+  For a description of the DE-9IM, see the <A
+  HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
+  Specification for SQL</A> .
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#IntersectionMatrix()">IntersectionMatrix</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>IntersectionMatrix</code> with <code>FALSE</code>
+  dimension values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#IntersectionMatrix(com.vividsolutions.jts.geom.IntersectionMatrix)">IntersectionMatrix</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>IntersectionMatrix</code> with the same elements as
+  <code>other</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#IntersectionMatrix(java.lang.String)">IntersectionMatrix</A></B>(java.lang.String&nbsp;elements)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>IntersectionMatrix</code> with the given dimension
+  symbols.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#add(com.vividsolutions.jts.geom.IntersectionMatrix)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds one matrix to another.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#get(int, int)">get</A></B>(int&nbsp;row,
+    int&nbsp;column)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the value of one of this <code>IntersectionMatrix</code>s
+  elements.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isContains()">isContains</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*****FF*.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isCoveredBy()">isCoveredBy</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+    <code>T*F**F***</code>
+ or <code>*TF**F***</code>
+ or <code>**FT*F***</code>
+ or <code>**F*TF***</code></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isCovers()">isCovers</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+    <code>T*****FF*</code>
+ or <code>*T****FF*</code>
+ or <code>***T**FF*</code>
+ or <code>****T*FF*</code></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isCrosses(int, int)">isCrosses</A></B>(int&nbsp;dimensionOfGeometryA,
+          int&nbsp;dimensionOfGeometryB)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this geometry crosses the
+ specified geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isDisjoint()">isDisjoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  FF*FF****.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isEquals(int, int)">isEquals</A></B>(int&nbsp;dimensionOfGeometryA,
+         int&nbsp;dimensionOfGeometryB)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*F**FFF*.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isIntersects()">isIntersects</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if <code>isDisjoint</code> returns false.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isOverlaps(int, int)">isOverlaps</A></B>(int&nbsp;dimensionOfGeometryA,
+           int&nbsp;dimensionOfGeometryB)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  
+     T*T***T** (for two points or two surfaces)
+     1*T***T** (for two curves)
+  
+  .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isTouches(int, int)">isTouches</A></B>(int&nbsp;dimensionOfGeometryA,
+          int&nbsp;dimensionOfGeometryB)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  FT*******, F**T***** or F***T****.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#isWithin()">isWithin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*F**F***.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#matches(int, char)">matches</A></B>(int&nbsp;actualDimensionValue,
+        char&nbsp;requiredDimensionSymbol)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the dimension value satisfies the dimension symbol.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#matches(java.lang.String)">matches</A></B>(java.lang.String&nbsp;requiredDimensionSymbols)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the elements of this <code>IntersectionMatrix</code>
+  satisfies the required dimension symbols.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#matches(java.lang.String, java.lang.String)">matches</A></B>(java.lang.String&nbsp;actualDimensionSymbols,
+        java.lang.String&nbsp;requiredDimensionSymbols)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if each of the actual dimension symbols satisfies the
+  corresponding required dimension symbol.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#set(int, int, int)">set</A></B>(int&nbsp;row,
+    int&nbsp;column,
+    int&nbsp;dimensionValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changes the value of one of this <code>IntersectionMatrix</code>s
+  elements.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#set(java.lang.String)">set</A></B>(java.lang.String&nbsp;dimensionSymbols)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changes the elements of this <code>IntersectionMatrix</code> to the
+  dimension symbols in <code>dimensionSymbols</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#setAll(int)">setAll</A></B>(int&nbsp;dimensionValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changes the elements of this <code>IntersectionMatrix</code> to <code>dimensionValue</code>
+  .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#setAtLeast(int, int, int)">setAtLeast</A></B>(int&nbsp;row,
+           int&nbsp;column,
+           int&nbsp;minimumDimensionValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Changes the specified element to <code>minimumDimensionValue</code> if the
+  element is less.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#setAtLeast(java.lang.String)">setAtLeast</A></B>(java.lang.String&nbsp;minimumDimensionSymbols)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For each element in this <code>IntersectionMatrix</code>, changes the
+  element to the corresponding minimum dimension symbol if the element is
+  less.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#setAtLeastIfValid(int, int, int)">setAtLeastIfValid</A></B>(int&nbsp;row,
+                  int&nbsp;column,
+                  int&nbsp;minimumDimensionValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If row >= 0 and column >= 0, changes the specified element to <code>minimumDimensionValue</code>
+  if the element is less.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a nine-character <code>String</code> representation of this <code>IntersectionMatrix</code>
+  .</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html#transpose()">transpose</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transposes this IntersectionMatrix.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IntersectionMatrix()"><!-- --></A><H3>
+IntersectionMatrix</H3>
+<PRE>
+public <B>IntersectionMatrix</B>()</PRE>
+<DL>
+<DD>Creates an <code>IntersectionMatrix</code> with <code>FALSE</code>
+  dimension values.
+<P>
+</DL>
+<HR>
+
+<A NAME="IntersectionMatrix(java.lang.String)"><!-- --></A><H3>
+IntersectionMatrix</H3>
+<PRE>
+public <B>IntersectionMatrix</B>(java.lang.String&nbsp;elements)</PRE>
+<DL>
+<DD>Creates an <code>IntersectionMatrix</code> with the given dimension
+  symbols.
+<P>
+<DT><B>Parameters:</B><DD><CODE>elements</CODE> - a String of nine dimension symbols in row major order</DL>
+<HR>
+
+<A NAME="IntersectionMatrix(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+IntersectionMatrix</H3>
+<PRE>
+public <B>IntersectionMatrix</B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;other)</PRE>
+<DL>
+<DD>Creates an <code>IntersectionMatrix</code> with the same elements as
+  <code>other</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - an <code>IntersectionMatrix</code> to copy</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>Adds one matrix to another.
+ Addition is defined by taking the maximum dimension value of each position
+ in the summand matrices.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>im</CODE> - the matrix to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="matches(int, char)"><!-- --></A><H3>
+matches</H3>
+<PRE>
+public static boolean <B>matches</B>(int&nbsp;actualDimensionValue,
+                              char&nbsp;requiredDimensionSymbol)</PRE>
+<DL>
+<DD>Returns true if the dimension value satisfies the dimension symbol.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>actualDimensionValue</CODE> - a number that can be stored in the <code>IntersectionMatrix</code>
+      . Possible values are <code>{TRUE, FALSE, DONTCARE, 0, 1, 2}</code>.<DD><CODE>requiredDimensionSymbol</CODE> - a character used in the string
+      representation of an <code>IntersectionMatrix</code>. Possible values
+      are <code>{T, F, * , 0, 1, 2}</code>.
+<DT><B>Returns:</B><DD>true if the dimension symbol encompasses
+      the dimension value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="matches(java.lang.String, java.lang.String)"><!-- --></A><H3>
+matches</H3>
+<PRE>
+public static boolean <B>matches</B>(java.lang.String&nbsp;actualDimensionSymbols,
+                              java.lang.String&nbsp;requiredDimensionSymbols)</PRE>
+<DL>
+<DD>Returns true if each of the actual dimension symbols satisfies the
+  corresponding required dimension symbol.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>actualDimensionSymbols</CODE> - nine dimension symbols to validate.
+      Possible values are <code>{T, F, * , 0, 1, 2}</code>.<DD><CODE>requiredDimensionSymbols</CODE> - nine dimension symbols to validate
+      against. Possible values are <code>{T, F, * , 0, 1, 2}</code>.
+<DT><B>Returns:</B><DD>true if each of the required dimension
+      symbols encompass the corresponding actual dimension symbol</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="set(int, int, int)"><!-- --></A><H3>
+set</H3>
+<PRE>
+public void <B>set</B>(int&nbsp;row,
+                int&nbsp;column,
+                int&nbsp;dimensionValue)</PRE>
+<DL>
+<DD>Changes the value of one of this <code>IntersectionMatrix</code>s
+  elements.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>row</CODE> - the row of this <code>IntersectionMatrix</code>,
+      indicating the interior, boundary or exterior of the first <code>Geometry</code><DD><CODE>column</CODE> - the column of this <code>IntersectionMatrix</code>,
+      indicating the interior, boundary or exterior of the second <code>Geometry</code><DD><CODE>dimensionValue</CODE> - the new value of the element</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="set(java.lang.String)"><!-- --></A><H3>
+set</H3>
+<PRE>
+public void <B>set</B>(java.lang.String&nbsp;dimensionSymbols)</PRE>
+<DL>
+<DD>Changes the elements of this <code>IntersectionMatrix</code> to the
+  dimension symbols in <code>dimensionSymbols</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionSymbols</CODE> - nine dimension symbols to which to set this <code>IntersectionMatrix</code>
+      s elements. Possible values are <code>{T, F, * , 0, 1, 2}</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAtLeast(int, int, int)"><!-- --></A><H3>
+setAtLeast</H3>
+<PRE>
+public void <B>setAtLeast</B>(int&nbsp;row,
+                       int&nbsp;column,
+                       int&nbsp;minimumDimensionValue)</PRE>
+<DL>
+<DD>Changes the specified element to <code>minimumDimensionValue</code> if the
+  element is less.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>row</CODE> - the row of this <code>IntersectionMatrix</code>
+      , indicating the interior, boundary or exterior of the first <code>Geometry</code><DD><CODE>column</CODE> - the column of this <code>IntersectionMatrix</code>
+      , indicating the interior, boundary or exterior of the second <code>Geometry</code><DD><CODE>minimumDimensionValue</CODE> - the dimension value with which to compare the
+      element. The order of dimension values from least to greatest is
+      <code>{DONTCARE, TRUE, FALSE, 0, 1, 2}</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAtLeastIfValid(int, int, int)"><!-- --></A><H3>
+setAtLeastIfValid</H3>
+<PRE>
+public void <B>setAtLeastIfValid</B>(int&nbsp;row,
+                              int&nbsp;column,
+                              int&nbsp;minimumDimensionValue)</PRE>
+<DL>
+<DD>If row >= 0 and column >= 0, changes the specified element to <code>minimumDimensionValue</code>
+  if the element is less. Does nothing if row <0 or column < 0.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>row</CODE> - the row of this <code>IntersectionMatrix</code>
+      , indicating the interior, boundary or exterior of the first <code>Geometry</code><DD><CODE>column</CODE> - the column of this <code>IntersectionMatrix</code>
+      , indicating the interior, boundary or exterior of the second <code>Geometry</code><DD><CODE>minimumDimensionValue</CODE> - the dimension value with which to compare the
+      element. The order of dimension values from least to greatest is
+      <code>{DONTCARE, TRUE, FALSE, 0, 1, 2}</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAtLeast(java.lang.String)"><!-- --></A><H3>
+setAtLeast</H3>
+<PRE>
+public void <B>setAtLeast</B>(java.lang.String&nbsp;minimumDimensionSymbols)</PRE>
+<DL>
+<DD>For each element in this <code>IntersectionMatrix</code>, changes the
+  element to the corresponding minimum dimension symbol if the element is
+  less.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>minimumDimensionSymbols</CODE> - nine dimension symbols with which to
+      compare the elements of this <code>IntersectionMatrix</code>. The
+      order of dimension values from least to greatest is <code>{DONTCARE, TRUE, FALSE, 0, 1, 2}</code>
+      .</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAll(int)"><!-- --></A><H3>
+setAll</H3>
+<PRE>
+public void <B>setAll</B>(int&nbsp;dimensionValue)</PRE>
+<DL>
+<DD>Changes the elements of this <code>IntersectionMatrix</code> to <code>dimensionValue</code>
+  .
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionValue</CODE> - the dimension value to which to set this <code>IntersectionMatrix</code>
+      s elements. Possible values <code>{TRUE, FALSE, DONTCARE, 0, 1, 2}</code>
+      .</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="get(int, int)"><!-- --></A><H3>
+get</H3>
+<PRE>
+public int <B>get</B>(int&nbsp;row,
+               int&nbsp;column)</PRE>
+<DL>
+<DD>Returns the value of one of this <code>IntersectionMatrix</code>s
+  elements.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>row</CODE> - the row of this <code>IntersectionMatrix</code>, indicating
+      the interior, boundary or exterior of the first <code>Geometry</code><DD><CODE>column</CODE> - the column of this <code>IntersectionMatrix</code>,
+      indicating the interior, boundary or exterior of the second <code>Geometry</code>
+<DT><B>Returns:</B><DD>the dimension value at the given matrix position.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDisjoint()"><!-- --></A><H3>
+isDisjoint</H3>
+<PRE>
+public boolean <B>isDisjoint</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  FF*FF****.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s related by
+      this <code>IntersectionMatrix</code> are disjoint</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIntersects()"><!-- --></A><H3>
+isIntersects</H3>
+<PRE>
+public boolean <B>isIntersects</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if <code>isDisjoint</code> returns false.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s related by
+      this <code>IntersectionMatrix</code> intersect</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isTouches(int, int)"><!-- --></A><H3>
+isTouches</H3>
+<PRE>
+public boolean <B>isTouches</B>(int&nbsp;dimensionOfGeometryA,
+                         int&nbsp;dimensionOfGeometryB)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  FT*******, F**T***** or F***T****.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionOfGeometryA</CODE> - the dimension of the first <code>Geometry</code><DD><CODE>dimensionOfGeometryB</CODE> - the dimension of the second <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>
+      s related by this <code>IntersectionMatrix</code> touch; Returns false
+      if both <code>Geometry</code>s are points.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCrosses(int, int)"><!-- --></A><H3>
+isCrosses</H3>
+<PRE>
+public boolean <B>isCrosses</B>(int&nbsp;dimensionOfGeometryA,
+                         int&nbsp;dimensionOfGeometryB)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this geometry crosses the
+ specified geometry.
+ <p>
+ The <code>crosses</code> predicate has the following equivalent definitions:
+ <ul>
+ <li>The geometries have some but not all interior points in common.
+ <li>The DE-9IM Intersection Matrix for the two geometries is
+   <ul>
+    <li>T*T****** (for P/L, P/A, and L/A situations)
+    <li>T*****T** (for L/P, L/A, and A/L situations)
+    <li>0******** (for L/L situations)
+   </ul>
+ </ul>
+ For any other combination of dimensions this predicate returns <code>false</code>.
+ <p>
+ The SFS defined this predicate only for P/L, P/A, L/L, and L/A situations.
+ JTS extends the definition to apply to L/P, A/P and A/L situations as well.
+ This makes the relation symmetric.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionOfGeometryA</CODE> - the dimension of the first <code>Geometry</code><DD><CODE>dimensionOfGeometryB</CODE> - the dimension of the second <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>s
+      related by this <code>IntersectionMatrix</code> cross.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isWithin()"><!-- --></A><H3>
+isWithin</H3>
+<PRE>
+public boolean <B>isWithin</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*F**F***.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the first <code>Geometry</code> is within
+      the second</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isContains()"><!-- --></A><H3>
+isContains</H3>
+<PRE>
+public boolean <B>isContains</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*****FF*.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the first <code>Geometry</code> contains the
+      second</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCovers()"><!-- --></A><H3>
+isCovers</H3>
+<PRE>
+public boolean <B>isCovers</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+    <code>T*****FF*</code>
+ or <code>*T****FF*</code>
+ or <code>***T**FF*</code>
+ or <code>****T*FF*</code>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the first <code>Geometry</code> covers the
+      second</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCoveredBy()"><!-- --></A><H3>
+isCoveredBy</H3>
+<PRE>
+public boolean <B>isCoveredBy</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+    <code>T*F**F***</code>
+ or <code>*TF**F***</code>
+ or <code>**FT*F***</code>
+ or <code>**F*TF***</code>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the first <code>Geometry</code>
+ is covered by the second</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEquals(int, int)"><!-- --></A><H3>
+isEquals</H3>
+<PRE>
+public boolean <B>isEquals</B>(int&nbsp;dimensionOfGeometryA,
+                        int&nbsp;dimensionOfGeometryB)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*F**FFF*.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionOfGeometryA</CODE> - the dimension of the first <code>Geometry</code><DD><CODE>dimensionOfGeometryB</CODE> - the dimension of the second <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>
+      s related by this <code>IntersectionMatrix</code> are equal; the
+      <code>Geometry</code>s must have the same dimension for this function
+      to return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isOverlaps(int, int)"><!-- --></A><H3>
+isOverlaps</H3>
+<PRE>
+public boolean <B>isOverlaps</B>(int&nbsp;dimensionOfGeometryA,
+                          int&nbsp;dimensionOfGeometryB)</PRE>
+<DL>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  <UL>
+    <LI> T*T***T** (for two points or two surfaces)
+    <LI> 1*T***T** (for two curves)
+  </UL>
+  .
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimensionOfGeometryA</CODE> - the dimension of the first <code>Geometry</code><DD><CODE>dimensionOfGeometryB</CODE> - the dimension of the second <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if the two <code>Geometry</code>
+      s related by this <code>IntersectionMatrix</code> overlap. For this
+      function to return <code>true</code>, the <code>Geometry</code>s must
+      be two points, two curves or two surfaces.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="matches(java.lang.String)"><!-- --></A><H3>
+matches</H3>
+<PRE>
+public boolean <B>matches</B>(java.lang.String&nbsp;requiredDimensionSymbols)</PRE>
+<DL>
+<DD>Returns whether the elements of this <code>IntersectionMatrix</code>
+  satisfies the required dimension symbols.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>requiredDimensionSymbols</CODE> - nine dimension symbols with which to
+      compare the elements of this <code>IntersectionMatrix</code>. Possible
+      values are <code>{T, F, * , 0, 1, 2}</code>.
+<DT><B>Returns:</B><DD><code>true</code> if this <code>IntersectionMatrix</code>
+      matches the required dimension symbols</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transpose()"><!-- --></A><H3>
+transpose</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A> <B>transpose</B>()</PRE>
+<DL>
+<DD>Transposes this IntersectionMatrix.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>IntersectionMatrix</code> as a convenience</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Returns a nine-character <code>String</code> representation of this <code>IntersectionMatrix</code>
+  .
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the nine dimension symbols of this <code>IntersectionMatrix</code>
+      in row-major order.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntersectionMatrix.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineSegment.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineSegment.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineSegment.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,999 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+LineSegment
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.LineSegment class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineSegment";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineSegment.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class LineSegment</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.LineSegment</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>LineSegment</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable, java.io.Serializable</DL>
+
+<P>
+Represents a line segment defined by two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+ Provides methods to compute various geometric properties
+ and relationships of line segments.
+ <p>
+ This class is designed to be easily mutable (to the extent of
+ having its contained points public).
+ This supports a common pattern of reusing a single LineSegment
+ object as a way of computing segment properties on the
+ segments defined by arrays or lists of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.LineSegment">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#p0">p0</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#p1">p1</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#LineSegment()">LineSegment</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#LineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">LineSegment</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+            <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#LineSegment(com.vividsolutions.jts.geom.LineSegment)">LineSegment</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#angle()">angle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the angle that the vector defined by this segment
+ makes with the X-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#closestPoint(com.vividsolutions.jts.geom.Coordinate)">closestPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the closest point on this line segment to another point.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#closestPoints(com.vividsolutions.jts.geom.LineSegment)">closestPoints</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the closest points on two line segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this object with the specified object for order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#distance(com.vividsolutions.jts.geom.Coordinate)">distance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the distance between this line segment and a given point.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#distance(com.vividsolutions.jts.geom.LineSegment)">distance</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the distance between this line segment and another segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#distancePerpendicular(com.vividsolutions.jts.geom.Coordinate)">distancePerpendicular</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the perpendicular distance between the (infinite) line defined
+ by this line segment and a point.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if <code>other</code> has the same values for
+  its points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#equalsTopo(com.vividsolutions.jts.geom.LineSegment)">equalsTopo</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if <code>other</code> is
+  topologically equal to this LineSegment (e.g.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#getLength()">getLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the length of the line segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#intersection(com.vividsolutions.jts.geom.LineSegment)">intersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes an intersection point between two segments, if there is one.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#isHorizontal()">isHorizontal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the segment is horizontal.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#isVertical()">isVertical</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the segment is vertical.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#midPoint()">midPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the midpoint of the segment</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Puts the line segment into a normalized form.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#orientationIndex(com.vividsolutions.jts.geom.LineSegment)">orientationIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines the orientation of a LineSegment relative to this segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#pointAlong(double)">pointAlong</A></B>(double&nbsp;segmentLengthFraction)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> that lies a given
+ fraction along the line defined by this segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#project(com.vividsolutions.jts.geom.Coordinate)">project</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the projection of a point onto the line determined
+ by this line segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#project(com.vividsolutions.jts.geom.LineSegment)">project</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Project a line segment onto this line segment and return the resulting
+ line segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#projectionFactor(com.vividsolutions.jts.geom.Coordinate)">projectionFactor</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the Projection Factor for the projection of the point p
+ onto this LineSegment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#reverse()">reverse</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reverses the direction of the line segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#setCoordinates(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">setCoordinates</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#setCoordinates(com.vividsolutions.jts.geom.LineSegment)">setCoordinates</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="p0"><!-- --></A><H3>
+p0</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p0</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="p1"><!-- --></A><H3>
+p1</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p1</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+LineSegment</H3>
+<PRE>
+public <B>LineSegment</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="LineSegment(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+LineSegment</H3>
+<PRE>
+public <B>LineSegment</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="LineSegment()"><!-- --></A><H3>
+LineSegment</H3>
+<PRE>
+public <B>LineSegment</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setCoordinates(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+setCoordinates</H3>
+<PRE>
+public void <B>setCoordinates</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setCoordinates(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+setCoordinates</H3>
+<PRE>
+public void <B>setCoordinates</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength()"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>()</PRE>
+<DL>
+<DD>Computes the length of the line segment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the length of the line segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isHorizontal()"><!-- --></A><H3>
+isHorizontal</H3>
+<PRE>
+public boolean <B>isHorizontal</B>()</PRE>
+<DL>
+<DD>Tests whether the segment is horizontal.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the segment is horizontal</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isVertical()"><!-- --></A><H3>
+isVertical</H3>
+<PRE>
+public boolean <B>isVertical</B>()</PRE>
+<DL>
+<DD>Tests whether the segment is vertical.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the segment is vertical</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="orientationIndex(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+orientationIndex</H3>
+<PRE>
+public int <B>orientationIndex</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</PRE>
+<DL>
+<DD>Determines the orientation of a LineSegment relative to this segment.
+ The concept of orientation is specified as follows:
+ Given two line segments A and L,
+ <ul
+ <li>A is to the left of a segment L if A lies wholly in the
+ closed half-plane lying to the left of L
+ <li>A is to the right of a segment L if A lies wholly in the
+ closed half-plane lying to the right of L
+ <li>otherwise, A has indeterminate orientation relative to L. This
+ happens if A is collinear with L or if A crosses the line determined by L.
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seg</CODE> - the LineSegment to compare
+<DT><B>Returns:</B><DD>1 if <code>seg</code> is to the left of this segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reverse()"><!-- --></A><H3>
+reverse</H3>
+<PRE>
+public void <B>reverse</B>()</PRE>
+<DL>
+<DD>Reverses the direction of the line segment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public void <B>normalize</B>()</PRE>
+<DL>
+<DD>Puts the line segment into a normalized form.
+ This is useful for using line segments in maps and indexes when
+ topological equality rather than exact equality is desired.
+ A segment in normalized form has the first point smaller
+ than the second (according to the standard ordering on <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="angle()"><!-- --></A><H3>
+angle</H3>
+<PRE>
+public double <B>angle</B>()</PRE>
+<DL>
+<DD>Computes the angle that the vector defined by this segment
+ makes with the X-axis.
+ The angle will be in the range [ -PI, PI ] radians.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the angle this segment makes with the X-axis (in radians)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="midPoint()"><!-- --></A><H3>
+midPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>midPoint</B>()</PRE>
+<DL>
+<DD>Computes the midpoint of the segment
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the midpoint of the segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distance(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public double <B>distance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</PRE>
+<DL>
+<DD>Computes the distance between this line segment and another segment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the distance to the other segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distance(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public double <B>distance</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Computes the distance between this line segment and a given point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the distance from this segment to the given point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distancePerpendicular(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+distancePerpendicular</H3>
+<PRE>
+public double <B>distancePerpendicular</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Computes the perpendicular distance between the (infinite) line defined
+ by this line segment and a point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the perpendicular distance between the defined line and the given point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="pointAlong(double)"><!-- --></A><H3>
+pointAlong</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>pointAlong</B>(double&nbsp;segmentLengthFraction)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> that lies a given
+ fraction along the line defined by this segment.
+ A fraction of <code>0.0</code> returns the start point of the segment;
+ a fraction of <code>1.0</code> returns the end point of the segment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segmentLengthFraction</CODE> - the fraction of the segment length along the line
+<DT><B>Returns:</B><DD>the point at that distance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="projectionFactor(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+projectionFactor</H3>
+<PRE>
+public double <B>projectionFactor</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Computes the Projection Factor for the projection of the point p
+ onto this LineSegment.  The Projection Factor is the constant r
+ by which the vector for this segment must be multiplied to
+ equal the vector for the projection of p on the line
+ defined by this segment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="project(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+project</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>project</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Compute the projection of a point onto the line determined
+ by this line segment.
+ <p>
+ Note that the projected point
+ may lie outside the line segment.  If this is the case,
+ the projection factor will lie outside the range [0.0, 1.0].
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="project(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+project</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A> <B>project</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</PRE>
+<DL>
+<DD>Project a line segment onto this line segment and return the resulting
+ line segment.  The returned line segment will be a subset of
+ the target line line segment.  This subset may be null, if
+ the segments are oriented in such a way that there is no projection.
+ <p>
+ Note that the returned line may have zero length (i.e. the same endpoints).
+ This can happen for instance if the lines are perpendicular to one another.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seg</CODE> - the line segment to project
+<DT><B>Returns:</B><DD>the projected line segment, or <code>null</code> if there is no overlap</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="closestPoint(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+closestPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>closestPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Computes the closest point on this line segment to another point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p</CODE> - the point to find the closest point to
+<DT><B>Returns:</B><DD>a Coordinate which is the closest point on the line segment to the point p</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="closestPoints(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+closestPoints</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>closestPoints</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;line)</PRE>
+<DL>
+<DD>Computes the closest points on two line segments.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a pair of Coordinates which are the closest points on the line segments</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>intersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;line)</PRE>
+<DL>
+<DD>Computes an intersection point between two segments, if there is one.
+ There may be 0, 1 or many intersection points between two segments.
+ If there are 0, null is returned. If there is 1 or more, a single one
+ is returned (chosen at the discretion of the algorithm).  If
+ more information is required about the details of the intersection,
+ the <A HREF="../../../../com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><CODE>RobustLineIntersector</CODE></A> class should be used.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>line</CODE> - 
+<DT><B>Returns:</B><DD>an intersection point, or <code>null</code> if there is none</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Returns <code>true</code> if <code>other</code> has the same values for
+  its points.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if <code>other</code> is a <code>LineSegment</code>
+      with the same values for the x and y ordinates.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Compares this object with the specified object for order.
+  Uses the standard lexicographic ordering for the points in the LineSegment.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - the <code>LineSegment</code> with which this <code>LineSegment</code>
+      is being compared
+<DT><B>Returns:</B><DD>a negative integer, zero, or a positive integer as this <code>LineSegment</code>
+      is less than, equal to, or greater than the specified <code>LineSegment</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsTopo(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+equalsTopo</H3>
+<PRE>
+public boolean <B>equalsTopo</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;other)</PRE>
+<DL>
+<DD>Returns <code>true</code> if <code>other</code> is
+  topologically equal to this LineSegment (e.g. irrespective
+  of orientation).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - a <code>LineSegment</code> with which to do the comparison.
+<DT><B>Returns:</B><DD><code>true</code> if <code>other</code> is a <code>LineSegment</code>
+      with the same values for the x and y ordinates.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineSegment.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineString.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineString.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LineString.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1068 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+LineString
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.LineString class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineString";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class LineString</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.LineString</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>LineString</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></DL>
+
+<P>
+Basic implementation of <code>LineString</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.LineString">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#LineString(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)">LineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;points,
+           <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+           int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#LineString(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)">LineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;points,
+           <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code>'s
+  coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this Geometry and its
+  component Geometry's.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></B>(java.lang.Object&nbsp;o,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the boundary of this geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a vertex of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinateN(int)">getCoordinateN</A></B>(int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>Geometry</code> s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinateSequence()">getCoordinateSequence</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getEndPoint()">getEndPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getLength()">getLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the length of this <code>LineString</code></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getNumPoints()">getNumPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the count of this <code>Geometry</code>s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getPointN(int)">getPointN</A></B>(int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getStartPoint()">getStartPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isClosed()">isClosed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isCoordinate(com.vividsolutions.jts.geom.Coordinate)">isCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the given point is a vertex of this <code>LineString</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isEmpty()">isEmpty</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the two <code>Geometry</code>s are equal, from the point
+  of view of the <code>equalsExact</code> method.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isRing()">isRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Normalizes a LineString.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#reverse()">reverse</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> whose coordinates are in the reverse
+ order of this objects</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getArea()">getArea</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineString(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+LineString</H3>
+<PRE>
+public <B>LineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;points,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                  int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+</DL>
+<HR>
+
+<A NAME="LineString(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+LineString</H3>
+<PRE>
+public <B>LineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;points,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>points</CODE> - the points of the linestring, or <code>null</code>
+      to create the empty geometry. Consecutive points may not be equal.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns this <code>Geometry</code> s vertices. If you modify the coordinates
+  in this array, be sure to call #geometryChanged afterwards.
+  The <code>Geometry</code>s contained by composite <code>Geometry</code>s
+  must be Geometry's; that is, they must implement <code>getCoordinates</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinates()">getCoordinates</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the vertices of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateSequence()"><!-- --></A><H3>
+getCoordinateSequence</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>getCoordinateSequence</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateN(int)"><!-- --></A><H3>
+getCoordinateN</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateN</B>(int&nbsp;n)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns a vertex of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinate()">getCoordinate</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> which is a vertex of this <code>Geometry</code>.
+          Returns <code>null</code> if this Geometry is empty</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the class implementing this interface, whether
+      or not this object is the empty geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the boundary of the class implementing this
+      interface, whether or not this object is the empty geometry. Returns
+      <code>Dimension.FALSE</code> if the boundary is the empty geometry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEmpty()"><!-- --></A><H3>
+isEmpty</H3>
+<PRE>
+public boolean <B>isEmpty</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEmpty()">isEmpty</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> equals the empty
+      geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumPoints()"><!-- --></A><H3>
+getNumPoints</H3>
+<PRE>
+public int <B>getNumPoints</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the count of this <code>Geometry</code>s vertices. The <code>Geometry</code>
+  s contained by composite <code>Geometry</code>s must be
+  Geometry's; that is, they must implement <code>getNumPoints</code>
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumPoints()">getNumPoints</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of vertices in this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPointN(int)"><!-- --></A><H3>
+getPointN</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>getPointN</B>(int&nbsp;n)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getStartPoint()"><!-- --></A><H3>
+getStartPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>getStartPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEndPoint()"><!-- --></A><H3>
+getEndPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A> <B>getEndPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isClosed()"><!-- --></A><H3>
+isClosed</H3>
+<PRE>
+public boolean <B>isClosed</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRing()"><!-- --></A><H3>
+isRing</H3>
+<PRE>
+public boolean <B>isRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
+      interface</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength()"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>()</PRE>
+<DL>
+<DD>Returns the length of this <code>LineString</code>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getLength()">getLength</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the area of the polygon</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Gets the boundary of this geometry.
+ The boundary of a lineal geometry is always a zero-dimensional geometry (which may be empty).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the boundary geometry<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reverse()"><!-- --></A><H3>
+reverse</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>reverse</B>()</PRE>
+<DL>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> whose coordinates are in the reverse
+ order of this objects
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> with coordinates in the reverse order</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCoordinate(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isCoordinate</H3>
+<PRE>
+public boolean <B>isCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Returns true if the given point is a vertex of this <code>LineString</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - the <code>Coordinate</code> to check
+<DT><B>Returns:</B><DD><code>true</code> if <code>pt</code> is one of this <code>LineString</code>
+      's vertices</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEnvelopeInternal()"><!-- --></A><H3>
+computeEnvelopeInternal</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>computeEnvelopeInternal</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+  Unlike <code>getEnvelopeInternal</code>, this method calculates the <code>Envelope</code>
+  each time it is called; <code>getEnvelopeInternal</code> caches the result
+  of this method.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>Geometry</code>s bounding box; if the <code>Geometry</code>
+      is empty, <code>Envelope#isNull</code> will return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this and the other <code>Geometry</code>
+   are of the same class and have equal internal data.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code>'s
+  coordinates. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state. 
+  Note that you cannot use this
+  method to
+  modify this Geometry if its underlying CoordinateSequence's #get method
+  returns a copy of the Coordinate, rather than the actual Coordinate stored
+  (if it even stores Coordinates at all).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>'s
+      coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).
+  Only GeometryCollections and subclasses
+  have subelement Geometry's.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code> (and
+      its children, if it is a <code>GeometryCollection</code>).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this Geometry and its
+  component Geometry's.  Only GeometryCollections and
+  Polygons have component Geometry's; for Polygons they are the LinearRings
+  of the shell and holes.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> object.
+ (including all coordinates contained by it).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#clone()">clone</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of this instance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public void <B>normalize</B>()</PRE>
+<DL>
+<DD>Normalizes a LineString.  A normalized linestring
+ has the first point which is not equal to it's reflected point
+ less than the reflected point.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#normalize()">normalize</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEquivalentClass(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+isEquivalentClass</H3>
+<PRE>
+protected boolean <B>isEquivalentClass</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether the two <code>Geometry</code>s are equal, from the point
+  of view of the <code>equalsExact</code> method. Called by <code>equalsExact</code>
+  . In general, two <code>Geometry</code> classes are considered to be
+  "equivalent" only if they are the same class. An exception is <code>LineString</code>
+  , which is considered to be equivalent to its subclasses.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+      for equality
+<DT><B>Returns:</B><DD><code>true</code> if the classes of the two <code>Geometry</code>
+      s are considered to be equal by the <code>equalsExact</code> method.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;o,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code><DD><CODE>comp</CODE> - a <code>CoordinateSequenceComparator</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LinearRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LinearRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/LinearRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,395 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+LinearRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.LinearRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LinearRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class LinearRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.LineString</A>
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.LinearRing</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>LinearRing</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></DL>
+
+<P>
+Models an OGC SFS <code>LinearRing</code>.
+ A LinearRing is a LineString which is both closed and simple.
+ In other words,
+ the first and last coordinate in the ring must be equal,
+ and the interior of the ring must not self-intersect.
+ Either orientation of the ring is allowed.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.LinearRing">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html#LinearRing(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)">LinearRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;points,
+           <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+           int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html#LinearRing(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)">LinearRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;points,
+           <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>LinearRing</code> with the vertices
+ specifed by the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>Dimension.FALSE</code>, since by definition LinearRings do
+ not have a boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html#isSimple()">isSimple</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code>, since by definition LinearRings are always simple.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.LineString"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#clone()">clone</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#compareToSameClass(java.lang.Object)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#computeEnvelopeInternal()">computeEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getBoundary()">getBoundary</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinateN(int)">getCoordinateN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinates()">getCoordinates</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getCoordinateSequence()">getCoordinateSequence</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getDimension()">getDimension</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getEndPoint()">getEndPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getLength()">getLength</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getNumPoints()">getNumPoints</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getPointN(int)">getPointN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getStartPoint()">getStartPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isClosed()">isClosed</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isCoordinate(com.vividsolutions.jts.geom.Coordinate)">isCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isEmpty()">isEmpty</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#isRing()">isRing</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#normalize()">normalize</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#reverse()">reverse</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getArea()">getArea</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LinearRing(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+LinearRing</H3>
+<PRE>
+public <B>LinearRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;points,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                  int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>LinearRing</code> with the given points.
+<P>
+<DT><B>Parameters:</B><DD><CODE>points</CODE> - points forming a closed and simple linestring, or
+      <code>null</code> or an empty array to create the empty geometry.
+      This array must not contain <code>null</code> elements.<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>LinearRing</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>LinearRing</code></DL>
+<HR>
+
+<A NAME="LinearRing(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+LinearRing</H3>
+<PRE>
+public <B>LinearRing</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;points,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD>Constructs a <code>LinearRing</code> with the vertices
+ specifed by the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>points</CODE> - a sequence points forming a closed and simple linestring, or
+      <code>null</code> to create the empty geometry.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD>Returns <code>Dimension.FALSE</code>, since by definition LinearRings do
+ not have a boundary.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>Dimension.FALSE</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple()"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>()</PRE>
+<DL>
+<DD>Returns <code>true</code>, since by definition LinearRings are always simple.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()"><CODE>Geometry.isSimple()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Location.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Location.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Location.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,369 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Location
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Location class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Location";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Location.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Location</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Location</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Location</B><DT>extends java.lang.Object</DL>
+
+<P>
+Constants representing the location of a point relative to a geometry. They
+  can also be thought of as the row or column index of a DE-9IM matrix. For a
+  description of the DE-9IM, see the <A
+  HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
+  Specification for SQL</A> .
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html#BOUNDARY">BOUNDARY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DE-9IM row index of the boundary of the first geometry and column index of
+  the boundary of the second geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html#EXTERIOR">EXTERIOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DE-9IM row index of the exterior of the first geometry and column index of
+  the exterior of the second geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html#INTERIOR">INTERIOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DE-9IM row index of the interior of the first geometry and column index of
+  the interior of the second geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html#NONE">NONE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Used for uninitialized location values.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html#Location()">Location</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;char</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html#toLocationSymbol(int)">toLocationSymbol</A></B>(int&nbsp;locationValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts the location value to a location symbol, for example, <code>EXTERIOR => 'e'</code>
+  .</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="INTERIOR"><!-- --></A><H3>
+INTERIOR</H3>
+<PRE>
+public static final int <B>INTERIOR</B></PRE>
+<DL>
+<DD>DE-9IM row index of the interior of the first geometry and column index of
+  the interior of the second geometry. Location value for the interior of a
+  geometry.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Location.INTERIOR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="BOUNDARY"><!-- --></A><H3>
+BOUNDARY</H3>
+<PRE>
+public static final int <B>BOUNDARY</B></PRE>
+<DL>
+<DD>DE-9IM row index of the boundary of the first geometry and column index of
+  the boundary of the second geometry. Location value for the boundary of a
+  geometry.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Location.BOUNDARY">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="EXTERIOR"><!-- --></A><H3>
+EXTERIOR</H3>
+<PRE>
+public static final int <B>EXTERIOR</B></PRE>
+<DL>
+<DD>DE-9IM row index of the exterior of the first geometry and column index of
+  the exterior of the second geometry. Location value for the exterior of a
+  geometry.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Location.EXTERIOR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="NONE"><!-- --></A><H3>
+NONE</H3>
+<PRE>
+public static final int <B>NONE</B></PRE>
+<DL>
+<DD>Used for uninitialized location values.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.Location.NONE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Location()"><!-- --></A><H3>
+Location</H3>
+<PRE>
+public <B>Location</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toLocationSymbol(int)"><!-- --></A><H3>
+toLocationSymbol</H3>
+<PRE>
+public static char <B>toLocationSymbol</B>(int&nbsp;locationValue)</PRE>
+<DL>
+<DD>Converts the location value to a location symbol, for example, <code>EXTERIOR => 'e'</code>
+  .
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>locationValue</CODE> - either EXTERIOR, BOUNDARY, INTERIOR or NONE
+<DT><B>Returns:</B><DD>either 'e', 'b', 'i' or '-'</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Location.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiLineString.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiLineString.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiLineString.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,507 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+MultiLineString
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.MultiLineString class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MultiLineString";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MultiLineString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class MultiLineString</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.GeometryCollection</A>
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.MultiLineString</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MultiLineString</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></DL>
+
+<P>
+Basic implementation of <code>MultiLineString</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.MultiLineString">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#geometries">geometries</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.GeometryFactory)">MultiLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]&nbsp;lineStrings,
+                <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.PrecisionModel, int)">MultiLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]&nbsp;lineStrings,
+                <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the boundary of this geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#isClosed()">isClosed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html#reverse()">reverse</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A> in the reverse
+ order to this object.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#clone()">clone</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#computeEnvelopeInternal()">computeEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getArea()">getArea</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinates()">getCoordinates</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getLength()">getLength</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumPoints()">getNumPoints</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#isEmpty()">isEmpty</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#normalize()">normalize</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+MultiLineString</H3>
+<PRE>
+public <B>MultiLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]&nbsp;lineStrings,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                       int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>MultiLineString</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>lineStrings</CODE> - the <code>LineString</code>s for this <code>MultiLineString</code>
+      , or <code>null</code> or an empty array to create the empty geometry.
+      Elements may be empty <code>LineString</code>s, but not <code>null</code>
+      s.<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>MultiLineString</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>MultiLineString</code></DL>
+<HR>
+
+<A NAME="MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+MultiLineString</H3>
+<PRE>
+public <B>MultiLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>[]&nbsp;lineStrings,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>lineStrings</CODE> - the <code>LineString</code>s for this <code>MultiLineString</code>,
+            or <code>null</code> or an empty array to create the empty
+            geometry. Elements may be empty <code>LineString</code>s,
+            but not <code>null</code>s.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isClosed()"><!-- --></A><H3>
+isClosed</H3>
+<PRE>
+public boolean <B>isClosed</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Gets the boundary of this geometry.
+ The boundary of a lineal geometry is always a zero-dimensional geometry (which may be empty).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the boundary geometry<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reverse()"><!-- --></A><H3>
+reverse</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A> <B>reverse</B>()</PRE>
+<DL>
+<DD>Creates a <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A> in the reverse
+ order to this object.
+ Both the order of the component LineStrings
+ and the order of their coordinate sequences
+ are reversed.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A> in the reverse order</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MultiLineString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPoint.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPoint.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPoint.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,510 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+MultiPoint
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.MultiPoint class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MultiPoint";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MultiPoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class MultiPoint</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.GeometryCollection</A>
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.MultiPoint</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MultiPoint</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></DL>
+
+<P>
+Models a collection of <code>Point</code>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.MultiPoint">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#geometries">geometries</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.GeometryFactory)">MultiPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]&nbsp;points,
+           <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.PrecisionModel, int)">MultiPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]&nbsp;points,
+           <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+           int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the boundary of this geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <code>Coordinate</code> at the given position.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html#isValid()">isValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests the validity of this <code>Geometry</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#clone()">clone</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#computeEnvelopeInternal()">computeEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getArea()">getArea</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinates()">getCoordinates</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getLength()">getLength</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumPoints()">getNumPoints</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#isEmpty()">isEmpty</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#normalize()">normalize</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+MultiPoint</H3>
+<PRE>
+public <B>MultiPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]&nbsp;points,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                  int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>MultiPoint</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>points</CODE> - the <code>Point</code>s for this <code>MultiPoint</code>
+      , or <code>null</code> or an empty array to create the empty geometry.
+      Elements may be empty <code>Point</code>s, but not <code>null</code>s.<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>MultiPoint</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>MultiPoint</code></DL>
+<HR>
+
+<A NAME="MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+MultiPoint</H3>
+<PRE>
+public <B>MultiPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>[]&nbsp;points,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>points</CODE> - the <code>Point</code>s for this <code>MultiPoint</code>
+      , or <code>null</code> or an empty array to create the empty geometry.
+      Elements may be empty <code>Point</code>s, but not <code>null</code>s.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Gets the boundary of this geometry.
+ Zero-dimensional geometries have no boundary by definition,
+ so an empty GeometryCollection is returned.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an empty GeometryCollection<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid()"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Tests the validity of this <code>Geometry</code>.
+  Subclasses provide their own definition of "valid".
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> is valid<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><CODE>IsValidOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;n)</PRE>
+<DL>
+<DD>Returns the <code>Coordinate</code> at the given position.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>n</CODE> - the index of the <code>Coordinate</code> to retrieve, beginning
+      at 0
+<DT><B>Returns:</B><DD>the <code>n</code>th <code>Coordinate</code></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MultiPoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPolygon.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPolygon.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/MultiPolygon.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,508 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+MultiPolygon
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.MultiPolygon class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MultiPolygon";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MultiPolygon.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class MultiPolygon</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.GeometryCollection</A>
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.MultiPolygon</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MultiPolygon</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></DL>
+
+<P>
+Basic implementation of <code>MultiPolygon</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.MultiPolygon">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#geometries">geometries</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.GeometryFactory)">MultiPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]&nbsp;polygons,
+             <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.PrecisionModel, int)">MultiPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]&nbsp;polygons,
+             <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+             int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the boundary of this geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html#isSimple()">isSimple</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#clone()">clone</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#computeEnvelopeInternal()">computeEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getArea()">getArea</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinates()">getCoordinates</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getLength()">getLength</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getNumPoints()">getNumPoints</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#isEmpty()">isEmpty</A>, <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#normalize()">normalize</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+MultiPolygon</H3>
+<PRE>
+public <B>MultiPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]&nbsp;polygons,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                    int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>MultiPolygon</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>polygons</CODE> - the <code>Polygon</code>s for this <code>MultiPolygon</code>
+      , or <code>null</code> or an empty array to create the empty geometry.
+      Elements may be empty <code>Polygon</code>s, but not <code>null</code>
+      s. The polygons must conform to the assertions specified in the <A
+      HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
+      Specification for SQL</A> .<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>MultiPolygon</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>MultiPolygon</code></DL>
+<HR>
+
+<A NAME="MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+MultiPolygon</H3>
+<PRE>
+public <B>MultiPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>[]&nbsp;polygons,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>polygons</CODE> - the <code>Polygon</code>s for this <code>MultiPolygon</code>,
+            or <code>null</code> or an empty array to create the empty
+            geometry. Elements may be empty <code>Polygon</code>s, but
+            not <code>null</code>s. The polygons must conform to the
+            assertions specified in the <A
+            HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple
+            Features Specification for SQL</A>.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple()"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Tests whether this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.
+ In general, the SFS specification of simplicity
+ follows the rule:
+  <UL>
+    <LI> A Geometry is simple iff the only self-intersections are at
+    boundary points.
+  </UL>
+ Simplicity is defined for each <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> subclass as follows:
+ <ul>
+ <li>Valid polygonal geometries are simple by definition, so
+ <code>isSimple</code> trivially returns true.
+ <li>Linear geometries are simple iff they do not self-intersect at points
+ other than boundary points.
+ <li>Zero-dimensional geometries (points) are simple iff they have no
+ repeated points.
+ <li>Empty <code>Geometry</code>s are always simple
+ <ul>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> has any points of
+      self-tangency, self-intersection or other anomalous points<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()"><CODE>Geometry.isValid()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Computes the boundary of this geometry
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a lineal geometry (which may be empty)<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MultiPolygon.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.GeometryCollection">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Point.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Point.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Point.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,968 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Point
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Point class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Point";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Point.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Point</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Point</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Point</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></DL>
+
+<P>
+Basic implementation of <code>Point</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.Point">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#Point(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.PrecisionModel, int)">Point</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coordinate,
+      <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+      int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#Point(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)">Point</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates,
+      <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code>'s
+  coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this Geometry and its
+  component Geometry's.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A> object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></B>(java.lang.Object&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></B>(java.lang.Object&nbsp;other,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the boundary of this geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a vertex of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>Geometry</code> s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getCoordinateSequence()">getCoordinateSequence</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getNumPoints()">getNumPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the count of this <code>Geometry</code>s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getX()">getX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#getY()">getY</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#isEmpty()">isEmpty</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#isSimple()">isSimple</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#isValid()">isValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests the validity of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ).</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getArea()">getArea</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getLength()">getLength</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Point(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+Point</H3>
+<PRE>
+public <B>Point</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coordinate,
+             <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+             int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>Point</code> with the given coordinate.
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinate</CODE> - the coordinate on which to base this <code>Point</code>
+      , or <code>null</code> to create the empty geometry.<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>Point</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>Point</code></DL>
+<HR>
+
+<A NAME="Point(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+Point</H3>
+<PRE>
+public <B>Point</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordinates,
+             <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - contains the single coordinate on which to base this <code>Point</code>
+      , or <code>null</code> to create the empty geometry.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns this <code>Geometry</code> s vertices. If you modify the coordinates
+  in this array, be sure to call #geometryChanged afterwards.
+  The <code>Geometry</code>s contained by composite <code>Geometry</code>s
+  must be Geometry's; that is, they must implement <code>getCoordinates</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinates()">getCoordinates</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the vertices of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumPoints()"><!-- --></A><H3>
+getNumPoints</H3>
+<PRE>
+public int <B>getNumPoints</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the count of this <code>Geometry</code>s vertices. The <code>Geometry</code>
+  s contained by composite <code>Geometry</code>s must be
+  Geometry's; that is, they must implement <code>getNumPoints</code>
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumPoints()">getNumPoints</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of vertices in this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEmpty()"><!-- --></A><H3>
+isEmpty</H3>
+<PRE>
+public boolean <B>isEmpty</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEmpty()">isEmpty</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> equals the empty
+      geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple()"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Tests whether this <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.
+ In general, the SFS specification of simplicity
+ follows the rule:
+  <UL>
+    <LI> A Geometry is simple iff the only self-intersections are at
+    boundary points.
+  </UL>
+ Simplicity is defined for each <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> subclass as follows:
+ <ul>
+ <li>Valid polygonal geometries are simple by definition, so
+ <code>isSimple</code> trivially returns true.
+ <li>Linear geometries are simple iff they do not self-intersect at points
+ other than boundary points.
+ <li>Zero-dimensional geometries (points) are simple iff they have no
+ repeated points.
+ <li>Empty <code>Geometry</code>s are always simple
+ <ul>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> has any points of
+      self-tangency, self-intersection or other anomalous points<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()"><CODE>Geometry.isValid()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid()"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Tests the validity of this <code>Geometry</code>.
+  Subclasses provide their own definition of "valid".
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> is valid<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><CODE>IsValidOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the class implementing this interface, whether
+      or not this object is the empty geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the boundary of the class implementing this
+      interface, whether or not this object is the empty geometry. Returns
+      <code>Dimension.FALSE</code> if the boundary is the empty geometry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getX()"><!-- --></A><H3>
+getX</H3>
+<PRE>
+public double <B>getX</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getY()"><!-- --></A><H3>
+getY</H3>
+<PRE>
+public double <B>getY</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns a vertex of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinate()">getCoordinate</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> which is a vertex of this <code>Geometry</code>.
+          Returns <code>null</code> if this Geometry is empty</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
+      interface</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Gets the boundary of this geometry.
+ Zero-dimensional geometries have no boundary by definition,
+ so an empty GeometryCollection is returned.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an empty GeometryCollection<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEnvelopeInternal()"><!-- --></A><H3>
+computeEnvelopeInternal</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>computeEnvelopeInternal</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+  Unlike <code>getEnvelopeInternal</code>, this method calculates the <code>Envelope</code>
+  each time it is called; <code>getEnvelopeInternal</code> caches the result
+  of this method.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>Geometry</code>s bounding box; if the <code>Geometry</code>
+      is empty, <code>Envelope#isNull</code> will return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this and the other <code>Geometry</code>
+   are of the same class and have equal internal data.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code>'s
+  coordinates. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state. 
+  Note that you cannot use this
+  method to
+  modify this Geometry if its underlying CoordinateSequence's #get method
+  returns a copy of the Coordinate, rather than the actual Coordinate stored
+  (if it even stores Coordinates at all).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>'s
+      coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).
+  Only GeometryCollections and subclasses
+  have subelement Geometry's.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code> (and
+      its children, if it is a <code>GeometryCollection</code>).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this Geometry and its
+  component Geometry's.  Only GeometryCollections and
+  Polygons have component Geometry's; for Polygons they are the LinearRings
+  of the shell and holes.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A> object.
+ (including all coordinates contained by it).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#clone()">clone</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of this instance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public void <B>normalize</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ). Normal form is a unique representation for <code>Geometry</code>
+  s. It can be used to test whether two <code>Geometry</code>s are equal
+  in a way that is independent of the ordering of the coordinates within
+  them. Normal form equality is a stronger condition than topological
+  equality, but weaker than pointwise equality. The definitions for normal
+  form use the standard lexicographical ordering for coordinates. "Sorted in
+  order of coordinates" means the obvious extension of this ordering to
+  sequences of coordinates.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#normalize()">normalize</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;other)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;other,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code><DD><CODE>comp</CODE> - a <code>CoordinateSequenceComparator</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateSequence()"><!-- --></A><H3>
+getCoordinateSequence</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>getCoordinateSequence</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Point.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Polygon.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Polygon.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Polygon.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Polygon
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Polygon class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Polygon";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Polygon.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Polygon</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Polygon</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Polygon</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></DL>
+
+<P>
+Represents a linear polygon, which may include holes.
+ The shell and holes of the polygon are represented by <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s.
+ In a valid polygon, holes may touch the shell or other holes at a single point.
+ However, no sequence of touching holes may split the polygon into two pieces.
+ The orientation of the rings in the polygon does not matter.
+ <p>
+  The shell and holes must conform to the assertions specified in the <A
+  HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
+  Specification for SQL</A> .
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.Polygon">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#holes">holes</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The interior boundaries, if any.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#shell">shell</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The exterior boundary,
+ or <code>null</code> if this <code>Polygon</code>
+  is empty.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#envelope">envelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#factory">factory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#SRID">SRID</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.GeometryFactory)">Polygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+        <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]&nbsp;holes,
+        <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>Polygon</code> with the given exterior boundary and
+  interior boundaries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.PrecisionModel, int)">Polygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+        <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]&nbsp;holes,
+        <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+        int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.PrecisionModel, int)">Polygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+        <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+        int&nbsp;SRID)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code>'s
+  coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this Geometry and its
+  component Geometry's.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></B>(java.lang.Object&nbsp;o,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#convexHull()">convexHull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the smallest convex <code>Polygon</code> that contains all the
+  points in the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+            double&nbsp;tolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getArea()">getArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the area of this <code>Polygon</code></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the boundary of this geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getBoundaryDimension()">getBoundaryDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>s inherent boundary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a vertex of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>Geometry</code> s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension of this <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getExteriorRing()">getExteriorRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getGeometryType()">getGeometryType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getInteriorRingN(int)">getInteriorRingN</A></B>(int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getLength()">getLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the perimeter of this <code>Polygon</code></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getNumInteriorRing()">getNumInteriorRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#getNumPoints()">getNumPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the count of this <code>Geometry</code>s vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#isEmpty()">isEmpty</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#isRectangle()">isRectangle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#isSimple()">isSimple</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if a valid polygon is simple.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ).</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)">buffer</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)">checkNotGeometryCollection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)">compare</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)">coveredBy</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)">covers</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)">crosses</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)">difference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)">disjoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">equal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)">equalsExact</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()">geometryChanged</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()">geometryChangedAction</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCentroid()">getCentroid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelope()">getEnvelope</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()">getEnvelopeInternal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getFactory()">getFactory</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)">getGeometryN</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()">getInteriorPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()">getNumGeometries</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()">getPrecisionModel</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getSRID()">getSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getUserData()">getUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])">hasNonEmptyElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])">hasNullElements</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)">isEquivalentClass</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()">isValid</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)">overlaps</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)">relate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setSRID(int)">setSRID</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)">setUserData</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)">symDifference</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toString()">toString</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#toText()">toText</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)">touches</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)">union</A>, <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)">within</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="shell"><!-- --></A><H3>
+shell</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>shell</B></PRE>
+<DL>
+<DD>The exterior boundary,
+ or <code>null</code> if this <code>Polygon</code>
+  is empty.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="holes"><!-- --></A><H3>
+holes</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[] <B>holes</B></PRE>
+<DL>
+<DD>The interior boundaries, if any.
+ This instance var is never null.
+ If there are no holes, the array is of zero length.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+Polygon</H3>
+<PRE>
+public <B>Polygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+               <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+               int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>Polygon</code> with the given exterior boundary.
+<P>
+<DT><B>Parameters:</B><DD><CODE>shell</CODE> - the outer boundary of the new <code>Polygon</code>,
+      or <code>null</code> or an empty <code>LinearRing</code> if the empty
+      geometry is to be created.<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>Polygon</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>Polygon</code></DL>
+<HR>
+
+<A NAME="Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+Polygon</H3>
+<PRE>
+public <B>Polygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+               <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]&nbsp;holes,
+               <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+               int&nbsp;SRID)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<P>
+<DD>Constructs a <code>Polygon</code> with the given exterior boundary and
+  interior boundaries.
+<P>
+<DT><B>Parameters:</B><DD><CODE>shell</CODE> - the outer boundary of the new <code>Polygon</code>,
+      or <code>null</code> or an empty <code>LinearRing</code> if the empty
+      geometry is to be created.<DD><CODE>holes</CODE> - the inner boundaries of the new <code>Polygon</code>
+      , or <code>null</code> or empty <code>LinearRing</code>s if the empty
+      geometry is to be created.<DD><CODE>precisionModel</CODE> - the specification of the grid of allowable points
+      for this <code>Polygon</code><DD><CODE>SRID</CODE> - the ID of the Spatial Reference System used by this
+      <code>Polygon</code></DL>
+<HR>
+
+<A NAME="Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+Polygon</H3>
+<PRE>
+public <B>Polygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;shell,
+               <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[]&nbsp;holes,
+               <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD>Constructs a <code>Polygon</code> with the given exterior boundary and
+  interior boundaries.
+<P>
+<DT><B>Parameters:</B><DD><CODE>shell</CODE> - the outer boundary of the new <code>Polygon</code>,
+      or <code>null</code> or an empty <code>LinearRing</code> if the empty
+      geometry is to be created.<DD><CODE>holes</CODE> - the inner boundaries of the new <code>Polygon</code>
+      , or <code>null</code> or empty <code>LinearRing</code>s if the empty
+      geometry is to be created.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns a vertex of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinate()">getCoordinate</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> which is a vertex of this <code>Geometry</code>.
+          Returns <code>null</code> if this Geometry is empty</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns this <code>Geometry</code> s vertices. If you modify the coordinates
+  in this array, be sure to call #geometryChanged afterwards.
+  The <code>Geometry</code>s contained by composite <code>Geometry</code>s
+  must be Geometry's; that is, they must implement <code>getCoordinates</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getCoordinates()">getCoordinates</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the vertices of this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumPoints()"><!-- --></A><H3>
+getNumPoints</H3>
+<PRE>
+public int <B>getNumPoints</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the count of this <code>Geometry</code>s vertices. The <code>Geometry</code>
+  s contained by composite <code>Geometry</code>s must be
+  Geometry's; that is, they must implement <code>getNumPoints</code>
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getNumPoints()">getNumPoints</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of vertices in this <code>Geometry</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getDimension()">getDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the class implementing this interface, whether
+      or not this object is the empty geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryDimension()"><!-- --></A><H3>
+getBoundaryDimension</H3>
+<PRE>
+public int <B>getBoundaryDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundaryDimension()">getBoundaryDimension</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the boundary of the class implementing this
+      interface, whether or not this object is the empty geometry. Returns
+      <code>Dimension.FALSE</code> if the boundary is the empty geometry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEmpty()"><!-- --></A><H3>
+isEmpty</H3>
+<PRE>
+public boolean <B>isEmpty</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isEmpty()">isEmpty</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this <code>Geometry</code> equals the empty
+      geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple()"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>()</PRE>
+<DL>
+<DD>Tests if a valid polygon is simple.
+ This method always returns true, since a valid polygon is always simple
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isSimple()">isSimple</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code><DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()"><CODE>Geometry.isValid()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRectangle()"><!-- --></A><H3>
+isRectangle</H3>
+<PRE>
+public boolean <B>isRectangle</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isRectangle()">isRectangle</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getExteriorRing()"><!-- --></A><H3>
+getExteriorRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getExteriorRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumInteriorRing()"><!-- --></A><H3>
+getNumInteriorRing</H3>
+<PRE>
+public int <B>getNumInteriorRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInteriorRingN(int)"><!-- --></A><H3>
+getInteriorRingN</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getInteriorRingN</B>(int&nbsp;n)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryType()"><!-- --></A><H3>
+getGeometryType</H3>
+<PRE>
+public java.lang.String <B>getGeometryType</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getGeometryType()">getGeometryType</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
+      interface</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getArea()"><!-- --></A><H3>
+getArea</H3>
+<PRE>
+public double <B>getArea</B>()</PRE>
+<DL>
+<DD>Returns the area of this <code>Polygon</code>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getArea()">getArea</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the area of the polygon</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength()"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>()</PRE>
+<DL>
+<DD>Returns the perimeter of this <code>Polygon</code>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getLength()">getLength</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the perimeter of the polygon</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD>Computes the boundary of this geometry
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()">getBoundary</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a lineal geometry (which may be empty)<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEnvelopeInternal()"><!-- --></A><H3>
+computeEnvelopeInternal</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>computeEnvelopeInternal</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+  Unlike <code>getEnvelopeInternal</code>, this method calculates the <code>Envelope</code>
+  each time it is called; <code>getEnvelopeInternal</code> caches the result
+  of this method.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#computeEnvelopeInternal()">computeEnvelopeInternal</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this <code>Geometry</code>s bounding box; if the <code>Geometry</code>
+      is empty, <code>Envelope#isNull</code> will return <code>true</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+equalsExact</H3>
+<PRE>
+public boolean <B>equalsExact</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;other,
+                           double&nbsp;tolerance)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+ Two Geometries are exactly equal within a distance tolerance
+ if and only if:
+ <ul>
+ <li>they have the same class
+ <li>they have the same values for their vertices,
+ within the given tolerance distance, in exactly the same order.
+ </ul>
+ If this and the other <code>Geometry</code>s are
+ composites and any children are not <code>Geometry</code>s, returns
+ <code>false</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)">equalsExact</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>Geometry</code> with which to compare this <code>Geometry</code>
+<DT><B>Returns:</B><DD><code>true</code> if this and the other <code>Geometry</code>
+   are of the same class and have equal internal data.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code>'s
+  coordinates. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state. 
+  Note that you cannot use this
+  method to
+  modify this Geometry if its underlying CoordinateSequence's #get method
+  returns a copy of the Coordinate, rather than the actual Coordinate stored
+  (if it even stores Coordinates at all).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>'s
+      coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s. 
+  If this method modifies any coordinate values,
+  #geometryChanged() must be called to update the geometry state.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).
+  Only GeometryCollections and subclasses
+  have subelement Geometry's.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code> (and
+      its children, if it is a <code>GeometryCollection</code>).</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public void <B>apply</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>&nbsp;filter)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Performs an operation with or on this Geometry and its
+  component Geometry's.  Only GeometryCollections and
+  Polygons have component Geometry's; for Polygons they are the LinearRings
+  of the shell and holes.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)">apply</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>filter</CODE> - the filter to apply to this <code>Geometry</code>.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Creates and returns a full copy of this <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> object.
+ (including all coordinates contained by it).
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#clone()">clone</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a clone of this instance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="convexHull()"><!-- --></A><H3>
+convexHull</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>convexHull</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Computes the smallest convex <code>Polygon</code> that contains all the
+  points in the <code>Geometry</code>. This obviously applies only to <code>Geometry</code>
+  s which contain 3 or more points; the results for degenerate cases are
+  specified as follows:
+  <TABLE>
+    <TR>
+      <TH>    Number of <code>Point</code>s in argument <code>Geometry</code>   </TH>
+      <TH>    <code>Geometry</code> class of result     </TH>
+    </TR>
+    <TR>
+      <TD>        0      </TD>
+      <TD>        empty <code>GeometryCollection</code>      </TD>
+    </TR>
+    <TR>  <TD>      1     </TD>
+      <TD>     <code>Point</code>     </TD>
+    </TR>
+    <TR>
+      <TD>      2     </TD>
+      <TD>     <code>LineString</code>     </TD>
+    </TR>
+    <TR>
+      <TD>       3 or more     </TD>
+      <TD>      <code>Polygon</code>     </TD>
+    </TR>
+  </TABLE>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#convexHull()">convexHull</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the minimum-area convex polygon containing this <code>Geometry</code>'
+      s points</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public void <B>normalize</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ). Normal form is a unique representation for <code>Geometry</code>
+  s. It can be used to test whether two <code>Geometry</code>s are equal
+  in a way that is independent of the ordering of the coordinates within
+  them. Normal form equality is a stronger condition than topological
+  equality, but weaker than pointwise equality. The definitions for normal
+  form use the standard lexicographical ordering for coordinates. "Sorted in
+  order of coordinates" means the obvious extension of this ordering to
+  sequences of coordinates.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#normalize()">normalize</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><!-- --></A><H3>
+compareToSameClass</H3>
+<PRE>
+protected int <B>compareToSameClass</B>(java.lang.Object&nbsp;o,
+                                 <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>&nbsp;comp)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></B></DD>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.
+ using the given <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)">compareToSameClass</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - a <code>Geometry</code> having the same class as this <code>Geometry</code><DD><CODE>comp</CODE> - a <code>CoordinateSequenceComparator</code>
+<DT><B>Returns:</B><DD>a positive number, 0, or a negative number, depending on whether
+      this object is greater than, equal to, or less than <code>o</code>, as
+      defined in "Normal Form For Geometry" in the JTS Technical
+      Specifications</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Polygon.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/PrecisionModel.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/PrecisionModel.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/PrecisionModel.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,905 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+PrecisionModel
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.PrecisionModel class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PrecisionModel";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PrecisionModel.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class PrecisionModel</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.PrecisionModel</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>PrecisionModel</B><DT>extends java.lang.Object<DT>implements java.io.Serializable, java.lang.Comparable</DL>
+
+<P>
+Specifies the precision model of the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ In other words, specifies the grid of allowable
+  points for all <code>Geometry</code>s.
+ <p>
+ The <CODE>makePrecise</CODE> method allows rounding a coordinate to
+ a "precise" value; that is, one whose
+  precision is known exactly.
+<p>
+ Coordinates are assumed to be precise in geometries.
+ That is, the coordinates are assumed to be rounded to the
+ precision model given for the geometry.
+ JTS input routines automatically round coordinates to the precision model
+ before creating Geometries.
+ All internal operations
+ assume that coordinates are rounded to the precision model.
+ Constructive methods (such as boolean operations) always round computed
+ coordinates to the appropriate precision model.
+ <p>
+ Currently three types of precision model are supported:
+ <ul>
+ <li>FLOATING - represents full double precision floating point.
+ This is the default precision model used in JTS
+ <li>FLOATING_SINGLE - represents single precision floating point.
+ <li>FIXED - represents a model with a fixed number of decimal places.
+  A Fixed Precision Model is specified by a scale factor.
+  The scale factor specifies the grid which numbers are rounded to.
+  Input coordinates are mapped to fixed coordinates according to the following
+  equations:
+    <UL>
+      <LI> jtsPt.x = round( (inputPt.x * scale ) / scale
+      <LI> jtsPt.y = round( (inputPt.y * scale ) / scale
+    </UL>
+ </ul>
+  Coordinates are represented internally as Java double-precision values.
+ Since Java uses the IEEE-394 floating point standard, this
+  provides 53 bits of precision. (Thus the maximum precisely representable
+  integer is 9,007,199,254,740,992).
+<p>
+  JTS methods currently do not handle inputs with different precision models.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.PrecisionModel">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;com.vividsolutions.jts.geom.PrecisionModel.Type</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#FIXED">FIXED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fixed Precision indicates that coordinates have a fixed number of decimal places.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;com.vividsolutions.jts.geom.PrecisionModel.Type</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#FLOATING">FLOATING</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Floating precision corresponds to the standard Java
+ double-precision floating-point representation, which is
+ based on the IEEE-754 standard</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;com.vividsolutions.jts.geom.PrecisionModel.Type</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#FLOATING_SINGLE">FLOATING_SINGLE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Floating single precision corresponds to the standard Java
+ single-precision floating-point representation, which is
+ based on the IEEE-754 standard</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#maximumPreciseValue">maximumPreciseValue</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The maximum precise value representable in a double.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel()">PrecisionModel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>PrecisionModel</code> with a default precision
+ of FLOATING.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(double)">PrecisionModel</A></B>(double&nbsp;scale)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>PrecisionModel</code> that specifies Fixed precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(double, double, double)">PrecisionModel</A></B>(double&nbsp;scale,
+               double&nbsp;offsetX,
+               double&nbsp;offsetY)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>offsets are no longer supported, since internal representation is rounded floating point</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel.Type)">PrecisionModel</A></B>(com.vividsolutions.jts.geom.PrecisionModel.Type&nbsp;modelType)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>PrecisionModel</code> that specifies
+ an explicit precision model type.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)">PrecisionModel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy constructor to create a new <code>PrecisionModel</code>
+  from an existing one.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> object with the specified object for order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#getMaximumSignificantDigits()">getMaximumSignificantDigits</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the maximum number of significant digits provided by this
+ precision model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#getOffsetX()">getOffsetX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Offsets are no longer used</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#getOffsetY()">getOffsetY</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Offsets are no longer used</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#getScale()">getScale</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the multiplying factor used to obtain a precise coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;com.vividsolutions.jts.geom.PrecisionModel.Type</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#getType()">getType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the type of this PrecisionModel</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#isFloating()">isFloating</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the precision model supports floating point</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#makePrecise(com.vividsolutions.jts.geom.Coordinate)">makePrecise</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rounds a Coordinate to the PrecisionModel grid.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#makePrecise(double)">makePrecise</A></B>(double&nbsp;val)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rounds a numeric value to the PrecisionModel grid.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#mostPrecise(com.vividsolutions.jts.geom.PrecisionModel, com.vividsolutions.jts.geom.PrecisionModel)">mostPrecise</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm1,
+            <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines which of two <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>s is the most precise
+ (allows the greatest number of significant digits).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#toExternal(com.vividsolutions.jts.geom.Coordinate)">toExternal</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;internal)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>no longer needed, since internal representation is same as external representation</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#toExternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">toExternal</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;internal,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;external)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>no longer needed, since internal representation is same as external representation</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#toInternal(com.vividsolutions.jts.geom.Coordinate)">toInternal</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;external)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use makePrecise instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#toInternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">toInternal</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;external,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;internal)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use makePrecise instead</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="FIXED"><!-- --></A><H3>
+FIXED</H3>
+<PRE>
+public static final com.vividsolutions.jts.geom.PrecisionModel.Type <B>FIXED</B></PRE>
+<DL>
+<DD>Fixed Precision indicates that coordinates have a fixed number of decimal places.
+ The number of decimal places is determined by the log10 of the scale factor.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="FLOATING"><!-- --></A><H3>
+FLOATING</H3>
+<PRE>
+public static final com.vividsolutions.jts.geom.PrecisionModel.Type <B>FLOATING</B></PRE>
+<DL>
+<DD>Floating precision corresponds to the standard Java
+ double-precision floating-point representation, which is
+ based on the IEEE-754 standard
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="FLOATING_SINGLE"><!-- --></A><H3>
+FLOATING_SINGLE</H3>
+<PRE>
+public static final com.vividsolutions.jts.geom.PrecisionModel.Type <B>FLOATING_SINGLE</B></PRE>
+<DL>
+<DD>Floating single precision corresponds to the standard Java
+ single-precision floating-point representation, which is
+ based on the IEEE-754 standard
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="maximumPreciseValue"><!-- --></A><H3>
+maximumPreciseValue</H3>
+<PRE>
+public static final double <B>maximumPreciseValue</B></PRE>
+<DL>
+<DD>The maximum precise value representable in a double. Since IEE754
+  double-precision numbers allow 53 bits of mantissa, the value is equal to
+  2^53 - 1.  This provides <i>almost</i> 16 decimal digits of precision.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geom.PrecisionModel.maximumPreciseValue">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PrecisionModel()"><!-- --></A><H3>
+PrecisionModel</H3>
+<PRE>
+public <B>PrecisionModel</B>()</PRE>
+<DL>
+<DD>Creates a <code>PrecisionModel</code> with a default precision
+ of FLOATING.
+<P>
+</DL>
+<HR>
+
+<A NAME="PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel.Type)"><!-- --></A><H3>
+PrecisionModel</H3>
+<PRE>
+public <B>PrecisionModel</B>(com.vividsolutions.jts.geom.PrecisionModel.Type&nbsp;modelType)</PRE>
+<DL>
+<DD>Creates a <code>PrecisionModel</code> that specifies
+ an explicit precision model type.
+ If the model type is FIXED the scale factor will default to 1.
+<P>
+<DT><B>Parameters:</B><DD><CODE>modelType</CODE> - the type of the precision model</DL>
+<HR>
+
+<A NAME="PrecisionModel(double, double, double)"><!-- --></A><H3>
+PrecisionModel</H3>
+<PRE>
+public <B>PrecisionModel</B>(double&nbsp;scale,
+                      double&nbsp;offsetX,
+                      double&nbsp;offsetY)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>offsets are no longer supported, since internal representation is rounded floating point</I>
+<P>
+<DD>Creates a <code>PrecisionModel</code> that specifies Fixed precision.
+  Fixed-precision coordinates are represented as precise internal coordinates,
+  which are rounded to the grid defined by the scale factor.
+<P>
+<DT><B>Parameters:</B><DD><CODE>scale</CODE> - amount by which to multiply a coordinate after subtracting
+      the offset, to obtain a precise coordinate<DD><CODE>offsetX</CODE> - not used.<DD><CODE>offsetY</CODE> - not used.</DL>
+<HR>
+
+<A NAME="PrecisionModel(double)"><!-- --></A><H3>
+PrecisionModel</H3>
+<PRE>
+public <B>PrecisionModel</B>(double&nbsp;scale)</PRE>
+<DL>
+<DD>Creates a <code>PrecisionModel</code> that specifies Fixed precision.
+  Fixed-precision coordinates are represented as precise internal coordinates,
+  which are rounded to the grid defined by the scale factor.
+<P>
+<DT><B>Parameters:</B><DD><CODE>scale</CODE> - amount by which to multiply a coordinate after subtracting
+      the offset, to obtain a precise coordinate</DL>
+<HR>
+
+<A NAME="PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+PrecisionModel</H3>
+<PRE>
+public <B>PrecisionModel</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+<DD>Copy constructor to create a new <code>PrecisionModel</code>
+  from an existing one.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="mostPrecise(com.vividsolutions.jts.geom.PrecisionModel, com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+mostPrecise</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A> <B>mostPrecise</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm1,
+                                         <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm2)</PRE>
+<DL>
+<DD>Determines which of two <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>s is the most precise
+ (allows the greatest number of significant digits).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pm1</CODE> - a PrecisionModel<DD><CODE>pm2</CODE> - a PrecisionModel
+<DT><B>Returns:</B><DD>the PrecisionModel which is most precise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isFloating()"><!-- --></A><H3>
+isFloating</H3>
+<PRE>
+public boolean <B>isFloating</B>()</PRE>
+<DL>
+<DD>Tests whether the precision model supports floating point
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the precision model supports floating point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaximumSignificantDigits()"><!-- --></A><H3>
+getMaximumSignificantDigits</H3>
+<PRE>
+public int <B>getMaximumSignificantDigits</B>()</PRE>
+<DL>
+<DD>Returns the maximum number of significant digits provided by this
+ precision model.
+ Intended for use by routines which need to print out precise values.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the maximum number of decimal places provided by this precision model</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getScale()"><!-- --></A><H3>
+getScale</H3>
+<PRE>
+public double <B>getScale</B>()</PRE>
+<DL>
+<DD>Returns the multiplying factor used to obtain a precise coordinate.
+ This method is private because PrecisionModel is intended to
+ be an immutable (value) type.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the amount by which to multiply a coordinate after subtracting
+      the offset</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getType()"><!-- --></A><H3>
+getType</H3>
+<PRE>
+public com.vividsolutions.jts.geom.PrecisionModel.Type <B>getType</B>()</PRE>
+<DL>
+<DD>Gets the type of this PrecisionModel
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the type of this PrecisionModel</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOffsetX()"><!-- --></A><H3>
+getOffsetX</H3>
+<PRE>
+public double <B>getOffsetX</B>()</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Offsets are no longer used</I>
+<P>
+<DD>Returns the x-offset used to obtain a precise coordinate.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the amount by which to subtract the x-coordinate before
+         multiplying by the scale</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOffsetY()"><!-- --></A><H3>
+getOffsetY</H3>
+<PRE>
+public double <B>getOffsetY</B>()</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>Offsets are no longer used</I>
+<P>
+<DD>Returns the y-offset used to obtain a precise coordinate.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the amount by which to subtract the y-coordinate before
+         multiplying by the scale</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toInternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toInternal</H3>
+<PRE>
+public void <B>toInternal</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;external,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;internal)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use makePrecise instead</I>
+<P>
+<DD>Sets <code>internal</code> to the precise representation of <code>external</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>external</CODE> - the original coordinate<DD><CODE>internal</CODE> - the coordinate whose values will be changed to the
+                 precise representation of <code>external</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toInternal(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toInternal</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>toInternal</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;external)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use makePrecise instead</I>
+<P>
+<DD>Returns the precise representation of <code>external</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>external</CODE> - the original coordinate
+<DT><B>Returns:</B><DD>the coordinate whose values will be changed to the precise
+      representation of <code>external</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toExternal(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toExternal</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>toExternal</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;internal)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>no longer needed, since internal representation is same as external representation</I>
+<P>
+<DD>Returns the external representation of <code>internal</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>internal</CODE> - the original coordinate
+<DT><B>Returns:</B><DD>the coordinate whose values will be changed to the
+      external representation of <code>internal</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toExternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toExternal</H3>
+<PRE>
+public void <B>toExternal</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;internal,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;external)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>no longer needed, since internal representation is same as external representation</I>
+<P>
+<DD>Sets <code>external</code> to the external representation of <code>internal</code>
+  .
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>internal</CODE> - the original coordinate<DD><CODE>external</CODE> - the coordinate whose values will be changed to the
+      external representation of <code>internal</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="makePrecise(double)"><!-- --></A><H3>
+makePrecise</H3>
+<PRE>
+public double <B>makePrecise</B>(double&nbsp;val)</PRE>
+<DL>
+<DD>Rounds a numeric value to the PrecisionModel grid.
+ Asymmetric Arithmetic Rounding is used, to provide
+ uniform rounding behaviour no matter where the number is
+ on the number line.
+ <p>
+ <b>Note:</b> Java's <code>Math#rint</code> uses the "Banker's Rounding" algorithm,
+ which is not suitable for precision operations elsewhere in JTS.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="makePrecise(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+makePrecise</H3>
+<PRE>
+public void <B>makePrecise</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>Rounds a Coordinate to the PrecisionModel grid.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;other)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Compares this <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> object with the specified object for order.
+ A PrecisionModel is greater than another if it provides greater precision.
+ The comparison is based on the value returned by the
+ {@link getMaximumSignificantDigits) method.
+ This comparison is not strictly accurate when comparing floating precision models
+ to fixed models; however, it is correct when both models are either floating or fixed.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - the <code>PrecisionModel</code> with which this <code>PrecisionModel</code>
+      is being compared
+<DT><B>Returns:</B><DD>a negative integer, zero, or a positive integer as this <code>PrecisionModel</code>
+      is less than, equal to, or greater than the specified <code>PrecisionModel</code></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PrecisionModel.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/TopologyException.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/TopologyException.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/TopologyException.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,289 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+TopologyException
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.TopologyException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TopologyException";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class TopologyException</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Throwable
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Exception
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.RuntimeException
+              <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.TopologyException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>TopologyException</B><DT>extends java.lang.RuntimeException</DL>
+
+<P>
+Indicates an invalid or inconsistent topological situation encountered during processing
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.geom.TopologyException">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html#TopologyException(java.lang.String)">TopologyException</A></B>(java.lang.String&nbsp;msg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html#TopologyException(java.lang.String, com.vividsolutions.jts.geom.Coordinate)">TopologyException</A></B>(java.lang.String&nbsp;msg,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Throwable</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TopologyException(java.lang.String)"><!-- --></A><H3>
+TopologyException</H3>
+<PRE>
+public <B>TopologyException</B>(java.lang.String&nbsp;msg)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TopologyException(java.lang.String, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+TopologyException</H3>
+<PRE>
+public <B>TopologyException</B>(java.lang.String&nbsp;msg,
+                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Triangle.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Triangle.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/Triangle.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,562 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+Triangle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.Triangle class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Triangle";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Triangle.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom</FONT>
+<BR>
+Class Triangle</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.Triangle</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Triangle</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents a planar triangle, and provides methods for calculating various
+ properties of triangles.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#p0">p0</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#p1">p1</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#p2">p2</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#Triangle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">Triangle</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#angleBisector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">angleBisector</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the point at which the bisector of the angle ABC
+ cuts the segment AC.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#area(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">area</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the area of a triangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#centroid(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">centroid</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the centroid (centre of mass) of a triangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#circumcentre(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">circumcentre</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the circumcentre of a triangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#inCentre()">inCentre</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the incentre of a triangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#inCentre(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">inCentre</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the incentre of a triangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#isAcute(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">isAcute</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the triangle is acute.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#longestSideLength(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">longestSideLength</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the length of the longest side of a triangle</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html#perpendicularBisector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">perpendicularBisector</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the line which is the perpendicular bisector of the
+ line segment a-b.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="p0"><!-- --></A><H3>
+p0</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p0</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="p1"><!-- --></A><H3>
+p1</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p1</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="p2"><!-- --></A><H3>
+p2</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p2</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Triangle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+Triangle</H3>
+<PRE>
+public <B>Triangle</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isAcute(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isAcute</H3>
+<PRE>
+public static boolean <B>isAcute</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Tests whether the triangle is acute.
+ A triangle is acute iff all interior angles are acute.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertex of the triangle<DD><CODE>b</CODE> - a vertex of the triangle<DD><CODE>c</CODE> - a vertex of the triangle
+<DT><B>Returns:</B><DD>true if the triangle is acute</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="perpendicularBisector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+perpendicularBisector</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A> <B>perpendicularBisector</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b)</PRE>
+<DL>
+<DD>Computes the line which is the perpendicular bisector of the
+ line segment a-b.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a point<DD><CODE>b</CODE> - another point
+<DT><B>Returns:</B><DD>the perpendicular bisector, as an HCoordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="circumcentre(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+circumcentre</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>circumcentre</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                                      <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Computes the circumcentre of a triangle.
+ The circumcentre is the centre of the circumcircle,
+ the smallest circle which encloses the triangle.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertx of the triangle<DD><CODE>b</CODE> - a vertx of the triangle<DD><CODE>c</CODE> - a vertx of the triangle
+<DT><B>Returns:</B><DD>the circumcentre of the triangle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="inCentre(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+inCentre</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>inCentre</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Computes the incentre of a triangle.
+ The inCentre of a triangle is the point which is equidistant
+ from the sides of the triangle.
+ It is also the point at which the bisectors
+ of the triangle's angles meet.
+ It is the centre of the incircle, which
+ is the unique circle that is tangent to each of the triangle's three sides.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertx of the triangle<DD><CODE>b</CODE> - a vertx of the triangle<DD><CODE>c</CODE> - a vertx of the triangle
+<DT><B>Returns:</B><DD>the point which is the incentre of the triangle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="centroid(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+centroid</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>centroid</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Computes the centroid (centre of mass) of a triangle.
+ This is also the point at which the triangle's three
+ medians intersect (a triangle median is the segment from a vertex of the triangle to the
+ midpoint of the opposite side).
+ The centroid divides each median in a ratio of 2:1.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertex of the triangle<DD><CODE>b</CODE> - a vertex of the triangle<DD><CODE>c</CODE> - a vertex of the triangle
+<DT><B>Returns:</B><DD>the centroid of the triangle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="longestSideLength(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+longestSideLength</H3>
+<PRE>
+public static double <B>longestSideLength</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Computes the length of the longest side of a triangle
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertex of the triangle<DD><CODE>b</CODE> - a vertex of the triangle<DD><CODE>c</CODE> - a vertex of the triangle
+<DT><B>Returns:</B><DD>the length of the longest side of the triangle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="angleBisector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+angleBisector</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>angleBisector</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                                       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Computes the point at which the bisector of the angle ABC
+ cuts the segment AC.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertex of the triangle<DD><CODE>b</CODE> - a vertex of the triangle<DD><CODE>c</CODE> - a vertex of the triangle
+<DT><B>Returns:</B><DD>the angle bisector cut point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="area(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+area</H3>
+<PRE>
+public static double <B>area</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;a,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;b,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;c)</PRE>
+<DL>
+<DD>Computes the area of a triangle.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a vertex of the triangle<DD><CODE>b</CODE> - a vertex of the triangle<DD><CODE>c</CODE> - a vertex of the triangle
+<DT><B>Returns:</B><DD>the area of the triangle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="inCentre()"><!-- --></A><H3>
+inCentre</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>inCentre</B>()</PRE>
+<DL>
+<DD>Computes the incentre of a triangle.
+ The inCentre of a triangle is the point which is equidistant
+ from the sides of the triangle.
+ It is also the point at which the bisectors
+ of the triangle's angles meet.
+ It is the centre of the incircle, which
+ is the unique circle that is tangent to each of the triangle's three sides.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the point which is the inCentre of the triangle</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Triangle.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,646 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateArraySequence
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl.CoordinateArraySequence class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateArraySequence";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArraySequence.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.impl</FONT>
+<BR>
+Class CoordinateArraySequence</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.impl.CoordinateArraySequence</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>CoordinateArraySequence</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>, java.io.Serializable</DL>
+
+<P>
+The <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation that <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s use by default.
+ In this implementation, Coordinates returned by #toArray and #getCoordinate are live --
+ modifications to them are actually changing the
+ CoordinateSequence's underlying data.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.vividsolutions.jts.geom.impl.CoordinateArraySequence">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.CoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#M">M</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#X">X</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Y">Y</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Z">Z</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#CoordinateArraySequence(com.vividsolutions.jts.geom.Coordinate[])">CoordinateArraySequence</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a sequence based on the given array (the
+ array is not copied).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#CoordinateArraySequence(com.vividsolutions.jts.geom.CoordinateSequence)">CoordinateArraySequence</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a sequence based on the given array (the
+ array is not copied).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#CoordinateArraySequence(int)">CoordinateArraySequence</A></B>(int&nbsp;size)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a sequence of a given size, populated
+ with new <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a deep copy of the Object</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)">expandEnvelope</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expands the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the Coordinate with index i.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A></B>(int&nbsp;index,
+              <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getCoordinateCopy(int)">getCoordinateCopy</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a copy of the Coordinate with index i.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getOrdinate(int, int)">getOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinateIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getX(int)">getX</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns ordinate X (0) of the specified coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getY(int)">getY</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns ordinate Y (1) of the specified coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#setOrdinate(int, int, double)">setOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinateIndex,
+            double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the value for a given ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the size of the coordinate sequence</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#toCoordinateArray()">toCoordinateArray</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method exposes the internal Array of Coordinate Objects</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the string Representation of the coordinate array</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateArraySequence(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+CoordinateArraySequence</H3>
+<PRE>
+public <B>CoordinateArraySequence</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Constructs a sequence based on the given array (the
+ array is not copied).
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the coordinate array that will be referenced.</DL>
+<HR>
+
+<A NAME="CoordinateArraySequence(int)"><!-- --></A><H3>
+CoordinateArraySequence</H3>
+<PRE>
+public <B>CoordinateArraySequence</B>(int&nbsp;size)</PRE>
+<DL>
+<DD>Constructs a sequence of a given size, populated
+ with new <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+<P>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the size of the sequence to create</DL>
+<HR>
+
+<A NAME="CoordinateArraySequence(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+CoordinateArraySequence</H3>
+<PRE>
+public <B>CoordinateArraySequence</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</PRE>
+<DL>
+<DD>Constructs a sequence based on the given array (the
+ array is not copied).
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getDimension()">getDimension</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the sequence.<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getDimension()"><CODE>CoordinateSequence.getDimension()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD>Get the Coordinate with index i.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)">getCoordinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate
+<DT><B>Returns:</B><DD>the requested Coordinate instance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateCopy(int)"><!-- --></A><H3>
+getCoordinateCopy</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateCopy</B>(int&nbsp;i)</PRE>
+<DL>
+<DD>Get a copy of the Coordinate with index i.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinateCopy(int)">getCoordinateCopy</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate
+<DT><B>Returns:</B><DD>a copy of the requested Coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public void <B>getCoordinate</B>(int&nbsp;index,
+                          <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.  Only the first two dimensions are copied.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the index of the coordinate to copy<DD><CODE>coord</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> to receive the value<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)"><CODE>CoordinateSequence.getX(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getX(int)"><!-- --></A><H3>
+getX</H3>
+<PRE>
+public double <B>getX</B>(int&nbsp;index)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns ordinate X (0) of the specified coordinate.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)">getX</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD>the value of the X ordinate in the index'th coordinate<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)"><CODE>CoordinateSequence.getX(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getY(int)"><!-- --></A><H3>
+getY</H3>
+<PRE>
+public double <B>getY</B>(int&nbsp;index)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns ordinate Y (1) of the specified coordinate.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getY(int)">getY</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD>the value of the Y ordinate in the index'th coordinate<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getY(int)"><CODE>CoordinateSequence.getY(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOrdinate(int, int)"><!-- --></A><H3>
+getOrdinate</H3>
+<PRE>
+public double <B>getOrdinate</B>(int&nbsp;index,
+                          int&nbsp;ordinateIndex)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the ordinate of a coordinate in this sequence.
+ Ordinate indices 0 and 1 are assumed to be X and Y.
+ Ordinates indices greater than 1 have user-defined semantics
+ (for instance, they may contain other dimensions or measure values).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index in the sequence<DD><CODE>ordinateIndex</CODE> - the ordinate index in the coordinate (in range [0, dimension-1])<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)"><CODE>CoordinateSequence.getOrdinate(int, int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Creates a deep copy of the Object
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#clone()">clone</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>The deep copy</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD>Returns the size of the coordinate sequence
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#size()">size</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setOrdinate(int, int, double)"><!-- --></A><H3>
+setOrdinate</H3>
+<PRE>
+public void <B>setOrdinate</B>(int&nbsp;index,
+                        int&nbsp;ordinateIndex,
+                        double&nbsp;value)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Sets the value for a given ordinate of a coordinate in this sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index in the sequence<DD><CODE>ordinateIndex</CODE> - the ordinate index in the coordinate (in range [0, dimension-1])<DD><CODE>value</CODE> - the new ordinate value<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)"><CODE>CoordinateSequence.setOrdinate(int, int, double)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toCoordinateArray()"><!-- --></A><H3>
+toCoordinateArray</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>toCoordinateArray</B>()</PRE>
+<DL>
+<DD>This method exposes the internal Array of Coordinate Objects
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#toCoordinateArray()">toCoordinateArray</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the Coordinate[] array.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+expandEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>expandEnvelope</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Expands the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.
+ Allows implementing classes to optimize access to coordinate values.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)">expandEnvelope</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the envelope to expand
+<DT><B>Returns:</B><DD>a ref to the expanded envelope</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Returns the string Representation of the coordinate array
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>The string</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArraySequence.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,326 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+CoordinateArraySequenceFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateArraySequenceFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArraySequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.impl</FONT>
+<BR>
+Class CoordinateArraySequenceFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public final class <B>CoordinateArraySequenceFactory</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable</DL>
+
+<P>
+Creates <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s represented as an array of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><CODE>CoordinateArraySequence</CODE></A> based on the given array (the array is
+ not copied).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#create(int, int)">create</A></B>(int&nbsp;size,
+       int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#instance()">instance</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the singleton instance of <A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><CODE>CoordinateArraySequenceFactory</CODE></A></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="instance()"><!-- --></A><H3>
+instance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A> <B>instance</B>()</PRE>
+<DL>
+<DD>Returns the singleton instance of <A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><CODE>CoordinateArraySequenceFactory</CODE></A>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Returns a <A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><CODE>CoordinateArraySequence</CODE></A> based on the given array (the array is
+ not copied).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the coordinates, which may not be null nor contain null
+            elements</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+ This method must handle null arguments by creating an empty sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordSeq</CODE> - the coordinate sequence to copy<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><CODE>CoordinateSequenceFactory.create(com.vividsolutions.jts.geom.CoordinateSequence)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(int, int)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(int&nbsp;size,
+                                 int&nbsp;dimension)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.
+ For this to be useful, the <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation must
+ be mutable.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)">create</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the number of coordinates in the sequence<DD><CODE>dimension</CODE> - the dimension of the coordinates in the sequence (if user-specifiable,
+ otherwise ignored)
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if the dimension is > 3<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)"><CODE>CoordinateSequenceFactory.create(int, int)</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArraySequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,533 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+PackedCoordinateSequence.Double
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl.PackedCoordinateSequence.Double class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PackedCoordinateSequence.Double";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequence.Double.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.impl</FONT>
+<BR>
+Class PackedCoordinateSequence.Double</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">com.vividsolutions.jts.geom.impl.PackedCoordinateSequence</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.impl.PackedCoordinateSequence.Double</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>PackedCoordinateSequence.Double</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></DL>
+
+<P>
+Packed coordinate sequence implementation based on doubles
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#coordRef">coordRef</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#dimension">dimension</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.CoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#M">M</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#X">X</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Y">Y</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Z">Z</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(com.vividsolutions.jts.geom.Coordinate[])">PackedCoordinateSequence.Double</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Builds a new packed coordinate sequence out of a coordinate array</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(com.vividsolutions.jts.geom.Coordinate[], int)">PackedCoordinateSequence.Double</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+                                int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Builds a new packed coordinate sequence out of a coordinate array</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(double[], int)">PackedCoordinateSequence.Double</A></B>(double[]&nbsp;coords,
+                                int&nbsp;dimensions)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Builds a new packed coordinate sequence</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(float[], int)">PackedCoordinateSequence.Double</A></B>(float[]&nbsp;coordinates,
+                                int&nbsp;dimensions)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Builds a new packed coordinate sequence out of a float coordinate array</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(int, int)">PackedCoordinateSequence.Double</A></B>(int&nbsp;size,
+                                int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Builds a new empty packed coordinate sequence of a given size and dimension</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a deep copy of this collection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)">expandEnvelope</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expands the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#getCoordinateInternal(int)">getCoordinateInternal</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#getOrdinate(int, int)">getOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinate)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#setOrdinate(int, int, double)">setOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinate,
+            double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of coordinates in this sequence.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int)">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateCopy(int)">getCoordinateCopy</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getDimension()">getDimension</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getX(int)">getX</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getY(int)">getY</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setX(int, double)">setX</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setY(int, double)">setY</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#toCoordinateArray()">toCoordinateArray</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PackedCoordinateSequence.Double(double[], int)"><!-- --></A><H3>
+PackedCoordinateSequence.Double</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Double</B>(double[]&nbsp;coords,
+                                       int&nbsp;dimensions)</PRE>
+<DL>
+<DD>Builds a new packed coordinate sequence
+<P>
+<DT><B>Parameters:</B><DD><CODE>coords</CODE> - <DD><CODE>dimensions</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Double(float[], int)"><!-- --></A><H3>
+PackedCoordinateSequence.Double</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Double</B>(float[]&nbsp;coordinates,
+                                       int&nbsp;dimensions)</PRE>
+<DL>
+<DD>Builds a new packed coordinate sequence out of a float coordinate array
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Double(com.vividsolutions.jts.geom.Coordinate[], int)"><!-- --></A><H3>
+PackedCoordinateSequence.Double</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Double</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+                                       int&nbsp;dimension)</PRE>
+<DL>
+<DD>Builds a new packed coordinate sequence out of a coordinate array
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Double(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+PackedCoordinateSequence.Double</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Double</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD>Builds a new packed coordinate sequence out of a coordinate array
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Double(int, int)"><!-- --></A><H3>
+PackedCoordinateSequence.Double</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Double</B>(int&nbsp;size,
+                                       int&nbsp;dimension)</PRE>
+<DL>
+<DD>Builds a new empty packed coordinate sequence of a given size and dimension
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinateInternal(int)"><!-- --></A><H3>
+getCoordinateInternal</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateInternal</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></B></DD>
+<DD>Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateInternal(int)">getCoordinateInternal</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - 
+<DT><B>Returns:</B><DD><DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)"><CODE>CoordinateSequence.getCoordinate(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the number of coordinates in this sequence.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the size of the sequence<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#size()"><CODE>CoordinateSequence.size()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns a deep copy of this collection.
+ Called by Geometry#clone.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#clone()">clone</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#clone()">clone</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><CODE>Object.clone()</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOrdinate(int, int)"><!-- --></A><H3>
+getOrdinate</H3>
+<PRE>
+public double <B>getOrdinate</B>(int&nbsp;index,
+                          int&nbsp;ordinate)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the ordinate of a coordinate in this sequence.
+ Ordinate indices 0 and 1 are assumed to be X and Y.
+ Ordinates indices greater than 1 have user-defined semantics
+ (for instance, they may contain other dimensions or measure values).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)"><CODE>Beware, for performace reasons the ordinate index is not checked, if
+      it's over dimensions you may not get an exception but a meaningless
+      value.</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setOrdinate(int, int, double)"><!-- --></A><H3>
+setOrdinate</H3>
+<PRE>
+public void <B>setOrdinate</B>(int&nbsp;index,
+                        int&nbsp;ordinate,
+                        double&nbsp;value)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></B></DD>
+<DD>Sets the ordinate of a coordinate in this sequence.
+ <br>
+ Warning: for performance reasons the ordinate index is not checked
+ - if it is over dimensions you may not get an exception but a meaningless value.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index<DD><CODE>ordinate</CODE> - the ordinate index in the coordinate, 0 based, smaller than the
+          number of dimensions<DD><CODE>value</CODE> - the new ordinate value<DT><B>See Also:</B><DD><CODE>com.vividsolutions.jts.geom.PackedCoordinateSequence#setOrdinate(int,
+      int, double)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+expandEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>expandEnvelope</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Expands the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.
+ Allows implementing classes to optimize access to coordinate values.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the envelope to expand
+<DT><B>Returns:</B><DD>a ref to the expanded envelope</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequence.Double.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,517 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+PackedCoordinateSequence.Float
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl.PackedCoordinateSequence.Float class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PackedCoordinateSequence.Float";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequence.Float.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.impl</FONT>
+<BR>
+Class PackedCoordinateSequence.Float</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">com.vividsolutions.jts.geom.impl.PackedCoordinateSequence</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.impl.PackedCoordinateSequence.Float</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static class <B>PackedCoordinateSequence.Float</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></DL>
+
+<P>
+Packed coordinate sequence implementation based on floats
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#coordRef">coordRef</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#dimension">dimension</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.CoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#M">M</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#X">X</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Y">Y</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Z">Z</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(com.vividsolutions.jts.geom.Coordinate[], int)">PackedCoordinateSequence.Float</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+                               int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a packed coordinate sequence out of a coordinate array</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(double[], int)">PackedCoordinateSequence.Float</A></B>(double[]&nbsp;coordinates,
+                               int&nbsp;dimensions)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a packed coordinate sequence from an array of <code>double<code>s</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(float[], int)">PackedCoordinateSequence.Float</A></B>(float[]&nbsp;coords,
+                               int&nbsp;dimensions)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a packed coordinate sequence from an array of <code>float<code>s</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(int, int)">PackedCoordinateSequence.Float</A></B>(int&nbsp;size,
+                               int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an empty packed coordinate sequence of a given size and dimension</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a deep copy of this collection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)">expandEnvelope</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expands the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#getCoordinateInternal(int)">getCoordinateInternal</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#getOrdinate(int, int)">getOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinate)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#setOrdinate(int, int, double)">setOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinate,
+            double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of coordinates in this sequence.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int)">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateCopy(int)">getCoordinateCopy</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getDimension()">getDimension</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getX(int)">getX</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getY(int)">getY</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setX(int, double)">setX</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setY(int, double)">setY</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#toCoordinateArray()">toCoordinateArray</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PackedCoordinateSequence.Float(float[], int)"><!-- --></A><H3>
+PackedCoordinateSequence.Float</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Float</B>(float[]&nbsp;coords,
+                                      int&nbsp;dimensions)</PRE>
+<DL>
+<DD>Constructs a packed coordinate sequence from an array of <code>float<code>s
+<P>
+<DT><B>Parameters:</B><DD><CODE>coords</CODE> - <DD><CODE>dimensions</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Float(double[], int)"><!-- --></A><H3>
+PackedCoordinateSequence.Float</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Float</B>(double[]&nbsp;coordinates,
+                                      int&nbsp;dimensions)</PRE>
+<DL>
+<DD>Constructs a packed coordinate sequence from an array of <code>double<code>s
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Float(com.vividsolutions.jts.geom.Coordinate[], int)"><!-- --></A><H3>
+PackedCoordinateSequence.Float</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Float</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+                                      int&nbsp;dimension)</PRE>
+<DL>
+<DD>Constructs a packed coordinate sequence out of a coordinate array
+<P>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - </DL>
+<HR>
+
+<A NAME="PackedCoordinateSequence.Float(int, int)"><!-- --></A><H3>
+PackedCoordinateSequence.Float</H3>
+<PRE>
+public <B>PackedCoordinateSequence.Float</B>(int&nbsp;size,
+                                      int&nbsp;dimension)</PRE>
+<DL>
+<DD>Constructs an empty packed coordinate sequence of a given size and dimension
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinateInternal(int)"><!-- --></A><H3>
+getCoordinateInternal</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateInternal</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></B></DD>
+<DD>Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateInternal(int)">getCoordinateInternal</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - 
+<DT><B>Returns:</B><DD><DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)"><CODE>CoordinateSequence.getCoordinate(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the number of coordinates in this sequence.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the size of the sequence<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#size()"><CODE>CoordinateSequence.size()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns a deep copy of this collection.
+ Called by Geometry#clone.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#clone()">clone</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#clone()">clone</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><CODE>Object.clone()</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOrdinate(int, int)"><!-- --></A><H3>
+getOrdinate</H3>
+<PRE>
+public double <B>getOrdinate</B>(int&nbsp;index,
+                          int&nbsp;ordinate)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the ordinate of a coordinate in this sequence.
+ Ordinate indices 0 and 1 are assumed to be X and Y.
+ Ordinates indices greater than 1 have user-defined semantics
+ (for instance, they may contain other dimensions or measure values).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)"><CODE>Beware, for performace reasons the ordinate index is not checked, if
+      it's over dimensions you may not get an exception but a meaningless
+      value.</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setOrdinate(int, int, double)"><!-- --></A><H3>
+setOrdinate</H3>
+<PRE>
+public void <B>setOrdinate</B>(int&nbsp;index,
+                        int&nbsp;ordinate,
+                        double&nbsp;value)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></B></DD>
+<DD>Sets the ordinate of a coordinate in this sequence.
+ <br>
+ Warning: for performance reasons the ordinate index is not checked
+ - if it is over dimensions you may not get an exception but a meaningless value.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index<DD><CODE>ordinate</CODE> - the ordinate index in the coordinate, 0 based, smaller than the
+          number of dimensions<DD><CODE>value</CODE> - the new ordinate value<DT><B>See Also:</B><DD><CODE>com.vividsolutions.jts.geom.PackedCoordinateSequence#setOrdinate(int,
+      int, double)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+expandEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>expandEnvelope</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Expands the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.
+ Allows implementing classes to optimize access to coordinate values.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>env</CODE> - the envelope to expand
+<DT><B>Returns:</B><DD>a ref to the expanded envelope</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequence.Float.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.impl.PackedCoordinateSequence">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,717 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:50 PST 2006 -->
+<TITLE>
+PackedCoordinateSequence
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl.PackedCoordinateSequence class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PackedCoordinateSequence";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequence.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.impl</FONT>
+<BR>
+Class PackedCoordinateSequence</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.impl.PackedCoordinateSequence</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>PackedCoordinateSequence</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></DL>
+
+<P>
+A <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation based on a packed arrays.
+ In this implementation, <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s returned by #toArray and #get are copies
+ of the internal values.
+ To change the actual values, use the provided setters.
+ <p>
+ For efficiency, created Coordinate arrays
+ are cached using a soft reference.
+ The cache is cleared each time the coordinate sequence contents are
+ modified through a setter method.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Packed coordinate sequence implementation based on doubles</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Packed coordinate sequence implementation based on floats</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.lang.ref.SoftReference</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#coordRef">coordRef</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A soft reference to the Coordinate[] representation of this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#dimension">dimension</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The dimensions of the coordinates hold in the packed array</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.CoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from interface com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#M">M</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#X">X</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Y">Y</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#Z">Z</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#PackedCoordinateSequence()">PackedCoordinateSequence</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a deep copy of this collection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns (possibly a copy of) the i'th coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A></B>(int&nbsp;i,
+              <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateCopy(int)">getCoordinateCopy</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a copy of the i'th coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateInternal(int)">getCoordinateInternal</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinateIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getX(int)">getX</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns ordinate X (0) of the specified coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getY(int)">getY</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns ordinate Y (1) of the specified coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></B>(int&nbsp;index,
+            int&nbsp;ordinate,
+            double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setX(int, double)">setX</A></B>(int&nbsp;index,
+     double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the first ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setY(int, double)">setY</A></B>(int&nbsp;index,
+     double&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the second ordinate of a coordinate in this sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#toCoordinateArray()">toCoordinateArray</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns (possibly copies of) the Coordinates in this collection.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.CoordinateSequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from interface com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)">expandEnvelope</A>, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#size()">size</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="dimension"><!-- --></A><H3>
+dimension</H3>
+<PRE>
+protected int <B>dimension</B></PRE>
+<DL>
+<DD>The dimensions of the coordinates hold in the packed array
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="coordRef"><!-- --></A><H3>
+coordRef</H3>
+<PRE>
+protected java.lang.ref.SoftReference <B>coordRef</B></PRE>
+<DL>
+<DD>A soft reference to the Coordinate[] representation of this sequence.
+ Makes repeated coordinate array accesses more efficient.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PackedCoordinateSequence()"><!-- --></A><H3>
+PackedCoordinateSequence</H3>
+<PRE>
+public <B>PackedCoordinateSequence</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getDimension()">getDimension</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension of the sequence.<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getDimension()"><CODE>CoordinateSequence.getDimension()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns (possibly a copy of) the i'th coordinate in this sequence.
+ Whether or not the Coordinate returned is the actual underlying
+ Coordinate or merely a copy depends on the implementation.
+ <p>
+ Note that in the future the semantics of this method may change
+ to guarantee that the Coordinate returned is always a copy.
+ Callers should not to assume that they can modify a CoordinateSequence by
+ modifying the object returned by this method.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)">getCoordinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate to retrieve
+<DT><B>Returns:</B><DD>the i'th coordinate in the sequence<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)"><CODE>CoordinateSequence.getCoordinate(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateCopy(int)"><!-- --></A><H3>
+getCoordinateCopy</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateCopy</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns a copy of the i'th coordinate in this sequence.
+ This method optimizes the situation where the caller is
+ going to make a copy anyway - if the implementation
+ has already created a new Coordinate object, no further copy is needed.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinateCopy(int)">getCoordinateCopy</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate to retrieve
+<DT><B>Returns:</B><DD>a copy of the i'th coordinate in the sequence<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)"><CODE>CoordinateSequence.getCoordinate(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public void <B>getCoordinate</B>(int&nbsp;i,
+                          <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.  Only the first two dimensions are copied.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)">getCoordinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the index of the coordinate to copy<DD><CODE>coord</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> to receive the value<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)"><CODE>CoordinateSequence.getCoordinate(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toCoordinateArray()"><!-- --></A><H3>
+toCoordinateArray</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>toCoordinateArray</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns (possibly copies of) the Coordinates in this collection.
+ Whether or not the Coordinates returned are the actual underlying
+ Coordinates or merely copies depends on the implementation. Note that
+ if this implementation does not store its data as an array of Coordinates,
+ this method will incur a performance penalty because the array needs to
+ be built from scratch.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#toCoordinateArray()">toCoordinateArray</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a array of coordinates containing the point values in this sequence<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#toCoordinateArray()"><CODE>CoordinateSequence.toCoordinateArray()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getX(int)"><!-- --></A><H3>
+getX</H3>
+<PRE>
+public double <B>getX</B>(int&nbsp;index)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns ordinate X (0) of the specified coordinate.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)">getX</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD>the value of the X ordinate in the index'th coordinate<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)"><CODE>CoordinateSequence.getX(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getY(int)"><!-- --></A><H3>
+getY</H3>
+<PRE>
+public double <B>getY</B>(int&nbsp;index)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns ordinate Y (1) of the specified coordinate.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getY(int)">getY</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD>the value of the Y ordinate in the index'th coordinate<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getY(int)"><CODE>CoordinateSequence.getY(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOrdinate(int, int)"><!-- --></A><H3>
+getOrdinate</H3>
+<PRE>
+public abstract double <B>getOrdinate</B>(int&nbsp;index,
+                                   int&nbsp;ordinateIndex)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns the ordinate of a coordinate in this sequence.
+ Ordinate indices 0 and 1 are assumed to be X and Y.
+ Ordinates indices greater than 1 have user-defined semantics
+ (for instance, they may contain other dimensions or measure values).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)">getOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index in the sequence<DD><CODE>ordinateIndex</CODE> - the ordinate index in the coordinate (in range [0, dimension-1])<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)"><CODE>CoordinateSequence.getOrdinate(int, int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setX(int, double)"><!-- --></A><H3>
+setX</H3>
+<PRE>
+public void <B>setX</B>(int&nbsp;index,
+                 double&nbsp;value)</PRE>
+<DL>
+<DD>Sets the first ordinate of a coordinate in this sequence.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index<DD><CODE>value</CODE> - the new ordinate value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setY(int, double)"><!-- --></A><H3>
+setY</H3>
+<PRE>
+public void <B>setY</B>(int&nbsp;index,
+                 double&nbsp;value)</PRE>
+<DL>
+<DD>Sets the second ordinate of a coordinate in this sequence.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index<DD><CODE>value</CODE> - the new ordinate value</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinateInternal(int)"><!-- --></A><H3>
+getCoordinateInternal</H3>
+<PRE>
+protected abstract <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinateInternal</B>(int&nbsp;index)</PRE>
+<DL>
+<DD>Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - 
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public abstract java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></B></DD>
+<DD>Returns a deep copy of this collection.
+ Called by Geometry#clone.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#clone()">clone</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><CODE>Object.clone()</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setOrdinate(int, int, double)"><!-- --></A><H3>
+setOrdinate</H3>
+<PRE>
+public abstract void <B>setOrdinate</B>(int&nbsp;index,
+                                 int&nbsp;ordinate,
+                                 double&nbsp;value)</PRE>
+<DL>
+<DD>Sets the ordinate of a coordinate in this sequence.
+ <br>
+ Warning: for performance reasons the ordinate index is not checked
+ - if it is over dimensions you may not get an exception but a meaningless value.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)">setOrdinate</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the coordinate index<DD><CODE>ordinate</CODE> - the ordinate index in the coordinate, 0 based, smaller than the
+          number of dimensions<DD><CODE>value</CODE> - the new ordinate value</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequence.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,608 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+PackedCoordinateSequenceFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PackedCoordinateSequenceFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.impl</FONT>
+<BR>
+Class PackedCoordinateSequenceFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>PackedCoordinateSequenceFactory</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></DL>
+
+<P>
+Builds packed array coordinate sequences. The array data type can be either
+ double or float, and defaults to float.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#DOUBLE">DOUBLE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#DOUBLE_FACTORY">DOUBLE_FACTORY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#FLOAT">FLOAT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#FLOAT_FACTORY">FLOAT_FACTORY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#PackedCoordinateSequenceFactory()">PackedCoordinateSequenceFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new PackedCoordinateSequenceFactory
+ of type DOUBLE.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#PackedCoordinateSequenceFactory(int)">PackedCoordinateSequenceFactory</A></B>(int&nbsp;type)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new PackedCoordinateSequenceFactory
+ of the given type.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#PackedCoordinateSequenceFactory(int, int)">PackedCoordinateSequenceFactory</A></B>(int&nbsp;type,
+                                int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new PackedCoordinateSequenceFactory
+ of the given type.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> based on the given array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(double[], int)">create</A></B>(double[]&nbsp;packedCoordinates,
+       int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(float[], int)">create</A></B>(float[]&nbsp;packedCoordinates,
+       int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(int, int)">create</A></B>(int&nbsp;size,
+       int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#getType()">getType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the type of packed coordinate sequences this factory builds, either
+ PackedCoordinateSequenceFactory#Float or
+ PackedCoordinateSequenceFactory#Double</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#setDimension(int)">setDimension</A></B>(int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#setType(int)">setType</A></B>(int&nbsp;type)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the type of packed coordinate sequences this factory builds,
+ acceptable values are PackedCoordinateSequenceFactory#Floator
+ PackedCoordinateSequenceFactory#Double</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DOUBLE"><!-- --></A><H3>
+DOUBLE</H3>
+<PRE>
+public static final int <B>DOUBLE</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory.DOUBLE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="FLOAT"><!-- --></A><H3>
+FLOAT</H3>
+<PRE>
+public static final int <B>FLOAT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory.FLOAT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DOUBLE_FACTORY"><!-- --></A><H3>
+DOUBLE_FACTORY</H3>
+<PRE>
+public static final <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A> <B>DOUBLE_FACTORY</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="FLOAT_FACTORY"><!-- --></A><H3>
+FLOAT_FACTORY</H3>
+<PRE>
+public static final <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A> <B>FLOAT_FACTORY</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PackedCoordinateSequenceFactory()"><!-- --></A><H3>
+PackedCoordinateSequenceFactory</H3>
+<PRE>
+public <B>PackedCoordinateSequenceFactory</B>()</PRE>
+<DL>
+<DD>Creates a new PackedCoordinateSequenceFactory
+ of type DOUBLE.
+<P>
+</DL>
+<HR>
+
+<A NAME="PackedCoordinateSequenceFactory(int)"><!-- --></A><H3>
+PackedCoordinateSequenceFactory</H3>
+<PRE>
+public <B>PackedCoordinateSequenceFactory</B>(int&nbsp;type)</PRE>
+<DL>
+<DD>Creates a new PackedCoordinateSequenceFactory
+ of the given type.
+ Acceptable type values are
+ PackedCoordinateSequenceFactory#Floator
+ PackedCoordinateSequenceFactory#Double
+<P>
+</DL>
+<HR>
+
+<A NAME="PackedCoordinateSequenceFactory(int, int)"><!-- --></A><H3>
+PackedCoordinateSequenceFactory</H3>
+<PRE>
+public <B>PackedCoordinateSequenceFactory</B>(int&nbsp;type,
+                                       int&nbsp;dimension)</PRE>
+<DL>
+<DD>Creates a new PackedCoordinateSequenceFactory
+ of the given type.
+ Acceptable type values are
+ <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#FLOAT">FLOAT</A>or
+ <A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#DOUBLE">DOUBLE</A>
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getType()"><!-- --></A><H3>
+getType</H3>
+<PRE>
+public int <B>getType</B>()</PRE>
+<DL>
+<DD>Returns the type of packed coordinate sequences this factory builds, either
+ PackedCoordinateSequenceFactory#Float or
+ PackedCoordinateSequenceFactory#Double
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setType(int)"><!-- --></A><H3>
+setType</H3>
+<PRE>
+public void <B>setType</B>(int&nbsp;type)</PRE>
+<DL>
+<DD>Sets the type of packed coordinate sequences this factory builds,
+ acceptable values are PackedCoordinateSequenceFactory#Floator
+ PackedCoordinateSequenceFactory#Double
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDimension(int)"><!-- --></A><H3>
+setDimension</H3>
+<PRE>
+public void <B>setDimension</B>(int&nbsp;dimension)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Returns a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> based on the given array.
+ Whether the array is copied or simply referenced
+ is implementation-dependent.
+ This method must handle null arguments by creating an empty sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])">create</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the coordinates<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])"><CODE>CoordinateSequenceFactory.create(com.vividsolutions.jts.geom.Coordinate[])</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coordSeq)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+ This method must handle null arguments by creating an empty sequence.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)">create</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordSeq</CODE> - the coordinate sequence to copy<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><CODE>CoordinateSequenceFactory.create(com.vividsolutions.jts.geom.CoordinateSequence)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(double[], int)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(double[]&nbsp;packedCoordinates,
+                                 int&nbsp;dimension)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><CODE>com.vividsolutions.jts.geom.CoordinateSequenceFactory#create(double[],
+      int)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(float[], int)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(float[]&nbsp;packedCoordinates,
+                                 int&nbsp;dimension)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>See Also:</B><DD><CODE>com.vividsolutions.jts.geom.CoordinateSequenceFactory#create(float[],
+      int)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(int, int)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>create</B>(int&nbsp;size,
+                                 int&nbsp;dimension)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></B></DD>
+<DD>Creates a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.
+ For this to be useful, the <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation must
+ be mutable.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)">create</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the number of coordinates in the sequence<DD><CODE>dimension</CODE> - the dimension of the coordinates in the sequence (if user-specifiable,
+ otherwise ignored)<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)"><CODE>CoordinateSequenceFactory.create(int, int)</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PackedCoordinateSequenceFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom.impl
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/geom/impl/package-summary.html" target="classFrame">com.vividsolutions.jts.geom.impl</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">CoordinateArraySequence</A>
+<BR>
+<A HREF="CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">CoordinateArraySequenceFactory</A>
+<BR>
+<A HREF="PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequence</A>
+<BR>
+<A HREF="PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequence.Double</A>
+<BR>
+<A HREF="PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequence.Float</A>
+<BR>
+<A HREF="PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl" target="classFrame">PackedCoordinateSequenceFactory</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom.impl
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.impl package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geom.impl";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.geom.impl
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A></B></TD>
+<TD>The <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation that <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s use by default.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A></B></TD>
+<TD>Creates <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s represented as an array of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A></B></TD>
+<TD>A <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation based on a packed arrays.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A></B></TD>
+<TD>Packed coordinate sequence implementation based on doubles</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A></B></TD>
+<TD>Packed coordinate sequence implementation based on floats</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A></B></TD>
+<TD>Builds packed array coordinate sequences.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/impl/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom.impl Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geom.impl Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.geom.impl
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>CoordinateArraySequence</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>CoordinateArraySequenceFactory</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence.Double</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence.Float</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="../../../../../com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequenceFactory</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>)
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/geom/package-summary.html" target="classFrame">com.vividsolutions.jts.geom</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateFilter</I></A>
+<BR>
+<A HREF="CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateSequence</I></A>
+<BR>
+<A HREF="CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateSequenceFactory</I></A>
+<BR>
+<A HREF="CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>CoordinateSequenceFilter</I></A>
+<BR>
+<A HREF="GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>GeometryComponentFilter</I></A>
+<BR>
+<A HREF="GeometryFilter.html" title="interface in com.vividsolutions.jts.geom" target="classFrame"><I>GeometryFilter</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Coordinate.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Coordinate</A>
+<BR>
+<A HREF="Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Coordinate.DimensionalComparator</A>
+<BR>
+<A HREF="CoordinateArrays.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateArrays</A>
+<BR>
+<A HREF="CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateArrays.BidirectionalComparator</A>
+<BR>
+<A HREF="CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateArrays.ForwardComparator</A>
+<BR>
+<A HREF="CoordinateList.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateList</A>
+<BR>
+<A HREF="CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateSequenceComparator</A>
+<BR>
+<A HREF="CoordinateSequences.html" title="class in com.vividsolutions.jts.geom" target="classFrame">CoordinateSequences</A>
+<BR>
+<A HREF="DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom" target="classFrame">DefaultCoordinateSequenceFactory</A>
+<BR>
+<A HREF="Dimension.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Dimension</A>
+<BR>
+<A HREF="Envelope.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Envelope</A>
+<BR>
+<A HREF="Geometry.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Geometry</A>
+<BR>
+<A HREF="GeometryCollection.html" title="class in com.vividsolutions.jts.geom" target="classFrame">GeometryCollection</A>
+<BR>
+<A HREF="GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom" target="classFrame">GeometryCollectionIterator</A>
+<BR>
+<A HREF="GeometryFactory.html" title="class in com.vividsolutions.jts.geom" target="classFrame">GeometryFactory</A>
+<BR>
+<A HREF="IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom" target="classFrame">IntersectionMatrix</A>
+<BR>
+<A HREF="LinearRing.html" title="class in com.vividsolutions.jts.geom" target="classFrame">LinearRing</A>
+<BR>
+<A HREF="LineSegment.html" title="class in com.vividsolutions.jts.geom" target="classFrame">LineSegment</A>
+<BR>
+<A HREF="LineString.html" title="class in com.vividsolutions.jts.geom" target="classFrame">LineString</A>
+<BR>
+<A HREF="Location.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Location</A>
+<BR>
+<A HREF="MultiLineString.html" title="class in com.vividsolutions.jts.geom" target="classFrame">MultiLineString</A>
+<BR>
+<A HREF="MultiPoint.html" title="class in com.vividsolutions.jts.geom" target="classFrame">MultiPoint</A>
+<BR>
+<A HREF="MultiPolygon.html" title="class in com.vividsolutions.jts.geom" target="classFrame">MultiPolygon</A>
+<BR>
+<A HREF="Point.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Point</A>
+<BR>
+<A HREF="Polygon.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Polygon</A>
+<BR>
+<A HREF="PrecisionModel.html" title="class in com.vividsolutions.jts.geom" target="classFrame">PrecisionModel</A>
+<BR>
+<A HREF="Triangle.html" title="class in com.vividsolutions.jts.geom" target="classFrame">Triangle</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="TopologyException.html" title="class in com.vividsolutions.jts.geom" target="classFrame">TopologyException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,338 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geom";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/impl/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.geom
+</H2>
+Contains the <CODE>Geometry</CODE> interface hierarchy and supporting classes.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></B></TD>
+<TD><code>Geometry</code> classes support the concept of applying a
+  coordinate filter to every coordinate in the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+<TD>The internal representation of a list of coordinates inside a Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A></B></TD>
+<TD>A factory to create concrete instances of <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></B></TD>
+<TD>Interface for classeswhich provide operations that
+  can be applied to the coordinates in a <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A></B></TD>
+<TD><code>Geometry</code> classes support the concept of applying
+  a <code>GeometryComponentFilter</code>
+  filter to the <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></B></TD>
+<TD><code>GeometryCollection</code> classes support the concept of
+  applying a <code>GeometryFilter</code> to the <code>Geometry</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></B></TD>
+<TD>A lightweight class used to store coordinates
+ on the 2-dimensional Cartesian plane.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A></B></TD>
+<TD>Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, allowing for either a 2-dimensional
+ or 3-dimensional comparison, and handling NaN values correctly.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A></B></TD>
+<TD>Useful utility functions for handling Coordinate arrays</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A></B></TD>
+<TD>A <CODE>Comparator</CODE> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ modulo their directionality.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.ForwardComparator</A></B></TD>
+<TD>A <CODE>Comparator</CODE> for <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A></B></TD>
+<TD>A list of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, which may
+ be set to prevent repeated coordinates from occuring in the list.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A></B></TD>
+<TD>Compares two <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom">CoordinateSequences</A></B></TD>
+<TD>Utility functions for manipulating <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A></B></TD>
+<TD><B>Deprecated.</B>&nbsp;<I>no longer used</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A></B></TD>
+<TD>Constants representing the dimensions of a point, a curve and a surface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></B></TD>
+<TD>Defines a rectangular region of the 2D coordinate plane.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></B></TD>
+<TD>The base class for all geometric objects.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A></B></TD>
+<TD>Basic implementation of <code>GeometryCollection</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A></B></TD>
+<TD>Iterates over all <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A></B></TD>
+<TD>Supplies a set of utility methods for building Geometry objects from lists
+ of Coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></B></TD>
+<TD>A Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></B></TD>
+<TD>Models an OGC SFS <code>LinearRing</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></B></TD>
+<TD>Represents a line segment defined by two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></B></TD>
+<TD>Basic implementation of <code>LineString</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A></B></TD>
+<TD>Constants representing the location of a point relative to a geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A></B></TD>
+<TD>Basic implementation of <code>MultiLineString</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A></B></TD>
+<TD>Models a collection of <code>Point</code>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A></B></TD>
+<TD>Basic implementation of <code>MultiPolygon</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A></B></TD>
+<TD>Basic implementation of <code>Point</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></B></TD>
+<TD>Represents a linear polygon, which may include holes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></B></TD>
+<TD>Specifies the precision model of the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s in a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A></B></TD>
+<TD>Represents a planar triangle, and provides methods for calculating various
+ properties of triangles.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></B></TD>
+<TD>Indicates an invalid or inconsistent topological situation encountered during processing</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.geom Description
+</H2>
+
+<P>
+Contains the <CODE>Geometry</CODE> interface hierarchy and supporting classes.
+<P>
+The Java Topology Suite (JTS) is a Java API that implements a core set of spatial data operations using an explicit precision model and robust geometric algorithms. JTS is intended to be used in the development of applications that support the validation, cleaning, integration and querying of spatial datasets.
+<P>
+JTS attempts to implement the OpenGIS Simple Features Specification (SFS) as accurately as possible.  In some cases the SFS is unclear or omits a specification; in this case JTS attempts to choose a reasonable and consistent alternative.  Differences from and elaborations of the SFS are documented in this specification.
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/impl/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,185 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geom Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/impl/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.geom
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class java.util.AbstractCollection (implements java.util.Collection)
+<UL>
+<LI TYPE="circle">class java.util.AbstractList (implements java.util.List)
+<UL>
+<LI TYPE="circle">class java.util.ArrayList (implements java.lang.Cloneable, java.util.List, java.util.RandomAccess, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateList</B></A></UL>
+</UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><B>Coordinate</B></A> (implements java.lang.Cloneable, java.lang.Comparable, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>Coordinate.DimensionalComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays.BidirectionalComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays.ForwardComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateSequenceComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateSequences</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>DefaultCoordinateSequenceFactory</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>Dimension</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>Envelope</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>Geometry</B></A> (implements java.lang.Cloneable, java.lang.Comparable, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>GeometryCollection</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>MultiLineString</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>MultiPoint</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>MultiPolygon</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>LineString</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>LinearRing</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>Point</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>Polygon</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>GeometryCollectionIterator</B></A> (implements java.util.Iterator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>GeometryFactory</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>IntersectionMatrix</B></A> (implements java.lang.Cloneable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>LineSegment</B></A> (implements java.lang.Comparable, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>Location</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>PrecisionModel</B></A> (implements java.lang.Comparable, java.io.Serializable)
+<LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class java.lang.RuntimeException<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom"><B>TopologyException</B></A></UL>
+</UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom"><B>Triangle</B></A></UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface java.lang.Cloneable<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequence</B></A></UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequenceFactory</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequenceFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>GeometryComponentFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom"><B>GeometryFilter</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/impl/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1583 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+AffineTransformation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.AffineTransformation class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="AffineTransformation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AffineTransformation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class AffineTransformation</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.AffineTransformation</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>AffineTransformation</B><DT>extends java.lang.Object<DT>implements java.lang.Cloneable, <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></DL>
+
+<P>
+Represents a affine transformation on the 2D Cartesian plane. 
+ It can be used to transform a <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> or <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ An affine transformation is a mapping of the 2D plane into itself
+ via a series of transformations of the following basic types:
+ <ul>
+ <li>reflection (through a line)
+ <li>rotation (around the origin)
+ <li>scaling (relative to the origin)
+ <li>shearing (in both the X and Y directions)
+ <li>translation 
+ </ul>
+ In general, affine transformations preserve straightness and parallel lines,
+ but do not preserve distance or shape.
+ <p>
+ An affine transformation can be represented by a 3x3 
+ matrix in the following form:
+ <blockquote><pre>
+ T = | m00 m01 m02 |
+     | m10 m11 m12 |
+     |  0   0   1  |
+ </pre></blockquote>
+ A coordinate P = (x, y) can be transformed to a new coordinate P' = (x', y')
+ by representing it as a 3x1 matrix and using matrix multiplication to compute:
+ <blockquote><pre>
+ | x' |  = T x | x |
+ | y' |        | y |
+ | 1  |        | 1 |
+ </pre></blockquote>
+ Affine transformations can be composed using the <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#compose(com.vividsolutions.jts.geom.util.AffineTransformation)"><CODE>compose(com.vividsolutions.jts.geom.util.AffineTransformation)</CODE></A> method.
+ The composition of transformations is in general not commutative.
+ transformation matrices as follows:
+ <blockquote><pre>
+ A.compose(B) = T<sub>B</sub> x T<sub>A</sub>
+ </pre></blockquote>
+ This produces a transformation whose effect is that of A followed by B.
+ Composition is computed via multiplication of the 
+ The methods <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#reflect(double, double, double, double)"><CODE>reflect(double, double, double, double)</CODE></A>, <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#rotate(double)"><CODE>rotate(double)</CODE></A>, <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#scale(double, double)"><CODE>scale(double, double)</CODE></A>, <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#shear(double, double)"><CODE>shear(double, double)</CODE></A>, and <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#translate(double, double)"><CODE>translate(double, double)</CODE></A> 
+ have the effect of composing a transformation of that type with
+ the transformation they are invoked on.  
+ <p>
+ Affine transformations may be invertible or non-invertible.  
+ If a transformation is invertible, then there exists 
+ an inverse transformation which when composed produces 
+ the identity transformation.  
+ The <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#getInverse()"><CODE>getInverse()</CODE></A> method
+ computes the inverse of a transformation, if one exists.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation()">AffineTransformation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new identity transformation</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(com.vividsolutions.jts.geom.util.AffineTransformation)">AffineTransformation</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a transformation which is
+ a copy of the given one.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">AffineTransformation</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src0,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src1,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src2,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest0,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest1,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a transformation
+ which maps the given source
+ points into the given destination points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(double[])">AffineTransformation</A></B>(double[]&nbsp;matrix)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new transformation whose 
+ matrix has the specified values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(double, double, double, double, double, double)">AffineTransformation</A></B>(double&nbsp;m00,
+                     double&nbsp;m01,
+                     double&nbsp;m02,
+                     double&nbsp;m10,
+                     double&nbsp;m11,
+                     double&nbsp;m12)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new transformation whose 
+ matrix has the specified values.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clones this transformation</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#compose(com.vividsolutions.jts.geom.util.AffineTransformation)">compose</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Composes the given <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A> 
+ with this transformation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#composeBefore(com.vividsolutions.jts.geom.util.AffineTransformation)">composeBefore</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Composes this transformation 
+ with the given <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if an object is an
+ <tt>AffineTransformation</tt>
+ and has the same matrix as 
+ this transformation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#filter(com.vividsolutions.jts.geom.CoordinateSequence, int)">filter</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+       int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transforms the i'th coordinate in the input sequence</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#getDeterminant()">getDeterminant</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the determinant of the transformation matrix.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#getInverse()">getInverse</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the inverse of this transformation, if one
+ exists.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#getMatrixEntries()">getMatrixEntries</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets an array containing the entries
+ of the transformation matrix.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#isDone()">isDone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reports that this filter should continue to be executed until 
+ all coordinates have been transformed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#isGeometryChanged()">isGeometryChanged</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the execution of this filter
+ has modified the coordinates of the geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#isIdentity()">isIdentity</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if this transformation is the identity transformation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#reflect(double, double)">reflect</A></B>(double&nbsp;x,
+        double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a reflection transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#reflect(double, double, double, double)">reflect</A></B>(double&nbsp;x0,
+        double&nbsp;y0,
+        double&nbsp;x1,
+        double&nbsp;y1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a reflection transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#reflectionInstance(double, double)">reflectionInstance</A></B>(double&nbsp;x,
+                   double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a transformation for a reflection about the 
+ line (0,0) - (x,y).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#reflectionInstance(double, double, double, double)">reflectionInstance</A></B>(double&nbsp;x0,
+                   double&nbsp;y0,
+                   double&nbsp;x1,
+                   double&nbsp;y1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a transformation for a reflection about the 
+ line (x0,y0) - (x1,y1).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#rotate(double)">rotate</A></B>(double&nbsp;theta)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a rotation transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#rotate(double, double)">rotate</A></B>(double&nbsp;sinTheta,
+       double&nbsp;cosTheta)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a rotation transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#rotationInstance(double)">rotationInstance</A></B>(double&nbsp;theta)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a transformation for a rotation
+ about the origin 
+ by an angle <i>theta</i>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#rotationInstance(double, double)">rotationInstance</A></B>(double&nbsp;sinTheta,
+                 double&nbsp;cosTheta)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a transformation for a rotation 
+ by an angle <i>theta</i>,
+ specified by the sine and cosine of the angle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#scale(double, double)">scale</A></B>(double&nbsp;xScale,
+      double&nbsp;yScale)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a scale transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#scaleInstance(double, double)">scaleInstance</A></B>(double&nbsp;xScale,
+              double&nbsp;yScale)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToIdentity()">setToIdentity</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be the identity transformation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToReflection(double, double)">setToReflection</A></B>(double&nbsp;x,
+                double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be a reflection 
+ about the line defined by vector (x,y).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToReflection(double, double, double, double)">setToReflection</A></B>(double&nbsp;x0,
+                double&nbsp;y0,
+                double&nbsp;x1,
+                double&nbsp;y1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToReflectionBasic(double, double, double, double)">setToReflectionBasic</A></B>(double&nbsp;x0,
+                     double&nbsp;y0,
+                     double&nbsp;x1,
+                     double&nbsp;y1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explicitly computes the math for a reflection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToRotation(double, double)">setToRotation</A></B>(double&nbsp;sinTheta,
+              double&nbsp;cosTheta)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be a rotation 
+ by specifying the sin and cos of the rotation angle directly.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToScale(double, double)">setToScale</A></B>(double&nbsp;xScale,
+           double&nbsp;yScale)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be a scaling.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToShear(double, double)">setToShear</A></B>(double&nbsp;xShear,
+           double&nbsp;yShear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be a shear.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setToTranslation(double, double)">setToTranslation</A></B>(double&nbsp;dx,
+                 double&nbsp;dy)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be a translation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setTransformation(com.vividsolutions.jts.geom.util.AffineTransformation)">setTransformation</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation to be a copy of the given one</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#setTransformation(double, double, double, double, double, double)">setTransformation</A></B>(double&nbsp;m00,
+                  double&nbsp;m01,
+                  double&nbsp;m02,
+                  double&nbsp;m10,
+                  double&nbsp;m11,
+                  double&nbsp;m12)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this transformation's matrix to have the given values.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#shear(double, double)">shear</A></B>(double&nbsp;xShear,
+      double&nbsp;yShear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a shear transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#shearInstance(double, double)">shearInstance</A></B>(double&nbsp;xShear,
+              double&nbsp;yShear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a text representation of this transformation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#transform(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">transform</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src,
+          <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Applies this transformation to the <tt>src</tt> coordinate
+ and places the results in the <tt>dest</tt> coordinate
+ (which may be the same as the source).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#transform(com.vividsolutions.jts.geom.CoordinateSequence, int)">transform</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+          int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Applies this transformation to the i'th coordinate
+ in the given CoordinateSequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#translate(double, double)">translate</A></B>(double&nbsp;x,
+          double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the value of this transformation
+ to that of a translation transformation composed 
+ with the current value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#translationInstance(double, double)">translationInstance</A></B>(double&nbsp;x,
+                    double&nbsp;y)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="AffineTransformation()"><!-- --></A><H3>
+AffineTransformation</H3>
+<PRE>
+public <B>AffineTransformation</B>()</PRE>
+<DL>
+<DD>Constructs a new identity transformation
+<P>
+</DL>
+<HR>
+
+<A NAME="AffineTransformation(double[])"><!-- --></A><H3>
+AffineTransformation</H3>
+<PRE>
+public <B>AffineTransformation</B>(double[]&nbsp;matrix)</PRE>
+<DL>
+<DD>Constructs a new transformation whose 
+ matrix has the specified values.
+<P>
+<DT><B>Parameters:</B><DD><CODE>matrix</CODE> - an array containing the 6 values { m00, m01, m02, m10, m11, m12 }
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.NullPointerException</CODE> - if matrix is null
+<DD><CODE>java.lang.ArrayIndexOutOfBoundsException</CODE> - if matrix is too small</DL>
+<HR>
+
+<A NAME="AffineTransformation(double, double, double, double, double, double)"><!-- --></A><H3>
+AffineTransformation</H3>
+<PRE>
+public <B>AffineTransformation</B>(double&nbsp;m00,
+                            double&nbsp;m01,
+                            double&nbsp;m02,
+                            double&nbsp;m10,
+                            double&nbsp;m11,
+                            double&nbsp;m12)</PRE>
+<DL>
+<DD>Constructs a new transformation whose 
+ matrix has the specified values.
+<P>
+<DT><B>Parameters:</B><DD><CODE>m00</CODE> - the entry for the [0, 0] element in the transformation matrix<DD><CODE>m01</CODE> - the entry for the [0, 1] element in the transformation matrix<DD><CODE>m02</CODE> - the entry for the [0, 2] element in the transformation matrix<DD><CODE>m10</CODE> - the entry for the [1, 0] element in the transformation matrix<DD><CODE>m11</CODE> - the entry for the [1, 1] element in the transformation matrix<DD><CODE>m12</CODE> - the entry for the [1, 2] element in the transformation matrix</DL>
+<HR>
+
+<A NAME="AffineTransformation(com.vividsolutions.jts.geom.util.AffineTransformation)"><!-- --></A><H3>
+AffineTransformation</H3>
+<PRE>
+public <B>AffineTransformation</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</PRE>
+<DL>
+<DD>Constructs a transformation which is
+ a copy of the given one.
+<P>
+<DT><B>Parameters:</B><DD><CODE>trans</CODE> - the transformation to copy</DL>
+<HR>
+
+<A NAME="AffineTransformation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+AffineTransformation</H3>
+<PRE>
+public <B>AffineTransformation</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src0,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src1,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src2,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest0,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest1,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest2)</PRE>
+<DL>
+<DD>Constructs a transformation
+ which maps the given source
+ points into the given destination points.
+<P>
+<DT><B>Parameters:</B><DD><CODE>src0</CODE> - source point 0<DD><CODE>src1</CODE> - source point 1<DD><CODE>src2</CODE> - source point 2<DD><CODE>dest0</CODE> - the mapped point for source point 0<DD><CODE>dest1</CODE> - the mapped point for source point 1<DD><CODE>dest2</CODE> - the mapped point for source point 2</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="reflectionInstance(double, double, double, double)"><!-- --></A><H3>
+reflectionInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>reflectionInstance</B>(double&nbsp;x0,
+                                                      double&nbsp;y0,
+                                                      double&nbsp;x1,
+                                                      double&nbsp;y1)</PRE>
+<DL>
+<DD>Creates a transformation for a reflection about the 
+ line (x0,y0) - (x1,y1).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x0</CODE> - the x-ordinate of a point on the reflection line<DD><CODE>y0</CODE> - the y-ordinate of a point on the reflection line<DD><CODE>x1</CODE> - the x-ordinate of a another point on the reflection line<DD><CODE>y1</CODE> - the y-ordinate of a another point on the reflection line
+<DT><B>Returns:</B><DD>a transformation for the reflection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reflectionInstance(double, double)"><!-- --></A><H3>
+reflectionInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>reflectionInstance</B>(double&nbsp;x,
+                                                      double&nbsp;y)</PRE>
+<DL>
+<DD>Creates a transformation for a reflection about the 
+ line (0,0) - (x,y).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-ordinate of a point on the reflection line<DD><CODE>y</CODE> - the y-ordinate of a point on the reflection line
+<DT><B>Returns:</B><DD>a transformation for the reflection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="rotationInstance(double)"><!-- --></A><H3>
+rotationInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>rotationInstance</B>(double&nbsp;theta)</PRE>
+<DL>
+<DD>Creates a transformation for a rotation
+ about the origin 
+ by an angle <i>theta</i>.
+ Positive angles correspond to a rotation 
+ in the counter-clockwise direction.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>theta</CODE> - the rotation angle, in radians
+<DT><B>Returns:</B><DD>a transformation for the rotation</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="rotationInstance(double, double)"><!-- --></A><H3>
+rotationInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>rotationInstance</B>(double&nbsp;sinTheta,
+                                                    double&nbsp;cosTheta)</PRE>
+<DL>
+<DD>Creates a transformation for a rotation 
+ by an angle <i>theta</i>,
+ specified by the sine and cosine of the angle.
+ This allows providing exact values for sin(theta) and cos(theta)
+ for the common case of rotations of multiples of quarter-circles.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>sinTheta</CODE> - the sine of the rotation angle<DD><CODE>cosTheta</CODE> - the cosine of the rotation angle
+<DT><B>Returns:</B><DD>a transformation for the rotation</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="scaleInstance(double, double)"><!-- --></A><H3>
+scaleInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>scaleInstance</B>(double&nbsp;xScale,
+                                                 double&nbsp;yScale)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="shearInstance(double, double)"><!-- --></A><H3>
+shearInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>shearInstance</B>(double&nbsp;xShear,
+                                                 double&nbsp;yShear)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="translationInstance(double, double)"><!-- --></A><H3>
+translationInstance</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>translationInstance</B>(double&nbsp;x,
+                                                       double&nbsp;y)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToIdentity()"><!-- --></A><H3>
+setToIdentity</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToIdentity</B>()</PRE>
+<DL>
+<DD>Sets this transformation to be the identity transformation.
+ The identity transformation has the matrix:
+ <blockquote><pre>
+ | 1 0 0 |
+ | 0 1 0 |
+ | 0 0 1 |
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setTransformation(double, double, double, double, double, double)"><!-- --></A><H3>
+setTransformation</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setTransformation</B>(double&nbsp;m00,
+                                              double&nbsp;m01,
+                                              double&nbsp;m02,
+                                              double&nbsp;m10,
+                                              double&nbsp;m11,
+                                              double&nbsp;m12)</PRE>
+<DL>
+<DD>Sets this transformation's matrix to have the given values.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>m00</CODE> - the entry for the [0, 0] element in the transformation matrix<DD><CODE>m01</CODE> - the entry for the [0, 1] element in the transformation matrix<DD><CODE>m02</CODE> - the entry for the [0, 2] element in the transformation matrix<DD><CODE>m10</CODE> - the entry for the [1, 0] element in the transformation matrix<DD><CODE>m11</CODE> - the entry for the [1, 1] element in the transformation matrix<DD><CODE>m12</CODE> - the entry for the [1, 2] element in the transformation matrix
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setTransformation(com.vividsolutions.jts.geom.util.AffineTransformation)"><!-- --></A><H3>
+setTransformation</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setTransformation</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</PRE>
+<DL>
+<DD>Sets this transformation to be a copy of the given one
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>trans</CODE> - a transformation to copy
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMatrixEntries()"><!-- --></A><H3>
+getMatrixEntries</H3>
+<PRE>
+public double[] <B>getMatrixEntries</B>()</PRE>
+<DL>
+<DD>Gets an array containing the entries
+ of the transformation matrix.
+ Only the 6 non-trivial entries are returned,
+ in the sequence:
+ <pre>
+ m00, m01, m02, m10, m11, m12
+ </pre>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an array of length 6</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDeterminant()"><!-- --></A><H3>
+getDeterminant</H3>
+<PRE>
+public double <B>getDeterminant</B>()</PRE>
+<DL>
+<DD>Computes the determinant of the transformation matrix. 
+ The determinant is computed as:
+ <blockquote><pre>
+ | m00 m01 m02 |
+ | m10 m11 m12 | = m00 * m11 - m01 * m10
+ |  0   0   1  |
+ </pre></blockquote>
+ If the determinant is zero, 
+ the transform is singular (not invertible), 
+ and operations which attempt to compute
+ an inverse will throw a <tt>NoninvertibleTransformException</tt>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the determinant of the transformation<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#getInverse()"><CODE>getInverse()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInverse()"><!-- --></A><H3>
+getInverse</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>getInverse</B>()
+                                throws <A HREF="../../../../../com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A></PRE>
+<DL>
+<DD>Computes the inverse of this transformation, if one
+ exists.
+ The inverse is the transformation which when 
+ composed with this one produces the identity 
+ transformation.
+ A transformation has an inverse if and only if it
+ is not singular (i.e. its
+ determinant is non-zero).
+ Geometrically, an transformation is non-invertible
+ if it maps the plane to a line or a point.
+ If no inverse exists this method
+ will throw a <tt>NoninvertibleTransformationException</tt>.
+ <p>
+ The matrix of the inverse is equal to the 
+ inverse of the matrix for the transformation.
+ It is computed as follows:
+ <blockquote><pre>  
+                 1    
+ inverse(A)  =  ---   x  adjoint(A) 
+                det 
+
+
+             =   1       |  m11  -m01   m01*m12-m02*m11  |
+                ---   x  | -m10   m00  -m00*m12+m10*m02  |
+                det      |  0     0     m00*m11-m10*m01  |
+
+
+
+             = |  m11/det  -m01/det   m01*m12-m02*m11/det |
+               | -m10/det   m00/det  -m00*m12+m10*m02/det |
+               |   0           0          1               |
+
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a new inverse transformation
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A></CODE><DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html#getDeterminant()"><CODE>getDeterminant()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToReflectionBasic(double, double, double, double)"><!-- --></A><H3>
+setToReflectionBasic</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToReflectionBasic</B>(double&nbsp;x0,
+                                                 double&nbsp;y0,
+                                                 double&nbsp;x1,
+                                                 double&nbsp;y1)</PRE>
+<DL>
+<DD>Explicitly computes the math for a reflection.  May not work.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x0</CODE> - <DD><CODE>y0</CODE> - <DD><CODE>x1</CODE> - <DD><CODE>y1</CODE> - 
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToReflection(double, double, double, double)"><!-- --></A><H3>
+setToReflection</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToReflection</B>(double&nbsp;x0,
+                                            double&nbsp;y0,
+                                            double&nbsp;x1,
+                                            double&nbsp;y1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToReflection(double, double)"><!-- --></A><H3>
+setToReflection</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToReflection</B>(double&nbsp;x,
+                                            double&nbsp;y)</PRE>
+<DL>
+<DD>Sets this transformation to be a reflection 
+ about the line defined by vector (x,y).
+ The transformation for a reflection
+ is computed by:
+ <blockquote><pre>
+ d = sqrt(x<sup>2</sup> + y<sup>2</sup>)  
+ sin = x / d;
+ cos = x / d;
+ 
+ T<sub>ref</sub> = T<sub>rot(sin, cos)</sub> x T<sub>scale(1, -1)</sub> x T<sub>rot(-sin, cos)</sub  
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-component of the reflection line vector<DD><CODE>y</CODE> - the y-component of the reflection line vector
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToRotation(double, double)"><!-- --></A><H3>
+setToRotation</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToRotation</B>(double&nbsp;sinTheta,
+                                          double&nbsp;cosTheta)</PRE>
+<DL>
+<DD>Sets this transformation to be a rotation 
+ by specifying the sin and cos of the rotation angle directly.
+ The transformation matrix for the rotation
+ has the value:
+ <blockquote><pre>  
+ |  cosTheta  -sinTheta   0 |
+ |  sinTheta   cosTheta   0 |
+ |         0          0   1 |
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>sinTheta</CODE> - the sine of the rotation angle<DD><CODE>cosTheta</CODE> - the cosine of the rotation angle
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToScale(double, double)"><!-- --></A><H3>
+setToScale</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToScale</B>(double&nbsp;xScale,
+                                       double&nbsp;yScale)</PRE>
+<DL>
+<DD>Sets this transformation to be a scaling.
+ The transformation matrix for a scale
+ has the value:
+ <blockquote><pre>  
+ |  xScale      0  dx |
+ |  1      yScale  dy |
+ |  0           0   1 |
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>xScale</CODE> - the amount to scale x-ordinates by<DD><CODE>yScale</CODE> - the amount to scale y-ordinates by
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToShear(double, double)"><!-- --></A><H3>
+setToShear</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToShear</B>(double&nbsp;xShear,
+                                       double&nbsp;yShear)</PRE>
+<DL>
+<DD>Sets this transformation to be a shear.
+ The transformation matrix for a shear 
+ has the value:
+ <blockquote><pre>  
+ |  1      xShear  0 |
+ |  yShear      1  0 |
+ |  0           0  1 |
+ </pre></blockquote> 
+ Note that a shear of (1, 1) is <i>not</i> 
+ equal to shear(1, 0) composed with shear(0, 1).
+ Instead, shear(1, 1) corresponds to a mapping onto the 
+ line x = y.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>xShear</CODE> - the x component to shear by<DD><CODE>yShear</CODE> - the y component to shear by
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToTranslation(double, double)"><!-- --></A><H3>
+setToTranslation</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>setToTranslation</B>(double&nbsp;dx,
+                                             double&nbsp;dy)</PRE>
+<DL>
+<DD>Sets this transformation to be a translation.
+ For a translation by the vector (x, y)
+ the transformation matrix has the value:
+ <blockquote><pre>  
+ |  1  0  dx |
+ |  1  0  dy |
+ |  0  0   1 |
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dx</CODE> - the x component to translate by<DD><CODE>dy</CODE> - the y component to translate by
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reflect(double, double, double, double)"><!-- --></A><H3>
+reflect</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>reflect</B>(double&nbsp;x0,
+                                    double&nbsp;y0,
+                                    double&nbsp;x1,
+                                    double&nbsp;y1)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a reflection transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x0</CODE> - the x-ordinate of a point on the line to reflect around<DD><CODE>y0</CODE> - the y-ordinate of a point on the line to reflect around<DD><CODE>x1</CODE> - the x-ordinate of a point on the line to reflect around<DD><CODE>y1</CODE> - the y-ordinate of a point on the line to reflect around
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reflect(double, double)"><!-- --></A><H3>
+reflect</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>reflect</B>(double&nbsp;x,
+                                    double&nbsp;y)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a reflection transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the x-ordinate of the line to reflect around<DD><CODE>y</CODE> - the y-ordinate of the line to reflect around
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="rotate(double)"><!-- --></A><H3>
+rotate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>rotate</B>(double&nbsp;theta)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a rotation transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>theta</CODE> - the angle to rotate by
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="rotate(double, double)"><!-- --></A><H3>
+rotate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>rotate</B>(double&nbsp;sinTheta,
+                                   double&nbsp;cosTheta)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a rotation transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>sinTheta</CODE> - the sine of the angle to rotate by<DD><CODE>cosTheta</CODE> - the cosine of the angle to rotate by
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="scale(double, double)"><!-- --></A><H3>
+scale</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>scale</B>(double&nbsp;xScale,
+                                  double&nbsp;yScale)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a scale transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>xScale</CODE> - the value to scale by in the x direction<DD><CODE>yScale</CODE> - the value to scale by in the y direction
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="shear(double, double)"><!-- --></A><H3>
+shear</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>shear</B>(double&nbsp;xShear,
+                                  double&nbsp;yShear)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a shear transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>xShear</CODE> - the value to shear by in the x direction<DD><CODE>yShear</CODE> - the value to shear by in the y direction
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="translate(double, double)"><!-- --></A><H3>
+translate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>translate</B>(double&nbsp;x,
+                                      double&nbsp;y)</PRE>
+<DL>
+<DD>Updates the value of this transformation
+ to that of a translation transformation composed 
+ with the current value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x</CODE> - the value to translate by in the x direction<DD><CODE>y</CODE> - the value to translate by in the y direction
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compose(com.vividsolutions.jts.geom.util.AffineTransformation)"><!-- --></A><H3>
+compose</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>compose</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</PRE>
+<DL>
+<DD>Composes the given <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A> 
+ with this transformation.
+ This produces a transformation whose effect 
+ is equal to applying this transformation 
+ followed by the argument transformation.
+ Mathematically,
+ <blockquote><pre>
+ A.compose(B) = T<sub>B</sub> x T<sub>A</sub>
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>trans</CODE> - an affine transformation
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="composeBefore(com.vividsolutions.jts.geom.util.AffineTransformation)"><!-- --></A><H3>
+composeBefore</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>composeBefore</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>&nbsp;trans)</PRE>
+<DL>
+<DD>Composes this transformation 
+ with the given <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>.
+ This produces a transformation whose effect 
+ is equal to applying the argument transformation 
+ followed by this transformation.
+ Mathematically,
+ <blockquote><pre>
+ A.composeBefore(B) = T<sub>A</sub> x T<sub>B</sub>
+ </pre></blockquote>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>trans</CODE> - an affine transformation
+<DT><B>Returns:</B><DD>this transformation, with an updated matrix</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transform(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+transform</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>transform</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest)</PRE>
+<DL>
+<DD>Applies this transformation to the <tt>src</tt> coordinate
+ and places the results in the <tt>dest</tt> coordinate
+ (which may be the same as the source).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>src</CODE> - the coordinate to transform<DD><CODE>dest</CODE> - the coordinate to accept the results
+<DT><B>Returns:</B><DD>the <tt>dest</tt> coordinate</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transform(com.vividsolutions.jts.geom.CoordinateSequence, int)"><!-- --></A><H3>
+transform</H3>
+<PRE>
+public void <B>transform</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+                      int&nbsp;i)</PRE>
+<DL>
+<DD>Applies this transformation to the i'th coordinate
+ in the given CoordinateSequence.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seq</CODE> - a <code>CoordinateSequence</code><DD><CODE>i</CODE> - the index of the coordinate to transform</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.CoordinateSequence, int)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+                   int&nbsp;i)</PRE>
+<DL>
+<DD>Transforms the i'th coordinate in the input sequence
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#filter(com.vividsolutions.jts.geom.CoordinateSequence, int)">filter</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seq</CODE> - a <code>CoordinateSequence</code><DD><CODE>i</CODE> - the index of the coordinate to transform</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isGeometryChanged()"><!-- --></A><H3>
+isGeometryChanged</H3>
+<PRE>
+public boolean <B>isGeometryChanged</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></CODE></B></DD>
+<DD>Reports whether the execution of this filter
+ has modified the coordinates of the geometry.
+ If so, <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html#geometryChanged()"><CODE>Geometry.geometryChanged()</CODE></A> will be executed.
+ <p>
+ Most filters can simply return a constant value reflecting
+ whether they are able to change the coordinates.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#isGeometryChanged()">isGeometryChanged</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this filter has changed the coordinates of the geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDone()"><!-- --></A><H3>
+isDone</H3>
+<PRE>
+public boolean <B>isDone</B>()</PRE>
+<DL>
+<DD>Reports that this filter should continue to be executed until 
+ all coordinates have been transformed.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#isDone()">isDone</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>false</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIdentity()"><!-- --></A><H3>
+isIdentity</H3>
+<PRE>
+public boolean <B>isIdentity</B>()</PRE>
+<DL>
+<DD>Tests if this transformation is the identity transformation.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this is the identity transformation</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD>Tests if an object is an
+ <tt>AffineTransformation</tt>
+ and has the same matrix as 
+ this transformation.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>obj</CODE> - an object to test
+<DT><B>Returns:</B><DD>true if the given object is equal to this object</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Gets a text representation of this transformation.
+ The string is of the form:
+ <pre>
+ AffineTransformation[[m00, m01, m02], [m10, m11, m12]]
+ </pre>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a string representing this transformation</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Clones this transformation
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a copy of this transformation</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AffineTransformation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,296 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+AffineTransformationBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.AffineTransformationBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="AffineTransformationBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AffineTransformationBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class AffineTransformationBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.AffineTransformationBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>AffineTransformationBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Builds an <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A> defined by three control points 
+ and their images under the transformation.
+ <p>
+ A transformation is well-defined by a set of three control points 
+ as long as the points are not collinear 
+ (this includes the degenerate situation
+ where two or more points are identical).
+ If the control points are not well-defined, the system of equations
+ defining the transformation matrix entries is not solvable,
+ and no transformation can be determined.
+ If the control point images are collinear or non-unique,
+ a non-invertible transformations will be generated.
+ <p>
+ This technique of recovering a transformation
+ from its effect on known points is used in the Bilinear Interpolated Triangulation
+ algorithm for warping planar surfaces.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html#AffineTransformationBuilder(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">AffineTransformationBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src0,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src1,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src2,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest0,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest1,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new builder for
+ the transformation defined by the given 
+ set of control point mappings.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html#getTransformation()">getTransformation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>
+ determined by the control point mappings,
+ or <code>null</code> if the control points do not determine a unique transformation.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="AffineTransformationBuilder(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+AffineTransformationBuilder</H3>
+<PRE>
+public <B>AffineTransformationBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src0,
+                                   <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src1,
+                                   <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;src2,
+                                   <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest0,
+                                   <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest1,
+                                   <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;dest2)</PRE>
+<DL>
+<DD>Constructs a new builder for
+ the transformation defined by the given 
+ set of control point mappings.
+<P>
+<DT><B>Parameters:</B><DD><CODE>src0</CODE> - a control point<DD><CODE>src1</CODE> - a control point<DD><CODE>src2</CODE> - a control point<DD><CODE>dest0</CODE> - the image of control point 0 under the required transformation<DD><CODE>dest1</CODE> - the image of control point 1 under the required transformation<DD><CODE>dest2</CODE> - the image of control point 2 under the required transformation</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getTransformation()"><!-- --></A><H3>
+getTransformation</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A> <B>getTransformation</B>()</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>
+ determined by the control point mappings,
+ or <code>null</code> if the control points do not determine a unique transformation.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an affine transformation</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AffineTransformationBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,299 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+GeometryEditor.CoordinateOperation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.GeometryEditor.CoordinateOperation class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryEditor.CoordinateOperation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryEditor.CoordinateOperation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class GeometryEditor.CoordinateOperation</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.GeometryEditor.CoordinateOperation</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract static class <B>GeometryEditor.CoordinateOperation</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A></DL>
+
+<P>
+A <CODE>GeometryEditorOperation</CODE> which modifies the coordinate list of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ Operates on Geometry subclasses which contains a single coordinate list.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html#GeometryEditor.CoordinateOperation()">GeometryEditor.CoordinateOperation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html#edit(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Geometry)">edit</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+     <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Edits the array of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)">edit</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+     <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Edits a Geometry by returning a new Geometry with a modification.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryEditor.CoordinateOperation()"><!-- --></A><H3>
+GeometryEditor.CoordinateOperation</H3>
+<PRE>
+public <B>GeometryEditor.CoordinateOperation</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+edit</H3>
+<PRE>
+public final <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>edit</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+                           <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A></CODE></B></DD>
+<DD>Edits a Geometry by returning a new Geometry with a modification.
+ The returned Geometry might be the same as the Geometry passed in.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)">edit</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - the Geometry to modify<DD><CODE>factory</CODE> - the factory with which to construct the modified Geometry
+ (may be different to the factory of the input geometry)
+<DT><B>Returns:</B><DD>a new Geometry which is a modification of the input Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="edit(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+edit</H3>
+<PRE>
+public abstract <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>edit</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coordinates,
+                                  <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Edits the array of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordinates</CODE> - the coordinate array to operate on<DD><CODE>geometry</CODE> - the geometry containing the coordinate list
+<DT><B>Returns:</B><DD>an edited coordinate array (which may be the same as the input)</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryEditor.CoordinateOperation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,231 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+GeometryEditor.GeometryEditorOperation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.GeometryEditor.GeometryEditorOperation interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryEditor.GeometryEditorOperation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryEditor.GeometryEditorOperation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Interface GeometryEditor.GeometryEditorOperation</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A></DD>
+</DL>
+<DL>
+<DT><B>Enclosing interface:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static interface <B>GeometryEditor.GeometryEditorOperation</B></DL>
+
+<P>
+A interface which specifies an edit operation for Geometries.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)">edit</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+     <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Edits a Geometry by returning a new Geometry with a modification.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+edit</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>edit</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD>Edits a Geometry by returning a new Geometry with a modification.
+ The returned Geometry might be the same as the Geometry passed in.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - the Geometry to modify<DD><CODE>factory</CODE> - the factory with which to construct the modified Geometry
+ (may be different to the factory of the input geometry)
+<DT><B>Returns:</B><DD>a new Geometry which is a modification of the input Geometry</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryEditor.GeometryEditorOperation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryEditor.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,333 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+GeometryEditor
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.GeometryEditor class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryEditor";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryEditor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class GeometryEditor</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.GeometryEditor</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometryEditor</B><DT>extends java.lang.Object</DL>
+
+<P>
+Supports creating a new <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is a modification of an existing one.
+ Geometry objects are intended to be treated as immutable.
+ This class allows you to "modify" a Geometry
+ by traversing it and creating a new Geometry with the same overall structure but
+ possibly modified components.
+ The following kinds of modifications can be made:
+ <ul>
+ <li>the values of the coordinates may be changed.
+ Changing coordinate values may make the result Geometry invalid;
+ this is not checked by the GeometryEditor
+ <li>the coordinate lists may be changed
+ (e.g. by adding or deleting coordinates).
+ The modifed coordinate lists must be consistent with their original parent component
+ (e.g. a LinearRing must always have at least 4 coordinates, and the first and last
+ coordinate must be equal)
+ <li>components of the original geometry may be deleted
+ (e.g. holes may be removed from a Polygon, or LineStrings removed from a MultiLineString).
+ Deletions will be propagated up the component tree appropriately.
+ </ul>
+ Note that all changes must be consistent with the original Geometry's structure
+ (e.g. a Polygon cannot be collapsed into a LineString).
+ <p>
+ The resulting Geometry is not checked for validity.
+ If validity needs to be enforced, the new Geometry's #isValid should be checked.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()"><CODE>Geometry.isValid()</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <CODE>GeometryEditorOperation</CODE> which modifies the coordinate list of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A interface which specifies an edit operation for Geometries.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html#GeometryEditor()">GeometryEditor</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new GeometryEditor object which will create
+ an edited <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with the same <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> as the input Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html#GeometryEditor(com.vividsolutions.jts.geom.GeometryFactory)">GeometryEditor</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new GeometryEditor object which will create
+ the edited Geometry with the given <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.util.GeometryEditor.GeometryEditorOperation)">edit</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+     <A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A>&nbsp;operation)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Edit the input <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with the given edit operation.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryEditor()"><!-- --></A><H3>
+GeometryEditor</H3>
+<PRE>
+public <B>GeometryEditor</B>()</PRE>
+<DL>
+<DD>Creates a new GeometryEditor object which will create
+ an edited <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with the same <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> as the input Geometry.
+<P>
+</DL>
+<HR>
+
+<A NAME="GeometryEditor(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+GeometryEditor</H3>
+<PRE>
+public <B>GeometryEditor</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD>Creates a new GeometryEditor object which will create
+ the edited Geometry with the given <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>
+<P>
+<DT><B>Parameters:</B><DD><CODE>factory</CODE> - the GeometryFactory to create the edited Geometry with</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.util.GeometryEditor.GeometryEditorOperation)"><!-- --></A><H3>
+edit</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>edit</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A>&nbsp;operation)</PRE>
+<DL>
+<DD>Edit the input <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with the given edit operation.
+ Clients will create subclasses of <A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util"><CODE>GeometryEditor.GeometryEditorOperation</CODE></A> or
+ <A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>GeometryEditor.CoordinateOperation</CODE></A> to perform required modifications.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - the Geometry to edit<DD><CODE>operation</CODE> - the edit operation to carry out
+<DT><B>Returns:</B><DD>a new <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is the result of the editing</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryEditor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryTransformer.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryTransformer.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/GeometryTransformer.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,585 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+GeometryTransformer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.GeometryTransformer class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryTransformer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryTransformer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class GeometryTransformer</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.GeometryTransformer</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometryTransformer</B><DT>extends java.lang.Object</DL>
+
+<P>
+A framework for processes which transform an input <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into
+ an output <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>, possibly changing its structure and type(s).
+ This class is a framework for implementing subclasses
+ which perform transformations on
+ various different Geometry subclasses.
+ It provides an easy way of applying specific transformations
+ to given geometry types, while allowing unhandled types to be simply copied.
+ Also, the framework ensures that if subcomponents change type
+ the parent geometries types change appropriately to maintain valid structure.
+ Subclasses will override whichever <code>transformX</code> methods
+ they need to to handle particular Geometry types.
+ <p>
+ A typically usage would be a transformation that may transform Polygons into
+ Polygons, LineStrings
+ or Points.  This class would likely need to override the <CODE>transformMultiPolygon</CODE>
+ method to ensure that if input Polygons change type the result is a GeometryCollection,
+ not a MultiPolygon
+ <p>
+ The default behaviour of this class is to simply recursively transform
+ each Geometry component into an identical object by copying.
+ <p>
+ All <code>transformX</code> methods may return <code>null</code>,
+ to avoid creating empty or invalid geometry objects. This will be handled correctly
+ by the transformer.   <code>transformX</code> methods should always return valid
+ geometry - if they cannot do this they should return <code>null</code>
+ (for instance, it may not be possible for a transformLineString implementation
+ to return at least two points - in this case, it should return <code>null</code>).
+ The <CODE>transform</CODE> method itself will always
+ return a non-null Geometry object (but this may be empty).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><CODE>GeometryEditor</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#factory">factory</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#GeometryTransformer()">GeometryTransformer</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#copy(com.vividsolutions.jts.geom.CoordinateSequence)">copy</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convenience method which provides statndard way of copying <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#createCoordinateSequence(com.vividsolutions.jts.geom.Coordinate[])">createCoordinateSequence</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coords)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convenience method which provides standard way of
+ creating a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#getInputGeometry()">getInputGeometry</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Utility function to make input geometry available</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transform(com.vividsolutions.jts.geom.Geometry)">transform</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformCoordinates(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.Geometry)">transformCoordinates</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coords,
+                     <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transforms a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformGeometryCollection(com.vividsolutions.jts.geom.GeometryCollection, com.vividsolutions.jts.geom.Geometry)">transformGeometryCollection</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>&nbsp;geom,
+                            <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformLinearRing(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.Geometry)">transformLinearRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;geom,
+                    <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformLineString(com.vividsolutions.jts.geom.LineString, com.vividsolutions.jts.geom.Geometry)">transformLineString</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;geom,
+                    <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transforms a <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformMultiLineString(com.vividsolutions.jts.geom.MultiLineString, com.vividsolutions.jts.geom.Geometry)">transformMultiLineString</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>&nbsp;geom,
+                         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformMultiPoint(com.vividsolutions.jts.geom.MultiPoint, com.vividsolutions.jts.geom.Geometry)">transformMultiPoint</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>&nbsp;geom,
+                    <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformMultiPolygon(com.vividsolutions.jts.geom.MultiPolygon, com.vividsolutions.jts.geom.Geometry)">transformMultiPolygon</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>&nbsp;geom,
+                      <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformPoint(com.vividsolutions.jts.geom.Point, com.vividsolutions.jts.geom.Geometry)">transformPoint</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>&nbsp;geom,
+               <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformPolygon(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)">transformPolygon</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;geom,
+                 <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="factory"><!-- --></A><H3>
+factory</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A> <B>factory</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryTransformer()"><!-- --></A><H3>
+GeometryTransformer</H3>
+<PRE>
+public <B>GeometryTransformer</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInputGeometry()"><!-- --></A><H3>
+getInputGeometry</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getInputGeometry</B>()</PRE>
+<DL>
+<DD>Utility function to make input geometry available
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the input geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transform(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transform</H3>
+<PRE>
+public final <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transform</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createCoordinateSequence(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+createCoordinateSequence</H3>
+<PRE>
+protected final <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>createCoordinateSequence</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coords)</PRE>
+<DL>
+<DD>Convenience method which provides standard way of
+ creating a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coords</CODE> - the coordinate array to copy
+<DT><B>Returns:</B><DD>a coordinate sequence for the array</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="copy(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+copy</H3>
+<PRE>
+protected final <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>copy</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq)</PRE>
+<DL>
+<DD>Convenience method which provides statndard way of copying <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seq</CODE> - the sequence to copy
+<DT><B>Returns:</B><DD>a deep copy of the sequence</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformCoordinates(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformCoordinates</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>transformCoordinates</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;coords,
+                                                  <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD>Transforms a <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+ This method should always return a valid coordinate list for
+ the desired result type.  (E.g. a coordinate list for a LineString
+ must have 0 or at least 2 points).
+ If this is not possible, return an empty sequence -
+ this will be pruned out.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coords</CODE> - the coordinates to transform<DD><CODE>parent</CODE> - the parent geometry
+<DT><B>Returns:</B><DD>the transformed coordinates</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformPoint(com.vividsolutions.jts.geom.Point, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformPoint</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformPoint</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>&nbsp;geom,
+                                  <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformMultiPoint(com.vividsolutions.jts.geom.MultiPoint, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformMultiPoint</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformMultiPoint</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>&nbsp;geom,
+                                       <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformLinearRing(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformLinearRing</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformLinearRing</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;geom,
+                                       <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformLineString(com.vividsolutions.jts.geom.LineString, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformLineString</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformLineString</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;geom,
+                                       <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD>Transforms a <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> geometry.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - <DD><CODE>parent</CODE> - 
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformMultiLineString(com.vividsolutions.jts.geom.MultiLineString, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformMultiLineString</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformMultiLineString</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>&nbsp;geom,
+                                            <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformPolygon(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformPolygon</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformPolygon</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;geom,
+                                    <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformMultiPolygon(com.vividsolutions.jts.geom.MultiPolygon, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformMultiPolygon</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformMultiPolygon</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>&nbsp;geom,
+                                         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="transformGeometryCollection(com.vividsolutions.jts.geom.GeometryCollection, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+transformGeometryCollection</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>transformGeometryCollection</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>&nbsp;geom,
+                                               <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryTransformer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/LinearComponentExtracter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/LinearComponentExtracter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/LinearComponentExtracter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,297 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+LinearComponentExtracter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.LinearComponentExtracter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LinearComponentExtracter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearComponentExtracter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class LinearComponentExtracter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.LinearComponentExtracter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>LinearComponentExtracter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A></DL>
+
+<P>
+Extracts all the 1-dimensional (<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>) components from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html#LinearComponentExtracter(java.util.List)">LinearComponentExtracter</A></B>(java.util.List&nbsp;lines)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a LineExtracterFilter with a list in which to store LineStrings found.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html#getLines(com.vividsolutions.jts.geom.Geometry)">getLines</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts the linear components from a single geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LinearComponentExtracter(java.util.List)"><!-- --></A><H3>
+LinearComponentExtracter</H3>
+<PRE>
+public <B>LinearComponentExtracter</B>(java.util.List&nbsp;lines)</PRE>
+<DL>
+<DD>Constructs a LineExtracterFilter with a list in which to store LineStrings found.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLines(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getLines</H3>
+<PRE>
+public static java.util.List <B>getLines</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Extracts the linear components from a single geometry.
+ If more than one geometry is to be processed, it is more
+ efficient to create a single <CODE>LineExtracterFilter</CODE> instance
+ and pass it to multiple geometries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry from which to extract linear components
+<DT><B>Returns:</B><DD>the list of linear components</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearComponentExtracter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/Matrix.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/Matrix.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/Matrix.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Matrix
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.Matrix class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Matrix";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Matrix.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class Matrix</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.Matrix</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Matrix</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements some 2D matrix operations 
+ (in particular, solving systems of linear equations).
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html#Matrix()">Matrix</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html#solve(double[][], double[])">solve</A></B>(double[][]&nbsp;a,
+      double[]&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Solves a system of equations using Gaussian Elimination.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Matrix()"><!-- --></A><H3>
+Matrix</H3>
+<PRE>
+public <B>Matrix</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="solve(double[][], double[])"><!-- --></A><H3>
+solve</H3>
+<PRE>
+public static double[] <B>solve</B>(double[][]&nbsp;a,
+                             double[]&nbsp;b)</PRE>
+<DL>
+<DD>Solves a system of equations using Gaussian Elimination.
+ In order to avoid overhead the algorithm runs in-place
+ on A - if A should not be modified the client must supply a copy.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>b</CODE> - a vector of length n
+<DT><B>Returns:</B><DD>a vector containing the solution (if any)
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if the matrix is the wrong size</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Matrix.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,255 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+NoninvertibleTransformationException
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.NoninvertibleTransformationException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NoninvertibleTransformationException";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NoninvertibleTransformationException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class NoninvertibleTransformationException</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by">java.lang.Throwable
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by">java.lang.Exception
+          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.NoninvertibleTransformationException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>NoninvertibleTransformationException</B><DT>extends java.lang.Exception</DL>
+
+<P>
+Indicates that an <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>
+ is non-invertible.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#com.vividsolutions.jts.geom.util.NoninvertibleTransformationException">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html#NoninvertibleTransformationException()">NoninvertibleTransformationException</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html#NoninvertibleTransformationException(java.lang.String)">NoninvertibleTransformationException</A></B>(java.lang.String&nbsp;msg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Throwable</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NoninvertibleTransformationException()"><!-- --></A><H3>
+NoninvertibleTransformationException</H3>
+<PRE>
+public <B>NoninvertibleTransformationException</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="NoninvertibleTransformationException(java.lang.String)"><!-- --></A><H3>
+NoninvertibleTransformationException</H3>
+<PRE>
+public <B>NoninvertibleTransformationException</B>(java.lang.String&nbsp;msg)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NoninvertibleTransformationException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PointExtracter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PointExtracter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PointExtracter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,296 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+PointExtracter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.PointExtracter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PointExtracter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointExtracter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class PointExtracter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.PointExtracter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>PointExtracter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DL>
+
+<P>
+Extracts all the 0-dimensional (<A HREF="../../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>) components from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html#PointExtracter(java.util.List)">PointExtracter</A></B>(java.util.List&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a PointExtracterFilter with a list in which to store Points found.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html#getPoints(com.vividsolutions.jts.geom.Geometry)">getPoints</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Point components from a single geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PointExtracter(java.util.List)"><!-- --></A><H3>
+PointExtracter</H3>
+<PRE>
+public <B>PointExtracter</B>(java.util.List&nbsp;pts)</PRE>
+<DL>
+<DD>Constructs a PointExtracterFilter with a list in which to store Points found.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getPoints(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getPoints</H3>
+<PRE>
+public static java.util.List <B>getPoints</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Returns the Point components from a single geometry.
+ If more than one geometry is to be processed, it is more
+ efficient to create a single <CODE>PointExtracterFilter</CODE> instance
+ and pass it to multiple geometries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointExtracter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PolygonExtracter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PolygonExtracter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/PolygonExtracter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,296 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+PolygonExtracter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.PolygonExtracter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PolygonExtracter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PolygonExtracter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class PolygonExtracter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.PolygonExtracter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>PolygonExtracter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DL>
+
+<P>
+Extracts all the 2-dimensional (<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>) components from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html#PolygonExtracter(java.util.List)">PolygonExtracter</A></B>(java.util.List&nbsp;comps)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a PolygonExtracterFilter with a list in which to store Polygons found.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html#getPolygons(com.vividsolutions.jts.geom.Geometry)">getPolygons</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Polygon components from a single geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PolygonExtracter(java.util.List)"><!-- --></A><H3>
+PolygonExtracter</H3>
+<PRE>
+public <B>PolygonExtracter</B>(java.util.List&nbsp;comps)</PRE>
+<DL>
+<DD>Constructs a PolygonExtracterFilter with a list in which to store Polygons found.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getPolygons(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getPolygons</H3>
+<PRE>
+public static java.util.List <B>getPolygons</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Returns the Polygon components from a single geometry.
+ If more than one geometry is to be processed, it is more
+ efficient to create a single <CODE>PolygonExtracterFilter</CODE> instance
+ and pass it to multiple geometries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PolygonExtracter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,297 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+ShortCircuitedGeometryVisitor
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util.ShortCircuitedGeometryVisitor class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ShortCircuitedGeometryVisitor";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ShortCircuitedGeometryVisitor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geom.util</FONT>
+<BR>
+Class ShortCircuitedGeometryVisitor</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geom.util.ShortCircuitedGeometryVisitor</B>
+</PRE>
+<HR>
+<DL>
+<DT>public abstract class <B>ShortCircuitedGeometryVisitor</B><DT>extends java.lang.Object</DL>
+
+<P>
+A visitor to <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> elements which can
+ be short-circuited by a given condition
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#ShortCircuitedGeometryVisitor()">ShortCircuitedGeometryVisitor</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#applyTo(com.vividsolutions.jts.geom.Geometry)">applyTo</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#isDone()">isDone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#visit(com.vividsolutions.jts.geom.Geometry)">visit</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;element)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ShortCircuitedGeometryVisitor()"><!-- --></A><H3>
+ShortCircuitedGeometryVisitor</H3>
+<PRE>
+public <B>ShortCircuitedGeometryVisitor</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="applyTo(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+applyTo</H3>
+<PRE>
+public void <B>applyTo</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="visit(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+visit</H3>
+<PRE>
+protected abstract void <B>visit</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;element)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDone()"><!-- --></A><H3>
+isDone</H3>
+<PRE>
+protected abstract boolean <B>isDone</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ShortCircuitedGeometryVisitor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom.util
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/geom/util/package-summary.html" target="classFrame">com.vividsolutions.jts.geom.util</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util" target="classFrame"><I>GeometryEditor.GeometryEditorOperation</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">AffineTransformation</A>
+<BR>
+<A HREF="AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">AffineTransformationBuilder</A>
+<BR>
+<A HREF="GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">GeometryEditor</A>
+<BR>
+<A HREF="GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">GeometryEditor.CoordinateOperation</A>
+<BR>
+<A HREF="GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">GeometryTransformer</A>
+<BR>
+<A HREF="LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">LinearComponentExtracter</A>
+<BR>
+<A HREF="Matrix.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">Matrix</A>
+<BR>
+<A HREF="PointExtracter.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">PointExtracter</A>
+<BR>
+<A HREF="PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">PolygonExtracter</A>
+<BR>
+<A HREF="ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">ShortCircuitedGeometryVisitor</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util" target="classFrame">NoninvertibleTransformationException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom.util
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geom.util package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geom.util";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.geom.util
+</H2>
+Provides classes that parse and modify Geometry objects.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A></B></TD>
+<TD>A interface which specifies an edit operation for Geometries.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A></B></TD>
+<TD>Represents a affine transformation on the 2D Cartesian plane.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformationBuilder</A></B></TD>
+<TD>Builds an <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A> defined by three control points 
+ and their images under the transformation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A></B></TD>
+<TD>Supports creating a new <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is a modification of an existing one.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A></B></TD>
+<TD>A <CODE>GeometryEditorOperation</CODE> which modifies the coordinate list of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A></B></TD>
+<TD>A framework for processes which transform an input <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into
+ an output <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>, possibly changing its structure and type(s).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A></B></TD>
+<TD>Extracts all the 1-dimensional (<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>) components from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util">Matrix</A></B></TD>
+<TD>Implements some 2D matrix operations 
+ (in particular, solving systems of linear equations).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A></B></TD>
+<TD>Extracts all the 0-dimensional (<A HREF="../../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>) components from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A></B></TD>
+<TD>Extracts all the 2-dimensional (<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>) components from a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A></B></TD>
+<TD>A visitor to <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> elements which can
+ be short-circuited by a given condition</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A></B></TD>
+<TD>Indicates that an <A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>
+ is non-invertible.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.geom.util Description
+</H2>
+
+<P>
+Provides classes that parse and modify Geometry objects.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geom/util/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geom.util Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geom.util Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.geom.util
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><B>AffineTransformation</B></A> (implements java.lang.Cloneable, com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>AffineTransformationBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryEditor</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryEditor.CoordinateOperation</B></A> (implements com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryTransformer</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>LinearComponentExtracter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>Matrix</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PointExtracter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PolygonExtracter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util"><B>ShortCircuitedGeometryVisitor</B></A><LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util"><B>NoninvertibleTransformationException</B></A></UL>
+</UL>
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.geom.util.<A HREF="../../../../../com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util"><B>GeometryEditor.GeometryEditorOperation</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/impl/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Depth.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Depth.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Depth.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,491 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Depth
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.Depth class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Depth";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Depth.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class Depth</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.Depth</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Depth</B><DT>extends java.lang.Object</DL>
+
+<P>
+A Depth object records the topological depth of the sides
+ of an Edge for up to two Geometries.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#Depth()">Depth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#add(int, int, int)">add</A></B>(int&nbsp;geomIndex,
+    int&nbsp;posIndex,
+    int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#add(com.vividsolutions.jts.geomgraph.Label)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#depthAtLocation(int)">depthAtLocation</A></B>(int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#getDelta(int)">getDelta</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#getDepth(int, int)">getDepth</A></B>(int&nbsp;geomIndex,
+         int&nbsp;posIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#getLocation(int, int)">getLocation</A></B>(int&nbsp;geomIndex,
+            int&nbsp;posIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#isNull()">isNull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A Depth object is null (has never been initialized) if all depths are null.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#isNull(int)">isNull</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#isNull(int, int)">isNull</A></B>(int&nbsp;geomIndex,
+       int&nbsp;posIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#normalize()">normalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Normalize the depths for each geometry, if they are non-null.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#setDepth(int, int, int)">setDepth</A></B>(int&nbsp;geomIndex,
+         int&nbsp;posIndex,
+         int&nbsp;depthValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Depth()"><!-- --></A><H3>
+Depth</H3>
+<PRE>
+public <B>Depth</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="depthAtLocation(int)"><!-- --></A><H3>
+depthAtLocation</H3>
+<PRE>
+public static int <B>depthAtLocation</B>(int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDepth(int, int)"><!-- --></A><H3>
+getDepth</H3>
+<PRE>
+public int <B>getDepth</B>(int&nbsp;geomIndex,
+                    int&nbsp;posIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDepth(int, int, int)"><!-- --></A><H3>
+setDepth</H3>
+<PRE>
+public void <B>setDepth</B>(int&nbsp;geomIndex,
+                     int&nbsp;posIndex,
+                     int&nbsp;depthValue)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocation(int, int)"><!-- --></A><H3>
+getLocation</H3>
+<PRE>
+public int <B>getLocation</B>(int&nbsp;geomIndex,
+                       int&nbsp;posIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(int, int, int)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(int&nbsp;geomIndex,
+                int&nbsp;posIndex,
+                int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNull()"><!-- --></A><H3>
+isNull</H3>
+<PRE>
+public boolean <B>isNull</B>()</PRE>
+<DL>
+<DD>A Depth object is null (has never been initialized) if all depths are null.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNull(int)"><!-- --></A><H3>
+isNull</H3>
+<PRE>
+public boolean <B>isNull</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNull(int, int)"><!-- --></A><H3>
+isNull</H3>
+<PRE>
+public boolean <B>isNull</B>(int&nbsp;geomIndex,
+                      int&nbsp;posIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDelta(int)"><!-- --></A><H3>
+getDelta</H3>
+<PRE>
+public int <B>getDelta</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="normalize()"><!-- --></A><H3>
+normalize</H3>
+<PRE>
+public void <B>normalize</B>()</PRE>
+<DL>
+<DD>Normalize the depths for each geometry, if they are non-null.
+ A normalized depth
+ has depth values in the set { 0, 1 }.
+ Normalizing the depths
+ involves reducing the depths by the same amount so that at least
+ one of them is 0.  If the remaining value is > 0, it is set to 1.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Depth.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,831 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+DirectedEdge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.DirectedEdge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DirectedEdge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class DirectedEdge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.EdgeEnd</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.DirectedEdge</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>DirectedEdge</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#isForward">isForward</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEnd"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#edge">edge</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#label">label</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#DirectedEdge(com.vividsolutions.jts.geomgraph.Edge, boolean)">DirectedEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+             boolean&nbsp;isForward)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#depthFactor(int, int)">depthFactor</A></B>(int&nbsp;currLocation,
+            int&nbsp;nextLocation)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the factor for the change in depth when moving from one location to another.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getDepth(int)">getDepth</A></B>(int&nbsp;position)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getDepthDelta()">getDepthDelta</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getEdge()">getEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getEdgeRing()">getEdgeRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getMinEdgeRing()">getMinEdgeRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getNext()">getNext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getNextMin()">getNextMin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#getSym()">getSym</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Each Edge gives rise to a pair of symmetric DirectedEdges, in opposite
+ directions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#isForward()">isForward</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#isInResult()">isInResult</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#isInteriorAreaEdge()">isInteriorAreaEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is an interior Area edge if
+ 
+  its label is an Area label for both Geometries
+  and for each Geometry both sides are in the interior.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#isLineEdge()">isLineEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This edge is a line edge if
+ 
+  at least one of the labels is a line label
+  any labels which are not line labels have all Locations = EXTERIOR
+ </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#isVisited()">isVisited</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#printEdge(java.io.PrintStream)">printEdge</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setDepth(int, int)">setDepth</A></B>(int&nbsp;position,
+         int&nbsp;depthVal)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setEdgeDepths(int, int)">setEdgeDepths</A></B>(int&nbsp;position,
+              int&nbsp;depth)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set both edge depths.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setEdgeRing(com.vividsolutions.jts.geomgraph.EdgeRing)">setEdgeRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;edgeRing)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setInResult(boolean)">setInResult</A></B>(boolean&nbsp;isInResult)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setMinEdgeRing(com.vividsolutions.jts.geomgraph.EdgeRing)">setMinEdgeRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;minEdgeRing)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setNext(com.vividsolutions.jts.geomgraph.DirectedEdge)">setNext</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;next)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setNextMin(com.vividsolutions.jts.geomgraph.DirectedEdge)">setNextMin</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;nextMin)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setSym(com.vividsolutions.jts.geomgraph.DirectedEdge)">setSym</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setVisited(boolean)">setVisited</A></B>(boolean&nbsp;isVisited)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html#setVisitedEdge(boolean)">setVisitedEdge</A></B>(boolean&nbsp;isVisited)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setVisitedEdge marks both DirectedEdges attached to a given Edge.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEnd"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareDirection(com.vividsolutions.jts.geomgraph.EdgeEnd)">compareDirection</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)">computeLabel</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDirectedCoordinate()">getDirectedCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDx()">getDx</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDy()">getDy</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getLabel()">getLabel</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getNode()">getNode</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getQuadrant()">getQuadrant</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">init</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#setNode(com.vividsolutions.jts.geomgraph.Node)">setNode</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isForward"><!-- --></A><H3>
+isForward</H3>
+<PRE>
+protected boolean <B>isForward</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DirectedEdge(com.vividsolutions.jts.geomgraph.Edge, boolean)"><!-- --></A><H3>
+DirectedEdge</H3>
+<PRE>
+public <B>DirectedEdge</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+                    boolean&nbsp;isForward)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="depthFactor(int, int)"><!-- --></A><H3>
+depthFactor</H3>
+<PRE>
+public static int <B>depthFactor</B>(int&nbsp;currLocation,
+                              int&nbsp;nextLocation)</PRE>
+<DL>
+<DD>Computes the factor for the change in depth when moving from one location to another.
+ E.g. if crossing from the INTERIOR to the EXTERIOR the depth decreases, so the factor is -1
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdge()"><!-- --></A><H3>
+getEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>getEdge</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getEdge()">getEdge</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setInResult(boolean)"><!-- --></A><H3>
+setInResult</H3>
+<PRE>
+public void <B>setInResult</B>(boolean&nbsp;isInResult)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInResult()"><!-- --></A><H3>
+isInResult</H3>
+<PRE>
+public boolean <B>isInResult</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isVisited()"><!-- --></A><H3>
+isVisited</H3>
+<PRE>
+public boolean <B>isVisited</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setVisited(boolean)"><!-- --></A><H3>
+setVisited</H3>
+<PRE>
+public void <B>setVisited</B>(boolean&nbsp;isVisited)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEdgeRing(com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+setEdgeRing</H3>
+<PRE>
+public void <B>setEdgeRing</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;edgeRing)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeRing()"><!-- --></A><H3>
+getEdgeRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A> <B>getEdgeRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setMinEdgeRing(com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+setMinEdgeRing</H3>
+<PRE>
+public void <B>setMinEdgeRing</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;minEdgeRing)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMinEdgeRing()"><!-- --></A><H3>
+getMinEdgeRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A> <B>getMinEdgeRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDepth(int)"><!-- --></A><H3>
+getDepth</H3>
+<PRE>
+public int <B>getDepth</B>(int&nbsp;position)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDepth(int, int)"><!-- --></A><H3>
+setDepth</H3>
+<PRE>
+public void <B>setDepth</B>(int&nbsp;position,
+                     int&nbsp;depthVal)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDepthDelta()"><!-- --></A><H3>
+getDepthDelta</H3>
+<PRE>
+public int <B>getDepthDelta</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setVisitedEdge(boolean)"><!-- --></A><H3>
+setVisitedEdge</H3>
+<PRE>
+public void <B>setVisitedEdge</B>(boolean&nbsp;isVisited)</PRE>
+<DL>
+<DD>setVisitedEdge marks both DirectedEdges attached to a given Edge.
+ This is used for edges corresponding to lines, which will only
+ appear oriented in a single direction in the result.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSym()"><!-- --></A><H3>
+getSym</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getSym</B>()</PRE>
+<DL>
+<DD>Each Edge gives rise to a pair of symmetric DirectedEdges, in opposite
+ directions.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the DirectedEdge for the same Edge but in the opposite direction</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isForward()"><!-- --></A><H3>
+isForward</H3>
+<PRE>
+public boolean <B>isForward</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setSym(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+setSym</H3>
+<PRE>
+public void <B>setSym</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNext()"><!-- --></A><H3>
+getNext</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getNext</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+setNext</H3>
+<PRE>
+public void <B>setNext</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;next)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNextMin()"><!-- --></A><H3>
+getNextMin</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getNextMin</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setNextMin(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+setNextMin</H3>
+<PRE>
+public void <B>setNextMin</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;nextMin)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isLineEdge()"><!-- --></A><H3>
+isLineEdge</H3>
+<PRE>
+public boolean <B>isLineEdge</B>()</PRE>
+<DL>
+<DD>This edge is a line edge if
+ <ul>
+ <li> at least one of the labels is a line label
+ <li> any labels which are not line labels have all Locations = EXTERIOR
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInteriorAreaEdge()"><!-- --></A><H3>
+isInteriorAreaEdge</H3>
+<PRE>
+public boolean <B>isInteriorAreaEdge</B>()</PRE>
+<DL>
+<DD>This is an interior Area edge if
+ <ul>
+ <li> its label is an Area label for both Geometries
+ <li> and for each Geometry both sides are in the interior.
+ </ul>
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this is an interior Area edge</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEdgeDepths(int, int)"><!-- --></A><H3>
+setEdgeDepths</H3>
+<PRE>
+public void <B>setEdgeDepths</B>(int&nbsp;position,
+                          int&nbsp;depth)</PRE>
+<DL>
+<DD>Set both edge depths.  One depth for a given side is provided.  The other is
+ computed depending on the Location transition and the depthDelta of the edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#print(java.io.PrintStream)">print</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="printEdge(java.io.PrintStream)"><!-- --></A><H3>
+printEdge</H3>
+<PRE>
+public void <B>printEdge</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,576 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+DirectedEdgeStar
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.DirectedEdgeStar class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DirectedEdgeStar";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdgeStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class DirectedEdgeStar</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.EdgeEndStar</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.DirectedEdgeStar</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>DirectedEdgeStar</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></DL>
+
+<P>
+A DirectedEdgeStar is an ordered list of <b>outgoing</b> DirectedEdges around a node.
+ It supports labelling the edges as well as linking the edges to form both
+ MaximalEdgeRings and MinimalEdgeRings.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeList">edgeList</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeMap">edgeMap</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#DirectedEdgeStar()">DirectedEdgeStar</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#computeDepths(com.vividsolutions.jts.geomgraph.DirectedEdge)">computeDepths</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])">computeLabelling</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the labelling for all dirEdges in this star, as well
+ as the overall labelling</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#findCoveredLineEdges()">findCoveredLineEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Traverse the star of edges, maintaing the current location in the result
+ area at this node (if any).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getLabel()">getLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getOutgoingDegree()">getOutgoingDegree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getOutgoingDegree(com.vividsolutions.jts.geomgraph.EdgeRing)">getOutgoingDegree</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getRightmostEdge()">getRightmostEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)">insert</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;ee)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert a directed edge in the list</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#linkAllDirectedEdges()">linkAllDirectedEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#linkMinimalDirectedEdges(com.vividsolutions.jts.geomgraph.EdgeRing)">linkMinimalDirectedEdges</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#linkResultDirectedEdges()">linkResultDirectedEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Traverse the star of DirectedEdges, linking the included edges together.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#mergeSymLabels()">mergeSymLabels</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For each dirEdge in the star,
+ merge the label from the sym dirEdge into the label</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#updateLabelling(com.vividsolutions.jts.geomgraph.Label)">updateLabelling</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;nodeLabel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update incomplete dirEdge labels from the labelling for the node</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#findIndex(com.vividsolutions.jts.geomgraph.EdgeEnd)">findIndex</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getDegree()">getDegree</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getEdges()">getEdges</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getNextCW(com.vividsolutions.jts.geomgraph.EdgeEnd)">getNextCW</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insertEdgeEnd(com.vividsolutions.jts.geomgraph.EdgeEnd, java.lang.Object)">insertEdgeEnd</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#isAreaLabelsConsistent(com.vividsolutions.jts.geomgraph.GeometryGraph)">isAreaLabelsConsistent</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#iterator()">iterator</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DirectedEdgeStar()"><!-- --></A><H3>
+DirectedEdgeStar</H3>
+<PRE>
+public <B>DirectedEdgeStar</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;ee)</PRE>
+<DL>
+<DD>Insert a directed edge in the list
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)">insert</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLabel()"><!-- --></A><H3>
+getLabel</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>getLabel</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOutgoingDegree()"><!-- --></A><H3>
+getOutgoingDegree</H3>
+<PRE>
+public int <B>getOutgoingDegree</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOutgoingDegree(com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+getOutgoingDegree</H3>
+<PRE>
+public int <B>getOutgoingDegree</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRightmostEdge()"><!-- --></A><H3>
+getRightmostEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getRightmostEdge</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])"><!-- --></A><H3>
+computeLabelling</H3>
+<PRE>
+public void <B>computeLabelling</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]&nbsp;geom)</PRE>
+<DL>
+<DD>Compute the labelling for all dirEdges in this star, as well
+ as the overall labelling
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])">computeLabelling</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="mergeSymLabels()"><!-- --></A><H3>
+mergeSymLabels</H3>
+<PRE>
+public void <B>mergeSymLabels</B>()</PRE>
+<DL>
+<DD>For each dirEdge in the star,
+ merge the label from the sym dirEdge into the label
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="updateLabelling(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+updateLabelling</H3>
+<PRE>
+public void <B>updateLabelling</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;nodeLabel)</PRE>
+<DL>
+<DD>Update incomplete dirEdge labels from the labelling for the node
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="linkResultDirectedEdges()"><!-- --></A><H3>
+linkResultDirectedEdges</H3>
+<PRE>
+public void <B>linkResultDirectedEdges</B>()</PRE>
+<DL>
+<DD>Traverse the star of DirectedEdges, linking the included edges together.
+ To link two dirEdges, the <next> pointer for an incoming dirEdge
+ is set to the next outgoing edge.
+ <p>
+ DirEdges are only linked if:
+ <ul>
+ <li>they belong to an area (i.e. they have sides)
+ <li>they are marked as being in the result
+ </ul>
+ <p>
+ Edges are linked in CCW order (the order they are stored).
+ This means that rings have their face on the Right
+ (in other words,
+ the topological location of the face is given by the RHS label of the DirectedEdge)
+ <p>
+ PRECONDITION: No pair of dirEdges are both marked as being in the result
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="linkMinimalDirectedEdges(com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+linkMinimalDirectedEdges</H3>
+<PRE>
+public void <B>linkMinimalDirectedEdges</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="linkAllDirectedEdges()"><!-- --></A><H3>
+linkAllDirectedEdges</H3>
+<PRE>
+public void <B>linkAllDirectedEdges</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findCoveredLineEdges()"><!-- --></A><H3>
+findCoveredLineEdges</H3>
+<PRE>
+public void <B>findCoveredLineEdges</B>()</PRE>
+<DL>
+<DD>Traverse the star of edges, maintaing the current location in the result
+ area at this node (if any).
+ If any L edges are found in the interior of the result, mark them as covered.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeDepths(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+computeDepths</H3>
+<PRE>
+public void <B>computeDepths</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#print(java.io.PrintStream)">print</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdgeStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Edge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Edge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Edge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,810 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Edge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.Edge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Edge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Edge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class Edge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.GraphComponent</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.Edge</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Edge</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#label">label</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#Edge(com.vividsolutions.jts.geom.Coordinate[])">Edge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#Edge(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geomgraph.Label)">Edge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+     <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#addIntersection(com.vividsolutions.jts.algorithm.LineIntersector, int, int, int)">addIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                int&nbsp;segmentIndex,
+                int&nbsp;geomIndex,
+                int&nbsp;intIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add an EdgeIntersection for intersection intIndex.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#addIntersections(com.vividsolutions.jts.algorithm.LineIntersector, int, int)">addIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                 int&nbsp;segmentIndex,
+                 int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds EdgeIntersections for one or both
+ intersections found for a segment of an edge to the edge intersection list.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update the IM with the contribution for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equals is defined to be:
+ </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getCollapsedEdge()">getCollapsedEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getDepth()">getDepth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getDepthDelta()">getDepthDelta</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The depthDelta is the change in depth as an edge is crossed from R to L</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getEdgeIntersectionList()">getEdgeIntersectionList</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getEnvelope()">getEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getMaximumSegmentIndex()">getMaximumSegmentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getMonotoneChainEdge()">getMonotoneChainEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#getNumPoints()">getNumPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#isClosed()">isClosed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#isCollapsed()">isCollapsed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An Edge is collapsed if it is an Area edge and it consists of
+ two segments which are equal and opposite (eg a zero-width V).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#isIsolated()">isIsolated</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An isolated component is one that does not intersect or touch any other
+ component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#isPointwiseEqual(com.vividsolutions.jts.geomgraph.Edge)">isPointwiseEqual</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#printReverse(java.io.PrintStream)">printReverse</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#setDepthDelta(int)">setDepthDelta</A></B>(int&nbsp;depthDelta)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#setIsolated(boolean)">setIsolated</A></B>(boolean&nbsp;isIsolated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#setName(java.lang.String)">setName</A></B>(java.lang.String&nbsp;name)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html#updateIM(com.vividsolutions.jts.geomgraph.Label, com.vividsolutions.jts.geom.IntersectionMatrix)">updateIM</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label,
+         <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates an IM from the label for an edge.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getLabel()">getLabel</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCovered()">isCovered</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCoveredSet()">isCoveredSet</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isInResult()">isInResult</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setCovered(boolean)">setCovered</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setInResult(boolean)">setInResult</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setLabel(com.vividsolutions.jts.geomgraph.Label)">setLabel</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#updateIM(com.vividsolutions.jts.geom.IntersectionMatrix)">updateIM</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Edge(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+Edge</H3>
+<PRE>
+public <B>Edge</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+            <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="Edge(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+Edge</H3>
+<PRE>
+public <B>Edge</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="updateIM(com.vividsolutions.jts.geomgraph.Label, com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+updateIM</H3>
+<PRE>
+public static void <B>updateIM</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label,
+                            <A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>Updates an IM from the label for an edge.
+ Handles edges from both L and A geometries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNumPoints()"><!-- --></A><H3>
+getNumPoints</H3>
+<PRE>
+public int <B>getNumPoints</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setName(java.lang.String)"><!-- --></A><H3>
+setName</H3>
+<PRE>
+public void <B>setName</B>(java.lang.String&nbsp;name)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getCoordinate()">getCoordinate</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a coordinate in this component (or null, if there are none)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelope()"><!-- --></A><H3>
+getEnvelope</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getEnvelope</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDepth()"><!-- --></A><H3>
+getDepth</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A> <B>getDepth</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDepthDelta()"><!-- --></A><H3>
+getDepthDelta</H3>
+<PRE>
+public int <B>getDepthDelta</B>()</PRE>
+<DL>
+<DD>The depthDelta is the change in depth as an edge is crossed from R to L
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the change in depth as the edge is crossed from R to L</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDepthDelta(int)"><!-- --></A><H3>
+setDepthDelta</H3>
+<PRE>
+public void <B>setDepthDelta</B>(int&nbsp;depthDelta)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaximumSegmentIndex()"><!-- --></A><H3>
+getMaximumSegmentIndex</H3>
+<PRE>
+public int <B>getMaximumSegmentIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeIntersectionList()"><!-- --></A><H3>
+getEdgeIntersectionList</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A> <B>getEdgeIntersectionList</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMonotoneChainEdge()"><!-- --></A><H3>
+getMonotoneChainEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A> <B>getMonotoneChainEdge</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isClosed()"><!-- --></A><H3>
+isClosed</H3>
+<PRE>
+public boolean <B>isClosed</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCollapsed()"><!-- --></A><H3>
+isCollapsed</H3>
+<PRE>
+public boolean <B>isCollapsed</B>()</PRE>
+<DL>
+<DD>An Edge is collapsed if it is an Area edge and it consists of
+ two segments which are equal and opposite (eg a zero-width V).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCollapsedEdge()"><!-- --></A><H3>
+getCollapsedEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>getCollapsedEdge</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setIsolated(boolean)"><!-- --></A><H3>
+setIsolated</H3>
+<PRE>
+public void <B>setIsolated</B>(boolean&nbsp;isIsolated)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIsolated()"><!-- --></A><H3>
+isIsolated</H3>
+<PRE>
+public boolean <B>isIsolated</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></B></DD>
+<DD>An isolated component is one that does not intersect or touch any other
+ component.  This is the case if the label has valid locations for
+ only a single Geometry.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isIsolated()">isIsolated</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this component is isolated</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addIntersections(com.vividsolutions.jts.algorithm.LineIntersector, int, int)"><!-- --></A><H3>
+addIntersections</H3>
+<PRE>
+public void <B>addIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                             int&nbsp;segmentIndex,
+                             int&nbsp;geomIndex)</PRE>
+<DL>
+<DD>Adds EdgeIntersections for one or both
+ intersections found for a segment of an edge to the edge intersection list.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addIntersection(com.vividsolutions.jts.algorithm.LineIntersector, int, int, int)"><!-- --></A><H3>
+addIntersection</H3>
+<PRE>
+public void <B>addIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                            int&nbsp;segmentIndex,
+                            int&nbsp;geomIndex,
+                            int&nbsp;intIndex)</PRE>
+<DL>
+<DD>Add an EdgeIntersection for intersection intIndex.
+ An intersection that falls exactly on a vertex of the edge is normalized
+ to use the higher of the two possible segmentIndexes
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+computeIM</H3>
+<PRE>
+public void <B>computeIM</B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>Update the IM with the contribution for this component.
+ A component only contributes if it has a labelling for both parent geometries
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>equals is defined to be:
+ <p>
+ e1 equals e2
+ <b>iff</b>
+ the coordinates of e1 are the same or the reverse of the coordinates in e2
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isPointwiseEqual(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+isPointwiseEqual</H3>
+<PRE>
+public boolean <B>isPointwiseEqual</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the coordinate sequences of the Edges are identical</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="printReverse(java.io.PrintStream)"><!-- --></A><H3>
+printReverse</H3>
+<PRE>
+public void <B>printReverse</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Edge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEnd.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEnd.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEnd.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,667 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeEnd
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeEnd class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeEnd";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEnd.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeEnd</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeEnd</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>, <A HREF="../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>EdgeEnd</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+Models the end of an edge incident on a node.
+ EdgeEnds have a direction
+ determined by the direction of the ray from the initial
+ point to the next point.
+ EdgeEnds are comparable under the ordering
+ "a has a greater angle with the x-axis than b".
+ This ordering is used to sort EdgeEnds around a node.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#edge">edge</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#label">label</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected </CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#EdgeEnd(com.vividsolutions.jts.geomgraph.Edge)">EdgeEnd</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#EdgeEnd(com.vividsolutions.jts.geomgraph.Edge, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">EdgeEnd</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#EdgeEnd(com.vividsolutions.jts.geomgraph.Edge, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.Label)">EdgeEnd</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+        <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareDirection(com.vividsolutions.jts.geomgraph.EdgeEnd)">compareDirection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implements the total order relation:
+ </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)">computeLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDirectedCoordinate()">getDirectedCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDx()">getDx</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDy()">getDy</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getEdge()">getEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getLabel()">getLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getNode()">getNode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getQuadrant()">getQuadrant</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">init</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#setNode(com.vividsolutions.jts.geomgraph.Node)">setNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="edge"><!-- --></A><H3>
+edge</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>edge</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="label"><!-- --></A><H3>
+label</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>label</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeEnd(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+EdgeEnd</H3>
+<PRE>
+protected <B>EdgeEnd</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="EdgeEnd(com.vividsolutions.jts.geomgraph.Edge, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+EdgeEnd</H3>
+<PRE>
+public <B>EdgeEnd</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="EdgeEnd(com.vividsolutions.jts.geomgraph.Edge, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+EdgeEnd</H3>
+<PRE>
+public <B>EdgeEnd</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+               <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+init</H3>
+<PRE>
+protected void <B>init</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdge()"><!-- --></A><H3>
+getEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>getEdge</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLabel()"><!-- --></A><H3>
+getLabel</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>getLabel</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDirectedCoordinate()"><!-- --></A><H3>
+getDirectedCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getDirectedCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getQuadrant()"><!-- --></A><H3>
+getQuadrant</H3>
+<PRE>
+public int <B>getQuadrant</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDx()"><!-- --></A><H3>
+getDx</H3>
+<PRE>
+public double <B>getDx</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDy()"><!-- --></A><H3>
+getDy</H3>
+<PRE>
+public double <B>getDy</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setNode(com.vividsolutions.jts.geomgraph.Node)"><!-- --></A><H3>
+setNode</H3>
+<PRE>
+public void <B>setNode</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;node)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNode()"><!-- --></A><H3>
+getNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>getNode</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareDirection(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+compareDirection</H3>
+<PRE>
+public int <B>compareDirection</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD>Implements the total order relation:
+ <p>
+    a has a greater angle with the positive x-axis than b
+ <p>
+ Using the obvious algorithm of simply computing the angle is not robust,
+ since the angle calculation is obviously susceptible to roundoff.
+ A robust algorithm is:
+ - first compare the quadrant.  If the quadrants
+ are different, it it trivial to determine which vector is "greater".
+ - if the vectors lie in the same quadrant, the computeOrientation function
+ can be used to decide the relative orientation of the vectors.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+computeLabel</H3>
+<PRE>
+public void <B>computeLabel</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEnd.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEndStar.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEndStar.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeEndStar.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,521 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeEndStar
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeEndStar class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeEndStar";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeEndStar</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeEndStar</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>, <A HREF="../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundleStar</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>EdgeEndStar</B><DT>extends java.lang.Object</DL>
+
+<P>
+A EdgeEndStar is an ordered list of EdgeEnds around a node.
+ They are maintained in CCW order (starting with the positive x-axis) around the node
+ for efficient lookup and topology building.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeList">edgeList</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A list of all outgoing edges in the result, in CCW order</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Map</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeMap">edgeMap</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A map which maintains the edges in sorted order around the node</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#EdgeEndStar()">EdgeEndStar</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])">computeLabelling</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]&nbsp;geomGraph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#findIndex(com.vividsolutions.jts.geomgraph.EdgeEnd)">findIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;eSearch)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getDegree()">getDegree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getEdges()">getEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getNextCW(com.vividsolutions.jts.geomgraph.EdgeEnd)">getNextCW</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;ee)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)">insert</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert a EdgeEnd into this EdgeEndStar</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insertEdgeEnd(com.vividsolutions.jts.geomgraph.EdgeEnd, java.lang.Object)">insertEdgeEnd</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e,
+              java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert an EdgeEnd into the map, and clear the edgeList cache,
+ since the list of edges has now changed</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#isAreaLabelsConsistent(com.vividsolutions.jts.geomgraph.GeometryGraph)">isAreaLabelsConsistent</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator access to the ordered list of edges is optimized by
+ copying the map collection to a list.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="edgeMap"><!-- --></A><H3>
+edgeMap</H3>
+<PRE>
+protected java.util.Map <B>edgeMap</B></PRE>
+<DL>
+<DD>A map which maintains the edges in sorted order around the node
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="edgeList"><!-- --></A><H3>
+edgeList</H3>
+<PRE>
+protected java.util.List <B>edgeList</B></PRE>
+<DL>
+<DD>A list of all outgoing edges in the result, in CCW order
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeEndStar()"><!-- --></A><H3>
+EdgeEndStar</H3>
+<PRE>
+public <B>EdgeEndStar</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public abstract void <B>insert</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD>Insert a EdgeEnd into this EdgeEndStar
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertEdgeEnd(com.vividsolutions.jts.geomgraph.EdgeEnd, java.lang.Object)"><!-- --></A><H3>
+insertEdgeEnd</H3>
+<PRE>
+protected void <B>insertEdgeEnd</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e,
+                             java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD>Insert an EdgeEnd into the map, and clear the edgeList cache,
+ since the list of edges has now changed
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the coordinate for the node this star is based at</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDegree()"><!-- --></A><H3>
+getDegree</H3>
+<PRE>
+public int <B>getDegree</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD>Iterator access to the ordered list of edges is optimized by
+ copying the map collection to a list.  (This assumes that
+ once an iterator is requested, it is likely that insertion into
+ the map is complete).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdges()"><!-- --></A><H3>
+getEdges</H3>
+<PRE>
+public java.util.List <B>getEdges</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNextCW(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+getNextCW</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A> <B>getNextCW</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;ee)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])"><!-- --></A><H3>
+computeLabelling</H3>
+<PRE>
+public void <B>computeLabelling</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]&nbsp;geomGraph)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isAreaLabelsConsistent(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+isAreaLabelsConsistent</H3>
+<PRE>
+public boolean <B>isAreaLabelsConsistent</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findIndex(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+findIndex</H3>
+<PRE>
+public int <B>findIndex</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;eSearch)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersection.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersection.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersection.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,475 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeIntersection
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeIntersection class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeIntersection";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeIntersection.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeIntersection</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeIntersection</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>EdgeIntersection</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+Represents a point on an
+ edge which intersects with another edge.
+ <p>
+ The intersection may either be a single point, or a line segment
+ (in which case this point is the start of the line segment)
+ The intersection point must be precise.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#coord">coord</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#dist">dist</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#segmentIndex">segmentIndex</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#EdgeIntersection(com.vividsolutions.jts.geom.Coordinate, int, double)">EdgeIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                 int&nbsp;segmentIndex,
+                 double&nbsp;dist)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#compare(int, double)">compare</A></B>(int&nbsp;segmentIndex,
+        double&nbsp;dist)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#getDistance()">getDistance</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#getSegmentIndex()">getSegmentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#isEndPoint(int)">isEndPoint</A></B>(int&nbsp;maxSegmentIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="coord"><!-- --></A><H3>
+coord</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>coord</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="segmentIndex"><!-- --></A><H3>
+segmentIndex</H3>
+<PRE>
+public int <B>segmentIndex</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="dist"><!-- --></A><H3>
+dist</H3>
+<PRE>
+public double <B>dist</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeIntersection(com.vividsolutions.jts.geom.Coordinate, int, double)"><!-- --></A><H3>
+EdgeIntersection</H3>
+<PRE>
+public <B>EdgeIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                        int&nbsp;segmentIndex,
+                        double&nbsp;dist)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentIndex()"><!-- --></A><H3>
+getSegmentIndex</H3>
+<PRE>
+public int <B>getSegmentIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDistance()"><!-- --></A><H3>
+getDistance</H3>
+<PRE>
+public double <B>getDistance</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compare(int, double)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public int <B>compare</B>(int&nbsp;segmentIndex,
+                   double&nbsp;dist)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>-1 this EdgeIntersection is located before the argument location</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEndPoint(int)"><!-- --></A><H3>
+isEndPoint</H3>
+<PRE>
+public boolean <B>isEndPoint</B>(int&nbsp;maxSegmentIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeIntersection.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,377 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeIntersectionList
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeIntersectionList class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeIntersectionList";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeIntersectionList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeIntersectionList</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeIntersectionList</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeIntersectionList</B><DT>extends java.lang.Object</DL>
+
+<P>
+A list of edge intersections along an <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>.
+ Implements splitting an edge with intersections
+ into multiple resultant edges.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#EdgeIntersectionList(com.vividsolutions.jts.geomgraph.Edge)">EdgeIntersectionList</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#add(com.vividsolutions.jts.geom.Coordinate, int, double)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;intPt,
+    int&nbsp;segmentIndex,
+    double&nbsp;dist)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an intersection into the list, if it isn't already there.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#addEndpoints()">addEndpoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds entries for the first and last points of the edge to the list</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#addSplitEdges(java.util.List)">addSplitEdges</A></B>(java.util.List&nbsp;edgeList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates new edges for all the edges that the intersections in this
+ list split the parent edge into.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#isIntersection(com.vividsolutions.jts.geom.Coordinate)">isIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if the given point is an edge intersection</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an iterator of <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeIntersection</CODE></A>s</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeIntersectionList(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+EdgeIntersectionList</H3>
+<PRE>
+public <B>EdgeIntersectionList</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate, int, double)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A> <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;intPt,
+                            int&nbsp;segmentIndex,
+                            double&nbsp;dist)</PRE>
+<DL>
+<DD>Adds an intersection into the list, if it isn't already there.
+ The input segmentIndex and dist are expected to be normalized.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the EdgeIntersection found or added</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD>Returns an iterator of <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeIntersection</CODE></A>s
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an Iterator of EdgeIntersections</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIntersection(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isIntersection</H3>
+<PRE>
+public boolean <B>isIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Tests if the given point is an edge intersection
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - the point to test
+<DT><B>Returns:</B><DD>true if the point is an intersection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addEndpoints()"><!-- --></A><H3>
+addEndpoints</H3>
+<PRE>
+public void <B>addEndpoints</B>()</PRE>
+<DL>
+<DD>Adds entries for the first and last points of the edge to the list
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addSplitEdges(java.util.List)"><!-- --></A><H3>
+addSplitEdges</H3>
+<PRE>
+public void <B>addSplitEdges</B>(java.util.List&nbsp;edgeList)</PRE>
+<DL>
+<DD>Creates new edges for all the edges that the intersections in this
+ list split the parent edge into.
+ Adds the edges to the input list (this is so a single list
+ can be used to accumulate all split edges for a Geometry).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>edgeList</CODE> - a list of EdgeIntersections</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeIntersectionList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeList.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeList.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeList.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,403 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeList
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeList class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeList";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeList</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeList</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeList</B><DT>extends java.lang.Object</DL>
+
+<P>
+A EdgeList is a list of Edges.  It supports locating edges
+ that are pointwise equals to a target edge.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#EdgeList()">EdgeList</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#add(com.vividsolutions.jts.geomgraph.Edge)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert an edge unless it is already in the list</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#addAll(java.util.Collection)">addAll</A></B>(java.util.Collection&nbsp;edgeColl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#findEdgeIndex(com.vividsolutions.jts.geomgraph.Edge)">findEdgeIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the edge e is already in the list, return its index.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#findEqualEdge(com.vividsolutions.jts.geomgraph.Edge)">findEqualEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If there is an edge equal to e already in the list, return it.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#get(int)">get</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#getEdges()">getEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeList()"><!-- --></A><H3>
+EdgeList</H3>
+<PRE>
+public <B>EdgeList</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Insert an edge unless it is already in the list
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addAll(java.util.Collection)"><!-- --></A><H3>
+addAll</H3>
+<PRE>
+public void <B>addAll</B>(java.util.Collection&nbsp;edgeColl)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdges()"><!-- --></A><H3>
+getEdges</H3>
+<PRE>
+public java.util.List <B>getEdges</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEqualEdge(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+findEqualEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>findEqualEdge</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>If there is an edge equal to e already in the list, return it.
+ Otherwise return null.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>equal edge, if there is one already in the list
+          null otherwise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="get(int)"><!-- --></A><H3>
+get</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>get</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEdgeIndex(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+findEdgeIndex</H3>
+<PRE>
+public int <B>findEdgeIndex</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>If the edge e is already in the list, return its index.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>index, if e is already in the list
+          -1 otherwise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,267 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeNodingValidator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeNodingValidator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeNodingValidator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeNodingValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeNodingValidator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeNodingValidator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeNodingValidator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Validates that a collection of <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s is correctly noded.
+ Throws an appropriate exception if an noding error is found.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html#EdgeNodingValidator(java.util.Collection)">EdgeNodingValidator</A></B>(java.util.Collection&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new validator for the given collection of <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html#checkValid()">checkValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether the supplied edges
+ are correctly noded.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeNodingValidator(java.util.Collection)"><!-- --></A><H3>
+EdgeNodingValidator</H3>
+<PRE>
+public <B>EdgeNodingValidator</B>(java.util.Collection&nbsp;edges)</PRE>
+<DL>
+<DD>Creates a new validator for the given collection of <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s.
+<P>
+<DT><B>Parameters:</B><DD><CODE>edges</CODE> - a collection of Edges.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="checkValid()"><!-- --></A><H3>
+checkValid</H3>
+<PRE>
+public void <B>checkValid</B>()</PRE>
+<DL>
+<DD>Checks whether the supplied edges
+ are correctly noded.  Throws an exception if they are not.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.RuntimeException</CODE> - if the SegmentStrings are not correctly noded</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeNodingValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/EdgeRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,733 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.EdgeRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class EdgeRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.EdgeRing</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>, <A HREF="../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>EdgeRing</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#cga">cga</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#geometryFactory">geometryFactory</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#startDe">startDe</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#EdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)">EdgeRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start,
+         <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+         <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#addHole(com.vividsolutions.jts.geomgraph.EdgeRing)">addHole</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#addPoints(com.vividsolutions.jts.geomgraph.Edge, boolean, boolean)">addPoints</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+          boolean&nbsp;isForward,
+          boolean&nbsp;isFirstEdge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#computePoints(com.vividsolutions.jts.geomgraph.DirectedEdge)">computePoints</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collect all the points from the DirectedEdges of this ring into a contiguous list</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#computeRing()">computeRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute a LinearRing from the point list previously collected.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#containsPoint(com.vividsolutions.jts.geom.Coordinate)">containsPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method will cause the ring to be computed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getEdges()">getEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the list of DirectedEdges that make up this EdgeRing</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getLabel()">getLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getLinearRing()">getLinearRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getMaxNodeDegree()">getMaxNodeDegree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)">getNext</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getShell()">getShell</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isHole()">isHole</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isIsolated()">isIsolated</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isShell()">isShell</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)">mergeLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;deLabel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label, int)">mergeLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;deLabel,
+           int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merge the RHS label from a DirectedEdge into the label for this EdgeRing.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)">setEdgeRing</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de,
+            <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setInResult()">setInResult</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setShell(com.vividsolutions.jts.geomgraph.EdgeRing)">setShell</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;shell)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#toPolygon(com.vividsolutions.jts.geom.GeometryFactory)">toPolygon</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="startDe"><!-- --></A><H3>
+startDe</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>startDe</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="geometryFactory"><!-- --></A><H3>
+geometryFactory</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A> <B>geometryFactory</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="cga"><!-- --></A><H3>
+cga</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A> <B>cga</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><!-- --></A><H3>
+EdgeRing</H3>
+<PRE>
+public <B>EdgeRing</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start,
+                <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isIsolated()"><!-- --></A><H3>
+isIsolated</H3>
+<PRE>
+public boolean <B>isIsolated</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isHole()"><!-- --></A><H3>
+isHole</H3>
+<PRE>
+public boolean <B>isHole</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLinearRing()"><!-- --></A><H3>
+getLinearRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>getLinearRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLabel()"><!-- --></A><H3>
+getLabel</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>getLabel</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isShell()"><!-- --></A><H3>
+isShell</H3>
+<PRE>
+public boolean <B>isShell</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getShell()"><!-- --></A><H3>
+getShell</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A> <B>getShell</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setShell(com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+setShell</H3>
+<PRE>
+public void <B>setShell</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;shell)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addHole(com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+addHole</H3>
+<PRE>
+public void <B>addHole</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;ring)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toPolygon(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+toPolygon</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A> <B>toPolygon</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeRing()"><!-- --></A><H3>
+computeRing</H3>
+<PRE>
+public void <B>computeRing</B>()</PRE>
+<DL>
+<DD>Compute a LinearRing from the point list previously collected.
+ Test if the ring is a hole (i.e. if it is CCW) and set the hole flag
+ accordingly.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+getNext</H3>
+<PRE>
+public abstract <A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getNext</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+setEdgeRing</H3>
+<PRE>
+public abstract void <B>setEdgeRing</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de,
+                                 <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdges()"><!-- --></A><H3>
+getEdges</H3>
+<PRE>
+public java.util.List <B>getEdges</B>()</PRE>
+<DL>
+<DD>Returns the list of DirectedEdges that make up this EdgeRing
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computePoints(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+computePoints</H3>
+<PRE>
+protected void <B>computePoints</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start)</PRE>
+<DL>
+<DD>Collect all the points from the DirectedEdges of this ring into a contiguous list
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaxNodeDegree()"><!-- --></A><H3>
+getMaxNodeDegree</H3>
+<PRE>
+public int <B>getMaxNodeDegree</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setInResult()"><!-- --></A><H3>
+setInResult</H3>
+<PRE>
+public void <B>setInResult</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="mergeLabel(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+mergeLabel</H3>
+<PRE>
+protected void <B>mergeLabel</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;deLabel)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="mergeLabel(com.vividsolutions.jts.geomgraph.Label, int)"><!-- --></A><H3>
+mergeLabel</H3>
+<PRE>
+protected void <B>mergeLabel</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;deLabel,
+                          int&nbsp;geomIndex)</PRE>
+<DL>
+<DD>Merge the RHS label from a DirectedEdge into the label for this EdgeRing.
+ The DirectedEdge label may be null.  This is acceptable - it results
+ from a node which is NOT an intersection node between the Geometries
+ (e.g. the end node of a LinearRing).  In this case the DirectedEdge label
+ does not contribute any information to the overall labelling, and is simply skipped.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addPoints(com.vividsolutions.jts.geomgraph.Edge, boolean, boolean)"><!-- --></A><H3>
+addPoints</H3>
+<PRE>
+protected void <B>addPoints</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+                         boolean&nbsp;isForward,
+                         boolean&nbsp;isFirstEdge)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="containsPoint(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+containsPoint</H3>
+<PRE>
+public boolean <B>containsPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>This method will cause the ring to be computed.
+ It will also check any holes, if they have been assigned.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GeometryGraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GeometryGraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GeometryGraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,576 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+GeometryGraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.GeometryGraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryGraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.PlanarGraph">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class GeometryGraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.PlanarGraph</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.GeometryGraph</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometryGraph</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A></DL>
+
+<P>
+A GeometryGraph is a graph that models a given Geometry
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.PlanarGraph"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#cga">cga</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#edgeEndList">edgeEndList</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#edges">edges</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#nodes">nodes</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#GeometryGraph(int, com.vividsolutions.jts.geom.Geometry)">GeometryGraph</A></B>(int&nbsp;argIndex,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parentGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#GeometryGraph(int, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)">GeometryGraph</A></B>(int&nbsp;argIndex,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parentGeom,
+              <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#addEdge(com.vividsolutions.jts.geomgraph.Edge)">addEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add an Edge computed externally.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#addPoint(com.vividsolutions.jts.geom.Coordinate)">addPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a point computed externally.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#computeEdgeIntersections(com.vividsolutions.jts.geomgraph.GeometryGraph, com.vividsolutions.jts.algorithm.LineIntersector, boolean)">computeEdgeIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;g,
+                         <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                         boolean&nbsp;includeProper)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#computeSelfNodes(com.vividsolutions.jts.algorithm.LineIntersector, boolean)">computeSelfNodes</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                 boolean&nbsp;computeRingSelfNodes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute self-nodes, taking advantage of the Geometry type to
+ minimize the number of intersection tests.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#computeSplitEdges(java.util.List)">computeSplitEdges</A></B>(java.util.List&nbsp;edgelist)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#determineBoundary(com.vividsolutions.jts.algorithm.BoundaryNodeRule, int)">determineBoundary</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule,
+                  int&nbsp;boundaryCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method implements the Boundary Determination Rule
+ for determining whether
+ a component (node or edge) that appears multiple times in elements
+ of a MultiGeometry is in the boundary or the interior of the Geometry
+ <br>
+ The SFS uses the "Mod-2 Rule", which this function implements
+ <br>
+ An alternative (and possibly more intuitive) rule would be
+ the "At Most One Rule":
+    isInBoundary = (componentCount == 1)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#findEdge(com.vividsolutions.jts.geom.LineString)">findEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#getBoundaryNodeRule()">getBoundaryNodeRule</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#getBoundaryNodes()">getBoundaryNodes</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#getBoundaryPoints()">getBoundaryPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#getGeometry()">getGeometry</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#getInvalidPoint()">getInvalidPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html#hasTooFewPoints()">hasTooFewPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This constructor is used by clients that wish to add Edges explicitly,
+ rather than adding a Geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.PlanarGraph"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)">add</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#addEdges(java.util.List)">addEdges</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#addNode(com.vividsolutions.jts.geom.Coordinate)">addNode</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#addNode(com.vividsolutions.jts.geomgraph.Node)">addNode</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#find(com.vividsolutions.jts.geom.Coordinate)">find</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdge(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">findEdge</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdgeEnd(com.vividsolutions.jts.geomgraph.Edge)">findEdgeEnd</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdgeInSameDirection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">findEdgeInSameDirection</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getEdgeEnds()">getEdgeEnds</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getEdgeIterator()">getEdgeIterator</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getNodeIterator()">getNodeIterator</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getNodes()">getNodes</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#insertEdge(com.vividsolutions.jts.geomgraph.Edge)">insertEdge</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#isBoundaryNode(int, com.vividsolutions.jts.geom.Coordinate)">isBoundaryNode</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkAllDirectedEdges()">linkAllDirectedEdges</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkResultDirectedEdges()">linkResultDirectedEdges</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkResultDirectedEdges(java.util.Collection)">linkResultDirectedEdges</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#printEdges(java.io.PrintStream)">printEdges</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryGraph(int, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+GeometryGraph</H3>
+<PRE>
+public <B>GeometryGraph</B>(int&nbsp;argIndex,
+                     <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parentGeom)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="GeometryGraph(int, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+GeometryGraph</H3>
+<PRE>
+public <B>GeometryGraph</B>(int&nbsp;argIndex,
+                     <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parentGeom,
+                     <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="determineBoundary(com.vividsolutions.jts.algorithm.BoundaryNodeRule, int)"><!-- --></A><H3>
+determineBoundary</H3>
+<PRE>
+public static int <B>determineBoundary</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule,
+                                    int&nbsp;boundaryCount)</PRE>
+<DL>
+<DD>This method implements the Boundary Determination Rule
+ for determining whether
+ a component (node or edge) that appears multiple times in elements
+ of a MultiGeometry is in the boundary or the interior of the Geometry
+ <br>
+ The SFS uses the "Mod-2 Rule", which this function implements
+ <br>
+ An alternative (and possibly more intuitive) rule would be
+ the "At Most One Rule":
+    isInBoundary = (componentCount == 1)
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasTooFewPoints()"><!-- --></A><H3>
+hasTooFewPoints</H3>
+<PRE>
+public boolean <B>hasTooFewPoints</B>()</PRE>
+<DL>
+<DD>This constructor is used by clients that wish to add Edges explicitly,
+ rather than adding a Geometry.  (An example is BufferOp).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInvalidPoint()"><!-- --></A><H3>
+getInvalidPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInvalidPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometry()"><!-- --></A><H3>
+getGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getGeometry</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryNodeRule()"><!-- --></A><H3>
+getBoundaryNodeRule</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A> <B>getBoundaryNodeRule</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryNodes()"><!-- --></A><H3>
+getBoundaryNodes</H3>
+<PRE>
+public java.util.Collection <B>getBoundaryNodes</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryPoints()"><!-- --></A><H3>
+getBoundaryPoints</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getBoundaryPoints</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEdge(com.vividsolutions.jts.geom.LineString)"><!-- --></A><H3>
+findEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>findEdge</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;line)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeSplitEdges(java.util.List)"><!-- --></A><H3>
+computeSplitEdges</H3>
+<PRE>
+public void <B>computeSplitEdges</B>(java.util.List&nbsp;edgelist)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addEdge(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+addEdge</H3>
+<PRE>
+public void <B>addEdge</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Add an Edge computed externally.  The label on the Edge is assumed
+ to be correct.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addPoint(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+addPoint</H3>
+<PRE>
+public void <B>addPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Add a point computed externally.  The point is assumed to be a
+ Point Geometry part, which has a location of INTERIOR.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeSelfNodes(com.vividsolutions.jts.algorithm.LineIntersector, boolean)"><!-- --></A><H3>
+computeSelfNodes</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A> <B>computeSelfNodes</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                                           boolean&nbsp;computeRingSelfNodes)</PRE>
+<DL>
+<DD>Compute self-nodes, taking advantage of the Geometry type to
+ minimize the number of intersection tests.  (E.g. rings are
+ not tested for self-intersection, since they are assumed to be valid).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>li</CODE> - the LineIntersector to use<DD><CODE>computeRingSelfNodes</CODE> - if <false>, intersection checks are optimized to not test rings for self-intersection
+<DT><B>Returns:</B><DD>the SegmentIntersector used, containing information about the intersections found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEdgeIntersections(com.vividsolutions.jts.geomgraph.GeometryGraph, com.vividsolutions.jts.algorithm.LineIntersector, boolean)"><!-- --></A><H3>
+computeEdgeIntersections</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A> <B>computeEdgeIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;g,
+                                                   <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                                                   boolean&nbsp;includeProper)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.PlanarGraph">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GraphComponent.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GraphComponent.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/GraphComponent.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,548 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+GraphComponent
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.GraphComponent class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GraphComponent";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GraphComponent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class GraphComponent</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.GraphComponent</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>GraphComponent</B><DT>extends java.lang.Object</DL>
+
+<P>
+A GraphComponent is the parent class for the objects'
+ that form a graph.  Each GraphComponent can carry a
+ Label.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#label">label</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#GraphComponent()">GraphComponent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#GraphComponent(com.vividsolutions.jts.geomgraph.Label)">GraphComponent</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compute the contribution to an IM for this component</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getLabel()">getLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCovered()">isCovered</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCoveredSet()">isCoveredSet</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isInResult()">isInResult</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isIsolated()">isIsolated</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An isolated component is one that does not intersect or touch any other
+ component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isVisited()">isVisited</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setCovered(boolean)">setCovered</A></B>(boolean&nbsp;isCovered)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setInResult(boolean)">setInResult</A></B>(boolean&nbsp;isInResult)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setLabel(com.vividsolutions.jts.geomgraph.Label)">setLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setVisited(boolean)">setVisited</A></B>(boolean&nbsp;isVisited)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#updateIM(com.vividsolutions.jts.geom.IntersectionMatrix)">updateIM</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update the IM with the contribution for this component.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="label"><!-- --></A><H3>
+label</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>label</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GraphComponent()"><!-- --></A><H3>
+GraphComponent</H3>
+<PRE>
+public <B>GraphComponent</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="GraphComponent(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+GraphComponent</H3>
+<PRE>
+public <B>GraphComponent</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLabel()"><!-- --></A><H3>
+getLabel</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>getLabel</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLabel(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+setLabel</H3>
+<PRE>
+public void <B>setLabel</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setInResult(boolean)"><!-- --></A><H3>
+setInResult</H3>
+<PRE>
+public void <B>setInResult</B>(boolean&nbsp;isInResult)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInResult()"><!-- --></A><H3>
+isInResult</H3>
+<PRE>
+public boolean <B>isInResult</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setCovered(boolean)"><!-- --></A><H3>
+setCovered</H3>
+<PRE>
+public void <B>setCovered</B>(boolean&nbsp;isCovered)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCovered()"><!-- --></A><H3>
+isCovered</H3>
+<PRE>
+public boolean <B>isCovered</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCoveredSet()"><!-- --></A><H3>
+isCoveredSet</H3>
+<PRE>
+public boolean <B>isCoveredSet</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isVisited()"><!-- --></A><H3>
+isVisited</H3>
+<PRE>
+public boolean <B>isVisited</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setVisited(boolean)"><!-- --></A><H3>
+setVisited</H3>
+<PRE>
+public void <B>setVisited</B>(boolean&nbsp;isVisited)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public abstract <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a coordinate in this component (or null, if there are none)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+computeIM</H3>
+<PRE>
+protected abstract void <B>computeIM</B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>compute the contribution to an IM for this component
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIsolated()"><!-- --></A><H3>
+isIsolated</H3>
+<PRE>
+public abstract boolean <B>isIsolated</B>()</PRE>
+<DL>
+<DD>An isolated component is one that does not intersect or touch any other
+ component.  This is the case if the label has valid locations for
+ only a single Geometry.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this component is isolated</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="updateIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+updateIM</H3>
+<PRE>
+public void <B>updateIM</B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>Update the IM with the contribution for this component.
+ A component only contributes if it has a labelling for both parent geometries
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GraphComponent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Label.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Label.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Label.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,741 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Label
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.Label class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Label";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Label.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class Label</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.Label</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Label</B><DT>extends java.lang.Object</DL>
+
+<P>
+A <code>Label</code> indicates the topological relationship of a component
+ of a topology graph to a given <code>Geometry</code>.
+ This class supports labels for relationships to two <code>Geometry</code>s,
+ which is sufficient for algorithms for binary operations.
+ <P>
+ Topology graphs support the concept of labeling nodes and edges in the graph.
+ The label of a node or edge specifies its topological relationship to one or
+ more geometries.  (In fact, since JTS operations have only two arguments labels
+ are required for only two geometries).  A label for a node or edge has one or
+ two elements, depending on whether the node or edge occurs in one or both of the
+ input <code>Geometry</code>s.  Elements contain attributes which categorize the
+ topological location of the node or edge relative to the parent
+ <code>Geometry</code>; that is, whether the node or edge is in the interior,
+ boundary or exterior of the <code>Geometry</code>.  Attributes have a value
+ from the set <code>{Interior, Boundary, Exterior}</code>.  In a node each
+ element has  a single attribute <code>&lt;On&gt;</code>.  For an edge each element has a
+ triplet of attributes <code>&lt;Left, On, Right&gt;</code>.
+ <P>
+ It is up to the client code to associate the 0 and 1 <code>TopologyLocation</code>s
+ with specific geometries.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#Label(int)">Label</A></B>(int&nbsp;onLoc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Label with a single location for both Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#Label(int, int)">Label</A></B>(int&nbsp;geomIndex,
+      int&nbsp;onLoc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Label with a single location for both Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#Label(int, int, int)">Label</A></B>(int&nbsp;onLoc,
+      int&nbsp;leftLoc,
+      int&nbsp;rightLoc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Label with On, Left and Right locations for both Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#Label(int, int, int, int)">Label</A></B>(int&nbsp;geomIndex,
+      int&nbsp;onLoc,
+      int&nbsp;leftLoc,
+      int&nbsp;rightLoc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Label with On, Left and Right locations for both Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#Label(com.vividsolutions.jts.geomgraph.Label)">Label</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a Label with the same values as the argument Label.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#allPositionsEqual(int, int)">allPositionsEqual</A></B>(int&nbsp;geomIndex,
+                  int&nbsp;loc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#flip()">flip</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#getGeometryCount()">getGeometryCount</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#getLocation(int)">getLocation</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#getLocation(int, int)">getLocation</A></B>(int&nbsp;geomIndex,
+            int&nbsp;posIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#isAnyNull(int)">isAnyNull</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#isArea()">isArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#isArea(int)">isArea</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#isEqualOnSide(com.vividsolutions.jts.geomgraph.Label, int)">isEqualOnSide</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl,
+              int&nbsp;side)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#isLine(int)">isLine</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#isNull(int)">isNull</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#merge(com.vividsolutions.jts.geomgraph.Label)">merge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merge this label with another one.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#setAllLocations(int, int)">setAllLocations</A></B>(int&nbsp;geomIndex,
+                int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#setAllLocationsIfNull(int)">setAllLocationsIfNull</A></B>(int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#setAllLocationsIfNull(int, int)">setAllLocationsIfNull</A></B>(int&nbsp;geomIndex,
+                      int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#setLocation(int, int)">setLocation</A></B>(int&nbsp;geomIndex,
+            int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#setLocation(int, int, int)">setLocation</A></B>(int&nbsp;geomIndex,
+            int&nbsp;posIndex,
+            int&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#toLine(int)">toLine</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts one GeometryLocation to a Line location</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#toLineLabel(com.vividsolutions.jts.geomgraph.Label)">toLineLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Label(int)"><!-- --></A><H3>
+Label</H3>
+<PRE>
+public <B>Label</B>(int&nbsp;onLoc)</PRE>
+<DL>
+<DD>Construct a Label with a single location for both Geometries.
+ Initialize the locations to Null
+<P>
+</DL>
+<HR>
+
+<A NAME="Label(int, int)"><!-- --></A><H3>
+Label</H3>
+<PRE>
+public <B>Label</B>(int&nbsp;geomIndex,
+             int&nbsp;onLoc)</PRE>
+<DL>
+<DD>Construct a Label with a single location for both Geometries.
+ Initialize the location for the Geometry index.
+<P>
+</DL>
+<HR>
+
+<A NAME="Label(int, int, int)"><!-- --></A><H3>
+Label</H3>
+<PRE>
+public <B>Label</B>(int&nbsp;onLoc,
+             int&nbsp;leftLoc,
+             int&nbsp;rightLoc)</PRE>
+<DL>
+<DD>Construct a Label with On, Left and Right locations for both Geometries.
+ Initialize the locations for both Geometries to the given values.
+<P>
+</DL>
+<HR>
+
+<A NAME="Label(int, int, int, int)"><!-- --></A><H3>
+Label</H3>
+<PRE>
+public <B>Label</B>(int&nbsp;geomIndex,
+             int&nbsp;onLoc,
+             int&nbsp;leftLoc,
+             int&nbsp;rightLoc)</PRE>
+<DL>
+<DD>Construct a Label with On, Left and Right locations for both Geometries.
+ Initialize the locations for the given Geometry index.
+<P>
+</DL>
+<HR>
+
+<A NAME="Label(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+Label</H3>
+<PRE>
+public <B>Label</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl)</PRE>
+<DL>
+<DD>Construct a Label with the same values as the argument Label.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toLineLabel(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+toLineLabel</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>toLineLabel</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="flip()"><!-- --></A><H3>
+flip</H3>
+<PRE>
+public void <B>flip</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocation(int, int)"><!-- --></A><H3>
+getLocation</H3>
+<PRE>
+public int <B>getLocation</B>(int&nbsp;geomIndex,
+                       int&nbsp;posIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocation(int)"><!-- --></A><H3>
+getLocation</H3>
+<PRE>
+public int <B>getLocation</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLocation(int, int, int)"><!-- --></A><H3>
+setLocation</H3>
+<PRE>
+public void <B>setLocation</B>(int&nbsp;geomIndex,
+                        int&nbsp;posIndex,
+                        int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLocation(int, int)"><!-- --></A><H3>
+setLocation</H3>
+<PRE>
+public void <B>setLocation</B>(int&nbsp;geomIndex,
+                        int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAllLocations(int, int)"><!-- --></A><H3>
+setAllLocations</H3>
+<PRE>
+public void <B>setAllLocations</B>(int&nbsp;geomIndex,
+                            int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAllLocationsIfNull(int, int)"><!-- --></A><H3>
+setAllLocationsIfNull</H3>
+<PRE>
+public void <B>setAllLocationsIfNull</B>(int&nbsp;geomIndex,
+                                  int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAllLocationsIfNull(int)"><!-- --></A><H3>
+setAllLocationsIfNull</H3>
+<PRE>
+public void <B>setAllLocationsIfNull</B>(int&nbsp;location)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="merge(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+merge</H3>
+<PRE>
+public void <B>merge</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl)</PRE>
+<DL>
+<DD>Merge this label with another one.
+ Merging updates any null attributes of this label with the attributes from lbl
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometryCount()"><!-- --></A><H3>
+getGeometryCount</H3>
+<PRE>
+public int <B>getGeometryCount</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNull(int)"><!-- --></A><H3>
+isNull</H3>
+<PRE>
+public boolean <B>isNull</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isAnyNull(int)"><!-- --></A><H3>
+isAnyNull</H3>
+<PRE>
+public boolean <B>isAnyNull</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isArea()"><!-- --></A><H3>
+isArea</H3>
+<PRE>
+public boolean <B>isArea</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isArea(int)"><!-- --></A><H3>
+isArea</H3>
+<PRE>
+public boolean <B>isArea</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isLine(int)"><!-- --></A><H3>
+isLine</H3>
+<PRE>
+public boolean <B>isLine</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEqualOnSide(com.vividsolutions.jts.geomgraph.Label, int)"><!-- --></A><H3>
+isEqualOnSide</H3>
+<PRE>
+public boolean <B>isEqualOnSide</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;lbl,
+                             int&nbsp;side)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="allPositionsEqual(int, int)"><!-- --></A><H3>
+allPositionsEqual</H3>
+<PRE>
+public boolean <B>allPositionsEqual</B>(int&nbsp;geomIndex,
+                                 int&nbsp;loc)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLine(int)"><!-- --></A><H3>
+toLine</H3>
+<PRE>
+public void <B>toLine</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD>Converts one GeometryLocation to a Line location
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Label.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Node.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Node.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Node.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Node
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.Node class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Node";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class Node</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.GraphComponent</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.Node</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate">RelateNode</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Node</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#coord">coord</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#edges">edges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#label">label</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#Node(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.EdgeEndStar)">Node</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+     <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the edge to the list of edges at this node</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic nodes do not compute IMs</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#getEdges()">getEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#isIncidentEdgeInResult()">isIncidentEdgeInResult</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether any incident edge is flagged as
+ being in the result.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#isIsolated()">isIsolated</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An isolated component is one that does not intersect or touch any other
+ component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)">mergeLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;To merge labels for two nodes,
+ the merged location for each LabelElement is computed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#mergeLabel(com.vividsolutions.jts.geomgraph.Node)">mergeLabel</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#setLabel(int, int)">setLabel</A></B>(int&nbsp;argIndex,
+         int&nbsp;onLocation)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html#setLabelBoundary(int)">setLabelBoundary</A></B>(int&nbsp;argIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the label of a node to BOUNDARY,
+ obeying the mod-2 boundaryDetermination rule.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getLabel()">getLabel</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCovered()">isCovered</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCoveredSet()">isCoveredSet</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isInResult()">isInResult</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setCovered(boolean)">setCovered</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setInResult(boolean)">setInResult</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setLabel(com.vividsolutions.jts.geomgraph.Label)">setLabel</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#updateIM(com.vividsolutions.jts.geom.IntersectionMatrix)">updateIM</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="coord"><!-- --></A><H3>
+coord</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>coord</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="edges"><!-- --></A><H3>
+edges</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A> <B>edges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Node(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.EdgeEndStar)"><!-- --></A><H3>
+Node</H3>
+<PRE>
+public <B>Node</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+            <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>&nbsp;edges)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getCoordinate()">getCoordinate</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a coordinate in this component (or null, if there are none)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdges()"><!-- --></A><H3>
+getEdges</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A> <B>getEdges</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIncidentEdgeInResult()"><!-- --></A><H3>
+isIncidentEdgeInResult</H3>
+<PRE>
+public boolean <B>isIncidentEdgeInResult</B>()</PRE>
+<DL>
+<DD>Tests whether any incident edge is flagged as
+ being in the result.
+ This test can be used to determine if the node is in the result,
+ since if any incident edge is in the result, the node must be in the result as well.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if any indicident edge in the in the result</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isIsolated()"><!-- --></A><H3>
+isIsolated</H3>
+<PRE>
+public boolean <B>isIsolated</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></B></DD>
+<DD>An isolated component is one that does not intersect or touch any other
+ component.  This is the case if the label has valid locations for
+ only a single Geometry.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isIsolated()">isIsolated</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this component is isolated</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+computeIM</H3>
+<PRE>
+protected void <B>computeIM</B>(<A HREF="../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>Basic nodes do not compute IMs
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD>Add the edge to the list of edges at this node
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="mergeLabel(com.vividsolutions.jts.geomgraph.Node)"><!-- --></A><H3>
+mergeLabel</H3>
+<PRE>
+public void <B>mergeLabel</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;n)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="mergeLabel(com.vividsolutions.jts.geomgraph.Label)"><!-- --></A><H3>
+mergeLabel</H3>
+<PRE>
+public void <B>mergeLabel</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label2)</PRE>
+<DL>
+<DD>To merge labels for two nodes,
+ the merged location for each LabelElement is computed.
+ The location for the corresponding node LabelElement is set to the result,
+ as long as the location is non-null.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLabel(int, int)"><!-- --></A><H3>
+setLabel</H3>
+<PRE>
+public void <B>setLabel</B>(int&nbsp;argIndex,
+                     int&nbsp;onLocation)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLabelBoundary(int)"><!-- --></A><H3>
+setLabelBoundary</H3>
+<PRE>
+public void <B>setLabelBoundary</B>(int&nbsp;argIndex)</PRE>
+<DL>
+<DD>Updates the label of a node to BOUNDARY,
+ obeying the mod-2 boundaryDetermination rule.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,259 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+NodeFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.NodeFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NodeFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class NodeFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.NodeFactory</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayNodeFactory</A>, <A HREF="../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeFactory</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>NodeFactory</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html#NodeFactory()">NodeFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)">createNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The basic node constructor does not allow for incident edges</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NodeFactory()"><!-- --></A><H3>
+NodeFactory</H3>
+<PRE>
+public <B>NodeFactory</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createNode(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>createNode</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>The basic node constructor does not allow for incident edges
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeMap.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeMap.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/NodeMap.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,399 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+NodeMap
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.NodeMap class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NodeMap";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class NodeMap</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.NodeMap</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>NodeMap</B><DT>extends java.lang.Object</DL>
+
+<P>
+A map of nodes, indexed by the coordinate of the node
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#NodeMap(com.vividsolutions.jts.geomgraph.NodeFactory)">NodeMap</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>&nbsp;nodeFact)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a node for the start point of this EdgeEnd
+ (if one does not already exist in this map).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#addNode(com.vividsolutions.jts.geom.Coordinate)">addNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method expects that a node has a coordinate value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#addNode(com.vividsolutions.jts.geomgraph.Node)">addNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#find(com.vividsolutions.jts.geom.Coordinate)">find</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#getBoundaryNodes(int)">getBoundaryNodes</A></B>(int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html#values()">values</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NodeMap(com.vividsolutions.jts.geomgraph.NodeFactory)"><!-- --></A><H3>
+NodeMap</H3>
+<PRE>
+public <B>NodeMap</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>&nbsp;nodeFact)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="addNode(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+addNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>addNode</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>This method expects that a node has a coordinate value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNode(com.vividsolutions.jts.geomgraph.Node)"><!-- --></A><H3>
+addNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>addNode</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;n)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD>Adds a node for the start point of this EdgeEnd
+ (if one does not already exist in this map).
+ Adds the EdgeEnd to the (possibly new) node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="find(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+find</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>find</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the node if found; null otherwise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="values()"><!-- --></A><H3>
+values</H3>
+<PRE>
+public java.util.Collection <B>values</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBoundaryNodes(int)"><!-- --></A><H3>
+getBoundaryNodes</H3>
+<PRE>
+public java.util.Collection <B>getBoundaryNodes</B>(int&nbsp;geomIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/PlanarGraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/PlanarGraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/PlanarGraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,735 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+PlanarGraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.PlanarGraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PlanarGraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PlanarGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class PlanarGraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.PlanarGraph</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>PlanarGraph</B><DT>extends java.lang.Object</DL>
+
+<P>
+The computation of the <code>IntersectionMatrix</code> relies on the use of a structure
+ called a "topology graph".  The topology graph contains nodes and edges
+ corresponding to the nodes and line segments of a <code>Geometry</code>. Each
+ node and edge in the graph is labeled with its topological location relative to
+ the source geometry.
+ <P>
+ Note that there is no requirement that points of self-intersection be a vertex.
+ Thus to obtain a correct topology graph, <code>Geometry</code>s must be
+ self-noded before constructing their graphs.
+ <P>
+ Two fundamental operations are supported by topology graphs:
+ <UL>
+   <LI>Computing the intersections between all the edges and nodes of a single graph
+   <LI>Computing the intersections between the edges and nodes of two different graphs
+ </UL>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#cga">cga</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#edgeEndList">edgeEndList</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#edges">edges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#nodes">nodes</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#PlanarGraph()">PlanarGraph</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#PlanarGraph(com.vividsolutions.jts.geomgraph.NodeFactory)">PlanarGraph</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>&nbsp;nodeFact)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#addEdges(java.util.List)">addEdges</A></B>(java.util.List&nbsp;edgesToAdd)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a set of edges to the graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#addNode(com.vividsolutions.jts.geom.Coordinate)">addNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#addNode(com.vividsolutions.jts.geomgraph.Node)">addNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#find(com.vividsolutions.jts.geom.Coordinate)">find</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdge(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">findEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the edge whose first two coordinates are p0 and p1</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdgeEnd(com.vividsolutions.jts.geomgraph.Edge)">findEdgeEnd</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the EdgeEnd which has edge e as its base edge
+ (MD 18 Feb 2002 - this should return a pair of edges)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdgeInSameDirection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">findEdgeInSameDirection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the edge which starts at p0 and whose first segment is
+ parallel to p1</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getEdgeEnds()">getEdgeEnds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getEdgeIterator()">getEdgeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getNodeIterator()">getNodeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#getNodes()">getNodes</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#insertEdge(com.vividsolutions.jts.geomgraph.Edge)">insertEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#isBoundaryNode(int, com.vividsolutions.jts.geom.Coordinate)">isBoundaryNode</A></B>(int&nbsp;geomIndex,
+               <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkAllDirectedEdges()">linkAllDirectedEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link the DirectedEdges at the nodes of the graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkResultDirectedEdges()">linkResultDirectedEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link the DirectedEdges at the nodes of the graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkResultDirectedEdges(java.util.Collection)">linkResultDirectedEdges</A></B>(java.util.Collection&nbsp;nodes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For nodes in the Collection, link the DirectedEdges at the node that are in the result.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html#printEdges(java.io.PrintStream)">printEdges</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="cga"><!-- --></A><H3>
+cga</H3>
+<PRE>
+public static final <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A> <B>cga</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="edges"><!-- --></A><H3>
+edges</H3>
+<PRE>
+protected java.util.List <B>edges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="nodes"><!-- --></A><H3>
+nodes</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A> <B>nodes</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="edgeEndList"><!-- --></A><H3>
+edgeEndList</H3>
+<PRE>
+protected java.util.List <B>edgeEndList</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PlanarGraph(com.vividsolutions.jts.geomgraph.NodeFactory)"><!-- --></A><H3>
+PlanarGraph</H3>
+<PRE>
+public <B>PlanarGraph</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>&nbsp;nodeFact)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="PlanarGraph()"><!-- --></A><H3>
+PlanarGraph</H3>
+<PRE>
+public <B>PlanarGraph</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="linkResultDirectedEdges(java.util.Collection)"><!-- --></A><H3>
+linkResultDirectedEdges</H3>
+<PRE>
+public static void <B>linkResultDirectedEdges</B>(java.util.Collection&nbsp;nodes)</PRE>
+<DL>
+<DD>For nodes in the Collection, link the DirectedEdges at the node that are in the result.
+ This allows clients to link only a subset of nodes in the graph, for
+ efficiency (because they know that only a subset is of interest).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeIterator()"><!-- --></A><H3>
+getEdgeIterator</H3>
+<PRE>
+public java.util.Iterator <B>getEdgeIterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeEnds()"><!-- --></A><H3>
+getEdgeEnds</H3>
+<PRE>
+public java.util.Collection <B>getEdgeEnds</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isBoundaryNode(int, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isBoundaryNode</H3>
+<PRE>
+public boolean <B>isBoundaryNode</B>(int&nbsp;geomIndex,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertEdge(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+insertEdge</H3>
+<PRE>
+protected void <B>insertEdge</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodeIterator()"><!-- --></A><H3>
+getNodeIterator</H3>
+<PRE>
+public java.util.Iterator <B>getNodeIterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodes()"><!-- --></A><H3>
+getNodes</H3>
+<PRE>
+public java.util.Collection <B>getNodes</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNode(com.vividsolutions.jts.geomgraph.Node)"><!-- --></A><H3>
+addNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>addNode</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;node)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNode(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+addNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>addNode</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="find(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+find</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>find</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the node if found; null otherwise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addEdges(java.util.List)"><!-- --></A><H3>
+addEdges</H3>
+<PRE>
+public void <B>addEdges</B>(java.util.List&nbsp;edgesToAdd)</PRE>
+<DL>
+<DD>Add a set of edges to the graph.  For each edge two DirectedEdges
+ will be created.  DirectedEdges are NOT linked by this method.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="linkResultDirectedEdges()"><!-- --></A><H3>
+linkResultDirectedEdges</H3>
+<PRE>
+public void <B>linkResultDirectedEdges</B>()</PRE>
+<DL>
+<DD>Link the DirectedEdges at the nodes of the graph.
+ This allows clients to link only a subset of nodes in the graph, for
+ efficiency (because they know that only a subset is of interest).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="linkAllDirectedEdges()"><!-- --></A><H3>
+linkAllDirectedEdges</H3>
+<PRE>
+public void <B>linkAllDirectedEdges</B>()</PRE>
+<DL>
+<DD>Link the DirectedEdges at the nodes of the graph.
+ This allows clients to link only a subset of nodes in the graph, for
+ efficiency (because they know that only a subset is of interest).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEdgeEnd(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+findEdgeEnd</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A> <B>findEdgeEnd</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Returns the EdgeEnd which has edge e as its base edge
+ (MD 18 Feb 2002 - this should return a pair of edges)
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the edge, if found
+    <code>null</code> if the edge was not found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEdge(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+findEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>findEdge</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Returns the edge whose first two coordinates are p0 and p1
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the edge, if found
+    <code>null</code> if the edge was not found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEdgeInSameDirection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+findEdgeInSameDirection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A> <B>findEdgeInSameDirection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Returns the edge which starts at p0 and whose first segment is
+ parallel to p1
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the edge, if found
+    <code>null</code> if the edge was not found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="printEdges(java.io.PrintStream)"><!-- --></A><H3>
+printEdges</H3>
+<PRE>
+public void <B>printEdges</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PlanarGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Position.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Position.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Position.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,336 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Position
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.Position class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Position";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Position.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class Position</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.Position</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Position</B><DT>extends java.lang.Object</DL>
+
+<P>
+A Position indicates the position of a Location relative to a graph component
+ (Node, Edge, or Area).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html#LEFT">LEFT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An indicator that a Location is to the <i>left</i> of a GraphComponent</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html#ON">ON</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An indicator that a Location is <i>on</i> a GraphComponent</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html#RIGHT">RIGHT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An indicator that a Location is to the <i>right</i> of a GraphComponent</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html#Position()">Position</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html#opposite(int)">opposite</A></B>(int&nbsp;position)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns LEFT if the position is RIGHT, RIGHT if the position is LEFT, or the position
+ otherwise.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ON"><!-- --></A><H3>
+ON</H3>
+<PRE>
+public static final int <B>ON</B></PRE>
+<DL>
+<DD>An indicator that a Location is <i>on</i> a GraphComponent
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geomgraph.Position.ON">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="LEFT"><!-- --></A><H3>
+LEFT</H3>
+<PRE>
+public static final int <B>LEFT</B></PRE>
+<DL>
+<DD>An indicator that a Location is to the <i>left</i> of a GraphComponent
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geomgraph.Position.LEFT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="RIGHT"><!-- --></A><H3>
+RIGHT</H3>
+<PRE>
+public static final int <B>RIGHT</B></PRE>
+<DL>
+<DD>An indicator that a Location is to the <i>right</i> of a GraphComponent
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.geomgraph.Position.RIGHT">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Position()"><!-- --></A><H3>
+Position</H3>
+<PRE>
+public <B>Position</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="opposite(int)"><!-- --></A><H3>
+opposite</H3>
+<PRE>
+public static final int <B>opposite</B>(int&nbsp;position)</PRE>
+<DL>
+<DD>Returns LEFT if the position is RIGHT, RIGHT if the position is LEFT, or the position
+ otherwise.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Position.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Quadrant.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Quadrant.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/Quadrant.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,386 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Quadrant
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.Quadrant class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Quadrant";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Quadrant.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class Quadrant</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.Quadrant</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Quadrant</B><DT>extends java.lang.Object</DL>
+
+<P>
+Utility functions for working with quadrants, which are numbered as follows:
+ <pre>
+ 1 | 0
+ --+--
+ 2 | 3
+ <pre>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#Quadrant()">Quadrant</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#commonHalfPlane(int, int)">commonHalfPlane</A></B>(int&nbsp;quad1,
+                int&nbsp;quad2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the right-hand quadrant of the halfplane defined by the two quadrants,
+ or -1 if the quadrants are opposite, or the quadrant if they are identical.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#isInHalfPlane(int, int)">isInHalfPlane</A></B>(int&nbsp;quad,
+              int&nbsp;halfPlane)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the given quadrant lies within the given halfplane (specified
+ by its right-hand quadrant).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#isNorthern(int)">isNorthern</A></B>(int&nbsp;quad)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the given quadrant is 0 or 1.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#isOpposite(int, int)">isOpposite</A></B>(int&nbsp;quad1,
+           int&nbsp;quad2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the quadrants are 1 and 3, or 2 and 4</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#quadrant(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">quadrant</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the quadrant of a directed line segment from p0 to p1.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html#quadrant(double, double)">quadrant</A></B>(double&nbsp;dx,
+         double&nbsp;dy)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the quadrant of a directed line segment (specified as x and y
+ displacements, which cannot both be 0).</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Quadrant()"><!-- --></A><H3>
+Quadrant</H3>
+<PRE>
+public <B>Quadrant</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="quadrant(double, double)"><!-- --></A><H3>
+quadrant</H3>
+<PRE>
+public static int <B>quadrant</B>(double&nbsp;dx,
+                           double&nbsp;dy)</PRE>
+<DL>
+<DD>Returns the quadrant of a directed line segment (specified as x and y
+ displacements, which cannot both be 0).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="quadrant(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+quadrant</H3>
+<PRE>
+public static int <B>quadrant</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Returns the quadrant of a directed line segment from p0 to p1.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isOpposite(int, int)"><!-- --></A><H3>
+isOpposite</H3>
+<PRE>
+public static boolean <B>isOpposite</B>(int&nbsp;quad1,
+                                 int&nbsp;quad2)</PRE>
+<DL>
+<DD>Returns true if the quadrants are 1 and 3, or 2 and 4
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="commonHalfPlane(int, int)"><!-- --></A><H3>
+commonHalfPlane</H3>
+<PRE>
+public static int <B>commonHalfPlane</B>(int&nbsp;quad1,
+                                  int&nbsp;quad2)</PRE>
+<DL>
+<DD>Returns the right-hand quadrant of the halfplane defined by the two quadrants,
+ or -1 if the quadrants are opposite, or the quadrant if they are identical.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInHalfPlane(int, int)"><!-- --></A><H3>
+isInHalfPlane</H3>
+<PRE>
+public static boolean <B>isInHalfPlane</B>(int&nbsp;quad,
+                                    int&nbsp;halfPlane)</PRE>
+<DL>
+<DD>Returns whether the given quadrant lies within the given halfplane (specified
+ by its right-hand quadrant).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNorthern(int)"><!-- --></A><H3>
+isNorthern</H3>
+<PRE>
+public static boolean <B>isNorthern</B>(int&nbsp;quad)</PRE>
+<DL>
+<DD>Returns true if the given quadrant is 0 or 1.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Quadrant.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/TopologyLocation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/TopologyLocation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/TopologyLocation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,626 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+TopologyLocation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.TopologyLocation class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TopologyLocation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyLocation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph</FONT>
+<BR>
+Class TopologyLocation</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.TopologyLocation</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TopologyLocation</B><DT>extends java.lang.Object</DL>
+
+<P>
+A TopologyLocation is the labelling of a
+ GraphComponent's topological relationship to a single Geometry.
+ <p>
+ If the parent component is an area edge, each side and the edge itself
+ have a topological location.  These locations are named
+ <ul>
+ <li> ON: on the edge
+ <li> LEFT: left-hand side of the edge
+ <li> RIGHT: right-hand side
+ </ul>
+ If the parent component is a line edge or node, there is a single
+ topological relationship attribute, ON.
+ <p>
+ The possible values of a topological location are
+ {Location.NONE, Location.EXTERIOR, Location.BOUNDARY, Location.INTERIOR}
+ <p>
+ The labelling is stored in an array location[j] where
+ where j has the values ON, LEFT, RIGHT
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(int)">TopologyLocation</A></B>(int&nbsp;on)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(int[])">TopologyLocation</A></B>(int[]&nbsp;location)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(int, int, int)">TopologyLocation</A></B>(int&nbsp;on,
+                 int&nbsp;left,
+                 int&nbsp;right)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a TopologyLocation specifying how points on, to the left of, and to the
+ right of some GraphComponent relate to some Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(com.vividsolutions.jts.geomgraph.TopologyLocation)">TopologyLocation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>&nbsp;gl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#allPositionsEqual(int)">allPositionsEqual</A></B>(int&nbsp;loc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#flip()">flip</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#get(int)">get</A></B>(int&nbsp;posIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#getLocations()">getLocations</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#isAnyNull()">isAnyNull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#isArea()">isArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#isEqualOnSide(com.vividsolutions.jts.geomgraph.TopologyLocation, int)">isEqualOnSide</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>&nbsp;le,
+              int&nbsp;locIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#isLine()">isLine</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#isNull()">isNull</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#merge(com.vividsolutions.jts.geomgraph.TopologyLocation)">merge</A></B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>&nbsp;gl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge updates only the NULL attributes of this object
+ with the attributes of another.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#setAllLocations(int)">setAllLocations</A></B>(int&nbsp;locValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#setAllLocationsIfNull(int)">setAllLocationsIfNull</A></B>(int&nbsp;locValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#setLocation(int)">setLocation</A></B>(int&nbsp;locValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#setLocation(int, int)">setLocation</A></B>(int&nbsp;locIndex,
+            int&nbsp;locValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#setLocations(int, int, int)">setLocations</A></B>(int&nbsp;on,
+             int&nbsp;left,
+             int&nbsp;right)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TopologyLocation(int[])"><!-- --></A><H3>
+TopologyLocation</H3>
+<PRE>
+public <B>TopologyLocation</B>(int[]&nbsp;location)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TopologyLocation(int, int, int)"><!-- --></A><H3>
+TopologyLocation</H3>
+<PRE>
+public <B>TopologyLocation</B>(int&nbsp;on,
+                        int&nbsp;left,
+                        int&nbsp;right)</PRE>
+<DL>
+<DD>Constructs a TopologyLocation specifying how points on, to the left of, and to the
+ right of some GraphComponent relate to some Geometry. Possible values for the
+ parameters are Location.NULL, Location.EXTERIOR, Location.BOUNDARY,
+ and Location.INTERIOR.
+<P>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A></DL>
+<HR>
+
+<A NAME="TopologyLocation(int)"><!-- --></A><H3>
+TopologyLocation</H3>
+<PRE>
+public <B>TopologyLocation</B>(int&nbsp;on)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TopologyLocation(com.vividsolutions.jts.geomgraph.TopologyLocation)"><!-- --></A><H3>
+TopologyLocation</H3>
+<PRE>
+public <B>TopologyLocation</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>&nbsp;gl)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="get(int)"><!-- --></A><H3>
+get</H3>
+<PRE>
+public int <B>get</B>(int&nbsp;posIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNull()"><!-- --></A><H3>
+isNull</H3>
+<PRE>
+public boolean <B>isNull</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if all locations are NULL</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isAnyNull()"><!-- --></A><H3>
+isAnyNull</H3>
+<PRE>
+public boolean <B>isAnyNull</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if any locations are NULL</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEqualOnSide(com.vividsolutions.jts.geomgraph.TopologyLocation, int)"><!-- --></A><H3>
+isEqualOnSide</H3>
+<PRE>
+public boolean <B>isEqualOnSide</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>&nbsp;le,
+                             int&nbsp;locIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isArea()"><!-- --></A><H3>
+isArea</H3>
+<PRE>
+public boolean <B>isArea</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isLine()"><!-- --></A><H3>
+isLine</H3>
+<PRE>
+public boolean <B>isLine</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="flip()"><!-- --></A><H3>
+flip</H3>
+<PRE>
+public void <B>flip</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAllLocations(int)"><!-- --></A><H3>
+setAllLocations</H3>
+<PRE>
+public void <B>setAllLocations</B>(int&nbsp;locValue)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setAllLocationsIfNull(int)"><!-- --></A><H3>
+setAllLocationsIfNull</H3>
+<PRE>
+public void <B>setAllLocationsIfNull</B>(int&nbsp;locValue)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLocation(int, int)"><!-- --></A><H3>
+setLocation</H3>
+<PRE>
+public void <B>setLocation</B>(int&nbsp;locIndex,
+                        int&nbsp;locValue)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLocation(int)"><!-- --></A><H3>
+setLocation</H3>
+<PRE>
+public void <B>setLocation</B>(int&nbsp;locValue)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocations()"><!-- --></A><H3>
+getLocations</H3>
+<PRE>
+public int[] <B>getLocations</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLocations(int, int, int)"><!-- --></A><H3>
+setLocations</H3>
+<PRE>
+public void <B>setLocations</B>(int&nbsp;on,
+                         int&nbsp;left,
+                         int&nbsp;right)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="allPositionsEqual(int)"><!-- --></A><H3>
+allPositionsEqual</H3>
+<PRE>
+public boolean <B>allPositionsEqual</B>(int&nbsp;loc)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="merge(com.vividsolutions.jts.geomgraph.TopologyLocation)"><!-- --></A><H3>
+merge</H3>
+<PRE>
+public void <B>merge</B>(<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>&nbsp;gl)</PRE>
+<DL>
+<DD>merge updates only the NULL attributes of this object
+ with the attributes of another.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyLocation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,302 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+EdgeSetIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.EdgeSetIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeSetIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeSetIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class EdgeSetIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.EdgeSetIntersector</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>EdgeSetIntersector</B><DT>extends java.lang.Object</DL>
+
+<P>
+An EdgeSetIntersector computes all the intersections between the
+ edges in the set.  It adds the computed intersections to each edge
+ they are found on.  It may be used in two scenarios:
+ <ul>
+ <li>determining the internal intersections between a single set of edges
+ <li>determining the mutual intersections between two different sets of edges
+ </ul>
+ It uses a <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><CODE>SegmentIntersector</CODE></A> to compute the intersections between
+ segments and to record statistics about what kinds of intersections were found.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#EdgeSetIntersector()">EdgeSetIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></B>(java.util.List&nbsp;edges0,
+                     java.util.List&nbsp;edges1,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all mutual intersections between two sets of edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></B>(java.util.List&nbsp;edges,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                     boolean&nbsp;testAllSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeSetIntersector()"><!-- --></A><H3>
+EdgeSetIntersector</H3>
+<PRE>
+public <B>EdgeSetIntersector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public abstract void <B>computeIntersections</B>(java.util.List&nbsp;edges,
+                                          <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                                          boolean&nbsp;testAllSegments)</PRE>
+<DL>
+<DD>Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>edges</CODE> - a list of edges to test for intersections<DD><CODE>si</CODE> - the SegmentIntersector to use<DD><CODE>testAllSegments</CODE> - true if self-intersections are to be tested as well</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public abstract void <B>computeIntersections</B>(java.util.List&nbsp;edges0,
+                                          java.util.List&nbsp;edges1,
+                                          <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD>Computes all mutual intersections between two sets of edges.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeSetIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChain.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChain.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChain.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,258 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChain
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.MonotoneChain class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChain";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChain.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class MonotoneChain</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.MonotoneChain</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChain</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html#MonotoneChain(com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, int)">MonotoneChain</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>&nbsp;mce,
+              int&nbsp;chainIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html#computeIntersections(com.vividsolutions.jts.geomgraph.index.MonotoneChain, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A>&nbsp;mc,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChain(com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, int)"><!-- --></A><H3>
+MonotoneChain</H3>
+<PRE>
+public <B>MonotoneChain</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>&nbsp;mce,
+                     int&nbsp;chainIndex)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIntersections(com.vividsolutions.jts.geomgraph.index.MonotoneChain, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A>&nbsp;mc,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChain.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,374 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChainEdge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChainEdge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class MonotoneChainEdge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChainEdge</B><DT>extends java.lang.Object</DL>
+
+<P>
+MonotoneChains are a way of partitioning the segments of an edge to
+ allow for fast searching of intersections.
+ They have the following properties:
+ <ol>
+ <li>the segments within a monotone chain will never intersect each other
+ <li>the envelope of any contiguous subset of the segments in a monotone chain
+ is simply the envelope of the endpoints of the subset.
+ </ol>
+ Property 1 means that there is no need to test pairs of segments from within
+ the same monotone chain for intersection.
+ Property 2 allows
+ binary search to be used to find the intersection points of two monotone chains.
+ For many types of real-world data, these properties eliminate a large number of
+ segment comparisons, producing substantial speed gains.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#MonotoneChainEdge(com.vividsolutions.jts.geomgraph.Edge)">MonotoneChainEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#computeIntersects(com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersects</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>&nbsp;mce,
+                  <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#computeIntersectsForChain(int, com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, int, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersectsForChain</A></B>(int&nbsp;chainIndex0,
+                          <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>&nbsp;mce,
+                          int&nbsp;chainIndex1,
+                          <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getMaxX(int)">getMaxX</A></B>(int&nbsp;chainIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getMinX(int)">getMinX</A></B>(int&nbsp;chainIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getStartIndexes()">getStartIndexes</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChainEdge(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+MonotoneChainEdge</H3>
+<PRE>
+public <B>MonotoneChainEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getStartIndexes()"><!-- --></A><H3>
+getStartIndexes</H3>
+<PRE>
+public int[] <B>getStartIndexes</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMinX(int)"><!-- --></A><H3>
+getMinX</H3>
+<PRE>
+public double <B>getMinX</B>(int&nbsp;chainIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaxX(int)"><!-- --></A><H3>
+getMaxX</H3>
+<PRE>
+public double <B>getMaxX</B>(int&nbsp;chainIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersects(com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersects</H3>
+<PRE>
+public void <B>computeIntersects</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>&nbsp;mce,
+                              <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersectsForChain(int, com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, int, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersectsForChain</H3>
+<PRE>
+public void <B>computeIntersectsForChain</B>(int&nbsp;chainIndex0,
+                                      <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>&nbsp;mce,
+                                      int&nbsp;chainIndex1,
+                                      <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,290 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChainIndexer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.MonotoneChainIndexer class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChainIndexer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainIndexer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class MonotoneChainIndexer</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.MonotoneChainIndexer</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChainIndexer</B><DT>extends java.lang.Object</DL>
+
+<P>
+MonotoneChains are a way of partitioning the segments of an edge to
+ allow for fast searching of intersections.
+ They have the following properties:
+ <ol>
+ <li>the segments within a monotone chain will never intersect each other
+ <li>the envelope of any contiguous subset of the segments in a monotone chain
+ is simply the envelope of the endpoints of the subset.
+ </ol>
+ Property 1 means that there is no need to test pairs of segments from within
+ the same monotone chain for intersection.
+ Property 2 allows
+ binary search to be used to find the intersection points of two monotone chains.
+ For many types of real-world data, these properties eliminate a large number of
+ segment comparisons, producing substantial speed gains.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html#MonotoneChainIndexer()">MonotoneChainIndexer</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html#getChainStartIndices(com.vividsolutions.jts.geom.Coordinate[])">getChainStartIndices</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html#toIntArray(java.util.List)">toIntArray</A></B>(java.util.List&nbsp;list)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChainIndexer()"><!-- --></A><H3>
+MonotoneChainIndexer</H3>
+<PRE>
+public <B>MonotoneChainIndexer</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toIntArray(java.util.List)"><!-- --></A><H3>
+toIntArray</H3>
+<PRE>
+public static int[] <B>toIntArray</B>(java.util.List&nbsp;list)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getChainStartIndices(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+getChainStartIndices</H3>
+<PRE>
+public int[] <B>getChainStartIndices</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainIndexer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,431 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SegmentIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.SegmentIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class SegmentIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.SegmentIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SegmentIntersector</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#numTests">numTests</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#SegmentIntersector(com.vividsolutions.jts.algorithm.LineIntersector, boolean, boolean)">SegmentIntersector</A></B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                   boolean&nbsp;includeProper,
+                   boolean&nbsp;recordIsolated)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#addIntersections(com.vividsolutions.jts.geomgraph.Edge, int, com.vividsolutions.jts.geomgraph.Edge, int)">addIntersections</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e0,
+                 int&nbsp;segIndex0,
+                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e1,
+                 int&nbsp;segIndex1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by clients of the EdgeIntersector class to test for and add
+ intersections for two segments of the edges being intersected.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#getProperIntersectionPoint()">getProperIntersectionPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#hasIntersection()">hasIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#hasProperInteriorIntersection()">hasProperInteriorIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A proper interior intersection is a proper intersection which is <b>not</b>
+ contained in the set of boundary nodes set for this SegmentIntersector.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#hasProperIntersection()">hasProperIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A proper intersection is an intersection which is interior to at least two
+ line segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#isAdjacentSegments(int, int)">isAdjacentSegments</A></B>(int&nbsp;i1,
+                   int&nbsp;i2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#setBoundaryNodes(java.util.Collection, java.util.Collection)">setBoundaryNodes</A></B>(java.util.Collection&nbsp;bdyNodes0,
+                 java.util.Collection&nbsp;bdyNodes1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="numTests"><!-- --></A><H3>
+numTests</H3>
+<PRE>
+public int <B>numTests</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentIntersector(com.vividsolutions.jts.algorithm.LineIntersector, boolean, boolean)"><!-- --></A><H3>
+SegmentIntersector</H3>
+<PRE>
+public <B>SegmentIntersector</B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                          boolean&nbsp;includeProper,
+                          boolean&nbsp;recordIsolated)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isAdjacentSegments(int, int)"><!-- --></A><H3>
+isAdjacentSegments</H3>
+<PRE>
+public static boolean <B>isAdjacentSegments</B>(int&nbsp;i1,
+                                         int&nbsp;i2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setBoundaryNodes(java.util.Collection, java.util.Collection)"><!-- --></A><H3>
+setBoundaryNodes</H3>
+<PRE>
+public void <B>setBoundaryNodes</B>(java.util.Collection&nbsp;bdyNodes0,
+                             java.util.Collection&nbsp;bdyNodes1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getProperIntersectionPoint()"><!-- --></A><H3>
+getProperIntersectionPoint</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getProperIntersectionPoint</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the proper intersection point, or <code>null</code> if none was found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasIntersection()"><!-- --></A><H3>
+hasIntersection</H3>
+<PRE>
+public boolean <B>hasIntersection</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasProperIntersection()"><!-- --></A><H3>
+hasProperIntersection</H3>
+<PRE>
+public boolean <B>hasProperIntersection</B>()</PRE>
+<DL>
+<DD>A proper intersection is an intersection which is interior to at least two
+ line segments.  Note that a proper intersection is not necessarily
+ in the interior of the entire Geometry, since another edge may have
+ an endpoint equal to the intersection, which according to SFS semantics
+ can result in the point being on the Boundary of the Geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasProperInteriorIntersection()"><!-- --></A><H3>
+hasProperInteriorIntersection</H3>
+<PRE>
+public boolean <B>hasProperInteriorIntersection</B>()</PRE>
+<DL>
+<DD>A proper interior intersection is a proper intersection which is <b>not</b>
+ contained in the set of boundary nodes set for this SegmentIntersector.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addIntersections(com.vividsolutions.jts.geomgraph.Edge, int, com.vividsolutions.jts.geomgraph.Edge, int)"><!-- --></A><H3>
+addIntersections</H3>
+<PRE>
+public void <B>addIntersections</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e0,
+                             int&nbsp;segIndex0,
+                             <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e1,
+                             int&nbsp;segIndex1)</PRE>
+<DL>
+<DD>This method is called by clients of the EdgeIntersector class to test for and add
+ intersections for two segments of the edges being intersected.
+ Note that clients (such as MonotoneChainEdges) may choose not to intersect
+ certain pairs of segments for efficiency reasons.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SimpleEdgeSetIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.SimpleEdgeSetIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleEdgeSetIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleEdgeSetIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class SimpleEdgeSetIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">com.vividsolutions.jts.geomgraph.index.EdgeSetIntersector</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.SimpleEdgeSetIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SimpleEdgeSetIntersector</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></DL>
+
+<P>
+Finds all intersections in one or two sets of edges,
+ using the straightforward method of
+ comparing all segments.
+ This algorithm is too slow for production use, but is useful for testing purposes.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html#SimpleEdgeSetIntersector()">SimpleEdgeSetIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></B>(java.util.List&nbsp;edges0,
+                     java.util.List&nbsp;edges1,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all mutual intersections between two sets of edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></B>(java.util.List&nbsp;edges,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                     boolean&nbsp;testAllSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleEdgeSetIntersector()"><!-- --></A><H3>
+SimpleEdgeSetIntersector</H3>
+<PRE>
+public <B>SimpleEdgeSetIntersector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(java.util.List&nbsp;edges,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                                 boolean&nbsp;testAllSegments)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></B></DD>
+<DD>Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>edges</CODE> - a list of edges to test for intersections<DD><CODE>si</CODE> - the SegmentIntersector to use<DD><CODE>testAllSegments</CODE> - true if self-intersections are to be tested as well</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(java.util.List&nbsp;edges0,
+                                 java.util.List&nbsp;edges1,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></B></DD>
+<DD>Computes all mutual intersections between two sets of edges.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleEdgeSetIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,309 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SimpleMCSweepLineIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.SimpleMCSweepLineIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleMCSweepLineIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleMCSweepLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class SimpleMCSweepLineIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">com.vividsolutions.jts.geomgraph.index.EdgeSetIntersector</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.SimpleMCSweepLineIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SimpleMCSweepLineIntersector</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></DL>
+
+<P>
+Finds all intersections in one or two sets of edges,
+ using an x-axis sweepline algorithm in conjunction with Monotone Chains.
+ While still O(n^2) in the worst case, this algorithm
+ drastically improves the average-case time.
+ The use of MonotoneChains as the items in the index
+ seems to offer an improvement in performance over a sweep-line alone.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html#SimpleMCSweepLineIntersector()">SimpleMCSweepLineIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A SimpleMCSweepLineIntersector creates monotone chains from the edges
+ and compares them using a simple sweep-line along the x-axis.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></B>(java.util.List&nbsp;edges0,
+                     java.util.List&nbsp;edges1,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all mutual intersections between two sets of edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></B>(java.util.List&nbsp;edges,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                     boolean&nbsp;testAllSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleMCSweepLineIntersector()"><!-- --></A><H3>
+SimpleMCSweepLineIntersector</H3>
+<PRE>
+public <B>SimpleMCSweepLineIntersector</B>()</PRE>
+<DL>
+<DD>A SimpleMCSweepLineIntersector creates monotone chains from the edges
+ and compares them using a simple sweep-line along the x-axis.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(java.util.List&nbsp;edges,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                                 boolean&nbsp;testAllSegments)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></B></DD>
+<DD>Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>edges</CODE> - a list of edges to test for intersections<DD><CODE>si</CODE> - the SegmentIntersector to use<DD><CODE>testAllSegments</CODE> - true if self-intersections are to be tested as well</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(java.util.List&nbsp;edges0,
+                                 java.util.List&nbsp;edges1,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></B></DD>
+<DD>Computes all mutual intersections between two sets of edges.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleMCSweepLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SimpleSweepLineIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.SimpleSweepLineIntersector class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleSweepLineIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleSweepLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class SimpleSweepLineIntersector</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">com.vividsolutions.jts.geomgraph.index.EdgeSetIntersector</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.SimpleSweepLineIntersector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SimpleSweepLineIntersector</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></DL>
+
+<P>
+Finds all intersections in one or two sets of edges,
+ using a simple x-axis sweepline algorithm.
+ While still O(n^2) in the worst case, this algorithm
+ drastically improves the average-case time.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html#SimpleSweepLineIntersector()">SimpleSweepLineIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></B>(java.util.List&nbsp;edges0,
+                     java.util.List&nbsp;edges1,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all mutual intersections between two sets of edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></B>(java.util.List&nbsp;edges,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                     boolean&nbsp;testAllSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleSweepLineIntersector()"><!-- --></A><H3>
+SimpleSweepLineIntersector</H3>
+<PRE>
+public <B>SimpleSweepLineIntersector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(java.util.List&nbsp;edges,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si,
+                                 boolean&nbsp;testAllSegments)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></B></DD>
+<DD>Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)">computeIntersections</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>edges</CODE> - a list of edges to test for intersections<DD><CODE>si</CODE> - the SegmentIntersector to use<DD><CODE>testAllSegments</CODE> - true if self-intersections are to be tested as well</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(java.util.List&nbsp;edges0,
+                                 java.util.List&nbsp;edges1,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></B></DD>
+<DD>Computes all mutual intersections between two sets of edges.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleSweepLineIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,452 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SweepLineEvent
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.SweepLineEvent class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweepLineEvent";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineEvent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class SweepLineEvent</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.SweepLineEvent</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SweepLineEvent</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#DELETE">DELETE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#INSERT">INSERT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#SweepLineEvent(java.lang.Object, double, com.vividsolutions.jts.geomgraph.index.SweepLineEvent, java.lang.Object)">SweepLineEvent</A></B>(java.lang.Object&nbsp;edgeSet,
+               double&nbsp;x,
+               <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>&nbsp;insertEvent,
+               java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProjectionEvents are ordered first by their x-value, and then by their eventType.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#getDeleteEventIndex()">getDeleteEventIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#getInsertEvent()">getInsertEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#getObject()">getObject</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#isDelete()">isDelete</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#isInsert()">isInsert</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#setDeleteEventIndex(int)">setDeleteEventIndex</A></B>(int&nbsp;deleteEventIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="INSERT"><!-- --></A><H3>
+INSERT</H3>
+<PRE>
+public static final int <B>INSERT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.geomgraph.index.SweepLineEvent.INSERT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DELETE"><!-- --></A><H3>
+DELETE</H3>
+<PRE>
+public static final int <B>DELETE</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.geomgraph.index.SweepLineEvent.DELETE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SweepLineEvent(java.lang.Object, double, com.vividsolutions.jts.geomgraph.index.SweepLineEvent, java.lang.Object)"><!-- --></A><H3>
+SweepLineEvent</H3>
+<PRE>
+public <B>SweepLineEvent</B>(java.lang.Object&nbsp;edgeSet,
+                      double&nbsp;x,
+                      <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>&nbsp;insertEvent,
+                      java.lang.Object&nbsp;obj)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInsert()"><!-- --></A><H3>
+isInsert</H3>
+<PRE>
+public boolean <B>isInsert</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDelete()"><!-- --></A><H3>
+isDelete</H3>
+<PRE>
+public boolean <B>isDelete</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInsertEvent()"><!-- --></A><H3>
+getInsertEvent</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A> <B>getInsertEvent</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDeleteEventIndex()"><!-- --></A><H3>
+getDeleteEventIndex</H3>
+<PRE>
+public int <B>getDeleteEventIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDeleteEventIndex(int)"><!-- --></A><H3>
+setDeleteEventIndex</H3>
+<PRE>
+public void <B>setDeleteEventIndex</B>(int&nbsp;deleteEventIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getObject()"><!-- --></A><H3>
+getObject</H3>
+<PRE>
+public java.lang.Object <B>getObject</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>ProjectionEvents are ordered first by their x-value, and then by their eventType.
+ It is important that Insert events are sorted before Delete events, so that
+ items whose Insert and Delete events occur at the same x-value will be
+ correctly handled.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineEvent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,296 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SweepLineSegment
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index.SweepLineSegment class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweepLineSegment";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineSegment.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.geomgraph.index</FONT>
+<BR>
+Class SweepLineSegment</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.geomgraph.index.SweepLineSegment</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SweepLineSegment</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#SweepLineSegment(com.vividsolutions.jts.geomgraph.Edge, int)">SweepLineSegment</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+                 int&nbsp;ptIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#computeIntersections(com.vividsolutions.jts.geomgraph.index.SweepLineSegment, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)">computeIntersections</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>&nbsp;ss,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#getMaxX()">getMaxX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#getMinX()">getMinX</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SweepLineSegment(com.vividsolutions.jts.geomgraph.Edge, int)"><!-- --></A><H3>
+SweepLineSegment</H3>
+<PRE>
+public <B>SweepLineSegment</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+                        int&nbsp;ptIndex)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getMinX()"><!-- --></A><H3>
+getMinX</H3>
+<PRE>
+public double <B>getMinX</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaxX()"><!-- --></A><H3>
+getMaxX</H3>
+<PRE>
+public double <B>getMaxX</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersections(com.vividsolutions.jts.geomgraph.index.SweepLineSegment, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><!-- --></A><H3>
+computeIntersections</H3>
+<PRE>
+public void <B>computeIntersections</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>&nbsp;ss,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineSegment.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geomgraph.index
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/package-summary.html" target="classFrame">com.vividsolutions.jts.geomgraph.index</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">EdgeSetIntersector</A>
+<BR>
+<A HREF="MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">MonotoneChain</A>
+<BR>
+<A HREF="MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">MonotoneChainEdge</A>
+<BR>
+<A HREF="MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">MonotoneChainIndexer</A>
+<BR>
+<A HREF="SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SegmentIntersector</A>
+<BR>
+<A HREF="SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SimpleEdgeSetIntersector</A>
+<BR>
+<A HREF="SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SimpleMCSweepLineIntersector</A>
+<BR>
+<A HREF="SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SimpleSweepLineIntersector</A>
+<BR>
+<A HREF="SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SweepLineEvent</A>
+<BR>
+<A HREF="SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index" target="classFrame">SweepLineSegment</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geomgraph.index
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph.index package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geomgraph.index";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.geomgraph.index
+</H2>
+Contains classes that implement indexes for performing noding on geometry graph edges.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A></B></TD>
+<TD>An EdgeSetIntersector computes all the intersections between the
+ edges in the set.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A></B></TD>
+<TD>MonotoneChains are a way of partitioning the segments of an edge to
+ allow for fast searching of intersections.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainIndexer</A></B></TD>
+<TD>MonotoneChains are a way of partitioning the segments of an edge to
+ allow for fast searching of intersections.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A></B></TD>
+<TD>Finds all intersections in one or two sets of edges,
+ using the straightforward method of
+ comparing all segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A></B></TD>
+<TD>Finds all intersections in one or two sets of edges,
+ using an x-axis sweepline algorithm in conjunction with Monotone Chains.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A></B></TD>
+<TD>Finds all intersections in one or two sets of edges,
+ using a simple x-axis sweepline algorithm.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.geomgraph.index Description
+</H2>
+
+<P>
+Contains classes that implement indexes for performing noding on geometry graph edges.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/index/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geomgraph.index Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geomgraph.index Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.geomgraph.index
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>EdgeSetIntersector</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleEdgeSetIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleMCSweepLineIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleSweepLineIntersector</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChain</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChainEdge</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChainIndexer</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SegmentIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SweepLineEvent</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SweepLineSegment</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geomgraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/geomgraph/package-summary.html" target="classFrame">com.vividsolutions.jts.geomgraph</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Depth.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Depth</A>
+<BR>
+<A HREF="DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">DirectedEdge</A>
+<BR>
+<A HREF="DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">DirectedEdgeStar</A>
+<BR>
+<A HREF="Edge.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Edge</A>
+<BR>
+<A HREF="EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeEnd</A>
+<BR>
+<A HREF="EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeEndStar</A>
+<BR>
+<A HREF="EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeIntersection</A>
+<BR>
+<A HREF="EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeIntersectionList</A>
+<BR>
+<A HREF="EdgeList.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeList</A>
+<BR>
+<A HREF="EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeNodingValidator</A>
+<BR>
+<A HREF="EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">EdgeRing</A>
+<BR>
+<A HREF="GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">GeometryGraph</A>
+<BR>
+<A HREF="GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">GraphComponent</A>
+<BR>
+<A HREF="Label.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Label</A>
+<BR>
+<A HREF="Node.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Node</A>
+<BR>
+<A HREF="NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">NodeFactory</A>
+<BR>
+<A HREF="NodeMap.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">NodeMap</A>
+<BR>
+<A HREF="PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">PlanarGraph</A>
+<BR>
+<A HREF="Position.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Position</A>
+<BR>
+<A HREF="Quadrant.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">Quadrant</A>
+<BR>
+<A HREF="TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph" target="classFrame">TopologyLocation</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,261 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geomgraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.geomgraph package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geomgraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/util/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.geomgraph
+</H2>
+Contains classes that implement topology graphs.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A></B></TD>
+<TD>A Depth object records the topological depth of the sides
+ of an Edge for up to two Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A></B></TD>
+<TD>A DirectedEdgeStar is an ordered list of <b>outgoing</b> DirectedEdges around a node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></B></TD>
+<TD>Models the end of an edge incident on a node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></B></TD>
+<TD>A EdgeEndStar is an ordered list of EdgeEnds around a node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A></B></TD>
+<TD>Represents a point on an
+ edge which intersects with another edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A></B></TD>
+<TD>A list of edge intersections along an <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A></B></TD>
+<TD>A EdgeList is a list of Edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph">EdgeNodingValidator</A></B></TD>
+<TD>Validates that a collection of <A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s is correctly noded.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A></B></TD>
+<TD>A GeometryGraph is a graph that models a given Geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+<TD>A GraphComponent is the parent class for the objects'
+ that form a graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></B></TD>
+<TD>A <code>Label</code> indicates the topological relationship of a component
+ of a topology graph to a given <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A></B></TD>
+<TD>A map of nodes, indexed by the coordinate of the node</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A></B></TD>
+<TD>The computation of the <code>IntersectionMatrix</code> relies on the use of a structure
+ called a "topology graph".</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A></B></TD>
+<TD>A Position indicates the position of a Location relative to a graph component
+ (Node, Edge, or Area).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A></B></TD>
+<TD>Utility functions for working with quadrants, which are numbered as follows:
+ </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A></B></TD>
+<TD>A TopologyLocation is the labelling of a
+ GraphComponent's topological relationship to a single Geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.geomgraph Description
+</H2>
+
+<P>
+Contains classes that implement topology graphs.
+<P>
+The Java Topology Suite (JTS) is a Java API that implements a core set of spatial data operations using an explicit precision model and robust geometric algorithms. JTS is intended to be used in the development of applications that support the validation, cleaning, integration and querying of spatial datasets.
+<P>
+JTS attempts to implement the OpenGIS Simple Features Specification (SFS) as accurately as possible.  In some cases the SFS is unclear or omits a specification; in this case JTS attempts to choose a reasonable and consistent alternative.  Differences from and elaborations of the SFS are documented in this specification.
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/util/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/geomgraph/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.geomgraph Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.geomgraph Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/util/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.geomgraph
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph"><B>Depth</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEnd</B></A> (implements java.lang.Comparable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>DirectedEdge</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEndStar</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>DirectedEdgeStar</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeIntersection</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeIntersectionList</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeList</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeNodingValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeRing</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>Edge</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>Node</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>Label</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeFactory</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeMap</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PlanarGraph</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>GeometryGraph</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>Position</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>Quadrant</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph"><B>TopologyLocation</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/util/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ArrayListVisitor.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ArrayListVisitor.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ArrayListVisitor.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+ArrayListVisitor
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.ArrayListVisitor class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ArrayListVisitor";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ArrayListVisitor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index</FONT>
+<BR>
+Class ArrayListVisitor</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.ArrayListVisitor</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ArrayListVisitor</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A></DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/ArrayListVisitor.html#ArrayListVisitor()">ArrayListVisitor</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.ArrayList</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/ArrayListVisitor.html#getItems()">getItems</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/ArrayListVisitor.html#visitItem(java.lang.Object)">visitItem</A></B>(java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ArrayListVisitor()"><!-- --></A><H3>
+ArrayListVisitor</H3>
+<PRE>
+public <B>ArrayListVisitor</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="visitItem(java.lang.Object)"><!-- --></A><H3>
+visitItem</H3>
+<PRE>
+public void <B>visitItem</B>(java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html#visitItem(java.lang.Object)">visitItem</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getItems()"><!-- --></A><H3>
+getItems</H3>
+<PRE>
+public java.util.ArrayList <B>getItems</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ArrayListVisitor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ItemVisitor.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ItemVisitor.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/ItemVisitor.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+ItemVisitor
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.ItemVisitor interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ItemVisitor";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ItemVisitor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index</FONT>
+<BR>
+Interface ItemVisitor</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>ItemVisitor</B></DL>
+
+<P>
+A visitor for items in an index.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html#visitItem(java.lang.Object)">visitItem</A></B>(java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="visitItem(java.lang.Object)"><!-- --></A><H3>
+visitItem</H3>
+<PRE>
+public void <B>visitItem</B>(java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ItemVisitor.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/SpatialIndex.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/SpatialIndex.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/SpatialIndex.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SpatialIndex
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.SpatialIndex interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SpatialIndex";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SpatialIndex.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index</FONT>
+<BR>
+Interface SpatialIndex</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>, <A HREF="../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>SpatialIndex</B></DL>
+
+<P>
+The basic operations supported by classes
+ implementing spatial index algorithms.
+ <p>
+ A spatial index typically provides a primary filter for range rectangle queries.
+ A secondary filter is required to test for exact intersection.
+ The secondary filter may consist of other kinds of tests,
+ such as testing other spatial relationships.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">insert</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a spatial item with an extent specified by the given <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to the index</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope)">query</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Queries the index for all items whose extents intersect the given search <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">query</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+      <A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Queries the index for all items whose extents intersect the given search <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>,
+ and applies an <A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><CODE>ItemVisitor</CODE></A> to them.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a single item from the tree.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Adds a spatial item with an extent specified by the given <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to the index
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD>Queries the index for all items whose extents intersect the given search <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>searchEnv</CODE> - the envelope to query for
+<DT><B>Returns:</B><DD>a list of the items found by the query</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public void <B>query</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                  <A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</PRE>
+<DL>
+<DD>Queries the index for all items whose extents intersect the given search <A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>,
+ and applies an <A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><CODE>ItemVisitor</CODE></A> to them.
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>searchEnv</CODE> - the envelope to query for<DD><CODE>visitor</CODE> - a visitor object to apply to the items found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public boolean <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                      java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Removes a single item from the tree.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>itemEnv</CODE> - the Envelope of the item to remove<DD><CODE>item</CODE> - the item to remove
+<DT><B>Returns:</B><DD><code>true</code> if the item was found</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SpatialIndex.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Bintree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Bintree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Bintree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,444 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Bintree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree.Bintree class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Bintree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Bintree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.bintree</FONT>
+<BR>
+Class Bintree</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.bintree.Bintree</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Bintree</B><DT>extends java.lang.Object</DL>
+
+<P>
+An <code>BinTree</code> (or "Binary Interval Tree")
+ is a 1-dimensional version of a quadtree.
+ It indexes 1-dimensional intervals (which of course may
+ be the projection of 2-D objects on an axis).
+ It supports range searching
+ (where the range may be a single point).
+ <p>
+ This implementation does not require specifying the extent of the inserted
+ items beforehand.  It will automatically expand to accomodate any extent
+ of dataset.
+ <p>
+ The bintree structure is used to provide a primary filter
+ for interval queries.  The query() method returns a list of
+ all objects which <i>may</i> intersect the query interval.
+ Note that it may return objects which do not in fact intersect.
+ A secondary filter is required to test for exact intersection.
+ Of course, this secondary filter may consist of other tests besides
+ intersection, such as testing other kinds of spatial relationships.
+ <p>
+ This index is different to the Interval Tree of Edelsbrunner
+ or the Segment Tree of Bentley.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#Bintree()">Bintree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#depth()">depth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#ensureExtent(com.vividsolutions.jts.index.bintree.Interval, double)">ensureExtent</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval,
+             double&nbsp;minExtent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ensure that the Interval for the inserted item has non-zero extents.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#insert(com.vividsolutions.jts.index.bintree.Interval, java.lang.Object)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#nodeSize()">nodeSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the total number of nodes in the tree</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#query(double)">query</A></B>(double&nbsp;x)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#query(com.vividsolutions.jts.index.bintree.Interval)">query</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min and max may be the same value</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#query(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)">query</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+      java.util.Collection&nbsp;foundItems)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Bintree()"><!-- --></A><H3>
+Bintree</H3>
+<PRE>
+public <B>Bintree</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ensureExtent(com.vividsolutions.jts.index.bintree.Interval, double)"><!-- --></A><H3>
+ensureExtent</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A> <B>ensureExtent</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval,
+                                    double&nbsp;minExtent)</PRE>
+<DL>
+<DD>Ensure that the Interval for the inserted item has non-zero extents.
+ Use the current minExtent to pad it, if necessary
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="depth()"><!-- --></A><H3>
+depth</H3>
+<PRE>
+public int <B>depth</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="nodeSize()"><!-- --></A><H3>
+nodeSize</H3>
+<PRE>
+public int <B>nodeSize</B>()</PRE>
+<DL>
+<DD>Compute the total number of nodes in the tree
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of nodes in the tree</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insert(com.vividsolutions.jts.index.bintree.Interval, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(double)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(double&nbsp;x)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD>min and max may be the same value
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public void <B>query</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+                  java.util.Collection&nbsp;foundItems)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Bintree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Interval.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Interval.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Interval.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,533 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Interval
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree.Interval class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Interval";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Interval.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.bintree</FONT>
+<BR>
+Class Interval</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.bintree.Interval</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Interval</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents an (1-dimensional) closed interval on the Real number line.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#max">max</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#min">min</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#Interval()">Interval</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#Interval(double, double)">Interval</A></B>(double&nbsp;min,
+         double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#Interval(com.vividsolutions.jts.index.bintree.Interval)">Interval</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#contains(double)">contains</A></B>(double&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#contains(double, double)">contains</A></B>(double&nbsp;min,
+         double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#contains(com.vividsolutions.jts.index.bintree.Interval)">contains</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#expandToInclude(com.vividsolutions.jts.index.bintree.Interval)">expandToInclude</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#getMax()">getMax</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#getMin()">getMin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#getWidth()">getWidth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#init(double, double)">init</A></B>(double&nbsp;min,
+     double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#overlaps(double, double)">overlaps</A></B>(double&nbsp;min,
+         double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#overlaps(com.vividsolutions.jts.index.bintree.Interval)">overlaps</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="min"><!-- --></A><H3>
+min</H3>
+<PRE>
+public double <B>min</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="max"><!-- --></A><H3>
+max</H3>
+<PRE>
+public double <B>max</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Interval()"><!-- --></A><H3>
+Interval</H3>
+<PRE>
+public <B>Interval</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="Interval(double, double)"><!-- --></A><H3>
+Interval</H3>
+<PRE>
+public <B>Interval</B>(double&nbsp;min,
+                double&nbsp;max)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="Interval(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+Interval</H3>
+<PRE>
+public <B>Interval</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="init(double, double)"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>(double&nbsp;min,
+                 double&nbsp;max)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMin()"><!-- --></A><H3>
+getMin</H3>
+<PRE>
+public double <B>getMin</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMax()"><!-- --></A><H3>
+getMax</H3>
+<PRE>
+public double <B>getMax</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getWidth()"><!-- --></A><H3>
+getWidth</H3>
+<PRE>
+public double <B>getWidth</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandToInclude(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+expandToInclude</H3>
+<PRE>
+public void <B>expandToInclude</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlaps(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+overlaps</H3>
+<PRE>
+public boolean <B>overlaps</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlaps(double, double)"><!-- --></A><H3>
+overlaps</H3>
+<PRE>
+public boolean <B>overlaps</B>(double&nbsp;min,
+                        double&nbsp;max)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(double, double)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(double&nbsp;min,
+                        double&nbsp;max)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(double)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(double&nbsp;p)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Interval.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Key.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Key.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Key.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,340 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Key
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree.Key class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Key";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Key.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.bintree</FONT>
+<BR>
+Class Key</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.bintree.Key</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Key</B><DT>extends java.lang.Object</DL>
+
+<P>
+A Key is a unique identifier for a node in a tree.
+ It contains a lower-left point and a level number. The level number
+ is the power of two for the size of the node envelope
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html#Key(com.vividsolutions.jts.index.bintree.Interval)">Key</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html#computeKey(com.vividsolutions.jts.index.bintree.Interval)">computeKey</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return a square envelope containing the argument envelope,
+ whose extent is a power of two and which is based at a power of 2</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html#computeLevel(com.vividsolutions.jts.index.bintree.Interval)">computeLevel</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html#getInterval()">getInterval</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html#getLevel()">getLevel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html#getPoint()">getPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Key(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+Key</H3>
+<PRE>
+public <B>Key</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeLevel(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+computeLevel</H3>
+<PRE>
+public static int <B>computeLevel</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPoint()"><!-- --></A><H3>
+getPoint</H3>
+<PRE>
+public double <B>getPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLevel()"><!-- --></A><H3>
+getLevel</H3>
+<PRE>
+public int <B>getLevel</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInterval()"><!-- --></A><H3>
+getInterval</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A> <B>getInterval</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeKey(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+computeKey</H3>
+<PRE>
+public void <B>computeKey</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval)</PRE>
+<DL>
+<DD>return a square envelope containing the argument envelope,
+ whose extent is a power of two and which is based at a power of 2
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Key.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Node.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Node.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Node.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,394 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Node
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree.Node class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Node";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.bintree</FONT>
+<BR>
+Class Node</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">com.vividsolutions.jts.index.bintree.NodeBase</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.bintree.Node</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Node</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></DL>
+
+<P>
+A node of a <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#items">items</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#subnode">subnode</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#Node(com.vividsolutions.jts.index.bintree.Interval, int)">Node</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+     int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#createExpanded(com.vividsolutions.jts.index.bintree.Node, com.vividsolutions.jts.index.bintree.Interval)">createExpanded</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>&nbsp;node,
+               <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;addInterval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#createNode(com.vividsolutions.jts.index.bintree.Interval)">createNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#find(com.vividsolutions.jts.index.bintree.Interval)">find</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;searchInterval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the smallest <i>existing</i>
+ node containing the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#getInterval()">getInterval</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#getNode(com.vividsolutions.jts.index.bintree.Interval)">getNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;searchInterval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the subnode containing the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)">isSearchMatch</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#add(java.lang.Object)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItems(java.util.List)">addAllItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)">addAllItemsFromOverlapping</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#getItems()">getItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.index.bintree.Interval, double)">getSubnodeIndex</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Node(com.vividsolutions.jts.index.bintree.Interval, int)"><!-- --></A><H3>
+Node</H3>
+<PRE>
+public <B>Node</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+            int&nbsp;level)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createNode(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A> <B>createNode</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createExpanded(com.vividsolutions.jts.index.bintree.Node, com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+createExpanded</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A> <B>createExpanded</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>&nbsp;node,
+                                  <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;addInterval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInterval()"><!-- --></A><H3>
+getInterval</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A> <B>getInterval</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+isSearchMatch</H3>
+<PRE>
+protected boolean <B>isSearchMatch</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)">isSearchMatch</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNode(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+getNode</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A> <B>getNode</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;searchInterval)</PRE>
+<DL>
+<DD>Returns the subnode containing the envelope.
+ Creates the node if
+ it does not already exist.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="find(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+find</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A> <B>find</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;searchInterval)</PRE>
+<DL>
+<DD>Returns the smallest <i>existing</i>
+ node containing the envelope.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/NodeBase.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/NodeBase.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/NodeBase.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,418 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+NodeBase
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree.NodeBase class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NodeBase";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeBase.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.bintree</FONT>
+<BR>
+Class NodeBase</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.bintree.NodeBase</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>NodeBase</B><DT>extends java.lang.Object</DL>
+
+<P>
+The base class for nodes in a <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#items">items</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#subnode">subnode</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subnodes are numbered as follows:
+
+  0 | 1</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#NodeBase()">NodeBase</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#add(java.lang.Object)">add</A></B>(java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItems(java.util.List)">addAllItems</A></B>(java.util.List&nbsp;items)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)">addAllItemsFromOverlapping</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+                           java.util.Collection&nbsp;resultItems)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#getItems()">getItems</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.index.bintree.Interval, double)">getSubnodeIndex</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+                double&nbsp;centre)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the subnode that wholely contains the given interval.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)">isSearchMatch</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="items"><!-- --></A><H3>
+items</H3>
+<PRE>
+protected java.util.List <B>items</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="subnode"><!-- --></A><H3>
+subnode</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>[] <B>subnode</B></PRE>
+<DL>
+<DD>subnodes are numbered as follows:
+
+  0 | 1
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NodeBase()"><!-- --></A><H3>
+NodeBase</H3>
+<PRE>
+public <B>NodeBase</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getSubnodeIndex(com.vividsolutions.jts.index.bintree.Interval, double)"><!-- --></A><H3>
+getSubnodeIndex</H3>
+<PRE>
+public static int <B>getSubnodeIndex</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+                                  double&nbsp;centre)</PRE>
+<DL>
+<DD>Returns the index of the subnode that wholely contains the given interval.
+ If none does, returns -1.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getItems()"><!-- --></A><H3>
+getItems</H3>
+<PRE>
+public java.util.List <B>getItems</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(java.lang.Object)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addAllItems(java.util.List)"><!-- --></A><H3>
+addAllItems</H3>
+<PRE>
+public java.util.List <B>addAllItems</B>(java.util.List&nbsp;items)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+isSearchMatch</H3>
+<PRE>
+protected abstract boolean <B>isSearchMatch</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addAllItemsFromOverlapping(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)"><!-- --></A><H3>
+addAllItemsFromOverlapping</H3>
+<PRE>
+public java.util.List <B>addAllItemsFromOverlapping</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval,
+                                                 java.util.Collection&nbsp;resultItems)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeBase.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Root.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Root.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/Root.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,314 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Root
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree.Root class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Root";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Root.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.bintree</FONT>
+<BR>
+Class Root</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">com.vividsolutions.jts.index.bintree.NodeBase</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.bintree.Root</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Root</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></DL>
+
+<P>
+The root node of a single <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.
+ It is centred at the origin,
+ and does not have a defined extent.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#items">items</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#subnode">subnode</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html#Root()">Root</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html#insert(com.vividsolutions.jts.index.bintree.Interval, java.lang.Object)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert an item into the tree this is the root of.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)">isSearchMatch</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The root node matches all searches</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#add(java.lang.Object)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItems(java.util.List)">addAllItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)">addAllItemsFromOverlapping</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#getItems()">getItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.index.bintree.Interval, double)">getSubnodeIndex</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Root()"><!-- --></A><H3>
+Root</H3>
+<PRE>
+public <B>Root</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="insert(com.vividsolutions.jts.index.bintree.Interval, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;itemInterval,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Insert an item into the tree this is the root of.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)"><!-- --></A><H3>
+isSearchMatch</H3>
+<PRE>
+protected boolean <B>isSearchMatch</B>(<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>&nbsp;interval)</PRE>
+<DL>
+<DD>The root node matches all searches
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)">isSearchMatch</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Root.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.bintree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.bintree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/index/bintree/package-summary.html" target="classFrame">com.vividsolutions.jts.index.bintree</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Bintree.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Bintree</A>
+<BR>
+<A HREF="Interval.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Interval</A>
+<BR>
+<A HREF="Key.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Key</A>
+<BR>
+<A HREF="Node.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Node</A>
+<BR>
+<A HREF="NodeBase.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">NodeBase</A>
+<BR>
+<A HREF="Root.html" title="class in com.vividsolutions.jts.index.bintree" target="classFrame">Root</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.bintree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.bintree package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.bintree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.index.bintree
+</H2>
+Contains classes that implement a Binary Interval Tree index
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A></B></TD>
+<TD>An <code>BinTree</code> (or "Binary Interval Tree")
+ is a 1-dimensional version of a quadtree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A></B></TD>
+<TD>Represents an (1-dimensional) closed interval on the Real number line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A></B></TD>
+<TD>A Key is a unique identifier for a node in a tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A></B></TD>
+<TD>A node of a <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A></B></TD>
+<TD>The base class for nodes in a <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A></B></TD>
+<TD>The root node of a single <A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.index.bintree Description
+</H2>
+
+<P>
+Contains classes that implement a Binary Interval Tree index
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/bintree/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.bintree Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.bintree Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.index.bintree
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><B>Bintree</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>Interval</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>Key</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>NodeBase</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>Node</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="../../../../../com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree"><B>Root</B></A></UL>
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChain.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChain.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChain.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,483 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChain
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.chain.MonotoneChain class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChain";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChain.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.chain</FONT>
+<BR>
+Class MonotoneChain</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.chain.MonotoneChain</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChain</B><DT>extends java.lang.Object</DL>
+
+<P>
+MonotoneChains are a way of partitioning the segments of a linestring to
+ allow for fast searching of intersections.
+ They have the following properties:
+ <ol>
+ <li>the segments within a monotone chain will never intersect each other
+ <li>the envelope of any contiguous subset of the segments in a monotone chain
+ is equal to the envelope of the endpoints of the subset.
+ </ol>
+ Property 1 means that there is no need to test pairs of segments from within
+ the same monotone chain for intersection.
+ Property 2 allows
+ binary search to be used to find the intersection points of two monotone chains.
+ For many types of real-world data, these properties eliminate a large number of
+ segment comparisons, producing substantial speed gains.
+ <p>
+ One of the goals of this implementation of MonotoneChains is to be
+ as space and time efficient as possible. One design choice that aids this
+ is that a MonotoneChain is based on a subarray of a list of points.
+ This means that new arrays of points (potentially very large) do not
+ have to be allocated.
+ <p>
+
+ MonotoneChains support the following kinds of queries:
+ <ul>
+ <li>Envelope select: determine all the segments in the chain which
+ intersect a given envelope
+ <li>Overlap: determine all the pairs of segments in two chains whose
+ envelopes overlap
+ </ul>
+
+ This implementation of MonotoneChains uses the concept of internal iterators
+ to return the resultsets for the above queries.
+ This has time and space advantages, since it
+ is not necessary to build lists of instantiated objects to represent the segments
+ returned by the query.
+ However, it does mean that the queries are not thread-safe.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#MonotoneChain(com.vividsolutions.jts.geom.Coordinate[], int, int, java.lang.Object)">MonotoneChain</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+              int&nbsp;start,
+              int&nbsp;end,
+              java.lang.Object&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#computeOverlaps(com.vividsolutions.jts.index.chain.MonotoneChain, com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction)">computeOverlaps</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc,
+                <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>&nbsp;mco)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getContext()">getContext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the subsequence of coordinates forming this chain.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getEndIndex()">getEndIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getEnvelope()">getEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getId()">getId</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getLineSegment(int, com.vividsolutions.jts.geom.LineSegment)">getLineSegment</A></B>(int&nbsp;index,
+               <A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#getStartIndex()">getStartIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#select(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.chain.MonotoneChainSelectAction)">select</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+       <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>&nbsp;mcs)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determine all the line segments in the chain whose envelopes overlap
+ the searchEnvelope, and process them</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html#setId(int)">setId</A></B>(int&nbsp;id)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChain(com.vividsolutions.jts.geom.Coordinate[], int, int, java.lang.Object)"><!-- --></A><H3>
+MonotoneChain</H3>
+<PRE>
+public <B>MonotoneChain</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+                     int&nbsp;start,
+                     int&nbsp;end,
+                     java.lang.Object&nbsp;context)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setId(int)"><!-- --></A><H3>
+setId</H3>
+<PRE>
+public void <B>setId</B>(int&nbsp;id)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getId()"><!-- --></A><H3>
+getId</H3>
+<PRE>
+public int <B>getId</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getContext()"><!-- --></A><H3>
+getContext</H3>
+<PRE>
+public java.lang.Object <B>getContext</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelope()"><!-- --></A><H3>
+getEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getEnvelope</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getStartIndex()"><!-- --></A><H3>
+getStartIndex</H3>
+<PRE>
+public int <B>getStartIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEndIndex()"><!-- --></A><H3>
+getEndIndex</H3>
+<PRE>
+public int <B>getEndIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLineSegment(int, com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+getLineSegment</H3>
+<PRE>
+public void <B>getLineSegment</B>(int&nbsp;index,
+                           <A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;ls)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD>Return the subsequence of coordinates forming this chain.
+ Allocates a new array to hold the Coordinates
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="select(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.chain.MonotoneChainSelectAction)"><!-- --></A><H3>
+select</H3>
+<PRE>
+public void <B>select</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                   <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>&nbsp;mcs)</PRE>
+<DL>
+<DD>Determine all the line segments in the chain whose envelopes overlap
+ the searchEnvelope, and process them
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeOverlaps(com.vividsolutions.jts.index.chain.MonotoneChain, com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction)"><!-- --></A><H3>
+computeOverlaps</H3>
+<PRE>
+public void <B>computeOverlaps</B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc,
+                            <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>&nbsp;mco)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChain.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,328 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChainBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.chain.MonotoneChainBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChainBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.chain</FONT>
+<BR>
+Class MonotoneChainBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.chain.MonotoneChainBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChainBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+A MonotoneChainBuilder implements functions to determine the monotone chains
+ in a sequence of points.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#MonotoneChainBuilder()">MonotoneChainBuilder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#getChains(com.vividsolutions.jts.geom.Coordinate[])">getChains</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#getChains(com.vividsolutions.jts.geom.Coordinate[], java.lang.Object)">getChains</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+          java.lang.Object&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a list of the <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s
+ for the given list of coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#getChainStartIndices(com.vividsolutions.jts.geom.Coordinate[])">getChainStartIndices</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an array containing lists of start/end indexes of the monotone chains
+ for the given list of coordinates.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#toIntArray(java.util.List)">toIntArray</A></B>(java.util.List&nbsp;list)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChainBuilder()"><!-- --></A><H3>
+MonotoneChainBuilder</H3>
+<PRE>
+public <B>MonotoneChainBuilder</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toIntArray(java.util.List)"><!-- --></A><H3>
+toIntArray</H3>
+<PRE>
+public static int[] <B>toIntArray</B>(java.util.List&nbsp;list)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getChains(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+getChains</H3>
+<PRE>
+public static java.util.List <B>getChains</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getChains(com.vividsolutions.jts.geom.Coordinate[], java.lang.Object)"><!-- --></A><H3>
+getChains</H3>
+<PRE>
+public static java.util.List <B>getChains</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+                                       java.lang.Object&nbsp;context)</PRE>
+<DL>
+<DD>Return a list of the <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s
+ for the given list of coordinates.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getChainStartIndices(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+getChainStartIndices</H3>
+<PRE>
+public static int[] <B>getChainStartIndices</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Return an array containing lists of start/end indexes of the monotone chains
+ for the given list of coordinates.
+ The last entry in the array points to the end point of the point array,
+ for use as a sentinel.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,344 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChainOverlapAction
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChainOverlapAction";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainOverlapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.chain</FONT>
+<BR>
+Class MonotoneChainOverlapAction</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder.SegmentOverlapAction</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChainOverlapAction</B><DT>extends java.lang.Object</DL>
+
+<P>
+The action for the internal iterator for performing
+ overlap queries on a MonotoneChain
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlapSeg1">overlapSeg1</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlapSeg2">overlapSeg2</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#MonotoneChainOverlapAction()">MonotoneChainOverlapAction</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlap(com.vividsolutions.jts.geom.LineSegment, com.vividsolutions.jts.geom.LineSegment)">overlap</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg1,
+        <A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is a convenience function which can be overridden to obtain the actual
+ line segments which overlap</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)">overlap</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc1,
+        int&nbsp;start1,
+        <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc2,
+        int&nbsp;start2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This function can be overridden if the original chains are needed</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlapSeg1"><!-- --></A><H3>
+overlapSeg1</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A> <B>overlapSeg1</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="overlapSeg2"><!-- --></A><H3>
+overlapSeg2</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A> <B>overlapSeg2</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChainOverlapAction()"><!-- --></A><H3>
+MonotoneChainOverlapAction</H3>
+<PRE>
+public <B>MonotoneChainOverlapAction</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)"><!-- --></A><H3>
+overlap</H3>
+<PRE>
+public void <B>overlap</B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc1,
+                    int&nbsp;start1,
+                    <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc2,
+                    int&nbsp;start2)</PRE>
+<DL>
+<DD>This function can be overridden if the original chains are needed
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>start1</CODE> - the index of the start of the overlapping segment from mc1<DD><CODE>start2</CODE> - the index of the start of the overlapping segment from mc2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="overlap(com.vividsolutions.jts.geom.LineSegment, com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+overlap</H3>
+<PRE>
+public void <B>overlap</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg1,
+                    <A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg2)</PRE>
+<DL>
+<DD>This is a convenience function which can be overridden to obtain the actual
+ line segments which overlap
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seg1</CODE> - <DD><CODE>seg2</CODE> - </DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainOverlapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,289 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+MonotoneChainSelectAction
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.chain.MonotoneChainSelectAction class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MonotoneChainSelectAction";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainSelectAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.chain</FONT>
+<BR>
+Class MonotoneChainSelectAction</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.chain.MonotoneChainSelectAction</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper.HotPixelSnapAction</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MonotoneChainSelectAction</B><DT>extends java.lang.Object</DL>
+
+<P>
+The action for the internal iterator for performing
+ envelope select queries on a MonotoneChain
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#MonotoneChainSelectAction()">MonotoneChainSelectAction</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#select(com.vividsolutions.jts.geom.LineSegment)">select</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is a convenience function which can be overridden to obtain the actual
+ line segment which is selected</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#select(com.vividsolutions.jts.index.chain.MonotoneChain, int)">select</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc,
+       int&nbsp;start)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This function can be overridden if the original chain is needed</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MonotoneChainSelectAction()"><!-- --></A><H3>
+MonotoneChainSelectAction</H3>
+<PRE>
+public <B>MonotoneChainSelectAction</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="select(com.vividsolutions.jts.index.chain.MonotoneChain, int)"><!-- --></A><H3>
+select</H3>
+<PRE>
+public void <B>select</B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc,
+                   int&nbsp;start)</PRE>
+<DL>
+<DD>This function can be overridden if the original chain is needed
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="select(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+select</H3>
+<PRE>
+public void <B>select</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</PRE>
+<DL>
+<DD>This is a convenience function which can be overridden to obtain the actual
+ line segment which is selected
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seg</CODE> - </DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MonotoneChainSelectAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.chain
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.chain package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-summary.html" target="classFrame">com.vividsolutions.jts.index.chain</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChain</A>
+<BR>
+<A HREF="MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChainBuilder</A>
+<BR>
+<A HREF="MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChainOverlapAction</A>
+<BR>
+<A HREF="MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain" target="classFrame">MonotoneChainSelectAction</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.chain
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.chain package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.chain";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.index.chain
+</H2>
+Contains classes that implement Monotone Chains
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A></B></TD>
+<TD>MonotoneChains are a way of partitioning the segments of a linestring to
+ allow for fast searching of intersections.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A></B></TD>
+<TD>A MonotoneChainBuilder implements functions to determine the monotone chains
+ in a sequence of points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A></B></TD>
+<TD>The action for the internal iterator for performing
+ overlap queries on a MonotoneChain</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A></B></TD>
+<TD>The action for the internal iterator for performing
+ envelope select queries on a MonotoneChain</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.index.chain Description
+</H2>
+
+<P>
+Contains classes that implement Monotone Chains
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/chain/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.chain Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.chain Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.index.chain
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChain</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainOverlapAction</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainSelectAction</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/bintree/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/index/package-summary.html" target="classFrame">com.vividsolutions.jts.index</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ItemVisitor.html" title="interface in com.vividsolutions.jts.index" target="classFrame"><I>ItemVisitor</I></A>
+<BR>
+<A HREF="SpatialIndex.html" title="interface in com.vividsolutions.jts.index" target="classFrame"><I>SpatialIndex</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ArrayListVisitor.html" title="class in com.vividsolutions.jts.index" target="classFrame">ArrayListVisitor</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/bintree/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.index
+</H2>
+Provides classes for various kinds of spatial indexes.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A></B></TD>
+<TD>A visitor for items in an index.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></B></TD>
+<TD>The basic operations supported by classes
+ implementing spatial index algorithms.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.index Description
+</H2>
+
+<P>
+Provides classes for various kinds of spatial indexes.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/bintree/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/bintree/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.index
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.<A HREF="../../../../com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index"><B>ArrayListVisitor</B></A> (implements com.vividsolutions.jts.index.<A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>)
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.index.<A HREF="../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><B>ItemVisitor</B></A><LI TYPE="circle">interface com.vividsolutions.jts.index.<A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><B>SpatialIndex</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/index/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/bintree/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/DoubleBits.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/DoubleBits.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/DoubleBits.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,519 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+DoubleBits
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.DoubleBits class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DoubleBits";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DoubleBits.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class DoubleBits</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.DoubleBits</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>DoubleBits</B><DT>extends java.lang.Object</DL>
+
+<P>
+DoubleBits manipulates Double numbers
+ by using bit manipulation and bit-field extraction.
+ For some operations (such as determining the exponent)
+ this is more accurate than using mathematical operations
+ (which suffer from round-off error).
+ <p>
+ The algorithms and constants in this class
+ apply only to IEEE-754 double-precision floating point format.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#EXPONENT_BIAS">EXPONENT_BIAS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#DoubleBits(double)">DoubleBits</A></B>(double&nbsp;x)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#biasedExponent()">biasedExponent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines the exponent for the number</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#exponent(double)">exponent</A></B>(double&nbsp;d)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#getBit(int)">getBit</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#getDouble()">getDouble</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#getExponent()">getExponent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines the exponent for the number</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#maximumCommonMantissa(double, double)">maximumCommonMantissa</A></B>(double&nbsp;d1,
+                      double&nbsp;d2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#numCommonMantissaBits(com.vividsolutions.jts.index.quadtree.DoubleBits)">numCommonMantissaBits</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>&nbsp;db)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This computes the number of common most-significant bits in the mantissa.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#powerOf2(int)">powerOf2</A></B>(int&nbsp;exp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#toBinaryString(double)">toBinaryString</A></B>(double&nbsp;d)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A representation of the Double bits formatted for easy readability</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#truncateToPowerOfTwo(double)">truncateToPowerOfTwo</A></B>(double&nbsp;d)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html#zeroLowerBits(int)">zeroLowerBits</A></B>(int&nbsp;nBits)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EXPONENT_BIAS"><!-- --></A><H3>
+EXPONENT_BIAS</H3>
+<PRE>
+public static final int <B>EXPONENT_BIAS</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.index.quadtree.DoubleBits.EXPONENT_BIAS">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DoubleBits(double)"><!-- --></A><H3>
+DoubleBits</H3>
+<PRE>
+public <B>DoubleBits</B>(double&nbsp;x)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="powerOf2(int)"><!-- --></A><H3>
+powerOf2</H3>
+<PRE>
+public static double <B>powerOf2</B>(int&nbsp;exp)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="exponent(double)"><!-- --></A><H3>
+exponent</H3>
+<PRE>
+public static int <B>exponent</B>(double&nbsp;d)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="truncateToPowerOfTwo(double)"><!-- --></A><H3>
+truncateToPowerOfTwo</H3>
+<PRE>
+public static double <B>truncateToPowerOfTwo</B>(double&nbsp;d)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toBinaryString(double)"><!-- --></A><H3>
+toBinaryString</H3>
+<PRE>
+public static java.lang.String <B>toBinaryString</B>(double&nbsp;d)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="maximumCommonMantissa(double, double)"><!-- --></A><H3>
+maximumCommonMantissa</H3>
+<PRE>
+public static double <B>maximumCommonMantissa</B>(double&nbsp;d1,
+                                           double&nbsp;d2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDouble()"><!-- --></A><H3>
+getDouble</H3>
+<PRE>
+public double <B>getDouble</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="biasedExponent()"><!-- --></A><H3>
+biasedExponent</H3>
+<PRE>
+public int <B>biasedExponent</B>()</PRE>
+<DL>
+<DD>Determines the exponent for the number
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getExponent()"><!-- --></A><H3>
+getExponent</H3>
+<PRE>
+public int <B>getExponent</B>()</PRE>
+<DL>
+<DD>Determines the exponent for the number
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="zeroLowerBits(int)"><!-- --></A><H3>
+zeroLowerBits</H3>
+<PRE>
+public void <B>zeroLowerBits</B>(int&nbsp;nBits)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBit(int)"><!-- --></A><H3>
+getBit</H3>
+<PRE>
+public int <B>getBit</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="numCommonMantissaBits(com.vividsolutions.jts.index.quadtree.DoubleBits)"><!-- --></A><H3>
+numCommonMantissaBits</H3>
+<PRE>
+public int <B>numCommonMantissaBits</B>(<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>&nbsp;db)</PRE>
+<DL>
+<DD>This computes the number of common most-significant bits in the mantissa.
+ It does not count the hidden bit, which is always 1.
+ It does not determine whether the numbers have the same exponent - if they do
+ not, the value computed by this function is meaningless.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>db</CODE> - 
+<DT><B>Returns:</B><DD>the number of common most-significant mantissa bits</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>A representation of the Double bits formatted for easy readability
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DoubleBits.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/IntervalSize.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/IntervalSize.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/IntervalSize.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+IntervalSize
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.IntervalSize class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IntervalSize";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntervalSize.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class IntervalSize</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.IntervalSize</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>IntervalSize</B><DT>extends java.lang.Object</DL>
+
+<P>
+Provides a test for whether an interval is
+ so small it should be considered as zero for the purposes of
+ inserting it into a binary tree.
+ The reason this check is necessary is that round-off error can
+ cause the algorithm used to subdivide an interval to fail, by
+ computing a midpoint value which does not lie strictly between the
+ endpoints.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html#MIN_BINARY_EXPONENT">MIN_BINARY_EXPONENT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This value is chosen to be a few powers of 2 less than the
+ number of bits available in the double representation (i.e.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html#IntervalSize()">IntervalSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html#isZeroWidth(double, double)">isZeroWidth</A></B>(double&nbsp;min,
+            double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes whether the interval [min, max] is effectively zero width.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MIN_BINARY_EXPONENT"><!-- --></A><H3>
+MIN_BINARY_EXPONENT</H3>
+<PRE>
+public static final int <B>MIN_BINARY_EXPONENT</B></PRE>
+<DL>
+<DD>This value is chosen to be a few powers of 2 less than the
+ number of bits available in the double representation (i.e. 53).
+ This should allow enough extra precision for simple computations to be correct,
+ at least for comparison purposes.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.index.quadtree.IntervalSize.MIN_BINARY_EXPONENT">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IntervalSize()"><!-- --></A><H3>
+IntervalSize</H3>
+<PRE>
+public <B>IntervalSize</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isZeroWidth(double, double)"><!-- --></A><H3>
+isZeroWidth</H3>
+<PRE>
+public static boolean <B>isZeroWidth</B>(double&nbsp;min,
+                                  double&nbsp;max)</PRE>
+<DL>
+<DD>Computes whether the interval [min, max] is effectively zero width.
+ I.e. the width of the interval is so much less than the
+ location of the interval that the midpoint of the interval cannot be
+ represented precisely.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntervalSize.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Key.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Key.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Key.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,359 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Key
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.Key class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Key";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Key.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class Key</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.Key</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Key</B><DT>extends java.lang.Object</DL>
+
+<P>
+A Key is a unique identifier for a node in a quadtree.
+ It contains a lower-left point and a level number. The level number
+ is the power of two for the size of the node envelope
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#Key(com.vividsolutions.jts.geom.Envelope)">Key</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#computeKey(com.vividsolutions.jts.geom.Envelope)">computeKey</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return a square envelope containing the argument envelope,
+ whose extent is a power of two and which is based at a power of 2</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#computeQuadLevel(com.vividsolutions.jts.geom.Envelope)">computeQuadLevel</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#getCentre()">getCentre</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#getEnvelope()">getEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#getLevel()">getLevel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html#getPoint()">getPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Key(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+Key</H3>
+<PRE>
+public <B>Key</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeQuadLevel(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+computeQuadLevel</H3>
+<PRE>
+public static int <B>computeQuadLevel</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPoint()"><!-- --></A><H3>
+getPoint</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLevel()"><!-- --></A><H3>
+getLevel</H3>
+<PRE>
+public int <B>getLevel</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelope()"><!-- --></A><H3>
+getEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getEnvelope</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCentre()"><!-- --></A><H3>
+getCentre</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCentre</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeKey(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+computeKey</H3>
+<PRE>
+public void <B>computeKey</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv)</PRE>
+<DL>
+<DD>return a square envelope containing the argument envelope,
+ whose extent is a power of two and which is based at a power of 2
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Key.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Node.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Node.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Node.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Node
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.Node class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Node";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class Node</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">com.vividsolutions.jts.index.quadtree.NodeBase</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.Node</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Node</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></DL>
+
+<P>
+Represents a node of a <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>.  Nodes contain
+ items which have a spatial extent corresponding to the node's position
+ in the quadtree.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#items">items</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#subnode">subnode</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#Node(com.vividsolutions.jts.geom.Envelope, int)">Node</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env,
+     int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#createExpanded(com.vividsolutions.jts.index.quadtree.Node, com.vividsolutions.jts.geom.Envelope)">createExpanded</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>&nbsp;node,
+               <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;addEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#createNode(com.vividsolutions.jts.geom.Envelope)">createNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#find(com.vividsolutions.jts.geom.Envelope)">find</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the smallest <i>existing</i>
+ node containing the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#getEnvelope()">getEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#getNode(com.vividsolutions.jts.geom.Envelope)">getNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the subquad containing the envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)">isSearchMatch</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#add(java.lang.Object)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItems(java.util.List)">addAllItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.geom.Envelope, java.util.List)">addAllItemsFromOverlapping</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#getItems()">getItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.geom.Coordinate)">getSubnodeIndex</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#hasChildren()">hasChildren</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#hasItems()">hasItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isEmpty()">isEmpty</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isPrunable()">isPrunable</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#visit(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">visit</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Node(com.vividsolutions.jts.geom.Envelope, int)"><!-- --></A><H3>
+Node</H3>
+<PRE>
+public <B>Node</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env,
+            int&nbsp;level)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createNode(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A> <B>createNode</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createExpanded(com.vividsolutions.jts.index.quadtree.Node, com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+createExpanded</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A> <B>createExpanded</B>(<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>&nbsp;node,
+                                  <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;addEnv)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelope()"><!-- --></A><H3>
+getEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getEnvelope</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSearchMatch(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+isSearchMatch</H3>
+<PRE>
+protected boolean <B>isSearchMatch</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)">isSearchMatch</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNode(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+getNode</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A> <B>getNode</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD>Returns the subquad containing the envelope.
+ Creates the subquad if
+ it does not already exist.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="find(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+find</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A> <B>find</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD>Returns the smallest <i>existing</i>
+ node containing the envelope.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/NodeBase.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/NodeBase.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/NodeBase.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,541 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+NodeBase
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.NodeBase class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NodeBase";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeBase.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class NodeBase</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.NodeBase</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>NodeBase</B><DT>extends java.lang.Object</DL>
+
+<P>
+The base class for nodes in a <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#items">items</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#subnode">subnode</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subquads are numbered as follows:
+ </TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#NodeBase()">NodeBase</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#add(java.lang.Object)">add</A></B>(java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItems(java.util.List)">addAllItems</A></B>(java.util.List&nbsp;resultItems)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.geom.Envelope, java.util.List)">addAllItemsFromOverlapping</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                           java.util.List&nbsp;resultItems)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#getItems()">getItems</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.geom.Coordinate)">getSubnodeIndex</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env,
+                <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;centre)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the subquad that wholly contains the given envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#hasChildren()">hasChildren</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#hasItems()">hasItems</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isEmpty()">isEmpty</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isPrunable()">isPrunable</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)">isSearchMatch</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a single item from this subtree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#visit(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">visit</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+      <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="items"><!-- --></A><H3>
+items</H3>
+<PRE>
+protected java.util.List <B>items</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="subnode"><!-- --></A><H3>
+subnode</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>[] <B>subnode</B></PRE>
+<DL>
+<DD>subquads are numbered as follows:
+ <pre>
+  2 | 3
+  --+--
+  0 | 1
+ </pre>
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NodeBase()"><!-- --></A><H3>
+NodeBase</H3>
+<PRE>
+public <B>NodeBase</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getSubnodeIndex(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getSubnodeIndex</H3>
+<PRE>
+public static int <B>getSubnodeIndex</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;env,
+                                  <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;centre)</PRE>
+<DL>
+<DD>Returns the index of the subquad that wholly contains the given envelope.
+ If none does, returns -1.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getItems()"><!-- --></A><H3>
+getItems</H3>
+<PRE>
+public java.util.List <B>getItems</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasItems()"><!-- --></A><H3>
+hasItems</H3>
+<PRE>
+public boolean <B>hasItems</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(java.lang.Object)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public boolean <B>remove</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                      java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Removes a single item from this subtree.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>item</CODE> - the item to remove
+<DT><B>Returns:</B><DD><code>true</code> if the item was found and removed</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isPrunable()"><!-- --></A><H3>
+isPrunable</H3>
+<PRE>
+public boolean <B>isPrunable</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasChildren()"><!-- --></A><H3>
+hasChildren</H3>
+<PRE>
+public boolean <B>hasChildren</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEmpty()"><!-- --></A><H3>
+isEmpty</H3>
+<PRE>
+public boolean <B>isEmpty</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addAllItems(java.util.List)"><!-- --></A><H3>
+addAllItems</H3>
+<PRE>
+public java.util.List <B>addAllItems</B>(java.util.List&nbsp;resultItems)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSearchMatch(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+isSearchMatch</H3>
+<PRE>
+protected abstract boolean <B>isSearchMatch</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addAllItemsFromOverlapping(com.vividsolutions.jts.geom.Envelope, java.util.List)"><!-- --></A><H3>
+addAllItemsFromOverlapping</H3>
+<PRE>
+public void <B>addAllItemsFromOverlapping</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                                       java.util.List&nbsp;resultItems)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="visit(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><!-- --></A><H3>
+visit</H3>
+<PRE>
+public void <B>visit</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                  <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeBase.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Quadtree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Quadtree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Quadtree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,478 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Quadtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.Quadtree class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Quadtree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Quadtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class Quadtree</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.Quadtree</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Quadtree</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></DL>
+
+<P>
+A Quadtree is a spatial index structure for efficient querying
+ of 2D rectangles.  If other kinds of spatial objects
+ need to be indexed they can be represented by their
+ envelopes
+ <p>
+ The quadtree structure is used to provide a primary filter
+ for range rectangle queries.  The query() method returns a list of
+ all objects which <i>may</i> intersect the query rectangle.  Note that
+ it may return objects which do not in fact intersect.
+ A secondary filter is required to test for exact intersection.
+ Of course, this secondary filter may consist of other tests besides
+ intersection, such as testing other kinds of spatial relationships.
+
+ <p>
+ This implementation does not require specifying the extent of the inserted
+ items beforehand.  It will automatically expand to accomodate any extent
+ of dataset.
+ <p>
+ This data structure is also known as an <i>MX-CIF quadtree</i>
+ following the usage of Samet and others.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#Quadtree()">Quadtree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a Quadtree with zero items.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#depth()">depth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of levels in the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#ensureExtent(com.vividsolutions.jts.geom.Envelope, double)">ensureExtent</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+             double&nbsp;minExtent)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ensure that the envelope for the inserted item has non-zero extents.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a spatial item with an extent specified by the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to the index</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#query(com.vividsolutions.jts.geom.Envelope)">query</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Queries the index for all items whose extents intersect the given search <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">query</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+      <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Queries the index for all items whose extents intersect the given search <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>,
+ and applies an <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><CODE>ItemVisitor</CODE></A> to them.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#queryAll()">queryAll</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a list of all items in the Quadtree</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a single item from the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of items in the tree.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Quadtree()"><!-- --></A><H3>
+Quadtree</H3>
+<PRE>
+public <B>Quadtree</B>()</PRE>
+<DL>
+<DD>Constructs a Quadtree with zero items.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ensureExtent(com.vividsolutions.jts.geom.Envelope, double)"><!-- --></A><H3>
+ensureExtent</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>ensureExtent</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                                    double&nbsp;minExtent)</PRE>
+<DL>
+<DD>Ensure that the envelope for the inserted item has non-zero extents.
+ Use the current minExtent to pad the envelope, if necessary
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="depth()"><!-- --></A><H3>
+depth</H3>
+<PRE>
+public int <B>depth</B>()</PRE>
+<DL>
+<DD>Returns the number of levels in the tree.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD>Returns the number of items in the tree.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of items in the tree</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></B></DD>
+<DD>Adds a spatial item with an extent specified by the given <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to the index
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">insert</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public boolean <B>remove</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                      java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Removes a single item from the tree.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>itemEnv</CODE> - the Envelope of the item to remove<DD><CODE>item</CODE> - the item to remove
+<DT><B>Returns:</B><DD><code>true</code> if the item was found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></B></DD>
+<DD>Queries the index for all items whose extents intersect the given search <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope)">query</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>searchEnv</CODE> - the envelope to query for
+<DT><B>Returns:</B><DD>a list of the items found by the query</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public void <B>query</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                  <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></B></DD>
+<DD>Queries the index for all items whose extents intersect the given search <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>,
+ and applies an <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><CODE>ItemVisitor</CODE></A> to them.
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">query</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>searchEnv</CODE> - the envelope to query for<DD><CODE>visitor</CODE> - a visitor object to apply to the items found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="queryAll()"><!-- --></A><H3>
+queryAll</H3>
+<PRE>
+public java.util.List <B>queryAll</B>()</PRE>
+<DL>
+<DD>Return a list of all items in the Quadtree
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Quadtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Root.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Root.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/Root.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,311 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Root
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree.Root class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Root";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Root.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.quadtree</FONT>
+<BR>
+Class Root</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">com.vividsolutions.jts.index.quadtree.NodeBase</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.quadtree.Root</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Root</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></DL>
+
+<P>
+QuadRoot is the root of a single Quadtree.  It is centred at the origin,
+ and does not have a defined extent.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#items">items</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#subnode">subnode</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html#Root()">Root</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert an item into the quadtree this is the root of.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)">isSearchMatch</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#add(java.lang.Object)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItems(java.util.List)">addAllItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.geom.Envelope, java.util.List)">addAllItemsFromOverlapping</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#getItems()">getItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.geom.Coordinate)">getSubnodeIndex</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#hasChildren()">hasChildren</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#hasItems()">hasItems</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isEmpty()">isEmpty</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isPrunable()">isPrunable</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A>, <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#visit(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">visit</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Root()"><!-- --></A><H3>
+Root</H3>
+<PRE>
+public <B>Root</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Insert an item into the quadtree this is the root of.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSearchMatch(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+isSearchMatch</H3>
+<PRE>
+protected boolean <B>isSearchMatch</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)">isSearchMatch</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Root.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.quadtree.NodeBase">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.quadtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-summary.html" target="classFrame">com.vividsolutions.jts.index.quadtree</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">DoubleBits</A>
+<BR>
+<A HREF="IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">IntervalSize</A>
+<BR>
+<A HREF="Key.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Key</A>
+<BR>
+<A HREF="Node.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Node</A>
+<BR>
+<A HREF="NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">NodeBase</A>
+<BR>
+<A HREF="Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Quadtree</A>
+<BR>
+<A HREF="Root.html" title="class in com.vividsolutions.jts.index.quadtree" target="classFrame">Root</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,189 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.quadtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.quadtree package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.quadtree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.index.quadtree
+</H2>
+Contains classes that implement a Quadtree spatial index
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A></B></TD>
+<TD>DoubleBits manipulates Double numbers
+ by using bit manipulation and bit-field extraction.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A></B></TD>
+<TD>Provides a test for whether an interval is
+ so small it should be considered as zero for the purposes of
+ inserting it into a binary tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A></B></TD>
+<TD>A Key is a unique identifier for a node in a quadtree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A></B></TD>
+<TD>Represents a node of a <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A></B></TD>
+<TD>The base class for nodes in a <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A></B></TD>
+<TD>A Quadtree is a spatial index structure for efficient querying
+ of 2D rectangles.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A></B></TD>
+<TD>QuadRoot is the root of a single Quadtree.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.index.quadtree Description
+</H2>
+
+<P>
+Contains classes that implement a Quadtree spatial index
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/quadtree/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.quadtree Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.quadtree Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.index.quadtree
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree"><B>DoubleBits</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>IntervalSize</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Key</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NodeBase</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Node</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Root</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Quadtree</B></A> (implements com.vividsolutions.jts.index.<A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>)
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/chain/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractNode.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractNode.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractNode.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,388 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+AbstractNode
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.AbstractNode class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="AbstractNode";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AbstractNode.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Class AbstractNode</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.strtree.AbstractNode</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>AbstractNode</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></DL>
+
+<P>
+A node of the STR tree. The children of this node are either more nodes
+ (AbstractNodes) or real data (ItemBoundables). If this node contains real data
+ (rather than nodes), then we say that this node is a "leaf node".
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html#AbstractNode(int)">AbstractNode</A></B>(int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an AbstractNode at the given level in the tree</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html#addChildBoundable(com.vividsolutions.jts.index.strtree.Boundable)">addChildBoundable</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>&nbsp;childBoundable)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds either an AbstractNode, or if this is a leaf node, a data object
+ (wrapped in an ItemBoundable)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html#computeBounds()">computeBounds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a representation of space that encloses this Boundable,
+ preferably not much bigger than this Boundable's boundary yet fast to
+ test for intersection with the bounds of other Boundables.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html#getBounds()">getBounds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html#getChildBoundables()">getChildBoundables</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns either child AbstractNodes, or if this is a leaf node, real data (wrapped
+ in ItemBoundables).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html#getLevel()">getLevel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns 0 if this node is a leaf, 1 if a parent of a leaf, and so on; the
+ root node will have the highest level</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="AbstractNode(int)"><!-- --></A><H3>
+AbstractNode</H3>
+<PRE>
+public <B>AbstractNode</B>(int&nbsp;level)</PRE>
+<DL>
+<DD>Constructs an AbstractNode at the given level in the tree
+<P>
+<DT><B>Parameters:</B><DD><CODE>level</CODE> - 0 if this node is a leaf, 1 if a parent of a leaf, and so on; the
+ root node will have the highest level</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getChildBoundables()"><!-- --></A><H3>
+getChildBoundables</H3>
+<PRE>
+public java.util.List <B>getChildBoundables</B>()</PRE>
+<DL>
+<DD>Returns either child AbstractNodes, or if this is a leaf node, real data (wrapped
+ in ItemBoundables).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeBounds()"><!-- --></A><H3>
+computeBounds</H3>
+<PRE>
+protected abstract java.lang.Object <B>computeBounds</B>()</PRE>
+<DL>
+<DD>Returns a representation of space that encloses this Boundable,
+ preferably not much bigger than this Boundable's boundary yet fast to
+ test for intersection with the bounds of other Boundables. The class of
+ object returned depends on the subclass of AbstractSTRtree.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an Envelope (for STRtrees), an Interval (for SIRtrees), or other
+         object (for other subclasses of AbstractSTRtree)<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBounds()"><!-- --></A><H3>
+getBounds</H3>
+<PRE>
+public java.lang.Object <B>getBounds</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></CODE></B></DD>
+<DD>Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables. The class of object returned depends
+ on the subclass of AbstractSTRtree.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html#getBounds()">getBounds</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an Envelope (for STRtrees), an Interval (for SIRtrees), or other object
+ (for other subclasses of AbstractSTRtree)<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLevel()"><!-- --></A><H3>
+getLevel</H3>
+<PRE>
+public int <B>getLevel</B>()</PRE>
+<DL>
+<DD>Returns 0 if this node is a leaf, 1 if a parent of a leaf, and so on; the
+ root node will have the highest level
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addChildBoundable(com.vividsolutions.jts.index.strtree.Boundable)"><!-- --></A><H3>
+addChildBoundable</H3>
+<PRE>
+public void <B>addChildBoundable</B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>&nbsp;childBoundable)</PRE>
+<DL>
+<DD>Adds either an AbstractNode, or if this is a leaf node, a data object
+ (wrapped in an ItemBoundable)
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AbstractNode.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+AbstractSTRtree.IntersectsOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.AbstractSTRtree.IntersectsOp interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="AbstractSTRtree.IntersectsOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AbstractSTRtree.IntersectsOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Interface AbstractSTRtree.IntersectsOp</H2>
+<DL>
+<DT><B>Enclosing interface:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>protected static interface <B>AbstractSTRtree.IntersectsOp</B></DL>
+
+<P>
+A test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html#intersects(java.lang.Object, java.lang.Object)">intersects</A></B>(java.lang.Object&nbsp;aBounds,
+           java.lang.Object&nbsp;bBounds)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For STRtrees, the bounds will be Envelopes; for SIRtrees, Intervals;
+ for other subclasses of AbstractSTRtree, some other class.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="intersects(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(java.lang.Object&nbsp;aBounds,
+                          java.lang.Object&nbsp;bBounds)</PRE>
+<DL>
+<DD>For STRtrees, the bounds will be Envelopes; for SIRtrees, Intervals;
+ for other subclasses of AbstractSTRtree, some other class.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>aBounds</CODE> - the bounds of one spatial object<DD><CODE>bBounds</CODE> - the bounds of another spatial object
+<DT><B>Returns:</B><DD>whether the two bounds intersect</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AbstractSTRtree.IntersectsOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/AbstractSTRtree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,673 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+AbstractSTRtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.AbstractSTRtree class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="AbstractSTRtree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AbstractSTRtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Class AbstractSTRtree</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.strtree.AbstractSTRtree</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>AbstractSTRtree</B><DT>extends java.lang.Object</DL>
+
+<P>
+Base class for STRtree and SIRtree. STR-packed R-trees are described in:
+ P. Rigaux, Michel Scholl and Agnes Voisard. Spatial Databases With
+ Application To GIS. Morgan Kaufmann, San Francisco, 2002.
+ <p>
+ This implementation is based on Boundables rather than just AbstractNodes,
+ because the STR algorithm operates on both nodes and
+ data, both of which are treated here as Boundables.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>STRtree</CODE></A>, 
+<A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>SIRtree</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#root">root</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#AbstractSTRtree(int)">AbstractSTRtree</A></B>(int&nbsp;nodeCapacity)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an AbstractSTRtree with the specified maximum number of child
+ nodes that a node may have</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#boundablesAtLevel(int)">boundablesAtLevel</A></B>(int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#build()">build</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates parent nodes, grandparent nodes, and so forth up to the root
+ node, for the data that has been inserted into the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#compareDoubles(double, double)">compareDoubles</A></B>(double&nbsp;a,
+               double&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createNode(int)">createNode</A></B>(int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createParentBoundables(java.util.List, int)">createParentBoundables</A></B>(java.util.List&nbsp;childBoundables,
+                       int&nbsp;newLevel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sorts the childBoundables then divides them into groups of size M, where
+ M is the node capacity.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth()">depth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth(com.vividsolutions.jts.index.strtree.AbstractNode)">depth</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;java.util.Comparator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getComparator()">getComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected abstract &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getIntersectsOp()">getIntersectsOp</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getNodeCapacity()">getNodeCapacity</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the maximum number of child nodes that a node may have</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getRoot()">getRoot</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#insert(java.lang.Object, java.lang.Object)">insert</A></B>(java.lang.Object&nbsp;bounds,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#lastNode(java.util.List)">lastNode</A></B>(java.util.List&nbsp;nodes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object)">query</A></B>(java.lang.Object&nbsp;searchBounds)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Also builds the tree, if necessary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object, com.vividsolutions.jts.index.ItemVisitor)">query</A></B>(java.lang.Object&nbsp;searchBounds,
+      <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Also builds the tree, if necessary.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#remove(java.lang.Object, java.lang.Object)">remove</A></B>(java.lang.Object&nbsp;searchBounds,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes an item from the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size(com.vividsolutions.jts.index.strtree.AbstractNode)">size</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="root"><!-- --></A><H3>
+root</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A> <B>root</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="AbstractSTRtree(int)"><!-- --></A><H3>
+AbstractSTRtree</H3>
+<PRE>
+public <B>AbstractSTRtree</B>(int&nbsp;nodeCapacity)</PRE>
+<DL>
+<DD>Constructs an AbstractSTRtree with the specified maximum number of child
+ nodes that a node may have
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="build()"><!-- --></A><H3>
+build</H3>
+<PRE>
+public void <B>build</B>()</PRE>
+<DL>
+<DD>Creates parent nodes, grandparent nodes, and so forth up to the root
+ node, for the data that has been inserted into the tree. Can only be
+ called once, and thus can be called only after all of the data has been
+ inserted into the tree.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createNode(int)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+protected abstract <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A> <B>createNode</B>(int&nbsp;level)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createParentBoundables(java.util.List, int)"><!-- --></A><H3>
+createParentBoundables</H3>
+<PRE>
+protected java.util.List <B>createParentBoundables</B>(java.util.List&nbsp;childBoundables,
+                                                int&nbsp;newLevel)</PRE>
+<DL>
+<DD>Sorts the childBoundables then divides them into groups of size M, where
+ M is the node capacity.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="lastNode(java.util.List)"><!-- --></A><H3>
+lastNode</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A> <B>lastNode</B>(java.util.List&nbsp;nodes)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareDoubles(double, double)"><!-- --></A><H3>
+compareDoubles</H3>
+<PRE>
+protected int <B>compareDoubles</B>(double&nbsp;a,
+                             double&nbsp;b)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRoot()"><!-- --></A><H3>
+getRoot</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A> <B>getRoot</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodeCapacity()"><!-- --></A><H3>
+getNodeCapacity</H3>
+<PRE>
+public int <B>getNodeCapacity</B>()</PRE>
+<DL>
+<DD>Returns the maximum number of child nodes that a node may have
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+protected int <B>size</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size(com.vividsolutions.jts.index.strtree.AbstractNode)"><!-- --></A><H3>
+size</H3>
+<PRE>
+protected int <B>size</B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>&nbsp;node)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="depth()"><!-- --></A><H3>
+depth</H3>
+<PRE>
+protected int <B>depth</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="depth(com.vividsolutions.jts.index.strtree.AbstractNode)"><!-- --></A><H3>
+depth</H3>
+<PRE>
+protected int <B>depth</B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>&nbsp;node)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insert(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+protected void <B>insert</B>(java.lang.Object&nbsp;bounds,
+                      java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(java.lang.Object)"><!-- --></A><H3>
+query</H3>
+<PRE>
+protected java.util.List <B>query</B>(java.lang.Object&nbsp;searchBounds)</PRE>
+<DL>
+<DD>Also builds the tree, if necessary.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(java.lang.Object, com.vividsolutions.jts.index.ItemVisitor)"><!-- --></A><H3>
+query</H3>
+<PRE>
+protected void <B>query</B>(java.lang.Object&nbsp;searchBounds,
+                     <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</PRE>
+<DL>
+<DD>Also builds the tree, if necessary.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectsOp()"><!-- --></A><H3>
+getIntersectsOp</H3>
+<PRE>
+protected abstract <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A> <B>getIntersectsOp</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+protected boolean <B>remove</B>(java.lang.Object&nbsp;searchBounds,
+                         java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Removes an item from the tree.
+ (Builds the tree, if necessary.)
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="boundablesAtLevel(int)"><!-- --></A><H3>
+boundablesAtLevel</H3>
+<PRE>
+protected java.util.List <B>boundablesAtLevel</B>(int&nbsp;level)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getComparator()"><!-- --></A><H3>
+getComparator</H3>
+<PRE>
+protected abstract java.util.Comparator <B>getComparator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AbstractSTRtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Boundable.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Boundable.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Boundable.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Boundable
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.Boundable interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Boundable";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Boundable.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Interface Boundable</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>Boundable</B></DL>
+
+<P>
+A spatial object in an AbstractSTRtree.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html#getBounds()">getBounds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getBounds()"><!-- --></A><H3>
+getBounds</H3>
+<PRE>
+public java.lang.Object <B>getBounds</B>()</PRE>
+<DL>
+<DD>Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables. The class of object returned depends
+ on the subclass of AbstractSTRtree.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an Envelope (for STRtrees), an Interval (for SIRtrees), or other object
+ (for other subclasses of AbstractSTRtree)<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Boundable.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Interval.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Interval.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/Interval.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,332 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+Interval
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.Interval class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Interval";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Interval.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Class Interval</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.strtree.Interval</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Interval</B><DT>extends java.lang.Object</DL>
+
+<P>
+A contiguous portion of 1D-space. Used internally by SIRtree.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>SIRtree</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html#Interval(double, double)">Interval</A></B>(double&nbsp;min,
+         double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html#Interval(com.vividsolutions.jts.index.strtree.Interval)">Interval</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html#equals(java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html#expandToInclude(com.vividsolutions.jts.index.strtree.Interval)">expandToInclude</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html#getCentre()">getCentre</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html#intersects(com.vividsolutions.jts.index.strtree.Interval)">intersects</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>&nbsp;other)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Interval(com.vividsolutions.jts.index.strtree.Interval)"><!-- --></A><H3>
+Interval</H3>
+<PRE>
+public <B>Interval</B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>&nbsp;other)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="Interval(double, double)"><!-- --></A><H3>
+Interval</H3>
+<PRE>
+public <B>Interval</B>(double&nbsp;min,
+                double&nbsp;max)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCentre()"><!-- --></A><H3>
+getCentre</H3>
+<PRE>
+public double <B>getCentre</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="expandToInclude(com.vividsolutions.jts.index.strtree.Interval)"><!-- --></A><H3>
+expandToInclude</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A> <B>expandToInclude</B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>&nbsp;other)</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>this</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.index.strtree.Interval)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>&nbsp;other)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Interval.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/ItemBoundable.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/ItemBoundable.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/ItemBoundable.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,299 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+ItemBoundable
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.ItemBoundable class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ItemBoundable";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ItemBoundable.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Class ItemBoundable</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.strtree.ItemBoundable</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ItemBoundable</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></DL>
+
+<P>
+Boundable wrapper for a non-Boundable spatial object. Used internally by
+ AbstractSTRtree.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html#ItemBoundable(java.lang.Object, java.lang.Object)">ItemBoundable</A></B>(java.lang.Object&nbsp;bounds,
+              java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html#getBounds()">getBounds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html#getItem()">getItem</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ItemBoundable(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+ItemBoundable</H3>
+<PRE>
+public <B>ItemBoundable</B>(java.lang.Object&nbsp;bounds,
+                     java.lang.Object&nbsp;item)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getBounds()"><!-- --></A><H3>
+getBounds</H3>
+<PRE>
+public java.lang.Object <B>getBounds</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></CODE></B></DD>
+<DD>Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables. The class of object returned depends
+ on the subclass of AbstractSTRtree.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html#getBounds()">getBounds</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an Envelope (for STRtrees), an Interval (for SIRtrees), or other object
+ (for other subclasses of AbstractSTRtree)<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getItem()"><!-- --></A><H3>
+getItem</H3>
+<PRE>
+public java.lang.Object <B>getItem</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ItemBoundable.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/SIRtree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/SIRtree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/SIRtree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,441 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:51 PST 2006 -->
+<TITLE>
+SIRtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.SIRtree class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SIRtree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SIRtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Class SIRtree</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">com.vividsolutions.jts.index.strtree.AbstractSTRtree</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.strtree.SIRtree</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SIRtree</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></DL>
+
+<P>
+One-dimensional version of an STR-packed R-tree. SIR stands for
+ "Sort-Interval-Recursive". STR-packed R-trees are described in:
+ P. Rigaux, Michel Scholl and Agnes Voisard. Spatial Databases With
+ Application To GIS. Morgan Kaufmann, San Francisco, 2002.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>STRtree</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#root">root</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#SIRtree()">SIRtree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an SIRtree with the default node capacity.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#SIRtree(int)">SIRtree</A></B>(int&nbsp;nodeCapacity)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an SIRtree with the given maximum number of child nodes that
+ a node may have</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#createNode(int)">createNode</A></B>(int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Comparator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#getComparator()">getComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#getIntersectsOp()">getIntersectsOp</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#insert(double, double, java.lang.Object)">insert</A></B>(double&nbsp;x1,
+       double&nbsp;x2,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts an item having the given bounds into the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#query(double)">query</A></B>(double&nbsp;x)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns items whose bounds intersect the given value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html#query(double, double)">query</A></B>(double&nbsp;x1,
+      double&nbsp;x2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns items whose bounds intersect the given bounds.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#boundablesAtLevel(int)">boundablesAtLevel</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#build()">build</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#compareDoubles(double, double)">compareDoubles</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createParentBoundables(java.util.List, int)">createParentBoundables</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth()">depth</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth(com.vividsolutions.jts.index.strtree.AbstractNode)">depth</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getNodeCapacity()">getNodeCapacity</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getRoot()">getRoot</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#insert(java.lang.Object, java.lang.Object)">insert</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#lastNode(java.util.List)">lastNode</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object)">query</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object, com.vividsolutions.jts.index.ItemVisitor)">query</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#remove(java.lang.Object, java.lang.Object)">remove</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size()">size</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size(com.vividsolutions.jts.index.strtree.AbstractNode)">size</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SIRtree()"><!-- --></A><H3>
+SIRtree</H3>
+<PRE>
+public <B>SIRtree</B>()</PRE>
+<DL>
+<DD>Constructs an SIRtree with the default node capacity.
+<P>
+</DL>
+<HR>
+
+<A NAME="SIRtree(int)"><!-- --></A><H3>
+SIRtree</H3>
+<PRE>
+public <B>SIRtree</B>(int&nbsp;nodeCapacity)</PRE>
+<DL>
+<DD>Constructs an SIRtree with the given maximum number of child nodes that
+ a node may have
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createNode(int)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A> <B>createNode</B>(int&nbsp;level)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createNode(int)">createNode</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insert(double, double, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(double&nbsp;x1,
+                   double&nbsp;x2,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Inserts an item having the given bounds into the tree.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(double)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(double&nbsp;x)</PRE>
+<DL>
+<DD>Returns items whose bounds intersect the given value.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(double, double)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(double&nbsp;x1,
+                            double&nbsp;x2)</PRE>
+<DL>
+<DD>Returns items whose bounds intersect the given bounds.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>x1</CODE> - possibly equal to x2</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectsOp()"><!-- --></A><H3>
+getIntersectsOp</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A> <B>getIntersectsOp</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getIntersectsOp()">getIntersectsOp</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getComparator()"><!-- --></A><H3>
+getComparator</H3>
+<PRE>
+protected java.util.Comparator <B>getComparator</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getComparator()">getComparator</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SIRtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/STRtree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/STRtree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/STRtree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,615 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+STRtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree.STRtree class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="STRtree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="STRtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.strtree</FONT>
+<BR>
+Class STRtree</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">com.vividsolutions.jts.index.strtree.AbstractSTRtree</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.strtree.STRtree</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>STRtree</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A><DT>implements <A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></DL>
+
+<P>
+A query-only R-tree created using the Sort-Tile-Recursive (STR) algorithm.
+  For two-dimensional spatial data.
+ <P>
+  The STR packed R-tree is simple to implement and maximizes space
+  utilization; that is, as many leaves as possible are filled to capacity.
+  Overlap between nodes is far less than in a basic R-tree. However, once the
+  tree has been built (explicitly or on the first call to #query), items may
+  not be added or removed.
+ <P>
+ Described in: P. Rigaux, Michel Scholl and Agnes Voisard.
+ <i>Spatial Databases With Application To GIS</i>.
+ Morgan Kaufmann, San Francisco, 2002.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="nested_classes_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Nested classes inherited from class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#root">root</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#STRtree()">STRtree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an STRtree with the default node capacity.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#STRtree(int)">STRtree</A></B>(int&nbsp;nodeCapacity)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an STRtree with the given maximum number of child nodes that
+ a node may have</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#createNode(int)">createNode</A></B>(int&nbsp;level)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#createParentBoundables(java.util.List, int)">createParentBoundables</A></B>(java.util.List&nbsp;childBoundables,
+                       int&nbsp;newLevel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates the parent level for the given child level.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#createParentBoundablesFromVerticalSlice(java.util.List, int)">createParentBoundablesFromVerticalSlice</A></B>(java.util.List&nbsp;childBoundables,
+                                        int&nbsp;newLevel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#depth()">depth</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of items in the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Comparator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#getComparator()">getComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#getIntersectsOp()">getIntersectsOp</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts an item having the given bounds into the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#query(com.vividsolutions.jts.geom.Envelope)">query</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns items whose bounds intersect the given envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">query</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+      <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns items whose bounds intersect the given envelope.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+       java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a single item from the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of items in the tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html#verticalSlices(java.util.List, int)">verticalSlices</A></B>(java.util.List&nbsp;childBoundables,
+               int&nbsp;sliceCount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#boundablesAtLevel(int)">boundablesAtLevel</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#build()">build</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#compareDoubles(double, double)">compareDoubles</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth(com.vividsolutions.jts.index.strtree.AbstractNode)">depth</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getNodeCapacity()">getNodeCapacity</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getRoot()">getRoot</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#insert(java.lang.Object, java.lang.Object)">insert</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#lastNode(java.util.List)">lastNode</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object)">query</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object, com.vividsolutions.jts.index.ItemVisitor)">query</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#remove(java.lang.Object, java.lang.Object)">remove</A>, <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size(com.vividsolutions.jts.index.strtree.AbstractNode)">size</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="STRtree()"><!-- --></A><H3>
+STRtree</H3>
+<PRE>
+public <B>STRtree</B>()</PRE>
+<DL>
+<DD>Constructs an STRtree with the default node capacity.
+<P>
+</DL>
+<HR>
+
+<A NAME="STRtree(int)"><!-- --></A><H3>
+STRtree</H3>
+<PRE>
+public <B>STRtree</B>(int&nbsp;nodeCapacity)</PRE>
+<DL>
+<DD>Constructs an STRtree with the given maximum number of child nodes that
+ a node may have
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createParentBoundables(java.util.List, int)"><!-- --></A><H3>
+createParentBoundables</H3>
+<PRE>
+protected java.util.List <B>createParentBoundables</B>(java.util.List&nbsp;childBoundables,
+                                                int&nbsp;newLevel)</PRE>
+<DL>
+<DD>Creates the parent level for the given child level. First, orders the items
+ by the x-values of the midpoints, and groups them into vertical slices.
+ For each slice, orders the items by the y-values of the midpoints, and
+ group them into runs of size M (the node capacity). For each run, creates
+ a new (parent) node.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createParentBoundables(java.util.List, int)">createParentBoundables</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createParentBoundablesFromVerticalSlice(java.util.List, int)"><!-- --></A><H3>
+createParentBoundablesFromVerticalSlice</H3>
+<PRE>
+protected java.util.List <B>createParentBoundablesFromVerticalSlice</B>(java.util.List&nbsp;childBoundables,
+                                                                 int&nbsp;newLevel)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="verticalSlices(java.util.List, int)"><!-- --></A><H3>
+verticalSlices</H3>
+<PRE>
+protected java.util.List[] <B>verticalSlices</B>(java.util.List&nbsp;childBoundables,
+                                          int&nbsp;sliceCount)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>childBoundables</CODE> - Must be sorted by the x-value of the envelope midpoints</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createNode(int)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A> <B>createNode</B>(int&nbsp;level)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createNode(int)">createNode</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectsOp()"><!-- --></A><H3>
+getIntersectsOp</H3>
+<PRE>
+protected <A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A> <B>getIntersectsOp</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getIntersectsOp()">getIntersectsOp</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><CODE>AbstractSTRtree.IntersectsOp</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                   java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Inserts an item having the given bounds into the tree.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">insert</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.Envelope)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv)</PRE>
+<DL>
+<DD>Returns items whose bounds intersect the given envelope.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope)">query</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>searchEnv</CODE> - the envelope to query for
+<DT><B>Returns:</B><DD>a list of the items found by the query</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public void <B>query</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;searchEnv,
+                  <A HREF="../../../../../com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>&nbsp;visitor)</PRE>
+<DL>
+<DD>Returns items whose bounds intersect the given envelope.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)">query</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>searchEnv</CODE> - the envelope to query for<DD><CODE>visitor</CODE> - a visitor object to apply to the items found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public boolean <B>remove</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>&nbsp;itemEnv,
+                      java.lang.Object&nbsp;item)</PRE>
+<DL>
+<DD>Removes a single item from the tree.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)">remove</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>itemEnv</CODE> - the Envelope of the item to remove<DD><CODE>item</CODE> - the item to remove
+<DT><B>Returns:</B><DD><code>true</code> if the item was found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD>Returns the number of items in the tree.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size()">size</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of items in the tree</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="depth()"><!-- --></A><H3>
+depth</H3>
+<PRE>
+public int <B>depth</B>()</PRE>
+<DL>
+<DD>Returns the number of items in the tree.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth()">depth</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of items in the tree</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getComparator()"><!-- --></A><H3>
+getComparator</H3>
+<PRE>
+protected java.util.Comparator <B>getComparator</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getComparator()">getComparator</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="STRtree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.strtree.AbstractSTRtree">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.strtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-summary.html" target="classFrame">com.vividsolutions.jts.index.strtree</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree" target="classFrame"><I>AbstractSTRtree.IntersectsOp</I></A>
+<BR>
+<A HREF="Boundable.html" title="interface in com.vividsolutions.jts.index.strtree" target="classFrame"><I>Boundable</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">AbstractNode</A>
+<BR>
+<A HREF="AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">AbstractSTRtree</A>
+<BR>
+<A HREF="Interval.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">Interval</A>
+<BR>
+<A HREF="ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">ItemBoundable</A>
+<BR>
+<A HREF="SIRtree.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">SIRtree</A>
+<BR>
+<A HREF="STRtree.html" title="class in com.vividsolutions.jts.index.strtree" target="classFrame">STRtree</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,200 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.strtree
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.strtree package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.strtree";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.index.strtree
+</H2>
+Contains 2-D and 1-D versions of the Sort-Tile-Recursive (STR) tree, a query-only R-tree.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A></B></TD>
+<TD>A test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A></B></TD>
+<TD>A spatial object in an AbstractSTRtree.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A></B></TD>
+<TD>A node of the STR tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A></B></TD>
+<TD>Base class for STRtree and SIRtree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A></B></TD>
+<TD>A contiguous portion of 1D-space.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A></B></TD>
+<TD>Boundable wrapper for a non-Boundable spatial object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A></B></TD>
+<TD>One-dimensional version of an STR-packed R-tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A></B></TD>
+<TD>A query-only R-tree created using the Sort-Tile-Recursive (STR) algorithm.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.index.strtree Description
+</H2>
+
+<P>
+Contains 2-D and 1-D versions of the Sort-Tile-Recursive (STR) tree, a query-only R-tree.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/strtree/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.strtree Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.strtree Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.index.strtree
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree"><B>AbstractNode</B></A> (implements com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>AbstractSTRtree</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>SIRtree</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>STRtree</B></A> (implements com.vividsolutions.jts.index.<A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>)
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>Interval</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>ItemBoundable</B></A> (implements com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>)
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><B>AbstractSTRtree.IntersectsOp</B></A><LI TYPE="circle">interface com.vividsolutions.jts.index.strtree.<A HREF="../../../../../com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree"><B>Boundable</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/quadtree/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineEvent.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineEvent.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineEvent.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,428 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SweepLineEvent
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.sweepline.SweepLineEvent class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweepLineEvent";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineEvent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.sweepline</FONT>
+<BR>
+Class SweepLineEvent</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.sweepline.SweepLineEvent</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SweepLineEvent</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#DELETE">DELETE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#INSERT">INSERT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#SweepLineEvent(double, com.vividsolutions.jts.index.sweepline.SweepLineEvent, com.vividsolutions.jts.index.sweepline.SweepLineInterval)">SweepLineEvent</A></B>(double&nbsp;x,
+               <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>&nbsp;insertEvent,
+               <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;sweepInt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProjectionEvents are ordered first by their x-value, and then by their eventType.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#getDeleteEventIndex()">getDeleteEventIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#getInsertEvent()">getInsertEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#isDelete()">isDelete</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#isInsert()">isInsert</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#setDeleteEventIndex(int)">setDeleteEventIndex</A></B>(int&nbsp;deleteEventIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="INSERT"><!-- --></A><H3>
+INSERT</H3>
+<PRE>
+public static final int <B>INSERT</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.index.sweepline.SweepLineEvent.INSERT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DELETE"><!-- --></A><H3>
+DELETE</H3>
+<PRE>
+public static final int <B>DELETE</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.index.sweepline.SweepLineEvent.DELETE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SweepLineEvent(double, com.vividsolutions.jts.index.sweepline.SweepLineEvent, com.vividsolutions.jts.index.sweepline.SweepLineInterval)"><!-- --></A><H3>
+SweepLineEvent</H3>
+<PRE>
+public <B>SweepLineEvent</B>(double&nbsp;x,
+                      <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>&nbsp;insertEvent,
+                      <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;sweepInt)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInsert()"><!-- --></A><H3>
+isInsert</H3>
+<PRE>
+public boolean <B>isInsert</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDelete()"><!-- --></A><H3>
+isDelete</H3>
+<PRE>
+public boolean <B>isDelete</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInsertEvent()"><!-- --></A><H3>
+getInsertEvent</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A> <B>getInsertEvent</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDeleteEventIndex()"><!-- --></A><H3>
+getDeleteEventIndex</H3>
+<PRE>
+public int <B>getDeleteEventIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDeleteEventIndex(int)"><!-- --></A><H3>
+setDeleteEventIndex</H3>
+<PRE>
+public void <B>setDeleteEventIndex</B>(int&nbsp;deleteEventIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>ProjectionEvents are ordered first by their x-value, and then by their eventType.
+ It is important that Insert events are sorted before Delete events, so that
+ items whose Insert and Delete events occur at the same x-value will be
+ correctly handled.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineEvent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineIndex.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineIndex.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineIndex.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,278 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SweepLineIndex
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.sweepline.SweepLineIndex class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweepLineIndex";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineIndex.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.sweepline</FONT>
+<BR>
+Class SweepLineIndex</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.sweepline.SweepLineIndex</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SweepLineIndex</B><DT>extends java.lang.Object</DL>
+
+<P>
+A sweepline implements a sorted index on a set of intervals.
+ It is used to compute all overlaps between the interval in the index.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html#SweepLineIndex()">SweepLineIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html#add(com.vividsolutions.jts.index.sweepline.SweepLineInterval)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;sweepInt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html#computeOverlaps(com.vividsolutions.jts.index.sweepline.SweepLineOverlapAction)">computeOverlaps</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline">SweepLineOverlapAction</A>&nbsp;action)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SweepLineIndex()"><!-- --></A><H3>
+SweepLineIndex</H3>
+<PRE>
+public <B>SweepLineIndex</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.index.sweepline.SweepLineInterval)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;sweepInt)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeOverlaps(com.vividsolutions.jts.index.sweepline.SweepLineOverlapAction)"><!-- --></A><H3>
+computeOverlaps</H3>
+<PRE>
+public void <B>computeOverlaps</B>(<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline">SweepLineOverlapAction</A>&nbsp;action)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineIndex.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineInterval.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineInterval.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineInterval.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,312 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SweepLineInterval
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.sweepline.SweepLineInterval class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweepLineInterval";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineInterval.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.sweepline</FONT>
+<BR>
+Class SweepLineInterval</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.index.sweepline.SweepLineInterval</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SweepLineInterval</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#SweepLineInterval(double, double)">SweepLineInterval</A></B>(double&nbsp;min,
+                  double&nbsp;max)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#SweepLineInterval(double, double, java.lang.Object)">SweepLineInterval</A></B>(double&nbsp;min,
+                  double&nbsp;max,
+                  java.lang.Object&nbsp;item)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#getItem()">getItem</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#getMax()">getMax</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#getMin()">getMin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SweepLineInterval(double, double)"><!-- --></A><H3>
+SweepLineInterval</H3>
+<PRE>
+public <B>SweepLineInterval</B>(double&nbsp;min,
+                         double&nbsp;max)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="SweepLineInterval(double, double, java.lang.Object)"><!-- --></A><H3>
+SweepLineInterval</H3>
+<PRE>
+public <B>SweepLineInterval</B>(double&nbsp;min,
+                         double&nbsp;max,
+                         java.lang.Object&nbsp;item)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getMin()"><!-- --></A><H3>
+getMin</H3>
+<PRE>
+public double <B>getMin</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMax()"><!-- --></A><H3>
+getMax</H3>
+<PRE>
+public double <B>getMax</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getItem()"><!-- --></A><H3>
+getItem</H3>
+<PRE>
+public java.lang.Object <B>getItem</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineInterval.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SweepLineOverlapAction
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.sweepline.SweepLineOverlapAction interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweepLineOverlapAction";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineOverlapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.index.sweepline</FONT>
+<BR>
+Interface SweepLineOverlapAction</H2>
+<HR>
+<DL>
+<DT>public interface <B>SweepLineOverlapAction</B></DL>
+
+<P>
+An action taken when a <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineIndex</CODE></A> detects that two
+ <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineInterval</CODE></A>s overlap
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html#overlap(com.vividsolutions.jts.index.sweepline.SweepLineInterval, com.vividsolutions.jts.index.sweepline.SweepLineInterval)">overlap</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;s0,
+        <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;s1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlap(com.vividsolutions.jts.index.sweepline.SweepLineInterval, com.vividsolutions.jts.index.sweepline.SweepLineInterval)"><!-- --></A><H3>
+overlap</H3>
+<PRE>
+public void <B>overlap</B>(<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;s0,
+                    <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>&nbsp;s1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweepLineOverlapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.sweepline
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.sweepline package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/package-summary.html" target="classFrame">com.vividsolutions.jts.index.sweepline</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline" target="classFrame"><I>SweepLineOverlapAction</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline" target="classFrame">SweepLineEvent</A>
+<BR>
+<A HREF="SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline" target="classFrame">SweepLineIndex</A>
+<BR>
+<A HREF="SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline" target="classFrame">SweepLineInterval</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,184 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.sweepline
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.index.sweepline package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.sweepline";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.index.sweepline
+</H2>
+Contains classes which implement a sweepline algorithm for scanning geometric data structures.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline">SweepLineOverlapAction</A></B></TD>
+<TD>An action taken when a <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineIndex</CODE></A> detects that two
+ <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineInterval</CODE></A>s overlap</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineIndex</A></B></TD>
+<TD>A sweepline implements a sorted index on a set of intervals.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.index.sweepline Description
+</H2>
+
+<P>
+Contains classes which implement a sweepline algorithm for scanning geometric data structures.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/index/sweepline/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.index.sweepline Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.index.sweepline Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.index.sweepline
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.sweepline.<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineEvent</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.index.sweepline.<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineIndex</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.sweepline.<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineInterval</B></A></UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.index.sweepline.<A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline"><B>SweepLineOverlapAction</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/index/strtree/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteArrayInStream.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteArrayInStream.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteArrayInStream.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,292 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ByteArrayInStream
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.ByteArrayInStream class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ByteArrayInStream";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ByteArrayInStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class ByteArrayInStream</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.ByteArrayInStream</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ByteArrayInStream</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></DL>
+
+<P>
+Allows an array of bytes to be used as an <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>.
+ To optimize memory usage, instances can be reused
+ with different byte arrays.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html#ByteArrayInStream(byte[])">ByteArrayInStream</A></B>(byte[]&nbsp;byteBuffer)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html#read(byte[])">read</A></B>(byte[]&nbsp;buf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html#setBuffer(byte[])">setBuffer</A></B>(byte[]&nbsp;byteBuffer)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ByteArrayInStream(byte[])"><!-- --></A><H3>
+ByteArrayInStream</H3>
+<PRE>
+public <B>ByteArrayInStream</B>(byte[]&nbsp;byteBuffer)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setBuffer(byte[])"><!-- --></A><H3>
+setBuffer</H3>
+<PRE>
+public void <B>setBuffer</B>(byte[]&nbsp;byteBuffer)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(byte[])"><!-- --></A><H3>
+read</H3>
+<PRE>
+public void <B>read</B>(byte[]&nbsp;buf)
+          throws java.io.IOException</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></CODE></B></DD>
+<DD>Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/InStream.html#read(byte[])">read</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to receive the bytes
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE> - if an I/O error occurs</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ByteArrayInStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderDataInStream.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderDataInStream.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderDataInStream.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,382 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ByteOrderDataInStream
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.ByteOrderDataInStream class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ByteOrderDataInStream";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ByteOrderDataInStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class ByteOrderDataInStream</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.ByteOrderDataInStream</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ByteOrderDataInStream</B><DT>extends java.lang.Object</DL>
+
+<P>
+Allows reading a stream of Java primitive datatypes from an underlying
+ <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>,
+ with the representation being in either common byte ordering.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#ByteOrderDataInStream()">ByteOrderDataInStream</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#ByteOrderDataInStream(com.vividsolutions.jts.io.InStream)">ByteOrderDataInStream</A></B>(<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>&nbsp;stream)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;byte</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#readByte()">readByte</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#readDouble()">readDouble</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#readInt()">readInt</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#readLong()">readLong</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#setInStream(com.vividsolutions.jts.io.InStream)">setInStream</A></B>(<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>&nbsp;stream)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allows a single ByteOrderDataInStream to be reused
+ on multiple InStreams.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html#setOrder(int)">setOrder</A></B>(int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ByteOrderDataInStream()"><!-- --></A><H3>
+ByteOrderDataInStream</H3>
+<PRE>
+public <B>ByteOrderDataInStream</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="ByteOrderDataInStream(com.vividsolutions.jts.io.InStream)"><!-- --></A><H3>
+ByteOrderDataInStream</H3>
+<PRE>
+public <B>ByteOrderDataInStream</B>(<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>&nbsp;stream)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setInStream(com.vividsolutions.jts.io.InStream)"><!-- --></A><H3>
+setInStream</H3>
+<PRE>
+public void <B>setInStream</B>(<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>&nbsp;stream)</PRE>
+<DL>
+<DD>Allows a single ByteOrderDataInStream to be reused
+ on multiple InStreams.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>stream</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setOrder(int)"><!-- --></A><H3>
+setOrder</H3>
+<PRE>
+public void <B>setOrder</B>(int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="readByte()"><!-- --></A><H3>
+readByte</H3>
+<PRE>
+public byte <B>readByte</B>()
+              throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="readInt()"><!-- --></A><H3>
+readInt</H3>
+<PRE>
+public int <B>readInt</B>()
+            throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="readLong()"><!-- --></A><H3>
+readLong</H3>
+<PRE>
+public long <B>readLong</B>()
+              throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="readDouble()"><!-- --></A><H3>
+readDouble</H3>
+<PRE>
+public double <B>readDouble</B>()
+                  throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ByteOrderDataInStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderValues.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderValues.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ByteOrderValues.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ByteOrderValues
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.ByteOrderValues class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ByteOrderValues";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ByteOrderValues.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class ByteOrderValues</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.ByteOrderValues</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ByteOrderValues</B><DT>extends java.lang.Object</DL>
+
+<P>
+Methods to read and write primitive Java datatypes from/to byte
+ sequences, allowing the byte order to be specified
+ <p>
+ Similar to the standard Java <code>ByteBuffer</code> class.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#BIG_ENDIAN">BIG_ENDIAN</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#LITTLE_ENDIAN">LITTLE_ENDIAN</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#ByteOrderValues()">ByteOrderValues</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#getDouble(byte[], int)">getDouble</A></B>(byte[]&nbsp;buf,
+          int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#getInt(byte[], int)">getInt</A></B>(byte[]&nbsp;buf,
+       int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#getLong(byte[], int)">getLong</A></B>(byte[]&nbsp;buf,
+        int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#putDouble(double, byte[], int)">putDouble</A></B>(double&nbsp;doubleValue,
+          byte[]&nbsp;buf,
+          int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#putInt(int, byte[], int)">putInt</A></B>(int&nbsp;intValue,
+       byte[]&nbsp;buf,
+       int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html#putLong(long, byte[], int)">putLong</A></B>(long&nbsp;longValue,
+        byte[]&nbsp;buf,
+        int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BIG_ENDIAN"><!-- --></A><H3>
+BIG_ENDIAN</H3>
+<PRE>
+public static final int <B>BIG_ENDIAN</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.ByteOrderValues.BIG_ENDIAN">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="LITTLE_ENDIAN"><!-- --></A><H3>
+LITTLE_ENDIAN</H3>
+<PRE>
+public static final int <B>LITTLE_ENDIAN</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.ByteOrderValues.LITTLE_ENDIAN">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ByteOrderValues()"><!-- --></A><H3>
+ByteOrderValues</H3>
+<PRE>
+public <B>ByteOrderValues</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInt(byte[], int)"><!-- --></A><H3>
+getInt</H3>
+<PRE>
+public static int <B>getInt</B>(byte[]&nbsp;buf,
+                         int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putInt(int, byte[], int)"><!-- --></A><H3>
+putInt</H3>
+<PRE>
+public static void <B>putInt</B>(int&nbsp;intValue,
+                          byte[]&nbsp;buf,
+                          int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLong(byte[], int)"><!-- --></A><H3>
+getLong</H3>
+<PRE>
+public static long <B>getLong</B>(byte[]&nbsp;buf,
+                           int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putLong(long, byte[], int)"><!-- --></A><H3>
+putLong</H3>
+<PRE>
+public static void <B>putLong</B>(long&nbsp;longValue,
+                           byte[]&nbsp;buf,
+                           int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDouble(byte[], int)"><!-- --></A><H3>
+getDouble</H3>
+<PRE>
+public static double <B>getDouble</B>(byte[]&nbsp;buf,
+                               int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putDouble(double, byte[], int)"><!-- --></A><H3>
+putDouble</H3>
+<PRE>
+public static void <B>putDouble</B>(double&nbsp;doubleValue,
+                             byte[]&nbsp;buf,
+                             int&nbsp;byteOrder)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ByteOrderValues.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InStream.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InStream.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InStream.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+InStream
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.InStream interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="InStream";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Interface InStream</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A>, <A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io">InputStreamInStream</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>InStream</B></DL>
+
+<P>
+A interface for classes providing an input stream of bytes.
+ This interface is similar to the Java <CODE>InputStream</CODE>,
+ but with a narrower interface to make it easier to implement.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/InStream.html#read(byte[])">read</A></B>(byte[]&nbsp;buf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="read(byte[])"><!-- --></A><H3>
+read</H3>
+<PRE>
+public void <B>read</B>(byte[]&nbsp;buf)
+          throws java.io.IOException</PRE>
+<DL>
+<DD>Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to receive the bytes
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE> - if an I/O error occurs</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InputStreamInStream.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InputStreamInStream.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/InputStreamInStream.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+InputStreamInStream
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.InputStreamInStream class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="InputStreamInStream";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InputStreamInStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class InputStreamInStream</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.InputStreamInStream</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>InputStreamInStream</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></DL>
+
+<P>
+An adapter to allow an <CODE>InputStream</CODE> to be used as an <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html#InputStreamInStream(java.io.InputStream)">InputStreamInStream</A></B>(java.io.InputStream&nbsp;is)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html#read(byte[])">read</A></B>(byte[]&nbsp;buf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="InputStreamInStream(java.io.InputStream)"><!-- --></A><H3>
+InputStreamInStream</H3>
+<PRE>
+public <B>InputStreamInStream</B>(java.io.InputStream&nbsp;is)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="read(byte[])"><!-- --></A><H3>
+read</H3>
+<PRE>
+public void <B>read</B>(byte[]&nbsp;buf)
+          throws java.io.IOException</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></CODE></B></DD>
+<DD>Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/InStream.html#read(byte[])">read</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to receive the bytes
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE> - if an I/O error occurs</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InputStreamInStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutStream.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutStream.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutStream.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,224 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OutStream
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.OutStream interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OutStream";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OutStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Interface OutStream</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io">OutputStreamOutStream</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>OutStream</B></DL>
+
+<P>
+A interface for classes providing an output stream of bytes.
+ This interface is similar to the Java <CODE>OutputStream</CODE>,
+ but with a narrower interface to make it easier to implement.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/OutStream.html#write(byte[], int)">write</A></B>(byte[]&nbsp;buf,
+      int&nbsp;len)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="write(byte[], int)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public void <B>write</B>(byte[]&nbsp;buf,
+                  int&nbsp;len)
+           throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OutStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutputStreamOutStream.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutputStreamOutStream.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/OutputStreamOutStream.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OutputStreamOutStream
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.OutputStreamOutStream class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OutputStreamOutStream";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OutputStreamOutStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class OutputStreamOutStream</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.OutputStreamOutStream</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>OutputStreamOutStream</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A></DL>
+
+<P>
+An adapter to allow an <CODE>OutputStream</CODE> to be used as an <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A>
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html#OutputStreamOutStream(java.io.OutputStream)">OutputStreamOutStream</A></B>(java.io.OutputStream&nbsp;os)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html#write(byte[], int)">write</A></B>(byte[]&nbsp;buf,
+      int&nbsp;len)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OutputStreamOutStream(java.io.OutputStream)"><!-- --></A><H3>
+OutputStreamOutStream</H3>
+<PRE>
+public <B>OutputStreamOutStream</B>(java.io.OutputStream&nbsp;os)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="write(byte[], int)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public void <B>write</B>(byte[]&nbsp;buf,
+                  int&nbsp;len)
+           throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/OutStream.html#write(byte[], int)">write</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OutputStreamOutStream.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ParseException.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ParseException.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/ParseException.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,259 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ParseException
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.ParseException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ParseException";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ParseException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class ParseException</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Throwable
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Exception
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.ParseException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ParseException</B><DT>extends java.lang.Exception</DL>
+
+<P>
+Thrown by a <code>WKTReader</code> when a parsing problem occurs.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.io.ParseException">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html#ParseException(java.lang.Exception)">ParseException</A></B>(java.lang.Exception&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>ParseException</code> with <code>e</code>s detail message.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html#ParseException(java.lang.String)">ParseException</A></B>(java.lang.String&nbsp;message)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>ParseException</code> with the given detail message.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Throwable</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ParseException(java.lang.String)"><!-- --></A><H3>
+ParseException</H3>
+<PRE>
+public <B>ParseException</B>(java.lang.String&nbsp;message)</PRE>
+<DL>
+<DD>Creates a <code>ParseException</code> with the given detail message.
+<P>
+<DT><B>Parameters:</B><DD><CODE>message</CODE> - a description of this <code>ParseException</code></DL>
+<HR>
+
+<A NAME="ParseException(java.lang.Exception)"><!-- --></A><H3>
+ParseException</H3>
+<PRE>
+public <B>ParseException</B>(java.lang.Exception&nbsp;e)</PRE>
+<DL>
+<DD>Creates a <code>ParseException</code> with <code>e</code>s detail message.
+<P>
+<DT><B>Parameters:</B><DD><CODE>e</CODE> - an exception that occurred while a <code>WKTReader</code> was
+      parsing a Well-known Text string</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ParseException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBConstants.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBConstants.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBConstants.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,357 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+WKBConstants
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.WKBConstants interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="WKBConstants";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKBConstants.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Interface WKBConstants</H2>
+<HR>
+<DL>
+<DT>public interface <B>WKBConstants</B></DL>
+
+<P>
+Constant values used by the WKB format
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbGeometryCollection">wkbGeometryCollection</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbLineString">wkbLineString</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbMultiLineString">wkbMultiLineString</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbMultiPoint">wkbMultiPoint</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbMultiPolygon">wkbMultiPolygon</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbNDR">wkbNDR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbPoint">wkbPoint</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbPolygon">wkbPolygon</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html#wkbXDR">wkbXDR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="wkbXDR"><!-- --></A><H3>
+wkbXDR</H3>
+<PRE>
+public static final int <B>wkbXDR</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbXDR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbNDR"><!-- --></A><H3>
+wkbNDR</H3>
+<PRE>
+public static final int <B>wkbNDR</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbNDR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbPoint"><!-- --></A><H3>
+wkbPoint</H3>
+<PRE>
+public static final int <B>wkbPoint</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbPoint">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbLineString"><!-- --></A><H3>
+wkbLineString</H3>
+<PRE>
+public static final int <B>wkbLineString</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbLineString">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbPolygon"><!-- --></A><H3>
+wkbPolygon</H3>
+<PRE>
+public static final int <B>wkbPolygon</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbPolygon">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbMultiPoint"><!-- --></A><H3>
+wkbMultiPoint</H3>
+<PRE>
+public static final int <B>wkbMultiPoint</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbMultiPoint">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbMultiLineString"><!-- --></A><H3>
+wkbMultiLineString</H3>
+<PRE>
+public static final int <B>wkbMultiLineString</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbMultiLineString">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbMultiPolygon"><!-- --></A><H3>
+wkbMultiPolygon</H3>
+<PRE>
+public static final int <B>wkbMultiPolygon</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbMultiPolygon">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="wkbGeometryCollection"><!-- --></A><H3>
+wkbGeometryCollection</H3>
+<PRE>
+public static final int <B>wkbGeometryCollection</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.io.WKBConstants.wkbGeometryCollection">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKBConstants.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBReader.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBReader.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBReader.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,333 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+WKBReader
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.WKBReader class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="WKBReader";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKBReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class WKBReader</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.WKBReader</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>WKBReader</B><DT>extends java.lang.Object</DL>
+
+<P>
+Reads a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>from a byte stream in Well-Known Binary format.
+ Supports use of an <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>, which allows easy use
+ with arbitary byte stream sources.
+ <p>
+ This class reads the format describe in <A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><CODE>WKBWriter</CODE></A>.  It also partiually handles
+ the Extended WKB format used by PostGIS (by reading SRID values)
+ <p>
+ This class is designed to support reuse of a single instance to read multiple
+ geometries. This class is not thread-safe; each thread should create its own
+ instance.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><CODE>WKBWriter</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html#WKBReader()">WKBReader</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html#WKBReader(com.vividsolutions.jts.geom.GeometryFactory)">WKBReader</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;byte[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html#hexToBytes(java.lang.String)">hexToBytes</A></B>(java.lang.String&nbsp;hex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts a hexadecimal string to a byte array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html#read(byte[])">read</A></B>(byte[]&nbsp;bytes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a single <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a byte array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html#read(com.vividsolutions.jts.io.InStream)">read</A></B>(<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>&nbsp;is)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an {@link InStream).</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="WKBReader()"><!-- --></A><H3>
+WKBReader</H3>
+<PRE>
+public <B>WKBReader</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="WKBReader(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+WKBReader</H3>
+<PRE>
+public <B>WKBReader</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="hexToBytes(java.lang.String)"><!-- --></A><H3>
+hexToBytes</H3>
+<PRE>
+public static byte[] <B>hexToBytes</B>(java.lang.String&nbsp;hex)</PRE>
+<DL>
+<DD>Converts a hexadecimal string to a byte array.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>hex</CODE> - a string containing hex digits</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(byte[])"><!-- --></A><H3>
+read</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>read</B>(byte[]&nbsp;bytes)
+              throws <A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></PRE>
+<DL>
+<DD>Reads a single <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a byte array.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>bytes</CODE> - the byte array to read from
+<DT><B>Returns:</B><DD>the geometry read
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></CODE> - if a parse exception occurs</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(com.vividsolutions.jts.io.InStream)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>read</B>(<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>&nbsp;is)
+              throws java.io.IOException,
+                     <A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></PRE>
+<DL>
+<DD>Reads a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an {@link InStream).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>is</CODE> - the stream to read from
+<DT><B>Returns:</B><DD>the Geometry read
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKBReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBWriter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBWriter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKBWriter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,362 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+WKBWriter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.WKBWriter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="WKBWriter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKBWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class WKBWriter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.WKBWriter</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>WKBWriter</B><DT>extends java.lang.Object</DL>
+
+<P>
+Writes a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into Well-Known Binary format.
+ Supports use of an <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A>, which allows easy use
+ with arbitary byte stream sinks.
+ <p>
+ The WKB format is specified in the OGC Simple Features for SQL specification.
+ This implementation supports the extended WKB standard for representing
+ 3-dimensional coordinates.  The presence of 3D coordinates is signified
+ by setting the high bit of the wkbType word.
+ <p>
+ Empty Points cannot be represented in WKB; an
+ <CODE>IllegalArgumentException</CODE> will be thrown if one is
+ written. The WKB specification does not support representing <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s;
+ they will be written as <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s.
+ <p>
+ This class is designed to support reuse of a single instance to read multiple
+ geometries. This class is not thread-safe; each thread should create its own
+ instance.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><CODE>WKBReader</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html#WKBWriter()">WKBWriter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ output dimension = 2 and BIG_ENDIAN byte order</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html#WKBWriter(int)">WKBWriter</A></B>(int&nbsp;outputDimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3) and BIG_ENDIAN byte order</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html#WKBWriter(int, int)">WKBWriter</A></B>(int&nbsp;outputDimension,
+          int&nbsp;byteOrder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3) and byte order</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html#bytesToHex(byte[])">bytesToHex</A></B>(byte[]&nbsp;bytes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;byte[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html#write(com.vividsolutions.jts.geom.Geometry)">write</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into a byte array.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html#write(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.io.OutStream)">write</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+      <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A>&nbsp;os)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to an <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="WKBWriter()"><!-- --></A><H3>
+WKBWriter</H3>
+<PRE>
+public <B>WKBWriter</B>()</PRE>
+<DL>
+<DD>Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ output dimension = 2 and BIG_ENDIAN byte order
+<P>
+</DL>
+<HR>
+
+<A NAME="WKBWriter(int)"><!-- --></A><H3>
+WKBWriter</H3>
+<PRE>
+public <B>WKBWriter</B>(int&nbsp;outputDimension)</PRE>
+<DL>
+<DD>Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3) and BIG_ENDIAN byte order
+<P>
+<DT><B>Parameters:</B><DD><CODE>outputDimension</CODE> - the dimension to output (2 or 3)</DL>
+<HR>
+
+<A NAME="WKBWriter(int, int)"><!-- --></A><H3>
+WKBWriter</H3>
+<PRE>
+public <B>WKBWriter</B>(int&nbsp;outputDimension,
+                 int&nbsp;byteOrder)</PRE>
+<DL>
+<DD>Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3) and byte order
+<P>
+<DT><B>Parameters:</B><DD><CODE>outputDimension</CODE> - the dimension to output (2 or 3)<DD><CODE>byteOrder</CODE> - the byte ordering to use</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="bytesToHex(byte[])"><!-- --></A><H3>
+bytesToHex</H3>
+<PRE>
+public static java.lang.String <B>bytesToHex</B>(byte[]&nbsp;bytes)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public byte[] <B>write</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Writes a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into a byte array.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to write
+<DT><B>Returns:</B><DD>the byte array containing the WKB</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.io.OutStream)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public void <B>write</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                  <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A>&nbsp;os)
+           throws java.io.IOException</PRE>
+<DL>
+<DD>Writes a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to an <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to write<DD><CODE>os</CODE> - the out stream to write to
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE> - if an I/O error occurs</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKBWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTReader.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTReader.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTReader.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,382 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+WKTReader
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.WKTReader class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="WKTReader";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKTReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class WKTReader</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.WKTReader</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>WKTReader</B><DT>extends java.lang.Object</DL>
+
+<P>
+Converts a geometry in Well-Known Text format to a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ <p>
+ <code>WKTReader</code> supports
+ extracting <code>Geometry</code> objects from either <CODE>Reader</CODE>s or
+  <CODE>String</CODE>s. This allows it to function as a parser to read <code>Geometry</code>
+  objects from text blocks embedded in other data formats (e.g. XML). <P>
+ <p>
+  A <code>WKTReader</code> is parameterized by a <code>GeometryFactory</code>,
+  to allow it to create <code>Geometry</code> objects of the appropriate
+  implementation. In particular, the <code>GeometryFactory</code>
+  determines the <code>PrecisionModel</code> and <code>SRID</code> that is
+  used. <P>
+
+  The <code>WKTReader</code> converts all input numbers to the precise
+  internal representation.
+
+ <h3>Notes:</h3>
+ <ul>
+ <li>The reader supports non-standard "LINEARRING" tags.
+ <li>The reader uses Double.parseDouble to perform the conversion of ASCII
+ numbers to floating point.  This means it supports the Java
+ syntax for floating point literals (including scientific notation).
+ </ul>
+
+ <h3>Syntax</h3>
+ The following syntax specification describes the version of Well-Known Text
+ supported by JTS.
+ (The specification uses a syntax language similar to that used in
+ the C and Java language specifications.)
+ <p>
+
+ <blockquote><pre>
+ <i>WKTGeometry:</i> one of<i>
+
+       WKTPoint  WKTLineString  WKTLinearRing  WKTPolygon
+       WKTMultiPoint  WKTMultiLineString  WKTMultiPolygon
+       WKTGeometryCollection</i>
+
+ <i>WKTPoint:</i> <b>POINT ( </b><i>Coordinate</i> <b>)</b>
+
+ <i>WKTLineString:</i> <b>LINESTRING</b> <i>CoordinateSequence</i>
+
+ <i>WKTLinearRing:</i> <b>LINEARRING</b> <i>CoordinateSequence</i>
+
+ <i>WKTPolygon:</i> <b>POLYGON</b> <i>CoordinateSequenceList</i>
+
+ <i>WKTMultiPoint:</i> <b>MULTIPOINT</b> <i>CoordinateSequence</i>
+
+ <i>WKTMultiLineString:</i> <b>MULTILINESTRING</b> <i>CoordinateSequenceList</i>
+
+ <i>WKTMultiPolygon:</i>
+         <b>MULTIPOLYGON (</b> <i>CoordinateSequenceList {</i> , <i>CoordinateSequenceList }</i> <b>)</b>
+
+ <i>WKTGeometryCollection: </i>
+         <b>GEOMETRYCOLLECTION (</b> <i>WKTGeometry {</i> , <i>WKTGeometry }</i> <b>)</b>
+
+ <i>CoordinateSequenceList:</i>
+         <b>(</b> <i>CoordinateSequence {</i> <b>,</b> <i>CoordinateSequence }</i> <b>)</b>
+
+ <i>CoordinateSequence:</i>
+         <b>(</b> <i>Coordinate {</i> , <i>Coordinate }</i> <b>)</b>
+
+ <i>Coordinate:
+         Number Number Number<sub>opt</sub></i>
+
+ <i>Number:</i> A Java-style floating-point number
+
+ </pre></blockquote>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io"><CODE>WKTWriter</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html#WKTReader()">WKTReader</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a reader that creates objects using the default <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html#WKTReader(com.vividsolutions.jts.geom.GeometryFactory)">WKTReader</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a reader that creates objects using the given
+  <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html#read(java.io.Reader)">read</A></B>(java.io.Reader&nbsp;reader)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a Well-Known Text representation of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ from a <CODE>Reader</CODE>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html#read(java.lang.String)">read</A></B>(java.lang.String&nbsp;wellKnownText)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a Well-Known Text representation of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ from a <CODE>String</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="WKTReader()"><!-- --></A><H3>
+WKTReader</H3>
+<PRE>
+public <B>WKTReader</B>()</PRE>
+<DL>
+<DD>Creates a reader that creates objects using the default <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<P>
+</DL>
+<HR>
+
+<A NAME="WKTReader(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+WKTReader</H3>
+<PRE>
+public <B>WKTReader</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory)</PRE>
+<DL>
+<DD>Creates a reader that creates objects using the given
+  <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>geometryFactory</CODE> - the factory used to create <code>Geometry</code>s.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="read(java.lang.String)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>read</B>(java.lang.String&nbsp;wellKnownText)
+              throws <A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></PRE>
+<DL>
+<DD>Reads a Well-Known Text representation of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ from a <CODE>String</CODE>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>wellKnownText</CODE> - one or more <Geometry Tagged Text>strings (see the OpenGIS
+            Simple Features Specification) separated by whitespace
+<DT><B>Returns:</B><DD>a <code>Geometry</code> specified by <code>wellKnownText</code>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></CODE> - if a parsing problem occurs</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(java.io.Reader)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>read</B>(java.io.Reader&nbsp;reader)
+              throws <A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></PRE>
+<DL>
+<DD>Reads a Well-Known Text representation of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ from a <CODE>Reader</CODE>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>reader</CODE> - a Reader which will return a <Geometry Tagged Text>
+      string (see the OpenGIS Simple Features Specification)
+<DT><B>Returns:</B><DD>a <code>Geometry</code> read from <code>reader</code>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></CODE> - if a parsing problem occurs</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKTReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTWriter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTWriter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/WKTWriter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,540 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+WKTWriter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.WKTWriter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="WKTWriter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKTWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io</FONT>
+<BR>
+Class WKTWriter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.WKTWriter</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>WKTWriter</B><DT>extends java.lang.Object</DL>
+
+<P>
+Outputs the Well-Known Text representation of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ The Well-known Text format is defined in the
+ <A HREF="http://www.opengis.org/techno/specs.htm">
+ OGC Simple Features Specification for SQL</A>.
+ <p>
+ The <code>WKTWriter</code> outputs coordinates rounded to the precision
+ model. No more than the maximum number of necessary decimal places will be
+ output.
+ <p>
+ A non-standard <code>LINEARRING</code> tag is used for LinearRings.
+ The SFS WKT spec does not define a special tag for <code>LinearRing</code>s.
+ Under it, rings are output using <code>LINESTRING</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><CODE>WKTReader</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#WKTWriter()">WKTWriter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new WKTWriter with default settings</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#WKTWriter(int)">WKTWriter</A></B>(int&nbsp;outputDimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3).</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#setFormatted(boolean)">setFormatted</A></B>(boolean&nbsp;isFormatted)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets whether the output will be formatted.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#setMaxCoordinatesPerLine(int)">setMaxCoordinatesPerLine</A></B>(int&nbsp;coordsPerLine)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of coordinates per line
+ written in formatted output.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#setTab(int)">setTab</A></B>(int&nbsp;size)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the tab size to use for indenting.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#stringOfChar(char, int)">stringOfChar</A></B>(char&nbsp;ch,
+             int&nbsp;count)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <code>String</code> of repeated characters.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#toLineString(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">toLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates the WKT for a 2-point <code>LineString</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#toLineString(com.vividsolutions.jts.geom.CoordinateSequence)">toLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates the WKT for a N-point <code>LineString</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#toPoint(com.vividsolutions.jts.geom.Coordinate)">toPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generates the WKT for a <code>Point</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#write(com.vividsolutions.jts.geom.Geometry)">write</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts a <code>Geometry</code> to its Well-known Text representation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#write(com.vividsolutions.jts.geom.Geometry, java.io.Writer)">write</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+      java.io.Writer&nbsp;writer)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts a <code>Geometry</code> to its Well-known Text representation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#writeFormatted(com.vividsolutions.jts.geom.Geometry)">writeFormatted</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same as <code>write</code>, but with newlines and spaces to make the
+  well-known text more readable.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html#writeFormatted(com.vividsolutions.jts.geom.Geometry, java.io.Writer)">writeFormatted</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+               java.io.Writer&nbsp;writer)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same as <code>write</code>, but with newlines and spaces to make the
+  well-known text more readable.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="WKTWriter()"><!-- --></A><H3>
+WKTWriter</H3>
+<PRE>
+public <B>WKTWriter</B>()</PRE>
+<DL>
+<DD>Creates a new WKTWriter with default settings
+<P>
+</DL>
+<HR>
+
+<A NAME="WKTWriter(int)"><!-- --></A><H3>
+WKTWriter</H3>
+<PRE>
+public <B>WKTWriter</B>(int&nbsp;outputDimension)</PRE>
+<DL>
+<DD>Creates a writer that writes <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3).
+ If the specified output dimension is 3, the Z value
+ of coordinates will be written if it is present
+ (i.e. if it is not <code>Double.NaN</code>).
+<P>
+<DT><B>Parameters:</B><DD><CODE>outputDimension</CODE> - the coordinate dimension to output (2 or 3)</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toPoint(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toPoint</H3>
+<PRE>
+public static java.lang.String <B>toPoint</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0)</PRE>
+<DL>
+<DD>Generates the WKT for a <code>Point</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p0</CODE> - the point coordinate
+<DT><B>Returns:</B><DD>the WKT</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLineString(com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+toLineString</H3>
+<PRE>
+public static java.lang.String <B>toLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq)</PRE>
+<DL>
+<DD>Generates the WKT for a N-point <code>LineString</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>seq</CODE> - the sequence to outpout
+<DT><B>Returns:</B><DD>the WKT</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLineString(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toLineString</H3>
+<PRE>
+public static java.lang.String <B>toLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                            <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Generates the WKT for a 2-point <code>LineString</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p0</CODE> - the first coordinate<DD><CODE>p1</CODE> - the second coordinate
+<DT><B>Returns:</B><DD>the WKT</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="stringOfChar(char, int)"><!-- --></A><H3>
+stringOfChar</H3>
+<PRE>
+public static java.lang.String <B>stringOfChar</B>(char&nbsp;ch,
+                                            int&nbsp;count)</PRE>
+<DL>
+<DD>Returns a <code>String</code> of repeated characters.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>ch</CODE> - the character to repeat<DD><CODE>count</CODE> - the number of times to repeat the character
+<DT><B>Returns:</B><DD>a <code>String</code> of characters</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setFormatted(boolean)"><!-- --></A><H3>
+setFormatted</H3>
+<PRE>
+public void <B>setFormatted</B>(boolean&nbsp;isFormatted)</PRE>
+<DL>
+<DD>Sets whether the output will be formatted.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>isFormatted</CODE> - true if the output is to be formatted</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setMaxCoordinatesPerLine(int)"><!-- --></A><H3>
+setMaxCoordinatesPerLine</H3>
+<PRE>
+public void <B>setMaxCoordinatesPerLine</B>(int&nbsp;coordsPerLine)</PRE>
+<DL>
+<DD>Sets the maximum number of coordinates per line
+ written in formatted output.
+ If the provided coordinate number is <= 0,
+ coordinates will be written all on one line.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coordsPerLine</CODE> - the number of coordinates per line to output.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setTab(int)"><!-- --></A><H3>
+setTab</H3>
+<PRE>
+public void <B>setTab</B>(int&nbsp;size)</PRE>
+<DL>
+<DD>Sets the tab size to use for indenting.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the number of spaces to use as the tab string
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if the size is non-positive</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public java.lang.String <B>write</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Converts a <code>Geometry</code> to its Well-known Text representation.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - a <code>Geometry</code> to process
+<DT><B>Returns:</B><DD>a <Geometry Tagged Text> string (see the OpenGIS Simple
+      Features Specification)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(com.vividsolutions.jts.geom.Geometry, java.io.Writer)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public void <B>write</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+                  java.io.Writer&nbsp;writer)
+           throws java.io.IOException</PRE>
+<DL>
+<DD>Converts a <code>Geometry</code> to its Well-known Text representation.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - a <code>Geometry</code> to process
+<DT><B>Returns:</B><DD>a <Geometry Tagged Text> string (see the OpenGIS Simple
+      Features Specification)
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="writeFormatted(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+writeFormatted</H3>
+<PRE>
+public java.lang.String <B>writeFormatted</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Same as <code>write</code>, but with newlines and spaces to make the
+  well-known text more readable.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - a <code>Geometry</code> to process
+<DT><B>Returns:</B><DD>a <Geometry Tagged Text> string (see the OpenGIS Simple
+      Features Specification), with newlines and spaces</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="writeFormatted(com.vividsolutions.jts.geom.Geometry, java.io.Writer)"><!-- --></A><H3>
+writeFormatted</H3>
+<PRE>
+public void <B>writeFormatted</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry,
+                           java.io.Writer&nbsp;writer)
+                    throws java.io.IOException</PRE>
+<DL>
+<DD>Same as <code>write</code>, but with newlines and spaces to make the
+  well-known text more readable.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - a <code>Geometry</code> to process
+<DT><B>Returns:</B><DD>a <Geometry Tagged Text> string (see the OpenGIS Simple
+      Features Specification), with newlines and spaces
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="WKTWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/io/package-summary.html" target="classFrame">com.vividsolutions.jts.io</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="InStream.html" title="interface in com.vividsolutions.jts.io" target="classFrame"><I>InStream</I></A>
+<BR>
+<A HREF="OutStream.html" title="interface in com.vividsolutions.jts.io" target="classFrame"><I>OutStream</I></A>
+<BR>
+<A HREF="WKBConstants.html" title="interface in com.vividsolutions.jts.io" target="classFrame"><I>WKBConstants</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ByteArrayInStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">ByteArrayInStream</A>
+<BR>
+<A HREF="ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">ByteOrderDataInStream</A>
+<BR>
+<A HREF="ByteOrderValues.html" title="class in com.vividsolutions.jts.io" target="classFrame">ByteOrderValues</A>
+<BR>
+<A HREF="InputStreamInStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">InputStreamInStream</A>
+<BR>
+<A HREF="OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io" target="classFrame">OutputStreamOutStream</A>
+<BR>
+<A HREF="WKBReader.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKBReader</A>
+<BR>
+<A HREF="WKBWriter.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKBWriter</A>
+<BR>
+<A HREF="WKTReader.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKTReader</A>
+<BR>
+<A HREF="WKTWriter.html" title="class in com.vividsolutions.jts.io" target="classFrame">WKTWriter</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ParseException.html" title="class in com.vividsolutions.jts.io" target="classFrame">ParseException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,245 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/sweepline/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.io
+</H2>
+Contains the interfaces for converting JTS objects to and from other formats.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A></B></TD>
+<TD>A interface for classes providing an input stream of bytes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A></B></TD>
+<TD>A interface for classes providing an output stream of bytes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A></B></TD>
+<TD>Constant values used by the WKB format</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A></B></TD>
+<TD>Allows an array of bytes to be used as an <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A></B></TD>
+<TD>Allows reading a stream of Java primitive datatypes from an underlying
+ <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>,
+ with the representation being in either common byte ordering.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A></B></TD>
+<TD>Methods to read and write primitive Java datatypes from/to byte
+ sequences, allowing the byte order to be specified
+ </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io">InputStreamInStream</A></B></TD>
+<TD>An adapter to allow an <CODE>InputStream</CODE> to be used as an <A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io">OutputStreamOutStream</A></B></TD>
+<TD>An adapter to allow an <CODE>OutputStream</CODE> to be used as an <A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A></B></TD>
+<TD>Reads a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>from a byte stream in Well-Known Binary format.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A></B></TD>
+<TD>Writes a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into Well-Known Binary format.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A></B></TD>
+<TD>Converts a geometry in Well-Known Text format to a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A></B></TD>
+<TD>Outputs the Well-Known Text representation of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A></B></TD>
+<TD>Thrown by a <code>WKTReader</code> when a parsing problem occurs.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.io Description
+</H2>
+
+<P>
+Contains the interfaces for converting JTS objects to and from other formats.
+<P>
+The Java Topology Suite (JTS) is a Java API that implements a core set of spatial data operations using an explicit precision model and robust geometric algorithms. JTS is intended to be used in the development of applications that support the validation, cleaning, integration and querying of spatial datasets.
+<P>
+JTS attempts to implement the OpenGIS Simple Features Specification (SFS) as accurately as possible.  In some cases the SFS is unclear or omits a specification; in this case JTS attempts to choose a reasonable and consistent alternative.  Differences from and elaborations of the SFS are documented in this specification.
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/sweepline/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/io/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/sweepline/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.io
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io"><B>ByteArrayInStream</B></A> (implements com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>ByteOrderDataInStream</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>ByteOrderValues</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>InputStreamInStream</B></A> (implements com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>OutputStreamOutStream</B></A> (implements com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A>)
+<LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io"><B>ParseException</B></A></UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>WKBReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>WKBWriter</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>WKTReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io"><B>WKTWriter</B></A></UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><B>InStream</B></A><LI TYPE="circle">interface com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>OutStream</B></A><LI TYPE="circle">interface com.vividsolutions.jts.io.<A HREF="../../../../com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io"><B>WKBConstants</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/sweepline/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthIndexedLine.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthIndexedLine.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthIndexedLine.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,509 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LengthIndexedLine
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref.LengthIndexedLine class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LengthIndexedLine";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LengthIndexedLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.linearref</FONT>
+<BR>
+Class LengthIndexedLine</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.linearref.LengthIndexedLine</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LengthIndexedLine</B><DT>extends java.lang.Object</DL>
+
+<P>
+Supports linear referencing along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ using the length along the line as the index.
+ Negative length values are taken as measured in the reverse direction
+ from the end of the geometry.
+ Out-of-range index values are handled by clamping
+ them to the valid range of values.
+ Non-simple lines (i.e. which loop back to cross or touch
+ themselves) are supported.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#LengthIndexedLine(com.vividsolutions.jts.geom.Geometry)">LengthIndexedLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an object which allows a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ to be linearly referenced using length as an index.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#clampIndex(double)">clampIndex</A></B>(double&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a valid index for this line
+ by clamping the given index to the valid range of index values</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#extractLine(double, double)">extractLine</A></B>(double&nbsp;startIndex,
+            double&nbsp;endIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> for the interval
+ on the line between the given indices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#extractPoint(double)">extractPoint</A></B>(double&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the point
+ on the line at the given index.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#getEndIndex()">getEndIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the end of the line</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#getStartIndex()">getStartIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the start of the line</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#indexOf(com.vividsolutions.jts.geom.Coordinate)">indexOf</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the minimum index for a point on the line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#indexOfAfter(com.vividsolutions.jts.geom.Coordinate, double)">indexOfAfter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+             double&nbsp;minIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Finds the index for a point on the line
+ which is greater than the given index.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#indicesOf(com.vividsolutions.jts.geom.Geometry)">indicesOf</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;subLine)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the indices for a subline of the line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#isValidIndex(double)">isValidIndex</A></B>(double&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an index is in the valid index range for the line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)">project</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the index for the closest point on the line to the given point.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LengthIndexedLine(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+LengthIndexedLine</H3>
+<PRE>
+public <B>LengthIndexedLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</PRE>
+<DL>
+<DD>Constructs an object which allows a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ to be linearly referenced using length as an index.
+<P>
+<DT><B>Parameters:</B><DD><CODE>linearGeom</CODE> - the linear geometry to reference along</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="extractPoint(double)"><!-- --></A><H3>
+extractPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>extractPoint</B>(double&nbsp;index)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the point
+ on the line at the given index.
+ If the index is out of range the first or last point on the
+ line will be returned.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the index of the desired point
+<DT><B>Returns:</B><DD>the Coordinate at the given index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="extractLine(double, double)"><!-- --></A><H3>
+extractLine</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>extractLine</B>(double&nbsp;startIndex,
+                            double&nbsp;endIndex)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> for the interval
+ on the line between the given indices.
+ If the endIndex lies before the startIndex,
+ the computed geometry is reversed.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>startIndex</CODE> - the index of the start of the interval<DD><CODE>endIndex</CODE> - the index of the end of the interval
+<DT><B>Returns:</B><DD>the linear interval between the indices</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="indexOf(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+indexOf</H3>
+<PRE>
+public double <B>indexOf</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Computes the minimum index for a point on the line.
+ If the line is not simple (i.e. loops back on itself)
+ a single point may have more than one possible index.
+ In this case, the smallest index is returned.
+
+ The supplied point does not <i>necessarily</i> have to lie precisely
+ on the line, but if it is far from the line the accuracy and
+ performance of this function is not guaranteed.
+ Use <A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)"><CODE>project(com.vividsolutions.jts.geom.Coordinate)</CODE></A> to compute a guaranteed result for points
+ which may be far from the line.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - a point on the line
+<DT><B>Returns:</B><DD>the minimum index of the point<DT><B>See Also:</B><DD><CODE>project</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="indexOfAfter(com.vividsolutions.jts.geom.Coordinate, double)"><!-- --></A><H3>
+indexOfAfter</H3>
+<PRE>
+public double <B>indexOfAfter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+                           double&nbsp;minIndex)</PRE>
+<DL>
+<DD>Finds the index for a point on the line
+ which is greater than the given index.
+ If no such index exists, returns <tt>minIndex</tt>.
+ This method can be used to determine all indexes for
+ a point which occurs more than once on a non-simple line.
+ It can also be used to disambiguate cases where the given point lies
+ slightly off the line and is equidistant from two different
+ points on the line.
+
+ The supplied point does not <i>necessarily</i> have to lie precisely
+ on the line, but if it is far from the line the accuracy and
+ performance of this function is not guaranteed.
+ Use <A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)"><CODE>project(com.vividsolutions.jts.geom.Coordinate)</CODE></A> to compute a guaranteed result for points
+ which may be far from the line.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - a point on the line<DD><CODE>minIndex</CODE> - the value the returned index must be greater than
+<DT><B>Returns:</B><DD>the index of the point greater than the given minimum index<DT><B>See Also:</B><DD><CODE>project</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="indicesOf(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+indicesOf</H3>
+<PRE>
+public double[] <B>indicesOf</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;subLine)</PRE>
+<DL>
+<DD>Computes the indices for a subline of the line.
+ (The subline must <b>conform</b> to the line; that is,
+ all vertices in the subline (except possibly the first and last)
+ must be vertices of the line and occcur in the same order).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>subLine</CODE> - a subLine of the line
+<DT><B>Returns:</B><DD>a pair of indices for the start and end of the subline.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="project(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+project</H3>
+<PRE>
+public double <B>project</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Computes the index for the closest point on the line to the given point.
+ If more than one point has the closest distance the first one along the line
+ is returned.
+ (The point does not necessarily have to lie precisely on the line.)
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - a point on the line
+<DT><B>Returns:</B><DD>the index of the point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getStartIndex()"><!-- --></A><H3>
+getStartIndex</H3>
+<PRE>
+public double <B>getStartIndex</B>()</PRE>
+<DL>
+<DD>Returns the index of the start of the line
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the start index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEndIndex()"><!-- --></A><H3>
+getEndIndex</H3>
+<PRE>
+public double <B>getEndIndex</B>()</PRE>
+<DL>
+<DD>Returns the index of the end of the line
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the end index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValidIndex(double)"><!-- --></A><H3>
+isValidIndex</H3>
+<PRE>
+public boolean <B>isValidIndex</B>(double&nbsp;index)</PRE>
+<DL>
+<DD>Tests whether an index is in the valid index range for the line.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the index is in the valid range</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clampIndex(double)"><!-- --></A><H3>
+clampIndex</H3>
+<PRE>
+public double <B>clampIndex</B>(double&nbsp;index)</PRE>
+<DL>
+<DD>Computes a valid index for this line
+ by clamping the given index to the valid range of index values
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a valid index value</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LengthIndexedLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthLocationMap.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthLocationMap.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LengthLocationMap.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,333 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LengthLocationMap
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref.LengthLocationMap class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LengthLocationMap";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LengthLocationMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.linearref</FONT>
+<BR>
+Class LengthLocationMap</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.linearref.LengthLocationMap</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LengthLocationMap</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for a given length
+ along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ Negative lengths are measured in reverse from end of the linear geometry.
+ Out-of-range values are clamped.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html#LengthLocationMap(com.vividsolutions.jts.geom.Geometry)">LengthLocationMap</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html#getLength(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.linearref.LinearLocation)">getLength</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom,
+          <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;loc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the length for a given <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A>
+ on a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html#getLength(com.vividsolutions.jts.linearref.LinearLocation)">getLength</A></B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;loc)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html#getLocation(double)">getLocation</A></B>(double&nbsp;length)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> corresponding to a length.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html#getLocation(com.vividsolutions.jts.geom.Geometry, double)">getLocation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom,
+            double&nbsp;length)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for a
+ given length along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LengthLocationMap(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+LengthLocationMap</H3>
+<PRE>
+public <B>LengthLocationMap</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLocation(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+getLocation</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>getLocation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom,
+                                         double&nbsp;length)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for a
+ given length along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>length</CODE> - the length index of the location
+<DT><B>Returns:</B><DD>the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for the length</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public static double <B>getLength</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom,
+                               <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;loc)</PRE>
+<DL>
+<DD>Computes the length for a given <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A>
+ on a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>loc</CODE> - the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> index of the location
+<DT><B>Returns:</B><DD>the length for the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocation(double)"><!-- --></A><H3>
+getLocation</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>getLocation</B>(double&nbsp;length)</PRE>
+<DL>
+<DD>Compute the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> corresponding to a length.
+ Negative lengths are measured in reverse from end of the linear geometry.
+ Out-of-range values are clamped.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>length</CODE> - the length index
+<DT><B>Returns:</B><DD>the corresponding LinearLocation</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLength(com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+getLength</H3>
+<PRE>
+public double <B>getLength</B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;loc)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LengthLocationMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearGeometryBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearGeometryBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearGeometryBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,387 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LinearGeometryBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref.LinearGeometryBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LinearGeometryBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearGeometryBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.linearref</FONT>
+<BR>
+Class LinearGeometryBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.linearref.LinearGeometryBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LinearGeometryBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Builds a linear geometry (<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>)
+ incrementally (point-by-point).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#LinearGeometryBuilder(com.vividsolutions.jts.geom.GeometryFactory)">LinearGeometryBuilder</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geomFact)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#add(com.vividsolutions.jts.geom.Coordinate)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a point to the current line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#add(com.vividsolutions.jts.geom.Coordinate, boolean)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+    boolean&nbsp;allowRepeatedPoints)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a point to the current line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#endLine()">endLine</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Terminate the current LineString.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#getGeometry()">getGeometry</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#getLastCoordinate()">getLastCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#setFixInvalidLines(boolean)">setFixInvalidLines</A></B>(boolean&nbsp;fixInvalidLines)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allows invalid lines to be ignored rather than causing Exceptions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#setIgnoreInvalidLines(boolean)">setIgnoreInvalidLines</A></B>(boolean&nbsp;ignoreInvalidLines)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allows invalid lines to be ignored rather than causing Exceptions.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LinearGeometryBuilder(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+LinearGeometryBuilder</H3>
+<PRE>
+public <B>LinearGeometryBuilder</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geomFact)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setIgnoreInvalidLines(boolean)"><!-- --></A><H3>
+setIgnoreInvalidLines</H3>
+<PRE>
+public void <B>setIgnoreInvalidLines</B>(boolean&nbsp;ignoreInvalidLines)</PRE>
+<DL>
+<DD>Allows invalid lines to be ignored rather than causing Exceptions.
+ An invalid line is one which has only one unique point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setFixInvalidLines(boolean)"><!-- --></A><H3>
+setFixInvalidLines</H3>
+<PRE>
+public void <B>setFixInvalidLines</B>(boolean&nbsp;fixInvalidLines)</PRE>
+<DL>
+<DD>Allows invalid lines to be ignored rather than causing Exceptions.
+ An invalid line is one which has only one unique point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Adds a point to the current line.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - the Coordinate to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate, boolean)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+                boolean&nbsp;allowRepeatedPoints)</PRE>
+<DL>
+<DD>Adds a point to the current line.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - the Coordinate to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLastCoordinate()"><!-- --></A><H3>
+getLastCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getLastCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="endLine()"><!-- --></A><H3>
+endLine</H3>
+<PRE>
+public void <B>endLine</B>()</PRE>
+<DL>
+<DD>Terminate the current LineString.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGeometry()"><!-- --></A><H3>
+getGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getGeometry</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearGeometryBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearIterator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearIterator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearIterator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,475 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LinearIterator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref.LinearIterator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LinearIterator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearIterator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.linearref</FONT>
+<BR>
+Class LinearIterator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.linearref.LinearIterator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LinearIterator</B><DT>extends java.lang.Object</DL>
+
+<P>
+An iterator over the components and coordinates of a linear geometry
+ (<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s and <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>s.
+
+ The standard usage pattern for a <A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearIterator</CODE></A> is:
+
+ <pre>
+ for (LinearIterator it = new LinearIterator(...); it.hasNext(); it.next()) {
+   ...
+   int ci = it.getComponentIndex();   // for example
+   int vi = it.getVertexIndex();      // for example
+   ...
+ }
+ </pre>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#LinearIterator(com.vividsolutions.jts.geom.Geometry)">LinearIterator</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an iterator initialized to the start of a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#LinearIterator(com.vividsolutions.jts.geom.Geometry, int, int)">LinearIterator</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear,
+               int&nbsp;componentIndex,
+               int&nbsp;vertexIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an iterator starting at
+ a component and vertex in a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#LinearIterator(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.linearref.LinearLocation)">LinearIterator</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear,
+               <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;start)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an iterator starting at
+ a <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> on a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#getComponentIndex()">getComponentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The component index of the vertex the iterator is currently at.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#getLine()">getLine</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> component the iterator is current at.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#getSegmentEnd()">getSegmentEnd</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the second <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of the current segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#getSegmentStart()">getSegmentStart</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the first <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of the current segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#getVertexIndex()">getVertexIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The vertex index of the vertex the iterator is currently at.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#hasNext()">hasNext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether there are any vertices left to iterator over.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#isEndOfLine()">isEndOfLine</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether the iterator cursor is pointing to the
+ endpoint of a linestring.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html#next()">next</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Moves the iterator ahead to the next vertex and (possibly) linear component.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LinearIterator(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+LinearIterator</H3>
+<PRE>
+public <B>LinearIterator</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</PRE>
+<DL>
+<DD>Creates an iterator initialized to the start of a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<P>
+<DT><B>Parameters:</B><DD><CODE>linear</CODE> - the linear geometry to iterate over</DL>
+<HR>
+
+<A NAME="LinearIterator(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+LinearIterator</H3>
+<PRE>
+public <B>LinearIterator</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear,
+                      <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;start)</PRE>
+<DL>
+<DD>Creates an iterator starting at
+ a <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> on a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<P>
+<DT><B>Parameters:</B><DD><CODE>linear</CODE> - the linear geometry to iterate over<DD><CODE>start</CODE> - the location to start at</DL>
+<HR>
+
+<A NAME="LinearIterator(com.vividsolutions.jts.geom.Geometry, int, int)"><!-- --></A><H3>
+LinearIterator</H3>
+<PRE>
+public <B>LinearIterator</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear,
+                      int&nbsp;componentIndex,
+                      int&nbsp;vertexIndex)</PRE>
+<DL>
+<DD>Creates an iterator starting at
+ a component and vertex in a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<P>
+<DT><B>Parameters:</B><DD><CODE>linear</CODE> - the linear geometry to iterate over<DD><CODE>componentIndex</CODE> - the component to start at<DD><CODE>vertexIndex</CODE> - the vertex to start at</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="hasNext()"><!-- --></A><H3>
+hasNext</H3>
+<PRE>
+public boolean <B>hasNext</B>()</PRE>
+<DL>
+<DD>Tests whether there are any vertices left to iterator over.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if there are more vertices to scan</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="next()"><!-- --></A><H3>
+next</H3>
+<PRE>
+public void <B>next</B>()</PRE>
+<DL>
+<DD>Moves the iterator ahead to the next vertex and (possibly) linear component.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEndOfLine()"><!-- --></A><H3>
+isEndOfLine</H3>
+<PRE>
+public boolean <B>isEndOfLine</B>()</PRE>
+<DL>
+<DD>Checks whether the iterator cursor is pointing to the
+ endpoint of a linestring.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</true> if the iterator is at an endpoint</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getComponentIndex()"><!-- --></A><H3>
+getComponentIndex</H3>
+<PRE>
+public int <B>getComponentIndex</B>()</PRE>
+<DL>
+<DD>The component index of the vertex the iterator is currently at.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the current component index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getVertexIndex()"><!-- --></A><H3>
+getVertexIndex</H3>
+<PRE>
+public int <B>getVertexIndex</B>()</PRE>
+<DL>
+<DD>The vertex index of the vertex the iterator is currently at.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the current vertex index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLine()"><!-- --></A><H3>
+getLine</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getLine</B>()</PRE>
+<DL>
+<DD>Gets the <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> component the iterator is current at.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a linestring</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentStart()"><!-- --></A><H3>
+getSegmentStart</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getSegmentStart</B>()</PRE>
+<DL>
+<DD>Gets the first <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of the current segment.
+ (the coordinate of the current vertex).
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentEnd()"><!-- --></A><H3>
+getSegmentEnd</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getSegmentEnd</B>()</PRE>
+<DL>
+<DD>Gets the second <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of the current segment.
+ (the coordinate of the next vertex).
+ If the iterator is at the end of a line, <code>null</code> is returned.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> or <code>null</code></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearIterator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearLocation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearLocation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LinearLocation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,720 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LinearLocation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref.LinearLocation class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LinearLocation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearLocation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.linearref</FONT>
+<BR>
+Class LinearLocation</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.linearref.LinearLocation</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>LinearLocation</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+Represents a location along a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>.
+ The referenced geometry is not maintained within
+ this location, but must be provided for operations which require it.
+ Various methods are provided to manipulate the location value
+ and query the geometry it references.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#LinearLocation()">LinearLocation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a location referring to the start of a linear geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#LinearLocation(int, double)">LinearLocation</A></B>(int&nbsp;segmentIndex,
+               double&nbsp;segmentFraction)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#LinearLocation(int, int, double)">LinearLocation</A></B>(int&nbsp;componentIndex,
+               int&nbsp;segmentIndex,
+               double&nbsp;segmentFraction)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#clamp(com.vividsolutions.jts.geom.Geometry)">clamp</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ensures the indexes are valid for a given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#clone()">clone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copies this location</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#compareLocationValues(int, int, double)">compareLocationValues</A></B>(int&nbsp;componentIndex1,
+                      int&nbsp;segmentIndex1,
+                      double&nbsp;segmentFraction1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this object with the specified index values for order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#compareLocationValues(int, int, double, int, int, double)">compareLocationValues</A></B>(int&nbsp;componentIndex0,
+                      int&nbsp;segmentIndex0,
+                      double&nbsp;segmentFraction0,
+                      int&nbsp;componentIndex1,
+                      int&nbsp;segmentIndex1,
+                      double&nbsp;segmentFraction1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two sets of location values for order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this object with the specified object for order.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#getComponentIndex()">getComponentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the component index for this location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#getCoordinate(com.vividsolutions.jts.geom.Geometry)">getCoordinate</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> along the
+ given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is
+ referenced by this location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#getEndLocation(com.vividsolutions.jts.geom.Geometry)">getEndLocation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a location which refers to the end of a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#getSegmentFraction()">getSegmentFraction</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the segment fraction for this location</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#getSegmentIndex()">getSegmentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the segment index for this location</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#getSegmentLength(com.vividsolutions.jts.geom.Geometry)">getSegmentLength</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the length of the segment in the given
+ Geometry containing this location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#isValid(com.vividsolutions.jts.geom.Geometry)">isValid</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this location refers to a valid
+ location on the given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#isVertex()">isVertex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this location refers to a vertex</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#pointAlongSegmentByFraction(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)">pointAlongSegmentByFraction</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                            <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                            double&nbsp;frac)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of a point a given fraction
+ along the line segment <tt>(p0, p1)</tt>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#setToEnd(com.vividsolutions.jts.geom.Geometry)">setToEnd</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the value of this location to
+ refer the end of a linear geometry</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html#snapToVertex(com.vividsolutions.jts.geom.Geometry, double)">snapToVertex</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom,
+             double&nbsp;minDistance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Snaps the value of this location to
+ the nearest vertex on the given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+ if the vertex is closer than <tt>maxDistance</tt>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LinearLocation()"><!-- --></A><H3>
+LinearLocation</H3>
+<PRE>
+public <B>LinearLocation</B>()</PRE>
+<DL>
+<DD>Creates a location referring to the start of a linear geometry
+<P>
+</DL>
+<HR>
+
+<A NAME="LinearLocation(int, double)"><!-- --></A><H3>
+LinearLocation</H3>
+<PRE>
+public <B>LinearLocation</B>(int&nbsp;segmentIndex,
+                      double&nbsp;segmentFraction)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="LinearLocation(int, int, double)"><!-- --></A><H3>
+LinearLocation</H3>
+<PRE>
+public <B>LinearLocation</B>(int&nbsp;componentIndex,
+                      int&nbsp;segmentIndex,
+                      double&nbsp;segmentFraction)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getEndLocation(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getEndLocation</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>getEndLocation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</PRE>
+<DL>
+<DD>Gets a location which refers to the end of a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linear</CODE> - the linear geometry
+<DT><B>Returns:</B><DD>a new <tt>LinearLocation</tt></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="pointAlongSegmentByFraction(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)"><!-- --></A><H3>
+pointAlongSegmentByFraction</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>pointAlongSegmentByFraction</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                                     <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                                     double&nbsp;frac)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of a point a given fraction
+ along the line segment <tt>(p0, p1)</tt>.
+ If the fraction is greater than 1.0 the last
+ point of the segment is returned.
+ If the fraction is less than or equal to 0.0 the first point
+ of the segment is returned.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>p0</CODE> - the first point of the line segment<DD><CODE>p1</CODE> - the last point of the line segment<DD><CODE>frac</CODE> - the length to the desired point
+<DT><B>Returns:</B><DD>the <tt>Coordinate</tt> of the desired point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clamp(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+clamp</H3>
+<PRE>
+public void <B>clamp</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</PRE>
+<DL>
+<DD>Ensures the indexes are valid for a given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linear</CODE> - a linear geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="snapToVertex(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+snapToVertex</H3>
+<PRE>
+public void <B>snapToVertex</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom,
+                         double&nbsp;minDistance)</PRE>
+<DL>
+<DD>Snaps the value of this location to
+ the nearest vertex on the given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+ if the vertex is closer than <tt>maxDistance</tt>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linearGeom</CODE> - a linear geometry<DD><CODE>minDistance</CODE> - the minimum allowable distance to a vertex</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentLength(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getSegmentLength</H3>
+<PRE>
+public double <B>getSegmentLength</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</PRE>
+<DL>
+<DD>Gets the length of the segment in the given
+ Geometry containing this location.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linearGeom</CODE> - a linear geometry
+<DT><B>Returns:</B><DD>the length of the segment</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setToEnd(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+setToEnd</H3>
+<PRE>
+public void <B>setToEnd</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linear)</PRE>
+<DL>
+<DD>Sets the value of this location to
+ refer the end of a linear geometry
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linear</CODE> - the linear geometry to set</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getComponentIndex()"><!-- --></A><H3>
+getComponentIndex</H3>
+<PRE>
+public int <B>getComponentIndex</B>()</PRE>
+<DL>
+<DD>Gets the component index for this location.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the component index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentIndex()"><!-- --></A><H3>
+getSegmentIndex</H3>
+<PRE>
+public int <B>getSegmentIndex</B>()</PRE>
+<DL>
+<DD>Gets the segment index for this location
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the segment index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentFraction()"><!-- --></A><H3>
+getSegmentFraction</H3>
+<PRE>
+public double <B>getSegmentFraction</B>()</PRE>
+<DL>
+<DD>Gets the segment fraction for this location
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the segment fraction</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isVertex()"><!-- --></A><H3>
+isVertex</H3>
+<PRE>
+public boolean <B>isVertex</B>()</PRE>
+<DL>
+<DD>Tests whether this location refers to a vertex
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the location is a vertex</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</PRE>
+<DL>
+<DD>Gets the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> along the
+ given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is
+ referenced by this location.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linearGeom</CODE> - a linear geometry
+<DT><B>Returns:</B><DD>the <tt>Coordinate</tt> at the location</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</PRE>
+<DL>
+<DD>Tests whether this location refers to a valid
+ location on the given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>linearGeom</CODE> - a linear geometry
+<DT><B>Returns:</B><DD>true if this location is valid</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Compares this object with the specified object for order.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>o</CODE> - the <code>LineStringLocation</code> with which this <code>Coordinate</code>
+      is being compared
+<DT><B>Returns:</B><DD>a negative integer, zero, or a positive integer as this <code>LineStringLocation</code>
+      is less than, equal to, or greater than the specified <code>LineStringLocation</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareLocationValues(int, int, double)"><!-- --></A><H3>
+compareLocationValues</H3>
+<PRE>
+public int <B>compareLocationValues</B>(int&nbsp;componentIndex1,
+                                 int&nbsp;segmentIndex1,
+                                 double&nbsp;segmentFraction1)</PRE>
+<DL>
+<DD>Compares this object with the specified index values for order.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>componentIndex1</CODE> - a component index<DD><CODE>segmentIndex1</CODE> - a segment index<DD><CODE>segmentFraction1</CODE> - a segment fraction
+<DT><B>Returns:</B><DD>a negative integer, zero, or a positive integer as this <code>LineStringLocation</code>
+      is less than, equal to, or greater than the specified locationValues</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareLocationValues(int, int, double, int, int, double)"><!-- --></A><H3>
+compareLocationValues</H3>
+<PRE>
+public static int <B>compareLocationValues</B>(int&nbsp;componentIndex0,
+                                        int&nbsp;segmentIndex0,
+                                        double&nbsp;segmentFraction0,
+                                        int&nbsp;componentIndex1,
+                                        int&nbsp;segmentIndex1,
+                                        double&nbsp;segmentFraction1)</PRE>
+<DL>
+<DD>Compares two sets of location values for order.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>componentIndex0</CODE> - a component index<DD><CODE>segmentIndex0</CODE> - a segment index<DD><CODE>segmentFraction0</CODE> - a segment fraction<DD><CODE>componentIndex1</CODE> - another component index<DD><CODE>segmentIndex1</CODE> - another segment index<DD><CODE>segmentFraction1</CODE> - another segment fraction
+<DT><B>Returns:</B><DD>a negative integer, zero, or a positive integer
+      as the first set of location values
+      is less than, equal to, or greater than the second set of locationValues</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clone()"><!-- --></A><H3>
+clone</H3>
+<PRE>
+public java.lang.Object <B>clone</B>()</PRE>
+<DL>
+<DD>Copies this location
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a copy of this location</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LinearLocation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LocationIndexedLine.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LocationIndexedLine.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/LocationIndexedLine.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,461 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LocationIndexedLine
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref.LocationIndexedLine class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LocationIndexedLine";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LocationIndexedLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.linearref</FONT>
+<BR>
+Class LocationIndexedLine</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.linearref.LocationIndexedLine</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LocationIndexedLine</B><DT>extends java.lang.Object</DL>
+
+<P>
+Supports linear referencing
+ along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ using <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A>s as the index.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#LocationIndexedLine(com.vividsolutions.jts.geom.Geometry)">LocationIndexedLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an object which allows linear referencing along
+ a given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#clampIndex(com.vividsolutions.jts.linearref.LinearLocation)">clampIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a valid index for this line
+ by clamping the given index to the valid range of index values</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#extractLine(com.vividsolutions.jts.linearref.LinearLocation, com.vividsolutions.jts.linearref.LinearLocation)">extractLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;startIndex,
+            <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;endIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> for the interval
+ on the line between the given indices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#extractPoint(com.vividsolutions.jts.linearref.LinearLocation)">extractPoint</A></B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the point
+ on the line at the given index.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#getEndIndex()">getEndIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the end of the line</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#getStartIndex()">getStartIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index of the start of the line</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#indexOf(com.vividsolutions.jts.geom.Coordinate)">indexOf</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the index for a given point on the line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#indicesOf(com.vividsolutions.jts.geom.Geometry)">indicesOf</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;subLine)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the indices for a subline of the line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#isValidIndex(com.vividsolutions.jts.linearref.LinearLocation)">isValidIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an index is in the valid index range for the line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)">project</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the index for the closest point on the line to the given point.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LocationIndexedLine(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+LocationIndexedLine</H3>
+<PRE>
+public <B>LocationIndexedLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;linearGeom)</PRE>
+<DL>
+<DD>Constructs an object which allows linear referencing along
+ a given linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>linearGeom</CODE> - the linear geometry to reference along</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="extractPoint(com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+extractPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>extractPoint</B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;index)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the point
+ on the line at the given index.
+ If the index is out of range the first or last point on the
+ line will be returned.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the Coordinate at the given index</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="extractLine(com.vividsolutions.jts.linearref.LinearLocation, com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+extractLine</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>extractLine</B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;startIndex,
+                            <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;endIndex)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> for the interval
+ on the line between the given indices.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>startIndex</CODE> - the index of the start of the interval<DD><CODE>endIndex</CODE> - the index of the end of the interval
+<DT><B>Returns:</B><DD>the linear interval between the indices</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="indexOf(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+indexOf</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>indexOf</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Computes the index for a given point on the line.
+ <p>
+ The supplied point does not <i>necessarily</i> have to lie precisely
+ on the line, but if it is far from the line the accuracy and
+ performance of this function is not guaranteed.
+ Use <A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)"><CODE>project(com.vividsolutions.jts.geom.Coordinate)</CODE></A> to compute a guaranteed result for points
+ which may be far from the line.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - a point on the line
+<DT><B>Returns:</B><DD>the index of the point<DT><B>See Also:</B><DD><CODE>project</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="indicesOf(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+indicesOf</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>[] <B>indicesOf</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;subLine)</PRE>
+<DL>
+<DD>Computes the indices for a subline of the line.
+ (The subline must <i>conform</i> to the line; that is,
+ all vertices in the subline (except possibly the first and last)
+ must be vertices of the line and occcur in the same order).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>subLine</CODE> - a subLine of the line
+<DT><B>Returns:</B><DD>a pair of indices for the start and end of the subline.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="project(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+project</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>project</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Computes the index for the closest point on the line to the given point.
+ If more than one point has the closest distance the first one along the line
+ is returned.
+ (The point does not necessarily have to lie precisely on the line.)
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - a point on the line
+<DT><B>Returns:</B><DD>the index of the point</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getStartIndex()"><!-- --></A><H3>
+getStartIndex</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>getStartIndex</B>()</PRE>
+<DL>
+<DD>Returns the index of the start of the line
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEndIndex()"><!-- --></A><H3>
+getEndIndex</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>getEndIndex</B>()</PRE>
+<DL>
+<DD>Returns the index of the end of the line
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValidIndex(com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+isValidIndex</H3>
+<PRE>
+public boolean <B>isValidIndex</B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;index)</PRE>
+<DL>
+<DD>Tests whether an index is in the valid index range for the line.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the index is in the valid range</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="clampIndex(com.vividsolutions.jts.linearref.LinearLocation)"><!-- --></A><H3>
+clampIndex</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A> <B>clampIndex</B>(<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>&nbsp;index)</PRE>
+<DL>
+<DD>Computes a valid index for this line
+ by clamping the given index to the valid range of index values
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a valid index value</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LocationIndexedLine.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.linearref
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/linearref/package-summary.html" target="classFrame">com.vividsolutions.jts.linearref</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LengthIndexedLine</A>
+<BR>
+<A HREF="LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LengthLocationMap</A>
+<BR>
+<A HREF="LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LinearGeometryBuilder</A>
+<BR>
+<A HREF="LinearIterator.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LinearIterator</A>
+<BR>
+<A HREF="LinearLocation.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LinearLocation</A>
+<BR>
+<A HREF="LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref" target="classFrame">LocationIndexedLine</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,213 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.linearref
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.linearref package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.linearref";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.linearref
+</H2>
+Contains classes and interfaces implementing linear referencing on linear geometries
+
+
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A></B></TD>
+<TD>Supports linear referencing along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ using the length along the line as the index.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A></B></TD>
+<TD>Computes the <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for a given length
+ along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A></B></TD>
+<TD>Builds a linear geometry (<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>)
+ incrementally (point-by-point).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A></B></TD>
+<TD>An iterator over the components and coordinates of a linear geometry
+ (<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s and <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A></B></TD>
+<TD>Represents a location along a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A></B></TD>
+<TD>Supports linear referencing
+ along a linear <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ using <A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A>s as the index.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.linearref Description
+</H2>
+
+<P>
+Contains classes and interfaces implementing linear referencing on linear geometries
+
+<H3>Linear Referencing</H3>
+
+Linear Referencing is a way of defining positions along linear geometries
+(<code>LineStrings</code> and <code>MultiLineStrings</code>).
+It is used extensively in linear network systems.
+There are numerous possible <b>Linear Referencing Methods</b> which
+can be used to define positions along linear geometry.
+This package supports two:
+<ul>
+<li><b>Linear Location</b> - a linear location is a triple
+<code>(component index, segment index, segment fraction)</code>
+which precisely specifies a point on a linear geometry.
+It allows for efficient mapping of the index value to actual coordinate values.
+<li><b>Length</b> - the natural concept of using the length along
+the geometry to specify a position.
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/linearref/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.linearref Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.linearref Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.linearref
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="../../../../com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>LengthIndexedLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="../../../../com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>LengthLocationMap</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="../../../../com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>LinearGeometryBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="../../../../com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>LinearIterator</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="../../../../com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>LinearLocation</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="../../../../com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>LocationIndexedLine</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/io/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/FastNodingValidator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/FastNodingValidator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/FastNodingValidator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,322 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+FastNodingValidator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.FastNodingValidator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="FastNodingValidator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="FastNodingValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class FastNodingValidator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.FastNodingValidator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>FastNodingValidator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Validates that a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s is correctly noded.
+ Indexing is used to improve performance.
+ This class assumes that at least one round of noding has already been performed
+ (which may still leave intersections, due to rounding issues).
+ Does NOT check a-b-a collapse situations. 
+ Also does not check for endpt-interior vertex intersections.
+ This should not be a problem, since the noders should be
+ able to compute intersections between vertices correctly.
+ User may either test the valid condition, or request that a 
+ <A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom"><CODE>TopologyException</CODE></A> 
+ be thrown.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html#FastNodingValidator(java.util.Collection)">FastNodingValidator</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html#checkValid()">checkValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks for an intersection and throws
+ a TopologyException if one is found.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html#getErrorMessage()">getErrorMessage</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an error message indicating the segments containing
+ the intersection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html#isValid()">isValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks for an intersection and 
+ reports if one is found.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="FastNodingValidator(java.util.Collection)"><!-- --></A><H3>
+FastNodingValidator</H3>
+<PRE>
+public <B>FastNodingValidator</B>(java.util.Collection&nbsp;segStrings)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isValid()"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>()</PRE>
+<DL>
+<DD>Checks for an intersection and 
+ reports if one is found.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the arrangement contains an interior intersection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getErrorMessage()"><!-- --></A><H3>
+getErrorMessage</H3>
+<PRE>
+public java.lang.String <B>getErrorMessage</B>()</PRE>
+<DL>
+<DD>Returns an error message indicating the segments containing
+ the intersection.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an error message documenting the intersection location</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="checkValid()"><!-- --></A><H3>
+checkValid</H3>
+<PRE>
+public void <B>checkValid</B>()</PRE>
+<DL>
+<DD>Checks for an intersection and throws
+ a TopologyException if one is found.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if an intersection is found</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="FastNodingValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/InteriorIntersectionFinder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/InteriorIntersectionFinder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/InteriorIntersectionFinder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,410 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+InteriorIntersectionFinder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.InteriorIntersectionFinder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="InteriorIntersectionFinder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorIntersectionFinder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class InteriorIntersectionFinder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.InteriorIntersectionFinder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>InteriorIntersectionFinder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></DL>
+
+<P>
+Finds an interior intersection in a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s,
+ if one exists.  Only the first intersection found is reported.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#InteriorIntersectionFinder(com.vividsolutions.jts.algorithm.LineIntersector)">InteriorIntersectionFinder</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an intersection finder which finds an interior intersection
+ if one exists</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#getInteriorIntersection()">getInteriorIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the computed location of the intersection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#getIntersectionSegments()">getIntersectionSegments</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the endpoints of the intersecting segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#hasIntersection()">hasIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an intersection was found.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#isDone()">isDone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                     int&nbsp;segIndex0,
+                     <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                     int&nbsp;segIndex1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#setCheckEndSegmentsOnly(boolean)">setCheckEndSegmentsOnly</A></B>(boolean&nbsp;isCheckEndSegmentsOnly)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets whether only end segments should be tested for interior intersection.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="InteriorIntersectionFinder(com.vividsolutions.jts.algorithm.LineIntersector)"><!-- --></A><H3>
+InteriorIntersectionFinder</H3>
+<PRE>
+public <B>InteriorIntersectionFinder</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</PRE>
+<DL>
+<DD>Creates an intersection finder which finds an interior intersection
+ if one exists
+<P>
+<DT><B>Parameters:</B><DD><CODE>li</CODE> - the LineIntersector to use</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setCheckEndSegmentsOnly(boolean)"><!-- --></A><H3>
+setCheckEndSegmentsOnly</H3>
+<PRE>
+public void <B>setCheckEndSegmentsOnly</B>(boolean&nbsp;isCheckEndSegmentsOnly)</PRE>
+<DL>
+<DD>Sets whether only end segments should be tested for interior intersection.
+ This is a performance optimization that may be used if
+ the segments have been previously noded by an appropriate algorithm.
+ It may be known that any potential noding failures will occur only in
+ end segments.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>isCheckEndSegmentsOnly</CODE> - whether to test only end segments</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasIntersection()"><!-- --></A><H3>
+hasIntersection</H3>
+<PRE>
+public boolean <B>hasIntersection</B>()</PRE>
+<DL>
+<DD>Tests whether an intersection was found.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if an intersection was found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInteriorIntersection()"><!-- --></A><H3>
+getInteriorIntersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInteriorIntersection</B>()</PRE>
+<DL>
+<DD>Gets the computed location of the intersection.
+ Due to round-off, the location may not be exact.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the coordinate for the intersection location</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectionSegments()"><!-- --></A><H3>
+getIntersectionSegments</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getIntersectionSegments</B>()</PRE>
+<DL>
+<DD>Gets the endpoints of the intersecting segments.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an array of the segment endpoints (p00, p01, p10, p11)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+processIntersections</H3>
+<PRE>
+public void <B>processIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                                 int&nbsp;segIndex0,
+                                 <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                                 int&nbsp;segIndex1)</PRE>
+<DL>
+<DD>This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+ Note that some clients (such as <CODE>MonotoneChain</CODE>s) may optimize away
+ this call for segment pairs which they have determined do not intersect
+ (e.g. by an disjoint envelope test).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDone()"><!-- --></A><H3>
+isDone</H3>
+<PRE>
+public boolean <B>isDone</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="InteriorIntersectionFinder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionAdder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionAdder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionAdder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,566 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+IntersectionAdder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.IntersectionAdder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IntersectionAdder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntersectionAdder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class IntersectionAdder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.IntersectionAdder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>IntersectionAdder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></DL>
+
+<P>
+Computes the intersections between two line segments in <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+ and adds them to each string.
+ The <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> is passed to a <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>.
+ The <CODE>addIntersections</CODE> method is called whenever the <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>
+ detects that two SegmentStrings <i>might</i> intersect.
+ This class is an example of the <i>Strategy</i> pattern.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#numInteriorIntersections">numInteriorIntersections</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#numIntersections">numIntersections</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#numProperIntersections">numProperIntersections</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#numTests">numTests</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#IntersectionAdder(com.vividsolutions.jts.algorithm.LineIntersector)">IntersectionAdder</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#getLineIntersector()">getLineIntersector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#getProperIntersectionPoint()">getProperIntersectionPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#hasInteriorIntersection()">hasInteriorIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An interior intersection is an intersection which is
+ in the interior of some segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#hasIntersection()">hasIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#hasProperInteriorIntersection()">hasProperInteriorIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A proper interior intersection is a proper intersection which is <b>not</b>
+ contained in the set of boundary nodes set for this SegmentIntersector.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#hasProperIntersection()">hasProperIntersection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A proper intersection is an intersection which is interior to at least two
+ line segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#isAdjacentSegments(int, int)">isAdjacentSegments</A></B>(int&nbsp;i1,
+                   int&nbsp;i2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#isDone()">isDone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Always process all intersections</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                     int&nbsp;segIndex0,
+                     <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                     int&nbsp;segIndex1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="numIntersections"><!-- --></A><H3>
+numIntersections</H3>
+<PRE>
+public int <B>numIntersections</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="numInteriorIntersections"><!-- --></A><H3>
+numInteriorIntersections</H3>
+<PRE>
+public int <B>numInteriorIntersections</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="numProperIntersections"><!-- --></A><H3>
+numProperIntersections</H3>
+<PRE>
+public int <B>numProperIntersections</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="numTests"><!-- --></A><H3>
+numTests</H3>
+<PRE>
+public int <B>numTests</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IntersectionAdder(com.vividsolutions.jts.algorithm.LineIntersector)"><!-- --></A><H3>
+IntersectionAdder</H3>
+<PRE>
+public <B>IntersectionAdder</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isAdjacentSegments(int, int)"><!-- --></A><H3>
+isAdjacentSegments</H3>
+<PRE>
+public static boolean <B>isAdjacentSegments</B>(int&nbsp;i1,
+                                         int&nbsp;i2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLineIntersector()"><!-- --></A><H3>
+getLineIntersector</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A> <B>getLineIntersector</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getProperIntersectionPoint()"><!-- --></A><H3>
+getProperIntersectionPoint</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getProperIntersectionPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the proper intersection point, or <code>null</code> if none was found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasIntersection()"><!-- --></A><H3>
+hasIntersection</H3>
+<PRE>
+public boolean <B>hasIntersection</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasProperIntersection()"><!-- --></A><H3>
+hasProperIntersection</H3>
+<PRE>
+public boolean <B>hasProperIntersection</B>()</PRE>
+<DL>
+<DD>A proper intersection is an intersection which is interior to at least two
+ line segments.  Note that a proper intersection is not necessarily
+ in the interior of the entire Geometry, since another edge may have
+ an endpoint equal to the intersection, which according to SFS semantics
+ can result in the point being on the Boundary of the Geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasProperInteriorIntersection()"><!-- --></A><H3>
+hasProperInteriorIntersection</H3>
+<PRE>
+public boolean <B>hasProperInteriorIntersection</B>()</PRE>
+<DL>
+<DD>A proper interior intersection is a proper intersection which is <b>not</b>
+ contained in the set of boundary nodes set for this SegmentIntersector.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasInteriorIntersection()"><!-- --></A><H3>
+hasInteriorIntersection</H3>
+<PRE>
+public boolean <B>hasInteriorIntersection</B>()</PRE>
+<DL>
+<DD>An interior intersection is an intersection which is
+ in the interior of some segment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+processIntersections</H3>
+<PRE>
+public void <B>processIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                                 int&nbsp;segIndex0,
+                                 <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                                 int&nbsp;segIndex1)</PRE>
+<DL>
+<DD>This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+ Note that some clients (such as <CODE>MonotoneChain</CODE>s) may optimize away
+ this call for segment pairs which they have determined do not intersect
+ (e.g. by an disjoint envelope test).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDone()"><!-- --></A><H3>
+isDone</H3>
+<PRE>
+public boolean <B>isDone</B>()</PRE>
+<DL>
+<DD>Always process all intersections
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>false always</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntersectionAdder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionFinderAdder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionFinderAdder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IntersectionFinderAdder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,329 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+IntersectionFinderAdder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.IntersectionFinderAdder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IntersectionFinderAdder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntersectionFinderAdder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class IntersectionFinderAdder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.IntersectionFinderAdder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>IntersectionFinderAdder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></DL>
+
+<P>
+Finds proper and interior intersections in a set of SegmentStrings,
+ and adds them as nodes.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html#IntersectionFinderAdder(com.vividsolutions.jts.algorithm.LineIntersector)">IntersectionFinderAdder</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an intersection finder which finds all proper intersections</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html#getInteriorIntersections()">getInteriorIntersections</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html#isDone()">isDone</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Always process all intersections</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                     int&nbsp;segIndex0,
+                     <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                     int&nbsp;segIndex1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IntersectionFinderAdder(com.vividsolutions.jts.algorithm.LineIntersector)"><!-- --></A><H3>
+IntersectionFinderAdder</H3>
+<PRE>
+public <B>IntersectionFinderAdder</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</PRE>
+<DL>
+<DD>Creates an intersection finder which finds all proper intersections
+<P>
+<DT><B>Parameters:</B><DD><CODE>li</CODE> - the LineIntersector to use</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInteriorIntersections()"><!-- --></A><H3>
+getInteriorIntersections</H3>
+<PRE>
+public java.util.List <B>getInteriorIntersections</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+processIntersections</H3>
+<PRE>
+public void <B>processIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                                 int&nbsp;segIndex0,
+                                 <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                                 int&nbsp;segIndex1)</PRE>
+<DL>
+<DD>This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+ Note that some clients (such as <CODE>MonotoneChain</CODE>s) may optimize away
+ this call for segment pairs which they have determined do not intersect
+ (e.g. by an disjoint envelope test).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDone()"><!-- --></A><H3>
+isDone</H3>
+<PRE>
+public boolean <B>isDone</B>()</PRE>
+<DL>
+<DD>Always process all intersections
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>false always</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IntersectionFinderAdder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IteratedNoder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IteratedNoder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/IteratedNoder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,367 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+IteratedNoder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.IteratedNoder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IteratedNoder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IteratedNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class IteratedNoder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.IteratedNoder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>IteratedNoder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DL>
+
+<P>
+Nodes a set of SegmentStrings completely.
+ The set of segmentStrings is fully noded;
+ i.e. noding is repeated until no further
+ intersections are detected.
+ <p>
+ Iterated noding using a FLOATING precision model is not guaranteed to converge,
+ due to roundoff error.   This problem is detected and an exception is thrown.
+ Clients can choose to rerun the noding using a lower precision model.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html#MAX_ITER">MAX_ITER</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html#IteratedNoder(com.vividsolutions.jts.geom.PrecisionModel)">IteratedNoder</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fully nodes a list of <CODE>SegmentStrings</CODE>, i.e.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html#setMaximumIterations(int)">setMaximumIterations</A></B>(int&nbsp;maxIter)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of noding iterations performed before
+ the noding is aborted.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MAX_ITER"><!-- --></A><H3>
+MAX_ITER</H3>
+<PRE>
+public static final int <B>MAX_ITER</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../constant-values.html#com.vividsolutions.jts.noding.IteratedNoder.MAX_ITER">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IteratedNoder(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+IteratedNoder</H3>
+<PRE>
+public <B>IteratedNoder</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setMaximumIterations(int)"><!-- --></A><H3>
+setMaximumIterations</H3>
+<PRE>
+public void <B>setMaximumIterations</B>(int&nbsp;maxIter)</PRE>
+<DL>
+<DD>Sets the maximum number of noding iterations performed before
+ the noding is aborted.
+ Experience suggests that this should rarely need to be changed
+ from the default.
+ The default is MAX_ITER.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>maxIter</CODE> - the maximum number of iterations to perform</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;segStrings)
+                  throws <A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></PRE>
+<DL>
+<DD>Fully nodes a list of <CODE>SegmentStrings</CODE>, i.e. peforms noding iteratively
+ until no intersections are found between segments.
+ Maintains labelling of edges correctly through
+ the noding.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segStrings</CODE> - a collection of SegmentStrings to be noded
+<DT><B>Returns:</B><DD>a collection of the noded SegmentStrings
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if the iterated noding fails to converge.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IteratedNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MCIndexNoder.SegmentOverlapAction
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.MCIndexNoder.SegmentOverlapAction class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MCIndexNoder.SegmentOverlapAction";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexNoder.SegmentOverlapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class MCIndexNoder.SegmentOverlapAction</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.MCIndexNoder.SegmentOverlapAction</B>
+</PRE>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MCIndexNoder.SegmentOverlapAction</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A></DL>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.index.chain.<A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlapSeg1">overlapSeg1</A>, <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlapSeg2">overlapSeg2</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html#MCIndexNoder.SegmentOverlapAction(com.vividsolutions.jts.noding.SegmentIntersector)">MCIndexNoder.SegmentOverlapAction</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>&nbsp;si)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html#overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)">overlap</A></B>(<A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc1,
+        int&nbsp;start1,
+        <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc2,
+        int&nbsp;start2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This function can be overridden if the original chains are needed</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.chain.<A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlap(com.vividsolutions.jts.geom.LineSegment, com.vividsolutions.jts.geom.LineSegment)">overlap</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MCIndexNoder.SegmentOverlapAction(com.vividsolutions.jts.noding.SegmentIntersector)"><!-- --></A><H3>
+MCIndexNoder.SegmentOverlapAction</H3>
+<PRE>
+public <B>MCIndexNoder.SegmentOverlapAction</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>&nbsp;si)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)"><!-- --></A><H3>
+overlap</H3>
+<PRE>
+public void <B>overlap</B>(<A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc1,
+                    int&nbsp;start1,
+                    <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc2,
+                    int&nbsp;start2)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A></CODE></B></DD>
+<DD>This function can be overridden if the original chains are needed
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)">overlap</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>start1</CODE> - the index of the start of the overlapping segment from mc1<DD><CODE>start2</CODE> - the index of the start of the overlapping segment from mc2</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexNoder.SegmentOverlapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/MCIndexNoder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,379 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MCIndexNoder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.MCIndexNoder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MCIndexNoder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class MCIndexNoder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">com.vividsolutions.jts.noding.SinglePassNoder</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.MCIndexNoder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MCIndexNoder</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></DL>
+
+<P>
+Nodes a set of <CODE>SegmentStrings</CODE> using a index based
+ on <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s and a <A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A>.
+ The <A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A> used should be something that supports
+ envelope (range) queries efficiently (such as a <CODE>Quadtree</CODE>
+ or <A HREF="../../../../com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>STRtree</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder.SegmentOverlapAction</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#segInt">segInt</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html#MCIndexNoder()">MCIndexNoder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;inputSegStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html#getIndex()">getIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html#getMonotoneChains()">getMonotoneChains</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#setSegmentIntersector(com.vividsolutions.jts.noding.SegmentIntersector)">setSegmentIntersector</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MCIndexNoder()"><!-- --></A><H3>
+MCIndexNoder</H3>
+<PRE>
+public <B>MCIndexNoder</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getMonotoneChains()"><!-- --></A><H3>
+getMonotoneChains</H3>
+<PRE>
+public java.util.List <B>getMonotoneChains</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndex()"><!-- --></A><H3>
+getIndex</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A> <B>getIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></B></DD>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;inputSegStrings)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></B></DD>
+<DD>Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>inputSegStrings</CODE> - a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Noder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Noder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Noder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,252 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+Noder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.Noder interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Noder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Noder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Interface Noder</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>Noder</B></DL>
+
+<P>
+Computes all intersections between segments in a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Intersections found are represented as <A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentNode</CODE></A>s and added to the
+ <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in which they occur.
+ As a final step in the noding a new set of segment strings split
+ at the nodes may be returned.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;segStrings)</PRE>
+<DL>
+<DD>Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segStrings</CODE> - a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Noder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/NodingValidator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/NodingValidator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/NodingValidator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,269 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+NodingValidator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.NodingValidator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NodingValidator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodingValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class NodingValidator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.NodingValidator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>NodingValidator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Validates that a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s is correctly noded.
+ Throws an appropriate exception if an noding error is found.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html#NodingValidator(java.util.Collection)">NodingValidator</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new validator for the given collection 
+ of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html#checkValid()">checkValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether the supplied segment strings
+ are correctly noded.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NodingValidator(java.util.Collection)"><!-- --></A><H3>
+NodingValidator</H3>
+<PRE>
+public <B>NodingValidator</B>(java.util.Collection&nbsp;segStrings)</PRE>
+<DL>
+<DD>Creates a new validator for the given collection 
+ of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+<P>
+<DT><B>Parameters:</B><DD><CODE>segStrings</CODE> - a collection of SegmentStrings</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="checkValid()"><!-- --></A><H3>
+checkValid</H3>
+<PRE>
+public void <B>checkValid</B>()</PRE>
+<DL>
+<DD>Checks whether the supplied segment strings
+ are correctly noded.  Throws an exception if they are not.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.RuntimeException</CODE> - if the SegmentStrings are not correctly noded</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodingValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Octant.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Octant.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/Octant.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+Octant
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.Octant class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Octant";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Octant.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class Octant</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.Octant</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Octant</B><DT>extends java.lang.Object</DL>
+
+<P>
+Methods for computing and working with octants of the Cartesian plane
+ Octants are numbered as follows:
+ <pre>
+  \2|1/
+ 3 \|/ 0
+ ---+--
+ 4 /|\ 7
+  /5|6\
+ <pre>
+ If line segments lie along a coordinate axis, the octant is the lower of the two
+ possible values.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/Octant.html#octant(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">octant</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the octant of a directed line segment from p0 to p1.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/Octant.html#octant(double, double)">octant</A></B>(double&nbsp;dx,
+       double&nbsp;dy)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the octant of a directed line segment (specified as x and y
+ displacements, which cannot both be 0).</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="octant(double, double)"><!-- --></A><H3>
+octant</H3>
+<PRE>
+public static int <B>octant</B>(double&nbsp;dx,
+                         double&nbsp;dy)</PRE>
+<DL>
+<DD>Returns the octant of a directed line segment (specified as x and y
+ displacements, which cannot both be 0).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="octant(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+octant</H3>
+<PRE>
+public static int <B>octant</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Returns the octant of a directed line segment from p0 to p1.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Octant.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/OrientedCoordinateArray.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/OrientedCoordinateArray.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/OrientedCoordinateArray.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,274 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OrientedCoordinateArray
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.OrientedCoordinateArray class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OrientedCoordinateArray";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OrientedCoordinateArray.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class OrientedCoordinateArray</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.OrientedCoordinateArray</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>OrientedCoordinateArray</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+Allows comparing <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in an orientation-independent way.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html#OrientedCoordinateArray(com.vividsolutions.jts.geom.Coordinate[])">OrientedCoordinateArray</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><CODE>OrientedCoordinateArray</CODE></A>
+ for the given <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two <A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><CODE>OrientedCoordinateArray</CODE></A>s for their relative order</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OrientedCoordinateArray(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+OrientedCoordinateArray</H3>
+<PRE>
+public <B>OrientedCoordinateArray</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Creates a new <A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><CODE>OrientedCoordinateArray</CODE></A>
+ for the given <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array.
+<P>
+<DT><B>Parameters:</B><DD><CODE>pts</CODE> - the coordinates to orient</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o1)</PRE>
+<DL>
+<DD>Compares two <A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><CODE>OrientedCoordinateArray</CODE></A>s for their relative order
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>-1 this one is smaller</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OrientedCoordinateArray.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/ScaledNoder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/ScaledNoder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/ScaledNoder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,344 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ScaledNoder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.ScaledNoder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ScaledNoder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ScaledNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class ScaledNoder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.ScaledNoder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ScaledNoder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DL>
+
+<P>
+Wraps a <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A> and transforms its input
+ into the integer domain.
+ This is intended for use with Snap-Rounding noders,
+ which typically are only intended to work in the integer domain.
+ Offsets can be provided to increase the number of digits of available precision.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html#ScaledNoder(com.vividsolutions.jts.noding.Noder, double)">ScaledNoder</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>&nbsp;noder,
+            double&nbsp;scaleFactor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html#ScaledNoder(com.vividsolutions.jts.noding.Noder, double, double, double)">ScaledNoder</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>&nbsp;noder,
+            double&nbsp;scaleFactor,
+            double&nbsp;offsetX,
+            double&nbsp;offsetY)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;inputSegStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html#isIntegerPrecision()">isIntegerPrecision</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ScaledNoder(com.vividsolutions.jts.noding.Noder, double)"><!-- --></A><H3>
+ScaledNoder</H3>
+<PRE>
+public <B>ScaledNoder</B>(<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>&nbsp;noder,
+                   double&nbsp;scaleFactor)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="ScaledNoder(com.vividsolutions.jts.noding.Noder, double, double, double)"><!-- --></A><H3>
+ScaledNoder</H3>
+<PRE>
+public <B>ScaledNoder</B>(<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>&nbsp;noder,
+                   double&nbsp;scaleFactor,
+                   double&nbsp;offsetX,
+                   double&nbsp;offsetY)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isIntegerPrecision()"><!-- --></A><H3>
+isIntegerPrecision</H3>
+<PRE>
+public boolean <B>isIntegerPrecision</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;inputSegStrings)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>inputSegStrings</CODE> - a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ScaledNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentIntersector.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentIntersector.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentIntersector.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,238 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentIntersector
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentIntersector interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentIntersector";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Interface SegmentIntersector</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public interface <B>SegmentIntersector</B></DL>
+
+<P>
+Computes the intersections between two line segments in <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+ and adds them to each string.
+ The <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> is passed to a <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>.
+ The <CODE>addIntersections</CODE> method is called whenever the <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>
+ detects that two SegmentStrings <i>might</i> intersect.
+ This class is an example of the <i>Strategy</i> pattern.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)">processIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                     int&nbsp;segIndex0,
+                     <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                     int&nbsp;segIndex1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> interface to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+processIntersections</H3>
+<PRE>
+public void <B>processIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e0,
+                                 int&nbsp;segIndex0,
+                                 <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;e1,
+                                 int&nbsp;segIndex1)</PRE>
+<DL>
+<DD>This method is called by clients
+ of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> interface to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentIntersector.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNode.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNode.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNode.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,386 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentNode
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentNode class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentNode";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentNode.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SegmentNode</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SegmentNode</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SegmentNode</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+Represents an intersection point between two <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#coord">coord</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#segmentIndex">segmentIndex</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#SegmentNode(com.vividsolutions.jts.noding.SegmentString, com.vividsolutions.jts.geom.Coordinate, int, int)">SegmentNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;segString,
+            <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+            int&nbsp;segmentIndex,
+            int&nbsp;segmentOctant)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#isEndPoint(int)">isEndPoint</A></B>(int&nbsp;maxSegmentIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#isInterior()">isInterior</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="coord"><!-- --></A><H3>
+coord</H3>
+<PRE>
+public final <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>coord</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="segmentIndex"><!-- --></A><H3>
+segmentIndex</H3>
+<PRE>
+public final int <B>segmentIndex</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentNode(com.vividsolutions.jts.noding.SegmentString, com.vividsolutions.jts.geom.Coordinate, int, int)"><!-- --></A><H3>
+SegmentNode</H3>
+<PRE>
+public <B>SegmentNode</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;segString,
+                   <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                   int&nbsp;segmentIndex,
+                   int&nbsp;segmentOctant)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isInterior()"><!-- --></A><H3>
+isInterior</H3>
+<PRE>
+public boolean <B>isInterior</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isEndPoint(int)"><!-- --></A><H3>
+isEndPoint</H3>
+<PRE>
+public boolean <B>isEndPoint</B>(int&nbsp;maxSegmentIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>-1 this SegmentNode is located before the argument location</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentNode.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNodeList.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNodeList.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentNodeList.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,349 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentNodeList
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentNodeList class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentNodeList";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentNodeList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SegmentNodeList</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SegmentNodeList</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SegmentNodeList</B><DT>extends java.lang.Object</DL>
+
+<P>
+A list of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentNode</CODE></A>s present along a noded <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html#SegmentNodeList(com.vividsolutions.jts.noding.SegmentString)">SegmentNodeList</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html#add(com.vividsolutions.jts.geom.Coordinate, int)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;intPt,
+    int&nbsp;segmentIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an intersection into the list, if it isn't already there.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html#addSplitEdges(java.util.Collection)">addSplitEdges</A></B>(java.util.Collection&nbsp;edgeList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates new edges for all the edges that the intersections in this
+ list split the parent edge into.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html#getEdge()">getEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns an iterator of SegmentNodes</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentNodeList(com.vividsolutions.jts.noding.SegmentString)"><!-- --></A><H3>
+SegmentNodeList</H3>
+<PRE>
+public <B>SegmentNodeList</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;edge)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getEdge()"><!-- --></A><H3>
+getEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A> <B>getEdge</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Coordinate, int)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A> <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;intPt,
+                       int&nbsp;segmentIndex)</PRE>
+<DL>
+<DD>Adds an intersection into the list, if it isn't already there.
+ The input segmentIndex and dist are expected to be normalized.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the SegmentIntersection found or added</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD>returns an iterator of SegmentNodes
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addSplitEdges(java.util.Collection)"><!-- --></A><H3>
+addSplitEdges</H3>
+<PRE>
+public void <B>addSplitEdges</B>(java.util.Collection&nbsp;edgeList)</PRE>
+<DL>
+<DD>Creates new edges for all the edges that the intersections in this
+ list split the parent edge into.
+ Adds the edges to the provided argument list
+ (this is so a single list can be used to accumulate all split edges
+ for a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentNodeList.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentPointComparator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentPointComparator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentPointComparator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentPointComparator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentPointComparator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentPointComparator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentPointComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SegmentPointComparator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SegmentPointComparator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SegmentPointComparator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements a robust method of comparing the relative position of two
+ points along the same segment.
+ The coordinates are assumed to lie "near" the segment.
+ This means that this algorithm will only return correct results
+ if the input coordinates
+ have the same precision and correspond to rounded values
+ of exact coordinates lying on the segment.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html#SegmentPointComparator()">SegmentPointComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html#compare(int, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">compare</A></B>(int&nbsp;octant,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+        <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s for their relative position along a segment
+ lying in the specified <A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><CODE>Octant</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html#relativeSign(double, double)">relativeSign</A></B>(double&nbsp;x0,
+             double&nbsp;x1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentPointComparator()"><!-- --></A><H3>
+SegmentPointComparator</H3>
+<PRE>
+public <B>SegmentPointComparator</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="compare(int, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+compare</H3>
+<PRE>
+public static int <B>compare</B>(int&nbsp;octant,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                          <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD>Compares two <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s for their relative position along a segment
+ lying in the specified <A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><CODE>Octant</CODE></A>.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>-1 node0 occurs first</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="relativeSign(double, double)"><!-- --></A><H3>
+relativeSign</H3>
+<PRE>
+public static int <B>relativeSign</B>(double&nbsp;x0,
+                               double&nbsp;x1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentPointComparator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentString.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentString.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentString.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,529 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentString
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentString class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentString";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SegmentString</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SegmentString</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SegmentString</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents a list of contiguous line segments,
+ and supports noding the segments.
+ The line segments are represented by an array of <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+ Intended to optimize the noding of contiguous segments by
+ reducing the number of allocated objects.
+ SegmentStrings can carry a context object, which is useful
+ for preserving topological or parentage information.
+ All noded substrings are initialized with the same context object.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#SegmentString(com.vividsolutions.jts.geom.Coordinate[], java.lang.Object)">SegmentString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+              java.lang.Object&nbsp;data)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new segment string from a list of vertices.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#addIntersection(com.vividsolutions.jts.geom.Coordinate, int)">addIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;intPt,
+                int&nbsp;segmentIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#addIntersection(com.vividsolutions.jts.algorithm.LineIntersector, int, int, int)">addIntersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                int&nbsp;segmentIndex,
+                int&nbsp;geomIndex,
+                int&nbsp;intIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add an SegmentNode for intersection intIndex.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#addIntersections(com.vividsolutions.jts.algorithm.LineIntersector, int, int)">addIntersections</A></B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                 int&nbsp;segmentIndex,
+                 int&nbsp;geomIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds EdgeIntersections for one or both
+ intersections found for a segment of an edge to the edge intersection list.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getCoordinate(int)">getCoordinate</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getData()">getData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the user-defined data for this segment string.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getNodedSubstrings(java.util.Collection)">getNodedSubstrings</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getNodedSubstrings(java.util.Collection, java.util.Collection)">getNodedSubstrings</A></B>(java.util.Collection&nbsp;segStrings,
+                   java.util.Collection&nbsp;resultEdgelist)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getNodeList()">getNodeList</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#getSegmentOctant(int)">getSegmentOctant</A></B>(int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the octant of the segment starting at vertex <code>index</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#isClosed()">isClosed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#setData(java.lang.Object)">setData</A></B>(java.lang.Object&nbsp;data)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the user-defined data for this segment string.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentString(com.vividsolutions.jts.geom.Coordinate[], java.lang.Object)"><!-- --></A><H3>
+SegmentString</H3>
+<PRE>
+public <B>SegmentString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+                     java.lang.Object&nbsp;data)</PRE>
+<DL>
+<DD>Creates a new segment string from a list of vertices.
+<P>
+<DT><B>Parameters:</B><DD><CODE>pts</CODE> - the vertices of the segment string<DD><CODE>data</CODE> - the user-defined data of this segment string (may be null)</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNodedSubstrings(java.util.Collection)"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public static java.util.List <B>getNodedSubstrings</B>(java.util.Collection&nbsp;segStrings)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedSubstrings(java.util.Collection, java.util.Collection)"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public static void <B>getNodedSubstrings</B>(java.util.Collection&nbsp;segStrings,
+                                      java.util.Collection&nbsp;resultEdgelist)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getData()"><!-- --></A><H3>
+getData</H3>
+<PRE>
+public java.lang.Object <B>getData</B>()</PRE>
+<DL>
+<DD>Gets the user-defined data for this segment string.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the user-defined data</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setData(java.lang.Object)"><!-- --></A><H3>
+setData</H3>
+<PRE>
+public void <B>setData</B>(java.lang.Object&nbsp;data)</PRE>
+<DL>
+<DD>Sets the user-defined data for this segment string.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>data</CODE> - an Object containing user-defined data</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodeList()"><!-- --></A><H3>
+getNodeList</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A> <B>getNodeList</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public int <B>size</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate(int)"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isClosed()"><!-- --></A><H3>
+isClosed</H3>
+<PRE>
+public boolean <B>isClosed</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentOctant(int)"><!-- --></A><H3>
+getSegmentOctant</H3>
+<PRE>
+public int <B>getSegmentOctant</B>(int&nbsp;index)</PRE>
+<DL>
+<DD>Gets the octant of the segment starting at vertex <code>index</code>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>index</CODE> - the index of the vertex starting the segment.  Must not be
+ the last index in the vertex list
+<DT><B>Returns:</B><DD>the octant of the segment at the vertex</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addIntersections(com.vividsolutions.jts.algorithm.LineIntersector, int, int)"><!-- --></A><H3>
+addIntersections</H3>
+<PRE>
+public void <B>addIntersections</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                             int&nbsp;segmentIndex,
+                             int&nbsp;geomIndex)</PRE>
+<DL>
+<DD>Adds EdgeIntersections for one or both
+ intersections found for a segment of an edge to the edge intersection list.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addIntersection(com.vividsolutions.jts.algorithm.LineIntersector, int, int, int)"><!-- --></A><H3>
+addIntersection</H3>
+<PRE>
+public void <B>addIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li,
+                            int&nbsp;segmentIndex,
+                            int&nbsp;geomIndex,
+                            int&nbsp;intIndex)</PRE>
+<DL>
+<DD>Add an SegmentNode for intersection intIndex.
+ An intersection that falls exactly on a vertex
+ of the SegmentString is normalized
+ to use the higher of the two possible segmentIndexes
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addIntersection(com.vividsolutions.jts.geom.Coordinate, int)"><!-- --></A><H3>
+addIntersection</H3>
+<PRE>
+public void <B>addIntersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;intPt,
+                            int&nbsp;segmentIndex)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,222 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentStringDissolver.SegmentStringMerger
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentStringDissolver.SegmentStringMerger interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentStringDissolver.SegmentStringMerger";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentStringDissolver.SegmentStringMerger.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Interface SegmentStringDissolver.SegmentStringMerger</H2>
+<DL>
+<DT><B>Enclosing interface:</B><DD><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static interface <B>SegmentStringDissolver.SegmentStringMerger</B></DL>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html#merge(com.vividsolutions.jts.noding.SegmentString, com.vividsolutions.jts.noding.SegmentString, boolean)">merge</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;mergeTarget,
+      <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;ssToMerge,
+      boolean&nbsp;isSameOrientation)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Updates the context data of a SegmentString
+ when an identical (up to orientation) one is found during dissolving.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="merge(com.vividsolutions.jts.noding.SegmentString, com.vividsolutions.jts.noding.SegmentString, boolean)"><!-- --></A><H3>
+merge</H3>
+<PRE>
+public void <B>merge</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;mergeTarget,
+                  <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;ssToMerge,
+                  boolean&nbsp;isSameOrientation)</PRE>
+<DL>
+<DD>Updates the context data of a SegmentString
+ when an identical (up to orientation) one is found during dissolving.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>mergeTarget</CODE> - the segment string to update<DD><CODE>ssToMerge</CODE> - the segment string being dissolved<DD><CODE>isSameOrientation</CODE> - <code>true</code> if the strings are in the same direction,
+ <code>false</code> if they are opposite</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentStringDissolver.SegmentStringMerger.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SegmentStringDissolver.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SegmentStringDissolver
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SegmentStringDissolver class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentStringDissolver";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentStringDissolver.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SegmentStringDissolver</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SegmentStringDissolver</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SegmentStringDissolver</B><DT>extends java.lang.Object</DL>
+
+<P>
+Dissolves a noded collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to produce
+ a set of merged linework with unique segments.
+ A custom merging strategy can be applied when two identical (up to orientation)
+ strings are dissolved together.
+ The default merging strategy is simply to discard the merged string.
+ <p>
+ A common use for this class is to merge noded edges
+ while preserving topological labelling.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentStringDissolver.SegmentStringMerger</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding">SegmentStringDissolver.SegmentStringMerger</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html#SegmentStringDissolver()">SegmentStringDissolver</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a dissolver with the default merging strategy.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html#SegmentStringDissolver(com.vividsolutions.jts.noding.SegmentStringDissolver.SegmentStringMerger)">SegmentStringDissolver</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding">SegmentStringDissolver.SegmentStringMerger</A>&nbsp;merger)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a dissolver with a user-defined merge strategy.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html#dissolve(java.util.Collection)">dissolve</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dissolve all <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in the input <CODE>Collection</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html#dissolve(com.vividsolutions.jts.noding.SegmentString)">dissolve</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;segString)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dissolve the given <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html#getDissolved()">getDissolved</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the collection of dissolved (i.e.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentStringDissolver(com.vividsolutions.jts.noding.SegmentStringDissolver.SegmentStringMerger)"><!-- --></A><H3>
+SegmentStringDissolver</H3>
+<PRE>
+public <B>SegmentStringDissolver</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding">SegmentStringDissolver.SegmentStringMerger</A>&nbsp;merger)</PRE>
+<DL>
+<DD>Creates a dissolver with a user-defined merge strategy.
+<P>
+<DT><B>Parameters:</B><DD><CODE>merger</CODE> - the merging strategy to use</DL>
+<HR>
+
+<A NAME="SegmentStringDissolver()"><!-- --></A><H3>
+SegmentStringDissolver</H3>
+<PRE>
+public <B>SegmentStringDissolver</B>()</PRE>
+<DL>
+<DD>Creates a dissolver with the default merging strategy.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="dissolve(java.util.Collection)"><!-- --></A><H3>
+dissolve</H3>
+<PRE>
+public void <B>dissolve</B>(java.util.Collection&nbsp;segStrings)</PRE>
+<DL>
+<DD>Dissolve all <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in the input <CODE>Collection</CODE>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segStrings</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="dissolve(com.vividsolutions.jts.noding.SegmentString)"><!-- --></A><H3>
+dissolve</H3>
+<PRE>
+public void <B>dissolve</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;segString)</PRE>
+<DL>
+<DD>Dissolve the given <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segString</CODE> - the string to dissolve</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDissolved()"><!-- --></A><H3>
+getDissolved</H3>
+<PRE>
+public java.util.Collection <B>getDissolved</B>()</PRE>
+<DL>
+<DD>Gets the collection of dissolved (i.e. unique) <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the unique <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentStringDissolver.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SimpleNoder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SimpleNoder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SimpleNoder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,325 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SimpleNoder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SimpleNoder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleNoder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SimpleNoder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">com.vividsolutions.jts.noding.SinglePassNoder</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SimpleNoder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SimpleNoder</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></DL>
+
+<P>
+Nodes a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s by
+ performing a brute-force comparison of every segment to every other one.
+ This has n^2 performance, so is too slow for use on large numbers
+ of segments.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#segInt">segInt</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html#SimpleNoder()">SimpleNoder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;inputSegStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#setSegmentIntersector(com.vividsolutions.jts.noding.SegmentIntersector)">setSegmentIntersector</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleNoder()"><!-- --></A><H3>
+SimpleNoder</H3>
+<PRE>
+public <B>SimpleNoder</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></B></DD>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;inputSegStrings)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></B></DD>
+<DD>Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>inputSegStrings</CODE> - a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.noding.SinglePassNoder">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SinglePassNoder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SinglePassNoder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/SinglePassNoder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,360 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SinglePassNoder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.SinglePassNoder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SinglePassNoder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SinglePassNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding</FONT>
+<BR>
+Class SinglePassNoder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.SinglePassNoder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>, <A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>SinglePassNoder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DL>
+
+<P>
+Base class for <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>s which make a single
+ pass to find intersections.
+ This allows using a custom <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A>
+ (which for instance may simply identify intersections, rather than
+ insert them).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#segInt">segInt</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#SinglePassNoder()">SinglePassNoder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;segStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html#setSegmentIntersector(com.vividsolutions.jts.noding.SegmentIntersector)">setSegmentIntersector</A></B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>&nbsp;segInt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the SegmentIntersector to use with this noder.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="segInt"><!-- --></A><H3>
+segInt</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A> <B>segInt</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SinglePassNoder()"><!-- --></A><H3>
+SinglePassNoder</H3>
+<PRE>
+public <B>SinglePassNoder</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setSegmentIntersector(com.vividsolutions.jts.noding.SegmentIntersector)"><!-- --></A><H3>
+setSegmentIntersector</H3>
+<PRE>
+public void <B>setSegmentIntersector</B>(<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>&nbsp;segInt)</PRE>
+<DL>
+<DD>Sets the SegmentIntersector to use with this noder.
+ A SegmentIntersector will normally add intersection nodes
+ to the input segment strings, but it may not - it may
+ simply record the presence of intersections.
+ However, some Noders may require that intersections be added.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segInt</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public abstract void <B>computeNodes</B>(java.util.Collection&nbsp;segStrings)</PRE>
+<DL>
+<DD>Computes the noding for a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>segStrings</CODE> - a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public abstract java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SinglePassNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.noding
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/noding/package-summary.html" target="classFrame">com.vividsolutions.jts.noding</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Noder.html" title="interface in com.vividsolutions.jts.noding" target="classFrame"><I>Noder</I></A>
+<BR>
+<A HREF="SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding" target="classFrame"><I>SegmentIntersector</I></A>
+<BR>
+<A HREF="SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding" target="classFrame"><I>SegmentStringDissolver.SegmentStringMerger</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="FastNodingValidator.html" title="class in com.vividsolutions.jts.noding" target="classFrame">FastNodingValidator</A>
+<BR>
+<A HREF="InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">InteriorIntersectionFinder</A>
+<BR>
+<A HREF="IntersectionAdder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">IntersectionAdder</A>
+<BR>
+<A HREF="IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">IntersectionFinderAdder</A>
+<BR>
+<A HREF="IteratedNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">IteratedNoder</A>
+<BR>
+<A HREF="MCIndexNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">MCIndexNoder</A>
+<BR>
+<A HREF="NodingValidator.html" title="class in com.vividsolutions.jts.noding" target="classFrame">NodingValidator</A>
+<BR>
+<A HREF="Octant.html" title="class in com.vividsolutions.jts.noding" target="classFrame">Octant</A>
+<BR>
+<A HREF="OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding" target="classFrame">OrientedCoordinateArray</A>
+<BR>
+<A HREF="ScaledNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">ScaledNoder</A>
+<BR>
+<A HREF="SegmentNode.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentNode</A>
+<BR>
+<A HREF="SegmentNodeList.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentNodeList</A>
+<BR>
+<A HREF="SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentPointComparator</A>
+<BR>
+<A HREF="SegmentString.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentString</A>
+<BR>
+<A HREF="SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SegmentStringDissolver</A>
+<BR>
+<A HREF="SimpleNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SimpleNoder</A>
+<BR>
+<A HREF="SinglePassNoder.html" title="class in com.vividsolutions.jts.noding" target="classFrame">SinglePassNoder</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,261 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.noding
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.noding";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.noding
+</H2>
+Classes to compute nodings for arrangements of line segments and line segment sequences.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></B></TD>
+<TD>Computes all intersections between segments in a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A></B></TD>
+<TD>Computes the intersections between two line segments in <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+ and adds them to each string.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding">SegmentStringDissolver.SegmentStringMerger</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A></B></TD>
+<TD>Validates that a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s is correctly noded.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A></B></TD>
+<TD>Finds an interior intersection in a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s,
+ if one exists.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A></B></TD>
+<TD>Computes the intersections between two line segments in <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+ and adds them to each string.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A></B></TD>
+<TD>Finds proper and interior intersections in a set of SegmentStrings,
+ and adds them as nodes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A></B></TD>
+<TD>Nodes a set of SegmentStrings completely.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A></B></TD>
+<TD>Nodes a set of <CODE>SegmentStrings</CODE> using a index based
+ on <A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s and a <A HREF="../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding">NodingValidator</A></B></TD>
+<TD>Validates that a collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s is correctly noded.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding">Octant</A></B></TD>
+<TD>Methods for computing and working with octants of the Cartesian plane
+ Octants are numbered as follows:
+ </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding">OrientedCoordinateArray</A></B></TD>
+<TD>Allows comparing <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in an orientation-independent way.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A></B></TD>
+<TD>Wraps a <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A> and transforms its input
+ into the integer domain.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A></B></TD>
+<TD>Represents an intersection point between two <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A></B></TD>
+<TD>A list of the <A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentNode</CODE></A>s present along a noded <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding">SegmentPointComparator</A></B></TD>
+<TD>Implements a robust method of comparing the relative position of two
+ points along the same segment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A></B></TD>
+<TD>Represents a list of contiguous line segments,
+ and supports noding the segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A></B></TD>
+<TD>Dissolves a noded collection of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to produce
+ a set of merged linework with unique segments.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A></B></TD>
+<TD>Nodes a set of <A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s by
+ performing a brute-force comparison of every segment to every other one.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A></B></TD>
+<TD>Base class for <A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>s which make a single
+ pass to find intersections.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.noding Description
+</H2>
+
+<P>
+Classes to compute nodings for arrangements of line segments and line segment sequences.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.noding Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.noding Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.noding
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>FastNodingValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>InteriorIntersectionFinder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>IntersectionAdder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>IntersectionFinderAdder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>IteratedNoder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="../../../../com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainOverlapAction</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>MCIndexNoder.SegmentOverlapAction</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>NodingValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>Octant</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>OrientedCoordinateArray</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>ScaledNoder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>SegmentNode</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>SegmentNodeList</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>SegmentPointComparator</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>SegmentString</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>SegmentStringDissolver</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding"><B>SinglePassNoder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>MCIndexNoder</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>SimpleNoder</B></A></UL>
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><B>Noder</B></A><LI TYPE="circle">interface com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>SegmentIntersector</B></A><LI TYPE="circle">interface com.vividsolutions.jts.noding.<A HREF="../../../../com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><B>SegmentStringDissolver.SegmentStringMerger</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/linearref/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/HotPixel.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/HotPixel.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/HotPixel.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,332 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+HotPixel
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround.HotPixel class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="HotPixel";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="HotPixel.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding.snapround</FONT>
+<BR>
+Class HotPixel</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.snapround.HotPixel</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>HotPixel</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements a "hot pixel" as used in the Snap Rounding algorithm.
+ A hot pixel contains the interior of the tolerance square and
+ the boundary
+ <b>minus</b> the top and right segments.
+ <p>
+ The hot pixel operations are all computed in the integer domain
+ to avoid rounding problems.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html#HotPixel(com.vividsolutions.jts.geom.Coordinate, double, com.vividsolutions.jts.algorithm.LineIntersector)">HotPixel</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+         double&nbsp;scaleFactor,
+         <A HREF="../../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html#getSafeEnvelope()">getSafeEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a "safe" envelope that is guaranteed to contain the hot pixel</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">intersects</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+           <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html#intersectsScaled(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">intersectsScaled</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                 <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="HotPixel(com.vividsolutions.jts.geom.Coordinate, double, com.vividsolutions.jts.algorithm.LineIntersector)"><!-- --></A><H3>
+HotPixel</H3>
+<PRE>
+public <B>HotPixel</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+                double&nbsp;scaleFactor,
+                <A HREF="../../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSafeEnvelope()"><!-- --></A><H3>
+getSafeEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getSafeEnvelope</B>()</PRE>
+<DL>
+<DD>Returns a "safe" envelope that is guaranteed to contain the hot pixel
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                          <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersectsScaled(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+intersectsScaled</H3>
+<PRE>
+public boolean <B>intersectsScaled</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="HotPixel.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MCIndexPointSnapper.HotPixelSnapAction
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround.MCIndexPointSnapper.HotPixelSnapAction class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MCIndexPointSnapper.HotPixelSnapAction";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexPointSnapper.HotPixelSnapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding.snapround</FONT>
+<BR>
+Class MCIndexPointSnapper.HotPixelSnapAction</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">com.vividsolutions.jts.index.chain.MonotoneChainSelectAction</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.snapround.MCIndexPointSnapper.HotPixelSnapAction</B>
+</PRE>
+<DL>
+<DT><B>Enclosing class:</B><DD><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MCIndexPointSnapper.HotPixelSnapAction</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A></DL>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html#MCIndexPointSnapper.HotPixelSnapAction(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)">MCIndexPointSnapper.HotPixelSnapAction</A></B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPixel,
+                                       <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;parentEdge,
+                                       int&nbsp;vertexIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html#isNodeAdded()">isNodeAdded</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html#select(com.vividsolutions.jts.index.chain.MonotoneChain, int)">select</A></B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc,
+       int&nbsp;startIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This function can be overridden if the original chain is needed</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.index.chain.MonotoneChainSelectAction"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.index.chain.<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#select(com.vividsolutions.jts.geom.LineSegment)">select</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MCIndexPointSnapper.HotPixelSnapAction(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+MCIndexPointSnapper.HotPixelSnapAction</H3>
+<PRE>
+public <B>MCIndexPointSnapper.HotPixelSnapAction</B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPixel,
+                                              <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;parentEdge,
+                                              int&nbsp;vertexIndex)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isNodeAdded()"><!-- --></A><H3>
+isNodeAdded</H3>
+<PRE>
+public boolean <B>isNodeAdded</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="select(com.vividsolutions.jts.index.chain.MonotoneChain, int)"><!-- --></A><H3>
+select</H3>
+<PRE>
+public void <B>select</B>(<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>&nbsp;mc,
+                   int&nbsp;startIndex)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A></CODE></B></DD>
+<DD>This function can be overridden if the original chain is needed
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#select(com.vividsolutions.jts.index.chain.MonotoneChain, int)">select</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexPointSnapper.HotPixelSnapAction.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,336 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MCIndexPointSnapper
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround.MCIndexPointSnapper class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MCIndexPointSnapper";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexPointSnapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding.snapround</FONT>
+<BR>
+Class MCIndexPointSnapper</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.snapround.MCIndexPointSnapper</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MCIndexPointSnapper</B><DT>extends java.lang.Object</DL>
+
+<P>
+"Snaps" all <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in a <A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A> containing
+ <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s to a given <A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><CODE>HotPixel</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper.HotPixelSnapAction</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#nSnaps">nSnaps</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#MCIndexPointSnapper(java.util.Collection, com.vividsolutions.jts.index.SpatialIndex)">MCIndexPointSnapper</A></B>(java.util.Collection&nbsp;monoChains,
+                    <A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#snap(com.vividsolutions.jts.noding.snapround.HotPixel)">snap</A></B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPixel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#snap(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)">snap</A></B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPixel,
+     <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;parentEdge,
+     int&nbsp;vertexIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Snaps (nodes) all interacting segments to this hot pixel.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="nSnaps"><!-- --></A><H3>
+nSnaps</H3>
+<PRE>
+public static int <B>nSnaps</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MCIndexPointSnapper(java.util.Collection, com.vividsolutions.jts.index.SpatialIndex)"><!-- --></A><H3>
+MCIndexPointSnapper</H3>
+<PRE>
+public <B>MCIndexPointSnapper</B>(java.util.Collection&nbsp;monoChains,
+                           <A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>&nbsp;index)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="snap(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+snap</H3>
+<PRE>
+public boolean <B>snap</B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPixel,
+                    <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;parentEdge,
+                    int&nbsp;vertexIndex)</PRE>
+<DL>
+<DD>Snaps (nodes) all interacting segments to this hot pixel.
+ The hot pixel may represent a vertex of an edge,
+ in which case this routine uses the optimization
+ of not noding the vertex itself
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>hotPixel</CODE> - the hot pixel to snap to<DD><CODE>parentEdge</CODE> - the edge containing the vertex, if applicable, or <code>null</code><DD><CODE>vertexIndex</CODE> - the index of the vertex, if applicable, or -1
+<DT><B>Returns:</B><DD><code>true</code> if a node was added for this pixel</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="snap(com.vividsolutions.jts.noding.snapround.HotPixel)"><!-- --></A><H3>
+snap</H3>
+<PRE>
+public boolean <B>snap</B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPixel)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexPointSnapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,335 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MCIndexSnapRounder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround.MCIndexSnapRounder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MCIndexSnapRounder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexSnapRounder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding.snapround</FONT>
+<BR>
+Class MCIndexSnapRounder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.snapround.MCIndexSnapRounder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>MCIndexSnapRounder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DL>
+
+<P>
+Uses Snap Rounding to compute a rounded,
+ fully noded arrangement from a set of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Implements the Snap Rounding technique described in Hobby, Guibas & Marimont,
+ and Goodrich et al.
+ Snap Rounding assumes that all vertices lie on a uniform grid
+ (hence the precision model of the input must be fixed precision,
+ and all the input vertices must be rounded to that precision).
+ <p>
+ This implementation uses a monotone chains and a spatial index to
+ speed up the intersection tests.
+ <p>
+ This implementation appears to be fully robust using an integer precision model.
+ It will function with non-integer precision models, but the
+ results are not 100% guaranteed to be correctly noded.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#MCIndexSnapRounder(com.vividsolutions.jts.geom.PrecisionModel)">MCIndexSnapRounder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;inputSegmentStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#computeVertexSnaps(java.util.Collection)">computeVertexSnaps</A></B>(java.util.Collection&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes nodes introduced as a result of
+ snapping segments to vertices of other segments</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MCIndexSnapRounder(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+MCIndexSnapRounder</H3>
+<PRE>
+public <B>MCIndexSnapRounder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;inputSegmentStrings)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Computes the noding for a collection of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>inputSegmentStrings</CODE> - a collection of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeVertexSnaps(java.util.Collection)"><!-- --></A><H3>
+computeVertexSnaps</H3>
+<PRE>
+public void <B>computeVertexSnaps</B>(java.util.Collection&nbsp;edges)</PRE>
+<DL>
+<DD>Computes nodes introduced as a result of
+ snapping segments to vertices of other segments
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MCIndexSnapRounder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,365 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SimpleSnapRounder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround.SimpleSnapRounder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleSnapRounder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleSnapRounder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.noding.snapround</FONT>
+<BR>
+Class SimpleSnapRounder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.noding.snapround.SimpleSnapRounder</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>SimpleSnapRounder</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></DL>
+
+<P>
+Uses Snap Rounding to compute a rounded,
+ fully noded arrangement from a set of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Implements the Snap Rounding technique described in Hobby, Guibas & Marimont,
+ and Goodrich et al.
+ Snap Rounding assumes that all vertices lie on a uniform grid
+ (hence the precision model of the input must be fixed precision,
+ and all the input vertices must be rounded to that precision).
+ <p>
+ This implementation uses simple iteration over the line segments.
+ <p>
+ This implementation appears to be fully robust using an integer precision model.
+ It will function with non-integer precision models, but the
+ results are not 100% guaranteed to be correctly noded.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#SimpleSnapRounder(com.vividsolutions.jts.geom.PrecisionModel)">SimpleSnapRounder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#addSnappedNode(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)">addSnappedNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPix,
+               <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;segStr,
+               int&nbsp;segIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a new node (equal to the snap pt) to the segment
+ if the segment passes through the hot pixel</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#computeNodes(java.util.Collection)">computeNodes</A></B>(java.util.Collection&nbsp;inputSegmentStrings)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the noding for a collection of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#computeVertexSnaps(java.util.Collection)">computeVertexSnaps</A></B>(java.util.Collection&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes nodes introduced as a result of
+ snapping segments to vertices of other segments</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#getNodedSubstrings()">getNodedSubstrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleSnapRounder(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+SimpleSnapRounder</H3>
+<PRE>
+public <B>SimpleSnapRounder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNodedSubstrings()"><!-- --></A><H3>
+getNodedSubstrings</H3>
+<PRE>
+public java.util.Collection <B>getNodedSubstrings</B>()</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+ The SegmentStrings have the same context as their parent.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()">getNodedSubstrings</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeNodes(java.util.Collection)"><!-- --></A><H3>
+computeNodes</H3>
+<PRE>
+public void <B>computeNodes</B>(java.util.Collection&nbsp;inputSegmentStrings)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></B></DD>
+<DD>Computes the noding for a collection of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+ Some Noders may add all these nodes to the input SegmentStrings;
+ others may only add some or none at all.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)">computeNodes</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>inputSegmentStrings</CODE> - a collection of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to node</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeVertexSnaps(java.util.Collection)"><!-- --></A><H3>
+computeVertexSnaps</H3>
+<PRE>
+public void <B>computeVertexSnaps</B>(java.util.Collection&nbsp;edges)</PRE>
+<DL>
+<DD>Computes nodes introduced as a result of
+ snapping segments to vertices of other segments
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addSnappedNode(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)"><!-- --></A><H3>
+addSnappedNode</H3>
+<PRE>
+public static boolean <B>addSnappedNode</B>(<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>&nbsp;hotPix,
+                                     <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>&nbsp;segStr,
+                                     int&nbsp;segIndex)</PRE>
+<DL>
+<DD>Adds a new node (equal to the snap pt) to the segment
+ if the segment passes through the hot pixel
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>hotPix</CODE> - <DD><CODE>segStr</CODE> - <DD><CODE>segIndex</CODE> - 
+<DT><B>Returns:</B><DD><code>true</code> if a node was added</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleSnapRounder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.noding.snapround
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/package-summary.html" target="classFrame">com.vividsolutions.jts.noding.snapround</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">HotPixel</A>
+<BR>
+<A HREF="MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">MCIndexPointSnapper</A>
+<BR>
+<A HREF="MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">MCIndexSnapRounder</A>
+<BR>
+<A HREF="SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround" target="classFrame">SimpleSnapRounder</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,176 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.noding.snapround
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.noding.snapround package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.noding.snapround";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.noding.snapround
+</H2>
+Contains classes to implement the Snap Rounding algorithm for noding linestrings.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A></B></TD>
+<TD>Implements a "hot pixel" as used in the Snap Rounding algorithm.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A></B></TD>
+<TD>"Snaps" all <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in a <A HREF="../../../../../com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A> containing
+ <A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s to a given <A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><CODE>HotPixel</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A></B></TD>
+<TD>Uses Snap Rounding to compute a rounded,
+ fully noded arrangement from a set of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A></B></TD>
+<TD>Uses Snap Rounding to compute a rounded,
+ fully noded arrangement from a set of <A HREF="../../../../../com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.noding.snapround Description
+</H2>
+
+<P>
+Contains classes to implement the Snap Rounding algorithm for noding linestrings.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/noding/snapround/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.noding.snapround Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.noding.snapround Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.noding.snapround
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><B>HotPixel</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexPointSnapper</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexSnapRounder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="../../../../../com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainSelectAction</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexPointSnapper.HotPixelSnapAction</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="../../../../../com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>SimpleSnapRounder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/noding/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/BoundaryOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/BoundaryOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/BoundaryOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,281 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+BoundaryOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.BoundaryOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BoundaryOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation</FONT>
+<BR>
+Class BoundaryOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.BoundaryOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>BoundaryOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the boundary of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ Allows specifying the <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> to be used.
+ This operation will always return a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> of the appropriate
+ dimension for the boundary (even if the input geometry is empty).
+ The boundary of zero-dimensional geometries (Points) is
+ always the empty <A HREF="../../../../com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html#BoundaryOp(com.vividsolutions.jts.geom.Geometry)">BoundaryOp</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html#BoundaryOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)">BoundaryOp</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+           <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;bnRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html#getBoundary()">getBoundary</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BoundaryOp(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+BoundaryOp</H3>
+<PRE>
+public <B>BoundaryOp</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="BoundaryOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+BoundaryOp</H3>
+<PRE>
+public <B>BoundaryOp</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                  <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;bnRule)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getBoundary()"><!-- --></A><H3>
+getBoundary</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getBoundary</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BoundaryOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/GeometryGraphOperation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/GeometryGraphOperation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/GeometryGraphOperation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,401 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+GeometryGraphOperation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.GeometryGraphOperation class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryGraphOperation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryGraphOperation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation</FONT>
+<BR>
+Class GeometryGraphOperation</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.GeometryGraphOperation</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>, <A HREF="../../../../com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>GeometryGraphOperation</B><DT>extends java.lang.Object</DL>
+
+<P>
+The base class for operations that require <A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#arg">arg</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The operation args into an array so they can be accessed by index</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#cga">cga</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#li">li</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#resultPrecisionModel">resultPrecisionModel</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry)">GeometryGraphOperation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">GeometryGraphOperation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)">GeometryGraphOperation</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                       <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                       <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#getArgGeometry(int)">getArgGeometry</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#setComputationPrecision(com.vividsolutions.jts.geom.PrecisionModel)">setComputationPrecision</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="cga"><!-- --></A><H3>
+cga</H3>
+<PRE>
+protected final <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A> <B>cga</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="li"><!-- --></A><H3>
+li</H3>
+<PRE>
+protected final <A HREF="../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A> <B>li</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="resultPrecisionModel"><!-- --></A><H3>
+resultPrecisionModel</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A> <B>resultPrecisionModel</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="arg"><!-- --></A><H3>
+arg</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[] <B>arg</B></PRE>
+<DL>
+<DD>The operation args into an array so they can be accessed by index
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+GeometryGraphOperation</H3>
+<PRE>
+public <B>GeometryGraphOperation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+GeometryGraphOperation</H3>
+<PRE>
+public <B>GeometryGraphOperation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                              <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+GeometryGraphOperation</H3>
+<PRE>
+public <B>GeometryGraphOperation</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getArgGeometry(int)"><!-- --></A><H3>
+getArgGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getArgGeometry</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setComputationPrecision(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+setComputationPrecision</H3>
+<PRE>
+protected void <B>setComputationPrecision</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryGraphOperation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/IsSimpleOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/IsSimpleOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/IsSimpleOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,422 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+IsSimpleOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.IsSimpleOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IsSimpleOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IsSimpleOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation</FONT>
+<BR>
+Class IsSimpleOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.IsSimpleOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>IsSimpleOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Tests whether a <code>Geometry</code> is simple.
+ In general, the SFS specification of simplicity
+ follows the rule:
+ <ul>
+    <li> A Geometry is simple if and only if the only self-intersections are at
+    boundary points.
+ </ul>
+ This definition relies on the definition of boundary points.
+ The SFS uses the Mod-2 rule to determine which points are on the boundary of
+ lineal geometries, but this class supports
+ using other <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A>s as well.
+ <p>
+ Simplicity is defined for each <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> subclass as follows:
+ <ul>
+ <li>Valid polygonal geometries are simple by definition, so
+ <code>isSimple</code> trivially returns true.
+ (Hint: in order to check if a polygonal geometry has self-intersections,
+ use <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html#isValid()"><CODE>Geometry.isValid()</CODE></A>).
+ <li>Linear geometries are simple iff they do not self-intersect at points
+ other than boundary points. 
+ (Using the Mod-2 rule, this means that closed linestrings
+ cannot be touched at their endpoints, since these are
+ interior points, not boundary points).
+ <li>Zero-dimensional geometries (points) are simple iff they have no
+ repeated points.
+ <li>Empty <code>Geometry</code>s are always simple
+ </ul>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp()">IsSimpleOp</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use IsSimpleOp(Geometry)</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp(com.vividsolutions.jts.geom.Geometry)">IsSimpleOp</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)">IsSimpleOp</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+           <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a simplicity checker using a given <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#getNonSimpleLocation()">getNonSimpleLocation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a coordinate for the location where the geometry
+ fails to be simple.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple()">isSimple</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the geometry is simple.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.LineString)">isSimple</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use isSimple()</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.MultiLineString)">isSimple</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use isSimple()</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.MultiPoint)">isSimple</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>&nbsp;mp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>use isSimple()</I></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IsSimpleOp()"><!-- --></A><H3>
+IsSimpleOp</H3>
+<PRE>
+public <B>IsSimpleOp</B>()</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use IsSimpleOp(Geometry)</I>
+<P>
+<DD>Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+<P>
+</DL>
+<HR>
+
+<A NAME="IsSimpleOp(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+IsSimpleOp</H3>
+<PRE>
+public <B>IsSimpleOp</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+<P>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to test</DL>
+<HR>
+
+<A NAME="IsSimpleOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+IsSimpleOp</H3>
+<PRE>
+public <B>IsSimpleOp</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                  <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+<DD>Creates a simplicity checker using a given <A HREF="../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A>
+<P>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to test<DD><CODE>boundaryNodeRule</CODE> - the rule to use.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isSimple()"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>()</PRE>
+<DL>
+<DD>Tests whether the geometry is simple.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the geometry is simple</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNonSimpleLocation()"><!-- --></A><H3>
+getNonSimpleLocation</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getNonSimpleLocation</B>()</PRE>
+<DL>
+<DD>Gets a coordinate for the location where the geometry
+ fails to be simple. 
+ (i.e. where it has a non-boundary self-intersection).
+ <A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple()"><CODE>isSimple()</CODE></A> must be called before this method is called.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a coordinate for the location of the non-boundary self-intersection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple(com.vividsolutions.jts.geom.LineString)"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use isSimple()</I>
+<P>
+<DD>Reports whether a <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> is simple.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the lineal geometry to test
+<DT><B>Returns:</B><DD>true if the geometry is simple</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple(com.vividsolutions.jts.geom.MultiLineString)"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>(<A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use isSimple()</I>
+<P>
+<DD>Reports whether a <A HREF="../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A> geometry is simple.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the lineal geometry to test
+<DT><B>Returns:</B><DD>true if the geometry is simple</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSimple(com.vividsolutions.jts.geom.MultiPoint)"><!-- --></A><H3>
+isSimple</H3>
+<PRE>
+public boolean <B>isSimple</B>(<A HREF="../../../../com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>&nbsp;mp)</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>use isSimple()</I>
+<P>
+<DD>A MultiPoint is simple iff it has no repeated points
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IsSimpleOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,381 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+BufferBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.BufferBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BufferBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BufferBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class BufferBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.BufferBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>BufferBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Builds the buffer geometry for a given input geometry and precision model.
+ Allows setting the level of approximation for circular arcs,
+ and the precision model in which to carry out the computation.
+ <p>
+ When computing buffers in floating point double-precision
+ it can happen that the process of iterated noding can fail to converge (terminate).
+ In this case a TopologyException will be thrown.
+ Retrying the computation in a fixed precision
+ can produce more robust results.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#BufferBuilder()">BufferBuilder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new BufferBuilder</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#buffer(com.vividsolutions.jts.geom.Geometry, double)">buffer</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+       double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#insertEdge(com.vividsolutions.jts.geomgraph.Edge)">insertEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserted edges are checked to see if an identical edge already exists.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setEndCapStyle(int)">setEndCapStyle</A></B>(int&nbsp;endCapStyle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setNoder(com.vividsolutions.jts.noding.Noder)">setNoder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>&nbsp;noder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the <A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A> to use during noding.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setQuadrantSegments(int)">setQuadrantSegments</A></B>(int&nbsp;quadrantSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of segments used to approximate a angle fillet</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setWorkingPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)">setWorkingPrecisionModel</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the precision model to use during the curve computation and noding,
+ if it is different to the precision model of the Geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BufferBuilder()"><!-- --></A><H3>
+BufferBuilder</H3>
+<PRE>
+public <B>BufferBuilder</B>()</PRE>
+<DL>
+<DD>Creates a new BufferBuilder
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setQuadrantSegments(int)"><!-- --></A><H3>
+setQuadrantSegments</H3>
+<PRE>
+public void <B>setQuadrantSegments</B>(int&nbsp;quadrantSegments)</PRE>
+<DL>
+<DD>Sets the number of segments used to approximate a angle fillet
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>quadrantSegments</CODE> - the number of segments in a fillet for a quadrant</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setWorkingPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+setWorkingPrecisionModel</H3>
+<PRE>
+public void <B>setWorkingPrecisionModel</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+<DD>Sets the precision model to use during the curve computation and noding,
+ if it is different to the precision model of the Geometry.
+ If the precision model is less than the precision of the Geometry precision model,
+ the Geometry must have previously been rounded to that precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pm</CODE> - the precision model to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setNoder(com.vividsolutions.jts.noding.Noder)"><!-- --></A><H3>
+setNoder</H3>
+<PRE>
+public void <B>setNoder</B>(<A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>&nbsp;noder)</PRE>
+<DL>
+<DD>Sets the <A HREF="../../../../../com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A> to use during noding.
+ This allows choosing fast but non-robust noding, or slower
+ but robust noding.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>noder</CODE> - the noder to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEndCapStyle(int)"><!-- --></A><H3>
+setEndCapStyle</H3>
+<PRE>
+public void <B>setEndCapStyle</B>(int&nbsp;endCapStyle)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buffer(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+buffer</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buffer</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                       double&nbsp;distance)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertEdge(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+insertEdge</H3>
+<PRE>
+protected void <B>insertEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Inserted edges are checked to see if an identical edge already exists.
+ If so, the edge is not inserted, but its label is merged
+ with the existing edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BufferBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,484 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+BufferOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.BufferOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BufferOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BufferOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class BufferOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.BufferOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>BufferOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the buffer of a geometry, for both positive and negative buffer distances.
+ <p>
+ In GIS, the positive buffer of a geometry is defined as
+ the Minkowski sum or difference of the geometry
+ with a circle of radius equal to the absolute value of the buffer distance.
+ In the CAD/CAM world buffers are known as </i>offset curves</i>.
+ In morphological analysis they are known as <i>erosion</i> and <i>dilation</i>
+ <p>
+ The negative buffer of lines and points is always empty geometry.
+ <p>
+ Since true buffer curves may contain circular arcs,
+ computed buffer polygons can only be approximations to the true geometry.
+ The user can control the accuracy of the curve approximation by specifying
+ the number of linear segments used to approximate curves.
+ <p>
+ The <b>end cap style</b> of a linear buffer may be specified. The
+ following end cap styles are supported:
+ <ul
+ <li><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_ROUND"><CODE>CAP_ROUND</CODE></A> - the usual round end caps
+ <li><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_BUTT"><CODE>CAP_BUTT</CODE></A> - end caps are truncated flat at the line ends
+ <li><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_SQUARE"><CODE>CAP_SQUARE</CODE></A> - end caps are squared off at the buffer distance beyond the line ends
+ </ul>
+ <p>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_BUTT">CAP_BUTT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies a butt (or flat) line buffer end cap style.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_ROUND">CAP_ROUND</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies a round line buffer end cap style.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_SQUARE">CAP_SQUARE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies a square line buffer end cap style.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#BufferOp(com.vividsolutions.jts.geom.Geometry)">BufferOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initializes a buffer computation for the given geometry</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#bufferOp(com.vividsolutions.jts.geom.Geometry, double)">bufferOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+         double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the buffer of a geometry for a given buffer distance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#bufferOp(com.vividsolutions.jts.geom.Geometry, double, int)">bufferOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+         double&nbsp;distance,
+         int&nbsp;quadrantSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comutes the buffer for a geometry for a given buffer distance
+ and accuracy of approximation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#bufferOp(com.vividsolutions.jts.geom.Geometry, double, int, int)">bufferOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+         double&nbsp;distance,
+         int&nbsp;quadrantSegments,
+         int&nbsp;endCapStyle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comutes the buffer for a geometry for a given buffer distance
+ and accuracy of approximation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#getResultGeometry(double)">getResultGeometry</A></B>(double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the buffer computed for a geometry for a given buffer distance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#setEndCapStyle(int)">setEndCapStyle</A></B>(int&nbsp;endCapStyle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the end cap style of the generated buffer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#setQuadrantSegments(int)">setQuadrantSegments</A></B>(int&nbsp;quadrantSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of segments used to approximate a angle fillet</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CAP_ROUND"><!-- --></A><H3>
+CAP_ROUND</H3>
+<PRE>
+public static final int <B>CAP_ROUND</B></PRE>
+<DL>
+<DD>Specifies a round line buffer end cap style.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.buffer.BufferOp.CAP_ROUND">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="CAP_BUTT"><!-- --></A><H3>
+CAP_BUTT</H3>
+<PRE>
+public static final int <B>CAP_BUTT</B></PRE>
+<DL>
+<DD>Specifies a butt (or flat) line buffer end cap style.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.buffer.BufferOp.CAP_BUTT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="CAP_SQUARE"><!-- --></A><H3>
+CAP_SQUARE</H3>
+<PRE>
+public static final int <B>CAP_SQUARE</B></PRE>
+<DL>
+<DD>Specifies a square line buffer end cap style.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.buffer.BufferOp.CAP_SQUARE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BufferOp(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+BufferOp</H3>
+<PRE>
+public <B>BufferOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Initializes a buffer computation for the given geometry
+<P>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the geometry to buffer</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="bufferOp(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+bufferOp</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>bufferOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                                double&nbsp;distance)</PRE>
+<DL>
+<DD>Computes the buffer of a geometry for a given buffer distance.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the geometry to buffer<DD><CODE>distance</CODE> - the buffer distance
+<DT><B>Returns:</B><DD>the buffer of the input geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="bufferOp(com.vividsolutions.jts.geom.Geometry, double, int)"><!-- --></A><H3>
+bufferOp</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>bufferOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                                double&nbsp;distance,
+                                int&nbsp;quadrantSegments)</PRE>
+<DL>
+<DD>Comutes the buffer for a geometry for a given buffer distance
+ and accuracy of approximation.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the geometry to buffer<DD><CODE>distance</CODE> - the buffer distance<DD><CODE>quadrantSegments</CODE> - the number of segments used to approximate a quarter circle
+<DT><B>Returns:</B><DD>the buffer of the input geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="bufferOp(com.vividsolutions.jts.geom.Geometry, double, int, int)"><!-- --></A><H3>
+bufferOp</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>bufferOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                                double&nbsp;distance,
+                                int&nbsp;quadrantSegments,
+                                int&nbsp;endCapStyle)</PRE>
+<DL>
+<DD>Comutes the buffer for a geometry for a given buffer distance
+ and accuracy of approximation.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - the geometry to buffer<DD><CODE>distance</CODE> - the buffer distance<DD><CODE>quadrantSegments</CODE> - the number of segments used to approximate a quarter circle<DD><CODE>endCapStyle</CODE> - the end cap style to use
+<DT><B>Returns:</B><DD>the buffer of the input geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEndCapStyle(int)"><!-- --></A><H3>
+setEndCapStyle</H3>
+<PRE>
+public void <B>setEndCapStyle</B>(int&nbsp;endCapStyle)</PRE>
+<DL>
+<DD>Specifies the end cap style of the generated buffer.
+ The styles supported are <A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_ROUND"><CODE>CAP_ROUND</CODE></A>, <A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_BUTT"><CODE>CAP_BUTT</CODE></A>, and <A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_SQUARE"><CODE>CAP_SQUARE</CODE></A>.
+ The default is CAP_ROUND.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>endCapStyle</CODE> - the end cap style to specify</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setQuadrantSegments(int)"><!-- --></A><H3>
+setQuadrantSegments</H3>
+<PRE>
+public void <B>setQuadrantSegments</B>(int&nbsp;quadrantSegments)</PRE>
+<DL>
+<DD>Sets the number of segments used to approximate a angle fillet
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>quadrantSegments</CODE> - the number of segments in a fillet for a quadrant</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultGeometry(double)"><!-- --></A><H3>
+getResultGeometry</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getResultGeometry</B>(double&nbsp;distance)</PRE>
+<DL>
+<DD>Returns the buffer computed for a geometry for a given buffer distance.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distance</CODE> - the buffer distance
+<DT><B>Returns:</B><DD>the buffer of the input geometry</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BufferOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferSubgraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferSubgraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/BufferSubgraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,450 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+BufferSubgraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.BufferSubgraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BufferSubgraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BufferSubgraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class BufferSubgraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.BufferSubgraph</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>BufferSubgraph</B><DT>extends java.lang.Object<DT>implements java.lang.Comparable</DL>
+
+<P>
+A connected subset of the graph of
+ <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s and <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Node</CODE></A>s.
+ Its edges will generate either
+ <ul>
+ <li> a single polygon in the complete buffer, with zero or more holes, or
+ <li> one or more connected holes
+ </ul>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#BufferSubgraph(com.vividsolutions.jts.algorithm.CGAlgorithms)">BufferSubgraph</A></B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferSubgraphs are compared on the x-value of their rightmost Coordinate.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#computeDepth(int)">computeDepth</A></B>(int&nbsp;outsideDepth)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#create(com.vividsolutions.jts.geomgraph.Node)">create</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates the subgraph consisting of all edges reachable from this node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#findResultEdges()">findResultEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find all edges whose depths indicates that they are in the result area(s).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getDirectedEdges()">getDirectedEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getEnvelope()">getEnvelope</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the envelope of the edges in the subgraph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getNodes()">getNodes</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getRightmostCoordinate()">getRightmostCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the rightmost coordinate in the edges of the subgraph</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BufferSubgraph(com.vividsolutions.jts.algorithm.CGAlgorithms)"><!-- --></A><H3>
+BufferSubgraph</H3>
+<PRE>
+public <B>BufferSubgraph</B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDirectedEdges()"><!-- --></A><H3>
+getDirectedEdges</H3>
+<PRE>
+public java.util.List <B>getDirectedEdges</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodes()"><!-- --></A><H3>
+getNodes</H3>
+<PRE>
+public java.util.List <B>getNodes</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEnvelope()"><!-- --></A><H3>
+getEnvelope</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>getEnvelope</B>()</PRE>
+<DL>
+<DD>Computes the envelope of the edges in the subgraph.
+ The envelope is cached after being computed.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the envelope of the graph.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRightmostCoordinate()"><!-- --></A><H3>
+getRightmostCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getRightmostCoordinate</B>()</PRE>
+<DL>
+<DD>Gets the rightmost coordinate in the edges of the subgraph
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="create(com.vividsolutions.jts.geomgraph.Node)"><!-- --></A><H3>
+create</H3>
+<PRE>
+public void <B>create</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>&nbsp;node)</PRE>
+<DL>
+<DD>Creates the subgraph consisting of all edges reachable from this node.
+ Finds the edges in the graph and the rightmost coordinate.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>node</CODE> - a node to start the graph traversal from</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeDepth(int)"><!-- --></A><H3>
+computeDepth</H3>
+<PRE>
+public void <B>computeDepth</B>(int&nbsp;outsideDepth)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findResultEdges()"><!-- --></A><H3>
+findResultEdges</H3>
+<PRE>
+public void <B>findResultEdges</B>()</PRE>
+<DL>
+<DD>Find all edges whose depths indicates that they are in the result area(s).
+ Since we want polygon shells to be
+ oriented CW, choose dirEdges with the interior of the result on the RHS.
+ Mark them as being in the result.
+ Interior Area edges are the result of dimensional collapses.
+ They do not form part of the result area boundary.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>BufferSubgraphs are compared on the x-value of their rightmost Coordinate.
+ This defines a partial ordering on the graphs such that:
+ <p>
+ g1 >= g2 <==> Ring(g2) does not contain Ring(g1)
+ <p>
+ where Polygon(g) is the buffer polygon that is built from g.
+ <p>
+ This relationship is used to sort the BufferSubgraphs so that shells are guaranteed to
+ be built before holes.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BufferSubgraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,369 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OffsetCurveBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OffsetCurveBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OffsetCurveBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class OffsetCurveBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OffsetCurveBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the raw offset curve for a
+ single <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> component (ring, line or point).
+ A raw offset curve line is not noded -
+ it may contain self-intersections (and usually will).
+ The final buffer polygon is computed by forming a topological graph
+ of all the noded raw curves and tracing outside contours.
+ The points in the raw curve are rounded to the required precision model.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#DEFAULT_QUADRANT_SEGMENTS">DEFAULT_QUADRANT_SEGMENTS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The default number of facets into which to divide a fillet of 90 degrees.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#OffsetCurveBuilder(com.vividsolutions.jts.geom.PrecisionModel)">OffsetCurveBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#OffsetCurveBuilder(com.vividsolutions.jts.geom.PrecisionModel, int)">OffsetCurveBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                   int&nbsp;quadrantSegments)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#getLineCurve(com.vividsolutions.jts.geom.Coordinate[], double)">getLineCurve</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;inputPts,
+             double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method handles single points as well as lines.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#getRingCurve(com.vividsolutions.jts.geom.Coordinate[], int, double)">getRingCurve</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;inputPts,
+             int&nbsp;side,
+             double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method handles the degenerate cases of single points and lines,
+ as well as rings.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#setEndCapStyle(int)">setEndCapStyle</A></B>(int&nbsp;endCapStyle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DEFAULT_QUADRANT_SEGMENTS"><!-- --></A><H3>
+DEFAULT_QUADRANT_SEGMENTS</H3>
+<PRE>
+public static final int <B>DEFAULT_QUADRANT_SEGMENTS</B></PRE>
+<DL>
+<DD>The default number of facets into which to divide a fillet of 90 degrees.
+ A value of 8 gives less than 2% max error in the buffer distance.
+ For a max error of < 1%, use QS = 12
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder.DEFAULT_QUADRANT_SEGMENTS">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OffsetCurveBuilder(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+OffsetCurveBuilder</H3>
+<PRE>
+public <B>OffsetCurveBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="OffsetCurveBuilder(com.vividsolutions.jts.geom.PrecisionModel, int)"><!-- --></A><H3>
+OffsetCurveBuilder</H3>
+<PRE>
+public <B>OffsetCurveBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;precisionModel,
+                          int&nbsp;quadrantSegments)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setEndCapStyle(int)"><!-- --></A><H3>
+setEndCapStyle</H3>
+<PRE>
+public void <B>setEndCapStyle</B>(int&nbsp;endCapStyle)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLineCurve(com.vividsolutions.jts.geom.Coordinate[], double)"><!-- --></A><H3>
+getLineCurve</H3>
+<PRE>
+public java.util.List <B>getLineCurve</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;inputPts,
+                                   double&nbsp;distance)</PRE>
+<DL>
+<DD>This method handles single points as well as lines.
+ Lines are assumed to <b>not</b> be closed (the function will not
+ fail for closed lines, but will generate superfluous line caps).
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a List of Coordinate[]</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRingCurve(com.vividsolutions.jts.geom.Coordinate[], int, double)"><!-- --></A><H3>
+getRingCurve</H3>
+<PRE>
+public java.util.List <B>getRingCurve</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;inputPts,
+                                   int&nbsp;side,
+                                   double&nbsp;distance)</PRE>
+<DL>
+<DD>This method handles the degenerate cases of single points and lines,
+ as well as rings.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a List of Coordinate[]</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OffsetCurveBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OffsetCurveSetBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.OffsetCurveSetBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OffsetCurveSetBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OffsetCurveSetBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class OffsetCurveSetBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.OffsetCurveSetBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OffsetCurveSetBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Creates all the raw offset curves for a buffer of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ Raw curves need to be noded together and polygonized to form the final buffer area.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html#OffsetCurveSetBuilder(com.vividsolutions.jts.geom.Geometry, double, com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder)">OffsetCurveSetBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom,
+                      double&nbsp;distance,
+                      <A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>&nbsp;curveBuilder)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html#getCurves()">getCurves</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set of raw offset curves for the buffer.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OffsetCurveSetBuilder(com.vividsolutions.jts.geom.Geometry, double, com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder)"><!-- --></A><H3>
+OffsetCurveSetBuilder</H3>
+<PRE>
+public <B>OffsetCurveSetBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom,
+                             double&nbsp;distance,
+                             <A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>&nbsp;curveBuilder)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCurves()"><!-- --></A><H3>
+getCurves</H3>
+<PRE>
+public java.util.List <B>getCurves</B>()</PRE>
+<DL>
+<DD>Computes the set of raw offset curves for the buffer.
+ Each offset curve has an attached <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Label</CODE></A> indicating
+ its left and right location.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a Collection of SegmentStrings representing the raw buffer curves</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OffsetCurveSetBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,300 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+RightmostEdgeFinder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.RightmostEdgeFinder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RightmostEdgeFinder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RightmostEdgeFinder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class RightmostEdgeFinder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.RightmostEdgeFinder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RightmostEdgeFinder</B><DT>extends java.lang.Object</DL>
+
+<P>
+A RightmostEdgeFinder find the DirectedEdge in a list which has the highest coordinate,
+ and which is oriented L to R at that point. (I.e. the right side is on the RHS of the edge.)
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#RightmostEdgeFinder(com.vividsolutions.jts.algorithm.CGAlgorithms)">RightmostEdgeFinder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A RightmostEdgeFinder finds the DirectedEdge with the rightmost coordinate.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#findEdge(java.util.List)">findEdge</A></B>(java.util.List&nbsp;dirEdgeList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#getEdge()">getEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RightmostEdgeFinder(com.vividsolutions.jts.algorithm.CGAlgorithms)"><!-- --></A><H3>
+RightmostEdgeFinder</H3>
+<PRE>
+public <B>RightmostEdgeFinder</B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</PRE>
+<DL>
+<DD>A RightmostEdgeFinder finds the DirectedEdge with the rightmost coordinate.
+ The DirectedEdge returned is guaranteed to have the R of the world on its RHS.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getEdge()"><!-- --></A><H3>
+getEdge</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getEdge</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findEdge(java.util.List)"><!-- --></A><H3>
+findEdge</H3>
+<PRE>
+public void <B>findEdge</B>(java.util.List&nbsp;dirEdgeList)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RightmostEdgeFinder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,261 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+SubgraphDepthLocater
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer.SubgraphDepthLocater class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SubgraphDepthLocater";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SubgraphDepthLocater.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.buffer</FONT>
+<BR>
+Class SubgraphDepthLocater</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.buffer.SubgraphDepthLocater</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SubgraphDepthLocater</B><DT>extends java.lang.Object</DL>
+
+<P>
+Locates a subgraph inside a set of subgraphs,
+ in order to determine the outside depth of the subgraph.
+ The input subgraphs are assumed to have had depths
+ already calculated for their edges.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html#SubgraphDepthLocater(java.util.List)">SubgraphDepthLocater</A></B>(java.util.List&nbsp;subgraphs)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html#getDepth(com.vividsolutions.jts.geom.Coordinate)">getDepth</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SubgraphDepthLocater(java.util.List)"><!-- --></A><H3>
+SubgraphDepthLocater</H3>
+<PRE>
+public <B>SubgraphDepthLocater</B>(java.util.List&nbsp;subgraphs)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDepth(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getDepth</H3>
+<PRE>
+public int <B>getDepth</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SubgraphDepthLocater.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.buffer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.buffer</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">BufferBuilder</A>
+<BR>
+<A HREF="BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">BufferOp</A>
+<BR>
+<A HREF="BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">BufferSubgraph</A>
+<BR>
+<A HREF="OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">OffsetCurveBuilder</A>
+<BR>
+<A HREF="OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">OffsetCurveSetBuilder</A>
+<BR>
+<A HREF="RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">RightmostEdgeFinder</A>
+<BR>
+<A HREF="SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer" target="classFrame">SubgraphDepthLocater</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,189 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.buffer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.buffer package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.buffer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.buffer
+</H2>
+Provides classes for computing buffers of geometries
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A></B></TD>
+<TD>Builds the buffer geometry for a given input geometry and precision model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A></B></TD>
+<TD>Computes the buffer of a geometry, for both positive and negative buffer distances.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A></B></TD>
+<TD>A connected subset of the graph of
+ <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s and <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Node</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A></B></TD>
+<TD>Computes the raw offset curve for a
+ single <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> component (ring, line or point).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveSetBuilder</A></B></TD>
+<TD>Creates all the raw offset curves for a buffer of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A></B></TD>
+<TD>A RightmostEdgeFinder find the DirectedEdge in a list which has the highest coordinate,
+ and which is oriented L to R at that point.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer">SubgraphDepthLocater</A></B></TD>
+<TD>Locates a subgraph inside a set of subgraphs,
+ in order to determine the outside depth of the subgraph.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.operation.buffer Description
+</H2>
+
+<P>
+Provides classes for computing buffers of geometries
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/buffer/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.buffer Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.buffer Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.buffer
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferSubgraph</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>OffsetCurveBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>OffsetCurveSetBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>RightmostEdgeFinder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer"><B>SubgraphDepthLocater</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,272 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ConnectedElementLocationFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.distance.ConnectedElementLocationFilter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConnectedElementLocationFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedElementLocationFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.distance</FONT>
+<BR>
+Class ConnectedElementLocationFilter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.distance.ConnectedElementLocationFilter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ConnectedElementLocationFilter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DL>
+
+<P>
+A ConnectedElementPointFilter extracts a single point
+ from each connected element in a Geometry
+ (e.g. a polygon, linestring or point)
+ and returns them in a list. The elements of the list are 
+ <A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><CODE>GeometryLocation</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html#getLocations(com.vividsolutions.jts.geom.Geometry)">getLocations</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a list containing a point from each Polygon, LineString, and Point
+ found inside the specified geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLocations(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getLocations</H3>
+<PRE>
+public static java.util.List <B>getLocations</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Returns a list containing a point from each Polygon, LineString, and Point
+ found inside the specified geometry. Thus, if the specified geometry is
+ not a GeometryCollection, an empty list will be returned. The elements of the list 
+ are <A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><CODE>GeometryLocation</CODE></A>s.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedElementLocationFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ConnectedElementPointFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.distance.ConnectedElementPointFilter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConnectedElementPointFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedElementPointFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.distance</FONT>
+<BR>
+Class ConnectedElementPointFilter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.distance.ConnectedElementPointFilter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>ConnectedElementPointFilter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></DL>
+
+<P>
+Extracts a single point
+ from each connected element in a Geometry
+ (e.g. a polygon, linestring or point)
+ and returns them in a list
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>geom</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html#getCoordinates(com.vividsolutions.jts.geom.Geometry)">getCoordinates</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a list containing a Coordinate from each Polygon, LineString, and Point
+ found inside the specified geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinates(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public static java.util.List <B>getCoordinates</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Returns a list containing a Coordinate from each Polygon, LineString, and Point
+ found inside the specified geometry. Thus, if the specified geometry is
+ not a GeometryCollection, an empty list will be returned.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>geom</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html#filter(com.vividsolutions.jts.geom.Geometry)">filter</A></CODE> in interface <CODE><A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a <code>Geometry</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedElementPointFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/DistanceOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/DistanceOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/DistanceOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,423 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+DistanceOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.distance.DistanceOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DistanceOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DistanceOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.distance</FONT>
+<BR>
+Class DistanceOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.distance.DistanceOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>DistanceOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Find two points on two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s which lie
+ within a given distance, or else are the closest points
+ on the geometries (in which case this also
+ provides the distance between the geometries).
+ <p>
+ The distance computation also finds a pair of points in the input geometries
+ which have the minimum distance between them.
+ If a point lies in the interior of a line segment,
+ the coordinate computed is a close
+ approximation to the exact point.
+ <p>
+ The algorithms used are straightforward O(n^2)
+ comparisons.  This worst-case performance could be improved on
+ by using Voronoi techniques or spatial indexes.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#DistanceOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">DistanceOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+           <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a DistanceOp that computes the distance and closest points between
+ the two specified geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#DistanceOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)">DistanceOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+           <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+           double&nbsp;terminateDistance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a DistanceOp that computes the distance and closest points between
+ the two specified geometries.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#closestLocations()">closestLocations</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Report the locations of the closest points in the input geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#closestPoints()">closestPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Report the coordinates of the closest points in the input geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#closestPoints(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">closestPoints</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+              <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the the closest points of two geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#distance()">distance</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Report the distance between the closest points on the input geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#distance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">distance</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the distance between the closest points of two geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)">isWithinDistance</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                 <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                 double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test whether two geometries lie within a given distance of each other.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DistanceOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+DistanceOp</H3>
+<PRE>
+public <B>DistanceOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                  <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD>Constructs a DistanceOp that computes the distance and closest points between
+ the two specified geometries.
+<P>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a Geometry<DD><CODE>g1</CODE> - a Geometry</DL>
+<HR>
+
+<A NAME="DistanceOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+DistanceOp</H3>
+<PRE>
+public <B>DistanceOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                  <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                  double&nbsp;terminateDistance)</PRE>
+<DL>
+<DD>Constructs a DistanceOp that computes the distance and closest points between
+ the two specified geometries.
+<P>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a Geometry<DD><CODE>g1</CODE> - a Geometry<DD><CODE>terminateDistance</CODE> - the distance on which to terminate the search</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="distance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public static double <B>distance</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                              <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD>Compute the distance between the closest points of two geometries.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A><DD><CODE>g1</CODE> - another <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<DT><B>Returns:</B><DD>the distance between the geometries</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isWithinDistance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+isWithinDistance</H3>
+<PRE>
+public static boolean <B>isWithinDistance</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                       <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                                       double&nbsp;distance)</PRE>
+<DL>
+<DD>Test whether two geometries lie within a given distance of each other.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A><DD><CODE>g1</CODE> - another <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A><DD><CODE>distance</CODE> - the distance to test
+<DT><B>Returns:</B><DD>true if g0.distance(g1) <= distance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="closestPoints(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+closestPoints</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>closestPoints</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD>Compute the the closest points of two geometries.
+ The points are presented in the same order as the input Geometries.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A><DD><CODE>g1</CODE> - another <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<DT><B>Returns:</B><DD>the closest points in the geometries</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="distance()"><!-- --></A><H3>
+distance</H3>
+<PRE>
+public double <B>distance</B>()</PRE>
+<DL>
+<DD>Report the distance between the closest points on the input geometries.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the distance between the geometries</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="closestPoints()"><!-- --></A><H3>
+closestPoints</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>closestPoints</B>()</PRE>
+<DL>
+<DD>Report the coordinates of the closest points in the input geometries.
+ The points are presented in the same order as the input Geometries.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a pair of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s of the closest points</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="closestLocations()"><!-- --></A><H3>
+closestLocations</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>[] <B>closestLocations</B>()</PRE>
+<DL>
+<DD>Report the locations of the closest points in the input geometries.
+ The locations are presented in the same order as the input Geometries.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a pair of <A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><CODE>GeometryLocation</CODE></A>s for the closest points</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DistanceOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/GeometryLocation.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/GeometryLocation.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/GeometryLocation.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,390 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+GeometryLocation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.distance.GeometryLocation class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryLocation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryLocation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.distance</FONT>
+<BR>
+Class GeometryLocation</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.distance.GeometryLocation</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometryLocation</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents the location of a point on a Geometry.
+ Maintains both the actual point location (which of course
+ may not be exact) as well as information about the component
+ and segment index where the point occurs.
+ Locations inside area Geometrys will not have an associated segment index,
+ so in this case the segment index will have the sentinel value of INSIDE_AREA.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#INSIDE_AREA">INSIDE_AREA</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Special value of segment-index for locations inside area geometries.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#GeometryLocation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Coordinate)">GeometryLocation</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;component,
+                 <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryLocation specifying a point inside an area geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#GeometryLocation(com.vividsolutions.jts.geom.Geometry, int, com.vividsolutions.jts.geom.Coordinate)">GeometryLocation</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;component,
+                 int&nbsp;segIndex,
+                 <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a GeometryLocation specifying a point on a geometry, as well as the 
+ segment that the point is on (or INSIDE_AREA if the point is not on a segment).</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#getGeometryComponent()">getGeometryComponent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the geometry associated with this location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#getSegmentIndex()">getSegmentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the segment index for this location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html#isInsideArea()">isInsideArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this GeometryLocation represents a point inside an area geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="INSIDE_AREA"><!-- --></A><H3>
+INSIDE_AREA</H3>
+<PRE>
+public static final int <B>INSIDE_AREA</B></PRE>
+<DL>
+<DD>Special value of segment-index for locations inside area geometries. These
+ locations do not have an associated segment index.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.distance.GeometryLocation.INSIDE_AREA">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryLocation(com.vividsolutions.jts.geom.Geometry, int, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+GeometryLocation</H3>
+<PRE>
+public <B>GeometryLocation</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;component,
+                        int&nbsp;segIndex,
+                        <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Constructs a GeometryLocation specifying a point on a geometry, as well as the 
+ segment that the point is on (or INSIDE_AREA if the point is not on a segment).
+<P>
+</DL>
+<HR>
+
+<A NAME="GeometryLocation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+GeometryLocation</H3>
+<PRE>
+public <B>GeometryLocation</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;component,
+                        <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Constructs a GeometryLocation specifying a point inside an area geometry.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getGeometryComponent()"><!-- --></A><H3>
+getGeometryComponent</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getGeometryComponent</B>()</PRE>
+<DL>
+<DD>Returns the geometry associated with this location.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegmentIndex()"><!-- --></A><H3>
+getSegmentIndex</H3>
+<PRE>
+public int <B>getSegmentIndex</B>()</PRE>
+<DL>
+<DD>Returns the segment index for this location. If the location is inside an
+ area, the index will have the value INSIDE_AREA;
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the segment index for the location, or INSIDE_AREA</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD>Returns the location.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInsideArea()"><!-- --></A><H3>
+isInsideArea</H3>
+<PRE>
+public boolean <B>isInsideArea</B>()</PRE>
+<DL>
+<DD>Returns whether this GeometryLocation represents a point inside an area geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryLocation.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.distance
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.distance package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.distance</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">ConnectedElementLocationFilter</A>
+<BR>
+<A HREF="ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">ConnectedElementPointFilter</A>
+<BR>
+<A HREF="DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">DistanceOp</A>
+<BR>
+<A HREF="GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance" target="classFrame">GeometryLocation</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.distance
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.distance package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.distance";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.distance
+</H2>
+Provides classes for computing the distance between geometries
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementLocationFilter</A></B></TD>
+<TD>A ConnectedElementPointFilter extracts a single point
+ from each connected element in a Geometry
+ (e.g.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementPointFilter</A></B></TD>
+<TD>Extracts a single point
+ from each connected element in a Geometry
+ (e.g.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A></B></TD>
+<TD>Find two points on two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s which lie
+ within a given distance, or else are the closest points
+ on the geometries (in which case this also
+ provides the distance between the geometries).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A></B></TD>
+<TD>Represents the location of a point on a Geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.operation.distance Description
+</H2>
+
+<P>
+Provides classes for computing the distance between geometries
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/distance/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.distance Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.distance Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.distance
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>ConnectedElementLocationFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="../../../../../com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>ConnectedElementPointFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="../../../../../com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>DistanceOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="../../../../../com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><B>GeometryLocation</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/buffer/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/EdgeString.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/EdgeString.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/EdgeString.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,286 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+EdgeString
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge.EdgeString class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeString";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.linemerge</FONT>
+<BR>
+Class EdgeString</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.linemerge.EdgeString</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeString</B><DT>extends java.lang.Object</DL>
+
+<P>
+A sequence of <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeDirectedEdge</CODE></A>s forming one of the lines that will
+ be output by the line-merging process.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html#EdgeString(com.vividsolutions.jts.geom.GeometryFactory)">EdgeString</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an EdgeString with the given factory used to convert this EdgeString
+ to a LineString</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html#add(com.vividsolutions.jts.operation.linemerge.LineMergeDirectedEdge)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>&nbsp;directedEdge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a directed edge which is known to form part of this line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html#toLineString()">toLineString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts this EdgeString into a LineString.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeString(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+EdgeString</H3>
+<PRE>
+public <B>EdgeString</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+<DD>Constructs an EdgeString with the given factory used to convert this EdgeString
+ to a LineString
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.operation.linemerge.LineMergeDirectedEdge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>&nbsp;directedEdge)</PRE>
+<DL>
+<DD>Adds a directed edge which is known to form part of this line.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLineString()"><!-- --></A><H3>
+toLineString</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>toLineString</B>()</PRE>
+<DL>
+<DD>Converts this EdgeString into a LineString.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,324 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineMergeDirectedEdge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge.LineMergeDirectedEdge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineMergeDirectedEdge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMergeDirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.linemerge</FONT>
+<BR>
+Class LineMergeDirectedEdge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.GraphComponent</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.DirectedEdge</A>
+          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.linemerge.LineMergeDirectedEdge</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>LineMergeDirectedEdge</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></DL>
+
+<P>
+A <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> of a 
+ <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeGraph</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#angle">angle</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#cga">cga</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#edgeDirection">edgeDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#from">from</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#p0">p0</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#p1">p1</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#parentEdge">parentEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#quadrant">quadrant</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#sym">sym</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#to">to</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html#LineMergeDirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)">LineMergeDirectedEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;from,
+                      <A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;to,
+                      <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;directionPt,
+                      boolean&nbsp;edgeDirection)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a LineMergeDirectedEdge connecting the <code>from</code> node to the
+ <code>to</code> node.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html#getNext()">getNext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the directed edge that starts at this directed edge's end point, or null
+ if there are zero or multiple directed edges starting there.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#compareDirection(com.vividsolutions.jts.planargraph.DirectedEdge)">compareDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getAngle()">getAngle</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getDirectionPt()">getDirectionPt</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdge()">getEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdgeDirection()">getEdgeDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getFromNode()">getFromNode</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getQuadrant()">getQuadrant</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getSym()">getSym</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getToNode()">getToNode</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#isRemoved()">isRemoved</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#print(java.io.PrintStream)">print</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#setEdge(com.vividsolutions.jts.planargraph.Edge)">setEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#setSym(com.vividsolutions.jts.planargraph.DirectedEdge)">setSym</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#toEdges(java.util.Collection)">toEdges</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineMergeDirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)"><!-- --></A><H3>
+LineMergeDirectedEdge</H3>
+<PRE>
+public <B>LineMergeDirectedEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;from,
+                             <A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;to,
+                             <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;directionPt,
+                             boolean&nbsp;edgeDirection)</PRE>
+<DL>
+<DD>Constructs a LineMergeDirectedEdge connecting the <code>from</code> node to the
+ <code>to</code> node.
+<P>
+<DT><B>Parameters:</B><DD><CODE>directionPt</CODE> - specifies this DirectedEdge's direction (given by an imaginary
+                  line from the <code>from</code> node to <code>directionPt</code>)<DD><CODE>edgeDirection</CODE> - whether this DirectedEdge's direction is the same as or
+                  opposite to that of the parent Edge (if any)</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNext()"><!-- --></A><H3>
+getNext</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A> <B>getNext</B>()</PRE>
+<DL>
+<DD>Returns the directed edge that starts at this directed edge's end point, or null
+ if there are zero or multiple directed edges starting there.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMergeDirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineMergeEdge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge.LineMergeEdge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineMergeEdge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMergeEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.Edge">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.linemerge</FONT>
+<BR>
+Class LineMergeEdge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.GraphComponent</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.Edge</A>
+          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.linemerge.LineMergeEdge</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineMergeEdge</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A></DL>
+
+<P>
+An edge of a <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeGraph</CODE></A>. The <code>marked</code> field indicates
+ whether this Edge has been logically deleted from the graph.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.Edge"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html#dirEdge">dirEdge</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html#LineMergeEdge(com.vividsolutions.jts.geom.LineString)">LineMergeEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a LineMergeEdge with vertices given by the specified LineString.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html#getLine()">getLine</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the LineString specifying the vertices of this edge.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.Edge"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html#getDirEdge(int)">getDirEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html#getDirEdge(com.vividsolutions.jts.planargraph.Node)">getDirEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html#getOppositeNode(com.vividsolutions.jts.planargraph.Node)">getOppositeNode</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html#isRemoved()">isRemoved</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html#setDirectedEdges(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)">setDirectedEdges</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineMergeEdge(com.vividsolutions.jts.geom.LineString)"><!-- --></A><H3>
+LineMergeEdge</H3>
+<PRE>
+public <B>LineMergeEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;line)</PRE>
+<DL>
+<DD>Constructs a LineMergeEdge with vertices given by the specified LineString.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLine()"><!-- --></A><H3>
+getLine</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getLine</B>()</PRE>
+<DL>
+<DD>Returns the LineString specifying the vertices of this edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMergeEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.Edge">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineMergeGraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge.LineMergeGraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineMergeGraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMergeGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.PlanarGraph">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.linemerge</FONT>
+<BR>
+Class LineMergeGraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.PlanarGraph</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.linemerge.LineMergeGraph</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineMergeGraph</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A></DL>
+
+<P>
+A planar graph of edges that is analyzed to sew the edges together. The 
+ <code>marked</code> flag on @{link com.vividsolutions.planargraph.Edge}s 
+ and @{link com.vividsolutions.planargraph.Node}s indicates whether they have been
+ logically deleted from the graph.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.PlanarGraph"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#dirEdges">dirEdges</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#edges">edges</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#nodeMap">nodeMap</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html#LineMergeGraph()">LineMergeGraph</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html#addEdge(com.vividsolutions.jts.geom.LineString)">addEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;lineString)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an Edge, DirectedEdges, and Nodes for the given LineString representation
+ of an edge.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.PlanarGraph"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Edge)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Node)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#contains(com.vividsolutions.jts.planargraph.DirectedEdge)">contains</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#contains(com.vividsolutions.jts.planargraph.Edge)">contains</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#dirEdgeIterator()">dirEdgeIterator</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#edgeIterator()">edgeIterator</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#findNode(com.vividsolutions.jts.geom.Coordinate)">findNode</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#findNodesOfDegree(int)">findNodesOfDegree</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#getEdges()">getEdges</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#getNodes()">getNodes</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#nodeIterator()">nodeIterator</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.DirectedEdge)">remove</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.Edge)">remove</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.Node)">remove</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineMergeGraph()"><!-- --></A><H3>
+LineMergeGraph</H3>
+<PRE>
+public <B>LineMergeGraph</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="addEdge(com.vividsolutions.jts.geom.LineString)"><!-- --></A><H3>
+addEdge</H3>
+<PRE>
+public void <B>addEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;lineString)</PRE>
+<DL>
+<DD>Adds an Edge, DirectedEdges, and Nodes for the given LineString representation
+ of an edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMergeGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.PlanarGraph">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMerger.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMerger.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineMerger.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,315 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineMerger
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge.LineMerger class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineMerger";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMerger.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.linemerge</FONT>
+<BR>
+Class LineMerger</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.linemerge.LineMerger</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineMerger</B><DT>extends java.lang.Object</DL>
+
+<P>
+Sews together a set of fully noded LineStrings. Sewing stops at nodes of degree 1
+ or 3 or more -- the exception is an isolated loop, which only has degree-2 nodes,
+ in which case a node is simply chosen as a starting point. The direction of each
+ merged LineString will be that of the majority of the LineStrings from which it
+ was derived.
+ <p>
+ Any dimension of Geometry is handled -- the constituent linework is extracted to 
+ form the edges. The edges must be correctly noded; that is, they must only meet
+ at their endpoints.  The LineMerger will still run on incorrectly noded input
+ but will not form polygons from incorrected noded edges.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html#LineMerger()">LineMerger</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html#add(java.util.Collection)">add</A></B>(java.util.Collection&nbsp;geometries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a collection of Geometries to be processed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a Geometry to be processed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html#getMergedLineStrings()">getMergedLineStrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the LineStrings built by the merging process.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineMerger()"><!-- --></A><H3>
+LineMerger</H3>
+<PRE>
+public <B>LineMerger</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(java.util.Collection)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(java.util.Collection&nbsp;geometries)</PRE>
+<DL>
+<DD>Adds a collection of Geometries to be processed. May be called multiple times.
+ Any dimension of Geometry may be added; the constituent linework will be
+ extracted.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Adds a Geometry to be processed. May be called multiple times.
+ Any dimension of Geometry may be added; the constituent linework will be
+ extracted.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMergedLineStrings()"><!-- --></A><H3>
+getMergedLineStrings</H3>
+<PRE>
+public java.util.Collection <B>getMergedLineStrings</B>()</PRE>
+<DL>
+<DD>Returns the LineStrings built by the merging process.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineMerger.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineSequencer.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineSequencer.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/LineSequencer.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,394 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineSequencer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge.LineSequencer class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineSequencer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineSequencer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.linemerge</FONT>
+<BR>
+Class LineSequencer</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.linemerge.LineSequencer</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineSequencer</B><DT>extends java.lang.Object</DL>
+
+<P>
+Builds a sequence from a set of LineStrings so that
+ they are ordered end to end.
+ A sequence is a complete non-repeating list of the linear
+ components of the input.  Each linestring is oriented
+ so that identical endpoints are adjacent in the list.
+
+ The input linestrings may form one or more connected sets.
+ The input linestrings should be correctly noded, or the results may
+ not be what is expected.
+ The output of this method is a single MultiLineString containing the ordered
+ linestrings in the sequence.
+ <p>
+ The sequencing employs the classic <b>Eulerian path</b> graph algorithm.
+ Since Eulerian paths are not uniquely determined,
+ further rules are used to
+ make the computed sequence preserve as much as possible of the input
+ ordering.
+ Within a connected subset of lines, the ordering rules are:
+ <ul>
+ <li>If there is degree-1 node which is the start
+ node of an linestring, use that node as the start of the sequence
+ <li>If there is a degree-1 node which is the end
+ node of an linestring, use that node as the end of the sequence
+ <li>If the sequence has no degree-1 nodes, use any node as the start
+ </ul>
+
+ <p>
+ Not all arrangements of lines can be sequenced.
+ For a connected set of edges in a graph,
+ Euler's Theorem states that there is a sequence containing each edge once
+ if and only if there are no more than 2 nodes of odd degree.
+ If it is not possible to find a sequence, the <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#isSequenceable()"><CODE>isSequenceable()</CODE></A> method
+ will return <code>false</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#LineSequencer()">LineSequencer</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#add(java.util.Collection)">add</A></B>(java.util.Collection&nbsp;geometries)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a <CODE>Collection</CODE> of <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s to be sequenced.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to be sequenced.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#getSequencedLineStrings()">getSequencedLineStrings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="../../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>
+ built by the sequencing process, if one exists.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#isSequenceable()">isSequenceable</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the arrangement of linestrings has a valid
+ sequence.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html#isSequenced(com.vividsolutions.jts.geom.Geometry)">isSequenced</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is sequenced correctly.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineSequencer()"><!-- --></A><H3>
+LineSequencer</H3>
+<PRE>
+public <B>LineSequencer</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isSequenced(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+isSequenced</H3>
+<PRE>
+public static boolean <B>isSequenced</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Tests whether a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is sequenced correctly.
+ <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s are trivially sequenced.
+ <A HREF="../../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>s are checked for correct sequencing.
+ Otherwise, <code>isSequenced</code> is defined
+ to be <code>true</code> for geometries that are not lineal.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the geometry to test
+<DT><B>Returns:</B><DD><code>true</code> if the geometry is sequenced or is not lineal</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(java.util.Collection)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(java.util.Collection&nbsp;geometries)</PRE>
+<DL>
+<DD>Adds a <CODE>Collection</CODE> of <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s to be sequenced.
+ May be called multiple times.
+ Any dimension of Geometry may be added; the constituent linework will be
+ extracted.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometries</CODE> - a Collection of geometries to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geometry)</PRE>
+<DL>
+<DD>Adds a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to be sequenced.
+ May be called multiple times.
+ Any dimension of Geometry may be added; the constituent linework will be
+ extracted.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geometry</CODE> - the geometry to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isSequenceable()"><!-- --></A><H3>
+isSequenceable</H3>
+<PRE>
+public boolean <B>isSequenceable</B>()</PRE>
+<DL>
+<DD>Tests whether the arrangement of linestrings has a valid
+ sequence.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if a valid sequence exists.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSequencedLineStrings()"><!-- --></A><H3>
+getSequencedLineStrings</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getSequencedLineStrings</B>()</PRE>
+<DL>
+<DD>Returns the <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="../../../../../com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>
+ built by the sequencing process, if one exists.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the sequenced linestrings,
+ or <code>null</code> if a valid sequence does not exist</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineSequencer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.linemerge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.linemerge</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">EdgeString</A>
+<BR>
+<A HREF="LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMergeDirectedEdge</A>
+<BR>
+<A HREF="LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMergeEdge</A>
+<BR>
+<A HREF="LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMergeGraph</A>
+<BR>
+<A HREF="LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineMerger</A>
+<BR>
+<A HREF="LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge" target="classFrame">LineSequencer</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.linemerge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.linemerge package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.linemerge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.linemerge
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge">EdgeString</A></B></TD>
+<TD>A sequence of <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeDirectedEdge</CODE></A>s forming one of the lines that will
+ be output by the line-merging process.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A></B></TD>
+<TD>A <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> of a 
+ <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeGraph</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeEdge</A></B></TD>
+<TD>An edge of a <A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeGraph</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeGraph</A></B></TD>
+<TD>A planar graph of edges that is analyzed to sew the edges together.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A></B></TD>
+<TD>Sews together a set of fully noded LineStrings.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A></B></TD>
+<TD>Builds a sequence from a set of LineStrings so that
+ they are ordered end to end.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/linemerge/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.linemerge Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.linemerge Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.linemerge
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>EdgeString</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdge</B></A> (implements java.lang.Comparable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeDirectedEdge</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>Edge</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeEdge</B></A></UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMerger</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineSequencer</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>PlanarGraph</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeGraph</B></A></UL>
+</UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/distance/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,285 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+ConsistentPolygonRingChecker
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.ConsistentPolygonRingChecker class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConsistentPolygonRingChecker";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConsistentPolygonRingChecker.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class ConsistentPolygonRingChecker</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.ConsistentPolygonRingChecker</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ConsistentPolygonRingChecker</B><DT>extends java.lang.Object</DL>
+
+<P>
+Tests whether the polygon rings in a <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A>
+ are consistent.
+ Used for checking if Topology errors are present after noding.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html#ConsistentPolygonRingChecker(com.vividsolutions.jts.geomgraph.PlanarGraph)">ConsistentPolygonRingChecker</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html#check(int)">check</A></B>(int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the result geometry is consistent</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html#checkAll()">checkAll</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ConsistentPolygonRingChecker(com.vividsolutions.jts.geomgraph.PlanarGraph)"><!-- --></A><H3>
+ConsistentPolygonRingChecker</H3>
+<PRE>
+public <B>ConsistentPolygonRingChecker</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>&nbsp;graph)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="checkAll()"><!-- --></A><H3>
+checkAll</H3>
+<PRE>
+public void <B>checkAll</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="check(int)"><!-- --></A><H3>
+check</H3>
+<PRE>
+public void <B>check</B>(int&nbsp;opCode)</PRE>
+<DL>
+<DD>Tests whether the result geometry is consistent
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A></CODE> - if inconsistent topology is found</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConsistentPolygonRingChecker.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,280 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+EdgeSetNoder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.EdgeSetNoder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeSetNoder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeSetNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class EdgeSetNoder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.EdgeSetNoder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeSetNoder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Nodes a set of edges.
+ Takes one or more sets of edges and constructs a
+ new set of edges consisting of all the split edges created by
+ noding the input edges together
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html#EdgeSetNoder(com.vividsolutions.jts.algorithm.LineIntersector)">EdgeSetNoder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html#addEdges(java.util.List)">addEdges</A></B>(java.util.List&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html#getNodedEdges()">getNodedEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeSetNoder(com.vividsolutions.jts.algorithm.LineIntersector)"><!-- --></A><H3>
+EdgeSetNoder</H3>
+<PRE>
+public <B>EdgeSetNoder</B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>&nbsp;li)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="addEdges(java.util.List)"><!-- --></A><H3>
+addEdges</H3>
+<PRE>
+public void <B>addEdges</B>(java.util.List&nbsp;edges)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodedEdges()"><!-- --></A><H3>
+getNodedEdges</H3>
+<PRE>
+public java.util.List <B>getNodedEdges</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeSetNoder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/LineBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/LineBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/LineBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.LineBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class LineBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.LineBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Forms JTS LineStrings out of a the graph of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s
+ created by an <A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>OverlayOp</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html#LineBuilder(com.vividsolutions.jts.operation.overlay.OverlayOp, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.PointLocator)">LineBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>&nbsp;op,
+            <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+            <A HREF="../../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>&nbsp;ptLocator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html#build(int)">build</A></B>(int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineBuilder(com.vividsolutions.jts.operation.overlay.OverlayOp, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.PointLocator)"><!-- --></A><H3>
+LineBuilder</H3>
+<PRE>
+public <B>LineBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>&nbsp;op,
+                   <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                   <A HREF="../../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>&nbsp;ptLocator)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="build(int)"><!-- --></A><H3>
+build</H3>
+<PRE>
+public java.util.List <B>build</B>(int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a list of the LineStrings in the result of the specified overlay operation</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,369 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MaximalEdgeRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.MaximalEdgeRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MaximalEdgeRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MaximalEdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class MaximalEdgeRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.EdgeRing</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.MaximalEdgeRing</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MaximalEdgeRing</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></DL>
+
+<P>
+A ring of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s which may contain nodes of degree > 2.
+ A <tt>MaximalEdgeRing</tt> may represent two different spatial entities:
+ <ul>
+ <li>a single polygon possibly containing inversions (if the ring is oriented CW)
+ <li>a single hole possibly containing exversions (if the ring is oriented CCW)
+ </ul>
+ If the MaximalEdgeRing represents a polygon,
+ the interior of the polygon is strongly connected.
+ <p>
+ These are the form of rings used to define polygons under some spatial data models.
+ However, under the OGC SFS model, <A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>MinimalEdgeRing</CODE></A>s are required.
+ A MaximalEdgeRing can be converted to a list of MinimalEdgeRings using the
+ <A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#buildMinimalRings()"><CODE>buildMinimalRings()</CODE></A> method.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>MinimalEdgeRing</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#cga">cga</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#geometryFactory">geometryFactory</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#startDe">startDe</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#MaximalEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)">MaximalEdgeRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start,
+                <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                <A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#buildMinimalRings()">buildMinimalRings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)">getNext</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#linkDirectedEdgesForMinimalEdgeRings()">linkDirectedEdgesForMinimalEdgeRings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For all nodes in this EdgeRing,
+ link the DirectedEdges at the node to form minimalEdgeRings</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)">setEdgeRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de,
+            <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#addHole(com.vividsolutions.jts.geomgraph.EdgeRing)">addHole</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#addPoints(com.vividsolutions.jts.geomgraph.Edge, boolean, boolean)">addPoints</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#computePoints(com.vividsolutions.jts.geomgraph.DirectedEdge)">computePoints</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#computeRing()">computeRing</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#containsPoint(com.vividsolutions.jts.geom.Coordinate)">containsPoint</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getCoordinate(int)">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getEdges()">getEdges</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getLabel()">getLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getLinearRing()">getLinearRing</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getMaxNodeDegree()">getMaxNodeDegree</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getShell()">getShell</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isHole()">isHole</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isIsolated()">isIsolated</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isShell()">isShell</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)">mergeLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label, int)">mergeLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setInResult()">setInResult</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setShell(com.vividsolutions.jts.geomgraph.EdgeRing)">setShell</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#toPolygon(com.vividsolutions.jts.geom.GeometryFactory)">toPolygon</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MaximalEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><!-- --></A><H3>
+MaximalEdgeRing</H3>
+<PRE>
+public <B>MaximalEdgeRing</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start,
+                       <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                       <A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+getNext</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getNext</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)">getNext</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+setEdgeRing</H3>
+<PRE>
+public void <B>setEdgeRing</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de,
+                        <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)">setEdgeRing</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="linkDirectedEdgesForMinimalEdgeRings()"><!-- --></A><H3>
+linkDirectedEdgesForMinimalEdgeRings</H3>
+<PRE>
+public void <B>linkDirectedEdgesForMinimalEdgeRings</B>()</PRE>
+<DL>
+<DD>For all nodes in this EdgeRing,
+ link the DirectedEdges at the node to form minimalEdgeRings
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buildMinimalRings()"><!-- --></A><H3>
+buildMinimalRings</H3>
+<PRE>
+public java.util.List <B>buildMinimalRings</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MaximalEdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,317 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+MinimalEdgeRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.MinimalEdgeRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="MinimalEdgeRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MinimalEdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class MinimalEdgeRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.EdgeRing</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.MinimalEdgeRing</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MinimalEdgeRing</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></DL>
+
+<P>
+A ring of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s with the property that no node
+ has degree greater than 2.  These are the form of rings required
+ to represent polygons under the OGC SFS spatial data model.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>MaximalEdgeRing</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#cga">cga</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#geometryFactory">geometryFactory</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#startDe">startDe</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html#MinimalEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)">MinimalEdgeRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start,
+                <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                <A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)">getNext</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)">setEdgeRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de,
+            <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#addHole(com.vividsolutions.jts.geomgraph.EdgeRing)">addHole</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#addPoints(com.vividsolutions.jts.geomgraph.Edge, boolean, boolean)">addPoints</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#computePoints(com.vividsolutions.jts.geomgraph.DirectedEdge)">computePoints</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#computeRing()">computeRing</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#containsPoint(com.vividsolutions.jts.geom.Coordinate)">containsPoint</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getCoordinate(int)">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getEdges()">getEdges</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getLabel()">getLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getLinearRing()">getLinearRing</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getMaxNodeDegree()">getMaxNodeDegree</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getShell()">getShell</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isHole()">isHole</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isIsolated()">isIsolated</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#isShell()">isShell</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)">mergeLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label, int)">mergeLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setInResult()">setInResult</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setShell(com.vividsolutions.jts.geomgraph.EdgeRing)">setShell</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#toPolygon(com.vividsolutions.jts.geom.GeometryFactory)">toPolygon</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MinimalEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><!-- --></A><H3>
+MinimalEdgeRing</H3>
+<PRE>
+public <B>MinimalEdgeRing</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start,
+                       <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                       <A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+getNext</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A> <B>getNext</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)">getNext</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)"><!-- --></A><H3>
+setEdgeRing</H3>
+<PRE>
+public void <B>setEdgeRing</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;de,
+                        <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>&nbsp;er)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)">setEdgeRing</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MinimalEdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeRing">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,266 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OverlayNodeFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.OverlayNodeFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OverlayNodeFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OverlayNodeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class OverlayNodeFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.NodeFactory</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.OverlayNodeFactory</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OverlayNodeFactory</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></DL>
+
+<P>
+Creates nodes for use in the <A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>PlanarGraph</CODE></A>s constructed during
+ overlay operations.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html#OverlayNodeFactory()">OverlayNodeFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)">createNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The basic node constructor does not allow for incident edges</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OverlayNodeFactory()"><!-- --></A><H3>
+OverlayNodeFactory</H3>
+<PRE>
+public <B>OverlayNodeFactory</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createNode(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>createNode</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></CODE></B></DD>
+<DD>The basic node constructor does not allow for incident edges
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)">createNode</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OverlayNodeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/OverlayOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,526 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+OverlayOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.OverlayOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OverlayOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OverlayOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class OverlayOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">com.vividsolutions.jts.operation.GeometryGraphOperation</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.OverlayOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OverlayOp</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></DL>
+
+<P>
+Computes the overlay of two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.  The overlay
+ can be used to determine any boolean combination of the geometries.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#DIFFERENCE">DIFFERENCE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#INTERSECTION">INTERSECTION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The spatial functions supported by this class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#SYMDIFFERENCE">SYMDIFFERENCE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#UNION">UNION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.operation.GeometryGraphOperation"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.operation.<A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#arg">arg</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#cga">cga</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#li">li</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#resultPrecisionModel">resultPrecisionModel</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#OverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">OverlayOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+          <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#getGraph()">getGraph</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#getResultGeometry(int)">getResultGeometry</A></B>(int&nbsp;funcCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#insertUniqueEdge(com.vividsolutions.jts.geomgraph.Edge)">insertUniqueEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert an edge from one of the noded input graphs.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#isCoveredByA(com.vividsolutions.jts.geom.Coordinate)">isCoveredByA</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is used to decide if an L edge should be included in the result or not.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#isCoveredByLA(com.vividsolutions.jts.geom.Coordinate)">isCoveredByLA</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is used to decide if a point node should be included in the result or not.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#isResultOfOp(int, int, int)">isResultOfOp</A></B>(int&nbsp;loc0,
+             int&nbsp;loc1,
+             int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method will handle arguments of Location.NONE correctly</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#isResultOfOp(com.vividsolutions.jts.geomgraph.Label, int)">isResultOfOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label,
+             int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html#overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)">overlayOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+          <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1,
+          int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.operation.GeometryGraphOperation"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.operation.<A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#getArgGeometry(int)">getArgGeometry</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#setComputationPrecision(com.vividsolutions.jts.geom.PrecisionModel)">setComputationPrecision</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="INTERSECTION"><!-- --></A><H3>
+INTERSECTION</H3>
+<PRE>
+public static final int <B>INTERSECTION</B></PRE>
+<DL>
+<DD>The spatial functions supported by this class.
+ These operations implement various boolean combinations of the resultants of the overlay.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.overlay.OverlayOp.INTERSECTION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="UNION"><!-- --></A><H3>
+UNION</H3>
+<PRE>
+public static final int <B>UNION</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.overlay.OverlayOp.UNION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DIFFERENCE"><!-- --></A><H3>
+DIFFERENCE</H3>
+<PRE>
+public static final int <B>DIFFERENCE</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.overlay.OverlayOp.DIFFERENCE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="SYMDIFFERENCE"><!-- --></A><H3>
+SYMDIFFERENCE</H3>
+<PRE>
+public static final int <B>SYMDIFFERENCE</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.overlay.OverlayOp.SYMDIFFERENCE">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+OverlayOp</H3>
+<PRE>
+public <B>OverlayOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                 <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)"><!-- --></A><H3>
+overlayOp</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>overlayOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1,
+                                 int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isResultOfOp(com.vividsolutions.jts.geomgraph.Label, int)"><!-- --></A><H3>
+isResultOfOp</H3>
+<PRE>
+public static boolean <B>isResultOfOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>&nbsp;label,
+                                   int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isResultOfOp(int, int, int)"><!-- --></A><H3>
+isResultOfOp</H3>
+<PRE>
+public static boolean <B>isResultOfOp</B>(int&nbsp;loc0,
+                                   int&nbsp;loc1,
+                                   int&nbsp;opCode)</PRE>
+<DL>
+<DD>This method will handle arguments of Location.NONE correctly
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the locations correspond to the opCode</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultGeometry(int)"><!-- --></A><H3>
+getResultGeometry</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getResultGeometry</B>(int&nbsp;funcCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGraph()"><!-- --></A><H3>
+getGraph</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A> <B>getGraph</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertUniqueEdge(com.vividsolutions.jts.geomgraph.Edge)"><!-- --></A><H3>
+insertUniqueEdge</H3>
+<PRE>
+protected void <B>insertUniqueEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Insert an edge from one of the noded input graphs.
+ Checks edges that are inserted to see if an
+ identical edge already exists.
+ If so, the edge is not inserted, but its label is merged
+ with the existing edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCoveredByLA(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isCoveredByLA</H3>
+<PRE>
+public boolean <B>isCoveredByLA</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>This method is used to decide if a point node should be included in the result or not.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the coord point is covered by a result Line or Area geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isCoveredByA(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isCoveredByA</H3>
+<PRE>
+public boolean <B>isCoveredByA</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>This method is used to decide if an L edge should be included in the result or not.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if the coord point is covered by a result Area geometry</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OverlayOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PointBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PointBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PointBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,267 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+PointBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.PointBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PointBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class PointBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.PointBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>PointBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Constructs <A HREF="../../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>s from the nodes of an overlay graph.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html#PointBuilder(com.vividsolutions.jts.operation.overlay.OverlayOp, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.PointLocator)">PointBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>&nbsp;op,
+             <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+             <A HREF="../../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>&nbsp;ptLocator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html#build(int)">build</A></B>(int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the Point geometries which will appear in the result,
+ given the specified overlay operation.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PointBuilder(com.vividsolutions.jts.operation.overlay.OverlayOp, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.PointLocator)"><!-- --></A><H3>
+PointBuilder</H3>
+<PRE>
+public <B>PointBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>&nbsp;op,
+                    <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                    <A HREF="../../../../../com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>&nbsp;ptLocator)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="build(int)"><!-- --></A><H3>
+build</H3>
+<PRE>
+public java.util.List <B>build</B>(int&nbsp;opCode)</PRE>
+<DL>
+<DD>Computes the Point geometries which will appear in the result,
+ given the specified overlay operation.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a list of the Points objects in the result</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PointBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PolygonBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PolygonBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/PolygonBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,333 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+PolygonBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.PolygonBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PolygonBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PolygonBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay</FONT>
+<BR>
+Class PolygonBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.PolygonBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>PolygonBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Forms <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>s out of a graph of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s.
+ The edges to use are marked as being in the result Area.
+ <p>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#PolygonBuilder(com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)">PolygonBuilder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+               <A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#add(java.util.Collection, java.util.Collection)">add</A></B>(java.util.Collection&nbsp;dirEdges,
+    java.util.Collection&nbsp;nodes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a set of edges and nodes, which form a graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#add(com.vividsolutions.jts.geomgraph.PlanarGraph)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a complete graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#containsPoint(com.vividsolutions.jts.geom.Coordinate)">containsPoint</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks the current set of shells (with their associated holes) to
+ see if any of them contain the point.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#getPolygons()">getPolygons</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PolygonBuilder(com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><!-- --></A><H3>
+PolygonBuilder</H3>
+<PRE>
+public <B>PolygonBuilder</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geometryFactory,
+                      <A HREF="../../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>&nbsp;cga)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geomgraph.PlanarGraph)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>&nbsp;graph)</PRE>
+<DL>
+<DD>Add a complete graph.
+ The graph is assumed to contain one or more polygons,
+ possibly with holes.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(java.util.Collection, java.util.Collection)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(java.util.Collection&nbsp;dirEdges,
+                java.util.Collection&nbsp;nodes)</PRE>
+<DL>
+<DD>Add a set of edges and nodes, which form a graph.
+ The graph is assumed to contain one or more polygons,
+ possibly with holes.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPolygons()"><!-- --></A><H3>
+getPolygons</H3>
+<PRE>
+public java.util.List <B>getPolygons</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="containsPoint(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+containsPoint</H3>
+<PRE>
+public boolean <B>containsPoint</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p)</PRE>
+<DL>
+<DD>Checks the current set of shells (with their associated holes) to
+ see if any of them contain the point.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PolygonBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.overlay</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">ConsistentPolygonRingChecker</A>
+<BR>
+<A HREF="EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">EdgeSetNoder</A>
+<BR>
+<A HREF="LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">LineBuilder</A>
+<BR>
+<A HREF="MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">MaximalEdgeRing</A>
+<BR>
+<A HREF="MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">MinimalEdgeRing</A>
+<BR>
+<A HREF="OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">OverlayNodeFactory</A>
+<BR>
+<A HREF="OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">OverlayOp</A>
+<BR>
+<A HREF="PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">PointBuilder</A>
+<BR>
+<A HREF="PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay" target="classFrame">PolygonBuilder</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.overlay";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/snap/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.overlay
+</H2>
+Contains classes that perform a topological overlay to compute boolean spatial functions.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay">ConsistentPolygonRingChecker</A></B></TD>
+<TD>Tests whether the polygon rings in a <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A>
+ are consistent.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay">EdgeSetNoder</A></B></TD>
+<TD>Nodes a set of edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">LineBuilder</A></B></TD>
+<TD>Forms JTS LineStrings out of a the graph of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s
+ created by an <A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>OverlayOp</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A></B></TD>
+<TD>A ring of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s which may contain nodes of degree > 2.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A></B></TD>
+<TD>A ring of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s with the property that no node
+ has degree greater than 2.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayNodeFactory</A></B></TD>
+<TD>Creates nodes for use in the <A HREF="../../../../../com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>PlanarGraph</CODE></A>s constructed during
+ overlay operations.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A></B></TD>
+<TD>Computes the overlay of two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PointBuilder</A></B></TD>
+<TD>Constructs <A HREF="../../../../../com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>s from the nodes of an overlay graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A></B></TD>
+<TD>Forms <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>s out of a graph of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.operation.overlay Description
+</H2>
+
+<P>
+Contains classes that perform a topological overlay to compute boolean spatial functions.
+<P>
+The Overlay Algorithm is used in spatial analysis methods for computing set-theoretic 
+operations (boolean combinations) of input <CODE>Geometry</CODE>s. The algorithm for 
+computing the overlay uses the intersection operations supported by topology graphs.  
+To compute an overlay it is necessary to explicitly compute the resultant graph formed 
+by the computed intersections.
+<P>
+The algorithm to compute a set-theoretic spatial analysis method has the following steps:
+<UL>
+  <LI>Build topology graphs of the two input geometries.  For each geometry all 
+      self-intersection nodes are computed and added to the graph.
+  <LI>Compute nodes for all intersections between edges and nodes of the graphs.
+  <LI>Compute the labeling for the computed nodes by merging the labels from the input graphs. 
+  <LI>Compute new edges between the compute intersection nodes.  Label the edges appropriately.
+  <LI>Build the resultant graph from the new nodes and edges.
+  <LI>Compute the labeling for isolated components of the graph.  Add the 
+      isolated components to the resultant graph.
+  <LI>Compute the result of the boolean combination by selecting the node and edges 
+      with the appropriate labels. Polygonize areas and sew linear geometries together.
+</UL>
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/snap/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.overlay Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/snap/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.overlay
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay"><B>ConsistentPolygonRingChecker</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeRing</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>MaximalEdgeRing</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>MinimalEdgeRing</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>EdgeSetNoder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>GeometryGraphOperation</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>OverlayOp</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>LineBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeFactory</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>OverlayNodeFactory</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PointBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PolygonBuilder</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/linemerge/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/snap/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+GeometrySnapper
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.snap.GeometrySnapper class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometrySnapper";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometrySnapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.snap</FONT>
+<BR>
+Class GeometrySnapper</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.snap.GeometrySnapper</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometrySnapper</B><DT>extends java.lang.Object</DL>
+
+<P>
+Snaps the vertices and segments of a <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to another Geometry's vertices.
+ Improves robustness for overlay operations, by eliminating
+ nearly parallel edges (which cause problems during noding and intersection calculation).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#GeometrySnapper(com.vividsolutions.jts.geom.Geometry)">GeometrySnapper</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#computeOverlaySnapTolerance(com.vividsolutions.jts.geom.Geometry)">computeOverlaySnapTolerance</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estimates the snap tolerance for a Geometry, taking into account its precision model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#computeOverlaySnapTolerance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">computeOverlaySnapTolerance</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                            <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#computeSizeBasedSnapTolerance(com.vividsolutions.jts.geom.Geometry)">computeSizeBasedSnapTolerance</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#extractTargetCoordinates(com.vividsolutions.jts.geom.Geometry)">extractTargetCoordinates</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#snap(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)">snap</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+     <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+     double&nbsp;snapTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Snaps two geometries together with a given tolerance.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#snapTo(com.vividsolutions.jts.geom.Geometry, double)">snapTo</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+       double&nbsp;snapTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Snaps the vertices in the component <A HREF="../../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s
+ of the source geometry
+ to the vertices of the given geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometrySnapper(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+GeometrySnapper</H3>
+<PRE>
+public <B>GeometrySnapper</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeOverlaySnapTolerance(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+computeOverlaySnapTolerance</H3>
+<PRE>
+public static double <B>computeOverlaySnapTolerance</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Estimates the snap tolerance for a Geometry, taking into account its precision model.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - a Geometry
+<DT><B>Returns:</B><DD>the estimated snap tolerance</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeSizeBasedSnapTolerance(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+computeSizeBasedSnapTolerance</H3>
+<PRE>
+public static double <B>computeSizeBasedSnapTolerance</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeOverlaySnapTolerance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+computeOverlaySnapTolerance</H3>
+<PRE>
+public static double <B>computeOverlaySnapTolerance</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                                 <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="snap(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+snap</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[] <B>snap</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                              double&nbsp;snapTolerance)</PRE>
+<DL>
+<DD>Snaps two geometries together with a given tolerance.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a geometry to snap<DD><CODE>g1</CODE> - a geometry to snap<DD><CODE>snapTolerance</CODE> - the tolerance to use
+<DT><B>Returns:</B><DD>the snapped geometries</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="snapTo(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+snapTo</H3>
+<PRE>
+public <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>snapTo</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                       double&nbsp;snapTolerance)</PRE>
+<DL>
+<DD>Snaps the vertices in the component <A HREF="../../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s
+ of the source geometry
+ to the vertices of the given geometry.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - 
+<DT><B>Returns:</B><DD>a new snapped Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="extractTargetCoordinates(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+extractTargetCoordinates</H3>
+<PRE>
+public <A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>extractTargetCoordinates</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometrySnapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,292 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:52 PST 2006 -->
+<TITLE>
+LineStringSnapper
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.snap.LineStringSnapper class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineStringSnapper";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineStringSnapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.snap</FONT>
+<BR>
+Class LineStringSnapper</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.snap.LineStringSnapper</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineStringSnapper</B><DT>extends java.lang.Object</DL>
+
+<P>
+Snaps the vertices and segments of a LineString to a set of target snap vertices.
+ A snapping distance tolerance is used to control where snapping is performed.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html#LineStringSnapper(com.vividsolutions.jts.geom.Coordinate[], double)">LineStringSnapper</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;srcPts,
+                  double&nbsp;snapTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new snapper using the given points
+ as target snap points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html#LineStringSnapper(com.vividsolutions.jts.geom.LineString, double)">LineStringSnapper</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;line,
+                  double&nbsp;snapTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new snapper using the points in the given <A HREF="../../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>
+ as target snap points.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html#snapTo(com.vividsolutions.jts.geom.Coordinate[])">snapTo</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;snapPts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Snaps the vertices and segments of the source LineString 
+ to the given set of target snap points.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineStringSnapper(com.vividsolutions.jts.geom.LineString, double)"><!-- --></A><H3>
+LineStringSnapper</H3>
+<PRE>
+public <B>LineStringSnapper</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;line,
+                         double&nbsp;snapTolerance)</PRE>
+<DL>
+<DD>Creates a new snapper using the points in the given <A HREF="../../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>
+ as target snap points.
+<P>
+<DT><B>Parameters:</B><DD><CODE>line</CODE> - a LineString<DD><CODE>snapTolerance</CODE> - the snap tolerance to use</DL>
+<HR>
+
+<A NAME="LineStringSnapper(com.vividsolutions.jts.geom.Coordinate[], double)"><!-- --></A><H3>
+LineStringSnapper</H3>
+<PRE>
+public <B>LineStringSnapper</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;srcPts,
+                         double&nbsp;snapTolerance)</PRE>
+<DL>
+<DD>Creates a new snapper using the given points
+ as target snap points.
+<P>
+<DT><B>Parameters:</B><DD><CODE>srcPts</CODE> - the points to snap to<DD><CODE>snapTolerance</CODE> - the snap tolerance to use</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="snapTo(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+snapTo</H3>
+<PRE>
+public <A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>snapTo</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;snapPts)</PRE>
+<DL>
+<DD>Snaps the vertices and segments of the source LineString 
+ to the given set of target snap points.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>snapPts</CODE> - the vertices to snap to
+<DT><B>Returns:</B><DD>a new snapped LineString</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineStringSnapper.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,375 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+SnapIfNeededOverlayOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SnapIfNeededOverlayOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SnapIfNeededOverlayOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.snap</FONT>
+<BR>
+Class SnapIfNeededOverlayOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SnapIfNeededOverlayOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Performs an overlay operation using snapping and enhanced precision
+ to improve the robustness of the result.
+ This class only uses snapping
+ if an error is detected when running the standard JTS overlay code.
+ Errors detected include thrown exceptions 
+ (in particular, <A HREF="../../../../../../com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom"><CODE>TopologyException</CODE></A>)
+ and invalid overlay computations.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#SnapIfNeededOverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">SnapIfNeededOverlayOp</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                      <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">difference</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+           <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#getResultGeometry(int)">getResultGeometry</A></B>(int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">intersection</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+             <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)">overlayOp</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+          <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+          int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">symDifference</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">union</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+      <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SnapIfNeededOverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+SnapIfNeededOverlayOp</H3>
+<PRE>
+public <B>SnapIfNeededOverlayOp</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                             <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g2)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)"><!-- --></A><H3>
+overlayOp</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>overlayOp</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                 <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                                 int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>intersection</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                    <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+union</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>union</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                             <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+difference</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>difference</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                  <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+symDifference</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>symDifference</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                     <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultGeometry(int)"><!-- --></A><H3>
+getResultGeometry</H3>
+<PRE>
+public <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getResultGeometry</B>(int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SnapIfNeededOverlayOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,375 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+SnapOverlayOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SnapOverlayOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SnapOverlayOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.snap</FONT>
+<BR>
+Class SnapOverlayOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.snap.SnapOverlayOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SnapOverlayOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Performs an overlay operation using snapping and enhanced precision
+ to improve the robustness of the result.
+ This class <i>always</i> uses snapping.  
+ This is less performant than the standard JTS overlay code, 
+ and may even introduce errors which were not present in the original data.
+ For this reason, this class should only be used 
+ if the standard overlay code fails to produce a correct result.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#SnapOverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">SnapOverlayOp</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">difference</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+           <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#getResultGeometry(int)">getResultGeometry</A></B>(int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">intersection</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+             <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)">overlayOp</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+          <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+          int&nbsp;opCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">symDifference</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">union</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+      <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SnapOverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+SnapOverlayOp</H3>
+<PRE>
+public <B>SnapOverlayOp</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                     <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g2)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)"><!-- --></A><H3>
+overlayOp</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>overlayOp</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                 <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                                 int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>intersection</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                    <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+union</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>union</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                             <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+difference</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>difference</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                  <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+symDifference</H3>
+<PRE>
+public static <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>symDifference</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                                     <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultGeometry(int)"><!-- --></A><H3>
+getResultGeometry</H3>
+<PRE>
+public <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getResultGeometry</B>(int&nbsp;opCode)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SnapOverlayOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay.snap
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.snap package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.overlay.snap</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">GeometrySnapper</A>
+<BR>
+<A HREF="LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">LineStringSnapper</A>
+<BR>
+<A HREF="SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">SnapIfNeededOverlayOp</A>
+<BR>
+<A HREF="SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap" target="classFrame">SnapOverlayOp</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay.snap
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.snap package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.overlay.snap";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.overlay.snap
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A></B></TD>
+<TD>Snaps the vertices and segments of a <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to another Geometry's vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">LineStringSnapper</A></B></TD>
+<TD>Snaps the vertices and segments of a LineString to a set of target snap vertices.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A></B></TD>
+<TD>Performs an overlay operation using snapping and enhanced precision
+ to improve the robustness of the result.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A></B></TD>
+<TD>Performs an overlay operation using snapping and enhanced precision
+ to improve the robustness of the result.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/snap/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay.snap Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.overlay.snap Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.overlay.snap
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>GeometrySnapper</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>LineStringSnapper</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>SnapIfNeededOverlayOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>SnapOverlayOp</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+FuzzyPointLocator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.validate.FuzzyPointLocator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="FuzzyPointLocator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="FuzzyPointLocator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.validate</FONT>
+<BR>
+Class FuzzyPointLocator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.validate.FuzzyPointLocator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>FuzzyPointLocator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Finds the most likely <A HREF="../../../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A> of a point relative to
+ the polygonal components of a geometry, using a tolerance value.
+ If a point is not clearly in the Interior or Exterior,
+ it is considered to be on the Boundary.
+ In other words, if the point is within the tolerance of the Boundary,
+ it is considered to be on the Boundary; otherwise, 
+ whether it is Interior or Exterior is determined directly.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html#FuzzyPointLocator(com.vividsolutions.jts.geom.Geometry, double)">FuzzyPointLocator</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                  double&nbsp;boundaryDistanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html#getLocation(com.vividsolutions.jts.geom.Coordinate)">getLocation</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="FuzzyPointLocator(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+FuzzyPointLocator</H3>
+<PRE>
+public <B>FuzzyPointLocator</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                         double&nbsp;boundaryDistanceTolerance)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLocation(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+getLocation</H3>
+<PRE>
+public int <B>getLocation</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="FuzzyPointLocator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+OffsetPointGenerator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.validate.OffsetPointGenerator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OffsetPointGenerator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OffsetPointGenerator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.validate</FONT>
+<BR>
+Class OffsetPointGenerator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.validate.OffsetPointGenerator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OffsetPointGenerator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Generates points offset by a given distance 
+ from both sides of the midpoint of
+ all segments in a <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ Can be used to generate probe points for
+ determining whether a polygonal overlay result
+ is incorrect.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html#OffsetPointGenerator(com.vividsolutions.jts.geom.Geometry, double)">OffsetPointGenerator</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                     double&nbsp;offsetDistance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html#getPoints()">getPoints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the computed offset points.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OffsetPointGenerator(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+OffsetPointGenerator</H3>
+<PRE>
+public <B>OffsetPointGenerator</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g,
+                            double&nbsp;offsetDistance)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getPoints()"><!-- --></A><H3>
+getPoints</H3>
+<PRE>
+public java.util.List <B>getPoints</B>()</PRE>
+<DL>
+<DD>Gets the computed offset points.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>List<Coordinate></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OffsetPointGenerator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,316 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+OverlayResultValidator
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.validate.OverlayResultValidator class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OverlayResultValidator";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OverlayResultValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.overlay.validate</FONT>
+<BR>
+Class OverlayResultValidator</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.overlay.validate.OverlayResultValidator</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OverlayResultValidator</B><DT>extends java.lang.Object</DL>
+
+<P>
+Validates that the result of an overlay operation is
+ geometrically correct within a given tolerance.
+ Uses fuzzy point location to find points which are .
+ <p>
+ This algorithm is only useful where the inputs are polygonal.
+ This is a heuristic test, and may return false positive results
+ (I.e. it may fail to detect an invalid result.)
+ It should never return a false negative result, however
+ (I.e. it should never report a valid result as invalid.)
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>OverlayOp</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#OverlayResultValidator(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">OverlayResultValidator</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+                       <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b,
+                       <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;result)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#getInvalidLocation()">getInvalidLocation</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#isValid(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int, com.vividsolutions.jts.geom.Geometry)">isValid</A></B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+        <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b,
+        int&nbsp;overlayOp,
+        <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;result)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#isValid(int)">isValid</A></B>(int&nbsp;overlayOp)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OverlayResultValidator(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+OverlayResultValidator</H3>
+<PRE>
+public <B>OverlayResultValidator</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+                              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b,
+                              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;result)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isValid(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public static boolean <B>isValid</B>(<A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+                              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b,
+                              int&nbsp;overlayOp,
+                              <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;result)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid(int)"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>(int&nbsp;overlayOp)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInvalidLocation()"><!-- --></A><H3>
+getInvalidLocation</H3>
+<PRE>
+public <A HREF="../../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInvalidLocation</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OverlayResultValidator.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay.validate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.validate package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.overlay.validate</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate" target="classFrame">FuzzyPointLocator</A>
+<BR>
+<A HREF="OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate" target="classFrame">OffsetPointGenerator</A>
+<BR>
+<A HREF="OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate" target="classFrame">OverlayResultValidator</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay.validate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.overlay.validate package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.overlay.validate";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/polygonize/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.overlay.validate
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">FuzzyPointLocator</A></B></TD>
+<TD>Finds the most likely <A HREF="../../../../../../com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A> of a point relative to
+ the polygonal components of a geometry, using a tolerance value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OffsetPointGenerator</A></B></TD>
+<TD>Generates points offset by a given distance 
+ from both sides of the midpoint of
+ all segments in a <A HREF="../../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A></B></TD>
+<TD>Validates that the result of an overlay operation is
+ geometrically correct within a given tolerance.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/polygonize/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/overlay/validate/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.overlay.validate Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.overlay.validate Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/polygonize/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.overlay.validate
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.validate.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>FuzzyPointLocator</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.validate.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>OffsetPointGenerator</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.validate.<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>OverlayResultValidator</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/overlay/snap/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../com/vividsolutions/jts/operation/polygonize/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/operation/package-summary.html" target="classFrame">com.vividsolutions.jts.operation</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="BoundaryOp.html" title="class in com.vividsolutions.jts.operation" target="classFrame">BoundaryOp</A>
+<BR>
+<A HREF="GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation" target="classFrame">GeometryGraphOperation</A>
+<BR>
+<A HREF="IsSimpleOp.html" title="class in com.vividsolutions.jts.operation" target="classFrame">IsSimpleOp</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/buffer/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation
+</H2>
+Provides classes for implementing operations on geometries
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation">BoundaryOp</A></B></TD>
+<TD>Computes the boundary of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></B></TD>
+<TD>The base class for operations that require <A HREF="../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A></B></TD>
+<TD>Tests whether a <code>Geometry</code> is simple.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.operation Description
+</H2>
+
+<P>
+Provides classes for implementing operations on geometries
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/buffer/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/buffer/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="../../../../com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation"><B>BoundaryOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>GeometryGraphOperation</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="../../../../com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation"><B>IsSimpleOp</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/noding/snapround/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/buffer/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/EdgeRing.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/EdgeRing.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/EdgeRing.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,480 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+EdgeRing
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.polygonize.EdgeRing class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeRing";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.polygonize</FONT>
+<BR>
+Class EdgeRing</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.polygonize.EdgeRing</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeRing</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents a ring of <A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><CODE>PolygonizeDirectedEdge</CODE></A>s which form
+ a ring of a polygon.  The ring may be either an outer shell or a hole.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#EdgeRing(com.vividsolutions.jts.geom.GeometryFactory)">EdgeRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> which is known to form part of this ring.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#addHole(com.vividsolutions.jts.geom.LinearRing)">addHole</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;hole)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a hole to the polygon formed by this ring.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#findEdgeRingContaining(com.vividsolutions.jts.operation.polygonize.EdgeRing, java.util.List)">findEdgeRingContaining</A></B>(<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>&nbsp;testEr,
+                       java.util.List&nbsp;shellList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#getLineString()">getLineString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the coordinates for this ring as a <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#getPolygon()">getPolygon</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> formed by this ring and any contained holes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#getRing()">getRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this ring as a <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>, or null if an Exception occurs while
+ creating it (such as a topology problem).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#isHole()">isHole</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this ring is a hole.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#isInList(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])">isInList</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+         <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether a given point is in an array of points.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#isValid()">isValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if the <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A> ring formed by this edge ring is topologically valid.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html#ptNotInList(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])">ptNotInList</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;testPts,
+            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Finds a point in a list of points which is not contained in another list of points</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeRing(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+EdgeRing</H3>
+<PRE>
+public <B>EdgeRing</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;factory)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="findEdgeRingContaining(com.vividsolutions.jts.operation.polygonize.EdgeRing, java.util.List)"><!-- --></A><H3>
+findEdgeRingContaining</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A> <B>findEdgeRingContaining</B>(<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>&nbsp;testEr,
+                                              java.util.List&nbsp;shellList)</PRE>
+<DL>
+<DD>Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.
+ The innermost enclosing ring is the <i>smallest</i> enclosing ring.
+ The algorithm used depends on the fact that:
+ <br>
+  ring A contains ring B iff envelope(ring A) contains envelope(ring B)
+ <br>
+ This routine is only safe to use if the chosen point of the hole
+ is known to be properly contained in a shell
+ (which is guaranteed to be the case if the hole does not touch its shell)
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>containing EdgeRing, if there is one</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="ptNotInList(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+ptNotInList</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>ptNotInList</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;testPts,
+                                     <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Finds a point in a list of points which is not contained in another list of points
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>testPts</CODE> - the <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s to test<DD><CODE>pts</CODE> - an array of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s to test the input points against
+<DT><B>Returns:</B><DD>a <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> from <code>testPts</code> which is not in <code>pts</code>,</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInList(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+isInList</H3>
+<PRE>
+public static boolean <B>isInList</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+                               <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+<DD>Tests whether a given point is in an array of points.
+ Uses a value-based test.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the test point<DD><CODE>pts</CODE> - an array of <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s to test
+<DT><B>Returns:</B><DD><code>true</code> if the point is in the array</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD>Adds a <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> which is known to form part of this ring.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>de</CODE> - the <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> to add.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isHole()"><!-- --></A><H3>
+isHole</H3>
+<PRE>
+public boolean <B>isHole</B>()</PRE>
+<DL>
+<DD>Tests whether this ring is a hole.
+ Due to the way the edges in the polyongization graph are linked,
+ a ring is a hole if it is oriented counter-clockwise.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this ring is a hole</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addHole(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+addHole</H3>
+<PRE>
+public void <B>addHole</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;hole)</PRE>
+<DL>
+<DD>Adds a hole to the polygon formed by this ring.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>hole</CODE> - the <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A> forming the hole.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPolygon()"><!-- --></A><H3>
+getPolygon</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A> <B>getPolygon</B>()</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> formed by this ring and any contained holes.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> formed by this ring and its holes.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid()"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>()</PRE>
+<DL>
+<DD>Tests if the <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A> ring formed by this edge ring is topologically valid.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLineString()"><!-- --></A><H3>
+getLineString</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getLineString</B>()</PRE>
+<DL>
+<DD>Gets the coordinates for this ring as a <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>.
+ Used to return the coordinates in this ring
+ as a valid geometry, when it has been detected that the ring is topologically
+ invalid.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> containing the coordinates in this ring</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRing()"><!-- --></A><H3>
+getRing</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>getRing</B>()</PRE>
+<DL>
+<DD>Returns this ring as a <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>, or null if an Exception occurs while
+ creating it (such as a topology problem). Details of problems are written to
+ standard output.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeRing.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,435 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+PolygonizeDirectedEdge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.polygonize.PolygonizeDirectedEdge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PolygonizeDirectedEdge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PolygonizeDirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.polygonize</FONT>
+<BR>
+Class PolygonizeDirectedEdge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.GraphComponent</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.DirectedEdge</A>
+          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.polygonize.PolygonizeDirectedEdge</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>PolygonizeDirectedEdge</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></DL>
+
+<P>
+A <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> of a <CODE>PolygonizeGraph</CODE>, which represents
+ an edge of a polygon formed by the graph.
+ May be logically deleted from the graph by setting the <code>marked</code> flag.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#angle">angle</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#cga">cga</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#edgeDirection">edgeDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#from">from</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#p0">p0</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#p1">p1</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#parentEdge">parentEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#quadrant">quadrant</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#sym">sym</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#to">to</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#PolygonizeDirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)">PolygonizeDirectedEdge</A></B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;from,
+                       <A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;to,
+                       <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;directionPt,
+                       boolean&nbsp;edgeDirection)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a directed edge connecting the <code>from</code> node to the
+ <code>to</code> node.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#getLabel()">getLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the identifier attached to this directed edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#getNext()">getNext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the next directed edge in the EdgeRing that this directed edge is a member
+ of.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#isInRing()">isInRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the ring of directed edges that this directed edge is
+ a member of, or null if the ring has not been set.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setLabel(long)">setLabel</A></B>(long&nbsp;label)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attaches an identifier to this directed edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setNext(com.vividsolutions.jts.operation.polygonize.PolygonizeDirectedEdge)">setNext</A></B>(<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>&nbsp;next)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the next directed edge in the EdgeRing that this directed edge is a member
+ of.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setRing(com.vividsolutions.jts.operation.polygonize.EdgeRing)">setRing</A></B>(<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>&nbsp;edgeRing)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the ring of directed edges that this directed edge is
+ a member of.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#compareDirection(com.vividsolutions.jts.planargraph.DirectedEdge)">compareDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getAngle()">getAngle</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getDirectionPt()">getDirectionPt</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdge()">getEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdgeDirection()">getEdgeDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getFromNode()">getFromNode</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getQuadrant()">getQuadrant</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getSym()">getSym</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getToNode()">getToNode</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#isRemoved()">isRemoved</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#print(java.io.PrintStream)">print</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#setEdge(com.vividsolutions.jts.planargraph.Edge)">setEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#setSym(com.vividsolutions.jts.planargraph.DirectedEdge)">setSym</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#toEdges(java.util.Collection)">toEdges</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PolygonizeDirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)"><!-- --></A><H3>
+PolygonizeDirectedEdge</H3>
+<PRE>
+public <B>PolygonizeDirectedEdge</B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;from,
+                              <A HREF="../../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;to,
+                              <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;directionPt,
+                              boolean&nbsp;edgeDirection)</PRE>
+<DL>
+<DD>Constructs a directed edge connecting the <code>from</code> node to the
+ <code>to</code> node.
+<P>
+<DT><B>Parameters:</B><DD><CODE>directionPt</CODE> - specifies this DirectedEdge's direction (given by an imaginary
+                  line from the <code>from</code> node to <code>directionPt</code>)<DD><CODE>edgeDirection</CODE> - whether this DirectedEdge's direction is the same as or
+                  opposite to that of the parent Edge (if any)</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLabel()"><!-- --></A><H3>
+getLabel</H3>
+<PRE>
+public long <B>getLabel</B>()</PRE>
+<DL>
+<DD>Returns the identifier attached to this directed edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLabel(long)"><!-- --></A><H3>
+setLabel</H3>
+<PRE>
+public void <B>setLabel</B>(long&nbsp;label)</PRE>
+<DL>
+<DD>Attaches an identifier to this directed edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNext()"><!-- --></A><H3>
+getNext</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A> <B>getNext</B>()</PRE>
+<DL>
+<DD>Returns the next directed edge in the EdgeRing that this directed edge is a member
+ of.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setNext(com.vividsolutions.jts.operation.polygonize.PolygonizeDirectedEdge)"><!-- --></A><H3>
+setNext</H3>
+<PRE>
+public void <B>setNext</B>(<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>&nbsp;next)</PRE>
+<DL>
+<DD>Sets the next directed edge in the EdgeRing that this directed edge is a member
+ of.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInRing()"><!-- --></A><H3>
+isInRing</H3>
+<PRE>
+public boolean <B>isInRing</B>()</PRE>
+<DL>
+<DD>Returns the ring of directed edges that this directed edge is
+ a member of, or null if the ring has not been set.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setRing(com.vividsolutions.jts.operation.polygonize.EdgeRing)"><CODE>setRing(EdgeRing)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setRing(com.vividsolutions.jts.operation.polygonize.EdgeRing)"><!-- --></A><H3>
+setRing</H3>
+<PRE>
+public void <B>setRing</B>(<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>&nbsp;edgeRing)</PRE>
+<DL>
+<DD>Sets the ring of directed edges that this directed edge is
+ a member of.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PolygonizeDirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.planargraph.DirectedEdge">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/Polygonizer.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/Polygonizer.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/Polygonizer.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,532 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Polygonizer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.polygonize.Polygonizer class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Polygonizer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Polygonizer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.polygonize</FONT>
+<BR>
+Class Polygonizer</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.polygonize.Polygonizer</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Polygonizer</B><DT>extends java.lang.Object</DL>
+
+<P>
+Polygonizes a set of Geometrys which contain linework that
+ represents the edges of a planar graph.
+ Any dimension of Geometry is handled - the constituent linework is extracted
+ to form the edges.
+ The edges must be correctly noded; that is, they must only meet
+ at their endpoints.  The Polygonizer will still run on incorrectly noded input
+ but will not form polygons from incorrected noded edges.
+ <p>
+ The Polygonizer reports the follow kinds of errors:
+ <ul>
+ <li><b>Dangles</b> - edges which have one or both ends which are not incident on another edge endpoint
+ <li><b>Cut Edges</b> - edges which are connected at both ends but which do not form part of polygon
+ <li><b>Invalid Ring Lines</b> - edges which form rings which are invalid
+ (e.g. the component lines contain a self-intersection)
+ </ul>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#cutEdges">cutEdges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#dangles">dangles</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;com.vividsolutions.jts.operation.polygonize.PolygonizeGraph</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#graph">graph</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#holeList">holeList</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#invalidRingLines">invalidRingLines</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#polyList">polyList</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#shellList">shellList</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#Polygonizer()">Polygonizer</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a polygonizer with the same <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>
+ as the input <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#add(java.util.Collection)">add</A></B>(java.util.Collection&nbsp;geomList)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a collection of geometries to be polygonized.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a geometry to the linework to be polygonized.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getCutEdges()">getCutEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the list of cut edges found during polygonization.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getDangles()">getDangles</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the list of dangling lines found during polygonization.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getInvalidRingLines()">getInvalidRingLines</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the list of lines forming invalid rings found during polygonization.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getPolygons()">getPolygons</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the list of polygons formed by the polygonization.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="graph"><!-- --></A><H3>
+graph</H3>
+<PRE>
+protected com.vividsolutions.jts.operation.polygonize.PolygonizeGraph <B>graph</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="dangles"><!-- --></A><H3>
+dangles</H3>
+<PRE>
+protected java.util.Collection <B>dangles</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="cutEdges"><!-- --></A><H3>
+cutEdges</H3>
+<PRE>
+protected java.util.List <B>cutEdges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="invalidRingLines"><!-- --></A><H3>
+invalidRingLines</H3>
+<PRE>
+protected java.util.List <B>invalidRingLines</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="holeList"><!-- --></A><H3>
+holeList</H3>
+<PRE>
+protected java.util.List <B>holeList</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="shellList"><!-- --></A><H3>
+shellList</H3>
+<PRE>
+protected java.util.List <B>shellList</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="polyList"><!-- --></A><H3>
+polyList</H3>
+<PRE>
+protected java.util.List <B>polyList</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Polygonizer()"><!-- --></A><H3>
+Polygonizer</H3>
+<PRE>
+public <B>Polygonizer</B>()</PRE>
+<DL>
+<DD>Create a polygonizer with the same <A HREF="../../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>
+ as the input <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(java.util.Collection)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(java.util.Collection&nbsp;geomList)</PRE>
+<DL>
+<DD>Add a collection of geometries to be polygonized.
+ May be called multiple times.
+ Any dimension of Geometry may be added;
+ the constituent linework will be extracted and used
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geomList</CODE> - a list of <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with linework to be polygonized</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD>Add a geometry to the linework to be polygonized.
+ May be called multiple times.
+ Any dimension of Geometry may be added;
+ the constituent linework will be extracted and used
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>g</CODE> - a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with linework to be polygonized</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPolygons()"><!-- --></A><H3>
+getPolygons</H3>
+<PRE>
+public java.util.Collection <B>getPolygons</B>()</PRE>
+<DL>
+<DD>Gets the list of polygons formed by the polygonization.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a collection of <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>s</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDangles()"><!-- --></A><H3>
+getDangles</H3>
+<PRE>
+public java.util.Collection <B>getDangles</B>()</PRE>
+<DL>
+<DD>Get the list of dangling lines found during polygonization.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a collection of the input <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s which are dangles</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCutEdges()"><!-- --></A><H3>
+getCutEdges</H3>
+<PRE>
+public java.util.Collection <B>getCutEdges</B>()</PRE>
+<DL>
+<DD>Get the list of cut edges found during polygonization.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a collection of the input <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s which are cut edges</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getInvalidRingLines()"><!-- --></A><H3>
+getInvalidRingLines</H3>
+<PRE>
+public java.util.Collection <B>getInvalidRingLines</B>()</PRE>
+<DL>
+<DD>Get the list of lines forming invalid rings found during polygonization.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a collection of the input <A HREF="../../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s which form invalid rings</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Polygonizer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.polygonize
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.polygonize package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.polygonize</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize" target="classFrame">EdgeRing</A>
+<BR>
+<A HREF="PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize" target="classFrame">PolygonizeDirectedEdge</A>
+<BR>
+<A HREF="Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize" target="classFrame">Polygonizer</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.polygonize
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.polygonize package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.polygonize";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/validate/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.polygonize
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A></B></TD>
+<TD>Represents a ring of <A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><CODE>PolygonizeDirectedEdge</CODE></A>s which form
+ a ring of a polygon.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A></B></TD>
+<TD>A <A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> of a <CODE>PolygonizeGraph</CODE>, which represents
+ an edge of a polygon formed by the graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A></B></TD>
+<TD>Polygonizes a set of Geometrys which contain linework that
+ represents the edges of a planar graph.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/validate/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/polygonize/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.polygonize Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.polygonize Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/validate/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.polygonize
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.polygonize.<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>EdgeRing</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdge</B></A> (implements java.lang.Comparable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.polygonize.<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PolygonizeDirectedEdge</B></A></UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.polygonize.<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>Polygonizer</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/overlay/validate/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleContains.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleContains.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleContains.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,286 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RectangleContains
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.predicate.RectangleContains class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RectangleContains";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RectangleContains.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.predicate</FONT>
+<BR>
+Class RectangleContains</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.predicate.RectangleContains</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RectangleContains</B><DT>extends java.lang.Object</DL>
+
+<P>
+Optimized implementation of spatial predicate "contains"
+ for cases where the first <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is a rectangle.
+ <p>
+ As a further optimization,
+ this class can be used directly to test many geometries against a single
+ rectangle.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html#RectangleContains(com.vividsolutions.jts.geom.Polygon)">RectangleContains</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new contains computer for two geometries.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html#contains(com.vividsolutions.jts.geom.Geometry)">contains</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html#contains(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)">contains</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle,
+         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RectangleContains(com.vividsolutions.jts.geom.Polygon)"><!-- --></A><H3>
+RectangleContains</H3>
+<PRE>
+public <B>RectangleContains</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle)</PRE>
+<DL>
+<DD>Create a new contains computer for two geometries.
+<P>
+<DT><B>Parameters:</B><DD><CODE>rectangle</CODE> - a rectangular geometry</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="contains(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public static boolean <B>contains</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle,
+                               <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RectangleContains.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleIntersects.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleIntersects.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/RectangleIntersects.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,323 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RectangleIntersects
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.predicate.RectangleIntersects class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RectangleIntersects";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RectangleIntersects.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.predicate</FONT>
+<BR>
+Class RectangleIntersects</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.predicate.RectangleIntersects</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RectangleIntersects</B><DT>extends java.lang.Object</DL>
+
+<P>
+Optimized implementation of spatial predicate "intersects"
+ for cases where the first <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is a rectangle.
+ <p>
+ As a further optimization,
+ this class can be used directly to test many geometries against a single
+ rectangle.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#MAXIMUM_SCAN_SEGMENT_COUNT">MAXIMUM_SCAN_SEGMENT_COUNT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Crossover size at which brute-force intersection scanning
+ is slower than indexed intersection detection.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#RectangleIntersects(com.vividsolutions.jts.geom.Polygon)">RectangleIntersects</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new intersects computer for a rectangle.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#intersects(com.vividsolutions.jts.geom.Geometry)">intersects</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#intersects(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)">intersects</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle,
+           <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MAXIMUM_SCAN_SEGMENT_COUNT"><!-- --></A><H3>
+MAXIMUM_SCAN_SEGMENT_COUNT</H3>
+<PRE>
+public static final int <B>MAXIMUM_SCAN_SEGMENT_COUNT</B></PRE>
+<DL>
+<DD>Crossover size at which brute-force intersection scanning
+ is slower than indexed intersection detection.
+ Must be determined empirically.  Should err on the
+ safe side by making value smaller rather than larger.
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.predicate.RectangleIntersects.MAXIMUM_SCAN_SEGMENT_COUNT">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RectangleIntersects(com.vividsolutions.jts.geom.Polygon)"><!-- --></A><H3>
+RectangleIntersects</H3>
+<PRE>
+public <B>RectangleIntersects</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle)</PRE>
+<DL>
+<DD>Create a new intersects computer for a rectangle.
+<P>
+<DT><B>Parameters:</B><DD><CODE>rectangle</CODE> - a rectangular geometry</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public static boolean <B>intersects</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>&nbsp;rectangle,
+                                 <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="intersects(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersects</H3>
+<PRE>
+public boolean <B>intersects</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RectangleIntersects.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,283 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+SegmentIntersectionTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.predicate.SegmentIntersectionTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SegmentIntersectionTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentIntersectionTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.predicate</FONT>
+<BR>
+Class SegmentIntersectionTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.predicate.SegmentIntersectionTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SegmentIntersectionTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+Tests if any line segments in two sets of CoordinateSequences intersect.
+ Optimized for small geometry size.
+ Short-circuited to return as soon an intersection is found.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html#SegmentIntersectionTester()">SegmentIntersectionTester</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html#hasIntersection(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.CoordinateSequence)">hasIntersection</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq0,
+                <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html#hasIntersectionWithLineStrings(com.vividsolutions.jts.geom.CoordinateSequence, java.util.List)">hasIntersectionWithLineStrings</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+                               java.util.List&nbsp;lines)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SegmentIntersectionTester()"><!-- --></A><H3>
+SegmentIntersectionTester</H3>
+<PRE>
+public <B>SegmentIntersectionTester</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="hasIntersectionWithLineStrings(com.vividsolutions.jts.geom.CoordinateSequence, java.util.List)"><!-- --></A><H3>
+hasIntersectionWithLineStrings</H3>
+<PRE>
+public boolean <B>hasIntersectionWithLineStrings</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq,
+                                              java.util.List&nbsp;lines)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasIntersection(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.CoordinateSequence)"><!-- --></A><H3>
+hasIntersection</H3>
+<PRE>
+public boolean <B>hasIntersection</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq0,
+                               <A HREF="../../../../../com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>&nbsp;seq1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SegmentIntersectionTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.predicate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.predicate package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.predicate</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate" target="classFrame">RectangleContains</A>
+<BR>
+<A HREF="RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate" target="classFrame">RectangleIntersects</A>
+<BR>
+<A HREF="SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate" target="classFrame">SegmentIntersectionTester</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.predicate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.predicate package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.predicate";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.predicate
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleContains</A></B></TD>
+<TD>Optimized implementation of spatial predicate "contains"
+ for cases where the first <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is a rectangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A></B></TD>
+<TD>Optimized implementation of spatial predicate "intersects"
+ for cases where the first <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is a rectangle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate">SegmentIntersectionTester</A></B></TD>
+<TD>Tests if any line segments in two sets of CoordinateSequences intersect.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/predicate/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.predicate Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.predicate Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.predicate
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.predicate.<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate"><B>RectangleContains</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.predicate.<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>RectangleIntersects</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.predicate.<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate"><B>SegmentIntersectionTester</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/polygonize/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,283 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+EdgeEndBuilder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.EdgeEndBuilder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeEndBuilder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class EdgeEndBuilder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.EdgeEndBuilder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeEndBuilder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeEnd</CODE></A>s which arise from a noded <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html#EdgeEndBuilder()">EdgeEndBuilder</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html#computeEdgeEnds(com.vividsolutions.jts.geomgraph.Edge, java.util.List)">computeEdgeEnds</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+                java.util.List&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates stub edges for all the intersections in this
+ Edge (if any) and inserts them into the graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html#computeEdgeEnds(java.util.Iterator)">computeEdgeEnds</A></B>(java.util.Iterator&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeEndBuilder()"><!-- --></A><H3>
+EdgeEndBuilder</H3>
+<PRE>
+public <B>EdgeEndBuilder</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeEdgeEnds(java.util.Iterator)"><!-- --></A><H3>
+computeEdgeEnds</H3>
+<PRE>
+public java.util.List <B>computeEdgeEnds</B>(java.util.Iterator&nbsp;edges)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeEdgeEnds(com.vividsolutions.jts.geomgraph.Edge, java.util.List)"><!-- --></A><H3>
+computeEdgeEnds</H3>
+<PRE>
+public void <B>computeEdgeEnds</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>&nbsp;edge,
+                            java.util.List&nbsp;l)</PRE>
+<DL>
+<DD>Creates stub edges for all the intersections in this
+ Edge (if any) and inserts them into the graph.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundle.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundle.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundle.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,413 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+EdgeEndBundle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.EdgeEndBundle class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeEndBundle";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndBundle.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEnd">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class EdgeEndBundle</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.EdgeEnd</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.EdgeEndBundle</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>EdgeEndBundle</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></DL>
+
+<P>
+A collection of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeEnd</CODE></A>s which obey the following invariant:
+ They originate at the same node and have the same direction.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEnd"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#edge">edge</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#label">label</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#EdgeEndBundle(com.vividsolutions.jts.algorithm.BoundaryNodeRule, com.vividsolutions.jts.geomgraph.EdgeEnd)">EdgeEndBundle</A></B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule,
+              <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#EdgeEndBundle(com.vividsolutions.jts.geomgraph.EdgeEnd)">EdgeEndBundle</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)">computeLabel</A></B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This computes the overall edge label for the set of
+ edges in this EdgeStubBundle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#getEdgeEnds()">getEdgeEnds</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#getLabel()">getLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEnd"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareDirection(com.vividsolutions.jts.geomgraph.EdgeEnd)">compareDirection</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDirectedCoordinate()">getDirectedCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDx()">getDx</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDy()">getDy</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getEdge()">getEdge</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getNode()">getNode</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getQuadrant()">getQuadrant</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">init</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#setNode(com.vividsolutions.jts.geomgraph.Node)">setNode</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeEndBundle(com.vividsolutions.jts.algorithm.BoundaryNodeRule, com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+EdgeEndBundle</H3>
+<PRE>
+public <B>EdgeEndBundle</B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule,
+                     <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="EdgeEndBundle(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+EdgeEndBundle</H3>
+<PRE>
+public <B>EdgeEndBundle</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getLabel()"><!-- --></A><H3>
+getLabel</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A> <B>getLabel</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#getLabel()">getLabel</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeEnds()"><!-- --></A><H3>
+getEdgeEnds</H3>
+<PRE>
+public java.util.List <B>getEdgeEnds</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+computeLabel</H3>
+<PRE>
+public void <B>computeLabel</B>(<A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+<DD>This computes the overall edge label for the set of
+ edges in this EdgeStubBundle.  It essentially merges
+ the ON and side labels for each edge.  These labels must be compatible
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)">computeLabel</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html#print(java.io.PrintStream)">print</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndBundle.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEnd">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,297 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+EdgeEndBundleStar
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.EdgeEndBundleStar class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EdgeEndBundleStar";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndBundleStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class EdgeEndBundleStar</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.EdgeEndStar</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.EdgeEndBundleStar</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EdgeEndBundleStar</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></DL>
+
+<P>
+An ordered list of <A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>EdgeEndBundle</CODE></A>s around a <A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNode</CODE></A>.
+ They are maintained in CCW order (starting with the positive x-axis) around the node
+ for efficient lookup and topology building.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeList">edgeList</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeMap">edgeMap</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html#EdgeEndBundleStar()">EdgeEndBundleStar</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new empty EdgeEndBundleStar</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)">insert</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert a EdgeEnd in order in the list.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])">computeLabelling</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#findIndex(com.vividsolutions.jts.geomgraph.EdgeEnd)">findIndex</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getDegree()">getDegree</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getEdges()">getEdges</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getNextCW(com.vividsolutions.jts.geomgraph.EdgeEnd)">getNextCW</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insertEdgeEnd(com.vividsolutions.jts.geomgraph.EdgeEnd, java.lang.Object)">insertEdgeEnd</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#isAreaLabelsConsistent(com.vividsolutions.jts.geomgraph.GeometryGraph)">isAreaLabelsConsistent</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#iterator()">iterator</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#print(java.io.PrintStream)">print</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EdgeEndBundleStar()"><!-- --></A><H3>
+EdgeEndBundleStar</H3>
+<PRE>
+public <B>EdgeEndBundleStar</B>()</PRE>
+<DL>
+<DD>Creates a new empty EdgeEndBundleStar
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><!-- --></A><H3>
+insert</H3>
+<PRE>
+public void <B>insert</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>&nbsp;e)</PRE>
+<DL>
+<DD>Insert a EdgeEnd in order in the list.
+ If there is an existing EdgeStubBundle which is parallel, the EdgeEnd is
+ added to the bundle.  Otherwise, a new EdgeEndBundle is created
+ to contain the EdgeEnd.
+ <br>
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)">insert</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EdgeEndBundleStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.EdgeEndStar">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateComputer.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateComputer.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateComputer.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RelateComputer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.RelateComputer class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RelateComputer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateComputer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class RelateComputer</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.RelateComputer</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RelateComputer</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes the topological relationship between two Geometries.
+ <p>
+ RelateComputer does not need to build a complete graph structure to compute
+ the IntersectionMatrix.  The relationship between the geometries can
+ be computed by simply examining the labelling of edges incident on each node.
+ <p>
+ RelateComputer does not currently support arbitrary GeometryCollections.
+ This is because GeometryCollections can contain overlapping Polygons.
+ In order to correct compute relate on overlapping Polygons, they
+ would first need to be noded and merged (if not explicitly, at least
+ implicitly).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html#RelateComputer(com.vividsolutions.jts.geomgraph.GeometryGraph[])">RelateComputer</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]&nbsp;arg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html#computeIM()">computeIM</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RelateComputer(com.vividsolutions.jts.geomgraph.GeometryGraph[])"><!-- --></A><H3>
+RelateComputer</H3>
+<PRE>
+public <B>RelateComputer</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>[]&nbsp;arg)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIM()"><!-- --></A><H3>
+computeIM</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A> <B>computeIM</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateComputer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNode.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNode.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNode.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,311 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RelateNode
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.RelateNode class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RelateNode";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateNode.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.Node">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class RelateNode</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.GraphComponent</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.Node</A>
+          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.RelateNode</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RelateNode</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></DL>
+
+<P>
+Represents a node in the topological graph used to compute spatial relationships.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.Node"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#coord">coord</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#edges">edges</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#label">label</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html#RelateNode(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.EdgeEndStar)">RelateNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+           <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>&nbsp;edges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update the IM with the contribution for this component.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.Node"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)">add</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#getCoordinate()">getCoordinate</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#getEdges()">getEdges</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#isIncidentEdgeInResult()">isIncidentEdgeInResult</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#isIsolated()">isIsolated</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)">mergeLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#mergeLabel(com.vividsolutions.jts.geomgraph.Node)">mergeLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#print(java.io.PrintStream)">print</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#setLabel(int, int)">setLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#setLabelBoundary(int)">setLabelBoundary</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geomgraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#getLabel()">getLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCovered()">isCovered</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isCoveredSet()">isCoveredSet</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isInResult()">isInResult</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setCovered(boolean)">setCovered</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setInResult(boolean)">setInResult</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setLabel(com.vividsolutions.jts.geomgraph.Label)">setLabel</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html#updateIM(com.vividsolutions.jts.geom.IntersectionMatrix)">updateIM</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RelateNode(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.EdgeEndStar)"><!-- --></A><H3>
+RelateNode</H3>
+<PRE>
+public <B>RelateNode</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord,
+                  <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>&nbsp;edges)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><!-- --></A><H3>
+computeIM</H3>
+<PRE>
+protected void <B>computeIM</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>&nbsp;im)</PRE>
+<DL>
+<DD>Update the IM with the contribution for this component.
+ A component only contributes if it has a labelling for both parent geometries
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)">computeIM</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateNode.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geomgraph.Node">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RelateNodeFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.RelateNodeFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RelateNodeFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateNodeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class RelateNodeFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">com.vividsolutions.jts.geomgraph.NodeFactory</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.RelateNodeFactory</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RelateNodeFactory</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></DL>
+
+<P>
+Used by the <A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>NodeMap</CODE></A> in a <A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNodeGraph</CODE></A> to create <A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNode</CODE></A>s.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html#RelateNodeFactory()">RelateNodeFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)">createNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The basic node constructor does not allow for incident edges</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RelateNodeFactory()"><!-- --></A><H3>
+RelateNodeFactory</H3>
+<PRE>
+public <B>RelateNodeFactory</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="createNode(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+createNode</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A> <B>createNode</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></CODE></B></DD>
+<DD>The basic node constructor does not allow for incident edges
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)">createNode</A></CODE> in class <CODE><A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateNodeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeGraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeGraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateNodeGraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,369 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RelateNodeGraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.RelateNodeGraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RelateNodeGraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateNodeGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class RelateNodeGraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.RelateNodeGraph</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RelateNodeGraph</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements the simple graph of Nodes and EdgeEnd which is all that is
+ required to determine topological relationships between Geometries.
+ Also supports building a topological graph of a single Geometry, to
+ allow verification of valid topology.
+ <p>
+ It is <b>not</b> necessary to create a fully linked
+ PlanarGraph to determine relationships, since it is sufficient
+ to know how the Geometries interact locally around the nodes.
+ In fact, this is not even feasible, since it is not possible to compute
+ exact intersection points, and hence the topology around those nodes
+ cannot be computed robustly.
+ The only Nodes that are created are for improper intersections;
+ that is, nodes which occur at existing vertices of the Geometries.
+ Proper intersections (e.g. ones which occur between the interior of line segments)
+ have their topology determined implicitly, without creating a Node object
+ to represent them.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#RelateNodeGraph()">RelateNodeGraph</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#build(com.vividsolutions.jts.geomgraph.GeometryGraph)">build</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#computeIntersectionNodes(com.vividsolutions.jts.geomgraph.GeometryGraph, int)">computeIntersectionNodes</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph,
+                         int&nbsp;argIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert nodes for all intersections on the edges of a Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#copyNodesAndLabels(com.vividsolutions.jts.geomgraph.GeometryGraph, int)">copyNodesAndLabels</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph,
+                   int&nbsp;argIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy all nodes from an arg geometry into this graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#getNodeIterator()">getNodeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#insertEdgeEnds(java.util.List)">insertEdgeEnds</A></B>(java.util.List&nbsp;ee)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RelateNodeGraph()"><!-- --></A><H3>
+RelateNodeGraph</H3>
+<PRE>
+public <B>RelateNodeGraph</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNodeIterator()"><!-- --></A><H3>
+getNodeIterator</H3>
+<PRE>
+public java.util.Iterator <B>getNodeIterator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="build(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+build</H3>
+<PRE>
+public void <B>build</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="computeIntersectionNodes(com.vividsolutions.jts.geomgraph.GeometryGraph, int)"><!-- --></A><H3>
+computeIntersectionNodes</H3>
+<PRE>
+public void <B>computeIntersectionNodes</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph,
+                                     int&nbsp;argIndex)</PRE>
+<DL>
+<DD>Insert nodes for all intersections on the edges of a Geometry.
+ Label the created nodes the same as the edge label if they do not already have a label.
+ This allows nodes created by either self-intersections or
+ mutual intersections to be labelled.
+ Endpoint nodes will already be labelled from when they were inserted.
+ <p>
+ Precondition: edge intersections have been computed.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="copyNodesAndLabels(com.vividsolutions.jts.geomgraph.GeometryGraph, int)"><!-- --></A><H3>
+copyNodesAndLabels</H3>
+<PRE>
+public void <B>copyNodesAndLabels</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph,
+                               int&nbsp;argIndex)</PRE>
+<DL>
+<DD>Copy all nodes from an arg geometry into this graph.
+ The node label in the arg geometry overrides any previously computed
+ label for that argIndex.
+ (E.g. a node may be an intersection node with
+ a computed label of BOUNDARY,
+ but in the original arg Geometry it is actually
+ in the interior due to the Boundary Determination Rule)
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertEdgeEnds(java.util.List)"><!-- --></A><H3>
+insertEdgeEnds</H3>
+<PRE>
+public void <B>insertEdgeEnds</B>(java.util.List&nbsp;ee)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateNodeGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/RelateOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,375 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RelateOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate.RelateOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RelateOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.operation.GeometryGraphOperation">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.relate</FONT>
+<BR>
+Class RelateOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">com.vividsolutions.jts.operation.GeometryGraphOperation</A>
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.relate.RelateOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RelateOp</B><DT>extends <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></DL>
+
+<P>
+Implements the SFS <tt>relate()</tt> operation on two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.
+ This class supports specifying a custom <A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A>
+ to be used during the relate computation.
+ <p>
+ <b>Note:</b> custom Boundary Node Rules do not (currently)
+ affect the results of other Geometry methods (such
+ as <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><CODE>Geometry.getBoundary()</CODE></A>.  The results of
+ these methods may not be consistent with the relationship computed by
+ a custom Boundary Node Rule.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.operation.GeometryGraphOperation"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.operation.<A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#arg">arg</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#cga">cga</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#li">li</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#resultPrecisionModel">resultPrecisionModel</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html#RelateOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">RelateOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new Relate operation, using the default (OGC SFS) Boundary Node Rule.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html#RelateOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)">RelateOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+         <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+         <A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new Relate operation with a specified Boundary Node Rule.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html#getIntersectionMatrix()">getIntersectionMatrix</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the IntersectionMatrix for the spatial relationship
+ between the input geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html#relate(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">relate</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+       <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the spatial relationship
+ between two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using the default (OGC SFS) Boundary Node Rule</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html#relate(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)">relate</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+       <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b,
+       <A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the spatial relationship
+ between two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s using a specified Boundary Node Rule.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.operation.GeometryGraphOperation"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.operation.<A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#getArgGeometry(int)">getArgGeometry</A>, <A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html#setComputationPrecision(com.vividsolutions.jts.geom.PrecisionModel)">setComputationPrecision</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RelateOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+RelateOp</H3>
+<PRE>
+public <B>RelateOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1)</PRE>
+<DL>
+<DD>Creates a new Relate operation, using the default (OGC SFS) Boundary Node Rule.
+<P>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a Geometry to relate<DD><CODE>g1</CODE> - another Geometry to relate</DL>
+<HR>
+
+<A NAME="RelateOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+RelateOp</H3>
+<PRE>
+public <B>RelateOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g0,
+                <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g1,
+                <A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+<DD>Creates a new Relate operation with a specified Boundary Node Rule.
+<P>
+<DT><B>Parameters:</B><DD><CODE>g0</CODE> - a Geometry to relate<DD><CODE>g1</CODE> - another Geometry to relate<DD><CODE>boundaryNodeRule</CODE> - the Boundary Node Rule to use</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="relate(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+relate</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A> <B>relate</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+                                        <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the spatial relationship
+ between two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using the default (OGC SFS) Boundary Node Rule
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a Geometry to test<DD><CODE>b</CODE> - a Geometry to test
+<DT><B>Returns:</B><DD>the IntersectonMatrix for the spatial relationship between the geometries</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="relate(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><!-- --></A><H3>
+relate</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A> <B>relate</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;a,
+                                        <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;b,
+                                        <A HREF="../../../../../com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>&nbsp;boundaryNodeRule)</PRE>
+<DL>
+<DD>Computes the <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the spatial relationship
+ between two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s using a specified Boundary Node Rule.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>a</CODE> - a Geometry to test<DD><CODE>b</CODE> - a Geometry to test<DD><CODE>boundaryNodeRule</CODE> - the Boundary Node Rule to use
+<DT><B>Returns:</B><DD>the IntersectonMatrix for the spatial relationship between the input geometries</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIntersectionMatrix()"><!-- --></A><H3>
+getIntersectionMatrix</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A> <B>getIntersectionMatrix</B>()</PRE>
+<DL>
+<DD>Gets the IntersectionMatrix for the spatial relationship
+ between the input geometries.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the IntersectonMatrix for the spatial relationship between the input geometries</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RelateOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.operation.GeometryGraphOperation">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.relate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.relate</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">EdgeEndBuilder</A>
+<BR>
+<A HREF="EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">EdgeEndBundle</A>
+<BR>
+<A HREF="EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">EdgeEndBundleStar</A>
+<BR>
+<A HREF="RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateComputer</A>
+<BR>
+<A HREF="RelateNode.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateNode</A>
+<BR>
+<A HREF="RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateNodeFactory</A>
+<BR>
+<A HREF="RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateNodeGraph</A>
+<BR>
+<A HREF="RelateOp.html" title="class in com.vividsolutions.jts.operation.relate" target="classFrame">RelateOp</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.relate
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.relate package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.relate";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.relate
+</H2>
+Contains classes to implement the computation of the spatial relationships of <CODE>Geometry</CODE>s.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBuilder</A></B></TD>
+<TD>Computes the <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeEnd</CODE></A>s which arise from a noded <A HREF="../../../../../com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A></B></TD>
+<TD>A collection of <A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeEnd</CODE></A>s which obey the following invariant:
+ They originate at the same node and have the same direction.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundleStar</A></B></TD>
+<TD>An ordered list of <A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>EdgeEndBundle</CODE></A>s around a <A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNode</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate">RelateComputer</A></B></TD>
+<TD>Computes the topological relationship between two Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate">RelateNode</A></B></TD>
+<TD>Represents a node in the topological graph used to compute spatial relationships.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeFactory</A></B></TD>
+<TD>Used by the <A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>NodeMap</CODE></A> in a <A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNodeGraph</CODE></A> to create <A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNode</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A></B></TD>
+<TD>Implements the simple graph of Nodes and EdgeEnd which is all that is
+ required to determine topological relationships between Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A></B></TD>
+<TD>Implements the SFS <tt>relate()</tt> operation on two <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.operation.relate Description
+</H2>
+
+<P>
+Contains classes to implement the computation of the spatial relationships of <CODE>Geometry</CODE>s.
+<P>
+The <code>relate</code> algorithm computes the <code>IntersectionMatrix</code> describing the 
+relationship of two <code>Geometry</code>s.  The algorithm for computing <code>relate</code> 
+uses the intersection operations supported by topology graphs.  Although the <code>relate</code> 
+result depends on the resultant graph formed by the computed intersections, there is 
+no need to explicitly compute the entire graph.  
+It is sufficient to compute the local structure of the graph 
+at each intersection node. 
+<P>
+The algorithm to compute <code>relate</code> has the following steps:
+<UL>
+  <LI>Build topology graphs of the two input geometries. For each geometry 
+      all self-intersection nodes are computed and added to the graph.
+  <LI>Compute nodes for all intersections between edges and nodes of the graphs.
+  <LI>Compute the labeling for the computed nodes by merging the labels from the input graphs. 
+  <LI>Compute the labeling for isolated components of the graph (see below)
+  <LI>Compute the <code>IntersectionMatrix</code> from the labels on the nodes and edges.
+</UL>
+
+<H3>Labeling isolated components</H3>
+
+Isolated components are components (edges or nodes) of an input <code>Geometry</code> which 
+do not contain any intersections with the other input <code>Geometry</code>.  The 
+topological relationship of these components to the other input <code>Geometry</code> 
+must be computed in order to determine the complete labeling of the component.  This can 
+be done by testing whether the component lies in the interior or exterior of the other 
+<code>Geometry</code>.  If the other <code>Geometry</code> is 1-dimensional, the isolated 
+component must lie in the exterior (since otherwise it would have an intersection with an 
+edge of the <code>Geometry</code>).  If the other <code>Geometry</code> is 2-dimensional, 
+a Point-In-Polygon test can be used to determine whether the isolated component is in the 
+interior or exterior. 
+
+<h2>Package Specification</h2>
+
+<ul>
+  <li>Java Topology Suite Technical Specifications
+  <li><A HREF="http://www.opengis.org/techno/specs.htm">
+      OpenGIS Simple Features Specification for SQL</A>
+</ul>
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/relate/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.relate Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.relate Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.relate
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEnd</B></A> (implements java.lang.Comparable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBundle</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEndStar</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBundleStar</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="../../../../../com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>GeometryGraphOperation</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateOp</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>Node</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNode</B></A></UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="../../../../../com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeFactory</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNodeFactory</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateComputer</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="../../../../../com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNodeGraph</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/predicate/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,326 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+ConnectedInteriorTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.ConnectedInteriorTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConnectedInteriorTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedInteriorTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class ConnectedInteriorTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.ConnectedInteriorTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ConnectedInteriorTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+This class tests that the interior of an area <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ ( <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>  or <A HREF="../../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ is connected.
+ This can happen if:
+ <ul>
+ <li>a shell self-intersects
+ <li>one or more holes form a connected chain touching a shell at two different points
+ <li>one or more holes form a ring around a subset of the interior
+ </ul>
+ If a disconnected situation is found the location of the problem is recorded.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#ConnectedInteriorTester(com.vividsolutions.jts.geomgraph.GeometryGraph)">ConnectedInteriorTester</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#findDifferentPoint(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate)">findDifferentPoint</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+                   <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#isInteriorsConnected()">isInteriorsConnected</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#visitLinkedDirectedEdges(com.vividsolutions.jts.geomgraph.DirectedEdge)">visitLinkedDirectedEdges</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ConnectedInteriorTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+ConnectedInteriorTester</H3>
+<PRE>
+public <B>ConnectedInteriorTester</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="findDifferentPoint(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+findDifferentPoint</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>findDifferentPoint</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord,
+                                            <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isInteriorsConnected()"><!-- --></A><H3>
+isInteriorsConnected</H3>
+<PRE>
+public boolean <B>isInteriorsConnected</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="visitLinkedDirectedEdges(com.vividsolutions.jts.geomgraph.DirectedEdge)"><!-- --></A><H3>
+visitLinkedDirectedEdges</H3>
+<PRE>
+protected void <B>visitLinkedDirectedEdges</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>&nbsp;start)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedInteriorTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+ConsistentAreaTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.ConsistentAreaTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConsistentAreaTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConsistentAreaTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class ConsistentAreaTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.ConsistentAreaTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ConsistentAreaTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+Checks that a <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A> representing an area
+ (a <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> or <A HREF="../../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ has consistent semantics for area geometries.
+ This check is required for any reasonable polygonal model
+ (including the OGC-SFS model, as well as models which allow ring self-intersection at single points)
+ <p>
+ Checks include:
+ <ul>
+ <li>test for rings which properly intersect
+ (but not for ring self-intersection, or intersections at vertices)
+ <li>test for consistent labelling at all node points
+ (this detects vertex intersections with invalid topology,
+ i.e. where the exterior side of an edge lies in the interior of the area)
+ <li>test for duplicate rings
+ </ul>
+ If an inconsistency is found the location of the problem
+ is recorded and is available to the caller.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#ConsistentAreaTester(com.vividsolutions.jts.geomgraph.GeometryGraph)">ConsistentAreaTester</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new tester for consistent areas.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#getInvalidPoint()">getInvalidPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#hasDuplicateRings()">hasDuplicateRings</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks for two duplicate rings in an area.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#isNodeConsistentArea()">isNodeConsistentArea</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check all nodes to see if their labels are consistent with area topology.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ConsistentAreaTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+ConsistentAreaTester</H3>
+<PRE>
+public <B>ConsistentAreaTester</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;geomGraph)</PRE>
+<DL>
+<DD>Creates a new tester for consistent areas.
+<P>
+<DT><B>Parameters:</B><DD><CODE>geomGraph</CODE> - the topology graph of the area geometry</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getInvalidPoint()"><!-- --></A><H3>
+getInvalidPoint</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getInvalidPoint</B>()</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the intersection point, or <code>null</code> if none was found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNodeConsistentArea()"><!-- --></A><H3>
+isNodeConsistentArea</H3>
+<PRE>
+public boolean <B>isNodeConsistentArea</B>()</PRE>
+<DL>
+<DD>Check all nodes to see if their labels are consistent with area topology.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this area has a consistent node labelling</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasDuplicateRings()"><!-- --></A><H3>
+hasDuplicateRings</H3>
+<PRE>
+public boolean <B>hasDuplicateRings</B>()</PRE>
+<DL>
+<DD>Checks for two duplicate rings in an area.
+ Duplicate rings are rings that are topologically equal
+ (that is, which have the same sequence of points up to point order).
+ If the area is topologically consistent (determined by calling the
+ <code>isNodeConsistentArea</code>,
+ duplicate rings can be found by checking for EdgeBundles which contain
+ more than one EdgeEnd.
+ (This is because topologically consistent areas cannot have two rings sharing
+ the same line segment, unless the rings are equal).
+ The start point of one of the equal rings will be placed in
+ invalidPoint.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true if this area Geometry is topologically consistent but has two duplicate rings</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConsistentAreaTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/IsValidOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/IsValidOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/IsValidOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,372 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+IsValidOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.IsValidOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IsValidOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IsValidOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class IsValidOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.IsValidOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>IsValidOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements the algorithsm required to compute the <code>isValid()</code> method
+ for <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.
+ See the documentation for the various geometry types for a specification of validity.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html#IsValidOp(com.vividsolutions.jts.geom.Geometry)">IsValidOp</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parentGeometry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html#findPtNotNode(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geomgraph.GeometryGraph)">findPtNotNode</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;testCoords,
+              <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;searchRing,
+              <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find a point from the list of testCoords
+ that is NOT a node in the edge for the list of searchCoords</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html#getValidationError()">getValidationError</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html#isValid()">isValid</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html#isValid(com.vividsolutions.jts.geom.Coordinate)">isValid</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks whether a coordinate is valid for processing.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html#setSelfTouchingRingFormingHoleValid(boolean)">setSelfTouchingRingFormingHoleValid</A></B>(boolean&nbsp;isValid)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets whether polygons using <b>Self-Touching Rings</b> to form
+ holes are reported as valid.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="IsValidOp(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+IsValidOp</H3>
+<PRE>
+public <B>IsValidOp</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parentGeometry)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isValid(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public static boolean <B>isValid</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>Checks whether a coordinate is valid for processing.
+ Coordinates are valid iff their x and y ordinates are in the
+ range of the floating point representation.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - the coordinate to validate
+<DT><B>Returns:</B><DD><code>true</code> if the coordinate is valid</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findPtNotNode(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+findPtNotNode</H3>
+<PRE>
+public static <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>findPtNotNode</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;testCoords,
+                                       <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;searchRing,
+                                       <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</PRE>
+<DL>
+<DD>Find a point from the list of testCoords
+ that is NOT a node in the edge for the list of searchCoords
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the point found, or <code>null</code> if none found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setSelfTouchingRingFormingHoleValid(boolean)"><!-- --></A><H3>
+setSelfTouchingRingFormingHoleValid</H3>
+<PRE>
+public void <B>setSelfTouchingRingFormingHoleValid</B>(boolean&nbsp;isValid)</PRE>
+<DL>
+<DD>Sets whether polygons using <b>Self-Touching Rings</b> to form
+ holes are reported as valid.
+ If this flag is set, the following Self-Touching conditions
+ are treated as being valid:
+ <ul>
+ <li>the shell ring self-touches to create a hole touching the shell
+ <li>a hole ring self-touches to create two holes touching at a point
+ </ul>
+ <p>
+ The default (following the OGC SFS standard)
+ is that this condition is <b>not</b> valid (<code>false</code>).
+ <p>
+ This does not affect whether Self-Touching Rings
+ disconnecting the polygon interior are considered valid
+ (these are considered to be <b>invalid</b> under the SFS, and many other
+ spatial models as well).
+ This includes "bow-tie" shells,
+ which self-touch at a single point causing the interior to
+ be disconnected,
+ and "C-shaped" holes which self-touch at a single point causing an island to be formed.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>isValid</CODE> - states whether geometry with this condition is valid</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isValid()"><!-- --></A><H3>
+isValid</H3>
+<PRE>
+public boolean <B>isValid</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getValidationError()"><!-- --></A><H3>
+getValidationError</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A> <B>getValidationError</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IsValidOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,298 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+QuadtreeNestedRingTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.QuadtreeNestedRingTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="QuadtreeNestedRingTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="QuadtreeNestedRingTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class QuadtreeNestedRingTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.QuadtreeNestedRingTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>QuadtreeNestedRingTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+Tests whether any of a set of <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>
+ index to speed up the comparisons.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#QuadtreeNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)">QuadtreeNestedRingTester</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#add(com.vividsolutions.jts.geom.LinearRing)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#getNestedPoint()">getNestedPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#isNonNested()">isNonNested</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="QuadtreeNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+QuadtreeNestedRingTester</H3>
+<PRE>
+public <B>QuadtreeNestedRingTester</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNestedPoint()"><!-- --></A><H3>
+getNestedPoint</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getNestedPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNonNested()"><!-- --></A><H3>
+isNonNested</H3>
+<PRE>
+public boolean <B>isNonNested</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="QuadtreeNestedRingTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/RepeatedPointTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/RepeatedPointTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/RepeatedPointTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,298 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+RepeatedPointTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.RepeatedPointTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RepeatedPointTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RepeatedPointTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class RepeatedPointTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.RepeatedPointTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>RepeatedPointTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements the appropriate checks for repeated points
+ (consecutive identical coordinates) as defined in the
+ JTS spec.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#RepeatedPointTester()">RepeatedPointTester</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#hasRepeatedPoint(com.vividsolutions.jts.geom.Coordinate[])">hasRepeatedPoint</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#hasRepeatedPoint(com.vividsolutions.jts.geom.Geometry)">hasRepeatedPoint</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="RepeatedPointTester()"><!-- --></A><H3>
+RepeatedPointTester</H3>
+<PRE>
+public <B>RepeatedPointTester</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasRepeatedPoint(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+hasRepeatedPoint</H3>
+<PRE>
+public boolean <B>hasRepeatedPoint</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;g)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hasRepeatedPoint(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+hasRepeatedPoint</H3>
+<PRE>
+public boolean <B>hasRepeatedPoint</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;coord)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RepeatedPointTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,298 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+SimpleNestedRingTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.SimpleNestedRingTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleNestedRingTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleNestedRingTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class SimpleNestedRingTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.SimpleNestedRingTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SimpleNestedRingTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+Tests whether any of a set of <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a simple O(n^2)
+ comparison.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#SimpleNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)">SimpleNestedRingTester</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#add(com.vividsolutions.jts.geom.LinearRing)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#getNestedPoint()">getNestedPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#isNonNested()">isNonNested</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+SimpleNestedRingTester</H3>
+<PRE>
+public <B>SimpleNestedRingTester</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNestedPoint()"><!-- --></A><H3>
+getNestedPoint</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getNestedPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNonNested()"><!-- --></A><H3>
+isNonNested</H3>
+<PRE>
+public boolean <B>isNonNested</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleNestedRingTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,298 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+SweeplineNestedRingTester
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.SweeplineNestedRingTester class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SweeplineNestedRingTester";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweeplineNestedRingTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class SweeplineNestedRingTester</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.SweeplineNestedRingTester</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SweeplineNestedRingTester</B><DT>extends java.lang.Object</DL>
+
+<P>
+Tests whether any of a set of <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineIndex</CODE></A>
+ index to speed up the comparisons.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#SweeplineNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)">SweeplineNestedRingTester</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#add(com.vividsolutions.jts.geom.LinearRing)">add</A></B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#getNestedPoint()">getNestedPoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#isNonNested()">isNonNested</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SweeplineNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><!-- --></A><H3>
+SweeplineNestedRingTester</H3>
+<PRE>
+public <B>SweeplineNestedRingTester</B>(<A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>&nbsp;graph)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getNestedPoint()"><!-- --></A><H3>
+getNestedPoint</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getNestedPoint</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.LinearRing)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>&nbsp;ring)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isNonNested()"><!-- --></A><H3>
+isNonNested</H3>
+<PRE>
+public boolean <B>isNonNested</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SweeplineNestedRingTester.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/TopologyValidationError.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/TopologyValidationError.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/TopologyValidationError.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,620 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+TopologyValidationError
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid.TopologyValidationError class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TopologyValidationError";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyValidationError.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.operation.valid</FONT>
+<BR>
+Class TopologyValidationError</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.operation.valid.TopologyValidationError</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TopologyValidationError</B><DT>extends java.lang.Object</DL>
+
+<P>
+Contains information about the nature and location of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ validation error
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#DISCONNECTED_INTERIOR">DISCONNECTED_INTERIOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that the interior of a polygon is disjoint
+ (often caused by set of contiguous holes splitting the polygon into two parts)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#DUPLICATE_RINGS">DUPLICATE_RINGS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that a polygonal geometry contains two rings which are identical</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#ERROR">ERROR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#HOLE_OUTSIDE_SHELL">HOLE_OUTSIDE_SHELL</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that a hole of a polygon lies partially or completely in the exterior of the shell</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#INVALID_COORDINATE">INVALID_COORDINATE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that the <code>X</code> or <code>Y</code> ordinate of
+ a Coordinate is not a valid numeric value (e.g.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#NESTED_HOLES">NESTED_HOLES</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that a hole lies in the interior of another hole in the same polygon</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#NESTED_SHELLS">NESTED_SHELLS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that a polygon component of a MultiPolygon lies inside another polygonal component</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#REPEATED_POINT">REPEATED_POINT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#RING_NOT_CLOSED">RING_NOT_CLOSED</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that a ring is not correctly closed
+ (the first and the last coordinate are different)</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#RING_SELF_INTERSECTION">RING_SELF_INTERSECTION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that a ring self-intersects</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#SELF_INTERSECTION">SELF_INTERSECTION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that two rings of a polygonal geometry intersect</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TOO_FEW_POINTS">TOO_FEW_POINTS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates that either
+ 
+ a LineString contains a single point
+ a LinearRing contains 2 or 3 points
+ </TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TopologyValidationError(int)">TopologyValidationError</A></B>(int&nbsp;errorType)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a validation error of the given type with a null location</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TopologyValidationError(int, com.vividsolutions.jts.geom.Coordinate)">TopologyValidationError</A></B>(int&nbsp;errorType,
+                        <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a validation error with the given type and location</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the location of this error (on the <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> containing the error).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#getErrorType()">getErrorType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the type of this error.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#getMessage()">getMessage</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets an error message describing this error.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets a message describing the type and location of this error.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ERROR"><!-- --></A><H3>
+ERROR</H3>
+<PRE>
+public static final int <B>ERROR</B></PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I></I>&nbsp;
+<P>
+<DD>Not used
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.ERROR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="REPEATED_POINT"><!-- --></A><H3>
+REPEATED_POINT</H3>
+<PRE>
+public static final int <B>REPEATED_POINT</B></PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I></I>&nbsp;
+<P>
+<DD>No longer used - repeated points are considered valid as per the SFS
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.REPEATED_POINT">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="HOLE_OUTSIDE_SHELL"><!-- --></A><H3>
+HOLE_OUTSIDE_SHELL</H3>
+<PRE>
+public static final int <B>HOLE_OUTSIDE_SHELL</B></PRE>
+<DL>
+<DD>Indicates that a hole of a polygon lies partially or completely in the exterior of the shell
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.HOLE_OUTSIDE_SHELL">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="NESTED_HOLES"><!-- --></A><H3>
+NESTED_HOLES</H3>
+<PRE>
+public static final int <B>NESTED_HOLES</B></PRE>
+<DL>
+<DD>Indicates that a hole lies in the interior of another hole in the same polygon
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.NESTED_HOLES">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DISCONNECTED_INTERIOR"><!-- --></A><H3>
+DISCONNECTED_INTERIOR</H3>
+<PRE>
+public static final int <B>DISCONNECTED_INTERIOR</B></PRE>
+<DL>
+<DD>Indicates that the interior of a polygon is disjoint
+ (often caused by set of contiguous holes splitting the polygon into two parts)
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.DISCONNECTED_INTERIOR">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="SELF_INTERSECTION"><!-- --></A><H3>
+SELF_INTERSECTION</H3>
+<PRE>
+public static final int <B>SELF_INTERSECTION</B></PRE>
+<DL>
+<DD>Indicates that two rings of a polygonal geometry intersect
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.SELF_INTERSECTION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="RING_SELF_INTERSECTION"><!-- --></A><H3>
+RING_SELF_INTERSECTION</H3>
+<PRE>
+public static final int <B>RING_SELF_INTERSECTION</B></PRE>
+<DL>
+<DD>Indicates that a ring self-intersects
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.RING_SELF_INTERSECTION">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="NESTED_SHELLS"><!-- --></A><H3>
+NESTED_SHELLS</H3>
+<PRE>
+public static final int <B>NESTED_SHELLS</B></PRE>
+<DL>
+<DD>Indicates that a polygon component of a MultiPolygon lies inside another polygonal component
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.NESTED_SHELLS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="DUPLICATE_RINGS"><!-- --></A><H3>
+DUPLICATE_RINGS</H3>
+<PRE>
+public static final int <B>DUPLICATE_RINGS</B></PRE>
+<DL>
+<DD>Indicates that a polygonal geometry contains two rings which are identical
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.DUPLICATE_RINGS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="TOO_FEW_POINTS"><!-- --></A><H3>
+TOO_FEW_POINTS</H3>
+<PRE>
+public static final int <B>TOO_FEW_POINTS</B></PRE>
+<DL>
+<DD>Indicates that either
+ <ul>
+ <li>a LineString contains a single point
+ <li>a LinearRing contains 2 or 3 points
+ </ul>
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.TOO_FEW_POINTS">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="INVALID_COORDINATE"><!-- --></A><H3>
+INVALID_COORDINATE</H3>
+<PRE>
+public static final int <B>INVALID_COORDINATE</B></PRE>
+<DL>
+<DD>Indicates that the <code>X</code> or <code>Y</code> ordinate of
+ a Coordinate is not a valid numeric value (e.g. <CODE>Double.NaN</CODE> )
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.INVALID_COORDINATE">Constant Field Values</A></DL>
+</DL>
+<HR>
+
+<A NAME="RING_NOT_CLOSED"><!-- --></A><H3>
+RING_NOT_CLOSED</H3>
+<PRE>
+public static final int <B>RING_NOT_CLOSED</B></PRE>
+<DL>
+<DD>Indicates that a ring is not correctly closed
+ (the first and the last coordinate are different)
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.operation.valid.TopologyValidationError.RING_NOT_CLOSED">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TopologyValidationError(int, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+TopologyValidationError</H3>
+<PRE>
+public <B>TopologyValidationError</B>(int&nbsp;errorType,
+                               <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Creates a validation error with the given type and location
+<P>
+<DT><B>Parameters:</B><DD><CODE>errorType</CODE> - the type of the error<DD><CODE>pt</CODE> - the location of the error</DL>
+<HR>
+
+<A NAME="TopologyValidationError(int)"><!-- --></A><H3>
+TopologyValidationError</H3>
+<PRE>
+public <B>TopologyValidationError</B>(int&nbsp;errorType)</PRE>
+<DL>
+<DD>Creates a validation error of the given type with a null location
+<P>
+<DT><B>Parameters:</B><DD><CODE>errorType</CODE> - the type of the error</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD>Returns the location of this error (on the <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> containing the error).
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a <A HREF="../../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> on the input geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getErrorType()"><!-- --></A><H3>
+getErrorType</H3>
+<PRE>
+public int <B>getErrorType</B>()</PRE>
+<DL>
+<DD>Gets the type of this error.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the error type</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMessage()"><!-- --></A><H3>
+getMessage</H3>
+<PRE>
+public java.lang.String <B>getMessage</B>()</PRE>
+<DL>
+<DD>Gets an error message describing this error.
+ The error message does not describe the location of the error.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Gets a message describing the type and location of this error.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyValidationError.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.valid
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/operation/valid/package-summary.html" target="classFrame">com.vividsolutions.jts.operation.valid</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">ConnectedInteriorTester</A>
+<BR>
+<A HREF="ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">ConsistentAreaTester</A>
+<BR>
+<A HREF="IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">IsValidOp</A>
+<BR>
+<A HREF="QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">QuadtreeNestedRingTester</A>
+<BR>
+<A HREF="RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">RepeatedPointTester</A>
+<BR>
+<A HREF="SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">SimpleNestedRingTester</A>
+<BR>
+<A HREF="SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">SweeplineNestedRingTester</A>
+<BR>
+<A HREF="TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid" target="classFrame">TopologyValidationError</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,203 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.valid
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.operation.valid package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.valid";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.operation.valid
+</H2>
+Provides classes for testing the validity of geometries.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A></B></TD>
+<TD>This class tests that the interior of an area <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ ( <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>  or <A HREF="../../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ is connected.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A></B></TD>
+<TD>Checks that a <A HREF="../../../../../com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A> representing an area
+ (a <A HREF="../../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> or <A HREF="../../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ has consistent semantics for area geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A></B></TD>
+<TD>Implements the algorithsm required to compute the <code>isValid()</code> method
+ for <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A></B></TD>
+<TD>Tests whether any of a set of <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a <A HREF="../../../../../com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>
+ index to speed up the comparisons.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A></B></TD>
+<TD>Implements the appropriate checks for repeated points
+ (consecutive identical coordinates) as defined in the
+ JTS spec.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A></B></TD>
+<TD>Tests whether any of a set of <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a simple O(n^2)
+ comparison.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A></B></TD>
+<TD>Tests whether any of a set of <A HREF="../../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a <A HREF="../../../../../com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineIndex</CODE></A>
+ index to speed up the comparisons.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A></B></TD>
+<TD>Contains information about the nature and location of a <A HREF="../../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ validation error</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.operation.valid Description
+</H2>
+
+<P>
+Provides classes for testing the validity of geometries.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/operation/valid/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.operation.valid Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.operation.valid Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.operation.valid
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>ConnectedInteriorTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>ConsistentAreaTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>IsValidOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>QuadtreeNestedRingTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>RepeatedPointTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>SimpleNestedRingTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>SweeplineNestedRingTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="../../../../../com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid"><B>TopologyValidationError</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/operation/relate/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../com/vividsolutions/jts/package-summary.html" target="classFrame">com.vividsolutions.jts</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="JTSVersion.html" title="class in com.vividsolutions.jts" target="classFrame">JTSVersion</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;<A HREF="../../../com/vividsolutions/jts/algorithm/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A></B></TD>
+<TD>JTS API version information.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;<A HREF="../../../com/vividsolutions/jts/algorithm/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;<A HREF="../../../com/vividsolutions/jts/algorithm/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.<A HREF="../../../com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts"><B>JTSVersion</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;<A HREF="../../../com/vividsolutions/jts/algorithm/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,901 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+DirectedEdge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.DirectedEdge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DirectedEdge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class DirectedEdge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.GraphComponent</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.DirectedEdge</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable</DD>
+</DL>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>, <A HREF="../../../../com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>DirectedEdge</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A><DT>implements java.lang.Comparable</DL>
+
+<P>
+Represents a directed edge in a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>. A DirectedEdge may or
+ may not have a reference to a parent <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> (some applications of
+ planar graphs may not require explicit Edge objects to be created). Usually
+ a client using a <code>PlanarGraph</code> will subclass <code>DirectedEdge</code>
+ to add its own application-specific data and methods.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#angle">angle</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected static&nbsp;<A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#cga">cga</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#edgeDirection">edgeDirection</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#from">from</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#p0">p0</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#p1">p1</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#parentEdge">parentEdge</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#quadrant">quadrant</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#sym">sym</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#to">to</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#DirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)">DirectedEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;from,
+             <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;to,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;directionPt,
+             boolean&nbsp;edgeDirection)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a DirectedEdge connecting the <code>from</code> node to the
+ <code>to</code> node.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#compareDirection(com.vividsolutions.jts.planargraph.DirectedEdge)">compareDirection</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns 1 if this DirectedEdge has a greater angle with the
+ positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#compareTo(java.lang.Object)">compareTo</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns 1 if this DirectedEdge has a greater angle with the
+ positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getAngle()">getAngle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the angle that the start of this DirectedEdge makes with the
+ positive x-axis, in radians.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the coordinate of the from-node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getDirectionPt()">getDirectionPt</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a point to which an imaginary line is drawn from the from-node to
+ specify this DirectedEdge's orientation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdge()">getEdge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this DirectedEdge's parent Edge, or null if it has none.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdgeDirection()">getEdgeDirection</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the direction of the parent Edge (if any) is the same as that
+ of this Directed Edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getFromNode()">getFromNode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the node from which this DirectedEdge leaves.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getQuadrant()">getQuadrant</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's
+ orientation lies.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getSym()">getSym</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the symmetric DirectedEdge -- the other DirectedEdge associated with
+ this DirectedEdge's parent Edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#getToNode()">getToNode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the node to which this DirectedEdge goes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#isRemoved()">isRemoved</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this directed edge has been removed from its containing graph</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#print(java.io.PrintStream)">print</A></B>(java.io.PrintStream&nbsp;out)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prints a detailed string representation of this DirectedEdge to the given PrintStream.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#setEdge(com.vividsolutions.jts.planargraph.Edge)">setEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;parentEdge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Associates this DirectedEdge with an Edge (possibly null, indicating no associated
+ Edge).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#setSym(com.vividsolutions.jts.planargraph.DirectedEdge)">setSym</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;sym)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite
+ direction.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html#toEdges(java.util.Collection)">toEdges</A></B>(java.util.Collection&nbsp;dirEdges)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a List containing the parent Edge (possibly null) for each of the given
+ DirectedEdges.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="cga"><!-- --></A><H3>
+cga</H3>
+<PRE>
+protected static final <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A> <B>cga</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="parentEdge"><!-- --></A><H3>
+parentEdge</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A> <B>parentEdge</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="from"><!-- --></A><H3>
+from</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>from</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="to"><!-- --></A><H3>
+to</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>to</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="p0"><!-- --></A><H3>
+p0</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p0</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="p1"><!-- --></A><H3>
+p1</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p1</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="sym"><!-- --></A><H3>
+sym</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A> <B>sym</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="edgeDirection"><!-- --></A><H3>
+edgeDirection</H3>
+<PRE>
+protected boolean <B>edgeDirection</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="quadrant"><!-- --></A><H3>
+quadrant</H3>
+<PRE>
+protected int <B>quadrant</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="angle"><!-- --></A><H3>
+angle</H3>
+<PRE>
+protected double <B>angle</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)"><!-- --></A><H3>
+DirectedEdge</H3>
+<PRE>
+public <B>DirectedEdge</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;from,
+                    <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;to,
+                    <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;directionPt,
+                    boolean&nbsp;edgeDirection)</PRE>
+<DL>
+<DD>Constructs a DirectedEdge connecting the <code>from</code> node to the
+ <code>to</code> node.
+<P>
+<DT><B>Parameters:</B><DD><CODE>directionPt</CODE> - specifies this DirectedEdge's direction vector
+   (determined by the vector from the <code>from</code> node
+   to <code>directionPt</code>)<DD><CODE>edgeDirection</CODE> - whether this DirectedEdge's direction is the same as or
+   opposite to that of the parent Edge (if any)</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toEdges(java.util.Collection)"><!-- --></A><H3>
+toEdges</H3>
+<PRE>
+public static java.util.List <B>toEdges</B>(java.util.Collection&nbsp;dirEdges)</PRE>
+<DL>
+<DD>Returns a List containing the parent Edge (possibly null) for each of the given
+ DirectedEdges.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdge()"><!-- --></A><H3>
+getEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A> <B>getEdge</B>()</PRE>
+<DL>
+<DD>Returns this DirectedEdge's parent Edge, or null if it has none.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setEdge(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+setEdge</H3>
+<PRE>
+public void <B>setEdge</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;parentEdge)</PRE>
+<DL>
+<DD>Associates this DirectedEdge with an Edge (possibly null, indicating no associated
+ Edge).
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getQuadrant()"><!-- --></A><H3>
+getQuadrant</H3>
+<PRE>
+public int <B>getQuadrant</B>()</PRE>
+<DL>
+<DD>Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's
+ orientation lies.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDirectionPt()"><!-- --></A><H3>
+getDirectionPt</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getDirectionPt</B>()</PRE>
+<DL>
+<DD>Returns a point to which an imaginary line is drawn from the from-node to
+ specify this DirectedEdge's orientation.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdgeDirection()"><!-- --></A><H3>
+getEdgeDirection</H3>
+<PRE>
+public boolean <B>getEdgeDirection</B>()</PRE>
+<DL>
+<DD>Returns whether the direction of the parent Edge (if any) is the same as that
+ of this Directed Edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getFromNode()"><!-- --></A><H3>
+getFromNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>getFromNode</B>()</PRE>
+<DL>
+<DD>Returns the node from which this DirectedEdge leaves.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getToNode()"><!-- --></A><H3>
+getToNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>getToNode</B>()</PRE>
+<DL>
+<DD>Returns the node to which this DirectedEdge goes.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD>Returns the coordinate of the from-node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getAngle()"><!-- --></A><H3>
+getAngle</H3>
+<PRE>
+public double <B>getAngle</B>()</PRE>
+<DL>
+<DD>Returns the angle that the start of this DirectedEdge makes with the
+ positive x-axis, in radians.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSym()"><!-- --></A><H3>
+getSym</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A> <B>getSym</B>()</PRE>
+<DL>
+<DD>Returns the symmetric DirectedEdge -- the other DirectedEdge associated with
+ this DirectedEdge's parent Edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setSym(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+setSym</H3>
+<PRE>
+public void <B>setSym</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;sym)</PRE>
+<DL>
+<DD>Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite
+ direction.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRemoved()"><!-- --></A><H3>
+isRemoved</H3>
+<PRE>
+public boolean <B>isRemoved</B>()</PRE>
+<DL>
+<DD>Tests whether this directed edge has been removed from its containing graph
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isRemoved()">isRemoved</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this directed edge is removed</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareTo(java.lang.Object)"><!-- --></A><H3>
+compareTo</H3>
+<PRE>
+public int <B>compareTo</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD>Returns 1 if this DirectedEdge has a greater angle with the
+ positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.
+ <p>
+ Using the obvious algorithm of simply computing the angle is not robust,
+ since the angle calculation is susceptible to roundoff. A robust algorithm
+ is:
+ <ul>
+ <li>first compare the quadrants. If the quadrants are different, it it
+ trivial to determine which vector is "greater".
+ <li>if the vectors lie in the same quadrant, the robust
+ <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><CODE>CGAlgorithms.computeOrientation(Coordinate, Coordinate, Coordinate)</CODE></A>
+ function can be used to decide the relative orientation of the vectors.
+ </ul>
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE>compareTo</CODE> in interface <CODE>java.lang.Comparable</CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="compareDirection(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+compareDirection</H3>
+<PRE>
+public int <B>compareDirection</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Returns 1 if this DirectedEdge has a greater angle with the
+ positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.
+ <p>
+ Using the obvious algorithm of simply computing the angle is not robust,
+ since the angle calculation is susceptible to roundoff. A robust algorithm
+ is:
+ <ul>
+ <li>first compare the quadrants. If the quadrants are different, it it
+ trivial to determine which vector is "greater".
+ <li>if the vectors lie in the same quadrant, the robust
+ <A HREF="../../../../com/vividsolutions/jts/algorithm/CGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><CODE>CGAlgorithms.computeOrientation(Coordinate, Coordinate, Coordinate)</CODE></A>
+ function can be used to decide the relative orientation of the vectors.
+ </ul>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.io.PrintStream)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public void <B>print</B>(java.io.PrintStream&nbsp;out)</PRE>
+<DL>
+<DD>Prints a detailed string representation of this DirectedEdge to the given PrintStream.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdgeStar.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdgeStar.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/DirectedEdgeStar.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,493 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+DirectedEdgeStar
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.DirectedEdgeStar class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DirectedEdgeStar";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdgeStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class DirectedEdgeStar</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.DirectedEdgeStar</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>DirectedEdgeStar</B><DT>extends java.lang.Object</DL>
+
+<P>
+A sorted collection of <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s which leave a <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>
+ in a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#outEdges">outEdges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The underlying list of outgoing DirectedEdges</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#DirectedEdgeStar()">DirectedEdgeStar</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a DirectedEdgeStar with no edges.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a new member to this DirectedEdgeStar.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the coordinate for the node at wich this star is based</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getDegree()">getDegree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of edges around the Node associated with this DirectedEdgeStar.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getEdges()">getEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the DirectedEdges, in ascending order by angle with the positive x-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getIndex(com.vividsolutions.jts.planargraph.DirectedEdge)">getIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;dirEdge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the zero-based index of the given DirectedEdge, after sorting in ascending order
+ by angle with the positive x-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getIndex(com.vividsolutions.jts.planargraph.Edge)">getIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the zero-based index of the given Edge, after sorting in ascending order
+ by angle with the positive x-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getIndex(int)">getIndex</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the remainder when i is divided by the number of edges in this
+ DirectedEdgeStar.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getNextEdge(com.vividsolutions.jts.planargraph.DirectedEdge)">getNextEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;dirEdge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the DirectedEdge on the left-hand side of the given DirectedEdge (which
+ must be a member of this DirectedEdgeStar).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an Iterator over the DirectedEdges, in ascending order by angle with the positive x-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#remove(com.vividsolutions.jts.planargraph.DirectedEdge)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Drops a member of this DirectedEdgeStar.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="outEdges"><!-- --></A><H3>
+outEdges</H3>
+<PRE>
+protected java.util.List <B>outEdges</B></PRE>
+<DL>
+<DD>The underlying list of outgoing DirectedEdges
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DirectedEdgeStar()"><!-- --></A><H3>
+DirectedEdgeStar</H3>
+<PRE>
+public <B>DirectedEdgeStar</B>()</PRE>
+<DL>
+<DD>Constructs a DirectedEdgeStar with no edges.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD>Adds a new member to this DirectedEdgeStar.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public void <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD>Drops a member of this DirectedEdgeStar.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD>Returns an Iterator over the DirectedEdges, in ascending order by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDegree()"><!-- --></A><H3>
+getDegree</H3>
+<PRE>
+public int <B>getDegree</B>()</PRE>
+<DL>
+<DD>Returns the number of edges around the Node associated with this DirectedEdgeStar.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD>Returns the coordinate for the node at wich this star is based
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdges()"><!-- --></A><H3>
+getEdges</H3>
+<PRE>
+public java.util.List <B>getEdges</B>()</PRE>
+<DL>
+<DD>Returns the DirectedEdges, in ascending order by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndex(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+getIndex</H3>
+<PRE>
+public int <B>getIndex</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</PRE>
+<DL>
+<DD>Returns the zero-based index of the given Edge, after sorting in ascending order
+ by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndex(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+getIndex</H3>
+<PRE>
+public int <B>getIndex</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;dirEdge)</PRE>
+<DL>
+<DD>Returns the zero-based index of the given DirectedEdge, after sorting in ascending order
+ by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndex(int)"><!-- --></A><H3>
+getIndex</H3>
+<PRE>
+public int <B>getIndex</B>(int&nbsp;i)</PRE>
+<DL>
+<DD>Returns the remainder when i is divided by the number of edges in this
+ DirectedEdgeStar.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNextEdge(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+getNextEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A> <B>getNextEdge</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;dirEdge)</PRE>
+<DL>
+<DD>Returns the DirectedEdge on the left-hand side of the given DirectedEdge (which
+ must be a member of this DirectedEdgeStar).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DirectedEdgeStar.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Edge.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Edge.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Edge.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,442 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Edge
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.Edge class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Edge";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Edge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class Edge</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.GraphComponent</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.Edge</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeEdge</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>Edge</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></DL>
+
+<P>
+Represents an undirected edge of a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>. An undirected edge
+ in fact simply acts as a central point of reference for two opposite
+ <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s.
+ <p>
+ Usually a client using a <code>PlanarGraph</code> will subclass <code>Edge</code>
+ to add its own application-specific data and methods.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#dirEdge">dirEdge</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The two DirectedEdges associated with this Edge.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#Edge()">Edge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an Edge whose DirectedEdges are not yet set.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#Edge(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)">Edge</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de0,
+     <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an Edge initialized with the given DirectedEdges, and for each
+ DirectedEdge: sets the Edge, sets the symmetric DirectedEdge, and adds
+ this Edge to its from-Node.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#getDirEdge(int)">getDirEdge</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns one of the DirectedEdges associated with this Edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#getDirEdge(com.vividsolutions.jts.planargraph.Node)">getDirEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;fromNode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> that starts from the given node, or null if the
+ node is not one of the two nodes associated with this Edge.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#getOppositeNode(com.vividsolutions.jts.planargraph.Node)">getOppositeNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If <code>node</code> is one of the two nodes associated with this Edge,
+ returns the other node; otherwise returns null.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#isRemoved()">isRemoved</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this edge has been removed from its containing graph</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#setDirectedEdges(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)">setDirectedEdges</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de0,
+                 <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initializes this Edge's two DirectedEdges, and for each DirectedEdge: sets the
+ Edge, sets the symmetric DirectedEdge, and adds this Edge to its from-Node.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="dirEdge"><!-- --></A><H3>
+dirEdge</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>[] <B>dirEdge</B></PRE>
+<DL>
+<DD>The two DirectedEdges associated with this Edge.
+ Index 0 is forward, 1 is reverse.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Edge()"><!-- --></A><H3>
+Edge</H3>
+<PRE>
+public <B>Edge</B>()</PRE>
+<DL>
+<DD>Constructs an Edge whose DirectedEdges are not yet set. Be sure to call
+ <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html#setDirectedEdges(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)"><CODE>setDirectedEdges(DirectedEdge, DirectedEdge)</CODE></A>
+<P>
+</DL>
+<HR>
+
+<A NAME="Edge(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+Edge</H3>
+<PRE>
+public <B>Edge</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de0,
+            <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de1)</PRE>
+<DL>
+<DD>Constructs an Edge initialized with the given DirectedEdges, and for each
+ DirectedEdge: sets the Edge, sets the symmetric DirectedEdge, and adds
+ this Edge to its from-Node.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setDirectedEdges(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+setDirectedEdges</H3>
+<PRE>
+public void <B>setDirectedEdges</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de0,
+                             <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de1)</PRE>
+<DL>
+<DD>Initializes this Edge's two DirectedEdges, and for each DirectedEdge: sets the
+ Edge, sets the symmetric DirectedEdge, and adds this Edge to its from-Node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDirEdge(int)"><!-- --></A><H3>
+getDirEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A> <B>getDirEdge</B>(int&nbsp;i)</PRE>
+<DL>
+<DD>Returns one of the DirectedEdges associated with this Edge.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - 0 or 1.  0 returns the forward directed edge, 1 returns the reverse</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDirEdge(com.vividsolutions.jts.planargraph.Node)"><!-- --></A><H3>
+getDirEdge</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A> <B>getDirEdge</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;fromNode)</PRE>
+<DL>
+<DD>Returns the <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> that starts from the given node, or null if the
+ node is not one of the two nodes associated with this Edge.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOppositeNode(com.vividsolutions.jts.planargraph.Node)"><!-- --></A><H3>
+getOppositeNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>getOppositeNode</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node)</PRE>
+<DL>
+<DD>If <code>node</code> is one of the two nodes associated with this Edge,
+ returns the other node; otherwise returns null.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRemoved()"><!-- --></A><H3>
+isRemoved</H3>
+<PRE>
+public boolean <B>isRemoved</B>()</PRE>
+<DL>
+<DD>Tests whether this edge has been removed from its containing graph
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isRemoved()">isRemoved</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this edge is removed</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Edge.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/GraphComponent.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/GraphComponent.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/GraphComponent.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,573 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+GraphComponent
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.GraphComponent class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GraphComponent";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GraphComponent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class GraphComponent</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.GraphComponent</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>GraphComponent</B><DT>extends java.lang.Object</DL>
+
+<P>
+The base class for all graph component classes.
+ Maintains flags of use in generic graph algorithms.
+ Provides two flags:
+ <ul>
+ <li><b>marked</b> - typically this is used to indicate a state that persists
+ for the course of the graph's lifetime.  For instance, it can be
+ used to indicate that a component has been logically deleted from the graph.
+ <li><b>visited</b> - this is used to indicate that a component has been processed
+ or visited by an single graph algorithm.  For instance, a breadth-first traversal of the
+ graph might use this to indicate that a node has already been traversed.
+ The visited flag may be set and cleared many times during the lifetime of a graph.
+
+ <p>
+ Graph components support storing user context data.  This will typically be
+ used by client algorithms which use planar graphs.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#GraphComponent()">GraphComponent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A></B>(java.util.Iterator&nbsp;i,
+                             boolean&nbsp;visitedState)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Finds the first <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A> in a <CODE>Iterator</CODE> set
+ which has the specified visited state.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the user-defined data for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the user-defined data for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if a component has been marked at some point during the processing
+ involving this graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isRemoved()">isRemoved</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this component has been removed from its containing graph</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests if a component has been visited during the course of a graph algorithm</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A></B>(java.lang.Object&nbsp;data)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the user-defined data for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A></B>(java.lang.Object&nbsp;data)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the user-defined data for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A></B>(boolean&nbsp;isMarked)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the marked flag for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A></B>(java.util.Iterator&nbsp;i,
+          boolean&nbsp;marked)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the Marked state for all <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A>s in an <CODE>Iterator</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A></B>(boolean&nbsp;isVisited)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the visited flag for this component.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></B>(java.util.Iterator&nbsp;i,
+           boolean&nbsp;visited)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the Visited state for all <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A>s in an <CODE>Iterator</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isMarked"><!-- --></A><H3>
+isMarked</H3>
+<PRE>
+protected boolean <B>isMarked</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="isVisited"><!-- --></A><H3>
+isVisited</H3>
+<PRE>
+protected boolean <B>isVisited</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GraphComponent()"><!-- --></A><H3>
+GraphComponent</H3>
+<PRE>
+public <B>GraphComponent</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setVisited(java.util.Iterator, boolean)"><!-- --></A><H3>
+setVisited</H3>
+<PRE>
+public static void <B>setVisited</B>(java.util.Iterator&nbsp;i,
+                              boolean&nbsp;visited)</PRE>
+<DL>
+<DD>Sets the Visited state for all <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A>s in an <CODE>Iterator</CODE>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the Iterator to scan<DD><CODE>visited</CODE> - the state to set the visited flag to</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setMarked(java.util.Iterator, boolean)"><!-- --></A><H3>
+setMarked</H3>
+<PRE>
+public static void <B>setMarked</B>(java.util.Iterator&nbsp;i,
+                             boolean&nbsp;marked)</PRE>
+<DL>
+<DD>Sets the Marked state for all <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A>s in an <CODE>Iterator</CODE>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - the Iterator to scan<DD><CODE>marked</CODE> - the state to set the Marked flag to</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getComponentWithVisitedState(java.util.Iterator, boolean)"><!-- --></A><H3>
+getComponentWithVisitedState</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A> <B>getComponentWithVisitedState</B>(java.util.Iterator&nbsp;i,
+                                                          boolean&nbsp;visitedState)</PRE>
+<DL>
+<DD>Finds the first <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A> in a <CODE>Iterator</CODE> set
+ which has the specified visited state.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>i</CODE> - an Iterator of GraphComponents<DD><CODE>visitedState</CODE> - the visited state to test
+<DT><B>Returns:</B><DD>the first component found, or <code>null</code> if none found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isVisited()"><!-- --></A><H3>
+isVisited</H3>
+<PRE>
+public boolean <B>isVisited</B>()</PRE>
+<DL>
+<DD>Tests if a component has been visited during the course of a graph algorithm
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the component has been visited</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setVisited(boolean)"><!-- --></A><H3>
+setVisited</H3>
+<PRE>
+public void <B>setVisited</B>(boolean&nbsp;isVisited)</PRE>
+<DL>
+<DD>Sets the visited flag for this component.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>isVisited</CODE> - the desired value of the visited flag</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isMarked()"><!-- --></A><H3>
+isMarked</H3>
+<PRE>
+public boolean <B>isMarked</B>()</PRE>
+<DL>
+<DD>Tests if a component has been marked at some point during the processing
+ involving this graph.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if the component has been marked</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setMarked(boolean)"><!-- --></A><H3>
+setMarked</H3>
+<PRE>
+public void <B>setMarked</B>(boolean&nbsp;isMarked)</PRE>
+<DL>
+<DD>Sets the marked flag for this component.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>isMarked</CODE> - the desired value of the marked flag</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setContext(java.lang.Object)"><!-- --></A><H3>
+setContext</H3>
+<PRE>
+public void <B>setContext</B>(java.lang.Object&nbsp;data)</PRE>
+<DL>
+<DD>Sets the user-defined data for this component.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>data</CODE> - an Object containing user-defined data</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getContext()"><!-- --></A><H3>
+getContext</H3>
+<PRE>
+public java.lang.Object <B>getContext</B>()</PRE>
+<DL>
+<DD>Gets the user-defined data for this component.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the user-defined data</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setData(java.lang.Object)"><!-- --></A><H3>
+setData</H3>
+<PRE>
+public void <B>setData</B>(java.lang.Object&nbsp;data)</PRE>
+<DL>
+<DD>Sets the user-defined data for this component.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>data</CODE> - an Object containing user-defined data</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getData()"><!-- --></A><H3>
+getData</H3>
+<PRE>
+public java.lang.Object <B>getData</B>()</PRE>
+<DL>
+<DD>Gets the user-defined data for this component.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the user-defined data</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRemoved()"><!-- --></A><H3>
+isRemoved</H3>
+<PRE>
+public abstract boolean <B>isRemoved</B>()</PRE>
+<DL>
+<DD>Tests whether this component has been removed from its containing graph
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this component is removed</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GraphComponent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Node.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Node.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Node.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,490 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Node
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.Node class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Node";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class Node</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">com.vividsolutions.jts.planargraph.GraphComponent</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.Node</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Node</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></DL>
+
+<P>
+A node in a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>is a location where 0 or more <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s
+ meet. A node is connected to each of its incident Edges via an outgoing
+ DirectedEdge. Some clients using a <code>PlanarGraph</code> may want to
+ subclass <code>Node</code> to add their own application-specific
+ data and methods.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#deStar">deStar</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The collection of DirectedEdges that leave this Node</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#pt">pt</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The location of this Node</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked">isMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited">isVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#Node(com.vividsolutions.jts.geom.Coordinate)">Node</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a Node with the given location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#Node(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.planargraph.DirectedEdgeStar)">Node</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+     <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>&nbsp;deStar)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a Node with the given location and collection of outgoing DirectedEdges.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#addOutEdge(com.vividsolutions.jts.planargraph.DirectedEdge)">addOutEdge</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an outgoing DirectedEdge to this Node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#getCoordinate()">getCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the location of this Node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#getDegree()">getDegree</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of edges around this Node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#getEdgesBetween(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node)">getEdgesBetween</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node0,
+                <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all Edges that connect the two nodes (which are assumed to be different).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#getIndex(com.vividsolutions.jts.planargraph.Edge)">getIndex</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the zero-based index of the given Edge, after sorting in ascending order
+ by angle with the positive x-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#getOutEdges()">getOutEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the collection of DirectedEdges that leave this Node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html#isRemoved()">isRemoved</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this node has been removed from its containing graph</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.planargraph.GraphComponent"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)">getComponentWithVisitedState</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()">getContext</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#getData()">getData</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()">isMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()">isVisited</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)">setContext</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)">setData</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)">setMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)">setMarked</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)">setVisited</A>, <A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)">setVisited</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="pt"><!-- --></A><H3>
+pt</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>pt</B></PRE>
+<DL>
+<DD>The location of this Node
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="deStar"><!-- --></A><H3>
+deStar</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A> <B>deStar</B></PRE>
+<DL>
+<DD>The collection of DirectedEdges that leave this Node
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Node(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+Node</H3>
+<PRE>
+public <B>Node</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Constructs a Node with the given location.
+<P>
+</DL>
+<HR>
+
+<A NAME="Node(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.planargraph.DirectedEdgeStar)"><!-- --></A><H3>
+Node</H3>
+<PRE>
+public <B>Node</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt,
+            <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>&nbsp;deStar)</PRE>
+<DL>
+<DD>Constructs a Node with the given location and collection of outgoing DirectedEdges.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getEdgesBetween(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node)"><!-- --></A><H3>
+getEdgesBetween</H3>
+<PRE>
+public static java.util.Collection <B>getEdgesBetween</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node0,
+                                                   <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node1)</PRE>
+<DL>
+<DD>Returns all Edges that connect the two nodes (which are assumed to be different).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCoordinate()"><!-- --></A><H3>
+getCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCoordinate</B>()</PRE>
+<DL>
+<DD>Returns the location of this Node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addOutEdge(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+addOutEdge</H3>
+<PRE>
+public void <B>addOutEdge</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD>Adds an outgoing DirectedEdge to this Node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getOutEdges()"><!-- --></A><H3>
+getOutEdges</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A> <B>getOutEdges</B>()</PRE>
+<DL>
+<DD>Returns the collection of DirectedEdges that leave this Node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDegree()"><!-- --></A><H3>
+getDegree</H3>
+<PRE>
+public int <B>getDegree</B>()</PRE>
+<DL>
+<DD>Returns the number of edges around this Node.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndex(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+getIndex</H3>
+<PRE>
+public int <B>getIndex</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</PRE>
+<DL>
+<DD>Returns the zero-based index of the given Edge, after sorting in ascending order
+ by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isRemoved()"><!-- --></A><H3>
+isRemoved</H3>
+<PRE>
+public boolean <B>isRemoved</B>()</PRE>
+<DL>
+<DD>Tests whether this node has been removed from its containing graph
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html#isRemoved()">isRemoved</A></CODE> in class <CODE><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD><code>true</code> if this node is removed</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Node.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/NodeMap.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/NodeMap.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/NodeMap.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,351 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+NodeMap
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.NodeMap class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="NodeMap";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class NodeMap</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.NodeMap</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>NodeMap</B><DT>extends java.lang.Object</DL>
+
+<P>
+A map of <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s, indexed by the coordinate of the node.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html#NodeMap()">NodeMap</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a NodeMap without any Nodes.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html#add(com.vividsolutions.jts.planargraph.Node)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a node to the map, replacing any that is already at that location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html#find(com.vividsolutions.jts.geom.Coordinate)">find</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Node at the given location, or null if no Node was there.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html#iterator()">iterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an Iterator over the Nodes in this NodeMap, sorted in ascending order
+ by angle with the positive x-axis.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html#remove(com.vividsolutions.jts.geom.Coordinate)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the Node at the given location, and returns it (or null if no Node was there).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html#values()">values</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Nodes in this NodeMap, sorted in ascending order
+ by angle with the positive x-axis.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NodeMap()"><!-- --></A><H3>
+NodeMap</H3>
+<PRE>
+public <B>NodeMap</B>()</PRE>
+<DL>
+<DD>Constructs a NodeMap without any Nodes.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.Node)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;n)</PRE>
+<DL>
+<DD>Adds a node to the map, replacing any that is already at that location.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the added node</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Removes the Node at the given location, and returns it (or null if no Node was there).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="find(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+find</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>find</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD>Returns the Node at the given location, or null if no Node was there.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="iterator()"><!-- --></A><H3>
+iterator</H3>
+<PRE>
+public java.util.Iterator <B>iterator</B>()</PRE>
+<DL>
+<DD>Returns an Iterator over the Nodes in this NodeMap, sorted in ascending order
+ by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="values()"><!-- --></A><H3>
+values</H3>
+<PRE>
+public java.util.Collection <B>values</B>()</PRE>
+<DL>
+<DD>Returns the Nodes in this NodeMap, sorted in ascending order
+ by angle with the positive x-axis.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="NodeMap.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/PlanarGraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/PlanarGraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/PlanarGraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,659 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+PlanarGraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.PlanarGraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PlanarGraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PlanarGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class PlanarGraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.PlanarGraph</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeGraph</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>PlanarGraph</B><DT>extends java.lang.Object</DL>
+
+<P>
+Represents a directed graph which is embeddable in a planar surface.
+ <p>
+ This class and the other classes in this package serve as a framework for
+ building planar graphs for specific algorithms. This class must be
+ subclassed to expose appropriate methods to construct the graph. This allows
+ controlling the types of graph components (<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s,
+ <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s and <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s) which can be added to the graph. An
+ application which uses the graph framework will almost always provide
+ subclasses for one or more graph components, which hold application-specific
+ data and graph algorithms.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Set</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#dirEdges">dirEdges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Set</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#edges">edges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#nodeMap">nodeMap</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#PlanarGraph()">PlanarGraph</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a empty graph.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;dirEdge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the Edge to this PlanarGraph; only subclasses can add DirectedEdges,
+ to ensure the edges added are of the right class.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Edge)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the Edge and its DirectedEdges with this PlanarGraph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Node)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a node to the map, replacing any that is already at that location.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#contains(com.vividsolutions.jts.planargraph.DirectedEdge)">contains</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this graph contains the given <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#contains(com.vividsolutions.jts.planargraph.Edge)">contains</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether this graph contains the given <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#dirEdgeIterator()">dirEdgeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an Iterator over the DirectedEdges in this PlanarGraph, in the order in which they
+ were added.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#edgeIterator()">edgeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an Iterator over the Edges in this PlanarGraph, in the order in which they
+ were added.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#findNode(com.vividsolutions.jts.geom.Coordinate)">findNode</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> at the given location,
+ or null if no <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> was there.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#findNodesOfDegree(int)">findNodesOfDegree</A></B>(int&nbsp;degree)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all Nodes with the given number of Edges around it.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#getEdges()">getEdges</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the Edges that have been added to this PlanarGraph</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Collection</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#getNodes()">getNodes</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#nodeIterator()">nodeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an Iterator over the Nodes in this PlanarGraph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.DirectedEdge)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes DirectedEdge from its from-Node and from this PlanarGraph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.Edge)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes an <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> and its associated <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s
+ from their from-Nodes and from the graph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.Node)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a node from the graph, along with any associated DirectedEdges and
+ Edges.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="edges"><!-- --></A><H3>
+edges</H3>
+<PRE>
+protected java.util.Set <B>edges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="dirEdges"><!-- --></A><H3>
+dirEdges</H3>
+<PRE>
+protected java.util.Set <B>dirEdges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="nodeMap"><!-- --></A><H3>
+nodeMap</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A> <B>nodeMap</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="PlanarGraph()"><!-- --></A><H3>
+PlanarGraph</H3>
+<PRE>
+public <B>PlanarGraph</B>()</PRE>
+<DL>
+<DD>Constructs a empty graph.
+<P>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="findNode(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+findNode</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A> <B>findNode</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;pt)</PRE>
+<DL>
+<DD>Returns the <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> at the given location,
+ or null if no <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> was there.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>pt</CODE> - the location to query
+<DT><B>Returns:</B><DD>the node found</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.Node)"><!-- --></A><H3>
+add</H3>
+<PRE>
+protected void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node)</PRE>
+<DL>
+<DD>Adds a node to the map, replacing any that is already at that location.
+ Only subclasses can add Nodes, to ensure Nodes are of the right type.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the added node</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+protected void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</PRE>
+<DL>
+<DD>Adds the Edge and its DirectedEdges with this PlanarGraph.
+ Assumes that the Edge has already been created with its associated DirectEdges.
+ Only subclasses can add Edges, to ensure the edges added are of the right class.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+protected void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;dirEdge)</PRE>
+<DL>
+<DD>Adds the Edge to this PlanarGraph; only subclasses can add DirectedEdges,
+ to ensure the edges added are of the right class.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="nodeIterator()"><!-- --></A><H3>
+nodeIterator</H3>
+<PRE>
+public java.util.Iterator <B>nodeIterator</B>()</PRE>
+<DL>
+<DD>Returns an Iterator over the Nodes in this PlanarGraph.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Tests whether this graph contains the given <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>e</CODE> - the edge to query
+<DT><B>Returns:</B><DD><code>true</code> if the graph contains the edge</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD>Tests whether this graph contains the given <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>de</CODE> - the directed edge to query
+<DT><B>Returns:</B><DD><code>true</code> if the graph contains the directed edge</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getNodes()"><!-- --></A><H3>
+getNodes</H3>
+<PRE>
+public java.util.Collection <B>getNodes</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="dirEdgeIterator()"><!-- --></A><H3>
+dirEdgeIterator</H3>
+<PRE>
+public java.util.Iterator <B>dirEdgeIterator</B>()</PRE>
+<DL>
+<DD>Returns an Iterator over the DirectedEdges in this PlanarGraph, in the order in which they
+ were added.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><CODE>add(Edge)</CODE></A>, 
+<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)"><CODE>add(DirectedEdge)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="edgeIterator()"><!-- --></A><H3>
+edgeIterator</H3>
+<PRE>
+public java.util.Iterator <B>edgeIterator</B>()</PRE>
+<DL>
+<DD>Returns an Iterator over the Edges in this PlanarGraph, in the order in which they
+ were added.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><CODE>add(Edge)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getEdges()"><!-- --></A><H3>
+getEdges</H3>
+<PRE>
+public java.util.Collection <B>getEdges</B>()</PRE>
+<DL>
+<DD>Returns the Edges that have been added to this PlanarGraph
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><CODE>add(Edge)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public void <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;edge)</PRE>
+<DL>
+<DD>Removes an <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> and its associated <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s
+ from their from-Nodes and from the graph.
+ Note: This method does not remove the <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s associated
+ with the <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>, even if the removal of the <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>
+ reduces the degree of a <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> to zero.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.planargraph.DirectedEdge)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public void <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>&nbsp;de)</PRE>
+<DL>
+<DD>Removes DirectedEdge from its from-Node and from this PlanarGraph.
+ This method does not remove the Nodes associated with the DirectedEdge,
+ even if the removal of the DirectedEdge reduces the degree of a Node to
+ zero.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.planargraph.Node)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public void <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>&nbsp;node)</PRE>
+<DL>
+<DD>Removes a node from the graph, along with any associated DirectedEdges and
+ Edges.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findNodesOfDegree(int)"><!-- --></A><H3>
+findNodesOfDegree</H3>
+<PRE>
+public java.util.List <B>findNodesOfDegree</B>(int&nbsp;degree)</PRE>
+<DL>
+<DD>Returns all Nodes with the given number of Edges around it.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PlanarGraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Subgraph.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Subgraph.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/Subgraph.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,467 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Subgraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.Subgraph class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Subgraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Subgraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph</FONT>
+<BR>
+Class Subgraph</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.Subgraph</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Subgraph</B><DT>extends java.lang.Object</DL>
+
+<P>
+A subgraph of a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.
+ A subgraph may contain any subset of <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s
+ from the parent graph.
+ It will also automatically contain all <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s
+ and <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s associated with those edges.
+ No new objects are created when edges are added -
+ all associated components must already exist in the parent graph.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#dirEdges">dirEdges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Set</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#edges">edges</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#nodeMap">nodeMap</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#parentGraph">parentGraph</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#Subgraph(com.vividsolutions.jts.planargraph.PlanarGraph)">Subgraph</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>&nbsp;parentGraph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new subgraph of the given <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#add(com.vividsolutions.jts.planargraph.Edge)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds an <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> to the subgraph.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#contains(com.vividsolutions.jts.planargraph.Edge)">contains</A></B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether an <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> is contained in this subgraph</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#dirEdgeIterator()">dirEdgeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an <CODE>Iterator</CODE> over the <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s in this graph,
+ in the order in which they were added.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#edgeIterator()">edgeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an <CODE>Iterator</CODE> over the <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s in this graph,
+ in the order in which they were added.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#getParent()">getParent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A> which this subgraph
+ is part of.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#nodeIterator()">nodeIterator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an <CODE>Iterator</CODE> over the <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s in this graph.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="parentGraph"><!-- --></A><H3>
+parentGraph</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A> <B>parentGraph</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="edges"><!-- --></A><H3>
+edges</H3>
+<PRE>
+protected java.util.Set <B>edges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="dirEdges"><!-- --></A><H3>
+dirEdges</H3>
+<PRE>
+protected java.util.List <B>dirEdges</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="nodeMap"><!-- --></A><H3>
+nodeMap</H3>
+<PRE>
+protected <A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A> <B>nodeMap</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Subgraph(com.vividsolutions.jts.planargraph.PlanarGraph)"><!-- --></A><H3>
+Subgraph</H3>
+<PRE>
+public <B>Subgraph</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>&nbsp;parentGraph)</PRE>
+<DL>
+<DD>Creates a new subgraph of the given <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>
+<P>
+<DT><B>Parameters:</B><DD><CODE>parentGraph</CODE> - the parent graph</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getParent()"><!-- --></A><H3>
+getParent</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A> <B>getParent</B>()</PRE>
+<DL>
+<DD>Gets the <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A> which this subgraph
+ is part of.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the parent PlanarGraph</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Adds an <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> to the subgraph.
+ The associated <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s and <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s
+ are also added.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>e</CODE> - the edge to add</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="dirEdgeIterator()"><!-- --></A><H3>
+dirEdgeIterator</H3>
+<PRE>
+public java.util.Iterator <B>dirEdgeIterator</B>()</PRE>
+<DL>
+<DD>Returns an <CODE>Iterator</CODE> over the <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s in this graph,
+ in the order in which they were added.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an iterator over the directed edges<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><CODE>add(Edge)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="edgeIterator()"><!-- --></A><H3>
+edgeIterator</H3>
+<PRE>
+public java.util.Iterator <B>edgeIterator</B>()</PRE>
+<DL>
+<DD>Returns an <CODE>Iterator</CODE> over the <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s in this graph,
+ in the order in which they were added.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an iterator over the edges<DT><B>See Also:</B><DD><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><CODE>add(Edge)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="nodeIterator()"><!-- --></A><H3>
+nodeIterator</H3>
+<PRE>
+public java.util.Iterator <B>nodeIterator</B>()</PRE>
+<DL>
+<DD>Returns an <CODE>Iterator</CODE> over the <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s in this graph.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an iterator over the nodes</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="contains(com.vividsolutions.jts.planargraph.Edge)"><!-- --></A><H3>
+contains</H3>
+<PRE>
+public boolean <B>contains</B>(<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>&nbsp;e)</PRE>
+<DL>
+<DD>Tests whether an <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> is contained in this subgraph
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>e</CODE> - the edge to test
+<DT><B>Returns:</B><DD><code>true</code> if the edge is contained in this subgraph</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Subgraph.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,256 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+ConnectedSubgraphFinder
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.algorithm.ConnectedSubgraphFinder class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ConnectedSubgraphFinder";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedSubgraphFinder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.planargraph.algorithm</FONT>
+<BR>
+Class ConnectedSubgraphFinder</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.planargraph.algorithm.ConnectedSubgraphFinder</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ConnectedSubgraphFinder</B><DT>extends java.lang.Object</DL>
+
+<P>
+Finds all connected <A HREF="../../../../../com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Subgraph</CODE></A>s of a <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.
+ <p>
+ <b>Note:</b> uses the <code>isVisited</code> flag on the nodes.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html#ConnectedSubgraphFinder(com.vividsolutions.jts.planargraph.PlanarGraph)">ConnectedSubgraphFinder</A></B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>&nbsp;graph)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html#getConnectedSubgraphs()">getConnectedSubgraphs</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ConnectedSubgraphFinder(com.vividsolutions.jts.planargraph.PlanarGraph)"><!-- --></A><H3>
+ConnectedSubgraphFinder</H3>
+<PRE>
+public <B>ConnectedSubgraphFinder</B>(<A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>&nbsp;graph)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getConnectedSubgraphs()"><!-- --></A><H3>
+getConnectedSubgraphs</H3>
+<PRE>
+public java.util.List <B>getConnectedSubgraphs</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ConnectedSubgraphFinder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.planargraph.algorithm
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.algorithm package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/planargraph/algorithm/package-summary.html" target="classFrame">com.vividsolutions.jts.planargraph.algorithm</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm" target="classFrame">ConnectedSubgraphFinder</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.planargraph.algorithm
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph.algorithm package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.planargraph.algorithm";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/precision/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.planargraph.algorithm
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm">ConnectedSubgraphFinder</A></B></TD>
+<TD>Finds all connected <A HREF="../../../../../com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Subgraph</CODE></A>s of a <A HREF="../../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/precision/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/algorithm/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.planargraph.algorithm Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.planargraph.algorithm Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/precision/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.planargraph.algorithm
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.algorithm.<A HREF="../../../../../com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm"><B>ConnectedSubgraphFinder</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/planargraph/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/precision/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.planargraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/planargraph/package-summary.html" target="classFrame">com.vividsolutions.jts.planargraph</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">DirectedEdge</A>
+<BR>
+<A HREF="DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">DirectedEdgeStar</A>
+<BR>
+<A HREF="Edge.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">Edge</A>
+<BR>
+<A HREF="GraphComponent.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">GraphComponent</A>
+<BR>
+<A HREF="Node.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">Node</A>
+<BR>
+<A HREF="NodeMap.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">NodeMap</A>
+<BR>
+<A HREF="PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">PlanarGraph</A>
+<BR>
+<A HREF="Subgraph.html" title="class in com.vividsolutions.jts.planargraph" target="classFrame">Subgraph</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.planargraph
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.planargraph package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.planargraph";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/valid/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.planargraph
+</H2>
+Contains classes to implement a planar graph data structure.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A></B></TD>
+<TD>Represents a directed edge in a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A></B></TD>
+<TD>A sorted collection of <A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s which leave a <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>
+ in a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A></B></TD>
+<TD>Represents an undirected edge of a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A></B></TD>
+<TD>The base class for all graph component classes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A></B></TD>
+<TD>A node in a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>is a location where 0 or more <A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s
+ meet.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A></B></TD>
+<TD>A map of <A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s, indexed by the coordinate of the node.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A></B></TD>
+<TD>Represents a directed graph which is embeddable in a planar surface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A></B></TD>
+<TD>A subgraph of a <A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.planargraph Description
+</H2>
+
+<P>
+Contains classes to implement a planar graph data structure.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/valid/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/planargraph/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.planargraph Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.planargraph Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/valid/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.planargraph
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdgeStar</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdge</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>Edge</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>Node</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>NodeMap</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>PlanarGraph</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="../../../../com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><B>Subgraph</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/operation/valid/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBits.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBits.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBits.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,403 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CommonBits
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision.CommonBits class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CommonBits";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CommonBits.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.precision</FONT>
+<BR>
+Class CommonBits</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.precision.CommonBits</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CommonBits</B><DT>extends java.lang.Object</DL>
+
+<P>
+Determines the maximum number of common most-significant
+ bits in the mantissa of one or numbers.
+ Can be used to compute the double-precision number which
+ is represented by the common bits.
+ If there are no common bits, the number computed is 0.0.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#CommonBits()">CommonBits</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#add(double)">add</A></B>(double&nbsp;num)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#getBit(long, int)">getBit</A></B>(long&nbsp;bits,
+       int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts the i'th bit of a bitstring.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;double</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#getCommon()">getCommon</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#numCommonMostSigMantissaBits(long, long)">numCommonMostSigMantissaBits</A></B>(long&nbsp;num1,
+                             long&nbsp;num2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This computes the number of common most-significant bits in the mantissas
+ of two double-precision numbers.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#signExpBits(long)">signExpBits</A></B>(long&nbsp;num)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the bit pattern for the sign and exponent of a
+ double-precision number.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#toString(long)">toString</A></B>(long&nbsp;bits)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A representation of the Double bits formatted for easy readability</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html#zeroLowerBits(long, int)">zeroLowerBits</A></B>(long&nbsp;bits,
+              int&nbsp;nBits)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zeroes the lower n bits of a bitstring.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CommonBits()"><!-- --></A><H3>
+CommonBits</H3>
+<PRE>
+public <B>CommonBits</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="signExpBits(long)"><!-- --></A><H3>
+signExpBits</H3>
+<PRE>
+public static long <B>signExpBits</B>(long&nbsp;num)</PRE>
+<DL>
+<DD>Computes the bit pattern for the sign and exponent of a
+ double-precision number.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>num</CODE> - 
+<DT><B>Returns:</B><DD>the bit pattern for the sign and exponent</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="numCommonMostSigMantissaBits(long, long)"><!-- --></A><H3>
+numCommonMostSigMantissaBits</H3>
+<PRE>
+public static int <B>numCommonMostSigMantissaBits</B>(long&nbsp;num1,
+                                               long&nbsp;num2)</PRE>
+<DL>
+<DD>This computes the number of common most-significant bits in the mantissas
+ of two double-precision numbers.
+ It does not count the hidden bit, which is always 1.
+ It does not determine whether the numbers have the same exponent - if they do
+ not, the value computed by this function is meaningless.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>num1</CODE> - the first number<DD><CODE>num2</CODE> - the second number
+<DT><B>Returns:</B><DD>the number of common most-significant mantissa bits</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="zeroLowerBits(long, int)"><!-- --></A><H3>
+zeroLowerBits</H3>
+<PRE>
+public static long <B>zeroLowerBits</B>(long&nbsp;bits,
+                                 int&nbsp;nBits)</PRE>
+<DL>
+<DD>Zeroes the lower n bits of a bitstring.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>bits</CODE> - the bitstring to alter
+<DT><B>Returns:</B><DD>the zeroed bitstring</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBit(long, int)"><!-- --></A><H3>
+getBit</H3>
+<PRE>
+public static int <B>getBit</B>(long&nbsp;bits,
+                         int&nbsp;i)</PRE>
+<DL>
+<DD>Extracts the i'th bit of a bitstring.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>bits</CODE> - the bitstring to extract from<DD><CODE>i</CODE> - the bit to extract
+<DT><B>Returns:</B><DD>the value of the extracted bit</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(double)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(double&nbsp;num)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCommon()"><!-- --></A><H3>
+getCommon</H3>
+<PRE>
+public double <B>getCommon</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString(long)"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>(long&nbsp;bits)</PRE>
+<DL>
+<DD>A representation of the Double bits formatted for easy readability
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CommonBits.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,389 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CommonBitsOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision.CommonBitsOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CommonBitsOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CommonBitsOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.precision</FONT>
+<BR>
+Class CommonBitsOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.precision.CommonBitsOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CommonBitsOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Provides versions of Geometry spatial functions which use
+ common bit removal to reduce the likelihood of robustness problems.
+ <p>
+ In the current implementation no rounding is performed on the
+ reshifted result geometry, which means that it is possible
+ that the returned Geometry is invalid.
+ Client classes should check the validity of the returned result themselves.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#CommonBitsOp()">CommonBitsOp</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new instance of class, which reshifts result <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#CommonBitsOp(boolean)">CommonBitsOp</A></B>(boolean&nbsp;returnToOriginalPrecision)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new instance of class, specifying whether
+ the result <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s should be reshifted.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#buffer(com.vividsolutions.jts.geom.Geometry, double)">buffer</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+       double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the buffer a geometry,
+ using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">difference</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic difference of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">intersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic intersection of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">symDifference</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic symmetric difference of two geometries,
+ using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">union</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+      <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic union of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CommonBitsOp()"><!-- --></A><H3>
+CommonBitsOp</H3>
+<PRE>
+public <B>CommonBitsOp</B>()</PRE>
+<DL>
+<DD>Creates a new instance of class, which reshifts result <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.
+<P>
+</DL>
+<HR>
+
+<A NAME="CommonBitsOp(boolean)"><!-- --></A><H3>
+CommonBitsOp</H3>
+<PRE>
+public <B>CommonBitsOp</B>(boolean&nbsp;returnToOriginalPrecision)</PRE>
+<DL>
+<DD>Creates a new instance of class, specifying whether
+ the result <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s should be reshifted.
+<P>
+<DT><B>Parameters:</B><DD><CODE>returnToOriginalPrecision</CODE> - </DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>intersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic intersection of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic intersection of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+union</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>union</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                      <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic union of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic union of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+difference</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>difference</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                           <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic difference of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry, to be subtracted from the first
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic difference of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+symDifference</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>symDifference</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic symmetric difference of two geometries,
+ using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic symmetric difference of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buffer(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+buffer</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buffer</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                       double&nbsp;distance)</PRE>
+<DL>
+<DD>Computes the buffer a geometry,
+ using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the Geometry to buffer<DD><CODE>distance</CODE> - the buffer distance
+<DT><B>Returns:</B><DD>the Geometry representing the buffer of the input Geometry.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CommonBitsOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsRemover.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsRemover.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/CommonBitsRemover.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CommonBitsRemover
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision.CommonBitsRemover class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CommonBitsRemover";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CommonBitsRemover.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.precision</FONT>
+<BR>
+Class CommonBitsRemover</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.precision.CommonBitsRemover</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CommonBitsRemover</B><DT>extends java.lang.Object</DL>
+
+<P>
+Allow computing and removing common mantissa bits from one or more Geometries.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html#CommonBitsRemover()">CommonBitsRemover</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html#add(com.vividsolutions.jts.geom.Geometry)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a geometry to the set of geometries whose common bits are
+ being computed.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html#addCommonBits(com.vividsolutions.jts.geom.Geometry)">addCommonBits</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the common coordinate bits back into a Geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html#getCommonCoordinate()">getCommonCoordinate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The common bits of the Coordinates in the supplied Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html#removeCommonBits(com.vividsolutions.jts.geom.Geometry)">removeCommonBits</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the common coordinate bits from a Geometry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CommonBitsRemover()"><!-- --></A><H3>
+CommonBitsRemover</H3>
+<PRE>
+public <B>CommonBitsRemover</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Add a geometry to the set of geometries whose common bits are
+ being computed.  After this method has executed the
+ common coordinate reflects the common bits of all added
+ geometries.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - a Geometry to test for common bits</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCommonCoordinate()"><!-- --></A><H3>
+getCommonCoordinate</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>getCommonCoordinate</B>()</PRE>
+<DL>
+<DD>The common bits of the Coordinates in the supplied Geometries.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="removeCommonBits(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+removeCommonBits</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>removeCommonBits</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Removes the common coordinate bits from a Geometry.
+ The coordinates of the Geometry are changed.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the Geometry from which to remove the common coordinate bits
+<DT><B>Returns:</B><DD>the shifted Geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addCommonBits(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+addCommonBits</H3>
+<PRE>
+public void <B>addCommonBits</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD>Adds the common coordinate bits back into a Geometry.
+ The coordinates of the Geometry are changed.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the Geometry to which to add the common coordinate bits
+<DT><B>Returns:</B><DD>the shifted Geometry</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CommonBitsRemover.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/EnhancedPrecisionOp.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/EnhancedPrecisionOp.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/EnhancedPrecisionOp.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,362 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+EnhancedPrecisionOp
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision.EnhancedPrecisionOp class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="EnhancedPrecisionOp";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EnhancedPrecisionOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.precision</FONT>
+<BR>
+Class EnhancedPrecisionOp</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.precision.EnhancedPrecisionOp</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>EnhancedPrecisionOp</B><DT>extends java.lang.Object</DL>
+
+<P>
+Provides versions of Geometry spatial functions which use
+ enhanced precision techniques to reduce the likelihood of robustness problems.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#EnhancedPrecisionOp()">EnhancedPrecisionOp</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#buffer(com.vividsolutions.jts.geom.Geometry, double)">buffer</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+       double&nbsp;distance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the buffer of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>, using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">difference</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+           <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic difference of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">intersection</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+             <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic intersection of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">symDifference</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+              <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic symmetric difference of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)">union</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+      <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the set-theoretic union of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="EnhancedPrecisionOp()"><!-- --></A><H3>
+EnhancedPrecisionOp</H3>
+<PRE>
+public <B>EnhancedPrecisionOp</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+intersection</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>intersection</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                                    <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic intersection of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic intersection of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+union</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>union</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                             <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic union of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic union of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+difference</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>difference</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                                  <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic difference of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic difference of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+symDifference</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>symDifference</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom0,
+                                     <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom1)</PRE>
+<DL>
+<DD>Computes the set-theoretic symmetric difference of two <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom0</CODE> - the first Geometry<DD><CODE>geom1</CODE> - the second Geometry
+<DT><B>Returns:</B><DD>the Geometry representing the set-theoretic symmetric difference of the input Geometries.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="buffer(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+buffer</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>buffer</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                              double&nbsp;distance)</PRE>
+<DL>
+<DD>Computes the buffer of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>, using enhanced precision.
+ This method should no longer be necessary, since the buffer algorithm
+ now is highly robust.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - the first Geometry<DD><CODE>distance</CODE> - the buffer distance
+<DT><B>Returns:</B><DD>the Geometry representing the buffer of the input Geometry.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="EnhancedPrecisionOp.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,319 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+SimpleGeometryPrecisionReducer
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision.SimpleGeometryPrecisionReducer class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SimpleGeometryPrecisionReducer";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleGeometryPrecisionReducer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.precision</FONT>
+<BR>
+Class SimpleGeometryPrecisionReducer</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.precision.SimpleGeometryPrecisionReducer</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SimpleGeometryPrecisionReducer</B><DT>extends java.lang.Object</DL>
+
+<P>
+Reduces the precision of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ according to the supplied <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>, without
+ attempting to preserve valid topology.
+ <p>
+ The topology of the resulting geometry may be invalid if
+ topological collapse occurs due to coordinates being shifted.
+ It is up to the client to check this and handle it if necessary.
+ Collapses may not matter for some uses.  An example
+ is simplifying the input to the buffer algorithm.
+ The buffer algorithm does not depend on the validity of the input geometry.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#SimpleGeometryPrecisionReducer(com.vividsolutions.jts.geom.PrecisionModel)">SimpleGeometryPrecisionReducer</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#reduce(com.vividsolutions.jts.geom.Geometry)">reduce</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#setChangePrecisionModel(boolean)">setChangePrecisionModel</A></B>(boolean&nbsp;changePrecisionModel)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets whether the <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> of the new reduced Geometry
+ will be changed to be the <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> supplied to
+ specify the reduction.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#setRemoveCollapsedComponents(boolean)">setRemoveCollapsedComponents</A></B>(boolean&nbsp;removeCollapsed)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets whether the reduction will result in collapsed components
+ being removed completely, or simply being collapsed to an (invalid)
+ Geometry of the same type.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SimpleGeometryPrecisionReducer(com.vividsolutions.jts.geom.PrecisionModel)"><!-- --></A><H3>
+SimpleGeometryPrecisionReducer</H3>
+<PRE>
+public <B>SimpleGeometryPrecisionReducer</B>(<A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>&nbsp;pm)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setRemoveCollapsedComponents(boolean)"><!-- --></A><H3>
+setRemoveCollapsedComponents</H3>
+<PRE>
+public void <B>setRemoveCollapsedComponents</B>(boolean&nbsp;removeCollapsed)</PRE>
+<DL>
+<DD>Sets whether the reduction will result in collapsed components
+ being removed completely, or simply being collapsed to an (invalid)
+ Geometry of the same type.
+ The default is to remove collapsed components.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>removeCollapsed</CODE> - if <code>true</code> collapsed components will be removed</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setChangePrecisionModel(boolean)"><!-- --></A><H3>
+setChangePrecisionModel</H3>
+<PRE>
+public void <B>setChangePrecisionModel</B>(boolean&nbsp;changePrecisionModel)</PRE>
+<DL>
+<DD>Sets whether the <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> of the new reduced Geometry
+ will be changed to be the <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> supplied to
+ specify the reduction.  The default is to not change the precision model
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>changePrecisionModel</CODE> - if <code>true</code> the precision model of the created Geometry will be the
+ the precisionModel supplied in the constructor.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reduce(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+reduce</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>reduce</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SimpleGeometryPrecisionReducer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.precision
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/precision/package-summary.html" target="classFrame">com.vividsolutions.jts.precision</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="CommonBits.html" title="class in com.vividsolutions.jts.precision" target="classFrame">CommonBits</A>
+<BR>
+<A HREF="CommonBitsOp.html" title="class in com.vividsolutions.jts.precision" target="classFrame">CommonBitsOp</A>
+<BR>
+<A HREF="CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision" target="classFrame">CommonBitsRemover</A>
+<BR>
+<A HREF="EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision" target="classFrame">EnhancedPrecisionOp</A>
+<BR>
+<A HREF="SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision" target="classFrame">SimpleGeometryPrecisionReducer</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.precision
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.precision package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.precision";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.precision
+</H2>
+Provides classes for manipulating the precision model of Geometries
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A></B></TD>
+<TD>Determines the maximum number of common most-significant
+ bits in the mantissa of one or numbers.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A></B></TD>
+<TD>Provides versions of Geometry spatial functions which use
+ common bit removal to reduce the likelihood of robustness problems.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A></B></TD>
+<TD>Allow computing and removing common mantissa bits from one or more Geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A></B></TD>
+<TD>Provides versions of Geometry spatial functions which use
+ enhanced precision techniques to reduce the likelihood of robustness problems.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A></B></TD>
+<TD>Reduces the precision of a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ according to the supplied <A HREF="../../../../com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>, without
+ attempting to preserve valid topology.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.precision Description
+</H2>
+
+<P>
+Provides classes for manipulating the precision model of Geometries
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/precision/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.precision Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.precision Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.precision
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="../../../../com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision"><B>CommonBits</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>CommonBitsOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="../../../../com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>CommonBitsRemover</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="../../../../com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>EnhancedPrecisionOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="../../../../com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision"><B>SimpleGeometryPrecisionReducer</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/planargraph/algorithm/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,303 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+DouglasPeuckerLineSimplifier
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.DouglasPeuckerLineSimplifier class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DouglasPeuckerLineSimplifier";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DouglasPeuckerLineSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class DouglasPeuckerLineSimplifier</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.DouglasPeuckerLineSimplifier</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>DouglasPeuckerLineSimplifier</B><DT>extends java.lang.Object</DL>
+
+<P>
+Simplifies a linestring (sequence of points) using
+ the standard Douglas-Peucker algorithm.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#DouglasPeuckerLineSimplifier(com.vividsolutions.jts.geom.Coordinate[])">DouglasPeuckerLineSimplifier</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#setDistanceTolerance(double)">setDistanceTolerance</A></B>(double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the distance tolerance for the simplification.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#simplify()">simplify</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#simplify(com.vividsolutions.jts.geom.Coordinate[], double)">simplify</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+         double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DouglasPeuckerLineSimplifier(com.vividsolutions.jts.geom.Coordinate[])"><!-- --></A><H3>
+DouglasPeuckerLineSimplifier</H3>
+<PRE>
+public <B>DouglasPeuckerLineSimplifier</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="simplify(com.vividsolutions.jts.geom.Coordinate[], double)"><!-- --></A><H3>
+simplify</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>simplify</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]&nbsp;pts,
+                                    double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDistanceTolerance(double)"><!-- --></A><H3>
+setDistanceTolerance</H3>
+<PRE>
+public void <B>setDistanceTolerance</B>(double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD>Sets the distance tolerance for the simplification.
+ All vertices in the simplified linestring will be within this
+ distance of the original linestring.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distanceTolerance</CODE> - the approximation tolerance to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="simplify()"><!-- --></A><H3>
+simplify</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>simplify</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DouglasPeuckerLineSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,313 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+DouglasPeuckerSimplifier
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.DouglasPeuckerSimplifier class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="DouglasPeuckerSimplifier";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DouglasPeuckerSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class DouglasPeuckerSimplifier</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.DouglasPeuckerSimplifier</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>DouglasPeuckerSimplifier</B><DT>extends java.lang.Object</DL>
+
+<P>
+Simplifies a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> using the standard Douglas-Peucker algorithm.
+ Ensures that any polygonal geometries returned are valid.
+ Simple lines are not guaranteed to remain simple after simplification.
+ <p>
+ Note that in general D-P does not preserve topology -
+ e.g. polygons can be split, collapse to lines or disappear
+ holes can be created or disappear,
+ and lines can cross.
+ To simplify geometry while preserving topology use <A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify"><CODE>TopologyPreservingSimplifier</CODE></A>.
+ (However, using D-P is significantly faster).
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#DouglasPeuckerSimplifier(com.vividsolutions.jts.geom.Geometry)">DouglasPeuckerSimplifier</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#getResultGeometry()">getResultGeometry</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#setDistanceTolerance(double)">setDistanceTolerance</A></B>(double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the distance tolerance for the simplification.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#simplify(com.vividsolutions.jts.geom.Geometry, double)">simplify</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+         double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DouglasPeuckerSimplifier(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+DouglasPeuckerSimplifier</H3>
+<PRE>
+public <B>DouglasPeuckerSimplifier</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="simplify(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+simplify</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>simplify</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                                double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDistanceTolerance(double)"><!-- --></A><H3>
+setDistanceTolerance</H3>
+<PRE>
+public void <B>setDistanceTolerance</B>(double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD>Sets the distance tolerance for the simplification.
+ All vertices in the simplified geometry will be within this
+ distance of the original geometry.
+ The tolerance value must be non-negative.  A tolerance value
+ of zero is effectively a no-op.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distanceTolerance</CODE> - the approximation tolerance to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultGeometry()"><!-- --></A><H3>
+getResultGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getResultGeometry</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="DouglasPeuckerSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/LineSegmentIndex.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/LineSegmentIndex.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/LineSegmentIndex.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,316 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+LineSegmentIndex
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.LineSegmentIndex class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="LineSegmentIndex";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineSegmentIndex.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class LineSegmentIndex</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.LineSegmentIndex</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>LineSegmentIndex</B><DT>extends java.lang.Object</DL>
+
+<P>
+An spatial index on a set of <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><CODE>LineSegment</CODE></A>s.
+ Supports adding and removing items.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html#LineSegmentIndex()">LineSegmentIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html#add(com.vividsolutions.jts.geom.LineSegment)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html#add(com.vividsolutions.jts.simplify.TaggedLineString)">add</A></B>(<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html#query(com.vividsolutions.jts.geom.LineSegment)">query</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;querySeg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html#remove(com.vividsolutions.jts.geom.LineSegment)">remove</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="LineSegmentIndex()"><!-- --></A><H3>
+LineSegmentIndex</H3>
+<PRE>
+public <B>LineSegmentIndex</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="add(com.vividsolutions.jts.simplify.TaggedLineString)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>&nbsp;line)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="add(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+add</H3>
+<PRE>
+public void <B>add</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="remove(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+remove</H3>
+<PRE>
+public void <B>remove</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="query(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+query</H3>
+<PRE>
+public java.util.List <B>query</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;querySeg)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="LineSegmentIndex.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineSegment.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineSegment.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineSegment.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,328 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+TaggedLineSegment
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.TaggedLineSegment class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TaggedLineSegment";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLineSegment.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.LineSegment">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class TaggedLineSegment</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.LineSegment</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.TaggedLineSegment</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Comparable, java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>TaggedLineSegment</B><DT>extends <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><CODE>LineSegment</CODE></A> which is tagged with its location in a parent <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ Used to index the segments in a geometry and recover the segment locations
+ from the index.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.simplify.TaggedLineSegment">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_com.vividsolutions.jts.geom.LineSegment"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Fields inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#p0">p0</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#p1">p1</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html#TaggedLineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">TaggedLineSegment</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html#TaggedLineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry, int)">TaggedLineSegment</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                  <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent,
+                  int&nbsp;index)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html#getIndex()">getIndex</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html#getParent()">getParent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.vividsolutions.jts.geom.LineSegment"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#angle()">angle</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#closestPoint(com.vividsolutions.jts.geom.Coordinate)">closestPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#closestPoints(com.vividsolutions.jts.geom.LineSegment)">closestPoints</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#compareTo(java.lang.Object)">compareTo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#distance(com.vividsolutions.jts.geom.Coordinate)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#distance(com.vividsolutions.jts.geom.LineSegment)">distance</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#distancePerpendicular(com.vividsolutions.jts.geom.Coordinate)">distancePerpendicular</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#equals(java.lang.Object)">equals</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#equalsTopo(com.vividsolutions.jts.geom.LineSegment)">equalsTopo</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#getCoordinate(int)">getCoordinate</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#getLength()">getLength</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#intersection(com.vividsolutions.jts.geom.LineSegment)">intersection</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#isHorizontal()">isHorizontal</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#isVertical()">isVertical</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#midPoint()">midPoint</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#normalize()">normalize</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#orientationIndex(com.vividsolutions.jts.geom.LineSegment)">orientationIndex</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#pointAlong(double)">pointAlong</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#project(com.vividsolutions.jts.geom.Coordinate)">project</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#project(com.vividsolutions.jts.geom.LineSegment)">project</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#projectionFactor(com.vividsolutions.jts.geom.Coordinate)">projectionFactor</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#reverse()">reverse</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#setCoordinates(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">setCoordinates</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#setCoordinates(com.vividsolutions.jts.geom.LineSegment)">setCoordinates</A>, <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html#toString()">toString</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TaggedLineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry, int)"><!-- --></A><H3>
+TaggedLineSegment</H3>
+<PRE>
+public <B>TaggedLineSegment</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                         <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;parent,
+                         int&nbsp;index)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TaggedLineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+TaggedLineSegment</H3>
+<PRE>
+public <B>TaggedLineSegment</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                         <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getParent()"><!-- --></A><H3>
+getParent</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getParent</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getIndex()"><!-- --></A><H3>
+getIndex</H3>
+<PRE>
+public int <B>getIndex</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLineSegment.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_com.vividsolutions.jts.geom.LineSegment">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineString.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineString.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineString.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,441 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+TaggedLineString
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.TaggedLineString class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TaggedLineString";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLineString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class TaggedLineString</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.TaggedLineString</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TaggedLineString</B><DT>extends java.lang.Object</DL>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#TaggedLineString(com.vividsolutions.jts.geom.LineString)">TaggedLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;parentLine)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#TaggedLineString(com.vividsolutions.jts.geom.LineString, int)">TaggedLineString</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;parentLine,
+                 int&nbsp;minimumSize)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#addToResult(com.vividsolutions.jts.geom.LineSegment)">addToResult</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#asLinearRing()">asLinearRing</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#asLineString()">asLineString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getMinimumSize()">getMinimumSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getParent()">getParent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getParentCoordinates()">getParentCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getResultCoordinates()">getResultCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getResultSize()">getResultSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getSegment(int)">getSegment</A></B>(int&nbsp;i)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html#getSegments()">getSegments</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TaggedLineString(com.vividsolutions.jts.geom.LineString)"><!-- --></A><H3>
+TaggedLineString</H3>
+<PRE>
+public <B>TaggedLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;parentLine)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TaggedLineString(com.vividsolutions.jts.geom.LineString, int)"><!-- --></A><H3>
+TaggedLineString</H3>
+<PRE>
+public <B>TaggedLineString</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>&nbsp;parentLine,
+                        int&nbsp;minimumSize)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getMinimumSize()"><!-- --></A><H3>
+getMinimumSize</H3>
+<PRE>
+public int <B>getMinimumSize</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getParent()"><!-- --></A><H3>
+getParent</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>getParent</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getParentCoordinates()"><!-- --></A><H3>
+getParentCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getParentCoordinates</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultCoordinates()"><!-- --></A><H3>
+getResultCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getResultCoordinates</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultSize()"><!-- --></A><H3>
+getResultSize</H3>
+<PRE>
+public int <B>getResultSize</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegment(int)"><!-- --></A><H3>
+getSegment</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A> <B>getSegment</B>(int&nbsp;i)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSegments()"><!-- --></A><H3>
+getSegments</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>[] <B>getSegments</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addToResult(com.vividsolutions.jts.geom.LineSegment)"><!-- --></A><H3>
+addToResult</H3>
+<PRE>
+public void <B>addToResult</B>(<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>&nbsp;seg)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="asLineString()"><!-- --></A><H3>
+asLineString</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>asLineString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="asLinearRing()"><!-- --></A><H3>
+asLinearRing</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>asLinearRing</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLineString.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,287 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+TaggedLineStringSimplifier
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.TaggedLineStringSimplifier class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TaggedLineStringSimplifier";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLineStringSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class TaggedLineStringSimplifier</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.TaggedLineStringSimplifier</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TaggedLineStringSimplifier</B><DT>extends java.lang.Object</DL>
+
+<P>
+Simplifies a TaggedLineString, preserving topology
+ (in the sense that no new intersections are introduced).
+ Uses the recursive Douglas-Peucker algorithm.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html#TaggedLineStringSimplifier(com.vividsolutions.jts.simplify.LineSegmentIndex, com.vividsolutions.jts.simplify.LineSegmentIndex)">TaggedLineStringSimplifier</A></B>(<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>&nbsp;inputIndex,
+                           <A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>&nbsp;outputIndex)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html#setDistanceTolerance(double)">setDistanceTolerance</A></B>(double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the distance tolerance for the simplification.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html#simplify(com.vividsolutions.jts.simplify.TaggedLineString)">simplify</A></B>(<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TaggedLineStringSimplifier(com.vividsolutions.jts.simplify.LineSegmentIndex, com.vividsolutions.jts.simplify.LineSegmentIndex)"><!-- --></A><H3>
+TaggedLineStringSimplifier</H3>
+<PRE>
+public <B>TaggedLineStringSimplifier</B>(<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>&nbsp;inputIndex,
+                                  <A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>&nbsp;outputIndex)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setDistanceTolerance(double)"><!-- --></A><H3>
+setDistanceTolerance</H3>
+<PRE>
+public void <B>setDistanceTolerance</B>(double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD>Sets the distance tolerance for the simplification.
+ All vertices in the simplified geometry will be within this
+ distance of the original geometry.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distanceTolerance</CODE> - the approximation tolerance to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="simplify(com.vividsolutions.jts.simplify.TaggedLineString)"><!-- --></A><H3>
+simplify</H3>
+<PRE>
+public void <B>simplify</B>(<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>&nbsp;line)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLineStringSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+TaggedLinesSimplifier
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.TaggedLinesSimplifier class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TaggedLinesSimplifier";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLinesSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class TaggedLinesSimplifier</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.TaggedLinesSimplifier</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TaggedLinesSimplifier</B><DT>extends java.lang.Object</DL>
+
+<P>
+Simplifies a collection of <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineString</CODE></A>s, preserving topology
+ (in the sense that no new intersections are introduced).
+ This class is essentially just a container for the common
+ indexes used by <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineStringSimplifier</CODE></A>.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html#TaggedLinesSimplifier()">TaggedLinesSimplifier</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html#setDistanceTolerance(double)">setDistanceTolerance</A></B>(double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the distance tolerance for the simplification.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html#simplify(java.util.Collection)">simplify</A></B>(java.util.Collection&nbsp;taggedLines)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Simplify a collection of <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineString</CODE></A>s</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TaggedLinesSimplifier()"><!-- --></A><H3>
+TaggedLinesSimplifier</H3>
+<PRE>
+public <B>TaggedLinesSimplifier</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setDistanceTolerance(double)"><!-- --></A><H3>
+setDistanceTolerance</H3>
+<PRE>
+public void <B>setDistanceTolerance</B>(double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD>Sets the distance tolerance for the simplification.
+ All vertices in the simplified geometry will be within this
+ distance of the original geometry.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distanceTolerance</CODE> - the approximation tolerance to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="simplify(java.util.Collection)"><!-- --></A><H3>
+simplify</H3>
+<PRE>
+public void <B>simplify</B>(java.util.Collection&nbsp;taggedLines)</PRE>
+<DL>
+<DD>Simplify a collection of <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineString</CODE></A>s
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>taggedLines</CODE> - the collection of lines to simplify</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TaggedLinesSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,317 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+TopologyPreservingSimplifier
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify.TopologyPreservingSimplifier class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="TopologyPreservingSimplifier";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyPreservingSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.simplify</FONT>
+<BR>
+Class TopologyPreservingSimplifier</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.simplify.TopologyPreservingSimplifier</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TopologyPreservingSimplifier</B><DT>extends java.lang.Object</DL>
+
+<P>
+Simplifies a geometry, ensuring that
+ the result is a valid geometry having the
+ same dimension and number of components as the input.
+ The simplification uses a maximum distance difference algorithm
+ similar to the one used in the Douglas-Peucker algorithm.
+ <p>
+ In particular, if the input is an areal geometry
+ ( <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> or <A HREF="../../../../com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ <ul>
+ <li>The result has the same number of shells and holes (rings) as the input,
+ in the same order
+ <li>The result rings touch at <b>no more</b> than the number of touching point in the input
+ (although they may touch at fewer points)
+ </ul>
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#TopologyPreservingSimplifier(com.vividsolutions.jts.geom.Geometry)">TopologyPreservingSimplifier</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#getResultGeometry()">getResultGeometry</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#setDistanceTolerance(double)">setDistanceTolerance</A></B>(double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the distance tolerance for the simplification.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#simplify(com.vividsolutions.jts.geom.Geometry, double)">simplify</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+         double&nbsp;distanceTolerance)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TopologyPreservingSimplifier(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+TopologyPreservingSimplifier</H3>
+<PRE>
+public <B>TopologyPreservingSimplifier</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;inputGeom)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="simplify(com.vividsolutions.jts.geom.Geometry, double)"><!-- --></A><H3>
+simplify</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>simplify</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>&nbsp;geom,
+                                double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDistanceTolerance(double)"><!-- --></A><H3>
+setDistanceTolerance</H3>
+<PRE>
+public void <B>setDistanceTolerance</B>(double&nbsp;distanceTolerance)</PRE>
+<DL>
+<DD>Sets the distance tolerance for the simplification.
+ All vertices in the simplified geometry will be within this
+ distance of the original geometry.
+ The tolerance value must be non-negative.  A tolerance value
+ of zero is effectively a no-op.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>distanceTolerance</CODE> - the approximation tolerance to use</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getResultGeometry()"><!-- --></A><H3>
+getResultGeometry</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>getResultGeometry</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TopologyPreservingSimplifier.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.simplify
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/simplify/package-summary.html" target="classFrame">com.vividsolutions.jts.simplify</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">DouglasPeuckerLineSimplifier</A>
+<BR>
+<A HREF="DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">DouglasPeuckerSimplifier</A>
+<BR>
+<A HREF="LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">LineSegmentIndex</A>
+<BR>
+<A HREF="TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLineSegment</A>
+<BR>
+<A HREF="TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLinesSimplifier</A>
+<BR>
+<A HREF="TaggedLineString.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLineString</A>
+<BR>
+<A HREF="TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TaggedLineStringSimplifier</A>
+<BR>
+<A HREF="TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify" target="classFrame">TopologyPreservingSimplifier</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.simplify
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.simplify package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.simplify";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.simplify
+</H2>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A></B></TD>
+<TD>Simplifies a linestring (sequence of points) using
+ the standard Douglas-Peucker algorithm.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A></B></TD>
+<TD>Simplifies a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> using the standard Douglas-Peucker algorithm.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A></B></TD>
+<TD>An spatial index on a set of <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><CODE>LineSegment</CODE></A>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><CODE>LineSegment</CODE></A> which is tagged with its location in a parent <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLinesSimplifier</A></B></TD>
+<TD>Simplifies a collection of <A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineString</CODE></A>s, preserving topology
+ (in the sense that no new intersections are introduced).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLineStringSimplifier</A></B></TD>
+<TD>Simplifies a TaggedLineString, preserving topology
+ (in the sense that no new intersections are introduced).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A></B></TD>
+<TD>Simplifies a geometry, ensuring that
+ the result is a valid geometry having the
+ same dimension and number of components as the input.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/simplify/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.simplify Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.simplify Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.simplify
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>DouglasPeuckerLineSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>DouglasPeuckerSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>LineSegment</B></A> (implements java.lang.Comparable, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineSegment</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>LineSegmentIndex</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLinesSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineString</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineStringSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="../../../../com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TopologyPreservingSimplifier</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/precision/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Assert.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Assert.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Assert.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,397 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Assert
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.Assert class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Assert";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Assert.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class Assert</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.Assert</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Assert</B><DT>extends java.lang.Object</DL>
+
+<P>
+A utility for making programming assertions.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#Assert()">Assert</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#equals(java.lang.Object, java.lang.Object)">equals</A></B>(java.lang.Object&nbsp;expectedValue,
+       java.lang.Object&nbsp;actualValue)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Throws an <code>AssertionFailedException</code> if the given objects are
+  not equal, according to the <code>equals</code> method.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#equals(java.lang.Object, java.lang.Object, java.lang.String)">equals</A></B>(java.lang.Object&nbsp;expectedValue,
+       java.lang.Object&nbsp;actualValue,
+       java.lang.String&nbsp;message)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Throws an <code>AssertionFailedException</code> with the given message if
+  the given objects are not equal, according to the <code>equals</code>
+  method.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#isTrue(boolean)">isTrue</A></B>(boolean&nbsp;assertion)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Throws an <code>AssertionFailedException</code> if the given assertion is
+  not true.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#isTrue(boolean, java.lang.String)">isTrue</A></B>(boolean&nbsp;assertion,
+       java.lang.String&nbsp;message)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Throws an <code>AssertionFailedException</code> with the given message if
+  the given assertion is not true.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#shouldNeverReachHere()">shouldNeverReachHere</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Always throws an <code>AssertionFailedException</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html#shouldNeverReachHere(java.lang.String)">shouldNeverReachHere</A></B>(java.lang.String&nbsp;message)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Always throws an <code>AssertionFailedException</code> with the given
+  message.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Assert()"><!-- --></A><H3>
+Assert</H3>
+<PRE>
+public <B>Assert</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="isTrue(boolean)"><!-- --></A><H3>
+isTrue</H3>
+<PRE>
+public static void <B>isTrue</B>(boolean&nbsp;assertion)</PRE>
+<DL>
+<DD>Throws an <code>AssertionFailedException</code> if the given assertion is
+  not true.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>assertion</CODE> - a condition that is supposed to be true
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></CODE> - if the condition is false</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isTrue(boolean, java.lang.String)"><!-- --></A><H3>
+isTrue</H3>
+<PRE>
+public static void <B>isTrue</B>(boolean&nbsp;assertion,
+                          java.lang.String&nbsp;message)</PRE>
+<DL>
+<DD>Throws an <code>AssertionFailedException</code> with the given message if
+  the given assertion is not true.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>assertion</CODE> - a condition that is supposed to be true<DD><CODE>message</CODE> - a description of the assertion
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></CODE> - if the condition is false</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public static void <B>equals</B>(java.lang.Object&nbsp;expectedValue,
+                          java.lang.Object&nbsp;actualValue)</PRE>
+<DL>
+<DD>Throws an <code>AssertionFailedException</code> if the given objects are
+  not equal, according to the <code>equals</code> method.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>expectedValue</CODE> - the correct value<DD><CODE>actualValue</CODE> - the value being checked
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></CODE> - if the two objects are not equal</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object, java.lang.Object, java.lang.String)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public static void <B>equals</B>(java.lang.Object&nbsp;expectedValue,
+                          java.lang.Object&nbsp;actualValue,
+                          java.lang.String&nbsp;message)</PRE>
+<DL>
+<DD>Throws an <code>AssertionFailedException</code> with the given message if
+  the given objects are not equal, according to the <code>equals</code>
+  method.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>expectedValue</CODE> - the correct value<DD><CODE>actualValue</CODE> - the value being checked<DD><CODE>message</CODE> - a description of the assertion
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></CODE> - if the two objects are not equal</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="shouldNeverReachHere()"><!-- --></A><H3>
+shouldNeverReachHere</H3>
+<PRE>
+public static void <B>shouldNeverReachHere</B>()</PRE>
+<DL>
+<DD>Always throws an <code>AssertionFailedException</code>.
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></CODE> - thrown always</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="shouldNeverReachHere(java.lang.String)"><!-- --></A><H3>
+shouldNeverReachHere</H3>
+<PRE>
+public static void <B>shouldNeverReachHere</B>(java.lang.String&nbsp;message)</PRE>
+<DL>
+<DD>Always throws an <code>AssertionFailedException</code> with the given
+  message.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>message</CODE> - a description of the assertion
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></CODE> - thrown always</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Assert.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/AssertionFailedException.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/AssertionFailedException.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/AssertionFailedException.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,262 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+AssertionFailedException
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.AssertionFailedException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="AssertionFailedException";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AssertionFailedException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class AssertionFailedException</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Throwable
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.Exception
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by">java.lang.RuntimeException
+              <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.AssertionFailedException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>AssertionFailedException</B><DT>extends java.lang.RuntimeException</DL>
+
+<P>
+Thrown when the application is in an inconsistent state. Indicates a problem
+  with the code.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#com.vividsolutions.jts.util.AssertionFailedException">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html#AssertionFailedException()">AssertionFailedException</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates an <code>AssertionFailedException</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html#AssertionFailedException(java.lang.String)">AssertionFailedException</A></B>(java.lang.String&nbsp;message)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>AssertionFailedException</code> with the given detail
+  message.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Throwable</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="AssertionFailedException()"><!-- --></A><H3>
+AssertionFailedException</H3>
+<PRE>
+public <B>AssertionFailedException</B>()</PRE>
+<DL>
+<DD>Creates an <code>AssertionFailedException</code>.
+<P>
+</DL>
+<HR>
+
+<A NAME="AssertionFailedException(java.lang.String)"><!-- --></A><H3>
+AssertionFailedException</H3>
+<PRE>
+public <B>AssertionFailedException</B>(java.lang.String&nbsp;message)</PRE>
+<DL>
+<DD>Creates a <code>AssertionFailedException</code> with the given detail
+  message.
+<P>
+<DT><B>Parameters:</B><DD><CODE>message</CODE> - a description of the assertion</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="AssertionFailedException.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.Function.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.Function.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.Function.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,213 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CollectionUtil.Function
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.CollectionUtil.Function interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CollectionUtil.Function";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CollectionUtil.Function.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Interface CollectionUtil.Function</H2>
+<DL>
+<DT><B>Enclosing interface:</B><DD><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public static interface <B>CollectionUtil.Function</B></DL>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html#execute(java.lang.Object)">execute</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="execute(java.lang.Object)"><!-- --></A><H3>
+execute</H3>
+<PRE>
+public java.lang.Object <B>execute</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CollectionUtil.Function.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CollectionUtil.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,332 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CollectionUtil
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.CollectionUtil class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CollectionUtil";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CollectionUtil.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class CollectionUtil</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.CollectionUtil</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CollectionUtil</B><DT>extends java.lang.Object</DL>
+
+<P>
+Executes a transformation function on each element of a collection
+ and returns the results in a new List.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html#CollectionUtil()">CollectionUtil</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html#apply(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)">apply</A></B>(java.util.Collection&nbsp;coll,
+      <A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>&nbsp;func)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Executes a function on each item in a Collection but does
+ not accumulate the result</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html#select(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)">select</A></B>(java.util.Collection&nbsp;collection,
+       <A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>&nbsp;func)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Executes a function on each item in a Collection
+ and collects all the entries for which the result
+ of the function is equal to <CODE>Boolean</CODE>.TRUE.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.util.List</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html#transform(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)">transform</A></B>(java.util.Collection&nbsp;coll,
+          <A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>&nbsp;func)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Executes a function on each item in a <CODE>Collection</CODE>
+ and returns the results in a new <CODE>List</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CollectionUtil()"><!-- --></A><H3>
+CollectionUtil</H3>
+<PRE>
+public <B>CollectionUtil</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="transform(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)"><!-- --></A><H3>
+transform</H3>
+<PRE>
+public static java.util.List <B>transform</B>(java.util.Collection&nbsp;coll,
+                                       <A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>&nbsp;func)</PRE>
+<DL>
+<DD>Executes a function on each item in a <CODE>Collection</CODE>
+ and returns the results in a new <CODE>List</CODE>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coll</CODE> - the collection to process<DD><CODE>func</CODE> - the Function to execute</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="apply(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)"><!-- --></A><H3>
+apply</H3>
+<PRE>
+public static void <B>apply</B>(java.util.Collection&nbsp;coll,
+                         <A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>&nbsp;func)</PRE>
+<DL>
+<DD>Executes a function on each item in a Collection but does
+ not accumulate the result
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coll</CODE> - the collection to process<DD><CODE>func</CODE> - the Function to execute</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="select(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)"><!-- --></A><H3>
+select</H3>
+<PRE>
+public static java.util.List <B>select</B>(java.util.Collection&nbsp;collection,
+                                    <A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>&nbsp;func)</PRE>
+<DL>
+<DD>Executes a function on each item in a Collection
+ and collects all the entries for which the result
+ of the function is equal to <CODE>Boolean</CODE>.TRUE.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>collection</CODE> - the collection to process<DD><CODE>func</CODE> - the Function to execute</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CollectionUtil.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateArrayFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateArrayFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateArrayFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,296 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CoordinateArrayFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.CoordinateArrayFilter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateArrayFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrayFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class CoordinateArrayFilter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.CoordinateArrayFilter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>CoordinateArrayFilter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that creates an array containing every
+  coordinate in a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html#CoordinateArrayFilter(int)">CoordinateArrayFilter</A></B>(int&nbsp;size)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a <code>CoordinateArrayFilter</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>coord</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the gathered <code>Coordinate</code>s.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateArrayFilter(int)"><!-- --></A><H3>
+CoordinateArrayFilter</H3>
+<PRE>
+public <B>CoordinateArrayFilter</B>(int&nbsp;size)</PRE>
+<DL>
+<DD>Constructs a <code>CoordinateArrayFilter</code>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the number of points that the <code>CoordinateArrayFilter</code>
+      will collect</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD>Returns the gathered <code>Coordinate</code>s.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the <code>Coordinate</code>s collected by this <code>CoordinateArrayFilter</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>coord</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - a <code>Coordinate</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateArrayFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateCountFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateCountFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/CoordinateCountFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,293 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+CoordinateCountFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.CoordinateCountFilter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="CoordinateCountFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateCountFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class CoordinateCountFilter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.CoordinateCountFilter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>CoordinateCountFilter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that counts the total number of coordinates
+  in a <code>Geometry</code>.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html#CoordinateCountFilter()">CoordinateCountFilter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>coord</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html#getCount()">getCount</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the result of the filtering.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CoordinateCountFilter()"><!-- --></A><H3>
+CoordinateCountFilter</H3>
+<PRE>
+public <B>CoordinateCountFilter</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCount()"><!-- --></A><H3>
+getCount</H3>
+<PRE>
+public int <B>getCount</B>()</PRE>
+<DL>
+<DD>Returns the result of the filtering.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the number of points found by this <code>CoordinateCountFilter</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>coord</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - a <code>Coordinate</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CoordinateCountFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Debug.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Debug.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Debug.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,644 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Debug
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.Debug class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Debug";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Debug.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class Debug</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.Debug</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Debug</B><DT>extends java.lang.Object</DL>
+
+<P>
+Provides routines to simplify and localize debugging output.
+ Debugging is controlled via a Java system property value.
+ If the system property with the name given in
+ DEBUG_PROPERTY_NAME (currently "jts.debug") has the value
+ "on" or "true" debugging is enabled.
+ Otherwise, debugging is disabled.
+ The system property can be set by adding an option '-Djts_debug=on'
+ to the Java VM commandline.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#DEBUG_PROPERTY_NAME">DEBUG_PROPERTY_NAME</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#DEBUG_PROPERTY_VALUE_ON">DEBUG_PROPERTY_VALUE_ON</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#DEBUG_PROPERTY_VALUE_TRUE">DEBUG_PROPERTY_VALUE_TRUE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#addWatch(java.lang.Object)">addWatch</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#instancePrint(java.util.Iterator)">instancePrint</A></B>(java.util.Iterator&nbsp;it)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#instancePrint(java.lang.Object)">instancePrint</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#instancePrintIfWatch(java.lang.Object)">instancePrintIfWatch</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#instancePrintObject(java.lang.Object)">instancePrintObject</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#instancePrintWatch()">instancePrintWatch</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#isDebugging()">isDebugging</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prints the status of debugging to <tt>System.out</tt></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#print(boolean, java.lang.Object)">print</A></B>(boolean&nbsp;isTrue,
+      java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#print(java.lang.Object)">print</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#print(java.lang.String)">print</A></B>(java.lang.String&nbsp;str)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#printIfWatch(java.lang.Object)">printIfWatch</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#println()">println</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#println(java.lang.Object)">println</A></B>(java.lang.Object&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#printWatch()">printWatch</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">toLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">toLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html#toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">toLine</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+       <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p3)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="DEBUG_PROPERTY_NAME"><!-- --></A><H3>
+DEBUG_PROPERTY_NAME</H3>
+<PRE>
+public static java.lang.String <B>DEBUG_PROPERTY_NAME</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="DEBUG_PROPERTY_VALUE_ON"><!-- --></A><H3>
+DEBUG_PROPERTY_VALUE_ON</H3>
+<PRE>
+public static java.lang.String <B>DEBUG_PROPERTY_VALUE_ON</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="DEBUG_PROPERTY_VALUE_TRUE"><!-- --></A><H3>
+DEBUG_PROPERTY_VALUE_TRUE</H3>
+<PRE>
+public static java.lang.String <B>DEBUG_PROPERTY_VALUE_TRUE</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)</PRE>
+<DL>
+<DD>Prints the status of debugging to <tt>System.out</tt>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>args</CODE> - the cmd-line arguments (no arguments are required)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="isDebugging()"><!-- --></A><H3>
+isDebugging</H3>
+<PRE>
+public static boolean <B>isDebugging</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toLine</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>toLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toLine</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>toLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+toLine</H3>
+<PRE>
+public static <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>toLine</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p0,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p1,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p2,
+                                <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;p3)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.lang.String)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public static void <B>print</B>(java.lang.String&nbsp;str)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(java.lang.Object)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public static void <B>print</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="print(boolean, java.lang.Object)"><!-- --></A><H3>
+print</H3>
+<PRE>
+public static void <B>print</B>(boolean&nbsp;isTrue,
+                         java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="println(java.lang.Object)"><!-- --></A><H3>
+println</H3>
+<PRE>
+public static void <B>println</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addWatch(java.lang.Object)"><!-- --></A><H3>
+addWatch</H3>
+<PRE>
+public static void <B>addWatch</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="printWatch()"><!-- --></A><H3>
+printWatch</H3>
+<PRE>
+public static void <B>printWatch</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="printIfWatch(java.lang.Object)"><!-- --></A><H3>
+printIfWatch</H3>
+<PRE>
+public static void <B>printIfWatch</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="instancePrintWatch()"><!-- --></A><H3>
+instancePrintWatch</H3>
+<PRE>
+public void <B>instancePrintWatch</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="instancePrintIfWatch(java.lang.Object)"><!-- --></A><H3>
+instancePrintIfWatch</H3>
+<PRE>
+public void <B>instancePrintIfWatch</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="instancePrint(java.lang.Object)"><!-- --></A><H3>
+instancePrint</H3>
+<PRE>
+public void <B>instancePrint</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="instancePrint(java.util.Iterator)"><!-- --></A><H3>
+instancePrint</H3>
+<PRE>
+public void <B>instancePrint</B>(java.util.Iterator&nbsp;it)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="instancePrintObject(java.lang.Object)"><!-- --></A><H3>
+instancePrintObject</H3>
+<PRE>
+public void <B>instancePrintObject</B>(java.lang.Object&nbsp;obj)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="println()"><!-- --></A><H3>
+println</H3>
+<PRE>
+public void <B>println</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Debug.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/GeometricShapeFactory.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/GeometricShapeFactory.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/GeometricShapeFactory.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,474 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+GeometricShapeFactory
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.GeometricShapeFactory class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometricShapeFactory";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometricShapeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class GeometricShapeFactory</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.GeometricShapeFactory</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometricShapeFactory</B><DT>extends java.lang.Object</DL>
+
+<P>
+Computes various kinds of common geometric shapes.
+ Allows various ways of specifying the location and extent of the shapes,
+ as well as number of line segments used to form them.
+ <p>
+ Example:
+ <pre>
+  GeometricShapeFactory gsf = new GeometricShapeFactory();
+  gsf.setSize(100);
+  gsf.setNumPoints(100);
+  gsf.setBase(new Coordinate(0, 0));
+  Polygon rect = gsf.createRectangle();
+ </pre>
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#GeometricShapeFactory()">GeometricShapeFactory</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a shape factory which will create shapes using the default
+ <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#GeometricShapeFactory(com.vividsolutions.jts.geom.GeometryFactory)">GeometricShapeFactory</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geomFact)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a shape factory which will create shapes using the given
+ <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#createArc(double, double)">createArc</A></B>(double&nbsp;startAng,
+          double&nbsp;endAng)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a elliptical arc, as a LineString.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#createCircle()">createCircle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a circular <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#createRectangle()">createRectangle</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a rectangular <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#setBase(com.vividsolutions.jts.geom.Coordinate)">setBase</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;base)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the location of the shape by specifying the base coordinate
+ (which in most cases is the
+ lower left point of the envelope containing the shape).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#setCentre(com.vividsolutions.jts.geom.Coordinate)">setCentre</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;centre)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the location of the shape by specifying the centre of
+ the shape's bounding box</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#setHeight(double)">setHeight</A></B>(double&nbsp;height)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the height of the shape.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#setNumPoints(int)">setNumPoints</A></B>(int&nbsp;nPts)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the total number of points in the created <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#setSize(double)">setSize</A></B>(double&nbsp;size)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the size of the extent of the shape in both x and y directions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html#setWidth(double)">setWidth</A></B>(double&nbsp;width)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the width of the shape.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometricShapeFactory()"><!-- --></A><H3>
+GeometricShapeFactory</H3>
+<PRE>
+public <B>GeometricShapeFactory</B>()</PRE>
+<DL>
+<DD>Create a shape factory which will create shapes using the default
+ <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<P>
+</DL>
+<HR>
+
+<A NAME="GeometricShapeFactory(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+GeometricShapeFactory</H3>
+<PRE>
+public <B>GeometricShapeFactory</B>(<A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>&nbsp;geomFact)</PRE>
+<DL>
+<DD>Create a shape factory which will create shapes using the given
+ <A HREF="../../../../com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>geomFact</CODE> - the factory to use</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setBase(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+setBase</H3>
+<PRE>
+public void <B>setBase</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;base)</PRE>
+<DL>
+<DD>Sets the location of the shape by specifying the base coordinate
+ (which in most cases is the
+ lower left point of the envelope containing the shape).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>base</CODE> - the base coordinate of the shape</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setCentre(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+setCentre</H3>
+<PRE>
+public void <B>setCentre</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;centre)</PRE>
+<DL>
+<DD>Sets the location of the shape by specifying the centre of
+ the shape's bounding box
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>centre</CODE> - the centre coordinate of the shape</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setNumPoints(int)"><!-- --></A><H3>
+setNumPoints</H3>
+<PRE>
+public void <B>setNumPoints</B>(int&nbsp;nPts)</PRE>
+<DL>
+<DD>Sets the total number of points in the created <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+ The created geometry will have no more than this number of points,
+ unless more are needed to create a valid geometry.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setSize(double)"><!-- --></A><H3>
+setSize</H3>
+<PRE>
+public void <B>setSize</B>(double&nbsp;size)</PRE>
+<DL>
+<DD>Sets the size of the extent of the shape in both x and y directions.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>size</CODE> - the size of the shape's extent</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setWidth(double)"><!-- --></A><H3>
+setWidth</H3>
+<PRE>
+public void <B>setWidth</B>(double&nbsp;width)</PRE>
+<DL>
+<DD>Sets the width of the shape.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>width</CODE> - the width of the shape</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setHeight(double)"><!-- --></A><H3>
+setHeight</H3>
+<PRE>
+public void <B>setHeight</B>(double&nbsp;height)</PRE>
+<DL>
+<DD>Sets the height of the shape.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>height</CODE> - the height of the shape</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createRectangle()"><!-- --></A><H3>
+createRectangle</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A> <B>createRectangle</B>()</PRE>
+<DL>
+<DD>Creates a rectangular <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a rectangular Polygon</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createCircle()"><!-- --></A><H3>
+createCircle</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A> <B>createCircle</B>()</PRE>
+<DL>
+<DD>Creates a circular <A HREF="../../../../com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a circle</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createArc(double, double)"><!-- --></A><H3>
+createArc</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> <B>createArc</B>(double&nbsp;startAng,
+                            double&nbsp;endAng)</PRE>
+<DL>
+<DD>Creates a elliptical arc, as a LineString.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>an elliptical arc</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometricShapeFactory.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Stopwatch.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Stopwatch.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/Stopwatch.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,354 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Stopwatch
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.Stopwatch class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Stopwatch";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Stopwatch.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class Stopwatch</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.Stopwatch</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Stopwatch</B><DT>extends java.lang.Object</DL>
+
+<P>
+Implements a timer function which can compute
+ elapsed time as well as split times.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#Stopwatch()">Stopwatch</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#getTime()">getTime</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#getTimeString()">getTimeString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#reset()">reset</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#split()">split</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#start()">start</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html#stop()">stop</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Stopwatch()"><!-- --></A><H3>
+Stopwatch</H3>
+<PRE>
+public <B>Stopwatch</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="start()"><!-- --></A><H3>
+start</H3>
+<PRE>
+public void <B>start</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="stop()"><!-- --></A><H3>
+stop</H3>
+<PRE>
+public long <B>stop</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reset()"><!-- --></A><H3>
+reset</H3>
+<PRE>
+public void <B>reset</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="split()"><!-- --></A><H3>
+split</H3>
+<PRE>
+public long <B>split</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTime()"><!-- --></A><H3>
+getTime</H3>
+<PRE>
+public long <B>getTime</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTimeString()"><!-- --></A><H3>
+getTimeString</H3>
+<PRE>
+public java.lang.String <B>getTimeString</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Stopwatch.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,293 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+UniqueCoordinateArrayFilter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util.UniqueCoordinateArrayFilter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="UniqueCoordinateArrayFilter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="UniqueCoordinateArrayFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.util</FONT>
+<BR>
+Class UniqueCoordinateArrayFilter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.util.UniqueCoordinateArrayFilter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>UniqueCoordinateArrayFilter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></DL>
+
+<P>
+A <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that builds a set of <code>Coordinate</code>s.
+  The set of coordinates contains no duplicate points.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>1.7</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html#UniqueCoordinateArrayFilter()">UniqueCoordinateArrayFilter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Performs an operation with or on <code>coord</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html#getCoordinates()">getCoordinates</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the gathered <code>Coordinate</code>s.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="UniqueCoordinateArrayFilter()"><!-- --></A><H3>
+UniqueCoordinateArrayFilter</H3>
+<PRE>
+public <B>UniqueCoordinateArrayFilter</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getCoordinates()"><!-- --></A><H3>
+getCoordinates</H3>
+<PRE>
+public <A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>getCoordinates</B>()</PRE>
+<DL>
+<DD>Returns the gathered <code>Coordinate</code>s.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the <code>Coordinate</code>s collected by this <code>CoordinateArrayFilter</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="filter(com.vividsolutions.jts.geom.Coordinate)"><!-- --></A><H3>
+filter</H3>
+<PRE>
+public void <B>filter</B>(<A HREF="../../../../com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>&nbsp;coord)</PRE>
+<DL>
+<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></CODE></B></DD>
+<DD>Performs an operation with or on <code>coord</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)">filter</A></CODE> in interface <CODE><A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>coord</CODE> - a <code>Coordinate</code> to which the filter is applied.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="UniqueCoordinateArrayFilter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.util
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../com/vividsolutions/jts/util/package-summary.html" target="classFrame">com.vividsolutions.jts.util</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util" target="classFrame"><I>CollectionUtil.Function</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Assert.html" title="class in com.vividsolutions.jts.util" target="classFrame">Assert</A>
+<BR>
+<A HREF="CollectionUtil.html" title="class in com.vividsolutions.jts.util" target="classFrame">CollectionUtil</A>
+<BR>
+<A HREF="CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util" target="classFrame">CoordinateArrayFilter</A>
+<BR>
+<A HREF="CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util" target="classFrame">CoordinateCountFilter</A>
+<BR>
+<A HREF="Debug.html" title="class in com.vividsolutions.jts.util" target="classFrame">Debug</A>
+<BR>
+<A HREF="GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util" target="classFrame">GeometricShapeFactory</A>
+<BR>
+<A HREF="Stopwatch.html" title="class in com.vividsolutions.jts.util" target="classFrame">Stopwatch</A>
+<BR>
+<A HREF="UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util" target="classFrame">UniqueCoordinateArrayFilter</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="AssertionFailedException.html" title="class in com.vividsolutions.jts.util" target="classFrame">AssertionFailedException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.util
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.util package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.util";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.util
+</H2>
+Contains support classes for the Java Topology Suite.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A></B></TD>
+<TD>A utility for making programming assertions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A></B></TD>
+<TD>Executes a transformation function on each element of a collection
+ and returns the results in a new List.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that creates an array containing every
+  coordinate in a <A HREF="../../../../com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that counts the total number of coordinates
+  in a <code>Geometry</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A></B></TD>
+<TD>Provides routines to simplify and localize debugging output.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A></B></TD>
+<TD>Computes various kinds of common geometric shapes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A></B></TD>
+<TD>Implements a timer function which can compute
+ elapsed time as well as split times.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A></B></TD>
+<TD>A <A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that builds a set of <code>Coordinate</code>s.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A></B></TD>
+<TD>Thrown when the application is in an inconsistent state.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.util Description
+</H2>
+
+<P>
+Contains support classes for the Java Topology Suite.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/com/vividsolutions/jts/util/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:49 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.util Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.util Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.util
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util"><B>Assert</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>CollectionUtil</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>CoordinateArrayFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>CoordinateCountFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>Debug</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>GeometricShapeFactory</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>Stopwatch</B></A><LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class java.lang.RuntimeException<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util"><B>AssertionFailedException</B></A></UL>
+</UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>UniqueCoordinateArrayFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="../../../../com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>)
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.util.<A HREF="../../../../com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util"><B>CollectionUtil.Function</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../com/vividsolutions/jts/simplify/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/constant-values.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/constant-values.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/constant-values.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,890 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:46 PST 2006 -->
+<TITLE>
+Constant Field Values
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Constant Field Values";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Constant Field Values</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+<LI><A HREF="#com.vividsolutions">com.vividsolutions.*</A>
+</UL>
+
+<A NAME="com.vividsolutions"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD ALIGN="left"><FONT SIZE="+2">
+<B>com.vividsolutions.*</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.JTSVersion.MAJOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/JTSVersion.html#MAJOR">MAJOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.JTSVersion.MINOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/JTSVersion.html#MINOR">MINOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>8</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.JTSVersion.PATCH"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/JTSVersion.html#PATCH">PATCH</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.Angle.CLOCKWISE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/Angle.html#CLOCKWISE">CLOCKWISE</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.Angle.COUNTERCLOCKWISE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/Angle.html#COUNTERCLOCKWISE">COUNTERCLOCKWISE</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.Angle.NONE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/Angle.html#NONE">NONE</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.Angle.PI_OVER_2"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;double</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/Angle.html#PI_OVER_2">PI_OVER_2</A></CODE></TD>
+<TD ALIGN="right"><CODE>1.5707963267948966d</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.Angle.PI_OVER_4"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;double</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/Angle.html#PI_OVER_4">PI_OVER_4</A></CODE></TD>
+<TD ALIGN="right"><CODE>0.7853981633974483d</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.Angle.PI_TIMES_2"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;double</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/Angle.html#PI_TIMES_2">PI_TIMES_2</A></CODE></TD>
+<TD ALIGN="right"><CODE>6.283185307179586d</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.CGAlgorithms.CLOCKWISE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#CLOCKWISE">CLOCKWISE</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.CGAlgorithms.COLLINEAR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#COLLINEAR">COLLINEAR</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.CGAlgorithms.COUNTERCLOCKWISE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#COUNTERCLOCKWISE">COUNTERCLOCKWISE</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.CGAlgorithms.LEFT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#LEFT">LEFT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.CGAlgorithms.RIGHT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#RIGHT">RIGHT</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.CGAlgorithms.STRAIGHT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#STRAIGHT">STRAIGHT</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.LineIntersector.COLLINEAR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#COLLINEAR">COLLINEAR</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.LineIntersector.DO_INTERSECT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#DO_INTERSECT">DO_INTERSECT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.algorithm.LineIntersector.DONT_INTERSECT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#DONT_INTERSECT">DONT_INTERSECT</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.CoordinateSequence.M"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#M">M</A></CODE></TD>
+<TD ALIGN="right"><CODE>3</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.CoordinateSequence.X"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#X">X</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.CoordinateSequence.Y"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#Y">Y</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.CoordinateSequence.Z"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#Z">Z</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Dimension.A"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Dimension.html#A">A</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Dimension.DONTCARE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Dimension.html#DONTCARE">DONTCARE</A></CODE></TD>
+<TD ALIGN="right"><CODE>-3</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Dimension.FALSE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Dimension.html#FALSE">FALSE</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Dimension.L"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Dimension.html#L">L</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Dimension.P"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Dimension.html#P">P</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Dimension.TRUE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Dimension.html#TRUE">TRUE</A></CODE></TD>
+<TD ALIGN="right"><CODE>-2</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Location.BOUNDARY"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Location.html#BOUNDARY">BOUNDARY</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Location.EXTERIOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Location.html#EXTERIOR">EXTERIOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Location.INTERIOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Location.html#INTERIOR">INTERIOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.Location.NONE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/Location.html#NONE">NONE</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.PrecisionModel.maximumPreciseValue"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;double</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#maximumPreciseValue">maximumPreciseValue</A></CODE></TD>
+<TD ALIGN="right"><CODE>9.007199254740992E15d</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory.DOUBLE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#DOUBLE">DOUBLE</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geom.impl.PackedCoordinateSequenceFactory.FLOAT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#FLOAT">FLOAT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geomgraph.Position.LEFT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geomgraph/Position.html#LEFT">LEFT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geomgraph.Position.ON"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geomgraph/Position.html#ON">ON</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geomgraph.Position.RIGHT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geomgraph/Position.html#RIGHT">RIGHT</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geomgraph.index.SweepLineEvent.DELETE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#DELETE">DELETE</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.geomgraph.index.SweepLineEvent.INSERT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#INSERT">INSERT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.index.quadtree.DoubleBits.EXPONENT_BIAS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#EXPONENT_BIAS">EXPONENT_BIAS</A></CODE></TD>
+<TD ALIGN="right"><CODE>1023</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.index.quadtree.IntervalSize.MIN_BINARY_EXPONENT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html#MIN_BINARY_EXPONENT">MIN_BINARY_EXPONENT</A></CODE></TD>
+<TD ALIGN="right"><CODE>-50</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.index.sweepline.SweepLineEvent.DELETE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#DELETE">DELETE</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.index.sweepline.SweepLineEvent.INSERT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#INSERT">INSERT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.ByteOrderValues.BIG_ENDIAN"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#BIG_ENDIAN">BIG_ENDIAN</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.ByteOrderValues.LITTLE_ENDIAN"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#LITTLE_ENDIAN">LITTLE_ENDIAN</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbGeometryCollection"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbGeometryCollection">wkbGeometryCollection</A></CODE></TD>
+<TD ALIGN="right"><CODE>7</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbLineString"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbLineString">wkbLineString</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbMultiLineString"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbMultiLineString">wkbMultiLineString</A></CODE></TD>
+<TD ALIGN="right"><CODE>5</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbMultiPoint"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbMultiPoint">wkbMultiPoint</A></CODE></TD>
+<TD ALIGN="right"><CODE>4</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbMultiPolygon"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbMultiPolygon">wkbMultiPolygon</A></CODE></TD>
+<TD ALIGN="right"><CODE>6</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbNDR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbNDR">wkbNDR</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbPoint"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbPoint">wkbPoint</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbPolygon"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbPolygon">wkbPolygon</A></CODE></TD>
+<TD ALIGN="right"><CODE>3</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.WKBConstants.wkbXDR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbXDR">wkbXDR</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.noding.IteratedNoder.MAX_ITER"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html#MAX_ITER">MAX_ITER</A></CODE></TD>
+<TD ALIGN="right"><CODE>5</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.buffer.BufferOp.CAP_BUTT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_BUTT">CAP_BUTT</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.buffer.BufferOp.CAP_ROUND"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_ROUND">CAP_ROUND</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.buffer.BufferOp.CAP_SQUARE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_SQUARE">CAP_SQUARE</A></CODE></TD>
+<TD ALIGN="right"><CODE>3</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder.DEFAULT_QUADRANT_SEGMENTS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#DEFAULT_QUADRANT_SEGMENTS">DEFAULT_QUADRANT_SEGMENTS</A></CODE></TD>
+<TD ALIGN="right"><CODE>8</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.distance.GeometryLocation.INSIDE_AREA"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#INSIDE_AREA">INSIDE_AREA</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.overlay.OverlayOp.DIFFERENCE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#DIFFERENCE">DIFFERENCE</A></CODE></TD>
+<TD ALIGN="right"><CODE>3</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.overlay.OverlayOp.INTERSECTION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#INTERSECTION">INTERSECTION</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.overlay.OverlayOp.SYMDIFFERENCE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#SYMDIFFERENCE">SYMDIFFERENCE</A></CODE></TD>
+<TD ALIGN="right"><CODE>4</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.overlay.OverlayOp.UNION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#UNION">UNION</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.predicate.RectangleIntersects.MAXIMUM_SCAN_SEGMENT_COUNT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#MAXIMUM_SCAN_SEGMENT_COUNT">MAXIMUM_SCAN_SEGMENT_COUNT</A></CODE></TD>
+<TD ALIGN="right"><CODE>200</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.DISCONNECTED_INTERIOR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#DISCONNECTED_INTERIOR">DISCONNECTED_INTERIOR</A></CODE></TD>
+<TD ALIGN="right"><CODE>4</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.DUPLICATE_RINGS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#DUPLICATE_RINGS">DUPLICATE_RINGS</A></CODE></TD>
+<TD ALIGN="right"><CODE>8</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.ERROR"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#ERROR">ERROR</A></CODE></TD>
+<TD ALIGN="right"><CODE>0</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.HOLE_OUTSIDE_SHELL"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#HOLE_OUTSIDE_SHELL">HOLE_OUTSIDE_SHELL</A></CODE></TD>
+<TD ALIGN="right"><CODE>2</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.INVALID_COORDINATE"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#INVALID_COORDINATE">INVALID_COORDINATE</A></CODE></TD>
+<TD ALIGN="right"><CODE>10</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.NESTED_HOLES"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#NESTED_HOLES">NESTED_HOLES</A></CODE></TD>
+<TD ALIGN="right"><CODE>3</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.NESTED_SHELLS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#NESTED_SHELLS">NESTED_SHELLS</A></CODE></TD>
+<TD ALIGN="right"><CODE>7</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.REPEATED_POINT"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#REPEATED_POINT">REPEATED_POINT</A></CODE></TD>
+<TD ALIGN="right"><CODE>1</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.RING_NOT_CLOSED"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#RING_NOT_CLOSED">RING_NOT_CLOSED</A></CODE></TD>
+<TD ALIGN="right"><CODE>11</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.RING_SELF_INTERSECTION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#RING_SELF_INTERSECTION">RING_SELF_INTERSECTION</A></CODE></TD>
+<TD ALIGN="right"><CODE>6</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.SELF_INTERSECTION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#SELF_INTERSECTION">SELF_INTERSECTION</A></CODE></TD>
+<TD ALIGN="right"><CODE>5</CODE></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.operation.valid.TopologyValidationError.TOO_FEW_POINTS"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TOO_FEW_POINTS">TOO_FEW_POINTS</A></CODE></TD>
+<TD ALIGN="right"><CODE>9</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/deprecated-list.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/deprecated-list.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/deprecated-list.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+Deprecated List
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Deprecated List";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Deprecated Classes</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>no longer used</I>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Deprecated Fields</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#ERROR">com.vividsolutions.jts.operation.valid.TopologyValidationError.ERROR</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I></I>&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#REPEATED_POINT">com.vividsolutions.jts.operation.valid.TopologyValidationError.REPEATED_POINT</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I></I>&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Deprecated Methods</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getOffsetX()">com.vividsolutions.jts.geom.PrecisionModel.getOffsetX()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Offsets are no longer used</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getOffsetY()">com.vividsolutions.jts.geom.PrecisionModel.getOffsetY()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Offsets are no longer used</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.LineString)">com.vividsolutions.jts.operation.IsSimpleOp.isSimple(LineString)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use isSimple()</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.MultiLineString)">com.vividsolutions.jts.operation.IsSimpleOp.isSimple(MultiLineString)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use isSimple()</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.MultiPoint)">com.vividsolutions.jts.operation.IsSimpleOp.isSimple(MultiPoint)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use isSimple()</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/Envelope.html#overlaps(com.vividsolutions.jts.geom.Coordinate)">com.vividsolutions.jts.geom.Envelope.overlaps(Coordinate)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use #intersects instead.</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/Envelope.html#overlaps(double, double)">com.vividsolutions.jts.geom.Envelope.overlaps(double, double)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use #intersects instead.</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/Envelope.html#overlaps(com.vividsolutions.jts.geom.Envelope)">com.vividsolutions.jts.geom.Envelope.overlaps(Envelope)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use #intersects instead. In the future, #overlaps may be
+ changed to be a true overlap check; that is, whether the intersection is
+ two-dimensional.</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#setMakePrecise(com.vividsolutions.jts.geom.PrecisionModel)">com.vividsolutions.jts.algorithm.LineIntersector.setMakePrecise(PrecisionModel)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use <code>setPrecisionModel</code> instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toExternal(com.vividsolutions.jts.geom.Coordinate)">com.vividsolutions.jts.geom.PrecisionModel.toExternal(Coordinate)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>no longer needed, since internal representation is same as external representation</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toExternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">com.vividsolutions.jts.geom.PrecisionModel.toExternal(Coordinate, Coordinate)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>no longer needed, since internal representation is same as external representation</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toInternal(com.vividsolutions.jts.geom.Coordinate)">com.vividsolutions.jts.geom.PrecisionModel.toInternal(Coordinate)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use makePrecise instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toInternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)">com.vividsolutions.jts.geom.PrecisionModel.toInternal(Coordinate, Coordinate)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use makePrecise instead</I>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Deprecated Constructors</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.GeometryCollection(Geometry[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp()">com.vividsolutions.jts.operation.IsSimpleOp()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>use IsSimpleOp(Geometry)</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/LinearRing.html#LinearRing(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.LinearRing(Coordinate[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/LineString.html#LineString(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.LineString(Coordinate[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.MultiLineString(LineString[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.MultiPoint(Point[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.MultiPolygon(Polygon[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/Point.html#Point(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.Point(Coordinate, PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.Polygon(LinearRing, LinearRing[], PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.PrecisionModel, int)">com.vividsolutions.jts.geom.Polygon(LinearRing, PrecisionModel, int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use GeometryFactory instead</I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(double, double, double)">com.vividsolutions.jts.geom.PrecisionModel(double, double, double)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>offsets are no longer supported, since internal representation is rounded floating point</I>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/help-doc.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/help-doc.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/help-doc.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+API Help
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="API Help";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Overview</H3>
+<BLOCKQUOTE>
+
+<P>
+The <A HREF="overview-summary.html">Overview</A> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</BLOCKQUOTE>
+<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Exceptions<LI>Errors</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet.</EM>
+</FONT>
+<BR>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/index-all.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/index-all.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/index-all.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,7452 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:47 PST 2006 -->
+<TITLE>
+Index
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Index";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<A HREF="#_A_">A</A> <A HREF="#_B_">B</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_F_">F</A> <A HREF="#_G_">G</A> <A HREF="#_H_">H</A> <A HREF="#_I_">I</A> <A HREF="#_J_">J</A> <A HREF="#_K_">K</A> <A HREF="#_L_">L</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_P_">P</A> <A HREF="#_Q_">Q</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> <A HREF="#_W_">W</A> <A HREF="#_X_">X</A> <A HREF="#_Y_">Y</A> <A HREF="#_Z_">Z</A> <HR>
+<A NAME="_A_"><!-- --></A><H2>
+<B>A</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#A"><B>A</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Dimension value of a surface (2).
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree"><B>AbstractNode</B></A> - class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>.<DD>A node of the STR tree.<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html#AbstractNode(int)"><B>AbstractNode(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<DD>Constructs an AbstractNode at the given level in the tree
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>AbstractSTRtree</B></A> - class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>.<DD>Base class for STRtree and SIRtree.<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#AbstractSTRtree(int)"><B>AbstractSTRtree(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Constructs an AbstractSTRtree with the specified maximum number of child
+ nodes that a node may have
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><B>AbstractSTRtree.IntersectsOp</B></A> - interface com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A>.<DD>A test for intersection between two bounds, necessary because subclasses
+ of AbstractSTRtree have different implementations of bounds.<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><B>AffineTransformation</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>.<DD>Represents a affine transformation on the 2D Cartesian plane.<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation()"><B>AffineTransformation()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Constructs a new identity transformation
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(double[])"><B>AffineTransformation(double[])</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Constructs a new transformation whose 
+ matrix has the specified values.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(double, double, double, double, double, double)"><B>AffineTransformation(double, double, double, double, double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Constructs a new transformation whose 
+ matrix has the specified values.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(com.vividsolutions.jts.geom.util.AffineTransformation)"><B>AffineTransformation(AffineTransformation)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Constructs a transformation which is
+ a copy of the given one.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#AffineTransformation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>AffineTransformation(Coordinate, Coordinate, Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Constructs a transformation
+ which maps the given source
+ points into the given destination points.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>AffineTransformationBuilder</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformationBuilder</A>.<DD>Builds an <A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A> defined by three control points 
+ and their images under the transformation.<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html#AffineTransformationBuilder(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>AffineTransformationBuilder(Coordinate, Coordinate, Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformationBuilder</A>
+<DD>Constructs a new builder for
+ the transformation defined by the given 
+ set of control point mappings.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm"><B>Angle</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>.<DD>Utility functions for working with angles.<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#Angle()"><B>Angle()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index"><B>ArrayListVisitor</B></A> - class com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html#ArrayListVisitor()"><B>ArrayListVisitor()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util"><B>Assert</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>.<DD>A utility for making programming assertions.<DT><A HREF="com/vividsolutions/jts/util/Assert.html#Assert()"><B>Assert()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util"><B>AssertionFailedException</B></A> - exception com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A>.<DD>Thrown when the application is in an inconsistent state.<DT><A HREF="com/vividsolutions/jts/util/AssertionFailedException.html#AssertionFailedException()"><B>AssertionFailedException()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A>
+<DD>Creates an <code>AssertionFailedException</code>.
+<DT><A HREF="com/vividsolutions/jts/util/AssertionFailedException.html#AssertionFailedException(java.lang.String)"><B>AssertionFailedException(String)</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">AssertionFailedException</A>
+<DD>Creates a <code>AssertionFailedException</code> with the given detail
+  message.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A>
+<DD>Adds the area defined by a Geometry to the centroid total.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html#add(com.vividsolutions.jts.geom.Coordinate[])"><B>add(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A>
+<DD>Adds the area defined by an array of
+ coordinates.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A>
+<DD>Adds the linestring(s) defined by a Geometry to the centroid total.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html#add(com.vividsolutions.jts.geom.Coordinate[])"><B>add(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A>
+<DD>Adds the length defined by an array of coordinates.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A>
+<DD>Adds the point(s) defined by a Geometry to the centroid total.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html#add(com.vividsolutions.jts.geom.Coordinate)"><B>add(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A>
+<DD>Adds the length defined by an array of coordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#add(com.vividsolutions.jts.geom.Coordinate[], boolean, boolean)"><B>add(Coordinate[], boolean, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Add an array of coordinates
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#add(com.vividsolutions.jts.geom.Coordinate[], boolean)"><B>add(Coordinate[], boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Add an array of coordinates
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#add(java.lang.Object, boolean)"><B>add(Object, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Add a coordinate
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#add(com.vividsolutions.jts.geom.Coordinate, boolean)"><B>add(Coordinate, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Add a coordinate
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#add(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>add(IntersectionMatrix)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Adds one matrix to another.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#add(int, int, int)"><B>add(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#add(com.vividsolutions.jts.geomgraph.Label)"><B>add(Label)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#add(com.vividsolutions.jts.geom.Coordinate, int, double)"><B>add(Coordinate, int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>Adds an intersection into the list, if it isn't already there.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#add(com.vividsolutions.jts.geomgraph.Edge)"><B>add(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>Insert an edge unless it is already in the list
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>add(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>Add the edge to the list of edges at this node
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>add(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>Adds a node for the start point of this EdgeEnd
+ (if one does not already exist in this map).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#add(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>add(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#add(java.lang.Object)"><B>add(Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#add(java.lang.Object)"><B>add(Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html#add(com.vividsolutions.jts.index.sweepline.SweepLineInterval)"><B>add(SweepLineInterval)</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#add(com.vividsolutions.jts.geom.Coordinate)"><B>add(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>Adds a point to the current line.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#add(com.vividsolutions.jts.geom.Coordinate, boolean)"><B>add(Coordinate, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>Adds a point to the current line.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html#add(com.vividsolutions.jts.geom.Coordinate, int)"><B>add(Coordinate, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<DD>Adds an intersection into the list, if it isn't already there.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html#add(com.vividsolutions.jts.operation.linemerge.LineMergeDirectedEdge)"><B>add(LineMergeDirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge">EdgeString</A>
+<DD>Adds a directed edge which is known to form part of this line.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html#add(java.util.Collection)"><B>add(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A>
+<DD>Adds a collection of Geometries to be processed.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A>
+<DD>Adds a Geometry to be processed.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html#add(java.util.Collection)"><B>add(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<DD>Adds a <CODE>Collection</CODE> of <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s to be sequenced.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<DD>Adds a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to be sequenced.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#add(com.vividsolutions.jts.geomgraph.PlanarGraph)"><B>add(PlanarGraph)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>
+<DD>Add a complete graph.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#add(java.util.Collection, java.util.Collection)"><B>add(Collection, Collection)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>
+<DD>Add a set of edges and nodes, which form a graph.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>add(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Adds a <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> which is known to form part of this ring.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#add(java.util.Collection)"><B>add(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Add a collection of geometries to be polygonized.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Add a geometry to the linework to be polygonized.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#add(com.vividsolutions.jts.geom.LinearRing)"><B>add(LinearRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#add(com.vividsolutions.jts.geom.LinearRing)"><B>add(LinearRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#add(com.vividsolutions.jts.geom.LinearRing)"><B>add(LinearRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>add(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Adds a new member to this DirectedEdgeStar.
+<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html#add(com.vividsolutions.jts.planargraph.Node)"><B>add(Node)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<DD>Adds a node to the map, replacing any that is already at that location.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Node)"><B>add(Node)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Adds a node to the map, replacing any that is already at that location.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><B>add(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Adds the Edge and its DirectedEdges with this PlanarGraph.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#add(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>add(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Adds the Edge to this PlanarGraph; only subclasses can add DirectedEdges,
+ to ensure the edges added are of the right class.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#add(com.vividsolutions.jts.planargraph.Edge)"><B>add(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Adds an <A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> to the subgraph.
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#add(double)"><B>add(double)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html#add(com.vividsolutions.jts.geom.Geometry)"><B>add(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>
+<DD>Add a geometry to the set of geometries whose common bits are
+ being computed.
+<DT><A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html#add(com.vividsolutions.jts.simplify.TaggedLineString)"><B>add(TaggedLineString)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html#add(com.vividsolutions.jts.geom.LineSegment)"><B>add(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#addAll(java.util.Collection, boolean)"><B>addAll(Collection, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Add an array of coordinates
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#addAll(java.util.Collection)"><B>addAll(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItems(java.util.List)"><B>addAllItems(List)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItems(java.util.List)"><B>addAllItems(List)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)"><B>addAllItemsFromOverlapping(Interval, Collection)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#addAllItemsFromOverlapping(com.vividsolutions.jts.geom.Envelope, java.util.List)"><B>addAllItemsFromOverlapping(Envelope, List)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html#addChildBoundable(com.vividsolutions.jts.index.strtree.Boundable)"><B>addChildBoundable(Boundable)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<DD>Adds either an AbstractNode, or if this is a leaf node, a data object
+ (wrapped in an ItemBoundable)
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html#addCommonBits(com.vividsolutions.jts.geom.Geometry)"><B>addCommonBits(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>
+<DD>Adds the common coordinate bits back into a Geometry.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#addEdge(com.vividsolutions.jts.geomgraph.Edge)"><B>addEdge(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>Add an Edge computed externally.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html#addEdge(com.vividsolutions.jts.geom.LineString)"><B>addEdge(LineString)</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeGraph</A>
+<DD>Adds an Edge, DirectedEdges, and Nodes for the given LineString representation
+ of an edge.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#addEdges(java.util.List)"><B>addEdges(List)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>Add a set of edges to the graph.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html#addEdges(java.util.List)"><B>addEdges(List)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay">EdgeSetNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#addEndpoints()"><B>addEndpoints()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>Adds entries for the first and last points of the edge to the list
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#addHole(com.vividsolutions.jts.geomgraph.EdgeRing)"><B>addHole(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#addHole(com.vividsolutions.jts.geom.LinearRing)"><B>addHole(LinearRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Adds a hole to the polygon formed by this ring.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#addIntersection(com.vividsolutions.jts.algorithm.LineIntersector, int, int, int)"><B>addIntersection(LineIntersector, int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>Add an EdgeIntersection for intersection intIndex.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#addIntersection(com.vividsolutions.jts.algorithm.LineIntersector, int, int, int)"><B>addIntersection(LineIntersector, int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>Add an SegmentNode for intersection intIndex.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#addIntersection(com.vividsolutions.jts.geom.Coordinate, int)"><B>addIntersection(Coordinate, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#addIntersections(com.vividsolutions.jts.algorithm.LineIntersector, int, int)"><B>addIntersections(LineIntersector, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>Adds EdgeIntersections for one or both
+ intersections found for a segment of an edge to the edge intersection list.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#addIntersections(com.vividsolutions.jts.geomgraph.Edge, int, com.vividsolutions.jts.geomgraph.Edge, int)"><B>addIntersections(Edge, int, Edge, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>This method is called by clients of the EdgeIntersector class to test for and add
+ intersections for two segments of the edges being intersected.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#addIntersections(com.vividsolutions.jts.algorithm.LineIntersector, int, int)"><B>addIntersections(LineIntersector, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>Adds EdgeIntersections for one or both
+ intersections found for a segment of an edge to the edge intersection list.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#addNode(com.vividsolutions.jts.geom.Coordinate)"><B>addNode(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>This method expects that a node has a coordinate value.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#addNode(com.vividsolutions.jts.geomgraph.Node)"><B>addNode(Node)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#addNode(com.vividsolutions.jts.geomgraph.Node)"><B>addNode(Node)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#addNode(com.vividsolutions.jts.geom.Coordinate)"><B>addNode(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#addOutEdge(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>addOutEdge(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Adds an outgoing DirectedEdge to this Node.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#addPoint(com.vividsolutions.jts.geom.Coordinate)"><B>addPoint(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>Add a point computed externally.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#addPoints(com.vividsolutions.jts.geomgraph.Edge, boolean, boolean)"><B>addPoints(Edge, boolean, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html#addPolygon(com.vividsolutions.jts.geom.Geometry)"><B>addPolygon(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<DD>Finds a reasonable point at which to label a Geometry.
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#addSnappedNode(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)"><B>addSnappedNode(HotPixel, SegmentString, int)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>
+<DD>Adds a new node (equal to the snap pt) to the segment
+ if the segment passes through the hot pixel
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#addSplitEdges(java.util.List)"><B>addSplitEdges(List)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>Creates new edges for all the edges that the intersections in this
+ list split the parent edge into.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html#addSplitEdges(java.util.Collection)"><B>addSplitEdges(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<DD>Creates new edges for all the edges that the intersections in this
+ list split the parent edge into.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#addToResult(com.vividsolutions.jts.geom.LineSegment)"><B>addToResult(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#addWatch(java.lang.Object)"><B>addWatch(Object)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#allPositionsEqual(int, int)"><B>allPositionsEqual(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#allPositionsEqual(int)"><B>allPositionsEqual(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#angle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>angle(Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Returns the angle of the vector from p0 to p1,
+ relative to the positive X-axis.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#angle(com.vividsolutions.jts.geom.Coordinate)"><B>angle(Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Returns the angle that the vector from (0,0) to p,
+ relative to the positive X-axis.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#angle()"><B>angle()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the angle that the vector defined by this segment
+ makes with the X-axis.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#angle"><B>angle</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#angleBetween(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>angleBetween(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Returns the smallest angle between two vectors.
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#angleBisector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>angleBisector(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the point at which the bisector of the angle ABC
+ cuts the segment AC.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)"><B>apply(CoordinateFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Performs an operation with or on this <code>Geometry</code>'s
+  coordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><B>apply(CoordinateSequenceFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Performs an operation on the coordinates in this <code>Geometry</code>'s
+  <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryFilter)"><B>apply(GeometryFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Performs an operation with or on this <code>Geometry</code> and its
+  subelement <code>Geometry</code>s (if any).
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><B>apply(GeometryComponentFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Performs an operation with or on this Geometry and its
+  component Geometry's.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)"><B>apply(CoordinateFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><B>apply(CoordinateSequenceFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryFilter)"><B>apply(GeometryFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><B>apply(GeometryComponentFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)"><B>apply(CoordinateFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><B>apply(CoordinateSequenceFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.GeometryFilter)"><B>apply(GeometryFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><B>apply(GeometryComponentFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)"><B>apply(CoordinateFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><B>apply(CoordinateSequenceFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.GeometryFilter)"><B>apply(GeometryFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><B>apply(GeometryComponentFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.CoordinateFilter)"><B>apply(CoordinateFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.CoordinateSequenceFilter)"><B>apply(CoordinateSequenceFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.GeometryFilter)"><B>apply(GeometryFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#apply(com.vividsolutions.jts.geom.GeometryComponentFilter)"><B>apply(GeometryComponentFilter)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.html#apply(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)"><B>apply(Collection, CollectionUtil.Function)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A>
+<DD>Executes a function on each item in a Collection but does
+ not accumulate the result
+<DT><A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#applyTo(com.vividsolutions.jts.geom.Geometry)"><B>applyTo(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#area(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>area(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the area of a triangle.
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#arg"><B>arg</B></A> - 
+Variable in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>The operation args into an array so they can be accessed by index
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#asLineString()"><B>asLineString()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#asLinearRing()"><B>asLinearRing()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#atLeastNCoordinatesOrNothing(int, com.vividsolutions.jts.geom.Coordinate[])"><B>atLeastNCoordinatesOrNothing(int, Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Returns either the given coordinate array if its length is greater than the
+ given amount, or an empty coordinate array.
+</DL>
+<HR>
+<A NAME="_B_"><!-- --></A><H2>
+<B>B</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#BIG_ENDIAN"><B>BIG_ENDIAN</B></A> - 
+Static variable in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Location.html#BOUNDARY"><B>BOUNDARY</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<DD>DE-9IM row index of the boundary of the first geometry and column index of
+  the boundary of the second geometry.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><B>Bintree</B></A> - class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>.<DD>An <code>BinTree</code> (or "Binary Interval Tree")
+ is a 1-dimensional version of a quadtree.<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#Bintree()"><B>Bintree()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree"><B>Boundable</B></A> - interface com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>.<DD>A spatial object in an AbstractSTRtree.<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule</B></A> - interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>.<DD>An interface for rules which determine whether node points
+ which are in boundaries of lineal geometry components
+ are in the boundary of the parent geometry collection.<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.EndPointBoundaryNodeRule</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>.<DD>A <A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which specifies that any points which are endpoints
+ of lineal components are in the boundary of the
+ parent geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html#BoundaryNodeRule.EndPointBoundaryNodeRule()"><B>BoundaryNodeRule.EndPointBoundaryNodeRule()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.Mod2BoundaryNodeRule</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>.<DD>A <A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> specifies that points are in the
+ boundary of a lineal geometry iff
+ the point lies on the boundary of an odd number
+ of components.<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html#BoundaryNodeRule.Mod2BoundaryNodeRule()"><B>BoundaryNodeRule.Mod2BoundaryNodeRule()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>.<DD>A <A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency of exactly 1 are on the boundary.<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html#BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule()"><B>BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A>.<DD>A <A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A> which determines that only
+ endpoints with valency greater than 1 are on the boundary.<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html#BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule()"><B>BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation"><B>BoundaryOp</B></A> - class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation">BoundaryOp</A>.<DD>Computes the boundary of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/BoundaryOp.html#BoundaryOp(com.vividsolutions.jts.geom.Geometry)"><B>BoundaryOp(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation">BoundaryOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/BoundaryOp.html#BoundaryOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>BoundaryOp(Geometry, BoundaryNodeRule)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation">BoundaryOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferBuilder</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>.<DD>Builds the buffer geometry for a given input geometry and precision model.<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#BufferBuilder()"><B>BufferBuilder()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>Creates a new BufferBuilder
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferOp</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>.<DD>Computes the buffer of a geometry, for both positive and negative buffer distances.<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#BufferOp(com.vividsolutions.jts.geom.Geometry)"><B>BufferOp(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Initializes a buffer computation for the given geometry
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferSubgraph</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>.<DD>A connected subset of the graph of
+ <A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s and <A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Node</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#BufferSubgraph(com.vividsolutions.jts.algorithm.CGAlgorithms)"><B>BufferSubgraph(CGAlgorithms)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io"><B>ByteArrayInStream</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A>.<DD>Allows an array of bytes to be used as an <A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>.<DT><A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html#ByteArrayInStream(byte[])"><B>ByteArrayInStream(byte[])</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>ByteOrderDataInStream</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>.<DD>Allows reading a stream of Java primitive datatypes from an underlying
+ <A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A>,
+ with the representation being in either common byte ordering.<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#ByteOrderDataInStream()"><B>ByteOrderDataInStream()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#ByteOrderDataInStream(com.vividsolutions.jts.io.InStream)"><B>ByteOrderDataInStream(InStream)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>ByteOrderValues</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>.<DD>Methods to read and write primitive Java datatypes from/to byte
+ sequences, allowing the byte order to be specified
+ <DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#ByteOrderValues()"><B>ByteOrderValues()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#biasedExponent()"><B>biasedExponent()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>Determines the exponent for the number
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#boundablesAtLevel(int)"><B>boundablesAtLevel(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#buffer(double)"><B>buffer(double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes a buffer area around this geometry having the given
+ width.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#buffer(double, int)"><B>buffer(double, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes a buffer area around this geometry having the given
+ width and with a specified accuracy of approximation for circular arcs.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#buffer(double, int, int)"><B>buffer(double, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes a buffer area around this geometry having the given
+ width and with a specified accuracy of approximation for circular arcs,
+ and using a specified end cap style.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#buffer(com.vividsolutions.jts.geom.Geometry, double)"><B>buffer(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#buffer(com.vividsolutions.jts.geom.Geometry, double)"><B>buffer(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Computes the buffer a geometry,
+ using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#buffer(com.vividsolutions.jts.geom.Geometry, double)"><B>buffer(Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<DD>Computes the buffer of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#bufferOp(com.vividsolutions.jts.geom.Geometry, double)"><B>bufferOp(Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Computes the buffer of a geometry for a given buffer distance.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#bufferOp(com.vividsolutions.jts.geom.Geometry, double, int)"><B>bufferOp(Geometry, double, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Comutes the buffer for a geometry for a given buffer distance
+ and accuracy of approximation.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#bufferOp(com.vividsolutions.jts.geom.Geometry, double, int, int)"><B>bufferOp(Geometry, double, int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Comutes the buffer for a geometry for a given buffer distance
+ and accuracy of approximation.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#build()"><B>build()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Creates parent nodes, grandparent nodes, and so forth up to the root
+ node, for the data that has been inserted into the tree.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html#build(int)"><B>build(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">LineBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html#build(int)"><B>build(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PointBuilder</A>
+<DD>Computes the Point geometries which will appear in the result,
+ given the specified overlay operation.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#build(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>build(GeometryGraph)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#buildGeometry(java.util.Collection)"><B>buildGeometry(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Build an appropriate <code>Geometry</code>, <code>MultiGeometry</code>, or
+  <code>GeometryCollection</code> to contain the <code>Geometry</code>s in
+  it.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#buildMinimalRings()"><B>buildMinimalRings()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html#bytesToHex(byte[])"><B>bytesToHex(byte[])</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_C_"><!-- --></A><H2>
+<B>C</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_BUTT"><B>CAP_BUTT</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Specifies a butt (or flat) line buffer end cap style.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_ROUND"><B>CAP_ROUND</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Specifies a round line buffer end cap style.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#CAP_SQUARE"><B>CAP_SQUARE</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Specifies a square line buffer end cap style.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>CGAlgorithms</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>.<DD>Specifies and implements various fundamental Computational Geometric algorithms.<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#CGAlgorithms()"><B>CGAlgorithms()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#CLOCKWISE"><B>CLOCKWISE</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Constant representing clockwise orientation
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#CLOCKWISE"><B>CLOCKWISE</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>A value that indicates an orientation of clockwise, or a right turn.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#COLLINEAR"><B>COLLINEAR</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>A value that indicates an orientation of collinear, or no turn (straight).
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#COLLINEAR"><B>COLLINEAR</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#COUNTERCLOCKWISE"><B>COUNTERCLOCKWISE</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Constant representing counterclockwise orientation
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#COUNTERCLOCKWISE"><B>COUNTERCLOCKWISE</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>A value that indicates an orientation of counterclockwise, or a left turn.
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#CURRENT_VERSION"><B>CURRENT_VERSION</B></A> - 
+Static variable in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>The current version number of the JTS API.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>CentralEndpointIntersector</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm">CentralEndpointIntersector</A>.<DD>Computes an approximate intersection of two line segments
+ by taking the most central of the endpoints of the segments.<DT><A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html#CentralEndpointIntersector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>CentralEndpointIntersector(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm">CentralEndpointIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidArea</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A>.<DD>Computes the centroid of an area geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html#CentroidArea()"><B>CentroidArea()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidLine</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A>.<DD>Computes the centroid of a linear geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html#CentroidLine()"><B>CentroidLine()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidPoint</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A>.<DD>Computes the centroid of a point geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html#CentroidPoint()"><B>CentroidPoint()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>CollectionUtil</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A>.<DD>Executes a transformation function on each element of a collection
+ and returns the results in a new List.<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.html#CollectionUtil()"><B>CollectionUtil()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util"><B>CollectionUtil.Function</B></A> - interface com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision"><B>CommonBits</B></A> - class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>.<DD>Determines the maximum number of common most-significant
+ bits in the mantissa of one or numbers.<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#CommonBits()"><B>CommonBits()</B></A> - 
+Constructor for class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>CommonBitsOp</B></A> - class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>.<DD>Provides versions of Geometry spatial functions which use
+ common bit removal to reduce the likelihood of robustness problems.<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#CommonBitsOp()"><B>CommonBitsOp()</B></A> - 
+Constructor for class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Creates a new instance of class, which reshifts result <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#CommonBitsOp(boolean)"><B>CommonBitsOp(boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Creates a new instance of class, specifying whether
+ the result <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s should be reshifted.
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>CommonBitsRemover</B></A> - class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>.<DD>Allow computing and removing common mantissa bits from one or more Geometries.<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html#CommonBitsRemover()"><B>CommonBitsRemover()</B></A> - 
+Constructor for class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>ConnectedElementLocationFilter</B></A> - class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementLocationFilter</A>.<DD>A ConnectedElementPointFilter extracts a single point
+ from each connected element in a Geometry
+ (e.g.<DT><A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>ConnectedElementPointFilter</B></A> - class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementPointFilter</A>.<DD>Extracts a single point
+ from each connected element in a Geometry
+ (e.g.<DT><A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>ConnectedInteriorTester</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>.<DD>This class tests that the interior of an area <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ ( <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>  or <A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ is connected.<DT><A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#ConnectedInteriorTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>ConnectedInteriorTester(GeometryGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm"><B>ConnectedSubgraphFinder</B></A> - class com.vividsolutions.jts.planargraph.algorithm.<A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm">ConnectedSubgraphFinder</A>.<DD>Finds all connected <A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Subgraph</CODE></A>s of a <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html#ConnectedSubgraphFinder(com.vividsolutions.jts.planargraph.PlanarGraph)"><B>ConnectedSubgraphFinder(PlanarGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.algorithm.<A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm">ConnectedSubgraphFinder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>ConsistentAreaTester</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A>.<DD>Checks that a <A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A> representing an area
+ (a <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> or <A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPolygon</CODE></A> )
+ has consistent semantics for area geometries.<DT><A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#ConsistentAreaTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>ConsistentAreaTester(GeometryGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A>
+<DD>Creates a new tester for consistent areas.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay"><B>ConsistentPolygonRingChecker</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay">ConsistentPolygonRingChecker</A>.<DD>Tests whether the polygon rings in a <A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A>
+ are consistent.<DT><A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html#ConsistentPolygonRingChecker(com.vividsolutions.jts.geomgraph.PlanarGraph)"><B>ConsistentPolygonRingChecker(PlanarGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay">ConsistentPolygonRingChecker</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>ConvexHull</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A>.<DD>Computes the convex hull of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html#ConvexHull(com.vividsolutions.jts.geom.Geometry)"><B>ConvexHull(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A>
+<DD>Create a new convex hull construction for the input <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html#ConvexHull(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.GeometryFactory)"><B>ConvexHull(Coordinate[], GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A>
+<DD>Create a new convex hull construction for the input <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><B>Coordinate</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>.<DD>A lightweight class used to store coordinates
+ on the 2-dimensional Cartesian plane.<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#Coordinate(double, double, double)"><B>Coordinate(double, double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Constructs a <code>Coordinate</code> at (x,y,z).
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#Coordinate()"><B>Coordinate()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Constructs a <code>Coordinate</code> at (0,0,NaN).
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#Coordinate(com.vividsolutions.jts.geom.Coordinate)"><B>Coordinate(Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Constructs a <code>Coordinate</code> having the same (x,y,z) values as
+  <code>other</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#Coordinate(double, double)"><B>Coordinate(double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Constructs a <code>Coordinate</code> at (x,y,NaN).
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>Coordinate.DimensionalComparator</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A>.<DD>Compares two <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, allowing for either a 2-dimensional
+ or 3-dimensional comparison, and handling NaN values correctly.<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#Coordinate.DimensionalComparator()"><B>Coordinate.DimensionalComparator()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A>
+<DD>Creates a comparator for 2 dimensional coordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#Coordinate.DimensionalComparator(int)"><B>Coordinate.DimensionalComparator(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A>
+<DD>Creates a comparator for 2 or 3 dimensional coordinates, depending
+ on the value provided.
+<DT><A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>CoordinateArrayFilter</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A>.<DD>A <A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that creates an array containing every
+  coordinate in a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html#CoordinateArrayFilter(int)"><B>CoordinateArrayFilter(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A>
+<DD>Constructs a <code>CoordinateArrayFilter</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>CoordinateArraySequence</B></A> - class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>.<DD>The <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation that <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s use by default.<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#CoordinateArraySequence(com.vividsolutions.jts.geom.Coordinate[])"><B>CoordinateArraySequence(Coordinate[])</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Constructs a sequence based on the given array (the
+ array is not copied).
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#CoordinateArraySequence(int)"><B>CoordinateArraySequence(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Constructs a sequence of a given size, populated
+ with new <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#CoordinateArraySequence(com.vividsolutions.jts.geom.CoordinateSequence)"><B>CoordinateArraySequence(CoordinateSequence)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Constructs a sequence based on the given array (the
+ array is not copied).
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>CoordinateArraySequenceFactory</B></A> - class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>.<DD>Creates <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s represented as an array of <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>.<DD>Useful utility functions for handling Coordinate arrays<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#CoordinateArrays()"><B>CoordinateArrays()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays.BidirectionalComparator</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A>.<DD>A <CODE>Comparator</CODE> for <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ modulo their directionality.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html#CoordinateArrays.BidirectionalComparator()"><B>CoordinateArrays.BidirectionalComparator()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays.ForwardComparator</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.ForwardComparator</A>.<DD>A <CODE>Comparator</CODE> for <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html#CoordinateArrays.ForwardComparator()"><B>CoordinateArrays.ForwardComparator()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.ForwardComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>CoordinateCountFilter</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A>.<DD>A <A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that counts the total number of coordinates
+  in a <code>Geometry</code>.<DT><A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html#CoordinateCountFilter()"><B>CoordinateCountFilter()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateFilter</B></A> - interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>.<DD><code>Geometry</code> classes support the concept of applying a
+  coordinate filter to every coordinate in the <code>Geometry</code>.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateList</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>.<DD>A list of <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s, which may
+ be set to prevent repeated coordinates from occuring in the list.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#CoordinateList()"><B>CoordinateList()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Constructs a new list without any coordinates
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#CoordinateList(com.vividsolutions.jts.geom.Coordinate[])"><B>CoordinateList(Coordinate[])</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>The basic constructor for a CoordinateArray allows repeated points
+ (i.e produces a CoordinateList with exactly the same set of points)
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#CoordinateList(com.vividsolutions.jts.geom.Coordinate[], boolean)"><B>CoordinateList(Coordinate[], boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Constructs a new list from an array of Coordinates,
+ allowing caller to specify if repeated points are to be removed.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequence</B></A> - interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>.<DD>The internal representation of a list of coordinates inside a Geometry.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateSequenceComparator</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>.<DD>Compares two <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#CoordinateSequenceComparator()"><B>CoordinateSequenceComparator()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<DD>Creates a comparator which will test all dimensions.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#CoordinateSequenceComparator(int)"><B>CoordinateSequenceComparator(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<DD>Creates a comparator which will test only the specified number of dimensions.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequenceFactory</B></A> - interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>.<DD>A factory to create concrete instances of <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequenceFilter</B></A> - interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>.<DD>Interface for classeswhich provide operations that
+  can be applied to the coordinates in a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateSequences</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom">CoordinateSequences</A>.<DD>Utility functions for manipulating <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html#CoordinateSequences()"><B>CoordinateSequences()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom">CoordinateSequences</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html#centre(com.vividsolutions.jts.geom.Envelope)"><B>centre(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<DD>Returns the centre point of the envelope.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#centre()"><B>centre()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Computes the coordinate of the centre of this envelope (as long as it is non-null
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#centroid(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>centroid(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the centroid (centre of mass) of a triangle.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#cga"><B>cga</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#cga"><B>cga</B></A> - 
+Static variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#cga"><B>cga</B></A> - 
+Variable in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#cga"><B>cga</B></A> - 
+Static variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html#check(int)"><B>check(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay">ConsistentPolygonRingChecker</A>
+<DD>Tests whether the result geometry is consistent
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html#checkAll()"><B>checkAll()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay">ConsistentPolygonRingChecker</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#checkNotGeometryCollection(com.vividsolutions.jts.geom.Geometry)"><B>checkNotGeometryCollection(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Throws an exception if <code>g</code>'s class is <code>GeometryCollection</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html#checkValid()"><B>checkValid()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph">EdgeNodingValidator</A>
+<DD>Checks whether the supplied edges
+ are correctly noded.
+<DT><A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html#checkValid()"><B>checkValid()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A>
+<DD>Checks for an intersection and throws
+ a TopologyException if one is found.
+<DT><A HREF="com/vividsolutions/jts/noding/NodingValidator.html#checkValid()"><B>checkValid()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding">NodingValidator</A>
+<DD>Checks whether the supplied segment strings
+ are correctly noded.
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#circumcentre(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>circumcentre(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the circumcentre of a triangle.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#clamp(com.vividsolutions.jts.geom.Geometry)"><B>clamp(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Ensures the indexes are valid for a given linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#clampIndex(double)"><B>clampIndex(double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Computes a valid index for this line
+ by clamping the given index to the valid range of index values
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#clampIndex(com.vividsolutions.jts.linearref.LinearLocation)"><B>clampIndex(LinearLocation)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Computes a valid index for this line
+ by clamping the given index to the valid range of index values
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Returns a deep copy of this <tt>CoordinateList</tt> instance.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#clone()"><B>clone()</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns a deep copy of this collection.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Creates and returns a full copy of this <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> object
+ (including all coordinates contained by it).
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>Creates and returns a full copy of this <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A> object.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>Creates and returns a full copy of this <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> object.
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>Creates and returns a full copy of this <A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A> object.
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>Creates and returns a full copy of this <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> object.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Creates a deep copy of the Object
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Clones this transformation
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#clone()"><B>clone()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Copies this location
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#closeRing()"><B>closeRing()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Ensure this coordList is a ring, by adding the start point if necessary
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#closestLocations()"><B>closestLocations()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Report the locations of the closest points in the input geometries.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#closestPoint(com.vividsolutions.jts.geom.Coordinate)"><B>closestPoint(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the closest point on this line segment to another point.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#closestPoints(com.vividsolutions.jts.geom.LineSegment)"><B>closestPoints(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the closest points on two line segments.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#closestPoints(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>closestPoints(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Compute the the closest points of two geometries.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#closestPoints()"><B>closestPoints()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Report the coordinates of the closest points in the input geometries.
+<DT><A HREF="com/vividsolutions/jts/package-summary.html"><B>com.vividsolutions.jts</B></A> - package com.vividsolutions.jts<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/algorithm/package-summary.html"><B>com.vividsolutions.jts.algorithm</B></A> - package com.vividsolutions.jts.algorithm<DD>Contains classes and interfaces implementing fundamental computational geometry algorithms.<DT><A HREF="com/vividsolutions/jts/geom/package-summary.html"><B>com.vividsolutions.jts.geom</B></A> - package com.vividsolutions.jts.geom<DD>Contains the <CODE>Geometry</CODE> interface hierarchy and supporting classes.<DT><A HREF="com/vividsolutions/jts/geom/impl/package-summary.html"><B>com.vividsolutions.jts.geom.impl</B></A> - package com.vividsolutions.jts.geom.impl<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geom/util/package-summary.html"><B>com.vividsolutions.jts.geom.util</B></A> - package com.vividsolutions.jts.geom.util<DD>Provides classes that parse and modify Geometry objects.<DT><A HREF="com/vividsolutions/jts/geomgraph/package-summary.html"><B>com.vividsolutions.jts.geomgraph</B></A> - package com.vividsolutions.jts.geomgraph<DD>Contains classes that implement topology graphs.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/package-summary.html"><B>com.vividsolutions.jts.geomgraph.index</B></A> - package com.vividsolutions.jts.geomgraph.index<DD>Contains classes that implement indexes for performing noding on geometry graph edges.<DT><A HREF="com/vividsolutions/jts/index/package-summary.html"><B>com.vividsolutions.jts.index</B></A> - package com.vividsolutions.jts.index<DD>Provides classes for various kinds of spatial indexes.<DT><A HREF="com/vividsolutions/jts/index/bintree/package-summary.html"><B>com.vividsolutions.jts.index.bintree</B></A> - package com.vividsolutions.jts.index.bintree<DD>Contains classes that implement a Binary Interval Tree index<DT><A HREF="com/vividsolutions/jts/index/chain/package-summary.html"><B>com.vividsolutions.jts.index.chain</B></A> - package com.vividsolutions.jts.index.chain<DD>Contains classes that implement Monotone Chains<DT><A HREF="com/vividsolutions/jts/index/quadtree/package-summary.html"><B>com.vividsolutions.jts.index.quadtree</B></A> - package com.vividsolutions.jts.index.quadtree<DD>Contains classes that implement a Quadtree spatial index<DT><A HREF="com/vividsolutions/jts/index/strtree/package-summary.html"><B>com.vividsolutions.jts.index.strtree</B></A> - package com.vividsolutions.jts.index.strtree<DD>Contains 2-D and 1-D versions of the Sort-Tile-Recursive (STR) tree, a query-only R-tree.<DT><A HREF="com/vividsolutions/jts/index/sweepline/package-summary.html"><B>com.vividsolutions.jts.index.sweepline</B></A> - package com.vividsolutions.jts.index.sweepline<DD>Contains classes which implement a sweepline algorithm for scanning geometric data structures.<DT><A HREF="com/vividsolutions/jts/io/package-summary.html"><B>com.vividsolutions.jts.io</B></A> - package com.vividsolutions.jts.io<DD>Contains the interfaces for converting JTS objects to and from other formats.<DT><A HREF="com/vividsolutions/jts/linearref/package-summary.html"><B>com.vividsolutions.jts.linearref</B></A> - package com.vividsolutions.jts.linearref<DD>Contains classes and interfaces implementing linear referencing on linear geometries
+
+<DT><A HREF="com/vividsolutions/jts/noding/package-summary.html"><B>com.vividsolutions.jts.noding</B></A> - package com.vividsolutions.jts.noding<DD>Classes to compute nodings for arrangements of line segments and line segment sequences.<DT><A HREF="com/vividsolutions/jts/noding/snapround/package-summary.html"><B>com.vividsolutions.jts.noding.snapround</B></A> - package com.vividsolutions.jts.noding.snapround<DD>Contains classes to implement the Snap Rounding algorithm for noding linestrings.<DT><A HREF="com/vividsolutions/jts/operation/package-summary.html"><B>com.vividsolutions.jts.operation</B></A> - package com.vividsolutions.jts.operation<DD>Provides classes for implementing operations on geometries<DT><A HREF="com/vividsolutions/jts/operation/buffer/package-summary.html"><B>com.vividsolutions.jts.operation.buffer</B></A> - package com.vividsolutions.jts.operation.buffer<DD>Provides classes for computing buffers of geometries<DT><A HREF="com/vividsolutions/jts/operation/distance/package-summary.html"><B>com.vividsolutions.jts.operation.distance</B></A> - package com.vividsolutions.jts.operation.distance<DD>Provides classes for computing the distance between geometries<DT><A HREF="com/vividsolutions/jts/operation/linemerge/package-summary.html"><B>com.vividsolutions.jts.operation.linemerge</B></A> - package com.vividsolutions.jts.operation.linemerge<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/operation/overlay/package-summary.html"><B>com.vividsolutions.jts.operation.overlay</B></A> - package com.vividsolutions.jts.operation.overlay<DD>Contains classes that perform a topological overlay to compute boolean spatial functions.<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/package-summary.html"><B>com.vividsolutions.jts.operation.overlay.snap</B></A> - package com.vividsolutions.jts.operation.overlay.snap<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/package-summary.html"><B>com.vividsolutions.jts.operation.overlay.validate</B></A> - package com.vividsolutions.jts.operation.overlay.validate<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/operation/polygonize/package-summary.html"><B>com.vividsolutions.jts.operation.polygonize</B></A> - package com.vividsolutions.jts.operation.polygonize<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/operation/predicate/package-summary.html"><B>com.vividsolutions.jts.operation.predicate</B></A> - package com.vividsolutions.jts.operation.predicate<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/operation/relate/package-summary.html"><B>com.vividsolutions.jts.operation.relate</B></A> - package com.vividsolutions.jts.operation.relate<DD>Contains classes to implement the computation of the spatial relationships of <CODE>Geometry</CODE>s.<DT><A HREF="com/vividsolutions/jts/operation/valid/package-summary.html"><B>com.vividsolutions.jts.operation.valid</B></A> - package com.vividsolutions.jts.operation.valid<DD>Provides classes for testing the validity of geometries.<DT><A HREF="com/vividsolutions/jts/planargraph/package-summary.html"><B>com.vividsolutions.jts.planargraph</B></A> - package com.vividsolutions.jts.planargraph<DD>Contains classes to implement a planar graph data structure.<DT><A HREF="com/vividsolutions/jts/planargraph/algorithm/package-summary.html"><B>com.vividsolutions.jts.planargraph.algorithm</B></A> - package com.vividsolutions.jts.planargraph.algorithm<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/precision/package-summary.html"><B>com.vividsolutions.jts.precision</B></A> - package com.vividsolutions.jts.precision<DD>Provides classes for manipulating the precision model of Geometries<DT><A HREF="com/vividsolutions/jts/simplify/package-summary.html"><B>com.vividsolutions.jts.simplify</B></A> - package com.vividsolutions.jts.simplify<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/util/package-summary.html"><B>com.vividsolutions.jts.util</B></A> - package com.vividsolutions.jts.util<DD>Contains support classes for the Java Topology Suite.<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#commonHalfPlane(int, int)"><B>commonHalfPlane(int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>Returns the right-hand quadrant of the halfplane defined by the two quadrants,
+ or -1 if the quadrants are opposite, or the quadrant if they are identical.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#compare(double, double)"><B>compare(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A>
+<DD>Compare two <code>double</code>s, allowing for NaN values.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html#compare(java.lang.Object, java.lang.Object)"><B>compare(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom">Coordinate.DimensionalComparator</A>
+<DD>Compares two <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s along to the number of
+ dimensions specified.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html#compare(java.lang.Object, java.lang.Object)"><B>compare(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html#compare(java.lang.Object, java.lang.Object)"><B>compare(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.ForwardComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#compare(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><B>compare(Coordinate[], Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Compares two <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in the forward direction of their coordinates,
+ using lexicographic ordering.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#compare(double, double)"><B>compare(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<DD>Compare two <code>double</code>s, allowing for NaN values.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#compare(java.lang.Object, java.lang.Object)"><B>compare(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<DD>Compares two <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s for relative order.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#compare(java.util.Collection, java.util.Collection)"><B>compare(Collection, Collection)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the first non-zero result of <code>compareTo</code> encountered as
+  the two <code>Collection</code>s are iterated over.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#compare(int, double)"><B>compare(int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html#compare(int, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>compare(int, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding">SegmentPointComparator</A>
+<DD>Compares two <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s for their relative position along a segment
+ lying in the specified <A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><CODE>Octant</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#compareCoordinate(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.CoordinateSequence, int, int)"><B>compareCoordinate(CoordinateSequence, CoordinateSequence, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<DD>Compares the same coordinate of two <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s
+ along the given number of dimensions.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareDirection(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>compareDirection(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>Implements the total order relation:
+ 
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#compareDirection(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>compareDirection(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns 1 if this DirectedEdge has a greater angle with the
+ positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#compareDoubles(double, double)"><B>compareDoubles(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#compareLocationValues(int, int, double)"><B>compareLocationValues(int, int, double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Compares this object with the specified index values for order.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#compareLocationValues(int, int, double, int, int, double)"><B>compareLocationValues(int, int, double, int, int, double)</B></A> - 
+Static method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Compares two sets of location values for order.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Compares this <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> with the specified <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for order.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#compareTo(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><B>compareTo(Object, CoordinateSequenceComparator)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code>,
+ using the given <A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateSequenceComparator</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Compares this object with the specified object for order.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Compares this <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> object with the specified object for order.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>ProjectionEvents are ordered first by their x-value, and then by their eventType.
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>ProjectionEvents are ordered first by their x-value, and then by their eventType.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Compares this object with the specified object for order.
+<DT><A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding">OrientedCoordinateArray</A>
+<DD>Compares two <A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><CODE>OrientedCoordinateArray</CODE></A>s for their relative order
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>BufferSubgraphs are compared on the x-value of their rightmost Coordinate.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#compareTo(java.lang.Object)"><B>compareTo(Object)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns 1 if this DirectedEdge has a greater angle with the
+ positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object)"><B>compareToSameClass(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> having the same class.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><B>compareToSameClass(Object, CoordinateSequenceComparator)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns whether this <code>Geometry</code> is greater than, equal to,
+  or less than another <code>Geometry</code> of the same class.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object)"><B>compareToSameClass(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><B>compareToSameClass(Object, CoordinateSequenceComparator)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#compareToSameClass(java.lang.Object)"><B>compareToSameClass(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><B>compareToSameClass(Object, CoordinateSequenceComparator)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#compareToSameClass(java.lang.Object)"><B>compareToSameClass(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><B>compareToSameClass(Object, CoordinateSequenceComparator)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#compareToSameClass(java.lang.Object)"><B>compareToSameClass(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#compareToSameClass(java.lang.Object, com.vividsolutions.jts.geom.CoordinateSequenceComparator)"><B>compareToSameClass(Object, CoordinateSequenceComparator)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#compose(com.vividsolutions.jts.geom.util.AffineTransformation)"><B>compose(AffineTransformation)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Composes the given <A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A> 
+ with this transformation.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#composeBefore(com.vividsolutions.jts.geom.util.AffineTransformation)"><B>composeBefore(AffineTransformation)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Composes this transformation 
+ with the given <A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html#computeBounds()"><B>computeBounds()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<DD>Returns a representation of space that encloses this Boundable,
+ preferably not much bigger than this Boundable's boundary yet fast to
+ test for intersection with the bounds of other Boundables.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#computeDepth(int)"><B>computeDepth(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#computeDepths(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>computeDepths(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#computeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeEdgeDistance(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Computes the "edge distance" of an intersection point p along a segment.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html#computeEdgeEnds(java.util.Iterator)"><B>computeEdgeEnds(Iterator)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html#computeEdgeEnds(com.vividsolutions.jts.geomgraph.Edge, java.util.List)"><B>computeEdgeEnds(Edge, List)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBuilder</A>
+<DD>Creates stub edges for all the intersections in this
+ Edge (if any) and inserts them into the graph.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#computeEdgeIntersections(com.vividsolutions.jts.geomgraph.GeometryGraph, com.vividsolutions.jts.algorithm.LineIntersector, boolean)"><B>computeEdgeIntersections(GeometryGraph, LineIntersector, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#computeEnvelopeInternal()"><B>computeEnvelopeInternal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#computeEnvelopeInternal()"><B>computeEnvelopeInternal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#computeEnvelopeInternal()"><B>computeEnvelopeInternal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#computeEnvelopeInternal()"><B>computeEnvelopeInternal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#computeEnvelopeInternal()"><B>computeEnvelopeInternal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>computeIM(IntersectionMatrix)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>Update the IM with the contribution for this component.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>computeIM(IntersectionMatrix)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>compute the contribution to an IM for this component
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>computeIM(IntersectionMatrix)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>Basic nodes do not compute IMs
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html#computeIM()"><B>computeIM()</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate">RelateComputer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html#computeIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>computeIM(IntersectionMatrix)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate">RelateNode</A>
+<DD>Update the IM with the contribution for this component.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex()"><B>computeIntLineIndex()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntLineIndex(int)"><B>computeIntLineIndex(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersect(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersect(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html#computeIntersect(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersect(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersection(Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Compute the intersection of a point p and the line p1-p2.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersection(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Computes the intersection of the lines p1-p2 and p3-p4.
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersection(Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html#computeIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeIntersection(Coordinate, Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#computeIntersectionNodes(com.vividsolutions.jts.geomgraph.GeometryGraph, int)"><B>computeIntersectionNodes(GeometryGraph, int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<DD>Insert nodes for all intersections on the edges of a Geometry.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><B>computeIntersections(List, SegmentIntersector, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A>
+<DD>Computes all self-intersections between edges in a set of edges,
+ allowing client to choose whether self-intersections are computed.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersections(List, List, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A>
+<DD>Computes all mutual intersections between two sets of edges.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html#computeIntersections(com.vividsolutions.jts.geomgraph.index.MonotoneChain, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersections(MonotoneChain, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><B>computeIntersections(List, SegmentIntersector, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersections(List, List, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><B>computeIntersections(List, SegmentIntersector, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersections(List, List, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html#computeIntersections(java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector, boolean)"><B>computeIntersections(List, SegmentIntersector, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html#computeIntersections(java.util.List, java.util.List, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersections(List, List, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#computeIntersections(com.vividsolutions.jts.geomgraph.index.SweepLineSegment, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersections(SweepLineSegment, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#computeIntersects(com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersects(MonotoneChainEdge, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#computeIntersectsForChain(int, com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, int, com.vividsolutions.jts.geomgraph.index.SegmentIntersector)"><B>computeIntersectsForChain(int, MonotoneChainEdge, int, SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html#computeKey(com.vividsolutions.jts.index.bintree.Interval)"><B>computeKey(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<DD>return a square envelope containing the argument envelope,
+ whose extent is a power of two and which is based at a power of 2
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#computeKey(com.vividsolutions.jts.geom.Envelope)"><B>computeKey(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>return a square envelope containing the argument envelope,
+ whose extent is a power of two and which is based at a power of 2
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>computeLabel(BoundaryNodeRule)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#computeLabel(com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>computeLabel(BoundaryNodeRule)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>This computes the overall edge label for the set of
+ edges in this EdgeStubBundle.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])"><B>computeLabelling(GeometryGraph[])</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>Compute the labelling for all dirEdges in this star, as well
+ as the overall labelling
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#computeLabelling(com.vividsolutions.jts.geomgraph.GeometryGraph[])"><B>computeLabelling(GeometryGraph[])</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html#computeLevel(com.vividsolutions.jts.index.bintree.Interval)"><B>computeLevel(Interval)</B></A> - 
+Static method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>
+<DD>Fully nodes a list of <CODE>SegmentStrings</CODE>, i.e.
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/Noder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>
+<DD>Computes the noding for a collection of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/noding/ScaledNoder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SimpleNoder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>
+<DD>Computes the noding for a collection of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#computeNodes(java.util.Collection)"><B>computeNodes(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeOrientation(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Computes the orientation of a point q to the directed line segment p1-p2.
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#computeOrientation(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>computeOrientation(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#computeOverlaps(com.vividsolutions.jts.index.chain.MonotoneChain, com.vividsolutions.jts.index.chain.MonotoneChainOverlapAction)"><B>computeOverlaps(MonotoneChain, MonotoneChainOverlapAction)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html#computeOverlaps(com.vividsolutions.jts.index.sweepline.SweepLineOverlapAction)"><B>computeOverlaps(SweepLineOverlapAction)</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#computeOverlaySnapTolerance(com.vividsolutions.jts.geom.Geometry)"><B>computeOverlaySnapTolerance(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>Estimates the snap tolerance for a Geometry, taking into account its precision model.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#computeOverlaySnapTolerance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>computeOverlaySnapTolerance(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#computePoints(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>computePoints(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>Collect all the points from the DirectedEdges of this ring into a contiguous list
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#computeQuadLevel(com.vividsolutions.jts.geom.Envelope)"><B>computeQuadLevel(Envelope)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#computeRing()"><B>computeRing()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>Compute a LinearRing from the point list previously collected.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#computeSelfNodes(com.vividsolutions.jts.algorithm.LineIntersector, boolean)"><B>computeSelfNodes(LineIntersector, boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>Compute self-nodes, taking advantage of the Geometry type to
+ minimize the number of intersection tests.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#computeSizeBasedSnapTolerance(com.vividsolutions.jts.geom.Geometry)"><B>computeSizeBasedSnapTolerance(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#computeSplitEdges(java.util.List)"><B>computeSplitEdges(List)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#computeVertexSnaps(java.util.Collection)"><B>computeVertexSnaps(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>
+<DD>Computes nodes introduced as a result of
+ snapping segments to vertices of other segments
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#computeVertexSnaps(java.util.Collection)"><B>computeVertexSnaps(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>
+<DD>Computes nodes introduced as a result of
+ snapping segments to vertices of other segments
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#contains(com.vividsolutions.jts.geom.Coordinate)"><B>contains(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns <code>true</code> if the given point lies in or on the envelope.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#contains(double, double)"><B>contains(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns <code>true</code> if the given point lies in or on the envelope.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#contains(com.vividsolutions.jts.geom.Envelope)"><B>contains(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns <code>true</code> if the <code>Envelope other</code>
+  lies wholely inside this <code>Envelope</code> (inclusive of the boundary).
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#contains(com.vividsolutions.jts.geom.Geometry)"><B>contains(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry contains the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#contains(com.vividsolutions.jts.index.bintree.Interval)"><B>contains(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#contains(double, double)"><B>contains(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#contains(double)"><B>contains(double)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html#contains(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)"><B>contains(Polygon, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleContains</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html#contains(com.vividsolutions.jts.geom.Geometry)"><B>contains(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleContains</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#contains(com.vividsolutions.jts.planargraph.Edge)"><B>contains(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Tests whether this graph contains the given <A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#contains(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>contains(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Tests whether this graph contains the given <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#contains(com.vividsolutions.jts.planargraph.Edge)"><B>contains(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Tests whether an <A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> is contained in this subgraph
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#containsPoint(com.vividsolutions.jts.geom.Coordinate)"><B>containsPoint(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>This method will cause the ring to be computed.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#containsPoint(com.vividsolutions.jts.geom.Coordinate)"><B>containsPoint(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>
+<DD>Checks the current set of shells (with their associated holes) to
+ see if any of them contain the point.
+<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html#containsPointInPolygon(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Polygon)"><B>containsPointInPolygon(Coordinate, Polygon)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInAreaLocator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#convexHull()"><B>convexHull()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes the smallest convex <code>Polygon</code> that contains all the
+  points in the <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#convexHull()"><B>convexHull()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#coord"><B>coord</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#coord"><B>coord</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#coord"><B>coord</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#coordRef"><B>coordRef</B></A> - 
+Variable in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>A soft reference to the Coordinate[] representation of this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#copy(com.vividsolutions.jts.geom.CoordinateSequence)"><B>copy(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>Convenience method which provides statndard way of copying <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>s
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#copyDeep(com.vividsolutions.jts.geom.Coordinate[])"><B>copyDeep(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Creates a deep copy of the argument {@link Coordinate) array.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#copyNodesAndLabels(com.vividsolutions.jts.geomgraph.GeometryGraph, int)"><B>copyNodesAndLabels(GeometryGraph, int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<DD>Copy all nodes from an arg geometry into this graph.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#coveredBy(com.vividsolutions.jts.geom.Geometry)"><B>coveredBy(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry is covered by the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#covers(com.vividsolutions.jts.geom.Geometry)"><B>covers(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry covers the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])"><B>create(Coordinate[])</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>
+<DD>Returns a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> based on the given array.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><B>create(CoordinateSequence)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>
+<DD>Creates a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> which is a copy
+ of the given <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html#create(int, int)"><B>create(int, int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>
+<DD>Creates a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> of the specified size and dimension.
+<DT><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])"><B>create(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>
+<DD><B>Deprecated.</B>&nbsp;Returns a DefaultCoordinateSequence based on the given array (the array is
+ not copied).
+<DT><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><B>create(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>
+<DD><B>Deprecated.</B>&nbsp;&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#create(int, int)"><B>create(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>
+<DD><B>Deprecated.</B>&nbsp;&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])"><B>create(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>
+<DD>Returns a <A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><CODE>CoordinateArraySequence</CODE></A> based on the given array (the array is
+ not copied).
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><B>create(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#create(int, int)"><B>create(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.Coordinate[])"><B>create(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(com.vividsolutions.jts.geom.CoordinateSequence)"><B>create(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(double[], int)"><B>create(double[], int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(float[], int)"><B>create(float[], int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#create(int, int)"><B>create(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#create(com.vividsolutions.jts.geomgraph.Node)"><B>create(Node)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>Creates the subgraph consisting of all edges reachable from this node.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#createArc(double, double)"><B>createArc(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Creates a elliptical arc, as a LineString.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#createCircle()"><B>createCircle()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Creates a circular <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#createCoordinateSequence(com.vividsolutions.jts.geom.Coordinate[])"><B>createCoordinateSequence(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>Convenience method which provides standard way of
+ creating a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#createExpanded(com.vividsolutions.jts.index.bintree.Node, com.vividsolutions.jts.index.bintree.Interval)"><B>createExpanded(Node, Interval)</B></A> - 
+Static method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#createExpanded(com.vividsolutions.jts.index.quadtree.Node, com.vividsolutions.jts.geom.Envelope)"><B>createExpanded(Node, Envelope)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createGeometry(com.vividsolutions.jts.geom.Geometry)"><B>createGeometry(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createGeometryCollection(com.vividsolutions.jts.geom.Geometry[])"><B>createGeometryCollection(Geometry[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a GeometryCollection using the given Geometries; a null or empty
+ array will create an empty GeometryCollection.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createLineString(com.vividsolutions.jts.geom.Coordinate[])"><B>createLineString(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a LineString using the given Coordinates; a null or empty array will
+ create an empty LineString.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createLineString(com.vividsolutions.jts.geom.CoordinateSequence)"><B>createLineString(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a LineString using the given CoordinateSequence; a null or empty CoordinateSequence will
+ create an empty LineString.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createLinearRing(com.vividsolutions.jts.geom.Coordinate[])"><B>createLinearRing(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a LinearRing using the given Coordinates; a null or empty array will
+ create an empty LinearRing.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createLinearRing(com.vividsolutions.jts.geom.CoordinateSequence)"><B>createLinearRing(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a LinearRing using the given CoordinateSequence; a null or empty CoordinateSequence will
+ create an empty LinearRing.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createMultiLineString(com.vividsolutions.jts.geom.LineString[])"><B>createMultiLineString(LineString[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a MultiLineString using the given LineStrings; a null or empty
+ array will create an empty MultiLineString.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPoint(com.vividsolutions.jts.geom.Point[])"><B>createMultiPoint(Point[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a MultiPoint using the given Points.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPoint(com.vividsolutions.jts.geom.Coordinate[])"><B>createMultiPoint(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a <A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiPoint</CODE></A> using the given <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPoint(com.vividsolutions.jts.geom.CoordinateSequence)"><B>createMultiPoint(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a MultiPoint using the given CoordinateSequence.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createMultiPolygon(com.vividsolutions.jts.geom.Polygon[])"><B>createMultiPolygon(Polygon[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a MultiPolygon using the given Polygons; a null or empty array
+ will create an empty Polygon.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)"><B>createNode(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>
+<DD>The basic node constructor does not allow for incident edges
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#createNode(com.vividsolutions.jts.index.bintree.Interval)"><B>createNode(Interval)</B></A> - 
+Static method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#createNode(com.vividsolutions.jts.geom.Envelope)"><B>createNode(Envelope)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createNode(int)"><B>createNode(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#createNode(int)"><B>createNode(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#createNode(int)"><B>createNode(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)"><B>createNode(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayNodeFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html#createNode(com.vividsolutions.jts.geom.Coordinate)"><B>createNode(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#createParentBoundables(java.util.List, int)"><B>createParentBoundables(List, int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Sorts the childBoundables then divides them into groups of size M, where
+ M is the node capacity.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#createParentBoundables(java.util.List, int)"><B>createParentBoundables(List, int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Creates the parent level for the given child level.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#createParentBoundablesFromVerticalSlice(java.util.List, int)"><B>createParentBoundablesFromVerticalSlice(List, int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createPoint(com.vividsolutions.jts.geom.Coordinate)"><B>createPoint(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a Point using the given Coordinate; a null Coordinate will create
+ an empty Geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createPoint(com.vividsolutions.jts.geom.CoordinateSequence)"><B>createPoint(CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Creates a Point using the given CoordinateSequence; a null or empty
+ CoordinateSequence will create an empty Point.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createPointFromInternalCoord(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><B>createPointFromInternalCoord(Coordinate, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#createPolygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[])"><B>createPolygon(LinearRing, LinearRing[])</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Constructs a <code>Polygon</code> with the given exterior boundary and
+ interior boundaries.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#createRectangle()"><B>createRectangle()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Creates a rectangular <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#crosses(com.vividsolutions.jts.geom.Geometry)"><B>crosses(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry crosses the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#cutEdges"><B>cutEdges</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_D_"><!-- --></A><H2>
+<B>D</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#DEBUG_PROPERTY_NAME"><B>DEBUG_PROPERTY_NAME</B></A> - 
+Static variable in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#DEBUG_PROPERTY_VALUE_ON"><B>DEBUG_PROPERTY_VALUE_ON</B></A> - 
+Static variable in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#DEBUG_PROPERTY_VALUE_TRUE"><B>DEBUG_PROPERTY_VALUE_TRUE</B></A> - 
+Static variable in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#DEFAULT_QUADRANT_SEGMENTS"><B>DEFAULT_QUADRANT_SEGMENTS</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<DD>The default number of facets into which to divide a fillet of 90 degrees.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#DELETE"><B>DELETE</B></A> - 
+Static variable in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#DELETE"><B>DELETE</B></A> - 
+Static variable in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#DIFFERENCE"><B>DIFFERENCE</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#DISCONNECTED_INTERIOR"><B>DISCONNECTED_INTERIOR</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that the interior of a polygon is disjoint
+ (often caused by set of contiguous holes splitting the polygon into two parts)
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#DONTCARE"><B>DONTCARE</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Dimension value for any dimension (= {FALSE, TRUE}).
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#DONT_INTERSECT"><B>DONT_INTERSECT</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#DOUBLE"><B>DOUBLE</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#DOUBLE_FACTORY"><B>DOUBLE_FACTORY</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#DO_INTERSECT"><B>DO_INTERSECT</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#DUPLICATE_RINGS"><B>DUPLICATE_RINGS</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that a polygonal geometry contains two rings which are identical
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>Debug</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>.<DD>Provides routines to simplify and localize debugging output.<DT><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>DefaultCoordinateSequenceFactory</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>.<DD><B>Deprecated.</B>&nbsp;<I>no longer used</I><DT><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#DefaultCoordinateSequenceFactory()"><B>DefaultCoordinateSequenceFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>
+<DD><B>Deprecated.</B>&nbsp;&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph"><B>Depth</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>.<DD>A Depth object records the topological depth of the sides
+ of an Edge for up to two Geometries.<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#Depth()"><B>Depth()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>Dimension</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>.<DD>Constants representing the dimensions of a point, a curve and a surface.<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#Dimension()"><B>Dimension()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>DirectedEdge</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#DirectedEdge(com.vividsolutions.jts.geomgraph.Edge, boolean)"><B>DirectedEdge(Edge, boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdge</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>.<DD>Represents a directed edge in a <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#DirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)"><B>DirectedEdge(Node, Node, Coordinate, boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Constructs a DirectedEdge connecting the <code>from</code> node to the
+ <code>to</code> node.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>DirectedEdgeStar</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>.<DD>A DirectedEdgeStar is an ordered list of <b>outgoing</b> DirectedEdges around a node.<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#DirectedEdgeStar()"><B>DirectedEdgeStar()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdgeStar</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>.<DD>A sorted collection of <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s which leave a <A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>
+ in a <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#DirectedEdgeStar()"><B>DirectedEdgeStar()</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Constructs a DirectedEdgeStar with no edges.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>DistanceOp</B></A> - class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>.<DD>Find two points on two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s which lie
+ within a given distance, or else are the closest points
+ on the geometries (in which case this also
+ provides the distance between the geometries).<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#DistanceOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>DistanceOp(Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Constructs a DistanceOp that computes the distance and closest points between
+ the two specified geometries.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#DistanceOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)"><B>DistanceOp(Geometry, Geometry, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Constructs a DistanceOp that computes the distance and closest points between
+ the two specified geometries.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree"><B>DoubleBits</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>.<DD>DoubleBits manipulates Double numbers
+ by using bit manipulation and bit-field extraction.<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#DoubleBits(double)"><B>DoubleBits(double)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>DouglasPeuckerLineSimplifier</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A>.<DD>Simplifies a linestring (sequence of points) using
+ the standard Douglas-Peucker algorithm.<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#DouglasPeuckerLineSimplifier(com.vividsolutions.jts.geom.Coordinate[])"><B>DouglasPeuckerLineSimplifier(Coordinate[])</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>DouglasPeuckerSimplifier</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A>.<DD>Simplifies a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> using the standard Douglas-Peucker algorithm.<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#DouglasPeuckerSimplifier(com.vividsolutions.jts.geom.Geometry)"><B>DouglasPeuckerSimplifier(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#dangles"><B>dangles</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#deStar"><B>deStar</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>The collection of DirectedEdges that leave this Node
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#depth()"><B>depth()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#depth()"><B>depth()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>Returns the number of levels in the tree.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth()"><B>depth()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#depth(com.vividsolutions.jts.index.strtree.AbstractNode)"><B>depth(AbstractNode)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#depth()"><B>depth()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Returns the number of items in the tree.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#depthAtLocation(int)"><B>depthAtLocation(int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#depthFactor(int, int)"><B>depthFactor(int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>Computes the factor for the change in depth when moving from one location to another.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#determineBoundary(com.vividsolutions.jts.algorithm.BoundaryNodeRule, int)"><B>determineBoundary(BoundaryNodeRule, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>This method implements the Boundary Determination Rule
+ for determining whether
+ a component (node or edge) that appears multiple times in elements
+ of a MultiGeometry is in the boundary or the interior of the Geometry
+ <br>
+ The SFS uses the "Mod-2 Rule", which this function implements
+ <br>
+ An alternative (and possibly more intuitive) rule would be
+ the "At Most One Rule":
+    isInBoundary = (componentCount == 1)
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#diff(double, double)"><B>diff(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Computes the unoriented (smallest) difference between two angles.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#difference(com.vividsolutions.jts.geom.Geometry)"><B>difference(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes a <code>Geometry</code> representing the points making up this
+  <code>Geometry</code> that do not make up <code>other</code>.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>difference(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>difference(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>difference(Geometry, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Computes the set-theoretic difference of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#difference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>difference(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<DD>Computes the set-theoretic difference of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#dimension"><B>dimension</B></A> - 
+Variable in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>The dimensions of the coordinates hold in the packed array
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html#dimensionLimit"><B>dimensionLimit</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateSequenceComparator</A>
+<DD>The number of dimensions to test
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#dirEdge"><B>dirEdge</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>The two DirectedEdges associated with this Edge.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#dirEdgeIterator()"><B>dirEdgeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Returns an Iterator over the DirectedEdges in this PlanarGraph, in the order in which they
+ were added.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#dirEdgeIterator()"><B>dirEdgeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Returns an <CODE>Iterator</CODE> over the <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s in this graph,
+ in the order in which they were added.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#dirEdges"><B>dirEdges</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#dirEdges"><B>dirEdges</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#disjoint(com.vividsolutions.jts.geom.Geometry)"><B>disjoint(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry is disjoint to the specified geometry.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html#dissolve(java.util.Collection)"><B>dissolve(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>
+<DD>Dissolve all <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in the input <CODE>Collection</CODE>
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html#dissolve(com.vividsolutions.jts.noding.SegmentString)"><B>dissolve(SegmentString)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>
+<DD>Dissolve the given <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#dist"><B>dist</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#distance(com.vividsolutions.jts.geom.Coordinate)"><B>distance(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#distance(com.vividsolutions.jts.geom.Envelope)"><B>distance(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Computes the distance between this and another
+ <code>Envelope</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#distance(com.vividsolutions.jts.geom.Geometry)"><B>distance(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the minimum distance between this <code>Geometry</code>
+  and the <code>Geometry</code> g
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#distance(com.vividsolutions.jts.geom.LineSegment)"><B>distance(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the distance between this line segment and another segment.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#distance(com.vividsolutions.jts.geom.Coordinate)"><B>distance(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the distance between this line segment and a given point.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#distance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>distance(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Compute the distance between the closest points of two geometries.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#distance()"><B>distance()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Report the distance between the closest points on the input geometries.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#distanceLineLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>distanceLineLine(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Computes the distance from a line segment AB to a line segment CD
+
+ Note: NON-ROBUST!
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#distancePerpendicular(com.vividsolutions.jts.geom.Coordinate)"><B>distancePerpendicular(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the perpendicular distance between the (infinite) line defined
+ by this line segment and a point.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>distancePointLine(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Computes the distance from a point p to a line segment AB
+
+ Note: NON-ROBUST!
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#distancePointLinePerpendicular(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>distancePointLinePerpendicular(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Computes the perpendicular distance from a point p
+ to the (infinite) line containing the points AB
+</DL>
+<HR>
+<A NAME="_E_"><!-- --></A><H2>
+<B>E</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#ENDPOINT_BOUNDARY_RULE"><B>ENDPOINT_BOUNDARY_RULE</B></A> - 
+Static variable in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>
+<DD>The Endpoint Boundary Node Rule.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#ERROR"><B>ERROR</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD><B>Deprecated.</B>&nbsp;<I></I>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#EXPONENT_BIAS"><B>EXPONENT_BIAS</B></A> - 
+Static variable in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Location.html#EXTERIOR"><B>EXTERIOR</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<DD>DE-9IM row index of the exterior of the first geometry and column index of
+  the exterior of the second geometry.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>Edge</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#Edge(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geomgraph.Label)"><B>Edge(Coordinate[], Label)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#Edge(com.vividsolutions.jts.geom.Coordinate[])"><B>Edge(Coordinate[])</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>Edge</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>.<DD>Represents an undirected edge of a <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#Edge()"><B>Edge()</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>Constructs an Edge whose DirectedEdges are not yet set.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#Edge(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)"><B>Edge(DirectedEdge, DirectedEdge)</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>Constructs an Edge initialized with the given DirectedEdges, and for each
+ DirectedEdge: sets the Edge, sets the symmetric DirectedEdge, and adds
+ this Edge to its from-Node.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEnd</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>.<DD>Models the end of an edge incident on a node.<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#EdgeEnd(com.vividsolutions.jts.geomgraph.Edge)"><B>EdgeEnd(Edge)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#EdgeEnd(com.vividsolutions.jts.geomgraph.Edge, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>EdgeEnd(Edge, Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#EdgeEnd(com.vividsolutions.jts.geomgraph.Edge, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.Label)"><B>EdgeEnd(Edge, Coordinate, Coordinate, Label)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBuilder</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBuilder</A>.<DD>Computes the <A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeEnd</CODE></A>s which arise from a noded <A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html#EdgeEndBuilder()"><B>EdgeEndBuilder()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBundle</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>.<DD>A collection of <A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeEnd</CODE></A>s which obey the following invariant:
+ They originate at the same node and have the same direction.<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#EdgeEndBundle(com.vividsolutions.jts.algorithm.BoundaryNodeRule, com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>EdgeEndBundle(BoundaryNodeRule, EdgeEnd)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#EdgeEndBundle(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>EdgeEndBundle(EdgeEnd)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBundleStar</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundleStar</A>.<DD>An ordered list of <A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>EdgeEndBundle</CODE></A>s around a <A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNode</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html#EdgeEndBundleStar()"><B>EdgeEndBundleStar()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundleStar</A>
+<DD>Creates a new empty EdgeEndBundleStar
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEndStar</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>.<DD>A EdgeEndStar is an ordered list of EdgeEnds around a node.<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#EdgeEndStar()"><B>EdgeEndStar()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeIntersection</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>.<DD>Represents a point on an
+ edge which intersects with another edge.<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#EdgeIntersection(com.vividsolutions.jts.geom.Coordinate, int, double)"><B>EdgeIntersection(Coordinate, int, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeIntersectionList</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>.<DD>A list of edge intersections along an <A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#EdgeIntersectionList(com.vividsolutions.jts.geomgraph.Edge)"><B>EdgeIntersectionList(Edge)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeList</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>.<DD>A EdgeList is a list of Edges.<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#EdgeList()"><B>EdgeList()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeNodingValidator</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph">EdgeNodingValidator</A>.<DD>Validates that a collection of <A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s is correctly noded.<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html#EdgeNodingValidator(java.util.Collection)"><B>EdgeNodingValidator(Collection)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph">EdgeNodingValidator</A>
+<DD>Creates a new validator for the given collection of <A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeRing</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#EdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><B>EdgeRing(DirectedEdge, GeometryFactory, CGAlgorithms)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>EdgeRing</B></A> - class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>.<DD>Represents a ring of <A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><CODE>PolygonizeDirectedEdge</CODE></A>s which form
+ a ring of a polygon.<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#EdgeRing(com.vividsolutions.jts.geom.GeometryFactory)"><B>EdgeRing(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>EdgeSetIntersector</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A>.<DD>An EdgeSetIntersector computes all the intersections between the
+ edges in the set.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html#EdgeSetIntersector()"><B>EdgeSetIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">EdgeSetIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>EdgeSetNoder</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay">EdgeSetNoder</A>.<DD>Nodes a set of edges.<DT><A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html#EdgeSetNoder(com.vividsolutions.jts.algorithm.LineIntersector)"><B>EdgeSetNoder(LineIntersector)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay">EdgeSetNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>EdgeString</B></A> - class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge">EdgeString</A>.<DD>A sequence of <A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeDirectedEdge</CODE></A>s forming one of the lines that will
+ be output by the line-merging process.<DT><A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html#EdgeString(com.vividsolutions.jts.geom.GeometryFactory)"><B>EdgeString(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge">EdgeString</A>
+<DD>Constructs an EdgeString with the given factory used to convert this EdgeString
+ to a LineString
+<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>EnhancedPrecisionOp</B></A> - class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>.<DD>Provides versions of Geometry spatial functions which use
+ enhanced precision techniques to reduce the likelihood of robustness problems.<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#EnhancedPrecisionOp()"><B>EnhancedPrecisionOp()</B></A> - 
+Constructor for class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>Envelope</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>.<DD>Defines a rectangular region of the 2D coordinate plane.<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#Envelope()"><B>Envelope()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Creates a null <code>Envelope</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#Envelope(double, double, double, double)"><B>Envelope(double, double, double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Creates an <code>Envelope</code> for a region defined by maximum and minimum values.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#Envelope(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>Envelope(Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Creates an <code>Envelope</code> for a region defined by two Coordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#Envelope(com.vividsolutions.jts.geom.Coordinate)"><B>Envelope(Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Creates an <code>Envelope</code> for a region defined by a single Coordinate.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#Envelope(com.vividsolutions.jts.geom.Envelope)"><B>Envelope(Envelope)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Create an <code>Envelope</code> from an existing Envelope.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#edge"><B>edge</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#edgeDirection"><B>edgeDirection</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#edgeEndList"><B>edgeEndList</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#edgeIterator()"><B>edgeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Returns an Iterator over the Edges in this PlanarGraph, in the order in which they
+ were added.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#edgeIterator()"><B>edgeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Returns an <CODE>Iterator</CODE> over the <A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s in this graph,
+ in the order in which they were added.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeList"><B>edgeList</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>A list of all outgoing edges in the result, in CCW order
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#edgeMap"><B>edgeMap</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>A map which maintains the edges in sorted order around the node
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#edges"><B>edges</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#edges"><B>edges</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#edges"><B>edges</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#edges"><B>edges</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)"><B>edit(Geometry, GeometryFactory)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html#edit(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Geometry)"><B>edit(Coordinate[], Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A>
+<DD>Edits the array of <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s from a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.GeometryFactory)"><B>edit(Geometry, GeometryFactory)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A>
+<DD>Edits a Geometry by returning a new Geometry with a modification.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html#edit(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.util.GeometryEditor.GeometryEditorOperation)"><B>edit(Geometry, GeometryEditor.GeometryEditorOperation)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A>
+<DD>Edit the input <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with the given edit operation.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#endLine()"><B>endLine()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>Terminate the current LineString.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#ensureExtent(com.vividsolutions.jts.index.bintree.Interval, double)"><B>ensureExtent(Interval, double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>Ensure that the Interval for the inserted item has non-zero extents.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#ensureExtent(com.vividsolutions.jts.geom.Envelope, double)"><B>ensureExtent(Envelope, double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>Ensure that the envelope for the inserted item has non-zero extents.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#envelope"><B>envelope</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>The bounding box of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#equal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)"><B>equal(Coordinate, Coordinate, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Returns <code>true</code> if <code>other</code> has the same values for
+  the x and y ordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#equals(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><B>equals(Coordinate[], Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Returns true if the two arrays are identical, both null, or pointwise
+ equal (as compared using Coordinate#equals)
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#equals(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[], java.util.Comparator)"><B>equals(Coordinate[], Coordinate[], Comparator)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Returns true if the two arrays are identical, both null, or pointwise
+ equal, using a user-defined <A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><CODE>CoordinateArrays.ForwardComparator</CODE></A> for <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> s
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#equals(com.vividsolutions.jts.geom.Geometry)"><B>equals(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry is equal to the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Returns <code>true</code> if <code>other</code> has the same values for
+  its points.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Tests if an object is an
+ <tt>AffineTransformation</tt>
+ and has the same matrix as 
+ this transformation.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>equals is defined to be:
+ 
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html#equals(java.lang.Object)"><B>equals(Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html#equals(java.lang.Object, java.lang.Object)"><B>equals(Object, Object)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>Throws an <code>AssertionFailedException</code> if the given objects are
+  not equal, according to the <code>equals</code> method.
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html#equals(java.lang.Object, java.lang.Object, java.lang.String)"><B>equals(Object, Object, String)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>Throws an <code>AssertionFailedException</code> with the given message if
+  the given objects are not equal, according to the <code>equals</code>
+  method.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#equals2D(com.vividsolutions.jts.geom.Coordinate)"><B>equals2D(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Returns whether the planar projections of the two <code>Coordinate</code>s
+  are equal.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#equals3D(com.vividsolutions.jts.geom.Coordinate)"><B>equals3D(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Returns <code>true</code> if <code>other</code> has the same values for x,
+  y and z.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal,
+ up to a specified distance tolerance.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#equalsExact(com.vividsolutions.jts.geom.Geometry)"><B>equalsExact(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns true if the two <code>Geometry</code>s are exactly equal.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#equalsExact(com.vividsolutions.jts.geom.Geometry, double)"><B>equalsExact(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#equalsTopo(com.vividsolutions.jts.geom.LineSegment)"><B>equalsTopo(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Returns <code>true</code> if <code>other</code> is
+  topologically equal to this LineSegment (e.g.
+<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html#execute(java.lang.Object)"><B>execute(Object)</B></A> - 
+Method in interface com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util">CollectionUtil.Function</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#expandBy(double)"><B>expandBy(double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Expands this envelope by a given distance in all directions.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#expandBy(double, double)"><B>expandBy(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Expands this envelope by a given distance in all directions.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><B>expandEnvelope(Envelope)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Expands the given <A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to include the coordinates in the sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><B>expandEnvelope(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><B>expandEnvelope(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#expandEnvelope(com.vividsolutions.jts.geom.Envelope)"><B>expandEnvelope(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#expandToInclude(com.vividsolutions.jts.geom.Coordinate)"><B>expandToInclude(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Enlarges the boundary of the <code>Envelope</code> so that it contains
+  (x,y).
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#expandToInclude(double, double)"><B>expandToInclude(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Enlarges the boundary of the <code>Envelope</code> so that it contains
+  (x,y).
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#expandToInclude(com.vividsolutions.jts.geom.Envelope)"><B>expandToInclude(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Enlarges the boundary of the <code>Envelope</code> so that it contains
+  <code>other</code>.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#expandToInclude(com.vividsolutions.jts.index.bintree.Interval)"><B>expandToInclude(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html#expandToInclude(com.vividsolutions.jts.index.strtree.Interval)"><B>expandToInclude(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#exponent(double)"><B>exponent(double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#extract(com.vividsolutions.jts.geom.Coordinate[], int, int)"><B>extract(Coordinate[], int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Extracts a subsequence of the input <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array
+ from indices <code>start</code> to
+ <code>end</code> (inclusive).
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#extractLine(double, double)"><B>extractLine(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> for the interval
+ on the line between the given indices.
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#extractLine(com.vividsolutions.jts.linearref.LinearLocation, com.vividsolutions.jts.linearref.LinearLocation)"><B>extractLine(LinearLocation, LinearLocation)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> for the interval
+ on the line between the given indices.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#extractPoint(double)"><B>extractPoint(double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the point
+ on the line at the given index.
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#extractPoint(com.vividsolutions.jts.linearref.LinearLocation)"><B>extractPoint(LinearLocation)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> for the point
+ on the line at the given index.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#extractTargetCoordinates(com.vividsolutions.jts.geom.Geometry)"><B>extractTargetCoordinates(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_F_"><!-- --></A><H2>
+<B>F</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#FALSE"><B>FALSE</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Dimension value of the empty geometry (-1).
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#FIXED"><B>FIXED</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Fixed Precision indicates that coordinates have a fixed number of decimal places.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#FLOAT"><B>FLOAT</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#FLOATING"><B>FLOATING</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Floating precision corresponds to the standard Java
+ double-precision floating-point representation, which is
+ based on the IEEE-754 standard
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#FLOATING_SINGLE"><B>FLOATING_SINGLE</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Floating single precision corresponds to the standard Java
+ single-precision floating-point representation, which is
+ based on the IEEE-754 standard
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#FLOAT_FACTORY"><B>FLOAT_FACTORY</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>FastNodingValidator</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A>.<DD>Validates that a collection of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s is correctly noded.<DT><A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html#FastNodingValidator(java.util.Collection)"><B>FastNodingValidator(Collection)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>FuzzyPointLocator</B></A> - class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">FuzzyPointLocator</A>.<DD>Finds the most likely <A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A> of a point relative to
+ the polygonal components of a geometry, using a tolerance value.<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html#FuzzyPointLocator(com.vividsolutions.jts.geom.Geometry, double)"><B>FuzzyPointLocator(Geometry, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">FuzzyPointLocator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#factory"><B>factory</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>The <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> used to create this Geometry
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#factory"><B>factory</B></A> - 
+Variable in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)"><B>filter(Coordinate)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>
+<DD>Performs an operation with or on <code>coord</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#filter(com.vividsolutions.jts.geom.CoordinateSequence, int)"><B>filter(CoordinateSequence, int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>
+<DD>Performs an operation on a coordinate in a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>
+<DD>Performs an operation with or on <code>geom</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFilter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>
+<DD>Performs an operation with or on <code>geom</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#filter(com.vividsolutions.jts.geom.CoordinateSequence, int)"><B>filter(CoordinateSequence, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Transforms the i'th coordinate in the input sequence
+<DT><A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementLocationFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html#filter(com.vividsolutions.jts.geom.Geometry)"><B>filter(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementPointFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)"><B>filter(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)"><B>filter(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html#filter(com.vividsolutions.jts.geom.Coordinate)"><B>filter(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#find(com.vividsolutions.jts.geom.Coordinate)"><B>find(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#find(com.vividsolutions.jts.geom.Coordinate)"><B>find(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#find(com.vividsolutions.jts.index.bintree.Interval)"><B>find(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>Returns the smallest <i>existing</i>
+ node containing the envelope.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#find(com.vividsolutions.jts.geom.Envelope)"><B>find(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>Returns the smallest <i>existing</i>
+ node containing the envelope.
+<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html#find(com.vividsolutions.jts.geom.Coordinate)"><B>find(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<DD>Returns the Node at the given location, or null if no Node was there.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#findCoveredLineEdges()"><B>findCoveredLineEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>Traverse the star of edges, maintaing the current location in the result
+ area at this node (if any).
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#findDifferentPoint(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate)"><B>findDifferentPoint(Coordinate[], Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#findEdge(com.vividsolutions.jts.geom.LineString)"><B>findEdge(LineString)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdge(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>findEdge(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>Returns the edge whose first two coordinates are p0 and p1
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#findEdge(java.util.List)"><B>findEdge(List)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdgeEnd(com.vividsolutions.jts.geomgraph.Edge)"><B>findEdgeEnd(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>Returns the EdgeEnd which has edge e as its base edge
+ (MD 18 Feb 2002 - this should return a pair of edges)
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#findEdgeInSameDirection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>findEdgeInSameDirection(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>Returns the edge which starts at p0 and whose first segment is
+ parallel to p1
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#findEdgeIndex(com.vividsolutions.jts.geomgraph.Edge)"><B>findEdgeIndex(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>If the edge e is already in the list, return its index.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#findEdgeRingContaining(com.vividsolutions.jts.operation.polygonize.EdgeRing, java.util.List)"><B>findEdgeRingContaining(EdgeRing, List)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#findEqualEdge(com.vividsolutions.jts.geomgraph.Edge)"><B>findEqualEdge(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>If there is an edge equal to e already in the list, return it.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#findIndex(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>findIndex(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#findNode(com.vividsolutions.jts.geom.Coordinate)"><B>findNode(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Returns the <A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> at the given location,
+ or null if no <A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A> was there.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#findNodesOfDegree(int)"><B>findNodesOfDegree(int)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Returns all Nodes with the given number of Edges around it.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html#findPtNotNode(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>findPtNotNode(Coordinate[], LinearRing, GeometryGraph)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<DD>Find a point from the list of testCoords
+ that is NOT a node in the edge for the list of searchCoords
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#findResultEdges()"><B>findResultEdges()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>Find all edges whose depths indicates that they are in the result area(s).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#flip()"><B>flip()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#flip()"><B>flip()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#from"><B>from</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_G_"><!-- --></A><H2>
+<B>G</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>GeometricShapeFactory</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>.<DD>Computes various kinds of common geometric shapes.<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#GeometricShapeFactory()"><B>GeometricShapeFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Create a shape factory which will create shapes using the default
+ <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#GeometricShapeFactory(com.vividsolutions.jts.geom.GeometryFactory)"><B>GeometricShapeFactory(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Create a shape factory which will create shapes using the given
+ <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>Geometry</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>.<DD>The base class for all geometric objects.<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#Geometry(com.vividsolutions.jts.geom.GeometryFactory)"><B>Geometry(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Creates a new <tt>Geometry</tt> via the specified GeometryFactory.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>GeometryCollection</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>.<DD>Basic implementation of <code>GeometryCollection</code>.<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>GeometryCollection(Geometry[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#GeometryCollection(com.vividsolutions.jts.geom.Geometry[], com.vividsolutions.jts.geom.GeometryFactory)"><B>GeometryCollection(Geometry[], GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>GeometryCollectionIterator</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A>.<DD>Iterates over all <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html#GeometryCollectionIterator(com.vividsolutions.jts.geom.Geometry)"><B>GeometryCollectionIterator(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A>
+<DD>Constructs an iterator over the given <code>GeometryCollection</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>GeometryComponentFilter</B></A> - interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>.<DD><code>Geometry</code> classes support the concept of applying
+  a <code>GeometryComponentFilter</code>
+  filter to the <code>Geometry</code>.<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryEditor</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A>.<DD>Supports creating a new <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is a modification of an existing one.<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html#GeometryEditor()"><B>GeometryEditor()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A>
+<DD>Creates a new GeometryEditor object which will create
+ an edited <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> with the same <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> as the input Geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html#GeometryEditor(com.vividsolutions.jts.geom.GeometryFactory)"><B>GeometryEditor(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor</A>
+<DD>Creates a new GeometryEditor object which will create
+ the edited Geometry with the given <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryEditor.CoordinateOperation</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A>.<DD>A <CODE>GeometryEditorOperation</CODE> which modifies the coordinate list of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html#GeometryEditor.CoordinateOperation()"><B>GeometryEditor.CoordinateOperation()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util">GeometryEditor.CoordinateOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util"><B>GeometryEditor.GeometryEditorOperation</B></A> - interface com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A>.<DD>A interface which specifies an edit operation for Geometries.<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>GeometryFactory</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>.<DD>Supplies a set of utility methods for building Geometry objects from lists
+ of Coordinates.<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel, int, com.vividsolutions.jts.geom.CoordinateSequenceFactory)"><B>GeometryFactory(PrecisionModel, int, CoordinateSequenceFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.CoordinateSequenceFactory)"><B>GeometryFactory(CoordinateSequenceFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ CoordinateSequence implementation, a double-precision floating PrecisionModel and a
+ spatial-reference ID of 0.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel)"><B>GeometryFactory(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> and the default CoordinateSequence
+ implementation.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory(com.vividsolutions.jts.geom.PrecisionModel, int)"><B>GeometryFactory(PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Constructs a GeometryFactory that generates Geometries having the given
+ <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> and spatial-reference ID, and the default CoordinateSequence
+ implementation.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#GeometryFactory()"><B>GeometryFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Constructs a GeometryFactory that generates Geometries having a floating
+ PrecisionModel and a spatial-reference ID of 0.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom"><B>GeometryFilter</B></A> - interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>.<DD><code>GeometryCollection</code> classes support the concept of
+  applying a <code>GeometryFilter</code> to the <code>Geometry</code>.<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>GeometryGraph</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>.<DD>A GeometryGraph is a graph that models a given Geometry<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#GeometryGraph(int, com.vividsolutions.jts.geom.Geometry)"><B>GeometryGraph(int, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#GeometryGraph(int, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>GeometryGraph(int, Geometry, BoundaryNodeRule)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>GeometryGraphOperation</B></A> - class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>.<DD>The base class for operations that require <A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>GeometryGraph</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>GeometryGraphOperation(Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>GeometryGraphOperation(Geometry, Geometry, BoundaryNodeRule)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#GeometryGraphOperation(com.vividsolutions.jts.geom.Geometry)"><B>GeometryGraphOperation(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><B>GeometryLocation</B></A> - class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>.<DD>Represents the location of a point on a Geometry.<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#GeometryLocation(com.vividsolutions.jts.geom.Geometry, int, com.vividsolutions.jts.geom.Coordinate)"><B>GeometryLocation(Geometry, int, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Constructs a GeometryLocation specifying a point on a geometry, as well as the 
+ segment that the point is on (or INSIDE_AREA if the point is not on a segment).
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#GeometryLocation(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Coordinate)"><B>GeometryLocation(Geometry, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Constructs a GeometryLocation specifying a point inside an area geometry.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>GeometrySnapper</B></A> - class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>.<DD>Snaps the vertices and segments of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to another Geometry's vertices.<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#GeometrySnapper(com.vividsolutions.jts.geom.Geometry)"><B>GeometrySnapper(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryTransformer</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>.<DD>A framework for processes which transform an input <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into
+ an output <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>, possibly changing its structure and type(s).<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#GeometryTransformer()"><B>GeometryTransformer()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>GraphComponent</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>.<DD>A GraphComponent is the parent class for the objects'
+ that form a graph.<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#GraphComponent()"><B>GraphComponent()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#GraphComponent(com.vividsolutions.jts.geomgraph.Label)"><B>GraphComponent(Label)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>GraphComponent</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>.<DD>The base class for all graph component classes.<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#GraphComponent()"><B>GraphComponent()</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#geometries"><B>geometries</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>Internal representation of this <code>GeometryCollection</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#geometryChanged()"><B>geometryChanged()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Notifies this Geometry that its Coordinates have been changed by an external
+ party (using a CoordinateFilter, for example).
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#geometryChangedAction()"><B>geometryChangedAction()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Notifies this Geometry that its Coordinates have been changed by an external
+ party.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#geometryFactory"><B>geometryFactory</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#get(int, int)"><B>get(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns the value of one of this <code>IntersectionMatrix</code>s
+  elements.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#get(int)"><B>get(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#get(int)"><B>get(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getAngle()"><B>getAngle()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns the angle that the start of this DirectedEdge makes with the
+ positive x-axis, in radians.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getArea()"><B>getArea()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the area of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getArea()"><B>getArea()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>Returns the area of this <code>GeometryCollection</code>
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getArea()"><B>getArea()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>Returns the area of this <code>Polygon</code>
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#getArgGeometry(int)"><B>getArgGeometry(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#getBit(int)"><B>getBit(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#getBit(long, int)"><B>getBit(long, int)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>Extracts the i'th bit of a bitstring.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the boundary, or an empty geometry of appropriate dimension
+ if this <code>Geometry</code>  is empty.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>Gets the boundary of this geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>Gets the boundary of this geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>Gets the boundary of this geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>Computes the boundary of this geometry
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>Gets the boundary of this geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>Computes the boundary of this geometry
+<DT><A HREF="com/vividsolutions/jts/operation/BoundaryOp.html#getBoundary()"><B>getBoundary()</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation">BoundaryOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the dimension of this <code>Geometry</code>s inherent boundary.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LinearRing.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>
+<DD>Returns <code>Dimension.FALSE</code>, since by definition LinearRings do
+ not have a boundary.
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getBoundaryDimension()"><B>getBoundaryDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#getBoundaryNodeRule()"><B>getBoundaryNodeRule()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#getBoundaryNodes()"><B>getBoundaryNodes()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#getBoundaryNodes(int)"><B>getBoundaryNodes(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#getBoundaryPoints()"><B>getBoundaryPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html#getBounds()"><B>getBounds()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Boundable.html#getBounds()"><B>getBounds()</B></A> - 
+Method in interface com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>
+<DD>Returns a representation of space that encloses this Boundable, preferably
+ not much bigger than this Boundable's boundary yet fast to test for intersection
+ with the bounds of other Boundables.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html#getBounds()"><B>getBounds()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#getCentre()"><B>getCentre()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html#getCentre()"><B>getCentre()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html#getCentroid()"><B>getCentroid()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm">CentroidArea</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html#getCentroid()"><B>getCentroid()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm">CentroidLine</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html#getCentroid()"><B>getCentroid()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm">CentroidPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getCentroid()"><B>getCentroid()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes the centroid of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html#getChainStartIndices(com.vividsolutions.jts.geom.Coordinate[])"><B>getChainStartIndices(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainIndexer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#getChainStartIndices(com.vividsolutions.jts.geom.Coordinate[])"><B>getChainStartIndices(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>
+<DD>Return an array containing lists of start/end indexes of the monotone chains
+ for the given list of coordinates.
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#getChains(com.vividsolutions.jts.geom.Coordinate[])"><B>getChains(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#getChains(com.vividsolutions.jts.geom.Coordinate[], java.lang.Object)"><B>getChains(Coordinate[], Object)</B></A> - 
+Static method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>
+<DD>Return a list of the <A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s
+ for the given list of coordinates.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html#getChildBoundables()"><B>getChildBoundables()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<DD>Returns either child AbstractNodes, or if this is a leaf node, real data (wrapped
+ in ItemBoundables).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getCollapsedEdge()"><B>getCollapsedEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#getCommon()"><B>getCommon()</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html#getCommonCoordinate()"><B>getCommonCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>
+<DD>The common bits of the Coordinates in the supplied Geometries.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getComparator()"><B>getComparator()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#getComparator()"><B>getComparator()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#getComparator()"><B>getComparator()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#getComponentIndex()"><B>getComponentIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>The component index of the vertex the iterator is currently at.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#getComponentIndex()"><B>getComponentIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Gets the component index for this location.
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#getComponentWithVisitedState(java.util.Iterator, boolean)"><B>getComponentWithVisitedState(Iterator, boolean)</B></A> - 
+Static method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Finds the first <A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A> in a <CODE>Iterator</CODE> set
+ which has the specified visited state.
+<DT><A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html#getConnectedSubgraphs()"><B>getConnectedSubgraphs()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.algorithm.<A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm">ConnectedSubgraphFinder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getContext()"><B>getContext()</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#getContext()"><B>getContext()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Gets the user-defined data for this component.
+<DT><A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html#getConvexHull()"><B>getConvexHull()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A>
+<DD>Returns a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> that represents the convex hull of the input
+ geometry.
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns (possibly a copy of) the i'th coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)"><B>getCoordinate(int, Coordinate)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Copies the i'th coordinate in the sequence to the supplied
+ <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns a vertex of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>Returns the <code>Coordinate</code> at the given position.
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/TopologyException.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Get the Coordinate with index i.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)"><B>getCoordinate(int, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinate(int, com.vividsolutions.jts.geom.Coordinate)"><B>getCoordinate(int, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#getCoordinate(com.vividsolutions.jts.geom.Geometry)"><B>getCoordinate(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Gets the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> along the
+ given linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> which is
+ referenced by this location.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getCoordinate(int)"><B>getCoordinate(int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Returns the location.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Returns the location of this error (on the <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> containing the error).
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns the coordinate of the from-node.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the coordinate for the node at wich this star is based
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#getCoordinate()"><B>getCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Returns the location of this Node.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getCoordinateCopy(int)"><B>getCoordinateCopy(int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns a copy of the i'th coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getCoordinateCopy(int)"><B>getCoordinateCopy(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Get a copy of the Coordinate with index i.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateCopy(int)"><B>getCoordinateCopy(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#getCoordinateInternal(int)"><B>getCoordinateInternal(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#getCoordinateInternal(int)"><B>getCoordinateInternal(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getCoordinateInternal(int)"><B>getCoordinateInternal(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>Returns a Coordinate representation of the specified coordinate, by always
+ building a new Coordinate object
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getCoordinateN(int)"><B>getCoordinateN(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getCoordinateSequence()"><B>getCoordinateSequence()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getCoordinateSequence()"><B>getCoordinateSequence()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#getCoordinateSequenceFactory()"><B>getCoordinateSequenceFactory()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns this <code>Geometry</code> s vertices.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>Collects all coordinates of all subgeometries into an Array.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>Return the subsequence of coordinates forming this chain.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html#getCoordinates(com.vividsolutions.jts.geom.Geometry)"><B>getCoordinates(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementPointFilter</A>
+<DD>Returns a list containing a Coordinate from each Polygon, LineString, and Point
+ found inside the specified geometry.
+<DT><A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">CoordinateArrayFilter</A>
+<DD>Returns the gathered <code>Coordinate</code>s.
+<DT><A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html#getCoordinates()"><B>getCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A>
+<DD>Returns the gathered <code>Coordinate</code>s.
+<DT><A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html#getCount()"><B>getCount()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util">CoordinateCountFilter</A>
+<DD>Returns the result of the filtering.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html#getCurves()"><B>getCurves()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveSetBuilder</A>
+<DD>Computes the set of raw offset curves for the buffer.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getCutEdges()"><B>getCutEdges()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Get the list of cut edges found during polygonization.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getDangles()"><B>getDangles()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Get the list of dangling lines found during polygonization.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getData()"><B>getData()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>Gets the user-defined data for this segment string.
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#getData()"><B>getData()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Gets the user-defined data for this component.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getDegree()"><B>getDegree()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getDegree()"><B>getDegree()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the number of edges around the Node associated with this DirectedEdgeStar.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#getDegree()"><B>getDegree()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Returns the number of edges around this Node.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#getDeleteEventIndex()"><B>getDeleteEventIndex()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#getDeleteEventIndex()"><B>getDeleteEventIndex()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#getDelta(int)"><B>getDelta(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#getDepth(int, int)"><B>getDepth(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getDepth(int)"><B>getDepth(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getDepth()"><B>getDepth()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html#getDepth(com.vividsolutions.jts.geom.Coordinate)"><B>getDepth(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer">SubgraphDepthLocater</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getDepthDelta()"><B>getDepthDelta()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getDepthDelta()"><B>getDepthDelta()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>The depthDelta is the change in depth as an edge is crossed from R to L
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#getDeterminant()"><B>getDeterminant()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Computes the determinant of the transformation matrix.
+<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html#getDiameter()"><B>getDiameter()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<DD>Gets a <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> which is a minimum diameter
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getDimension()"><B>getDimension()</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns the dimension (number of ordinates in each coordinate)
+ for this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the dimension of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#getDirEdge(int)"><B>getDirEdge(int)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>Returns one of the DirectedEdges associated with this Edge.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#getDirEdge(com.vividsolutions.jts.planargraph.Node)"><B>getDirEdge(Node)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>Returns the <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> that starts from the given node, or null if the
+ node is not one of the two nodes associated with this Edge.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDirectedCoordinate()"><B>getDirectedCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getDirectedEdges()"><B>getDirectedEdges()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getDirectionPt()"><B>getDirectionPt()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns a point to which an imaginary line is drawn from the from-node to
+ specify this DirectedEdge's orientation.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html#getDissolved()"><B>getDissolved()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>
+<DD>Gets the collection of dissolved (i.e.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#getDistance()"><B>getDistance()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#getDouble()"><B>getDouble()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#getDouble(byte[], int)"><B>getDouble(byte[], int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDx()"><B>getDx()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getDy()"><B>getDy()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getEdge()"><B>getEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getEdge()"><B>getEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html#getEdge()"><B>getEdge()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#getEdge()"><B>getEdge()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdge()"><B>getEdge()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns this DirectedEdge's parent Edge, or null if it has none.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getEdgeDirection()"><B>getEdgeDirection()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns whether the direction of the parent Edge (if any) is the same as that
+ of this Directed Edge.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#getEdgeDistance(int, int)"><B>getEdgeDistance(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Computes the "edge distance" of an intersection point along the specified input line segment.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#getEdgeEnds()"><B>getEdgeEnds()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#getEdgeEnds()"><B>getEdgeEnds()</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getEdgeIntersectionList()"><B>getEdgeIntersectionList()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#getEdgeIterator()"><B>getEdgeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getEdgeRing()"><B>getEdgeRing()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getEdges()"><B>getEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#getEdges()"><B>getEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getEdges()"><B>getEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>Returns the list of DirectedEdges that make up this EdgeRing
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#getEdges()"><B>getEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getEdges()"><B>getEdges()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the DirectedEdges, in ascending order by angle with the positive x-axis.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#getEdges()"><B>getEdges()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Returns the Edges that have been added to this PlanarGraph
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#getEdgesBetween(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node)"><B>getEdgesBetween(Node, Node)</B></A> - 
+Static method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Returns all Edges that connect the two nodes (which are assumed to be different).
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getEndIndex()"><B>getEndIndex()</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#getEndIndex()"><B>getEndIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Returns the index of the end of the line
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#getEndIndex()"><B>getEndIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Returns the index of the end of the line
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#getEndLocation(com.vividsolutions.jts.geom.Geometry)"><B>getEndLocation(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Gets a location which refers to the end of a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getEndPoint()"><B>getEndPoint()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getEnvelope()"><B>getEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns this <code>Geometry</code>s bounding box.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getEnvelope()"><B>getEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getEnvelope()"><B>getEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#getEnvelope()"><B>getEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#getEnvelope()"><B>getEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getEnvelope()"><B>getEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>Computes the envelope of the edges in the subgraph.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getEnvelopeInternal()"><B>getEnvelopeInternal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the minimum and maximum x and y values in this <code>Geometry</code>
+  , or a null <code>Envelope</code> if this <code>Geometry</code> is empty.
+<DT><A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html#getErrorMessage()"><B>getErrorMessage()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A>
+<DD>Returns an error message indicating the segments containing
+ the intersection.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#getErrorType()"><B>getErrorType()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Gets the type of this error.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#getExponent()"><B>getExponent()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>Determines the exponent for the number
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getExteriorRing()"><B>getExteriorRing()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getFactory()"><B>getFactory()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Gets the factory which contains the context in which this geometry was created.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getFromNode()"><B>getFromNode()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns the node from which this DirectedEdge leaves.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#getGeometry()"><B>getGeometry()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#getGeometry()"><B>getGeometry()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#getGeometryComponent()"><B>getGeometryComponent()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Returns the geometry associated with this location.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#getGeometryCount()"><B>getGeometryCount()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getGeometryN(int)"><B>getGeometryN(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns an element <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or <code>this</code>, if the geometry is not a collection).
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryN(int)"><B>getGeometryN(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the name of this object's <code>com.vivid.jts.geom</code>
+  interface.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LinearRing.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getGeometryType()"><B>getGeometryType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#getGraph()"><B>getGraph()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#getHeight()"><B>getHeight()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns the difference between the maximum and minimum y values.
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getId()"><B>getId()</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html#getIndex()"><B>getIndex()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getIndex(com.vividsolutions.jts.planargraph.Edge)"><B>getIndex(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the zero-based index of the given Edge, after sorting in ascending order
+ by angle with the positive x-axis.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getIndex(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>getIndex(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the zero-based index of the given DirectedEdge, after sorting in ascending order
+ by angle with the positive x-axis.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getIndex(int)"><B>getIndex(int)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the remainder when i is divided by the number of edges in this
+ DirectedEdgeStar.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#getIndex(com.vividsolutions.jts.planargraph.Edge)"><B>getIndex(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Returns the zero-based index of the given Edge, after sorting in ascending order
+ by angle with the positive x-axis.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html#getIndex()"><B>getIndex()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#getIndexAlongSegment(int, int)"><B>getIndexAlongSegment(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Computes the index of the intIndex'th intersection point in the direction of
+ a specified input line segment
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#getInputGeometry()"><B>getInputGeometry()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>Utility function to make input geometry available
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#getInsertEvent()"><B>getInsertEvent()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#getInsertEvent()"><B>getInsertEvent()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#getInt(byte[], int)"><B>getInt(byte[], int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#getInteriorIntersection()"><B>getInteriorIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>Gets the computed location of the intersection.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html#getInteriorIntersections()"><B>getInteriorIntersections()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html#getInteriorPoint()"><B>getInteriorPoint()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html#getInteriorPoint()"><B>getInteriorPoint()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointLine</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html#getInteriorPoint()"><B>getInteriorPoint()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getInteriorPoint()"><B>getInteriorPoint()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes an interior point of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getInteriorRingN(int)"><B>getInteriorRingN(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html#getIntersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>getIntersection(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm">CentralEndpointIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html#getIntersection()"><B>getIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm">CentralEndpointIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersection(int)"><B>getIntersection(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Returns the intIndex'th intersection point
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionAlongSegment(int, int)"><B>getIntersectionAlongSegment(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Computes the intIndex'th intersection point in the direction of
+ a specified input line segment
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html#getIntersectionMatrix()"><B>getIntersectionMatrix()</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>
+<DD>Gets the IntersectionMatrix for the spatial relationship
+ between the input geometries.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#getIntersectionNum()"><B>getIntersectionNum()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Returns the number of intersection points found.
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#getIntersectionSegments()"><B>getIntersectionSegments()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>Gets the endpoints of the intersecting segments.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getIntersectsOp()"><B>getIntersectsOp()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#getIntersectsOp()"><B>getIntersectsOp()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#getIntersectsOp()"><B>getIntersectsOp()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html#getInterval()"><B>getInterval()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#getInterval()"><B>getInterval()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#getInvalidLocation()"><B>getInvalidLocation()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#getInvalidPoint()"><B>getInvalidPoint()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#getInvalidPoint()"><B>getInvalidPoint()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getInvalidRingLines()"><B>getInvalidRingLines()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Get the list of lines forming invalid rings found during polygonization.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#getInverse()"><B>getInverse()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Computes the inverse of this transformation, if one
+ exists.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html#getItem()"><B>getItem()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#getItem()"><B>getItem()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html#getItems()"><B>getItems()</B></A> - 
+Method in class com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#getItems()"><B>getItems()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#getItems()"><B>getItems()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getLabel()"><B>getLabel()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getLabel()"><B>getLabel()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getLabel()"><B>getLabel()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#getLabel()"><B>getLabel()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#getLabel()"><B>getLabel()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Returns the identifier attached to this directed edge.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#getLabel()"><B>getLabel()</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#getLastCoordinate()"><B>getLastCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html#getLength()"><B>getLength()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<DD>Gets the length of the minimum diameter of the input Geometry
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getLength()"><B>getLength()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the length of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getLength()"><B>getLength()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#getLength()"><B>getLength()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the length of the line segment.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getLength()"><B>getLength()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>Returns the length of this <code>LineString</code>
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getLength()"><B>getLength()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>Returns the perimeter of this <code>Polygon</code>
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html#getLength(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.linearref.LinearLocation)"><B>getLength(Geometry, LinearLocation)</B></A> - 
+Static method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>
+<DD>Computes the length for a given <A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A>
+ on a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html#getLength(com.vividsolutions.jts.linearref.LinearLocation)"><B>getLength(LinearLocation)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html#getLevel()"><B>getLevel()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#getLevel()"><B>getLevel()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html#getLevel()"><B>getLevel()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree">AbstractNode</A>
+<DD>Returns 0 if this node is a leaf, 1 if a parent of a leaf, and so on; the
+ root node will have the highest level
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#getLine()"><B>getLine()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Gets the <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> component the iterator is current at.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html#getLine()"><B>getLine()</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeEdge</A>
+<DD>Returns the LineString specifying the vertices of this edge.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#getLineCurve(com.vividsolutions.jts.geom.Coordinate[], double)"><B>getLineCurve(Coordinate[], double)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<DD>This method handles single points as well as lines.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#getLineIntersector()"><B>getLineIntersector()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getLineSegment(int, com.vividsolutions.jts.geom.LineSegment)"><B>getLineSegment(int, LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#getLineString()"><B>getLineString()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Gets the coordinates for this ring as a <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getLinearRing()"><B>getLinearRing()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html#getLines(com.vividsolutions.jts.geom.Geometry)"><B>getLines(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A>
+<DD>Extracts the linear components from a single geometry.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#getLocation(int, int)"><B>getLocation(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#getLocation(int, int)"><B>getLocation(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#getLocation(int)"><B>getLocation(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html#getLocation(com.vividsolutions.jts.geom.Geometry, double)"><B>getLocation(Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for a
+ given length along a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html#getLocation(double)"><B>getLocation(double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>
+<DD>Compute the <A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> corresponding to a length.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html#getLocation(com.vividsolutions.jts.geom.Coordinate)"><B>getLocation(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">FuzzyPointLocator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#getLocations()"><B>getLocations()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html#getLocations(com.vividsolutions.jts.geom.Geometry)"><B>getLocations(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance">ConnectedElementLocationFilter</A>
+<DD>Returns a list containing a point from each Polygon, LineString, and Point
+ found inside the specified geometry.
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#getLong(byte[], int)"><B>getLong(byte[], int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#getMajor()"><B>getMajor()</B></A> - 
+Method in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>Gets the major number of the release version.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#getMatrixEntries()"><B>getMatrixEntries()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Gets an array containing the entries
+ of the transformation matrix.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#getMax()"><B>getMax()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#getMax()"><B>getMax()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getMaxNodeDegree()"><B>getMaxNodeDegree()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#getMaxX()"><B>getMaxX()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns the <code>Envelope</code>s maximum x-value.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getMaxX(int)"><B>getMaxX(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#getMaxX()"><B>getMaxX()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#getMaxY()"><B>getMaxY()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns the <code>Envelope</code>s maximum y-value.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getMaximumSegmentIndex()"><B>getMaximumSegmentIndex()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getMaximumSignificantDigits()"><B>getMaximumSignificantDigits()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Returns the maximum number of significant digits provided by this
+ precision model.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html#getMergedLineStrings()"><B>getMergedLineStrings()</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A>
+<DD>Returns the LineStrings built by the merging process.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#getMessage()"><B>getMessage()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Gets an error message describing this error.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#getMin()"><B>getMin()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#getMin()"><B>getMin()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getMinEdgeRing()"><B>getMinEdgeRing()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#getMinX()"><B>getMinX()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns the <code>Envelope</code>s minimum x-value.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getMinX(int)"><B>getMinX(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#getMinX()"><B>getMinX()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#getMinY()"><B>getMinY()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns the <code>Envelope</code>s minimum y-value.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getMinimumSize()"><B>getMinimumSize()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#getMinor()"><B>getMinor()</B></A> - 
+Method in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>Gets the minor number of the release version.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getMonotoneChainEdge()"><B>getMonotoneChainEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html#getMonotoneChains()"><B>getMonotoneChains()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#getNestedPoint()"><B>getNestedPoint()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#getNestedPoint()"><B>getNestedPoint()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#getNestedPoint()"><B>getNestedPoint()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getNext()"><B>getNext()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>getNext(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html#getNext()"><B>getNext()</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>
+<DD>Returns the directed edge that starts at this directed edge's end point, or null
+ if there are zero or multiple directed edges starting there.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>getNext(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html#getNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>getNext(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#getNext()"><B>getNext()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Returns the next directed edge in the EdgeRing that this directed edge is a member
+ of.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#getNextCW(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>getNextCW(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#getNextEdge(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>getNextEdge(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns the DirectedEdge on the left-hand side of the given DirectedEdge (which
+ must be a member of this DirectedEdgeStar).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getNextMin()"><B>getNextMin()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getNode()"><B>getNode()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#getNode(com.vividsolutions.jts.index.bintree.Interval)"><B>getNode(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>Returns the subnode containing the envelope.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#getNode(com.vividsolutions.jts.geom.Envelope)"><B>getNode(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>Returns the subquad containing the envelope.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getNodeCapacity()"><B>getNodeCapacity()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Returns the maximum number of child nodes that a node may have
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#getNodeIterator()"><B>getNodeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#getNodeIterator()"><B>getNodeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getNodeList()"><B>getNodeList()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html#getNodedEdges()"><B>getNodedEdges()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay">EdgeSetNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/Noder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+<DT><A HREF="com/vividsolutions/jts/noding/ScaledNoder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getNodedSubstrings(java.util.Collection)"><B>getNodedSubstrings(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getNodedSubstrings(java.util.Collection, java.util.Collection)"><B>getNodedSubstrings(Collection, Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SimpleNoder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>
+<DD>Returns a <CODE>Collection</CODE> of fully noded <CODE>SegmentStrings</CODE>.
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#getNodedSubstrings()"><B>getNodedSubstrings()</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#getNodes()"><B>getNodes()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getNodes()"><B>getNodes()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#getNodes()"><B>getNodes()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#getNonSimpleLocation()"><B>getNonSimpleLocation()</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD>Gets a coordinate for the location where the geometry
+ fails to be simple.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getNumGeometries()"><B>getNumGeometries()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the number of <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s in a <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryCollection</CODE></A>
+ (or 1, if the geometry is not a collection).
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getNumGeometries()"><B>getNumGeometries()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getNumInteriorRing()"><B>getNumInteriorRing()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getNumPoints()"><B>getNumPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the count of this <code>Geometry</code>s vertices.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#getNumPoints()"><B>getNumPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getNumPoints()"><B>getNumPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getNumPoints()"><B>getNumPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#getNumPoints()"><B>getNumPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#getNumPoints()"><B>getNumPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#getObject()"><B>getObject()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getOffsetX()"><B>getOffsetX()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Offsets are no longer used</I>
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getOffsetY()"><B>getOffsetY()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Offsets are no longer used</I>
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#getOppositeNode(com.vividsolutions.jts.planargraph.Node)"><B>getOppositeNode(Node)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>If <code>node</code> is one of the two nodes associated with this Edge,
+ returns the other node; otherwise returns null.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getOrdinate(int, int)"><B>getOrdinate(int, int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns the ordinate of a coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getOrdinate(int, int)"><B>getOrdinate(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#getOrdinate(int, int)"><B>getOrdinate(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#getOrdinate(int, int)"><B>getOrdinate(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getOrdinate(int, int)"><B>getOrdinate(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#getOutEdges()"><B>getOutEdges()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Returns the collection of DirectedEdges that leave this Node.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getOutgoingDegree()"><B>getOutgoingDegree()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getOutgoingDegree(com.vividsolutions.jts.geomgraph.EdgeRing)"><B>getOutgoingDegree(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#getParent()"><B>getParent()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Gets the <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A> which this subgraph
+ is part of.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html#getParent()"><B>getParent()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getParent()"><B>getParent()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getParentCoordinates()"><B>getParentCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#getPatch()"><B>getPatch()</B></A> - 
+Method in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>Gets the patch number of the release version.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html#getPoint()"><B>getPoint()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#getPoint()"><B>getPoint()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getPointN(int)"><B>getPointN(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html#getPoints(com.vividsolutions.jts.geom.Geometry)"><B>getPoints(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A>
+<DD>Returns the Point components from a single geometry.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html#getPoints()"><B>getPoints()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OffsetPointGenerator</A>
+<DD>Gets the computed offset points.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#getPolygon()"><B>getPolygon()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A> formed by this ring and any contained holes.
+<DT><A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html#getPolygons(com.vividsolutions.jts.geom.Geometry)"><B>getPolygons(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A>
+<DD>Returns the Polygon components from a single geometry.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#getPolygons()"><B>getPolygons()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#getPolygons()"><B>getPolygons()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Gets the list of polygons formed by the polygonization.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getPrecisionModel()"><B>getPrecisionModel()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the <code>PrecisionModel</code> used by the <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#getPrecisionModel()"><B>getPrecisionModel()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Returns the PrecisionModel that Geometries created by this factory
+ will be associated with.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#getProperIntersectionPoint()"><B>getProperIntersectionPoint()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#getProperIntersectionPoint()"><B>getProperIntersectionPoint()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#getQuadrant()"><B>getQuadrant()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getQuadrant()"><B>getQuadrant()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's
+ orientation lies.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getResultCoordinates()"><B>getResultCoordinates()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#getResultGeometry(double)"><B>getResultGeometry(double)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Returns the buffer computed for a geometry for a given buffer distance.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#getResultGeometry(int)"><B>getResultGeometry(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#getResultGeometry(int)"><B>getResultGeometry(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#getResultGeometry(int)"><B>getResultGeometry(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#getResultGeometry()"><B>getResultGeometry()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#getResultGeometry()"><B>getResultGeometry()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getResultSize()"><B>getResultSize()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html#getRightmostCoordinate()"><B>getRightmostCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer">BufferSubgraph</A>
+<DD>Gets the rightmost coordinate in the edges of the subgraph
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#getRightmostEdge()"><B>getRightmostEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#getRing()"><B>getRing()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Returns this ring as a <A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>, or null if an Exception occurs while
+ creating it (such as a topology problem).
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#getRingCurve(com.vividsolutions.jts.geom.Coordinate[], int, double)"><B>getRingCurve(Coordinate[], int, double)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<DD>This method handles the degenerate cases of single points and lines,
+ as well as rings.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#getRoot()"><B>getRoot()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getSRID()"><B>getSRID()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the ID of the Spatial Reference System used by the <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#getSRID()"><B>getSRID()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html#getSafeEnvelope()"><B>getSafeEnvelope()</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>
+<DD>Returns a "safe" envelope that is guaranteed to contain the hot pixel
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getScale()"><B>getScale()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Returns the multiplying factor used to obtain a precise coordinate.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getSegment(int)"><B>getSegment(int)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#getSegmentEnd()"><B>getSegmentEnd()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Gets the second <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of the current segment.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#getSegmentFraction()"><B>getSegmentFraction()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Gets the segment fraction for this location
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#getSegmentIndex()"><B>getSegmentIndex()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#getSegmentIndex()"><B>getSegmentIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Gets the segment index for this location
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#getSegmentIndex()"><B>getSegmentIndex()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Returns the segment index for this location.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#getSegmentLength(com.vividsolutions.jts.geom.Geometry)"><B>getSegmentLength(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Gets the length of the segment in the given
+ Geometry containing this location.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#getSegmentOctant(int)"><B>getSegmentOctant(int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>Gets the octant of the segment starting at vertex <code>index</code>.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#getSegmentStart()"><B>getSegmentStart()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Gets the first <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of the current segment.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#getSegments()"><B>getSegments()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html#getSequencedLineStrings()"><B>getSequencedLineStrings()</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<DD>Returns the <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>
+ built by the sequencing process, if one exists.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#getShell()"><B>getShell()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#getStartIndex()"><B>getStartIndex()</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#getStartIndex()"><B>getStartIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Returns the index of the start of the line
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#getStartIndex()"><B>getStartIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Returns the index of the start of the line
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#getStartIndexes()"><B>getStartIndexes()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#getStartPoint()"><B>getStartPoint()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.index.bintree.Interval, double)"><B>getSubnodeIndex(Interval, double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>Returns the index of the subnode that wholely contains the given interval.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#getSubnodeIndex(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.geom.Coordinate)"><B>getSubnodeIndex(Envelope, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>Returns the index of the subquad that wholly contains the given envelope.
+<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html#getSupportingSegment()"><B>getSupportingSegment()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<DD>Gets the segment forming the base of the minimum diameter
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#getSym()"><B>getSym()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>Each Edge gives rise to a pair of symmetric DirectedEdges, in opposite
+ directions.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getSym()"><B>getSym()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns the symmetric DirectedEdge -- the other DirectedEdge associated with
+ this DirectedEdge's parent Edge.
+<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#getTime()"><B>getTime()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#getTimeString()"><B>getTimeString()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#getToNode()"><B>getToNode()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns the node to which this DirectedEdge goes.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html#getTransformation()"><B>getTransformation()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformationBuilder</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>
+ determined by the control point mappings,
+ or <code>null</code> if the control points do not determine a unique transformation.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#getTurn(double, double)"><B>getTurn(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Returns whether an angle must turn clockwise or counterclockwise
+ to overlap another angle.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#getType()"><B>getType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Gets the type of this PrecisionModel
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#getType()"><B>getType()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>Returns the type of packed coordinate sequences this factory builds, either
+ PackedCoordinateSequenceFactory#Float or
+ PackedCoordinateSequenceFactory#Double
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#getUserData()"><B>getUserData()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Gets the user data object for this geometry, if any.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html#getValidationError()"><B>getValidationError()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#getVertexIndex()"><B>getVertexIndex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>The vertex index of the vertex the iterator is currently at.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#getWidth()"><B>getWidth()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns the difference between the maximum and minimum x values.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#getWidth()"><B>getWidth()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html#getWidthCoordinate()"><B>getWidthCoordinate()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<DD>Gets the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> forming one end of the minimum diameter
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#getX()"><B>getX()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getX(int)"><B>getX(int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns ordinate X (0) of the specified coordinate.
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getX()"><B>getX()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getX(int)"><B>getX(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getX(int)"><B>getX(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#getY()"><B>getY()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#getY(int)"><B>getY(int)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns ordinate Y (1) of the specified coordinate.
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#getY()"><B>getY()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#getY(int)"><B>getY(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#getY(int)"><B>getY(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#graph"><B>graph</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_H_"><!-- --></A><H2>
+<B>H</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>HCoordinate</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>.<DD>Represents a homogeneous coordinate in a 2-D coordinate space.<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate()"><B>HCoordinate()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(double, double, double)"><B>HCoordinate(double, double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(double, double)"><B>HCoordinate(double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(com.vividsolutions.jts.geom.Coordinate)"><B>HCoordinate(Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#HCoordinate(com.vividsolutions.jts.algorithm.HCoordinate, com.vividsolutions.jts.algorithm.HCoordinate)"><B>HCoordinate(HCoordinate, HCoordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#HOLE_OUTSIDE_SHELL"><B>HOLE_OUTSIDE_SHELL</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that a hole of a polygon lies partially or completely in the exterior of the shell
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><B>HotPixel</B></A> - class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>.<DD>Implements a "hot pixel" as used in the Snap Rounding algorithm.<DT><A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html#HotPixel(com.vividsolutions.jts.geom.Coordinate, double, com.vividsolutions.jts.algorithm.LineIntersector)"><B>HotPixel(Coordinate, double, LineIntersector)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#hasChildren()"><B>hasChildren()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#hasDuplicateRings()"><B>hasDuplicateRings()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A>
+<DD>Checks for two duplicate rings in an area.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#hasInteriorIntersection()"><B>hasInteriorIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>An interior intersection is an intersection which is
+ in the interior of some segment.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#hasIntersection()"><B>hasIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Tests whether the input geometries intersect.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#hasIntersection()"><B>hasIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#hasIntersection()"><B>hasIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>Tests whether an intersection was found.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#hasIntersection()"><B>hasIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html#hasIntersection(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.CoordinateSequence)"><B>hasIntersection(CoordinateSequence, CoordinateSequence)</B></A> - 
+Method in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate">SegmentIntersectionTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html#hasIntersectionWithLineStrings(com.vividsolutions.jts.geom.CoordinateSequence, java.util.List)"><B>hasIntersectionWithLineStrings(CoordinateSequence, List)</B></A> - 
+Method in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate">SegmentIntersectionTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#hasItems()"><B>hasItems()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html#hasNext()"><B>hasNext()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#hasNext()"><B>hasNext()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Tests whether there are any vertices left to iterator over.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#hasNonEmptyElements(com.vividsolutions.jts.geom.Geometry[])"><B>hasNonEmptyElements(Geometry[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns true if the array contains any non-empty <code>Geometry</code>s.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#hasNullElements(java.lang.Object[])"><B>hasNullElements(Object[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns true if the array contains any <code>null</code> elements.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#hasProperInteriorIntersection()"><B>hasProperInteriorIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>A proper interior intersection is a proper intersection which is <b>not</b>
+ contained in the set of boundary nodes set for this SegmentIntersector.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#hasProperInteriorIntersection()"><B>hasProperInteriorIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>A proper interior intersection is a proper intersection which is <b>not</b>
+ contained in the set of boundary nodes set for this SegmentIntersector.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#hasProperIntersection()"><B>hasProperIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>A proper intersection is an intersection which is interior to at least two
+ line segments.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#hasProperIntersection()"><B>hasProperIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>A proper intersection is an intersection which is interior to at least two
+ line segments.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#hasRepeatedPoint(com.vividsolutions.jts.geom.Geometry)"><B>hasRepeatedPoint(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#hasRepeatedPoint(com.vividsolutions.jts.geom.Coordinate[])"><B>hasRepeatedPoint(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#hasRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])"><B>hasRepeatedPoints(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Returns whether #equals returns true for any two consecutive Coordinates
+ in the given array.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html#hasTooFewPoints()"><B>hasTooFewPoints()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph">GeometryGraph</A>
+<DD>This constructor is used by clients that wish to add Edges explicitly,
+ rather than adding a Geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#hashCode()"><B>hashCode()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#hashCode(double)"><B>hashCode(double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Returns a hash code for a double value, using the algorithm from
+ Joshua Bloch's book <i>Effective Java"</i>
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#hashCode()"><B>hashCode()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBReader.html#hexToBytes(java.lang.String)"><B>hexToBytes(String)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>
+<DD>Converts a hexadecimal string to a byte array.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#holeList"><B>holeList</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#holes"><B>holes</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>The interior boundaries, if any.
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html#horizontalBisector(com.vividsolutions.jts.geom.Geometry)"><B>horizontalBisector(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_I_"><!-- --></A><H2>
+<B>I</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#INSERT"><B>INSERT</B></A> - 
+Static variable in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#INSERT"><B>INSERT</B></A> - 
+Static variable in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#INSIDE_AREA"><B>INSIDE_AREA</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Special value of segment-index for locations inside area geometries.
+<DT><A HREF="com/vividsolutions/jts/geom/Location.html#INTERIOR"><B>INTERIOR</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<DD>DE-9IM row index of the interior of the first geometry and column index of
+  the interior of the second geometry.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#INTERSECTION"><B>INTERSECTION</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>The spatial functions supported by this class.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#INVALID_COORDINATE"><B>INVALID_COORDINATE</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that the <code>X</code> or <code>Y</code> ordinate of
+ a Coordinate is not a valid numeric value (e.g.
+<DT><A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><B>InStream</B></A> - interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>.<DD>A interface for classes providing an input stream of bytes.<DT><A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>InputStreamInStream</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io">InputStreamInStream</A>.<DD>An adapter to allow an <CODE>InputStream</CODE> to be used as an <A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><CODE>InStream</CODE></A><DT><A HREF="com/vividsolutions/jts/io/InputStreamInStream.html#InputStreamInStream(java.io.InputStream)"><B>InputStreamInStream(InputStream)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io">InputStreamInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>InteriorIntersectionFinder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>.<DD>Finds an interior intersection in a set of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s,
+ if one exists.<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#InteriorIntersectionFinder(com.vividsolutions.jts.algorithm.LineIntersector)"><B>InteriorIntersectionFinder(LineIntersector)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>Creates an intersection finder which finds an interior intersection
+ if one exists
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointArea</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>.<DD>Computes a point in the interior of an area geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html#InteriorPointArea(com.vividsolutions.jts.geom.Geometry)"><B>InteriorPointArea(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointLine</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointLine</A>.<DD>Computes a point in the interior of an linear geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html#InteriorPointLine(com.vividsolutions.jts.geom.Geometry)"><B>InteriorPointLine(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointLine</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointPoint</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointPoint</A>.<DD>Computes a point in the interior of an point geometry.<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html#InteriorPointPoint(com.vividsolutions.jts.geom.Geometry)"><B>InteriorPointPoint(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>IntersectionAdder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>.<DD>Computes the intersections between two line segments in <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+ and adds them to each string.<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#IntersectionAdder(com.vividsolutions.jts.algorithm.LineIntersector)"><B>IntersectionAdder(LineIntersector)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>IntersectionFinderAdder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A>.<DD>Finds proper and interior intersections in a set of SegmentStrings,
+ and adds them as nodes.<DT><A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html#IntersectionFinderAdder(com.vividsolutions.jts.algorithm.LineIntersector)"><B>IntersectionFinderAdder(LineIntersector)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A>
+<DD>Creates an intersection finder which finds all proper intersections
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>IntersectionMatrix</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>.<DD>A Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix.<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#IntersectionMatrix()"><B>IntersectionMatrix()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Creates an <code>IntersectionMatrix</code> with <code>FALSE</code>
+  dimension values.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#IntersectionMatrix(java.lang.String)"><B>IntersectionMatrix(String)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Creates an <code>IntersectionMatrix</code> with the given dimension
+  symbols.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#IntersectionMatrix(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>IntersectionMatrix(IntersectionMatrix)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Creates an <code>IntersectionMatrix</code> with the same elements as
+  <code>other</code>.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>Interval</B></A> - class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>.<DD>Represents an (1-dimensional) closed interval on the Real number line.<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#Interval()"><B>Interval()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#Interval(double, double)"><B>Interval(double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#Interval(com.vividsolutions.jts.index.bintree.Interval)"><B>Interval(Interval)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>Interval</B></A> - class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>.<DD>A contiguous portion of 1D-space.<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html#Interval(com.vividsolutions.jts.index.strtree.Interval)"><B>Interval(Interval)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html#Interval(double, double)"><B>Interval(double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>IntervalSize</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A>.<DD>Provides a test for whether an interval is
+ so small it should be considered as zero for the purposes of
+ inserting it into a binary tree.<DT><A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html#IntervalSize()"><B>IntervalSize()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation"><B>IsSimpleOp</B></A> - class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>.<DD>Tests whether a <code>Geometry</code> is simple.<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp()"><B>IsSimpleOp()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use IsSimpleOp(Geometry)</I>
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp(com.vividsolutions.jts.geom.Geometry)"><B>IsSimpleOp(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD>Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#IsSimpleOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>IsSimpleOp(Geometry, BoundaryNodeRule)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD>Creates a simplicity checker using a given <A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>BoundaryNodeRule</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>IsValidOp</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>.<DD>Implements the algorithsm required to compute the <code>isValid()</code> method
+ for <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html#IsValidOp(com.vividsolutions.jts.geom.Geometry)"><B>IsValidOp(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>ItemBoundable</B></A> - class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A>.<DD>Boundable wrapper for a non-Boundable spatial object.<DT><A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html#ItemBoundable(java.lang.Object, java.lang.Object)"><B>ItemBoundable(Object, Object)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree">ItemBoundable</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><B>ItemVisitor</B></A> - interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>.<DD>A visitor for items in an index.<DT><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>IteratedNoder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>.<DD>Nodes a set of SegmentStrings completely.<DT><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html#IteratedNoder(com.vividsolutions.jts.geom.PrecisionModel)"><B>IteratedNoder(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#inCentre(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>inCentre(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the incentre of a triangle.
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#inCentre()"><B>inCentre()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the incentre of a triangle.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#increasingDirection(com.vividsolutions.jts.geom.Coordinate[])"><B>increasingDirection(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Determines which orientation of the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array
+ is (overall) increasing.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#indexOf(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><B>indexOf(Coordinate, Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Returns the index of <code>coordinate</code> in <code>coordinates</code>.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#indexOf(com.vividsolutions.jts.geom.Coordinate)"><B>indexOf(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Computes the minimum index for a point on the line.
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#indexOf(com.vividsolutions.jts.geom.Coordinate)"><B>indexOf(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Computes the index for a given point on the line.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#indexOfAfter(com.vividsolutions.jts.geom.Coordinate, double)"><B>indexOfAfter(Coordinate, double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Finds the index for a point on the line
+ which is greater than the given index.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#indicesOf(com.vividsolutions.jts.geom.Geometry)"><B>indicesOf(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Computes the indices for a subline of the line.
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#indicesOf(com.vividsolutions.jts.geom.Geometry)"><B>indicesOf(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Computes the indices for a subline of the line.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#init()"><B>init()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Initialize to a null <code>Envelope</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#init(double, double, double, double)"><B>init(double, double, double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Initialize an <code>Envelope</code> for a region defined by maximum and minimum values.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>init(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Initialize an <code>Envelope</code> to a region defined by two Coordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#init(com.vividsolutions.jts.geom.Coordinate)"><B>init(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Initialize an <code>Envelope</code> to a region defined by a single Coordinate.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#init(com.vividsolutions.jts.geom.Envelope)"><B>init(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Initialize an <code>Envelope</code> from an existing Envelope.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#init(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>init(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#init(double, double)"><B>init(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#inputLines"><B>inputLines</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>insert(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>Insert a directed edge in the list
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>insert(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>Insert a EdgeEnd into this EdgeEndStar
+<DT><A HREF="com/vividsolutions/jts/index/SpatialIndex.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>insert(Envelope, Object)</B></A> - 
+Method in interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>
+<DD>Adds a spatial item with an extent specified by the given <A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A> to the index
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#insert(com.vividsolutions.jts.index.bintree.Interval, java.lang.Object)"><B>insert(Interval, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Root.html#insert(com.vividsolutions.jts.index.bintree.Interval, java.lang.Object)"><B>insert(Interval, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A>
+<DD>Insert an item into the tree this is the root of.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>insert(Envelope, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Root.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>insert(Envelope, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A>
+<DD>Insert an item into the quadtree this is the root of.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#insert(java.lang.Object, java.lang.Object)"><B>insert(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#insert(double, double, java.lang.Object)"><B>insert(double, double, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>Inserts an item having the given bounds into the tree.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#insert(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>insert(Envelope, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Inserts an item having the given bounds into the tree.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>insert(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html#insert(com.vividsolutions.jts.geomgraph.EdgeEnd)"><B>insert(EdgeEnd)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundleStar</A>
+<DD>Insert a EdgeEnd in order in the list.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#insertEdge(com.vividsolutions.jts.geomgraph.Edge)"><B>insertEdge(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#insertEdge(com.vividsolutions.jts.geomgraph.Edge)"><B>insertEdge(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>Inserted edges are checked to see if an identical edge already exists.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#insertEdgeEnd(com.vividsolutions.jts.geomgraph.EdgeEnd, java.lang.Object)"><B>insertEdgeEnd(EdgeEnd, Object)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>Insert an EdgeEnd into the map, and clear the edgeList cache,
+ since the list of edges has now changed
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#insertEdgeEnds(java.util.List)"><B>insertEdgeEnds(List)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#insertUniqueEdge(com.vividsolutions.jts.geomgraph.Edge)"><B>insertUniqueEdge(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>Insert an edge from one of the noded input graphs.
+<DT><A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html#instance()"><B>instance()</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">DefaultCoordinateSequenceFactory</A>
+<DD><B>Deprecated.</B>&nbsp;Returns the singleton instance of DefaultCoordinateSequenceFactory
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html#instance()"><B>instance()</B></A> - 
+Static method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequenceFactory</A>
+<DD>Returns the singleton instance of <A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><CODE>CoordinateArraySequenceFactory</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#instancePrint(java.lang.Object)"><B>instancePrint(Object)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#instancePrint(java.util.Iterator)"><B>instancePrint(Iterator)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#instancePrintIfWatch(java.lang.Object)"><B>instancePrintIfWatch(Object)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#instancePrintObject(java.lang.Object)"><B>instancePrintObject(Object)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#instancePrintWatch()"><B>instancePrintWatch()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#intLineIndex"><B>intLineIndex</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>The indexes of the endpoints of the intersection lines, in order along
+ the corresponding line
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#intPt"><B>intPt</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#interiorAngle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>interiorAngle(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Computes the interior angle between two segments of a ring.
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#intersection(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>intersection(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>Computes the (approximate) intersection point between two line segments
+ using homogeneous coordinates.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#intersection(com.vividsolutions.jts.geom.Envelope)"><B>intersection(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Computes the intersection of two <CODE>Envelopes</CODE>
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#intersection(com.vividsolutions.jts.geom.Geometry)"><B>intersection(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes a <code>Geometry</code> representing the points shared by this
+  <code>Geometry</code> and <code>other</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#intersection(com.vividsolutions.jts.geom.LineSegment)"><B>intersection(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes an intersection point between two segments, if there is one.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>intersection(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>intersection(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>intersection(Geometry, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Computes the set-theoretic intersection of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#intersection(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>intersection(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<DD>Computes the set-theoretic intersection of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/algorithm/PointLocator.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><B>intersects(Coordinate, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>
+<DD>Convenience method to test a point for intersection with
+ a Geometry
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>intersects(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Test the point q to see whether it intersects the Envelope defined by p1-p2
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>intersects(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Test the envelope defined by p1-p2 for intersection
+ with the envelope defined by q1-q2
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Envelope)"><B>intersects(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Check if the region defined by <code>other</code>
+  overlaps (intersects) the region of this <code>Envelope</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#intersects(com.vividsolutions.jts.geom.Coordinate)"><B>intersects(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Check if the point <code>p</code>
+  overlaps (lies inside) the region of this <code>Envelope</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#intersects(double, double)"><B>intersects(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Check if the point <code>(x, y)</code>
+  overlaps (lies inside) the region of this <code>Envelope</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#intersects(com.vividsolutions.jts.geom.Geometry)"><B>intersects(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry intersects the specified geometry.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html#intersects(java.lang.Object, java.lang.Object)"><B>intersects(Object, Object)</B></A> - 
+Method in interface com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree">AbstractSTRtree.IntersectsOp</A>
+<DD>For STRtrees, the bounds will be Envelopes; for SIRtrees, Intervals;
+ for other subclasses of AbstractSTRtree, some other class.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/Interval.html#intersects(com.vividsolutions.jts.index.strtree.Interval)"><B>intersects(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html#intersects(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>intersects(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#intersects(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)"><B>intersects(Polygon, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#intersects(com.vividsolutions.jts.geom.Geometry)"><B>intersects(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html#intersectsScaled(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>intersectsScaled(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround">HotPixel</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#invalidRingLines"><B>invalidRingLines</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#isAcute(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>isAcute(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Tests whether the angle between p0-p1-p2 is acute.
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#isAcute(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>isAcute(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Tests whether the triangle is acute.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#isAdjacentSegments(int, int)"><B>isAdjacentSegments(int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#isAdjacentSegments(int, int)"><B>isAdjacentSegments(int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#isAnyNull(int)"><B>isAnyNull(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#isAnyNull()"><B>isAnyNull()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#isArea()"><B>isArea()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#isArea(int)"><B>isArea(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#isArea()"><B>isArea()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#isAreaLabelsConsistent(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>isAreaLabelsConsistent(GeometryGraph)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#isBoundaryNode(int, com.vividsolutions.jts.geom.Coordinate)"><B>isBoundaryNode(int, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#isCCW(com.vividsolutions.jts.geom.Coordinate[])"><B>isCCW(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Computes whether a ring defined by an array of <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#isCCW(com.vividsolutions.jts.geom.Coordinate[])"><B>isCCW(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>
+<DD>Computes whether a ring defined by an array of <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#isClosed()"><B>isClosed()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#isClosed()"><B>isClosed()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#isClosed()"><B>isClosed()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#isClosed()"><B>isClosed()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#isCollapsed()"><B>isCollapsed()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>An Edge is collapsed if it is an Area edge and it consists of
+ two segments which are equal and opposite (eg a zero-width V).
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isCollinear()"><B>isCollinear()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isContains()"><B>isContains()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*****FF*.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#isCoordinate(com.vividsolutions.jts.geom.Coordinate)"><B>isCoordinate(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>Returns true if the given point is a vertex of this <code>LineString</code>.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#isCovered()"><B>isCovered()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isCoveredBy()"><B>isCoveredBy()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+    <code>T*F**F***</code>
+ or <code>*TF**F***</code>
+ or <code>**FT*F***</code>
+ or <code>**F*TF***</code>
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#isCoveredByA(com.vividsolutions.jts.geom.Coordinate)"><B>isCoveredByA(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>This method is used to decide if an L edge should be included in the result or not.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#isCoveredByLA(com.vividsolutions.jts.geom.Coordinate)"><B>isCoveredByLA(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>This method is used to decide if a point node should be included in the result or not.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#isCoveredSet()"><B>isCoveredSet()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isCovers()"><B>isCovers()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+    <code>T*****FF*</code>
+ or <code>*T****FF*</code>
+ or <code>***T**FF*</code>
+ or <code>****T*FF*</code>
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isCrosses(int, int)"><B>isCrosses(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this geometry crosses the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#isDebugging()"><B>isDebugging()</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#isDelete()"><B>isDelete()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#isDelete()"><B>isDelete()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isDisjoint()"><B>isDisjoint()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  FF*FF****.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#isDone()"><B>isDone()</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>
+<DD>Reports whether the application of this filter can be terminated.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#isDone()"><B>isDone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Reports that this filter should continue to be executed until 
+ all coordinates have been transformed.
+<DT><A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#isDone()"><B>isDone()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#isDone()"><B>isDone()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#isDone()"><B>isDone()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>Always process all intersections
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html#isDone()"><B>isDone()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A>
+<DD>Always process all intersections
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#isEmpty()"><B>isEmpty()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns whether or not the set of points in this <code>Geometry</code> is
+  empty.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#isEmpty()"><B>isEmpty()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#isEmpty()"><B>isEmpty()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#isEmpty()"><B>isEmpty()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#isEmpty()"><B>isEmpty()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#isEmpty()"><B>isEmpty()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#isEndOfLine()"><B>isEndOfLine()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Checks whether the iterator cursor is pointing to the
+ endpoint of a linestring.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isEndPoint()"><B>isEndPoint()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#isEndPoint(int)"><B>isEndPoint(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#isEndPoint(int)"><B>isEndPoint(int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#isEqualOnSide(com.vividsolutions.jts.geomgraph.Label, int)"><B>isEqualOnSide(Label, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#isEqualOnSide(com.vividsolutions.jts.geomgraph.TopologyLocation, int)"><B>isEqualOnSide(TopologyLocation, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isEquals(int, int)"><B>isEquals(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*F**FFF*.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)"><B>isEquivalentClass(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns whether the two <code>Geometry</code>s are equal, from the point
+  of view of the <code>equalsExact</code> method.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#isEquivalentClass(com.vividsolutions.jts.geom.Geometry)"><B>isEquivalentClass(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#isFloating()"><B>isFloating()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Tests whether the precision model supports floating point
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#isForward"><B>isForward</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#isForward()"><B>isForward()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html#isGeometryChanged()"><B>isGeometryChanged()</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>
+<DD>Reports whether the execution of this filter
+ has modified the coordinates of the geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#isGeometryChanged()"><B>isGeometryChanged()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#isHole()"><B>isHole()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#isHole()"><B>isHole()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Tests whether this ring is a hole.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#isHorizontal()"><B>isHorizontal()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Tests whether the segment is horizontal.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#isIdentity()"><B>isIdentity()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Tests if this transformation is the identity transformation.
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html#isInBoundary(int)"><B>isInBoundary(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.EndPointBoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html#isInBoundary(int)"><B>isInBoundary(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.Mod2BoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html#isInBoundary(int)"><B>isInBoundary(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html#isInBoundary(int)"><B>isInBoundary(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm">BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#isInBoundary(int)"><B>isInBoundary(int)</B></A> - 
+Method in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#isInHalfPlane(int, int)"><B>isInHalfPlane(int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>Returns whether the given quadrant lies within the given halfplane (specified
+ by its right-hand quadrant).
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#isInList(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><B>isInList(Coordinate, Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Tests whether a given point is in an array of points.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#isInResult()"><B>isInResult()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#isInResult()"><B>isInResult()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#isInRing()"><B>isInRing()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Returns the ring of directed edges that this directed edge is
+ a member of, or null if the ring has not been set.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#isIncidentEdgeInResult()"><B>isIncidentEdgeInResult()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>Tests whether any incident edge is flagged as
+ being in the result.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#isInsert()"><B>isInsert()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#isInsert()"><B>isInsert()</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)"><B>isInside(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm">MCPointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/PointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)"><B>isInside(Coordinate)</B></A> - 
+Method in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)"><B>isInside(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SIRtreePointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html#isInside(com.vividsolutions.jts.geom.Coordinate)"><B>isInside(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html#isInsideArea()"><B>isInsideArea()</B></A> - 
+Method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance">GeometryLocation</A>
+<DD>Returns whether this GeometryLocation represents a point inside an area geometry.
+<DT><A HREF="com/vividsolutions/jts/noding/ScaledNoder.html#isIntegerPrecision()"><B>isIntegerPrecision()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#isInterior()"><B>isInterior()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#isInteriorAreaEdge()"><B>isInteriorAreaEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>This is an interior Area edge if
+ 
+  its label is an Area label for both Geometries
+  and for each Geometry both sides are in the interior.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection()"><B>isInteriorIntersection()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Tests whether either intersection point is an interior point of one of the input segments.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isInteriorIntersection(int)"><B>isInteriorIntersection(int)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Tests whether either intersection point is an interior point of the specified input segment.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#isInteriorsConnected()"><B>isInteriorsConnected()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isIntersection(com.vividsolutions.jts.geom.Coordinate)"><B>isIntersection(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Test whether a point is a intersection point of two line segments.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#isIntersection(com.vividsolutions.jts.geom.Coordinate)"><B>isIntersection(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>Tests if the given point is an edge intersection
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isIntersects()"><B>isIntersects()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if <code>isDisjoint</code> returns false.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#isIsolated()"><B>isIsolated()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#isIsolated()"><B>isIsolated()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#isIsolated()"><B>isIsolated()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>An isolated component is one that does not intersect or touch any other
+ component.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#isIsolated()"><B>isIsolated()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#isLine(int)"><B>isLine(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#isLine()"><B>isLine()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#isLineEdge()"><B>isLineEdge()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>This edge is a line edge if
+ 
+  at least one of the labels is a line label
+  any labels which are not line labels have all Locations = EXTERIOR
+ 
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked"><B>isMarked</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#isMarked()"><B>isMarked()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Tests if a component has been marked at some point during the processing
+ involving this graph.
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html#isNodeAdded()"><B>isNodeAdded()</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper.HotPixelSnapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html#isNodeConsistentArea()"><B>isNodeConsistentArea()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid">ConsistentAreaTester</A>
+<DD>Check all nodes to see if their labels are consistent with area topology.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#isNonNested()"><B>isNonNested()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#isNonNested()"><B>isNonNested()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#isNonNested()"><B>isNonNested()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#isNorthern(int)"><B>isNorthern(int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>Returns true if the given quadrant is 0 or 1.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#isNull()"><B>isNull()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Returns <code>true</code> if this <code>Envelope</code> is a "null"
+  envelope.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#isNull()"><B>isNull()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>A Depth object is null (has never been initialized) if all depths are null.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#isNull(int)"><B>isNull(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#isNull(int, int)"><B>isNull(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#isNull(int)"><B>isNull(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#isNull()"><B>isNull()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#isObtuse(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>isObtuse(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Tests whether the angle between p0-p1-p2 is obtuse.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#isOnLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><B>isOnLine(Coordinate, Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Test whether a point lies on the line segments defined by a
+ list of coordinates.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#isOpposite(int, int)"><B>isOpposite(int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>Returns true if the quadrants are 1 and 3, or 2 and 4
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isOverlaps(int, int)"><B>isOverlaps(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  
+     T*T***T** (for two points or two surfaces)
+     1*T***T** (for two curves)
+  
+  .
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><B>isPointInRing(Coordinate, Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Test whether a point lies inside a ring.
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#isPointInRing(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate[])"><B>isPointInRing(Coordinate, Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>
+<DD>Computes whether a ring defined by an array of <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> is
+ oriented counter-clockwise.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#isPointwiseEqual(com.vividsolutions.jts.geomgraph.Edge)"><B>isPointwiseEqual(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isProper"><B>isProper</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#isProper()"><B>isProper()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Tests whether an intersection is proper.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#isPrunable()"><B>isPrunable()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#isRectangle()"><B>isRectangle()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#isRectangle()"><B>isRectangle()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#isRemoved()"><B>isRemoved()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Tests whether this directed edge has been removed from its containing graph
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#isRemoved()"><B>isRemoved()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>Tests whether this edge has been removed from its containing graph
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#isRemoved()"><B>isRemoved()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Tests whether this component has been removed from its containing graph
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#isRemoved()"><B>isRemoved()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Tests whether this node has been removed from its containing graph
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#isResultOfOp(com.vividsolutions.jts.geomgraph.Label, int)"><B>isResultOfOp(Label, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#isResultOfOp(int, int, int)"><B>isResultOfOp(int, int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>This method will handle arguments of Location.NONE correctly
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#isRing()"><B>isRing()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#isSameSignAndNonZero(double, double)"><B>isSameSignAndNonZero(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)"><B>isSearchMatch(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)"><B>isSearchMatch(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Root.html#isSearchMatch(com.vividsolutions.jts.index.bintree.Interval)"><B>isSearchMatch(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A>
+<DD>The root node matches all searches
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)"><B>isSearchMatch(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)"><B>isSearchMatch(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Root.html#isSearchMatch(com.vividsolutions.jts.geom.Envelope)"><B>isSearchMatch(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html#isSequenceable()"><B>isSequenceable()</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<DD>Tests whether the arrangement of linestrings has a valid
+ sequence.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html#isSequenced(com.vividsolutions.jts.geom.Geometry)"><B>isSequenced(Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<DD>Tests whether a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is sequenced correctly.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#isShell()"><B>isShell()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#isSimple()"><B>isSimple()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Tests whether this <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is simple.
+<DT><A HREF="com/vividsolutions/jts/geom/LinearRing.html#isSimple()"><B>isSimple()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>
+<DD>Returns <code>true</code>, since by definition LinearRings are always simple.
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#isSimple()"><B>isSimple()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#isSimple()"><B>isSimple()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#isSimple()"><B>isSimple()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>Tests if a valid polygon is simple.
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple()"><B>isSimple()</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD>Tests whether the geometry is simple.
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.LineString)"><B>isSimple(LineString)</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use isSimple()</I>
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.MultiLineString)"><B>isSimple(MultiLineString)</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use isSimple()</I>
+<DT><A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html#isSimple(com.vividsolutions.jts.geom.MultiPoint)"><B>isSimple(MultiPoint)</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation">IsSimpleOp</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use isSimple()</I>
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isTouches(int, int)"><B>isTouches(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  FT*******, F**T***** or F***T****.
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html#isTrue(boolean)"><B>isTrue(boolean)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>Throws an <code>AssertionFailedException</code> if the given assertion is
+  not true.
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html#isTrue(boolean, java.lang.String)"><B>isTrue(boolean, String)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>Throws an <code>AssertionFailedException</code> with the given message if
+  the given assertion is not true.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#isValid()"><B>isValid()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Tests the validity of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#isValid()"><B>isValid()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#isValid()"><B>isValid()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#isValid(com.vividsolutions.jts.geom.Geometry)"><B>isValid(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Tests whether this location refers to a valid
+ location on the given linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html#isValid()"><B>isValid()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding">FastNodingValidator</A>
+<DD>Checks for an intersection and 
+ reports if one is found.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#isValid(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int, com.vividsolutions.jts.geom.Geometry)"><B>isValid(Geometry, Geometry, int, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#isValid(int)"><B>isValid(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#isValid()"><B>isValid()</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Tests if the <A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A> ring formed by this edge ring is topologically valid.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html#isValid(com.vividsolutions.jts.geom.Coordinate)"><B>isValid(Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<DD>Checks whether a coordinate is valid for processing.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html#isValid()"><B>isValid()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#isValidIndex(double)"><B>isValidIndex(double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Tests whether an index is in the valid index range for the line.
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#isValidIndex(com.vividsolutions.jts.linearref.LinearLocation)"><B>isValidIndex(LinearLocation)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Tests whether an index is in the valid index range for the line.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#isVertex()"><B>isVertex()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Tests whether this location refers to a vertex
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#isVertical()"><B>isVertical()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Tests whether the segment is vertical.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#isVisited()"><B>isVisited()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#isVisited()"><B>isVisited()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited"><B>isVisited</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#isVisited()"><B>isVisited()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Tests if a component has been visited during the course of a graph algorithm
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#isWithin()"><B>isWithin()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+  T*F**F***.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, double)"><B>isWithinDistance(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Tests whether the distance from this <code>Geometry</code>
+ to another is less than or equal to a specified value.
+<DT><A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html#isWithinDistance(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)"><B>isWithinDistance(Geometry, Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance">DistanceOp</A>
+<DD>Test whether two geometries lie within a given distance of each other.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html#isZeroWidth(double, double)"><B>isZeroWidth(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A>
+<DD>Computes whether the interval [min, max] is effectively zero width.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#items"><B>items</B></A> - 
+Variable in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#items"><B>items</B></A> - 
+Variable in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>Iterator access to the ordered list of edges is optimized by
+ copying the map collection to a list.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>Returns an iterator of <A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>EdgeIntersection</CODE></A>s
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<DD>returns an iterator of SegmentNodes
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Returns an Iterator over the DirectedEdges, in ascending order by angle with the positive x-axis.
+<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html#iterator()"><B>iterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<DD>Returns an Iterator over the Nodes in this NodeMap, sorted in ascending order
+ by angle with the positive x-axis.
+</DL>
+<HR>
+<A NAME="_J_"><!-- --></A><H2>
+<B>J</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts"><B>JTSVersion</B></A> - class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>.<DD>JTS API version information.</DL>
+<HR>
+<A NAME="_K_"><!-- --></A><H2>
+<B>K</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>Key</B></A> - class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>.<DD>A Key is a unique identifier for a node in a tree.<DT><A HREF="com/vividsolutions/jts/index/bintree/Key.html#Key(com.vividsolutions.jts.index.bintree.Interval)"><B>Key(Interval)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree">Key</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Key</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>.<DD>A Key is a unique identifier for a node in a quadtree.<DT><A HREF="com/vividsolutions/jts/index/quadtree/Key.html#Key(com.vividsolutions.jts.geom.Envelope)"><B>Key(Envelope)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree">Key</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_L_"><!-- --></A><H2>
+<B>L</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#L"><B>L</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Dimension value of a curve (1).
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#LEFT"><B>LEFT</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Position.html#LEFT"><B>LEFT</B></A> - 
+Static variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>
+<DD>An indicator that a Location is to the <i>left</i> of a GraphComponent
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#LITTLE_ENDIAN"><B>LITTLE_ENDIAN</B></A> - 
+Static variable in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>Label</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>.<DD>A <code>Label</code> indicates the topological relationship of a component
+ of a topology graph to a given <code>Geometry</code>.<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#Label(int)"><B>Label(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Construct a Label with a single location for both Geometries.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#Label(int, int)"><B>Label(int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Construct a Label with a single location for both Geometries.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#Label(int, int, int)"><B>Label(int, int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Construct a Label with On, Left and Right locations for both Geometries.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#Label(int, int, int, int)"><B>Label(int, int, int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Construct a Label with On, Left and Right locations for both Geometries.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#Label(com.vividsolutions.jts.geomgraph.Label)"><B>Label(Label)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Construct a Label with the same values as the argument Label.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>LengthIndexedLine</B></A> - class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>.<DD>Supports linear referencing along a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ using the length along the line as the index.<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#LengthIndexedLine(com.vividsolutions.jts.geom.Geometry)"><B>LengthIndexedLine(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Constructs an object which allows a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ to be linearly referenced using length as an index.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>LengthLocationMap</B></A> - class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>.<DD>Computes the <A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> for a given length
+ along a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html#LengthLocationMap(com.vividsolutions.jts.geom.Geometry)"><B>LengthLocationMap(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref">LengthLocationMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>LineBuilder</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">LineBuilder</A>.<DD>Forms JTS LineStrings out of a the graph of <A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s
+ created by an <A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><CODE>OverlayOp</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html#LineBuilder(com.vividsolutions.jts.operation.overlay.OverlayOp, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.PointLocator)"><B>LineBuilder(OverlayOp, GeometryFactory, PointLocator)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">LineBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>LineIntersector</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>.<DD>A LineIntersector is an algorithm that can both test whether
+ two line segments intersect and compute the intersection point
+ if they do.<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#LineIntersector()"><B>LineIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeDirectedEdge</B></A> - class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>.<DD>A <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> of a 
+ <A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html#LineMergeDirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)"><B>LineMergeDirectedEdge(Node, Node, Coordinate, boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeDirectedEdge</A>
+<DD>Constructs a LineMergeDirectedEdge connecting the <code>from</code> node to the
+ <code>to</code> node.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeEdge</B></A> - class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeEdge</A>.<DD>An edge of a <A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><CODE>LineMergeGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html#LineMergeEdge(com.vividsolutions.jts.geom.LineString)"><B>LineMergeEdge(LineString)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeEdge</A>
+<DD>Constructs a LineMergeEdge with vertices given by the specified LineString.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeGraph</B></A> - class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeGraph</A>.<DD>A planar graph of edges that is analyzed to sew the edges together.<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html#LineMergeGraph()"><B>LineMergeGraph()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMergeGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMerger</B></A> - class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A>.<DD>Sews together a set of fully noded LineStrings.<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html#LineMerger()"><B>LineMerger()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge">LineMerger</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>LineSegment</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>.<DD>Represents a line segment defined by two <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#LineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>LineSegment(Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#LineSegment(com.vividsolutions.jts.geom.LineSegment)"><B>LineSegment(LineSegment)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#LineSegment()"><B>LineSegment()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>LineSegmentIndex</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>.<DD>An spatial index on a set of <A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><CODE>LineSegment</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html#LineSegmentIndex()"><B>LineSegmentIndex()</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineSequencer</B></A> - class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>.<DD>Builds a sequence from a set of LineStrings so that
+ they are ordered end to end.<DT><A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html#LineSequencer()"><B>LineSequencer()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge">LineSequencer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>LineString</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>.<DD>Basic implementation of <code>LineString</code>.<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#LineString(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>LineString(Coordinate[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#LineString(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)"><B>LineString(CoordinateSequence, GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>LineStringSnapper</B></A> - class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">LineStringSnapper</A>.<DD>Snaps the vertices and segments of a LineString to a set of target snap vertices.<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html#LineStringSnapper(com.vividsolutions.jts.geom.LineString, double)"><B>LineStringSnapper(LineString, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">LineStringSnapper</A>
+<DD>Creates a new snapper using the points in the given <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>
+ as target snap points.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html#LineStringSnapper(com.vividsolutions.jts.geom.Coordinate[], double)"><B>LineStringSnapper(Coordinate[], double)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">LineStringSnapper</A>
+<DD>Creates a new snapper using the given points
+ as target snap points.
+<DT><A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>LinearComponentExtracter</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A>.<DD>Extracts all the 1-dimensional (<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>) components from a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html#LinearComponentExtracter(java.util.List)"><B>LinearComponentExtracter(List)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util">LinearComponentExtracter</A>
+<DD>Constructs a LineExtracterFilter with a list in which to store LineStrings found.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>LinearGeometryBuilder</B></A> - class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>.<DD>Builds a linear geometry (<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>)
+ incrementally (point-by-point).<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#LinearGeometryBuilder(com.vividsolutions.jts.geom.GeometryFactory)"><B>LinearGeometryBuilder(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>LinearIterator</B></A> - class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>.<DD>An iterator over the components and coordinates of a linear geometry
+ (<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s and <A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#LinearIterator(com.vividsolutions.jts.geom.Geometry)"><B>LinearIterator(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Creates an iterator initialized to the start of a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#LinearIterator(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.linearref.LinearLocation)"><B>LinearIterator(Geometry, LinearLocation)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Creates an iterator starting at
+ a <A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A> on a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#LinearIterator(com.vividsolutions.jts.geom.Geometry, int, int)"><B>LinearIterator(Geometry, int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Creates an iterator starting at
+ a component and vertex in a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>LinearLocation</B></A> - class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>.<DD>Represents a location along a <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> or <A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A>.<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#LinearLocation()"><B>LinearLocation()</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Creates a location referring to the start of a linear geometry
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#LinearLocation(int, double)"><B>LinearLocation(int, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#LinearLocation(int, int, double)"><B>LinearLocation(int, int, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>LinearRing</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>.<DD>Models an OGC SFS <code>LinearRing</code>.<DT><A HREF="com/vividsolutions/jts/geom/LinearRing.html#LinearRing(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>LinearRing(Coordinate[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/LinearRing.html#LinearRing(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)"><B>LinearRing(CoordinateSequence, GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>
+<DD>Constructs a <code>LinearRing</code> with the vertices
+ specifed by the given <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>Location</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>.<DD>Constants representing the location of a point relative to a geometry.<DT><A HREF="com/vividsolutions/jts/geom/Location.html#Location()"><B>Location()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>LocationIndexedLine</B></A> - class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>.<DD>Supports linear referencing
+ along a linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ using <A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><CODE>LinearLocation</CODE></A>s as the index.<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#LocationIndexedLine(com.vividsolutions.jts.geom.Geometry)"><B>LocationIndexedLine(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Constructs an object which allows linear referencing along
+ a given linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#label"><B>label</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#label"><B>label</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#lastNode(java.util.List)"><B>lastNode(List)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#length(com.vividsolutions.jts.geom.CoordinateSequence)"><B>length(CoordinateSequence)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Computes the length of a linestring specified by a sequence of points.
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#li"><B>li</B></A> - 
+Variable in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#linkAllDirectedEdges()"><B>linkAllDirectedEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkAllDirectedEdges()"><B>linkAllDirectedEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>Link the DirectedEdges at the nodes of the graph.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#linkDirectedEdgesForMinimalEdgeRings()"><B>linkDirectedEdgesForMinimalEdgeRings()</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>
+<DD>For all nodes in this EdgeRing,
+ link the DirectedEdges at the node to form minimalEdgeRings
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#linkMinimalDirectedEdges(com.vividsolutions.jts.geomgraph.EdgeRing)"><B>linkMinimalDirectedEdges(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#linkResultDirectedEdges()"><B>linkResultDirectedEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>Traverse the star of DirectedEdges, linking the included edges together.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkResultDirectedEdges(java.util.Collection)"><B>linkResultDirectedEdges(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>For nodes in the Collection, link the DirectedEdges at the node that are in the result.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#linkResultDirectedEdges()"><B>linkResultDirectedEdges()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>Link the DirectedEdges at the nodes of the graph.
+<DT><A HREF="com/vividsolutions/jts/algorithm/PointLocator.html#locate(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><B>locate(Coordinate, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>
+<DD>Computes the topological relationship (<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A>) of a single point
+ to a Geometry.
+<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html#locate(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry)"><B>locate(Coordinate, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInAreaLocator</A>
+<DD>locate is the main location function.
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#longestSideLength(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>longestSideLength(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the length of the longest side of a triangle
+</DL>
+<HR>
+<A NAME="_M_"><!-- --></A><H2>
+<B>M</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#M"><B>M</B></A> - 
+Static variable in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#MAJOR"><B>MAJOR</B></A> - 
+Static variable in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>The major version number.
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#MAXIMUM_SCAN_SEGMENT_COUNT"><B>MAXIMUM_SCAN_SEGMENT_COUNT</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A>
+<DD>Crossover size at which brute-force intersection scanning
+ is slower than indexed intersection detection.
+<DT><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html#MAX_ITER"><B>MAX_ITER</B></A> - 
+Static variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>MCIndexNoder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>.<DD>Nodes a set of <CODE>SegmentStrings</CODE> using a index based
+ on <A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s and a <A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A>.<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html#MCIndexNoder()"><B>MCIndexNoder()</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>MCIndexNoder.SegmentOverlapAction</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder.SegmentOverlapAction</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html#MCIndexNoder.SegmentOverlapAction(com.vividsolutions.jts.noding.SegmentIntersector)"><B>MCIndexNoder.SegmentOverlapAction(SegmentIntersector)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder.SegmentOverlapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexPointSnapper</B></A> - class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A>.<DD>"Snaps" all <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s in a <A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><CODE>SpatialIndex</CODE></A> containing
+ <A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s to a given <A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><CODE>HotPixel</CODE></A>.<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#MCIndexPointSnapper(java.util.Collection, com.vividsolutions.jts.index.SpatialIndex)"><B>MCIndexPointSnapper(Collection, SpatialIndex)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexPointSnapper.HotPixelSnapAction</B></A> - class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper.HotPixelSnapAction</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html#MCIndexPointSnapper.HotPixelSnapAction(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)"><B>MCIndexPointSnapper.HotPixelSnapAction(HotPixel, SegmentString, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper.HotPixelSnapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexSnapRounder</B></A> - class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>.<DD>Uses Snap Rounding to compute a rounded,
+ fully noded arrangement from a set of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html#MCIndexSnapRounder(com.vividsolutions.jts.geom.PrecisionModel)"><B>MCIndexSnapRounder(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexSnapRounder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>MCPointInRing</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm">MCPointInRing</A>.<DD>Implements <A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>PointInRing</CODE></A>
+ using <A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><CODE>MonotoneChain</CODE></A>s and a <CODE>BinTree</CODE> index to
+ increase performance.<DT><A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html#MCPointInRing(com.vividsolutions.jts.geom.LinearRing)"><B>MCPointInRing(LinearRing)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm">MCPointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#MINOR"><B>MINOR</B></A> - 
+Static variable in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>The minor version number.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html#MIN_BINARY_EXPONENT"><B>MIN_BINARY_EXPONENT</B></A> - 
+Static variable in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree">IntervalSize</A>
+<DD>This value is chosen to be a few powers of 2 less than the
+ number of bits available in the double representation (i.e.
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MOD2_BOUNDARY_RULE"><B>MOD2_BOUNDARY_RULE</B></A> - 
+Static variable in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>
+<DD>The Mod-2 Boundary Node Rule (as used in the OGC SFS).
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MONOVALENT_ENDPOINT_BOUNDARY_RULE"><B>MONOVALENT_ENDPOINT_BOUNDARY_RULE</B></A> - 
+Static variable in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>
+<DD>The Monovalent Endpoint Boundary Node Rule.
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#MULTIVALENT_ENDPOINT_BOUNDARY_RULE"><B>MULTIVALENT_ENDPOINT_BOUNDARY_RULE</B></A> - 
+Static variable in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>
+<DD>The MultiValent Endpoint Boundary Node Rule.
+<DT><A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>Matrix</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util">Matrix</A>.<DD>Implements some 2D matrix operations 
+ (in particular, solving systems of linear equations).<DT><A HREF="com/vividsolutions/jts/geom/util/Matrix.html#Matrix()"><B>Matrix()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util">Matrix</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>MaximalEdgeRing</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>.<DD>A ring of <A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s which may contain nodes of degree > 2.<DT><A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#MaximalEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><B>MaximalEdgeRing(DirectedEdge, GeometryFactory, CGAlgorithms)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>MinimalEdgeRing</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A>.<DD>A ring of <A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>Edge</CODE></A>s with the property that no node
+ has degree greater than 2.<DT><A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html#MinimalEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><B>MinimalEdgeRing(DirectedEdge, GeometryFactory, CGAlgorithms)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>MinimumDiameter</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>.<DD>Computes the minimum diameter of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html#MinimumDiameter(com.vividsolutions.jts.geom.Geometry)"><B>MinimumDiameter(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<DD>Compute a minimum diameter for a giver <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html#MinimumDiameter(com.vividsolutions.jts.geom.Geometry, boolean)"><B>MinimumDiameter(Geometry, boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm">MinimumDiameter</A>
+<DD>Compute a minimum diameter for a giver <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+ with a hint if
+ the Geometry is convex
+ (e.g.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChain</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html#MonotoneChain(com.vividsolutions.jts.geomgraph.index.MonotoneChainEdge, int)"><B>MonotoneChain(MonotoneChainEdge, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChain</B></A> - class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>.<DD>MonotoneChains are a way of partitioning the segments of a linestring to
+ allow for fast searching of intersections.<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#MonotoneChain(com.vividsolutions.jts.geom.Coordinate[], int, int, java.lang.Object)"><B>MonotoneChain(Coordinate[], int, int, Object)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainBuilder</B></A> - class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>.<DD>A MonotoneChainBuilder implements functions to determine the monotone chains
+ in a sequence of points.<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#MonotoneChainBuilder()"><B>MonotoneChainBuilder()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChainEdge</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>.<DD>MonotoneChains are a way of partitioning the segments of an edge to
+ allow for fast searching of intersections.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html#MonotoneChainEdge(com.vividsolutions.jts.geomgraph.Edge)"><B>MonotoneChainEdge(Edge)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChainIndexer</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainIndexer</A>.<DD>MonotoneChains are a way of partitioning the segments of an edge to
+ allow for fast searching of intersections.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html#MonotoneChainIndexer()"><B>MonotoneChainIndexer()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainIndexer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainOverlapAction</B></A> - class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>.<DD>The action for the internal iterator for performing
+ overlap queries on a MonotoneChain<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#MonotoneChainOverlapAction()"><B>MonotoneChainOverlapAction()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainSelectAction</B></A> - class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>.<DD>The action for the internal iterator for performing
+ envelope select queries on a MonotoneChain<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#MonotoneChainSelectAction()"><B>MonotoneChainSelectAction()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>MultiLineString</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>.<DD>Basic implementation of <code>MultiLineString</code>.<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>MultiLineString(LineString[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#MultiLineString(com.vividsolutions.jts.geom.LineString[], com.vividsolutions.jts.geom.GeometryFactory)"><B>MultiLineString(LineString[], GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>MultiPoint</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>.<DD>Models a collection of <code>Point</code>s.<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>MultiPoint(Point[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPoint.html#MultiPoint(com.vividsolutions.jts.geom.Point[], com.vividsolutions.jts.geom.GeometryFactory)"><B>MultiPoint(Point[], GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">MultiPoint</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>MultiPolygon</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>.<DD>Basic implementation of <code>MultiPolygon</code>.<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>MultiPolygon(Polygon[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/MultiPolygon.html#MultiPolygon(com.vividsolutions.jts.geom.Polygon[], com.vividsolutions.jts.geom.GeometryFactory)"><B>MultiPolygon(Polygon[], GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">MultiPolygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>Prints the current JTS version to stdout.
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>Prints the status of debugging to <tt>System.out</tt>
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#makePrecise(double)"><B>makePrecise(double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Rounds a numeric value to the PrecisionModel grid.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#makePrecise(com.vividsolutions.jts.geom.Coordinate)"><B>makePrecise(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Rounds a Coordinate to the PrecisionModel grid.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#matches(int, char)"><B>matches(int, char)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns true if the dimension value satisfies the dimension symbol.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#matches(java.lang.String, java.lang.String)"><B>matches(String, String)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns true if each of the actual dimension symbols satisfies the
+  corresponding required dimension symbol.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#matches(java.lang.String)"><B>matches(String)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns whether the elements of this <code>IntersectionMatrix</code>
+  satisfies the required dimension symbols.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#max"><B>max</B></A> - 
+Variable in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#maximumCommonMantissa(double, double)"><B>maximumCommonMantissa(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#maximumPreciseValue"><B>maximumPreciseValue</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>The maximum precise value representable in a double.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#merge(com.vividsolutions.jts.geomgraph.Label)"><B>merge(Label)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Merge this label with another one.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#merge(com.vividsolutions.jts.geomgraph.TopologyLocation)"><B>merge(TopologyLocation)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>merge updates only the NULL attributes of this object
+ with the attributes of another.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html#merge(com.vividsolutions.jts.noding.SegmentString, com.vividsolutions.jts.noding.SegmentString, boolean)"><B>merge(SegmentString, SegmentString, boolean)</B></A> - 
+Method in interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding">SegmentStringDissolver.SegmentStringMerger</A>
+<DD>Updates the context data of a SegmentString
+ when an identical (up to orientation) one is found during dissolving.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)"><B>mergeLabel(Label)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label, int)"><B>mergeLabel(Label, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>Merge the RHS label from a DirectedEdge into the label for this EdgeRing.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#mergeLabel(com.vividsolutions.jts.geomgraph.Node)"><B>mergeLabel(Node)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#mergeLabel(com.vividsolutions.jts.geomgraph.Label)"><B>mergeLabel(Label)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>To merge labels for two nodes,
+ the merged location for each LabelElement is computed.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#mergeSymLabels()"><B>mergeSymLabels()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>For each dirEdge in the star,
+ merge the label from the sym dirEdge into the label
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#midPoint()"><B>midPoint()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the midpoint of the segment
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#min"><B>min</B></A> - 
+Variable in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#minCoordinate(com.vividsolutions.jts.geom.Coordinate[])"><B>minCoordinate(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Returns the minimum coordinate, using the usual lexicographic comparison.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#mostPrecise(com.vividsolutions.jts.geom.PrecisionModel, com.vividsolutions.jts.geom.PrecisionModel)"><B>mostPrecise(PrecisionModel, PrecisionModel)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Determines which of two <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>s is the most precise
+ (allows the greatest number of significant digits).
+</DL>
+<HR>
+<A NAME="_N_"><!-- --></A><H2>
+<B>N</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#NESTED_HOLES"><B>NESTED_HOLES</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that a hole lies in the interior of another hole in the same polygon
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#NESTED_SHELLS"><B>NESTED_SHELLS</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that a polygon component of a MultiPolygon lies inside another polygonal component
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#NONE"><B>NONE</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Constant representing no orientation
+<DT><A HREF="com/vividsolutions/jts/geom/Location.html#NONE"><B>NONE</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<DD>Used for uninitialized location values.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>Node</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#Node(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.EdgeEndStar)"><B>Node(Coordinate, EdgeEndStar)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>Node</B></A> - class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>.<DD>A node of a <A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.<DT><A HREF="com/vividsolutions/jts/index/bintree/Node.html#Node(com.vividsolutions.jts.index.bintree.Interval, int)"><B>Node(Interval, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Node</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>.<DD>Represents a node of a <A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>.<DT><A HREF="com/vividsolutions/jts/index/quadtree/Node.html#Node(com.vividsolutions.jts.geom.Envelope, int)"><B>Node(Envelope, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>Node</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>.<DD>A node in a <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>is a location where 0 or more <A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A>s
+ meet.<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#Node(com.vividsolutions.jts.geom.Coordinate)"><B>Node(Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Constructs a Node with the given location.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#Node(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.planargraph.DirectedEdgeStar)"><B>Node(Coordinate, DirectedEdgeStar)</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>Constructs a Node with the given location and collection of outgoing DirectedEdges.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>NodeBase</B></A> - class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>.<DD>The base class for nodes in a <A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#NodeBase()"><B>NodeBase()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NodeBase</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>.<DD>The base class for nodes in a <A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>.<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#NodeBase()"><B>NodeBase()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeFactory</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html#NodeFactory()"><B>NodeFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph">NodeFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeMap</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>.<DD>A map of nodes, indexed by the coordinate of the node<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#NodeMap(com.vividsolutions.jts.geomgraph.NodeFactory)"><B>NodeMap(NodeFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>NodeMap</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>.<DD>A map of <A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s, indexed by the coordinate of the node.<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html#NodeMap()"><B>NodeMap()</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<DD>Constructs a NodeMap without any Nodes.
+<DT><A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><B>Noder</B></A> - interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>.<DD>Computes all intersections between segments in a set of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>NodingValidator</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding">NodingValidator</A>.<DD>Validates that a collection of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s is correctly noded.<DT><A HREF="com/vividsolutions/jts/noding/NodingValidator.html#NodingValidator(java.util.Collection)"><B>NodingValidator(Collection)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding">NodingValidator</A>
+<DD>Creates a new validator for the given collection 
+ of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NonRobustCGAlgorithms</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>.<DD>Non-robust versions of various fundamental Computational Geometric algorithms,
+ <b>FOR TESTING PURPOSES ONLY!</b>.<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html#NonRobustCGAlgorithms()"><B>NonRobustCGAlgorithms()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">NonRobustCGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NonRobustLineIntersector</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>.<DD>A non-robust version of .<DT><A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html#NonRobustLineIntersector()"><B>NonRobustLineIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">NonRobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util"><B>NoninvertibleTransformationException</B></A> - exception com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A>.<DD>Indicates that an <A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><CODE>AffineTransformation</CODE></A>
+ is non-invertible.<DT><A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html#NoninvertibleTransformationException()"><B>NoninvertibleTransformationException()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html#NoninvertibleTransformationException(java.lang.String)"><B>NoninvertibleTransformationException(String)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">NoninvertibleTransformationException</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm"><B>NotRepresentableException</B></A> - exception com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A>.<DD>Indicates that a <A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><CODE>HCoordinate</CODE></A> has been computed which is
+ not representable on the Cartesian plane.<DT><A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html#NotRepresentableException()"><B>NotRepresentableException()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">NotRepresentableException</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#nSnaps"><B>nSnaps</B></A> - 
+Static variable in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html#next()"><B>next()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearIterator.html#next()"><B>next()</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref">LinearIterator</A>
+<DD>Moves the iterator ahead to the next vertex and (possibly) linear component.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#nodeIterator()"><B>nodeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Returns an Iterator over the Nodes in this PlanarGraph.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#nodeIterator()"><B>nodeIterator()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Returns an <CODE>Iterator</CODE> over the <A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Node</CODE></A>s in this graph.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#nodeMap"><B>nodeMap</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#nodeMap"><B>nodeMap</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#nodeSize()"><B>nodeSize()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>Compute the total number of nodes in the tree
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#nodes"><B>nodes</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#nonRobustComputeEdgeDistance(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>nonRobustComputeEdgeDistance(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>This function is non-robust, since it may compute the square of large numbers.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#normalize(double)"><B>normalize(double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Computes the normalized value of an angle, which is the
+ equivalent angle in the range [ -Pi, Pi ].
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Converts this <code>Geometry</code> to <b>normal form</b> (or <b>
+  canonical form</b> ).
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollection.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Puts the line segment into a normalized form.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>Normalizes a LineString.
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#normalize()"><B>normalize()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>Normalize the depths for each geometry, if they are non-null.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#normalizePositive(double)"><B>normalizePositive(double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Computes the normalized positive value of an angle, which is the
+ equivalent angle in the range [ 0, 2*Pi ].
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#numCommonMantissaBits(com.vividsolutions.jts.index.quadtree.DoubleBits)"><B>numCommonMantissaBits(DoubleBits)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>This computes the number of common most-significant bits in the mantissa.
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#numCommonMostSigMantissaBits(long, long)"><B>numCommonMostSigMantissaBits(long, long)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>This computes the number of common most-significant bits in the mantissas
+ of two double-precision numbers.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#numInteriorIntersections"><B>numInteriorIntersections</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#numIntersections"><B>numIntersections</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#numProperIntersections"><B>numProperIntersections</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#numTests"><B>numTests</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#numTests"><B>numTests</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_O_"><!-- --></A><H2>
+<B>O</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html#OGC_SFS_BOUNDARY_RULE"><B>OGC_SFS_BOUNDARY_RULE</B></A> - 
+Static variable in interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>
+<DD>The Boundary Node Rule specified by the OGC Simple Features Specification,
+ equal to the Mod-2 rule.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html#OLDcompare(java.lang.Object, java.lang.Object)"><B>OLDcompare(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays.BidirectionalComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Position.html#ON"><B>ON</B></A> - 
+Static variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>
+<DD>An indicator that a Location is <i>on</i> a GraphComponent
+<DT><A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>Octant</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding">Octant</A>.<DD>Methods for computing and working with octants of the Cartesian plane
+ Octants are numbered as follows:
+ <DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>OffsetCurveBuilder</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>.<DD>Computes the raw offset curve for a
+ single <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> component (ring, line or point).<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#OffsetCurveBuilder(com.vividsolutions.jts.geom.PrecisionModel)"><B>OffsetCurveBuilder(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#OffsetCurveBuilder(com.vividsolutions.jts.geom.PrecisionModel, int)"><B>OffsetCurveBuilder(PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>OffsetCurveSetBuilder</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveSetBuilder</A>.<DD>Creates all the raw offset curves for a buffer of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html#OffsetCurveSetBuilder(com.vividsolutions.jts.geom.Geometry, double, com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder)"><B>OffsetCurveSetBuilder(Geometry, double, OffsetCurveBuilder)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveSetBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>OffsetPointGenerator</B></A> - class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OffsetPointGenerator</A>.<DD>Generates points offset by a given distance 
+ from both sides of the midpoint of
+ all segments in a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html#OffsetPointGenerator(com.vividsolutions.jts.geom.Geometry, double)"><B>OffsetPointGenerator(Geometry, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OffsetPointGenerator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>OrientedCoordinateArray</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding">OrientedCoordinateArray</A>.<DD>Allows comparing <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> arrays
+ in an orientation-independent way.<DT><A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html#OrientedCoordinateArray(com.vividsolutions.jts.geom.Coordinate[])"><B>OrientedCoordinateArray(Coordinate[])</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding">OrientedCoordinateArray</A>
+<DD>Creates a new <A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><CODE>OrientedCoordinateArray</CODE></A>
+ for the given <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> array.
+<DT><A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>OutStream</B></A> - interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A>.<DD>A interface for classes providing an output stream of bytes.<DT><A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>OutputStreamOutStream</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io">OutputStreamOutStream</A>.<DD>An adapter to allow an <CODE>OutputStream</CODE> to be used as an <A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A><DT><A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html#OutputStreamOutStream(java.io.OutputStream)"><B>OutputStreamOutStream(OutputStream)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io">OutputStreamOutStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>OverlayNodeFactory</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayNodeFactory</A>.<DD>Creates nodes for use in the <A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>PlanarGraph</CODE></A>s constructed during
+ overlay operations.<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html#OverlayNodeFactory()"><B>OverlayNodeFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayNodeFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>OverlayOp</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>.<DD>Computes the overlay of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#OverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>OverlayOp(Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>OverlayResultValidator</B></A> - class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A>.<DD>Validates that the result of an overlay operation is
+ geometrically correct within a given tolerance.<DT><A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html#OverlayResultValidator(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>OverlayResultValidator(Geometry, Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate">OverlayResultValidator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/Octant.html#octant(double, double)"><B>octant(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding">Octant</A>
+<DD>Returns the octant of a directed line segment (specified as x and y
+ displacements, which cannot both be 0).
+<DT><A HREF="com/vividsolutions/jts/noding/Octant.html#octant(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>octant(Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding">Octant</A>
+<DD>Returns the octant of a directed line segment from p0 to p1.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Position.html#opposite(int)"><B>opposite(int)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>
+<DD>Returns LEFT if the position is RIGHT, RIGHT if the position is LEFT, or the position
+ otherwise.
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#orientationIndex(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>orientationIndex(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Returns the index of the direction of the point <code>q</code>
+ relative to a
+ vector specified by <code>p1-p2</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#orientationIndex(com.vividsolutions.jts.geom.LineSegment)"><B>orientationIndex(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Determines the orientation of a LineSegment relative to this segment.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#outEdges"><B>outEdges</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>The underlying list of outgoing DirectedEdges
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)"><B>overlap(MonotoneChain, int, MonotoneChain, int)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>
+<DD>This function can be overridden if the original chains are needed
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlap(com.vividsolutions.jts.geom.LineSegment, com.vividsolutions.jts.geom.LineSegment)"><B>overlap(LineSegment, LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>
+<DD>This is a convenience function which can be overridden to obtain the actual
+ line segments which overlap
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html#overlap(com.vividsolutions.jts.index.sweepline.SweepLineInterval, com.vividsolutions.jts.index.sweepline.SweepLineInterval)"><B>overlap(SweepLineInterval, SweepLineInterval)</B></A> - 
+Method in interface com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline">SweepLineOverlapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html#overlap(com.vividsolutions.jts.index.chain.MonotoneChain, int, com.vividsolutions.jts.index.chain.MonotoneChain, int)"><B>overlap(MonotoneChain, int, MonotoneChain, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding">MCIndexNoder.SegmentOverlapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlapSeg1"><B>overlapSeg1</B></A> - 
+Variable in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html#overlapSeg2"><B>overlapSeg2</B></A> - 
+Variable in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainOverlapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#overlaps(com.vividsolutions.jts.geom.Envelope)"><B>overlaps(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use #intersects instead. In the future, #overlaps may be
+ changed to be a true overlap check; that is, whether the intersection is
+ two-dimensional.</I>
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#overlaps(com.vividsolutions.jts.geom.Coordinate)"><B>overlaps(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use #intersects instead.</I>
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#overlaps(double, double)"><B>overlaps(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use #intersects instead.</I>
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#overlaps(com.vividsolutions.jts.geom.Geometry)"><B>overlaps(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry overlaps the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#overlaps(com.vividsolutions.jts.index.bintree.Interval)"><B>overlaps(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#overlaps(double, double)"><B>overlaps(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)"><B>overlayOp(Geometry, Geometry, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)"><B>overlayOp(Geometry, Geometry, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#overlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, int)"><B>overlayOp(Geometry, Geometry, int)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_P_"><!-- --></A><H2>
+<B>P</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#P"><B>P</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Dimension value of a point (0).
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#PATCH"><B>PATCH</B></A> - 
+Static variable in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>The patch version number.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#PI_OVER_2"><B>PI_OVER_2</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#PI_OVER_4"><B>PI_OVER_4</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#PI_TIMES_2"><B>PI_TIMES_2</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence</B></A> - class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>.<DD>A <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A> implementation based on a packed arrays.<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#PackedCoordinateSequence()"><B>PackedCoordinateSequence()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence.Double</B></A> - class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>.<DD>Packed coordinate sequence implementation based on doubles<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(double[], int)"><B>PackedCoordinateSequence.Double(double[], int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>Builds a new packed coordinate sequence
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(float[], int)"><B>PackedCoordinateSequence.Double(float[], int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>Builds a new packed coordinate sequence out of a float coordinate array
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(com.vividsolutions.jts.geom.Coordinate[], int)"><B>PackedCoordinateSequence.Double(Coordinate[], int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>Builds a new packed coordinate sequence out of a coordinate array
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(com.vividsolutions.jts.geom.Coordinate[])"><B>PackedCoordinateSequence.Double(Coordinate[])</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>Builds a new packed coordinate sequence out of a coordinate array
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#PackedCoordinateSequence.Double(int, int)"><B>PackedCoordinateSequence.Double(int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>Builds a new empty packed coordinate sequence of a given size and dimension
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence.Float</B></A> - class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>.<DD>Packed coordinate sequence implementation based on floats<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(float[], int)"><B>PackedCoordinateSequence.Float(float[], int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>Constructs a packed coordinate sequence from an array of <code>float<code>s
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(double[], int)"><B>PackedCoordinateSequence.Float(double[], int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>Constructs a packed coordinate sequence from an array of <code>double<code>s
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(com.vividsolutions.jts.geom.Coordinate[], int)"><B>PackedCoordinateSequence.Float(Coordinate[], int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>Constructs a packed coordinate sequence out of a coordinate array
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#PackedCoordinateSequence.Float(int, int)"><B>PackedCoordinateSequence.Float(int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>Constructs an empty packed coordinate sequence of a given size and dimension
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequenceFactory</B></A> - class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>.<DD>Builds packed array coordinate sequences.<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#PackedCoordinateSequenceFactory()"><B>PackedCoordinateSequenceFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>Creates a new PackedCoordinateSequenceFactory
+ of type DOUBLE.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#PackedCoordinateSequenceFactory(int)"><B>PackedCoordinateSequenceFactory(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>Creates a new PackedCoordinateSequenceFactory
+ of the given type.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#PackedCoordinateSequenceFactory(int, int)"><B>PackedCoordinateSequenceFactory(int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>Creates a new PackedCoordinateSequenceFactory
+ of the given type.
+<DT><A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io"><B>ParseException</B></A> - exception com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A>.<DD>Thrown by a <code>WKTReader</code> when a parsing problem occurs.<DT><A HREF="com/vividsolutions/jts/io/ParseException.html#ParseException(java.lang.String)"><B>ParseException(String)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A>
+<DD>Creates a <code>ParseException</code> with the given detail message.
+<DT><A HREF="com/vividsolutions/jts/io/ParseException.html#ParseException(java.lang.Exception)"><B>ParseException(Exception)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">ParseException</A>
+<DD>Creates a <code>ParseException</code> with <code>e</code>s detail message.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PlanarGraph</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>.<DD>The computation of the <code>IntersectionMatrix</code> relies on the use of a structure
+ called a "topology graph".<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#PlanarGraph(com.vividsolutions.jts.geomgraph.NodeFactory)"><B>PlanarGraph(NodeFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#PlanarGraph()"><B>PlanarGraph()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>PlanarGraph</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>.<DD>Represents a directed graph which is embeddable in a planar surface.<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#PlanarGraph()"><B>PlanarGraph()</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Constructs a empty graph.
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>Point</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>.<DD>Basic implementation of <code>Point</code>.<DT><A HREF="com/vividsolutions/jts/geom/Point.html#Point(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.PrecisionModel, int)"><B>Point(Coordinate, PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/Point.html#Point(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.GeometryFactory)"><B>Point(CoordinateSequence, GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">Point</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PointBuilder</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PointBuilder</A>.<DD>Constructs <A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>s from the nodes of an overlay graph.<DT><A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html#PointBuilder(com.vividsolutions.jts.operation.overlay.OverlayOp, com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.PointLocator)"><B>PointBuilder(OverlayOp, GeometryFactory, PointLocator)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PointBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PointExtracter</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A>.<DD>Extracts all the 0-dimensional (<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><CODE>Point</CODE></A>) components from a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html#PointExtracter(java.util.List)"><B>PointExtracter(List)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util">PointExtracter</A>
+<DD>Constructs a PointExtracterFilter with a list in which to store Points found.
+<DT><A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><B>PointInRing</B></A> - interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>.<DD>An interface for classes which test whether a <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> lies inside
+ a ring.<DT><A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PointLocator</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>.<DD>Computes the topological relationship (<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><CODE>Location</CODE></A>)
+ of a single point to a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/algorithm/PointLocator.html#PointLocator()"><B>PointLocator()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/PointLocator.html#PointLocator(com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>PointLocator(BoundaryNodeRule)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm">PointLocator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>Polygon</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>.<DD>Represents a linear polygon, which may include holes.<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.PrecisionModel, int)"><B>Polygon(LinearRing, PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.PrecisionModel, int)"><B>Polygon(LinearRing, LinearRing[], PrecisionModel, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD><B>Deprecated.</B>&nbsp;<I>Use GeometryFactory instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#Polygon(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.LinearRing[], com.vividsolutions.jts.geom.GeometryFactory)"><B>Polygon(LinearRing, LinearRing[], GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>Constructs a <code>Polygon</code> with the given exterior boundary and
+  interior boundaries.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PolygonBuilder</B></A> - class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>.<DD>Forms <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>s out of a graph of <A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>DirectedEdge</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html#PolygonBuilder(com.vividsolutions.jts.geom.GeometryFactory, com.vividsolutions.jts.algorithm.CGAlgorithms)"><B>PolygonBuilder(GeometryFactory, CGAlgorithms)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay">PolygonBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PolygonExtracter</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A>.<DD>Extracts all the 2-dimensional (<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><CODE>Polygon</CODE></A>) components from a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html#PolygonExtracter(java.util.List)"><B>PolygonExtracter(List)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util">PolygonExtracter</A>
+<DD>Constructs a PolygonExtracterFilter with a list in which to store Polygons found.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PolygonizeDirectedEdge</B></A> - class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>.<DD>A <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A> of a <CODE>PolygonizeGraph</CODE>, which represents
+ an edge of a polygon formed by the graph.<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#PolygonizeDirectedEdge(com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.planargraph.Node, com.vividsolutions.jts.geom.Coordinate, boolean)"><B>PolygonizeDirectedEdge(Node, Node, Coordinate, boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Constructs a directed edge connecting the <code>from</code> node to the
+ <code>to</code> node.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>Polygonizer</B></A> - class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>.<DD>Polygonizes a set of Geometrys which contain linework that
+ represents the edges of a planar graph.<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#Polygonizer()"><B>Polygonizer()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>Create a polygonizer with the same <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>
+ as the input <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>Position</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>.<DD>A Position indicates the position of a Location relative to a graph component
+ (Node, Edge, or Area).<DT><A HREF="com/vividsolutions/jts/geomgraph/Position.html#Position()"><B>Position()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>PrecisionModel</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>.<DD>Specifies the precision model of the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A>s in a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel()"><B>PrecisionModel()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Creates a <code>PrecisionModel</code> with a default precision
+ of FLOATING.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel.Type)"><B>PrecisionModel(PrecisionModel.Type)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Creates a <code>PrecisionModel</code> that specifies
+ an explicit precision model type.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(double, double, double)"><B>PrecisionModel(double, double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>offsets are no longer supported, since internal representation is rounded floating point</I>
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(double)"><B>PrecisionModel(double)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Creates a <code>PrecisionModel</code> that specifies Fixed precision.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)"><B>PrecisionModel(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>Copy constructor to create a new <code>PrecisionModel</code>
+  from an existing one.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#p0"><B>p0</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#p0"><B>p0</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#p0"><B>p0</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#p1"><B>p1</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#p1"><B>p1</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#p1"><B>p1</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#p2"><B>p2</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#pa"><B>pa</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#parentEdge"><B>parentEdge</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#parentGraph"><B>parentGraph</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#pb"><B>pb</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#perpendicularBisector(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>perpendicularBisector(Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>Computes the line which is the perpendicular bisector of the
+ line segment a-b.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#pointAlong(double)"><B>pointAlong(double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> that lies a given
+ fraction along the line defined by this segment.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#pointAlongSegmentByFraction(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, double)"><B>pointAlongSegmentByFraction(Coordinate, Coordinate, double)</B></A> - 
+Static method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> of a point a given fraction
+ along the line segment <tt>(p0, p1)</tt>.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#polyList"><B>polyList</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#powerOf2(int)"><B>powerOf2(int)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#precisionModel"><B>precisionModel</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>If makePrecise is true, computed intersection coordinates will be made precise
+ using Coordinate#makePrecise
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEndStar</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersectionList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph">EdgeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate">EdgeEndBundle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#print(java.io.PrintStream)"><B>print(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Prints a detailed string representation of this DirectedEdge to the given PrintStream.
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#print(java.lang.String)"><B>print(String)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#print(java.lang.Object)"><B>print(Object)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#print(boolean, java.lang.Object)"><B>print(boolean, Object)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#printEdge(java.io.PrintStream)"><B>printEdge(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html#printEdges(java.io.PrintStream)"><B>printEdges(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph">PlanarGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#printIfWatch(java.lang.Object)"><B>printIfWatch(Object)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#printReverse(java.io.PrintStream)"><B>printReverse(PrintStream)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#printWatch()"><B>printWatch()</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#println(java.lang.Object)"><B>println(Object)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#println()"><B>println()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><B>processIntersections(SegmentString, int, SegmentString, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>This method is called by clients
+ of the <A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><B>processIntersections(SegmentString, int, SegmentString, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionAdder</A>
+<DD>This method is called by clients
+ of the <A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+<DT><A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><B>processIntersections(SegmentString, int, SegmentString, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding">IntersectionFinderAdder</A>
+<DD>This method is called by clients
+ of the <A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> class to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html#processIntersections(com.vividsolutions.jts.noding.SegmentString, int, com.vividsolutions.jts.noding.SegmentString, int)"><B>processIntersections(SegmentString, int, SegmentString, int)</B></A> - 
+Method in interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>
+<DD>This method is called by clients
+ of the <A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><CODE>SegmentIntersector</CODE></A> interface to process
+ intersections for two segments of the <CODE>SegmentStrings</CODE> being intersected.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#project(com.vividsolutions.jts.geom.Coordinate)"><B>project(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Compute the projection of a point onto the line determined
+ by this line segment.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#project(com.vividsolutions.jts.geom.LineSegment)"><B>project(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Project a line segment onto this line segment and return the resulting
+ line segment.
+<DT><A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)"><B>project(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LengthIndexedLine</A>
+<DD>Computes the index for the closest point on the line to the given point.
+<DT><A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html#project(com.vividsolutions.jts.geom.Coordinate)"><B>project(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref">LocationIndexedLine</A>
+<DD>Computes the index for the closest point on the line to the given point.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#projectionFactor(com.vividsolutions.jts.geom.Coordinate)"><B>projectionFactor(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Computes the Projection Factor for the projection of the point p
+ onto this LineSegment.
+<DT><A HREF="com/vividsolutions/jts/planargraph/Node.html#pt"><B>pt</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph">Node</A>
+<DD>The location of this Node
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#ptNotInList(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><B>ptNotInList(Coordinate[], Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Finds a point in a list of points which is not contained in another list of points
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html#ptNotInList(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate[])"><B>ptNotInList(Coordinate[], Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize">EdgeRing</A>
+<DD>Finds a point in a list of points which is not contained in another list of points
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#putDouble(double, byte[], int)"><B>putDouble(double, byte[], int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#putInt(int, byte[], int)"><B>putInt(int, byte[], int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderValues.html#putLong(long, byte[], int)"><B>putLong(long, byte[], int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io">ByteOrderValues</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_Q_"><!-- --></A><H2>
+<B>Q</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>Quadrant</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>.<DD>Utility functions for working with quadrants, which are numbered as follows:
+ <DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#Quadrant()"><B>Quadrant()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Quadtree</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>.<DD>A Quadtree is a spatial index structure for efficient querying
+ of 2D rectangles.<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#Quadtree()"><B>Quadtree()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>Constructs a Quadtree with zero items.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>QuadtreeNestedRingTester</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A>.<DD>Tests whether any of a set of <A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a <A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><CODE>Quadtree</CODE></A>
+ index to speed up the comparisons.<DT><A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html#QuadtreeNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>QuadtreeNestedRingTester(GeometryGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">QuadtreeNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#quadrant(double, double)"><B>quadrant(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>Returns the quadrant of a directed line segment (specified as x and y
+ displacements, which cannot both be 0).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html#quadrant(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>quadrant(Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph">Quadrant</A>
+<DD>Returns the quadrant of a directed line segment from p0 to p1.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#quadrant"><B>quadrant</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope)"><B>query(Envelope)</B></A> - 
+Method in interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>
+<DD>Queries the index for all items whose extents intersect the given search <A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>
+ Note that some kinds of indexes may also return objects which do not in fact
+ intersect the query envelope.
+<DT><A HREF="com/vividsolutions/jts/index/SpatialIndex.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><B>query(Envelope, ItemVisitor)</B></A> - 
+Method in interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>
+<DD>Queries the index for all items whose extents intersect the given search <A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><CODE>Envelope</CODE></A>,
+ and applies an <A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><CODE>ItemVisitor</CODE></A> to them.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#query(double)"><B>query(double)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#query(com.vividsolutions.jts.index.bintree.Interval)"><B>query(Interval)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>min and max may be the same value
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#query(com.vividsolutions.jts.index.bintree.Interval, java.util.Collection)"><B>query(Interval, Collection)</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#query(com.vividsolutions.jts.geom.Envelope)"><B>query(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><B>query(Envelope, ItemVisitor)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object)"><B>query(Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Also builds the tree, if necessary.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#query(java.lang.Object, com.vividsolutions.jts.index.ItemVisitor)"><B>query(Object, ItemVisitor)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Also builds the tree, if necessary.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#query(double)"><B>query(double)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>Returns items whose bounds intersect the given value.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#query(double, double)"><B>query(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>Returns items whose bounds intersect the given bounds.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#query(com.vividsolutions.jts.geom.Envelope)"><B>query(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Returns items whose bounds intersect the given envelope.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#query(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><B>query(Envelope, ItemVisitor)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Returns items whose bounds intersect the given envelope.
+<DT><A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html#query(com.vividsolutions.jts.geom.LineSegment)"><B>query(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#queryAll()"><B>queryAll()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>Return a list of all items in the Quadtree
+</DL>
+<HR>
+<A NAME="_R_"><!-- --></A><H2>
+<B>R</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#REPEATED_POINT"><B>REPEATED_POINT</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD><B>Deprecated.</B>&nbsp;<I></I>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#RIGHT"><B>RIGHT</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Position.html#RIGHT"><B>RIGHT</B></A> - 
+Static variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph">Position</A>
+<DD>An indicator that a Location is to the <i>right</i> of a GraphComponent
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#RING_NOT_CLOSED"><B>RING_NOT_CLOSED</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that a ring is not correctly closed
+ (the first and the last coordinate are different)
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#RING_SELF_INTERSECTION"><B>RING_SELF_INTERSECTION</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that a ring self-intersects
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate"><B>RectangleContains</B></A> - class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleContains</A>.<DD>Optimized implementation of spatial predicate "contains"
+ for cases where the first <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is a rectangle.<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html#RectangleContains(com.vividsolutions.jts.geom.Polygon)"><B>RectangleContains(Polygon)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleContains</A>
+<DD>Create a new contains computer for two geometries.
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>RectangleIntersects</B></A> - class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A>.<DD>Optimized implementation of spatial predicate "intersects"
+ for cases where the first <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> is a rectangle.<DT><A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html#RectangleIntersects(com.vividsolutions.jts.geom.Polygon)"><B>RectangleIntersects(Polygon)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate">RectangleIntersects</A>
+<DD>Create a new intersects computer for a rectangle.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateComputer</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate">RelateComputer</A>.<DD>Computes the topological relationship between two Geometries.<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html#RelateComputer(com.vividsolutions.jts.geomgraph.GeometryGraph[])"><B>RelateComputer(GeometryGraph[])</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate">RelateComputer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNode</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate">RelateNode</A>.<DD>Represents a node in the topological graph used to compute spatial relationships.<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html#RelateNode(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geomgraph.EdgeEndStar)"><B>RelateNode(Coordinate, EdgeEndStar)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate">RelateNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNodeFactory</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeFactory</A>.<DD>Used by the <A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><CODE>NodeMap</CODE></A> in a <A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNodeGraph</CODE></A> to create <A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><CODE>RelateNode</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html#RelateNodeFactory()"><B>RelateNodeFactory()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNodeGraph</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>.<DD>Implements the simple graph of Nodes and EdgeEnd which is all that is
+ required to determine topological relationships between Geometries.<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html#RelateNodeGraph()"><B>RelateNodeGraph()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate">RelateNodeGraph</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateOp</B></A> - class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>.<DD>Implements the SFS <tt>relate()</tt> operation on two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html#RelateOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>RelateOp(Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>
+<DD>Creates a new Relate operation, using the default (OGC SFS) Boundary Node Rule.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html#RelateOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>RelateOp(Geometry, Geometry, BoundaryNodeRule)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>
+<DD>Creates a new Relate operation with a specified Boundary Node Rule.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>RepeatedPointTester</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A>.<DD>Implements the appropriate checks for repeated points
+ (consecutive identical coordinates) as defined in the
+ JTS spec.<DT><A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html#RepeatedPointTester()"><B>RepeatedPointTester()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid">RepeatedPointTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>RightmostEdgeFinder</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A>.<DD>A RightmostEdgeFinder find the DirectedEdge in a list which has the highest coordinate,
+ and which is oriented L to R at that point.<DT><A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html#RightmostEdgeFinder(com.vividsolutions.jts.algorithm.CGAlgorithms)"><B>RightmostEdgeFinder(CGAlgorithms)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer">RightmostEdgeFinder</A>
+<DD>A RightmostEdgeFinder finds the DirectedEdge with the rightmost coordinate.
+<DT><A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustCGAlgorithms</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">RobustCGAlgorithms</A>.<DD>Stub version of RobustCGAlgorithms for backwards compatibility.<DT><A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html#RobustCGAlgorithms()"><B>RobustCGAlgorithms()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">RobustCGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustDeterminant</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm">RobustDeterminant</A>.<DD>Implements an algorithm to compute the
+ sign of a 2x2 determinant for double precision values robustly.<DT><A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html#RobustDeterminant()"><B>RobustDeterminant()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm">RobustDeterminant</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustLineIntersector</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A>.<DD>A robust version of .<DT><A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html#RobustLineIntersector()"><B>RobustLineIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm">RobustLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree"><B>Root</B></A> - class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A>.<DD>The root node of a single <A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><CODE>Bintree</CODE></A>.<DT><A HREF="com/vividsolutions/jts/index/bintree/Root.html#Root()"><B>Root()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree">Root</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Root</B></A> - class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A>.<DD>QuadRoot is the root of a single Quadtree.<DT><A HREF="com/vividsolutions/jts/index/quadtree/Root.html#Root()"><B>Root()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree">Root</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html#read(byte[])"><B>read(byte[])</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/InStream.html#read(byte[])"><B>read(byte[])</B></A> - 
+Method in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>
+<DD>Reads <code>buf.length</code> bytes from the input stream
+ and stores them in the supplied buffer.
+<DT><A HREF="com/vividsolutions/jts/io/InputStreamInStream.html#read(byte[])"><B>read(byte[])</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io">InputStreamInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBReader.html#read(byte[])"><B>read(byte[])</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>
+<DD>Reads a single <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a byte array.
+<DT><A HREF="com/vividsolutions/jts/io/WKBReader.html#read(com.vividsolutions.jts.io.InStream)"><B>read(InStream)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>
+<DD>Reads a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an {@link InStream).
+<DT><A HREF="com/vividsolutions/jts/io/WKTReader.html#read(java.lang.String)"><B>read(String)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A>
+<DD>Reads a Well-Known Text representation of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ from a <CODE>String</CODE>.
+<DT><A HREF="com/vividsolutions/jts/io/WKTReader.html#read(java.io.Reader)"><B>read(Reader)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A>
+<DD>Reads a Well-Known Text representation of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ from a <CODE>Reader</CODE>.
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#readByte()"><B>readByte()</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#readDouble()"><B>readDouble()</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#readInt()"><B>readInt()</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#readLong()"><B>readLong()</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#reduce(com.vividsolutions.jts.geom.Geometry)"><B>reduce(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#reflect(double, double, double, double)"><B>reflect(double, double, double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a reflection transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#reflect(double, double)"><B>reflect(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a reflection transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#reflectionInstance(double, double, double, double)"><B>reflectionInstance(double, double, double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Creates a transformation for a reflection about the 
+ line (x0,y0) - (x1,y1).
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#reflectionInstance(double, double)"><B>reflectionInstance(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Creates a transformation for a reflection about the 
+ line (0,0) - (x,y).
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry, java.lang.String)"><B>relate(Geometry, String)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if the elements in the DE-9IM
+ <A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the two <code>Geometry</code>s match the elements in <code>intersectionPattern</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#relate(com.vividsolutions.jts.geom.Geometry)"><B>relate(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the DE-9IM <A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the two <code>Geometry</code>s.
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html#relate(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>relate(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the spatial relationship
+ between two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using the default (OGC SFS) Boundary Node Rule
+<DT><A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html#relate(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.algorithm.BoundaryNodeRule)"><B>relate(Geometry, Geometry, BoundaryNodeRule)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate">RelateOp</A>
+<DD>Computes the <A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><CODE>IntersectionMatrix</CODE></A> for the spatial relationship
+ between two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s using a specified Boundary Node Rule.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html#relativeSign(double, double)"><B>relativeSign(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding">SegmentPointComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html#remove()"><B>remove()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom">GeometryCollectionIterator</A>
+<DD>Not implemented.
+<DT><A HREF="com/vividsolutions/jts/index/SpatialIndex.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>remove(Envelope, Object)</B></A> - 
+Method in interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>
+<DD>Removes a single item from the tree.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>remove(Envelope, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>Removes a single item from this subtree.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>remove(Envelope, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>Removes a single item from the tree.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#remove(java.lang.Object, java.lang.Object)"><B>remove(Object, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>Removes an item from the tree.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#remove(com.vividsolutions.jts.geom.Envelope, java.lang.Object)"><B>remove(Envelope, Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Removes a single item from the tree.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html#remove(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>remove(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdgeStar</A>
+<DD>Drops a member of this DirectedEdgeStar.
+<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html#remove(com.vividsolutions.jts.geom.Coordinate)"><B>remove(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<DD>Removes the Node at the given location, and returns it (or null if no Node was there).
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.Edge)"><B>remove(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Removes an <A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>Edge</CODE></A> and its associated <A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><CODE>DirectedEdge</CODE></A>s
+ from their from-Nodes and from the graph.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>remove(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Removes DirectedEdge from its from-Node and from this PlanarGraph.
+<DT><A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html#remove(com.vividsolutions.jts.planargraph.Node)"><B>remove(Node)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph">PlanarGraph</A>
+<DD>Removes a node from the graph, along with any associated DirectedEdges and
+ Edges.
+<DT><A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html#remove(com.vividsolutions.jts.geom.LineSegment)"><B>remove(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify">LineSegmentIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html#removeCommonBits(com.vividsolutions.jts.geom.Geometry)"><B>removeCommonBits(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision">CommonBitsRemover</A>
+<DD>Removes the common coordinate bits from a Geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#removeRepeatedPoints(com.vividsolutions.jts.geom.Coordinate[])"><B>removeRepeatedPoints(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>If the coordinate array argument has repeated points,
+ constructs a new array containing no repeated points.
+<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#reset()"><B>reset()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#result"><B>result</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#resultPrecisionModel"><B>resultPrecisionModel</B></A> - 
+Variable in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#reverse(com.vividsolutions.jts.geom.Coordinate[])"><B>reverse(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Reverses the coordinates in an array in-place.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html#reverse(com.vividsolutions.jts.geom.CoordinateSequence)"><B>reverse(CoordinateSequence)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom">CoordinateSequences</A>
+<DD>Reverses the coordinates in a sequence in-place.
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#reverse()"><B>reverse()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>Reverses the direction of the line segment.
+<DT><A HREF="com/vividsolutions/jts/geom/LineString.html#reverse()"><B>reverse()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A>
+<DD>Creates a <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> whose coordinates are in the reverse
+ order of this objects
+<DT><A HREF="com/vividsolutions/jts/geom/MultiLineString.html#reverse()"><B>reverse()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">MultiLineString</A>
+<DD>Creates a <A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><CODE>MultiLineString</CODE></A> in the reverse
+ order to this object.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#root"><B>root</B></A> - 
+Variable in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#rotate(double)"><B>rotate(double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a rotation transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#rotate(double, double)"><B>rotate(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a rotation transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#rotationInstance(double)"><B>rotationInstance(double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Creates a transformation for a rotation
+ about the origin 
+ by an angle <i>theta</i>.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#rotationInstance(double, double)"><B>rotationInstance(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Creates a transformation for a rotation 
+ by an angle <i>theta</i>,
+ specified by the sine and cosine of the angle.
+</DL>
+<HR>
+<A NAME="_S_"><!-- --></A><H2>
+<B>S</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#SELF_INTERSECTION"><B>SELF_INTERSECTION</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that two rings of a polygonal geometry intersect
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>SIRtree</B></A> - class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>.<DD>One-dimensional version of an STR-packed R-tree.<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#SIRtree()"><B>SIRtree()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>Constructs an SIRtree with the default node capacity.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html#SIRtree(int)"><B>SIRtree(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree">SIRtree</A>
+<DD>Constructs an SIRtree with the given maximum number of child nodes that
+ a node may have
+<DT><A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>SIRtreePointInRing</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SIRtreePointInRing</A>.<DD>Implements <A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><CODE>PointInRing</CODE></A>
+ using a <A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><CODE>SIRtree</CODE></A> index to
+ increase performance.<DT><A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html#SIRtreePointInRing(com.vividsolutions.jts.geom.LinearRing)"><B>SIRtreePointInRing(LinearRing)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SIRtreePointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#SRID"><B>SRID</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>The ID of the Spatial Reference System used by this <code>Geometry</code>
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#STRAIGHT"><B>STRAIGHT</B></A> - 
+Static variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>STRtree</B></A> - class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>.<DD>A query-only R-tree created using the Sort-Tile-Recursive (STR) algorithm.<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#STRtree()"><B>STRtree()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Constructs an STRtree with the default node capacity.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#STRtree(int)"><B>STRtree(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Constructs an STRtree with the given maximum number of child nodes that
+ a node may have
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#SYMDIFFERENCE"><B>SYMDIFFERENCE</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>ScaledNoder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>.<DD>Wraps a <A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A> and transforms its input
+ into the integer domain.<DT><A HREF="com/vividsolutions/jts/noding/ScaledNoder.html#ScaledNoder(com.vividsolutions.jts.noding.Noder, double)"><B>ScaledNoder(Noder, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/ScaledNoder.html#ScaledNoder(com.vividsolutions.jts.noding.Noder, double, double, double)"><B>ScaledNoder(Noder, double, double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding">ScaledNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate"><B>SegmentIntersectionTester</B></A> - class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate">SegmentIntersectionTester</A>.<DD>Tests if any line segments in two sets of CoordinateSequences intersect.<DT><A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html#SegmentIntersectionTester()"><B>SegmentIntersectionTester()</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate">SegmentIntersectionTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SegmentIntersector</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#SegmentIntersector(com.vividsolutions.jts.algorithm.LineIntersector, boolean, boolean)"><B>SegmentIntersector(LineIntersector, boolean, boolean)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>SegmentIntersector</B></A> - interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>.<DD>Computes the intersections between two line segments in <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s
+ and adds them to each string.<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>SegmentNode</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>.<DD>Represents an intersection point between two <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#SegmentNode(com.vividsolutions.jts.noding.SegmentString, com.vividsolutions.jts.geom.Coordinate, int, int)"><B>SegmentNode(SegmentString, Coordinate, int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>SegmentNodeList</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>.<DD>A list of the <A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentNode</CODE></A>s present along a noded <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>.<DT><A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html#SegmentNodeList(com.vividsolutions.jts.noding.SegmentString)"><B>SegmentNodeList(SegmentString)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding">SegmentNodeList</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>SegmentPointComparator</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding">SegmentPointComparator</A>.<DD>Implements a robust method of comparing the relative position of two
+ points along the same segment.<DT><A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html#SegmentPointComparator()"><B>SegmentPointComparator()</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding">SegmentPointComparator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>SegmentString</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>.<DD>Represents a list of contiguous line segments,
+ and supports noding the segments.<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#SegmentString(com.vividsolutions.jts.geom.Coordinate[], java.lang.Object)"><B>SegmentString(Coordinate[], Object)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>Creates a new segment string from a list of vertices.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>SegmentStringDissolver</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>.<DD>Dissolves a noded collection of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s to produce
+ a set of merged linework with unique segments.<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html#SegmentStringDissolver(com.vividsolutions.jts.noding.SegmentStringDissolver.SegmentStringMerger)"><B>SegmentStringDissolver(SegmentStringDissolver.SegmentStringMerger)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>
+<DD>Creates a dissolver with a user-defined merge strategy.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html#SegmentStringDissolver()"><B>SegmentStringDissolver()</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding">SegmentStringDissolver</A>
+<DD>Creates a dissolver with the default merging strategy.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><B>SegmentStringDissolver.SegmentStringMerger</B></A> - interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding">SegmentStringDissolver.SegmentStringMerger</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util"><B>ShortCircuitedGeometryVisitor</B></A> - class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A>.<DD>A visitor to <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> elements which can
+ be short-circuited by a given condition<DT><A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#ShortCircuitedGeometryVisitor()"><B>ShortCircuitedGeometryVisitor()</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleEdgeSetIntersector</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A>.<DD>Finds all intersections in one or two sets of edges,
+ using the straightforward method of
+ comparing all segments.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html#SimpleEdgeSetIntersector()"><B>SimpleEdgeSetIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleEdgeSetIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision"><B>SimpleGeometryPrecisionReducer</B></A> - class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A>.<DD>Reduces the precision of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ according to the supplied <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>, without
+ attempting to preserve valid topology.<DT><A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#SimpleGeometryPrecisionReducer(com.vividsolutions.jts.geom.PrecisionModel)"><B>SimpleGeometryPrecisionReducer(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleMCSweepLineIntersector</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A>.<DD>Finds all intersections in one or two sets of edges,
+ using an x-axis sweepline algorithm in conjunction with Monotone Chains.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html#SimpleMCSweepLineIntersector()"><B>SimpleMCSweepLineIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleMCSweepLineIntersector</A>
+<DD>A SimpleMCSweepLineIntersector creates monotone chains from the edges
+ and compares them using a simple sweep-line along the x-axis.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>SimpleNestedRingTester</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A>.<DD>Tests whether any of a set of <A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a simple O(n^2)
+ comparison.<DT><A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html#SimpleNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>SimpleNestedRingTester(GeometryGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SimpleNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>SimpleNoder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A>.<DD>Nodes a set of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s by
+ performing a brute-force comparison of every segment to every other one.<DT><A HREF="com/vividsolutions/jts/noding/SimpleNoder.html#SimpleNoder()"><B>SimpleNoder()</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding">SimpleNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>SimplePointInAreaLocator</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInAreaLocator</A>.<DD>Computes whether a point
+ lies in the interior of an area <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html#SimplePointInAreaLocator()"><B>SimplePointInAreaLocator()</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInAreaLocator</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>SimplePointInRing</B></A> - class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInRing</A>.<DD>Tests whether a <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><CODE>Coordinate</CODE></A> lies inside
+ a ring, using a linear-time algorithm.<DT><A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html#SimplePointInRing(com.vividsolutions.jts.geom.LinearRing)"><B>SimplePointInRing(LinearRing)</B></A> - 
+Constructor for class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm">SimplePointInRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>SimpleSnapRounder</B></A> - class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>.<DD>Uses Snap Rounding to compute a rounded,
+ fully noded arrangement from a set of <A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><CODE>SegmentString</CODE></A>s.<DT><A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html#SimpleSnapRounder(com.vividsolutions.jts.geom.PrecisionModel)"><B>SimpleSnapRounder(PrecisionModel)</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround">SimpleSnapRounder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleSweepLineIntersector</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A>.<DD>Finds all intersections in one or two sets of edges,
+ using a simple x-axis sweepline algorithm.<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html#SimpleSweepLineIntersector()"><B>SimpleSweepLineIntersector()</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SimpleSweepLineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding"><B>SinglePassNoder</B></A> - class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>.<DD>Base class for <A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A>s which make a single
+ pass to find intersections.<DT><A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html#SinglePassNoder()"><B>SinglePassNoder()</B></A> - 
+Constructor for class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>SnapIfNeededOverlayOp</B></A> - class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>.<DD>Performs an overlay operation using snapping and enhanced precision
+ to improve the robustness of the result.<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#SnapIfNeededOverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>SnapIfNeededOverlayOp(Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>SnapOverlayOp</B></A> - class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>.<DD>Performs an overlay operation using snapping and enhanced precision
+ to improve the robustness of the result.<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#SnapOverlayOp(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>SnapOverlayOp(Geometry, Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><B>SpatialIndex</B></A> - interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>.<DD>The basic operations supported by classes
+ implementing spatial index algorithms.<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>Stopwatch</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>.<DD>Implements a timer function which can compute
+ elapsed time as well as split times.<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#Stopwatch()"><B>Stopwatch()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><B>Subgraph</B></A> - class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>.<DD>A subgraph of a <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>.<DT><A HREF="com/vividsolutions/jts/planargraph/Subgraph.html#Subgraph(com.vividsolutions.jts.planargraph.PlanarGraph)"><B>Subgraph(PlanarGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph">Subgraph</A>
+<DD>Creates a new subgraph of the given <A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><CODE>PlanarGraph</CODE></A>
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer"><B>SubgraphDepthLocater</B></A> - class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer">SubgraphDepthLocater</A>.<DD>Locates a subgraph inside a set of subgraphs,
+ in order to determine the outside depth of the subgraph.<DT><A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html#SubgraphDepthLocater(java.util.List)"><B>SubgraphDepthLocater(List)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer">SubgraphDepthLocater</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SweepLineEvent</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#SweepLineEvent(java.lang.Object, double, com.vividsolutions.jts.geomgraph.index.SweepLineEvent, java.lang.Object)"><B>SweepLineEvent(Object, double, SweepLineEvent, Object)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineEvent</B></A> - class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#SweepLineEvent(double, com.vividsolutions.jts.index.sweepline.SweepLineEvent, com.vividsolutions.jts.index.sweepline.SweepLineInterval)"><B>SweepLineEvent(double, SweepLineEvent, SweepLineInterval)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineIndex</B></A> - class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineIndex</A>.<DD>A sweepline implements a sorted index on a set of intervals.<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html#SweepLineIndex()"><B>SweepLineIndex()</B></A> - 
+Constructor for class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineIndex</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineInterval</B></A> - class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#SweepLineInterval(double, double)"><B>SweepLineInterval(double, double)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html#SweepLineInterval(double, double, java.lang.Object)"><B>SweepLineInterval(double, double, Object)</B></A> - 
+Constructor for class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineInterval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline"><B>SweepLineOverlapAction</B></A> - interface com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline">SweepLineOverlapAction</A>.<DD>An action taken when a <A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineIndex</CODE></A> detects that two
+ <A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineInterval</CODE></A>s overlap<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SweepLineSegment</B></A> - class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html#SweepLineSegment(com.vividsolutions.jts.geomgraph.Edge, int)"><B>SweepLineSegment(Edge, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>SweeplineNestedRingTester</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A>.<DD>Tests whether any of a set of <A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><CODE>LinearRing</CODE></A>s are
+ nested inside another ring in the set, using a <A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><CODE>SweepLineIndex</CODE></A>
+ index to speed up the comparisons.<DT><A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html#SweeplineNestedRingTester(com.vividsolutions.jts.geomgraph.GeometryGraph)"><B>SweeplineNestedRingTester(GeometryGraph)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid">SweeplineNestedRingTester</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#scale(double, double)"><B>scale(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a scale transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#scaleInstance(double, double)"><B>scaleInstance(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#scroll(com.vividsolutions.jts.geom.Coordinate[], com.vividsolutions.jts.geom.Coordinate)"><B>scroll(Coordinate[], Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Shifts the positions of the coordinates until <code>firstCoordinate</code>
+  is first.
+<DT><A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html#segInt"><B>segInt</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html#segmentIndex"><B>segmentIndex</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph">EdgeIntersection</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentNode.html#segmentIndex"><B>segmentIndex</B></A> - 
+Variable in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding">SegmentNode</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#select(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.chain.MonotoneChainSelectAction)"><B>select(Envelope, MonotoneChainSelectAction)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>Determine all the line segments in the chain whose envelopes overlap
+ the searchEnvelope, and process them
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#select(com.vividsolutions.jts.index.chain.MonotoneChain, int)"><B>select(MonotoneChain, int)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>
+<DD>This function can be overridden if the original chain is needed
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html#select(com.vividsolutions.jts.geom.LineSegment)"><B>select(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainSelectAction</A>
+<DD>This is a convenience function which can be overridden to obtain the actual
+ line segment which is selected
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html#select(com.vividsolutions.jts.index.chain.MonotoneChain, int)"><B>select(MonotoneChain, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper.HotPixelSnapAction</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.html#select(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)"><B>select(Collection, CollectionUtil.Function)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A>
+<DD>Executes a function on each item in a Collection
+ and collects all the entries for which the result
+ of the function is equal to <CODE>Boolean</CODE>.TRUE.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#set(int, int, int)"><B>set(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Changes the value of one of this <code>IntersectionMatrix</code>s
+  elements.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#set(java.lang.String)"><B>set(String)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Changes the elements of this <code>IntersectionMatrix</code> to the
+  dimension symbols in <code>dimensionSymbols</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#setAll(int)"><B>setAll(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Changes the elements of this <code>IntersectionMatrix</code> to <code>dimensionValue</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#setAllLocations(int, int)"><B>setAllLocations(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#setAllLocations(int)"><B>setAllLocations(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#setAllLocationsIfNull(int, int)"><B>setAllLocationsIfNull(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#setAllLocationsIfNull(int)"><B>setAllLocationsIfNull(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#setAllLocationsIfNull(int)"><B>setAllLocationsIfNull(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#setAtLeast(int, int, int)"><B>setAtLeast(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Changes the specified element to <code>minimumDimensionValue</code> if the
+  element is less.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#setAtLeast(java.lang.String)"><B>setAtLeast(String)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>For each element in this <code>IntersectionMatrix</code>, changes the
+  element to the corresponding minimum dimension symbol if the element is
+  less.
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#setAtLeastIfValid(int, int, int)"><B>setAtLeastIfValid(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>If row >= 0 and column >= 0, changes the specified element to <code>minimumDimensionValue</code>
+  if the element is less.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#setBase(com.vividsolutions.jts.geom.Coordinate)"><B>setBase(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Sets the location of the shape by specifying the base coordinate
+ (which in most cases is the
+ lower left point of the envelope containing the shape).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html#setBoundaryNodes(java.util.Collection, java.util.Collection)"><B>setBoundaryNodes(Collection, Collection)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index">SegmentIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html#setBuffer(byte[])"><B>setBuffer(byte[])</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io">ByteArrayInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#setCentre(com.vividsolutions.jts.geom.Coordinate)"><B>setCentre(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Sets the location of the shape by specifying the centre of
+ the shape's bounding box
+<DT><A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#setChangePrecisionModel(boolean)"><B>setChangePrecisionModel(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A>
+<DD>Sets whether the <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> of the new reduced Geometry
+ will be changed to be the <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> supplied to
+ specify the reduction.
+<DT><A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html#setCheckEndSegmentsOnly(boolean)"><B>setCheckEndSegmentsOnly(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding">InteriorIntersectionFinder</A>
+<DD>Sets whether only end segments should be tested for interior intersection.
+<DT><A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html#setComputationPrecision(com.vividsolutions.jts.geom.PrecisionModel)"><B>setComputationPrecision(PrecisionModel)</B></A> - 
+Method in class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation">GeometryGraphOperation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#setContext(java.lang.Object)"><B>setContext(Object)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Sets the user-defined data for this component.
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#setCoordinate(com.vividsolutions.jts.geom.Coordinate)"><B>setCoordinate(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Sets this <code>Coordinate</code>s (x,y,z) values to that of <code>other</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#setCoordinates(com.vividsolutions.jts.geom.LineSegment)"><B>setCoordinates(LineSegment)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#setCoordinates(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>setCoordinates(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#setCovered(boolean)"><B>setCovered(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#setData(java.lang.Object)"><B>setData(Object)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>Sets the user-defined data for this segment string.
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#setData(java.lang.Object)"><B>setData(Object)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Sets the user-defined data for this component.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html#setDeleteEventIndex(int)"><B>setDeleteEventIndex(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html#setDeleteEventIndex(int)"><B>setDeleteEventIndex(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline">SweepLineEvent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#setDepth(int, int, int)"><B>setDepth(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setDepth(int, int)"><B>setDepth(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#setDepthDelta(int)"><B>setDepthDelta(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#setDimension(int)"><B>setDimension(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/Edge.html#setDirectedEdges(com.vividsolutions.jts.planargraph.DirectedEdge, com.vividsolutions.jts.planargraph.DirectedEdge)"><B>setDirectedEdges(DirectedEdge, DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph">Edge</A>
+<DD>Initializes this Edge's two DirectedEdges, and for each DirectedEdge: sets the
+ Edge, sets the symmetric DirectedEdge, and adds this Edge to its from-Node.
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#setDistanceTolerance(double)"><B>setDistanceTolerance(double)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A>
+<DD>Sets the distance tolerance for the simplification.
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#setDistanceTolerance(double)"><B>setDistanceTolerance(double)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A>
+<DD>Sets the distance tolerance for the simplification.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html#setDistanceTolerance(double)"><B>setDistanceTolerance(double)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLineStringSimplifier</A>
+<DD>Sets the distance tolerance for the simplification.
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html#setDistanceTolerance(double)"><B>setDistanceTolerance(double)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLinesSimplifier</A>
+<DD>Sets the distance tolerance for the simplification.
+<DT><A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#setDistanceTolerance(double)"><B>setDistanceTolerance(double)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A>
+<DD>Sets the distance tolerance for the simplification.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#setEdge(com.vividsolutions.jts.planargraph.Edge)"><B>setEdge(Edge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Associates this DirectedEdge with an Edge (possibly null, indicating no associated
+ Edge).
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setEdgeDepths(int, int)"><B>setEdgeDepths(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>Set both edge depths.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setEdgeRing(com.vividsolutions.jts.geomgraph.EdgeRing)"><B>setEdgeRing(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)"><B>setEdgeRing(DirectedEdge, EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)"><B>setEdgeRing(DirectedEdge, EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MaximalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html#setEdgeRing(com.vividsolutions.jts.geomgraph.DirectedEdge, com.vividsolutions.jts.geomgraph.EdgeRing)"><B>setEdgeRing(DirectedEdge, EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay">MinimalEdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setEndCapStyle(int)"><B>setEndCapStyle(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#setEndCapStyle(int)"><B>setEndCapStyle(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Specifies the end cap style of the generated buffer.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html#setEndCapStyle(int)"><B>setEndCapStyle(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">OffsetCurveBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#setFixInvalidLines(boolean)"><B>setFixInvalidLines(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>Allows invalid lines to be ignored rather than causing Exceptions.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#setFormatted(boolean)"><B>setFormatted(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Sets whether the output will be formatted.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#setHeight(double)"><B>setHeight(double)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Sets the height of the shape.
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html#setId(int)"><B>setId(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChain</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html#setIgnoreInvalidLines(boolean)"><B>setIgnoreInvalidLines(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref">LinearGeometryBuilder</A>
+<DD>Allows invalid lines to be ignored rather than causing Exceptions.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setInResult(boolean)"><B>setInResult(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#setInResult()"><B>setInResult()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#setInResult(boolean)"><B>setInResult(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#setInStream(com.vividsolutions.jts.io.InStream)"><B>setInStream(InStream)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>Allows a single ByteOrderDataInStream to be reused
+ on multiple InStreams.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#setIsolated(boolean)"><B>setIsolated(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#setLabel(com.vividsolutions.jts.geomgraph.Label)"><B>setLabel(Label)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#setLabel(int, int)"><B>setLabel(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setLabel(long)"><B>setLabel(long)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Attaches an identifier to this directed edge.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Node.html#setLabelBoundary(int)"><B>setLabelBoundary(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph">Node</A>
+<DD>Updates the label of a node to BOUNDARY,
+ obeying the mod-2 boundaryDetermination rule.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#setLocation(int, int, int)"><B>setLocation(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#setLocation(int, int)"><B>setLocation(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#setLocation(int, int)"><B>setLocation(int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#setLocation(int)"><B>setLocation(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#setLocations(int, int, int)"><B>setLocations(int, int, int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#setMakePrecise(com.vividsolutions.jts.geom.PrecisionModel)"><B>setMakePrecise(PrecisionModel)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use <code>setPrecisionModel</code> instead</I>
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(java.util.Iterator, boolean)"><B>setMarked(Iterator, boolean)</B></A> - 
+Static method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Sets the Marked state for all <A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A>s in an <CODE>Iterator</CODE>
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#setMarked(boolean)"><B>setMarked(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Sets the marked flag for this component.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#setMaxCoordinatesPerLine(int)"><B>setMaxCoordinatesPerLine(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Sets the maximum number of coordinates per line
+ written in formatted output.
+<DT><A HREF="com/vividsolutions/jts/noding/IteratedNoder.html#setMaximumIterations(int)"><B>setMaximumIterations(int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding">IteratedNoder</A>
+<DD>Sets the maximum number of noding iterations performed before
+ the noding is aborted.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setMinEdgeRing(com.vividsolutions.jts.geomgraph.EdgeRing)"><B>setMinEdgeRing(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#setName(java.lang.String)"><B>setName(String)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setNext(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>setNext(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setNext(com.vividsolutions.jts.operation.polygonize.PolygonizeDirectedEdge)"><B>setNext(PolygonizeDirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Sets the next directed edge in the EdgeRing that this directed edge is a member
+ of.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setNextMin(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>setNextMin(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html#setNode(com.vividsolutions.jts.geomgraph.Node)"><B>setNode(Node)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph">EdgeEnd</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setNoder(com.vividsolutions.jts.noding.Noder)"><B>setNoder(Noder)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>Sets the <A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><CODE>Noder</CODE></A> to use during noding.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#setNumPoints(int)"><B>setNumPoints(int)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Sets the total number of points in the created <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html#setOrder(int)"><B>setOrder(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io">ByteOrderDataInStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#setOrdinate(int, int, double)"><B>setOrdinate(int, int, double)</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Sets the value for a given ordinate of a coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#setOrdinate(int, int, double)"><B>setOrdinate(int, int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#setOrdinate(int, int, double)"><B>setOrdinate(int, int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#setOrdinate(int, int, double)"><B>setOrdinate(int, int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setOrdinate(int, int, double)"><B>setOrdinate(int, int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>Sets the ordinate of a coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#setPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)"><B>setPrecisionModel(PrecisionModel)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>Force computed intersection to be rounded to a given precision model.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setQuadrantSegments(int)"><B>setQuadrantSegments(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>Sets the number of segments used to approximate a angle fillet
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html#setQuadrantSegments(int)"><B>setQuadrantSegments(int)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer">BufferOp</A>
+<DD>Sets the number of segments used to approximate a angle fillet
+<DT><A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html#setRemoveCollapsedComponents(boolean)"><B>setRemoveCollapsedComponents(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision">SimpleGeometryPrecisionReducer</A>
+<DD>Sets whether the reduction will result in collapsed components
+ being removed completely, or simply being collapsed to an (invalid)
+ Geometry of the same type.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html#setRing(com.vividsolutions.jts.operation.polygonize.EdgeRing)"><B>setRing(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize">PolygonizeDirectedEdge</A>
+<DD>Sets the ring of directed edges that this directed edge is
+ a member of.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#setSRID(int)"><B>setSRID(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Sets the ID of the Spatial Reference System used by the <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html#setSegmentIntersector(com.vividsolutions.jts.noding.SegmentIntersector)"><B>setSegmentIntersector(SegmentIntersector)</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding">SinglePassNoder</A>
+<DD>Sets the SegmentIntersector to use with this noder.
+<DT><A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html#setSelfTouchingRingFormingHoleValid(boolean)"><B>setSelfTouchingRingFormingHoleValid(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid">IsValidOp</A>
+<DD>Sets whether polygons using <b>Self-Touching Rings</b> to form
+ holes are reported as valid.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#setShell(com.vividsolutions.jts.geomgraph.EdgeRing)"><B>setShell(EdgeRing)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#setSize(double)"><B>setSize(double)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Sets the size of the extent of the shape in both x and y directions.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setSym(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>setSym(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#setSym(com.vividsolutions.jts.planargraph.DirectedEdge)"><B>setSym(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite
+ direction.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#setTab(int)"><B>setTab(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Sets the tab size to use for indenting.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#setToEnd(com.vividsolutions.jts.geom.Geometry)"><B>setToEnd(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Sets the value of this location to
+ refer the end of a linear geometry
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToIdentity()"><B>setToIdentity()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be the identity transformation.
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#setToNull()"><B>setToNull()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Makes this <code>Envelope</code> a "null" envelope, that is, the envelope
+  of the empty geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToReflection(double, double, double, double)"><B>setToReflection(double, double, double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToReflection(double, double)"><B>setToReflection(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be a reflection 
+ about the line defined by vector (x,y).
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToReflectionBasic(double, double, double, double)"><B>setToReflectionBasic(double, double, double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Explicitly computes the math for a reflection.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToRotation(double, double)"><B>setToRotation(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be a rotation 
+ by specifying the sin and cos of the rotation angle directly.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToScale(double, double)"><B>setToScale(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be a scaling.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToShear(double, double)"><B>setToShear(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be a shear.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setToTranslation(double, double)"><B>setToTranslation(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be a translation.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setTransformation(double, double, double, double, double, double)"><B>setTransformation(double, double, double, double, double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation's matrix to have the given values.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#setTransformation(com.vividsolutions.jts.geom.util.AffineTransformation)"><B>setTransformation(AffineTransformation)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Sets this transformation to be a copy of the given one
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html#setType(int)"><B>setType(int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequenceFactory</A>
+<DD>Sets the type of packed coordinate sequences this factory builds,
+ acceptable values are PackedCoordinateSequenceFactory#Floator
+ PackedCoordinateSequenceFactory#Double
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#setUserData(java.lang.Object)"><B>setUserData(Object)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>A simple scheme for applications to add their own custom data to a Geometry.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setVisited(boolean)"><B>setVisited(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#setVisited(boolean)"><B>setVisited(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(java.util.Iterator, boolean)"><B>setVisited(Iterator, boolean)</B></A> - 
+Static method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Sets the Visited state for all <A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><CODE>GraphComponent</CODE></A>s in an <CODE>Iterator</CODE>
+<DT><A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html#setVisited(boolean)"><B>setVisited(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph">GraphComponent</A>
+<DD>Sets the visited flag for this component.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html#setVisitedEdge(boolean)"><B>setVisitedEdge(boolean)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdge</A>
+<DD>setVisitedEdge marks both DirectedEdges attached to a given Edge.
+<DT><A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html#setWidth(double)"><B>setWidth(double)</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util">GeometricShapeFactory</A>
+<DD>Sets the width of the shape.
+<DT><A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html#setWorkingPrecisionModel(com.vividsolutions.jts.geom.PrecisionModel)"><B>setWorkingPrecisionModel(PrecisionModel)</B></A> - 
+Method in class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer">BufferBuilder</A>
+<DD>Sets the precision model to use during the curve computation and noding,
+ if it is different to the precision model of the Geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setX(int, double)"><B>setX(int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>Sets the first ordinate of a coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#setY(int, double)"><B>setY(int, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>Sets the second ordinate of a coordinate in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#shear(double, double)"><B>shear(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a shear transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#shearInstance(double, double)"><B>shearInstance(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Polygon.html#shell"><B>shell</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">Polygon</A>
+<DD>The exterior boundary,
+ or <code>null</code> if this <code>Polygon</code>
+  is empty.
+<DT><A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html#shellList"><B>shellList</B></A> - 
+Variable in class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize">Polygonizer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html#shouldNeverReachHere()"><B>shouldNeverReachHere()</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>Always throws an <code>AssertionFailedException</code>.
+<DT><A HREF="com/vividsolutions/jts/util/Assert.html#shouldNeverReachHere(java.lang.String)"><B>shouldNeverReachHere(String)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util">Assert</A>
+<DD>Always throws an <code>AssertionFailedException</code> with the given
+  message.
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#signExpBits(long)"><B>signExpBits(long)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>Computes the bit pattern for the sign and exponent of a
+ double-precision number.
+<DT><A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html#signOfDet2x2(double, double, double, double)"><B>signOfDet2x2(double, double, double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm">RobustDeterminant</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html#signedArea(com.vividsolutions.jts.geom.Coordinate[])"><B>signedArea(Coordinate[])</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm">CGAlgorithms</A>
+<DD>Returns the signed area for a ring.
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#simplify(com.vividsolutions.jts.geom.Coordinate[], double)"><B>simplify(Coordinate[], double)</B></A> - 
+Static method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html#simplify()"><B>simplify()</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerLineSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html#simplify(com.vividsolutions.jts.geom.Geometry, double)"><B>simplify(Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify">DouglasPeuckerSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html#simplify(com.vividsolutions.jts.simplify.TaggedLineString)"><B>simplify(TaggedLineString)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLineStringSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html#simplify(java.util.Collection)"><B>simplify(Collection)</B></A> - 
+Method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLinesSimplifier</A>
+<DD>Simplify a collection of <A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineString</CODE></A>s
+<DT><A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#simplify(com.vividsolutions.jts.geom.Geometry, double)"><B>simplify(Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#size()"><B>size()</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns the number of coordinates in this sequence.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Returns the size of the coordinate sequence
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Double</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence.Float</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Bintree.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree">Bintree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree">Quadtree</A>
+<DD>Returns the number of items in the tree.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html#size(com.vividsolutions.jts.index.strtree.AbstractNode)"><B>size(AbstractNode)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree">AbstractSTRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>Returns the number of items in the tree.
+<DT><A HREF="com/vividsolutions/jts/noding/SegmentString.html#size()"><B>size()</B></A> - 
+Method in class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding">SegmentString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#snap(com.vividsolutions.jts.noding.snapround.HotPixel, com.vividsolutions.jts.noding.SegmentString, int)"><B>snap(HotPixel, SegmentString, int)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A>
+<DD>Snaps (nodes) all interacting segments to this hot pixel.
+<DT><A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html#snap(com.vividsolutions.jts.noding.snapround.HotPixel)"><B>snap(HotPixel)</B></A> - 
+Method in class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround">MCIndexPointSnapper</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#snap(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry, double)"><B>snap(Geometry, Geometry, double)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>Snaps two geometries together with a given tolerance.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html#snapTo(com.vividsolutions.jts.geom.Geometry, double)"><B>snapTo(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">GeometrySnapper</A>
+<DD>Snaps the vertices in the component <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s
+ of the source geometry
+ to the vertices of the given geometry.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html#snapTo(com.vividsolutions.jts.geom.Coordinate[])"><B>snapTo(Coordinate[])</B></A> - 
+Method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap">LineStringSnapper</A>
+<DD>Snaps the vertices and segments of the source LineString 
+ to the given set of target snap points.
+<DT><A HREF="com/vividsolutions/jts/linearref/LinearLocation.html#snapToVertex(com.vividsolutions.jts.geom.Geometry, double)"><B>snapToVertex(Geometry, double)</B></A> - 
+Method in class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref">LinearLocation</A>
+<DD>Snaps the value of this location to
+ the nearest vertex on the given linear <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>,
+ if the vertex is closer than <tt>maxDistance</tt>.
+<DT><A HREF="com/vividsolutions/jts/geom/util/Matrix.html#solve(double[][], double[])"><B>solve(double[][], double[])</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util">Matrix</A>
+<DD>Solves a system of equations using Gaussian Elimination.
+<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#split()"><B>split()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#start()"><B>start()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#startDe"><B>startDe</B></A> - 
+Variable in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Stopwatch.html#stop()"><B>stop()</B></A> - 
+Method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util">Stopwatch</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#stringOfChar(char, int)"><B>stringOfChar(char, int)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Returns a <code>String</code> of repeated characters.
+<DT><A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html#subnode"><B>subnode</B></A> - 
+Variable in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree">NodeBase</A>
+<DD>subnodes are numbered as follows:
+
+  0 | 1
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#subnode"><B>subnode</B></A> - 
+Variable in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>subquads are numbered as follows:
+ 
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html#swap(com.vividsolutions.jts.geom.CoordinateSequence, int, int)"><B>swap(CoordinateSequence, int, int)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom">CoordinateSequences</A>
+<DD>Swaps two coordinates in a sequence.
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#sym"><B>sym</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#symDifference(com.vividsolutions.jts.geom.Geometry)"><B>symDifference(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns a set combining the points in this <code>Geometry</code> not in
+  <code>other</code>, and the points in <code>other</code> not in this
+  <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>symDifference(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>symDifference(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>symDifference(Geometry, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Computes the set-theoretic symmetric difference of two geometries,
+ using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#symDifference(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>symDifference(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<DD>Computes the set-theoretic symmetric difference of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+</DL>
+<HR>
+<A NAME="_T_"><!-- --></A><H2>
+<B>T</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TOO_FEW_POINTS"><B>TOO_FEW_POINTS</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Indicates that either
+ 
+ a LineString contains a single point
+ a LinearRing contains 2 or 3 points
+ 
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#TRUE"><B>TRUE</B></A> - 
+Static variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Dimension value of non-empty geometries (= {P, L, A}).
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineSegment</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>.<DD>A <A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><CODE>LineSegment</CODE></A> which is tagged with its location in a parent <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html#TaggedLineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Geometry, int)"><B>TaggedLineSegment(Coordinate, Coordinate, Geometry, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html#TaggedLineSegment(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>TaggedLineSegment(Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">TaggedLineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineString</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>.<DD>&nbsp;<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#TaggedLineString(com.vividsolutions.jts.geom.LineString)"><B>TaggedLineString(LineString)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html#TaggedLineString(com.vividsolutions.jts.geom.LineString, int)"><B>TaggedLineString(LineString, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify">TaggedLineString</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineStringSimplifier</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLineStringSimplifier</A>.<DD>Simplifies a TaggedLineString, preserving topology
+ (in the sense that no new intersections are introduced).<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html#TaggedLineStringSimplifier(com.vividsolutions.jts.simplify.LineSegmentIndex, com.vividsolutions.jts.simplify.LineSegmentIndex)"><B>TaggedLineStringSimplifier(LineSegmentIndex, LineSegmentIndex)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLineStringSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLinesSimplifier</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLinesSimplifier</A>.<DD>Simplifies a collection of <A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><CODE>TaggedLineString</CODE></A>s, preserving topology
+ (in the sense that no new intersections are introduced).<DT><A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html#TaggedLinesSimplifier()"><B>TaggedLinesSimplifier()</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify">TaggedLinesSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom"><B>TopologyException</B></A> - exception com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A>.<DD>Indicates an invalid or inconsistent topological situation encountered during processing<DT><A HREF="com/vividsolutions/jts/geom/TopologyException.html#TopologyException(java.lang.String)"><B>TopologyException(String)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/TopologyException.html#TopologyException(java.lang.String, com.vividsolutions.jts.geom.Coordinate)"><B>TopologyException(String, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">TopologyException</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph"><B>TopologyLocation</B></A> - class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>.<DD>A TopologyLocation is the labelling of a
+ GraphComponent's topological relationship to a single Geometry.<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(int[])"><B>TopologyLocation(int[])</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(int, int, int)"><B>TopologyLocation(int, int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>Constructs a TopologyLocation specifying how points on, to the left of, and to the
+ right of some GraphComponent relate to some Geometry.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(int)"><B>TopologyLocation(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#TopologyLocation(com.vividsolutions.jts.geomgraph.TopologyLocation)"><B>TopologyLocation(TopologyLocation)</B></A> - 
+Constructor for class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TopologyPreservingSimplifier</B></A> - class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A>.<DD>Simplifies a geometry, ensuring that
+ the result is a valid geometry having the
+ same dimension and number of components as the input.<DT><A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html#TopologyPreservingSimplifier(com.vividsolutions.jts.geom.Geometry)"><B>TopologyPreservingSimplifier(Geometry)</B></A> - 
+Constructor for class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify">TopologyPreservingSimplifier</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid"><B>TopologyValidationError</B></A> - class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>.<DD>Contains information about the nature and location of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>
+ validation error<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TopologyValidationError(int, com.vividsolutions.jts.geom.Coordinate)"><B>TopologyValidationError(int, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Creates a validation error with the given type and location
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#TopologyValidationError(int)"><B>TopologyValidationError(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Creates a validation error of the given type with a null location
+<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom"><B>Triangle</B></A> - class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>.<DD>Represents a planar triangle, and provides methods for calculating various
+ properties of triangles.<DT><A HREF="com/vividsolutions/jts/geom/Triangle.html#Triangle(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>Triangle(Coordinate, Coordinate, Coordinate)</B></A> - 
+Constructor for class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom">Triangle</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#to"><B>to</B></A> - 
+Variable in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#toBinaryString(double)"><B>toBinaryString(double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html#toCoordinateArray(java.util.Stack)"><B>toCoordinateArray(Stack)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm">ConvexHull</A>
+<DD>An alternative to Stack.toArray, which is not present in earlier versions
+ of Java.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html#toCoordinateArray(java.util.Collection)"><B>toCoordinateArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom">CoordinateArrays</A>
+<DD>Converts the given Collection of Coordinates into a Coordinate array.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateList.html#toCoordinateArray()"><B>toCoordinateArray()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">CoordinateList</A>
+<DD>Returns the Coordinates in this collection.
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#toCoordinateArray()"><B>toCoordinateArray()</B></A> - 
+Method in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Returns (possibly copies of) the Coordinates in this collection.
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#toCoordinateArray()"><B>toCoordinateArray()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>This method exposes the internal Array of Coordinate Objects
+<DT><A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html#toCoordinateArray()"><B>toCoordinateArray()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl">PackedCoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#toDegrees(double)"><B>toDegrees(double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Converts from radians to degrees.
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#toDimensionSymbol(int)"><B>toDimensionSymbol(int)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Converts the dimension value to a dimension symbol, for example, <code>TRUE => 'T'</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/geom/Dimension.html#toDimensionValue(char)"><B>toDimensionValue(char)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom">Dimension</A>
+<DD>Converts the dimension symbol to a dimension value, for example, <code>'*' => DONTCARE</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html#toEdges(java.util.Collection)"><B>toEdges(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph">DirectedEdge</A>
+<DD>Returns a List containing the parent Edge (possibly null) for each of the given
+ DirectedEdges.
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toExternal(com.vividsolutions.jts.geom.Coordinate)"><B>toExternal(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>no longer needed, since internal representation is same as external representation</I>
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toExternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>toExternal(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>no longer needed, since internal representation is same as external representation</I>
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toGeometry(com.vividsolutions.jts.geom.Envelope)"><B>toGeometry(Envelope)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>If the <code>Envelope</code> is a null <code>Envelope</code>, returns an
+  empty <code>Point</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toGeometryArray(java.util.Collection)"><B>toGeometryArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html#toIntArray(java.util.List)"><B>toIntArray(List)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index">MonotoneChainIndexer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html#toIntArray(java.util.List)"><B>toIntArray(List)</B></A> - 
+Static method in class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain">MonotoneChainBuilder</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toInternal(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>toInternal(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use makePrecise instead</I>
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toInternal(com.vividsolutions.jts.geom.Coordinate)"><B>toInternal(Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD><B>Deprecated.</B>&nbsp;<I>use makePrecise instead</I>
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#toLine(int)"><B>toLine(int)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>Converts one GeometryLocation to a Line location
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>toLine(Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>toLine(Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/Debug.html#toLine(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>toLine(Coordinate, Coordinate, Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util">Debug</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#toLineLabel(com.vividsolutions.jts.geomgraph.Label)"><B>toLineLabel(Label)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#toLineString(com.vividsolutions.jts.geom.CoordinateSequence)"><B>toLineString(CoordinateSequence)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Generates the WKT for a N-point <code>LineString</code>.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#toLineString(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>toLineString(Coordinate, Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Generates the WKT for a 2-point <code>LineString</code>.
+<DT><A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html#toLineString()"><B>toLineString()</B></A> - 
+Method in class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge">EdgeString</A>
+<DD>Converts this EdgeString into a LineString.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toLineStringArray(java.util.Collection)"><B>toLineStringArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toLinearRingArray(java.util.Collection)"><B>toLinearRingArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/geom/Location.html#toLocationSymbol(int)"><B>toLocationSymbol(int)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom">Location</A>
+<DD>Converts the location value to a location symbol, for example, <code>EXTERIOR => 'e'</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toMultiLineStringArray(java.util.Collection)"><B>toMultiLineStringArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toMultiPointArray(java.util.Collection)"><B>toMultiPointArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toMultiPolygonArray(java.util.Collection)"><B>toMultiPolygonArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#toPoint(com.vividsolutions.jts.geom.Coordinate)"><B>toPoint(Coordinate)</B></A> - 
+Static method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Generates the WKT for a <code>Point</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toPointArray(java.util.Collection)"><B>toPointArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html#toPolygon(com.vividsolutions.jts.geom.GeometryFactory)"><B>toPolygon(GeometryFactory)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph">EdgeRing</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/GeometryFactory.html#toPolygonArray(java.util.Collection)"><B>toPolygonArray(Collection)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A>
+<DD>Converts the <code>List</code> to an array.
+<DT><A HREF="com/vividsolutions/jts/algorithm/Angle.html#toRadians(double)"><B>toRadians(double)</B></A> - 
+Static method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm">Angle</A>
+<DD>Converts from degrees to radians.
+<DT><A HREF="com/vividsolutions/jts/JTSVersion.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts">JTSVersion</A>
+<DD>Gets the full version number, suitable for display.
+<DT><A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm">LineIntersector</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>Returns a <code>String</code> of the form <I>(x,y,z)</I> .
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Returns a nine-character <code>String</code> representation of this <code>IntersectionMatrix</code>
+  .
+<DT><A HREF="com/vividsolutions/jts/geom/LineSegment.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/PrecisionModel.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">CoordinateArraySequence</A>
+<DD>Returns the string Representation of the coordinate array
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Gets a text representation of this transformation.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Depth.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph">Depth</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Label.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph">Label</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph">TopologyLocation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/bintree/Interval.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree">Interval</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>A representation of the Double bits formatted for easy readability
+<DT><A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html#toString()"><B>toString()</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid">TopologyValidationError</A>
+<DD>Gets a message describing the type and location of this error.
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#toString(long)"><B>toString(long)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>A representation of the Double bits formatted for easy readability
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#toText()"><B>toText()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns the Well-known Text representation of this <code>Geometry</code>.
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#touches(com.vividsolutions.jts.geom.Geometry)"><B>touches(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry touches the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#transform(com.vividsolutions.jts.geom.Coordinate, com.vividsolutions.jts.geom.Coordinate)"><B>transform(Coordinate, Coordinate)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Applies this transformation to the <tt>src</tt> coordinate
+ and places the results in the <tt>dest</tt> coordinate
+ (which may be the same as the source).
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#transform(com.vividsolutions.jts.geom.CoordinateSequence, int)"><B>transform(CoordinateSequence, int)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Applies this transformation to the i'th coordinate
+ in the given CoordinateSequence.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transform(com.vividsolutions.jts.geom.Geometry)"><B>transform(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/CollectionUtil.html#transform(java.util.Collection, com.vividsolutions.jts.util.CollectionUtil.Function)"><B>transform(Collection, CollectionUtil.Function)</B></A> - 
+Static method in class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util">CollectionUtil</A>
+<DD>Executes a function on each item in a <CODE>Collection</CODE>
+ and returns the results in a new <CODE>List</CODE>
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformCoordinates(com.vividsolutions.jts.geom.CoordinateSequence, com.vividsolutions.jts.geom.Geometry)"><B>transformCoordinates(CoordinateSequence, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>Transforms a <A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateSequence</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformGeometryCollection(com.vividsolutions.jts.geom.GeometryCollection, com.vividsolutions.jts.geom.Geometry)"><B>transformGeometryCollection(GeometryCollection, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformLineString(com.vividsolutions.jts.geom.LineString, com.vividsolutions.jts.geom.Geometry)"><B>transformLineString(LineString, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>Transforms a <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A> geometry.
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformLinearRing(com.vividsolutions.jts.geom.LinearRing, com.vividsolutions.jts.geom.Geometry)"><B>transformLinearRing(LinearRing, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformMultiLineString(com.vividsolutions.jts.geom.MultiLineString, com.vividsolutions.jts.geom.Geometry)"><B>transformMultiLineString(MultiLineString, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformMultiPoint(com.vividsolutions.jts.geom.MultiPoint, com.vividsolutions.jts.geom.Geometry)"><B>transformMultiPoint(MultiPoint, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformMultiPolygon(com.vividsolutions.jts.geom.MultiPolygon, com.vividsolutions.jts.geom.Geometry)"><B>transformMultiPolygon(MultiPolygon, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformPoint(com.vividsolutions.jts.geom.Point, com.vividsolutions.jts.geom.Geometry)"><B>transformPoint(Point, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html#transformPolygon(com.vividsolutions.jts.geom.Polygon, com.vividsolutions.jts.geom.Geometry)"><B>transformPolygon(Polygon, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util">GeometryTransformer</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Envelope.html#translate(double, double)"><B>translate(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A>
+<DD>Translates this envelope by given amounts in the X and Y direction.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#translate(double, double)"><B>translate(double, double)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>Updates the value of this transformation
+ to that of a translation transformation composed 
+ with the current value.
+<DT><A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html#translationInstance(double, double)"><B>translationInstance(double, double)</B></A> - 
+Static method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util">AffineTransformation</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html#transpose()"><B>transpose()</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom">IntersectionMatrix</A>
+<DD>Transposes this IntersectionMatrix.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#truncateToPowerOfTwo(double)"><B>truncateToPowerOfTwo(double)</B></A> - 
+Static method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_U_"><!-- --></A><H2>
+<B>U</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html#UNION"><B>UNION</B></A> - 
+Static variable in class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay">OverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>UniqueCoordinateArrayFilter</B></A> - class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A>.<DD>A <A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><CODE>CoordinateFilter</CODE></A> that builds a set of <code>Coordinate</code>s.<DT><A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html#UniqueCoordinateArrayFilter()"><B>UniqueCoordinateArrayFilter()</B></A> - 
+Constructor for class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util">UniqueCoordinateArrayFilter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#union(com.vividsolutions.jts.geom.Geometry)"><B>union(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Computes a <code>Geometry</code> representing all the points in this <code>Geometry</code>
+  and <code>other</code>.
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>union(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapIfNeededOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>union(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap">SnapOverlayOp</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>union(Geometry, Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision">CommonBitsOp</A>
+<DD>Computes the set-theoretic union of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html#union(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.geom.Geometry)"><B>union(Geometry, Geometry)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision">EnhancedPrecisionOp</A>
+<DD>Computes the set-theoretic union of two <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s, using enhanced precision.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/Edge.html#updateIM(com.vividsolutions.jts.geomgraph.Label, com.vividsolutions.jts.geom.IntersectionMatrix)"><B>updateIM(Label, IntersectionMatrix)</B></A> - 
+Static method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph">Edge</A>
+<DD>Updates an IM from the label for an edge.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html#updateIM(com.vividsolutions.jts.geom.IntersectionMatrix)"><B>updateIM(IntersectionMatrix)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph">GraphComponent</A>
+<DD>Update the IM with the contribution for this component.
+<DT><A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html#updateLabelling(com.vividsolutions.jts.geomgraph.Label)"><B>updateLabelling(Label)</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph">DirectedEdgeStar</A>
+<DD>Update incomplete dirEdge labels from the labelling for the node
+</DL>
+<HR>
+<A NAME="_V_"><!-- --></A><H2>
+<B>V</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html#values()"><B>values()</B></A> - 
+Method in class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph">NodeMap</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/planargraph/NodeMap.html#values()"><B>values()</B></A> - 
+Method in class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph">NodeMap</A>
+<DD>Returns the Nodes in this NodeMap, sorted in ascending order
+ by angle with the positive x-axis.
+<DT><A HREF="com/vividsolutions/jts/index/strtree/STRtree.html#verticalSlices(java.util.List, int)"><B>verticalSlices(List, int)</B></A> - 
+Method in class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree">STRtree</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html#visit(com.vividsolutions.jts.geom.Geometry)"><B>visit(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util">ShortCircuitedGeometryVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html#visit(com.vividsolutions.jts.geom.Envelope, com.vividsolutions.jts.index.ItemVisitor)"><B>visit(Envelope, ItemVisitor)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree">NodeBase</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html#visitItem(java.lang.Object)"><B>visitItem(Object)</B></A> - 
+Method in class com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index">ArrayListVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/index/ItemVisitor.html#visitItem(java.lang.Object)"><B>visitItem(Object)</B></A> - 
+Method in interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html#visitLinkedDirectedEdges(com.vividsolutions.jts.geomgraph.DirectedEdge)"><B>visitLinkedDirectedEdges(DirectedEdge)</B></A> - 
+Method in class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid">ConnectedInteriorTester</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_W_"><!-- --></A><H2>
+<B>W</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io"><B>WKBConstants</B></A> - interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>.<DD>Constant values used by the WKB format<DT><A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>WKBReader</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>.<DD>Reads a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>from a byte stream in Well-Known Binary format.<DT><A HREF="com/vividsolutions/jts/io/WKBReader.html#WKBReader()"><B>WKBReader()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBReader.html#WKBReader(com.vividsolutions.jts.geom.GeometryFactory)"><B>WKBReader(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io">WKBReader</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>WKBWriter</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>.<DD>Writes a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into Well-Known Binary format.<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html#WKBWriter()"><B>WKBWriter()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<DD>Creates a writer that writes <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ output dimension = 2 and BIG_ENDIAN byte order
+<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html#WKBWriter(int)"><B>WKBWriter(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<DD>Creates a writer that writes <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3) and BIG_ENDIAN byte order
+<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html#WKBWriter(int, int)"><B>WKBWriter(int, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<DD>Creates a writer that writes <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3) and byte order
+<DT><A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>WKTReader</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A>.<DD>Converts a geometry in Well-Known Text format to a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/io/WKTReader.html#WKTReader()"><B>WKTReader()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A>
+<DD>Creates a reader that creates objects using the default <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/WKTReader.html#WKTReader(com.vividsolutions.jts.geom.GeometryFactory)"><B>WKTReader(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io">WKTReader</A>
+<DD>Creates a reader that creates objects using the given
+  <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io"><B>WKTWriter</B></A> - class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>.<DD>Outputs the Well-Known Text representation of a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>.<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#WKTWriter()"><B>WKTWriter()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Creates a new WKTWriter with default settings
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#WKTWriter(int)"><B>WKTWriter(int)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Creates a writer that writes <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A>s with
+ the given output dimension (2 or 3).
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#w"><B>w</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html#widestGeometry(com.vividsolutions.jts.geom.Geometry)"><B>widestGeometry(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm">InteriorPointArea</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry)"><B>within(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>
+<DD>Returns <code>true</code> if this geometry is within the
+ specified geometry.
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbGeometryCollection"><B>wkbGeometryCollection</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbLineString"><B>wkbLineString</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbMultiLineString"><B>wkbMultiLineString</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbMultiPoint"><B>wkbMultiPoint</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbMultiPolygon"><B>wkbMultiPolygon</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbNDR"><B>wkbNDR</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbPoint"><B>wkbPoint</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbPolygon"><B>wkbPolygon</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBConstants.html#wkbXDR"><B>wkbXDR</B></A> - 
+Static variable in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io">WKBConstants</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/OutStream.html#write(byte[], int)"><B>write(byte[], int)</B></A> - 
+Method in interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html#write(byte[], int)"><B>write(byte[], int)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io">OutputStreamOutStream</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html#write(com.vividsolutions.jts.geom.Geometry)"><B>write(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<DD>Writes a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> into a byte array.
+<DT><A HREF="com/vividsolutions/jts/io/WKBWriter.html#write(com.vividsolutions.jts.geom.Geometry, com.vividsolutions.jts.io.OutStream)"><B>write(Geometry, OutStream)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io">WKBWriter</A>
+<DD>Writes a <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> to an <A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><CODE>OutStream</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#write(com.vividsolutions.jts.geom.Geometry)"><B>write(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Converts a <code>Geometry</code> to its Well-known Text representation.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#write(com.vividsolutions.jts.geom.Geometry, java.io.Writer)"><B>write(Geometry, Writer)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Converts a <code>Geometry</code> to its Well-known Text representation.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#writeFormatted(com.vividsolutions.jts.geom.Geometry)"><B>writeFormatted(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Same as <code>write</code>, but with newlines and spaces to make the
+  well-known text more readable.
+<DT><A HREF="com/vividsolutions/jts/io/WKTWriter.html#writeFormatted(com.vividsolutions.jts.geom.Geometry, java.io.Writer)"><B>writeFormatted(Geometry, Writer)</B></A> - 
+Method in class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io">WKTWriter</A>
+<DD>Same as <code>write</code>, but with newlines and spaces to make the
+  well-known text more readable.
+</DL>
+<HR>
+<A NAME="_X_"><!-- --></A><H2>
+<B>X</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#X"><B>X</B></A> - 
+Static variable in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>Standard ordinate index values
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#x"><B>x</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#x"><B>x</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>The x-coordinate.
+</DL>
+<HR>
+<A NAME="_Y_"><!-- --></A><H2>
+<B>Y</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#Y"><B>Y</B></A> - 
+Static variable in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html#y"><B>y</B></A> - 
+Variable in class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm">HCoordinate</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#y"><B>y</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>The y-coordinate.
+</DL>
+<HR>
+<A NAME="_Z_"><!-- --></A><H2>
+<B>Z</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html#Z"><B>Z</B></A> - 
+Static variable in interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/geom/Coordinate.html#z"><B>z</B></A> - 
+Variable in class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>
+<DD>The z-coordinate.
+<DT><A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html#zeroLowerBits(int)"><B>zeroLowerBits(int)</B></A> - 
+Method in class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree">DoubleBits</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/precision/CommonBits.html#zeroLowerBits(long, int)"><B>zeroLowerBits(long, int)</B></A> - 
+Static method in class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision">CommonBits</A>
+<DD>Zeroes the lower n bits of a bitstring.
+</DL>
+<HR>
+<A HREF="#_A_">A</A> <A HREF="#_B_">B</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_F_">F</A> <A HREF="#_G_">G</A> <A HREF="#_H_">H</A> <A HREF="#_I_">I</A> <A HREF="#_J_">J</A> <A HREF="#_K_">K</A> <A HREF="#_L_">L</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_P_">P</A> <A HREF="#_Q_">Q</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> <A HREF="#_W_">W</A> <A HREF="#_X_">X</A> <A HREF="#_Y_">Y</A> <A HREF="#_Z_">Z</A> 
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/index.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/index.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/index.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Mon Dec 18 10:45:48 PST 2006-->
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+</HEAD>
+<FRAMESET cols="20%,80%">
+<FRAMESET rows="30%,70%">
+<FRAME src="overview-frame.html" name="packageListFrame" title="All Packages">
+<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+</FRAMESET>
+<FRAME src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions">
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to<A HREF="overview-summary.html">Non-frame version.</A>
+</NOFRAMES>
+</FRAMESET>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/overview-frame.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/overview-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/overview-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+Overview
+</TITLE>
+
+<META NAME="keywords" CONTENT="Overview">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameTitleFont">
+<B></B></FONT></TD>
+</TR>
+</TABLE>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="allclasses-frame.html" target="packageFrame">All Classes</A></FONT>
+<P>
+<FONT size="+1" CLASS="FrameHeadingFont">
+Packages</FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/package-frame.html" target="packageFrame">com.vividsolutions.jts</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/algorithm/package-frame.html" target="packageFrame">com.vividsolutions.jts.algorithm</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/geom/package-frame.html" target="packageFrame">com.vividsolutions.jts.geom</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/geom/impl/package-frame.html" target="packageFrame">com.vividsolutions.jts.geom.impl</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/geom/util/package-frame.html" target="packageFrame">com.vividsolutions.jts.geom.util</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/geomgraph/package-frame.html" target="packageFrame">com.vividsolutions.jts.geomgraph</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/geomgraph/index/package-frame.html" target="packageFrame">com.vividsolutions.jts.geomgraph.index</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/package-frame.html" target="packageFrame">com.vividsolutions.jts.index</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/bintree/package-frame.html" target="packageFrame">com.vividsolutions.jts.index.bintree</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/chain/package-frame.html" target="packageFrame">com.vividsolutions.jts.index.chain</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/quadtree/package-frame.html" target="packageFrame">com.vividsolutions.jts.index.quadtree</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/strtree/package-frame.html" target="packageFrame">com.vividsolutions.jts.index.strtree</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/index/sweepline/package-frame.html" target="packageFrame">com.vividsolutions.jts.index.sweepline</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/package-frame.html" target="packageFrame">com.vividsolutions.jts.io</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/linearref/package-frame.html" target="packageFrame">com.vividsolutions.jts.linearref</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/noding/package-frame.html" target="packageFrame">com.vividsolutions.jts.noding</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/noding/snapround/package-frame.html" target="packageFrame">com.vividsolutions.jts.noding.snapround</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/buffer/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.buffer</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/distance/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.distance</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/linemerge/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.linemerge</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/overlay/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.overlay</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/overlay/snap/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.overlay.snap</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/overlay/validate/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.overlay.validate</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/polygonize/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.polygonize</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/predicate/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.predicate</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/relate/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.relate</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/operation/valid/package-frame.html" target="packageFrame">com.vividsolutions.jts.operation.valid</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/planargraph/package-frame.html" target="packageFrame">com.vividsolutions.jts.planargraph</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/planargraph/algorithm/package-frame.html" target="packageFrame">com.vividsolutions.jts.planargraph.algorithm</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/precision/package-frame.html" target="packageFrame">com.vividsolutions.jts.precision</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/simplify/package-frame.html" target="packageFrame">com.vividsolutions.jts.simplify</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/util/package-frame.html" target="packageFrame">com.vividsolutions.jts.util</A></FONT>
+<BR>
+</TD>
+</TR>
+</TABLE>
+
+<P>
+&nbsp;
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/overview-summary.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/overview-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/overview-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,272 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+Overview
+</TITLE>
+
+<META NAME="keywords" CONTENT="Overview">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Overview";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Packages</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/package-summary.html">com.vividsolutions.jts</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/algorithm/package-summary.html">com.vividsolutions.jts.algorithm</A></B></TD>
+<TD>Contains classes and interfaces implementing fundamental computational geometry algorithms.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/geom/package-summary.html">com.vividsolutions.jts.geom</A></B></TD>
+<TD>Contains the <CODE>Geometry</CODE> interface hierarchy and supporting classes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/geom/impl/package-summary.html">com.vividsolutions.jts.geom.impl</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/geom/util/package-summary.html">com.vividsolutions.jts.geom.util</A></B></TD>
+<TD>Provides classes that parse and modify Geometry objects.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/geomgraph/package-summary.html">com.vividsolutions.jts.geomgraph</A></B></TD>
+<TD>Contains classes that implement topology graphs.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/geomgraph/index/package-summary.html">com.vividsolutions.jts.geomgraph.index</A></B></TD>
+<TD>Contains classes that implement indexes for performing noding on geometry graph edges.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/index/package-summary.html">com.vividsolutions.jts.index</A></B></TD>
+<TD>Provides classes for various kinds of spatial indexes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/index/bintree/package-summary.html">com.vividsolutions.jts.index.bintree</A></B></TD>
+<TD>Contains classes that implement a Binary Interval Tree index</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/index/chain/package-summary.html">com.vividsolutions.jts.index.chain</A></B></TD>
+<TD>Contains classes that implement Monotone Chains</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/index/quadtree/package-summary.html">com.vividsolutions.jts.index.quadtree</A></B></TD>
+<TD>Contains classes that implement a Quadtree spatial index</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/index/strtree/package-summary.html">com.vividsolutions.jts.index.strtree</A></B></TD>
+<TD>Contains 2-D and 1-D versions of the Sort-Tile-Recursive (STR) tree, a query-only R-tree.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/index/sweepline/package-summary.html">com.vividsolutions.jts.index.sweepline</A></B></TD>
+<TD>Contains classes which implement a sweepline algorithm for scanning geometric data structures.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/io/package-summary.html">com.vividsolutions.jts.io</A></B></TD>
+<TD>Contains the interfaces for converting JTS objects to and from other formats.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/linearref/package-summary.html">com.vividsolutions.jts.linearref</A></B></TD>
+<TD>Contains classes and interfaces implementing linear referencing on linear geometries
+
+</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/noding/package-summary.html">com.vividsolutions.jts.noding</A></B></TD>
+<TD>Classes to compute nodings for arrangements of line segments and line segment sequences.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/noding/snapround/package-summary.html">com.vividsolutions.jts.noding.snapround</A></B></TD>
+<TD>Contains classes to implement the Snap Rounding algorithm for noding linestrings.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/package-summary.html">com.vividsolutions.jts.operation</A></B></TD>
+<TD>Provides classes for implementing operations on geometries</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/buffer/package-summary.html">com.vividsolutions.jts.operation.buffer</A></B></TD>
+<TD>Provides classes for computing buffers of geometries</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/distance/package-summary.html">com.vividsolutions.jts.operation.distance</A></B></TD>
+<TD>Provides classes for computing the distance between geometries</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/linemerge/package-summary.html">com.vividsolutions.jts.operation.linemerge</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/overlay/package-summary.html">com.vividsolutions.jts.operation.overlay</A></B></TD>
+<TD>Contains classes that perform a topological overlay to compute boolean spatial functions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/overlay/snap/package-summary.html">com.vividsolutions.jts.operation.overlay.snap</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/overlay/validate/package-summary.html">com.vividsolutions.jts.operation.overlay.validate</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/polygonize/package-summary.html">com.vividsolutions.jts.operation.polygonize</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/predicate/package-summary.html">com.vividsolutions.jts.operation.predicate</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/relate/package-summary.html">com.vividsolutions.jts.operation.relate</A></B></TD>
+<TD>Contains classes to implement the computation of the spatial relationships of <CODE>Geometry</CODE>s.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/operation/valid/package-summary.html">com.vividsolutions.jts.operation.valid</A></B></TD>
+<TD>Provides classes for testing the validity of geometries.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/planargraph/package-summary.html">com.vividsolutions.jts.planargraph</A></B></TD>
+<TD>Contains classes to implement a planar graph data structure.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/planargraph/algorithm/package-summary.html">com.vividsolutions.jts.planargraph.algorithm</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/precision/package-summary.html">com.vividsolutions.jts.precision</A></B></TD>
+<TD>Provides classes for manipulating the precision model of Geometries</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/simplify/package-summary.html">com.vividsolutions.jts.simplify</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/util/package-summary.html">com.vividsolutions.jts.util</A></B></TD>
+<TD>Contains support classes for the Java Topology Suite.</TD>
+</TR>
+</TABLE>
+
+<P>
+&nbsp;<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/overview-tree.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/overview-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/overview-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,276 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:47 PST 2006 -->
+<TITLE>
+Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="com/vividsolutions/jts/package-tree.html">com.vividsolutions.jts</A>, <A HREF="com/vividsolutions/jts/algorithm/package-tree.html">com.vividsolutions.jts.algorithm</A>, <A HREF="com/vividsolutions/jts/geom/package-tree.html">com.vividsolutions.jts.geom</A>, <A HREF="com/vividsolutions/jts/geom/impl/package-tree.html">com.vividsolutions.jts.geom.impl</A>, <A HREF="com/vividsolutions/jts/geom/util/package-tree.html">com.vividsolutions.jts.geom.util</A>, <A HREF="com/vividsolutions/jts/geomgraph/package-tree.html">com.vividsolutions.jts.geomgraph</A>, <A HREF="com/vividsolutions/jts/geomgraph/index/package-tree.html">com.vividsolutions.jts.geomgraph.index</A>, <A HREF="com/vividsolutions/jts/index/package-tree.html">com.vividsolutions.jts.index</A>, <A HREF="com/vividsolutions/jts/index/bintree/package-tree.html">com.vividsolutions.jts.index.bintree</A>, <A HREF="com/vividsolutions/jts/index/chain/package-tree.html">com.vividsolutions.jts.index.chain</A>, <A HREF="com/vividsolutions/jts/index/quadtree/package-tree.html">com.vividsolutions.jts.index.quadtree</A>, <A HREF="com/vividsolutions/jts/index/strtree/package-tree.html">com.vividsolutions.jts.index.strtree</A>, <A HREF="com/vividsolutions/jts/index/sweepline/package-tree.html">com.vividsolutions.jts.index.sweepline</A>, <A HREF="com/vividsolutions/jts/io/package-tree.html">com.vividsolutions.jts.io</A>, <A HREF="com/vividsolutions/jts/linearref/package-tree.html">com.vividsolutions.jts.linearref</A>, <A HREF="com/vividsolutions/jts/noding/package-tree.html">com.vividsolutions.jts.noding</A>, <A HREF="com/vividsolutions/jts/noding/snapround/package-tree.html">com.vividsolutions.jts.noding.snapround</A>, <A HREF="com/vividsolutions/jts/operation/package-tree.html">com.vividsolutions.jts.operation</A>, <A HREF="com/vividsolutions/jts/operation/buffer/package-tree.html">com.vividsolutions.jts.operation.buffer</A>, <A HREF="com/vividsolutions/jts/operation/distance/package-tree.html">com.vividsolutions.jts.operation.distance</A>, <A HREF="com/vividsolutions/jts/operation/linemerge/package-tree.html">com.vividsolutions.jts.operation.linemerge</A>, <A HREF="com/vividsolutions/jts/operation/overlay/package-tree.html">com.vividsolutions.jts.operation.overlay</A>, <A HREF="com/vividsolutions/jts/operation/overlay/snap/package-tree.html">com.vividsolutions.jts.operation.overlay.snap</A>, <A HREF="com/vividsolutions/jts/operation/overlay/validate/package-tree.html">com.vividsolutions.jts.operation.overlay.validate</A>, <A HREF="com/vividsolutions/jts/operation/polygonize/package-tree.html">com.vividsolutions.jts.operation.polygonize</A>, <A HREF="com/vividsolutions/jts/operation/predicate/package-tree.html">com.vividsolutions.jts.operation.predicate</A>, <A HREF="com/vividsolutions/jts/operation/relate/package-tree.html">com.vividsolutions.jts.operation.relate</A>, <A HREF="com/vividsolutions/jts/operation/valid/package-tree.html">com.vividsolutions.jts.operation.valid</A>, <A HREF="com/vividsolutions/jts/planargraph/package-tree.html">com.vividsolutions.jts.planargraph</A>, <A HREF="com/vividsolutions/jts/planargraph/algorithm/package-tree.html">com.vividsolutions.jts.planargraph.algorithm</A>, <A HREF="com/vividsolutions/jts/precision/package-tree.html">com.vividsolutions.jts.precision</A>, <A HREF="com/vividsolutions/jts/simplify/package-tree.html">com.vividsolutions.jts.simplify</A>, <A HREF="com/vividsolutions/jts/util/package-tree.html">com.vividsolutions.jts.util</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class java.util.AbstractCollection (implements java.util.Collection)
+<UL>
+<LI TYPE="circle">class java.util.AbstractList (implements java.util.List)
+<UL>
+<LI TYPE="circle">class java.util.ArrayList (implements java.lang.Cloneable, java.util.List, java.util.RandomAccess, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateList</B></A></UL>
+</UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractNode.html" title="class in com.vividsolutions.jts.index.strtree"><B>AbstractNode</B></A> (implements com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>AbstractSTRtree</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/SIRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>SIRtree</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/STRtree.html" title="class in com.vividsolutions.jts.index.strtree"><B>STRtree</B></A> (implements com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>)
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformation.html" title="class in com.vividsolutions.jts.geom.util"><B>AffineTransformation</B></A> (implements java.lang.Cloneable, com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/AffineTransformationBuilder.html" title="class in com.vividsolutions.jts.geom.util"><B>AffineTransformationBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/Angle.html" title="class in com.vividsolutions.jts.algorithm"><B>Angle</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ArrayListVisitor.html" title="class in com.vividsolutions.jts.index"><B>ArrayListVisitor</B></A> (implements com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index">ItemVisitor</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Assert.html" title="class in com.vividsolutions.jts.util"><B>Assert</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Bintree.html" title="class in com.vividsolutions.jts.index.bintree"><B>Bintree</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.EndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.EndPointBoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.Mod2BoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.Mod2BoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.MonoValentEndPointBoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule.html" title="class in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule.MultiValentEndPointBoundaryNodeRule</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm">BoundaryNodeRule</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/BoundaryOp.html" title="class in com.vividsolutions.jts.operation"><B>BoundaryOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferOp.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/BufferSubgraph.html" title="class in com.vividsolutions.jts.operation.buffer"><B>BufferSubgraph</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteArrayInStream.html" title="class in com.vividsolutions.jts.io"><B>ByteArrayInStream</B></A> (implements com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderDataInStream.html" title="class in com.vividsolutions.jts.io"><B>ByteOrderDataInStream</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ByteOrderValues.html" title="class in com.vividsolutions.jts.io"><B>ByteOrderValues</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentralEndpointIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>CentralEndpointIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidArea.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidArea</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidLine.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CentroidPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>CentroidPoint</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/CGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>CGAlgorithms</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>NonRobustCGAlgorithms</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustCGAlgorithms.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustCGAlgorithms</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.html" title="class in com.vividsolutions.jts.util"><B>CollectionUtil</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBits.html" title="class in com.vividsolutions.jts.precision"><B>CommonBits</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsOp.html" title="class in com.vividsolutions.jts.precision"><B>CommonBitsOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/CommonBitsRemover.html" title="class in com.vividsolutions.jts.precision"><B>CommonBitsRemover</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementLocationFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>ConnectedElementLocationFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/ConnectedElementPointFilter.html" title="class in com.vividsolutions.jts.operation.distance"><B>ConnectedElementPointFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>ConnectedInteriorTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.algorithm.<A HREF="com/vividsolutions/jts/planargraph/algorithm/ConnectedSubgraphFinder.html" title="class in com.vividsolutions.jts.planargraph.algorithm"><B>ConnectedSubgraphFinder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/ConsistentAreaTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>ConsistentAreaTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.html" title="class in com.vividsolutions.jts.operation.overlay"><B>ConsistentPolygonRingChecker</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/ConvexHull.html" title="class in com.vividsolutions.jts.algorithm"><B>ConvexHull</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom"><B>Coordinate</B></A> (implements java.lang.Cloneable, java.lang.Comparable, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Coordinate.DimensionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>Coordinate.DimensionalComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>CoordinateArrayFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.BidirectionalComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays.BidirectionalComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateArrays.ForwardComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateArrays.ForwardComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>CoordinateArraySequence</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>CoordinateArraySequenceFactory</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CoordinateCountFilter.html" title="class in com.vividsolutions.jts.util"><B>CoordinateCountFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceComparator.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateSequenceComparator</B></A> (implements java.util.Comparator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequences.html" title="class in com.vividsolutions.jts.geom"><B>CoordinateSequences</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Debug.html" title="class in com.vividsolutions.jts.util"><B>Debug</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom"><B>DefaultCoordinateSequenceFactory</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Depth.html" title="class in com.vividsolutions.jts.geomgraph"><B>Depth</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Dimension.html" title="class in com.vividsolutions.jts.geom"><B>Dimension</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdgeStar</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/DistanceOp.html" title="class in com.vividsolutions.jts.operation.distance"><B>DistanceOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/DoubleBits.html" title="class in com.vividsolutions.jts.index.quadtree"><B>DoubleBits</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerLineSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>DouglasPeuckerLineSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>DouglasPeuckerSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEnd.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEnd</B></A> (implements java.lang.Comparable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdge.html" title="class in com.vividsolutions.jts.geomgraph"><B>DirectedEdge</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundle.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBundle</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBuilder.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeEndStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeEndStar</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/DirectedEdgeStar.html" title="class in com.vividsolutions.jts.geomgraph"><B>DirectedEdgeStar</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.html" title="class in com.vividsolutions.jts.operation.relate"><B>EdgeEndBundleStar</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersection.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeIntersection</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeIntersectionList.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeIntersectionList</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeList.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeList</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeNodingValidator.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeNodingValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/EdgeRing.html" title="class in com.vividsolutions.jts.geomgraph"><B>EdgeRing</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>MaximalEdgeRing</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.html" title="class in com.vividsolutions.jts.operation.overlay"><B>MinimalEdgeRing</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/EdgeRing.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>EdgeRing</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>EdgeSetIntersector</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleEdgeSetIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleEdgeSetIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleMCSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleMCSweepLineIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SimpleSweepLineIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SimpleSweepLineIntersector</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/EdgeSetNoder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>EdgeSetNoder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/EdgeString.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>EdgeString</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/EnhancedPrecisionOp.html" title="class in com.vividsolutions.jts.precision"><B>EnhancedPrecisionOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom"><B>Envelope</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/FastNodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>FastNodingValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>FuzzyPointLocator</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/GeometricShapeFactory.html" title="class in com.vividsolutions.jts.util"><B>GeometricShapeFactory</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom"><B>Geometry</B></A> (implements java.lang.Cloneable, java.lang.Comparable, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom"><B>GeometryCollection</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom"><B>MultiLineString</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom"><B>MultiPoint</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom"><B>MultiPolygon</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom"><B>LineString</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom"><B>LinearRing</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom"><B>Point</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom"><B>Polygon</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryCollectionIterator.html" title="class in com.vividsolutions.jts.geom"><B>GeometryCollectionIterator</B></A> (implements java.util.Iterator)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryEditor</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.CoordinateOperation.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryEditor.CoordinateOperation</B></A> (implements com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util">GeometryEditor.GeometryEditorOperation</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><B>GeometryFactory</B></A> (implements java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/GeometryGraphOperation.html" title="class in com.vividsolutions.jts.operation"><B>GeometryGraphOperation</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay"><B>OverlayOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateOp.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateOp</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.distance.<A HREF="com/vividsolutions/jts/operation/distance/GeometryLocation.html" title="class in com.vividsolutions.jts.operation.distance"><B>GeometryLocation</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>GeometrySnapper</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryTransformer.html" title="class in com.vividsolutions.jts.geom.util"><B>GeometryTransformer</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GraphComponent.html" title="class in com.vividsolutions.jts.geomgraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Edge.html" title="class in com.vividsolutions.jts.geomgraph"><B>Edge</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Node.html" title="class in com.vividsolutions.jts.geomgraph"><B>Node</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNode.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNode</B></A></UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/GraphComponent.html" title="class in com.vividsolutions.jts.planargraph"><B>GraphComponent</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/DirectedEdge.html" title="class in com.vividsolutions.jts.planargraph"><B>DirectedEdge</B></A> (implements java.lang.Comparable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeDirectedEdge</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/PolygonizeDirectedEdge.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>PolygonizeDirectedEdge</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Edge.html" title="class in com.vividsolutions.jts.planargraph"><B>Edge</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeEdge.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeEdge</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Node.html" title="class in com.vividsolutions.jts.planargraph"><B>Node</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/HCoordinate.html" title="class in com.vividsolutions.jts.algorithm"><B>HCoordinate</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/HotPixel.html" title="class in com.vividsolutions.jts.noding.snapround"><B>HotPixel</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InputStreamInStream.html" title="class in com.vividsolutions.jts.io"><B>InputStreamInStream</B></A> (implements com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io">InStream</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/InteriorIntersectionFinder.html" title="class in com.vividsolutions.jts.noding"><B>InteriorIntersectionFinder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointArea.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointArea</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointLine.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/InteriorPointPoint.html" title="class in com.vividsolutions.jts.algorithm"><B>InteriorPointPoint</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionAdder.html" title="class in com.vividsolutions.jts.noding"><B>IntersectionAdder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IntersectionFinderAdder.html" title="class in com.vividsolutions.jts.noding"><B>IntersectionFinderAdder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding">SegmentIntersector</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/IntersectionMatrix.html" title="class in com.vividsolutions.jts.geom"><B>IntersectionMatrix</B></A> (implements java.lang.Cloneable)
+<LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Interval.html" title="class in com.vividsolutions.jts.index.bintree"><B>Interval</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Interval.html" title="class in com.vividsolutions.jts.index.strtree"><B>Interval</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/IntervalSize.html" title="class in com.vividsolutions.jts.index.quadtree"><B>IntervalSize</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.<A HREF="com/vividsolutions/jts/operation/IsSimpleOp.html" title="class in com.vividsolutions.jts.operation"><B>IsSimpleOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/IsValidOp.html" title="class in com.vividsolutions.jts.operation.valid"><B>IsValidOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/ItemBoundable.html" title="class in com.vividsolutions.jts.index.strtree"><B>ItemBoundable</B></A> (implements com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree">Boundable</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/IteratedNoder.html" title="class in com.vividsolutions.jts.noding"><B>IteratedNoder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.<A HREF="com/vividsolutions/jts/JTSVersion.html" title="class in com.vividsolutions.jts"><B>JTSVersion</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Key.html" title="class in com.vividsolutions.jts.index.bintree"><B>Key</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Key.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Key</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Label.html" title="class in com.vividsolutions.jts.geomgraph"><B>Label</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>LengthIndexedLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LengthLocationMap.html" title="class in com.vividsolutions.jts.linearref"><B>LengthLocationMap</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/LinearComponentExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>LinearComponentExtracter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryComponentFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearGeometryBuilder.html" title="class in com.vividsolutions.jts.linearref"><B>LinearGeometryBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearIterator.html" title="class in com.vividsolutions.jts.linearref"><B>LinearIterator</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LinearLocation.html" title="class in com.vividsolutions.jts.linearref"><B>LinearLocation</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/LineBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>LineBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/LineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>LineIntersector</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NonRobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>NonRobustLineIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustLineIntersector.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustLineIntersector</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMerger.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMerger</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom"><B>LineSegment</B></A> (implements java.lang.Comparable, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineSegment</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/LineSegmentIndex.html" title="class in com.vividsolutions.jts.simplify"><B>LineSegmentIndex</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineSequencer.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineSequencer</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>LineStringSnapper</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Location.html" title="class in com.vividsolutions.jts.geom"><B>Location</B></A><LI TYPE="circle">class com.vividsolutions.jts.linearref.<A HREF="com/vividsolutions/jts/linearref/LocationIndexedLine.html" title="class in com.vividsolutions.jts.linearref"><B>LocationIndexedLine</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/Matrix.html" title="class in com.vividsolutions.jts.geom.util"><B>Matrix</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexPointSnapper</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexSnapRounder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MCPointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>MCPointInRing</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/MinimumDiameter.html" title="class in com.vividsolutions.jts.algorithm"><B>MinimumDiameter</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChain.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChain</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChain.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChain</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainBuilder.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainEdge.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChainEdge</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/MonotoneChainIndexer.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>MonotoneChainIndexer</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainOverlapAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainOverlapAction</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.SegmentOverlapAction.html" title="class in com.vividsolutions.jts.noding"><B>MCIndexNoder.SegmentOverlapAction</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.chain.<A HREF="com/vividsolutions/jts/index/chain/MonotoneChainSelectAction.html" title="class in com.vividsolutions.jts.index.chain"><B>MonotoneChainSelectAction</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.HotPixelSnapAction.html" title="class in com.vividsolutions.jts.noding.snapround"><B>MCIndexPointSnapper.HotPixelSnapAction</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/NodeBase.html" title="class in com.vividsolutions.jts.index.bintree"><B>NodeBase</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Node.html" title="class in com.vividsolutions.jts.index.bintree"><B>Node</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.bintree.<A HREF="com/vividsolutions/jts/index/bintree/Root.html" title="class in com.vividsolutions.jts.index.bintree"><B>Root</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/NodeBase.html" title="class in com.vividsolutions.jts.index.quadtree"><B>NodeBase</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Node.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Node</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Root.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Root</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeFactory.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeFactory</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/OverlayNodeFactory.html" title="class in com.vividsolutions.jts.operation.overlay"><B>OverlayNodeFactory</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeFactory.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNodeFactory</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/NodeMap.html" title="class in com.vividsolutions.jts.geomgraph"><B>NodeMap</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/NodeMap.html" title="class in com.vividsolutions.jts.planargraph"><B>NodeMap</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/NodingValidator.html" title="class in com.vividsolutions.jts.noding"><B>NodingValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Octant.html" title="class in com.vividsolutions.jts.noding"><B>Octant</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>OffsetCurveBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>OffsetCurveSetBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>OffsetPointGenerator</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/OrientedCoordinateArray.html" title="class in com.vividsolutions.jts.noding"><B>OrientedCoordinateArray</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutputStreamOutStream.html" title="class in com.vividsolutions.jts.io"><B>OutputStreamOutStream</B></A> (implements com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io">OutStream</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.validate.<A HREF="com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.html" title="class in com.vividsolutions.jts.operation.overlay.validate"><B>OverlayResultValidator</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A>)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence.Double</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Float.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequence.Float</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.impl.<A HREF="com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl"><B>PackedCoordinateSequenceFactory</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/PlanarGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>PlanarGraph</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/GeometryGraph.html" title="class in com.vividsolutions.jts.geomgraph"><B>GeometryGraph</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/PlanarGraph.html" title="class in com.vividsolutions.jts.planargraph"><B>PlanarGraph</B></A><UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.linemerge.<A HREF="com/vividsolutions/jts/operation/linemerge/LineMergeGraph.html" title="class in com.vividsolutions.jts.operation.linemerge"><B>LineMergeGraph</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PointBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PointBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PointExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PointExtracter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>PointLocator</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.<A HREF="com/vividsolutions/jts/operation/overlay/PolygonBuilder.html" title="class in com.vividsolutions.jts.operation.overlay"><B>PolygonBuilder</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/PolygonExtracter.html" title="class in com.vividsolutions.jts.geom.util"><B>PolygonExtracter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom">GeometryFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.polygonize.<A HREF="com/vividsolutions/jts/operation/polygonize/Polygonizer.html" title="class in com.vividsolutions.jts.operation.polygonize"><B>Polygonizer</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Position.html" title="class in com.vividsolutions.jts.geomgraph"><B>Position</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom"><B>PrecisionModel</B></A> (implements java.lang.Comparable, java.io.Serializable)
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/Quadrant.html" title="class in com.vividsolutions.jts.geomgraph"><B>Quadrant</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.quadtree.<A HREF="com/vividsolutions/jts/index/quadtree/Quadtree.html" title="class in com.vividsolutions.jts.index.quadtree"><B>Quadtree</B></A> (implements com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index">SpatialIndex</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/QuadtreeNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>QuadtreeNestedRingTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleContains.html" title="class in com.vividsolutions.jts.operation.predicate"><B>RectangleContains</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/RectangleIntersects.html" title="class in com.vividsolutions.jts.operation.predicate"><B>RectangleIntersects</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateComputer.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateComputer</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.relate.<A HREF="com/vividsolutions/jts/operation/relate/RelateNodeGraph.html" title="class in com.vividsolutions.jts.operation.relate"><B>RelateNodeGraph</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/RepeatedPointTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>RepeatedPointTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.html" title="class in com.vividsolutions.jts.operation.buffer"><B>RightmostEdgeFinder</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/RobustDeterminant.html" title="class in com.vividsolutions.jts.algorithm"><B>RobustDeterminant</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/ScaledNoder.html" title="class in com.vividsolutions.jts.noding"><B>ScaledNoder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.predicate.<A HREF="com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.html" title="class in com.vividsolutions.jts.operation.predicate"><B>SegmentIntersectionTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SegmentIntersector.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SegmentIntersector</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNode.html" title="class in com.vividsolutions.jts.noding"><B>SegmentNode</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentNodeList.html" title="class in com.vividsolutions.jts.noding"><B>SegmentNodeList</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentPointComparator.html" title="class in com.vividsolutions.jts.noding"><B>SegmentPointComparator</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentString.html" title="class in com.vividsolutions.jts.noding"><B>SegmentString</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.html" title="class in com.vividsolutions.jts.noding"><B>SegmentStringDissolver</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/ShortCircuitedGeometryVisitor.html" title="class in com.vividsolutions.jts.geom.util"><B>ShortCircuitedGeometryVisitor</B></A><LI TYPE="circle">class com.vividsolutions.jts.precision.<A HREF="com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.html" title="class in com.vividsolutions.jts.precision"><B>SimpleGeometryPrecisionReducer</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SimpleNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>SimpleNestedRingTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.html" title="class in com.vividsolutions.jts.algorithm"><B>SimplePointInAreaLocator</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SimplePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>SimplePointInRing</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.snapround.<A HREF="com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.html" title="class in com.vividsolutions.jts.noding.snapround"><B>SimpleSnapRounder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SinglePassNoder.html" title="class in com.vividsolutions.jts.noding"><B>SinglePassNoder</B></A> (implements com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding">Noder</A>)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/MCIndexNoder.html" title="class in com.vividsolutions.jts.noding"><B>MCIndexNoder</B></A><LI TYPE="circle">class com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SimpleNoder.html" title="class in com.vividsolutions.jts.noding"><B>SimpleNoder</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/SIRtreePointInRing.html" title="class in com.vividsolutions.jts.algorithm"><B>SIRtreePointInRing</B></A> (implements com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm">PointInRing</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>SnapIfNeededOverlayOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.overlay.snap.<A HREF="com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.html" title="class in com.vividsolutions.jts.operation.overlay.snap"><B>SnapOverlayOp</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/Stopwatch.html" title="class in com.vividsolutions.jts.util"><B>Stopwatch</B></A><LI TYPE="circle">class com.vividsolutions.jts.planargraph.<A HREF="com/vividsolutions/jts/planargraph/Subgraph.html" title="class in com.vividsolutions.jts.planargraph"><B>Subgraph</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.buffer.<A HREF="com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.html" title="class in com.vividsolutions.jts.operation.buffer"><B>SubgraphDepthLocater</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineEvent.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SweepLineEvent</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineEvent.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineEvent</B></A> (implements java.lang.Comparable)
+<LI TYPE="circle">class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineIndex.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineIndex</B></A><LI TYPE="circle">class com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineInterval.html" title="class in com.vividsolutions.jts.index.sweepline"><B>SweepLineInterval</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/SweeplineNestedRingTester.html" title="class in com.vividsolutions.jts.operation.valid"><B>SweeplineNestedRingTester</B></A><LI TYPE="circle">class com.vividsolutions.jts.geomgraph.index.<A HREF="com/vividsolutions/jts/geomgraph/index/SweepLineSegment.html" title="class in com.vividsolutions.jts.geomgraph.index"><B>SweepLineSegment</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLinesSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLinesSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineString.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineString</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TaggedLineStringSimplifier</B></A><LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util"><B>NoninvertibleTransformationException</B></A><LI TYPE="circle">class com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm"><B>NotRepresentableException</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io"><B>ParseException</B></A><LI TYPE="circle">class java.lang.RuntimeException<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util"><B>AssertionFailedException</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom"><B>TopologyException</B></A></UL>
+</UL>
+</UL>
+<LI TYPE="circle">class com.vividsolutions.jts.geomgraph.<A HREF="com/vividsolutions/jts/geomgraph/TopologyLocation.html" title="class in com.vividsolutions.jts.geomgraph"><B>TopologyLocation</B></A><LI TYPE="circle">class com.vividsolutions.jts.simplify.<A HREF="com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.html" title="class in com.vividsolutions.jts.simplify"><B>TopologyPreservingSimplifier</B></A><LI TYPE="circle">class com.vividsolutions.jts.operation.valid.<A HREF="com/vividsolutions/jts/operation/valid/TopologyValidationError.html" title="class in com.vividsolutions.jts.operation.valid"><B>TopologyValidationError</B></A><LI TYPE="circle">class com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/Triangle.html" title="class in com.vividsolutions.jts.geom"><B>Triangle</B></A><LI TYPE="circle">class com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/UniqueCoordinateArrayFilter.html" title="class in com.vividsolutions.jts.util"><B>UniqueCoordinateArrayFilter</B></A> (implements com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom">CoordinateFilter</A>)
+<LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBReader.html" title="class in com.vividsolutions.jts.io"><B>WKBReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBWriter.html" title="class in com.vividsolutions.jts.io"><B>WKBWriter</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTReader.html" title="class in com.vividsolutions.jts.io"><B>WKTReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKTWriter.html" title="class in com.vividsolutions.jts.io"><B>WKTWriter</B></A></UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/AbstractSTRtree.IntersectsOp.html" title="interface in com.vividsolutions.jts.index.strtree"><B>AbstractSTRtree.IntersectsOp</B></A><LI TYPE="circle">interface com.vividsolutions.jts.index.strtree.<A HREF="com/vividsolutions/jts/index/strtree/Boundable.html" title="interface in com.vividsolutions.jts.index.strtree"><B>Boundable</B></A><LI TYPE="circle">interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/BoundaryNodeRule.html" title="interface in com.vividsolutions.jts.algorithm"><B>BoundaryNodeRule</B></A><LI TYPE="circle">interface java.lang.Cloneable<UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequence</B></A></UL>
+<LI TYPE="circle">interface com.vividsolutions.jts.util.<A HREF="com/vividsolutions/jts/util/CollectionUtil.Function.html" title="interface in com.vividsolutions.jts.util"><B>CollectionUtil.Function</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateFilter.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequenceFactory</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFilter.html" title="interface in com.vividsolutions.jts.geom"><B>CoordinateSequenceFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryComponentFilter.html" title="interface in com.vividsolutions.jts.geom"><B>GeometryComponentFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.util.<A HREF="com/vividsolutions/jts/geom/util/GeometryEditor.GeometryEditorOperation.html" title="interface in com.vividsolutions.jts.geom.util"><B>GeometryEditor.GeometryEditorOperation</B></A><LI TYPE="circle">interface com.vividsolutions.jts.geom.<A HREF="com/vividsolutions/jts/geom/GeometryFilter.html" title="interface in com.vividsolutions.jts.geom"><B>GeometryFilter</B></A><LI TYPE="circle">interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/InStream.html" title="interface in com.vividsolutions.jts.io"><B>InStream</B></A><LI TYPE="circle">interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/ItemVisitor.html" title="interface in com.vividsolutions.jts.index"><B>ItemVisitor</B></A><LI TYPE="circle">interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/Noder.html" title="interface in com.vividsolutions.jts.noding"><B>Noder</B></A><LI TYPE="circle">interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/OutStream.html" title="interface in com.vividsolutions.jts.io"><B>OutStream</B></A><LI TYPE="circle">interface com.vividsolutions.jts.algorithm.<A HREF="com/vividsolutions/jts/algorithm/PointInRing.html" title="interface in com.vividsolutions.jts.algorithm"><B>PointInRing</B></A><LI TYPE="circle">interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentIntersector.html" title="interface in com.vividsolutions.jts.noding"><B>SegmentIntersector</B></A><LI TYPE="circle">interface com.vividsolutions.jts.noding.<A HREF="com/vividsolutions/jts/noding/SegmentStringDissolver.SegmentStringMerger.html" title="interface in com.vividsolutions.jts.noding"><B>SegmentStringDissolver.SegmentStringMerger</B></A><LI TYPE="circle">interface com.vividsolutions.jts.index.<A HREF="com/vividsolutions/jts/index/SpatialIndex.html" title="interface in com.vividsolutions.jts.index"><B>SpatialIndex</B></A><LI TYPE="circle">interface com.vividsolutions.jts.index.sweepline.<A HREF="com/vividsolutions/jts/index/sweepline/SweepLineOverlapAction.html" title="interface in com.vividsolutions.jts.index.sweepline"><B>SweepLineOverlapAction</B></A><LI TYPE="circle">interface com.vividsolutions.jts.io.<A HREF="com/vividsolutions/jts/io/WKBConstants.html" title="interface in com.vividsolutions.jts.io"><B>WKBConstants</B></A></UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/package-list
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/package-list	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/package-list	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,33 @@
+com.vividsolutions.jts
+com.vividsolutions.jts.algorithm
+com.vividsolutions.jts.geom
+com.vividsolutions.jts.geom.impl
+com.vividsolutions.jts.geom.util
+com.vividsolutions.jts.geomgraph
+com.vividsolutions.jts.geomgraph.index
+com.vividsolutions.jts.index
+com.vividsolutions.jts.index.bintree
+com.vividsolutions.jts.index.chain
+com.vividsolutions.jts.index.quadtree
+com.vividsolutions.jts.index.strtree
+com.vividsolutions.jts.index.sweepline
+com.vividsolutions.jts.io
+com.vividsolutions.jts.linearref
+com.vividsolutions.jts.noding
+com.vividsolutions.jts.noding.snapround
+com.vividsolutions.jts.operation
+com.vividsolutions.jts.operation.buffer
+com.vividsolutions.jts.operation.distance
+com.vividsolutions.jts.operation.linemerge
+com.vividsolutions.jts.operation.overlay
+com.vividsolutions.jts.operation.overlay.snap
+com.vividsolutions.jts.operation.overlay.validate
+com.vividsolutions.jts.operation.polygonize
+com.vividsolutions.jts.operation.predicate
+com.vividsolutions.jts.operation.relate
+com.vividsolutions.jts.operation.valid
+com.vividsolutions.jts.planargraph
+com.vividsolutions.jts.planargraph.algorithm
+com.vividsolutions.jts.precision
+com.vividsolutions.jts.simplify
+com.vividsolutions.jts.util

Added: packages/jts/branches/upstream/current/doc/javadoc/packages.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/packages.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/packages.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:48 PST 2006 -->
+<TITLE>
+
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<BR>
+
+<BR>
+
+<BR>
+<CENTER>
+The front page has been relocated.Please see:
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="index.html">Frame version</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="overview-summary.html">Non-frame version.</A></CENTER>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/resources/inherit.gif
===================================================================
(Binary files differ)


Property changes on: packages/jts/branches/upstream/current/doc/javadoc/resources/inherit.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: packages/jts/branches/upstream/current/doc/javadoc/serialized-form.html
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/serialized-form.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/serialized-form.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,935 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:53 PST 2006 -->
+<TITLE>
+Serialized Form
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Serialized Form";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="serialized-form.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Serialized Form</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.algorithm</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.algorithm.NotRepresentableException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/algorithm/NotRepresentableException.html" title="class in com.vividsolutions.jts.algorithm">com.vividsolutions.jts.algorithm.NotRepresentableException</A> extends java.lang.Exception implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.geom</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.Coordinate"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Coordinate</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>6683108902428366910l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+x</H3>
+<PRE>
+double <B>x</B></PRE>
+<DL>
+<DD>The x-coordinate.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+y</H3>
+<PRE>
+double <B>y</B></PRE>
+<DL>
+<DD>The y-coordinate.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+z</H3>
+<PRE>
+double <B>z</B></PRE>
+<DL>
+<DD>The z-coordinate.
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.CoordinateList"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/CoordinateList.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.CoordinateList</A> extends java.util.ArrayList implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-4099577099607551657l
+
+<P>
+<A NAME="serialized_methods"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialization Methods</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<A NAME="readResolve()"><!-- --></A><H3>
+readResolve</H3>
+<PRE>
+private java.lang.Object <B>readResolve</B>()</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.Envelope"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Envelope</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>5873921885273102420l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+minx</H3>
+<PRE>
+double <B>minx</B></PRE>
+<DL>
+<DD>the minimum x-coordinate
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+maxx</H3>
+<PRE>
+double <B>maxx</B></PRE>
+<DL>
+<DD>the maximum x-coordinate
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+miny</H3>
+<PRE>
+double <B>miny</B></PRE>
+<DL>
+<DD>the minimum y-coordinate
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+maxy</H3>
+<PRE>
+double <B>maxy</B></PRE>
+<DL>
+<DD>the maximum y-coordinate
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.Geometry"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Geometry</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>8763622679187376702l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+envelope</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Envelope.html" title="class in com.vividsolutions.jts.geom">Envelope</A> <B>envelope</B></PRE>
+<DL>
+<DD>The bounding box of this <code>Geometry</code>.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+factory</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">GeometryFactory</A> <B>factory</B></PRE>
+<DL>
+<DD>The <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> used to create this Geometry
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+SRID</H3>
+<PRE>
+int <B>SRID</B></PRE>
+<DL>
+<DD>The ID of the Spatial Reference System used by this <code>Geometry</code>
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+userData</H3>
+<PRE>
+java.lang.Object <B>userData</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.GeometryCollection"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.GeometryCollection</A> extends <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-5694727726395021467l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+geometries</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A>[] <B>geometries</B></PRE>
+<DL>
+<DD>Internal representation of this <code>GeometryCollection</code>.
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.GeometryFactory"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/GeometryFactory.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.GeometryFactory</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-6820524753094095635l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+precisionModel</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">PrecisionModel</A> <B>precisionModel</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+coordinateSequenceFactory</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequenceFactory.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequenceFactory</A> <B>coordinateSequenceFactory</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+SRID</H3>
+<PRE>
+int <B>SRID</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.LinearRing"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.LinearRing</A> extends <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">LineString</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-4261142084085851829l
+
+<P>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.LineSegment"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.LineSegment</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>3252005833466256227l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+p0</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p0</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+p1</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>p1</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.LineString"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/LineString.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.LineString</A> extends <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>3110669828065365560l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+points</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>points</B></PRE>
+<DL>
+<DD>The points of this <code>LineString</code>.
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.MultiLineString"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/MultiLineString.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.MultiLineString</A> extends <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>8166665132445433741l
+
+<P>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.MultiPoint"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/MultiPoint.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.MultiPoint</A> extends <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-8048474874175355449l
+
+<P>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.MultiPolygon"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/MultiPolygon.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.MultiPolygon</A> extends <A HREF="com/vividsolutions/jts/geom/GeometryCollection.html" title="class in com.vividsolutions.jts.geom">GeometryCollection</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-551033529766975875l
+
+<P>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.Point"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/Point.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Point</A> extends <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>4902022702746614570l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+coordinates</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/CoordinateSequence.html" title="interface in com.vividsolutions.jts.geom">CoordinateSequence</A> <B>coordinates</B></PRE>
+<DL>
+<DD>The <code>Coordinate</code> wrapped by this <code>Point</code>.
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.Polygon"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/Polygon.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.Polygon</A> extends <A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-3494792200821764533l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+shell</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A> <B>shell</B></PRE>
+<DL>
+<DD>The exterior boundary,
+ or <code>null</code> if this <code>Polygon</code>
+  is empty.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+holes</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/LinearRing.html" title="class in com.vividsolutions.jts.geom">LinearRing</A>[] <B>holes</B></PRE>
+<DL>
+<DD>The interior boundaries, if any.
+ This instance var is never null.
+ If there are no holes, the array is of zero length.
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.PrecisionModel"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/PrecisionModel.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.PrecisionModel</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>7777263578777803835l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+modelType</H3>
+<PRE>
+PrecisionModel.Type <B>modelType</B></PRE>
+<DL>
+<DD>The type of PrecisionModel this represents.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+scale</H3>
+<PRE>
+double <B>scale</B></PRE>
+<DL>
+<DD>The scale factor which determines the number of decimal places in fixed precision.
+<P>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.TopologyException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/TopologyException.html" title="class in com.vividsolutions.jts.geom">com.vividsolutions.jts.geom.TopologyException</A> extends java.lang.RuntimeException implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+pt</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A> <B>pt</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.geom.impl</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.impl.CoordinateArraySequence"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequence.html" title="class in com.vividsolutions.jts.geom.impl">com.vividsolutions.jts.geom.impl.CoordinateArraySequence</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-915438501601840650l
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+coordinates</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Coordinate.html" title="class in com.vividsolutions.jts.geom">Coordinate</A>[] <B>coordinates</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.html" title="class in com.vividsolutions.jts.geom.impl">com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory</A> extends java.lang.Object implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<B>serialVersionUID:&nbsp;</B>-4099577099607551657l
+
+<P>
+<A NAME="serialized_methods"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialization Methods</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<A NAME="readResolve()"><!-- --></A><H3>
+readResolve</H3>
+<PRE>
+private java.lang.Object <B>readResolve</B>()</PRE>
+<DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.geom.util</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.geom.util.NoninvertibleTransformationException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.html" title="class in com.vividsolutions.jts.geom.util">com.vividsolutions.jts.geom.util.NoninvertibleTransformationException</A> extends java.lang.Exception implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.io</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.io.ParseException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/io/ParseException.html" title="class in com.vividsolutions.jts.io">com.vividsolutions.jts.io.ParseException</A> extends java.lang.Exception implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.simplify</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.simplify.TaggedLineSegment"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/simplify/TaggedLineSegment.html" title="class in com.vividsolutions.jts.simplify">com.vividsolutions.jts.simplify.TaggedLineSegment</A> extends <A HREF="com/vividsolutions/jts/geom/LineSegment.html" title="class in com.vividsolutions.jts.geom">LineSegment</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+parent</H3>
+<PRE>
+<A HREF="com/vividsolutions/jts/geom/Geometry.html" title="class in com.vividsolutions.jts.geom">Geometry</A> <B>parent</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<H3>
+index</H3>
+<PRE>
+int <B>index</B></PRE>
+<DL>
+<DL>
+</DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>com.vividsolutions.jts.util</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="com.vividsolutions.jts.util.AssertionFailedException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="com/vividsolutions/jts/util/AssertionFailedException.html" title="class in com.vividsolutions.jts.util">com.vividsolutions.jts.util.AssertionFailedException</A> extends java.lang.RuntimeException implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="serialized-form.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/doc/javadoc/stylesheet.css
===================================================================
--- packages/jts/branches/upstream/current/doc/javadoc/stylesheet.css	                        (rev 0)
+++ packages/jts/branches/upstream/current/doc/javadoc/stylesheet.css	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
+.TableRowColor         { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF;} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-frame.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GMLHandler</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GMLReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GMLWriter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GeometryStrategies</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraWriter</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-noframe.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-noframe.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/allclasses-noframe.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2">GMLReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2">GeometryStrategies</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLHandler.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLHandler.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLHandler.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,499 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+GMLHandler
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.gml2.GMLHandler class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GMLHandler";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GMLHandler.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.gml2</FONT>
+<BR>
+Class GMLHandler</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by">org.xml.sax.helpers.DefaultHandler
+      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.gml2.GMLHandler</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD>org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler</DD>
+</DL>
+<HR>
+<DL>
+<DT>public class <B>GMLHandler</B><DT>extends org.xml.sax.helpers.DefaultHandler</DL>
+
+<P>
+When you encounter some GML Geometry elements, you may either delegate the events to this handler.
+ 
+ This handler ignores both namespaces and prefixes. These mappings may be included at a later date, but for the moment are left as an exercise for the reader. 
+ 
+ Hints: 
+ 		If your parent handler is a DefaultHandler register the parent handler to receive the errors and locator calls.
+ 		Use the @see com.vividsolutions.jts.io.gml2.GeometryStrategies#findStrategy(String, String) to help check for applicability
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+<DT><B>See Also:</B><DD><CODE>DefaultHandler</CODE></DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#GMLHandler(GeometryFactory, org.xml.sax.ErrorHandler)">GMLHandler</A></B>(GeometryFactory&nbsp;gf,
+           org.xml.sax.ErrorHandler&nbsp;delegate)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allows the user to specify a delegate object for error / warning messages.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#characters(char[], int, int)">characters</A></B>(char[]&nbsp;ch,
+           int&nbsp;start,
+           int&nbsp;length)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#endElement(java.lang.String, java.lang.String, java.lang.String)">endElement</A></B>(java.lang.String&nbsp;uri,
+           java.lang.String&nbsp;localName,
+           java.lang.String&nbsp;qName)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#error(org.xml.sax.SAXParseException)">error</A></B>(org.xml.sax.SAXParseException&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#fatalError(org.xml.sax.SAXParseException)">fatalError</A></B>(org.xml.sax.SAXParseException&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;org.xml.sax.Locator</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#getDocumentLocator()">getDocumentLocator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;Geometry</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#getGeometry()">getGeometry</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method should only be called AFTER the parser has completed execution</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#ignorableWhitespace(char[], int, int)">ignorableWhitespace</A></B>(char[]&nbsp;ch,
+                    int&nbsp;start,
+                    int&nbsp;length)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#setDocumentLocator(org.xml.sax.Locator)">setDocumentLocator</A></B>(org.xml.sax.Locator&nbsp;locator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)">startElement</A></B>(java.lang.String&nbsp;uri,
+             java.lang.String&nbsp;localName,
+             java.lang.String&nbsp;qName,
+             org.xml.sax.Attributes&nbsp;attributes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html#warning(org.xml.sax.SAXParseException)">warning</A></B>(org.xml.sax.SAXParseException&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_org.xml.sax.helpers.DefaultHandler"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class org.xml.sax.helpers.DefaultHandler</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>endDocument, endPrefixMapping, notationDecl, processingInstruction, resolveEntity, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GMLHandler(GeometryFactory, org.xml.sax.ErrorHandler)"><!-- --></A><H3>
+GMLHandler</H3>
+<PRE>
+public <B>GMLHandler</B>(GeometryFactory&nbsp;gf,
+                  org.xml.sax.ErrorHandler&nbsp;delegate)</PRE>
+<DL>
+<DD>Allows the user to specify a delegate object for error / warning messages. 
+ 
+ If the delegate also implements ContentHandler then the document Locator will be passed on.
+<P>
+<DT><B>Parameters:</B><DD><CODE>gf</CODE> - Geometry Factory<DD><CODE>delegate</CODE> - Nullable<DT><B>See Also:</B><DD><CODE>ErrorHandler</CODE>, 
+<CODE>ContentHandler</CODE>, 
+<CODE>ContentHandler.setDocumentLocator(org.xml.sax.Locator)</CODE>, 
+<CODE>Locator</CODE></DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getGeometry()"><!-- --></A><H3>
+getGeometry</H3>
+<PRE>
+public Geometry <B>getGeometry</B>()</PRE>
+<DL>
+<DD>This method should only be called AFTER the parser has completed execution
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>Last Geometry Parsed, or a collection when there is morethan one geometry</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="characters(char[], int, int)"><!-- --></A><H3>
+characters</H3>
+<PRE>
+public void <B>characters</B>(char[]&nbsp;ch,
+                       int&nbsp;start,
+                       int&nbsp;length)
+                throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.characters(char[], int, int)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="ignorableWhitespace(char[], int, int)"><!-- --></A><H3>
+ignorableWhitespace</H3>
+<PRE>
+public void <B>ignorableWhitespace</B>(char[]&nbsp;ch,
+                                int&nbsp;start,
+                                int&nbsp;length)
+                         throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.ignorableWhitespace(char[], int, int)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="endElement(java.lang.String, java.lang.String, java.lang.String)"><!-- --></A><H3>
+endElement</H3>
+<PRE>
+public void <B>endElement</B>(java.lang.String&nbsp;uri,
+                       java.lang.String&nbsp;localName,
+                       java.lang.String&nbsp;qName)
+                throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.endElement(java.lang.String, java.lang.String, java.lang.String)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)"><!-- --></A><H3>
+startElement</H3>
+<PRE>
+public void <B>startElement</B>(java.lang.String&nbsp;uri,
+                         java.lang.String&nbsp;localName,
+                         java.lang.String&nbsp;qName,
+                         org.xml.sax.Attributes&nbsp;attributes)
+                  throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDocumentLocator(org.xml.sax.Locator)"><!-- --></A><H3>
+setDocumentLocator</H3>
+<PRE>
+public void <B>setDocumentLocator</B>(org.xml.sax.Locator&nbsp;locator)</PRE>
+<DL>
+<DD><DL>
+<DT><B>See Also:</B><DD><CODE>DefaultHandler.setDocumentLocator(org.xml.sax.Locator)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDocumentLocator()"><!-- --></A><H3>
+getDocumentLocator</H3>
+<PRE>
+protected org.xml.sax.Locator <B>getDocumentLocator</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="fatalError(org.xml.sax.SAXParseException)"><!-- --></A><H3>
+fatalError</H3>
+<PRE>
+public void <B>fatalError</B>(org.xml.sax.SAXParseException&nbsp;e)
+                throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.fatalError(org.xml.sax.SAXParseException)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="error(org.xml.sax.SAXParseException)"><!-- --></A><H3>
+error</H3>
+<PRE>
+public void <B>error</B>(org.xml.sax.SAXParseException&nbsp;e)
+           throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.error(org.xml.sax.SAXParseException)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="warning(org.xml.sax.SAXParseException)"><!-- --></A><H3>
+warning</H3>
+<PRE>
+public void <B>warning</B>(org.xml.sax.SAXParseException&nbsp;e)
+             throws org.xml.sax.SAXException</PRE>
+<DL>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE><DT><B>See Also:</B><DD><CODE>DefaultHandler.warning(org.xml.sax.SAXParseException)</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GMLHandler.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLReader.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLReader.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLReader.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,334 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+GMLReader
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.gml2.GMLReader class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GMLReader";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GMLReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.gml2</FONT>
+<BR>
+Class GMLReader</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.gml2.GMLReader</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GMLReader</B><DT>extends java.lang.Object</DL>
+
+<P>
+Reads the gml geometry(s) from the user specified xml fragment into a JTS geometry.
+
+ <code>
+   <LineString>
+  	<coordinates>24824.045318333192,38536.15071012041
+  		26157.378651666528,37567.42733944659 26666.666,36000.0
+  		26157.378651666528,34432.57266055341
+  		24824.045318333192,33463.84928987959
+  		23175.954681666804,33463.84928987959
+  		21842.621348333472,34432.57266055341 21333.333,36000.0
+  		21842.621348333472,37567.42733944659
+  		23175.954681666808,38536.15071012041 </coordinates>
+  </LineString>
+ </code>
+
+ This reader ignores namespace prefixes, and disables both the validation and namespace options on the SAXParser.
+ <p>
+ For a full description of GML geometries, visit the OGC web site <a href='http://www.opengeospatial.org/'>http://www.opengeospatial.org/</a>.
+ <p>
+ In most use cases, portions of a document will be delegated to this package.
+ <p>
+ It is the caller's responsibility to ensure that the supplied <CODE>PrecisionModel</CODE>
+ matches the precision of the incoming data.
+ If a lower precision for the data is required, a subsequent
+ process must be run on the data to reduce its precision.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html#GMLReader()">GMLReader</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;Geometry</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html#read(java.io.Reader, GeometryFactory)">read</A></B>(java.io.Reader&nbsp;reader,
+     GeometryFactory&nbsp;geometryFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads the Character Stream into a single JTS Geometry
+
+ Where a collection of Geometries are found, a JTS GeometryCollection is returned.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;Geometry</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html#read(java.lang.String, GeometryFactory)">read</A></B>(java.lang.String&nbsp;gml,
+     GeometryFactory&nbsp;geometryFactory)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads the GML2 String into a single JTS Geometry
+
+ Where a collection of Geometries are found, a JTS GeometryCollection is returned.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GMLReader()"><!-- --></A><H3>
+GMLReader</H3>
+<PRE>
+public <B>GMLReader</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="read(java.lang.String, GeometryFactory)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public Geometry <B>read</B>(java.lang.String&nbsp;gml,
+                     GeometryFactory&nbsp;geometryFactory)
+              throws org.xml.sax.SAXException,
+                     java.io.IOException,
+                     javax.xml.parsers.ParserConfigurationException</PRE>
+<DL>
+<DD>Reads the GML2 String into a single JTS Geometry
+
+ Where a collection of Geometries are found, a JTS GeometryCollection is returned.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>gml</CODE> - The GML String to parse<DD><CODE>geometryFactory</CODE> - When null, a default will be used.
+<DT><B>Returns:</B><DD>Geometry The resulting JTS Geometry
+<DT><B>Throws:</B>
+<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE>
+<DD><CODE>java.io.IOException</CODE>
+<DD><CODE>org.xml.sax.SAXException</CODE>
+<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE><DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html#read(java.io.Reader, GeometryFactory)"><CODE>read(Reader, GeometryFactory)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(java.io.Reader, GeometryFactory)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public Geometry <B>read</B>(java.io.Reader&nbsp;reader,
+                     GeometryFactory&nbsp;geometryFactory)
+              throws org.xml.sax.SAXException,
+                     java.io.IOException,
+                     javax.xml.parsers.ParserConfigurationException</PRE>
+<DL>
+<DD>Reads the Character Stream into a single JTS Geometry
+
+ Where a collection of Geometries are found, a JTS GeometryCollection is returned.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>reader</CODE> - The input source<DD><CODE>geometryFactory</CODE> - When null, a default will be used.
+<DT><B>Returns:</B><DD>Geometry The resulting JTS Geometry
+<DT><B>Throws:</B>
+<DD><CODE>org.xml.sax.SAXException</CODE>
+<DD><CODE>java.io.IOException</CODE>
+<DD><CODE>javax.xml.parsers.ParserConfigurationException</CODE> - Note: The parser will be both namespace aware and validating.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GMLReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLWriter.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLWriter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GMLWriter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,355 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+GMLWriter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.gml2.GMLWriter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GMLWriter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GMLWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.gml2</FONT>
+<BR>
+Class GMLWriter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.gml2.GMLWriter</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GMLWriter</B><DT>extends java.lang.Object</DL>
+
+<P>
+Writes JTS Geometries as GML2 into the writer provided, or as a string.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html#GMLWriter()">GMLWriter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html#setMaxCoordinatesPerLine(int)">setMaxCoordinatesPerLine</A></B>(int&nbsp;arg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of coordinates printed per line.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html#setPrefix(java.lang.String)">setPrefix</A></B>(java.lang.String&nbsp;prefix)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allows the user to force a prefix for the GML namespace.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html#setStartingIndentIndex(int)">setStartingIndentIndex</A></B>(int&nbsp;arg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the starting index for preaty printing</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html#write(Geometry)">write</A></B>(Geometry&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html#write(Geometry, java.io.Writer)">write</A></B>(Geometry&nbsp;geom,
+      java.io.Writer&nbsp;writer)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the JTS Geometry provided as GML2 into the writer provided.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GMLWriter()"><!-- --></A><H3>
+GMLWriter</H3>
+<PRE>
+public <B>GMLWriter</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setPrefix(java.lang.String)"><!-- --></A><H3>
+setPrefix</H3>
+<PRE>
+public void <B>setPrefix</B>(java.lang.String&nbsp;prefix)</PRE>
+<DL>
+<DD>Allows the user to force a prefix for the GML namespace. 
+ 
+ In XML blobs, the user may wish to leave the polygons un-qualified, thus setting the prefix to the empty string
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>prefix</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setStartingIndentIndex(int)"><!-- --></A><H3>
+setStartingIndentIndex</H3>
+<PRE>
+public void <B>setStartingIndentIndex</B>(int&nbsp;arg)</PRE>
+<DL>
+<DD>Sets the starting index for preaty printing
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>arg</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setMaxCoordinatesPerLine(int)"><!-- --></A><H3>
+setMaxCoordinatesPerLine</H3>
+<PRE>
+public void <B>setMaxCoordinatesPerLine</B>(int&nbsp;arg)</PRE>
+<DL>
+<DD>Sets the number of coordinates printed per line. 
+ 
+ Use full when configuring preaty printing.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>arg</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(Geometry)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public java.lang.String <B>write</B>(Geometry&nbsp;geom)
+                       throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - 
+<DT><B>Returns:</B><DD>String GML2 Encoded Geometry
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(Geometry, java.io.Writer)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public void <B>write</B>(Geometry&nbsp;geom,
+                  java.io.Writer&nbsp;writer)
+           throws java.io.IOException</PRE>
+<DL>
+<DD>Writes the JTS Geometry provided as GML2 into the writer provided.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - Geometry to encode<DD><CODE>writer</CODE> - Stream to encode to.
+<DT><B>Throws:</B>
+<DD><CODE>java.io.IOException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GMLWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GeometryStrategies.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GeometryStrategies.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/GeometryStrategies.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,261 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+GeometryStrategies
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.gml2.GeometryStrategies class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="GeometryStrategies";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryStrategies.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.gml2</FONT>
+<BR>
+Class GeometryStrategies</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.gml2.GeometryStrategies</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>GeometryStrategies</B><DT>extends java.lang.Object</DL>
+
+<P>
+Container for GML2 Geometry parsing strategies which can be represented in JTS.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GeometryStrategies.html#GeometryStrategies()">GeometryStrategies</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;com.vividsolutions.jts.io.gml2.GeometryStrategies.ParseStrategy</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GeometryStrategies.html#findStrategy(java.lang.String, java.lang.String)">findStrategy</A></B>(java.lang.String&nbsp;uri,
+             java.lang.String&nbsp;localName)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="GeometryStrategies()"><!-- --></A><H3>
+GeometryStrategies</H3>
+<PRE>
+public <B>GeometryStrategies</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="findStrategy(java.lang.String, java.lang.String)"><!-- --></A><H3>
+findStrategy</H3>
+<PRE>
+public static com.vividsolutions.jts.io.gml2.GeometryStrategies.ParseStrategy <B>findStrategy</B>(java.lang.String&nbsp;uri,
+                                                                                           java.lang.String&nbsp;localName)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>uri</CODE> - Not currently used, included for future work<DD><CODE>localName</CODE> - Used to look up an appropriate parse strategy
+<DT><B>Returns:</B><DD>The ParseStrategy which should be employed<DT><B>See Also:</B><DD><CODE>ParseStrategy</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="GeometryStrategies.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io.gml2
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.gml2 package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/io/gml2/package-summary.html" target="classFrame">com.vividsolutions.jts.io.gml2</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GeometryStrategies</A>
+<BR>
+<A HREF="GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GMLHandler</A>
+<BR>
+<A HREF="GMLReader.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GMLReader</A>
+<BR>
+<A HREF="GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2" target="classFrame">GMLWriter</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,173 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io.gml2
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.gml2 package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.gml2";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.io.gml2
+</H2>
+Classes to read and write the GML2 geometry format.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2">GeometryStrategies</A></B></TD>
+<TD>Container for GML2 Geometry parsing strategies which can be represented in JTS.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A></B></TD>
+<TD>When you encounter some GML Geometry elements, you may either delegate the events to this handler.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2">GMLReader</A></B></TD>
+<TD>Reads the gml geometry(s) from the user specified xml fragment into a JTS geometry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A></B></TD>
+<TD>Writes JTS Geometries as GML2 into the writer provided, or as a string.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.io.gml2 Description
+</H2>
+
+<P>
+Classes to read and write the GML2 geometry format.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/gml2/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io.gml2 Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.gml2 Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.io.gml2
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class org.xml.sax.helpers.DefaultHandler (implements org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLHandler</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2"><B>GeometryStrategies</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="../../../../../com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLWriter</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,369 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+OraReader
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle.OraReader class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OraReader";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OraReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.oracle</FONT>
+<BR>
+Class OraReader</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.oracle.OraReader</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OraReader</B><DT>extends java.lang.Object</DL>
+
+<P>
+Creates a <CODE>Geometry</CODE> from an Oracle MDSYS.GEOMETRY object.
+
+ A <CODE>GeometryFactory</CODE> may be provided, otherwise
+ a default one will be used.
+ The provided GeometryFactory will be used, with the exception of the SRID field.
+ This will be extracted from the Geometry.
+ <p>
+ If a PrecisionModel is supplied it is the callers's responsibility
+ to ensure that it matches the precision of the incoming data.
+ If a lower precision for the data is required, a subsequent
+ process must be run on the data to reduce its precision.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>9i</DD>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#NULL_DIMENSION">NULL_DIMENSION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#OraReader()">OraReader</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new reader, with a default GeometryFactory.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#OraReader(GeometryFactory)">OraReader</A></B>(GeometryFactory&nbsp;gf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new reader, with the supplied <CODE>GeometryFactory</CODE>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;Geometry</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#read(STRUCT)">read</A></B>(STRUCT&nbsp;struct)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+ provided.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#setDimension(int)">setDimension</A></B>(int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NULL_DIMENSION"><!-- --></A><H3>
+NULL_DIMENSION</H3>
+<PRE>
+public static final int <B>NULL_DIMENSION</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.io.oracle.OraReader.NULL_DIMENSION">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OraReader()"><!-- --></A><H3>
+OraReader</H3>
+<PRE>
+public <B>OraReader</B>()</PRE>
+<DL>
+<DD>Creates a new reader, with a default GeometryFactory.
+<P>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#OraReader(GeometryFactory)"><CODE>OraReader(GeometryFactory)</CODE></A></DL>
+<HR>
+
+<A NAME="OraReader(GeometryFactory)"><!-- --></A><H3>
+OraReader</H3>
+<PRE>
+public <B>OraReader</B>(GeometryFactory&nbsp;gf)</PRE>
+<DL>
+<DD>Creates a new reader, with the supplied <CODE>GeometryFactory</CODE>.
+ It is assumed that the supplied <CODE>PrecisionModel</CODE>
+ matches the precision of the incoming data -
+ coordinates are <b>not</b> made precise.
+<P>
+<DT><B>Parameters:</B><DD><CODE>gf</CODE> - A non-null geometry factory for later use.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="read(STRUCT)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public Geometry <B>read</B>(STRUCT&nbsp;struct)
+              throws java.sql.SQLException</PRE>
+<DL>
+<DD>This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+ provided. The Type of gemetry returned will depend on the input datum,
+ where the Geometry type is specified within the STRUCT.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>struct</CODE> - The MDSYS.GEOMETRY Object to decode
+<DT><B>Returns:</B><DD>A JTS Geometry if one could be created, null otherwise
+<DT><B>Throws:</B>
+<DD><CODE>java.sql.SQLException</CODE> - When a read error occured within the struct</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDimension(int)"><!-- --></A><H3>
+setDimension</H3>
+<PRE>
+public void <B>setDimension</B>(int&nbsp;dimension)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OraReader.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,353 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+OraWriter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle.OraWriter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OraWriter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OraWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.oracle</FONT>
+<BR>
+Class OraWriter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.oracle.OraWriter</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OraWriter</B><DT>extends java.lang.Object</DL>
+
+<P>
+Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object. 
+ 
+ A connection to an oracle instance with access to the definition of the MDSYS.GEOMETRY 
+ object is required by the oracle driver.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>9i</DD>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(OracleConnection)">OraWriter</A></B>(OracleConnection&nbsp;con)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(OracleConnection, int)">OraWriter</A></B>(OracleConnection&nbsp;con,
+          int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#setDimension(int)">setDimension</A></B>(int&nbsp;dimension)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#setSRID(int)">setSRID</A></B>(int&nbsp;srid)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provides the oppotunity to force all geometries written using this writter to be written using the 
+ specified srid.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;STRUCT</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#write(Geometry)">write</A></B>(Geometry&nbsp;geom)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OraWriter(OracleConnection)"><!-- --></A><H3>
+OraWriter</H3>
+<PRE>
+public <B>OraWriter</B>(OracleConnection&nbsp;con)</PRE>
+<DL>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+ 
+ The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+ 
+ The dimension is set to 2
+<P>
+<DT><B>Parameters:</B><DD><CODE>con</CODE> - </DL>
+<HR>
+
+<A NAME="OraWriter(OracleConnection, int)"><!-- --></A><H3>
+OraWriter</H3>
+<PRE>
+public <B>OraWriter</B>(OracleConnection&nbsp;con,
+                 int&nbsp;dimension)</PRE>
+<DL>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+ 
+ The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+<P>
+<DT><B>Parameters:</B><DD><CODE>con</CODE> - <DD><CODE>dimension</CODE> - </DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setSRID(int)"><!-- --></A><H3>
+setSRID</H3>
+<PRE>
+public void <B>setSRID</B>(int&nbsp;srid)</PRE>
+<DL>
+<DD>Provides the oppotunity to force all geometries written using this writter to be written using the 
+ specified srid. This is useful in two cases: 1) when you do not want the geometry's srid to be 
+ over-written or 2) when you want to ensure an entire layer is always written using a constant srid.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>srid</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(Geometry)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public STRUCT <B>write</B>(Geometry&nbsp;geom)
+             throws java.sql.SQLException</PRE>
+<DL>
+<DD>This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.
+ 
+ Although invalid geometries may be encoded, and inserted into an Oracle DB, this is 
+ not recomended. It is the responsibility of the user to ensure the geometry is valid 
+ prior to calling this method. The user should also ensure the the geometry's SRID 
+ field contains the correct value, if an SRID is desired. An incorrect SRID value may 
+ cause index exceptions during an insert or update. 
+ 
+ When a null Geometry is passed in, a non-null, empty STRUCT is returned. Therefore, 
+ inserting the the result of calling this method directly into a table will never result 
+ in null insertions. 
+ (March 2006)
+ 
+ To pass a NULL Geometry into an oracle geometry parameter using jdbc, use 
+ java.sql.CallableStatement.setNull(index,java.sql.Types.STRUCT,"MDSYS.SDO_GEOMETRY")
+ (April 2006)
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - JTS Geometry to encode
+<DT><B>Returns:</B><DD>Oracle MDSYS.GEOMETRY STRUCT
+<DT><B>Throws:</B>
+<DD><CODE>java.sql.SQLException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDimension(int)"><!-- --></A><H3>
+setDimension</H3>
+<PRE>
+public void <B>setDimension</B>(int&nbsp;dimension)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimension</CODE> - The dimension to set.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="OraWriter.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io.oracle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-summary.html" target="classFrame">com.vividsolutions.jts.io.oracle</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="OraReader.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraReader</A>
+<BR>
+<A HREF="OraWriter.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraWriter</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io.oracle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.oracle";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.io.oracle
+</H2>
+Classes to read and write Oracle SDO_GEOMETRY object structures.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A></B></TD>
+<TD>Creates a <CODE>Geometry</CODE> from an Oracle MDSYS.GEOMETRY object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A></B></TD>
+<TD>Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.io.oracle Description
+</H2>
+
+<P>
+Classes to read and write Oracle SDO_GEOMETRY object structures.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+com.vividsolutions.jts.io.oracle Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.oracle Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.io.oracle
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraWriter</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../com/vividsolutions/jts/io/gml2/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/constant-values.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/constant-values.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/constant-values.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+Constant Field Values
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Constant Field Values";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Constant Field Values</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+<LI><A HREF="#com.vividsolutions">com.vividsolutions.*</A>
+</UL>
+
+<A NAME="com.vividsolutions"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD ALIGN="left"><FONT SIZE="+2">
+<B>com.vividsolutions.*</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.oracle.OraReader.NULL_DIMENSION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#NULL_DIMENSION">NULL_DIMENSION</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/deprecated-list.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/deprecated-list.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/deprecated-list.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+Deprecated List
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Deprecated List";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/help-doc.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/help-doc.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/help-doc.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+API Help
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="API Help";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Overview</H3>
+<BLOCKQUOTE>
+
+<P>
+The <A HREF="overview-summary.html">Overview</A> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</BLOCKQUOTE>
+<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Exceptions<LI>Errors</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet.</EM>
+</FONT>
+<BR>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/index-all.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/index-all.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/index-all.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+Index
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Index";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<A HREF="#_C_">C</A> <A HREF="#_E_">E</A> <A HREF="#_F_">F</A> <A HREF="#_G_">G</A> <A HREF="#_I_">I</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_W_">W</A> <HR>
+<A NAME="_C_"><!-- --></A><H2>
+<B>C</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#characters(char[], int, int)"><B>characters(char[], int, int)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/package-summary.html"><B>com.vividsolutions.jts.io.gml2</B></A> - package com.vividsolutions.jts.io.gml2<DD>Classes to read and write the GML2 geometry format.<DT><A HREF="com/vividsolutions/jts/io/oracle/package-summary.html"><B>com.vividsolutions.jts.io.oracle</B></A> - package com.vividsolutions.jts.io.oracle<DD>Classes to read and write Oracle SDO_GEOMETRY object structures.</DL>
+<HR>
+<A NAME="_E_"><!-- --></A><H2>
+<B>E</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#endElement(java.lang.String, java.lang.String, java.lang.String)"><B>endElement(String, String, String)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#error(org.xml.sax.SAXParseException)"><B>error(SAXParseException)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_F_"><!-- --></A><H2>
+<B>F</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#fatalError(org.xml.sax.SAXParseException)"><B>fatalError(SAXParseException)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html#findStrategy(java.lang.String, java.lang.String)"><B>findStrategy(String, String)</B></A> - 
+Static method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2">GeometryStrategies</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_G_"><!-- --></A><H2>
+<B>G</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLHandler</B></A> - class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>.<DD>When you encounter some GML Geometry elements, you may either delegate the events to this handler.<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#GMLHandler(GeometryFactory, org.xml.sax.ErrorHandler)"><B>GMLHandler(GeometryFactory, ErrorHandler)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>Allows the user to specify a delegate object for error / warning messages.
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLReader</B></A> - class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2">GMLReader</A>.<DD>Reads the gml geometry(s) from the user specified xml fragment into a JTS geometry.<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html#GMLReader()"><B>GMLReader()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2">GMLReader</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLWriter</B></A> - class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>.<DD>Writes JTS Geometries as GML2 into the writer provided, or as a string.<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html#GMLWriter()"><B>GMLWriter()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2"><B>GeometryStrategies</B></A> - class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2">GeometryStrategies</A>.<DD>Container for GML2 Geometry parsing strategies which can be represented in JTS.<DT><A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html#GeometryStrategies()"><B>GeometryStrategies()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2">GeometryStrategies</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#getDocumentLocator()"><B>getDocumentLocator()</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#getGeometry()"><B>getGeometry()</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>This method should only be called AFTER the parser has completed execution
+</DL>
+<HR>
+<A NAME="_I_"><!-- --></A><H2>
+<B>I</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#ignorableWhitespace(char[], int, int)"><B>ignorableWhitespace(char[], int, int)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_N_"><!-- --></A><H2>
+<B>N</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#NULL_DIMENSION"><B>NULL_DIMENSION</B></A> - 
+Static variable in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_O_"><!-- --></A><H2>
+<B>O</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraReader</B></A> - class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>.<DD>Creates a <CODE>Geometry</CODE> from an Oracle MDSYS.GEOMETRY object.<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#OraReader()"><B>OraReader()</B></A> - 
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>Creates a new reader, with a default GeometryFactory.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#OraReader(GeometryFactory)"><B>OraReader(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>Creates a new reader, with the supplied <CODE>GeometryFactory</CODE>.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraWriter</B></A> - class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>.<DD>Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object.<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(OracleConnection)"><B>OraWriter(OracleConnection)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(OracleConnection, int)"><B>OraWriter(OracleConnection, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.
+</DL>
+<HR>
+<A NAME="_R_"><!-- --></A><H2>
+<B>R</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html#read(java.lang.String, GeometryFactory)"><B>read(String, GeometryFactory)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2">GMLReader</A>
+<DD>Reads the GML2 String into a single JTS Geometry
+
+ Where a collection of Geometries are found, a JTS GeometryCollection is returned.
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html#read(java.io.Reader, GeometryFactory)"><B>read(Reader, GeometryFactory)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2">GMLReader</A>
+<DD>Reads the Character Stream into a single JTS Geometry
+
+ Where a collection of Geometries are found, a JTS GeometryCollection is returned.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#read(STRUCT)"><B>read(STRUCT)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+ provided.
+</DL>
+<HR>
+<A NAME="_S_"><!-- --></A><H2>
+<B>S</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#setDimension(int)"><B>setDimension(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#setDimension(int)"><B>setDimension(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#setDocumentLocator(org.xml.sax.Locator)"><B>setDocumentLocator(Locator)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html#setMaxCoordinatesPerLine(int)"><B>setMaxCoordinatesPerLine(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<DD>Sets the number of coordinates printed per line.
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html#setPrefix(java.lang.String)"><B>setPrefix(String)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<DD>Allows the user to force a prefix for the GML namespace.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#setSRID(int)"><B>setSRID(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>Provides the oppotunity to force all geometries written using this writter to be written using the 
+ specified srid.
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html#setStartingIndentIndex(int)"><B>setStartingIndentIndex(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<DD>Sets the starting index for preaty printing
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)"><B>startElement(String, String, String, Attributes)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_W_"><!-- --></A><H2>
+<B>W</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html#warning(org.xml.sax.SAXParseException)"><B>warning(SAXParseException)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2">GMLHandler</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html#write(Geometry)"><B>write(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<DD>&nbsp;
+<DT><A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html#write(Geometry, java.io.Writer)"><B>write(Geometry, Writer)</B></A> - 
+Method in class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2">GMLWriter</A>
+<DD>Writes the JTS Geometry provided as GML2 into the writer provided.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#write(Geometry)"><B>write(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.
+</DL>
+<HR>
+<A HREF="#_C_">C</A> <A HREF="#_E_">E</A> <A HREF="#_F_">F</A> <A HREF="#_G_">G</A> <A HREF="#_I_">I</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_W_">W</A> 
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/index.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/index.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/index.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Mon Dec 18 10:45:55 PST 2006-->
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+</HEAD>
+<FRAMESET cols="20%,80%">
+<FRAMESET rows="30%,70%">
+<FRAME src="overview-frame.html" name="packageListFrame" title="All Packages">
+<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+</FRAMESET>
+<FRAME src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions">
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to<A HREF="overview-summary.html">Non-frame version.</A>
+</NOFRAMES>
+</FRAMESET>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-frame.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-frame.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-frame.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+Overview
+</TITLE>
+
+<META NAME="keywords" CONTENT="Overview">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameTitleFont">
+<B></B></FONT></TD>
+</TR>
+</TABLE>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="allclasses-frame.html" target="packageFrame">All Classes</A></FONT>
+<P>
+<FONT size="+1" CLASS="FrameHeadingFont">
+Packages</FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/gml2/package-frame.html" target="packageFrame">com.vividsolutions.jts.io.gml2</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/oracle/package-frame.html" target="packageFrame">com.vividsolutions.jts.io.oracle</A></FONT>
+<BR>
+</TD>
+</TR>
+</TABLE>
+
+<P>
+&nbsp;
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-summary.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-summary.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-summary.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+Overview
+</TITLE>
+
+<META NAME="keywords" CONTENT="Overview">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Overview";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Packages</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/io/gml2/package-summary.html">com.vividsolutions.jts.io.gml2</A></B></TD>
+<TD>Classes to read and write the GML2 geometry format.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/io/oracle/package-summary.html">com.vividsolutions.jts.io.oracle</A></B></TD>
+<TD>Classes to read and write Oracle SDO_GEOMETRY object structures.</TD>
+</TR>
+</TABLE>
+
+<P>
+&nbsp;<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-tree.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-tree.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/overview-tree.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="com/vividsolutions/jts/io/gml2/package-tree.html">com.vividsolutions.jts.io.gml2</A>, <A HREF="com/vividsolutions/jts/io/oracle/package-tree.html">com.vividsolutions.jts.io.oracle</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class org.xml.sax.helpers.DefaultHandler (implements org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler)
+<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLHandler.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLHandler</B></A></UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GeometryStrategies.html" title="class in com.vividsolutions.jts.io.gml2"><B>GeometryStrategies</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLReader.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.gml2.<A HREF="com/vividsolutions/jts/io/gml2/GMLWriter.html" title="class in com.vividsolutions.jts.io.gml2"><B>GMLWriter</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraWriter</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/package-list
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/package-list	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/package-list	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,2 @@
+com.vividsolutions.jts.io.gml2
+com.vividsolutions.jts.io.oracle

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/packages.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/packages.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/packages.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_12) on Mon Dec 18 10:45:55 PST 2006 -->
+<TITLE>
+
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<BR>
+
+<BR>
+
+<BR>
+<CENTER>
+The front page has been relocated.Please see:
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="index.html">Frame version</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="overview-summary.html">Non-frame version.</A></CENTER>
+
+</BODY>
+</HTML>

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/resources/inherit.gif
===================================================================
(Binary files differ)


Property changes on: packages/jts/branches/upstream/current/jtsio/doc/javadoc/resources/inherit.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: packages/jts/branches/upstream/current/jtsio/doc/javadoc/stylesheet.css
===================================================================
--- packages/jts/branches/upstream/current/jtsio/doc/javadoc/stylesheet.css	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/doc/javadoc/stylesheet.css	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
+.TableRowColor         { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF;} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,76 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+/**
+ * This class encapsualtes a collection of parsable GML tag names. For the purpose
+ * of performing a Geometry Spatial Validation we'll restrict ourselves to parsing
+ * only XML/GML tags defined in the geometry.xsd schema file
+ */
+final class GMLConstants{
+	
+	  // Namespace constants
+	  public static final String GML_NAMESPACE = "http://www.opengis.net/gml";
+	  public static final String GML_PREFIX = "gml";
+
+	  // Source Coordinate System
+	  public static final String GML_ATTR_SRSNAME = "srsName";
+
+	  // GML associative types
+	  public static final String GML_GEOMETRY_MEMBER = "geometryMember";
+	  public static final String GML_POINT_MEMBER = "pointMember";
+	  public static final String GML_POLYGON_MEMBER = "polygonMember";
+	  public static final String GML_LINESTRING_MEMBER = "lineStringMember";
+	  public static final String GML_OUTER_BOUNDARY_IS = "outerBoundaryIs";
+	  public static final String GML_INNER_BOUNDARY_IS = "innerBoundaryIs";
+
+	  // Primitive Geometries
+	  public static final String GML_POINT = "Point";
+	  public static final String GML_LINESTRING = "LineString";
+	  public static final String GML_LINEARRING = "LinearRing";
+	  public static final String GML_POLYGON = "Polygon";
+	  public static final String GML_BOX = "Box";
+
+	  // Aggregate Ggeometries
+	  public static final String GML_MULTI_GEOMETRY = "MultiGeometry";
+	  public static final String GML_MULTI_POINT = "MultiPoint";
+	  public static final String GML_MULTI_LINESTRING = "MultiLineString";
+	  public static final String GML_MULTI_POLYGON = "MultiPolygon";
+
+	  // Coordinates
+	  public static final String GML_COORDINATES = "coordinates";
+	  public static final String GML_COORD = "coord";
+	  public static final String GML_COORD_X = "X";
+	  public static final String GML_COORD_Y = "Y";
+	  public static final String GML_COORD_Z = "Z";
+}
\ No newline at end of file

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,249 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.util.*;
+
+import org.xml.sax.*;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.io.gml2.GeometryStrategies.ParseStrategy;
+
+/**
+ * When you encounter some GML Geometry elements, you may either delegate the events to this handler.
+ * 
+ * This handler ignores both namespaces and prefixes. These mappings may be included at a later date, but for the moment are left as an exercise for the reader. 
+ * 
+ * Hints: 
+ * 		If your parent handler is a DefaultHandler register the parent handler to receive the errors and locator calls.
+ * 		Use the @see com.vividsolutions.jts.io.gml2.GeometryStrategies#findStrategy(String, String) to help check for applicability
+ * 
+ * @see DefaultHandler
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class GMLHandler extends DefaultHandler {
+	
+	/**
+	 * This class is intended to log the SAX acitivity within a given element until it's termination. 
+	 * 
+	 * At this time, a new object of value is created and passed to the parent. An object of value is typically either java.lang.* or a JTS Geometry
+	 * 
+	 * This class is not intended for use outside this distribution, and may change in subsequent versions.
+	 *
+	 * @author David Zwiers, Vivid Solutions.
+	 */
+	static class Handler{
+		protected Attributes attrs = null;
+		protected ParseStrategy strategy;
+		
+		/**
+		 * @param strategy 
+		 * @param attributes Nullable
+		 */
+		public Handler(ParseStrategy strategy, Attributes attributes){
+			if(attributes!=null)
+				this.attrs = new AttributesImpl(attributes);
+			this.strategy = strategy;
+		}
+		
+		protected StringBuffer text = null;
+		/**
+		 * Caches text for the future
+		 * @param str
+		 */
+		public void addText(String str){
+			if(text == null)
+				text = new StringBuffer();
+			text.append(str);
+		}
+		
+		protected List children = null; 
+		/**
+		 * Store param for the future
+		 * 
+		 * @param obj
+		 */
+		public void keep(Object obj){
+			if(children == null)
+				children = new LinkedList();
+			children.add(obj);
+			
+		}
+		
+		/**
+		 * @param gf GeometryFactory
+		 * @return Parsed Object
+		 * @throws SAXException 
+		 */
+		public Object create(GeometryFactory gf) throws SAXException{
+			return strategy.parse(this,gf);
+		}
+	}
+	
+	private Stack stack = new Stack();
+    private ErrorHandler delegate = null;
+    private GeometryFactory gf = null;
+    
+    /**
+     * Allows the user to specify a delegate object for error / warning messages. 
+     * 
+     * If the delegate also implements ContentHandler then the document Locator will be passed on.
+     * @param gf Geometry Factory
+     * 
+     * @see ErrorHandler
+     * @see ContentHandler
+     * @see ContentHandler#setDocumentLocator(org.xml.sax.Locator)
+     * @see org.xml.sax.Locator
+     * 
+     * @param delegate Nullable
+     */
+    public GMLHandler(GeometryFactory gf, ErrorHandler delegate){
+    	this.delegate = delegate;
+    	this.gf = gf;
+    	stack.push(new Handler(null,null));
+    }
+    
+    /**
+     * This method should only be called AFTER the parser has completed execution
+     * 
+     * @return Last Geometry Parsed, or a collection when there is morethan one geometry
+     */
+    public Geometry getGeometry(){
+    	if(stack.size() == 1){
+    		Handler h = (Handler)stack.peek();
+    		if(h.children.size() == 1)
+    			return (Geometry) h.children.get(0);
+        	return gf.createGeometryCollection((Geometry[]) h.children.toArray(new Geometry[stack.size()]));
+    	}
+    	throw new IllegalStateException("Parse did not complete as expected, there are "+stack.size()+" elements on the Stack");
+    }
+	
+	//////////////////////////////////////////////
+	// Parsing Methods
+	
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
+	 */
+	public void characters(char[] ch, int start, int length) throws SAXException {
+		if(!stack.isEmpty())
+			((Handler)stack.peek()).addText(new String(ch,start,length));
+	}
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#ignorableWhitespace(char[], int, int)
+	 */
+	public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
+		if(!stack.isEmpty())
+			((Handler)stack.peek()).addText(" ");
+	}
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
+	 */
+	public void endElement(String uri, String localName, String qName) throws SAXException {
+		Handler thisAction = (Handler) stack.pop();
+		((Handler) stack.peek()).keep(thisAction.create(gf));
+	}
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
+	 */
+	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+		// create a handler
+		ParseStrategy ps = GeometryStrategies.findStrategy(uri,localName);
+		if(ps == null){
+			String qn = qName.substring(qName.indexOf(':')+1,qName.length());
+			ps = GeometryStrategies.findStrategy(null,qn);
+		}
+		Handler h = new Handler(ps,attributes);
+		// and add it to the stack
+		stack.push(h);
+	}
+	
+	//////////////////////////////////////////////
+	// Logging Methods
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#setDocumentLocator(org.xml.sax.Locator)
+	 */
+	public void setDocumentLocator(Locator locator) {
+		this.locator = locator;
+		if(delegate!=null && delegate instanceof ContentHandler)
+			((ContentHandler) delegate).setDocumentLocator(locator);
+		
+	}
+	
+	private Locator locator = null;
+	
+	protected Locator getDocumentLocator(){
+		return locator;
+	}
+	
+	//////////////////////////////////////////////
+	// ERROR Methods
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#fatalError(org.xml.sax.SAXParseException)
+	 */
+	public void fatalError(SAXParseException e) throws SAXException {
+		if(delegate!=null)
+			delegate.fatalError(e);
+		else
+			super.fatalError(e);
+	}
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#error(org.xml.sax.SAXParseException)
+	 */
+	public void error(SAXParseException e) throws SAXException {
+		if(delegate!=null)
+			delegate.error(e);
+		else
+			super.error(e);
+	}
+
+	/**
+	 * @see org.xml.sax.helpers.DefaultHandler#warning(org.xml.sax.SAXParseException)
+	 */
+	public void warning(SAXParseException e) throws SAXException {
+		if(delegate!=null)
+			delegate.warning(e);
+		else
+			super.warning(e);
+	}
+
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,126 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.*;
+
+import javax.xml.parsers.*;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+
+/**
+ * Reads the gml geometry(s) from the user specified xml fragment into a JTS geometry.
+ *
+ * <code>
+ *   <LineString>
+ *  	<coordinates>24824.045318333192,38536.15071012041
+ *  		26157.378651666528,37567.42733944659 26666.666,36000.0
+ *  		26157.378651666528,34432.57266055341
+ *  		24824.045318333192,33463.84928987959
+ *  		23175.954681666804,33463.84928987959
+ *  		21842.621348333472,34432.57266055341 21333.333,36000.0
+ *  		21842.621348333472,37567.42733944659
+ *  		23175.954681666808,38536.15071012041 </coordinates>
+ *  </LineString>
+ * </code>
+ *
+ * This reader ignores namespace prefixes, and disables both the validation and namespace options on the SAXParser.
+ * <p>
+ * For a full description of GML geometries, visit the OGC web site <a href='http://www.opengeospatial.org/'>http://www.opengeospatial.org/</a>.
+ * <p>
+ * In most use cases, portions of a document will be delegated to this package.
+ * <p>
+ * It is the caller's responsibility to ensure that the supplied {@link PrecisionModel}
+ * matches the precision of the incoming data.
+ * If a lower precision for the data is required, a subsequent
+ * process must be run on the data to reduce its precision.
+ *
+ * @author David Zwiers, Vivid Solutions.
+ */
+public class GMLReader {
+
+	/**
+	 * Reads the GML2 String into a single JTS Geometry
+	 *
+	 * Where a collection of Geometries are found, a JTS GeometryCollection is returned.
+	 *
+	 * @param gml The GML String to parse
+	 * @param geometryFactory When null, a default will be used.
+	 * @return Geometry The resulting JTS Geometry
+	 * @throws ParserConfigurationException
+	 * @throws IOException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 *
+	 * @see #read(Reader, GeometryFactory)
+	 */
+	public Geometry read(String gml, GeometryFactory geometryFactory) throws SAXException, IOException, ParserConfigurationException{
+		return read(new StringReader(gml),geometryFactory);
+	}
+
+	/**
+	 * Reads the Character Stream into a single JTS Geometry
+	 *
+	 * Where a collection of Geometries are found, a JTS GeometryCollection is returned.
+	 *
+	 * @param reader The input source
+	 * @param geometryFactory When null, a default will be used.
+	 * @return Geometry The resulting JTS Geometry
+	 * @throws SAXException
+	 * @throws IOException
+	 * @throws ParserConfigurationException
+	 *
+	 * Note: The parser will be both namespace aware and validating.
+	 */
+	public Geometry read(Reader reader, GeometryFactory geometryFactory) throws SAXException, IOException, ParserConfigurationException{
+		SAXParserFactory fact = SAXParserFactory.newInstance();
+
+		fact.setNamespaceAware(false);
+		fact.setValidating(false);
+
+		SAXParser parser = fact.newSAXParser();
+
+		if(geometryFactory == null)
+			geometryFactory = new GeometryFactory();
+
+		GMLHandler gh = new GMLHandler(geometryFactory,null);
+		parser.parse(new InputSource(reader),gh);
+
+		return gh.getGeometry();
+	}
+
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,350 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.*;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Writes JTS Geometries as GML2 into the writer provided, or as a string.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class GMLWriter {
+	private final String INDENT = "  ";
+	
+	private int startingIndentIndex = 0;
+	private int maxCoordinatesPerLine = 2;
+	
+	private String prefix = GMLConstants.GML_PREFIX;
+	
+	/**
+	 * Allows the user to force a prefix for the GML namespace. 
+	 * 
+	 * In XML blobs, the user may wish to leave the polygons un-qualified, thus setting the prefix to the empty string
+	 * 
+	 * @param prefix
+	 */
+	public void setPrefix(String prefix){
+		this.prefix =prefix;
+	}
+	
+	/**
+	 * Sets the starting index for preaty printing
+	 * 
+	 * @param arg
+	 */
+	public void setStartingIndentIndex(int arg){
+		if(arg<0)
+			throw new IndexOutOfBoundsException("In-valid index, must be > or = 0");
+		startingIndentIndex = arg;
+	}
+	
+	/**
+	 * Sets the number of coordinates printed per line. 
+	 * 
+	 * Use full when configuring preaty printing.
+	 * 
+	 * @param arg
+	 */
+	public void setMaxCoordinatesPerLine(int arg){
+		if(arg<1)
+			throw new IndexOutOfBoundsException("In-valid coordinate count per line, must be > 0");
+		maxCoordinatesPerLine = arg;
+	}
+	
+	/**
+	 * @param geom
+	 * @return String GML2 Encoded Geometry
+	 * @throws IOException 
+	 */
+	public String write(Geometry geom) throws IOException{
+		StringWriter writer = new StringWriter();
+		write(geom,writer);
+		return writer.getBuffer().toString();
+	}
+	
+	/**
+	 * Writes the JTS Geometry provided as GML2 into the writer provided.
+	 * 
+	 * @param geom Geometry to encode
+	 * @param writer Stream to encode to.
+	 * @throws IOException 
+	 */
+	public void write(Geometry geom, Writer writer) throws IOException{
+		write(geom,writer,startingIndentIndex);
+	}
+
+	private void write(Geometry geom, Writer writer, int level) throws IOException{
+		if(writer == null)
+	           throw new NullPointerException("Writer is null");
+		if (geom == null) {
+           throw new NullPointerException("Geometry is null");
+        } else if (geom instanceof Point) {
+        	writePoint((Point)geom,writer,level);
+        } else if (geom instanceof LineString) {
+        	writeLineString((LineString)geom,writer,level);
+        } else if (geom instanceof Polygon) {
+        	writePolygon((Polygon)geom,writer,level);
+        } else if (geom instanceof MultiPoint) {
+        	writeMultiPoint((MultiPoint)geom,writer,level);
+        } else if (geom instanceof MultiLineString) {
+        	writeMultiLineString((MultiLineString)geom,writer,level);
+        } else if (geom instanceof MultiPolygon) {
+        	writeMultiPolygon((MultiPolygon)geom,writer,level);
+        } else if (geom instanceof GeometryCollection) {
+        	writeGeometryCollection((GeometryCollection)geom,writer,startingIndentIndex);
+        }else{
+	        throw new IllegalArgumentException("Cannot encode JTS "
+	            + geom.getGeometryType() + " as SDO_GTEMPLATE "
+	            + "(Limitied to Point, Line, Polygon, GeometryCollection, MultiPoint,"
+	            + " MultiLineString and MultiPolygon)");
+        }
+		writer.flush();
+	}
+
+	  //<gml:Point><gml:coordinates>1195156.78946687,382069.533723461</gml:coordinates></gml:Point>
+	  private void writePoint(Point p, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_POINT,p,writer);
+	      
+	      write(new Coordinate[] { p.getCoordinate() },writer, level + 1);
+
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_POINT,writer);
+	  }
+
+	  //<gml:LineString><gml:coordinates>1195123.37289257,381985.763974674 1195120.22369473,381964.660533343 1195118.14929823,381942.597718511</gml:coordinates></gml:LineString>
+	  private void writeLineString(LineString ls, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_LINESTRING,ls,writer);
+	      
+	      write(ls.getCoordinates(),writer, level + 1);
+
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_LINESTRING,writer);
+	  }
+
+	  //<gml:LinearRing><gml:coordinates>1226890.26761027,1466433.47430292 1226880.59239079,1466427.03208053...></coordinates></gml:LinearRing>
+	  private void writeLinearRing(LinearRing lr, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_LINEARRING,lr,writer);
+	      
+	      write(lr.getCoordinates(),writer, level + 1);
+
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_LINEARRING,writer);
+	  }
+
+	  private void writePolygon(Polygon p, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_POLYGON,p,writer);
+	      
+
+	      startLine(level+1,writer);
+	      startGeomTag(GMLConstants.GML_OUTER_BOUNDARY_IS,null,writer);
+
+		    writeLinearRing((LinearRing) p.getExteriorRing(), writer, level + 2);
+
+	      startLine(level+1,writer);
+	      endGeomTag(GMLConstants.GML_OUTER_BOUNDARY_IS,writer);
+	      
+
+	    for (int t = 0; t < p.getNumInteriorRing(); t++) {
+		      startLine(level+1,writer);
+		      startGeomTag(GMLConstants.GML_INNER_BOUNDARY_IS,null,writer);
+
+			    writeLinearRing((LinearRing) p.getInteriorRingN(t), writer, level + 2);
+
+		      startLine(level+1,writer);
+		      endGeomTag(GMLConstants.GML_INNER_BOUNDARY_IS,writer);
+	    }
+
+
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_POLYGON,writer);
+	  }
+
+	  private void writeMultiPoint(MultiPoint mp, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_MULTI_POINT,mp,writer);
+	      
+		    for (int t = 0; t < mp.getNumGeometries(); t++) {
+			  startLine(level+1,writer);
+			  startGeomTag(GMLConstants.GML_POINT_MEMBER,null,writer);
+			      
+		      writePoint((Point) mp.getGeometryN(t), writer, level + 2);
+		      
+		      startLine(level+1,writer);
+		      endGeomTag(GMLConstants.GML_POINT_MEMBER,writer);
+		    }
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_MULTI_POINT,writer);
+	  }
+
+	  private void writeMultiLineString(MultiLineString mls, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_MULTI_LINESTRING,mls,writer);
+	      
+		    for (int t = 0; t < mls.getNumGeometries(); t++) {
+			  startLine(level+1,writer);
+			  startGeomTag(GMLConstants.GML_LINESTRING_MEMBER,null,writer);
+			      
+		      writeLineString((LineString) mls.getGeometryN(t), writer, level + 2);
+		      
+		      startLine(level+1,writer);
+		      endGeomTag(GMLConstants.GML_LINESTRING_MEMBER,writer);
+		    }
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_MULTI_LINESTRING,writer);
+	  }
+
+	  private void writeMultiPolygon(MultiPolygon mp, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_MULTI_POLYGON,mp,writer);
+	      
+		    for (int t = 0; t < mp.getNumGeometries(); t++) {
+			  startLine(level+1,writer);
+			  startGeomTag(GMLConstants.GML_POLYGON_MEMBER,null,writer);
+			      
+		      writePolygon((Polygon) mp.getGeometryN(t), writer, level + 2);
+		      
+		      startLine(level+1,writer);
+		      endGeomTag(GMLConstants.GML_POLYGON_MEMBER,writer);
+		    }
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_MULTI_POLYGON,writer);
+	  }
+
+	  private void writeGeometryCollection(GeometryCollection gc, Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_MULTI_GEOMETRY,gc,writer);
+	      
+		    for (int t = 0; t < gc.getNumGeometries(); t++) {
+			  startLine(level+1,writer);
+			  startGeomTag(GMLConstants.GML_GEOMETRY_MEMBER,null,writer);
+			      
+		      write(gc.getGeometryN(t), writer, level + 2);
+		      
+		      startLine(level+1,writer);
+		      endGeomTag(GMLConstants.GML_GEOMETRY_MEMBER,writer);
+		    }
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_MULTI_GEOMETRY,writer);
+	  }
+
+	  private static final String coordinateSeparator = ",";
+	  private static final String tupleSeparator = " ";
+	  
+	  /**
+	   * Takes a list of coordinates and converts it to GML.<br>
+	   * 2d and 3d aware.
+	   * 
+	   * @param coords array of coordinates
+	 * @throws IOException 
+	   */
+	  private void write(Coordinate[] coords,Writer writer, int level) throws IOException {
+	      startLine(level,writer);
+	      startGeomTag(GMLConstants.GML_COORDINATES,null,writer);
+	      
+	      int dim = 2;
+
+	      if (coords.length > 0) {
+	        if (!(Double.isNaN(coords[0].z)))
+	          dim = 3;
+	      }
+
+	      boolean isNewLine = false;
+	      for (int i = 0; i < coords.length; i++) {
+	        if (isNewLine) {
+	  	      startLine(level+1,writer);
+	          isNewLine = false;
+	        }
+	        if (dim == 2) {
+	        	writer.write(""+coords[i].x);
+	        	writer.write(coordinateSeparator);
+	        	writer.write(""+coords[i].y);
+	        } else if (dim == 3) {
+	        	writer.write(""+coords[i].x);
+	        	writer.write(coordinateSeparator);
+	        	writer.write(""+coords[i].y);
+	        	writer.write(coordinateSeparator);
+	        	writer.write(""+coords[i].z);
+	        }
+	        writer.write(tupleSeparator);
+
+	        // break output lines to prevent them from getting too long
+	        if ((i + 1) % maxCoordinatesPerLine == 0 && i < coords.length - 1) {
+		      writer.write("\n");
+	          isNewLine = true;
+	        }
+	      }
+	      if(!isNewLine)
+	    	  writer.write("\n");
+
+	      startLine(level,writer);
+	      endGeomTag(GMLConstants.GML_COORDINATES,writer);
+	  }
+
+
+	  private void startLine(int level, Writer writer) throws IOException
+	  {
+		  for(int i=0;i<level;i++)
+			  writer.write(INDENT);
+	  }
+
+	  private void startGeomTag(String geometryName, Geometry g, Writer writer) throws IOException
+	  {
+		writer.write("<"+((prefix == null || "".equals(prefix))?"":prefix+":"));
+		writer.write(geometryName);
+	    printAttr(g,writer);
+	    writer.write(">\n");
+	  }
+
+	  private void printAttr(Geometry geom, Writer writer) throws IOException
+	  {
+		  if(geom == null)
+			  return;
+		  writer.write(" "+GMLConstants.GML_ATTR_SRSNAME+"='");
+		  writer.write(geom.getSRID()+"");
+		  writer.write("'");
+	  }
+
+	  private void endGeomTag(String geometryName, Writer writer) throws IOException
+	  {
+		  writer.write("</"+((prefix == null || "".equals(prefix))?"":prefix+":"));
+		  writer.write(geometryName);
+		  writer.write(">\n");
+	  }
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,533 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.util.*;
+import java.util.regex.Pattern;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.gml2.GMLHandler.Handler;
+
+/**
+ * Container for GML2 Geometry parsing strategies which can be represented in JTS.
+ *
+ * @author David Zwiers, Vivid Solutions.
+ */
+public class GeometryStrategies{
+
+	/**
+	 * This set of strategies is not expected to be used directly outside of this distribution.
+	 * 
+	 * The implementation of this class are intended to be used as static function points in C. These strategies should be associated with an element when the element begins. The strategy is utilized at the end of the element to create an object of value to the user. 
+	 * 
+	 * In this case all the objects are either java.lang.* or JTS Geometry objects
+	 *
+	 * @author David Zwiers, Vivid Solutions.
+	 */
+	static interface ParseStrategy{
+		/**
+		 * @param arg Value to interpret
+		 * @param gf GeometryFactory
+		 * @return The interpreted value
+		 * @throws SAXException 
+		 */
+		Object parse(Handler arg, GeometryFactory gf) throws SAXException;
+	}
+	
+	private static HashMap strategies = loadStrategies();
+	private static HashMap loadStrategies(){
+		HashMap strats = new HashMap();
+		
+		// point
+		strats.put(GMLConstants.GML_POINT.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()!=1)
+					throw new SAXException("Cannot create a point without exactly one coordinate");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+
+				Object c = arg.children.get(0);
+				Point p = null;
+				if(c instanceof Coordinate){
+					p = gf.createPoint((Coordinate)c);
+				}else{
+					p = gf.createPoint((CoordinateSequence)c);
+				}
+				if(p.getSRID()!=srid)
+					p.setSRID(srid);
+				
+				return p;
+			}
+		});
+		
+		// linestring
+		strats.put(GMLConstants.GML_LINESTRING.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a linestring without atleast two coordinates or one coordinate sequence");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				LineString ls = null;
+				if(arg.children.size() == 1){
+					// coord set
+					try{
+						CoordinateSequence cs = (CoordinateSequence) arg.children.get(0);
+						ls = gf.createLineString(cs);
+					}catch(ClassCastException e){
+						throw new SAXException("Cannot create a linestring without atleast two coordinates or one coordinate sequence",e);
+					}
+				}else{
+					try{
+						Coordinate[] coords = (Coordinate[]) arg.children.toArray(new Coordinate[arg.children.size()]);
+						ls = gf.createLineString(coords);
+					}catch(ClassCastException e){
+						throw new SAXException("Cannot create a linestring without atleast two coordinates or one coordinate sequence",e);
+					}
+				}
+				
+				if(ls.getSRID()!=srid)
+					ls.setSRID(srid);
+				
+				return ls;
+			}
+		});
+		
+		// linearring
+		strats.put(GMLConstants.GML_LINEARRING.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()!=1 && arg.children.size()<4)
+					throw new SAXException("Cannot create a linear ring without atleast four coordinates or one coordinate sequence");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				LinearRing ls = null;
+				if(arg.children.size() == 1){
+					// coord set
+					try{
+						CoordinateSequence cs = (CoordinateSequence) arg.children.get(0);
+						ls = gf.createLinearRing(cs);
+					}catch(ClassCastException e){
+						throw new SAXException("Cannot create a linear ring without atleast four coordinates or one coordinate sequence",e);
+					}
+				}else{
+					try{
+						Coordinate[] coords = (Coordinate[]) arg.children.toArray(new Coordinate[arg.children.size()]);
+						ls = gf.createLinearRing(coords);
+					}catch(ClassCastException e){
+						throw new SAXException("Cannot create a linear ring without atleast four coordinates or one coordinate sequence",e);
+					}
+				}
+				
+				if(ls.getSRID()!=srid)
+					ls.setSRID(srid);
+				
+				return ls;
+			}
+		});
+		
+		// polygon
+		strats.put(GMLConstants.GML_POLYGON.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a polygon without atleast one linear ring");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				LinearRing outer = (LinearRing) arg.children.get(0); // will be the first
+				List t = arg.children.size()>1?arg.children.subList(1,arg.children.size()):null;
+				LinearRing[] inner = t==null?null:(LinearRing[]) t.toArray(new LinearRing[t.size()]);
+				
+				Polygon p = gf.createPolygon(outer,inner);
+				
+				if(p.getSRID()!=srid)
+					p.setSRID(srid);
+				
+				return p;
+			}
+		});
+		
+		// box
+		strats.put(GMLConstants.GML_BOX.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1 || arg.children.size()>2)
+					throw new SAXException("Cannot create a box without either two coords or one coordinate sequence");
+
+//				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				Envelope box = null;
+				if(arg.children.size() == 1){
+					CoordinateSequence cs = (CoordinateSequence) arg.children.get(0);
+					box = cs.expandEnvelope(new Envelope());
+				}else{
+					box = new Envelope((Coordinate)arg.children.get(0),(Coordinate)arg.children.get(1));
+				}
+				
+				return box;
+			}
+		});
+		
+		// multi-point
+		strats.put(GMLConstants.GML_MULTI_POINT.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a multi-point without atleast one point");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				Point[] pts = (Point[]) arg.children.toArray(new Point[arg.children.size()]);
+				
+				MultiPoint mp = gf.createMultiPoint(pts);
+				
+				if(mp.getSRID()!=srid)
+					mp.setSRID(srid);
+				
+				return mp;
+			}
+		});
+		
+		// multi-linestring
+		strats.put(GMLConstants.GML_MULTI_LINESTRING.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a multi-linestring without atleast one linestring");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				LineString[] lns = (LineString[]) arg.children.toArray(new LineString[arg.children.size()]);
+				
+				MultiLineString mp = gf.createMultiLineString(lns);
+				
+				if(mp.getSRID()!=srid)
+					mp.setSRID(srid);
+				
+				return mp;
+			}
+		});
+		
+		// multi-poly
+		strats.put(GMLConstants.GML_MULTI_POLYGON.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a multi-polygon without atleast one polygon");
+
+				int srid = getSrid(arg.attrs,gf.getSRID());
+				
+				Polygon[] plys = (Polygon[]) arg.children.toArray(new Polygon[arg.children.size()]);
+				
+				MultiPolygon mp = gf.createMultiPolygon(plys);
+				
+				if(mp.getSRID()!=srid)
+					mp.setSRID(srid);
+				
+				return mp;
+			}
+		});
+		
+		// multi-geom
+		strats.put(GMLConstants.GML_MULTI_GEOMETRY.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+				
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a multi-polygon without atleast one geometry");
+				
+				Geometry[] geoms = (Geometry[]) arg.children.toArray(new Geometry[arg.children.size()]);
+				
+				GeometryCollection gc = gf.createGeometryCollection(geoms);
+								
+				return gc;
+			}
+		});
+		
+		// coordinates
+		strats.put(GMLConstants.GML_COORDINATES.toLowerCase(),new ParseStrategy(){
+
+			private WeakHashMap patterns = new WeakHashMap();
+			
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+
+				if(arg.text == null || "".equals(arg.text))
+					throw new SAXException("Cannot create a coordinate sequence without text to parse");
+				
+				String decimal = ".";
+				String coordSeperator = ",";
+				String toupleSeperator = " ";
+				
+				// get overides from coordinates
+				if(arg.attrs.getIndex("decimal")>=0)
+					decimal = arg.attrs.getValue("decimal");
+				else if(arg.attrs.getIndex(GMLConstants.GML_NAMESPACE,"decimal")>=0)
+					decimal = arg.attrs.getValue(GMLConstants.GML_NAMESPACE,"decimal");
+
+				if(arg.attrs.getIndex("cs")>=0)
+					coordSeperator = arg.attrs.getValue("cs");
+				else if(arg.attrs.getIndex(GMLConstants.GML_NAMESPACE,"cs")>=0)
+					coordSeperator = arg.attrs.getValue(GMLConstants.GML_NAMESPACE,"cs");
+
+				if(arg.attrs.getIndex("ts")>=0)
+					toupleSeperator = arg.attrs.getValue("ts");
+				else if(arg.attrs.getIndex(GMLConstants.GML_NAMESPACE,"ts")>=0)
+					toupleSeperator = arg.attrs.getValue(GMLConstants.GML_NAMESPACE,"ts");
+				
+				// now to start parse
+				String t = arg.text.toString();
+				t = t.replaceAll("\\s"," ");
+				
+				Pattern ptn = (Pattern) patterns.get(toupleSeperator);
+				if(ptn == null){
+					String ts = new String(toupleSeperator);
+					if(ts.indexOf('\\')>-1){
+							// need to escape it
+							ts = ts.replaceAll("\\","\\\\");
+					}
+					if(ts.indexOf('.')>-1){
+						// need to escape it
+						ts = ts.replaceAll("\\.","\\\\.");
+					}
+					ptn = Pattern.compile(ts);
+					patterns.put(toupleSeperator,ptn);
+				}
+				String[] touples = ptn.split(t.trim());//  t.trim().split(toupleSeperator);
+				
+				if(touples.length == 0)
+					throw new SAXException("Cannot create a coordinate sequence without a touple to parse");
+				
+				// we may have null touples, so calculate the num first
+				int numNonNullTouples = 0;
+				for(int i=0;i<touples.length;i++){
+					if(touples[i] !=null && !"".equals(touples[i].trim())){
+						if(i!=numNonNullTouples){
+							touples[numNonNullTouples] = touples[i]; // always shift left
+						}
+						numNonNullTouples++;
+					}
+				}
+				for(int i=numNonNullTouples;i<touples.length;i++)
+					touples[i] = null;
+				
+				// null touples now at end of array
+				if(numNonNullTouples == 0)
+					throw new SAXException("Cannot create a coordinate sequence without a non-null touple to parse");
+				
+				int dim = touples[0].split(coordSeperator).length;
+				CoordinateSequence cs = gf.getCoordinateSequenceFactory().create(numNonNullTouples,dim);
+				dim = cs.getDimension(); // max dim
+				
+				boolean replaceDec = !".".equals(decimal);
+				
+				for(int i=0;i<numNonNullTouples;i++){
+					// for each touple, split, parse, add
+
+					ptn = (Pattern) patterns.get(coordSeperator);
+					if(ptn == null){
+						String ts = new String(coordSeperator);
+						if(ts.indexOf('\\')>-1){
+								// need to escape it
+							ts = ts.replaceAll("\\","\\\\");
+						}
+						if(ts.indexOf('.')>-1){
+							// need to escape it
+							ts = ts.replaceAll("\\.","\\\\.");
+						}
+						ptn = Pattern.compile(ts);
+						patterns.put(coordSeperator,ptn);
+					}
+					String[] coords = ptn.split(touples[i]);//  touples[i].split(coordSeperator);
+					
+					int dimIndex = 0;
+					for(int j=0;j<coords.length && j<dim;j++){
+						if(coords[j] != null && !"".equals(coords[j].trim())){
+							double ordinate = Double.parseDouble(replaceDec?coords[j].replaceAll(decimal,"."):coords[j]);
+							cs.setOrdinate(i,dimIndex++,ordinate);
+						}
+					}
+						// fill remaining dim
+					for(;dimIndex<dim;)cs.setOrdinate(i,dimIndex++,Double.NaN);
+				}
+				
+				return cs;
+			}
+		});
+		
+		// coord
+		strats.put(GMLConstants.GML_COORD.toLowerCase(),new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				// one child, either a coord
+				// or a coordinate sequence
+
+				if(arg.children.size()<1)
+					throw new SAXException("Cannot create a coordinate without atleast one axis");
+				if(arg.children.size()>3)
+					throw new SAXException("Cannot create a coordinate with more than 3 axis");
+				
+				Double[] axis = (Double[]) arg.children.toArray(new Double[arg.children.size()]);
+				Coordinate c = new Coordinate();
+				c.x = axis[0].doubleValue();
+				if(axis.length>1)
+					c.y = axis[1].doubleValue();
+				if(axis.length>2)
+					c.z = axis[2].doubleValue();
+				
+				return c;
+			}
+		});
+		
+		ParseStrategy coord_child = new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				if(arg.text == null)
+					return null;
+				return new Double((arg.text.toString()));
+			}
+		};
+		
+		// coord-x
+		strats.put(GMLConstants.GML_COORD_X.toLowerCase(),coord_child);
+		
+		// coord-y
+		strats.put(GMLConstants.GML_COORD_Y.toLowerCase(),coord_child);
+		
+		// coord-z
+		strats.put(GMLConstants.GML_COORD_Z.toLowerCase(),coord_child);
+		
+		ParseStrategy member = new ParseStrategy(){
+
+			public Object parse(Handler arg, GeometryFactory gf) throws SAXException {
+				if(arg.children.size()!=1)
+					throw new SAXException("Geometry Members may only contain one geometry.");
+				
+				// type checking will occur in the parent geom collection.
+				// may wish to add this in the future
+				
+				return arg.children.get(0);
+			}
+		};
+		// outerBoundary - linear ring member
+		strats.put(GMLConstants.GML_OUTER_BOUNDARY_IS.toLowerCase(),member);
+		
+		// innerBoundary - linear ring member
+		strats.put(GMLConstants.GML_INNER_BOUNDARY_IS.toLowerCase(),member);
+		
+		// point member
+		strats.put(GMLConstants.GML_POINT_MEMBER.toLowerCase(),member);
+		
+		// line string member
+		strats.put(GMLConstants.GML_LINESTRING_MEMBER.toLowerCase(),member);
+		
+		// polygon member
+		strats.put(GMLConstants.GML_POLYGON_MEMBER.toLowerCase(),member);
+		
+		return strats;
+	}
+	
+	static int getSrid(Attributes attrs, int defaultValue){
+		String srs = null;
+		if(attrs.getIndex(GMLConstants.GML_ATTR_SRSNAME)>=0)
+			srs = attrs.getValue(GMLConstants.GML_ATTR_SRSNAME);
+		else if(attrs.getIndex(GMLConstants.GML_NAMESPACE,GMLConstants.GML_ATTR_SRSNAME)>=0)
+			srs = attrs.getValue(GMLConstants.GML_NAMESPACE,GMLConstants.GML_ATTR_SRSNAME);
+		
+		if(srs != null){
+			srs = srs.trim();
+			if(srs != null && !"".equals(srs)){
+				try{
+					return Integer.parseInt(srs);
+				}catch(NumberFormatException e){
+					// rip out the end, uri's are used here sometimes
+					int index = srs.lastIndexOf('#');
+					if(index > -1)
+						srs = srs.substring(index);
+					try{
+						return Integer.parseInt(srs);
+					}catch(NumberFormatException e2){
+						// ignore
+					}
+				}
+			}
+		}
+		
+		return defaultValue;
+	}
+	
+	/**
+	 * @param uri Not currently used, included for future work
+	 * @param localName Used to look up an appropriate parse strategy
+	 * @return The ParseStrategy which should be employed
+	 * 
+	 * @see ParseStrategy
+	 */
+	public static ParseStrategy findStrategy(String uri,String localName){
+		return localName == null?null:(ParseStrategy) strategies.get(localName.toLowerCase());
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/package.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/package.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/gml2/package.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,6 @@
+<html>
+	<head><title>JTS IO: Java Topology Suite IO Library</title></head>
+	<body>
+	   Classes to read and write the GML2 geometry format.
+	</body>
+</html>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,123 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+/*
+ *    Geotools2 - OpenSource mapping toolkit
+ *    http://geotools.org
+ *    (C) 2003, Geotools Project Managment Committee (PMC)
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation;
+ *    version 2.1 of the License.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ */
+package com.vividsolutions.jts.io.oracle;
+
+/**
+ * Set of constants used to interact with MDSYS.GEOMETRY and JTS Geometries. 
+ * 
+ *
+ * @author David Zwiers, Vivid Solutions.
+ */
+class Constants {
+	
+	/**
+	 * Null SRID
+	 */
+	public static final int SRID_NULL = -1;
+	
+	/**
+	 * 
+	 * Extracted from the Oracle Documentation for SDO_ETYPE
+	 * 
+	 * This list may need to be expanded in the future to handle additional Geometry Types.
+	 *
+	 * @author David Zwiers, Vivid Solutions.
+	 * @author Jody Garnett, Refractions Research, Inc.
+	 */
+	static final class SDO_ETYPE{
+
+	    /** <code>ETYPE</code> code representing Point */
+	    public static final int POINT = 1;
+	
+	    /** <code>ETYPE</code> code representing Line */
+	    public static final int LINE = 2;
+	    
+		/** <code>ETYPE</code> code representing Polygon */
+		public static final int POLYGON = 3;
+	
+	    /** <code>ETYPE</code> code representing exterior counterclockwise  polygon ring */
+	    public static final int POLYGON_EXTERIOR = 1003;
+	
+	    /** <code>ETYPE</code> code representing interior clockwise  polygon ring */
+	    public static final int POLYGON_INTERIOR = 2003;
+	}
+    
+	/**
+	 * Extracted from the Oracle Documentation for SDO_GTYPE.
+	 * This represents the last two digits in a GTYPE, where the first id dimension and the second if LRS
+	 * 
+	 * This list may need to be expanded in the future to handle additional Geometry Types.
+	 *
+	 * @author David Zwiers, Vivid Solutions.
+	 * @author Brent Owens, The Open Planning Project.
+	 */
+	static final class SDO_GTEMPLATE{
+	
+		/** <code>TT</code> code representing Point */
+		public static final int POINT         = 01;
+	
+		/** <code>TT</code> code representing Line (or Curve) */
+		public static final int LINE          = 02;  
+	    
+		/** <code>TT</code> code representing Polygon */
+		public static final int POLYGON       = 03;
+	
+		/** <code>TT</code> code representing Collection */
+		public static final int COLLECTION    = 04;   
+	
+		/** <code>TT</code> code representing Multpoint */
+		public static final int MULTIPOINT    = 05;       
+	
+		/** <code>TT</code> code representing Multiline (or Multicurve) */
+		public static final int MULTILINE     = 06;
+	
+		/** <code>TT</code> code representing MULTIPOLYGON */
+		public static final int MULTIPOLYGON  = 07;
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,844 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+/*
+ *    Geotools2 - OpenSource mapping toolkit
+ *    http://geotools.org
+ *    (C) 2003, Geotools Project Managment Committee (PMC)
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation;
+ *    version 2.1 of the License.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+import java.util.*;
+
+import oracle.sql.*;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Creates a {@link Geometry} from an Oracle MDSYS.GEOMETRY object.
+ *
+ * A {@link GeometryFactory} may be provided, otherwise
+ * a default one will be used.
+ * The provided GeometryFactory will be used, with the exception of the SRID field.
+ * This will be extracted from the Geometry.
+ * <p>
+ * If a PrecisionModel is supplied it is the callers's responsibility
+ * to ensure that it matches the precision of the incoming data.
+ * If a lower precision for the data is required, a subsequent
+ * process must be run on the data to reduce its precision.
+ *
+ * @version 9i
+ * @author David Zwiers, Vivid Solutions.
+ */
+public class OraReader {
+	private GeometryFactory geometryFactory;
+
+	public static final int NULL_DIMENSION = -1;
+	private int dimension = -1;
+
+	/**
+	 * Creates a new reader, with a default GeometryFactory.
+	 *
+	 * @see #OraReader(GeometryFactory)
+	 */
+	public OraReader() {
+		this(new GeometryFactory());
+	}
+
+	/**
+	 * Creates a new reader, with the supplied {@link GeometryFactory}.
+	 * It is assumed that the supplied {@link PrecisionModel}
+	 * matches the precision of the incoming data -
+	 * coordinates are <b>not</b> made precise.
+	 *
+	 * @param gf
+	 *            A non-null geometry factory for later use.
+	 * @throw NullPointerException when the geometry factory is null.
+	 */
+	public OraReader(GeometryFactory gf) {
+		if (gf == null)
+			throw new NullPointerException("Geometry Factory may not be Null");
+		this.geometryFactory = gf;
+	}
+
+	/**
+	 * This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+	 * provided. The Type of gemetry returned will depend on the input datum,
+	 * where the Geometry type is specified within the STRUCT.
+	 *
+	 * @param struct The MDSYS.GEOMETRY Object to decode
+	 * @return A JTS Geometry if one could be created, null otherwise
+	 * @throws SQLException When a read error occured within the struct
+	 */
+	public Geometry read(STRUCT struct) throws SQLException {
+
+		// Note Returning null for null Datum
+		if (struct == null)
+			return null;
+
+		Datum data[] = struct.getOracleAttributes();
+		int gType = asInteger(data[0], 0);
+		int SRID = asInteger(data[1], Constants.SRID_NULL);
+		double point[] = asDoubleArray((STRUCT) data[2], Double.NaN);
+		int elemInfo[] = asIntArray((ARRAY) data[3], 0);
+		double ordinates[] = asDoubleArray((ARRAY) data[4], Double.NaN);
+		GeometryFactory gf = geometryFactory;
+		if(geometryFactory.getSRID() != SRID){
+			// clone it and use the geom's srid
+			gf = new GeometryFactory(geometryFactory.getPrecisionModel(),SRID,geometryFactory.getCoordinateSequenceFactory());
+		}
+
+		return create(gf, gType, point, elemInfo, ordinates);
+	}
+
+	/**
+     * Decode geometry from provided SDO encoded information.
+     *
+     * <p></p>
+     *
+     * @param gf Used to construct returned Geometry
+     * @param gType SDO_GTEMPLATE represents dimension, LRS, and geometry type
+     * @param point
+     * @param elemInfo
+     * @param ordinates
+     *
+     * @return Geometry as encoded
+     */
+    private Geometry create(GeometryFactory gf, int gType,
+        double[] point, int[] elemInfo, double[] ordinates) {
+
+        int lrs = (gType%1000)/100;
+
+        // find the dimension: represented by the smaller of the two dimensions
+        int dim = 0;
+        if(dimension != NULL_DIMENSION){
+        	dim = dimension;
+        }else{
+        	dim = Math.min(gType/1000,gf.getCoordinateSequenceFactory().create(0,0).getDimension()) ;
+        }
+
+        if(dim<2){
+        	throw new IllegalArgumentException("Dimension D:" + dim + " is not valid for JTS. " +
+        			"Either specify a dimension or use Oracle Locator Version 9i or later");
+        }
+
+        // extract the geometry template type
+        // this is represented as the rightmost two digits
+        int geomTemplate = gType - (dim * 1000) - (lrs * 100);
+
+        CoordinateSequence coords = null;
+
+        if (lrs == 0 && geomTemplate == 1 && point != null && elemInfo == null) {
+            // Single Point Type Optimization
+            coords = coordinates(gf.getCoordinateSequenceFactory(), dim, lrs, geomTemplate, point);
+            elemInfo = new int[] { 1, Constants.SDO_ETYPE.POINT, 1 };
+        } else {
+            coords = coordinates(gf.getCoordinateSequenceFactory(), dim, lrs, geomTemplate, ordinates);
+        }
+
+        switch (geomTemplate) {
+        case Constants.SDO_GTEMPLATE.POINT:
+            return createPoint(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.LINE:
+            return createLine(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.POLYGON:
+            return createPolygon(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.MULTIPOINT:
+            return createMultiPoint(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.MULTILINE:
+            return createMultiLine(gf, dim, lrs, elemInfo, 0, coords, -1);
+
+        case Constants.SDO_GTEMPLATE.MULTIPOLYGON:
+            return createMultiPolygon(gf, dim, lrs, elemInfo, 0, coords, -1);
+
+        case Constants.SDO_GTEMPLATE.COLLECTION:
+            return createCollection(gf, dim, lrs, elemInfo, 0, coords,-1);
+
+        default:
+            return null;
+        }
+    }
+
+    /**
+     * Construct CoordinateList as described by GTYPE.
+     *
+     * The number of ordinates per coordinate are taken to be lrs+dim, and the
+     * number of ordinates should be a multiple of this value.
+
+     * In the Special case of GTYPE 2001 and a three ordinates are interpreted
+     * as a single Coordinate rather than an error.
+     *
+     * @param f CoordinateSequenceFactory used to encode ordiantes for JTS
+     * @param ordinates
+     *
+     * @return protected
+     *
+     * @throws IllegalArgumentException
+     */
+    private CoordinateSequence coordinates(CoordinateSequenceFactory f,
+        int dim, int lrs, int gtemplate, double[] ordinates) {
+        if ((ordinates == null) || (ordinates.length == 0)) {
+            return f.create(new Coordinate[0]);
+        }
+
+        //      POINT_TYPE Special Case
+        //
+        if ((dim == 2) && (lrs == 0) && (gtemplate == 01) && (ordinates.length == 3)) {
+            return f.create(new Coordinate[] {
+                    new Coordinate(ordinates[0], ordinates[1], ordinates[2]),
+                });
+        }
+
+        int len = dim + lrs;
+
+        if ((len == 0 && ordinates.length!=0 ) || (len != 0 && ((ordinates.length % len) != 0))){
+            throw new IllegalArgumentException("Dimension D:" + dim + " and L:"
+                + lrs + " denote Coordinates " + "of " + len
+                + " ordinates. This cannot be resolved with"
+                + "an ordinate array of length " + ordinates.length);
+        }
+
+        int length = (len == 0?0:ordinates.length / len);
+
+        // we would have to ask for a dimension which represents all the requested
+        // dimension and measures from a mask array in the future
+        CoordinateSequence cs = f.create(length,dim);
+
+        int actualDim = cs.getDimension();
+        for(int i=0;i<length;i++){
+        	int j=0;
+        	// in the future change this condition to include ignored dimensions from mask array
+        	for(;j<actualDim && j<dim;j++){
+        		cs.setOrdinate(i,j,ordinates[i*len+j]);
+        		// may not always want to inc. j when we have a mask array
+        	}
+        	// in the future change this condition to include ignored dimensions from mask array
+        	for(int d = j;j<actualDim && (j-d)<lrs;j++){
+        		cs.setOrdinate(i,j,ordinates[i*len+j]);
+        		// may not always want to inc. j when we have a mask array
+        	}
+        }
+        return cs;
+    }
+
+    /**
+     * Create MultiGeometry as encoded by elemInfo.
+     *
+     * @param gf Used to construct MultiLineString
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     * @param numGeom Number of triplets (or -1 for rest)
+     *
+     * @return GeometryCollection
+     *
+     * @throws IllegalArgumentException DWhen faced with an encoding error
+     */
+    private GeometryCollection createCollection(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords, int numGeom) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+
+        int length = coords.size()*dim;
+
+		if (!(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+
+        int endTriplet = (numGeom != -1) ? elemIndex + numGeom : elemInfo.length / 3 + 1;
+
+        List list = new LinkedList();
+        int etype;
+        int interpretation;
+        Geometry geom;
+
+        boolean cont = true;
+        for (int i = elemIndex; cont && i < endTriplet; i++) {
+            etype = eType(elemInfo, i);
+            interpretation = interpretation(elemInfo, i);
+
+            switch (etype) {
+            case -1:
+                cont = false; // We are the of the list - get out of here
+
+            case Constants.SDO_ETYPE.POINT:
+
+                if (interpretation == 1) {
+                    geom = createPoint(gf, dim, lrs, elemInfo, i, coords);
+                } else if (interpretation > 1) {
+                    geom = createMultiPoint(gf, dim, lrs, elemInfo, i, coords);
+                } else {
+                    throw new IllegalArgumentException(
+                        "ETYPE.POINT requires INTERPRETATION >= 1");
+                }
+
+                break;
+
+            case Constants.SDO_ETYPE.LINE:
+                geom = createLine(gf, dim, lrs, elemInfo, i, coords);
+
+                break;
+
+            case Constants.SDO_ETYPE.POLYGON:
+            case Constants.SDO_ETYPE.POLYGON_EXTERIOR:
+                geom = createPolygon(gf, dim, lrs, elemInfo, i, coords);
+                i += ((Polygon) geom).getNumInteriorRing();
+
+                break;
+
+            case Constants.SDO_ETYPE.POLYGON_INTERIOR:
+                throw new IllegalArgumentException(
+                    "ETYPE 2003 (Polygon Interior) no expected in a GeometryCollection"
+                    + "(2003 is used to represent polygon holes, in a 1003 polygon exterior)");
+
+            default:
+                throw new IllegalArgumentException("ETYPE " + etype
+                    + " not representable as a JTS Geometry."
+                    + "(Custom and Compound Straight and Curved Geometries not supported)");
+            }
+
+            list.add(geom);
+        }
+
+        GeometryCollection geoms = gf.createGeometryCollection((Geometry[]) list.toArray(new Geometry[list.size()]));
+
+        return geoms;
+    }
+
+    /**
+     * Create MultiPolygon as encoded by elemInfo.
+     *
+     *
+     * @param gf Used to construct MultiLineString
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     * @param numGeom Number of triplets (or -1 for rest)
+     *
+     * @return MultiPolygon
+     */
+    private MultiPolygon createMultiPolygon(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords, int numGeom){
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+        int length = coords.size()*dim;
+
+		if (!(sOffset >= 1) || !(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.POLYGON) && !(etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR))
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POLYGON or POLYGON_EXTERIOR");
+		if (interpretation != 1 && interpretation != 3){
+			return null;
+		}
+
+        int endTriplet = (numGeom != -1) ? elemIndex + numGeom : (elemInfo.length / 3) + 1;
+
+        List list = new LinkedList();
+        boolean cont = true;
+
+        for (int i = elemIndex; cont && i < endTriplet && (etype = eType(elemInfo, i)) != -1; i++) {
+            if ((etype == Constants.SDO_ETYPE.POLYGON) || (etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR)) {
+                Polygon poly = createPolygon(gf, dim, lrs, elemInfo, i, coords);
+                i += poly.getNumInteriorRing(); // skip interior rings
+                list.add(poly);
+            } else { // not a Polygon - get out here
+            	cont = false;
+            }
+        }
+
+        MultiPolygon polys = gf.createMultiPolygon((Polygon[]) list.toArray(new Polygon[list.size()]));
+
+        return polys;
+    }
+
+    /**
+     * Create MultiLineString as encoded by elemInfo.
+     *
+     *
+     * @param gf Used to construct MultiLineString
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     * @param numGeom Number of triplets (or -1 for rest)
+     *
+     * @return MultiLineString
+     */
+    private MultiLineString createMultiLine(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords, int numGeom) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+        int length = coords.size()*dim;
+
+		if (!(sOffset >= 1) || !(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.LINE))
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected LINE");
+		if (!(interpretation == 1)){
+            // we cannot represent INTERPRETATION > 1
+			return null;
+		}
+
+        int endTriplet = (numGeom != -1) ? (elemIndex + numGeom) : (elemInfo.length / 3);
+
+        List list = new LinkedList();
+
+        boolean cont = true;
+        for (int i = elemIndex; cont && i < endTriplet && (etype = eType(elemInfo, i)) != -1 ;i++) {
+            if (etype == Constants.SDO_ETYPE.LINE) {
+                list.add(createLine(gf, dim, lrs, elemInfo, i, coords));
+            } else { // not a LineString - get out of here
+                cont = false;
+            }
+        }
+
+        MultiLineString lines = gf.createMultiLineString((LineString[]) list.toArray(new LineString[list.size()]));
+
+        return lines;
+    }
+
+    /**
+     * Create MultiPoint as encoded by elemInfo.
+     *
+     *
+     * @param gf Used to construct polygon
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     *
+     * @return MultiPoint
+     */
+    private MultiPoint createMultiPoint(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+		if (!(sOffset >= 1) || !(sOffset <= coords.size()))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.POINT))
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POINT");
+		if (!(interpretation > 1)){
+			return null;
+		}
+
+        int len = dim + lrs;
+
+        int start = (sOffset - 1) / len;
+        int end = start + interpretation;
+
+        MultiPoint points = gf.createMultiPoint(subList(gf.getCoordinateSequenceFactory(), coords, start, end));
+
+        return points;
+    }
+
+    /**
+     * Create Polygon as encoded.
+     *
+     * @see #interpretation(int[], int)
+     *
+     * @param gf Used to construct polygon
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     *
+     * @return Polygon as encoded by elemInfo, or null when faced with and
+     *         encoding that can not be captured by JTS
+     * @throws IllegalArgumentException When faced with an invalid SDO encoding
+     */
+    private Polygon createPolygon(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+        if( !(1 <= sOffset && sOffset <= (coords.size() * dim))){
+            throw new IllegalArgumentException(
+                    "ELEM_INFO STARTING_OFFSET "+sOffset+
+                    "inconsistent with COORDINATES length "+(coords.size() * dim) );
+        }
+
+		if(!(etype == Constants.SDO_ETYPE.POLYGON) && !(etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR)){
+			throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POLYGON or POLYGON_EXTERIOR");
+		}
+		if (!(interpretation == 1) && !(interpretation == 3)){
+			return null;
+		}
+
+        LinearRing exteriorRing = createLinearRing(gf, dim, lrs, elemInfo, elemIndex, coords);
+
+        List rings = new LinkedList();
+
+        boolean cont = true;
+        for (int i = elemIndex + 1; cont && (etype = eType(elemInfo, i)) != -1; i++) {
+            if (etype == Constants.SDO_ETYPE.POLYGON_INTERIOR) {
+                rings.add(createLinearRing(gf, dim, lrs, elemInfo, i, coords));
+            } else if (etype == Constants.SDO_ETYPE.POLYGON) { // need to test Clockwiseness of Ring to see if it is
+                                                 // interior or not - (use POLYGON_INTERIOR to avoid pain)
+
+                LinearRing ring = createLinearRing(gf, dim, lrs, elemInfo, i, coords);
+
+                if (CGAlgorithms.isCCW(ring.getCoordinates())) { // it is an Interior Hole
+                    rings.add(ring);
+                } else { // it is the next Polygon! - get out of here
+                    cont = false;
+                }
+            } else { // not a LinearRing - get out of here
+                cont = false;
+            }
+        }
+
+        Polygon poly = gf.createPolygon(exteriorRing, (LinearRing[]) rings.toArray(new LinearRing[rings.size()]));
+
+        return poly;
+    }
+
+    /**
+     * Create Linear Ring for exterior/interior polygon ELEM_INFO triplets.
+     *
+     * @param gf
+     * @param elemInfo
+     * @param elemIndex
+     * @param coords
+     *
+     * @return LinearRing
+     *
+     * @throws IllegalArgumentException If circle, or curve is requested
+     */
+    private LinearRing createLinearRing(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+        int length = coords.size()*dim;
+
+		if (!(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.POLYGON) && !(etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR) && !(etype == Constants.SDO_ETYPE.POLYGON_INTERIOR)){
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POLYGON, POLYGON_EXTERIOR or POLYGON_INTERIOR");
+		}
+		if (!(interpretation == 1) && !(interpretation == 3)){
+			return null;
+		}
+        LinearRing ring;
+
+
+		int len = (dim+lrs);
+		int start = (sOffset - 1) / len;
+		int eOffset = StartingOffset(elemInfo, elemIndex+1); // -1 for end
+        int end = (eOffset != -1) ? ((eOffset - 1) / len) : coords.size();
+
+        if (interpretation == 1) {
+            ring = gf.createLinearRing(subList(gf.getCoordinateSequenceFactory(),coords, start,end));
+        } else { // interpretation == 3
+            // rectangle does not maintain measures
+            //
+            CoordinateSequence ext = subList(gf.getCoordinateSequenceFactory(),coords, start,end);
+            Coordinate min = ext.getCoordinate(0);
+            Coordinate max = ext.getCoordinate(1);
+            ring = gf.createLinearRing(new Coordinate[] {
+                        min, new Coordinate(max.x, min.y), max,
+                        new Coordinate(min.x, max.y), min
+                    });
+        }
+
+        return ring;
+    }
+
+    /**
+     * Create LineString as encoded.
+     *
+     * @param gf
+     * @param elemInfo
+     * @param coords
+     *
+     * @return LineString
+     *
+     * @throws IllegalArgumentException If asked to create a curve
+     */
+    private LineString createLine(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+		if (etype != Constants.SDO_ETYPE.LINE)
+			return null;
+
+        if (interpretation != 1) {
+            throw new IllegalArgumentException("ELEM_INFO INTERPRETAION "
+                + interpretation + " not supported"
+                + "by JTS LineString.  Straight edges"
+                + "( ELEM_INFO INTERPRETAION 1) is supported");
+        }
+
+		int len = (dim+lrs);
+		int start = (sOffset - 1) / len;
+		int eOffset = StartingOffset(elemInfo, elemIndex+1); // -1 for end
+        int end = (eOffset != -1) ? ((eOffset - 1) / len) : coords.size();
+
+
+        LineString line = gf.createLineString(subList(gf.getCoordinateSequenceFactory(),coords, start,end));
+
+        return line;
+    }
+
+    /**
+     * Create Point as encoded.
+     *
+     * @param gf
+     * @param dim The number of Dimensions
+     * @param elemInfo
+     * @param elemIndex
+     * @param coords
+     *
+     * @return Point
+     */
+    private Point createPoint(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+		if (!(sOffset >= 1) || !(sOffset <= coords.size()))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if (etype != Constants.SDO_ETYPE.POINT)
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POINT");
+		if (interpretation != 1){
+			return null;
+		}
+
+		int len = (dim+lrs);
+		int start = (sOffset - 1) / len;
+		int eOffset = StartingOffset(elemInfo, elemIndex+1); // -1 for end
+
+		Point point = null;
+        if ((sOffset == 1) && (eOffset == -1)) {
+            // Use all Coordinates
+        	point = gf.createPoint( coords);
+        }else{
+	        int end = (eOffset != -1) ? ((eOffset - 1) / len) : coords.size();
+	        point = gf.createPoint(subList(gf.getCoordinateSequenceFactory(),coords,start,end));
+        }
+
+        return point;
+    }
+
+
+    /**
+     * Version of List.subList() that returns a CoordinateSequence.
+     *
+     * <p>
+     * Returns from start (inclusive) to end (exlusive):
+     * </p>
+     *
+     * @param factory Manages CoordinateSequences for JTS
+     * @param coords coords to sublist
+     * @param start starting offset
+     * @param end upper bound of sublist
+     *
+     * @return CoordianteSequence
+     */
+    private CoordinateSequence subList(CoordinateSequenceFactory factory, CoordinateSequence coords, int start, int end) {
+        if ((start == 0) && (end == coords.size())) {
+            return coords;
+        }
+
+        if (coords instanceof List) {
+            List sublist = ((List) coords).subList(start, end);
+
+            if (sublist instanceof CoordinateSequence) {
+                return (CoordinateSequence) sublist;
+            }
+        }
+
+        CoordinateList list = new CoordinateList(coords.toCoordinateArray());
+
+        Coordinate[] array = new Coordinate[end - start];
+        int index = 0;
+
+        for (Iterator i = list.subList(start, end).iterator(); i.hasNext(); index++) {
+            array[index] = (Coordinate) i.next();
+        }
+
+        return factory.create(array);
+    }
+
+    /**
+     * ETYPE access for the elemInfo triplet indicated.
+     * <p>
+     * @see Constants.SDO_ETYPE for an indication of possible values
+     *
+     * @param elemInfo
+     * @param tripletIndex
+     * @return ETYPE for indicated triplet
+     */
+    private int eType(int[] elemInfo, int tripletIndex) {
+        if (((tripletIndex * 3) + 1) >= elemInfo.length) {
+            return -1;
+        }
+
+        return elemInfo[(tripletIndex * 3) + 1];
+    }
+
+
+    /**
+     * Accesses the interpretation value for the current geometry
+     *
+     * JTS valid interpretation is: 1 for strait edges, 3 for rectangle
+     *
+     * Other interpretations include: 2 for arcs, 4 for circles
+     *
+     * mostly useful for polygons
+     *
+     * @param elemInfo
+     * @param tripletIndex
+     * @return Starting Offset for the ordinates of the geometry
+     */
+    private int interpretation(int[] elemInfo, int tripletIndex) {
+        if (((tripletIndex * 3) + 2) >= elemInfo.length) {
+            return -1;
+        }
+
+        return elemInfo[(tripletIndex * 3) + 2];
+    }
+
+    /**
+     * Accesses the starting index in the ordinate array for the current geometry
+     *
+     * mostly useful for polygons
+     *
+     * @param elemInfo
+     * @param tripletIndex
+     * @return Starting Offset for the ordinates of the geometry
+     */
+    private int StartingOffset(int[] elemInfo, int tripletIndex) {
+        if (((tripletIndex * 3) + 0) >= elemInfo.length) {
+            return -1;
+        }
+
+        return elemInfo[(tripletIndex * 3) + 0];
+    }
+
+	/** Presents datum as an int */
+	private int asInteger(Datum datum, final int DEFAULT)
+			throws SQLException {
+		if (datum == null)
+			return DEFAULT;
+		return ((NUMBER) datum).intValue();
+	}
+
+	/** Presents datum as a double */
+	private double asDouble(Datum datum, final double DEFAULT) {
+		if (datum == null)
+			return DEFAULT;
+		return ((NUMBER) datum).doubleValue();
+	}
+
+	/** Presents struct as a double[] */
+	private double[] asDoubleArray(STRUCT struct, final double DEFAULT)
+			throws SQLException {
+		if (struct == null)
+			return null;
+		return asDoubleArray(struct.getOracleAttributes(), DEFAULT);
+	}
+
+	/** Presents array as a double[] */
+	private double[] asDoubleArray(ARRAY array, final double DEFAULT)
+			throws SQLException {
+		if (array == null)
+			return null;
+		if (DEFAULT == 0)
+			return array.getDoubleArray();
+
+		return asDoubleArray(array.getOracleArray(), DEFAULT);
+	}
+
+	/** Presents Datum[] as a double[] */
+	private double[] asDoubleArray(Datum data[], final double DEFAULT) {
+		if (data == null)
+			return null;
+		double array[] = new double[data.length];
+		for (int i = 0; i < data.length; i++) {
+			array[i] = asDouble(data[i], DEFAULT);
+		}
+		return array;
+	}
+
+	private int[] asIntArray(ARRAY array, int DEFAULT)
+			throws SQLException {
+		if (array == null)
+			return null;
+		if (DEFAULT == 0)
+			return array.getIntArray();
+
+		return asIntArray(array.getOracleArray(), DEFAULT);
+	}
+
+	/** Presents Datum[] as a int[] */
+	private int[] asIntArray(Datum data[], final int DEFAULT)
+			throws SQLException {
+		if (data == null)
+			return null;
+		int array[] = new int[data.length];
+		for (int i = 0; i < data.length; i++) {
+			array[i] = asInteger(data[i], DEFAULT);
+		}
+		return array;
+	}
+
+	public int getDimension() {
+		return dimension;
+	}
+
+	public void setDimension(int dimension) {
+		this.dimension = dimension;
+	}
+
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,818 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+/*
+ *    Geotools2 - OpenSource mapping toolkit
+ *    http://geotools.org
+ *    (C) 2003, Geotools Project Managment Committee (PMC)
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation;
+ *    version 2.1 of the License.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+import java.util.*;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+import com.vividsolutions.jts.geom.*;
+
+import oracle.jdbc.OracleConnection;
+import oracle.sql.*;
+
+/**
+ * 
+ * Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object. 
+ * 
+ * A connection to an oracle instance with access to the definition of the MDSYS.GEOMETRY 
+ * object is required by the oracle driver.
+ * 
+ * @version 9i
+ * @author David Zwiers, Vivid Solutions.
+ */
+public class OraWriter {
+	private OracleConnection connection;
+	private int dimension = 2;
+	private int srid = Constants.SRID_NULL;
+	
+	private String DATATYPE = "MDSYS.SDO_GEOMETRY";
+	
+	/**
+	 * Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+	 * 
+	 * The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+	 * 
+	 * The dimension is set to 2
+	 * 
+	 * @param con
+	 */
+	public OraWriter(OracleConnection con){
+		this.connection = con;
+	}
+	
+	/**
+	 * Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+	 * 
+	 * The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+	 * 
+	 * @param con
+	 * @param dimension 
+	 */
+	public OraWriter(OracleConnection con, int dimension){
+		this.connection = con;
+		this.dimension = dimension;
+	}
+	
+	/**
+	 * Provides the oppotunity to force all geometries written using this writter to be written using the 
+	 * specified srid. This is useful in two cases: 1) when you do not want the geometry's srid to be 
+	 * over-written or 2) when you want to ensure an entire layer is always written using a constant srid.
+	 * 
+	 * @param srid
+	 */
+	public void setSRID(int srid){
+		this.srid = srid;
+	}
+
+	/**
+	 * This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.
+	 * 
+	 * Although invalid geometries may be encoded, and inserted into an Oracle DB, this is 
+	 * not recomended. It is the responsibility of the user to ensure the geometry is valid 
+	 * prior to calling this method. The user should also ensure the the geometry's SRID 
+	 * field contains the correct value, if an SRID is desired. An incorrect SRID value may 
+	 * cause index exceptions during an insert or update. 
+	 * 
+	 * When a null Geometry is passed in, a non-null, empty STRUCT is returned. Therefore, 
+	 * inserting the the result of calling this method directly into a table will never result 
+	 * in null insertions. 
+	 * (March 2006)
+	 * 
+	 * To pass a NULL Geometry into an oracle geometry parameter using jdbc, use 
+	 * java.sql.CallableStatement.setNull(index,java.sql.Types.STRUCT,"MDSYS.SDO_GEOMETRY")
+	 * (April 2006)
+	 * 
+	 * @param geom JTS Geometry to encode
+	 * @return Oracle MDSYS.GEOMETRY STRUCT
+	 * @throws SQLException 
+	 */
+	public STRUCT write(Geometry geom) throws SQLException{
+		
+		// this line may be problematic ... for v9i and later 
+		// need to revisit.
+		
+		// was this ... does not work for 9i
+//		if( geom == null) return toSTRUCT( null, DATATYPE );
+		
+		//works fro 9i
+		if( geom == null) return toSTRUCT( new Datum[5], DATATYPE );
+		
+		// does not work for 9i
+//		if( geom == null) return null;
+		
+		//empty geom
+		if( geom.isEmpty() || geom.getCoordinate() == null) 
+			return toSTRUCT( new Datum[5], DATATYPE );
+        
+        int gtype = gType( geom);
+        NUMBER SDO_GTYPE = new NUMBER( gtype );
+
+        //int srid = geom.getFactory().getSRID();
+        int srid = this.srid == Constants.SRID_NULL? geom.getSRID() : this.srid;
+        NUMBER SDO_SRID = srid == Constants.SRID_NULL ? null : new NUMBER( srid );
+        
+        double[] point = point( geom );
+        
+        STRUCT SDO_POINT;
+        
+        ARRAY SDO_ELEM_INFO;
+        ARRAY SDO_ORDINATES;
+        
+        if( point == null ){
+            int elemInfo[] = elemInfo( geom , gtype);
+            
+            List list = new ArrayList();
+            coordinates(list, geom);
+                        
+            int dim = gtype / 1000;
+            int lrs = (gtype - dim*1000)/100;
+            int len = dim+lrs; // size per coordinate
+            double[] ordinates = new double[list.size()*len];
+            
+            int k=0;
+            for(int i=0;i<list.size() && k<ordinates.length;i++){
+            	int j=0;
+            	double[] ords = (double[]) list.get(i);
+            	for(;j<len && j<ords.length;j++){
+            		ordinates[k++] = ords[j];
+            	}
+            	for(;j<len;j++){ // mostly safety
+            		ordinates[k++] = Double.NaN;
+            	}
+            }
+            
+            list = null;
+            
+            SDO_POINT = null;
+            SDO_ELEM_INFO = toARRAY( elemInfo, "MDSYS.SDO_ELEM_INFO_ARRAY" );
+            SDO_ORDINATES = toARRAY( ordinates, "MDSYS.SDO_ORDINATE_ARRAY" );                        
+        }
+        else { // Point Optimization
+            Datum data[] = new Datum[]{
+                toNUMBER( point[0] ),
+                toNUMBER( point[1] ),
+                toNUMBER( point[2] ),
+            };
+            SDO_POINT = toSTRUCT( data, "MDSYS.SDO_POINT_TYPE"  );
+            SDO_ELEM_INFO = null;
+            SDO_ORDINATES = null;
+        }                
+        Datum attributes[] = new Datum[]{
+            SDO_GTYPE,
+            SDO_SRID,
+            SDO_POINT,
+            SDO_ELEM_INFO,
+            SDO_ORDINATES
+        };
+        return toSTRUCT( attributes, DATATYPE );      
+	}
+
+	/**
+     * Encode Geometry as described by GTYPE and ELEM_INFO
+     * 
+     * @param list Flat list of Double
+     * @param geom Geometry 
+     *
+     * @throws IllegalArgumentException If geometry cannot be encoded
+     */
+    private void coordinates(List list, Geometry geom) {
+        switch (template(geom)) {
+
+        case Constants.SDO_GTEMPLATE.POINT:
+            addCoordinates(list, ((Point)geom).getCoordinateSequence());
+            return;
+        case Constants.SDO_GTEMPLATE.LINE:
+            addCoordinates(list, ((LineString)geom).getCoordinateSequence());
+            return;
+        case Constants.SDO_GTEMPLATE.POLYGON:
+            switch (elemInfoInterpretation(geom,Constants.SDO_ETYPE.POLYGON_EXTERIOR)) {
+            case 3:
+                Envelope e = geom.getEnvelopeInternal();
+                list.add(new double[] { e.getMinX(), e.getMinY() });
+                list.add(new double[] { e.getMaxX(), e.getMaxY() });
+                return;
+            case 1:
+            	Polygon polygon = (Polygon) geom;
+                int holes = polygon.getNumInteriorRing();
+                
+                // check outer ring's direction
+                CoordinateSequence ring = polygon.getExteriorRing().getCoordinateSequence();
+                if (!CGAlgorithms.isCCW(ring.toCoordinateArray())) {
+                    ring = reverse(polygon.getFactory().getCoordinateSequenceFactory(), ring); 
+                }
+                addCoordinates(list,ring);
+
+                for (int i = 0; i < holes; i++) {
+                	// check inner ring's direction
+                	ring = polygon.getInteriorRingN(i).getCoordinateSequence();
+                	if (CGAlgorithms.isCCW(ring.toCoordinateArray())) {
+                        ring = reverse(polygon.getFactory().getCoordinateSequenceFactory(), ring); 
+                    }
+                    
+                    addCoordinates(list,ring);
+                }
+                return;
+            }
+            break; // interpretations 2,4 not supported
+        case Constants.SDO_GTEMPLATE.MULTIPOINT:
+        case Constants.SDO_GTEMPLATE.MULTILINE:
+        case Constants.SDO_GTEMPLATE.MULTIPOLYGON:
+        case Constants.SDO_GTEMPLATE.COLLECTION:
+            for (int i = 0; i < geom.getNumGeometries(); i++) {
+                coordinates(list,geom.getGeometryN(i));
+            }
+            return;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as "
+            + "SDO_ORDINATRES (Limitied to Point, Line, Polygon, "
+            + "GeometryCollection, MultiPoint, MultiLineString and MultiPolygon)");
+    }
+
+    /**
+     * Adds a double array to list.
+     * 
+     * <p>
+     * The double array will contain all the ordinates in the Coordiante
+     * sequence.
+     * </p>
+     *
+     * @param list
+     * @param sequence
+     */
+    private static void addCoordinates(List list, CoordinateSequence sequence) {
+    	Coordinate coord = null;
+        for (int i = 0; i < sequence.size(); i++) {
+        	coord = sequence.getCoordinate(i);
+        	if(coord.z == Double.NaN)
+        		list.add( new double[] { coord.x, coord.y});
+        	else
+        		list.add( new double[] { coord.x, coord.y, coord.z });
+        }
+    }
+
+    /**
+     * Return SDO_ELEM_INFO array for geometry
+     * 
+     * <pre><code><b>
+     * # Name                Meaning</b>
+     * 0 SDO_STARTING_OFFSET Offsets start at one
+     * 1 SDO_ETYPE           Describes how ordinates are ordered
+     * 2 SDO_INTERPRETATION  SDO_ETYPE: 4, 1005, or 2005
+     *                       Number of triplets involved in compound geometry
+     *                       
+     *                       SDO_ETYPE: 1, 2, 1003, or 2003
+     *                       Describes ordering of ordinates in geometry  
+     * </code></pre>
+     * 
+     * <p>
+     * For compound elements (SDO_ETYPE values 4 and 5) the last element of one
+     * is the first element of the next.
+     * </p>
+     *
+     * @param geom Geometry being represented
+     *
+     * @return Descriptionof Ordinates representation
+     */
+	private int[] elemInfo(Geometry geom, int gtype) {
+		List list = new LinkedList();
+
+        elemInfo(list, geom, 1, gtype);
+        
+        int[] array = new int[list.size()];
+        int offset = 0;
+
+        for (Iterator i = list.iterator(); i.hasNext(); offset++) {
+            array[offset] = ((Number) i.next()).intValue();
+        }
+
+        return array;
+    }
+	
+    /**
+     * Add to SDO_ELEM_INFO list for geometry and GTYPE.
+     *
+     * @param elemInfoList List used to gather SDO_ELEM_INFO
+     * @param geom Geometry to encode
+     * @param sOffSet Starting offset in SDO_ORDINATES
+     *
+     * @throws IllegalArgumentException If geom cannot be encoded by ElemInfo
+     */
+    private void elemInfo(List elemInfoList, Geometry geom, int sOffSet, int gtype) {
+
+        switch (gtype - (gtype/100) * 100) { // removes right two digits
+        case Constants.SDO_GTEMPLATE.POINT:
+            addInt(elemInfoList, sOffSet);
+            addInt(elemInfoList, Constants.SDO_ETYPE.POINT);
+            addInt(elemInfoList, 1); // INTERPRETATION single point
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.MULTIPOINT:
+            MultiPoint points = (MultiPoint) geom;
+
+            addInt(elemInfoList, sOffSet);
+            addInt(elemInfoList, Constants.SDO_ETYPE.POINT);
+            addInt(elemInfoList, elemInfoInterpretation(points, Constants.SDO_ETYPE.POINT));
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.LINE:
+            addInt(elemInfoList, sOffSet);
+            addInt(elemInfoList, Constants.SDO_ETYPE.LINE);
+            addInt(elemInfoList, 1); // INTERPRETATION straight edges    
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.MULTILINE:
+        	MultiLineString lines = (MultiLineString) geom;
+            LineString line;
+            int offset = sOffSet;
+            int dim = gtype/1000;
+            int len = dim + (gtype-dim*1000)/100;
+
+            for (int i = 0; i < lines.getNumGeometries(); i++) {
+                line = (LineString) lines.getGeometryN(i);
+                addInt(elemInfoList, offset);
+                addInt(elemInfoList, Constants.SDO_ETYPE.LINE);
+                addInt(elemInfoList, 1); // INTERPRETATION straight edges  
+                offset += (line.getNumPoints() * len);
+            }
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.POLYGON:
+        	Polygon polygon = (Polygon)geom;
+            int holes = polygon.getNumInteriorRing();
+
+            if (holes == 0) {
+                addInt(elemInfoList, sOffSet);
+                addInt(elemInfoList, elemInfoEType(polygon));
+                addInt(elemInfoList, elemInfoInterpretation(polygon, Constants.SDO_ETYPE.POLYGON_EXTERIOR));
+                return;
+            }
+
+            dim = gtype/1000;
+            len = dim + (gtype-dim*1000)/100;
+            offset = sOffSet;
+            LineString ring;
+
+            ring = polygon.getExteriorRing();
+            addInt(elemInfoList, offset);
+            addInt(elemInfoList, elemInfoEType(polygon));
+            addInt(elemInfoList, elemInfoInterpretation(polygon, Constants.SDO_ETYPE.POLYGON_EXTERIOR));
+            offset += (ring.getNumPoints() * len);
+
+            for (int i = 1; i <= holes; i++) {
+                ring = polygon.getInteriorRingN(i - 1);
+                addInt(elemInfoList, offset);
+                addInt(elemInfoList, Constants.SDO_ETYPE.POLYGON_INTERIOR);
+                addInt(elemInfoList, elemInfoInterpretation(ring, Constants.SDO_ETYPE.POLYGON_INTERIOR));
+                offset += (ring.getNumPoints() * len);
+            }
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.MULTIPOLYGON:
+        	MultiPolygon polys = (MultiPolygon) geom;
+            Polygon poly;
+            offset = sOffSet;
+
+            dim = gtype/1000;
+            len = dim + (gtype-dim*1000)/100;
+
+            for (int i = 0; i < polys.getNumGeometries(); i++) {
+                poly = (Polygon) polys.getGeometryN(i);
+                elemInfo(elemInfoList, poly, offset, gType(poly));
+                if( isRectangle( poly )){
+                    offset += (2 * len);                
+                }
+                else {
+                    offset += (poly.getNumPoints() * len);                
+                }            
+            }
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.COLLECTION:
+        	GeometryCollection geoms = (GeometryCollection) geom;
+            offset = sOffSet;
+            dim = gtype/1000;
+            len = dim + (gtype-dim*1000)/100;
+
+            for (int i = 0; i < geoms.getNumGeometries(); i++) {
+                geom = geoms.getGeometryN(i);
+                elemInfo(elemInfoList, geom, offset, gtype);
+                if( geom instanceof Polygon && isRectangle( (Polygon) geom )){
+                    offset += (2 * len);                
+                }
+                else {
+                    offset += (geom.getNumPoints() * len);                
+                }                        
+            }
+
+            return;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as SDO_ELEM_INFO "
+            + "(Limitied to Point, Line, Polygon, GeometryCollection, MultiPoint,"
+            + " MultiLineString and MultiPolygon)");
+    }
+
+    private void addInt(List list, int i) {
+        list.add(new Integer(i));
+    }
+
+    /**
+     * We need to check if a <code>polygon</code> a rectangle so we can produce
+     * the correct encoding.
+     * 
+     * Rectangles are only supported without a SRID!
+     *
+     * @param polygon
+     *
+     * @return <code>true</code> if polygon is SRID==0 and a rectangle
+     */
+    private boolean isRectangle(Polygon polygon) {
+        if (polygon.getFactory().getSRID() != Constants.SRID_NULL) {
+            // Rectangles only valid in CAD applications
+            // that do not have an SRID system
+            //
+            return false;
+        }
+
+        if (lrs(polygon) != 0) {
+            // cannot support LRS on a rectangle
+            return false;
+        }
+
+        Coordinate[] coords = polygon.getCoordinates();
+
+        if (coords.length != 5) {
+            return false;
+        }
+
+        if ((coords[0] == null) || (coords[1] == null) || (coords[2] == null)
+                || (coords[3] == null)) {
+            return false;
+        }
+
+        if (!coords[0].equals2D(coords[4])) {
+            return false;
+        }
+
+        double x1 = coords[0].x;
+        double y1 = coords[0].y;
+        double x2 = coords[1].x;
+        double y2 = coords[1].y;
+        double x3 = coords[2].x;
+        double y3 = coords[2].y;
+        double x4 = coords[3].x;
+        double y4 = coords[3].y;
+
+        if ((x1 == x4) && (y1 == y2) && (x3 == x2) && (y3 == y4)) {
+            // 1+-----+2
+            //  |     |
+            // 4+-----+3
+            return true;
+        }
+
+        if ((x1 == x2) && (y1 == y4) && (x3 == x4) && (y3 == y2)) {
+            // 2+-----+3
+            //  |     |
+            // 1+-----+4
+            return true;
+        }
+
+        return false;
+    }
+    /**
+     * Produce <code>SDO_ETYPE</code> for geometry description as stored in the
+     * <code>SDO_ELEM_INFO</code>.
+     * 
+     * <p>
+     * Describes how Ordinates are ordered:
+     * </p>
+     * <pre><code><b>
+     * Value Elements Meaning</b>
+     *    0           Custom Geometry (like spline) 
+     *    1  simple   Point (or Points)
+     *    2  simple   Line (or Lines)
+     *    3           polygon ring of unknown order (discouraged update to 1003 or 2003)
+     * 1003  simple   polygon ring (1 exterior counterclockwise order)
+     * 2003  simple   polygon ring (2 interior clockwise order)
+     *    4  compound series defines a linestring
+     *    5  compound series defines a polygon ring of unknown order (discouraged)
+     * 1005  compound series defines exterior polygon ring (counterclockwise order)
+     * 2005  compound series defines interior polygon ring (clockwise order)
+     * </code></pre>
+     * 
+     * @param geom Geometry being represented
+     *
+     * @return Descriptionof Ordinates representation
+     *
+     * @throws IllegalArgumentException
+     */
+    private int elemInfoEType(Geometry geom) {
+        switch (template(geom)) {
+
+        case Constants.SDO_GTEMPLATE.POINT:
+            return Constants.SDO_ETYPE.POINT;
+
+        case Constants.SDO_GTEMPLATE.LINE:
+            return Constants.SDO_ETYPE.LINE;
+
+        case Constants.SDO_GTEMPLATE.POLYGON:
+        	// jts convention
+            return Constants.SDO_ETYPE.POLYGON_EXTERIOR; // cc order
+
+        default:
+
+            // should never happen!
+            throw new IllegalArgumentException("Unknown encoding of SDO_GTEMPLATE");
+        }
+    }
+    
+    /**
+     * Allows specification of <code>INTERPRETATION</code> used to interpret
+     * <code>geom</code>.
+     * 
+     * @param geom Geometry to encode
+     * @param etype ETYPE value requiring an INTERPREATION
+     *
+     * @return INTERPRETATION ELEM_INFO entry for geom given etype
+     *
+     * @throws IllegalArgumentException If asked to encode a curve
+     */
+    private int elemInfoInterpretation(Geometry geom, int etype) {
+        switch (etype) {
+
+        case Constants.SDO_ETYPE.POINT:
+
+            if (geom instanceof Point) {
+                return 1;
+            }
+
+            if (geom instanceof MultiPoint) {
+                return ((MultiPoint) geom).getNumGeometries();
+            }
+
+            break;
+
+        case Constants.SDO_ETYPE.LINE:
+        	// always straight for jts
+            return 1;
+
+        case Constants.SDO_ETYPE.POLYGON:
+        case Constants.SDO_ETYPE.POLYGON_EXTERIOR:
+        case Constants.SDO_ETYPE.POLYGON_INTERIOR:
+
+            if (geom instanceof Polygon) {
+                Polygon polygon = (Polygon) geom;
+            	// always straight for jts
+                if (isRectangle(polygon)) {
+                    return 3;
+                }
+            }
+
+            return 1;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as "
+            + "SDO_INTERPRETATION (Limitied to Point, Line, Polygon, "
+            + "GeometryCollection, MultiPoint, MultiLineString and MultiPolygon)");
+    }
+	
+    /**
+     * Return SDO_POINT_TYPE for geometry
+     * 
+     * Will return non null for Point objects. <code>null</code> is returned
+     * for all non point objects.
+
+     * You cannot use this with LRS Coordiantes
+     * Subclasses may wish to repress this method and force Points to be
+     * represented using SDO_ORDINATES.
+     *
+     * @param geom
+     *
+     * @return double[]
+     */
+	private double[] point(Geometry geom) {
+        if (geom instanceof Point && (lrs(geom) == 0)) {
+            Point point = (Point) geom;
+            Coordinate coord = point.getCoordinate();
+
+            return new double[] { coord.x, coord.y, coord.z };
+        }
+
+        // SDO_POINT_TYPE only used for non LRS Points
+        return null;
+    }
+
+    /**
+     * Produce SDO_GTEMPLATE representing provided Geometry.
+     * 
+     * <p>
+     * Encoding of Geometry type and dimension.
+     * </p>
+     * 
+     * <p>
+     * SDO_GTEMPLATE defined as for digits <code>[d][l][tt]</code>:
+     * </p>
+     * 
+     * @param geom
+     *
+     * @return SDO_GTEMPLATE
+     */
+	private int gType(Geometry geom) {
+        int d = dimension(geom) * 1000;
+        int l = lrs(geom) * 100;
+        int tt = template(geom);
+
+        return d + l + tt;
+    }
+
+    /**
+     * Return dimensions as defined by SDO_GTEMPLATE (either 2,3 or 4).
+     * 
+     *
+     * @param geom
+     *
+     * @return num dimensions
+     */
+    private int dimension(Geometry geom) {
+    	int d = Double.isNaN(geom.getCoordinate().z)?2:3;
+		return d<dimension?d:dimension;
+    }
+
+    /**
+     * Return LRS as defined by SDO_GTEMPLATE (either 3,4 or 0).
+     * 
+     * @param geom
+     *
+     * @return <code>0</code>
+     */
+    private int lrs(Geometry geom) {
+        // when measures are supported this may change
+    	// until then ... 
+    	return 0;
+    }
+    
+    /**
+     * Return TT as defined by SDO_GTEMPLATE (represents geometry type).
+     * 
+     * @see Constants.SDO_GTEMPLATE
+     *
+     * @param geom
+     *
+     * @return template code
+     */
+    private int template(Geometry geom) {
+        if (geom == null) {
+            return -1; // UNKNOWN
+        } else if (geom instanceof Point) {
+            return Constants.SDO_GTEMPLATE.POINT;
+        } else if (geom instanceof LineString) {
+            return Constants.SDO_GTEMPLATE.LINE;
+        } else if (geom instanceof Polygon) {
+            return Constants.SDO_GTEMPLATE.POLYGON;
+        } else if (geom instanceof MultiPoint) {
+            return Constants.SDO_GTEMPLATE.MULTIPOINT;
+        } else if (geom instanceof MultiLineString) {
+            return Constants.SDO_GTEMPLATE.MULTILINE;
+        } else if (geom instanceof MultiPolygon) {
+            return Constants.SDO_GTEMPLATE.MULTIPOLYGON;
+        } else if (geom instanceof GeometryCollection) {
+            return Constants.SDO_GTEMPLATE.COLLECTION;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as SDO_GTEMPLATE "
+            + "(Limitied to Point, Line, Polygon, GeometryCollection, MultiPoint,"
+            + " MultiLineString and MultiPolygon)");
+    }
+	
+    /** Convience method for STRUCT construction. */
+    private STRUCT toSTRUCT( Datum attributes[], String dataType )
+            throws SQLException
+    {
+    	if( dataType.startsWith("*.")){
+    		dataType = "DRA."+dataType.substring(2);//TODO here
+    	}
+        StructDescriptor descriptor =
+            StructDescriptor.createDescriptor( dataType, connection );
+    
+         return new STRUCT( descriptor, connection, attributes );
+    }
+    
+    /** 
+     * Convience method for ARRAY construction.
+     * <p>
+     * Compare and contrast with toORDINATE - which treats <code>Double.NaN</code>
+     * as<code>NULL</code></p>
+     */
+    private ARRAY toARRAY( double doubles[], String dataType )
+            throws SQLException
+    {
+        ArrayDescriptor descriptor =
+            ArrayDescriptor.createDescriptor( dataType, connection );
+        
+         return new ARRAY( descriptor, connection, doubles );
+    }
+    
+    /** 
+     * Convience method for ARRAY construction.
+     */
+    private ARRAY toARRAY( int ints[], String dataType )
+        throws SQLException
+    {
+        ArrayDescriptor descriptor =
+            ArrayDescriptor.createDescriptor( dataType, connection );
+            
+         return new ARRAY( descriptor, connection, ints );
+    }
+
+    /** 
+     * Convience method for NUMBER construction.
+     * <p>
+     * Double.NaN is represented as <code>NULL</code> to agree
+     * with JTS use.</p>
+     */
+    private NUMBER toNUMBER( double number ) throws SQLException{
+        if( Double.isNaN( number )){
+            return null;
+        }
+        return new NUMBER( number );
+    }
+
+    /**
+     * reverses the coordinate order
+     *
+     * @param factory
+     * @param sequence
+     *
+     * @return CoordinateSequence reversed sequence
+     */
+    private CoordinateSequence reverse(CoordinateSequenceFactory factory, CoordinateSequence sequence) {
+    	CoordinateList list = new CoordinateList(sequence.toCoordinateArray());
+        Collections.reverse(list);
+        return factory.create(list.toCoordinateArray());
+    }
+
+	/**
+	 * @param dimension The dimension to set.
+	 */
+	public void setDimension(int dimension) {
+		this.dimension = dimension;
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/package.html
===================================================================
--- packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/package.html	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/src/com/vividsolutions/jts/io/oracle/package.html	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,6 @@
+<html>
+	<head><title>JTS IO: Java Topology Suite IO Library</title></head>
+	<body>
+	Classes to read and write Oracle SDO_GEOMETRY object structures.
+	</body>
+</html>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,169 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * This class illustrates the basic functionality and configuration options for generating spatial data. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public abstract class GeometryGenerator {
+	protected int dimensions = 2;
+	protected GeometryFactory geometryFactory; // includes srid
+	protected Envelope boundingBox;
+	
+	/**
+	 * @return A Geometry which uses some or all of the Bounding Box specified.
+	 */
+	public abstract Geometry create();
+
+	
+	/**
+	 * @see GridGenerator
+	 * @return A new GridGenerator
+	 */
+	public static GridGenerator createGridGenerator(){
+		return new GridGenerator();
+	}
+	
+	/**
+	 * @see PointGenerator
+	 * @return A new PointGenerator
+	 */
+	public static PointGenerator createPointGenerator(){
+		return new PointGenerator();
+	}
+
+	/**
+	 * @see LineStringGenerator
+	 * @return A new LineStringGenerator
+	 */
+	public static LineStringGenerator createLineStringGenerator(){
+		LineStringGenerator lsg = new LineStringGenerator();
+		lsg.setGenerationAlgorithm(LineStringGenerator.ARC);
+		lsg.setNumberPoints(10);
+		return lsg;
+	}
+
+	/**
+	 * @see PolygonGenerator
+	 * @return A new PolygonGenerator
+	 */
+	public static PolygonGenerator createPolygonGenerator(){
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGenerationAlgorithm(PolygonGenerator.ARC);
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(8);
+		return pg;
+	}
+
+	/**
+	 * @see PointGenerator
+	 * @see MultiGenerator
+	 * @return A new MultiGenerator
+	 */
+	public static MultiGenerator createMultiPointGenerator(){
+		MultiGenerator mg = new MultiGenerator(createPointGenerator());
+		mg.setNumberGeometries(4);
+		return mg;
+	}
+
+	/**
+	 * @see LineStringGenerator
+	 * @see MultiGenerator
+	 * @return A new PointGenerator
+	 */
+	public static MultiGenerator createMultiLineStringGenerator(){
+		MultiGenerator mg = new MultiGenerator(createLineStringGenerator());
+		mg.setNumberGeometries(4);
+		return mg;
+	}
+
+	/**
+	 * @see PolygonGenerator
+	 * @see MultiGenerator
+	 * @return A new PointGenerator
+	 */
+	public static MultiGenerator createMultiPolygonGenerator(){
+		MultiGenerator mg = new MultiGenerator(createPolygonGenerator());
+		mg.setNumberGeometries(4);
+		return mg;
+	}
+
+	/**
+	 * @return Returns the boundingBox.
+	 */
+	public Envelope getBoundingBox() {
+		return boundingBox;
+	}
+
+	/**
+	 * @param boundingBox The boundingBox to set.
+	 */
+	public void setBoundingBox(Envelope boundingBox) {
+		this.boundingBox = boundingBox;
+	}
+
+	/**
+	 * @return Returns the dimensions.
+	 */
+	public int getDimensions() {
+		return dimensions;
+	}
+
+	/**
+	 * @param dimensions The dimensions to set.
+	 */
+	public void setDimensions(int dimensions) {
+		this.dimensions = dimensions;
+		throw new RuntimeException("Dimensions other than 2 are not yet supported");
+	}
+
+	/**
+	 * @return Returns the geometryFactory.
+	 */
+	public GeometryFactory getGeometryFactory() {
+		return geometryFactory;
+	}
+
+	/**
+	 * @param geometryFactory The geometryFactory to set.
+	 */
+	public void setGeometryFactory(GeometryFactory geometryFactory) {
+		this.geometryFactory = geometryFactory;
+	}
+	
+	
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,175 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import java.util.NoSuchElementException;
+
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Geometry;
+
+/**
+ * This class should be used to generate a grid of bounding boxes, 
+ * most useful when creating multiple geometries.
+ *
+ * Successive calls to create() will walk the user though the grid. 
+ * Use canCreate() and reset() to control the walk through the grid.
+ * 
+ * @see #canCreate()
+ * @see #reset()
+ * 
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class GridGenerator extends GeometryGenerator {
+
+	protected int numberColumns = 1;
+	protected int numberRows = 1;
+	protected int index = 0;
+	
+	/**
+	 * Sets some default values.
+	 */
+	public GridGenerator(){
+		dimensions = 2;
+	}
+	
+	/**
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws NoSuchElementException when all the grids have been created (@see #create())
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+		return geometryFactory.toGeometry(createEnv());
+	}
+	/**
+	 * 
+	 * @return Envelope 
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws NoSuchElementException when all the grids have been created (@see #create())
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Envelope createEnv() {
+		if(!canCreate()){
+			throw new NoSuchElementException("There are not any grids left to create.");
+		}
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+
+		double x = boundingBox.getMinX(); // base x
+		double dx = boundingBox.getMaxX()-x;
+		
+		double y = boundingBox.getMinY(); // base y
+		double dy = boundingBox.getMaxY()-y;
+		
+		int row = numberRows==1?0:index / numberRows;
+		int col = numberColumns==1?0:index % numberColumns;
+		
+		double sx,sy; // size of a step
+		sx = dx/numberColumns;
+		sy = dy/numberRows;
+		
+		double minx, miny;
+		minx = x+col*sx;
+		miny = y+row*sy;
+		
+		Envelope box = new Envelope(geometryFactory.getPrecisionModel().makePrecise(minx),
+									geometryFactory.getPrecisionModel().makePrecise(minx+sx),
+									geometryFactory.getPrecisionModel().makePrecise(miny),
+									geometryFactory.getPrecisionModel().makePrecise(miny+sy));
+		
+		index++;
+		return box;
+	}
+
+	/**
+	 * @return true when more grids exist
+	 */
+	public boolean canCreate(){
+		return (numberColumns*numberRows)>index;
+	}
+	
+	/**
+	 * Resets the grid counter
+	 */
+	public void reset(){
+		index = 0;
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setDimensions(int)
+	 */
+	public void setDimensions(int dimensions) {
+		if(dimensions!=2)
+			throw new IllegalStateException("MAY NOT CHANGE GridGenerator's Dimensions");
+	}
+
+	/**
+	 * @return Returns the numberColumns.
+	 */
+	public int getNumberColumns() {
+		return numberColumns;
+	}
+
+	/**
+	 * @param numberColumns The numberColumns to set.
+	 */
+	public void setNumberColumns(int numberColumns) {
+		if(numberColumns<=0)
+			throw new IndexOutOfBoundsException("Index sizes must be positive, non zero");
+		this.numberColumns = numberColumns;
+	}
+
+	/**
+	 * @return Returns the numberRows.
+	 */
+	public int getNumberRows() {
+		return numberRows;
+	}
+
+	/**
+	 * @param numberRows The numberRows to set.
+	 */
+	public void setNumberRows(int numberRows) {
+		if(numberRows<=0)
+			throw new IndexOutOfBoundsException("Index sizes must be positive, non zero");
+		this.numberRows = numberRows;
+	}
+	
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,219 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.valid.IsValidOp;
+
+/**
+ * 
+ * This class is used to create a line string within the specified bounding box.
+ * 
+ * Sucessive calls to create may or may not return the same geometry topology.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class LineStringGenerator extends GeometryGenerator {
+	protected int numberPoints = 2;
+	protected int generationAlgorithm = 0;
+	
+	/**
+	 * Create the points in a vertical line
+	 */
+	public static final int VERT = 1;
+	
+	/**
+	 * Create the points in a horizontal line
+	 */
+	public static final int HORZ = 2;
+	
+	/**
+	 * Create the points in an approximation of an open circle (one edge will not be included).
+	 * 
+	 * Note: this requires the number of points to be greater than 2.
+	 * 
+	 * @see #getNumberPoints()
+	 * @see #setNumberPoints(int)
+	 */
+	public static final int ARC = 0;
+	
+	/**
+	 * Number of interations attempting to create a valid line string
+	 */
+	private static final int RUNS = 5;
+
+	/**
+	 * As the user increases the number of points, the probability of creating a random valid linestring decreases. 
+	 * Please take not of this when selecting the generation style, and the number of points. 
+	 * 
+	 * May return null if a geometry could not be created.
+	 * 
+	 * @see #getNumberPoints()
+	 * @see #setNumberPoints(int)
+	 * @see #getGenerationAlgorithm()
+	 * @see #setGenerationAlgorithm(int)
+	 * 
+	 * @see #VERT
+	 * @see #HORZ
+	 * @see #ARC
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws IllegalStateException When the alg is not valid or the number of points is invalid
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+		if(numberPoints<2){
+			throw new IllegalStateException("Too few points");
+		}
+		
+		Coordinate[] coords = new Coordinate[numberPoints];
+
+		double x = boundingBox.getMinX(); // base x
+		double dx = boundingBox.getMaxX()-x;
+		
+		double y = boundingBox.getMinY(); // base y
+		double dy = boundingBox.getMaxY()-y;
+		
+		
+		for(int i=0;i<RUNS;i++){
+			switch(getGenerationAlgorithm()){
+			case VERT:
+				fillVert(x,dx,y,dy,coords,geometryFactory);
+				break;
+			case HORZ:
+				fillHorz(x,dx,y,dy,coords,geometryFactory);
+				break;
+			case ARC:
+				fillArc(x,dx,y,dy,coords,geometryFactory);
+				break;
+			default:
+				throw new IllegalStateException("Invalid Alg. Specified");
+			}
+			
+			LineString ls = geometryFactory.createLineString(coords);
+			IsValidOp valid = new IsValidOp(ls);
+			if(valid.isValid()){
+				return ls;
+			}
+		}
+		return null;
+	}
+	
+	private static void fillVert(double x, double dx, double y, double dy, Coordinate[] coords, GeometryFactory gf){
+		double fx = x+Math.random()*dx;
+		double ry = dy; // remainder of y distance
+		coords[0] = new Coordinate(fx,y);
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		for(int i=1;i<coords.length-1;i++){
+			ry -= Math.random()*ry;
+			coords[i] = new Coordinate(fx,y+dy-ry);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+		coords[coords.length-1] = new Coordinate(fx,y+dy);
+		gf.getPrecisionModel().makePrecise(coords[coords.length-1]);
+	}
+	
+	private static void fillHorz(double x, double dx, double y, double dy, Coordinate[] coords, GeometryFactory gf){
+		double fy = y+Math.random()*dy;
+		double rx = dx; // remainder of x distance
+		coords[0] = new Coordinate(x,fy);
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		for(int i=1;i<coords.length-1;i++){
+			rx -= Math.random()*rx;
+			coords[i] = new Coordinate(x+dx-rx,fy);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+		coords[coords.length-1] = new Coordinate(x+dx,fy);
+		gf.getPrecisionModel().makePrecise(coords[coords.length-1]);
+	}
+	
+	private static void fillArc(double x, double dx, double y, double dy, Coordinate[] coords, GeometryFactory gf){
+		if(coords.length == 2)
+			throw new IllegalStateException("Too few points for Arc");
+		
+		double theta = 360/coords.length;
+		double start = theta/2;
+		
+		double radius = dx<dy?dx/3:dy/3;
+		
+		double cx = x+(dx/2); // center
+		double cy = y+(dy/2); // center
+		
+		for(int i=0;i<coords.length;i++){
+			double angle = Math.toRadians(start+theta*i);
+			
+			double fx = Math.sin(angle)*radius; // may be neg.
+			double fy = Math.cos(angle)*radius; // may be neg.
+			
+			coords[i] = new Coordinate(cx+fx,cy+fy);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+	}
+
+	/**
+	 * @return Returns the numberPoints.
+	 */
+	public int getNumberPoints() {
+		return numberPoints;
+	}
+
+	/**
+	 * @param numberPoints The numberPoints to set.
+	 */
+	public void setNumberPoints(int numberPoints) {
+		this.numberPoints = numberPoints;
+	}
+
+	/**
+	 * @return Returns the generationAlgorithm.
+	 */
+	public int getGenerationAlgorithm() {
+		return generationAlgorithm;
+	}
+
+	/**
+	 * @param generationAlgorithm The generationAlgorithm to set.
+	 */
+	public void setGenerationAlgorithm(int generationAlgorithm) {
+		this.generationAlgorithm = generationAlgorithm;
+	}
+	
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,190 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import java.util.ArrayList;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Cascades the effort of creating a set of topologically valid geometries.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class MultiGenerator extends GeometryGenerator {
+
+	private GeometryGenerator generator = null;
+	private int numberGeometries = 2;
+	private int generationAlgorithm = 0;
+	
+	/**
+	 * Grid style blocks
+	 */
+	public static final int BOX = 0;
+	/**
+	 * vertical strips
+	 */
+	public static final int VERT = 1;
+	/**
+	 * Horizontal strips
+	 */
+	public static final int HORZ = 2;
+	
+	/**
+	 * @param generator
+	 */
+	public MultiGenerator(GeometryGenerator generator) {
+		this.generator = generator;
+	}
+
+	/**
+	 * Creates a geometry collection representing the set of child geometries created.
+	 * 
+	 * @see #setNumberGeometries(int)
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @see #BOX
+	 * @see #VERT
+	 * @see #HORZ
+	 * 
+	 * @throws NullPointerException when the generator is missing
+	 * @throws IllegalStateException when the number of child geoms is too small
+	 * @throws IllegalStateException when the selected alg. is invalid
+	 */
+	public Geometry create() {
+		if(generator == null)
+			throw new NullPointerException("Missing child generator");
+		
+		if(numberGeometries < 1)
+			throw new IllegalStateException("Too few child geoms to create");
+		
+		ArrayList geoms = new ArrayList(numberGeometries);
+
+		GridGenerator grid = GeometryGenerator.createGridGenerator();
+		grid.setBoundingBox(boundingBox);
+		grid.setGeometryFactory(geometryFactory);
+		
+		switch(generationAlgorithm){
+		case BOX:
+
+			int nrow = (int)Math.sqrt(numberGeometries);
+			int ncol = numberGeometries/nrow;
+			grid.setNumberRows(nrow);
+			grid.setNumberColumns(ncol);
+			
+			break;
+		case VERT:
+
+			grid.setNumberRows(1);
+			grid.setNumberColumns(numberGeometries);
+			
+			break;
+		case HORZ:
+
+			grid.setNumberRows(numberGeometries);
+			grid.setNumberColumns(1);
+			
+			break;
+		default:
+			throw new IllegalStateException("Invalid Alg. Specified");
+		}
+		
+		while(grid.canCreate()){
+			generator.setBoundingBox(grid.createEnv());
+			geoms.add(generator.create());
+		}
+		
+		// yes ... there are better ways
+		if(generator instanceof PointGenerator){
+			return geometryFactory.createMultiPoint((Point[]) geoms.toArray(new Point[numberGeometries]));
+		}else{
+		if(generator instanceof LineStringGenerator){
+			return geometryFactory.createMultiLineString((LineString[]) geoms.toArray(new LineString[numberGeometries]));
+		}else{
+		if(generator instanceof PolygonGenerator){
+			return geometryFactory.createMultiPolygon((Polygon[]) geoms.toArray(new Polygon[numberGeometries]));
+		}else{
+			// same as multi
+			return geometryFactory.createGeometryCollection((Geometry[]) geoms.toArray(new Geometry[numberGeometries]));
+		}}}
+	}
+
+	/**
+	 * @return Returns the numberGeometries.
+	 */
+	public int getNumberGeometries() {
+		return numberGeometries;
+	}
+
+	/**
+	 * @param numberGeometries The numberGeometries to set.
+	 */
+	public void setNumberGeometries(int numberGeometries) {
+		this.numberGeometries = numberGeometries;
+	}
+
+	/**
+	 * @return Returns the generator.
+	 */
+	public GeometryGenerator getGenerator() {
+		return generator;
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setBoundingBox(com.vividsolutions.jts.geom.Envelope)
+	 */
+	public void setBoundingBox(Envelope boundingBox) {
+		super.setBoundingBox(boundingBox);
+		if(generator!=null)
+			generator.setBoundingBox(boundingBox);
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setDimensions(int)
+	 */
+	public void setDimensions(int dimensions) {
+		super.setDimensions(dimensions);
+		if(generator!=null)
+			generator.setDimensions(dimensions);
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setGeometryFactory(com.vividsolutions.jts.geom.GeometryFactory)
+	 */
+	public void setGeometryFactory(GeometryFactory geometryFactory) {
+		super.setGeometryFactory(geometryFactory);
+		if(generator!=null)
+			generator.setGeometryFactory(geometryFactory);
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,65 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.Point;
+
+/**
+ * 
+ * Creates a point based on the bounding box. 
+ * 
+ * This implementation returns the centroid.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class PointGenerator extends GeometryGenerator {
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+		
+		Point p = geometryFactory.toGeometry(boundingBox).getCentroid();
+		geometryFactory.getPrecisionModel().makePrecise(p.getCoordinate());
+		return p;
+	}
+
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,328 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.operation.valid.IsValidOp;
+
+/**
+ * 
+ * This class is used to create a polygon within the specified bounding box.
+ * 
+ * Sucessive calls to create may or may not return the same geometry topology.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class PolygonGenerator extends GeometryGenerator {
+	protected int numberPoints = 4;
+	protected int numberHoles = 0;
+	protected int generationAlgorithm = 0;
+	
+	/**
+	 * Creates rectangular polygons
+	 */
+	public static final int BOX = 0;
+	
+	/**
+	 * Creates polygons whose points will not be rectangular when there are more than 4 points 
+	 */
+	public static final int ARC = 1;
+	
+	private static final int RUNS = 5;
+	
+	/**
+	 * As the user increases the number of points, the probability of creating a random valid polygon decreases. 
+	 * Please take not of this when selecting the generation style, and the number of points. 
+	 * 
+	 * May return null if a geometry could not be created.
+	 * 
+	 * @see #getNumberPoints()
+	 * @see #setNumberPoints(int)
+	 * @see #getGenerationAlgorithm()
+	 * @see #setGenerationAlgorithm(int)
+	 * 
+	 * @see #BOX
+	 * @see #ARC
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws IllegalStateException When the alg is not valid or the number of points is invalid
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+		if(numberPoints<4){
+			throw new IllegalStateException("Too few points");
+		}
+		
+		double x = boundingBox.getMinX(); // base x
+		double dx = boundingBox.getMaxX()-x;
+		
+		double y = boundingBox.getMinY(); // base y
+		double dy = boundingBox.getMaxY()-y;
+		
+		Polygon p = null;
+		
+		for(int i=0;i<RUNS;i++){
+			switch(getGenerationAlgorithm()){
+			case BOX:
+				p = createBox(x,dx,y,dy,numberHoles,numberPoints,geometryFactory);
+				break;
+			case ARC:
+				p = createArc(x,dx,y,dy,numberHoles,numberPoints,geometryFactory);
+				break;
+			default:
+				throw new IllegalStateException("Invalid Alg. Specified");
+			}
+			
+			IsValidOp valid = new IsValidOp(p);
+			if(valid.isValid()){
+				return p;
+			}
+		}
+		return null;
+	}
+	
+	private static Polygon createArc(double x, double dx, double y, double dy, int nholes, int npoints, GeometryFactory gf){
+		// make outer ring first
+		double radius = dx<dy?dx/3:dy/3;
+		
+		double cx = x+(dx/2); // center
+		double cy = y+(dy/2); // center
+		
+		LinearRing outer = createArc(cx,cy,radius,npoints,gf);
+		
+		if(nholes == 0){
+			return gf.createPolygon(outer,null);
+		}
+		
+		LinearRing[] inner = new LinearRing[nholes];
+		
+		radius *= .75;
+		int degreesPerHole = 360/(nholes+1);
+		int degreesPerGap = degreesPerHole/nholes;
+		degreesPerGap = degreesPerGap<2?2:degreesPerGap;
+		degreesPerHole = (360-(degreesPerGap*nholes))/nholes;
+		
+		if(degreesPerHole < 2)
+			throw new RuntimeException("Slices too small for poly. Use Box alg.");
+		
+		int start = degreesPerGap/2;
+		for(int i=0;i<nholes;i++){
+			int st = start+(i*(degreesPerHole+degreesPerGap)); // start angle 
+			inner[i] = createTri(cx,cy,st,st+degreesPerHole,radius,gf);
+		}
+		
+		
+		return gf.createPolygon(outer,inner);
+	}
+	
+	private static LinearRing createTri(double cx, double cy ,int startAngle, int endAngle, double radius, GeometryFactory gf){
+
+		Coordinate[] coords = new Coordinate[4];
+		
+		double fx1,fx2,fy1,fy2;
+		
+		double angle = Math.toRadians(startAngle);
+		fx1 = Math.sin(angle)*radius; // may be neg.
+		fy1 = Math.cos(angle)*radius; // may be neg.
+		
+		angle = Math.toRadians(endAngle);
+		fx2 = Math.sin(angle)*radius; // may be neg.
+		fy2 = Math.cos(angle)*radius; // may be neg.
+		
+		coords[0] = new Coordinate(cx,cy);
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		coords[1] = new Coordinate(cx+fx1,cy+fy1);
+		gf.getPrecisionModel().makePrecise(coords[1]);
+		coords[2] = new Coordinate(cx+fx2,cy+fy2);
+		gf.getPrecisionModel().makePrecise(coords[2]);
+		coords[3] = new Coordinate(cx,cy);
+		gf.getPrecisionModel().makePrecise(coords[3]);
+		
+		return gf.createLinearRing(coords);
+	}
+	
+	private static LinearRing createArc(double cx, double cy ,double radius, int npoints, GeometryFactory gf){
+
+		Coordinate[] coords = new Coordinate[npoints+1];
+		
+		double theta = 360/npoints;
+		
+		for(int i=0;i<npoints;i++){
+			double angle = Math.toRadians(theta*i);
+			
+			double fx = Math.sin(angle)*radius; // may be neg.
+			double fy = Math.cos(angle)*radius; // may be neg.
+			
+			coords[i] = new Coordinate(cx+fx,cy+fy);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+		
+		coords[npoints] = new Coordinate(coords[0]);
+		gf.getPrecisionModel().makePrecise(coords[npoints]);
+		
+		return gf.createLinearRing(coords);
+	}
+	
+	private static Polygon createBox(double x, double dx, double y, double dy, int nholes, int npoints, GeometryFactory gf){
+		// make outer ring first
+		LinearRing outer = createBox(x,dx,y,dy,npoints,gf);
+		
+		if(nholes == 0){
+			return gf.createPolygon(outer,null);
+		}
+		
+		LinearRing[] inner = new LinearRing[nholes];
+		
+		int nrow = (int)Math.sqrt(nholes);
+		int ncol = nholes/nrow;
+		
+		double ddx = dx/(ncol+1);
+		double ddy = dy/(nrow+1);
+		
+		// spacers
+		double spx = ddx/(ncol+1);
+		double spy = ddy/(nrow+1);
+		
+		// should have more grids than required
+		int cindex = 0;
+		for(int i=0;i<nrow;i++){
+			for(int j=0;j<ncol;j++){
+				if(cindex<nholes){
+					// make another box
+					int pts = npoints/2;
+					pts = pts<4?4:pts;
+					
+					inner[cindex++] = createBox(spx+x+j*(ddx+spx),ddx,spy+y+i*(ddy+spy),ddy,pts,gf);
+				}
+			}
+		}
+		
+		return gf.createPolygon(outer,inner);
+	}
+	
+	private static LinearRing createBox(double x, double dx, double y, double dy, int npoints, GeometryFactory gf){
+
+		//figure out the number of points per side
+		int ptsPerSide = npoints/4;
+		int rPtsPerSide = npoints%4;
+		Coordinate[] coords = new Coordinate[npoints+1];
+		coords[0] = new Coordinate(x,y); // start
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		
+		int cindex = 1;
+		for(int i=0;i<4;i++){ // sides
+			int npts = ptsPerSide+(rPtsPerSide-->0?1:0);
+			// npts atleast 1
+			
+			if(i%2 == 1){ // odd vert
+				double cy = dy/npts;
+				if(i > 1) // down
+					cy *=-1;
+				double tx = coords[cindex-1].x;
+				double sy = coords[cindex-1].y;
+				
+				for(int j=0;j<npts;j++){
+					coords[cindex] = new Coordinate(tx,sy+(j+1)*cy);
+					gf.getPrecisionModel().makePrecise(coords[cindex++]);
+				}
+			}else{ // even horz
+				double cx = dx/npts;
+				if(i > 1) // down
+					cx *=-1;
+				double ty = coords[cindex-1].y;
+				double sx = coords[cindex-1].x;
+				
+				for(int j=0;j<npts;j++){
+					coords[cindex] = new Coordinate(sx+(j+1)*cx,ty);
+					gf.getPrecisionModel().makePrecise(coords[cindex++]);
+				}
+			}
+		}
+		coords[npoints] = new Coordinate(x,y); // end
+		gf.getPrecisionModel().makePrecise(coords[npoints]);
+		
+		return gf.createLinearRing(coords);
+	}
+
+	/**
+	 * @return Returns the generationAlgorithm.
+	 */
+	public int getGenerationAlgorithm() {
+		return generationAlgorithm;
+	}
+
+	/**
+	 * @param generationAlgorithm The generationAlgorithm to set.
+	 */
+	public void setGenerationAlgorithm(int generationAlgorithm) {
+		this.generationAlgorithm = generationAlgorithm;
+	}
+
+	/**
+	 * @return Returns the numberHoles.
+	 */
+	public int getNumberHoles() {
+		return numberHoles;
+	}
+
+	/**
+	 * @param numberHoles The numberHoles to set.
+	 */
+	public void setNumberHoles(int numberHoles) {
+		this.numberHoles = numberHoles;
+	}
+
+	/**
+	 * @return Returns the numberPoints.
+	 */
+	public int getNumberPoints() {
+		return numberPoints;
+	}
+
+	/**
+	 * @param numberPoints The numberPoints to set.
+	 */
+	public void setNumberPoints(int numberPoints) {
+		this.numberPoints = numberPoints;
+	}
+	
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,146 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.geom.*;
+
+import junit.framework.TestCase;
+
+public class GMLReaderTestCase extends TestCase {
+
+	public GMLReaderTestCase(String arg0) {
+		super(arg0);
+		// TODO Auto-generated constructor stub
+	}
+	
+	protected static PrecisionModel precisionModel = new PrecisionModel(1000);
+	protected static GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
+	
+	public void testPointRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/points.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			Point p = (Point) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+
+	public void testLineStringRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/linestrings.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			LineString ls = (LineString) gc.getGeometryN(i);
+			assertNotNull(ls);
+		}
+	}
+
+	public void testPolygonRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/polygons.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			Polygon p = (Polygon) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+	
+	public void testMultiPointRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/multipoints.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			MultiPoint p = (MultiPoint) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+
+	public void testMultiLineStringRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/multilinestrings.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			MultiLineString ls = (MultiLineString) gc.getGeometryN(i);
+			assertNotNull(ls);
+		}
+	}
+
+	public void testMultiPolygonRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/multipolygons.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			MultiPolygon p = (MultiPolygon) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,118 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.sql.SQLException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticLineStringTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleLineStringRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		LineString pt = (LineString) pg.create();
+		
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		LineString pt2 = (LineString) in.read(getReader(),geometryFactory);
+		
+//		System.out.println(pt);
+//		System.out.println(pt2);
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleLineStringManyPointRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		pg.setNumberPoints(1000);
+		
+		LineString pt = (LineString) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		LineString pt2 = (LineString) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+}
+

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,128 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.LineStringGenerator;
+import com.vividsolutions.jts.generator.MultiGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.MultiLineString;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiLineStringTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiLineStringRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiLineString pt2 = (MultiLineString) in.read(getReader(),geometryFactory);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws IOException 
+	 * @throws ParserConfigurationException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiLineStringManyPointRoundTrip() throws IOException, SAXException, ParserConfigurationException{
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(1000);
+		pgc.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiLineString pt2 = (MultiLineString) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,90 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.MultiGenerator;
+import com.vividsolutions.jts.generator.PointGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.MultiPoint;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPointTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPoint
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPointRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPoint pt = (MultiPoint) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPoint pt2 = (MultiPoint) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,226 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.MultiGenerator;
+import com.vividsolutions.jts.generator.PolygonGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.MultiPolygon;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPolygonTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonNoHoleRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonManyPointsNoHoleRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonManyPointsHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonManyPointsManyHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(100);
+		pgc.setNumberHoles(100);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,86 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.PointGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Point;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPointTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single point
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePointRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		
+		Point pt = (Point) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Point pt2 = (Point) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input Point is not the same as the output Point",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,195 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.PolygonGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Polygon;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPolygonTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws IOException 
+	 * @throws ParserConfigurationException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonNoHoleRoundTrip() throws IOException, SAXException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		Polygon pt = (Polygon) pg.create();
+		
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+		
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws IOException 
+	 * @throws ParserConfigurationException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonManyPointsNoHoleRoundTrip() throws IOException, SAXException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+		
+//		System.out.println(pt);
+//		System.out.println(pt2);
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonManyPointsHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonManyPointsManyHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(100);
+		pg.setNumberHoles(100);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,77 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.*;
+
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.PrecisionModel;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ * Abstract Test Case. Intended to provide some IO operations for the middle of a test.
+ * 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class WritingTestCase extends TestCase {
+	
+	/**
+	 * @param arg
+	 */
+	public WritingTestCase(String arg){
+		super(arg);
+	}
+	
+	protected StringWriter sw = null;
+	protected Writer getWriter(){
+		sw = new StringWriter();
+		sw.write("<?xml version='1.0' encoding='UTF-8'?>\n");
+		return sw;
+	}
+	protected Reader getReader() throws IOException{
+		sw.flush();
+		sw.close();
+		String s = sw.toString();
+		
+//		System.out.println(s);
+		
+		return new StringReader(s);
+	}
+	
+	protected static PrecisionModel precisionModel = new PrecisionModel(1000);
+	protected static GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
+
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema targetNamespace="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="2.1.2">
+  <annotation>
+    <appinfo>geometry.xsd v2.1.2 2002-07</appinfo>
+    <documentation xml:lang="en">
+      GML Geometry schema. Copyright (c) 2001,2002 OGC, All Rights Reserved.
+    </documentation>
+  </annotation>
+  <!-- bring in the XLink attributes -->
+  <import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlinks.xsd"/>
+  <!-- ==============================================================
+       global declarations
+  =================================================================== -->
+  <element name="_Geometry" type="gml:AbstractGeometryType" abstract="true"/>
+  <element name="_GeometryCollection" type="gml:GeometryCollectionType" abstract="true" substitutionGroup="gml:_Geometry"/>
+  <element name="geometryMember" type="gml:GeometryAssociationType"/>
+  <element name="pointMember" type="gml:PointMemberType" substitutionGroup="gml:geometryMember"/>
+  <element name="lineStringMember" type="gml:LineStringMemberType" substitutionGroup="gml:geometryMember"/>
+  <element name="polygonMember" type="gml:PolygonMemberType" substitutionGroup="gml:geometryMember"/>
+  <element name="outerBoundaryIs" type="gml:LinearRingMemberType"/>
+  <element name="innerBoundaryIs" type="gml:LinearRingMemberType"/>
+  <!-- primitive geometry elements -->
+  <element name="Point" type="gml:PointType" substitutionGroup="gml:_Geometry"/>
+  <element name="LineString" type="gml:LineStringType" substitutionGroup="gml:_Geometry"/>
+  <element name="LinearRing" type="gml:LinearRingType" substitutionGroup="gml:_Geometry"/>
+  <element name="Polygon" type="gml:PolygonType" substitutionGroup="gml:_Geometry"/>
+  <element name="Box" type="gml:BoxType"/>
+  <!-- aggregate geometry elements -->
+  <element name="MultiGeometry" type="gml:GeometryCollectionType" substitutionGroup="gml:_Geometry"/>
+  <element name="MultiPoint" type="gml:MultiPointType" substitutionGroup="gml:_Geometry"/>
+  <element name="MultiLineString" type="gml:MultiLineStringType" substitutionGroup="gml:_Geometry"/>
+  <element name="MultiPolygon" type="gml:MultiPolygonType" substitutionGroup="gml:_Geometry"/>
+  <!-- coordinate elements -->
+  <element name="coord" type="gml:CoordType"/>
+  <element name="coordinates" type="gml:CoordinatesType"/>
+  <!-- this attribute gives the location where an element is defined -->
+  <attribute name="remoteSchema" type="anyURI"/>
+  <!-- ==============================================================
+       abstract supertypes
+  =================================================================== -->
+  <complexType name="AbstractGeometryType" abstract="true">
+    <annotation>
+      <documentation>
+        All geometry elements are derived from this abstract supertype; 
+        a geometry element may have an identifying attribute (gid). 
+        It may be associated with a spatial reference system.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="anyType">
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="optional"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractGeometryCollectionBaseType" abstract="true">
+    <annotation>
+      <documentation>
+        This abstract base type for geometry collections just makes the 
+        srsName attribute mandatory.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:AbstractGeometryType">
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <attributeGroup name="AssociationAttributeGroup">
+    <annotation>
+      <documentation>
+        These attributes can be attached to any element, thus allowing it 
+        to act as a pointer. The 'remoteSchema' attribute allows an element 
+        that carries link attributes to indicate that the element is declared 
+        in a remote schema rather than by the schema that constrains the 
+        current document instance.  
+      </documentation>
+    </annotation>
+    <attributeGroup ref="xlink:simpleLink"/>
+    <attribute ref="gml:remoteSchema" use="optional"/>
+  </attributeGroup>
+  <complexType name="GeometryAssociationType">
+    <annotation>
+      <documentation>
+        An instance of this type (e.g. a geometryMember) can either 
+        enclose or point to a primitive geometry element. When serving 
+        as a simple link that references a remote geometry instance, 
+        the value of the gml:remoteSchema attribute can be used to 
+        locate a schema fragment that constrains the target instance.
+      </documentation>
+    </annotation>
+    <sequence minOccurs="0">
+      <element ref="gml:_Geometry"/>
+    </sequence>
+    <!-- <attributeGroup ref="gml:AssociationAttributeGroup"/> -->
+    <attributeGroup ref="xlink:simpleLink"/>
+    <attribute ref="gml:remoteSchema" use="optional"/>
+  </complexType>
+  <complexType name="PointMemberType">
+    <annotation>
+      <documentation>Restricts the geometry member to being a Point instance.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:Point"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="LineStringMemberType">
+    <annotation>
+      <documentation>Restricts the geometry member to being a LineString instance.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:LineString"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="PolygonMemberType">
+    <annotation>
+      <documentation>Restricts the geometry member to being a Polygon instance.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:Polygon"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="LinearRingMemberType">
+    <annotation>
+      <documentation>Restricts the outer or inner boundary of a polygon instance 
+			to being a LinearRing.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:LinearRing"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <!-- ==============================================================
+       primitive geometry types
+  =================================================================== -->
+  <complexType name="PointType">
+    <annotation>
+      <documentation>
+        A Point is defined by a single coordinate tuple.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="LineStringType">
+    <annotation>
+      <documentation>
+        A LineString is defined by two or more coordinate tuples, with 
+        linear interpolation between them. 
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord" minOccurs="2" maxOccurs="unbounded"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="LinearRingType">
+    <annotation>
+      <documentation>
+        A LinearRing is defined by four or more coordinate tuples, with 
+        linear interpolation between them; the first and last coordinates 
+        must be coincident.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord" minOccurs="4" maxOccurs="unbounded"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="BoxType">
+    <annotation>
+      <documentation>
+        The Box structure defines an extent using a pair of coordinate tuples.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord" minOccurs="2" maxOccurs="2"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="PolygonType">
+    <annotation>
+      <documentation>
+        A Polygon is defined by an outer boundary and zero or more inner 
+        boundaries which are in turn defined by LinearRings.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <element ref="gml:outerBoundaryIs"/>
+          <element ref="gml:innerBoundaryIs" minOccurs="0" maxOccurs="unbounded"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <!-- ==============================================================
+       aggregate geometry types
+  =================================================================== -->
+  <complexType name="GeometryCollectionType">
+    <annotation>
+      <documentation>
+        A geometry collection must include one or more geometries, referenced 
+        through geometryMember elements. User-defined geometry collections 
+        that accept GML geometry classes as members must instantiate--or 
+        derive from--this type.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryCollectionBaseType">
+        <sequence>
+          <element ref="gml:geometryMember" maxOccurs="unbounded"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="MultiPointType">
+    <annotation>
+      <documentation>
+        A MultiPoint is defined by one or more Points, referenced through 
+        pointMember elements.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryCollectionType">
+        <sequence>
+          <element ref="gml:pointMember" maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="MultiLineStringType">
+    <annotation>
+      <documentation>
+        A MultiLineString is defined by one or more LineStrings, referenced 
+        through lineStringMember elements.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryCollectionType">
+        <sequence>
+          <element ref="gml:lineStringMember" maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="MultiPolygonType">
+    <annotation>
+      <documentation>
+        A MultiPolygon is defined by one or more Polygons, referenced through 
+        polygonMember elements. 
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryCollectionType">
+        <sequence>
+          <element ref="gml:polygonMember" maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <!-- ==============================================================
+       There are two ways to represent coordinates: (1) as a sequence 
+       of <coord> elements that encapsulate tuples, or (2) using a 
+       single <coordinates> string.
+  =================================================================== -->
+  <complexType name="CoordType">
+    <annotation>
+      <documentation>
+        Represents a coordinate tuple in one, two, or three dimensions.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="X" type="decimal"/>
+      <element name="Y" type="decimal" minOccurs="0"/>
+      <element name="Z" type="decimal" minOccurs="0"/>
+    </sequence>
+  </complexType>
+  <complexType name="CoordinatesType">
+    <annotation>
+      <documentation>
+        Coordinates can be included in a single string, but there is no 
+        facility for validating string content. The value of the 'cs' attribute 
+        is the separator for coordinate values, and the value of the 'ts' 
+        attribute gives the tuple separator (a single space by default); the 
+        default values may be changed to reflect local usage.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+        <attribute name="decimal" type="string" use="optional" default="."/>
+        <attribute name="cs" type="string" use="optional" default=","/>
+        <attribute name="ts" type="string" use="optional" default="&#x20;"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+</schema>

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,120 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.net.URL;
+import java.sql.*;
+import java.util.Properties;
+
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.PrecisionModel;
+
+import oracle.jdbc.OracleConnection;
+import junit.framework.TestCase;
+
+/**
+ * 
+ * Abstract Test Case. Intended to provide a connection with which test may be performed.
+ * 
+ * Sub-classes should not assume that either the connection will always exist, or 
+ * the connection has the required permissions.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class ConnectedTestCase extends TestCase {
+	
+	/**
+	 * @param arg
+	 */
+	public ConnectedTestCase(String arg){
+		super(arg);
+	}
+	
+	private OracleConnection connection = null;
+	
+	/**
+	 * Sub-classes should not assume that either the connection will always exist, or 
+	 * the connection has the required permissions.
+	 * 
+	 * @return OracleConnection
+	 */
+	protected OracleConnection getConnection(){
+		return connection;
+	}
+
+	/**
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		
+		Properties props = new Properties();
+		URL path = ClassLoader.getSystemResource("com/vividsolutions/jts/io/oracle/connection.properties");
+		props.load(path.openStream());
+		
+		connection = getOracleConnection(props.getProperty("test.server"),props.getProperty("test.port"),
+				props.getProperty("test.sid"),props.getProperty("test.user"),props.getProperty("test.pwd"));
+	}
+
+    private static OracleConnection getOracleConnection(String server, String port, String sid, String userid, String pwd) throws SQLException {
+        String url       = "jdbc:oracle:thin:@"+server+":"+port+":"+sid;
+        return (OracleConnection)openConnection( "oracle.jdbc.driver.OracleDriver", url, userid, pwd );
+    }
+
+
+
+    private static Connection openConnection( String driver, String url, String uid, String pwd ) throws SQLException {
+
+        Connection conn  = null;
+        try {
+            Class.forName( driver );
+        } catch ( java.lang.ClassNotFoundException e ) {
+            fail( e.getMessage() );
+        }
+        conn = DriverManager.getConnection( url, uid, pwd );
+        return conn;
+    }
+
+	/**
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		if(connection != null && !connection.isClosed())
+			connection.close();
+	}
+	
+	protected static PrecisionModel precisionModel = new PrecisionModel(1000);
+	protected static GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
+
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,190 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticLineStringTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws SQLException 
+	 */
+	public void testSingleLineStringRoundTrip() throws SQLException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		LineString pt = (LineString) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		LineString pt2 = (LineString) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping line strings
+	 * @throws SQLException 
+	 */
+	public void testGridLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		LineString[] pt = new LineString[100];
+		STRUCT[] st = new STRUCT[100];
+
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (LineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			LineString pt2 = (LineString) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input LineString is not the same as the output LineString",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line strings (4 distinct line strings)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		LineString[] pt = new LineString[4];
+		STRUCT[] st = new STRUCT[8];
+
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (LineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			LineString pt2 = (LineString) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input LineString is not the same as the output LineString",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleLineStringManyPointRoundTrip() throws SQLException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		pg.setNumberPoints(1000);
+		
+		LineString pt = (LineString) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		LineString pt2 = (LineString) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,207 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiLineStringTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiLineStringRoundTrip() throws SQLException{
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiLineString pt2 = (MultiLineString) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping line strings
+	 * @throws SQLException 
+	 */
+	public void testGridMultiLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiLineString[] pt = new MultiLineString[100];
+		STRUCT[] st = new STRUCT[100];
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiLineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiLineString pt2 = (MultiLineString) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line strings (4 distinct line strings)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiLineString[] pt = new MultiLineString[4];
+		STRUCT[] st = new STRUCT[8];
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiLineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiLineString pt2 = (MultiLineString) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiLineStringManyPointRoundTrip() throws SQLException{
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(1000);
+		pgc.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiLineString pt2 = (MultiLineString) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,171 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPointTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPoint
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPointRoundTrip() throws SQLException{
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPoint pt = (MultiPoint) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPoint pt2 = (MultiPoint) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping MultiPoints
+	 * @throws SQLException 
+	 */
+	public void testGridMultiPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiPoint[] pt = new MultiPoint[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPoint) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiPoint pt2 = (MultiPoint) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping MultiPoints (4 distinct MultiPoints)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiPoint[] pt = new MultiPoint[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPoint) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiPoint pt2 = (MultiPoint) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,394 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPolygonTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonNoHoleRoundTrip() throws SQLException{
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testGridMultiPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiPolygon[] pt = new MultiPolygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line MultiPolygons (4 distinct MultiPolygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiPolygon[] pt = new MultiPolygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonManyPointsNoHoleRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonHolesRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testGridMultiPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiPolygon[] pt = new MultiPolygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line MultiPolygons (4 distinct MultiPolygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiPolygon[] pt = new MultiPolygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonManyPointsHolesRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonManyPointsManyHolesRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(100);
+		pgc.setNumberHoles(100);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,159 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.GridGenerator;
+import com.vividsolutions.jts.generator.PointGenerator;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPointTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single point
+	 * @throws SQLException 
+	 */
+	public void testSinglePointRoundTrip() throws SQLException{
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		
+		Point pt = (Point) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Point pt2 = (Point) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input Point is not the same as the output Point",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping points
+	 * @throws SQLException 
+	 */
+	public void testGridPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		Point[] pt = new Point[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Point) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			Point pt2 = (Point) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input Point is not the same as the output Point",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping points (4 distinct points)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		Point[] pt = new Point[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Point) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			Point pt2 = (Point) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input Point is not the same as the output Point",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,350 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPolygonTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonNoHoleRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		Polygon pt = (Polygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping polygon
+	 * @throws SQLException 
+	 */
+	public void testGridPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		Polygon[] pt = new Polygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line polygons (4 distinct polygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		Polygon[] pt = new Polygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonManyPointsNoHoleRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		
+		Polygon pt = (Polygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonHolesRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping polygon
+	 * @throws SQLException 
+	 */
+	public void testGridPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		Polygon[] pt = new Polygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line polygons (4 distinct polygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		Polygon[] pt = new Polygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonManyPointsHolesRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonManyPointsManyHolesRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(100);
+		pg.setNumberHoles(100);
+		
+		Polygon pt = (Polygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+}

Added: packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,5 @@
+test.server=Neptune
+test.port=1521
+test.sid=LRDW
+test.user=inventory
+test.pwd=password
\ No newline at end of file

Added: packages/jts/branches/upstream/current/jtsio/test/data/linestrings.xml
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/data/linestrings.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/data/linestrings.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,312 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	<LineString>
+		<coordinates>24824.045318333192,38536.15071012041
+			26157.378651666528,37567.42733944659 26666.666666666668,36000.0
+			26157.378651666528,34432.57266055341
+			24824.045318333192,33463.84928987959
+			23175.954681666804,33463.84928987959
+			21842.621348333472,34432.57266055341 21333.333333333332,36000.0
+			21842.621348333472,37567.42733944659
+			23175.954681666808,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,38536.15071012041
+			34157.37865166653,37567.42733944659 34666.666666666664,36000.0
+			34157.37865166653,34432.57266055341
+			32824.04531833319,33463.84928987959
+			31175.954681666804,33463.84928987959
+			29842.621348333472,34432.57266055341 29333.333333333332,36000.0
+			29842.621348333472,37567.42733944659
+			31175.954681666808,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,38536.15071012041
+			42157.37865166653,37567.42733944659 42666.666666666664,36000.0
+			42157.37865166653,34432.57266055341
+			40824.04531833319,33463.84928987959
+			39175.95468166681,33463.84928987959
+			37842.62134833347,34432.57266055341 37333.333333333336,36000.0
+			37842.62134833347,37567.42733944659
+			39175.95468166681,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,38536.15071012041
+			50157.37865166653,37567.42733944659 50666.666666666664,36000.0
+			50157.37865166653,34432.57266055341
+			48824.04531833319,33463.84928987959
+			47175.95468166681,33463.84928987959
+			45842.62134833347,34432.57266055341 45333.333333333336,36000.0
+			45842.62134833347,37567.42733944659
+			47175.95468166681,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,38536.15071012041
+			58157.37865166653,37567.42733944659 58666.666666666664,36000.0
+			58157.37865166653,34432.57266055341
+			56824.04531833319,33463.84928987959
+			55175.95468166681,33463.84928987959
+			53842.62134833347,34432.57266055341 53333.333333333336,36000.0
+			53842.62134833347,37567.42733944659
+			55175.95468166681,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,50536.15071012041
+			26157.378651666528,49567.42733944659 26666.666666666668,48000.0
+			26157.378651666528,46432.57266055341
+			24824.045318333192,45463.84928987959
+			23175.954681666804,45463.84928987959
+			21842.621348333472,46432.57266055341 21333.333333333332,48000.0
+			21842.621348333472,49567.42733944659
+			23175.954681666808,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,50536.15071012041
+			34157.37865166653,49567.42733944659 34666.666666666664,48000.0
+			34157.37865166653,46432.57266055341
+			32824.04531833319,45463.84928987959
+			31175.954681666804,45463.84928987959
+			29842.621348333472,46432.57266055341 29333.333333333332,48000.0
+			29842.621348333472,49567.42733944659
+			31175.954681666808,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,50536.15071012041
+			42157.37865166653,49567.42733944659 42666.666666666664,48000.0
+			42157.37865166653,46432.57266055341
+			40824.04531833319,45463.84928987959
+			39175.95468166681,45463.84928987959
+			37842.62134833347,46432.57266055341 37333.333333333336,48000.0
+			37842.62134833347,49567.42733944659
+			39175.95468166681,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,50536.15071012041
+			50157.37865166653,49567.42733944659 50666.666666666664,48000.0
+			50157.37865166653,46432.57266055341
+			48824.04531833319,45463.84928987959
+			47175.95468166681,45463.84928987959
+			45842.62134833347,46432.57266055341 45333.333333333336,48000.0
+			45842.62134833347,49567.42733944659
+			47175.95468166681,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,50536.15071012041
+			58157.37865166653,49567.42733944659 58666.666666666664,48000.0
+			58157.37865166653,46432.57266055341
+			56824.04531833319,45463.84928987959
+			55175.95468166681,45463.84928987959
+			53842.62134833347,46432.57266055341 53333.333333333336,48000.0
+			53842.62134833347,49567.42733944659
+			55175.95468166681,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,62536.15071012041
+			26157.378651666528,61567.42733944659 26666.666666666668,60000.0
+			26157.378651666528,58432.57266055341
+			24824.045318333192,57463.84928987959
+			23175.954681666804,57463.84928987959
+			21842.621348333472,58432.57266055341 21333.333333333332,60000.0
+			21842.621348333472,61567.42733944659
+			23175.954681666808,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,62536.15071012041
+			34157.37865166653,61567.42733944659 34666.666666666664,60000.0
+			34157.37865166653,58432.57266055341
+			32824.04531833319,57463.84928987959
+			31175.954681666804,57463.84928987959
+			29842.621348333472,58432.57266055341 29333.333333333332,60000.0
+			29842.621348333472,61567.42733944659
+			31175.954681666808,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,62536.15071012041
+			42157.37865166653,61567.42733944659 42666.666666666664,60000.0
+			42157.37865166653,58432.57266055341
+			40824.04531833319,57463.84928987959
+			39175.95468166681,57463.84928987959
+			37842.62134833347,58432.57266055341 37333.333333333336,60000.0
+			37842.62134833347,61567.42733944659
+			39175.95468166681,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,62536.15071012041
+			50157.37865166653,61567.42733944659 50666.666666666664,60000.0
+			50157.37865166653,58432.57266055341
+			48824.04531833319,57463.84928987959
+			47175.95468166681,57463.84928987959
+			45842.62134833347,58432.57266055341 45333.333333333336,60000.0
+			45842.62134833347,61567.42733944659
+			47175.95468166681,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,62536.15071012041
+			58157.37865166653,61567.42733944659 58666.666666666664,60000.0
+			58157.37865166653,58432.57266055341
+			56824.04531833319,57463.84928987959
+			55175.95468166681,57463.84928987959
+			53842.62134833347,58432.57266055341 53333.333333333336,60000.0
+			53842.62134833347,61567.42733944659
+			55175.95468166681,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,74536.1507101204
+			26157.378651666528,73567.4273394466 26666.666666666668,72000.0
+			26157.378651666528,70432.5726605534
+			24824.045318333192,69463.8492898796
+			23175.954681666804,69463.8492898796
+			21842.621348333472,70432.5726605534 21333.333333333332,72000.0
+			21842.621348333472,73567.4273394466
+			23175.954681666808,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,74536.1507101204
+			34157.37865166653,73567.4273394466 34666.666666666664,72000.0
+			34157.37865166653,70432.5726605534 32824.04531833319,69463.8492898796
+			31175.954681666804,69463.8492898796
+			29842.621348333472,70432.5726605534 29333.333333333332,72000.0
+			29842.621348333472,73567.4273394466
+			31175.954681666808,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,74536.1507101204
+			42157.37865166653,73567.4273394466 42666.666666666664,72000.0
+			42157.37865166653,70432.5726605534 40824.04531833319,69463.8492898796
+			39175.95468166681,69463.8492898796 37842.62134833347,70432.5726605534
+			37333.333333333336,72000.0 37842.62134833347,73567.4273394466
+			39175.95468166681,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,74536.1507101204
+			50157.37865166653,73567.4273394466 50666.666666666664,72000.0
+			50157.37865166653,70432.5726605534 48824.04531833319,69463.8492898796
+			47175.95468166681,69463.8492898796 45842.62134833347,70432.5726605534
+			45333.333333333336,72000.0 45842.62134833347,73567.4273394466
+			47175.95468166681,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,74536.1507101204
+			58157.37865166653,73567.4273394466 58666.666666666664,72000.0
+			58157.37865166653,70432.5726605534 56824.04531833319,69463.8492898796
+			55175.95468166681,69463.8492898796 53842.62134833347,70432.5726605534
+			53333.333333333336,72000.0 53842.62134833347,73567.4273394466
+			55175.95468166681,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,86536.1507101204
+			26157.378651666528,85567.4273394466 26666.666666666668,84000.0
+			26157.378651666528,82432.5726605534
+			24824.045318333192,81463.8492898796
+			23175.954681666804,81463.8492898796
+			21842.621348333472,82432.5726605534 21333.333333333332,84000.0
+			21842.621348333472,85567.4273394466
+			23175.954681666808,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,86536.1507101204
+			34157.37865166653,85567.4273394466 34666.666666666664,84000.0
+			34157.37865166653,82432.5726605534 32824.04531833319,81463.8492898796
+			31175.954681666804,81463.8492898796
+			29842.621348333472,82432.5726605534 29333.333333333332,84000.0
+			29842.621348333472,85567.4273394466
+			31175.954681666808,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,86536.1507101204
+			42157.37865166653,85567.4273394466 42666.666666666664,84000.0
+			42157.37865166653,82432.5726605534 40824.04531833319,81463.8492898796
+			39175.95468166681,81463.8492898796 37842.62134833347,82432.5726605534
+			37333.333333333336,84000.0 37842.62134833347,85567.4273394466
+			39175.95468166681,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,86536.1507101204
+			50157.37865166653,85567.4273394466 50666.666666666664,84000.0
+			50157.37865166653,82432.5726605534 48824.04531833319,81463.8492898796
+			47175.95468166681,81463.8492898796 45842.62134833347,82432.5726605534
+			45333.333333333336,84000.0 45842.62134833347,85567.4273394466
+			47175.95468166681,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,86536.1507101204
+			58157.37865166653,85567.4273394466 58666.666666666664,84000.0
+			58157.37865166653,82432.5726605534 56824.04531833319,81463.8492898796
+			55175.95468166681,81463.8492898796 53842.62134833347,82432.5726605534
+			53333.333333333336,84000.0 53842.62134833347,85567.4273394466
+			55175.95468166681,86536.1507101204 </coordinates>
+	</LineString>
+</MultiGeometry>

Added: packages/jts/branches/upstream/current/jtsio/test/data/multilinestrings.xml
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/data/multilinestrings.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/data/multilinestrings.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1479 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,34268.0753550602
+					23078.689325833264,33783.7136697233
+					23333.333333333332,33000.0
+					23078.689325833264,32216.286330276704
+					22412.022659166596,31731.924644939794
+					21587.977340833404,31731.924644939794
+					20921.310674166736,32216.286330276704
+					20666.666666666668,33000.0
+					20921.310674166736,33783.7136697233
+					21587.977340833404,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,34268.0753550602
+					27078.689325833264,33783.7136697233
+					27333.333333333332,33000.0
+					27078.689325833264,32216.286330276704
+					26412.022659166596,31731.924644939794
+					25587.977340833404,31731.924644939794
+					24921.310674166736,32216.286330276704
+					24666.666666666668,33000.0
+					24921.310674166736,33783.7136697233
+					25587.977340833404,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,40268.0753550602
+					23078.689325833264,39783.7136697233
+					23333.333333333332,39000.0
+					23078.689325833264,38216.2863302767
+					22412.022659166596,37731.9246449398
+					21587.977340833404,37731.9246449398
+					20921.310674166736,38216.2863302767
+					20666.666666666668,39000.0
+					20921.310674166736,39783.7136697233
+					21587.977340833404,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,40268.0753550602
+					27078.689325833264,39783.7136697233
+					27333.333333333332,39000.0
+					27078.689325833264,38216.2863302767
+					26412.022659166596,37731.9246449398
+					25587.977340833404,37731.9246449398
+					24921.310674166736,38216.2863302767
+					24666.666666666668,39000.0
+					24921.310674166736,39783.7136697233
+					25587.977340833404,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,34268.0753550602
+					31078.689325833264,33783.7136697233
+					31333.333333333332,33000.0
+					31078.689325833264,32216.286330276704
+					30412.022659166596,31731.924644939794
+					29587.977340833404,31731.924644939794
+					28921.310674166736,32216.286330276704
+					28666.666666666668,33000.0
+					28921.310674166736,33783.7136697233
+					29587.977340833404,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,34268.0753550602
+					35078.689325833264,33783.7136697233
+					35333.333333333336,33000.0
+					35078.689325833264,32216.286330276704
+					34412.0226591666,31731.924644939794
+					33587.9773408334,31731.924644939794
+					32921.310674166736,32216.286330276704
+					32666.666666666668,33000.0
+					32921.310674166736,33783.7136697233
+					33587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,40268.0753550602
+					31078.689325833264,39783.7136697233
+					31333.333333333332,39000.0
+					31078.689325833264,38216.2863302767
+					30412.022659166596,37731.9246449398
+					29587.977340833404,37731.9246449398
+					28921.310674166736,38216.2863302767
+					28666.666666666668,39000.0
+					28921.310674166736,39783.7136697233
+					29587.977340833404,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,40268.0753550602
+					35078.689325833264,39783.7136697233
+					35333.333333333336,39000.0
+					35078.689325833264,38216.2863302767
+					34412.0226591666,37731.9246449398
+					33587.9773408334,37731.9246449398
+					32921.310674166736,38216.2863302767
+					32666.666666666668,39000.0
+					32921.310674166736,39783.7136697233
+					33587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,34268.0753550602
+					39078.689325833264,33783.7136697233
+					39333.333333333336,33000.0
+					39078.689325833264,32216.286330276704
+					38412.0226591666,31731.924644939794
+					37587.9773408334,31731.924644939794
+					36921.310674166736,32216.286330276704
+					36666.666666666664,33000.0
+					36921.310674166736,33783.7136697233
+					37587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,34268.0753550602
+					43078.689325833264,33783.7136697233
+					43333.333333333336,33000.0
+					43078.689325833264,32216.286330276704
+					42412.0226591666,31731.924644939794
+					41587.9773408334,31731.924644939794
+					40921.310674166736,32216.286330276704
+					40666.666666666664,33000.0
+					40921.310674166736,33783.7136697233
+					41587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,40268.0753550602
+					39078.689325833264,39783.7136697233
+					39333.333333333336,39000.0
+					39078.689325833264,38216.2863302767
+					38412.0226591666,37731.9246449398
+					37587.9773408334,37731.9246449398
+					36921.310674166736,38216.2863302767
+					36666.666666666664,39000.0
+					36921.310674166736,39783.7136697233
+					37587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,40268.0753550602
+					43078.689325833264,39783.7136697233
+					43333.333333333336,39000.0
+					43078.689325833264,38216.2863302767
+					42412.0226591666,37731.9246449398
+					41587.9773408334,37731.9246449398
+					40921.310674166736,38216.2863302767
+					40666.666666666664,39000.0
+					40921.310674166736,39783.7136697233
+					41587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,34268.0753550602
+					47078.689325833264,33783.7136697233
+					47333.333333333336,33000.0
+					47078.689325833264,32216.286330276704
+					46412.0226591666,31731.924644939794
+					45587.9773408334,31731.924644939794
+					44921.310674166736,32216.286330276704
+					44666.666666666664,33000.0
+					44921.310674166736,33783.7136697233
+					45587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,34268.0753550602
+					51078.689325833264,33783.7136697233
+					51333.333333333336,33000.0
+					51078.689325833264,32216.286330276704
+					50412.0226591666,31731.924644939794
+					49587.9773408334,31731.924644939794
+					48921.310674166736,32216.286330276704
+					48666.666666666664,33000.0
+					48921.310674166736,33783.7136697233
+					49587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,40268.0753550602
+					47078.689325833264,39783.7136697233
+					47333.333333333336,39000.0
+					47078.689325833264,38216.2863302767
+					46412.0226591666,37731.9246449398
+					45587.9773408334,37731.9246449398
+					44921.310674166736,38216.2863302767
+					44666.666666666664,39000.0
+					44921.310674166736,39783.7136697233
+					45587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,40268.0753550602
+					51078.689325833264,39783.7136697233
+					51333.333333333336,39000.0
+					51078.689325833264,38216.2863302767
+					50412.0226591666,37731.9246449398
+					49587.9773408334,37731.9246449398
+					48921.310674166736,38216.2863302767
+					48666.666666666664,39000.0
+					48921.310674166736,39783.7136697233
+					49587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,34268.0753550602
+					55078.689325833264,33783.7136697233
+					55333.333333333336,33000.0
+					55078.689325833264,32216.286330276704
+					54412.0226591666,31731.924644939794
+					53587.9773408334,31731.924644939794
+					52921.310674166736,32216.286330276704
+					52666.666666666664,33000.0
+					52921.310674166736,33783.7136697233
+					53587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,34268.0753550602
+					59078.689325833264,33783.7136697233
+					59333.333333333336,33000.0
+					59078.689325833264,32216.286330276704
+					58412.0226591666,31731.924644939794
+					57587.9773408334,31731.924644939794
+					56921.310674166736,32216.286330276704
+					56666.666666666664,33000.0
+					56921.310674166736,33783.7136697233
+					57587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,40268.0753550602
+					55078.689325833264,39783.7136697233
+					55333.333333333336,39000.0
+					55078.689325833264,38216.2863302767
+					54412.0226591666,37731.9246449398
+					53587.9773408334,37731.9246449398
+					52921.310674166736,38216.2863302767
+					52666.666666666664,39000.0
+					52921.310674166736,39783.7136697233
+					53587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,40268.0753550602
+					59078.689325833264,39783.7136697233
+					59333.333333333336,39000.0
+					59078.689325833264,38216.2863302767
+					58412.0226591666,37731.9246449398
+					57587.9773408334,37731.9246449398
+					56921.310674166736,38216.2863302767
+					56666.666666666664,39000.0
+					56921.310674166736,39783.7136697233
+					57587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,46268.0753550602
+					23078.689325833264,45783.7136697233
+					23333.333333333332,45000.0
+					23078.689325833264,44216.2863302767
+					22412.022659166596,43731.9246449398
+					21587.977340833404,43731.9246449398
+					20921.310674166736,44216.2863302767
+					20666.666666666668,45000.0
+					20921.310674166736,45783.7136697233
+					21587.977340833404,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,46268.0753550602
+					27078.689325833264,45783.7136697233
+					27333.333333333332,45000.0
+					27078.689325833264,44216.2863302767
+					26412.022659166596,43731.9246449398
+					25587.977340833404,43731.9246449398
+					24921.310674166736,44216.2863302767
+					24666.666666666668,45000.0
+					24921.310674166736,45783.7136697233
+					25587.977340833404,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,52268.0753550602
+					23078.689325833264,51783.7136697233
+					23333.333333333332,51000.0
+					23078.689325833264,50216.2863302767
+					22412.022659166596,49731.9246449398
+					21587.977340833404,49731.9246449398
+					20921.310674166736,50216.2863302767
+					20666.666666666668,51000.0
+					20921.310674166736,51783.7136697233
+					21587.977340833404,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,52268.0753550602
+					27078.689325833264,51783.7136697233
+					27333.333333333332,51000.0
+					27078.689325833264,50216.2863302767
+					26412.022659166596,49731.9246449398
+					25587.977340833404,49731.9246449398
+					24921.310674166736,50216.2863302767
+					24666.666666666668,51000.0
+					24921.310674166736,51783.7136697233
+					25587.977340833404,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,46268.0753550602
+					31078.689325833264,45783.7136697233
+					31333.333333333332,45000.0
+					31078.689325833264,44216.2863302767
+					30412.022659166596,43731.9246449398
+					29587.977340833404,43731.9246449398
+					28921.310674166736,44216.2863302767
+					28666.666666666668,45000.0
+					28921.310674166736,45783.7136697233
+					29587.977340833404,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,46268.0753550602
+					35078.689325833264,45783.7136697233
+					35333.333333333336,45000.0
+					35078.689325833264,44216.2863302767
+					34412.0226591666,43731.9246449398
+					33587.9773408334,43731.9246449398
+					32921.310674166736,44216.2863302767
+					32666.666666666668,45000.0
+					32921.310674166736,45783.7136697233
+					33587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,52268.0753550602
+					31078.689325833264,51783.7136697233
+					31333.333333333332,51000.0
+					31078.689325833264,50216.2863302767
+					30412.022659166596,49731.9246449398
+					29587.977340833404,49731.9246449398
+					28921.310674166736,50216.2863302767
+					28666.666666666668,51000.0
+					28921.310674166736,51783.7136697233
+					29587.977340833404,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,52268.0753550602
+					35078.689325833264,51783.7136697233
+					35333.333333333336,51000.0
+					35078.689325833264,50216.2863302767
+					34412.0226591666,49731.9246449398
+					33587.9773408334,49731.9246449398
+					32921.310674166736,50216.2863302767
+					32666.666666666668,51000.0
+					32921.310674166736,51783.7136697233
+					33587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,46268.0753550602
+					39078.689325833264,45783.7136697233
+					39333.333333333336,45000.0
+					39078.689325833264,44216.2863302767
+					38412.0226591666,43731.9246449398
+					37587.9773408334,43731.9246449398
+					36921.310674166736,44216.2863302767
+					36666.666666666664,45000.0
+					36921.310674166736,45783.7136697233
+					37587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,46268.0753550602
+					43078.689325833264,45783.7136697233
+					43333.333333333336,45000.0
+					43078.689325833264,44216.2863302767
+					42412.0226591666,43731.9246449398
+					41587.9773408334,43731.9246449398
+					40921.310674166736,44216.2863302767
+					40666.666666666664,45000.0
+					40921.310674166736,45783.7136697233
+					41587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,52268.0753550602
+					39078.689325833264,51783.7136697233
+					39333.333333333336,51000.0
+					39078.689325833264,50216.2863302767
+					38412.0226591666,49731.9246449398
+					37587.9773408334,49731.9246449398
+					36921.310674166736,50216.2863302767
+					36666.666666666664,51000.0
+					36921.310674166736,51783.7136697233
+					37587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,52268.0753550602
+					43078.689325833264,51783.7136697233
+					43333.333333333336,51000.0
+					43078.689325833264,50216.2863302767
+					42412.0226591666,49731.9246449398
+					41587.9773408334,49731.9246449398
+					40921.310674166736,50216.2863302767
+					40666.666666666664,51000.0
+					40921.310674166736,51783.7136697233
+					41587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,46268.0753550602
+					47078.689325833264,45783.7136697233
+					47333.333333333336,45000.0
+					47078.689325833264,44216.2863302767
+					46412.0226591666,43731.9246449398
+					45587.9773408334,43731.9246449398
+					44921.310674166736,44216.2863302767
+					44666.666666666664,45000.0
+					44921.310674166736,45783.7136697233
+					45587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,46268.0753550602
+					51078.689325833264,45783.7136697233
+					51333.333333333336,45000.0
+					51078.689325833264,44216.2863302767
+					50412.0226591666,43731.9246449398
+					49587.9773408334,43731.9246449398
+					48921.310674166736,44216.2863302767
+					48666.666666666664,45000.0
+					48921.310674166736,45783.7136697233
+					49587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,52268.0753550602
+					47078.689325833264,51783.7136697233
+					47333.333333333336,51000.0
+					47078.689325833264,50216.2863302767
+					46412.0226591666,49731.9246449398
+					45587.9773408334,49731.9246449398
+					44921.310674166736,50216.2863302767
+					44666.666666666664,51000.0
+					44921.310674166736,51783.7136697233
+					45587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,52268.0753550602
+					51078.689325833264,51783.7136697233
+					51333.333333333336,51000.0
+					51078.689325833264,50216.2863302767
+					50412.0226591666,49731.9246449398
+					49587.9773408334,49731.9246449398
+					48921.310674166736,50216.2863302767
+					48666.666666666664,51000.0
+					48921.310674166736,51783.7136697233
+					49587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,46268.0753550602
+					55078.689325833264,45783.7136697233
+					55333.333333333336,45000.0
+					55078.689325833264,44216.2863302767
+					54412.0226591666,43731.9246449398
+					53587.9773408334,43731.9246449398
+					52921.310674166736,44216.2863302767
+					52666.666666666664,45000.0
+					52921.310674166736,45783.7136697233
+					53587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,46268.0753550602
+					59078.689325833264,45783.7136697233
+					59333.333333333336,45000.0
+					59078.689325833264,44216.2863302767
+					58412.0226591666,43731.9246449398
+					57587.9773408334,43731.9246449398
+					56921.310674166736,44216.2863302767
+					56666.666666666664,45000.0
+					56921.310674166736,45783.7136697233
+					57587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,52268.0753550602
+					55078.689325833264,51783.7136697233
+					55333.333333333336,51000.0
+					55078.689325833264,50216.2863302767
+					54412.0226591666,49731.9246449398
+					53587.9773408334,49731.9246449398
+					52921.310674166736,50216.2863302767
+					52666.666666666664,51000.0
+					52921.310674166736,51783.7136697233
+					53587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,52268.0753550602
+					59078.689325833264,51783.7136697233
+					59333.333333333336,51000.0
+					59078.689325833264,50216.2863302767
+					58412.0226591666,49731.9246449398
+					57587.9773408334,49731.9246449398
+					56921.310674166736,50216.2863302767
+					56666.666666666664,51000.0
+					56921.310674166736,51783.7136697233
+					57587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,58268.0753550602
+					23078.689325833264,57783.7136697233
+					23333.333333333332,57000.0
+					23078.689325833264,56216.2863302767
+					22412.022659166596,55731.9246449398
+					21587.977340833404,55731.9246449398
+					20921.310674166736,56216.2863302767
+					20666.666666666668,57000.0
+					20921.310674166736,57783.7136697233
+					21587.977340833404,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,58268.0753550602
+					27078.689325833264,57783.7136697233
+					27333.333333333332,57000.0
+					27078.689325833264,56216.2863302767
+					26412.022659166596,55731.9246449398
+					25587.977340833404,55731.9246449398
+					24921.310674166736,56216.2863302767
+					24666.666666666668,57000.0
+					24921.310674166736,57783.7136697233
+					25587.977340833404,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,64268.0753550602
+					23078.689325833264,63783.7136697233
+					23333.333333333332,63000.0
+					23078.689325833264,62216.2863302767
+					22412.022659166596,61731.9246449398
+					21587.977340833404,61731.9246449398
+					20921.310674166736,62216.2863302767
+					20666.666666666668,63000.0
+					20921.310674166736,63783.7136697233
+					21587.977340833404,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,64268.0753550602
+					27078.689325833264,63783.7136697233
+					27333.333333333332,63000.0
+					27078.689325833264,62216.2863302767
+					26412.022659166596,61731.9246449398
+					25587.977340833404,61731.9246449398
+					24921.310674166736,62216.2863302767
+					24666.666666666668,63000.0
+					24921.310674166736,63783.7136697233
+					25587.977340833404,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,58268.0753550602
+					31078.689325833264,57783.7136697233
+					31333.333333333332,57000.0
+					31078.689325833264,56216.2863302767
+					30412.022659166596,55731.9246449398
+					29587.977340833404,55731.9246449398
+					28921.310674166736,56216.2863302767
+					28666.666666666668,57000.0
+					28921.310674166736,57783.7136697233
+					29587.977340833404,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,58268.0753550602
+					35078.689325833264,57783.7136697233
+					35333.333333333336,57000.0
+					35078.689325833264,56216.2863302767
+					34412.0226591666,55731.9246449398
+					33587.9773408334,55731.9246449398
+					32921.310674166736,56216.2863302767
+					32666.666666666668,57000.0
+					32921.310674166736,57783.7136697233
+					33587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,64268.0753550602
+					31078.689325833264,63783.7136697233
+					31333.333333333332,63000.0
+					31078.689325833264,62216.2863302767
+					30412.022659166596,61731.9246449398
+					29587.977340833404,61731.9246449398
+					28921.310674166736,62216.2863302767
+					28666.666666666668,63000.0
+					28921.310674166736,63783.7136697233
+					29587.977340833404,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,64268.0753550602
+					35078.689325833264,63783.7136697233
+					35333.333333333336,63000.0
+					35078.689325833264,62216.2863302767
+					34412.0226591666,61731.9246449398
+					33587.9773408334,61731.9246449398
+					32921.310674166736,62216.2863302767
+					32666.666666666668,63000.0
+					32921.310674166736,63783.7136697233
+					33587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,58268.0753550602
+					39078.689325833264,57783.7136697233
+					39333.333333333336,57000.0
+					39078.689325833264,56216.2863302767
+					38412.0226591666,55731.9246449398
+					37587.9773408334,55731.9246449398
+					36921.310674166736,56216.2863302767
+					36666.666666666664,57000.0
+					36921.310674166736,57783.7136697233
+					37587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,58268.0753550602
+					43078.689325833264,57783.7136697233
+					43333.333333333336,57000.0
+					43078.689325833264,56216.2863302767
+					42412.0226591666,55731.9246449398
+					41587.9773408334,55731.9246449398
+					40921.310674166736,56216.2863302767
+					40666.666666666664,57000.0
+					40921.310674166736,57783.7136697233
+					41587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,64268.0753550602
+					39078.689325833264,63783.7136697233
+					39333.333333333336,63000.0
+					39078.689325833264,62216.2863302767
+					38412.0226591666,61731.9246449398
+					37587.9773408334,61731.9246449398
+					36921.310674166736,62216.2863302767
+					36666.666666666664,63000.0
+					36921.310674166736,63783.7136697233
+					37587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,64268.0753550602
+					43078.689325833264,63783.7136697233
+					43333.333333333336,63000.0
+					43078.689325833264,62216.2863302767
+					42412.0226591666,61731.9246449398
+					41587.9773408334,61731.9246449398
+					40921.310674166736,62216.2863302767
+					40666.666666666664,63000.0
+					40921.310674166736,63783.7136697233
+					41587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,58268.0753550602
+					47078.689325833264,57783.7136697233
+					47333.333333333336,57000.0
+					47078.689325833264,56216.2863302767
+					46412.0226591666,55731.9246449398
+					45587.9773408334,55731.9246449398
+					44921.310674166736,56216.2863302767
+					44666.666666666664,57000.0
+					44921.310674166736,57783.7136697233
+					45587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,58268.0753550602
+					51078.689325833264,57783.7136697233
+					51333.333333333336,57000.0
+					51078.689325833264,56216.2863302767
+					50412.0226591666,55731.9246449398
+					49587.9773408334,55731.9246449398
+					48921.310674166736,56216.2863302767
+					48666.666666666664,57000.0
+					48921.310674166736,57783.7136697233
+					49587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,64268.0753550602
+					47078.689325833264,63783.7136697233
+					47333.333333333336,63000.0
+					47078.689325833264,62216.2863302767
+					46412.0226591666,61731.9246449398
+					45587.9773408334,61731.9246449398
+					44921.310674166736,62216.2863302767
+					44666.666666666664,63000.0
+					44921.310674166736,63783.7136697233
+					45587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,64268.0753550602
+					51078.689325833264,63783.7136697233
+					51333.333333333336,63000.0
+					51078.689325833264,62216.2863302767
+					50412.0226591666,61731.9246449398
+					49587.9773408334,61731.9246449398
+					48921.310674166736,62216.2863302767
+					48666.666666666664,63000.0
+					48921.310674166736,63783.7136697233
+					49587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,58268.0753550602
+					55078.689325833264,57783.7136697233
+					55333.333333333336,57000.0
+					55078.689325833264,56216.2863302767
+					54412.0226591666,55731.9246449398
+					53587.9773408334,55731.9246449398
+					52921.310674166736,56216.2863302767
+					52666.666666666664,57000.0
+					52921.310674166736,57783.7136697233
+					53587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,58268.0753550602
+					59078.689325833264,57783.7136697233
+					59333.333333333336,57000.0
+					59078.689325833264,56216.2863302767
+					58412.0226591666,55731.9246449398
+					57587.9773408334,55731.9246449398
+					56921.310674166736,56216.2863302767
+					56666.666666666664,57000.0
+					56921.310674166736,57783.7136697233
+					57587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,64268.0753550602
+					55078.689325833264,63783.7136697233
+					55333.333333333336,63000.0
+					55078.689325833264,62216.2863302767
+					54412.0226591666,61731.9246449398
+					53587.9773408334,61731.9246449398
+					52921.310674166736,62216.2863302767
+					52666.666666666664,63000.0
+					52921.310674166736,63783.7136697233
+					53587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,64268.0753550602
+					59078.689325833264,63783.7136697233
+					59333.333333333336,63000.0
+					59078.689325833264,62216.2863302767
+					58412.0226591666,61731.9246449398
+					57587.9773408334,61731.9246449398
+					56921.310674166736,62216.2863302767
+					56666.666666666664,63000.0
+					56921.310674166736,63783.7136697233
+					57587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,70268.07535506021
+					23078.689325833264,69783.71366972329
+					23333.333333333332,69000.0
+					23078.689325833264,68216.28633027671
+					22412.022659166596,67731.92464493979
+					21587.977340833404,67731.92464493979
+					20921.310674166736,68216.28633027671
+					20666.666666666668,69000.0
+					20921.310674166736,69783.71366972329
+					21587.977340833404,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,70268.07535506021
+					27078.689325833264,69783.71366972329
+					27333.333333333332,69000.0
+					27078.689325833264,68216.28633027671
+					26412.022659166596,67731.92464493979
+					25587.977340833404,67731.92464493979
+					24921.310674166736,68216.28633027671
+					24666.666666666668,69000.0
+					24921.310674166736,69783.71366972329
+					25587.977340833404,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,76268.07535506021
+					23078.689325833264,75783.71366972329
+					23333.333333333332,75000.0
+					23078.689325833264,74216.28633027671
+					22412.022659166596,73731.92464493979
+					21587.977340833404,73731.92464493979
+					20921.310674166736,74216.28633027671
+					20666.666666666668,75000.0
+					20921.310674166736,75783.71366972329
+					21587.977340833404,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,76268.07535506021
+					27078.689325833264,75783.71366972329
+					27333.333333333332,75000.0
+					27078.689325833264,74216.28633027671
+					26412.022659166596,73731.92464493979
+					25587.977340833404,73731.92464493979
+					24921.310674166736,74216.28633027671
+					24666.666666666668,75000.0
+					24921.310674166736,75783.71366972329
+					25587.977340833404,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,70268.07535506021
+					31078.689325833264,69783.71366972329
+					31333.333333333332,69000.0
+					31078.689325833264,68216.28633027671
+					30412.022659166596,67731.92464493979
+					29587.977340833404,67731.92464493979
+					28921.310674166736,68216.28633027671
+					28666.666666666668,69000.0
+					28921.310674166736,69783.71366972329
+					29587.977340833404,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,70268.07535506021
+					35078.689325833264,69783.71366972329
+					35333.333333333336,69000.0
+					35078.689325833264,68216.28633027671
+					34412.0226591666,67731.92464493979
+					33587.9773408334,67731.92464493979
+					32921.310674166736,68216.28633027671
+					32666.666666666668,69000.0
+					32921.310674166736,69783.71366972329
+					33587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,76268.07535506021
+					31078.689325833264,75783.71366972329
+					31333.333333333332,75000.0
+					31078.689325833264,74216.28633027671
+					30412.022659166596,73731.92464493979
+					29587.977340833404,73731.92464493979
+					28921.310674166736,74216.28633027671
+					28666.666666666668,75000.0
+					28921.310674166736,75783.71366972329
+					29587.977340833404,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,76268.07535506021
+					35078.689325833264,75783.71366972329
+					35333.333333333336,75000.0
+					35078.689325833264,74216.28633027671
+					34412.0226591666,73731.92464493979
+					33587.9773408334,73731.92464493979
+					32921.310674166736,74216.28633027671
+					32666.666666666668,75000.0
+					32921.310674166736,75783.71366972329
+					33587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,70268.07535506021
+					39078.689325833264,69783.71366972329
+					39333.333333333336,69000.0
+					39078.689325833264,68216.28633027671
+					38412.0226591666,67731.92464493979
+					37587.9773408334,67731.92464493979
+					36921.310674166736,68216.28633027671
+					36666.666666666664,69000.0
+					36921.310674166736,69783.71366972329
+					37587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,70268.07535506021
+					43078.689325833264,69783.71366972329
+					43333.333333333336,69000.0
+					43078.689325833264,68216.28633027671
+					42412.0226591666,67731.92464493979
+					41587.9773408334,67731.92464493979
+					40921.310674166736,68216.28633027671
+					40666.666666666664,69000.0
+					40921.310674166736,69783.71366972329
+					41587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,76268.07535506021
+					39078.689325833264,75783.71366972329
+					39333.333333333336,75000.0
+					39078.689325833264,74216.28633027671
+					38412.0226591666,73731.92464493979
+					37587.9773408334,73731.92464493979
+					36921.310674166736,74216.28633027671
+					36666.666666666664,75000.0
+					36921.310674166736,75783.71366972329
+					37587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,76268.07535506021
+					43078.689325833264,75783.71366972329
+					43333.333333333336,75000.0
+					43078.689325833264,74216.28633027671
+					42412.0226591666,73731.92464493979
+					41587.9773408334,73731.92464493979
+					40921.310674166736,74216.28633027671
+					40666.666666666664,75000.0
+					40921.310674166736,75783.71366972329
+					41587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,70268.07535506021
+					47078.689325833264,69783.71366972329
+					47333.333333333336,69000.0
+					47078.689325833264,68216.28633027671
+					46412.0226591666,67731.92464493979
+					45587.9773408334,67731.92464493979
+					44921.310674166736,68216.28633027671
+					44666.666666666664,69000.0
+					44921.310674166736,69783.71366972329
+					45587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,70268.07535506021
+					51078.689325833264,69783.71366972329
+					51333.333333333336,69000.0
+					51078.689325833264,68216.28633027671
+					50412.0226591666,67731.92464493979
+					49587.9773408334,67731.92464493979
+					48921.310674166736,68216.28633027671
+					48666.666666666664,69000.0
+					48921.310674166736,69783.71366972329
+					49587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,76268.07535506021
+					47078.689325833264,75783.71366972329
+					47333.333333333336,75000.0
+					47078.689325833264,74216.28633027671
+					46412.0226591666,73731.92464493979
+					45587.9773408334,73731.92464493979
+					44921.310674166736,74216.28633027671
+					44666.666666666664,75000.0
+					44921.310674166736,75783.71366972329
+					45587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,76268.07535506021
+					51078.689325833264,75783.71366972329
+					51333.333333333336,75000.0
+					51078.689325833264,74216.28633027671
+					50412.0226591666,73731.92464493979
+					49587.9773408334,73731.92464493979
+					48921.310674166736,74216.28633027671
+					48666.666666666664,75000.0
+					48921.310674166736,75783.71366972329
+					49587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,70268.07535506021
+					55078.689325833264,69783.71366972329
+					55333.333333333336,69000.0
+					55078.689325833264,68216.28633027671
+					54412.0226591666,67731.92464493979
+					53587.9773408334,67731.92464493979
+					52921.310674166736,68216.28633027671
+					52666.666666666664,69000.0
+					52921.310674166736,69783.71366972329
+					53587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,70268.07535506021
+					59078.689325833264,69783.71366972329
+					59333.333333333336,69000.0
+					59078.689325833264,68216.28633027671
+					58412.0226591666,67731.92464493979
+					57587.9773408334,67731.92464493979
+					56921.310674166736,68216.28633027671
+					56666.666666666664,69000.0
+					56921.310674166736,69783.71366972329
+					57587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,76268.07535506021
+					55078.689325833264,75783.71366972329
+					55333.333333333336,75000.0
+					55078.689325833264,74216.28633027671
+					54412.0226591666,73731.92464493979
+					53587.9773408334,73731.92464493979
+					52921.310674166736,74216.28633027671
+					52666.666666666664,75000.0
+					52921.310674166736,75783.71366972329
+					53587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,76268.07535506021
+					59078.689325833264,75783.71366972329
+					59333.333333333336,75000.0
+					59078.689325833264,74216.28633027671
+					58412.0226591666,73731.92464493979
+					57587.9773408334,73731.92464493979
+					56921.310674166736,74216.28633027671
+					56666.666666666664,75000.0
+					56921.310674166736,75783.71366972329
+					57587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,82268.07535506021
+					23078.689325833264,81783.71366972329
+					23333.333333333332,81000.0
+					23078.689325833264,80216.28633027671
+					22412.022659166596,79731.92464493979
+					21587.977340833404,79731.92464493979
+					20921.310674166736,80216.28633027671
+					20666.666666666668,81000.0
+					20921.310674166736,81783.71366972329
+					21587.977340833404,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,82268.07535506021
+					27078.689325833264,81783.71366972329
+					27333.333333333332,81000.0
+					27078.689325833264,80216.28633027671
+					26412.022659166596,79731.92464493979
+					25587.977340833404,79731.92464493979
+					24921.310674166736,80216.28633027671
+					24666.666666666668,81000.0
+					24921.310674166736,81783.71366972329
+					25587.977340833404,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,88268.07535506021
+					23078.689325833264,87783.71366972329
+					23333.333333333332,87000.0
+					23078.689325833264,86216.28633027671
+					22412.022659166596,85731.92464493979
+					21587.977340833404,85731.92464493979
+					20921.310674166736,86216.28633027671
+					20666.666666666668,87000.0
+					20921.310674166736,87783.71366972329
+					21587.977340833404,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,88268.07535506021
+					27078.689325833264,87783.71366972329
+					27333.333333333332,87000.0
+					27078.689325833264,86216.28633027671
+					26412.022659166596,85731.92464493979
+					25587.977340833404,85731.92464493979
+					24921.310674166736,86216.28633027671
+					24666.666666666668,87000.0
+					24921.310674166736,87783.71366972329
+					25587.977340833404,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,82268.07535506021
+					31078.689325833264,81783.71366972329
+					31333.333333333332,81000.0
+					31078.689325833264,80216.28633027671
+					30412.022659166596,79731.92464493979
+					29587.977340833404,79731.92464493979
+					28921.310674166736,80216.28633027671
+					28666.666666666668,81000.0
+					28921.310674166736,81783.71366972329
+					29587.977340833404,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,82268.07535506021
+					35078.689325833264,81783.71366972329
+					35333.333333333336,81000.0
+					35078.689325833264,80216.28633027671
+					34412.0226591666,79731.92464493979
+					33587.9773408334,79731.92464493979
+					32921.310674166736,80216.28633027671
+					32666.666666666668,81000.0
+					32921.310674166736,81783.71366972329
+					33587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,88268.07535506021
+					31078.689325833264,87783.71366972329
+					31333.333333333332,87000.0
+					31078.689325833264,86216.28633027671
+					30412.022659166596,85731.92464493979
+					29587.977340833404,85731.92464493979
+					28921.310674166736,86216.28633027671
+					28666.666666666668,87000.0
+					28921.310674166736,87783.71366972329
+					29587.977340833404,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,88268.07535506021
+					35078.689325833264,87783.71366972329
+					35333.333333333336,87000.0
+					35078.689325833264,86216.28633027671
+					34412.0226591666,85731.92464493979
+					33587.9773408334,85731.92464493979
+					32921.310674166736,86216.28633027671
+					32666.666666666668,87000.0
+					32921.310674166736,87783.71366972329
+					33587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,82268.07535506021
+					39078.689325833264,81783.71366972329
+					39333.333333333336,81000.0
+					39078.689325833264,80216.28633027671
+					38412.0226591666,79731.92464493979
+					37587.9773408334,79731.92464493979
+					36921.310674166736,80216.28633027671
+					36666.666666666664,81000.0
+					36921.310674166736,81783.71366972329
+					37587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,82268.07535506021
+					43078.689325833264,81783.71366972329
+					43333.333333333336,81000.0
+					43078.689325833264,80216.28633027671
+					42412.0226591666,79731.92464493979
+					41587.9773408334,79731.92464493979
+					40921.310674166736,80216.28633027671
+					40666.666666666664,81000.0
+					40921.310674166736,81783.71366972329
+					41587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,88268.07535506021
+					39078.689325833264,87783.71366972329
+					39333.333333333336,87000.0
+					39078.689325833264,86216.28633027671
+					38412.0226591666,85731.92464493979
+					37587.9773408334,85731.92464493979
+					36921.310674166736,86216.28633027671
+					36666.666666666664,87000.0
+					36921.310674166736,87783.71366972329
+					37587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,88268.07535506021
+					43078.689325833264,87783.71366972329
+					43333.333333333336,87000.0
+					43078.689325833264,86216.28633027671
+					42412.0226591666,85731.92464493979
+					41587.9773408334,85731.92464493979
+					40921.310674166736,86216.28633027671
+					40666.666666666664,87000.0
+					40921.310674166736,87783.71366972329
+					41587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,82268.07535506021
+					47078.689325833264,81783.71366972329
+					47333.333333333336,81000.0
+					47078.689325833264,80216.28633027671
+					46412.0226591666,79731.92464493979
+					45587.9773408334,79731.92464493979
+					44921.310674166736,80216.28633027671
+					44666.666666666664,81000.0
+					44921.310674166736,81783.71366972329
+					45587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,82268.07535506021
+					51078.689325833264,81783.71366972329
+					51333.333333333336,81000.0
+					51078.689325833264,80216.28633027671
+					50412.0226591666,79731.92464493979
+					49587.9773408334,79731.92464493979
+					48921.310674166736,80216.28633027671
+					48666.666666666664,81000.0
+					48921.310674166736,81783.71366972329
+					49587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,88268.07535506021
+					47078.689325833264,87783.71366972329
+					47333.333333333336,87000.0
+					47078.689325833264,86216.28633027671
+					46412.0226591666,85731.92464493979
+					45587.9773408334,85731.92464493979
+					44921.310674166736,86216.28633027671
+					44666.666666666664,87000.0
+					44921.310674166736,87783.71366972329
+					45587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,88268.07535506021
+					51078.689325833264,87783.71366972329
+					51333.333333333336,87000.0
+					51078.689325833264,86216.28633027671
+					50412.0226591666,85731.92464493979
+					49587.9773408334,85731.92464493979
+					48921.310674166736,86216.28633027671
+					48666.666666666664,87000.0
+					48921.310674166736,87783.71366972329
+					49587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,82268.07535506021
+					55078.689325833264,81783.71366972329
+					55333.333333333336,81000.0
+					55078.689325833264,80216.28633027671
+					54412.0226591666,79731.92464493979
+					53587.9773408334,79731.92464493979
+					52921.310674166736,80216.28633027671
+					52666.666666666664,81000.0
+					52921.310674166736,81783.71366972329
+					53587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,82268.07535506021
+					59078.689325833264,81783.71366972329
+					59333.333333333336,81000.0
+					59078.689325833264,80216.28633027671
+					58412.0226591666,79731.92464493979
+					57587.9773408334,79731.92464493979
+					56921.310674166736,80216.28633027671
+					56666.666666666664,81000.0
+					56921.310674166736,81783.71366972329
+					57587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,88268.07535506021
+					55078.689325833264,87783.71366972329
+					55333.333333333336,87000.0
+					55078.689325833264,86216.28633027671
+					54412.0226591666,85731.92464493979
+					53587.9773408334,85731.92464493979
+					52921.310674166736,86216.28633027671
+					52666.666666666664,87000.0
+					52921.310674166736,87783.71366972329
+					53587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,88268.07535506021
+					59078.689325833264,87783.71366972329
+					59333.333333333336,87000.0
+					59078.689325833264,86216.28633027671
+					58412.0226591666,85731.92464493979
+					57587.9773408334,85731.92464493979
+					56921.310674166736,86216.28633027671
+					56666.666666666664,87000.0
+					56921.310674166736,87783.71366972329
+					57587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+</MultiGeometry>

Added: packages/jts/branches/upstream/current/jtsio/test/data/multipoints.xml
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/data/multipoints.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/data/multipoints.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,580 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+</MultiGeometry>

Added: packages/jts/branches/upstream/current/jtsio/test/data/multipolygons.xml
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/data/multipolygons.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/data/multipolygons.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,8380 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,34333.333333333336
+							22783.713669723296,34078.689325833264
+							23268.075355060206,33412.0226591666
+							23268.075355060206,32587.977340833404
+							22783.713669723296,31921.310674166736
+							22000.0,31666.666666666668
+							21216.286330276704,31921.310674166736
+							20731.924644939794,32587.977340833404
+							20731.924644939794,33412.0226591666
+							21216.286330276704,34078.689325833264
+							22000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22669.13060635886,33743.14482547739
+							22034.8994967025,33999.390827019095 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22998.629534754575,33052.33595624295
+							22731.35370161917,33681.9983600625 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22743.144825477393,32330.869393641144
+							22999.390827019095,32965.1005032975 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22052.335956242943,32001.370465245425
+							22681.9983600625,32268.64629838083 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21330.86939364114,32256.855174522607
+							21965.1005032975,32000.609172980905 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21001.370465245425,32947.66404375705
+							21268.64629838083,32318.0016399375 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21256.855174522607,33669.130606358856
+							21000.609172980905,33034.8994967025 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21947.664043757057,33998.629534754575
+							21318.0016399375,33731.35370161917 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,34333.333333333336
+							26783.713669723296,34078.689325833264
+							27268.075355060206,33412.0226591666
+							27268.075355060206,32587.977340833404
+							26783.713669723296,31921.310674166736
+							26000.0,31666.666666666668
+							25216.286330276704,31921.310674166736
+							24731.924644939794,32587.977340833404
+							24731.924644939794,33412.0226591666
+							25216.286330276704,34078.689325833264
+							26000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26669.13060635886,33743.14482547739
+							26034.8994967025,33999.390827019095 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26998.629534754575,33052.33595624295
+							26731.35370161917,33681.9983600625 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26743.144825477393,32330.869393641144
+							26999.390827019095,32965.1005032975 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26052.335956242943,32001.370465245425
+							26681.9983600625,32268.64629838083 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25330.86939364114,32256.855174522607
+							25965.1005032975,32000.609172980905 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25001.370465245425,32947.66404375705
+							25268.64629838083,32318.0016399375 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25256.855174522607,33669.130606358856
+							25000.609172980905,33034.8994967025 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25947.664043757057,33998.629534754575
+							25318.0016399375,33731.35370161917 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,40333.333333333336
+							22783.713669723296,40078.689325833264
+							23268.075355060206,39412.0226591666
+							23268.075355060206,38587.9773408334
+							22783.713669723296,37921.310674166736
+							22000.0,37666.666666666664
+							21216.286330276704,37921.310674166736
+							20731.924644939794,38587.9773408334
+							20731.924644939794,39412.0226591666
+							21216.286330276704,40078.689325833264
+							22000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22669.13060635886,39743.14482547739
+							22034.8994967025,39999.390827019095 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22998.629534754575,39052.33595624295
+							22731.35370161917,39681.9983600625 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22743.144825477393,38330.869393641144
+							22999.390827019095,38965.1005032975 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22052.335956242943,38001.370465245425
+							22681.9983600625,38268.64629838083 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21330.86939364114,38256.85517452261
+							21965.1005032975,38000.609172980905 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21001.370465245425,38947.66404375705
+							21268.64629838083,38318.0016399375 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21256.855174522607,39669.130606358856
+							21000.609172980905,39034.8994967025 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21947.664043757057,39998.629534754575
+							21318.0016399375,39731.35370161917 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,40333.333333333336
+							26783.713669723296,40078.689325833264
+							27268.075355060206,39412.0226591666
+							27268.075355060206,38587.9773408334
+							26783.713669723296,37921.310674166736
+							26000.0,37666.666666666664
+							25216.286330276704,37921.310674166736
+							24731.924644939794,38587.9773408334
+							24731.924644939794,39412.0226591666
+							25216.286330276704,40078.689325833264
+							26000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26669.13060635886,39743.14482547739
+							26034.8994967025,39999.390827019095 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26998.629534754575,39052.33595624295
+							26731.35370161917,39681.9983600625 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26743.144825477393,38330.869393641144
+							26999.390827019095,38965.1005032975 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26052.335956242943,38001.370465245425
+							26681.9983600625,38268.64629838083 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25330.86939364114,38256.85517452261
+							25965.1005032975,38000.609172980905 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25001.370465245425,38947.66404375705
+							25268.64629838083,38318.0016399375 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25256.855174522607,39669.130606358856
+							25000.609172980905,39034.8994967025 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25947.664043757057,39998.629534754575
+							25318.0016399375,39731.35370161917 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,34333.333333333336
+							30783.713669723296,34078.689325833264
+							31268.075355060206,33412.0226591666
+							31268.075355060206,32587.977340833404
+							30783.713669723296,31921.310674166736
+							30000.0,31666.666666666668
+							29216.286330276704,31921.310674166736
+							28731.924644939794,32587.977340833404
+							28731.924644939794,33412.0226591666
+							29216.286330276704,34078.689325833264
+							30000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30669.13060635886,33743.14482547739
+							30034.8994967025,33999.390827019095 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30998.629534754575,33052.33595624295
+							30731.35370161917,33681.9983600625 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30743.144825477393,32330.869393641144
+							30999.390827019095,32965.1005032975 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30052.335956242943,32001.370465245425
+							30681.9983600625,32268.64629838083 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29330.86939364114,32256.855174522607
+							29965.1005032975,32000.609172980905 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29001.370465245425,32947.66404375705
+							29268.64629838083,32318.0016399375 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29256.855174522607,33669.130606358856
+							29000.609172980905,33034.8994967025 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29947.664043757057,33998.629534754575
+							29318.0016399375,33731.35370161917 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,34333.333333333336
+							34783.7136697233,34078.689325833264
+							35268.0753550602,33412.0226591666
+							35268.0753550602,32587.977340833404
+							34783.7136697233,31921.310674166736
+							34000.0,31666.666666666668
+							33216.2863302767,31921.310674166736
+							32731.924644939794,32587.977340833404
+							32731.924644939794,33412.0226591666
+							33216.2863302767,34078.689325833264
+							34000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34669.130606358856,33743.14482547739
+							34034.8994967025,33999.390827019095 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34998.629534754575,33052.33595624295
+							34731.35370161917,33681.9983600625 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34743.14482547739,32330.869393641144
+							34999.390827019095,32965.1005032975 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34052.33595624295,32001.370465245425
+							34681.9983600625,32268.64629838083 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33330.869393641144,32256.855174522607
+							33965.1005032975,32000.609172980905 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33001.370465245425,32947.66404375705
+							33268.64629838083,32318.0016399375 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33256.85517452261,33669.130606358856
+							33000.609172980905,33034.8994967025 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33947.66404375705,33998.629534754575
+							33318.0016399375,33731.35370161917 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,40333.333333333336
+							30783.713669723296,40078.689325833264
+							31268.075355060206,39412.0226591666
+							31268.075355060206,38587.9773408334
+							30783.713669723296,37921.310674166736
+							30000.0,37666.666666666664
+							29216.286330276704,37921.310674166736
+							28731.924644939794,38587.9773408334
+							28731.924644939794,39412.0226591666
+							29216.286330276704,40078.689325833264
+							30000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30669.13060635886,39743.14482547739
+							30034.8994967025,39999.390827019095 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30998.629534754575,39052.33595624295
+							30731.35370161917,39681.9983600625 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30743.144825477393,38330.869393641144
+							30999.390827019095,38965.1005032975 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30052.335956242943,38001.370465245425
+							30681.9983600625,38268.64629838083 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29330.86939364114,38256.85517452261
+							29965.1005032975,38000.609172980905 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29001.370465245425,38947.66404375705
+							29268.64629838083,38318.0016399375 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29256.855174522607,39669.130606358856
+							29000.609172980905,39034.8994967025 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29947.664043757057,39998.629534754575
+							29318.0016399375,39731.35370161917 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,40333.333333333336
+							34783.7136697233,40078.689325833264
+							35268.0753550602,39412.0226591666
+							35268.0753550602,38587.9773408334
+							34783.7136697233,37921.310674166736
+							34000.0,37666.666666666664
+							33216.2863302767,37921.310674166736
+							32731.924644939794,38587.9773408334
+							32731.924644939794,39412.0226591666
+							33216.2863302767,40078.689325833264
+							34000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34669.130606358856,39743.14482547739
+							34034.8994967025,39999.390827019095 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34998.629534754575,39052.33595624295
+							34731.35370161917,39681.9983600625 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34743.14482547739,38330.869393641144
+							34999.390827019095,38965.1005032975 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34052.33595624295,38001.370465245425
+							34681.9983600625,38268.64629838083 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33330.869393641144,38256.85517452261
+							33965.1005032975,38000.609172980905 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33001.370465245425,38947.66404375705
+							33268.64629838083,38318.0016399375 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33256.85517452261,39669.130606358856
+							33000.609172980905,39034.8994967025 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33947.66404375705,39998.629534754575
+							33318.0016399375,39731.35370161917 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,34333.333333333336
+							38783.7136697233,34078.689325833264
+							39268.0753550602,33412.0226591666
+							39268.0753550602,32587.977340833404
+							38783.7136697233,31921.310674166736
+							38000.0,31666.666666666668
+							37216.2863302767,31921.310674166736
+							36731.9246449398,32587.977340833404
+							36731.9246449398,33412.0226591666
+							37216.2863302767,34078.689325833264
+							38000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38669.130606358856,33743.14482547739
+							38034.8994967025,33999.390827019095 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38998.629534754575,33052.33595624295
+							38731.35370161917,33681.9983600625 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38743.14482547739,32330.869393641144
+							38999.390827019095,32965.1005032975 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38052.33595624295,32001.370465245425
+							38681.9983600625,32268.64629838083 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37330.869393641144,32256.855174522607
+							37965.1005032975,32000.609172980905 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37001.370465245425,32947.66404375705
+							37268.64629838083,32318.0016399375 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37256.85517452261,33669.130606358856
+							37000.609172980905,33034.8994967025 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37947.66404375705,33998.629534754575
+							37318.0016399375,33731.35370161917 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,34333.333333333336
+							42783.7136697233,34078.689325833264
+							43268.0753550602,33412.0226591666
+							43268.0753550602,32587.977340833404
+							42783.7136697233,31921.310674166736
+							42000.0,31666.666666666668
+							41216.2863302767,31921.310674166736
+							40731.9246449398,32587.977340833404
+							40731.9246449398,33412.0226591666
+							41216.2863302767,34078.689325833264
+							42000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42669.130606358856,33743.14482547739
+							42034.8994967025,33999.390827019095 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42998.629534754575,33052.33595624295
+							42731.35370161917,33681.9983600625 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42743.14482547739,32330.869393641144
+							42999.390827019095,32965.1005032975 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42052.33595624295,32001.370465245425
+							42681.9983600625,32268.64629838083 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41330.869393641144,32256.855174522607
+							41965.1005032975,32000.609172980905 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41001.370465245425,32947.66404375705
+							41268.64629838083,32318.0016399375 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41256.85517452261,33669.130606358856
+							41000.609172980905,33034.8994967025 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41947.66404375705,33998.629534754575
+							41318.0016399375,33731.35370161917 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,40333.333333333336
+							38783.7136697233,40078.689325833264
+							39268.0753550602,39412.0226591666
+							39268.0753550602,38587.9773408334
+							38783.7136697233,37921.310674166736
+							38000.0,37666.666666666664
+							37216.2863302767,37921.310674166736
+							36731.9246449398,38587.9773408334
+							36731.9246449398,39412.0226591666
+							37216.2863302767,40078.689325833264
+							38000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38669.130606358856,39743.14482547739
+							38034.8994967025,39999.390827019095 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38998.629534754575,39052.33595624295
+							38731.35370161917,39681.9983600625 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38743.14482547739,38330.869393641144
+							38999.390827019095,38965.1005032975 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38052.33595624295,38001.370465245425
+							38681.9983600625,38268.64629838083 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37330.869393641144,38256.85517452261
+							37965.1005032975,38000.609172980905 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37001.370465245425,38947.66404375705
+							37268.64629838083,38318.0016399375 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37256.85517452261,39669.130606358856
+							37000.609172980905,39034.8994967025 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37947.66404375705,39998.629534754575
+							37318.0016399375,39731.35370161917 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,40333.333333333336
+							42783.7136697233,40078.689325833264
+							43268.0753550602,39412.0226591666
+							43268.0753550602,38587.9773408334
+							42783.7136697233,37921.310674166736
+							42000.0,37666.666666666664
+							41216.2863302767,37921.310674166736
+							40731.9246449398,38587.9773408334
+							40731.9246449398,39412.0226591666
+							41216.2863302767,40078.689325833264
+							42000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42669.130606358856,39743.14482547739
+							42034.8994967025,39999.390827019095 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42998.629534754575,39052.33595624295
+							42731.35370161917,39681.9983600625 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42743.14482547739,38330.869393641144
+							42999.390827019095,38965.1005032975 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42052.33595624295,38001.370465245425
+							42681.9983600625,38268.64629838083 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41330.869393641144,38256.85517452261
+							41965.1005032975,38000.609172980905 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41001.370465245425,38947.66404375705
+							41268.64629838083,38318.0016399375 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41256.85517452261,39669.130606358856
+							41000.609172980905,39034.8994967025 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41947.66404375705,39998.629534754575
+							41318.0016399375,39731.35370161917 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,34333.333333333336
+							46783.7136697233,34078.689325833264
+							47268.0753550602,33412.0226591666
+							47268.0753550602,32587.977340833404
+							46783.7136697233,31921.310674166736
+							46000.0,31666.666666666668
+							45216.2863302767,31921.310674166736
+							44731.9246449398,32587.977340833404
+							44731.9246449398,33412.0226591666
+							45216.2863302767,34078.689325833264
+							46000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46669.130606358856,33743.14482547739
+							46034.8994967025,33999.390827019095 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46998.629534754575,33052.33595624295
+							46731.35370161917,33681.9983600625 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46743.14482547739,32330.869393641144
+							46999.390827019095,32965.1005032975 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46052.33595624295,32001.370465245425
+							46681.9983600625,32268.64629838083 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45330.869393641144,32256.855174522607
+							45965.1005032975,32000.609172980905 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45001.370465245425,32947.66404375705
+							45268.64629838083,32318.0016399375 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45256.85517452261,33669.130606358856
+							45000.609172980905,33034.8994967025 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45947.66404375705,33998.629534754575
+							45318.0016399375,33731.35370161917 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,34333.333333333336
+							50783.7136697233,34078.689325833264
+							51268.0753550602,33412.0226591666
+							51268.0753550602,32587.977340833404
+							50783.7136697233,31921.310674166736
+							50000.0,31666.666666666668
+							49216.2863302767,31921.310674166736
+							48731.9246449398,32587.977340833404
+							48731.9246449398,33412.0226591666
+							49216.2863302767,34078.689325833264
+							50000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50669.130606358856,33743.14482547739
+							50034.8994967025,33999.390827019095 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50998.629534754575,33052.33595624295
+							50731.35370161917,33681.9983600625 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50743.14482547739,32330.869393641144
+							50999.390827019095,32965.1005032975 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50052.33595624295,32001.370465245425
+							50681.9983600625,32268.64629838083 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49330.869393641144,32256.855174522607
+							49965.1005032975,32000.609172980905 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49001.370465245425,32947.66404375705
+							49268.64629838083,32318.0016399375 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49256.85517452261,33669.130606358856
+							49000.609172980905,33034.8994967025 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49947.66404375705,33998.629534754575
+							49318.0016399375,33731.35370161917 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,40333.333333333336
+							46783.7136697233,40078.689325833264
+							47268.0753550602,39412.0226591666
+							47268.0753550602,38587.9773408334
+							46783.7136697233,37921.310674166736
+							46000.0,37666.666666666664
+							45216.2863302767,37921.310674166736
+							44731.9246449398,38587.9773408334
+							44731.9246449398,39412.0226591666
+							45216.2863302767,40078.689325833264
+							46000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46669.130606358856,39743.14482547739
+							46034.8994967025,39999.390827019095 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46998.629534754575,39052.33595624295
+							46731.35370161917,39681.9983600625 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46743.14482547739,38330.869393641144
+							46999.390827019095,38965.1005032975 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46052.33595624295,38001.370465245425
+							46681.9983600625,38268.64629838083 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45330.869393641144,38256.85517452261
+							45965.1005032975,38000.609172980905 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45001.370465245425,38947.66404375705
+							45268.64629838083,38318.0016399375 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45256.85517452261,39669.130606358856
+							45000.609172980905,39034.8994967025 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45947.66404375705,39998.629534754575
+							45318.0016399375,39731.35370161917 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,40333.333333333336
+							50783.7136697233,40078.689325833264
+							51268.0753550602,39412.0226591666
+							51268.0753550602,38587.9773408334
+							50783.7136697233,37921.310674166736
+							50000.0,37666.666666666664
+							49216.2863302767,37921.310674166736
+							48731.9246449398,38587.9773408334
+							48731.9246449398,39412.0226591666
+							49216.2863302767,40078.689325833264
+							50000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50669.130606358856,39743.14482547739
+							50034.8994967025,39999.390827019095 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50998.629534754575,39052.33595624295
+							50731.35370161917,39681.9983600625 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50743.14482547739,38330.869393641144
+							50999.390827019095,38965.1005032975 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50052.33595624295,38001.370465245425
+							50681.9983600625,38268.64629838083 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49330.869393641144,38256.85517452261
+							49965.1005032975,38000.609172980905 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49001.370465245425,38947.66404375705
+							49268.64629838083,38318.0016399375 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49256.85517452261,39669.130606358856
+							49000.609172980905,39034.8994967025 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49947.66404375705,39998.629534754575
+							49318.0016399375,39731.35370161917 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,34333.333333333336
+							54783.7136697233,34078.689325833264
+							55268.0753550602,33412.0226591666
+							55268.0753550602,32587.977340833404
+							54783.7136697233,31921.310674166736
+							54000.0,31666.666666666668
+							53216.2863302767,31921.310674166736
+							52731.9246449398,32587.977340833404
+							52731.9246449398,33412.0226591666
+							53216.2863302767,34078.689325833264
+							54000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54669.130606358856,33743.14482547739
+							54034.8994967025,33999.390827019095 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54998.629534754575,33052.33595624295
+							54731.35370161917,33681.9983600625 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54743.14482547739,32330.869393641144
+							54999.390827019095,32965.1005032975 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54052.33595624295,32001.370465245425
+							54681.9983600625,32268.64629838083 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53330.869393641144,32256.855174522607
+							53965.1005032975,32000.609172980905 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53001.370465245425,32947.66404375705
+							53268.64629838083,32318.0016399375 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53256.85517452261,33669.130606358856
+							53000.609172980905,33034.8994967025 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53947.66404375705,33998.629534754575
+							53318.0016399375,33731.35370161917 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,34333.333333333336
+							58783.7136697233,34078.689325833264
+							59268.0753550602,33412.0226591666
+							59268.0753550602,32587.977340833404
+							58783.7136697233,31921.310674166736
+							58000.0,31666.666666666668
+							57216.2863302767,31921.310674166736
+							56731.9246449398,32587.977340833404
+							56731.9246449398,33412.0226591666
+							57216.2863302767,34078.689325833264
+							58000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58669.130606358856,33743.14482547739
+							58034.8994967025,33999.390827019095 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58998.629534754575,33052.33595624295
+							58731.35370161917,33681.9983600625 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58743.14482547739,32330.869393641144
+							58999.390827019095,32965.1005032975 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58052.33595624295,32001.370465245425
+							58681.9983600625,32268.64629838083 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57330.869393641144,32256.855174522607
+							57965.1005032975,32000.609172980905 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57001.370465245425,32947.66404375705
+							57268.64629838083,32318.0016399375 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57256.85517452261,33669.130606358856
+							57000.609172980905,33034.8994967025 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57947.66404375705,33998.629534754575
+							57318.0016399375,33731.35370161917 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,40333.333333333336
+							54783.7136697233,40078.689325833264
+							55268.0753550602,39412.0226591666
+							55268.0753550602,38587.9773408334
+							54783.7136697233,37921.310674166736
+							54000.0,37666.666666666664
+							53216.2863302767,37921.310674166736
+							52731.9246449398,38587.9773408334
+							52731.9246449398,39412.0226591666
+							53216.2863302767,40078.689325833264
+							54000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54669.130606358856,39743.14482547739
+							54034.8994967025,39999.390827019095 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54998.629534754575,39052.33595624295
+							54731.35370161917,39681.9983600625 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54743.14482547739,38330.869393641144
+							54999.390827019095,38965.1005032975 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54052.33595624295,38001.370465245425
+							54681.9983600625,38268.64629838083 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53330.869393641144,38256.85517452261
+							53965.1005032975,38000.609172980905 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53001.370465245425,38947.66404375705
+							53268.64629838083,38318.0016399375 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53256.85517452261,39669.130606358856
+							53000.609172980905,39034.8994967025 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53947.66404375705,39998.629534754575
+							53318.0016399375,39731.35370161917 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,40333.333333333336
+							58783.7136697233,40078.689325833264
+							59268.0753550602,39412.0226591666
+							59268.0753550602,38587.9773408334
+							58783.7136697233,37921.310674166736
+							58000.0,37666.666666666664
+							57216.2863302767,37921.310674166736
+							56731.9246449398,38587.9773408334
+							56731.9246449398,39412.0226591666
+							57216.2863302767,40078.689325833264
+							58000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58669.130606358856,39743.14482547739
+							58034.8994967025,39999.390827019095 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58998.629534754575,39052.33595624295
+							58731.35370161917,39681.9983600625 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58743.14482547739,38330.869393641144
+							58999.390827019095,38965.1005032975 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58052.33595624295,38001.370465245425
+							58681.9983600625,38268.64629838083 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57330.869393641144,38256.85517452261
+							57965.1005032975,38000.609172980905 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57001.370465245425,38947.66404375705
+							57268.64629838083,38318.0016399375 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57256.85517452261,39669.130606358856
+							57000.609172980905,39034.8994967025 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57947.66404375705,39998.629534754575
+							57318.0016399375,39731.35370161917 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,46333.333333333336
+							22783.713669723296,46078.689325833264
+							23268.075355060206,45412.0226591666
+							23268.075355060206,44587.9773408334
+							22783.713669723296,43921.310674166736
+							22000.0,43666.666666666664
+							21216.286330276704,43921.310674166736
+							20731.924644939794,44587.9773408334
+							20731.924644939794,45412.0226591666
+							21216.286330276704,46078.689325833264
+							22000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22669.13060635886,45743.14482547739
+							22034.8994967025,45999.390827019095 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22998.629534754575,45052.33595624295
+							22731.35370161917,45681.9983600625 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22743.144825477393,44330.869393641144
+							22999.390827019095,44965.1005032975 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22052.335956242943,44001.370465245425
+							22681.9983600625,44268.64629838083 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21330.86939364114,44256.85517452261
+							21965.1005032975,44000.609172980905 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21001.370465245425,44947.66404375705
+							21268.64629838083,44318.0016399375 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21256.855174522607,45669.130606358856
+							21000.609172980905,45034.8994967025 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21947.664043757057,45998.629534754575
+							21318.0016399375,45731.35370161917 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,46333.333333333336
+							26783.713669723296,46078.689325833264
+							27268.075355060206,45412.0226591666
+							27268.075355060206,44587.9773408334
+							26783.713669723296,43921.310674166736
+							26000.0,43666.666666666664
+							25216.286330276704,43921.310674166736
+							24731.924644939794,44587.9773408334
+							24731.924644939794,45412.0226591666
+							25216.286330276704,46078.689325833264
+							26000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26669.13060635886,45743.14482547739
+							26034.8994967025,45999.390827019095 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26998.629534754575,45052.33595624295
+							26731.35370161917,45681.9983600625 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26743.144825477393,44330.869393641144
+							26999.390827019095,44965.1005032975 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26052.335956242943,44001.370465245425
+							26681.9983600625,44268.64629838083 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25330.86939364114,44256.85517452261
+							25965.1005032975,44000.609172980905 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25001.370465245425,44947.66404375705
+							25268.64629838083,44318.0016399375 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25256.855174522607,45669.130606358856
+							25000.609172980905,45034.8994967025 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25947.664043757057,45998.629534754575
+							25318.0016399375,45731.35370161917 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,52333.333333333336
+							22783.713669723296,52078.689325833264
+							23268.075355060206,51412.0226591666
+							23268.075355060206,50587.9773408334
+							22783.713669723296,49921.310674166736
+							22000.0,49666.666666666664
+							21216.286330276704,49921.310674166736
+							20731.924644939794,50587.9773408334
+							20731.924644939794,51412.0226591666
+							21216.286330276704,52078.689325833264
+							22000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22669.13060635886,51743.14482547739
+							22034.8994967025,51999.390827019095 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22998.629534754575,51052.33595624295
+							22731.35370161917,51681.9983600625 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22743.144825477393,50330.869393641144
+							22999.390827019095,50965.1005032975 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22052.335956242943,50001.370465245425
+							22681.9983600625,50268.64629838083 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21330.86939364114,50256.85517452261
+							21965.1005032975,50000.609172980905 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21001.370465245425,50947.66404375705
+							21268.64629838083,50318.0016399375 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21256.855174522607,51669.130606358856
+							21000.609172980905,51034.8994967025 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21947.664043757057,51998.629534754575
+							21318.0016399375,51731.35370161917 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,52333.333333333336
+							26783.713669723296,52078.689325833264
+							27268.075355060206,51412.0226591666
+							27268.075355060206,50587.9773408334
+							26783.713669723296,49921.310674166736
+							26000.0,49666.666666666664
+							25216.286330276704,49921.310674166736
+							24731.924644939794,50587.9773408334
+							24731.924644939794,51412.0226591666
+							25216.286330276704,52078.689325833264
+							26000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26669.13060635886,51743.14482547739
+							26034.8994967025,51999.390827019095 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26998.629534754575,51052.33595624295
+							26731.35370161917,51681.9983600625 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26743.144825477393,50330.869393641144
+							26999.390827019095,50965.1005032975 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26052.335956242943,50001.370465245425
+							26681.9983600625,50268.64629838083 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25330.86939364114,50256.85517452261
+							25965.1005032975,50000.609172980905 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25001.370465245425,50947.66404375705
+							25268.64629838083,50318.0016399375 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25256.855174522607,51669.130606358856
+							25000.609172980905,51034.8994967025 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25947.664043757057,51998.629534754575
+							25318.0016399375,51731.35370161917 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,46333.333333333336
+							30783.713669723296,46078.689325833264
+							31268.075355060206,45412.0226591666
+							31268.075355060206,44587.9773408334
+							30783.713669723296,43921.310674166736
+							30000.0,43666.666666666664
+							29216.286330276704,43921.310674166736
+							28731.924644939794,44587.9773408334
+							28731.924644939794,45412.0226591666
+							29216.286330276704,46078.689325833264
+							30000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30669.13060635886,45743.14482547739
+							30034.8994967025,45999.390827019095 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30998.629534754575,45052.33595624295
+							30731.35370161917,45681.9983600625 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30743.144825477393,44330.869393641144
+							30999.390827019095,44965.1005032975 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30052.335956242943,44001.370465245425
+							30681.9983600625,44268.64629838083 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29330.86939364114,44256.85517452261
+							29965.1005032975,44000.609172980905 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29001.370465245425,44947.66404375705
+							29268.64629838083,44318.0016399375 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29256.855174522607,45669.130606358856
+							29000.609172980905,45034.8994967025 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29947.664043757057,45998.629534754575
+							29318.0016399375,45731.35370161917 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,46333.333333333336
+							34783.7136697233,46078.689325833264
+							35268.0753550602,45412.0226591666
+							35268.0753550602,44587.9773408334
+							34783.7136697233,43921.310674166736
+							34000.0,43666.666666666664
+							33216.2863302767,43921.310674166736
+							32731.924644939794,44587.9773408334
+							32731.924644939794,45412.0226591666
+							33216.2863302767,46078.689325833264
+							34000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34669.130606358856,45743.14482547739
+							34034.8994967025,45999.390827019095 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34998.629534754575,45052.33595624295
+							34731.35370161917,45681.9983600625 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34743.14482547739,44330.869393641144
+							34999.390827019095,44965.1005032975 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34052.33595624295,44001.370465245425
+							34681.9983600625,44268.64629838083 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33330.869393641144,44256.85517452261
+							33965.1005032975,44000.609172980905 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33001.370465245425,44947.66404375705
+							33268.64629838083,44318.0016399375 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33256.85517452261,45669.130606358856
+							33000.609172980905,45034.8994967025 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33947.66404375705,45998.629534754575
+							33318.0016399375,45731.35370161917 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,52333.333333333336
+							30783.713669723296,52078.689325833264
+							31268.075355060206,51412.0226591666
+							31268.075355060206,50587.9773408334
+							30783.713669723296,49921.310674166736
+							30000.0,49666.666666666664
+							29216.286330276704,49921.310674166736
+							28731.924644939794,50587.9773408334
+							28731.924644939794,51412.0226591666
+							29216.286330276704,52078.689325833264
+							30000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30669.13060635886,51743.14482547739
+							30034.8994967025,51999.390827019095 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30998.629534754575,51052.33595624295
+							30731.35370161917,51681.9983600625 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30743.144825477393,50330.869393641144
+							30999.390827019095,50965.1005032975 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30052.335956242943,50001.370465245425
+							30681.9983600625,50268.64629838083 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29330.86939364114,50256.85517452261
+							29965.1005032975,50000.609172980905 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29001.370465245425,50947.66404375705
+							29268.64629838083,50318.0016399375 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29256.855174522607,51669.130606358856
+							29000.609172980905,51034.8994967025 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29947.664043757057,51998.629534754575
+							29318.0016399375,51731.35370161917 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,52333.333333333336
+							34783.7136697233,52078.689325833264
+							35268.0753550602,51412.0226591666
+							35268.0753550602,50587.9773408334
+							34783.7136697233,49921.310674166736
+							34000.0,49666.666666666664
+							33216.2863302767,49921.310674166736
+							32731.924644939794,50587.9773408334
+							32731.924644939794,51412.0226591666
+							33216.2863302767,52078.689325833264
+							34000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34669.130606358856,51743.14482547739
+							34034.8994967025,51999.390827019095 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34998.629534754575,51052.33595624295
+							34731.35370161917,51681.9983600625 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34743.14482547739,50330.869393641144
+							34999.390827019095,50965.1005032975 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34052.33595624295,50001.370465245425
+							34681.9983600625,50268.64629838083 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33330.869393641144,50256.85517452261
+							33965.1005032975,50000.609172980905 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33001.370465245425,50947.66404375705
+							33268.64629838083,50318.0016399375 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33256.85517452261,51669.130606358856
+							33000.609172980905,51034.8994967025 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33947.66404375705,51998.629534754575
+							33318.0016399375,51731.35370161917 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,46333.333333333336
+							38783.7136697233,46078.689325833264
+							39268.0753550602,45412.0226591666
+							39268.0753550602,44587.9773408334
+							38783.7136697233,43921.310674166736
+							38000.0,43666.666666666664
+							37216.2863302767,43921.310674166736
+							36731.9246449398,44587.9773408334
+							36731.9246449398,45412.0226591666
+							37216.2863302767,46078.689325833264
+							38000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38669.130606358856,45743.14482547739
+							38034.8994967025,45999.390827019095 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38998.629534754575,45052.33595624295
+							38731.35370161917,45681.9983600625 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38743.14482547739,44330.869393641144
+							38999.390827019095,44965.1005032975 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38052.33595624295,44001.370465245425
+							38681.9983600625,44268.64629838083 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37330.869393641144,44256.85517452261
+							37965.1005032975,44000.609172980905 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37001.370465245425,44947.66404375705
+							37268.64629838083,44318.0016399375 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37256.85517452261,45669.130606358856
+							37000.609172980905,45034.8994967025 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37947.66404375705,45998.629534754575
+							37318.0016399375,45731.35370161917 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,46333.333333333336
+							42783.7136697233,46078.689325833264
+							43268.0753550602,45412.0226591666
+							43268.0753550602,44587.9773408334
+							42783.7136697233,43921.310674166736
+							42000.0,43666.666666666664
+							41216.2863302767,43921.310674166736
+							40731.9246449398,44587.9773408334
+							40731.9246449398,45412.0226591666
+							41216.2863302767,46078.689325833264
+							42000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42669.130606358856,45743.14482547739
+							42034.8994967025,45999.390827019095 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42998.629534754575,45052.33595624295
+							42731.35370161917,45681.9983600625 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42743.14482547739,44330.869393641144
+							42999.390827019095,44965.1005032975 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42052.33595624295,44001.370465245425
+							42681.9983600625,44268.64629838083 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41330.869393641144,44256.85517452261
+							41965.1005032975,44000.609172980905 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41001.370465245425,44947.66404375705
+							41268.64629838083,44318.0016399375 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41256.85517452261,45669.130606358856
+							41000.609172980905,45034.8994967025 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41947.66404375705,45998.629534754575
+							41318.0016399375,45731.35370161917 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,52333.333333333336
+							38783.7136697233,52078.689325833264
+							39268.0753550602,51412.0226591666
+							39268.0753550602,50587.9773408334
+							38783.7136697233,49921.310674166736
+							38000.0,49666.666666666664
+							37216.2863302767,49921.310674166736
+							36731.9246449398,50587.9773408334
+							36731.9246449398,51412.0226591666
+							37216.2863302767,52078.689325833264
+							38000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38669.130606358856,51743.14482547739
+							38034.8994967025,51999.390827019095 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38998.629534754575,51052.33595624295
+							38731.35370161917,51681.9983600625 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38743.14482547739,50330.869393641144
+							38999.390827019095,50965.1005032975 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38052.33595624295,50001.370465245425
+							38681.9983600625,50268.64629838083 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37330.869393641144,50256.85517452261
+							37965.1005032975,50000.609172980905 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37001.370465245425,50947.66404375705
+							37268.64629838083,50318.0016399375 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37256.85517452261,51669.130606358856
+							37000.609172980905,51034.8994967025 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37947.66404375705,51998.629534754575
+							37318.0016399375,51731.35370161917 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,52333.333333333336
+							42783.7136697233,52078.689325833264
+							43268.0753550602,51412.0226591666
+							43268.0753550602,50587.9773408334
+							42783.7136697233,49921.310674166736
+							42000.0,49666.666666666664
+							41216.2863302767,49921.310674166736
+							40731.9246449398,50587.9773408334
+							40731.9246449398,51412.0226591666
+							41216.2863302767,52078.689325833264
+							42000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42669.130606358856,51743.14482547739
+							42034.8994967025,51999.390827019095 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42998.629534754575,51052.33595624295
+							42731.35370161917,51681.9983600625 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42743.14482547739,50330.869393641144
+							42999.390827019095,50965.1005032975 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42052.33595624295,50001.370465245425
+							42681.9983600625,50268.64629838083 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41330.869393641144,50256.85517452261
+							41965.1005032975,50000.609172980905 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41001.370465245425,50947.66404375705
+							41268.64629838083,50318.0016399375 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41256.85517452261,51669.130606358856
+							41000.609172980905,51034.8994967025 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41947.66404375705,51998.629534754575
+							41318.0016399375,51731.35370161917 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,46333.333333333336
+							46783.7136697233,46078.689325833264
+							47268.0753550602,45412.0226591666
+							47268.0753550602,44587.9773408334
+							46783.7136697233,43921.310674166736
+							46000.0,43666.666666666664
+							45216.2863302767,43921.310674166736
+							44731.9246449398,44587.9773408334
+							44731.9246449398,45412.0226591666
+							45216.2863302767,46078.689325833264
+							46000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46669.130606358856,45743.14482547739
+							46034.8994967025,45999.390827019095 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46998.629534754575,45052.33595624295
+							46731.35370161917,45681.9983600625 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46743.14482547739,44330.869393641144
+							46999.390827019095,44965.1005032975 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46052.33595624295,44001.370465245425
+							46681.9983600625,44268.64629838083 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45330.869393641144,44256.85517452261
+							45965.1005032975,44000.609172980905 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45001.370465245425,44947.66404375705
+							45268.64629838083,44318.0016399375 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45256.85517452261,45669.130606358856
+							45000.609172980905,45034.8994967025 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45947.66404375705,45998.629534754575
+							45318.0016399375,45731.35370161917 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,46333.333333333336
+							50783.7136697233,46078.689325833264
+							51268.0753550602,45412.0226591666
+							51268.0753550602,44587.9773408334
+							50783.7136697233,43921.310674166736
+							50000.0,43666.666666666664
+							49216.2863302767,43921.310674166736
+							48731.9246449398,44587.9773408334
+							48731.9246449398,45412.0226591666
+							49216.2863302767,46078.689325833264
+							50000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50669.130606358856,45743.14482547739
+							50034.8994967025,45999.390827019095 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50998.629534754575,45052.33595624295
+							50731.35370161917,45681.9983600625 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50743.14482547739,44330.869393641144
+							50999.390827019095,44965.1005032975 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50052.33595624295,44001.370465245425
+							50681.9983600625,44268.64629838083 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49330.869393641144,44256.85517452261
+							49965.1005032975,44000.609172980905 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49001.370465245425,44947.66404375705
+							49268.64629838083,44318.0016399375 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49256.85517452261,45669.130606358856
+							49000.609172980905,45034.8994967025 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49947.66404375705,45998.629534754575
+							49318.0016399375,45731.35370161917 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,52333.333333333336
+							46783.7136697233,52078.689325833264
+							47268.0753550602,51412.0226591666
+							47268.0753550602,50587.9773408334
+							46783.7136697233,49921.310674166736
+							46000.0,49666.666666666664
+							45216.2863302767,49921.310674166736
+							44731.9246449398,50587.9773408334
+							44731.9246449398,51412.0226591666
+							45216.2863302767,52078.689325833264
+							46000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46669.130606358856,51743.14482547739
+							46034.8994967025,51999.390827019095 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46998.629534754575,51052.33595624295
+							46731.35370161917,51681.9983600625 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46743.14482547739,50330.869393641144
+							46999.390827019095,50965.1005032975 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46052.33595624295,50001.370465245425
+							46681.9983600625,50268.64629838083 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45330.869393641144,50256.85517452261
+							45965.1005032975,50000.609172980905 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45001.370465245425,50947.66404375705
+							45268.64629838083,50318.0016399375 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45256.85517452261,51669.130606358856
+							45000.609172980905,51034.8994967025 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45947.66404375705,51998.629534754575
+							45318.0016399375,51731.35370161917 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,52333.333333333336
+							50783.7136697233,52078.689325833264
+							51268.0753550602,51412.0226591666
+							51268.0753550602,50587.9773408334
+							50783.7136697233,49921.310674166736
+							50000.0,49666.666666666664
+							49216.2863302767,49921.310674166736
+							48731.9246449398,50587.9773408334
+							48731.9246449398,51412.0226591666
+							49216.2863302767,52078.689325833264
+							50000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50669.130606358856,51743.14482547739
+							50034.8994967025,51999.390827019095 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50998.629534754575,51052.33595624295
+							50731.35370161917,51681.9983600625 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50743.14482547739,50330.869393641144
+							50999.390827019095,50965.1005032975 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50052.33595624295,50001.370465245425
+							50681.9983600625,50268.64629838083 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49330.869393641144,50256.85517452261
+							49965.1005032975,50000.609172980905 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49001.370465245425,50947.66404375705
+							49268.64629838083,50318.0016399375 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49256.85517452261,51669.130606358856
+							49000.609172980905,51034.8994967025 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49947.66404375705,51998.629534754575
+							49318.0016399375,51731.35370161917 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,46333.333333333336
+							54783.7136697233,46078.689325833264
+							55268.0753550602,45412.0226591666
+							55268.0753550602,44587.9773408334
+							54783.7136697233,43921.310674166736
+							54000.0,43666.666666666664
+							53216.2863302767,43921.310674166736
+							52731.9246449398,44587.9773408334
+							52731.9246449398,45412.0226591666
+							53216.2863302767,46078.689325833264
+							54000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54669.130606358856,45743.14482547739
+							54034.8994967025,45999.390827019095 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54998.629534754575,45052.33595624295
+							54731.35370161917,45681.9983600625 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54743.14482547739,44330.869393641144
+							54999.390827019095,44965.1005032975 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54052.33595624295,44001.370465245425
+							54681.9983600625,44268.64629838083 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53330.869393641144,44256.85517452261
+							53965.1005032975,44000.609172980905 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53001.370465245425,44947.66404375705
+							53268.64629838083,44318.0016399375 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53256.85517452261,45669.130606358856
+							53000.609172980905,45034.8994967025 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53947.66404375705,45998.629534754575
+							53318.0016399375,45731.35370161917 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,46333.333333333336
+							58783.7136697233,46078.689325833264
+							59268.0753550602,45412.0226591666
+							59268.0753550602,44587.9773408334
+							58783.7136697233,43921.310674166736
+							58000.0,43666.666666666664
+							57216.2863302767,43921.310674166736
+							56731.9246449398,44587.9773408334
+							56731.9246449398,45412.0226591666
+							57216.2863302767,46078.689325833264
+							58000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58669.130606358856,45743.14482547739
+							58034.8994967025,45999.390827019095 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58998.629534754575,45052.33595624295
+							58731.35370161917,45681.9983600625 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58743.14482547739,44330.869393641144
+							58999.390827019095,44965.1005032975 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58052.33595624295,44001.370465245425
+							58681.9983600625,44268.64629838083 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57330.869393641144,44256.85517452261
+							57965.1005032975,44000.609172980905 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57001.370465245425,44947.66404375705
+							57268.64629838083,44318.0016399375 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57256.85517452261,45669.130606358856
+							57000.609172980905,45034.8994967025 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57947.66404375705,45998.629534754575
+							57318.0016399375,45731.35370161917 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,52333.333333333336
+							54783.7136697233,52078.689325833264
+							55268.0753550602,51412.0226591666
+							55268.0753550602,50587.9773408334
+							54783.7136697233,49921.310674166736
+							54000.0,49666.666666666664
+							53216.2863302767,49921.310674166736
+							52731.9246449398,50587.9773408334
+							52731.9246449398,51412.0226591666
+							53216.2863302767,52078.689325833264
+							54000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54669.130606358856,51743.14482547739
+							54034.8994967025,51999.390827019095 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54998.629534754575,51052.33595624295
+							54731.35370161917,51681.9983600625 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54743.14482547739,50330.869393641144
+							54999.390827019095,50965.1005032975 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54052.33595624295,50001.370465245425
+							54681.9983600625,50268.64629838083 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53330.869393641144,50256.85517452261
+							53965.1005032975,50000.609172980905 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53001.370465245425,50947.66404375705
+							53268.64629838083,50318.0016399375 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53256.85517452261,51669.130606358856
+							53000.609172980905,51034.8994967025 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53947.66404375705,51998.629534754575
+							53318.0016399375,51731.35370161917 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,52333.333333333336
+							58783.7136697233,52078.689325833264
+							59268.0753550602,51412.0226591666
+							59268.0753550602,50587.9773408334
+							58783.7136697233,49921.310674166736
+							58000.0,49666.666666666664
+							57216.2863302767,49921.310674166736
+							56731.9246449398,50587.9773408334
+							56731.9246449398,51412.0226591666
+							57216.2863302767,52078.689325833264
+							58000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58669.130606358856,51743.14482547739
+							58034.8994967025,51999.390827019095 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58998.629534754575,51052.33595624295
+							58731.35370161917,51681.9983600625 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58743.14482547739,50330.869393641144
+							58999.390827019095,50965.1005032975 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58052.33595624295,50001.370465245425
+							58681.9983600625,50268.64629838083 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57330.869393641144,50256.85517452261
+							57965.1005032975,50000.609172980905 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57001.370465245425,50947.66404375705
+							57268.64629838083,50318.0016399375 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57256.85517452261,51669.130606358856
+							57000.609172980905,51034.8994967025 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57947.66404375705,51998.629534754575
+							57318.0016399375,51731.35370161917 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,58333.333333333336
+							22783.713669723296,58078.689325833264
+							23268.075355060206,57412.0226591666
+							23268.075355060206,56587.9773408334
+							22783.713669723296,55921.310674166736
+							22000.0,55666.666666666664
+							21216.286330276704,55921.310674166736
+							20731.924644939794,56587.9773408334
+							20731.924644939794,57412.0226591666
+							21216.286330276704,58078.689325833264
+							22000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22669.13060635886,57743.14482547739
+							22034.8994967025,57999.390827019095 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22998.629534754575,57052.33595624295
+							22731.35370161917,57681.9983600625 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22743.144825477393,56330.869393641144
+							22999.390827019095,56965.1005032975 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22052.335956242943,56001.370465245425
+							22681.9983600625,56268.64629838083 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21330.86939364114,56256.85517452261
+							21965.1005032975,56000.609172980905 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21001.370465245425,56947.66404375705
+							21268.64629838083,56318.0016399375 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21256.855174522607,57669.130606358856
+							21000.609172980905,57034.8994967025 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21947.664043757057,57998.629534754575
+							21318.0016399375,57731.35370161917 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,58333.333333333336
+							26783.713669723296,58078.689325833264
+							27268.075355060206,57412.0226591666
+							27268.075355060206,56587.9773408334
+							26783.713669723296,55921.310674166736
+							26000.0,55666.666666666664
+							25216.286330276704,55921.310674166736
+							24731.924644939794,56587.9773408334
+							24731.924644939794,57412.0226591666
+							25216.286330276704,58078.689325833264
+							26000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26669.13060635886,57743.14482547739
+							26034.8994967025,57999.390827019095 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26998.629534754575,57052.33595624295
+							26731.35370161917,57681.9983600625 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26743.144825477393,56330.869393641144
+							26999.390827019095,56965.1005032975 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26052.335956242943,56001.370465245425
+							26681.9983600625,56268.64629838083 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25330.86939364114,56256.85517452261
+							25965.1005032975,56000.609172980905 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25001.370465245425,56947.66404375705
+							25268.64629838083,56318.0016399375 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25256.855174522607,57669.130606358856
+							25000.609172980905,57034.8994967025 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25947.664043757057,57998.629534754575
+							25318.0016399375,57731.35370161917 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,64333.333333333336
+							22783.713669723296,64078.689325833264
+							23268.075355060206,63412.0226591666
+							23268.075355060206,62587.9773408334
+							22783.713669723296,61921.310674166736
+							22000.0,61666.666666666664
+							21216.286330276704,61921.310674166736
+							20731.924644939794,62587.9773408334
+							20731.924644939794,63412.0226591666
+							21216.286330276704,64078.689325833264
+							22000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22669.13060635886,63743.14482547739
+							22034.8994967025,63999.390827019095 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22998.629534754575,63052.33595624295
+							22731.35370161917,63681.9983600625 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22743.144825477393,62330.869393641144
+							22999.390827019095,62965.1005032975 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22052.335956242943,62001.370465245425
+							22681.9983600625,62268.64629838083 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21330.86939364114,62256.85517452261
+							21965.1005032975,62000.609172980905 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21001.370465245425,62947.66404375705
+							21268.64629838083,62318.0016399375 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21256.855174522607,63669.130606358856
+							21000.609172980905,63034.8994967025 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21947.664043757057,63998.629534754575
+							21318.0016399375,63731.35370161917 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,64333.333333333336
+							26783.713669723296,64078.689325833264
+							27268.075355060206,63412.0226591666
+							27268.075355060206,62587.9773408334
+							26783.713669723296,61921.310674166736
+							26000.0,61666.666666666664
+							25216.286330276704,61921.310674166736
+							24731.924644939794,62587.9773408334
+							24731.924644939794,63412.0226591666
+							25216.286330276704,64078.689325833264
+							26000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26669.13060635886,63743.14482547739
+							26034.8994967025,63999.390827019095 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26998.629534754575,63052.33595624295
+							26731.35370161917,63681.9983600625 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26743.144825477393,62330.869393641144
+							26999.390827019095,62965.1005032975 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26052.335956242943,62001.370465245425
+							26681.9983600625,62268.64629838083 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25330.86939364114,62256.85517452261
+							25965.1005032975,62000.609172980905 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25001.370465245425,62947.66404375705
+							25268.64629838083,62318.0016399375 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25256.855174522607,63669.130606358856
+							25000.609172980905,63034.8994967025 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25947.664043757057,63998.629534754575
+							25318.0016399375,63731.35370161917 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,58333.333333333336
+							30783.713669723296,58078.689325833264
+							31268.075355060206,57412.0226591666
+							31268.075355060206,56587.9773408334
+							30783.713669723296,55921.310674166736
+							30000.0,55666.666666666664
+							29216.286330276704,55921.310674166736
+							28731.924644939794,56587.9773408334
+							28731.924644939794,57412.0226591666
+							29216.286330276704,58078.689325833264
+							30000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30669.13060635886,57743.14482547739
+							30034.8994967025,57999.390827019095 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30998.629534754575,57052.33595624295
+							30731.35370161917,57681.9983600625 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30743.144825477393,56330.869393641144
+							30999.390827019095,56965.1005032975 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30052.335956242943,56001.370465245425
+							30681.9983600625,56268.64629838083 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29330.86939364114,56256.85517452261
+							29965.1005032975,56000.609172980905 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29001.370465245425,56947.66404375705
+							29268.64629838083,56318.0016399375 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29256.855174522607,57669.130606358856
+							29000.609172980905,57034.8994967025 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29947.664043757057,57998.629534754575
+							29318.0016399375,57731.35370161917 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,58333.333333333336
+							34783.7136697233,58078.689325833264
+							35268.0753550602,57412.0226591666
+							35268.0753550602,56587.9773408334
+							34783.7136697233,55921.310674166736
+							34000.0,55666.666666666664
+							33216.2863302767,55921.310674166736
+							32731.924644939794,56587.9773408334
+							32731.924644939794,57412.0226591666
+							33216.2863302767,58078.689325833264
+							34000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34669.130606358856,57743.14482547739
+							34034.8994967025,57999.390827019095 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34998.629534754575,57052.33595624295
+							34731.35370161917,57681.9983600625 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34743.14482547739,56330.869393641144
+							34999.390827019095,56965.1005032975 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34052.33595624295,56001.370465245425
+							34681.9983600625,56268.64629838083 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33330.869393641144,56256.85517452261
+							33965.1005032975,56000.609172980905 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33001.370465245425,56947.66404375705
+							33268.64629838083,56318.0016399375 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33256.85517452261,57669.130606358856
+							33000.609172980905,57034.8994967025 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33947.66404375705,57998.629534754575
+							33318.0016399375,57731.35370161917 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,64333.333333333336
+							30783.713669723296,64078.689325833264
+							31268.075355060206,63412.0226591666
+							31268.075355060206,62587.9773408334
+							30783.713669723296,61921.310674166736
+							30000.0,61666.666666666664
+							29216.286330276704,61921.310674166736
+							28731.924644939794,62587.9773408334
+							28731.924644939794,63412.0226591666
+							29216.286330276704,64078.689325833264
+							30000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30669.13060635886,63743.14482547739
+							30034.8994967025,63999.390827019095 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30998.629534754575,63052.33595624295
+							30731.35370161917,63681.9983600625 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30743.144825477393,62330.869393641144
+							30999.390827019095,62965.1005032975 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30052.335956242943,62001.370465245425
+							30681.9983600625,62268.64629838083 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29330.86939364114,62256.85517452261
+							29965.1005032975,62000.609172980905 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29001.370465245425,62947.66404375705
+							29268.64629838083,62318.0016399375 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29256.855174522607,63669.130606358856
+							29000.609172980905,63034.8994967025 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29947.664043757057,63998.629534754575
+							29318.0016399375,63731.35370161917 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,64333.333333333336
+							34783.7136697233,64078.689325833264
+							35268.0753550602,63412.0226591666
+							35268.0753550602,62587.9773408334
+							34783.7136697233,61921.310674166736
+							34000.0,61666.666666666664
+							33216.2863302767,61921.310674166736
+							32731.924644939794,62587.9773408334
+							32731.924644939794,63412.0226591666
+							33216.2863302767,64078.689325833264
+							34000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34669.130606358856,63743.14482547739
+							34034.8994967025,63999.390827019095 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34998.629534754575,63052.33595624295
+							34731.35370161917,63681.9983600625 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34743.14482547739,62330.869393641144
+							34999.390827019095,62965.1005032975 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34052.33595624295,62001.370465245425
+							34681.9983600625,62268.64629838083 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33330.869393641144,62256.85517452261
+							33965.1005032975,62000.609172980905 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33001.370465245425,62947.66404375705
+							33268.64629838083,62318.0016399375 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33256.85517452261,63669.130606358856
+							33000.609172980905,63034.8994967025 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33947.66404375705,63998.629534754575
+							33318.0016399375,63731.35370161917 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,58333.333333333336
+							38783.7136697233,58078.689325833264
+							39268.0753550602,57412.0226591666
+							39268.0753550602,56587.9773408334
+							38783.7136697233,55921.310674166736
+							38000.0,55666.666666666664
+							37216.2863302767,55921.310674166736
+							36731.9246449398,56587.9773408334
+							36731.9246449398,57412.0226591666
+							37216.2863302767,58078.689325833264
+							38000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38669.130606358856,57743.14482547739
+							38034.8994967025,57999.390827019095 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38998.629534754575,57052.33595624295
+							38731.35370161917,57681.9983600625 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38743.14482547739,56330.869393641144
+							38999.390827019095,56965.1005032975 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38052.33595624295,56001.370465245425
+							38681.9983600625,56268.64629838083 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37330.869393641144,56256.85517452261
+							37965.1005032975,56000.609172980905 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37001.370465245425,56947.66404375705
+							37268.64629838083,56318.0016399375 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37256.85517452261,57669.130606358856
+							37000.609172980905,57034.8994967025 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37947.66404375705,57998.629534754575
+							37318.0016399375,57731.35370161917 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,58333.333333333336
+							42783.7136697233,58078.689325833264
+							43268.0753550602,57412.0226591666
+							43268.0753550602,56587.9773408334
+							42783.7136697233,55921.310674166736
+							42000.0,55666.666666666664
+							41216.2863302767,55921.310674166736
+							40731.9246449398,56587.9773408334
+							40731.9246449398,57412.0226591666
+							41216.2863302767,58078.689325833264
+							42000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42669.130606358856,57743.14482547739
+							42034.8994967025,57999.390827019095 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42998.629534754575,57052.33595624295
+							42731.35370161917,57681.9983600625 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42743.14482547739,56330.869393641144
+							42999.390827019095,56965.1005032975 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42052.33595624295,56001.370465245425
+							42681.9983600625,56268.64629838083 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41330.869393641144,56256.85517452261
+							41965.1005032975,56000.609172980905 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41001.370465245425,56947.66404375705
+							41268.64629838083,56318.0016399375 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41256.85517452261,57669.130606358856
+							41000.609172980905,57034.8994967025 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41947.66404375705,57998.629534754575
+							41318.0016399375,57731.35370161917 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,64333.333333333336
+							38783.7136697233,64078.689325833264
+							39268.0753550602,63412.0226591666
+							39268.0753550602,62587.9773408334
+							38783.7136697233,61921.310674166736
+							38000.0,61666.666666666664
+							37216.2863302767,61921.310674166736
+							36731.9246449398,62587.9773408334
+							36731.9246449398,63412.0226591666
+							37216.2863302767,64078.689325833264
+							38000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38669.130606358856,63743.14482547739
+							38034.8994967025,63999.390827019095 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38998.629534754575,63052.33595624295
+							38731.35370161917,63681.9983600625 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38743.14482547739,62330.869393641144
+							38999.390827019095,62965.1005032975 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38052.33595624295,62001.370465245425
+							38681.9983600625,62268.64629838083 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37330.869393641144,62256.85517452261
+							37965.1005032975,62000.609172980905 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37001.370465245425,62947.66404375705
+							37268.64629838083,62318.0016399375 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37256.85517452261,63669.130606358856
+							37000.609172980905,63034.8994967025 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37947.66404375705,63998.629534754575
+							37318.0016399375,63731.35370161917 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,64333.333333333336
+							42783.7136697233,64078.689325833264
+							43268.0753550602,63412.0226591666
+							43268.0753550602,62587.9773408334
+							42783.7136697233,61921.310674166736
+							42000.0,61666.666666666664
+							41216.2863302767,61921.310674166736
+							40731.9246449398,62587.9773408334
+							40731.9246449398,63412.0226591666
+							41216.2863302767,64078.689325833264
+							42000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42669.130606358856,63743.14482547739
+							42034.8994967025,63999.390827019095 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42998.629534754575,63052.33595624295
+							42731.35370161917,63681.9983600625 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42743.14482547739,62330.869393641144
+							42999.390827019095,62965.1005032975 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42052.33595624295,62001.370465245425
+							42681.9983600625,62268.64629838083 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41330.869393641144,62256.85517452261
+							41965.1005032975,62000.609172980905 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41001.370465245425,62947.66404375705
+							41268.64629838083,62318.0016399375 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41256.85517452261,63669.130606358856
+							41000.609172980905,63034.8994967025 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41947.66404375705,63998.629534754575
+							41318.0016399375,63731.35370161917 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,58333.333333333336
+							46783.7136697233,58078.689325833264
+							47268.0753550602,57412.0226591666
+							47268.0753550602,56587.9773408334
+							46783.7136697233,55921.310674166736
+							46000.0,55666.666666666664
+							45216.2863302767,55921.310674166736
+							44731.9246449398,56587.9773408334
+							44731.9246449398,57412.0226591666
+							45216.2863302767,58078.689325833264
+							46000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46669.130606358856,57743.14482547739
+							46034.8994967025,57999.390827019095 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46998.629534754575,57052.33595624295
+							46731.35370161917,57681.9983600625 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46743.14482547739,56330.869393641144
+							46999.390827019095,56965.1005032975 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46052.33595624295,56001.370465245425
+							46681.9983600625,56268.64629838083 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45330.869393641144,56256.85517452261
+							45965.1005032975,56000.609172980905 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45001.370465245425,56947.66404375705
+							45268.64629838083,56318.0016399375 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45256.85517452261,57669.130606358856
+							45000.609172980905,57034.8994967025 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45947.66404375705,57998.629534754575
+							45318.0016399375,57731.35370161917 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,58333.333333333336
+							50783.7136697233,58078.689325833264
+							51268.0753550602,57412.0226591666
+							51268.0753550602,56587.9773408334
+							50783.7136697233,55921.310674166736
+							50000.0,55666.666666666664
+							49216.2863302767,55921.310674166736
+							48731.9246449398,56587.9773408334
+							48731.9246449398,57412.0226591666
+							49216.2863302767,58078.689325833264
+							50000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50669.130606358856,57743.14482547739
+							50034.8994967025,57999.390827019095 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50998.629534754575,57052.33595624295
+							50731.35370161917,57681.9983600625 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50743.14482547739,56330.869393641144
+							50999.390827019095,56965.1005032975 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50052.33595624295,56001.370465245425
+							50681.9983600625,56268.64629838083 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49330.869393641144,56256.85517452261
+							49965.1005032975,56000.609172980905 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49001.370465245425,56947.66404375705
+							49268.64629838083,56318.0016399375 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49256.85517452261,57669.130606358856
+							49000.609172980905,57034.8994967025 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49947.66404375705,57998.629534754575
+							49318.0016399375,57731.35370161917 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,64333.333333333336
+							46783.7136697233,64078.689325833264
+							47268.0753550602,63412.0226591666
+							47268.0753550602,62587.9773408334
+							46783.7136697233,61921.310674166736
+							46000.0,61666.666666666664
+							45216.2863302767,61921.310674166736
+							44731.9246449398,62587.9773408334
+							44731.9246449398,63412.0226591666
+							45216.2863302767,64078.689325833264
+							46000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46669.130606358856,63743.14482547739
+							46034.8994967025,63999.390827019095 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46998.629534754575,63052.33595624295
+							46731.35370161917,63681.9983600625 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46743.14482547739,62330.869393641144
+							46999.390827019095,62965.1005032975 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46052.33595624295,62001.370465245425
+							46681.9983600625,62268.64629838083 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45330.869393641144,62256.85517452261
+							45965.1005032975,62000.609172980905 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45001.370465245425,62947.66404375705
+							45268.64629838083,62318.0016399375 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45256.85517452261,63669.130606358856
+							45000.609172980905,63034.8994967025 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45947.66404375705,63998.629534754575
+							45318.0016399375,63731.35370161917 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,64333.333333333336
+							50783.7136697233,64078.689325833264
+							51268.0753550602,63412.0226591666
+							51268.0753550602,62587.9773408334
+							50783.7136697233,61921.310674166736
+							50000.0,61666.666666666664
+							49216.2863302767,61921.310674166736
+							48731.9246449398,62587.9773408334
+							48731.9246449398,63412.0226591666
+							49216.2863302767,64078.689325833264
+							50000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50669.130606358856,63743.14482547739
+							50034.8994967025,63999.390827019095 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50998.629534754575,63052.33595624295
+							50731.35370161917,63681.9983600625 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50743.14482547739,62330.869393641144
+							50999.390827019095,62965.1005032975 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50052.33595624295,62001.370465245425
+							50681.9983600625,62268.64629838083 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49330.869393641144,62256.85517452261
+							49965.1005032975,62000.609172980905 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49001.370465245425,62947.66404375705
+							49268.64629838083,62318.0016399375 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49256.85517452261,63669.130606358856
+							49000.609172980905,63034.8994967025 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49947.66404375705,63998.629534754575
+							49318.0016399375,63731.35370161917 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,58333.333333333336
+							54783.7136697233,58078.689325833264
+							55268.0753550602,57412.0226591666
+							55268.0753550602,56587.9773408334
+							54783.7136697233,55921.310674166736
+							54000.0,55666.666666666664
+							53216.2863302767,55921.310674166736
+							52731.9246449398,56587.9773408334
+							52731.9246449398,57412.0226591666
+							53216.2863302767,58078.689325833264
+							54000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54669.130606358856,57743.14482547739
+							54034.8994967025,57999.390827019095 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54998.629534754575,57052.33595624295
+							54731.35370161917,57681.9983600625 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54743.14482547739,56330.869393641144
+							54999.390827019095,56965.1005032975 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54052.33595624295,56001.370465245425
+							54681.9983600625,56268.64629838083 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53330.869393641144,56256.85517452261
+							53965.1005032975,56000.609172980905 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53001.370465245425,56947.66404375705
+							53268.64629838083,56318.0016399375 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53256.85517452261,57669.130606358856
+							53000.609172980905,57034.8994967025 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53947.66404375705,57998.629534754575
+							53318.0016399375,57731.35370161917 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,58333.333333333336
+							58783.7136697233,58078.689325833264
+							59268.0753550602,57412.0226591666
+							59268.0753550602,56587.9773408334
+							58783.7136697233,55921.310674166736
+							58000.0,55666.666666666664
+							57216.2863302767,55921.310674166736
+							56731.9246449398,56587.9773408334
+							56731.9246449398,57412.0226591666
+							57216.2863302767,58078.689325833264
+							58000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58669.130606358856,57743.14482547739
+							58034.8994967025,57999.390827019095 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58998.629534754575,57052.33595624295
+							58731.35370161917,57681.9983600625 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58743.14482547739,56330.869393641144
+							58999.390827019095,56965.1005032975 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58052.33595624295,56001.370465245425
+							58681.9983600625,56268.64629838083 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57330.869393641144,56256.85517452261
+							57965.1005032975,56000.609172980905 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57001.370465245425,56947.66404375705
+							57268.64629838083,56318.0016399375 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57256.85517452261,57669.130606358856
+							57000.609172980905,57034.8994967025 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57947.66404375705,57998.629534754575
+							57318.0016399375,57731.35370161917 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,64333.333333333336
+							54783.7136697233,64078.689325833264
+							55268.0753550602,63412.0226591666
+							55268.0753550602,62587.9773408334
+							54783.7136697233,61921.310674166736
+							54000.0,61666.666666666664
+							53216.2863302767,61921.310674166736
+							52731.9246449398,62587.9773408334
+							52731.9246449398,63412.0226591666
+							53216.2863302767,64078.689325833264
+							54000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54669.130606358856,63743.14482547739
+							54034.8994967025,63999.390827019095 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54998.629534754575,63052.33595624295
+							54731.35370161917,63681.9983600625 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54743.14482547739,62330.869393641144
+							54999.390827019095,62965.1005032975 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54052.33595624295,62001.370465245425
+							54681.9983600625,62268.64629838083 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53330.869393641144,62256.85517452261
+							53965.1005032975,62000.609172980905 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53001.370465245425,62947.66404375705
+							53268.64629838083,62318.0016399375 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53256.85517452261,63669.130606358856
+							53000.609172980905,63034.8994967025 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53947.66404375705,63998.629534754575
+							53318.0016399375,63731.35370161917 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,64333.333333333336
+							58783.7136697233,64078.689325833264
+							59268.0753550602,63412.0226591666
+							59268.0753550602,62587.9773408334
+							58783.7136697233,61921.310674166736
+							58000.0,61666.666666666664
+							57216.2863302767,61921.310674166736
+							56731.9246449398,62587.9773408334
+							56731.9246449398,63412.0226591666
+							57216.2863302767,64078.689325833264
+							58000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58669.130606358856,63743.14482547739
+							58034.8994967025,63999.390827019095 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58998.629534754575,63052.33595624295
+							58731.35370161917,63681.9983600625 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58743.14482547739,62330.869393641144
+							58999.390827019095,62965.1005032975 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58052.33595624295,62001.370465245425
+							58681.9983600625,62268.64629838083 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57330.869393641144,62256.85517452261
+							57965.1005032975,62000.609172980905 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57001.370465245425,62947.66404375705
+							57268.64629838083,62318.0016399375 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57256.85517452261,63669.130606358856
+							57000.609172980905,63034.8994967025 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57947.66404375705,63998.629534754575
+							57318.0016399375,63731.35370161917 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,70333.33333333333
+							22783.713669723296,70078.68932583326
+							23268.075355060206,69412.0226591666
+							23268.075355060206,68587.9773408334
+							22783.713669723296,67921.31067416674
+							22000.0,67666.66666666667
+							21216.286330276704,67921.31067416674
+							20731.924644939794,68587.9773408334
+							20731.924644939794,69412.0226591666
+							21216.286330276704,70078.68932583326
+							22000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22669.13060635886,69743.1448254774
+							22034.8994967025,69999.3908270191 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22998.629534754575,69052.33595624294
+							22731.35370161917,69681.9983600625 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22743.144825477393,68330.86939364114
+							22999.390827019095,68965.1005032975 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22052.335956242943,68001.37046524543
+							22681.9983600625,68268.64629838083 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21330.86939364114,68256.8551745226
+							21965.1005032975,68000.6091729809 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21001.370465245425,68947.66404375706
+							21268.64629838083,68318.0016399375 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21256.855174522607,69669.13060635886
+							21000.609172980905,69034.8994967025 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21947.664043757057,69998.62953475457
+							21318.0016399375,69731.35370161917 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,70333.33333333333
+							26783.713669723296,70078.68932583326
+							27268.075355060206,69412.0226591666
+							27268.075355060206,68587.9773408334
+							26783.713669723296,67921.31067416674
+							26000.0,67666.66666666667
+							25216.286330276704,67921.31067416674
+							24731.924644939794,68587.9773408334
+							24731.924644939794,69412.0226591666
+							25216.286330276704,70078.68932583326
+							26000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26669.13060635886,69743.1448254774
+							26034.8994967025,69999.3908270191 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26998.629534754575,69052.33595624294
+							26731.35370161917,69681.9983600625 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26743.144825477393,68330.86939364114
+							26999.390827019095,68965.1005032975 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26052.335956242943,68001.37046524543
+							26681.9983600625,68268.64629838083 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25330.86939364114,68256.8551745226
+							25965.1005032975,68000.6091729809 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25001.370465245425,68947.66404375706
+							25268.64629838083,68318.0016399375 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25256.855174522607,69669.13060635886
+							25000.609172980905,69034.8994967025 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25947.664043757057,69998.62953475457
+							25318.0016399375,69731.35370161917 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,76333.33333333333
+							22783.713669723296,76078.68932583326
+							23268.075355060206,75412.0226591666
+							23268.075355060206,74587.9773408334
+							22783.713669723296,73921.31067416674
+							22000.0,73666.66666666667
+							21216.286330276704,73921.31067416674
+							20731.924644939794,74587.9773408334
+							20731.924644939794,75412.0226591666
+							21216.286330276704,76078.68932583326
+							22000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22669.13060635886,75743.1448254774
+							22034.8994967025,75999.3908270191 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22998.629534754575,75052.33595624294
+							22731.35370161917,75681.9983600625 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22743.144825477393,74330.86939364114
+							22999.390827019095,74965.1005032975 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22052.335956242943,74001.37046524543
+							22681.9983600625,74268.64629838083 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21330.86939364114,74256.8551745226
+							21965.1005032975,74000.6091729809 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21001.370465245425,74947.66404375706
+							21268.64629838083,74318.0016399375 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21256.855174522607,75669.13060635886
+							21000.609172980905,75034.8994967025 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21947.664043757057,75998.62953475457
+							21318.0016399375,75731.35370161917 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,76333.33333333333
+							26783.713669723296,76078.68932583326
+							27268.075355060206,75412.0226591666
+							27268.075355060206,74587.9773408334
+							26783.713669723296,73921.31067416674
+							26000.0,73666.66666666667
+							25216.286330276704,73921.31067416674
+							24731.924644939794,74587.9773408334
+							24731.924644939794,75412.0226591666
+							25216.286330276704,76078.68932583326
+							26000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26669.13060635886,75743.1448254774
+							26034.8994967025,75999.3908270191 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26998.629534754575,75052.33595624294
+							26731.35370161917,75681.9983600625 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26743.144825477393,74330.86939364114
+							26999.390827019095,74965.1005032975 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26052.335956242943,74001.37046524543
+							26681.9983600625,74268.64629838083 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25330.86939364114,74256.8551745226
+							25965.1005032975,74000.6091729809 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25001.370465245425,74947.66404375706
+							25268.64629838083,74318.0016399375 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25256.855174522607,75669.13060635886
+							25000.609172980905,75034.8994967025 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25947.664043757057,75998.62953475457
+							25318.0016399375,75731.35370161917 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,70333.33333333333
+							30783.713669723296,70078.68932583326
+							31268.075355060206,69412.0226591666
+							31268.075355060206,68587.9773408334
+							30783.713669723296,67921.31067416674
+							30000.0,67666.66666666667
+							29216.286330276704,67921.31067416674
+							28731.924644939794,68587.9773408334
+							28731.924644939794,69412.0226591666
+							29216.286330276704,70078.68932583326
+							30000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30669.13060635886,69743.1448254774
+							30034.8994967025,69999.3908270191 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30998.629534754575,69052.33595624294
+							30731.35370161917,69681.9983600625 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30743.144825477393,68330.86939364114
+							30999.390827019095,68965.1005032975 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30052.335956242943,68001.37046524543
+							30681.9983600625,68268.64629838083 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29330.86939364114,68256.8551745226
+							29965.1005032975,68000.6091729809 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29001.370465245425,68947.66404375706
+							29268.64629838083,68318.0016399375 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29256.855174522607,69669.13060635886
+							29000.609172980905,69034.8994967025 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29947.664043757057,69998.62953475457
+							29318.0016399375,69731.35370161917 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,70333.33333333333
+							34783.7136697233,70078.68932583326
+							35268.0753550602,69412.0226591666
+							35268.0753550602,68587.9773408334
+							34783.7136697233,67921.31067416674
+							34000.0,67666.66666666667
+							33216.2863302767,67921.31067416674
+							32731.924644939794,68587.9773408334
+							32731.924644939794,69412.0226591666
+							33216.2863302767,70078.68932583326
+							34000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34669.130606358856,69743.1448254774
+							34034.8994967025,69999.3908270191 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34998.629534754575,69052.33595624294
+							34731.35370161917,69681.9983600625 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34743.14482547739,68330.86939364114
+							34999.390827019095,68965.1005032975 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34052.33595624295,68001.37046524543
+							34681.9983600625,68268.64629838083 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33330.869393641144,68256.8551745226
+							33965.1005032975,68000.6091729809 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33001.370465245425,68947.66404375706
+							33268.64629838083,68318.0016399375 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33256.85517452261,69669.13060635886
+							33000.609172980905,69034.8994967025 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33947.66404375705,69998.62953475457
+							33318.0016399375,69731.35370161917 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,76333.33333333333
+							30783.713669723296,76078.68932583326
+							31268.075355060206,75412.0226591666
+							31268.075355060206,74587.9773408334
+							30783.713669723296,73921.31067416674
+							30000.0,73666.66666666667
+							29216.286330276704,73921.31067416674
+							28731.924644939794,74587.9773408334
+							28731.924644939794,75412.0226591666
+							29216.286330276704,76078.68932583326
+							30000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30669.13060635886,75743.1448254774
+							30034.8994967025,75999.3908270191 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30998.629534754575,75052.33595624294
+							30731.35370161917,75681.9983600625 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30743.144825477393,74330.86939364114
+							30999.390827019095,74965.1005032975 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30052.335956242943,74001.37046524543
+							30681.9983600625,74268.64629838083 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29330.86939364114,74256.8551745226
+							29965.1005032975,74000.6091729809 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29001.370465245425,74947.66404375706
+							29268.64629838083,74318.0016399375 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29256.855174522607,75669.13060635886
+							29000.609172980905,75034.8994967025 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29947.664043757057,75998.62953475457
+							29318.0016399375,75731.35370161917 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,76333.33333333333
+							34783.7136697233,76078.68932583326
+							35268.0753550602,75412.0226591666
+							35268.0753550602,74587.9773408334
+							34783.7136697233,73921.31067416674
+							34000.0,73666.66666666667
+							33216.2863302767,73921.31067416674
+							32731.924644939794,74587.9773408334
+							32731.924644939794,75412.0226591666
+							33216.2863302767,76078.68932583326
+							34000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34669.130606358856,75743.1448254774
+							34034.8994967025,75999.3908270191 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34998.629534754575,75052.33595624294
+							34731.35370161917,75681.9983600625 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34743.14482547739,74330.86939364114
+							34999.390827019095,74965.1005032975 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34052.33595624295,74001.37046524543
+							34681.9983600625,74268.64629838083 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33330.869393641144,74256.8551745226
+							33965.1005032975,74000.6091729809 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33001.370465245425,74947.66404375706
+							33268.64629838083,74318.0016399375 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33256.85517452261,75669.13060635886
+							33000.609172980905,75034.8994967025 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33947.66404375705,75998.62953475457
+							33318.0016399375,75731.35370161917 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,70333.33333333333
+							38783.7136697233,70078.68932583326
+							39268.0753550602,69412.0226591666
+							39268.0753550602,68587.9773408334
+							38783.7136697233,67921.31067416674
+							38000.0,67666.66666666667
+							37216.2863302767,67921.31067416674
+							36731.9246449398,68587.9773408334
+							36731.9246449398,69412.0226591666
+							37216.2863302767,70078.68932583326
+							38000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38669.130606358856,69743.1448254774
+							38034.8994967025,69999.3908270191 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38998.629534754575,69052.33595624294
+							38731.35370161917,69681.9983600625 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38743.14482547739,68330.86939364114
+							38999.390827019095,68965.1005032975 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38052.33595624295,68001.37046524543
+							38681.9983600625,68268.64629838083 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37330.869393641144,68256.8551745226
+							37965.1005032975,68000.6091729809 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37001.370465245425,68947.66404375706
+							37268.64629838083,68318.0016399375 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37256.85517452261,69669.13060635886
+							37000.609172980905,69034.8994967025 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37947.66404375705,69998.62953475457
+							37318.0016399375,69731.35370161917 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,70333.33333333333
+							42783.7136697233,70078.68932583326
+							43268.0753550602,69412.0226591666
+							43268.0753550602,68587.9773408334
+							42783.7136697233,67921.31067416674
+							42000.0,67666.66666666667
+							41216.2863302767,67921.31067416674
+							40731.9246449398,68587.9773408334
+							40731.9246449398,69412.0226591666
+							41216.2863302767,70078.68932583326
+							42000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42669.130606358856,69743.1448254774
+							42034.8994967025,69999.3908270191 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42998.629534754575,69052.33595624294
+							42731.35370161917,69681.9983600625 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42743.14482547739,68330.86939364114
+							42999.390827019095,68965.1005032975 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42052.33595624295,68001.37046524543
+							42681.9983600625,68268.64629838083 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41330.869393641144,68256.8551745226
+							41965.1005032975,68000.6091729809 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41001.370465245425,68947.66404375706
+							41268.64629838083,68318.0016399375 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41256.85517452261,69669.13060635886
+							41000.609172980905,69034.8994967025 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41947.66404375705,69998.62953475457
+							41318.0016399375,69731.35370161917 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,76333.33333333333
+							38783.7136697233,76078.68932583326
+							39268.0753550602,75412.0226591666
+							39268.0753550602,74587.9773408334
+							38783.7136697233,73921.31067416674
+							38000.0,73666.66666666667
+							37216.2863302767,73921.31067416674
+							36731.9246449398,74587.9773408334
+							36731.9246449398,75412.0226591666
+							37216.2863302767,76078.68932583326
+							38000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38669.130606358856,75743.1448254774
+							38034.8994967025,75999.3908270191 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38998.629534754575,75052.33595624294
+							38731.35370161917,75681.9983600625 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38743.14482547739,74330.86939364114
+							38999.390827019095,74965.1005032975 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38052.33595624295,74001.37046524543
+							38681.9983600625,74268.64629838083 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37330.869393641144,74256.8551745226
+							37965.1005032975,74000.6091729809 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37001.370465245425,74947.66404375706
+							37268.64629838083,74318.0016399375 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37256.85517452261,75669.13060635886
+							37000.609172980905,75034.8994967025 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37947.66404375705,75998.62953475457
+							37318.0016399375,75731.35370161917 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,76333.33333333333
+							42783.7136697233,76078.68932583326
+							43268.0753550602,75412.0226591666
+							43268.0753550602,74587.9773408334
+							42783.7136697233,73921.31067416674
+							42000.0,73666.66666666667
+							41216.2863302767,73921.31067416674
+							40731.9246449398,74587.9773408334
+							40731.9246449398,75412.0226591666
+							41216.2863302767,76078.68932583326
+							42000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42669.130606358856,75743.1448254774
+							42034.8994967025,75999.3908270191 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42998.629534754575,75052.33595624294
+							42731.35370161917,75681.9983600625 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42743.14482547739,74330.86939364114
+							42999.390827019095,74965.1005032975 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42052.33595624295,74001.37046524543
+							42681.9983600625,74268.64629838083 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41330.869393641144,74256.8551745226
+							41965.1005032975,74000.6091729809 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41001.370465245425,74947.66404375706
+							41268.64629838083,74318.0016399375 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41256.85517452261,75669.13060635886
+							41000.609172980905,75034.8994967025 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41947.66404375705,75998.62953475457
+							41318.0016399375,75731.35370161917 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,70333.33333333333
+							46783.7136697233,70078.68932583326
+							47268.0753550602,69412.0226591666
+							47268.0753550602,68587.9773408334
+							46783.7136697233,67921.31067416674
+							46000.0,67666.66666666667
+							45216.2863302767,67921.31067416674
+							44731.9246449398,68587.9773408334
+							44731.9246449398,69412.0226591666
+							45216.2863302767,70078.68932583326
+							46000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46669.130606358856,69743.1448254774
+							46034.8994967025,69999.3908270191 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46998.629534754575,69052.33595624294
+							46731.35370161917,69681.9983600625 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46743.14482547739,68330.86939364114
+							46999.390827019095,68965.1005032975 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46052.33595624295,68001.37046524543
+							46681.9983600625,68268.64629838083 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45330.869393641144,68256.8551745226
+							45965.1005032975,68000.6091729809 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45001.370465245425,68947.66404375706
+							45268.64629838083,68318.0016399375 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45256.85517452261,69669.13060635886
+							45000.609172980905,69034.8994967025 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45947.66404375705,69998.62953475457
+							45318.0016399375,69731.35370161917 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,70333.33333333333
+							50783.7136697233,70078.68932583326
+							51268.0753550602,69412.0226591666
+							51268.0753550602,68587.9773408334
+							50783.7136697233,67921.31067416674
+							50000.0,67666.66666666667
+							49216.2863302767,67921.31067416674
+							48731.9246449398,68587.9773408334
+							48731.9246449398,69412.0226591666
+							49216.2863302767,70078.68932583326
+							50000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50669.130606358856,69743.1448254774
+							50034.8994967025,69999.3908270191 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50998.629534754575,69052.33595624294
+							50731.35370161917,69681.9983600625 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50743.14482547739,68330.86939364114
+							50999.390827019095,68965.1005032975 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50052.33595624295,68001.37046524543
+							50681.9983600625,68268.64629838083 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49330.869393641144,68256.8551745226
+							49965.1005032975,68000.6091729809 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49001.370465245425,68947.66404375706
+							49268.64629838083,68318.0016399375 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49256.85517452261,69669.13060635886
+							49000.609172980905,69034.8994967025 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49947.66404375705,69998.62953475457
+							49318.0016399375,69731.35370161917 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,76333.33333333333
+							46783.7136697233,76078.68932583326
+							47268.0753550602,75412.0226591666
+							47268.0753550602,74587.9773408334
+							46783.7136697233,73921.31067416674
+							46000.0,73666.66666666667
+							45216.2863302767,73921.31067416674
+							44731.9246449398,74587.9773408334
+							44731.9246449398,75412.0226591666
+							45216.2863302767,76078.68932583326
+							46000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46669.130606358856,75743.1448254774
+							46034.8994967025,75999.3908270191 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46998.629534754575,75052.33595624294
+							46731.35370161917,75681.9983600625 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46743.14482547739,74330.86939364114
+							46999.390827019095,74965.1005032975 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46052.33595624295,74001.37046524543
+							46681.9983600625,74268.64629838083 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45330.869393641144,74256.8551745226
+							45965.1005032975,74000.6091729809 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45001.370465245425,74947.66404375706
+							45268.64629838083,74318.0016399375 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45256.85517452261,75669.13060635886
+							45000.609172980905,75034.8994967025 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45947.66404375705,75998.62953475457
+							45318.0016399375,75731.35370161917 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,76333.33333333333
+							50783.7136697233,76078.68932583326
+							51268.0753550602,75412.0226591666
+							51268.0753550602,74587.9773408334
+							50783.7136697233,73921.31067416674
+							50000.0,73666.66666666667
+							49216.2863302767,73921.31067416674
+							48731.9246449398,74587.9773408334
+							48731.9246449398,75412.0226591666
+							49216.2863302767,76078.68932583326
+							50000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50669.130606358856,75743.1448254774
+							50034.8994967025,75999.3908270191 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50998.629534754575,75052.33595624294
+							50731.35370161917,75681.9983600625 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50743.14482547739,74330.86939364114
+							50999.390827019095,74965.1005032975 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50052.33595624295,74001.37046524543
+							50681.9983600625,74268.64629838083 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49330.869393641144,74256.8551745226
+							49965.1005032975,74000.6091729809 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49001.370465245425,74947.66404375706
+							49268.64629838083,74318.0016399375 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49256.85517452261,75669.13060635886
+							49000.609172980905,75034.8994967025 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49947.66404375705,75998.62953475457
+							49318.0016399375,75731.35370161917 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,70333.33333333333
+							54783.7136697233,70078.68932583326
+							55268.0753550602,69412.0226591666
+							55268.0753550602,68587.9773408334
+							54783.7136697233,67921.31067416674
+							54000.0,67666.66666666667
+							53216.2863302767,67921.31067416674
+							52731.9246449398,68587.9773408334
+							52731.9246449398,69412.0226591666
+							53216.2863302767,70078.68932583326
+							54000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54669.130606358856,69743.1448254774
+							54034.8994967025,69999.3908270191 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54998.629534754575,69052.33595624294
+							54731.35370161917,69681.9983600625 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54743.14482547739,68330.86939364114
+							54999.390827019095,68965.1005032975 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54052.33595624295,68001.37046524543
+							54681.9983600625,68268.64629838083 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53330.869393641144,68256.8551745226
+							53965.1005032975,68000.6091729809 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53001.370465245425,68947.66404375706
+							53268.64629838083,68318.0016399375 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53256.85517452261,69669.13060635886
+							53000.609172980905,69034.8994967025 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53947.66404375705,69998.62953475457
+							53318.0016399375,69731.35370161917 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,70333.33333333333
+							58783.7136697233,70078.68932583326
+							59268.0753550602,69412.0226591666
+							59268.0753550602,68587.9773408334
+							58783.7136697233,67921.31067416674
+							58000.0,67666.66666666667
+							57216.2863302767,67921.31067416674
+							56731.9246449398,68587.9773408334
+							56731.9246449398,69412.0226591666
+							57216.2863302767,70078.68932583326
+							58000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58669.130606358856,69743.1448254774
+							58034.8994967025,69999.3908270191 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58998.629534754575,69052.33595624294
+							58731.35370161917,69681.9983600625 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58743.14482547739,68330.86939364114
+							58999.390827019095,68965.1005032975 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58052.33595624295,68001.37046524543
+							58681.9983600625,68268.64629838083 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57330.869393641144,68256.8551745226
+							57965.1005032975,68000.6091729809 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57001.370465245425,68947.66404375706
+							57268.64629838083,68318.0016399375 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57256.85517452261,69669.13060635886
+							57000.609172980905,69034.8994967025 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57947.66404375705,69998.62953475457
+							57318.0016399375,69731.35370161917 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,76333.33333333333
+							54783.7136697233,76078.68932583326
+							55268.0753550602,75412.0226591666
+							55268.0753550602,74587.9773408334
+							54783.7136697233,73921.31067416674
+							54000.0,73666.66666666667
+							53216.2863302767,73921.31067416674
+							52731.9246449398,74587.9773408334
+							52731.9246449398,75412.0226591666
+							53216.2863302767,76078.68932583326
+							54000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54669.130606358856,75743.1448254774
+							54034.8994967025,75999.3908270191 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54998.629534754575,75052.33595624294
+							54731.35370161917,75681.9983600625 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54743.14482547739,74330.86939364114
+							54999.390827019095,74965.1005032975 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54052.33595624295,74001.37046524543
+							54681.9983600625,74268.64629838083 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53330.869393641144,74256.8551745226
+							53965.1005032975,74000.6091729809 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53001.370465245425,74947.66404375706
+							53268.64629838083,74318.0016399375 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53256.85517452261,75669.13060635886
+							53000.609172980905,75034.8994967025 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53947.66404375705,75998.62953475457
+							53318.0016399375,75731.35370161917 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,76333.33333333333
+							58783.7136697233,76078.68932583326
+							59268.0753550602,75412.0226591666
+							59268.0753550602,74587.9773408334
+							58783.7136697233,73921.31067416674
+							58000.0,73666.66666666667
+							57216.2863302767,73921.31067416674
+							56731.9246449398,74587.9773408334
+							56731.9246449398,75412.0226591666
+							57216.2863302767,76078.68932583326
+							58000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58669.130606358856,75743.1448254774
+							58034.8994967025,75999.3908270191 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58998.629534754575,75052.33595624294
+							58731.35370161917,75681.9983600625 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58743.14482547739,74330.86939364114
+							58999.390827019095,74965.1005032975 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58052.33595624295,74001.37046524543
+							58681.9983600625,74268.64629838083 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57330.869393641144,74256.8551745226
+							57965.1005032975,74000.6091729809 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57001.370465245425,74947.66404375706
+							57268.64629838083,74318.0016399375 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57256.85517452261,75669.13060635886
+							57000.609172980905,75034.8994967025 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57947.66404375705,75998.62953475457
+							57318.0016399375,75731.35370161917 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,82333.33333333333
+							22783.713669723296,82078.68932583326
+							23268.075355060206,81412.0226591666
+							23268.075355060206,80587.9773408334
+							22783.713669723296,79921.31067416674
+							22000.0,79666.66666666667
+							21216.286330276704,79921.31067416674
+							20731.924644939794,80587.9773408334
+							20731.924644939794,81412.0226591666
+							21216.286330276704,82078.68932583326
+							22000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22669.13060635886,81743.1448254774
+							22034.8994967025,81999.3908270191 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22998.629534754575,81052.33595624294
+							22731.35370161917,81681.9983600625 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22743.144825477393,80330.86939364114
+							22999.390827019095,80965.1005032975 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22052.335956242943,80001.37046524543
+							22681.9983600625,80268.64629838083 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21330.86939364114,80256.8551745226
+							21965.1005032975,80000.6091729809 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21001.370465245425,80947.66404375706
+							21268.64629838083,80318.0016399375 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21256.855174522607,81669.13060635886
+							21000.609172980905,81034.8994967025 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21947.664043757057,81998.62953475457
+							21318.0016399375,81731.35370161917 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,82333.33333333333
+							26783.713669723296,82078.68932583326
+							27268.075355060206,81412.0226591666
+							27268.075355060206,80587.9773408334
+							26783.713669723296,79921.31067416674
+							26000.0,79666.66666666667
+							25216.286330276704,79921.31067416674
+							24731.924644939794,80587.9773408334
+							24731.924644939794,81412.0226591666
+							25216.286330276704,82078.68932583326
+							26000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26669.13060635886,81743.1448254774
+							26034.8994967025,81999.3908270191 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26998.629534754575,81052.33595624294
+							26731.35370161917,81681.9983600625 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26743.144825477393,80330.86939364114
+							26999.390827019095,80965.1005032975 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26052.335956242943,80001.37046524543
+							26681.9983600625,80268.64629838083 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25330.86939364114,80256.8551745226
+							25965.1005032975,80000.6091729809 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25001.370465245425,80947.66404375706
+							25268.64629838083,80318.0016399375 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25256.855174522607,81669.13060635886
+							25000.609172980905,81034.8994967025 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25947.664043757057,81998.62953475457
+							25318.0016399375,81731.35370161917 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,88333.33333333333
+							22783.713669723296,88078.68932583326
+							23268.075355060206,87412.0226591666
+							23268.075355060206,86587.9773408334
+							22783.713669723296,85921.31067416674
+							22000.0,85666.66666666667
+							21216.286330276704,85921.31067416674
+							20731.924644939794,86587.9773408334
+							20731.924644939794,87412.0226591666
+							21216.286330276704,88078.68932583326
+							22000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22669.13060635886,87743.1448254774
+							22034.8994967025,87999.3908270191 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22998.629534754575,87052.33595624294
+							22731.35370161917,87681.9983600625 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22743.144825477393,86330.86939364114
+							22999.390827019095,86965.1005032975 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22052.335956242943,86001.37046524543
+							22681.9983600625,86268.64629838083 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21330.86939364114,86256.8551745226
+							21965.1005032975,86000.6091729809 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21001.370465245425,86947.66404375706
+							21268.64629838083,86318.0016399375 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21256.855174522607,87669.13060635886
+							21000.609172980905,87034.8994967025 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21947.664043757057,87998.62953475457
+							21318.0016399375,87731.35370161917 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,88333.33333333333
+							26783.713669723296,88078.68932583326
+							27268.075355060206,87412.0226591666
+							27268.075355060206,86587.9773408334
+							26783.713669723296,85921.31067416674
+							26000.0,85666.66666666667
+							25216.286330276704,85921.31067416674
+							24731.924644939794,86587.9773408334
+							24731.924644939794,87412.0226591666
+							25216.286330276704,88078.68932583326
+							26000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26669.13060635886,87743.1448254774
+							26034.8994967025,87999.3908270191 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26998.629534754575,87052.33595624294
+							26731.35370161917,87681.9983600625 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26743.144825477393,86330.86939364114
+							26999.390827019095,86965.1005032975 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26052.335956242943,86001.37046524543
+							26681.9983600625,86268.64629838083 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25330.86939364114,86256.8551745226
+							25965.1005032975,86000.6091729809 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25001.370465245425,86947.66404375706
+							25268.64629838083,86318.0016399375 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25256.855174522607,87669.13060635886
+							25000.609172980905,87034.8994967025 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25947.664043757057,87998.62953475457
+							25318.0016399375,87731.35370161917 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,82333.33333333333
+							30783.713669723296,82078.68932583326
+							31268.075355060206,81412.0226591666
+							31268.075355060206,80587.9773408334
+							30783.713669723296,79921.31067416674
+							30000.0,79666.66666666667
+							29216.286330276704,79921.31067416674
+							28731.924644939794,80587.9773408334
+							28731.924644939794,81412.0226591666
+							29216.286330276704,82078.68932583326
+							30000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30669.13060635886,81743.1448254774
+							30034.8994967025,81999.3908270191 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30998.629534754575,81052.33595624294
+							30731.35370161917,81681.9983600625 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30743.144825477393,80330.86939364114
+							30999.390827019095,80965.1005032975 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30052.335956242943,80001.37046524543
+							30681.9983600625,80268.64629838083 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29330.86939364114,80256.8551745226
+							29965.1005032975,80000.6091729809 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29001.370465245425,80947.66404375706
+							29268.64629838083,80318.0016399375 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29256.855174522607,81669.13060635886
+							29000.609172980905,81034.8994967025 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29947.664043757057,81998.62953475457
+							29318.0016399375,81731.35370161917 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,82333.33333333333
+							34783.7136697233,82078.68932583326
+							35268.0753550602,81412.0226591666
+							35268.0753550602,80587.9773408334
+							34783.7136697233,79921.31067416674
+							34000.0,79666.66666666667
+							33216.2863302767,79921.31067416674
+							32731.924644939794,80587.9773408334
+							32731.924644939794,81412.0226591666
+							33216.2863302767,82078.68932583326
+							34000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34669.130606358856,81743.1448254774
+							34034.8994967025,81999.3908270191 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34998.629534754575,81052.33595624294
+							34731.35370161917,81681.9983600625 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34743.14482547739,80330.86939364114
+							34999.390827019095,80965.1005032975 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34052.33595624295,80001.37046524543
+							34681.9983600625,80268.64629838083 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33330.869393641144,80256.8551745226
+							33965.1005032975,80000.6091729809 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33001.370465245425,80947.66404375706
+							33268.64629838083,80318.0016399375 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33256.85517452261,81669.13060635886
+							33000.609172980905,81034.8994967025 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33947.66404375705,81998.62953475457
+							33318.0016399375,81731.35370161917 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,88333.33333333333
+							30783.713669723296,88078.68932583326
+							31268.075355060206,87412.0226591666
+							31268.075355060206,86587.9773408334
+							30783.713669723296,85921.31067416674
+							30000.0,85666.66666666667
+							29216.286330276704,85921.31067416674
+							28731.924644939794,86587.9773408334
+							28731.924644939794,87412.0226591666
+							29216.286330276704,88078.68932583326
+							30000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30669.13060635886,87743.1448254774
+							30034.8994967025,87999.3908270191 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30998.629534754575,87052.33595624294
+							30731.35370161917,87681.9983600625 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30743.144825477393,86330.86939364114
+							30999.390827019095,86965.1005032975 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30052.335956242943,86001.37046524543
+							30681.9983600625,86268.64629838083 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29330.86939364114,86256.8551745226
+							29965.1005032975,86000.6091729809 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29001.370465245425,86947.66404375706
+							29268.64629838083,86318.0016399375 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29256.855174522607,87669.13060635886
+							29000.609172980905,87034.8994967025 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29947.664043757057,87998.62953475457
+							29318.0016399375,87731.35370161917 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,88333.33333333333
+							34783.7136697233,88078.68932583326
+							35268.0753550602,87412.0226591666
+							35268.0753550602,86587.9773408334
+							34783.7136697233,85921.31067416674
+							34000.0,85666.66666666667
+							33216.2863302767,85921.31067416674
+							32731.924644939794,86587.9773408334
+							32731.924644939794,87412.0226591666
+							33216.2863302767,88078.68932583326
+							34000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34669.130606358856,87743.1448254774
+							34034.8994967025,87999.3908270191 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34998.629534754575,87052.33595624294
+							34731.35370161917,87681.9983600625 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34743.14482547739,86330.86939364114
+							34999.390827019095,86965.1005032975 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34052.33595624295,86001.37046524543
+							34681.9983600625,86268.64629838083 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33330.869393641144,86256.8551745226
+							33965.1005032975,86000.6091729809 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33001.370465245425,86947.66404375706
+							33268.64629838083,86318.0016399375 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33256.85517452261,87669.13060635886
+							33000.609172980905,87034.8994967025 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33947.66404375705,87998.62953475457
+							33318.0016399375,87731.35370161917 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,82333.33333333333
+							38783.7136697233,82078.68932583326
+							39268.0753550602,81412.0226591666
+							39268.0753550602,80587.9773408334
+							38783.7136697233,79921.31067416674
+							38000.0,79666.66666666667
+							37216.2863302767,79921.31067416674
+							36731.9246449398,80587.9773408334
+							36731.9246449398,81412.0226591666
+							37216.2863302767,82078.68932583326
+							38000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38669.130606358856,81743.1448254774
+							38034.8994967025,81999.3908270191 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38998.629534754575,81052.33595624294
+							38731.35370161917,81681.9983600625 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38743.14482547739,80330.86939364114
+							38999.390827019095,80965.1005032975 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38052.33595624295,80001.37046524543
+							38681.9983600625,80268.64629838083 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37330.869393641144,80256.8551745226
+							37965.1005032975,80000.6091729809 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37001.370465245425,80947.66404375706
+							37268.64629838083,80318.0016399375 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37256.85517452261,81669.13060635886
+							37000.609172980905,81034.8994967025 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37947.66404375705,81998.62953475457
+							37318.0016399375,81731.35370161917 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,82333.33333333333
+							42783.7136697233,82078.68932583326
+							43268.0753550602,81412.0226591666
+							43268.0753550602,80587.9773408334
+							42783.7136697233,79921.31067416674
+							42000.0,79666.66666666667
+							41216.2863302767,79921.31067416674
+							40731.9246449398,80587.9773408334
+							40731.9246449398,81412.0226591666
+							41216.2863302767,82078.68932583326
+							42000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42669.130606358856,81743.1448254774
+							42034.8994967025,81999.3908270191 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42998.629534754575,81052.33595624294
+							42731.35370161917,81681.9983600625 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42743.14482547739,80330.86939364114
+							42999.390827019095,80965.1005032975 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42052.33595624295,80001.37046524543
+							42681.9983600625,80268.64629838083 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41330.869393641144,80256.8551745226
+							41965.1005032975,80000.6091729809 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41001.370465245425,80947.66404375706
+							41268.64629838083,80318.0016399375 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41256.85517452261,81669.13060635886
+							41000.609172980905,81034.8994967025 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41947.66404375705,81998.62953475457
+							41318.0016399375,81731.35370161917 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,88333.33333333333
+							38783.7136697233,88078.68932583326
+							39268.0753550602,87412.0226591666
+							39268.0753550602,86587.9773408334
+							38783.7136697233,85921.31067416674
+							38000.0,85666.66666666667
+							37216.2863302767,85921.31067416674
+							36731.9246449398,86587.9773408334
+							36731.9246449398,87412.0226591666
+							37216.2863302767,88078.68932583326
+							38000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38669.130606358856,87743.1448254774
+							38034.8994967025,87999.3908270191 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38998.629534754575,87052.33595624294
+							38731.35370161917,87681.9983600625 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38743.14482547739,86330.86939364114
+							38999.390827019095,86965.1005032975 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38052.33595624295,86001.37046524543
+							38681.9983600625,86268.64629838083 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37330.869393641144,86256.8551745226
+							37965.1005032975,86000.6091729809 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37001.370465245425,86947.66404375706
+							37268.64629838083,86318.0016399375 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37256.85517452261,87669.13060635886
+							37000.609172980905,87034.8994967025 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37947.66404375705,87998.62953475457
+							37318.0016399375,87731.35370161917 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,88333.33333333333
+							42783.7136697233,88078.68932583326
+							43268.0753550602,87412.0226591666
+							43268.0753550602,86587.9773408334
+							42783.7136697233,85921.31067416674
+							42000.0,85666.66666666667
+							41216.2863302767,85921.31067416674
+							40731.9246449398,86587.9773408334
+							40731.9246449398,87412.0226591666
+							41216.2863302767,88078.68932583326
+							42000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42669.130606358856,87743.1448254774
+							42034.8994967025,87999.3908270191 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42998.629534754575,87052.33595624294
+							42731.35370161917,87681.9983600625 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42743.14482547739,86330.86939364114
+							42999.390827019095,86965.1005032975 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42052.33595624295,86001.37046524543
+							42681.9983600625,86268.64629838083 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41330.869393641144,86256.8551745226
+							41965.1005032975,86000.6091729809 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41001.370465245425,86947.66404375706
+							41268.64629838083,86318.0016399375 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41256.85517452261,87669.13060635886
+							41000.609172980905,87034.8994967025 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41947.66404375705,87998.62953475457
+							41318.0016399375,87731.35370161917 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,82333.33333333333
+							46783.7136697233,82078.68932583326
+							47268.0753550602,81412.0226591666
+							47268.0753550602,80587.9773408334
+							46783.7136697233,79921.31067416674
+							46000.0,79666.66666666667
+							45216.2863302767,79921.31067416674
+							44731.9246449398,80587.9773408334
+							44731.9246449398,81412.0226591666
+							45216.2863302767,82078.68932583326
+							46000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46669.130606358856,81743.1448254774
+							46034.8994967025,81999.3908270191 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46998.629534754575,81052.33595624294
+							46731.35370161917,81681.9983600625 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46743.14482547739,80330.86939364114
+							46999.390827019095,80965.1005032975 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46052.33595624295,80001.37046524543
+							46681.9983600625,80268.64629838083 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45330.869393641144,80256.8551745226
+							45965.1005032975,80000.6091729809 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45001.370465245425,80947.66404375706
+							45268.64629838083,80318.0016399375 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45256.85517452261,81669.13060635886
+							45000.609172980905,81034.8994967025 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45947.66404375705,81998.62953475457
+							45318.0016399375,81731.35370161917 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,82333.33333333333
+							50783.7136697233,82078.68932583326
+							51268.0753550602,81412.0226591666
+							51268.0753550602,80587.9773408334
+							50783.7136697233,79921.31067416674
+							50000.0,79666.66666666667
+							49216.2863302767,79921.31067416674
+							48731.9246449398,80587.9773408334
+							48731.9246449398,81412.0226591666
+							49216.2863302767,82078.68932583326
+							50000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50669.130606358856,81743.1448254774
+							50034.8994967025,81999.3908270191 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50998.629534754575,81052.33595624294
+							50731.35370161917,81681.9983600625 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50743.14482547739,80330.86939364114
+							50999.390827019095,80965.1005032975 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50052.33595624295,80001.37046524543
+							50681.9983600625,80268.64629838083 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49330.869393641144,80256.8551745226
+							49965.1005032975,80000.6091729809 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49001.370465245425,80947.66404375706
+							49268.64629838083,80318.0016399375 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49256.85517452261,81669.13060635886
+							49000.609172980905,81034.8994967025 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49947.66404375705,81998.62953475457
+							49318.0016399375,81731.35370161917 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,88333.33333333333
+							46783.7136697233,88078.68932583326
+							47268.0753550602,87412.0226591666
+							47268.0753550602,86587.9773408334
+							46783.7136697233,85921.31067416674
+							46000.0,85666.66666666667
+							45216.2863302767,85921.31067416674
+							44731.9246449398,86587.9773408334
+							44731.9246449398,87412.0226591666
+							45216.2863302767,88078.68932583326
+							46000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46669.130606358856,87743.1448254774
+							46034.8994967025,87999.3908270191 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46998.629534754575,87052.33595624294
+							46731.35370161917,87681.9983600625 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46743.14482547739,86330.86939364114
+							46999.390827019095,86965.1005032975 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46052.33595624295,86001.37046524543
+							46681.9983600625,86268.64629838083 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45330.869393641144,86256.8551745226
+							45965.1005032975,86000.6091729809 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45001.370465245425,86947.66404375706
+							45268.64629838083,86318.0016399375 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45256.85517452261,87669.13060635886
+							45000.609172980905,87034.8994967025 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45947.66404375705,87998.62953475457
+							45318.0016399375,87731.35370161917 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,88333.33333333333
+							50783.7136697233,88078.68932583326
+							51268.0753550602,87412.0226591666
+							51268.0753550602,86587.9773408334
+							50783.7136697233,85921.31067416674
+							50000.0,85666.66666666667
+							49216.2863302767,85921.31067416674
+							48731.9246449398,86587.9773408334
+							48731.9246449398,87412.0226591666
+							49216.2863302767,88078.68932583326
+							50000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50669.130606358856,87743.1448254774
+							50034.8994967025,87999.3908270191 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50998.629534754575,87052.33595624294
+							50731.35370161917,87681.9983600625 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50743.14482547739,86330.86939364114
+							50999.390827019095,86965.1005032975 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50052.33595624295,86001.37046524543
+							50681.9983600625,86268.64629838083 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49330.869393641144,86256.8551745226
+							49965.1005032975,86000.6091729809 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49001.370465245425,86947.66404375706
+							49268.64629838083,86318.0016399375 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49256.85517452261,87669.13060635886
+							49000.609172980905,87034.8994967025 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49947.66404375705,87998.62953475457
+							49318.0016399375,87731.35370161917 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,82333.33333333333
+							54783.7136697233,82078.68932583326
+							55268.0753550602,81412.0226591666
+							55268.0753550602,80587.9773408334
+							54783.7136697233,79921.31067416674
+							54000.0,79666.66666666667
+							53216.2863302767,79921.31067416674
+							52731.9246449398,80587.9773408334
+							52731.9246449398,81412.0226591666
+							53216.2863302767,82078.68932583326
+							54000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54669.130606358856,81743.1448254774
+							54034.8994967025,81999.3908270191 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54998.629534754575,81052.33595624294
+							54731.35370161917,81681.9983600625 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54743.14482547739,80330.86939364114
+							54999.390827019095,80965.1005032975 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54052.33595624295,80001.37046524543
+							54681.9983600625,80268.64629838083 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53330.869393641144,80256.8551745226
+							53965.1005032975,80000.6091729809 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53001.370465245425,80947.66404375706
+							53268.64629838083,80318.0016399375 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53256.85517452261,81669.13060635886
+							53000.609172980905,81034.8994967025 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53947.66404375705,81998.62953475457
+							53318.0016399375,81731.35370161917 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,82333.33333333333
+							58783.7136697233,82078.68932583326
+							59268.0753550602,81412.0226591666
+							59268.0753550602,80587.9773408334
+							58783.7136697233,79921.31067416674
+							58000.0,79666.66666666667
+							57216.2863302767,79921.31067416674
+							56731.9246449398,80587.9773408334
+							56731.9246449398,81412.0226591666
+							57216.2863302767,82078.68932583326
+							58000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58669.130606358856,81743.1448254774
+							58034.8994967025,81999.3908270191 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58998.629534754575,81052.33595624294
+							58731.35370161917,81681.9983600625 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58743.14482547739,80330.86939364114
+							58999.390827019095,80965.1005032975 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58052.33595624295,80001.37046524543
+							58681.9983600625,80268.64629838083 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57330.869393641144,80256.8551745226
+							57965.1005032975,80000.6091729809 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57001.370465245425,80947.66404375706
+							57268.64629838083,80318.0016399375 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57256.85517452261,81669.13060635886
+							57000.609172980905,81034.8994967025 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57947.66404375705,81998.62953475457
+							57318.0016399375,81731.35370161917 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,88333.33333333333
+							54783.7136697233,88078.68932583326
+							55268.0753550602,87412.0226591666
+							55268.0753550602,86587.9773408334
+							54783.7136697233,85921.31067416674
+							54000.0,85666.66666666667
+							53216.2863302767,85921.31067416674
+							52731.9246449398,86587.9773408334
+							52731.9246449398,87412.0226591666
+							53216.2863302767,88078.68932583326
+							54000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54669.130606358856,87743.1448254774
+							54034.8994967025,87999.3908270191 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54998.629534754575,87052.33595624294
+							54731.35370161917,87681.9983600625 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54743.14482547739,86330.86939364114
+							54999.390827019095,86965.1005032975 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54052.33595624295,86001.37046524543
+							54681.9983600625,86268.64629838083 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53330.869393641144,86256.8551745226
+							53965.1005032975,86000.6091729809 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53001.370465245425,86947.66404375706
+							53268.64629838083,86318.0016399375 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53256.85517452261,87669.13060635886
+							53000.609172980905,87034.8994967025 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53947.66404375705,87998.62953475457
+							53318.0016399375,87731.35370161917 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,88333.33333333333
+							58783.7136697233,88078.68932583326
+							59268.0753550602,87412.0226591666
+							59268.0753550602,86587.9773408334
+							58783.7136697233,85921.31067416674
+							58000.0,85666.66666666667
+							57216.2863302767,85921.31067416674
+							56731.9246449398,86587.9773408334
+							56731.9246449398,87412.0226591666
+							57216.2863302767,88078.68932583326
+							58000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58669.130606358856,87743.1448254774
+							58034.8994967025,87999.3908270191 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58998.629534754575,87052.33595624294
+							58731.35370161917,87681.9983600625 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58743.14482547739,86330.86939364114
+							58999.390827019095,86965.1005032975 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58052.33595624295,86001.37046524543
+							58681.9983600625,86268.64629838083 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57330.869393641144,86256.8551745226
+							57965.1005032975,86000.6091729809 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57001.370465245425,86947.66404375706
+							57268.64629838083,86318.0016399375 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57256.85517452261,87669.13060635886
+							57000.609172980905,87034.8994967025 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57947.66404375705,87998.62953475457
+							57318.0016399375,87731.35370161917 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+</MultiGeometry>

Added: packages/jts/branches/upstream/current/jtsio/test/data/points.xml
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/data/points.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/data/points.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<Point>
+		<coordinates>24000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,84000.0 </coordinates>
+	</Point>
+	
+</MultiGeometry>

Added: packages/jts/branches/upstream/current/jtsio/test/data/polygons.xml
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/data/polygons.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/data/polygons.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,2047 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,38666.666666666664
+					25567.427339446596,38157.37865166653
+					26536.150710120408,36824.04531833319
+					26536.15071012041,35175.95468166681
+					25567.427339446596,33842.62134833347
+					24000.0,33333.333333333336
+					22432.572660553404,33842.62134833347
+					21463.849289879592,35175.95468166681
+					21463.84928987959,36824.04531833319
+					22432.572660553404,38157.37865166653
+					24000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					25338.261212717716,37486.289650954786
+					24069.798993405002,37998.78165403819 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					25997.25906950915,36104.67191248589
+					25462.707403238343,37363.996720125 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					25486.28965095479,34661.73878728229
+					25998.78165403819,35930.201006595 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					24104.67191248589,34002.74093049085
+					25363.996720124997,34537.29259676166 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					22661.738787282284,34513.710349045214
+					23930.201006594998,34001.21834596181 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					22002.74093049085,35895.32808751411
+					22537.292596761657,34636.003279875 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					22513.710349045214,37338.26121271772
+					22001.21834596181,36069.798993405 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					23895.328087514114,37997.25906950915
+					22636.003279875003,37462.70740323834 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,38666.666666666664
+					33567.42733944659,38157.37865166653
+					34536.15071012041,36824.04531833319
+					34536.15071012041,35175.95468166681
+					33567.42733944659,33842.62134833347
+					32000.0,33333.333333333336
+					30432.572660553404,33842.62134833347
+					29463.849289879592,35175.95468166681
+					29463.84928987959,36824.04531833319
+					30432.572660553404,38157.37865166653
+					32000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					33338.26121271772,37486.289650954786
+					32069.798993405002,37998.78165403819 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					33997.25906950915,36104.67191248589
+					33462.70740323834,37363.996720125 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					33486.289650954786,34661.73878728229
+					33998.78165403819,35930.201006595 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					32104.67191248589,34002.74093049085
+					33363.996720125,34537.29259676166 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					30661.738787282284,34513.710349045214
+					31930.201006594998,34001.21834596181 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					30002.74093049085,35895.32808751411
+					30537.292596761657,34636.003279875 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					30513.710349045214,37338.26121271772
+					30001.21834596181,36069.798993405 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					31895.328087514114,37997.25906950915
+					30636.003279875003,37462.70740323834 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,38666.666666666664
+					41567.42733944659,38157.37865166653
+					42536.15071012041,36824.04531833319
+					42536.15071012041,35175.95468166681
+					41567.42733944659,33842.62134833347
+					40000.0,33333.333333333336
+					38432.57266055341,33842.62134833347
+					37463.84928987959,35175.95468166681
+					37463.84928987959,36824.04531833319
+					38432.57266055341,38157.37865166653
+					40000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					41338.26121271772,37486.289650954786
+					40069.798993405,37998.78165403819 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					41997.25906950915,36104.67191248589
+					41462.70740323834,37363.996720125 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					41486.289650954786,34661.73878728229
+					41998.78165403819,35930.201006595 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					40104.67191248589,34002.74093049085
+					41363.996720125,34537.29259676166 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					38661.73878728228,34513.710349045214
+					39930.201006595,34001.21834596181 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					38002.74093049085,35895.32808751411
+					38537.29259676166,34636.003279875 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					38513.710349045214,37338.26121271772
+					38001.21834596181,36069.798993405 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					39895.32808751411,37997.25906950915
+					38636.003279875,37462.70740323834 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,38666.666666666664
+					49567.42733944659,38157.37865166653
+					50536.15071012041,36824.04531833319
+					50536.15071012041,35175.95468166681
+					49567.42733944659,33842.62134833347
+					48000.0,33333.333333333336
+					46432.57266055341,33842.62134833347
+					45463.84928987959,35175.95468166681
+					45463.84928987959,36824.04531833319
+					46432.57266055341,38157.37865166653
+					48000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					49338.26121271772,37486.289650954786
+					48069.798993405,37998.78165403819 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					49997.25906950915,36104.67191248589
+					49462.70740323834,37363.996720125 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					49486.289650954786,34661.73878728229
+					49998.78165403819,35930.201006595 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					48104.67191248589,34002.74093049085
+					49363.996720125,34537.29259676166 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					46661.73878728228,34513.710349045214
+					47930.201006595,34001.21834596181 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					46002.74093049085,35895.32808751411
+					46537.29259676166,34636.003279875 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					46513.710349045214,37338.26121271772
+					46001.21834596181,36069.798993405 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					47895.32808751411,37997.25906950915
+					46636.003279875,37462.70740323834 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,38666.666666666664
+					57567.42733944659,38157.37865166653
+					58536.15071012041,36824.04531833319
+					58536.15071012041,35175.95468166681
+					57567.42733944659,33842.62134833347
+					56000.0,33333.333333333336
+					54432.57266055341,33842.62134833347
+					53463.84928987959,35175.95468166681
+					53463.84928987959,36824.04531833319
+					54432.57266055341,38157.37865166653
+					56000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					57338.26121271772,37486.289650954786
+					56069.798993405,37998.78165403819 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					57997.25906950915,36104.67191248589
+					57462.70740323834,37363.996720125 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					57486.289650954786,34661.73878728229
+					57998.78165403819,35930.201006595 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					56104.67191248589,34002.74093049085
+					57363.996720125,34537.29259676166 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					54661.73878728228,34513.710349045214
+					55930.201006595,34001.21834596181 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					54002.74093049085,35895.32808751411
+					54537.29259676166,34636.003279875 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					54513.710349045214,37338.26121271772
+					54001.21834596181,36069.798993405 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					55895.32808751411,37997.25906950915
+					54636.003279875,37462.70740323834 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,50666.666666666664
+					25567.427339446596,50157.37865166653
+					26536.150710120408,48824.04531833319
+					26536.15071012041,47175.95468166681
+					25567.427339446596,45842.62134833347
+					24000.0,45333.333333333336
+					22432.572660553404,45842.62134833347
+					21463.849289879592,47175.95468166681
+					21463.84928987959,48824.04531833319
+					22432.572660553404,50157.37865166653
+					24000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					25338.261212717716,49486.289650954786
+					24069.798993405002,49998.78165403819 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					25997.25906950915,48104.67191248589
+					25462.707403238343,49363.996720125 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					25486.28965095479,46661.73878728229
+					25998.78165403819,47930.201006595 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					24104.67191248589,46002.74093049085
+					25363.996720124997,46537.29259676166 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					22661.738787282284,46513.710349045214
+					23930.201006594998,46001.21834596181 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					22002.74093049085,47895.32808751411
+					22537.292596761657,46636.003279875 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					22513.710349045214,49338.26121271772
+					22001.21834596181,48069.798993405 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					23895.328087514114,49997.25906950915
+					22636.003279875003,49462.70740323834 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,50666.666666666664
+					33567.42733944659,50157.37865166653
+					34536.15071012041,48824.04531833319
+					34536.15071012041,47175.95468166681
+					33567.42733944659,45842.62134833347
+					32000.0,45333.333333333336
+					30432.572660553404,45842.62134833347
+					29463.849289879592,47175.95468166681
+					29463.84928987959,48824.04531833319
+					30432.572660553404,50157.37865166653
+					32000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					33338.26121271772,49486.289650954786
+					32069.798993405002,49998.78165403819 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					33997.25906950915,48104.67191248589
+					33462.70740323834,49363.996720125 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					33486.289650954786,46661.73878728229
+					33998.78165403819,47930.201006595 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					32104.67191248589,46002.74093049085
+					33363.996720125,46537.29259676166 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					30661.738787282284,46513.710349045214
+					31930.201006594998,46001.21834596181 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					30002.74093049085,47895.32808751411
+					30537.292596761657,46636.003279875 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					30513.710349045214,49338.26121271772
+					30001.21834596181,48069.798993405 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					31895.328087514114,49997.25906950915
+					30636.003279875003,49462.70740323834 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,50666.666666666664
+					41567.42733944659,50157.37865166653
+					42536.15071012041,48824.04531833319
+					42536.15071012041,47175.95468166681
+					41567.42733944659,45842.62134833347
+					40000.0,45333.333333333336
+					38432.57266055341,45842.62134833347
+					37463.84928987959,47175.95468166681
+					37463.84928987959,48824.04531833319
+					38432.57266055341,50157.37865166653
+					40000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					41338.26121271772,49486.289650954786
+					40069.798993405,49998.78165403819 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					41997.25906950915,48104.67191248589
+					41462.70740323834,49363.996720125 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					41486.289650954786,46661.73878728229
+					41998.78165403819,47930.201006595 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					40104.67191248589,46002.74093049085
+					41363.996720125,46537.29259676166 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					38661.73878728228,46513.710349045214
+					39930.201006595,46001.21834596181 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					38002.74093049085,47895.32808751411
+					38537.29259676166,46636.003279875 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					38513.710349045214,49338.26121271772
+					38001.21834596181,48069.798993405 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					39895.32808751411,49997.25906950915
+					38636.003279875,49462.70740323834 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,50666.666666666664
+					49567.42733944659,50157.37865166653
+					50536.15071012041,48824.04531833319
+					50536.15071012041,47175.95468166681
+					49567.42733944659,45842.62134833347
+					48000.0,45333.333333333336
+					46432.57266055341,45842.62134833347
+					45463.84928987959,47175.95468166681
+					45463.84928987959,48824.04531833319
+					46432.57266055341,50157.37865166653
+					48000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					49338.26121271772,49486.289650954786
+					48069.798993405,49998.78165403819 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					49997.25906950915,48104.67191248589
+					49462.70740323834,49363.996720125 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					49486.289650954786,46661.73878728229
+					49998.78165403819,47930.201006595 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					48104.67191248589,46002.74093049085
+					49363.996720125,46537.29259676166 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					46661.73878728228,46513.710349045214
+					47930.201006595,46001.21834596181 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					46002.74093049085,47895.32808751411
+					46537.29259676166,46636.003279875 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					46513.710349045214,49338.26121271772
+					46001.21834596181,48069.798993405 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					47895.32808751411,49997.25906950915
+					46636.003279875,49462.70740323834 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,50666.666666666664
+					57567.42733944659,50157.37865166653
+					58536.15071012041,48824.04531833319
+					58536.15071012041,47175.95468166681
+					57567.42733944659,45842.62134833347
+					56000.0,45333.333333333336
+					54432.57266055341,45842.62134833347
+					53463.84928987959,47175.95468166681
+					53463.84928987959,48824.04531833319
+					54432.57266055341,50157.37865166653
+					56000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					57338.26121271772,49486.289650954786
+					56069.798993405,49998.78165403819 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					57997.25906950915,48104.67191248589
+					57462.70740323834,49363.996720125 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					57486.289650954786,46661.73878728229
+					57998.78165403819,47930.201006595 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					56104.67191248589,46002.74093049085
+					57363.996720125,46537.29259676166 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					54661.73878728228,46513.710349045214
+					55930.201006595,46001.21834596181 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					54002.74093049085,47895.32808751411
+					54537.29259676166,46636.003279875 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					54513.710349045214,49338.26121271772
+					54001.21834596181,48069.798993405 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					55895.32808751411,49997.25906950915
+					54636.003279875,49462.70740323834 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,62666.666666666664
+					25567.427339446596,62157.37865166653
+					26536.150710120408,60824.04531833319
+					26536.15071012041,59175.95468166681
+					25567.427339446596,57842.62134833347
+					24000.0,57333.333333333336
+					22432.572660553404,57842.62134833347
+					21463.849289879592,59175.95468166681
+					21463.84928987959,60824.04531833319
+					22432.572660553404,62157.37865166653
+					24000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					25338.261212717716,61486.289650954786
+					24069.798993405002,61998.78165403819 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					25997.25906950915,60104.67191248589
+					25462.707403238343,61363.996720125 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					25486.28965095479,58661.73878728229
+					25998.78165403819,59930.201006595 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					24104.67191248589,58002.74093049085
+					25363.996720124997,58537.29259676166 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					22661.738787282284,58513.710349045214
+					23930.201006594998,58001.21834596181 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					22002.74093049085,59895.32808751411
+					22537.292596761657,58636.003279875 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					22513.710349045214,61338.26121271772
+					22001.21834596181,60069.798993405 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					23895.328087514114,61997.25906950915
+					22636.003279875003,61462.70740323834 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,62666.666666666664
+					33567.42733944659,62157.37865166653
+					34536.15071012041,60824.04531833319
+					34536.15071012041,59175.95468166681
+					33567.42733944659,57842.62134833347
+					32000.0,57333.333333333336
+					30432.572660553404,57842.62134833347
+					29463.849289879592,59175.95468166681
+					29463.84928987959,60824.04531833319
+					30432.572660553404,62157.37865166653
+					32000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					33338.26121271772,61486.289650954786
+					32069.798993405002,61998.78165403819 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					33997.25906950915,60104.67191248589
+					33462.70740323834,61363.996720125 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					33486.289650954786,58661.73878728229
+					33998.78165403819,59930.201006595 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					32104.67191248589,58002.74093049085
+					33363.996720125,58537.29259676166 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					30661.738787282284,58513.710349045214
+					31930.201006594998,58001.21834596181 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					30002.74093049085,59895.32808751411
+					30537.292596761657,58636.003279875 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					30513.710349045214,61338.26121271772
+					30001.21834596181,60069.798993405 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					31895.328087514114,61997.25906950915
+					30636.003279875003,61462.70740323834 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,62666.666666666664
+					41567.42733944659,62157.37865166653
+					42536.15071012041,60824.04531833319
+					42536.15071012041,59175.95468166681
+					41567.42733944659,57842.62134833347
+					40000.0,57333.333333333336
+					38432.57266055341,57842.62134833347
+					37463.84928987959,59175.95468166681
+					37463.84928987959,60824.04531833319
+					38432.57266055341,62157.37865166653
+					40000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					41338.26121271772,61486.289650954786
+					40069.798993405,61998.78165403819 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					41997.25906950915,60104.67191248589
+					41462.70740323834,61363.996720125 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					41486.289650954786,58661.73878728229
+					41998.78165403819,59930.201006595 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					40104.67191248589,58002.74093049085
+					41363.996720125,58537.29259676166 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					38661.73878728228,58513.710349045214
+					39930.201006595,58001.21834596181 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					38002.74093049085,59895.32808751411
+					38537.29259676166,58636.003279875 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					38513.710349045214,61338.26121271772
+					38001.21834596181,60069.798993405 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					39895.32808751411,61997.25906950915
+					38636.003279875,61462.70740323834 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,62666.666666666664
+					49567.42733944659,62157.37865166653
+					50536.15071012041,60824.04531833319
+					50536.15071012041,59175.95468166681
+					49567.42733944659,57842.62134833347
+					48000.0,57333.333333333336
+					46432.57266055341,57842.62134833347
+					45463.84928987959,59175.95468166681
+					45463.84928987959,60824.04531833319
+					46432.57266055341,62157.37865166653
+					48000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					49338.26121271772,61486.289650954786
+					48069.798993405,61998.78165403819 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					49997.25906950915,60104.67191248589
+					49462.70740323834,61363.996720125 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					49486.289650954786,58661.73878728229
+					49998.78165403819,59930.201006595 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					48104.67191248589,58002.74093049085
+					49363.996720125,58537.29259676166 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					46661.73878728228,58513.710349045214
+					47930.201006595,58001.21834596181 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					46002.74093049085,59895.32808751411
+					46537.29259676166,58636.003279875 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					46513.710349045214,61338.26121271772
+					46001.21834596181,60069.798993405 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					47895.32808751411,61997.25906950915
+					46636.003279875,61462.70740323834 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,62666.666666666664
+					57567.42733944659,62157.37865166653
+					58536.15071012041,60824.04531833319
+					58536.15071012041,59175.95468166681
+					57567.42733944659,57842.62134833347
+					56000.0,57333.333333333336
+					54432.57266055341,57842.62134833347
+					53463.84928987959,59175.95468166681
+					53463.84928987959,60824.04531833319
+					54432.57266055341,62157.37865166653
+					56000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					57338.26121271772,61486.289650954786
+					56069.798993405,61998.78165403819 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					57997.25906950915,60104.67191248589
+					57462.70740323834,61363.996720125 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					57486.289650954786,58661.73878728229
+					57998.78165403819,59930.201006595 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					56104.67191248589,58002.74093049085
+					57363.996720125,58537.29259676166 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					54661.73878728228,58513.710349045214
+					55930.201006595,58001.21834596181 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					54002.74093049085,59895.32808751411
+					54537.29259676166,58636.003279875 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					54513.710349045214,61338.26121271772
+					54001.21834596181,60069.798993405 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					55895.32808751411,61997.25906950915
+					54636.003279875,61462.70740323834 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,74666.66666666667
+					25567.427339446596,74157.37865166653
+					26536.150710120408,72824.0453183332
+					26536.15071012041,71175.9546816668
+					25567.427339446596,69842.62134833347
+					24000.0,69333.33333333333
+					22432.572660553404,69842.62134833347
+					21463.849289879592,71175.9546816668
+					21463.84928987959,72824.0453183332
+					22432.572660553404,74157.37865166653
+					24000.0,74666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					25338.261212717716,73486.28965095479
+					24069.798993405002,73998.78165403819 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					25997.25906950915,72104.6719124859
+					25462.707403238343,73363.996720125 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					25486.28965095479,70661.73878728229
+					25998.78165403819,71930.201006595 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					24104.67191248589,70002.74093049085
+					25363.996720124997,70537.29259676166 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					22661.738787282284,70513.71034904521
+					23930.201006594998,70001.21834596181 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					22002.74093049085,71895.3280875141
+					22537.292596761657,70636.003279875 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					22513.710349045214,73338.26121271771
+					22001.21834596181,72069.798993405 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					23895.328087514114,73997.25906950915
+					22636.003279875003,73462.70740323834 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,74666.66666666667
+					33567.42733944659,74157.37865166653
+					34536.15071012041,72824.0453183332
+					34536.15071012041,71175.9546816668
+					33567.42733944659,69842.62134833347 32000.0,69333.33333333333
+					30432.572660553404,69842.62134833347
+					29463.849289879592,71175.9546816668
+					29463.84928987959,72824.0453183332
+					30432.572660553404,74157.37865166653
+					32000.0,74666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					33338.26121271772,73486.28965095479
+					32069.798993405002,73998.78165403819 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					33997.25906950915,72104.6719124859
+					33462.70740323834,73363.996720125 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					33486.289650954786,70661.73878728229
+					33998.78165403819,71930.201006595 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					32104.67191248589,70002.74093049085
+					33363.996720125,70537.29259676166 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					30661.738787282284,70513.71034904521
+					31930.201006594998,70001.21834596181 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					30002.74093049085,71895.3280875141
+					30537.292596761657,70636.003279875 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					30513.710349045214,73338.26121271771
+					30001.21834596181,72069.798993405 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					31895.328087514114,73997.25906950915
+					30636.003279875003,73462.70740323834 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,74666.66666666667
+					41567.42733944659,74157.37865166653
+					42536.15071012041,72824.0453183332
+					42536.15071012041,71175.9546816668
+					41567.42733944659,69842.62134833347 40000.0,69333.33333333333
+					38432.57266055341,69842.62134833347
+					37463.84928987959,71175.9546816668
+					37463.84928987959,72824.0453183332
+					38432.57266055341,74157.37865166653 40000.0,74666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					41338.26121271772,73486.28965095479
+					40069.798993405,73998.78165403819 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					41997.25906950915,72104.6719124859
+					41462.70740323834,73363.996720125 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					41486.289650954786,70661.73878728229
+					41998.78165403819,71930.201006595 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					40104.67191248589,70002.74093049085
+					41363.996720125,70537.29259676166 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					38661.73878728228,70513.71034904521
+					39930.201006595,70001.21834596181 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					38002.74093049085,71895.3280875141
+					38537.29259676166,70636.003279875 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					38513.710349045214,73338.26121271771
+					38001.21834596181,72069.798993405 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					39895.32808751411,73997.25906950915
+					38636.003279875,73462.70740323834 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,74666.66666666667
+					49567.42733944659,74157.37865166653
+					50536.15071012041,72824.0453183332
+					50536.15071012041,71175.9546816668
+					49567.42733944659,69842.62134833347 48000.0,69333.33333333333
+					46432.57266055341,69842.62134833347
+					45463.84928987959,71175.9546816668
+					45463.84928987959,72824.0453183332
+					46432.57266055341,74157.37865166653 48000.0,74666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					49338.26121271772,73486.28965095479
+					48069.798993405,73998.78165403819 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					49997.25906950915,72104.6719124859
+					49462.70740323834,73363.996720125 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					49486.289650954786,70661.73878728229
+					49998.78165403819,71930.201006595 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					48104.67191248589,70002.74093049085
+					49363.996720125,70537.29259676166 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					46661.73878728228,70513.71034904521
+					47930.201006595,70001.21834596181 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					46002.74093049085,71895.3280875141
+					46537.29259676166,70636.003279875 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					46513.710349045214,73338.26121271771
+					46001.21834596181,72069.798993405 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					47895.32808751411,73997.25906950915
+					46636.003279875,73462.70740323834 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,74666.66666666667
+					57567.42733944659,74157.37865166653
+					58536.15071012041,72824.0453183332
+					58536.15071012041,71175.9546816668
+					57567.42733944659,69842.62134833347 56000.0,69333.33333333333
+					54432.57266055341,69842.62134833347
+					53463.84928987959,71175.9546816668
+					53463.84928987959,72824.0453183332
+					54432.57266055341,74157.37865166653 56000.0,74666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					57338.26121271772,73486.28965095479
+					56069.798993405,73998.78165403819 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					57997.25906950915,72104.6719124859
+					57462.70740323834,73363.996720125 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					57486.289650954786,70661.73878728229
+					57998.78165403819,71930.201006595 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					56104.67191248589,70002.74093049085
+					57363.996720125,70537.29259676166 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					54661.73878728228,70513.71034904521
+					55930.201006595,70001.21834596181 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					54002.74093049085,71895.3280875141
+					54537.29259676166,70636.003279875 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					54513.710349045214,73338.26121271771
+					54001.21834596181,72069.798993405 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					55895.32808751411,73997.25906950915
+					54636.003279875,73462.70740323834 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,86666.66666666667
+					25567.427339446596,86157.37865166653
+					26536.150710120408,84824.0453183332
+					26536.15071012041,83175.9546816668
+					25567.427339446596,81842.62134833347
+					24000.0,81333.33333333333
+					22432.572660553404,81842.62134833347
+					21463.849289879592,83175.9546816668
+					21463.84928987959,84824.0453183332
+					22432.572660553404,86157.37865166653
+					24000.0,86666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					25338.261212717716,85486.28965095479
+					24069.798993405002,85998.78165403819 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					25997.25906950915,84104.6719124859
+					25462.707403238343,85363.996720125 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					25486.28965095479,82661.73878728229
+					25998.78165403819,83930.201006595 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					24104.67191248589,82002.74093049085
+					25363.996720124997,82537.29259676166 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					22661.738787282284,82513.71034904521
+					23930.201006594998,82001.21834596181 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					22002.74093049085,83895.3280875141
+					22537.292596761657,82636.003279875 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					22513.710349045214,85338.26121271771
+					22001.21834596181,84069.798993405 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					23895.328087514114,85997.25906950915
+					22636.003279875003,85462.70740323834 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,86666.66666666667
+					33567.42733944659,86157.37865166653
+					34536.15071012041,84824.0453183332
+					34536.15071012041,83175.9546816668
+					33567.42733944659,81842.62134833347 32000.0,81333.33333333333
+					30432.572660553404,81842.62134833347
+					29463.849289879592,83175.9546816668
+					29463.84928987959,84824.0453183332
+					30432.572660553404,86157.37865166653
+					32000.0,86666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					33338.26121271772,85486.28965095479
+					32069.798993405002,85998.78165403819 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					33997.25906950915,84104.6719124859
+					33462.70740323834,85363.996720125 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					33486.289650954786,82661.73878728229
+					33998.78165403819,83930.201006595 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					32104.67191248589,82002.74093049085
+					33363.996720125,82537.29259676166 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					30661.738787282284,82513.71034904521
+					31930.201006594998,82001.21834596181 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					30002.74093049085,83895.3280875141
+					30537.292596761657,82636.003279875 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					30513.710349045214,85338.26121271771
+					30001.21834596181,84069.798993405 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					31895.328087514114,85997.25906950915
+					30636.003279875003,85462.70740323834 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,86666.66666666667
+					41567.42733944659,86157.37865166653
+					42536.15071012041,84824.0453183332
+					42536.15071012041,83175.9546816668
+					41567.42733944659,81842.62134833347 40000.0,81333.33333333333
+					38432.57266055341,81842.62134833347
+					37463.84928987959,83175.9546816668
+					37463.84928987959,84824.0453183332
+					38432.57266055341,86157.37865166653 40000.0,86666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					41338.26121271772,85486.28965095479
+					40069.798993405,85998.78165403819 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					41997.25906950915,84104.6719124859
+					41462.70740323834,85363.996720125 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					41486.289650954786,82661.73878728229
+					41998.78165403819,83930.201006595 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					40104.67191248589,82002.74093049085
+					41363.996720125,82537.29259676166 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					38661.73878728228,82513.71034904521
+					39930.201006595,82001.21834596181 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					38002.74093049085,83895.3280875141
+					38537.29259676166,82636.003279875 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					38513.710349045214,85338.26121271771
+					38001.21834596181,84069.798993405 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					39895.32808751411,85997.25906950915
+					38636.003279875,85462.70740323834 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,86666.66666666667
+					49567.42733944659,86157.37865166653
+					50536.15071012041,84824.0453183332
+					50536.15071012041,83175.9546816668
+					49567.42733944659,81842.62134833347 48000.0,81333.33333333333
+					46432.57266055341,81842.62134833347
+					45463.84928987959,83175.9546816668
+					45463.84928987959,84824.0453183332
+					46432.57266055341,86157.37865166653 48000.0,86666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					49338.26121271772,85486.28965095479
+					48069.798993405,85998.78165403819 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					49997.25906950915,84104.6719124859
+					49462.70740323834,85363.996720125 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					49486.289650954786,82661.73878728229
+					49998.78165403819,83930.201006595 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					48104.67191248589,82002.74093049085
+					49363.996720125,82537.29259676166 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					46661.73878728228,82513.71034904521
+					47930.201006595,82001.21834596181 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					46002.74093049085,83895.3280875141
+					46537.29259676166,82636.003279875 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					46513.710349045214,85338.26121271771
+					46001.21834596181,84069.798993405 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					47895.32808751411,85997.25906950915
+					46636.003279875,85462.70740323834 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,86666.66666666667
+					57567.42733944659,86157.37865166653
+					58536.15071012041,84824.0453183332
+					58536.15071012041,83175.9546816668
+					57567.42733944659,81842.62134833347 56000.0,81333.33333333333
+					54432.57266055341,81842.62134833347
+					53463.84928987959,83175.9546816668
+					53463.84928987959,84824.0453183332
+					54432.57266055341,86157.37865166653 56000.0,86666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					57338.26121271772,85486.28965095479
+					56069.798993405,85998.78165403819 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					57997.25906950915,84104.6719124859
+					57462.70740323834,85363.996720125 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					57486.289650954786,82661.73878728229
+					57998.78165403819,83930.201006595 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					56104.67191248589,82002.74093049085
+					57363.996720125,82537.29259676166 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					54661.73878728228,82513.71034904521
+					55930.201006595,82001.21834596181 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					54002.74093049085,83895.3280875141
+					54537.29259676166,82636.003279875 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					54513.710349045214,85338.26121271771
+					54001.21834596181,84069.798993405 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					55895.32808751411,85997.25906950915
+					54636.003279875,85462.70740323834 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+</MultiGeometry>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/jtsio/test/readme
===================================================================
--- packages/jts/branches/upstream/current/jtsio/test/readme	                        (rev 0)
+++ packages/jts/branches/upstream/current/jtsio/test/readme	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1 @@
+Set of tests and testing utilities which require the same jar set as the src directory, with the exception of the junit jar.
\ No newline at end of file

Deleted: packages/jts/branches/upstream/current/src/Doxyfile
===================================================================
--- packages/jts/branches/upstream/current/src/Doxyfile	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/Doxyfile	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,200 +0,0 @@
-# Doxyfile 1.3-rc1
-
-#---------------------------------------------------------------------------
-# General configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME           = JTS
-PROJECT_NUMBER         = 
-OUTPUT_DIRECTORY       = c:\public\doxygen\jts
-OUTPUT_LANGUAGE        = English
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = YES
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ALWAYS_DETAILED_SEC    = NO
-INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = 
-INTERNAL_DOCS          = NO
-CASE_SENSE_NAMES       = YES
-SHORT_NAMES            = NO
-HIDE_SCOPE_NAMES       = NO
-VERBATIM_HEADERS       = YES
-SHOW_INCLUDE_FILES     = YES
-JAVADOC_AUTOBRIEF      = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
-INHERIT_DOCS           = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = YES
-DISTRIBUTE_GROUP_DOC   = NO
-TAB_SIZE               = 8
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ALIASES                = 
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 30
-OPTIMIZE_OUTPUT_FOR_C  = NO
-OPTIMIZE_OUTPUT_JAVA   = YES
-SHOW_USED_FILES        = YES
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT                  = U:/jaquino/CVS/jts/src/
-FILE_PATTERNS          = 
-RECURSIVE              = YES
-EXCLUDE                = 
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
-INPUT_FILTER           = 
-FILTER_SOURCE_FILES    = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = YES
-INLINE_SOURCES         = YES
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION    = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = YES
-COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = YES
-HTML_OUTPUT            = html
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-BINARY_TOC             = NO
-TOC_EXPAND             = NO
-DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = NO
-TREEVIEW_WIDTH         = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = NO
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
-LATEX_BATCHMODE        = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_SCHEMA             = 
-XML_DTD                = 
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = NO
-EXPAND_ONLY_PREDEF     = NO
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = YES
-HIDE_UNDOC_RELATIONS   = YES
-HAVE_DOT               = YES
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = YES
-TEMPLATE_RELATIONS     = YES
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = YES
-GRAPHICAL_HIERARCHY    = YES
-DOT_IMAGE_FORMAT       = png
-DOT_PATH               = h:/utilities
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
-GENERATE_LEGEND        = YES
-DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
-CGI_NAME               = search.cgi
-CGI_URL                = 
-DOC_URL                = 
-DOC_ABSPATH            = 
-BIN_ABSPATH            = /usr/local/bin/
-EXT_DOC_PATHS          = 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/JTSVersion.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/JTSVersion.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/JTSVersion.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -24,7 +24,7 @@
   /**
    * The minor version number.
    */
-  public static final int MINOR = 7;
+  public static final int MINOR = 8;
 
   /**
    * The patch version number.

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/Angle.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/Angle.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/Angle.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,250 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+
+/**
+ * Utility functions for working with angles.
+ * Unless otherwise noted, methods in this class express angles in radians.
+ */
+public class Angle
+{
+  public static final double PI_TIMES_2 = 2.0 * Math.PI;
+  public static final double PI_OVER_2 = Math.PI / 2.0;
+  public static final double PI_OVER_4 = Math.PI / 4.0;
+
+  /** Constant representing counterclockwise orientation */
+  public static final int COUNTERCLOCKWISE = CGAlgorithms.COUNTERCLOCKWISE;
+
+  /** Constant representing clockwise orientation */
+  public static final int CLOCKWISE = CGAlgorithms.CLOCKWISE;
+
+  /** Constant representing no orientation */
+  public static final int NONE = CGAlgorithms.COLLINEAR;
+
+  /**
+   * Converts from radians to degrees.
+   * @param radians an angle in radians
+   * @return the angle in degrees
+   */
+  public static double toDegrees(double radians) {
+      return (radians * 180) / (Math.PI);
+  }
+
+  /**
+   * Converts from degrees to radians.
+   *
+   * @param angleDegrees an angle in degrees
+   * @return the angle in radians
+   */
+  public static double toRadians(double angleDegrees) {
+      return (angleDegrees * Math.PI) / 180.0;
+  }
+
+
+  /**
+   * Returns the angle of the vector from p0 to p1,
+   * relative to the positive X-axis.
+   * The angle will be in the range [ -Pi, Pi ].
+   *
+   * @return the angle (in radians) that p0-p1 makes with the positive x-axis.
+   */
+  public static double angle(Coordinate p0, Coordinate p1) {
+      double dx = p1.x - p0.x;
+      double dy = p1.y - p0.y;
+      return Math.atan2(dy, dx);
+  }
+
+  /**
+   * Returns the angle that the vector from (0,0) to p,
+   * relative to the positive X-axis.
+   * The angle will be in the range [ -Pi, Pi ].
+   *
+   * @return the angle (in radians) that p makes with the positive x-axis.
+   */
+  public static double angle(Coordinate p) {
+      return Math.atan2(p.y, p.x);
+  }
+
+
+  /**
+   * Tests whether the angle between p0-p1-p2 is acute.
+   *
+   * @param p0 an endpoint of the angle
+   * @param p1 the base of the angle
+   * @param p2 the other endpoint of the angle
+   */
+  public static boolean isAcute(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    // relies on fact that A dot B is positive iff A ang B is acute
+    double dx0 = p0.x - p1.x;
+    double dy0 = p0.y - p1.y;
+    double dx1 = p2.x - p1.x;
+    double dy1 = p2.y - p1.y;
+    double dotprod = dx0 * dx1 + dy0 * dy1;
+    return dotprod > 0;
+  }
+
+  /**
+   * Tests whether the angle between p0-p1-p2 is obtuse.
+   *
+   * @param p0 an endpoint of the angle
+   * @param p1 the base of the angle
+   * @param p2 the other endpoint of the angle
+   */
+  public static boolean isObtuse(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    // relies on fact that A dot B is negative iff A ang B is obtuse
+    double dx0 = p0.x - p1.x;
+    double dy0 = p0.y - p1.y;
+    double dx1 = p2.x - p1.x;
+    double dy1 = p2.y - p1.y;
+    double dotprod = dx0 * dx1 + dy0 * dy1;
+    return dotprod < 0;
+  }
+
+  /**
+   * Returns the smallest angle between two vectors.
+   * The computed angle will be in the range [0, Pi].
+   *
+   * @param tip1 the tip of one vector
+   * @param tail the tail of each vector
+   * @param tip2 the tip of the other vector
+   * @return the angle between tail-tip1 and tail-tip2
+   */
+  public static double angleBetween(Coordinate tip1,
+                                    Coordinate tail,
+      Coordinate tip2) {
+      double a1 = angle(tail, tip1);
+      double a2 = angle(tail, tip2);
+
+      return diff(a1, a2);
+  }
+
+  /**
+   * Computes the interior angle between two segments of a ring.
+   * The ring is assumed to be oriented in a clockwise direction.
+   * The computed angle will be in the range [0, 2Pi]
+   *
+   * @param p0 a point of the ring
+   * @param p1 the next point of the ring
+   * @param p2 the next point of the ring
+   * @return the interior angle based at <code>p1</code>
+   */
+  public static double interiorAngle(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    double anglePrev = Angle.angle(p1, p0);
+    double angleNext = Angle.angle(p1, p2);
+    return Math.abs(angleNext - anglePrev);
+  }
+
+  /**
+   * Returns whether an angle must turn clockwise or counterclockwise
+   * to overlap another angle.
+   *
+   * @param ang1 an angle (in radians)
+   * @param ang2 an angle (in radians)
+   * @return whether a1 must turn CLOCKWISE, COUNTERCLOCKWISE or NONE to
+   * overlap a2.
+   */
+  public static int getTurn(double ang1, double ang2) {
+      double crossproduct = Math.sin(ang2 - ang1);
+
+      if (crossproduct > 0) {
+          return COUNTERCLOCKWISE;
+      }
+
+      if (crossproduct < 0) {
+          return CLOCKWISE;
+      }
+
+      return NONE;
+  }
+
+  /**
+   * Computes the normalized value of an angle, which is the
+   * equivalent angle in the range [ -Pi, Pi ].
+   *
+   * @param angle the angle to normalize
+   * @return an equivalent angle in the range [-Pi, Pi]
+   */
+  public static double normalize(double angle)
+  {
+    while (angle > Math.PI)
+      angle -= PI_TIMES_2;
+    while (angle < -Math.PI)
+      angle += PI_TIMES_2;
+    return angle;
+  }
+
+  /**
+   * Computes the normalized positive value of an angle, which is the
+   * equivalent angle in the range [ 0, 2*Pi ].
+   *
+   * @param angle the angle to normalize, in radians
+   * @return an equivalent positive angle
+   */
+  public static double normalizePositive(double angle)
+  {
+    while (angle < 0.0)
+      angle += PI_TIMES_2;
+    return angle;
+  }
+
+  /**
+   * Computes the unoriented (smallest) difference between two angles.
+   * The angles are assumed to be normalized to the range [-Pi, Pi].
+   * The result will be in the range [0, Pi].
+   *
+   * @param ang1 the angle of one vector (in [-Pi, Pi] )
+   * @param ang2 the angle of the other vector (in range [-Pi, Pi] )
+   * @return the angle (in radians) between the two vectors (in range [0, Pi] )
+   */
+  public static double diff(double ang1, double ang2) {
+    double delAngle;
+
+    if (ang1 < ang2) {
+      delAngle = ang2 - ang1;
+    } else {
+      delAngle = ang1 - ang2;
+    }
+
+    if (delAngle > Math.PI) {
+      delAngle = (2 * Math.PI) - delAngle;
+    }
+
+    return delAngle;
+  }
+}

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,178 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+/**
+ * An interface for rules which determine whether node points
+ * which are in boundaries of lineal geometry components
+ * are in the boundary of the parent geometry collection.
+ * The SFS specifies a single kind of boundary node rule,
+ * the {@link Mod2BoundaryNodeRule} rule.
+ * However, other kinds of Boundary Node Rules are appropriate
+ * in specific situations (for instance, linear network topology
+ * usually follows the {@link EndPointBoundaryNodeRule}.)
+ * Some JTS operations allow the BoundaryNodeRule to be specified,
+ * and respect this rule when computing the results of the operation.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ *
+ * @see RelateOp
+ * @see IsSimpleOp
+ */
+public interface BoundaryNodeRule
+{
+
+  boolean isInBoundary(int boundaryCount);
+
+  /**
+   * The Mod-2 Boundary Node Rule (as used in the OGC SFS).
+   */
+  public static final BoundaryNodeRule MOD2_BOUNDARY_RULE = new Mod2BoundaryNodeRule();
+
+
+  /**
+   * The Endpoint Boundary Node Rule.
+   */
+  public static final BoundaryNodeRule ENDPOINT_BOUNDARY_RULE = new EndPointBoundaryNodeRule();
+
+  /**
+   * The MultiValent Endpoint Boundary Node Rule.
+   */
+  public static final BoundaryNodeRule MULTIVALENT_ENDPOINT_BOUNDARY_RULE = new MultiValentEndPointBoundaryNodeRule();
+
+  /**
+   * The Monovalent Endpoint Boundary Node Rule.
+   */
+  public static final BoundaryNodeRule MONOVALENT_ENDPOINT_BOUNDARY_RULE = new MonoValentEndPointBoundaryNodeRule();
+
+  /**
+   * The Boundary Node Rule specified by the OGC Simple Features Specification,
+   * equal to the Mod-2 rule.
+   */
+  public static final BoundaryNodeRule OGC_SFS_BOUNDARY_RULE = MOD2_BOUNDARY_RULE;
+
+  /**
+   * A {@link BoundaryNodeRule} specifies that points are in the
+   * boundary of a lineal geometry iff
+   * the point lies on the boundary of an odd number
+   * of components.
+   * Under this rule {@link LinearRing}s and closed
+   * {@link LineString}s have an empty boundary.
+   * <p>
+   * This is the rule specified by the <i>OGC SFS</i>,
+   * and is the default rule used in JTS.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class Mod2BoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      // the "Mod-2 Rule"
+      return boundaryCount % 2 == 1;
+    }
+  }
+
+  /**
+   * A {@link BoundaryNodeRule} which specifies that any points which are endpoints
+   * of lineal components are in the boundary of the
+   * parent geometry.
+   * This corresponds to the "intuitive" topological definition
+   * of boundary.
+   * Under this rule {@link LinearRing}s have a non-empty boundary
+   * (the common endpoint of the underlying LineString).
+   * <p>
+   * This rule is useful when dealing with linear networks.
+   * For example, it can be used to check
+   * whether linear networks are correctly noded.
+   * The usual network topology constraint is that linear segments may touch only at endpoints.
+   * In the case of a segment touching a closed segment (ring) at one point,
+   * the Mod2 rule cannot distinguish between the permitted case of touching at the
+   * node point and the invalid case of touching at some other interior (non-node) point.
+   * The EndPoint rule does distinguish between these cases,
+   * so is more appropriate for use.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class EndPointBoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      return boundaryCount > 0;
+    }
+  }
+
+  /**
+   * A {@link BoundaryNodeRule} which determines that only
+   * endpoints with valency greater than 1 are on the boundary.
+   * This corresponds to the boundary of a {@link MultiLineString}
+   * being all the "attached" endpoints, but not
+   * the "unattached" ones.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class MultiValentEndPointBoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      return boundaryCount > 1;
+    }
+  }
+
+  /**
+   * A {@link BoundaryNodeRule} which determines that only
+   * endpoints with valency of exactly 1 are on the boundary.
+   * This corresponds to the boundary of a {@link MultiLineString}
+   * being all the "unattached" endpoints.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class MonoValentEndPointBoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      return boundaryCount == 1;
+    }
+  }
+
+
+}
\ No newline at end of file

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -166,8 +166,10 @@
    * <ul>
    * <li>The list of points is assumed to have the first and last points equal.
    * <li>This will handle coordinate lists which contain repeated points.
-   * <li>If the ring is invalid, the answer returned may not be correct.
    * </ul>
+   * This algorithm is <b>only</b> guaranteed to work with valid rings.
+   * If the ring is invalid (e.g. self-crosses or touches),
+   * the computed result <b>may</b> not be correct.
    *
    * @param ring an array of coordinates forming a ring
    * @return <code>true</code> if the ring is oriented counter-clockwise.
@@ -177,28 +179,28 @@
     int nPts = ring.length - 1;
 
     // find highest point
-    Coordinate hip = ring[0];
-    int hii = 0;
+    Coordinate hiPt = ring[0];
+    int hiIndex = 0;
     for (int i = 1; i <= nPts; i++) {
       Coordinate p = ring[i];
-      if (p.y > hip.y) {
-        hip = p;
-        hii = i;
+      if (p.y > hiPt.y) {
+        hiPt = p;
+        hiIndex = i;
       }
     }
 
     // find distinct point before highest point
-    int iPrev = hii;
+    int iPrev = hiIndex;
     do {
       iPrev = iPrev - 1;
       if (iPrev < 0) iPrev = nPts;
-    } while (ring[iPrev].equals(hip) && iPrev != hii);
+    } while (ring[iPrev].equals2D(hiPt) && iPrev != hiIndex);
 
     // find distinct point after highest point
-    int iNext = hii;
+    int iNext = hiIndex;
     do {
       iNext = (iNext + 1) % nPts;
-    } while (ring[iNext].equals(hip) && iNext != hii);
+    } while (ring[iNext].equals2D(hiPt) && iNext != hiIndex);
 
     Coordinate prev = ring[iPrev];
     Coordinate next = ring[iNext];
@@ -209,12 +211,10 @@
      * (including the case where the input array has fewer than 4 elements),
      * or it contains coincident line segments.
      */
-    if (prev.equals(hip) || next.equals(hip) || prev.equals(next))
+    if (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next))
       return false;
-    // MD - don't bother throwing exception, since this isn't a complete check for ring validity
-//  throw new IllegalArgumentException("Invalid ring (contains repeated line segments)");
 
-    int disc = computeOrientation(prev, hip, next);
+    int disc = computeOrientation(prev, hiPt, next);
 
     /**
      *  If disc is exactly 0, lines are collinear.  There are two possible cases:

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,125 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+
+/**
+ * Computes an approximate intersection of two line segments
+ * by taking the most central of the endpoints of the segments.
+ * This is effective in cases where the segments are nearly parallel
+ * and should intersect at an endpoint.
+ * It is also a reasonable strategy for cases where the 
+ * endpoint of one segment lies on or almost on the interior of another one.
+ * Taking the most central endpoint ensures that the computed intersection
+ * point lies in the envelope of the segments.
+ * Also, by always returning one of the input points, this should result 
+ * in reducing segment fragmentation.
+ * Intended to be used as a last resort for 
+ * computing ill-conditioned intersection situations which 
+ * cause other methods to fail.
+ *
+ * @author Martin Davis
+ * @version 1.8
+ */
+public class CentralEndpointIntersector 
+{
+	public static Coordinate getIntersection(Coordinate p00, Coordinate p01,
+			Coordinate p10, Coordinate p11)
+	{
+		CentralEndpointIntersector intor = new CentralEndpointIntersector(p00, p01, p10, p11);
+		return intor.getIntersection();
+	}
+	
+	private Coordinate[] pts;
+	private Coordinate intPt = null;
+
+	public CentralEndpointIntersector(Coordinate p00, Coordinate p01,
+			Coordinate p10, Coordinate p11) 
+	{
+		pts = new Coordinate[] { p00, p01, p10, p11 };
+		compute();
+	}
+
+	private void compute() 
+	{
+		Coordinate centroid = average(pts);
+		intPt = findNearestPoint(centroid, pts);
+	}
+
+	public Coordinate getIntersection() {
+		return intPt;
+	}
+
+	private static Coordinate average(Coordinate[] pts)
+	{
+		Coordinate avg = new Coordinate();
+		int n = pts.length;
+		for (int i = 0; i < pts.length; i++) {
+			avg.x += pts[i].x;
+			avg.y += pts[i].y;
+		}
+		if (n > 0) {
+			avg.x /= n;
+			avg.y /= n;
+		}
+		return avg;
+	}
+	
+  /**
+   * Determines a point closest to the given point.
+   * 
+   * @param p the point to compare against
+   * @param p1 a potential result point
+   * @param p2 a potential result point
+   * @param q1 a potential result point
+   * @param q2 a potential result point
+   * @return the point closest to the input point p
+   */
+  private Coordinate findNearestPoint(Coordinate p, Coordinate[] pts)
+  {
+  	double minDist = Double.MAX_VALUE;
+  	Coordinate result = null;
+  	for (int i = 0; i < pts.length; i++) {
+  		double dist = p.distance(pts[i]);
+  		if (dist < minDist) {
+  			minDist = dist;
+  			result = pts[i];
+  		}
+  	}
+  	return result;
+  }
+  
+
+}

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/PointLocator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/PointLocator.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/PointLocator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -42,21 +42,35 @@
 /**
  * Computes the topological relationship ({@link Location})
  * of a single point to a {@link Geometry}.
- * The algorithm obeys the SFS Boundary Determination Rule to determine
- * whether the point lies on the boundary or not.
+ * The algorithm obeys the <i>SFS Boundary Determination Rule</i>
+ * to determine whether the point lies on the boundary or not.
  * <p>
+ * Notes:
+ * <ul>
+ * <li>{@link LinearRing}s do not enclose any area - points inside the ring are still in the EXTERIOR of the ring.
+ * </ul>
  * Instances of this class are not reentrant.
  *
  * @version 1.7
  */
 public class PointLocator
 {
+  // default is to use OGC SFS rule
+  private BoundaryNodeRule boundaryRule = BoundaryNodeRule.ENDPOINT_BOUNDARY_RULE; //OGC_SFS_BOUNDARY_RULE;
+
   private boolean isIn;         // true if the point lies in or on any Geometry element
   private int numBoundaries;    // the number of sub-elements whose boundaries the point lies in
 
   public PointLocator() {
   }
 
+  public PointLocator(BoundaryNodeRule boundaryRule)
+  {
+    if (boundaryRule == null)
+      throw new IllegalArgumentException("Rule must be non-null");
+    this.boundaryRule = boundaryRule;
+  }
+
   /**
    * Convenience method to test a point for intersection with
    * a Geometry
@@ -83,9 +97,6 @@
   {
     if (geom.isEmpty()) return Location.EXTERIOR;
 
-    if (geom instanceof LinearRing) {
-      return locate(p, (LinearRing) geom);
-    }
     if (geom instanceof LineString) {
       return locate(p, (LineString) geom);
     }
@@ -96,16 +107,16 @@
     isIn = false;
     numBoundaries = 0;
     computeLocation(p, geom);
-    if (GeometryGraph.isInBoundary(numBoundaries)) return Location.BOUNDARY;
-    if (numBoundaries > 0 || isIn) return Location.INTERIOR;
+    if (boundaryRule.isInBoundary(numBoundaries))
+      return Location.BOUNDARY;
+    if (numBoundaries > 0 || isIn)
+      return Location.INTERIOR;
+
     return Location.EXTERIOR;
   }
 
   private void computeLocation(Coordinate p, Geometry geom)
   {
-    if (geom instanceof LinearRing) {
-      updateLocationInfo(locate(p, (LinearRing) geom));
-    }
     if (geom instanceof LineString) {
       updateLocationInfo(locate(p, (LineString) geom));
     }
@@ -156,7 +167,7 @@
     return Location.EXTERIOR;
   }
 
-  private int locate(Coordinate p, LinearRing ring)
+  private int locateInPolygonRing(Coordinate p, LinearRing ring)
   {
     // can this test be folded into isPointInRing ?
     if (CGAlgorithms.isOnLine(p, ring.getCoordinates())) {
@@ -172,16 +183,19 @@
     if (poly.isEmpty()) return Location.EXTERIOR;
     LinearRing shell = (LinearRing) poly.getExteriorRing();
 
-    int shellLoc = locate(p, shell);
+    int shellLoc = locateInPolygonRing(p, shell);
     if (shellLoc == Location.EXTERIOR) return Location.EXTERIOR;
     if (shellLoc == Location.BOUNDARY) return Location.BOUNDARY;
     // now test if the point lies in or on the holes
     for (int i = 0; i < poly.getNumInteriorRing(); i++) {
       LinearRing hole = (LinearRing) poly.getInteriorRingN(i);
-      int holeLoc = locate(p, hole);
+      int holeLoc = locateInPolygonRing(p, hole);
       if (holeLoc == Location.INTERIOR) return Location.EXTERIOR;
       if (holeLoc == Location.BOUNDARY) return Location.BOUNDARY;
     }
     return Location.INTERIOR;
   }
+
+
+
 }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -71,7 +71,7 @@
     result = DONT_INTERSECT;
   }
 
-  public int computeIntersect(
+  protected int computeIntersect(
                 Coordinate p1, Coordinate p2,
                 Coordinate q1, Coordinate q2  ) {
     isProper = false;
@@ -104,7 +104,13 @@
     if (collinear) {
       return computeCollinearIntersection(p1, p2, q1, q2);
     }
+    
     /**
+     * At this point we know that there is a single intersection point
+     * (since the lines are not collinear).
+     */
+    
+    /**
      *  Check if the intersection is an endpoint. If it is, copy the endpoint as
      *  the intersection point. Copying the point rather than computing it
      *  ensures the point has the exact value, which is important for
@@ -114,16 +120,45 @@
      */
     if (Pq1 == 0 || Pq2 == 0 || Qp1 == 0 || Qp2 == 0) {
       isProper = false;
-      if (Pq1 == 0) {
+      
+      /**
+       * Check for two equal endpoints.  
+       * This is done explicitly rather than by the orientation tests
+       * below in order to improve robustness.
+       * 
+       * [An example where the orientation tests fail to be consistent is
+       * the following (where the true intersection is at the shared endpoint
+       * POINT (19.850257749638203 46.29709338043669)
+       * 
+       * LINESTRING ( 19.850257749638203 46.29709338043669, 20.31970698357233 46.76654261437082 ) 
+       * and 
+       * LINESTRING ( -48.51001596420236 -22.063180333403878, 19.850257749638203 46.29709338043669 )
+       * 
+       * which used to produce the INCORRECT result: (20.31970698357233, 46.76654261437082, NaN)
+       * 
+       */
+      if (p1.equals2D(q1) 
+      		|| p1.equals2D(q2)) {
+      	intPt[0] = p1;
+      }
+      else if (p2.equals2D(q1) 
+      		|| p2.equals2D(q2)) {
+      	intPt[0] = p2;
+      }
+      
+      /**
+       * Now check to see if any endpoint lies on the interior of the other segment.
+       */
+      else if (Pq1 == 0) {
         intPt[0] = new Coordinate(q1);
       }
-      if (Pq2 == 0) {
+      else if (Pq2 == 0) {
         intPt[0] = new Coordinate(q2);
       }
-      if (Qp1 == 0) {
+      else if (Qp1 == 0) {
         intPt[0] = new Coordinate(p1);
       }
-      if (Qp2 == 0) {
+      else if (Qp2 == 0) {
         intPt[0] = new Coordinate(p2);
       }
     }
@@ -134,16 +169,6 @@
     return DO_INTERSECT;
   }
 
-/*
-  private boolean intersectsEnvelope(Coordinate p1, Coordinate p2, Coordinate q) {
-    if (((q.x >= Math.min(p1.x, p2.x)) && (q.x <= Math.max(p1.x, p2.x))) &&
-        ((q.y >= Math.min(p1.y, p2.y)) && (q.y <= Math.max(p1.y, p2.y)))) {
-      return true;
-    }
-    return false;
-  }
-*/
-
   private int computeCollinearIntersection(Coordinate p1, Coordinate p2,
       Coordinate q1, Coordinate q2) {
     boolean p1q1p2 = Envelope.intersects(p1, p2, q1);
@@ -195,51 +220,32 @@
   private Coordinate intersection(
     Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
   {
-    Coordinate n1 = new Coordinate(p1);
-    Coordinate n2 = new Coordinate(p2);
-    Coordinate n3 = new Coordinate(q1);
-    Coordinate n4 = new Coordinate(q2);
-    Coordinate normPt = new Coordinate();
-    normalizeToEnvCentre(n1, n2, n3, n4, normPt);
+    Coordinate intPt = intersectionWithNormalization(p1, p2, q1, q2);
+  	// testing only
+//    Coordinate intPt = safeHCoordinateIntersection(p1, p2, q1, q2);
 
-    Coordinate intPt = null;
-    try {
-      intPt = HCoordinate.intersection(n1, n2, n3, n4);
-    }
-    catch (NotRepresentableException e) {
-      Assert.shouldNeverReachHere("Coordinate for intersection is not calculable");
-    }
-
-    intPt.x += normPt.x;
-    intPt.y += normPt.y;
-
     /**
-     *
+     * Due to rounding it can happen that the computed intersection is
+     * outside the envelopes of the input segments.  Clearly this
+     * is inconsistent. 
+     * This code checks this condition and forces a more reasonable answer
+     * 
      * MD - May 4 2005 - This is still a problem.  Here is a failure case:
      *
      * LINESTRING (2089426.5233462777 1180182.3877339689, 2085646.6891757075 1195618.7333999649)
      * LINESTRING (1889281.8148903656 1997547.0560044837, 2259977.3672235999 483675.17050843034)
      * int point = (2097408.2633752143,1144595.8008114607)
+     * 
+     * MD - Dec 14 2006 - This does not seem to be a failure case any longer
      */
     if (! isInSegmentEnvelopes(intPt)) {
-      System.out.println("Intersection outside segment envelopes: " + intPt);
+//      System.out.println("Intersection outside segment envelopes: " + intPt);
+//      System.out.println("Segments: " + this);
+      // compute a safer result
+      intPt = CentralEndpointIntersector.getIntersection(p1, p2, q1, q2);
+//      System.out.println("Snapped to " + intPt);
     }
-    /*
-     // disabled until a better solution is found
-    if (! isInSegmentEnvelopes(intPt)) {
-      System.out.println("first value outside segment envelopes: " + intPt);
 
-      IteratedBisectionIntersector ibi = new IteratedBisectionIntersector(p1, p2, q1, q2);
-      intPt = ibi.getIntersection();
-    }
-    if (! isInSegmentEnvelopes(intPt)) {
-      System.out.println("ERROR - outside segment envelopes: " + intPt);
-
-      IteratedBisectionIntersector ibi = new IteratedBisectionIntersector(p1, p2, q1, q2);
-      Coordinate testPt = ibi.getIntersection();
-    }
-    */
-
     if (precisionModel != null) {
       precisionModel.makePrecise(intPt);
     }
@@ -247,7 +253,52 @@
     return intPt;
   }
 
+  private Coordinate intersectionWithNormalization(
+    Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
+    {
+      Coordinate n1 = new Coordinate(p1);
+      Coordinate n2 = new Coordinate(p2);
+      Coordinate n3 = new Coordinate(q1);
+      Coordinate n4 = new Coordinate(q2);
+      Coordinate normPt = new Coordinate();
+      normalizeToEnvCentre(n1, n2, n3, n4, normPt);
+
+      Coordinate intPt = safeHCoordinateIntersection(n1, n2, n3, n4);
+
+      intPt.x += normPt.x;
+      intPt.y += normPt.y;
+      
+      return intPt;
+  }
+  
   /**
+   * Computes a segment intersection using homogeneous coordinates.
+   * Round-off error can cause the raw computation to fail, 
+   * (usually due to the segments being approximately parallel).
+   * If this happens, a reasonable approximation is computed instead.
+   * 
+   * @param p1 a segment endpoint
+   * @param p2 a segment endpoint
+   * @param q1 a segment endpoint
+   * @param q2 a segment endpoint
+   * @return the computed intersection point
+   */
+  private Coordinate safeHCoordinateIntersection(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
+  {
+    Coordinate intPt = null;
+    try {
+      intPt = HCoordinate.intersection(p1, p2, q1, q2);
+    }
+    catch (NotRepresentableException e) {
+//    	System.out.println("Not calculable: " + this);
+      // compute an approximate result
+      intPt = CentralEndpointIntersector.getIntersection(p1, p2, q1, q2);
+ //     System.out.println("Snapped to " + intPt);
+    }
+    return intPt;
+  }
+
+  /**
    * Normalize the supplied coordinates so that
    * their minimum ordinate values lie at the origin.
    * NOTE: this normalization technique appears to cause

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateArrays.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateArrays.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateArrays.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -56,7 +56,7 @@
   {
     for (int i = 0; i < testPts.length; i++) {
       Coordinate testPt = testPts[i];
-      if (CoordinateArrays.indexOf(testPt, pts) >= 0)
+      if (CoordinateArrays.indexOf(testPt, pts) < 0)
           return testPt;
     }
     return null;

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,88 @@
+
+
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom;
+
+
+/**
+ *  Interface for classeswhich provide operations that
+ *  can be applied to the coordinates in a {@link CoordinateSequence}. 
+ *  A CoordinateSequence filter can either record information about each coordinate or
+ *  change the coordinate in some way. CoordinateSequence filters can be
+ *  used to implement such things as coordinate transformations, centroid and
+ *  envelope computation, and many other functions.
+ *  For maximum efficiency, the execution of filters can be short-circuited.
+ *  {@link Geometry} classes support the concept of applying a
+ *  <code>CoordinateSequenceFilter</code> to each 
+ *  {@link CoordinateSequence}s they contain. 
+ *  <p>
+ *  <code>CoordinateSequenceFilter</code> is
+ *  an example of the Gang-of-Four Visitor pattern. 
+ *
+ *@see Geometry#apply(CoordinateSequenceFilter)
+ *@author Martin Davis
+ *@version 1.7
+ */
+public interface CoordinateSequenceFilter 
+{
+  /**
+   * Performs an operation on a coordinate in a {@link CoordinateSequence}.
+   *
+   *@param seq  the <code>CoordinateSequence</code> to which the filter is applied
+   *@param i the index of the coordinate to apply the filter to
+   */
+  void filter(CoordinateSequence seq, int i);
+  
+  /**
+   * Reports whether the application of this filter can be terminated.
+   * Once this method returns <tt>false</tt>, it should 
+   * continue to return <tt>false</tt> on every subsequent call.
+   * 
+   * @return true if the application of this filter can be terminated.
+   */
+  boolean isDone();
+  
+  /**
+   * Reports whether the execution of this filter
+   * has modified the coordinates of the geometry.
+   * If so, {@link Geometry#geometryChanged} will be executed.
+   * <p>
+   * Most filters can simply return a constant value reflecting
+   * whether they are able to change the coordinates.
+   * 
+   * @return true if this filter has changed the coordinates of the geometry
+   */
+  boolean isGeometryChanged();
+}
+

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -51,10 +51,8 @@
   public DefaultCoordinateSequenceFactory() {
   }
 
-  /**
-   * @see http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
-   */
   private Object readResolve() {
+  	// see http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
     return DefaultCoordinateSequenceFactory.instance();
   }
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Geometry.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Geometry.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Geometry.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -38,9 +38,11 @@
 
 import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.io.WKTWriter;
+import com.vividsolutions.jts.operation.*;
 import com.vividsolutions.jts.operation.buffer.BufferOp;
 import com.vividsolutions.jts.operation.distance.DistanceOp;
 import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp;
 import com.vividsolutions.jts.operation.predicate.RectangleIntersects;
 import com.vividsolutions.jts.operation.predicate.RectangleContains;
 import com.vividsolutions.jts.operation.relate.RelateOp;
@@ -130,11 +132,6 @@
 {
     private static final long serialVersionUID = 8763622679187376702L;
 
-  /**
-   *  The bounding box of this <code>Geometry</code>.
-   */
-  protected Envelope envelope;
-
   private final static Class[] sortedClasses = new Class[] {
       Point.class,
       MultiPoint.class,
@@ -152,31 +149,38 @@
     }
   };
 
-  public Geometry(GeometryFactory factory) {
-    this.factory = factory;
-    this.SRID = factory.getSRID();
-  }
+  /**
+   *  The bounding box of this <code>Geometry</code>.
+   */
+  protected Envelope envelope;
 
-  private GeometryFactory factory;
+  /**
+   * The {@link GeometryFactory} used to create this Geometry
+   */
+  protected final GeometryFactory factory;
 
-  // MD - no longer used.  Remove in next version
-  //private static final GeometryFactory INTERNAL_GEOMETRY_FACTORY = new GeometryFactory();
-
   /**
    *  The ID of the Spatial Reference System used by this <code>Geometry</code>
    */
   protected int SRID;
 
   /**
+   * Creates a new <tt>Geometry</tt> via the specified GeometryFactory.
+   *
+   * @param factory
+   */
+  public Geometry(GeometryFactory factory) {
+    this.factory = factory;
+    this.SRID = factory.getSRID();
+  }
+
+  /**
    *  Returns the name of this object's <code>com.vivid.jts.geom</code>
    *  interface.
    *
    *@return    the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
    *      interface
    */
-  //I wonder if we need this method, now that we have renamed the classes to
-  //what their old interfaces were named. Now we can perhaps simply use
-  //getClass().getName(). Who calls this method anyway? [Jon Aquino]
   public abstract String getGeometryType();
 
   /**
@@ -354,7 +358,12 @@
    *      self-tangency, self-intersection or other anomalous points
    * @see #isValid
    */
-  public abstract boolean isSimple();
+  public boolean isSimple()
+  {
+    checkNotGeometryCollection(this);
+    IsSimpleOp op = new IsSimpleOp(this);
+    return op.isSimple();
+  }
 
   /**
    *  Tests the validity of this <code>Geometry</code>.
@@ -403,11 +412,13 @@
     double envDist = getEnvelopeInternal().distance(geom.getEnvelopeInternal());
     if (envDist > distance)
       return false;
-    // NOTE: this could be implemented more efficiently
+    return DistanceOp.isWithinDistance(this, geom, distance);
+    /*
     double geomDist = this.distance(geom);
     if (geomDist > distance)
       return false;
     return true;
+    */
   }
 
   public boolean isRectangle()
@@ -510,11 +521,15 @@
    *      or not this object is the empty geometry
    */
   public abstract int getDimension();
+
   /**
-   *  Returns the boundary, or the empty geometry if this <code>Geometry</code>
-   *  is empty. For a discussion of this function, see the OpenGIS Simple
-   *  Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
-   *  of a Geometry is a set of Geometries of the next lower dimension."
+   * Returns the boundary, or an empty geometry of appropriate dimension
+   * if this <code>Geometry</code>  is empty.
+   * (In the case of zero-dimensional geometries, '
+   * an empty GeometryCollection is returned.)
+   * For a discussion of this function, see the OpenGIS Simple
+   * Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
+   * of a Geometry is a set of Geometries of the next lower dimension."
    *
    *@return    the closure of the combinatorial boundary of this <code>Geometry</code>
    */
@@ -841,7 +856,7 @@
    * (<code>coveredBy</code> is the inverse of <code>covers</code>)
    * </ul>
    * Note the difference between <code>coveredBy</code> and <code>within</code>
-   * - <code>coveredBy</code> is a more inclusive relation
+   * - <code>coveredBy</code> is a more inclusive relation.
    *
    *@param  g  the <code>Geometry</code> with which to compare this <code>Geometry</code>
    *@return        <code>true</code> if this <code>Geometry</code> is covered by <code>g</code>
@@ -943,6 +958,8 @@
    *@param  distance  the width of the buffer (may be positive, negative or 0)
    *@return an area geometry representing the buffer region
    *
+   * @throws TopologyException if a robustness error occurs
+   *
    * @see #buffer(double, int)
    * @see #buffer(double, int, int)
    */
@@ -964,6 +981,8 @@
    *@param quadrantSegments the number of line segments used to represent a quadrant of a circle
    *@return an area geometry representing the buffer region
    *
+   * @throws TopologyException if a robustness error occurs
+   *
    * @see #buffer(double)
    * @see #buffer(double, int, int)
    */
@@ -995,6 +1014,8 @@
    *@param endCapStyle the end cap style to use
    *@return an area geometry representing the buffer region
    *
+   * @throws TopologyException if a robustness error occurs
+   *
    * @see #buffer(double)
    * @see #buffer(double, int)
    * @see BufferOp
@@ -1045,11 +1066,20 @@
    *      intersection
    * @return        the points common to the two <code>Geometry</code>s
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry intersection(Geometry other) {
+  public Geometry intersection(Geometry other)
+  {
+  	/**
+  	 * TODO: MD - add optimization for P-A case using Point-In-Polygon
+  	 */
+    // special case: if one input is empty ==> empty
+    if (this.isEmpty()) return this.getFactory().createGeometryCollection(null);
+    if (other.isEmpty()) return this.getFactory().createGeometryCollection(null);
+
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.INTERSECTION);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.INTERSECTION);
   }
 
   /**
@@ -1060,11 +1090,17 @@
    *@return        a set combining the points of this <code>Geometry</code> and
    *      the points of <code>other</code>
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry union(Geometry other) {
+  public Geometry union(Geometry other)
+  {
+    // special case: if either input is empty ==> other input
+    if (this.isEmpty()) return (Geometry) other.clone();
+    if (other.isEmpty()) return (Geometry) clone();
+
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.UNION);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.UNION);
   }
 
   /**
@@ -1077,11 +1113,17 @@
    *@return        the point set difference of this <code>Geometry</code> with
    *      <code>other</code>
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry difference(Geometry other) {
+  public Geometry difference(Geometry other)
+  {
+    // special case: if A.isEmpty ==> empty; if B.isEmpty ==> A
+    if (this.isEmpty()) return this.getFactory().createGeometryCollection(null);
+    if (other.isEmpty()) return (Geometry) clone();
+
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.DIFFERENCE);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.DIFFERENCE);
   }
 
   /**
@@ -1095,11 +1137,17 @@
    *@return        the point set symmetric difference of this <code>Geometry</code>
    *      with <code>other</code>
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry symDifference(Geometry other) {
+  public Geometry symDifference(Geometry other)
+  {
+    // special case: if either input is empty ==> other input
+    if (this.isEmpty()) return (Geometry) other.clone();
+    if (other.isEmpty()) return (Geometry) clone();
+
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.SYMDIFFERENCE);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.SYMDIFFERENCE);
   }
 
   /**
@@ -1147,8 +1195,10 @@
 
   /**
    *  Performs an operation with or on this <code>Geometry</code>'s
-   *  coordinates. If you are using this method to modify the geometry, be sure
-   *  to call #geometryChanged() afterwards. Note that you cannot use this
+   *  coordinates. 
+   *  If this method modifies any coordinate values,
+   *  #geometryChanged() must be called to update the geometry state. 
+   *  Note that you cannot use this
    *  method to
    *  modify this Geometry if its underlying CoordinateSequence's #get method
    *  returns a copy of the Coordinate, rather than the actual Coordinate stored
@@ -1160,6 +1210,16 @@
   public abstract void apply(CoordinateFilter filter);
 
   /**
+   *  Performs an operation on the coordinates in this <code>Geometry</code>'s
+   *  {@link CoordinateSequence}s. 
+   *  If this method modifies any coordinate values,
+   *  #geometryChanged() must be called to update the geometry state. 
+   *
+   *@param  filter  the filter to apply
+   */
+  public abstract void apply(CoordinateSequenceFilter filter);
+
+  /**
    *  Performs an operation with or on this <code>Geometry</code> and its
    *  subelement <code>Geometry</code>s (if any).
    *  Only GeometryCollections and subclasses
@@ -1180,6 +1240,14 @@
    */
   public abstract void apply(GeometryComponentFilter filter);
 
+  /**
+   * Creates and returns a full copy of this {@link Geometry} object
+   * (including all coordinates contained by it).
+   * Subclasses are responsible for overriding this method and copying
+   * their internal data.  Overrides should call this method first.
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     try {
       Geometry clone = (Geometry) super.clone();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryCollection.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryCollection.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryCollection.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -148,12 +148,6 @@
     return "GeometryCollection";
   }
 
-  public boolean isSimple() {
-    checkNotGeometryCollection(this);
-    Assert.shouldNeverReachHere();
-    return false;
-  }
-
   public Geometry getBoundary() {
     checkNotGeometryCollection(this);
     Assert.shouldNeverReachHere();
@@ -163,7 +157,7 @@
   /**
    *  Returns the area of this <code>GeometryCollection</code>
    *
-   *@return the area of the polygon
+   * @return the area of the polygon
    */
   public double getArea()
   {
@@ -200,9 +194,22 @@
   }
 
   public void apply(CoordinateFilter filter) {
+	    for (int i = 0; i < geometries.length; i++) {
+	      geometries[i].apply(filter);
+	    }
+	  }
+
+  public void apply(CoordinateSequenceFilter filter) {
+    if (geometries.length == 0)
+      return;
     for (int i = 0; i < geometries.length; i++) {
       geometries[i].apply(filter);
+      if (filter.isDone()) {
+        break;
+      }
     }
+    if (filter.isGeometryChanged())
+      geometryChanged();
   }
 
   public void apply(GeometryFilter filter) {
@@ -219,6 +226,12 @@
     }
   }
 
+  /**
+   * Creates and returns a full copy of this {@link GeometryCollection} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     GeometryCollection gc = (GeometryCollection) super.clone();
     gc.geometries = new Geometry[geometries.length];

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryFactory.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryFactory.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/GeometryFactory.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -43,7 +43,12 @@
 /**
  * Supplies a set of utility methods for building Geometry objects from lists
  * of Coordinates.
+ * <p>
+ * Note that the factory constructor methods do <b>not</b> change the input coordinates in any way.
+ * In particular, they are not rounded to the supplied <tt>PrecisionModel</tt>.
+ * It is assumed that input Coordinates meet the given precision.
  *
+ *
  * @version 1.7
  */
 public class GeometryFactory
@@ -320,22 +325,23 @@
   }
 
   /**
-   * Creates a MultiPoint using the given Points; a null or empty array will
-   * create an empty MultiPoint.
-   * @param coordinates an array without null elements, or an empty array, or null
+   * Creates a MultiPoint using the given Points.
+   * A null or empty array will create an empty MultiPoint.
+   *
+   * @param coordinates an array (without null elements), or an empty array, or <code>null</code>
+   * @return a MultiPoint object
    */
   public MultiPoint createMultiPoint(Point[] point) {
   	return new MultiPoint(point, this);
   }
 
   /**
-   * Creates a MultiPoint using the given Coordinates; a null or empty array
-   * will create an empty MultiPoint.
+   * Creates a {@link MultiPoint} using the given {@link Coordinate}s.
+   * A null or empty array will create an empty MultiPoint.
    *
-   * @param coordinates
-   *            an array without null elements, or an empty array, or null
+   * @param coordinates an array (without null elements), or an empty array, or <code>null</code>
+   * @return a MultiPoint object
    */
-
   public MultiPoint createMultiPoint(Coordinate[] coordinates) {
       return createMultiPoint(coordinates != null
                               ? getCoordinateSequenceFactory().create(coordinates)
@@ -343,9 +349,11 @@
   }
 
   /**
-   * Creates a MultiPoint using the given CoordinateSequence; a null or empty CoordinateSequence will
-   * create an empty MultiPoint.
-   * @param coordinates a CoordinateSequence possibly empty, or null
+   * Creates a MultiPoint using the given CoordinateSequence.
+   * A a null or empty CoordinateSequence will create an empty MultiPoint.
+   *
+   * @param coordinates a CoordinateSequence (possibly empty), or <code>null</code>
+   * @return a MultiPoint object
    */
   public MultiPoint createMultiPoint(CoordinateSequence coordinates) {
     if (coordinates == null) {
@@ -358,8 +366,6 @@
     return createMultiPoint(points);
   }
 
-
-
   /**
    * Constructs a <code>Polygon</code> with the given exterior boundary and
    * interior boundaries.
@@ -407,6 +413,7 @@
   public Geometry buildGeometry(Collection geomList) {
     Class geomClass = null;
     boolean isHeterogeneous = false;
+    boolean hasGeometryCollection = false;
     for (Iterator i = geomList.iterator(); i.hasNext(); ) {
       Geometry geom = (Geometry) i.next();
       Class partClass = geom.getClass();
@@ -416,12 +423,14 @@
       if (partClass != geomClass) {
         isHeterogeneous = true;
       }
+      if (geom instanceof GeometryCollection)
+        hasGeometryCollection = true;
     }
     // for the empty geometry, return an empty GeometryCollection
     if (geomClass == null) {
       return createGeometryCollection(null);
     }
-    if (isHeterogeneous) {
+    if (isHeterogeneous || hasGeometryCollection) {
       return createGeometryCollection(toGeometryArray(geomList));
     }
     // at this point we know the collection is hetereogenous.
@@ -439,7 +448,7 @@
       else if (geom0 instanceof Point) {
         return createMultiPoint(toPointArray(geomList));
       }
-      Assert.shouldNeverReachHere();
+      Assert.shouldNeverReachHere("Unhandled class: " + geom0.getClass().getName());
     }
     return geom0;
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/IntersectionMatrix.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/IntersectionMatrix.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/IntersectionMatrix.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -430,8 +430,8 @@
    * or <code>**FT*F***</code>
    * or <code>**F*TF***</code>
    *
-   *@return    <code>true</code> if the first <code>Geometry</code> covers the
-   *      second
+   *@return    <code>true</code> if the first <code>Geometry</code>
+   * is covered by the second
    */
   public boolean isCoveredBy() {
     boolean hasPointInCommon =

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineSegment.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineSegment.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineSegment.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -180,6 +180,17 @@
   }
 
   /**
+   * Computes the midpoint of the segment
+   *
+   * @return the midpoint of the segment
+   */
+  public Coordinate midPoint()
+  {
+    return new Coordinate( (p0.x + p1.x) / 2,
+                           (p0.y + p1.y) / 2);
+  }
+
+  /**
    * Computes the distance between this line segment and another segment.
    *
    * @return the distance to the other segment

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineString.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineString.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LineString.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -33,7 +33,7 @@
 package com.vividsolutions.jts.geom;
 
 import com.vividsolutions.jts.algorithm.CGAlgorithms;
-import com.vividsolutions.jts.operation.IsSimpleOp;
+import com.vividsolutions.jts.operation.BoundaryOp;
 
 /**
  *  Basic implementation of <code>LineString</code>.
@@ -164,21 +164,15 @@
    return CGAlgorithms.length(points);
   }
 
-  public boolean isSimple()
-  {
-    return (new IsSimpleOp()).isSimple(this);
-  }
-
+  /**
+   * Gets the boundary of this geometry.
+   * The boundary of a lineal geometry is always a zero-dimensional geometry (which may be empty).
+   *
+   * @return the boundary geometry
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
-    if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
-    }
-    if (isClosed()) {
-      return getFactory().createMultiPoint((Coordinate[])null);
-    }
-    return getFactory().createMultiPoint(new Point[]{
-        getStartPoint(), getEndPoint()
-        });
+    return (new BoundaryOp(this)).getBoundary();
   }
 
   /**
@@ -240,6 +234,19 @@
       }
   }
 
+  public void apply(CoordinateSequenceFilter filter) 
+  {
+    if (points.size() == 0)
+      return;
+    for (int i = 0; i < points.size(); i++) {
+      filter.filter(points, i);
+      if (filter.isDone())
+        break;
+    }
+    if (filter.isGeometryChanged())
+      geometryChanged();
+  }
+
   public void apply(GeometryFilter filter) {
     filter.filter(this);
   }
@@ -248,6 +255,12 @@
     filter.filter(this);
   }
 
+  /**
+   * Creates and returns a full copy of this {@link LineString} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     LineString ls = (LineString) super.clone();
     ls.points = (CoordinateSequence) points.clone();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LinearRing.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LinearRing.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/LinearRing.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -100,6 +100,16 @@
   }
 
   /**
+   * Returns <code>Dimension.FALSE</code>, since by definition LinearRings do
+   * not have a boundary.
+   *
+   * @return Dimension.FALSE
+   */
+  public int getBoundaryDimension() {
+    return Dimension.FALSE;
+  }
+
+  /**
    * Returns <code>true</code>, since by definition LinearRings are always simple.
    * @return <code>true</code>
    *

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiLineString.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiLineString.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiLineString.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -35,9 +35,8 @@
 package com.vividsolutions.jts.geom;
 
 import com.vividsolutions.jts.geomgraph.GeometryGraph;
-import com.vividsolutions.jts.operation.IsSimpleOp;
+import com.vividsolutions.jts.operation.BoundaryOp;
 
-
 /**
  *  Basic implementation of <code>MultiLineString</code>.
  *
@@ -102,20 +101,18 @@
     return true;
   }
 
-  public boolean isSimple()
+  /**
+   * Gets the boundary of this geometry.
+   * The boundary of a lineal geometry is always a zero-dimensional geometry (which may be empty).
+   *
+   * @return the boundary geometry
+   * @see Geometry#getBoundary
+   */
+  public Geometry getBoundary()
   {
-    return (new IsSimpleOp()).isSimple(this);
+    return (new BoundaryOp(this)).getBoundary();
   }
 
-  public Geometry getBoundary() {
-    if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
-    }
-    GeometryGraph g = new GeometryGraph(0, this);
-    Coordinate[] pts = g.getBoundaryPoints();
-    return getFactory().createMultiPoint(pts);
-  }
-
   /**
    * Creates a {@link MultiLineString} in the reverse
    * order to this object.

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPoint.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPoint.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPoint.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -34,8 +34,6 @@
  */
 package com.vividsolutions.jts.geom;
 
-import com.vividsolutions.jts.operation.IsSimpleOp;
-
 /**
  *  Models a collection of <code>Point</code>s.
  *
@@ -84,14 +82,18 @@
     return "MultiPoint";
   }
 
+  /**
+   * Gets the boundary of this geometry.
+   * Zero-dimensional geometries have no boundary by definition,
+   * so an empty GeometryCollection is returned.
+   *
+   * @return an empty GeometryCollection
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     return getFactory().createGeometryCollection(null);
   }
 
-  public boolean isSimple() {
-    return (new IsSimpleOp()).isSimple(this);
-  }
-
   public boolean isValid() {
     return true;
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPolygon.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPolygon.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/MultiPolygon.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -93,9 +93,15 @@
     return true;
   }
 
+  /**
+   * Computes the boundary of this geometry
+   *
+   * @return a lineal geometry (which may be empty)
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
+      return getFactory().createMultiLineString(null);
     }
     ArrayList allRings = new ArrayList();
     for (int i = 0; i < geometries.length; i++) {

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Point.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Point.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Point.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -135,6 +135,14 @@
     return "Point";
   }
 
+  /**
+   * Gets the boundary of this geometry.
+   * Zero-dimensional geometries have no boundary by definition,
+   * so an empty GeometryCollection is returned.
+   *
+   * @return an empty GeometryCollection
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     return getFactory().createGeometryCollection(null);
   }
@@ -159,10 +167,19 @@
   }
 
   public void apply(CoordinateFilter filter) {
-    if (isEmpty()) { return; }
-    filter.filter(getCoordinate());
-  }
+	    if (isEmpty()) { return; }
+	    filter.filter(getCoordinate());
+	  }
 
+  public void apply(CoordinateSequenceFilter filter) 
+  {
+	    if (isEmpty())
+        return;
+	    filter.filter(coordinates, 0);
+      if (filter.isGeometryChanged())
+        geometryChanged();
+	  }
+
   public void apply(GeometryFilter filter) {
     filter.filter(this);
   }
@@ -171,6 +188,12 @@
     filter.filter(this);
   }
 
+  /**
+   * Creates and returns a full copy of this {@link Point} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     Point p = (Point) super.clone();
     p.coordinates = (CoordinateSequence) coordinates.clone();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Polygon.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Polygon.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Polygon.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -178,6 +178,12 @@
     return shell.isEmpty();
   }
 
+  /**
+   * Tests if a valid polygon is simple.
+   * This method always returns true, since a valid polygon is always simple
+   *
+   * @return <code>true</code>
+   */
   public boolean isSimple() {
     return true;
   }
@@ -195,7 +201,7 @@
     for (int i = 0; i < 5; i++) {
       double x = seq.getX(i);
       if (! (x == env.getMinX() || x == env.getMaxX())) return false;
-      double y = seq.getX(i);
+      double y = seq.getY(i);
       if (! (y == env.getMinY() || y == env.getMaxY())) return false;
     }
 
@@ -261,15 +267,22 @@
     return len;
   }
 
+  /**
+   * Computes the boundary of this geometry
+   *
+   * @return a lineal geometry (which may be empty)
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
+      return getFactory().createMultiLineString(null);
     }
     LinearRing[] rings = new LinearRing[holes.length + 1];
     rings[0] = shell;
     for (int i = 0; i < holes.length; i++) {
       rings[i + 1] = holes[i];
     }
+    // create LineString or MultiLineString as appropriate
     if (rings.length <= 1)
       return getFactory().createLinearRing(rings[0].getCoordinateSequence());
     return getFactory().createMultiLineString(rings);
@@ -304,12 +317,26 @@
   }
 
   public void apply(CoordinateFilter filter) {
-    shell.apply(filter);
-    for (int i = 0; i < holes.length; i++) {
-      holes[i].apply(filter);
-    }
-  }
+	    shell.apply(filter);
+	    for (int i = 0; i < holes.length; i++) {
+	      holes[i].apply(filter);
+	    }
+	  }
 
+  public void apply(CoordinateSequenceFilter filter) 
+  {
+	    shell.apply(filter);
+      if (! filter.isDone()) {
+        for (int i = 0; i < holes.length; i++) {
+          holes[i].apply(filter);
+          if (filter.isDone()) 
+            break;
+        }
+      }
+      if (filter.isGeometryChanged())
+        geometryChanged();
+	  }
+
   public void apply(GeometryFilter filter) {
     filter.filter(this);
   }
@@ -322,6 +349,12 @@
     }
   }
 
+  /**
+   * Creates and returns a full copy of this {@link Polygon} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     Polygon poly = (Polygon) super.clone();
     poly.shell = (LinearRing) shell.clone();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/PrecisionModel.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/PrecisionModel.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/PrecisionModel.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -83,6 +83,21 @@
  */
 public class PrecisionModel implements Serializable, Comparable
 {
+	/**
+	 * Determines which of two {@link PrecisionModel}s is the most precise
+	 * (allows the greatest number of significant digits).
+	 * 
+	 * @param pm1 a PrecisionModel
+	 * @param pm2 a PrecisionModel
+	 * @return the PrecisionModel which is most precise
+	 */
+	public static PrecisionModel mostPrecise(PrecisionModel pm1, PrecisionModel pm2)
+	{
+		if (pm1.compareTo(pm2) >= 0)
+			return pm1;
+		return pm2;
+	}
+	
   private static final long serialVersionUID = 7777263578777803835L;
 
   /**
@@ -228,17 +243,17 @@
    *
    * @return the maximum number of decimal places provided by this precision model
    */
-  	public int getMaximumSignificantDigits() {
-		int maxSigDigits = 16;
-		if (modelType == FLOATING) {
-			maxSigDigits = 16;
-		} else if (modelType == FLOATING_SINGLE) {
-			maxSigDigits = 6;
-		} else if (modelType == FIXED) {
-			maxSigDigits = 1 + (int) Math.ceil(Math.log(getScale()) / Math.log(10));
-		}
-		return maxSigDigits;
-	}
+  public int getMaximumSignificantDigits() {
+    int maxSigDigits = 16;
+    if (modelType == FLOATING) {
+      maxSigDigits = 16;
+    } else if (modelType == FLOATING_SINGLE) {
+      maxSigDigits = 6;
+    } else if (modelType == FIXED) {
+      maxSigDigits = 1 + (int) Math.ceil(Math.log(getScale()) / Math.log(10));
+    }
+    return maxSigDigits;
+  }
 
   /**
    *  Returns the multiplying factor used to obtain a precise coordinate.
@@ -359,11 +374,11 @@
 
   /**
    * Rounds a numeric value to the PrecisionModel grid.
-   * Symmetric Arithmetic Rounding is used, to provide
+   * Asymmetric Arithmetic Rounding is used, to provide
    * uniform rounding behaviour no matter where the number is
    * on the number line.
    * <p>
-   * <b>Note:</b> Java's <code>Math#rint</code> uses the "banker's rounding" algorithm,
+   * <b>Note:</b> Java's <code>Math#rint</code> uses the "Banker's Rounding" algorithm,
    * which is not suitable for precision operations elsewhere in JTS.
    */
   public double makePrecise(double val) {

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Triangle.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Triangle.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/Triangle.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -33,6 +33,8 @@
  */
 package com.vividsolutions.jts.geom;
 
+import com.vividsolutions.jts.algorithm.*;
+
 /**
  * Represents a planar triangle, and provides methods for calculating various
  * properties of triangles.
@@ -50,23 +52,199 @@
     this.p2 = p2;
   }
 
+
   /**
+   * Tests whether the triangle is acute.
+   * A triangle is acute iff all interior angles are acute.
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return true if the triangle is acute
+   */
+  public static boolean isAcute(Coordinate a, Coordinate b, Coordinate c)
+  {
+    if (! Angle.isAcute(a, b, c)) return false;
+    if (! Angle.isAcute(b, c, a)) return false;
+    if (! Angle.isAcute(c, a, b)) return false;
+    return true;
+  }
+
+  /**
+   * Computes the line which is the perpendicular bisector of the
+   * line segment a-b.
+   *
+   * @param a a point
+   * @param b another point
+   * @return the perpendicular bisector, as an HCoordinate
+   */
+  public static HCoordinate perpendicularBisector(Coordinate a, Coordinate b) {
+    // returns the perpendicular bisector of the line segment ab
+    double dx = b.x - a.x;
+    double dy = b.y - a.y;
+    HCoordinate l1 = new HCoordinate(a.x + dx / 2.0, a.y + dy / 2.0, 1.0);
+    HCoordinate l2 = new HCoordinate(a.x - dy + dx / 2.0, a.y + dx + dy / 2.0, 1.0);
+    return new HCoordinate(l1,l2);
+  }
+
+  /**
+   * Computes the circumcentre of a triangle.
+   * The circumcentre is the centre of the circumcircle,
+   * the smallest circle which encloses the triangle.
+   *
+   * @param a a vertx of the triangle
+   * @param b a vertx of the triangle
+   * @param c a vertx of the triangle
+   * @return the circumcentre of the triangle
+   */
+  public static Coordinate circumcentre(Coordinate a, Coordinate b, Coordinate c)
+  {
+    // compute the perpendicular bisector of chord ab
+    HCoordinate cab = perpendicularBisector(a, b);
+    // compute the perpendicular bisector of chord bc
+    HCoordinate cbc = perpendicularBisector(b, c);
+    // compute the intersection of the bisectors (circle radii)
+    HCoordinate hcc = new HCoordinate(cab, cbc);
+    Coordinate cc = null;
+    try {
+      cc = new Coordinate(hcc.getX(), hcc.getY());
+    }
+    catch (NotRepresentableException ex) {
+      // MD - not sure what we can do to prevent this (robustness problem)
+      // Idea - can we condition which edges we choose?
+      throw new IllegalStateException(ex.getMessage());
+    }
+    return cc;
+  }
+
+  /**
+   * Computes the incentre of a triangle.
    * The inCentre of a triangle is the point which is equidistant
-   * from the sides of the triangle.  This is also the point at which the bisectors
-   * of the angles meet.
+   * from the sides of the triangle.
+   * It is also the point at which the bisectors
+   * of the triangle's angles meet.
+   * It is the centre of the incircle, which
+   * is the unique circle that is tangent to each of the triangle's three sides.
    *
-   * @return the point which is the inCentre of the triangle
+   * @param a a vertx of the triangle
+   * @param b a vertx of the triangle
+   * @param c a vertx of the triangle
+   * @return the point which is the incentre of the triangle
    */
-  public Coordinate inCentre()
+  public static Coordinate inCentre(Coordinate a, Coordinate b, Coordinate c)
   {
     // the lengths of the sides, labelled by their opposite vertex
-    double len0 = p1.distance(p2);
-    double len1 = p0.distance(p2);
-    double len2 = p0.distance(p1);
+    double len0 = b.distance(c);
+    double len1 = a.distance(c);
+    double len2 = a.distance(b);
     double circum = len0 + len1 + len2;
 
-    double inCentreX = (len0 * p0.x + len1 * p1.x +len2 * p2.x)  / circum;
-    double inCentreY = (len0 * p0.y + len1 * p1.y +len2 * p2.y)  / circum;
+    double inCentreX = (len0 * a.x + len1 * b.x +len2 * c.x)  / circum;
+    double inCentreY = (len0 * a.y + len1 * b.y +len2 * c.y)  / circum;
     return new Coordinate(inCentreX, inCentreY);
   }
+
+  /**
+   * Computes the centroid (centre of mass) of a triangle.
+   * This is also the point at which the triangle's three
+   * medians intersect (a triangle median is the segment from a vertex of the triangle to the
+   * midpoint of the opposite side).
+   * The centroid divides each median in a ratio of 2:1.
+   *
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the centroid of the triangle
+   */
+  public static Coordinate centroid(Coordinate a, Coordinate b, Coordinate c)
+  {
+    double x = (a.x + b.x + c.x) / 3;
+    double y = (a.y + b.y + c.y) / 3;
+    return new Coordinate(x, y);
+  }
+
+  /**
+   * Computes the length of the longest side of a triangle
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the length of the longest side of the triangle
+   */
+  public static double longestSideLength(Coordinate a, Coordinate b, Coordinate c)
+  {
+    double lenAB = a.distance(b);
+    double lenBC = b.distance(c);
+    double lenCA = c.distance(a);
+    double maxLen = lenAB;
+    if (lenBC > maxLen)
+      maxLen = lenBC;
+    if (lenCA > maxLen)
+      maxLen = lenCA;
+    return maxLen;
+  }
+
+  /**
+   * Computes the point at which the bisector of the angle ABC
+   * cuts the segment AC.
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the angle bisector cut point
+   */
+  public static Coordinate angleBisector(Coordinate a, Coordinate b, Coordinate c)
+  {
+    /**
+     * Uses the fact that the lengths of the parts of the split segment
+     * are proportional to the lengths of the adjacent triangle sides
+     */
+    double len0 = b.distance(a);
+    double len2 = b.distance(c);
+    double lenSeg = a.distance(c);
+    double frac = len0 / (len0 + len2);
+    double dx = c.x - a.x;
+    double dy = c.y - a.y;
+
+    Coordinate splitPt = new Coordinate(a.x + frac * dx,
+                                        a.y + frac * dy);
+    return splitPt;
+  }
+
+  /**
+   * Computes the area of a triangle.
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the area of the triangle
+   */
+  public static double area(Coordinate a, Coordinate b, Coordinate c)
+  {
+    return Math.abs(
+          a.x * (c.y - b.y)
+        + b.x * (a.y - c.y)
+        + c.x * (b.y - a.y))
+        / 2.0;
+  }
+
+  /**
+   * Computes the incentre of a triangle.
+   * The inCentre of a triangle is the point which is equidistant
+   * from the sides of the triangle.
+   * It is also the point at which the bisectors
+   * of the triangle's angles meet.
+   * It is the centre of the incircle, which
+   * is the unique circle that is tangent to each of the triangle's three sides.
+   *
+   * @return the point which is the inCentre of the triangle
+   */
+  public Coordinate inCentre()
+  {
+    return inCentre(p0, p1, p2);
+  }
+
+
 }
+

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -50,10 +50,8 @@
   private CoordinateArraySequenceFactory() {
   }
 
-  /**
-   * @see http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
-   */
   private Object readResolve() {
+  	// http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
     return CoordinateArraySequenceFactory.instance();
   }
 

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformation.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformation.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformation.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,867 @@
+package com.vividsolutions.jts.geom.util;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Represents a affine transformation on the 2D Cartesian plane. 
+ * It can be used to transform a {@link Coordinate} or {@link Geometry}.
+ * An affine transformation is a mapping of the 2D plane into itself
+ * via a series of transformations of the following basic types:
+ * <ul>
+ * <li>reflection (through a line)
+ * <li>rotation (around the origin)
+ * <li>scaling (relative to the origin)
+ * <li>shearing (in both the X and Y directions)
+ * <li>translation 
+ * </ul>
+ * In general, affine transformations preserve straightness and parallel lines,
+ * but do not preserve distance or shape.
+ * <p>
+ * An affine transformation can be represented by a 3x3 
+ * matrix in the following form:
+ * <blockquote><pre>
+ * T = | m00 m01 m02 |
+ *     | m10 m11 m12 |
+ *     |  0   0   1  |
+ * </pre></blockquote>
+ * A coordinate P = (x, y) can be transformed to a new coordinate P' = (x', y')
+ * by representing it as a 3x1 matrix and using matrix multiplication to compute:
+ * <blockquote><pre>
+ * | x' |  = T x | x |
+ * | y' |        | y |
+ * | 1  |        | 1 |
+ * </pre></blockquote>
+ * Affine transformations can be composed using the {@link #compose} method.
+ * The composition of transformations is in general not commutative.
+ * transformation matrices as follows:
+ * <blockquote><pre>
+ * A.compose(B) = T<sub>B</sub> x T<sub>A</sub>
+ * </pre></blockquote>
+ * This produces a transformation whose effect is that of A followed by B.
+ * Composition is computed via multiplication of the 
+ * The methods {@link #reflect}, {@link #rotate}, {@link #scale}, {@link #shear}, and {@link #translate} 
+ * have the effect of composing a transformation of that type with
+ * the transformation they are invoked on.  
+ * <p>
+ * Affine transformations may be invertible or non-invertible.  
+ * If a transformation is invertible, then there exists 
+ * an inverse transformation which when composed produces 
+ * the identity transformation.  
+ * The {@link #getInverse} method
+ * computes the inverse of a transformation, if one exists.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class AffineTransformation
+	implements Cloneable, CoordinateSequenceFilter
+{
+  
+  /**
+   * Creates a transformation for a reflection about the 
+   * line (x0,y0) - (x1,y1).
+   * 
+   * @param x0 the x-ordinate of a point on the reflection line
+   * @param y0 the y-ordinate of a point on the reflection line
+   * @param x1 the x-ordinate of a another point on the reflection line
+   * @param y1 the y-ordinate of a another point on the reflection line
+   * @return a transformation for the reflection
+   */
+  public static AffineTransformation reflectionInstance(double x0, double y0, double x1, double y1)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToReflection(x0, y0, x1, y1);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a reflection about the 
+   * line (0,0) - (x,y).
+   * 
+   * @param x the x-ordinate of a point on the reflection line
+   * @param y the y-ordinate of a point on the reflection line
+   * @return a transformation for the reflection
+   */
+  public static AffineTransformation reflectionInstance(double x, double y)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToReflection(x, y);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a rotation
+   * about the origin 
+   * by an angle <i>theta</i>.
+   * Positive angles correspond to a rotation 
+   * in the counter-clockwise direction.
+   * 
+   * @param theta the rotation angle, in radians
+   * @return a transformation for the rotation
+   */
+  public static AffineTransformation rotationInstance(double theta)
+  {
+    return rotationInstance(Math.sin(theta), Math.cos(theta));
+  }
+  
+  /**
+   * Creates a transformation for a rotation 
+   * by an angle <i>theta</i>,
+   * specified by the sine and cosine of the angle.
+   * This allows providing exact values for sin(theta) and cos(theta)
+   * for the common case of rotations of multiples of quarter-circles. 
+   * 
+   * @param sinTheta the sine of the rotation angle
+   * @param cosTheta the cosine of the rotation angle
+   * @return a transformation for the rotation
+   */
+  public static AffineTransformation rotationInstance(double sinTheta, double cosTheta)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToRotation(sinTheta, cosTheta);
+    return trans;
+  }
+  
+  public static AffineTransformation scaleInstance(double xScale, double yScale)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToScale(xScale, yScale);
+    return trans;
+  }
+  
+  public static AffineTransformation shearInstance(double xShear, double yShear)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToShear(xShear, yShear);
+    return trans;
+  }
+  
+  public static AffineTransformation translationInstance(double x, double y)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToTranslation(x, y);
+    return trans;
+  }
+  
+  // affine matrix entries
+  // (bottom row is always [ 0 0 1 ])
+  private double m00;
+  private double m01;
+  private double m02;
+  private double m10;
+  private double m11;
+  private double m12;
+  
+  /**
+   * Constructs a new identity transformation
+   *
+   */
+  public AffineTransformation()
+  {
+    setToIdentity();
+  }
+  
+  /**
+   * Constructs a new transformation whose 
+   * matrix has the specified values.
+   * 
+   * @param matrix an array containing the 6 values { m00, m01, m02, m10, m11, m12 }
+   * @throws NullPointerException if matrix is null
+   * @throws ArrayIndexOutOfBoundsException if matrix is too small 
+   */
+  public AffineTransformation(double[] matrix)
+  {
+    m00 = matrix[0];
+    m01 = matrix[1];
+    m02 = matrix[2];
+    m10 = matrix[3];
+    m11 = matrix[4];
+    m12 = matrix[5];
+  }
+  
+  /**
+   * Constructs a new transformation whose 
+   * matrix has the specified values.
+   * 
+   * @param m00 the entry for the [0, 0] element in the transformation matrix 
+   * @param m01 the entry for the [0, 1] element in the transformation matrix
+   * @param m02 the entry for the [0, 2] element in the transformation matrix
+   * @param m10 the entry for the [1, 0] element in the transformation matrix
+   * @param m11 the entry for the [1, 1] element in the transformation matrix
+   * @param m12 the entry for the [1, 2] element in the transformation matrix
+   */
+  public AffineTransformation(double m00,
+      double m01,
+      double m02,
+      double m10,
+      double m11,
+      double m12)
+  {
+    setTransformation(m00, m01, m02, m10, m11, m12);
+  }
+  
+  /**
+   * Constructs a transformation which is
+   * a copy of the given one.
+   * 
+   * @param trans the transformation to copy
+   */
+  public AffineTransformation(AffineTransformation trans)
+  {
+    setTransformation(trans);
+  }
+  
+  /**
+   * Constructs a transformation
+   * which maps the given source
+   * points into the given destination points.
+   * 
+   * @param src0 source point 0
+   * @param src1 source point 1
+   * @param src2 source point 2
+   * @param dest0 the mapped point for source point 0
+   * @param dest1 the mapped point for source point 1
+   * @param dest2 the mapped point for source point 2
+   * 
+   */
+  public AffineTransformation(Coordinate src0,
+      Coordinate src1,
+      Coordinate src2,
+      Coordinate dest0,
+      Coordinate dest1,
+      Coordinate dest2)
+  {
+  }
+  
+  /**
+   * Sets this transformation to be the identity transformation.
+   * The identity transformation has the matrix:
+   * <blockquote><pre>
+   * | 1 0 0 |
+   * | 0 1 0 |
+   * | 0 0 1 |
+   * </pre></blockquote>
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToIdentity()
+  {
+    m00 = 1.0;    m01 = 0.0;  m02 = 0.0;
+    m10 = 0.0;    m11 = 1.0;  m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation's matrix to have the given values.
+   * 
+   * @param m00 the entry for the [0, 0] element in the transformation matrix 
+   * @param m01 the entry for the [0, 1] element in the transformation matrix
+   * @param m02 the entry for the [0, 2] element in the transformation matrix
+   * @param m10 the entry for the [1, 0] element in the transformation matrix
+   * @param m11 the entry for the [1, 1] element in the transformation matrix
+   * @param m12 the entry for the [1, 2] element in the transformation matrix
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setTransformation(double m00,
+      double m01,
+      double m02,
+      double m10,
+      double m11,
+      double m12)
+  {
+    this.m00 = m00;
+    this.m01 = m01;
+    this.m02 = m02;
+    this.m10 = m10;
+    this.m11 = m11;
+    this.m12 = m12;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a copy of the given one
+   * 
+   * @param trans a transformation to copy
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setTransformation(AffineTransformation trans)
+  {
+    m00 = trans.m00;    m01 = trans.m01;  m02 = trans.m02;
+    m10 = trans.m10;    m11 = trans.m11;  m12 = trans.m12; 
+    return this;
+  }
+  
+  /**
+   * Gets an array containing the entries
+   * of the transformation matrix.
+   * Only the 6 non-trivial entries are returned,
+   * in the sequence:
+   * <pre>
+   * m00, m01, m02, m10, m11, m12
+   * </pre>
+   * 
+   * @return an array of length 6
+   */
+  public double[] getMatrixEntries()
+  {
+    return new double[] { m00, m01, m02, m10, m11, m12 };
+  }
+  
+  /**
+  * Computes the determinant of the transformation matrix. 
+  * The determinant is computed as:
+  * <blockquote><pre>
+  * | m00 m01 m02 |
+  * | m10 m11 m12 | = m00 * m11 - m01 * m10
+  * |  0   0   1  |
+  * </pre></blockquote>
+  * If the determinant is zero, 
+  * the transform is singular (not invertible), 
+  * and operations which attempt to compute
+  * an inverse will throw a <tt>NoninvertibleTransformException</tt>. 
+
+  * @return the determinant of the transformation
+  * @see #getInverse()
+  */
+  public double getDeterminant()
+  {
+    return m00 * m11 - m01 * m10;
+  }
+
+  /**
+   * Computes the inverse of this transformation, if one
+   * exists.
+   * The inverse is the transformation which when 
+   * composed with this one produces the identity 
+   * transformation.
+   * A transformation has an inverse if and only if it
+   * is not singular (i.e. its
+   * determinant is non-zero).
+   * Geometrically, an transformation is non-invertible
+   * if it maps the plane to a line or a point.
+   * If no inverse exists this method
+   * will throw a <tt>NoninvertibleTransformationException</tt>.
+   * <p>
+   * The matrix of the inverse is equal to the 
+   * inverse of the matrix for the transformation.
+   * It is computed as follows:
+   * <blockquote><pre>  
+   *                 1    
+   * inverse(A)  =  ---   x  adjoint(A) 
+   *                det 
+   *
+   *
+   *             =   1       |  m11  -m01   m01*m12-m02*m11  |
+   *                ---   x  | -m10   m00  -m00*m12+m10*m02  |
+   *                det      |  0     0     m00*m11-m10*m01  |
+   *
+   *
+   *
+   *             = |  m11/det  -m01/det   m01*m12-m02*m11/det |
+   *               | -m10/det   m00/det  -m00*m12+m10*m02/det |
+   *               |   0           0          1               |
+   *
+   * </pre></blockquote>  
+   *  
+   * @return a new inverse transformation
+   * @throws NoninvertibleTransformationException
+   * @see #getDeterminant()
+   */
+  public AffineTransformation getInverse()
+  	  throws NoninvertibleTransformationException
+  {
+    double det = getDeterminant();
+    if (det == 0)
+    	throw new NoninvertibleTransformationException("Transformation is non-invertible");
+    
+    double im00 = m11 / det;
+    double im10 = -m10 / det;
+    double im01 = -m01 / det;
+    double im11 = m00 / det;
+    double im02 = (m01 * m12 - m02 * m11) / det;
+    double im12 = (-m00 * m12 + m10 * m02) / det;
+    
+    return new AffineTransformation(im00, im01, im02, im10, im11, im12);
+  }
+  
+  /**
+   * Explicitly computes the math for a reflection.  May not work.
+   * @param x0
+   * @param y0
+   * @param x1
+   * @param y1
+   * @return
+   */
+  public AffineTransformation setToReflectionBasic(double x0, double y0, double x1, double y1)
+  {
+    if (x0 == x1 && y0 == y1) {
+      throw new IllegalArgumentException("Reflection line points must be distinct");
+    }
+    double dx = x1 - x0;
+    double dy = y1 - y0;
+    double d = Math.sqrt(dx * dx + dy * dy);
+    double sin = dy / d;
+    double cos = dx / d;
+    double cs2 = 2 * sin * cos;
+    double c2s2 = cos * cos - sin * sin;
+    m00 = c2s2;   m01 = cs2;    m02 = 0.0;
+    m10 = cs2;    m11 = -c2s2;  m12 = 0.0;
+    return this;
+  }
+  
+  public AffineTransformation setToReflection(double x0, double y0, double x1, double y1)
+  {
+    if (x0 == x1 && y0 == y1) {
+      throw new IllegalArgumentException("Reflection line points must be distinct");
+    }
+    // translate line vector to origin
+    setToTranslation(-x0, -y0);
+    
+    // rotate vector to positive x axis direction
+    double dx = x1 - x0;
+    double dy = y1 - y0;
+    double d = Math.sqrt(dx * dx + dy * dy);
+    double sin = dy / d;
+    double cos = dx / d;
+    rotate(-sin, cos);
+    // reflect about the x axis
+    scale(1, -1);
+    // rotate back
+    rotate(sin, cos);
+    // translate back
+    translate(x0, y0);
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a reflection 
+   * about the line defined by vector (x,y).
+   * The transformation for a reflection
+   * is computed by:
+   * <blockquote><pre>
+   * d = sqrt(x<sup>2</sup> + y<sup>2</sup>)  
+   * sin = x / d;
+   * cos = x / d;
+   * 
+   * T<sub>ref</sub> = T<sub>rot(sin, cos)</sub> x T<sub>scale(1, -1)</sub> x T<sub>rot(-sin, cos)</sub  
+   * </pre></blockquote> 
+   * 
+   * @param x the x-component of the reflection line vector
+   * @param y the y-component of the reflection line vector
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToReflection(double x, double y)
+  {
+    if (x == 0.0 && y == 0.0) {
+      throw new IllegalArgumentException("Reflection vector must be non-zero");
+    }
+    // rotate vector to positive x axis direction
+    double d = Math.sqrt(x * x + y * y);
+    double sin = y / d;
+    double cos = x / d;
+    rotate(-sin, cos);
+    // reflect about the x-axis
+    scale(1, -1);
+    // rotate back
+    rotate(sin, cos);
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a rotation.
+   * A positive rotation angle corresponds 
+   * to a counter-clockwise rotation.
+   * The transformation matrix for a rotation
+   * by an angle <tt>theta</tt>
+   * has the value:
+   * <blockquote><pre>  
+   * |  cos(theta)  -sin(theta)   0 |
+   * |  sin(theta)   cos(theta)   0 |
+   * |           0            0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param theta the rotation angle, in radians
+   * @return this transformation, with an updated matrix
+   */
+  private AffineTransformation setToRotation(double theta)
+  {
+    setToRotation(Math.sin(theta), Math.cos(theta));
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a rotation 
+   * by specifying the sin and cos of the rotation angle directly.
+   * The transformation matrix for the rotation
+   * has the value:
+   * <blockquote><pre>  
+   * |  cosTheta  -sinTheta   0 |
+   * |  sinTheta   cosTheta   0 |
+   * |         0          0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param sinTheta the sine of the rotation angle
+   * @param cosTheta the cosine of the rotation angle
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToRotation(double sinTheta, double cosTheta)
+  {
+    m00 = cosTheta;    m01 = -sinTheta;  m02 = 0.0;
+    m10 = sinTheta;    m11 = cosTheta;   m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a scaling.
+   * The transformation matrix for a scale
+   * has the value:
+   * <blockquote><pre>  
+   * |  xScale      0  dx |
+   * |  1      yScale  dy |
+   * |  0           0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param xScale the amount to scale x-ordinates by
+   * @param yScale the amount to scale y-ordinates by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToScale(double xScale, double yScale)
+  {
+    m00 = xScale;   m01 = 0.0;      m02 = 0.0;
+    m10 = 0.0;      m11 = yScale;   m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a shear.
+   * The transformation matrix for a shear 
+   * has the value:
+   * <blockquote><pre>  
+   * |  1      xShear  0 |
+   * |  yShear      1  0 |
+   * |  0           0  1 |
+   * </pre></blockquote> 
+   * Note that a shear of (1, 1) is <i>not</i> 
+   * equal to shear(1, 0) composed with shear(0, 1).
+   * Instead, shear(1, 1) corresponds to a mapping onto the 
+   * line x = y.
+   * 
+   * @param xShear the x component to shear by
+   * @param yShear the y component to shear by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToShear(double xShear, double yShear)
+  {
+    m00 = 1.0;      m01 = xShear;      m02 = 0.0;
+    m10 = yShear;   m11 = 1.0;         m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a translation.
+   * For a translation by the vector (x, y)
+   * the transformation matrix has the value:
+   * <blockquote><pre>  
+   * |  1  0  dx |
+   * |  1  0  dy |
+   * |  0  0   1 |
+   * </pre></blockquote> 
+   * @param dx the x component to translate by
+   * @param dy the y component to translate by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToTranslation(double dx, double dy)
+  {
+    m00 = 1.0;  m01 = 0.0; m02 = dx;
+    m10 = 0.0;  m11 = 1.0; m12 = dy;
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a reflection transformation composed 
+   * with the current value.
+   * 
+   * @param x0 the x-ordinate of a point on the line to reflect around
+   * @param y0 the y-ordinate of a point on the line to reflect around
+   * @param x1 the x-ordinate of a point on the line to reflect around
+   * @param y1 the y-ordinate of a point on the line to reflect around
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation reflect(double x0, double y0, double x1, double y1)
+  {
+    compose(reflectionInstance(x0, y0, x1, y1));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a reflection transformation composed 
+   * with the current value.
+   * 
+   * @param x the x-ordinate of the line to reflect around
+   * @param y the y-ordinate of the line to reflect around
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation reflect(double x, double y)
+  {
+    compose(reflectionInstance(x, y));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a rotation transformation composed 
+   * with the current value.
+   * 
+   * @param theta the angle to rotate by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation rotate(double theta)
+  {
+    compose(rotationInstance(theta));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a rotation transformation composed 
+   * with the current value.
+   * 
+   * @param sinTheta the sine of the angle to rotate by
+   * @param cosTheta the cosine of the angle to rotate by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation rotate(double sinTheta, double cosTheta)
+  {
+    compose(rotationInstance(sinTheta, cosTheta));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a scale transformation composed 
+   * with the current value.
+   * 
+   * @param xScale the value to scale by in the x direction
+   * @param yScale the value to scale by in the y direction
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation scale(double xScale, double yScale)
+  {
+    compose(scaleInstance(xScale, yScale));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a shear transformation composed 
+   * with the current value.
+   * 
+   * @param xShear the value to shear by in the x direction
+   * @param yShear the value to shear by in the y direction
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation shear(double xShear, double yShear)
+  {
+    compose(shearInstance(xShear, yShear));
+    return this;
+  }
+
+  /**
+   * Updates the value of this transformation
+   * to that of a translation transformation composed 
+   * with the current value.
+   * 
+   * @param x the value to translate by in the x direction
+   * @param y the value to translate by in the y direction
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation translate(double x, double y)
+  {
+    compose(translationInstance(x, y));
+    return this;
+  }
+  
+
+  /**
+   * Composes the given {@link AffineTransformation} 
+   * with this transformation.
+   * This produces a transformation whose effect 
+   * is equal to applying this transformation 
+   * followed by the argument transformation.
+   * Mathematically,
+   * <blockquote><pre>
+   * A.compose(B) = T<sub>B</sub> x T<sub>A</sub>
+   * </pre></blockquote>
+   * 
+   * @param trans an affine transformation
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation compose(AffineTransformation trans)
+  {
+    double mp00 = trans.m00 * m00 + trans.m01 * m10;
+    double mp01 = trans.m00 * m01 + trans.m01 * m11;
+    double mp02 = trans.m00 * m02 + trans.m01 * m12 + trans.m02;
+    double mp10 = trans.m10 * m00 + trans.m11 * m10;
+    double mp11 = trans.m10 * m01 + trans.m11 * m11;
+    double mp12 = trans.m10 * m02 + trans.m11 * m12 + trans.m12;
+    m00 = mp00;
+    m01 = mp01;
+    m02 = mp02;
+    m10 = mp10;
+    m11 = mp11;
+    m12 = mp12;
+    return this;
+  }
+  
+  /**
+   * Composes this transformation 
+   * with the given {@link AffineTransformation}.
+   * This produces a transformation whose effect 
+   * is equal to applying the argument transformation 
+   * followed by this transformation.
+   * Mathematically,
+   * <blockquote><pre>
+   * A.composeBefore(B) = T<sub>A</sub> x T<sub>B</sub>
+   * </pre></blockquote>
+   * 
+   * @param trans an affine transformation
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation composeBefore(AffineTransformation trans)
+  {
+    double mp00 = m00 * trans.m00 + m01 * trans.m10;
+    double mp01 = m00 * trans.m01 + m01 * trans.m11;
+    double mp02 = m00 * trans.m02 + m01 * trans.m12 + m02;
+    double mp10 = m10 * trans.m00 + m11 * trans.m10;
+    double mp11 = m10 * trans.m01 + m11 * trans.m11;
+    double mp12 = m10 * trans.m02 + m11 * trans.m12 + m12;
+    m00 = mp00;
+    m01 = mp01;
+    m02 = mp02;
+    m10 = mp10;
+    m11 = mp11;
+    m12 = mp12;
+    return this;
+  }
+  
+  /**
+   * Applies this transformation to the <tt>src</tt> coordinate
+   * and places the results in the <tt>dest</tt> coordinate
+   * (which may be the same as the source).
+   * 
+   * @param src the coordinate to transform
+   * @param dest the coordinate to accept the results 
+   * @return the <tt>dest</tt> coordinate
+   */
+  public Coordinate transform(Coordinate src, Coordinate dest)
+  {
+    double xp = m00 * src.x + m01 * src.y + m02;
+    double yp = m10 * src.x + m11 * src.y + m12;
+    dest.x = xp;
+    dest.y = yp;
+    return dest;
+  }
+  
+  /**
+   * Applies this transformation to the i'th coordinate
+   * in the given CoordinateSequence.
+   * 
+   *@param seq  a <code>CoordinateSequence</code>
+   *@param i the index of the coordinate to transform
+   */
+  public void transform(CoordinateSequence seq, int i)
+  {
+    double xp = m00 * seq.getOrdinate(i, 0) + m01 * seq.getOrdinate(i, 1) + m02;
+    double yp = m10 * seq.getOrdinate(i, 0) + m11 * seq.getOrdinate(i, 1) + m12;
+    seq.setOrdinate(i, 0, xp);
+    seq.setOrdinate(i, 1, yp);	
+  }
+  
+  /**
+   * Transforms the i'th coordinate in the input sequence
+   * 
+   *@param seq  a <code>CoordinateSequence</code>
+   *@param i the index of the coordinate to transform
+   */
+  public void filter(CoordinateSequence seq, int i)
+  {
+    transform(seq, i);
+  }
+  
+  public boolean isGeometryChanged()
+  {
+    return true;
+  }
+  
+  /**
+   * Reports that this filter should continue to be executed until 
+   * all coordinates have been transformed.
+   * 
+   * @return false
+   */
+  public boolean isDone() 
+  {
+    return false;
+  }
+  
+  /**
+  * Tests if this transformation is the identity transformation.
+  *
+  * @return true if this is the identity transformation
+  */
+  public boolean isIdentity()
+  {
+    return (m00 == 1 && m01 == 0 && m02 == 0
+          && m10 == 0 && m11 == 1 && m12 == 0);
+  }
+  
+ /**
+  * Tests if an object is an
+  * <tt>AffineTransformation</tt>
+  * and has the same matrix as 
+  * this transformation.
+  * 
+  * @param obj an object to test
+  * @return true if the given object is equal to this object
+  */
+  public boolean equals(Object obj)
+  {
+    if (obj instanceof AffineTransformation)
+      return false;
+    AffineTransformation trans = (AffineTransformation) obj;
+    return m00 == trans.m00
+    && m01 == trans.m01
+    && m02 == trans.m02
+    && m10 == trans.m10
+    && m11 == trans.m11
+    && m12 == trans.m12;
+  }
+  
+  /**
+   * Gets a text representation of this transformation.
+   * The string is of the form:
+   * <pre>
+   * AffineTransformation[[m00, m01, m02], [m10, m11, m12]]
+   * </pre>
+   * 
+   * @return a string representing this transformation
+   * 
+   */
+  public String toString()
+  {
+    return "AffineTransformation[[" + m00 + ", " + m01 + ", " + m02 
+    + "], ["
+    + m10 + ", " + m11 + ", " + m12 + "]]";
+  }
+  
+  /**
+   * Clones this transformation
+   * 
+   * @return a copy of this transformation
+   */
+  public Object clone()
+  {
+    return new AffineTransformation(this);
+  }
+}

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,124 @@
+package com.vividsolutions.jts.geom.util;
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Builds an {@link AffineTransformation} defined by three control points 
+ * and their images under the transformation.
+ * <p>
+ * A transformation is well-defined by a set of three control points 
+ * as long as the points are not collinear 
+ * (this includes the degenerate situation
+ * where two or more points are identical).
+ * If the control points are not well-defined, the system of equations
+ * defining the transformation matrix entries is not solvable,
+ * and no transformation can be determined.
+ * If the control point images are collinear or non-unique,
+ * a non-invertible transformations will be generated.
+ * <p>
+ * This technique of recovering a transformation
+ * from its effect on known points is used in the Bilinear Interpolated Triangulation
+ * algorithm for warping planar surfaces.
+ *
+ * @author Martin Davis
+ */
+public class AffineTransformationBuilder
+{
+  private Coordinate src0;
+  private Coordinate src1;
+  private Coordinate src2;
+  private Coordinate dest0;
+  private Coordinate dest1;
+  private Coordinate dest2;
+  
+  // the matrix entries for the transformation
+  private double m00, m01, m02, m10, m11, m12;
+  
+  /**
+   * Constructs a new builder for
+   * the transformation defined by the given 
+   * set of control point mappings.
+   * 
+   * @param src0 a control point
+   * @param src1 a control point
+   * @param src2 a control point
+   * @param dest0 the image of control point 0 under the required transformation
+   * @param dest1 the image of control point 1 under the required transformation
+   * @param dest2 the image of control point 2 under the required transformation
+   */
+  public AffineTransformationBuilder(Coordinate src0,
+      Coordinate src1,
+      Coordinate src2,
+      Coordinate dest0,
+      Coordinate dest1,
+      Coordinate dest2)
+  {
+    this.src0 = src0;
+    this.src1 = src1;
+    this.src2 = src2;
+    this.dest0 = dest0;
+    this.dest1 = dest1;
+    this.dest2 = dest2;
+  }
+  
+  /**
+   * Computes the {@link AffineTransformation}
+   * determined by the control point mappings,
+   * or <code>null</code> if the control points do not determine a unique transformation.
+   * 
+   * @return an affine transformation
+   * @return null if the control points do not determine a unique transformation
+   */
+  public AffineTransformation getTransformation()
+  {
+    boolean isSolvable = compute();
+    if (isSolvable)
+      return new AffineTransformation(m00, m01, m02, m10, m11, m12);
+    return null;
+  }
+  
+  /**
+   * Computes the transformation matrix by 
+   * solving the two systems of linear equations
+   * defined by the control point mappings,
+   * if this is possible.
+   * 
+   * @return true if the transformation matrix is solvable
+   */
+  private boolean compute()
+  {
+    double[] bx = new double[] { dest0.x, dest1.x, dest2.x };
+    double[] row0 = solve(bx);
+    if (row0 == null) return false;
+    m00 = row0[0];
+    m01 = row0[1];
+    m02 = row0[2];
+    
+    double[] by = new double[] { dest0.y, dest1.y, dest2.y };
+    double[] row1 = solve(by);
+    if (row1 == null) return false;
+    m10 = row1[0];
+    m11 = row1[1];
+    m12 = row1[2];
+    return true;
+  }
+
+  /**
+   * Solves the transformation matrix system of linear equations
+   * for the given right-hand side vector.
+   * 
+   * @param b the vector for the right-hand side of the system
+   * @return the solution vector
+   * @return null if no solution could be determined
+   */
+  private double[] solve(double[] b)
+  {
+    double[][] a = new double[][] {
+        { src0.x, src0.y, 1 },
+        { src1.x, src1.y, 1},
+        { src2.x, src2.y, 1}
+    };
+    return Matrix.solve(a, b);
+  }
+}

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -25,11 +25,14 @@
  * The default behaviour of this class is to simply recursively transform
  * each Geometry component into an identical object by copying.
  * <p>
- * Note that all <code>transformX</code> methods may return <code>null</code>,
- * to avoid creating empty geometry objects. This will be handled correctly
- * by the transformer.
- * The @link transform} method itself will always
- * return a geometry object.
+ * All <code>transformX</code> methods may return <code>null</code>,
+ * to avoid creating empty or invalid geometry objects. This will be handled correctly
+ * by the transformer.   <code>transformX</code> methods should always return valid
+ * geometry - if they cannot do this they should return <code>null</code>
+ * (for instance, it may not be possible for a transformLineString implementation
+ * to return at least two points - in this case, it should return <code>null</code>).
+ * The {@link transform} method itself will always
+ * return a non-null Geometry object (but this may be empty).
  *
  * @version 1.7
  *
@@ -73,6 +76,11 @@
   public GeometryTransformer() {
   }
 
+  /**
+   * Utility function to make input geometry available
+   *
+   * @return the input geometry
+   */
   public Geometry getInputGeometry() { return inputGeom; }
 
   public final Geometry transform(Geometry inputGeom)
@@ -122,6 +130,18 @@
     return (CoordinateSequence) seq.clone();
   }
 
+  /**
+   * Transforms a {@link CoordinateSequence}.
+   * This method should always return a valid coordinate list for
+   * the desired result type.  (E.g. a coordinate list for a LineString
+   * must have 0 or at least 2 points).
+   * If this is not possible, return an empty sequence -
+   * this will be pruned out.
+   *
+   * @param coords the coordinates to transform
+   * @param parent the parent geometry
+   * @return the transformed coordinates
+   */
   protected CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
   {
     return copy(coords);
@@ -153,6 +173,13 @@
 
   }
 
+  /**
+   * Transforms a {@link LineString} geometry.
+   *
+   * @param geom
+   * @param parent
+   * @return
+   */
   protected Geometry transformLineString(LineString geom, Geometry parent) {
     // should check for 1-point sequences and downgrade them to points
     return factory.createLineString(

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/Matrix.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/Matrix.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/Matrix.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,88 @@
+package com.vividsolutions.jts.geom.util;
+
+/**
+ * Implements some 2D matrix operations 
+ * (in particular, solving systems of linear equations).
+ * 
+ * @author Martin Davis
+ *
+ */
+public class Matrix
+{
+  private static void swapRows(double[][] m, int i, int j)
+  {
+    if (i == j) return;
+    for (int col = 0; col < m[0].length; col++) {
+      double temp = m[i][col];
+      m[i][col] = m[j][col];
+      m[j][col] = temp;
+    }
+  }
+  
+  private static void swapRows(double[] m, int i, int j)
+  {
+    if (i == j) return;
+    double temp = m[i];
+    m[i] = m[j];
+    m[j] = temp;
+  }
+  
+  /**
+   * Solves a system of equations using Gaussian Elimination.
+   * In order to avoid overhead the algorithm runs in-place
+   * on A - if A should not be modified the client must supply a copy.
+   * 
+   * @param A an nxn matrix in row/column order )modified by this method)
+   * @param b a vector of length n
+   * 
+   * @return a vector containing the solution (if any)
+   * @return null if the system has no or no unique solution
+   * 
+   * @throws IllegalArgumentException if the matrix is the wrong size 
+   */
+  public static double[] solve( double[][] a, double[] b )
+  {
+    int n = b.length;
+    if ( a.length != n || a[0].length != n )
+      throw new IllegalArgumentException("Matrix A is incorrectly sized");
+    
+    // Use Gaussian Elimination with partial pivoting.
+    // Iterate over each row
+    for (int i = 0; i < n; i++ ) {
+      // Find the largest pivot in the rows below the current one.
+      int maxElementRow = i;
+      for (int j = i + 1; j < n; j++ )
+        if ( Math.abs( a[j][i] ) > Math.abs( a[maxElementRow][i] ) )
+          maxElementRow = j;
+        
+      if ( a[maxElementRow][i] == 0.0 )
+        return null;
+      
+      // Exchange current row and maxElementRow in A and b.
+      swapRows(a, i, maxElementRow );
+      swapRows(b, i, maxElementRow );
+      
+      // Eliminate using row i
+      for (int j = i + 1; j < n; j++ ) {
+        double rowFactor = a[j][i] / a[i][i];
+        for (int k = n - 1; k >= i; k-- )
+          a[j][k] -= a[i][k] * rowFactor;
+        b[j] -= b[i] * rowFactor;
+      }
+    }
+    
+    /**
+     * A is now (virtually) in upper-triangular form.
+     * The solution vector is determined by back-substitution.
+     */
+    double[] solution = new double[n];
+    for (int j = n - 1; j >= 0; j-- ) {
+      double t = 0.0;
+      for (int k = j + 1; k < n; k++ )
+        t += a[j][k] * solution[k];
+      solution[j] = ( b[j] - t ) / a[j][j];
+    }
+    return solution;
+  }
+  
+}
\ No newline at end of file

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,20 @@
+package com.vividsolutions.jts.geom.util;
+
+/**
+ * Indicates that an {@link AffineTransformation}
+ * is non-invertible.
+ * 
+ * @author Martin Davis
+ */
+public class NoninvertibleTransformationException
+	extends Exception
+{
+  public NoninvertibleTransformationException()
+  {
+    super();
+  }
+  public NoninvertibleTransformationException(String msg)
+  {
+    super(msg);
+  }
+}

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -127,7 +127,7 @@
     return CGAlgorithms.computeOrientation(e.p0, e.p1, p1);
   }
 
-  public void computeLabel()
+  public void computeLabel(BoundaryNodeRule boundaryNodeRule)
   {
     // subclasses should override this if they are using labels
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -38,7 +38,7 @@
 import java.io.PrintStream;
 import java.util.*;
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.algorithm.SimplePointInAreaLocator;
+import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.util.*;
 
 /**
@@ -126,9 +126,9 @@
     return (EdgeEnd) edgeList.get(iNextCW);
   }
 
-  public void computeLabelling(GeometryGraph[] geom)
+  public void computeLabelling(GeometryGraph[] geomGraph)
   {
-    computeEdgeEndLabels();
+    computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule());
     // Propagate side labels  around the edges in the star
     // for each parent Geometry
 //Debug.print(this);
@@ -190,7 +190,7 @@
           }
           else {
             Coordinate p = e.getCoordinate();
-            loc = getLocation(geomi, p, geom);
+            loc = getLocation(geomi, p, geomGraph);
           }
           label.setAllLocationsIfNull(geomi, loc);
         }
@@ -201,12 +201,12 @@
 //Debug.printIfWatch(this);
   }
 
-  private void computeEdgeEndLabels()
+  private void computeEdgeEndLabels(BoundaryNodeRule boundaryNodeRule)
   {
     // Compute edge label for each EdgeEnd
     for (Iterator it = iterator(); it.hasNext(); ) {
       EdgeEnd ee = (EdgeEnd) it.next();
-      ee.computeLabel();
+      ee.computeLabel(boundaryNodeRule);
     }
   }
   int getLocation(int geomIndex, Coordinate p, GeometryGraph[] geom)
@@ -218,9 +218,9 @@
     return ptInAreaLocation[geomIndex];
   }
 
-  public boolean isAreaLabelsConsistent()
+  public boolean isAreaLabelsConsistent(GeometryGraph geomGraph)
   {
-    computeEdgeEndLabels();
+    computeEdgeEndLabels(geomGraph.getBoundaryNodeRule());
     return checkAreaLabelsConsistent(0);
   }
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -62,6 +62,12 @@
     this.dist = dist;
   }
 
+  public Coordinate getCoordinate() { return coord; }
+
+  public int getSegmentIndex() { return segmentIndex; }
+
+  public double getDistance() { return dist; }
+
   public int compareTo(Object obj)
   {
     EdgeIntersection other = (EdgeIntersection) obj;

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -39,12 +39,13 @@
 import com.vividsolutions.jts.noding.*;
 
 /**
- * Validates that a collection of SegmentStrings is correctly noded.
+ * Validates that a collection of {@link Edge}s is correctly noded.
  * Throws an appropriate exception if an noding error is found.
  *
  * @version 1.7
  */
-public class EdgeNodingValidator {
+public class EdgeNodingValidator 
+{
 
   private static Collection toSegmentStrings(Collection edges)
   {
@@ -59,11 +60,22 @@
 
   private NodingValidator nv;
 
+  /**
+   * Creates a new validator for the given collection of {@link Edge}s.
+   * 
+   * @param edges a collection of Edges.
+   */
   public EdgeNodingValidator(Collection edges)
   {
     nv = new NodingValidator(toSegmentStrings(edges));
   }
 
+  /**
+   * Checks whether the supplied edges
+   * are correctly noded.  Throws an exception if they are not.
+   * 
+   * @throws RuntimeException if the SegmentStrings are not correctly noded
+   */
   public void checkValid()
   {
     nv.checkValid();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeRing.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeRing.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/EdgeRing.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -41,7 +41,9 @@
 
 import com.vividsolutions.jts.algorithm.CGAlgorithms;
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.util.Assert;
+import com.vividsolutions.jts.geom.impl.*;
+import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.util.*;
 
 
 /**
@@ -114,6 +116,7 @@
     }
     ring = geometryFactory.createLinearRing(coord);
     isHole = cga.isCCW(ring.getCoordinates());
+//Debug.println( (isHole ? "hole - " : "shell - ") + WKTWriter.toLineString(new CoordinateArraySequence(ring.getCoordinates())));
   }
   abstract public DirectedEdge getNext(DirectedEdge de);
   abstract public void setEdgeRing(DirectedEdge de, EdgeRing er);
@@ -133,7 +136,9 @@
     DirectedEdge de = start;
     boolean isFirstEdge = true;
     do {
-      Assert.isTrue(de != null, "found null Directed Edge");
+//      Assert.isTrue(de != null, "found null Directed Edge");
+      if (de == null)
+        throw new TopologyException("Found null DirectedEdge");
       if (de.getEdgeRing() == this)
         throw new TopologyException("Directed Edge visited twice during ring-building at " + de.getCoordinate());
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -36,7 +36,7 @@
 package com.vividsolutions.jts.geomgraph;
 
 import java.util.*;
-import com.vividsolutions.jts.algorithm.LineIntersector;
+import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.geomgraph.index.*;
 import com.vividsolutions.jts.util.*;
@@ -60,6 +60,7 @@
  * the "At Most One Rule":
  *    isInBoundary = (componentCount == 1)
  */
+/*
   public static boolean isInBoundary(int boundaryCount)
   {
     // the "Mod-2 Rule"
@@ -69,11 +70,16 @@
   {
     return isInBoundary(boundaryCount) ? Location.BOUNDARY : Location.INTERIOR;
   }
+*/
 
+  public static int determineBoundary(BoundaryNodeRule boundaryNodeRule, int boundaryCount)
+  {
+    return boundaryNodeRule.isInBoundary(boundaryCount)
+        ? Location.BOUNDARY : Location.INTERIOR;
+  }
+
   private Geometry parentGeom;
-  // the precision model of the Geometry represented by this graph
-  //private PrecisionModel precisionModel = null;
-  //private int SRID;
+
   /**
    * The lineEdgeMap is a map of the linestring components of the
    * parentGeometry to the edges which are derived from them.
@@ -81,12 +87,13 @@
    */
   private Map lineEdgeMap = new HashMap();
 
-  //private PrecisionModel newPM = null;
+  private BoundaryNodeRule boundaryNodeRule = null;
+
   /**
    * If this flag is true, the Boundary Determination Rule will used when deciding
    * whether nodes are in the boundary or not
    */
-  private boolean useBoundaryDeterminationRule = false;
+  private boolean useBoundaryDeterminationRule = true;
   private int argIndex;  // the index of this geometry as an argument to a spatial function (used for labelling)
   private Collection boundaryNodes;
   private boolean hasTooFewPoints = false;
@@ -106,9 +113,17 @@
     return new SimpleMCSweepLineIntersector();
   }
 
-  public GeometryGraph(int argIndex, Geometry parentGeom) {
+  public GeometryGraph(int argIndex, Geometry parentGeom)
+  {
+    this(argIndex, parentGeom,
+         BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE
+         );
+  }
+
+  public GeometryGraph(int argIndex, Geometry parentGeom, BoundaryNodeRule boundaryNodeRule) {
     this.argIndex = argIndex;
     this.parentGeom = parentGeom;
+    this.boundaryNodeRule = boundaryNodeRule;
     if (parentGeom != null) {
 //      precisionModel = parentGeom.getPrecisionModel();
 //      SRID = parentGeom.getSRID();
@@ -133,10 +148,13 @@
 //  public int getSRID() { return SRID; }
 
   public boolean hasTooFewPoints() { return hasTooFewPoints; }
+
   public Coordinate getInvalidPoint() { return invalidPoint; }
 
   public Geometry getGeometry() { return parentGeom; }
 
+  public BoundaryNodeRule getBoundaryNodeRule() { return boundaryNodeRule; }
+
   public Collection getBoundaryNodes()
   {
     if (boundaryNodes == null)
@@ -174,9 +192,8 @@
 
     // check if this Geometry should obey the Boundary Determination Rule
     // all collections except MultiPolygons obey the rule
-    if (g instanceof GeometryCollection
-        && ! (g instanceof MultiPolygon))
-            useBoundaryDeterminationRule = true;
+    if (g instanceof MultiPolygon)
+      useBoundaryDeterminationRule = false;
 
     if (g instanceof Polygon)                 addPolygon((Polygon) g);
                         // LineString also handles LinearRings
@@ -364,10 +381,9 @@
   }
 
   /**
-   * Adds points using the mod-2 rule of SFS.  This is used to add the boundary
-   * points of dim-1 geometries (Curves/MultiCurves).  According to the SFS,
-   * an endpoint of a Curve is on the boundary
-   * iff if it is in the boundaries of an odd number of Geometries
+   * Adds candidate boundary points using the current {@link BoundaryNodeRule}.
+   * This is used to add the boundary
+   * points of dim-1 geometries (Curves/MultiCurves).
    */
   private void insertBoundaryPoint(int argIndex, Coordinate coord)
   {
@@ -381,7 +397,7 @@
     if (loc == Location.BOUNDARY) boundaryCount++;
 
     // determine the boundary status of the point according to the Boundary Determination Rule
-    int newLoc = determineBoundary(boundaryCount);
+    int newLoc = determineBoundary(boundaryNodeRule, boundaryCount);
     lbl.setLocation(argIndex, newLoc);
   }
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/Node.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/Node.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/Node.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -129,6 +129,7 @@
     else
       label.setLocation(argIndex, onLocation);
   }
+
   /**
    * Updates the label of a node to BOUNDARY,
    * obeying the mod-2 boundaryDetermination rule.

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,6 +1,3 @@
-
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -63,10 +60,10 @@
  *
  * @version 1.7
  */
-public class PlanarGraph {
+public class PlanarGraph
+{
 
   public static final CGAlgorithms cga = new CGAlgorithms();
-  //public static final LineIntersector li = new RobustLineIntersector();
 
   /**
    * For nodes in the Collection, link the DirectedEdges at the node that are in the result.

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Bintree.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Bintree.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Bintree.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -37,6 +37,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+
 /**
  * An <code>BinTree</code> (or "Binary Interval Tree")
  * is a 1-dimensional version of a quadtree.
@@ -49,6 +50,14 @@
  * items beforehand.  It will automatically expand to accomodate any extent
  * of dataset.
  * <p>
+ * The bintree structure is used to provide a primary filter
+ * for interval queries.  The query() method returns a list of
+ * all objects which <i>may</i> intersect the query interval.
+ * Note that it may return objects which do not in fact intersect.
+ * A secondary filter is required to test for exact intersection.
+ * Of course, this secondary filter may consist of other tests besides
+ * intersection, such as testing other kinds of spatial relationships.
+ * <p>
  * This index is different to the Interval Tree of Edelsbrunner
  * or the Segment Tree of Bentley.
  *

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Interval.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Interval.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Interval.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -97,4 +97,9 @@
   {
     return (p >= this.min && p <= this.max);
   }
+
+  public String toString()
+  {
+    return "[" + min + ", " + max + "]";
+  }
 }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Node.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Node.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/Node.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -77,6 +77,8 @@
 
   protected boolean isSearchMatch(Interval itemInterval)
   {
+//    System.out.println(itemInterval + " overlaps " + interval + " : "
+//                       + itemInterval.overlaps(interval));
     return itemInterval.overlaps(interval);
   }
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/NodeBase.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/NodeBase.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/bintree/NodeBase.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -92,6 +92,7 @@
     if (! isSearchMatch(interval))
       return items;
 
+    // some of these may not actually overlap - this is allowed by the bintree contract
     resultItems.addAll(items);
 
     for (int i = 0; i < 2; i++) {

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/quadtree/Root.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/quadtree/Root.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/quadtree/Root.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -102,7 +102,7 @@
     * the smallest existing quad containing the query
     */
     boolean isZeroX = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX());
-    boolean isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX());
+    boolean isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinY(), itemEnv.getMaxY());
     NodeBase node;
     if (isZeroX || isZeroY)
       node = tree.find(itemEnv);

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -280,7 +280,8 @@
   }
 
   /**
-   *  Also builds the tree, if necessary.
+   * Removes an item from the tree.
+   * (Builds the tree, if necessary.)
    */
   protected boolean remove(Object searchBounds, Object item) {
     if (!built) { build(); }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBReader.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBReader.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBReader.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -40,6 +40,9 @@
  * Supports use of an {@link InStream}, which allows easy use
  * with arbitary byte stream sources.
  * <p>
+ * This class reads the format describe in {@link WKBWriter}.  It also partiually handles
+ * the Extended WKB format used by PostGIS (by reading SRID values)
+ * <p>
  * This class is designed to support reuse of a single instance to read multiple
  * geometries. This class is not thread-safe; each thread should create its own
  * instance.
@@ -48,6 +51,37 @@
  */
 public class WKBReader
 {
+  /**
+   * Converts a hexadecimal string to a byte array.
+   *
+   * @param hex a string containing hex digits
+   */
+  public static byte[] hexToBytes(String hex)
+  {
+    int byteLen = hex.length() / 2;
+    byte[] bytes = new byte[byteLen];
+
+    for (int i = 0; i < hex.length() / 2; i++) {
+      int i2 = 2 * i;
+      if (i2 + 1 > hex.length())
+        throw new IllegalArgumentException("Hex string has odd length");
+
+      int nib1 = hexToInt(hex.charAt(i2));
+      int nib0 = hexToInt(hex.charAt(i2 + 1));
+      byte b = (byte) ((nib1 << 4) + (byte) nib0);
+      bytes[i] = b;
+    }
+    return bytes;
+  }
+
+  private static int hexToInt(char hex)
+  {
+    int nib = Character.digit(hex, 16);
+    if (nib < 0)
+      throw new IllegalArgumentException("Invalid hex digit");
+    return nib;
+  }
+
   private static final String INVALID_GEOM_TYPE_MSG
   = "Invalid geometry type encountered in ";
 
@@ -55,6 +89,8 @@
   private PrecisionModel precisionModel;
   // default dimension - will be set on read
   private int inputDimension = 2;
+  private boolean hasSRID = false;
+  private int SRID = 0;
   private ByteOrderDataInStream dis = new ByteOrderDataInStream();
   private double[] ordValues;
 
@@ -72,13 +108,18 @@
    *
    * @param bytes the byte array to read from
    * @return the geometry read
-   * @throws IOException if an input exception occurs
    * @throws ParseException if a parse exception occurs
    */
-  public Geometry read(byte[] bytes) throws IOException, ParseException
+  public Geometry read(byte[] bytes) throws ParseException
   {
     // possibly reuse the ByteArrayInStream?
-    return read(new ByteArrayInStream(bytes));
+    // don't throw IOExceptions, since we are not doing any I/O
+    try {
+      return read(new ByteArrayInStream(bytes));
+    }
+    catch (IOException ex) {
+      throw new RuntimeException("Unexpected IOException caught: " + ex.getMessage());
+    }
   }
 
   /**
@@ -93,9 +134,9 @@
   throws IOException, ParseException
   {
     dis.setInStream(is);
-
-
-    return readGeometry();
+    Geometry g = readGeometry();
+    setSRID(g);
+    return g;
   }
 
   private Geometry readGeometry()
@@ -109,9 +150,16 @@
 
     int typeInt = dis.readInt();
     int geometryType = typeInt & 0xff;
+    // determine if Z values are present
     boolean hasZ = (typeInt & 0x80000000) != 0;
     inputDimension =  hasZ ? 3 : 2;
+    // determine if SRIDs are present
+    hasSRID = (typeInt & 0x20000000) != 0;
 
+    if (hasSRID) {
+      SRID = dis.readInt();
+    }
+
     // only allocate ordValues buffer if necessary
     if (ordValues == null || ordValues.length < inputDimension)
       ordValues = new double[inputDimension];
@@ -136,6 +184,19 @@
     //return null;
   }
 
+  /**
+   * Sets the SRID, if it was specified in the WKB
+   *
+   * @param g the geometry to update
+   * @return the geometry with an updated SRID value, if required
+   */
+  private Geometry setSRID(Geometry g)
+  {
+    if (SRID != 0)
+      g.setSRID(SRID);
+    return g;
+  }
+
   private Point readPoint() throws IOException
   {
     CoordinateSequence pts = readCoordinateSequence(1);

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBWriter.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBWriter.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKBWriter.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -59,7 +59,27 @@
  */
 public class WKBWriter
 {
-  private int outputDimension;
+  public static String bytesToHex(byte[] bytes)
+  {
+    StringBuffer buf = new StringBuffer();
+    for (int i = 0; i < bytes.length; i++) {
+      byte b = bytes[i];
+      buf.append(toHexDigit((b >> 4) & 0x0F));
+      buf.append(toHexDigit(b & 0x0F));
+    }
+    return buf.toString();
+  }
+
+  private static char toHexDigit(int n)
+  {
+    if (n < 0 || n > 15)
+      throw new IllegalArgumentException("Nibble value out of range: " + n);
+    if (n <= 9)
+      return (char) ('0' + n);
+    return (char) ('A' + (n - 10));
+  }
+
+  private int outputDimension = 2;
   private int byteOrder;
   private ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
   private OutStream byteArrayOutStream = new OutputStreamOutStream(byteArrayOS);

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTReader.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTReader.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTReader.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -406,7 +406,16 @@
    *@throws  IOException     if an I/O error occurs
    */
   private Geometry readGeometryTaggedText() throws IOException, ParseException {
-    String type = getNextWord();
+    String type = null;
+    
+    try{
+    	type = getNextWord();
+    }catch(IOException e){
+    	return null;
+    }catch(ParseException e){
+    	return null;
+    }
+    
     if (type.equals("POINT")) {
       return readPointText();
     }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTWriter.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTWriter.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/io/WKTWriter.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -145,15 +145,74 @@
     return buf.toString();
   }
 
+  private int outputDimension = 2;
   private DecimalFormat formatter;
   private boolean isFormatted = false;
+  private boolean useFormatting = false;
   private int level = 0;
+  private int coordsPerLine = -1;
+  private String indentTabStr = "  ";
 
+  /**
+   * Creates a new WKTWriter with default settings
+   */
   public WKTWriter()
   {
   }
 
   /**
+   * Creates a writer that writes {@link Geometry}s with
+   * the given output dimension (2 or 3).
+   * If the specified output dimension is 3, the Z value
+   * of coordinates will be written if it is present
+   * (i.e. if it is not <code>Double.NaN</code>).
+   *
+   * @param outputDimension the coordinate dimension to output (2 or 3)
+   */
+  public WKTWriter(int outputDimension) {
+    this.outputDimension = outputDimension;
+
+    if (outputDimension < 2 || outputDimension > 3)
+      throw new IllegalArgumentException("Invalid output dimension (must be 2 or 3)");
+  }
+
+  /**
+   * Sets whether the output will be formatted.
+   *
+   * @param isFormatted true if the output is to be formatted
+   */
+  public void setFormatted(boolean isFormatted)
+  {
+    this.isFormatted = isFormatted;
+  }
+
+  /**
+   * Sets the maximum number of coordinates per line
+   * written in formatted output.
+   * If the provided coordinate number is <= 0,
+   * coordinates will be written all on one line.
+   *
+   * @param coordsPerLine the number of coordinates per line to output.
+   */
+  public void setMaxCoordinatesPerLine(int coordsPerLine)
+  {
+    this.coordsPerLine = coordsPerLine;
+  }
+
+  /**
+   * Sets the tab size to use for indenting.
+   *
+   * @param size the number of spaces to use as the tab string
+   * @throws IllegalArgumentException if the size is non-positive
+   */
+  public void setTab(int size)
+  {
+    if(size <= 0)
+      throw new IllegalArgumentException("Tab count must be positive");
+    this.indentTabStr = stringOfChar(' ', size);
+  }
+
+  /**
    *  Converts a <code>Geometry</code> to its Well-known Text representation.
    *
    *@param  geometry  a <code>Geometry</code> to process
@@ -164,7 +223,7 @@
   {
     Writer sw = new StringWriter();
     try {
-      writeFormatted(geometry, false, sw);
+      writeFormatted(geometry, isFormatted, sw);
     }
     catch (IOException ex) {
       Assert.shouldNeverReachHere();
@@ -224,10 +283,10 @@
    *@return           a <Geometry Tagged Text> string (see the OpenGIS Simple
    *      Features Specification)
    */
-  private void writeFormatted(Geometry geometry, boolean isFormatted, Writer writer)
+  private void writeFormatted(Geometry geometry, boolean useFormatting, Writer writer)
     throws IOException
   {
-    this.isFormatted = isFormatted;
+    this.useFormatting = useFormatting;
     formatter = createFormatter(geometry.getPrecisionModel());
     appendGeometryTaggedText(geometry, 0, writer);
   }
@@ -417,21 +476,28 @@
   }
 
   /**
-   *  Appends the i'th coordinate from the sequence to the writer
+   * Appends the i'th coordinate from the sequence to the writer
    *
-   *@param  seq      the <code>CoordinateSequence</code> to process
-   * @param i the index of the coordinate to write
-   *@param  writer          the output writer to append to
+   * @param  seq  the <code>CoordinateSequence</code> to process
+   * @param i     the index of the coordinate to write
+   * @param  writer the output writer to append to
    */
   private void appendCoordinate(CoordinateSequence seq, int i, Writer writer)
-    throws IOException
+      throws IOException
   {
     writer.write(writeNumber(seq.getX(i)) + " " + writeNumber(seq.getY(i)));
+    if (outputDimension >= 3 && seq.getDimension() >= 3) {
+      double z = seq.getOrdinate(i, 3);
+      if (! Double.isNaN(z)) {
+        writer.write(" ");
+        writer.write(writeNumber(z));
+      }
+    }
   }
 
   /**
-   *  Converts a <code>Coordinate</code> to &lt;Point&gt; format, then appends
-   *  it to the writer.
+   *  Converts a <code>Coordinate</code> to <code>&lt;Point&gt;</code> format,
+   *  then appends it to the writer.
    *
    *@param  coordinate      the <code>Coordinate</code> to process
    *@param  writer          the output writer to append to
@@ -440,6 +506,10 @@
     throws IOException
   {
     writer.write(writeNumber(coordinate.x) + " " + writeNumber(coordinate.y));
+    if (outputDimension >= 3 && ! Double.isNaN(coordinate.z)) {
+      writer.write(" ");
+      writer.write(writeNumber(coordinate.z));
+    }
   }
 
   /**
@@ -473,7 +543,10 @@
       for (int i = 0; i < seq.size(); i++) {
         if (i > 0) {
           writer.write(", ");
-          if (i % 10 == 0) indent(level + 2, writer);
+          if (coordsPerLine > 0
+              && i % coordsPerLine == 0) {
+            indent(level + 1, writer);
+          }
         }
         appendCoordinate(seq, i, writer);
       }
@@ -500,7 +573,10 @@
       for (int i = 0; i < lineString.getNumPoints(); i++) {
         if (i > 0) {
           writer.write(", ");
-          if (i % 10 == 0) indent(level + 2, writer);
+          if (coordsPerLine > 0
+              && i % coordsPerLine == 0) {
+            indent(level + 1, writer);
+          }
         }
         appendCoordinate(lineString.getCoordinateN(i), writer);
       }
@@ -551,9 +627,10 @@
       for (int i = 0; i < multiPoint.getNumGeometries(); i++) {
         if (i > 0) {
           writer.write(", ");
+          indentCoords(i, level + 1, writer);
         }
         appendCoordinate(((Point) multiPoint.getGeometryN(i)).getCoordinate(), writer);
-      }
+     }
       writer.write(")");
     }
   }
@@ -645,12 +722,24 @@
     }
   }
 
+  private void indentCoords(int coordIndex,  int level, Writer writer)
+    throws IOException
+  {
+    if (coordsPerLine <= 0
+        || coordIndex % coordsPerLine != 0)
+      return;
+    indent(level, writer);
+  }
+
   private void indent(int level, Writer writer)
     throws IOException
   {
-    if (! isFormatted || level <= 0) return;
+    if (! useFormatting || level <= 0)
+      return;
     writer.write("\n");
-    writer.write(stringOfChar(' ', INDENT * level));
+    for (int i = 0; i < level; i++) {
+      writer.write(indentTabStr);
+    }
   }
 
 

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/FastNodingValidator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/FastNodingValidator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/FastNodingValidator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,137 @@
+
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+import com.vividsolutions.jts.io.*;
+
+/**
+ * Validates that a collection of {@link SegmentString}s is correctly noded.
+ * Indexing is used to improve performance.
+ * This class assumes that at least one round of noding has already been performed
+ * (which may still leave intersections, due to rounding issues).
+ * Does NOT check a-b-a collapse situations. 
+ * Also does not check for endpt-interior vertex intersections.
+ * This should not be a problem, since the noders should be
+ * able to compute intersections between vertices correctly.
+ * User may either test the valid condition, or request that a 
+ * {@link TopologyException} 
+ * be thrown.
+ *
+ * @version 1.7
+ */
+public class FastNodingValidator 
+{
+  private LineIntersector li = new RobustLineIntersector();
+
+  private Collection segStrings;
+  private InteriorIntersectionFinder segInt = null;
+  private boolean isValid = true;
+  
+  public FastNodingValidator(Collection segStrings)
+  {
+    this.segStrings = segStrings;
+  }
+
+  /**
+   * Checks for an intersection and 
+   * reports if one is found.
+   * 
+   * @return true if the arrangement contains an interior intersection
+   */
+  public boolean isValid()
+  {
+  	execute();
+  	return isValid;
+  }
+  
+  /**
+   * Returns an error message indicating the segments containing
+   * the intersection.
+   * 
+   * @return an error message documenting the intersection location
+   */
+  public String getErrorMessage()
+  {
+  	if (isValid) return "no intersections found";
+  	
+		Coordinate[] intSegs = segInt.getIntersectionSegments();
+    return "found non-noded intersection between "
+        + WKTWriter.toLineString(intSegs[0], intSegs[1])
+        + " and "
+        + WKTWriter.toLineString(intSegs[2], intSegs[3]);
+  }
+  
+  /**
+   * Checks for an intersection and throws
+   * a TopologyException if one is found.
+   *
+   * @throws TopologyException if an intersection is found
+   */
+  public void checkValid()
+  {
+  	execute();
+  	if (! isValid)
+  		throw new TopologyException(getErrorMessage(), segInt.getInteriorIntersection());
+  }
+
+  private void execute()
+  {
+  	if (segInt != null) 
+  		return;
+    checkInteriorIntersections();
+  }
+
+  private void checkInteriorIntersections()
+  {
+  	/**
+  	 * MD - It may even be reliable to simply check whether 
+  	 * end segments (of SegmentStrings) have an interior intersection,
+  	 * since noding should have split any true interior intersections already.
+  	 */
+  	isValid = true;
+  	segInt = new InteriorIntersectionFinder(li);
+  	MCIndexNoder noder = new MCIndexNoder();
+  	noder.setSegmentIntersector(segInt);
+  	noder.computeNodes(segStrings);
+  	if (segInt.hasIntersection()) {
+  		isValid = false;
+  		return;
+  	}
+  }
+  
+}

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,148 @@
+package com.vividsolutions.jts.noding;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.LineIntersector;
+//import com.vividsolutions.jts.util.Debug;
+
+/**
+ * Finds an interior intersection in a set of {@link SegmentString}s,
+ * if one exists.  Only the first intersection found is reported.
+ *
+ * @version 1.7
+ */
+public class InteriorIntersectionFinder
+    implements SegmentIntersector
+{
+	private boolean isCheckEndSegmentsOnly = false;
+  private LineIntersector li;
+  private Coordinate interiorIntersection = null;
+  private Coordinate[] intSegments = null;
+
+  /**
+   * Creates an intersection finder which finds an interior intersection
+   * if one exists
+   *
+   * @param li the LineIntersector to use
+   */
+  public InteriorIntersectionFinder(LineIntersector li)
+  {
+    this.li = li;
+    interiorIntersection = null;
+  }
+
+  /**
+   * Sets whether only end segments should be tested for interior intersection.
+   * This is a performance optimization that may be used if
+   * the segments have been previously noded by an appropriate algorithm.
+   * It may be known that any potential noding failures will occur only in
+   * end segments.
+   * 
+   * @param isCheckEndSegmentsOnly whether to test only end segments
+   */
+  public void setCheckEndSegmentsOnly(boolean isCheckEndSegmentsOnly)
+  {
+  	this.isCheckEndSegmentsOnly = isCheckEndSegmentsOnly;
+  }
+  
+  /**
+   * Tests whether an intersection was found.
+   * 
+   * @return true if an intersection was found
+   */
+  public boolean hasIntersection() 
+  { 
+  	return interiorIntersection != null; 
+  }
+  
+  /**
+   * Gets the computed location of the intersection.
+   * Due to round-off, the location may not be exact.
+   * 
+   * @return the coordinate for the intersection location
+   */
+  public Coordinate getInteriorIntersection()  
+  {    
+  	return interiorIntersection;  
+  }
+
+  /**
+   * Gets the endpoints of the intersecting segments.
+   * 
+   * @return an array of the segment endpoints (p00, p01, p10, p11)
+   */
+  public Coordinate[] getIntersectionSegments()
+  {
+  	return intSegments;
+  }
+  
+  /**
+   * This method is called by clients
+   * of the {@link SegmentIntersector} class to process
+   * intersections for two segments of the {@link SegmentStrings} being intersected.
+   * Note that some clients (such as {@link MonotoneChain}s) may optimize away
+   * this call for segment pairs which they have determined do not intersect
+   * (e.g. by an disjoint envelope test).
+   */
+  public void processIntersections(
+      SegmentString e0,  int segIndex0,
+      SegmentString e1,  int segIndex1
+      )
+  {
+  	// short-circuit if intersection already found
+  	if (hasIntersection())
+  		return;
+  	
+    // don't bother intersecting a segment with itself
+    if (e0 == e1 && segIndex0 == segIndex1) return;
+
+    /**
+     * If enabled, only test end segments (on either segString).
+     * 
+     */
+    if (isCheckEndSegmentsOnly) {
+    	boolean isEndSegPresent = isEndSegment(e0, segIndex0) || isEndSegment(e1, segIndex1);
+    	if (! isEndSegPresent)
+    		return;
+    }
+    
+    Coordinate p00 = e0.getCoordinates()[segIndex0];
+    Coordinate p01 = e0.getCoordinates()[segIndex0 + 1];
+    Coordinate p10 = e1.getCoordinates()[segIndex1];
+    Coordinate p11 = e1.getCoordinates()[segIndex1 + 1];
+    
+    li.computeIntersection(p00, p01, p10, p11);
+//if (li.hasIntersection() && li.isProper()) Debug.println(li);
+
+    if (li.hasIntersection()) {
+      if (li.isInteriorIntersection()) {
+      	intSegments = new Coordinate[4];
+      	intSegments[0] = p00;
+      	intSegments[1] = p01;
+      	intSegments[2] = p10;
+      	intSegments[3] = p11;
+      	
+      	interiorIntersection = li.getIntersection(0);
+      }
+    }
+  }
+  
+  /**
+   * Tests whether a segment in a {@link SegmentString} is an end segment.
+   * (either the first or last).
+   * 
+   * @param segStr a segment string
+   * @param index the index of a segment in the segment string
+   * @return true if the segment is an end segment
+   */
+  private boolean isEndSegment(SegmentString segStr, int index)
+  {
+  	if (index == 0) return true;
+  	if (index >= segStr.size() - 2) return true;
+  	return false;
+  }
+  
+  public boolean isDone()
+  { 
+  	return interiorIntersection != null;
+  }
+}
\ No newline at end of file

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionAdder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionAdder.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionAdder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -180,4 +180,11 @@
       }
     }
   }
+  
+  /**
+   * Always process all intersections
+   * 
+   * @return false always
+   */
+  public boolean isDone() { return false; }
 }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -65,4 +65,12 @@
       }
     }
   }
+  
+  /**
+   * Always process all intersections
+   * 
+   * @return false always
+   */
+  public boolean isDone() { return false; }
+
 }
\ No newline at end of file

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/NodingValidator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/NodingValidator.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/NodingValidator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -50,11 +50,24 @@
 
   private Collection segStrings;
 
+  /**
+   * Creates a new validator for the given collection 
+   * of {@link SegmentString}s.
+   * 
+   * @param segStrings a collection of SegmentStrings
+   */
   public NodingValidator(Collection segStrings)
   {
     this.segStrings = segStrings;
   }
 
+  /**
+   * Checks whether the supplied segment strings
+   * are correctly noded.  Throws an exception if they are not.
+   * 
+   * @throws RuntimeException if the SegmentStrings are not correctly noded
+   *
+   */
   public void checkValid()
   {
     checkEndPtVertexIntersections();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/ScaledNoder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/ScaledNoder.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/noding/ScaledNoder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -68,11 +68,12 @@
     Coordinate[] roundPts = new Coordinate[pts.length];
     for (int i = 0; i < pts.length; i++) {
       roundPts[i] = new Coordinate(
-      Math.round((pts[i].x - offsetX) * scaleFactor),
-      Math.round((pts[i].y - offsetY) * scaleFactor)
+          Math.round((pts[i].x - offsetX) * scaleFactor),
+          Math.round((pts[i].y - offsetY) * scaleFactor)
         );
     }
-    return roundPts;
+    Coordinate[] roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts);
+    return roundPtsNoDup;
   }
 
   //private double scale(double val) { return (double) Math.round(val * scaleFactor); }

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/BoundaryOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/BoundaryOp.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/BoundaryOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,179 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation;
+
+import java.util.*;
+import com.vividsolutions.jts.algorithm.BoundaryNodeRule;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geomgraph.GeometryGraph;
+
+/**
+ * Computes the boundary of a {@link Geometry}.
+ * Allows specifying the {@link BoundaryNodeRule} to be used.
+ * This operation will always return a {@link Geometry} of the appropriate
+ * dimension for the boundary (even if the input geometry is empty).
+ * The boundary of zero-dimensional geometries (Points) is
+ * always the empty {@link GeometryCollection}.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+
+public class BoundaryOp
+{
+  private Geometry geom;
+  private GeometryFactory geomFact;
+  private BoundaryNodeRule bnRule;
+
+  public BoundaryOp(Geometry geom)
+  {
+    this(geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE);
+  }
+
+  public BoundaryOp(Geometry geom, BoundaryNodeRule bnRule)
+  {
+    this.geom = geom;
+    geomFact = geom.getFactory();
+    this.bnRule = bnRule;
+  }
+
+  public Geometry getBoundary()
+  {
+    if (geom instanceof LineString) return boundaryLineString((LineString) geom);
+    if (geom instanceof MultiLineString) return boundaryMultiLineString((MultiLineString) geom);
+    return geom.getBoundary();
+  }
+
+  private MultiPoint getEmptyMultiPoint()
+  {
+    return geomFact.createMultiPoint((CoordinateSequence) null);
+  }
+
+  private Geometry boundaryMultiLineString(MultiLineString mLine)
+  {
+    if (geom.isEmpty()) {
+      return getEmptyMultiPoint();
+    }
+
+    Coordinate[] bdyPts = computeBoundaryCoordinates(mLine);
+
+    // return Point or MultiPoint
+    if (bdyPts.length == 1) {
+      return geomFact.createPoint(bdyPts[0]);
+    }
+    // this handles 0 points case as well
+    return geomFact.createMultiPoint(bdyPts);
+  }
+
+/*
+// MD - superseded
+  private Coordinate[] computeBoundaryFromGeometryGraph(MultiLineString mLine)
+  {
+    GeometryGraph g = new GeometryGraph(0, mLine, bnRule);
+    Coordinate[] bdyPts = g.getBoundaryPoints();
+    return bdyPts;
+  }
+*/
+
+  private Map endpointMap;
+
+  private Coordinate[] computeBoundaryCoordinates(MultiLineString mLine)
+  {
+    List bdyPts = new ArrayList();
+    endpointMap = new TreeMap();
+    for (int i = 0; i < mLine.getNumGeometries(); i++) {
+      LineString line = (LineString) mLine.getGeometryN(i);
+      if (line.getNumPoints() == 0)
+        continue;
+      addEndpoint(line.getCoordinateN(0));
+      addEndpoint(line.getCoordinateN(line.getNumPoints() - 1));
+    }
+
+    for (Iterator it = endpointMap.entrySet().iterator(); it.hasNext(); ) {
+      Map.Entry entry = (Map.Entry) it.next();
+      Counter counter = (Counter) entry.getValue();
+      int valence = counter.count;
+      if (bnRule.isInBoundary(valence)) {
+        bdyPts.add(entry.getKey());
+      }
+    }
+
+    return CoordinateArrays.toCoordinateArray(bdyPts);
+  }
+
+  private void addEndpoint(Coordinate pt)
+  {
+    Counter counter = (Counter) endpointMap.get(pt);
+    if (counter == null) {
+      counter = new Counter();
+      endpointMap.put(pt, counter);
+    }
+    counter.count++;
+  }
+
+  private Geometry boundaryLineString(LineString line)
+  {
+    if (geom.isEmpty()) {
+      return getEmptyMultiPoint();
+    }
+
+    if (line.isClosed()) {
+      // check whether endpoints of valence 2 are on the boundary or not
+      boolean closedEndpointOnBoundary = bnRule.isInBoundary(2);
+      if (closedEndpointOnBoundary) {
+        return line.getStartPoint();
+      }
+      else {
+        return geomFact.createMultiPoint((Coordinate[]) null);
+      }
+    }
+    return geomFact.createMultiPoint(new Point[]{
+                                     line.getStartPoint(),
+                                     line.getEndPoint()
+    });
+  }
+}
+
+/**
+ * Stores an integer count, for use as a Map entry.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+class Counter
+{
+  /**
+   * The value of the count
+   */
+  int count;
+}

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -42,7 +42,7 @@
 import com.vividsolutions.jts.geomgraph.GeometryGraph;
 
 /**
- * The base class for operations that require {@link GeometryGraph)s.
+ * The base class for operations that require {@link GeometryGraph}s.
  *
  * @version 1.7
  */
@@ -51,6 +51,7 @@
   protected final CGAlgorithms cga = new CGAlgorithms();
   protected final LineIntersector li = new RobustLineIntersector();
   protected PrecisionModel resultPrecisionModel;
+
   /**
    * The operation args into an array so they can be accessed by index
    */
@@ -58,6 +59,14 @@
 
   public GeometryGraphOperation(Geometry g0, Geometry g1)
   {
+    this(g0, g1,
+         BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE
+//         BoundaryNodeRule.ENDPOINT_BOUNDARY_RULE
+         );
+  }
+
+  public GeometryGraphOperation(Geometry g0, Geometry g1, BoundaryNodeRule boundaryNodeRule)
+  {
     // use the most precise model for the result
     if (g0.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0)
       setComputationPrecision(g0.getPrecisionModel());
@@ -65,9 +74,10 @@
       setComputationPrecision(g1.getPrecisionModel());
 
     arg = new GeometryGraph[2];
-    arg[0] = new GeometryGraph(0, g0);
-    arg[1] = new GeometryGraph(1, g1);
+    arg[0] = new GeometryGraph(0, g0, boundaryNodeRule);
+    arg[1] = new GeometryGraph(1, g1, boundaryNodeRule);
   }
+
   public GeometryGraphOperation(Geometry g0) {
     setComputationPrecision(g0.getPrecisionModel());
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/IsSimpleOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/IsSimpleOp.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/IsSimpleOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -44,33 +44,118 @@
  * Tests whether a <code>Geometry</code> is simple.
  * In general, the SFS specification of simplicity
  * follows the rule:
- *  <UL>
- *    <LI> A Geometry is simple iff the only self-intersections are at
+ * <ul>
+ *    <li> A Geometry is simple if and only if the only self-intersections are at
  *    boundary points.
- *  </UL>
+ * </ul>
+ * This definition relies on the definition of boundary points.
+ * The SFS uses the Mod-2 rule to determine which points are on the boundary of
+ * lineal geometries, but this class supports
+ * using other {@link BoundaryNodeRule}s as well.
+ * <p>
  * Simplicity is defined for each {@link Geometry} subclass as follows:
  * <ul>
  * <li>Valid polygonal geometries are simple by definition, so
  * <code>isSimple</code> trivially returns true.
+ * (Hint: in order to check if a polygonal geometry has self-intersections,
+ * use {@link Geometry#isValid}).
  * <li>Linear geometries are simple iff they do not self-intersect at points
- * other than boundary points.
+ * other than boundary points. 
+ * (Using the Mod-2 rule, this means that closed linestrings
+ * cannot be touched at their endpoints, since these are
+ * interior points, not boundary points).
  * <li>Zero-dimensional geometries (points) are simple iff they have no
  * repeated points.
  * <li>Empty <code>Geometry</code>s are always simple
- * <ul>
+ * </ul>
  *
+ * @see BoundaryNodeRule
+ *
  * @version 1.7
  */
-public class IsSimpleOp {
+public class IsSimpleOp
+{
+  private Geometry geom;
+  private boolean isClosedEndpointsInInterior = true;
+  private Coordinate nonSimpleLocation = null;
 
+  /**
+   * Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+   *
+   * @deprecated use IsSimpleOp(Geometry)
+   */
   public IsSimpleOp() {
   }
 
+  /**
+   * Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+   *
+   * @param geom the geometry to test
+   */
+  public IsSimpleOp(Geometry geom) {
+    this.geom = geom;
+  }
+
+  /**
+   * Creates a simplicity checker using a given {@link BoundaryNodeRule}
+   *
+   * @param geom the geometry to test
+   * @param boundaryNodeRule the rule to use.
+   */
+  public IsSimpleOp(Geometry geom, BoundaryNodeRule boundaryNodeRule)
+  {
+    this.geom = geom;
+    isClosedEndpointsInInterior = ! boundaryNodeRule.isInBoundary(2);
+  }
+
+  /**
+   * Tests whether the geometry is simple.
+   *
+   * @return true if the geometry is simple
+   */
+  public boolean isSimple()
+  {
+    nonSimpleLocation = null;
+    if (geom instanceof LineString) return isSimpleLinearGeometry(geom);
+    if (geom instanceof MultiLineString) return isSimpleLinearGeometry(geom);
+    if (geom instanceof MultiPoint) return isSimpleMultiPoint((MultiPoint) geom);
+    // all other geometry types are simple by definition
+    return true;
+  }
+
+  /**
+   * Gets a coordinate for the location where the geometry
+   * fails to be simple. 
+   * (i.e. where it has a non-boundary self-intersection).
+   * {@link #isSimple} must be called before this method is called.
+   *
+   * @return a coordinate for the location of the non-boundary self-intersection
+   * @return null if the geometry is simple
+   */
+  public Coordinate getNonSimpleLocation()
+  {
+    return nonSimpleLocation;
+  }
+
+  /**
+   * Reports whether a {@link LineString} is simple.
+   *
+   * @param geom the lineal geometry to test
+   * @return true if the geometry is simple
+   * @deprecated use isSimple()
+   */
   public boolean isSimple(LineString geom)
   {
     return isSimpleLinearGeometry(geom);
   }
 
+  /**
+   * Reports whether a {@link MultiLineString} geometry is simple.
+   *
+   * @param geom the lineal geometry to test
+   * @return true if the geometry is simple
+   * @deprecated use isSimple()
+   */
   public boolean isSimple(MultiLineString geom)
   {
     return isSimpleLinearGeometry(geom);
@@ -78,16 +163,24 @@
 
   /**
    * A MultiPoint is simple iff it has no repeated points
+   * @deprecated use isSimple()
    */
   public boolean isSimple(MultiPoint mp)
   {
+    return isSimpleMultiPoint(mp);
+  }
+
+  private boolean isSimpleMultiPoint(MultiPoint mp)
+  {
     if (mp.isEmpty()) return true;
     Set points = new TreeSet();
     for (int i = 0; i < mp.getNumGeometries(); i++) {
       Point pt = (Point) mp.getGeometryN(i);
       Coordinate p = pt.getCoordinate();
-      if (points.contains(p))
+      if (points.contains(p)) {
+        nonSimpleLocation = p;
         return false;
+      }
       points.add(p);
     }
     return true;
@@ -101,9 +194,14 @@
     SegmentIntersector si = graph.computeSelfNodes(li, true);
     // if no self-intersection, must be simple
     if (! si.hasIntersection()) return true;
-    if (si.hasProperIntersection()) return false;
+    if (si.hasProperIntersection()) {
+      nonSimpleLocation = si.getProperIntersectionPoint();
+      return false;
+    }
     if (hasNonEndpointIntersection(graph)) return false;
-    if (hasClosedEndpointIntersection(graph)) return false;
+    if (isClosedEndpointsInInterior) {
+      if (hasClosedEndpointIntersection(graph)) return false;
+    }
     return true;
   }
 
@@ -118,26 +216,30 @@
       int maxSegmentIndex = e.getMaximumSegmentIndex();
       for (Iterator eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {
         EdgeIntersection ei = (EdgeIntersection) eiIt.next();
-        if (! ei.isEndPoint(maxSegmentIndex))
+        if (! ei.isEndPoint(maxSegmentIndex)) {
+          nonSimpleLocation = ei.getCoordinate();
           return true;
+        }
       }
     }
     return false;
   }
 
-  class EndpointInfo {
+  private static class EndpointInfo {
     Coordinate pt;
     boolean isClosed;
     int degree;
 
-    EndpointInfo(Coordinate pt)
+    public EndpointInfo(Coordinate pt)
     {
       this.pt = pt;
       isClosed = false;
       degree = 0;
     }
 
-    void addEndpoint(boolean isClosed)
+    public Coordinate getCoordinate() { return pt; }
+
+    public void addEndpoint(boolean isClosed)
     {
       degree++;
       this.isClosed |= isClosed;
@@ -145,9 +247,11 @@
   }
 
   /**
-   * Test that no edge intersection is the
-   * endpoint of a closed line.  To check this we compute the
-   * degree of each endpoint. The degree of endpoints of closed lines
+   * Tests that no edge intersection is the endpoint of a closed line.
+   * This ensures that closed lines are not touched at their endpoint,
+   * which is an interior point according to the Mod-2 rule
+   * To check this we compute the degree of each endpoint.
+   * The degree of endpoints of closed lines
    * must be exactly 2.
    */
   private boolean hasClosedEndpointIntersection(GeometryGraph graph)
@@ -165,8 +269,10 @@
 
     for (Iterator i = endPoints.values().iterator(); i.hasNext(); ) {
       EndpointInfo eiInfo = (EndpointInfo) i.next();
-      if (eiInfo.isClosed && eiInfo.degree != 2)
+      if (eiInfo.isClosed && eiInfo.degree != 2) {
+        nonSimpleLocation = eiInfo.getCoordinate();
         return true;
+      }
     }
     return false;
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferOp.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -61,9 +61,9 @@
  * The <b>end cap style</b> of a linear buffer may be specified. The
  * following end cap styles are supported:
  * <ul
- * <li>{@link CAP_ROUND} - the usual round end caps
- * <li>{@link CAP_BUTT} - end caps are truncated flat at the line ends
- * <li>{@link CAP_SQUARE} - end caps are squared off at the buffer distance beyond the line ends
+ * <li>{@link #CAP_ROUND} - the usual round end caps
+ * <li>{@link #CAP_BUTT} - end caps are truncated flat at the line ends
+ * <li>{@link #CAP_SQUARE} - end caps are squared off at the buffer distance beyond the line ends
  * </ul>
  * <p>
  *
@@ -193,7 +193,7 @@
 
   /**
    * Specifies the end cap style of the generated buffer.
-   * The styles supported are {@link CAP_ROUND}, {@link CAP_BUTT}, and {@link CAP_SQUARE}.
+   * The styles supported are {@link #CAP_ROUND}, {@link #CAP_BUTT}, and {@link #CAP_SQUARE}.
    * The default is CAP_ROUND.
    *
    * @param endCapStyle the end cap style to specify
@@ -204,11 +204,9 @@
   }
 
   /**
-   * Specifies the end cap style of the generated buffer.
-   * The styles supported are {@link CAP_ROUND}, {@link CAP_BUTT}, and {@link CAP_SQUARE}.
-   * The default is CAP_ROUND.
+   * Sets the number of segments used to approximate a angle fillet
    *
-   * @param endCapStyle the end cap style to specify
+   * @param quadrantSegments the number of segments in a fillet for a quadrant
    */
   public void setQuadrantSegments(int quadrantSegments)
   {
@@ -218,7 +216,6 @@
   /**
    * Returns the buffer computed for a geometry for a given buffer distance.
    *
-   * @param g the geometry to buffer
    * @param distance the buffer distance
    * @return the buffer of the input geometry
    */
@@ -229,25 +226,6 @@
     return resultGeometry;
   }
 
-  /**
-   * Comutes the buffer for a geometry for a given buffer distance
-   * and accuracy of approximation.
-   *
-   * @param g the geometry to buffer
-   * @param distance the buffer distance
-   * @param quadrantSegments the number of segments used to approximate a quarter circle
-   * @return the buffer of the input geometry
-   *
-   * @deprecated use setQuadrantSegments instead
-   */
-  public Geometry getResultGeometry(double distance, int quadrantSegments)
-  {
-    this.distance = distance;
-    setQuadrantSegments(quadrantSegments);
-    computeGeometry();
-    return resultGeometry;
-  }
-
   private void computeGeometry()
   {
     bufferOriginalPrecision();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -47,7 +47,7 @@
 
 /**
  * A connected subset of the graph of
- * {@link DirectedEdges} and {@link Node}s.
+ * {@link DirectedEdge}s and {@link Node}s.
  * Its edges will generate either
  * <ul>
  * <li> a single polygon in the complete buffer, with zero or more holes, or

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -175,10 +175,9 @@
     // check that points are a ring - add the startpoint again if they are not
     if (ptList.size() > 1) {
       Coordinate start  = (Coordinate) ptList.get(0);
-      Coordinate end    = (Coordinate) ptList.get(1);
+      Coordinate end    = (Coordinate) ptList.get(ptList.size() - 1);
       if (! start.equals(end) ) addPt(start);
     }
-
     Coordinate[] coord = (Coordinate[]) ptList.toArray(arrayTypeCoordinate);
     return coord;
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/distance/DistanceOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/distance/DistanceOp.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/distance/DistanceOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -38,23 +38,25 @@
 import com.vividsolutions.jts.algorithm.*;
 
 /**
- * Computes the distance and
- * closest points between two {@link Geometry}s.
+ * Find two points on two {@link Geometry}s which lie
+ * within a given distance, or else are the closest points
+ * on the geometries (in which case this also
+ * provides the distance between the geometries).
  * <p>
- * The distance computation finds a pair of points in the input geometries
- * which have minimum distance between them.  These points may
- * not be vertices of the geometries, but may lie in the interior of
- * a line segment. In this case the coordinate computed is a close
+ * The distance computation also finds a pair of points in the input geometries
+ * which have the minimum distance between them.
+ * If a point lies in the interior of a line segment,
+ * the coordinate computed is a close
  * approximation to the exact point.
  * <p>
  * The algorithms used are straightforward O(n^2)
  * comparisons.  This worst-case performance could be improved on
- * by using Voronoi techniques.
+ * by using Voronoi techniques or spatial indexes.
  *
  * @version 1.7
  */
-public class DistanceOp {
-
+public class DistanceOp
+{
   /**
    * Compute the distance between the closest points of two geometries.
    * @param g0 a {@link Geometry}
@@ -68,6 +70,19 @@
   }
 
   /**
+   * Test whether two geometries lie within a given distance of each other.
+   * @param g0 a {@link Geometry}
+   * @param g1 another {@link Geometry}
+   * @param distance the distance to test
+   * @return true if g0.distance(g1) <= distance
+   */
+  public static boolean isWithinDistance(Geometry g0, Geometry g1, double distance)
+  {
+    DistanceOp distOp = new DistanceOp(g0, g1, distance);
+    return distOp.distance() <= distance;
+  }
+
+  /**
    * Compute the the closest points of two geometries.
    * The points are presented in the same order as the input Geometries.
    *
@@ -81,20 +96,38 @@
     return distOp.closestPoints();
   }
 
+  // input
+  private Geometry[] geom;
+  private double terminateDistance = 0.0;
+  // working
   private PointLocator ptLocator = new PointLocator();
-  private Geometry[] geom;
   private GeometryLocation[] minDistanceLocation;
   private double minDistance = Double.MAX_VALUE;
 
   /**
    * Constructs a DistanceOp that computes the distance and closest points between
    * the two specified geometries.
+   * @param g0 a Geometry
+   * @param g1 a Geometry
    */
   public DistanceOp(Geometry g0, Geometry g1)
   {
+    this(g0, g1, 0.0);
+  }
+
+  /**
+   * Constructs a DistanceOp that computes the distance and closest points between
+   * the two specified geometries.
+   * @param g0 a Geometry
+   * @param g1 a Geometry
+   * @param terminateDistance the distance on which to terminate the search
+   */
+  public DistanceOp(Geometry g0, Geometry g1, double terminateDistance)
+  {
     this.geom = new Geometry[2];
     geom[0] = g0;
     geom[1] = g1;
+    this.terminateDistance = terminateDistance;
   }
 
   /**
@@ -163,7 +196,7 @@
 
     minDistanceLocation = new GeometryLocation[2];
     computeContainmentDistance();
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
     computeLineDistance();
   }
 
@@ -177,7 +210,7 @@
     if (polys1.size() > 0) {
       List insideLocs0 = ConnectedElementLocationFilter.getLocations(geom[0]);
       computeInside(insideLocs0, polys1, locPtPoly);
-      if (minDistance <= 0.0) {
+      if (minDistance <= terminateDistance) {
         minDistanceLocation[0] = locPtPoly[0];
         minDistanceLocation[1] = locPtPoly[1];
         return;
@@ -186,7 +219,7 @@
     if (polys0.size() > 0) {
       List insideLocs1 = ConnectedElementLocationFilter.getLocations(geom[1]);
       computeInside(insideLocs1, polys0, locPtPoly);
-      if (minDistance <= 0.0) {
+      if (minDistance <= terminateDistance) {
         // flip locations, since we are testing geom 1 VS geom 0
         minDistanceLocation[0] = locPtPoly[1];
         minDistanceLocation[1] = locPtPoly[0];
@@ -201,7 +234,7 @@
       for (int j = 0; j < polys.size(); j++) {
         Polygon poly = (Polygon) polys.get(j);
         computeInside(loc, poly, locPtPoly);
-        if (minDistance <= 0.0) {
+        if (minDistance <= terminateDistance) {
           return;
         }
       }
@@ -239,19 +272,19 @@
     // bail whenever minDistance goes to zero, since it can't get any less
     computeMinDistanceLines(lines0, lines1, locGeom);
     updateMinDistance(locGeom, false);
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
 
     locGeom[0] = null;
     locGeom[1] = null;
     computeMinDistanceLinesPoints(lines0, pts1, locGeom);
     updateMinDistance(locGeom, false);
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
 
     locGeom[0] = null;
     locGeom[1] = null;
     computeMinDistanceLinesPoints(lines1, pts0, locGeom);
     updateMinDistance(locGeom, true);
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
 
     locGeom[0] = null;
     locGeom[1] = null;
@@ -266,7 +299,7 @@
       for (int j = 0; j < lines1.size(); j++) {
         LineString line1 = (LineString) lines1.get(j);
         computeMinDistance(line0, line1, locGeom);
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -284,7 +317,7 @@
           locGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate());
           locGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate());
         }
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -297,7 +330,7 @@
       for (int j = 0; j < points.size(); j++) {
         Point pt = (Point) points.get(j);
         computeMinDistance(line, pt, locGeom);
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -324,7 +357,7 @@
           locGeom[0] = new GeometryLocation(line0, i, closestPt[0]);
           locGeom[1] = new GeometryLocation(line1, j, closestPt[1]);
         }
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -348,7 +381,7 @@
           locGeom[0] = new GeometryLocation(line, i, segClosestPoint);
           locGeom[1] = new GeometryLocation(pt, 0, coord);
         }
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
 
     }
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -80,7 +80,7 @@
 {
   /**
    * Tests whether a {@link Geometry} is sequenced correctly.
-   * {@llink LineString}s are trivially sequenced.
+   * {@link LineString}s are trivially sequenced.
    * {@link MultiLineString}s are checked for correct sequencing.
    * Otherwise, <code>isSequenced</code> is defined
    * to be <code>true</code> for geometries that are not lineal.

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,127 @@
+package com.vividsolutions.jts.operation.overlay;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geomgraph.*;
+import com.vividsolutions.jts.geomgraph.index.SegmentIntersector;
+import com.vividsolutions.jts.operation.GeometryGraphOperation;
+
+/**
+ * Tests whether the polygon rings in a {@link GeometryGraph}
+ * are consistent.
+ * Used for checking if Topology errors are present after noding.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class ConsistentPolygonRingChecker
+{
+  private PlanarGraph graph;
+
+  public ConsistentPolygonRingChecker(PlanarGraph graph) {
+    this.graph = graph;
+  }
+
+  public void checkAll()
+  {
+    check(OverlayOp.INTERSECTION);
+    check(OverlayOp.DIFFERENCE);
+    check(OverlayOp.UNION);
+    check(OverlayOp.SYMDIFFERENCE);
+  }
+
+  /**
+   * Tests whether the result geometry is consistent
+   *
+   * @throws TopologyException if inconsistent topology is found
+   */
+  public void check(int opCode)
+  {
+    for (Iterator nodeit = graph.getNodeIterator(); nodeit.hasNext(); ) {
+      Node node = (Node) nodeit.next();
+      testLinkResultDirectedEdges((DirectedEdgeStar) node.getEdges(), opCode);
+    }
+  }
+
+  private List getPotentialResultAreaEdges(DirectedEdgeStar deStar, int opCode)
+  {
+//print(System.out);
+    List resultAreaEdgeList = new ArrayList();
+    for (Iterator it = deStar.iterator(); it.hasNext(); ) {
+      DirectedEdge de = (DirectedEdge) it.next();
+      if (isPotentialResultAreaEdge(de, opCode) || isPotentialResultAreaEdge(de.getSym(), opCode) )
+        resultAreaEdgeList.add(de);
+    }
+    return resultAreaEdgeList;
+  }
+
+  private boolean isPotentialResultAreaEdge(DirectedEdge de, int opCode)
+  {
+    // mark all dirEdges with the appropriate label
+    Label label = de.getLabel();
+    if (label.isArea()
+        && ! de.isInteriorAreaEdge()
+        && OverlayOp.isResultOfOp(
+        label.getLocation(0, Position.RIGHT),
+        label.getLocation(1, Position.RIGHT),
+        opCode)
+      ) {
+        return true;
+//Debug.print("in result "); Debug.println(de);
+      }
+      return false;
+    }
+
+  private final int SCANNING_FOR_INCOMING = 1;
+  private final int LINKING_TO_OUTGOING = 2;
+
+  private void testLinkResultDirectedEdges(DirectedEdgeStar deStar, int opCode)
+  {
+    // make sure edges are copied to resultAreaEdges list
+    List ringEdges = getPotentialResultAreaEdges(deStar, opCode);
+    // find first area edge (if any) to start linking at
+    DirectedEdge firstOut = null;
+    DirectedEdge incoming = null;
+    int state = SCANNING_FOR_INCOMING;
+    // link edges in CCW order
+    for (int i = 0; i < ringEdges.size(); i++) {
+      DirectedEdge nextOut = (DirectedEdge) ringEdges.get(i);
+      DirectedEdge nextIn = nextOut.getSym();
+
+      // skip de's that we're not interested in
+      if (! nextOut.getLabel().isArea()) continue;
+
+      // record first outgoing edge, in order to link the last incoming edge
+      if (firstOut == null
+          && isPotentialResultAreaEdge(nextOut, opCode))
+        firstOut = nextOut;
+      // assert: sym.isInResult() == false, since pairs of dirEdges should have been removed already
+
+      switch (state) {
+      case SCANNING_FOR_INCOMING:
+        if (! isPotentialResultAreaEdge(nextIn, opCode)) continue;
+        incoming = nextIn;
+        state = LINKING_TO_OUTGOING;
+        break;
+      case LINKING_TO_OUTGOING:
+        if (! isPotentialResultAreaEdge(nextOut, opCode)) continue;
+        //incoming.setNext(nextOut);
+        state = SCANNING_FOR_INCOMING;
+        break;
+      }
+    }
+//Debug.print(this);
+    if (state == LINKING_TO_OUTGOING) {
+//Debug.print(firstOut == null, this);
+      if (firstOut == null)
+        throw new TopologyException("no outgoing dirEdge found", deStar.getCoordinate());
+    }
+
+  }
+
+
+
+
+}
\ No newline at end of file

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -40,8 +40,8 @@
 import com.vividsolutions.jts.geomgraph.*;
 
 /**
- * A ring of {@link edges} which may contain nodes of degree > 2.
- * A MaximalEdgeRing may represent two different spatial entities:
+ * A ring of {@link DirectedEdge}s which may contain nodes of degree > 2.
+ * A <tt>MaximalEdgeRing</tt> may represent two different spatial entities:
  * <ul>
  * <li>a single polygon possibly containing inversions (if the ring is oriented CW)
  * <li>a single hole possibly containing exversions (if the ring is oriented CCW)
@@ -50,7 +50,7 @@
  * the interior of the polygon is strongly connected.
  * <p>
  * These are the form of rings used to define polygons under some spatial data models.
- * However, under the OGC SFS model, {@link MinimalEdgeRings} are required.
+ * However, under the OGC SFS model, {@link MinimalEdgeRing}s are required.
  * A MaximalEdgeRing can be converted to a list of MinimalEdgeRings using the
  * {@link #buildMinimalRings() } method.
  *
@@ -78,7 +78,7 @@
    * For all nodes in this EdgeRing,
    * link the DirectedEdges at the node to form minimalEdgeRings
    */
-  void linkDirectedEdgesForMinimalEdgeRings()
+  public void linkDirectedEdgesForMinimalEdgeRings()
   {
     DirectedEdge de = startDe;
     do {
@@ -88,7 +88,7 @@
     } while (de != startDe);
   }
 
-  List buildMinimalRings()
+  public List buildMinimalRings()
   {
     List minEdgeRings = new ArrayList();
     DirectedEdge de = startDe;

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -39,8 +39,8 @@
 import com.vividsolutions.jts.util.*;
 import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geomgraph.*;
-import com.vividsolutions.jts.geomgraph.index.SegmentIntersector;
 import com.vividsolutions.jts.operation.GeometryGraphOperation;
+import com.vividsolutions.jts.noding.*;
 
 /**
  * Computes the overlay of two {@link Geometry}s.  The overlay
@@ -158,8 +158,8 @@
 //Debug.println(edgeList);
 
     // debugging only
-    //NodingValidator nv = new NodingValidator(edgeList.getEdges());
-    //nv.checkValid();
+    EdgeNodingValidator nv = new EdgeNodingValidator(edgeList.getEdges());
+    nv.checkValid();
 
     graph.addEdges(edgeList.getEdges());
     computeLabelling();
@@ -176,6 +176,7 @@
      */
     findResultAreaEdges(opCode);
     cancelDuplicateResultEdges();
+
     PolygonBuilder polyBuilder = new PolygonBuilder(geomFact, cga);
     polyBuilder.add(graph);
     resultPolyList = polyBuilder.getPolygons();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -212,6 +212,8 @@
    * properly contained (i.e. are connected to their
    * parent shell) would have formed part of a MaximalEdgeRing
    * and been handled in a previous step).
+   *
+   * @throws TopologyException if a hole cannot be assigned to a shell
    */
   private void placeFreeHoles(List shellList, List freeHoleList)
   {
@@ -220,11 +222,14 @@
       // only place this hole if it doesn't yet have a shell
       if (hole.getShell() == null) {
         EdgeRing shell = findEdgeRingContaining(hole, shellList);
-        Assert.isTrue(shell != null, "unable to assign hole to a shell");
+        if (shell == null)
+          throw new TopologyException("unable to assign hole to a shell", hole.getCoordinate(0));
+//        Assert.isTrue(shell != null, "unable to assign hole to a shell");
         hole.setShell(shell);
       }
     }
   }
+
   /**
    * Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.
    * The innermost enclosing ring is the <i>smallest</i> enclosing ring.

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,172 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.GeometryTransformer;
+
+/**
+ * Snaps the vertices and segments of a {@link Geometry} to another Geometry's vertices.
+ * Improves robustness for overlay operations, by eliminating
+ * nearly parallel edges (which cause problems during noding and intersection calculation).
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class GeometrySnapper
+{
+  private static final double SNAP_PRECISION_FACTOR = 10e-10;
+
+  /**
+   * Estimates the snap tolerance for a Geometry, taking into account its precision model.
+   * 
+   * @param g a Geometry
+   * @return the estimated snap tolerance
+   */
+  public static double computeOverlaySnapTolerance(Geometry g)
+  {
+		double snapTolerance = computeSizeBasedSnapTolerance(g);
+		
+		/**
+		 * Overlay is carried out in most precise precision model 
+		 * of inputs.  
+		 * If this precision model is fixed, then the snap tolerance
+		 * must reflect the grid size.  
+		 * Precisely, the snap tolerance should be at least 
+		 * the distance from a corner of a precision grid cell
+		 * to the centre point of the cell.  
+		 */
+		PrecisionModel pm = g.getPrecisionModel();
+		if (pm.getType() == PrecisionModel.FIXED) {
+			double fixedSnapTol = (1 / pm.getScale()) * 2 / 1.415;
+			if (fixedSnapTol > snapTolerance)
+				snapTolerance = fixedSnapTol;
+		}
+		return snapTolerance;
+  }
+
+  public static double computeSizeBasedSnapTolerance(Geometry g)
+  {
+    Envelope env = g.getEnvelopeInternal();
+    double minDimension = Math.min(env.getHeight(), env.getWidth());
+    double snapTol = minDimension * SNAP_PRECISION_FACTOR;
+    return snapTol;
+  }
+
+  public static double computeOverlaySnapTolerance(Geometry g0, Geometry g1)
+  {
+    return Math.min(computeOverlaySnapTolerance(g0), computeOverlaySnapTolerance(g1));
+  }
+
+  /**
+   * Snaps two geometries together with a given tolerance.
+   * 
+   * @param g0 a geometry to snap
+   * @param g1 a geometry to snap
+   * @param snapTolerance the tolerance to use
+   * @return the snapped geometries
+   */
+  public static Geometry[] snap(Geometry g0, Geometry g1, double snapTolerance)
+  {
+    Geometry[] snapGeom = new Geometry[2];
+    GeometrySnapper snapper0 = new GeometrySnapper(g0);
+    snapGeom[0] = snapper0.snapTo(g1, snapTolerance);
+
+    GeometrySnapper snapper1 = new GeometrySnapper(g1);
+    /**
+     * Snap the second geometry to the snapped first geometry
+     * (this strategy minimizes the number of possible different points in the result)
+     */
+    snapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance);
+
+//    System.out.println(snap[0]);
+//    System.out.println(snap[1]);
+    return snapGeom;
+  }
+  
+  private Geometry srcGeom;
+
+  public GeometrySnapper(Geometry g)
+  {
+    srcGeom = g;
+  }
+
+  /**
+   * Computes the snap tolerance based on the input geometries.
+   *
+   * @param ringPts
+   * @return
+   */
+  private double computeSnapTolerance(Coordinate[] ringPts)
+  {
+    double minSegLen = computeMinimumSegmentLength(ringPts);
+    // use a small percentage of this to be safe
+    double snapTol = minSegLen / 10;
+    return snapTol;
+  }
+
+  private double computeMinimumSegmentLength(Coordinate[] pts)
+  {
+    double minSegLen = Double.MAX_VALUE;
+    for (int i = 0; i < pts.length - 1; i++) {
+      double segLen = pts[i].distance(pts[i + 1]);
+      if (segLen < minSegLen)
+        minSegLen = segLen;
+    }
+    return minSegLen;
+  }
+
+  /**
+   * Snaps the vertices in the component {@link LineString}s
+   * of the source geometry
+   * to the vertices of the given geometry.
+   *
+   * @param g
+   * @return a new snapped Geometry
+   */
+  public Geometry snapTo(Geometry g, double snapTolerance)
+  {
+    Coordinate[] snapPts = extractTargetCoordinates(g);
+
+    SnapTransformer snapTrans = new SnapTransformer(snapTolerance, snapPts);
+    return snapTrans.transform(srcGeom);
+  }
+
+  public Coordinate[] extractTargetCoordinates(Geometry g)
+  {
+    // TODO: should do this more efficiently.  Use CoordSeq filter to get points, KDTree for uniqueness & queries
+    Set ptSet = new TreeSet();
+    Coordinate[] pts = g.getCoordinates();
+    for (int i = 0; i < pts.length; i++) {
+      ptSet.add(pts[i]);
+    }
+    return (Coordinate[]) ptSet.toArray(new Coordinate[0]);
+  }
+}
+
+class SnapTransformer
+    extends GeometryTransformer
+{
+  double snapTolerance;
+  Coordinate[] snapPts;
+
+  SnapTransformer(double snapTolerance, Coordinate[] snapPts)
+  {
+    this.snapTolerance = snapTolerance;
+    this.snapPts = snapPts;
+  }
+
+  protected CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
+  {
+    Coordinate[] srcPts = coords.toCoordinateArray();
+    Coordinate[] newPts = snapLine(srcPts, snapPts);
+    return factory.getCoordinateSequenceFactory().create(newPts);
+  }
+
+  private Coordinate[] snapLine(Coordinate[] srcPts, Coordinate[] snapPts)
+  {
+    LineStringSnapper snapper = new LineStringSnapper(srcPts, snapTolerance);
+    return snapper.snapTo(snapPts);
+  }
+}
+
+

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,171 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Snaps the vertices and segments of a LineString to a set of target snap vertices.
+ * A snapping distance tolerance is used to control where snapping is performed.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class LineStringSnapper
+{
+  private double snapTolerance = 0.0;
+
+  private Coordinate[] srcPts;
+  private LineSegment seg = new LineSegment(); // for reuse during snapping
+  private boolean isClosed = false;
+
+  /**
+   * Creates a new snapper using the points in the given {@link LineString}
+   * as target snap points.
+   * 
+   * @param line a LineString
+   * @param snapTolerance the snap tolerance to use
+   */
+  public LineStringSnapper(LineString line, double snapTolerance)
+  {
+    this(line.getCoordinates(), snapTolerance);
+  }
+
+  /**
+   * Creates a new snapper using the given points
+   * as target snap points.
+   * 
+   * @param srcPts the points to snap to
+   * @param snapTolerance the snap tolerance to use
+   */
+  public LineStringSnapper(Coordinate[] srcPts, double snapTolerance)
+  {
+    this.srcPts = srcPts;
+    isClosed = srcPts[0].equals2D(srcPts[srcPts.length - 1]);
+    this.snapTolerance = snapTolerance;
+  }
+
+  /**
+   * Snaps the vertices and segments of the source LineString 
+   * to the given set of target snap points.
+   * 
+   * @param snapPts the vertices to snap to
+   * @return a new snapped LineString
+   */
+  public Coordinate[] snapTo(Coordinate[] snapPts)
+  {
+    CoordinateList coordList = new CoordinateList(srcPts);
+
+    snapVertices(coordList, snapPts);
+    snapSegments(coordList, snapPts);
+
+    Coordinate[] newPts = coordList.toCoordinateArray();
+    return newPts;
+  }
+
+  /**
+   * Snap source vertices to vertices in the target.
+   * 
+   * @param srcCoords
+   * @param snapPts
+   */
+  private void snapVertices(CoordinateList srcCoords, Coordinate[] snapPts)
+  {
+    // try snapping vertices
+    // assume src list has a closing point (is a ring)
+    for (int i = 0; i < srcCoords.size() - 1; i++) {
+      Coordinate srcPt = (Coordinate) srcCoords.get(i);
+      Coordinate snapVert = findSnapForVertex(srcPt, snapPts);
+      if (snapVert != null) {
+        // update src with snap pt
+        srcCoords.set(i, new Coordinate(snapVert));
+        // keep final closing point in synch (rings only)
+        if (i == 0 && isClosed)
+          srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert));
+      }
+    }
+  }
+
+  private Coordinate findSnapForVertex(Coordinate pt, Coordinate[] snapPts)
+  {
+    for (int i = 0; i < snapPts.length; i++) {
+      // if point is already equal to a src pt, don't snap
+      if (pt.equals2D(snapPts[i]))
+        return null;
+      if (pt.distance(snapPts[i]) < snapTolerance)
+        return snapPts[i];
+    }
+    return null;
+  }
+
+  /**
+   * Snap segments of the source to nearby snap vertices.
+   * Source segments are "cracked" at a snap vertex, and further
+   * snapping takes place on the modified list of segments.
+   * For each distinct snap vertex, at most one source segment
+   * is snapped to.  This prevents "cracking" multiple segments 
+   * at the same point, which would almost certainly cause the result to be invalid.
+   * 
+   * @param srcCoords
+   * @param snapPts
+   */
+  private void snapSegments(CoordinateList srcCoords, Coordinate[] snapPts)
+  {
+    int distinctPtCount = snapPts.length;
+
+    // check for duplicate snap pts.  
+    // Need to do this better - need to check all points for dups (using a Set?)
+    if (snapPts[0].equals2D(snapPts[snapPts.length - 1]))
+        distinctPtCount = snapPts.length - 1;
+
+    for (int i = 0; i < distinctPtCount; i++) {
+      Coordinate snapPt = snapPts[i];
+      int index = findSegmentIndexToSnap(snapPt, srcCoords);
+      /**
+       * If a segment to snap to was found, "crack" it at the snap pt.
+       * The new pt is inserted immediately into the src segment list,
+       * so that subsequent snapping will take place on the latest segments.
+       * Duplicate points are not added.
+       */
+      if (index >= 0) {
+        srcCoords.add(index + 1, new Coordinate(snapPt), false);
+      }
+    }
+  }
+
+
+  /**
+   * Finds a src segment which snaps to (is close to) the given snap point
+   * Only one segment is determined - this is to prevent
+   * snapping to multiple segments, which would almost certainly cause invalid geometry
+   * to be created.
+   * (The heuristic approach of snapping is really only appropriate when
+   * snap pts snap to a unique spot on the src geometry.)
+   *
+   * @param snapPt the point to snap to
+   * @param srcCoords the source segment coordinates
+   * @return the index of the snapped segment
+   * @return -1 if no segment snaps
+   */
+  private int findSegmentIndexToSnap(Coordinate snapPt, CoordinateList srcCoords)
+  {
+    double minDist = Double.MAX_VALUE;
+    int snapIndex = -1;
+    for (int i = 0; i < srcCoords.size() - 1; i++) {
+      seg.p0 = (Coordinate) srcCoords.get(i);
+      seg.p1 = (Coordinate) srcCoords.get(i + 1);
+
+      /**
+       * If the snap pt is already in the src list, don't snap
+       */
+      if (seg.p0.equals2D(snapPt) || seg.p1.equals2D(snapPt))
+        return -1;
+
+      double dist = seg.distance(snapPt);
+      if (dist < snapTolerance && dist < minDist) {
+        minDist = dist;
+        snapIndex = i;
+      }
+    }
+    return snapIndex;
+  }
+
+}

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,80 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.operation.overlay.validate.OverlayResultValidator;
+
+
+/**
+ * Performs an overlay operation using snapping and enhanced precision
+ * to improve the robustness of the result.
+ * This class only uses snapping
+ * if an error is detected when running the standard JTS overlay code.
+ * Errors detected include thrown exceptions 
+ * (in particular, {@link TopologyException})
+ * and invalid overlay computations.
+ *     
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class SnapIfNeededOverlayOp
+{
+  public static Geometry overlayOp(Geometry g0, Geometry g1, int opCode)
+  {
+  	SnapIfNeededOverlayOp op = new SnapIfNeededOverlayOp(g0, g1);
+  	return op.getResultGeometry(opCode);
+  }
+
+  public static Geometry intersection(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.INTERSECTION);
+  }
+
+  public static Geometry union(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.UNION);
+  }
+
+  public static Geometry difference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.DIFFERENCE);
+  }
+
+  public static Geometry symDifference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);
+  }
+  
+  private Geometry[] geom = new Geometry[2];
+
+  public SnapIfNeededOverlayOp(Geometry g1, Geometry g2)
+  {
+    geom[0] = g1;
+    geom[1] = g2;
+  }
+
+  public Geometry getResultGeometry(int opCode)
+  {
+    Geometry result = null;
+    boolean isSuccess = false;
+    try {
+      result = OverlayOp.overlayOp(geom[0], geom[1], opCode); 
+      boolean isValid = true;
+      // not needed if noding validation is used
+//      boolean isValid = OverlayResultValidator.isValid(geom[0], geom[1], OverlayOp.INTERSECTION, result);
+      if (isValid)
+      	isSuccess = true;
+    
+    }
+    catch (Exception ex) {
+    	// ignore this exception, since the operation will be rerun
+//    	System.out.println(ex.getMessage());
+//    	ex.printStackTrace();
+    }
+    if (! isSuccess) {
+    	// this may still throw an exception - just let it go if it does
+      result = SnapOverlayOp.overlayOp(geom[0], geom[1], opCode);
+    }
+    return result;
+  }
+}
\ No newline at end of file

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,117 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.precision.CommonBitsRemover;
+
+/**
+ * Performs an overlay operation using snapping and enhanced precision
+ * to improve the robustness of the result.
+ * This class <i>always</i> uses snapping.  
+ * This is less performant than the standard JTS overlay code, 
+ * and may even introduce errors which were not present in the original data.
+ * For this reason, this class should only be used 
+ * if the standard overlay code fails to produce a correct result. 
+ *  
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class SnapOverlayOp
+{
+  public static Geometry overlayOp(Geometry g0, Geometry g1, int opCode)
+  {
+  	SnapOverlayOp op = new SnapOverlayOp(g0, g1);
+  	return op.getResultGeometry(opCode);
+  }
+
+  public static Geometry intersection(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.INTERSECTION);
+  }
+
+  public static Geometry union(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.UNION);
+  }
+
+  public static Geometry difference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.DIFFERENCE);
+  }
+
+  public static Geometry symDifference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);
+  }
+  
+
+  private Geometry[] geom = new Geometry[2];
+  private double snapTolerance;
+
+  public SnapOverlayOp(Geometry g1, Geometry g2)
+  {
+    geom[0] = g1;
+    geom[1] = g2;
+    computeSnapTolerance();
+  }
+  private void computeSnapTolerance() 
+  {
+		snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(geom[0], geom[1]);
+
+		// System.out.println("Snap tol = " + snapTolerance);
+	}
+
+  public Geometry getResultGeometry(int opCode)
+  {
+    Geometry[] prepGeom = snap();
+    Geometry result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode);
+    return prepareResult(result);	
+  }
+  
+  private Geometry[] snap()
+  {
+    Geometry[] remGeom = removeCommonBits(geom);
+  	
+  	// MD - testing only
+//  	Geometry[] remGeom = geom;
+    
+    Geometry[] snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], snapTolerance);
+    // MD - may want to do this at some point, but it adds cycles
+//    checkValid(snapGeom[0]);
+//    checkValid(snapGeom[1]);
+
+    /*
+    System.out.println("Snapped geoms: ");
+    System.out.println(snapGeom[0]);
+    System.out.println(snapGeom[1]);
+    */
+    return snapGeom;
+  }
+
+  private Geometry prepareResult(Geometry geom)
+  {
+    cbr.addCommonBits(geom);
+    return geom;
+  }
+
+  private CommonBitsRemover cbr;
+
+  private Geometry[] removeCommonBits(Geometry[] geom)
+  {
+    cbr = new CommonBitsRemover();
+    cbr.add(geom[0]);
+    cbr.add(geom[1]);
+    Geometry remGeom[] = new Geometry[2];
+    remGeom[0] = cbr.removeCommonBits((Geometry) geom[0].clone());
+    remGeom[1] = cbr.removeCommonBits((Geometry) geom[1].clone());
+    return remGeom;
+  }
+  
+  private void checkValid(Geometry g)
+  {
+  	if (! g.isValid()) {
+  		System.out.println("Snapped geometry is invalid");
+  	}
+  }
+}
\ No newline at end of file

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,118 @@
+package com.vividsolutions.jts.operation.overlay.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.*;
+
+/**
+ * Finds the most likely {@link Location} of a point relative to
+ * the polygonal components of a geometry, using a tolerance value.
+ * If a point is not clearly in the Interior or Exterior,
+ * it is considered to be on the Boundary.
+ * In other words, if the point is within the tolerance of the Boundary,
+ * it is considered to be on the Boundary; otherwise, 
+ * whether it is Interior or Exterior is determined directly.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class FuzzyPointLocator
+{
+  private Geometry g;
+  private double boundaryDistanceTolerance;
+  private MultiLineString linework;
+  private PointLocator ptLocator = new PointLocator();
+  private LineSegment seg = new LineSegment();
+  
+  public FuzzyPointLocator(Geometry g, double boundaryDistanceTolerance)
+  {
+    this.g = g;
+    this.boundaryDistanceTolerance = boundaryDistanceTolerance;
+    linework = extractLinework(g);
+  }
+
+  public int getLocation(Coordinate pt)
+  {
+    if (isWithinToleranceOfBoundary(pt))
+    		return Location.BOUNDARY;
+    /*
+    double dist = linework.distance(point);
+
+    // if point is close to boundary, it is considered to be on the boundary
+    if (dist < tolerance)
+      return Location.BOUNDARY;
+     */
+    
+    // now we know point must be clearly inside or outside geometry, so return actual location value
+    return ptLocator.locate(pt, g);
+  }
+
+  /**
+   * Extracts linework for polygonal components.
+   * 
+   * @param g the geometry from which to extract
+   * @return a lineal geometry containing the extracted linework
+   */
+  private MultiLineString extractLinework(Geometry g)
+  {
+  	PolygonalLineworkExtracter extracter = new PolygonalLineworkExtracter();
+  	g.apply(extracter);
+  	List linework = extracter.getLinework();
+  	LineString[] lines = GeometryFactory.toLineStringArray(linework);
+  	return g.getFactory().createMultiLineString(lines);
+  }
+  
+  private boolean isWithinToleranceOfBoundary(Coordinate pt)
+  {
+  	for (int i = 0; i < linework.getNumGeometries(); i++) {
+  		LineString line = (LineString) linework.getGeometryN(i);
+  		CoordinateSequence seq = line.getCoordinateSequence();
+  		for (int j = 0; j < seq.size() - 1; j++) {
+   			seq.getCoordinate(j, seg.p0);
+   			seq.getCoordinate(j + 1, seg.p1);
+   			double dist = seg.distance(pt);
+   			if (dist <= boundaryDistanceTolerance)
+   				return true;
+  		}
+  	}
+  	return false;
+  }
+}
+
+/**
+ * Extracts the LineStrings in the boundaries 
+ * of all the polygonal elements in the target {@link Geometry}.
+ * 
+ * @author Martin Davis
+ */
+class PolygonalLineworkExtracter 
+	implements GeometryFilter
+{
+	private List linework; 
+	
+	public PolygonalLineworkExtracter()
+	{
+		linework = new ArrayList();
+	}
+	
+	/**
+	 * Filters out all linework for polygonal elements
+	 */
+	public void filter(Geometry g)
+	{
+		if (g instanceof Polygon) {
+			Polygon poly = (Polygon) g;
+			linework.add(poly.getExteriorRing());
+			for (int i = 0; i < poly.getNumInteriorRing(); i++) {
+				linework.add(poly.getInteriorRingN(i));
+			}
+		}
+	}
+	
+	/**
+	 * Gets the list of polygonal linework.
+	 * 
+	 * @return a List of LineStrings
+	 */
+	public List getLinework() { return linework; }
+}
\ No newline at end of file

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,82 @@
+package com.vividsolutions.jts.operation.overlay.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * Generates points offset by a given distance 
+ * from both sides of the midpoint of
+ * all segments in a {@link Geometry}.
+ * Can be used to generate probe points for
+ * determining whether a polygonal overlay result
+ * is incorrect.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class OffsetPointGenerator
+{
+  private double offsetDistance;
+  private Geometry g;
+  private List offsetPts;
+
+  public OffsetPointGenerator(Geometry g, double offsetDistance)
+  {
+    this.g = g;
+    this.offsetDistance = offsetDistance;
+  }
+
+  /**
+   * Gets the computed offset points.
+   *
+   * @return List<Coordinate>
+   */
+  public List getPoints()
+  {
+    offsetPts = new ArrayList();
+    List lines = LinearComponentExtracter.getLines(g);
+    for (Iterator i = lines.iterator(); i.hasNext(); ) {
+      LineString line = (LineString) i.next();
+      extractPoints(line);
+    }
+    //System.out.println(toMultiPoint(offsetPts));
+    return offsetPts;
+  }
+
+  private void extractPoints(LineString line)
+  {
+    Coordinate[] pts = line.getCoordinates();
+    for (int i = 0; i < pts.length - 1; i++) {
+    	computeOffsetPoints(pts[i], pts[i + 1]);
+    }
+  }
+
+  /**
+   * Generates the two points which are offset from the 
+   * midpoint of the segment <tt>(p0, p1)</tt> by the
+   * <tt>offsetDistance</tt>.
+   * 
+   * @param p0 the first point of the segment to offset from
+   * @param p1 the second point of the segment to offset from
+   */
+  private void computeOffsetPoints(Coordinate p0, Coordinate p1)
+  {
+    double dx = p1.x - p0.x;
+    double dy = p1.y - p0.y;
+    double len = Math.sqrt(dx * dx + dy * dy);
+    // u is the vector that is the length of the offset, in the direction of the segment
+    double ux = offsetDistance * dx / len;
+    double uy = offsetDistance * dy / len;
+
+    double midX = (p1.x + p0.x) / 2;
+    double midY = (p1.y + p0.y) / 2;
+
+    Coordinate offsetLeft = new Coordinate(midX - uy, midY + ux);
+    Coordinate offsetRight = new Coordinate(midX + uy, midY - ux);
+
+    offsetPts.add(offsetLeft);
+    offsetPts.add(offsetRight);
+  }
+
+}
\ No newline at end of file

Added: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java	                        (rev 0)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,180 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.overlay.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.operation.overlay.snap.GeometrySnapper;
+
+/**
+ * Validates that the result of an overlay operation is
+ * geometrically correct within a given tolerance.
+ * Uses fuzzy point location to find points which are .
+ * <p>
+ * This algorithm is only useful where the inputs are polygonal.
+ * This is a heuristic test, and may return false positive results
+ * (I.e. it may fail to detect an invalid result.)
+ * It should never return a false negative result, however
+ * (I.e. it should never report a valid result as invalid.)
+ *
+ * @author Martin Davis
+ * @version 1.7
+ * @see OverlayOp
+ */
+public class OverlayResultValidator
+{
+  public static boolean isValid(Geometry a, Geometry b, int overlayOp, Geometry result)
+  {
+    OverlayResultValidator validator = new OverlayResultValidator(a, b, result);
+    return validator.isValid(overlayOp);
+  }
+
+  private static double computeBoundaryDistanceTolerance(Geometry g0, Geometry g1)
+  {
+  	return Math.min(GeometrySnapper.computeSizeBasedSnapTolerance(g0),
+  			GeometrySnapper.computeSizeBasedSnapTolerance(g1));
+  }
+  
+  private static final double TOLERANCE = 0.000001;
+
+  private Geometry[] geom;
+  private FuzzyPointLocator[] locFinder;
+  private int[] location = new int[3] ;
+  private Coordinate invalidLocation = null;
+  private double boundaryDistanceTolerance = TOLERANCE;
+
+  private List testCoords = new ArrayList();
+
+  public OverlayResultValidator(Geometry a, Geometry b, Geometry result) 
+  {
+  	/**
+  	 * The tolerance to use needs to depend on the size of the geometries.
+  	 * It should not be more precise than double-precision can support. 
+  	 */
+    boundaryDistanceTolerance = computeBoundaryDistanceTolerance(a, b);
+    geom = new Geometry[] { a, b, result };
+    locFinder = new FuzzyPointLocator[] {
+      new FuzzyPointLocator(geom[0], boundaryDistanceTolerance),
+      new FuzzyPointLocator(geom[1], boundaryDistanceTolerance),
+      new FuzzyPointLocator(geom[2], boundaryDistanceTolerance)
+      };
+  }
+
+  public boolean isValid(int overlayOp)
+  {
+    addTestPts(geom[0]);
+    addTestPts(geom[1]);
+    boolean isValid = checkValid(overlayOp);
+
+    /*
+    System.out.println("OverlayResultValidator: " + isValid);
+    System.out.println("G0");
+    System.out.println(geom[0]);
+    System.out.println("G1");
+    System.out.println(geom[1]);
+    System.out.println("Result");
+    System.out.println(geom[2]);
+    */
+    
+    return isValid;
+  }
+
+  public Coordinate getInvalidLocation() { return invalidLocation; }
+
+  private void addTestPts(Geometry g)
+  {
+    OffsetPointGenerator ptGen = new OffsetPointGenerator(g, 5 * boundaryDistanceTolerance);
+    testCoords.addAll(ptGen.getPoints());
+  }
+
+  private boolean checkValid(int overlayOp)
+  {
+    for (int i = 0; i < testCoords.size(); i++) {
+      Coordinate pt = (Coordinate) testCoords.get(i);
+      if (! checkValid(overlayOp, pt)) {
+        invalidLocation = pt;
+        return false;
+      }
+    }
+    return true;
+  }
+
+  private boolean checkValid(int overlayOp, Coordinate pt)
+  {
+    location[0] = locFinder[0].getLocation(pt);
+    location[1] = locFinder[1].getLocation(pt);
+    location[2] = locFinder[2].getLocation(pt);
+
+    /**
+     * If any location is on the Boundary, can't deduce anything, so just return true
+     */
+    if (hasLocation(location, Location.BOUNDARY))
+      return true;
+
+    return isValidResult(overlayOp, location);
+  }
+
+  private static boolean hasLocation(int[] location, int loc)
+  {
+    for (int i = 0; i < 3; i ++) {
+      if (location[i] == loc)
+        return true;
+    }
+    return false;
+  }
+
+  private boolean isValidResult(int overlayOp, int[] location)
+  {
+    boolean expectedInterior = OverlayOp.isResultOfOp(location[0], location[1], overlayOp);
+
+    boolean resultInInterior = (location[2] == Location.INTERIOR);
+    // MD use simpler: boolean isValid = (expectedInterior == resultInInterior);
+    boolean isValid = ! (expectedInterior ^ resultInInterior);
+    
+    if (! isValid) reportResult(overlayOp, location, expectedInterior);
+    
+    return isValid;
+ }
+
+  private void reportResult(int overlayOp, int[] location, boolean expectedInterior)
+  {
+  	System.out.println(
+  			"A:" + Location.toLocationSymbol(location[0])
+  			+ " B:" + Location.toLocationSymbol(location[1])
+  			+ " expected:" + (expectedInterior ? 'i' : 'e')
+  			+ " actual:" + Location.toLocationSymbol(location[2])
+  			);
+  }
+}
+

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -80,7 +80,8 @@
       if (tryEnv.equals(testEnv))
         continue;
 
-      testPt = ptNotInList(testRing.getCoordinates(), tryRing.getCoordinates());
+//      testPt = ptNotInList(testRing.getCoordinates(), tryRing.getCoordinates());
+      testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryRing.getCoordinates());
       if (tryEnv.contains(testEnv)
           && cga.isPointInRing(testPt, tryRing.getCoordinates()) )
         isContained = true;
@@ -99,14 +100,14 @@
    * Finds a point in a list of points which is not contained in another list of points
    * @param testPts the {@link Coordinate}s to test
    * @param pts an array of {@link Coordinate}s to test the input points against
-   * @return a {@link Coordinate} from <code>testPts</code> which is not in <code>pts</code>, '
-   * or <code>null</code>
+   * @return a {@link Coordinate} from <code>testPts</code> which is not in <code>pts</code>,
+   * @return null if there is no coordinate not in the list
    */
   public static Coordinate ptNotInList(Coordinate[] testPts, Coordinate[] pts)
   {
     for (int i = 0; i < testPts.length; i++) {
       Coordinate testPt = testPts[i];
-      if (isInList(testPt, pts))
+      if (! isInList(testPt, pts))
           return testPt;
     }
     return null;
@@ -124,9 +125,9 @@
   {
     for (int i = 0; i < pts.length; i++) {
         if (pt.equals(pts[i]))
-            return false;
+            return true;
     }
-    return true;
+    return false;
   }
   private GeometryFactory factory;
   private static CGAlgorithms cga = new CGAlgorithms();
@@ -177,7 +178,7 @@
   }
 
   /**
-   * Computes the {@link Polygon formed by this ring and any contained holes.
+   * Computes the {@link Polygon} formed by this ring and any contained holes.
    *
    * @return the {@link Polygon} formed by this ring and its holes.
    */

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -135,7 +135,7 @@
 
   /**
    * Gets the list of polygons formed by the polygonization.
-   * @return a collection of {@link Polygons}
+   * @return a collection of {@link Polygon}s
    */
   public Collection getPolygons()
   {
@@ -145,7 +145,7 @@
 
   /**
    * Get the list of dangling lines found during polygonization.
-   * @return a collection of the input {@LineStrings} which are dangles
+   * @return a collection of the input {@link LineString}s which are dangles
    */
   public Collection getDangles()
   {
@@ -155,7 +155,7 @@
 
   /**
    * Get the list of cut edges found during polygonization.
-   * @return a collection of the input {@LineStrings} which are cut edges
+   * @return a collection of the input {@link LineString}s which are cut edges
    */
   public Collection getCutEdges()
   {
@@ -165,7 +165,7 @@
 
   /**
    * Get the list of lines forming invalid rings found during polygonization.
-   * @return a collection of the input {@LineStrings} which form invalid rings
+   * @return a collection of the input {@link LineString}s which form invalid rings
    */
   public Collection getInvalidRingLines()
   {

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -35,34 +35,42 @@
  */
 package com.vividsolutions.jts.operation.relate;
 
-/**
- * A collection of EdgeStubs which obey the following invariant:
- * They originate at the same node and have the same direction.
- * @version 1.7
- */
 import java.io.PrintStream;
 import java.util.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.geomgraph.*;
 import com.vividsolutions.jts.util.Assert;
+import com.vividsolutions.jts.algorithm.BoundaryNodeRule;
 
-
 /**
- * Contains all {@link EdgeEnd}s which start at the same point and are parallel.
+ * A collection of {@link EdgeEnd}s which obey the following invariant:
+ * They originate at the same node and have the same direction.
  *
  * @version 1.7
  */
 public class EdgeEndBundle
   extends EdgeEnd
 {
+//  private BoundaryNodeRule boundaryNodeRule;
   private List edgeEnds = new ArrayList();
 
-  public EdgeEndBundle(EdgeEnd e)
+  public EdgeEndBundle(BoundaryNodeRule boundaryNodeRule, EdgeEnd e)
   {
     super(e.getEdge(), e.getCoordinate(), e.getDirectedCoordinate(), new Label(e.getLabel()));
     insert(e);
+    /*
+    if (boundaryNodeRule != null)
+      this.boundaryNodeRule = boundaryNodeRule;
+    else
+      boundaryNodeRule = BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;
+    */
   }
 
+  public EdgeEndBundle(EdgeEnd e)
+  {
+    this(null, e);
+  }
+
   public Label getLabel() { return label; }
   public Iterator iterator() { return edgeEnds.iterator(); }
   public List getEdgeEnds() { return edgeEnds; }
@@ -78,7 +86,7 @@
    * edges in this EdgeStubBundle.  It essentially merges
    * the ON and side labels for each edge.  These labels must be compatible
    */
-  public void computeLabel()
+  public void computeLabel(BoundaryNodeRule boundaryNodeRule)
   {
     // create the label.  If any of the edges belong to areas,
     // the label must be an area label
@@ -94,23 +102,23 @@
 
     // compute the On label, and the side labels if present
     for (int i = 0; i < 2; i++) {
-      computeLabelOn(i);
+      computeLabelOn(i, boundaryNodeRule);
       if (isArea)
         computeLabelSides(i);
     }
+  }
 
-  }
   /**
    * Compute the overall ON location for the list of EdgeStubs.
    * (This is essentially equivalent to computing the self-overlay of a single Geometry)
    * edgeStubs can be either on the boundary (eg Polygon edge)
    * OR in the interior (e.g. segment of a LineString)
    * of their parent Geometry.
-   * In addition, GeometryCollections use the mod-2 rule to determine
+   * In addition, GeometryCollections use a {@link BoundaryNodeRule} to determine
    * whether a segment is on the boundary or not.
-   * Finally, in GeometryCollections it can still occur that an edge is both
+   * Finally, in GeometryCollections it can occur that an edge is both
    * on the boundary and in the interior (e.g. a LineString segment lying on
-   * top of a Polygon edge.) In this case as usual the Boundary is given precendence.
+   * top of a Polygon edge.) In this case the Boundary is given precendence.
    * <br>
    * These observations result in the following rules for computing the ON location:
    * <ul>
@@ -120,7 +128,7 @@
    * <li> otherwise, the attribute is NULL.
    * </ul>
    */
-  private void computeLabelOn(int geomIndex)
+  private void computeLabelOn(int geomIndex, BoundaryNodeRule boundaryNodeRule)
   {
     // compute the ON location value
     int boundaryCount = 0;
@@ -135,7 +143,7 @@
     int loc = Location.NONE;
     if (foundInterior)  loc = Location.INTERIOR;
     if (boundaryCount > 0) {
-        loc = GeometryGraph.determineBoundary(boundaryCount);
+      loc = GeometryGraph.determineBoundary(boundaryNodeRule, boundaryCount);
     }
     label.setLocation(geomIndex, loc);
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -46,12 +46,15 @@
  * An ordered list of {@link EdgeEndBundle}s around a {@link RelateNode}.
  * They are maintained in CCW order (starting with the positive x-axis) around the node
  * for efficient lookup and topology building.
+ *
  * @version 1.7
  */
 public class EdgeEndBundleStar
   extends EdgeEndStar
 {
-
+  /**
+   * Creates a new empty EdgeEndBundleStar
+   */
   public EdgeEndBundleStar() {
   }
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/RelateOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/RelateOp.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/relate/RelateOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -39,33 +39,92 @@
  * @version 1.7
  */
 
+import com.vividsolutions.jts.algorithm.BoundaryNodeRule;
 import com.vividsolutions.jts.geomgraph.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.operation.GeometryGraphOperation;
 import java.util.*;
 
 /**
- * Implements the relate() operation on {@link Geometry}s.
+ * Implements the SFS <tt>relate()</tt> operation on two {@link Geometry}s.
+ * This class supports specifying a custom {@link BoundaryNodeRule}
+ * to be used during the relate computation.
+ * <p>
+ * <b>Note:</b> custom Boundary Node Rules do not (currently)
+ * affect the results of other Geometry methods (such
+ * as {@link Geometry#getBoundary}.  The results of
+ * these methods may not be consistent with the relationship computed by
+ * a custom Boundary Node Rule.
  *
  * @version 1.7
  */
 public class RelateOp
   extends GeometryGraphOperation
 {
+  /**
+   * Computes the {@link IntersectionMatrix} for the spatial relationship
+   * between two {@link Geometry}s, using the default (OGC SFS) Boundary Node Rule
+   *
+   * @param a a Geometry to test
+   * @param b a Geometry to test
+   * @return the IntersectonMatrix for the spatial relationship between the geometries
+   */
   public static IntersectionMatrix relate(Geometry a, Geometry b)
   {
-      RelateOp relOp = new RelateOp(a, b);
-      IntersectionMatrix im = relOp.getIntersectionMatrix();
-      return im;
+    RelateOp relOp = new RelateOp(a, b);
+    IntersectionMatrix im = relOp.getIntersectionMatrix();
+    return im;
   }
 
+  /**
+   * Computes the {@link IntersectionMatrix} for the spatial relationship
+   * between two {@link Geometry}s using a specified Boundary Node Rule.
+   *
+   * @param a a Geometry to test
+   * @param b a Geometry to test
+   * @param boundaryNodeRule the Boundary Node Rule to use
+   * @return the IntersectonMatrix for the spatial relationship between the input geometries
+   */
+  public static IntersectionMatrix relate(Geometry a, Geometry b, BoundaryNodeRule boundaryNodeRule)
+  {
+    RelateOp relOp = new RelateOp(a, b, boundaryNodeRule);
+    IntersectionMatrix im = relOp.getIntersectionMatrix();
+    return im;
+  }
+
   private RelateComputer relate;
 
-  public RelateOp(Geometry g0, Geometry g1) {
+  /**
+   * Creates a new Relate operation, using the default (OGC SFS) Boundary Node Rule.
+   *
+   * @param g0 a Geometry to relate
+   * @param g1 another Geometry to relate
+   */
+  public RelateOp(Geometry g0, Geometry g1)
+  {
     super(g0, g1);
     relate = new RelateComputer(arg);
   }
 
+  /**
+   * Creates a new Relate operation with a specified Boundary Node Rule.
+   *
+   * @param g0 a Geometry to relate
+   * @param g1 another Geometry to relate
+   * @param boundaryNodeRule the Boundary Node Rule to use
+   */
+  public RelateOp(Geometry g0, Geometry g1, BoundaryNodeRule boundaryNodeRule)
+  {
+    super(g0, g1, boundaryNodeRule);
+    relate = new RelateComputer(arg);
+  }
+
+  /**
+   * Gets the IntersectionMatrix for the spatial relationship
+   * between the input geometries.
+   *
+   * @return the IntersectonMatrix for the spatial relationship between the input geometries
+   */
   public IntersectionMatrix getIntersectionMatrix()
   {
     return relate.computeIM();

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -87,11 +87,11 @@
     List splitEdges = new ArrayList();
     geomGraph.computeSplitEdges(splitEdges);
 
-    // polygonize the edges
+    // form the edges into rings
     PlanarGraph graph = new PlanarGraph(new OverlayNodeFactory());
     graph.addEdges(splitEdges);
-    setAllEdgesInResult(graph);
-    graph.linkAllDirectedEdges();
+    setInteriorEdgesInResult(graph);
+    graph.linkResultDirectedEdges();
     List edgeRings = buildEdgeRings(graph.getEdgeEnds());
 
     /**
@@ -110,16 +110,20 @@
     return ! hasUnvisitedShellEdge(edgeRings);
   }
 
-  private void setAllEdgesInResult(PlanarGraph graph)
+  private void setInteriorEdgesInResult(PlanarGraph graph)
   {
     for (Iterator it = graph.getEdgeEnds().iterator(); it.hasNext(); ) {
       DirectedEdge de = (DirectedEdge) it.next();
-      de.setInResult(true);
+      if (de.getLabel().getLocation(0, Position.RIGHT) == Location.INTERIOR) {
+        de.setInResult(true);
+      }
     }
   }
 
   /**
-   * for all DirectedEdges in result, form them into EdgeRings
+   * Form DirectedEdges in graph into Minimal EdgeRings.
+   * (Minimal Edgerings must be used, because only they are guaranteed to provide
+   * a correct isHole computation)
    */
   private List buildEdgeRings(Collection dirEdges)
   {
@@ -127,9 +131,13 @@
     for (Iterator it = dirEdges.iterator(); it.hasNext(); ) {
       DirectedEdge de = (DirectedEdge) it.next();
       // if this edge has not yet been processed
-      if (de.getEdgeRing() == null) {
-        EdgeRing er = new MaximalEdgeRing(de, geometryFactory, cga);
-        edgeRings.add(er);
+      if (de.isInResult()
+         && de.getEdgeRing() == null) {
+        MaximalEdgeRing er = new MaximalEdgeRing(de, geometryFactory, cga);
+
+        er.linkDirectedEdgesForMinimalEdgeRings();
+        List minEdgeRings = er.buildMinimalRings();
+        edgeRings.addAll(minEdgeRings);
       }
     }
     return edgeRings;
@@ -137,7 +145,9 @@
 
   /**
    * Mark all the edges for the edgeRings corresponding to the shells
-   * of the input polygons.  Note only ONE ring gets marked for each shell.
+   * of the input polygons.
+   * Only ONE ring gets marked for each shell - if there are others which remain unmarked
+   * this indicates a disconnected interior.
    */
   private void visitShellInteriors(Geometry g, PlanarGraph graph)
   {
@@ -176,16 +186,15 @@
 
     visitLinkedDirectedEdges(intDe);
   }
+
   protected void visitLinkedDirectedEdges(DirectedEdge start)
   {
     DirectedEdge startDe = start;
     DirectedEdge de = start;
-//Debug.println(de);
     do {
       Assert.isTrue(de != null, "found null Directed Edge");
       de.setVisited(true);
       de = de.getNext();
-//Debug.println(de);
     } while (de != startDe);
   }
 
@@ -203,14 +212,19 @@
   {
     for (int i = 0; i < edgeRings.size(); i++) {
       EdgeRing er = (EdgeRing) edgeRings.get(i);
-      if (er.isHole()) continue;
+      // don't check hole rings
+      if (er.isHole())
+        continue;
       List edges = er.getEdges();
       DirectedEdge de = (DirectedEdge) edges.get(0);
       // don't check CW rings which are holes
+      // (MD - this check may now be irrelevant)
       if (de.getLabel().getLocation(0, Position.RIGHT) != Location.INTERIOR) continue;
 
-      // must have a CW ring which surrounds the INT of the area, so check all
-      // edges have been visited
+      /**
+       * the edgeRing is CW ring which surrounds the INT of the area, so check all
+       * edges have been visited.  If any are unvisited, this is a disconnected part of the interior
+       */
       for (int j = 0; j < edges.size(); j++) {
         de = (DirectedEdge) edges.get(j);
 //Debug.print("visted? "); Debug.println(de);

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -119,7 +119,7 @@
   {
     for (Iterator nodeIt = nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {
       RelateNode node = (RelateNode) nodeIt.next();
-      if (! node.getEdges().isAreaLabelsConsistent()) {
+      if (! node.getEdges().isAreaLabelsConsistent(geomGraph)) {
         invalidPoint = (Coordinate) node.getCoordinate().clone();
         return false;
       }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -34,7 +34,7 @@
  */
 package com.vividsolutions.jts.operation.valid;
 
-import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.*;
 
 /**
  * Contains information about the nature and location of a {@link Geometry}
@@ -102,7 +102,7 @@
 
   /**
    * Indicates that the <code>X</code> or <code>Y</code> ordinate of
-   * a Coordinate is not a valid numeric value (e.g. {@link Double.Nan} )
+   * a Coordinate is not a valid numeric value (e.g. {@link Double#NaN} )
    */
   public static final int INVALID_COORDINATE      = 10;
 
@@ -140,7 +140,8 @@
   public TopologyValidationError(int errorType, Coordinate pt)
   {
     this.errorType = errorType;
-    this.pt = (Coordinate) pt.clone();
+    if (pt != null)
+      this.pt = (Coordinate) pt.clone();
   }
 
   /**

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/DirectedEdge.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/DirectedEdge.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/DirectedEdge.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -183,7 +183,7 @@
    * <li>first compare the quadrants. If the quadrants are different, it it
    * trivial to determine which vector is "greater".
    * <li>if the vectors lie in the same quadrant, the robust
-   * {@link RobustCGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
+   * {@link CGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
    * function can be used to decide the relative orientation of the vectors.
    * </ul>
    */
@@ -204,7 +204,7 @@
    * <li>first compare the quadrants. If the quadrants are different, it it
    * trivial to determine which vector is "greater".
    * <li>if the vectors lie in the same quadrant, the robust
-   * {@link RobustCGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
+   * {@link CGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
    * function can be used to decide the relative orientation of the vectors.
    * </ul>
    */

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Edge.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Edge.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Edge.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -49,7 +49,7 @@
 
   /**
    * The two DirectedEdges associated with this Edge.
-   * 0 is forward, 1 is reverse
+   * Index 0 is forward, 1 is reverse.
    */
   protected DirectedEdge[] dirEdge;
 

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/PlanarGraph.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/PlanarGraph.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/PlanarGraph.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -117,7 +117,7 @@
   /**
    * Tests whether this graph contains the given {@link Edge}
    *
-   * @param de the edge to query
+   * @param e the edge to query
    * @return <code>true</code> if the graph contains the edge
    */
   public boolean contains(Edge e)

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Subgraph.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Subgraph.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/planargraph/Subgraph.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -4,7 +4,7 @@
 
 /**
  * A subgraph of a {@link PlanarGraph}.
- * A subgraph may contain any subset of {@link Edges}
+ * A subgraph may contain any subset of {@link Edge}s
  * from the parent graph.
  * It will also automatically contain all {@link DirectedEdge}s
  * and {@link Node}s associated with those edges.
@@ -76,7 +76,7 @@
   public Iterator edgeIterator()  {    return edges.iterator();  }
 
   /**
-   * Returns an {@link Iterator} over the {@link Nodes} in this graph.
+   * Returns an {@link Iterator} over the {@link Node}s in this graph.
    * @return an iterator over the nodes
    */
   public Iterator nodeIterator()  {    return nodeMap.iterator();  }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/CommonBits.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/CommonBits.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/CommonBits.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -47,6 +47,7 @@
   /**
    * Computes the bit pattern for the sign and exponent of a
    * double-precision number.
+   * 
    * @param num
    * @return the bit pattern for the sign and exponent
    */
@@ -61,7 +62,9 @@
  * It does not count the hidden bit, which is always 1.
  * It does not determine whether the numbers have the same exponent - if they do
  * not, the value computed by this function is meaningless.
- * @param db
+ * 
+ * @param num1 the first number
+ * @param num2 the second number
  * @return the number of common most-significant mantissa bits
  */
   public static int numCommonMostSigMantissaBits(long num1, long num2)
@@ -78,8 +81,8 @@
 
   /**
    * Zeroes the lower n bits of a bitstring.
+   * 
    * @param bits the bitstring to alter
-   * @param i the number of bits to zero
    * @return the zeroed bitstring
    */
   public static long zeroLowerBits(long bits, int nBits)
@@ -92,6 +95,7 @@
 
   /**
    * Extracts the i'th bit of a bitstring.
+   * 
    * @param bits the bitstring to extract from
    * @param i the bit to extract
    * @return the value of the extracted bit

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -189,7 +189,7 @@
    * This method should no longer be necessary, since the buffer algorithm
    * now is highly robust.
    *
-   * @param geom0 the first Geometry
+   * @param geom the first Geometry
    * @param distance the buffer distance
    * @return the Geometry representing the buffer of the input Geometry.
    */

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -6,7 +6,10 @@
 import com.vividsolutions.jts.index.quadtree.Quadtree;
 
 /**
- * An index of {@link LineSegments}.
+ * An spatial index on a set of {@link LineSegment}s.
+ * Supports adding and removing items.
+ *
+ * @author Martin Davis
  */
 public class LineSegmentIndex
 {

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -3,7 +3,7 @@
 import com.vividsolutions.jts.geom.*;
 
 /**
- * A {@link LineSegment} which is tagged with its location in a {@link Geometry}.
+ * A {@link LineSegment} which is tagged with its location in a parent {@link Geometry}.
  * Used to index the segments in a geometry and recover the segment locations
  * from the index.
  */

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineString.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineString.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineString.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -6,7 +6,8 @@
 /**
  * @version 1.7
  */
-public class TaggedLineString {
+public class TaggedLineString
+{
 
   private LineString parentLine;
   private TaggedLineSegment[] segs;

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -10,6 +10,7 @@
  * (in the sense that no new intersections are introduced).
  * Uses the recursive Douglas-Peucker algorithm.
  *
+ * @author Martin Davis
  * @version 1.7
  */
 public class TaggedLineStringSimplifier
@@ -24,7 +25,6 @@
   public TaggedLineStringSimplifier(LineSegmentIndex inputIndex,
                                      LineSegmentIndex outputIndex)
   {
-    this.line = line;
     this.inputIndex = inputIndex;
     this.outputIndex = outputIndex;
   }

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -4,8 +4,10 @@
 import com.vividsolutions.jts.algorithm.*;
 
 /**
- * Simplifies a collection of TaggedLineStrings, preserving topology
+ * Simplifies a collection of {@link TaggedLineString}s, preserving topology
  * (in the sense that no new intersections are introduced).
+ * This class is essentially just a container for the common
+ * indexes used by {@link TaggedLineStringSimplifier}.
  */
 public class TaggedLinesSimplifier
 {

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -21,6 +21,8 @@
  * (although they may touch at fewer points)
  * </ul>
  *
+ * @author Martin Davis
+ *
  */
 public class TopologyPreservingSimplifier
 {
@@ -38,9 +40,7 @@
   public TopologyPreservingSimplifier(Geometry inputGeom)
   {
     this.inputGeom = inputGeom;
-    //TESTING: slightly faster, but probably not enough to bother with
-    //inputIndex = new LineSegmentIndex(new STRtree());
-  }
+ }
 
   /**
    * Sets the distance tolerance for the simplification.

Modified: packages/jts/branches/upstream/current/src/com/vividsolutions/jts/util/CollectionUtil.java
===================================================================
--- packages/jts/branches/upstream/current/src/com/vividsolutions/jts/util/CollectionUtil.java	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/com/vividsolutions/jts/util/CollectionUtil.java	2009-09-22 12:40:02 UTC (rev 2489)
@@ -18,7 +18,7 @@
    * Executes a function on each item in a {@link Collection}
    * and returns the results in a new {@link List}
    *
-   * @param coll
+   * @param coll the collection to process
    * @param func the Function to execute
    */
   public static List transform(Collection coll, Function func)
@@ -34,7 +34,7 @@
    * Executes a function on each item in a Collection but does
    * not accumulate the result
    *
-   * @param coll
+   * @param coll the collection to process
    * @param func the Function to execute
    */
   public static void apply(Collection coll, Function func)
@@ -49,7 +49,7 @@
    * and collects all the entries for which the result
    * of the function is equal to {@link Boolean}.TRUE.
    *
-   * @param coll
+   * @param collection the collection to process
    * @param func the Function to execute
    */
   public static List select(Collection collection, Function func) {

Deleted: packages/jts/branches/upstream/current/src/jump-workbench-properties.xml
===================================================================
--- packages/jts/branches/upstream/current/src/jump-workbench-properties.xml	2009-09-22 12:30:04 UTC (rev 2488)
+++ packages/jts/branches/upstream/current/src/jump-workbench-properties.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -1,3 +0,0 @@
-<jump-workbench>
-   <extension>com.vividsolutions.jtsplugin.JTSExtension</extension> 
-</jump-workbench>

Added: packages/jts/branches/upstream/current/testxml/general/TestBoundary.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestBoundary.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestBoundary.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,165 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>P - point</desc>
+  <a>
+    POINT(10 10)
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mP - MultiPoint</desc>
+  <a>
+    MULTIPOINT(10 10, 20 20)
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - Line</desc>
+  <a>
+    LINESTRING(10 10, 20 20)
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(10 10, 20 20)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - closed</desc>
+  <a>
+    LINESTRING(10 10, 20 20, 20 10, 10 10)
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT EMPTY
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - self-intersecting with boundary</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100)
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(40 40, 100 100)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - 2 lines with common endpoint</desc>
+  <a>
+    MULTILINESTRING(
+      (10 10, 20 20), 
+      (20 20, 30 30))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(10 10, 30 30)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - 3 lines with common endpoint</desc>
+  <a>
+    MULTILINESTRING(
+      (10 10, 20 20), 
+      (20 20, 30 20), 
+      (20 20, 30 30))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(10 10, 20 20, 30 20, 30 30)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - 4 lines with common endpoint</desc>
+  <a>
+    MULTILINESTRING(
+      (10 10, 20 20), 
+      (20 20, 30 20), 
+      (20 20, 30 30), 
+      (20 20, 30 40))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(10 10, 30 20, 30 30, 30 40)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - 2 lines, one closed, with common endpoint</desc>
+  <a>
+    MULTILINESTRING(
+      (10 10, 20 20), 
+      (20 20, 20 30, 30 30, 30 20, 20 20))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(10 10, 20 20)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - 1 line, self-intersecting, topologically equal to prev case</desc>
+  <a>
+    MULTILINESTRING(
+      (10 10, 20 20, 20 30, 30 30, 30 20, 20 20))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(10 10, 20 20)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>A - polygon with no holes</desc>
+  <a>
+    POLYGON(
+      (40 60, 420 60, 420 320, 40 320, 40 60))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    LINESTRING(40 60, 420 60, 420 320, 40 320, 40 60)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>A - polygon with 1 hole</desc>
+  <a>
+    POLYGON(
+      (40 60, 420 60, 420 320, 40 320, 40 60), 
+      (200 140, 160 220, 260 200, 200 140))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTILINESTRING(
+      (40 60, 420 60, 420 320, 40 320, 40 60), 
+      (200 140, 160 220, 260 200, 200 140))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestCentroid.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestCentroid.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestCentroid.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,149 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>P - single point</desc>
+  <a>    POINT(10 10)  </a>
+<test><op name="getCentroid" arg1="A" >    POINT(10 10)   </op></test>
+</case>
+
+<case>
+  <desc>mP - two points</desc>
+  <a>    MULTIPOINT(10 10, 20 20 )  </a>
+<test><op name="getCentroid" arg1="A" >    POINT(15 15)   </op></test>
+</case>
+
+<case>
+  <desc>mP - 4 points</desc>
+  <a>    MULTIPOINT(10 10, 20 20, 10 20, 20 10)  </a>
+<test><op name="getCentroid" arg1="A" >    POINT(15 15)   </op></test>
+</case>
+
+<case>
+  <desc>L - single segment</desc>
+  <a>    LINESTRING(10 10, 20 20)  </a>
+<test><op name="getCentroid" arg1="A" >    POINT(15 15)   </op></test>
+</case>
+
+<case>
+  <desc>L - two segments</desc>
+  <a>    LINESTRING (60 180, 120 100, 180 180)  </a>
+<test><op name="getCentroid" arg1="A" >    POINT (120 140)   </op></test>
+</case>
+
+<case>
+  <desc>L - elongated horseshoe</desc>
+  <a>    LINESTRING (80 0, 80 120, 120 120, 120 0))
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (100 69)   </op></test>
+</case>
+
+
+<case>
+  <desc>mL - two single-segment lines</desc>
+  <a>    MULTILINESTRING ((0 0, 0 100), (100 0, 100 100))  </a>
+<test><op name="getCentroid" arg1="A" >    POINT (50 50)   </op></test>
+</case>
+
+<case>
+  <desc>mL - two concentric rings, offset</desc>
+  <a>    MULTILINESTRING ((0 0, 0 200, 200 200, 200 0, 0 0), 
+  (60 180, 20 180, 20 140, 60 140, 60 180))  
+</a>
+<test><op name="getCentroid" arg1="A" >    POINT (90 110)   </op></test>
+</case>
+
+<case>
+  <desc>mL - complicated symmetrical collection of lines</desc>
+  <a>    MULTILINESTRING ((20 20, 60 60), 
+  (20 -20, 60 -60), 
+  (-20 -20, -60 -60), 
+  (-20 20, -60 60), 
+  (-80 0, 0 80, 80 0, 0 -80, -80 0), 
+  (-40 20, -40 -20), 
+  (-20 40, 20 40), 
+  (40 20, 40 -20), 
+  (20 -40, -20 -40)) </a>
+<test><op name="getCentroid" arg1="A" >    POINT (0 0)   </op></test>
+</case>
+
+<case>
+  <desc>A - box</desc>
+  <a>    POLYGON ((40 160, 160 160, 160 40, 40 40, 40 160))  </a>
+<test><op name="getCentroid" arg1="A" >    POINT (100 100)   </op></test>
+</case>
+
+<case>
+  <desc>A - box with hole</desc>
+  <a>    POLYGON ((0 200, 200 200, 200 0, 0 0, 0 200), (20 180, 80 180, 80 20, 20 20, 20 180)) </a>
+<test><op name="getCentroid" arg1="A" >    POINT (116 100)   </op></test>
+</case>
+
+<case>
+  <desc>A - box with offset hole (showing difference between area and line centroid)</desc>
+  <a>    POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), 
+  (60 180, 20 180, 20 140, 60 140, 60 180))
+	 </a>
+<test><op name="getCentroid" arg1="A" >    POINT (103 98)   </op></test>
+</case>
+
+<case>
+  <desc>A - box with 2 symmetric holes </desc>
+  <a>    POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), 
+  (60 180, 20 180, 20 140, 60 140, 60 180), 
+  (180 60, 140 60, 140 20, 180 20, 180 60))
+	 </a>
+<test><op name="getCentroid" arg1="A" >   POINT (100 100)   </op></test>
+</case>
+
+<case>
+  <desc>mA - symmetric angles</desc>
+  <a>    MULTIPOLYGON (((0 40, 0 140, 140 140, 140 120, 20 120, 20 40, 0 40)), 
+  ((0 0, 0 20, 120 20, 120 100, 140 100, 140 0, 0 0))) 
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (70 70)   </op></test>
+</case>
+
+<case>
+  <desc>GC - two adjacent polygons (showing that centroids are additive) </desc>
+  <a>    GEOMETRYCOLLECTION (POLYGON ((0 200, 20 180, 20 140, 60 140, 200 0, 0 0, 0 200)), 
+  POLYGON ((200 200, 0 200, 20 180, 60 180, 60 140, 200 0, 200 200))) 
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (103 98)   </op></test>
+</case>
+
+<case>
+  <desc>GC - heterogeneous collection of lines, points</desc>
+  <a>    GEOMETRYCOLLECTION (LINESTRING (80 0, 80 120, 120 120, 120 0), 
+  MULTIPOINT (20 60, 40 80, 60 60))
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (100 69)   </op></test>
+</case>
+
+<case>
+  <desc>GC - heterogeneous collection of polygons, line</desc>
+  <a>    GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), 
+  LINESTRING (80 0, 80 80, 120 40)) 
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (20 20)   </op></test>
+</case>
+
+<case>
+  <desc>GC - heterogeneous collection of polygons, lines, points</desc>
+  <a>    GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), 
+  LINESTRING (80 0, 80 80, 120 40), 
+  MULTIPOINT (20 60, 40 80, 60 60))
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (20 20)   </op></test>
+</case>
+
+<case>
+  <desc>GC - overlapping polygons </desc>
+  <a>    GEOMETRYCOLLECTION (POLYGON ((20 100, 20 -20, 60 -20, 60 100, 20 100)), 
+  POLYGON ((-20 60, 100 60, 100 20, -20 20, -20 60)))
+	</a>
+<test><op name="getCentroid" arg1="A" >    POINT (40 40)   </op></test>
+</case>
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestConvexHull-big.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestConvexHull-big.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestConvexHull-big.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,17 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>Big convex hull</desc>
+  <a>
+    MULTIPOINT(-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (-1000000000000000000000000 -1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, -1000000000000000000000000 -1000000000000000000000000))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestConvexHull.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestConvexHull.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestConvexHull.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,181 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>Several points collinear and overlapping</desc>
+  <a>
+    MULTIPOINT(130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    LINESTRING(130 240, 650 240)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Convex hull</desc>
+  <a>
+    POLYGON(
+      (40 60, 420 60, 420 320, 40 320, 40 60), 
+      (200 140, 160 220, 260 200, 200 140))
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (40 60, 40 320, 420 320, 420 60, 40 60))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Convex hull</desc>
+  <a>
+    POLYGON(
+      (10 10, 100 10, 100 100, 10 100, 10 10))
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (10 10, 10 100, 100 100, 100 10, 10 10))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Point</desc>
+  <a>
+    POINT(20 20)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POINT(20 20)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Horizontal Line</desc>
+  <a>
+    LINESTRING(30 220, 240 220, 240 220)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    LINESTRING(30 220, 240 220)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Vertical Line</desc>
+  <a>
+    LINESTRING(110 290, 110 100, 110 100)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    LINESTRING(110 290, 110 100)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Spiral</desc>
+  <a>
+    LINESTRING(120 230, 120 200, 150 180, 180 220, 160 260, 90 250, 80 190, 140 110, 230 150, 
+    240 230, 180 320, 60 310, 40 160, 140 50, 280 140)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (140 50, 40 160, 60 310, 180 320, 240 230, 280 140, 140 50))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Starlike Polygon</desc>
+  <a>
+    POLYGON(
+      (200 360, 230 210, 100 190, 270 150, 360 10, 320 200, 490 230, 280 240, 200 360), 
+      (220 300, 250 200, 150 190, 290 150, 330 70, 310 210, 390 230, 280 230, 220 300))
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (360 10, 100 190, 200 360, 490 230, 360 10))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Most of the points in one area</desc>
+  <a>
+    MULTIPOINT(70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 
+    370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 
+    370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 
+    410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (70 50, 70 340, 420 340, 430 50, 70 50))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Multipoint</desc>
+  <a>
+    MULTIPOINT(140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 
+    220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 
+    260 110, 170 130)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (250 50, 110 140, 100 260, 140 350, 300 370, 450 310, 510 140, 380 80, 250 50))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>GeometryCollection</desc>
+  <a>
+    GEOMETRYCOLLECTION(
+      POINT(110 300), 
+      POINT(100 110), 
+      POINT(130 210), 
+      POINT(150 210), 
+      POINT(150 180), 
+      POINT(130 170), 
+      POINT(140 190), 
+      POINT(130 200), 
+      LINESTRING(240 50, 210 120, 270 80, 250 140, 330 70, 300 160, 340 130, 340 130), 
+      POLYGON(
+        (210 340, 220 260, 150 270, 230 220, 230 140, 270 210, 360 240, 260 250, 260 280, 
+        240 270, 210 340), 
+        (230 270, 230 250, 200 250, 240 220, 240 190, 260 220, 290 230, 250 230, 230 270)))
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (240 50, 100 110, 110 300, 210 340, 360 240, 330 70, 240 50))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Collinear L</desc>
+  <a>
+    MULTIPOINT(50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 
+    210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320)
+  </a>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (50 120, 50 320, 140 320, 210 180, 210 120, 50 120))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionAA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionAA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionAA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,633 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>AA - simple polygons</desc>
+  <a>
+    POLYGON(
+      (10 10, 100 10, 100 100, 10 100, 10 10))
+  </a>
+  <b>
+    POLYGON(
+      (50 50, 200 50, 200 200, 50 200, 50 50))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POLYGON(
+      (50 50, 50 100, 100 100, 100 50, 50 50))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (10 10, 10 100, 50 100, 50 200, 200 200, 200 50, 100 50, 100 10, 10 10))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)), 
+      (
+        (50 100, 50 200, 200 200, 200 50, 100 50, 100 100, 50 100)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - A with hole intersecting B</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 160, 160 160, 160 20, 20 20), 
+      (140 140, 40 140, 40 40, 140 40, 140 140))
+  </a>
+  <b>
+    POLYGON(
+      (80 100, 220 100, 220 240, 80 240, 80 100))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POLYGON(
+      (80 140, 80 160, 160 160, 160 100, 140 100, 140 140, 80 140))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), 
+      (80 100, 80 140, 40 140, 40 40, 140 40, 140 100, 80 100))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, 
+      160 20, 20 20))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, 
+        160 20, 20 20)), 
+      (
+        (80 100, 80 140, 140 140, 140 100, 80 100)), 
+      (
+        (80 160, 80 240, 220 240, 220 100, 160 100, 160 160, 80 160)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - simple polygons #2</desc>
+  <a>
+    POLYGON(
+      (20 340, 330 380, 50 40, 20 340))
+  </a>
+  <b>
+    POLYGON(
+      (210 320, 140 270, 0 270, 140 220, 210 320))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POLYGON(
+      (27 270, 140 270, 210 320, 140 220, 28 260, 27 270))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (20 340, 330 380, 50 40, 28 260, 0 270, 27 270, 20 340))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)), 
+      (
+        (27 270, 28 260, 0 270, 27 270)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - simple polygons intersecting in P, L and A</desc>
+  <a>
+    POLYGON((0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0))
+  </a>
+  <b>
+    POLYGON((220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(110 260), 
+      LINESTRING(110 0, 110 60), 
+      POLYGON(
+        (110 100, 40 140, 110 180, 180 140, 110 100)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), 
+      (110 260, 40 220, 110 180, 180 220, 110 260), 
+      (110 100, 40 60, 110 60, 180 60, 110 100))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60, 
+      110 60, 110 0))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POLYGON(
+      (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), 
+      (110 260, 40 220, 110 180, 180 220, 110 260), 
+      (110 180, 40 140, 110 100, 180 140, 110 180), 
+      (110 100, 40 60, 110 60, 180 60, 110 100))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - simple polygons with two touching holes in their symDifference</desc>
+  <a>
+    POLYGON(
+      (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, 
+      0 0))
+  </a>
+  <b>
+    POLYGON(
+      (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, 
+      230 0))
+  </b>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POLYGON(
+      (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0), 
+      (120 100, 50 50, 120 50, 190 50, 120 100), 
+      (120 100, 190 150, 120 150, 50 150, 120 100))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AmA - A simple, symDiff contains inversion</desc>
+  <a>
+    POLYGON(
+      (0 0, 210 0, 210 230, 0 230, 0 0))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (40 20, 0 0, 20 40, 60 60, 40 20)), 
+      (
+        (60 90, 60 60, 90 60, 90 90, 60 90)), 
+      (
+        (70 120, 90 90, 100 120, 70 120)), 
+      (
+        (120 70, 90 90, 120 100, 120 70)))
+  </b>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POLYGON(
+      (0 0, 0 230, 210 230, 210 0, 0 0), 
+      (0 0, 40 20, 60 60, 20 40, 0 0), 
+      (60 60, 90 60, 90 90, 60 90, 60 60), 
+      (90 90, 120 70, 120 100, 90 90), 
+      (90 90, 100 120, 70 120, 90 90))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AmA - A simple, B connected multiPolygon touching A at vertex</desc>
+  <a>
+    POLYGON(
+      (0 0, 340 0, 340 300, 0 300, 0 0))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (40 20, 0 0, 20 40, 60 60, 40 20)), 
+      (
+        (60 100, 60 60, 100 60, 100 100, 60 100)))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (40 20, 0 0, 20 40, 60 60, 40 20)), 
+      (
+        (60 60, 60 100, 100 100, 100 60, 60 60)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POLYGON(
+      (0 0, 0 300, 340 300, 340 0, 0 0), 
+      (0 0, 40 20, 60 60, 20 40, 0 0), 
+      (60 60, 100 60, 100 100, 60 100, 60 60))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AmA - A simple, B connected multiPolygon touching A at interior of edge</desc>
+  <a>
+    POLYGON(
+      (0 0, 120 0, 120 120, 0 120, 0 0))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (60 20, 0 20, 60 60, 60 20)), 
+      (
+        (60 100, 60 60, 100 60, 100 100, 60 100)))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (60 20, 0 20, 60 60, 60 20)), 
+      (
+        (60 60, 60 100, 100 100, 100 60, 60 60)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (0 20, 0 120, 120 120, 120 0, 0 0, 0 20))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), 
+      (0 20, 60 20, 60 60, 0 20), 
+      (60 60, 100 60, 100 100, 60 100, 60 60))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POLYGON(
+      (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), 
+      (0 20, 60 20, 60 60, 0 20), 
+      (60 60, 100 60, 100 100, 60 100, 60 60))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - simple polygons with holes</desc>
+  <a>
+    POLYGON(
+      (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), 
+      (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240))
+  </a>
+  <b>
+    POLYGON(
+      (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), 
+      (290 240, 240 200, 240 110, 290 80, 330 170, 290 240))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POLYGON(
+      (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250, 
+      263 218, 240 200, 240 110, 251 104))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226, 
+        140 240, 80 190, 90 100, 160 70, 176 89, 217 57)), 
+      (
+        (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330, 
+        380 250, 380 50, 250 30, 217 57)), 
+      (
+        (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)), 
+      (
+        (172 226, 210 210, 210 130, 176 89, 150 110, 150 170, 172 226)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - simple polygons with hole touching shell</desc>
+  <a>
+    POLYGON ((20 0, 20 160, 200 160, 200 0, 20 0))
+  </a>
+  <b>
+    POLYGON ((220 80, 0 80, 0 240, 220 240, 220 80), 
+  	(100 80, 120 120, 80 120, 100 80))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POLYGON ((20 80, 20 160, 200 160, 200 80, 100 80, 20 80), 
+  (100 80, 120 120, 80 120, 100 80))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON ((20 0, 20 80, 0 80, 0 240, 220 240, 220 80, 200 80, 200 0, 20 0))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), 
+  ((100 80, 80 120, 120 120, 100 80)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), 
+  ((200 80, 200 160, 20 160, 20 80, 0 80, 0 240, 220 240, 220 80, 200 80)), 
+  ((100 80, 80 120, 120 120, 100 80)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mAmA - complex polygons touching and overlapping</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, 
+        200 200, 220 200, 220 340, 120 340)), 
+      (
+        (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 
+        220 120, 220 100, 360 100, 360 200)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (100 220, 100 200, 300 200, 300 220, 100 220)), 
+      (
+        (280 180, 280 160, 300 160, 300 180, 280 180)), 
+      (
+        (220 140, 220 120, 240 120, 240 140, 220 140)), 
+      (
+        (180 220, 160 240, 200 240, 180 220)))
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTILINESTRING(
+      (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, 
+      200 200, 220 200, 220 340, 120 340), 
+      (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 
+      220 120, 220 100, 360 100, 360 200))
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (220 100, 120 200, 120 340, 220 340, 360 200, 360 100, 220 100))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(200 240), 
+      LINESTRING(300 200, 220 200), 
+      LINESTRING(280 180, 300 180), 
+      LINESTRING(300 180, 300 160), 
+      LINESTRING(300 160, 280 160), 
+      LINESTRING(220 140, 240 140), 
+      LINESTRING(240 120, 220 120), 
+      POLYGON(
+        (120 200, 120 220, 140 220, 140 200, 120 200)), 
+      POLYGON(
+        (160 200, 160 220, 180 220, 180 200, 160 200)), 
+      POLYGON(
+        (180 240, 180 220, 160 240, 180 240)), 
+      POLYGON(
+        (200 200, 200 220, 220 220, 220 200, 200 200)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 
+      220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, 
+      140 200, 120 200, 100 200, 100 220, 120 220), 
+      (200 240, 200 280, 180 280, 180 240, 200 240), 
+      (200 240, 180 220, 200 220, 200 240), 
+      (160 240, 160 280, 140 280, 140 220, 160 220, 160 240), 
+      (240 120, 300 120, 300 140, 240 140, 240 120))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, 
+        160 240, 160 280, 140 280, 140 220, 120 220)), 
+      (
+        (160 220, 160 240, 180 220, 160 220)), 
+      (
+        (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140, 
+        220 140, 220 160, 280 160, 300 160, 300 180, 280 180, 220 180, 220 200, 300 200)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, 
+        160 240, 160 280, 140 280, 140 220, 120 220)), 
+      (
+        (120 220, 120 200, 100 200, 100 220, 120 220)), 
+      (
+        (140 200, 140 220, 160 220, 160 200, 140 200)), 
+      (
+        (160 220, 160 240, 180 220, 160 220)), 
+      (
+        (180 200, 180 220, 200 220, 200 200, 180 200)), 
+      (
+        (180 220, 180 240, 200 240, 180 220)), 
+      (
+        (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140, 
+        220 160, 280 160, 280 180, 220 180, 220 200), 
+        (240 120, 300 120, 300 140, 240 140, 240 120)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mAmA - complex polygons touching</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (100 200, 100 180, 120 180, 120 200, 100 200)), 
+      (
+        (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, 
+        160 220, 220 220, 220 240, 60 240), 
+        (80 220, 80 160, 140 160, 140 220, 80 220)), 
+      (
+        (280 220, 240 180, 260 160, 300 200, 280 220)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (80 220, 80 160, 140 160, 140 220, 80 220), 
+        (100 200, 100 180, 120 180, 120 200, 100 200)), 
+      (
+        (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, 
+        220 140, 320 140, 320 240, 220 240), 
+        (240 220, 240 160, 300 160, 300 220, 240 220)))
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTILINESTRING(
+      (100 200, 100 180, 120 180, 120 200, 100 200), 
+      (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, 
+      160 220, 220 220, 220 240, 60 240), 
+      (80 220, 80 160, 140 160, 140 220, 80 220), 
+      (280 220, 240 180, 260 160, 300 200, 280 220))
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (60 140, 60 240, 220 240, 280 220, 300 200, 260 160, 220 140, 60 140))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(240 180), 
+      POINT(260 160), 
+      POINT(280 220), 
+      POINT(300 200), 
+      LINESTRING(100 200, 100 180), 
+      LINESTRING(100 180, 120 180), 
+      LINESTRING(120 180, 120 200), 
+      LINESTRING(120 200, 100 200), 
+      LINESTRING(220 140, 220 160), 
+      LINESTRING(220 160, 160 160), 
+      LINESTRING(160 160, 160 180), 
+      LINESTRING(160 180, 200 180), 
+      LINESTRING(200 200, 160 200), 
+      LINESTRING(160 200, 160 220), 
+      LINESTRING(160 220, 220 220), 
+      LINESTRING(220 220, 220 240), 
+      LINESTRING(80 220, 80 160), 
+      LINESTRING(80 160, 140 160), 
+      LINESTRING(140 160, 140 220), 
+      LINESTRING(140 220, 80 220))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), 
+        (200 200, 200 180, 220 180, 220 200, 200 200), 
+        (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), 
+      (
+        (240 180, 280 220, 300 200, 260 160, 240 180)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (100 180, 100 200, 120 200, 120 180, 100 180)), 
+      (
+        (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180, 
+        160 180, 160 160, 220 160, 220 140), 
+        (80 220, 80 160, 140 160, 140 220, 80 220)), 
+      (
+        (240 180, 280 220, 300 200, 260 160, 240 180)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), 
+        (200 200, 200 180, 220 180, 220 200, 200 200), 
+        (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), 
+      (
+        (240 180, 280 220, 300 200, 260 160, 240 180)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - hole intersecting boundary to produce line</desc>
+  <a>
+    POLYGON(
+      (60 160, 140 160, 140 60, 60 60, 60 160))
+  </a>
+  <b>
+    POLYGON(
+      (160 160, 100 160, 100 100, 160 100, 160 160), 
+      (140 140, 120 140, 120 120, 140 120, 140 140))
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    LINESTRING(60 160, 140 160, 140 60, 60 60, 60 160)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (60 60, 60 160, 140 160, 140 60, 60 60))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(140 140, 140 120), 
+      POLYGON(
+        (100 160, 140 160, 140 140, 120 140, 120 120, 140 120, 140 100, 100 100, 100 160)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (60 160, 100 160, 140 160, 160 160, 160 100, 140 100, 140 60, 60 60, 60 160))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), 
+      (
+        (140 140, 140 120, 120 120, 120 140, 140 140)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), 
+      (
+        (140 140, 140 160, 160 160, 160 100, 140 100, 140 120, 120 120, 120 140, 140 140)))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionAAPrec.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionAAPrec.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionAAPrec.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,828 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>AA - sliver triangle, cut by polygon</desc>
+  <a>
+    POLYGON(
+      (10 10, 100 10, 10 11, 10 10))
+  </a>
+  <b>
+    POLYGON(
+      (90 0, 200 0, 200 200, 90 200, 90 0))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(90 10, 100 10)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (90 10, 10 10, 10 11, 90 10)), 
+      (
+        (90 10, 90 200, 200 200, 200 0, 90 0, 90 10)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (90 10, 10 10, 10 11, 90 10))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (90 10, 10 10, 10 11, 90 10)), 
+      (
+        (90 10, 90 200, 200 200, 200 0, 90 0, 90 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - polygon with outward sliver, cut by polygon</desc>
+  <a>
+    POLYGON(
+      (100 10, 10 10, 90 11, 90 20, 100 20, 100 10))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 0 20, 0 0, 20 0, 20 20))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(20 10, 10 10)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - narrow wedge in polygon</desc>
+  <a>
+    POLYGON((10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10))
+  </a>
+  <b>
+    POLYGON((60 40, 40 40, 40 20, 60 20, 60 40))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POLYGON(
+      (50 40, 50 20, 40 20, 40 30, 40 40, 50 40))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (50 20, 50 10, 10 10, 10 30, 40 30, 10 31, 10 50, 50 50, 50 40, 
+      60 40, 60 20, 50 20))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), 
+      (
+        (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), 
+      (
+        (50 20, 50 40, 60 40, 60 20, 50 20)), 
+      (
+        (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - hole close to shell</desc>
+  <a>
+    POLYGON(
+      (10 100, 10 10, 100 10, 100 100, 10 100), 
+      (90 90, 11 90, 10 10, 90 11, 90 90))
+  </a>
+  <b>
+    POLYGON(
+      (0 30, 0 0, 30 0, 30 30, 0 30))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (10 30, 10 10), 
+      (10 10, 30 10))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mAA - shells close together</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (0 0, 100 0, 100 20, 0 20, 0 0)), 
+      (
+        (0 40, 0 21, 100 20, 100 40, 0 40)))
+  </a>
+  <b>
+    POLYGON(
+      (110 30, 90 30, 90 10, 110 10, 110 30))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(100 20, 90 20), 
+      POLYGON(
+        (100 20, 100 10, 90 10, 90 20, 90 30, 100 30, 100 20)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (100 10, 100 0, 0 0, 0 20, 90 20, 0 21, 0 40, 100 40, 100 30, 
+      110 30, 110 10, 100 10))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), 
+      (
+        (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), 
+      (
+        (100 10, 100 20, 100 30, 110 30, 110 10, 100 10)), 
+      (
+        (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - A sliver triangle cutting all the way across B</desc>
+  <a>
+    POLYGON(
+      (100 10, 0 10, 100 11, 100 10))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 0 20, 0 0, 20 0, 20 20))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(20 10, 0 10)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (100 10, 20 10, 100 11, 100 10)), 
+      (
+        (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (100 10, 20 10, 100 11, 100 10))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (100 10, 20 10, 100 11, 100 10)), 
+      (
+        (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - A polygon with sliver cutting all the way across B</desc>
+  <a>
+    POLYGON(
+      (100 10, 0 10, 90 11, 90 20, 100 20, 100 10))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 0 20, 0 0, 20 0, 20 20))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(20 10, 0 10)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (100 10, 20 10, 90 11, 90 20, 100 20, 100 10)), 
+      (
+        (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - hole close to shell, B coincident with A</desc>
+  <a>
+    POLYGON(
+      (10 100, 10 10, 100 10, 100 100, 10 100), 
+      (90 90, 11 90, 10 10, 90 11, 90 90))
+  </a>
+  <b>
+    POLYGON(
+      (10 30, 10 0, 30 10, 30 30, 10 30))
+  </b>
+<test>
+  <op name="relate" arg3="212111212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (10 30, 10 10), 
+      (10 10, 30 10))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (10 10, 10 30, 30 30, 30 10, 10 0, 10 10)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (10 10, 10 30, 30 30, 30 10, 10 0, 10 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - A hole close to shell, B coincident with A</desc>
+  <a>
+    POLYGON(
+      (10 100, 10 10, 100 10, 100 100, 10 100), 
+      (90 90, 11 90, 10 10, 90 11, 90 90))
+  </a>
+  <b>
+    POLYGON(
+      (10 30, 10 10, 30 10, 30 30, 10 30))
+  </b>
+<test>
+  <op name="relate" arg3="212111212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (10 30, 10 10), 
+      (10 10, 30 10))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (10 10, 10 30, 30 30, 30 10, 10 10)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (10 10, 10 30, 30 30, 30 10, 10 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - B hole close to shell, A coincident with B</desc>
+  <a>
+    POLYGON(
+      (10 30, 10 10, 30 10, 30 30, 10 30))
+  </a>
+  <b>
+    POLYGON(
+      (10 100, 10 10, 100 10, 100 100, 10 100), 
+      (90 90, 11 90, 10 10, 90 11, 90 90))
+  </b>
+<test>
+  <op name="relate" arg3="212111212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (10 30, 10 10), 
+      (10 10, 30 10))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (10 10, 10 30, 30 30, 30 10, 10 10)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (10 10, 10 30, 30 30, 30 10, 10 10))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), 
+      (
+        (10 10, 10 30, 30 30, 30 10, 10 10)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - B sliver crossing A triangle in line segment with length &lt; 1</desc>
+  <a>
+    POLYGON(
+      (0 0, 200 0, 0 198, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (280 60, 139 60, 280 70, 280 60))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(139 60)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (139 60, 200 0, 0 0, 0 198, 139 60)), 
+      (
+        (280 60, 139 60, 280 70, 280 60)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (139 60, 200 0, 0 0, 0 198, 139 60))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (139 60, 200 0, 0 0, 0 198, 139 60)), 
+      (
+        (280 60, 139 60, 280 70, 280 60)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - sliver triangles, at angle to each other</desc>
+  <a>
+    POLYGON(
+      (0 0, 140 10, 0 20, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (280 0, 139 10, 280 1, 280 0))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(140 10, 139 10)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - sliver triangle with multiple intersecting boxes</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (1 4, 1 1, 2 1, 2 4, 1 4)), 
+      (
+        (3 4, 3 1, 4 1, 4 4, 3 4)), 
+      (
+        (5 4, 5 1, 6 1, 6 4, 5 4)), 
+      (
+        (7 4, 7 1, 8 1, 8 4, 7 4)), 
+      (
+        (9 4, 9 1, 10 1, 10 4, 9 4)))
+  </a>
+  <b>
+    POLYGON(
+      (0 2, 11 3, 11 2, 0 2))
+  </b>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (1 1, 1 4, 10 4, 10 1, 1 1))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(1 2, 2 2), 
+      LINESTRING(3 2, 4 2), 
+      POLYGON(
+        (6 3, 6 2, 5 2, 6 3)), 
+      POLYGON(
+        (7 2, 7 3, 8 3, 8 2, 7 2)), 
+      POLYGON(
+        (9 2, 9 3, 10 3, 10 2, 9 2)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+GEOMETRYCOLLECTION(
+  LINESTRING(0 2, 1 2), 
+  LINESTRING(2 2, 3 2), 
+  LINESTRING(4 2, 5 2), 
+  POLYGON(
+    (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), 
+  POLYGON(
+    (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), 
+  POLYGON(
+    (5 2, 5 4, 6 4, 6 3, 7 3, 7 4, 8 4, 8 3, 9 3, 
+    9 4, 10 4, 10 3, 11 3, 11 2, 10 2, 10 1, 9 1, 9 2, 8 2, 
+    8 1, 7 1, 7 2, 6 2, 6 1, 5 1, 5 2)))  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), 
+      (
+        (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), 
+      (
+        (5 2, 5 4, 6 4, 6 3, 5 2)), 
+      (
+        (6 2, 6 1, 5 1, 5 2, 6 2)), 
+      (
+        (7 3, 7 4, 8 4, 8 3, 7 3)), 
+      (
+        (8 2, 8 1, 7 1, 7 2, 8 2)), 
+      (
+        (9 3, 9 4, 10 4, 10 3, 9 3)), 
+      (
+        (10 2, 10 1, 9 1, 9 2, 10 2)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+GEOMETRYCOLLECTION(
+  LINESTRING(0 2, 1 2), 
+  LINESTRING(2 2, 3 2), 
+  LINESTRING(4 2, 5 2), 
+  POLYGON(
+    (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), 
+  POLYGON(
+    (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), 
+  POLYGON(
+    (5 2, 5 4, 6 4, 6 3, 5 2)), 
+  POLYGON(
+    (6 2, 6 1, 5 1, 5 2, 6 2)), 
+  POLYGON(
+    (6 2, 6 3, 7 3, 7 2, 6 2)), 
+  POLYGON(
+    (7 3, 7 4, 8 4, 8 3, 7 3)), 
+  POLYGON(
+    (8 2, 8 1, 7 1, 7 2, 8 2)), 
+  POLYGON(
+    (8 2, 8 3, 9 3, 9 2, 8 2)), 
+  POLYGON(
+    (9 3, 9 4, 10 4, 10 3, 9 3)), 
+  POLYGON(
+    (10 2, 10 1, 9 1, 9 2, 10 2)), 
+  POLYGON(
+    (10 2, 10 3, 11 3, 11 2, 10 2)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - Polygon with hole with outward sliver, cut by polygon</desc>
+  <a>
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 40, 20 40), 
+      (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120))
+  </a>
+  <b>
+    POLYGON(
+      (200 160, 160 160, 160 80, 200 80, 200 160))
+  </b>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 40, 20 40))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(180 120, 160 120), 
+      POLYGON(
+        (180 160, 180 120, 180 80, 160 80, 160 120, 160 160, 180 160)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), 
+      (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, 
+      20 40), 
+      (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, 
+        20 40), 
+        (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)), 
+      (
+        (180 120, 180 160, 200 160, 200 80, 180 80, 180 120)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - Polygon with hole with outward sliver, cut by line</desc>
+  <a>
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 40, 20 40), 
+      (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120))
+  </a>
+  <b>
+    LINESTRING(160 140, 160 100)
+  </b>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 40, 20 40))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (160 140, 160 120), 
+      (160 120, 160 100))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), 
+      (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), 
+      (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), 
+      (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - Polygon with inward sliver touching hole, cut by polygon</desc>
+  <a>
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), 
+      (140 160, 80 120, 140 80, 140 160))
+  </a>
+  <b>
+    POLYGON(
+      (200 160, 150 160, 150 80, 200 80, 200 160))
+  </b>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 40, 20 40))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (180 160, 180 120, 150 120, 150 160, 180 160)), 
+      (
+        (150 120, 180 119, 180 80, 150 80, 150 120)))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), 
+      (140 160, 80 120, 140 80, 140 120, 140 160))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POLYGON(
+      (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, 
+      20 40), 
+      (140 160, 80 120, 140 80, 140 120, 140 160))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, 
+        20 40), 
+        (140 160, 80 120, 140 80, 140 120, 140 160)), 
+      (
+        (150 120, 180 120, 180 160, 200 160, 200 80, 180 80, 180 119, 150 120)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - intersecting slivers, dimensional collapse</desc>
+  <a>
+    POLYGON(
+      (83 33, 62 402, 68 402, 83 33))
+  </a>
+  <b>
+    POLYGON(
+      (78 39, 574 76, 576 60, 78 39))
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    LINESTRING(83 33, 62 402, 68 402, 83 33)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (83 33, 62 402, 68 402, 83 33))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(83 39)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(78 39, 83 39), 
+      LINESTRING(83 33, 83 39), 
+      POLYGON(
+        (83 39, 62 402, 68 402, 83 39)), 
+      POLYGON(
+        (83 39, 574 76, 576 60, 83 39)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(83 33, 83 39), 
+      POLYGON(
+        (83 39, 62 402, 68 402, 83 39)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(78 39, 83 39), 
+      LINESTRING(83 33, 83 39), 
+      POLYGON(
+        (83 39, 62 402, 68 402, 83 39)), 
+      POLYGON(
+        (83 39, 574 76, 576 60, 83 39)))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionLA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionLA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionLA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,522 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LA - A and B simple</desc>
+  <a>
+    LINESTRING(240 190, 120 120)
+  </a>
+  <b>
+    POLYGON(
+      (110 240, 50 80, 240 70, 110 240))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(177 153, 120 120)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(240 190, 177 153), 
+      POLYGON(
+        (177 153, 240 70, 50 80, 110 240, 177 153)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    LINESTRING(240 190, 177 153)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(240 190, 177 153), 
+      POLYGON(
+        (177 153, 240 70, 50 80, 110 240, 177 153)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - A intersects B-hole</desc>
+  <a>
+    LINESTRING(0 100, 100 100, 200 200)
+  </a>
+  <b>
+    POLYGON(
+      (30 240, 260 30, 30 30, 30 240), 
+      (80 140, 80 80, 140 80, 80 140))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (30 100, 80 100), 
+      (110 110, 140 140))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(0 100, 30 100), 
+      LINESTRING(80 100, 100 100, 110 110), 
+      LINESTRING(140 140, 200 200), 
+      POLYGON(
+        (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), 
+        (80 140, 80 100, 80 80, 140 80, 110 110, 80 140)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (0 100, 30 100), 
+      (80 100, 100 100, 110 110), 
+      (140 140, 200 200))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(0 100, 30 100), 
+      LINESTRING(80 100, 100 100, 110 110), 
+      LINESTRING(140 140, 200 200), 
+      POLYGON(
+        (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), 
+        (80 140, 80 100, 80 80, 140 80, 110 110, 80 140)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - A intersects B-hole #2</desc>
+  <a>
+    LINESTRING(40 340, 200 250, 120 180, 160 110, 270 40)
+  </a>
+  <b>
+    POLYGON(
+      (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), 
+      (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (114 298, 200 250, 173 226), 
+      (182 96, 225 68))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(40 340, 114 298), 
+      LINESTRING(173 226, 120 180, 160 110, 182 96), 
+      LINESTRING(225 68, 270 40), 
+      POLYGON(
+        (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, 
+        114 298), 
+        (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (40 340, 114 298), 
+      (173 226, 120 180, 160 110, 182 96), 
+      (225 68, 270 40))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(40 340, 114 298), 
+      LINESTRING(173 226, 120 180, 160 110, 182 96), 
+      LINESTRING(225 68, 270 40), 
+      POLYGON(
+        (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, 
+        114 298), 
+        (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mLmA - A and B complex, disjoint</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (60 320, 60 80, 300 80, 60 320), 
+        (80 280, 80 100, 260 100, 80 280)), 
+      (
+        (120 160, 140 160, 140 140, 120 160)))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (100 240, 100 180, 160 180, 160 120, 220 120), 
+      (40 360, 40 60, 340 60, 40 360, 40 20), 
+      (120 120, 120 140, 100 140, 100 120, 140 120))
+  </b>
+<test>
+  <op name="convexhull" pattern="FFFFFFFFF" arg1="A">
+    POLYGON(
+      (60 80, 60 320, 300 80, 60 80))
+  </op>
+</test>
+<test>
+  <op name="getboundary" pattern="FFFFFFFFF" arg1="A">
+    MULTILINESTRING(
+      (60 320, 60 80, 300 80, 60 320), 
+      (80 280, 80 100, 260 100, 80 280), 
+      (120 160, 140 160, 140 140, 120 160))
+  </op>
+</test>
+<test>
+  <op name="symdifference" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), 
+      LINESTRING(40 360, 40 60), 
+      LINESTRING(40 60, 340 60, 40 360), 
+      LINESTRING(40 60, 40 20), 
+      LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), 
+      LINESTRING(120 120, 140 120), 
+      POLYGON(
+        (60 320, 300 80, 60 80, 60 320), 
+        (80 280, 80 100, 260 100, 80 280)), 
+      POLYGON(
+        (120 160, 140 160, 140 140, 120 160)))
+  </op>
+</test>
+<test>
+  <op name="difference" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (60 320, 300 80, 60 80, 60 320), 
+        (80 280, 80 100, 260 100, 80 280)), 
+      (
+        (120 160, 140 160, 140 140, 120 160)))
+  </op>
+</test>
+<test>
+  <op name="union" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), 
+      LINESTRING(40 360, 40 60), 
+      LINESTRING(40 60, 340 60, 40 360), 
+      LINESTRING(40 60, 40 20), 
+      LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), 
+      LINESTRING(120 120, 140 120), 
+      POLYGON(
+        (60 320, 300 80, 60 80, 60 320), 
+        (80 280, 80 100, 260 100, 80 280)), 
+      POLYGON(
+        (120 160, 140 160, 140 140, 120 160)))
+  </op>
+</test>
+<test>
+  <op name="intersection" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mLmA - A and B complex, overlapping and touching #1</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (60 260, 60 120, 220 120, 220 260, 60 260), 
+        (80 240, 80 140, 200 140, 200 240, 80 240)), 
+      (
+        (100 220, 100 160, 180 160, 180 220, 100 220), 
+        (120 200, 120 180, 160 180, 160 200, 120 200)))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (40 260, 240 260, 240 240, 40 240, 40 220, 240 220), 
+      (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320))
+  </b>
+  <test>
+    <op name="getboundary" arg1="A">
+      MULTILINESTRING(
+        (60 260, 60 120, 220 120, 220 260, 60 260), 
+        (80 240, 80 140, 200 140, 200 240, 80 240), 
+        (100 220, 100 160, 180 160, 180 220, 100 220), 
+        (120 200, 120 180, 160 180, 160 200, 120 200))
+          </op>
+  </test>
+  <test>
+    <op name="convexhull" arg1="A">
+      POLYGON(
+        (60 120, 60 260, 220 260, 220 120, 60 120))
+          </op>
+  </test>
+  <test>
+    <op name="intersection" arg1="A" arg2="B">
+      MULTILINESTRING(
+        (220 260, 140 260), 
+        (140 260, 120 260), 
+        (120 260, 60 260), 
+        (200 240, 140 240), 
+        (140 240, 120 240), 
+        (120 240, 80 240), 
+        (180 220, 140 220), 
+        (140 220, 120 220), 
+        (120 220, 100 220), 
+        (120 200, 120 180), 
+        (220 240, 200 240), 
+        (80 240, 60 240), 
+        (60 220, 80 220), 
+        (200 220, 220 220), 
+        (120 260, 120 240), 
+        (120 220, 120 200), 
+        (120 180, 120 160), 
+        (120 140, 120 120), 
+        (140 120, 140 140), 
+        (140 160, 140 180), 
+        (140 200, 140 220), 
+        (140 240, 140 260))
+          </op>
+  </test>
+  <test>
+    <op name="union" arg1="A" arg2="B">
+      GEOMETRYCOLLECTION(
+        LINESTRING(40 260, 60 260), 
+        LINESTRING(220 260, 240 260, 240 240, 220 240), 
+        LINESTRING(60 240, 40 240, 40 220, 60 220), 
+        LINESTRING(80 220, 100 220), 
+        LINESTRING(180 220, 200 220), 
+        LINESTRING(220 220, 240 220), 
+        LINESTRING(120 300, 120 260), 
+        LINESTRING(120 240, 120 220), 
+        LINESTRING(120 160, 120 140), 
+        LINESTRING(120 120, 120 80), 
+        LINESTRING(120 80, 140 80), 
+        LINESTRING(140 80, 140 120), 
+        LINESTRING(140 140, 140 160), 
+        LINESTRING(140 180, 140 200), 
+        LINESTRING(140 220, 140 240), 
+        LINESTRING(140 260, 140 300), 
+        LINESTRING(120 300, 120 320), 
+        POLYGON(
+          (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, 
+          120 120, 60 120, 60 220, 60 240), 
+          (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, 
+          120 240, 80 240)), 
+        POLYGON(
+          (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), 
+          (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200)))
+          </op>
+  </test>
+  <test>
+    <op name="difference" arg1="A" arg2="B">
+      MULTIPOLYGON(
+        (
+          (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, 
+          120 120, 60 120, 60 220, 60 240), 
+          (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, 
+          120 240, 80 240)), 
+        (
+          (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), 
+          (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200)))
+          </op>
+  </test>
+  <test>
+    <op name="symdifference" arg1="A" arg2="B">
+      GEOMETRYCOLLECTION(
+        LINESTRING(40 260, 60 260), 
+        LINESTRING(220 260, 240 260, 240 240, 220 240), 
+        LINESTRING(60 240, 40 240, 40 220, 60 220), 
+        LINESTRING(80 220, 100 220), 
+        LINESTRING(180 220, 200 220), 
+        LINESTRING(220 220, 240 220), 
+        LINESTRING(120 300, 120 260), 
+        LINESTRING(120 240, 120 220), 
+        LINESTRING(120 160, 120 140), 
+        LINESTRING(120 120, 120 80), 
+        LINESTRING(120 80, 140 80), 
+        LINESTRING(140 80, 140 120), 
+        LINESTRING(140 140, 140 160), 
+        LINESTRING(140 180, 140 200), 
+        LINESTRING(140 220, 140 240), 
+        LINESTRING(140 260, 140 300), 
+        LINESTRING(120 300, 120 320), 
+        POLYGON(
+          (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, 
+          120 120, 60 120, 60 220, 60 240), 
+          (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, 
+          120 240, 80 240)), 
+        POLYGON(
+          (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), 
+          (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200)))
+          </op>
+  </test>
+</case><case>
+  <desc>mLmA - A and B complex, overlapping and touching #2</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (60 320, 60 120, 280 120, 280 320, 60 320), 
+        (120 260, 120 180, 240 180, 240 260, 120 260)), 
+      (
+        (280 400, 320 400, 320 360, 280 360, 280 400)), 
+      (
+        (300 240, 300 220, 320 220, 320 240, 300 240)))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (80 300, 80 160, 260 160, 260 300, 80 300, 80 140), 
+      (220 360, 220 240, 300 240, 300 360))
+  </b>
+<test>
+  <op name="convexhull" pattern="FFFFFFFFF" arg1="A">
+    POLYGON(
+      (60 120, 60 320, 280 400, 320 400, 320 220, 280 120, 60 120))
+  </op>
+</test>
+<test>
+  <op name="getboundary" pattern="FFFFFFFFF" arg1="A">
+    MULTILINESTRING(
+      (60 320, 60 120, 280 120, 280 320, 60 320), 
+      (120 260, 120 180, 240 180, 240 260, 120 260), 
+      (280 400, 320 400, 320 360, 280 360, 280 400), 
+      (300 240, 300 220, 320 220, 320 240, 300 240))
+  </op>
+</test>
+<test>
+  <op name="symdifference" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(220 360, 220 320), 
+      LINESTRING(220 260, 220 240, 240 240), 
+      LINESTRING(280 240, 300 240), 
+      LINESTRING(300 240, 300 360), 
+      POLYGON(
+        (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), 
+        (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), 
+      POLYGON(
+        (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), 
+      POLYGON(
+        (300 240, 320 240, 320 220, 300 220, 300 240)))
+  </op>
+</test>
+<test>
+  <op name="difference" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), 
+        (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), 
+      (
+        (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), 
+      (
+        (300 240, 320 240, 320 220, 300 220, 300 240)))
+  </op>
+</test>
+<test>
+  <op name="union" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(220 360, 220 320), 
+      LINESTRING(220 260, 220 240, 240 240), 
+      LINESTRING(280 240, 300 240), 
+      LINESTRING(300 240, 300 360), 
+      POLYGON(
+        (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), 
+        (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), 
+      POLYGON(
+        (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), 
+      POLYGON(
+        (300 240, 320 240, 320 220, 300 220, 300 240)))
+  </op>
+</test>
+<test>
+  <op name="intersection" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(300 240), 
+      POINT(300 360), 
+      LINESTRING(80 300, 80 160), 
+      LINESTRING(80 160, 260 160, 260 240), 
+      LINESTRING(260 240, 260 300, 220 300), 
+      LINESTRING(220 300, 80 300), 
+      LINESTRING(80 160, 80 140), 
+      LINESTRING(220 320, 220 300), 
+      LINESTRING(220 300, 220 260), 
+      LINESTRING(240 240, 260 240), 
+      LINESTRING(260 240, 280 240))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mLmA - A and B complex, overlapping and touching #3</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (120 180, 60 80, 180 80, 120 180)), 
+      (
+        (100 240, 140 240, 120 220, 100 240)))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (180 260, 120 180, 60 260, 180 260), 
+      (60 300, 60 40), 
+      (100 100, 140 100))
+  </b>
+<test>
+  <op name="convexhull" pattern="FFFFFFFFF" arg1="A">
+    POLYGON(
+      (60 80, 100 240, 140 240, 180 80, 60 80))
+  </op>
+</test>
+<test>
+  <op name="getboundary" pattern="FFFFFFFFF" arg1="A">
+    MULTILINESTRING(
+      (120 180, 60 80, 180 80, 120 180), 
+      (100 240, 140 240, 120 220, 100 240))
+  </op>
+</test>
+<test>
+  <op name="symdifference" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(180 260, 120 180), 
+      LINESTRING(120 180, 60 260), 
+      LINESTRING(60 260, 180 260), 
+      LINESTRING(60 300, 60 260), 
+      LINESTRING(60 260, 60 80), 
+      LINESTRING(60 80, 60 40), 
+      POLYGON(
+        (60 80, 120 180, 180 80, 60 80)), 
+      POLYGON(
+        (100 240, 140 240, 120 220, 100 240)))
+  </op>
+</test>
+<test>
+  <op name="difference" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (60 80, 120 180, 180 80, 60 80)), 
+      (
+        (100 240, 140 240, 120 220, 100 240)))
+  </op>
+</test>
+<test>
+  <op name="union" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(180 260, 120 180), 
+      LINESTRING(120 180, 60 260), 
+      LINESTRING(60 260, 180 260), 
+      LINESTRING(60 300, 60 260), 
+      LINESTRING(60 260, 60 80), 
+      LINESTRING(60 80, 60 40), 
+      POLYGON(
+        (60 80, 120 180, 180 80, 60 80)), 
+      POLYGON(
+        (100 240, 140 240, 120 220, 100 240)))
+  </op>
+</test>
+<test>
+  <op name="intersection" pattern="FFFFFFFFF" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(60 80), 
+      POINT(120 180), 
+      LINESTRING(100 100, 140 100))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionLAPrec.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionLAPrec.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionLAPrec.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,59 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LA - line and sliver intersecting, dimensional collapse</desc>
+  <a>
+    POLYGON(
+      (95 9, 81 414, 87 414, 95 9))
+  </a>
+  <b>
+    LINESTRING(93 13, 96 13)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    LINESTRING(95 9, 81 414, 87 414, 95 9)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (95 9, 81 414, 87 414, 95 9))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(95 13)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(95 9, 95 13), 
+      POLYGON(
+        (95 13, 81 414, 87 414, 95 13)), 
+      LINESTRING(93 13, 95 13), 
+      LINESTRING(95 13, 96 13))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(95 9, 95 13), 
+      POLYGON(
+        (95 13, 81 414, 87 414, 95 13)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      LINESTRING(95 9, 95 13), 
+      POLYGON(
+        (95 13, 81 414, 87 414, 95 13)), 
+      LINESTRING(93 13, 95 13), 
+      LINESTRING(95 13, 96 13))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionLL.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionLL.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionLL.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,375 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LL - A crosses B</desc>
+  <a>
+    LINESTRING(0 0, 100 100)
+  </a>
+  <b>
+    LINESTRING(0 100, 100 0)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(50 50)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (0 0, 50 50), 
+      (0 100, 50 50), 
+      (50 50, 100 100), 
+      (50 50, 100 0))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (0 0, 50 50), 
+      (50 50, 100 100))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (0 0, 50 50), 
+      (0 100, 50 50), 
+      (50 50, 100 100), 
+      (50 50, 100 0))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A shares one segment with B</desc>
+  <a>
+    LINESTRING(0 0, 100 100, 200 0)
+  </a>
+  <b>
+    LINESTRING(0 0, 100 100, 200 200)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    LINESTRING(0 0, 100 100)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (0 0, 100 100), 
+      (100 100, 200 200), 
+      (100 100, 200 0))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    LINESTRING(100 100, 200 0)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (100 100, 200 200), 
+      (100 100, 200 0))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A and B disjoint</desc>
+  <a>
+    LINESTRING(40 360, 40 220, 120 360)
+  </a>
+  <b>
+    LINESTRING(120 340, 60 220, 140 220, 140 360)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(40 360, 120 360)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (40 220, 40 360, 120 360, 40 220))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (40 360, 40 220, 120 360), 
+      (120 340, 60 220, 140 220, 140 360))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    LINESTRING(40 360, 40 220, 120 360)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (40 360, 40 220, 120 360), 
+      (120 340, 60 220, 140 220, 140 360))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A and B intersect frequently</desc>
+  <a>
+    LINESTRING(220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280)
+  </a>
+  <b>
+    LINESTRING(220 240, 140 160, 120 180, 220 280, 200 300, 100 200)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(220 240, 20 280)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (160 180, 20 280, 60 320, 220 240, 160 180))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(113 213), 
+      POINT(133 233), 
+      POINT(137 197), 
+      POINT(153 253), 
+      POINT(157 217), 
+      POINT(177 237), 
+      LINESTRING(180 200, 160 180), 
+      LINESTRING(220 240, 200 220))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (113 213, 20 280), 
+      (133 233, 113 213), 
+      (113 213, 100 200), 
+      (137 197, 113 213), 
+      (153 253, 133 233), 
+      (153 253, 60 320, 40 300, 133 233), 
+      (133 233, 157 217), 
+      (137 197, 157 217), 
+      (160 180, 140 160, 120 180, 137 197), 
+      (160 180, 137 197), 
+      (177 237, 220 280, 200 300, 153 253), 
+      (177 237, 153 253), 
+      (157 217, 177 237), 
+      (157 217, 180 200), 
+      (180 200, 160 180), 
+      (200 220, 177 237), 
+      (200 220, 180 200), 
+      (220 240, 200 220))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (200 220, 177 237), 
+      (177 237, 153 253), 
+      (153 253, 60 320, 40 300, 133 233), 
+      (133 233, 157 217), 
+      (157 217, 180 200), 
+      (160 180, 137 197), 
+      (137 197, 113 213), 
+      (113 213, 20 280))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (200 220, 177 237), 
+      (177 237, 153 253), 
+      (153 253, 60 320, 40 300, 133 233), 
+      (133 233, 157 217), 
+      (157 217, 180 200), 
+      (160 180, 137 197), 
+      (137 197, 113 213), 
+      (113 213, 20 280), 
+      (200 220, 180 200), 
+      (160 180, 140 160, 120 180, 137 197), 
+      (137 197, 157 217), 
+      (157 217, 177 237), 
+      (177 237, 220 280, 200 300, 153 253), 
+      (153 253, 133 233), 
+      (133 233, 113 213), 
+      (113 213, 100 200))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A and B equal</desc>
+  <a>
+    LINESTRING(80 320, 220 320, 220 160, 80 300)
+  </a>
+  <b>
+    LINESTRING(80 320, 220 320, 220 160, 80 300)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(80 320, 80 300)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (220 160, 80 300, 80 320, 220 320, 220 160))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (220 160, 80 300), 
+      (80 320, 220 320), 
+      (220 320, 220 160))
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (220 160, 80 300), 
+      (80 320, 220 320), 
+      (220 320, 220 160))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A and B touch ends</desc>
+  <a>
+    LINESTRING(60 200, 60 260, 140 200)
+  </a>
+  <b>
+    LINESTRING(60 200, 60 140, 140 200)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(60 200, 140 200)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (60 200, 60 260, 140 200, 60 200))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(60 200, 140 200)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (60 200, 60 260, 140 200), 
+      (60 200, 60 140, 140 200))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    LINESTRING(60 200, 60 260, 140 200)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (60 200, 60 260, 140 200), 
+      (60 200, 60 140, 140 200))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - intersecting rings</desc>
+  <a>
+    LINESTRING(180 200, 100 280, 20 200, 100 120, 180 200)
+  </a>
+  <b>
+    LINESTRING(100 200, 220 200, 220 80, 100 80, 100 200)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT EMPTY
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (100 120, 20 200, 100 280, 180 200, 100 120))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(100 120, 180 200)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (100 120, 180 200), 
+      (100 120, 100 200), 
+      (180 200, 100 280, 20 200, 100 120), 
+      (180 200, 220 200, 220 80, 100 80, 100 120), 
+      (100 200, 180 200))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (100 120, 180 200), 
+      (180 200, 100 280, 20 200, 100 120))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (100 120, 180 200), 
+      (100 120, 100 200), 
+      (180 200, 100 280, 20 200, 100 120), 
+      (180 200, 220 200, 220 80, 100 80, 100 120), 
+      (100 200, 180 200))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LrL - LinearRing bug</desc>
+  <a>
+    LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0)
+  </a>
+  <b>
+    LINESTRING( 2 2, 5 5)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT (5 5)
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionLLPrec.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionLLPrec.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionLLPrec.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,28 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LL - narrow V</desc>
+  <a>
+    LINESTRING(0 10, 620 10, 0 11)
+  </a>
+  <b>
+    LINESTRING(400 60, 400 10)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(400 10)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (0 10, 400 10), 
+      (400 10, 620 10, 400 10), 
+      (400 10, 0 11), 
+      (400 60, 400 10))
+  </op>
+</test>
+</case>
+
+</run>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionPA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionPA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionPA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,155 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PA - point contained in simple polygon</desc>
+  <a>
+    POINT(100 100)
+  </a>
+  <b>
+    POLYGON(
+      (50 50, 200 50, 200 200, 50 200, 50 50))
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(100 100)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPmA - points on I, B and E of touching triangles</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (120 320, 180 200, 240 320, 120 320)), 
+      (
+        (180 200, 240 80, 300 200, 180 200)))
+  </a>
+  <b>
+    MULTIPOINT(120 320, 180 260, 180 320, 180 200, 300 200, 200 220)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTILINESTRING(
+      (120 320, 180 200, 240 320, 120 320), 
+      (180 200, 240 80, 300 200, 180 200))
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (240 80, 120 320, 240 320, 300 200, 240 80))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(120 320, 180 200, 180 260, 180 320, 300 200)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(200 220), 
+      POLYGON(
+        (180 200, 120 320, 240 320, 180 200)), 
+      POLYGON(
+        (180 200, 300 200, 240 80, 180 200)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (180 200, 120 320, 240 320, 180 200)), 
+      (
+        (180 200, 300 200, 240 80, 180 200)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(200 220), 
+      POLYGON(
+        (180 200, 120 320, 240 320, 180 200)), 
+      POLYGON(
+        (180 200, 300 200, 240 80, 180 200)))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPmA - points on I, B and E of concentric doughnuts</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (120 80, 420 80, 420 340, 120 340, 120 80), 
+        (160 300, 160 120, 380 120, 380 300, 160 300)), 
+      (
+        (200 260, 200 160, 340 160, 340 260, 200 260), 
+        (240 220, 240 200, 300 200, 300 220, 240 220)))
+  </a>
+  <b>
+    MULTIPOINT(200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 
+    420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTILINESTRING(
+      (120 80, 420 80, 420 340, 120 340, 120 80), 
+      (160 300, 160 120, 380 120, 380 300, 160 300), 
+      (200 260, 200 160, 340 160, 340 260, 200 260), 
+      (240 220, 240 200, 300 200, 300 220, 240 220))
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (120 80, 120 340, 420 340, 420 80, 120 80))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(200 160, 220 180, 260 200, 340 120, 400 100, 420 340)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(200 140), 
+      POINT(200 360), 
+      POLYGON(
+        (120 80, 120 340, 420 340, 420 80, 120 80), 
+        (160 300, 160 120, 380 120, 380 300, 160 300)), 
+      POLYGON(
+        (200 260, 340 260, 340 160, 200 160, 200 260), 
+        (240 220, 240 200, 300 200, 300 220, 240 220)))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOLYGON(
+      (
+        (120 80, 120 340, 420 340, 420 80, 120 80), 
+        (160 300, 160 120, 380 120, 380 300, 160 300)), 
+      (
+        (200 260, 340 260, 340 160, 200 160, 200 260), 
+        (240 220, 240 200, 300 200, 300 220, 240 220)))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(200 140), 
+      POINT(200 360), 
+      POLYGON(
+        (120 80, 120 340, 420 340, 420 80, 120 80), 
+        (160 300, 160 120, 380 120, 380 300, 160 300)), 
+      POLYGON(
+        (200 260, 340 260, 340 160, 200 160, 200 260), 
+        (240 220, 240 200, 300 200, 300 220, 240 220)))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionPL.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionPL.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionPL.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,295 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>mPL - points in I and E of line</desc>
+  <a>
+    MULTIPOINT(40 90, 20 20, 70 70)
+  </a>
+  <b>
+    LINESTRING(20 20, 100 100)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(20 20, 70 70)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(40 90), 
+      LINESTRING(20 20, 100 100))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POINT(40 90)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(40 90), 
+      LINESTRING(20 20, 100 100))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPL - points in I and E of line, line self-intersecting</desc>
+  <a>
+    MULTIPOINT(40 90, 20 20, 70 70)
+  </a>
+  <b>
+    LINESTRING(20 20, 110 110, 170 50, 130 10, 70 70)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(20 20, 70 70)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(40 90), 
+      LINESTRING(20 20, 70 70), 
+      LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POINT(40 90)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(40 90), 
+      LINESTRING(20 20, 70 70), 
+      LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPmL - points in I, B and E of lines, lines overlap, points overlap</desc>
+  <a>
+    MULTILINESTRING(
+      (100 320, 100 220), 
+      (100 180, 200 180), 
+      (220 180, 220 320), 
+      (220 320, 160 320), 
+      (100 320, 100 220), 
+      (100 180, 200 180), 
+      (220 180, 220 320), 
+      (220 320, 160 320), 
+      (100 220, 100 320))
+  </a>
+  <b>
+    MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 
+    220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 
+    120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(100 220, 100 320)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (100 180, 100 320, 220 320, 220 180, 100 180))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, 
+    220 260, 220 320)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(100 200), 
+      POINT(120 320), 
+      POINT(140 320), 
+      LINESTRING(100 320, 100 220), 
+      LINESTRING(100 180, 200 180), 
+      LINESTRING(220 180, 220 320), 
+      LINESTRING(220 320, 160 320))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (100 320, 100 220), 
+      (100 180, 200 180), 
+      (220 180, 220 320), 
+      (220 320, 160 320))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(100 200), 
+      POINT(120 320), 
+      POINT(140 320), 
+      LINESTRING(100 320, 100 220), 
+      LINESTRING(100 180, 200 180), 
+      LINESTRING(220 180, 220 320), 
+      LINESTRING(220 320, 160 320))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPmL - points in I, B and E of lines, lines overlap, points overlap, x &lt;0, y &lt; 0</desc>
+  <a>
+    MULTILINESTRING(
+      (-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), 
+      (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140))
+  </a>
+  <b>
+    MULTIPOINT(-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, 
+    -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, 
+    -320 -180, -280 -140, -320 -120)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(-500 -340, -500 -140)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (-500 -340, -500 -140, -320 -140, -320 -280, -500 -340))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(-500 -340, -500 -280, -500 -220, -500 -140, -420 -140, -320 -180, -320 -140)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(-560 -180), 
+      POINT(-420 -180), 
+      POINT(-320 -120), 
+      POINT(-280 -140), 
+      LINESTRING(-500 -140, -500 -280), 
+      LINESTRING(-500 -280, -320 -280, -320 -140), 
+      LINESTRING(-320 -140, -500 -140), 
+      LINESTRING(-500 -280, -500 -340))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (-500 -140, -500 -280), 
+      (-500 -280, -320 -280, -320 -140), 
+      (-320 -140, -500 -140), 
+      (-500 -280, -500 -340))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(-560 -180), 
+      POINT(-420 -180), 
+      POINT(-320 -120), 
+      POINT(-280 -140), 
+      LINESTRING(-500 -140, -500 -280), 
+      LINESTRING(-500 -280, -320 -280, -320 -140), 
+      LINESTRING(-320 -140, -500 -140), 
+      LINESTRING(-500 -280, -500 -340))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - lines intersect at 1 point</desc>
+  <a>
+    MULTILINESTRING(
+      (180 100, 140 280, 240 140, 220 120, 140 280), 
+      (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280))
+  </a>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(180 100, 140 280)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPmL - points in I, B and E of lines, lines overlap, points overlap</desc>
+  <a>
+    MULTILINESTRING(
+      (100 320, 100 220), 
+      (100 180, 200 180), 
+      (220 180, 220 320), 
+      (220 320, 160 320), 
+      (100 320, 100 220), 
+      (100 180, 200 180), 
+      (220 180, 220 320), 
+      (220 320, 160 320), 
+      (100 220, 100 320))
+  </a>
+  <b>
+    MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 
+    220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 
+    120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    MULTIPOINT(100 220, 100 320)
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POLYGON(
+      (100 180, 100 320, 220 320, 220 180, 100 180))
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, 
+    220 260, 220 320)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(100 200), 
+      POINT(120 320), 
+      POINT(140 320), 
+      LINESTRING(100 320, 100 220), 
+      LINESTRING(100 180, 200 180), 
+      LINESTRING(220 180, 220 320), 
+      LINESTRING(220 320, 160 320))
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTILINESTRING(
+      (100 320, 100 220), 
+      (100 180, 200 180), 
+      (220 180, 220 320), 
+      (220 320, 160 320))
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION(
+      POINT(100 200), 
+      POINT(120 320), 
+      POINT(140 320), 
+      LINESTRING(100 320, 100 220), 
+      LINESTRING(100 180, 200 180), 
+      LINESTRING(220 180, 220 320), 
+      LINESTRING(220 320, 160 320))
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionPLPrec.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionPLPrec.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionPLPrec.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,19 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PP - Point just off line. Causes non-robust algorithms to fail.</desc>
+  <a>
+    LINESTRING(-123456789 -40, 381039468754763 123456789)
+  </a>
+  <b>
+    POINT(0 0)
+  </b>
+<test>
+  <op name="intersects" arg1="A" arg2="B">
+    false
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestFunctionPP.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestFunctionPP.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestFunctionPP.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,269 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PP - point contained in both A and B</desc>
+  <a>
+    POINT(100 100)
+  </a>
+  <b>
+    POINT(100 100)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(100 100)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PP - A different from B</desc>
+  <a>
+    POINT(100 100)
+  </a>
+  <b>
+    POINT(200 200)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOINT(100 100, 200 200)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POINT(100 100)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOINT(100 100, 200 200)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PmP - point in A contained in B</desc>
+  <a>
+    POINT(100 100)
+  </a>
+  <b>
+    MULTIPOINT(100 100, 200 200)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(100 100)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOINT(100 100, 200 200)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    POINT(200 200)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPmP - points in A only, B only, and in both</desc>
+  <a>
+    MULTIPOINT(100 100, 200 200, 300 300, 500 500)
+  </a>
+  <b>
+    MULTIPOINT(100 100, 200 200, 400 400, 600 600)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    MULTIPOINT(100 100, 200 200)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOINT(100 100, 200 200, 300 300, 400 400, 500 500, 600 600)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    MULTIPOINT(300 300, 500 500)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOINT(300 300, 400 400, 500 500, 600 600)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PP - point contained in both A and B</desc>
+  <a>
+    POINT(80 200)
+  </a>
+  <b>
+    POINT(80 200)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POINT(80 200)
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT(80 200)
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    POINT(80 200)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PP - A different from B</desc>
+  <a>
+    POINT(80 200)
+  </a>
+  <b>
+    POINT(260 80)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POINT(80 200)
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOINT(80 200, 260 80)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POINT(80 200)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOINT(80 200, 260 80)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PP - A different from B, same y</desc>
+  <a>
+    POINT(60 260)
+  </a>
+  <b>
+    POINT(120 260)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POINT(60 260)
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOINT(60 260, 120 260)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POINT(60 260)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOINT(60 260, 120 260)
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PP - A different from B, same x</desc>
+  <a>
+    POINT(80 80)
+  </a>
+  <b>
+    POINT(80 280)
+  </b>
+<test>
+  <op name="getboundary" arg1="A">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="convexhull" arg1="A">
+    POINT(80 80)
+  </op>
+</test>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    GEOMETRYCOLLECTION EMPTY
+  </op>
+</test>
+<test>
+  <op name="union" arg1="A" arg2="B">
+    MULTIPOINT(80 80, 80 280)
+  </op>
+</test>
+<test>
+  <op name="difference" arg1="A" arg2="B">
+    POINT(80 80)
+  </op>
+</test>
+<test>
+  <op name="symdifference" arg1="A" arg2="B">
+    MULTIPOINT(80 80, 80 280)
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestInteriorPoint.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestInteriorPoint.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestInteriorPoint.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,57 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>P - single point</desc>
+  <a>    POINT(10 10)  </a>
+<test><op name="getInteriorPoint" arg1="A" >    POINT(10 10)   </op></test>
+</case>
+
+<case>
+  <desc>P - single point</desc>
+  <a>    MULTIPOINT (60 300, 200 200, 240 240, 200 300, 40 140, 80 240, 140 240, 100 160, 140 200, 60 200)
+	</a>
+<test><op name="getInteriorPoint" arg1="A" >    POINT (140 240)   </op></test>
+</case>
+
+<case>
+  <desc>L - linestring with single segment</desc>
+  <a>    LINESTRING (0 0, 7 14)
+	</a>
+<test><op name="getInteriorPoint" arg1="A" >   POINT (7 14)   </op></test>
+</case>
+
+<case>
+  <desc>L - linestring with multiple segments </desc>
+  <a>    LINESTRING (0 0, 3 15, 6 2, 11 14, 16 5, 16 18, 2 22)
+	</a>
+<test><op name="getInteriorPoint" arg1="A" >   POINT (11 14)  </op></test>
+</case>
+
+<case>
+  <desc>mL - complex linestrings</desc>
+  <a>    MULTILINESTRING ((60 240, 140 300, 180 200, 40 140, 100 100, 120 220), 
+  (240 80, 260 160, 200 240, 180 340, 280 340, 240 180, 180 140, 40 200, 140 260))
+	</a>
+<test><op name="getInteriorPoint" arg1="A" >    POINT (180 200)   </op></test>
+</case>
+
+<case>
+  <desc>A - box</desc>
+  <a>    POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))
+	</a>
+<test><op name="getInteriorPoint" arg1="A" >    POINT (5 5)   </op></test>
+</case>
+
+<case>
+  <desc>mA - polygons with holes</desc>
+  <a>    MULTIPOLYGON (((60 320, 240 340, 260 100, 20 60, 120 180, 60 320), 
+  (200 280, 140 260, 180 160, 240 140, 200 280)), 
+  ((380 280, 300 260, 340 100, 440 80, 380 280), 
+    (380 220, 340 200, 400 100, 380 220)))
+	</a>
+<test><op name="getInteriorPoint" arg1="A" >    POINT (138 200)  </op></test>
+</case>
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRectanglePredicate.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRectanglePredicate.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRectanglePredicate.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,121 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>A disjoint</desc>
+  <a>
+    POLYGON(
+      (0 0, 80 0, 80 80, 0 80, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 200, 100 140, 180 140, 180 200, 100 200))
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+</case>
+
+<case>
+  <desc>A contained in rectangle</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    POLYGON((10 10, 10 90, 90 90, 90 10, 10 10))
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A containing rectangle</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    POLYGON ((60 180, -100 120, -140 60, -40 20, -100 -80, 40 -20, 140 -100, 140 40, 260 160, 80 120, 60 180))
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+</case>
+
+<case>
+  <desc>mA containing rectangle</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+	MULTIPOLYGON (((-60 180, -60 -60, 40 -20, 140 -100, 180 120, -20 140, -60 180)), 
+  	((20 280, 0 180, 180 160, 200 280, 20 280)))
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="within" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="coveredBy" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>L overlaps thru Y axis side</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    LINESTRING(10 10, 200 10)
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>L overlaps thru X axis side</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    LINESTRING(10 10, 10 2000)
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   false   </op> </test>
+</case>
+
+<case>
+  <desc>L line intersection</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    LINESTRING( 10 10, -10 -20 )
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   false   </op> </test>
+</case>
+
+<case>
+  <desc>L in polygon boundary</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    LINESTRING( 10 0, 90 0 )
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
+  <desc>mL with one component contained</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    MULTILINESTRING( (10 10, 10 20), (200 10, 200 20) )
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+</case>
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelateAA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelateAA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelateAA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,221 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>AA disjoint</desc>
+  <a>
+    POLYGON(
+      (0 0, 80 0, 80 80, 0 80, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 200, 100 140, 180 140, 180 200, 100 200))
+  </b>
+<test>
+  <op name="relate" arg3="FF2FF1212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA equal but opposite orientation</desc>
+  <a>
+    POLYGON(
+      (0 0, 140 0, 140 140, 0 140, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (140 0, 0 0, 0 140, 140 140, 140 0))
+  </b>
+<test>
+  <op name="relate" arg3="2FFF1FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell contains B-shell</desc>
+  <a>
+    POLYGON(
+      (40 60, 360 60, 360 300, 40 300, 40 60))
+  </a>
+  <b>
+    POLYGON(
+      (120 100, 280 100, 280 240, 120 240, 120 100))
+  </b>
+<test>
+  <op name="relate" arg3="212FF1FF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell contains B-shell contains A-hole</desc>
+  <a>
+    POLYGON(
+      (40 60, 420 60, 420 320, 40 320, 40 60), 
+      (200 140, 160 220, 260 200, 200 140))
+  </a>
+  <b>
+    POLYGON(
+      (80 100, 360 100, 360 280, 80 280, 80 100))
+  </b>
+<test>
+  <op name="relate" arg3="2121F12F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell contains B-shell contains A-hole contains B-hole</desc>
+  <a>
+    POLYGON(
+      (0 280, 0 0, 260 0, 260 280, 0 280), 
+      (220 240, 40 240, 40 40, 220 40, 220 240))
+  </a>
+  <b>
+    POLYGON(
+      (20 260, 240 260, 240 20, 20 20, 20 260), 
+      (160 180, 80 180, 120 120, 160 180))
+  </b>
+<test>
+  <op name="relate" arg3="2121F1212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell overlapping B-shell</desc>
+  <a>
+    POLYGON(
+      (60 80, 200 80, 200 220, 60 220, 60 80))
+  </a>
+  <b>
+    POLYGON(
+      (120 140, 260 140, 260 260, 120 260, 120 140))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell overlapping B-shell at B-vertex</desc>
+  <a>
+    POLYGON(
+      (60 220, 220 220, 140 140, 60 220))
+  </a>
+  <b>
+    POLYGON(
+      (100 180, 180 180, 180 100, 100 100, 100 180))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell overlapping B-shell at A &amp; B-vertex</desc>
+  <a>
+    POLYGON(
+      (40 40, 180 40, 180 180, 40 180, 40 40))
+  </a>
+  <b>
+    POLYGON(
+      (180 40, 40 180, 160 280, 300 140, 180 40))
+  </b>
+<test>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AmA A-shells overlapping B-shell at A-vertex</desc>
+  <a>
+    POLYGON(
+      (100 60, 140 100, 100 140, 60 100, 100 60))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (80 40, 120 40, 120 80, 80 80, 80 40)), 
+      (
+        (120 80, 160 80, 160 120, 120 120, 120 80)), 
+      (
+        (80 120, 120 120, 120 160, 80 160, 80 120)), 
+      (
+        (40 80, 80 80, 80 120, 40 120, 40 80)))
+  </b>
+<test>
+  <op name="relate" arg3="21210F212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA A-shell touches B-shell, which contains A-hole</desc>
+  <a>
+    POLYGON(
+      (40 280, 200 280, 200 100, 40 100, 40 280), 
+      (100 220, 120 220, 120 200, 100 180, 100 220))
+  </a>
+  <b>
+    POLYGON(
+      (40 280, 180 260, 180 120, 60 120, 40 280))
+  </b>
+<test>
+  <op name="relate" arg3="2121012F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - A-hole contains B, boundaries touch in line</desc>
+  <a>
+    POLYGON(
+      (0 200, 0 0, 200 0, 200 200, 0 200), 
+      (20 180, 130 180, 130 30, 20 30, 20 180))
+  </a>
+  <b>
+    POLYGON(
+      (60 90, 130 90, 130 30, 60 30, 60 90))
+  </b>
+<test>
+  <op name="relate" arg3="FF2F11212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - A-hole contains B, boundaries touch in points</desc>
+  <a>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </a>
+  <b>
+    POLYGON(
+      (270 90, 200 50, 150 80, 210 120, 270 90))
+  </b>
+<test>
+  <op name="relate" arg3="FF2F01212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelateAC.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelateAC.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelateAC.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,28 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>AC A-shells overlapping B-shell at A-vertex</desc>
+  <a>
+    POLYGON(
+      (100 60, 140 100, 100 140, 60 100, 100 60))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (80 40, 120 40, 120 80, 80 80, 80 40)), 
+      (
+        (120 80, 160 80, 160 120, 120 120, 120 80)), 
+      (
+        (80 120, 120 120, 120 160, 80 160, 80 120)), 
+      (
+        (40 80, 80 80, 80 120, 40 120, 40 80)))
+  </b>
+<test>
+  <op name="relate" arg3="21210F212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelateLA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelateLA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelateLA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,190 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LA - intersection at NV: {A-Bdy, A-Int} = {B-Bdy, B-Int}</desc>
+  <a>
+    LINESTRING(100 120, 100 240)
+  </a>
+  <b>
+    POLYGON(
+      (40 60, 160 60, 160 180, 40 180, 40 60))
+  </b>
+<test>
+  <op name="relate" arg3="1010F0212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - intersection at V: {A-Bdy, A-Int} = {B-Bdy, B-Int}</desc>
+  <a>
+    LINESTRING(80 80, 140 140, 200 200)
+  </a>
+  <b>
+    POLYGON(
+      (40 40, 140 40, 140 140, 40 140, 40 40))
+  </b>
+<test>
+  <op name="relate" arg3="1010F0212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LmA - intersection at NV, L contained in A</desc>
+  <a>
+    LINESTRING(70 50, 70 150)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (0 0, 0 100, 140 100, 140 0, 0 0)), 
+      (
+        (20 170, 70 100, 130 170, 20 170)))
+  </b>
+<test>
+  <op name="relate" arg3="10F0FF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - A crosses B at {shell-NV, hole-V}</desc>
+  <a>
+    LINESTRING(60 160, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (110 110, 250 100, 140 30, 110 110))
+  </b>
+<test>
+  <op name="relate" arg3="F01FF0212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - A intersects B at {shell-NV}, B-Int, {hole-V}</desc>
+  <a>
+    LINESTRING(60 160, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (111 110, 250 100, 140 30, 111 110))
+  </b>
+<test>
+  <op name="relate" arg3="101FF0212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - A crosses B hole at {hole1-V, hole2-NV}</desc>
+  <a>
+    LINESTRING(80 110, 170 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (130 110, 60 40, 60 180, 130 110), 
+      (130 180, 130 40, 200 110, 130 180))
+  </b>
+<test>
+  <op name="relate" arg3="F01FF0212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LA - A crosses B hole at {hole1-V}, B-Int, {hole2-NV}</desc>
+  <a>
+    LINESTRING(80 110, 170 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (130 110, 60 40, 60 180, 130 110), 
+      (130 180, 131 40, 200 110, 130 180))
+  </b>
+<test>
+  <op name="relate" arg3="101FF0212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+<desc>LA - Line with endpoints in interior but crossing exterior of multipolygon</desc>
+  <a>
+    LINESTRING(160 70, 320 230)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LA - Line with a very small piece in the exterior between parts of a multipolygon</desc>
+  <a>
+    LINESTRING(100 140, 100 40)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 80, 180 79, 100 0, 20 80)), 
+      (
+        (20 160, 180 160, 100 80, 20 160)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LA - Line contained completely and spanning parts of multipolygon</desc>
+  <a>
+    LINESTRING(100 140, 100 40)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 80, 180 80, 100 0, 20 80)), 
+      (
+        (20 160, 180 160, 100 80, 20 160)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="10F0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LA - overlapping ring and triangle</desc>
+  <a>
+    LINESTRING(110 60, 20 150, 200 150, 110 60)
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 200 20, 110 110, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FFF212">true</op>
+  </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelateLC.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelateLC.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelateLC.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,79 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LC - topographically equal with no boundary</desc>
+  <a>
+    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 0 50), 
+      (0 50, 50 50), 
+      (50 50, 50 0), 
+      (50 0, 0 0))
+  </b>
+<test>
+  <op name="relate" arg3="1FFFFFFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LC - intersection (containment) along mod-2 A-Int line segment</desc>
+  <a>
+    LINESTRING(40 180, 140 180)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 320, 180 320, 180 180, 20 180, 20 320)), 
+      (
+        (20 180, 20 80, 180 80, 180 180, 20 180)))
+  </b>
+<test>
+  <op name="relate" arg3="1FF0FF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LC - intersection (overlap) along mod-2 A-Int line segment</desc>
+  <a>
+    LINESTRING(40 180, 140 180)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 320, 180 320, 180 180, 20 180, 20 320)), 
+      (
+        (60 180, 60 80, 180 80, 180 180, 60 180)))
+  </b>
+<test>
+  <op name="relate" arg3="11F00F212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LC - equal with boundary intersection</desc>
+  <a>
+    LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 60 0), 
+      (60 0, 120 0), 
+      (60 0, 60 60))
+  </b>
+<test>
+  <op name="relate" arg3="10FF0FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelateLL.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelateLL.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelateLL.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,311 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LL - disjoint, non-overlapping envelopes</desc>
+  <a>
+    LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140)
+  </a>
+  <b>
+    LINESTRING(140 300, 220 160, 260 200, 240 260)
+  </b>
+<test>
+  <op name="relate" arg3="FF1FF0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - disjoint, overlapping envelopes</desc>
+  <a>
+    LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140)
+  </a>
+  <b>
+    LINESTRING(60 40, 140 40, 140 160, 0 160)
+  </b>
+<test>
+  <op name="relate" arg3="FF1FF0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - disjoint, non-overlapping envelopes, B closed</desc>
+  <a>
+    LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140)
+  </a>
+  <b>
+    LINESTRING(140 280, 240 280, 240 180, 140 180, 140 280)
+  </b>
+<test>
+  <op name="relate" arg3="FF1FF01F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - disjoint, overlapping envelopes, B closed</desc>
+  <a>
+    LINESTRING(140 0, 0 0, 40 60, 0 120, 60 200, 220 160, 220 40)
+  </a>
+  <b>
+    LINESTRING(80 140, 180 100, 160 40, 100 40, 60 100, 80 140)
+  </b>
+<test>
+  <op name="relate" arg3="FF1FF01F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Line vs line - pointwise equal</desc>
+  <a>
+    LINESTRING(20 20, 80 80)
+  </a>
+  <b>
+    LINESTRING(20 20, 80 80)
+  </b>
+<test>
+  <op name="relate" arg3="1FFF0FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Line vs line - pointwise equal</desc>
+  <a>
+    LINESTRING(40 40, 160 160, 200 60, 60 140)
+  </a>
+  <b>
+    LINESTRING(40 40, 160 160, 200 60, 60 140)
+  </b>
+<test>
+  <op name="relate" arg3="1FFF0FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>Line vs line - topologically equal</desc>
+  <a>
+    LINESTRING(40 40, 200 40)
+  </a>
+  <b>
+    LINESTRING(200 40, 140 40, 40 40)
+  </b>
+<test>
+  <op name="relate" arg3="1FFF0FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - topographically equal with self-intersection</desc>
+  <a>
+    LINESTRING(0 0, 110 0, 60 0)
+  </a>
+  <b>
+    LINESTRING(0 0, 110 0)
+  </b>
+<test>
+  <op name="relate" arg3="10F00FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LmL - topographically equal with no boundary</desc>
+  <a>
+    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 0 50), 
+      (0 50, 50 50), 
+      (50 50, 50 0), 
+      (50 0, 0 0))
+  </b>
+<test>
+  <op name="relate" arg3="1FFFFFFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LmL - topographically equal with self intersections</desc>
+  <a>
+    LINESTRING(0 0, 80 0, 80 60, 80 0, 170 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 170 0), 
+      (80 0, 80 60))
+  </b>
+<test>
+  <op name="relate" arg3="10FF0FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A-IntNV = B-IntNV</desc>
+  <a>
+    LINESTRING(80 100, 180 200)
+  </a>
+  <b>
+    LINESTRING(80 180, 180 120)
+  </b>
+<test>
+  <op name="relate" arg3="0F1FF0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>intersect in Int NV</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 160 160)
+  </a>
+  <b>
+    LINESTRING(160 60, 100 100, 60 140)
+  </b>
+<test>
+  <op name="relate" arg3="0F1FF0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - intersection: {A-Bdy, A-IntV} = B-IntNV</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100)
+  </a>
+  <b>
+    LINESTRING(140 60, 60 140)
+  </b>
+<test>
+  <op name="relate" arg3="FF10F0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - intersection: {A-Bdy, A-IntNV} = B-IntNV</desc>
+  <a>
+    LINESTRING(40 40, 180 180, 100 180, 100 100)
+  </a>
+  <b>
+    LINESTRING(140 60, 60 140)
+  </b>
+<test>
+  <op name="relate" arg3="FF10F0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - intersection: A-IntNV = {B-Bdy, B-IntNV}</desc>
+  <a>
+    LINESTRING(20 110, 200 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </b>
+<test>
+  <op name="relate" arg3="F01FF0102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - one segment overlapping, one distinct</desc>
+  <a>
+    LINESTRING(80 90, 50 50, 0 0)
+  </a>
+  <b>
+    LINESTRING(0 0, 100 100)
+  </b>
+<test>
+  <op name="relate" arg3="1F1F00102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A contained in B</desc>
+  <a>
+    LINESTRING(40 140, 240 140)
+  </a>
+  <b>
+    LINESTRING(40 140, 100 140, 80 80, 120 60, 100 140, 160 140, 160 100, 200 100, 160 140, 
+    240 140)
+  </b>
+<test>
+  <op name="relate" arg3="1FFF0F1F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - simple overlapping lines</desc>
+  <a>
+    LINESTRING(20 20, 100 20, 20 20)
+  </a>
+  <b>
+    LINESTRING(60 20, 200 20)
+  </b>
+<test>
+  <op name="relate" arg3="101FFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LL - A-spiral, B-contained</desc>
+  <a>
+    LINESTRING(40 60, 180 60, 180 140, 100 140, 100 60, 220 60, 220 180, 80 180, 80 60, 
+    280 60)
+  </a>
+  <b>
+    LINESTRING(140 60, 180 60, 220 60, 260 60)
+  </b>
+<test>
+  <op name="relate" arg3="101FF0FF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+<desc>test for LinearRing point location bug</desc>
+  <a>
+    LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0)
+  </a>
+  <b>
+    LINESTRING( 2 2, 4 4)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FFF102">true</op>
+  </test>
+</case>
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelatePA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelatePA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelatePA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,103 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PA - disjoint</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+<test>
+  <op name="relate" arg3="FF0FFF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPA - points in B: E, I</desc>
+  <a>
+    MULTIPOINT(0 20, 40 20)
+  </a>
+  <b>
+    POLYGON(
+      (20 40, 20 0, 60 0, 60 40, 20 40))
+  </b>
+<test>
+  <op name="relate" arg3="0F0FFF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPA - points in B: E, B</desc>
+  <a>
+    MULTIPOINT(0 20, 20 20)
+  </a>
+  <b>
+    POLYGON(
+      (20 40, 20 0, 60 0, 60 40, 20 40))
+  </b>
+<test>
+  <op name="relate" arg3="F00FFF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPA - points in B: B, I</desc>
+  <a>
+    MULTIPOINT(20 20, 40 20)
+  </a>
+  <b>
+    POLYGON(
+      (20 40, 20 0, 60 0, 60 40, 20 40))
+  </b>
+<test>
+  <op name="relate" arg3="00FFFF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPA - points in B: I, B, E</desc>
+  <a>
+    MULTIPOINT(80 260, 140 260, 180 260)
+  </a>
+  <b>
+    POLYGON(
+      (40 320, 140 320, 140 200, 40 200, 40 320))
+  </b>
+<test>
+  <op name="relate" arg3="000FFF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PmA - point in B: mod-2 I</desc>
+  <a>
+    POINT(40 40)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (0 40, 0 0, 40 0, 40 40, 0 40)), 
+      (
+        (40 80, 40 40, 80 40, 80 80, 40 80)))
+  </b>
+<test>
+  <op name="relate" arg3="F0FFFF212" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelatePL.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelatePL.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelatePL.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,124 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PL - disjoint</desc>
+  <a>
+    POINT(60 120)
+  </a>
+  <b>
+    LINESTRING(40 40, 120 120, 200 120)
+  </b>
+<test>
+  <op name="relate" arg3="FF0FFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PL - touches Bdy</desc>
+  <a>
+    POINT(40 40)
+  </a>
+  <b>
+    LINESTRING(40 40, 100 100, 160 100)
+  </b>
+<test>
+  <op name="relate" arg3="F0FFFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>PL - touches non-vertex</desc>
+  <a>
+    POINT(60 60)
+  </a>
+  <b>
+    LINESTRING(40 40, 100 100)
+  </b>
+<test>
+  <op name="relate" arg3="0FFFFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPL - touches Bdy and Ext</desc>
+  <a>
+    MULTIPOINT(40 40, 100 40)
+  </a>
+  <b>
+    LINESTRING(40 40, 80 80)
+  </b>
+<test>
+  <op name="relate" arg3="F00FFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPL - touches Int and Bdy</desc>
+  <a>
+    MULTIPOINT(40 40, 60 60)
+  </a>
+  <b>
+    LINESTRING(40 40, 80 80)
+  </b>
+<test>
+  <op name="relate" arg3="00FFFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPL - touches Int and Ext</desc>
+  <a>
+    MULTIPOINT(60 60, 100 100)
+  </a>
+  <b>
+    LINESTRING(40 40, 80 80)
+  </b>
+<test>
+  <op name="relate" arg3="0F0FFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPL - touches IntNV and Ext</desc>
+  <a>
+    MULTIPOINT(60 60, 100 100)
+  </a>
+  <b>
+    LINESTRING(40 40, 80 80)
+  </b>
+<test>
+  <op name="relate" arg3="0F0FFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mPL - touches IntV and Ext</desc>
+  <a>
+    MULTIPOINT(60 60, 100 100)
+  </a>
+  <b>
+    LINESTRING(40 40, 60 60, 80 80)
+  </b>
+<test>
+  <op name="relate" arg3="0F0FFF102" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestRelatePP.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestRelatePP.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestRelatePP.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,64 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>same point</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    POINT(20 20)
+  </b>
+<test>
+  <op name="relate" arg3="0FFFFFFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>different point</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    POINT(20 30)
+  </b>
+<test>
+  <op name="relate" arg3="FF0FFF0F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>some same, some different points</desc>
+  <a>
+    MULTIPOINT(40 40, 80 60, 40 100)
+  </a>
+  <b>
+    MULTIPOINT(40 40, 80 60, 120 100)
+  </b>
+<test>
+  <op name="relate" arg3="0F0FFF0F2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>same points</desc>
+  <a>
+    MULTIPOINT(40 40, 80 60, 120 100)
+  </a>
+  <b>
+    MULTIPOINT(40 40, 80 60, 120 100)
+  </b>
+<test>
+  <op name="relate" arg3="0FFFFFFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestSimple.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestSimple.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestSimple.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,296 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>P - point</desc>
+  <a>
+    POINT(10 10)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mP - multipoint with repeated points</desc>
+  <a>
+    MULTIPOINT (80 280, 80 220, 160 220, 80 220)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mP - multipoint with no repeated points</desc>
+  <a>
+    MULTIPOINT (80 280, 80 220, 160 220)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mP - empty</desc>
+  <a>
+    MULTIPOINT EMPTY
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - simple line</desc>
+  <a>
+    LINESTRING(10 10, 20 20)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - non-simple, proper interior intersection</desc>
+  <a>
+    LINESTRING (20 60, 160 60, 80 160, 80 20)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - non-simple, interior intersection at vertices</desc>
+  <a>
+    LINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - non-simple, interior intersection at Bdy/non-vertex</desc>
+  <a>
+    LINESTRING (20 60, 100 60, 60 100, 60 60)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - non-simple, interior intersection at Bdy/vertex</desc>
+  <a>
+    LINESTRING (20 60, 60 60, 100 60, 60 100, 60 60)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - simple, intersection at Bdy/Bdy (ring)</desc>
+  <a>
+    LINESTRING (20 20, 80 20, 80 80, 20 20)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - simple, intersection at Bdy/Bdy + non-vertex</desc>
+  <a>
+    LINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80)
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>L - empty</desc>
+  <a>
+    LINESTRING EMPTY
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+
+<case>
+  <desc>mL - intersection between elements at non-vertex</desc>
+  <a>
+    MULTILINESTRING(
+  (40 140, 160 40), 
+  (160 140, 40 40))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - no intersection between elements</desc>
+  <a>
+    MULTILINESTRING(
+  (20 160, 20 20), 
+  (100 160, 100 20))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - mutual intersection at endpoints only</desc>
+  <a>
+    MULTILINESTRING ((60 140, 20 80, 60 40), 
+  (60 40, 100 80, 60 140))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - one element is non-simple</desc>
+  <a>
+    MULTILINESTRING ((60 40, 140 40, 100 120, 100 0), 
+  (100 200, 200 120))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - proper intersection between elements at vertex</desc>
+  <a>
+    MULTILINESTRING ((40 120, 100 60), 
+  (160 120, 100 60), 
+  (40 60, 160 60))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - intersection between closed lines</desc>
+  <a>
+    MULTILINESTRING ((80 160, 40 220, 40 100, 80 160), 
+  (80 160, 120 220, 120 100, 80 160))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - intersection between closed and open lines</desc>
+  <a>
+    MULTILINESTRING ((80 160, 40 220), 
+  (80 160, 120 220, 120 100, 80 160), 
+  (40 100, 80 160))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    false
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>A</desc>
+  <a>
+    POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>A - empty</desc>
+  <a>
+    POLYGON EMPTY
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mA</desc>
+  <a>
+    MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), 
+  ((160 380, 100 240, 20 380, 160 380), 
+    (120 340, 60 360, 80 320, 120 340)))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mA - with touching elements</desc>
+  <a>
+    MULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)), 
+  ((160 380, 100 240, 20 380, 160 380), 
+    (120 340, 60 360, 80 320, 120 340)))
+  </a>
+<test>
+  <op name="isSimple" arg1="A">
+    true
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestValid.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestValid.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestValid.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,670 @@
+<run>
+   <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+   <case>
+      <desc>L - linear-ring bowtie</desc>
+      <a>LINEARRING(0 0, 100 100, 100 0, 0 100, 0 0)</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+
+   <case>
+      <desc>L - linestring bowtie</desc>
+      <a>LINESTRING(0 0, 100 100, 100 0, 0 100, 0 0)</a>
+      <test>
+         <op name="isValid" arg1="A">true</op>
+      </test>
+   </case>
+
+   <case>
+      <desc>P - point</desc>
+      <a>
+    POINT(10 10)
+  </a>
+      <test>
+         <op name="isValid" arg1="A">
+    true
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mP - no repeated points</desc>
+      <a>
+    MULTIPOINT(10 10, 20 20, 30 30)
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    true  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>P - repeated points</desc>
+      <a>
+    MULTIPOINT(10 10, 20 20, 30 30, 10 10)
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    true  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>L - no repeated points</desc>
+      <a>
+LINESTRING (40 180, 120 120, 140 200, 200 140, 240 200)
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    true  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>L - repeated points</desc>
+      <a>
+LINESTRING (40 180, 120 120, 140 200, 140 200, 200 140, 240 200)
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    true  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>L - linestring with two identical points </desc>
+      <a>LINESTRING(0 0, 0 0)</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - zero-area polygon </desc>
+      <a>POLYGON ((0 0, 0 0, 0 0, 0 0, 0 0))</a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - polygon with too few points </desc>
+      <a>POLYGON ((0 0, 10 0, 20 0, 0 0, 0 0))</a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - polygon with repeated point </desc>
+      <a>POLYGON ((107 246, 107 246, 250 285, 294 137, 151 90, 15 125, 157 174, 107 246))</a>
+      <test>
+         <op name="isValid" arg1="A"> true </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - polygon with degenerate hole ring (A-B-A) </desc>
+      <a>POLYGON ((0 0, 0 240, 260 240, 260 0, 0 0), 
+  (220 200, 40 200, 40 20, 40 200, 220 200, 220 200))</a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - multipolygon with component with too few points </desc>
+      <a>MULTIPOLYGON ( ((100 20, 180 20, 180 100, 100 100, 100 20)),
+((20 100, 100 100, 100 180, 20 180, 20 100)),
+((100 180, 180 180, 180 260, 100 260, 100 180)),
+((180 100, 180 180, 180 180, 180 100)))</a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - polygon self-intersects at non-vertex</desc>
+      <a>POLYGON ((0 40, 0 0, 40 40, 40 0, 0 40))</a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+   <case>
+      <desc>A - polygon self-intersects at vertex</desc>
+      <a>MULTIPOLYGON ( ((0 40, 20 20, 40 0, 40 40, 20 20, 0 0, 0 40)) ) </a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+   <case>
+      <desc>A - polygon self-intersects at vertex/non-vertex</desc>
+      <a>POLYGON ((0 40, 20 20, 40 0, 40 40, 0 0, 0 40))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - hole self-intersects at non-vertex</desc>
+      <a>POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 0 0, 40 40, 40 0, 0 40))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - polygon self-intersects at vertex</desc>
+      <a>POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 20 20, 40 0, 40 40, 20 20, 0 0, 0 40))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - polygon self-intersects at vertex/non-vertex</desc>
+      <a>POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 20 20, 40 0, 40 40, 0 0, 0 40))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - Valid doughnut</desc>
+      <a>POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 40 20, 40 40, 20 40))</a>
+      <test>
+         <op name="isValid" arg1="A">true</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - shell has repeated points</desc>
+      <a>POLYGON ((0 60, 0 0, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 40 20, 40 40, 20 40))</a>
+      <test>
+         <op name="isValid" arg1="A">true</op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - shell touches hole without crossing it (valid)</desc>
+      <a>POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 60 20, 20 40))</a>
+      <test>
+         <op name="isValid" arg1="A">true</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - shell touches hole without crossing it, but does so twice (invalid)</desc>
+      <a>POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (0 40, 20 20, 60 20, 0 40))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - hole touches hole without crossing it (valid)</desc>
+      <a>POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), (100 100, 100 20, 120 20, 120 100, 100 100), (20 100, 20 40, 100 40, 20 100))</a>
+      <test>
+         <op name="isValid" arg1="A">true</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - holel touches hole without crossing it, but does so twice (invalid)</desc>
+      <a>POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), 
+		(100 100, 100 20, 120 20, 120 100, 100 100), 
+		(20 100, 20 40, 100 40, 80 60, 100 80, 20 100))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - hole touches hole without crossing it, but does so at an infinite number of points (invalid)</desc>
+      <a>POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), 
+		(100 100, 100 20, 120 20, 120 100, 100 100), 
+		(20 100, 20 40, 100 40, 100 80, 20 100))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - spike (invalid)</desc>
+      <a>POLYGON ((0 60, 0 0, 60 0, 60 20, 100 20, 60 20, 60 60, 0 60))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - puncture (invalid)</desc>
+      <a>POLYGON ((0 60, 0 0, 60 0, 60 20, 20 20, 60 20, 60 60, 0 60))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - hole within a hole (invalid)</desc>
+      <a>POLYGON ((0 140, 0 0, 180 0, 180 140, 0 140), (20 20, 160 20, 160 120, 20 120, 20 20), (40 100, 40 40, 140 40, 140 100, 40 100))</a>
+      <test>
+         <op name="isValid" arg1="A">false</op>
+      </test>
+   </case>
+   <case>
+      <desc>A - empty shell and holes (valid)</desc>
+      <a>POLYGON (EMPTY, EMPTY, EMPTY)</a>
+      <test>
+         <op name="isValid" arg1="A">true</op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole overlapping shell at non-vertex</desc>
+      <a>
+POLYGON ((60 280, 260 180, 60 80, 60 280), 
+  (140 80, 120 180, 200 180, 140 80))
+  </a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - shell self-overlaps </desc>
+      <a>
+POLYGON ((60 340, 60 100, 340 100, 340 280, 340 200, 340 340, 60 340))
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    false  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole with repeated points</desc>
+      <a>
+POLYGON ((40 260, 40 60, 120 60, 180 160, 240 60, 300 60, 300 260, 40 260), 
+  (70 230, 80 230, 80 220, 80 220, 70 230))  </a>
+      <test>
+         <op name="isValid" arg1="A">
+    true
+  </op>
+      </test>
+   </case>
+   <case>
+      <desc>A - hole outside but adjacent to shell</desc>
+      <a>
+POLYGON ((40 260, 40 60, 120 60, 180 160, 240 60, 300 60, 300 260, 40 260), 
+  (180 160, 240 60, 120 60, 180 160))  </a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole touches shell at two points</desc>
+      <a>
+POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), 
+  (140 180, 40 180, 140 260, 140 180))
+  </a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole touches shell at one non-vertex point</desc>
+      <a>
+POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), 
+  (140 180, 40 180, 140 240, 140 180))
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    true  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole touches shell at one vertex point</desc>
+      <a>
+POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), 
+  (140 180, 40 260, 140 240, 140 180))
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    true  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole outside shell</desc>
+      <a>
+POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), 
+  (160 120, 180 100, 160 80, 160 120))  
+</a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole identical to shell</desc>
+      <a>
+POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), 
+  (20 180, 20 20, 140 20, 140 180, 20 180))  
+</a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole identical to shell</desc>
+      <a>
+POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), 
+  (20 180, 20 20, 140 20, 140 180, 20 180))  
+</a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole self-intersects </desc>
+      <a>
+POLYGON ((380 340, 40 340, 40 20, 380 20, 380 340), 
+  (120 300, 300 280, 320 200, 160 140, 200 80, 320 120, 320 200, 360 60, 120 40, 120 300))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - holes overlap, first point is identical </desc>
+      <a>
+POLYGON ((20 320, 260 320, 260 20, 20 20, 20 320), 
+  (140 280, 80 100, 200 100, 140 280), 
+  (140 280, 40 80, 240 80, 140 280))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - holes do not overlap, first point is identical </desc>
+      <a>
+POLYGON ((20 320, 240 320, 240 40, 20 40, 20 320), 
+  (140 180, 60 120, 60 240, 140 180), 
+  (140 180, 200 120, 200 240, 140 180))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - shell self-touches at vertex </desc>
+      <a>
+POLYGON ((340 320, 340 200, 200 280, 200 80, 340 200, 340 20, 60 20, 60 340, 340 320))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - shell self-touches at non-vertex </desc>
+      <a>
+POLYGON ((300 320, 300 220, 260 260, 180 220, 360 220, 360 140, 120 140, 120 320, 300 320))	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+    <case>
+      <desc>A - chain of holes surrounds an island inside the polygon </desc>
+      <a>
+POLYGON ((40 300, 40 20, 280 20, 280 300, 40 300), 
+  (120 240, 80 180, 160 220, 120 240), 
+  (220 240, 160 220, 220 160, 220 240), 
+  (160 100, 80 180, 100 80, 160 100), 
+  (160 100, 220 160, 240 100, 160 100))	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - chain of holes splits polygon in two (touching at vertices) </desc>
+      <a>
+POLYGON ((40 320, 340 320, 340 20, 40 20, 40 320), 
+  (100 120, 40 20, 180 100, 100 120), 
+  (200 200, 180 100, 240 160, 200 200), 
+  (260 260, 240 160, 300 200, 260 260), 
+  (300 300, 300 200, 340 320, 300 300))	
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - chain of holes splits polygon in two (touching at non-vertex) </desc>
+      <a>
+POLYGON ((40 320, 340 320, 340 20, 40 20, 40 320), 
+  (100 120, 40 20, 180 100, 100 120), 
+  (200 200, 180 100, 240 160, 200 200), 
+  (260 260, 240 160, 300 200, 260 260), 
+  (300 300, 300 200, 340 260, 300 300))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - holes touch in one point </desc>
+      <a>
+POLYGON ((190 190, 360 20, 20 20, 190 190), 
+  (90 50, 150 110, 190 50, 90 50), 
+  (190 50, 230 110, 290 50, 190 50))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - holes touch in one point </desc>
+      <a>
+POLYGON ((190 190, 360 20, 20 20, 190 190), 
+  (90 50, 150 110, 190 50, 90 50), 
+  (190 50, 230 110, 290 50, 190 50))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - hole disconnects interiors </desc>
+      <a>
+POLYGON ((0 0, 10 10, 10 0, 0 0), 
+  (5 5, 5 0, 10 5, 5 5))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>A - touching holes do NOT disconnect (isCCW bug) </desc>
+      <a>
+POLYGON ((60 40, 60 240, 460 240, 460 40, 60 40), 
+  (260 200, 340 60, 400 120, 260 200), 
+  (260 200, 120 100, 200 60, 260 200))
+  	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+
+  
+  <case>
+      <desc>mA - adjacent shells (shared vertices) </desc>
+      <a>
+MULTIPOLYGON (((40 120, 140 120, 140 40, 40 40, 40 120)), 
+  ((140 120, 40 120, 40 200, 140 200, 140 120)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - adjacent shells (different vertices) </desc>
+      <a>
+MULTIPOLYGON (((40 120, 140 120, 140 40, 40 40, 40 120)), 
+  ((160 120, 60 120, 40 200, 140 200, 160 120)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">
+    false
+  </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - nested overlapping shells </desc>
+      <a>
+MULTIPOLYGON (((80 260, 240 260, 240 100, 80 100, 80 260)), 
+  ((120 240, 220 240, 220 140, 120 140, 120 240)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - nested non-overlapping shells </desc>
+      <a>
+MULTIPOLYGON (((60 320, 60 80, 300 80, 60 320), 
+  (80 280, 80 100, 260 100, 80 280)), 
+  ((120 160, 140 160, 140 140, 120 160)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - nested non-overlapping shells, all vertices touch </desc>
+      <a>
+MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), 
+  (220 340, 180 240, 60 200, 180 160, 340 60, 240 220, 220 340)), 
+  ((180 240, 180 160, 240 220, 180 240)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - nested overlapping shells, all vertices touch </desc>
+      <a>
+MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), 
+  (220 340, 180 240, 60 200, 140 100, 340 60, 300 240, 220 340)), 
+  ((60 200, 340 60, 220 340, 60 200)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - nested non-overlapping shells, all vertices touch </desc>
+      <a>
+MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), 
+  (220 340, 80 320, 60 200, 140 100, 340 60, 300 240, 220 340)), 
+  ((60 200, 340 60, 220 340, 60 200)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - nested overlapping shells, all vertices touch </desc>
+      <a>
+MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), 
+  (220 340, 180 240, 60 200, 200 180, 340 60, 240 220, 220 340)), 
+  ((60 200, 340 60, 220 340, 60 200)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - disconnected exterior </desc>
+      <a>
+MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), 
+  ((20 100, 100 100, 100 180, 20 180, 20 100)), 
+  ((100 180, 180 180, 180 260, 100 260, 100 180)), 
+  ((180 100, 260 100, 260 180, 180 180, 180 100)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - shells touch in single point </desc>
+      <a>
+MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110)), 
+  ((110 110, 150 20, 70 20, 110 110)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - duplicate shells </desc>
+      <a>
+MULTIPOLYGON (((60 300, 320 220, 260 60, 60 100, 60 300)), 
+  ((60 300, 320 220, 260 60, 60 100, 60 300)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      false      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - shells are not nested but share all vertices </desc>
+      <a>
+MULTIPOLYGON (((180 60, 240 160, 300 60, 180 60)), 
+  ((80 80, 180 60, 160 140, 240 160, 360 140, 300 60, 420 100, 320 280, 120 260, 80 80)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+   <case>
+      <desc>mA - shell is nested inside first hole </desc>
+      <a>
+MULTIPOLYGON (((0 0, 0 8, 8 8, 8 0, 0 0), 
+  (3 3, 7 3, 7 7, 3 7, 3 3), 
+  (1 1, 2 1, 2 2, 1 2, 1 1)), 
+  ((4 4, 4 6, 6 6, 6 4, 4 4)))
+	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestValid2-big.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestValid2-big.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestValid2-big.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,18 @@
+<run>
+   <precisionModel type="FLOATING"/>
+<case>
+  <desc>Test 92</desc>
+  <a>
+    POLYGON ((100 100, 1000000000000000 110, 1000000000000000 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 558</desc>
+  <a>
+    MULTIPOINT (-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestValid2.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestValid2.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestValid2.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,5246 @@
+<run>
+   <precisionModel type="FLOATING"/>
+<case>
+  <desc>Test 1</desc>
+  <a>
+    LINESTRING (-123456789 -40, 381039468754763 123456789)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 2</desc>
+  <a>
+    POINT (0 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 3</desc>
+  <a>
+    POLYGON ((20 20, 20 100, 120 100, 140 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 4</desc>
+  <a>
+    POLYGON ((20 20, 140 20, 120 100, 20 100, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 5</desc>
+  <a>
+    POLYGON ((120 100, 140 20, 20 20, 20 100, 120 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 6</desc>
+  <a>
+    POLYGON ((20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 7</desc>
+  <a>
+    POLYGON ((0 0, 80 0, 80 80, 0 80, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 8</desc>
+  <a>
+    POLYGON ((100 200, 100 140, 180 140, 180 200, 100 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 9</desc>
+  <a>
+    POLYGON ((140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 10</desc>
+  <a>
+    POLYGON ((140 120, 140 200, 240 200, 240 120, 140 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 11</desc>
+  <a>
+    POLYGON ((80 180, 140 260, 260 200, 200 60, 80 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 12</desc>
+  <a>
+    POLYGON ((240 80, 140 120, 180 240, 280 200, 240 80))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 13</desc>
+  <a>
+    POLYGON ((140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 14</desc>
+  <a>
+    POLYGON ((140 40, 180 80, 120 100, 140 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 15</desc>
+  <a>
+    POLYGON ((120 100, 180 80, 130 40, 120 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 16</desc>
+  <a>
+    POLYGON ((20 20, 180 20, 140 140, 20 140, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 17</desc>
+  <a>
+    POLYGON ((180 100, 80 200, 180 280, 260 200, 180 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 18</desc>
+  <a>
+    POLYGON ((140 140, 20 120, 0 220, 120 240, 140 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 19</desc>
+  <a>
+    POLYGON ((160 200, 210 70, 120 70, 160 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 20</desc>
+  <a>
+    POLYGON ((160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> false </op> </test>
+</case>
+<case>
+  <desc>Test 21</desc>
+  <a>
+    POLYGON ((110 140, 200 70, 200 160, 110 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 22</desc>
+  <a>
+    POLYGON ((110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> false </op> </test>
+</case>
+<case>
+  <desc>Test 23</desc>
+  <a>
+    POLYGON ((20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 24</desc>
+  <a>
+    POLYGON ((20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 25</desc>
+  <a>
+    POLYGON ((20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 26</desc>
+  <a>
+    POLYGON ((20 120, 300 120, 140 240, 20 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 27</desc>
+  <a>
+    POLYGON ((20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 28</desc>
+  <a>
+    POLYGON ((100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 29</desc>
+  <a>
+    POLYGON ((260 200, 180 80, 120 160, 200 160, 180 220, 260 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 30</desc>
+  <a>
+    POLYGON ((20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 31</desc>
+  <a>
+    POLYGON ((0 140, 300 140, 140 240, 0 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 32</desc>
+  <a>
+    POLYGON ((20 240, 20 140, 320 140, 180 240, 20 240))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 33</desc>
+  <a>
+    POLYGON ((20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 34</desc>
+  <a>
+    POLYGON ((120 120, 180 60, 20 20, 20 120, 120 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 35</desc>
+  <a>
+    POLYGON ((120 120, 220 20, 280 20, 240 160, 120 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 36</desc>
+  <a>
+    POLYGON ((140 120, 160 20, 260 120, 220 200, 140 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 37</desc>
+  <a>
+    POLYGON ((20 140, 120 40, 20 40, 20 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 38</desc>
+  <a>
+    POLYGON ((190 140, 190 20, 140 20, 20 140, 190 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 39</desc>
+  <a>
+    POLYGON ((300 20, 220 20, 120 120, 260 160, 300 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 40</desc>
+  <a>
+    POLYGON ((140 120, 240 160, 280 60, 160 20, 140 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 41</desc>
+  <a>
+    POLYGON ((280 60, 180 60, 120 120, 260 180, 280 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 42</desc>
+  <a>
+    POLYGON ((120 200, 120 120, 40 120, 40 200, 120 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 43</desc>
+  <a>
+    POLYGON ((160 220, 140 120, 60 120, 40 220, 160 220))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 44</desc>
+  <a>
+    POLYGON ((140 120, 20 120, 20 220, 140 220, 140 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 45</desc>
+  <a>
+    POLYGON ((320 20, 220 20, 80 160, 240 140, 320 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 46</desc>
+  <a>
+    POLYGON ((20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 47</desc>
+  <a>
+    POLYGON ((60 40, 60 140, 180 140, 180 40, 60 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 48</desc>
+  <a>
+    POLYGON ((20 20, 80 140, 160 60, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 49</desc>
+  <a>
+    POLYGON ((160 60, 20 20, 100 140, 160 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 50</desc>
+  <a>
+    POLYGON ((20 100, 140 160, 160 40, 20 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 51</desc>
+  <a>
+    POLYGON ((160 40, 20 100, 160 160, 160 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 52</desc>
+  <a>
+    POLYGON ((20 180, 180 120, 80 40, 20 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 53</desc>
+  <a>
+    POLYGON ((180 120, 100 40, 20 180, 180 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 54</desc>
+  <a>
+    POLYGON ((20 20, 140 40, 140 120, 20 160, 80 80, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 55</desc>
+  <a>
+    POLYGON ((20 20, 140 40, 140 140, 20 180, 80 100, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 56</desc>
+  <a>
+    POLYGON ((40 180, 60 100, 180 100, 200 180, 120 120, 40 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 57</desc>
+  <a>
+    POLYGON ((20 180, 60 80, 180 80, 220 180, 120 120, 20 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 58</desc>
+  <a>
+    POLYGON ((40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 59</desc>
+  <a>
+    POLYGON ((60 100, 180 100, 220 180, 120 140, 20 180, 60 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 60</desc>
+  <a>
+    POLYGON ((20 20, 20 140, 120 120, 120 40, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 61</desc>
+  <a>
+    POLYGON ((20 20, 20 180, 140 140, 140 60, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 62</desc>
+  <a>
+    POLYGON ((20 20, 120 40, 120 120, 20 140, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 63</desc>
+  <a>
+    POLYGON ((120 40, 20 20, 20 140, 120 120, 120 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 64</desc>
+  <a>
+    POLYGON ((20 20, 140 60, 140 140, 20 180, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 65</desc>
+  <a>
+    POLYGON ((140 60, 20 20, 20 180, 140 140, 140 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 66</desc>
+  <a>
+    POLYGON ((20 20, 60 120, 140 120, 180 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 67</desc>
+  <a>
+    POLYGON ((20 40, 120 40, 120 120, 20 140, 20 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 68</desc>
+  <a>
+    POLYGON ((20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 69</desc>
+  <a>
+    POLYGON ((150 150, 330 150, 250 70, 70 70, 150 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 70</desc>
+  <a>
+    POLYGON ((150 150, 270 150, 140 20, 20 20, 150 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 71</desc>
+  <a>
+    POLYGON ((150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 72</desc>
+  <a>
+    POLYGON ((150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 73</desc>
+  <a>
+    POLYGON ((20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, 70 40, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 74</desc>
+  <a>
+    POLYGON ((190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, 200 120, 120 120, 190 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 75</desc>
+  <a>
+    POLYGON ((70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, 40 90, 60 130, 20 90, 60 140, 20 130, 70 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 76</desc>
+  <a>
+    POLYGON ((60 160, 220 160, 220 20, 60 20, 60 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 77</desc>
+  <a>
+    POLYGON ((60 160, 20 200, 260 200, 220 160, 140 80, 60 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 78</desc>
+  <a>
+    POLYGON ((60 160, 20 200, 260 200, 140 80, 60 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 79</desc>
+  <a>
+    POLYGON ((20 200, 140 80, 260 200, 20 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 80</desc>
+  <a>
+    POLYGON ((20 200, 60 160, 140 80, 220 160, 260 200, 20 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 81</desc>
+  <a>
+    POLYGON ((20 200, 60 160, 140 80, 260 200, 20 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 82</desc>
+  <a>
+    POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 83</desc>
+  <a>
+    POLYGON ((100 100, 1000000 110, 10000000 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 84</desc>
+  <a>
+    POLYGON ((100 0, 100 200, 200 200, 200 0, 100 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 85</desc>
+  <a>
+    POLYGON ((120 0, 120 200, 200 200, 200 0, 120 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 86</desc>
+  <a>
+    POLYGON ((0 0, 0 200, 110 200, 110 0, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 87</desc>
+  <a>
+    POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 88</desc>
+  <a>
+    POLYGON ((100 100, 2100 110, 2100 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 89</desc>
+  <a>
+    POLYGON ((100 100, 2101 110, 2101 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 90</desc>
+  <a>
+    POLYGON ((100 100, 200 200, 200 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 91</desc>
+  <a>
+    POLYGON ((100 100, 1000000 110, 1000000 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 93</desc>
+  <a>
+    POLYGON ((120 100, 120 200, 200 200, 200 100, 120 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 94</desc>
+  <a>
+    POLYGON ((100 100, 500 110, 500 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 95</desc>
+  <a>
+    POLYGON ((100 100, 501 110, 501 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 96</desc>
+  <a>
+    POLYGON ((120 100, 130 200, 200 200, 200 100, 120 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 97</desc>
+  <a>
+    POLYGON ((120 100, 17 200, 200 200, 200 100, 120 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 98</desc>
+  <a>
+    POLYGON ((101 99, 101 1000000, 102 1000000, 101 99))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 99</desc>
+  <a>
+    POLYGON ((100 100, 200 101, 200 100, 100 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 100</desc>
+  <a>
+    POLYGON ((16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 101</desc>
+  <a>
+    POLYGON ((10 307, 22 307, 153 34, 22 34, 10 307))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 102</desc>
+  <a>
+    POLYGON ((160 200, 310 20, 20 20, 160 200), (160 200, 260 40, 70 40, 160 200))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 103</desc>
+  <a>
+    POLYGON ((170 120, 240 100, 260 50, 190 70, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 104</desc>
+  <a>
+    POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150), (170 120, 330 120, 260 50, 100 50, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 105</desc>
+  <a>
+    POLYGON ((270 90, 200 50, 150 80, 210 120, 270 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 106</desc>
+  <a>
+    POLYGON ((170 120, 260 100, 240 60, 150 80, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 107</desc>
+  <a>
+    POLYGON ((220 120, 270 80, 200 60, 160 100, 220 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 108</desc>
+  <a>
+    POLYGON ((260 50, 180 70, 180 110, 260 90, 260 50))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 109</desc>
+  <a>
+    POLYGON ((230 110, 290 80, 190 60, 140 90, 230 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 110</desc>
+  <a>
+    POLYGON ((170 120, 330 120, 260 50, 100 50, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 111</desc>
+  <a>
+    POLYGON ((170 120, 330 120, 280 70, 120 70, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 112</desc>
+  <a>
+    POLYGON ((170 120, 300 120, 250 70, 120 70, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 113</desc>
+  <a>
+    POLYGON ((190 100, 310 100, 260 50, 140 50, 190 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 114</desc>
+  <a>
+    POLYGON ((280 130, 360 130, 270 40, 190 40, 280 130))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 115</desc>
+  <a>
+    POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150), (170 120, 250 120, 180 50, 100 50, 170 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 116</desc>
+  <a>
+    POLYGON ((220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, 390 140, 150 140, 40 30, 230 30, 280 80, 220 80))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 117</desc>
+  <a>
+    POLYGON ((260 130, 360 130, 280 40, 170 40, 260 130))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 118</desc>
+  <a>
+    POLYGON ((240 110, 340 110, 290 60, 190 60, 240 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 119</desc>
+  <a>
+    POLYGON ((250 120, 350 120, 280 50, 180 50, 250 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 120</desc>
+  <a>
+    POLYGON ((230 210, 230 20, 20 20, 20 210, 230 210), (120 180, 50 50, 200 50, 120 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 121</desc>
+  <a>
+    POLYGON ((230 210, 230 20, 20 20, 20 210, 230 210), (140 40, 40 40, 40 170, 140 40), (110 190, 210 190, 210 50, 110 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 122</desc>
+  <a>
+    POLYGON ((280 190, 330 150, 200 110, 150 150, 280 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 123</desc>
+  <a>
+    MULTIPOLYGON (((140 110, 260 110, 170 20, 50 20, 140 110)), ((300 270, 420 270, 340 190, 220 190, 300 270)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 124</desc>
+  <a>
+    POLYGON ((80 190, 220 190, 140 110, 0 110, 80 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 125</desc>
+  <a>
+    POLYGON ((330 150, 200 110, 150 150, 280 190, 330 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 126</desc>
+  <a>
+    POLYGON ((290 190, 340 150, 220 120, 170 170, 290 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 127</desc>
+  <a>
+    POLYGON ((220 190, 340 190, 260 110, 140 110, 220 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 128</desc>
+  <a>
+    POLYGON ((140 190, 220 190, 100 70, 20 70, 140 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 129</desc>
+  <a>
+    POLYGON ((140 220, 60 140, 140 60, 220 140, 140 220))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 130</desc>
+  <a>
+    MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), ((20 100, 100 100, 100 180, 20 180, 20 100)), ((100 180, 180 180, 180 260, 100 260, 100 180)), ((180 100, 260 100, 260 180, 180 180, 180 100)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 131</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110)), ((110 110, 150 20, 70 20, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 132</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 160 160, 210 110, 160 60, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 133</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 150 20, 70 20, 110 110), (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 134</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 160 160, 210 110, 160 60, 110 110), (110 110, 160 130, 160 90, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110), (110 110, 60 90, 60 130, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 135</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 70 200, 200 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 200 20, 70 20, 110 110), (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 136</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 20 200, 200 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 200 20, 20 20, 110 110), (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 137</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 70 200, 210 110, 70 20, 110 110), (110 110, 110 140, 150 110, 110 80, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110), (110 110, 60 90, 60 130, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 138</desc>
+  <a>
+    POLYGON ((100 60, 140 100, 100 140, 60 100, 100 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 139</desc>
+  <a>
+    MULTIPOLYGON (((80 40, 120 40, 120 80, 80 80, 80 40)), ((120 80, 160 80, 160 120, 120 120, 120 80)), ((80 120, 120 120, 120 160, 80 160, 80 120)), ((40 80, 80 80, 80 120, 40 120, 40 80)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 140</desc>
+  <a>
+    LINESTRING (150 150, 40 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 141</desc>
+  <a>
+    POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 142</desc>
+  <a>
+    LINESTRING (40 40, 50 130, 130 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 143</desc>
+  <a>
+    LINESTRING (40 230, 150 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 144</desc>
+  <a>
+    LINESTRING (210 150, 330 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 145</desc>
+  <a>
+    LINESTRING (200 150, 310 150, 360 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 146</desc>
+  <a>
+    LINESTRING (180 150, 250 150, 230 250, 370 250, 410 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 147</desc>
+  <a>
+    LINESTRING (210 210, 220 150, 320 150, 370 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 148</desc>
+  <a>
+    LINESTRING (20 60, 150 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 149</desc>
+  <a>
+    LINESTRING (60 90, 310 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 150</desc>
+  <a>
+    LINESTRING (90 210, 210 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 151</desc>
+  <a>
+    LINESTRING (290 10, 130 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 152</desc>
+  <a>
+    LINESTRING (30 100, 100 100, 180 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 153</desc>
+  <a>
+    LINESTRING (20 100, 100 100, 360 100, 410 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 154</desc>
+  <a>
+    LINESTRING (90 210, 150 150, 210 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 155</desc>
+  <a>
+    LINESTRING (180 90, 280 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 156</desc>
+  <a>
+    LINESTRING (70 70, 80 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 157</desc>
+  <a>
+    LINESTRING (130 20, 150 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 158</desc>
+  <a>
+    LINESTRING (70 70, 80 20, 140 20, 150 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 159</desc>
+  <a>
+    LINESTRING (170 50, 170 20, 240 20, 260 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 160</desc>
+  <a>
+    LINESTRING (50 100, 140 190, 280 190)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 161</desc>
+  <a>
+    LINESTRING (140 60, 180 100, 290 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 162</desc>
+  <a>
+    LINESTRING (170 120, 210 80, 270 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 163</desc>
+  <a>
+    LINESTRING (170 120, 260 50)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 164</desc>
+  <a>
+    LINESTRING (190 90, 190 270)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 165</desc>
+  <a>
+    POLYGON ((190 190, 360 20, 20 20, 190 190), (190 190, 280 50, 100 50, 190 190))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 166</desc>
+  <a>
+    LINESTRING (60 160, 150 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 167</desc>
+  <a>
+    POLYGON ((190 190, 360 20, 20 20, 190 190), (110 110, 250 100, 140 30, 110 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 168</desc>
+  <a>
+    POLYGON ((190 190, 20 20, 360 20, 190 190), (250 100, 110 110, 140 30, 250 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 169</desc>
+  <a>
+    LINESTRING (190 90, 190 190, 190 270)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 170</desc>
+  <a>
+    LINESTRING (60 160, 110 110, 150 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 171</desc>
+  <a>
+    POLYGON ((190 190, 110 110, 20 20, 360 20, 190 190), (250 100, 110 110, 140 30, 250 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 172</desc>
+  <a>
+    LINESTRING (130 110, 180 110, 190 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 173</desc>
+  <a>
+    POLYGON ((20 200, 240 200, 240 20, 20 20, 20 200), (130 110, 60 180, 60 40, 130 110), (130 110, 200 40, 200 180, 130 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 174</desc>
+  <a>
+    LINESTRING (80 110, 180 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 175</desc>
+  <a>
+    POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (60 180, 130 110, 60 40, 60 180), (130 110, 200 40, 200 180, 130 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 176</desc>
+  <a>
+    LINESTRING (80 110, 170 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 177</desc>
+  <a>
+    POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (130 110, 60 40, 60 180, 130 110), (130 180, 130 40, 200 110, 130 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 178</desc>
+  <a>
+    LINESTRING (80 110, 130 110, 170 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 179</desc>
+  <a>
+    LINESTRING (80 110, 130 110, 180 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 180</desc>
+  <a>
+    LINESTRING (160 70, 320 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 181</desc>
+  <a>
+    LINESTRING (160 70, 200 110, 280 190, 320 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 182</desc>
+  <a>
+    LINESTRING (70 50, 70 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 183</desc>
+  <a>
+    MULTIPOLYGON (((0 0, 0 100, 140 100, 140 0, 0 0)), ((20 170, 70 100, 130 170, 20 170)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 184</desc>
+  <a>
+    LINESTRING (110 110, 20 200, 200 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 185</desc>
+  <a>
+    POLYGON ((20 20, 200 20, 110 110, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 186</desc>
+  <a>
+    LINESTRING (150 70, 160 110, 200 60, 150 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 187</desc>
+  <a>
+    LINESTRING (80 60, 120 40, 120 70, 80 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 188</desc>
+  <a>
+    POLYGON ((110 110, 200 20, 20 20, 110 110), (110 90, 50 30, 170 30, 110 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 189</desc>
+  <a>
+    LINESTRING (20 20, 200 20, 110 110, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 190</desc>
+  <a>
+    LINESTRING (110 90, 170 30, 50 30, 110 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 191</desc>
+  <a>
+    LINESTRING (110 110, 170 50, 170 110, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 192</desc>
+  <a>
+    LINESTRING (110 90, 70 50, 130 50, 110 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 193</desc>
+  <a>
+    LINESTRING (110 60, 20 150, 200 150, 110 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 194</desc>
+  <a>
+    LINESTRING (110 130, 110 70, 200 100, 110 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 195</desc>
+  <a>
+    LINESTRING (110 90, 160 40, 60 40, 110 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 196</desc>
+  <a>
+    LINESTRING (110 100, 40 30, 180 30, 110 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 197</desc>
+  <a>
+    POLYGON ((110 110, 200 20, 20 20, 110 110), (110 90, 60 40, 160 40, 110 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 198</desc>
+  <a>
+    LINESTRING (110 110, 180 30, 40 30, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 199</desc>
+  <a>
+    LINESTRING (110 90, 180 30, 40 30, 110 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 200</desc>
+  <a>
+    LINESTRING (110 90, 50 30, 180 30, 110 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 201</desc>
+  <a>
+    LINESTRING (110 110, 200 200, 200 110, 110 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 202</desc>
+  <a>
+    POLYGON ((110 110, 200 20, 20 20, 110 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 203</desc>
+  <a>
+    LINESTRING (110 110, 200 200, 110 110, 20 200, 20 110, 200 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 204</desc>
+  <a>
+    LINESTRING (110 110, 20 110, 200 110, 50 110, 110 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 205</desc>
+  <a>
+    LINESTRING (110 110, 20 200, 110 200, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 206</desc>
+  <a>
+    LINESTRING (110 110, 170 50, 20 200, 20 110, 200 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 207</desc>
+  <a>
+    LINESTRING (110 110, 180 40, 110 40, 110 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 208</desc>
+  <a>
+    LINESTRING (110 60, 50 30, 170 30, 90 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 209</desc>
+  <a>
+    LINESTRING (110 110, 180 40, 110 40, 110 110, 70 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 210</desc>
+  <a>
+    LINESTRING (230 70, 170 120, 190 60, 140 60, 170 120, 270 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 211</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (200 200, 110 110, 20 210, 110 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 212</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (60 180, 60 110, 160 110, 110 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 213</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (200 200, 110 110, 20 200, 110 200, 110 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 214</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (110 50, 110 170, 110 70, 110 150, 200 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 215</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (50 110, 170 110, 110 170, 110 50, 110 170, 110 50))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 216</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (110 60, 110 160, 200 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 217</desc>
+  <a>
+    MULTILINESTRING ((110 100, 40 30, 180 30), (170 30, 110 90, 50 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 218</desc>
+  <a>
+    MULTILINESTRING ((110 110, 60 40, 70 20, 150 20, 170 40), (180 30, 40 30, 110 80))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 219</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110, 200 160), (110 110, 200 110, 200 70, 20 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 220</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 20 20, 200 20, 110 110)), ((110 110, 20 200, 200 200, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 221</desc>
+  <a>
+    MULTILINESTRING ((20 160, 70 110, 150 110, 200 160), (110 110, 20 110, 50 80, 70 110, 200 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 222</desc>
+  <a>
+    MULTILINESTRING ((20 110, 200 110), (110 110, 20 170, 20 130, 200 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 223</desc>
+  <a>
+    LINESTRING (0 0, 0 50, 50 50, 50 0, 0 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 224</desc>
+  <a>
+    MULTILINESTRING ((0 0, 0 50), (0 50, 50 50), (50 50, 50 0), (50 0, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 225</desc>
+  <a>
+    LINESTRING (40 180, 140 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 226</desc>
+  <a>
+    MULTIPOLYGON (((20 320, 180 320, 180 180, 20 180, 20 320)), ((20 180, 20 80, 180 80, 180 180, 20 180)))
+  </a>
+  <test> <op name="isValid" arg1="A"> false </op> </test>
+</case>
+<case>
+  <desc>Test 227</desc>
+  <a>
+    MULTIPOLYGON (((20 320, 180 320, 180 180, 20 180, 20 320)), ((60 180, 60 80, 180 80, 180 180, 60 180)))
+  </a>
+  <test> <op name="isValid" arg1="A"> false </op> </test>
+</case>
+<case>
+  <desc>Test 228</desc>
+  <a>
+    LINESTRING (0 0, 60 0, 60 60, 60 0, 120 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 229</desc>
+  <a>
+    MULTILINESTRING ((0 0, 60 0), (60 0, 120 0), (60 0, 60 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 230</desc>
+  <a>
+    LINESTRING (40 40, 120 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 231</desc>
+  <a>
+    LINESTRING (40 40, 60 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 232</desc>
+  <a>
+    LINESTRING (60 240, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 233</desc>
+  <a>
+    LINESTRING (40 40, 180 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 234</desc>
+  <a>
+    LINESTRING (120 120, 20 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 235</desc>
+  <a>
+    LINESTRING (60 240, 120 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 236</desc>
+  <a>
+    LINESTRING (20 180, 140 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 237</desc>
+  <a>
+    LINESTRING (40 120, 120 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 238</desc>
+  <a>
+    LINESTRING (40 40, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 239</desc>
+  <a>
+    LINESTRING (100 100, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 240</desc>
+  <a>
+    LINESTRING (40 120, 120 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 241</desc>
+  <a>
+    LINESTRING (20 20, 180 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 242</desc>
+  <a>
+    LINESTRING (20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 243</desc>
+  <a>
+    LINESTRING (50 50, 140 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 244</desc>
+  <a>
+    LINESTRING (180 180, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 245</desc>
+  <a>
+    LINESTRING (120 120, 260 260)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 246</desc>
+  <a>
+    LINESTRING (260 260, 120 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 247</desc>
+  <a>
+    LINESTRING (40 40, 100 100, 200 120, 80 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 248</desc>
+  <a>
+    LINESTRING (40 40, 20 100, 40 160, 20 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 249</desc>
+  <a>
+    LINESTRING (20 200, 40 160, 20 100, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 250</desc>
+  <a>
+    LINESTRING (80 240, 200 120, 100 100, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 251</desc>
+  <a>
+    LINESTRING (60 60, 60 230, 140 230, 250 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 252</desc>
+  <a>
+    LINESTRING (20 20, 60 60, 250 160, 310 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 253</desc>
+  <a>
+    LINESTRING (20 20, 110 110, 200 110, 320 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 254</desc>
+  <a>
+    LINESTRING (60 110, 60 250, 360 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 255</desc>
+  <a>
+    LINESTRING (60 110, 110 160, 250 160, 310 160, 360 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 256</desc>
+  <a>
+    LINESTRING (360 210, 310 160, 110 160, 60 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 257</desc>
+  <a>
+    LINESTRING (160 160, 240 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 258</desc>
+  <a>
+    LINESTRING (240 240, 160 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 259</desc>
+  <a>
+    LINESTRING (60 150, 110 100, 170 100, 110 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 260</desc>
+  <a>
+    LINESTRING (200 120, 200 190, 150 240, 200 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 261</desc>
+  <a>
+    LINESTRING (200 240, 150 240, 200 200, 200 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 262</desc>
+  <a>
+    LINESTRING (60 230, 80 140, 120 140, 140 230)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 263</desc>
+  <a>
+    LINESTRING (60 110, 200 110, 250 160, 300 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 264</desc>
+  <a>
+    LINESTRING (60 110, 200 110, 250 160, 300 210, 360 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 265</desc>
+  <a>
+    LINESTRING (60 110, 220 110, 250 160, 280 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 266</desc>
+  <a>
+    LINESTRING (60 110, 150 110, 200 160, 250 110, 360 110, 360 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 267</desc>
+  <a>
+    LINESTRING (130 160, 160 110, 220 110, 250 160, 250 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 268</desc>
+  <a>
+    LINESTRING (130 160, 160 110, 190 110, 230 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 269</desc>
+  <a>
+    LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 360 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 270</desc>
+  <a>
+    LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 271</desc>
+  <a>
+    LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 380 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 272</desc>
+  <a>
+    LINESTRING (110 160, 160 110, 200 110, 250 160, 250 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 273</desc>
+  <a>
+    LINESTRING (110 160, 180 110, 250 160, 320 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 274</desc>
+  <a>
+    LINESTRING (140 160, 180 80, 220 160, 250 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 275</desc>
+  <a>
+    LINESTRING (40 40, 100 100, 200 120, 130 190)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 276</desc>
+  <a>
+    LINESTRING (20 130, 70 130, 160 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 277</desc>
+  <a>
+    LINESTRING (40 160, 40 100, 110 40, 170 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 278</desc>
+  <a>
+    LINESTRING (130 110, 180 160, 230 110, 280 160, 330 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 279</desc>
+  <a>
+    LINESTRING (30 140, 80 140, 100 100, 200 30)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 280</desc>
+  <a>
+    LINESTRING (110 110, 110 160, 180 110, 250 160, 250 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 281</desc>
+  <a>
+    LINESTRING (20 20, 80 80, 160 80, 240 80, 300 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 282</desc>
+  <a>
+    LINESTRING (20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, 240 80, 300 80, 270 110, 200 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 283</desc>
+  <a>
+    LINESTRING (20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, 40 190, 230 190, 20 200, 230 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 284</desc>
+  <a>
+    LINESTRING (30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 285</desc>
+  <a>
+    LINESTRING (80 240, 120 200, 200 120, 100 100, 80 80, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 286</desc>
+  <a>
+    LINESTRING (260 210, 240 130, 280 120, 260 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 287</desc>
+  <a>
+    LINESTRING (100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 288</desc>
+  <a>
+    LINESTRING (140 130, 100 110, 120 60, 170 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 289</desc>
+  <a>
+    LINESTRING (60 110, 110 160, 310 160, 360 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 290</desc>
+  <a>
+    LINESTRING (60 110, 110 160, 250 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 291</desc>
+  <a>
+    LINESTRING (110 160, 310 160, 340 190)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 292</desc>
+  <a>
+    LINESTRING (140 160, 250 160, 310 160, 340 190)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 293</desc>
+  <a>
+    LINESTRING (110 160, 250 160, 310 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 294</desc>
+  <a>
+    LINESTRING (200 120, 100 100, 40 40, 140 80, 200 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 295</desc>
+  <a>
+    LINESTRING (280 240, 240 140, 200 120, 100 100, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 296</desc>
+  <a>
+    LINESTRING (80 190, 140 140, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 297</desc>
+  <a>
+    LINESTRING (240 200, 200 260, 80 240, 140 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 298</desc>
+  <a>
+    LINESTRING (140 180, 80 240, 200 260, 240 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 299</desc>
+  <a>
+    LINESTRING (280 240, 240 140, 200 120, 80 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 300</desc>
+  <a>
+    LINESTRING (20 80, 120 80, 200 80, 260 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 301</desc>
+  <a>
+    LINESTRING (100 100, 200 120, 240 140, 280 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 302</desc>
+  <a>
+    LINESTRING (280 240, 240 140, 200 120, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 303</desc>
+  <a>
+    LINESTRING (80 20, 80 80, 240 80, 300 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 304</desc>
+  <a>
+    LINESTRING (20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, 300 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 305</desc>
+  <a>
+    LINESTRING (100 100, 20 180, 180 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 306</desc>
+  <a>
+    LINESTRING (100 100, 180 20, 20 20, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 307</desc>
+  <a>
+    LINESTRING (20 100, 180 100, 100 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 308</desc>
+  <a>
+    LINESTRING (100 40, 100 160, 180 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 309</desc>
+  <a>
+    LINESTRING (20 100, 100 100, 180 100, 100 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 310</desc>
+  <a>
+    LINESTRING (100 100, 160 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 311</desc>
+  <a>
+    LINESTRING (100 100, 180 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 312</desc>
+  <a>
+    LINESTRING (60 60, 100 100, 140 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 313</desc>
+  <a>
+    LINESTRING (100 100, 190 10, 190 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 314</desc>
+  <a>
+    LINESTRING (100 100, 160 40, 160 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 315</desc>
+  <a>
+    LINESTRING (60 140, 160 40, 160 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 316</desc>
+  <a>
+    LINESTRING (20 20, 140 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 317</desc>
+  <a>
+    LINESTRING (80 80, 20 80, 140 80, 80 20, 80 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 318</desc>
+  <a>
+    LINESTRING (80 80, 20 80, 140 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 319</desc>
+  <a>
+    LINESTRING (80 80, 140 80, 80 20, 80 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 320</desc>
+  <a>
+    LINESTRING (80 80, 20 80, 140 80, 80 20, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 321</desc>
+  <a>
+    LINESTRING (80 80, 20 80, 140 80, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 322</desc>
+  <a>
+    LINESTRING (80 80, 20 80, 20 140, 140 20, 80 20, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 323</desc>
+  <a>
+    LINESTRING (20 140, 140 20, 100 20, 100 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 324</desc>
+  <a>
+    LINESTRING (140 80, 20 80, 120 80, 80 20, 80 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 325</desc>
+  <a>
+    LINESTRING (140 80, 20 80, 140 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 326</desc>
+  <a>
+    LINESTRING (140 80, 20 80, 80 140, 80 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 327</desc>
+  <a>
+    LINESTRING (140 80, 80 80, 20 80, 50 140, 50 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 328</desc>
+  <a>
+    LINESTRING (140 80, 20 80, 120 80, 80 20, 80 80, 80 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 329</desc>
+  <a>
+    LINESTRING (140 80, 20 80, 80 80, 140 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 330</desc>
+  <a>
+    LINESTRING (140 80, 20 80, 80 140, 80 80, 80 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 331</desc>
+  <a>
+    LINESTRING (130 150, 220 150, 220 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 332</desc>
+  <a>
+    LINESTRING (130 240, 130 150, 220 20, 50 20, 130 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 333</desc>
+  <a>
+    LINESTRING (30 150, 130 150, 250 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 334</desc>
+  <a>
+    LINESTRING (30 150, 250 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 335</desc>
+  <a>
+    LINESTRING (130 240, 130 20, 30 20, 130 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 336</desc>
+  <a>
+    LINESTRING (120 240, 120 20, 20 20, 120 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 337</desc>
+  <a>
+    LINESTRING (200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 338</desc>
+  <a>
+    LINESTRING (110 110, 200 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 339</desc>
+  <a>
+    LINESTRING (20 110, 200 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 340</desc>
+  <a>
+    LINESTRING (90 200, 90 130, 110 110, 150 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 341</desc>
+  <a>
+    LINESTRING (200 200, 20 20, 200 20, 20 200, 20 130, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 342</desc>
+  <a>
+    LINESTRING (200 110, 110 110, 90 130, 90 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 343</desc>
+  <a>
+    LINESTRING (80 80, 150 80, 210 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 344</desc>
+  <a>
+    MULTILINESTRING ((20 20, 140 140), (20 140, 140 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 345</desc>
+  <a>
+    LINESTRING (40 80, 160 200, 260 20, 40 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 346</desc>
+  <a>
+    LINESTRING (40 80, 260 20, 160 200, 40 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 347</desc>
+  <a>
+    LINESTRING (260 20, 40 80, 160 200, 260 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 348</desc>
+  <a>
+    LINESTRING (100 140, 160 200, 260 20, 40 80, 100 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 349</desc>
+  <a>
+    LINESTRING (100 100, 180 180, 20 180, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 350</desc>
+  <a>
+    LINESTRING (40 150, 40 40, 150 40, 150 150, 40 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 351</desc>
+  <a>
+    LINESTRING (40 150, 150 40, 170 20, 170 190, 40 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 352</desc>
+  <a>
+    LINESTRING (180 100, 20 100, 100 180, 180 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 353</desc>
+  <a>
+    LINESTRING (180 180, 100 100, 20 180, 180 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 354</desc>
+  <a>
+    LINESTRING (20 180, 100 100, 20 20, 20 180)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 355</desc>
+  <a>
+    LINESTRING (100 20, 100 180, 180 100, 100 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 356</desc>
+  <a>
+    LINESTRING (170 20, 20 170, 170 170, 170 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 357</desc>
+  <a>
+    LINESTRING (40 150, 150 150, 90 210, 40 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 358</desc>
+  <a>
+    LINESTRING (20 150, 170 150, 90 230, 20 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 359</desc>
+  <a>
+    LINESTRING (40 150, 150 150, 150 40, 20 40, 20 150, 40 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 360</desc>
+  <a>
+    LINESTRING (110 110, 200 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 361</desc>
+  <a>
+    LINESTRING (200 20, 20 200, 200 200, 110 110, 110 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 362</desc>
+  <a>
+    LINESTRING (200 20, 20 200, 200 200, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 363</desc>
+  <a>
+    LINESTRING (110 110, 20 110, 110 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 364</desc>
+  <a>
+    LINESTRING (110 110, 200 200, 110 200, 200 110, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 365</desc>
+  <a>
+    LINESTRING (20 120, 120 120, 20 20, 120 20, 20 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 366</desc>
+  <a>
+    LINESTRING (170 100, 70 100, 170 170, 70 170, 170 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 367</desc>
+  <a>
+    LINESTRING (20 110, 110 110, 20 20, 110 20, 20 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 368</desc>
+  <a>
+    LINESTRING (110 160, 70 110, 60 160, 20 130, 110 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 369</desc>
+  <a>
+    LINESTRING (20 200, 200 200, 20 20, 200 20, 20 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 370</desc>
+  <a>
+    LINESTRING (20 110, 200 110, 200 160, 20 60, 20 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 371</desc>
+  <a>
+    LINESTRING (200 200, 110 110, 200 110, 110 200, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 372</desc>
+  <a>
+    LINESTRING (220 120, 120 20, 220 20, 120 120, 220 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 373</desc>
+  <a>
+    MULTILINESTRING ((70 20, 20 90, 70 170), (70 170, 120 90, 70 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 374</desc>
+  <a>
+    MULTILINESTRING ((20 20, 90 20, 170 20), (90 20, 90 80, 90 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 375</desc>
+  <a>
+    MULTILINESTRING ((90 140, 90 60, 90 20), (170 20, 130 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 376</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (130 100, 130 60, 90 20, 50 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 377</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 378</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 379</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (130 100, 90 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 380</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (120 100, 170 100, 90 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 381</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 382</desc>
+  <a>
+    MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60, 20 140, 90 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 383</desc>
+  <a>
+    MULTILINESTRING ((20 20, 90 90, 20 160), (90 160, 90 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 384</desc>
+  <a>
+    MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 120 120, 90 90, 160 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 385</desc>
+  <a>
+    MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 120 120, 90 90, 120 60, 160 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 386</desc>
+  <a>
+    MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 90 90, 160 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 387</desc>
+  <a>
+    POINT (20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 388</desc>
+  <a>
+    POLYGON ((60 120, 60 40, 160 40, 160 120, 60 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 389</desc>
+  <a>
+    POINT (70 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 390</desc>
+  <a>
+    POLYGON ((110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 391</desc>
+  <a>
+    POINT (110 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 392</desc>
+  <a>
+    POLYGON ((20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 393</desc>
+  <a>
+    POINT (100 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 394</desc>
+  <a>
+    POLYGON ((20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 395</desc>
+  <a>
+    POLYGON ((20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150))
+  </a>
+  <test> <op name="isValid" arg1="A"> false </op> </test>
+</case>
+<case>
+  <desc>Test 396</desc>
+  <a>
+    POINT (60 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 397</desc>
+  <a>
+    POINT (110 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 398</desc>
+  <a>
+    POINT (160 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 399</desc>
+  <a>
+    POINT (100 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 400</desc>
+  <a>
+    POINT (100 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 401</desc>
+  <a>
+    POINT (60 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 402</desc>
+  <a>
+    POLYGON ((190 190, 360 20, 20 20, 190 190), (280 50, 100 50, 190 140, 280 50))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 403</desc>
+  <a>
+    POINT (190 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 404</desc>
+  <a>
+    POINT (190 190)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 405</desc>
+  <a>
+    POINT (360 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 406</desc>
+  <a>
+    POINT (130 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 407</desc>
+  <a>
+    POINT (280 50)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 408</desc>
+  <a>
+    POINT (150 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 409</desc>
+  <a>
+    POINT (100 50)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 410</desc>
+  <a>
+    POINT (140 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 411</desc>
+  <a>
+    POINT (190 50)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 412</desc>
+  <a>
+    POLYGON ((190 190, 360 20, 20 20, 190 190), (90 50, 150 110, 190 50, 90 50), (190 50, 230 110, 290 50, 190 50))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 413</desc>
+  <a>
+    POINT (180 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 414</desc>
+  <a>
+    POLYGON ((190 190, 360 20, 20 20, 190 190), (180 140, 180 40, 80 40, 180 140), (180 90, 210 140, 310 40, 230 40, 180 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 415</desc>
+  <a>
+    MULTIPOINT (20 80, 110 160, 20 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 416</desc>
+  <a>
+    MULTIPOINT (20 80, 60 120, 20 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 417</desc>
+  <a>
+    MULTIPOINT (10 80, 110 170, 110 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 418</desc>
+  <a>
+    MULTIPOINT (10 80, 110 170, 160 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 419</desc>
+  <a>
+    MULTIPOINT (20 120, 60 120, 110 120, 160 120, 200 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 420</desc>
+  <a>
+    MULTIPOINT (60 120, 110 120, 160 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 421</desc>
+  <a>
+    MULTIPOINT (60 120, 160 120, 160 40, 60 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 422</desc>
+  <a>
+    MULTIPOINT (20 150, 60 120, 110 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 423</desc>
+  <a>
+    MULTIPOINT (110 80, 160 120, 200 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 424</desc>
+  <a>
+    MULTIPOINT (110 80, 110 120, 110 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 425</desc>
+  <a>
+    MULTIPOINT (110 170, 110 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 426</desc>
+  <a>
+    MULTIPOINT (60 120, 160 120, 110 80, 110 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 427</desc>
+  <a>
+    MULTIPOINT (90 80, 130 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 428</desc>
+  <a>
+    MULTIPOINT (60 120, 160 120, 110 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 429</desc>
+  <a>
+    MULTIPOINT (40 170, 40 90, 130 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 430</desc>
+  <a>
+    MULTIPOINT (90 170, 280 170, 190 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 431</desc>
+  <a>
+    MULTIPOINT (190 110, 150 70, 230 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 432</desc>
+  <a>
+    POINT (100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 433</desc>
+  <a>
+    MULTIPOLYGON (((20 100, 20 20, 100 20, 100 100, 20 100)), ((100 180, 100 100, 180 100, 180 180, 100 180)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 434</desc>
+  <a>
+    POINT (20 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 435</desc>
+  <a>
+    POINT (60 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 436</desc>
+  <a>
+    POINT (110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 437</desc>
+  <a>
+    MULTIPOLYGON (((110 110, 20 200, 200 200, 110 110), (110 110, 80 180, 140 180, 110 110)), ((110 110, 20 20, 200 20, 110 110), (110 110, 80 40, 140 40, 110 110)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 438</desc>
+  <a>
+    POINT (110 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 439</desc>
+  <a>
+    LINESTRING (90 80, 160 150, 300 150, 340 150, 340 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 440</desc>
+  <a>
+    POINT (90 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 441</desc>
+  <a>
+    POINT (340 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 442</desc>
+  <a>
+    POINT (230 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 443</desc>
+  <a>
+    POINT (160 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 444</desc>
+  <a>
+    POINT (90 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 445</desc>
+  <a>
+    LINESTRING (150 150, 20 20, 280 20, 150 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 446</desc>
+  <a>
+    POINT (150 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 447</desc>
+  <a>
+    POINT (150 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 448</desc>
+  <a>
+    POINT (100 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 449</desc>
+  <a>
+    POINT (220 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 450</desc>
+  <a>
+    LINESTRING (110 110, 220 20, 20 20, 110 110, 220 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 451</desc>
+  <a>
+    LINESTRING (110 110, 220 20, 20 20, 220 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 452</desc>
+  <a>
+    POINT (110 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 453</desc>
+  <a>
+    POINT (220 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 454</desc>
+  <a>
+    LINESTRING (220 220, 20 20, 220 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 455</desc>
+  <a>
+    POINT (20 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 456</desc>
+  <a>
+    LINESTRING (20 200, 20 20, 110 20, 20 110, 110 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 457</desc>
+  <a>
+    POINT (20 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 458</desc>
+  <a>
+    LINESTRING (20 200, 200 20, 20 20, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 459</desc>
+  <a>
+    LINESTRING (20 200, 200 20, 140 20, 140 80, 80 140, 20 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 460</desc>
+  <a>
+    POINT (80 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 461</desc>
+  <a>
+    LINESTRING (20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 462</desc>
+  <a>
+    LINESTRING (20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 463</desc>
+  <a>
+    LINESTRING (20 200, 110 110, 200 20, 20 20, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 464</desc>
+  <a>
+    LINESTRING (20 200, 200 20, 20 20, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 465</desc>
+  <a>
+    LINESTRING (20 200, 110 110, 20 20, 200 20, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 466</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 467</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 468</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 469</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 470</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 471</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 200 20, 20 20, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 472</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 473</desc>
+  <a>
+    LINESTRING (110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 474</desc>
+  <a>
+    LINESTRING (200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 475</desc>
+  <a>
+    LINESTRING (200 200, 20 20, 200 20, 20 200, 110 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 476</desc>
+  <a>
+    LINESTRING (200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 477</desc>
+  <a>
+    LINESTRING (200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 478</desc>
+  <a>
+    POINT (110 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 479</desc>
+  <a>
+    LINESTRING (110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 480</desc>
+  <a>
+    LINESTRING (110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 481</desc>
+  <a>
+    LINESTRING (110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 482</desc>
+  <a>
+    LINESTRING (110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 483</desc>
+  <a>
+    LINESTRING (110 110, 200 200, 110 200, 110 20, 20 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 484</desc>
+  <a>
+    POINT (140 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 485</desc>
+  <a>
+    LINESTRING (110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 486</desc>
+  <a>
+    POINT (90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 487</desc>
+  <a>
+    LINESTRING (90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 488</desc>
+  <a>
+    LINESTRING (90 130, 20 130, 20 200, 200 20, 20 20, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 489</desc>
+  <a>
+    LINESTRING (200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 490</desc>
+  <a>
+    LINESTRING (110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 491</desc>
+  <a>
+    LINESTRING (110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 492</desc>
+  <a>
+    LINESTRING (110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 493</desc>
+  <a>
+    LINESTRING (110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 494</desc>
+  <a>
+    LINESTRING (200 200, 20 20, 200 20, 20 200, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 495</desc>
+  <a>
+    LINESTRING (200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 496</desc>
+  <a>
+    LINESTRING (200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 497</desc>
+  <a>
+    LINESTRING (90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 498</desc>
+  <a>
+    LINESTRING (90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 499</desc>
+  <a>
+    LINESTRING (90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 500</desc>
+  <a>
+    LINESTRING (90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 501</desc>
+  <a>
+    LINESTRING (90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 502</desc>
+  <a>
+    LINESTRING (110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 503</desc>
+  <a>
+    POINT (110 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 504</desc>
+  <a>
+    LINESTRING (110 200, 110 110, 20 20, 200 20, 110 110, 110 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 505</desc>
+  <a>
+    LINESTRING (20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 506</desc>
+  <a>
+    MULTIPOINT (50 250, 90 220, 130 190)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 507</desc>
+  <a>
+    MULTIPOINT (180 180, 230 130, 280 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 508</desc>
+  <a>
+    MULTIPOINT (50 120, 90 80, 130 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 509</desc>
+  <a>
+    MULTIPOINT (300 280, 340 240, 380 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 510</desc>
+  <a>
+    MULTIPOINT (230 150, 260 120, 290 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 511</desc>
+  <a>
+    MULTIPOINT (200 190, 240 150, 270 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 512</desc>
+  <a>
+    MULTIPOINT (160 150, 190 120, 220 90)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 513</desc>
+  <a>
+    MULTIPOINT (120 190, 160 150, 200 110)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 514</desc>
+  <a>
+    MULTIPOINT (90 80, 160 150, 340 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 515</desc>
+  <a>
+    MULTIPOINT (90 80, 160 150, 300 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 516</desc>
+  <a>
+    MULTIPOINT (90 80, 160 150, 240 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 517</desc>
+  <a>
+    MULTIPOINT (90 80, 130 120, 210 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 518</desc>
+  <a>
+    MULTIPOINT (130 120, 210 150, 340 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 519</desc>
+  <a>
+    MULTIPOINT (160 150, 240 150, 340 210)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 520</desc>
+  <a>
+    MULTIPOINT (160 150, 300 150, 340 150)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 521</desc>
+  <a>
+    MULTIPOINT (160 150, 240 150, 340 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 522</desc>
+  <a>
+    POINT (40 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 523</desc>
+  <a>
+    POINT (40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 524</desc>
+  <a>
+    MULTIPOINT (20 20, 80 80, 20 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 525</desc>
+  <a>
+    MULTIPOINT (40 40, 80 60, 120 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 526</desc>
+  <a>
+    MULTIPOINT (40 40, 120 100, 80 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 527</desc>
+  <a>
+    MULTIPOINT (40 40, 60 100, 100 60, 120 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 528</desc>
+  <a>
+    MULTIPOINT (20 120, 60 60, 100 100, 140 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 529</desc>
+  <a>
+    MULTIPOINT (20 20, 80 70, 140 120, 200 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 530</desc>
+  <a>
+    MULTIPOINT (20 20, 140 120, 80 70, 200 170)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 531</desc>
+  <a>
+    MULTIPOINT (80 70, 20 20, 200 170, 140 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 532</desc>
+  <a>
+    MULTIPOINT (80 70, 140 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 533</desc>
+  <a>
+    MULTIPOINT (140 120, 80 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 534</desc>
+  <a>
+    MULTIPOINT (80 170, 140 120, 200 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 535</desc>
+  <a>
+    MULTIPOINT (80 170, 140 120, 200 80, 80 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 536</desc>
+  <a>
+    POINT (10 10)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 537</desc>
+  <a>
+    MULTIPOINT (10 10, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 538</desc>
+  <a>
+    LINESTRING (10 10, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 539</desc>
+  <a>
+    LINESTRING (10 10, 20 20, 20 10, 10 10)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 540</desc>
+  <a>
+    LINESTRING (40 40, 100 100, 180 100, 180 180, 100 180, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 541</desc>
+  <a>
+    MULTILINESTRING ((10 10, 20 20), (20 20, 30 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 542</desc>
+  <a>
+    MULTILINESTRING ((10 10, 20 20), (20 20, 30 20), (20 20, 30 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 543</desc>
+  <a>
+    MULTILINESTRING ((10 10, 20 20), (20 20, 30 20), (20 20, 30 30), (20 20, 30 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 544</desc>
+  <a>
+    MULTILINESTRING ((10 10, 20 20), (20 20, 20 30, 30 30, 30 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 545</desc>
+  <a>
+    MULTILINESTRING ((10 10, 20 20, 20 30, 30 30, 30 20, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 546</desc>
+  <a>
+    POLYGON ((40 60, 420 60, 420 320, 40 320, 40 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 547</desc>
+  <a>
+    POLYGON ((40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 548</desc>
+  <a>
+    MULTIPOINT (130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 549</desc>
+  <a>
+    POLYGON ((10 10, 100 10, 100 100, 10 100, 10 10))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 550</desc>
+  <a>
+    LINESTRING (30 220, 240 220, 240 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 551</desc>
+  <a>
+    LINESTRING (110 290, 110 100, 110 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 552</desc>
+  <a>
+    LINESTRING (120 230, 120 200, 150 180, 180 220, 160 260, 90 250, 80 190, 140 110, 230 150, 240 230, 180 320, 60 310, 40 160, 140 50, 280 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 553</desc>
+  <a>
+    POLYGON ((200 360, 230 210, 100 190, 270 150, 360 10, 320 200, 490 230, 280 240, 200 360), (220 300, 250 200, 150 190, 290 150, 330 70, 310 210, 390 230, 280 230, 220 300))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 554</desc>
+  <a>
+    MULTIPOINT (70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 555</desc>
+  <a>
+    MULTIPOINT (140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 260 110, 170 130)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 556</desc>
+  <a>
+    GEOMETRYCOLLECTION (POINT (110 300), POINT (100 110), POINT (130 210), POINT (150 210), POINT (150 180), POINT (130 170), POINT (140 190), POINT (130 200), LINESTRING (240 50, 210 120, 270 80, 250 140, 330 70, 300 160, 340 130, 340 130), POLYGON ((210 340, 220 260, 150 270, 230 220, 230 140, 270 210, 360 240, 260 250, 260 280, 240 270, 210 340), (230 270, 230 250, 200 250, 240 220, 240 190, 260 220, 290 230, 250 230, 230 270)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 557</desc>
+  <a>
+    MULTIPOINT (50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 559</desc>
+  <a>
+    POLYGON ((50 50, 200 50, 200 200, 50 200, 50 50))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 560</desc>
+  <a>
+    POLYGON ((20 20, 20 160, 160 160, 160 20, 20 20), (140 140, 40 140, 40 40, 140 40, 140 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 561</desc>
+  <a>
+    POLYGON ((80 100, 220 100, 220 240, 80 240, 80 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 562</desc>
+  <a>
+    POLYGON ((20 340, 330 380, 50 40, 20 340))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 563</desc>
+  <a>
+    POLYGON ((210 320, 140 270, 0 270, 140 220, 210 320))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 564</desc>
+  <a>
+    POLYGON ((0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 565</desc>
+  <a>
+    POLYGON ((220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 566</desc>
+  <a>
+    POLYGON ((0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 567</desc>
+  <a>
+    POLYGON ((230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, 230 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 568</desc>
+  <a>
+    POLYGON ((0 0, 210 0, 210 230, 0 230, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 569</desc>
+  <a>
+    MULTIPOLYGON (((40 20, 0 0, 20 40, 60 60, 40 20)), ((60 90, 60 60, 90 60, 90 90, 60 90)), ((70 120, 90 90, 100 120, 70 120)), ((120 70, 90 90, 120 100, 120 70)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 570</desc>
+  <a>
+    POLYGON ((0 0, 340 0, 340 300, 0 300, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 571</desc>
+  <a>
+    MULTIPOLYGON (((40 20, 0 0, 20 40, 60 60, 40 20)), ((60 100, 60 60, 100 60, 100 100, 60 100)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 572</desc>
+  <a>
+    POLYGON ((0 0, 120 0, 120 120, 0 120, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 573</desc>
+  <a>
+    MULTIPOLYGON (((60 20, 0 20, 60 60, 60 20)), ((60 100, 60 60, 100 60, 100 100, 60 100)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 574</desc>
+  <a>
+    POLYGON ((160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 575</desc>
+  <a>
+    POLYGON ((300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), (290 240, 240 200, 240 110, 290 80, 330 170, 290 240))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 576</desc>
+  <a>
+    MULTIPOLYGON (((120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, 200 200, 220 200, 220 340, 120 340)), ((360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 220 120, 220 100, 360 100, 360 200)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 577</desc>
+  <a>
+    MULTIPOLYGON (((100 220, 100 200, 300 200, 300 220, 100 220)), ((280 180, 280 160, 300 160, 300 180, 280 180)), ((220 140, 220 120, 240 120, 240 140, 220 140)), ((180 220, 160 240, 200 240, 180 220)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 578</desc>
+  <a>
+    MULTIPOLYGON (((100 200, 100 180, 120 180, 120 200, 100 200)), ((60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, 160 220, 220 220, 220 240, 60 240), (80 220, 80 160, 140 160, 140 220, 80 220)), ((280 220, 240 180, 260 160, 300 200, 280 220)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 579</desc>
+  <a>
+    MULTIPOLYGON (((80 220, 80 160, 140 160, 140 220, 80 220), (100 200, 100 180, 120 180, 120 200, 100 200)), ((220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, 220 140, 320 140, 320 240, 220 240), (240 220, 240 160, 300 160, 300 220, 240 220)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 580</desc>
+  <a>
+    POLYGON ((60 160, 140 160, 140 60, 60 60, 60 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 581</desc>
+  <a>
+    POLYGON ((160 160, 100 160, 100 100, 160 100, 160 160), (140 140, 120 140, 120 120, 140 120, 140 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 582</desc>
+  <a>
+    POLYGON ((10 10, 100 10, 10 11, 10 10))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 583</desc>
+  <a>
+    POLYGON ((90 0, 200 0, 200 200, 90 200, 90 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 584</desc>
+  <a>
+    POLYGON ((100 10, 10 10, 90 11, 90 20, 100 20, 100 10))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 585</desc>
+  <a>
+    POLYGON ((20 20, 0 20, 0 0, 20 0, 20 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 586</desc>
+  <a>
+    POLYGON ((10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 587</desc>
+  <a>
+    POLYGON ((60 40, 40 40, 40 20, 60 20, 60 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 588</desc>
+  <a>
+    POLYGON ((10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 589</desc>
+  <a>
+    POLYGON ((0 30, 0 0, 30 0, 30 30, 0 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 590</desc>
+  <a>
+    MULTIPOLYGON (((0 0, 100 0, 100 20, 0 20, 0 0)), ((0 40, 0 21, 100 20, 100 40, 0 40)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 591</desc>
+  <a>
+    POLYGON ((110 30, 90 30, 90 10, 110 10, 110 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 592</desc>
+  <a>
+    POLYGON ((100 10, 0 10, 100 11, 100 10))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 593</desc>
+  <a>
+    POLYGON ((100 10, 0 10, 90 11, 90 20, 100 20, 100 10))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 594</desc>
+  <a>
+    POLYGON ((10 30, 10 0, 30 10, 30 30, 10 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 595</desc>
+  <a>
+    POLYGON ((10 30, 10 10, 30 10, 30 30, 10 30))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 596</desc>
+  <a>
+    POLYGON ((0 0, 200 0, 0 198, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 597</desc>
+  <a>
+    POLYGON ((280 60, 139 60, 280 70, 280 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 598</desc>
+  <a>
+    POLYGON ((0 0, 140 10, 0 20, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 599</desc>
+  <a>
+    POLYGON ((280 0, 139 10, 280 1, 280 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 600</desc>
+  <a>
+    MULTIPOLYGON (((1 4, 1 1, 2 1, 2 4, 1 4)), ((3 4, 3 1, 4 1, 4 4, 3 4)), ((5 4, 5 1, 6 1, 6 4, 5 4)), ((7 4, 7 1, 8 1, 8 4, 7 4)), ((9 4, 9 1, 10 1, 10 4, 9 4)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 601</desc>
+  <a>
+    POLYGON ((0 2, 11 3, 11 2, 0 2))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 602</desc>
+  <a>
+    POLYGON ((20 40, 20 200, 180 200, 180 40, 20 40), (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 603</desc>
+  <a>
+    POLYGON ((200 160, 160 160, 160 80, 200 80, 200 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 604</desc>
+  <a>
+    LINESTRING (160 140, 160 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 605</desc>
+  <a>
+    POLYGON ((20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), (140 160, 80 120, 140 80, 140 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 606</desc>
+  <a>
+    POLYGON ((200 160, 150 160, 150 80, 200 80, 200 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 607</desc>
+  <a>
+    POLYGON ((83 33, 62 402, 68 402, 83 33))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 608</desc>
+  <a>
+    POLYGON ((78 39, 574 76, 576 60, 78 39))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 609</desc>
+  <a>
+    LINESTRING (240 190, 120 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 610</desc>
+  <a>
+    POLYGON ((110 240, 50 80, 240 70, 110 240))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 611</desc>
+  <a>
+    LINESTRING (0 100, 100 100, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 612</desc>
+  <a>
+    POLYGON ((30 240, 260 30, 30 30, 30 240), (80 140, 80 80, 140 80, 80 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 613</desc>
+  <a>
+    LINESTRING (40 340, 200 250, 120 180, 160 110, 270 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 614</desc>
+  <a>
+    MULTIPOLYGON (((60 320, 60 80, 300 80, 60 320), (80 280, 80 100, 260 100, 80 280)), ((120 160, 140 160, 140 140, 120 160)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 615</desc>
+  <a>
+    MULTILINESTRING ((100 240, 100 180, 160 180, 160 120, 220 120), (40 360, 40 60, 340 60, 40 360, 40 20), (120 120, 120 140, 100 140, 100 120, 140 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 616</desc>
+  <a>
+    MULTIPOLYGON (((60 260, 60 120, 220 120, 220 260, 60 260), (80 240, 80 140, 200 140, 200 240, 80 240)), ((100 220, 100 160, 180 160, 180 220, 100 220), (120 200, 120 180, 160 180, 160 200, 120 200)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 617</desc>
+  <a>
+    MULTILINESTRING ((40 260, 240 260, 240 240, 40 240, 40 220, 240 220), (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 618</desc>
+  <a>
+    MULTIPOLYGON (((60 320, 60 120, 280 120, 280 320, 60 320), (120 260, 120 180, 240 180, 240 260, 120 260)), ((280 400, 320 400, 320 360, 280 360, 280 400)), ((300 240, 300 220, 320 220, 320 240, 300 240)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 619</desc>
+  <a>
+    MULTILINESTRING ((80 300, 80 160, 260 160, 260 300, 80 300, 80 140), (220 360, 220 240, 300 240, 300 360))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 620</desc>
+  <a>
+    MULTIPOLYGON (((120 180, 60 80, 180 80, 120 180)), ((100 240, 140 240, 120 220, 100 240)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 621</desc>
+  <a>
+    MULTILINESTRING ((180 260, 120 180, 60 260, 180 260), (60 300, 60 40), (100 100, 140 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 622</desc>
+  <a>
+    POLYGON ((95 9, 81 414, 87 414, 95 9))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 623</desc>
+  <a>
+    LINESTRING (93 13, 96 13)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 624</desc>
+  <a>
+    LINESTRING (0 0, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 625</desc>
+  <a>
+    LINESTRING (0 100, 100 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 626</desc>
+  <a>
+    LINESTRING (0 0, 100 100, 200 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 627</desc>
+  <a>
+    LINESTRING (0 0, 100 100, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 628</desc>
+  <a>
+    LINESTRING (40 360, 40 220, 120 360)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 629</desc>
+  <a>
+    LINESTRING (120 340, 60 220, 140 220, 140 360)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 630</desc>
+  <a>
+    LINESTRING (220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 631</desc>
+  <a>
+    LINESTRING (220 240, 140 160, 120 180, 220 280, 200 300, 100 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 632</desc>
+  <a>
+    LINESTRING (80 320, 220 320, 220 160, 80 300)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 633</desc>
+  <a>
+    LINESTRING (60 200, 60 260, 140 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 634</desc>
+  <a>
+    LINESTRING (60 200, 60 140, 140 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 635</desc>
+  <a>
+    LINESTRING (180 200, 100 280, 20 200, 100 120, 180 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 636</desc>
+  <a>
+    LINESTRING (100 200, 220 200, 220 80, 100 80, 100 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 637</desc>
+  <a>
+    LINESTRING (0 10, 620 10, 0 11)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 638</desc>
+  <a>
+    LINESTRING (400 60, 400 10)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 639</desc>
+  <a>
+    MULTIPOLYGON (((120 320, 180 200, 240 320, 120 320)), ((180 200, 240 80, 300 200, 180 200)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 640</desc>
+  <a>
+    MULTIPOINT (120 320, 180 260, 180 320, 180 200, 300 200, 200 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 641</desc>
+  <a>
+    MULTIPOLYGON (((120 80, 420 80, 420 340, 120 340, 120 80), (160 300, 160 120, 380 120, 380 300, 160 300)), ((200 260, 200 160, 340 160, 340 260, 200 260), (240 220, 240 200, 300 200, 300 220, 240 220)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 642</desc>
+  <a>
+    MULTIPOINT (200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 643</desc>
+  <a>
+    MULTIPOINT (40 90, 20 20, 70 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 644</desc>
+  <a>
+    LINESTRING (20 20, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 645</desc>
+  <a>
+    LINESTRING (20 20, 110 110, 170 50, 130 10, 70 70)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 646</desc>
+  <a>
+    MULTILINESTRING ((100 320, 100 220), (100 180, 200 180), (220 180, 220 320), (220 320, 160 320), (100 320, 100 220), (100 180, 200 180), (220 180, 220 320), (220 320, 160 320), (100 220, 100 320))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 647</desc>
+  <a>
+    MULTIPOINT (100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 648</desc>
+  <a>
+    MULTILINESTRING ((-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 649</desc>
+  <a>
+    MULTIPOINT (-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 650</desc>
+  <a>
+    MULTILINESTRING ((180 100, 140 280, 240 140, 220 120, 140 280), (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 651</desc>
+  <a>
+    POINT (200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 652</desc>
+  <a>
+    MULTIPOINT (100 100, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 653</desc>
+  <a>
+    MULTIPOINT (100 100, 200 200, 300 300, 500 500)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 654</desc>
+  <a>
+    MULTIPOINT (100 100, 200 200, 400 400, 600 600)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 655</desc>
+  <a>
+    POINT (80 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 656</desc>
+  <a>
+    POINT (260 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 657</desc>
+  <a>
+    POINT (60 260)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 658</desc>
+  <a>
+    POINT (120 260)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 659</desc>
+  <a>
+    POINT (80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 660</desc>
+  <a>
+    POINT (80 280)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 661</desc>
+  <a>
+    POLYGON ((0 0, 140 0, 140 140, 0 140, 0 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 662</desc>
+  <a>
+    POLYGON ((140 0, 0 0, 0 140, 140 140, 140 0))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 663</desc>
+  <a>
+    POLYGON ((40 60, 360 60, 360 300, 40 300, 40 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 664</desc>
+  <a>
+    POLYGON ((120 100, 280 100, 280 240, 120 240, 120 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 665</desc>
+  <a>
+    POLYGON ((80 100, 360 100, 360 280, 80 280, 80 100))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 666</desc>
+  <a>
+    POLYGON ((0 280, 0 0, 260 0, 260 280, 0 280), (220 240, 40 240, 40 40, 220 40, 220 240))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 667</desc>
+  <a>
+    POLYGON ((20 260, 240 260, 240 20, 20 20, 20 260), (160 180, 80 180, 120 120, 160 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 668</desc>
+  <a>
+    POLYGON ((60 80, 200 80, 200 220, 60 220, 60 80))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 669</desc>
+  <a>
+    POLYGON ((120 140, 260 140, 260 260, 120 260, 120 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 670</desc>
+  <a>
+    POLYGON ((60 220, 220 220, 140 140, 60 220))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 671</desc>
+  <a>
+    POLYGON ((100 180, 180 180, 180 100, 100 100, 100 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 672</desc>
+  <a>
+    POLYGON ((40 40, 180 40, 180 180, 40 180, 40 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 673</desc>
+  <a>
+    POLYGON ((180 40, 40 180, 160 280, 300 140, 180 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 674</desc>
+  <a>
+    POLYGON ((40 280, 200 280, 200 100, 40 100, 40 280), (100 220, 120 220, 120 200, 100 180, 100 220))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 675</desc>
+  <a>
+    POLYGON ((40 280, 180 260, 180 120, 60 120, 40 280))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 676</desc>
+  <a>
+    POLYGON ((0 200, 0 0, 200 0, 200 200, 0 200), (20 180, 130 180, 130 30, 20 30, 20 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 677</desc>
+  <a>
+    POLYGON ((60 90, 130 90, 130 30, 60 30, 60 90))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 678</desc>
+  <a>
+    LINESTRING (100 120, 100 240)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 679</desc>
+  <a>
+    POLYGON ((40 60, 160 60, 160 180, 40 180, 40 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 680</desc>
+  <a>
+    LINESTRING (80 80, 140 140, 200 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 681</desc>
+  <a>
+    POLYGON ((40 40, 140 40, 140 140, 40 140, 40 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 682</desc>
+  <a>
+    POLYGON ((190 190, 360 20, 20 20, 190 190), (111 110, 250 100, 140 30, 111 110))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 683</desc>
+  <a>
+    POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (130 110, 60 40, 60 180, 130 110), (130 180, 131 40, 200 110, 130 180))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 684</desc>
+  <a>
+    LINESTRING (100 140, 100 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 685</desc>
+  <a>
+    MULTIPOLYGON (((20 80, 180 79, 100 0, 20 80)), ((20 160, 180 160, 100 80, 20 160)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 686</desc>
+  <a>
+    MULTIPOLYGON (((20 80, 180 80, 100 0, 20 80)), ((20 160, 180 160, 100 80, 20 160)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 687</desc>
+  <a>
+    LINESTRING (60 0, 20 80, 100 80, 80 120, 40 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 688</desc>
+  <a>
+    LINESTRING (140 300, 220 160, 260 200, 240 260)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 689</desc>
+  <a>
+    LINESTRING (60 40, 140 40, 140 160, 0 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 690</desc>
+  <a>
+    LINESTRING (140 280, 240 280, 240 180, 140 180, 140 280)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 691</desc>
+  <a>
+    LINESTRING (140 0, 0 0, 40 60, 0 120, 60 200, 220 160, 220 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 692</desc>
+  <a>
+    LINESTRING (80 140, 180 100, 160 40, 100 40, 60 100, 80 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 693</desc>
+  <a>
+    LINESTRING (20 20, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 694</desc>
+  <a>
+    LINESTRING (40 40, 160 160, 200 60, 60 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 695</desc>
+  <a>
+    LINESTRING (40 40, 200 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 696</desc>
+  <a>
+    LINESTRING (200 40, 140 40, 40 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 697</desc>
+  <a>
+    LINESTRING (0 0, 110 0, 60 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 698</desc>
+  <a>
+    LINESTRING (0 0, 110 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 699</desc>
+  <a>
+    LINESTRING (0 0, 80 0, 80 60, 80 0, 170 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 700</desc>
+  <a>
+    MULTILINESTRING ((0 0, 170 0), (80 0, 80 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 701</desc>
+  <a>
+    LINESTRING (80 100, 180 200)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 702</desc>
+  <a>
+    LINESTRING (80 180, 180 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 703</desc>
+  <a>
+    LINESTRING (40 40, 100 100, 160 160)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 704</desc>
+  <a>
+    LINESTRING (160 60, 100 100, 60 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 705</desc>
+  <a>
+    LINESTRING (140 60, 60 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 706</desc>
+  <a>
+    LINESTRING (40 40, 180 180, 100 180, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 707</desc>
+  <a>
+    LINESTRING (80 90, 50 50, 0 0)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 708</desc>
+  <a>
+    LINESTRING (40 140, 240 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 709</desc>
+  <a>
+    LINESTRING (40 140, 100 140, 80 80, 120 60, 100 140, 160 140, 160 100, 200 100, 160 140, 240 140)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 710</desc>
+  <a>
+    LINESTRING (20 20, 100 20, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 711</desc>
+  <a>
+    LINESTRING (60 20, 200 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 712</desc>
+  <a>
+    LINESTRING (40 60, 180 60, 180 140, 100 140, 100 60, 220 60, 220 180, 80 180, 80 60, 280 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 713</desc>
+  <a>
+    LINESTRING (140 60, 180 60, 220 60, 260 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 714</desc>
+  <a>
+    MULTIPOINT (0 20, 40 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 715</desc>
+  <a>
+    POLYGON ((20 40, 20 0, 60 0, 60 40, 20 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 716</desc>
+  <a>
+    MULTIPOINT (0 20, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 717</desc>
+  <a>
+    MULTIPOINT (20 20, 40 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 718</desc>
+  <a>
+    MULTIPOINT (80 260, 140 260, 180 260)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 719</desc>
+  <a>
+    POLYGON ((40 320, 140 320, 140 200, 40 200, 40 320))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 720</desc>
+  <a>
+    MULTIPOLYGON (((0 40, 0 0, 40 0, 40 40, 0 40)), ((40 80, 40 40, 80 40, 80 80, 40 80)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 721</desc>
+  <a>
+    LINESTRING (40 40, 120 120, 200 120)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 722</desc>
+  <a>
+    LINESTRING (40 40, 100 100, 160 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 723</desc>
+  <a>
+    POINT (60 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 724</desc>
+  <a>
+    MULTIPOINT (40 40, 100 40)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 725</desc>
+  <a>
+    LINESTRING (40 40, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 726</desc>
+  <a>
+    MULTIPOINT (40 40, 60 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 727</desc>
+  <a>
+    MULTIPOINT (60 60, 100 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 728</desc>
+  <a>
+    LINESTRING (40 40, 60 60, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 729</desc>
+  <a>
+    POINT (20 30)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 730</desc>
+  <a>
+    MULTIPOINT (40 40, 80 60, 40 100)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 731</desc>
+  <a>
+    MULTIPOINT (80 280, 80 220, 160 220, 80 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 732</desc>
+  <a>
+    MULTIPOINT (80 280, 80 220, 160 220)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 733</desc>
+  <a>
+    MULTIPOINT EMPTY
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 734</desc>
+  <a>
+    LINESTRING (20 60, 160 60, 80 160, 80 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 735</desc>
+  <a>
+    LINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 736</desc>
+  <a>
+    LINESTRING (20 60, 100 60, 60 100, 60 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 737</desc>
+  <a>
+    LINESTRING (20 60, 60 60, 100 60, 60 100, 60 60)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 738</desc>
+  <a>
+    LINESTRING (20 20, 80 20, 80 80, 20 20)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 739</desc>
+  <a>
+    LINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80)
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 740</desc>
+  <a>
+    LINESTRING EMPTY
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 741</desc>
+  <a>
+    MULTILINESTRING ((40 140, 160 40), (160 140, 40 40))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 742</desc>
+  <a>
+    MULTILINESTRING ((20 160, 20 20), (100 160, 100 20))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 743</desc>
+  <a>
+    MULTILINESTRING ((60 140, 20 80, 60 40), (60 40, 100 80, 60 140))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 744</desc>
+  <a>
+    MULTILINESTRING ((60 40, 140 40, 100 120, 100 0), (100 200, 200 120))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 745</desc>
+  <a>
+    MULTILINESTRING ((40 120, 100 60), (160 120, 100 60), (40 60, 160 60))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 746</desc>
+  <a>
+    MULTILINESTRING ((80 160, 40 220, 40 100, 80 160), (80 160, 120 220, 120 100, 80 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 747</desc>
+  <a>
+    MULTILINESTRING ((80 160, 40 220), (80 160, 120 220, 120 100, 80 160), (40 100, 80 160))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 748</desc>
+  <a>
+    POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 749</desc>
+  <a>
+    POLYGON EMPTY
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 750</desc>
+  <a>
+    MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+<case>
+  <desc>Test 751</desc>
+  <a>
+    MULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340)))
+  </a>
+  <test> <op name="isValid" arg1="A"> true </op> </test>
+</case>
+</run>

Added: packages/jts/branches/upstream/current/testxml/general/TestWithinDistance.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/general/TestWithinDistance.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/general/TestWithinDistance.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,92 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PP - disjoint points</desc>
+  <a>    POINT(10 10)  </a>
+  <b>    POINT(100 100)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="200">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="100">    false  </op></test>
+</case>
+
+<case>
+  <desc>PP - overlapping points</desc>
+  <a>    POINT(10 10)  </a>
+  <b>    POINT(10 10)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="200">  true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="0">    true  </op></test>
+</case>
+
+<case>
+  <desc>PL - point on linestring</desc>
+  <a>    POINT (340 200)  </a>
+  <b>    LINESTRING (80 280, 340 200, 80 80)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="0">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="10">   true  </op></test>
+</case>
+
+<case>
+  <desc>PL - point not on linestring</desc>
+  <a>    LINESTRING (100 100, 200 100, 200 200, 100 200, 100 100)  </a>
+  <b>    POINT (10 10)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="128">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="127">    false  </op></test>
+</case>
+
+<case>
+  <desc>PA - point inside polygon</desc>
+  <a>    POINT (240 160)  </a>
+  <b>    POLYGON ((100 260, 340 180, 100 60, 180 160, 100 260))  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="0">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="10">   true  </op></test>
+</case>
+
+<case>
+  <desc>mPA - points outside polygon</desc>
+  <a>    POLYGON ((200 180, 60 140, 60 260, 200 180))  </a>
+  <b>    MULTIPOINT (140 280, 140 320)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="60">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="57">    false  </op></test>
+</case>
+
+<case>
+  <desc>LL - disjoint linestrings</desc>
+  <a>    LINESTRING (40 300, 240 260, 60 160, 140 60)  </a>
+  <b>    LINESTRING (140 360, 260 280, 240 120, 120 160)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="18">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="17">    false  </op></test>
+</case>
+
+<case>
+  <desc>LL - crossing linestrings</desc>
+  <a>    LINESTRING (40 300, 280 220, 60 160, 140 60)  </a>
+  <b>    LINESTRING (140 360, 260 280, 240 120, 120 160)  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="0">     true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="10">    true  </op></test>
+</case>
+
+<case>
+  <desc>AA - overlapping polygons</desc>
+  <a>    POLYGON ((60 260, 260 180, 100 60, 60 160, 60 260))  </a>
+  <b>    POLYGON ((220 280, 120 160, 300 60, 360 220, 220 280))  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="0">     true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="10">    true  </op></test>
+</case>
+
+<case>
+  <desc>AA - disjoint polygons</desc>
+  <a>    POLYGON ((100 320, 60 120, 240 180, 200 260, 100 320))  </a>
+  <b>    POLYGON ((420 320, 280 260, 400 100, 420 320))  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="72">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="71">    false  </op></test>
+</case>
+
+<case>
+  <desc>mAmA - overlapping multipolygons</desc>
+  <a>    MULTIPOLYGON (((40 240, 160 320, 40 380, 40 240)),   ((100 240, 240 60, 40 40, 100 240)))  </a>
+  <b>    MULTIPOLYGON (((220 280, 120 160, 300 60, 360 220, 220 280)),   ((240 380, 280 300, 420 340, 240 380)))  </b>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="0">    true   </op></test>
+<test><op name="isWithinDistance" arg1="A" arg2="B" arg3="10">    true  </op></test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/robust/ExternalRobustness.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/robust/ExternalRobustness.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/robust/ExternalRobustness.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,210 @@
+<run>
+  <!-- first occurrence is used -->
+  <precisionModel type="FLOATING"/>
+  <precisionModel type="FLOATING_SINGLE"/>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+<desc>http://geos.refractions.net/pipermail/geos-devel/2005-May/001441.html</desc>
+
+ <a>
+ 0103000020E80A00000100000069010000ECA2396C13BBFF40E8BA3424319F2541DEFB1D49DFB8FF40E73660ADA07F2541FAD6C80B43B2FF407033A9AC12602541E43630383FA7FF401F0EFC9789402541470638AAD497FF408AE2E2E40721254133F2A0950484FF40D372540890012541776AF085D06BFF40B21B837624E22441E2C9515E3A4FFF40DBD7ABA2C7C22441CDA87059442EFF407956E5FE7BA32441DF5C4C09F108FF40A728EFFB4384244184A9045743DFFE40A40901092265244116A59F823EB1FE4096459A931846244141D7C822E67EFE40AD4251072A272441B29589243E48FE405630A3CD58082441A6A4FACA4A0DFE4065E0C34DA7E923417321EFAE10CEFD40D6CD6DEC17CB2341B7BD98BE948AFD40F954B20BADAC23414652253DDC42FD40B720CA0A698E234192D155C2ECF6FC40ADD0E5454E702341B3A10E3ACCA6FC40CCDBFE155F522341D166E1E38052FC4022B3A8D09D3423411747905211FAFB408628E2C70C172341F7B18A6B849DFB40B61CE749AEF92241F6B46366E13CFB40907802A184DC2241B9E841CC2FD8FA40FA74601392BF224194014977776FFA400135E1E2D8A22241500FFD91C002FA40CFB5EB4C5B8622416E789F961392F940DE17418A1B6A22418ABD854E791DF940FD44D0CE1B4E224122126AD1FAA4F84096F689495E32224164D8B584A128F840951F3524E5162241350EC61A77A8F7406EBD4383B2FB2141FEB929928524F7408B13A885C8E021417066DA34D79CF6408654AA4429C62141BCBC6E977611F64071BCBED3D6AB21414A4D47986E82F5407B1F5C40D39121416897B55ECAEFF44024F0D29120782141DA601D5A9559F4403AC024C9C05E2141AC6E1041DBBFF340C23FDCE0B545214109B16410A822F340EABCE5CC012D214160F4440A0882F2402528687AA61421417B2A3CB507DEF140659F9ECFA5FC2041975E3BDBB336F1408B83B2AB01E5204109689A88198CF040F01A96E6BBCD204192DE26168CBCEF40FDC3DF50D6B620418BB372E18D5AEE40A5BAA5B352A020414762D20D54F2EC409D735AD0328A204125366DB2FA83EB401B90A9607874204149EEA6609E0FEA40CC6C5516255F20412C71E5215C95E840C14E159B3A4A204167244D755115E740E4307490BA3520410516744D9C8FE5409C34B08FA621204130250C0E5B04E44024B89A29000E2041F2588489AC73E240152AF2CC91F51F414194A1FEAFDDE040A812CC8B04D01F41B9AE1D2C0A85DE40479B677D5BAB1F413F7ECABF9744DB4062B59D7D99871F4122E757A249FAD740CEC04256C1641F412B6FA08261A6D440A7E1EEBED5421F41A4982BCF2149D14038C2C75CD9211F41436DFF619BC5CB402FC54BC2CE011F41DF6CCA0C52E7C44028AC1E6FB8E21E41DD196F76E1EFBB409BB6D7CF98C41E41F3220E7C07E0AB40163DD13D72A71E4180CA45A3CBEE47C079CCF9FE468B1E4173AA092451DDACC0EBC4A64519701E41488EA3D140CBBCC00E806830EB551E41721152D143A2C5C0D501E0C9BE3C1E41BB857A0AAEECCCC05637960896241E4176759EC42622D2C0BAC6D4CE720D1E41BE846FDD47D4D5C0657380EA56F71D41F4583488708CD9C03319F51444E21D4153B71285564ADDC0B041E3F23BCE1D41F73ECE90D786E0C0E7552F1440BB1D417067519F176BE2C05E6FD2F351A91D413DDB08ABC551E4C0B5CABCF772981D41C6EB69C0BB3AE6C01FDEB970A4881D4115D45EBED325E8C00516569AE7791D4168E43F59E712EAC0BF39C69A3D6C1D4198FFCF1DD001ECC05C7AD082A75F1D41AE2E3C7467F2EDC0482DB74D26541D41D30E1EA386E4EFC0703425E1BA491D41C76E406903ECF0C06B151C0D66401D417873748760E6F1C014C1E38B28381D41AC8C2E2647E1F2C0D60CFC0103311D410441B9B4A3DCF3C0C9DE0FFEF52A1D41EDBA2C9962D8F4C0A10DEAF801261D419914F63170D4F5C053F56B5527221D41003D5FD7B8D0F6C024C18560661F1D41725717DD28CDF7C0C06B3051BF1D1D410D77BB93ACC9F8C0D0756948321D1D4181975F4A30C6F9C067533051BF1D1D4180B41750A0C2FAC075908560661F1D4127E180F5E8BEFBC051AC6B5527221D41C5404A8EF6BAFCC051ACE9F801261D4152C2BD72B5B6FDC033650FFEF52A1D41FF7F480112B2FEC0047BFB0103311D4139A402A0F8ACFFC01117E38B28381D41D05A1BDFAA5300C145531B0D66401D41B215F4EA8AD000C1365A24E1BA491D41C495ACB6124D01C10B3BB64D26541D4169AA478C38C901C12E70CF82A75F1D41EBBA6BBDF24402C1B517C59A3D6C1D418A0924A437C002C136DC549AE7791D41FC4EA1A3FD3A03C1A38CB870A4881D414F9FF9283BB503C1A661BBF772981D414689E7ABE62E04C1DAEED0F351A91D41386188AFF6A704C10ABE2D1440BB1D41B0A819C3612005C19B92E1F23BCE1D41F083B5821E9805C10753F31444E21D41B72E0E98230F06C145967EEA56F71D41AE6128BB678506C1CDD2D2CE720D1E41DA9914B3E1FA06C1C12C940896241E41C133A756886F07C1C2E0DDC9BE3C1E41D14B2F8D52E307C1A7486630EB551E41CA552C4F375608C15C77A44519701E410E5D02A72DC808C1F068F7FE468B1E41B1DFACB12C3909C1C3C3CE3D72A71E417036709F2BA909C1B027D5CF98C41E41AB7B89B421180AC1D7071C6FB8E21E41ACE3DC4906860AC1AD0B49C2CE011F41A378A2CDD0F20AC1BCF3C45CD9211F41E52C11C4785E0BC168FEEBBED5421F410D3608C8F5C80BC107C93F56C1641F41D1A3B68B3F320CC14DA99A7D99871F41742541D94D9A0CC1207B647D5BAB1F41F3F0659318010DC1AFDEC88B04D01F4116BF1EB697660DC189E2EECC91F51F41C9CF4057C3CA0DC1B60A9929000E20414EEA1AA7932D0EC1A77DAE8FA6212041DF4C11F1008F0EC189707290BA352041B07F379C03EF0EC12585139B3A4A20413BFFE72B944D0FC1129A5316255F204117B25940ABAA0FC167B4A76078742041528F99CB200310C1148F58D0328A20418BAA0D06283010C16DCDA3B352A020414941A4CC675C10C13DCEDD50D6B62041221106ACDC8710C1CE1C94E6BBCD2041B960AE4083B210C12F7DB0AB01E52041EEA52E3758DC10C1F8909CCFA5FC2041EAEA704C580511C1D011667AA6142141DEECF84D802D11C1D79EE3CC012D214154EF231ACD5411C11A1ADAE0B5452141313F67A03B7B11C1299322C9C05E214166608DE1C8A011C1D5BBD09120782141B1E1F1EF71C511C11AE45940D39121419ED1BBEF33E911C12B7ABCD3D6AB214159D016170C0C12C1870BA84429C62141C5B96AAEF72D12C101C4A585C8E0214195E39110F44E12C187674183B2FB21411BEB0DABFE6E12C181C33224E5162241BB0E3BFE148E12C1839487495E322241FB0E829D34AC12C11BDDCDCE1B4E22414D93882F5BC912C15CAA3E8A1B6A2241D00E606E86E512C1DF42E94C5B8622415A21B327B40013C1D3BCDEE2D8A222414B71F13CE21A13C1BFF75D1392BF2241AFFA79A30E3413C17BF6FFA084DC22416DD0C364374C13C1F895E449AEF922415D4C859E5A6313C1519DDFC70C1723411AABD982767913C1AA23A6D09D342341C6106558898E13C14348FC155F522341D5F3767A91A213C14839E3454E7023413AEB2A598DB513C1A885C70A698E23416FDD87797BC713C175B6AF0BADAC2341D48D9D755AD813C1112C6BEC17CB23413386A0FC28E813C1943BC14DA7E92341235A04D3E5F613C1AD88A0CD580824414D4294D28F0414C161984E072A2724419E0D8AEA251114C1DD98979318462441AA66A31FA71C14C1B25AFE0822652441856B358C122714C1B377ECFB4384244195963E60673014C1B9A3E2FE7BA32441FEF676E1A43814C18423A9A2C7C2244154B75E6BCA3F14C1FA65807624E2244180F14A6FD74514C1EFBB510890012541CBCE7074CB4A14C1B22AE0E40721254140F3EE17A64E14C18855F997894025419833D50C675114C1517AA6AC1260254128952A1C0E5314C1777D5DADA07F25414597F1249B5314C15C013224319F2541DAC52A1C0E5314C17985069BC1BE2541F994D50C675114C14189BD9B4FDE25414685EF17A64E14C11AAF6AB0D8FD25416D917174CB4A14C16DDB83635A1D2641AEE44B6FD74514C1194C1240D23C2641FCDA5F6BCA3F14C164A4E3D13D5C2641074B78E1A43814C19CE9BAA59A7B2641E61A4060673014C1946C8149E69A26410020378C122714C1339C774C1EBA26412D4BA51FA71C14C139BD653F40D9264102228CEA251114C17E83CCB449F82641698696D28F0414C1D588154138172741CBCD06D3E5F613C1CE9DC37A093627413529A3FC28E813C196F0A2FABA542741FB5FA0755AD813C13106F95B4A73274183DE8A797BC713C14F82B43CB5912741FF1A2E598DB513C107BA9C3DF9AF27410B527A7A91A213C1B90D810214CE27412B9D6858898E13C17706683203EC27416665DD82767913C13233BE77C40928414634899E5A6313C111C2848055272841A6E5C764374C13C157D27FFEB3442841E43C7EA30E3413C1257B64A7DD6128412AE0F53CE21A13C197830635D07E284189BCB727B40013C19BC88565899B2841F2D5646E86E512C10B4D7BFB06B8284104868D2F5BC912C16BF025BE46D42841E42C879D34AC12C1EBC8967946F02841705740FE148E12C1211DDDFE030C2941325E13ABFE6E12C121FA31247D272941A1809710F44E12C1756223C5AF422941578070AEF72D12C1B412BFC2995D2941FDBF1C170C0C12C143D8BC0339782941DEE9C1EF33E911C11077A8748B9229411322F8EF71C511C1EC1A0B088FAC29416DC893E1C8A011C1555194B641C629415DCE6DA03B7B11C17C88427FA1DF294123A52A1ACD5411C15E108B67ACF82941C9C8FF4D802D11C1C99A817B60112A4169EC774C580511C14D37FFCDBB292A4173CC353758DC10C1F5C7C878BC412A41B7ABB54083B210C1E0EBB49C60592A4108800DACDC8710C1B45CD161A6702A4182D3ABCC675C10C108BC87F78B872A417F5F1506283010C1E9CDC1940F9E2A416866A1CB200310C1A01D0D782FB42A414EA36940ABAA0FC1F609BEE7E9C92A413E32F82B944D0FC13F3612323DDF2A413DF3479C03EF0EC1685D52AD27F42A41AAFF21F1008F0EC18884F3B7A7082B410ADB2BA7932D0EC1358AB7B8BB1C2B4123FD5157C3CA0DC13510CD1E62302B41B72730B697660DC1F8BCEE6199432B418093779318010DC177D2810260562B418C0053D94D9A0CC11218B489B4682B4110B6C88B3F320CC10D159989957A2B410B7E1AC8F5C80BC17F99469D018C2B4134A923C4785E0BC15793F068F79C2B41D227B5CDD0F20AC1702D049A75AD2B4146C4EF4906860AC1733642E77ABD2B41378C9CB421180AC18FCDD81006CD2B417275839F2BA909C109537CE015DC2B41A84BC0B12C3909C1989A7F29A9EA2B4177F415A72DC808C1CD5DEBC8BEF82B411D17404F375608C191EC94A555062C418335438D52E307C1141A34B06C132C414644BB56886F07C15A6478E302202C41A1CF28B3E1FA06C1DA541D44172C2C4123BB3CBB678506C17B18FEE0A8372C4144AA2298230F06C18E4D28D3B6422C41FB1FCA821E9805C12106EE3D404D2C41A0632EC3612005C16EFDF64E44572C416D399DAFF6A704C1EFFE503EC2602C41207DFCABE62E04C1DF7D7F4EB9692C412DAD0E293BB503C1EF5B8ACC28722C413875B6A3FD3A03C104DE0B10107A2C417F4639A437C002C1E7CD3D7B6E812C41F10C81BDF24402C1EDC7057B43882C41D70F5D8C38C901C18CB300878E8E2C41ED0CC2B6124D01C10E668D214F942C41EA9C09EB8AD000C17C6ED6D784992C416AF030DFAA5300C1090ADB412F9E2C41D2E82DA0F8ACFFC0464077024EA22C419DDA730112B2FEC07D266BC7E0A52C41942FE972B5B6FDC0A2496149E7A82C4148BD758EF6BAFCC0593EF44B61AB2C418769ACF5E8BEFBC0A656B39D4EAD2C4158454350A0C2FAC0E77C2618AFAE2C416B2D8B4A30C6F9C0C433D19F82AF2C41A30EE793ACC9F8C0E8BA3424C9AF2C414FED42DD28CDF7C04858D19F82AF2C41BCCD8AD7B8D0F6C0EDC52618AFAE2C41CF9C213270D4F5C028C4B39D4EAD2C413837589962D8F4C04ED0F44B61AB2C41FFADE4B4A3DCF3C0FFFF6149E7A82C41F6E6592647E1F2C034016CC7E0A52C41AFB79F8760E6F1C0463F78024EA22C418B996B6903ECF0C03D2DDC412F9E2C41B92A74A386E4EFC0CEB5D7D784992C413B0A927467F2EDC065D18E214F942C411C94251ED001ECC0CB4202878E8E2C41352B9559E712EAC0F57A077B43882C4184C6B3BED325E8C096A43F7B6E812C413983BEC0BB3AE6C036D80D10107A2C411C115DABC551E4C07C798CCC28722C412835A59F176BE2C09DBE814EB9692C41009E2191D786E0C0B062533EC2602C41078BB885564ADDC00384F94E44572C415C35D988708CD9C058AFF03D404D2C41FF5C13DE47D4D5C031192BD3B6422C41C93C41C52622D2C0540601E1A8372C4123D9BD0BAEECCCC0AC642044172C2C41681093D243A2C5C0EA957BE302202C413EB120D440CBBCC0216D37B06C132C411BD7F92851DDACC0D96098A555062C4127FFB1DCCCEE47C00BF3EEC8BEF82B41B64F337707E0AB4085508329A9EA2B417C4F0774E1EFBB405A2980E015DC2B41506F990B52E7C440F8C3DC1006CD2B411C6FD1609BC5CB40A54C46E77ABD2B410A2596CE2149D1401A63089A75AD2B41B2920C8261A6D44024E8F468F79C2B414CADC5A149FAD740170D4B9D018C2B4172F239BF9744DB401AA79D89957A2B4139DC8E2B0A85DE4037C8B889B4682B413A0D5BFEAFDDE04058A0860260562B41A3B93E89AC73E24033A8F36199432B410773C70D5B04E4406918D21E62302B415C56304D9C8FE540FEAEBCB8BB1C2B41885C0A755115E7407FC5F8B7A7082B414AA6A3215C95E84024BA57AD27F42A41872566609E0FEA4053AE17323DDF2A418F742DB2FA83EB40F79CC3E7E9C92A41D6AC930D54F2EC401DCB12782FB42A41220F35E18D5AEE407195C7940F9E2A41FF4FEA158CBCEF40299D8DF78B872A4107AE7C88198CF040F756D761A6702A412F341EDBB336F140CFFEBA9C60592A41F1911FB507DEF14015F3CE78BC412A41F0EF280A0882F240247A05CEBB292A41E2424910A822F340DAF4877B60112A41F298F540DBBFF3402A819167ACF82941A425035A9559F440820F497FA1DF2941C0F89B5ECAEFF44013EE9AB641C62941314D2E986E82F540DECC11088FAC2941255D56977611F640B13DAF748B92294141A9C234D79CF6400BB3C3033978294111A112928524F7401A01C6C2995D2941579BAF1A77A8F740EF632AC5AF422941540DA084A128F840220E39247D27294193F054D1FAA4F8401D43E4FE030C29412347714E791DF94053009E7946F02841C8AE8B961392F940AF382DBE46D42841F4F3E991C002FA409AA582FB06B8284100963677776FFA40E2308D65899B28415D2E30CC2FD8FA4001FB0D35D07E284133AD5266E13CFB401E016CA7DD612841215E7A6B849DFB40496687FEB344284173A8805211FAFB4064638C8055272841987ED2E38052FC404EE1C577C40928410E71003ACCA6FC40C3C06F3203EC27419C5948C2ECF6FC409AD3880214CE27410C94183DDC42FD40E28AA43DF9AF274136BA8CBE948AFD40895DBC3CB59127419BD9E3AE10CEFD402CEB005C4A7327415819F0CA4A0DFE40B5DEAAFABA542741C1C77F243E48FE407294CB7A0936274170C7BF22E67EFE405F871D41381727411A5497823EB1FE404F89D4B449F826410318FD5643DFFE40B1C96D3F40D926416F8B4509F108FF40B1AE7F4C1EBA2641F6976A59442EFF4077848949E69A26411D7A4C5E3A4FFF404206C3A59A7B26412FDCEB85D06BFF402CC5EBD13D5C2641C2259D950484FF4060701A40D23C2641F9FB34AAD497FF4090028C635A1D2641F4EE2D383FA7FF4077D872B0D8FD25419651C70B43B2FF4035B4C59B4FDE254124391D49DFB8FF4060B10E9BC1BE2541ECA2396C13BBFF40E8BA3424319F2541
+</a>
+<b>
+ 0103000020E80A0000010000001B0000003731C25DB7A40AC123BABA3D2F2E1541482DDA6520AE15C150176B846E0E04419D9BAD51D2DD20C188B238C6A20F1341C93BA6B63EF616C1773C690356B72041AFE718BD3DE01AC1363F67295618224104666722A81614C128DF2B476DE92641E3BF74CA1BBCF1C0D43292B68C652141BDD1D74AAFA6CCC01D27263DE8A122418FF95A96AD86C240BA1AA7079685274134285EE6E81EF9C040F2AA56B1AF2C4117B1B91CDC81FA40E8363289617C3041DF296F1F14800941806416C77A5C2C4143DE3E9BAE901A41E5DD836A7C8E2E413E4390CBBBDE1E41DCBAED0B9BC82741489E9ED935770A41535871C71BFB2441A247FE423D360841CDF36716539B2441ECC1420680470741BD3D4C94710F23414D024D7D04380A41FEC5364D1A022241407DA7BAAF811D41DD0784C658ED184192B08CF1A618184108E3295E56ED104121896F9066610541F13A975D57FE1941096E8D134BEBFB406847DAE3D9661741AABE21A245A00B41845A019F2304FF40E48112BC1AF0F84080891F1A39C7F140DD811CEEB3B3EF40AE82AE28194B0341AB6F85D09F3409C1B06BA7169F6201413731C25DB7A40AC123BABA3D2F2E1541
+</b>
+
+<test>
+   <op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+<case>
+
+<desc>http://postgis.refractions.net/pipermail/postgis-users/2006-March/011316.html</desc>
+<a>
+POLYGON((742605.987032656 5087763.72510381,742599.903121688 
+5087760.56016809,742598.666141033
+5087762.50894352,742591.100910753
+5087758.50480931,742586.861672536
+5087766.63211263,742591.417801844
+5087769.04526206,742592.428792606
+5087767.35034731,742601.541294342
+5087772.18101105,742605.987032656 5087763.72510381))
+</a>
+<b>
+POLYGON((742601.541294537 5087772.18101068,742592.428792606
+5087767.35034731,742589.944404072
+5087771.51539701,742583.880455986 5087782.54873438,742582.81550675
+5087784.27809355,742583.216887765 5087784.43459684,742582.99081514
+5087785.0349637,742592.341351823 5087789.67654,742593.375823205
+5087787.7060691,742599.28794443 5087776.4640487,742601.541294537
+5087772.18101068))
+</b>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+<case>
+<desc>http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html</desc>
+
+<a>
+POLYGON ((613697.0000000041909516 2369267.9999981997534633, 613797.0000000043073669 2368322.9999981978908181, 613643.0000000041909516 2367807.9999981969594955, 613674.0000000041909516 2367405.9999981969594955, 613400.0000000041909516 2367299.9999981955625117, 613200.0000000040745363 2366813.9999981950968504, 613252.0000000040745363 2366474.9999981927685440, 613094.0000000040745363 2366400.9999981927685440, 612695.0000000039581209 2365506.9999981909058988, 612326.0000000038417056 2365402.9999981909058988, 612145.0000000037252903 2365470.9999981913715601, 612061.0000000037252903 2365967.9999981918372214, 611724.0000000036088750 2366168.9999981927685440, 611334.0000000034924597 2366316.9999981927685440, 610743.0000000033760443 2366221.9999981932342052, 610174.0000000031432137 2366305.9999981927685440, 609973.0000000031432137 2367066.9999981955625117, 609073.0000000027939677 2367938.9999981974251568, 609061.0000000027939677 2368332.9999981974251568, 609151.0000000027939677 2368684.9999981992878020, 608919.0000000027939677 2368811.9999982002191246, 608801.0000000026775524 2369192.9999982002191246, 609161.0000000027939677 2369096.9999982006847858, 609161.0000000027939677 2369509.9999982025474310, 609857.0000000030267984 2369498.9999982011504471, 609762.0000000030267984 2369689.9999982020817697, 610796.0000000033760443 2369794.9999982025474310, 611332.0000000034924597 2370097.9999982025474310, 613149.0000000040745363 2370460.9999982034787536, 613613.0000000041909516 2369720.9999982016161084, 613697.0000000041909516 2369267.9999981997534633))
+</a>
+
+<b>
+POLYGON ((607216.0000000019790605 2370623.9999982002191246, 608128.0000000019790605 2370312.9999982002191246, 608317.0000000030267984 2370101.9999982002191246, 608328.0000000030267984 2369868.9999982002191246, 608644.0000000030267984 2369847.9999982002191246, 608801.0000000030267984 2369192.9999982002191246, 608919.0000000030267984 2368811.9999982002191246, 609151.0000000030267984 2368684.9999982002191246, 609061.0000000030267984 2368332.9999982002191246, 608602.0000000030267984 2368124.9999982002191246, 607980.0000000019790605 2367585.9999982002191246, 607295.0000000019790605 2367062.9999981899745762, 606251.0000000019790605 2366697.9999981899745762, 605456.0000000019790605 2367679.9999982002191246, 605108.0000000019790605 2368377.9999982002191246, 604906.0000000019790605 2369083.9999982002191246, 604191.0000000010477379 2369719.9999982002191246, 604107.0000000010477379 2370057.9999982002191246, 604264.0000000010477379 2370397.9999982002191246, 604141.0000000010477379 2370768.9999982002191246, 604561.0000000010477379 2370448.9999982002191246, 604940.0000000019790605 2370406.9999982002191246, 605460.0000000019790605 2370792.9999982002191246, 605942.0000000019790605 2370945.9999982099980116, 606364.0000000019790605 2370892.9999982002191246, 606881.0000000019790605 2370988.9999982002191246, 607216.0000000019790605 2370623.9999982002191246))
+</b>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+<case>
+<desc>http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html (2)</desc>
+
+<a>
+ 0103000020BE6B0000010000002A000000FBFFFFFF0BB81A41D3FFFFFF12C63E41FBFFFFFF4FBD1A41D6FFFFFF66C63E41FCFFFFFF1BC11A41D7FFFFFF14C53E41FBFFFFFF93C31A41D3FFFFFFC4C23E41FCFFFFFF87C71A41D8FFFFFFC4C23E41FBFFFFFF8BD41A41D5FFFFFFBEC03E41FBFFFFFF2BD81A41D3FFFFFFDEC03E41FCFFFFFF63DA1A41DBFFFFFFB9BF3E41FCFFFFFF43D91A41D7FFFFFF5BBE3E41FBFFFFFFD7D81A41D1FFFFFFA8BC3E41FCFFFFFF37D61A41D3FFFFFF60BB3E41FCFFFFFFF3DD1A41D6FFFFFFFDB73E41FCFFFFFF6BE11A41D8FFFFFFBCB33E41FCFFFFFF4BDE1A41D8FFFFFFEBB13E41FCFFFFFF7BDB1A41D7FFFFFF8BB13E41FCFFFFFF4BDD1A41D6FFFFFF83B03E41FBFFFFFFB7D91A41D0FFFFFFADAE3E41FBFFFFFF07D81A41D6FFFFFFF4AD3E41FCFFFFFFBBD61A41D6FFFFFF45AB3E41FCFFFFFF67D61A41DBFFFFFFB3A93E41FCFFFFFF63D91A41D6FFFFFF92A83E41FBFFFFFF03C31A41D2FFFFFF75A93E41FBFFFFFF13BE1A41D7FFFFFFB7A83E41FBFFFFFF0FBF1A41D2FFFFFF84A73E41FBFFFFFFD7B41A41D5FFFFFF77A83E41FBFFFFFFAF871A41D6FFFFFFACA83E41FAFFFFFFDF811A41CEFFFFFF79AA3E41FBFFFFFFDF8B1A41D1FFFFFF9AAE3E41FAFFFFFF3B971A41D0FFFFFF76B03E41FBFFFFFF3B891A41D3FFFFFF4FB33E41FCFFFFFFE7871A41D3FFFFFF2EB43E41FBFFFFFFE7881A41D2FFFFFF16B53E41FCFFFFFFC3861A41D8FFFFFF9BB53E41FBFFFFFF27851A41D8FFFFFF67B73E41FBFFFFFFBB8C1A41D4FFFFFFA6B73E41FBFFFFFF03911A41D4FFFFFF38B93E41FBFFFFFF879E1A41D3FFFFFF11BC3E41FBFFFFFF37A91A41D4FFFFFF3EBB3E41FBFFFFFF0BA91A41D2FFFFFF46BC3E41FCFFFFFFC3B31A41D5FFFFFFFABC3E41FBFFFFFFF3B11A41D4FFFFFFDFC33E41FBFFFFFF0BB81A41D3FFFFFF12C63E41
+</a>
+
+<b>
+ 0103000020BE6B00000100000038000000000000009C801A41D5FFFFFF33D83E41000000006C821A41D5FFFFFFE0D63E410000000038861A41D5FFFFFFE3D53E4100000000E4851A41D5FFFFFFB0D43E4100000000C0821A41D5FFFFFFF2D33E4100000000B4691A41D5FFFFFFC6CF3E410000000038681A41D5FFFFFFBDCE3E410000000038751A41D5FFFFFF76CD3E410000000068731A41D5FFFFFF30CB3E4100000000787C1A41D5FFFFFFDCCA3E4100000000B4851A41D5FFFFFFDCCA3E4100000000788B1A41D5FFFFFF23CC3E41000000004C8C1A41D5FFFFFF10CB3E4100000000A48A1A41D5FFFFFFDEC93E4100000000788B1A41D5FFFFFFF5C83E4100000000C48E1A41D5FFFFFF17C83E4100000000B8921A41D5FFFFFFCDC73E41000000001C9D1A41D5FFFFFFE2C73E410000000008A31A41D5FFFFFFCBC83E4100000000ECAC1A41D5FFFFFF41C83E41000000005CB21A41D5FFFFFF31C63E41000000000CB81A41D5FFFFFF12C63E4100000000F4B11A41D5FFFFFFDFC33E4100000000C4B31A41D5FFFFFFFABC3E41000000000CA91A41D5FFFFFF46BC3E410000000038A91A41D5FFFFFF3EBB3E4100000000889E1A41D5FFFFFF11BC3E410000000004911A41D5FFFFFF38B93E4100000000BC8C1A41D5FFFFFFA6B73E410000000028851A41D5FFFFFF67B73E4100000000C4861A41D5FFFFFF9BB53E4100000000F0791A41D5FFFFFFD5B53E410000000038701A41D5FFFFFFDDB63E4100000000D0681A41D5FFFFFF84B83E4100000000D0581A41D5FFFFFF9CB73E410000000028581A41D5FFFFFF23B93E4100000000445E1A41D5FFFFFFB5BA3E4100000000245B1A41D5FFFFFF3CBC3E410000000080591A41D5FFFFFF99BD3E4100000000F8501A41D5FFFFFFBABE3E410000000018511A41D5FFFFFF75BF3E4100000000A84B1A41D5FFFFFF31C13E41000000004C4D1A41D5FFFFFFCCC73E4100000000244F1A41D5FFFFFF50CB3E41000000006C441A41D5FFFFFF8DCC3E4100000000BC451A41D5FFFFFF14CE3E4100000000D84B1A41D5FFFFFFFBCF3E4100000000B4571A41D5FFFFFFD6D13E4100000000B0581A41D5FFFFFF09D33E410000000028561A41D5FFFFFF5AD43E4100000000F45E1A41D5FFFFFF59D53E4100000000506B1A41D5FFFFFFB4D73E410000000044701A41D5FFFFFF5FD73E410000000038731A41D5FFFFFF74D73E4100000000E4721A41D5FFFFFFB4D73E41000000009C801A41D5FFFFFF33D83E41
+</b>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+ <case>
+<desc>
+postgis-users/2006-November/013743.html
+Fails due to 'gore' with apex extremely close to other segment (in B)
+</desc>
+<a>
+POLYGON((5417148.108 5658342.603,5417139.016
+5658338.009,5417126.791 5658331.833,5417116.292 5658327.518,5417112.871
+5658325.598,5417110.25 5658324.127,5417106.071 5658321.781,5417104.226
+5658320.745,5417093.266 5658315.008,5417091.265 5658313.961,5417085.335
+5658310.857,5417060.44 5658326.26,5417064.68 5658327.52,5417088.83
+5658336.46,5417088.52 5658337.31,5417102.92 5658342.65,5417103.26
+5658341.83,5417111.76 5658345.51,5417121.662 5658349.583,5417121.878
+5658349.672,5417125.217 5658351.119,5417131.761 5658353.388,5417137.589
+5658356.276,5417142.166 5658359.67,5417146.599 5658364.988,5417151.395
+5658370.641,5417150.853 5658371.392,5417152.59741167
+5658373.52811061,5417154.92 5658376.37,5417155.18955743
+5658376.89699992,5417154.919 5658376.371,5417155.814
+5658378.111,5417157.051 5658380.297,5417158.004 5658382.304,5417159.014
+5658384.47,5417159.775 5658386.619,5417160.629 5658389.278,5417161.5
+5658399.49,5417160.773 5658404.194,5417159.41 5658413.02,5417158.853
+5658414.442,5417153.671 5658427.659,5417153.67051161
+5658427.6586943,5417153.67 5658427.66,5417152.73 5658427.07,5417149.993
+5658436.599,5417148.81 5658439.42,5417149.233 5658439.67,5417148.36
+5658440.81,5417146.41 5658446.6,5417144.321 5658453.127,5417144.32092232
+5658453.13043826,5417154.59 5658458.01,5417154.99551047
+5658455.8409905,5417155.446 5658453.413,5417157.23981414
+5658448.75748237,5417157.22660892 5658448.57861162,5417157.22660849
+5658448.57860592,5417157.22660865 5658448.57860812,5417157.128
+5658447.265,5417157.64950997 5658446.06368023,5417157.64950961
+5658446.06368108,5417158.314 5658444.533,5417172.322
+5658417.957,5417174.99 5658418.57,5417175.23 5658417.74,5417176.696
+5658412.61,5417177.875 5658408.488,5417178.76 5658405.39,5417178.1
+5658393.55,5417178.08 5658393.36,5417177.11 5658384.95,5417178.151
+5658384.915,5417178.14836289 5658384.91508866,5417178.12
+5658384.83,5417177.91415246 5658383.81114117,5417176.927
+5658378.944,5417176.603 5658377.341,5417176.73975922
+5658378.01762048,5417176.6 5658377.34,5417176.51210558
+5658376.89535766,5417176.428 5658376.483,5417175.235
+5658370.602,5417171.577 5658362.886,5417170.762 5658360.107,5417168.522
+5658357.989,5417166.042 5658355.047,5417164.137 5658352.264,5417162.642
+5658351.593,5417160.702 5658350.843,5417160.05417889
+5658350.5823586,5417158.82 5658350.09,5417158.82103105
+5658350.0862195,5417159.50373263 5658350.36089455,5417158.818
+5658350.085,5417159.055 5658349.214,5417155.754
+5658347.679,5417156.78066321 5658348.15640928,5417155.7525011
+5658347.6811561,5417155.161 5658348.532,5417149.028
+5658343.237,5417152.26877967 5658346.03496647,5417149.03
+5658343.24,5417148.78133339 5658343.06701453,5417148.108
+5658342.603))
+</a>
+
+<b>
+POLYGON((5417148.36 5658440.81,5417149.233
+5658439.67,5417148.81 5658439.42,5417149.993 5658436.599,5417152.73
+5658427.07,5417153.67 5658427.66,5417153.67051161
+5658427.6586943,5417153.671 5658427.659,5417158.853
+5658414.442,5417159.41 5658413.02,5417160.773 5658404.194,5417161.5
+5658399.49,5417160.63 5658389.28,5417159.78 5658386.62,5417159.366239
+5658385.46469333,5417159.014 5658384.47,5417158.004
+5658382.304,5417157.051 5658380.297,5417155.814
+5658378.111,5417155.18955747 5658376.897,5417154.92
+5658376.37,5417152.59740379 5658373.52810095,5417150.853
+5658371.392,5417151.13020611 5658371.00790076,5417151.4
+5658370.64,5417147.11100598 5658365.59149663,5417146.599
+5658364.988,5417145.96673439 5658364.22950947,5417142.17
+5658359.67,5417139.98754716 5658358.05460369,5417137.589
+5658356.276,5417131.761 5658353.388,5417125.33011568
+5658351.15822058,5417125.22 5658351.12,5417121.88 5658349.67,5417121.66
+5658349.58,5417111.76 5658345.51,5417103.26 5658341.83,5417102.92
+5658342.65,5417088.52 5658337.31,5417088.83 5658336.46,5417064.68
+5658327.52,5417060.44 5658326.26,5417085.34 5658310.86,5417085.90750076
+5658311.15666987,5417091.265 5658313.961,5417093.266
+5658315.008,5417093.61266829 5658315.18946314,5417104.23
+5658320.75,5417105.81727304 5658321.63852784,5417106.071
+5658321.781,5417106.60319005 5658322.07975996,5417110.25
+5658324.13,5417112.87 5658325.6,5417116.29 5658327.52,5417121.76604303
+5658329.76778528,5417126.791 5658331.833,5417139.016
+5658338.009,5417148.108 5658342.603,5417148.78133333
+5658343.06701449,5417149.03 5658343.24,5417152.26878253
+5658346.03496893,5417155.161 5658348.532,5417155.7525011
+5658347.6811561,5417156.78066337 5658348.15640935,5417159.055
+5658349.214,5417158.818 5658350.085,5417158.82103105
+5658350.0862195,5417158.82 5658350.09,5417160.0541792
+5658350.58235872,5417160.702 5658350.843,5417162.642
+5658351.593,5417164.137 5658352.264,5417165.25343486
+5658353.89499119,5417166.04 5658355.05,5417168.52 5658357.99,5417170.76
+5658360.11,5417171.26171711 5658361.81094338,5417171.577
+5658362.886,5417175.235 5658370.602,5417176.428
+5658376.483,5417176.51210558 5658376.89535766,5417176.6
+5658377.34,5417176.73975924 5658378.01762057,5417176.927
+5658378.944,5417177.91415134 5658383.81113564,5417178.12
+5658384.83,5417178.14836289 5658384.91508866,5417177.11
+5658384.95,5417178.08 5658393.36,5417178.1 5658393.55,5417178.76
+5658405.39,5417177.875 5658408.488,5417176.696 5658412.61,5417175.23
+5658417.74,5417174.99 5658418.57,5417172.322
+5658417.957,5417172.32037372 5658417.96008538,5417172.32
+5658417.96,5417158.31 5658444.53,5417157.64951003
+5658446.06368011,5417157.128 5658447.265,5417157.22660867
+5658448.5786084,5417157.23981414 5658448.75748238,5417155.446
+5658453.413,5417154.99551072 5658455.84098918,5417154.59
+5658458.01,5417144.32092232 5658453.13043826,5417144.321
+5658453.127,5417146.41 5658446.6,5417148.36 5658440.81))
+</b>
+
+<test>
+<op name="isValid" arg1="A">
+true
+</op>
+</test>
+
+<test>
+<op name="isValid" arg1="B">
+true
+</op>
+</test>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+
+</run>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFixed.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFixed.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFixed.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,18 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>AA</desc>
+  <a>
+POLYGON ((545 317, 617 379, 581 321, 545 317))
+	  </a>
+  <b>
+POLYGON ((484 290, 558 359, 543 309, 484 290))
+
+  	</b>
+<test>
+  <op name="intersection" arg1="A" arg2="B"> POINT (545 317) </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFloat.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFloat.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/robust/TestRobustOverlayFloat.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,104 @@
+<run>
+  <precisionModel type="FLOATING" />
+<case>
+  <desc>AA - OLD robustness failure (works with snapping)</desc>
+  <a>
+POLYGON ((301949.68 2767249.16, 301936.52 2767241.28, 301938.87 
+2767237.43, 301952.47 2767245.59, 301950.74 2767247.81, 301949.68 
+2767249.16))
+  </a>
+  <b>
+POLYGON ((302041.321 2767264.675, 301938.823 2767237.507, 301941.21 2767233.59, 301943.821 2767229.304, 
+302048.886 2767243.046, 302041.321 2767264.675))  
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B"> 
+  POLYGON ((301939.1370850084 2767237.5902510053, 301938.87 2767237.43, 301938.823 2767237.507, 301939.1370850084 2767237.5902510053)) 
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - OLD robustness failure (works with snapping)</desc>
+  <a>
+POLYGON ((301936.52 2767241.28, 301933.22 2767239.3, 301934.9 
+2767236.51, 301935.54 2767235.44, 301938.87 2767237.43, 301936.52 
+2767241.28))
+  </a>
+  <b>
+POLYGON ((302041.321 2767264.675, 301938.823 2767237.507, 301941.21 2767233.59, 301943.821 2767229.304, 
+302048.886 2767243.046, 302041.321 2767264.675))  
+</b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">    
+  POLYGON ((301938.823 2767237.507, 301938.87 2767237.43, 301938.86994385667 2767237.4299664493, 301938.823 2767237.507))  
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - OLD robustness failure  (works with snapping)</desc>
+  <a>
+POLYGON ((464664.782646596 5362148.87380619, 464664.713299 5362148.758128, 464686.806220838 5362136.92416521, 
+464713.650216607 5362122.5453135, 464711.113332785 5362117.30158834, 464707.408813375 5362110.21553566, 
+464703.323866879 5362103.23305736, 464698.945488413 5362096.31213576, 464694.461274991 5362089.42505804, 
+464625.876674576 5361951.92914952, 464622.430583893 5361944.69388208, 464535.3572 5361970.739, 
+464648.194399372 5362157.89548451, 464664.782646596 5362148.87380619))  </a>
+  <b>
+POLYGON ((464769.977147523 5362187.88829332, 464765.146147008 5362180.84587461, 464754.387021019 5362169.93629911, 
+464747.786455245 5362160.11104076, 464734.810564627 5362148.45253107, 464725.386626381 5362135.71065214, 
+464712.646269 5362123.083073, 464727.794520848 5362149.37983229, 464738.165719397 5362165.72994593, 
+464746.257208116 5362179.45514151, 464752.378040379 5362191.80978275, 464769.977147523 5362187.88829332))  
+</b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">    
+  POINT (464712.646269 5362123.083073)  
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>AA - OLD robustness failure  (works with snapping)</desc>
+  <a>
+POLYGON ((698400.5682737827 2388494.3828697307, 698402.3209180075 
+2388497.0819257903, 698415.3598714538 2388498.764371397, 
+698413.5003455497 2388495.90071853, 698400.5682737827 
+2388494.3828697307))
+	</a>
+  <b>
+POLYGON ((698231.847335025 2388474.57994264, 698440.416211779 
+2388499.05985776, 698432.582638943 2388300.28294705, 698386.666515791 
+2388303.40346027, 698328.29462841 2388312.88889197, 698231.847335025 
+2388474.57994264))
+	</b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">    
+  LINESTRING (698413.5003455497 2388495.90071853, 698400.5682737827 2388494.3828697307)  
+  </op>
+</test>
+</case>
+
+
+<case>
+  <desc>AA - OLD robustness failure (works with snapping)</desc>
+  <a>
+POLYGON ((698265.5760207245 2388415.007869463, 698266.5171698363 
+2388416.456984281, 698272.2367250263 2388406.868318228, 
+698271.2748419731 2388405.3872787533, 698265.5760207245 
+2388415.007869463))
+	</a>
+  <b>
+POLYGON ((698230.86813842 2388473.60074604, 698104.551776442 
+2388363.93072634, 698321.933422637 2388319.86687914, 698230.86813842 
+2388473.60074604))
+	</b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">    
+  POLYGON ((698265.5760207245 2388415.007869463, 698265.5760207246 2388415.007869463, 698271.2748419731 2388405.3872787533, 698265.5760207245 2388415.007869463))  
+  </op>
+</test>
+</case>
+
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/robust/TestRobustRelate.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/robust/TestRobustRelate.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/robust/TestRobustRelate.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,19 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PP - Point is not on line. Non-robust algorithms fail by erroneously reporting intersects=true.</desc>
+  <a>
+    LINESTRING(-123456789 -40, 381039468754763 123456789)
+  </a>
+  <b>
+    POINT(0 0)
+  </b>
+<test>
+  <op name="intersects" arg1="A" arg2="B">
+    false
+  </op>
+</test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061018_int.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061018_int.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061018_int.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,44830 @@
+   <!--
+ The test cases have been taken from the robustness improvement project
+ funded by the Bavarian State Ministry of Agriculture and Forestry
+ (StMLF) and the State Survey of Bavaria (LVG). Written permission
+ to use the data for tests has been given by email on the 22 Nov 2006.
+ -->
+ <!-- 
+ These tests do not have valid result values provided.  
+ To avoid reporting failures, 
+ they should be run with -geomop com.vividsolutions.jtstest.testrunner.geomop.OverlayValidatedGeometryOperation
+ -->
+<run>
+	<desc>Overlay Robustness cases from StMLF (all handled by snapping)</desc>
+	<precisionModel type="FLOATING"/>
+	
+<case><desc>320229 - 5195510
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1524  </desc>
+<a>
+0106000000010000000103000000020000001100000014AE47B1DA5D50413D0AD7C3D51B554148E17A64CF5D50410AD7A3C0CD1B55413D0AD753CD5D504133333343D01B5541AE47E11AC55D5041713D0A77CA1B5541D7A3703DBE5D50417B14AE07D21B5541BC3181A1BC5D5041C54031E9D01B5541F98B4C65BC5D50419B0609BBD01B55419953D853BC5D5041B52A36ABD01B554161DE7A71B75D504135703503D71B5541713D0A77BF5D5041CDCCCCFCDB1B5541EC51B8AEC35D504185EB5188DE1B5541333333F3CB5D5041D7A3703DE31B5541EC51B87ECD5D5041D7A3700DE41B554185EB5158D05D504152B81E95E51B5541713D0A37D15D5041AE47E11AE61B55413D0AD703D85D504114AE4761DA1B554114AE47B1DA5D50413D0AD7C3D51B554105000000A4703DEACC5D504114AE47E1DC1B554185EB51C8CD5D5041333333D3DB1B5541666666A6CE5D504114AE4781DC1B554185EB51C8CD5D5041F6285C8FDD1B5541A4703DEACC5D504114AE47E1DC1B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000295C8F02BA5D5041AE47E1FAD41B55411F85EB91BA5D50410AD7A350D41B5541D7A370FDBC5D50411F85EB41D11B55418FC2F508BD5D504114AE4731D11B55419A999979BC5D5041D7A370CDD01B55410AD7A390BB5D5041A4703DFACF1B55417B14AEB7B95D5041E17A144ECE1B5541AE47E1BAB75D50411F85EB81CC1B5541EC51B87EB05D504114AE4771C61B55411F85EBB1AF5D5041666666A6C51B5541666666F6AB5D50417B14AEE7C91B55413D0AD783AB5D5041F6285C6FCA1B5541295C8F02BA5D5041AE47E1FAD41B5541
+</b>
+
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+
+</case>
+
+
+ <case><desc>1990453 - 250887
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1434  </desc>
+<a>
+010600000001000000010300000001000000610000008FC2F5D8D4AC504185EB51782AD8544152B81EB5D7AC504185EB51882CD85441D7A3705DDBAC5041333333432ED854419A999939DEAC50410AD7A3102DD8544148E17A14E3AC5041333333332CD85441E17A14CEE6AC50411F85EB312ED8544152B81E45E7AC5041EC51B83E35D85441D7A370FDEDAC5041D7A3703D38D8544152B81E75EDAC50419A9999193BD854417B14AE97ECAC5041AE47E13A3CD85441F6285CEFE7AC5041713D0AE739D854418FC2F568E4AC5041EC51B86E3BD85441D7A370ADE4AC5041713D0A073DD85441EC51B8BEE3AC5041000000A03ED85441EC51B8BEE3AC504152B81E1542D854410AD7A3D0E2AC5041295C8F0245D85441295C8FD2DFAC5041000000D043D854417B14AE27DFAC5041D7A370AD44D8544148E17AF4DFAC5041CDCCCCBC47D854417B14AE17DEAC50410000000049D85441EC51B85ED9AC504152B81E4548D85441295C8F72D4AC504185EB516846D85441F6285C0FCFAC5041295C8F0245D8544133333343CEAC5041AE47E15A40D85441EC51B8FECDAC504152B81ED53AD8544148E17A84D2AC5041C3F5280C35D85441B81E850BD5AC5041713D0A9730D85441C3F5281CD6AC5041CDCCCCDC2DD85441C3F5280CD4AC504152B81E452BD8544114AE4741D1AC50413D0AD72329D85441D7A370EDCEAC5041C3F5288C26D854417B14AE87CDAC50413D0AD7F323D854419A999999CCAC504148E17AD41ED85441E17A140ECBAC504152B81E3518D85441CDCCCCECC8AC5041000000C021D85441A4703D4AC8AC5041000000F025D8544100000090C7AC504148E17A243ED854418FC2F568C7AC50415C8FC2E544D85441CDCCCC2CC6AC5041CDCCCCDC44D85441CDCCCCFCC5AC50410AD7A3E04ED85441666666F6C5AC50417B14AE2751D854419A999949D0AC504148E17AB459D8544152B81EC5D0AC50413D0AD7A35BD8544185EB5168D2AC5041C3F528DC5ED8544152B81E55D4AC5041333333635ED85441713D0A47D5AC50410AD7A36067D85441F6285C8FD5AC504148E17A146AD85441EC51B84ED6AC50413333333371D854410AD7A3E0D9AC50411F85EBE177D8544148E17AB4DCAC5041B81E851B7DD85441EC51B88EDEAC5041E17A148E7AD85441D7A370ADE4AC5041F6285C8F77D8544114AE47E1E2AC504114AE479174D85441713D0A07DDAC5041713D0AC770D85441295C8FB2DBAC504114AE47516DD85441333333D3DDAC5041B81E85EB6BD85441EC51B8AEE1AC5041713D0AB76ED8544185EB5158E4AC5041666666866AD85441EC51B8CEE5AC50417B14AE9769D85441EC51B8FEEAAC5041E17A140E6CD8544133333353EDAC5041B81E85CB6CD8544148E17A84F0AC5041A4703DEA6BD854413D0AD763F5AC50410AD7A3806AD85441D7A3709DFEAC504152B81E356AD85441E17A14DE05AD50411F85EB0163D85441713D0A970AAD504152B81E5566D8544114AE47510DAD5041295C8F0262D8544185EB51E810AD504185EB516863D85441295C8FA213AD50413D0AD73365D854411F85EBA112AD504185EB51B869D85441AE47E16A1FAD5041B81E85EB6AD85441333333C322AD50418FC2F5C86AD8544114AE47B129AD5041C3F528DC6BD85441A4703D8A2EAD5041666666D66CD85441713D0AE730AD5041A4703D6A6DD85441E17A149E32AD504152B81ED56DD8544114AE47C138AD5041AE47E1AA6ED85441B81E858B3DAD504152B81EB56FD85441713D0AC740AD504152B81E5570D854410AD7A38049AD50411F85EB7171D854413D0AD7F34BAD50419A9999B962D854410000006040AD5041F6285C3F60D854419A99997921AD5041A4703DAA59D8544114AE479103AD5041666666E653D85441B81E85EB03AD50410AD7A36052D85441C3F5283C08AD50410AD7A3E042D85441EC51B81EF8AC5041A4703D6A38D85441295C8FE2E2AC5041AE47E14A2AD8544133333363E1AC5041E17A141E19D85441EC51B80EE0AC5041C3F5289C17D8544148E17A24CCAC5041713D0A5713D85441E17A148ECBAC50419A9999F915D8544166666676CDAC50415C8FC2D51CD85441E17A14EECDAC504185EB511820D85441F6285C0FCFAC50415C8FC21524D854417B14AEA7D1AC5041F6285CCF27D854418FC2F5D8D4AC504185EB51782AD85441
+</a>
+
+<b>
+010600000001000000010300000003000000EE00000052B81E55D4AC5041333333635ED85441713D0A47D5AC50410AD7A36067D85441EC51B8BED8AC504148E17AF46FD85441F00EFA22D8AC5041F886276A70D85441C3A4701DD8AC5041A8B81E6570D8544141295C8FD5AC504102E47A146AD85441A263039BD5AC50411E637A836AD85441A7FF340AD6AC50418EB29BA66ED85441ADA4F63CD6AC5041983F118A70D854410C52B84ED6AC50416933333371D85441BC13605AD6AC50418857044971D85441B83EEC91D6AC50416058FEB071D8544110076A9CD6AC504158B9A1C471D8544177A9ACE0D9AC50417FD2FBE177D85441205D0F67DAAC50419F5651DA78D85441A8F0A0FADAAC50412F5C03EB79D854416C30602FDCAC504118BE8D257CD85441B5B4C740DCAC504188B5BE027CD85441775E9188DCAC5041718F464F7BD854414D075BD0DCAC50410EA7A5D17AD85441EE453206DDAC50412DEB1F307AD85441F958EE5FDDAC50416A2E9A8E79D854415C544B37DEAC50416A2E9A8E79D85441CB4FA80EDFAC50410A6D71C479D854416CA13B9EDFAC5041D5027FB279D85441D77520C2DFAC5041FF59B56A79D854412E4B05E6DFAC504129B1EB2279D85441395EC13FE0AC5041C6C84AA578D854411B1A47E1E0AC5041F01F815D78D854411341BF94E1AC5041BBB58E4B78D854411F547BEEE1AC50411A77B71578D854418A286012E2AC5041EDE54C5077D854418A286012E2AC5041173D830877D85441E4951809E2AC50410DED6FA276D85441CF13AE67E0AC504113D6A32076D85441F0EB5198DEAC50411AEB515875D8544139C2F508DDAC50411A713DAA74D854413D3E0A07DCAC50413D0AD7F373D8544197DF4C86D8AC50419B3E77C470D854417216590ED9AC50412ACBEB4470D8544141295C7FDCAC504161A3705D73D85441F639A5D5DCAC50410807D89673D8544171938DE0DCAC5041FB9BC6ED72D8544172465EF6DCAC50414D09B1BC72D854413B3E319EDCAC50410D4FD26271D854418B43C79EDBAC50417769243970D85441F2570E9DDBAC504173094D8F6FD854417FD8B5F5DAAC504139573D696DD85441DCFDE057DBAC5041740CE7A46CD854410156033CDCAC5041FAA18A826CD85441F3638499DCAC5041ACC1A2FF6BD8544157BBA08CDDAC50414D70C18A6BD85441A71A035FDEAC50416A6035CC6BD85441BD9DADCBDFAC5041C5BF979E6CD8544127FB043DE1AC50415C7A2C266DD8544170E1273EE2AC50419EDB99596DD85441E31DFDABE2AC50414A6D18536CD85441F9226D29E3AC5041064556996AD8544130E01D3AE4AC5041C53A769E69D854412917723AE5AC5041AF35062169D85441C9F94DADE6AC5041542EBD7D69D8544109515D92E7AC5041614C9F3C6AD85441F4640661E8AC5041F091E4686AD85441CD74921FE8AC50412B6E9CCE69D854416729590AE8AC5041D650518868D8544156137E20E9AC5041610D446767D85441F271D6A8E9AC5041F9E7180567D85441B31B8526EAAC5041B206DAC166D8544119F21B69EBAC50414EBB33CB66D854418FC2772DECAC504114DF7B6567D8544174517E3BECAC50413D4E6AF667D854419C41F27CECAC50410372B29068D854412908FD00EEAC50412956B0D567D8544172EE1F02EFAC5041B98B8F8F67D854417AB48607F0AC504161C0147D67D8544190B9F684F0AC5041A217246268D854417D8539DCF0AC5041537BEC6769D854410E97627AF1AC50412D1372166AD85441E6F7FB53F2AC50415DABDF636BD85441230F88DAF4AC504147D671A86AD85441EEEC4857F4AC504159D74FE169D854418BA1A260F4AC5041A7ABC16769D85441C8084B12F5AC50413E5AE0F268D85441A61E124FF5AC50415F4419B668D854415244654AF5AC50414ACDE44568D85441E87F7F82F5AC5041CD8349B067D854417F3A140AF6AC5041AB8D9AF066D854411A8C0FDAF8AC50411F460ABC65D85441E6289745F9AC5041A2FC6E2665D8544123903FF7F9AC5041541C87A364D8544129967A75FAAC5041D547FBC162D85441A6DF150BFBAC5041E8333FE661D85441817A9215FCAC5041E0AE891861D85441FEC32DABFCAC50413C757A4160D854412C2DE1BDFCAC5041E59CD89D5FD8544139AC5B0DFDAC50416FCC7CD95ED854415429CBFBFDAC50417B3F812C5ED8544156B4BB47FFAC50410B7560E65DD85441EE6E50CFFFAC50413265D4275ED85441FAEDCA1E00AD504112FA15B45ED8544117DE3E6000AD5041F10FDDF05ED85441AE98D3E700AD5041EC15186F5FD85441594B229001AD5041FA130D0E60D85441D694BD2502AD5041775DA8A360D85441F70BF29502AD504157F2E92F61D854412E79D5C503AD5041BAD601D062D85441B2EF0EF804AD5041D7C016AE63D85441E17A14DE05AD50411F85EB0163D854412D3DBB6406AD5041B3BCE13D63D85441A98A67D107AD50417989DA9764D85441A61385C408AD5041594FD03665D854418C67B19409AD50411515180966D85441EBEC1C6F0BAD5041D49C7CA366D8544173BCE3130DAD5041F74D691165D854415D82D9B20DAD50415585A52764D85441E551A0570FAD5041D4F6EB9E62D85441911A644110AD50417936929562D85441A9EFC67B12AD5041F7FA200F63D85441CCF3FBEB12AD504115BE486363D85441BA831C9A14AD5041DD0124CA63D8544196D22F2C16AD50412C93AB9D65D85441EE1BA72817AD50418A1D30B666D85441BAD6649C16AD504108E2BE2F67D85441BAD6649C16AD5041D1259A9667D85441DDDA990C17AD5041FF29CF0668D854413524110918AD50415AEA281068D8544152E7385D18AD50413D2701BC67D85441A4EFA23D19AD50415AEA281068D85441FFAFFC4619AD50411CEDF65A68D85441146F2C081AAD504135A1810769D85441BBC405781BAD5041FF29CF0668D854418408E1DE1BAD50412CE6F39F67D854415D8DC9611CAD50413D2701BC67D854419E5426261DAD5041DFEFC4A568D8544139E6E5B11DAD5041C52221C26AD85441AE47E16A1FAD5041B81E85EB6AD85441886D64C71FAD5041424CC9E76AD85441886D64C71FAD5041F3FAFCD069D854419FEF7EFF1FAD504102F4F91569D854411EB40D7920AD5041296F119368D85441FD79031821AD5041C86DAA6D68D85441DD3FF9B621AD50417DEE5D8068D85441B083D41D22AD50411976144E69D8544179C7AF8422AD504174366E5769D85441B34DFF2C23AD5041FCB2ECF968D85441D751349D23AD5041A733A00C69D854415516C31624AD5041D537D57C69D854410E61A13825AD504181B8888F69D8544135E7A8ED25AD50417B4908E568D8544142058BAC26AD5041A217246268D85441CA7C557627AD504174F4D12567D85441B9667A8C28AD504192288FCE66D85441F28B1AC029AD5041F15FA4F766D85441005645CF2AAD5041F15FA4F766D8544113196D232BAD5041BE62724267D85441032070DE2BAD50410E23CC4B67D854418B9312742CAD5041D4891BB767D854416D4F98152DAD5041D7B0936A68D854411CC8A3582EAD50416F0327FA68D854412002D8652FAD5041D7B0936A68D85441C367274F30AD504192F9B0F166D854412763842631AD50419BE5F49766D85441955EE1FD31AD5041FDCD951567D85441359DB83332AD5041CC9DD71068D85441081F0AC831AD50411055BA8969D854419237694A31AD50411C6876E369D85441F1F8911431AD50418A63D3BA6AD854413276408031AD5041CBE081266BD854419131B11D32AD5041CE68F3656BD85441A5ED670333AD5041F25432416BD8544101829C9F33AD504143E87FEE6AD85441A7337FFB33AD50411FFC40136BD85441727B136034AD5041600C9D026BD8544113BAEA9534AD5041F971ECEB6BD85441E962B4DD34AD50410485A8456CD854415F4A555B35AD50412EDCDEFD6BD85441C232F6D835AD50416446D10F6CD85441381A975636AD50415C5A8D696CD85441A3EE7B7A36AD50416A5D975B6ED8544114AE47C138AD5041AE47E1AA6ED85441B81E858B3DAD504152B81EB56FD854413C983D0C40AD504150A7003170D8544179DBB76A3FAD5041EDA1DAA76ED854419B5966D63FAD5041D67B62F46DD85441E0FD8CF540AD5041A8EAF72E6DD85441B6B9129741AD504123C922A46BD85441C9A5563D41AD50417F5017616AD854416FFED7F141AD50415747A9EA67D854411184B16943AD50413011107466D85441B6FCBCAC44AD5041C9EE3AE964D8544117535F2F47AD50413A73952463D85441EBDDE5FA48AD5041F594C31662D8544178B6A48E49AD50417D9C842B62D854410000006040AD5041F6285C3F60D854410D16549C3EAD50417C6C24DF5FD85441AD542BD23EAD504166B033FC60D8544178EA38C03EAD50415FD7ABAF61D85441D3712D7D3DAD504179249C1663D85441300CDE933CAD50416638587063D85441CC1081BC3BAD5041AE8E8E2863D854418B93D2503BAD5041023DFB9862D85441E71AC70D3AAD5041F7293F3F62D85441AE895C4839AD5041358075F761D854414CA1BBCA38AD5041F402C78B61D854410A11510538AD50411E5AFD4361D85441A728B08737AD5041FBDB4ED860D8544107EAD85137AD50410F0D0DDD5FD85441DD92A29937AD5041EC8E5E715FD8544107EAD85137AD50414C50873B5FD8544166AB011C37AD50410BD3D8CF5ED8544198DBBF2036AD504176A7BDF35ED85441B61F3A7F35AD50414F8ABB4860D85441E962B4DD34AD5041C6715CC660D854416F41DF5233AD5041F0C8927E60D854416B1A679F32AD50414477FFEE5FD85441359DB83332AD50414C50873B5FD85441BC8E9F0231AD504108AC601C5ED8544164A6FE8430AD504108AC601C5ED854418BD6BC892FAD50417E93019A5ED8544114EF1B0C2FAD50417E93019A5ED85441D3716DA02EAD504113BF1C765ED854410D8E6F4B2DAD5041E17BA2175FD85441F667F7972CAD5041B3FDF3AB5ED85441C1FD04862CAD50413D16532E5ED8544143F8615D2DAD5041A4B003455DD85441099483BE2EAD50412CE1DE7D5CD854418232347621AD5041E254CEAA59D8544150D7C0491BAD5041C996E77958D854417ECAD0461BAD50414E68A98358D854417D4DE48011AD50412D0E429A56D85441CB458D8111AD504193F6CA9656D85441E4B0479103AD5041F26666E653D85441AEB0479103AD5041E76666E653D854415CB0479103AD5041D56666E653D854414CB0479103AD5041D26666E653D8544105C3F568EDAC50411D90C27555D854418FC2F5F8DEAC50417B14AE075CD8544152B81E55D4AC5041333333635ED85441100000000AAC3328D7AC5041FFEA6FDF66D854412BE01A8AD6AC504184BF7CE465D854418BA14354D6AC5041EB592DFB64D85441F6752878D6AC50414A1B56C564D85441B81FF2BFD6AC504115B163B364D854416BD23110D9AC50418B98043165D854412671B506DBAC50418FD2383E66D85441F42D3BA8DBAC5041FDCD951567D854416A15DC25DCAC5041A246A15868D8544135ABE913DCAC5041DAD70B1E69D8544189595684DBAC50411C6876E369D85441E1B9D28DD9AC5041B8F43D806BD85441A92868C8D8AC50414D20595C6BD85441A5EE33BBD7AC5041DE11402B6AD854412E07933DD7AC50414E9834E868D854410AAC3328D7AC5041FFEA6FDF66D854411A000000AE5463CCFDAC5041C0CD05F05BD8544179EA70BAFDAC5041DE11804E5BD8544179EA70BAFDAC504110423E535AD85441192948F0FDAC50414E98740B5AD85441192948F0FDAC50413772FC5759D85441AE5463CCFDAC50414A5E40FE58D8544144933A02FEAC50419E0CAD6E58D854418510E96DFEAC504127250CF157D8544150A6F65BFEAC5041C53C6B7357D85441BB7ADB7FFEAC5041B816F3BF56D8544188376121FFAC5041F66C297856D854416AF3E6C2FFAC5041C102376656D85441C2DB874000AD5041B816F3BF56D85441C50200F400AD5041C53C6B7357D854413BEAA07101AD50415D8FFE0258D85441A6BE859501AD5041DF895BDA58D8544111936AB901AD5041DAD74B415AD85441DC2878A701AD5041F1FDC3F45AD854417154938301AD5041DE11804E5BD854413BEAA07101AD50418A6313DE5BD854413BEAA07101AD5041014BB45B5CD854419BABC93B01AD50415820997F5CD85441A3970DE200AD504122B6A66D5CD854413489F4B0FFAC50417F5057845BD85441BB7ADB7FFEAC50417F5057845BD85441AE5463CCFDAC5041C0CD05F05BD85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990453 - 325673
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1434  </desc>
+<a>
+010600000001000000010300000001000000610000008FC2F5D8D4AC504185EB51782AD8544152B81EB5D7AC504185EB51882CD85441D7A3705DDBAC5041333333432ED854419A999939DEAC50410AD7A3102DD8544148E17A14E3AC5041333333332CD85441E17A14CEE6AC50411F85EB312ED8544152B81E45E7AC5041EC51B83E35D85441D7A370FDEDAC5041D7A3703D38D8544152B81E75EDAC50419A9999193BD854417B14AE97ECAC5041AE47E13A3CD85441F6285CEFE7AC5041713D0AE739D854418FC2F568E4AC5041EC51B86E3BD85441D7A370ADE4AC5041713D0A073DD85441EC51B8BEE3AC5041000000A03ED85441EC51B8BEE3AC504152B81E1542D854410AD7A3D0E2AC5041295C8F0245D85441295C8FD2DFAC5041000000D043D854417B14AE27DFAC5041D7A370AD44D8544148E17AF4DFAC5041CDCCCCBC47D854417B14AE17DEAC50410000000049D85441EC51B85ED9AC504152B81E4548D85441295C8F72D4AC504185EB516846D85441F6285C0FCFAC5041295C8F0245D8544133333343CEAC5041AE47E15A40D85441EC51B8FECDAC504152B81ED53AD8544148E17A84D2AC5041C3F5280C35D85441B81E850BD5AC5041713D0A9730D85441C3F5281CD6AC5041CDCCCCDC2DD85441C3F5280CD4AC504152B81E452BD8544114AE4741D1AC50413D0AD72329D85441D7A370EDCEAC5041C3F5288C26D854417B14AE87CDAC50413D0AD7F323D854419A999999CCAC504148E17AD41ED85441E17A140ECBAC504152B81E3518D85441CDCCCCECC8AC5041000000C021D85441A4703D4AC8AC5041000000F025D8544100000090C7AC504148E17A243ED854418FC2F568C7AC50415C8FC2E544D85441CDCCCC2CC6AC5041CDCCCCDC44D85441CDCCCCFCC5AC50410AD7A3E04ED85441666666F6C5AC50417B14AE2751D854419A999949D0AC504148E17AB459D8544152B81EC5D0AC50413D0AD7A35BD8544185EB5168D2AC5041C3F528DC5ED8544152B81E55D4AC5041333333635ED85441713D0A47D5AC50410AD7A36067D85441F6285C8FD5AC504148E17A146AD85441EC51B84ED6AC50413333333371D854410AD7A3E0D9AC50411F85EBE177D8544148E17AB4DCAC5041B81E851B7DD85441EC51B88EDEAC5041E17A148E7AD85441D7A370ADE4AC5041F6285C8F77D8544114AE47E1E2AC504114AE479174D85441713D0A07DDAC5041713D0AC770D85441295C8FB2DBAC504114AE47516DD85441333333D3DDAC5041B81E85EB6BD85441EC51B8AEE1AC5041713D0AB76ED8544185EB5158E4AC5041666666866AD85441EC51B8CEE5AC50417B14AE9769D85441EC51B8FEEAAC5041E17A140E6CD8544133333353EDAC5041B81E85CB6CD8544148E17A84F0AC5041A4703DEA6BD854413D0AD763F5AC50410AD7A3806AD85441D7A3709DFEAC504152B81E356AD85441E17A14DE05AD50411F85EB0163D85441713D0A970AAD504152B81E5566D8544114AE47510DAD5041295C8F0262D8544185EB51E810AD504185EB516863D85441295C8FA213AD50413D0AD73365D854411F85EBA112AD504185EB51B869D85441AE47E16A1FAD5041B81E85EB6AD85441333333C322AD50418FC2F5C86AD8544114AE47B129AD5041C3F528DC6BD85441A4703D8A2EAD5041666666D66CD85441713D0AE730AD5041A4703D6A6DD85441E17A149E32AD504152B81ED56DD8544114AE47C138AD5041AE47E1AA6ED85441B81E858B3DAD504152B81EB56FD85441713D0AC740AD504152B81E5570D854410AD7A38049AD50411F85EB7171D854413D0AD7F34BAD50419A9999B962D854410000006040AD5041F6285C3F60D854419A99997921AD5041A4703DAA59D8544114AE479103AD5041666666E653D85441B81E85EB03AD50410AD7A36052D85441C3F5283C08AD50410AD7A3E042D85441EC51B81EF8AC5041A4703D6A38D85441295C8FE2E2AC5041AE47E14A2AD8544133333363E1AC5041E17A141E19D85441EC51B80EE0AC5041C3F5289C17D8544148E17A24CCAC5041713D0A5713D85441E17A148ECBAC50419A9999F915D8544166666676CDAC50415C8FC2D51CD85441E17A14EECDAC504185EB511820D85441F6285C0FCFAC50415C8FC21524D854417B14AEA7D1AC5041F6285CCF27D854418FC2F5D8D4AC504185EB51782AD85441
+</a>
+
+<b>
+010600000001000000010300000003000000EE00000052B81E55D4AC5041333333635ED85441713D0A47D5AC50410AD7A36067D85441EC51B8BED8AC504148E17AF46FD85441F00EFA22D8AC5041F886276A70D85441C3A4701DD8AC5041A8B81E6570D8544141295C8FD5AC504102E47A146AD85441A263039BD5AC50411E637A836AD85441A7FF340AD6AC50418EB29BA66ED85441ADA4F63CD6AC5041983F118A70D854410C52B84ED6AC50416933333371D85441BC13605AD6AC50418857044971D85441B83EEC91D6AC50416058FEB071D8544110076A9CD6AC504158B9A1C471D8544177A9ACE0D9AC50417FD2FBE177D85441205D0F67DAAC50419F5651DA78D85441A8F0A0FADAAC50412F5C03EB79D854416C30602FDCAC504118BE8D257CD85441B5B4C740DCAC504188B5BE027CD85441775E9188DCAC5041718F464F7BD854414D075BD0DCAC50410EA7A5D17AD85441EE453206DDAC50412DEB1F307AD85441F958EE5FDDAC50416A2E9A8E79D854415C544B37DEAC50416A2E9A8E79D85441CB4FA80EDFAC50410A6D71C479D854416CA13B9EDFAC5041D5027FB279D85441D77520C2DFAC5041FF59B56A79D854412E4B05E6DFAC504129B1EB2279D85441395EC13FE0AC5041C6C84AA578D854411B1A47E1E0AC5041F01F815D78D854411341BF94E1AC5041BBB58E4B78D854411F547BEEE1AC50411A77B71578D854418A286012E2AC5041EDE54C5077D854418A286012E2AC5041173D830877D85441E4951809E2AC50410DED6FA276D85441CF13AE67E0AC504113D6A32076D85441F0EB5198DEAC50411AEB515875D8544139C2F508DDAC50411A713DAA74D854413D3E0A07DCAC50413D0AD7F373D8544197DF4C86D8AC50419B3E77C470D854417216590ED9AC50412ACBEB4470D8544141295C7FDCAC504161A3705D73D85441F639A5D5DCAC50410807D89673D8544171938DE0DCAC5041FB9BC6ED72D8544172465EF6DCAC50414D09B1BC72D854413B3E319EDCAC50410D4FD26271D854418B43C79EDBAC50417769243970D85441F2570E9DDBAC504173094D8F6FD854417FD8B5F5DAAC504139573D696DD85441DCFDE057DBAC5041740CE7A46CD854410156033CDCAC5041FAA18A826CD85441F3638499DCAC5041ACC1A2FF6BD8544157BBA08CDDAC50414D70C18A6BD85441A71A035FDEAC50416A6035CC6BD85441BD9DADCBDFAC5041C5BF979E6CD8544127FB043DE1AC50415C7A2C266DD8544170E1273EE2AC50419EDB99596DD85441E31DFDABE2AC50414A6D18536CD85441F9226D29E3AC5041064556996AD8544130E01D3AE4AC5041C53A769E69D854412917723AE5AC5041AF35062169D85441C9F94DADE6AC5041542EBD7D69D8544109515D92E7AC5041614C9F3C6AD85441F4640661E8AC5041F091E4686AD85441CD74921FE8AC50412B6E9CCE69D854416729590AE8AC5041D650518868D8544156137E20E9AC5041610D446767D85441F271D6A8E9AC5041F9E7180567D85441B31B8526EAAC5041B206DAC166D8544119F21B69EBAC50414EBB33CB66D854418FC2772DECAC504114DF7B6567D8544174517E3BECAC50413D4E6AF667D854419C41F27CECAC50410372B29068D854412908FD00EEAC50412956B0D567D8544172EE1F02EFAC5041B98B8F8F67D854417AB48607F0AC504161C0147D67D8544190B9F684F0AC5041A217246268D854417D8539DCF0AC5041537BEC6769D854410E97627AF1AC50412D1372166AD85441E6F7FB53F2AC50415DABDF636BD85441230F88DAF4AC504147D671A86AD85441EEEC4857F4AC504159D74FE169D854418BA1A260F4AC5041A7ABC16769D85441C8084B12F5AC50413E5AE0F268D85441A61E124FF5AC50415F4419B668D854415244654AF5AC50414ACDE44568D85441E87F7F82F5AC5041CD8349B067D854417F3A140AF6AC5041AB8D9AF066D854411A8C0FDAF8AC50411F460ABC65D85441E6289745F9AC5041A2FC6E2665D8544123903FF7F9AC5041541C87A364D8544129967A75FAAC5041D547FBC162D85441A6DF150BFBAC5041E8333FE661D85441817A9215FCAC5041E0AE891861D85441FEC32DABFCAC50413C757A4160D854412C2DE1BDFCAC5041E59CD89D5FD8544139AC5B0DFDAC50416FCC7CD95ED854415429CBFBFDAC50417B3F812C5ED8544156B4BB47FFAC50410B7560E65DD85441EE6E50CFFFAC50413265D4275ED85441FAEDCA1E00AD504112FA15B45ED8544117DE3E6000AD5041F10FDDF05ED85441AE98D3E700AD5041EC15186F5FD85441594B229001AD5041FA130D0E60D85441D694BD2502AD5041775DA8A360D85441F70BF29502AD504157F2E92F61D854412E79D5C503AD5041BAD601D062D85441B2EF0EF804AD5041D7C016AE63D85441E17A14DE05AD50411F85EB0163D854412D3DBB6406AD5041B3BCE13D63D85441A98A67D107AD50417989DA9764D85441A61385C408AD5041594FD03665D854418C67B19409AD50411515180966D85441EBEC1C6F0BAD5041D49C7CA366D8544173BCE3130DAD5041F74D691165D854415D82D9B20DAD50415585A52764D85441E551A0570FAD5041D4F6EB9E62D85441911A644110AD50417936929562D85441A9EFC67B12AD5041F7FA200F63D85441CCF3FBEB12AD504115BE486363D85441BA831C9A14AD5041DD0124CA63D8544196D22F2C16AD50412C93AB9D65D85441EE1BA72817AD50418A1D30B666D85441BAD6649C16AD504108E2BE2F67D85441BAD6649C16AD5041D1259A9667D85441DDDA990C17AD5041FF29CF0668D854413524110918AD50415AEA281068D8544152E7385D18AD50413D2701BC67D85441A4EFA23D19AD50415AEA281068D85441FFAFFC4619AD50411CEDF65A68D85441146F2C081AAD504135A1810769D85441BBC405781BAD5041FF29CF0668D854418408E1DE1BAD50412CE6F39F67D854415D8DC9611CAD50413D2701BC67D854419E5426261DAD5041DFEFC4A568D8544139E6E5B11DAD5041C52221C26AD85441AE47E16A1FAD5041B81E85EB6AD85441886D64C71FAD5041424CC9E76AD85441886D64C71FAD5041F3FAFCD069D854419FEF7EFF1FAD504102F4F91569D854411EB40D7920AD5041296F119368D85441FD79031821AD5041C86DAA6D68D85441DD3FF9B621AD50417DEE5D8068D85441B083D41D22AD50411976144E69D8544179C7AF8422AD504174366E5769D85441B34DFF2C23AD5041FCB2ECF968D85441D751349D23AD5041A733A00C69D854415516C31624AD5041D537D57C69D854410E61A13825AD504181B8888F69D8544135E7A8ED25AD50417B4908E568D8544142058BAC26AD5041A217246268D85441CA7C557627AD504174F4D12567D85441B9667A8C28AD504192288FCE66D85441F28B1AC029AD5041F15FA4F766D85441005645CF2AAD5041F15FA4F766D8544113196D232BAD5041BE62724267D85441032070DE2BAD50410E23CC4B67D854418B9312742CAD5041D4891BB767D854416D4F98152DAD5041D7B0936A68D854411CC8A3582EAD50416F0327FA68D854412002D8652FAD5041D7B0936A68D85441C367274F30AD504192F9B0F166D854412763842631AD50419BE5F49766D85441955EE1FD31AD5041FDCD951567D85441359DB83332AD5041CC9DD71068D85441081F0AC831AD50411055BA8969D854419237694A31AD50411C6876E369D85441F1F8911431AD50418A63D3BA6AD854413276408031AD5041CBE081266BD854419131B11D32AD5041CE68F3656BD85441A5ED670333AD5041F25432416BD8544101829C9F33AD504143E87FEE6AD85441A7337FFB33AD50411FFC40136BD85441727B136034AD5041600C9D026BD8544113BAEA9534AD5041F971ECEB6BD85441E962B4DD34AD50410485A8456CD854415F4A555B35AD50412EDCDEFD6BD85441C232F6D835AD50416446D10F6CD85441381A975636AD50415C5A8D696CD85441A3EE7B7A36AD50416A5D975B6ED8544114AE47C138AD5041AE47E1AA6ED85441B81E858B3DAD504152B81EB56FD854413C983D0C40AD504150A7003170D8544179DBB76A3FAD5041EDA1DAA76ED854419B5966D63FAD5041D67B62F46DD85441E0FD8CF540AD5041A8EAF72E6DD85441B6B9129741AD504123C922A46BD85441C9A5563D41AD50417F5017616AD854416FFED7F141AD50415747A9EA67D854411184B16943AD50413011107466D85441B6FCBCAC44AD5041C9EE3AE964D8544117535F2F47AD50413A73952463D85441EBDDE5FA48AD5041F594C31662D8544178B6A48E49AD50417D9C842B62D854410000006040AD5041F6285C3F60D854410D16549C3EAD50417C6C24DF5FD85441AD542BD23EAD504166B033FC60D8544178EA38C03EAD50415FD7ABAF61D85441D3712D7D3DAD504179249C1663D85441300CDE933CAD50416638587063D85441CC1081BC3BAD5041AE8E8E2863D854418B93D2503BAD5041023DFB9862D85441E71AC70D3AAD5041F7293F3F62D85441AE895C4839AD5041358075F761D854414CA1BBCA38AD5041F402C78B61D854410A11510538AD50411E5AFD4361D85441A728B08737AD5041FBDB4ED860D8544107EAD85137AD50410F0D0DDD5FD85441DD92A29937AD5041EC8E5E715FD8544107EAD85137AD50414C50873B5FD8544166AB011C37AD50410BD3D8CF5ED8544198DBBF2036AD504176A7BDF35ED85441B61F3A7F35AD50414F8ABB4860D85441E962B4DD34AD5041C6715CC660D854416F41DF5233AD5041F0C8927E60D854416B1A679F32AD50414477FFEE5FD85441359DB83332AD50414C50873B5FD85441BC8E9F0231AD504108AC601C5ED8544164A6FE8430AD504108AC601C5ED854418BD6BC892FAD50417E93019A5ED8544114EF1B0C2FAD50417E93019A5ED85441D3716DA02EAD504113BF1C765ED854410D8E6F4B2DAD5041E17BA2175FD85441F667F7972CAD5041B3FDF3AB5ED85441C1FD04862CAD50413D16532E5ED8544143F8615D2DAD5041A4B003455DD85441099483BE2EAD50412CE1DE7D5CD854418232347621AD5041E254CEAA59D8544150D7C0491BAD5041C996E77958D854417ECAD0461BAD50414E68A98358D854417D4DE48011AD50412D0E429A56D85441CB458D8111AD504193F6CA9656D85441E4B0479103AD5041F26666E653D85441AEB0479103AD5041E76666E653D854415CB0479103AD5041D56666E653D854414CB0479103AD5041D26666E653D8544105C3F568EDAC50411D90C27555D854418FC2F5F8DEAC50417B14AE075CD8544152B81E55D4AC5041333333635ED85441100000000AAC3328D7AC5041FFEA6FDF66D854412BE01A8AD6AC504184BF7CE465D854418BA14354D6AC5041EB592DFB64D85441F6752878D6AC50414A1B56C564D85441B81FF2BFD6AC504115B163B364D854416BD23110D9AC50418B98043165D854412671B506DBAC50418FD2383E66D85441F42D3BA8DBAC5041FDCD951567D854416A15DC25DCAC5041A246A15868D8544135ABE913DCAC5041DAD70B1E69D8544189595684DBAC50411C6876E369D85441E1B9D28DD9AC5041B8F43D806BD85441A92868C8D8AC50414D20595C6BD85441A5EE33BBD7AC5041DE11402B6AD854412E07933DD7AC50414E9834E868D854410AAC3328D7AC5041FFEA6FDF66D854411A000000AE5463CCFDAC5041C0CD05F05BD8544179EA70BAFDAC5041DE11804E5BD8544179EA70BAFDAC504110423E535AD85441192948F0FDAC50414E98740B5AD85441192948F0FDAC50413772FC5759D85441AE5463CCFDAC50414A5E40FE58D8544144933A02FEAC50419E0CAD6E58D854418510E96DFEAC504127250CF157D8544150A6F65BFEAC5041C53C6B7357D85441BB7ADB7FFEAC5041B816F3BF56D8544188376121FFAC5041F66C297856D854416AF3E6C2FFAC5041C102376656D85441C2DB874000AD5041B816F3BF56D85441C50200F400AD5041C53C6B7357D854413BEAA07101AD50415D8FFE0258D85441A6BE859501AD5041DF895BDA58D8544111936AB901AD5041DAD74B415AD85441DC2878A701AD5041F1FDC3F45AD854417154938301AD5041DE11804E5BD854413BEAA07101AD50418A6313DE5BD854413BEAA07101AD5041014BB45B5CD854419BABC93B01AD50415820997F5CD85441A3970DE200AD504122B6A66D5CD854413489F4B0FFAC50417F5057845BD85441BB7ADB7FFEAC50417F5057845BD85441AE5463CCFDAC5041C0CD05F05BD85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294032 - 1090895
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -183107  </desc>
+<a>
+0106000000010000000103000000010000001D000000B18256309C525141AB299999F96454414E0689379B5251416EF0290009655441247F5E80795251413FF862A7066554410AD7A3707852514114AE477116655441E17A14AE77525141F6285C6F206554411F85EBE17652514185EB51E82A65544152B81E8575525141F6285C2F3D655441713D0AD773525141000000F0516554410000005073525141B81E85DB5C655441AE47E15A03535141EC51B86E6B655441E17A142E03535141713D0A1769655441A4703D4A00535141295C8F7257655441D7A3701DFF5251413D0AD763546554419A999989FB5251415C8FC2954E6554413D0AD723FA5251417B14AEA74C655441A4703DFAF6525141EC51B88E456554417B14AE07F552514152B81EC53E655441EC51B80EF352514185EB5138396554413D0AD773EF525141333333833265544100000040ED525141666666862F655441C3F528BCEA525141E17A14BE2C65544148E17AE4E152514152B81EF52265544185EB5188DF525141E17A141E1F655441F6285CCFD85251411F85EB911365544166666656D55251413D0AD7530F655441295C8FA2D15251411F85EB610965544100000080CE5251418FC2F5D804655441EC51B88ECA525141A4703D0AFF645441B18256309C525141AB299999F9645441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000036254D2E9C52514161CBDEB9F9645441C11CB8998D525141C051EE0DF8645441B4E2C4458D525141784D76D9F7645441666666767A525141EC51B8FEF6645441277F5E80795251413DF862A70665544131CA9246795251415CE514030A6554411FEDC83F79525141101F0F680A655441629F153D7952514111113A900A6554411341E6F39A5251416595BD250D65544109E89EB59B525141C2ADFC2A0D6554414370A8FA9C525141D2A955B1F964544136254D2E9C52514161CBDEB9F9645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294032 - 3361131
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -183107  </desc>
+<a>
+0106000000010000000103000000010000001D000000B18256309C525141AB299999F96454414E0689379B5251416EF0290009655441247F5E80795251413FF862A7066554410AD7A3707852514114AE477116655441E17A14AE77525141F6285C6F206554411F85EBE17652514185EB51E82A65544152B81E8575525141F6285C2F3D655441713D0AD773525141000000F0516554410000005073525141B81E85DB5C655441AE47E15A03535141EC51B86E6B655441E17A142E03535141713D0A1769655441A4703D4A00535141295C8F7257655441D7A3701DFF5251413D0AD763546554419A999989FB5251415C8FC2954E6554413D0AD723FA5251417B14AEA74C655441A4703DFAF6525141EC51B88E456554417B14AE07F552514152B81EC53E655441EC51B80EF352514185EB5138396554413D0AD773EF525141333333833265544100000040ED525141666666862F655441C3F528BCEA525141E17A14BE2C65544148E17AE4E152514152B81EF52265544185EB5188DF525141E17A141E1F655441F6285CCFD85251411F85EB911365544166666656D55251413D0AD7530F655441295C8FA2D15251411F85EB610965544100000080CE5251418FC2F5D804655441EC51B88ECA525141A4703D0AFF645441B18256309C525141AB299999F9645441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000036254D2E9C52514161CBDEB9F9645441C11CB8998D525141C051EE0DF8645441B4E2C4458D525141784D76D9F7645441666666767A525141EC51B8FEF6645441277F5E80795251413DF862A70665544131CA9246795251415CE514030A6554411FEDC83F79525141101F0F680A655441629F153D7952514111113A900A6554411341E6F39A5251416595BD250D65544109E89EB59B525141C2ADFC2A0D6554414370A8FA9C525141D2A955B1F964544136254D2E9C52514161CBDEB9F9645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538912 - 248197
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5022  </desc>
+<a>
+0106000000010000000103000000010000001D000000713D0A576E2051418FC2F5B81A435441CDCCCC8C70205141CDCCCC6C19435441A4703DDA76205141A4703DBA1543544148E17A04772051417B14AE971543544148E17AA4762051413D0AD7D31443544100000020732051410AD7A3800E4354411F85EBB1712051415C8FC2C50B435441713D0AE76E20514152B81E850C435441B81E85EB64205141B81E857BFC42544152B81E65652051415C8FC255F9425441C3F528DC64205141AE47E12AF74254418FC2F5F86420514185EB51A8EF425441EC51B82E5E2051419A9999A9F0425441CDCCCC1C5E205141D7A3708DF24254418FC2F5F85D20514185EB51A8F4425441EC51B88E5D205141666666D6FA42544152B81E355D205141A4703D0A004354411F85EBB15C205141C3F528AC07435441666666D65C2051419A99994909435441F6285C3F5E20514185EB51380C4354410AD7A3B05F205141666666D60E435441B81E856B612051415C8FC2451143544148E17A9462205141B81E85BB12435441E17A142E632051410AD7A35015435441D7A370BD63205141C3F5287C174354419A9999F96420514185EB51A819435441333333F3652051410AD7A3F01B435441CDCCCCFC66205141000000801F435441713D0A576E2051418FC2F5B81A435441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000001F85EBB1712051415C8FC2C50B435441B26D6A7C6F2051418289225D0C435441713D0AE76E20514152B81E850C435441E531B95167205141A98A465600435441B81E85EB64205141B81E857BFC42544180AB061965205141DD85FB4DFB425441D8708623652051413C816908FB42544130574C4565205141E60A9F28FA425441D833BC6465205141175E4F58F9425441A920D44B652051416A624BEFF84254418D78453165205141364BB383F8425441D3B9E02965205141E705BF65F8425441A76E76EA63205141C497C9D1FA425441637F783562205141CCDA9E18FC42544151FE66066220514112637C3FFE425441A20F314B62205141F0AFD4B10043544123BB149267205141F431A3FC0C4354418632BD5C6B2051412151B05C1A435441B56B63B16A2051412250FF9E1C435441B56B63B16A2051412C91A0171D435441713D0A576E2051418FC2F5B81A435441CDCCCC8C70205141CDCCCC6C19435441A4703DDA76205141A4703DBA1543544148E17A04772051417B14AE971543544148E17AA4762051413D0AD7D31443544100000020732051410AD7A3800E4354411F85EBB1712051415C8FC2C50B435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538912 - 382657
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5022  </desc>
+<a>
+0106000000010000000103000000010000001D000000713D0A576E2051418FC2F5B81A435441CDCCCC8C70205141CDCCCC6C19435441A4703DDA76205141A4703DBA1543544148E17A04772051417B14AE971543544148E17AA4762051413D0AD7D31443544100000020732051410AD7A3800E4354411F85EBB1712051415C8FC2C50B435441713D0AE76E20514152B81E850C435441B81E85EB64205141B81E857BFC42544152B81E65652051415C8FC255F9425441C3F528DC64205141AE47E12AF74254418FC2F5F86420514185EB51A8EF425441EC51B82E5E2051419A9999A9F0425441CDCCCC1C5E205141D7A3708DF24254418FC2F5F85D20514185EB51A8F4425441EC51B88E5D205141666666D6FA42544152B81E355D205141A4703D0A004354411F85EBB15C205141C3F528AC07435441666666D65C2051419A99994909435441F6285C3F5E20514185EB51380C4354410AD7A3B05F205141666666D60E435441B81E856B612051415C8FC2451143544148E17A9462205141B81E85BB12435441E17A142E632051410AD7A35015435441D7A370BD63205141C3F5287C174354419A9999F96420514185EB51A819435441333333F3652051410AD7A3F01B435441CDCCCCFC66205141000000801F435441713D0A576E2051418FC2F5B81A435441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000001F85EBB1712051415C8FC2C50B435441B26D6A7C6F2051418289225D0C435441713D0AE76E20514152B81E850C435441E531B95167205141A98A465600435441B81E85EB64205141B81E857BFC42544180AB061965205141DD85FB4DFB425441D8708623652051413C816908FB42544130574C4565205141E60A9F28FA425441D833BC6465205141175E4F58F9425441A920D44B652051416A624BEFF84254418D78453165205141364BB383F8425441D3B9E02965205141E705BF65F8425441A76E76EA63205141C497C9D1FA425441637F783562205141CCDA9E18FC42544151FE66066220514112637C3FFE425441A20F314B62205141F0AFD4B10043544123BB149267205141F431A3FC0C4354418632BD5C6B2051412151B05C1A435441B56B63B16A2051412250FF9E1C435441B56B63B16A2051412C91A0171D435441713D0A576E2051418FC2F5B81A435441CDCCCC8C70205141CDCCCC6C19435441A4703DDA76205141A4703DBA1543544148E17A04772051417B14AE971543544148E17AA4762051413D0AD7D31443544100000020732051410AD7A3800E4354411F85EBB1712051415C8FC2C50B435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649439 - 1305896
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1248  </desc>
+<a>
+0106000000010000000103000000020000000A00000048E17A2473545141F6285C0FAFE65441295C8F827554514133333353A5E65441A4703D9A785451411F85EB219BE6544152B81E75795451415C8FC2E598E65441295C8F02755451416666660698E65441C3F528FC7254514148E17A549CE6544114AE47416E54514100000030A2E65441B81E85DB6E54514148E17AF4A7E65441D7A3701D6F545141A4703DDAB0E6544148E17A2473545141F6285C0FAFE6544107000000F6285C2F70545141AE47E1AAA4E65441295C8F326F5451419A999949A3E65441AE47E1DA6F54514114AE47A1A2E6544148E17A546F5451417B14AEE7A1E65441C3F5283C7154514166666686A0E654411F85EBF17254514100000090A2E65441F6285C2F70545141AE47E1AAA4E65441
+</a>
+
+<b>
+010600000001000000010300000001000000580000009A9999E969545141D7A3701DC4E65441D7A370BD6B5451413D0AD7F3C9E65441713D0A676C5451415C8FC2B5CCE65441A4703DFA6C545141EC51B8EED0E6544185EB51D86C545141713D0AC7D2E654411F85EB716C545141CDCCCC9CD5E6544152B81E556A545141C3F528FCD9E65441666666F66854514148E17AF4DAE654418FC2F548685451413D0AD7D3DBE654415C8FC2A567545141666666A6DCE6544185EB518866545141C3F5286CDFE65441D7A370CD63545141AE47E19AEAE6544148E17AD46254514166666656EDE65441713D0AF763545141AE47E1BAECE65441AE47E1CA64545141B81E85DBEBE654411F85EB7165545141EC51B8AEEAE65441C3F528EC65545141A4703D4AEAE654413D0AD7936654514148E17A34EAE65441713D0AA7675451411F85EB91EAE65441E17A14DE68545141295C8FC2EAE65441C3F5283C6A5451415C8FC255EAE6544114AE47316B5451411F85EBF1EAE6544152B81E956B545141F6285CAFEBE654417B14AE476C54514185EB5108ECE65441EC51B8EE6C54514133333313ECE6544185EB51486D545141C3F5286CEBE65441E17A14CE6D545141D7A3708DEAE654417B14AEB76E545141CDCCCC8CE9E65441CDCCCC1C705451413D0AD733E9E65441AE47E13A7254514148E17A34E8E65441666666E673545141A4703DDAE6E654411F85EBF174545141AE47E18AE3E65441C3F5286C755451413D0AD7E3E2E65441E17A148E7654514166666626E2E654410AD7A340775451418FC2F568E1E654410AD7A3207B54514185EB51F8DEE654419A9999E97C5451411F85EBE1DDE65441F6285CDF7E5451418FC2F588DDE654418FC2F5388054514185EB5188DCE65441000000E08054514133333393DBE65441295C8F2281545141713D0AF7D9E654410AD7A3F082545141C3F5285CD9E65441713D0A6785545141CDCCCC0CD9E65441AE47E1AA87545141666666F6D8E65441CDCCCC4C8A54514133333383D8E65441EC51B85E875451417B14AEA7CBE65441A4703D2A86545141EC51B81EC7E6544152B81ED58454514148E17A04C3E654411F85EBD1835451410AD7A370C0E65441713D0A1782545141AE47E1CABCE65441713D0AA78054514133333333BAE65441295C8F427C5451413D0AD753B3E654418FC2F5D87C54514152B81EC5B2E654417B14AEA77F545141B81E85BBB1E65441E17A142E82545141AE47E1BAAFE6544185EB518884545141C3F5286CADE6544152B81E25875451419A9999B9ABE65441E17A14FE87545141C3F528DCAAE65441A4703D1A8954514166666676AAE65441EC51B8EE8A54514148E17A54A9E654411F85EBA18B545141D7A370ADA8E65441000000608B545141AE47E1EAA6E65441333333638B5451417B14AE67A5E654411F85EBE18B5451418FC2F598A2E654410AD7A3108C545141AE47E1CA9DE6544152B81E058C545141333333B399E654411F85EBC18A545141AE47E19A93E65441AE47E11A8A5451417B14AEE790E65441EC51B8BE87545141F6285C9F8FE65441E17A14EE7C545141F6285CCF8CE65441000000207B545141AE47E1CA8CE654411F85EB717A5451418FC2F5788CE65441713D0A0778545141B81E859B91E65441505B69C1745451418299E69098E654416329191C77545141A137163899E654418E29958D765451416A8C23139BE654411AD57F9573545141106D14D9A4E65441352B6DFC705451417815CB74ACE65441758B12FA6E545141ECAE2B14ACE65441D7A3701D6F545141A4703DDAB0E654415C8FC2456F5451410AD7A330B1E6544152B81E956E545141295C8F22B5E65441EC51B83E6C545141713D0A27B8E65441A4703D7A6B5451410AD7A360B9E65441EC51B84E6A54514114AE4701BCE6544114AE47A169545141333333B3BEE654419A99998969545141B81E857BC1E654419A9999E969545141D7A3701DC4E65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649439 - 3311532
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1248  </desc>
+<a>
+0106000000010000000103000000020000000A00000048E17A2473545141F6285C0FAFE65441295C8F827554514133333353A5E65441A4703D9A785451411F85EB219BE6544152B81E75795451415C8FC2E598E65441295C8F02755451416666660698E65441C3F528FC7254514148E17A549CE6544114AE47416E54514100000030A2E65441B81E85DB6E54514148E17AF4A7E65441D7A3701D6F545141A4703DDAB0E6544148E17A2473545141F6285C0FAFE6544107000000F6285C2F70545141AE47E1AAA4E65441295C8F326F5451419A999949A3E65441AE47E1DA6F54514114AE47A1A2E6544148E17A546F5451417B14AEE7A1E65441C3F5283C7154514166666686A0E654411F85EBF17254514100000090A2E65441F6285C2F70545141AE47E1AAA4E65441
+</a>
+
+<b>
+010600000001000000010300000001000000580000009A9999E969545141D7A3701DC4E65441D7A370BD6B5451413D0AD7F3C9E65441713D0A676C5451415C8FC2B5CCE65441A4703DFA6C545141EC51B8EED0E6544185EB51D86C545141713D0AC7D2E654411F85EB716C545141CDCCCC9CD5E6544152B81E556A545141C3F528FCD9E65441666666F66854514148E17AF4DAE654418FC2F548685451413D0AD7D3DBE654415C8FC2A567545141666666A6DCE6544185EB518866545141C3F5286CDFE65441D7A370CD63545141AE47E19AEAE6544148E17AD46254514166666656EDE65441713D0AF763545141AE47E1BAECE65441AE47E1CA64545141B81E85DBEBE654411F85EB7165545141EC51B8AEEAE65441C3F528EC65545141A4703D4AEAE654413D0AD7936654514148E17A34EAE65441713D0AA7675451411F85EB91EAE65441E17A14DE68545141295C8FC2EAE65441C3F5283C6A5451415C8FC255EAE6544114AE47316B5451411F85EBF1EAE6544152B81E956B545141F6285CAFEBE654417B14AE476C54514185EB5108ECE65441EC51B8EE6C54514133333313ECE6544185EB51486D545141C3F5286CEBE65441E17A14CE6D545141D7A3708DEAE654417B14AEB76E545141CDCCCC8CE9E65441CDCCCC1C705451413D0AD733E9E65441AE47E13A7254514148E17A34E8E65441666666E673545141A4703DDAE6E654411F85EBF174545141AE47E18AE3E65441C3F5286C755451413D0AD7E3E2E65441E17A148E7654514166666626E2E654410AD7A340775451418FC2F568E1E654410AD7A3207B54514185EB51F8DEE654419A9999E97C5451411F85EBE1DDE65441F6285CDF7E5451418FC2F588DDE654418FC2F5388054514185EB5188DCE65441000000E08054514133333393DBE65441295C8F2281545141713D0AF7D9E654410AD7A3F082545141C3F5285CD9E65441713D0A6785545141CDCCCC0CD9E65441AE47E1AA87545141666666F6D8E65441CDCCCC4C8A54514133333383D8E65441EC51B85E875451417B14AEA7CBE65441A4703D2A86545141EC51B81EC7E6544152B81ED58454514148E17A04C3E654411F85EBD1835451410AD7A370C0E65441713D0A1782545141AE47E1CABCE65441713D0AA78054514133333333BAE65441295C8F427C5451413D0AD753B3E654418FC2F5D87C54514152B81EC5B2E654417B14AEA77F545141B81E85BBB1E65441E17A142E82545141AE47E1BAAFE6544185EB518884545141C3F5286CADE6544152B81E25875451419A9999B9ABE65441E17A14FE87545141C3F528DCAAE65441A4703D1A8954514166666676AAE65441EC51B8EE8A54514148E17A54A9E654411F85EBA18B545141D7A370ADA8E65441000000608B545141AE47E1EAA6E65441333333638B5451417B14AE67A5E654411F85EBE18B5451418FC2F598A2E654410AD7A3108C545141AE47E1CA9DE6544152B81E058C545141333333B399E654411F85EBC18A545141AE47E19A93E65441AE47E11A8A5451417B14AEE790E65441EC51B8BE87545141F6285C9F8FE65441E17A14EE7C545141F6285CCF8CE65441000000207B545141AE47E1CA8CE654411F85EB717A5451418FC2F5788CE65441713D0A0778545141B81E859B91E65441505B69C1745451418299E69098E654416329191C77545141A137163899E654418E29958D765451416A8C23139BE654411AD57F9573545141106D14D9A4E65441352B6DFC705451417815CB74ACE65441758B12FA6E545141ECAE2B14ACE65441D7A3701D6F545141A4703DDAB0E654415C8FC2456F5451410AD7A330B1E6544152B81E956E545141295C8F22B5E65441EC51B83E6C545141713D0A27B8E65441A4703D7A6B5451410AD7A360B9E65441EC51B84E6A54514114AE4701BCE6544114AE47A169545141333333B3BEE654419A99998969545141B81E857BC1E654419A9999E969545141D7A3701DC4E65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8231 - 119886
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -10019  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCC9C26B45041B81E85AB1ADF5441D7A3702D2DB450411F85EB31E1DE5441295C8F422CB450415C8FC295E0DE544152B81E450AB45041AE47E1EAF4DE5441E17A14AE04B4504148E17A3429DF5441E17A14DE21B45041F6285C0F3ADF54413333331323B450410000007039DF5441CDCCCC9C26B45041B81E85AB1ADF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000CDCCCC9C26B45041B81E85AB1ADF5441C923A30D28B450411F30700E0EDF5441D7A3702D2DB450411F85EB31E1DE5441295C8F422CB450415C8FC295E0DE544152B81E450AB45041AE47E1EAF4DE54419670CF5307B4504162D2277110DF54411F31361607B45041868755B112DF54417259B89F06B4504177E9AC0517DF54413F76208106B45041747BD62318DF5441A6B0996C25B450419838D2E524DF5441CDCCCC9C26B45041B81E85AB1ADF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9511 - 310463
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2121  </desc>
+<a>
+010600000001000000010300000001000000260000003D0AD7834D275141B81E85FBCAA05441F6285C2F54275141A4703D8AC4A05441CDCCCCDC5B2751410AD7A380BAA05441D7A370CD5D275141D7A3708DB8A054417B14AEE75F275141333333F3B6A05441C3F528DC6027514100000060B4A054418FC2F5F863275141A4703D2AB2A05441295C8F82662751411F85EB71B0A054415C8FC2F5682751418FC2F5A8B0A0544152B81EC56B275141A4703DAAAEA0544148E17A946F27514133333363AEA05441713D0A87752751413D0AD783AAA05441713D0AE7762751417B14AEF7A8A05441D7A370DD77275141295C8FB2A6A0544152B81EE579275141B81E85FBA4A0544166666656732751410AD7A3009CA0544185EB51586F27514185EB51E896A05441000000E06B275141AE47E12A9AA05441CDCCCC0C69275141E17A144E9EA054419A99995967275141D7A3704DA4A054410AD7A39063275141A4703D0AA8A05441D7A3704D5F27514185EB5168ABA05441713D0AA75927514185EB5128B0A054410AD7A310552751410AD7A340B4A0544133333303542751415C8FC2A5B8A05441713D0AB753275141B81E853BBAA05441B81E85BB52275141D7A3701DBCA05441F6285CCF4B2751417B14AE07C1A0544148E17AB44A275141EC51B8BEC7A054410AD7A33049275141295C8F72CAA054417B14AE3745275141C3F5287CCFA054417B14AED742275141E17A148ED2A0544152B81E05412751410AD7A3D0D4A054419A9999593D2751415C8FC2C5D8A054413D0AD7C33C2751419A999909D9A05441CDCCCCEC3C275141B81E85DBDAA0544185EB51F83D275141A4703D2AE0A054413D0AD7834D275141B81E85FBCAA05441
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000041F31F05412751418150A2D0D4A054411BAE22E43F275141A9514308D6A05441C3CE9A593D2751414AE3C2C5D8A054411729D8C33C2751413A939909D9A05441FA23CEEC3C2751418FBA84DBDAA054419800CC953D275141C6A5D835DEA0544111CD15C13D2751411E85B411DFA054416CC351F83D275141FEA43C2AE0A0544138CED6834D2751419F2285FBCAA05441390E5B2F5427514103903D8AC4A05441185F8A5A572751411195B565C0A05441CDCCCCDC5B2751410AD7A380BAA05441B2DB06CC5B27514157B1574BBAA05441DE731E985D2751412A19407FB8A05441C96168E45E2751410F4D3499B7A05441E25049B15E275141E2B41CCDB5A054418271F096602751413EB74ACEB2A054416819901564275141F552271CB0A0544159C12F946727514197DC4DB6AEA05441B45ADEE067275141FD75FC02AFA05441F59B2CAC6B2751411388B2B6ADA05441E643CC2A6F2751410FAB879DACA0544157FA5CDB7527514111140752A9A05441CE5F170E77275141F547FB6BA8A0544176A393DA7727514154275486A6A054418A4CCAD9792751410FA05BEDA4A05441427FEEBB71275141C3E1D2F499A0544182C249BB70275141745C4FAD98A05441B6CE89456C2751413573F1D69CA0544181139D926B275141ACE3D7B9A5A05441105D0CE26427514122E01238AAA054419DD47CC8642751418879C184AAA054410B0C36645F2751416E216103AEA054419CC950185D275141DD63464FB0A054413B764C995A2751413EB74ACEB2A0544123AF7934562751414E7CD6B3B5A05441ABA6330354275141F577C2A5B8A054411192A2105427514134EACC5CBAA054415CD247015327514111C43D9ABCA054415D09729D4C2751417CBDF5C8C0A054415E2AB82E4A27514158184711CBA054415B93327346275141A4CBD763CEA0544133177A5446275141B6E8AE87D0A05441C70E494144275141248C131ED2A0544141F31F05412751418150A2D0D4A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14921 - 3056722
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5545  </desc>
+<a>
+0106000000010000000103000000010000002100000048E17AA4F3515141CDCCCC3C1CD8544114AE4741F5515141B81E85EB1CD854418FC2F5F8005251416666667620D85441D7A3703D06525141AE47E1CA20D854418FC2F5D812525141A4703D5A1FD8544148E17AA4165251417B14AE771FD85441000000F01B525141666666D620D85441D7A3702D1E5251418FC2F57822D85441A4703D0A22525141CDCCCC5C23D854415C8FC235325251419A9999492BD85441C3F528FC4152514185EB51A82CD85441C3F528FC4352514148E17A842DD85441AE47E13A495251411F85EB212FD85441C3F5289C55525141AE47E1DA35D85441713D0A075A525141A4703DBA35D85441CDCCCCDC5B525141F6285C5F31D85441CDCCCC0C5E5251419A99990918D854418FC2F5484D52514114AE471116D85441295C8F9246525141A4703DCA15D85441333333934352514185EB51A80DD8544114AE47312A5251417B14AEE70ED85441A4703D4A23525141B81E85AB0ED85441713D0AC722525141713D0A2706D85441EC51B8AE2F52514152B81E9500D85441EC51B8CE2B52514152B81E95FAD75441B81E85EB23525141713D0AC7FDD754411F85EBE11C5251417B14AE8700D854416666660615525141CDCCCC1C02D85441B81E854B095251415C8FC27503D854415C8FC2F5FF5151413333339304D85441F6285C7FF4515141E17A140E04D854411F85EB11F451514152B81E2510D8544148E17AA4F3515141CDCCCC3C1CD85441
+</a>
+
+<b>
+0106000000010000000103000000010000002500000034E8EEA253525141B10B89C834D85441FF49D28D55525141E80E18D335D854410600E333575251418EC9549F34D85441FC70F4965952514167A80CC231D854417C4AEC795A52514153BE70702FD85441DFAA596E5B525141B6050F132BD85441B7EFF01C5C525141FC6D433B23D8544136C9E8FF5C525141C4AF6F461CD854414C0238D04B5251414523889D19D854411CBA83263D5251413B7BCAAE16D8544175DAB5FC2C5251410023D64513D854419D167070235251413B62FB5C11D8544145B97E2923525141D976508B0CD85441713D0AC722525141713D0A2706D85441EC51B8AE2F52514152B81E9500D85441EC51B8CE2B52514152B81E95FAD75441B81E85EB23525141713D0AC7FDD754411F85EBE11C5251417B14AE8700D854416666660615525141CDCCCC1C02D85441B81E854B095251415C8FC27503D854415C8FC2F5FF5151413333339304D85441F6285C7FF4515141E17A140E04D854411F85EB11F451514152B81E2510D8544148E17AA4F3515141CDCCCC3C1CD8544114AE4741F5515141B81E85EB1CD854418FC2F5F8005251416666667620D85441D7A3703D06525141AE47E1CA20D854418FC2F5D812525141A4703D5A1FD8544148E17AA4165251417B14AE771FD85441000000F01B525141666666D620D85441D7A3702D1E5251418FC2F57822D85441A4703D0A22525141CDCCCC5C23D854415C8FC235325251419A9999492BD85441C3F528FC4152514185EB51A82CD85441C3F528FC4352514148E17A842DD85441AE47E13A495251411F85EB212FD8544134E8EEA253525141B10B89C834D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14921 - 3327923
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5545  </desc>
+<a>
+0106000000010000000103000000010000002100000048E17AA4F3515141CDCCCC3C1CD8544114AE4741F5515141B81E85EB1CD854418FC2F5F8005251416666667620D85441D7A3703D06525141AE47E1CA20D854418FC2F5D812525141A4703D5A1FD8544148E17AA4165251417B14AE771FD85441000000F01B525141666666D620D85441D7A3702D1E5251418FC2F57822D85441A4703D0A22525141CDCCCC5C23D854415C8FC235325251419A9999492BD85441C3F528FC4152514185EB51A82CD85441C3F528FC4352514148E17A842DD85441AE47E13A495251411F85EB212FD85441C3F5289C55525141AE47E1DA35D85441713D0A075A525141A4703DBA35D85441CDCCCCDC5B525141F6285C5F31D85441CDCCCC0C5E5251419A99990918D854418FC2F5484D52514114AE471116D85441295C8F9246525141A4703DCA15D85441333333934352514185EB51A80DD8544114AE47312A5251417B14AEE70ED85441A4703D4A23525141B81E85AB0ED85441713D0AC722525141713D0A2706D85441EC51B8AE2F52514152B81E9500D85441EC51B8CE2B52514152B81E95FAD75441B81E85EB23525141713D0AC7FDD754411F85EBE11C5251417B14AE8700D854416666660615525141CDCCCC1C02D85441B81E854B095251415C8FC27503D854415C8FC2F5FF5151413333339304D85441F6285C7FF4515141E17A140E04D854411F85EB11F451514152B81E2510D8544148E17AA4F3515141CDCCCC3C1CD85441
+</a>
+
+<b>
+0106000000010000000103000000010000002500000034E8EEA253525141B10B89C834D85441FF49D28D55525141E80E18D335D854410600E333575251418EC9549F34D85441FC70F4965952514167A80CC231D854417C4AEC795A52514153BE70702FD85441DFAA596E5B525141B6050F132BD85441B7EFF01C5C525141FC6D433B23D8544136C9E8FF5C525141C4AF6F461CD854414C0238D04B5251414523889D19D854411CBA83263D5251413B7BCAAE16D8544175DAB5FC2C5251410023D64513D854419D167070235251413B62FB5C11D8544145B97E2923525141D976508B0CD85441713D0AC722525141713D0A2706D85441EC51B8AE2F52514152B81E9500D85441EC51B8CE2B52514152B81E95FAD75441B81E85EB23525141713D0AC7FDD754411F85EBE11C5251417B14AE8700D854416666660615525141CDCCCC1C02D85441B81E854B095251415C8FC27503D854415C8FC2F5FF5151413333339304D85441F6285C7FF4515141E17A140E04D854411F85EB11F451514152B81E2510D8544148E17AA4F3515141CDCCCC3C1CD8544114AE4741F5515141B81E85EB1CD854418FC2F5F8005251416666667620D85441D7A3703D06525141AE47E1CA20D854418FC2F5D812525141A4703D5A1FD8544148E17AA4165251417B14AE771FD85441000000F01B525141666666D620D85441D7A3702D1E5251418FC2F57822D85441A4703D0A22525141CDCCCC5C23D854415C8FC235325251419A9999492BD85441C3F528FC4152514185EB51A82CD85441C3F528FC4352514148E17A842DD85441AE47E13A495251411F85EB212FD8544134E8EEA253525141B10B89C834D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16141 - 2907697
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8938  </desc>
+<a>
+01060000000100000001030000000100000015000000A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F627175544133333323240051415C8FC2F57C755441E17A14EE24005141713D0AF77E75544148E17A24270051418FC2F5E8817554418FC2F5682B0051417B14AE1787755441A4703D6A2D005141A4703D0A8A755441333333532F005141666666768D755441C3F528FC3000514114AE47418F755441AE47E10A3300514152B81EA590755441666666C63E005141295C8FD296755441CDCCCCEC450051417B14AE4791755441B81E858B4A005141713D0AA78D755441A4703D2A4D0051418FC2F5588B755441B81E854B500051419A9999298875544133333303560051413333332383755441A4703DBA56005141CDCCCC6C82755441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000B0BC29AB4D005141E683C5D58A755441FDCA13944D005141E84E43ED8A755441CD2C69B14D005141B72AF5F98A755441B81E854B500051419A9999298875544133333303560051413333332383755441A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F62717554419BF822732A005141BD6704DC767554410D32F9782A005141FE9D87E17675544124306A722A005141B3C4D2E7767554414FCAD9612B005141EFB81AC477755441570349752B005141BE4F2ED477755441093E7A413000514174C76C887B7554416976F5D836005141F42CA001807554412B7F171B3A005141118FF0DF81755441BDA51BC83C005141DA05BF6883755441FBDA133B4100514158DA03A985755441B0BC29AB4D005141E683C5D58A755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16141 - 3624179
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8938  </desc>
+<a>
+01060000000100000001030000000100000015000000A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F627175544133333323240051415C8FC2F57C755441E17A14EE24005141713D0AF77E75544148E17A24270051418FC2F5E8817554418FC2F5682B0051417B14AE1787755441A4703D6A2D005141A4703D0A8A755441333333532F005141666666768D755441C3F528FC3000514114AE47418F755441AE47E10A3300514152B81EA590755441666666C63E005141295C8FD296755441CDCCCCEC450051417B14AE4791755441B81E858B4A005141713D0AA78D755441A4703D2A4D0051418FC2F5588B755441B81E854B500051419A9999298875544133333303560051413333332383755441A4703DBA56005141CDCCCC6C82755441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000B0BC29AB4D005141E683C5D58A755441FDCA13944D005141E84E43ED8A755441CD2C69B14D005141B72AF5F98A755441B81E854B500051419A9999298875544133333303560051413333332383755441A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F62717554419BF822732A005141BD6704DC767554410D32F9782A005141FE9D87E17675544124306A722A005141B3C4D2E7767554414FCAD9612B005141EFB81AC477755441570349752B005141BE4F2ED477755441093E7A413000514174C76C887B7554416976F5D836005141F42CA001807554412B7F171B3A005141118FF0DF81755441BDA51BC83C005141DA05BF6883755441FBDA133B4100514158DA03A985755441B0BC29AB4D005141E683C5D58A755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>973705 - 3167325
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -6137  </desc>
+<a>
+01060000000200000001030000000100000056000000527A4BC396F750410F487EFEE21C5541A689A10597F750413F09A241E31C5541C51F99F197F75041B5E1FE4BE41C5541DBC866D795F750415DDC8F1DE71C55417DB87F5D95F750412F002CA0E71C55418A79BD5795F75041BE1E99B0E71C5541C29C546E95F750418BB8E4C8E71C5541C33877E896F75041FAED686CE91C5541D7A3709D99F7504114AE4771E81C55418FC2F508A1F750410AD7A300E51C554185475530A3F75041C3B1F860E21C5541C7DA5FAFA8F750414E5E473CDE1C5541A2F26DDEA9F75041C7161DAFDA1C554185EB5178AAF75041EC51B82ED91C55417B14AE87AAF75041295C8FF2D71C55415C8FC245ACF75041D7A3700DD51C5541295C8F62B0F75041EC51B8DECE1C5541000000B0BEF7504100000070C71C55418FC2F5F8C4F7504114AE4771C41C5541C3F5285CC7F750419A999929C31C5541C3F5280CCAF75041B81E85FBC11C5541CDCCCCECCDF75041713D0AC7C01C55410AD7A390D2F7504185EB51C8BF1C55411F85EB81D6F750413D0AD7F3BE1C55414C58557DDAF7504137BA504DC01C554135BBA807E3F75041A185E3F3C41C5541F772E3E3E4F750418F916A8BC51C5541B55269EBE6F750416615D3A4C61C554147DEA237EAF7504124F558ACC81C554152B81E45EFF750418FC2F5B8CB1C55419A999929F4F7504185EB5108CE1C5541F2804F1CF4F750416D38CDD4CD1C5541EEA89A47F4F7504174A427BFCD1C5541F13C405DF4F7504169601800CE1C5541EC0D044DF4F750416F75EBAECD1C5541F2804F1CF4F7504174E8367ECD1C554169EF4449F4F75041C7DC2F9CCD1C5541EEA89A47F4F75041787CDC93CD1C5541EAD0E572F4F75041787CDC93CD1C5541B9FD5365F4F75041E62200AFCD1C5541A8B06B7AF6F7504141E48019CF1C554192284DFCF6F75041500045ADCE1C554192284DFCF6F750414C2890D8CE1C55418F509827F7F750414C2890D8CE1C55418B1A6B32F7F75041505EBDCDCE1C554192E43D3DF7F7504145BC35EECE1C5541295C8FF2F6F750419A999959CF1C55411F85EBF100F85041713D0A57CD1C5541F6285CDF06F8504148E17A94CC1C5541333333730DF85041333333E3CB1C5541884976680EF85041C8740B61CB1C55412A7EE3C109F85041FF0C67DBC91C5541A60E6E0906F85041F8A00CF1C91C554144AF354D01F8504119B149EDC81C554153CBF9E000F850411D89FEC1C81C5541CDCCCCCCF8F75041F6285C7FC91C5541B81E859BEEF7504148E17A94C61C554114AE4761ECF750418FC2F5E8C51C5541F6285C1FEAF750415C8FC2D5C41C5541D7A370DDE7F750418FC2F5E8C31C55410AD7A3B0E0F75041A4703D4AC01C554133333373DEF75041F6285C0FBD1C5541F6285C6FDDF75041F6285CCFBC1C554185EB5118D5F75041EC51B8CEBA1C5541D7A3702DD2F750415C8FC255BA1C55419A999979CFF750410AD7A3E0BA1C55418FC2F598CBF75041666666C6BB1C5541B81E852BC6F7504166666616BD1C5541B81E855BC4F75041AE47E1DABD1C554152B81EC5C0F75041CDCCCC5CBF1C55415C8FC2F5BEF750410AD7A370C01C5541CDCCCCBCBAF75041C3F5281CC31C5541A4703D0AB6F7504114AE47A1C51C5541E17A148EB2F7504152B81E15C81C5541D7A3705DADF75041EC51B8AECC1C5541A4703DFAACF750411F85EB81CD1C5541EC51B88EABF750411F85EB41CF1C5541713D0AF7A8F75041D7A370BDD21C554100000010A5F75041D7A3708DD71C554148E17AE4A1F75041713D0AA7DA1C55415C8FC2C59FF750413D0AD783DC1C55418FC2F5889EF750415C8FC255DD1C5541666666469CF75041F6285CCFDE1C55419A99990999F75041B81E858BE01C554112EB416696F75041649A61E7E11C5541527A4BC396F750410F487EFEE21C554101030000000100000006000000EC0D044DF4F750416F75EBAECD1C5541F13C405DF4F7504174A427BFCD1C5541B9FD5365F4F75041E62200AFCD1C5541F13C405DF4F75041711082A9CD1C554169EF4449F4F75041C7DC2F9CCD1C5541EC0D044DF4F750416F75EBAECD1C5541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CC46E662A9F750418C96DAACDE1C5541B299FC69AFF750418E618255DE1C55417C7481CFBBF750419E1AB894DA1C554146B62352C8F75041AC6F6348D71C5541102A8B9AD4F75041BB5DF1DED31C5541CDE12912E4F75041CD48ECE3CF1C5541CB26964FF1F7504174AAA4AFCC1C5541097D64BDEBF75041FBC1F318CA1C5541D977F146E3F75041DCBDE652C61C5541D7D5DDCBE1F75041F8E0D0E1C51C554111C36D7DD4F75041EBBDEAF3C81C55415043BAEEC5F75041D9A02A29CD1C55417C7481CFBBF75041CF455952CF1C55419FE359BCB3F75041C486FDEFD11C5541B5C82E9EAEF75041C3ED1A0DD21C5541E987A284AAF750413F143D31D81C55416B64E6AAA8F75041EADEA63FDE1C5541CD78AB28A9F750418DC89F72DE1C5541CC46E662A9F750418C96DAACDE1C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>973705 - 3557552
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -6137  </desc>
+<a>
+01060000000200000001030000000100000056000000527A4BC396F750410F487EFEE21C5541A689A10597F750413F09A241E31C5541C51F99F197F75041B5E1FE4BE41C5541DBC866D795F750415DDC8F1DE71C55417DB87F5D95F750412F002CA0E71C55418A79BD5795F75041BE1E99B0E71C5541C29C546E95F750418BB8E4C8E71C5541C33877E896F75041FAED686CE91C5541D7A3709D99F7504114AE4771E81C55418FC2F508A1F750410AD7A300E51C554185475530A3F75041C3B1F860E21C5541C7DA5FAFA8F750414E5E473CDE1C5541A2F26DDEA9F75041C7161DAFDA1C554185EB5178AAF75041EC51B82ED91C55417B14AE87AAF75041295C8FF2D71C55415C8FC245ACF75041D7A3700DD51C5541295C8F62B0F75041EC51B8DECE1C5541000000B0BEF7504100000070C71C55418FC2F5F8C4F7504114AE4771C41C5541C3F5285CC7F750419A999929C31C5541C3F5280CCAF75041B81E85FBC11C5541CDCCCCECCDF75041713D0AC7C01C55410AD7A390D2F7504185EB51C8BF1C55411F85EB81D6F750413D0AD7F3BE1C55414C58557DDAF7504137BA504DC01C554135BBA807E3F75041A185E3F3C41C5541F772E3E3E4F750418F916A8BC51C5541B55269EBE6F750416615D3A4C61C554147DEA237EAF7504124F558ACC81C554152B81E45EFF750418FC2F5B8CB1C55419A999929F4F7504185EB5108CE1C5541F2804F1CF4F750416D38CDD4CD1C5541EEA89A47F4F7504174A427BFCD1C5541F13C405DF4F7504169601800CE1C5541EC0D044DF4F750416F75EBAECD1C5541F2804F1CF4F7504174E8367ECD1C554169EF4449F4F75041C7DC2F9CCD1C5541EEA89A47F4F75041787CDC93CD1C5541EAD0E572F4F75041787CDC93CD1C5541B9FD5365F4F75041E62200AFCD1C5541A8B06B7AF6F7504141E48019CF1C554192284DFCF6F75041500045ADCE1C554192284DFCF6F750414C2890D8CE1C55418F509827F7F750414C2890D8CE1C55418B1A6B32F7F75041505EBDCDCE1C554192E43D3DF7F7504145BC35EECE1C5541295C8FF2F6F750419A999959CF1C55411F85EBF100F85041713D0A57CD1C5541F6285CDF06F8504148E17A94CC1C5541333333730DF85041333333E3CB1C5541884976680EF85041C8740B61CB1C55412A7EE3C109F85041FF0C67DBC91C5541A60E6E0906F85041F8A00CF1C91C554144AF354D01F8504119B149EDC81C554153CBF9E000F850411D89FEC1C81C5541CDCCCCCCF8F75041F6285C7FC91C5541B81E859BEEF7504148E17A94C61C554114AE4761ECF750418FC2F5E8C51C5541F6285C1FEAF750415C8FC2D5C41C5541D7A370DDE7F750418FC2F5E8C31C55410AD7A3B0E0F75041A4703D4AC01C554133333373DEF75041F6285C0FBD1C5541F6285C6FDDF75041F6285CCFBC1C554185EB5118D5F75041EC51B8CEBA1C5541D7A3702DD2F750415C8FC255BA1C55419A999979CFF750410AD7A3E0BA1C55418FC2F598CBF75041666666C6BB1C5541B81E852BC6F7504166666616BD1C5541B81E855BC4F75041AE47E1DABD1C554152B81EC5C0F75041CDCCCC5CBF1C55415C8FC2F5BEF750410AD7A370C01C5541CDCCCCBCBAF75041C3F5281CC31C5541A4703D0AB6F7504114AE47A1C51C5541E17A148EB2F7504152B81E15C81C5541D7A3705DADF75041EC51B8AECC1C5541A4703DFAACF750411F85EB81CD1C5541EC51B88EABF750411F85EB41CF1C5541713D0AF7A8F75041D7A370BDD21C554100000010A5F75041D7A3708DD71C554148E17AE4A1F75041713D0AA7DA1C55415C8FC2C59FF750413D0AD783DC1C55418FC2F5889EF750415C8FC255DD1C5541666666469CF75041F6285CCFDE1C55419A99990999F75041B81E858BE01C554112EB416696F75041649A61E7E11C5541527A4BC396F750410F487EFEE21C554101030000000100000006000000EC0D044DF4F750416F75EBAECD1C5541F13C405DF4F7504174A427BFCD1C5541B9FD5365F4F75041E62200AFCD1C5541F13C405DF4F75041711082A9CD1C554169EF4449F4F75041C7DC2F9CCD1C5541EC0D044DF4F750416F75EBAECD1C5541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CC46E662A9F750418C96DAACDE1C5541B299FC69AFF750418E618255DE1C55417C7481CFBBF750419E1AB894DA1C554146B62352C8F75041AC6F6348D71C5541102A8B9AD4F75041BB5DF1DED31C5541CDE12912E4F75041CD48ECE3CF1C5541CB26964FF1F7504174AAA4AFCC1C5541097D64BDEBF75041FBC1F318CA1C5541D977F146E3F75041DCBDE652C61C5541D7D5DDCBE1F75041F8E0D0E1C51C554111C36D7DD4F75041EBBDEAF3C81C55415043BAEEC5F75041D9A02A29CD1C55417C7481CFBBF75041CF455952CF1C55419FE359BCB3F75041C486FDEFD11C5541B5C82E9EAEF75041C3ED1A0DD21C5541E987A284AAF750413F143D31D81C55416B64E6AAA8F75041EADEA63FDE1C5541CD78AB28A9F750418DC89F72DE1C5541CC46E662A9F750418C96DAACDE1C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65942 - 2956552
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4863  </desc>
+<a>
+0106000000010000000103000000010000000A000000D7A3704DCDE65041295C8FF2C76C5441666666C6CDE650413D0AD7A3CB6C544185EB51D8D0E65041CDCCCC7CE16C54417B14AEF7D2E6504148E17A84E56C54418FC2F5C8D6E65041AE47E1DAE66C54415C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C54413A8285B8CDE650413CDA6137CB6C5441A42E40EED2E6504192732D6BCB6C54415C01CEECD2E65041F16AE260CB6C5441C06B7AFDD8E65041013676BACB6C5441748DEBC3E0E65041078F492CCB6C5441436C7DC3E5E650410CE81C9ECA6C5441EBD88129E8E650413387394BBB6C54410AD7A3D0E7E650419A999949BB6C5441B81E851BE8E65041EC51B8EEB86C5441AE47E1FAE1E6504152B81E85BA6C54419A999929D3E650415C8FC275C06C54415C8FC275D1E65041333333F3C06C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65942 - 3812073
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4863  </desc>
+<a>
+0106000000010000000103000000010000000A000000D7A3704DCDE65041295C8FF2C76C5441666666C6CDE650413D0AD7A3CB6C544185EB51D8D0E65041CDCCCC7CE16C54417B14AEF7D2E6504148E17A84E56C54418FC2F5C8D6E65041AE47E1DAE66C54415C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C54413A8285B8CDE650413CDA6137CB6C5441A42E40EED2E6504192732D6BCB6C54415C01CEECD2E65041F16AE260CB6C5441C06B7AFDD8E65041013676BACB6C5441748DEBC3E0E65041078F492CCB6C5441436C7DC3E5E650410CE81C9ECA6C5441EBD88129E8E650413387394BBB6C54410AD7A3D0E7E650419A999949BB6C5441B81E851BE8E65041EC51B8EEB86C5441AE47E1FAE1E6504152B81E85BA6C54419A999929D3E650415C8FC275C06C54415C8FC275D1E65041333333F3C06C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68778 - 245831
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2408  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C4F3EF45041295C8F92320F5541C3F5288C40F450417B14AE37360F554114AE47B137F45041A4703D2A3B0F55418FC2F5C833F450418FC2F5583D0F554152B81EA53BF450415C8FC2D5510F55413D0AD7D334F450419A9999C9540F554152B81E3537F45041B81E859B590F55415C8FC25538F450415C8FC2155B0F5541333333A33AF450419A9999195E0F55418FC2F5783FF45041CDCCCCFC620F5541713D0A173DF45041295C8F92670F5541A4703D7A36F45041CDCCCCFC6B0F55419A99993937F45041D7A3704D6E0F55417B14AE874EF45041A4703DEA660F5541CDCCCC5C4BF450419A999969570F55418FC2F5B846F450415C8FC215450F554114AE477143F450411F85EBE1390F5541F6285CEF3FF4504133333313320F5541F6285C8F3BF45041666666D6290F55417B14AE5739F45041F6285C7F2A0F55411F85EBC139F450417B14AE272B0F5541F6285C4F3EF45041295C8F92320F5541
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5B846F450415C8FC215450F5541559036B843F450412A4E2FD43A0F5541C4F5E28141F4504194AFDBB9350F55415028F8C337F45041BD4D87593B0F55417F333ADC33F45041D96C2E8B3D0F554198A4A5E833F4504158CE8DAB3D0F5541EC7CFAF633F450418CD7E8D03D0F554118FBFF0A34F45041DCB418053E0F5541ECA2552B34F45041F8D860593E0F55410789475D34F45041B7F58FDB3E0F5541A97D974836F450414C1080C4430F55414CEE5C6339F45041C667CEF34B0F5541FAF1B8CF39F450412933400E4D0F55418F5B08203AF450417A6195DF4D0F55410F9194AB3BF4504157DCDEC5510F5541F97B69A33DF45041080E478C580F5541C3409D8642F450413AB1A6E3690F554148B1547B4EF450416BC675B3660F5541F29ABA6D4EF45041EAB03A6B660F5541A5E5C3514DF45041337671FD600F5541F8CC070A4CF4504147646EB95A0F55419AAA42C44AF45041C5C7150F550F55418FC2F5B846F450415C8FC215450F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68778 - 339221
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2408  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C4F3EF45041295C8F92320F5541C3F5288C40F450417B14AE37360F554114AE47B137F45041A4703D2A3B0F55418FC2F5C833F450418FC2F5583D0F554152B81EA53BF450415C8FC2D5510F55413D0AD7D334F450419A9999C9540F554152B81E3537F45041B81E859B590F55415C8FC25538F450415C8FC2155B0F5541333333A33AF450419A9999195E0F55418FC2F5783FF45041CDCCCCFC620F5541713D0A173DF45041295C8F92670F5541A4703D7A36F45041CDCCCCFC6B0F55419A99993937F45041D7A3704D6E0F55417B14AE874EF45041A4703DEA660F5541CDCCCC5C4BF450419A999969570F55418FC2F5B846F450415C8FC215450F554114AE477143F450411F85EBE1390F5541F6285CEF3FF4504133333313320F5541F6285C8F3BF45041666666D6290F55417B14AE5739F45041F6285C7F2A0F55411F85EBC139F450417B14AE272B0F5541F6285C4F3EF45041295C8F92320F5541
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5B846F450415C8FC215450F5541559036B843F450412A4E2FD43A0F5541C4F5E28141F4504194AFDBB9350F55415028F8C337F45041BD4D87593B0F55417F333ADC33F45041D96C2E8B3D0F554198A4A5E833F4504158CE8DAB3D0F5541EC7CFAF633F450418CD7E8D03D0F554118FBFF0A34F45041DCB418053E0F5541ECA2552B34F45041F8D860593E0F55410789475D34F45041B7F58FDB3E0F5541A97D974836F450414C1080C4430F55414CEE5C6339F45041C667CEF34B0F5541FAF1B8CF39F450412933400E4D0F55418F5B08203AF450417A6195DF4D0F55410F9194AB3BF4504157DCDEC5510F5541F97B69A33DF45041080E478C580F5541C3409D8642F450413AB1A6E3690F554148B1547B4EF450416BC675B3660F5541F29ABA6D4EF45041EAB03A6B660F5541A5E5C3514DF45041337671FD600F5541F8CC070A4CF4504147646EB95A0F55419AAA42C44AF45041C5C7150F550F55418FC2F5B846F450415C8FC215450F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>205311 - 1798555
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2157  </desc>
+<a>
+0106000000010000000103000000010000000D0000000AD7A33009B250418FC2F5581566544148E17AC408B25041713D0A970B665441F6285C6F08B25041A4703DEA03665441713D0A57F1B15041000000E00B66544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441E17A149EFCB15041B81E851B1C665441713D0AF702B25041B81E856B19665441CDCCCC4C08B25041F6285CCF166654410AD7A33009B250418FC2F55815665441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C6F08B25041A4703DEA0366544125ADC14201B25041FBF83F630666544122E04B77FBB1504139C9165508665441DBAC4D81F5B1504141827F700A66544167BA8A43F1B150415681A0E70B66544196F11E43EDB15041E03F58780D6654418A21F0C2EAB15041A0CFBEA30A6654418FC2F5E8D4B15041713D0A37136654419A9999E9C8B150419A9999E91766544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441E17A149EFCB15041B81E851B1C665441713D0AF702B25041B81E856B19665441CDCCCC4C08B25041F6285CCF166654410AD7A33009B250418FC2F5581566544148E17AC408B25041713D0A970B665441F6285C6F08B25041A4703DEA03665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>205311 - 3319174
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2157  </desc>
+<a>
+0106000000010000000103000000010000000D0000000AD7A33009B250418FC2F5581566544148E17AC408B25041713D0A970B665441F6285C6F08B25041A4703DEA03665441713D0A57F1B15041000000E00B66544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441E17A149EFCB15041B81E851B1C665441713D0AF702B25041B81E856B19665441CDCCCC4C08B25041F6285CCF166654410AD7A33009B250418FC2F55815665441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C6F08B25041A4703DEA0366544125ADC14201B25041FBF83F630666544122E04B77FBB1504139C9165508665441DBAC4D81F5B1504141827F700A66544167BA8A43F1B150415681A0E70B66544196F11E43EDB15041E03F58780D6654418A21F0C2EAB15041A0CFBEA30A6654418FC2F5E8D4B15041713D0A37136654419A9999E9C8B150419A9999E91766544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441E17A149EFCB15041B81E851B1C665441713D0AF702B25041B81E856B19665441CDCCCC4C08B25041F6285CCF166654410AD7A33009B250418FC2F5581566544148E17AC408B25041713D0A970B665441F6285C6F08B25041A4703DEA03665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>834129 - 3024386
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1030  </desc>
+<a>
+01060000000100000001030000000300000081000000E17A14EE2BCE5041295C8F02F1255441EC51B89E23CE5041295C8FC2EF2554416666667623CE504185EB5118EF2554413333335323CE50415C8FC295EE2554413333338321CE5041CDCCCC7CE72554413D0AD7431CCE5041CDCCCCFCE5255441713D0A3717CE504148E17A14E42554413333333316CE50411F85EBB1E32554413D0AD70313CE504148E17AA4DD25544185EB514812CE5041713D0A97DD2554410AD7A33001CE504114AE47E1DB2554418FC2F52800CE50418FC2F558DE2554418FC2F538FECD504100000010DF25544166666666FACD5041F6285C2FE225544152B81E45F6CD5041B81E85ABE72554417B14AEE7EECD5041A4703D9AEC255441666666B6ECCD50413D0AD783EF25544133333323EBCD50417B14AEE7F2255441EC51B82EEACD5041F6285C9FF42554415C8FC215E9CD50415C8FC245F6255441C3F528ECE1CD504152B81EF5FE2554413D0AD7C3DECD5041CDCCCCFC0126544148E17AE4DCCD50410000008003265441000000E0DBCD5041A4703DCA0426544166666616DACD50410000003007265441A4703DCAD8CD50410AD7A340082654413D0AD763D7CD5041713D0A670B2654410AD7A350D7CD5041295C8F920B2654411F85EB91D2CD50411F85EB310A265441E17A147ED1CD504152B81E750A26544148E17AF4D0CD50419A9999E90A26544114AE4721D0CD5041B81E855B0B265441000000B0CECD50418FC2F5D80B265441C3F5288CCACD5041713D0AB70C265441C3F528BCC2CD50411F85EBC111265441AE47E1AAC4CD5041B81E853B15265441F6285CCFC4CD5041E17A149E192654410AD7A360C7CD50410AD7A300212654417B14AEF7C7CD5041C3F5280C28265441B81E855BC8CD504114AE47912A2654418FC2F548C7CD5041000000002F26544166666636C6CD5041F6285CEF312654410AD7A3A0C5CD50419A9999D93326544114AE47E1C4CD5041666666C6362654411F85EB51C4CD504152B81E453926544133333333C3CD504185EB51583D2654413D0AD7C3C0CD504148E17AA4432654417B14AE77BFCD5041C3F5287C45265441E17A148EBACD5041A4703D2A44265441E17A141EB7CD50410AD7A3B04326544185EB5118B5CD50410AD7A36044265441CDCCCC2CB0CD5041CDCCCCCC472654417B14AEF7AFCD504114AE47F147265441EC51B88EAFCD5041A4703D3A482654413D0AD743AECD50410AD7A320492654415C8FC2B5ADCD50413333338349265441C3F5286CADCD504148E17A2449265441333333F3AACD5041A4703DBA4B265441D7A370CDAACD50413D0AD7334C26544100000090ADCD50418FC2F5084D265441B81E85DBAECD5041E17A14DE4C265441295C8FB2AFCD504152B81E654C265441333333A3B0CD5041D7A370ED4B26544166666646B1CD5041B81E859B4B26544100000080B1CD5041EC51B87E4B26544148E17AC4B1CD5041D7A3705D4B2654413D0AD713B4CD5041713D0AB74A265441A4703D5AB6CD5041D7A3708D4A265441F6285C7FB8CD5041E17A14BE4A2654411F85EB61BACD5041333333434B2654419A999909BBCD50410AD7A3A04B265441E17A143EBFCD504114AE47714D265441A4703D2AC3CD5041666666464F265441F6285CDFC6CD50413D0AD783502654418FC2F5E8C9CD50413D0AD7135126544152B81E95CCCD50417B14AE37512654411F85EB41CFCD50417B14AEE750265441E17A14DED2CD5041CDCCCC2C502654418FC2F518D6CD50410AD7A3604F2654411F85EBD1DACD50419A9999794E26544148E17AA4DECD5041333333D34D265441B81E85DBE1CD504152B81EB54C2654419A999979E5CD5041333333B34A265441713D0AC7E8CD504152B81E554826544148E17A24EBCD5041C3F5288C46265441E17A148EEDCD50410AD7A34045265441295C8F52F0CD504152B81E4544265441295C8FA2F5CD5041EC51B83E43265441E17A144EFBCD504133333393422654419A99995900CE504152B81E1542265441000000C005CE50417B14AE3742265441E17A145E09CE5041A4703DAA4226544148E17AE40CCE504133333383432654419A99999910CE5041C3F528FC44265441E17A14AE13CE5041333333A346265441B81E85FB16CE50417B14AE2748265441E17A149E19CE5041C3F528BC48265441B81E853B1DCE5041333333D348265441E17A14CE20CE504152B81EF548265441B81E851B24CE50410AD7A350492654419A9999C926CE5041A4703D2A4A2654411F85EB0129CE5041EC51B84E4A26544185EB51A82ACE504114AE47114A265441A4703D3A2ECE5041E17A143E492654413D0AD70330CE5041CDCCCC7C482654415C8FC22531CE5041713D0A8747265441A4703D0A32CE5041CDCCCC5C4526544152B81E8532CE5041AE47E1CA41265441D7A370DD32CE5041AE47E14A3D265441E17A143E33CE5041A4703D0A38265441CDCCCC8C33CE5041000000303526544185EB510834CE5041C3F5287C302654413D0AD7E334CE5041666666F6282654418FC2F52835CE504114AE47B1252654416666665635CE5041A4703DDA232654416666669635CE5041A4703D5A222654418FC2F58836CE5041E17A143E1B265441000000F036CE504185EB5128182654417B14AE9737CE5041B81E85DB152654419A99995938CE5041A4703DCA12265441B81E85CB3BCE504100000020082654417B14AEA73DCE50415C8FC2F500265441F6285C5F41CE5041295C8F92F325544185EB51983ACE504152B81E15F3255441EC51B87E39CE50410AD7A3F0F225544152B81EE538CE5041CDCCCCDCF22554413D0AD74334CE50413D0AD743F225544185EB51882CCE5041A4703D1AF1255441E17A14EE2BCE5041295C8F02F12554410C000000333333030FCE5041B81E853B2326544148E17A440DCE5041CDCCCC6C22265441E17A14CE0DCE5041EC51B8EE1E265441EC51B8BE0ECE504114AE4751142654415C8FC205FFCD5041713D0A87152654419A9999D9FFCD50410AD7A3700C265441CDCCCCAC05CE504148E17A640A265441295C8F0211CE5041295C8F7209265441333333B311CE5041713D0AC70A265441F6285C5F12CE50418FC2F5F8122654417B14AE0711CE50410AD7A3701B265441333333030FCE5041B81E853B2326544109000000713D0AF7FFCD504114AE47C1F6255441E17A145E02CE5041B81E853BF925544185EB517803CE50418FC2F52800265441A4703D2A00CE504114AE475100265441333333E3F5CD5041EC51B85E01265441CDCCCCBCF3CD50410AD7A380F8255441000000D0F4CD5041F6285C9FF6255441EC51B8EEFBCD5041CDCCCC7CF6255441713D0AF7FFCD504114AE47C1F6255441
+</a>
+
+<b>
+0106000000010000000103000000010000003900000017B4140182CD5041B3D949F02D265441669B636982CD504184B0229E2E265441AB20C8A888CD5041D9A086193326544134A552B28ACD50416299257237265441FBA52CE88ECD5041F605D9193E265441E3642E3494CD5041C271B28B402654410E7A6AD79CCD50411529F6C344265441B9895CB6A8CD50415DE77A464B26544195D449B3ABCD50413D2953304A2654416DFD33E2ACCD50417FB228B749265441C3F5286CADCD504148E17A24492654415C8FC2B5ADCD50413333338349265441535E9020AFCD504118C5F186482654410298C650B0CD5041BF30C6B347265441EA38C27DB2CD50419A51A04C45265441C218B03EB7CD50410CEE01B8422654411B7413F6B9CD50415BD5502043265441129E147EBDCD50415BD5502043265441CF2ADA64BFCD5041836977AE4026544118A72991C1CD5041FB70D8553C26544148446532C3CD5041670425AE35265441F4F1168EC4CD50411214C1323126544142220CA2C6CD50417A54B2A12D2654418DC2BF32C8CD504199F195AA29265441D54DFDF8C7CD5041E4059F1428265441C7D04AAEC7CD50410849DC9F242654418554BD6DC7CD50413BC90E9D212654410AD7A360C7CD50410AD7A30021265441F6285CCFC4CD5041E17A149E1926544177FBC3B9C4CD50410A7B5079172654411C173606C4CD50417329C03615265441386551A7C2CD5041680690DC13265441413B501FBFCD5041B7EDDE441426544163C997E4BACD50410329375C162654416FC6619AB8CD504101DE42C018265441B3BB0523B8CD5041AC6A2505142654413F2926F9B6CD50418CBBA2DF1026544156CC0ED6ABCD5041C0C3DDBC102654411AA994BF9FCD5041AC79CAF511265441082C6B5D99CD5041B282DF0816265441D7F019E591CD50411A1F4174132654412B43688990CD5041A570B5E20D265441FBA52CE88ECD5041EDDADAE8072654414FF87A8C8DCD504160EB50A307265441E052040E8CCD50414BA13DDC0826544100112C248DCD5041B5DBB41E0C2654413F1967018DCD50419C9AB66A11265441A6B5C86C8ACD5041972FB72E132654416739794088CD50416F0FA5EF172654412D9C3D9F86CD5041F70744481C265441515150A283CD50417A83B93E1A265441D22EB0C17BCD50413472694E16265441C24F9C367BCD5041AD17E0CC17265441F6E3C2C478CD50416142BB8A1F265441CF342B9279CD5041D65ED37B26265441F68283157BCD50416F5CB8B52A26544117B4140182CD5041B3D949F02D265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>834129 - 5294170
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1030  </desc>
+<a>
+01060000000100000001030000000300000081000000E17A14EE2BCE5041295C8F02F1255441EC51B89E23CE5041295C8FC2EF2554416666667623CE504185EB5118EF2554413333335323CE50415C8FC295EE2554413333338321CE5041CDCCCC7CE72554413D0AD7431CCE5041CDCCCCFCE5255441713D0A3717CE504148E17A14E42554413333333316CE50411F85EBB1E32554413D0AD70313CE504148E17AA4DD25544185EB514812CE5041713D0A97DD2554410AD7A33001CE504114AE47E1DB2554418FC2F52800CE50418FC2F558DE2554418FC2F538FECD504100000010DF25544166666666FACD5041F6285C2FE225544152B81E45F6CD5041B81E85ABE72554417B14AEE7EECD5041A4703D9AEC255441666666B6ECCD50413D0AD783EF25544133333323EBCD50417B14AEE7F2255441EC51B82EEACD5041F6285C9FF42554415C8FC215E9CD50415C8FC245F6255441C3F528ECE1CD504152B81EF5FE2554413D0AD7C3DECD5041CDCCCCFC0126544148E17AE4DCCD50410000008003265441000000E0DBCD5041A4703DCA0426544166666616DACD50410000003007265441A4703DCAD8CD50410AD7A340082654413D0AD763D7CD5041713D0A670B2654410AD7A350D7CD5041295C8F920B2654411F85EB91D2CD50411F85EB310A265441E17A147ED1CD504152B81E750A26544148E17AF4D0CD50419A9999E90A26544114AE4721D0CD5041B81E855B0B265441000000B0CECD50418FC2F5D80B265441C3F5288CCACD5041713D0AB70C265441C3F528BCC2CD50411F85EBC111265441AE47E1AAC4CD5041B81E853B15265441F6285CCFC4CD5041E17A149E192654410AD7A360C7CD50410AD7A300212654417B14AEF7C7CD5041C3F5280C28265441B81E855BC8CD504114AE47912A2654418FC2F548C7CD5041000000002F26544166666636C6CD5041F6285CEF312654410AD7A3A0C5CD50419A9999D93326544114AE47E1C4CD5041666666C6362654411F85EB51C4CD504152B81E453926544133333333C3CD504185EB51583D2654413D0AD7C3C0CD504148E17AA4432654417B14AE77BFCD5041C3F5287C45265441E17A148EBACD5041A4703D2A44265441E17A141EB7CD50410AD7A3B04326544185EB5118B5CD50410AD7A36044265441CDCCCC2CB0CD5041CDCCCCCC472654417B14AEF7AFCD504114AE47F147265441EC51B88EAFCD5041A4703D3A482654413D0AD743AECD50410AD7A320492654415C8FC2B5ADCD50413333338349265441C3F5286CADCD504148E17A2449265441333333F3AACD5041A4703DBA4B265441D7A370CDAACD50413D0AD7334C26544100000090ADCD50418FC2F5084D265441B81E85DBAECD5041E17A14DE4C265441295C8FB2AFCD504152B81E654C265441333333A3B0CD5041D7A370ED4B26544166666646B1CD5041B81E859B4B26544100000080B1CD5041EC51B87E4B26544148E17AC4B1CD5041D7A3705D4B2654413D0AD713B4CD5041713D0AB74A265441A4703D5AB6CD5041D7A3708D4A265441F6285C7FB8CD5041E17A14BE4A2654411F85EB61BACD5041333333434B2654419A999909BBCD50410AD7A3A04B265441E17A143EBFCD504114AE47714D265441A4703D2AC3CD5041666666464F265441F6285CDFC6CD50413D0AD783502654418FC2F5E8C9CD50413D0AD7135126544152B81E95CCCD50417B14AE37512654411F85EB41CFCD50417B14AEE750265441E17A14DED2CD5041CDCCCC2C502654418FC2F518D6CD50410AD7A3604F2654411F85EBD1DACD50419A9999794E26544148E17AA4DECD5041333333D34D265441B81E85DBE1CD504152B81EB54C2654419A999979E5CD5041333333B34A265441713D0AC7E8CD504152B81E554826544148E17A24EBCD5041C3F5288C46265441E17A148EEDCD50410AD7A34045265441295C8F52F0CD504152B81E4544265441295C8FA2F5CD5041EC51B83E43265441E17A144EFBCD504133333393422654419A99995900CE504152B81E1542265441000000C005CE50417B14AE3742265441E17A145E09CE5041A4703DAA4226544148E17AE40CCE504133333383432654419A99999910CE5041C3F528FC44265441E17A14AE13CE5041333333A346265441B81E85FB16CE50417B14AE2748265441E17A149E19CE5041C3F528BC48265441B81E853B1DCE5041333333D348265441E17A14CE20CE504152B81EF548265441B81E851B24CE50410AD7A350492654419A9999C926CE5041A4703D2A4A2654411F85EB0129CE5041EC51B84E4A26544185EB51A82ACE504114AE47114A265441A4703D3A2ECE5041E17A143E492654413D0AD70330CE5041CDCCCC7C482654415C8FC22531CE5041713D0A8747265441A4703D0A32CE5041CDCCCC5C4526544152B81E8532CE5041AE47E1CA41265441D7A370DD32CE5041AE47E14A3D265441E17A143E33CE5041A4703D0A38265441CDCCCC8C33CE5041000000303526544185EB510834CE5041C3F5287C302654413D0AD7E334CE5041666666F6282654418FC2F52835CE504114AE47B1252654416666665635CE5041A4703DDA232654416666669635CE5041A4703D5A222654418FC2F58836CE5041E17A143E1B265441000000F036CE504185EB5128182654417B14AE9737CE5041B81E85DB152654419A99995938CE5041A4703DCA12265441B81E85CB3BCE504100000020082654417B14AEA73DCE50415C8FC2F500265441F6285C5F41CE5041295C8F92F325544185EB51983ACE504152B81E15F3255441EC51B87E39CE50410AD7A3F0F225544152B81EE538CE5041CDCCCCDCF22554413D0AD74334CE50413D0AD743F225544185EB51882CCE5041A4703D1AF1255441E17A14EE2BCE5041295C8F02F12554410C000000333333030FCE5041B81E853B2326544148E17A440DCE5041CDCCCC6C22265441E17A14CE0DCE5041EC51B8EE1E265441EC51B8BE0ECE504114AE4751142654415C8FC205FFCD5041713D0A87152654419A9999D9FFCD50410AD7A3700C265441CDCCCCAC05CE504148E17A640A265441295C8F0211CE5041295C8F7209265441333333B311CE5041713D0AC70A265441F6285C5F12CE50418FC2F5F8122654417B14AE0711CE50410AD7A3701B265441333333030FCE5041B81E853B2326544109000000713D0AF7FFCD504114AE47C1F6255441E17A145E02CE5041B81E853BF925544185EB517803CE50418FC2F52800265441A4703D2A00CE504114AE475100265441333333E3F5CD5041EC51B85E01265441CDCCCCBCF3CD50410AD7A380F8255441000000D0F4CD5041F6285C9FF6255441EC51B8EEFBCD5041CDCCCC7CF6255441713D0AF7FFCD504114AE47C1F6255441
+</a>
+
+<b>
+0106000000010000000103000000010000003900000017B4140182CD5041B3D949F02D265441669B636982CD504184B0229E2E265441AB20C8A888CD5041D9A086193326544134A552B28ACD50416299257237265441FBA52CE88ECD5041F605D9193E265441E3642E3494CD5041C271B28B402654410E7A6AD79CCD50411529F6C344265441B9895CB6A8CD50415DE77A464B26544195D449B3ABCD50413D2953304A2654416DFD33E2ACCD50417FB228B749265441C3F5286CADCD504148E17A24492654415C8FC2B5ADCD50413333338349265441535E9020AFCD504118C5F186482654410298C650B0CD5041BF30C6B347265441EA38C27DB2CD50419A51A04C45265441C218B03EB7CD50410CEE01B8422654411B7413F6B9CD50415BD5502043265441129E147EBDCD50415BD5502043265441CF2ADA64BFCD5041836977AE4026544118A72991C1CD5041FB70D8553C26544148446532C3CD5041670425AE35265441F4F1168EC4CD50411214C1323126544142220CA2C6CD50417A54B2A12D2654418DC2BF32C8CD504199F195AA29265441D54DFDF8C7CD5041E4059F1428265441C7D04AAEC7CD50410849DC9F242654418554BD6DC7CD50413BC90E9D212654410AD7A360C7CD50410AD7A30021265441F6285CCFC4CD5041E17A149E1926544177FBC3B9C4CD50410A7B5079172654411C173606C4CD50417329C03615265441386551A7C2CD5041680690DC13265441413B501FBFCD5041B7EDDE441426544163C997E4BACD50410329375C162654416FC6619AB8CD504101DE42C018265441B3BB0523B8CD5041AC6A2505142654413F2926F9B6CD50418CBBA2DF1026544156CC0ED6ABCD5041C0C3DDBC102654411AA994BF9FCD5041AC79CAF511265441082C6B5D99CD5041B282DF0816265441D7F019E591CD50411A1F4174132654412B43688990CD5041A570B5E20D265441FBA52CE88ECD5041EDDADAE8072654414FF87A8C8DCD504160EB50A307265441E052040E8CCD50414BA13DDC0826544100112C248DCD5041B5DBB41E0C2654413F1967018DCD50419C9AB66A11265441A6B5C86C8ACD5041972FB72E132654416739794088CD50416F0FA5EF172654412D9C3D9F86CD5041F70744481C265441515150A283CD50417A83B93E1A265441D22EB0C17BCD50413472694E16265441C24F9C367BCD5041AD17E0CC17265441F6E3C2C478CD50416142BB8A1F265441CF342B9279CD5041D65ED37B26265441F68283157BCD50416F5CB8B52A26544117B4140182CD5041B3D949F02D265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>210956 - 194240
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7101  </desc>
+<a>
+01060000000100000001030000000100000053000000CDCCCCBC67B85041C3F5284CD4585441713D0A2767B850410AD7A340D35854418FC2F5C865B85041A4703DCAD1585441295C8F4265B85041E17A14CED058544148E17A0465B85041EC51B82ED05854418FC2F5C864B85041295C8F32CE5854418FC2F56865B850417B14AE67CC5854413333332367B850418FC2F5F8CB585441C3F528EC68B85041D7A370EDCB5854413D0AD7036AB850411F85EB41CC5854413D0AD7736AB8504114AE4781CB585441AE47E1AA6AB85041D7A3701DC958544185EB51786AB85041EC51B85EC55854413D0AD7336AB8504100000020C5585441CDCCCC2C6AB8504152B81E55C0585441B81E85CB6AB850410AD7A380BC585441E17A141E6CB85041713D0A57B8585441295C8F126CB85041F6285CFFB658544185EB51386BB850418FC2F5F8B65854411F85EB4169B85041A4703D8AB6585441D7A3708D67B850415C8FC295B6585441333333E366B850417B14AEF7B658544148E17AC465B850417B14AE87B75854413D0AD79365B8504114AE4701B85854419A9999F964B8504100000060B8585441D7A370ED63B85041CDCCCC6CB85854415C8FC20563B85041D7A370DDB858544185EB51C861B85041666666F6B9585441B81E85FB60B850410AD7A320BC585441F6285CFF5FB85041CDCCCCACBD585441B81E85BB5EB85041F6285C4FBE585441F6285CBF5DB85041AE47E12ABE585441713D0AC75BB85041AE47E19ABD5854410AD7A37059B85041D7A370BDBC5854415C8FC29558B85041A4703DEABC5854413D0AD73357B85041295C8FE2BD58544152B81EE556B8504152B81E95BE5854411F85EB0157B8504185EB5188BF5854410000000057B8504152B81E55C05854411F85EB2156B850415C8FC275C1585441D7A3700D55B85041EC51B84EC2585441B81E85BB52B85041B81E852BC35854419A99993951B8504114AE4781C35854411F85EB914FB850410AD7A390C45854411F85EB714EB85041AE47E11AC6585441B81E85EB4DB85041E17A14AEC65854413D0AD7334EB850411F85EB61C75854415C8FC2D54EB850413D0AD703C8585441C3F5282C50B8504114AE47C1C85854418FC2F59851B8504148E17A64C8585441E17A14CE52B85041295C8FB2C8585441B81E850B54B8504166666686C9585441A4703DFA53B85041AE47E10ACB5854419A99994953B85041AE47E15ACC58544114AE47A151B8504148E17A14CE585441A4703D2A50B8504133333313CF585441295C8F424FB85041A4703D5ACF5854411F85EBA14EB850418FC2F5C8CF585441EC51B88E4DB850415C8FC2C5D0585441000000F04CB850413D0AD703D2585441000000004DB85041333333E3D3585441000000E04DB85041AE47E11AD558544185EB512851B850419A9999E9D45854418FC2F57854B85041A4703DEAD5585441000000405AB85041CDCCCC9CD9585441713D0A075FB8504148E17A14DD5854418FC2F54861B850419A999999DB5854413333330362B8504114AE47B1DA585441295C8FF262B850413D0AD753DA5854419A99997963B850415C8FC225DA585441A4703D1A64B85041666666A6DA5854418FC2F5F864B8504148E17A24DB585441F6285CAF65B850415C8FC255DB58544114AE47B166B8504185EB5138DB585441000000E069B8504166666606DB5854410AD7A3D069B8504148E17A34DA5854410AD7A35069B85041295C8F42D95854418FC2F54868B8504148E17AA4D85854418FC2F5A867B850413D0AD743D8585441AE47E12A68B85041AE47E10AD7585441B81E853B68B850419A999939D6585441CDCCCC2C68B850417B14AE77D5585441CDCCCCBC67B85041C3F5284CD4585441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000530AD7336AB8504136000020C558544194F056306AB85041F62AFABDC2585441DBB755306AB85041DD4725BDC2585441B7CCCC2C6AB850413CB81E55C058544190EB51E855B850417847E11AD65854412D95B68C55B85041EC9FB79AD6585441000000405AB85041CDCCCC9CD9585441713D0A075FB8504148E17A14DD585441A474195B5FB850410767D283DD585441F0C2F54861B850418F999999DB5854417E33330362B85041F4AD47B1DA5854413E5C8FF262B850411D0AD753DA5854419A99997963B85041118FC225DA585441DA703D1A64B850417C6666A6DA585441C5C2F5F864B8504148E17A24DB585441F6285CAF65B85041928FC255DB585441EAAD47B166B850415AEB5138DB585441AAFFFFDF69B8504171666606DB5854412AD7A3D069B85041F2E07A34DA585441EAD6A35069B850411E5C8F42D95854419AC2F54868B85041FDE07AA4D85854418FC2F5A867B85041680AD743D8585441B947E12A68B850415847E10AD75854418D1E853B68B8504184999939D65854412DCDCC2C68B850413014AE77D558544197CCCCBC67B85041B8F5284CD45854415B3D0A2767B850410AD7A340D35854414FC2F5C865B85041EF703DCAD15854417FA35D958BB85041C05C2806DF5854410E6FAD9B8CB85041AD4C034BDF585441CDCCCC9C8CB8504148E17A44DF58544114AE47018DB85041295C8FD2DB58544151A2C6148DB85041FEB51F08DA5854418BE28D3A8DB85041F4A7FCDAD9585441666666768DB85041D7A370CDD75854413D0AD79386B850411F85EB51D35854417E3AA7FE85B85041FFF0CFF0D25854410AD7A3007DB8504166666616CD58544185EB51B876B85041F6285CFFC858544185EB51786AB85041EC51B85EC5585441530AD7336AB8504136000020C5585441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>210956 - 289907
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7101  </desc>
+<a>
+01060000000100000001030000000100000053000000CDCCCCBC67B85041C3F5284CD4585441713D0A2767B850410AD7A340D35854418FC2F5C865B85041A4703DCAD1585441295C8F4265B85041E17A14CED058544148E17A0465B85041EC51B82ED05854418FC2F5C864B85041295C8F32CE5854418FC2F56865B850417B14AE67CC5854413333332367B850418FC2F5F8CB585441C3F528EC68B85041D7A370EDCB5854413D0AD7036AB850411F85EB41CC5854413D0AD7736AB8504114AE4781CB585441AE47E1AA6AB85041D7A3701DC958544185EB51786AB85041EC51B85EC55854413D0AD7336AB8504100000020C5585441CDCCCC2C6AB8504152B81E55C0585441B81E85CB6AB850410AD7A380BC585441E17A141E6CB85041713D0A57B8585441295C8F126CB85041F6285CFFB658544185EB51386BB850418FC2F5F8B65854411F85EB4169B85041A4703D8AB6585441D7A3708D67B850415C8FC295B6585441333333E366B850417B14AEF7B658544148E17AC465B850417B14AE87B75854413D0AD79365B8504114AE4701B85854419A9999F964B8504100000060B8585441D7A370ED63B85041CDCCCC6CB85854415C8FC20563B85041D7A370DDB858544185EB51C861B85041666666F6B9585441B81E85FB60B850410AD7A320BC585441F6285CFF5FB85041CDCCCCACBD585441B81E85BB5EB85041F6285C4FBE585441F6285CBF5DB85041AE47E12ABE585441713D0AC75BB85041AE47E19ABD5854410AD7A37059B85041D7A370BDBC5854415C8FC29558B85041A4703DEABC5854413D0AD73357B85041295C8FE2BD58544152B81EE556B8504152B81E95BE5854411F85EB0157B8504185EB5188BF5854410000000057B8504152B81E55C05854411F85EB2156B850415C8FC275C1585441D7A3700D55B85041EC51B84EC2585441B81E85BB52B85041B81E852BC35854419A99993951B8504114AE4781C35854411F85EB914FB850410AD7A390C45854411F85EB714EB85041AE47E11AC6585441B81E85EB4DB85041E17A14AEC65854413D0AD7334EB850411F85EB61C75854415C8FC2D54EB850413D0AD703C8585441C3F5282C50B8504114AE47C1C85854418FC2F59851B8504148E17A64C8585441E17A14CE52B85041295C8FB2C8585441B81E850B54B8504166666686C9585441A4703DFA53B85041AE47E10ACB5854419A99994953B85041AE47E15ACC58544114AE47A151B8504148E17A14CE585441A4703D2A50B8504133333313CF585441295C8F424FB85041A4703D5ACF5854411F85EBA14EB850418FC2F5C8CF585441EC51B88E4DB850415C8FC2C5D0585441000000F04CB850413D0AD703D2585441000000004DB85041333333E3D3585441000000E04DB85041AE47E11AD558544185EB512851B850419A9999E9D45854418FC2F57854B85041A4703DEAD5585441000000405AB85041CDCCCC9CD9585441713D0A075FB8504148E17A14DD5854418FC2F54861B850419A999999DB5854413333330362B8504114AE47B1DA585441295C8FF262B850413D0AD753DA5854419A99997963B850415C8FC225DA585441A4703D1A64B85041666666A6DA5854418FC2F5F864B8504148E17A24DB585441F6285CAF65B850415C8FC255DB58544114AE47B166B8504185EB5138DB585441000000E069B8504166666606DB5854410AD7A3D069B8504148E17A34DA5854410AD7A35069B85041295C8F42D95854418FC2F54868B8504148E17AA4D85854418FC2F5A867B850413D0AD743D8585441AE47E12A68B85041AE47E10AD7585441B81E853B68B850419A999939D6585441CDCCCC2C68B850417B14AE77D5585441CDCCCCBC67B85041C3F5284CD4585441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000530AD7336AB8504136000020C558544194F056306AB85041F62AFABDC2585441DBB755306AB85041DD4725BDC2585441B7CCCC2C6AB850413CB81E55C058544190EB51E855B850417847E11AD65854412D95B68C55B85041EC9FB79AD6585441000000405AB85041CDCCCC9CD9585441713D0A075FB8504148E17A14DD585441A474195B5FB850410767D283DD585441F0C2F54861B850418F999999DB5854417E33330362B85041F4AD47B1DA5854413E5C8FF262B850411D0AD753DA5854419A99997963B85041118FC225DA585441DA703D1A64B850417C6666A6DA585441C5C2F5F864B8504148E17A24DB585441F6285CAF65B85041928FC255DB585441EAAD47B166B850415AEB5138DB585441AAFFFFDF69B8504171666606DB5854412AD7A3D069B85041F2E07A34DA585441EAD6A35069B850411E5C8F42D95854419AC2F54868B85041FDE07AA4D85854418FC2F5A867B85041680AD743D8585441B947E12A68B850415847E10AD75854418D1E853B68B8504184999939D65854412DCDCC2C68B850413014AE77D558544197CCCCBC67B85041B8F5284CD45854415B3D0A2767B850410AD7A340D35854414FC2F5C865B85041EF703DCAD15854417FA35D958BB85041C05C2806DF5854410E6FAD9B8CB85041AD4C034BDF585441CDCCCC9C8CB8504148E17A44DF58544114AE47018DB85041295C8FD2DB58544151A2C6148DB85041FEB51F08DA5854418BE28D3A8DB85041F4A7FCDAD9585441666666768DB85041D7A370CDD75854413D0AD79386B850411F85EB51D35854417E3AA7FE85B85041FFF0CFF0D25854410AD7A3007DB8504166666616CD58544185EB51B876B85041F6285CFFC858544185EB51786AB85041EC51B85EC5585441530AD7336AB8504136000020C5585441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101354 - 3127448
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2323  </desc>
+<a>
+0106000000030000000103000000010000001800000066666626D19250417B14AEA778245441E17A14EEC5925041295C8F427E245441E17A14CEB8925041295C8F9283245441E17A145EC1925041295C8FE296245441E17A145EC6925041295C8FE2A4245441E17A142ED0925041295C8FD2C4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA2245441666666B6E8925041295C8F12A02454417B14AED7F19250410AD7A3E09E245441CDCCCC4CEB9250415C8FC22593245441EC51B88EE59250413D0AD7B3922454410AD7A3D0E39250413D0AD7F39124544133333393E1925041A4703D7A90245441E17A14DEDD925041B81E85AB8A245441A4703D1AD992504185EB51A880245441A4703DCAD69250417B14AEE77C24544185EB5108D3925041E17A143E7924544166666626D19250417B14AEA77824544101030000000100000015000000E17A145E079350415C8FC2D5BE245441E17A140E0F935041295C8F02CA245441E17A14FE12935041295C8F32CC245441E17A145E18935041295C8F92C8245441E17A148E1A935041295C8FD2C2245441E17A14FE18935041295C8FA2BB245441E17A14DE1A935041295C8F52AE2454411F85EB711C935041295C8FC2A9245441E17A14BE1D935041295C8F02A6245441E17A14BE1C935041295C8F129D245441D7A370CD15935041C3F528AC91245441F6285CAF0E935041EC51B8AE91245441713D0A57059350415C8FC2E59024544185EB5178F792504148E17AE492245441E17A144EF0925041295C8F1293245441E17A145EED925041295C8F9293245441E17A145EF2925041295C8FB29C245441E17A147EF5925041295C8F92A12454419A9999F9F99250415C8FC225A7245441D7A3709DFB925041A4703D0AAA245441E17A145E079350415C8FC2D5BE24544101030000000100000010000000E17A14BECC92504148E17A24762454419A9999A9D39250410AD7A39078245441B81E856BD7925041A4703D3A7C2454411F85EBD1D7925041AE47E1DA7C24544133333363E0925041CDCCCC0C79245441000000B0EA92504152B81E25762454415C8FC245EC9250417B14AE077B24544114AE472102935041666666C672245441295C8FF2FE92504114AE47B16B245441A4703DFAFB925041713D0A77662454417B14AE47F69250418FC2F5085C245441F6285CDFEE925041F6285C0F602454418FC2F5E8E79250418FC2F54863245441E17A144EDF925041295C8F326B245441E17A14FECE925041295C8FD274245441E17A14BECC92504148E17A2476245441
+</a>
+
+<b>
+01060000000100000001030000000100000063000000E17A145EC6925041295C8FE2A424544158ED2939D092504177CAB6CFC4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA224544121D3088EED9250413D1D1D099F2454419B3FA1BEF592504177D9AFEFAC245441D7A3709DFB925041A4703D0AAA2454415C77E372FE925041E140CC2AAE2454414DCC4F940093504198F2790AB22454413E21BCB502935041382892B8B52454415B6E533A05935041893E56F3BA245441B093745107935041BC1F792DBE24544116C864CC1993504158E758B4B52454410246CF4E1A935041F070C86FB42454410E87367C1A9350416BA5587CB22454413F8BD3311B93504182668C0EAF24544173FA92F61B935041A9D349DDAB245441A39865781C93504115138919AA2454412532398B1C935041D3EA64C1A924544133F7F5711C935041F9E08EC2A9245441B76964B31C9350410E795505A9245441622D351C15935041839194829D245441ABD39C720D93504149A48A7E91245441000000100B9350413D0AD72391245441A3C2861D08935041D3C7D60391245441713D0A57059350415C8FC2E5902454416B14EF7A03935041AEE30D2491245441240F36CAFF925041BDAFA99F9124544181A79CBBF5925041E3640C0D93245441550224BDEE925041E03290FE92245441898ABE7FEA925041E3640C0D93245441FFD03B03E7925041CDE876DB92245441DA3BAF83E392504189B33ED391245441A356E968E19250415CD6F8939024544183422944DF925041CE71E14D8D2454417FFB2616DE925041964A5A038B245441AE47E15ADD9250417B14AE3789245441194B5254DC925041EDC62A2787245441D92FC193DB92504108FA8AA3852454415935E76DDA9250414D140A548324544147E28895D9925041270981A081245441BCDE016CD89250412496978D7F24544137E42605D7925041C4CA46477D245441886900EDD7925041A39E3E057D2454411F85EBD1D7925041AE47E1DA7C24544133333363E0925041CDCCCC0C79245441000000B0EA92504152B81E2576245441223FF22C00935041B374EE6C6E245441295C8FF2FE92504114AE47B16B245441A4703DFAFB925041713D0A776624544180E5A3E7FA9250413BA0598064245441EDCD7F01D192504154FAFFE6752454412BCDF9BDCE9250410936AED7762454413AF4EAC8D0925041F7C85F8A7824544166666626D19250417B14AEA778245441E17A14EEC5925041295C8F427E245441E17A14CEB8925041295C8F928324544163C23BB8B1925041D764F2F484245441713D0A97B39250416666669687245441C3F234F0B59250414323DEA18B24544181AA7CDBB8925041E56101A99024544133660473BB9250418ECD6E9D9724544179AC734DB39250410729497F9B245441B81E854BB4925041713D0A379D24544195F21D0CBB925041952F063AA924544150E24490C1925041846B65D6B4245441EDBFEE2AC5925041ABAC7D83BB245441F1BE4F67C8925041D90CE21AC2245441427B1113C9925041BA4AD408C42454417F791DABC9925041A647E912C52454414222D54FCA9250417345F8D0C5245441666666F6CA925041AE47E14AC62454418D27B865CC925041EF491277C6245441587745E6CE925041062BAD22C6245441C0ED640DCD9250419A10EBE1C1245441B11B93AECC9250414C4F5A1EC1245441C588CA1FCB92504184C78ED4BD245441CB8B84CEC9925041769E1FFDB9245441BE435941C99250411C438293B7245441702A9004C99250414DED5612B7245441983ACF81C89250410E55D72EB524544144C1B859C892504131A387C4B4245441CB8B23F1C6925041C58FD0C0B124544129552884C6925041B60E127AB0245441F0327CB6C5925041493B0209AE245441B1361012C59250417E403FCAAC2454415AF25705C4925041F133C716AB2454413CFD2EA9C29250415932501EA824544171D88272C0925041D2BB293EA42454417ED87DF5BF925041329C0073A3245441067470C1BD9250410CE847D19F245441E03159B5BF92504135B50D8A9D245441BCEE0A27C3925041203A0EE29B245441E17A145EC6925041295C8FE2A4245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101354 - 3514388
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2323  </desc>
+<a>
+0106000000030000000103000000010000001800000066666626D19250417B14AEA778245441E17A14EEC5925041295C8F427E245441E17A14CEB8925041295C8F9283245441E17A145EC1925041295C8FE296245441E17A145EC6925041295C8FE2A4245441E17A142ED0925041295C8FD2C4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA2245441666666B6E8925041295C8F12A02454417B14AED7F19250410AD7A3E09E245441CDCCCC4CEB9250415C8FC22593245441EC51B88EE59250413D0AD7B3922454410AD7A3D0E39250413D0AD7F39124544133333393E1925041A4703D7A90245441E17A14DEDD925041B81E85AB8A245441A4703D1AD992504185EB51A880245441A4703DCAD69250417B14AEE77C24544185EB5108D3925041E17A143E7924544166666626D19250417B14AEA77824544101030000000100000015000000E17A145E079350415C8FC2D5BE245441E17A140E0F935041295C8F02CA245441E17A14FE12935041295C8F32CC245441E17A145E18935041295C8F92C8245441E17A148E1A935041295C8FD2C2245441E17A14FE18935041295C8FA2BB245441E17A14DE1A935041295C8F52AE2454411F85EB711C935041295C8FC2A9245441E17A14BE1D935041295C8F02A6245441E17A14BE1C935041295C8F129D245441D7A370CD15935041C3F528AC91245441F6285CAF0E935041EC51B8AE91245441713D0A57059350415C8FC2E59024544185EB5178F792504148E17AE492245441E17A144EF0925041295C8F1293245441E17A145EED925041295C8F9293245441E17A145EF2925041295C8FB29C245441E17A147EF5925041295C8F92A12454419A9999F9F99250415C8FC225A7245441D7A3709DFB925041A4703D0AAA245441E17A145E079350415C8FC2D5BE24544101030000000100000010000000E17A14BECC92504148E17A24762454419A9999A9D39250410AD7A39078245441B81E856BD7925041A4703D3A7C2454411F85EBD1D7925041AE47E1DA7C24544133333363E0925041CDCCCC0C79245441000000B0EA92504152B81E25762454415C8FC245EC9250417B14AE077B24544114AE472102935041666666C672245441295C8FF2FE92504114AE47B16B245441A4703DFAFB925041713D0A77662454417B14AE47F69250418FC2F5085C245441F6285CDFEE925041F6285C0F602454418FC2F5E8E79250418FC2F54863245441E17A144EDF925041295C8F326B245441E17A14FECE925041295C8FD274245441E17A14BECC92504148E17A2476245441
+</a>
+
+<b>
+01060000000100000001030000000100000063000000E17A145EC6925041295C8FE2A424544158ED2939D092504177CAB6CFC4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA224544121D3088EED9250413D1D1D099F2454419B3FA1BEF592504177D9AFEFAC245441D7A3709DFB925041A4703D0AAA2454415C77E372FE925041E140CC2AAE2454414DCC4F940093504198F2790AB22454413E21BCB502935041382892B8B52454415B6E533A05935041893E56F3BA245441B093745107935041BC1F792DBE24544116C864CC1993504158E758B4B52454410246CF4E1A935041F070C86FB42454410E87367C1A9350416BA5587CB22454413F8BD3311B93504182668C0EAF24544173FA92F61B935041A9D349DDAB245441A39865781C93504115138919AA2454412532398B1C935041D3EA64C1A924544133F7F5711C935041F9E08EC2A9245441B76964B31C9350410E795505A9245441622D351C15935041839194829D245441ABD39C720D93504149A48A7E91245441000000100B9350413D0AD72391245441A3C2861D08935041D3C7D60391245441713D0A57059350415C8FC2E5902454416B14EF7A03935041AEE30D2491245441240F36CAFF925041BDAFA99F9124544181A79CBBF5925041E3640C0D93245441550224BDEE925041E03290FE92245441898ABE7FEA925041E3640C0D93245441FFD03B03E7925041CDE876DB92245441DA3BAF83E392504189B33ED391245441A356E968E19250415CD6F8939024544183422944DF925041CE71E14D8D2454417FFB2616DE925041964A5A038B245441AE47E15ADD9250417B14AE3789245441194B5254DC925041EDC62A2787245441D92FC193DB92504108FA8AA3852454415935E76DDA9250414D140A548324544147E28895D9925041270981A081245441BCDE016CD89250412496978D7F24544137E42605D7925041C4CA46477D245441886900EDD7925041A39E3E057D2454411F85EBD1D7925041AE47E1DA7C24544133333363E0925041CDCCCC0C79245441000000B0EA92504152B81E2576245441223FF22C00935041B374EE6C6E245441295C8FF2FE92504114AE47B16B245441A4703DFAFB925041713D0A776624544180E5A3E7FA9250413BA0598064245441EDCD7F01D192504154FAFFE6752454412BCDF9BDCE9250410936AED7762454413AF4EAC8D0925041F7C85F8A7824544166666626D19250417B14AEA778245441E17A14EEC5925041295C8F427E245441E17A14CEB8925041295C8F928324544163C23BB8B1925041D764F2F484245441713D0A97B39250416666669687245441C3F234F0B59250414323DEA18B24544181AA7CDBB8925041E56101A99024544133660473BB9250418ECD6E9D9724544179AC734DB39250410729497F9B245441B81E854BB4925041713D0A379D24544195F21D0CBB925041952F063AA924544150E24490C1925041846B65D6B4245441EDBFEE2AC5925041ABAC7D83BB245441F1BE4F67C8925041D90CE21AC2245441427B1113C9925041BA4AD408C42454417F791DABC9925041A647E912C52454414222D54FCA9250417345F8D0C5245441666666F6CA925041AE47E14AC62454418D27B865CC925041EF491277C6245441587745E6CE925041062BAD22C6245441C0ED640DCD9250419A10EBE1C1245441B11B93AECC9250414C4F5A1EC1245441C588CA1FCB92504184C78ED4BD245441CB8B84CEC9925041769E1FFDB9245441BE435941C99250411C438293B7245441702A9004C99250414DED5612B7245441983ACF81C89250410E55D72EB524544144C1B859C892504131A387C4B4245441CB8B23F1C6925041C58FD0C0B124544129552884C6925041B60E127AB0245441F0327CB6C5925041493B0209AE245441B1361012C59250417E403FCAAC2454415AF25705C4925041F133C716AB2454413CFD2EA9C29250415932501EA824544171D88272C0925041D2BB293EA42454417ED87DF5BF925041329C0073A3245441067470C1BD9250410CE847D19F245441E03159B5BF92504135B50D8A9D245441BCEE0A27C3925041203A0EE29B245441E17A145EC6925041295C8FE2A4245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149738 - 1770076
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1860  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47D1DED0504100000000AF6454419A999969E1D05041C3F528FCB364544185EB5168E5D050415C8FC2B5BB6454417B14AEE730D1504114AE47319964544185EB51A82AD15041000000808C64544114AE47D1DED0504100000000AF645441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000B81E85AB19D1504114AE4721856454415C2729181FD1504193FA50C282645441D7837BE81ED150415A1ECFDB7E6454414B29811728D150419A0B8B7C7B645441AD1FC3B529D150417A82791E7E64544114AE470136D15041EC51B8BE786454415C8FC2C532D1504114AE474172645441B9AD421F23D15041E34F811879645441B134E44823D15041346208697A645441C5F1D7D2FBD05041B80391B38B645441CD31999AFAD0504151291E918D645441DAB11B2AF8D050412B0B77008F6454412C2E2B13F4D05041A2434D5C8F64544161C9BF0DF2D050414194178B8E64544114AE4701D4D05041D7A370AD9B645441E17A14BED7D05041295C8FF2A16454418FC2F568DBD0504133333373A864544114AE47D1DED0504100000000AF645441FB076E25FAD05041D3806A91A2645441F35E11E4FAD0504132346827A16454415BE674A100D150417E70B6489E645441914BAFCA14D15041A0E16C3E95645441D6615C9223D1504120BCE47F8E6454419C8371AA28D15041E33009FD8B645441820BB57929D15041C7FBA8098D645441295C8FE234D150418FC2F5D8876454415C8FC27532D150413333338382645441B81E853B28D150419A999929876454415C8FC2051DD150411F85EB418C6454412461A42D18D150414694A5758E645441AFF8A48417D1504108EDCF6F9064544133B1FD6F15D15041F55D7C2791645441C3B8E8DB13D15041E3FF18EE8E645441614056D70FD15041C93004DE906454412089E2230FD15041CD606C91926454413644CE9C0CD1504133E957AA93645441FFC7C3D20BD1504183038775956454410D79367106D150410B9AC00A986454412FDB1BAEFBD05041A38E5DD99C645441364CCD84F7D05041CC0EE58795645441066D5CB3FAD05041C2CBBFAA926454414626314A04D15041805696DA8D645441B81E85AB19D1504114AE472185645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149738 - 3804501
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1860  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47D1DED0504100000000AF6454419A999969E1D05041C3F528FCB364544185EB5168E5D050415C8FC2B5BB6454417B14AEE730D1504114AE47319964544185EB51A82AD15041000000808C64544114AE47D1DED0504100000000AF645441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000B81E85AB19D1504114AE4721856454415C2729181FD1504193FA50C282645441D7837BE81ED150415A1ECFDB7E6454414B29811728D150419A0B8B7C7B645441AD1FC3B529D150417A82791E7E64544114AE470136D15041EC51B8BE786454415C8FC2C532D1504114AE474172645441B9AD421F23D15041E34F811879645441B134E44823D15041346208697A645441C5F1D7D2FBD05041B80391B38B645441CD31999AFAD0504151291E918D645441DAB11B2AF8D050412B0B77008F6454412C2E2B13F4D05041A2434D5C8F64544161C9BF0DF2D050414194178B8E64544114AE4701D4D05041D7A370AD9B645441E17A14BED7D05041295C8FF2A16454418FC2F568DBD0504133333373A864544114AE47D1DED0504100000000AF645441FB076E25FAD05041D3806A91A2645441F35E11E4FAD0504132346827A16454415BE674A100D150417E70B6489E645441914BAFCA14D15041A0E16C3E95645441D6615C9223D1504120BCE47F8E6454419C8371AA28D15041E33009FD8B645441820BB57929D15041C7FBA8098D645441295C8FE234D150418FC2F5D8876454415C8FC27532D150413333338382645441B81E853B28D150419A999929876454415C8FC2051DD150411F85EB418C6454412461A42D18D150414694A5758E645441AFF8A48417D1504108EDCF6F9064544133B1FD6F15D15041F55D7C2791645441C3B8E8DB13D15041E3FF18EE8E645441614056D70FD15041C93004DE906454412089E2230FD15041CD606C91926454413644CE9C0CD1504133E957AA93645441FFC7C3D20BD1504183038775956454410D79367106D150410B9AC00A986454412FDB1BAEFBD05041A38E5DD99C645441364CCD84F7D05041CC0EE58795645441066D5CB3FAD05041C2CBBFAA926454414626314A04D15041805696DA8D645441B81E85AB19D1504114AE472185645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>169186 - 184988
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1746  </desc>
+<a>
+0106000000010000000103000000010000000D000000E17A146E93C3504114AE4771BC955441666666B692C350415C8FC295BC95544114AE479184C350419A999939BE9554419A9999097DC35041295C8F82BE95544152B81E8574C3504185EB5148BE955441CDCCCCAC78C35041713D0AE7C5955441713D0AD77BC35041D7A3705DCC955441B81E853B80C35041A4703D9AD2955441AE47E19A85C350413D0AD763D49554415C8FC24595C350419A999919D3955441AE47E16A96C350410AD7A3C0D19554411F85EBC194C3504114AE4771BD955441E17A146E93C3504114AE4771BC955441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000839199097DC35041F25B8F82BE955441DBE257A27BC3504108E0F678BE955441C0D175A578C3504110D88864BE95544138C4AD0A7EC35041E2AAEACECB955441B3E0F2D481C35041A2D3AF26D095544174B14AA285C350410EFF1FA6D1955441A347E19A85C35041120AD763D4955441078F5DC394C3504163CE791ED39554410467DBC294C35041F4FDD41BD3955441DB79CD2794C3504163CE791ED39554414E8C76A293C350419DD58615CE9554413C003BC492C35041FB5D3367C5955441111699A992C3504104F76CA9C4955441D6A7604E95C350417E33D668C49554411F85EBC194C3504114AE4771BD955441E37A146E93C3504116AE4771BC955441F707A54F93C35041521C5377BC955441666666B692C350415C8FC295BC95544114AE479184C350419A999939BE955441839199097DC35041F25B8F82BE955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>169186 - 425080
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1746  </desc>
+<a>
+0106000000010000000103000000010000000D000000E17A146E93C3504114AE4771BC955441666666B692C350415C8FC295BC95544114AE479184C350419A999939BE9554419A9999097DC35041295C8F82BE95544152B81E8574C3504185EB5148BE955441CDCCCCAC78C35041713D0AE7C5955441713D0AD77BC35041D7A3705DCC955441B81E853B80C35041A4703D9AD2955441AE47E19A85C350413D0AD763D49554415C8FC24595C350419A999919D3955441AE47E16A96C350410AD7A3C0D19554411F85EBC194C3504114AE4771BD955441E17A146E93C3504114AE4771BC955441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000839199097DC35041F25B8F82BE955441DBE257A27BC3504108E0F678BE955441C0D175A578C3504110D88864BE95544138C4AD0A7EC35041E2AAEACECB955441B3E0F2D481C35041A2D3AF26D095544174B14AA285C350410EFF1FA6D1955441A347E19A85C35041120AD763D4955441078F5DC394C3504163CE791ED39554410467DBC294C35041F4FDD41BD3955441DB79CD2794C3504163CE791ED39554414E8C76A293C350419DD58615CE9554413C003BC492C35041FB5D3367C5955441111699A992C3504104F76CA9C4955441D6A7604E95C350417E33D668C49554411F85EBC194C3504114AE4771BD955441E37A146E93C3504116AE4771BC955441F707A54F93C35041521C5377BC955441666666B692C350415C8FC295BC95544114AE479184C350419A999939BE955441839199097DC35041F25B8F82BE955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242668 - 3018639
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -53695  </desc>
+<a>
+01060000000100000001030000000100000031000000333333C36F1651417B14AE7792175541AE47E1DA7C1651410AD7A3F0901755418FC2F5F87D16514114AE47D191175541713D0A8780165141F6285C0FA6175541333333C380165141B81E85EBA7175541AE47E1DA81165141AE47E1AAA8175541CDCCCC9C8D16514185EB51B8B017554148E17A749916514114AE47E1B6175541A4703D1A9E1651410AD7A3F0B6175541AE47E15A9D165141AE47E15AB2175541A4703DDA9C165141F6285C0FA9175541F6285C6F9F165141CDCCCC1CA4175541666666A6A71651419A9999D9981755417B14AE37A616514148E17A4497175541C3F5282CA416514185EB51C8951755410AD7A3A0A016514185EB51F892175541666666269E16514100000030901755411F85EBF19C165141B81E856B8E175541713D0AE79B165141B81E856B8C1755410AD7A3009B165141D7A3700D8A175541713D0A879A16514185EB51C885175541AE47E18A99165141D7A370CD701755418FC2F5E8971651413D0AD783461755418FC2F59896165141713D0AA727175541D7A3703D96165141B81E850B22175541B81E85DB95165141295C8F42201755418FC2F5289516514148E17A441F175541AE47E13A93165141333333331F17554148E17A94911651413D0AD7A31F1755419A99993990165141C3F5288C20175541666666468E165141D7A370AD22175541A4703DDA881651417B14AED72A17554185EB519882165141713D0A17341755410AD7A3D07B165141CDCCCCEC3C175541E17A140E7616514114AE4701441755415C8FC2B56E1651415C8FC2854C1755410AD7A3406B165141E17A14DE4F175541CDCCCCFC66165141CDCCCCBC53175541C3F5281C631651411F85EBD156175541666666E65A16514114AE47515C175541AE47E11A58165141EC51B86E5E175541AE47E10A58165141AE47E18A64175541295C8F925816514114AE47817B1755418FC2F50859165141D7A3705D7D175541713D0AF75916514185EB51588817554114AE47F15B165141CDCCCCBC92175541000000205D165141AE47E19A9317554152B81EC56F165141295C8F7291175541333333C36F1651417B14AE7792175541
+</a>
+
+<b>
+01060000000100000001030000000100000049000000C954872EA0165141551E2978921755417E553F4D9F1651411578B7EA9317554162D0F83D9E1651417D9DA8A595175541FE3726859C1651419C39B7F097175541D325C1739B1651414D3BA55299175541190BBDA599165141F10041B99B1755418FB151E2971651411CB78C089E175541B607E1E1961651417B5086599F1755410658E61E9616514174A15260A0175541EF5FBE11951651410AB53ED89E175541D1888463931651411187AE609C175541676393A8911651413F01A187991755419780457590165141C9FB769397175541BF28C813901651410AF9619996175541DC7D307B8F165141957F2F0F951755417B702E948E16514179703FC692175541AF19D8CA8D165141837B8C81901755411D8541A48C165141F9445D4D8D175541E937B12F8C16514134EF2D1C8C175541AB23FEED8B165141D83E6C8F891755411EE15A668B165141A0911FCB8517554110543C648B16514139C847D2821755411FE15A668B16514129A28F4D7F1755411FE15A668B1651414C54380F7D175541899D90468B165141415E5E327B175541DA3F89228B165141EAFF8F44791755412A20D2D38A165141F8B36DC477175541A508A78D8B165141E3D0B19E761755419BD950018D1651410343375F741755410609E3DA8E165141F88ED1C57117554105A96FCC901651415CAF673E6F17554164C428FE911651411CA6C0BE6D17554151C6EFF39216514107C304996C175541C969CE83931651416A8327036C17554156F0683995165141907F99176A1755417FB6E08497165141F49F2F90671755415330821C99165141F84499C865175541E640F41D99165141AF3CE0C7651755418205448C98165141AD76080A5717554198FD8D4A9216514114CA96F25D175541EEF946408E165141D61B087C621755413B15E1A5891651410B2B07AF67175541CE51B4B6841651418F3C5E1D6D17554152B3077D8316514135222D246E175541E8440DBF7F165141DCD041FD7017554192CF0A4F7B1651412084064D74175541E4769113761651413AF0A8CF77175541DE3AA10C701651415D3D6AE27B175541D8356B3368165141924C691581175541B51F644E621651416697D2EC8417554189F183AB5D1651415B483F018817554123BC974A5A16514160B16B0F8A17554114AE47F15B165141CDCCCCBC92175541000000205D165141AE47E19A9317554152B81EC56F165141295C8F7291175541333333C36F1651417B14AE7792175541AE47E1DA7C1651410AD7A3F0901755418FC2F5F87D16514114AE47D191175541713D0A8780165141F6285C0FA6175541333333C380165141B81E85EBA7175541D2EDCA318116514158981F3EA8175541CDCCCC9C8D16514185EB51B8B017554148E17A749916514114AE47E1B6175541A4703D1A9E1651410AD7A3F0B6175541AE47E15A9D165141AE47E15AB2175541A4703DDA9C165141F6285C0FA9175541C9D54BB59E1651411D7A4500A617554192B123F09F16514154383831A4175541666666A6A71651419A9999D9981755417B14AE37A616514148E17A4497175541C3F5282CA416514185EB51C8951755410AD7A3A0A016514185EB51F892175541C954872EA0165141551E297892175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242668 - 3503727
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -53695  </desc>
+<a>
+01060000000100000001030000000100000031000000333333C36F1651417B14AE7792175541AE47E1DA7C1651410AD7A3F0901755418FC2F5F87D16514114AE47D191175541713D0A8780165141F6285C0FA6175541333333C380165141B81E85EBA7175541AE47E1DA81165141AE47E1AAA8175541CDCCCC9C8D16514185EB51B8B017554148E17A749916514114AE47E1B6175541A4703D1A9E1651410AD7A3F0B6175541AE47E15A9D165141AE47E15AB2175541A4703DDA9C165141F6285C0FA9175541F6285C6F9F165141CDCCCC1CA4175541666666A6A71651419A9999D9981755417B14AE37A616514148E17A4497175541C3F5282CA416514185EB51C8951755410AD7A3A0A016514185EB51F892175541666666269E16514100000030901755411F85EBF19C165141B81E856B8E175541713D0AE79B165141B81E856B8C1755410AD7A3009B165141D7A3700D8A175541713D0A879A16514185EB51C885175541AE47E18A99165141D7A370CD701755418FC2F5E8971651413D0AD783461755418FC2F59896165141713D0AA727175541D7A3703D96165141B81E850B22175541B81E85DB95165141295C8F42201755418FC2F5289516514148E17A441F175541AE47E13A93165141333333331F17554148E17A94911651413D0AD7A31F1755419A99993990165141C3F5288C20175541666666468E165141D7A370AD22175541A4703DDA881651417B14AED72A17554185EB519882165141713D0A17341755410AD7A3D07B165141CDCCCCEC3C175541E17A140E7616514114AE4701441755415C8FC2B56E1651415C8FC2854C1755410AD7A3406B165141E17A14DE4F175541CDCCCCFC66165141CDCCCCBC53175541C3F5281C631651411F85EBD156175541666666E65A16514114AE47515C175541AE47E11A58165141EC51B86E5E175541AE47E10A58165141AE47E18A64175541295C8F925816514114AE47817B1755418FC2F50859165141D7A3705D7D175541713D0AF75916514185EB51588817554114AE47F15B165141CDCCCCBC92175541000000205D165141AE47E19A9317554152B81EC56F165141295C8F7291175541333333C36F1651417B14AE7792175541
+</a>
+
+<b>
+01060000000100000001030000000100000049000000C954872EA0165141551E2978921755417E553F4D9F1651411578B7EA9317554162D0F83D9E1651417D9DA8A595175541FE3726859C1651419C39B7F097175541D325C1739B1651414D3BA55299175541190BBDA599165141F10041B99B1755418FB151E2971651411CB78C089E175541B607E1E1961651417B5086599F1755410658E61E9616514174A15260A0175541EF5FBE11951651410AB53ED89E175541D1888463931651411187AE609C175541676393A8911651413F01A187991755419780457590165141C9FB769397175541BF28C813901651410AF9619996175541DC7D307B8F165141957F2F0F951755417B702E948E16514179703FC692175541AF19D8CA8D165141837B8C81901755411D8541A48C165141F9445D4D8D175541E937B12F8C16514134EF2D1C8C175541AB23FEED8B165141D83E6C8F891755411EE15A668B165141A0911FCB8517554110543C648B16514139C847D2821755411FE15A668B16514129A28F4D7F1755411FE15A668B1651414C54380F7D175541899D90468B165141415E5E327B175541DA3F89228B165141EAFF8F44791755412A20D2D38A165141F8B36DC477175541A508A78D8B165141E3D0B19E761755419BD950018D1651410343375F741755410609E3DA8E165141F88ED1C57117554105A96FCC901651415CAF673E6F17554164C428FE911651411CA6C0BE6D17554151C6EFF39216514107C304996C175541C969CE83931651416A8327036C17554156F0683995165141907F99176A1755417FB6E08497165141F49F2F90671755415330821C99165141F84499C865175541E640F41D99165141AF3CE0C7651755418205448C98165141AD76080A5717554198FD8D4A9216514114CA96F25D175541EEF946408E165141D61B087C621755413B15E1A5891651410B2B07AF67175541CE51B4B6841651418F3C5E1D6D17554152B3077D8316514135222D246E175541E8440DBF7F165141DCD041FD7017554192CF0A4F7B1651412084064D74175541E4769113761651413AF0A8CF77175541DE3AA10C701651415D3D6AE27B175541D8356B3368165141924C691581175541B51F644E621651416697D2EC8417554189F183AB5D1651415B483F018817554123BC974A5A16514160B16B0F8A17554114AE47F15B165141CDCCCCBC92175541000000205D165141AE47E19A9317554152B81EC56F165141295C8F7291175541333333C36F1651417B14AE7792175541AE47E1DA7C1651410AD7A3F0901755418FC2F5F87D16514114AE47D191175541713D0A8780165141F6285C0FA6175541333333C380165141B81E85EBA7175541D2EDCA318116514158981F3EA8175541CDCCCC9C8D16514185EB51B8B017554148E17A749916514114AE47E1B6175541A4703D1A9E1651410AD7A3F0B6175541AE47E15A9D165141AE47E15AB2175541A4703DDA9C165141F6285C0FA9175541C9D54BB59E1651411D7A4500A617554192B123F09F16514154383831A4175541666666A6A71651419A9999D9981755417B14AE37A616514148E17A4497175541C3F5282CA416514185EB51C8951755410AD7A3A0A016514185EB51F892175541C954872EA0165141551E297892175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>228582 - 1810716
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2442  </desc>
+<a>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC47654415C8FC285399C504148E17AA4C57654411F85EB01349C5041B81E858BC6765441295C8FF22B9C5041713D0A67D2765441E17A14EE259C504114AE4741DB765441A4703D2A1E9C5041D7A370ADE6765441B81E853B239C5041713D0A37E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF07654419A9999593E9C50410AD7A380D9765441AE47E1AA4E9C504114AE4771C17654419A9999394B9C50415C8FC2E5BF765441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC476544127C3724F399C50417DDC919FC57654414B1FBAC1359C504193213D42C67654415492371A329C5041CAEA5608CE765441F3C179D32E9C5041263E080AD4765441376CD1542B9C504142646ECFDA7654415973B6CB239C50419908DA55E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF07654419A9999593E9C50410AD7A380D9765441AE47E1AA4E9C504114AE4771C17654419A9999394B9C50415C8FC2E5BF765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>228582 - 3424337
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2442  </desc>
+<a>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC47654415C8FC285399C504148E17AA4C57654411F85EB01349C5041B81E858BC6765441295C8FF22B9C5041713D0A67D2765441E17A14EE259C504114AE4741DB765441A4703D2A1E9C5041D7A370ADE6765441B81E853B239C5041713D0A37E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF07654419A9999593E9C50410AD7A380D9765441AE47E1AA4E9C504114AE4771C17654419A9999394B9C50415C8FC2E5BF765441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC476544127C3724F399C50417DDC919FC57654414B1FBAC1359C504193213D42C67654415492371A329C5041CAEA5608CE765441F3C179D32E9C5041263E080AD4765441376CD1542B9C504142646ECFDA7654415973B6CB239C50419908DA55E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF07654419A9999593E9C50410AD7A380D9765441AE47E1AA4E9C504114AE4771C17654419A9999394B9C50415C8FC2E5BF765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454165 - 417404
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -3427  </desc>
+<a>
+0106000000010000000103000000020000004A0000008772598481AE5041791E613CE0D65441CE932C8181AE5041D68DF73DE0D65441B81E85CB80AE5041D7A3703DE1D65441EC51B86E7FAE5041C3F5289CE5D654413D0AD7737FAE50411F85EBE1EAD6544114AE470182AE504185EB5118ECD6544114AE47C17EAE5041C3F5281CEFD6544148E17AE47BAE5041B81E85CBF1D654418FC2F55886AE504152B81EC5FED65441295C8F2278AE5041713D0A3701D75441713D0A5774AE50410000005002D75441295C8F4279AE504152B81E1506D7544114AE47917FAE50417B14AE1705D75441C3F5287C89AE5041713D0A5706D754413333337393AE50411F85EB8105D75441EC51B8FE94AE504152B81E3505D754419A9999A990AE5041AE47E1BAF9D654413D0AD7F38EAE50410AD7A390FAD6544148E17AF48FAE504114AE4701F9D65441CDCCCCEC95AE504185EB51B8EFD6544152B81EF591AE5041B81E856BECD6544152B81E4592AE504185EB5178EBD654413D0AD7E396AE5041A4703DEAEDD6544148E17A349EAE50410AD7A3E0EED65441713D0A57A7AE5041666666A6EED65441295C8FE2AAAE5041EC51B8AEEED65441CDCCCC8CAEAE504152B81E25E0D654410AD7A390AAAE5041333333B3DFD654413D0AD743A8AE504185EB5138E1D654417B14AE67A6AE5041E17A140EE4D65441000000D0A4AE5041713D0AC7E0D65441666666A6A0AE5041713D0AC7E0D65441295C8F329DAE5041B81E850BE1D65441666666469AAE504148E17AE4DFD65441000000309AAE50419A999969DDD6544114AE478198AE5041E17A149EDCD65441295C8F029AAE5041AE47E1AADAD65441D7A3702DA1AE504114AE4721DDD65441666666B6A3AE5041B81E851BD6D65441713D0AA7A6AE50419A9999E9CDD654418FC2F5B891AE50419A999959C4D654419A9999F990AE50417B14AEF7C4D65441E17A141E90AE5041295C8FB2C5D65441CDCCCCDC82AE50410AD7A310C4D65441A4703D8A80AE50417B14AE97C1D654419A9999497FAE504100000010BED65441D7A3709D7AAE5041000000A0C0D654419A99997974AE504148E17AD4C2D6544114AE47916DAE5041C3F5282CC6D65441B236413F6AAE5041537932BEC9D65441F7930E226EAE50415B9F353DCAD654411F85EB716EAE5041C3F5281CCAD65441646129496EAE5041C50B0262CAD65441F7A2FC446CAE5041A20805EACDD65441F7A2FC446CAE5041D699516ECFD65441677DEDA86DAE50418BE0FDD7D2D65441BF2FD7FA73AE5041B7B9F200D6D65441F591E8697DAE504152407E44DBD65441E17A141E7EAE50410AD7A360DBD654418FC2F59880AE504133333343DCD65441B81E858B82AE5041CDCCCC2CDCD654411F85EBA182AE5041713D0A97DDD65441AE47E17A82AE5041B81E85DBDFD6544114AE47F184AE50415C8FC285E1D654417B14AEF78DAE5041333333F3E7D65441A4703DFA90AE5041A4703D2AEAD6544114AE470190AE5041A4703D4AECD65441B81E853B8EAE50411F85EBB1EAD654410AD7A3C08BAE50411F85EBC1EBD654417B14AEB789AE504185EB51A8E8D6544152B81EC587AE5041333333D3E5D65441A4703D4A85AE50419A9999C9E3D654411F85EBA182AE50410AD7A3C0E1D654418772598481AE5041791E613CE0D6544109000000A4703D9A8AAE50415C8FC275D1D6544152B81ED588AE50410AD7A3F0D3D65441B81E85BB85AE50411F85EB41D2D654416666664687AE5041333333B3CED65441D7A3704D89AE50417B14AEA7C9D65441F6285CBF8CAE504148E17A84C8D65441F6285C5F8CAE5041EC51B8FECAD65441F6285C4F8BAE5041AE47E1EACDD65441A4703D9A8AAE50415C8FC275D1D65441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003BEA7AE47BAE5041D32985CBF1D65441244DBC8682AE50414D761C07FAD6544161B5058C82AE5041C815AC0DFAD6544181D3F55886AE50411FE91DC5FED654419CBCEBFF8BAE50415D640802FCD65441B96D80DC8EAE50418A6F0B9CFAD65441B3BED6F38EAE50412FB4A390FAD65441657DF7358FAE50418350BD29FAD6544148E17AF48FAE504114AE4701F9D65441F164B77E88AE5041D8E73D5AF1D6544131A34C178CAE5041CCF1CA9CEBD6544185EB51C88DAE50419A9999E9E8D6544160AE47F184AE5041878FC285E1D6544146A8E17A82AE504182827FDBDFD65441281585CB80AE5041C8D3703DE1D65441EFA2B96E7FAE5041DDFB279CE5D654414C62D8737FAE50413543EAE1EAD6544114AE470182AE504185EB5118ECD65441495034E07FAE50415084FB11EED65441EBB447C17EAE5041DF91291CEFD654413BEA7AE47BAE5041D32985CBF1D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257140 - 3163537
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8073  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD74341A75041C3F5284CF10B5541CDCCCCDC44A7504152B81ED5EF0B554148E17A6441A7504114AE4721110C5541295C8F024FA750418FC2F5A8100C55410AD7A33051A7504185EB5148100C5541E17A14BE52A7504185EB5158F50B5541A4703D9A54A7504133333333E80B5541B81E85AB3EA750413D0AD723F00B5541CDCCCCBC39A75041A4703D8AF10B5541D7A3707D38A750417B14AEB7F10B55413D0AD73338A750413D0AD743F40B55413D0AD74341A75041C3F5284CF10B5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000FEE996BF44A75041792D6BEDF00B55416DCE55A944A75041E59AF7C2F10B5541747701FA53A750417ABB9B9FEC0B5541B56EAB2054A7504121C95C8EEB0B5541A342F60852A75041431CD648EC0B5541FEE996BF44A75041792D6BEDF00B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257140 - 3198380
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8073  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD74341A75041C3F5284CF10B5541CDCCCCDC44A7504152B81ED5EF0B554148E17A6441A7504114AE4721110C5541295C8F024FA750418FC2F5A8100C55410AD7A33051A7504185EB5148100C5541E17A14BE52A7504185EB5158F50B5541A4703D9A54A7504133333333E80B5541B81E85AB3EA750413D0AD723F00B5541CDCCCCBC39A75041A4703D8AF10B5541D7A3707D38A750417B14AEB7F10B55413D0AD73338A750413D0AD743F40B55413D0AD74341A75041C3F5284CF10B5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000FEE996BF44A75041792D6BEDF00B55416DCE55A944A75041E59AF7C2F10B5541747701FA53A750417ABB9B9FEC0B5541B56EAB2054A7504121C95C8EEB0B5541A342F60852A75041431CD648EC0B5541FEE996BF44A75041792D6BEDF00B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>258893 - 5313093
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -15864  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EBE1223051415C8FC2B5CC8254413D0AD733273051413D0AD7A3BF825441000000A0293051415C8FC2D5B98254419A9999692B3051413D0AD713B6825441CDCCCC8C2A30514114AE4711B4825441B81E851B27305141B81E85FBB0825441D7A3703D25305141A4703DFAAF825441A4703D0A2230514133333323AF825441B81E855B1F305141E17A141EAF8254410AD7A3A01C3051415C8FC2A5AD8254415C8FC2451A305141CDCCCCDCAB825441713D0AF7133051419A9999F9B8825441713D0A4708305141A4703D6AD4825441AE47E1CA0630514100000010D2825441666666A604305141A4703D0AD3825441F6285C2F01305141E17A145ED58254417B14AEE7FE2F514114AE47C1D6825441713D0A87FC2F5141D7A3705DD88254411F85EBC1FA2F51419A9999C9D9825441333333C3F72F51411F85EB51DE8254413D0AD7C3F42F514100000060E08254411F85EBC1F12F5141713D0A97E2825441AE47E1DAEC2F5141A4703D7AE6825441CDCCCCACEA2F5141B81E859BE882544114AE4721EA2F514148E17AD4E8825441713D0AF7E92F514148E17AE4E8825441F6285C6FE42F51415C8FC2F5EA8254413D0AD763E02F5141333333F3EC8254418FC2F588DD2F5141D7A3700DEF8254417B14AEE7D42F51415C8FC265F382544100000000CE2F5141EC51B84EF782544166666696CF2F5141333333B3FC825441000000A0CF2F5141C3F528ECFC825441E17A149ED02F5141F6285CDF028354411F85EB51D12F51413D0AD7B305835441C3F5289CD22F514185EB51180B8354415C8FC265D42F51413D0AD753108354411F85EBA1D42F51410AD7A3B00F83544114AE47E1DE2F5141D7A3705D08835441C3F528ACEA2F5141E17A14EEFF82544185EB51B8EC2F5141E17A146EFF82544133333303FA2F5141EC51B89E0783544114AE475108305141F6285C6F1083544152B81E550B3051411F85EBB10A835441295C8FC21B305141F6285CCF148354415C8FC23530305141F6285C7F20835441EC51B80E3130514114AE47211F835441B81E853B313051418FC2F5D81E8354410000003036305141C3F528FC158354413D0AD723383051418FC2F5581283544148E17A44423051410AD7A340028354417B14AE1745305141AE47E18AFE825441CDCCCC5C47305141EC51B88EFA825441333333834930514166666656F68254419A9999894C30514133333313F0825441CDCCCC0C4E30514114AE4711EC8254410000007050305141333333D3E482544152B81EB55130514166666646E1825441F6285C8F52305141AE47E1CADF8254413D0AD72351305141B81E850BE082544152B81E15493051419A999979E18254417B14AEB74830514100000080DD825441D7A3708D45305141295C8FC2DD82544152B81E35383051410AD7A3E0DE825441000000B03730514152B81ED5D982544185EB51482A3051411F85EB71DC825441F6285C0F29305141A4703D7ADC8254418FC2F52826305141295C8FE2E782544185EB51E821305141E17A14FEE48254411F85EB411C30514166666626E18254411F85EBE1223051415C8FC2B5CC825441
+</a>
+
+<b>
+01060000000100000001030000000100000039000000BCC5000B23305141102ECF50CC825441301C7C52243051410D4BAE5AC8825441EB372A5927305141611C664ABF825441F4FB3D4129305141DFACD3B8BA825441533C57A829305141FB92B4D7B9825441000000A0293051415C8FC2D5B9825441ADCB77972A30514124E28ECDB78254412FDFCE652B3051413ED2000BB68254418E0D953C2A305141748C64C9B38254414929C8BD28305141EE875872B2825441D9A9BA4D2630514122EBC58CB08254412940827E24305141E0DC1EC8AF825441C229616922305141CB932C3CAF825441EB51E99F20305141A1A27F20AF825441B81E855B1F305141E17A141EAF825441625650241F30514129855A00AF8254414F9E8A0E1E305141E4ABC86AAE825441A4DDAEA21D305141FECDB430AE8254418C2E15E61B30514181525B18AD82544150BB19AF11305141C9D69354BE825441713D0A4708305141A4703D6AD4825441CAEEB2840730514128BE096BD3825441033F6EBD06305141A3692541D7825441E29C182F06305141730D5AECD982544184B00F7605305141FB8FA817DD825441BD00CBAE0430514192E3218AE08254418B8D4AD903305141059B4D7CE282544177C227A00230514112893552E58254414155AFD8003051415DC1D052E8825441D3977BD8FF2F5141CF78FC44EA8254413467C702FE2F51413659F5E1EC825441EE2824F4FB2F5141809190E2EF8254417D71F801FA2F5141E871897FF2825441BD9EEE9DF72F51414E52821CF582544129456D1DF52F5141F27C2EE4F78254412C28B08EF22F5141B24F3848FA825441800914E3ED2F51411D2A29D7FD8254414A9C9B1BEC2F51416F3FFF3AFF82544185EB51B8EC2F5141E17A146EFF82544133333303FA2F5141EC51B89E0783544114AE475108305141F6285C6F1083544152B81E550B3051411F85EBB10A83544106DDEA511B305141769830DE138354415DA633C5223051412471D4D7178354417D830CDF28305141E2F3F1ED1A835441B2B352802E30514130C8DDA11D835441AE3F2D3031305141257B80071F83544195F15DF93830514148709D05118354416FCEB2FD4230514183B8654D01835441851D7B843E3051413678C874FE825441AEE3C45238305141B22C82F0F88254417B42DA7B3030514103C87995F1825441E0C0F607263051418BE69300E88254410857E3E2203051419D7B484CE48254411F85EB411C30514166666626E18254411F85EBE1223051415C8FC2B5CC825441BCC5000B23305141102ECF50CC825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>270394 - 168454
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2756  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A14DE6E895141A4703D5A689154418FC2F5286C89514185EB5118699154415C8FC2155D895141295C8FC269915441EC51B8FE5989514152B81E456A915441B81E852B52895141000000906B9154418FC2F5C852895141AE47E10A74915441B81E851B53895141B81E858B7A915441295C8F82558951410AD7A300799154419A9999195B8951418FC2F56875915441333333835F8951413D0AD793729154418FC2F5886D89514114AE473169915441E17A14DE6E895141A4703D5A68915441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000E71694B6E895141F34576826891544127582E0F6E89514176C7FA9268915441F5AC962B6C895141BE90A9196991544173C144135D8951415801E7C369915441193282FD598951418E0BBE476A9154412419D6445A89514125D2C5106D9154417CA8985A5D8951419C0FD0676C91544120F0791569895141E119A72B6C915441623F49C469895141A41BEBB66B9154418FC2F5886D89514114AE4731699154419CB4877B6E8951410A825D986891544165F42BD66E8951416AA4685C689154410E71694B6E895141F345768268915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>270394 - 336741
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2756  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A14DE6E895141A4703D5A689154418FC2F5286C89514185EB5118699154415C8FC2155D895141295C8FC269915441EC51B8FE5989514152B81E456A915441B81E852B52895141000000906B9154418FC2F5C852895141AE47E10A74915441B81E851B53895141B81E858B7A915441295C8F82558951410AD7A300799154419A9999195B8951418FC2F56875915441333333835F8951413D0AD793729154418FC2F5886D89514114AE473169915441E17A14DE6E895141A4703D5A68915441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000E71694B6E895141F34576826891544127582E0F6E89514176C7FA9268915441F5AC962B6C895141BE90A9196991544173C144135D8951415801E7C369915441193282FD598951418E0BBE476A9154412419D6445A89514125D2C5106D9154417CA8985A5D8951419C0FD0676C91544120F0791569895141E119A72B6C915441623F49C469895141A41BEBB66B9154418FC2F5886D89514114AE4731699154419CB4877B6E8951410A825D986891544165F42BD66E8951416AA4685C689154410E71694B6E895141F345768268915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>273658 - 1924443
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7967  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCACEE3951410AD7A360F43E54410AD7A3B0EC3951415C8FC245F53E5441CDCCCCCCEF3951419A999959FB3E5441295C8F32F2395141E17A148E003F544152B81E75F83951415C8FC285063F5441295C8FB2F7395141B81E85DB093F5441295C8FE2F53951419A9999E9143F54419A999989F43951417B14AE671B3F54410AD7A360083A5141EC51B87E153F544114AE47A1063A51417B14AEA70F3F5441F6285C0F023A5141F6285C5F003F54415C8FC245FD39514185EB51C8ED3E5441CDCCCCACEE3951410AD7A360F43E5441
+</a>
+
+<b>
+0106000000010000000103000000030000005900000061DB3370F63951416293AD89113F5441295C8F6AF639514106819543123F54413D7E1E45F6395141B8167590123F544171F41824F6395141C19E10D1123F54415A17FC74F539514101632649143F5441277C2B07F5395141418B9730153F5441C74B3791F2395141819543A3153F5441EC5060D6F2395141810FCAF1103F5441552813C8F2395141C4E1AB900E3F54411941E373F23951414DBDB8680A3F5441F936BE56F2395141D242E601093F544180A5C866F03951414B68D5DA063F54416175C429EE39514159109B42053F5441DF4F8D87ED39514123DBF91E063F54411283C0D2EF39514183C0CA81093F5441A69BC430EE395141B81E859B0A3F544110BC0844ED395141E14284DA073F5441EF19B442EC395141F5124C74083F5441550EA72DEC3951419123369A083F54418D976E22EB395141CDCCCC340B3F544121FFF164E7395141F7D31C850D3F5441D671E0E6E6395141217CB2F40D3F54410B422697E5395141B313FF230F3F5441B5DF0C74E53951418D5D294A0F3F544184DA9518E439514142529BF5103F5441CCB3CC16E4395141883F800E113F5441A2218414E43951416DE29140153F5441D6242212E4395141E59056A1193F54416ED16D19E4395141156032D0193F544148E17ABCE4395141AC1C5A041D3F54412D24CC94E73951410C1DABB81C3F544135D633F0E7395141A81B84B01C3F544147FC056CE93951419E199EB21C3F5441A900F0EEE9395141ECD21CE51C3F54416EA6B915EB3951419E61D1571D3F544148927F7AEC395141C377A4E21D3F5441826A58DFEC39514156DC9C0A1E3F54415C3AB572ED395141D39BB65E1E3F54413357E044EE395141E5A062DA1E3F5441DFC74878EF395141E727771E203F5441FE0B4806F3395141FD372AC81F3F544160E5D0CAF43951418FC2F5281E3F5441FAF1BDFAF5395141DB7BC1CD1D3F5441DAF06AB1F83951413841E3B31E3F5441A423B687FB3951410654BCFF1D3F5441BE0DEDAEFB3951419D637FFC1D3F54411369B804FD395141EC1B6B0D1E3F544177B9F41BFE39514103E8551A1E3F544154E3A5DBFF39514183C0CAA11E3F54417476F9A1003A51411E365678203F5441EA1641B0003A51417877379A203F5441C55A119C003A514156A09757213F544187EED041003A5141888A45A6243F544107D8EA26003A51415B1D9EA2253F5441B335AE1A003A5141ACE8471F263F5441C64D0F7F013A514171F4DCC5253F54418EA86CFF033A5141EBFC6402253F54418E21F334063A5141CF4B915D243F5441B755075C093A514150B3639C233F5441251810C10A3A51417F65923A233F5441EAF258320C3A51416CE365D5223F54419A9999E9083A514185EB5148173F54410AD7A360083A5141EC51B87E153F544114AE47A1063A51417B14AEA70F3F5441F6285C0F023A5141F6285C5F003F54415C8FC245FD39514185EB51C8ED3E5441CDCCCCACEE3951410AD7A360F43E544120D7A3B0EC395141518FC245F53E54410242DD2DEC395141D2E4F08CF53E544163CC837AEC3951416741EF1FF73E544172F270C2EC395141CB2F179AF83E54413FE0B6DEEC395141E5C78AF5F83E544142F982E9ED39514141CFA145FC3E5441643BDF6FED39514152B81EF5FC3E54415B542C77EF39514159F29140FF3E544184ED6289EF3951412D86605DFF3E5441C74B37F9EF39514108AC1CE2003F5441E17A140EF13951418716D956023F544155ACA9EFF239514124579991033F54419A9999B9F3395141EC51B82E043F54419FFDF812F4395141D59C2E75043F54416D73E6B0F5395141773A6852053F544118AA4AC2F5395141DC9A255E053F5441E402C942F63951417C561522073F5441ED5CD76DF639514149C026B9083F54417DE33D9EF639514146C1FBA50A3F54416BF623A5F63951415BDBD97E0B3F54413BDAC4A3F6395141621A972E0F3F544161DB3370F63951416293AD89113F544104000000FBB46700F03951416BA1A2C9FB3E5441E71369C0EF395141CD7B6341FB3E5441CDCCCCCCEF3951419A999959FB3E5441FBB46700F03951416BA1A2C9FB3E544104000000E221904FF83951417FE3902A073F5441DE02C162F8395141288A4074063F544152B81E75F83951415C8FC285063F5441E221904FF83951417FE3902A073F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>273658 - 3701006
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7967  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCACEE3951410AD7A360F43E54410AD7A3B0EC3951415C8FC245F53E5441CDCCCCCCEF3951419A999959FB3E5441295C8F32F2395141E17A148E003F544152B81E75F83951415C8FC285063F5441295C8FB2F7395141B81E85DB093F5441295C8FE2F53951419A9999E9143F54419A999989F43951417B14AE671B3F54410AD7A360083A5141EC51B87E153F544114AE47A1063A51417B14AEA70F3F5441F6285C0F023A5141F6285C5F003F54415C8FC245FD39514185EB51C8ED3E5441CDCCCCACEE3951410AD7A360F43E5441
+</a>
+
+<b>
+0106000000010000000103000000030000005900000061DB3370F63951416293AD89113F5441295C8F6AF639514106819543123F54413D7E1E45F6395141B8167590123F544171F41824F6395141C19E10D1123F54415A17FC74F539514101632649143F5441277C2B07F5395141418B9730153F5441C74B3791F2395141819543A3153F5441EC5060D6F2395141810FCAF1103F5441552813C8F2395141C4E1AB900E3F54411941E373F23951414DBDB8680A3F5441F936BE56F2395141D242E601093F544180A5C866F03951414B68D5DA063F54416175C429EE39514159109B42053F5441DF4F8D87ED39514123DBF91E063F54411283C0D2EF39514183C0CA81093F5441A69BC430EE395141B81E859B0A3F544110BC0844ED395141E14284DA073F5441EF19B442EC395141F5124C74083F5441550EA72DEC3951419123369A083F54418D976E22EB395141CDCCCC340B3F544121FFF164E7395141F7D31C850D3F5441D671E0E6E6395141217CB2F40D3F54410B422697E5395141B313FF230F3F5441B5DF0C74E53951418D5D294A0F3F544184DA9518E439514142529BF5103F5441CCB3CC16E4395141883F800E113F5441A2218414E43951416DE29140153F5441D6242212E4395141E59056A1193F54416ED16D19E4395141156032D0193F544148E17ABCE4395141AC1C5A041D3F54412D24CC94E73951410C1DABB81C3F544135D633F0E7395141A81B84B01C3F544147FC056CE93951419E199EB21C3F5441A900F0EEE9395141ECD21CE51C3F54416EA6B915EB3951419E61D1571D3F544148927F7AEC395141C377A4E21D3F5441826A58DFEC39514156DC9C0A1E3F54415C3AB572ED395141D39BB65E1E3F54413357E044EE395141E5A062DA1E3F5441DFC74878EF395141E727771E203F5441FE0B4806F3395141FD372AC81F3F544160E5D0CAF43951418FC2F5281E3F5441FAF1BDFAF5395141DB7BC1CD1D3F5441DAF06AB1F83951413841E3B31E3F5441A423B687FB3951410654BCFF1D3F5441BE0DEDAEFB3951419D637FFC1D3F54411369B804FD395141EC1B6B0D1E3F544177B9F41BFE39514103E8551A1E3F544154E3A5DBFF39514183C0CAA11E3F54417476F9A1003A51411E365678203F5441EA1641B0003A51417877379A203F5441C55A119C003A514156A09757213F544187EED041003A5141888A45A6243F544107D8EA26003A51415B1D9EA2253F5441B335AE1A003A5141ACE8471F263F5441C64D0F7F013A514171F4DCC5253F54418EA86CFF033A5141EBFC6402253F54418E21F334063A5141CF4B915D243F5441B755075C093A514150B3639C233F5441251810C10A3A51417F65923A233F5441EAF258320C3A51416CE365D5223F54419A9999E9083A514185EB5148173F54410AD7A360083A5141EC51B87E153F544114AE47A1063A51417B14AEA70F3F5441F6285C0F023A5141F6285C5F003F54415C8FC245FD39514185EB51C8ED3E5441CDCCCCACEE3951410AD7A360F43E544120D7A3B0EC395141518FC245F53E54410242DD2DEC395141D2E4F08CF53E544163CC837AEC3951416741EF1FF73E544172F270C2EC395141CB2F179AF83E54413FE0B6DEEC395141E5C78AF5F83E544142F982E9ED39514141CFA145FC3E5441643BDF6FED39514152B81EF5FC3E54415B542C77EF39514159F29140FF3E544184ED6289EF3951412D86605DFF3E5441C74B37F9EF39514108AC1CE2003F5441E17A140EF13951418716D956023F544155ACA9EFF239514124579991033F54419A9999B9F3395141EC51B82E043F54419FFDF812F4395141D59C2E75043F54416D73E6B0F5395141773A6852053F544118AA4AC2F5395141DC9A255E053F5441E402C942F63951417C561522073F5441ED5CD76DF639514149C026B9083F54417DE33D9EF639514146C1FBA50A3F54416BF623A5F63951415BDBD97E0B3F54413BDAC4A3F6395141621A972E0F3F544161DB3370F63951416293AD89113F544104000000FBB46700F03951416BA1A2C9FB3E5441E71369C0EF395141CD7B6341FB3E5441CDCCCCCCEF3951419A999959FB3E5441FBB46700F03951416BA1A2C9FB3E544104000000E221904FF83951417FE3902A073F5441DE02C162F8395141288A4074063F544152B81E75F83951415C8FC285063F5441E221904FF83951417FE3902A073F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295020 - 203569
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1163  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E10A1FC85041E17A149E514555413D0AD7631DC85041EC51B80E51455541D7A3705D1AC85041713D0A0750455541D7A3700D17C85041A4703D4A5D455541713D0AF714C850410AD7A34065455541F6285C6F13C8504152B81EE569455541295C8FA215C850418FC2F5E86A455541333333E316C85041D7A3707D6B455541EC51B80E18C850417B14AE076C455541A4703DBA1AC85041B81E856B64455541E17A148E1DC85041AE47E19A5B4555417B14AE9720C8504152B81E2552455541AE47E10A1FC85041E17A149E51455541
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000044F622E316C85041DF1E697D6B455541DAE731E316C8504114E46F7D6B4555417A1985DB18C85041B3F9AEE765455541103CE13A1CC85041756866165B4555419970E00A1FC85041A060149E51455541033B0C8C1EC85041505A197351455541589BD5631DC85041FFD4B70E514555410C3CB7FE1BC85041345FEBC1554555412621EA6118C850412815855B62455541295C8FA215C850418FC2F5E86A45554144F622E316C85041DF1E697D6B455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295020 - 381521
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1163  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E10A1FC85041E17A149E514555413D0AD7631DC85041EC51B80E51455541D7A3705D1AC85041713D0A0750455541D7A3700D17C85041A4703D4A5D455541713D0AF714C850410AD7A34065455541F6285C6F13C8504152B81EE569455541295C8FA215C850418FC2F5E86A455541333333E316C85041D7A3707D6B455541EC51B80E18C850417B14AE076C455541A4703DBA1AC85041B81E856B64455541E17A148E1DC85041AE47E19A5B4555417B14AE9720C8504152B81E2552455541AE47E10A1FC85041E17A149E51455541
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000042BEA4CB16C85041D81788726B455541DAE731E316C8504114E46F7D6B4555417A1985DB18C85041B3F9AEE765455541103CE13A1CC85041756866165B4555419970E00A1FC85041A060149E51455541033B0C8C1EC85041505A197351455541589BD5631DC85041FFD4B70E514555410C3CB7FE1BC85041345FEBC1554555412621EA6118C850412815855B62455541295C8FA215C850418FC2F5E86A45554142BEA4CB16C85041D81788726B455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321127 - 1061617
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4627  </desc>
+<a>
+0106000000010000000103000000010000000F00000066666616841E51418FC2F5086B835441666666E6841E5141000000A0648354411F85EB21851E51417B14AEA76083544148E17A24851E514185EB51885D835441EC51B80E801E514148E17A545D83544185EB5108711E5141CDCCCC8C5C83544114AE47F1701E51410AD7A3806C835441295C8F02711E514152B81E8570835441C3F528BC661E51411F85EB817183544114AE47F15D1E51418FC2F5C87283544185EB51D85D1E51413333330375835441EC51B80E5E1E5141295C8F8279835441B81E857B5E1E51413D0AD7D37B83544148E17AD4821E5141EC51B8EE7A83544166666616841E51418FC2F5086B835441
+</a>
+
+<b>
+01060000000100000001030000000100000042000000C3C4E04B831E5141C18F8217758354412529AF1E841E5141D4969AC76A835441CF4CE2B27B1E5141D671EF966B835441B5EF6BF1701E5141E9C311896C83544128652E01711E51414BC60E3370835441295C8F02711E514152B81E8570835441854529B3681E514108FA935171835441CA3393845E1E514190128FB37283544114AE47F15D1E51418FC2F5C872835441D6F12DDB5D1E51416740DFC174835441B81E857B5E1E51413D0AD7D37B835441A4703D1A611E5141333333E38D8354411F85EBD1611E51411F85EB0192835441C3F528BC631E514152B81E7598835441CDCCCC9C651E5141B81E85AB9883544166666676661E51413D0AD7B39A83544114AE4711681E5141295C8FB29D83544185EB51486A1E5141AE47E12AA183544185EB51886C1E514185EB5138A58354415C8FC2C56F1E514148E17A14AA83544185EB5118741E514185EB5148B083544152B81EA57A1E51419A9999C9B7835441F6285CDF7D1E5141D7A3707DBC835441A4703DDA801E5141C3F5285CC1835441D7A3700D801E5141666666F6BF835441C3F528FC8E1E5141666666D6BC835441A4703D1A9E1E5141A4703DFAB6835441E17A14BE9F1E5141C3F528ECB583544185EB5118A01E5141E17A14EEB3835441A4703D3A9C1E51416666663699835441E17A140E9B1E5141A4703D3A958354413D0AD7F3961E5141A4703D7A918354413D0AD763901E5141295C8F528C83544185EB51788B1E5141295C8F82898354417B14AE17821E51415C8FC2758883544152B81E75821E5141CDCCCC2C81835441CDCCCCEC891E51413D0AD7B383835441D7A370DD8E1E5141713D0AA7848354410AD7A370931E514185EB51F885835441A4703D7A961E5141F6285CDF87835441666666A69A1E5141713D0A478B835441E17A14EE9E1E51410AD7A3D08F83544152B81E65A31E5141E17A144E95835441A4703DDAA41E51416666666696835441D7A3709DA61E5141EC51B88E908354418FC2F598A91E5141295C8FE284835441295C8FB2AA1E51417B14AE27818354411F85EB01AC1E5141AE47E1BA7C83544152B81EF5AC1E514133333363728354417B14AEF7AE1E5141C3F528FC69835441E17A143EB01E5141EC51B8BE6383544148E17A84A71E5141AE47E1CA61835441D7A3701D971E5141333333035F83544148E17A748E1E5141666666E65D835441F6285CEF871E514148E17AA45D835441EC51B8FE861E5141000000205E83544100000030861E51411F85EBA15F835441C3F528AC851E5141F6285C8F68835441F6285C6F841E51416666664674835441B81E859B831E5141EC51B8EE7A8354413EFB14D4821E5141A26EC4027B8354412780E04B831E51413CEF85177583544148E17AD4821E5141EC51B8EE7A83544166666616841E51418FC2F5086B835441016F1D19841E5141BC7A8AF36A835441C3C4E04B831E5141C18F821775835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321127 - 3630046
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4627  </desc>
+<a>
+0106000000010000000103000000010000000F00000066666616841E51418FC2F5086B835441666666E6841E5141000000A0648354411F85EB21851E51417B14AEA76083544148E17A24851E514185EB51885D835441EC51B80E801E514148E17A545D83544185EB5108711E5141CDCCCC8C5C83544114AE47F1701E51410AD7A3806C835441295C8F02711E514152B81E8570835441C3F528BC661E51411F85EB817183544114AE47F15D1E51418FC2F5C87283544185EB51D85D1E51413333330375835441EC51B80E5E1E5141295C8F8279835441B81E857B5E1E51413D0AD7D37B83544148E17AD4821E5141EC51B8EE7A83544166666616841E51418FC2F5086B835441
+</a>
+
+<b>
+01060000000100000001030000000100000042000000C3C4E04B831E5141C18F8217758354412529AF1E841E5141D4969AC76A835441CF4CE2B27B1E5141D671EF966B835441B5EF6BF1701E5141E9C311896C83544128652E01711E51414BC60E3370835441295C8F02711E514152B81E8570835441854529B3681E514108FA935171835441CA3393845E1E514190128FB37283544114AE47F15D1E51418FC2F5C872835441D6F12DDB5D1E51416740DFC174835441B81E857B5E1E51413D0AD7D37B835441A4703D1A611E5141333333E38D8354411F85EBD1611E51411F85EB0192835441C3F528BC631E514152B81E7598835441CDCCCC9C651E5141B81E85AB9883544166666676661E51413D0AD7B39A83544114AE4711681E5141295C8FB29D83544185EB51486A1E5141AE47E12AA183544185EB51886C1E514185EB5138A58354415C8FC2C56F1E514148E17A14AA83544185EB5118741E514185EB5148B083544152B81EA57A1E51419A9999C9B7835441F6285CDF7D1E5141D7A3707DBC835441A4703DDA801E5141C3F5285CC1835441D7A3700D801E5141666666F6BF835441C3F528FC8E1E5141666666D6BC835441A4703D1A9E1E5141A4703DFAB6835441E17A14BE9F1E5141C3F528ECB583544185EB5118A01E5141E17A14EEB3835441A4703D3A9C1E51416666663699835441E17A140E9B1E5141A4703D3A958354413D0AD7F3961E5141A4703D7A918354413D0AD763901E5141295C8F528C83544185EB51788B1E5141295C8F82898354417B14AE17821E51415C8FC2758883544152B81E75821E5141CDCCCC2C81835441CDCCCCEC891E51413D0AD7B383835441D7A370DD8E1E5141713D0AA7848354410AD7A370931E514185EB51F885835441A4703D7A961E5141F6285CDF87835441666666A69A1E5141713D0A478B835441E17A14EE9E1E51410AD7A3D08F83544152B81E65A31E5141E17A144E95835441A4703DDAA41E51416666666696835441D7A3709DA61E5141EC51B88E908354418FC2F598A91E5141295C8FE284835441295C8FB2AA1E51417B14AE27818354411F85EB01AC1E5141AE47E1BA7C83544152B81EF5AC1E514133333363728354417B14AEF7AE1E5141C3F528FC69835441E17A143EB01E5141EC51B8BE6383544148E17A84A71E5141AE47E1CA61835441D7A3701D971E5141333333035F83544148E17A748E1E5141666666E65D835441F6285CEF871E514148E17AA45D835441EC51B8FE861E5141000000205E83544100000030861E51411F85EBA15F835441C3F528AC851E5141F6285C8F68835441F6285C6F841E51416666664674835441B81E859B831E5141EC51B8EE7A8354413EFB14D4821E5141A26EC4027B8354412780E04B831E51413CEF85177583544148E17AD4821E5141EC51B8EE7A83544166666616841E51418FC2F5086B835441016F1D19841E5141BC7A8AF36A835441C3C4E04B831E5141C18F821775835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325679 - 1837988
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4227  </desc>
+<a>
+0106000000010000000103000000020000001F000000713D0A17ACB0504148E17A54F53C544114AE4701AEB05041F6285C1FF63C5441C3F5287CACB0504166666626FA3C54419A999989AAB05041B81E857BF93C5441666666C6A9B0504152B81EC5FA3C54419A999979AAB05041000000B0003D54415C8FC2A5A2B050419A9999F90C3D544133333383ABB050418FC2F5A8113D544152B81EE5ACB050411F85EB610E3D544114AE4781B4B05041C3F528FC113D544185EB5198C1B05041D7A3704D183D54418FC2F5A8CEB0504152B81E951E3D54418FC2F528D4B05041A4703DEA203D5441AE47E11AD6B05041B81E856B213D5441713D0AB7D7B05041AE47E11A1D3D54419A9999D9D8B0504166666676143D5441C3F528DCD6B05041295C8FB2113D54417B14AEC7D5B05041295C8F12103D54410AD7A390D5B050415C8FC2750E3D5441D7A370DDD5B05041000000100D3D544114AE4721D9B0504148E17A54073D544100000000D9B0504185EB51E8053D5441C3F528ACD3B05041D7A3709D003D5441D7A370DDCBB05041AE47E10AF93C5441A4703D4AC5B050410AD7A3E0F23C54410AD7A350C9B050410AD7A320EC3C5441333333E3C5B05041D7A3704DEA3C544100000060BFB05041AE47E1AAE63C5441295C8F12B5B05041666666B6E13C54410AD7A3F0B0B05041EC51B81EDF3C5441713D0A17ACB0504148E17A54F53C5441050000008FC2F518ABB05041A4703DEAFD3C5441C3F528CCAEB050411F85EB51FD3C544114AE4731AFB0504148E17AD4FF3C5441CDCCCC5CABB05041AE47E14A003D54418FC2F518ABB05041A4703DEAFD3C5441
+</a>
+
+<b>
+01060000000100000001030000000300000025000000666666C6A9B0504152B81EC5FA3C54419A999979AAB05041000000B0003D54415C8FC2A5A2B050419A9999F90C3D544133333383ABB050418FC2F5A8113D544152B81EE5ACB050411F85EB610E3D544114AE4781B4B05041C3F528FC113D544185EB5198C1B05041D7A3704D183D54418FC2F5A8CEB0504152B81E951E3D54418FC2F528D4B05041A4703DEA203D5441AE47E11AD6B05041B81E856B213D5441713D0AB7D7B05041AE47E11A1D3D54419A9999D9D8B0504166666676143D5441C3F528DCD6B05041295C8FB2113D54417B14AEC7D5B05041295C8F12103D54410AD7A390D5B050415C8FC2750E3D5441D7A370DDD5B05041000000100D3D544114AE4721D9B0504148E17A54073D544100000000D9B0504185EB51E8053D5441C3F528ACD3B05041D7A3709D003D54411D760C71CDB0504165215792FA3C544144435A2CCDB050417243B64FFA3C544135EECB7ACAB0504171E05BA8F93C5441E3929F58C8B05041BBC5CDBCF73C5441785D8381C4B050411298B7ABF63C5441E6B5AFFFBDB050413D812C23F63C5441530EDC7DB7B0504146087271E93C54412A5CA6EA9FB0504199088218DF3C5441BF04F6A79DB0504199088218DF3C544148E17A24A1B050419A999979DA3C54411F85EB819FB05041CDCCCC6CDA3C544185EB51589CB050419A999959E13C5441D7A370DD9FB050411F85EBA1E43C5441295C8F229EB05041C3F5285CEE3C5441BF213BC09BB05041EC1FD91DF23C5441AE47E1BA9BB05041B81E858BF53C54417B14AE079FB050410AD7A310F63C5441666666C6A9B0504152B81EC5FA3C544105000000713D0A17ACB0504148E17A54F53C544114AE4701AEB05041F6285C1FF63C5441C3F5287CACB0504166666626FA3C54419A999989AAB05041B81E857BF93C5441713D0A17ACB0504148E17A54F53C5441050000008FC2F518ABB05041A4703DEAFD3C5441C3F528CCAEB050411F85EB51FD3C544114AE4731AFB0504148E17AD4FF3C5441CDCCCC5CABB05041AE47E14A003D54418FC2F518ABB05041A4703DEAFD3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328701 - 1291612
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8198  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A77ED1E5141B81E852B3BF75441B81E856BEF1E514185EB51F83EF7544133333383F01E514185EB512841F75441D7A370DDF91E5141D7A370BD41F75441D7A3705DFE1E514148E17A8441F75441F6285CDF011F514185EB51B840F75441D7A3701D051F5141295C8F923FF754415C8FC275081F5141333333833DF75441333333530E1F51411F85EB7138F75441E17A140E1A1F514148E17A142EF754417B14AE671B1F514152B81E052DF7544148E17AD41A1F5141EC51B8FE2BF754415C8FC2251A1F51411F85EB812AF75441295C8F32191F51413333331329F754410AD7A3D0181F5141AE47E17A28F75441295C8F32181F51413D0AD7C327F75441EC51B80E171F51415C8FC24526F754419A9999C9101F51419A9999291FF754413D0AD763091F5141EC51B80E22F754417B14AE17021F5141EC51B8CE23F75441A4703D7AFB1E51410000004025F754413D0AD703F31E51418FC2F59826F7544148E17A34E91E51418FC2F52828F7544166666636E61E514114AE47A128F754411F85EB21E61E51413D0AD7A32BF75441B81E855BE71E51417B14AEC72EF75441A4703DCAEA1E51413D0AD74336F75441713D0A77ED1E5141B81E852B3BF75441
+</a>
+
+<b>
+01060000000100000001030000000100000034000000E9D71099161F5141E8404BAB25F754419A9999C9101F51419A9999291FF754417B14AEC7051F51418FC2F5A813F754413D0AD7D3EE1E5141D7A3706D19F75441000000E0DF1E5141C3F5280C1CF75441F6285C3FCA1E51411F85EBA11EF75441C3F5284CC61E5141AE47E11A1FF754419A999969BC1E5141CDCCCCEC20F75441295C8F32BD1E5141713D0AA722F75441CDCCCCECBE1E5141E17A142E22F7544166666656C01E5141C3F5286C2AF7544152B81E05BC1E514152B81E352BF75441C3F5285CBD1E51411F85EB012FF754411F85EBD1BA1E5141666666662FF754417B14AEB7BD1E51417B14AE0734F75441CDCCCCFCB81E51417B14AEE737F75441E17A144EBA1E5141D7A3704D39F75441C3F5289CBB1E5141D7A3709D3AF7544152B81E55BE1E51419A99993938F7544185EB5148BF1E5141D7A3707D37F754418FC2F5A8C01E5141713D0A3736F7544166666616C21E514152B81EE534F75441D7A3702DC41E5141A4703D6A33F7544100000070C81E5141E17A145E30F75441CDCCCCFCCB1E51416666664634F754410AD7A3B0CC1E51418FC2F51835F7544148E17A84CD1E51413333334336F7544148E17AB4CE1E5141B81E850B38F75441B81E851BD11E5141B81E85BB3BF754413D0AD773D31E51417B14AE0740F754415C8FC235D41E5141B81E856B41F754411F85EB11DB1E5141EC51B82E41F75441A3588F17DD1E5141033A59DF40F754418A225FE8D31E514199C4BE242EF754417FF0D926DD1E51419BF7549A2CF75441AC5BD010E61E5141E6A63A9F2AF7544132DFF326E61E51411FCD7CE62AF7544166666636E61E514114AE47A128F7544122D88E3DCE1E5141F5605A622CF754415C8FC275CF1E5141EC51B83E2AF754410AD7A310D01E51410AD7A31028F75441B81E85ABD01E5141713D0A4725F754417B14AE27D11E5141295C8FE221F75441C3F5285CE21E5141713D0A571FF7544114AE47A1E91E5141333333E31DF754410AD7A380F51E5141713D0A771BF75441AE47E10A001F51419A99992919F75441295C8F12031F51417B14AE3723F7544129CE491D031F514148F4FB8F23F75441BF7CE6A8031F51411A0C816E23F7544163A16C19051F51419F5D818529F75441E9D71099161F5141E8404BAB25F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328701 - 3296692
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8198  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A77ED1E5141B81E852B3BF75441B81E856BEF1E514185EB51F83EF7544133333383F01E514185EB512841F75441D7A370DDF91E5141D7A370BD41F75441D7A3705DFE1E514148E17A8441F75441F6285CDF011F514185EB51B840F75441D7A3701D051F5141295C8F923FF754415C8FC275081F5141333333833DF75441333333530E1F51411F85EB7138F75441E17A140E1A1F514148E17A142EF754417B14AE671B1F514152B81E052DF7544148E17AD41A1F5141EC51B8FE2BF754415C8FC2251A1F51411F85EB812AF75441295C8F32191F51413333331329F754410AD7A3D0181F5141AE47E17A28F75441295C8F32181F51413D0AD7C327F75441EC51B80E171F51415C8FC24526F754419A9999C9101F51419A9999291FF754413D0AD763091F5141EC51B80E22F754417B14AE17021F5141EC51B8CE23F75441A4703D7AFB1E51410000004025F754413D0AD703F31E51418FC2F59826F7544148E17A34E91E51418FC2F52828F7544166666636E61E514114AE47A128F754411F85EB21E61E51413D0AD7A32BF75441B81E855BE71E51417B14AEC72EF75441A4703DCAEA1E51413D0AD74336F75441713D0A77ED1E5141B81E852B3BF75441
+</a>
+
+<b>
+01060000000100000001030000000100000034000000E9D71099161F5141E8404BAB25F754419A9999C9101F51419A9999291FF754417B14AEC7051F51418FC2F5A813F754413D0AD7D3EE1E5141D7A3706D19F75441000000E0DF1E5141C3F5280C1CF75441F6285C3FCA1E51411F85EBA11EF75441C3F5284CC61E5141AE47E11A1FF754419A999969BC1E5141CDCCCCEC20F75441295C8F32BD1E5141713D0AA722F75441CDCCCCECBE1E5141E17A142E22F7544166666656C01E5141C3F5286C2AF7544152B81E05BC1E514152B81E352BF75441C3F5285CBD1E51411F85EB012FF754411F85EBD1BA1E5141666666662FF754417B14AEB7BD1E51417B14AE0734F75441CDCCCCFCB81E51417B14AEE737F75441E17A144EBA1E5141D7A3704D39F75441C3F5289CBB1E5141D7A3709D3AF7544152B81E55BE1E51419A99993938F7544185EB5148BF1E5141D7A3707D37F754418FC2F5A8C01E5141713D0A3736F7544166666616C21E514152B81EE534F75441D7A3702DC41E5141A4703D6A33F7544100000070C81E5141E17A145E30F75441CDCCCCFCCB1E51416666664634F754410AD7A3B0CC1E51418FC2F51835F7544148E17A84CD1E51413333334336F7544148E17AB4CE1E5141B81E850B38F75441B81E851BD11E5141B81E85BB3BF754413D0AD773D31E51417B14AE0740F754415C8FC235D41E5141B81E856B41F754411F85EB11DB1E5141EC51B82E41F75441A3588F17DD1E5141033A59DF40F754418A225FE8D31E514199C4BE242EF754417FF0D926DD1E51419BF7549A2CF75441AC5BD010E61E5141E6A63A9F2AF7544132DFF326E61E51411FCD7CE62AF7544166666636E61E514114AE47A128F7544122D88E3DCE1E5141F5605A622CF754415C8FC275CF1E5141EC51B83E2AF754410AD7A310D01E51410AD7A31028F75441B81E85ABD01E5141713D0A4725F754417B14AE27D11E5141295C8FE221F75441C3F5285CE21E5141713D0A571FF7544114AE47A1E91E5141333333E31DF754410AD7A380F51E5141713D0A771BF75441AE47E10A001F51419A99992919F75441295C8F12031F51417B14AE3723F7544129CE491D031F514148F4FB8F23F75441BF7CE6A8031F51411A0C816E23F7544163A16C19051F51419F5D818529F75441E9D71099161F5141E8404BAB25F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335970 - 4343049
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1922  </desc>
+<a>
+01060000000100000001030000000200000053000000CDCCCCDC5A795041EC51B83E7A2B55411F85EB9150795041E17A14CE6F2B5541C3F528FC4F7950415C8FC2456E2B5541A4703DFA52795041000000106B2B554148E17A144E795041C3F5286C642B5541A4703DAA4C7950417B14AEA75E2B55417B14AE974579504152B81E35542B5541AE47E15A3E795041000000D0592B554114AE47813C795041295C8FB25C2B554148E17A943B79504148E17A945F2B554185EB51C83B7950410AD7A370632B55418FC2F5983C795041D7A3701D662B5541333333E33D795041D7A3701D692B5541F6285C4F4479504148E17A44752B5541295C8FE249795041666666367E2B55419A9999E94A795041CDCCCCAC7F2B5541E17A145E56795041C3F5282C8E2B5541EC51B8CE577950415C8FC245912B5541A4703D0A597950413D0AD7F3962B5541A4703DFA5C795041C3F528AC932B5541B81E85AB5E795041295C8F02962B55413D0AD7435F795041CDCCCC2C982B5541A4703D5A5E795041B81E85CB9A2B554152B81E355C795041333333939D2B5541295C8F025B79504152B81EC59F2B554114AE47115B795041295C8F62A22B5541E17A147E5B795041E17A14FEAE2B5541B81E855B5B7950415C8FC2C5BB2B55417B14AED760795041AE47E11ABF2B5541F6285C0F627950417B14AED7BF2B554148E17A646579504185EB51B8C22B55417B14AE4767795041B81E85CBC32B5541A4703D2A68795041B81E857BC32B55417B14AE8768795041F6285C6FC22B5541EC51B84E6A79504114AE4751BD2B55413D0AD7736B79504166666606BA2B5541295C8F126D795041CDCCCC5CB52B5541C3F5283C6D7950413D0AD703B52B5541B81E85AB6F7950411F85EBD1AF2B55419A99990971795041713D0AE7AC2B55417B14AEE77179504114AE4711AD2B55410AD7A32073795041E17A146EAC2B5541B81E85DB7A795041333333C3AD2B5541295C8F9284795041CDCCCCFCAE2B5541F6285CBF857950411F85EB31B02B5541666666B68679504114AE4771B02B55418FC2F57886795041295C8F22B22B554148E17A5489795041E17A14AEB22B5541A4703D4A9879504114AE4721B62B554148E17A549F7950419A999979B72B5541A4703D2AA6795041A4703D6AB82B55418FC2F548A7795041000000A0B82B5541D7A3700DA879504152B81E05B82B55411F85EB81AA795041D7A370CDB62B55410AD7A300AC79504185EB5108B72B5541EC51B8DEB079504185EB51C8B72B5541333333C3AF795041C3F528DCB62B554114AE4751A5795041B81E85CBAD2B554133333333A379504152B81EF5AB2B55410AD7A380A27950413D0AD773AB2B5541A4703D4A9E795041E17A14EEA82B554152B81E359B7950417B14AE17A72B55417B14AE8799795041295C8F02A62B5541295C8F3298795041A4703D4AA42B554114AE478192795041B81E858BA02B55418FC2F5F888795041000000009B2B55415C8FC2A586795041C3F5284C992B5541D7A3700D8679504148E17A54982B554114AE47B182795041A4703D5A972B5541666666A68079504185EB5158962B5541000000807B795041AE47E1FA8D2B554148E17AA4777950411F85EB31882B5541CDCCCCCC717950413D0AD793822B5541333333936D795041D7A370CD7E2B5541AE47E17A6B7950413D0AD7237E2B554148E17A146B795041A4703D4A7E2B5541666666366A795041D7A3709D7E2B55419A9999E967795041F6285C7F812B55410000000066795041E17A146E832B5541295C8FB2647950417B14AE27832B55415C8FC2856379504185EB5148822B5541713D0A075F7950419A9999297E2B5541CDCCCCDC5A795041EC51B83E7A2B554109000000666666E6767950410AD7A3609C2B5541F6285CFF74795041E17A142E9F2B5541CDCCCCFC6F795041C3F5281C982B5541EC51B87E6B7950415C8FC2E5912B55413D0AD7036D795041F6285C9F8F2B5541AE47E17A6D795041D7A370ED8E2B55411F85EB41727950417B14AE77952B5541D7A3707D777950411F85EB819B2B5541666666E6767950410AD7A3609C2B5541
+</a>
+
+<b>
+01060000000100000001030000000200000090000000CDCCCCDC5A795041EC51B83E7A2B55411F85EB9150795041E17A14CE6F2B5541C3F528FC4F7950415C8FC2456E2B5541A4703DFA52795041000000106B2B554148E17A144E795041C3F5286C642B5541A4703DAA4C7950417B14AEA75E2B55417B14AE974579504152B81E35542B5541AE47E15A3E795041000000D0592B554114AE47813C795041295C8FB25C2B554148E17A943B79504148E17A945F2B554185EB51C83B7950410AD7A370632B55418FC2F5983C795041D7A3701D662B5541333333E33D795041D7A3701D692B5541F6285C4F4479504148E17A44752B5541295C8FE249795041666666367E2B55419A9999E94A795041CDCCCCAC7F2B5541E17A145E56795041C3F5282C8E2B5541EC51B8CE577950415C8FC245912B5541A4703D0A597950413D0AD7F3962B5541A4703DFA5C795041C3F528AC932B5541B81E85AB5E795041295C8F02962B55413D0AD7435F795041CDCCCC2C982B5541A4703D5A5E795041B81E85CB9A2B554152B81E355C795041333333939D2B5541295C8F025B79504152B81EC59F2B554114AE47115B795041295C8F62A22B5541E17A147E5B795041E17A14FEAE2B5541B81E855B5B7950415C8FC2C5BB2B55417B14AED760795041AE47E11ABF2B5541F6285C0F627950417B14AED7BF2B554148E17A646579504185EB51B8C22B55417B14AE4767795041B81E85CBC32B5541A4703D2A68795041B81E857BC32B55417B14AE8768795041F6285C6FC22B5541EC51B84E6A79504114AE4751BD2B55413D0AD7736B79504166666606BA2B554149F793026C7950410E75966BB82B5541D6D295676C795041F14EE148B72B5541F9048EA86C7950415069E48DB62B554106E103DC6C795041B0E7C8F9B52B5541295C8F126D795041CDCCCC5CB52B5541C3F5283C6D7950413D0AD703B52B55418FC2F5E86C7950413D0AD7D3B42B5541FA5EE5B96C7950419B384CA3B42B55417CD960CB6B795041E9D649ADB32B55419439C0546A7950412DEEE42AB22B5541713D0AF769795041A4703DCAB12B5541B81E85FB687950411F85EB81B02B5541E0A72B6568795041B90AD76BAF2B5541295C8F22687950410AD7A3F0AE2B5541AC28506F6779504156D55A56AD2B554168E3920867795041F9D3306BAC2B55419A9999B96679504185EB51C8AB2B5541AE47E15A64795041E17A148EAC2B5541F6285CBF637950418FC2F5D8AA2B5541C62BD7E162795041FFCA6640A82B554111EA75E361795041E0054345A52B554127D984FD6079504123D36F93A22B55415C8FC2E560795041C3F5284CA22B55411D12CC8560795041F2984FC6A02B554114AE4735607950418EC2357F9F2B5541000000F05F7950415C8FC2659E2B5541666666265F7950410AD7A3609C2B55413F26EF8F5E795041718121369B2B55415F3B8A1D5F795041C26A80D4992B554179161E545F79504189326314992B55411F85EB116079504152B81ED5982B55411E20D95D61795041CEF5D1479B2B554163AC4B9461795041871029BB9B2B554131F404F663795041FD2CCBEAA02B55417559C62564795041092BC752A12B554145F03C7D64795041CFB385F9A12B5541FD9CC73C66795041FF641A4BA52B5541ABE5A2A767795041517FECFBA72B55411429052B68795041A1AF11F3A82B554185EB51086979504100000090AA2B55418FC2F5586A795041D7A3703DAC2B5541B81E85AB6B79504114AE4771AD2B5541B81E85AB6F7950411F85EBD1AF2B55419A99990971795041713D0AE7AC2B55417B14AEE77179504114AE4711AD2B55410AD7A32073795041E17A146EAC2B5541B81E85DB7A795041333333C3AD2B5541295C8F9284795041CDCCCCFCAE2B5541F6285CBF857950411F85EB31B02B5541666666B68679504114AE4771B02B55418FC2F57886795041295C8F22B22B554148E17A5489795041E17A14AEB22B5541A4703D4A9879504114AE4721B62B554148E17A549F7950419A999979B72B5541A4703D2AA6795041A4703D6AB82B55418FC2F548A7795041000000A0B82B5541D7A3700DA879504152B81E05B82B55411F85EB81AA795041D7A370CDB62B55410AD7A300AC79504185EB5108B72B5541EC51B8DEB079504185EB51C8B72B5541333333C3AF795041C3F528DCB62B554114AE4751A5795041B81E85CBAD2B554133333333A379504152B81EF5AB2B55410AD7A380A27950413D0AD773AB2B5541A4703D4A9E795041E17A14EEA82B554152B81E359B7950417B14AE17A72B55417B14AE8799795041295C8F02A62B5541295C8F3298795041A4703D4AA42B554114AE478192795041B81E858BA02B554125F54FFE8879504137091D039B2B55410D6574B288795041EC345FCC9A2B5541E42FE67588795041151A5CFB9B2B55412006BE48887950416515D38A9D2B554173C4E8278879504160A0F5689E2B55419008D451887950418A01F940A02B5541AB359D4C88795041BD564F8CA02B5541E17A140E887950413D0AD713A42B5541B8F13D0586795041D6E27EAAA32B55419C71D2F382795041592FCC1AA32B554131CDF4487F7950416BEC714DA22B55415C8FC2257D7950415C8FC2D5A12B554114AE47F17A7950417B14AE27A12B554139EFC3F67879504180CC3B4DA02B5541666666367679504152B81EF59E2B554114AE47917A795041CDCCCC9C982B55416D03A5AC7C795041394C8991992B5541F6285C7F80795041B81E853B9B2B55418A68AD10857950410BDF44959C2B55418AE76F6A8579504155CEEDAC9C2B5541F6285C0F88795041F6285C5F9D2B55410E3218668879504155E174949A2B55415C8FC2A586795041C3F5284C992B5541D7A3700D8679504148E17A54982B554114AE47B182795041A4703D5A972B5541666666A68079504185EB5158962B5541000000807B795041AE47E1FA8D2B554148E17AA4777950411F85EB31882B5541CDCCCCCC717950413D0AD793822B5541333333936D795041D7A370CD7E2B5541AE47E17A6B7950413D0AD7237E2B554148E17A146B795041A4703D4A7E2B5541666666366A795041D7A3709D7E2B55419A9999E967795041F6285C7F812B55410000000066795041E17A146E832B5541295C8FB2647950417B14AE27832B55415C8FC2856379504185EB5148822B5541713D0A075F7950419A9999297E2B5541CDCCCCDC5A795041EC51B83E7A2B554109000000666666E6767950410AD7A3609C2B5541F6285CFF74795041E17A142E9F2B5541CDCCCCFC6F795041C3F5281C982B5541EC51B87E6B7950415C8FC2E5912B55413D0AD7036D795041F6285C9F8F2B5541AE47E17A6D795041D7A370ED8E2B55411F85EB41727950417B14AE77952B5541D7A3707D777950411F85EB819B2B5541666666E6767950410AD7A3609C2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>343134 - 3109625
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -32746  </desc>
+<a>
+01060000000100000001030000000100000010000000F6285C0FA0ED5041CDCCCC3C4BAD5441D7A370FD5CED5041C3F5286C63AD5441713D0A475BED5041333333036EAD544148E17AB45AED5041CDCCCCCC73AD5441B81E85BB5BED5041A4703DEA76AD54410AD7A3C05EED50418FC2F5B87BAD5441295C8FF260ED504114AE47917DAD54413D0AD7B363ED504185EB51087DAD54419A99999976ED50416666663676AD5441666666C697ED50411F85EB416AAD5441A4703D0AA4ED5041E17A14AE64AD5441B81E859BB6ED5041333333A35EAD5441D7A370DDB7ED5041CDCCCC9C5DAD5441295C8F42B5ED504148E17AF44DAD54413D0AD7B3B3ED50417B14AE2744AD5441F6285C0FA0ED5041CDCCCC3C4BAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000000B6A9AC8B5ED5041D874271A51AD5441295C8F42B5ED504148E17AF44DAD54413D0AD7B3B3ED50417B14AE2744AD5441F6285C0FA0ED5041CDCCCC3C4BAD544179E67CBA96ED50417027369A4EAD54412A4A433493ED504105468CDF4FAD54413AEFBCCD96ED5041C1EA3E4C5CAD54411C239E479AED5041EB80591A5BAD54418CA164D4B2ED50415862391652AD54410B6A9AC8B5ED5041D874271A51AD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>343134 - 3491755
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -32746  </desc>
+<a>
+01060000000100000001030000000100000010000000F6285C0FA0ED5041CDCCCC3C4BAD5441D7A370FD5CED5041C3F5286C63AD5441713D0A475BED5041333333036EAD544148E17AB45AED5041CDCCCCCC73AD5441B81E85BB5BED5041A4703DEA76AD54410AD7A3C05EED50418FC2F5B87BAD5441295C8FF260ED504114AE47917DAD54413D0AD7B363ED504185EB51087DAD54419A99999976ED50416666663676AD5441666666C697ED50411F85EB416AAD5441A4703D0AA4ED5041E17A14AE64AD5441B81E859BB6ED5041333333A35EAD5441D7A370DDB7ED5041CDCCCC9C5DAD5441295C8F42B5ED504148E17AF44DAD54413D0AD7B3B3ED50417B14AE2744AD5441F6285C0FA0ED5041CDCCCC3C4BAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000000B6A9AC8B5ED5041D874271A51AD5441295C8F42B5ED504148E17AF44DAD54413D0AD7B3B3ED50417B14AE2744AD5441F6285C0FA0ED5041CDCCCC3C4BAD544179E67CBA96ED50417027369A4EAD54412A4A433493ED504105468CDF4FAD54413AEFBCCD96ED5041C1EA3E4C5CAD54411C239E479AED5041EB80591A5BAD54418CA164D4B2ED50415862391652AD54410B6A9AC8B5ED5041D874271A51AD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354622 - 384861
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1046  </desc>
+<a>
+0106000000050000000103000000030000005D000000AE47E1EA4DC75041E17A14BE5BD95441AE47E1AA4CC75041B81E851B64D95441E17A147E49C7504152B81E6569D95441C3F5289C46C750410AD7A3E06ED95441AE47E1EA43C750413333330378D95441713D0A5743C75041B81E859B7FD95441F6285C6F43C75041666666D688D95441B81E85FB43C750415C8FC2458ED95441295C8FB26CC7504185EB516889D9544152B81ED59BC7504148E17A5483D95441AE47E16AA5C75041F6285CAF82D954415C8FC225A7C750416666665681D954415C8FC225A7C75041666666967DD95441CDCCCCCCA5C750413333334374D954410AD7A320A0C75041CDCCCC4C78D95441AE47E19A99C75041EC51B88E70D95441B81E859B93C7504152B81E4575D95441000000D088C75041000000706CD954410AD7A3107DC75041000000905DD95441A4703DAA79C7504185EB51E853D954413D0AD7338AC75041F6285CAF19D954413D0AD7A3A3C750410AD7A37013D9544185EB51D8BBC75041713D0A771ED9544100000020CAC75041B81E85BB30D9544114AE47D1CDC75041C3F5280C28D954417B14AE47CCC750410AD7A37023D95441000000C0C6C75041EC51B87E21D9544185EB5198C8C75041E17A143E1FD9544114AE47A1D2C750415C8FC2C524D954413D0AD723D3C75041000000D02AD954417B14AEF7CFC750413D0AD7732CD95441713D0AB7CDC750413333332330D9544185EB51F8CBC750417B14AE1733D9544152B81EA5CCC75041A4703D6A36D9544148E17A64D5C7504185EB517831D954413D0AD7F3D7C75041333333C339D954411F85EB81DEC750419A9999F935D954417B14AE87DFC750411F85EBC12CD9544185EB51D8DBC750419A9999592CD9544185EB5128D8C75041E17A14AE2DD95441EC51B87ED5C75041000000D02AD95441E17A14EED6C75041D7A3709D26D95441AE47E1EADEC75041295C8F6225D95441CDCCCCDCE0C75041AE47E18A23D9544185EB5178E5C75041C3F5281C22D95441CDCCCCCCE6C75041295C8F4224D954413D0AD7C3EDC750416666665623D95441C3F5280CEDC75041F6285CCF1DD9544185EB5168EBC7504148E17AC417D95441AE47E15AEDC75041713D0A5712D95441B81E859BEFC7504148E17A240ED95441B81E859BEFC75041EC51B89E04D9544133333373F1C750418FC2F518FBD85441000000D0EFC7504114AE47E1F1D85441EC51B86EECC750418FC2F598F2D854413D0AD713EAC75041CDCCCC8CF0D8544148E17A84E7C7504152B81EE5E9D85441AE47E18AE8C7504148E17AC4E8D85441713D0AB7EBC750418FC2F5D8E7D85441AE47E10AEAC750410AD7A360DFD85441CDCCCCACE5C750415C8FC2B5DDD85441295C8F92E5C75041AE47E17ADCD85441F6285CBFD7C75041295C8F92D3D85441295C8F22D7C750410AD7A3A0D1D8544148E17A64D5C75041CDCCCCDCCED8544133333313CCC7504166666606C9D85441CDCCCCCCC8C75041713D0A47CBD854417B14AE57B5C7504185EB5128C6D85441F6285CEFB4C7504152B81EB5BFD854418FC2F5C8B2C7504166666666BFD85441B81E852BB2C75041666666D6CDD85441333333B3B7C750418FC2F538CDD85441713D0AE7B7C75041CDCCCCDCCED85441713D0A17B3C75041E17A14AECFD854413D0AD753B0C75041C3F5283CD6D8544148E17AF4A8C750419A999979E0D85441B81E85EB9EC7504148E17A74ECD854418FC2F5E899C750413D0AD713F3D854410AD7A33094C75041E17A146EFAD85441666666C68EC75041D7A370DD00D9544185EB51488AC75041000000A003D9544114AE474184C75041000000B006D954418FC2F5887EC750411F85EB7109D954411F85EB7175C750410AD7A3100FD9544152B81E2567C75041EC51B8BE17D9544148E17A6456C750415C8FC2F521D954413D0AD7F34AC75041E17A14CE28D95441EC51B8EE49C750415C8FC2752BD95441AE47E12A4AC750411F85EB112ED95441AE47E16A4BC75041CDCCCC0C36D95441C3F528DC4CC750413D0AD7B343D954410AD7A3A04DC750418FC2F53852D95441AE47E1EA4DC75041E17A14BE5BD954410500000085EB518866C750413D0AD7B328D95441666666F667C750411F85EB0129D954410AD7A31068C7504148E17AA42AD95441295C8FA266C75041EC51B8BE2AD9544185EB518866C750413D0AD7B328D9544105000000EC51B82E64C75041C3F5281C29D954417B14AE9764C75041713D0A272BD95441D7A3705D63C7504114AE47412BD9544152B81EF562C75041C3F5281C29D95441EC51B82E64C75041C3F5281C29D954410103000000040000006D000000AE47E1EA6BC750417B14AE079DD95441C3F5281C67C75041333333839DD954410AD7A3A066C750413D0AD7F399D954419A9999B96BC750416666661699D95441AE47E1EA6BC750410AD7A3A09AD954415C8FC2E573C75041A4703DAA99D954411F85EB1177C75041B81E859B98D954415C8FC2A577C750413333334397D95441E17A147E76C75041A4703D2A97D954413333330376C7504152B81E2595D95441E17A14BE77C75041333333C394D95441295C8F7276C7504152B81EA58BD95441CDCCCCBC2CC750410AD7A3E094D954419A9999B92AC75041F6285CAFA5D95441B81E85EB29C75041295C8F62AFD95441F6285CEF2AC75041A4703DDAAFD95441713D0AC72AC75041E17A142EB1D95441713D0A8729C75041A4703DBAB1D95441B81E855B28C75041666666A6BBD95441F6285C1F28C75041666666B6BFD95441333333432CC7504166666636C2D95441713D0A0731C75041E17A148EC4D95441B81E85DB34C75041295C8F52C4D95441B81E85EB38C75041A4703D8AC3D95441B81E859B3DC7504166666636C2D95441F6285CCF40C75041666666F6C0D95441713D0A1744C75041A4703D8ABED95441F6285CBF46C75041295C8FD2BCD95441713D0A6749C75041A4703D1ABBD95441713D0A274DC75041E17A14EEB9D95441713D0AA74FC75041295C8F22B8D95441B81E853B52C75041A4703D6AB6D954413333332356C75041E17A149EB4D954413333339359C75041666666E6B2D95441333333635CC75041A4703DAAB2D95441713D0A6762C7504166666696B2D95441F6285CCF68C75041E17A14BEB2D95441713D0AE76EC75041666666E6B2D95441F6285C3F76C75041666666D6B3D95441B81E852B76C75041A4703D4AB8D95441713D0A8774C75041E17A147EC0D95441F6285C4F75C75041A4703D2AC4D95441333333937CC75041A4703D0AC1D95441713D0A0781C75041666666E6BCD95441713D0AA786C75041E17A146EB7D95441F6285CEF89C75041E17A141EB7D95441713D0AF78BC75041E17A14FEB8D95441713D0A678FC75041A4703DEAB8D95441713D0A678FC75041A4703DCAB5D95441713D0AD792C75041E17A14CEB1D95441333333F394C75041295C8FC2AED95441F6285C2F95C75041295C8FF2ABD95441B81E852B99C75041E17A145EA9D95441713D0AD79CC75041A4703D4AA9D95441333333A39EC75041295C8FF2A6D95441CDCCCCCC9BC75041CDCCCCCCA2D95441CDCCCC4C9EC750413D0AD7339BD954411F85EB91A1C7504152B81EA597D954410AD7A320AAC750413D0AD7F394D95441B81E852BA8C75041295C8F7285D954413D0AD713A3C750413333333386D954410AD7A3D09FC750417B14AE9786D95441713D0AD79FC750410AD7A3E087D954410AD7A3A09DC750410AD7A3A090D9544185EB51489CC750416666661699D95441CDCCCC8C9AC75041F6285C2F9ED95441AE47E1AA97C750411F85EB51A2D95441713D0A9794C750417B14AEC7A5D954413333332392C75041295C8FE2A7D95441B81E858B8EC75041E17A143EABD95441F6285CFF88C75041295C8FC2AED954413333336384C75041A4703D6AB1D95441713D0A877EC75041E17A14FEB3D95441F6285CFF79C75041295C8FB2B4D95441B81E85CB76C75041E17A149EB4D95441B81E851B77C75041295C8FC2B3D95441713D0A077CC75041E17A14AEB3D95441713D0AC77FC75041295C8F82B2D95441B81E85CB85C75041666666C6AFD95441713D0A478CC75041295C8F52ABD95441713D0A9791C75041E17A14DEA6D95441AE47E16A96C75041F6285CEFA1D95441AE47E1EA98C750413D0AD7B39DD9544148E17A749AC75041333333C399D954410AD7A3609CC75041F6285C2F8FD954418FC2F5A89DC75041CDCCCCDC86D95441CDCCCC8C86C7504114AE47B189D954415C8FC2A586C75041333333038CD954415C8FC2E587C750413D0AD7338CD9544185EB514888C750413D0AD7F38FD95441E17A14BE86C750416666665690D954411F85EB1186C75041B81E855B8DD95441713D0A177EC75041E17A14FE8ED954415C8FC2E57DC7504152B81EA58DD954419A9999B984C75041333333038CD95441D7A370FD83C750417B14AE078AD95441A4703D9A78C750411F85EB718BD954415C8FC2E578C75041F6285C6F90D95441333333C379C750418FC2F5F896D9544185EB51887AC750413D0AD7739CD954419A9999F97BC750418FC2F5389DD954411F85EB5182C75041333333439CD95441E17A14FE82C75041CDCCCCCCA2D9544148E17AF479C750413D0AD7F3A3D95441713D0A1779C750413D0AD733A0D954411F85EB5178C750418FC2F5B89AD954410AD7A3E076C75041E17A143E9AD95441C3F5281C6CC75041E17A147E9BD95441AE47E1EA6BC750417B14AE079DD9544105000000713D0A8738C750418FC2F538A3D95441333333F338C75041CDCCCC7CA4D954419A99993934C750411F85EB01A6D954418FC2F5F833C75041295C8F92A4D95441713D0A8738C750418FC2F538A3D9544105000000EC51B86E37C7504185EB51989FD954419A99999937C75041C3F528DCA0D954416666663633C75041B81E854BA2D9544148E17AB432C750411F85EBF1A0D95441EC51B86E37C7504185EB51989FD954410B0000000AD7A31042C7504114AE4731AED95441713D0A073FC75041E17A14DEAED9544148E17A443EC7504114AE4731AED95441C3F5281C3FC75041333333E3A9D954415C8FC27540C7504148E17A14A5D954411F85EBE140C750415C8FC285A0D95441E17A14AE44C7504100000070A0D954410AD7A37045C750415C8FC295A5D95441A4703DCA46C75041E17A14CEA9D95441CDCCCCDC45C75041D7A370EDACD954410AD7A31042C7504114AE4731AED95441010300000001000000240000007B14AE27F8C6504152B81E259CD95441A4703D6AEEC650417B14AE079DD954417B14AE37F1C65041EC51B88EA3D95441E17A14AEF4C65041CDCCCCFCA9D95441AE47E1DAEDC650411F85EB91ABD95441C3F528ECE7C65041B81E854BA0D9544152B81ED5E6C650410AD7A3B0A0D954418FC2F5E8E8C650410AD7A380A8D95441CDCCCCFCEAC650417B14AE97B2D95441713D0AF7ECC650411F85EB91B4D95441713D0A87F0C6504133333373B6D95441E17A14AEF4C65041000000A0B8D95441C3F5285CF9C65041AE47E11ABBD95441CDCCCC2CFEC65041A4703D2ABED954418FC2F5A803C75041A4703D1AC1D954410AD7A3700AC75041D7A370CDC3D95441713D0AB712C7504166666696C6D954413333334318C75041E17A149EC8D95441B81E85DB1BC75041E17A143EC9D95441333333231FC75041295C8F12C8D95441333333831EC75041295C8F92C5D95441F6285C2F1DC75041E17A147EC0D95441F6285C5F1FC75041295C8FC2BDD954413333334322C7504166666686BDD95441B81E856B22C75041A4703DCABAD954413333336325C75041295C8FF2BAD954413333336325C7504166666626B9D95441B81E851B27C75041A4703DEAB8D95441F6285CCF27C75041E17A14CEB1D95441B81E851B27C7504166666606B1D954413333334327C75041E17A149EAFD95441333333E327C75041A4703D3AAFD95441E17A14FE28C750418FC2F5F8A5D95441E17A140E2BC7504152B81E2595D954419A9999E928C750413D0AD75395D954417B14AE27F8C6504152B81E259CD954410103000000020000003E000000AE47E1AAE3C650417B14AE27DAD95441B81E851BE9C650411F85EB51DDD95441C3F528BCEFC6504185EB51C8E0D95441A4703D2AF6C65041666666A6E3D954413D0AD7E3FCC65041A4703D8AE4D9544114AE478104C75041000000F0E4D954418FC2F5D809C75041CDCCCCBCE4D95441F6285CBF0FC75041295C8F42E3D95441B81E85BB22C75041295C8FA2DDD95441F6285C9F29C75041E17A144EDAD954415C8FC26530C75041D7A3703DD8D954415C8FC26530C7504166666606D4D954417B14AE6739C75041A4703D4AD2D95441295C8F5239C75041F6285C3FD7D95441C3F5280C46C750411F85EB91D8D954411F85EB3152C75041B81E853BD9D95441EC51B8FE55C7504148E17A04D5D954419A9999C95AC75041E17A143ECED9544152B81E7564C75041CDCCCCDCC9D95441295C8F2263C75041CDCCCC6CC2D95441B81E851B63C7504166666656BBD954413333335362C75041A4703D9AB3D95441713D0A775CC75041A4703D9AB3D95441333333A358C75041A4703DDAB4D95441333333B352C75041295C8F22B8D95441F6285C8F4EC75041295C8FF2BAD95441B81E85BB4AC75041295C8FE2BBD95441713D0AE746C75041A4703D3ABED95441713D0A7743C7504166666646C1D95441F6285CFF3DC75041666666C6C3D95441F6285CFF38C75041295C8FF2C4D954413333335335C75041E17A142EC5D95441713D0A772FC75041E17A146EC6D95441F6285CDF2BC75041E17A14AEC7D95441B81E850B2DC75041666666E6CBD95441713D0A7725C75041295C8F52CED954413333332324C75041666666F6CAD95441713D0A871FC75041A4703D5ACBD95441F6285C8F1CC75041A4703D0ACBD95441F6285C2F18C75041295C8FA2C9D95441713D0A7711C7504166666636C7D9544148E17A240AC750417B14AE97C4D95441D7A3709D03C75041333333D3C1D954419A999959FDC65041CDCCCC9CBED954410AD7A370F8C65041EC51B87EBBD9544114AE47B1F3C65041C3F528ECB8D954415C8FC2A5EEC650419A999959B6D954418FC2F548EBC650418FC2F578B4D95441F6285CAFE8C650411F85EB41B6D9544114AE4771E0C65041F6285CBFB7D9544114AE47C1DBC65041713D0A87C1D954418FC2F5E8D6C650419A9999B9CAD954410AD7A350D6C65041295C8F92CFD95441A4703D6AD6C650413D0AD773D1D95441295C8F52D4C65041CDCCCC7CD3D9544185EB5138D6C65041C3F528CCD4D95441333333E3D8C650411F85EBF1D1D9544100000010DBC65041CDCCCCECD3D9544114AE4791DAC65041F6285C4FD5D95441B81E85EBDEC6504100000060D8D954410AD7A380E0C6504185EB51C8D7D95441AE47E1AAE3C650417B14AE27DAD9544105000000F6285CCFEEC65041AE47E17AC6D9544185EB5108EFC65041CDCCCC8CC9D95441EC51B8BEECC65041E17A149EC9D95441CDCCCCACECC65041CDCCCC6CC6D95441F6285CCFEEC65041AE47E17AC6D9544101030000000200000027010000713D0A070DC7504148E17A1495D95441C3F5289C0CC75041AE47E11A93D95441AE47E17A0EC7504114AE47B192D95441666666E60EC75041CDCCCCAC94D954418FC2F50828C750411F85EBB191D9544114AE47612AC75041F6285C5F91D95441333333C329C75041666666D68DD95441E17A14BE2CC75041E17A14BE8DD954410AD7A3F02CC75041B81E852B91D95441295C8FC241C75041AE47E18A8ED954419A9999F93FC7504152B81E6582D954419A99993941C750411F85EB517FD95441E17A14FE41C750416666665677D954415C8FC26544C750417B14AE876DD9544148E17AB446C750413333330369D95441F6285CAF49C75041B81E85DB62D95441E17A14FE4BC75041B81E855B5BD95441CDCCCCCC4BC750418FC2F53852D95441F6285CEF4AC75041F6285C2F44D9544185EB51C849C75041F6285C6F36D95441C3F528DC47C75041333333432ED95441295C8F1247C75041713D0A272BD95441F6285C7F43C75041713D0A1728D9544114AE47B139C750418FC2F55821D95441C3F5289C3AC7504152B81E0520D954417B14AED740C75041666666E623D95441295C8F1247C7504152B81E8529D9544114AE47914BC7504114AE471127D954410AD7A33056C750411F85EBA120D954415C8FC20566C750411F85EB2117D95441E17A141E74C750417B14AEA70ED954411F85EBF17EC75041E17A141E08D9544185EB51F884C75041E17A140E05D95441A4703DBA87C750418FC2F5E802D9544152B81EC589C7504148E17A9401D95441CDCCCC8C8DC750416666662600D95441AE47E12A93C75041B81E85EBF9D854411F85EB3199C7504114AE4771F1D8544148E17A049FC7504166666616EAD85441713D0A57A8C7504114AE47A1DED85441D7A3704DAFC7504100000050D5D85441C3F528BCB0C75041A4703D9AD0D85441E17A148EB1C75041EC51B87EC3D85441B81E85ABA9C750419A9999B9C4D85441AE47E17AA1C75041E17A140EC6D85441C3F528AC98C75041000000E0C6D854418FC2F59888C750410AD7A320C9D85441295C8FD26BC750415C8FC295CBD854418FC2F5685EC750418FC2F518CCD854419A9999B949C75041EC51B81ECDD8544148E17AF41BC750415C8FC235D5D85441CDCCCC3CECC6504152B81E75DBD85441A4703DAAC2C650419A999999E1D8544133333303ABC650411F85EB91E4D85441295C8FB2AEC65041AE47E1BAEFD85441B81E85DBB2C65041A4703D7A06D95441B81E850BB5C65041A4703DBA20D954418FC2F588B1C650415C8FC23521D95441AE47E1BAB1C650410AD7A3A024D95441B81E852BB8C65041295C8F0224D954411F85EBF1BBC6504148E17A7423D95441B81E85FBBFC65041295C8F9220D954419A9999E9C2C65041C3F528CC1ED95441B81E85EBC0C65041A4703D6A16D9544100000080BFC650410AD7A3B016D95441E17A142EBFC6504152B81EB512D9544152B81EC5C2C65041C3F5286C12D954419A999929C3C65041EC51B81E16D9544148E17AB4C1C65041A4703D3A16D95441B81E857BC3C65041C3F5288C1ED95441F6285C5FD4C65041D7A3703D13D95441295C8F32D3C65041B81E856B13D954415C8FC2C5D2C6504185EB51B80FD95441295C8F72DBC65041EC51B85E0ED954419A999979DDC65041AE47E1DA11D95441AE47E10AD6C65041E17A14FE12D9544133333393C3C65041A4703D2A1FD95441B81E85ABBAC65041295C8F4225D95441F6285CCFB1C65041295C8F0226D95441AE47E1DAB1C65041AE47E1CA26D95441E17A14DEB2C65041EC51B84E33D95441C3F5288CB3C65041713D0A9743D9544166666696B3C650411F85EBF150D9544100000050B3C650415C8FC2355ED95441B81E852BB3C6504148E17A046DD954411F85EB61B3C650418FC2F51881D95441AE47E11AB4C65041000000408AD954415C8FC255B6C65041AE47E1CA94D95441713D0A47BAC65041E17A145E9FD95441F6285C1FBFC65041A4703DEA9FD95441333333D3BAC65041666666C691D95441333333F3D1C65041666666D695D95441F6285CCFD2C65041295C8F429DD9544133333373D9C65041295C8F129BD95441713D0A97DDC65041E17A144E96D95441B81E855BE1C65041333333C38FD9544185EB5188E4C65041B81E85DB85D9544133333343E6C65041666666967DD954411F85EBD1E4C6504152B81E657DD954410AD7A3A0E4C65041333333837AD954419A999979E3C65041333333837AD954411F85EB91E3C650411F85EB1179D9544133333303E5C650411F85EB1179D954415C8FC265E5C65041666666D674D954415C8FC265E5C65041A4703DAA67D9544148E17AF4E3C65041B81E859B66D9544148E17AF4E3C6504152B81E6564D954415C8FC265E5C650410AD7A3A063D95441F6285CAFE5C65041B81E855B56D95441E17A143EE4C65041CDCCCC4C55D95441CDCCCC0CE4C65041F6285C2F53D95441E17A147EE5C650413333338352D954411F85EB11E6C650413D0AD7F344D95441713D0A57E4C6504152B81EE543D95441F6285C6FE4C650417B14AEC741D954410AD7A3E0E5C650413D0AD73341D954411F85EB11E6C65041F6285CEF33D95441F6285C6FE4C650413333334333D95441F6285C6FE4C65041333333C330D95441AE47E12AE6C650410AD7A36030D9544148E17A74E6C65041666666962DD954419A999979E8C65041666666D629D95441C3F5285CEDC65041CDCCCCEC27D9544114AE47A1EDC6504185EB51C829D954410AD7A3A0E9C65041666666562CD95441E17A14FEE7C65041E17A14FE2FD95441713D0A17E8C650417B14AEC73CD9544133333383E7C65041CDCCCC4C50D954411F85EB51E7C650416666665668D954410AD7A320E7C650410AD7A3A072D95441B81E859BE7C650418FC2F57876D9544148E17AF4E8C65041F6285CEF79D95441E17A14BEEBC65041F6285C2F7BD95441CDCCCC8CF0C65041333333837AD954419A9999B9F3C650410AD7A3E078D95441E17A147EF4C650413D0AD7F376D95441C3F5281CF4C6504152B81EA574D954415C8FC2E5F1C650417B14AE8772D95441CDCCCCCCF1C65041A4703D6A70D954410AD7A3A0F3C650410AD7A3E06ED954410AD7A3A0F3C65041B81E85DB6CD954415C8FC2E5F1C65041333333836BD954415C8FC2E5F1C65041CDCCCC4C69D954419A9999B9F3C6504152B81E2568D954410AD7A3A0F3C650410AD7A32066D95441F6285C2FF2C65041F6285CAF64D95441E17A14FEF1C65041F6285C2F62D9544185EB5188F3C650410AD7A32061D95441AE47E1EAF3C65041333333035FD95441F6285C2FF2C650411F85EB915DD95441713D0A17F2C65041333333435BD954410AD7A3A0F3C650413D0AD7335AD954410AD7A3A0F3C65041B81E859B57D95441F6285C2FF2C650411F85EB1156D95441F6285C2FF2C65041333333C353D954410AD7A3E0F4C650417B14AE0752D9544133333343F5C6504152B81E653CD954415C8FC2A5F5C6504152B81E252CD9544148E17A34F4C650411F85EB512AD9544133333383F1C650413333334329D95441F6285C2FEEC65041C3F528AC29D95441C3F528ECEDC65041666666C627D95441E17A14BEF5C650417B14AE4726D954413D0AD7B3FEC6504152B81E4524D95441F6285C1FFFC650418FC2F5F825D954419A999939FBC650413D0AD7F326D9544185EB5188F8C650416666669628D954411F85EB91F7C65041B81E85DB2BD954411F85EB91F7C65041CDCCCC4C3CD9544185EB5148F7C65041B81E85DB53D9544148E17AB4F6C65041B81E85DB71D9544148E17AB4F6C6504152B81EE575D95441C3F528DCF7C650418FC2F5B877D954410AD7A3E0F9C650416666669678D95441F6285CAFFEC650413333330378D9544148E17A7404C75041333333C376D954415C8FC2E505C75041A4703D6A75D954411F85EB9106C750413D0AD73373D954410AD7A3E003C75041E17A143E72D954410AD7A3E003C750417B14AE0770D95441E17A14FE05C75041B81E855B6FD9544185EB514806C7504152B81EE561D954410AD7A3E003C75041666666D660D954410AD7A3E003C750410AD7A3A05ED95441F6285C2F06C750413D0AD7F35DD954410AD7A36006C750416666669650D954419A9999F903C750410AD7A3A04FD954411F85EB1104C75041A4703D6A4DD954419A99997906C750410AD7A3204DD954411F85EB9106C750417B14AE473FD95441C3F5285C04C75041B81E859B3ED954413333334304C7504152B81E653CD95441AE47E1AA06C750418FC2F5B83BD95441C3F528DC06C750417B14AE0734D9544148E17AF406C750411F85EB112ED95441C3F5285C04C75041B81E851B2DD95441C3F5285C04C75041E17A14FE2AD9544148E17AF406C75041333333832AD95441E17A14FE05C750417B14AE8727D95441A4703DCA03C750413D0AD7B325D95441D7A3709DFFC650410AD7A3E025D95441AE47E12AFFC65041A4703D2A24D9544148E17A7404C750410AD7A3E023D95441E17A143E07C750410AD7A32025D9544185EB51C808C750417B14AEC728D954419A9999F908C75041CDCCCC8C33D95441F6285CAF08C750413D0AD7333CD95441713D0A9708C750418FC2F57844D95441E17A14BE09C75041A4703D2A47D954415C8FC2250CC750413D0AD7B348D9544148E17AC413C75041B81E856B49D95441C3F528BC13C75041666666264BD954415C8FC2A50EC750417B14AE874AD95441AE47E16A0AC75041666666964BD954415C8FC26508C750410AD7A3604ED95441CDCCCC4C08C750418FC2F5F855D95441C3F5281C08C75041F6285CAF64D95441AE47E1EA07C750418FC2F57871D954415C8FC2A509C750411F85EB1174D95441AE47E1EA0CC750410AD7A32075D954411F85EBD111C75041B81E855B74D95441E17A147E17C750413D0AD73373D9544185EB51081EC750413D0AD7F371D954419A9999F921C75041CDCCCCCC70D95441F6285C6F25C750417B14AE876DD95441F6285CAF26C750413D0AD7736AD95441F6285CAF26C75041CDCCCC4C69D95441E17A14FE23C750411F85EBD168D95441E17A14FE23C75041A4703D6A66D95441713D0A9726C750413D0AD77365D954411F85EB1127C750413D0AD7B357D954410AD7A36024C750411F85EB5157D95441F6285C2F24C750418FC2F5B854D95441AE47E12A27C75041E17A143E54D954413333334327C750410AD7A32052D954415C8FC26526C75041E17A143E4FD95441CDCCCC0C25C750413D0AD7B34DD954410AD7A32023C750417B14AE074DD95441713D0A4714C75041713D0A374BD954411F85EB5114C750418FC2F57849D95441AE47E16A1EC75041F6285C6F4AD95441C3F5281C26C75041B81E851B4BD9544185EB510828C750410AD7A3A04AD9544185EB514829C750416666661649D95441F6285C2F29C75041F6285CEF47D95441C3F5285C27C750411F85EB1147D95441C3F5285C27C75041F6285C6F45D954411F85EB9129C750413D0AD7F344D954410AD7A36029C750416666665640D954411F85EB1127C750410AD7A3603FD954411F85EB1127C75041333333433DD95441AE47E1AA29C750417B14AEC73CD95441333333C329C750413333334338D95441F6285CAF2BC75041A4703D2A38D95441713D0A972BC750418FC2F53843D9544148E17A342BC750418FC2F5784ED954410AD7A36029C75041B81E859B52D954415C8FC2E528C75041B81E85DB5DD95441CDCCCCCC28C75041B81E855B65D954415C8FC2E528C75041B81E855B6AD95441E17A14BE27C75041F6285C6F6DD954411F85EBD125C750418FC2F53870D95441AE47E16A23C75041CDCCCC0C72D95441AE47E16A23C75041A4703D2A79D95441AE47E16A23C750410AD7A3A07CD95441E17A147E21C750411F85EBD17CD95441713D0A5720C75041CDCCCC0C7CD95441F6285C6F20C75041F6285CAF78D95441E17A143E20C75041F6285CAF73D95441AE47E1EA1BC750413D0AD77374D95441AE47E1EA1BC75041CDCCCC0C77D954411F85EB911AC75041CDCCCC0C77D954419A9999791AC750413D0AD77374D954413333334318C75041F6285CEF74D95441C3F5285C18C7504152B81EE57AD954411F85EBD116C75041CDCCCCCC7AD954411F85EBD116C750410AD7A32075D954410AD7A3E012C750417B14AE4776D95441CDCCCC8C13C75041B81E859B7AD954415C8FC22511C750417B14AE477BD95441F6285C2F10C75041B81E85DB76D9544185EB518807C75041E17A147E78D95441CDCCCCCCFBC650413D0AD7B37AD954415C8FC2E5F1C65041F6285C6F7CD9544148E17A34EAC650410AD7A3E07DD95441E17A14FEE7C6504152B81EE57FD95441AE47E16AE7C650413D0AD77383D9544133333343E6C65041CDCCCC8C88D95441F6285C6FE4C65041F6285CEF8DD95441CDCCCCCCE2C650413333334392D95441F6285CEFE1C650416666665695D9544185EB5148E3C650410AD7A32098D95441713D0A77E6C650410AD7A3109AD95441C3F5288CF7C65041AE47E12A98D95441713D0A070DC7504148E17A1495D9544106000000713D0A670EC75041000000100BD95441A4703DCA0EC750413333336307D9544152B81E4512C750411F85EB3107D95441B81E850B13C7504185EB51180AD95441295C8FE211C75041A4703D6A0CD95441713D0A670EC75041000000100BD95441
+</a>
+
+<b>
+0106000000010000000103000000040000004B000000CDCCCCBC2CC750410AD7A3E094D954419A9999B92AC75041F6285CAFA5D95441B81E85EB29C75041295C8F62AFD95441F6285CEF2AC75041A4703DDAAFD95441713D0AC72AC75041E17A142EB1D95441713D0A8729C75041A4703DBAB1D95441B81E855B28C75041666666A6BBD95441F6285C1F28C75041666666B6BFD95441333333432CC7504166666636C2D95441713D0A0731C75041E17A148EC4D95441B81E85DB34C75041295C8F52C4D95441B81E85EB38C75041A4703D8AC3D95441B81E859B3DC7504166666636C2D95441F6285CCF40C75041666666F6C0D95441713D0A1744C75041A4703D8ABED95441F6285CBF46C75041295C8FD2BCD95441713D0A6749C75041A4703D1ABBD95441713D0A274DC75041E17A14EEB9D95441713D0AA74FC75041295C8F22B8D95441B81E853B52C75041A4703D6AB6D954413333332356C75041E17A149EB4D954413333339359C75041666666E6B2D95441333333635CC75041A4703DAAB2D95441713D0A6762C7504166666696B2D95441F6285CCF68C75041E17A14BEB2D95441713D0AE76EC75041666666E6B2D95441F6285C3F76C75041666666D6B3D954410F93553D76C75041D6FAC74AB4D95441868D083C76C75041129B8495B4D954418D20B03B76C75041AFCD5CA9B4D95441E1D3BD3A76C75041334DBDDFB4D95441338705997AC75041F15A916BB5D954410365EEDE79C750415077F9B0B8D954411BF6F93B7AC75041BE88B281BED954410365EEDE79C75041ACA71AC7C1D954415978CF197AC750411A66B01AC2D95441333333937CC75041A4703D0AC1D95441713D0A0781C75041666666E6BCD95441713D0AA786C75041E17A146EB7D95441F6285CEF89C75041E17A141EB7D95441713D0AF78BC75041E17A14FEB8D95441713D0A678FC75041A4703DEAB8D95441713D0A678FC75041A4703DCAB5D95441713D0AD792C75041E17A14CEB1D95441333333F394C75041295C8FC2AED95441F6285C2F95C75041295C8FF2ABD95441B81E852B99C75041E17A145EA9D95441713D0AD79CC75041A4703D4AA9D95441333333A39EC75041295C8FF2A6D95441CDCCCCCC9BC75041CDCCCCCCA2D95441CDCCCC4C9EC750413D0AD7339BD95441A97937199FC75041156D73559AD95441F7359A309CC75041E3B53DEE99D95441CDCCCC8C9AC75041F6285C2F9ED95441AE47E1AA97C750411F85EB51A2D95441713D0A9794C750417B14AEC7A5D954413333332392C75041295C8FE2A7D95441B81E858B8EC75041E17A143EABD95441F6285CFF88C75041295C8FC2AED954413333336384C75041A4703D6AB1D95441713D0A877EC75041E17A14FEB3D95441F6285CFF79C75041295C8FB2B4D95441C4AEAF5A79C75041574572AEB4D95441B81E85CB76C75041E17A149EB4D9544194FAEEE676C75041A379DB52B4D95441B81E851B77C75041295C8FC2B3D95441713D0A077CC75041E17A14AEB3D954416BC7034082C75041363CDE62B1D95441F2176BCD83C750411AE6D280B0D954414574BAFE88C7504115E21137ADD954412B8139F687C7504151D73D53ABD954413AA3186584C75041A680746DA5D95441A244C94168C750414DEEFD95A8D9544148D241A364C750417A5031E08DD95441CDCCCCBC2CC750410AD7A3E094D9544105000000713D0A8738C750418FC2F538A3D95441333333F338C75041CDCCCC7CA4D954419A99993934C750411F85EB01A6D954418FC2F5F833C75041295C8F92A4D95441713D0A8738C750418FC2F538A3D9544105000000EC51B86E37C7504185EB51989FD954419A99999937C75041C3F528DCA0D954416666663633C75041B81E854BA2D9544148E17AB432C750411F85EBF1A0D95441EC51B86E37C7504185EB51989FD954410B0000000AD7A31042C7504114AE4731AED95441713D0A073FC75041E17A14DEAED9544148E17A443EC7504114AE4731AED95441C3F5281C3FC75041333333E3A9D954415C8FC27540C7504148E17A14A5D954411F85EBE140C750415C8FC285A0D95441E17A14AE44C7504100000070A0D954410AD7A37045C750415C8FC295A5D95441A4703DCA46C75041E17A14CEA9D95441CDCCCCDC45C75041D7A370EDACD954410AD7A31042C7504114AE4731AED95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>364438 - 1808308
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2861  </desc>
+<a>
+01060000000100000001030000000100000012000000713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441333333A34BA65041CDCCCCDC4D6654411F85EB114CA650413D0AD7235E6654410AD7A36074A65041E17A141E686654418FC2F5A86EA65041B81E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441666666A67AA65041AE47E16A606654410000008079A6504148E17AF45F665441333333A36AA65041000000B05E665441713D0A175DA650415C8FC24559665441
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5A86EA65041B71E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441666666A67AA65041AE47E16A606654410000008079A6504148E17AF45F665441333333A36AA65041000000B05E665441713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441333333A34BA65041CDCCCCDC4D6654411F85EB114CA650413D0AD7235E6654410AD7A36074A65041E17A141E68665441E19DCCCF6FA65041670E93D17E665441271959B94CA65041138EB3D876665441666666C64CA650415C8FC2C5786654411F85EB4153A65041A4703D3A7A665441AE47E16A52A65041AE47E1EA7D6654418FC2F5A86EA65041B71E858B84665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>364438 - 3415444
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2861  </desc>
+<a>
+01060000000100000001030000000100000012000000713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441333333A34BA65041CDCCCCDC4D6654411F85EB114CA650413D0AD7235E6654410AD7A36074A65041E17A141E686654418FC2F5A86EA65041B81E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441666666A67AA65041AE47E16A606654410000008079A6504148E17AF45F665441333333A36AA65041000000B05E665441713D0A175DA650415C8FC24559665441
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5A86EA65041B71E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441666666A67AA65041AE47E16A606654410000008079A6504148E17AF45F665441333333A36AA65041000000B05E665441713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441333333A34BA65041CDCCCCDC4D6654411F85EB114CA650413D0AD7235E6654410AD7A36074A65041E17A141E68665441E19DCCCF6FA65041670E93D17E665441271959B94CA65041138EB3D876665441666666C64CA650415C8FC2C5786654411F85EB4153A65041A4703D3A7A665441AE47E16A52A65041AE47E1EA7D6654418FC2F5A86EA65041B71E858B84665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371024 - 189966
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8322  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E10A61D150410AD7A3405C9554415C8FC2C563D1504152B81EF55D955441CDCCCC8C68D15041A4703DAA5F955441A4703D3A74D150410AD7A3106395544185EB51A87AD15041295C8F5241955441666666E67AD15041EC51B80E40955441CDCCCCEC6AD150413D0AD7F340955441F6285CCF65D150413333337341955441295C8FD265D15041B81E85FB429554415C8FC29565D15041E17A14FE44955441713D0A5764D150418FC2F538499554413D0AD70360D1504185EB51D84E955441EC51B8BE5FD150416666669656955441AE47E10A61D150410AD7A3405C955441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D0AD70360D1504185EB51D84E955441387EA5D85FD150414E51EFAE53955441691CF0C55FD150418AFBFBAD56955441B694870B61D15041B1B30B415C9554418C40A02061D150410BA6384E5C95544125DCD64561D150419E6A76655C9554417761A19461D15041A2C1AB965C955441B96C063362D15041AB5798F95C95544188B1A74162D15041AB6BBB025D9554419004D3AB62D15041B50D0A455D955441D24758CE63D150410B8F80F45D955441EB5D74A468D15041699120B15F9554418A4FC2C468D15041186E88BA5F955441333224BB69D15041DEE844026095544190DBE63B6AD150415A42C227609554412AA37ADE6BD15041528BA1A16095544192ABECE06BD150419ED157A2609554412F0F0A3B74D15041E310720C63955441BFE44A3D74D150412B089F00639554417AE4114074D150412FF20BF2629554413F5E78A974D15041DAE4F0C860955441B8DB1E8C68D1504141FD8CE65D9554414D9FFE4862D150410FA26FCC5A9554419832CBAD62D15041D003BD8150955441ABF8969767D15041FEA8C1A549955441B874F80D68D150416B291EF948955441C4E3897468D15041FE88F4C2439554415ABA4C976AD1504104ACE1B6439554419D5FC3607AD15041D2FE10CA4295544185EB51A87AD15041295C8F52419554411F2260E37AD150413D477F1E4095544154BC637978D150411C1B833140955441C8F012F96DD15041D30720C84095544173A942E16CD1504120416EDA40955441E79FC93F69D1504109A793214195544108ADBAD665D1504192096E7541955441295C8FD265D15041B81E85FB429554418DFC62D265D15041E3A8FCFC42955441805D8CD265D150418643830143955441100749C865D15041DF097A52439554415C8FC29565D15041E17A14FE44955441D6CA140C65D150411929DBD1469554419BC3D56064D15041567100314995544113DA4C3763D15041899005AF4A9554413D0AD70360D1504185EB51D84E955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371024 - 394521
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8322  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E10A61D150410AD7A3405C9554415C8FC2C563D1504152B81EF55D955441CDCCCC8C68D15041A4703DAA5F955441A4703D3A74D150410AD7A3106395544185EB51A87AD15041295C8F5241955441666666E67AD15041EC51B80E40955441CDCCCCEC6AD150413D0AD7F340955441F6285CCF65D150413333337341955441295C8FD265D15041B81E85FB429554415C8FC29565D15041E17A14FE44955441713D0A5764D150418FC2F538499554413D0AD70360D1504185EB51D84E955441EC51B8BE5FD150416666669656955441AE47E10A61D150410AD7A3405C955441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D0AD70360D1504185EB51D84E955441387EA5D85FD150414E51EFAE53955441691CF0C55FD150418AFBFBAD56955441B694870B61D15041B1B30B415C9554418C40A02061D150410BA6384E5C95544125DCD64561D150419E6A76655C9554417761A19461D15041A2C1AB965C955441B96C063362D15041AB5798F95C95544188B1A74162D15041AB6BBB025D9554419004D3AB62D15041B50D0A455D955441D24758CE63D150410B8F80F45D955441EB5D74A468D15041699120B15F9554418A4FC2C468D15041186E88BA5F955441333224BB69D15041DEE844026095544190DBE63B6AD150415A42C227609554412AA37ADE6BD15041528BA1A16095544192ABECE06BD150419ED157A2609554412F0F0A3B74D15041E310720C63955441BFE44A3D74D150412B089F00639554417AE4114074D150412FF20BF2629554413F5E78A974D15041DAE4F0C860955441B8DB1E8C68D1504141FD8CE65D9554414D9FFE4862D150410FA26FCC5A9554419832CBAD62D15041D003BD8150955441ABF8969767D15041FEA8C1A549955441B874F80D68D150416B291EF948955441C4E3897468D15041FE88F4C2439554415ABA4C976AD1504104ACE1B6439554419D5FC3607AD15041D2FE10CA4295544185EB51A87AD15041295C8F52419554411F2260E37AD150413D477F1E4095544154BC637978D150411C1B833140955441C8F012F96DD15041D30720C84095544173A942E16CD1504120416EDA40955441E79FC93F69D1504109A793214195544108ADBAD665D1504192096E7541955441295C8FD265D15041B81E85FB429554418DFC62D265D15041E3A8FCFC42955441805D8CD265D150418643830143955441100749C865D15041DF097A52439554415C8FC29565D15041E17A14FE44955441D6CA140C65D150411929DBD1469554419BC3D56064D15041567100314995544113DA4C3763D15041899005AF4A9554413D0AD70360D1504185EB51D84E955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371224 - 190001
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -16234  </desc>
+<a>
+0106000000010000000103000000010000000800000066666696ABD35041C3F5281CBE9354419A999959D0D35041295C8FC2C6935441C3F5285CF4D35041B81E853BCF9354418FC2F588F6D35041666666B6CB9354419A999919FBD3504148E17AB4C29354410AD7A3D0D1D35041E17A14FEB893544185EB5168AFD350415C8FC2E5B093544166666696ABD35041C3F5281CBE935441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE15026AAFD35041173C28E6B0935441B90C6857ADD35041F76F260BB89354413AB6D696ABD35041D27FA41ABE935441FA7DB3F0ADD3504113BFE0A9BE935441E06AADFDADD350413A60EEACBE935441DC8B4101AED3504183EFC5ADBE9354414C7C60E5B1D3504106ACA87DB193544135977C33B0D35041FB078F15B19354418A2642B0AFD350418551AFF6B0935441AE15026AAFD35041173C28E6B0935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382911 - 1678665
+abs( area(A) - difference(A,B) - areatest(A,B) ) = 8716  </desc>
+<a>
+01060000000100000001030000000100000019000000666666C6FBA65041713D0A078B0055418FC2F5A8FAA6504185EB51D88A0055415C8FC285F6A65041C3F5282C8A005541E17A147EF5A650411F85EB018A0055411F85EB21F3A65041C3F5281CA70055417B14AE27F4A65041295C8F52A70055411F85EBC1F6A65041D7A370DDA7005541A4703D4AF8A65041B81E853BA80055418FC2F508FAA650417B14AEA7A8005541C3F528CCFAA650415C8FC2D5A8005541295C8F82FFA650419A999929AA00554148E17A4400A750417B14AE67AA005541C3F5280C0EA75041AE47E1CAAE0055417B14AE7713A7504152B81E85B00055418FC2F59814A750410AD7A380AF00554152B81E4517A7504152B81E059D005541D7A370AD14A75041F6285C7F9C0055417B14AE8715A75041EC51B8FE950055417B14AED70FA75041B81E857B94005541AE47E16A02A750418FC2F5A891005541B81E855B03A75041000000B08C005541713D0AA702A7504185EB51888C0055419A9999C901A750417B14AE578C0055419A999969FCA65041AE47E12A8B005541666666C6FBA65041713D0A078B005541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000EFFD511F0EA750414DA5FCD0AE005541FB9DE8420DA75041B165CD8AAE005541D038789A0FA750419EB4006294005541AE47E16A02A750418FC2F5A891005541B81E855B03A75041000000B08C005541713D0AA702A7504185EB51888C0055419A9999C901A750417B14AE578C0055419A999969FCA65041AE47E12A8B005541666666C6FBA65041713D0A078B0055418FC2F5A8FAA6504185EB51D88A0055415C8FC285F6A65041C3F5282C8A005541E17A147EF5A650411F85EB018A0055411F85EB21F3A65041C3F5281CA70055417B14AE27F4A65041295C8F52A70055411F85EBC1F6A65041D7A370DDA7005541A4703D4AF8A65041B81E853BA80055418FC2F508FAA650417B14AEA7A8005541C3F528CCFAA650415C8FC2D5A8005541295C8F82FFA650419A999929AA00554148E17A4400A750417B14AE67AA0055410E5B6B240EA750414DB39CD2AE005541EFFD511F0EA750414DA5FCD0AE005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>767988 - 362220
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2163  </desc>
+<a>
+0106000000030000000103000000010000003800000000000040D51651411F85EBB1BEC8544148E17A24D61651413D0AD703C1C85441EC51B82EDB165141AE47E11ACEC854417B14AE87DE1651419A9999B9CDC85441AE47E10AE216514133333353CDC85441E17A148EE9165141EC51B80EC9C85441D7A3709DF1165141A4703DEAC4C85441D7A370CDF71651411F85EB61C3C854410AD7A38000175141A4703DCAC2C8544152B81E250817514100000080C3C85441666666F609175141CDCCCCBCBBC85441D7A3705D0B17514152B81E25B5C85441AE47E16A0A175141B81E853BB2C8544148E17AC4EC165141E17A140EB1C85441295C8F12E4165141E17A148EB6C854418FC2F5A8DF16514185EB51F8B8C85441EC51B81EDC1651411F85EB31BAC8544133333383D4165141A4703D9ABBC8544114AE4741D4165141CDCCCC0CBBC854415C8FC255C8165141D7A370CDBFC854411F85EB91BE165141295C8F22C4C85441C3F528FCB81651411F85EBE1C8C8544152B81EF5B2165141E17A14CECFC85441000000A0AD165141CDCCCC5CD7C854410AD7A3E0A6165141AE47E12AE5C854417B14AEB79F165141CDCCCCBCF7C8544152B81EE59E16514185EB51E8FCC854418FC2F5589E165141B81E857B04C95441CDCCCC0C9B1651410AD7A3300CC954419A999919971651416666664610C95441E17A14FE8B16514152B81EF512C95441AE47E1DA8D1651419A9999E914C954418FC2F5188E165141713D0AE715C9544114AE47718D1651415C8FC2251AC95441713D0A978D16514152B81EA51DC954413D0AD7D38E165141295C8FA220C9544166666606901651418FC2F5F821C954410AD7A31095165141666666F620C95441C3F5286C971651416666660621C95441713D0A3799165141C3F528BC1FC95441E17A145EA11651410AD7A3201CC95441295C8FE2A1165141333333A31AC954419A999999A71651411F85EB5114C95441A4703D1AA9165141E17A141E10C9544114AE4771A91651419A9999F90DC954413D0AD763AA165141B81E85FB07C954411F85EBD1AB1651410000000002C95441C3F5283CAB1651411F85EB1102C95441B81E85CBAB16514152B81E85FBC85441A4703D6AB2165141D7A370FDEDC854411F85EB31B61651411F85EB31E1C85441C3F5282CBC1651415C8FC295D9C85441666666B6C116514148E17A84D8C8544133333393C6165141000000C0D5C85441D7A370EDBD165141EC51B86EC9C8544100000040D51651411F85EBB1BEC8544101030000000100000010000000EC51B8EEFE1651413D0AD783ACC854413D0AD713FE165141AE47E1CAACC85441D7A370EDF216514100000010AFC85441B81E85CBEC1651418FC2F528B0C85441F6285CAF0A175141713D0A37B0C85441F6285CBF13175141CDCCCC8CAFC854419A9999391B17514152B81E25ABC854417B14AEC727175141295C8F92A7C854413D0AD78332175141EC51B8CEA5C854413D0AD7D32F175141666666A6A5C85441D7A3701D25175141A4703D3AA7C85441EC51B82E18175141E17A140EAAC85441D7A370ED14175141295C8F62AAC85441EC51B88E1017514148E17AD4AAC85441E17A140E08175141F6285C8FA9C85441EC51B8EEFE1651413D0AD783ACC85441010300000001000000090000008FC2F548231751417B14AE97B3C85441713D0A372317514114AE47F1A9C85441C3F5287C1B17514148E17A44ACC854417B14AE4714175141AE47E16AB0C854410AD7A3300F175141E17A144EB6C854411F85EBA10C1751417B14AE97BCC854411F85EBC10A17514100000020C4C85441000000201E17514114AE4771B2C854418FC2F548231751417B14AE97B3C85441
+</a>
+
+<b>
+0106000000010000000103000000010000005400000000000040D51651411F85EBB1BEC854410F000040D51651414685EBB1BEC85441C1000040D5165141F484EBB1BEC85441381A0040D516514146C9EBB1BEC8544148E17A24D61651413D0AD703C1C854417ED2B72EDB165141B7FCDF1ACEC854419952B82EDB1651419A47E11ACEC8544184C4BC2EDB1651416EC6E01ACEC85441F1EAD70AE216514123443453CDC85441AE47E10AE216514133333353CDC85441BAFCE30BE5165141066E5C9ECBC85441767A148EE9165141C151B80EC9C8544136A3709DF116514179703DEAC4C85441C2A370CDF7165141A984EB61C3C85441886617A1FD1651416C5955FCC2C854410AD7A38000175141A4703DCAC2C854410CB81E2508175141F9FFFF7FC3C854411881F9B90817514140D13E04C1C85441666666F609175141CDCCCCBCBBC85441B5A3705D0B175141F4B81E25B5C854412247E16A0A175141D91E853BB2C854413FE17AC4EC165141E77A140EB1C85441295C8F12E4165141E17A148EB6C854418FC2F5A8DF16514185EB51F8B8C85441AA7C3AF7DE1651418EB9D235B9C854416252B81EDC165141A085EB31BAC8544172323383D4165141CF703D9ABBC85441BDAD4741D4165141F0CCCC0CBBC854415C8FC255C8165141D7A370CDBFC854411F85EB91BE165141295C8F22C4C85441C3F528FCB81651411F85EBE1C8C85441FDED6171B5165141846257F3CCC85441B3B81EF5B2165141227B14CECFC854415C0C68ABAD165141A25CA24CD7C85441480000A0AD16514167CCCC5CD7C85441F64DE9A9A916514138349177DFC854410AD7A3E0A6165141AE47E12AE5C854415EF8D050A616514141C9E59FE6C85441F78CCA42A516514125613A5CE9C85441B57015FEA6165141D3388E9BE9C85441F97ECDA1A6165141CC93EDEEEDC85441BADED51BA416514140D3DCFAF2C85441C94C9639A1165141F9576439F6C85441005A4EDDA0165141B0A50BE9FAC8544144680681A016514168F3B298FFC854418775BE24A01651411D405A4804C9544189AC9EB39E1651411665D90C0AC954414B4387BC9A165141CB7BA02D10C95441AB9A9919971651414B65664610C954419A999919971651416666664610C954410E7B14FE8B16514147B81EF512C9544186F97B588C165141889F035413C95441AE47E1DA8D1651419A9999E914C954418FC2F5188E165141713D0AE715C9544114AE47718D1651415C8FC2251AC95441713D0A978D16514152B81EA51DC954413D0AD7D38E165141295C8FA220C9544166666606901651418FC2F5F821C95441F9DF1AF7941651410A6384FB20C95441CAD6A31095165141716666F620C95441D2D6A31095165141716666F620C954410AD7A31095165141666666F620C9544157DFD58295165141686D6DF920C95441F8F5286C971651413166660621C95441166DAFA79916514129724EE01DC9544189AC9EB39E1651412BDF0EFE1AC9544104683932A21651410C20234B1AC954412B2E20A5A21651418C511FCC19C95441809A3DE9A51651413FBB8F3915C95441809A3DE9A5165141904969C50AC95441B57015FEA61651419724EA0005C954412F55A5B6A716514124E5FAF4FFC85441F5100D84A9165141B2DCEB77F9C85441A29494C2AC16514140D3DCFAF2C85441AC5EB433AE16514146787DA7EEC8544175703D6AB216514138A470FDEDC85441A4703D6AB2165141D7A370FDEDC854411F85EB31B61651411F85EB31E1C85441C3F5282CBC1651415C8FC295D9C85441666666B6C116514148E17A84D8C8544169EAB4B8C316514145F0C25FD7C85441AC323393C61651413FFFFFBFD5C85441D7A370EDBD165141EC51B86EC9C8544100000040D51651411F85EBB1BEC85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407778 - 342182
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2561  </desc>
+<a>
+01060000000100000001030000000100000011000000000000F0F3EE5041295C8F221E38544148E17A84F4EE50417B14AEB71B3854418FC2F518EFEE5041EC51B89E1A38544152B81E65EDEE5041666666461A3854419A999909ECEE5041CDCCCCFC21385441A4703D2AE6EE5041AE47E1DA30385441333333E3E0EE5041C3F528EC46385441AE47E17ADBEE5041D7A3700D58385441C3F5289CD5EE5041713D0AA76738544166666656DAEE50411F85EB9168385441D7A370EDDBEE5041CDCCCC9C673854419A999929E0EE504185EB51A8593854411F85EB71E6EE50418FC2F568483854417B14AE27E7EE504185EB510847385441295C8FF2EAEE5041CDCCCCEC3C385441333333F3EDEE5041EC51B84E33385441000000F0F3EE5041295C8F221E385441
+</a>
+
+<b>
+010600000001000000010300000001000000110000002AF87A5FDAEE504151A9738C68385441D7ABE5A8DBEE50414E9B13C66738544159089FFDDFEE50414A9FEFF958385441E3535FD0E3EE504133C48EE34D385441C4CC5FEEE9EE504151A15D2B3F385441C710405FEDEE5041A8BE1CB333385441A889407DF3EE5041CA132B191E385441678DA6FCF3EE504122012D9C1B38544111B3FE5FF1EE50412D79C7141B385441553A9079EFEE5041AAE2FA9C1B385441770570CCECEE50411D63DB1C22385441FFA6FF04E8EE504118FB1CC2363854411E2EFFE6E1EE5041F73FBE3247385441552A0FB6E1EE50418C8B7E054B3854410BBFDBA7D7EE50412C8CAD0C683854419D979F12DAEE5041AA1FC484683854412AF87A5FDAEE504151A9738C68385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>438173 - 4391836
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5690  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C6FB7E350410AD7A3D0DE735441CDCCCC5CB0E35041B81E85BBE27354413D0AD773B4E3504100000030007454417B14AEE7BAE350413D0AD7C3FE7354415C8FC235D1E35041713D0AE7F97354415C8FC2D5E0E3504166666676F573544114AE4701E1E35041AE47E13AD17354419A9999B9D1E35041B81E85BBD37354410AD7A310C3E3504152B81E35DB735441F6285C6FB7E350410AD7A3D0DE735441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000EB9216E9E0E35041988DF05EE573544185EB5148E5E35041EC51B8DEE473544148E17A54E6E35041A4703D0AE5735441E17A1446E7E35041C3F5280CE57354418FC2F518EAE350411F85EB11E5735441508D97DEEAE35041105839DCE4735441F6285CCFEBE35041AE47E19AE4735441295C8F32EDE3504123DBF956E5735441C3F5288CEDE3504166666686E57354411D5A6473EFE350417368913DE5735441666666C6F0E35041AE47E10AE57354417B14AE97F2E35041D7A370CDE57354410AD7A370F3E350418FC2F5A8E5735441295C8F72F3E350418FC2F508E57354414260E578F3E350412B8716E1E27354410AD7A3B0F3E3504166666606D0735441C3F528CCEAE350417B14AEA7D17354419E109AFEE0E350412209B075D373544114AE4701E1E35041AE47E13AD17354419A9999B9D1E35041B81E85BBD37354410AD7A310C3E3504152B81E35DB735441F6285C6FB7E350410AD7A3D0DE735441CDCCCC5CB0E35041B81E85BBE27354413D0AD773B4E3504100000030007454417B14AEE7BAE350413D0AD7C3FE7354415C8FC235D1E35041713D0AE7F97354415C8FC2D5E0E3504166666676F57354418DBF04D7E0E3504122A9296AF47354411F85EBD1EAE35041EC51B84EF373544148E17AECEAE350418FC2F548F373544185EB51F8EDE35041000000A0F2735441713D0A17EEE3504166666626E87354410AD7A318EEE35041CFF753A3E77354418FC2F518EEE3504166666686E773544185EB5138EDE350415C8FC275E77354417B14AE67EBE35041C3F528DCE6735441E92631E0EAE350419A999979E673544148E17A34EAE35041CDCCCCFCE573544100000060E6E35041666666D6E5735441C3F5282CE5E3504148E17AA4E57354415839B4F8E3E35041B81E85A3E57354415D02C2E8E0E35041670558A5E5735441EB9216E9E0E35041988DF05EE5735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442223 - 1480455
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1266  </desc>
+<a>
+01060000000300000001030000000100000021000000C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541AE47E18AF1F25041CDCCCCCC502955419A9999F9ECF25041B81E856B4E29554152B81EC5ECF25041333333C34E295541E17A146EECF250410AD7A32050295541AE47E10AEFF25041AE47E18A54295541EC51B8AEF3F2504152B81EC55B2955413D0AD763F7F250413D0AD7836129554100000090FBF2504185EB515867295541D7A3707D03F35041295C8FA272295541666666760BF35041EC51B8CE7D295541CDCCCC4C0CF35041C3F5285C7F295541333333630DF350410AD7A3B081295541CDCCCCDC0EF35041D7A3700D862955413333334314F350419A9999D98529554114AE478119F35041A4703D9A85295541A4703DFA1CF3504185EB51787D295541D7A3705D20F35041AE47E1BA762955410AD7A39021F3504185EB515872295541C3F528FC23F35041D7A3707D692955410103000000010000002D000000A4703D9ADDF250415C8FC2F54929554100000090D7F25041AE47E12A4A295541B81E855BD2F25041C3F5287C4B2955419A999919D3F250413D0AD7E34C295541295C8F12D8F250413D0AD7E3542955419A9999B9DAF250415C8FC225592955419A999949DFF250417B14AEA76029554152B81E85E1F25041295C8F726429554166666636E7F25041AE47E16A6C295541713D0A97ECF25041AE47E1EA732955415C8FC295F0F25041D7A3707D76295541F6285CCFF1F25041E17A147E77295541B81E85BBF4F25041000000807A295541AE47E14AF7F250417B14AE877D295541666666A6F8F25041EC51B8EE7E2955413D0AD733F9F2504152B81E557F295541B81E853BFAF25041000000E07F2955419A999999FCF25041CDCCCC6C81295541666666E6FDF25041D7A3704D8229554185EB5168FFF25041AE47E18A83295541C3F528DCFFF250415C8FC2E583295541295C8F7200F350418FC2F59884295541AE47E1FA02F350418FC2F54887295541295C8F9205F35041F6285C2F8A295541A4703DBA06F35041A4703D8A8B295541CDCCCC4C08F350418FC2F5388D2955417B14AE4709F35041AE47E1FA8D295541295C8F920BF35041B81E857B8F2955411F85EBA10DF35041CDCCCC4C91295541C3F528AC0FF35041A4703D0A902955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A8829554148E17A540EF35041295C8F12862955411F85EB810CF350417B14AE678129554185EB51280AF35041C3F528EC7C2955418FC2F52805F350413D0AD7F375295541713D0A17FBF25041AE47E1CA672955410AD7A3C0F8F250411F85EB216429554114AE4741F4F25041A4703DAA5D295541A4703D2AEEF250410000002054295541295C8F42E9F25041C3F5287C4C2955417B14AE37E9F25041666666764D295541295C8F62E6F250415C8FC2A54B295541CDCCCCACE2F2504148E17AD44A295541A4703D9ADDF250415C8FC2F5492955410103000000010000002600000085EB51E8F7F25041EC51B86E7F29554148E17A34F7F25041C3F528BC7E295541000000B0F6F25041666666267E2955411F85EB61F4F250413D0AD7A37B295541C3F5285CF2F2504114AE474179295541F6285C4FEFF250416666669676295541E17A144EEEF250413D0AD703762955418FC2F5E8EFF25041A4703DFA77295541EC51B88EF2F25041A4703D9A7B29554166666686F5F25041F6285C1F7F295541EC51B84EF8F25041000000D082295541AE47E13AFAF250419A9999D98529554185EB51E8FCF25041295C8F228A29554114AE47B1FEF25041000000808D29554152B81E45FFF25041B81E85CB8F2955418FC2F5C8FFF25041AE47E12A922955410AD7A3F0FFF25041B81E852B96295541D7A3702D00F350418FC2F5E89929554152B81EE502F35041A4703D0A982955417B14AEB707F3504148E17A3495295541F6285C5F09F35041C3F5281C94295541D7A3702D0CF35041333333339229554152B81ED50CF35041B81E85CB91295541333333F30BF350410000003091295541713D0A4709F350415C8FC2458F295541CDCCCC2C08F3504185EB51488E295541E17A143E07F350413D0AD7738D2955411F85EB0106F35041AE47E10A8C2955416666662604F35041C3F5283C8A295541B81E857B01F350410000000087295541713D0A0700F3504152B81E7585295541F6285C7FFEF25041AE47E10A84295541C3F5282CFDF25041D7A370CD82295541B81E85ABFCF250411F85EB918229554114AE4701FBF250418FC2F57881295541295C8F42FAF250415C8FC205812955419A9999E9F8F250410AD7A3308029554185EB51E8F7F25041EC51B86E7F295541
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541AE47E18AF1F25041CDCCCCCC502955419A9999F9ECF25041B81E856B4E2955419CB40FFAECF25041814FA4AE4D295541A4E73B83EBF2504172CDCFE44C29554157799149EBF25041624BFB1A4C2955415EACBDD2E9F25041055B7C174B295541A4CBBFCBE7F250411D107D6A4A295541BC80C01EE7F25041C01FFE6649295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554133333383CBF25041666666862B295541E17A143EC8F250411F85EBC128295541A4703D2AC3F25041AE47E18A24295541713D0A37BEF25041AE47E1BA202955410039D0DBB5F250415390AAF21A2955412A0B984DB5F25041CCC596981B2955411522B494B5F250414D4F3F431D295541EFEAC449BAF2504111196497232955413B8BB219BFF25041F228A36C2929554136984752C0F250410B8C1B692A2955415B29A414C2F25041B7E78B852B295541A01D433FCBF250418AFAFA0E352955411312C435CEF250418C0D4C643829554138A320F8CFF2504186CCE0B43A295541D287A1D1D0F250413C464ED13B295541BDF66CD9D5F2504140A857E941295541AE004337D8F250413AD740C7442955419280A3DBD8F250414C4A288A45295541BE65BCA2DBF25041AA55C5C7482955414B0208EADCF250415D43D0FB492955411060EDC0D9F250418F179C174A29554181D82AD2D6F25041D0E6218A4A295541CD762853D5F25041EEA57BC44B29554158D1A8FCD4F25041C86EA6A74B295541329AD3DFD4F25041C86EA6A74B295541CD762853D5F250419904A5014D2955418EA6CE9AD9F25041FD5F48FD532955414887CCA1DBF25041FC7BC4B4572955419611F392DFF25041BDC7E6B35F295541383DF046E2F25041D49863BE622955418E16BF78E8F250410A8A05146B295541FAA48EFDEDF250413F7BA76973295541575542BDEFF25041965207F275295541EA3E36EBF0F250419C87A224782955417DE85ED5F2F2504165EA74F57A29554166666686F5F25041F6285C1F7F295541EC51B84EF8F25041000000D082295541AE47E13AFAF250419A9999D98529554185EB51E8FCF25041295C8F228A29554114AE47B1FEF25041000000808D29554152B81E45FFF25041B81E85CB8F2955418FC2F5C8FFF25041AE47E12A92295541930D500601F350415B7BAD709629554154217A9601F3504124DE7F419929554152B81EE502F35041A4703D0A982955417B14AEB707F3504148E17A3495295541F6285C5F09F35041C3F5281C942955414C0ACAC406F35041E881B9F38A29554152B81ED50CF35041B81E85CB9129554144F319F30BF3504192FC5EE88F2955411AB327C90BF35041C62FB0AB8F295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442223 - 3474701
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1266  </desc>
+<a>
+01060000000300000001030000000100000021000000C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541AE47E18AF1F25041CDCCCCCC502955419A9999F9ECF25041B81E856B4E29554152B81EC5ECF25041333333C34E295541E17A146EECF250410AD7A32050295541AE47E10AEFF25041AE47E18A54295541EC51B8AEF3F2504152B81EC55B2955413D0AD763F7F250413D0AD7836129554100000090FBF2504185EB515867295541D7A3707D03F35041295C8FA272295541666666760BF35041EC51B8CE7D295541CDCCCC4C0CF35041C3F5285C7F295541333333630DF350410AD7A3B081295541CDCCCCDC0EF35041D7A3700D862955413333334314F350419A9999D98529554114AE478119F35041A4703D9A85295541A4703DFA1CF3504185EB51787D295541D7A3705D20F35041AE47E1BA762955410AD7A39021F3504185EB515872295541C3F528FC23F35041D7A3707D692955410103000000010000002D000000A4703D9ADDF250415C8FC2F54929554100000090D7F25041AE47E12A4A295541B81E855BD2F25041C3F5287C4B2955419A999919D3F250413D0AD7E34C295541295C8F12D8F250413D0AD7E3542955419A9999B9DAF250415C8FC225592955419A999949DFF250417B14AEA76029554152B81E85E1F25041295C8F726429554166666636E7F25041AE47E16A6C295541713D0A97ECF25041AE47E1EA732955415C8FC295F0F25041D7A3707D76295541F6285CCFF1F25041E17A147E77295541B81E85BBF4F25041000000807A295541AE47E14AF7F250417B14AE877D295541666666A6F8F25041EC51B8EE7E2955413D0AD733F9F2504152B81E557F295541B81E853BFAF25041000000E07F2955419A999999FCF25041CDCCCC6C81295541666666E6FDF25041D7A3704D8229554185EB5168FFF25041AE47E18A83295541C3F528DCFFF250415C8FC2E583295541295C8F7200F350418FC2F59884295541AE47E1FA02F350418FC2F54887295541295C8F9205F35041F6285C2F8A295541A4703DBA06F35041A4703D8A8B295541CDCCCC4C08F350418FC2F5388D2955417B14AE4709F35041AE47E1FA8D295541295C8F920BF35041B81E857B8F2955411F85EBA10DF35041CDCCCC4C91295541C3F528AC0FF35041A4703D0A902955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A8829554148E17A540EF35041295C8F12862955411F85EB810CF350417B14AE678129554185EB51280AF35041C3F528EC7C2955418FC2F52805F350413D0AD7F375295541713D0A17FBF25041AE47E1CA672955410AD7A3C0F8F250411F85EB216429554114AE4741F4F25041A4703DAA5D295541A4703D2AEEF250410000002054295541295C8F42E9F25041C3F5287C4C2955417B14AE37E9F25041666666764D295541295C8F62E6F250415C8FC2A54B295541CDCCCCACE2F2504148E17AD44A295541A4703D9ADDF250415C8FC2F5492955410103000000010000002600000085EB51E8F7F25041EC51B86E7F29554148E17A34F7F25041C3F528BC7E295541000000B0F6F25041666666267E2955411F85EB61F4F250413D0AD7A37B295541C3F5285CF2F2504114AE474179295541F6285C4FEFF250416666669676295541E17A144EEEF250413D0AD703762955418FC2F5E8EFF25041A4703DFA77295541EC51B88EF2F25041A4703D9A7B29554166666686F5F25041F6285C1F7F295541EC51B84EF8F25041000000D082295541AE47E13AFAF250419A9999D98529554185EB51E8FCF25041295C8F228A29554114AE47B1FEF25041000000808D29554152B81E45FFF25041B81E85CB8F2955418FC2F5C8FFF25041AE47E12A922955410AD7A3F0FFF25041B81E852B96295541D7A3702D00F350418FC2F5E89929554152B81EE502F35041A4703D0A982955417B14AEB707F3504148E17A3495295541F6285C5F09F35041C3F5281C94295541D7A3702D0CF35041333333339229554152B81ED50CF35041B81E85CB91295541333333F30BF350410000003091295541713D0A4709F350415C8FC2458F295541CDCCCC2C08F3504185EB51488E295541E17A143E07F350413D0AD7738D2955411F85EB0106F35041AE47E10A8C2955416666662604F35041C3F5283C8A295541B81E857B01F350410000000087295541713D0A0700F3504152B81E7585295541F6285C7FFEF25041AE47E10A84295541C3F5282CFDF25041D7A370CD82295541B81E85ABFCF250411F85EB918229554114AE4701FBF250418FC2F57881295541295C8F42FAF250415C8FC205812955419A9999E9F8F250410AD7A3308029554185EB51E8F7F25041EC51B86E7F295541
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541AE47E18AF1F25041CDCCCCCC502955419A9999F9ECF25041B81E856B4E2955419CB40FFAECF25041814FA4AE4D295541A4E73B83EBF2504172CDCFE44C29554157799149EBF25041624BFB1A4C2955415EACBDD2E9F25041055B7C174B295541A4CBBFCBE7F250411D107D6A4A295541BC80C01EE7F25041C01FFE6649295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554133333383CBF25041666666862B295541E17A143EC8F250411F85EBC128295541A4703D2AC3F25041AE47E18A24295541713D0A37BEF25041AE47E1BA202955410039D0DBB5F250415390AAF21A2955412A0B984DB5F25041CCC596981B2955411522B494B5F250414D4F3F431D295541EFEAC449BAF2504111196497232955413B8BB219BFF25041F228A36C2929554136984752C0F250410B8C1B692A2955415B29A414C2F25041B7E78B852B295541A01D433FCBF250418AFAFA0E352955411312C435CEF250418C0D4C643829554138A320F8CFF2504186CCE0B43A295541D287A1D1D0F250413C464ED13B295541BDF66CD9D5F2504140A857E941295541AE004337D8F250413AD740C7442955419280A3DBD8F250414C4A288A45295541BE65BCA2DBF25041AA55C5C7482955414B0208EADCF250415D43D0FB492955411060EDC0D9F250418F179C174A29554181D82AD2D6F25041D0E6218A4A295541CD762853D5F25041EEA57BC44B29554158D1A8FCD4F25041C86EA6A74B295541329AD3DFD4F25041C86EA6A74B295541CD762853D5F250419904A5014D2955418EA6CE9AD9F25041FD5F48FD532955414887CCA1DBF25041FC7BC4B4572955419611F392DFF25041BDC7E6B35F295541383DF046E2F25041D49863BE622955418E16BF78E8F250410A8A05146B295541FAA48EFDEDF250413F7BA76973295541575542BDEFF25041965207F275295541EA3E36EBF0F250419C87A224782955417DE85ED5F2F2504165EA74F57A29554166666686F5F25041F6285C1F7F295541EC51B84EF8F25041000000D082295541AE47E13AFAF250419A9999D98529554185EB51E8FCF25041295C8F228A29554114AE47B1FEF25041000000808D29554152B81E45FFF25041B81E85CB8F2955418FC2F5C8FFF25041AE47E12A92295541930D500601F350415B7BAD709629554154217A9601F3504124DE7F419929554152B81EE502F35041A4703D0A982955417B14AEB707F3504148E17A3495295541F6285C5F09F35041C3F5281C942955414C0ACAC406F35041E881B9F38A29554152B81ED50CF35041B81E85CB9129554144F319F30BF3504192FC5EE88F2955411AB327C90BF35041C62FB0AB8F295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452452 - 254359
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2623  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7B37132514185EB51981D2F554148E17A346E325141B81E855B1F2F55413D0AD7336B325141EC51B8AE212F55410AD7A3C068325141AE47E19A242F5541C3F528FC673251419A999909262F55417B14AE3767325141C3F528EC262F55415C8FC23566325141333333C3282F5541E17A14DE643251419A9999792B2F5541A4703D8A63325141EC51B8AE2D2F5541295C8FF263325141C3F5283C2E2F5541000000D06D32514148E17AD4372F55418FC2F5286F325141295C8F32392F5541F6285CEF743251411F85EB913D2F55415C8FC2C5793251418FC2F548422F55413D0AD7E37A32514100000060432F554148E17A047D32514185EB5168452F554152B81E657E32514148E17A14442F55418FC2F5A88532514152B81E053A2F5541B81E857B8A32514185EB51B8322F5541666666668732514100000020302F55419A9999D983325141333333232D2F554114AE47B180325141A4703D8A302F55411F85EB917F325141E17A147E2F2F5541C3F5280C7E325141333333132E2F55415C8FC255793251417B14AED7292F55410AD7A360723251415C8FC245202F55413D0AD7B37132514185EB51981D2F5541
+</a>
+
+<b>
+010600000001000000010300000001000000130000000AD7A360723251415C8FC245202F55415050FBCD7132514169BA9E371E2F5541F76476036C3251415B1D2B69222F55417F795AB8673251418218CF66282F5541B4492B2064325141091373642E2F554182B4648966325141A51ADAC0302F55411E295CEF743251416784EB913D2F554161E003AB793251417C74E42E422F55416E7C21B579325141E87CC038422F55413694EEB8793251416FF0743C422F5541808707BF79325141925C6642422F5541BEF25ABF7932514108ABB742422F55414F8FC2C57932514182C2F548422F5541C3F5280C7D3251417B14AED73C2F5541B248132E7E325141BA04D6A33A2F5541EB84EB317F3251410C295C9F352F5541DCC8EA917F3251419ACB137E2F2F55415C8FC255793251417B14AED7292F55410AD7A360723251415C8FC245202F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452452 - 345483
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2623  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7B37132514185EB51981D2F554148E17A346E325141B81E855B1F2F55413D0AD7336B325141EC51B8AE212F55410AD7A3C068325141AE47E19A242F5541C3F528FC673251419A999909262F55417B14AE3767325141C3F528EC262F55415C8FC23566325141333333C3282F5541E17A14DE643251419A9999792B2F5541A4703D8A63325141EC51B8AE2D2F5541295C8FF263325141C3F5283C2E2F5541000000D06D32514148E17AD4372F55418FC2F5286F325141295C8F32392F5541F6285CEF743251411F85EB913D2F55415C8FC2C5793251418FC2F548422F55413D0AD7E37A32514100000060432F554148E17A047D32514185EB5168452F554152B81E657E32514148E17A14442F55418FC2F5A88532514152B81E053A2F5541B81E857B8A32514185EB51B8322F5541666666668732514100000020302F55419A9999D983325141333333232D2F554114AE47B180325141A4703D8A302F55411F85EB917F325141E17A147E2F2F5541C3F5280C7E325141333333132E2F55415C8FC255793251417B14AED7292F55410AD7A360723251415C8FC245202F55413D0AD7B37132514185EB51981D2F5541
+</a>
+
+<b>
+010600000001000000010300000001000000130000000AD7A360723251415C8FC245202F55415050FBCD7132514169BA9E371E2F5541F76476036C3251415B1D2B69222F55417F795AB8673251418218CF66282F5541B4492B2064325141091373642E2F554182B4648966325141A51ADAC0302F55411E295CEF743251416784EB913D2F554161E003AB793251417C74E42E422F55416E7C21B579325141E87CC038422F55413694EEB8793251416FF0743C422F5541808707BF79325141925C6642422F5541BEF25ABF7932514108ABB742422F55414F8FC2C57932514182C2F548422F5541C3F5280C7D3251417B14AED73C2F5541B248132E7E325141BA04D6A33A2F5541EB84EB317F3251410C295C9F352F5541DCC8EA917F3251419ACB137E2F2F55415C8FC255793251417B14AED7292F55410AD7A360723251415C8FC245202F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454450 - 119968
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -39250  </desc>
+<a>
+01060000000100000001030000000100000017000000713D0A4703B65041EC51B82E08DE54413D0AD763FDB55041295C8F020BDE54416666665605B65041C3F5283C27DE544148E17A8411B650410000005052DE5441A4703D3A12B650418FC2F5B854DE5441D7A3707D18B65041D7A370CD59DE54410AD7A32026B6504148E17A6457DE5441713D0A2740B65041666666A652DE5441B81E857B58B65041713D0A374EDE5441666666065CB650411F85EB914DDE54413D0AD77350B65041AE47E1AA24DE54418FC2F54844B650413D0AD793F9DD5441333333C340B65041AE47E14AFADD5441EC51B84E3DB65041E17A14FEFADD544185EB519828B650410AD7A350FFDD54413D0AD7D30FB65041CDCCCC7C04DE54410AD7A3B011B650417B14AEA70BDE5441B81E856B0FB650415C8FC2450CDE54418FC2F5480FB65041333333D30EDE5441CDCCCCAC0AB650416666667610DE5441CDCCCC3C06B65041666666E610DE5441295C8F0204B6504185EB51E807DE5441713D0A4703B65041EC51B82E08DE5441
+</a>
+
+<b>
+010600000001000000010300000001000000260000003D0AD763FDB55041295C8F020BDE54416666665605B65041C3F5283C27DE544148E17A8411B650410000005052DE5441A4703D3A12B650418FC2F5B854DE5441D7A3707D18B65041D7A370CD59DE54410AD7A32026B6504148E17A6457DE5441C6FC9AF139B650411A2D8BC553DE54411C1DAC053BB650413BB2BB9553DE5441B61205F63BB65041C45BEF6953DE54417F0CA52840B65041644E82A252DE544186E462C63EB65041C13304CD4DDE5441ED137EAB3DB650411C363CF049DE5441227A880C3DB65041BD4D24BD47DE54419BFECD013CB6504133FAB00044DE5441E59ECB1C3BB65041EB151EDB40DE5441888596653AB650414C8432573EDE5441F07E439E38B6504144E6211438DE5441B3DEDAC837B6504107DD161235DE54412AD2758037B650416CE79C1634DE5441249E092A37B65041C87599FE32DE5441E8216A9036B6504191964EBD30DE54418631331735B65041039726932BDE5441CFC0A58B32B6504136B8C29522DE54415D30D9CD30B6504130EA81681CDE5441EC2EB5772AB650419AB4E70506DE544114B31E9828B65041F0DEB250FFDD54413D0AD7D30FB65041CDCCCC7C04DE54410AD7A3B011B650417B14AEA70BDE54416297706710B6504176353B160CDE54410BB6113F0FB6504100BDD7100CDE54418FC2F5480FB65041333333D30EDE5441EF8A87B80AB6504112CA545110DE5441CE4E08880AB65041067F01D00FDE5441CDCCCC3C06B65041666666E610DE5441295C8F0204B6504185EB51E807DE544183C0695003B650412FC0BE2C08DE5441822E6B7302B65041B69C6E9708DE54413D0AD763FDB55041295C8F020BDE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456298 - 152953
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2975  </desc>
+<a>
+0106000000010000000103000000010000002F000000D7A3701D960D5141A4703D9AB079544133333393960D514185EB5178AF795441AE47E13A950D5141B81E857BAB795441CDCCCCBC940D5141AE47E1FAA8795441E17A144E940D51417B14AEF7A37954411F85EB618E0D5141295C8F52A179544166666636840D5141CDCCCCCC9C795441B81E857B7F0D5141EC51B83E9A7954415C8FC2A57A0D51419A99996997795441000000107A0D5141295C8F7297795441C3F528FC740D5141295C8FA2A279544152B81E15700D5141A4703DCAAD795441000000C06C0D51410AD7A3C0AB79544148E17A146B0D51411F85EBA1AF7954415C8FC2D5670D51415C8FC2B5B4795441F6285C7F640D51417B14AEB7B9795441C3F528DC620D51411F85EBB1BB7954410AD7A310620D51411F85EB71BC795441713D0A17610D5141A4703D1ABD79544148E17A745F0D5141EC51B8CEBD79544152B81E755C0D514114AE4741BE79544148E17AD4600D514100000080C079544148E17AB4630D514152B81E45C2795441EC51B8DE650D5141AE47E1EAC37954419A9999E9670D5141333333F3C579544100000010680D5141A4703D1AC6795441F6285C3F690D51417B14AE47C7795441D7A370ED6C0D5141B81E853BCB795441D7A370DD700D5141B81E855BCF79544152B81EF5730D5141B81E85BBD2795441AE47E1FA780D51411F85EB11D779544148E17A547E0D5141A4703D6ADB79544100000050850D5141EC51B8FEE17954411F85EBA1870D51415C8FC255E1795441000000508A0D514185EB5178DB79544152B81EA5860D5141713D0AB7D87954411F85EB21830D514100000050D679544148E17AD4880D51411F85EBA1CC795441713D0AB7880D51413D0AD713CA7954411F85EB618A0D5141F6285C2FC6795441AE47E1FA8C0D51413D0AD7A3C179544152B81ED58E0D5141713D0AD7BD795441713D0AF7900D51415C8FC285BB795441295C8F92920D514148E17A54BA795441713D0AD7930D5141295C8F72B7795441C3F5284C950D5141CDCCCC9CB2795441D7A3701D960D5141A4703D9AB0795441
+</a>
+
+<b>
+010600000001000000010300000001000000340000009B3DAFF4850D5141B52542939D7954419F346736840D51418128CDCC9C79544154D233C7800D51412D87F069A179544176096E73780D514160A8CF99AC7954411E5ED837750D5141866C9BF1B07954413A274BF9720D5141BE1C4876AF7954416C2B32A3720D51413D68703DAF79544152B81E15700D5141A4703DCAAD795441000000C06C0D51410AD7A3C0AB795441AEB304896C0D5141FBBA6140AC79544123DDAC27700D5141E06332F3B1795441DA3A7A64720D5141074109C7B67954419FE85B3F740D51413442A430BB7954419D218836700D51410B4E2E0DC0795441686BF0D16D0D5141873458EFC2795441DBC3C4DA6C0D5141664A2E19C4795441557069C36C0D5141E2465335C47954417388B215680D5141E5BDE61FC6795441092663BD680D514142A887C6C6795441F6285C3F690D51417B14AE47C7795441F9A8DFD6690D514195C069EAC7795441D7A370ED6C0D5141B81E853BCB795441D7A370DD700D5141B81E855BCF7954417B2AF339730D5141677A40EFD1795441D742C19E730D51410CF6435DD27954413C07E9C5730D5141B9B7543DD2795441BD759261750D5141C2980DCED0795441BE94BC8E7A0D51410E72C32FCC795441B71DC365820D5141A56333E3D57954416DEFEA21830D51416E0E0050D6795441E3E2072B830D5141C9548540D679544148E17AD4880D51411F85EBA1CC7954417DEC0BD5880D514114338AA1CC7954416F97A4308C0D5141AC5770EDC6795441B55DD7758F0D514136274A4BC17954410D5976C08F0D5141280438C0C0795441295C8F92920D514148E17A54BA795441713D0AD7930D5141295C8F72B7795441C3F5284C950D5141CDCCCC9CB27954413CB11851950D51413EA4A990B2795441302B3393960D5141BE915078AF795441C98D05DA960D5141DA23CC9FAE7954418FC2F588970D51418FC2F588AC795441CDCCCCBC940D5141AE47E1FAA87954411F85EB41970D51419A9999F9A6795441A4D47316990D5141C04B005BA6795441E17A144E940D51417B14AEF7A3795441936CBB6F8E0D51416F80BA58A1795441DC9FEA618E0D514102B78F52A179544128CDEE0E860D51414245EE9E9D795441A3CE1CFD850D51419C9801979D7954419B3DAFF4850D5141B52542939D795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>482152 - 153313
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -11147  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C1FC71B5141CDCCCCEC61735441EC51B84EF31B51415C8FC2D55E735441CDCCCC0C021C5141A4703DFA5D735441295C8F12051C5141666666E651735441295C8F52081C51415C8FC2F545735441A4703D0AF21B5141AE47E13A4773544152B81E55CE1B514148E17A3449735441D7A3704DCD1B5141000000104D73544133333393CA1B5141AE47E1EA55735441F6285C1FC71B5141CDCCCCEC61735441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033333393CA1B5141AE47E1EA5573544107DD7131C81B5141AD7A8E335E7354413027D4A8C71B5141190EB20E60735441E8A51F20C71B5141C3E824EA6173544157442C35F31B514154ED8BD75E735441EC51B84EF31B51415C8FC2D55E7354411BCD2188011C514150E7F4015E73544153D0CC0C021C514181623DFA5D735441D508DB37031C5141BA1E414F59735441B76806E4031C5141F1E6499F567354411E988E12051C5141B28666E651735441DE85B9AEF21B5141435399E95273544133333393CA1B5141AE47E1EA55735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>482152 - 381004
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -11147  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C1FC71B5141CDCCCCEC61735441EC51B84EF31B51415C8FC2D55E735441CDCCCC0C021C5141A4703DFA5D735441295C8F12051C5141666666E651735441295C8F52081C51415C8FC2F545735441A4703D0AF21B5141AE47E13A4773544152B81E55CE1B514148E17A3449735441D7A3704DCD1B5141000000104D73544133333393CA1B5141AE47E1EA55735441F6285C1FC71B5141CDCCCCEC61735441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033333393CA1B5141AE47E1EA5573544107DD7131C81B5141AD7A8E335E7354413027D4A8C71B5141190EB20E60735441E8A51F20C71B5141C3E824EA6173544157442C35F31B514154ED8BD75E735441EC51B84EF31B51415C8FC2D55E7354411BCD2188011C514150E7F4015E73544153D0CC0C021C514181623DFA5D735441D508DB37031C5141BA1E414F59735441B76806E4031C5141F1E6499F567354411E988E12051C5141B28666E651735441DE85B9AEF21B5141435399E95273544133333393CA1B5141AE47E1EA55735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>514154 - 22172
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1547  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD703578C5141A4703DEAFC79544152B81E25678C514152B81E95077A54415C8FC205698C5141F6285CAF057A5441295C8F026A8C5141295C8F32047A5441AE47E1CA6A8C5141A4703DBA017A54417B14AE276B8C514148E17A64FE795441EC51B80E588C5141B81E85DBFA7954413D0AD703578C5141A4703DEAFC795441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000BB9222FF578C5141595E47FAFA79544145915E16578C5141B98C7EF6FC795441EAC8D35E5B8C5141F5B1A1CBFF795441B2AF0D8D5C8C5141D7EA8193007A5441B76DCC46648C5141B7DD7AAF057A54417C482925668C51416FC7D7EB067A5441D66CBA15638C51411F6CD75C047A5441ACA96EBC5C8C514164D74471FD795441BB9222FF578C5141595E47FAFA795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>514154 - 65731
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1547  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD703578C5141A4703DEAFC79544152B81E25678C514152B81E95077A54415C8FC205698C5141F6285CAF057A5441295C8F026A8C5141295C8F32047A5441AE47E1CA6A8C5141A4703DBA017A54417B14AE276B8C514148E17A64FE795441EC51B80E588C5141B81E85DBFA7954413D0AD703578C5141A4703DEAFC795441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000BB9222FF578C5141595E47FAFA79544145915E16578C5141B98C7EF6FC795441EAC8D35E5B8C5141F5B1A1CBFF795441B2AF0D8D5C8C5141D7EA8193007A5441B76DCC46648C5141B7DD7AAF057A54417C482925668C51416FC7D7EB067A5441D66CBA15638C51411F6CD75C047A5441ACA96EBC5C8C514164D74471FD795441BB9222FF578C5141595E47FAFA795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>914024 - 359091
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5650  </desc>
+<a>
+01060000000100000001030000000100000009000000F6285CBF03F25041D7A3702D269F5441295C8F72FEF150415C8FC2E5FB9E544114AE4741FCF15041F6285CCFFB9E544114AE47D1F9F15041713D0AB7FB9E5441C3F528DCF5F15041A4703D8AFD9E5441713D0AD7FAF15041F6285C0F279F5441EC51B89E01F25041EC51B86E269F5441AE47E15A02F25041CDCCCC5C269F5441F6285CBF03F25041D7A3702D269F5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000AE47E15A02F25041CDCCCC5C269F5441150383F302F2504102AD8548269F5441F1285CBF03F25041ADA3702D269F5441C224018903F25041CF90D37B249F544142494A6703F25041511FE06E239F5441F6F72584FAF150419D56435C249F5441713D0AD7FAF15041F6285C0F279F5441EC51B89E01F25041EC51B86E269F5441AE47E15A02F25041CDCCCC5C269F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>901210 - 3948111
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7198  </desc>
+<a>
+01060000000100000001030000000200000016000000EC51B8BE00E25041B81E85ABCE325441C3F528EC00E2504114AE47B1D4325441F6285C6FFEE15041713D0AA7D43254410AD7A360FEE15041CDCCCC5CD5325441E17A141EFBE15041B81E857BD5325441D7A3701DFBE1504114AE47A1D6325441AE47E1DAFAE15041713D0A77DD3254418FC2F5B8FAE15041D7A3701DDE325441EC51B8AEFBE1504100000030DE325441A4703D0A04E250410AD7A3D0DE325441A4703D9A09E25041B81E853BDF325441B81E856B09E25041A4703DFADA325441CDCCCC7C08E250417B14AE67D9325441000000C005E25041CDCCCCECD4325441713D0A3702E25041C3F528DCD43254415C8FC22502E2504100000000D4325441000000C005E25041EC51B8EED3325441CDCCCC2C06E25041B81E851BD13254413333337306E25041000000A0CF3254417B14AE8703E25041AE47E1BACE325441AE47E12A02E25041AE47E1BACE325441EC51B8BE00E25041B81E85ABCE325441050000001F85EB9107E25041E17A14BEDA32544185EB51E806E250418FC2F5C8D932544148E17AC407E250411F85EB51D932544152B81E6508E25041F6285C3FDA3254411F85EB9107E25041E17A14BEDA325441
+</a>
+
+<b>
+01060000000100000001030000000200000038000000CD67315FFBE15041527AFE29DE32544167A26B9BFBE1504114E08A2EDE3254415670F73DFBE1504162F0C368E03254414D6C80AEFAE15041F95A5CE1E13254411F85EBA1F8E1504166666696E332544114AE47B1F4E15041F6285C2FE63254411F85EB31F2E15041295C8F52E73254413D0AD783EEE15041666666E6E8325441EC51B84EEDE150418FC2F5A8E9325441B3528A91E8E15041A7FD0DC2EC325441B7CB8ED1E8E15041310E5370ED325441A041E56AE7E15041C878EBE8EE3254418C781928E6E15041D17C6278EF3254416CEAF831E4E15041EAC7E902F13254419467B8ECE2E150415132D7F3F1325441C3F528CCE3E1504114AE4791F3325441713D0A57E5E150411F85EB41F5325441AE47E11AE7E15041B81E85EBF53254419A999929E9E15041E17A14FEF5325441666666D6ECE150417B14AE67F53254419A999909F4E1504152B81E15F432544100000020F7E1504133333333F33254413D0AD753F7E15041333333E3F1325441B1AD7ED7F5E15041D18D32D4EE3254415368BCADF7E15041DF5F0627ED3254412F1AD73EFBE15041F5A10176EB3254417F028FC3FDE150410B7CBBEAEA325441CA7BA095FFE150410A6E5C12EE325441762F24A200E250417551D049F33254418FC2F5C802E25041295C8F22F33254414803365102E25041E102954FF03254417095CDD604E250415CA0EAF5EF325441A06AFEC707E250416022A63DF0325441BD37419A09E250414C59DAFAEE3254413353DBF808E250412CCBB904ED325441A4ECB90F08E25041F973CDCBE932544113C5BA0207E25041C25B036FE6325441871F773D06E250418C433912E33254419927655C07E2504166727FB0E0325441B8B5855209E2504149A53CDEDE325441B81E856B09E25041A4703DFADA325441CDCCCC7C08E250417B14AE67D9325441000000C005E25041CDCCCCECD4325441713D0A3702E25041C3F528DCD43254415C8FC22502E2504100000000D4325441000000C005E25041EC51B8EED3325441CDCCCC2C06E25041B81E851BD13254413333337306E25041000000A0CF3254417B14AE8703E25041AE47E1BACE325441AE47E12A02E25041AE47E1BACE325441EC51B8BE00E25041B81E85ABCE325441C3F528EC00E2504114AE47B1D4325441F6285C6FFEE15041713D0AA7D43254410AD7A360FEE15041CDCCCC5CD532544192B4C061FBE150411F6B0779D5325441CD67315FFBE15041527AFE29DE325441050000001F85EB9107E25041E17A14BEDA32544185EB51E806E250418FC2F5C8D932544148E17AC407E250411F85EB51D932544152B81E6508E25041F6285C3FDA3254411F85EB9107E25041E17A14BEDA325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942203 - 2939797
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19938  </desc>
+<a>
+01060000000100000001030000000100000015000000D7A3703DBAB150418FC2F5C831D45441F6285CBFC1B1504148E17AB43ED454417B14AEC7C9B15041F6285C8F4CD4544148E17A04D1B150415C8FC21558D454415C8FC205D5B15041E17A140E5FD454417B14AE17D8B1504114AE476165D454419A999999DAB1504148E17A846AD454410AD7A3B0E4B1504185EB519867D45441AE47E1EAE8B15041295C8FD264D45441C3F528ACECB150410AD7A38061D45441D7A370CDEFB15041333333B35DD45441AE47E15AF2B150417B14AE6759D45441295C8FA2F7B15041B81E855B4CD45441A4703D8AEDB15041333333E33AD4544185EB5178E7B150418FC2F5F83BD45441E17A14BEE0B15041666666C63BD45441D7A370EDD9B15041666666A63AD45441EC51B85ED3B15041EC51B8FE38D454411F85EBD1CCB15041C3F528DC36D45441AE47E12AC3B15041EC51B83E33D45441D7A3703DBAB150418FC2F5C831D45441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000D7A3703DBAB150418FC2F5C831D45441F40F17D4BDB15041FF2CE8F537D45441A148C7C9C1B15041CB5073C63ED454417588AD75C5B150418311A71B45D454418A4C2390C7B15041F6C76CBC48D45441E2543A0BCAB15041C49E72664CD45441BD466D45CDB150416E7909724AD454410AFA8BC3D2B15041A17D611E47D4544189BF2C64D8B15041DEAFAED243D454411C8A9BE3DAB15041C8E1D36242D45441F697D580DCB1504192D5D59B41D454412E7BD89CDDB150414ABB953A41D454418D9E0A46E0B1504137C888DB40D45441F61E2891E4B15041CD55495040D454419A9B2BF5E8B1504146193AE03FD45441C07A8A32EBB15041D55C5FBB3FD45441166D0362EEB1504143705CB63FD45441AA00F962F0B150413BBC50D03FD45441DB6C95CCEDB15041050003563BD45441A4703D8AEDB15041333333E33AD454417FB1C2B6ECB15041B56300093BD454412926CCFAEAB15041BCE75B583BD45441EF1AF244E9B150410DC59FA63BD4544185EB5178E7B150418FC2F5F83BD45441C4534311E7B150413F3EEFF53BD454412D82B32CE2B1504186B629D13BD45441E17A14BEE0B15041666666C63BD45441269358D9DFB150412C2AA4A03BD4544122836C10DCB150413DC9B1003BD45441D7A370EDD9B15041666666A63AD454415102C38CD7B150419BB4C70C3AD45441EC51B85ED3B15041EC51B8FE38D45441192ECCD8D2B15041BA4211D338D45441EB368C58D2B150412C8B43A938D45441FC5E3993CFB15041B48C0EC237D454411F85EBD1CCB15041C3F528DC36D45441B6BEFA57CAB150411E7BBDEE35D4544146915363C7B1504149DB5CD334D45441D14A5348C3B15041F969BF4933D4544102B9C4A0BFB15041118D5FAC32D45441D7A3703DBAB150418FC2F5C831D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942203 - 3387653
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19938  </desc>
+<a>
+01060000000100000001030000000100000015000000D7A3703DBAB150418FC2F5C831D45441F6285CBFC1B1504148E17AB43ED454417B14AEC7C9B15041F6285C8F4CD4544148E17A04D1B150415C8FC21558D454415C8FC205D5B15041E17A140E5FD454417B14AE17D8B1504114AE476165D454419A999999DAB1504148E17A846AD454410AD7A3B0E4B1504185EB519867D45441AE47E1EAE8B15041295C8FD264D45441C3F528ACECB150410AD7A38061D45441D7A370CDEFB15041333333B35DD45441AE47E15AF2B150417B14AE6759D45441295C8FA2F7B15041B81E855B4CD45441A4703D8AEDB15041333333E33AD4544185EB5178E7B150418FC2F5F83BD45441E17A14BEE0B15041666666C63BD45441D7A370EDD9B15041666666A63AD45441EC51B85ED3B15041EC51B8FE38D454411F85EBD1CCB15041C3F528DC36D45441AE47E12AC3B15041EC51B83E33D45441D7A3703DBAB150418FC2F5C831D45441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000D7A3703DBAB150418FC2F5C831D45441F40F17D4BDB15041FF2CE8F537D45441A148C7C9C1B15041CB5073C63ED454417588AD75C5B150418311A71B45D454418A4C2390C7B15041F6C76CBC48D45441E2543A0BCAB15041C49E72664CD45441BD466D45CDB150416E7909724AD454410AFA8BC3D2B15041A17D611E47D4544189BF2C64D8B15041DEAFAED243D454411C8A9BE3DAB15041C8E1D36242D45441F697D580DCB1504192D5D59B41D454412E7BD89CDDB150414ABB953A41D454418D9E0A46E0B1504137C888DB40D45441F61E2891E4B15041CD55495040D454419A9B2BF5E8B1504146193AE03FD45441C07A8A32EBB15041D55C5FBB3FD45441166D0362EEB1504143705CB63FD45441AA00F962F0B150413BBC50D03FD45441DB6C95CCEDB15041050003563BD45441A4703D8AEDB15041333333E33AD454417FB1C2B6ECB15041B56300093BD454412926CCFAEAB15041BCE75B583BD45441EF1AF244E9B150410DC59FA63BD4544185EB5178E7B150418FC2F5F83BD45441C4534311E7B150413F3EEFF53BD454412D82B32CE2B1504186B629D13BD45441E17A14BEE0B15041666666C63BD45441269358D9DFB150412C2AA4A03BD4544122836C10DCB150413DC9B1003BD45441D7A370EDD9B15041666666A63AD454415102C38CD7B150419BB4C70C3AD45441EC51B85ED3B15041EC51B8FE38D45441192ECCD8D2B15041BA4211D338D45441EB368C58D2B150412C8B43A938D45441FC5E3993CFB15041B48C0EC237D454411F85EBD1CCB15041C3F528DC36D45441B6BEFA57CAB150411E7BBDEE35D4544146915363C7B1504149DB5CD334D45441D14A5348C3B15041F969BF4933D4544102B9C4A0BFB15041118D5FAC32D45441D7A3703DBAB150418FC2F5C831D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>567473 - 1183554
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2751  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD763CC2D5141CDCCCC7C21AB5441713D0A77CC2D514114AE479122AB544114AE4731CC2D51411F85EB5126AB544152B81EF5CC2D5141713D0A4726AB544100000030CD2D51419A9999D929AB5441EC51B88ECD2D51415C8FC2552DAB544100000030CE2D514152B81E0531AB54418FC2F578D22D5141CDCCCC4C42AB54413D0AD753D82D5141D7A3708D59AB54418FC2F5B8DA2D5141C3F5285C63AB54410AD7A330DB2D5141A4703D0A65AB54410AD7A380DB2D51411F85EB2166AB544166666616DC2D514148E17AF466AB5441CDCCCCFCDC2D5141A4703DDA67AB5441CDCCCC2CDF2D5141C3F5284C69AB54418FC2F588E22D514185EB51686BAB5441D7A3709DE62D51419A9999B96DAB54418FC2F558EA2D514185EB51786FAB54418FC2F5B8EE2D51410000003071AB5441666666A6F12D5141E17A14EE71AB54413D0AD733F52D51413D0AD77372AB5441EC51B83EFA2D5141000000C072AB544148E17A34FF2D514148E17A3472AB5441295C8F52042E51416666667671AB5441CDCCCC3C0B2E51410000004070AB5441EC51B8FE112E51411F85EBE16EAB5441AE47E10A102E51416666668666AB5441CDCCCC1C122E514148E17A0466AB54417B14AE37142E5141D7A370AD65AB544166666626142E5141000000F05EAB5441666666F6142E514185EB516857AB544166666676202E51410AD7A31054AB5441A4703D0A282E5141E17A141E52AB5441A4703D4A2D2E5141CDCCCCEC51AB5441CDCCCC0C2F2E51418FC2F5F85AAB544148E17A942F2E51410AD7A3705DAB544152B81E85302E5141333333435EAB5441CDCCCC1C372E51418FC2F5985CAB544114AE47F1532E514148E17A8457AB54419A9999A94B2E5141B81E85CB2DAB544100000040492E5141CDCCCCAC24AB54418FC2F558412E5141AE47E1FA0AAB5441000000F0322E51419A9999A911AB5441F6285C7F322E51411F85EB5110AB54419A999959312E51418FC2F53810AB5441666666B6302E51413D0AD70310AB544152B81E65262E5141AE47E10A12AB544148E17A44182E5141C3F5287C14AB5441295C8FB20F2E5141AE47E1BA15AB5441EC51B80E082E5141666666C616AB54410AD7A3F0012E514148E17AC417AB54418FC2F518FC2D5141AE47E1FA18AB544152B81E65EB2D5141666666F61BAB54418FC2F558D32D51413D0AD70320AB54413D0AD763CC2D5141CDCCCC7C21AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000008FC2F558412E5141AE47E1FA0AAB5441DEB6BCC4442E514146C9893D1DAB544157BE9A57482E5141FDDB26382DAB544133434DC74C2E514168C6817140AB5441C386BB18522E5141D5D1BED757AB54414041A90E522E5141F81F85D957AB5441AE1E6B56522E5141AD07CDAF58AB54410AD7A3A0372E5141EC51B85E5DAB544185EB51C8302E5141666666165FAB54415C8FC205322E5141F6285C2F63AB544152B81E35332E514114AE476168AB544133333343392E5141295C8FC266AB54415C8FC2A5402E51417B14AE7786AB5441000000F03B2E5141D7A370ED88AB5441EC51B80E3B2E514114AE475189AB5441F6285CFF3C2E514148E17AD48AAB54418FC2F5184B2E5141E17A14AE83AB544114AE47A15B2E514152B81E157BAB54410AD7A3206A2E514185EB518873AB54417B14AEB7792E5141B81E859B6AAB544166666646892E514114AE473161AB5441B81E85EB932E514148E17AA45AAB5441E17A146EA12E5141713D0A1754AB54417B14AEA7A62E5141000000E051AB544100000090A92E5141A4703D8A46AB54410AD7A3B0AD2E51413D0AD7B336AB54419A9999F9AF2E5141666666D62DAB5441E17A146EB02E514152B81E952CAB5441B81E857BAF2E5141295C8FC22AAB544114AE47A1AA2E51418FC2F52817AB5441A4703DEAA72E5141CDCCCCEC11AB5441F6285CEF9D2E51410AD7A33016AB5441C3F528DC962E5141000000F01AAB5441CDCCCC0C942E5141F6285CCF1BAB5441B81E850B912E51418FC2F5081BAB54419A9999098B2E51413333337317AB54418FC2F578802E5141F6285C3F11AB5441D7A3701D7F2E51411F85EBC10DAB544185EB51884F2E5141B81E854B1CAB544148E17A24492E51416666660610AB54410AD7A3D0442E51411F85EBB10BAB54418FC2F558412E5141AE47E1FA0AAB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>567473 - 5293716
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2751  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD763CC2D5141CDCCCC7C21AB5441713D0A77CC2D514114AE479122AB544114AE4731CC2D51411F85EB5126AB544152B81EF5CC2D5141713D0A4726AB544100000030CD2D51419A9999D929AB5441EC51B88ECD2D51415C8FC2552DAB544100000030CE2D514152B81E0531AB54418FC2F578D22D5141CDCCCC4C42AB54413D0AD753D82D5141D7A3708D59AB54418FC2F5B8DA2D5141C3F5285C63AB54410AD7A330DB2D5141A4703D0A65AB54410AD7A380DB2D51411F85EB2166AB544166666616DC2D514148E17AF466AB5441CDCCCCFCDC2D5141A4703DDA67AB5441CDCCCC2CDF2D5141C3F5284C69AB54418FC2F588E22D514185EB51686BAB5441D7A3709DE62D51419A9999B96DAB54418FC2F558EA2D514185EB51786FAB54418FC2F5B8EE2D51410000003071AB5441666666A6F12D5141E17A14EE71AB54413D0AD733F52D51413D0AD77372AB5441EC51B83EFA2D5141000000C072AB544148E17A34FF2D514148E17A3472AB5441295C8F52042E51416666667671AB5441CDCCCC3C0B2E51410000004070AB5441EC51B8FE112E51411F85EBE16EAB5441AE47E10A102E51416666668666AB5441CDCCCC1C122E514148E17A0466AB54417B14AE37142E5141D7A370AD65AB544166666626142E5141000000F05EAB5441666666F6142E514185EB516857AB544166666676202E51410AD7A31054AB5441A4703D0A282E5141E17A141E52AB5441A4703D4A2D2E5141CDCCCCEC51AB5441CDCCCC0C2F2E51418FC2F5F85AAB544148E17A942F2E51410AD7A3705DAB544152B81E85302E5141333333435EAB5441CDCCCC1C372E51418FC2F5985CAB544114AE47F1532E514148E17A8457AB54419A9999A94B2E5141B81E85CB2DAB544100000040492E5141CDCCCCAC24AB54418FC2F558412E5141AE47E1FA0AAB5441000000F0322E51419A9999A911AB5441F6285C7F322E51411F85EB5110AB54419A999959312E51418FC2F53810AB5441666666B6302E51413D0AD70310AB544152B81E65262E5141AE47E10A12AB544148E17A44182E5141C3F5287C14AB5441295C8FB20F2E5141AE47E1BA15AB5441EC51B80E082E5141666666C616AB54410AD7A3F0012E514148E17AC417AB54418FC2F518FC2D5141AE47E1FA18AB544152B81E65EB2D5141666666F61BAB54418FC2F558D32D51413D0AD70320AB54413D0AD763CC2D5141CDCCCC7C21AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000008FC2F558412E5141AE47E1FA0AAB5441DEB6BCC4442E514146C9893D1DAB544157BE9A57482E5141FDDB26382DAB544133434DC74C2E514168C6817140AB5441C386BB18522E5141D5D1BED757AB54414041A90E522E5141F81F85D957AB5441AE1E6B56522E5141AD07CDAF58AB54410AD7A3A0372E5141EC51B85E5DAB544185EB51C8302E5141666666165FAB54415C8FC205322E5141F6285C2F63AB544152B81E35332E514114AE476168AB544133333343392E5141295C8FC266AB54415C8FC2A5402E51417B14AE7786AB5441000000F03B2E5141D7A370ED88AB5441EC51B80E3B2E514114AE475189AB5441F6285CFF3C2E514148E17AD48AAB54418FC2F5184B2E5141E17A14AE83AB544114AE47A15B2E514152B81E157BAB54410AD7A3206A2E514185EB518873AB54417B14AEB7792E5141B81E859B6AAB544166666646892E514114AE473161AB5441B81E85EB932E514148E17AA45AAB5441E17A146EA12E5141713D0A1754AB54417B14AEA7A62E5141000000E051AB544100000090A92E5141A4703D8A46AB54410AD7A3B0AD2E51413D0AD7B336AB54419A9999F9AF2E5141666666D62DAB5441E17A146EB02E514152B81E952CAB5441B81E857BAF2E5141295C8FC22AAB544114AE47A1AA2E51418FC2F52817AB5441A4703DEAA72E5141CDCCCCEC11AB5441F6285CEF9D2E51410AD7A33016AB5441C3F528DC962E5141000000F01AAB5441CDCCCC0C942E5141F6285CCF1BAB5441B81E850B912E51418FC2F5081BAB54419A9999098B2E51413333337317AB54418FC2F578802E5141F6285C3F11AB5441D7A3701D7F2E51411F85EBC10DAB544185EB51884F2E5141B81E854B1CAB544148E17A24492E51416666660610AB54410AD7A3D0442E51411F85EBB10BAB54418FC2F558412E5141AE47E1FA0AAB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574026 - 2971307
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19641  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703DBA306B51415C8FC2058C6A5441295C8F822D6B5141CDCCCCCC866A54415C8FC2E52B6B51419A9999D9826A5441CDCCCC1C2A6B5141D7A3700D7C6A5441B81E855B276B5141666666766B6A544152B81E753A6B51419A999919696A5441713D0A973E6B514114AE4701696A54417B14AEC7456B5141AE47E1FA696A54411F85EB61516B5141666666C66B6A54417B14AE175C6B51417B14AE776C6A5441E17A146E6E6B51415C8FC2B56C6A5441000000E07F6B514148E17AD46A6A54411F85EB018F6B5141CDCCCC0C6B6A5441E17A14DEA76B51411F85EB016D6A544166666636A86B5141B81E857B676A54413D0AD793A86B5141333333035C6A5441F6285C4FA86B5141F6285C0F5B6A5441A4703D1AA86B51411F85EB515A6A544148E17A14A86B5141E17A143E5A6A544100000050A76B514114AE47D1596A544185EB5188A36B51418FC2F508596A5441B81E856B996B5141713D0A87586A54410AD7A3A0956B51410AD7A3D0576A54419A999919946B514152B81EB5576A5441000000A0916B51417B14AE87576A5441000000D08D6B51417B14AEF7566A54410AD7A3F08B6B514114AE47B1566A5441CDCCCCBC866B51418FC2F5A8556A54418FC2F5587E6B51411F85EBC1536A5441B81E852B7B6B51419A999909536A5441A4703D1A776B5141713D0A27526A54417B14AE87766B5141713D0A07526A5441F6285CFF6F6B5141B81E85CB506A5441A4703DBA6D6B514185EB5188506A5441F6285CEF6A6B51415C8FC235506A5441F6285C9F666B51419A999919506A5441D7A3709D616B5141CDCCCC6C506A5441666666A65B6B514114AE4731516A5441295C8F32416B5141CDCCCC4C556A5441EC51B83E326B5141EC51B86E576A544185EB51082B6B51418FC2F598586A5441D7A370AD256B51410AD7A3B0596A5441CDCCCCFC206B514152B81EF55A6A5441EC51B89E1C6B51410AD7A3705C6A544166666696176B514152B81E655E6A54419A9999E9126B514114AE4771606A5441AE47E1FA0E6B5141713D0A47626A54418FC2F5B80A6B514114AE4721646A54415C8FC2E5086B514114AE47316E6A5441E17A14CE096B5141E17A143E6E6A5441A4703D7A0B6B514114AE4701776A5441E17A147E0C6B514166666626796A544148E17AB40F6B51411F85EB017D6A5441AE47E14A116B5141CDCCCC9C7F6A544100000060156B514114AE47518B6A54417B14AE37186B5141A4703D1A8C6A54415C8FC285206B5141C3F5289C8C6A5441295C8FB22D6B5141B81E85FB8C6A5441A4703DBA306B51415C8FC2058C6A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000019D1E0C2276B51412D929D696B6A54417D97CB47276B51412B5BFEE26A6A544106166136266B5141297F6E05666A54419593AF6E246B514107CCB1D95F6A544120348C11236B5141344E24655A6A54416CCAF5C2216B5141AEE990BF5A6A5441EC3DED31246B5141FCCD3F46616A5441DA40C254266B5141315AB72C6A6A54414BC3731C286B5141093D3806746A544119EF1BF1286B514124F13BE87A6A544133C78FF52A6B5141667B2562826A5441A44941BD2C6B5141BF01F302876A54416BB661D72F6B51415CCAA24D8C6A5441A4703DBA306B51415C8FC2058C6A5441295C8F822D6B5141CDCCCCCC866A54415C8FC2E52B6B51419A9999D9826A5441CDCCCC1C2A6B5141D7A3700D7C6A5441B81E855B276B5141666666766B6A544119D1E0C2276B51412D929D696B6A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574026 - 3510680
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19641  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703DBA306B51415C8FC2058C6A5441295C8F822D6B5141CDCCCCCC866A54415C8FC2E52B6B51419A9999D9826A5441CDCCCC1C2A6B5141D7A3700D7C6A5441B81E855B276B5141666666766B6A544152B81E753A6B51419A999919696A5441713D0A973E6B514114AE4701696A54417B14AEC7456B5141AE47E1FA696A54411F85EB61516B5141666666C66B6A54417B14AE175C6B51417B14AE776C6A5441E17A146E6E6B51415C8FC2B56C6A5441000000E07F6B514148E17AD46A6A54411F85EB018F6B5141CDCCCC0C6B6A5441E17A14DEA76B51411F85EB016D6A544166666636A86B5141B81E857B676A54413D0AD793A86B5141333333035C6A5441F6285C4FA86B5141F6285C0F5B6A5441A4703D1AA86B51411F85EB515A6A544148E17A14A86B5141E17A143E5A6A544100000050A76B514114AE47D1596A544185EB5188A36B51418FC2F508596A5441B81E856B996B5141713D0A87586A54410AD7A3A0956B51410AD7A3D0576A54419A999919946B514152B81EB5576A5441000000A0916B51417B14AE87576A5441000000D08D6B51417B14AEF7566A54410AD7A3F08B6B514114AE47B1566A5441CDCCCCBC866B51418FC2F5A8556A54418FC2F5587E6B51411F85EBC1536A5441B81E852B7B6B51419A999909536A5441A4703D1A776B5141713D0A27526A54417B14AE87766B5141713D0A07526A5441F6285CFF6F6B5141B81E85CB506A5441A4703DBA6D6B514185EB5188506A5441F6285CEF6A6B51415C8FC235506A5441F6285C9F666B51419A999919506A5441D7A3709D616B5141CDCCCC6C506A5441666666A65B6B514114AE4731516A5441295C8F32416B5141CDCCCC4C556A5441EC51B83E326B5141EC51B86E576A544185EB51082B6B51418FC2F598586A5441D7A370AD256B51410AD7A3B0596A5441CDCCCCFC206B514152B81EF55A6A5441EC51B89E1C6B51410AD7A3705C6A544166666696176B514152B81E655E6A54419A9999E9126B514114AE4771606A5441AE47E1FA0E6B5141713D0A47626A54418FC2F5B80A6B514114AE4721646A54415C8FC2E5086B514114AE47316E6A5441E17A14CE096B5141E17A143E6E6A5441A4703D7A0B6B514114AE4701776A5441E17A147E0C6B514166666626796A544148E17AB40F6B51411F85EB017D6A5441AE47E14A116B5141CDCCCC9C7F6A544100000060156B514114AE47518B6A54417B14AE37186B5141A4703D1A8C6A54415C8FC285206B5141C3F5289C8C6A5441295C8FB22D6B5141B81E85FB8C6A5441A4703DBA306B51415C8FC2058C6A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000019D1E0C2276B51412D929D696B6A54417D97CB47276B51412B5BFEE26A6A544106166136266B5141297F6E05666A54419593AF6E246B514107CCB1D95F6A544120348C11236B5141344E24655A6A54416CCAF5C2216B5141AEE990BF5A6A5441EC3DED31246B5141FCCD3F46616A5441DA40C254266B5141315AB72C6A6A54414BC3731C286B5141093D3806746A544119EF1BF1286B514124F13BE87A6A544133C78FF52A6B5141667B2562826A5441A44941BD2C6B5141BF01F302876A54416BB661D72F6B51415CCAA24D8C6A5441A4703DBA306B51415C8FC2058C6A5441295C8F822D6B5141CDCCCCCC866A54415C8FC2E52B6B51419A9999D9826A5441CDCCCC1C2A6B5141D7A3700D7C6A5441B81E855B276B5141666666766B6A544119D1E0C2276B51412D929D696B6A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574745 - 245591
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -41320  </desc>
+<a>
+0106000000010000000103000000010000004F000000AE47E14AE8B850416666662686285441A4703D6AEDB8504114AE479188285441295C8FB2FBB8504152B81E258D2854413333336302B95041CDCCCCCC91285441A4703DDA06B950410AD7A38093285441B81E855B0FB9504148E17AD484285441C3F5287C11B95041E17A149E842854419A99992916B95041EC51B8DE882854417B14AE2720B95041000000509028544114AE47C11CB950413D0AD73395285441713D0AD71AB95041EC51B84E9A285441AE47E1BA1FB95041F6285C8F9E285441666666462CB95041000000F0A4285441F6285C3F39B9504114AE4761AC285441CDCCCC0C40B9504185EB51C8AF2854413D0AD77343B95041C3F5288CB228544152B81E655DB950411F85EB41C5285441A4703DDA6BB95041A4703D1AD02854411F85EB7172B950417B14AEB7D3285441EC51B8EE73B95041AE47E16AD5285441A4703D5A7EB950418FC2F528DB28544185EB514887B950419A999959DE285441A4703D0A90B9504185EB5168E12854413D0AD753A6B9504114AE4731E9285441295C8F72B2B9504185EB5198EC285441C3F5285CB4B9504148E17AD4E92854418FC2F598B1B950413D0AD773E32854417B14AE47ACB950410AD7A330CE28544133333323A3B9504166666656CD28544152B81E359AB950411F85EB21C328544114AE478198B95041D7A3700DBB28544114AE475195B950419A999949B8285441A4703DEA91B95041713D0AE7BB2854419A9999C98FB95041AE47E1BABF285441C3F5282C8CB9504152B81ED5C42854411F85EB1187B9504114AE47F1BF2854419A9999297BB9504100000090B928544114AE475170B95041295C8FE2B42854419A99997965B9504152B81E35B02854416666667654B95041AE47E12AAC2854410000002052B950413D0AD7B3A7285441AE47E1BA44B9504133333373A3285441333333133DB95041F6285CAFA02854418FC2F5183AB950418FC2F5689F285441E17A14BE30B95041AE47E18A97285441000000102CB95041A4703D5A942854411F85EB1122B950418FC2F5E88C285441D7A3701D1CB9504152B81E15892854419A99992916B95041666666E67B2854415C8FC22515B950413D0AD7A377285441C3F5286C10B95041EC51B83E7428544114AE47410AB95041B81E858B722854419A99991902B95041E17A140E70285441713D0A47F7B85041C3F528BC7328544166666666EEB850415C8FC29576285441E17A147EEDB85041000000207728544166666656EDB85041000000B07B285441295C8F12ECB850415C8FC2A57F2854411F85EBC1E8B850418FC2F568852854417B14AE77E9B85041000000708328544185EB5148EBB85041D7A3707D7F2854415C8FC245ECB85041295C8F127828544185EB5188E6B8504152B81E75742854419A999979DBB8504185EB51F872285441295C8F12D8B85041AE47E15A6F285441C3F528DCD7B85041CDCCCC8C682854410AD7A350CBB8504100000020682854415C8FC205C3B850413D0AD7D369285441AE47E1BABAB850410000001067285441CDCCCCECB3B850411F85EB41602854417B14AE97A7B850410AD7A310422854419A9999999DB8504166666636412854418FC2F5789BB850417B14AEA7482854415C8FC2D59AB85041D7A3702D58285441295C8FE2AFB850415C8FC225652854411F85EB31BFB85041AE47E15A6F285441AE47E14ACEB85041C3F528EC7828544152B81EB5E0B8504114AE479182285441AE47E14AE8B850416666662686285441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000000000002052B950413D0AD7B3A7285441AE47E1BA44B9504133333373A3285441333333133DB95041F6285CAFA02854418FC2F5183AB950418FC2F5689F285441E17A14BE30B95041AE47E18A97285441000000102CB95041A4703D5A942854411F85EB1122B950418FC2F5E88C285441D7A3701D1CB9504152B81E15892854419A99992916B95041666666E67B2854415C8FC22515B950413D0AD7A377285441C3F5286C10B95041EC51B83E7428544114AE47410AB95041B81E858B722854419A99991902B95041E17A140E70285441713D0A47F7B85041C3F528BC7328544166666666EEB850415C8FC29576285441E17A147EEDB85041000000207728544166666656EDB85041000000B07B285441295C8F12ECB850415C8FC2A57F285441B5189F6EEAB850415A5FBE7F822854411F85EBC1E8B850418FC2F568852854417B14AE77E9B85041000000708328544185EB5148EBB85041D7A3707D7F2854415C8FC245ECB85041295C8F127828544185EB5188E6B8504152B81E75742854419A999979DBB8504185EB51F872285441295C8F12D8B85041AE47E15A6F285441C3F528DCD7B85041CDCCCC8C682854410AD7A350CBB8504100000020682854415C8FC205C3B850413D0AD7D369285441AE47E1BABAB850410000001067285441CDCCCCECB3B850411F85EB41602854417B14AE97A7B850410AD7A310422854419A9999999DB8504166666636412854418FC2F5789BB850417B14AEA7482854415C8FC2D59AB85041D7A3702D58285441295C8FE2AFB850415C8FC22565285441267370E2BDB85041A739357B6E285441AE47E14ACEB85041C3F528EC7828544152B81EB5E0B8504114AE479182285441A4703D6AEDB8504114AE479188285441295C8FB2FBB8504152B81E258D2854413333336302B95041CDCCCCCC91285441A4703DDA06B950410AD7A38093285441B81E855B0FB9504148E17AD484285441C3F5287C11B95041E17A149E842854419A99992916B95041EC51B8DE882854417B14AE2720B95041000000509028544114AE47C11CB950413D0AD73395285441713D0AD71AB95041EC51B84E9A285441AE47E1BA1FB95041F6285C8F9E285441666666462CB95041000000F0A4285441F6285C3F39B9504114AE4761AC285441CDCCCC0C40B9504185EB51C8AF2854414B167F424DB950419317DF9EB928544170F4926B57B9504123ACCBF2C02854415425E1B75AB9504179D27E1FB8285441D874EF745FB950419D2D41C7AE285441C8616E0A57B9504125859EC7AC2854416666667654B95041AE47E12AAC2854410000002052B950413D0AD7B3A7285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585200 - 234388
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -3963  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703D3A2BE250416666663662F054410AD7A3E031E25041666666D655F05441713D0A2732E250415C8FC24555F054416666664634E25041E17A14DE4EF05441713D0A5736E2504152B81EA548F054417B14AE5740E25041EC51B88E49F0544148E17AB440E25041C3F5285C42F054411F85EB0141E25041F6285C3F3BF05441E17A148E44E250413333337337F05441713D0A9749E25041713D0AE731F054415C8FC24548E25041666666D62CF05441000000C039E250417B14AE8732F0544114AE47F12AE2504148E17A5438F0544114AE47512BE25041666666D63CF05441C3F528AC2BE25041D7A3704D47F054410AD7A3501FE2504148E17A0446F054410AD7A3D019E250413D0AD76345F0544148E17AA419E25041F6285CDF48F05441CDCCCC7C19E2504148E17A1451F05441F6285CCF19E250416666662654F0544185EB51B81FE250410AD7A3D058F05441A4703D3A2BE250416666663662F05441
+</a>
+
+<b>
+0106000000010000000103000000010000000700000014AE47512BE25041666666D63CF05441806122A72BE2504181BC49B946F05441AC1FED5E40E25041731BD8FE48F054415D7F116C40E25041A7E2E7F947F0544113B1CCAC40E25041C2B6302A3BF05441D64D80502BE25041AFE609CD3CF0544114AE47512BE25041666666D63CF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585200 - 396850
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -3963  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703D3A2BE250416666663662F054410AD7A3E031E25041666666D655F05441713D0A2732E250415C8FC24555F054416666664634E25041E17A14DE4EF05441713D0A5736E2504152B81EA548F054417B14AE5740E25041EC51B88E49F0544148E17AB440E25041C3F5285C42F054411F85EB0141E25041F6285C3F3BF05441E17A148E44E250413333337337F05441713D0A9749E25041713D0AE731F054415C8FC24548E25041666666D62CF05441000000C039E250417B14AE8732F0544114AE47F12AE2504148E17A5438F0544114AE47512BE25041666666D63CF05441C3F528AC2BE25041D7A3704D47F054410AD7A3501FE2504148E17A0446F054410AD7A3D019E250413D0AD76345F0544148E17AA419E25041F6285CDF48F05441CDCCCC7C19E2504148E17A1451F05441F6285CCF19E250416666662654F0544185EB51B81FE250410AD7A3D058F05441A4703D3A2BE250416666663662F05441
+</a>
+
+<b>
+0106000000010000000103000000010000000700000014AE47512BE25041666666D63CF05441806122A72BE2504181BC49B946F05441AC1FED5E40E25041731BD8FE48F054415D7F116C40E25041A7E2E7F947F0544113B1CCAC40E25041C2B6302A3BF05441D64D80502BE25041AFE609CD3CF0544114AE47512BE25041666666D63CF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>869229 - 52271
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -23889  </desc>
+<a>
+01060000000100000001030000000200000031000000B81E856B4E745141C3F5288C537954415C8FC2455074514148E17AC45A795441CDCCCC1C65745141B81E85DB567954419A999959657451411F85EBB15179544152B81EB5787451419A9999B94B7954418FC2F59878745141B81E859B4A7954411F85EB617D745141A4703D8A45795441666666268074514152B81EE542795441666666C68174514114AE47C1417954416666669681745141A4703DCA4079544148E17A44837451415C8FC2D53F795441CDCCCC6C8374514114AE47013E7954419A99998989745141666666C63C7954419A9999898E7451415C8FC2353C79544114AE47A195745141C3F5280C3B7954418FC2F5F8947451418FC2F5383A795441295C8F229574514100000010397954413333332394745141A4703D1A36795441000000E093745141666666A634795441B81E85DB93745141C3F528BC32795441000000C094745141333333A32D795441CDCCCC2C927451411F85EB212F7954411F85EB5190745141713D0A173079544185EB51588E7451413D0AD76330795441B81E853B8B74514185EB51F82F795441295C8FC2877451417B14AE77317954417B14AED785745141E17A14EE30795441EC51B8FE8074514152B81E8534795441E17A149E7F7451415C8FC2153379544133333373837451417B14AE0730795441D7A370AD7F745141A4703D2A2A795441A4703DFA8D745141AE47E14A1F79544114AE47C18B74514114AE4731197954417B14AEC78674514148E17A1418795441713D0AC7817451415C8FC2F51A7954417B14AE6784745141B81E857B1F7954415C8FC2C57C745141AE47E1CA22795441AE47E17A717451413333337327795441C3F528BC6D745141713D0A2729795441EC51B88E6F7451413D0AD7832D795441713D0AD772745141A4703D1A35795441295C8FF26B7451416666661638795441666666D663745141AE47E13A3C795441EC51B80E637451417B14AE2731795441BF56387C627451418058765C2A7954419A9999F9587451417B14AEE72E79544152B81E154E745141333333B334795441A4703D6A4774514185EB512838795441B81E856B4E745141C3F5288C537954410A00000014AE476190745141E17A142E35795441F6285C1F8F745141E17A142E3579544185EB51588E745141713D0A5734795441A4703D2A8E74514148E17A3433795441295C8FD28E74514100000020327954411F85EB519074514148E17AC4317954417B14AE3791745141B81E858B3279544148E17A84917451410AD7A380337954418FC2F51891745141295C8FC23479544114AE476190745141E17A142E35795441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000027AF488C4B745141FBF6565148795441B81E856B4E745141C3F5288C53795441F647DB714E7451419C3ADBA453795441B8DE4E12657451417B6542224E795441F478CA4E65745141026F80AD51795441559B128F77745141315349144C795441AB40C9E07774514112DB15FB4B79544184309EF5777451413323A9F44B7954411505735778745141231F7DD64B7954411F13249078745141702F01C54B7954411F13249078745141B8C1885A4A795441B5753E2577745141AA0FF241417954414CD858BA75745141D8350C6A3C79544127AF488C4B745141FBF6565148795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>648567 - 2953060
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -12023  </desc>
+<a>
+01060000000100000001030000000100000066000000F6285C1F85AB5041F6285C6F873254418FC2F51899AB5041D7A3700D8E32544185EB51F8A7AB504152B81E059332544152B81E15A7AB5041B81E852B9132544148E17AF4A5AB50410AD7A3408F325441AE47E12AA5AB5041000000608D3254413D0AD7D3A4AB50411F85EB318B325441D7A370DDA4AB50413D0AD70389325441AE47E12AA5AB50411F85EBC18632544148E17AF4A5AB50418FC2F5888132544152B81E55A6AB5041CDCCCCEC7D325441B81E857BA6AB504114AE47217A32544185EB5168A6AB50411F85EBB1753254413D0AD743A4AB504185EB51D87532544166666696A3AB5041E17A141E6F32544166666696A3AB50418FC2F5986C325441A4703D3AA2AB5041B81E850B6C3254411F85EBF1A1AB5041666666966B32544152B81E85A1AB5041E17A141E6A325441AE47E1CA9FAB504114AE47A169325441EC51B8AE9FAB5041B81E851B68325441EC51B89E9FAB50413D0AD7A366325441713D0AD79FAB5041AE47E10A6332544152B81E35A0AB5041713D0A2763325441A4703DFAA0AB5041E17A141E6332544148E17A74A1AB5041A4703D4A60325441713D0AD7A3AB5041EC51B89E603254411F85EBC1A4AB5041A4703D9A5E325441295C8F22A5AB50410AD7A3005D3254417B14AE67A4AB504185EB51E85A3254411F85EBA1A7AB50419A9999B95A3254417B14AE87A7AB5041AE47E1FA593254415C8FC245A7AB5041A4703DDA5732544114AE4771A7AB504152B81EF556325441AE47E1AAA7AB5041C3F5283C5632544166666676A8AB50415C8FC275553254411F85EBE1A8AB5041333333F353325441D7A3702DA9AB504148E17A045332544148E17A84A8AB50411F85EB215232544148E17A44A8AB504133333343513254415C8FC215A8AB5041A4703D5A4F325441D7A3702DA0AB5041295C8FF257325441666666B69EAB5041B81E856B58325441333333A396AB504148E17AB45D32544185EB514895AB504185EB51F8663254411F85EB118DAB5041C3F5280C68325441A4703D8A89AB5041000000D0693254418FC2F52886AB50418FC2F5B86B3254411F85EB2180AB50419A9999696D325441C3F5284C79AB504114AE47F170325441B81E859B72AB504152B81E6574325441EC51B8EE6EAB5041CDCCCCEC77325441713D0AF76AAB5041EC51B8FE7C325441DECD501066AB5041FA7B472283325441581E45FE63AB50417C1675A0823254416A8041015DAB5041814F05FF803254417DA19BC855AB504132C8B4497F325441E149464550AB50413683891F7E3254418F443A074FAB5041860ADAD47F3254413F7C47164DAB5041D554113D823254419BB2D1D54AAB504122622F5885325441F3E85B9548AB5041C8ADE90F88325441FB9B1E8E45AB5041BEFEAF058C32544100D125FE42AB50410B0CCE208F325441094346BB3FAB5041011CF2DA923254411037ABEF3CAB5041A4A84ECE953254411E60179437AB5041967FE2299B325441218D0C2733AB50418F52ED969F325441FC498B072FAB5041E7F0A762A3325441965969E728AB5041DBFEB2D5A93254413A233FA923AB5041C2220F0DB032544156FCB54820AB5041ACE84FB3B3325441616A4D171CAB50414D389359B73254410B2CB17A1CAB504147814772B9325441057565931EAB504198089827BB325441FD0245D621AB50419310AA04BD3254414951052D25AB5041375C64BCBF3254415BE7EA852BAB504161E11872B932544104463C553AAB50411110ECF8A8325441D040E99741AB5041FF55FCF2A03254418EE78DBA4AAB5041EE8AA47D953254419F3649464EAB5041D060E3CF90325441338C6BD050AB5041BB3F52418C3254419268B41252AB5041F87099AE8C32544121FC80EB5DAB50412C351BBF90325441594B3A915FAB5041B194A12591325441569065BB60AB50410B4D705C8F325441FB59DBFB62AB5041108600BB8D3254419D27DA2A66AB504111C319088D325441E8F7DEF869AB5041BB847D6B8D325441E1C2D7886CAB50410C0CCE208F325441870A09526EAB5041AED9CC4F92325441D6D6843171AB5041A4228168943254417BA0FA7173AB5041F4A9D11D9632544171F1C06777AB5041482D99E4963254411241040E7BAB5041F5682FE2953254410518986980AB5041A26323A494325441FCE619E883AB5041509FB9A19332544178A9A70885AB50411A93BBFD903254414B2DC86185AB5041B6C9A8958E3254414BEC252685AB50416AF9A3C78A325441F6285C1F85AB5041F6285C6F87325441
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000008FC2F5D8A7AB5041666666B65A32544100000020A9AB50413D0AD7A35A325441CDCCCCACA9AB50418FC2F5085C325441713D0AC7AAAB5041A4703DEA603254417B14AE37ABAB504166666606653254410AD7A340ABAB50417B14AE376832544148E17A44ABAB5041A4703DFA6B3254417B14AE07ABAB5041A4703DAA6E325441D7A370DDA9AB5041EC51B89E70325441EC51B8BEA6AB504152B81E95703254419A999939A7AB5041A4703DAA76325441D7A3703DA7AB5041713D0A477A32544148E17A14A7AB504185EB51F87D32544152B81EB5A6AB5041000000A0813254418FC2F5B8A5AB50419A9999A988325441D7A370ADA5AB50417B14AE778B3254411F85EB31A6AB5041A4703DEA8D325441A4703D0AA7AB504114AE47E18F325441333333B3A9AB50413D0AD79393325441295C8F82ACAB504114AE4781943254418FC2F538ADAB5041D7A370BD94325441B81E854BADAB5041AE47E12A943254419A999939ADAB5041C3F5287C9332544148E17A24ADAB5041A4703DDA91325441B81E85CBACAB5041295C8FD28F3254415C8FC245ACAB50411F85EB718D325441F6285CCFABAB5041000000608A325441E17A14AEACAB5041295C8FA2883254418FC2F5B8ADAB504148E17A248632544100000030AEAB50410AD7A320833254410AD7A370AFAB504148E17A6483325441AE47E14AB0AB5041666666A683325441AE47E1FABEAB5041EC51B80E883254418FC2F508C7AB5041F6285C7F8A32544114AE47A1C8AB504148E17AA48332544148E17A14C0AB5041A4703DBA8032544185EB51C8B9AB504148E17A047F32544152B81EF5B6AB50410AD7A3C07C325441295C8F12B8AB5041E17A14EE793254417B14AE97B7AB504148E17A54773254410AD7A3D0B6AB50411F85EBF16C3254415C8FC2A5B8AB5041713D0AC763325441CDCCCCACB8AB50419A9999796332544152B81EB5B8AB5041666666A662325441A4703DCAB8AB5041F6285C0F613254417B14AED7B7AB504114AE47815B32544185EB5128B3AB5041000000D055325441F6285C0FAFAB504152B81E25553254410AD7A320A9AB5041F6285CFF533254411F85EBE1A8AB5041333333F353325441D7A3702DA9AB504148E17A045332544148E17A84A8AB50411F85EB215232544148E17A44A8AB504133333343513254415C8FC215A8AB5041A4703D5A4F325441D7A3702DA0AB5041295C8FF257325441666666B69EAB5041B81E856B58325441333333A396AB504148E17AB45D32544185EB514895AB504185EB51F8663254411F85EB118DAB5041C3F5280C68325441A4703D8A89AB5041000000D0693254418FC2F52886AB50418FC2F5B86B3254411F85EB2180AB50419A9999696D325441C3F5284C79AB504114AE47F170325441B81E859B72AB504152B81E6574325441EC51B8EE6EAB5041CDCCCCEC77325441713D0AF76AAB5041EC51B8FE7C325441E3CD501066AB5041F57B472283325441581E45FE63AB5041781675A082325441688041015DAB5041804F05FF803254417CA19BC855AB504134C8B4497F325441E649464550AB50413783891F7E3254418A443A074FAB5041830ADAD47F325441407C47164DAB5041D254113D823254419AB2D1D54AAB504123622F5885325441F4E85B9548AB5041C4ADE90F88325441AC57EE9747AB50412593515B89325441E54882DC50AB504174FDAD1C8C32544146A547FE50AB50419600DF508C3254419268B41252AB5041F57099AE8C3254411FFC80EB5DAB504130351BBF90325441554B3A915FAB5041B094A12591325441539065BB60AB50410F4D705C8F325441F959DBFB62AB50410D8600BB8D3254419E27DA2A66AB504115C319088D325441E8F7DEF869AB5041BB847D6B8D325441E0C2D7886CAB5041070CCE208F3254418B0A09526EAB5041ADD9CC4F92325441D4D6843171AB5041A0228168943254417AA0FA7173AB5041F7A9D11D963254416DF1C06777AB5041432D99E4963254410D41040E7BAB5041F9682FE2953254410518986980AB50419D6323A494325441FCE619E883AB5041539FB9A1933254417DA9A70885AB50411E93BBFD903254414B2DC86185AB5041B8C9A8958E3254414EEC252685AB50416FF9A3C78A325441F6285C1F85AB5041F6285C6F873254418FC2F51899AB5041D7A3700D8E32544185EB51F8A7AB504152B81E059332544152B81E15A7AB5041B81E852B9132544148E17AF4A5AB50410AD7A3408F325441AE47E12AA5AB5041000000608D3254413D0AD7D3A4AB50411F85EB318B325441D7A370DDA4AB50413D0AD70389325441AE47E12AA5AB50411F85EBC18632544148E17AF4A5AB50418FC2F5888132544152B81E55A6AB5041CDCCCCEC7D325441B81E857BA6AB504114AE47217A32544185EB5168A6AB50411F85EBB1753254413D0AD743A4AB504185EB51D87532544166666696A3AB5041E17A141E6F32544166666696A3AB50418FC2F5986C325441A4703D3AA2AB5041B81E850B6C3254411F85EBF1A1AB5041666666966B32544152B81E85A1AB5041E17A141E6A325441AE47E1CA9FAB504114AE47A169325441EC51B8AE9FAB5041B81E851B68325441EC51B89E9FAB50413D0AD7A366325441713D0AD79FAB5041AE47E10A6332544152B81E35A0AB5041713D0A2763325441A4703DFAA0AB5041E17A141E6332544148E17A74A1AB5041A4703D4A60325441713D0AD7A3AB5041EC51B89E603254411F85EBC1A4AB5041A4703D9A5E325441295C8F22A5AB50410AD7A3005D3254417B14AE67A4AB504185EB51E85A3254418FC2F5D8A7AB5041666666B65A325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>648567 - 3411830
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -12023  </desc>
+<a>
+01060000000100000001030000000100000066000000F6285C1F85AB5041F6285C6F873254418FC2F51899AB5041D7A3700D8E32544185EB51F8A7AB504152B81E059332544152B81E15A7AB5041B81E852B9132544148E17AF4A5AB50410AD7A3408F325441AE47E12AA5AB5041000000608D3254413D0AD7D3A4AB50411F85EB318B325441D7A370DDA4AB50413D0AD70389325441AE47E12AA5AB50411F85EBC18632544148E17AF4A5AB50418FC2F5888132544152B81E55A6AB5041CDCCCCEC7D325441B81E857BA6AB504114AE47217A32544185EB5168A6AB50411F85EBB1753254413D0AD743A4AB504185EB51D87532544166666696A3AB5041E17A141E6F32544166666696A3AB50418FC2F5986C325441A4703D3AA2AB5041B81E850B6C3254411F85EBF1A1AB5041666666966B32544152B81E85A1AB5041E17A141E6A325441AE47E1CA9FAB504114AE47A169325441EC51B8AE9FAB5041B81E851B68325441EC51B89E9FAB50413D0AD7A366325441713D0AD79FAB5041AE47E10A6332544152B81E35A0AB5041713D0A2763325441A4703DFAA0AB5041E17A141E6332544148E17A74A1AB5041A4703D4A60325441713D0AD7A3AB5041EC51B89E603254411F85EBC1A4AB5041A4703D9A5E325441295C8F22A5AB50410AD7A3005D3254417B14AE67A4AB504185EB51E85A3254411F85EBA1A7AB50419A9999B95A3254417B14AE87A7AB5041AE47E1FA593254415C8FC245A7AB5041A4703DDA5732544114AE4771A7AB504152B81EF556325441AE47E1AAA7AB5041C3F5283C5632544166666676A8AB50415C8FC275553254411F85EBE1A8AB5041333333F353325441D7A3702DA9AB504148E17A045332544148E17A84A8AB50411F85EB215232544148E17A44A8AB504133333343513254415C8FC215A8AB5041A4703D5A4F325441D7A3702DA0AB5041295C8FF257325441666666B69EAB5041B81E856B58325441333333A396AB504148E17AB45D32544185EB514895AB504185EB51F8663254411F85EB118DAB5041C3F5280C68325441A4703D8A89AB5041000000D0693254418FC2F52886AB50418FC2F5B86B3254411F85EB2180AB50419A9999696D325441C3F5284C79AB504114AE47F170325441B81E859B72AB504152B81E6574325441EC51B8EE6EAB5041CDCCCCEC77325441713D0AF76AAB5041EC51B8FE7C325441DECD501066AB5041FA7B472283325441581E45FE63AB50417C1675A0823254416A8041015DAB5041814F05FF803254417DA19BC855AB504132C8B4497F325441E149464550AB50413683891F7E3254418F443A074FAB5041860ADAD47F3254413F7C47164DAB5041D554113D823254419BB2D1D54AAB504122622F5885325441F3E85B9548AB5041C8ADE90F88325441FB9B1E8E45AB5041BEFEAF058C32544100D125FE42AB50410B0CCE208F325441094346BB3FAB5041011CF2DA923254411037ABEF3CAB5041A4A84ECE953254411E60179437AB5041967FE2299B325441218D0C2733AB50418F52ED969F325441FC498B072FAB5041E7F0A762A3325441965969E728AB5041DBFEB2D5A93254413A233FA923AB5041C2220F0DB032544156FCB54820AB5041ACE84FB3B3325441616A4D171CAB50414D389359B73254410B2CB17A1CAB504147814772B9325441057565931EAB504198089827BB325441FD0245D621AB50419310AA04BD3254414951052D25AB5041375C64BCBF3254415BE7EA852BAB504161E11872B932544104463C553AAB50411110ECF8A8325441D040E99741AB5041FF55FCF2A03254418EE78DBA4AAB5041EE8AA47D953254419F3649464EAB5041D060E3CF90325441338C6BD050AB5041BB3F52418C3254419268B41252AB5041F87099AE8C32544121FC80EB5DAB50412C351BBF90325441594B3A915FAB5041B194A12591325441569065BB60AB50410B4D705C8F325441FB59DBFB62AB5041108600BB8D3254419D27DA2A66AB504111C319088D325441E8F7DEF869AB5041BB847D6B8D325441E1C2D7886CAB50410C0CCE208F325441870A09526EAB5041AED9CC4F92325441D6D6843171AB5041A4228168943254417BA0FA7173AB5041F4A9D11D9632544171F1C06777AB5041482D99E4963254411241040E7BAB5041F5682FE2953254410518986980AB5041A26323A494325441FCE619E883AB5041509FB9A19332544178A9A70885AB50411A93BBFD903254414B2DC86185AB5041B6C9A8958E3254414BEC252685AB50416AF9A3C78A325441F6285C1F85AB5041F6285C6F87325441
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000008FC2F5D8A7AB5041666666B65A32544100000020A9AB50413D0AD7A35A325441CDCCCCACA9AB50418FC2F5085C325441713D0AC7AAAB5041A4703DEA603254417B14AE37ABAB504166666606653254410AD7A340ABAB50417B14AE376832544148E17A44ABAB5041A4703DFA6B3254417B14AE07ABAB5041A4703DAA6E325441D7A370DDA9AB5041EC51B89E70325441EC51B8BEA6AB504152B81E95703254419A999939A7AB5041A4703DAA76325441D7A3703DA7AB5041713D0A477A32544148E17A14A7AB504185EB51F87D32544152B81EB5A6AB5041000000A0813254418FC2F5B8A5AB50419A9999A988325441D7A370ADA5AB50417B14AE778B3254411F85EB31A6AB5041A4703DEA8D325441A4703D0AA7AB504114AE47E18F325441333333B3A9AB50413D0AD79393325441295C8F82ACAB504114AE4781943254418FC2F538ADAB5041D7A370BD94325441B81E854BADAB5041AE47E12A943254419A999939ADAB5041C3F5287C9332544148E17A24ADAB5041A4703DDA91325441B81E85CBACAB5041295C8FD28F3254415C8FC245ACAB50411F85EB718D325441F6285CCFABAB5041000000608A325441E17A14AEACAB5041295C8FA2883254418FC2F5B8ADAB504148E17A248632544100000030AEAB50410AD7A320833254410AD7A370AFAB504148E17A6483325441AE47E14AB0AB5041666666A683325441AE47E1FABEAB5041EC51B80E883254418FC2F508C7AB5041F6285C7F8A32544114AE47A1C8AB504148E17AA48332544148E17A14C0AB5041A4703DBA8032544185EB51C8B9AB504148E17A047F32544152B81EF5B6AB50410AD7A3C07C325441295C8F12B8AB5041E17A14EE793254417B14AE97B7AB504148E17A54773254410AD7A3D0B6AB50411F85EBF16C3254415C8FC2A5B8AB5041713D0AC763325441CDCCCCACB8AB50419A9999796332544152B81EB5B8AB5041666666A662325441A4703DCAB8AB5041F6285C0F613254417B14AED7B7AB504114AE47815B32544185EB5128B3AB5041000000D055325441F6285C0FAFAB504152B81E25553254410AD7A320A9AB5041F6285CFF533254411F85EBE1A8AB5041333333F353325441D7A3702DA9AB504148E17A045332544148E17A84A8AB50411F85EB215232544148E17A44A8AB504133333343513254415C8FC215A8AB5041A4703D5A4F325441D7A3702DA0AB5041295C8FF257325441666666B69EAB5041B81E856B58325441333333A396AB504148E17AB45D32544185EB514895AB504185EB51F8663254411F85EB118DAB5041C3F5280C68325441A4703D8A89AB5041000000D0693254418FC2F52886AB50418FC2F5B86B3254411F85EB2180AB50419A9999696D325441C3F5284C79AB504114AE47F170325441B81E859B72AB504152B81E6574325441EC51B8EE6EAB5041CDCCCCEC77325441713D0AF76AAB5041EC51B8FE7C325441E3CD501066AB5041F57B472283325441581E45FE63AB5041781675A082325441688041015DAB5041804F05FF803254417CA19BC855AB504134C8B4497F325441E649464550AB50413783891F7E3254418A443A074FAB5041830ADAD47F325441407C47164DAB5041D254113D823254419AB2D1D54AAB504123622F5885325441F4E85B9548AB5041C4ADE90F88325441AC57EE9747AB50412593515B89325441E54882DC50AB504174FDAD1C8C32544146A547FE50AB50419600DF508C3254419268B41252AB5041F57099AE8C3254411FFC80EB5DAB504130351BBF90325441554B3A915FAB5041B094A12591325441539065BB60AB50410F4D705C8F325441F959DBFB62AB50410D8600BB8D3254419E27DA2A66AB504115C319088D325441E8F7DEF869AB5041BB847D6B8D325441E0C2D7886CAB5041070CCE208F3254418B0A09526EAB5041ADD9CC4F92325441D4D6843171AB5041A0228168943254417AA0FA7173AB5041F7A9D11D963254416DF1C06777AB5041432D99E4963254410D41040E7BAB5041F9682FE2953254410518986980AB50419D6323A494325441FCE619E883AB5041539FB9A1933254417DA9A70885AB50411E93BBFD903254414B2DC86185AB5041B8C9A8958E3254414EEC252685AB50416FF9A3C78A325441F6285C1F85AB5041F6285C6F873254418FC2F51899AB5041D7A3700D8E32544185EB51F8A7AB504152B81E059332544152B81E15A7AB5041B81E852B9132544148E17AF4A5AB50410AD7A3408F325441AE47E12AA5AB5041000000608D3254413D0AD7D3A4AB50411F85EB318B325441D7A370DDA4AB50413D0AD70389325441AE47E12AA5AB50411F85EBC18632544148E17AF4A5AB50418FC2F5888132544152B81E55A6AB5041CDCCCCEC7D325441B81E857BA6AB504114AE47217A32544185EB5168A6AB50411F85EBB1753254413D0AD743A4AB504185EB51D87532544166666696A3AB5041E17A141E6F32544166666696A3AB50418FC2F5986C325441A4703D3AA2AB5041B81E850B6C3254411F85EBF1A1AB5041666666966B32544152B81E85A1AB5041E17A141E6A325441AE47E1CA9FAB504114AE47A169325441EC51B8AE9FAB5041B81E851B68325441EC51B89E9FAB50413D0AD7A366325441713D0AD79FAB5041AE47E10A6332544152B81E35A0AB5041713D0A2763325441A4703DFAA0AB5041E17A141E6332544148E17A74A1AB5041A4703D4A60325441713D0AD7A3AB5041EC51B89E603254411F85EBC1A4AB5041A4703D9A5E325441295C8F22A5AB50410AD7A3005D3254417B14AE67A4AB504185EB51E85A3254418FC2F5D8A7AB5041666666B65A325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607641 - 201101
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1606  </desc>
+<a>
+0106000000020000000103000000010000000B00000014AE476163A350418FC2F5E83E5755410AD7A39060A35041C3F5282C40575541666666F65FA3504152B81E2540575541CDCCCC4C60A3504185EB51C840575541000000E065A35041B81E85FB5057554148E17AF466A350410AD7A370545755413D0AD7A367A3504114AE47A156575541295C8F426CA35041B81E853B56575541000000B064A3504114AE47E13F5755411F85EB4164A3504185EB51F83E57554114AE476163A350418FC2F5E83E57554101030000000100000018000000F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB282575541333333C386A3504152B81E1581575541AE47E13A84A35041713D0A477C575541F6285CCF7FA35041C3F5281C74575541713D0A477FA35041B81E851B735755413D0AD7337DA350413D0AD7336F5755418FC2F5C87BA35041AE47E17A6C57554152B81E7578A35041B81E858B6657554185EB518875A350415C8FC26561575541CDCCCC3C73A35041CDCCCC5C5D57554114AE47D169A350413D0AD76363575541AE47E12A6CA350417B14AE3768575541333333836CA350418FC2F50869575541AE47E11A6DA35041000000706A5755417B14AE776DA35041A4703D4A6B5755415C8FC2B56DA3504185EB51186C575541D7A3700D6EA35041AE47E13A6D575541AE47E13A72A350415C8FC2356C575541C3F5285C75A35041A4703DAA6A575541E17A14AE76A350418FC2F5F8695755413D0AD7137BA350418FC2F508725755410AD7A3A07DA35041E17A142E77575541F6285C9F7FA350419A9999F97A575541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000052B81E7578A35041B81E858B66575541BCD480BE76A350414B26A18763575541E5EB937C73A35041F09A63FA5D575541E842132373A3504154E558855D5755418AA61CE572A350411575C5A75D57554114C18F3171A350412AB499AB5E5755414D45FD9B70A3504137544E0B5F575541E17A14AE76A350418FC2F5F8695755413D0AD7137BA350418FC2F508725755410AD7A3A07DA35041E17A142E77575541F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB28257554184B45DBE84A3504166FF392582575541EE6E4EB686A35041A90FA8FC80575541AE47E13A84A35041713D0A477C575541F6285CCF7FA35041C3F5281C74575541713D0A477FA35041B81E851B735755413D0AD7337DA350413D0AD7336F5755418FC2F5C87BA35041AE47E17A6C57554152B81E7578A35041B81E858B66575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607641 - 432533
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1606  </desc>
+<a>
+0106000000020000000103000000010000000B00000014AE476163A350418FC2F5E83E5755410AD7A39060A35041C3F5282C40575541666666F65FA3504152B81E2540575541CDCCCC4C60A3504185EB51C840575541000000E065A35041B81E85FB5057554148E17AF466A350410AD7A370545755413D0AD7A367A3504114AE47A156575541295C8F426CA35041B81E853B56575541000000B064A3504114AE47E13F5755411F85EB4164A3504185EB51F83E57554114AE476163A350418FC2F5E83E57554101030000000100000018000000F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB282575541333333C386A3504152B81E1581575541AE47E13A84A35041713D0A477C575541F6285CCF7FA35041C3F5281C74575541713D0A477FA35041B81E851B735755413D0AD7337DA350413D0AD7336F5755418FC2F5C87BA35041AE47E17A6C57554152B81E7578A35041B81E858B6657554185EB518875A350415C8FC26561575541CDCCCC3C73A35041CDCCCC5C5D57554114AE47D169A350413D0AD76363575541AE47E12A6CA350417B14AE3768575541333333836CA350418FC2F50869575541AE47E11A6DA35041000000706A5755417B14AE776DA35041A4703D4A6B5755415C8FC2B56DA3504185EB51186C575541D7A3700D6EA35041AE47E13A6D575541AE47E13A72A350415C8FC2356C575541C3F5285C75A35041A4703DAA6A575541E17A14AE76A350418FC2F5F8695755413D0AD7137BA350418FC2F508725755410AD7A3A07DA35041E17A142E77575541F6285C9F7FA350419A9999F97A575541
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81E7578A35041B81E858B66575541BCD480BE76A350414B26A18763575541E5EB937C73A35041F09A63FA5D575541E842132373A3504154E558855D5755418AA61CE572A350411575C5A75D57554183C18F3171A35041E3B399AB5E575541DA78E1B670A35041E06319FA5E5755415045FD9B70A3504136544E0B5F575541E17A14AE76A350418FC2F5F8695755413D0AD7137BA350418FC2F508725755410AD7A3A07DA35041E17A142E77575541F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB282575541E3B45DBE84A3504134FF392582575541EE6E4EB686A35041A90FA8FC80575541AE47E13A84A35041713D0A477C575541F6285CCF7FA35041C3F5281C74575541713D0A477FA35041B81E851B735755413D0AD7337DA350413D0AD7336F5755418FC2F5C87BA35041AE47E17A6C57554152B81E7578A35041B81E858B66575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633941 - 1575918
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1461  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBD189F9504152B81EE517B954415C8FC2758BF95041CDCCCCDC19B95441295C8FE28CF9504114AE47511DB95441D7A370FDAAF950413D0AD76311B954417B14AE679DF950419A9999490CB95441AE47E1FA92F95041EC51B85E08B954413D0AD7F38CF95041AE47E11A06B954413D0AD7E385F950419A99998904B95441F6285CEF76F95041CDCCCC8CFFB85441EC51B85E70F95041E17A140E0DB954411F85EBD189F9504152B81EE517B95441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD7F38CF95041AE47E11A06B95441CD070E4C92F95041C14B061D08B954415CD9C88692F95041960B183308B95441295C8F9292F95041AC1C5A2C08B95441F2D24DF294F95041A4703D7A06B95441508D97AE9EF950412B87168101B95441C3F52854A0F95041894160B502B9544196438BFCA1F95041A01A2F6505B95441A38275D69EF950413E8B5CD30CB95441AC69118BA6F950419A0845B80FB954410B574AB2AAF95041DD2B9D4711B95441666666CEB2F95041E7FBA9410EB95441560E2D5AC4F950415EBA493C0AB9544139B4C836C5F950411904568609B95441EC51B81EC2F950410AD7A3A0F4B85441AE47E1CAC0F950413D0AD7F3F2B85441F6285C4F85F950417B14AEE7DBB854417B14AE0784F95041AE47E17ADCB85441CDCCCCDC7DF9504114AE4701EDB854410166E95194F95041231667DCF5B85441250681A594F95041378941D8F5B854413BDF4F258CF9504119045686FDB85441CE446EC38CF9504129BE221006B954413D0AD7F38CF95041AE47E11A06B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633941 - 3654748
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1461  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBD189F9504152B81EE517B954415C8FC2758BF95041CDCCCCDC19B95441295C8FE28CF9504114AE47511DB95441D7A370FDAAF950413D0AD76311B954417B14AE679DF950419A9999490CB95441AE47E1FA92F95041EC51B85E08B954413D0AD7F38CF95041AE47E11A06B954413D0AD7E385F950419A99998904B95441F6285CEF76F95041CDCCCC8CFFB85441EC51B85E70F95041E17A140E0DB954411F85EBD189F9504152B81EE517B95441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD7F38CF95041AE47E11A06B95441CD070E4C92F95041C14B061D08B954415CD9C88692F95041960B183308B95441295C8F9292F95041AC1C5A2C08B95441F2D24DF294F95041A4703D7A06B95441508D97AE9EF950412B87168101B95441C3F52854A0F95041894160B502B9544196438BFCA1F95041A01A2F6505B95441A38275D69EF950413E8B5CD30CB95441AC69118BA6F950419A0845B80FB954410B574AB2AAF95041DD2B9D4711B95441666666CEB2F95041E7FBA9410EB95441560E2D5AC4F950415EBA493C0AB9544139B4C836C5F950411904568609B95441EC51B81EC2F950410AD7A3A0F4B85441AE47E1CAC0F950413D0AD7F3F2B85441F6285C4F85F950417B14AEE7DBB854417B14AE0784F95041AE47E17ADCB85441CDCCCCDC7DF9504114AE4701EDB854410166E95194F95041231667DCF5B85441250681A594F95041378941D8F5B854413BDF4F258CF9504119045686FDB85441CE446EC38CF9504129BE221006B954413D0AD7F38CF95041AE47E11A06B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636098 - 181182
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1545  </desc>
+<a>
+01060000000100000001030000000100000021000000EC51B8CE48FC50411F85EBF1B2C2544114AE47514AFC50413D0AD7D3B0C25441000000204CFC50419A999919AEC25441CDCCCC5C50FC50417B14AE97A8C25441EC51B88E4DFC50411F85EB21A8C25441C3F5285C4CFC504152B81EF5A7C25441CDCCCC9C38FC504148E17A34B2C25441E17A149E20FC50411F85EBD1B9C254410AD7A37021FC5041C3F528DCBBC25441295C8FA21FFC504114AE47A1C1C2544152B81E451AFC50415C8FC2D5C0C254411F85EBE118FC5041333333E3BAC2544114AE47C10EFC504185EB5148BCC25441333333D30CFC50418FC2F578BCC2544166666656FFFB5041EC51B8CEBDC25441000000E0FEFB5041333333D3C4C25441F6285C8FFEFB50410AD7A3A0C9C25441295C8F6202FC5041EC51B8EEC8C254415C8FC24504FC50413D0AD793CBC25441F6285CDF00FC5041D7A3703DCDC25441C3F528CC00FC504152B81E95CFC254410AD7A30011FC504133333363D1C25441333333C315FC5041713D0AB7D5C254415C8FC2651BFC5041D7A370BDCEC254418FC2F5082BFC504185EB5188D6C254417B14AE7737FC50415C8FC2C5C9C25441A4703DFA3EFC5041C3F5281CCCC25441EC51B88E41FC504166666616C8C254411F85EBE13EFC5041333333C3C1C254418FC2F59841FC504133333313BBC25441AE47E11A45FC5041CDCCCC6CBAC25441EC51B8CE48FC50413D0AD7E3B5C25441EC51B8CE48FC50411F85EBF1B2C25441
+</a>
+
+<b>
+010600000001000000010300000004000000370000008F16A4941BFC5041A02F79CFCEC254413CC5644C28FC50415437F64ECBC2544125FC5A8C31FC5041B0BE479FD0C25441F4D307ED32FC504160BDFC70CFC25441FC52E25532FC50414F652A79CDC254417A04D27337FC5041283460F2C8C25441A40C495B3DFC504156E404E2CCC25441712ACF093EFC5041AF5553D1CBC254412666668140FC5041140877F6C7C25441DFB70CC03DFC5041F130CA95C6C254418EB6C1913CFC5041D32BE90AC3C254412666668140FC50414BA1015EBBC25441706EDD6846FC5041C4C32844B5C254414E443F9B46FC50417B68C0EFB0C25441A77173C548FC50415F10EEF7AEC25441B14A6B544BFC504179BBB15CAFC2544164F947434FFC50417C6ECD63A8C25441FAA5D3A84FFC5041E630CAAFA7C254418F20CD864BFC504102899CA7A9C25441BB2DAC4142FC504128D87BEDAEC25441B886423939FC5041B9EA30B5B2C25441C54F4CF92FFC5041EE19B00DB6C25441B14A6B6E2CFC504145CF3588BDC25441799AC67E28FC50415220DCC6BAC25441B71C37442AFC50411DF15C6EB7C25441CEE5400421FC504105A0B62FBAC254410D68B1C922FC50417025BD51BEC25441D4B70CDA1EFC5041BA2D3439C4C254416F04D28D18FC5041B0543CAAC1C2544166D8E89117FC50410ECC9F2BBBC254416497BA200AFC5041A844FAA9BCC254413CC5646609FC50416E78AEBEBCC254414C7028CB09FC504156270880BFC254411D13754804FC5041AA8270D4C3C25441F88EB95401FC50416A53F17BC0C2544124924FB103FC50412A247223BDC25441A96D472D00FC50412F7F73B9BDC25441B28D6E2600FC504182A497BABDC25441B90C498FFFFB5041EF83BB02C5C254410268B1E303FC50412FB33A5BC8C2544149160BA506FC50417B68C0D5CFC254413B1856D307FC50417B68C0D5CFC254414E1D375E0BFC5041780EA3AFCCC2544145F14D620AFC5041FB09C224C9C25441C048205A0CFC50414A5EFEBFC8C25441DFFA0F7811FC50414C0B0D53CAC254411CD071AA11FC5041813A8CABCDC25441C3A23D800FFC5041C1690B04D1C25441EFA5D3DC11FC50417C15CF68D1C2544125FC5AA612FC5041C4C3282AD4C25441F2FFF00215FC5041DE6EEC8ED4C25441693206B81AFC5041AF11390CCFC25441D5159C451BFC504136513CE5CEC254414C00C18D1BFC50417BAC5ED1CEC254418F16A4941BFC5041A02F79CFCEC2544107000000FDFFF0E833FC5041737FDA77C1C254411E7D802332FC5041AEA72D17C0C25441E826F95931FC50417025BD51BEC254413AD5521B34FC50416E78AEBEBCC254418183ACDC36FC504133505B1FBEC254418183ACDC36FC5041A72853AEC0C25441FDFFF0E833FC5041737FDA77C1C25441060000008B5CA46B39FC5041AEA72D17C0C254419DDB7ED438FC50417025BD51BEC254419F888D673AFC50412A247223BDC25441DD0AFE2C3CFC5041557AF9ECBDC25441C35F3AC83BFC504171D2CBE4BFC254418B5CA46B39FC5041AEA72D17C0C254410500000087D8E87736FC5041C01BFB3BB7C254418B5CA46B39FC504109C57372B6C2544184DDC9023AFC5041251D466AB8C254418AAF95D837FC50412C1F9198B9C2544187D8E87736FC5041C01BFB3BB7C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636098 - 385784
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1545  </desc>
+<a>
+01060000000100000001030000000100000021000000EC51B8CE48FC50411F85EBF1B2C2544114AE47514AFC50413D0AD7D3B0C25441000000204CFC50419A999919AEC25441CDCCCC5C50FC50417B14AE97A8C25441EC51B88E4DFC50411F85EB21A8C25441C3F5285C4CFC504152B81EF5A7C25441CDCCCC9C38FC504148E17A34B2C25441E17A149E20FC50411F85EBD1B9C254410AD7A37021FC5041C3F528DCBBC25441295C8FA21FFC504114AE47A1C1C2544152B81E451AFC50415C8FC2D5C0C254411F85EBE118FC5041333333E3BAC2544114AE47C10EFC504185EB5148BCC25441333333D30CFC50418FC2F578BCC2544166666656FFFB5041EC51B8CEBDC25441000000E0FEFB5041333333D3C4C25441F6285C8FFEFB50410AD7A3A0C9C25441295C8F6202FC5041EC51B8EEC8C254415C8FC24504FC50413D0AD793CBC25441F6285CDF00FC5041D7A3703DCDC25441C3F528CC00FC504152B81E95CFC254410AD7A30011FC504133333363D1C25441333333C315FC5041713D0AB7D5C254415C8FC2651BFC5041D7A370BDCEC254418FC2F5082BFC504185EB5188D6C254417B14AE7737FC50415C8FC2C5C9C25441A4703DFA3EFC5041C3F5281CCCC25441EC51B88E41FC504166666616C8C254411F85EBE13EFC5041333333C3C1C254418FC2F59841FC504133333313BBC25441AE47E11A45FC5041CDCCCC6CBAC25441EC51B8CE48FC50413D0AD7E3B5C25441EC51B8CE48FC50411F85EBF1B2C25441
+</a>
+
+<b>
+010600000001000000010300000004000000370000008F16A4941BFC5041A02F79CFCEC254413CC5644C28FC50415437F64ECBC2544125FC5A8C31FC5041B0BE479FD0C25441F4D307ED32FC504160BDFC70CFC25441FC52E25532FC50414F652A79CDC254417A04D27337FC5041283460F2C8C25441A40C495B3DFC504156E404E2CCC25441712ACF093EFC5041AF5553D1CBC254412666668140FC5041140877F6C7C25441DFB70CC03DFC5041F130CA95C6C254418EB6C1913CFC5041D32BE90AC3C254412666668140FC50414BA1015EBBC25441706EDD6846FC5041C4C32844B5C254414E443F9B46FC50417B68C0EFB0C25441A77173C548FC50415F10EEF7AEC25441B14A6B544BFC504179BBB15CAFC2544164F947434FFC50417C6ECD63A8C25441FAA5D3A84FFC5041E630CAAFA7C254418F20CD864BFC504102899CA7A9C25441BB2DAC4142FC504128D87BEDAEC25441B886423939FC5041B9EA30B5B2C25441C54F4CF92FFC5041EE19B00DB6C25441B14A6B6E2CFC504145CF3588BDC25441799AC67E28FC50415220DCC6BAC25441B71C37442AFC50411DF15C6EB7C25441CEE5400421FC504105A0B62FBAC254410D68B1C922FC50417025BD51BEC25441D4B70CDA1EFC5041BA2D3439C4C254416F04D28D18FC5041B0543CAAC1C2544166D8E89117FC50410ECC9F2BBBC254416497BA200AFC5041A844FAA9BCC254413CC5646609FC50416E78AEBEBCC254414C7028CB09FC504156270880BFC254411D13754804FC5041AA8270D4C3C25441F88EB95401FC50416A53F17BC0C2544124924FB103FC50412A247223BDC25441A96D472D00FC50412F7F73B9BDC25441B28D6E2600FC504182A497BABDC25441B90C498FFFFB5041EF83BB02C5C254410268B1E303FC50412FB33A5BC8C2544149160BA506FC50417B68C0D5CFC254413B1856D307FC50417B68C0D5CFC254414E1D375E0BFC5041780EA3AFCCC2544145F14D620AFC5041FB09C224C9C25441C048205A0CFC50414A5EFEBFC8C25441DFFA0F7811FC50414C0B0D53CAC254411CD071AA11FC5041813A8CABCDC25441C3A23D800FFC5041C1690B04D1C25441EFA5D3DC11FC50417C15CF68D1C2544125FC5AA612FC5041C4C3282AD4C25441F2FFF00215FC5041DE6EEC8ED4C25441693206B81AFC5041AF11390CCFC25441D5159C451BFC504136513CE5CEC254414C00C18D1BFC50417BAC5ED1CEC254418F16A4941BFC5041A02F79CFCEC2544107000000FDFFF0E833FC5041737FDA77C1C254411E7D802332FC5041AEA72D17C0C25441E826F95931FC50417025BD51BEC254413AD5521B34FC50416E78AEBEBCC254418183ACDC36FC504133505B1FBEC254418183ACDC36FC5041A72853AEC0C25441FDFFF0E833FC5041737FDA77C1C25441060000008B5CA46B39FC5041AEA72D17C0C254419DDB7ED438FC50417025BD51BEC254419F888D673AFC50412A247223BDC25441DD0AFE2C3CFC5041557AF9ECBDC25441C35F3AC83BFC504171D2CBE4BFC254418B5CA46B39FC5041AEA72D17C0C254410500000087D8E87736FC5041C01BFB3BB7C254418B5CA46B39FC504109C57372B6C2544184DDC9023AFC5041251D466AB8C254418AAF95D837FC50412C1F9198B9C2544187D8E87736FC5041C01BFB3BB7C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637636 - 243083
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2741  </desc>
+<a>
+0106000000030000000103000000010000000E0000000AD7A37012E850418FC2F5A8073355418FC2F50814E850410AD7A30005335541C3F5280C1AE85041B81E853BFA325541713D0A871FE85041C3F5289CEE3255411F85EB7124E8504133333363E4325541F6285C7F28E85041713D0AE7DB325541713D0A771FE8504133333363DC325541A4703D2A14E850410AD7A370DC32554114AE471106E850413D0AD763F63255415C8FC2A5FBE7504185EB5178083355413D0AD7D300E85041CDCCCC9C0D3355419A99991905E85041CDCCCC1C123355411F85EBE109E8504100000040173355410AD7A37012E850418FC2F5A8073355410103000000010000001700000014AE47F1D0E750411F85EB71CF325541713D0AC7D3E75041F6285C0FD03255411F85EBC1D9E7504100000080D132554148E17AA4DEE7504148E17A74D23255411F85EBA1E5E750417B14AE27D4325541CDCCCC0CECE7504100000090D532554133333303EEE75041333333A3D13255417B14AEA7E3E7504133333303C0325541C3F5288CD7E7504148E17AE4AD325541F6285C4FD6E75041EC51B84EB1325541B81E857BD5E75041E17A14EEB332554185EB51A8D4E75041C3F528ACB6325541AE47E1AAD3E7504114AE4781BA325541666666E6D2E75041CDCCCC4CBD3255418FC2F588D2E75041CDCCCC1CBF32554100000040D2E75041D7A370DDC032554114AE4701D2E750413D0AD753C23255413D0AD7A3D1E750413D0AD763C5325541F6285C4FD1E7504185EB5148C83255417B14AE27D1E750417B14AE17CA3255410AD7A310D1E75041713D0A37CC3255419A9999F9D0E750415C8FC215CE32554114AE47F1D0E750411F85EB71CF32554101030000000100000009000000713D0AF721E85041CDCCCC1C273355416666660624E85041CDCCCCAC26335541D7A3704D26E85041AE47E13A26335541EC51B87E38E85041666666A607335541EC51B80E35E85041713D0AE705335541AE47E19A31E85041713D0A0704335541E17A149E1CE8504152B81E4526335541E17A14CE20E85041EC51B85E27335541713D0AF721E85041CDCCCC1C27335541
+</a>
+
+<b>
+010600000001000000010300000001000000290000009A9999F9D0E750415C8FC215CE3255414E2208F6D0E750414C9913ABCE32554147C7F600D1E7504128855275CF325541713D0AC7D3E75041F6285C0FD0325541186C121ED6E750419AC69B9FD0325541C01ECD36DBE750416D9EE5C8D1325541237B91CFDBE75041151CF1D4D1325541F9006BECDBE75041AE0167ECD1325541D6F3E1ECDBE75041B7427EECD132554146CB23EDDBE75041E4218BECD13255412931B3EEDBE750419836D9ECD1325541BDBF4563D8E75041F54A7DDFCE3255412EBE4F2FD4E7504100EFE18BCA325541D09F6F71D3E750410CDFF612C832554107EB2432D3E75041BC74667AC53255419D18F54ED4E75041F5736B60C332554131CE3AA8D6E750415E469B43C2325541ED927060D9E7504178DD00DFC3325541A975A798EAE750416952613ED5325541CDCCCC0CECE7504100000090D532554133333303EEE75041333333A3D13255417B14AEA7E3E7504133333303C0325541C8E47B72DBE75041438E90BAB33255414D03D253DBE750419D7AAC8CB3325541DFDCD524DAE750415E833AC7B1325541784ED1E1D7E75041BBB0AC64AE325541B34745A5D7E750417E750F0AAE3255411977BE33D7E75041BBF078D8AE325541F6285C4FD6E75041EC51B84EB1325541B81E857BD5E75041E17A14EEB332554185EB51A8D4E75041C3F528ACB6325541AE47E1AAD3E7504114AE4781BA32554184BDB620D3E75041045B7078BC325541DA023F41D2E750415700C7D5C032554100000040D2E75041D7A370DDC032554114AE4701D2E750413D0AD753C23255413D0AD7A3D1E750413D0AD763C5325541F6285C4FD1E7504185EB5148C83255417B14AE27D1E750417B14AE17CA3255410AD7A310D1E75041713D0A37CC3255419A9999F9D0E750415C8FC215CE325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637636 - 354489
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2741  </desc>
+<a>
+0106000000030000000103000000010000000E0000000AD7A37012E850418FC2F5A8073355418FC2F50814E850410AD7A30005335541C3F5280C1AE85041B81E853BFA325541713D0A871FE85041C3F5289CEE3255411F85EB7124E8504133333363E4325541F6285C7F28E85041713D0AE7DB325541713D0A771FE8504133333363DC325541A4703D2A14E850410AD7A370DC32554114AE471106E850413D0AD763F63255415C8FC2A5FBE7504185EB5178083355413D0AD7D300E85041CDCCCC9C0D3355419A99991905E85041CDCCCC1C123355411F85EBE109E8504100000040173355410AD7A37012E850418FC2F5A8073355410103000000010000001700000014AE47F1D0E750411F85EB71CF325541713D0AC7D3E75041F6285C0FD03255411F85EBC1D9E7504100000080D132554148E17AA4DEE7504148E17A74D23255411F85EBA1E5E750417B14AE27D4325541CDCCCC0CECE7504100000090D532554133333303EEE75041333333A3D13255417B14AEA7E3E7504133333303C0325541C3F5288CD7E7504148E17AE4AD325541F6285C4FD6E75041EC51B84EB1325541B81E857BD5E75041E17A14EEB332554185EB51A8D4E75041C3F528ACB6325541AE47E1AAD3E7504114AE4781BA325541666666E6D2E75041CDCCCC4CBD3255418FC2F588D2E75041CDCCCC1CBF32554100000040D2E75041D7A370DDC032554114AE4701D2E750413D0AD753C23255413D0AD7A3D1E750413D0AD763C5325541F6285C4FD1E7504185EB5148C83255417B14AE27D1E750417B14AE17CA3255410AD7A310D1E75041713D0A37CC3255419A9999F9D0E750415C8FC215CE32554114AE47F1D0E750411F85EB71CF32554101030000000100000009000000713D0AF721E85041CDCCCC1C273355416666660624E85041CDCCCCAC26335541D7A3704D26E85041AE47E13A26335541EC51B87E38E85041666666A607335541EC51B80E35E85041713D0AE705335541AE47E19A31E85041713D0A0704335541E17A149E1CE8504152B81E4526335541E17A14CE20E85041EC51B85E27335541713D0AF721E85041CDCCCC1C27335541
+</a>
+
+<b>
+010600000001000000010300000001000000290000009A9999F9D0E750415C8FC215CE3255414E2208F6D0E750414C9913ABCE32554147C7F600D1E7504128855275CF325541713D0AC7D3E75041F6285C0FD0325541186C121ED6E750419AC69B9FD0325541C01ECD36DBE750416D9EE5C8D1325541237B91CFDBE75041151CF1D4D1325541F9006BECDBE75041AE0167ECD1325541D6F3E1ECDBE75041B7427EECD132554146CB23EDDBE75041E4218BECD13255412931B3EEDBE750419836D9ECD1325541BDBF4563D8E75041F54A7DDFCE3255412EBE4F2FD4E7504100EFE18BCA325541D09F6F71D3E750410CDFF612C832554107EB2432D3E75041BC74667AC53255419D18F54ED4E75041F5736B60C332554131CE3AA8D6E750415E469B43C2325541ED927060D9E7504178DD00DFC3325541A975A798EAE750416952613ED5325541CDCCCC0CECE7504100000090D532554133333303EEE75041333333A3D13255417B14AEA7E3E7504133333303C0325541C8E47B72DBE75041438E90BAB33255414D03D253DBE750419D7AAC8CB3325541DFDCD524DAE750415E833AC7B1325541784ED1E1D7E75041BBB0AC64AE325541B34745A5D7E750417E750F0AAE3255411977BE33D7E75041BBF078D8AE325541F6285C4FD6E75041EC51B84EB1325541B81E857BD5E75041E17A14EEB332554185EB51A8D4E75041C3F528ACB6325541AE47E1AAD3E7504114AE4781BA32554184BDB620D3E75041045B7078BC325541DA023F41D2E750415700C7D5C032554100000040D2E75041D7A370DDC032554114AE4701D2E750413D0AD753C23255413D0AD7A3D1E750413D0AD763C5325541F6285C4FD1E7504185EB5148C83255417B14AE27D1E750417B14AE17CA3255410AD7A310D1E75041713D0A37CC3255419A9999F9D0E750415C8FC215CE325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>140201 - 1229875
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2369  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB8544114AE4761847D5141000000600AB85441AE47E1EA817D51410000004006B854417B14AE27807D5141295C8F7202B85441CDCCCC5C7D7D5141713D0A8700B85441F6285C9F747D51418FC2F5F8FFB75441E17A14CE687D514114AE47D1FDB754410AD7A320647D51413D0AD723F9B7544113A6F73D617D5141DFD7028DF3B754418D8B87965E7D5141D6A7F9F1E6B75441B82B59D9547D51415E76A252FAB754411E6E0BA6517D5141B2C050B900B85441B5215DE04E7D5141ACBDF99407B85441000000605C7D51411F85EB0113B854410AD7A3905E7D51413D0AD7A315B8544166666666647D514152B81EA51CB85441713D0A476A7D5141333333B323B85441E17A142E707D51419A9999C92AB854410AD7A3C0707D51418FC2F5782BB85441C3F5288C727D51419A9999192EB854415C8FC2B5797D51413D0AD70328B85441
+</a>
+
+<b>
+010600000001000000010300000001000000230000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB8544114AE4761847D5141000000600AB85441AE47E1EA817D51410000004006B854417B14AE27807D5141295C8F7202B85441CDCCCC5C7D7D5141713D0A8700B85441F6285C9F747D51418FC2F5F8FFB75441E17A14CE687D514114AE47D1FDB754410AD7A320647D51413D0AD723F9B7544114A6F73D617D5141E1D7028DF3B754410F498819607D51416B471220EEB75441D60461855C7D514106E4491AF5B754418E42E110597D5141E227CAD6FBB754419ED576BC557D51419FF2BC5402B85441F71F3CC9517D514131FC52080AB85441000000605C7D51411F85EB0113B854410AD7A3905E7D51413D0AD7A315B8544166666666647D514152B81EA51CB85441713D0A476A7D5141333333B323B85441E17A142E707D51419A9999C92AB854410AD7A3C0707D51418FC2F5782BB85441C3F5288C727D51419A9999192EB854415C8FC2B5797D51413D0AD70328B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>140201 - 3687912
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2369  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB8544114AE4761847D5141000000600AB85441AE47E1EA817D51410000004006B854417B14AE27807D5141295C8F7202B85441CDCCCC5C7D7D5141713D0A8700B85441F6285C9F747D51418FC2F5F8FFB75441E17A14CE687D514114AE47D1FDB754410AD7A320647D51413D0AD723F9B7544113A6F73D617D5141DFD7028DF3B754418D8B87965E7D5141D6A7F9F1E6B75441B82B59D9547D51415E76A252FAB754411E6E0BA6517D5141B2C050B900B85441B5215DE04E7D5141ACBDF99407B85441000000605C7D51411F85EB0113B854410AD7A3905E7D51413D0AD7A315B8544166666666647D514152B81EA51CB85441713D0A476A7D5141333333B323B85441E17A142E707D51419A9999C92AB854410AD7A3C0707D51418FC2F5782BB85441C3F5288C727D51419A9999192EB854415C8FC2B5797D51413D0AD70328B85441
+</a>
+
+<b>
+010600000001000000010300000001000000230000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB8544114AE4761847D5141000000600AB85441AE47E1EA817D51410000004006B854417B14AE27807D5141295C8F7202B85441CDCCCC5C7D7D5141713D0A8700B85441F6285C9F747D51418FC2F5F8FFB75441E17A14CE687D514114AE47D1FDB754410AD7A320647D51413D0AD723F9B7544114A6F73D617D5141E1D7028DF3B754410F498819607D51416B471220EEB75441D60461855C7D514106E4491AF5B754418E42E110597D5141E227CAD6FBB754419ED576BC557D51419FF2BC5402B85441F71F3CC9517D514131FC52080AB85441000000605C7D51411F85EB0113B854410AD7A3905E7D51413D0AD7A315B8544166666666647D514152B81EA51CB85441713D0A476A7D5141333333B323B85441E17A142E707D51419A9999C92AB854410AD7A3C0707D51418FC2F5782BB85441C3F5288C727D51419A9999192EB854415C8FC2B5797D51413D0AD70328B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663132 - 57751
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7272  </desc>
+<a>
+01060000000100000001030000000100000018000000F6285CEF8EA750416666668628085541B81E856B8CA750410000008029085541F6285CFF85A750410AD7A3F02B085541295C8FE284A75041D7A3705D2C085541295C8FE27EA75041AE47E12A30085541713D0A3779A750419A999929340855416666660675A750416666661638085541295C8FF266A750411F85EB4146085541666666766FA75041AE47E10A50085541CDCCCC6C70A750415C8FC22551085541C3F528EC71A75041E17A14DE52085541F6285CFF76A75041333333C358085541B81E855B85A750413D0AD74352085541295C8F9285A750419A999969510855419A99990986A75041D7A3709D4F0855417B14AEF789A7504185EB510840085541D7A3706D87A750410AD7A3203C085541713D0A3788A7504185EB51783B0855415C8FC2F58BA750411F85EBF13A08554148E17A148FA7504185EB51283B0855419A99993995A75041A4703D9A3B08554114AE47219DA7504114AE47913B0855411F85EB7199A7504152B81EC524085541F6285CEF8EA750416666668628085541
+</a>
+
+<b>
+010600000002000000010300000001000000180000003182170B8CA75041A9755FF33A085541A8737EE78CA7504146B5E5E63A085541D48F82CC8EA750413FD6B20D3B085541EDBEF0B88CA75041DFE7B1142A08554180D44EA184A7504142E81A2C2D085541E3CB03FE7BA750417CF0FCB73208554125535FCF79A75041F3BB23153408554115D6D66F67A750412B69E2D14608554103CC7C6B69A75041126A3F1949085541076785456AA750417DFCCC134A085541CB0B2D626AA7504108BBBA344A0855415DEFE5C06BA7504114E8C2C74B0855418C09BAAD6DA75041043418FE4D0855413F3B8B5A6FA75041E3C6E4444F085541E9E8714373A750413455E75B490855411F2D3DCF76A75041E781478A450855413DE233157AA750419AAEA7B84108554158351F5B7CA75041F3C4D7CF3F0855411910CF897FA75041646ADC2C3E085541C61FC17284A7504160A6C52C3C085541583ED31588A750415E44BA2C3B0855411963EED58BA7504188C961F63A0855415C8FC2F58BA750411F85EBF13A0855413182170B8CA75041A9755FF33A08554101030000000100000004000000778430CF8EA7504140C799233B085541C4C6692D8FA75041016A73153B085541D48F82CC8EA750413FD6B20D3B085541778430CF8EA7504140C799233B085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541084 - 2178982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000BD0000001F85EBC13B6451411F85EB21153F544185EB51583B6451410AD7A3F0133F544114AE47A13B645141E17A14EE123F5441EC51B85E3C645141CDCCCC5C123F544114AE47813D64514114AE47F10E3F5441B81E85EB3D6451418FC2F5180E3F5441666666463F6451410AD7A3E0093F5441295C8F323F645141D7A3705D083F5441666666663E6451411F85EBB1063F54419A9999493D6451419A9999A9053F54410AD7A3603B6451411F85EB11043F54419A9999A93A64514152B81EF5023F544152B81EB5396451411F85EB71013F5441E17A14DE39645141D7A3709DFF3E5441E17A14DE3964514166666626FD3E5441F6285C4F39645141D7A3703DFB3E5441AE47E15A38645141D7A3707DF93E544152B81EF5376451411F85EBD1F73E54410AD7A3E0376451417B14AE97F53E544114AE47D137645141A4703DFAF23E544100000080376451418FC2F578F03E5441666666663764514133333383EE3E54419A9999293764514100000000ED3E544166666686366451415C8FC2A5EB3E5441AE47E1BA35645141D7A370BDE93E5441E17A149E34645141C3F5288CE83E5441AE47E11A336451411F85EB31E73E54413D0AD7C33164514152B81E25E63E5441C3F528AC2F645141F6285C5FE63E544148E17A942E6451413D0AD753E73E5441295C8F422C645141A4703D9AE93E5441F6285C3F2A645141AE47E15AEB3E5441A4703DCA2964514152B81E15EB3E544148E17A5428645141713D0A37EA3E5441CDCCCC4C25645141333333A3E73E5441295C8FA2226451418FC2F578E53E544100000040206451418FC2F508E43E544152B81EB51D645141AE47E16AE23E54411F85EB411964514152B81EC5DF3E5441D7A3707D13645141F6285CDFDC3E54410AD7A3500F645141D7A3701DDB3E54411F85EBE1056451410AD7A340D73E544152B81E15016451413D0AD7F3D53E5441713D0A67FE635141295C8F82D43E544166666606FB63514133333323D33E5441EC51B82EF8635141713D0A97D13E544114AE4711F7635141B81E851BD13E544133333363F363514185EB5128DD3E544100000010F2635141F6285CEFE13E544148E17A34EE6351417B14AEC7EB3E5441AE47E1BAE963514148E17A64E93E54417B14AEA7E763514185EB5188E83E544100000070E5635141EC51B8CEE73E5441AE47E15AE363514185EB5138E73E544152B81EC5E16351415C8FC295E63E54418FC2F5F8D86351418FC2F5C8E23E5441713D0AD7D563514133333363E13E5441AE47E1FAD1635141AE47E18ADF3E5441AE47E16AC7635141E17A141EF43E544114AE4791D463514114AE4711FB3E5441F6285CAFD563514185EB51A8FB3E5441A4703D1AD46351413D0AD783FE3E5441E17A148ED26351413D0AD753013F5441333333D3CF635141B81E85DB063F5441F6285CAFCE635141AE47E14A0C3F544100000030CE635141CDCCCC6C103F5441A4703D8ACD6351417B14AE97163F5441CDCCCCBCCC635141E17A143E1E3F54419A999939CC6351413D0AD713213F544185EB5128CD635141D7A3707D233F5441295C8FD2CC635141000000C0253F5441295C8FD2CC635141333333E3273F5441295C8FF2CC63514100000090293F54418FC2F5A8CD6351417B14AE472B3F5441AE47E10ACF635141A4703D2A2D3F54417B14AE97D0635141C3F528EC2E3F54417B14AED7D66351415C8FC255333F54410AD7A340D86351410AD7A330343F54418FC2F5D8DD6351415C8FC2F5373F54415C8FC255D7635141D7A3701D443F54418FC2F5A8CF6351410AD7A3204E3F5441E17A145EC8635141333333435D3F5441B81E850BC1635141AE47E1CA703F5441000000C0C06351413D0AD793713F54410AD7A3E0BE635141295C8F62763F5441EC51B8BEBD6351410AD7A350793F5441000000E0B86351418FC2F5687C3F5441713D0AE7B56351419A9999B97D3F54419A999939B463514148E17AF4803F54418FC2F598B2635141C3F5288C833F5441000000D0B1635141B81E855B853F54413D0AD763B1635141E17A147E883F54418FC2F5E8B06351411F85EB918B3F544133333383B0635141666666268F3F544185EB51F8B063514133333303943F544114AE47B1B163514100000010963F54413D0AD723B3635141AE47E14A983F5441EC51B8AEB363514152B81EA59A3F54410AD7A380B3635141666666369C3F5441713D0AD7CA63514114AE47B1AF3F5441D7A370FDD06351417B14AE27A83F5441CDCCCCDCDB635141666666769B3F5441E17A143EDC6351418FC2F5289A3F5441A4703DEADB635141B81E85DB983F5441EC51B85ED16351413D0AD7B3893F5441713D0A57DC635141F6285CFF7C3F54418FC2F5C8DC6351413D0AD7937C3F544100000020EF635141D7A3706D673F5441AE47E18AFA635141713D0A875A3F5441666666F6F9635141713D0A47553F5441333333A3FF635141B81E85FB4D3F5441295C8F9202645141EC51B85E4F3F5441713D0A17076451417B14AED7513F5441B81E856B0D645141D7A3703D553F544148E17AC4176451419A9999B95B3F54413D0AD7931864514148E17A745B3F5441C3F5283C196451419A999919593F54417B14AE971C645141295C8FC2503F5441F6285CDF1E645141295C8F824B3F5441D7A3701D2264514166666606453F54413D0AD78326645141B81E859B3C3F5441000000A0266451419A9999693B3F544152B81EB5256451417B14AE273A3F5441F6285C1F246451410AD7A3F0383F5441F6285CAF20645141295C8F02373F54413D0AD7B31A64514100000000343F5441AE47E13A186451413D0AD743333F5441C3F5284C1564514100000030333F5441A4703DFA116451411F85EBB1343F544148E17A940E6451411F85EB51373F5441C3F528FC0964514185EB51683A3F544114AE47D104645141295C8F42413F54415C8FC245FE635141713D0A174D3F544152B81E85FE6351413D0AD7D34D3F5441AE47E17AFE6351415C8FC2054F3F5441E17A14EEFD6351419A9999D94F3F5441E17A143EFC635141EC51B80E523F5441CDCCCCECF9635141666666C6543F54419A999909F96351415C8FC215553F54418FC2F538F763514114AE4701543F54418FC2F598F4635141A4703D3A523F54410AD7A370F36351415C8FC275523F544133333383F2635141295C8FE2523F544148E17A64F1635141E17A149E533F5441CDCCCCBCF0635141C3F5283C543F5441C3F5283CF06351415C8FC2C5533F5441713D0A47F1635141295C8FE2523F54415C8FC265F26351418FC2F508523F5441A4703D7AF36351419A999939513F544185EB51C8F26351411F85EB11513F5441A4703DCAEA6351419A9999C94D3F544133333393EE6351415C8FC285443F54413D0AD733F26351415C8FC285443F54410AD7A3F0F3635141CDCCCC3C403F5441C3F5287CF56351417B14AE573D3F5441D7A370FDF6635141C3F5287C3A3F54413D0AD743F8635141333333D3383F54413D0AD793F9635141713D0A97373F5441B81E850BFB6351417B14AE47373F544148E17A54FF635141F6285C0F303F544152B81EA501645141E17A142E313F5441CDCCCC1C0364514152B81E752D3F544185EB519803645141333333B32D3F54410AD7A3C0026451417B14AEA7303F54419A999939056451413D0AD713313F5441C3F528DC0B6451411F85EB01333F5441B81E858B07645141EC51B8FE383F54413D0AD7530964514152B81E95393F5441C3F5281C0A6451419A999919393F54419A9999290C64514152B81ED5373F544148E17A640E64514152B81E25363F544152B81E7511645141CDCCCC0C343F544152B81EF5126451417B14AE17333F5441CDCCCC8C1464514152B81E75323F544152B81E251664514133333323323F544152B81EA51764514133333323323F54418FC2F5C819645141AE47E1BA323F54411F85EBF11C6451410AD7A310343F54418FC2F5582664514114AE4731393F544114AE479127645141C3F5287C393F5441CDCCCC4C2D645141D7A3703D313F5441F6285C4F346451410AD7A310273F5441333333A3386451415C8FC2B5213F5441EC51B82E3B6451419A9999791E3F5441EC51B80E3A64514185EB51981C3F54411F85EBC1396451415C8FC2751B3F544114AE47113A64514148E17A241A3F544185EB51A83A6451413D0AD723193F54411F85EBC13B6451411F85EB21153F5441
+</a>
+
+<b>
+0106000000010000000103000000040000003F00000085EB5188C8635141333333C3E63F5441666666F6CB635141713D0AA7E83F5441CDCCCC8CCF635141EC51B88EE53F54410AD7A320D363514114AE47D1E23F5441E17A141EDF635141713D0A07DA3F54419A999929E3635141D7A370CDD63F544114AE4781E6635141E17A14CED33F5441A4703DAAE96351415C8FC2C5D03F54413D0AD7E3EC6351417B14AE67CD3F544100000080EF6351417B14AE27CA3F54415C8FC225F263514152B81E35C63F54418FC2F598F4635141B81E85FBC13F544148E17A74F663514148E17AE4BD3F544133333313F86351415C8FC2B5B93F5441E17A145EF963514133333363B53F544166666626FA6351417B14AE07B13F54417B14AE87FA635141666666E6AD3F5441CDCCCCACFA635141333333B3AC3F54418FC2F518FB635141C3F528DCA43F544100000070FB635141EC51B8FE9C3F5441D7A370FDFB63514100000040983F5441D7A370EDFC6351419A9999C9933F54415C8FC255FE6351413D0AD7638F3F544114AE47C1FF635141D7A3705D8B3F544183B0B2EF00645141892061CB883F5441726C994D02645141CF32EF3C863F5441C9F6A0FF05645141CBC50FDC7F3F544113A61C9E0B6451415C218298763F5441531AF0900F645141069551FD6F3F54412E2930BE1164514100C10DF76B3F54413D0AD713126451419A9999196B3F5441AE47E18AFA635141713D0A875A3F54411E39298FF863514151FAAEC45C3F544167C661D5E86351410B08D5AE6E3F5441DB51ABFFDC6351411997BF547C3F5441EC51B85ED16351413D0AD7B3893F5441E17A14EEDC63514148E17A449A3F544184929BDFD6635141F53C6349A13F5441BE7CD05FD263514118D286ACA63F54415D3C4D18CF6351419B7821AFAA3F5441B00D3E1CCA635141C04571A9B03F54418A9FCC5CC663514177AAFD0BB53F5441EC51B83EC3635141A4703D0AB83F544185EB5188BA635141E17A141EC03F54418FC2F5D8B2635141E17A143EC73F5441AE47E13AB3635141F6285CBFC73F54413D0AD743B2635141000000C0C83F5441AE47E12AB563514166666626CB3F54418FC2F5F8B7635141A4703DBACD3F5441B81E850BB9635141C3F5280CCF3F5441A4703DCAB9635141A4703D6AD03F54415C8FC265BA635141713D0AC7D13F5441D7A370FDBA63514100000020D33F54417B14AE87BB63514185EB5148D53F54413D0AD703BC635141EC51B87ED73F54418FC2F548BC63514166666676DA3F5441EC51B8EEBC6351411F85EB51DD3F544148E17A94BD635141713D0AF7DF3F54411F85EBD1BE635141CDCCCC5CE33F54418FC2F538C063514152B81EB5E63F5441AE47E18AC263514152B81ED5EB3F544185EB5158C76351418FC2F568E73F544185EB5188C8635141333333C3E63F54410500000014AE4711F7635141713D0A47A93F54415C8FC2E5F7635141E17A14CEA83F5441C3F5289CF86351411F85EB11AA3F544114AE47D1F7635141AE47E18AAA3F544114AE4711F7635141713D0A47A93F544105000000295C8F12E96351418FC2F538853F5441EC51B89EE8635141666666C6833F5441F6285CBFE9635141C3F5286C833F54413D0AD733EA635141F6285CDF843F5441295C8F12E96351418FC2F538853F54410500000000000020FC63514152B81E758C3F5441713D0A87FC635141C3F528BC8B3F5441CDCCCC3CFD63514148E17A248C3F5441713D0AD7FC635141AE47E1DA8C3F544100000020FC63514152B81E758C3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541084 - 3541974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000BD0000001F85EBC13B6451411F85EB21153F544185EB51583B6451410AD7A3F0133F544114AE47A13B645141E17A14EE123F5441EC51B85E3C645141CDCCCC5C123F544114AE47813D64514114AE47F10E3F5441B81E85EB3D6451418FC2F5180E3F5441666666463F6451410AD7A3E0093F5441295C8F323F645141D7A3705D083F5441666666663E6451411F85EBB1063F54419A9999493D6451419A9999A9053F54410AD7A3603B6451411F85EB11043F54419A9999A93A64514152B81EF5023F544152B81EB5396451411F85EB71013F5441E17A14DE39645141D7A3709DFF3E5441E17A14DE3964514166666626FD3E5441F6285C4F39645141D7A3703DFB3E5441AE47E15A38645141D7A3707DF93E544152B81EF5376451411F85EBD1F73E54410AD7A3E0376451417B14AE97F53E544114AE47D137645141A4703DFAF23E544100000080376451418FC2F578F03E5441666666663764514133333383EE3E54419A9999293764514100000000ED3E544166666686366451415C8FC2A5EB3E5441AE47E1BA35645141D7A370BDE93E5441E17A149E34645141C3F5288CE83E5441AE47E11A336451411F85EB31E73E54413D0AD7C33164514152B81E25E63E5441C3F528AC2F645141F6285C5FE63E544148E17A942E6451413D0AD753E73E5441295C8F422C645141A4703D9AE93E5441F6285C3F2A645141AE47E15AEB3E5441A4703DCA2964514152B81E15EB3E544148E17A5428645141713D0A37EA3E5441CDCCCC4C25645141333333A3E73E5441295C8FA2226451418FC2F578E53E544100000040206451418FC2F508E43E544152B81EB51D645141AE47E16AE23E54411F85EB411964514152B81EC5DF3E5441D7A3707D13645141F6285CDFDC3E54410AD7A3500F645141D7A3701DDB3E54411F85EBE1056451410AD7A340D73E544152B81E15016451413D0AD7F3D53E5441713D0A67FE635141295C8F82D43E544166666606FB63514133333323D33E5441EC51B82EF8635141713D0A97D13E544114AE4711F7635141B81E851BD13E544133333363F363514185EB5128DD3E544100000010F2635141F6285CEFE13E544148E17A34EE6351417B14AEC7EB3E5441AE47E1BAE963514148E17A64E93E54417B14AEA7E763514185EB5188E83E544100000070E5635141EC51B8CEE73E5441AE47E15AE363514185EB5138E73E544152B81EC5E16351415C8FC295E63E54418FC2F5F8D86351418FC2F5C8E23E5441713D0AD7D563514133333363E13E5441AE47E1FAD1635141AE47E18ADF3E5441AE47E16AC7635141E17A141EF43E544114AE4791D463514114AE4711FB3E5441F6285CAFD563514185EB51A8FB3E5441A4703D1AD46351413D0AD783FE3E5441E17A148ED26351413D0AD753013F5441333333D3CF635141B81E85DB063F5441F6285CAFCE635141AE47E14A0C3F544100000030CE635141CDCCCC6C103F5441A4703D8ACD6351417B14AE97163F5441CDCCCCBCCC635141E17A143E1E3F54419A999939CC6351413D0AD713213F544185EB5128CD635141D7A3707D233F5441295C8FD2CC635141000000C0253F5441295C8FD2CC635141333333E3273F5441295C8FF2CC63514100000090293F54418FC2F5A8CD6351417B14AE472B3F5441AE47E10ACF635141A4703D2A2D3F54417B14AE97D0635141C3F528EC2E3F54417B14AED7D66351415C8FC255333F54410AD7A340D86351410AD7A330343F54418FC2F5D8DD6351415C8FC2F5373F54415C8FC255D7635141D7A3701D443F54418FC2F5A8CF6351410AD7A3204E3F5441E17A145EC8635141333333435D3F5441B81E850BC1635141AE47E1CA703F5441000000C0C06351413D0AD793713F54410AD7A3E0BE635141295C8F62763F5441EC51B8BEBD6351410AD7A350793F5441000000E0B86351418FC2F5687C3F5441713D0AE7B56351419A9999B97D3F54419A999939B463514148E17AF4803F54418FC2F598B2635141C3F5288C833F5441000000D0B1635141B81E855B853F54413D0AD763B1635141E17A147E883F54418FC2F5E8B06351411F85EB918B3F544133333383B0635141666666268F3F544185EB51F8B063514133333303943F544114AE47B1B163514100000010963F54413D0AD723B3635141AE47E14A983F5441EC51B8AEB363514152B81EA59A3F54410AD7A380B3635141666666369C3F5441713D0AD7CA63514114AE47B1AF3F5441D7A370FDD06351417B14AE27A83F5441CDCCCCDCDB635141666666769B3F5441E17A143EDC6351418FC2F5289A3F5441A4703DEADB635141B81E85DB983F5441EC51B85ED16351413D0AD7B3893F5441713D0A57DC635141F6285CFF7C3F54418FC2F5C8DC6351413D0AD7937C3F544100000020EF635141D7A3706D673F5441AE47E18AFA635141713D0A875A3F5441666666F6F9635141713D0A47553F5441333333A3FF635141B81E85FB4D3F5441295C8F9202645141EC51B85E4F3F5441713D0A17076451417B14AED7513F5441B81E856B0D645141D7A3703D553F544148E17AC4176451419A9999B95B3F54413D0AD7931864514148E17A745B3F5441C3F5283C196451419A999919593F54417B14AE971C645141295C8FC2503F5441F6285CDF1E645141295C8F824B3F5441D7A3701D2264514166666606453F54413D0AD78326645141B81E859B3C3F5441000000A0266451419A9999693B3F544152B81EB5256451417B14AE273A3F5441F6285C1F246451410AD7A3F0383F5441F6285CAF20645141295C8F02373F54413D0AD7B31A64514100000000343F5441AE47E13A186451413D0AD743333F5441C3F5284C1564514100000030333F5441A4703DFA116451411F85EBB1343F544148E17A940E6451411F85EB51373F5441C3F528FC0964514185EB51683A3F544114AE47D104645141295C8F42413F54415C8FC245FE635141713D0A174D3F544152B81E85FE6351413D0AD7D34D3F5441AE47E17AFE6351415C8FC2054F3F5441E17A14EEFD6351419A9999D94F3F5441E17A143EFC635141EC51B80E523F5441CDCCCCECF9635141666666C6543F54419A999909F96351415C8FC215553F54418FC2F538F763514114AE4701543F54418FC2F598F4635141A4703D3A523F54410AD7A370F36351415C8FC275523F544133333383F2635141295C8FE2523F544148E17A64F1635141E17A149E533F5441CDCCCCBCF0635141C3F5283C543F5441C3F5283CF06351415C8FC2C5533F5441713D0A47F1635141295C8FE2523F54415C8FC265F26351418FC2F508523F5441A4703D7AF36351419A999939513F544185EB51C8F26351411F85EB11513F5441A4703DCAEA6351419A9999C94D3F544133333393EE6351415C8FC285443F54413D0AD733F26351415C8FC285443F54410AD7A3F0F3635141CDCCCC3C403F5441C3F5287CF56351417B14AE573D3F5441D7A370FDF6635141C3F5287C3A3F54413D0AD743F8635141333333D3383F54413D0AD793F9635141713D0A97373F5441B81E850BFB6351417B14AE47373F544148E17A54FF635141F6285C0F303F544152B81EA501645141E17A142E313F5441CDCCCC1C0364514152B81E752D3F544185EB519803645141333333B32D3F54410AD7A3C0026451417B14AEA7303F54419A999939056451413D0AD713313F5441C3F528DC0B6451411F85EB01333F5441B81E858B07645141EC51B8FE383F54413D0AD7530964514152B81E95393F5441C3F5281C0A6451419A999919393F54419A9999290C64514152B81ED5373F544148E17A640E64514152B81E25363F544152B81E7511645141CDCCCC0C343F544152B81EF5126451417B14AE17333F5441CDCCCC8C1464514152B81E75323F544152B81E251664514133333323323F544152B81EA51764514133333323323F54418FC2F5C819645141AE47E1BA323F54411F85EBF11C6451410AD7A310343F54418FC2F5582664514114AE4731393F544114AE479127645141C3F5287C393F5441CDCCCC4C2D645141D7A3703D313F5441F6285C4F346451410AD7A310273F5441333333A3386451415C8FC2B5213F5441EC51B82E3B6451419A9999791E3F5441EC51B80E3A64514185EB51981C3F54411F85EBC1396451415C8FC2751B3F544114AE47113A64514148E17A241A3F544185EB51A83A6451413D0AD723193F54411F85EBC13B6451411F85EB21153F5441
+</a>
+
+<b>
+0106000000010000000103000000040000003F00000085EB5188C8635141333333C3E63F5441666666F6CB635141713D0AA7E83F5441CDCCCC8CCF635141EC51B88EE53F54410AD7A320D363514114AE47D1E23F5441E17A141EDF635141713D0A07DA3F54419A999929E3635141D7A370CDD63F544114AE4781E6635141E17A14CED33F5441A4703DAAE96351415C8FC2C5D03F54413D0AD7E3EC6351417B14AE67CD3F544100000080EF6351417B14AE27CA3F54415C8FC225F263514152B81E35C63F54418FC2F598F4635141B81E85FBC13F544148E17A74F663514148E17AE4BD3F544133333313F86351415C8FC2B5B93F5441E17A145EF963514133333363B53F544166666626FA6351417B14AE07B13F54417B14AE87FA635141666666E6AD3F5441CDCCCCACFA635141333333B3AC3F54418FC2F518FB635141C3F528DCA43F544100000070FB635141EC51B8FE9C3F5441D7A370FDFB63514100000040983F5441D7A370EDFC6351419A9999C9933F54415C8FC255FE6351413D0AD7638F3F544114AE47C1FF635141D7A3705D8B3F544183B0B2EF00645141892061CB883F5441726C994D02645141CF32EF3C863F5441C9F6A0FF05645141CBC50FDC7F3F544113A61C9E0B6451415C218298763F5441531AF0900F645141069551FD6F3F54412E2930BE1164514100C10DF76B3F54413D0AD713126451419A9999196B3F5441AE47E18AFA635141713D0A875A3F54411E39298FF863514151FAAEC45C3F544167C661D5E86351410B08D5AE6E3F5441DB51ABFFDC6351411997BF547C3F5441EC51B85ED16351413D0AD7B3893F5441E17A14EEDC63514148E17A449A3F544184929BDFD6635141F53C6349A13F5441BE7CD05FD263514118D286ACA63F54415D3C4D18CF6351419B7821AFAA3F5441B00D3E1CCA635141C04571A9B03F54418A9FCC5CC663514177AAFD0BB53F5441EC51B83EC3635141A4703D0AB83F544185EB5188BA635141E17A141EC03F54418FC2F5D8B2635141E17A143EC73F5441AE47E13AB3635141F6285CBFC73F54413D0AD743B2635141000000C0C83F5441AE47E12AB563514166666626CB3F54418FC2F5F8B7635141A4703DBACD3F5441B81E850BB9635141C3F5280CCF3F5441A4703DCAB9635141A4703D6AD03F54415C8FC265BA635141713D0AC7D13F5441D7A370FDBA63514100000020D33F54417B14AE87BB63514185EB5148D53F54413D0AD703BC635141EC51B87ED73F54418FC2F548BC63514166666676DA3F5441EC51B8EEBC6351411F85EB51DD3F544148E17A94BD635141713D0AF7DF3F54411F85EBD1BE635141CDCCCC5CE33F54418FC2F538C063514152B81EB5E63F5441AE47E18AC263514152B81ED5EB3F544185EB5158C76351418FC2F568E73F544185EB5188C8635141333333C3E63F54410500000014AE4711F7635141713D0A47A93F54415C8FC2E5F7635141E17A14CEA83F5441C3F5289CF86351411F85EB11AA3F544114AE47D1F7635141AE47E18AAA3F544114AE4711F7635141713D0A47A93F544105000000295C8F12E96351418FC2F538853F5441EC51B89EE8635141666666C6833F5441F6285CBFE9635141C3F5286C833F54413D0AD733EA635141F6285CDF843F5441295C8F12E96351418FC2F538853F54410500000000000020FC63514152B81E758C3F5441713D0A87FC635141C3F528BC8B3F5441CDCCCC3CFD63514148E17A248C3F5441713D0AD7FC635141AE47E1DA8C3F544100000020FC63514152B81E758C3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986181 - 986168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F544108E7FA021CF5504181FB2FDAAC6F5441D0B274FC1BF55041C6C35A73AB6F54418A596A441CF550413B69113DAB6F544193B2557B1DF5504139ED326EA96F5441488344621DF55041D9DCB846A76F5441230CEBF419F55041AC1AE729A36F544160A07EF614F550418AA38DBC9F6F5441B9A6DEAC0FF55041D7188ACC9C6F54419875703609F550411E430E2D996F54410EA8B1AA06F55041A30B4000986F5441F17BD0EC03F5504143FBC5D8956F5441AA92AACA00F550419170C2E8926F54416C7B468DF4F4504139F1AB678E6F5441997E76E8F1F450417CD544D18D6F5441BE362E94EEF450417CD544D18D6F54416026B46CECF450413BF1AB678E6F5441FF153A45EAF45041BD73F243906F5441C5C20482E8F45041F2C62707926F54416CFD020AE7F45041BE787FFC936F5441ED050D35E8F4504123945DDB946F5441DC5BB5E5EBF450414B701626956F544100CCC7F5EEF45041DA841B64956F5441D872F7D0F3F45041059B392E966F54415B3D6F27F9F45041CAB1C250976F5441B14D21F2FCF450411504EC4F986F54416C3009D6FFF450415183FE75996F5441A1E6652904F550418F3E1C2E9B6F5441B5B7575B07F550416FE458989C6F54410AEEE2F109F55041EBFC8DE19D6F5441850F051F0DF55041F26A96759F6F5441608F8E5B10F5504119A61717A16F54417563E9E311F550418385F70CA36F5441EA17FBF212F5504169048D07A66F54412D73A8A416F55041DEABD8ADAF6F54411F85EBD11AF5504185EB5158B86F5441713D0A471AF5504133333393BA6F544109E596EF1AF55041E3AF8EEABC6F5441E872CA3A1BF55041AC166E30BE6F544110300F9F1BF55041E069A3F3BF6F5441C600FE851BF55041DC23B8FCC26F544196F840721AF550418B63433DC56F54418EADC8C219F55041E02845B5C66F544136E8C64A18F550419F44AC4BC76F54412E9D4E9B17F550413DEE462DC86F54419A3E2C6917F5504194B348A5C96F544192F3B3B916F55041D351F617CC6F5441CA46E97C18F550413DF3D3E5CB6F54414FCEBC111EF550410CEB16D2CA6F54415B1EC27922F55041BB708D09CA6F54412E1B921E25F550411FC7F227C96F544191C9EA1425F5504182754B1EC96F544122F0D30125F550417442EA21C96F5441F05860EF24F55041E204C1F8C86F5441DDA0085624F55041D24C695FC86F5441846B8DDE23F550411F9A3456C76F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441CDCCCCDC11F550418FC2F5F8A26F54413D0AD75310F55041D7A3700DA16F54415C8FC2E505F55041EC51B8DE9B6F5441A4703DEAFBF45041713D0AE7976F54417B14AEC7F0F450418FC2F588956F5441E17A141EE5F45041CDCCCC9C946F5441EC51B8DEE2F45041EC51B80E966F5441F6285CEFDCF4504152B81EA59B6F54415C8FC2F5D8F4504185EB5198A16F5441D7A3709DD4F4504114AE4771AA6F5441CDCCCC0CD3F450410AD7A370B06F54418FC2F5B8D3F45041C3F5283CB76F5441CDCCCC9CCFF45041713D0A47BE6F5441295C8F12CBF45041B81E857BC36F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986181 - 1014189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F544108E7FA021CF5504181FB2FDAAC6F5441D0B274FC1BF55041C6C35A73AB6F54418A596A441CF550413B69113DAB6F544193B2557B1DF5504139ED326EA96F5441488344621DF55041D9DCB846A76F5441230CEBF419F55041AC1AE729A36F544160A07EF614F550418AA38DBC9F6F5441B9A6DEAC0FF55041D7188ACC9C6F54419875703609F550411E430E2D996F54410EA8B1AA06F55041A30B4000986F5441F17BD0EC03F5504143FBC5D8956F5441AA92AACA00F550419170C2E8926F54416C7B468DF4F4504139F1AB678E6F5441997E76E8F1F450417CD544D18D6F5441BE362E94EEF450417CD544D18D6F54416026B46CECF450413BF1AB678E6F5441FF153A45EAF45041BD73F243906F5441C5C20482E8F45041F2C62707926F54416CFD020AE7F45041BE787FFC936F5441ED050D35E8F4504123945DDB946F5441DC5BB5E5EBF450414B701626956F544100CCC7F5EEF45041DA841B64956F5441D872F7D0F3F45041059B392E966F54415B3D6F27F9F45041CAB1C250976F5441B14D21F2FCF450411504EC4F986F54416C3009D6FFF450415183FE75996F5441A1E6652904F550418F3E1C2E9B6F5441B5B7575B07F550416FE458989C6F54410AEEE2F109F55041EBFC8DE19D6F5441850F051F0DF55041F26A96759F6F5441608F8E5B10F5504119A61717A16F54417563E9E311F550418385F70CA36F5441EA17FBF212F5504169048D07A66F54412D73A8A416F55041DEABD8ADAF6F54411F85EBD11AF5504185EB5158B86F5441713D0A471AF5504133333393BA6F544109E596EF1AF55041E3AF8EEABC6F5441E872CA3A1BF55041AC166E30BE6F544110300F9F1BF55041E069A3F3BF6F5441C600FE851BF55041DC23B8FCC26F544196F840721AF550418B63433DC56F54418EADC8C219F55041E02845B5C66F544136E8C64A18F550419F44AC4BC76F54412E9D4E9B17F550413DEE462DC86F54419A3E2C6917F5504194B348A5C96F544192F3B3B916F55041D351F617CC6F5441CA46E97C18F550413DF3D3E5CB6F54414FCEBC111EF550410CEB16D2CA6F54415B1EC27922F55041BB708D09CA6F54412E1B921E25F550411FC7F227C96F544191C9EA1425F5504182754B1EC96F544122F0D30125F550417442EA21C96F5441F05860EF24F55041E204C1F8C86F5441DDA0085624F55041D24C695FC86F5441846B8DDE23F550411F9A3456C76F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441CDCCCCDC11F550418FC2F5F8A26F54413D0AD75310F55041D7A3700DA16F54415C8FC2E505F55041EC51B8DE9B6F5441A4703DEAFBF45041713D0AE7976F54417B14AEC7F0F450418FC2F588956F5441E17A141EE5F45041CDCCCC9C946F5441EC51B8DEE2F45041EC51B80E966F5441F6285CEFDCF4504152B81EA59B6F54415C8FC2F5D8F4504185EB5198A16F5441D7A3709DD4F4504114AE4771AA6F5441CDCCCC0CD3F450410AD7A370B06F54418FC2F5B8D3F45041C3F5283CB76F5441CDCCCC9CCFF45041713D0A47BE6F5441295C8F12CBF45041B81E857BC36F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986181 - 3832250
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F544108E7FA021CF5504181FB2FDAAC6F5441D0B274FC1BF55041C6C35A73AB6F54418A596A441CF550413B69113DAB6F544193B2557B1DF5504139ED326EA96F5441488344621DF55041D9DCB846A76F5441230CEBF419F55041AC1AE729A36F544160A07EF614F550418AA38DBC9F6F5441B9A6DEAC0FF55041D7188ACC9C6F54419875703609F550411E430E2D996F54410EA8B1AA06F55041A30B4000986F5441F17BD0EC03F5504143FBC5D8956F5441AA92AACA00F550419170C2E8926F54416C7B468DF4F4504139F1AB678E6F5441997E76E8F1F450417CD544D18D6F5441BE362E94EEF450417CD544D18D6F54416026B46CECF450413BF1AB678E6F5441FF153A45EAF45041BD73F243906F5441C5C20482E8F45041F2C62707926F54416CFD020AE7F45041BE787FFC936F5441ED050D35E8F4504123945DDB946F5441DC5BB5E5EBF450414B701626956F544100CCC7F5EEF45041DA841B64956F5441D872F7D0F3F45041059B392E966F54415B3D6F27F9F45041CAB1C250976F5441B14D21F2FCF450411504EC4F986F54416C3009D6FFF450415183FE75996F5441A1E6652904F550418F3E1C2E9B6F5441B5B7575B07F550416FE458989C6F54410AEEE2F109F55041EBFC8DE19D6F5441850F051F0DF55041F26A96759F6F5441608F8E5B10F5504119A61717A16F54417563E9E311F550418385F70CA36F5441EA17FBF212F5504169048D07A66F54412D73A8A416F55041DEABD8ADAF6F54411F85EBD11AF5504185EB5158B86F5441713D0A471AF5504133333393BA6F544109E596EF1AF55041E3AF8EEABC6F5441E872CA3A1BF55041AC166E30BE6F544110300F9F1BF55041E069A3F3BF6F5441C600FE851BF55041DC23B8FCC26F544196F840721AF550418B63433DC56F54418EADC8C219F55041E02845B5C66F544136E8C64A18F550419F44AC4BC76F54412E9D4E9B17F550413DEE462DC86F54419A3E2C6917F5504194B348A5C96F544192F3B3B916F55041D351F617CC6F5441CA46E97C18F550413DF3D3E5CB6F54414FCEBC111EF550410CEB16D2CA6F54415B1EC27922F55041BB708D09CA6F54412E1B921E25F550411FC7F227C96F544191C9EA1425F5504182754B1EC96F544122F0D30125F550417442EA21C96F5441F05860EF24F55041E204C1F8C86F5441DDA0085624F55041D24C695FC86F5441846B8DDE23F550411F9A3456C76F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441CDCCCCDC11F550418FC2F5F8A26F54413D0AD75310F55041D7A3700DA16F54415C8FC2E505F55041EC51B8DE9B6F5441A4703DEAFBF45041713D0AE7976F54417B14AEC7F0F450418FC2F588956F5441E17A141EE5F45041CDCCCC9C946F5441EC51B8DEE2F45041EC51B80E966F5441F6285CEFDCF4504152B81EA59B6F54415C8FC2F5D8F4504185EB5198A16F5441D7A3709DD4F4504114AE4771AA6F5441CDCCCC0CD3F450410AD7A370B06F54418FC2F5B8D3F45041C3F5283CB76F5441CDCCCC9CCFF45041713D0A47BE6F5441295C8F12CBF45041B81E857BC36F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875509 - 401529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+01060000000B00000001030000000100000019000000B81E852B1DFE50417B14AE27AADC5441B81E858B19FE5041EC51B8CEA5DC54418FC2F57814FE504148E17AA4A0DC5441B81E850B0DFE5041C3F5284C9BDC5441C3F5282C02FE50419A99993996DC54411F85EB91F8FD504148E17A2494DC5441000000E0EFFD50418FC2F59893DC54411F85EB21DAFD504152B81EF594DC54419A999979C7FD5041F6285CAF95DC54417B14AE87BFFD5041E17A14FE95DC54410AD7A3F0BFFD5041AE47E14A9BDC5441E17A147EC1FD5041E17A145E9CDC54418FC2F598D0FD504152B81E659BDC5441E17A146EDBFD5041295C8F929ADC54415C8FC285E9FD50410AD7A38099DC54415C8FC265F6FD5041E17A14DE99DC544185EB51E8FAFD50417B14AEC79ADC54419A99999907FE50411F85EB319DDC544152B81E2511FE50418FC2F598A3DC54410AD7A37019FE504185EB5108AEDC544185EB51281CFE504166666636B1DC54413D0AD7331DFE5041AE47E13AAEDC5441713D0AF71DFE504148E17A54ACDC5441F6285C1F1EFE5041AE47E1BAABDC5441B81E852B1DFE50417B14AE27AADC544101030000000100000010000000000000E0BAF95041E17A141E31DB54418FC2F5D8B1F950419A9999992ADB54418FC2F578B1F950410AD7A3D02ADB5441C3F5280CB1F950411F85EB412BDB54417B14AEA7B0F9504152B81ED52BDB544114AE47B1AFF950419A9999792DDB5441295C8F62AFF95041EC51B8DE2DDB544166666616AFF950411F85EB212EDB544152B81EB5AEF950419A9999592EDB5441B81E85ABADF9504114AE47C12EDB544185EB5158ABF9504148E17A742FDB544166666656B5F95041AE47E19A36DB5441333333E3BEF9504148E17AB438DB54419A9999C9C3F95041AE47E1BA3BDB544148E17A64C6F950410000004039DB5441000000E0BAF95041E17A141E31DB5441010300000001000000A4000000C3F5285CDCFC504114AE47F182DC5441F6285C9FD3FC50411F85EB4180DC5441CDCCCCECD0FC5041EC51B8DE7FDC544166666646C4FC5041E17A140E7EDC5441713D0A17B7FC5041333333E37ADC544148E17A94A7FC5041AE47E17A76DC5441666666A6A2FC50411F85EB3174DC5441AE47E17A9DFC5041666666966FDC54413D0AD7B393FC50417B14AE1767DC544148E17A0491FC504148E17AC464DC5441C3F528FC94FC5041A4703D1A5FDC5441333333F397FC5041E17A14DE5ADC544185EB510899FC504152B81E9558DC5441E17A14EE93FC50418FC2F53855DC5441E17A145E90FC50417B14AE7752DC544152B81E358BFC5041C3F5284C4EDC54413D0AD7638AFC5041713D0AF74FDC5441333333E38CFC5041C3F5281C52DC5441A4703DEA89FC504152B81E1556DC54415C8FC20586FC504185EB51485BDC544152B81EB584FC5041B81E856B58DC54416666667684FC504185EB51F857DC5441B81E85FB82FC5041C3F5283C55DC5441713D0AE780FC50419A9999B94FDC54413D0AD70380FC5041F6285C3F4FDC54411F85EB417FFC5041713D0AD74EDC5441AE47E14A7DFC50418FC2F5C84DDC5441C3F528DC7AFC5041AE47E13A4EDC5441D7A370DD77FC50415C8FC2B54DDC5441295C8F4275FC50415C8FC2A54CDC5441333333636CFC50410AD7A39047DC5441666666D669FC504148E17AE445DC5441D7A3702D67FC5041333333C343DC5441A4703D6A63FC504185EB51F840DC54419A9999D961FC50410000000040DC5441B81E85DB60FC504185EB51783FDC5441B81E857B59FC504152B81E853BDC54416666664655FC50417B14AE9739DC54416666667651FC5041EC51B85E38DC54411F85EBC148FC50411F85EB7136DC5441F6285CBF44FC50410000007035DC5441D7A3702D3CFC50410AD7A3E031DC5441CDCCCC1C3BFC504148E17A8431DC5441F6285CCF39FC50413333331331DC5441E17A142E33FC504148E17AD42EDC544114AE47812DFC50417B14AEE72CDC544114AE47A12BFC50417B14AED72CDC54411F85EB0128FC50418FC2F5B82CDC5441713D0AC721FC50413D0AD7832CDC544148E17AC420FC5041B81E857B2CDC5441D7A370ED1EFC5041C3F5286C2CDC5441295C8FA21EFC50419A9999692CDC544148E17AF417FC50410AD7A3302CDC54417B14AED709FC5041E17A149E2BDC5441295C8F5208FC50413D0AD7732DDC5441713D0A27FCFB50415C8FC2752BDC54419A9999E9FCFB50416666660628DC54419A999949F6FB5041B81E853B26DC544114AE47B1F0FB504185EB51B824DC54411F85EB31E8FB5041A4703D0A23DC54415C8FC2B5E3FB50413D0AD7B321DC5441B81E853BDDFB50410AD7A3A020DC54417B14AED7DBFB5041CDCCCC8C20DC5441666666E6D9FB504185EB517820DC54415C8FC2F5D7FB50410000005020DC54418FC2F518D6FB5041A4703D1A20DC544100000020D3FB504148E17AE41FDC544148E17A94CFFB504148E17AA41FDC544152B81EB5C9FB5041A4703D3A1FDC5441A4703D1AC4FB504148E17AD41EDC54418FC2F578BFFB50417B14AE771EDC5441295C8F12BCFB50413D0AD7331EDC5441295C8F92B9FB50411F85EB011EDC5441C3F528ECB5FB50419A9999B91DDC5441C3F5284CB4FB50418FC2F5981DDC5441A4703D4AB1FB50415C8FC2651DDC544152B81E15AFFB5041000000401DDC5441C3F5280CACFB5041C3F5280C1DDC5441EC51B8FEA9FB50418FC2F5E81CDC54413D0AD713A8FB504185EB51C81CDC5441E17A146EA4FB5041D7A3705D1CDC54411F85EBE1A2FB5041000000301CDC5441666666F6A0FB504185EB51D81BDC5441333333A39FFB5041B81E859B1BDC544148E17AA49BFB504152B81EE51ADC5441D7A370AD97FB5041F6285C2F1ADC5441D7A3700D8CFB5041CDCCCC0C18DC5441F6285C1F87FB5041C3F5283C17DC54410AD7A33082FB50419A99994916DC54410000003080FB504148E17AE415DC54417B14AE377DFB5041D7A3703D15DC544185EB51C87AFB504152B81EB514DC544148E17AF477FB50416666661614DC544148E17A0476FB5041000000A013DC544114AE47C170FB504185EB51A812DC54417B14AE576BFB504152B81E1511DC544114AE477167FB5041295C8FF20FDC54418FC2F5485EFB50419A9999A90FDC54419A9999795DFB5041000000900FDC54415C8FC22551FB5041AE47E10A0EDC5441AE47E1FA4CFB5041713D0A870DDC54410AD7A3F044FB5041713D0AC70BDC54418FC2F5F83AFB5041B81E859B09DC54413D0AD7D339FB50415C8FC2C508DC544114AE471138FB5041F6285CCF07DC544148E17A3436FB5041EC51B85E06DC5441713D0A1733FB50410AD7A39004DC5441666666F630FB50413333339303DC54410000001030FB50410AD7A37003DC54418FC2F5082BFB504114AE47B100DC5441A4703D5A1EFB504152B81E35F9DB544152B81ED515FB5041333333A3F3DB5441F6285CFF0DFB50413D0AD713EDDB54410000008018FB50415C8FC2D5F8DB5441B81E859B27FB5041AE47E17A02DC54410000008031FB50413D0AD74308DC54417B14AEF738FB5041F6285CFF0BDC5441AE47E1FA43FB5041A4703D7A10DC54410AD7A36068FB50413D0AD71316DC5441AE47E11AC0FB504152B81EF522DC54410AD7A3C0FFFB50417B14AE572EDC544185EB51A814FC50413D0AD7E331DC5441713D0A873FFC5041CDCCCC7C38DC5441D7A370AD51FC5041B81E85EB3ADC54413333334358FC5041E17A140E3DDC5441F6285C7F5FFC50410000006040DC5441B81E85CB66FC5041B81E855B45DC544114AE47816DFC50413D0AD7834DDC5441EC51B8EE72FC50413333332352DC54418FC2F5C87DFC50413D0AD7535CDC5441C3F528DC88FC5041C3F5284C65DC5441C3F528EC97FC5041D7A3705D72DC5441C3F5281CA2FC50417B14AE5779DC5441E17A148EA4FC5041666666667BDC5441B81E85FBA4FC5041000000307ADC5441E17A147EA6FC5041000000F078DC54413D0AD743A8FC504152B81E5578DC544114AE47D1A9FC5041AE47E16A78DC5441000000B0B6FC504185EB51A87BDC5441E17A141EC4FC50410AD7A3F07EDC544148E17A54DEFC50413333333385DC54411F85EB71EBFC5041C3F5287C88DC5441C3F528ECF6FC5041295C8F828BDC5441C3F5281C08FD5041B81E852B90DC5441CDCCCCBC0CFD504152B81E2591DC54413333339310FD50410AD7A3D091DC5441EC51B89E1EFD5041A4703DEA93DC54416666660623FD5041B81E85BB94DC5441666666762BFD5041D7A3707D91DC5441EC51B8BE22FD5041000000F093DC544148E17A0422FD50411F85EBB193DC54416666669619FD5041A4703D0A92DC54410000001011FD5041C3F528BC90DC5441C3F5284C0FFD504185EB51E88FDC5441C3F5286C05FD50413D0AD7438BDC54410AD7A3C003FD504185EB51B88BDC5441D7A3700DF8FC5041EC51B88E8ADC5441713D0A17F7FC5041F6285CFF8ADC5441295C8F92EBFC50418FC2F53887DC5441295C8F12E8FC5041CDCCCC3C86DC54415C8FC2E5E5FC50410AD7A3A085DC5441F6285C7FE3FC50413D0AD7F384DC5441CDCCCC8CDFFC5041713D0AD783DC5441C3F5285CDCFC504114AE47F182DC544101030000000100000020000000333333F3B4F950411F85EBB128DB5441A4703D2AC0F95041B81E854B31DB54417B14AE17C8F950411F85EBA137DB544114AE47C1C9F95041D7A3700D36DB5441F6285C6FC8F95041E17A145E35DB5441295C8F72C8F95041B81E85AB30DB54415C8FC245C4F9504152B81E8526DB5441D7A3707DC2F950413D0AD78327DB5441D7A3701DC2F95041F6285CAF27DB5441F6285CCFC1F95041EC51B8BE27DB5441AE47E17AC1F95041713D0AB727DB5441666666F6C0F95041D7A3708D27DB5441295C8F72C0F9504148E17A7427DB5441F6285CFFBFF9504148E17A7427DB5441A4703D9ABFF950415C8FC28527DB544100000000BFF95041B81E85AB27DB5441295C8F22BEF95041E17A14FE27DB54410AD7A370BDF95041295C8F2228DB5441CDCCCCBCBCF950418FC2F53828DB5441CDCCCCFCBBF95041295C8F2228DB54411F85EBB1BBF95041F6285C0F28DB544114AE4741BBF950415C8FC2D527DB5441A4703D9ABAF95041EC51B8AE27DB5441CDCCCCECB9F950415C8FC28527DB54418FC2F568B9F95041C3F5287C27DB54419A9999C9B8F950410000008027DB5441B81E851BB8F950416666669627DB5441C3F5285CB7F950418FC2F5B827DB5441AE47E12AB6F950415C8FC20528DB54415C8FC2C5B5F9504185EB512828DB5441F6285C6FB5F950417B14AE5728DB5441333333F3B4F950411F85EBB128DB54410103000000010000009900000052B81E0542FC5041713D0A9742DC54410AD7A31044FC5041CDCCCC8C42DC544185EB51E849FC50410000007042DC54411F85EB314CFC50413333336342DC5441000000A050FC5041F6285C2F42DC544148E17A7458FC5041E17A14EE44DC54415C8FC2A559FC5041AE47E16A45DC544152B81E155BFC50410AD7A30046DC5441A4703DCA5EFC504148E17A8447DC5441F6285C2F62FC50415C8FC2E54DDC5441B81E851B62FC5041EC51B8DE4CDC5441AE47E15A65FC50418FC2F5A851DC544152B81EC567FC5041000000D054DC544114AE47B161FC50417B14AEE75DDC5441D7A370DD62FC50413D0AD7335FDC5441CDCCCCFC69FC5041295C8F1267DC5441A4703DEA70FC50419A9999F96EDC544148E17A0475FC5041EC51B84E6CDC5441F6285CEF75FC5041666666B66BDC54417B14AE9778FC50413D0AD7136ADC54410AD7A3807AFC5041713D0AE768DC5441713D0A9784FC5041C3F5281C6BDC5441C3F5286C87FC5041E17A143E6DDC5441295C8F428AFC5041000000606FDC5441D7A3703D8EFC50418FC2F5A872DC5441295C8F5291FC504148E17A3475DC54419A99999994FC504185EB51E877DC54413D0AD7639FFC504185EB51887EDC5441AE47E1AAA1FC504185EB51687FDC544185EB51F8A2FC50418FC2F5E87FDC54411F85EBC1A3FC5041B81E85AB7DDC5441B81E85ABA0FC5041A4703DAA7CDC5441C3F5287C95FC5041F6285C3F74DC54418FC2F58886FC5041E17A142E67DC5441C3F5283C7CFC504148E17AC45DDC5441F6285CEF71FC50413D0AD79353DC5441333333D36BFC5041295C8F424EDC5441D7A3703D63FC5041B81E859B46DC544185EB51B859FC5041295C8F7240DC5441EC51B81E54FC50415C8FC2053EDC54418FC2F5084BFC50419A9999393CDC544185EB51D814FC504114AE472134DC5441E17A142E02FC504148E17A5431DC5441AE47E1BABFFB50410000007027DC54410AD7A30068FB5041EC51B85E1ADC5441CDCCCCBC4FFB5041333333A316DC54413D0AD7533CFB50417B14AEE712DC54411F85EB0130FB5041E17A147E0DDC5441000000B023FB50416666666606DC5441D7A370DDE0FA5041B81E85ABD8DB5441C3F5288CD4FA5041295C8F82D2DB54419A999999C8FA504152B81E15D0DB5441EC51B8AEB6FA50419A999929CCDB544185EB5148AEFA5041CDCCCC5CC9DB54410AD7A330A7FA50411F85EBE1C4DB5441CDCCCC8C9CFA5041E17A14CEBADB544114AE47A181FA5041F6285C5F9FDB5441295C8FA27EFA5041295C8F129CDB5441AE47E16A7EFA5041EC51B81E9ADB5441EC51B8FE7CFA50417B14AE9798DB5441D7A3703D7CFA5041CDCCCC1C99DB544114AE471178FA5041333333939ADB5441F6285C9F98FA50418FC2F5D8BCDB5441A4703DFA9DFA504148E17A74C2DB5441000000D0A2FA50413D0AD783C7DB5441AE47E1DAA3FA504114AE47A1C8DB544133333323ABFA50418FC2F508CDDB5441CDCCCC4CACFA50415C8FC255D1DB5441EC51B89EACFA5041C3F528BCD2DB54417B14AE77B6FA50418FC2F5B8D2DB5441CDCCCC1CBFFA5041CDCCCC5CD1DB5441CDCCCC5CCAFA5041C3F5288CD4DB54418FC2F5D8D8FA504148E17AA4D9DB54411F85EBA1D4FA5041B81E853BDFDB544148E17A94D9FA5041EC51B88EE8DB544148E17A64D3FA5041EC51B8BEECDB54410AD7A3F0D0FA50413D0AD743F8DB544185EB5198D3FA50415C8FC2B5F9DB5441CDCCCC5CD6FA50413D0AD793FADB544152B81E15D7FA5041D7A370CDFADB5441B81E853BDCFA50418FC2F5E8FBDB5441E17A14AEDCFA5041000000B002DC54419A999909DDFA504114AE47C102DC544152B81E65E0FA504148E17A6408DC544166666636E3FA5041AE47E1DA07DC5441CDCCCCACE6FA5041E17A141E07DC5441C3F5281CE9FA504114AE478100DC544148E17A44ECFA50415C8FC2E501DC5441AE47E19AEDFA5041295C8F6209DC544185EB51B8F4FA504152B81E8519DC544152B81EC5F6FA5041F6285CCF15DC544166666606F8FA50417B14AE8713DC5441AE47E1EAF8FA50415C8FC2A510DC5441D7A370DDF8FA50410AD7A3600FDC5441CDCCCCBCF8FA50418FC2F5C80DDC544152B81EE5F9FA50419A9999D90BDC544114AE4741FAFA5041F6285C0F0CDC54419A9999B9FAFA50415C8FC2550CDC544152B81E25FCFA50413D0AD7230DDC54413333336303FB50411F85EBB109DC5441AE47E19A07FB50419A9999A906DC544152B81E250BFB5041B81E856B04DC5441713D0A1710FB50418FC2F5D800DC5441713D0AE712FB504148E17A34FFDB54417B14AEE718FB5041333333B301DC544185EB51181AFB5041D7A3704D04DC5441713D0AA71AFB50415C8FC28505DC5441333333231BFB50415C8FC29506DC5441C3F5285C25FB50418FC2F5380BDC5441E17A145E26FB5041E17A14FE0ADC54413D0AD7632CFB50410000007011DC54419A9999192DFB5041AE47E1DA11DC544185EB51F835FB50411F85EBF114DC54410AD7A32040FB50416666668618DC544185EB512847FB50419A9999E91ADC544114AE476149FB5041666666B61BDC544185EB51584AFB504152B81EF51BDC54418FC2F5B856FB5041E17A14AE1CDC54411F85EBE157FB5041CDCCCC7C1BDC5441C3F5289C58FB504148E17A141BDC54411F85EB115CFB50410AD7A3401BDC544185EB511864FB5041B81E85EB1BDC5441E17A140E6EFB50413D0AD7231DDC54410AD7A3E07DFB5041C3F528AC1FDC5441EC51B86E90FB50410000006022DC5441B81E85AB9CFB50417B14AE5724DC5441295C8F22AAFB5041EC51B84E26DC5441713D0A17B6FB504148E17A3428DC54413D0AD7F3C8FB5041D7A370DD2ADC54418FC2F5F8DAFB5041000000E02DDC54419A9999C9E2FB50411F85EB212FDC54417B14AE0703FC504148E17A5434DC5441E17A14FE07FC504114AE472135DC54410000009008FC5041713D0A6736DC5441A4703DCA0CFC5041C3F528BC36DC544114AE479110FC50413333335337DC5441F6285C3F14FC5041A4703DBA38DC5441D7A3705D19FC50410AD7A3A03ADC5441D7A370AD1CFC504114AE47C13BDC5441666666561EFC50415C8FC2853CDC544148E17A341EFC5041AE47E14A3FDC5441C3F528DC1DFC5041F6285CDF42DC5441CDCCCC2C1DFC5041CDCCCC6C49DC5441D7A3700D22FC5041B81E85CB48DC5441EC51B8CE23FC50411F85EB6148DC544148E17A2428FC5041D7A3705D47DC544152B81E7528FC50419A99994947DC5441EC51B84E29FC504152B81E1547DC5441000000C02EFC5041295C8FC245DC544185EB518831FC504185EB516844DC5441D7A3702D35FC5041295C8FC242DC5441CDCCCCFC3BFC50413D0AD7A342DC544152B81E0542FC5041713D0A9742DC5441010300000001000000A6000000295C8F0267FA5041A4703DDA79DB5441AE47E10A64FA50411F85EBF176DB54410000006061FA504152B81E5574DB544114AE479162FA5041EC51B81E73DB544148E17A5462FA5041D7A3708D71DB5441CDCCCC0C62FA5041666666D671DB5441A4703D3A60FA5041CDCCCCCC73DB5441B81E854B5FFA5041E17A14DE72DB5441AE47E1DA5EFA5041B81E856B72DB5441666666A65EFA5041CDCCCC9C72DB5441E17A14FE55FA5041333333D369DB5441E17A149E57FA5041CDCCCC2C68DB54415C8FC2D55AFA50417B14AE576BDB54411F85EB315DFA5041000000206CDB5441F6285CEF61FA5041AE47E1BA70DB54415C8FC29561FA5041333333A36FDB544148E17A2461FA5041CDCCCCDC6EDB5441000000D05FFA50411F85EB116EDB5441D7A3702D5FFA504185EB51886DDB544152B81E055FFA5041333333336DDB54413D0AD7A35EFA5041713D0AD76BDB5441AE47E13A5EFA50419A9999696BDB544152B81E955CFA50415C8FC2356ADB544185EB51585CFA50413D0AD7C369DB54417B14AE275CFA50410000009068DB5441AE47E1CA5BFA50411F85EBD167DB5441A4703D7A5AFA50411F85EBB166DB544152B81E255AFA50413D0AD71366DB54411F85EB015AFA5041333333F364DB54410AD7A3A059FA5041A4703D3A64DB54416666660657FA5041EC51B8CE61DB54418FC2F51857FA50419A99993960DB5441D7A370ED56FA5041EC51B8DE5FDB544148E17A0456FA50410AD7A3E05EDB544114AE47D154FA5041C3F5285C5DDB5441A4703DCA53FA5041C3F5289C5BDB54410000002050FA5041A4703DCA5EDB54413333330340FA50413333336351DB5441D7A3701D3CFA5041D7A3707D4DDB54417B14AE673BFA50417B14AEC74CDB5441CDCCCC8C27FA5041D7A370ED38DB5441D7A370FD18FA50419A99990935DB54417B14AEB717FA5041000000C034DB54419A9999A901FA5041295C8F5235DB5441F6285C1FEEF950418FC2F5F83BDB5441CDCCCCDCDBF95041B81E853B3DDB5441A4703D3AD4F9504152B81E953BDB5441EC51B85ED3F95041333333333BDB5441C3F5284CD1F95041AE47E11A3DDB5441C3F5283CD6F95041AE47E1BA3EDB5441A4703D9AD8F95041666666B63FDB544152B81E25E3F950411F85EBE140DB54411F85EBE1E4F95041295C8F6240DB54417B14AE97EAF95041E17A14CE3FDB5441000000D0EEF95041A4703DFA3EDB54417B14AE87F3F95041D7A3707D3DDB5441E17A140EFCF950417B14AE973ADB54410AD7A38003FA50415C8FC2C538DB54417B14AE470BFA50417B14AEC737DB5441713D0A7714FA5041C3F5281C38DB5441C3F528AC1AFA5041A4703D5A39DB5441713D0AA71DFA5041333333433ADB5441F6285C7F1FFA5041713D0A273CDB54418FC2F53828FA5041EC51B8AE40DB5441A4703DBA2AFA5041B81E854B41DB5441AE47E11A30FA50418FC2F5D845DB544185EB517837FA5041666666364DDB54418FC2F51850FA5041295C8FA266DB544114AE47F157FA50410AD7A3E06EDB5441666666D658FA50410AD7A39070DB544148E17AB459FA5041AE47E16A71DB54415C8FC2355AFA504148E17AF471DB544185EB51F860FA50416666662679DB54417B14AE3761FA50419A99995979DB5441E17A143E62FA50417B14AE9779DB544148E17AF466FA5041E17A143E7EDB54413D0AD75373FA5041E17A14FE8ADB544185EB51A876FA5041295C8F828EDB54413D0AD7C377FA50413333339390DB5441AE47E16A78FA50416666664691DB54419A9999B977FA5041713D0AD791DB54417B14AE4776FA50415C8FC2D590DB544152B81E4574FA504152B81E7590DB5441333333B372FA504148E17AF48FDB54411F85EB2165FA504114AE472181DB5441B81E852B60FA5041A4703D4A7BDB5441B81E856B60FA5041CDCCCC4C7ADB54419A99993960FA504114AE47117ADB54416666660659FA50415C8FC26572DB544152B81E9558FA5041B81E85FB71DB5441B81E858B57FA504152B81E7571DB544114AE474156FA5041333333C370DB5441CDCCCC1C4EFA50418FC2F53868DB544148E17AE436FA50410AD7A33050DB5441E17A149E2EFA5041A4703DEA47DB5441D7A370FD28FA5041CDCCCC9C43DB544114AE474127FA5041CDCCCC8C41DB5441666666F61EFA50411F85EB313DDB544114AE47F11DFA50417B14AEC73CDB5441666666D61AFA504152B81E153CDB54411F85EB6114FA5041D7A3706D3ADB54411F85EB710BFA5041E17A142E3ADB5441F6285CFF03FA504114AE47413BDB54411F85EBA1FCF95041333333133DDB544152B81E35F2F950411F85EBA140DB5441A4703D3AEFF95041B81E858B41DB54417B14AED7EAF95041E17A14DE42DB544133333333E7F950413333333343DB544133333323E4F95041E17A14DE42DB54415C8FC2E5E2F95041F6285C1F42DB5441295C8F62D8F95041CDCCCCEC40DB544148E17AD4D4F950411F85EBE140DB5441E17A146ED2F95041295C8F6240DB544185EB51F8CEF95041EC51B83E3FDB544114AE4731CEF95041666666F63FDB5441D7A370DDCCF95041F6285C2F41DB5441CDCCCCACD6F95041AE47E13A47DB54417B14AEB7D6F95041713D0AA744DB544185EB5118D7F9504152B81E9543DB5441713D0A67DCF95041666666B643DB54411F85EBE1E0F950418FC2F51844DB5441295C8FC2E0F950413D0AD78345DB5441EC51B8CEEBF95041713D0A7746DB54415C8FC2D5EFF95041B81E853B45DB5441F6285C8FF3F950418FC2F51844DB54419A9999F901FA50417B14AEA73FDB5441D7A370DD0FFA50417B14AE573EDB5441333333E31BFA504148E17A5440DB544148E17AA41CFA5041E17A141E46DB544148E17A741EFA504114AE47D147DB54410AD7A3301FFA5041713D0AD73FDB54415C8FC20527FA5041D7A370FD43DB5441713D0A472EFA504152B81E254ADB544185EB51B835FA50415C8FC2C551DB5441E17A14BE38FA5041E17A14DE54DB5441CDCCCC3C3CFA50413333337358DB5441C3F528AC3FFA504148E17A145CDB54419A99992943FA5041AE47E1AA5FDB54417B14AE974AFA50415C8FC25567DB5441333333F343FA50413D0AD7E36CDB5441C3F5288C47FA5041AE47E19A70DB5441AE47E18A48FA5041333333A371DB54419A9999994FFA504152B81E356EDB5441000000A053FA5041EC51B82E72DB544152B81E4557FA50410000006075DB54416666669658FA5041713D0A8776DB5441B81E854B59FA504185EB51D875DB54417B14AEF75CFA5041666666A679DB5441B81E859B5CFA5041F6285CFF79DB544185EB513871FA50413D0AD72393DB5441E17A141E74FA5041C3F528EC93DB54417B14AE8774FA5041EC51B88E93DB544152B81EA575FA504148E17AC494DB54413D0AD71374FA5041AE47E16A96DB54410AD7A37074FA50418FC2F5C896DB5441D7A370CD7BFA5041000000A090DB5441D7A370CD80FA5041CDCCCC0C90DB54417B14AE677EFA5041333333738DDB5441CDCCCC4C72FA5041AE47E10A84DB54413333339374FA5041C3F528AC7FDB544152B81E8573FA5041000000A07EDB54410AD7A38072FA5041333333937EDB5441EC51B85E73FA5041000000707FDB5441F6285C2F71FA5041295C8FC283DB54418FC2F5786BFA50419A9999397EDB5441295C8F0267FA5041A4703DDA79DB54410103000000010000001F000000D7A3709DF9FD5041D7A3704D89DC5441F6285C4FF5FD50410AD7A38088DC5441CDCCCCACF4FD50419A9999D98BDC544133333303DBFD50419A9999A98DDC544114AE47E1BFFD50411F85EB2190DC54415C8FC215BFFD504148E17A4490DC544114AE4761BFFD5041295C8F1294DC5441CDCCCC4CC7FD5041E17A14CE93DC5441AE47E10ADAFD5041F6285CDF92DC5441713D0AF7EFFD50418FC2F5C891DC54417B14AED7F8FD50415C8FC22592DC5441EC51B8CE02FE50419A99996994DC5441E17A140E0AFE504114AE472197DC54417B14AE370FFE5041E17A144E99DC544148E17AD415FE5041666666A69EDC54417B14AEE71AFE5041CDCCCC2CA4DC5441E17A149E1EFE504148E17AB4A8DC54410000005020FE5041713D0AF7AADC54419A99992921FE5041AE47E1AAAADC54413333337320FE504114AE4781A9DC54410AD7A3E01FFE504185EB5188A8DC5441295C8F521FFE50411F85EBD1A7DC54411F85EB6120FE50415C8FC2A5A4DC5441D7A370CD20FE504152B81E95A3DC5441A4703D2A1BFE50417B14AE279EDC54417B14AE671AFE5041C3F5281C9DDC544185EB514816FE5041EC51B88E98DC54413D0AD72312FE5041CDCCCC7C95DC544114AE47210AFE5041CDCCCC8C8FDC54417B14AED706FE5041D7A3701D8DDC5441D7A3709DF9FD5041D7A3704D89DC54410103000000010000003900000014AE47B17FFD50419A9999799FDC54410AD7A3D08AFD5041E17A14DE9EDC5441A4703DEA8EFD504185EB51789FDC5441B81E851BA1FD5041E17A146E9FDC5441CDCCCC5CABFD504185EB51C89DDC54417B14AEF7BAFD5041000000409DDC54410AD7A3C0BAFD5041333333B396DC5441295C8F6287FD5041713D0A9799DC5441713D0AA77CFD50417B14AE279ADC544148E17A1464FD504185EB51489BDC54413D0AD7F34DFD50419A9999399CDC5441333333833EFD5041AE47E12A9DDC544185EB515834FD5041333333D39DDC5441EC51B8DE2BFD5041333333A39DDC54413D0AD7B321FD50418FC2F5D89BDC5441D7A3702D0DFD50413D0AD72397DC5441A4703D4ADEFC50410AD7A3B08CDC5441713D0A17A9FC50410AD7A30080DC54418FC2F5C8A6FC5041C3F5287C7EDC5441666666E6A4FC5041333333037EDC544185EB5108A4FC504114AE475180DC544114AE4701A5FC504114AE47B180DC5441C3F5280CAFFC5041E17A148E84DC5441E17A14BEBAFC5041A4703D6A87DC5441B81E852BCFFC5041EC51B8EE8BDC544100000050D1FC50419A9999798CDC5441C3F528ECD1FC50410AD7A3A08CDC54417B14AEA7D8FC5041333333538EDC5441C3F5281CDAFC504114AE47B18EDC5441C3F5286CDDFC504185EB51588FDC5441A4703D7AE1FC50413333333390DC544152B81ED5E3FC5041295C8FB290DC5441713D0AD7E5FC5041EC51B81E91DC54418FC2F578EAFC504185EB511892DC5441A4703DAAE8FC50415C8FC2159ADC5441F6285C6FEAFC5041AE47E19A9ADC54411F85EB21EAFC504114AE47219BDC54413D0AD793EBFC5041B81E854B9BDC544148E17AB4EBFC5041A4703DFA9ADC5441C3F528FCF3FC5041713D0A679DDC544148E17A64FDFC50418FC2F528A0DC5441713D0AC704FD5041333333F3A1DC5441E17A14EE03FD5041CDCCCC4CA3DC54417B14AE070AFD5041EC51B80EA5DC544152B81E550EFD5041B81E853BA5DC54413D0AD76315FD5041F6285C9FA6DC5441CDCCCC0C1EFD504100000040A9DC54419A9999B920FD5041E17A14DEAADC54415C8FC29523FD5041F6285C7FAADC544148E17AD421FD5041E17A14FEA8DC5441D7A3701D2BFD504152B81E45A3DC5441F6285CDF3AFD5041F6285C5FA3DC54415C8FC2C53AFD5041A4703DBAA4DC5441666666B645FD50413D0AD7D3A4DC54416666667652FD50417B14AE77A2DC54415C8FC2A571FD504152B81E45A2DC544114AE47B17FFD50419A9999799FDC54410103000000010000002A0000003D0AD75323FD5041295C8FA295DC54410AD7A31010FD5041333333F392DC544152B81E050CFD504152B81E4592DC54418FC2F50800FD504148E17AF48EDC5441D7A3705DFCFC5041000000108EDC544152B81E55EBFC504185EB519889DC5441D7A3708DD9FC5041CDCCCC3C85DC5441713D0AC7C2FC50417B14AE0780DC5441F6285CEFB7FC50418FC2F5587DDC544133333393ABFC504152B81E157ADC544152B81E95A8FC50410000008079DC5441713D0A57A7FC50413D0AD79379DC5441EC51B82EA6FC50419A9999997ADC544152B81EB5A5FC5041C3F528DC7BDC544152B81ED5A7FC5041AE47E1BA7CDC544152B81E45AAFC50413D0AD7B37CDC544148E17A44E0FC5041D7A3707D89DC5441EC51B8AE0EFD50419A9999C994DC5441C3F5282C22FD5041E17A141E99DC5441EC51B8DE2BFD504185EB51E89ADC544185EB51B834FD50410AD7A3909BDC5441B81E859B3EFD504185EB51189BDC544148E17A544EFD5041713D0AF799DC544148E17A7464FD5041E17A14EE98DC5441713D0AA77CFD5041CDCCCCFC97DC5441295C8F6287FD504148E17A8497DC5441C3F528ACBAFD5041CDCCCC3C94DC54413D0AD793BAFD5041D7A3704D91DC54417B14AE17BAFD5041D7A3702D90DC544148E17A44B9FD5041CDCCCC0C90DC54413D0AD773A3FD5041A4703D4A91DC54417B14AE9799FD50419A9999D991DC5441F6285C2F87FD5041295C8FD292DC5441B81E857B84FD5041666666D692DC5441F6285C6F76FD5041D7A370AD91DC5441C3F528FC65FD5041C3F5286C92DC544114AE47614FFD50417B14AE0795DC5441CDCCCCDC39FD5041EC51B80E94DC544148E17AB434FD50413D0AD7E396DC54416666669627FD5041295C8F8294DC54416666662627FD50410000007094DC54413D0AD75323FD5041295C8FA295DC5441010300000001000000090000007B14AEB762FB5041333333E31FDC54417B14AE3762FB50411F85EBC121DC5441295C8F025FFB50411F85EBA129DC54417B14AE6766FB5041295C8F022BDC54417B14AE576BFB5041AE47E10A22DC5441AE47E16A6DFB5041333333431EDC5441CDCCCC0C65FB5041EC51B83E1DDC544148E17A7463FB5041EC51B80E1DDC54417B14AEB762FB5041333333E31FDC544101030000000100000011000000EC51B83EADFB5041A4703D0A28DC544185EB5178A2FB504185EB518826DC54415C8FC2C598FB50411F85EB1125DC54411F85EB8191FB5041000000F023DC5441CDCCCCEC90FB5041713D0AB729DC5441000000D094FB5041B81E854B2ADC544148E17A049DFB5041A4703D8A2BDC5441295C8F12A0FB50410AD7A3002CDC54413D0AD7A3A9FB5041A4703D5A2DDC544133333333AFFB50418FC2F5282EDC5441E17A144EB2FB5041B81E859B2EDC5441CDCCCCCCB5FB5041C3F5281C2FDC544152B81EE5B9FB5041A4703DCA2EDC5441A4703DAABAFB5041000000702BDC5441295C8FD2BAFB50418FC2F5D829DC54413D0AD7E3B7FB504185EB517829DC5441EC51B83EADFB5041A4703D0A28DC5441
+</a>
+
+<b>
+010600000001000000010300000001000000370000005415AED709FC5041EA7A149E2BDC5441B15A8F5208FC5041C90AD7732DDC54416721A6B507FC50416E71265A2DDC5441D43C4D8906FC5041AA9447532FDC54412236B71609FC5041C9942EC02FDC5441BEAB94DA0BFC5041D8514F4830DC544151418FBE15FC50417E8BB1E031DC5441378DB3C21CFC5041D4F4132333DC5441201CFC3E1FFC5041ACC5FF8433DC5441C2BF2B9725FC504164C0E15234DC5441AF65EE132CFC5041C0FE751135DC54416B45FA9534FC504193B9647336DC54419030CEB039FC5041A633A68337DC54415A1A2CB039FC504105CF148837DC54417665FE223CFC504149368DF037DC5441C470BD3749FC504189ABB56D39DC544184D16E1651FC504103EA30993ADC5441E4BE745755FC5041B7A4388E3BDC54418AF8D6EF56FC50414EE5FE723BDC5441951FC2A557FC504118D0EAAD3ADC5441BC66664655FC5041D416AE9739DC54414FC5732E52FC504179C6BC9938DC54416666667651FC5041EC51B85E38DC544178BF1BC24FFC5041715A3DFE37DC54413F7EE3CD49FC5041DC892DAD36DC54412FB69CAF48FC50415C7453D537DC54419042233844FC50414BF511C536DC54413B9F47283EFC5041CEBB969935DC544149E471593CFC504127FC8EA434DC54414A6A17B63BFC5041AF7F340134DC54412B6A30493BFC504155C7459F32DC54412B6A30493BFC5041151A7C9331DC5441DAD37E2D3BFC5041289F1F8A31DC5441FDCFCC1C3BFC50416DE47A8431DC544170B31B763AFC5041417ED94B31DC5441F6285CCF39FC50413333331331DC544121C3251638FC504160CCCC7D30DC54416677142E33FC5041FAE57AD42EDC544188E4D8382EFC50414D82F2252DDC544114AE47812DFC50417B14AEE72CDC5441F5DAD6EB2CFC50413EDAB2E22CDC54415CAC47A12BFC5041F416AED72CDC544138B6EF7D29FC5041BB6C8CC52CDC54411F85EB0128FC50418FC2F5B82CDC5441A1164F8522FC50417E5D2D8A2CDC54412B3A0AC721FC50415E0AD7832CDC54414AF2AA7F21FC5041321A8B812CDC5441F615504D21FC5041234CEC7F2CDC544117D7577C20FC50412E9747532FDC54415C9D0E771EFC50415B18D41C2FDC5441DE5ECC631EFC5041406F82672CDC54417FCB9BA81BFC5041337B38502CDC54417FE27AF417FC504118D9A3302CDC54413D17325D11FC5041C13031EC2BDC54415415AED709FC5041EA7A149E2BDC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875509 - 401532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000B00000001030000000100000019000000B81E852B1DFE50417B14AE27AADC5441B81E858B19FE5041EC51B8CEA5DC54418FC2F57814FE504148E17AA4A0DC5441B81E850B0DFE5041C3F5284C9BDC5441C3F5282C02FE50419A99993996DC54411F85EB91F8FD504148E17A2494DC5441000000E0EFFD50418FC2F59893DC54411F85EB21DAFD504152B81EF594DC54419A999979C7FD5041F6285CAF95DC54417B14AE87BFFD5041E17A14FE95DC54410AD7A3F0BFFD5041AE47E14A9BDC5441E17A147EC1FD5041E17A145E9CDC54418FC2F598D0FD504152B81E659BDC5441E17A146EDBFD5041295C8F929ADC54415C8FC285E9FD50410AD7A38099DC54415C8FC265F6FD5041E17A14DE99DC544185EB51E8FAFD50417B14AEC79ADC54419A99999907FE50411F85EB319DDC544152B81E2511FE50418FC2F598A3DC54410AD7A37019FE504185EB5108AEDC544185EB51281CFE504166666636B1DC54413D0AD7331DFE5041AE47E13AAEDC5441713D0AF71DFE504148E17A54ACDC5441F6285C1F1EFE5041AE47E1BAABDC5441B81E852B1DFE50417B14AE27AADC544101030000000100000010000000000000E0BAF95041E17A141E31DB54418FC2F5D8B1F950419A9999992ADB54418FC2F578B1F950410AD7A3D02ADB5441C3F5280CB1F950411F85EB412BDB54417B14AEA7B0F9504152B81ED52BDB544114AE47B1AFF950419A9999792DDB5441295C8F62AFF95041EC51B8DE2DDB544166666616AFF950411F85EB212EDB544152B81EB5AEF950419A9999592EDB5441B81E85ABADF9504114AE47C12EDB544185EB5158ABF9504148E17A742FDB544166666656B5F95041AE47E19A36DB5441333333E3BEF9504148E17AB438DB54419A9999C9C3F95041AE47E1BA3BDB544148E17A64C6F950410000004039DB5441000000E0BAF95041E17A141E31DB5441010300000001000000A4000000C3F5285CDCFC504114AE47F182DC5441F6285C9FD3FC50411F85EB4180DC5441CDCCCCECD0FC5041EC51B8DE7FDC544166666646C4FC5041E17A140E7EDC5441713D0A17B7FC5041333333E37ADC544148E17A94A7FC5041AE47E17A76DC5441666666A6A2FC50411F85EB3174DC5441AE47E17A9DFC5041666666966FDC54413D0AD7B393FC50417B14AE1767DC544148E17A0491FC504148E17AC464DC5441C3F528FC94FC5041A4703D1A5FDC5441333333F397FC5041E17A14DE5ADC544185EB510899FC504152B81E9558DC5441E17A14EE93FC50418FC2F53855DC5441E17A145E90FC50417B14AE7752DC544152B81E358BFC5041C3F5284C4EDC54413D0AD7638AFC5041713D0AF74FDC5441333333E38CFC5041C3F5281C52DC5441A4703DEA89FC504152B81E1556DC54415C8FC20586FC504185EB51485BDC544152B81EB584FC5041B81E856B58DC54416666667684FC504185EB51F857DC5441B81E85FB82FC5041C3F5283C55DC5441713D0AE780FC50419A9999B94FDC54413D0AD70380FC5041F6285C3F4FDC54411F85EB417FFC5041713D0AD74EDC5441AE47E14A7DFC50418FC2F5C84DDC5441C3F528DC7AFC5041AE47E13A4EDC5441D7A370DD77FC50415C8FC2B54DDC5441295C8F4275FC50415C8FC2A54CDC5441333333636CFC50410AD7A39047DC5441666666D669FC504148E17AE445DC5441D7A3702D67FC5041333333C343DC5441A4703D6A63FC504185EB51F840DC54419A9999D961FC50410000000040DC5441B81E85DB60FC504185EB51783FDC5441B81E857B59FC504152B81E853BDC54416666664655FC50417B14AE9739DC54416666667651FC5041EC51B85E38DC54411F85EBC148FC50411F85EB7136DC5441F6285CBF44FC50410000007035DC5441D7A3702D3CFC50410AD7A3E031DC5441CDCCCC1C3BFC504148E17A8431DC5441F6285CCF39FC50413333331331DC5441E17A142E33FC504148E17AD42EDC544114AE47812DFC50417B14AEE72CDC544114AE47A12BFC50417B14AED72CDC54411F85EB0128FC50418FC2F5B82CDC5441713D0AC721FC50413D0AD7832CDC544148E17AC420FC5041B81E857B2CDC5441D7A370ED1EFC5041C3F5286C2CDC5441295C8FA21EFC50419A9999692CDC544148E17AF417FC50410AD7A3302CDC54417B14AED709FC5041E17A149E2BDC5441295C8F5208FC50413D0AD7732DDC5441713D0A27FCFB50415C8FC2752BDC54419A9999E9FCFB50416666660628DC54419A999949F6FB5041B81E853B26DC544114AE47B1F0FB504185EB51B824DC54411F85EB31E8FB5041A4703D0A23DC54415C8FC2B5E3FB50413D0AD7B321DC5441B81E853BDDFB50410AD7A3A020DC54417B14AED7DBFB5041CDCCCC8C20DC5441666666E6D9FB504185EB517820DC54415C8FC2F5D7FB50410000005020DC54418FC2F518D6FB5041A4703D1A20DC544100000020D3FB504148E17AE41FDC544148E17A94CFFB504148E17AA41FDC544152B81EB5C9FB5041A4703D3A1FDC5441A4703D1AC4FB504148E17AD41EDC54418FC2F578BFFB50417B14AE771EDC5441295C8F12BCFB50413D0AD7331EDC5441295C8F92B9FB50411F85EB011EDC5441C3F528ECB5FB50419A9999B91DDC5441C3F5284CB4FB50418FC2F5981DDC5441A4703D4AB1FB50415C8FC2651DDC544152B81E15AFFB5041000000401DDC5441C3F5280CACFB5041C3F5280C1DDC5441EC51B8FEA9FB50418FC2F5E81CDC54413D0AD713A8FB504185EB51C81CDC5441E17A146EA4FB5041D7A3705D1CDC54411F85EBE1A2FB5041000000301CDC5441666666F6A0FB504185EB51D81BDC5441333333A39FFB5041B81E859B1BDC544148E17AA49BFB504152B81EE51ADC5441D7A370AD97FB5041F6285C2F1ADC5441D7A3700D8CFB5041CDCCCC0C18DC5441F6285C1F87FB5041C3F5283C17DC54410AD7A33082FB50419A99994916DC54410000003080FB504148E17AE415DC54417B14AE377DFB5041D7A3703D15DC544185EB51C87AFB504152B81EB514DC544148E17AF477FB50416666661614DC544148E17A0476FB5041000000A013DC544114AE47C170FB504185EB51A812DC54417B14AE576BFB504152B81E1511DC544114AE477167FB5041295C8FF20FDC54418FC2F5485EFB50419A9999A90FDC54419A9999795DFB5041000000900FDC54415C8FC22551FB5041AE47E10A0EDC5441AE47E1FA4CFB5041713D0A870DDC54410AD7A3F044FB5041713D0AC70BDC54418FC2F5F83AFB5041B81E859B09DC54413D0AD7D339FB50415C8FC2C508DC544114AE471138FB5041F6285CCF07DC544148E17A3436FB5041EC51B85E06DC5441713D0A1733FB50410AD7A39004DC5441666666F630FB50413333339303DC54410000001030FB50410AD7A37003DC54418FC2F5082BFB504114AE47B100DC5441A4703D5A1EFB504152B81E35F9DB544152B81ED515FB5041333333A3F3DB5441F6285CFF0DFB50413D0AD713EDDB54410000008018FB50415C8FC2D5F8DB5441B81E859B27FB5041AE47E17A02DC54410000008031FB50413D0AD74308DC54417B14AEF738FB5041F6285CFF0BDC5441AE47E1FA43FB5041A4703D7A10DC54410AD7A36068FB50413D0AD71316DC5441AE47E11AC0FB504152B81EF522DC54410AD7A3C0FFFB50417B14AE572EDC544185EB51A814FC50413D0AD7E331DC5441713D0A873FFC5041CDCCCC7C38DC5441D7A370AD51FC5041B81E85EB3ADC54413333334358FC5041E17A140E3DDC5441F6285C7F5FFC50410000006040DC5441B81E85CB66FC5041B81E855B45DC544114AE47816DFC50413D0AD7834DDC5441EC51B8EE72FC50413333332352DC54418FC2F5C87DFC50413D0AD7535CDC5441C3F528DC88FC5041C3F5284C65DC5441C3F528EC97FC5041D7A3705D72DC5441C3F5281CA2FC50417B14AE5779DC5441E17A148EA4FC5041666666667BDC5441B81E85FBA4FC5041000000307ADC5441E17A147EA6FC5041000000F078DC54413D0AD743A8FC504152B81E5578DC544114AE47D1A9FC5041AE47E16A78DC5441000000B0B6FC504185EB51A87BDC5441E17A141EC4FC50410AD7A3F07EDC544148E17A54DEFC50413333333385DC54411F85EB71EBFC5041C3F5287C88DC5441C3F528ECF6FC5041295C8F828BDC5441C3F5281C08FD5041B81E852B90DC5441CDCCCCBC0CFD504152B81E2591DC54413333339310FD50410AD7A3D091DC5441EC51B89E1EFD5041A4703DEA93DC54416666660623FD5041B81E85BB94DC5441666666762BFD5041D7A3707D91DC5441EC51B8BE22FD5041000000F093DC544148E17A0422FD50411F85EBB193DC54416666669619FD5041A4703D0A92DC54410000001011FD5041C3F528BC90DC5441C3F5284C0FFD504185EB51E88FDC5441C3F5286C05FD50413D0AD7438BDC54410AD7A3C003FD504185EB51B88BDC5441D7A3700DF8FC5041EC51B88E8ADC5441713D0A17F7FC5041F6285CFF8ADC5441295C8F92EBFC50418FC2F53887DC5441295C8F12E8FC5041CDCCCC3C86DC54415C8FC2E5E5FC50410AD7A3A085DC5441F6285C7FE3FC50413D0AD7F384DC5441CDCCCC8CDFFC5041713D0AD783DC5441C3F5285CDCFC504114AE47F182DC544101030000000100000020000000333333F3B4F950411F85EBB128DB5441A4703D2AC0F95041B81E854B31DB54417B14AE17C8F950411F85EBA137DB544114AE47C1C9F95041D7A3700D36DB5441F6285C6FC8F95041E17A145E35DB5441295C8F72C8F95041B81E85AB30DB54415C8FC245C4F9504152B81E8526DB5441D7A3707DC2F950413D0AD78327DB5441D7A3701DC2F95041F6285CAF27DB5441F6285CCFC1F95041EC51B8BE27DB5441AE47E17AC1F95041713D0AB727DB5441666666F6C0F95041D7A3708D27DB5441295C8F72C0F9504148E17A7427DB5441F6285CFFBFF9504148E17A7427DB5441A4703D9ABFF950415C8FC28527DB544100000000BFF95041B81E85AB27DB5441295C8F22BEF95041E17A14FE27DB54410AD7A370BDF95041295C8F2228DB5441CDCCCCBCBCF950418FC2F53828DB5441CDCCCCFCBBF95041295C8F2228DB54411F85EBB1BBF95041F6285C0F28DB544114AE4741BBF950415C8FC2D527DB5441A4703D9ABAF95041EC51B8AE27DB5441CDCCCCECB9F950415C8FC28527DB54418FC2F568B9F95041C3F5287C27DB54419A9999C9B8F950410000008027DB5441B81E851BB8F950416666669627DB5441C3F5285CB7F950418FC2F5B827DB5441AE47E12AB6F950415C8FC20528DB54415C8FC2C5B5F9504185EB512828DB5441F6285C6FB5F950417B14AE5728DB5441333333F3B4F950411F85EBB128DB54410103000000010000009900000052B81E0542FC5041713D0A9742DC54410AD7A31044FC5041CDCCCC8C42DC544185EB51E849FC50410000007042DC54411F85EB314CFC50413333336342DC5441000000A050FC5041F6285C2F42DC544148E17A7458FC5041E17A14EE44DC54415C8FC2A559FC5041AE47E16A45DC544152B81E155BFC50410AD7A30046DC5441A4703DCA5EFC504148E17A8447DC5441F6285C2F62FC50415C8FC2E54DDC5441B81E851B62FC5041EC51B8DE4CDC5441AE47E15A65FC50418FC2F5A851DC544152B81EC567FC5041000000D054DC544114AE47B161FC50417B14AEE75DDC5441D7A370DD62FC50413D0AD7335FDC5441CDCCCCFC69FC5041295C8F1267DC5441A4703DEA70FC50419A9999F96EDC544148E17A0475FC5041EC51B84E6CDC5441F6285CEF75FC5041666666B66BDC54417B14AE9778FC50413D0AD7136ADC54410AD7A3807AFC5041713D0AE768DC5441713D0A9784FC5041C3F5281C6BDC5441C3F5286C87FC5041E17A143E6DDC5441295C8F428AFC5041000000606FDC5441D7A3703D8EFC50418FC2F5A872DC5441295C8F5291FC504148E17A3475DC54419A99999994FC504185EB51E877DC54413D0AD7639FFC504185EB51887EDC5441AE47E1AAA1FC504185EB51687FDC544185EB51F8A2FC50418FC2F5E87FDC54411F85EBC1A3FC5041B81E85AB7DDC5441B81E85ABA0FC5041A4703DAA7CDC5441C3F5287C95FC5041F6285C3F74DC54418FC2F58886FC5041E17A142E67DC5441C3F5283C7CFC504148E17AC45DDC5441F6285CEF71FC50413D0AD79353DC5441333333D36BFC5041295C8F424EDC5441D7A3703D63FC5041B81E859B46DC544185EB51B859FC5041295C8F7240DC5441EC51B81E54FC50415C8FC2053EDC54418FC2F5084BFC50419A9999393CDC544185EB51D814FC504114AE472134DC5441E17A142E02FC504148E17A5431DC5441AE47E1BABFFB50410000007027DC54410AD7A30068FB5041EC51B85E1ADC5441CDCCCCBC4FFB5041333333A316DC54413D0AD7533CFB50417B14AEE712DC54411F85EB0130FB5041E17A147E0DDC5441000000B023FB50416666666606DC5441D7A370DDE0FA5041B81E85ABD8DB5441C3F5288CD4FA5041295C8F82D2DB54419A999999C8FA504152B81E15D0DB5441EC51B8AEB6FA50419A999929CCDB544185EB5148AEFA5041CDCCCC5CC9DB54410AD7A330A7FA50411F85EBE1C4DB5441CDCCCC8C9CFA5041E17A14CEBADB544114AE47A181FA5041F6285C5F9FDB5441295C8FA27EFA5041295C8F129CDB5441AE47E16A7EFA5041EC51B81E9ADB5441EC51B8FE7CFA50417B14AE9798DB5441D7A3703D7CFA5041CDCCCC1C99DB544114AE471178FA5041333333939ADB5441F6285C9F98FA50418FC2F5D8BCDB5441A4703DFA9DFA504148E17A74C2DB5441000000D0A2FA50413D0AD783C7DB5441AE47E1DAA3FA504114AE47A1C8DB544133333323ABFA50418FC2F508CDDB5441CDCCCC4CACFA50415C8FC255D1DB5441EC51B89EACFA5041C3F528BCD2DB54417B14AE77B6FA50418FC2F5B8D2DB5441CDCCCC1CBFFA5041CDCCCC5CD1DB5441CDCCCC5CCAFA5041C3F5288CD4DB54418FC2F5D8D8FA504148E17AA4D9DB54411F85EBA1D4FA5041B81E853BDFDB544148E17A94D9FA5041EC51B88EE8DB544148E17A64D3FA5041EC51B8BEECDB54410AD7A3F0D0FA50413D0AD743F8DB544185EB5198D3FA50415C8FC2B5F9DB5441CDCCCC5CD6FA50413D0AD793FADB544152B81E15D7FA5041D7A370CDFADB5441B81E853BDCFA50418FC2F5E8FBDB5441E17A14AEDCFA5041000000B002DC54419A999909DDFA504114AE47C102DC544152B81E65E0FA504148E17A6408DC544166666636E3FA5041AE47E1DA07DC5441CDCCCCACE6FA5041E17A141E07DC5441C3F5281CE9FA504114AE478100DC544148E17A44ECFA50415C8FC2E501DC5441AE47E19AEDFA5041295C8F6209DC544185EB51B8F4FA504152B81E8519DC544152B81EC5F6FA5041F6285CCF15DC544166666606F8FA50417B14AE8713DC5441AE47E1EAF8FA50415C8FC2A510DC5441D7A370DDF8FA50410AD7A3600FDC5441CDCCCCBCF8FA50418FC2F5C80DDC544152B81EE5F9FA50419A9999D90BDC544114AE4741FAFA5041F6285C0F0CDC54419A9999B9FAFA50415C8FC2550CDC544152B81E25FCFA50413D0AD7230DDC54413333336303FB50411F85EBB109DC5441AE47E19A07FB50419A9999A906DC544152B81E250BFB5041B81E856B04DC5441713D0A1710FB50418FC2F5D800DC5441713D0AE712FB504148E17A34FFDB54417B14AEE718FB5041333333B301DC544185EB51181AFB5041D7A3704D04DC5441713D0AA71AFB50415C8FC28505DC5441333333231BFB50415C8FC29506DC5441C3F5285C25FB50418FC2F5380BDC5441E17A145E26FB5041E17A14FE0ADC54413D0AD7632CFB50410000007011DC54419A9999192DFB5041AE47E1DA11DC544185EB51F835FB50411F85EBF114DC54410AD7A32040FB50416666668618DC544185EB512847FB50419A9999E91ADC544114AE476149FB5041666666B61BDC544185EB51584AFB504152B81EF51BDC54418FC2F5B856FB5041E17A14AE1CDC54411F85EBE157FB5041CDCCCC7C1BDC5441C3F5289C58FB504148E17A141BDC54411F85EB115CFB50410AD7A3401BDC544185EB511864FB5041B81E85EB1BDC5441E17A140E6EFB50413D0AD7231DDC54410AD7A3E07DFB5041C3F528AC1FDC5441EC51B86E90FB50410000006022DC5441B81E85AB9CFB50417B14AE5724DC5441295C8F22AAFB5041EC51B84E26DC5441713D0A17B6FB504148E17A3428DC54413D0AD7F3C8FB5041D7A370DD2ADC54418FC2F5F8DAFB5041000000E02DDC54419A9999C9E2FB50411F85EB212FDC54417B14AE0703FC504148E17A5434DC5441E17A14FE07FC504114AE472135DC54410000009008FC5041713D0A6736DC5441A4703DCA0CFC5041C3F528BC36DC544114AE479110FC50413333335337DC5441F6285C3F14FC5041A4703DBA38DC5441D7A3705D19FC50410AD7A3A03ADC5441D7A370AD1CFC504114AE47C13BDC5441666666561EFC50415C8FC2853CDC544148E17A341EFC5041AE47E14A3FDC5441C3F528DC1DFC5041F6285CDF42DC5441CDCCCC2C1DFC5041CDCCCC6C49DC5441D7A3700D22FC5041B81E85CB48DC5441EC51B8CE23FC50411F85EB6148DC544148E17A2428FC5041D7A3705D47DC544152B81E7528FC50419A99994947DC5441EC51B84E29FC504152B81E1547DC5441000000C02EFC5041295C8FC245DC544185EB518831FC504185EB516844DC5441D7A3702D35FC5041295C8FC242DC5441CDCCCCFC3BFC50413D0AD7A342DC544152B81E0542FC5041713D0A9742DC5441010300000001000000A6000000295C8F0267FA5041A4703DDA79DB5441AE47E10A64FA50411F85EBF176DB54410000006061FA504152B81E5574DB544114AE479162FA5041EC51B81E73DB544148E17A5462FA5041D7A3708D71DB5441CDCCCC0C62FA5041666666D671DB5441A4703D3A60FA5041CDCCCCCC73DB5441B81E854B5FFA5041E17A14DE72DB5441AE47E1DA5EFA5041B81E856B72DB5441666666A65EFA5041CDCCCC9C72DB5441E17A14FE55FA5041333333D369DB5441E17A149E57FA5041CDCCCC2C68DB54415C8FC2D55AFA50417B14AE576BDB54411F85EB315DFA5041000000206CDB5441F6285CEF61FA5041AE47E1BA70DB54415C8FC29561FA5041333333A36FDB544148E17A2461FA5041CDCCCCDC6EDB5441000000D05FFA50411F85EB116EDB5441D7A3702D5FFA504185EB51886DDB544152B81E055FFA5041333333336DDB54413D0AD7A35EFA5041713D0AD76BDB5441AE47E13A5EFA50419A9999696BDB544152B81E955CFA50415C8FC2356ADB544185EB51585CFA50413D0AD7C369DB54417B14AE275CFA50410000009068DB5441AE47E1CA5BFA50411F85EBD167DB5441A4703D7A5AFA50411F85EBB166DB544152B81E255AFA50413D0AD71366DB54411F85EB015AFA5041333333F364DB54410AD7A3A059FA5041A4703D3A64DB54416666660657FA5041EC51B8CE61DB54418FC2F51857FA50419A99993960DB5441D7A370ED56FA5041EC51B8DE5FDB544148E17A0456FA50410AD7A3E05EDB544114AE47D154FA5041C3F5285C5DDB5441A4703DCA53FA5041C3F5289C5BDB54410000002050FA5041A4703DCA5EDB54413333330340FA50413333336351DB5441D7A3701D3CFA5041D7A3707D4DDB54417B14AE673BFA50417B14AEC74CDB5441CDCCCC8C27FA5041D7A370ED38DB5441D7A370FD18FA50419A99990935DB54417B14AEB717FA5041000000C034DB54419A9999A901FA5041295C8F5235DB5441F6285C1FEEF950418FC2F5F83BDB5441CDCCCCDCDBF95041B81E853B3DDB5441A4703D3AD4F9504152B81E953BDB5441EC51B85ED3F95041333333333BDB5441C3F5284CD1F95041AE47E11A3DDB5441C3F5283CD6F95041AE47E1BA3EDB5441A4703D9AD8F95041666666B63FDB544152B81E25E3F950411F85EBE140DB54411F85EBE1E4F95041295C8F6240DB54417B14AE97EAF95041E17A14CE3FDB5441000000D0EEF95041A4703DFA3EDB54417B14AE87F3F95041D7A3707D3DDB5441E17A140EFCF950417B14AE973ADB54410AD7A38003FA50415C8FC2C538DB54417B14AE470BFA50417B14AEC737DB5441713D0A7714FA5041C3F5281C38DB5441C3F528AC1AFA5041A4703D5A39DB5441713D0AA71DFA5041333333433ADB5441F6285C7F1FFA5041713D0A273CDB54418FC2F53828FA5041EC51B8AE40DB5441A4703DBA2AFA5041B81E854B41DB5441AE47E11A30FA50418FC2F5D845DB544185EB517837FA5041666666364DDB54418FC2F51850FA5041295C8FA266DB544114AE47F157FA50410AD7A3E06EDB5441666666D658FA50410AD7A39070DB544148E17AB459FA5041AE47E16A71DB54415C8FC2355AFA504148E17AF471DB544185EB51F860FA50416666662679DB54417B14AE3761FA50419A99995979DB5441E17A143E62FA50417B14AE9779DB544148E17AF466FA5041E17A143E7EDB54413D0AD75373FA5041E17A14FE8ADB544185EB51A876FA5041295C8F828EDB54413D0AD7C377FA50413333339390DB5441AE47E16A78FA50416666664691DB54419A9999B977FA5041713D0AD791DB54417B14AE4776FA50415C8FC2D590DB544152B81E4574FA504152B81E7590DB5441333333B372FA504148E17AF48FDB54411F85EB2165FA504114AE472181DB5441B81E852B60FA5041A4703D4A7BDB5441B81E856B60FA5041CDCCCC4C7ADB54419A99993960FA504114AE47117ADB54416666660659FA50415C8FC26572DB544152B81E9558FA5041B81E85FB71DB5441B81E858B57FA504152B81E7571DB544114AE474156FA5041333333C370DB5441CDCCCC1C4EFA50418FC2F53868DB544148E17AE436FA50410AD7A33050DB5441E17A149E2EFA5041A4703DEA47DB5441D7A370FD28FA5041CDCCCC9C43DB544114AE474127FA5041CDCCCC8C41DB5441666666F61EFA50411F85EB313DDB544114AE47F11DFA50417B14AEC73CDB5441666666D61AFA504152B81E153CDB54411F85EB6114FA5041D7A3706D3ADB54411F85EB710BFA5041E17A142E3ADB5441F6285CFF03FA504114AE47413BDB54411F85EBA1FCF95041333333133DDB544152B81E35F2F950411F85EBA140DB5441A4703D3AEFF95041B81E858B41DB54417B14AED7EAF95041E17A14DE42DB544133333333E7F950413333333343DB544133333323E4F95041E17A14DE42DB54415C8FC2E5E2F95041F6285C1F42DB5441295C8F62D8F95041CDCCCCEC40DB544148E17AD4D4F950411F85EBE140DB5441E17A146ED2F95041295C8F6240DB544185EB51F8CEF95041EC51B83E3FDB544114AE4731CEF95041666666F63FDB5441D7A370DDCCF95041F6285C2F41DB5441CDCCCCACD6F95041AE47E13A47DB54417B14AEB7D6F95041713D0AA744DB544185EB5118D7F9504152B81E9543DB5441713D0A67DCF95041666666B643DB54411F85EBE1E0F950418FC2F51844DB5441295C8FC2E0F950413D0AD78345DB5441EC51B8CEEBF95041713D0A7746DB54415C8FC2D5EFF95041B81E853B45DB5441F6285C8FF3F950418FC2F51844DB54419A9999F901FA50417B14AEA73FDB5441D7A370DD0FFA50417B14AE573EDB5441333333E31BFA504148E17A5440DB544148E17AA41CFA5041E17A141E46DB544148E17A741EFA504114AE47D147DB54410AD7A3301FFA5041713D0AD73FDB54415C8FC20527FA5041D7A370FD43DB5441713D0A472EFA504152B81E254ADB544185EB51B835FA50415C8FC2C551DB5441E17A14BE38FA5041E17A14DE54DB5441CDCCCC3C3CFA50413333337358DB5441C3F528AC3FFA504148E17A145CDB54419A99992943FA5041AE47E1AA5FDB54417B14AE974AFA50415C8FC25567DB5441333333F343FA50413D0AD7E36CDB5441C3F5288C47FA5041AE47E19A70DB5441AE47E18A48FA5041333333A371DB54419A9999994FFA504152B81E356EDB5441000000A053FA5041EC51B82E72DB544152B81E4557FA50410000006075DB54416666669658FA5041713D0A8776DB5441B81E854B59FA504185EB51D875DB54417B14AEF75CFA5041666666A679DB5441B81E859B5CFA5041F6285CFF79DB544185EB513871FA50413D0AD72393DB5441E17A141E74FA5041C3F528EC93DB54417B14AE8774FA5041EC51B88E93DB544152B81EA575FA504148E17AC494DB54413D0AD71374FA5041AE47E16A96DB54410AD7A37074FA50418FC2F5C896DB5441D7A370CD7BFA5041000000A090DB5441D7A370CD80FA5041CDCCCC0C90DB54417B14AE677EFA5041333333738DDB5441CDCCCC4C72FA5041AE47E10A84DB54413333339374FA5041C3F528AC7FDB544152B81E8573FA5041000000A07EDB54410AD7A38072FA5041333333937EDB5441EC51B85E73FA5041000000707FDB5441F6285C2F71FA5041295C8FC283DB54418FC2F5786BFA50419A9999397EDB5441295C8F0267FA5041A4703DDA79DB54410103000000010000001F000000D7A3709DF9FD5041D7A3704D89DC5441F6285C4FF5FD50410AD7A38088DC5441CDCCCCACF4FD50419A9999D98BDC544133333303DBFD50419A9999A98DDC544114AE47E1BFFD50411F85EB2190DC54415C8FC215BFFD504148E17A4490DC544114AE4761BFFD5041295C8F1294DC5441CDCCCC4CC7FD5041E17A14CE93DC5441AE47E10ADAFD5041F6285CDF92DC5441713D0AF7EFFD50418FC2F5C891DC54417B14AED7F8FD50415C8FC22592DC5441EC51B8CE02FE50419A99996994DC5441E17A140E0AFE504114AE472197DC54417B14AE370FFE5041E17A144E99DC544148E17AD415FE5041666666A69EDC54417B14AEE71AFE5041CDCCCC2CA4DC5441E17A149E1EFE504148E17AB4A8DC54410000005020FE5041713D0AF7AADC54419A99992921FE5041AE47E1AAAADC54413333337320FE504114AE4781A9DC54410AD7A3E01FFE504185EB5188A8DC5441295C8F521FFE50411F85EBD1A7DC54411F85EB6120FE50415C8FC2A5A4DC5441D7A370CD20FE504152B81E95A3DC5441A4703D2A1BFE50417B14AE279EDC54417B14AE671AFE5041C3F5281C9DDC544185EB514816FE5041EC51B88E98DC54413D0AD72312FE5041CDCCCC7C95DC544114AE47210AFE5041CDCCCC8C8FDC54417B14AED706FE5041D7A3701D8DDC5441D7A3709DF9FD5041D7A3704D89DC54410103000000010000003900000014AE47B17FFD50419A9999799FDC54410AD7A3D08AFD5041E17A14DE9EDC5441A4703DEA8EFD504185EB51789FDC5441B81E851BA1FD5041E17A146E9FDC5441CDCCCC5CABFD504185EB51C89DDC54417B14AEF7BAFD5041000000409DDC54410AD7A3C0BAFD5041333333B396DC5441295C8F6287FD5041713D0A9799DC5441713D0AA77CFD50417B14AE279ADC544148E17A1464FD504185EB51489BDC54413D0AD7F34DFD50419A9999399CDC5441333333833EFD5041AE47E12A9DDC544185EB515834FD5041333333D39DDC5441EC51B8DE2BFD5041333333A39DDC54413D0AD7B321FD50418FC2F5D89BDC5441D7A3702D0DFD50413D0AD72397DC5441A4703D4ADEFC50410AD7A3B08CDC5441713D0A17A9FC50410AD7A30080DC54418FC2F5C8A6FC5041C3F5287C7EDC5441666666E6A4FC5041333333037EDC544185EB5108A4FC504114AE475180DC544114AE4701A5FC504114AE47B180DC5441C3F5280CAFFC5041E17A148E84DC5441E17A14BEBAFC5041A4703D6A87DC5441B81E852BCFFC5041EC51B8EE8BDC544100000050D1FC50419A9999798CDC5441C3F528ECD1FC50410AD7A3A08CDC54417B14AEA7D8FC5041333333538EDC5441C3F5281CDAFC504114AE47B18EDC5441C3F5286CDDFC504185EB51588FDC5441A4703D7AE1FC50413333333390DC544152B81ED5E3FC5041295C8FB290DC5441713D0AD7E5FC5041EC51B81E91DC54418FC2F578EAFC504185EB511892DC5441A4703DAAE8FC50415C8FC2159ADC5441F6285C6FEAFC5041AE47E19A9ADC54411F85EB21EAFC504114AE47219BDC54413D0AD793EBFC5041B81E854B9BDC544148E17AB4EBFC5041A4703DFA9ADC5441C3F528FCF3FC5041713D0A679DDC544148E17A64FDFC50418FC2F528A0DC5441713D0AC704FD5041333333F3A1DC5441E17A14EE03FD5041CDCCCC4CA3DC54417B14AE070AFD5041EC51B80EA5DC544152B81E550EFD5041B81E853BA5DC54413D0AD76315FD5041F6285C9FA6DC5441CDCCCC0C1EFD504100000040A9DC54419A9999B920FD5041E17A14DEAADC54415C8FC29523FD5041F6285C7FAADC544148E17AD421FD5041E17A14FEA8DC5441D7A3701D2BFD504152B81E45A3DC5441F6285CDF3AFD5041F6285C5FA3DC54415C8FC2C53AFD5041A4703DBAA4DC5441666666B645FD50413D0AD7D3A4DC54416666667652FD50417B14AE77A2DC54415C8FC2A571FD504152B81E45A2DC544114AE47B17FFD50419A9999799FDC54410103000000010000002A0000003D0AD75323FD5041295C8FA295DC54410AD7A31010FD5041333333F392DC544152B81E050CFD504152B81E4592DC54418FC2F50800FD504148E17AF48EDC5441D7A3705DFCFC5041000000108EDC544152B81E55EBFC504185EB519889DC5441D7A3708DD9FC5041CDCCCC3C85DC5441713D0AC7C2FC50417B14AE0780DC5441F6285CEFB7FC50418FC2F5587DDC544133333393ABFC504152B81E157ADC544152B81E95A8FC50410000008079DC5441713D0A57A7FC50413D0AD79379DC5441EC51B82EA6FC50419A9999997ADC544152B81EB5A5FC5041C3F528DC7BDC544152B81ED5A7FC5041AE47E1BA7CDC544152B81E45AAFC50413D0AD7B37CDC544148E17A44E0FC5041D7A3707D89DC5441EC51B8AE0EFD50419A9999C994DC5441C3F5282C22FD5041E17A141E99DC5441EC51B8DE2BFD504185EB51E89ADC544185EB51B834FD50410AD7A3909BDC5441B81E859B3EFD504185EB51189BDC544148E17A544EFD5041713D0AF799DC544148E17A7464FD5041E17A14EE98DC5441713D0AA77CFD5041CDCCCCFC97DC5441295C8F6287FD504148E17A8497DC5441C3F528ACBAFD5041CDCCCC3C94DC54413D0AD793BAFD5041D7A3704D91DC54417B14AE17BAFD5041D7A3702D90DC544148E17A44B9FD5041CDCCCC0C90DC54413D0AD773A3FD5041A4703D4A91DC54417B14AE9799FD50419A9999D991DC5441F6285C2F87FD5041295C8FD292DC5441B81E857B84FD5041666666D692DC5441F6285C6F76FD5041D7A370AD91DC5441C3F528FC65FD5041C3F5286C92DC544114AE47614FFD50417B14AE0795DC5441CDCCCCDC39FD5041EC51B80E94DC544148E17AB434FD50413D0AD7E396DC54416666669627FD5041295C8F8294DC54416666662627FD50410000007094DC54413D0AD75323FD5041295C8FA295DC5441010300000001000000090000007B14AEB762FB5041333333E31FDC54417B14AE3762FB50411F85EBC121DC5441295C8F025FFB50411F85EBA129DC54417B14AE6766FB5041295C8F022BDC54417B14AE576BFB5041AE47E10A22DC5441AE47E16A6DFB5041333333431EDC5441CDCCCC0C65FB5041EC51B83E1DDC544148E17A7463FB5041EC51B80E1DDC54417B14AEB762FB5041333333E31FDC544101030000000100000011000000EC51B83EADFB5041A4703D0A28DC544185EB5178A2FB504185EB518826DC54415C8FC2C598FB50411F85EB1125DC54411F85EB8191FB5041000000F023DC5441CDCCCCEC90FB5041713D0AB729DC5441000000D094FB5041B81E854B2ADC544148E17A049DFB5041A4703D8A2BDC5441295C8F12A0FB50410AD7A3002CDC54413D0AD7A3A9FB5041A4703D5A2DDC544133333333AFFB50418FC2F5282EDC5441E17A144EB2FB5041B81E859B2EDC5441CDCCCCCCB5FB5041C3F5281C2FDC544152B81EE5B9FB5041A4703DCA2EDC5441A4703DAABAFB5041000000702BDC5441295C8FD2BAFB50418FC2F5D829DC54413D0AD7E3B7FB504185EB517829DC5441EC51B83EADFB5041A4703D0A28DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000856EB2F493FC5041730D6D9260DC5441C7F128FC94FC5041F49C3C1A5FDC5441A00C1FE595FC504168897ECD5DDC5441333333F397FC5041E17A14DE5ADC5441AE1E245998FC5041DAADE5065ADC54416B87500899FC5041D4CD1D9558DC5441E17A14EE93FC50418FC2F53855DC54410D08491693FC5041E828149254DC5441C37E135E90FC5041C73EAF7752DC5441E026088D8CFC5041C9B816624FDC544122011F358BFC50419B30294C4EDC5441A69C50D78AFC504191DD7F0B4FDC54413D0AD7638AFC5041713D0AF74FDC5441FB2A33E38CFC50417546291C52DC54418EFB3DEA89FC5041C9D51F1556DC5441BFEE3DE786FC50411E21191B5ADC54411526C20586FC50411E4351485BDC5441A1B41EB584FC50417964856B58DC54415144388A84FC50416D44B91C58DC54416666667684FC504185EB51F857DC5441B81E85FB82FC5041C3F5283C55DC5441713D0AE780FC50419A9999B94FDC5441583C124480FC50410410EB614FDC54418138D70380FC5041355B5C3F4FDC5441D8A0EB417FFC504165820AD74EDC5441636DE14A7DFC5041B4DEF5C84DDC5441CED08F027DFC5041F39930D64DDC5441C3F528DC7AFC5041AE47E13A4EDC5441D7A370DD77FC50415C8FC2B54DDC5441295C8F4275FC50415C8FC2A54CDC5441BBC532636CFC50413F97A39047DC5441FDB92E476CFC50418E8A437E47DC5441666666D669FC504148E17AE445DC544118C4F2D667FC5041BF20EF4A44DC5441DA98702D67FC5041D56633C343DC5441CDE1A23766FC50419129C40C43DC5441B4BC38F464FC504101F4BA1C42DC544102439AEE63FC5041B3FC8E5A41DC54412202292664FC5041BE39B7EE41DC5441781A59D965FC50411188D92244DC544142648B9E68FC50410ED1B0B746DC5441719754B46BFC5041B7F4E28E4ADC5441F6074A596EFC5041FE88F8434DDC544124BB6FB172FC50417FA7874B51DC544192C5666876FC5041C67841E254DC544138C905017BFC5041A7BBA35A59DC5441F15B1FEC80FC5041B97552845EDC5441C840FD2283FC50416AAB0C8160DC544170DBEB2586FC50414497A46B62DC54411575C5CC89FC5041D1389A1065DC544121A522868AFC50411B7EE6BE65DC5441DB76EB518BFC50411BE0847E66DC54418DCB60C78DFC5041E53266CE68DC544150B5A7CC90FC50415553D5786BDC54410187F11195FC5041ABC6C3436FDC5441C6CFE71598FC50410B6394E871DC5441AF8342E698FC50415BC4989772DC54418874393B99FC5041169293D772DC54413C8D27A39BFC5041B5D285A574DC5441EDCE3F2F9CFC504159F1970E75DC5441B8B263759FFC5041F2FC127377DC5441E788FEE9A1FC5041DBEFBB5478DC54416094201EA4FC5041DF8D431478DC54418CC47E72A6FC5041DBEFBB5478DC54414CB86386A8FC5041DF8D431478DC544189EAD059AAFC5041E555CAD377DC5441E2BC6AE4AAFC5041DB34D76B77DC544151BA7A94A7FC50419149E17A76DC54411965F059A4FC5041C598C9FB74DC5441D24D66A6A2FC5041386FEB3174DC5441AE47E17A9DFC5041666666966FDC54413D0AD7B393FC50417B14AE1767DC544148E17A0491FC504148E17AC464DC5441856EB2F493FC5041730D6D9260DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875509 - 421148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000B00000001030000000100000019000000B81E852B1DFE50417B14AE27AADC5441B81E858B19FE5041EC51B8CEA5DC54418FC2F57814FE504148E17AA4A0DC5441B81E850B0DFE5041C3F5284C9BDC5441C3F5282C02FE50419A99993996DC54411F85EB91F8FD504148E17A2494DC5441000000E0EFFD50418FC2F59893DC54411F85EB21DAFD504152B81EF594DC54419A999979C7FD5041F6285CAF95DC54417B14AE87BFFD5041E17A14FE95DC54410AD7A3F0BFFD5041AE47E14A9BDC5441E17A147EC1FD5041E17A145E9CDC54418FC2F598D0FD504152B81E659BDC5441E17A146EDBFD5041295C8F929ADC54415C8FC285E9FD50410AD7A38099DC54415C8FC265F6FD5041E17A14DE99DC544185EB51E8FAFD50417B14AEC79ADC54419A99999907FE50411F85EB319DDC544152B81E2511FE50418FC2F598A3DC54410AD7A37019FE504185EB5108AEDC544185EB51281CFE504166666636B1DC54413D0AD7331DFE5041AE47E13AAEDC5441713D0AF71DFE504148E17A54ACDC5441F6285C1F1EFE5041AE47E1BAABDC5441B81E852B1DFE50417B14AE27AADC544101030000000100000010000000000000E0BAF95041E17A141E31DB54418FC2F5D8B1F950419A9999992ADB54418FC2F578B1F950410AD7A3D02ADB5441C3F5280CB1F950411F85EB412BDB54417B14AEA7B0F9504152B81ED52BDB544114AE47B1AFF950419A9999792DDB5441295C8F62AFF95041EC51B8DE2DDB544166666616AFF950411F85EB212EDB544152B81EB5AEF950419A9999592EDB5441B81E85ABADF9504114AE47C12EDB544185EB5158ABF9504148E17A742FDB544166666656B5F95041AE47E19A36DB5441333333E3BEF9504148E17AB438DB54419A9999C9C3F95041AE47E1BA3BDB544148E17A64C6F950410000004039DB5441000000E0BAF95041E17A141E31DB5441010300000001000000A4000000C3F5285CDCFC504114AE47F182DC5441F6285C9FD3FC50411F85EB4180DC5441CDCCCCECD0FC5041EC51B8DE7FDC544166666646C4FC5041E17A140E7EDC5441713D0A17B7FC5041333333E37ADC544148E17A94A7FC5041AE47E17A76DC5441666666A6A2FC50411F85EB3174DC5441AE47E17A9DFC5041666666966FDC54413D0AD7B393FC50417B14AE1767DC544148E17A0491FC504148E17AC464DC5441C3F528FC94FC5041A4703D1A5FDC5441333333F397FC5041E17A14DE5ADC544185EB510899FC504152B81E9558DC5441E17A14EE93FC50418FC2F53855DC5441E17A145E90FC50417B14AE7752DC544152B81E358BFC5041C3F5284C4EDC54413D0AD7638AFC5041713D0AF74FDC5441333333E38CFC5041C3F5281C52DC5441A4703DEA89FC504152B81E1556DC54415C8FC20586FC504185EB51485BDC544152B81EB584FC5041B81E856B58DC54416666667684FC504185EB51F857DC5441B81E85FB82FC5041C3F5283C55DC5441713D0AE780FC50419A9999B94FDC54413D0AD70380FC5041F6285C3F4FDC54411F85EB417FFC5041713D0AD74EDC5441AE47E14A7DFC50418FC2F5C84DDC5441C3F528DC7AFC5041AE47E13A4EDC5441D7A370DD77FC50415C8FC2B54DDC5441295C8F4275FC50415C8FC2A54CDC5441333333636CFC50410AD7A39047DC5441666666D669FC504148E17AE445DC5441D7A3702D67FC5041333333C343DC5441A4703D6A63FC504185EB51F840DC54419A9999D961FC50410000000040DC5441B81E85DB60FC504185EB51783FDC5441B81E857B59FC504152B81E853BDC54416666664655FC50417B14AE9739DC54416666667651FC5041EC51B85E38DC54411F85EBC148FC50411F85EB7136DC5441F6285CBF44FC50410000007035DC5441D7A3702D3CFC50410AD7A3E031DC5441CDCCCC1C3BFC504148E17A8431DC5441F6285CCF39FC50413333331331DC5441E17A142E33FC504148E17AD42EDC544114AE47812DFC50417B14AEE72CDC544114AE47A12BFC50417B14AED72CDC54411F85EB0128FC50418FC2F5B82CDC5441713D0AC721FC50413D0AD7832CDC544148E17AC420FC5041B81E857B2CDC5441D7A370ED1EFC5041C3F5286C2CDC5441295C8FA21EFC50419A9999692CDC544148E17AF417FC50410AD7A3302CDC54417B14AED709FC5041E17A149E2BDC5441295C8F5208FC50413D0AD7732DDC5441713D0A27FCFB50415C8FC2752BDC54419A9999E9FCFB50416666660628DC54419A999949F6FB5041B81E853B26DC544114AE47B1F0FB504185EB51B824DC54411F85EB31E8FB5041A4703D0A23DC54415C8FC2B5E3FB50413D0AD7B321DC5441B81E853BDDFB50410AD7A3A020DC54417B14AED7DBFB5041CDCCCC8C20DC5441666666E6D9FB504185EB517820DC54415C8FC2F5D7FB50410000005020DC54418FC2F518D6FB5041A4703D1A20DC544100000020D3FB504148E17AE41FDC544148E17A94CFFB504148E17AA41FDC544152B81EB5C9FB5041A4703D3A1FDC5441A4703D1AC4FB504148E17AD41EDC54418FC2F578BFFB50417B14AE771EDC5441295C8F12BCFB50413D0AD7331EDC5441295C8F92B9FB50411F85EB011EDC5441C3F528ECB5FB50419A9999B91DDC5441C3F5284CB4FB50418FC2F5981DDC5441A4703D4AB1FB50415C8FC2651DDC544152B81E15AFFB5041000000401DDC5441C3F5280CACFB5041C3F5280C1DDC5441EC51B8FEA9FB50418FC2F5E81CDC54413D0AD713A8FB504185EB51C81CDC5441E17A146EA4FB5041D7A3705D1CDC54411F85EBE1A2FB5041000000301CDC5441666666F6A0FB504185EB51D81BDC5441333333A39FFB5041B81E859B1BDC544148E17AA49BFB504152B81EE51ADC5441D7A370AD97FB5041F6285C2F1ADC5441D7A3700D8CFB5041CDCCCC0C18DC5441F6285C1F87FB5041C3F5283C17DC54410AD7A33082FB50419A99994916DC54410000003080FB504148E17AE415DC54417B14AE377DFB5041D7A3703D15DC544185EB51C87AFB504152B81EB514DC544148E17AF477FB50416666661614DC544148E17A0476FB5041000000A013DC544114AE47C170FB504185EB51A812DC54417B14AE576BFB504152B81E1511DC544114AE477167FB5041295C8FF20FDC54418FC2F5485EFB50419A9999A90FDC54419A9999795DFB5041000000900FDC54415C8FC22551FB5041AE47E10A0EDC5441AE47E1FA4CFB5041713D0A870DDC54410AD7A3F044FB5041713D0AC70BDC54418FC2F5F83AFB5041B81E859B09DC54413D0AD7D339FB50415C8FC2C508DC544114AE471138FB5041F6285CCF07DC544148E17A3436FB5041EC51B85E06DC5441713D0A1733FB50410AD7A39004DC5441666666F630FB50413333339303DC54410000001030FB50410AD7A37003DC54418FC2F5082BFB504114AE47B100DC5441A4703D5A1EFB504152B81E35F9DB544152B81ED515FB5041333333A3F3DB5441F6285CFF0DFB50413D0AD713EDDB54410000008018FB50415C8FC2D5F8DB5441B81E859B27FB5041AE47E17A02DC54410000008031FB50413D0AD74308DC54417B14AEF738FB5041F6285CFF0BDC5441AE47E1FA43FB5041A4703D7A10DC54410AD7A36068FB50413D0AD71316DC5441AE47E11AC0FB504152B81EF522DC54410AD7A3C0FFFB50417B14AE572EDC544185EB51A814FC50413D0AD7E331DC5441713D0A873FFC5041CDCCCC7C38DC5441D7A370AD51FC5041B81E85EB3ADC54413333334358FC5041E17A140E3DDC5441F6285C7F5FFC50410000006040DC5441B81E85CB66FC5041B81E855B45DC544114AE47816DFC50413D0AD7834DDC5441EC51B8EE72FC50413333332352DC54418FC2F5C87DFC50413D0AD7535CDC5441C3F528DC88FC5041C3F5284C65DC5441C3F528EC97FC5041D7A3705D72DC5441C3F5281CA2FC50417B14AE5779DC5441E17A148EA4FC5041666666667BDC5441B81E85FBA4FC5041000000307ADC5441E17A147EA6FC5041000000F078DC54413D0AD743A8FC504152B81E5578DC544114AE47D1A9FC5041AE47E16A78DC5441000000B0B6FC504185EB51A87BDC5441E17A141EC4FC50410AD7A3F07EDC544148E17A54DEFC50413333333385DC54411F85EB71EBFC5041C3F5287C88DC5441C3F528ECF6FC5041295C8F828BDC5441C3F5281C08FD5041B81E852B90DC5441CDCCCCBC0CFD504152B81E2591DC54413333339310FD50410AD7A3D091DC5441EC51B89E1EFD5041A4703DEA93DC54416666660623FD5041B81E85BB94DC5441666666762BFD5041D7A3707D91DC5441EC51B8BE22FD5041000000F093DC544148E17A0422FD50411F85EBB193DC54416666669619FD5041A4703D0A92DC54410000001011FD5041C3F528BC90DC5441C3F5284C0FFD504185EB51E88FDC5441C3F5286C05FD50413D0AD7438BDC54410AD7A3C003FD504185EB51B88BDC5441D7A3700DF8FC5041EC51B88E8ADC5441713D0A17F7FC5041F6285CFF8ADC5441295C8F92EBFC50418FC2F53887DC5441295C8F12E8FC5041CDCCCC3C86DC54415C8FC2E5E5FC50410AD7A3A085DC5441F6285C7FE3FC50413D0AD7F384DC5441CDCCCC8CDFFC5041713D0AD783DC5441C3F5285CDCFC504114AE47F182DC544101030000000100000020000000333333F3B4F950411F85EBB128DB5441A4703D2AC0F95041B81E854B31DB54417B14AE17C8F950411F85EBA137DB544114AE47C1C9F95041D7A3700D36DB5441F6285C6FC8F95041E17A145E35DB5441295C8F72C8F95041B81E85AB30DB54415C8FC245C4F9504152B81E8526DB5441D7A3707DC2F950413D0AD78327DB5441D7A3701DC2F95041F6285CAF27DB5441F6285CCFC1F95041EC51B8BE27DB5441AE47E17AC1F95041713D0AB727DB5441666666F6C0F95041D7A3708D27DB5441295C8F72C0F9504148E17A7427DB5441F6285CFFBFF9504148E17A7427DB5441A4703D9ABFF950415C8FC28527DB544100000000BFF95041B81E85AB27DB5441295C8F22BEF95041E17A14FE27DB54410AD7A370BDF95041295C8F2228DB5441CDCCCCBCBCF950418FC2F53828DB5441CDCCCCFCBBF95041295C8F2228DB54411F85EBB1BBF95041F6285C0F28DB544114AE4741BBF950415C8FC2D527DB5441A4703D9ABAF95041EC51B8AE27DB5441CDCCCCECB9F950415C8FC28527DB54418FC2F568B9F95041C3F5287C27DB54419A9999C9B8F950410000008027DB5441B81E851BB8F950416666669627DB5441C3F5285CB7F950418FC2F5B827DB5441AE47E12AB6F950415C8FC20528DB54415C8FC2C5B5F9504185EB512828DB5441F6285C6FB5F950417B14AE5728DB5441333333F3B4F950411F85EBB128DB54410103000000010000009900000052B81E0542FC5041713D0A9742DC54410AD7A31044FC5041CDCCCC8C42DC544185EB51E849FC50410000007042DC54411F85EB314CFC50413333336342DC5441000000A050FC5041F6285C2F42DC544148E17A7458FC5041E17A14EE44DC54415C8FC2A559FC5041AE47E16A45DC544152B81E155BFC50410AD7A30046DC5441A4703DCA5EFC504148E17A8447DC5441F6285C2F62FC50415C8FC2E54DDC5441B81E851B62FC5041EC51B8DE4CDC5441AE47E15A65FC50418FC2F5A851DC544152B81EC567FC5041000000D054DC544114AE47B161FC50417B14AEE75DDC5441D7A370DD62FC50413D0AD7335FDC5441CDCCCCFC69FC5041295C8F1267DC5441A4703DEA70FC50419A9999F96EDC544148E17A0475FC5041EC51B84E6CDC5441F6285CEF75FC5041666666B66BDC54417B14AE9778FC50413D0AD7136ADC54410AD7A3807AFC5041713D0AE768DC5441713D0A9784FC5041C3F5281C6BDC5441C3F5286C87FC5041E17A143E6DDC5441295C8F428AFC5041000000606FDC5441D7A3703D8EFC50418FC2F5A872DC5441295C8F5291FC504148E17A3475DC54419A99999994FC504185EB51E877DC54413D0AD7639FFC504185EB51887EDC5441AE47E1AAA1FC504185EB51687FDC544185EB51F8A2FC50418FC2F5E87FDC54411F85EBC1A3FC5041B81E85AB7DDC5441B81E85ABA0FC5041A4703DAA7CDC5441C3F5287C95FC5041F6285C3F74DC54418FC2F58886FC5041E17A142E67DC5441C3F5283C7CFC504148E17AC45DDC5441F6285CEF71FC50413D0AD79353DC5441333333D36BFC5041295C8F424EDC5441D7A3703D63FC5041B81E859B46DC544185EB51B859FC5041295C8F7240DC5441EC51B81E54FC50415C8FC2053EDC54418FC2F5084BFC50419A9999393CDC544185EB51D814FC504114AE472134DC5441E17A142E02FC504148E17A5431DC5441AE47E1BABFFB50410000007027DC54410AD7A30068FB5041EC51B85E1ADC5441CDCCCCBC4FFB5041333333A316DC54413D0AD7533CFB50417B14AEE712DC54411F85EB0130FB5041E17A147E0DDC5441000000B023FB50416666666606DC5441D7A370DDE0FA5041B81E85ABD8DB5441C3F5288CD4FA5041295C8F82D2DB54419A999999C8FA504152B81E15D0DB5441EC51B8AEB6FA50419A999929CCDB544185EB5148AEFA5041CDCCCC5CC9DB54410AD7A330A7FA50411F85EBE1C4DB5441CDCCCC8C9CFA5041E17A14CEBADB544114AE47A181FA5041F6285C5F9FDB5441295C8FA27EFA5041295C8F129CDB5441AE47E16A7EFA5041EC51B81E9ADB5441EC51B8FE7CFA50417B14AE9798DB5441D7A3703D7CFA5041CDCCCC1C99DB544114AE471178FA5041333333939ADB5441F6285C9F98FA50418FC2F5D8BCDB5441A4703DFA9DFA504148E17A74C2DB5441000000D0A2FA50413D0AD783C7DB5441AE47E1DAA3FA504114AE47A1C8DB544133333323ABFA50418FC2F508CDDB5441CDCCCC4CACFA50415C8FC255D1DB5441EC51B89EACFA5041C3F528BCD2DB54417B14AE77B6FA50418FC2F5B8D2DB5441CDCCCC1CBFFA5041CDCCCC5CD1DB5441CDCCCC5CCAFA5041C3F5288CD4DB54418FC2F5D8D8FA504148E17AA4D9DB54411F85EBA1D4FA5041B81E853BDFDB544148E17A94D9FA5041EC51B88EE8DB544148E17A64D3FA5041EC51B8BEECDB54410AD7A3F0D0FA50413D0AD743F8DB544185EB5198D3FA50415C8FC2B5F9DB5441CDCCCC5CD6FA50413D0AD793FADB544152B81E15D7FA5041D7A370CDFADB5441B81E853BDCFA50418FC2F5E8FBDB5441E17A14AEDCFA5041000000B002DC54419A999909DDFA504114AE47C102DC544152B81E65E0FA504148E17A6408DC544166666636E3FA5041AE47E1DA07DC5441CDCCCCACE6FA5041E17A141E07DC5441C3F5281CE9FA504114AE478100DC544148E17A44ECFA50415C8FC2E501DC5441AE47E19AEDFA5041295C8F6209DC544185EB51B8F4FA504152B81E8519DC544152B81EC5F6FA5041F6285CCF15DC544166666606F8FA50417B14AE8713DC5441AE47E1EAF8FA50415C8FC2A510DC5441D7A370DDF8FA50410AD7A3600FDC5441CDCCCCBCF8FA50418FC2F5C80DDC544152B81EE5F9FA50419A9999D90BDC544114AE4741FAFA5041F6285C0F0CDC54419A9999B9FAFA50415C8FC2550CDC544152B81E25FCFA50413D0AD7230DDC54413333336303FB50411F85EBB109DC5441AE47E19A07FB50419A9999A906DC544152B81E250BFB5041B81E856B04DC5441713D0A1710FB50418FC2F5D800DC5441713D0AE712FB504148E17A34FFDB54417B14AEE718FB5041333333B301DC544185EB51181AFB5041D7A3704D04DC5441713D0AA71AFB50415C8FC28505DC5441333333231BFB50415C8FC29506DC5441C3F5285C25FB50418FC2F5380BDC5441E17A145E26FB5041E17A14FE0ADC54413D0AD7632CFB50410000007011DC54419A9999192DFB5041AE47E1DA11DC544185EB51F835FB50411F85EBF114DC54410AD7A32040FB50416666668618DC544185EB512847FB50419A9999E91ADC544114AE476149FB5041666666B61BDC544185EB51584AFB504152B81EF51BDC54418FC2F5B856FB5041E17A14AE1CDC54411F85EBE157FB5041CDCCCC7C1BDC5441C3F5289C58FB504148E17A141BDC54411F85EB115CFB50410AD7A3401BDC544185EB511864FB5041B81E85EB1BDC5441E17A140E6EFB50413D0AD7231DDC54410AD7A3E07DFB5041C3F528AC1FDC5441EC51B86E90FB50410000006022DC5441B81E85AB9CFB50417B14AE5724DC5441295C8F22AAFB5041EC51B84E26DC5441713D0A17B6FB504148E17A3428DC54413D0AD7F3C8FB5041D7A370DD2ADC54418FC2F5F8DAFB5041000000E02DDC54419A9999C9E2FB50411F85EB212FDC54417B14AE0703FC504148E17A5434DC5441E17A14FE07FC504114AE472135DC54410000009008FC5041713D0A6736DC5441A4703DCA0CFC5041C3F528BC36DC544114AE479110FC50413333335337DC5441F6285C3F14FC5041A4703DBA38DC5441D7A3705D19FC50410AD7A3A03ADC5441D7A370AD1CFC504114AE47C13BDC5441666666561EFC50415C8FC2853CDC544148E17A341EFC5041AE47E14A3FDC5441C3F528DC1DFC5041F6285CDF42DC5441CDCCCC2C1DFC5041CDCCCC6C49DC5441D7A3700D22FC5041B81E85CB48DC5441EC51B8CE23FC50411F85EB6148DC544148E17A2428FC5041D7A3705D47DC544152B81E7528FC50419A99994947DC5441EC51B84E29FC504152B81E1547DC5441000000C02EFC5041295C8FC245DC544185EB518831FC504185EB516844DC5441D7A3702D35FC5041295C8FC242DC5441CDCCCCFC3BFC50413D0AD7A342DC544152B81E0542FC5041713D0A9742DC5441010300000001000000A6000000295C8F0267FA5041A4703DDA79DB5441AE47E10A64FA50411F85EBF176DB54410000006061FA504152B81E5574DB544114AE479162FA5041EC51B81E73DB544148E17A5462FA5041D7A3708D71DB5441CDCCCC0C62FA5041666666D671DB5441A4703D3A60FA5041CDCCCCCC73DB5441B81E854B5FFA5041E17A14DE72DB5441AE47E1DA5EFA5041B81E856B72DB5441666666A65EFA5041CDCCCC9C72DB5441E17A14FE55FA5041333333D369DB5441E17A149E57FA5041CDCCCC2C68DB54415C8FC2D55AFA50417B14AE576BDB54411F85EB315DFA5041000000206CDB5441F6285CEF61FA5041AE47E1BA70DB54415C8FC29561FA5041333333A36FDB544148E17A2461FA5041CDCCCCDC6EDB5441000000D05FFA50411F85EB116EDB5441D7A3702D5FFA504185EB51886DDB544152B81E055FFA5041333333336DDB54413D0AD7A35EFA5041713D0AD76BDB5441AE47E13A5EFA50419A9999696BDB544152B81E955CFA50415C8FC2356ADB544185EB51585CFA50413D0AD7C369DB54417B14AE275CFA50410000009068DB5441AE47E1CA5BFA50411F85EBD167DB5441A4703D7A5AFA50411F85EBB166DB544152B81E255AFA50413D0AD71366DB54411F85EB015AFA5041333333F364DB54410AD7A3A059FA5041A4703D3A64DB54416666660657FA5041EC51B8CE61DB54418FC2F51857FA50419A99993960DB5441D7A370ED56FA5041EC51B8DE5FDB544148E17A0456FA50410AD7A3E05EDB544114AE47D154FA5041C3F5285C5DDB5441A4703DCA53FA5041C3F5289C5BDB54410000002050FA5041A4703DCA5EDB54413333330340FA50413333336351DB5441D7A3701D3CFA5041D7A3707D4DDB54417B14AE673BFA50417B14AEC74CDB5441CDCCCC8C27FA5041D7A370ED38DB5441D7A370FD18FA50419A99990935DB54417B14AEB717FA5041000000C034DB54419A9999A901FA5041295C8F5235DB5441F6285C1FEEF950418FC2F5F83BDB5441CDCCCCDCDBF95041B81E853B3DDB5441A4703D3AD4F9504152B81E953BDB5441EC51B85ED3F95041333333333BDB5441C3F5284CD1F95041AE47E11A3DDB5441C3F5283CD6F95041AE47E1BA3EDB5441A4703D9AD8F95041666666B63FDB544152B81E25E3F950411F85EBE140DB54411F85EBE1E4F95041295C8F6240DB54417B14AE97EAF95041E17A14CE3FDB5441000000D0EEF95041A4703DFA3EDB54417B14AE87F3F95041D7A3707D3DDB5441E17A140EFCF950417B14AE973ADB54410AD7A38003FA50415C8FC2C538DB54417B14AE470BFA50417B14AEC737DB5441713D0A7714FA5041C3F5281C38DB5441C3F528AC1AFA5041A4703D5A39DB5441713D0AA71DFA5041333333433ADB5441F6285C7F1FFA5041713D0A273CDB54418FC2F53828FA5041EC51B8AE40DB5441A4703DBA2AFA5041B81E854B41DB5441AE47E11A30FA50418FC2F5D845DB544185EB517837FA5041666666364DDB54418FC2F51850FA5041295C8FA266DB544114AE47F157FA50410AD7A3E06EDB5441666666D658FA50410AD7A39070DB544148E17AB459FA5041AE47E16A71DB54415C8FC2355AFA504148E17AF471DB544185EB51F860FA50416666662679DB54417B14AE3761FA50419A99995979DB5441E17A143E62FA50417B14AE9779DB544148E17AF466FA5041E17A143E7EDB54413D0AD75373FA5041E17A14FE8ADB544185EB51A876FA5041295C8F828EDB54413D0AD7C377FA50413333339390DB5441AE47E16A78FA50416666664691DB54419A9999B977FA5041713D0AD791DB54417B14AE4776FA50415C8FC2D590DB544152B81E4574FA504152B81E7590DB5441333333B372FA504148E17AF48FDB54411F85EB2165FA504114AE472181DB5441B81E852B60FA5041A4703D4A7BDB5441B81E856B60FA5041CDCCCC4C7ADB54419A99993960FA504114AE47117ADB54416666660659FA50415C8FC26572DB544152B81E9558FA5041B81E85FB71DB5441B81E858B57FA504152B81E7571DB544114AE474156FA5041333333C370DB5441CDCCCC1C4EFA50418FC2F53868DB544148E17AE436FA50410AD7A33050DB5441E17A149E2EFA5041A4703DEA47DB5441D7A370FD28FA5041CDCCCC9C43DB544114AE474127FA5041CDCCCC8C41DB5441666666F61EFA50411F85EB313DDB544114AE47F11DFA50417B14AEC73CDB5441666666D61AFA504152B81E153CDB54411F85EB6114FA5041D7A3706D3ADB54411F85EB710BFA5041E17A142E3ADB5441F6285CFF03FA504114AE47413BDB54411F85EBA1FCF95041333333133DDB544152B81E35F2F950411F85EBA140DB5441A4703D3AEFF95041B81E858B41DB54417B14AED7EAF95041E17A14DE42DB544133333333E7F950413333333343DB544133333323E4F95041E17A14DE42DB54415C8FC2E5E2F95041F6285C1F42DB5441295C8F62D8F95041CDCCCCEC40DB544148E17AD4D4F950411F85EBE140DB5441E17A146ED2F95041295C8F6240DB544185EB51F8CEF95041EC51B83E3FDB544114AE4731CEF95041666666F63FDB5441D7A370DDCCF95041F6285C2F41DB5441CDCCCCACD6F95041AE47E13A47DB54417B14AEB7D6F95041713D0AA744DB544185EB5118D7F9504152B81E9543DB5441713D0A67DCF95041666666B643DB54411F85EBE1E0F950418FC2F51844DB5441295C8FC2E0F950413D0AD78345DB5441EC51B8CEEBF95041713D0A7746DB54415C8FC2D5EFF95041B81E853B45DB5441F6285C8FF3F950418FC2F51844DB54419A9999F901FA50417B14AEA73FDB5441D7A370DD0FFA50417B14AE573EDB5441333333E31BFA504148E17A5440DB544148E17AA41CFA5041E17A141E46DB544148E17A741EFA504114AE47D147DB54410AD7A3301FFA5041713D0AD73FDB54415C8FC20527FA5041D7A370FD43DB5441713D0A472EFA504152B81E254ADB544185EB51B835FA50415C8FC2C551DB5441E17A14BE38FA5041E17A14DE54DB5441CDCCCC3C3CFA50413333337358DB5441C3F528AC3FFA504148E17A145CDB54419A99992943FA5041AE47E1AA5FDB54417B14AE974AFA50415C8FC25567DB5441333333F343FA50413D0AD7E36CDB5441C3F5288C47FA5041AE47E19A70DB5441AE47E18A48FA5041333333A371DB54419A9999994FFA504152B81E356EDB5441000000A053FA5041EC51B82E72DB544152B81E4557FA50410000006075DB54416666669658FA5041713D0A8776DB5441B81E854B59FA504185EB51D875DB54417B14AEF75CFA5041666666A679DB5441B81E859B5CFA5041F6285CFF79DB544185EB513871FA50413D0AD72393DB5441E17A141E74FA5041C3F528EC93DB54417B14AE8774FA5041EC51B88E93DB544152B81EA575FA504148E17AC494DB54413D0AD71374FA5041AE47E16A96DB54410AD7A37074FA50418FC2F5C896DB5441D7A370CD7BFA5041000000A090DB5441D7A370CD80FA5041CDCCCC0C90DB54417B14AE677EFA5041333333738DDB5441CDCCCC4C72FA5041AE47E10A84DB54413333339374FA5041C3F528AC7FDB544152B81E8573FA5041000000A07EDB54410AD7A38072FA5041333333937EDB5441EC51B85E73FA5041000000707FDB5441F6285C2F71FA5041295C8FC283DB54418FC2F5786BFA50419A9999397EDB5441295C8F0267FA5041A4703DDA79DB54410103000000010000001F000000D7A3709DF9FD5041D7A3704D89DC5441F6285C4FF5FD50410AD7A38088DC5441CDCCCCACF4FD50419A9999D98BDC544133333303DBFD50419A9999A98DDC544114AE47E1BFFD50411F85EB2190DC54415C8FC215BFFD504148E17A4490DC544114AE4761BFFD5041295C8F1294DC5441CDCCCC4CC7FD5041E17A14CE93DC5441AE47E10ADAFD5041F6285CDF92DC5441713D0AF7EFFD50418FC2F5C891DC54417B14AED7F8FD50415C8FC22592DC5441EC51B8CE02FE50419A99996994DC5441E17A140E0AFE504114AE472197DC54417B14AE370FFE5041E17A144E99DC544148E17AD415FE5041666666A69EDC54417B14AEE71AFE5041CDCCCC2CA4DC5441E17A149E1EFE504148E17AB4A8DC54410000005020FE5041713D0AF7AADC54419A99992921FE5041AE47E1AAAADC54413333337320FE504114AE4781A9DC54410AD7A3E01FFE504185EB5188A8DC5441295C8F521FFE50411F85EBD1A7DC54411F85EB6120FE50415C8FC2A5A4DC5441D7A370CD20FE504152B81E95A3DC5441A4703D2A1BFE50417B14AE279EDC54417B14AE671AFE5041C3F5281C9DDC544185EB514816FE5041EC51B88E98DC54413D0AD72312FE5041CDCCCC7C95DC544114AE47210AFE5041CDCCCC8C8FDC54417B14AED706FE5041D7A3701D8DDC5441D7A3709DF9FD5041D7A3704D89DC54410103000000010000003900000014AE47B17FFD50419A9999799FDC54410AD7A3D08AFD5041E17A14DE9EDC5441A4703DEA8EFD504185EB51789FDC5441B81E851BA1FD5041E17A146E9FDC5441CDCCCC5CABFD504185EB51C89DDC54417B14AEF7BAFD5041000000409DDC54410AD7A3C0BAFD5041333333B396DC5441295C8F6287FD5041713D0A9799DC5441713D0AA77CFD50417B14AE279ADC544148E17A1464FD504185EB51489BDC54413D0AD7F34DFD50419A9999399CDC5441333333833EFD5041AE47E12A9DDC544185EB515834FD5041333333D39DDC5441EC51B8DE2BFD5041333333A39DDC54413D0AD7B321FD50418FC2F5D89BDC5441D7A3702D0DFD50413D0AD72397DC5441A4703D4ADEFC50410AD7A3B08CDC5441713D0A17A9FC50410AD7A30080DC54418FC2F5C8A6FC5041C3F5287C7EDC5441666666E6A4FC5041333333037EDC544185EB5108A4FC504114AE475180DC544114AE4701A5FC504114AE47B180DC5441C3F5280CAFFC5041E17A148E84DC5441E17A14BEBAFC5041A4703D6A87DC5441B81E852BCFFC5041EC51B8EE8BDC544100000050D1FC50419A9999798CDC5441C3F528ECD1FC50410AD7A3A08CDC54417B14AEA7D8FC5041333333538EDC5441C3F5281CDAFC504114AE47B18EDC5441C3F5286CDDFC504185EB51588FDC5441A4703D7AE1FC50413333333390DC544152B81ED5E3FC5041295C8FB290DC5441713D0AD7E5FC5041EC51B81E91DC54418FC2F578EAFC504185EB511892DC5441A4703DAAE8FC50415C8FC2159ADC5441F6285C6FEAFC5041AE47E19A9ADC54411F85EB21EAFC504114AE47219BDC54413D0AD793EBFC5041B81E854B9BDC544148E17AB4EBFC5041A4703DFA9ADC5441C3F528FCF3FC5041713D0A679DDC544148E17A64FDFC50418FC2F528A0DC5441713D0AC704FD5041333333F3A1DC5441E17A14EE03FD5041CDCCCC4CA3DC54417B14AE070AFD5041EC51B80EA5DC544152B81E550EFD5041B81E853BA5DC54413D0AD76315FD5041F6285C9FA6DC5441CDCCCC0C1EFD504100000040A9DC54419A9999B920FD5041E17A14DEAADC54415C8FC29523FD5041F6285C7FAADC544148E17AD421FD5041E17A14FEA8DC5441D7A3701D2BFD504152B81E45A3DC5441F6285CDF3AFD5041F6285C5FA3DC54415C8FC2C53AFD5041A4703DBAA4DC5441666666B645FD50413D0AD7D3A4DC54416666667652FD50417B14AE77A2DC54415C8FC2A571FD504152B81E45A2DC544114AE47B17FFD50419A9999799FDC54410103000000010000002A0000003D0AD75323FD5041295C8FA295DC54410AD7A31010FD5041333333F392DC544152B81E050CFD504152B81E4592DC54418FC2F50800FD504148E17AF48EDC5441D7A3705DFCFC5041000000108EDC544152B81E55EBFC504185EB519889DC5441D7A3708DD9FC5041CDCCCC3C85DC5441713D0AC7C2FC50417B14AE0780DC5441F6285CEFB7FC50418FC2F5587DDC544133333393ABFC504152B81E157ADC544152B81E95A8FC50410000008079DC5441713D0A57A7FC50413D0AD79379DC5441EC51B82EA6FC50419A9999997ADC544152B81EB5A5FC5041C3F528DC7BDC544152B81ED5A7FC5041AE47E1BA7CDC544152B81E45AAFC50413D0AD7B37CDC544148E17A44E0FC5041D7A3707D89DC5441EC51B8AE0EFD50419A9999C994DC5441C3F5282C22FD5041E17A141E99DC5441EC51B8DE2BFD504185EB51E89ADC544185EB51B834FD50410AD7A3909BDC5441B81E859B3EFD504185EB51189BDC544148E17A544EFD5041713D0AF799DC544148E17A7464FD5041E17A14EE98DC5441713D0AA77CFD5041CDCCCCFC97DC5441295C8F6287FD504148E17A8497DC5441C3F528ACBAFD5041CDCCCC3C94DC54413D0AD793BAFD5041D7A3704D91DC54417B14AE17BAFD5041D7A3702D90DC544148E17A44B9FD5041CDCCCC0C90DC54413D0AD773A3FD5041A4703D4A91DC54417B14AE9799FD50419A9999D991DC5441F6285C2F87FD5041295C8FD292DC5441B81E857B84FD5041666666D692DC5441F6285C6F76FD5041D7A370AD91DC5441C3F528FC65FD5041C3F5286C92DC544114AE47614FFD50417B14AE0795DC5441CDCCCCDC39FD5041EC51B80E94DC544148E17AB434FD50413D0AD7E396DC54416666669627FD5041295C8F8294DC54416666662627FD50410000007094DC54413D0AD75323FD5041295C8FA295DC5441010300000001000000090000007B14AEB762FB5041333333E31FDC54417B14AE3762FB50411F85EBC121DC5441295C8F025FFB50411F85EBA129DC54417B14AE6766FB5041295C8F022BDC54417B14AE576BFB5041AE47E10A22DC5441AE47E16A6DFB5041333333431EDC5441CDCCCC0C65FB5041EC51B83E1DDC544148E17A7463FB5041EC51B80E1DDC54417B14AEB762FB5041333333E31FDC544101030000000100000011000000EC51B83EADFB5041A4703D0A28DC544185EB5178A2FB504185EB518826DC54415C8FC2C598FB50411F85EB1125DC54411F85EB8191FB5041000000F023DC5441CDCCCCEC90FB5041713D0AB729DC5441000000D094FB5041B81E854B2ADC544148E17A049DFB5041A4703D8A2BDC5441295C8F12A0FB50410AD7A3002CDC54413D0AD7A3A9FB5041A4703D5A2DDC544133333333AFFB50418FC2F5282EDC5441E17A144EB2FB5041B81E859B2EDC5441CDCCCCCCB5FB5041C3F5281C2FDC544152B81EE5B9FB5041A4703DCA2EDC5441A4703DAABAFB5041000000702BDC5441295C8FD2BAFB50418FC2F5D829DC54413D0AD7E3B7FB504185EB517829DC5441EC51B83EADFB5041A4703D0A28DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000004A00000048E17A0491FC504148E17AC464DC5441D59FB7F493FC504165A3659260DC5441C7F128FC94FC5041F49C3C1A5FDC5441A00C1FE595FC504168897ECD5DDC5441333333F397FC5041E17A14DE5ADC5441AE1E245998FC5041DAADE5065ADC54416B87500899FC5041D4CD1D9558DC5441E17A14EE93FC50418FC2F53855DC54411108491693FC5041EC28149254DC5441C37E135E90FC5041C73EAF7752DC5441E026088D8CFC5041C9B816624FDC544122011F358BFC50419B30294C4EDC5441A69C50D78AFC504191DD7F0B4FDC54413D0AD7638AFC5041713D0AF74FDC5441FB2A33E38CFC50417546291C52DC54418EFB3DEA89FC5041C9D51F1556DC5441C3EE3DE786FC50411921191B5ADC54411526C20586FC50411E4351485BDC5441A1B41EB584FC50417964856B58DC54416CB03B8A84FC50419B8DBF1C58DC54416666667684FC504185EB51F857DC5441B81E85FB82FC5041C3F5283C55DC5441713D0AE780FC50419A9999B94FDC5441583C124480FC50410410EB614FDC54418138D70380FC5041355B5C3F4FDC5441D8A0EB417FFC504165820AD74EDC5441636DE14A7DFC5041B4DEF5C84DDC54418E6594027DFC504168C32FD64DDC5441C3F528DC7AFC5041AE47E13A4EDC5441D7A370DD77FC50415C8FC2B54DDC5441295C8F4275FC50415C8FC2A54CDC5441BBC532636CFC50413F97A39047DC5441FDB92E476CFC50418E8A437E47DC5441666666D669FC504148E17AE445DC544118C4F2D667FC5041BF20EF4A44DC5441DA98702D67FC5041D56633C343DC5441CDE1A23766FC50419029C40C43DC5441B622936D64FC5041E8DDCBB841DC544102439AEE63FC5041B3FC8E5A41DC54412202292664FC5041BE39B7EE41DC5441781A59D965FC50411188D92244DC544142648B9E68FC50410ED1B0B746DC5441719754B46BFC5041B7F4E28E4ADC5441F6074A596EFC5041FE88F8434DDC544124BB6FB172FC50417FA7874B51DC544192C5666876FC5041C67841E254DC544138C905017BFC5041A7BBA35A59DC5441F15B1FEC80FC5041B97552845EDC5441C840FD2283FC50416AAB0C8160DC544170DBEB2586FC50414497A46B62DC54411575C5CC89FC5041D1389A1065DC544126A522868AFC5041197EE6BE65DC5441DC76EB518BFC504119E0847E66DC544192CB60C78DFC5041E53266CE68DC544151B5A7CC90FC50415953D5786BDC54410187F11195FC5041A9C6C3436FDC5441C8CFE71598FC50410E6394E871DC5441B38342E698FC50415DC4989772DC54418B74393B99FC5041199293D772DC5441388D27A39BFC5041B3D285A574DC5441EDCE3F2F9CFC504159F1970E75DC5441B8B263759FFC5041F2FC127377DC5441E788FEE9A1FC5041DBEFBB5478DC54416094201EA4FC5041DF8D431478DC54418CC47E72A6FC5041DBEFBB5478DC54414CB86386A8FC5041DF8D431478DC544189EAD059AAFC5041E555CAD377DC5441E2BC6AE4AAFC5041DB34D76B77DC544151BA7A94A7FC50419149E17A76DC54411865F059A4FC5041C598C9FB74DC5441D34D66A6A2FC5041396FEB3174DC5441AE47E17A9DFC5041666666966FDC54413D0AD7B393FC50417B14AE1767DC544148E17A0491FC504148E17AC464DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257579 - 261422
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000030000000103000000010000001F000000D7A3701DEA025141C3F5287CCA4A55410AD7A300ED02514148E17AE4CC4A5541C3F5283CF0025141295C8FE2CE4A554114AE4791F402514100000080D14A554166666686F7025141E17A147ED34A5541333333D3FA025141AE47E11AD64A55411F85EBD1FC0251419A9999C9D84A5541CDCCCC8CFD025141B81E856BDA4A554100000010FE025141C3F5288CD24A5541713D0AE7FD025141A4703D2AD14A55419A999939FA02514152B81EE5CD4A5541E17A14AEF6025141F6285C0FCB4A5541E17A143EF302514133333303C84A5541CDCCCC8CF102514133333353C64A55419A9999D9F2025141CDCCCC4CBE4A55419A999939F3025141713D0AC7BB4A55413D0AD793F40251418FC2F5A8B24A5541EC51B8AEF4025141C3F5289CB04A55411F85EB61EA02514148E17AB4AA4A554148E17A44E102514133333323A54A55418FC2F518E102514133333313A94A5541AE47E1FAE0025141D7A3708DAE4A554114AE47E1DF02514148E17AE4BA4A554133333373DF0251418FC2F518BE4A55413D0AD773E1025141D7A3703DC04A5541EC51B8FEE3025141C3F5288CC14A5541D7A3700DE80251410AD7A370C24A5541A4703DFAE9025141295C8F32C34A55418FC2F5F8EB0251418FC2F588C54A5541295C8FE2E6025141C3F5280CC74A5541D7A3701DEA025141C3F5287CCA4A55410103000000010000009F000000E17A14AEB6025141CDCCCCECE5495541A4703D7AB602514114AE4751E549554148E17A64B60251417B14AE07E54955418FC2F5A8B4025141EC51B82EDF495541E17A14DEB2025141666666E6D7495541AE47E19AB1025141AE47E1DAD0495541295C8F72B0025141E17A149ECB49554133333303B00251415C8FC2A5C949554148E17A84AC02514133333363BD495541D7A370FDAA0251415C8FC205B8495541B81E850BA9025141295C8F92B14955417B14AE67A70251410AD7A3D0AB4955413D0AD753A702514148E17AB4AA495541CDCCCCECA6025141B81E85CBA949554114AE47E1A4025141666666B6A24955413D0AD733A302514152B81E259E49554185EB51A8A20251417B14AEA79C49554152B81E65A10251410AD7A3F09949554114AE47F19F025141F6285CCF96495541F6285C1F9F025141AE47E10A954955419A9999D99C025141D7A3700D91495541B81E85CB990251411F85EB918C495541E17A14AE95025141AE47E10A87495541713D0A97910251418FC2F588824955419A9999298D0251417B14AE077E49554185EB51E88B0251410AD7A3C07C4955413D0AD7D388025141000000E0794955411F85EB718502514185EB51C8764955411F85EB51800251417B14AEB7724955417B14AE477C025141B81E85FB6F4955416666666678025141D7A3705D6D495541EC51B81E6C0251411F85EB6167495541713D0AE76B025141B81E859B674955410AD7A3406C025141000000406B495541E17A14FE6C025141666666066E49554148E17AF46D025141666666D671495541EC51B87E700251410AD7A3C073495541713D0AE77302514166666646764955418FC2F5D8770251413D0AD713794955415C8FC2957B025141C3F528FC7B4955419A9999C97E0251419A9999997E4955413D0AD7A38202514148E17A248249554185EB51E8840251418FC2F57884495541333333D3870251413D0AD703884955415C8FC2E58A025141295C8FF28B495541713D0A878D025141C3F5285C8F495541333333A38F025141295C8FC2924955410AD7A330920251410000003097495541CDCCCCEC94025141295C8FC29C49554148E17AD495025141E17A14AE9E4955410AD7A3E0960251418FC2F518A14955418FC2F5E898025141F6285C6FA64955418FC2F5689B025141713D0AA7AE4955413D0AD7C39C02514152B81E05B5495541E17A146E9E025141C3F528ECBB4955410AD7A3F09F0251417B14AE07C2495541B81E85EBA10251417B14AE37C9495541B81E85DBA2025141CDCCCCBCCD4955417B14AE57A4025141CDCCCC6CD749554100000020A502514133333313DC4955418FC2F5A8A6025141E17A146EE2495541A4703D1AA702514133333383E4495541D7A3704DA802514114AE47F1E949554166666636A90251415C8FC225ED49554100000020AA025141F6285CFFEF4955419A9999A9AB02514166666676F3495541D7A370ADAC025141295C8F42F549554114AE4791AF02514114AE47D1F94955413D0AD763B0025141B81E850BFB49554114AE4761B20251415C8FC205FE49554114AE4781B502514133333363034A55415C8FC285B6025141F6285C2F054A5541333333B3B9025141333333D30A4A5541D7A370EDB9025141F6285C4F0B4A5541F6285CCFBB025141E17A144E0F4A5541F6285C9FBE025141C3F528EC164A554185EB51D8BF0251419A9999591B4A55410AD7A3A0C00251418FC2F5C81D4A55410AD7A310C402514100000070284A5541E17A14BEC4025141D7A370BD294A5541E17A149EC6025141295C8F522E4A55411F85EBF1C7025141C3F5281C314A554152B81E15CA025141EC51B88E334A55411F85EB01CC0251415C8FC255374A5541B81E85BBCF02514152B81E953E4A554185EB5108D5025141CDCCCC8C494A55418FC2F5E8D70251410AD7A390514A5541333333F3DA0251417B14AE075C4A55417B14AEC7DC025141EC51B85E644A5541EC51B8FEDC0251418FC2F5A8654A554166666626DE02514185EB51686D4A55418FC2F548DE02514185EB51F8734A5541F6285CBFDD0251417B14AE877B4A5541F6285CBFDD025141EC51B8EE814A55411F85EBC1DD02514152B81EF5824A55413D0AD7A3DE025141D7A3704D884A55415C8FC285DF025141A4703DFA8A4A5541713D0AF7E0025141A4703DBA924A5541295C8F42E102514152B81E35A44A5541B81E852BE902514152B81E35A94A5541CDCCCCCCF4025141C3F528CCAF4A55411F85EBE1F40251413D0AD773AE4A5541F6285CEFF4025141E17A144EAB4A5541EC51B85EF40251419A9999899C4A5541C3F528ECF1025141E17A140E904A55413D0AD793F102514114AE47B18E4A55415C8FC225F00251418FC2F508894A55410AD7A3B0EF025141AE47E10A874A55410AD7A3B0EF02514100000060854A5541EC51B83EEE0251417B14AE37844A5541B81E85FBEB025141AE47E1DA834A5541E17A14BEEA025141A4703D6A834A55415C8FC285EA025141A4703D1A824A5541E17A149EEB025141CDCCCCDC804A55413D0AD7F3ED025141A4703D5A804A554133333333F0025141A4703DBA7F4A554114AE4741F00251415C8FC2E57D4A554185EB5158F00251410AD7A3907C4A5541D7A3708DF0025141CDCCCCAC744A5541E17A147EF00251413D0AD7836F4A554148E17A04F0025141295C8F12654A55417B14AEE7EF025141EC51B89E624A55419A9999A9EF02514152B81EC55F4A55415C8FC265EE025141E17A148E594A55419A999989ED025141CDCCCC7C564A55413D0AD763EA025141E17A149E4C4A5541333333B3E7025141A4703D5A454A55417B14AE47E5025141AE47E12A3F4A5541B81E85BBE40251415C8FC2753E4A55413D0AD703E30251411F85EB71394A55413D0AD7B3E1025141F6285CCF354A554166666636E00251419A999969324A5541CDCCCC8CDC025141333333C32A4A55418FC2F538D702514152B81E152D4A554148E17A54D4025141B81E85AB2E4A554185EB5198D0025141EC51B84E2B4A55413D0AD783CD025141B81E854B274A5541333333E3CD025141CDCCCC9C254A5541F6285C6FD1025141E17A14AE244A5541C3F5283CD4025141EC51B84E244A5541295C8F02D602514100000030234A5541AE47E18AD602514114AE4721214A55411F85EB31D402514148E17A241D4A55418FC2F5C8D002514114AE47D1164A5541CDCCCC0CCE0251415C8FC2A5124A55417B14AEA7CD025141B81E850B124A5541B81E85ABCC02514114AE4761104A5541F6285C8FCB0251415C8FC2150D4A5541E17A142ECB0251415C8FC2050C4A5541A4703DFACA025141666666F60A4A5541713D0AB7CA025141713D0A570A4A554166666626C8025141F6285C3F044A5541F6285C5FC5025141AE47E1BAFE495541295C8FD2C20251413D0AD7A3FA49554114AE4701BD0251417B14AEE7F149554133333353BB02514114AE4761EF4955419A9999B9B8025141AE47E13AEA49554148E17A04B80251417B14AE07E9495541E17A14AEB6025141CDCCCCECE54955410103000000010000002C000000A4703D7AFD025141713D0AD7DB4A5541713D0A17FD02514133333353DA4A554166666656FC025141EC51B8FED84A5541AE47E17AFA02514152B81E85D64A554100000040F7025141666666D6D34A5541C3F5285CF4025141AE47E1FAD14A55418FC2F518F0025141E17A145ECF4A5541C3F528CCEC025141E17A144ECD4A5541713D0AD7E9025141295C8FC2CA4A55418FC2F578E6025141295C8F52C74A5541A4703D6AE2025141D7A3705DC44A554185EB5168DF025141AE47E13AC24A554148E17A04E0025141713D0AB7C54A554166666696E2025141D7A3708DCB4A5541CDCCCC6CE302514152B81E05D24A5541D7A3703DE40251419A999919D84A55415C8FC2B5E402514114AE4791DF4A5541000000D0E40251417B14AE57E54A55410AD7A3B0E40251411F85EB71ED4A55418FC2F528E40251417B14AE47F44A55413D0AD723E4025141F6285CCFF64A5541295C8F62E6025141E17A14FEF64A554185EB51A8E60251411F85EB21F94A5541D7A3701DE802514185EB51E8FA4A5541CDCCCCCCE9025141A4703D3AFC4A5541E17A14CEEC02514185EB5118FE4A5541C3F5282CEF025141EC51B85EFF4A55411F85EB21F2025141EC51B8DEFF4A5541F6285C0FFC0251417B14AEB70E4B5541C3F5284C0103514152B81EF5164B55419A9999A9020351415C8FC2F5174B5541000000F003035141EC51B85E184B554148E17A4405035141295C8FF2174B55415C8FC2C5030351418FC2F558124B55413D0AD763FF0251418FC2F5D8074B5541EC51B8CEFC0251417B14AE27034B55411F85EB41FB02514152B81EA5FF4A55419A9999D9FA025141F6285CCFFD4A554152B81EA5FA02514133333313FC4A554152B81EB5FA0251411F85EB41FA4A55419A9999C9FB025141295C8F42F34A5541EC51B8DEFB025141A4703DDAF24A5541B81E85BBFC025141E17A148EEA4A5541A4703D7AFD025141713D0AD7DB4A5541
+</a>
+
+<b>
+010600000001000000010300000001000000AC00000048E17AF46D025141666666D671495541EC51B87E700251410AD7A3C073495541713D0AE77302514166666646764955418FC2F5D8770251413D0AD713794955415C8FC2957B025141C3F528FC7B4955419A9999C97E0251419A9999997E4955413D0AD7A38202514148E17A248249554185EB51E8840251418FC2F57884495541333333D3870251413D0AD703884955415C8FC2E58A025141295C8FF28B495541713D0A878D025141C3F5285C8F495541333333A38F025141295C8FC2924955410AD7A330920251410000003097495541CDCCCCEC94025141295C8FC29C49554148E17AD495025141E17A14AE9E4955410AD7A3E0960251418FC2F518A14955418FC2F5E898025141F6285C6FA64955418FC2F5689B025141713D0AA7AE4955413D0AD7C39C02514152B81E05B5495541E17A146E9E025141C3F528ECBB4955410AD7A3F09F0251417B14AE07C2495541B81E85EBA10251417B14AE37C9495541B81E85DBA2025141CDCCCCBCCD4955417B14AE57A4025141CDCCCC6CD749554100000020A502514133333313DC4955418FC2F5A8A6025141E17A146EE2495541A4703D1AA702514133333383E4495541D7A3704DA802514114AE47F1E949554166666636A90251415C8FC225ED49554100000020AA025141F6285CFFEF4955419A9999A9AB02514166666676F3495541D7A370ADAC025141295C8F42F549554114AE4791AF02514114AE47D1F94955413D0AD763B0025141B81E850BFB49554114AE4761B20251415C8FC205FE49554114AE4781B502514133333363034A55415C8FC285B6025141F6285C2F054A5541333333B3B9025141333333D30A4A5541D7A370EDB9025141F6285C4F0B4A5541F6285CCFBB025141E17A144E0F4A5541F6285C9FBE025141C3F528EC164A554185EB51D8BF0251419A9999591B4A55410AD7A3A0C00251418FC2F5C81D4A55410AD7A310C402514100000070284A5541E17A14BEC4025141D7A370BD294A5541E17A149EC6025141295C8F522E4A55411F85EBF1C7025141C3F5281C314A554152B81E15CA025141EC51B88E334A5541944FCD8ECC025141857B8241374A55417B44542FD0025141B004EF9C3E4A5541629EF834D002514157C8FFA53E4A5541D7189153D002514180E728D73E4A5541316C608DD002514185430C343F4A55415AFBF3B3D00251414D2E08723F4A55418693B0BBD0025141009A16843F4A554194B8D6B5D1025141175DE6CB414A554185EB5108D5025141CDCCCC8C494A55418FC2F5E8D70251410AD7A390514A5541333333F3DA0251417B14AE075C4A55417B14AEC7DC025141EC51B85E644A5541EC51B8FEDC0251418FC2F5A8654A554166666626DE02514185EB51686D4A55418FC2F548DE02514185EB51F8734A55419A34780BDE025141A01B58967B4A5541526A6731DE025141B7CC6FDD814A55415C8FC285DF025141A4703DFA8A4A5541713D0AF7E0025141A4703DBA924A55419B506D02E1025141E7FC14A3944A55416D08C626E102514197CA5933984A554117239C49E102514193E7B69D9B4A5541539CFC51E1025141B96FF76F9C4A554182383052E102514191CE06759C4A55419EBF7F55E1025141E60F1FC89C4A55416DF49A92E102514105B0B767A44A5541B81E852BE902514152B81E35A94A5541CDCCCCCCF4025141C3F528CCAF4A55411F85EBE1F40251413D0AD773AE4A5541F6285CEFF4025141E17A144EAB4A5541EC51B85EF40251419A9999899C4A5541C3F528ECF1025141E17A140E904A55413D0AD793F102514114AE47B18E4A55415C8FC225F00251418FC2F508894A55410AD7A3B0EF025141AE47E10A874A55410AD7A3B0EF02514100000060854A554133333333F0025141A4703DBA7F4A554114AE4741F00251415C8FC2E57D4A554185EB5158F00251410AD7A3907C4A5541D7A3708DF0025141CDCCCCAC744A5541E17A147EF00251413D0AD7836F4A554148E17A04F0025141295C8F12654A55417B14AEE7EF025141EC51B89E624A55419A9999A9EF02514152B81EC55F4A55415C8FC265EE025141E17A148E594A55419A999989ED025141CDCCCC7C564A55413D0AD763EA025141E17A149E4C4A5541333333B3E7025141A4703D5A454A55417B14AE47E5025141AE47E12A3F4A5541B81E85BBE40251415C8FC2753E4A55413D0AD703E30251411F85EB71394A55413D0AD7B3E1025141F6285CCF354A554166666636E00251419A999969324A5541CDCCCC8CDC025141333333C32A4A5541F88CA37ADC02514180D61BCB2A4A5541599BF16BD80251410E0AF1F82C4A5541331B20F5D5025141733CF0772E4A554112FB021CD4025141EC172C2C2F4A5541875F5E2CD2025141126AA5962D4A5541247974F1D00251419320F79E2B4A5541C5A1A93CCF025141EB53CE89294A5541A792058DCE02514140F6FCA4284A5541EC099EC7CD025141854DD1A3274A554196FE6F8CCD02514156E5AF24274A5541333333E3CD025141CDCCCC9C254A5541A5F16E5BCF0251416320D723254A5541A87F7B05D402514150606EE8234A55410DB27A84D50251416E09AB1D234A554111122F22D6025141FA8D2307234A5541C01A5088D60251413D64EB1C214A55411F85EB31D402514148E17A241D4A55418FC2F5C8D002514114AE47D1164A5541CDCCCC0CCE0251415C8FC2A5124A55417B14AEA7CD025141B81E850B124A5541B81E85ABCC02514114AE4761104A5541F6285C8FCB0251415C8FC2150D4A5541E17A142ECB0251415C8FC2050C4A5541A4703DFACA025141666666F60A4A5541713D0AB7CA025141713D0A570A4A554166666626C8025141F6285C3F044A55412DBE57F8C40251412DF38E3CFE495541C8CEDBA0C2025141973278BEFA495541B3EB3DB6BC025141EA8BCECDF1495541FDBAF801BB02514125880239EF49554148E17A04B80251417B14AE07E9495541E17A14AEB6025141CDCCCCECE5495541A4703D7AB602514114AE4751E549554148E17A64B60251417B14AE07E54955418FC2F5A8B4025141EC51B82EDF495541E17A14DEB2025141666666E6D7495541AE47E19AB1025141AE47E1DAD0495541295C8F72B0025141E17A149ECB495541727B7645AC025141F45B288FBE495541D7A370FDAA0251415C8FC205B8495541B81E850BA9025141295C8F92B14955417B14AE67A70251410AD7A3D0AB495541D172C5C6A6025141AC5C2092A949554114AE47E1A4025141666666B6A24955413D0AD733A302514152B81E259E49554185EB51A8A20251417B14AEA79C49554152B81E65A10251410AD7A3F09949554114AE47F19F025141F6285CCF96495541F6285C1F9F025141AE47E10A954955419A9999D99C025141D7A3700D91495541B81E85CB990251411F85EB918C495541E17A14AE95025141AE47E10A87495541713D0A97910251418FC2F588824955419A9999298D0251417B14AE077E49554185EB51E88B0251410AD7A3C07C4955413D0AD7D388025141000000E0794955411F85EB718502514185EB51C8764955411F85EB51800251417B14AEB7724955417B14AE477C025141B81E85FB6F4955415B6EBC3879025141E22F79F36D495541B1FB0C3478025141D6692A546D49554183A92056760251418B7DF65D6C4955410E38240E7302514134CB73C86A495541D0F3E1096F025141A7F20BDC6849554167A7175C6E02514168CC268568495541EC51B81E6C0251411F85EB61674955418A87E0246C0251413034111F6A4955410AD7A3406C025141000000406B4955417308A6066D0251410C2657286E49554148E17AF46D025141666666D671495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 1730669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+01060000000100000001030000001600000083010000C4863E0874965041F5963CB13F2F554170074D3D7496504145D7C3CB3F2F554139C6007B7596504174173630412F55411B734D38769650416C45783F342F5541AB8A99F37796504167EE6172242F554103F2E15B92965041585E0BAC2C2F55418C6AEC6688965041448A5E161D2F55419CFA422D809650416175A0BD082F5541FA30F5C37A965041BD9C676AEF2E5541FC7820A776965041A45EE409D82E554137380FE471965041F32AC0D5CA2E55417452E901619650410BD2ABAD9E2E5541E20532615B965041F7FDFE178F2E5541E218F25E53965041E65EBD67832E55418E1B80C140965041CE203A076C2E5541E8FA1B8B2B9650413BFA0262562E5541A7C26B99149650416762DBD1412E55414200385006965041C02EB79D342E5541C39AED42089650418105F295312E5541BFDA6EFE3B965041990A35FD602E554172303E1A5596504170C40775812E55418617ABAD5C965041F5C893328B2E5541D7F271636396504127976D599A2E5541956EC17A6C9650414AD5F0B9B12E554146B5A5AC7196504121B5432DC22E55416C61D4EB749650416D263418C12E5541AB8A99F377965041409CB0C0C92E554149EA10927596504193BFA259CC2E554109AE8B8C7A965041F881D6A2DA2E55415CD17D257D965041CAE4924DEB2E55416906E90A81965041AD0C11A4F72E55416906E90A81965041109AD907022F55413EC490968596504121391BB80D2F55410E05A2598A965041F1666C7D1A2F5541CEC81C548F96504186E88E03242F55418F8C974E94965041F5BD824A2A2F554193F66D199C965041289F1C6F312F5541E4D134CFA2965041EDDF2D32362F554174D6C08CAC965041BD203FF53A2F5541C8F9B225AF965041956525CC232F55416EF49660D49650413964DE1A2D2F5541E011B68AD696504167DBA1742C2F55415451809CE49650418D7410B6372F5541D5D87591EE9650419ABC3B99332F5541C33934E1E2965041267D7187252F5541C313B4E5F2965041C3EFA8231B2F554144AE69D8F4965041F1792C7B122F5541C6481FCBF69650410574590C122F55416A47D81900975041B6BA3D3E172F55413CAA94C410975041078344F6252F55415DD92C3B1497504186FB4E011C2F55411B683C5015975041564F20C2182F55415AA4C15510975041958BA5C7132F55411B683C5015975041C1CDFD3B0F2F55413C97D4C618975041C3026921132F55415B8759D5339750412A2A30CEF92E55417EC5DC354B975041B832919FE72E55413C54EC4A4C9750416757CAE9E02E5541593F2EF2379750414406878BD12E5541E4FF63E029975041322E05E2DD2E5541D34D62322697504112FF6C6BDA2E55410A99D221359750410FDDC183CE2E5541987BB3F732975041810DA1ABC82E5541E734CFC52D975041CB4926B1C32E5541D7B738FD2D9750410B86ABB6BE2E5541F6B1658E2D975041CC5CE6AEBB2E55410CCE3D0739975041BCF20FE4B32E55413C7A6C463C975041488DC5D6B52E5541EDC05078419750410977C0CCAA2E55419A9D5EDF3E975041E8472856A72E55419CE589C23A9750415830DC9AA52E5541C827E23636975041D460BBC29F2E5541796EC6683B97504185BA5FF29C2E55418D4273FE4A97504174085E44992E5541929989CB5A975041F36DA851972E554175D4C71F5F97504199A1CC85A42E5541D3F7B9B8619750412EEAAE12C62E55411556EAA56897504160DE0835C52E5541295017376897504170F23686082F554175D4C71F5F9750411087190A0A2F5541D338105B5E9750414E7CD6660A2F55417E3A3B8768975041FF6B8E7E082F554139E5DB8B6C9750417F784A33082F554130A2AB836D975041BB1686F6012F5541E6178CCF6D97504167AEBA5AD12E55417A90392E6C975041AC8A32CBC12E5541E0D65D9F649750417F69D369A32E5541B14066BB5F975041DF9DE1A08D2E5541B40843A85D9750416422672F912E554160AD3BEA589750415C7DCA08892E55419F66739453975041613C9CD87F2E55410E1A111952975041F0A233FD6F2E5541C58FF16452975041FC6A10EA6D2E55416111AAE0579750416BBA3F786D2E55414A78E5E95497504143ABF6505D2E554133DF20F35197504143ABF6505D2E5541D3BB3C484F97504189EBDCB74C2E5541509B25B04A9750411F5B7FF9432E55411DAACAF24D975041B26FBE61432E55416734EAA64D9750415F14B7A33E2E5541077574F249975041CD63E6313E2E55415F2BDF8946975041B280E8ED2A2E5541F4D60A8DFB9650419B94DF8C102E554172497AE1F09650419D5CBC790E2E55419069ED94E89650417897AC9F0E2E5541505D7180D69650418F307196112E5541DA268BED9E9650412886DE2E1A2E554106312FA663965041B577DDD0232E5541C0E3846148965041A6E723F7272E55410AE33C982E96504173925A432C2E55411461E0371C965041D3B53EEE2E2E554157757BBB0E965041E07D1BDB2C2E55415EFC29780396504181BEA526292E5541B3EAB7220296504196F3FB262D2E5541BDBB9F2C07965041D1ED6101312E554180F95C6505965041E88626F8332E554182C1395203965041F2570E02392E5541815DCB5B04965041A5728B74412E5541414025BB0A9650414CF443F0462E5541AF24B9CF1C9650417DAD8D6C542E5541102C60EB139650417DAD8D6C542E554169A516EC1B965041A77C82D55B2E554114072D1A0D9650418C163BFD6F2E5541059E7F89F1955041CD4EEDAF5F2E55418C77917FEC9550417A1C27E0682E5541783317C0D7955041A77C82D55B2E5541CBAF53EBA89550418F3B7E87432E5541EA122552989550411B5C80AE4F2E5541E13ACE949B9550411781B37F562E5541B3DA729FA89550412FA0FA6D642E5541E7CB2468BA955041686C79656F2E5541783317C0D795504107878FA9822E5541705BC002DB955041B354C9D98B2E5541F25905CADC955041524D22BE942E554154895528D7955041A0C6D8BE9C2E5541182C70A4E0955041083D194EA82E554141B1FE6ADA9550416A8E260CAD2E55411FBA60BFCF95504149978860A22E55418C0B6E7DD4955041516FDF1D9F2E55419DBB1BF8CD95504116F03C3A9E2E5541119B19D1C19550410218E67CA12E5541B82163D0B99550411AEDC6C8A12E5541FE569F11AD955041CB95CD27A42E55417380038DAE955041FE1A5CEE9D2E55411A074D8CA69550417C1C17279C2E55410B9E9FFB8A955041C54EDDF6922E554133B70AC06C95504171B0F324842E55411BE780BF6C9550417C9C0811842E554192B801B06C955041B15EF919842E554145F219716B955041CCDF90D7862E5541D1D8CB8F719550413C6F3E4A892E55412F35A186799550417BB6F7B08D2E554182F82712819550419ACB1341912E55410BA41B26879550410462EBC4932E554136F33943859550410DDEB8E9962E5541EE4C34FE7A9550416F99766A902E554166A140EA74955041F069507B8D2E5541275A87837095504186D378F78A2E5541FEC89DCE699550413C6F3E4A892E5541147F6D8067955041713A2A8C8A2E55415567DA086695504150845ADA8C2E5541747CF69869955041DAB380C98F2E554172DB42776F955041A46462AC912E55418657109C72955041AEE02FD1942E5541DA37186E7795504122770755972E554123FB9EF97E955041EC0A68F19B2E554101284E0184955041C1BB49D49D2E554160A1A43E89955041D654983F9E2E5541E9D0CA2D8C955041B59EC88DA02E55419DCBDC5E90955041A964C600A62E5541727CBE4192955041FD44CED2AA2E5541C91AFB7B8E955041A7C312DFAB2E5541406F076888955041FD44CED2AA2E55410BA41B26879550419CA69198AE2E5541406F0768889550418F6C8F0BB42E55411520E94A8A955041B8FD78C0BA2E5541B381AC108E955041CBF5130AC12E5541B3642BCA90955041356F6A47C62E5541FF869ADF89955041896CF35FC82E5541A4CB780A7C95504127B135DFCE2E5541E4B3E5927A9550417D32F1D2CD2E5541102085F675955041530054FCCC2E5541478C245A71955041F2E5499DCD2E55416742F40B6F9550413D4A844ACF2E5541A82A61946D9550417074BC6AD62E55419EAE936F6A955041301082BDD42E55417F9977DF66955041850D0BD6D62E554135353D32659550418F89D8FAD92E5541F6ED83CB609550410320B07EDC2E55414A51FA6B61955041F8EDD6CCDE2E554110F1858463955041BF8D62E5E02E554110F1858463955041776D8CD4E32E55413191984262955041158D549AE72E55419271D07C5E95504103ADA305E82E55410D126AE059955041BB8CCDF4EA2E55419271D07C5E955041618C464FEE2E5541EC7157225B955041F9CB5D80F22E5541AF32C79653955041656B62F3F72E55416A1386764C955041BB6A54A8FE2E554172E75D5A4C955041BF120470FE2E5541DBC37D544C955041BAC896E2FE2E5541D6760DF95A955041F85AE9D4092F55414D9F5D575F955041D0560C50062F554156700F7B7E9550413F873F3BEC2E5541BC9243B386955041074EAEF6E72E5541D2176567989550410D05E8A4E42E554150DD3F5FAB955041D4CB5660E02E5541D677D910B4955041E4AA0737DD2E5541EBC7C761B4955041BB0A2B95DC2E55414A2606B1AE9550411A91E00CD72E5541D1D168339F955041B58C31E0C72E554130581EAB99955041C6436B8EC42E5541C90D734A9195504143FC894BC62E5541BFE5FB2191955041BB1BF465C42E55416087BDD29695504153B3C3F9C22E55410247048F95955041AD823FC3C02E5541B956399C94955041C861F099BD2E55410C6F7BB795955041D840A170BA2E5541EDF6153E95955041BF7F75A5B62E554151EE083093955041E015602AB02E5541FDD5C61492955041D17CAB87AC2E55419ADED32294955041BC2CBD36AC2E5541F71E8D6695955041916E5B89B22E55417FFF224C97955041FD47C96FB72E55419E4F119D9795504136815AB4BB2E55416087BDD296955041E7D95513BE2E55416AAF34FB969550418D0ADA49C02E554130581EAB999550413F63D5A8C22E5541C6A9F10A9F955041FAE34730C52E55419C20C3C0B6955041916A4EF3DB2E55412075603EC6955041FC2537CEE72E5541E970025DD39550419710BFD0F02E5541153C2045DE955041612AE6FAF62E55414C572C7EE9955041D82BCB09FC2E5541188FD8B3E8955041211C96FCFC2E5541A7442D53E09550411283E159F92E5541D2028F00DA9550412D629230F62E55418108D2F0D1955041D5D8129BF12E55410596AF67C99550412A3751EAEB2E5541B49BF257C19550417F6D1811E62E55414D79BE1FB995504196DB8B6DDF2E5541C698283AB79550414DEBC07ADE2E55411F68A403B5955041571338A3DE2E554163E7317CB295504196DB8B6DDF2E554152FBC46AA4955041D93C94DAE32E55411797F2DF95955041B3356CDBE62E55411AFB731F889550416FB6DE62E92E55415E7A019885955041B8A6A955EA2E5541F611D12B84955041200FDAC1EB2E5541ECE9590384955041C73F5EF8ED2E55414E9B50C1889550419266415D052F5541CB536F7E8A95504182AF07AF082F5541299428C28B955041D5C749CA092F55416D13B63A89955041A1276D28092F5541F05A977D879550419266415D052F55419D4255628695504194AC3D91FE2E5541F611D12B84955041A6A97373F42E55418EA9A0BF82955041C73F5EF8ED2E5541A3F98E1083955041F66EFD1FEB2E55416AC0FDCB7E955041BC17E7CFED2E5541B9AFFF5C72955041AA0413D3F82E554109D6DFB57495504167A797D4F92E55412F30AF7F76955041E80BCA81FB2E55418A568FD87895504100B9B166FC2E5541EE9B98DB7A95504113D8DA10FC2E554100D73EFB7C955041C2B1FAB7F92E5541B8EB04C27C955041B0765498F72E55413687D2147B955041E626E8B1F52E55417A00CB887C95504147A38C5AF42E55414450376F7E9550412149BD90F22E55416438C573819550410F0E1771F02E5541A7B1BDE7829550417D532074F22E5541082E62908195504139F6A475F32E5541823B71A87E9550415F50743FF52E5541FB64FD357E955041728B1A5FF72E55417CC92FE37F955041F8618ED1F72E5541D7EF0F3C82955041546CF1B4F72E55417CE5AC5882955041E0D02362F92E55411312E51A7F95504129BC5D9BF92E5541D098ECA67D9550416135560FFB2E55418D1FF4327C955041CF7A5F12FD2E5541244C2CF578955041566D50FAFF2E5541BB7864B77595504133DCE58A012F554127D98BEA719550419BAFADC8042F55418EC771586F955041C67BBE57052F5541F4B557C66C9550410F67F890052F55414313D3C46B95504170E39C39042F5541FA27998B6B9550413EC06815FF2E5541BEE908B867955041C2BD57AD022F5541B19650495D955041FE67266C0A2F55410D910D596595504114909D940A2F554151FFD1007B9550416237A235082F55416F313B46829550416237A235082F554119C18A8A90955041807566EE0A2F5541F1323DEBAA955041C5B7C3BC0F2F55411622F339CC955041B57D7CE2152F55411BECB6D9D79550417FCDE8C8172F55411DD198A9DD95504141E2AE8F172F55414FF4CCCDE29550411088DFC5152F5541D0747CF0E69550417776C533132F554152D9AE9DE89550413FFDCCBF112F55418DFB837CE5955041D29CA58C152F55417E37808BE2955041496037C0162F55414C09589AE395504148F94D55162F5541A873A00BE6955041EB01315B152F554171007D40E69550414AEA0866152F5541C2E3F44CE69550416928054B152F55414063AA54EB9550411D2913960E2F55413954DFB9E39550418B919F47082F55415A230C7EEA955041038B2AB9FB2E55410703366DED955041E3EA17FBFC2E55418C629C09F2955041BB6A54A8FE2E55411CC202A6F6955041038B2AB9FB2E554161E143C6FD955041850B75B1F62E554168C1F45AFD95504100AC0E15F22E5541CD7C2224029650415AF27632E62E554115A3D3E102965041B30C50C0E12E5541BEEC684A069650416015B7F8DB2E5541772A2683049650413DB41515DB2E5541F24132FE01965041A93B68B6DC2E55416D593E79FF955041FC966F74E12E5541EA3827E1FA955041C941A6C0E52E5541F60004CEF89550418DE3D1EFE22E5541810C3819F1955041617925EFDA2E5541BF6101CDEC955041946A80ACD72E5541FD87B28AED95504157A83DE5D52E55412BBA3B78F39550414F9F32C8CE2E5541E8D4B8EAFB9550412DD117D1C72E5541041C25250E965041C76C05F6BB2E5541544BE1FF1596504105C2CEA9B72E55415DB85A131C9650419A9EEAFEB42E55410602F07B1F96504174756C2EB62E5541B277D0C71F9650416649214BB92E5541CB078AA11B965041EB3115D0BB2E55417910F1D915965041262C7BAABF2E5541D28E385E10965041179CC1D0C32E554173CFC2A90C965041479627ABC72E55415BD28FBC0A965041396ADCC7CA2E5541041C25250E96504114A5CCEDCA2E5541873C3CBD12965041FE0B08F7C72E554188A0AAB3119650415DCB7DABCB2E5541643F09D01096504106151314CF2E5541E927FD5413965041C952D04CCD2E5541F294766819965041C0E55639C72E55411EFF226921965041B778DD25C12E554118DCE2A22B965041701A0955BE2E55410AB097BF2E9650417E465438BB2E5541DA8619EF2F965041BD9B1DECB62E5541D3FF6A323B96504163FFE7FDA82E55411EEEF8DC39965041263DA536A72E554198A1966138965041F5AFB86FA92E554139468FA333965041C15AEFBBAD2E55419DC4D6272E9650419D95DFE1AD2E5541D0B531E52A96504186FC1AEBAA2E5541231139A32F96504127A1132DA62E5541141D11D33496504166F6DCE0A12E5541D3FF6A323B96504195F042BBA52E554195AAA17E3F965041D14E178CA82E55410B03DC2946965041C0F680C5AE2E554190EBCFAE489650412E46B053AE2E5541962CFEDE519650416EFFE7FDA82E5541916D2C0F5B9650417D8FA1D7A42E554118BA8E8A5C9650417C2B33E1A52E5541C16792E95E965041A95DBCCEAB2E55415F7CD1515E9650415DDCA737B32E55417779043F60965041A766C7EBB22E5541092AD5B06096504174756C2EB62E55418E12C93563965041D2D073ECBA2E5541228B769461965041E805CAECBE2E55418441E12B5E9650414BF18A84BF2E5541916D2C0F5B965041DC3DEDFFC02E554185A54F225D965041DAD97E09C22E5541145F2BB164965041B6146F2FC22E5541A4471F36679650413BFD62B4C42E55417F820F5C679650412DD117D1C72E55415ABDFF816796504180C8B098CD2E554198E3B03F6896504164701AD2D32E5541ADB498496D965041DB2CC373D92E554158C60A9F6E965041095F4C61DF2E55417C8B1A796E965041F96A2491E42E5541648EE78B6C9650417027CD32EA2E55419F884D6670965041180DF4A4EE2E554192C0707972965041FD18CCD4F32E554190F8938C74965041C6689F47002F55416B3384B274965041FCA333520D2F55411645F60776965041EFCA2CD9272F5541C4863E0874965041F5963CB13F2F5541360000009573759CD1965041DA102FF72A2F55419E878928B59650415A460F760F2F5541C8D19AD7B4965041D04AF742192F554119967BBBB09650418E733CFF172F5541E07B2892AD965041B4B343E8252F554119B35FE1A79650418E3974B3292F5541695A5C9FAC965041FC9DD88B2C2F5541695A5C9FAC965041768FE6F8302F55416D47823FA7965041768FE6F8302F554194C15174A39650419D09B62D2D2F554148EA9630A2965041514FDF0F232F5541A77EB98EA1965041E3075F5D172F5541BE0B6323A39650419B3AAEDF072F5541E4684E32A8965041A027D47F022F55415F9424EB9A965041A431DE45F42E5541A188C3549396504145BA9F0DEC2E554189FB19C091965041A81E04E6EE2E5541ED5F7E98949650410796421EF72E5541DAA2167E96965041660D8156FF2E554189FB19C091965041B3E43B9A002F554117C7736D8B965041674749A2ED2E5541B4620F9588965041548AE187EF2E55412A67F761929650419B3AAEDF072F55412A67F7619296504171D3B80A112F5541649E2EB18C96504184AD044B062F55413E4143A287965041623D3FDCFB2E55410427F07884965041CE7BEFF4F32E554151FEAABC859650411F5DB4FEE62E55414C11851C8B965041370742B9DF2E5541ED7C62BE8B9650412837003FDC2E554155EBD05C8096504187E806C3D22E554168A838777E96504187E806C3D22E5541335E27C87E9650414EB1CF73D82E5541FA43D49E7B9650414EB1CF73D82E5541AA9CD7E07696504115B46070CC2E554172518C05999650414DE2C725B32E554198AE77149E965041491286ABAF2E55410AE31D67A4965041000B0DE2B12E5541A29193EEA6965041C3039418B42E5541DFC9046A7F965041D8ACE7A6CE2E554113F731F387965041372426DFD62E554139541D028D965041C9BFC106D42E554150E1C6968E965041AD45F2D1D72E554163814A8B95965041B2321872D22E5541C3156DE994965041C4D29B66D92E5541001DE6B292965041D385F9BAE52E5541E87258F8999650411F40D0D8EF2E5541A761D568AA965041660D8156FF2E55418FB747AEB1965041A027D47F022F5541656D36FFB196504103A91C7EFC2E55417CFADF93B3965041623D3FDCFB2E55413FF366CAB5965041AA0AF0590B2F55411A658309D6965041857C0C992B2F55419573759CD1965041DA102FF72A2F55415E000000FF7FF3D6109750412FC2357B212F55419C1B8FFE0D9750418E733CFF172F554141749240099750415A460F760F2F5541048AFD9C02975041AEF715FA052F5541467E9C06FB965041C6A1A3B4FE2E55415D282AC1F39650410796421EF72E554111516F7DF2965041EC1B73E9FA2E55414A6BC2A6F59650413CC36FA7FF2E55410D812D03EF9650412906088D012F5541888F1F96EA965041D084BF8E072F5541FAE0A90EE89650415A460F760F2F554137E822D8E59650418E733CFF172F5541EB106894E496504192437E791B2F5541C983BEFFE2965041429C81BB162F5541D853007AE6965041FF9E12B80A2F5541888F1F96EA965041D571E52E022F5541FAC3C5E8F09650417ACAE870FD2E5541BCBC4C1FF3965041672A657CF62E554183A2F9F5EF965041585A2302F32E554137E822D8E59650412536C612FE2E554175EF9BA1E3965041D95E0BCFFC2E5541AE09EFCAE6965041FFD8DA03F92E554137CB3EB2EE96504141CD796DF12E554158CA2EB1EB9650419FF2E036EF2E5541BEDFA6AEE2965041B69587F6F92E5541EE0E46D6DF965041971D227DF92E5541E3E6CEADDF965041248D7AE8F72E5541D1E998CBE9965041F8C15C00ED2E55418EB00787E59650411DC984FFE92E5541AAD5B491DB965041AC6D10CEF92E5541426D8425DA965041971D227DF92E5541DD570C28E39650418BE8EE19E82E5541B1647717D896504183DEFCFCE02E55415BF97C8DCC965041F55DDBC0FA2E5541E8904C21CB96504148761DDCFB2E554161B0B63BC99650414E2D578AF82E5541E8904C21CB965041690C0861F52E554199E94780CD965041B8B30C02F32E554133D4CF82D69650413AEE310AE02E5541C361ADF9CD9650412B557D67DC2E5541718F6712C69650411294519CD82E55410A45BCB1BD965041808B448ED62E5541026341BDB69650412D730273D52E5541276A69BCB3965041AFE25ADED32E554108F20343B39650417C1A0714D32E554191F01E34AE96504165AC93B7D92E5541CB473584AB965041603B563DD62E5541E09723D5AB96504167CA18C3D22E55412ACEEAFBA596504126E43FEDD82E554198C5DDEDA3965041F21BEC22D82E5541BCAE80E1A79650412802C5F8D12E5541A1CFCF0AAB9650415EE89DCECB2E55417CC8A70BAE965041600623DAC42E55419B18965CAE965041B9D59EA3C22E5541012E0E5AA59650410F5262FEB52E55419D5E9290A79650419DC1BA69B42E55415D504292AD96504138AC426CBD2E5541A4228879B59650414E422DF1B62E5541156D33DABD965041B357A5EEAD2E5541771E2A98C29650413C56C0DFA82E5541ABE67D62C39650418AB7C84CAD2E5541A52F44B4C69650413C56C0DFA82E55410D987420C896504194DF3F75AD2E55419B07CD8BC6965041FC4770E1AE2E5541092737A6C4965041F00174ADB52E55412ABD212BBE965041B4646129BF2E5541891B607AB89650416EC74EA5C82E55418FD29928B596504119691056CE2E554146E2CE35B4965041A149A63BD02E554185AA2200B59650413D52B349D22E55410C8BB8E5B6965041906AF564D32E554159ECC052BB965041BA0AD206D42E5541F4D64855C496504141C3F0C3D52E55414C60C8EAC8965041B4539858D72E5541E2D91273CE9650415B841C8FD92E554159DBF781D3965041202D063FDC2E5541EBBB8D67D596504140A56BB8DC2E5541FCA7FA78E39650419EF6EDCCC52E5541ACE270CCEC965041C650CE3ACD2E5541B96E6934DF965041EB462D69E22E55412648D71AE4965041E5B76AE3E52E5541DE64C862F4965041BE7B0F81D72E5541024E6B56F8965041B8C4D5D2DA2E5541144BA138EE965041C1CEC7EFE12E554135E18BBDE7965041D4D8B90CE92E5541D43C513AF496504116F4C545F42E5541D68F09A9FE9650412D976C05FF2E554146BC2FFE0D97504168FB3E900D2F55417ECD491A129750418CE4E183112F5541CD744EBB0F9750411EEDEE91132F554142237B5B0A9750413F83D9160D2F5541D89CC5E30F9750411836B5E3162F55417ECD491A12975041C7702B37202F5541FF7FF3D6109750412FC2357B212F5541050100002BA43E2E299750413108AA7F022F55410D72D5E82197504116F4C545F42E554123E048451B97504138D0ACFEE62E554100F7A55117975041EB462D69E22E5541316C41AD0D975041EC8C299DDB2E5541953BBD760B9750411CBCC8C4D82E55413DB23DE1069750413D52B349D22E55414016BF20F99650417AFC8108DA2E55411D2D1C2DF5965041758B448ED62E5541BB7B256FF09650412802C5F8D12E5541339B8F89EE9650414309EDF7CE2E5541339B8F89EE9650411F204A04CB2E55419AE53AEAF696504130D783B2C72E5541C5A39C97F0965041A81E65F5C52E5541058A756DEA965041311D80E6C02E5541D44D1A0BDC965041D1890E34B52E5541448B0931D39650419E07B79DAD2E554120A2663DCF9650411DDE5A66A82E55419F780A06CA965041AC93AF05A02E5541C57F3205C7965041BD4AE9B39C2E5541DF865A04C4965041AC93AF05A02E5541CA366CB3C3965041322E49B7A82E55414E7E4DF6C19650411DDE5A66A82E55414E7E4DF6C1965041C1E39D56A02E5541F4D64855C4965041E27988DB992E554188D56346BF96504178CB5B3B9F2E5541793CAFA3BB9650416714228DA22E5541EF30D877AF96504141C7FD59AC2E554169963EC6A6965041203113D5B22E5541012E0E5AA5965041ADA06B40B12E5541121A7B6BB39650416C855F07A62E5541D77C68E7BC965041390308719E2E55414E7E4DF6C196504150717BCD972E55412406E87CC19650415628B57B942E5541A74DC9BFBF965041C41FA86D922E5541CC54F1BEBC965041CF471F96922E55411BFCF55FBA9650419F18806E952E55416AA3FA00B8965041464904A5972E55415B0A465EB49650410D38EA88932E55419E6B4ECBB8965041C0AE6AF38E2E554118D1B419B0965041C665A4A18B2E554154465075A696504100BDBAF1882E5541D9D32DEC9D96504179DC240C872E55419101E80496965041B3333B5C842E5541E65F265490965041C312EC32812E5541A3FE1DE78B96504156397E4C7C2E5541D32DBD0E8996504167F0B7FA782E5541F85C5C368696504177CF68D1752E5541717CC650849650412EDF9DDE742E554151F7A49C7296504141D8C62A942E554176FECC9B6F965041C41FA86D922E5541773300FF809650415E0E3D06722E554121C8057575965041BE6C7B556C2E5541B4EE978E70965041D72DA720702E55411E754D066B9650411185BD706D2E5541E3107B7B5C9650417E935EBA832E5541A0AF720E58965041C312EC32812E55416D1C52A7689650411DF330CD662E5541C03494C269965041AA628938652E5541FCA92F1E60965041162F3BE4582E55414B5134BF5D965041758D7933532E554133D604285396504181FBEC8F4C2E5541CD8B59C74A96504100D29058472E5541CED155FB43965041F138DCB5432E5541FA8FB7A83D96504140B8692E412E554174F51DF7349650416F0F807E3E2E5541F73CFF39339650418F5F6ECF3E2E554199FC45F631965041164004B5402E55411351E37341965041FE8B94244E2E554197A580F150965041D1AFAD6B5B2E5541F174FCBA4E965041444055005D2E5541E8A34A972F9650417EA83421422E55419FB37FA42E965041164004B5402E5541276C9E6130965041E82EEA983C2E55410B58BA2722965041867DF3DA372E55411E9BEC3D11965041F003A952322E554102870804039650416EDA4C1B2D2E55414B77D3F6039650419309EC422A2E5541912B94D21296504153FB9B44302E55416998736B23965041FF9C5DF5352E5541958B087C2E965041185E89C0392E554169CDA6CE34965041BA1DD07C382E55414FC67ECF37965041EA74E6CC352E55412F76907E379650410A0BD1512F2E55413605530434965041987A29BD2D2E5541E2EC10E9329650414F8A5ECA2C2E5541D44F4FB0589650417A48C077262E55412D1FCB795696504136C932FF282E554117B1571D5D965041749186C9292E554145C2713961965041217944AE282E5541DD5941CD5F9650411D080734252E5541A3022B7D62965041DE173C41242E55410B6B5BE96396504166F8D126262E55419D4BF1CE65965041CE600293272E55411E754D066B965041749186C9292E5541C9160FB770965041E7212E5E2B2E5541B3A89B5A7796504125EA81282C2E5541DB027CC87E965041069A93D72B2E554118AD4A8786965041BD8151BC2A2E55419F8DE06C88965041D88879BB272E55418486B86D8B965041217944AE282E5541111E88018A965041BD8151BC2A2E5541A09A9CA799965041F49C5DF5352E5541782FF368AA96504151A8E3D5252E554186C8A70BAE96504151A8E3D5252E5541DAE0E926AF965041F149A5862B2E5541ACCFCF0AAB965041CC427D872E2E554169963EC6A696504192EB6637312E5541794D7874A3965041283D3A97362E5541E76CE28EA196504141FE65623A2E5541E76CE28EA19650416176CBDB3A2E55410C6341BDB696504117753718522E55419E320ED2D09650418D6553566F2E5541A2CBC274D4965041530E3D06722E5541A085C640DB965041D2E4E0CE6C2E554122AF2278E096504140044BE96A2E5541C8DFA6AEE296504125FD22EA6D2E5541E3E6CEADDF9650410A1E7213712E5541A085C640DB965041D0C65BC3732E5541EF2CCBE1D8965041587F7A80752E55417B7E9E41DE9650418A01D2167D2E5541011938F3E696504119B726B6742E5541C914DA11F49650410C3CF71E6A2E55417709543104975041CB20EBE55E2E5541DE2B88690C9750415E477DFF592E5541E7357A8613975041989E934F572E5541AB9867021D975041844EA5FE562E5541CAFF03AB359750410007C4BB582E5541AEE712DB5097504192E759A15A2E5541AEE712DB509750413918DED75C2E554151B8226837975041A73748F25A2E55417D874DE6189750412057B20C592E5541BD959DE41297504149F78EAE592E5541E29CC5E30F9750419D0FD1C95A2E5541DE2B88690C9750410FA0785E5C2E5541B01A6E4D08975041B6D0FC945E2E55418231CB59049750415D0181CB602E554100086F22FF9650414C4A471D642E5541D414DA11F4965041BD94F27D6C2E5541FB61FE44EA9650410F8FAF8D742E5541F80E46D6DF965041FD9179AB7E2E55418E88905EE59650412F14D141862E55415D13F502EF965041478F00D9902E5541EDD505DDF7965041A3B13411992E554111BFA8D0FB965041F0123D7E9D2E5541D7679280FE96504153C4333CA22E554137FB03330A975041E730C289962E554107CC640B0D975041695A1EC19B2E5541A738F3580197504108B6E33DA82E55410FA123C5029750414BEF7482AC2E5541C0F91E2405975041F8D63267AB2E5541D5490D75059750417FB7C84CAD2E55415891EEB703975041DDF78190AE2E55415D022C3207975041BC61970BB52E554180EBCE250B975041EB903633B22E5541E853FF910C97504154F9669FB32E5541DABA4AEF08975041A15A6F0CB82E5541650C1E4F0E975041E82CB5F3BF2E5541931D386B12975041E60E30E8C62E554163EE98431597504162815271CF2E554163EE984315975041CF5AC057D42E5541988E75E5159750419403AA07D72E5541B706DB5E169750411CE43FEDD82E55413EBFF91B189750415F1DD131DD2E5541ACDE6336169750417E9536ABDD2E5541E7357A86139750414B13DF14D62E5541C7BD140D13975041F4895F7FD12E55419E45AF9312975041DAC833B4CD2E5541218D90D61097504198672B47C92E5541703495770E97504140DEABB1C42E5541F37B76BA0C9750411CF508BEC02E5541B042E575089750413D8BF342BA2E55419681B9AA04975041A711A9BAB42E5541E528BE4B0297504179008F9EB02E554149F8391500975041748F5124AD2E5541E18F09A9FE965041701E14AAA92E5541C23F1B58FE965041B59DA122A72E55413A5F8572FC965041716410DEA22E55417FDE12EBF996504178F3D2639F2E5541D8AD8EB4F796504188D2833A9C2E5541E964C862F49650417939CF97982E554191DB48CDEF96504141003E53942E5541E639871CEA9650418B36057A8E2E5541E2A0D279E6965041879D50D78A2E554156777642E1965041D1D317FE842E5541AF1E7BE3DE965041C33A635B812E5541662EB0F0DD96504165FAA917802E5541B5D5B491DB9650419529493F7D2E55413ED4CF82D6965041F4AFFEB6772E55413A639208D3965041382F8C2F752E55419B07CD8BC696504190A742F4912E5541287725F7C496504147B77701912E5541B282FC22D1965041B14EF649732E554188E62C17A7965041E638DCB5432E5541012E0E5AA5965041DC10658D432E554118AD4A87869650411546E93B712E554186CCB4A184965041C12DA720702E55416F25014CA3965041C7C0763C432E55414FD512FBA2965041D79F2713402E5541C8F47C15A19650411C1FB58B3D2E554147CB20DE9B965041CD77B0EA3F2E554138326C3B989650415AE708563E2E55415D610B6395965041609E42043B2E55419C295F2D969650415C2D058A372E554163F0CDE89196504138446296332E5541FB879D7C90965041FA5397A3322E5541DC37AF2B90965041650F807E3E2E5541D680757D939650412AB8692E412E5541A651D655969650412090F205412E55418B4AAE56999650411AD9B857442E554157AAD1B498965041EAA91930472E55418C5B772781965041988DCA7E6F2E554107F610D989965041FA663865742E5541C7E7C0DA8F965041411107247C2E5541A2E098DB92965041E4D04DE07A2E554187D970DC959650410D712A827B2E554104928F9997965041B4A1AEB87D2E55413EE9A5E99496504165FAA917802E5541EBD063CE939650418E9A86B9802E55416CFABF059996504135CB0AF0822E5541305DAD81A2965041FB73F49F852E55413DD8DC18AD965041B6F46627882E5541FCAB070FBA96504119A65DE58C2E55410A45BCB1BD9650411F5D9793892E55410FB6F92BC1965041C58D1BCA8B2E5541490D107CBE965041A086F3CA8E2E5541C00EF58AC3965041E3BF840F932E554147EF8A70C596504156502CA4942E5541FEEDF6ACDC96504112E267FC7E2E554147DEC19FDD965041C33A635B812E5541890A97A9D09650412DF64B368D2E554190DF5563C6965041304904A5972E554197A34B4CD4965041E3AEBB3EAB2E55410A34F3E0D596504189DF3F75AD2E55411A02DBE6EA96504175C48487BE2E55415213F502EF9650413B6D6E37C12E55412AA84BC4FF965041A857A5EEAD2E5541717A91AB079750413D8BF342BA2E554137237B5B0A975041564C1F0EBE2E55410030E64AFF9650414F776054C82E5541FFE9E916069750410F691056CE2E5541C90311410C97504102231422D52E5541316C41AD0D9750410794519CD82E554169A5D2F1119750413FCDE2E0DC2E5541FF1E1D7A1797504182067425E12E5541299782F3179750410F9E43B9DF2E5541C12E52871697504193E524FCDD2E55413EE770441897504188BDADD3DD2E5541FA67E3CB1A975041E06EA491E22E5541B5E855531D97504176C077F1E72E55411D5186BF1E975041FDA00DD7E92E5541D31ABF9824975041A7244A7CF62E5541059D162F2C975041552A8D6CEE2E5541EABD65582F975041176239A2ED2E55413ED6A77330975041B36A46B0EF2E5541ACCD9A652E975041B7DB832AF32E5541D1FC398D2B975041FA3C8C97F72E554154441BD02997504149E49038F52E55415AFB547E2697504124B5F110F82E5541A75C5DEB2A975041D3EF6764012F55412BA43E2E299750413108AA7F022F554106000000175CDAF6C4965041D121910EEF2E5541CF54612DC796504119290AD8EC2E55411B2C1C71C896504130B6B36CEE2E55412EE9838BC6965041D7178748FD2E5541963A0E04C4965041B19DB713012F5541175CDAF6C4965041D121910EEF2E55410600000057E47E3616975041D08C510CB82E55417D5E4E6B1297504138DEDB84B52E55414427171C189750415E58ABB9B12E55410603BA2C23975041C1D9F3B7AB2E5541F3455212259750413CCB0125B02E554157E47E3616975041D08C510CB82E554105000000F93B484C33975041F53719F38E2E55413743C1153197504187D3B41A8C2E5541F5313E8641975041B13AAAEF822E5541B72AC5BC43975041159F0EC8852E5541F93B484C33975041F53719F38E2E554105000000B678A194159750417D0D7D667A2E5541D2F270C91197504119A9188E772E5541B65BBD6E1E9750416A8ADD976A2E554119C02147219750416E5A1F126E2E5541B678A194159750417D0D7D667A2E554106000000A977676837975041669DB7F76F2E55415DA0AC243697504106099599702E554110C9F1E034975041B66198DB6B2E55417A234CF34597504122A048F4632E5541321CD32948975041FC2579BF672E5541A977676837975041669DB7F76F2E5541060000000CEDF96814975041912B31DE342E5541E24C1DC7139750412552C3F72F2E55415179431C239750412F7A3A20302E5541D959D90125975041631A17C2302E5541F8A9C75225975041DA1BFCD0352E55410CEDF96814975041912B31DE342E554107000000615C0189F6965041A546ECCB232E554137BC24E7F596504196AD3729202E5541236C3696F59650410FF5186C1E2E5541615C0189F6965041923CFAAE1C2E5541D717EA63029750413E24B8931B2E554100B8C6050397504128B64437222E5541615C0189F6965041A546ECCB232E5541070000008203B5DED7965041A67B1F2F352E554178DB3DB6D79650416E428EEA302E5541626DCA59DE965041C7110AB42E2E554170067FFCE1965041C7110AB42E2E554145481D4FE8965041B2C11B632E2E55414F709477E896504114731221332E55418203B5DED7965041A67B1F2F352E55410A000000CF68CAE1B2965041501025A5292E55418678FFEEB19650412C2782B1252E554107A25B26B79650415C5621D9222E5541A4AA6834B9965041CA758BF3202E554125D4C46BBE965041396D7EE51E2E5541E15437F3C09650417735D2AF1F2E554115F51395C1965041EAC57944212E5541F5A42544C1965041374FF9D9252E55412B8BFE19BB9650412C2782B1252E5541CF68CAE1B2965041501025A5292E55411E000000394EA1D63296504174396FBAA22E554147DA993E25965041BAD6813E992E5541C5B03D0720965041DF052166962E554150CDDD031496504155D2D2118A2E55411C3ECA32FB955041E7DADF1F8C2E55415C4C1A31F595504125A333EA8C2E554186C47FAAF59550416A22C1628A2E554198B0ECBB03965041E269A2A5882E55418142795F0A965041D8412B7D882E5541FCA7DFAD019650418F51608A872E554118DE5589DF9550414CF0571D832E554157A6A953E0955041916FE595802E5541413429611096504151619597862E5541A52B1C530E965041AA301161842E55413FE170F205965041A7DD58F2792E5541FCA7DFAD01965041118C8592742E55418917381900965041A9235526732E5541DADCC1C5F6955041088293756D2E5541157AD449ED9550419CA8258F682E55414A1AB1EBED9550413E686C4B672E55416A9FD29FFF955041171B4818712E55413048BC4F02965041A9235526732E554153315F43069650410BD54BE4772E55414C5CA08910965041B4588889842E5541F5DFDC2E1D965041722CB37F912E5541FA501AA920965041624D02A9942E55417816F5A033965041E258D9D4A02E5541CB2E37BC3496504116F9B576A12E554163C606503396504174396FBAA22E5541394EA1D63296504174396FBAA22E55410D0000001434D815F4955041ED7C4367CA2E554145A97371EA955041EA298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541FF0B61EDF39550412481A148BD2E554148FC2BE0F4955041BC1871DCBB2E55410EA51590F7955041B2F0F9B3BB2E5541BFFD10EFF9955041C740E804BC2E55413C8EB883FB955041BC1871DCBB2E55412BD77ED5FE955041E6B84D7EBC2E55415B061EFDFB955041EA298BF8BF2E55414C6D695AF8955041E472514AC32E5541DE4DFF3FFA955041AA1B3BFAC52E55411434D815F4955041ED7C4367CA2E55410A000000A2D863E4039650417899E363BE2E55413A7033780296504105093CCFBC2E554159E898F10296504192A00B63BB2E554159E898F1029650412A38DBF6B92E5541CC50C95D04965041AD7FBC39B82E554134B9F9C905965041A3574511B82E55414D7A259509965041D71F99DBB82E55414352AE6C09965041DB90D655BC2E55415E59D66B069650416349F512BE2E5541A2D863E4039650417899E363BE2E55410C00000072855A2ADD955041915A0F2FC22E5541783C94D8D9955041A139C005BF2E5541AE226DAED3955041D71F99DBB82E5541013BAFC9D49550415A677A1EB72E554169A3DF35D695504131C79D7CB62E5541E65BFEF2D7955041DDAE5B61B52E5541CB54D6F3DA955041601EB4CCB32E554172855A2ADD955041601EB4CCB32E5541C12C5FCBDA955041DDAE5B61B52E5541FF1C2ABEDB9550411B9F2654B62E554127770A2CE39550414E217EEABD2E554172855A2ADD955041915A0F2FC22E55410600000034CECF30C49550410D02651BDC2E5541794D5DA9C1955041CF119A28DB2E5541B186EEEDC59550415EC7EEC7D22E554158B77224C895504115D723D5D12E554158B77224C8955041B1DF30E3D32E554134CECF30C49550410D02651BDC2E554109000000D4E7721B37965041FF869E76A12E55418810B8D735965041531BC1D4A02E55413C39FD9334965041DDF9F4E19F2E5541FE3184CA369650411A016EAB9D2E55414B093F0E3896504116312C319A2E55416296E8A239965041913F1EC4952E5541248F6FD93B9650410761EAB6962E5541D8B7B4953A965041D929B3679C2E5541D4E7721B37965041FF869E76A12E554107000000575D28BEB2955041F42CB1B60B2F55416FEE922DB19550419E948F980A2F5541879B7A12B2955041426EAF3F082F5541F06E4250B59550411D14E075062F5541DAA63C3BBA95504191AFADC8042F55410A010C05BC9550419E781223082F5541575D28BEB2955041F42CB1B60B2F5541050000009749C13CBB9550412D4E2750002F554136B19F1EBA95504130F703BBFB2E5541B9163111C4955041060F76B6F82E5541B3A4EF4BC59550415651D384FD2E55419749C13CBB9550412D4E2750002F55410E000000D82C74E694955041DCEAE24CEB2E55411E6FD1B499955041BECBB9A2EB2E55415604479E9D955041EF090CF7EA2E5541EAA31F6BA19550411AD61C86EB2E5541EAA31F6BA1955041A63A4F33ED2E5541ACB8E531A1955041708ABB19EF2E5541AC9C68BC9E9550410F0E1771F02E55418CB4DAB79B955041C622DD37F02E5541F3A2C02599955041F1EEEDC6F02E5541DBF5D8409895504147870FE5F12E55415A91A69396955041BB3E5AADF22E55416575291E94955041726F9DE9F42E5541779452C8939550419B56CCA8EF2E5541D82C74E694955041DCEAE24CEB2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3173719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -32  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+010600000001000000010300000001000000190000007E7BAC3032945041C8D4FE21C62D55410BC4C22E32945041DD816E02C62D5541392FDE9634945041A9B082AEC42D5541CD594A8C34945041A613856BC42D5541C6F01EC12D945041B7052E82C02D55414C3D62A219945041C69EE041D52D5541E70573A8089450410E45E686DF2D5541579CE6D7F693504141529D60E92D5541C591A6E5EA935041B347C1C2F12D55419425A32DDB9350411C3DE524FA2D5541848CC9FBD6935041617C5338F62D5541623B023ED59350411A5C264EFA2D55411541452DD49350412DE10124FE2D55411D5A8B48D493504158B1AF4B022E55414BF02FECD49350414DD272B4052E5541FEB5A867D6935041F17F6133092E5541C615D9C0E79350411B2064DEFC2D5541F781DC78F793504129FB198DF12D5541F064BF860E945041CD3FF8B7E32D5541A34250711594504104AC971BDF2D5541C1D339261C9450413A18377FDA2D5541B5993799219450416684D6E2D52D5541B3F883772794504112A4CE10D12D5541878CE4132C945041C9C3C63ECC2D55417E7BAC3032945041C8D4FE21C62D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3173727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -33  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+0106000000010000000103000000030000003400000070007D40E695504146EA0866152F5541AA73A00BE6955041E901315B152F55414709589AE395504144F94D55162F55417D37808BE29550414A6037C0162F554183DBFB8CDD9550413B706DCA182F5541821DE336DD95504135C1D3D2182F55414ADEE5FED995504173DC0397192F5541E5A5914DD39550416A8A1274182F55413626FEB3D195504110A45C3B182F554191001426D095504144768FE6172F55415EA54808B59550418597E8E9122F554197E274B78295504116EB2578092F5541C99AB85D7C95504116EB2578092F55411EF4374572955041E26393480A2F55416EAF191A5D955041CCD95F6C0B2F554147530ED85C9550413A5E003B0B2F5541DBE788AC5B955041B0CF35B80C2F55414A11153A5B9550418D3ECB480E2F554174F9A23E5E9550413271CC0F212F5541269C27405F955041907C8E38292F55414CF6F60961955041C81104222D2F55410B62E06565955041FB343846322F5541813F3AF95F9550419DB222182F2F5541E5362DEB5D955041B891D3EE2B2F5541BC9650495D955041B3209674282F554187F673A75C9550415C9716DF232F554134DE318C5B9550414965AD991C2F5541EBC5EF705A955041EC6AF089142F55418E85362D59955041EE8875950D2F5541ADFD9BA65995504128E08BE50A2F5541D7760DF95A955041FD5AE9D4092F5541D6C37D544C955041BEC896E2FE2E55416DE75D5A4C955041C1120470FE2E5541D3D36E454895504197EB2546F62E5541F373810347955041850B75B1F62E55414E7408A9439550411D4B8CE2FA2E5541E8B4B4CA3D95504153AA6BD9022F55414A95EC043A95504185E9FB640A2F55411035781D3C9550410469B16C0F2F55418EB42D25419550416928054B152F55412DD4F5EA44955041F9876BE7192F554172F3360B4C95504145875D9C202F554175D252AF5595504169068CFE282F5541B311E33A5D955041E78541062E2F55412D9003526C9550410425BFD3362F5541DE4E49E578955041DCA4FB80382F5541F8EC31C28B9550417BC4C3463C2F55419A85AA46D4955041040346874A2F5541408523A1D79550412C8309DA482F5541F8644D90DA9550419F43F2A8442F554103241AC9E3955041E0C709BE1A2F554170007D40E695504146EA0866152F55410A0000002BAEA037AE955041B0BC1435362F5541FB7E0110B1955041D70939682C2F5541EB9F5039B495504179C97F242B2F554192D0D46FB695504184F1F64C2B2F554119B16A55B895504101829EE12C2F554168586FF6B59550414854E4C8342F55419CF84B98B6955041B0BC1435362F55417DA85D47B6955041389DAA1A382F55414F97432BB2955041A005DB86392F55412BAEA037AE955041B0BC1435362F55410E000000847D1C01AC9550413D1FB165232F5541DE4C98CAA9955041DFDEF721222F55419F5CCDD7A895504138AE73EB1F2F5541C9FCA979A9955041D045437F1E2F5541FD9C861BAA955041538D24C21C2F55415BDD3F5FAB955041F54C6B7E1B2F5541D8955E1CAD955041AC5CA08B1A2F5541C7B6AD45B0955041636CD598192F554198870E1EB3955041062C1C55182F5541530881A5B5955041C73B5162172F5541BB70B111B7955041DC8B3FB3172F5541FA3805DCB79550413ACCF8F6182F5541DAE8168BB7955041CBD405051B2F5541847D1C01AC9550413D1FB165232F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3188494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+01060000000100000001030000001600000083010000C4863E0874965041F5963CB13F2F554170074D3D7496504145D7C3CB3F2F554139C6007B7596504174173630412F55411B734D38769650416C45783F342F5541AB8A99F37796504167EE6172242F554103F2E15B92965041585E0BAC2C2F55418C6AEC6688965041448A5E161D2F55419CFA422D809650416175A0BD082F5541FA30F5C37A965041BD9C676AEF2E5541FC7820A776965041A45EE409D82E554137380FE471965041F32AC0D5CA2E55417452E901619650410BD2ABAD9E2E5541E20532615B965041F7FDFE178F2E5541E218F25E53965041E65EBD67832E55418E1B80C140965041CE203A076C2E5541E8FA1B8B2B9650413BFA0262562E5541A7C26B99149650416762DBD1412E55414200385006965041C02EB79D342E5541C39AED42089650418105F295312E5541BFDA6EFE3B965041990A35FD602E554172303E1A5596504170C40775812E55418617ABAD5C965041F5C893328B2E5541D7F271636396504127976D599A2E5541956EC17A6C9650414AD5F0B9B12E554146B5A5AC7196504121B5432DC22E55416C61D4EB749650416D263418C12E5541AB8A99F377965041409CB0C0C92E554149EA10927596504193BFA259CC2E554109AE8B8C7A965041F881D6A2DA2E55415CD17D257D965041CAE4924DEB2E55416906E90A81965041AD0C11A4F72E55416906E90A81965041109AD907022F55413EC490968596504121391BB80D2F55410E05A2598A965041F1666C7D1A2F5541CEC81C548F96504186E88E03242F55418F8C974E94965041F5BD824A2A2F554193F66D199C965041289F1C6F312F5541E4D134CFA2965041EDDF2D32362F554174D6C08CAC965041BD203FF53A2F5541C8F9B225AF965041956525CC232F55416EF49660D49650413964DE1A2D2F5541E011B68AD696504167DBA1742C2F55415451809CE49650418D7410B6372F5541D5D87591EE9650419ABC3B99332F5541C33934E1E2965041267D7187252F5541C313B4E5F2965041C3EFA8231B2F554144AE69D8F4965041F1792C7B122F5541C6481FCBF69650410574590C122F55416A47D81900975041B6BA3D3E172F55413CAA94C410975041078344F6252F55415DD92C3B1497504186FB4E011C2F55411B683C5015975041564F20C2182F55415AA4C15510975041958BA5C7132F55411B683C5015975041C1CDFD3B0F2F55413C97D4C618975041C3026921132F55415B8759D5339750412A2A30CEF92E55417EC5DC354B975041B832919FE72E55413C54EC4A4C9750416757CAE9E02E5541593F2EF2379750414406878BD12E5541E4FF63E029975041322E05E2DD2E5541D34D62322697504112FF6C6BDA2E55410A99D221359750410FDDC183CE2E5541987BB3F732975041810DA1ABC82E5541E734CFC52D975041CB4926B1C32E5541D7B738FD2D9750410B86ABB6BE2E5541F6B1658E2D975041CC5CE6AEBB2E55410CCE3D0739975041BCF20FE4B32E55413C7A6C463C975041488DC5D6B52E5541EDC05078419750410977C0CCAA2E55419A9D5EDF3E975041E8472856A72E55419CE589C23A9750415830DC9AA52E5541C827E23636975041D460BBC29F2E5541796EC6683B97504185BA5FF29C2E55418D4273FE4A97504174085E44992E5541929989CB5A975041F36DA851972E554175D4C71F5F97504199A1CC85A42E5541D3F7B9B8619750412EEAAE12C62E55411556EAA56897504160DE0835C52E5541295017376897504170F23686082F554175D4C71F5F9750411087190A0A2F5541D338105B5E9750414E7CD6660A2F55417E3A3B8768975041FF6B8E7E082F554139E5DB8B6C9750417F784A33082F554130A2AB836D975041BB1686F6012F5541E6178CCF6D97504167AEBA5AD12E55417A90392E6C975041AC8A32CBC12E5541E0D65D9F649750417F69D369A32E5541B14066BB5F975041DF9DE1A08D2E5541B40843A85D9750416422672F912E554160AD3BEA589750415C7DCA08892E55419F66739453975041613C9CD87F2E55410E1A111952975041F0A233FD6F2E5541C58FF16452975041FC6A10EA6D2E55416111AAE0579750416BBA3F786D2E55414A78E5E95497504143ABF6505D2E554133DF20F35197504143ABF6505D2E5541D3BB3C484F97504189EBDCB74C2E5541509B25B04A9750411F5B7FF9432E55411DAACAF24D975041B26FBE61432E55416734EAA64D9750415F14B7A33E2E5541077574F249975041CD63E6313E2E55415F2BDF8946975041B280E8ED2A2E5541F4D60A8DFB9650419B94DF8C102E554172497AE1F09650419D5CBC790E2E55419069ED94E89650417897AC9F0E2E5541505D7180D69650418F307196112E5541DA268BED9E9650412886DE2E1A2E554106312FA663965041B577DDD0232E5541C0E3846148965041A6E723F7272E55410AE33C982E96504173925A432C2E55411461E0371C965041D3B53EEE2E2E554157757BBB0E965041E07D1BDB2C2E55415EFC29780396504181BEA526292E5541B3EAB7220296504196F3FB262D2E5541BDBB9F2C07965041D1ED6101312E554180F95C6505965041E88626F8332E554182C1395203965041F2570E02392E5541815DCB5B04965041A5728B74412E5541414025BB0A9650414CF443F0462E5541AF24B9CF1C9650417DAD8D6C542E5541102C60EB139650417DAD8D6C542E554169A516EC1B965041A77C82D55B2E554114072D1A0D9650418C163BFD6F2E5541059E7F89F1955041CD4EEDAF5F2E55418C77917FEC9550417A1C27E0682E5541783317C0D7955041A77C82D55B2E5541CBAF53EBA89550418F3B7E87432E5541EA122552989550411B5C80AE4F2E5541E13ACE949B9550411781B37F562E5541B3DA729FA89550412FA0FA6D642E5541E7CB2468BA955041686C79656F2E5541783317C0D795504107878FA9822E5541705BC002DB955041B354C9D98B2E5541F25905CADC955041524D22BE942E554154895528D7955041A0C6D8BE9C2E5541182C70A4E0955041083D194EA82E554141B1FE6ADA9550416A8E260CAD2E55411FBA60BFCF95504149978860A22E55418C0B6E7DD4955041516FDF1D9F2E55419DBB1BF8CD95504116F03C3A9E2E5541119B19D1C19550410218E67CA12E5541B82163D0B99550411AEDC6C8A12E5541FE569F11AD955041CB95CD27A42E55417380038DAE955041FE1A5CEE9D2E55411A074D8CA69550417C1C17279C2E55410B9E9FFB8A955041C54EDDF6922E554133B70AC06C95504171B0F324842E55411BE780BF6C9550417C9C0811842E554192B801B06C955041B15EF919842E554145F219716B955041CCDF90D7862E5541D1D8CB8F719550413C6F3E4A892E55412F35A186799550417BB6F7B08D2E554182F82712819550419ACB1341912E55410BA41B26879550410462EBC4932E554136F33943859550410DDEB8E9962E5541EE4C34FE7A9550416F99766A902E554166A140EA74955041F069507B8D2E5541275A87837095504186D378F78A2E5541FEC89DCE699550413C6F3E4A892E5541147F6D8067955041713A2A8C8A2E55415567DA086695504150845ADA8C2E5541747CF69869955041DAB380C98F2E554172DB42776F955041A46462AC912E55418657109C72955041AEE02FD1942E5541DA37186E7795504122770755972E554123FB9EF97E955041EC0A68F19B2E554101284E0184955041C1BB49D49D2E554160A1A43E89955041D654983F9E2E5541E9D0CA2D8C955041B59EC88DA02E55419DCBDC5E90955041A964C600A62E5541727CBE4192955041FD44CED2AA2E5541C91AFB7B8E955041A7C312DFAB2E5541406F076888955041FD44CED2AA2E55410BA41B26879550419CA69198AE2E5541406F0768889550418F6C8F0BB42E55411520E94A8A955041B8FD78C0BA2E5541B381AC108E955041CBF5130AC12E5541B3642BCA90955041356F6A47C62E5541FF869ADF89955041896CF35FC82E5541A4CB780A7C95504127B135DFCE2E5541E4B3E5927A9550417D32F1D2CD2E5541102085F675955041530054FCCC2E5541478C245A71955041F2E5499DCD2E55416742F40B6F9550413D4A844ACF2E5541A82A61946D9550417074BC6AD62E55419EAE936F6A955041301082BDD42E55417F9977DF66955041850D0BD6D62E554135353D32659550418F89D8FAD92E5541F6ED83CB609550410320B07EDC2E55414A51FA6B61955041F8EDD6CCDE2E554110F1858463955041BF8D62E5E02E554110F1858463955041776D8CD4E32E55413191984262955041158D549AE72E55419271D07C5E95504103ADA305E82E55410D126AE059955041BB8CCDF4EA2E55419271D07C5E955041618C464FEE2E5541EC7157225B955041F9CB5D80F22E5541AF32C79653955041656B62F3F72E55416A1386764C955041BB6A54A8FE2E554172E75D5A4C955041BF120470FE2E5541DBC37D544C955041BAC896E2FE2E5541D6760DF95A955041F85AE9D4092F55414D9F5D575F955041D0560C50062F554156700F7B7E9550413F873F3BEC2E5541BC9243B386955041074EAEF6E72E5541D2176567989550410D05E8A4E42E554150DD3F5FAB955041D4CB5660E02E5541D677D910B4955041E4AA0737DD2E5541EBC7C761B4955041BB0A2B95DC2E55414A2606B1AE9550411A91E00CD72E5541D1D168339F955041B58C31E0C72E554130581EAB99955041C6436B8EC42E5541C90D734A9195504143FC894BC62E5541BFE5FB2191955041BB1BF465C42E55416087BDD29695504153B3C3F9C22E55410247048F95955041AD823FC3C02E5541B956399C94955041C861F099BD2E55410C6F7BB795955041D840A170BA2E5541EDF6153E95955041BF7F75A5B62E554151EE083093955041E015602AB02E5541FDD5C61492955041D17CAB87AC2E55419ADED32294955041BC2CBD36AC2E5541F71E8D6695955041916E5B89B22E55417FFF224C97955041FD47C96FB72E55419E4F119D9795504136815AB4BB2E55416087BDD296955041E7D95513BE2E55416AAF34FB969550418D0ADA49C02E554130581EAB999550413F63D5A8C22E5541C6A9F10A9F955041FAE34730C52E55419C20C3C0B6955041916A4EF3DB2E55412075603EC6955041FC2537CEE72E5541E970025DD39550419710BFD0F02E5541153C2045DE955041612AE6FAF62E55414C572C7EE9955041D82BCB09FC2E5541188FD8B3E8955041211C96FCFC2E5541A7442D53E09550411283E159F92E5541D2028F00DA9550412D629230F62E55418108D2F0D1955041D5D8129BF12E55410596AF67C99550412A3751EAEB2E5541B49BF257C19550417F6D1811E62E55414D79BE1FB995504196DB8B6DDF2E5541C698283AB79550414DEBC07ADE2E55411F68A403B5955041571338A3DE2E554163E7317CB295504196DB8B6DDF2E554152FBC46AA4955041D93C94DAE32E55411797F2DF95955041B3356CDBE62E55411AFB731F889550416FB6DE62E92E55415E7A019885955041B8A6A955EA2E5541F611D12B84955041200FDAC1EB2E5541ECE9590384955041C73F5EF8ED2E55414E9B50C1889550419266415D052F5541CB536F7E8A95504182AF07AF082F5541299428C28B955041D5C749CA092F55416D13B63A89955041A1276D28092F5541F05A977D879550419266415D052F55419D4255628695504194AC3D91FE2E5541F611D12B84955041A6A97373F42E55418EA9A0BF82955041C73F5EF8ED2E5541A3F98E1083955041F66EFD1FEB2E55416AC0FDCB7E955041BC17E7CFED2E5541B9AFFF5C72955041AA0413D3F82E554109D6DFB57495504167A797D4F92E55412F30AF7F76955041E80BCA81FB2E55418A568FD87895504100B9B166FC2E5541EE9B98DB7A95504113D8DA10FC2E554100D73EFB7C955041C2B1FAB7F92E5541B8EB04C27C955041B0765498F72E55413687D2147B955041E626E8B1F52E55417A00CB887C95504147A38C5AF42E55414450376F7E9550412149BD90F22E55416438C573819550410F0E1771F02E5541A7B1BDE7829550417D532074F22E5541082E62908195504139F6A475F32E5541823B71A87E9550415F50743FF52E5541FB64FD357E955041728B1A5FF72E55417CC92FE37F955041F8618ED1F72E5541D7EF0F3C82955041546CF1B4F72E55417CE5AC5882955041E0D02362F92E55411312E51A7F95504129BC5D9BF92E5541D098ECA67D9550416135560FFB2E55418D1FF4327C955041CF7A5F12FD2E5541244C2CF578955041566D50FAFF2E5541BB7864B77595504133DCE58A012F554127D98BEA719550419BAFADC8042F55418EC771586F955041C67BBE57052F5541F4B557C66C9550410F67F890052F55414313D3C46B95504170E39C39042F5541FA27998B6B9550413EC06815FF2E5541BEE908B867955041C2BD57AD022F5541B19650495D955041FE67266C0A2F55410D910D596595504114909D940A2F554151FFD1007B9550416237A235082F55416F313B46829550416237A235082F554119C18A8A90955041807566EE0A2F5541F1323DEBAA955041C5B7C3BC0F2F55411622F339CC955041B57D7CE2152F55411BECB6D9D79550417FCDE8C8172F55411DD198A9DD95504141E2AE8F172F55414FF4CCCDE29550411088DFC5152F5541D0747CF0E69550417776C533132F554152D9AE9DE89550413FFDCCBF112F55418DFB837CE5955041D29CA58C152F55417E37808BE2955041496037C0162F55414C09589AE395504148F94D55162F5541A873A00BE6955041EB01315B152F554171007D40E69550414AEA0866152F5541C2E3F44CE69550416928054B152F55414063AA54EB9550411D2913960E2F55413454DFB9E395504187919F47082F55415A230C7EEA955041038B2AB9FB2E55410703366DED955041E3EA17FBFC2E55418C629C09F2955041BB6A54A8FE2E55411CC202A6F6955041038B2AB9FB2E554161E143C6FD955041850B75B1F62E554168C1F45AFD95504100AC0E15F22E5541CD7C2224029650415AF27632E62E554115A3D3E102965041B30C50C0E12E5541BEEC684A069650416015B7F8DB2E5541772A2683049650413DB41515DB2E5541F24132FE01965041A93B68B6DC2E55416D593E79FF955041FC966F74E12E5541EA3827E1FA955041C941A6C0E52E5541F60004CEF89550418DE3D1EFE22E5541810C3819F1955041617925EFDA2E5541BF6101CDEC955041946A80ACD72E5541FD87B28AED95504157A83DE5D52E55412BBA3B78F39550414F9F32C8CE2E5541E8D4B8EAFB9550412DD117D1C72E5541041C25250E965041C76C05F6BB2E5541544BE1FF1596504105C2CEA9B72E55415DB85A131C9650419A9EEAFEB42E55410602F07B1F96504174756C2EB62E5541B277D0C71F9650416649214BB92E5541CB078AA11B965041EB3115D0BB2E55417910F1D915965041262C7BAABF2E5541D28E385E10965041179CC1D0C32E554173CFC2A90C965041479627ABC72E55415BD28FBC0A965041396ADCC7CA2E5541041C25250E96504114A5CCEDCA2E5541873C3CBD12965041FE0B08F7C72E554188A0AAB3119650415DCB7DABCB2E5541643F09D01096504106151314CF2E5541E927FD5413965041C952D04CCD2E5541F294766819965041C0E55639C72E55411EFF226921965041B778DD25C12E554118DCE2A22B965041701A0955BE2E55410AB097BF2E9650417E465438BB2E5541DA8619EF2F965041BD9B1DECB62E5541D3FF6A323B96504163FFE7FDA82E55411EEEF8DC39965041263DA536A72E554198A1966138965041F5AFB86FA92E554139468FA333965041C15AEFBBAD2E55419DC4D6272E9650419D95DFE1AD2E5541D0B531E52A96504186FC1AEBAA2E5541231139A32F96504127A1132DA62E5541141D11D33496504166F6DCE0A12E5541D3FF6A323B96504195F042BBA52E554195AAA17E3F965041D14E178CA82E55410B03DC2946965041C0F680C5AE2E554190EBCFAE489650412E46B053AE2E5541962CFEDE519650416EFFE7FDA82E5541916D2C0F5B9650417D8FA1D7A42E554118BA8E8A5C9650417C2B33E1A52E5541C16792E95E965041A95DBCCEAB2E55415F7CD1515E9650415DDCA737B32E55417779043F60965041A766C7EBB22E5541092AD5B06096504174756C2EB62E55418E12C93563965041D2D073ECBA2E5541228B769461965041E805CAECBE2E55418441E12B5E9650414BF18A84BF2E5541916D2C0F5B965041DC3DEDFFC02E554185A54F225D965041DAD97E09C22E5541145F2BB164965041B6146F2FC22E5541A4471F36679650413BFD62B4C42E55417F820F5C679650412DD117D1C72E55415ABDFF816796504180C8B098CD2E554198E3B03F6896504164701AD2D32E5541ADB498496D965041DB2CC373D92E554158C60A9F6E965041095F4C61DF2E55417C8B1A796E965041F96A2491E42E5541648EE78B6C9650417027CD32EA2E55419F884D6670965041180DF4A4EE2E554192C0707972965041FD18CCD4F32E554190F8938C74965041C6689F47002F55416B3384B274965041FCA333520D2F55411645F60776965041EFCA2CD9272F5541C4863E0874965041F5963CB13F2F5541360000009573759CD1965041DA102FF72A2F55419E878928B59650415A460F760F2F5541C8D19AD7B4965041D04AF742192F554119967BBBB09650418E733CFF172F5541E07B2892AD965041B4B343E8252F554119B35FE1A79650418E3974B3292F5541695A5C9FAC965041FC9DD88B2C2F5541695A5C9FAC965041768FE6F8302F55416D47823FA7965041768FE6F8302F554194C15174A39650419D09B62D2D2F554148EA9630A2965041514FDF0F232F5541A77EB98EA1965041E3075F5D172F5541BE0B6323A39650419B3AAEDF072F5541E4684E32A8965041A027D47F022F55415F9424EB9A965041A431DE45F42E5541A188C3549396504145BA9F0DEC2E554189FB19C091965041A81E04E6EE2E5541ED5F7E98949650410796421EF72E5541DAA2167E96965041660D8156FF2E554189FB19C091965041B3E43B9A002F554117C7736D8B965041674749A2ED2E5541B4620F9588965041548AE187EF2E55412A67F761929650419B3AAEDF072F55412A67F7619296504171D3B80A112F5541649E2EB18C96504184AD044B062F55413E4143A287965041623D3FDCFB2E55410427F07884965041CE7BEFF4F32E554151FEAABC859650411F5DB4FEE62E55414C11851C8B965041370742B9DF2E5541ED7C62BE8B9650412837003FDC2E554155EBD05C8096504187E806C3D22E554168A838777E96504187E806C3D22E5541335E27C87E9650414EB1CF73D82E5541FA43D49E7B9650414EB1CF73D82E5541AA9CD7E07696504115B46070CC2E554172518C05999650414DE2C725B32E554198AE77149E965041491286ABAF2E55410AE31D67A4965041000B0DE2B12E5541A29193EEA6965041C3039418B42E5541DFC9046A7F965041D8ACE7A6CE2E554113F731F387965041372426DFD62E554139541D028D965041C9BFC106D42E554150E1C6968E965041AD45F2D1D72E554163814A8B95965041B2321872D22E5541C3156DE994965041C4D29B66D92E5541001DE6B292965041D385F9BAE52E5541E87258F8999650411F40D0D8EF2E5541A761D568AA965041660D8156FF2E55418FB747AEB1965041A027D47F022F5541656D36FFB196504103A91C7EFC2E55417CFADF93B3965041623D3FDCFB2E55413FF366CAB5965041AA0AF0590B2F55411A658309D6965041857C0C992B2F55419573759CD1965041DA102FF72A2F55415E000000FF7FF3D6109750412FC2357B212F55419C1B8FFE0D9750418E733CFF172F554141749240099750415A460F760F2F5541048AFD9C02975041AEF715FA052F5541467E9C06FB965041C6A1A3B4FE2E55415D282AC1F39650410796421EF72E554111516F7DF2965041EC1B73E9FA2E55414A6BC2A6F59650413CC36FA7FF2E55410D812D03EF9650412906088D012F5541888F1F96EA965041D084BF8E072F5541FAE0A90EE89650415A460F760F2F554137E822D8E59650418E733CFF172F5541EB106894E496504192437E791B2F5541C983BEFFE2965041429C81BB162F5541D853007AE6965041FF9E12B80A2F5541888F1F96EA965041D571E52E022F5541FAC3C5E8F09650417ACAE870FD2E5541BCBC4C1FF3965041672A657CF62E554183A2F9F5EF965041585A2302F32E554137E822D8E59650412536C612FE2E554175EF9BA1E3965041D95E0BCFFC2E5541AE09EFCAE6965041FFD8DA03F92E554137CB3EB2EE96504141CD796DF12E554158CA2EB1EB9650419FF2E036EF2E5541BEDFA6AEE2965041B69587F6F92E5541EE0E46D6DF965041971D227DF92E5541E3E6CEADDF965041248D7AE8F72E5541D1E998CBE9965041F8C15C00ED2E55418EB00787E59650411DC984FFE92E5541AAD5B491DB965041AC6D10CEF92E5541426D8425DA965041971D227DF92E5541DD570C28E39650418BE8EE19E82E5541B1647717D896504183DEFCFCE02E55415BF97C8DCC965041F55DDBC0FA2E5541E8904C21CB96504148761DDCFB2E554161B0B63BC99650414E2D578AF82E5541E8904C21CB965041690C0861F52E554199E94780CD965041B8B30C02F32E554133D4CF82D69650413AEE310AE02E5541C361ADF9CD9650412B557D67DC2E5541718F6712C69650411294519CD82E55410A45BCB1BD965041808B448ED62E5541026341BDB69650412D730273D52E5541276A69BCB3965041AFE25ADED32E554108F20343B39650417C1A0714D32E554191F01E34AE96504165AC93B7D92E5541CB473584AB965041603B563DD62E5541E09723D5AB96504167CA18C3D22E55412ACEEAFBA596504126E43FEDD82E554198C5DDEDA3965041F21BEC22D82E5541BCAE80E1A79650412802C5F8D12E5541A1CFCF0AAB9650415EE89DCECB2E55417CC8A70BAE965041600623DAC42E55419B18965CAE965041B9D59EA3C22E5541012E0E5AA59650410F5262FEB52E55419D5E9290A79650419DC1BA69B42E55415D504292AD96504138AC426CBD2E5541A4228879B59650414E422DF1B62E5541156D33DABD965041B357A5EEAD2E5541771E2A98C29650413C56C0DFA82E5541ABE67D62C39650418AB7C84CAD2E5541A52F44B4C69650413C56C0DFA82E55410D987420C896504194DF3F75AD2E55419B07CD8BC6965041FC4770E1AE2E5541092737A6C4965041F00174ADB52E55412ABD212BBE965041B4646129BF2E5541891B607AB89650416EC74EA5C82E55418FD29928B596504119691056CE2E554146E2CE35B4965041A149A63BD02E554185AA2200B59650413D52B349D22E55410C8BB8E5B6965041906AF564D32E554159ECC052BB965041BA0AD206D42E5541F4D64855C496504141C3F0C3D52E55414C60C8EAC8965041B4539858D72E5541E2D91273CE9650415B841C8FD92E554159DBF781D3965041202D063FDC2E5541EBBB8D67D596504140A56BB8DC2E5541FCA7FA78E39650419EF6EDCCC52E5541ACE270CCEC965041C650CE3ACD2E5541B96E6934DF965041EB462D69E22E55412648D71AE4965041E5B76AE3E52E5541DE64C862F4965041BE7B0F81D72E5541024E6B56F8965041B8C4D5D2DA2E5541144BA138EE965041C1CEC7EFE12E554135E18BBDE7965041D4D8B90CE92E5541D43C513AF496504116F4C545F42E5541D68F09A9FE9650412D976C05FF2E554146BC2FFE0D97504168FB3E900D2F55417ECD491A129750418CE4E183112F5541CD744EBB0F9750411EEDEE91132F554142237B5B0A9750413F83D9160D2F5541D89CC5E30F9750411836B5E3162F55417ECD491A12975041C7702B37202F5541FF7FF3D6109750412FC2357B212F5541050100002BA43E2E299750413108AA7F022F55410D72D5E82197504116F4C545F42E554123E048451B97504138D0ACFEE62E554100F7A55117975041EB462D69E22E5541316C41AD0D975041EC8C299DDB2E5541953BBD760B9750411CBCC8C4D82E55413DB23DE1069750413D52B349D22E55414016BF20F99650417AFC8108DA2E55411D2D1C2DF5965041758B448ED62E5541BB7B256FF09650412802C5F8D12E5541339B8F89EE9650414309EDF7CE2E5541339B8F89EE9650411F204A04CB2E55419AE53AEAF696504130D783B2C72E5541C5A39C97F0965041A81E65F5C52E5541058A756DEA965041311D80E6C02E5541D44D1A0BDC965041D1890E34B52E5541448B0931D39650419E07B79DAD2E554120A2663DCF9650411DDE5A66A82E55419F780A06CA965041AC93AF05A02E5541C57F3205C7965041BD4AE9B39C2E5541DF865A04C4965041AC93AF05A02E5541CA366CB3C3965041322E49B7A82E55414E7E4DF6C19650411DDE5A66A82E55414E7E4DF6C1965041C1E39D56A02E5541F4D64855C4965041E27988DB992E554188D56346BF96504178CB5B3B9F2E5541793CAFA3BB9650416714228DA22E5541EF30D877AF96504141C7FD59AC2E554169963EC6A6965041203113D5B22E5541012E0E5AA5965041ADA06B40B12E5541121A7B6BB39650416C855F07A62E5541D77C68E7BC965041390308719E2E55414E7E4DF6C196504150717BCD972E55412406E87CC19650415628B57B942E5541A74DC9BFBF965041C41FA86D922E5541CC54F1BEBC965041CF471F96922E55411BFCF55FBA9650419F18806E952E55416AA3FA00B8965041464904A5972E55415B0A465EB49650410D38EA88932E55419E6B4ECBB8965041C0AE6AF38E2E554118D1B419B0965041C665A4A18B2E554154465075A696504100BDBAF1882E5541D9D32DEC9D96504179DC240C872E55419101E80496965041B3333B5C842E5541E65F265490965041C312EC32812E5541A3FE1DE78B96504156397E4C7C2E5541D32DBD0E8996504167F0B7FA782E5541F85C5C368696504177CF68D1752E5541717CC650849650412EDF9DDE742E554151F7A49C7296504141D8C62A942E554176FECC9B6F965041C41FA86D922E5541773300FF809650415E0E3D06722E554121C8057575965041BE6C7B556C2E5541B4EE978E70965041D72DA720702E55411E754D066B9650411185BD706D2E5541E3107B7B5C9650417E935EBA832E5541A0AF720E58965041C312EC32812E55416D1C52A7689650411DF330CD662E5541C03494C269965041AA628938652E5541FCA92F1E60965041162F3BE4582E55414B5134BF5D965041758D7933532E554133D604285396504181FBEC8F4C2E5541CD8B59C74A96504100D29058472E5541CED155FB43965041F138DCB5432E5541FA8FB7A83D96504140B8692E412E554174F51DF7349650416F0F807E3E2E5541F73CFF39339650418F5F6ECF3E2E554199FC45F631965041164004B5402E55411351E37341965041FE8B94244E2E554197A580F150965041D1AFAD6B5B2E5541F174FCBA4E965041444055005D2E5541E8A34A972F9650417EA83421422E55419FB37FA42E965041164004B5402E5541276C9E6130965041E82EEA983C2E55410B58BA2722965041867DF3DA372E55411E9BEC3D11965041F003A952322E554102870804039650416EDA4C1B2D2E55414B77D3F6039650419309EC422A2E5541912B94D21296504153FB9B44302E55416998736B23965041FF9C5DF5352E5541958B087C2E965041185E89C0392E554169CDA6CE34965041BA1DD07C382E55414FC67ECF37965041EA74E6CC352E55412F76907E379650410A0BD1512F2E55413605530434965041987A29BD2D2E5541E2EC10E9329650414F8A5ECA2C2E5541D44F4FB0589650417A48C077262E55412D1FCB795696504136C932FF282E554117B1571D5D965041749186C9292E554145C2713961965041217944AE282E5541DD5941CD5F9650411D080734252E5541A3022B7D62965041DE173C41242E55410B6B5BE96396504166F8D126262E55419D4BF1CE65965041CE600293272E55411E754D066B965041749186C9292E5541C9160FB770965041E7212E5E2B2E5541B3A89B5A7796504125EA81282C2E5541DB027CC87E965041069A93D72B2E554118AD4A8786965041BD8151BC2A2E55419F8DE06C88965041D88879BB272E55418486B86D8B965041217944AE282E5541111E88018A965041BD8151BC2A2E5541A09A9CA799965041F49C5DF5352E5541782FF368AA96504151A8E3D5252E554186C8A70BAE96504151A8E3D5252E5541DAE0E926AF965041F149A5862B2E5541ACCFCF0AAB965041CC427D872E2E554169963EC6A696504192EB6637312E5541794D7874A3965041283D3A97362E5541E76CE28EA196504141FE65623A2E5541E76CE28EA19650416176CBDB3A2E55410C6341BDB696504117753718522E55419E320ED2D09650418D6553566F2E5541A2CBC274D4965041530E3D06722E5541A085C640DB965041D2E4E0CE6C2E554122AF2278E096504140044BE96A2E5541C8DFA6AEE296504125FD22EA6D2E5541E3E6CEADDF9650410A1E7213712E5541A085C640DB965041D0C65BC3732E5541EF2CCBE1D8965041587F7A80752E55417B7E9E41DE9650418A01D2167D2E5541011938F3E696504119B726B6742E5541C914DA11F49650410C3CF71E6A2E55417709543104975041CB20EBE55E2E5541DE2B88690C9750415E477DFF592E5541E7357A8613975041989E934F572E5541AB9867021D975041844EA5FE562E5541CAFF03AB359750410007C4BB582E5541AEE712DB5097504192E759A15A2E5541AEE712DB509750413918DED75C2E554151B8226837975041A73748F25A2E55417D874DE6189750412057B20C592E5541BD959DE41297504149F78EAE592E5541E29CC5E30F9750419D0FD1C95A2E5541DE2B88690C9750410FA0785E5C2E5541B01A6E4D08975041B6D0FC945E2E55418231CB59049750415D0181CB602E554100086F22FF9650414C4A471D642E5541D414DA11F4965041BD94F27D6C2E5541FB61FE44EA9650410F8FAF8D742E5541F80E46D6DF965041FD9179AB7E2E55418E88905EE59650412F14D141862E55415D13F502EF965041478F00D9902E5541EDD505DDF7965041A3B13411992E554111BFA8D0FB965041F0123D7E9D2E5541D7679280FE96504153C4333CA22E554137FB03330A975041E730C289962E554107CC640B0D975041695A1EC19B2E5541A738F3580197504108B6E33DA82E55410FA123C5029750414BEF7482AC2E5541C0F91E2405975041F8D63267AB2E5541D5490D75059750417FB7C84CAD2E55415891EEB703975041DDF78190AE2E55415D022C3207975041BC61970BB52E554180EBCE250B975041EB903633B22E5541E853FF910C97504154F9669FB32E5541DABA4AEF08975041A15A6F0CB82E5541650C1E4F0E975041E82CB5F3BF2E5541931D386B12975041E60E30E8C62E554163EE98431597504162815271CF2E554163EE984315975041CF5AC057D42E5541988E75E5159750419403AA07D72E5541B706DB5E169750411CE43FEDD82E55413EBFF91B189750415F1DD131DD2E5541ACDE6336169750417E9536ABDD2E5541E7357A86139750414B13DF14D62E5541C7BD140D13975041F4895F7FD12E55419E45AF9312975041DAC833B4CD2E5541218D90D61097504198672B47C92E5541703495770E97504140DEABB1C42E5541F37B76BA0C9750411CF508BEC02E5541B042E575089750413D8BF342BA2E55419681B9AA04975041A711A9BAB42E5541E528BE4B0297504179008F9EB02E554149F8391500975041748F5124AD2E5541E18F09A9FE965041701E14AAA92E5541C23F1B58FE965041B59DA122A72E55413A5F8572FC965041716410DEA22E55417FDE12EBF996504178F3D2639F2E5541D8AD8EB4F796504188D2833A9C2E5541E964C862F49650417939CF97982E554191DB48CDEF96504141003E53942E5541E639871CEA9650418B36057A8E2E5541E2A0D279E6965041879D50D78A2E554156777642E1965041D1D317FE842E5541AF1E7BE3DE965041C33A635B812E5541662EB0F0DD96504165FAA917802E5541B5D5B491DB9650419529493F7D2E55413ED4CF82D6965041F4AFFEB6772E55413A639208D3965041382F8C2F752E55419B07CD8BC696504190A742F4912E5541287725F7C496504147B77701912E5541B282FC22D1965041B14EF649732E554188E62C17A7965041E638DCB5432E5541012E0E5AA5965041DC10658D432E554118AD4A87869650411546E93B712E554186CCB4A184965041C12DA720702E55416F25014CA3965041C7C0763C432E55414FD512FBA2965041D79F2713402E5541C8F47C15A19650411C1FB58B3D2E554147CB20DE9B965041CD77B0EA3F2E554138326C3B989650415AE708563E2E55415D610B6395965041609E42043B2E55419C295F2D969650415C2D058A372E554163F0CDE89196504138446296332E5541FB879D7C90965041FA5397A3322E5541DC37AF2B90965041650F807E3E2E5541D680757D939650412AB8692E412E5541A651D655969650412090F205412E55418B4AAE56999650411AD9B857442E554157AAD1B498965041EAA91930472E55418C5B772781965041988DCA7E6F2E554107F610D989965041FA663865742E5541C7E7C0DA8F965041411107247C2E5541A2E098DB92965041E4D04DE07A2E554187D970DC959650410D712A827B2E554104928F9997965041B4A1AEB87D2E55413EE9A5E99496504165FAA917802E5541EBD063CE939650418E9A86B9802E55416CFABF059996504135CB0AF0822E5541305DAD81A2965041FB73F49F852E55413DD8DC18AD965041B6F46627882E5541FCAB070FBA96504119A65DE58C2E55410A45BCB1BD9650411F5D9793892E55410FB6F92BC1965041C58D1BCA8B2E5541490D107CBE965041A086F3CA8E2E5541C00EF58AC3965041E3BF840F932E554147EF8A70C596504156502CA4942E5541FEEDF6ACDC96504112E267FC7E2E554147DEC19FDD965041C33A635B812E5541890A97A9D09650412DF64B368D2E554190DF5563C6965041304904A5972E554197A34B4CD4965041E3AEBB3EAB2E55410A34F3E0D596504189DF3F75AD2E55411A02DBE6EA96504175C48487BE2E55415213F502EF9650413B6D6E37C12E55412AA84BC4FF965041A857A5EEAD2E5541717A91AB079750413D8BF342BA2E554137237B5B0A975041564C1F0EBE2E55410030E64AFF9650414F776054C82E5541FFE9E916069750410F691056CE2E5541C90311410C97504102231422D52E5541316C41AD0D9750410794519CD82E554169A5D2F1119750413FCDE2E0DC2E5541FF1E1D7A1797504182067425E12E5541299782F3179750410F9E43B9DF2E5541C12E52871697504193E524FCDD2E55413EE770441897504188BDADD3DD2E5541FA67E3CB1A975041E06EA491E22E5541B5E855531D97504176C077F1E72E55411D5186BF1E975041FDA00DD7E92E5541D31ABF9824975041A7244A7CF62E5541059D162F2C975041552A8D6CEE2E5541EABD65582F975041176239A2ED2E55413ED6A77330975041B36A46B0EF2E5541ACCD9A652E975041B7DB832AF32E5541D1FC398D2B975041FA3C8C97F72E554154441BD02997504149E49038F52E55415AFB547E2697504124B5F110F82E5541A75C5DEB2A975041D3EF6764012F55412BA43E2E299750413108AA7F022F554106000000175CDAF6C4965041D121910EEF2E5541CF54612DC796504119290AD8EC2E55411B2C1C71C896504130B6B36CEE2E55412EE9838BC6965041D7178748FD2E5541963A0E04C4965041B19DB713012F5541175CDAF6C4965041D121910EEF2E55410600000057E47E3616975041D08C510CB82E55417D5E4E6B1297504138DEDB84B52E55414427171C189750415E58ABB9B12E55410603BA2C23975041C1D9F3B7AB2E5541F3455212259750413CCB0125B02E554157E47E3616975041D08C510CB82E554105000000F93B484C33975041F53719F38E2E55413743C1153197504187D3B41A8C2E5541F5313E8641975041B13AAAEF822E5541B72AC5BC43975041159F0EC8852E5541F93B484C33975041F53719F38E2E554105000000B678A194159750417D0D7D667A2E5541D2F270C91197504119A9188E772E5541B65BBD6E1E9750416A8ADD976A2E554119C02147219750416E5A1F126E2E5541B678A194159750417D0D7D667A2E554106000000A977676837975041669DB7F76F2E55415DA0AC243697504106099599702E554110C9F1E034975041B66198DB6B2E55417A234CF34597504122A048F4632E5541321CD32948975041FC2579BF672E5541A977676837975041669DB7F76F2E5541060000000CEDF96814975041912B31DE342E5541E24C1DC7139750412552C3F72F2E55415179431C239750412F7A3A20302E5541D959D90125975041631A17C2302E5541F8A9C75225975041DA1BFCD0352E55410CEDF96814975041912B31DE342E554107000000615C0189F6965041A546ECCB232E554137BC24E7F596504196AD3729202E5541236C3696F59650410FF5186C1E2E5541615C0189F6965041923CFAAE1C2E5541D717EA63029750413E24B8931B2E554100B8C6050397504128B64437222E5541615C0189F6965041A546ECCB232E5541070000008203B5DED7965041A67B1F2F352E554178DB3DB6D79650416E428EEA302E5541626DCA59DE965041C7110AB42E2E554170067FFCE1965041C7110AB42E2E554145481D4FE8965041B2C11B632E2E55414F709477E896504114731221332E55418203B5DED7965041A67B1F2F352E55410A000000CF68CAE1B2965041501025A5292E55418678FFEEB19650412C2782B1252E554107A25B26B79650415C5621D9222E5541A4AA6834B9965041CA758BF3202E554125D4C46BBE965041396D7EE51E2E5541E15437F3C09650417735D2AF1F2E554115F51395C1965041EAC57944212E5541F5A42544C1965041374FF9D9252E55412B8BFE19BB9650412C2782B1252E5541CF68CAE1B2965041501025A5292E55411E000000394EA1D63296504174396FBAA22E554147DA993E25965041BAD6813E992E5541C5B03D0720965041DF052166962E554150CDDD031496504155D2D2118A2E55411C3ECA32FB955041E7DADF1F8C2E55415C4C1A31F595504125A333EA8C2E554186C47FAAF59550416A22C1628A2E554198B0ECBB03965041E269A2A5882E55418142795F0A965041D8412B7D882E5541FCA7DFAD019650418F51608A872E554118DE5589DF9550414CF0571D832E554157A6A953E0955041916FE595802E5541413429611096504151619597862E5541A52B1C530E965041AA301161842E55413FE170F205965041A7DD58F2792E5541FCA7DFAD01965041118C8592742E55418917381900965041A9235526732E5541DADCC1C5F6955041088293756D2E5541157AD449ED9550419CA8258F682E55414A1AB1EBED9550413E686C4B672E55416A9FD29FFF955041171B4818712E55413048BC4F02965041A9235526732E554153315F43069650410BD54BE4772E55414C5CA08910965041B4588889842E5541F5DFDC2E1D965041722CB37F912E5541FA501AA920965041624D02A9942E55417816F5A033965041E258D9D4A02E5541CB2E37BC3496504116F9B576A12E554163C606503396504174396FBAA22E5541394EA1D63296504174396FBAA22E55410D0000001434D815F4955041ED7C4367CA2E554145A97371EA955041EA298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541FF0B61EDF39550412481A148BD2E554148FC2BE0F4955041BC1871DCBB2E55410EA51590F7955041B2F0F9B3BB2E5541BFFD10EFF9955041C740E804BC2E55413C8EB883FB955041BC1871DCBB2E55412BD77ED5FE955041E6B84D7EBC2E55415B061EFDFB955041EA298BF8BF2E55414C6D695AF8955041E472514AC32E5541DE4DFF3FFA955041AA1B3BFAC52E55411434D815F4955041ED7C4367CA2E55410A000000A2D863E4039650417899E363BE2E55413A7033780296504105093CCFBC2E554159E898F10296504192A00B63BB2E554159E898F1029650412A38DBF6B92E5541CC50C95D04965041AD7FBC39B82E554134B9F9C905965041A3574511B82E55414D7A259509965041D71F99DBB82E55414352AE6C09965041DB90D655BC2E55415E59D66B069650416349F512BE2E5541A2D863E4039650417899E363BE2E55410C00000072855A2ADD955041915A0F2FC22E5541783C94D8D9955041A139C005BF2E5541AE226DAED3955041D71F99DBB82E5541013BAFC9D49550415A677A1EB72E554169A3DF35D695504131C79D7CB62E5541E65BFEF2D7955041DDAE5B61B52E5541CB54D6F3DA955041601EB4CCB32E554172855A2ADD955041601EB4CCB32E5541C12C5FCBDA955041DDAE5B61B52E5541FF1C2ABEDB9550411B9F2654B62E554127770A2CE39550414E217EEABD2E554172855A2ADD955041915A0F2FC22E55410600000034CECF30C49550410D02651BDC2E5541794D5DA9C1955041CF119A28DB2E5541B186EEEDC59550415EC7EEC7D22E554158B77224C895504115D723D5D12E554158B77224C8955041B1DF30E3D32E554134CECF30C49550410D02651BDC2E554109000000D4E7721B37965041FF869E76A12E55418810B8D735965041531BC1D4A02E55413C39FD9334965041DDF9F4E19F2E5541FE3184CA369650411A016EAB9D2E55414B093F0E3896504116312C319A2E55416296E8A239965041913F1EC4952E5541248F6FD93B9650410761EAB6962E5541D8B7B4953A965041D929B3679C2E5541D4E7721B37965041FF869E76A12E554107000000575D28BEB2955041F42CB1B60B2F55416FEE922DB19550419E948F980A2F5541879B7A12B2955041426EAF3F082F5541F06E4250B59550411D14E075062F5541DAA63C3BBA95504191AFADC8042F55410A010C05BC9550419E781223082F5541575D28BEB2955041F42CB1B60B2F5541050000009749C13CBB9550412D4E2750002F554136B19F1EBA95504130F703BBFB2E5541B9163111C4955041060F76B6F82E5541B3A4EF4BC59550415651D384FD2E55419749C13CBB9550412D4E2750002F55410E000000D82C74E694955041DCEAE24CEB2E55411E6FD1B499955041BECBB9A2EB2E55415604479E9D955041EF090CF7EA2E5541EAA31F6BA19550411AD61C86EB2E5541EAA31F6BA1955041A63A4F33ED2E5541ACB8E531A1955041708ABB19EF2E5541AC9C68BC9E9550410F0E1771F02E55418CB4DAB79B955041C622DD37F02E5541F3A2C02599955041F1EEEDC6F02E5541DBF5D8409895504147870FE5F12E55415A91A69396955041BB3E5AADF22E55416575291E94955041726F9DE9F42E5541779452C8939550419B56CCA8EF2E5541D82C74E694955041DCEAE24CEB2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3326680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -32  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+010600000001000000010300000001000000190000007E7BAC3032945041C8D4FE21C62D55410BC4C22E32945041DD816E02C62D5541392FDE9634945041A9B082AEC42D5541CD594A8C34945041A613856BC42D5541C6F01EC12D945041B7052E82C02D55414C3D62A219945041C69EE041D52D5541E70573A8089450410E45E686DF2D5541579CE6D7F693504141529D60E92D5541C591A6E5EA935041B347C1C2F12D55419425A32DDB9350411C3DE524FA2D5541848CC9FBD6935041617C5338F62D5541623B023ED59350411A5C264EFA2D55411541452DD49350412DE10124FE2D55411D5A8B48D493504158B1AF4B022E55414BF02FECD49350414DD272B4052E5541FEB5A867D6935041F17F6133092E5541C615D9C0E79350411B2064DEFC2D5541F781DC78F793504129FB198DF12D5541F064BF860E945041CD3FF8B7E32D5541A34250711594504104AC971BDF2D5541C1D339261C9450413A18377FDA2D5541B5993799219450416684D6E2D52D5541B3F883772794504112A4CE10D12D5541878CE4132C945041C9C3C63ECC2D55417E7BAC3032945041C8D4FE21C62D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3435573
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -33  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+0106000000010000000103000000030000003400000070007D40E695504146EA0866152F5541AA73A00BE6955041E901315B152F55414709589AE395504144F94D55162F55417D37808BE29550414A6037C0162F554183DBFB8CDD9550413B706DCA182F5541821DE336DD95504135C1D3D2182F55414ADEE5FED995504173DC0397192F5541E5A5914DD39550416A8A1274182F55413626FEB3D195504110A45C3B182F554191001426D095504144768FE6172F55415EA54808B59550418597E8E9122F554197E274B78295504116EB2578092F5541C99AB85D7C95504116EB2578092F55411EF4374572955041E26393480A2F55416EAF191A5D955041CCD95F6C0B2F554147530ED85C9550413A5E003B0B2F5541DBE788AC5B955041B0CF35B80C2F55414A11153A5B9550418D3ECB480E2F554174F9A23E5E9550413271CC0F212F5541269C27405F955041907C8E38292F55414CF6F60961955041C81104222D2F55410B62E06565955041FB343846322F5541813F3AF95F9550419DB222182F2F5541E5362DEB5D955041B891D3EE2B2F5541BC9650495D955041B3209674282F554187F673A75C9550415C9716DF232F554134DE318C5B9550414965AD991C2F5541EBC5EF705A955041EC6AF089142F55418E85362D59955041EE8875950D2F5541ADFD9BA65995504128E08BE50A2F5541D7760DF95A955041FD5AE9D4092F5541D6C37D544C955041BEC896E2FE2E55416DE75D5A4C955041C1120470FE2E5541D3D36E454895504197EB2546F62E5541F373810347955041850B75B1F62E55414E7408A9439550411D4B8CE2FA2E5541E8B4B4CA3D95504153AA6BD9022F55414A95EC043A95504185E9FB640A2F55411035781D3C9550410469B16C0F2F55418EB42D25419550416928054B152F55412DD4F5EA44955041F9876BE7192F554172F3360B4C95504145875D9C202F554175D252AF5595504169068CFE282F5541B311E33A5D955041E78541062E2F55412D9003526C9550410425BFD3362F5541DE4E49E578955041DCA4FB80382F5541F8EC31C28B9550417BC4C3463C2F55419A85AA46D4955041040346874A2F5541408523A1D79550412C8309DA482F5541F8644D90DA9550419F43F2A8442F554103241AC9E3955041E0C709BE1A2F554170007D40E695504146EA0866152F55410A0000002BAEA037AE955041B0BC1435362F5541FB7E0110B1955041D70939682C2F5541EB9F5039B495504179C97F242B2F554192D0D46FB695504184F1F64C2B2F554119B16A55B895504101829EE12C2F554168586FF6B59550414854E4C8342F55419CF84B98B6955041B0BC1435362F55417DA85D47B6955041389DAA1A382F55414F97432BB2955041A005DB86392F55412BAEA037AE955041B0BC1435362F55410E000000847D1C01AC9550413D1FB165232F5541DE4C98CAA9955041DFDEF721222F55419F5CCDD7A895504138AE73EB1F2F5541C9FCA979A9955041D045437F1E2F5541FD9C861BAA955041538D24C21C2F55415BDD3F5FAB955041F54C6B7E1B2F5541D8955E1CAD955041AC5CA08B1A2F5541C7B6AD45B0955041636CD598192F554198870E1EB3955041062C1C55182F5541530881A5B5955041C73B5162172F5541BB70B111B7955041DC8B3FB3172F5541FA3805DCB79550413ACCF8F6182F5541DAE8168BB7955041CBD405051B2F5541847D1C01AC9550413D1FB165232F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 403368
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -33  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009425A32DDB9350411C3DE524FA2D5541868CC9FBD69350415F7C5338F62D5541643B023ED5935041155C264EFA2D55411241452DD49350412CE10124FE2D55411B5A8B48D493504153B1AF4B022E554148F02FECD493504150D272B4052E554102B6A867D6935041ED7F6133092E5541F781DC78F793504129FB198DF12D5541F064BF860E945041CD3FF8B7E32D5541C1D339261C9450413A18377FDA2D5541B5993799219450416684D6E2D52D5541B3F883772794504112A4CE10D12D5541878CE4132C945041C9C3C63ECC2D55410AC4C22E32945041DE816E02C62D5541236DA79134945041D8387D8DC42D5541CB594A8C34945041A613856BC42D5541C6F01EC12D945041B7052E82C02D55414C3D62A219945041C69EE041D52D5541E70573A8089450410E45E686DF2D5541579CE6D7F693504141529D60E92D5541C591A6E5EA935041B347C1C2F12D5541C820D5C5DE9350417E94624FF82D5541C820D5C5DE935041F050FD60F82D55413C3DFF38DE9350414486CD95F82D55419425A32DDB9350411C3DE524FA2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 403424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -34  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D3D36E454895504197EB2546F62E5541F373810347955041850B75B1F62E5541E8B4B4CA3D95504153AA6BD9022F55414A95EC043A95504185E9FB640A2F55411035781D3C9550410469B16C0F2F55418EB42D25419550416928054B152F55412DD4F5EA44955041F9876BE7192F554172F3360B4C95504145875D9C202F554175D252AF5595504169068CFE282F5541B311E33A5D955041E78541062E2F5541813F3AF95F9550419DB222182F2F5541E5362DEB5D955041B891D3EE2B2F5541BC9650495D955041B3209674282F554187F673A75C9550415C9716DF232F554134DE318C5B9550414965AD991C2F55418E85362D59955041EE8875950D2F5541ADFD9BA65995504128E08BE50A2F5541D6760DF95A955041F85AE9D4092F5541DBC37D544C955041BAC896E2FE2E55414D9CE9564C9550410DCC5FB3FE2E55414AB364004B95504176AA11BCFB2E5541D3D36E454895504197EB2546F62E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 406827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541CEBB3C484F9750418EEBDCB74C2E5541509B25B04A975041225B7FF9432E55411DAACAF24D975041B76FBE61432E55416834EAA64D9750415E14B7A33E2E55410A7574F249975041CB63E6313E2E5541622BDF8946975041B280E8ED2A2E5541F8D60A8DFB9650419894DF8C102E554170497AE1F0965041A15CBC790E2E55419469ED94E89650417B97AC9F0E2E5541535D7180D696504193307196112E5541DA268BED9E9650412786DE2E1A2E554105312FA663965041B477DDD0232E5541C1E3846148965041ABE723F7272E55410EE33C982E96504174925A432C2E55411661E0371C965041D6B53EEE2E2E554152757BBB0E965041DF7D1BDB2C2E55415FFC29780396504182BEA526292E5541AEEAB7220296504194F3FB262D2E5541BCBB9F2C07965041CDED6101312E55417BF95C6505965041E48626F8332E554184C1395203965041F2570E02392E5541805DCB5B04965041A9728B74412E55413F4025BB0A96504147F443F0462E5541AB24B9CF1C96504180AD8D6C542E5541112C60EB1396504180AD8D6C542E554168A516EC1B965041AB7C82D55B2E554113072D1A0D9650418F163BFD6F2E5541049E7F89F1955041CB4EEDAF5F2E55418A77917FEC9550417B1C27E0682E5541793317C0D7955041AB7C82D55B2E5541C8AF53EBA8955041903B7E87432E5541EE122552989550411D5C80AE4F2E5541E23ACE949B9550411B81B37F562E5541B2DA729FA89550412EA0FA6D642E5541E5CB2468BA955041636C79656F2E5541793317C0D795504105878FA9822E55416D5BC002DB955041B454C9D98B2E5541F25905CADC9550414E4D22BE942E55414F895528D7955041A3C6D8BE9C2E5541152C70A4E0955041043D194EA82E554143B1FE6ADA955041678E260CAD2E554124BA60BFCF95504149978860A22E5541870B6E7DD4955041556FDF1D9F2E55419FBB1BF8CD95504112F03C3A9E2E5541119B19D1C19550410618E67CA12E5541BA2163D0B99550411CEDC6C8A12E554100579F11AD955041CE95CD27A42E55416F80038DAE955041FC1A5CEE9D2E554118074D8CA6955041771C17279C2E5541099E9FFB8A955041C74EDDF6922E554132B70AC06C95504172B0F324842E55411CE229746C9550413DE4742D792E5541FC0FBF99689550419813C58B732E55411EBDF6A265955041FD1A6CA76A2E5541AF93922764955041AA574F04552E554197E3E4AC6A955041083D39C0412E5541AA022C9B78955041504D42302E2E5541E7F067F28D95504142BF61CE0B2E5541810E04616A9550413C78719DFA2D5541C568737364955041F81D028B002E5541234E5D2F519550414850C85AF72D5541CCD4A62E499550413356B43DF02D5541EF81DE37469550414850C85AF72D5541A4E07EF43A9550414850C85AF72D5541BF46C6CC269550411BA606C3F62D55414620D8C221955041ABA1D518FC2D5541D0AF83160F955041021B8C19042E55419DBED14DFD945041A5106F8C102E5541C146D685F3945041333171B31C2E5541B9241926E9945041B82FB67A1E2E55414AFBB4AAE79450411B81C338232E5541FAC8EEDAF0945041D8012155222E5541C146D685F3945041B654E94B252E554168F25256F294504192CCE4132F2E554137B72A3206955041A7C6F830362E5541F25CBB1F0C955041EDFB3472292E55411B51E3591A95504192CCE4132F2E5541DF1831A72A955041389D94B5342E5541D08A408C3B9550412AEA70C93E2E5541A4E07EF43A9550416191BCEF422E5541DE3D647831955041833EF4F83F2E5541189B49FC27955041CA29BADE582E55411A76162B2195504194826EB8542E5541AE024C0D12955041B70A73F04A2E55414D8C0B7E06955041AFE8B590402E554167178627F994504116F05CAC372E5541E7A9A7ECE2945041EDFB3472292E55419852AE4BE59450411B81C338232E5541CDD4C6A0E2945041DBDCED831B2E55415689A5C5D69450411F375D96152E5541840E348CD094504157B975EB122E55417A11AAFDCC945041C09BE935032E554115E5CF10CF9450415E25A9A6F72D55414C8C1B37D394504197A7C1FBF42D5541A074713FCD94504110DE9846F42D5541C5475EE3B3945041FA86B11EE82D55415AF3EDA2A5945041FCC87CB6F02D5541C66C7C378294504163E322C1DB2D5541CE89FD7D7F94504165426F9FE12D55418EA190F5809450412FD6CF3BE62D554169CEA3519A9450416242D3F3F52D55418F5F8D06A1945041763A6E3DFC2D554121C9B5829E945041122064DEFC2D554182C676F27794504181578B2FE52D55413DC124CF679450418815C097DC2D55415877F48065945041197FE813DA2D5541D9A61A7068945041984FC224D72D55416810A7407A945041D3D84623E42D554197BE113C7E945041369404A4DD2D5541A95760A77E9450413435B8C5D72D55416810A7407A945041E871313AD02D5541AEB64831709450414B2DEFBAC92D5541D18999296B9450411C7F84BFC52D55410855856B6C945041FF69682FC22D5541C04F979C7094504136355471C32D5541C2AEE37A76945041A5CB2BF5C52D5541702D288777945041DA37CB58C12D55413F2071AD6D945041223DB927BD2D554141200D59599450414F8CD744BB2D5541EA816CCA48945041A10D9338BA2D55419F1D321D47945041785F283DB62D55416035C59448945041076A04DBAD2D55413B0328BE479450417A5FC4E8A12D5541A6DB66853E945041724243A2A42D554102D9EF9D40945041A1F0AD9DA82D55411FEE0B2E449450413E35F01CAF2D5541706FC7214394504113451EDEB62D554175CEAFAB34945041EAB3987DC42D5541C5F01EC12D945041BB052E82C02D55414D3D62A219945041CB9EE041D52D5541E30573A8089450410F45E686DF2D5541559CE6D7F69350413F529D60E92D5541C891A6E5EA935041B047C1C2F12D55419525A32DDB935041203DE524FA2D5541F8E060AED49350419591F110F42D554141459B5BD69350414B2DB763F22D554139281A15D993504137351C1AEC2D554193C6564FD59350418F740C76E22D5541C932F6B2D0935041544A38AAEF2D55418EA971B4C3935041EC71958EE42D554127301B77BE9350413C9404A4DD2D5541635AEF42B1935041D4BB6188D22D55417DB17216A9935041FD4CE7E8C42D55418EEB74A3A3935041D91A4A12C42D5541D232CAB593935041B1E81090D72D5541C29917F67E9350414FCEA2DCC32D5541C29917F67E9350410E87E975BF2D5541D9914EEB70935041F6D0B56FAD2D5541A684FB657B93504178A12B2C962D554120F6ECEC869350411EA43EBF7F2D554120F6ECEC8693504166A92C8E7B2D55415103A4C690935041B92AE8817A2D5541B77CFA0396935041043072FC612D55410B5D02D69A935041E979A24A642D5541D84FAF50A5935041D1C36E44522D5541506254F9AA9350417367994D4A2D554152C1A0D7B09350413EFBF9E94E2D55419108BE92C9935041B7AEEE5F3A2D5541065DCA7EC3935041B54FA281342D5541350B357AC7935041EBBB41E52F2D5541091B633BCF935041CEA625552C2D554155DEE9C6D6935041A7153CA0252D554191C6BAA3E99350418B5FD0423C2D5541DBCB441ED19350412A035FA0482D55413B8766F3DE93504184004C0D5F2D5541BE15D9C0E7935041F037D7B25B2D55419B4288C8EC935041AFF01D4C572D554114552D71F29350414AD613ED572D5541533D9AF9F0935041BBCB374F602D5541B9B6F036F69350415ECEAE365E2D55418C67D219F8935041EA79A24A642D5541F99E5DBFF4935041B66C4FC56E2D554112F6E092EC93504170C6ADD4782D554145033418E2935041D89E50F0832D554129EE1788DE935041B5CBFFF7882D5541589C8283E2935041D2E01B888C2D554135C9318BE7935041EA964F8E9E2D55417DCE1F5AE393504106AC6B1EA22D5541B4990B9CE49350412D3D55D3A82D5541A35F090FEA93504123C187AEA52D55419B4288C8EC935041526FF2A9A92D5541533D9AF9F09350418DF876A8B62D5541F3E02857FD93504166678DF3AF2D5541756F9B2406945041AE6C7BC2AB2D55416FB166BC0E9450416D25C25BA72D5541B2576C01199450410FC9EC649F2D55418F841B091E945041D13FCCBAA62D5541A21D6A741E945041C564B2B79D2D5541C64F074B1F9450416F255E07932D55419900E92D21945041887CE1DA8A2D554191E367E723945041ADAE7EB18B2D554187679AC220945041FAD0511B992D554175CE4B57209450412D3D55D3A82D5541A21D6A741E94504166678DF3AF2D55418F841B091E9450419F91C513B72D55415A187CA522945041E796B3E2B22D55415C77C88328945041A54FFA7BAE2D5541DE053B5131945041F6716991A72D5541742DFC893A9450413D775760A32D554192A164F84394504133FB893BA02D554167B192B94B94504173E3F6C39E2D55419E7C7EFB4C945041A84F96279A2D5541E6816CCA48945041D59EB444982D5541483D2A4B429450419ED3C802972D55415FBE0A903A945041BE13960B912D554141FA1C2C2A9450417897CD8B822D5541DB47A29425945041B5CBFFF7882D55410897C0B123945041E21A1E15872D554187679AC220945041861D95FC842D55410897C0B1239450418E3A1643822D5541E47F77E527945041B6C611947F2D55418170CD181894504160F515FA6A2D55410EF6A83B1594504149D677416C2D55414AA9769E0D9450415500C414612D55413C7C9F55E9935041CE4C743E2E2D5541CCB8E5B0A99350419AAC197BE52C55416DFB3E1097935041F33F801AC72C55416020250D8E93504124EE86C1B62C5541657F0D977F935041AEDB7DC49C2C5541998C601C75935041854AF863AA2C554132130ADF6F9350412D0B0808B42C55414DC9D9906D93504180EB0FDAB82C55410EE16C086F93504114B48434BC2C5541687FA9426B935041A9DB456DC52C55415E03DC1D68935041E464CA6BD22C55416E3DDEAA6293504152FBA1EFD42C55412DF624445E935041D58914BDDD2C5541FE47BA485A935041D947AD79E92C5541C71D8228539350419E7C258CFC2C554160A42BEB4D93504198BEF023052D554154C911E8449350411230E2AA102D554101E90916409350419F3A229D1C2D5541E6323A6442935041CEE88C98202D5541779C62E03F9350411AAC1324282D5541B784CF683E9350419C3A86F1302D5541650314753F9350418C008464362D55412E3828333E93504117AC77783C2D5541024856F445935041C52ABC843D2D55419E2D4C9546935041FCF5A7C63E2D55415F45DF0C48935041E39E24F3462D55418DF349084C935041CCA6EDFD542D554133550DCE4F9350418F1DCD535C2D55413DD1DAF2529350419D5733356B2D5541241B0B4155935041CFC336ED7A2D5541B884CF683E935041810014B6872D5541AE0802443B935041A891FD6A8E2D5541A48C341F389350414DF3C030922D55418777188F3493504176E3F6C39E2D5541B4C636AC3293504182BE10C7A72D5541EBF0D2204E935041ADAEE205A02D5541C81D82285393504111289D97B92D5541E4329EB8569350418B998E1EC52D554178FB12135A935041C4C3C63ECC2D5541713DDEAA629350417E1D254ED62D55414E6A8DB267935041A5AE0E03DD2D554125D9075275935041C581C34FEC2D55414E288AC3879350411D2064DEFC2D554166DEBDC999935041476FE64F0F2E5541C2DB46E29B935041AC89F0AE0E2E554160208961A2935041875753D80D2E5541D8322E0AA89350413DF3182B0C2E554124F6B495AF935041AA2AA4D0082E554182528A8CB7935041F22F929F042E554159C1042CC5935041A66C0B14FD2D5541DB4F77F9CD9350412D5A666BF72D55419C670A71CF935041253DE524FA2D55416DB99F75CB9350410A871573FC2D55411F97CC0BBE935041DF964334042E55415D20EDB5B693504185F806FA072E554163DE211EAE935041D9D80ECC0C2E554120381CD9A39350416CA18326102E5541DD911694999350413F526509122E5541486A555B909350413F526509122E5541B3429422879350417F3AD291102E55419CEBACFA7A9350413DF3182B0C2E5541BD5FB114709350410E45AE2F082E55413972F268619350411F7FB0BC022E55411AFE89FA5793504154EB4F20FE2D55417DB9477B519350419CF03DEFF92D554183777CE348935041755F543AF32D554183777CE348935041C38127A4002E5541F0AE078945935041088779C7102E5541CF3A036F5093504151EBB374122E554193102FA35D935041648402E0122E5541A14A95846C935041AEE83C8D142E55415387724D799350416E00D004162E554169DE597585935041CAFD581D182E55411ABCEA5F8C935041777C9D29192E55415B03A4C690935041219CF9AB282E5541CA997B4A9393504112C143FD332E5541269704639593504149EBDF714F2E554153E6228093935041A747B568572E554113FEB5F7949350417AF8964B592E55419FA9A90B9B9350415F42C7995B2E5541E14FAF50A5935041458CF7E75D2E554186B17216A9935041B422CF6B602E5541D015ADC3AA9350415A849231642E5541DCF0C6C6B393504187D3B04E622E5541151BFFE6BA93504122B9A6EF622E55417B945524C0935041996CFFB9622E554161DE8572C2935041B6811B4A662E5541F4A6FACCC5935041AD649A03692E5541235565C8C9935041A3E8CCDE652E55411C973060D2935041EBEDBAAD612E554166FB6A0DD49350413B102AC35A2E554195A9D508D89350412877DB575A2E554143281A15D993504155C6F974582E55419F25A32DDB9350415C842EDD4F2E554172D68410DD935041488C9393492E554133EE1788DE935041CBBB552E382E55419E25A32DDB935041DF544045242E55414A459B5BD6935041BBC3F23B092E5541C615D9C0E79350411C2064DEFC2D5541F981DC78F79350412BFB198DF12D5541EF64BF860E945041CB3FF8B7E32D55419F4250711594504101AC971BDF2D5541C6D339261C9450413618377FDA2D5541B5993799219450416B84D6E2D52D5541B7F883772794504117A4CE10D12D5541828CE4132C945041C4C3C63ECC2D554196847F5D32945041AFCB2BF5C52D55414C7FF5E24A945041DA1AAE66D82D55414162D8F061945041DF379301EA2D55412C6A3DA75B945041BD644209EF2D5541CE0D68B053945041A40DBF35F72D5541F281087634945041590835BB0F2E55411A5591C506945041369494F52E2E5541EBA626CA02945041C13F8809352E55417D104F46009450410C030F953C2E5541D7AE8B80FC9350412B777703462E55416FD6E864F1935041F8C8705C562E5541095D9227EC93504185D3B04E622E5541FFE0C402E99350418991490B6E2E5541904AED7EE6935041F169EC26792E55412055C91CDE935041C7D866C6862E5541603D36A5DC935041F686D1C18A2E5541BADB72DFD8935041E4ED82568A2E55414B459B5BD69350416D3A2A8C8A2E5541D5914291D6935041139CED518E2E55415EDEE9C6D693504194CB1341912E5541BADB72DFD893504115FB3930942E5541D6F08E6FDC935041CDF54B61982E5541BC3ABFBDDE935041EA0A68F19B2E55412AD19641E1935041D9D06564A12E5541101BC78FE3935041AEE09325A92E55417435D1EEE29350412F10BA14AC2E5541BE990B9CE49350419DA69198AE2E5541354D6466E49350410320E8D5B32E5541516280F6E79350414D842283B52E55414945FFAFEA9350414FE36E61BB2E55410A5D9227EC935041BE7946E5BD2E554153C1CCD4ED935041115A4EB7C22E5541F7C343BCEB9350419C0542CBC82E5541ED477697E8935041F0E5499DCD2E5541C815D9C0E79350417115708CD02E5541241362D9E99350417115708CD02E554178F369ABEE935041F902CBE3CA2E554167B9671EF4935041653A5689C72E5541F0050F54F4935041AD3F4458C32E55418CEB04F5F49350413C4A20F6BA2E55417BB10268FA935041F9A31AB1B02E5541E8A626CA02945041B69EC88DA02E554173521ADE08945041BD5CFDF5972E5541507FC9E50D9450418432C5D5902E5541818C80BF17945041920D7B84852E554127EE43851B945041C71ACE097B2E55415EB92FC71C945041A64719BD6B2E5541C43286042294504190F031955F2E5541A15F350C27945041783AFE8E4D2E55419BA100A42F945041A32AD0CD452E55410B972406389450416A0098AD3E2E554180A9C9AE3D9450419F0DEB32342E55416C6F2B765794504194D320FD102E5541D6A61A7068945041FBEDC607FC2D5541CE8999296B9450415F08D166FB2D55418FA12CA16C945041A96C0B14FD2D55415418A8A25F945041B1E83C8D142E554114303B1A61945041CDFD581D182E55418D42E0C2669450418E15EC94192E5541A03A7B0C6D94504121DE60EF1C2E55413620395696945041B047EDBF2E2E55417525EFCDBA9450418E3235843F2E554103EE2BD1E6945041CB1A0661522E554157CE33A3EB945041857464705C2E554176429C11F5945041C55CD1F85A2E55411F62F89304955041D39637DA692E5541D19ED55C119550412BD62736602E5541F82FBF1118955041F2ABEF15592E554127DE290D1C95504173DB15055C2E55415C4AC97017955041ECEDBAAD612E5541A2F06A610D9550412F94C0F26B2E554129DEC5B807955041C25C354D6F2E554198749D3C0A9550415625AAA7722E5541D9BB56A30E955041C4BB812B752E5541817C664718955041DF7151DD722E5541FA8E0BF01D95504193AECA516B2E5541B2891D212295504193AECA516B2E55414552927B25955041B0C3E6E16E2E55414552927B2595504168BEF812732E55418D57804A21955041749912167C2E55414C10C7E31C955041C61ACE097B2E55412FFBAA5319955041D0969B2E7E2E5541E59670A61795504176F85EF4812E554135B9DFBB10955041C1BBE57F892E55416208FED80E95504132B109E2912E5541EC54A50E0F955041F427E937992E5541BDA63A130B9550412535A011A32E55414594956A0595504103624F19A82E5541C72208380E955041C7377B4DB52E55410F28F6060A95504189AE5AA3BC2E55414494956A0595504175B6BF59B62E55416F8467A9FD9450416EF88AF1BE2E5541B52A099AF3945041E9697C78CA2E55419FD32172E7945041ABE05BCED12E554114282E5EE19450419DA6F5ECC22E5541C864A7D2D9945041B49E2CE2B42E5541E1BB2AA6D1945041E64C3389A42E554172255322CF9450414A673DE8A32E5541CDC38F5CCB94504130B16D36A62E554102302FC0C6945041962AC473AB2E55414A351D8FC2945041BDBBAD28B22E5541923A0B5EBE9450413F4A20F6BA2E5541B8CBF412C594504152E36E61BB2E554139FB1A02C8945041372D9FAFBD2E55415E2DB8D8C894504177150C38BC2E5541A074713FCD94504189AE5AA3BC2E5541048F7B9ECC945041BABB117DC62E5541586F8370D1945041663A5689C72E554173255322CF945041D98EC6C9D52E5541D0812819D7945041083D31C5D92E554176E3EBDEDA9450416EB68702DF2E55415E2DB8D8C89450416BB6EB56F32E5541188716E8D2945041D12F4294F82E5541A074713FCD9450417B4F9E16082F55413E77B0CFF3945041CAD0BD5E1B2F5541E4D87395F7945041396795E21D2F5541A64F53EBFE9450415D9932B91E2F5541790035CE009550419305D21C1A2F5541A8AE9FC904955041B479D6360F2F554121C144720A955041163594B7082F554119A4C32B0D955041675703CD012F55417DBECD8A0C955041DBAB0FB9FB2E554112E68EC315955041591D9DEBF22E5541B2891D21229550411C35CC0EE02E5541A14F1B9427955041F6A3E259D92E5541ED12A21F2F9550418ECB3F3ECE2E554138D628AB369550414B253AF9C32E5541036A89473B955041B39E2CE2B42E5541A9CB4C0D3F955041CCF5AFB5AC2E554136D68CFF4A95504187F05D929C2E5541B864FFCC53955041605F74DD952E55419F0D7CF95B955041F069507B8D2E5541C69E65AE62955041386F3E4A892E5541C0E030466B955041C9D866C6862E5541D4D8CB8F71955041386F3E4A892E55413235A1867995504179B6F7B08D2E55417EF827128195504196CB1341912E554109A41B26879550410462EBC4932E554136F33943859550410EDEB8E9962E5541F24C34FE7A9550417199766A902E554167A140EA74955041F069507B8D2E5541265A87837095504181D378F78A2E5541FFC89DCE69955041386F3E4A892E5541197F6D80679550416F3A2A8C8A2E55415967DA086695504154845ADA8C2E5541757CF69869955041D5B380C98F2E554177DB42776F955041A86462AC912E55418157109C72955041B2E02FD1942E5541D537186E7795504121770755972E554121FB9EF97E955041EB0A68F19B2E5541FE274E0184955041BEBB49D49D2E554164A1A43E89955041D154983F9E2E5541E5D0CA2D8C955041B69EC88DA02E55419DCBDC5E90955041A564C600A62E5541707CBE4192955041F944CED2AA2E5541CA1AFB7B8E955041A7C312DFAB2E55413F6F076888955041F944CED2AA2E554107A41B26879550419FA69198AE2E55413E6F0768889550418E6C8F0BB42E55411120E94A8A955041B5FD78C0BA2E5541B781AC108E955041C9F5130AC12E5541AF642BCA90955041306F6A47C62E5541FF869ADF899550418C6CF35FC82E55419FCB780A7C95504129B135DFCE2E5541DFB3E5927A9550417B32F1D2CD2E5541142085F675955041560054FCCC2E5541498C245A71955041F2E5499DCD2E55416442F40B6F9550413C4A844ACF2E5541A52A61946D9550417574BC6AD62E55419BAE936F6A9550412B1082BDD42E55417E9977DF66955041870D0BD6D62E554134353D32659550419289D8FAD92E5541F3ED83CB609550410020B07EDC2E55414751FA6B61955041F8EDD6CCDE2E554110F1858463955041C28D62E5E02E554110F1858463955041756D8CD4E32E55413191984262955041138D549AE72E55419371D07C5E95504108ADA305E82E55410B126AE059955041BC8CCDF4EA2E55419371D07C5E955041658C464FEE2E5541EA7157225B955041F7CB5D80F22E5541AF32C796539550416A6B62F3F72E5541681386764C955041BB6A54A8FE2E5541D5D36E454895504195EB2546F62E5541F6738103479550418A0B75B1F62E55414D7408A9439550411D4B8CE2FA2E5541E6B4B4CA3D9550414EAA6BD9022F55414895EC043A95504189E9FB640A2F55411235781D3C9550410669B16C0F2F55418FB42D25419550416E28054B152F55412DD4F5EA44955041F6876BE7192F554173F3360B4C95504147875D9C202F554178D252AF559550416D068CFE282F5541B411E33A5D955041EA8541062E2F55412B9003526C9550410425BFD3362F5541E34E49E578955041D9A4FB80382F5541F8EC31C28B95504177C4C3463C2F55419885AA46D4955041030346874A2F5541418523A1D79550412F8309DA482F5541F5644D90DA9550419C43F2A8442F554104241AC9E3955041E0C709BE1A2F5541C3E3F44CE69550416E28054B152F55414063AA54EB9550411C2913960E2F55410F04CB5DE3955041C049704C082F554156230C7EEA955041078B2AB9FB2E55410903366DED955041E7EA17FBFC2E554191629C09F2955041BB6A54A8FE2E554119C202A6F6955041078B2AB9FB2E554160E143C6FD9550418A0B75B1F62E55416BC1F45AFD95504102AC0E15F22E5541CB7C22240296504159F27632E62E554111A3D3E102965041B50C50C0E12E5541B9EC684A069650416115B7F8DB2E5541772A26830496504140B41515DB2E5541F04132FE01965041A73B68B6DC2E554169593E79FF95504100976F74E12E5541EB3827E1FA955041C841A6C0E52E5541F40004CEF89550418BE3D1EFE22E5541840C3819F1955041667925EFDA2E5541BC6101CDEC955041996A80ACD72E55410188B28AED95504157A83DE5D52E554130BA3B78F3955041529F32C8CE2E5541E7D4B8EAFB95504128D117D1C72E5541041C25250E965041C96C05F6BB2E55414F4BE1FF1596504100C2CEA9B72E554159B85A131C9650419E9EEAFEB42E55410102F07B1F96504175756C2EB62E5541B677D0C71F9650416749214BB92E5541C8078AA11B965041EE3115D0BB2E55417410F1D915965041262C7BAABF2E5541D68E385E10965041149CC1D0C32E554178CFC2A90C9650414C9627ABC72E55415CD28FBC0A9650413E6ADCC7CA2E5541041C25250E96504119A5CCEDCA2E5541823C3CBD12965041010C08F7C72E554187A0AAB3119650415FCB7DABCB2E5541663F09D01096504107151314CF2E5541ED27FD5413965041C552D04CCD2E5541F794766819965041BCE55639C72E55411DFF226921965041B278DD25C12E554114DCE2A22B965041751A0955BE2E554106B097BF2E96504183465438BB2E5541DD8619EF2F965041BA9B1DECB62E5541CFFF6A323B96504166FFE7FDA82E55411EEEF8DC39965041243DA536A72E554193A1966138965041F6AFB86FA92E55413A468FA333965041BE5AEFBBAD2E55419BC4D6272E9650419995DFE1AD2E5541CEB531E52A96504182FC1AEBAA2E5541271139A32F96504129A1132DA62E5541101D11D33496504161F6DCE0A12E5541CFFF6A323B96504199F042BBA52E554198AAA17E3F965041D54E178CA82E55410E03DC2946965041BDF680C5AE2E554195EBCFAE489650412D46B053AE2E5541912CFEDE5196504169FFE7FDA82E55418D6D2C0F5B9650417C8FA1D7A42E554118BA8E8A5C965041772B33E1A52E5541C56792E95E965041A65DBCCEAB2E55415A7CD1515E96504161DCA737B32E55417679043F60965041AB66C7EBB22E5541062AD5B06096504178756C2EB62E55418D12C93563965041D1D073ECBA2E5541278B769461965041E405CAECBE2E55417F41E12B5E9650414FF18A84BF2E55418D6D2C0F5B965041DB3DEDFFC02E554183A54F225D965041D6D97E09C22E5541195F2BB164965041B1146F2FC22E5541A0471F366796504138FD62B4C42E55417B820F5C679650412AD117D1C72E554156BDFF81679650417EC8B098CD2E55419CE3B03F6896504163701AD2D32E5541AAB498496D965041DC2CC373D92E55415BC60A9F6E9650410B5F4C61DF2E5541808B1A796E965041F46A2491E42E5541648EE78B6C9650416E27CD32EA2E55419F884D6670965041130DF4A4EE2E554196C0707972965041FC18CCD4F32E55418DF8938C74965041C5689F47002F5541673384B274965041F9A333520D2F55411845F60776965041F2CA2CD9272F5541220DD3F473965041A92FE398402F55412D391ED87096504112B7353A422F55414991B49E6A965041D6FDFD8F472F55411A5F2BB1649650410A94F5734C2F5541993E141960965041E76A77A34D2F55411615F263549650418FB40C0C512F55417CF7A7DE4D965041D5DABDC9512F55415F55D8CA439650411B016F87522F5541AE9EC94E3A96504186EC2F1F532F55411DEEF8DC39965041C34A04F0552F554134E220AD349650419D85F415562F55415E0B9F7D339650415CC3B14E542F5541CE5ACE0B33965041A74DD102542F5541F27A41BF2A965041EC7382C0542F5541E90DC8AB24965041B9822703582F55415DC1653023965041200A7AA4592F55416125D426229650417401136C5F2F55410002F07B1F9650413848DBC1642F5541BE3FADB41D9650415EB287C26C2F5541BADB3EBE1E9650418880A2B9732F55416689421D21965041B34EBDB07A2F554154F988432596504151D0752C802F55419F28451E2D96504110B3CF8B862F554150DF539A36965041CB31BBF48D2F5541CA9BFC3B3C965041737B505D912F5541192F270D43965041A163A0FD862F55415C8FC2454696504152B81EA5882F5541CDCCCCCC4F9650417B14AE078E2F55415C8FC2F5519650419A9999998B2F55416666667659965041E17A14FE8F2F554185EB5148589650417B14AEB7912F5541A4703D0A6C96504185EB51C89C2F55411F85EBF16B9650410AD7A3F09D2F5541C3F5289C7D965041F6285CDFA72F5541A0A656BD81965041B03EF1F6A52F554194CEFFFF84965041214322A1A02F554160B80AAD9F965041A81C34979B2F554194A9BC75B19650415BA00725972F5541F16963A7CA96504195FDECA88D2F5541EEB3C949D89650414981C036892F55414177E6ECED96504161316EB1822F5541071A0169F796504114B5413F7E2F5541AB0FE4DB0397504185B972E9782F55417BAF88E6109750415AEA7D80712F5541F91C6721279750415CA017DE632F5541023F2481319750416A533BCA592F55412A334CBB3F975041BC60CEC8492F55412A334CBB3F97504100BB3DDB432F55412036C22C3C9750417BBCF813422F5541360BA3783C97504171BF6E853E2F5541145E6B6F3F975041739A3BB4372F55413530D64943975041C3CC01842E2F5541492AEA664A97504113FFC753252F5541AC7BF7244F975041D35AF29E1D2F55410FCD04E353975041C85D68101A2F5541843D598F66975041E00D168B132F554140E3E97C6C975041AC419793082F55410600000092DBD99D88965041E8B21838632F55416274E40486965041B52145C9622F55412FE3109685965041BB7501755E2F55417762861E10975041CF9B144E4F2F5541AAF3598D109750412F6AFF7F542F554192DBD99D88965041E8B21838632F5541B0000000A012F4703E975041A588DB60482F5541195BAE27309750415FD1F418572F5541F8C50FBC22975041B52145C9622F5541A49F9DE114975041DD0AA0E06B2F55411DE85798069750419ED1531A742F55414B883AF6E39650419329DBC27C2F554176FE3E7EC3965041EDA30949862F5541F8C493B6AE96504119E1200C8B2F5541D4051775A396504119E1200C8B2F5541E3D76DA298965041B4BE792E8A2F5541F4D3A2A58B9650411F35DDB7862F55418100169C809650411F23F4F97C2F554193906C62789650413F30E188742F5541BD0730BC77965041921E683C732F554110F6B66F76965041CF472D44762F5541C64F5B9F7396504139FB75A3702F5541C64F5B9F7396504188B491716B2F5541E249883073965041BB7380AE662F55415FAFD23D71965041B109AAE35E2F5541A520C328709650411688875D552F5541193EE25272965041F02384014E2F554164E43D2375965041EBEE181C4A2F55415667A75A759650419B135266432F55411E734D38769650416B45783F342F5541AF8A99F37796504165EE6172242F554108F2E15B92965041545E0BAC2C2F55418A6AEC6688965041408A5E161D2F55419BFA422D809650415E75A0BD082F5541F830F5C37A965041BD9C676AEF2E5541017920A7769650419F5EE409D82E554134380FE471965041F12AC0D5CA2E55417252E901619650410ED2ABAD9E2E5541DD0532615B965041FAFDFE178F2E5541E118F25E53965041EA5EBD67832E5541901B80C140965041CC203A076C2E5541E6FA1B8B2B9650413EFA0262562E5541ABC26B99149650416A62DBD1412E55414500385006965041C02EB79D342E5541C89AED42089650418305F295312E5541C4DA6EFE3B965041960A35FD602E554173303E1A559650416BC40775812E55418B17ABAD5C965041F7C893328B2E5541DBF271636396504127976D599A2E5541916EC17A6C96504147D5F0B9B12E554142B5A5AC7196504123B5432DC22E55417161D4EB7496504169263418C12E5541AE8A99F3779650413B9CB0C0C92E554147EA10927596504194BFA259CC2E554106AE8B8C7A965041FC81D6A2DA2E55415FD17D257D965041CBE4924DEB2E55416406E90A81965041B00C11A4F72E55416406E90A81965041139AD907022F55413FC490968596504122391BB80D2F55410D05A2598A965041EC666C7D1A2F5541CCC81C548F96504186E88E03242F55418B8C974E94965041F2BD824A2A2F554196F66D199C965041239F1C6F312F5541E6D134CFA2965041F0DF2D32362F554172D6C08CAC965041BE203FF53A2F5541CBF9B225AF965041916525CC232F55416DF49660D49650413A64DE1A2D2F5541E211B68AD696504164DBA1742C2F55415851809CE49650418F7410B6372F5541D6D87591EE96504198BC3B99332F5541C73934E1E2965041227D7187252F5541BF13B4E5F2965041BFEFA8231B2F554142AE69D8F4965041ED792C7B122F5541C4481FCBF69650410974590C122F55416D47D81900975041BABA3D3E172F55413CAA94C410975041068344F6252F55415DD92C3B1497504187FB4E011C2F554117683C5015975041584F20C2182F554157A4C15510975041998BA5C7132F554117683C5015975041BECDFD3B0F2F55413897D4C618975041C3026921132F5541608759D533975041272A30CEF92E55417EC5DC354B975041BA32919FE72E55413854EC4A4C9750416B57CAE9E02E5541573F2EF2379750414806878BD12E5541E1FF63E0299750412E2E05E2DD2E5541CE4D6232269750410DFF6C6BDA2E55410C99D221359750410BDDC183CE2E5541967BB3F732975041860DA1ABC82E5541E434CFC52D975041C74926B1C32E5541D6B738FD2D9750410786ABB6BE2E5541F2B1658E2D975041CB5CE6AEBB2E55410FCE3D0739975041C0F20FE4B32E55413E7A6C463C975041438DC5D6B52E5541F0C05078419750410A77C0CCAA2E5541979D5EDF3E975041E9472856A72E5541A0E589C23A9750415830DC9AA52E5541C527E23636975041D160BBC29F2E5541766EC6683B97504186BA5FF29C2E55418A4273FE4A97504173085E44992E5541919989CB5A975041F06DA851972E55417AD4C71F5F9750419EA1CC85A42E5541D2F7B9B8619750412DEAAE12C62E55411456EAA56897504165DE0835C52E55412B501737689750416EF23686082F554175D4C71F5F9750410C87190A0A2F55414506EEF84F9750414068B32E112F5541143814D240975041B172125B1B2F5541088AE73721975041027084F82D2F5541C5090C630E9750410CDA5AC3352F55412D57530BE5965041BB42EADC462F5541D4336172E296504168546329482F554184589ABCDB9650415AD7CC60482F554191B3859DCF965041844E90BA472F5541A443DC63C7965041D53C176E462F5541CF8909ECA6965041F44904FD3D2F5541FD138D439E965041198C5C71392F55412EB1D0988D965041F13644FF452F5541457692448996504120E3723E492F55418BE7822F88965041814E90BA472F55410C608D3A7E965041CCF4EB8A4A2F5541FEE2F6717E965041B52F2ADF4E2F5541B43C9BA17B96504138CADFD1502F5541072B22557A965041D65EC255522F554131A2E5AE79965041B651D5C65A2F55417C48417F7C9650412C919FD8682F554104608D3A7E96504112014912712F5541E01D35C682965041C3472D44762F554183E7822F88965041F2F35B83792F554110EC0EED91965041AD826B987A2F55418E7304E29B965041AD826B987A2F5541CDBE74D1AA965041DF415AD5752F55413DC9D3FDB49650412EFB75A3702F5541632DD759BC965041D5D7830A6E2F55418EC6459BC7965041FF4E47646D2F55416FB9580CD09650413743A1866C2F554120003D3ED596504145C0374F6C2F5541EC1EA319CE965041D5D7830A6E2F554123F15154C1965041207EDFDA702F55413481A81AB9965041E88985B8712F554138946818B1965041A84D00B3762F5541F100CD45A6965041CEB1030F7E2F5541323D524BA196504163FEBAAF832F5541F5138D439E965041303FCC72882F5541FF7D630EA6965041F94A7250892F5541EDED0C48AE96504122C235AA882F5541EDED0C48AE9650411D8DCAC4842F5541E8B8A162AA965041D81BDAD9852F5541CDBE74D1AA965041B7EC4163822F554179D0ED1DAC9650416C46E6927F2F5541620B2C72B09650417AC37C5B7F2F554167409757B4965041884013247F2F554119877B89B99650415994E4E47B2F5541103F50A6BD9650410071F24B792F5541601A175CC4965041A84D00B3762F5541400D2ACDCC965041D1C4C30C762F554120003D3ED596504125B34AC0742F5541FCBDE4C9D99650416B243BAB732F5541B11789F9D69650411C6B1FDD782F5541AFF5DD11CB965041C0346D467E2F5541BD7274DACA96504126D5F5A7802F55416A84ED26CC965041E06305BD812F5541CF550C5AEE9650417059A690772F55413F3EC09EEC965041949BFE04732F5541B35BDFC8EE9650418F66931F6F2F5541E73C79EDF5965041C75AED416E2F55412ADFFFA914975041E967DAD0652F55414B0E982018975041A3F6E9E5662F5541EED7E5891D9750419EC17E00632F55416C3D30971B97504129A45FD6602F55418E8E73F52A975041FE0AF194552F5541C682CD172A975041447CE17F542F5541F71F116D19975041C303D7745E2F5541B08C759A0E975041BABBAB91622F554161B1AEE4079750413C566184642F554161B1AEE4079750419044E837632F55412F146B8F1897504116F25D285D2F55411FA6BFB02C97504131CADFD1502F5541B0DFB6533A975041679C8E0C442F554141F7020F3C97504191135266432F55418C9D5EDF3E9750413E25CBB2442F5541A012F4703E975041A588DB60482F5541360000009673759CD1965041DD102FF72A2F55419B878928B596504158460F760F2F5541C8D19AD7B4965041D44AF742192F554118967BBBB09650418A733CFF172F5541E07B2892AD965041B6B343E8252F554114B35FE1A7965041933974B3292F5541695A5C9FAC965041F99DD88B2C2F5541695A5C9FAC9650417B8FE6F8302F55416F47823FA79650417B8FE6F8302F554192C15174A39650419E09B62D2D2F554148EA9630A2965041504FDF0F232F5541A37EB98EA1965041E5075F5D172F5541BF0B6323A39650419E3AAEDF072F5541E6684E32A8965041A427D47F022F5541609424EB9A965041A631DE45F42E5541A588C3549396504147BA9F0DEC2E554189FB19C091965041AD1E04E6EE2E5541EF5F7E98949650410C96421EF72E5541DFA2167E969650416B0D8156FF2E55418AFB19C091965041B5E43B9A002F554119C7736D8B965041634749A2ED2E5541B3620F9588965041518AE187EF2E55412F67F761929650419D3AAEDF072F55412F67F7619296504174D3B80A112F5541639E2EB18C96504181AD044B062F55413C4143A287965041613D3FDCFB2E55410327F07884965041D37BEFF4F32E55414DFEAABC859650411F5DB4FEE62E55414711851C8B965041370742B9DF2E5541EC7C62BE8B9650412C37003FDC2E554154EBD05C8096504183E806C3D22E554165A838777E96504183E806C3D22E5541375E27C87E9650414FB1CF73D82E5541FF43D49E7B9650414FB1CF73D82E5541AA9CD7E07696504112B46070CC2E554172518C05999650414FE2C725B32E554199AE77149E965041441286ABAF2E55410AE31D67A4965041050B0DE2B12E55419E9193EEA6965041C6039418B42E5541DCC9046A7F965041D3ACE7A6CE2E55410EF731F387965041332426DFD62E554135541D028D965041CDBFC106D42E554152E1C6968E965041AA45F2D1D72E554167814A8B95965041B1321872D22E5541C2156DE994965041C6D29B66D92E5541011DE6B292965041D685F9BAE52E5541E97258F8999650412440D0D8EF2E5541A861D568AA9650416B0D8156FF2E554192B747AEB1965041A427D47F022F5541646D36FFB196504105A91C7EFC2E554180FADF93B3965041613D3FDCFB2E554141F366CAB5965041A80AF0590B2F55411A658309D6965041817C0C992B2F55419673759CD1965041DD102FF72A2F55415E0000000180F3D61097504133C2357B212F55419B1B8FFE0D9750418A733CFF172F5541467492400997504158460F760F2F5541038AFD9C02975041AFF715FA052F5541487E9C06FB965041C7A1A3B4FE2E554160282AC1F39650410C96421EF72E554116516F7DF2965041E91B73E9FA2E55414F6BC2A6F59650413EC36FA7FF2E55410B812D03EF9650412C06088D012F5541898F1F96EA965041CB84BF8E072F5541F6E0A90EE896504158460F760F2F554134E822D8E59650418A733CFF172F5541EB106894E496504195437E791B2F5541CE83BEFFE2965041409C81BB162F5541D953007AE6965041039F12B80A2F5541898F1F96EA965041D171E52E022F5541FAC3C5E8F09650417CCAE870FD2E5541BBBC4C1FF3965041672A657CF62E554183A2F9F5EF9650415C5A2302F32E554134E822D8E59650412136C612FE2E554173EF9BA1E3965041D75E0BCFFC2E5541AC09EFCAE6965041FAD8DA03F92E554139CB3EB2EE9650413FCD796DF12E554159CA2EB1EB9650419EF2E036EF2E5541BEDFA6AEE2965041BB9587F6F92E5541EB0E46D6DF965041981D227DF92E5541DFE6CEADDF965041228D7AE8F72E5541CDE998CBE9965041FAC15C00ED2E554190B00787E59650411CC984FFE92E5541AED5B491DB965041AF6D10CEF92E5541456D8425DA965041981D227DF92E5541E1570C28E39650418FE8EE19E82E5541AD647717D896504180DEFCFCE02E554156F97C8DCC965041F55DDBC0FA2E5541EC904C21CB96504147761DDCFB2E554160B0B63BC9965041512D578AF82E5541EC904C21CB965041670C0861F52E55419CE94780CD965041B7B30C02F32E554138D4CF82D69650413AEE310AE02E5541BF61ADF9CD9650412C557D67DC2E5541768F6712C69650411394519CD82E55410945BCB1BD9650417B8B448ED62E5541066341BDB696504129730273D52E5541276A69BCB3965041B4E25ADED32E554104F20343B3965041791A0714D32E55418DF01E34AE96504165AC93B7D92E5541C6473584AB965041633B563DD62E5541DD9723D5AB96504162CA18C3D22E55412CCEEAFBA59650412BE43FEDD82E554194C5DDEDA3965041F01BEC22D82E5541B9AE80E1A79650412702C5F8D12E5541A3CFCF0AAB9650415EE89DCECB2E554181C8A70BAE9650415B0623DAC42E55419918965CAE965041B7D59EA3C22E5541FD2D0E5AA59650410E5262FEB52E5541A15E9290A796504199C1BA69B42E55415E504292AD96504134AC426CBD2E5541A8228879B596504153422DF1B62E5541156D33DABD965041B757A5EEAD2E5541741E2A98C29650414056C0DFA82E5541AFE67D62C396504188B7C84CAD2E5541A52F44B4C69650414056C0DFA82E55410E987420C896504194DF3F75AD2E55419907CD8BC6965041FE4770E1AE2E55410C2737A6C4965041F50174ADB52E55412CBD212BBE965041B4646129BF2E5541861B607AB896504173C74EA5C82E554190D29928B596504119691056CE2E55414AE2CE35B4965041A549A63BD02E554185AA2200B59650413D52B349D22E5541118BB8E5B69650418F6AF564D32E554159ECC052BB965041BE0AD206D42E5541F5D64855C49650413FC3F0C3D52E55414960C8EAC8965041B4539858D72E5541E3D91273CE96504158841C8FD92E554159DBF781D39650411F2D063FDC2E5541E8BB8D67D596504142A56BB8DC2E5541FAA7FA78E39650419FF6EDCCC52E5541ADE270CCEC965041C650CE3ACD2E5541BE6E6934DF965041E8462D69E22E55412948D71AE4965041E9B76AE3E52E5541DF64C862F4965041BF7B0F81D72E5541044E6B56F8965041B5C4D5D2DA2E5541174BA138EE965041C4CEC7EFE12E554136E18BBDE7965041D3D8B90CE92E5541D63C513AF496504112F4C545F42E5541DB8F09A9FE9650412F976C05FF2E55414BBC2FFE0D97504164FB3E900D2F55417CCD491A1297504189E4E183112F5541CC744EBB0F97504121EDEE91132F55413E237B5B0A9750414183D9160D2F5541D99CC5E30F9750411836B5E3162F55417DCD491A12975041CB702B37202F55410180F3D61097504133C2357B212F5541050100002BA43E2E299750413108AA7F022F55411072D5E82197504113F4C545F42E554124E048451B9750413BD0ACFEE62E5541FFF6A55117975041E7462D69E22E5541356C41AD0D975041F08C299DDB2E5541913BBD760B9750411DBCC8C4D82E55413DB23DE1069750413D52B349D22E55414216BF20F99650417BFC8108DA2E55411D2D1C2DF5965041798B448ED62E5541BE7B256FF09650412502C5F8D12E5541319B8F89EE9650414709EDF7CE2E5541319B8F89EE96504122204A04CB2E55419EE53AEAF69650412CD783B2C72E5541C9A39C97F0965041AB1E65F5C52E5541008A756DEA965041341D80E6C02E5541D64D1A0BDC965041D1890E34B52E5541468B0931D39650419F07B79DAD2E554122A2663DCF9650411CDE5A66A82E55419F780A06CA965041AF93AF05A02E5541C17F3205C7965041B94AE9B39C2E5541E2865A04C4965041AF93AF05A02E5541CB366CB3C3965041332E49B7A82E55414A7E4DF6C19650411CDE5A66A82E55414A7E4DF6C1965041C6E39D56A02E5541F9D64855C4965041E67988DB992E554183D56346BF96504174CB5B3B9F2E5541753CAFA3BB9650416A14228DA22E5541EF30D877AF96504141C7FD59AC2E55416B963EC6A6965041213113D5B22E5541022E0E5AA5965041ACA06B40B12E5541141A7B6BB39650416C855F07A62E5541D37C68E7BC9650413A0308719E2E55414A7E4DF6C19650414E717BCD972E55412706E87CC19650415828B57B942E5541A64DC9BFBF965041C01FA86D922E5541C754F1BEBC965041CB471F96922E554117FCF55FBA9650419E18806E952E554168A3FA00B8965041424904A5972E55415A0A465EB49650411238EA88932E5541A26B4ECBB8965041BEAE6AF38E2E55411DD1B419B0965041C965A4A18B2E554153465075A696504102BDBAF1882E5541DAD32DEC9D96504175DC240C872E55419001E80496965041AE333B5C842E5541EB5F265490965041C412EC32812E5541A3FE1DE78B96504159397E4C7C2E5541D02DBD0E8996504163F0B7FA782E5541FC5C5C368696504179CF68D1752E5541707CC6508496504132DF9DDE742E554150F7A49C7296504142D8C62A942E554171FECC9B6F965041C11FA86D922E55417A3300FF80965041600E3D06722E554123C8057575965041BA6C7B556C2E5541B7EE978E70965041D32DA720702E55411D754D066B9650410C85BD706D2E5541E8107B7B5C9650417F935EBA832E5541A0AF720E58965041C412EC32812E55416E1C52A76896504120F330CD662E5541C23494C269965041A8628938652E5541F8A92F1E60965041172F3BE4582E5541485134BF5D965041718D7933532E554137D604285396504185FBEC8F4C2E5541CA8B59C74A96504102D29058472E5541D1D155FB43965041F638DCB5432E5541FD8FB7A83D9650413BB8692E412E554179F51DF734965041740F807E3E2E5541F83CFF39339650418B5F6ECF3E2E55419AFC45F631965041184004B5402E55411651E37341965041FB8B94244E2E554192A580F150965041D3AFAD6B5B2E5541EE74FCBA4E965041484055005D2E5541EAA34A972F96504181A83421422E5541A4B37FA42E965041184004B5402E5541256C9E6130965041E72EEA983C2E55410658BA2722965041867DF3DA372E5541219BEC3D11965041EC03A952322E554103870804039650416ADA4C1B2D2E55414977D3F6039650419709EC422A2E5541962B94D21296504154FB9B44302E55416498736B23965041FA9C5DF5352E5541988B087C2E965041135E89C0392E55416CCDA6CE34965041B51DD07C382E55414BC67ECF37965041EE74E6CC352E55413476907E379650410E0BD1512F2E55413205530434965041997A29BD2D2E5541E0EC10E932965041528A5ECA2C2E5541D04F4FB0589650417E48C077262E55412C1FCB795696504139C932FF282E554117B1571D5D965041749186C9292E554148C2713961965041227944AE282E5541DF5941CD5F96504120080734252E5541A6022B7D62965041DA173C41242E55410F6B5BE96396504164F8D126262E55419C4BF1CE65965041CE600293272E55411E754D066B965041729186C9292E5541C4160FB770965041E7212E5E2B2E5541B0A89B5A7796504121EA81282C2E5541D6027CC87E9650410A9A93D72B2E554114AD4A8786965041B88151BC2A2E5541A18DE06C88965041D98879BB272E55418086B86D8B965041207944AE282E5541161E88018A965041B88151BC2A2E55419E9A9CA799965041F79C5DF5352E5541772FF368AA9650414DA8E3D5252E554185C8A70BAE9650414CA8E3D5252E5541D7E0E926AF965041F249A5862B2E5541A7CFCF0AAB965041D0427D872E2E55416A963EC6A696504197EB6637312E5541744D7874A3965041263D3A97362E5541E86CE28EA19650413FFE65623A2E5541E86CE28EA19650416276CBDB3A2E55410C6341BDB696504115753718522E554199320ED2D09650418C6553566F2E5541A6CBC274D4965041530E3D06722E55419E85C640DB965041D1E4E0CE6C2E554121AF2278E096504144044BE96A2E5541C5DFA6AEE296504123FD22EA6D2E5541E6E6CEADDF9650410D1E7213712E55419E85C640DB965041D4C65BC3732E5541EE2CCBE1D8965041557F7A80752E55417C7E9E41DE9650418A01D2167D2E5541011938F3E69650411DB726B6742E5541CD14DA11F49650410C3CF71E6A2E55417A09543104975041CE20EBE55E2E5541DB2B88690C97504163477DFF592E5541EA357A86139750419C9E934F572E5541A99867021D975041844EA5FE562E5541CCFF03AB359750410507C4BB582E5541ACE712DB5097504190E759A15A2E5541ACE712DB509750413418DED75C2E55414EB8226837975041A73748F25A2E55417A874DE6189750411B57B20C592E5541BC959DE41297504149F78EAE592E5541DE9CC5E30F9750419B0FD1C95A2E5541DC2B88690C97504111A0785E5C2E5541AC1A6E4D08975041B5D0FC945E2E55418731CB5904975041590181CB602E554104086F22FF9650414F4A471D642E5541D014DA11F4965041BB94F27D6C2E5541FA61FE44EA965041118FAF8D742E5541F50E46D6DF965041FE9179AB7E2E55418F88905EE59650413414D141862E55415913F502EF965041458F00D9902E5541E9D505DDF7965041A6B13411992E55410EBFA8D0FB965041EE123D7E9D2E5541D5679280FE9650414EC4333CA22E554138FB03330A975041EB30C289962E55410BCC640B0D9750416D5A1EC19B2E5541A838F358019750410BB6E33DA82E554111A123C50297504147EF7482AC2E5541C1F91E2405975041F5D63267AB2E5541D8490D750597504181B7C84CAD2E55415891EEB703975041DFF78190AE2E554159022C3207975041BF61970BB52E55417EEBCE250B975041ED903633B22E5541E853FF910C97504156F9669FB32E5541DABA4AEF089750419E5A6F0CB82E5541680C1E4F0E975041E82CB5F3BF2E5541941D386B12975041E70E30E8C62E554167EE9843159750415F815271CF2E554167EE984315975041CA5AC057D42E5541968E75E5159750419103AA07D72E5541B906DB5E169750411EE43FEDD82E55413ABFF91B189750415A1DD131DD2E5541AEDE6336169750417D9536ABDD2E5541E6357A86139750414C13DF14D62E5541C3BD140D13975041F8895F7FD12E5541A045AF9312975041DFC833B4CD2E55411F8D90D61097504197672B47C92E55416F3495770E97504143DEABB1C42E5541EE7B76BA0C9750411EF508BEC02E5541B242E575089750413E8BF342BA2E55419981B9AA04975041A411A9BAB42E5541E928BE4B0297504174008F9EB02E554145F8391500975041728F5124AD2E5541DC8F09A9FE965041701E14AAA92E5541C53F1B58FE965041B29DA122A72E5541395F8572FC965041766410DEA22E55417DDE12EBF996504174F3D2639F2E5541DAAD8EB4F79650418AD2833A9C2E5541E464C862F49650417D39CF97982E554190DB48CDEF96504140003E53942E5541EA39871CEA9650418F36057A8E2E5541DDA0D279E6965041829D50D78A2E55415A777642E1965041D0D317FE842E5541AA1E7BE3DE965041C33A635B812E5541642EB0F0DD96504165FAA917802E5541B4D5B491DB9650419229493F7D2E55413ED4CF82D6965041F8AFFEB6772E55413C639208D39650413D2F8C2F752E55419F07CD8BC696504191A742F4912E5541297725F7C49650414AB77701912E5541AF82FC22D1965041B04EF649732E554183E62C17A7965041E738DCB5432E5541022E0E5AA5965041DC10658D432E554116AD4A87869650411546E93B712E55418ACCB4A184965041C32DA720702E55416A25014CA3965041C4C0763C432E554153D512FBA2965041DA9F2713402E5541C6F47C15A19650411E1FB58B3D2E554143CB20DE9B965041CE77B0EA3F2E554135326C3B9896504159E708563E2E554162610B6395965041639E42043B2E55419D295F2D96965041612D058A372E554161F0CDE8919650413D446296332E5541F7879D7C90965041F65397A3322E5541E037AF2B90965041640F807E3E2E5541D680757D939650412BB8692E412E5541A951D655969650411F90F205412E5541874AAE569996504115D9B857442E554158AAD1B498965041E8A91930472E5541875B772781965041938DCA7E6F2E55410BF610D989965041FE663865742E5541C5E7C0DA8F9650413D1107247C2E5541A4E098DB92965041E0D04DE07A2E554182D970DC959650410E712A827B2E554103928F9997965041B2A1AEB87D2E55413CE9A5E99496504162FAA917802E5541EAD063CE93965041919A86B9802E55416CFABF059996504135CB0AF0822E55412B5DAD81A2965041FC73F49F852E55413CD8DC18AD965041B8F46627882E5541FCAB070FBA96504117A65DE58C2E55410945BCB1BD965041215D9793892E55410BB6F92BC1965041C58D1BCA8B2E5541440D107CBE965041A386F3CA8E2E5541BB0EF58AC3965041E0BF840F932E554147EF8A70C596504155502CA4942E554101EEF6ACDC96504110E267FC7E2E554148DEC19FDD965041C03A635B812E5541870A97A9D09650412EF64B368D2E55418EDF5563C6965041334904A5972E554193A34B4CD4965041E3AEBB3EAB2E55410834F3E0D596504187DF3F75AD2E55411E02DBE6EA96504178C48487BE2E55414E13F502EF9650413F6D6E37C12E554127A84BC4FF965041AA57A5EEAD2E5541717A91AB079750413B8BF342BA2E554138237B5B0A975041544C1F0EBE2E55410430E64AFF9650414E776054C82E5541FCE9E916069750410B691056CE2E5541C50311410C97504103231422D52E55412E6C41AD0D9750410494519CD82E55416BA5D2F11197504140CDE2E0DC2E5541041F1D7A179750417D067425E12E5541299782F317975041119E43B9DF2E5541BF2E52871697504190E524FCDD2E554140E770441897504184BDADD3DD2E5541FB67E3CB1A975041E46EA491E22E5541B7E855531D97504172C077F1E72E5541205186BF1E975041FEA00DD7E92E5541D31ABF9824975041AA244A7CF62E5541059D162F2C975041542A8D6CEE2E5541EFBD65582F9750411A6239A2ED2E554141D6A77330975041B26A46B0EF2E5541A9CD9A652E975041B4DB832AF32E5541D6FC398D2B975041FC3C8C97F72E554155441BD0299750414CE49038F52E55415FFB547E269750411FB5F110F82E5541A75C5DEB2A975041D2EF6764012F55412BA43E2E299750413108AA7F022F554106000000125CDAF6C4965041D621910EEF2E5541D354612DC796504115290AD8EC2E55411D2C1C71C896504131B6B36CEE2E55412EE9838BC6965041D4178748FD2E55419B3A0E04C4965041B19DB713012F5541125CDAF6C4965041D621910EEF2E55410600000056E47E3616975041CD8C510CB82E5541785E4E6B129750413ADEDB84B52E55414427171C189750415C58ABB9B12E55410A03BA2C23975041BED9F3B7AB2E5541F84552122597504140CB0125B02E554156E47E3616975041CD8C510CB82E554105000000F63B484C33975041F03719F38E2E55413543C115319750418AD3B41A8C2E5541F4313E8641975041B33AAAEF822E5541B52AC5BC43975041199F0EC8852E5541F63B484C33975041F03719F38E2E554105000000B178A19415975041810D7D667A2E5541D3F270C9119750411BA9188E772E5541B55BBD6E1E975041678ADD976A2E55411BC0214721975041725A1F126E2E5541B178A19415975041810D7D667A2E554106000000A677676837975041619DB7F76F2E55415CA0AC243697504105099599702E554112C9F1E034975041B16198DB6B2E554176234CF34597504124A048F4632E5541371CD32948975041012679BF672E5541A677676837975041619DB7F76F2E5541060000000DEDF96814975041942B31DE342E5541DE4C1DC7139750412952C3F72F2E55414E79431C23975041347A3A20302E5541DB59D90125975041631A17C2302E5541F3A9C75225975041DA1BFCD0352E55410DEDF96814975041942B31DE342E554107000000665C0189F6965041A246ECCB232E554137BC24E7F596504195AD3729202E55411F6C3696F596504114F5186C1E2E5541665C0189F6965041933CFAAE1C2E5541D517EA63029750414124B8931B2E554103B8C605039750412DB64437222E5541665C0189F6965041A246ECCB232E5541070000008403B5DED7965041AB7B1F2F352E554178DB3DB6D79650416F428EEA302E5541656DCA59DE965041CB110AB42E2E554172067FFCE1965041CB110AB42E2E554147481D4FE8965041B3C11B632E2E554153709477E896504113731221332E55418403B5DED7965041AB7B1F2F352E55410A000000CE68CAE1B2965041541025A5292E55418778FFEEB19650412F2782B1252E55410AA25B26B79650415C5621D9222E5541A3AA6834B9965041CF758BF3202E554125D4C46BBE965041376D7EE51E2E5541E15437F3C09650417235D2AF1F2E554110F51395C1965041E7C57944212E5541F8A42544C19650413B4FF9D9252E55412F8BFE19BB9650412F2782B1252E5541CE68CAE1B2965041541025A5292E55411E0000003C4EA1D63296504174396FBAA22E55414CDA993E25965041B5D6813E992E5541C9B03D0720965041E2052166962E55414ECDDD031496504150D2D2118A2E55411F3ECA32FB955041E8DADF1F8C2E5541614C1A31F595504122A333EA8C2E554184C47FAAF59550416722C1628A2E554197B0ECBB03965041E669A2A5882E55418442795F0A965041DA412B7D882E5541FFA7DFAD019650419451608A872E55411CDE5589DF9550414CF0571D832E554156A6A953E0955041906FE595802E554141342961109650414E619597862E5541A92B1C530E965041AA301161842E55413BE170F205965041A4DD58F2792E5541FFA7DFAD01965041168C8592742E55418A17381900965041AC235526732E5541D6DCC1C5F6955041068293756D2E5541177AD449ED9550419BA8258F682E5541461AB1EBED9550413D686C4B672E5541679FD29FFF955041141B4818712E55412E48BC4F02965041AC235526732E554153315F43069650410CD54BE4772E55414D5CA08910965041B5588889842E5541F6DFDC2E1D965041762CB37F912E5541F8501AA920965041614D02A9942E55417616F5A033965041E758D9D4A02E5541C82E37BC3496504116F9B576A12E55415FC606503396504174396FBAA22E55413C4EA1D63296504174396FBAA22E55410D0000001034D815F4955041F17C4367CA2E554145A97371EA955041EB298BF8BF2E55411AEB11C4F095504169002FC1BA2E5541040C61EDF39550412481A148BD2E55414AFC2BE0F4955041BB1871DCBB2E554112A51590F7955041AFF0F9B3BB2E5541C1FD10EFF9955041C740E804BC2E5541378EB883FB955041BB1871DCBB2E55412DD77ED5FE955041EAB84D7EBC2E55415A061EFDFB955041EB298BF8BF2E55414D6D695AF8955041E172514AC32E5541D94DFF3FFA955041A81B3BFAC52E55411034D815F4955041F17C4367CA2E55410A000000A4D863E4039650417699E363BE2E55413B7033780296504101093CCFBC2E55415EE898F10296504197A00B63BB2E55415EE898F1029650412E38DBF6B92E5541C750C95D04965041AD7FBC39B82E554131B9F9C905965041A1574511B82E55414A7A259509965041DC1F99DBB82E55413E52AE6C09965041DD90D655BC2E55416059D66B069650415E49F512BE2E5541A4D863E4039650417699E363BE2E55410C0000006D855A2ADD9550418F5A0F2FC22E5541773C94D8D9955041A539C005BF2E5541AE226DAED3955041DC1F99DBB82E5541003BAFC9D49550415B677A1EB72E554169A3DF35D69550412CC79D7CB62E5541EA5BFEF2D7955041DAAE5B61B52E5541C954D6F3DA955041651EB4CCB32E55416D855A2ADD955041651EB4CCB32E5541BD2C5FCBDA955041DAAE5B61B52E5541031D2ABEDB955041209F2654B62E55412A770A2CE395504153217EEABD2E55416D855A2ADD9550418F5A0F2FC22E55410600000031CECF30C49550411102651BDC2E5541764D5DA9C1955041CB119A28DB2E5541B286EEEDC59550415DC7EEC7D22E554156B77224C895504117D723D5D12E554156B77224C8955041B0DF30E3D32E554131CECF30C49550411102651BDC2E554109000000D2E7721B37965041FB869E76A12E55418810B8D735965041561BC1D4A02E55413E39FD9334965041DEF9F4E19F2E5541FF3184CA369650411D016EAB9D2E554149093F0E3896504112312C319A2E55416596E8A239965041903F1EC4952E5541278F6FD93B9650410761EAB6962E5541DDB7B4953A965041D429B3679C2E5541D2E7721B37965041FB869E76A12E55410A0000002CAEA037AE955041AFBC1435362F5541FF7E0110B1955041D90939682C2F5541E99F5039B49550417BC97F242B2F55418DD0D46FB695504187F1F64C2B2F55411AB16A55B8955041FC819EE12C2F55416A586FF6B59550414654E4C8342F554199F84B98B6955041AFBC1435362F554181A85D47B69550413C9DAA1A382F55415197432BB2955041A505DB86392F55412CAEA037AE955041AFBC1435362F55410E000000877D1C01AC9550413D1FB165232F5541E34C98CAA9955041DFDEF721222F55419D5CCDD7A89550413BAE73EB1F2F5541CCFCA979A9955041D145437F1E2F5541FB9C861BAA955041508D24C21C2F554159DD3F5FAB955041F34C6B7E1B2F5541DA955E1CAD955041AC5CA08B1A2F5541C4B6AD45B0955041666CD598192F554197870E1EB3955041082C1C55182F5541520881A5B5955041C23B5162172F5541BC70B111B7955041D98B3FB3172F5541F63805DCB795504137CCF8F6182F5541DFE8168BB7955041CFD405051B2F5541877D1C01AC9550413D1FB165232F55417D000000803F3AF95F955041A0B222182F2F5541E8362DEB5D955041B691D3EE2B2F5541B99650495D955041B4209674282F55418AF673A75C955041609716DF232F554138DE318C5B9550414565AD991C2F5541E6C5EF705A955041EF6AF089142F55418985362D59955041EC8875950D2F5541ACFD9BA65995504125E08BE50A2F5541529F5D575F955041D1560C50062F554156700F7B7E95504143873F3BEC2E5541B89243B386955041074EAEF6E72E5541D5176567989550410F05E8A4E42E554154DD3F5FAB955041D2CB5660E02E5541D877D910B4955041E8AA0737DD2E5541F0C7C761B4955041B90A2B95DC2E55414A2606B1AE9550411F91E00CD72E5541CDD168339F955041BA8C31E0C72E554133581EAB99955041C4436B8EC42E5541C60D734A9195504145FC894BC62E5541BAE5FB2191955041B81BF465C42E55416087BDD2969550414EB3C3F9C22E55410247048F95955041AE823FC3C02E5541BB56399C94955041C461F099BD2E55410D6F7BB795955041D940A170BA2E5541EAF6153E95955041C07F75A5B62E554152EE083093955041E015602AB02E554100D6C61492955041D27CAB87AC2E554198DED32294955041BB2CBD36AC2E5541F61E8D66959550418F6E5B89B22E554183FF224C97955041FB47C96FB72E55419A4F119D9795504137815AB4BB2E55415F87BDD296955041E7D95513BE2E55416BAF34FB969550418B0ADA49C02E554132581EAB999550413B63D5A8C22E5541C1A9F10A9F955041F6E34730C52E55419F20C3C0B69550418E6A4EF3DB2E55411B75603EC6955041FD2537CEE72E5541E870025DD39550419A10BFD0F02E5541113C2045DE955041632AE6FAF62E554151572C7EE9955041DA2BCB09FC2E5541168FD8B3E8955041201C96FCFC2E5541A9442D53E09550411383E159F92E5541D4028F00DA95504128629230F62E55417E08D2F0D1955041D4D8129BF12E55410696AF67C99550412E3751EAEB2E5541B09BF257C19550417D6D1811E62E55414F79BE1FB995504191DB8B6DDF2E5541C298283AB79550414AEBC07ADE2E55411E68A403B5955041561338A3DE2E554162E7317CB295504191DB8B6DDF2E55414FFBC46AA4955041D93C94DAE32E55411997F2DF95955041B7356CDBE62E55411CFB731F8895504173B6DE62E92E5541607A019885955041B9A6A955EA2E5541F711D12B84955041220FDAC1EB2E5541EBE9590384955041C63F5EF8ED2E55414B9B50C1889550418D66415D052F5541CB536F7E8A95504183AF07AF082F5541299428C28B955041D5C749CA092F55416E13B63A89955041A6276D28092F5541ED5A977D879550418D66415D052F55419B4255628695504195AC3D91FE2E5541F711D12B84955041A7A97373F42E55418DA9A0BF82955041C63F5EF8ED2E5541A4F98E1083955041F36EFD1FEB2E554168C0FDCB7E955041BA17E7CFED2E5541B4AFFF5C72955041AC0413D3F82E554109D6DFB57495504163A797D4F92E55413130AF7F76955041E80BCA81FB2E554185568FD878955041FCB8B166FC2E5541F29B98DB7A95504115D8DA10FC2E554101D73EFB7C955041C1B1FAB7F92E5541BCEB04C27C955041B1765498F72E55413787D2147B955041E726E8B1F52E55417700CB887C95504149A38C5AF42E55414250376F7E9550412149BD90F22E55416538C57381955041110E1771F02E5541A6B1BDE7829550417E532074F22E5541082E62908195504135F6A475F32E5541853B71A87E9550416250743FF52E5541FB64FD357E955041728B1A5FF72E554180C92FE37F955041FC618ED1F72E5541D5EF0F3C82955041596CF1B4F72E554177E5AC5882955041DFD02362F92E55410F12E51A7F95504124BC5D9BF92E5541CE98ECA67D9550416435560FFB2E55418E1FF4327C955041D17A5F12FD2E5541254C2CF578955041526D50FAFF2E5541BD7864B77595504135DCE58A012F554128D98BEA719550419EAFADC8042F55418EC771586F955041CA7BBE57052F5541F5B557C66C9550410F67F890052F55413E13D3C46B95504171E39C39042F5541F927998B6B9550413EC06815FF2E5541B9E908B867955041C5BD57AD022F5541B39650495D9550410368266C0A2F554109910D59659550410F909D940A2F55414FFFD1007B9550415F37A235082F55416A313B46829550415F37A235082F55411EC18A8A909550417E7566EE0A2F5541EC323DEBAA955041CAB7C3BC0F2F55411522F339CC955041B37D7CE2152F55411FECB6D9D795504182CDE8C8172F554121D198A9DD9550413DE2AE8F172F554154F4CCCDE29550411588DFC5152F5541D0747CF0E69550417B76C533132F554156D9AE9DE89550413BFDCCBF112F554190FB837CE5955041D09CA58C152F55417EDBFB8CDD95504138706DCA182F55417884D8F7D8955041C246E13C192F55413526FEB3D19550410CA45C3B182F5541C4163111C49550418BB16B53152F554130C7538FA695504113A3FDF50F2F55415955A12E8C9550418A7566EE0A2F5541F30E39E681955041621B9724092F5541138426E07D955041BD25FA07092F5541BF05C4AC6E9550415BA9555F0A2F5541D27547E75C955041CC60A0270B2F5541D6E788AC5B955041AFCF35B80C2F55414C11153A5B955041923ECB480E2F554170F9A23E5E9550413771CC0F212F5541269C27405F9550418D7C8E38292F55414EF6F60961955041C51104222D2F55411062E06565955041F8343846322F5541803F3AF95F955041A0B222182F2F554107000000565D28BEB2955041F22CB1B60B2F554173EE922DB195504199948F980A2F5541879B7A12B2955041446EAF3F082F5541EF6E4250B59550411C14E075062F5541DEA63C3BBA95504196AFADC8042F554106010C05BC955041A1781223082F5541565D28BEB2955041F22CB1B60B2F5541050000009449C13CBB955041324E2750002F55413BB19F1EBA9550412CF703BBFB2E5541BA163111C4955041080F76B6F82E5541B5A4EF4BC59550415451D384FD2E55419449C13CBB955041324E2750002F55410E000000D52C74E694955041D8EAE24CEB2E5541216FD1B499955041BFCBB9A2EB2E55415804479E9D955041F0090CF7EA2E5541EDA31F6BA19550411DD61C86EB2E5541EDA31F6BA1955041A23A4F33ED2E5541A8B8E531A19550416D8ABB19EF2E5541B19C68BC9E9550410B0E1771F02E55418EB4DAB79B955041C622DD37F02E5541F4A2C02599955041F2EEEDC6F02E5541E0F5D840989550414B870FE5F12E55415B91A69396955041BD3E5AADF22E55416475291E949550416E6F9DE9F42E55417C9452C8939550419956CCA8EF2E5541D52C74E694955041D8EAE24CEB2E55413000000084704A586A95504177C62BD6402E5541DECE88A7649550416358B879472E5541098DEA545E9550415D83F9BF512E5541071CADDA5A955041ED450A9A5A2E55411F6C9B2B5B955041A08080ED632E5541A9DBF39659955041E8E1885A682E554111D3E68857955041983A84B96A2E5541A86AB61C56955041E20CCAA0722E5541C971DE1B53955041A16FB71C7C2E5541AE3F75D64B955041E3FB00D08A2E55415B2733BB4A9550412B5D093D8F2E55411155EDD3429550410E385C32992E5541F6B1461438955041C4C58AF4AC2E5541CDE6282C2D955041428B65ECBF2E55414ABDCCF427955041767EFAFCCA2E5541494C8F7A2495504105D0CD5CD02E55412E1A26351D955041D9116CAFD62E554144F9D60B1A95504138C3626DDB2E5541C91577080E955041FD780858EF2E5541A2BB969A0695504111D6B2E3002F5541F3629B3B049550417DAF20CA052F554149DF5E96F794504137AE8C061D2F5541D44EB701F6945041090EB0641C2F55419522E2F702955041081F7935042F5541C633FC13079550416AC3B3B8F72E554119BD7BA90B955041B6883D65EE2E55418F4D233E0D955041B6883D65EE2E5541B5A703AC14955041F5B4126FE12E55412B38AB40169550414F1351BEDB2E554150214E341A95504140095FA1D42E5541EA9A98BC1F955041E15768E3CF2E55414477D0C02E955041F4B81F05B82E5541C52FEF7D30955041E890A8DCB72E55416C42EEA8399550410EFC511BA72E55411AC62A4E4695504161255D07902E5541E3DF51784C955041C53AD504872E5541723125D85195504162A763527B2E5541502AFDD854955041C6BCDB4F722E55410DAB6F605795504129F0D858622E5541266C9B2B5B95504150CCBF11552E55413023D5D957955041F38B06CE532E55415FC3B17B58955041086BB7A4502E5541512AFDD8549550417062AA964E2E5541823B17F558955041973E914F412E554107D6B0A6619550418E8757A1442E554164166AEA629550414908CA28472E554151A8F68D69955041F30D0D193F2E554184704A586A95504177C62BD6402E55410500000007112645C69450414F5F8F2D282E5541B5F8E329C5945041AB2E0BF7252E554166C21C03CB9450413C73221C1A2E554176CC0E20D294504186456803222E554107112645C69450414F5F8F2D282E554106000000491F7643C0945041C7E27A87182E55417F94119FB69450415C090DA1132E5541A8E135D2AC945041644F09D50C2E55412B0B9209B29450418274B6DF022E55419DA8F5D8C494504114A804340F2E5541491F7643C0945041C7E27A87182E5541
+</a>
+
+<b>
+01060000000100000001030000000D0000006C00000069A516EC1B965041A77C82D55B2E55414A52A361239650418BF83160512E55418B44726024965041C48B4F06502E5541A7C26B99149650416762DBD1412E55414200385006965041C02EB79D342E5541C39AED42089650418105F295312E5541BFDA6EFE3B965041990A35FD602E554172303E1A5596504170C40775812E55418617ABAD5C965041F5C893328B2E5541D7F271636396504127976D599A2E5541956EC17A6C9650414AD5F0B9B12E554146B5A5AC7196504121B5432DC22E55416C61D4EB749650416D263418C12E5541AB8A99F377965041409CB0C0C92E554149EA10927596504193BFA259CC2E554109AE8B8C7A965041F881D6A2DA2E55415CD17D257D965041CAE4924DEB2E55416906E90A81965041AD0C11A4F72E55416906E90A81965041109AD907022F55413EC490968596504121391BB80D2F55410E05A2598A965041F1666C7D1A2F5541CEC81C548F96504186E88E03242F55418F8C974E94965041F5BD824A2A2F554193F66D199C965041289F1C6F312F5541E4D134CFA2965041EDDF2D32362F554174D6C08CAC965041BD203FF53A2F5541C8F9B225AF965041956525CC232F55416EF49660D49650413964DE1A2D2F5541E011B68AD696504167DBA1742C2F55415451809CE49650418D7410B6372F5541D5D87591EE9650419ABC3B99332F5541C33934E1E2965041267D7187252F5541C313B4E5F2965041C3EFA8231B2F554144AE69D8F4965041F1792C7B122F5541C6481FCBF69650410574590C122F55416A47D81900975041B6BA3D3E172F55413CAA94C410975041078344F6252F55411B683C5015975041564F20C2182F55415AA4C15510975041958BA5C7132F55411B683C5015975041C1CDFD3B0F2F55413C97D4C618975041C3026921132F55415B8759D5339750412A2A30CEF92E55417EC5DC354B975041B832919FE72E55413C54EC4A4C9750416757CAE9E02E5541593F2EF2379750414406878BD12E5541E4FF63E029975041322E05E2DD2E5541D34D62322697504112FF6C6BDA2E55410A99D221359750410FDDC183CE2E5541987BB3F732975041810DA1ABC82E5541E734CFC52D975041CB4926B1C32E5541D7B738FD2D9750410B86ABB6BE2E5541F6B1658E2D975041CC5CE6AEBB2E55410CCE3D0739975041BCF20FE4B32E55413C7A6C463C975041488DC5D6B52E5541EDC05078419750410977C0CCAA2E55419A9D5EDF3E975041E8472856A72E55419CE589C23A9750415830DC9AA52E5541C827E23636975041D460BBC29F2E5541796EC6683B97504185BA5FF29C2E55418D4273FE4A97504174085E44992E5541929989CB5A975041F36DA851972E554175D4C71F5F97504199A1CC85A42E5541D3F7B9B8619750412EEAAE12C62E55411556EAA56897504160DE0835C52E5541295017376897504170F23686082F5541843D7678689750416E5B5381082F55417E3A3B8768975041FF6B8E7E082F554139E5DB8B6C9750417F784A33082F554130A2AB836D975041BB1686F6012F5541EF5472CF6D975041EA943B6BD12E55417A90392E6C975041AC8A32CBC12E5541E0D65D9F649750417F69D369A32E5541B14066BB5F975041DF9DE1A08D2E5541B40843A85D9750416422672F912E554160AD3BEA589750415C7DCA08892E55419F66739453975041613C9CD87F2E55410E1A111952975041F0A233FD6F2E5541C58FF16452975041FC6A10EA6D2E55416111AAE0579750416BBA3F786D2E55414A78E5E95497504143ABF6505D2E554133DF20F35197504143ABF6505D2E5541D3BB3C484F97504189EBDCB74C2E5541509B25B04A9750411F5B7FF9432E55411DAACAF24D975041B26FBE61432E55416734EAA64D9750415F14B7A33E2E5541077574F249975041CD63E6313E2E55415F2BDF8946975041B280E8ED2A2E5541F4D60A8DFB9650419B94DF8C102E554172497AE1F09650419D5CBC790E2E55419069ED94E89650417897AC9F0E2E5541505D7180D69650418F307196112E5541B35556FBB896504130444627162E5541AF60F1A989965041F64F74A31D2E554106312FA663965041B577DDD0232E5541C0E3846148965041A6E723F7272E55410AE33C982E96504173925A432C2E55411461E0371C965041D3B53EEE2E2E554157757BBB0E965041E07D1BDB2C2E55415EFC29780396504181BEA526292E5541B3EAB7220296504196F3FB262D2E5541BDBB9F2C07965041D1ED6101312E554180F95C6505965041E88626F8332E554182C1395203965041F2570E02392E5541815DCB5B04965041A5728B74412E5541414025BB0A9650414CF443F0462E5541AF24B9CF1C9650417DAD8D6C542E5541102C60EB139650417DAD8D6C542E554169A516EC1B965041A77C82D55B2E5541360000009573759CD1965041DA102FF72A2F55419E878928B59650415A460F760F2F5541C8D19AD7B4965041D04AF742192F554119967BBBB09650418E733CFF172F5541E07B2892AD965041B4B343E8252F554119B35FE1A79650418E3974B3292F5541695A5C9FAC965041FC9DD88B2C2F5541695A5C9FAC965041768FE6F8302F55416D47823FA7965041768FE6F8302F554194C15174A39650419D09B62D2D2F554148EA9630A2965041514FDF0F232F5541A77EB98EA1965041E3075F5D172F5541BE0B6323A39650419B3AAEDF072F5541E4684E32A8965041A027D47F022F55415F9424EB9A965041A431DE45F42E5541A188C3549396504145BA9F0DEC2E554189FB19C091965041A81E04E6EE2E5541ED5F7E98949650410796421EF72E5541DAA2167E96965041660D8156FF2E554189FB19C091965041B3E43B9A002F554117C7736D8B965041674749A2ED2E5541B4620F9588965041548AE187EF2E55412A67F761929650419B3AAEDF072F55412A67F7619296504171D3B80A112F5541649E2EB18C96504184AD044B062F55413E4143A287965041623D3FDCFB2E55410427F07884965041CE7BEFF4F32E554151FEAABC859650411F5DB4FEE62E55414C11851C8B965041370742B9DF2E5541ED7C62BE8B9650412837003FDC2E554155EBD05C8096504187E806C3D22E554168A838777E96504187E806C3D22E5541335E27C87E9650414EB1CF73D82E5541FA43D49E7B9650414EB1CF73D82E5541AA9CD7E07696504115B46070CC2E554172518C05999650414DE2C725B32E554198AE77149E965041491286ABAF2E55410AE31D67A4965041000B0DE2B12E5541A29193EEA6965041C3039418B42E5541DFC9046A7F965041D8ACE7A6CE2E554113F731F387965041372426DFD62E554139541D028D965041C9BFC106D42E554150E1C6968E965041AD45F2D1D72E554163814A8B95965041B2321872D22E5541C3156DE994965041C4D29B66D92E5541001DE6B292965041D385F9BAE52E5541E87258F8999650411F40D0D8EF2E5541A761D568AA965041660D8156FF2E55418FB747AEB1965041A027D47F022F5541656D36FFB196504103A91C7EFC2E55417CFADF93B3965041623D3FDCFB2E55413FF366CAB5965041AA0AF0590B2F55411A658309D6965041857C0C992B2F55419573759CD1965041DA102FF72A2F55415E000000FF7FF3D6109750412FC2357B212F55419C1B8FFE0D9750418E733CFF172F554141749240099750415A460F760F2F5541048AFD9C02975041AEF715FA052F5541467E9C06FB965041C6A1A3B4FE2E55415D282AC1F39650410796421EF72E554111516F7DF2965041EC1B73E9FA2E55414A6BC2A6F59650413CC36FA7FF2E55410D812D03EF9650412906088D012F5541888F1F96EA965041D084BF8E072F5541FAE0A90EE89650415A460F760F2F554137E822D8E59650418E733CFF172F5541EB106894E496504192437E791B2F5541C983BEFFE2965041429C81BB162F5541D853007AE6965041FF9E12B80A2F5541888F1F96EA965041D571E52E022F5541FAC3C5E8F09650417ACAE870FD2E5541BCBC4C1FF3965041672A657CF62E554183A2F9F5EF965041585A2302F32E554137E822D8E59650412536C612FE2E554175EF9BA1E3965041D95E0BCFFC2E5541AE09EFCAE6965041FFD8DA03F92E554137CB3EB2EE96504141CD796DF12E554158CA2EB1EB9650419FF2E036EF2E5541BEDFA6AEE2965041B69587F6F92E5541EE0E46D6DF965041971D227DF92E5541E3E6CEADDF965041248D7AE8F72E5541D1E998CBE9965041F8C15C00ED2E55418EB00787E59650411DC984FFE92E5541AAD5B491DB965041AC6D10CEF92E5541426D8425DA965041971D227DF92E5541DD570C28E39650418BE8EE19E82E5541B1647717D896504183DEFCFCE02E55415BF97C8DCC965041F55DDBC0FA2E5541E8904C21CB96504148761DDCFB2E554161B0B63BC99650414E2D578AF82E5541E8904C21CB965041690C0861F52E554199E94780CD965041B8B30C02F32E554133D4CF82D69650413AEE310AE02E5541C361ADF9CD9650412B557D67DC2E5541718F6712C69650411294519CD82E55410A45BCB1BD965041808B448ED62E5541026341BDB69650412D730273D52E5541276A69BCB3965041AFE25ADED32E554108F20343B39650417C1A0714D32E554191F01E34AE96504165AC93B7D92E5541CB473584AB965041603B563DD62E5541E09723D5AB96504167CA18C3D22E55412ACEEAFBA596504126E43FEDD82E554198C5DDEDA3965041F21BEC22D82E5541BCAE80E1A79650412802C5F8D12E5541A1CFCF0AAB9650415EE89DCECB2E55417CC8A70BAE965041600623DAC42E55419B18965CAE965041B9D59EA3C22E5541012E0E5AA59650410F5262FEB52E55419D5E9290A79650419DC1BA69B42E55415D504292AD96504138AC426CBD2E5541A4228879B59650414E422DF1B62E5541156D33DABD965041B357A5EEAD2E5541771E2A98C29650413C56C0DFA82E5541ABE67D62C39650418AB7C84CAD2E5541A52F44B4C69650413C56C0DFA82E55410D987420C896504194DF3F75AD2E55419B07CD8BC6965041FC4770E1AE2E5541092737A6C4965041F00174ADB52E55412ABD212BBE965041B4646129BF2E5541891B607AB89650416EC74EA5C82E55418FD29928B596504119691056CE2E554146E2CE35B4965041A149A63BD02E554185AA2200B59650413D52B349D22E55410C8BB8E5B6965041906AF564D32E554159ECC052BB965041BA0AD206D42E5541F4D64855C496504141C3F0C3D52E55414C60C8EAC8965041B4539858D72E5541E2D91273CE9650415B841C8FD92E554159DBF781D3965041202D063FDC2E5541EBBB8D67D596504140A56BB8DC2E5541FCA7FA78E39650419EF6EDCCC52E5541ACE270CCEC965041C650CE3ACD2E5541B96E6934DF965041EB462D69E22E55412648D71AE4965041E5B76AE3E52E5541DE64C862F4965041BE7B0F81D72E5541024E6B56F8965041B8C4D5D2DA2E5541144BA138EE965041C1CEC7EFE12E554135E18BBDE7965041D4D8B90CE92E5541D43C513AF496504116F4C545F42E5541D68F09A9FE9650412D976C05FF2E554146BC2FFE0D97504168FB3E900D2F55417ECD491A129750418CE4E183112F5541CD744EBB0F9750411EEDEE91132F554142237B5B0A9750413F83D9160D2F5541D89CC5E30F9750411836B5E3162F55417ECD491A12975041C7702B37202F5541FF7FF3D6109750412FC2357B212F5541050100002BA43E2E299750413108AA7F022F55410D72D5E82197504116F4C545F42E554123E048451B97504138D0ACFEE62E554100F7A55117975041EB462D69E22E5541316C41AD0D975041EC8C299DDB2E5541953BBD760B9750411CBCC8C4D82E55413DB23DE1069750413D52B349D22E55414016BF20F99650417AFC8108DA2E55411D2D1C2DF5965041758B448ED62E5541BB7B256FF09650412802C5F8D12E5541339B8F89EE9650414309EDF7CE2E5541339B8F89EE9650411F204A04CB2E55419AE53AEAF696504130D783B2C72E5541C5A39C97F0965041A81E65F5C52E5541058A756DEA965041311D80E6C02E5541D44D1A0BDC965041D1890E34B52E5541448B0931D39650419E07B79DAD2E554120A2663DCF9650411DDE5A66A82E55419F780A06CA965041AC93AF05A02E5541C57F3205C7965041BD4AE9B39C2E5541DF865A04C4965041AC93AF05A02E5541CA366CB3C3965041322E49B7A82E55414E7E4DF6C19650411DDE5A66A82E55414E7E4DF6C1965041C1E39D56A02E5541F4D64855C4965041E27988DB992E554188D56346BF96504178CB5B3B9F2E5541793CAFA3BB9650416714228DA22E5541EF30D877AF96504141C7FD59AC2E554169963EC6A6965041203113D5B22E5541012E0E5AA5965041ADA06B40B12E5541121A7B6BB39650416C855F07A62E5541D77C68E7BC965041390308719E2E55414E7E4DF6C196504150717BCD972E55412406E87CC19650415628B57B942E5541A74DC9BFBF965041C41FA86D922E5541CC54F1BEBC965041CF471F96922E55411BFCF55FBA9650419F18806E952E55416AA3FA00B8965041464904A5972E55415B0A465EB49650410D38EA88932E55419E6B4ECBB8965041C0AE6AF38E2E554118D1B419B0965041C665A4A18B2E554154465075A696504100BDBAF1882E5541D9D32DEC9D96504179DC240C872E55419101E80496965041B3333B5C842E5541E65F265490965041C312EC32812E5541A3FE1DE78B96504156397E4C7C2E5541D32DBD0E8996504167F0B7FA782E5541F85C5C368696504177CF68D1752E5541717CC650849650412EDF9DDE742E554151F7A49C7296504141D8C62A942E554176FECC9B6F965041C41FA86D922E5541773300FF809650415E0E3D06722E554121C8057575965041BE6C7B556C2E5541B4EE978E70965041D72DA720702E55411E754D066B9650411185BD706D2E5541E3107B7B5C9650417E935EBA832E5541A0AF720E58965041C312EC32812E55416D1C52A7689650411DF330CD662E5541C03494C269965041AA628938652E5541FCA92F1E60965041162F3BE4582E55414B5134BF5D965041758D7933532E554133D604285396504181FBEC8F4C2E5541CD8B59C74A96504100D29058472E5541CED155FB43965041F138DCB5432E5541FA8FB7A83D96504140B8692E412E554174F51DF7349650416F0F807E3E2E5541F73CFF39339650418F5F6ECF3E2E554199FC45F631965041164004B5402E55411351E37341965041FE8B94244E2E554197A580F150965041D1AFAD6B5B2E5541F174FCBA4E965041444055005D2E5541E8A34A972F9650417EA83421422E55419FB37FA42E965041164004B5402E5541276C9E6130965041E82EEA983C2E55410B58BA2722965041867DF3DA372E55411E9BEC3D11965041F003A952322E554102870804039650416EDA4C1B2D2E55414B77D3F6039650419309EC422A2E5541912B94D21296504153FB9B44302E55416998736B23965041FF9C5DF5352E5541958B087C2E965041185E89C0392E554169CDA6CE34965041BA1DD07C382E55414FC67ECF37965041EA74E6CC352E55412F76907E379650410A0BD1512F2E55413605530434965041987A29BD2D2E5541E2EC10E9329650414F8A5ECA2C2E5541D44F4FB0589650417A48C077262E55412D1FCB795696504136C932FF282E554117B1571D5D965041749186C9292E554145C2713961965041217944AE282E5541DD5941CD5F9650411D080734252E5541A3022B7D62965041DE173C41242E55410B6B5BE96396504166F8D126262E55419D4BF1CE65965041CE600293272E55411E754D066B965041749186C9292E5541C9160FB770965041E7212E5E2B2E5541B3A89B5A7796504125EA81282C2E5541DB027CC87E965041069A93D72B2E554118AD4A8786965041BD8151BC2A2E55419F8DE06C88965041D88879BB272E55418486B86D8B965041217944AE282E5541111E88018A965041BD8151BC2A2E5541A09A9CA799965041F49C5DF5352E5541782FF368AA96504151A8E3D5252E554186C8A70BAE96504151A8E3D5252E5541DAE0E926AF965041F149A5862B2E5541ACCFCF0AAB965041CC427D872E2E554169963EC6A696504192EB6637312E5541794D7874A3965041283D3A97362E5541E76CE28EA196504141FE65623A2E5541E76CE28EA19650416176CBDB3A2E55410C6341BDB696504117753718522E55419E320ED2D09650418D6553566F2E5541A2CBC274D4965041530E3D06722E5541A085C640DB965041D2E4E0CE6C2E554122AF2278E096504140044BE96A2E5541C8DFA6AEE296504125FD22EA6D2E5541E3E6CEADDF9650410A1E7213712E5541A085C640DB965041D0C65BC3732E5541EF2CCBE1D8965041587F7A80752E55417B7E9E41DE9650418A01D2167D2E5541011938F3E696504119B726B6742E5541C914DA11F49650410C3CF71E6A2E55417709543104975041CB20EBE55E2E5541DE2B88690C9750415E477DFF592E5541E7357A8613975041989E934F572E5541AB9867021D975041844EA5FE562E5541CAFF03AB359750410007C4BB582E5541AEE712DB5097504192E759A15A2E5541AEE712DB509750413918DED75C2E554151B8226837975041A73748F25A2E55417D874DE6189750412057B20C592E5541BD959DE41297504149F78EAE592E5541E29CC5E30F9750419D0FD1C95A2E5541DE2B88690C9750410FA0785E5C2E5541B01A6E4D08975041B6D0FC945E2E55418231CB59049750415D0181CB602E554100086F22FF9650414C4A471D642E5541D414DA11F4965041BD94F27D6C2E5541FB61FE44EA9650410F8FAF8D742E5541F80E46D6DF965041FD9179AB7E2E55418E88905EE59650412F14D141862E55415D13F502EF965041478F00D9902E5541EDD505DDF7965041A3B13411992E554111BFA8D0FB965041F0123D7E9D2E5541D7679280FE96504153C4333CA22E554137FB03330A975041E730C289962E554107CC640B0D975041695A1EC19B2E5541A738F3580197504108B6E33DA82E55410FA123C5029750414BEF7482AC2E5541C0F91E2405975041F8D63267AB2E5541D5490D75059750417FB7C84CAD2E55415891EEB703975041DDF78190AE2E55415D022C3207975041BC61970BB52E554180EBCE250B975041EB903633B22E5541E853FF910C97504154F9669FB32E5541DABA4AEF08975041A15A6F0CB82E5541650C1E4F0E975041E82CB5F3BF2E5541931D386B12975041E60E30E8C62E554163EE98431597504162815271CF2E554163EE984315975041CF5AC057D42E5541988E75E5159750419403AA07D72E5541B706DB5E169750411CE43FEDD82E55413EBFF91B189750415F1DD131DD2E5541ACDE6336169750417E9536ABDD2E5541E7357A86139750414B13DF14D62E5541C7BD140D13975041F4895F7FD12E55419E45AF9312975041DAC833B4CD2E5541218D90D61097504198672B47C92E5541703495770E97504140DEABB1C42E5541F37B76BA0C9750411CF508BEC02E5541B042E575089750413D8BF342BA2E55419681B9AA04975041A711A9BAB42E5541E528BE4B0297504179008F9EB02E554149F8391500975041748F5124AD2E5541E18F09A9FE965041701E14AAA92E5541C23F1B58FE965041B59DA122A72E55413A5F8572FC965041716410DEA22E55417FDE12EBF996504178F3D2639F2E5541D8AD8EB4F796504188D2833A9C2E5541E964C862F49650417939CF97982E554191DB48CDEF96504141003E53942E5541E639871CEA9650418B36057A8E2E5541E2A0D279E6965041879D50D78A2E554156777642E1965041D1D317FE842E5541AF1E7BE3DE965041C33A635B812E5541662EB0F0DD96504165FAA917802E5541B5D5B491DB9650419529493F7D2E55413ED4CF82D6965041F4AFFEB6772E55413A639208D3965041382F8C2F752E55419B07CD8BC696504190A742F4912E5541287725F7C496504147B77701912E5541B282FC22D1965041B14EF649732E554188E62C17A7965041E638DCB5432E5541012E0E5AA5965041DC10658D432E554118AD4A87869650411546E93B712E554186CCB4A184965041C12DA720702E55416F25014CA3965041C7C0763C432E55414FD512FBA2965041D79F2713402E5541C8F47C15A19650411C1FB58B3D2E554147CB20DE9B965041CD77B0EA3F2E554138326C3B989650415AE708563E2E55415D610B6395965041609E42043B2E55419C295F2D969650415C2D058A372E554163F0CDE89196504138446296332E5541FB879D7C90965041FA5397A3322E5541DC37AF2B90965041650F807E3E2E5541D680757D939650412AB8692E412E5541A651D655969650412090F205412E55418B4AAE56999650411AD9B857442E554157AAD1B498965041EAA91930472E55418C5B772781965041988DCA7E6F2E554107F610D989965041FA663865742E5541C7E7C0DA8F965041411107247C2E5541A2E098DB92965041E4D04DE07A2E554187D970DC959650410D712A827B2E554104928F9997965041B4A1AEB87D2E55413EE9A5E99496504165FAA917802E5541EBD063CE939650418E9A86B9802E55416CFABF059996504135CB0AF0822E5541305DAD81A2965041FB73F49F852E55413DD8DC18AD965041B6F46627882E5541FCAB070FBA96504119A65DE58C2E55410A45BCB1BD9650411F5D9793892E55410FB6F92BC1965041C58D1BCA8B2E5541490D107CBE965041A086F3CA8E2E5541C00EF58AC3965041E3BF840F932E554147EF8A70C596504156502CA4942E5541FEEDF6ACDC96504112E267FC7E2E554147DEC19FDD965041C33A635B812E5541890A97A9D09650412DF64B368D2E554190DF5563C6965041304904A5972E554197A34B4CD4965041E3AEBB3EAB2E55410A34F3E0D596504189DF3F75AD2E55411A02DBE6EA96504175C48487BE2E55415213F502EF9650413B6D6E37C12E55412AA84BC4FF965041A857A5EEAD2E5541717A91AB079750413D8BF342BA2E554137237B5B0A975041564C1F0EBE2E55410030E64AFF9650414F776054C82E5541FFE9E916069750410F691056CE2E5541C90311410C97504102231422D52E5541316C41AD0D9750410794519CD82E554169A5D2F1119750413FCDE2E0DC2E5541FF1E1D7A1797504182067425E12E5541299782F3179750410F9E43B9DF2E5541C12E52871697504193E524FCDD2E55413EE770441897504188BDADD3DD2E5541FA67E3CB1A975041E06EA491E22E5541B5E855531D97504176C077F1E72E55411D5186BF1E975041FDA00DD7E92E5541D31ABF9824975041A7244A7CF62E5541059D162F2C975041552A8D6CEE2E5541EABD65582F975041176239A2ED2E55413ED6A77330975041B36A46B0EF2E5541ACCD9A652E975041B7DB832AF32E5541D1FC398D2B975041FA3C8C97F72E554154441BD02997504149E49038F52E55415AFB547E2697504124B5F110F82E5541A75C5DEB2A975041D3EF6764012F55412BA43E2E299750413108AA7F022F554106000000175CDAF6C4965041D121910EEF2E5541CF54612DC796504119290AD8EC2E55411B2C1C71C896504130B6B36CEE2E55412EE9838BC6965041D7178748FD2E5541963A0E04C4965041B19DB713012F5541175CDAF6C4965041D121910EEF2E55410600000057E47E3616975041D08C510CB82E55417D5E4E6B1297504138DEDB84B52E55414427171C189750415E58ABB9B12E55410603BA2C23975041C1D9F3B7AB2E5541F3455212259750413CCB0125B02E554157E47E3616975041D08C510CB82E554105000000F93B484C33975041F53719F38E2E55413743C1153197504187D3B41A8C2E5541F5313E8641975041B13AAAEF822E5541B72AC5BC43975041159F0EC8852E5541F93B484C33975041F53719F38E2E554105000000B678A194159750417D0D7D667A2E5541D2F270C91197504119A9188E772E5541B65BBD6E1E9750416A8ADD976A2E554119C02147219750416E5A1F126E2E5541B678A194159750417D0D7D667A2E554106000000A977676837975041669DB7F76F2E55415DA0AC243697504106099599702E554110C9F1E034975041B66198DB6B2E55417A234CF34597504122A048F4632E5541321CD32948975041FC2579BF672E5541A977676837975041669DB7F76F2E5541060000000CEDF96814975041912B31DE342E5541E24C1DC7139750412552C3F72F2E55415179431C239750412F7A3A20302E5541D959D90125975041631A17C2302E5541F8A9C75225975041DA1BFCD0352E55410CEDF96814975041912B31DE342E554107000000615C0189F6965041A546ECCB232E554137BC24E7F596504196AD3729202E5541236C3696F59650410FF5186C1E2E5541615C0189F6965041923CFAAE1C2E5541D717EA63029750413E24B8931B2E554100B8C6050397504128B64437222E5541615C0189F6965041A546ECCB232E5541070000008203B5DED7965041A67B1F2F352E554178DB3DB6D79650416E428EEA302E5541626DCA59DE965041C7110AB42E2E554170067FFCE1965041C7110AB42E2E554145481D4FE8965041B2C11B632E2E55414F709477E896504114731221332E55418203B5DED7965041A67B1F2F352E55410A000000CF68CAE1B2965041501025A5292E55418678FFEEB19650412C2782B1252E554107A25B26B79650415C5621D9222E5541A4AA6834B9965041CA758BF3202E554125D4C46BBE965041396D7EE51E2E5541E15437F3C09650417735D2AF1F2E554115F51395C1965041EAC57944212E5541F5A42544C1965041374FF9D9252E55412B8BFE19BB9650412C2782B1252E5541CF68CAE1B2965041501025A5292E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3170132 - 93391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -604  </desc>
+<a>
+0106000000010000000103000000050000003201000033333303CC4251410AD7A310FC295441F6285C0FC642514114AE47D1F72954417B14AE37C34251417B14AE07F6295441000000D0C04251417B14AEF7F5295441E17A148EBF4251418FC2F538F6295441C3F5285CBD425141666666C6F62954415C8FC215B9425141F6285C0FFF2954419A999949B042514148E17A24FE295441713D0AE7AE425141EC51B8BE102A54415C8FC215B8425141333333C31A2A5441333333F3B542514185EB5138212A544133333303B4425141C3F528AC272A5441666666D6B5425141713D0A57292A5441AE47E18AB6425141333333332A2A54417B14AEF7B74251411F85EB812A2A5441E17A141EBA42514148E17A24252A544114AE4761BC4251413D0AD7831F2A5441EC51B85EBE425141000000601E2A5441B81E859BBF425141F6285C4F1E2A5441F6285C5FC0425141F6285C8F1E2A544133333343C14251411F85EBF11E2A54419A9999C9C1425141295C8F721D2A5441AE47E10AC3425141333333F31A2A54413D0AD783C7425141E17A149E1A2A54417B14AE67DC42514152B81E75062A54410AD7A3A0EE425141A4703D6AF8295441E17A142E1E4351419A999989CF295441666666B60943514100000060B92954419A999929FE42514100000000B8295441EC51B8CEF7425141713D0A27B3295441F6285C2FF94251410AD7A340AE2954411F85EB51F7425141295C8F62AC29544100000000F442514114AE47A1AD295441F6285C0FF0425141A4703D1AAA295441D7A370BDEC4251411F85EB01AD295441E17A14FEE24251417B14AED7A229544114AE47E1DF42514114AE47C19A295441AE47E10ACE425141C3F5283C8C295441AE47E17AC4425141000000908029544148E17A74B2425141A4703DEA75295441AE47E1BAB242514185EB51D871295441A4703D8AB34251417B14AE076E295441C3F5281C9B425141F6285CAF62295441C3F5286C96425141333333B35E2954413D0AD7D397425141D7A3703D5C29544166666616844251419A9999D9412954415C8FC265834251411F85EB4141295441E17A14FE824251417B14AED73F295441E17A146E82425141333333A33D295441CDCCCC3C8242514185EB51B83B295441A4703D9A8242514114AE47F13A295441C3F528DC82425141B81E854B3A2954411F85EB61834251410AD7A36039295441713D0A578442514148E17A8438295441295C8F1287425141000000503729544114AE4781884251411F85EB7136295441AE47E1DA894251413D0AD7733529544148E17A948B4251415C8FC2A5342954417B14AEA78C425141AE47E1FA33295441EC51B88E8D4251413D0AD773322954410AD7A3B08E425141F6285C1F312954411F85EB718F42514148E17A2430295441B81E85BB8F42514152B81EC52E2954411F85EB0190425141295C8F522D295441F6285C7F90425141A4703D9A2C2954417B14AE7791425141713D0A072C295441713D0A7792425141000000402B295441713D0AE7924251415C8FC2452A295441B81E85BB924251419A99990929295441EC51B80E92425141EC51B82E27295441AE47E1CA90425141E17A147E232954413D0AD7A38F425141D7A3703D21295441B81E85EB8E4251419A9999B92029544148E17A548E4251419A99995920295441333333538C425141713D0A172029544152B81E9589425141A4703DAA1F2954415C8FC2458942514152B81EF51E2954410000007088425141295C8F221C295441295C8F62884251418FC2F5D81A29544185EB51E887425141C3F528FC192954419A999969864251417B14AE2719295441B81E853B854251417B14AE37172954411F85EB81844251413333331316295441713D0A57844251419A9999C91829544148E17A04834251411F85EBC11929544185EB51A8824251415C8FC2F51A295441EC51B8BE81425141B81E850B1C29544100000060754251418FC2F598232954415C8FC2E567425141713D0AE716295441CDCCCC0C5B425141EC51B8AE112954413D0AD7D35A42514114AE472113295441666666C65942514148E17A34172954418FC2F52859425141D7A3708D1929544185EB51B8584251419A9999491B29544185EB515858425141000000601F295441B81E85BB57425141CDCCCCDC202954410000009057425141E17A14EE222954410AD7A310564251413D0AD77327295441333333835542514185EB51B827295441A4703DFA544251410AD7A35028295441295C8F9254425141C3F528BC29295441AE47E13A544251413D0AD7532A2954411F85EBD1534251415C8FC2752A2954415C8FC2E5524251417B14AE972F2954415C8FC235524251410AD7A3B033295441CDCCCCDC514251410AD7A3D03429544114AE471151425141B81E85DB34295441666666564B425141AE47E1AA3C2954411F85EBD14B425141295C8F62422954417B14AE574C425141AE47E1CA45295441333333B34C4251415C8FC2154729544148E17A2450425141CDCCCC5C462954413D0AD7E351425141000000D046295441CDCCCCDC53425141C3F528AC482954413D0AD7C3544251413D0AD7234A2954415C8FC24555425141E17A140E4C29544148E17A54554251418FC2F5F84D295441CDCCCC9C5542514148E17A04512954417B14AEC75542514148E17A5453295441CDCCCC2C564251418FC2F5785529544185EB51E8564251417B14AEA756295441713D0A8757425141713D0AD7572954410000006058425141295C8F925829544185EB5138594251415C8FC27558295441666666B65842514100000080572954410AD7A330574251415C8FC2955529544185EB51E856425141333333F3532954410AD7A3305742514114AE472151295441F6285CCF57425141713D0AE74C295441F6285CCF57425141D7A3700D482954411F85EBE1584251419A999999432954417B14AEA758425141B81E85CB412954415C8FC29557425141B81E857B3F295441A4703D8A5442514185EB51B83C295441EC51B8CE53425141CDCCCC6C3B29544114AE47915242514152B81EF5392954417B14AE97504251413D0AD7B337295441B81E850B514251410AD7A34037295441E17A143E5342514133333373392954417B14AE37554251413D0AD7533C29544114AE47515842514185EB51083F2954419A99992959425141F6285C7F4029544152B81EE5594251413D0AD7A3422954419A999929594251415C8FC2054629544148E17AC45842514114AE471149295441666666B65842514152B81EF54C29544148E17A34584251413333331351295441AE47E1FA5742514114AE477153295441295C8F42584251411F85EB21552954410AD7A38059425141666666B65629544148E17A845A4251411F85EB7157295441000000D05B425141CDCCCC9C5729544114AE47815D425141CDCCCC9C57295441D7A3705D5F425141EC51B81E58295441CDCCCC1C614251415C8FC205592954413D0AD79362425141EC51B8DE59295441713D0A57654251410AD7A3605A2954419A9999F966425141F6285CFF5A295441713D0AF769425141000000B05C295441A4703DBA6C4251418FC2F5185E295441AE47E16A6E4251419A9999395F295441C3F5281C70425141B81E854B60295441CDCCCCCC71425141295C8FA26029544114AE47F173425141D7A370CD602954410AD7A3B075425141F6285CBF60295441B81E850B774251417B14AE475F2954410AD7A34078425141AE47E16A602954415C8FC2A57A425141D7A3707D62295441E17A144E78425141F6285C3F6429544100000060754251418FC2F518622954417B14AEE76F425141F6285C1F612954415C8FC2056E425141B81E85BB5F295441666666466C425141E17A147E5E295441B81E85CB6942514185EB51885D295441C3F5289C68425141000000B05C295441B81E85EB66425141C3F528AC5B295441713D0A5765425141C3F5281C5B295441CDCCCC6C6342514152B81EC55A29544185EB51D861425141333333435A295441CDCCCCCC5E425141295C8F92582954410AD7A3F05C425141D7A3702D58295441333333035E425141CDCCCC5C59295441A4703DEA5E4251418FC2F5385B2954411F85EB315F425141D7A3705D5D295441A4703DBA5F42514152B81ED55E29544152B81E4560425141D7A3700D612954411F85EBF160425141CDCCCCCC61295441B81E851B63425141AE47E15A642954415C8FC2F5634251410AD7A32066295441C3F5287C644251415C8FC2E567295441CDCCCC8C64425141C3F528CC6929544185EB512864425141C3F5287C6C295441333333C36342514114AE47916F29544148E17AD46342514152B81E9572295441CDCCCC8C64425141B81E851B772954413D0AD77362425141666666067C2954413D0AD7C35F425141295C8F627E295441F6285C0F5E425141295C8F1281295441B81E85BB5D425141666666B682295441295C8F525E42514185EB5138842954411F85EBA15F4251410AD7A3F0842954413D0AD77362425141000000E08429544152B81E5564425141E17A149E852954410AD7A390654251415C8FC2158629544185EB515867425141333333C386295441C3F5287C68425141C3F5283C87295441A4703D5A6842514114AE470189295441F6285C1F6A425141000000408A295441CDCCCC8C6C425141B81E852B8B295441713D0AC76A42514148E17A448D29544114AE47F168425141295C8F728E295441CDCCCC3C674251413D0AD7938E29544185EB51D8624251417B14AE378C2954417B14AE1760425141C3F5283C87295441666666A65E4251417B14AE878529544152B81E355D42514185EB5138842954410AD7A3D05C42514152B81EA5822954411F85EBF15C4251413333332381295441295C8F525E425141295C8F627E295441000000D0604251417B14AE277C2954410AD7A33062425141666666B67A295441F6285C6F63425141C3F5282C772954410AD7A38063425141AE47E1BA7529544185EB51D8624251413D0AD773722954418FC2F5E862425141EC51B85E6F2954411F85EBA163425141333333636A295441295C8FB263425141295C8FA2672954413D0AD7736242514148E17A2465295441C3F5287C604251415C8FC2956229544148E17AC45F425141713D0A67612954417B14AE875E425141C3F5285C5F29544152B81E855E4251410AD7A3D05D295441CDCCCC3C5E4251413D0AD7635B2954415C8FC2555D42514114AE47C159295441EC51B8DE5B425141F6285CAF582954413D0AD7F35942514114AE473159295441EC51B8FE584251416666669659295441713D0A87574251417B14AEF75829544114AE47015642514114AE47E1562954413D0AD7C354425141E17A148E53295441EC51B85E54425141EC51B87E4F2954410AD7A35054425141333333E34B295441AE47E1CA524251413333330349295441CDCCCC6C5042514185EB511847295441A4703D5A4F42514185EB5118472954413D0AD7F34C42514114AE4701482954418FC2F5084E425141E17A14DE4A2954410AD7A3904E425141D7A370CD4C29544152B81EA54E42514148E17A744F295441333333734E4251410AD7A3D051295441AE47E12A4D425141E17A14DE532954411F85EBC14A425141666666A655295441E17A147E47425141333333735729544114AE47114542514152B81E9558295441E17A141E43425141EC51B81E5F2954410AD7A3F043425141000000C060295441A4703DCA44425141E17A14BE61295441666666D6454251418FC2F56862295441000000E046425141713D0AC76229544152B81E6547425141F6285CDF63295441E17A14AE47425141CDCCCC4C6529544152B81E4548425141713D0AD766295441CDCCCCFC474251411F85EBD168295441F6285C6F4642514185EB51F867295441EC51B8AE45425141B81E85DB672954415C8FC215444251417B14AE87662954415C8FC205434251415C8FC205662954415C8FC2E541425141AE47E10A662954410AD7A3303F425141AE47E11A672954418FC2F5E83D425141EC51B8FE67295441D7A3703D3C425141E17A148E69295441A4703DEA3A4251413D0AD7736B29544166666676394251415C8FC2956E2954418FC2F5F837425141C3F5285C72295441EC51B82E374251418FC2F528752954413D0AD7A338425141CDCCCC9C76295441C3F528CC38425141295C8F42782954411F85EBC13842514152B81EA57929544114AE4741384251410AD7A3007B295441D7A3708D374251410AD7A3607C295441E17A14EE35425141EC51B85E7D295441666666F63442514152B81E057E29544148E17A4434425141F6285C8F7E295441EC51B89E334251410AD7A3607F295441666666463342514185EB51188029544100000040334251410AD7A330812954417B14AE073342514148E17A74842954410AD7A36032425141CDCCCC0C8829544148E17AE4314251417B14AEA78A29544152B81E65314251417B14AE278F2954419A999919324251411F85EBA1902954419A9999A93242514185EB51589229544148E17A143342514185EB515894295441CDCCCC3C33425141295C8FC29529544148E17AB433425141F6285CFF96295441F6285C3F34425141295C8F9298295441EC51B8DE344251410AD7A36099295441713D0A0733425141295C8FD29B295441A4703D4A314251418FC2F5989D295441A4703DCA2F4251418FC2F5589D2954417CAC924ED542514145AAC115DF295441A4703D0AD642514185EB5128EE29544148E17A94D74251418FC2F5B8F1295441F6285C7FD3425141C3F5280CF5295441E17A146ECE42514152B81E25FC29544133333303CC4251410AD7A310FC29544107000000436E72E2AE425141C55EEF9682295441467A5920B2425141D42500DA7D2954418A23DD9ABA425141D42500DA7D2954416C95BB14C4425141C55EEF9682295441EAC30D50CB4251416B3F18128A2954418A23DD9ABA425141C4C77A4B94295441436E72E2AE425141C55EEF96822954410700000028E9B2F035425141FD4C490C932954415B864F2D3B42514134DB6A928929544119523EA54742514161309D5B7B29544176E6871C554251416E60395388295441AC5F6F9F5042514151D217CD912954417A5947AE39425141A22D72879A29544128E9B2F035425141FD4C490C9329544109000000AA773D1B574251416DA43D053B295441C66EEA555F425141E85D1D4E2D295441E265979067425141437DF4D225295441A13186087442514192E1A152262954411B54F10578425141F281D20737295441088A4C4A714251412AD145843C295441EC929F0F69425141F3575E01412954413A7987D75C42514100B26EFF43295441AA773D1B574251416DA43D053B29544108000000526DA099594251414125973553295441FEE7D1D85A4251411F9D34FC48295441A63D6D46774251411B914DBE452954412060D8437B42514129C1E9B5522954416AC1F14A70425141A66823745529544138EB655166425141208B8E71592954410615DA575C42514145317E7356295441526DA099594251414125973553295441
+</a>
+
+<b>
+01060000000100000001030000000500000070010000A124F89DCD4251419DC4CA8E51295441C57591DDD7425141FCEB65084F295441BF3FD41BD7425141BB47B1404A2954413F2F2DC8C8425141876E423549295441DA9EE4CEC5425141FB28D28E43295441713D0AE7C1425141333333A34029544100000030C2425141D7A3705D40295441713D0AC7BB4251416666664630295441EC51B89EBB425141D7A370AD2C295441AE47E11ABF425141D7A3706D262954411F85EBD1C3425141D7A3706D262954413D0AD7A3C642514148E17A6429295441713D0A37C742514152B81E752D2954411F85EBC1CD4251413D0AD7F32D295441CDCCCC9CD742514148E17A442A29544114AE4791EF4251413D0AD72331295441EC51B8CEFE4251417B14AEA73229544166666656FF425141AE47E15A2B295441666666960043514185EB51D8202954417B14AEC700435141713D0A771F29544185EB5128E3425141000000E01B295441CDCCCCBCDF425141713D0A871A295441713D0A07DC425141B81E857B17295441C3F5282CD74251413D0AD7D314295441A4703D1AD2425141295C8F3213295441CDCCCCCCCE425141000000F012295441EC51B8DEC742514148E17A441129544185EB5128C5425141666666B60F2954419A9999F9C342514114AE47410C2954417B14AEE7BE4251411F85EBF108295441713D0A37BD425141666666C608295441E17A14CEB9425141D7A370FD032954415C8FC295B6425141D7A370EDFA28544148E17A24B9425141D7A370ADFB28544148E17A74BE42514114AE4781FE285441AE47E11AC342514114AE47D1FF2854419A9999A9C5425141AE47E1CA00295441EC51B86EC642514152B81ED5FF2854411F85EB71C6425141713D0A07FE2854413D0AD723CB4251419A9999190329544114AE4701CC425141C3F5286C072954419A999949CC4251413D0AD7930C2954417B14AE07CF4251418FC2F5B80E295441B81E851BD64251410AD7A3300F295441CDCCCC4CE2425141B81E850B142954418FC2F578E74251411F85EBF113295441CDCCCCECEE425141713D0A7715295441AE47E1CAF44251419A9999B90D295441666666F6EC4251417B14AE17072954411F85EBC1EC4251415C8FC27506295441295C8F52ED4251411F85EBE105295441295C8FB2EF425141295C8F82062954419A999989F6425141B81E854B0B29544185EB51E8FC425141295C8F02032954415C8FC215E74251415C8FC235F728544185EB5168CC4251410AD7A340E728544152B81E45CF425141EC51B89EDF28544114AE4781CF4251413D0AD7A3DB2854417B14AEC7D342514148E17A84D82854419A9999A9D6425141E17A142ED9285441C3F5282CDB42514100000060D6285441295C8FD2E242514133333353DA285441000000B0E8425141000000B0D8285441F6285CDFF7425141666666C6DD285441AE47E15AFA425141713D0A17E3285441F6285CCFFC425141295C8F52E42854417B14AE37164351418FC2F558E5285441295C8FD2184351410AD7A320DE2854411F85EB611B435141A4703D4AD928544148E17A341C435141B81E856BD72854418FC2F5381D435141666666A6D42854410AD7A3001E435141666666C6D22854415C8FC255204351410AD7A350CE2854419A9999292143514148E17AA4CC285441AE47E1EA21435141B81E855BCA28544185EB511822435141AE47E17AC82854419A9999591743514148E17AE4C4285441A4703DFA0F435141713D0AE7C4285441EC51B8FE0643514152B81ED5C12854417B14AEB70243514114AE4701BE285441B81E857BE8425141F6285C3FB528544185EB51D8B0425141EC51B81E98285441CDCCCCEC9C4251417B14AE57AA28544114AE47F190425141D7A3704DB5285441D7A370BD814251415C8FC235C3285441E17A147E804251419A999959C42854413333333382425141EC51B8EEC9285441B81E857B81425141C3F5283CCD2854418FC2F518804251418FC2F578CE2854411F85EBA17E4251411F85EB61CE28544114AE47717C425141EC51B80EC8285441C3F5286C77425141666666A6CC285441CDCCCCBC62425141295C8F92DF285441B81E852B6A42514152B81EB5E9285441B81E85EB794251410AD7A330FF2854415C8FC2457B42514100000040002954418FC2F5887F425141713D0A97032954415C8FC2E580425141B81E85EB032954418FC2F50882425141333333A30329544148E17A248442514185EB511802295441C3F5285C88425141E17A148EFD285441AE47E19A8E425141EC51B89EF928544152B81E7592425141A4703D0AF8285441295C8F2295425141A4703D0AF82854413D0AD75399425141F6285C9FF928544185EB51C89B425141E17A148EF9285441000000609D42514148E17AE4F82854410AD7A3809E425141333333C3F7285441F6285C7F9F425141A4703DEAF328544148E17AD49F425141A4703D9AEF2854413D0AD7E3A0425141713D0A37ED285441EC51B8BEA3425141F6285C5FE8285441C3F528ACA44251417B14AEB7E528544152B81E45A5425141295C8F92DA285441713D0A57A4425141EC51B83ED9285441A4703DCAA642514152B81E15D62854417B14AED7AA425141F6285CDFD328544114AE47A1AD42514152B81E35D3285441000000E0B14251410AD7A3E0D2285441295C8F32B4425141C3F528ACD32854415C8FC2A5B74251419A9999A9D528544100000080BA4251415C8FC265D528544148E17AE4BB42514133333363D72854419A999939BC4251410AD7A360D9285441295C8FD2BC4251419A9999F9D9285441C3F5287CBD4251417B14AED7D9285441CDCCCCACBF425141F6285C2FD82854415C8FC245C0425141E17A140ED7285441CDCCCCECC2425141EC51B86ECE285441A4703DEAC24251410AD7A370C9285441EC51B80EC34251417B14AE97C8285441713D0A97C342514152B81E55C7285441713D0AE7C7425141C3F5286CC2285441D7A3706DC94251417B14AEF7BF285441000000B0CA42514133333353BB2854417B14AE37CB425141B81E856BB5285441333333E3CA42514114AE47C1B428544185EB5128CA42514166666616B52854410AD7A390C8425141F6285CBFB62854411F85EB81C64251417B14AE77B9285441295C8F72C542514114AE4721BA2854410AD7A340C442514152B81E65BA2854415C8FC245C04251417B14AE77B92854411F85EBB1BB425141295C8F12B8285441EC51B86EBA425141295C8F12B8285441A4703D0AB94251418FC2F578B8285441C3F528DCB4425141E17A14FEBA285441713D0A07AE425141295C8FB2C028544185EB5108AD425141AE47E13AC128544185EB51F8AB425141B81E854BC12854418FC2F5E8AA4251413D0AD7C3C0285441295C8F82AA42514114AE4781BF285441713D0AC7AA425141AE47E1DABB285441CDCCCC1CAA4251410AD7A300B92854411F85EB71AA4251418FC2F568B72854415C8FC2C5AB425141A4703D5AB5285441295C8FA2AC425141D7A3707DB4285441000000A0AE425141C3F5284CB3285441F6285CAFAF425141A4703D1AB2285441C3F5288CB0425141666666C6B0285441E17A14BEB1425141713D0A97AD28544148E17A44B34251417B14AE77AB285441EC51B8BEB6425141A4703DEAA82854415C8FC2A5B7425141EC51B84EA728544185EB5188B84251415C8FC2E5A028544100000090B642514185EB51A8A0285441295C8FE2B6425141C3F5285C9D285441AE47E12AB9425141F6285C7F9D28544114AE4741B9425141666666D6A02854410AD7A360B8425141CDCCCC7CA72854411F85EB61B7425141713D0A47A928544114AE4731B5425141295C8F22AB285441D7A370DDB3425141295C8F32AC285441AE47E19AB2425141E17A140EAE2854418FC2F568B1425141B81E851BB1285441E17A14AEB0425141F6285C6FB2285441D7A3708DAF425141295C8FC2B3285441D7A3705DAD42514148E17AF4B4285441666666D6AB425141CDCCCC9CB6285441D7A3703DAB425141B81E859BB7285441AE47E10AAB425141B81E85ABB8285441295C8F92AB4251419A9999C9BB285441D7A3703DAB425141CDCCCC3CBF2854413D0AD7A3AB4251417B14AEF7BF285441EC51B85EAC425141EC51B86EC0285441D7A3705DAD425141AE47E12AC02854413D0AD7F3AF425141A4703DFABD28544148E17A94B7425141295C8F12B82854418FC2F508BA4251413D0AD713B7285441295C8FC2BB42514152B81E25B728544166666676C242514166666666B928544148E17A84C4425141A4703DAAB9285441295C8F72C542514152B81E55B928544152B81EB5C64251411F85EB01B82854419A999919C8425141000000C0B5285441713D0A17CA42514148E17AE4B3285441713D0A27CB425141295C8FC2B328544152B81E15CC425141B81E855BB4285441AE47E17ACC42514152B81E15B6285441C3F5287CCB4251417B14AEA7BB28544185EB5128CA425141CDCCCC4CC02854411F85EBA1C842514114AE47C1C22854419A999959C4425141C3F5282CC82854419A9999C9C3425141D7A3700DCA28544148E17AF4C342514185EB5198CE28544133333323C1425141B81E850BD8285441295C8FB2BF425141C3F528CCD92854411F85EBA1BD425141C3F528CCDA2854410AD7A3D0B8425141CDCCCC1CDD28544100000000B7425141D7A370DDDE285441000000C0B6425141E17A142EE028544100000040B7425141EC51B80EE328544114AE47D1BB42514133333393EF28544114AE47B1BB4251413D0AD763F128544114AE4701BB42514148E17A34F32854410AD7A3E0B942514152B81EA5F42854410AD7A370B842514152B81EA5F5285441CDCCCC0CB44251417B14AE87F72854411F85EB11B342514166666646F8285441A4703D6AB24251418FC2F548F92854417B14AE07B2425141E17A14BEFA28544100000000B2425141333333D3FD285441295C8F92B142514185EB51E80429544133333303B34251419A9999C90529544114AE47D1B24251415C8FC26507295441B81E85ABB24251418FC2F57808295441713D0A67B1425141C3F5286C08295441A4703D5AB1425141333333730C295441EC51B8BEB2425141C3F5281C11295441666666F6B242514185EB514813295441CDCCCCFCB34251410AD7A310172954417B14AED7B3425141333333431B295441EC51B82EB3425141AE47E1BA20295441EC51B82EB342514114AE47C12229544114AE4761B44251416666669626295441295C8FB2B54251419A999919292954417B14AED7B54251411F85EBE129295441EC51B8BEB54251417B14AE772A29544185EB5148B542514114AE47712B295441EC51B82EB442514114AE47912C295441D7A3706DB2425141295C8F522E295441E17A147EAF425141AE47E10A33295441666666D6AD425141A4703D5A3529544152B81EF5AB425141CDCCCC2C3929544100000070AB42514148E17A543A295441713D0A47AB425141C3F5283C3B295441CDCCCC4CAB4251415C8FC2453D295441EC51B81EAB425141713D0AC73E2954411F85EB91AA425141295C8F4241295441B81E85CBA9425141A4703D8A43295441AE47E14AA8425141713D0AF7462954418FC2F5F8A74251415C8FC20549295441AE47E12AA84251411F85EB614D29544166666616A84251411F85EBD14E29544148E17AC4A7425141B81E85DB4F2954418FC2F568A6425141C3F5282C52295441AE47E14AA5425141295C8FE25429544152B81EE5A44251417B14AE4757295441E17A140EA44251413333332357295441295C8F82A44251410AD7A3B05429544148E17AA4A54251415C8FC2D551295441F6285C0FA742514148E17AA44F2954415C8FC265A7425141666666B64E2954413D0AD783A7425141333333434D29544166666636A742514152B81EF54829544114AE4761A74251415C8FC2E546295441666666E6A8425141295C8F92432954413D0AD7D3A9425141EC51B80E412954415C8FC265AA425141CDCCCCAC3E295441B81E858BAA425141F6285C2F3D295441EC51B87EAA425141000000103B295441713D0AB7AA425141666666163A295441A4703D3AAD42514148E17A34352954418FC2F508AF425141D7A370BD32295441A4703DEAB1425141B81E85FB2D29544100000080B2425141333333332D29544148E17A54B4425141E17A147E2B29544114AE47D1B44251418FC2F5C82A295441C3F5281CB5425141713D0A072A29544100000010B54251415C8FC24529295441AE47E1CAB34251418FC2F538272954419A999909B3425141A4703D6A25295441E17A144EB24251419A9999F922295441EC51B82EB24251413D0AD7D32129544152B81E35B2425141E17A143E2029544114AE47D1B2425141D7A3703D1B2954417B14AED7B2425141E17A14FE1629544133333303B2425141666666A613295441713D0A67B1425141000000A01229544133333373AF4251413D0AD77312295441CDCCCC6CAF425141713D0AF70F2954413D0AD753AF42514148E17AC40E2954415C8FC235AE425141C3F5284C0B295441AE47E15AA6425141C3F528BC0D2954415C8FC255A3425141F6285CDF032954410AD7A330AD4251415C8FC2D500295441295C8F02AF425141AE47E1BA06295441AE47E1EAAF42514114AE472106295441F6285C2FB0425141713D0A17052954417B14AEC7B0425141B81E854B0229544148E17A04B14251417B14AE67F928544148E17AA4B14251417B14AE27F8285441F6285C9FB2425141E17A140EF72854410AD7A370B74251413D0AD7C3F42854410AD7A370B942514148E17A74F328544114AE4771BA4251413D0AD7B3F128544114AE47C1BA42514133333313F0285441000000C0B7425141000000E0E6285441000000F0B6425141000000C0E5285441EC51B89EB4425141F6285C0FE4285441E17A14DEB1425141F6285C3FE3285441C3F528DCAC425141EC51B83EE2285441B81E85ABAA425141EC51B85EE2285441A4703D0AA7425141F6285C3FE4285441A4703DFAA542514100000020E62854419A999949A54251410AD7A3A0E82854418FC2F508A2425141295C8FB2ED28544185EB5108A1425141333333D3EF28544185EB51E8A042514148E17AF4F32854417B14AE479F42514166666676F92854417B14AE579E425141713D0A77FA285441713D0A479C425141713D0AF7FA2854415C8FC21599425141713D0AD7FA28544152B81EC594425141295C8F22F928544148E17A949242514114AE4741F9285441000000608F42514133333383FA285441295C8F0289425141CDCCCC7CFE28544152B81ED5844251410AD7A33003295441333333B3814251418FC2F54805295441CDCCCC2C8C425141D7A3707D0D295441A4703D9A95425141000000E014295441AE47E1AA984251416666664617295441D7A370CD9942514185EB51082A29544166666616844251419A9999D941295441DA2D55B697425141EB09FE155C295441244790B497425141BFA796195C29544171EAE5D197425141B40CD7405C295441B52D748896425141CAE640CB5E295441B0411D579842514115632F5560295441D05EF8899A42514144FE032362295441DF57D985984251414791C7145E295441ABAD5D3E98425141FBB9FB845D295441FC76A13E9E425141B4BB37C15B29544101E18F649E425141373710B65B29544155ACC07B9F425141201916C25C295441A877F192A042514174E446D95D295441BE95EB869F4251410AECD1CF5F2954416549102C9D4251416CE9D83163295441CFA349ED9C42514136092F8463295441C7E5834C9D425141910F95B3632954411B1561EFA6425141DF172A2D68295441A4703D8AB34251417B14AE076E295441C4E7B78FB6425141ED28C63B71295441A8BE6720B942514185CA6D917129544186E04EFFB94251416E4506AE712954413617953CBC4251410ED879336D2954413515F330BB4251417AF746836A295441ECA81DF0BB4251410ACCADED6629544105CE7F42BC425141C3D8B7B866295441DC78351DC0425141562F6D3B64295441CA5C7F80C142514161D1FA43622954416B4178EDC34251413266E0CC5E295441F2B82D4DC4425141BB4D26445E2954414C7FE11AC342514127F25980582954415FDA9CA8C24251412363C959562954413836B3B2C2425141F5645D5556295441D413A48FCD4251418D7E529251295441A124F89DCD4251419DC4CA8E512954410A0000008FC2F5D8AD42514152B81E052529544148E17AE4A8425141295C8F82232954410AD7A380A64251413D0AD71328295441F6285C7FA242514148E17A142A2954410AD7A300A04251410AD7A39026295441666666F69B425141EC51B8EE25295441C3F528BC9C4251413D0AD7C31E295441C3F528ACA24251419A9999691C29544166666676AF42514148E17A74222954418FC2F5D8AD42514152B81E05252954410A000000C3F528AC8B42514152B81EF5D2285441B81E859B934251413D0AD763D8285441AE47E18A9B425141D7A3705DE02854410AD7A3D09C42514166666676E3285441AE47E18A9B425141713D0AA7E4285441D7A370BD9842514185EB5158E328544152B81E258A4251413D0AD7F3D42854417B14AE17894251413D0AD743D328544185EB5198894251419A999979D2285441C3F528AC8B42514152B81EF5D22854410500000085EB51A8C1425141E17A144EDD285441C3F5280CC1425141AE47E16ADF285441B81E85CBBF425141AE47E10ADF285441C3F5286CC0425141713D0AF7DC28544185EB51A8C1425141E17A144EDD28544126000000333333B37942514185EB51D8D82854419A9999297A4251413D0AD7C3D92854413333336372425141A4703DAAE32854415C8FC275704251418FC2F528E7285441666666867042514133333383E92854413D0AD72373425141295C8F52EC2854417B14AEA775425141D7A370DDF0285441CDCCCC1C7642514100000020F62854413D0AD7C376425141A4703D0AF7285441CDCCCC6C7A42514100000050F82854410AD7A3807B425141A4703D3AF9285441C3F528CC7B42514152B81E35FA285441C3F528CC7B425141F6285CCFFB28544114AE47D17A42514152B81E85FE28544114AE47217A425141AE47E14AFE285441C3F5281C7B425141EC51B8BEFB285441C3F5281C7B425141EC51B84EFA285441EC51B89E7A42514152B81E75F9285441AE47E1CA774251410AD7A380F828544152B81E2576425141AE47E1DAF728544148E17A6475425141000000E0F6285441666666D674425141713D0A07F1285441D7A3708D72425141000000D0EC2854413D0AD7936F425141A4703D1AEA285441D7A370DD6E42514100000080E728544148E17AA46F42514133333373E4285441CDCCCC5C70425141CDCCCC2CE3285441713D0A077242514148E17AB4E12854410AD7A320724251413D0AD7F3E028544152B81EF56E425141295C8F12DB285441CDCCCC5C7042514148E17AA4D7285441CDCCCC1C714251417B14AE37D72854411F85EB4172425141E17A140ED7285441C3F528EC73425141CDCCCC3CD62854411F85EB017842514152B81E45D1285441295C8FF27A425141B81E85FBD3285441AE47E18A79425141A4703D7AD7285441333333B37942514185EB51D8D8285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986599 - 59487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+010600000001000000010300000001000000650000007B14AE37F89650417B14AE977F105541C3F528CCF59650419A999909831055415C8FC2D5F09650417B14AEE7861055411F85EBE1E39650410AD7A3508D105541EC51B8FED8965041333333739210554152B81E75D19650418FC2F5F89610554133333333CC9650417B14AE379C105541C3F5280CCA9650413D0AD743A0105541C3F528DCC6965041D7A3700DAE1055419A999979C4965041295C8F62B51055413D0AD7B3C1965041EC51B8DEBA10554166666636BE965041D7A3707DBF105541EC51B8EEB9965041AE47E12AC3105541EC51B8EEB39650417B14AE07C7105541EC51B82EA4965041E17A148ECE105541AE47E14A859650417B14AE67DC105541B81E855B789650417B14AE07E310554152B81E457B965041C3F5289CE8105541C3F5289C87965041C3F5282CE2105541000000D0B69650419A999949CE105541B81E85CBE09650419A999999BC1055417B14AE27E796504152B81E95B3105541EC51B8EEEF965041000000A0A41055415C8FC245F196504185EB51F8A2105541C3F5283CEE965041E17A145EA0105541333333E3FA9650410000000095105541E17A149E0B9750418FC2F558A410554152B81EE52C975041AE47E15A8B105541000000002D97504185EB51C887105541AE47E18A2C975041AE47E14A841055419A9999792A97504152B81EF57D105541F6285CDF2397504166666686711055418FC2F5581697504185EB51E859105541666666B6139750411F85EB6157105541666666B613975041295C8F02561055410AD7A37013975041C3F528BC541055417B14AE770C975041A4703D6A48105541F6285C1F09975041295C8FB2411055419A99998903975041713D0A473810554185EB5138039750410AD7A360371055417B14AE37FF965041D7A370AD2B10554185EB51D8FC965041666666E6271055415C8FC2A5F79650410AD7A3F02210554166666616EE96504152B81EE51A1055418FC2F5E8EA9650419A999959171055411F85EB31E196504185EB51F80A105541B81E85ABDB965041666666160510554166666696D4965041713D0A87FE0F55411F85EB61C9965041A4703D7AF50F55418FC2F558C3965041713D0A47F10F554133333383BD965041CDCCCCACED0F55419A9999A9B3965041E17A146EE80F554148E17AE4AB965041295C8FD2E10F554166666686A4965041F6285C2FDD0F5541D7A370ED99965041A4703DEAD60F5541C3F5287C8D965041713D0AB7D10F554185EB51A88496504100000040F10F5541000000807B96504148E17AF411105541F6285C5F7B9650411F85EB9112105541E17A145E7B9650410000003013105541B81E857B7B9650410AD7A3D013105541333333B37B965041295C8F62141055411F85EBE17B965041A4703DBA14105541295C8F427C965041CDCCCC3C151055413D0AD7B37C9650418FC2F5A8151055419A9999397D965041E17A14FE15105541A4703DFA819650413333338318105541666666068C9650417B14AE271C105541E17A141E929650417B14AE071D1055415C8FC215979650418FC2F5581E105541E17A147E9C9650411F85EB212110554185EB5178A0965041666666C61A1055419A999979A9965041D7A3705D211055417B14AEE7A59650410AD7A31027105541295C8FB2A79650411F85EB31281055411F85EB01A8965041E17A146E281055418FC2F508AF96504152B81E752D105541C3F5282CB796504152B81E7532105541295C8F12C0965041D7A3701D38105541295C8F32C3965041D7A3701D3910554100000010C69650417B14AED73A1055410AD7A380CB965041E17A142E3D10554166666686D196504148E17A743E1055418FC2F5A8D69650418FC2F54840105541C3F5282CD89650419A9999F93F1055419E940022D8965041752A52863D1055410AD7A3F0D89650410AD7A380401055418FC2F5F8DA965041713D0AF741105541AE47E17ADD9650411F85EB41441055411F85EB51E0965041E17A144E4710554152B81E65E3965041A4703D7A4B105541CDCCCCDCE296504152B81EE54C105541CDCCCC8CE9965041D7A3704D5610554185EB51F8EB965041B81E85DB5A105541EC51B8EEED9650411F85EB715F10554148E17AD4F1965041666666666A105541E17A14FEF2965041295C8F626F10554152B81EB5F596504185EB511878105541713D0A77F796504148E17A547D105541C4C2D175F79650415DB89B547D1055417B14AE37F89650417B14AE977F105541
+</a>
+
+<b>
+0106000000010000000103000000010000003500000085EB51D8FC965041666666E6271055418F3C70E7F9965041B2DFEB1725105541E1110F40F6965041CBF09FC321105541F7A51876F19650412CA4F1BB1D10554166666616EE96504152B81EE51A1055418FC2F5E8EA9650419A99995917105541D6B9EB87E59650415A67D07E10105541040FE893E2965041384F69BB0C105541707E8199DF96504125A27A450910554176AB3400DF965041337042A208105541C8ABEB6CDB965041E0336BDC04105541C3F5287C8D965041713D0AB7D10F554185EB51A88496504100000040F10F5541000000807B96504148E17AF411105541295C8F427C965041CDCCCC3C15105541AC209C7A84965041F61C5A6B19105541666666068C9650417B14AE271C105541E17A141E929650417B14AE071D1055415C8FC215979650418FC2F5581E105541E17A147E9C9650411F85EB212110554185EB5178A0965041666666C61A1055419A999979A9965041D7A3705D21105541295C8FB2A79650411F85EB3128105541C3F5282CB796504152B81E7532105541387162BAC2965041C7DDFBF638105541295C8F32C3965041D7A3701D3910554100000010C69650417B14AED73A1055410AD7A380CB965041E17A142E3D10554166666686D196504148E17A743E1055418FC2F5A8D69650418FC2F548401055419E940022D8965041752A52863D1055411F85EB51E0965041E17A144E4710554152B81E65E3965041A4703D7A4B105541D4BDF840E3965041224577DA4B105541F6285C9FE3965041CDCCCC6C4C105541CDCCCC8CE9965041D7A3704D5610554185EB51F8EB965041B81E85DB5A105541EC51B8EEED9650411F85EB715F10554148E17AD4F1965041666666666A105541E17A14FEF2965041295C8F626F10554152B81EB5F596504185EB511878105541713D0A77F796504148E17A547D105541C4C2D175F79650415DB89B547D1055417B14AE37F89650417B14AE977F1055418FA00853FE965041E052401A8A105541DE5B31A310975041B0E547C57A105541EE2A84BF15975041175F56DD6B105541F6285C2F139750419A999949591055410AD7A37013975041C3F528BC541055417B14AE770C975041A4703D6A48105541F6285CEF029750411F85EB81381055417B14AE37FF965041D7A370AD2B10554185EB51D8FC965041666666E627105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979678 - 3182024
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A1759E550410AD7A3E0967854415C8FC2853CE55041AE47E19A857854417B14AEB72CE55041D7A370DD917854410AD7A3E01EE550418FC2F5989C785441A4703D8A2FE5504152B81E45B37854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441713D0A1759E550410AD7A3E096785441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000713D0A1759E550410AD7A3E0967854412C1C80DB4CE55041B86A824CA1785441B90870E449E55041CDDDF29CA3785441F77A5F6A45E550410A3E2624A7785441BD37AE8E43E550414AC1B1A1A87854416D464D4540E55041269AD3C7AA785441FBFB09323FE55041855ECE7BAB785441B4DCD1D536E55041B3399905B17854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441713D0A1759E550410AD7A3E096785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979678 - 3552212
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A1759E550410AD7A3E0967854415C8FC2853CE55041AE47E19A857854417B14AEB72CE55041D7A370DD917854410AD7A3E01EE550418FC2F5989C785441A4703D8A2FE5504152B81E45B37854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441713D0A1759E550410AD7A3E096785441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000713D0A1759E550410AD7A3E0967854412C1C80DB4CE55041B86A824CA1785441B90870E449E55041CDDDF29CA3785441F77A5F6A45E550410A3E2624A7785441BD37AE8E43E550414AC1B1A1A87854416D464D4540E55041269AD3C7AA785441FBFB09323FE55041855ECE7BAB785441B4DCD1D536E55041B3399905B17854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441713D0A1759E550410AD7A3E096785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990465 - 344911
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000020000000103000000010000003E000000713D0A27E5AE5041B81E855BE2D854419A9999A9DDAE5041EC51B8CEF0D85441000000E0E6AE5041D7A3701DE9D85441E17A149EEBAE50410AD7A3F0E2D85441CDCCCCCCECAE50410AD7A3D0E1D85441C3F528CCE9AE5041713D0A37E0D8544152B81EF5E8AE50415C8FC205DDD8544166666606E5AE5041CDCCCCFCD7D8544148E17A44E3AE504114AE47E1D8D85441EC51B82EE1AE504185EB5188D5D85441D7A3702DDDAE5041713D0A27D4D85441E17A142EDBAE504114AE4791D2D8544152B81E15D9AE5041295C8F82D3D85441E17A141ED7AE504148E17AE4D0D85441E17A14FED4AE5041A4703D3AD0D85441295C8FF2D2AE504114AE4701CED854410AD7A3B0D1AE504100000090D0D854413D0AD7E3CEAE5041CDCCCC2CD1D85441666666B6CCAE504148E17A34CFD85441B81E852BC9AE50410AD7A3C0CFD8544185EB51B8C6AE5041D7A3707DCCD8544166666676C4AE504152B81E65CDD85441EC51B83EC3AE504185EB51E8CBD854417B14AE97BEAE50419A9999C9CBD8544133333353BDAE5041C3F5282CCBD85441CDCCCC2CBDAE5041A4703D8AC9D85441C3F5281CBCAE5041AE47E17AC7D85441CDCCCCFCB6AE5041A4703DEAC4D85441B81E85ABB5AE5041F6285C9FC2D854418FC2F578B3AE504166666676C1D85441F6285CAFB2AE5041EC51B8AEBED85441295C8F42AFAE5041295C8F02BFD85441C3F5283CADAE5041CDCCCC7CBDD85441295C8F92ABAE50415C8FC215BED8544152B81EE5A8AE5041CDCCCC6CBDD85441713D0A77A6AE5041B81E856BBBD85441C3F5285CA4AE504185EB51D8BBD85441CDCCCC0CA2AE504133333343BBD85441C3F5285CA1AE5041EC51B8DEB9D85441A4703DFA9DAE50415C8FC295B8D85441295C8FC29CAE50419A999999B6D85441B81E852B99AE5041713D0A07B7D85441B81E856B98AE5041295C8F42B6D854417B14AE7799AE50413D0AD733B5D85441A4703DAA95AE504114AE4791B4D85441295C8FD292AE50410AD7A3E0B1D85441F6285C9F91AE5041666666F6B3D85441295C8F128FAE504185EB51B8B1D854419A9999798BAE5041C3F5285CB0D854418FC2F54889AE504148E17A94AED854419A99999986AE5041B81E859BAAD854415C8FC29586AE504148E17AF4A6D85441333333A384AE5041E17A147EA4D85441EC51B89E7CAE5041666666D6AED854413D0AD7037FAE504114AE4731B3D854410AD7A3B090AE5041CDCCCC8CBED854415C8FC24593AE504152B81E75C1D8544152B81E45A6AE5041A4703D3AC6D8544100000040B2AE504152B81EB5CCD85441713D0AB7B7AE5041CDCCCCBCD2D854415C8FC295CFAE50417B14AEB7D8D85441713D0A27E5AE5041B81E855BE2D854410103000000010000003600000000000070EDAE504166666676E0D8544152B81E05F0AE5041F6285C9FD8D8544166666626EFAE50415C8FC285D6D85441F6285C4FD0AE50410AD7A300C7D8544152B81E55C3AE504114AE4721C3D8544133333333ACAE5041A4703DFAB2D8544166666616A0AE50413D0AD7B3ADD85441EC51B84E89AE5041A4703D9A9DD854417B14AED786AE5041D7A3703DA1D85441F6285CCF88AE5041D7A370EDA5D854415C8FC2B588AE5041C3F5280CA9D85441AE47E11A8BAE504185EB5108ADD854419A9999498EAE5041F6285C2FAED8544185EB51A890AE5041333333F3AFD854410000003091AE50417B14AEA7B1D8544148E17A8492AE50419A999939B0D85441EC51B81E96AE5041CDCCCCCCB2D854418FC2F5A89AAE504185EB5128B4D8544114AE47B19AAE5041000000C0B5D8544152B81E159EAE504152B81E05B4D85441AE47E1EA9EAE504152B81EA5B7D854410AD7A380A2AE5041D7A370DDB8D85441E17A148EA2AE504133333343BAD85441AE47E17AA4AE50413D0AD783BAD854411F85EB31A7AE504185EB51D8B9D8544185EB5148A9AE5041713D0A97BCD854417B14AE67ABAE5041333333F3BCD85441CDCCCCFCACAE5041713D0A57BCD85441C3F5285CAFAE504185EB51E8BDD8544133333323B3AE5041D7A3708DBDD8544148E17AB4B4AE50419A9999A9C0D85441C3F5288CB6AE50418FC2F508C2D85441C3F528ACB7AE50410AD7A3C0C3D85441000000A0BCAE504114AE4731C6D85441CDCCCC5CBFAE50413D0AD763C7D854415C8FC2A5BFAE504152B81E35CAD85441E17A140EC4AE5041A4703D8ACAD8544100000020C5AE50418FC2F5B8CBD854417B14AE17C7AE504166666646CBD85441713D0AE7C9AE50413D0AD7B3CED85441CDCCCCFCCCAE504148E17A14CED854415C8FC225CFAE5041D7A3704DCFD85441CDCCCCBCD0AE5041F6285CFFCED854411F85EB71D2AE5041E17A14BECCD8544114AE4781D4AE5041A4703DAACCD8544166666646D6AE5041AE47E1DACED85441CDCCCC7CD9AE5041B81E858BD1D85441295C8FA2DBAE50413D0AD733D1D85441AE47E1FADDAE5041295C8FE2D2D85441B81E859BE1AE504185EB5178D3D85441295C8FC2E5AE5041AE47E16AD7D8544114AE4791E9AE5041CDCCCC2CDAD85441713D0A07EBAE504114AE4741DFD8544100000070EDAE504166666676E0D85441
+</a>
+
+<b>
+010600000001000000010300000001000000720000006E4D8D04F0AE5041089F15A1D8D8544166666626EFAE50415C8FC285D6D85441794248ECD3AE5041C9A819D2C8D85441798E72E8D3AE504185D581E4C8D85441F6285C4FD0AE50410AD7A300C7D8544152B81E55C3AE504114AE4721C3D8544133333333ACAE5041A4703DFAB2D8544145DC3531A8AE50416DC66B3BB1D854418EC44F74A8AE504100C77D93B1D85441E2B0931AA8AE5041FA96BF8EB2D854411FD0F012A8AE50410C0DA8CFB2D85441528C9419A3AE50414FE389DDB1D8544144F980EAA2AE504126E47F3EB0D854419433B5F7A3AE5041E427FA9CAFD85441D887EFBAA4AE5041C1A972B9AFD85441934FD15BA1AE5041773E8F41AED85441E8DC4E88A0AE50414B7FC830B1D8544149A7DC03A0AE5041677326C8B1D85441300AB9619CAE5041088D2D18B1D85441A7809A9E9CAE50412A2F047DB0D85441EA186FF59BAE5041041CDD75AFD85441F23C9BDA9AAE504178CC88E0AED8544175F44D9C98AE50411FA5102DAED854413829AFC996AE50417C7E9879ADD854417472CC5095AE5041E596F7FBACD854412C68564893AE5041E3184990ACD854413D98144D92AE5041611EECB8ABD85441528558F391AE5041D1660940AAD85441BE1B66E191AE50418D2CD532A9D854411F68298190AE5041BBC8670BA8D85441D53C0BB58FAE504167CC2872A7D85441A62EF2838EAE5041CF66D988A6D8544103C9A29A8DAE5041D596978DA5D8544156B5E6408DAE5041F7018A9FA5D85441C10C1DF98CAE504167CC2872A7D85441C10C1DF98CAE50414CAF26C7A8D85441C10C1DF98CAE50417ABD3FF8A9D8544116770F0B8DAE504120A13D4DABD85441583395AC8DAE50414FAF567EACD8544185C3FF718EAE50413B01EA0DADD854413E556A378FAE50419F2862C1ADD85441E3F9905690AE504120E4E762AED854416D63836890AE5041F8870E82AFD854415C755B6F90AE5041F743C7C8AFD8544185EB51A890AE5041333333F3AFD85441773AA5C590AE5041BC118A51B0D854413600003091AE50413A14AEA7B1D854418834E6FF91AE5041883426C8B0D8544148E17A8492AE50419A999939B0D85441EC51B81E96AE5041CDCCCCCCB2D85441E7B0928999AE5041AC8563D2B3D85441F96C59DF99AE504130A19DBBB2D854419E1180FE9AAE5041997A2508B2D85441CC1F992F9CAE50413553AD54B1D854412EB727FE9FAE50411818ACCEB1D85441EBE12E099EAE50414830360BB4D854418589140D9EAE5041A10F3909B4D85441842C190E9EAE5041420DB408B4D854413AA670119EAE5041537BFF06B4D8544152B81E159EAE504152B81E05B4D85441F1BAED159EAE5041C86AA108B4D8544130C9922EA0AE50413ED1F39BB3D8544115AC9083A1AE50413A146EFAB2D8544150385820A3AE504163AF1E11B2D854417640AC12A8AE50412AD2EED1B2D854412CDCAEF6A7AE504128A5D8BFB3D85441246D19BCA8AE50417E0FCBD1B3D854411E7C32EDA9AE504122B4F1F0B4D85441262E723DACAE50415E40B98DB6D85441DD412E97ACAE5041A13B1665B7D8544161BA39DAADAE504135A50877B7D85441B7242CECADAE5041E3F79B06B8D85441E532451DAFAE5041C8DA995BB9D85441C4245CA3B1AE5041F7278AC2BAD854419F46312EB3AE5041EE791D52BBD85441EE80653BB4AE5041F0F7CBBDBBD85441FA71E4E5B4AE5041DE883683BCD854417EEAEF28B6AE504180AFAE36BDD85441777B5AEEB6AE5041D619A148BDD8544149EFC208B9AE50410B58787EBDD85441D098E066B9AE5041B347759ABCD854410C8B0376C3AE50417E002394C3D85441A6C7CF87D0AE5041EC6E278BC7D85441B47F2DDDD3AE5041391C9A1AC9D8544174807DD0D3AE5041CB7E8057C9D8544157CEA8D5D3AE50411FDB3868CAD8544157CEA8D5D3AE504198AA8FBACBD8544138BD4314D4AE5041EA5F57AECCD8544114AE4781D4AE5041A4703DAACCD854415F666646D6AE5041A647E1DACED854418CCCCC7CD9AE5041421E858BD1D85441295C8FA2DBAE50413D0AD733D1D85441E447E1FADDAE5041FE5B8FE2D2D85441B471256CDEAE50411684D3F4D2D85441D96188A1DEAE5041998E6FFDD2D854412E9B6DF9DEAE504157499C0BD3D85441494671C4DFAE5041405800EED1D854419741CE9BE0AE5041EAED0DDCD1D85441EF296F19E1AE5041F62CE511D2D85441D18EBE02E2AE5041E27E78A1D2D854416AF40DECE2AE5041E27E78A1D2D85441B92E42F9E3AE504137AA937DD2D85441DD13414FE5AE50414BA90083D3D85441AB9FC7ECE6AE504142131F46D5D854411080522CE8AE50413A7D3D09D7D85441DD10DB8EE9AE50419E2E64C4D8D85441FCDAFE41EAAE5041A2AE1E99D9D85441FB7527BDEAAE504151EBC54DDBD85441D746A12EECAE504181508725DED85441275F9C4BECAE50415AF0E6E3DFD85441C6C88A6BEDAE5041B59B2A74E0D854419AA2AF6BEDAE50416D123D74E0D8544100000070EDAE504166666676E0D854416E4D8D04F0AE5041089F15A1D8D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990465 - 409295
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000020000000103000000010000003E000000713D0A27E5AE5041B81E855BE2D854419A9999A9DDAE5041EC51B8CEF0D85441000000E0E6AE5041D7A3701DE9D85441E17A149EEBAE50410AD7A3F0E2D85441CDCCCCCCECAE50410AD7A3D0E1D85441C3F528CCE9AE5041713D0A37E0D8544152B81EF5E8AE50415C8FC205DDD8544166666606E5AE5041CDCCCCFCD7D8544148E17A44E3AE504114AE47E1D8D85441EC51B82EE1AE504185EB5188D5D85441D7A3702DDDAE5041713D0A27D4D85441E17A142EDBAE504114AE4791D2D8544152B81E15D9AE5041295C8F82D3D85441E17A141ED7AE504148E17AE4D0D85441E17A14FED4AE5041A4703D3AD0D85441295C8FF2D2AE504114AE4701CED854410AD7A3B0D1AE504100000090D0D854413D0AD7E3CEAE5041CDCCCC2CD1D85441666666B6CCAE504148E17A34CFD85441B81E852BC9AE50410AD7A3C0CFD8544185EB51B8C6AE5041D7A3707DCCD8544166666676C4AE504152B81E65CDD85441EC51B83EC3AE504185EB51E8CBD854417B14AE97BEAE50419A9999C9CBD8544133333353BDAE5041C3F5282CCBD85441CDCCCC2CBDAE5041A4703D8AC9D85441C3F5281CBCAE5041AE47E17AC7D85441CDCCCCFCB6AE5041A4703DEAC4D85441B81E85ABB5AE5041F6285C9FC2D854418FC2F578B3AE504166666676C1D85441F6285CAFB2AE5041EC51B8AEBED85441295C8F42AFAE5041295C8F02BFD85441C3F5283CADAE5041CDCCCC7CBDD85441295C8F92ABAE50415C8FC215BED8544152B81EE5A8AE5041CDCCCC6CBDD85441713D0A77A6AE5041B81E856BBBD85441C3F5285CA4AE504185EB51D8BBD85441CDCCCC0CA2AE504133333343BBD85441C3F5285CA1AE5041EC51B8DEB9D85441A4703DFA9DAE50415C8FC295B8D85441295C8FC29CAE50419A999999B6D85441B81E852B99AE5041713D0A07B7D85441B81E856B98AE5041295C8F42B6D854417B14AE7799AE50413D0AD733B5D85441A4703DAA95AE504114AE4791B4D85441295C8FD292AE50410AD7A3E0B1D85441F6285C9F91AE5041666666F6B3D85441295C8F128FAE504185EB51B8B1D854419A9999798BAE5041C3F5285CB0D854418FC2F54889AE504148E17A94AED854419A99999986AE5041B81E859BAAD854415C8FC29586AE504148E17AF4A6D85441333333A384AE5041E17A147EA4D85441EC51B89E7CAE5041666666D6AED854413D0AD7037FAE504114AE4731B3D854410AD7A3B090AE5041CDCCCC8CBED854415C8FC24593AE504152B81E75C1D8544152B81E45A6AE5041A4703D3AC6D8544100000040B2AE504152B81EB5CCD85441713D0AB7B7AE5041CDCCCCBCD2D854415C8FC295CFAE50417B14AEB7D8D85441713D0A27E5AE5041B81E855BE2D854410103000000010000003600000000000070EDAE504166666676E0D8544152B81E05F0AE5041F6285C9FD8D8544166666626EFAE50415C8FC285D6D85441F6285C4FD0AE50410AD7A300C7D8544152B81E55C3AE504114AE4721C3D8544133333333ACAE5041A4703DFAB2D8544166666616A0AE50413D0AD7B3ADD85441EC51B84E89AE5041A4703D9A9DD854417B14AED786AE5041D7A3703DA1D85441F6285CCF88AE5041D7A370EDA5D854415C8FC2B588AE5041C3F5280CA9D85441AE47E11A8BAE504185EB5108ADD854419A9999498EAE5041F6285C2FAED8544185EB51A890AE5041333333F3AFD854410000003091AE50417B14AEA7B1D8544148E17A8492AE50419A999939B0D85441EC51B81E96AE5041CDCCCCCCB2D854418FC2F5A89AAE504185EB5128B4D8544114AE47B19AAE5041000000C0B5D8544152B81E159EAE504152B81E05B4D85441AE47E1EA9EAE504152B81EA5B7D854410AD7A380A2AE5041D7A370DDB8D85441E17A148EA2AE504133333343BAD85441AE47E17AA4AE50413D0AD783BAD854411F85EB31A7AE504185EB51D8B9D8544185EB5148A9AE5041713D0A97BCD854417B14AE67ABAE5041333333F3BCD85441CDCCCCFCACAE5041713D0A57BCD85441C3F5285CAFAE504185EB51E8BDD8544133333323B3AE5041D7A3708DBDD8544148E17AB4B4AE50419A9999A9C0D85441C3F5288CB6AE50418FC2F508C2D85441C3F528ACB7AE50410AD7A3C0C3D85441000000A0BCAE504114AE4731C6D85441CDCCCC5CBFAE50413D0AD763C7D854415C8FC2A5BFAE504152B81E35CAD85441E17A140EC4AE5041A4703D8ACAD8544100000020C5AE50418FC2F5B8CBD854417B14AE17C7AE504166666646CBD85441713D0AE7C9AE50413D0AD7B3CED85441CDCCCCFCCCAE504148E17A14CED854415C8FC225CFAE5041D7A3704DCFD85441CDCCCCBCD0AE5041F6285CFFCED854411F85EB71D2AE5041E17A14BECCD8544114AE4781D4AE5041A4703DAACCD8544166666646D6AE5041AE47E1DACED85441CDCCCC7CD9AE5041B81E858BD1D85441295C8FA2DBAE50413D0AD733D1D85441AE47E1FADDAE5041295C8FE2D2D85441B81E859BE1AE504185EB5178D3D85441295C8FC2E5AE5041AE47E16AD7D8544114AE4791E9AE5041CDCCCC2CDAD85441713D0A07EBAE504114AE4741DFD8544100000070EDAE504166666676E0D85441
+</a>
+
+<b>
+01060000000100000001030000000100000081000000E2FFFF6FEDAE504157666676E0D854411ECFDBA7EEAE5041D169A7C3DCD854413CB81E05F0AE504136295C9FD8D8544146666626EFAE5041518FC285D6D854415267AC43EDAE5041E3DAD492D5D85441794248ECD3AE5041C9A819D2C8D85441196333D6D3AE50419ADC5A2AC9D8544116860A01D2AE504146B07768C8D854412370FF39CEAE50415071B9D8C6D854411270C2D9C9AE5041FCFEEA60C5D854410737A387C3AE5041176FDA67C3D85441B704E427C3AE504149603927C3D85441D2AA525BB9AE50411CE568ACBCD8544154259F81B9AE5041CC5B7B45BCD8544133333333ACAE5041A4703DFAB2D8544145DC3531A8AE50416DC66B3BB1D854418EC44F74A8AE504100C77D93B1D85441E2B0931AA8AE5041FA96BF8EB2D854419FE51A08A8AE5041A555C22BB3D854410A2B360BA3AE50410D709EE3B1D8544144F980EAA2AE504126E47F3EB0D854419433B5F7A3AE5041E427FA9CAFD85441D887EFBAA4AE5041C1A972B9AFD85441934FD15BA1AE5041773E8F41AED85441E8DC4E88A0AE50414B7FC830B1D85441B382D9AB9FAE504125D6F92BB2D854416BA15E379CAE50413A84414DB1D854416F4611E39CAE504146836B59B0D854412EC962779CAE50410EB4295EAFD85441F23C9BDA9AAE504178CC88E0AED8544175F44D9C98AE50411FA5102DAED854413829AFC996AE50417C7E9879ADD854417472CC5095AE5041E596F7FBACD854412C68564893AE5041E3184990ACD854413D98144D92AE5041611EECB8ABD85441528558F391AE5041D1660940AAD85441BE1B66E191AE50418D2CD532A9D85441AF1F090A91AE5041FD74F2B9A7D85441D53C0BB58FAE504167CC2872A7D85441A62EF2838EAE5041CF66D988A6D8544103C9A29A8DAE5041D596978DA5D8544156B5E6408DAE5041F7018A9FA5D85441C10C1DF98CAE504167CC2872A7D85441C10C1DF98CAE50414CAF26C7A8D85441C10C1DF98CAE50417ABD3FF8A9D8544116770F0B8DAE504120A13D4DABD85441583395AC8DAE50414FAF567EACD8544185C3FF718EAE50413B01EA0DADD854413E556A378FAE50419F2862C1ADD85441E3F9905690AE504120E4E762AED854416D63836890AE5041F8870E82AFD854415C755B6F90AE5041F743C7C8AFD8544185EB51A890AE5041333333F3AFD85441773AA5C590AE5041BC118A51B0D854413600003091AE50413A14AEA7B1D854417EF62DFF91AE5041E54CECC8B0D8544148E17A8492AE50419A999939B0D85441EC51B81E96AE5041CDCCCCCCB2D85441E7B0928999AE5041AC8563D2B3D85441F96C59DF99AE504130A19DBBB2D854419E1180FE9AAE5041997A2508B2D85441CC1F992F9CAE50413553AD54B1D85441EFDB39A89FAE50415E80E030B2D85441F2E12E099EAE50414B30360BB4D8544152B81E159EAE504152B81E05B4D85441F1BAED159EAE5041C86AA108B4D8544130C9922EA0AE50413ED1F39BB3D8544115AC9083A1AE50413A146EFAB2D8544150385820A3AE504163AF1E11B2D85441C7210908A8AE50413D56592CB3D854412CDCAEF6A7AE504128A5D8BFB3D85441246D19BCA8AE50417E0FCBD1B3D854411E7C32EDA9AE504122B4F1F0B4D85441A8E524FFA9AE5041FB571810B6D854414C4B74E8AAAE5041FC96EF45B6D85441262E723DACAE50415E40B98DB6D85441DD412E97ACAE5041A13B1665B7D8544161BA39DAADAE504135A50877B7D85441B7242CECADAE5041E3F79B06B8D85441B8630322AEAE50417270A749B9D85441E532451DAFAE5041C8DA995BB9D85441DDC3AFE2AFAE50416040E944BAD85441D3EC89C3B0AE5041F569D591BAD8544129709B8CB1AE50414050CD9DBAD8544113BB1158B2AE50412CAC86BABAD85441BE1F9017B3AE5041314F7C15BBD85441B8642A45B4AE504122F7FC85BBD85441C153E7F3B4AE504135385D26BCD85441B2EFAF28B6AE5041940D12E1BCD85441E8201E00B7AE504120313000BDD8544141E43EE1B8AE5041EE3FD140BDD85441D2532454B9AE504108EAF3C1BCD854413FBB8B18BBAE5041AC4896E3BDD8544197CDD696C3AE50410BF6B882C3D85441E46EA9ADCAAE50413F8355B7C5D85441EC95E824CEAE50412D62D6E9C6D85441196333D6D3AE504186E1E53FC9D85441839643BED3AE5041E0BC7698C9D854411DD7B388D3AE50410E7ADD2ECAD85441A90CAD91D3AE5041D4FCC69ECBD8544137BD4314D4AE5041EA5F57AECCD8544114AE4781D4AE5041A4703DAACCD854415F666646D6AE5041A647E1DACED854418CCCCC7CD9AE5041421E858BD1D85441D0CC363EDBAE50411D0DD843D1D85441295C8FA2DBAE50413D0AD733D1D854419463B879DCAE504125CC36CED1D85441E447E1FADDAE5041FE5B8FE2D2D85441AA7BC96CDEAE504161F8EDF4D2D85441399B6DF9DEAE504157499C0BD3D854415DF4DD34DFAE50418D535DC5D2D85441494671C4DFAE5041405800EED1D854419741CE9BE0AE5041EAED0DDCD1D85441EF296F19E1AE5041F62CE511D2D85441D18EBE02E2AE5041E27E78A1D2D854416AF40DECE2AE5041E27E78A1D2D85441B92E42F9E3AE504137AA937DD2D854419311404EE5AE5041D00FE366D3D854412B38B801E6AE50411F4A1774D4D8544123C922C7E6AE50414E9707DBD5D85441A60257D4E7AE504134B9DC65D7D8544136BA394DE9AE50410C5D0385D8D8544179B59624EAAE5041B0C2526ED9D85441DC9D37A2EAAE5041CB22FF2EDBD854410AAC50D3EBAE5041486B4C6DDDD85441B7BF0C2DECAE5041ECD09B56DED85441275F9C4BECAE50415AF0E6E3DFD854419BF8C2ACECAE5041BB099414E0D85441E2FFFF6FEDAE504157666676E0D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 2923381
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -48  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441295C8FD26E1551413D0AD793D6DB54413333338375155141333333F3CFDB5441F6285C2F7B155141D7A3709DCBDB5441D7A3703D8115514148E17A94C6DB544100000010851551415C8FC285C3DB54410AD7A3A08B1551418FC2F5A8BDDB5441333333638F155141EC51B85EB8DB544114AE4791951551419A9999E9B0DB544152B81E2597155141CDCCCC7CB1DB54411F85EBB19A155141F6285C2FB6DB544148E17A34A01551415C8FC2C5ADDB5441010300000001000000630000005C8FC205E1155141333333E38BDB5441EC51B8CEE2155141666666768CDB5441666666A6E7155141A4703D5A8DDB5441713D0A07EB15514114AE47C18EDB54411F85EB31ED1551415C8FC2A58FDB544152B81E55F41551415C8FC22589DB5441E17A141EF6155141713D0A2786DB544152B81EA5F7155141C3F528EC83DB54415C8FC285F4155141AE47E1AA83DB544152B81E15F11551411F85EB1185DB54415C8FC2F5ED1551413333335385DB5441AE47E1DAEB1551413D0AD78385DB54419A999949E8155141295C8F7288DB54417B14AEB7E4155141000000308BDB54410AD7A330E315514114AE47818BDB54418FC2F5B8E1155141EC51B8EE8ADB544152B81E25E4155141295C8F7288DB5441295C8FE2E61551418FC2F59886DB5441AE47E19AE81551413D0AD79385DB5441A4703D6AE8155141713D0AE782DB5441D7A3701DE9155141D7A370FD80DB54415C8FC2C5EA155141B81E858B80DB54410AD7A3F0EC155141295C8F0282DB5441D7A3709DEF15514148E17A6482DB5441CDCCCCBCF21551415C8FC2A582DB5441C3F528BCF51551413333333382DB54418FC2F568F8155141F6285C5F81DB544114AE4711FA15514148E17A247FDB5441B81E851BFC155141713D0A777CDB54413D0AD7E3FD155141D7A3706D7ADB5441F6285C2F00165141E17A149E7ADB5441D7A370CDFF1551417B14AE977CDB544166666656FE155141000000307EDB544185EB51C8FE155141713D0AA77FDB544114AE4791001651418FC2F50880DB54415C8FC2B504165141333333E37EDB5441A4703DEA0816514152B81E157CDB54413D0AD7D30A16514114AE47517BDB5441000000500D165141CDCCCC5C7ADB5441B81E859B0F1651413D0AD79378DB5441B81E85DB12165141B81E85CB76DB5441F6285CEF161651419A99993973DB5441713D0AB71B1651415C8FC2356FDB54419A9999991D165141AE47E17A6BDB54418FC2F52820165141713D0A4766DB544185EB51581E1651411F85EBA162DB544148E17A64101651417B14AEB76DDB5441D7A3704D0A1651410AD7A3E070DB544152B81EB5011651415C8FC29573DB54413D0AD7E3FA155141000000C076DB54419A9999C9F415514152B81E257BDB544152B81EA5E91551415C8FC2D57DDB54415C8FC285E41551419A9999F97DDB54419A999909E5155141713D0AB77FDB5441C3F5285CE21551417B14AED77FDB54418FC2F568DE155141A4703D4A80DB5441A4703D6ADB155141CDCCCCCC80DB54419A999909D8155141CDCCCCCC80DB54410AD7A3D0D5155141A4703DBA7FDB5441AE47E1CAD4155141E17A146E80DB5441F6285C0FCE155141EC51B80E85DB54410AD7A380CF15514185EB519886DB5441E17A146ED215514148E17AA485DB54419A9999D9D4155141295C8F3285DB544185EB51D8D7155141C3F528FC83DB54411F85EBD1D9155141AE47E1BA83DB5441A4703D6ADB155141000000C084DB5441295C8F12DD15514185EB516886DB544100000090DC1551415C8FC23589DB5441666666B6DA155141C3F5287C8ADB5441E17A14FED8155141A4703D0A8ADB5441F6285C0FD615514185EB51A889DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB5441333333E3C1155141EC51B82E93DB5441A4703DCABF155141F6285CBF90DB5441AE47E12ABF1551411F85EB0190DB5441CDCCCCACB91551413D0AD7B394DB544185EB51D8B21551419A9999299BDB54419A9999C9AE1551419A9999C99EDB54411F85EB11AC15514152B81E15A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544133333323B215514185EB5158A3DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB5441C3F5280CD215514185EB51A896DB5441E17A14BED5155141333333A395DB5441EC51B80ED915514114AE473195DB5441CDCCCCECDB155141D7A3706D94DB54419A999999DE1551415C8FC2E592DB54410AD7A3F0DF155141AE47E1BA90DB544133333383E015514114AE47B18EDB544185EB5148DE155141666666968CDB54419A999989DE155141F6285C0F8BDB54415C8FC205E1155141333333E38BDB5441010300000001000000630000008FC2F51851165141666666F622DB5441666666464416514152B81EA52ADB5441000000503E165141D7A3700D30DB544148E17AE4371651415C8FC28534DB54415C8FC27531165141E17A146E3ADB5441C3F5288C2C1651417B14AEB73FDB5441A4703D0A241651411F85EB214ADB5441E17A148E1D1651415C8FC24551DB5441E17A145E0F165141AE47E18A61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB544148E17A9418165141F6285C7F62DB54417B14AEA7191651418FC2F57860DB5441F6285C2F1C165141295C8F325EDB54415C8FC2551E165141EC51B80E5DDB54410AD7A3E021165141A4703D7A5BDB54419A9999E92416514148E17A7459DB5441D7A370BD281651418FC2F5E858DB54418FC2F5782D16514152B81E8556DB5441C3F5289C30165141295C8FF254DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54419A9999F95416514152B81E6534DB544185EB519854165141D7A370CD31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB5441713D0AF75E165141713D0A272ADB5441000000E0611651413333330329DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54410AD7A31096165141A4703D2A17DB5441CDCCCC5C981651415C8FC2A51ADB54410AD7A380991651417B14AE071DDB5441E17A14DEA2165141CDCCCC2C1ADB5441D7A3702DA1165141EC51B86E17DB54411F85EB619D1651415C8FC28514DB5441295C8F2298165141A4703D8A10DB54419A99993995165141295C8F020EDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB54410AD7A3A0A716514152B81E3504DB54415C8FC235AA165141EC51B82E08DB5441B81E856BB3165141EC51B87E01DB5441B81E85BBBC165141A4703D0AFCDA5441B81E859BC516514133333313F8DA5441C3F5280CC5165141C3F5280CF7DA5441AE47E1BAD01651415C8FC265EBDA54419A999979DD1651410AD7A360E2DA5441295C8F12EB16514148E17A74E1DA54411F85EB31ED165141E17A149ED3DA54410AD7A340ED1651417B14AE17D2DA54411F85EBF1E2165141CDCCCC2CD3DA54413D0AD7B3D6165141666666D6D4DA544166666676D2165141EC51B86ED6DA54415C8FC2F5CA1651415C8FC2B5D9DA5441E17A14EEC216514114AE4731DFDA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441713D0AD767165141CDCCCC7C17DB5441AE47E17A5F165141666666A61BDB54418FC2F51851165141666666F622DB54410103000000010000001500000014AE47112F1551417B14AE1710DC5441F6285C4F311551410AD7A3A00EDC5441713D0AC73A1551416666661607DC54417B14AE97481551411F85EBC1FCDB54418FC2F5584F155141333333A3F8DB5441000000A058155141CDCCCCBCF5DB5441B81E85BB5C15514100000090EADB5441713D0AF75E155141CDCCCCFCE4DB54415C8FC23562155141E17A141EDFDB544152B81E0567155141F6285CFFD6DB544185EB516869155141295C8FE2D0DB54413D0AD71368155141CDCCCCFCCFDB5441CDCCCC3C64155141EC51B8EED6DB544114AE47715C1551417B14AE37DEDB5441B81E853B55155141D7A3702DE6DB54415C8FC2054C15514148E17A44EFDB5441295C8FE2391551410AD7A330FFDB5441CDCCCC0C331551419A9999C904DC544185EB51282B155141A4703DCA0CDC5441CDCCCC9C2B15514152B81E1510DC544114AE47112F1551417B14AE1710DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000D5E1CF50F4155141D474075D8BDB54417B14AE57F5155141713D0A478ADB54418FDA90B0F515514134D3D4FE89DB5441AB3D3099F615514180C0DA4189DB54415BD5EF97F7155141FD37E77288DB54418FC2F5D8F7155141E17A143E88DB54415A106C95F9155141E191A92887DB5441E430B0B3FA1551414F32FC7586DB544166666656FC1551410AD7A37085DB5441634D928CFC155141E747345585DB544140E2A157FE1551410122B56C84DB544166666666001651411F85EB6183DB544167D5310F02165141585CC3D682DB5441B788DCE604165141A04A53DB81DB54418F66F4BA09165141957A1AD681DB5441CEEBBED50A165141F6B84C6480DB5441473AA2EE0B1651417E17FCF47EDB5441B46BCCD90C1651410AC5ADE07DDB5441ED783CD70D16514124B6BBC57CDB54417C2EAEE60E165141A64AAF967BDB5441D71830351016514182FD3A217ADB5441319F647E11165141F71EB2B178DB544194E6A4C8121651412D53FE4077DB544151A755FF1916514125DEC9DF72DB5441DE3998DF1C165141E7651E4B6BDB544145B7C12020165141D5CB903666DB544191832B6925165141BC18946F5FDB54419B2A2F7424165141BC5606F15DDB544151D5A93820165141A141D03161DB544149D70C3A1E165141A904F8B962DB54417C8388840D1651417154F2916FDB5441E19A9C1A06165141706159C172DB544189DBFA3A0416514177574B9973DB5441DE0BE35AFC155141EE3AA1B277DB5441D860A758F1155141C5A8716A7CDB54415BF6DE0FEA155141B32E28737DDB54414F1B1D87E515514132BAD3F27DDB5441DC160054E21551419D936A097EDB54414F3A93E6DF15514110C58D1A7EDB54410C44AA34DD155141AAC4A93A7EDB5441440F800CD9155141BBAE67127FDB5441D43AFBD5D5155141703928B97FDB54411527EDA9D51551416769611E81DB54413B116BF4CE155141A332EE8B85DB544171C267E7CF1551418260E51388DB5441F8C47A2ED2155141A9BCC2268EDB5441308CAC65C2155141E4B3865993DB5441F6A77F3FBF1551410A2B991E91DB54414B037DC3BD1551411C21A64692DB5441B4F5BE8DBB155141C8535E0294DB54410D82B949B8155141CF49129296DB54419EB23DA3B5155141802837A698DB5441B39CC261B41551418FB1CBF899DB544170641615B01551413BD2CFA39EDB5441DCB4BEC6AA155141E217070CA4DB5441C41247F2AD155141FAA3621AA6DB5441E40B7F61B11551411B6DEEF5A4DB5441D73DE62FB51551418CE26A96A3DB5441FD278563B915514165D97C03A3DB5441C0B2D0D2C215514103E4939A9EDB5441A1DBC776CD1551417CFD3F2A9ADB5441F2F6DAE2D0155141B27C041699DB5441873B53B3D4155141983A21E297DB544100B7FE5AD8155141C6481BBB96DB5441EDCA5752DB155141C2800A3596DB54411E5C7058DD155141321672B895DB5441EF7C35C1DE1551413D6C775F95DB54413D9ED6FDDE15514172E9AF4895DB54418156264BE0155141491157B494DB5441EC6D4E97E11551417ECC812094DB5441BE8BB151E315514163948E5C93DB5441C5B18B18E7155141ECB100FF91DB5441C80720CCEE15514198ABFA3291DB5441A98C9A3CF11551412505949E8EDB5441C8F13FACF215514146A2C8198DDB5441D5E1CF50F4155141D474075D8BDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 3558923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -48  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441295C8FD26E1551413D0AD793D6DB54413333338375155141333333F3CFDB5441F6285C2F7B155141D7A3709DCBDB5441D7A3703D8115514148E17A94C6DB544100000010851551415C8FC285C3DB54410AD7A3A08B1551418FC2F5A8BDDB5441333333638F155141EC51B85EB8DB544114AE4791951551419A9999E9B0DB544152B81E2597155141CDCCCC7CB1DB54411F85EBB19A155141F6285C2FB6DB544148E17A34A01551415C8FC2C5ADDB5441010300000001000000630000005C8FC205E1155141333333E38BDB5441EC51B8CEE2155141666666768CDB5441666666A6E7155141A4703D5A8DDB5441713D0A07EB15514114AE47C18EDB54411F85EB31ED1551415C8FC2A58FDB544152B81E55F41551415C8FC22589DB5441E17A141EF6155141713D0A2786DB544152B81EA5F7155141C3F528EC83DB54415C8FC285F4155141AE47E1AA83DB544152B81E15F11551411F85EB1185DB54415C8FC2F5ED1551413333335385DB5441AE47E1DAEB1551413D0AD78385DB54419A999949E8155141295C8F7288DB54417B14AEB7E4155141000000308BDB54410AD7A330E315514114AE47818BDB54418FC2F5B8E1155141EC51B8EE8ADB544152B81E25E4155141295C8F7288DB5441295C8FE2E61551418FC2F59886DB5441AE47E19AE81551413D0AD79385DB5441A4703D6AE8155141713D0AE782DB5441D7A3701DE9155141D7A370FD80DB54415C8FC2C5EA155141B81E858B80DB54410AD7A3F0EC155141295C8F0282DB5441D7A3709DEF15514148E17A6482DB5441CDCCCCBCF21551415C8FC2A582DB5441C3F528BCF51551413333333382DB54418FC2F568F8155141F6285C5F81DB544114AE4711FA15514148E17A247FDB5441B81E851BFC155141713D0A777CDB54413D0AD7E3FD155141D7A3706D7ADB5441F6285C2F00165141E17A149E7ADB5441D7A370CDFF1551417B14AE977CDB544166666656FE155141000000307EDB544185EB51C8FE155141713D0AA77FDB544114AE4791001651418FC2F50880DB54415C8FC2B504165141333333E37EDB5441A4703DEA0816514152B81E157CDB54413D0AD7D30A16514114AE47517BDB5441000000500D165141CDCCCC5C7ADB5441B81E859B0F1651413D0AD79378DB5441B81E85DB12165141B81E85CB76DB5441F6285CEF161651419A99993973DB5441713D0AB71B1651415C8FC2356FDB54419A9999991D165141AE47E17A6BDB54418FC2F52820165141713D0A4766DB544185EB51581E1651411F85EBA162DB544148E17A64101651417B14AEB76DDB5441D7A3704D0A1651410AD7A3E070DB544152B81EB5011651415C8FC29573DB54413D0AD7E3FA155141000000C076DB54419A9999C9F415514152B81E257BDB544152B81EA5E91551415C8FC2D57DDB54415C8FC285E41551419A9999F97DDB54419A999909E5155141713D0AB77FDB5441C3F5285CE21551417B14AED77FDB54418FC2F568DE155141A4703D4A80DB5441A4703D6ADB155141CDCCCCCC80DB54419A999909D8155141CDCCCCCC80DB54410AD7A3D0D5155141A4703DBA7FDB5441AE47E1CAD4155141E17A146E80DB5441F6285C0FCE155141EC51B80E85DB54410AD7A380CF15514185EB519886DB5441E17A146ED215514148E17AA485DB54419A9999D9D4155141295C8F3285DB544185EB51D8D7155141C3F528FC83DB54411F85EBD1D9155141AE47E1BA83DB5441A4703D6ADB155141000000C084DB5441295C8F12DD15514185EB516886DB544100000090DC1551415C8FC23589DB5441666666B6DA155141C3F5287C8ADB5441E17A14FED8155141A4703D0A8ADB5441F6285C0FD615514185EB51A889DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB5441333333E3C1155141EC51B82E93DB5441A4703DCABF155141F6285CBF90DB5441AE47E12ABF1551411F85EB0190DB5441CDCCCCACB91551413D0AD7B394DB544185EB51D8B21551419A9999299BDB54419A9999C9AE1551419A9999C99EDB54411F85EB11AC15514152B81E15A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544133333323B215514185EB5158A3DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB5441C3F5280CD215514185EB51A896DB5441E17A14BED5155141333333A395DB5441EC51B80ED915514114AE473195DB5441CDCCCCECDB155141D7A3706D94DB54419A999999DE1551415C8FC2E592DB54410AD7A3F0DF155141AE47E1BA90DB544133333383E015514114AE47B18EDB544185EB5148DE155141666666968CDB54419A999989DE155141F6285C0F8BDB54415C8FC205E1155141333333E38BDB5441010300000001000000630000008FC2F51851165141666666F622DB5441666666464416514152B81EA52ADB5441000000503E165141D7A3700D30DB544148E17AE4371651415C8FC28534DB54415C8FC27531165141E17A146E3ADB5441C3F5288C2C1651417B14AEB73FDB5441A4703D0A241651411F85EB214ADB5441E17A148E1D1651415C8FC24551DB5441E17A145E0F165141AE47E18A61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB544148E17A9418165141F6285C7F62DB54417B14AEA7191651418FC2F57860DB5441F6285C2F1C165141295C8F325EDB54415C8FC2551E165141EC51B80E5DDB54410AD7A3E021165141A4703D7A5BDB54419A9999E92416514148E17A7459DB5441D7A370BD281651418FC2F5E858DB54418FC2F5782D16514152B81E8556DB5441C3F5289C30165141295C8FF254DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54419A9999F95416514152B81E6534DB544185EB519854165141D7A370CD31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB5441713D0AF75E165141713D0A272ADB5441000000E0611651413333330329DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54410AD7A31096165141A4703D2A17DB5441CDCCCC5C981651415C8FC2A51ADB54410AD7A380991651417B14AE071DDB5441E17A14DEA2165141CDCCCC2C1ADB5441D7A3702DA1165141EC51B86E17DB54411F85EB619D1651415C8FC28514DB5441295C8F2298165141A4703D8A10DB54419A99993995165141295C8F020EDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB54410AD7A3A0A716514152B81E3504DB54415C8FC235AA165141EC51B82E08DB5441B81E856BB3165141EC51B87E01DB5441B81E85BBBC165141A4703D0AFCDA5441B81E859BC516514133333313F8DA5441C3F5280CC5165141C3F5280CF7DA5441AE47E1BAD01651415C8FC265EBDA54419A999979DD1651410AD7A360E2DA5441295C8F12EB16514148E17A74E1DA54411F85EB31ED165141E17A149ED3DA54410AD7A340ED1651417B14AE17D2DA54411F85EBF1E2165141CDCCCC2CD3DA54413D0AD7B3D6165141666666D6D4DA544166666676D2165141EC51B86ED6DA54415C8FC2F5CA1651415C8FC2B5D9DA5441E17A14EEC216514114AE4731DFDA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441713D0AD767165141CDCCCC7C17DB5441AE47E17A5F165141666666A61BDB54418FC2F51851165141666666F622DB54410103000000010000001500000014AE47112F1551417B14AE1710DC5441F6285C4F311551410AD7A3A00EDC5441713D0AC73A1551416666661607DC54417B14AE97481551411F85EBC1FCDB54418FC2F5584F155141333333A3F8DB5441000000A058155141CDCCCCBCF5DB5441B81E85BB5C15514100000090EADB5441713D0AF75E155141CDCCCCFCE4DB54415C8FC23562155141E17A141EDFDB544152B81E0567155141F6285CFFD6DB544185EB516869155141295C8FE2D0DB54413D0AD71368155141CDCCCCFCCFDB5441CDCCCC3C64155141EC51B8EED6DB544114AE47715C1551417B14AE37DEDB5441B81E853B55155141D7A3702DE6DB54415C8FC2054C15514148E17A44EFDB5441295C8FE2391551410AD7A330FFDB5441CDCCCC0C331551419A9999C904DC544185EB51282B155141A4703DCA0CDC5441CDCCCC9C2B15514152B81E1510DC544114AE47112F1551417B14AE1710DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000D5E1CF50F4155141D474075D8BDB54417B14AE57F5155141713D0A478ADB54418FDA90B0F515514134D3D4FE89DB5441AB3D3099F615514180C0DA4189DB54415BD5EF97F7155141FD37E77288DB54418FC2F5D8F7155141E17A143E88DB54415A106C95F9155141E191A92887DB5441E430B0B3FA1551414F32FC7586DB544166666656FC1551410AD7A37085DB5441634D928CFC155141E747345585DB544140E2A157FE1551410122B56C84DB544166666666001651411F85EB6183DB544167D5310F02165141585CC3D682DB5441B788DCE604165141A04A53DB81DB54418F66F4BA09165141957A1AD681DB5441CEEBBED50A165141F6B84C6480DB5441473AA2EE0B1651417E17FCF47EDB5441B46BCCD90C1651410AC5ADE07DDB5441ED783CD70D16514124B6BBC57CDB54417C2EAEE60E165141A64AAF967BDB5441D71830351016514182FD3A217ADB5441319F647E11165141F71EB2B178DB544194E6A4C8121651412D53FE4077DB544151A755FF1916514125DEC9DF72DB5441DE3998DF1C165141E7651E4B6BDB544145B7C12020165141D5CB903666DB544191832B6925165141BC18946F5FDB54419B2A2F7424165141BC5606F15DDB544151D5A93820165141A141D03161DB544149D70C3A1E165141A904F8B962DB54417C8388840D1651417154F2916FDB5441E19A9C1A06165141706159C172DB544189DBFA3A0416514177574B9973DB5441DE0BE35AFC155141EE3AA1B277DB5441D860A758F1155141C5A8716A7CDB54415BF6DE0FEA155141B32E28737DDB54414F1B1D87E515514132BAD3F27DDB5441DC160054E21551419D936A097EDB54414F3A93E6DF15514110C58D1A7EDB54410C44AA34DD155141AAC4A93A7EDB5441440F800CD9155141BBAE67127FDB5441D43AFBD5D5155141703928B97FDB54411527EDA9D51551416769611E81DB54413B116BF4CE155141A332EE8B85DB544171C267E7CF1551418260E51388DB5441F8C47A2ED2155141A9BCC2268EDB5441308CAC65C2155141E4B3865993DB5441F6A77F3FBF1551410A2B991E91DB54414B037DC3BD1551411C21A64692DB5441B4F5BE8DBB155141C8535E0294DB54410D82B949B8155141CF49129296DB54419EB23DA3B5155141802837A698DB5441B39CC261B41551418FB1CBF899DB544170641615B01551413BD2CFA39EDB5441DCB4BEC6AA155141E217070CA4DB5441C41247F2AD155141FAA3621AA6DB5441E40B7F61B11551411B6DEEF5A4DB5441D73DE62FB51551418CE26A96A3DB5441FD278563B915514165D97C03A3DB5441C0B2D0D2C215514103E4939A9EDB5441A1DBC776CD1551417CFD3F2A9ADB5441F2F6DAE2D0155141B27C041699DB5441873B53B3D4155141983A21E297DB544100B7FE5AD8155141C6481BBB96DB5441EDCA5752DB155141C2800A3596DB54411E5C7058DD155141321672B895DB5441EF7C35C1DE1551413D6C775F95DB54413D9ED6FDDE15514172E9AF4895DB54418156264BE0155141491157B494DB5441EC6D4E97E11551417ECC812094DB5441BE8BB151E315514163948E5C93DB5441C5B18B18E7155141ECB100FF91DB5441C80720CCEE15514198ABFA3291DB5441A98C9A3CF11551412505949E8EDB5441C8F13FACF215514146A2C8198DDB5441D5E1CF50F4155141D474075D8BDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979957 - 22656
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000020000000103000000010000006E0000006109A1F417B45041AFE2D4B7BF255441369A133C18B45041A7EE02EFBF2554413211E0C317B450418CD17FCCBF255441D108A1F417B450419DE2D4B7BF255441EE56424816B45041D1F2FE6CBE2554411CF3764C14B450412974CE96BC255441EF4AB45112B45041C8513A9BBA255441A3D48F160FB450414668F6F4B6255441DFE8AF3E0CB450410D34D2BEB3255441D529862709B45041FFE13141B02554417EDBE2E806B450413EC622B8AD255441FEE0EBD003B450413D498264AA2554419D351E48FBB35041B224B123A82554415CC94EDCF8B35041626E7C99A72554417F4F982AF2B350412F5944EEA6255441492F530EEEB35041D207865FA7255441E8EFE6A4E2B350411458F599A8255441B66F93D9DEB3504134BE8002A9255441A2B3FA5DD5B35041A3CD3295A7255441358FA6F8D2B35041B4FB3620A7255441116922AFCDB350417B35101BA625544189694367C4B350410B0B8932A4255441B81ADD16BDB350413FBFE2B2A2255441B2003111BCB3504124845F17A32554412600A2F5BBB35041A2C07047A3255441E7760A05BFB35041279FE194A62554419709E959BFB35041B118DCD8A6255441AFDBDE47C1B3504128A38264A8255441762EEA55C5B350415298F5A3AB255441CC5B4EBAC6B350414833F330AD2554416DD8EA52C7B35041A5C80269AE2554418F48794CC8B35041AE544E67B02554418560E0DCCAB350415147FA30B2255441E23EFDECCCB35041CFE2982AB32554410FB734E7D2B3504186E4DFFDB5255441FD7578A0D5B35041122F7247B725544174F3A294DCB35041E0AE42A7BA255441C2C13C6BDEB35041E668A1BFBB255441F03EC2AADFB3504191EEFD7DBC255441882D8AEBE1B3504169A3DE23BF2554418308C1DCE1B3504100FA70DFC0255441D45853C9E2B350417E971551C2255441749965B0E1B35041F70FF1B3C32554410046535CE0B350416B630308C5255441D3F840D7DFB35041DA914C4DC6255441BE641C9CDFB35041BD13A8E6C82554414DA362F5DFB35041A29DA088C92554417753E93CE1B3504125842588CD25544109C527E1DDB350414F34ACCFCE25544157582B71D8B35041648C6F73CF25544147D658F6D7B350416F3851C5CF255441E8C96915D5B35041D8F021F8D2255441C0099CE2D3B350413487F110D32554417E286522D3B35041C293F1AED4255441B46D017CD3B350414B55D47CD62554419F153ED8D2B35041A48BD234D9255441656F77D8D2B35041A150962BDA255441ACD0F760DFB350412673169EDE2554416DB94756E2B3504100F93158DC2554414B2F1E12E3B3504103092223DA25544102CE611BE4B35041484D6E04D7255441F66F1C68E5B3504140F65055D4255441752BDEBDE6B35041345B09A4D1255441A9F30E03E8B3504191342B14CF2554418DD2AC1CE8B350410DE9C51ACF25544130CF3DB4EEB350413B276A92D2255441D2C82044FDB35041C6163E3BDA255441E115D66C04B4504148263AFFDD2554413F21FA5009B450417BF0D691E02554419D01E8790DB45041DC15FBC1E2255441E42F0E3910B4504174362301E4255441E6C8B50615B45041E317D1E8E5255441A45F6B1E18B450416FB9CE22E7255441181451841CB450410E506CE4E8255441652CDB0817B45041CF5F3589E42554416354A62114B45041EE6DC207E225544109FCE60A0FB45041F9117E72DC255441769FCD540DB4504102738CFAD8255441ED1184B80CB45041C729C78BD62554412F9CFC3D0CB45041D78891C1D425544166CDDEC80BB4504121E35A11D4255441C50FEE290BB45041426E85DED3255441269FBFE408B450411317927FD32554418BDCE63506B45041691EBA2DD3255441708D5A7EFFB350418EA5B7ACD0255441E17A148EFDB350411F85EBB1CF2554411F85EB21FEB3504148E17AA4CE2554415CAA337BFEB3504110F0AFD2CE255441079CF0E2FFB350415013DE8CCF2554415853FB4D04B45041B263376AD1255441C568F5E905B450414D72B6DBD12554415F8C2EEF07B45041AD800A37D225544104445EEB08B45041F629D85AD22554416F0E07B409B45041CF155577D22554412E2B014E0BB45041DD825B7CD2255441596E5F1E0CB4504184143535D22554419653517E0DB45041946FAC35D02554415F14ED0B0EB45041A2572C0ECF25544193E1FCE10EB4504133CBCBA4CD255441D98A410710B45041C0E5DCC7CB2554411671EDE812B4504138087240C9255441FE4459E213B450410E9B7378C8255441C33E5AA315B4504173116D10C72554413F7B9DEA18B45041FF409C24C4255441FDC8AE331BB45041635638EEC12554415206FAE01DB450419CED7101BF255441A05938901DB45041883EADD8BE2554415B1508061CB45041CCAA1774BE25544191C1A9581BB4504125B8DA47BE2554416109A1F417B45041AFE2D4B7BF255441010300000001000000040000005206FAE01DB450419CED7101BF255441132A403D1FB45041C49943B1BF255441F950BFFF1DB450419BEFD2DFBE2554415206FAE01DB450419CED7101BF255441
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000001F85EB01E0B350411F85EBB1BC255441C3F5286CDFB35041F6285CAFC9255441666666E6DEB35041AE47E1FACA255441D7A3702DDCB35041A4703D3ACC2554417B14AE27D7B3504166666646CE2554411F85EBF1D2B35041C3F5288CD225544185EB51E8CFB3504100000030D9255441E17A144EE1B35041295C8F72DF255441D7A370CDE2B350411F85EBF1DA255441B81E852BE4B350413D0AD7D3D62554415C8FC205E8B35041EC51B80ECF25544114AE47B10EB450415C8FC265E3255441295C8F821CB450410AD7A3E0E82554411F85EB511BB45041666666A6E7255441000000E016B45041B81E856BE4255441C3F528BC13B45041F6285CAFE1255441D7A3702D11B45041F6285C1FDF255441B81E854B0FB45041000000E0DC255441D7A370ED0DB45041EC51B88EDA25544152B81E150DB450411F85EB51D8255441F6285CBF0CB45041AE47E1DAD6255441E17A149E0CB45041A4703D5AD52554410AD7A3D00BB450413D0AD713D425544148E17AA40AB450413D0AD7B3D32554410AD7A34006B450410AD7A330D32554418FC2F54803B45041295C8F62D2255441D7A3700D01B4504166666676D1255441E17A148EFDB350411F85EBB1CF2554411F85EB21FEB3504148E17AA4CE255441D7A3708D01B450419A999969D025544148E17AA403B45041B81E853BD12554410000007006B450410AD7A300D2255441000000E00AB450411F85EBA1D2255441E17A149E0CB450419A999909D225544152B81E250EB450419A9999D9CE2554413D0AD70310B45041AE47E1CACB255441666666B612B450418FC2F568C9255441713D0AB715B450410AD7A300C72554413D0AD70319B45041E17A140EC4255441AE47E12A1CB45041E17A14FEC02554410AD7A3F01DB4504114AE47F1BE2554411F85EB111AB4504148E17AF4BD2554415C8FC21518B4504185EB5118C0255441E17A140E13B4504100000070BB25544148E17A0404B450413D0AD773AA255441B81E851BFFB35041E17A14FEA8255441000000B0F6B35041D7A3701DA7255441EC51B8DEF2B35041AE47E1DAA62554413D0AD7A3DDB350413D0AD723A9255441B81E85BBD5B35041713D0AA7A725544148E17A64CEB350410AD7A340A625544100000040C7B350415C8FC2C5A42554418FC2F518C0B350413D0AD753A32554410AD7A360BCB35041CDCCCC8CA2255441000000A0BBB35041CDCCCCDCA32554410AD7A360C6B350419A999979AC255441A4703DAAC8B35041713D0A27B1255441EC51B8DEDBB35041AE47E13ABA2554411F85EB01E0B350411F85EBB1BC255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2804357 - 3591355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -96  </desc>
+<a>
+01060000000100000001030000000100000028000000713D0A4777105141F6285C7F28475541A4703D5A58105141EC51B89E1B475541666666B6601051419A99991913475541333333A36B105141713D0AD70C4755419A99990989105141AE47E1FA15475541AE47E15A8A105141D7A3707D13475541CDCCCC0C8C105141E17A14CE0E47554100000070871051411F85EB810D475541AE47E10A851051417B14AEC70C47554148E17AB4801051410AD7A3F00B4755418FC2F5E87C105141333333C30B475541713D0A47791051418FC2F5980B47554148E17A8475105141295C8F020B4755419A99996973105141A4703D8A0A4755410AD7A3B071105141D7A3701D0A475541D7A3703D6E105141CDCCCC0C0A475541D7A370ED691051417B14AEF7094755410AD7A360681051415C8FC2F50A475541000000806610514148E17A140C47554152B81E655C105141F6285CEF11475541A4703DFA5A105141713D0A671347554152B81EC559105141B81E850B15475541C3F5288C58105141C3F5280C1747554185EB51685710514100000060194755413333331356105141A4703DEA1A475541EC51B82E571051418FC2F5381E4755417B14AE2760105141AE47E16A21475541E17A142E5F1051413D0AD73324475541295C8F926010514152B81E75254755419A99997962105141666666862647554148E17A1463105141EC51B8CE244755418FC2F5A8641051413D0AD7F32447554152B81EB5671051413D0AD7E326475541295C8F226A1051419A9999E92947554148E17A8471105141333333232E47554148E17A0478105141C3F5288C324755417B14AEC7791051410AD7A38032475541F6285CAF7B105141AE47E17A314755411F85EB717F105141000000902A475541713D0A4777105141F6285C7F28475541
+</a>
+
+<b>
+01060000000100000001030000000100000038000000713D0A4777105141F6285C7F28475541A4703D5A58105141EC51B89E1B47554108C4DA015A105141E72AAAA719475541694E2DD85B1051411B97AC0F18475541172E23B86010514158281BD51347554178CF40A566105141E3F44CB30F4755418575AD88691051416C17BDAF0D4755416FE8251F6C1051412665E88D0C475541D9F3E4D16D105141BD289CA20C475541CC53B6C2761051418378494C1047554115CD93E386105141CE30CAE7164755418A06D02E88105141894D688D17475541AE47E15A8A105141D7A3707D13475541F6E001A98B105141F77B66F30F4755410A9F164B87105141EB7E76930E475541F2A4368B8410514102DB70C40D47554164711A8080105141B0FA1E0A0D475541334CCDC77C105141BB289CA20C4755416B63CCFA781051415E1ACD4F0C47554150CB06AC7210514146EF5F570B4755413602B4246E105141F50E0E9D0A475541864420506B1051415D4B5A880A475541CF3305C56810514193746C280C47554117EE82A36610514190EB23630D475541B47AE8EA641051414ABAEE490E475541FD3466C962105141F45EBE1B0F475541786DD5E660105141E0AB7A41104755416B556B5C5E10514122CB1ED0114755413B60C2E25C105141EDC3E4CB124755412CBF0F935B105141FB64971B144755414279BFC3591051412970267315475541C3F5288C58105141C3F5280C1747554185EB51685710514100000060194755413333331356105141A4703DEA1A475541A4703D9A54105141A4703D7A1C475541EC51B82E571051418FC2F5381E475541BD2B0AC55B10514105559D4022475541C082491B5E10514122EEC12924475541E17A142E5F1051413D0AD73324475541295C8F926010514152B81E75254755419A99997962105141666666862647554148E17A1463105141EC51B8CE244755418FC2F5A8641051413D0AD7F32447554152B81EB5671051413D0AD7E326475541485DBE65681051414FDF198B2A4755414D8430046C105141567494752C4755411F4245716F105141698510812E4755413CED7A3A72105141971C5A5530475541C156E6A073105141663F9E423147554110AC30AD751051414096919D32475541F4DF45CB7610514120CD3B4E3347554148E17A0478105141C3F5288C324755417B14AEC7791051410AD7A38032475541F6285CAF7B105141AE47E17A314755411F85EB717F105141000000902A475541713D0A4777105141F6285C7F28475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2897288 - 2932763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -152  </desc>
+<a>
+01060000000100000001030000000100000013000000FDF4F3A60E535141640876AB055754415D66565B0E5351419B43FC66005754415524E20208535141305DD7C2FB565441C121445A05535141A81D682DFB5654411444BFAB00535141CC08680CFB565441982097A2F4525141653BD871FB5654419943CD44ED52514161A71740FC5654410CF609F0E7525141D809826CFD565441400C4305E9525141139F964F0A575441A4774FF5E9525141547139CE185754414AB6994CEA5251412342EB731A57544172A3BAC5E9525141312F93742957544155848C9BEE5251413454B2DB295754410BBC2AE4F75251414DC5B0A12A575441253E9482FE525141E2B746AD2A575441DAD1E6050B535141898D01752A57544159F8BAE210535141578611F729575441EC51B82E0F5351410AD7A3200F575441FDF4F3A60E535141640876AB05575441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B46FB6C6E952514146E190582957544179253127F25251413CC04F272A575441DC46023FF952514191E40FA42A575441D9C568B303535141BE0AEF952A5754417B5D4AE8105351413BA8AE4E2A575441EC51B82E0F5351410AD7A3200F5754417B14AE570E5351415C8FC22500575441E17A14CE07535141E17A149EFB565441A4703DEA0653514148E17AB4FA5654417D80E0350553514179F93898FA565441C7A3F71C035351415A759B88FA565441A10310D7FE5251415AA511ABFA5654416B91DD43FA525141889C0109FB565441982097A2F4525141603BD871FB56544158946BE2E75251410AF769D2FC565441E17A14DEE85251411F85EBF107575441A2774FF5E9525141507139CE1857544192D1F8C7E9525141B09020F01D575441B46FB6C6E952514146E1905829575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2897288 - 3566809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -152  </desc>
+<a>
+01060000000100000001030000000100000013000000FDF4F3A60E535141640876AB055754415D66565B0E5351419B43FC66005754415524E20208535141305DD7C2FB565441C121445A05535141A81D682DFB5654411444BFAB00535141CC08680CFB565441982097A2F4525141653BD871FB5654419943CD44ED52514161A71740FC5654410CF609F0E7525141D809826CFD565441400C4305E9525141139F964F0A575441A4774FF5E9525141547139CE185754414AB6994CEA5251412342EB731A57544172A3BAC5E9525141312F93742957544155848C9BEE5251413454B2DB295754410BBC2AE4F75251414DC5B0A12A575441253E9482FE525141E2B746AD2A575441DAD1E6050B535141898D01752A57544159F8BAE210535141578611F729575441EC51B82E0F5351410AD7A3200F575441FDF4F3A60E535141640876AB05575441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B46FB6C6E952514146E190582957544179253127F25251413CC04F272A575441DC46023FF952514191E40FA42A575441D9C568B303535141BE0AEF952A5754417B5D4AE8105351413BA8AE4E2A575441EC51B82E0F5351410AD7A3200F5754417B14AE570E5351415C8FC22500575441E17A14CE07535141E17A149EFB565441A4703DEA0653514148E17AB4FA5654417D80E0350553514179F93898FA565441C7A3F71C035351415A759B88FA565441A10310D7FE5251415AA511ABFA5654416B91DD43FA525141889C0109FB565441982097A2F4525141603BD871FB56544158946BE2E75251410AF769D2FC565441E17A14DEE85251411F85EBF107575441A2774FF5E9525141507139CE1857544192D1F8C7E9525141B09020F01D575441B46FB6C6E952514146E1905829575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444248 - 3880755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -93  </desc>
+<a>
+01060000000100000001030000000100000030000000596AFF3DD7D5504106F9B2B537405441A5AD21B2DAD5504193B53A6A3D405441FC0CBB24DDD55041681A9C3241405441A4544278E0D550419A1ACFCB46405441EE923AA4E1D55041CD7F42B348405441D6B9B55FE2D55041BCEC34C04A40544193C13485E2D5504121DD36754A40544148E17A94E2D55041C3F528EC4B40544185EB51C8E4D550418FC2F5084E405441E17A148EE7D55041666666365140544114F18E3BE8D5504134CFF8D4534054416C080CACE8D55041435BE77756405441CC65006EEAD5504125EF5440594054417601ED5BEDD550419FD837A55D405441713D0AF7EFD55041D7A3706D614054415C8FC2D5FDD550413D0AD74357405441EC51B8AEFDD55041A4703D9A5640544152B81E15FDD5504185EB51E851405441F6285C9FFCD55041333333534E4054411F85EB41FDD550418FC2F5984A405441A4703D1AFDD55041CDCCCC9C464054415C8FC275FCD55041333333A34240544133333353F9D550417B14AEE7374054415C8FC2A5F4D550415C8FC23528405441CDCCCC9CF1D550418FC2F5081F405441C3F5284CF4D5504185EB51981C4054413D0AD7D3FDD550419A9999F9144054410AD7A36003D6504152B81EC50F405441333333A303D6504185EB51D80C4054410000006003D65041713D0AC70B405441295C8F2201D650415C8FC295094054415C8FC255FED550410AD7A3F006405441F6285CAFFCD55041C3F5282C05405441EC51B88EF9D55041D7A370BD02405441EC51B89EF6D550418FC2F51800405441A4703D4AF4D55041D7A370CDFD3F5441EC51B84EF1D5504114AE47C1FA3F54419A999909E5D55041A4703DFAED3F5441A4703D0AD7D5504166666616F83F54411F85EB61CFD550415C8FC2A5FD3F54419A999909C0D55041CDCCCCCC08405441004FA2A2BED55041BB6564920940544152D31120C1D55041ECC3B82910405441E17A144EC2D5504152B81E0511405441817EFC58C4D550412F688412184054411A87DB53C9D550411F81C12D2240544109F4CD60CBD55041E93BAAB125405441596AFF3DD7D5504106F9B2B537405441
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000D1AAC33BFD55041A65E8E4209405441004FA2A2BED55041BB6564920940544152D31120C1D55041ECC3B82910405441E17A144EC2D5504152B81E0511405441B8B47789C2D55041E8B129D211405441D5C9DDA3C2D550419ACA4E2D124054415ADD6877C4D55041F1B9E95F1140544191079E7AC5D5504182739E0114405441ABC49262C3D55041E01FBFBF144054413CDCFBB6C3D550415C202FE31540544189BA21D8C3D55041CA9CA15516405441817EFC58C4D550412F688412184054411A87DB53C9D550411F81C12D2240544109F4CD60CBD55041E93BAAB125405441596AFF3DD7D5504106F9B2B537405441A5AD21B2DAD5504193B53A6A3D405441FC0CBB24DDD55041681A9C3241405441A4544278E0D550419A1ACFCB46405441EE923AA4E1D55041CD7F42B348405441D6B9B55FE2D55041BCEC34C04A40544193C13485E2D5504121DD36754A40544148E17A94E2D55041C3F528EC4B40544185EB51C8E4D550418FC2F5084E405441E17A148EE7D55041666666365140544114F18E3BE8D5504134CFF8D4534054416C080CACE8D55041435BE77756405441CC65006EEAD5504125EF5440594054417601ED5BEDD550419FD837A55D405441713D0AF7EFD55041D7A3706D614054415C8FC2D5FDD550413D0AD74357405441EC51B8AEFDD55041A4703D9A5640544152B81E15FDD5504185EB51E851405441F6285C9FFCD55041333333534E4054411F85EB41FDD550418FC2F5984A405441A4703D1AFDD55041CDCCCC9C464054415C8FC275FCD55041333333A34240544133333353F9D550417B14AEE7374054415C8FC2A5F4D550415C8FC23528405441CDCCCC9CF1D550418FC2F5081F405441C3F5284CF4D5504185EB51981C4054413D0AD7D3FDD550419A9999F9144054410AD7A36003D6504152B81EC50F405441333333A303D6504185EB51D80C4054410000006003D65041713D0AC70B405441295C8F2201D650415C8FC295094054415C8FC255FED550410AD7A3F006405441F6285CAFFCD55041C3F5282C05405441EC51B88EF9D55041D7A370BD02405441EC51B89EF6D550418FC2F51800405441A4703D4AF4D55041D7A370CDFD3F5441EC51B84EF1D5504114AE47C1FA3F54419A999909E5D55041A4703DFAED3F544157EC13CED7D55041C4ACF388F73F5441A4703D0AD7D5504166666616F83F54411F85EB61CFD550415C8FC2A5FD3F54419A999909C0D55041CDCCCCCC084054413D0AD753BFD55041295C8F92094054410D1AAC33BFD55041A65E8E4209405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980977 - 3180150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 15  </desc>
+<a>
+010600000010000000010300000001000000D1000000FC8676F16B665141BEE4271986A354413D5EEA726A6651413B5CED8882A354419CA3A21A6A66514118196BA07EA35441C5AAEDA469665141932E4C3F7DA3544153F338E1686651412177977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441333333738F66514148E17A14A3A354411F85EB51AE665141D7A3700DB9A35441EC51B87EC46651411F85EBF1CAA354411F85EB11D466514185EB51B8DCA35441F6285C4FDB6651417B14AE07E8A35441C3F528FCE56651413D0AD7B3F8A3544152B81E55ED6651418FC2F58805A45441D7A370DDF5665141000000F012A45441666666B6F6665141713D0A6712A45441D7A3708D126751417B14AE773CA454410000001021675141EC51B8BE51A454419A9999F9226751417B14AE3755A454413333334324675141A4703DAA58A4544185EB51382C675141713D0A8764A4544114AE47112D6751415C8FC2F563A45441C3F5282C426751416666669683A454417B14AE57566751418FC2F588A1A454413D0AD763616751411F85EBE1B1A454413333330363675141E17A14CEB5A45441AE47E19A6B67514133333323C1A454417B14AE576C675141E17A146EC0A4544152B81E7576675141A4703D0ACBA454418FC2F538826751417B14AEC7D4A45441713D0A4792675141A4703D6ADFA454415C8FC275A3675141F6285C7FE7A454411F85EB41B767514148E17A54EDA454419A9999C9D1675141CDCCCC3CF3A45441B81E85ABD4675141E17A145EF4A45441B81E85FBE467514100000010F7A45441C3F5281CE56751411F85EB11F6A4544152B81E35FA6751411F85EB71F8A45441AE47E15A0E6851417B14AE87F9A45441D7A3700D1C68514100000090F9A454413D0AD7B32B68514152B81E95F8A4544152B81E65456851413D0AD7E3F5A454410AD7A3C061685141A4703DDAF1A45441713D0A578C685141D7A3709DEBA454413D0AD7E3A1685141295C8F72E8A454410AD7A3E0A5685141333333B3E8A4544152B81EF5B468514185EB5168E6A45441CDCCCCBCB4685141CDCCCC6CE5A4544185EB5188DC68514148E17A84DFA45441EC51B89EE36851413D0AD783DEA45441EC51B87EE46851413D0AD763DEA454413D0AD763E8685141713D0AD7DDA4544152B81EC5F968514114AE4761DBA454411F85EBE11469514185EB5158D7A45441CDCCCC9C206951415C8FC2A5D5A454415C8FC2C52069514114AE47A1D6A45441CDCCCC1C2F6951419A9999A9D4A45441000000C0316951411F85EB71D3A45441B81E857B506951413D0AD713CFA4544148E17A245569514148E17A24CFA4544148E17A946569514185EB51D8CCA454410000007065695141B81E85DBCBA45441333333B38469514114AE4781C7A45441D7A370ED9F6951413D0AD753C5A45441C3F528BCB969514100000030C5A454419A999959C9695141D7A3700DC6A454418FC2F508D0695141713D0A87C6A45441713D0A27D969514148E17A04C8A45441713D0A27E9695141EC51B8AECBA4544114AE4741076A5141B81E85EBD3A4544148E17A04256A5141C3F5280CDCA45441D7A3706D306A5141E17A148EDFA45441EC51B8BE346A5141EC51B8DEE1A454413D0AD703436A51419A999989E5A454415C8FC255436A514152B81E95E4A45441295C8F325A6A51413D0AD713EBA45441295C8FE2896A5141295C8F12F8A45441713D0A17B86A5141333333F304A5544114AE47B1C16A51416666667607A55441B814444CC26A51417CF2EE1808A55441455521C1C26A5141C51C06CB07A554411023E5E9CA6A51413B1F5C3E09A5544164EE529FD16A514116A1DC540AA5544164EE529FD16A514128609CC909A554412FEDA7E5D06A5141F35EF10F09A55441BFCF9F7DBF6A5141C1D56E9F03A55441D97EB084B56A51418310588A00A55441BB21134BA46A5141D948EB01FCA45441197B88728D6A5141CC3DE87AF5A454412DA76DA9816A514146B86637F2A4544194F68A03656A5141006B786BEAA45441698EEA424D6A5141AC9F0AB6E3A4544109F40DAB3D6A51419D58738ADFA45441789F1D85316A5141E9900602DBA45441979A719E2E6A5141B38F5B48DAA4544106A81541236A5141AD1751EED7A45441257C016A0D6A5141F9B28D11D2A45441F141577EF8695141E508128DCCA45441A499686CE269514190E90658C6A45441064105E5DF69514183B2E4C4C5A45441E723306FD5695141B35236B3C3A4544158B542FCC76951412E681752C2A45441BD0F33F6B9695141B6B41A84C1A454410E6F38BBAF6951418176AD66C1A454418C376DDBA2695141B6B41A84C1A45441564A6F6E99695141576F62DCC1A45441B17EB2F5916951419AE4F18CC2A45441FB6A5EC982695141C0895846C4A45441E81152F57369514188E90658C6A45441490A5E1E68695141AE8E6D11C8A4544106E63D1E5E69514132798C72C9A45441100CEB90576951413FB0AE05CAA454414F70052151695141E06AF65DCAA4544112BF3E124C69514123E0850ECBA4544109EA0050496951419B9382DCCBA45441355330AB46695141DD08128DCCA454410277A75E44695141A8CAA46FCCA454417A192F0C3E69514157BC0E5BCDA45441B97D499C37695141CF6F0B29CEA45441DF731F06306951417D617514CFA454415C3C5426236951418736B3D6D1A45441E73BABD916695141E31987ADD3A45441EAEEFE5A0B69514109BFED66D5A45441F676909E026951418DA90CC8D6A4544164A6BE5AF768514148D29846D8A4544105B27563EE6851419A7E4A8AD9A454416D1DDB7DE76851413B3992E2D9A454413D0AD783E568514185EB5138DAA45441EC51B89EE5685141B81E85FBDAA45441B81E855BE168514185EB5198DBA454410AD7A340E1685141713D0AD7DAA454411F85EB31E1685141E17A146EDAA45441BB6B6B22D6685141E6C817FDDCA454415504C939C8685141AD28C60EDFA45441C795DBC6BA68514175887420E1A45441E3B6736EB068514165EF6DBCE2A45441221B8EFEA9685141A764FD6CE3A454416CB6CA21A468514118E1D7A7E3A45441008B5F979A6851410948D143E5A454413FEF792794685141C3705DC2E6A454419712488E85685141F64CE60EE9A45441FECE1C597568514194A54996EBA454412DEB9F356768514125C78A8AEDA45441A851F0845C68514181AA5E61EFA45441C6E9A44F42685141073399F1F2A45441C58B83B02F685141CE924703F5A45441491881721E685141B2C21E0CF6A45441ED851C4C13685141E8008C29F6A454412215F9190A685141B2C21E0CF6A454418CC058C4F26751411FA1DD17F4A454413F186AB2DC675141AA4FC51AF1A454410005BFD2D96751419D18A387F0A45441A783CFCCD56751414E6CF143EFA454419DAE910AD36751410CF76193EEA4544187A231B5CF67514135FEAC1DEEA454419A9D1CEACB6751415E05F8A7EDA45441056B66D5C2675141D91AD946ECA4544111F3F718BA67514148F99752EAA45441CDCED718B067514106E6EC72E7A45441C34A0907A467514119E1D7A7E3A4544173EFC673996751417EEA58F1DEA4544114FB7D7C9067514118324758DAA4544117AED1FD84675141672F684CD2A454413F068C387B67514157E7D098CAA45441CD16580C76675141507477A7C5A454412A4B9B936E67514106EE72D6BDA454415916AFBF696751415289AFF9B7A454415FDA77616567514141411846B0A454417F0C852962675141A64A998FABA4544178992B385D675141BCA76895A5A45441AAC62335566751414445DB779BA45441326496174C675141B838D2D58BA45441DC448BE24567514123061CC182A45441CD899A3D3967514182EDB2C96FA4544129BEDDC43167514191D728DE64A4544113B27D6F2E675141552662CF5FA454414EB4B32E2A6751417A1C383958A45441511698FF27675141EC5CDB1554A454417E7FC75A2567514193DBEB0F50A454413235FAE721675141572A25014BA45441C3A7AA8C1A675141FB97C0DA3FA45441CEAB6DBE056751419DA73A1522A45441163635C1F866514182DBD44F0EA45441B4DF07F9F1665141C703B88103A4544168953A86EE665141DD608787FDA35441093F0DBEE766514173351CFDF3A3544164735045E0665141AB26DD9BE8A35441578D9D62D6665141A404F35ADAA35441938FD321D2665141F09F2F7ED4A35441F898546BCD665141DCF5B3F9CEA35441A2794936C7665141B0DDF34EC8A35441EE148659C1665141D271E5E7C2A35441B5C5A31BBA665141E8CEB4EDBCA3544123A46227B86651412EA6286FBBA35441155CCB73B06651413803F874B5A35441180F1FF5A466514151C2AB4BADA35441B91AD6FD9B66514131E10D34A7A3544160EA55A88E66514173A70C959EA354419B3DFB1781665141077CA10A95A354411031F2757166514182E2F1598AA354414B3328356D6651410D91D95C87A35441FC8676F16B665141BEE4271986A354410103000000010000000B0000008773E99C69665141CADC01DF7AA354419CA3A21A6A6651412B1456D57AA35441A9DAC4AD6A66514111A611AF79A3544180D379236B66514183E6B48B75A35441218EC17B6B665141B2B1C8B770A35441218EC17B6B66514117BB49016CA3544157CC2E996B6651415C92BD826AA35441F7D9C37A6C665141FB3A39AE68A3544185EB51286B66514185EB511868A35441CDCCCCEC69665141E17A142E7AA354418773E99C69665141CADC01DF7AA354410103000000010000000C0000006BD6D95CD36A5141E1E65C1207A554417335EACAD56A514128609CC909A55441FABA6B0ED96A51414BA2870E0BA554416D812DDDDC6A5141F1225D6B0BA554415B91DC4AE66A514101A6883B0DA5544115DC74A3EC6A5141BF6849DD0EA554419232F354ED6A51414212CB2B0EA55441B81E85FBEC6A5141333333130EA55441F6285CDFEA6A5141EC51B87E0DA55441E17A145EE56A5141AE47E12A0CA554419A999999D86A514152B81E8508A554416BD6D95CD36A5141E1E65C1207A554410103000000010000002A0000005D237AACFB6B5141B8FE403AFBA45441AD92BEA8006C5141AFB70965F9A454410EB8B260066C51410180E7E6F6A454412D7E0F9F126C5141DBAA4167F1A45441D081C0391C6C514156A15EEEECA4544152C6AAB5266C51419B917D81E7A454413564FACC2F6C5141DC374CD0E2A45441BA6DDD45346C514190C5EE64E0A45441B483BCA63A6C51417E3780BADCA45441B22A2321426C5141C7B82667D8A454419859FA514C6C5141CA7D1F64D2A4544176ADF924566C51416B7D534ECCA454413FBAC1225E6C5141E0BDC019C7A454415CEC72A4626C514145CF56EFC3A45441584E29F8806C5141C7E58B25AFA45441B5CB714FA36C514179DBDAD297A454419A9999C9A26C51410000001097A45441713D0A679F6C5141C3F5285C99A45441C3F528EC9C6C5141AE47E10A9BA454411F85EBB1866C51410AD7A320AAA454417B14AE377E6C514114AE47E1AFA45441000000F07D6C5141295C8F12B0A45441B81E859B726C5141666666C6B7A454410AD7A3B0626C51417B14AE97C2A45441AE47E19A596C514148E17AC4C8A45441666666B6496C5141C3F528DCD2A45441333333033A6C5141713D0A17DCA45441713D0AB7246C5141E17A148EE7A454419A9999E90D6C51413D0AD783F2A454411F85EB51FD6B514133333313FAA454410AD7A350F96B514114AE47F1FAA4544100000040E86B51410000004002A55441CDCCCC1CE76B5141F6285CEF02A5544152B81E55E46B5141C3F5289C04A554413893421CDC6B51418FF8BCD006A55441B9277C33DE6B51410E84649706A55441B6628336E46B5141D3C7B6E704A55441D78179FAE86B5141236B6CC702A5544173631B62F06B5141ACF21068FFA454412AE274B5F46B514104719EA5FDA454413F950B02F86B514133558D66FCA454415D237AACFB6B5141B8FE403AFBA45441010300000001000000260000002BAE03D2FB6B51418C3F7A1BFCA45441570D9B4BF56B51419E61894EFEA454415F1CE48CEE6B5141F089967501A5544182C8E4B9E46B51410BF3DC7D05A55441B9277C33DE6B5141AD2AFFFB07A554416C49BF50DA6B51415B62217A0AA55441457419D1D46B514143EA91300DA55441B5FED6E0CE6B51412628B2A210A55441F8C9CDD1C96B5141990F86E812A5544111FB2546C56B51410F1C82D014A55441068FC6CEC36B51417697F69E15A5544152B81E65C26B51413333337316A55441295C8FA2D06B514185EB510812A55441CDCCCC3CD36B514148E17A5410A554413D0AD753DC6B5141A4703D8A0DA554410AD7A370F86B5141713D0A1702A55441AE47E10AFD6B51411F85EBC100A5544185EB51680C6C5141B81E854BFAA45441666666060C6C51410AD7A360F9A4544166666666276C5141AE47E15AECA45441F6285C0F3C6C51410AD7A330E1A45441713D0A874B6C5141EC51B82ED8A454419A9999A95C6C51410AD7A390CDA45441EC51B84E816C51418FC2F5B8B4A454418FC2F558A56C514185EB51D89BA454414542FEA4A36C5141E32F356598A45441BCAAF91F816C5141B5E08349B0A454417960B8B1626C51410A560906C5A45441E76FA5C8586C514133522DB8CBA454415E09AC194C6C5141D80EA77DD3A4544173DDED573F6C5141D6B50DF8DAA454418242B7AF336C5141001C3B91E1A454416FB44805306C5141A57885B1E3A45441AC9DD1781D6C5141C041FB5EEDA45441D433F3440D6C51415C239DC6F4A4544193F506BD036C514113A2F619F9A4544134F53AA7FD6B5141F34E8F72FBA454412BAE03D2FB6B51418C3F7A1BFCA4544101030000000100000036000000CA72500EFA6A5141332F0BAC12A55441F9BF3EDA016B51418C72A1AA14A55441595A1B72116B514165B88D1C18A55441B9F4F709216B5141FEFCCED41AA5544106D0142D316B51414481A55E1DA55441666AF1C4406B51411F0326751EA55441FC0A25FD536B51415404D12E1FA55441B1A10068616B514167C390A31EA55441E1EEEE33696B514167C390A31EA554412ECA0B57796B5141798250181EA554416E9A25F3826B51419741108D1DA55441B1A6D3338A6B51410E80FAA41CA55441653DAF9E976B5141AB3C64A61AA55441C5D78B36A76B514177774D9117A55441DEED9144B46B51418C72A1AA14A5544130169F59BA6B514106D54AFB12A55441B68BE149C06B5141C0189D4B11A5544149264CDCC56B5141B6D165760FA55441626A6A42CA6B5141DDDA7CD90DA554412D30FB6AD06B514169F3A8930BA55441FB8613ADD76B51415AF6C10209A554416302887BD86B5141F055259208A55441A795DF46D96B514147EC0BD007A554418FC2F518CE6B5141000000C00BA554418FC2F598C16B5141CDCCCC3C10A554415C8FC235BD6B514152B81E7511A55441EC51B8DEB06B5141B81E85BB14A554410AD7A330A46B51411F85EB7117A55441666666969A6B51419A99992919A55441EC51B87E8F6B51415C8FC2251BA55441295C8F22836B5141CDCCCCEC1CA55441AE47E17A706B51418FC2F5B81DA55441295C8FA26E6B5141CDCCCCCC1DA554411F85EB516A6B51415C8FC2E51DA554418FC2F558576B5141333333531EA55441F6285CEF556B51418FC2F5481EA55441333333E3466B51418FC2F5D81DA5544114AE47B1406B5141B81E85AB1DA5544185EB5138346B51413D0AD7931CA554410AD7A3A02C6B5141713D0AE71BA55441F6285CCF286B5141333333531BA55441C3F5285C1F6B514148E17AE419A55441A4703DCA156B514185EB512818A55441CDCCCC0C116B5141CDCCCC4C17A5544152B81EF5046B5141C3F528AC14A55441EC51B8BE046B5141D7A3709D14A554417B14AE07026B5141E17A14DE13A5544114AE4791006B5141713D0A7713A5544133333373F96A514114AE478111A55441F6285CFFF56A5141E17A148E10A554413CE75FCFEE6A51416C62DC930EA5544113A0E0FEEE6A51415AE91E3A0FA5544141E2CB43F06A5141F569F4960FA55441CA72500EFA6A5141332F0BAC12A55441010300000001000000350000002FF27AB1F96A514103B18BC213A5544134D7C8BCE96A51415AE91E3A0FA554415986D9C3DF6A5141AFE51D0D0DA554413ABC16C8D96A514179E472530CA55441827C81F6D96A51414966F3690DA5544184B8159BD76A5141146548B00CA55441DAF0A812D36A514139E3C7990BA55441662AE743CF6A5141B021B2B10AA55441791A38D6C56A5141F35EF10F09A55441CD1637A9C36A51414DDE1BB308A55441C071DD19C36A5141336E8BF008A55441666666E6C36A5141713D0AC709A554410AD7A3E0CB6A5141713D0A770BA554410AD7A3E0DB6A5141E17A149E10A5544133333373E76A5141E17A149E13A554411F85EBB1EB6A51413D0AD78313A554417B14AEF70F6B51418FC2F5681CA554411F85EB211E6B5141D7A370ED1EA55441F6285C4F2C6B51418FC2F5C820A5544100000070406B51415C8FC28522A55441A4703D6A576B514152B81E5523A55441D7A370AD6E6B51410AD7A32023A55441EC51B85E836B5141B81E851B22A55441E17A146E906B51415C8FC27520A554415C8FC205A56B5141E17A149E1CA55441C3F5284CB16B51415C8FC2F519A5544185EB5188C16B514114AE47B115A55441EC9D7808C26B5141A784D42116A5544102FE3EB5C26B51414747A86615A55441ABEB10EFC56B5141018BFAB613A55441D2C0B66ECB6B51418EA3267111A55441EF4E2519CF6B5141845CEF9B0FA554413E520A9ED26B5141AD8A2EA10DA554415F710062D76B5141FF520C230BA554416C49BF50DA6B5141C4965E7309A554410A84FA3DDA6B51418A46103B09A554413CF97018DA6B51418A46103B09A55441ABB79F0BCD6B5141AA6506FF0DA55441A2A4D919C46B5141C0189D4B11A554414B7FE561BE6B5141679A0F0E13A5544130169F59BA6B51410966D21414A55441EA550B20A66B51419AB938D618A55441EF6BEA488D6B51414481A55E1DA55441A608F66E786B51415404D12E1FA5544104626B96616B5141DDC5E61620A554414FCB8F2B546B5141DDC5E61620A554416085A3B9506B514195057CE81FA5544122F11DC2446B5141424511BA1FA554414A185712366B514172C390A31EA554417103FCBD296B51419741108D1DA5544177E849C9196B5141FEFCCED41AA55441AE561A450F6B51419AB938D618A554412FF27AB1F96A514103B18BC213A55441010300000001000000600000000277A75E44695141FAD83A84CBA454415E5A7B35466951418E5C6049CBA4544109EA00504969514182253EB6CAA454413864A5CB4D6951413FB0AE05CAA45441E704A00658695141C7FCB137C9A45441726218595E695141BAC58FA4C8A454414C6C42EF656951410CD425B9C7A454418C2E7E1E72695141B1F051E2C5A45441E8C0E2447D695141C0895846C4A4544170BC76C685695141A71B1420C3A454412EF677658E695141C3EB3C17C2A45441B17EB2F5916951412231F5BEC1A4544153E88A9D9B695141DFBB650EC1A4544153971BEDA46951413E011EB6C0A454419359571CB169514108C3B098C0A454417738BF74BB695141743F8BD3C0A45441090991B8C66951418176AD66C1A45441D7DB98BBCD6951418DADCFF9C1A4544195159A5AD6695141A71B1420C3A45441C12D5A05DD695141F6C7C563C4A45441A8FB4C3DE06951410BFFE7F6C4A454412622A3FCE569514190E90658C6A45441EBCEFD8CF369514147B0AE05CAA454419C806DE8046A51414E2308F7CEA45441CCA9A2B3126A51413B281DC2D2A4544125DA2209206A5141F2EEC46FD6A454417BF92D3E266A514177D9E3D0D7A4544116F0ACF42A6A5141EF8CE09ED8A45441321B47FB2E6A5141D80DDB31D9A4544151E509F7346A51413C517130DBA45441B733A37C3D6A5141C2D6F273DEA45441D4C1D1D3456A5141C09A5ECFE0A45441C2D180414F6A514159DF9F87E3A45441D86F5E06616A51415567773EE8A45441ADDBFFF37A6A51419773257FEFA45441DAE6027B816A5141BEF6504FF1A45441F4CB776B976A514130817E79F7A454412B70ACD0AC6A51414F4B4175FDA45441C00B3422BD6A5141F812AEFD01A5544120A610BACC6A51413D5BF0E206A55441522F932AD26A51414DDE1BB308A554414070D3B5D26A51414DDE1BB308A554416A4DB1D0D06A5141118C055E06A55441AE47E1EACE6A51417B14AED705A5544185EB51F8C66A5141333333B303A554419A999959B96A5141B81E85EBFFA45441295C8F62B46A5141CDCCCC8CFEA45441713D0AC7A06A51413D0AD723F9A454413D0AD7C3936A5141CDCCCC8CF5A4544185EB51C88B6A51418FC2F558F3A45441C3F5282C876A51410AD7A310F2A45441CDCCCC6C7D6A51419A999959EFA45441AE47E1AA6A6A514100000020EAA454415C8FC2155C6A514100000010E6A45441B81E85BB586A5141F6285C1FE5A4544185EB5168516A51411F85EB11E3A454417B14AEE7466A514100000020E0A45441E17A14CE396A51413D0AD773DCA454419A999969396A5141CDCCCC3CDCA45441A4703DAA356A5141AE47E12ADAA45441A4703D8A326A5141D7A3704DD9A454411F85EBE1276A5141B81E855BD6A454410AD7A340246A5141CDCCCC8CD6A4544148E17A841A6A5141A4703DDAD3A454413D0AD7630C6A5141000000F0CFA4544114AE47C1066A514185EB5158CEA454410AD7A3A0F6695141000000D0C9A45441E17A14BEF369514100000000C9A454413D0AD793EA695141CDCCCC6CC6A45441F6285C6FDA6951410AD7A3A0C2A45441A4703DBAD2695141EC51B86EC1A454410AD7A3A0CC695141333333C3C0A45441000000A0CA695141B81E858BC0A454410AD7A3A0C9695141CDCCCC7CC0A454415C8FC235BB695141A4703DAABFA45441F6285C1FBA6951419A9999A9BFA454419A999939AF695141666666A6BFA454411F85EBF1A46951413D0AD7A3BFA45441F2747647A0695141D9A239A2BFA4544182E43EAF9F695141F28647C8BFA45441BAC12D3F9F6951418FC576DCBFA45441334741B79269514192BEFBB3C0A45441257A956D8E69514116DC32F5C0A45441333333938C695141AE47E12AC1A45441EC51B8FE886951411F85EB91C1A45441B81E854B846951419A999919C2A45441666666E68369514185EB5128C2A4544114AE47F18369514133333363C2A45441CDCCCC7C5B695141295C8F52C8A45441E17A14BE526951415C8FC2B5C8A4544152B81E354A69514152B81E95C9A45441A4703D0A446951419A999959CAA45441AE47E18A436951419A999969CAA454414027D9AD426951410FC61885CAA454412247D0554369514125E0850ECBA454410277A75E44695141FAD83A84CBA454410103000000010000001C0000002E68513DF7685141D01E9C78D7A4544177503ADFFC685141586B9FAAD6A4544161F36AD902695141E0B7A2DCD5A454417E7224200B695141900BF198D4A45441A82800FA136951410C21D237D3A4544117B64F551B69514128F1FA2ED2A454415C3C54262369514144C12326D1A454418CB6F8A127695141CC0D2758D0A45441968B36642A6951418A9897A7CFA45441FB4348FD2E695141A668C09ECEA4544160FC59963369514164F330EECDA4544121983F063A695141B601C702CDA454410266323E3D695141DF08128DCCA454418750519F3E695141A9CAA46FCCA454416A8028A83F6951419D9382DCCBA454410F51841A40695141906D1ED7CAA45441713D0AD73E695141F6285CFFCAA454418FC2F5383C695141CDCCCCCCCBA4544166666656376951418FC2F588CCA45441A4703DAA30695141AE47E18ACDA4544148E17AD42D695141E17A141ECEA454418FC2F58829695141D7A3703DCFA45441333333F3136951411F85EB81D2A45441F6285C6FFE6851419A9999B9D5A4544105F67F75EB685141EBA52758D8A454413E52C751EC6851415809BBD9D8A45441342C1ADFF2685141E055BE0BD8A454412E68513DF7685141D01E9C78D7A454410103000000010000001F000000ECDC20E1A96851419B2DDBD9E2A45441DDF2AACCB4685141AAC6E13DE1A4544106A986A6BD685141F09D55BFDFA454417F0B14C4C76851416BB3365EDEA4544172838280D06851411C07851ADDA45441E110D2DBD7685141039940F4DBA454416037289BDD685141E92AFCCDDAA454412797D6ACDF685141A7B56C1DDAA454416AB54BC7DF685141591E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A4544185EB5198A36851419A999999E1A45441F6285C9FA1685141E17A14EEE1A45441D7A370BD9C685141000000C0E2A45441EC51B8DE986851415C8FC265E3A454419A9999D9946851411F85EB11E4A45441E17A14EE936851419A999939E4A45441333333438F6851411F85EBB1E4A45441AF3512A08E6851418EA829E0E4A454416EBA8D538F685141157FF3D6E5A454411CACF73E90685141B6393B2FE6A45441F3A4ACB49068514122B6156AE6A4544168F6C4B193685141157FF3D6E5A45441F6B521D5976851419DCBF608E5A45441AB1AE5B19D68514118E1D7A7E3A45441E7CBABC0A26851410CAAB514E3A45441D4D0C08BA668514135B1009FE2A45441ECDC20E1A96851419B2DDBD9E2A454410103000000010000004E00000046CA54DA76675141AFB92F4FC5A4544172E214857D67514105D93A84CBA454414DEC3E1B85675141EF7B6B7ED1A45441C54ECC388F675141F28CE09ED8A454412443153098675141F9FF3990DDA45441B613E773A3675141CA342664E2A454419AF24ECCAD67514181FBCD11E6A454413C5C2774B767514155929EB6E8A4544147316536BA675141058408A2E9A45441614E3AACC467514197A54996EBA45441812FD8C3CA6751417AD5209FECA45441F680F0C0CD675141E651FBD9ECA45441483E1725D66751410CF76193EEA4544178B8BBA0DA67514191E180F4EFA45441F6DE1160E0675141741158FDF0A45441ABF2658CEF675141063399F1F2A4544140251CA1F8675141B42403DDF3A4544117CD616602685141F699928DF4A454412215F9190A6851419954DAE5F4A4544172703BAD146851413A0F223EF5A45441ABBF1DEB1B6851413A0F223EF5A454416C5B035B22685141CE924703F5A45441D8866EE52B685141F799928DF4A454419922545532685141EB6270FAF3A454416A06D17840685141303AE47BF2A4544168537DF74B68514140D3EADFF0A4544168020E475568514185AA5E61EFA45441721383675C6851419E7A8758EEA4544179E4FDF7736851415230BAE5EAA454410C64608B886851417162C7ADE7A45441554C492D8E6851418D32F0A4E6A454411F0EDC0F8E685141157FF3D6E5A45441361BFBCB8D68514115E3481CE5A45441A4703DBA88685141C3F5288CE6A45441F6285CFF786851411F85EBD1E8A454417B14AE7765685141295C8FE2EBA45441A4703D6A60685141E17A14AEECA45441CDCCCC5C566851411F85EB41EEA45441B81E854B55685141CDCCCC6CEEA454413D0AD7D346685141713D0A67F0A454418FC2F5C83D685141333333A3F1A45441C3F528DC3C685141333333C3F1A45441C3F5284C3568514185EB5188F2A4544152B81E752C685141EC51B86EF3A45441B81E858B29685141AE47E1BAF3A454417B14AEB727685141A4703DEAF3A45441A4703DEA266851410AD7A3F0F3A4544133333373226851415C8FC215F4A45441666666661A6851418FC2F558F4A45441D7A370AD176851419A999949F4A454413333337312685141CDCCCC2CF4A454419A9999B90D68514133333313F4A45441666666D609685141D7A370FDF3A45441F6285C8F06685141B81E85EBF3A45441713D0A7704685141713D0AC7F3A45441F6285CAFFF67514148E17A74F3A45441D7A3702DF16751419A999979F2A454410AD7A320DA6751410AD7A330EFA454419A999979D6675141295C8FA2EDA4544185EB5138C7675141713D0AA7EAA4544148E17A94C4675141EC51B89EEAA454410AD7A320C267514166666696EAA4544114AE4711B667514114AE4751E7A454411F85EB51AF675141D7A3707DE5A4544133333383AD675141E17A14DEE4A454415C8FC2C5A2675141B81E852BE1A454411F85EB41A16751415C8FC2A5E0A4544148E17AD494675141666666E6DAA4544185EB51F892675141A4703D0ADAA45441666666B6846751418FC2F578D0A454411F85EBB17E675141F6285CAFCBA454419A9999E97D675141F6285C0FCBA4544185EB51B87167514148E17A54BFA45441333333936B675141F6285C7FB8A454411CA1592569675141AF3CC222B5A454417FBB15796B675141007B19E5B8A454414057FBE8716751416F086940C0A4544146CA54DA76675141AFB92F4FC5A45441010300000001000000190000003D0AD7432B6751415C8FC24558A45441CDDA09EE2F675141615D846260A45441EDBBA70536675141620C15B269A454419EBE86113E6751416C90E3C375A45441C07462EB4667514123061CC182A454419158DF0E556751412D397B2298A454415F2BE7115C6751417D94BDB5A2A45441FA2166C860675141903E393AA8A454417848BC8766675141E3FB5F9EB0A454410A6AFD7B686751412F462D11B4A454414AD75BFF68675141205963E5B4A45441295C8F32686751410AD7A3B0B2A4544152B81E856767514114AE47D1B0A45441C3F5283C61675141295C8F32A7A454413333333360675141C3F5289CA5A45441713D0AA75F675141666666C6A4A45441B81E854B5E675141AE47E1FAA4A45441E17A14BE5D6751415C8FC225A4A454419A9999F94E6751415C8FC2F58DA4544148E17A944467514152B81E557EA45441AE47E1EA426751415C8FC2D57BA454417B14AE473A6751418FC2F5D86EA45441EC51B87E316751413D0AD7A361A454419A9999B930675141B81E857B60A454413D0AD7432B6751415C8FC24558A4544101030000000100000028000000E0483754EF665141DD608787FDA354413CDB9B7AFA665141D18786930FA45441C2744B2B056751416ACBB1C81FA454413AD7D8480F67514148E6507F2EA4544114E102DF16675141F6864BBA38A454414892C9ED1B675141D290755040A454412FD31517246751411153B17F4CA454416B84DC2529675141F993FDA854A454413D0AD7432B6751415C8FC24558A454411F85EBC128675141B81E853B52A454416666667621675141D7A3709D47A45441333333C31F6751413D0AD72345A45441666666A61B6751415C8FC2253FA45441295C8F92146751418FC2F55834A45441000000800D675141B81E858B29A45441666666360C675141AE47E19A27A45441F6285C8F0B6751416666660628A45441F6285C2F026751411F85EB9119A45441CDCCCCFCFC665141295C8FD211A4544148E17AC4F6665141A4703D6A08A454418FC2F5F8EF6651418FC2F5A8FCA3544166666666EC665141CDCCCCFCF6A35441713D0A07E9665141EC51B8DEF1A35441AE47E1EAE66651411F85EBD1EEA354413D0AD7E3E0665141713D0AB7E6A3544114AE4741D966514166666676DBA35441EC51B85ED666514166666636D7A3544152B81E75C8665141000000A0C6A35441713D0AD7C5665141295C8F72C4A35441EC51B89EC56651411F85EBE1C4A35441EEC316A9CA66514118F8E9B8CAA35441501A4471D1665141F301144FD2A35441BFA793CCD8665141946BECF6DBA35441D3510F51DE665141E728135BE4A35441B0BD1DB8E366514163ED8449ECA35441E399A604E666514143BB7781EFA3544132465848E7665141F1ACE16CF0A3544181F2098CE8665141C543B211F3A3544138B9B139EC665141A3AFC078F8A35441E0483754EF665141DD608787FDA3544101030000000100000013000000AE47E19A7D665141CDCCCCBC91A35441764725AE88665141963BFE2D99A3544117B1FD55926651418D1551BB9FA3544183DC68E09B6651414EB1362BA6A354413B52A1DDA866514177671205AFA35441520D9282B56651417816A354B8A35441295C8FD2B56651411F85EB51B8A35441B81E859BB666514166666626B7A354415C8FC295A466514148E17A14ABA35441713D0A57A266514114AE47A1A9A354418FC2F5589E665141AE47E10AA7A35441AE47E16A95665141B81E851BA1A35441666666A6946651418FC2F598A0A35441F6285CCF92665141713D0A079FA3544152B81E4592665141EC51B8AE9EA35441A4703DAA9166514185EB51C89EA35441D7A370BD8C6651417B14AE279BA354413D0AD7037E665141A4703D2A91A35441AE47E19A7D665141CDCCCCBC91A354410103000000010000000400000052B81E8574665141333333838BA35441AE47E19A7D665141CDCCCCBC91A354418FC2F5D87A66514152B81ED58FA3544152B81E8574665141333333838BA354410103000000010000000F000000D37F2B676C665141E7EB72A385A35441550866F76F665141927BF8BD88A3544152B81E8574665141333333838BA35441713D0AE76D66514152B81ED585A354417B14AE876C6651413333335380A3544114AE47A16C665141D7A3707D7AA35441CDCCCC4C6E665141CDCCCC7C69A354411F85EB116E665141295C8F6269A354415DF618166D66514190EE05F368A354419941BE496C66514192D02AA06AA35441C24809D46B665141A98B1B4577A3544180D379236B665141D805C0C07BA35441EB4F545E6B665141DF7819B280A35441C24809D46B6651418A089FCC83A35441D37F2B676C665141E7EB72A385A35441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EFDC20E1A9685141982DDBD9E2A45441DDF2AACCB4685141AFC6E13DE1A4544107A986A6BD685141EC9D55BFDFA454417B0B14C4C768514170B3365EDEA4544173838280D06851411B07851ADDA45441E410D2DBD7685141029940F4DBA454416137289BDD685141E92AFCCDDAA454412697D6ACDF685141ABB56C1DDAA454416BB54BC7DF6851415D1E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A4544185EB5198A36851419A999999E1A45441F6285C9FA1685141E17A14EEE1A45441D7A370BD9C685141000000C0E2A45441EC51B8DE986851415C8FC265E3A454419A9999D9946851411F85EB11E4A45441E17A14EE936851419A999939E4A45441333333438F6851411F85EBB1E4A45441AD3512A08E68514190A829E0E4A4544173BA8D538F685141137FF3D6E5A454411FACF73E90685141B2393B2FE6A45441EFA4ACB49068514120B6156AE6A454416AF6C4B193685141137FF3D6E5A45441F3B521D59768514199CBF608E5A45441AC1AE5B19D6851411DE1D7A7E3A45441EBCBABC0A268514111AAB514E3A45441D6D0C08BA668514136B1009FE2A45441EFDC20E1A9685141982DDBD9E2A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980977 - 3586610
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 15  </desc>
+<a>
+010600000010000000010300000001000000D1000000FC8676F16B665141BEE4271986A354413D5EEA726A6651413B5CED8882A354419CA3A21A6A66514118196BA07EA35441C5AAEDA469665141932E4C3F7DA3544153F338E1686651412177977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441333333738F66514148E17A14A3A354411F85EB51AE665141D7A3700DB9A35441EC51B87EC46651411F85EBF1CAA354411F85EB11D466514185EB51B8DCA35441F6285C4FDB6651417B14AE07E8A35441C3F528FCE56651413D0AD7B3F8A3544152B81E55ED6651418FC2F58805A45441D7A370DDF5665141000000F012A45441666666B6F6665141713D0A6712A45441D7A3708D126751417B14AE773CA454410000001021675141EC51B8BE51A454419A9999F9226751417B14AE3755A454413333334324675141A4703DAA58A4544185EB51382C675141713D0A8764A4544114AE47112D6751415C8FC2F563A45441C3F5282C426751416666669683A454417B14AE57566751418FC2F588A1A454413D0AD763616751411F85EBE1B1A454413333330363675141E17A14CEB5A45441AE47E19A6B67514133333323C1A454417B14AE576C675141E17A146EC0A4544152B81E7576675141A4703D0ACBA454418FC2F538826751417B14AEC7D4A45441713D0A4792675141A4703D6ADFA454415C8FC275A3675141F6285C7FE7A454411F85EB41B767514148E17A54EDA454419A9999C9D1675141CDCCCC3CF3A45441B81E85ABD4675141E17A145EF4A45441B81E85FBE467514100000010F7A45441C3F5281CE56751411F85EB11F6A4544152B81E35FA6751411F85EB71F8A45441AE47E15A0E6851417B14AE87F9A45441D7A3700D1C68514100000090F9A454413D0AD7B32B68514152B81E95F8A4544152B81E65456851413D0AD7E3F5A454410AD7A3C061685141A4703DDAF1A45441713D0A578C685141D7A3709DEBA454413D0AD7E3A1685141295C8F72E8A454410AD7A3E0A5685141333333B3E8A4544152B81EF5B468514185EB5168E6A45441CDCCCCBCB4685141CDCCCC6CE5A4544185EB5188DC68514148E17A84DFA45441EC51B89EE36851413D0AD783DEA45441EC51B87EE46851413D0AD763DEA454413D0AD763E8685141713D0AD7DDA4544152B81EC5F968514114AE4761DBA454411F85EBE11469514185EB5158D7A45441CDCCCC9C206951415C8FC2A5D5A454415C8FC2C52069514114AE47A1D6A45441CDCCCC1C2F6951419A9999A9D4A45441000000C0316951411F85EB71D3A45441B81E857B506951413D0AD713CFA4544148E17A245569514148E17A24CFA4544148E17A946569514185EB51D8CCA454410000007065695141B81E85DBCBA45441333333B38469514114AE4781C7A45441D7A370ED9F6951413D0AD753C5A45441C3F528BCB969514100000030C5A454419A999959C9695141D7A3700DC6A454418FC2F508D0695141713D0A87C6A45441713D0A27D969514148E17A04C8A45441713D0A27E9695141EC51B8AECBA4544114AE4741076A5141B81E85EBD3A4544148E17A04256A5141C3F5280CDCA45441D7A3706D306A5141E17A148EDFA45441EC51B8BE346A5141EC51B8DEE1A454413D0AD703436A51419A999989E5A454415C8FC255436A514152B81E95E4A45441295C8F325A6A51413D0AD713EBA45441295C8FE2896A5141295C8F12F8A45441713D0A17B86A5141333333F304A5544114AE47B1C16A51416666667607A55441B814444CC26A51417CF2EE1808A55441455521C1C26A5141C51C06CB07A554411023E5E9CA6A51413B1F5C3E09A5544164EE529FD16A514116A1DC540AA5544164EE529FD16A514128609CC909A554412FEDA7E5D06A5141F35EF10F09A55441BFCF9F7DBF6A5141C1D56E9F03A55441D97EB084B56A51418310588A00A55441BB21134BA46A5141D948EB01FCA45441197B88728D6A5141CC3DE87AF5A454412DA76DA9816A514146B86637F2A4544194F68A03656A5141006B786BEAA45441698EEA424D6A5141AC9F0AB6E3A4544109F40DAB3D6A51419D58738ADFA45441789F1D85316A5141E9900602DBA45441979A719E2E6A5141B38F5B48DAA4544106A81541236A5141AD1751EED7A45441257C016A0D6A5141F9B28D11D2A45441F141577EF8695141E508128DCCA45441A499686CE269514190E90658C6A45441064105E5DF69514183B2E4C4C5A45441E723306FD5695141B35236B3C3A4544158B542FCC76951412E681752C2A45441BD0F33F6B9695141B6B41A84C1A454410E6F38BBAF6951418176AD66C1A454418C376DDBA2695141B6B41A84C1A45441564A6F6E99695141576F62DCC1A45441B17EB2F5916951419AE4F18CC2A45441FB6A5EC982695141C0895846C4A45441E81152F57369514188E90658C6A45441490A5E1E68695141AE8E6D11C8A4544106E63D1E5E69514132798C72C9A45441100CEB90576951413FB0AE05CAA454414F70052151695141E06AF65DCAA4544112BF3E124C69514123E0850ECBA4544109EA0050496951419B9382DCCBA45441355330AB46695141DD08128DCCA454410277A75E44695141A8CAA46FCCA454417A192F0C3E69514157BC0E5BCDA45441B97D499C37695141CF6F0B29CEA45441DF731F06306951417D617514CFA454415C3C5426236951418736B3D6D1A45441E73BABD916695141E31987ADD3A45441EAEEFE5A0B69514109BFED66D5A45441F676909E026951418DA90CC8D6A4544164A6BE5AF768514148D29846D8A4544105B27563EE6851419A7E4A8AD9A454416D1DDB7DE76851413B3992E2D9A454413D0AD783E568514185EB5138DAA45441EC51B89EE5685141B81E85FBDAA45441B81E855BE168514185EB5198DBA454410AD7A340E1685141713D0AD7DAA454411F85EB31E1685141E17A146EDAA45441BB6B6B22D6685141E6C817FDDCA454415504C939C8685141AD28C60EDFA45441C795DBC6BA68514175887420E1A45441E3B6736EB068514165EF6DBCE2A45441221B8EFEA9685141A764FD6CE3A454416CB6CA21A468514118E1D7A7E3A45441008B5F979A6851410948D143E5A454413FEF792794685141C3705DC2E6A454419712488E85685141F64CE60EE9A45441FECE1C597568514194A54996EBA454412DEB9F356768514125C78A8AEDA45441A851F0845C68514181AA5E61EFA45441C6E9A44F42685141073399F1F2A45441C58B83B02F685141CE924703F5A45441491881721E685141B2C21E0CF6A45441ED851C4C13685141E8008C29F6A454412215F9190A685141B2C21E0CF6A454418CC058C4F26751411FA1DD17F4A454413F186AB2DC675141AA4FC51AF1A454410005BFD2D96751419D18A387F0A45441A783CFCCD56751414E6CF143EFA454419DAE910AD36751410CF76193EEA4544187A231B5CF67514135FEAC1DEEA454419A9D1CEACB6751415E05F8A7EDA45441056B66D5C2675141D91AD946ECA4544111F3F718BA67514148F99752EAA45441CDCED718B067514106E6EC72E7A45441C34A0907A467514119E1D7A7E3A4544173EFC673996751417EEA58F1DEA4544114FB7D7C9067514118324758DAA4544117AED1FD84675141672F684CD2A454413F068C387B67514157E7D098CAA45441CD16580C76675141507477A7C5A454412A4B9B936E67514106EE72D6BDA454415916AFBF696751415289AFF9B7A454415FDA77616567514141411846B0A454417F0C852962675141A64A998FABA4544178992B385D675141BCA76895A5A45441AAC62335566751414445DB779BA45441326496174C675141B838D2D58BA45441DC448BE24567514123061CC182A45441CD899A3D3967514182EDB2C96FA4544129BEDDC43167514191D728DE64A4544113B27D6F2E675141552662CF5FA454414EB4B32E2A6751417A1C383958A45441511698FF27675141EC5CDB1554A454417E7FC75A2567514193DBEB0F50A454413235FAE721675141572A25014BA45441C3A7AA8C1A675141FB97C0DA3FA45441CEAB6DBE056751419DA73A1522A45441163635C1F866514182DBD44F0EA45441B4DF07F9F1665141C703B88103A4544168953A86EE665141DD608787FDA35441093F0DBEE766514173351CFDF3A3544164735045E0665141AB26DD9BE8A35441578D9D62D6665141A404F35ADAA35441938FD321D2665141F09F2F7ED4A35441F898546BCD665141DCF5B3F9CEA35441A2794936C7665141B0DDF34EC8A35441EE148659C1665141D271E5E7C2A35441B5C5A31BBA665141E8CEB4EDBCA3544123A46227B86651412EA6286FBBA35441155CCB73B06651413803F874B5A35441180F1FF5A466514151C2AB4BADA35441B91AD6FD9B66514131E10D34A7A3544160EA55A88E66514173A70C959EA354419B3DFB1781665141077CA10A95A354411031F2757166514182E2F1598AA354414B3328356D6651410D91D95C87A35441FC8676F16B665141BEE4271986A354410103000000010000000B0000008773E99C69665141CADC01DF7AA354419CA3A21A6A6651412B1456D57AA35441A9DAC4AD6A66514111A611AF79A3544180D379236B66514183E6B48B75A35441218EC17B6B665141B2B1C8B770A35441218EC17B6B66514117BB49016CA3544157CC2E996B6651415C92BD826AA35441F7D9C37A6C665141FB3A39AE68A3544185EB51286B66514185EB511868A35441CDCCCCEC69665141E17A142E7AA354418773E99C69665141CADC01DF7AA354410103000000010000000C0000006BD6D95CD36A5141E1E65C1207A554417335EACAD56A514128609CC909A55441FABA6B0ED96A51414BA2870E0BA554416D812DDDDC6A5141F1225D6B0BA554415B91DC4AE66A514101A6883B0DA5544115DC74A3EC6A5141BF6849DD0EA554419232F354ED6A51414212CB2B0EA55441B81E85FBEC6A5141333333130EA55441F6285CDFEA6A5141EC51B87E0DA55441E17A145EE56A5141AE47E12A0CA554419A999999D86A514152B81E8508A554416BD6D95CD36A5141E1E65C1207A554410103000000010000002A0000005D237AACFB6B5141B8FE403AFBA45441AD92BEA8006C5141AFB70965F9A454410EB8B260066C51410180E7E6F6A454412D7E0F9F126C5141DBAA4167F1A45441D081C0391C6C514156A15EEEECA4544152C6AAB5266C51419B917D81E7A454413564FACC2F6C5141DC374CD0E2A45441BA6DDD45346C514190C5EE64E0A45441B483BCA63A6C51417E3780BADCA45441B22A2321426C5141C7B82667D8A454419859FA514C6C5141CA7D1F64D2A4544176ADF924566C51416B7D534ECCA454413FBAC1225E6C5141E0BDC019C7A454415CEC72A4626C514145CF56EFC3A45441584E29F8806C5141C7E58B25AFA45441B5CB714FA36C514179DBDAD297A454419A9999C9A26C51410000001097A45441713D0A679F6C5141C3F5285C99A45441C3F528EC9C6C5141AE47E10A9BA454411F85EBB1866C51410AD7A320AAA454417B14AE377E6C514114AE47E1AFA45441000000F07D6C5141295C8F12B0A45441B81E859B726C5141666666C6B7A454410AD7A3B0626C51417B14AE97C2A45441AE47E19A596C514148E17AC4C8A45441666666B6496C5141C3F528DCD2A45441333333033A6C5141713D0A17DCA45441713D0AB7246C5141E17A148EE7A454419A9999E90D6C51413D0AD783F2A454411F85EB51FD6B514133333313FAA454410AD7A350F96B514114AE47F1FAA4544100000040E86B51410000004002A55441CDCCCC1CE76B5141F6285CEF02A5544152B81E55E46B5141C3F5289C04A554413893421CDC6B51418FF8BCD006A55441B9277C33DE6B51410E84649706A55441B6628336E46B5141D3C7B6E704A55441D78179FAE86B5141236B6CC702A5544173631B62F06B5141ACF21068FFA454412AE274B5F46B514104719EA5FDA454413F950B02F86B514133558D66FCA454415D237AACFB6B5141B8FE403AFBA45441010300000001000000260000002BAE03D2FB6B51418C3F7A1BFCA45441570D9B4BF56B51419E61894EFEA454415F1CE48CEE6B5141F089967501A5544182C8E4B9E46B51410BF3DC7D05A55441B9277C33DE6B5141AD2AFFFB07A554416C49BF50DA6B51415B62217A0AA55441457419D1D46B514143EA91300DA55441B5FED6E0CE6B51412628B2A210A55441F8C9CDD1C96B5141990F86E812A5544111FB2546C56B51410F1C82D014A55441068FC6CEC36B51417697F69E15A5544152B81E65C26B51413333337316A55441295C8FA2D06B514185EB510812A55441CDCCCC3CD36B514148E17A5410A554413D0AD753DC6B5141A4703D8A0DA554410AD7A370F86B5141713D0A1702A55441AE47E10AFD6B51411F85EBC100A5544185EB51680C6C5141B81E854BFAA45441666666060C6C51410AD7A360F9A4544166666666276C5141AE47E15AECA45441F6285C0F3C6C51410AD7A330E1A45441713D0A874B6C5141EC51B82ED8A454419A9999A95C6C51410AD7A390CDA45441EC51B84E816C51418FC2F5B8B4A454418FC2F558A56C514185EB51D89BA454414542FEA4A36C5141E32F356598A45441BCAAF91F816C5141B5E08349B0A454417960B8B1626C51410A560906C5A45441E76FA5C8586C514133522DB8CBA454415E09AC194C6C5141D80EA77DD3A4544173DDED573F6C5141D6B50DF8DAA454418242B7AF336C5141001C3B91E1A454416FB44805306C5141A57885B1E3A45441AC9DD1781D6C5141C041FB5EEDA45441D433F3440D6C51415C239DC6F4A4544193F506BD036C514113A2F619F9A4544134F53AA7FD6B5141F34E8F72FBA454412BAE03D2FB6B51418C3F7A1BFCA4544101030000000100000036000000CA72500EFA6A5141332F0BAC12A55441F9BF3EDA016B51418C72A1AA14A55441595A1B72116B514165B88D1C18A55441B9F4F709216B5141FEFCCED41AA5544106D0142D316B51414481A55E1DA55441666AF1C4406B51411F0326751EA55441FC0A25FD536B51415404D12E1FA55441B1A10068616B514167C390A31EA55441E1EEEE33696B514167C390A31EA554412ECA0B57796B5141798250181EA554416E9A25F3826B51419741108D1DA55441B1A6D3338A6B51410E80FAA41CA55441653DAF9E976B5141AB3C64A61AA55441C5D78B36A76B514177774D9117A55441DEED9144B46B51418C72A1AA14A5544130169F59BA6B514106D54AFB12A55441B68BE149C06B5141C0189D4B11A5544149264CDCC56B5141B6D165760FA55441626A6A42CA6B5141DDDA7CD90DA554412D30FB6AD06B514169F3A8930BA55441FB8613ADD76B51415AF6C10209A554416302887BD86B5141F055259208A55441A795DF46D96B514147EC0BD007A554418FC2F518CE6B5141000000C00BA554418FC2F598C16B5141CDCCCC3C10A554415C8FC235BD6B514152B81E7511A55441EC51B8DEB06B5141B81E85BB14A554410AD7A330A46B51411F85EB7117A55441666666969A6B51419A99992919A55441EC51B87E8F6B51415C8FC2251BA55441295C8F22836B5141CDCCCCEC1CA55441AE47E17A706B51418FC2F5B81DA55441295C8FA26E6B5141CDCCCCCC1DA554411F85EB516A6B51415C8FC2E51DA554418FC2F558576B5141333333531EA55441F6285CEF556B51418FC2F5481EA55441333333E3466B51418FC2F5D81DA5544114AE47B1406B5141B81E85AB1DA5544185EB5138346B51413D0AD7931CA554410AD7A3A02C6B5141713D0AE71BA55441F6285CCF286B5141333333531BA55441C3F5285C1F6B514148E17AE419A55441A4703DCA156B514185EB512818A55441CDCCCC0C116B5141CDCCCC4C17A5544152B81EF5046B5141C3F528AC14A55441EC51B8BE046B5141D7A3709D14A554417B14AE07026B5141E17A14DE13A5544114AE4791006B5141713D0A7713A5544133333373F96A514114AE478111A55441F6285CFFF56A5141E17A148E10A554413CE75FCFEE6A51416C62DC930EA5544113A0E0FEEE6A51415AE91E3A0FA5544141E2CB43F06A5141F569F4960FA55441CA72500EFA6A5141332F0BAC12A55441010300000001000000350000002FF27AB1F96A514103B18BC213A5544134D7C8BCE96A51415AE91E3A0FA554415986D9C3DF6A5141AFE51D0D0DA554413ABC16C8D96A514179E472530CA55441827C81F6D96A51414966F3690DA5544184B8159BD76A5141146548B00CA55441DAF0A812D36A514139E3C7990BA55441662AE743CF6A5141B021B2B10AA55441791A38D6C56A5141F35EF10F09A55441CD1637A9C36A51414DDE1BB308A55441C071DD19C36A5141336E8BF008A55441666666E6C36A5141713D0AC709A554410AD7A3E0CB6A5141713D0A770BA554410AD7A3E0DB6A5141E17A149E10A5544133333373E76A5141E17A149E13A554411F85EBB1EB6A51413D0AD78313A554417B14AEF70F6B51418FC2F5681CA554411F85EB211E6B5141D7A370ED1EA55441F6285C4F2C6B51418FC2F5C820A5544100000070406B51415C8FC28522A55441A4703D6A576B514152B81E5523A55441D7A370AD6E6B51410AD7A32023A55441EC51B85E836B5141B81E851B22A55441E17A146E906B51415C8FC27520A554415C8FC205A56B5141E17A149E1CA55441C3F5284CB16B51415C8FC2F519A5544185EB5188C16B514114AE47B115A55441EC9D7808C26B5141A784D42116A5544102FE3EB5C26B51414747A86615A55441ABEB10EFC56B5141018BFAB613A55441D2C0B66ECB6B51418EA3267111A55441EF4E2519CF6B5141845CEF9B0FA554413E520A9ED26B5141AD8A2EA10DA554415F710062D76B5141FF520C230BA554416C49BF50DA6B5141C4965E7309A554410A84FA3DDA6B51418A46103B09A554413CF97018DA6B51418A46103B09A55441ABB79F0BCD6B5141AA6506FF0DA55441A2A4D919C46B5141C0189D4B11A554414B7FE561BE6B5141679A0F0E13A5544130169F59BA6B51410966D21414A55441EA550B20A66B51419AB938D618A55441EF6BEA488D6B51414481A55E1DA55441A608F66E786B51415404D12E1FA5544104626B96616B5141DDC5E61620A554414FCB8F2B546B5141DDC5E61620A554416085A3B9506B514195057CE81FA5544122F11DC2446B5141424511BA1FA554414A185712366B514172C390A31EA554417103FCBD296B51419741108D1DA5544177E849C9196B5141FEFCCED41AA55441AE561A450F6B51419AB938D618A554412FF27AB1F96A514103B18BC213A55441010300000001000000600000000277A75E44695141FAD83A84CBA454415E5A7B35466951418E5C6049CBA4544109EA00504969514182253EB6CAA454413864A5CB4D6951413FB0AE05CAA45441E704A00658695141C7FCB137C9A45441726218595E695141BAC58FA4C8A454414C6C42EF656951410CD425B9C7A454418C2E7E1E72695141B1F051E2C5A45441E8C0E2447D695141C0895846C4A4544170BC76C685695141A71B1420C3A454412EF677658E695141C3EB3C17C2A45441B17EB2F5916951412231F5BEC1A4544153E88A9D9B695141DFBB650EC1A4544153971BEDA46951413E011EB6C0A454419359571CB169514108C3B098C0A454417738BF74BB695141743F8BD3C0A45441090991B8C66951418176AD66C1A45441D7DB98BBCD6951418DADCFF9C1A4544195159A5AD6695141A71B1420C3A45441C12D5A05DD695141F6C7C563C4A45441A8FB4C3DE06951410BFFE7F6C4A454412622A3FCE569514190E90658C6A45441EBCEFD8CF369514147B0AE05CAA454419C806DE8046A51414E2308F7CEA45441CCA9A2B3126A51413B281DC2D2A4544125DA2209206A5141F2EEC46FD6A454417BF92D3E266A514177D9E3D0D7A4544116F0ACF42A6A5141EF8CE09ED8A45441321B47FB2E6A5141D80DDB31D9A4544151E509F7346A51413C517130DBA45441B733A37C3D6A5141C2D6F273DEA45441D4C1D1D3456A5141C09A5ECFE0A45441C2D180414F6A514159DF9F87E3A45441D86F5E06616A51415567773EE8A45441ADDBFFF37A6A51419773257FEFA45441DAE6027B816A5141BEF6504FF1A45441F4CB776B976A514130817E79F7A454412B70ACD0AC6A51414F4B4175FDA45441C00B3422BD6A5141F812AEFD01A5544120A610BACC6A51413D5BF0E206A55441522F932AD26A51414DDE1BB308A554414070D3B5D26A51414DDE1BB308A554416A4DB1D0D06A5141118C055E06A55441AE47E1EACE6A51417B14AED705A5544185EB51F8C66A5141333333B303A554419A999959B96A5141B81E85EBFFA45441295C8F62B46A5141CDCCCC8CFEA45441713D0AC7A06A51413D0AD723F9A454413D0AD7C3936A5141CDCCCC8CF5A4544185EB51C88B6A51418FC2F558F3A45441C3F5282C876A51410AD7A310F2A45441CDCCCC6C7D6A51419A999959EFA45441AE47E1AA6A6A514100000020EAA454415C8FC2155C6A514100000010E6A45441B81E85BB586A5141F6285C1FE5A4544185EB5168516A51411F85EB11E3A454417B14AEE7466A514100000020E0A45441E17A14CE396A51413D0AD773DCA454419A999969396A5141CDCCCC3CDCA45441A4703DAA356A5141AE47E12ADAA45441A4703D8A326A5141D7A3704DD9A454411F85EBE1276A5141B81E855BD6A454410AD7A340246A5141CDCCCC8CD6A4544148E17A841A6A5141A4703DDAD3A454413D0AD7630C6A5141000000F0CFA4544114AE47C1066A514185EB5158CEA454410AD7A3A0F6695141000000D0C9A45441E17A14BEF369514100000000C9A454413D0AD793EA695141CDCCCC6CC6A45441F6285C6FDA6951410AD7A3A0C2A45441A4703DBAD2695141EC51B86EC1A454410AD7A3A0CC695141333333C3C0A45441000000A0CA695141B81E858BC0A454410AD7A3A0C9695141CDCCCC7CC0A454415C8FC235BB695141A4703DAABFA45441F6285C1FBA6951419A9999A9BFA454419A999939AF695141666666A6BFA454411F85EBF1A46951413D0AD7A3BFA45441F2747647A0695141D9A239A2BFA4544182E43EAF9F695141F28647C8BFA45441BAC12D3F9F6951418FC576DCBFA45441334741B79269514192BEFBB3C0A45441257A956D8E69514116DC32F5C0A45441333333938C695141AE47E12AC1A45441EC51B8FE886951411F85EB91C1A45441B81E854B846951419A999919C2A45441666666E68369514185EB5128C2A4544114AE47F18369514133333363C2A45441CDCCCC7C5B695141295C8F52C8A45441E17A14BE526951415C8FC2B5C8A4544152B81E354A69514152B81E95C9A45441A4703D0A446951419A999959CAA45441AE47E18A436951419A999969CAA454414027D9AD426951410FC61885CAA454412247D0554369514125E0850ECBA454410277A75E44695141FAD83A84CBA454410103000000010000001C0000002E68513DF7685141D01E9C78D7A4544177503ADFFC685141586B9FAAD6A4544161F36AD902695141E0B7A2DCD5A454417E7224200B695141900BF198D4A45441A82800FA136951410C21D237D3A4544117B64F551B69514128F1FA2ED2A454415C3C54262369514144C12326D1A454418CB6F8A127695141CC0D2758D0A45441968B36642A6951418A9897A7CFA45441FB4348FD2E695141A668C09ECEA4544160FC59963369514164F330EECDA4544121983F063A695141B601C702CDA454410266323E3D695141DF08128DCCA454418750519F3E695141A9CAA46FCCA454416A8028A83F6951419D9382DCCBA454410F51841A40695141906D1ED7CAA45441713D0AD73E695141F6285CFFCAA454418FC2F5383C695141CDCCCCCCCBA4544166666656376951418FC2F588CCA45441A4703DAA30695141AE47E18ACDA4544148E17AD42D695141E17A141ECEA454418FC2F58829695141D7A3703DCFA45441333333F3136951411F85EB81D2A45441F6285C6FFE6851419A9999B9D5A4544105F67F75EB685141EBA52758D8A454413E52C751EC6851415809BBD9D8A45441342C1ADFF2685141E055BE0BD8A454412E68513DF7685141D01E9C78D7A454410103000000010000001F000000ECDC20E1A96851419B2DDBD9E2A45441DDF2AACCB4685141AAC6E13DE1A4544106A986A6BD685141F09D55BFDFA454417F0B14C4C76851416BB3365EDEA4544172838280D06851411C07851ADDA45441E110D2DBD7685141039940F4DBA454416037289BDD685141E92AFCCDDAA454412797D6ACDF685141A7B56C1DDAA454416AB54BC7DF685141591E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A4544185EB5198A36851419A999999E1A45441F6285C9FA1685141E17A14EEE1A45441D7A370BD9C685141000000C0E2A45441EC51B8DE986851415C8FC265E3A454419A9999D9946851411F85EB11E4A45441E17A14EE936851419A999939E4A45441333333438F6851411F85EBB1E4A45441AF3512A08E6851418EA829E0E4A454416EBA8D538F685141157FF3D6E5A454411CACF73E90685141B6393B2FE6A45441F3A4ACB49068514122B6156AE6A4544168F6C4B193685141157FF3D6E5A45441F6B521D5976851419DCBF608E5A45441AB1AE5B19D68514118E1D7A7E3A45441E7CBABC0A26851410CAAB514E3A45441D4D0C08BA668514135B1009FE2A45441ECDC20E1A96851419B2DDBD9E2A454410103000000010000004E00000046CA54DA76675141AFB92F4FC5A4544172E214857D67514105D93A84CBA454414DEC3E1B85675141EF7B6B7ED1A45441C54ECC388F675141F28CE09ED8A454412443153098675141F9FF3990DDA45441B613E773A3675141CA342664E2A454419AF24ECCAD67514181FBCD11E6A454413C5C2774B767514155929EB6E8A4544147316536BA675141058408A2E9A45441614E3AACC467514197A54996EBA45441812FD8C3CA6751417AD5209FECA45441F680F0C0CD675141E651FBD9ECA45441483E1725D66751410CF76193EEA4544178B8BBA0DA67514191E180F4EFA45441F6DE1160E0675141741158FDF0A45441ABF2658CEF675141063399F1F2A4544140251CA1F8675141B42403DDF3A4544117CD616602685141F699928DF4A454412215F9190A6851419954DAE5F4A4544172703BAD146851413A0F223EF5A45441ABBF1DEB1B6851413A0F223EF5A454416C5B035B22685141CE924703F5A45441D8866EE52B685141F799928DF4A454419922545532685141EB6270FAF3A454416A06D17840685141303AE47BF2A4544168537DF74B68514140D3EADFF0A4544168020E475568514185AA5E61EFA45441721383675C6851419E7A8758EEA4544179E4FDF7736851415230BAE5EAA454410C64608B886851417162C7ADE7A45441554C492D8E6851418D32F0A4E6A454411F0EDC0F8E685141157FF3D6E5A45441361BFBCB8D68514115E3481CE5A45441A4703DBA88685141C3F5288CE6A45441F6285CFF786851411F85EBD1E8A454417B14AE7765685141295C8FE2EBA45441A4703D6A60685141E17A14AEECA45441CDCCCC5C566851411F85EB41EEA45441B81E854B55685141CDCCCC6CEEA454413D0AD7D346685141713D0A67F0A454418FC2F5C83D685141333333A3F1A45441C3F528DC3C685141333333C3F1A45441C3F5284C3568514185EB5188F2A4544152B81E752C685141EC51B86EF3A45441B81E858B29685141AE47E1BAF3A454417B14AEB727685141A4703DEAF3A45441A4703DEA266851410AD7A3F0F3A4544133333373226851415C8FC215F4A45441666666661A6851418FC2F558F4A45441D7A370AD176851419A999949F4A454413333337312685141CDCCCC2CF4A454419A9999B90D68514133333313F4A45441666666D609685141D7A370FDF3A45441F6285C8F06685141B81E85EBF3A45441713D0A7704685141713D0AC7F3A45441F6285CAFFF67514148E17A74F3A45441D7A3702DF16751419A999979F2A454410AD7A320DA6751410AD7A330EFA454419A999979D6675141295C8FA2EDA4544185EB5138C7675141713D0AA7EAA4544148E17A94C4675141EC51B89EEAA454410AD7A320C267514166666696EAA4544114AE4711B667514114AE4751E7A454411F85EB51AF675141D7A3707DE5A4544133333383AD675141E17A14DEE4A454415C8FC2C5A2675141B81E852BE1A454411F85EB41A16751415C8FC2A5E0A4544148E17AD494675141666666E6DAA4544185EB51F892675141A4703D0ADAA45441666666B6846751418FC2F578D0A454411F85EBB17E675141F6285CAFCBA454419A9999E97D675141F6285C0FCBA4544185EB51B87167514148E17A54BFA45441333333936B675141F6285C7FB8A454411CA1592569675141AF3CC222B5A454417FBB15796B675141007B19E5B8A454414057FBE8716751416F086940C0A4544146CA54DA76675141AFB92F4FC5A45441010300000001000000190000003D0AD7432B6751415C8FC24558A45441CDDA09EE2F675141615D846260A45441EDBBA70536675141620C15B269A454419EBE86113E6751416C90E3C375A45441C07462EB4667514123061CC182A454419158DF0E556751412D397B2298A454415F2BE7115C6751417D94BDB5A2A45441FA2166C860675141903E393AA8A454417848BC8766675141E3FB5F9EB0A454410A6AFD7B686751412F462D11B4A454414AD75BFF68675141205963E5B4A45441295C8F32686751410AD7A3B0B2A4544152B81E856767514114AE47D1B0A45441C3F5283C61675141295C8F32A7A454413333333360675141C3F5289CA5A45441713D0AA75F675141666666C6A4A45441B81E854B5E675141AE47E1FAA4A45441E17A14BE5D6751415C8FC225A4A454419A9999F94E6751415C8FC2F58DA4544148E17A944467514152B81E557EA45441AE47E1EA426751415C8FC2D57BA454417B14AE473A6751418FC2F5D86EA45441EC51B87E316751413D0AD7A361A454419A9999B930675141B81E857B60A454413D0AD7432B6751415C8FC24558A4544101030000000100000028000000E0483754EF665141DD608787FDA354413CDB9B7AFA665141D18786930FA45441C2744B2B056751416ACBB1C81FA454413AD7D8480F67514148E6507F2EA4544114E102DF16675141F6864BBA38A454414892C9ED1B675141D290755040A454412FD31517246751411153B17F4CA454416B84DC2529675141F993FDA854A454413D0AD7432B6751415C8FC24558A454411F85EBC128675141B81E853B52A454416666667621675141D7A3709D47A45441333333C31F6751413D0AD72345A45441666666A61B6751415C8FC2253FA45441295C8F92146751418FC2F55834A45441000000800D675141B81E858B29A45441666666360C675141AE47E19A27A45441F6285C8F0B6751416666660628A45441F6285C2F026751411F85EB9119A45441CDCCCCFCFC665141295C8FD211A4544148E17AC4F6665141A4703D6A08A454418FC2F5F8EF6651418FC2F5A8FCA3544166666666EC665141CDCCCCFCF6A35441713D0A07E9665141EC51B8DEF1A35441AE47E1EAE66651411F85EBD1EEA354413D0AD7E3E0665141713D0AB7E6A3544114AE4741D966514166666676DBA35441EC51B85ED666514166666636D7A3544152B81E75C8665141000000A0C6A35441713D0AD7C5665141295C8F72C4A35441EC51B89EC56651411F85EBE1C4A35441EEC316A9CA66514118F8E9B8CAA35441501A4471D1665141F301144FD2A35441BFA793CCD8665141946BECF6DBA35441D3510F51DE665141E728135BE4A35441B0BD1DB8E366514163ED8449ECA35441E399A604E666514143BB7781EFA3544132465848E7665141F1ACE16CF0A3544181F2098CE8665141C543B211F3A3544138B9B139EC665141A3AFC078F8A35441E0483754EF665141DD608787FDA3544101030000000100000013000000AE47E19A7D665141CDCCCCBC91A35441764725AE88665141963BFE2D99A3544117B1FD55926651418D1551BB9FA3544183DC68E09B6651414EB1362BA6A354413B52A1DDA866514177671205AFA35441520D9282B56651417816A354B8A35441295C8FD2B56651411F85EB51B8A35441B81E859BB666514166666626B7A354415C8FC295A466514148E17A14ABA35441713D0A57A266514114AE47A1A9A354418FC2F5589E665141AE47E10AA7A35441AE47E16A95665141B81E851BA1A35441666666A6946651418FC2F598A0A35441F6285CCF92665141713D0A079FA3544152B81E4592665141EC51B8AE9EA35441A4703DAA9166514185EB51C89EA35441D7A370BD8C6651417B14AE279BA354413D0AD7037E665141A4703D2A91A35441AE47E19A7D665141CDCCCCBC91A354410103000000010000000400000052B81E8574665141333333838BA35441AE47E19A7D665141CDCCCCBC91A354418FC2F5D87A66514152B81ED58FA3544152B81E8574665141333333838BA354410103000000010000000F000000D37F2B676C665141E7EB72A385A35441550866F76F665141927BF8BD88A3544152B81E8574665141333333838BA35441713D0AE76D66514152B81ED585A354417B14AE876C6651413333335380A3544114AE47A16C665141D7A3707D7AA35441CDCCCC4C6E665141CDCCCC7C69A354411F85EB116E665141295C8F6269A354415DF618166D66514190EE05F368A354419941BE496C66514192D02AA06AA35441C24809D46B665141A98B1B4577A3544180D379236B665141D805C0C07BA35441EB4F545E6B665141DF7819B280A35441C24809D46B6651418A089FCC83A35441D37F2B676C665141E7EB72A385A35441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EFDC20E1A9685141982DDBD9E2A45441DDF2AACCB4685141AFC6E13DE1A4544107A986A6BD685141EC9D55BFDFA454417B0B14C4C768514170B3365EDEA4544173838280D06851411B07851ADDA45441E410D2DBD7685141029940F4DBA454416137289BDD685141E92AFCCDDAA454412697D6ACDF685141ABB56C1DDAA454416BB54BC7DF6851415D1E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A4544185EB5198A36851419A999999E1A45441F6285C9FA1685141E17A14EEE1A45441D7A370BD9C685141000000C0E2A45441EC51B8DE986851415C8FC265E3A454419A9999D9946851411F85EB11E4A45441E17A14EE936851419A999939E4A45441333333438F6851411F85EBB1E4A45441AD3512A08E68514190A829E0E4A4544173BA8D538F685141137FF3D6E5A454411FACF73E90685141B2393B2FE6A45441EFA4ACB49068514120B6156AE6A454416AF6C4B193685141137FF3D6E5A45441F3B521D59768514199CBF608E5A45441AC1AE5B19D6851411DE1D7A7E3A45441EBCBABC0A268514111AAB514E3A45441D6D0C08BA668514136B1009FE2A45441EFDC20E1A9685141982DDBD9E2A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980977 - 53152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 14  </desc>
+<a>
+010600000010000000010300000001000000D1000000FC8676F16B665141BEE4271986A354413D5EEA726A6651413B5CED8882A354419CA3A21A6A66514118196BA07EA35441C5AAEDA469665141932E4C3F7DA3544153F338E1686651412177977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441333333738F66514148E17A14A3A354411F85EB51AE665141D7A3700DB9A35441EC51B87EC46651411F85EBF1CAA354411F85EB11D466514185EB51B8DCA35441F6285C4FDB6651417B14AE07E8A35441C3F528FCE56651413D0AD7B3F8A3544152B81E55ED6651418FC2F58805A45441D7A370DDF5665141000000F012A45441666666B6F6665141713D0A6712A45441D7A3708D126751417B14AE773CA454410000001021675141EC51B8BE51A454419A9999F9226751417B14AE3755A454413333334324675141A4703DAA58A4544185EB51382C675141713D0A8764A4544114AE47112D6751415C8FC2F563A45441C3F5282C426751416666669683A454417B14AE57566751418FC2F588A1A454413D0AD763616751411F85EBE1B1A454413333330363675141E17A14CEB5A45441AE47E19A6B67514133333323C1A454417B14AE576C675141E17A146EC0A4544152B81E7576675141A4703D0ACBA454418FC2F538826751417B14AEC7D4A45441713D0A4792675141A4703D6ADFA454415C8FC275A3675141F6285C7FE7A454411F85EB41B767514148E17A54EDA454419A9999C9D1675141CDCCCC3CF3A45441B81E85ABD4675141E17A145EF4A45441B81E85FBE467514100000010F7A45441C3F5281CE56751411F85EB11F6A4544152B81E35FA6751411F85EB71F8A45441AE47E15A0E6851417B14AE87F9A45441D7A3700D1C68514100000090F9A454413D0AD7B32B68514152B81E95F8A4544152B81E65456851413D0AD7E3F5A454410AD7A3C061685141A4703DDAF1A45441713D0A578C685141D7A3709DEBA454413D0AD7E3A1685141295C8F72E8A454410AD7A3E0A5685141333333B3E8A4544152B81EF5B468514185EB5168E6A45441CDCCCCBCB4685141CDCCCC6CE5A4544185EB5188DC68514148E17A84DFA45441EC51B89EE36851413D0AD783DEA45441EC51B87EE46851413D0AD763DEA454413D0AD763E8685141713D0AD7DDA4544152B81EC5F968514114AE4761DBA454411F85EBE11469514185EB5158D7A45441CDCCCC9C206951415C8FC2A5D5A454415C8FC2C52069514114AE47A1D6A45441CDCCCC1C2F6951419A9999A9D4A45441000000C0316951411F85EB71D3A45441B81E857B506951413D0AD713CFA4544148E17A245569514148E17A24CFA4544148E17A946569514185EB51D8CCA454410000007065695141B81E85DBCBA45441333333B38469514114AE4781C7A45441D7A370ED9F6951413D0AD753C5A45441C3F528BCB969514100000030C5A454419A999959C9695141D7A3700DC6A454418FC2F508D0695141713D0A87C6A45441713D0A27D969514148E17A04C8A45441713D0A27E9695141EC51B8AECBA4544114AE4741076A5141B81E85EBD3A4544148E17A04256A5141C3F5280CDCA45441D7A3706D306A5141E17A148EDFA45441EC51B8BE346A5141EC51B8DEE1A454413D0AD703436A51419A999989E5A454415C8FC255436A514152B81E95E4A45441295C8F325A6A51413D0AD713EBA45441295C8FE2896A5141295C8F12F8A45441713D0A17B86A5141333333F304A5544114AE47B1C16A51416666667607A55441B814444CC26A51417CF2EE1808A55441455521C1C26A5141C51C06CB07A554411023E5E9CA6A51413B1F5C3E09A5544164EE529FD16A514116A1DC540AA5544164EE529FD16A514128609CC909A554412FEDA7E5D06A5141F35EF10F09A55441BFCF9F7DBF6A5141C1D56E9F03A55441D97EB084B56A51418310588A00A55441BB21134BA46A5141D948EB01FCA45441197B88728D6A5141CC3DE87AF5A454412DA76DA9816A514146B86637F2A4544194F68A03656A5141006B786BEAA45441698EEA424D6A5141AC9F0AB6E3A4544109F40DAB3D6A51419D58738ADFA45441789F1D85316A5141E9900602DBA45441979A719E2E6A5141B38F5B48DAA4544106A81541236A5141AD1751EED7A45441257C016A0D6A5141F9B28D11D2A45441F141577EF8695141E508128DCCA45441A499686CE269514190E90658C6A45441064105E5DF69514183B2E4C4C5A45441E723306FD5695141B35236B3C3A4544158B542FCC76951412E681752C2A45441BD0F33F6B9695141B6B41A84C1A454410E6F38BBAF6951418176AD66C1A454418C376DDBA2695141B6B41A84C1A45441564A6F6E99695141576F62DCC1A45441B17EB2F5916951419AE4F18CC2A45441FB6A5EC982695141C0895846C4A45441E81152F57369514188E90658C6A45441490A5E1E68695141AE8E6D11C8A4544106E63D1E5E69514132798C72C9A45441100CEB90576951413FB0AE05CAA454414F70052151695141E06AF65DCAA4544112BF3E124C69514123E0850ECBA4544109EA0050496951419B9382DCCBA45441355330AB46695141DD08128DCCA454410277A75E44695141A8CAA46FCCA454417A192F0C3E69514157BC0E5BCDA45441B97D499C37695141CF6F0B29CEA45441DF731F06306951417D617514CFA454415C3C5426236951418736B3D6D1A45441E73BABD916695141E31987ADD3A45441EAEEFE5A0B69514109BFED66D5A45441F676909E026951418DA90CC8D6A4544164A6BE5AF768514148D29846D8A4544105B27563EE6851419A7E4A8AD9A454416D1DDB7DE76851413B3992E2D9A454413D0AD783E568514185EB5138DAA45441EC51B89EE5685141B81E85FBDAA45441B81E855BE168514185EB5198DBA454410AD7A340E1685141713D0AD7DAA454411F85EB31E1685141E17A146EDAA45441BB6B6B22D6685141E6C817FDDCA454415504C939C8685141AD28C60EDFA45441C795DBC6BA68514175887420E1A45441E3B6736EB068514165EF6DBCE2A45441221B8EFEA9685141A764FD6CE3A454416CB6CA21A468514118E1D7A7E3A45441008B5F979A6851410948D143E5A454413FEF792794685141C3705DC2E6A454419712488E85685141F64CE60EE9A45441FECE1C597568514194A54996EBA454412DEB9F356768514125C78A8AEDA45441A851F0845C68514181AA5E61EFA45441C6E9A44F42685141073399F1F2A45441C58B83B02F685141CE924703F5A45441491881721E685141B2C21E0CF6A45441ED851C4C13685141E8008C29F6A454412215F9190A685141B2C21E0CF6A454418CC058C4F26751411FA1DD17F4A454413F186AB2DC675141AA4FC51AF1A454410005BFD2D96751419D18A387F0A45441A783CFCCD56751414E6CF143EFA454419DAE910AD36751410CF76193EEA4544187A231B5CF67514135FEAC1DEEA454419A9D1CEACB6751415E05F8A7EDA45441056B66D5C2675141D91AD946ECA4544111F3F718BA67514148F99752EAA45441CDCED718B067514106E6EC72E7A45441C34A0907A467514119E1D7A7E3A4544173EFC673996751417EEA58F1DEA4544114FB7D7C9067514118324758DAA4544117AED1FD84675141672F684CD2A454413F068C387B67514157E7D098CAA45441CD16580C76675141507477A7C5A454412A4B9B936E67514106EE72D6BDA454415916AFBF696751415289AFF9B7A454415FDA77616567514141411846B0A454417F0C852962675141A64A998FABA4544178992B385D675141BCA76895A5A45441AAC62335566751414445DB779BA45441326496174C675141B838D2D58BA45441DC448BE24567514123061CC182A45441CD899A3D3967514182EDB2C96FA4544129BEDDC43167514191D728DE64A4544113B27D6F2E675141552662CF5FA454414EB4B32E2A6751417A1C383958A45441511698FF27675141EC5CDB1554A454417E7FC75A2567514193DBEB0F50A454413235FAE721675141572A25014BA45441C3A7AA8C1A675141FB97C0DA3FA45441CEAB6DBE056751419DA73A1522A45441163635C1F866514182DBD44F0EA45441B4DF07F9F1665141C703B88103A4544168953A86EE665141DD608787FDA35441093F0DBEE766514173351CFDF3A3544164735045E0665141AB26DD9BE8A35441578D9D62D6665141A404F35ADAA35441938FD321D2665141F09F2F7ED4A35441F898546BCD665141DCF5B3F9CEA35441A2794936C7665141B0DDF34EC8A35441EE148659C1665141D271E5E7C2A35441B5C5A31BBA665141E8CEB4EDBCA3544123A46227B86651412EA6286FBBA35441155CCB73B06651413803F874B5A35441180F1FF5A466514151C2AB4BADA35441B91AD6FD9B66514131E10D34A7A3544160EA55A88E66514173A70C959EA354419B3DFB1781665141077CA10A95A354411031F2757166514182E2F1598AA354414B3328356D6651410D91D95C87A35441FC8676F16B665141BEE4271986A354410103000000010000000B0000008773E99C69665141CADC01DF7AA354419CA3A21A6A6651412B1456D57AA35441A9DAC4AD6A66514111A611AF79A3544180D379236B66514183E6B48B75A35441218EC17B6B665141B2B1C8B770A35441218EC17B6B66514117BB49016CA3544157CC2E996B6651415C92BD826AA35441F7D9C37A6C665141FB3A39AE68A3544185EB51286B66514185EB511868A35441CDCCCCEC69665141E17A142E7AA354418773E99C69665141CADC01DF7AA354410103000000010000000C0000006BD6D95CD36A5141E1E65C1207A554417335EACAD56A514128609CC909A55441FABA6B0ED96A51414BA2870E0BA554416D812DDDDC6A5141F1225D6B0BA554415B91DC4AE66A514101A6883B0DA5544115DC74A3EC6A5141BF6849DD0EA554419232F354ED6A51414212CB2B0EA55441B81E85FBEC6A5141333333130EA55441F6285CDFEA6A5141EC51B87E0DA55441E17A145EE56A5141AE47E12A0CA554419A999999D86A514152B81E8508A554416BD6D95CD36A5141E1E65C1207A554410103000000010000002A0000005D237AACFB6B5141B8FE403AFBA45441AD92BEA8006C5141AFB70965F9A454410EB8B260066C51410180E7E6F6A454412D7E0F9F126C5141DBAA4167F1A45441D081C0391C6C514156A15EEEECA4544152C6AAB5266C51419B917D81E7A454413564FACC2F6C5141DC374CD0E2A45441BA6DDD45346C514190C5EE64E0A45441B483BCA63A6C51417E3780BADCA45441B22A2321426C5141C7B82667D8A454419859FA514C6C5141CA7D1F64D2A4544176ADF924566C51416B7D534ECCA454413FBAC1225E6C5141E0BDC019C7A454415CEC72A4626C514145CF56EFC3A45441584E29F8806C5141C7E58B25AFA45441B5CB714FA36C514179DBDAD297A454419A9999C9A26C51410000001097A45441713D0A679F6C5141C3F5285C99A45441C3F528EC9C6C5141AE47E10A9BA454411F85EBB1866C51410AD7A320AAA454417B14AE377E6C514114AE47E1AFA45441000000F07D6C5141295C8F12B0A45441B81E859B726C5141666666C6B7A454410AD7A3B0626C51417B14AE97C2A45441AE47E19A596C514148E17AC4C8A45441666666B6496C5141C3F528DCD2A45441333333033A6C5141713D0A17DCA45441713D0AB7246C5141E17A148EE7A454419A9999E90D6C51413D0AD783F2A454411F85EB51FD6B514133333313FAA454410AD7A350F96B514114AE47F1FAA4544100000040E86B51410000004002A55441CDCCCC1CE76B5141F6285CEF02A5544152B81E55E46B5141C3F5289C04A554413893421CDC6B51418FF8BCD006A55441B9277C33DE6B51410E84649706A55441B6628336E46B5141D3C7B6E704A55441D78179FAE86B5141236B6CC702A5544173631B62F06B5141ACF21068FFA454412AE274B5F46B514104719EA5FDA454413F950B02F86B514133558D66FCA454415D237AACFB6B5141B8FE403AFBA45441010300000001000000260000002BAE03D2FB6B51418C3F7A1BFCA45441570D9B4BF56B51419E61894EFEA454415F1CE48CEE6B5141F089967501A5544182C8E4B9E46B51410BF3DC7D05A55441B9277C33DE6B5141AD2AFFFB07A554416C49BF50DA6B51415B62217A0AA55441457419D1D46B514143EA91300DA55441B5FED6E0CE6B51412628B2A210A55441F8C9CDD1C96B5141990F86E812A5544111FB2546C56B51410F1C82D014A55441068FC6CEC36B51417697F69E15A5544152B81E65C26B51413333337316A55441295C8FA2D06B514185EB510812A55441CDCCCC3CD36B514148E17A5410A554413D0AD753DC6B5141A4703D8A0DA554410AD7A370F86B5141713D0A1702A55441AE47E10AFD6B51411F85EBC100A5544185EB51680C6C5141B81E854BFAA45441666666060C6C51410AD7A360F9A4544166666666276C5141AE47E15AECA45441F6285C0F3C6C51410AD7A330E1A45441713D0A874B6C5141EC51B82ED8A454419A9999A95C6C51410AD7A390CDA45441EC51B84E816C51418FC2F5B8B4A454418FC2F558A56C514185EB51D89BA454414542FEA4A36C5141E32F356598A45441BCAAF91F816C5141B5E08349B0A454417960B8B1626C51410A560906C5A45441E76FA5C8586C514133522DB8CBA454415E09AC194C6C5141D80EA77DD3A4544173DDED573F6C5141D6B50DF8DAA454418242B7AF336C5141001C3B91E1A454416FB44805306C5141A57885B1E3A45441AC9DD1781D6C5141C041FB5EEDA45441D433F3440D6C51415C239DC6F4A4544193F506BD036C514113A2F619F9A4544134F53AA7FD6B5141F34E8F72FBA454412BAE03D2FB6B51418C3F7A1BFCA4544101030000000100000036000000CA72500EFA6A5141332F0BAC12A55441F9BF3EDA016B51418C72A1AA14A55441595A1B72116B514165B88D1C18A55441B9F4F709216B5141FEFCCED41AA5544106D0142D316B51414481A55E1DA55441666AF1C4406B51411F0326751EA55441FC0A25FD536B51415404D12E1FA55441B1A10068616B514167C390A31EA55441E1EEEE33696B514167C390A31EA554412ECA0B57796B5141798250181EA554416E9A25F3826B51419741108D1DA55441B1A6D3338A6B51410E80FAA41CA55441653DAF9E976B5141AB3C64A61AA55441C5D78B36A76B514177774D9117A55441DEED9144B46B51418C72A1AA14A5544130169F59BA6B514106D54AFB12A55441B68BE149C06B5141C0189D4B11A5544149264CDCC56B5141B6D165760FA55441626A6A42CA6B5141DDDA7CD90DA554412D30FB6AD06B514169F3A8930BA55441FB8613ADD76B51415AF6C10209A554416302887BD86B5141F055259208A55441A795DF46D96B514147EC0BD007A554418FC2F518CE6B5141000000C00BA554418FC2F598C16B5141CDCCCC3C10A554415C8FC235BD6B514152B81E7511A55441EC51B8DEB06B5141B81E85BB14A554410AD7A330A46B51411F85EB7117A55441666666969A6B51419A99992919A55441EC51B87E8F6B51415C8FC2251BA55441295C8F22836B5141CDCCCCEC1CA55441AE47E17A706B51418FC2F5B81DA55441295C8FA26E6B5141CDCCCCCC1DA554411F85EB516A6B51415C8FC2E51DA554418FC2F558576B5141333333531EA55441F6285CEF556B51418FC2F5481EA55441333333E3466B51418FC2F5D81DA5544114AE47B1406B5141B81E85AB1DA5544185EB5138346B51413D0AD7931CA554410AD7A3A02C6B5141713D0AE71BA55441F6285CCF286B5141333333531BA55441C3F5285C1F6B514148E17AE419A55441A4703DCA156B514185EB512818A55441CDCCCC0C116B5141CDCCCC4C17A5544152B81EF5046B5141C3F528AC14A55441EC51B8BE046B5141D7A3709D14A554417B14AE07026B5141E17A14DE13A5544114AE4791006B5141713D0A7713A5544133333373F96A514114AE478111A55441F6285CFFF56A5141E17A148E10A554413CE75FCFEE6A51416C62DC930EA5544113A0E0FEEE6A51415AE91E3A0FA5544141E2CB43F06A5141F569F4960FA55441CA72500EFA6A5141332F0BAC12A55441010300000001000000350000002FF27AB1F96A514103B18BC213A5544134D7C8BCE96A51415AE91E3A0FA554415986D9C3DF6A5141AFE51D0D0DA554413ABC16C8D96A514179E472530CA55441827C81F6D96A51414966F3690DA5544184B8159BD76A5141146548B00CA55441DAF0A812D36A514139E3C7990BA55441662AE743CF6A5141B021B2B10AA55441791A38D6C56A5141F35EF10F09A55441CD1637A9C36A51414DDE1BB308A55441C071DD19C36A5141336E8BF008A55441666666E6C36A5141713D0AC709A554410AD7A3E0CB6A5141713D0A770BA554410AD7A3E0DB6A5141E17A149E10A5544133333373E76A5141E17A149E13A554411F85EBB1EB6A51413D0AD78313A554417B14AEF70F6B51418FC2F5681CA554411F85EB211E6B5141D7A370ED1EA55441F6285C4F2C6B51418FC2F5C820A5544100000070406B51415C8FC28522A55441A4703D6A576B514152B81E5523A55441D7A370AD6E6B51410AD7A32023A55441EC51B85E836B5141B81E851B22A55441E17A146E906B51415C8FC27520A554415C8FC205A56B5141E17A149E1CA55441C3F5284CB16B51415C8FC2F519A5544185EB5188C16B514114AE47B115A55441EC9D7808C26B5141A784D42116A5544102FE3EB5C26B51414747A86615A55441ABEB10EFC56B5141018BFAB613A55441D2C0B66ECB6B51418EA3267111A55441EF4E2519CF6B5141845CEF9B0FA554413E520A9ED26B5141AD8A2EA10DA554415F710062D76B5141FF520C230BA554416C49BF50DA6B5141C4965E7309A554410A84FA3DDA6B51418A46103B09A554413CF97018DA6B51418A46103B09A55441ABB79F0BCD6B5141AA6506FF0DA55441A2A4D919C46B5141C0189D4B11A554414B7FE561BE6B5141679A0F0E13A5544130169F59BA6B51410966D21414A55441EA550B20A66B51419AB938D618A55441EF6BEA488D6B51414481A55E1DA55441A608F66E786B51415404D12E1FA5544104626B96616B5141DDC5E61620A554414FCB8F2B546B5141DDC5E61620A554416085A3B9506B514195057CE81FA5544122F11DC2446B5141424511BA1FA554414A185712366B514172C390A31EA554417103FCBD296B51419741108D1DA5544177E849C9196B5141FEFCCED41AA55441AE561A450F6B51419AB938D618A554412FF27AB1F96A514103B18BC213A55441010300000001000000600000000277A75E44695141FAD83A84CBA454415E5A7B35466951418E5C6049CBA4544109EA00504969514182253EB6CAA454413864A5CB4D6951413FB0AE05CAA45441E704A00658695141C7FCB137C9A45441726218595E695141BAC58FA4C8A454414C6C42EF656951410CD425B9C7A454418C2E7E1E72695141B1F051E2C5A45441E8C0E2447D695141C0895846C4A4544170BC76C685695141A71B1420C3A454412EF677658E695141C3EB3C17C2A45441B17EB2F5916951412231F5BEC1A4544153E88A9D9B695141DFBB650EC1A4544153971BEDA46951413E011EB6C0A454419359571CB169514108C3B098C0A454417738BF74BB695141743F8BD3C0A45441090991B8C66951418176AD66C1A45441D7DB98BBCD6951418DADCFF9C1A4544195159A5AD6695141A71B1420C3A45441C12D5A05DD695141F6C7C563C4A45441A8FB4C3DE06951410BFFE7F6C4A454412622A3FCE569514190E90658C6A45441EBCEFD8CF369514147B0AE05CAA454419C806DE8046A51414E2308F7CEA45441CCA9A2B3126A51413B281DC2D2A4544125DA2209206A5141F2EEC46FD6A454417BF92D3E266A514177D9E3D0D7A4544116F0ACF42A6A5141EF8CE09ED8A45441321B47FB2E6A5141D80DDB31D9A4544151E509F7346A51413C517130DBA45441B733A37C3D6A5141C2D6F273DEA45441D4C1D1D3456A5141C09A5ECFE0A45441C2D180414F6A514159DF9F87E3A45441D86F5E06616A51415567773EE8A45441ADDBFFF37A6A51419773257FEFA45441DAE6027B816A5141BEF6504FF1A45441F4CB776B976A514130817E79F7A454412B70ACD0AC6A51414F4B4175FDA45441C00B3422BD6A5141F812AEFD01A5544120A610BACC6A51413D5BF0E206A55441522F932AD26A51414DDE1BB308A554414070D3B5D26A51414DDE1BB308A554416A4DB1D0D06A5141118C055E06A55441AE47E1EACE6A51417B14AED705A5544185EB51F8C66A5141333333B303A554419A999959B96A5141B81E85EBFFA45441295C8F62B46A5141CDCCCC8CFEA45441713D0AC7A06A51413D0AD723F9A454413D0AD7C3936A5141CDCCCC8CF5A4544185EB51C88B6A51418FC2F558F3A45441C3F5282C876A51410AD7A310F2A45441CDCCCC6C7D6A51419A999959EFA45441AE47E1AA6A6A514100000020EAA454415C8FC2155C6A514100000010E6A45441B81E85BB586A5141F6285C1FE5A4544185EB5168516A51411F85EB11E3A454417B14AEE7466A514100000020E0A45441E17A14CE396A51413D0AD773DCA454419A999969396A5141CDCCCC3CDCA45441A4703DAA356A5141AE47E12ADAA45441A4703D8A326A5141D7A3704DD9A454411F85EBE1276A5141B81E855BD6A454410AD7A340246A5141CDCCCC8CD6A4544148E17A841A6A5141A4703DDAD3A454413D0AD7630C6A5141000000F0CFA4544114AE47C1066A514185EB5158CEA454410AD7A3A0F6695141000000D0C9A45441E17A14BEF369514100000000C9A454413D0AD793EA695141CDCCCC6CC6A45441F6285C6FDA6951410AD7A3A0C2A45441A4703DBAD2695141EC51B86EC1A454410AD7A3A0CC695141333333C3C0A45441000000A0CA695141B81E858BC0A454410AD7A3A0C9695141CDCCCC7CC0A454415C8FC235BB695141A4703DAABFA45441F6285C1FBA6951419A9999A9BFA454419A999939AF695141666666A6BFA454411F85EBF1A46951413D0AD7A3BFA45441F2747647A0695141D9A239A2BFA4544182E43EAF9F695141F28647C8BFA45441BAC12D3F9F6951418FC576DCBFA45441334741B79269514192BEFBB3C0A45441257A956D8E69514116DC32F5C0A45441333333938C695141AE47E12AC1A45441EC51B8FE886951411F85EB91C1A45441B81E854B846951419A999919C2A45441666666E68369514185EB5128C2A4544114AE47F18369514133333363C2A45441CDCCCC7C5B695141295C8F52C8A45441E17A14BE526951415C8FC2B5C8A4544152B81E354A69514152B81E95C9A45441A4703D0A446951419A999959CAA45441AE47E18A436951419A999969CAA454414027D9AD426951410FC61885CAA454412247D0554369514125E0850ECBA454410277A75E44695141FAD83A84CBA454410103000000010000001C0000002E68513DF7685141D01E9C78D7A4544177503ADFFC685141586B9FAAD6A4544161F36AD902695141E0B7A2DCD5A454417E7224200B695141900BF198D4A45441A82800FA136951410C21D237D3A4544117B64F551B69514128F1FA2ED2A454415C3C54262369514144C12326D1A454418CB6F8A127695141CC0D2758D0A45441968B36642A6951418A9897A7CFA45441FB4348FD2E695141A668C09ECEA4544160FC59963369514164F330EECDA4544121983F063A695141B601C702CDA454410266323E3D695141DF08128DCCA454418750519F3E695141A9CAA46FCCA454416A8028A83F6951419D9382DCCBA454410F51841A40695141906D1ED7CAA45441713D0AD73E695141F6285CFFCAA454418FC2F5383C695141CDCCCCCCCBA4544166666656376951418FC2F588CCA45441A4703DAA30695141AE47E18ACDA4544148E17AD42D695141E17A141ECEA454418FC2F58829695141D7A3703DCFA45441333333F3136951411F85EB81D2A45441F6285C6FFE6851419A9999B9D5A4544105F67F75EB685141EBA52758D8A454413E52C751EC6851415809BBD9D8A45441342C1ADFF2685141E055BE0BD8A454412E68513DF7685141D01E9C78D7A454410103000000010000001F000000ECDC20E1A96851419B2DDBD9E2A45441DDF2AACCB4685141AAC6E13DE1A4544106A986A6BD685141F09D55BFDFA454417F0B14C4C76851416BB3365EDEA4544172838280D06851411C07851ADDA45441E110D2DBD7685141039940F4DBA454416037289BDD685141E92AFCCDDAA454412797D6ACDF685141A7B56C1DDAA454416AB54BC7DF685141591E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A4544185EB5198A36851419A999999E1A45441F6285C9FA1685141E17A14EEE1A45441D7A370BD9C685141000000C0E2A45441EC51B8DE986851415C8FC265E3A454419A9999D9946851411F85EB11E4A45441E17A14EE936851419A999939E4A45441333333438F6851411F85EBB1E4A45441AF3512A08E6851418EA829E0E4A454416EBA8D538F685141157FF3D6E5A454411CACF73E90685141B6393B2FE6A45441F3A4ACB49068514122B6156AE6A4544168F6C4B193685141157FF3D6E5A45441F6B521D5976851419DCBF608E5A45441AB1AE5B19D68514118E1D7A7E3A45441E7CBABC0A26851410CAAB514E3A45441D4D0C08BA668514135B1009FE2A45441ECDC20E1A96851419B2DDBD9E2A454410103000000010000004E00000046CA54DA76675141AFB92F4FC5A4544172E214857D67514105D93A84CBA454414DEC3E1B85675141EF7B6B7ED1A45441C54ECC388F675141F28CE09ED8A454412443153098675141F9FF3990DDA45441B613E773A3675141CA342664E2A454419AF24ECCAD67514181FBCD11E6A454413C5C2774B767514155929EB6E8A4544147316536BA675141058408A2E9A45441614E3AACC467514197A54996EBA45441812FD8C3CA6751417AD5209FECA45441F680F0C0CD675141E651FBD9ECA45441483E1725D66751410CF76193EEA4544178B8BBA0DA67514191E180F4EFA45441F6DE1160E0675141741158FDF0A45441ABF2658CEF675141063399F1F2A4544140251CA1F8675141B42403DDF3A4544117CD616602685141F699928DF4A454412215F9190A6851419954DAE5F4A4544172703BAD146851413A0F223EF5A45441ABBF1DEB1B6851413A0F223EF5A454416C5B035B22685141CE924703F5A45441D8866EE52B685141F799928DF4A454419922545532685141EB6270FAF3A454416A06D17840685141303AE47BF2A4544168537DF74B68514140D3EADFF0A4544168020E475568514185AA5E61EFA45441721383675C6851419E7A8758EEA4544179E4FDF7736851415230BAE5EAA454410C64608B886851417162C7ADE7A45441554C492D8E6851418D32F0A4E6A454411F0EDC0F8E685141157FF3D6E5A45441361BFBCB8D68514115E3481CE5A45441A4703DBA88685141C3F5288CE6A45441F6285CFF786851411F85EBD1E8A454417B14AE7765685141295C8FE2EBA45441A4703D6A60685141E17A14AEECA45441CDCCCC5C566851411F85EB41EEA45441B81E854B55685141CDCCCC6CEEA454413D0AD7D346685141713D0A67F0A454418FC2F5C83D685141333333A3F1A45441C3F528DC3C685141333333C3F1A45441C3F5284C3568514185EB5188F2A4544152B81E752C685141EC51B86EF3A45441B81E858B29685141AE47E1BAF3A454417B14AEB727685141A4703DEAF3A45441A4703DEA266851410AD7A3F0F3A4544133333373226851415C8FC215F4A45441666666661A6851418FC2F558F4A45441D7A370AD176851419A999949F4A454413333337312685141CDCCCC2CF4A454419A9999B90D68514133333313F4A45441666666D609685141D7A370FDF3A45441F6285C8F06685141B81E85EBF3A45441713D0A7704685141713D0AC7F3A45441F6285CAFFF67514148E17A74F3A45441D7A3702DF16751419A999979F2A454410AD7A320DA6751410AD7A330EFA454419A999979D6675141295C8FA2EDA4544185EB5138C7675141713D0AA7EAA4544148E17A94C4675141EC51B89EEAA454410AD7A320C267514166666696EAA4544114AE4711B667514114AE4751E7A454411F85EB51AF675141D7A3707DE5A4544133333383AD675141E17A14DEE4A454415C8FC2C5A2675141B81E852BE1A454411F85EB41A16751415C8FC2A5E0A4544148E17AD494675141666666E6DAA4544185EB51F892675141A4703D0ADAA45441666666B6846751418FC2F578D0A454411F85EBB17E675141F6285CAFCBA454419A9999E97D675141F6285C0FCBA4544185EB51B87167514148E17A54BFA45441333333936B675141F6285C7FB8A454411CA1592569675141AF3CC222B5A454417FBB15796B675141007B19E5B8A454414057FBE8716751416F086940C0A4544146CA54DA76675141AFB92F4FC5A45441010300000001000000190000003D0AD7432B6751415C8FC24558A45441CDDA09EE2F675141615D846260A45441EDBBA70536675141620C15B269A454419EBE86113E6751416C90E3C375A45441C07462EB4667514123061CC182A454419158DF0E556751412D397B2298A454415F2BE7115C6751417D94BDB5A2A45441FA2166C860675141903E393AA8A454417848BC8766675141E3FB5F9EB0A454410A6AFD7B686751412F462D11B4A454414AD75BFF68675141205963E5B4A45441295C8F32686751410AD7A3B0B2A4544152B81E856767514114AE47D1B0A45441C3F5283C61675141295C8F32A7A454413333333360675141C3F5289CA5A45441713D0AA75F675141666666C6A4A45441B81E854B5E675141AE47E1FAA4A45441E17A14BE5D6751415C8FC225A4A454419A9999F94E6751415C8FC2F58DA4544148E17A944467514152B81E557EA45441AE47E1EA426751415C8FC2D57BA454417B14AE473A6751418FC2F5D86EA45441EC51B87E316751413D0AD7A361A454419A9999B930675141B81E857B60A454413D0AD7432B6751415C8FC24558A4544101030000000100000028000000E0483754EF665141DD608787FDA354413CDB9B7AFA665141D18786930FA45441C2744B2B056751416ACBB1C81FA454413AD7D8480F67514148E6507F2EA4544114E102DF16675141F6864BBA38A454414892C9ED1B675141D290755040A454412FD31517246751411153B17F4CA454416B84DC2529675141F993FDA854A454413D0AD7432B6751415C8FC24558A454411F85EBC128675141B81E853B52A454416666667621675141D7A3709D47A45441333333C31F6751413D0AD72345A45441666666A61B6751415C8FC2253FA45441295C8F92146751418FC2F55834A45441000000800D675141B81E858B29A45441666666360C675141AE47E19A27A45441F6285C8F0B6751416666660628A45441F6285C2F026751411F85EB9119A45441CDCCCCFCFC665141295C8FD211A4544148E17AC4F6665141A4703D6A08A454418FC2F5F8EF6651418FC2F5A8FCA3544166666666EC665141CDCCCCFCF6A35441713D0A07E9665141EC51B8DEF1A35441AE47E1EAE66651411F85EBD1EEA354413D0AD7E3E0665141713D0AB7E6A3544114AE4741D966514166666676DBA35441EC51B85ED666514166666636D7A3544152B81E75C8665141000000A0C6A35441713D0AD7C5665141295C8F72C4A35441EC51B89EC56651411F85EBE1C4A35441EEC316A9CA66514118F8E9B8CAA35441501A4471D1665141F301144FD2A35441BFA793CCD8665141946BECF6DBA35441D3510F51DE665141E728135BE4A35441B0BD1DB8E366514163ED8449ECA35441E399A604E666514143BB7781EFA3544132465848E7665141F1ACE16CF0A3544181F2098CE8665141C543B211F3A3544138B9B139EC665141A3AFC078F8A35441E0483754EF665141DD608787FDA3544101030000000100000013000000AE47E19A7D665141CDCCCCBC91A35441764725AE88665141963BFE2D99A3544117B1FD55926651418D1551BB9FA3544183DC68E09B6651414EB1362BA6A354413B52A1DDA866514177671205AFA35441520D9282B56651417816A354B8A35441295C8FD2B56651411F85EB51B8A35441B81E859BB666514166666626B7A354415C8FC295A466514148E17A14ABA35441713D0A57A266514114AE47A1A9A354418FC2F5589E665141AE47E10AA7A35441AE47E16A95665141B81E851BA1A35441666666A6946651418FC2F598A0A35441F6285CCF92665141713D0A079FA3544152B81E4592665141EC51B8AE9EA35441A4703DAA9166514185EB51C89EA35441D7A370BD8C6651417B14AE279BA354413D0AD7037E665141A4703D2A91A35441AE47E19A7D665141CDCCCCBC91A354410103000000010000000400000052B81E8574665141333333838BA35441AE47E19A7D665141CDCCCCBC91A354418FC2F5D87A66514152B81ED58FA3544152B81E8574665141333333838BA354410103000000010000000F000000D37F2B676C665141E7EB72A385A35441550866F76F665141927BF8BD88A3544152B81E8574665141333333838BA35441713D0AE76D66514152B81ED585A354417B14AE876C6651413333335380A3544114AE47A16C665141D7A3707D7AA35441CDCCCC4C6E665141CDCCCC7C69A354411F85EB116E665141295C8F6269A354415DF618166D66514190EE05F368A354419941BE496C66514192D02AA06AA35441C24809D46B665141A98B1B4577A3544180D379236B665141D805C0C07BA35441EB4F545E6B665141DF7819B280A35441C24809D46B6651418A089FCC83A35441D37F2B676C665141E7EB72A385A35441
+</a>
+
+<b>
+010600000010000000010300000001000000D1000000FB8676F16B665141C1E4271986A35441385EEA726A665141395CED8882A3544199A3A21A6A66514113196BA07EA35441C9AAEDA469665141972E4C3F7DA3544151F338E1686651412077977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441333333738F66514148E17A14A3A354411F85EB51AE665141D7A3700DB9A35441EC51B87EC46651411F85EBF1CAA354411F85EB11D466514185EB51B8DCA35441F6285C4FDB6651417B14AE07E8A35441C3F528FCE56651413D0AD7B3F8A3544152B81E55ED6651418FC2F58805A45441D7A370DDF5665141000000F012A45441666666B6F6665141713D0A6712A45441D7A3708D126751417B14AE773CA454410000001021675141EC51B8BE51A454419A9999F9226751417B14AE3755A454413333334324675141A4703DAA58A4544185EB51382C675141713D0A8764A4544114AE47112D6751415C8FC2F563A45441C3F5282C426751416666669683A454417B14AE57566751418FC2F588A1A454413D0AD763616751411F85EBE1B1A454413333330363675141E17A14CEB5A45441AE47E19A6B67514133333323C1A454417B14AE576C675141E17A146EC0A4544152B81E7576675141A4703D0ACBA454418FC2F538826751417B14AEC7D4A45441713D0A4792675141A4703D6ADFA454415C8FC275A3675141F6285C7FE7A454411F85EB41B767514148E17A54EDA454419A9999C9D1675141CDCCCC3CF3A45441B81E85ABD4675141E17A145EF4A45441B81E85FBE467514100000010F7A45441C3F5281CE56751411F85EB11F6A4544152B81E35FA6751411F85EB71F8A45441AE47E15A0E6851417B14AE87F9A45441D7A3700D1C68514100000090F9A454413D0AD7B32B68514152B81E95F8A4544152B81E65456851413D0AD7E3F5A454410AD7A3C061685141A4703DDAF1A45441713D0A578C685141D7A3709DEBA454413D0AD7E3A1685141295C8F72E8A454410AD7A3E0A5685141333333B3E8A4544152B81EF5B468514185EB5168E6A45441CDCCCCBCB4685141CDCCCC6CE5A4544185EB5188DC68514148E17A84DFA45441EC51B89EE36851413D0AD783DEA45441EC51B87EE46851413D0AD763DEA454413D0AD763E8685141713D0AD7DDA4544152B81EC5F968514114AE4761DBA454411F85EBE11469514185EB5158D7A45441CDCCCC9C206951415C8FC2A5D5A454415C8FC2C52069514114AE47A1D6A45441CDCCCC1C2F6951419A9999A9D4A45441000000C0316951411F85EB71D3A45441B81E857B506951413D0AD713CFA4544148E17A245569514148E17A24CFA4544148E17A946569514185EB51D8CCA454410000007065695141B81E85DBCBA45441333333B38469514114AE4781C7A45441D7A370ED9F6951413D0AD753C5A45441C3F528BCB969514100000030C5A454419A999959C9695141D7A3700DC6A454418FC2F508D0695141713D0A87C6A45441713D0A27D969514148E17A04C8A45441713D0A27E9695141EC51B8AECBA4544114AE4741076A5141B81E85EBD3A4544148E17A04256A5141C3F5280CDCA45441D7A3706D306A5141E17A148EDFA45441EC51B8BE346A5141EC51B8DEE1A454413D0AD703436A51419A999989E5A454415C8FC255436A514152B81E95E4A45441295C8F325A6A51413D0AD713EBA45441295C8FE2896A5141295C8F12F8A45441713D0A17B86A5141333333F304A5544114AE47B1C16A51416666667607A55441B814444CC26A51417CF2EE1808A55441455521C1C26A5141C51C06CB07A554411023E5E9CA6A51413B1F5C3E09A5544164EE529FD16A514116A1DC540AA5544164EE529FD16A514128609CC909A554412FEDA7E5D06A5141F35EF10F09A55441BFCF9F7DBF6A5141C1D56E9F03A55441D97EB084B56A51418310588A00A55441BB21134BA46A5141D948EB01FCA45441197B88728D6A5141CC3DE87AF5A454412DA76DA9816A514146B86637F2A4544194F68A03656A5141006B786BEAA45441698EEA424D6A5141AC9F0AB6E3A4544109F40DAB3D6A51419D58738ADFA45441789F1D85316A5141E9900602DBA45441979A719E2E6A5141B38F5B48DAA4544108A81541236A5141AA1751EED7A45441217C016A0D6A5141FCB28D11D2A45441F141577EF8695141E108128DCCA45441A799686CE269514194E90658C6A45441084105E5DF69514187B2E4C4C5A45441EA23306FD5695141B85236B3C3A454415CB542FCC769514131681752C2A45441C20F33F6B9695141B7B41A84C1A45441126F38BBAF6951418676AD66C1A4544191376DDBA2695141B7B41A84C1A454415B4A6F6E99695141566F62DCC1A45441AD7EB2F5916951419FE4F18CC2A45441FA6A5EC982695141C4895846C4A45441E61152F57369514189E90658C6A454414C0A5E1E68695141AF8E6D11C8A454410AE63D1E5E69514135798C72C9A45441130CEB905769514142B0AE05CAA454414D70052151695141E16AF65DCAA454410DBF3E124C6951411FE0850ECBA454410BEA005049695141999382DCCBA454413A5330AB46695141E108128DCCA45441FD76A75E44695141A5CAA46FCCA454417E192F0C3E6951415BBC0E5BCDA45441B87D499C37695141CB6F0B29CEA45441E4731F063069514181617514CFA45441583C5426236951418336B3D6D1A45441E33BABD916695141E51987ADD3A45441E9EEFE5A0B6951410BBFED66D5A45441F176909E0269514191A90CC8D6A4544164A6BE5AF768514149D29846D8A4544109B27563EE6851419F7E4A8AD9A45441681DDB7DE76851413E3992E2D9A454413D0AD783E568514185EB5138DAA45441EC51B89EE5685141B81E85FBDAA45441B81E855BE168514185EB5198DBA454410AD7A340E1685141713D0AD7DAA454411F85EB31E1685141E17A146EDAA45441BF6B6B22D6685141EAC817FDDCA454415604C939C8685141AE28C60EDFA45441C895DBC6BA68514173887420E1A45441E7B6736EB068514167EF6DBCE2A45441211B8EFEA9685141A564FD6CE3A4544167B6CA21A46851411DE1D7A7E3A45441008B5F979A6851410748D143E5A454413AEF792794685141BF705DC2E6A454419312488E85685141F14CE60EE9A4544103CF1C597568514190A54996EBA454412DEB9F356768514124C78A8AEDA45441AC51F0845C68514185AA5E61EFA45441C4E9A44F42685141023399F1F2A45441C68B83B02F685141D1924703F5A454414E1881721E685141AEC21E0CF6A45441E8851C4C13685141EA008C29F6A454411F15F9190A685141AEC21E0CF6A454418BC058C4F26751411BA1DD17F4A4544142186AB2DC675141AB4FC51AF1A454410305BFD2D96751419E18A387F0A45441AC83CFCCD5675141496CF143EFA454419EAE910AD36751410BF76193EEA4544185A231B5CF67514130FEAC1DEEA454419B9D1CEACB6751416005F8A7EDA45441046B66D5C2675141D91AD946ECA4544116F3F718BA67514146F99752EAA45441C9CED718B067514107E6EC72E7A45441C24A0907A46751411DE1D7A7E3A4544173EFC673996751417DEA58F1DEA4544118FB7D7C9067514119324758DAA4544113AED1FD84675141692F684CD2A454413E068C387B67514159E7D098CAA45441CD16580C766751414B7477A7C5A454412A4B9B936E67514109EE72D6BDA454415916AFBF696751415089AFF9B7A4544162DA7761656751413F411846B0A45441840C852962675141AA4A998FABA4544176992B385D675141BFA76895A5A45441AFC62335566751414045DB779BA45441306496174C675141BD38D2D58BA45441D8448BE24567514126061CC182A45441CF899A3D396751417EEDB2C96FA454412CBEDDC43167514190D728DE64A4544112B27D6F2E675141502662CF5FA454414DB4B32E2A6751417C1C383958A454414C1698FF27675141E85CDB1554A454417B7FC75A2567514191DBEB0F50A454413035FAE7216751415C2A25014BA45441BFA7AA8C1A675141F697C0DA3FA45441CAAB6DBE056751419CA73A1522A45441183635C1F866514184DBD44F0EA45441B3DF07F9F1665141C803B88103A4544168953A86EE665141DD608787FDA354410E3F0DBEE766514176351CFDF3A3544160735045E0665141AC26DD9BE8A354415A8D9D62D6665141A504F35ADAA35441948FD321D2665141EB9F2F7ED4A35441F498546BCD665141DCF5B3F9CEA35441A6794936C7665141B3DDF34EC8A35441ED148659C1665141D571E5E7C2A35441B8C5A31BBA665141EACEB4EDBCA3544125A46227B866514132A6286FBBA35441145CCB73B06651413C03F874B5A354411A0F1FF5A466514151C2AB4BADA35441B41AD6FD9B66514134E10D34A7A3544163EA55A88E6651416EA70C959EA35441993DFB1781665141067CA10A95A354411531F2757166514186E2F1598AA35441503328356D6651410B91D95C87A35441FB8676F16B665141C1E4271986A354410103000000010000000B0000008C73E99C69665141CFDC01DF7AA3544199A3A21A6A665141291456D57AA35441A5DAC4AD6A66514110A611AF79A3544181D379236B66514187E6B48B75A35441208EC17B6B665141B5B1C8B770A35441208EC17B6B66514115BB49016CA354415CCC2E996B6651415D92BD826AA35441F4D9C37A6C665141FF3A39AE68A3544185EB51286B66514185EB511868A35441CDCCCCEC69665141E17A142E7AA354418C73E99C69665141CFDC01DF7AA354410103000000010000000C0000006BD6D95CD36A5141E1E65C1207A554417335EACAD56A514128609CC909A55441FABA6B0ED96A51414BA2870E0BA554416D812DDDDC6A5141F1225D6B0BA554415B91DC4AE66A514101A6883B0DA5544115DC74A3EC6A5141BF6849DD0EA554419232F354ED6A51414212CB2B0EA55441B81E85FBEC6A5141333333130EA55441F6285CDFEA6A5141EC51B87E0DA55441E17A145EE56A5141AE47E12A0CA554419A999999D86A514152B81E8508A554416BD6D95CD36A5141E1E65C1207A554410103000000010000002A0000005D237AACFB6B5141B8FE403AFBA45441AD92BEA8006C5141AFB70965F9A454410EB8B260066C51410180E7E6F6A454412D7E0F9F126C5141DBAA4167F1A45441D081C0391C6C514156A15EEEECA4544152C6AAB5266C51419B917D81E7A454413564FACC2F6C5141DC374CD0E2A45441BA6DDD45346C514190C5EE64E0A45441B483BCA63A6C51417E3780BADCA45441B22A2321426C5141C7B82667D8A454419859FA514C6C5141CA7D1F64D2A4544176ADF924566C51416B7D534ECCA454413FBAC1225E6C5141E0BDC019C7A454415CEC72A4626C514145CF56EFC3A45441584E29F8806C5141C7E58B25AFA45441B5CB714FA36C514179DBDAD297A454419A9999C9A26C51410000001097A45441713D0A679F6C5141C3F5285C99A45441C3F528EC9C6C5141AE47E10A9BA454411F85EBB1866C51410AD7A320AAA454417B14AE377E6C514114AE47E1AFA45441000000F07D6C5141295C8F12B0A45441B81E859B726C5141666666C6B7A454410AD7A3B0626C51417B14AE97C2A45441AE47E19A596C514148E17AC4C8A45441666666B6496C5141C3F528DCD2A45441333333033A6C5141713D0A17DCA45441713D0AB7246C5141E17A148EE7A454419A9999E90D6C51413D0AD783F2A454411F85EB51FD6B514133333313FAA454410AD7A350F96B514114AE47F1FAA4544100000040E86B51410000004002A55441CDCCCC1CE76B5141F6285CEF02A5544152B81E55E46B5141C3F5289C04A554413893421CDC6B51418FF8BCD006A55441B9277C33DE6B51410E84649706A55441B6628336E46B5141D3C7B6E704A55441D78179FAE86B5141236B6CC702A5544173631B62F06B5141ACF21068FFA454412AE274B5F46B514104719EA5FDA454413F950B02F86B514133558D66FCA454415D237AACFB6B5141B8FE403AFBA45441010300000001000000260000002BAE03D2FB6B51418C3F7A1BFCA45441570D9B4BF56B51419E61894EFEA454415F1CE48CEE6B5141F089967501A5544182C8E4B9E46B51410BF3DC7D05A55441B9277C33DE6B5141AD2AFFFB07A554416C49BF50DA6B51415B62217A0AA55441457419D1D46B514143EA91300DA55441B5FED6E0CE6B51412628B2A210A55441F8C9CDD1C96B5141990F86E812A5544111FB2546C56B51410F1C82D014A55441068FC6CEC36B51417697F69E15A5544152B81E65C26B51413333337316A55441295C8FA2D06B514185EB510812A55441CDCCCC3CD36B514148E17A5410A554413D0AD753DC6B5141A4703D8A0DA554410AD7A370F86B5141713D0A1702A55441AE47E10AFD6B51411F85EBC100A5544185EB51680C6C5141B81E854BFAA45441666666060C6C51410AD7A360F9A4544166666666276C5141AE47E15AECA45441F6285C0F3C6C51410AD7A330E1A45441713D0A874B6C5141EC51B82ED8A454419A9999A95C6C51410AD7A390CDA45441EC51B84E816C51418FC2F5B8B4A454418FC2F558A56C514185EB51D89BA454414542FEA4A36C5141E32F356598A45441BCAAF91F816C5141B5E08349B0A454417960B8B1626C51410A560906C5A45441E76FA5C8586C514133522DB8CBA454415E09AC194C6C5141D80EA77DD3A4544173DDED573F6C5141D6B50DF8DAA454418242B7AF336C5141001C3B91E1A454416FB44805306C5141A57885B1E3A45441AC9DD1781D6C5141C041FB5EEDA45441D433F3440D6C51415C239DC6F4A4544193F506BD036C514113A2F619F9A4544134F53AA7FD6B5141F34E8F72FBA454412BAE03D2FB6B51418C3F7A1BFCA4544101030000000100000036000000CA72500EFA6A5141332F0BAC12A55441F9BF3EDA016B51418C72A1AA14A55441595A1B72116B514165B88D1C18A55441B9F4F709216B5141FEFCCED41AA5544106D0142D316B51414481A55E1DA55441666AF1C4406B51411F0326751EA55441FC0A25FD536B51415404D12E1FA55441B1A10068616B514167C390A31EA55441E1EEEE33696B514167C390A31EA554412ECA0B57796B5141798250181EA554416E9A25F3826B51419741108D1DA55441B1A6D3338A6B51410E80FAA41CA55441653DAF9E976B5141AB3C64A61AA55441C5D78B36A76B514177774D9117A55441DEED9144B46B51418C72A1AA14A5544130169F59BA6B514106D54AFB12A55441B68BE149C06B5141C0189D4B11A5544149264CDCC56B5141B6D165760FA55441626A6A42CA6B5141DDDA7CD90DA554412D30FB6AD06B514169F3A8930BA55441FB8613ADD76B51415AF6C10209A554416302887BD86B5141F055259208A55441A795DF46D96B514147EC0BD007A554418FC2F518CE6B5141000000C00BA554418FC2F598C16B5141CDCCCC3C10A554415C8FC235BD6B514152B81E7511A55441EC51B8DEB06B5141B81E85BB14A554410AD7A330A46B51411F85EB7117A55441666666969A6B51419A99992919A55441EC51B87E8F6B51415C8FC2251BA55441295C8F22836B5141CDCCCCEC1CA55441AE47E17A706B51418FC2F5B81DA55441295C8FA26E6B5141CDCCCCCC1DA554411F85EB516A6B51415C8FC2E51DA554418FC2F558576B5141333333531EA55441F6285CEF556B51418FC2F5481EA55441333333E3466B51418FC2F5D81DA5544114AE47B1406B5141B81E85AB1DA5544185EB5138346B51413D0AD7931CA554410AD7A3A02C6B5141713D0AE71BA55441F6285CCF286B5141333333531BA55441C3F5285C1F6B514148E17AE419A55441A4703DCA156B514185EB512818A55441CDCCCC0C116B5141CDCCCC4C17A5544152B81EF5046B5141C3F528AC14A55441EC51B8BE046B5141D7A3709D14A554417B14AE07026B5141E17A14DE13A5544114AE4791006B5141713D0A7713A5544133333373F96A514114AE478111A55441F6285CFFF56A5141E17A148E10A554413CE75FCFEE6A51416C62DC930EA5544113A0E0FEEE6A51415AE91E3A0FA5544141E2CB43F06A5141F569F4960FA55441CA72500EFA6A5141332F0BAC12A55441010300000001000000350000002FF27AB1F96A514103B18BC213A5544134D7C8BCE96A51415AE91E3A0FA554415986D9C3DF6A5141AFE51D0D0DA554413ABC16C8D96A514179E472530CA55441827C81F6D96A51414966F3690DA5544184B8159BD76A5141146548B00CA55441DAF0A812D36A514139E3C7990BA55441662AE743CF6A5141B021B2B10AA55441791A38D6C56A5141F35EF10F09A55441CD1637A9C36A51414DDE1BB308A55441C071DD19C36A5141336E8BF008A55441666666E6C36A5141713D0AC709A554410AD7A3E0CB6A5141713D0A770BA554410AD7A3E0DB6A5141E17A149E10A5544133333373E76A5141E17A149E13A554411F85EBB1EB6A51413D0AD78313A554417B14AEF70F6B51418FC2F5681CA554411F85EB211E6B5141D7A370ED1EA55441F6285C4F2C6B51418FC2F5C820A5544100000070406B51415C8FC28522A55441A4703D6A576B514152B81E5523A55441D7A370AD6E6B51410AD7A32023A55441EC51B85E836B5141B81E851B22A55441E17A146E906B51415C8FC27520A554415C8FC205A56B5141E17A149E1CA55441C3F5284CB16B51415C8FC2F519A5544185EB5188C16B514114AE47B115A55441EC9D7808C26B5141A784D42116A5544102FE3EB5C26B51414747A86615A55441ABEB10EFC56B5141018BFAB613A55441D2C0B66ECB6B51418EA3267111A55441EF4E2519CF6B5141845CEF9B0FA554413E520A9ED26B5141AD8A2EA10DA554415F710062D76B5141FF520C230BA554416C49BF50DA6B5141C4965E7309A554410A84FA3DDA6B51418A46103B09A554413CF97018DA6B51418A46103B09A55441ABB79F0BCD6B5141AA6506FF0DA55441A2A4D919C46B5141C0189D4B11A554414B7FE561BE6B5141679A0F0E13A5544130169F59BA6B51410966D21414A55441EA550B20A66B51419AB938D618A55441EF6BEA488D6B51414481A55E1DA55441A608F66E786B51415404D12E1FA5544104626B96616B5141DDC5E61620A554414FCB8F2B546B5141DDC5E61620A554416085A3B9506B514195057CE81FA5544122F11DC2446B5141424511BA1FA554414A185712366B514172C390A31EA554417103FCBD296B51419741108D1DA5544177E849C9196B5141FEFCCED41AA55441AE561A450F6B51419AB938D618A554412FF27AB1F96A514103B18BC213A5544101030000000100000060000000FD76A75E44695141FAD83A84CBA454415F5A7B35466951418C5C6049CBA454410BEA00504969514180253EB6CAA454413364A5CB4D69514142B0AE05CAA45441E304A00658695141C8FCB137C9A454416D6218595E695141BBC58FA4C8A454414C6C42EF6569514110D425B9C7A454418F2E7E1E72695141AEF051E2C5A45441EAC0E2447D695141C4895846C4A4544175BC76C685695141AB1B1420C3A4544131F677658E695141C4EB3C17C2A45441AD7EB2F5916951412531F5BEC1A4544151E88A9D9B695141DCBB650EC1A4544155971BEDA46951413D011EB6C0A454418E59571CB16951410CC3B098C0A454417A38BF74BB695141793F8BD3C0A45441070991B8C66951418676AD66C1A45441DADB98BBCD69514192ADCFF9C1A4544195159A5AD6695141AB1B1420C3A45441BE2D5A05DD695141F6C7C563C4A45441A6FB4C3DE06951410DFFE7F6C4A454412422A3FCE569514194E90658C6A45441EECEFD8CF369514142B0AE05CAA4544197806DE8046A5141502308F7CEA45441CEA9A2B3126A51413A281DC2D2A454412ADA2209206A5141F2EEC46FD6A4544178F92D3E266A514179D9E3D0D7A4544118F0ACF42A6A5141F38CE09ED8A45441321B47FB2E6A5141D80DDB31D9A4544151E509F7346A51413C517130DBA45441B733A37C3D6A5141C2D6F273DEA45441D4C1D1D3456A5141C09A5ECFE0A45441C2D180414F6A514159DF9F87E3A45441D86F5E06616A51415567773EE8A45441ADDBFFF37A6A51419773257FEFA45441DAE6027B816A5141BEF6504FF1A45441F4CB776B976A514130817E79F7A454412B70ACD0AC6A51414F4B4175FDA45441C00B3422BD6A5141F812AEFD01A5544120A610BACC6A51413D5BF0E206A55441522F932AD26A51414DDE1BB308A554414070D3B5D26A51414DDE1BB308A554416A4DB1D0D06A5141118C055E06A55441AE47E1EACE6A51417B14AED705A5544185EB51F8C66A5141333333B303A554419A999959B96A5141B81E85EBFFA45441295C8F62B46A5141CDCCCC8CFEA45441713D0AC7A06A51413D0AD723F9A454413D0AD7C3936A5141CDCCCC8CF5A4544185EB51C88B6A51418FC2F558F3A45441C3F5282C876A51410AD7A310F2A45441CDCCCC6C7D6A51419A999959EFA45441AE47E1AA6A6A514100000020EAA454415C8FC2155C6A514100000010E6A45441B81E85BB586A5141F6285C1FE5A4544185EB5168516A51411F85EB11E3A454417B14AEE7466A514100000020E0A45441E17A14CE396A51413D0AD773DCA454419A999969396A5141CDCCCC3CDCA45441A4703DAA356A5141AE47E12ADAA45441A4703D8A326A5141D7A3704DD9A454411F85EBE1276A5141B81E855BD6A454410AD7A340246A5141CDCCCC8CD6A4544148E17A841A6A5141A4703DDAD3A454413D0AD7630C6A5141000000F0CFA4544114AE47C1066A514185EB5158CEA454410AD7A3A0F6695141000000D0C9A45441E17A14BEF369514100000000C9A454413D0AD793EA695141CDCCCC6CC6A45441F6285C6FDA6951410AD7A3A0C2A45441A4703DBAD2695141EC51B86EC1A454410AD7A3A0CC695141333333C3C0A45441000000A0CA695141B81E858BC0A454410AD7A3A0C9695141CDCCCC7CC0A454415C8FC235BB695141A4703DAABFA45441F6285C1FBA6951419A9999A9BFA454419A999939AF695141666666A6BFA454411F85EBF1A46951413D0AD7A3BFA45441F2747647A0695141D9A239A2BFA4544182E43EAF9F695141F28647C8BFA45441BAC12D3F9F6951418FC576DCBFA45441334741B79269514192BEFBB3C0A45441257A956D8E69514116DC32F5C0A45441333333938C695141AE47E12AC1A45441EC51B8FE886951411F85EB91C1A45441B81E854B846951419A999919C2A45441666666E68369514185EB5128C2A4544114AE47F18369514133333363C2A45441CDCCCC7C5B695141295C8F52C8A45441E17A14BE526951415C8FC2B5C8A4544152B81E354A69514152B81E95C9A45441A4703D0A446951419A999959CAA45441AE47E18A436951419A999969CAA454414327D9AD426951410AC61885CAA454412047D0554369514129E0850ECBA45441FD76A75E44695141FAD83A84CBA454410103000000010000001C0000003268513DF7685141CF1E9C78D7A4544173503ADFFC685141556B9FAAD6A454415EF36AD902695141DBB7A2DCD5A454417B7224200B695141910BF198D4A45441A52800FA136951410A21D237D3A4544116B64F551B6951412DF1FA2ED2A45441583C54262369514146C12326D1A454418BB6F8A127695141CB0D2758D0A45441988B36642A6951418E9897A7CFA45441FC4348FD2E695141A668C09ECEA4544160FC59963369514168F330EECDA4544126983F063A695141B201C702CDA454410466323E3D695141E108128DCCA454418A50519F3E695141A5CAA46FCCA45441678028A83F695141999382DCCBA454411351841A40695141946D1ED7CAA45441713D0AD73E695141F6285CFFCAA454418FC2F5383C695141CDCCCCCCCBA4544166666656376951418FC2F588CCA45441A4703DAA30695141AE47E18ACDA4544148E17AD42D695141E17A141ECEA454418FC2F58829695141D7A3703DCFA45441333333F3136951411F85EB81D2A45441F6285C6FFE6851419A9999B9D5A4544104F67F75EB685141ECA52758D8A454413A52C751EC6851415609BBD9D8A45441312C1ADFF2685141DC55BE0BD8A454413268513DF7685141CF1E9C78D7A454410103000000010000001F000000EFDC20E1A9685141982DDBD9E2A45441DDF2AACCB4685141AFC6E13DE1A4544107A986A6BD685141EC9D55BFDFA454417B0B14C4C768514170B3365EDEA4544173838280D06851411B07851ADDA45441E410D2DBD7685141029940F4DBA454416137289BDD685141E92AFCCDDAA454412697D6ACDF685141ABB56C1DDAA454416BB54BC7DF6851415D1E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A4544185EB5198A36851419A999999E1A45441F6285C9FA1685141E17A14EEE1A45441D7A370BD9C685141000000C0E2A45441EC51B8DE986851415C8FC265E3A454419A9999D9946851411F85EB11E4A45441E17A14EE936851419A999939E4A45441333333438F6851411F85EBB1E4A45441AD3512A08E68514190A829E0E4A4544173BA8D538F685141137FF3D6E5A454411FACF73E90685141B2393B2FE6A45441EFA4ACB49068514120B6156AE6A454416AF6C4B193685141137FF3D6E5A45441F3B521D59768514199CBF608E5A45441AC1AE5B19D6851411DE1D7A7E3A45441EBCBABC0A268514111AAB514E3A45441D6D0C08BA668514136B1009FE2A45441EFDC20E1A9685141982DDBD9E2A454410103000000010000004E00000047CA54DA76675141ACB92F4FC5A4544170E214857D67514104D93A84CBA454414FEC3E1B85675141EF7B6B7ED1A45441C34ECC388F675141F38CE09ED8A454412843153098675141F6FF3990DDA45441B513E773A3675141C8342664E2A4544197F24ECCAD67514181FBCD11E6A454413A5C2774B767514152929EB6E8A4544148316536BA675141088408A2E9A45441654E3AACC46751419BA54996EBA45441812FD8C3CA67514178D5209FECA45441F280F0C0CD675141E651FBD9ECA454414B3E1725D66751410BF76193EEA4544173B8BBA0DA67514192E180F4EFA45441FBDE1160E06751416F1158FDF0A45441AEF2658CEF675141023399F1F2A4544145251CA1F8675141B82403DDF3A454411ACD616602685141F699928DF4A454411F15F9190A6851419554DAE5F4A454416E703BAD146851413F0F223EF5A45441AFBF1DEB1B6851413F0F223EF5A454416A5B035B22685141D1924703F5A45441DC866EE52B685141F699928DF4A454419722545532685141EA6270FAF3A454416D06D17840685141313AE47BF2A4544168537DF74B6851413DD3EADFF0A454416C020E475568514185AA5E61EFA45441701383675C6851419E7A8758EEA454417DE4FDF7736851415330BAE5EAA454410E64608B886851417562C7ADE7A454415A4C492D8E6851418D32F0A4E6A454411E0EDC0F8E685141137FF3D6E5A45441341BFBCB8D68514113E3481CE5A45441A4703DBA88685141C3F5288CE6A45441F6285CFF786851411F85EBD1E8A454417B14AE7765685141295C8FE2EBA45441A4703D6A60685141E17A14AEECA45441CDCCCC5C566851411F85EB41EEA45441B81E854B55685141CDCCCC6CEEA454413D0AD7D346685141713D0A67F0A454418FC2F5C83D685141333333A3F1A45441C3F528DC3C685141333333C3F1A45441C3F5284C3568514185EB5188F2A4544152B81E752C685141EC51B86EF3A45441B81E858B29685141AE47E1BAF3A454417B14AEB727685141A4703DEAF3A45441A4703DEA266851410AD7A3F0F3A4544133333373226851415C8FC215F4A45441666666661A6851418FC2F558F4A45441D7A370AD176851419A999949F4A454413333337312685141CDCCCC2CF4A454419A9999B90D68514133333313F4A45441666666D609685141D7A370FDF3A45441F6285C8F06685141B81E85EBF3A45441713D0A7704685141713D0AC7F3A45441F6285CAFFF67514148E17A74F3A45441D7A3702DF16751419A999979F2A454410AD7A320DA6751410AD7A330EFA454419A999979D6675141295C8FA2EDA4544185EB5138C7675141713D0AA7EAA4544148E17A94C4675141EC51B89EEAA454410AD7A320C267514166666696EAA4544114AE4711B667514114AE4751E7A454411F85EB51AF675141D7A3707DE5A4544133333383AD675141E17A14DEE4A454415C8FC2C5A2675141B81E852BE1A454411F85EB41A16751415C8FC2A5E0A4544148E17AD494675141666666E6DAA4544185EB51F892675141A4703D0ADAA45441666666B6846751418FC2F578D0A454411F85EBB17E675141F6285CAFCBA454419A9999E97D675141F6285C0FCBA4544185EB51B87167514148E17A54BFA45441333333936B675141F6285C7FB8A454411CA1592569675141B13CC222B5A454417EBB15796B675141FB7A19E5B8A454414457FBE8716751416D086940C0A4544147CA54DA76675141ACB92F4FC5A45441010300000001000000190000003D0AD7432B6751415C8FC24558A45441CADA09EE2F6751415D5D846260A45441F1BBA70536675141610C15B269A45441A1BE86113E6751416890E3C375A45441BF7462EB4667514126061CC182A454419658DF0E5567514131397B2298A454415D2BE7115C6751418094BDB5A2A45441FE2166C860675141903E393AA8A454417B48BC8766675141DEFB5F9EB0A454410E6AFD7B6867514134462D11B4A454414CD75BFF68675141215963E5B4A45441295C8F32686751410AD7A3B0B2A4544152B81E856767514114AE47D1B0A45441C3F5283C61675141295C8F32A7A454413333333360675141C3F5289CA5A45441713D0AA75F675141666666C6A4A45441B81E854B5E675141AE47E1FAA4A45441E17A14BE5D6751415C8FC225A4A454419A9999F94E6751415C8FC2F58DA4544148E17A944467514152B81E557EA45441AE47E1EA426751415C8FC2D57BA454417B14AE473A6751418FC2F5D86EA45441EC51B87E316751413D0AD7A361A454419A9999B930675141B81E857B60A454413D0AD7432B6751415C8FC24558A4544101030000000100000028000000E2483754EF665141DD608787FDA354413DDB9B7AFA665141CF8786930FA45441BE744B2B056751416ACBB1C81FA454413CD7D8480F6751414CE6507F2EA4544111E102DF16675141F2864BBA38A454414592C9ED1B675141D190755040A4544131D31517246751411453B17F4CA454417084DC2529675141F593FDA854A454413D0AD7432B6751415C8FC24558A454411F85EBC128675141B81E853B52A454416666667621675141D7A3709D47A45441333333C31F6751413D0AD72345A45441666666A61B6751415C8FC2253FA45441295C8F92146751418FC2F55834A45441000000800D675141B81E858B29A45441666666360C675141AE47E19A27A45441F6285C8F0B6751416666660628A45441F6285C2F026751411F85EB9119A45441CDCCCCFCFC665141295C8FD211A4544148E17AC4F6665141A4703D6A08A454418FC2F5F8EF6651418FC2F5A8FCA3544166666666EC665141CDCCCCFCF6A35441713D0A07E9665141EC51B8DEF1A35441AE47E1EAE66651411F85EBD1EEA354413D0AD7E3E0665141713D0AB7E6A3544114AE4741D966514166666676DBA35441EC51B85ED666514166666636D7A3544152B81E75C8665141000000A0C6A35441713D0AD7C5665141295C8F72C4A35441EC51B89EC56651411F85EBE1C4A35441F2C316A9CA66514116F8E9B8CAA354414C1A4471D1665141F501144FD2A35441BDA793CCD8665141996BECF6DBA35441D8510F51DE665141E728135BE4A35441ABBD1DB8E366514165ED8449ECA35441E899A604E666514143BB7781EFA3544132465848E7665141EEACE16CF0A354417DF2098CE8665141CA43B211F3A3544136B9B139EC665141A8AFC078F8A35441E2483754EF665141DD608787FDA3544101030000000100000013000000AE47E19A7D665141CDCCCCBC91A35441784725AE886651419A3BFE2D99A354411BB1FD5592665141921551BB9FA3544183DC68E09B6651414DB1362BA6A354414052A1DDA866514176671205AFA35441530D9282B56651417B16A354B8A35441295C8FD2B56651411F85EB51B8A35441B81E859BB666514166666626B7A354415C8FC295A466514148E17A14ABA35441713D0A57A266514114AE47A1A9A354418FC2F5589E665141AE47E10AA7A35441AE47E16A95665141B81E851BA1A35441666666A6946651418FC2F598A0A35441F6285CCF92665141713D0A079FA3544152B81E4592665141EC51B8AE9EA35441A4703DAA9166514185EB51C89EA35441D7A370BD8C6651417B14AE279BA354413D0AD7037E665141A4703D2A91A35441AE47E19A7D665141CDCCCCBC91A354410103000000010000000400000052B81E8574665141333333838BA35441AE47E19A7D665141CDCCCCBC91A354418FC2F5D87A66514152B81ED58FA3544152B81E8574665141333333838BA354410103000000010000000F000000D67F2B676C665141E6EB72A385A35441520866F76F665141927BF8BD88A3544152B81E8574665141333333838BA35441713D0AE76D66514152B81ED585A354417B14AE876C6651413333335380A3544114AE47A16C665141D7A3707D7AA35441CDCCCC4C6E665141CDCCCC7C69A354411F85EB116E665141295C8F6269A354415CF618166D6651418CEE05F368A354419A41BE496C6651418ED02AA06AA35441BF4809D46B665141AC8B1B4577A3544181D379236B665141D505C0C07BA35441EE4F545E6B665141E27819B280A35441BF4809D46B6651418F089FCC83A35441D67F2B676C665141E6EB72A385A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449045 - 3154842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000037000000A40EBEF0073C51411B732C83F652544148E17AE40A3C514114AE4771F8525441F6285C9F0D3C5141A4703DCAFA52544152B81E45113C5141C3F528FCFC52544185EB5198153C514114AE4781FE52544152B81E45183C5141AE47E18AFF5254419A9999E91C3C5141295C8FC2FF52544148E17AA41F3C5141A4703D6A00535441CDCCCC4C233C5141E17A142E015354415C8FC2F5263C5141B81E851B02535441EC51B8AE293C5141F6285C7F0153544114AE47212D3C5141E17A149E01535441C3F5285C333C5141666666C602535441A4703D8A353C51413D0AD7530253544133333303373C5141000000B000535441713D0AE7373C514133333323FC5254416DA29EE8373C5141F9B7B2FDFA525441010D804B423C51415BD1A6D5FB525441B2585499433C5141C35919FB04535441777F3EA1453C51419DA1D3090653544197EEC7D7483C514151E4BFC9005354415A803603503C51414F21FA71F9525441C3F528EC553C514148E17A64F3525441150235335B3C51418550AFECF352544118695A75603C51411AC977B3EE52544168FFC92A613C51413F1D4D17ED525441D5A7E4E1613C5141FFE45444EB525441F686B3D8623C51416EC3051AEA525441A35C7557663C5141CA603704E6525441CCF6D7196B3C5141520E2674E0525441FF51C62A6C3C5141387D2435DF5254413F338ABD6C3C5141DEFD37EFDE5254411842CE516D3C5141E5F3E5E1DE5254417C91DA516E3C514140FAE4CADE525441D84513436F3C5141890139B5DE525441D89F00BE723C5141DE222E65DE52544171FBC8FA753C5141F28EB81ADE52544114EB940E793C5141792B8180DE525441F2BBA5A47A3C514126ABA07BDD5254413BFEECB47E3C514155E18920DB5254415B80CF0B823C514148BA4DE9D85254410A3240E7793C514108E3CC34D652544140785F8D753C51416C152F09D55254415DF1BF20713C5141977986D8D35254410D8BF4456D3C514169ACD8B9D2525441A2A222D2683C514105CCF064D1525441F40B2140643C5141D16AD4EBCF525441C85C7ADA5C3C514111237A89CD52544143C858A3573C5141C0FB36D2CB5254417AE3E448533C514109B7A737CA525441CB747F7F413C5141CD0C34AAC35254418DD4D7D2403C5141987C3A36C3525441713D0A07383C51419A9999E9E4525441EC51B8FE083C5141A4703D7AE4525441A40EBEF0073C51411B732C83F6525441
+</a>
+
+<b>
+010600000001000000010300000001000000130000000C314678093C5141303F5D7BE452544103AB5A01093C514150AD437AE452544160D893FB083C51412FE7FAAFE45254416CD3665B083C514141829E28EE525441B1A224B8073C51417BF65930F6525441D5719D640F3C5141000D441CFC5254413FE1485A173C514135CC8C59FF52544195B82C03283C5141C854E5A901535441769BD55F313C5141EA3E29DD02535441D70E2B9E353C514139AEC04F0253544189E4CCA2363C514157FB090401535441E6C45297373C5141FEC3A1C8FE52544145652BE3373C5141B32F90C6FC5254416DA29EE8373C5141F9B7B2FDFA525441DF0061F0373C51413F5E075CF5525441B382A403383C51411356D560E7525441713D0A07383C51419A9999E9E45254416B5B3274123C514161D4A290E45254410C314678093C5141303F5D7BE4525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449045 - 3287152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000037000000A40EBEF0073C51411B732C83F652544148E17AE40A3C514114AE4771F8525441F6285C9F0D3C5141A4703DCAFA52544152B81E45113C5141C3F528FCFC52544185EB5198153C514114AE4781FE52544152B81E45183C5141AE47E18AFF5254419A9999E91C3C5141295C8FC2FF52544148E17AA41F3C5141A4703D6A00535441CDCCCC4C233C5141E17A142E015354415C8FC2F5263C5141B81E851B02535441EC51B8AE293C5141F6285C7F0153544114AE47212D3C5141E17A149E01535441C3F5285C333C5141666666C602535441A4703D8A353C51413D0AD7530253544133333303373C5141000000B000535441713D0AE7373C514133333323FC5254416DA29EE8373C5141F9B7B2FDFA525441010D804B423C51415BD1A6D5FB525441B2585499433C5141C35919FB04535441777F3EA1453C51419DA1D3090653544197EEC7D7483C514151E4BFC9005354415A803603503C51414F21FA71F9525441C3F528EC553C514148E17A64F3525441150235335B3C51418550AFECF352544118695A75603C51411AC977B3EE52544168FFC92A613C51413F1D4D17ED525441D5A7E4E1613C5141FFE45444EB525441F686B3D8623C51416EC3051AEA525441A35C7557663C5141CA603704E6525441CCF6D7196B3C5141520E2674E0525441FF51C62A6C3C5141387D2435DF5254413F338ABD6C3C5141DEFD37EFDE5254411842CE516D3C5141E5F3E5E1DE5254417C91DA516E3C514140FAE4CADE525441D84513436F3C5141890139B5DE525441D89F00BE723C5141DE222E65DE52544171FBC8FA753C5141F28EB81ADE52544114EB940E793C5141792B8180DE525441F2BBA5A47A3C514126ABA07BDD5254413BFEECB47E3C514155E18920DB5254415B80CF0B823C514148BA4DE9D85254410A3240E7793C514108E3CC34D652544140785F8D753C51416C152F09D55254415DF1BF20713C5141977986D8D35254410D8BF4456D3C514169ACD8B9D2525441A2A222D2683C514105CCF064D1525441F40B2140643C5141D16AD4EBCF525441C85C7ADA5C3C514111237A89CD52544143C858A3573C5141C0FB36D2CB5254417AE3E448533C514109B7A737CA525441CB747F7F413C5141CD0C34AAC35254418DD4D7D2403C5141987C3A36C3525441713D0A07383C51419A9999E9E4525441EC51B8FE083C5141A4703D7AE4525441A40EBEF0073C51411B732C83F6525441
+</a>
+
+<b>
+010600000001000000010300000001000000130000000C314678093C5141303F5D7BE452544103AB5A01093C514150AD437AE452544160D893FB083C51412FE7FAAFE45254416CD3665B083C514141829E28EE525441B1A224B8073C51417BF65930F6525441D5719D640F3C5141000D441CFC5254413FE1485A173C514135CC8C59FF52544195B82C03283C5141C854E5A901535441769BD55F313C5141EA3E29DD02535441D70E2B9E353C514139AEC04F0253544189E4CCA2363C514157FB090401535441E6C45297373C5141FEC3A1C8FE52544145652BE3373C5141B32F90C6FC5254416DA29EE8373C5141F9B7B2FDFA525441DF0061F0373C51413F5E075CF5525441B382A403383C51411356D560E7525441713D0A07383C51419A9999E9E45254416B5B3274123C514161D4A290E45254410C314678093C5141303F5D7BE4525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981195 - 226931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -484  </desc>
+<a>
+01060000000100000001030000000200000010010000CDCCCC9CC6EA5041B81E851B3FAB5441AE47E15AD0EA5041B81E851B45AB5441E17A14BEDBEA5041EC51B8EE48AB54411F85EB61EAEA50419A9999D94DAB54411F85EBF1F0EA5041F6285CCF4FAB5441295C8F22FAEA504152B81E8552AB5441713D0AB7FEEA5041C3F5287C5AAB5441CDCCCCEC09EB5041CDCCCCAC5DAB5441C3F5280C12EB50415C8FC27560AB5441A4703DBA1AEB5041D7A3706D61AB5441AAFB6E1F1CEB5041408AA58B61AB5441C3F5287C1CEB5041713D0A3761AB54414D2E6D021DEB5041C0B8D79E61AB544152B81E751FEB50413D0AD7D361AB5441E1A89C2A25EB50415342F85162AB5441295C8F9225EB5041CDCCCCFC61AB54410AD7A3A026EB50417B14AEE761AB5441DB40F43D27EB50410260D37F62AB5441C3F5286C29EB5041000000B062AB544152B81E1534EB50417B14AE9764AB5441666666663DEB5041D7A3700D65AB5441B81E85EB47EB50417B14AE0766AB5441713D0A975CEB504148E17A2463AB54413D0AD7936BEB50411F85EB5165AB54413D0AD7C36FEB5041E17A14BE70AB5441D7A3701D74EB50415C8FC27579AB5441333333337BEB5041A4703D6A80AB54419D75AA1582EB50419F24265284AB5441AE47E1DA82EB50411F85EB1184AB5441713D0A7783EB5041C3F5281C84AB5441295C8FE284EB5041713D0AA785AB54418DC03A2485EB50413A6B8B4387AB54413D0AD78389EB50417B14AE878BAB5441C3F5288C93EB5041E17A144E98AB5441E17A14EE9EEB5041A4703D1AA3AB54410AD7A3D0ACEB5041EC51B86EABAB544148E17A44B4EB5041E17A140EB4AB54413D0AD7E3BDEB50419A999919BBAB544152B81E55C5EB504166666616B9AB54419A999929C7EB5041295C8F62B4AB5441A4703D7ACDEB504148E17A74ABAB5441333333B3CDEB504152B81E05A1AB54418FC2F548CBEB5041CDCCCCEC95AB544185EB51C8C9EB50417B14AE678AAB5441E17A14AEC7EB5041CDCCCC8C7AAB54417B14AEC7CEEB50419A99995979AB54411F85EB11CAEB5041A4703DDA6FAB54410AD7A3D0C5EB504148E17AD466AB5441F6285C8FC1EB5041B81E859B5DAB544114AE4781BEEB5041713D0AF757AB5441000000D0B9EB5041D7A370AD4FAB544114AE4761B5EB50410AD7A3D047AB5441C3F528FCA5EB504148E17A9446AB5441E17A146E95EB50419A9999C943AB5441B81E856B8CEB5041B81E858B40AB5441C3F5289C7EEB5041E17A148E3BAB54414B6AA7AA7DEB50419F755A393BAB54417B14AE977DEB5041B81E855B3BAB5441F6285CEF7CEB5041F6285C7F3BAB5441F6285CEF7CEB5041F6285C0F3CAB5441B81E853B7CEB5041F6285C6F3CAB5441B81E853B7CEB5041B81E851B3CAB5441F6285CAF77EB5041B81E85BB3BAB54413D0AD7C375EB5041F6285C0F3CAB5441B81E851B75EB5041F6285CFF3CAB5441F6285C1F74EB5041B81E85CB3DAB5441F6285C5F73EB5041B81E853B3DAB5441B81E850B73EB5041F6285C6F3CAB54413D0AD76372EB5041333333033CAB54413D0AD7E370EB5041333333333CAB54417B14AEB76FEB5041B81E857B3CAB54417B14AE676EEB5041F6285C6F3CAB5441F6285CEF6DEB5041333333033CAB5441B81E856B6DEB5041F6285C1F3BAB5441B81E85FB6DEB50417B14AEA73AAB5441F6285C7F6EEB5041F6285C1F3BAB5441B81E854B6FEB50417B14AE273CAB5441F6285CFF6FEB5041B81E85BB3BAB54417B14AE1770EB5041F6285CEF3AAB5441B81E854B6FEB5041F6285CBF3AAB54417B14AE876FEB5041F6285C2F3AAB54417B14AEC76EEB5041333333A338AB5441F6285CEF6DEB50413333337338AB54413D0AD7536DEB50413333331338AB54413D0AD7F36CEB50413333338337AB5441B81E854B6CEB50417B14AED737AB54417B14AEB76CEB50413333334338AB5441F6285C9F6CEB5041B81E85EB38AB54417B14AE976BEB50417B14AE2739AB5441F6285CAF6BEB5041B81E852B3BAB54413D0AD7D36BEB5041B81E85EB3BAB5441F6285C4F6BEB5041B81E857B3CAB54413D0AD7536AEB5041B81E851B3CAB5441B81E850B6AEB5041333333C33CAB5441B81E854B66EB5041B81E859B3DAB5441B81E857B66EB5041333333333CAB5441F6285CDF65EB50417B14AED73AAB5441F6285C4F65EB50417B14AE9738AB54417B14AE7764EB5041333333A338AB54417B14AE5763EB5041B81E857B39AB5441F6285C7F62EB50417B14AEE739AB5441B81E85FB61EB5041B81E859B3AAB54417B14AE8760EB5041B81E853B3AAB5441B81E852B5FEB5041F6285C5F3AAB5441B81E857B5DEB5041F6285C0F39AB5441F6285C6F5DEB5041B81E858B38AB5441B81E855B5FEB50413333335337AB54417B14AE2760EB50417B14AE1737AB54417B14AEE760EB50413333339336AB54417B14AEC762EB5041F6285C6F36AB5441B81E85DB63EB50413333330336AB54417B14AEA764EB5041F6285C0F36AB5441B81E852B65EB50417B14AEC735AB54413FDB583F65EB504122CD580035AB5441524C32AA5CEB50413430623834AB54413D0AD7A35CEB5041B81E853B34AB54413D0AD7A35CEB5041B81E85CB34AB54417B14AE775BEB50413333337335AB54417B14AEF759EB50417B14AE9735AB54417B14AE6759EB50417B14AEE736AB5441F6285C0F5AEB5041333333A338AB54417B14AEE75AEB50417B14AE8739AB54417B14AE875AEB5041333333F339AB5441B81E85FB58EB5041B81E85BB38AB54417B14AE2757EB5041333333D338AB54417B14AE3756EB50417B14AE6738AB5441F6285C2F55EB5041333333F336AB5441F6285CDF53EB5041B81E85DB36AB54417B14AE3753EB5041F6285C2F37AB54413D0AD78352EB50417B14AE6738AB5441B81E854B51EB50413333337338AB5441B81E85EB50EB5041B81E852B38AB5441B81E85BB50EB50413333333336AB5441B81E852B50EB50417B14AE4737AB54413D0AD7834FEB50413333332337AB5441F6285CFF4EEB5041B81E85DB36AB5441F6285C1F50EB50417B14AE5736AB54417B14AE3750EB50413333337335AB5441F6285CEF4FEB5041B81E85FB34AB54417B14AE574EEB5041F6285CBF34AB5441F6285CDF4DEB5041B81E852B35AB5441B81E851B4EEB50413333333336AB5441F6285CAF4DEB50413333335337AB5441F6285C4F4DEB50417B14AE7737AB54413D0AD7B34CEB5041F6285CCF36AB54417B14AED749EB50413333339336AB5441F6285C5F49EB5041B81E85EB35AB5441B81E856B49EB5041B81E855B35AB5441F6285C3F48EB50417B14AE6735AB5441F6285CAF47EB5041B81E852B35AB54413D0AD74347EB5041F6285C5F34AB5441F6285C8F46EB5041F6285C2F34AB54417B14AEB745EB5041F6285C8F34AB5441B81E855B44EB5041F6285C8F34AB5441B81E853B43EB5041F6285C9F33AB54413D0AD7F342EB50417B14AEB733AB5441B81E857B42EB5041F6285C0F33AB54417B14AEB73FEB5041B81E854B33AB54417B14AE273FEB50413333332334AB54413D0AD7A33EEB5041333333C333AB5441F6285CEF3DEB5041F6285CFF33AB5441B81E853B3DEB5041333333C333AB54413D0AD7E33AEB5041333333B334AB54417B14AE5739EB5041F6285C9F33AB5441B81E852B38EB5041F6285C1F32AB54417B14AE0738EB5041F6285CBF31AB54417B14AE8736EB50413333331332AB54417B14AEC735EB5041B81E85EB32AB54413D0AD74335EB5041333333B331AB5441F6285CBF34EB50413333335331AB5441B81E851B33EB50417B14AE4731AB54417B14AE3732EB5041F6285C5F31AB5441F6285C8F31EB50417B14AEF72FAB5441F6285C8F2EEB5041333333D32FAB5441B81E856B2EEB50413333333330AB5441B81E854B2DEB5041B81E856B31AB54413D0AD7D32CEB50413333339330AB54413D0AD7132CEB5041F6285C6F30AB5441F6285CEF2BEB5041F6285CCF30AB54413D0AD7D329EB50417B14AE1731AB5441F6285C4F29EB5041F6285C0F30AB54413D0AD7A329EB5041B81E85BB2FAB54417B14AE9729EB5041B81E852B2FAB5441F6285CFF27EB5041F6285CEF2EAB54417B14AE5727EB5041333333B32EAB54415C8E932427EB504117F2D1F72DAB54417B14AE871CEB50417B14AE172CAB5441938E75F215EB50414A7AC3DB2AAB54417B14AEE715EB5041B81E859B2BAB5441F6285C5F16EB5041333333E32BAB54413D0AD76315EB5041333333132CAB5441B81E85BB14EB5041B81E85CB2BAB54413D0AD77314EB5041333333C32AAB5441A836271314EB50417856E9812AAB54413BA02AA912EB5041DB690D3E2AAB5441F6285C9F12EB5041B81E854B2AAB54413D0AD73312EB5041333333532BAB5441B81E854B12EB50417B14AE072CAB5441F6285CDF11EB5041B81E85BB2CAB54417B14AE3711EB5041F6285C3F2DAB5441B81E856B10EB5041B81E857B2DAB5441B81E85DB0FEB50417B14AE672CAB54413D0AD75310EB5041B81E85AB2AAB5441F6285C4F0EEB50417B14AEB72AAB54417B14AE470DEB5041F6285CDF29AB5441E9670D430DEB5041B20DF53A29AB5441650793D107EB50419C55BB3528AB5441F6285CCF06EB50413333334329AB54417B14AE0705EB5041F6285C2F28AB54419E7906EF04EB5041A0FD47AB27AB5441EC51B83E03EB5041A4703D5A27AB5441886040AC01EB50419B8B563327AB5441F6285C9F00EB5041B81E857B27AB54417B14AEF7FFEA50413333338328AB54417B14AEC7FFEA5041B81E852B29AB54413D0AD743FFEA5041F6285CDF29AB5441F6285CEFFEEA50417B14AE6729AB54413D0AD733FDEA50417B14AE9729AB54413D0AD743FCEA5041B81E854B2AAB54413D0AD783FBEA5041F6285C6F2AAB54413D0AD793FAEA5041B81E856B2BAB54417B14AEF7F9EA5041B81E850B2BAB5441F6285CAFF9EA5041B81E859B28AB5441F6285CEFF8EA50413333335328AB5441F6285C9FF7EA50413333332328AB5441B81E85EBF6EA5041B81E85AB27AB54413D0AD703F7EA5041F6285C4F26AB544198DA09F1F6EA5041EA0CCC2926AB5441D965C6D0F1EA5041DCB4F4AA25AB54413D0AD7C3F1EA5041333333E325AB54413D0AD7F3F1EA50417B14AEC726AB54417B14AE27F1EA5041B81E854B27AB54417B14AEF7F0EA50417B14AE1728AB54413D0AD713F3EA5041B81E85CB28AB54417B14AE57F4EA50413333338328AB54417B14AE47F5EA50413333331329AB5441B81E853BF5EA5041333333D329AB5441B81E859BF5EA5041B81E850B2BAB5441B81E852BF6EA5041B81E85CB2BAB5441F6285C3FF7EA5041F6285C4F2CAB5441B81E85DBF7EA5041F6285C3F2DAB5441F6285C8FF8EA5041F6285C6F2DAB5441F6285C8FF8EA5041F6285CCF2DAB5441B81E85FBF5EA50417B14AEF72CAB5441B81E85DBF1EA5041F6285C9F2AAB54413D0AD793EEEA5041B81E85EB29AB5441F6285C6FEBEA5041B81E854B2AAB5441B81E853BECEA50417B14AE2727AB5441F6285C3FEBEA5041B81E85BB26AB5441F6285CAFEAEA50417B14AE2727AB54417B14AED7E9EA5041F6285C3F27AB5441F6285C5FE9EA5041B81E853B28AB54413D0AD733E8EA5041B81E859B28AB54413D0AD753E6EA50413333332328AB54413D0AD793E5EA5041B81E856B28AB5441B81E85BBE4EA5041B81E852B29AB54417B14AE27E5EA5041B81E851B27AB54417B14AE37E4EA5041F6285CDF26AB5441B81E853BE3EA50413333333327AB54413D0AD753E3EA50417B14AE0729AB54417B14AE47E3EA50417B14AE272AAB5441B81E854BE2EA50417B14AE572AAB54413D0AD7A3E1EA5041B81E851B27AB5441B81E855BE1EA5041F6285CDF26AB54417B14AE47E0EA50413333330327AB54413D0AD733DFEA5041F6285CAF26AB5441F6285C6FDFEA5041B81E856B25AB5441F18940AFDFEA5041B113D6CF24AB544148E17A14D1EA50410AD7A37024AB5441713D0A77CCEA50417B14AE572DAB54411F85EBB1C9EA5041A4703D5A35AB5441CDCCCC9CC6EA5041B81E851B3FAB54410F00000048E17A84A0EB5041295C8F0250AB54410AD7A370A0EB5041F6285CFF52AB5441EC51B88EA0EB50418FC2F59854AB5441A4703DDA9FEB5041CDCCCCFC58AB544152B81E759FEB5041EC51B87E5CAB5441EC51B82EA0EB50418FC2F56862AB54419A999939A0EB504114AE47C165AB5441666666969DEB50413333338360AB544148E17AB49CEB50417B14AE475EAB54411F85EB719CEB50413D0AD7935CAB5441B81E859B9BEB5041B81E85FB54AB54410AD7A3209AEB5041B81E852B4CAB544114AE478199EB50410000003047AB5441F6285C8FA0EB5041F6285C9F4AAB544148E17A84A0EB5041295C8F0250AB5441
+</a>
+
+<b>
+010600000001000000010300000005000000CC000000295C8FA2EBEA5041EC51B8CE12AB5441891B0C89D4EA504180B8342D22AB5441A2A90BD0D4EA50410230B79322AB5441F6285C2FD7EA5041B81E852B23AB54413D0AD7C3D9EA5041B81E856B22AB5441B81E852BDBEA5041B81E856B22AB54413D0AD723DDEA5041B81E85FB22AB54413D0AD713DEEA50417B14AE8721AB54417B14AE27DFEA5041F6285CFF21AB5441F6285C0FDFEA50413333335322AB54417B14AE57DFEA5041F6285CBF22AB54413D0AD7F3DFEA5041F6285C1F23AB5441F6285C2FE0EA50417B14AE9723AB544121CF0BF1DFEA504191FF768124AB544165251CC1DFEA5041A79775D924AB5441B2D7FB5CE6EA5041DF6FF00725AB5441C6CDFE99EEEA504156014A7F25AB54413D0AD7C3F1EA5041333333E325AB5441B81E850BF2EA5041B81E85AB24AB5441F6285CBFF2EA5041B81E854B24AB5441B81E859BF2EA5041333333D323AB54417B14AE37F3EA5041B81E85CB22AB5441B81E85CBF2EA5041333333531FAB5441F6285C1FF3EA5041F6285C9F1EAB5441F6285C0FF4EA50417B14AEB71EAB5441F6285CFFF4EA50417B14AEE721AB54413D0AD783F5EA5041B81E856B22AB54417B14AED7F5EA50417B14AEF723AB54413D0AD703F7EA5041F6285C4F26AB54410DBBF7D4F9EA50414A65A38726AB54413D0AD703FAEA5041B81E85FB25AB54413D0AD723FBEA50417B14AED725AB5441B81E859BFBEA5041F6285C1F26AB5441F6285C4FFCEA5041F6285C4F26AB54413E33E868FCEA5041EB2924BB26AB54417B14AED701EB50417B14AE2727AB54413D0AD7E304EB5041F6285C6F27AB54419F6781F204EB504109D4ECBD27AB5441E287565806EB5041BCED800328AB5441DE84BCBF07EB504172DE584828AB54417B14AED707EB5041F6285C2F28AB54417B14AE070BEB50413333338328AB5441B81E855B0BEB50417B14AEE727AB5441B81E851B0CEB50417B14AEE727AB5441B81E854B0CEB5041F6285C6F27AB5441B81E857B0CEB50417B14AEC726AB54413D0AD7D30BEB5041B81E85CB25AB54417B14AEC70BEB5041B81E853B25AB54413D0AD7A30BEB50417B14AE6723AB5441B81E851B0CEB50413333337323AB54413D0AD7330CEB50413333332325AB5441F6285C2F0DEB5041F6285C7F26AB5441894930400DEB504149558BC528AB54419DED174F0DEB504136A4FC5529AB544183D85F9912EB50418A1C22582AAB5441414F5E9B12EB504113164F552AAB5441F6285C9F12EB5041B81E854B2AAB5441F6285CFF12EB50417B14AEC729AB5441C3A6066B14EB5041EDD11DB32AAB544117A665CE15EB50414BACEBF42AAB54413D0AD7F315EB5041333333C32AAB54417B14AE1716EB5041333333032AAB54417B14AE9717EB5041F6285C6F2AAB5441B81E859B19EB5041B81E857B2AAB54417B14AEF71AEB5041F6285C9F2AAB54417B14AE271BEB5041F6285CCF2AAB5441B81E853B1FEB5041B81E855B2CAB54413D0AD71320EB5041333333E32BAB54413D0AD77320EB5041F6285C5F2BAB54417B14AE1722EB5041333333832BAB54413D0AD72322EB5041F6285CEF2BAB5441B81E85CB22EB5041B81E858B2CAB5441F6285CFF24EB5041B81E85BB2CAB54413D0AD7B325EB5041B81E851B2DAB54417B14AEC726EB5041333333A32CAB54411EC0223227EB50413794541E2EAB5441AEC7D2F629EB5041FC7521A82EAB54413CECD19131EB5041E138DBE82FAB54412EBBD0DE34EB5041C394D07230AB544188FAF89F3BEB5041C162BF6131AB544158CCE52D40EB5041EF6F94D231AB54418648BC0B47EB504126BC4C6A32AB54410BA3B5604AEB5041842A56B132AB54417B14AE974AEB50413333334332AB5441D664380C4BEB5041D7C79EBF32AB5441009566FA4FEB5041EF80BC2833AB5441F151DA975AEB50418432262634AB54413D0AD7A35CEB5041B9FF675034AB54413D0AD7A35CEB5041B81E853B34AB5441F6285CDF5FEB5041333333A332AB54413D0AD76360EB50413333336333AB5441F6285CFF60EB50413333333333AB5441F6285C8F61EB5041F6285C6F33AB54411C29178762EB5041363921C432AB5441365F420F65EB504128A27A3433AB5441654776B365EB50412B8718A834AB5441894A3A4C65EB50414CFD7C1135AB5441BD07629B66EB50411C8F802F35AB5441C25A8CAA6EEB5041A592ECBC35AB5441CCB2672F7DEB5041E00F60B13AAB5441322FD3A77DEB50419B8D78DA3AAB54411E5D1DB47DEB50411E3373A13AAB54410EA7A9707DEB5041E3E3CF6F3AAB54410F2176ED7DEB5041B7D4E0793AAB5441B81E854B7EEB50417B14AE173AAB54413A7ABAEA7CEB5041826CDFC439AB54410CC0D0CC7CEB50416885B5E339AB5441FB7336A67CEB50411883A0233AAB5441F6285C8F7CEB5041333333233AAB54419F76F66F7CEB5041A9B3452D3AAB5441A5A744D77BEB504111BBC2CB39AB54413D0AD7637BEB50413333339339AB54413D0AD7037BEB5041B81E855B38AB54413D0AD7137AEB5041F6285C1F38AB54417B14AE1779EB5041F6285CBF37AB54413D0AD79378EB5041F6285CFF36AB54417B14AE4776EB5041B81E851B36AB54417B14AEB775EB50417B14AE2736AB54413D0AD79375EB50417B14AED734AB54417B14AEB775EB5041F6285C5F34AB5441B81E85AB72EB5041B81E856B34AB54413D0AD70372EB5041F6285C9F33AB54413D0AD7B370EB5041333333D332AB5441F6285C5F70EB5041B81E855B32AB54417B14AE876FEB50417B14AE0732AB5441F6285C2F6DEB50417B14AE972FAB54417B14AE476DEB5041B81E855B2FAB5441F6285CAF71EB5041333333732FAB5441F6285CFF72EB50417B14AEC72FAB5441F6285C1F74EB5041F6285CBF2EAB5441B81E85AB72EB5041F6285C1F2FAB5441B81E855B71EB50417B14AED72EAB5441F6285C9F6FEB5041333333E32EAB5441F6285CAF6EEB5041F6285C5F2EAB54413D0AD7B36DEB50417B14AE772EAB54417B14AEC76BEB5041B81E85DB2DAB54417B14AEC768EB50417B14AE172EAB54413D0AD7B364EB5041333333832EAB54413D0AD79363EB5041F6285CEF2EAB54413D0AD7A362EB5041B81E85BB2FAB5441B81E850B61EB50413333336330AB5441B81E850B5EEB5041B81E857B30AB54413D0AD7C35AEB5041B81E856B2EAB5441B81E85EB59EB50417B14AE472EAB5441F6285CAF59EB50417B14AEB72DAB5441B81E852B59EB50417B14AE272DAB54413D0AD71359EB5041F6285C4F2CAB5441B81E85FB55EB5041F6285CCF2AAB54413D0AD74353EB5041B81E854B2AAB5441F6285CAF50EB5041B81E854B2AAB5441B81E85DB51EB5041B81E85BB29AB54417B14AE6753EB5041F6285CDF29AB5441B81E851B54EB50413333337329AB54413D0AD75355EB5041B81E85EB29AB5441B81E855B56EB5041333333032AAB54413D0AD77356EB50417B14AE3729AB54417B14AE0756EB50417B14AEF726AB54417B14AEC753EB5041F6285CEF25AB5441F6285CAF56EB5041333333A323AB5441000000B056EB5041F6285C0F22AB5441B81E859B46EB5041F6285C0F21AB54417B14AED746EB5041B81E85AB21AB5441B81E853B46EB5041F6285C2F22AB54413D0AD77341EB50417B14AE6723AB5441F6285C4F41EB50413333333324AB54417B14AE1743EB50417B14AE8724AB54417B14AE3744EB5041B81E854B24AB54413D0AD76345EB5041333333F324AB5441F6285C9F45EB5041B81E85CB25AB54413D0AD76345EB5041B81E85CB28AB54413D0AD70342EB5041B81E859B28AB54413D0AD7733EEB5041F6285C4F29AB54413D0AD7433BEB5041333333532BAB5441B81E85FB3AEB5041F6285CEF2BAB5441F6285C7F38EB5041F6285CEF2BAB54417B14AE7737EB5041333333532BAB54413D0AD7F336EB5041F6285CAF29AB54417B14AE5736EB5041333333E328AB54417B14AE5736EB5041F6285CCF27AB5441B81E85EB35EB50417B14AE7725AB5441B81E855B35EB50417B14AEB724AB5441F6285C9F36EB50413333334320AB54417B14AE9732EB50417B14AE0720AB54413D0AD7A332EB5041F6285CDF20AB54417B14AE0732EB5041F6285CCF21AB5441F6285C6F30EB50417B14AEB721AB5441B81E855B2FEB5041B81E854B21AB54417B14AEC72FEB5041333333E31FAB54417B14AE6725EB5041A4703D0A1FAB5441B81E853B16EB5041333333831CAB54413D0AD78316EB5041F6285C4F1DAB54417B14AEA713EB5041333333D31DAB5441F6285CCF12EB5041F6285CEF1CAB54417B14AE3711EB5041F6285C2F1CAB5441F6285CEF10EB50417B14AEB71BAB54417B14AE8703EB50413333336319AB54413D0AD783FEEA5041F6285C4F17AB54417B14AE27FDEA50417B14AE5718AB5441B81E856BFBEA5041F6285C6F18AB54417B14AEF7F9EA5041333333D317AB54417B14AEE7F7EA5041B81E855B17AB5441B81E852BF3EA5041B81E851B15AB5441B81E850BF2EA5041F6285C1F14AB5441295C8FA2EBEA5041EC51B8CE12AB544111000000B81E857BEBEA5041F6285C0F1BAB54413D0AD723ECEA50417B14AEE71BAB5441F6285C5FECEA5041F6285CDF1DAB54413D0AD7F3EBEA5041B81E854B1EAB54413D0AD763EBEA5041F6285CCF1EAB5441B81E854BEBEA5041B81E85EB20AB5441F6285CDFEAEA50413333332322AB5441B81E85BBE7EA50417B14AE9723AB5441B81E856BE6EA5041B81E855B23AB5441B81E856BE6EA50417B14AE5721AB54413D0AD7B3E6EA5041B81E85FB1FAB54413D0AD7F3E5EA5041B81E851B1EAB54413D0AD723E6EA50417B14AE671DAB54417B14AE57E8EA5041F6285C8F1CAB5441F6285CFFE8EA5041B81E85AB1BAB54417B14AEF7EAEA5041333333D31AAB5441B81E857BEBEA5041F6285C0F1BAB54410B000000B81E85EB20EB50413333337326AB54413D0AD70321EB50413333338325AB5441B81E854B21EB50417B14AE4725AB5441F6285CCF21EB5041F6285C8F25AB5441B81E853B22EB50413333337326AB54413D0AD7B322EB50417B14AEF726AB5441B81E85DB21EB5041F6285C5F28AB54417B14AE5721EB50417B14AE6729AB54413D0AD70321EB5041333333E328AB54417B14AE6720EB5041B81E856B28AB5441B81E85EB20EB50413333337326AB544110000000B81E85AB1EEB5041F6285C3F24AB5441B81E851B1EEB5041B81E85CB22AB5441B81E854B1EEB50413333332322AB5441F6285CAF1DEB50413333339321AB5441F6285C8F1CEB5041F6285C3F21AB54413D0AD7531CEB5041B81E858B20AB54413D0AD7E31CEB50413333331320AB54417B14AEA71FEB5041F6285C8F1FAB5441B81E85CB1FEB50417B14AE0720AB54417B14AE7722EB50417B14AE3720AB5441B81E85CB22EB5041F6285C6F21AB5441B81E851B21EB5041F6285C9F21AB54417B14AE9720EB5041B81E856B22AB5441B81E85EB20EB5041F6285CAF23AB5441F6285C8F1FEB5041F6285C3F24AB5441B81E85AB1EEB5041F6285C3F24AB544107000000F6285C0F48EB5041F6285C0F27AB54413D0AD7C348EB50413333333327AB54413D0AD75349EB5041F6285C2F28AB54413D0AD76348EB5041333333E328AB5441F6285C4F47EB50413333331329AB5441F6285C1F47EB5041F6285C6F27AB5441F6285C0F48EB5041F6285C0F27AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981195 - 422997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -484  </desc>
+<a>
+01060000000100000001030000000200000010010000CDCCCC9CC6EA5041B81E851B3FAB5441AE47E15AD0EA5041B81E851B45AB5441E17A14BEDBEA5041EC51B8EE48AB54411F85EB61EAEA50419A9999D94DAB54411F85EBF1F0EA5041F6285CCF4FAB5441295C8F22FAEA504152B81E8552AB5441713D0AB7FEEA5041C3F5287C5AAB5441CDCCCCEC09EB5041CDCCCCAC5DAB5441C3F5280C12EB50415C8FC27560AB5441A4703DBA1AEB5041D7A3706D61AB5441AAFB6E1F1CEB5041408AA58B61AB5441C3F5287C1CEB5041713D0A3761AB54414D2E6D021DEB5041C0B8D79E61AB544152B81E751FEB50413D0AD7D361AB5441E1A89C2A25EB50415342F85162AB5441295C8F9225EB5041CDCCCCFC61AB54410AD7A3A026EB50417B14AEE761AB5441DB40F43D27EB50410260D37F62AB5441C3F5286C29EB5041000000B062AB544152B81E1534EB50417B14AE9764AB5441666666663DEB5041D7A3700D65AB5441B81E85EB47EB50417B14AE0766AB5441713D0A975CEB504148E17A2463AB54413D0AD7936BEB50411F85EB5165AB54413D0AD7C36FEB5041E17A14BE70AB5441D7A3701D74EB50415C8FC27579AB5441333333337BEB5041A4703D6A80AB54419D75AA1582EB50419F24265284AB5441AE47E1DA82EB50411F85EB1184AB5441713D0A7783EB5041C3F5281C84AB5441295C8FE284EB5041713D0AA785AB54418DC03A2485EB50413A6B8B4387AB54413D0AD78389EB50417B14AE878BAB5441C3F5288C93EB5041E17A144E98AB5441E17A14EE9EEB5041A4703D1AA3AB54410AD7A3D0ACEB5041EC51B86EABAB544148E17A44B4EB5041E17A140EB4AB54413D0AD7E3BDEB50419A999919BBAB544152B81E55C5EB504166666616B9AB54419A999929C7EB5041295C8F62B4AB5441A4703D7ACDEB504148E17A74ABAB5441333333B3CDEB504152B81E05A1AB54418FC2F548CBEB5041CDCCCCEC95AB544185EB51C8C9EB50417B14AE678AAB5441E17A14AEC7EB5041CDCCCC8C7AAB54417B14AEC7CEEB50419A99995979AB54411F85EB11CAEB5041A4703DDA6FAB54410AD7A3D0C5EB504148E17AD466AB5441F6285C8FC1EB5041B81E859B5DAB544114AE4781BEEB5041713D0AF757AB5441000000D0B9EB5041D7A370AD4FAB544114AE4761B5EB50410AD7A3D047AB5441C3F528FCA5EB504148E17A9446AB5441E17A146E95EB50419A9999C943AB5441B81E856B8CEB5041B81E858B40AB5441C3F5289C7EEB5041E17A148E3BAB54414B6AA7AA7DEB50419F755A393BAB54417B14AE977DEB5041B81E855B3BAB5441F6285CEF7CEB5041F6285C7F3BAB5441F6285CEF7CEB5041F6285C0F3CAB5441B81E853B7CEB5041F6285C6F3CAB5441B81E853B7CEB5041B81E851B3CAB5441F6285CAF77EB5041B81E85BB3BAB54413D0AD7C375EB5041F6285C0F3CAB5441B81E851B75EB5041F6285CFF3CAB5441F6285C1F74EB5041B81E85CB3DAB5441F6285C5F73EB5041B81E853B3DAB5441B81E850B73EB5041F6285C6F3CAB54413D0AD76372EB5041333333033CAB54413D0AD7E370EB5041333333333CAB54417B14AEB76FEB5041B81E857B3CAB54417B14AE676EEB5041F6285C6F3CAB5441F6285CEF6DEB5041333333033CAB5441B81E856B6DEB5041F6285C1F3BAB5441B81E85FB6DEB50417B14AEA73AAB5441F6285C7F6EEB5041F6285C1F3BAB5441B81E854B6FEB50417B14AE273CAB5441F6285CFF6FEB5041B81E85BB3BAB54417B14AE1770EB5041F6285CEF3AAB5441B81E854B6FEB5041F6285CBF3AAB54417B14AE876FEB5041F6285C2F3AAB54417B14AEC76EEB5041333333A338AB5441F6285CEF6DEB50413333337338AB54413D0AD7536DEB50413333331338AB54413D0AD7F36CEB50413333338337AB5441B81E854B6CEB50417B14AED737AB54417B14AEB76CEB50413333334338AB5441F6285C9F6CEB5041B81E85EB38AB54417B14AE976BEB50417B14AE2739AB5441F6285CAF6BEB5041B81E852B3BAB54413D0AD7D36BEB5041B81E85EB3BAB5441F6285C4F6BEB5041B81E857B3CAB54413D0AD7536AEB5041B81E851B3CAB5441B81E850B6AEB5041333333C33CAB5441B81E854B66EB5041B81E859B3DAB5441B81E857B66EB5041333333333CAB5441F6285CDF65EB50417B14AED73AAB5441F6285C4F65EB50417B14AE9738AB54417B14AE7764EB5041333333A338AB54417B14AE5763EB5041B81E857B39AB5441F6285C7F62EB50417B14AEE739AB5441B81E85FB61EB5041B81E859B3AAB54417B14AE8760EB5041B81E853B3AAB5441B81E852B5FEB5041F6285C5F3AAB5441B81E857B5DEB5041F6285C0F39AB5441F6285C6F5DEB5041B81E858B38AB5441B81E855B5FEB50413333335337AB54417B14AE2760EB50417B14AE1737AB54417B14AEE760EB50413333339336AB54417B14AEC762EB5041F6285C6F36AB5441B81E85DB63EB50413333330336AB54417B14AEA764EB5041F6285C0F36AB5441B81E852B65EB50417B14AEC735AB54413FDB583F65EB504122CD580035AB5441524C32AA5CEB50413430623834AB54413D0AD7A35CEB5041B81E853B34AB54413D0AD7A35CEB5041B81E85CB34AB54417B14AE775BEB50413333337335AB54417B14AEF759EB50417B14AE9735AB54417B14AE6759EB50417B14AEE736AB5441F6285C0F5AEB5041333333A338AB54417B14AEE75AEB50417B14AE8739AB54417B14AE875AEB5041333333F339AB5441B81E85FB58EB5041B81E85BB38AB54417B14AE2757EB5041333333D338AB54417B14AE3756EB50417B14AE6738AB5441F6285C2F55EB5041333333F336AB5441F6285CDF53EB5041B81E85DB36AB54417B14AE3753EB5041F6285C2F37AB54413D0AD78352EB50417B14AE6738AB5441B81E854B51EB50413333337338AB5441B81E85EB50EB5041B81E852B38AB5441B81E85BB50EB50413333333336AB5441B81E852B50EB50417B14AE4737AB54413D0AD7834FEB50413333332337AB5441F6285CFF4EEB5041B81E85DB36AB5441F6285C1F50EB50417B14AE5736AB54417B14AE3750EB50413333337335AB5441F6285CEF4FEB5041B81E85FB34AB54417B14AE574EEB5041F6285CBF34AB5441F6285CDF4DEB5041B81E852B35AB5441B81E851B4EEB50413333333336AB5441F6285CAF4DEB50413333335337AB5441F6285C4F4DEB50417B14AE7737AB54413D0AD7B34CEB5041F6285CCF36AB54417B14AED749EB50413333339336AB5441F6285C5F49EB5041B81E85EB35AB5441B81E856B49EB5041B81E855B35AB5441F6285C3F48EB50417B14AE6735AB5441F6285CAF47EB5041B81E852B35AB54413D0AD74347EB5041F6285C5F34AB5441F6285C8F46EB5041F6285C2F34AB54417B14AEB745EB5041F6285C8F34AB5441B81E855B44EB5041F6285C8F34AB5441B81E853B43EB5041F6285C9F33AB54413D0AD7F342EB50417B14AEB733AB5441B81E857B42EB5041F6285C0F33AB54417B14AEB73FEB5041B81E854B33AB54417B14AE273FEB50413333332334AB54413D0AD7A33EEB5041333333C333AB5441F6285CEF3DEB5041F6285CFF33AB5441B81E853B3DEB5041333333C333AB54413D0AD7E33AEB5041333333B334AB54417B14AE5739EB5041F6285C9F33AB5441B81E852B38EB5041F6285C1F32AB54417B14AE0738EB5041F6285CBF31AB54417B14AE8736EB50413333331332AB54417B14AEC735EB5041B81E85EB32AB54413D0AD74335EB5041333333B331AB5441F6285CBF34EB50413333335331AB5441B81E851B33EB50417B14AE4731AB54417B14AE3732EB5041F6285C5F31AB5441F6285C8F31EB50417B14AEF72FAB5441F6285C8F2EEB5041333333D32FAB5441B81E856B2EEB50413333333330AB5441B81E854B2DEB5041B81E856B31AB54413D0AD7D32CEB50413333339330AB54413D0AD7132CEB5041F6285C6F30AB5441F6285CEF2BEB5041F6285CCF30AB54413D0AD7D329EB50417B14AE1731AB5441F6285C4F29EB5041F6285C0F30AB54413D0AD7A329EB5041B81E85BB2FAB54417B14AE9729EB5041B81E852B2FAB5441F6285CFF27EB5041F6285CEF2EAB54417B14AE5727EB5041333333B32EAB54415C8E932427EB504117F2D1F72DAB54417B14AE871CEB50417B14AE172CAB5441938E75F215EB50414A7AC3DB2AAB54417B14AEE715EB5041B81E859B2BAB5441F6285C5F16EB5041333333E32BAB54413D0AD76315EB5041333333132CAB5441B81E85BB14EB5041B81E85CB2BAB54413D0AD77314EB5041333333C32AAB5441A836271314EB50417856E9812AAB54413BA02AA912EB5041DB690D3E2AAB5441F6285C9F12EB5041B81E854B2AAB54413D0AD73312EB5041333333532BAB5441B81E854B12EB50417B14AE072CAB5441F6285CDF11EB5041B81E85BB2CAB54417B14AE3711EB5041F6285C3F2DAB5441B81E856B10EB5041B81E857B2DAB5441B81E85DB0FEB50417B14AE672CAB54413D0AD75310EB5041B81E85AB2AAB5441F6285C4F0EEB50417B14AEB72AAB54417B14AE470DEB5041F6285CDF29AB5441E9670D430DEB5041B20DF53A29AB5441650793D107EB50419C55BB3528AB5441F6285CCF06EB50413333334329AB54417B14AE0705EB5041F6285C2F28AB54419E7906EF04EB5041A0FD47AB27AB5441EC51B83E03EB5041A4703D5A27AB5441886040AC01EB50419B8B563327AB5441F6285C9F00EB5041B81E857B27AB54417B14AEF7FFEA50413333338328AB54417B14AEC7FFEA5041B81E852B29AB54413D0AD743FFEA5041F6285CDF29AB5441F6285CEFFEEA50417B14AE6729AB54413D0AD733FDEA50417B14AE9729AB54413D0AD743FCEA5041B81E854B2AAB54413D0AD783FBEA5041F6285C6F2AAB54413D0AD793FAEA5041B81E856B2BAB54417B14AEF7F9EA5041B81E850B2BAB5441F6285CAFF9EA5041B81E859B28AB5441F6285CEFF8EA50413333335328AB5441F6285C9FF7EA50413333332328AB5441B81E85EBF6EA5041B81E85AB27AB54413D0AD703F7EA5041F6285C4F26AB544198DA09F1F6EA5041EA0CCC2926AB5441D965C6D0F1EA5041DCB4F4AA25AB54413D0AD7C3F1EA5041333333E325AB54413D0AD7F3F1EA50417B14AEC726AB54417B14AE27F1EA5041B81E854B27AB54417B14AEF7F0EA50417B14AE1728AB54413D0AD713F3EA5041B81E85CB28AB54417B14AE57F4EA50413333338328AB54417B14AE47F5EA50413333331329AB5441B81E853BF5EA5041333333D329AB5441B81E859BF5EA5041B81E850B2BAB5441B81E852BF6EA5041B81E85CB2BAB5441F6285C3FF7EA5041F6285C4F2CAB5441B81E85DBF7EA5041F6285C3F2DAB5441F6285C8FF8EA5041F6285C6F2DAB5441F6285C8FF8EA5041F6285CCF2DAB5441B81E85FBF5EA50417B14AEF72CAB5441B81E85DBF1EA5041F6285C9F2AAB54413D0AD793EEEA5041B81E85EB29AB5441F6285C6FEBEA5041B81E854B2AAB5441B81E853BECEA50417B14AE2727AB5441F6285C3FEBEA5041B81E85BB26AB5441F6285CAFEAEA50417B14AE2727AB54417B14AED7E9EA5041F6285C3F27AB5441F6285C5FE9EA5041B81E853B28AB54413D0AD733E8EA5041B81E859B28AB54413D0AD753E6EA50413333332328AB54413D0AD793E5EA5041B81E856B28AB5441B81E85BBE4EA5041B81E852B29AB54417B14AE27E5EA5041B81E851B27AB54417B14AE37E4EA5041F6285CDF26AB5441B81E853BE3EA50413333333327AB54413D0AD753E3EA50417B14AE0729AB54417B14AE47E3EA50417B14AE272AAB5441B81E854BE2EA50417B14AE572AAB54413D0AD7A3E1EA5041B81E851B27AB5441B81E855BE1EA5041F6285CDF26AB54417B14AE47E0EA50413333330327AB54413D0AD733DFEA5041F6285CAF26AB5441F6285C6FDFEA5041B81E856B25AB5441F18940AFDFEA5041B113D6CF24AB544148E17A14D1EA50410AD7A37024AB5441713D0A77CCEA50417B14AE572DAB54411F85EBB1C9EA5041A4703D5A35AB5441CDCCCC9CC6EA5041B81E851B3FAB54410F00000048E17A84A0EB5041295C8F0250AB54410AD7A370A0EB5041F6285CFF52AB5441EC51B88EA0EB50418FC2F59854AB5441A4703DDA9FEB5041CDCCCCFC58AB544152B81E759FEB5041EC51B87E5CAB5441EC51B82EA0EB50418FC2F56862AB54419A999939A0EB504114AE47C165AB5441666666969DEB50413333338360AB544148E17AB49CEB50417B14AE475EAB54411F85EB719CEB50413D0AD7935CAB5441B81E859B9BEB5041B81E85FB54AB54410AD7A3209AEB5041B81E852B4CAB544114AE478199EB50410000003047AB5441F6285C8FA0EB5041F6285C9F4AAB544148E17A84A0EB5041295C8F0250AB5441
+</a>
+
+<b>
+010600000001000000010300000005000000CC000000295C8FA2EBEA5041EC51B8CE12AB5441891B0C89D4EA504180B8342D22AB5441A2A90BD0D4EA50410230B79322AB5441F6285C2FD7EA5041B81E852B23AB54413D0AD7C3D9EA5041B81E856B22AB5441B81E852BDBEA5041B81E856B22AB54413D0AD723DDEA5041B81E85FB22AB54413D0AD713DEEA50417B14AE8721AB54417B14AE27DFEA5041F6285CFF21AB5441F6285C0FDFEA50413333335322AB54417B14AE57DFEA5041F6285CBF22AB54413D0AD7F3DFEA5041F6285C1F23AB5441F6285C2FE0EA50417B14AE9723AB544121CF0BF1DFEA504191FF768124AB544165251CC1DFEA5041A79775D924AB5441B2D7FB5CE6EA5041DF6FF00725AB5441C6CDFE99EEEA504156014A7F25AB54413D0AD7C3F1EA5041333333E325AB5441B81E850BF2EA5041B81E85AB24AB5441F6285CBFF2EA5041B81E854B24AB5441B81E859BF2EA5041333333D323AB54417B14AE37F3EA5041B81E85CB22AB5441B81E85CBF2EA5041333333531FAB5441F6285C1FF3EA5041F6285C9F1EAB5441F6285C0FF4EA50417B14AEB71EAB5441F6285CFFF4EA50417B14AEE721AB54413D0AD783F5EA5041B81E856B22AB54417B14AED7F5EA50417B14AEF723AB54413D0AD703F7EA5041F6285C4F26AB54410DBBF7D4F9EA50414A65A38726AB54413D0AD703FAEA5041B81E85FB25AB54413D0AD723FBEA50417B14AED725AB5441B81E859BFBEA5041F6285C1F26AB5441F6285C4FFCEA5041F6285C4F26AB54413E33E868FCEA5041EB2924BB26AB54417B14AED701EB50417B14AE2727AB54413D0AD7E304EB5041F6285C6F27AB54419F6781F204EB504109D4ECBD27AB5441E287565806EB5041BCED800328AB5441DE84BCBF07EB504172DE584828AB54417B14AED707EB5041F6285C2F28AB54417B14AE070BEB50413333338328AB5441B81E855B0BEB50417B14AEE727AB5441B81E851B0CEB50417B14AEE727AB5441B81E854B0CEB5041F6285C6F27AB5441B81E857B0CEB50417B14AEC726AB54413D0AD7D30BEB5041B81E85CB25AB54417B14AEC70BEB5041B81E853B25AB54413D0AD7A30BEB50417B14AE6723AB5441B81E851B0CEB50413333337323AB54413D0AD7330CEB50413333332325AB5441F6285C2F0DEB5041F6285C7F26AB5441894930400DEB504149558BC528AB54419DED174F0DEB504136A4FC5529AB544183D85F9912EB50418A1C22582AAB5441414F5E9B12EB504113164F552AAB5441F6285C9F12EB5041B81E854B2AAB5441F6285CFF12EB50417B14AEC729AB5441C3A6066B14EB5041EDD11DB32AAB544117A665CE15EB50414BACEBF42AAB54413D0AD7F315EB5041333333C32AAB54417B14AE1716EB5041333333032AAB54417B14AE9717EB5041F6285C6F2AAB5441B81E859B19EB5041B81E857B2AAB54417B14AEF71AEB5041F6285C9F2AAB54417B14AE271BEB5041F6285CCF2AAB5441B81E853B1FEB5041B81E855B2CAB54413D0AD71320EB5041333333E32BAB54413D0AD77320EB5041F6285C5F2BAB54417B14AE1722EB5041333333832BAB54413D0AD72322EB5041F6285CEF2BAB5441B81E85CB22EB5041B81E858B2CAB5441F6285CFF24EB5041B81E85BB2CAB54413D0AD7B325EB5041B81E851B2DAB54417B14AEC726EB5041333333A32CAB54411EC0223227EB50413794541E2EAB5441AEC7D2F629EB5041FC7521A82EAB54413CECD19131EB5041E138DBE82FAB54412EBBD0DE34EB5041C394D07230AB544188FAF89F3BEB5041C162BF6131AB544158CCE52D40EB5041EF6F94D231AB54418648BC0B47EB504126BC4C6A32AB54410BA3B5604AEB5041842A56B132AB54417B14AE974AEB50413333334332AB5441D664380C4BEB5041D7C79EBF32AB5441009566FA4FEB5041EF80BC2833AB5441F151DA975AEB50418432262634AB54413D0AD7A35CEB5041B9FF675034AB54413D0AD7A35CEB5041B81E853B34AB5441F6285CDF5FEB5041333333A332AB54413D0AD76360EB50413333336333AB5441F6285CFF60EB50413333333333AB5441F6285C8F61EB5041F6285C6F33AB54411C29178762EB5041363921C432AB5441365F420F65EB504128A27A3433AB5441654776B365EB50412B8718A834AB5441894A3A4C65EB50414CFD7C1135AB5441BD07629B66EB50411C8F802F35AB5441C25A8CAA6EEB5041A592ECBC35AB5441CCB2672F7DEB5041E00F60B13AAB5441322FD3A77DEB50419B8D78DA3AAB54411E5D1DB47DEB50411E3373A13AAB54410EA7A9707DEB5041E3E3CF6F3AAB54410F2176ED7DEB5041B7D4E0793AAB5441B81E854B7EEB50417B14AE173AAB54413A7ABAEA7CEB5041826CDFC439AB54410CC0D0CC7CEB50416885B5E339AB5441FB7336A67CEB50411883A0233AAB5441F6285C8F7CEB5041333333233AAB54419F76F66F7CEB5041A9B3452D3AAB5441A5A744D77BEB504111BBC2CB39AB54413D0AD7637BEB50413333339339AB54413D0AD7037BEB5041B81E855B38AB54413D0AD7137AEB5041F6285C1F38AB54417B14AE1779EB5041F6285CBF37AB54413D0AD79378EB5041F6285CFF36AB54417B14AE4776EB5041B81E851B36AB54417B14AEB775EB50417B14AE2736AB54413D0AD79375EB50417B14AED734AB54417B14AEB775EB5041F6285C5F34AB5441B81E85AB72EB5041B81E856B34AB54413D0AD70372EB5041F6285C9F33AB54413D0AD7B370EB5041333333D332AB5441F6285C5F70EB5041B81E855B32AB54417B14AE876FEB50417B14AE0732AB5441F6285C2F6DEB50417B14AE972FAB54417B14AE476DEB5041B81E855B2FAB5441F6285CAF71EB5041333333732FAB5441F6285CFF72EB50417B14AEC72FAB5441F6285C1F74EB5041F6285CBF2EAB5441B81E85AB72EB5041F6285C1F2FAB5441B81E855B71EB50417B14AED72EAB5441F6285C9F6FEB5041333333E32EAB5441F6285CAF6EEB5041F6285C5F2EAB54413D0AD7B36DEB50417B14AE772EAB54417B14AEC76BEB5041B81E85DB2DAB54417B14AEC768EB50417B14AE172EAB54413D0AD7B364EB5041333333832EAB54413D0AD79363EB5041F6285CEF2EAB54413D0AD7A362EB5041B81E85BB2FAB5441B81E850B61EB50413333336330AB5441B81E850B5EEB5041B81E857B30AB54413D0AD7C35AEB5041B81E856B2EAB5441B81E85EB59EB50417B14AE472EAB5441F6285CAF59EB50417B14AEB72DAB5441B81E852B59EB50417B14AE272DAB54413D0AD71359EB5041F6285C4F2CAB5441B81E85FB55EB5041F6285CCF2AAB54413D0AD74353EB5041B81E854B2AAB5441F6285CAF50EB5041B81E854B2AAB5441B81E85DB51EB5041B81E85BB29AB54417B14AE6753EB5041F6285CDF29AB5441B81E851B54EB50413333337329AB54413D0AD75355EB5041B81E85EB29AB5441B81E855B56EB5041333333032AAB54413D0AD77356EB50417B14AE3729AB54417B14AE0756EB50417B14AEF726AB54417B14AEC753EB5041F6285CEF25AB5441F6285CAF56EB5041333333A323AB5441000000B056EB5041F6285C0F22AB5441B81E859B46EB5041F6285C0F21AB54417B14AED746EB5041B81E85AB21AB5441B81E853B46EB5041F6285C2F22AB54413D0AD77341EB50417B14AE6723AB5441F6285C4F41EB50413333333324AB54417B14AE1743EB50417B14AE8724AB54417B14AE3744EB5041B81E854B24AB54413D0AD76345EB5041333333F324AB5441F6285C9F45EB5041B81E85CB25AB54413D0AD76345EB5041B81E85CB28AB54413D0AD70342EB5041B81E859B28AB54413D0AD7733EEB5041F6285C4F29AB54413D0AD7433BEB5041333333532BAB5441B81E85FB3AEB5041F6285CEF2BAB5441F6285C7F38EB5041F6285CEF2BAB54417B14AE7737EB5041333333532BAB54413D0AD7F336EB5041F6285CAF29AB54417B14AE5736EB5041333333E328AB54417B14AE5736EB5041F6285CCF27AB5441B81E85EB35EB50417B14AE7725AB5441B81E855B35EB50417B14AEB724AB5441F6285C9F36EB50413333334320AB54417B14AE9732EB50417B14AE0720AB54413D0AD7A332EB5041F6285CDF20AB54417B14AE0732EB5041F6285CCF21AB5441F6285C6F30EB50417B14AEB721AB5441B81E855B2FEB5041B81E854B21AB54417B14AEC72FEB5041333333E31FAB54417B14AE6725EB5041A4703D0A1FAB5441B81E853B16EB5041333333831CAB54413D0AD78316EB5041F6285C4F1DAB54417B14AEA713EB5041333333D31DAB5441F6285CCF12EB5041F6285CEF1CAB54417B14AE3711EB5041F6285C2F1CAB5441F6285CEF10EB50417B14AEB71BAB54417B14AE8703EB50413333336319AB54413D0AD783FEEA5041F6285C4F17AB54417B14AE27FDEA50417B14AE5718AB5441B81E856BFBEA5041F6285C6F18AB54417B14AEF7F9EA5041333333D317AB54417B14AEE7F7EA5041B81E855B17AB5441B81E852BF3EA5041B81E851B15AB5441B81E850BF2EA5041F6285C1F14AB5441295C8FA2EBEA5041EC51B8CE12AB544111000000B81E857BEBEA5041F6285C0F1BAB54413D0AD723ECEA50417B14AEE71BAB5441F6285C5FECEA5041F6285CDF1DAB54413D0AD7F3EBEA5041B81E854B1EAB54413D0AD763EBEA5041F6285CCF1EAB5441B81E854BEBEA5041B81E85EB20AB5441F6285CDFEAEA50413333332322AB5441B81E85BBE7EA50417B14AE9723AB5441B81E856BE6EA5041B81E855B23AB5441B81E856BE6EA50417B14AE5721AB54413D0AD7B3E6EA5041B81E85FB1FAB54413D0AD7F3E5EA5041B81E851B1EAB54413D0AD723E6EA50417B14AE671DAB54417B14AE57E8EA5041F6285C8F1CAB5441F6285CFFE8EA5041B81E85AB1BAB54417B14AEF7EAEA5041333333D31AAB5441B81E857BEBEA5041F6285C0F1BAB54410B000000B81E85EB20EB50413333337326AB54413D0AD70321EB50413333338325AB5441B81E854B21EB50417B14AE4725AB5441F6285CCF21EB5041F6285C8F25AB5441B81E853B22EB50413333337326AB54413D0AD7B322EB50417B14AEF726AB5441B81E85DB21EB5041F6285C5F28AB54417B14AE5721EB50417B14AE6729AB54413D0AD70321EB5041333333E328AB54417B14AE6720EB5041B81E856B28AB5441B81E85EB20EB50413333337326AB544110000000B81E85AB1EEB5041F6285C3F24AB5441B81E851B1EEB5041B81E85CB22AB5441B81E854B1EEB50413333332322AB5441F6285CAF1DEB50413333339321AB5441F6285C8F1CEB5041F6285C3F21AB54413D0AD7531CEB5041B81E858B20AB54413D0AD7E31CEB50413333331320AB54417B14AEA71FEB5041F6285C8F1FAB5441B81E85CB1FEB50417B14AE0720AB54417B14AE7722EB50417B14AE3720AB5441B81E85CB22EB5041F6285C6F21AB5441B81E851B21EB5041F6285C9F21AB54417B14AE9720EB5041B81E856B22AB5441B81E85EB20EB5041F6285CAF23AB5441F6285C8F1FEB5041F6285C3F24AB5441B81E85AB1EEB5041F6285C3F24AB544107000000F6285C0F48EB5041F6285C0F27AB54413D0AD7C348EB50413333333327AB54413D0AD75349EB5041F6285C2F28AB54413D0AD76348EB5041333333E328AB5441F6285C4F47EB50413333331329AB5441F6285C1F47EB5041F6285C6F27AB5441F6285C0F48EB5041F6285C0F27AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905119 - 421767
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000014000000BC08CFC52A0251418D58328088C25441AE6871082B02514192576BBF8EC254418FC2F5882F025141000000A091C254417B14AE47310251418FC2F50893C25441000000803302514152B81E1595C25441295C8F7235025141AE47E1EA95C25441295C8F123702514114AE477197C25441295C8F9237025141A4703DEA96C25441AE47E16A3F02514148E17A649CC25441AE47E1EA470251410AD7A390A2C25441CDCCCCAC4D02514152B81E35A4C254418FC2F52856025141C3F5289CA4C25441E17A142E560251410AD7A3609DC2544148E17A044A025141E17A146E9AC25441713D0AF74A025141295C8F728BC25441AE47E10A3B025141E17A14DE88C254419A9999B93A025141A4703D0A84C25441713D0AD72D02514152B81ED582C2544185EB51182C025141666666D688C25441BC08CFC52A0251418D58328088C25441
+</a>
+
+<b>
+010600000001000000010300000001000000150000008FC2F52856025141C3F5289CA4C25441E17A142E560251410AD7A3609DC2544148E17A044A025141E17A146E9AC25441713D0AF74A025141295C8F728BC25441AE47E10A3B025141E17A14DE88C25441365BBEF23A025141DBA5176F87C254417317721D2D0251410C9006D885C2544148E17A642C02514185EB51D888C2544164AD5F102B025141285EFC9C8EC254419A9999192F025141713D0A0791C254413D0AD70332025141F6285CDF93C25441E19189853202514114771E2E94C25441C126103A35025141141CA8D295C25441295C8F7235025141AE47E1EA95C2544116F4019135025141C834740796C25441B583F55F37025141CB06952097C25441295C8F9237025141A4703DEA96C25441AE47E16A3F02514148E17A649CC25441AE47E1EA470251410AD7A390A2C25441CDCCCCAC4D02514152B81E35A4C254418FC2F52856025141C3F5289CA4C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 5242358
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441F6306C92735F514101C9CD78209454417C58F7C17F5F514130CD1D9825945441ED7D8F54935F5141FF1587552C9454417A8C724F9B5F5141BB8EE3F92E945441C6C6F8119A5F5141D81105D82D945441C8C62A70935F514154D16DB72A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B945441BF2BC22BE35F51410D18E4754F945441BAC767B4E35F514129F57ED74F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441A0719D4B02605141E7FD7FF1649454419EF0F19808605141D7DCB2F7689454412DC905FD0D605141D5EB54DA6B94544146C71D410E6051419D188E1F6D945441381692450C605141A5E0420E6C945441BDE45E18066051417A1AD19F6894544109C1AA16FE5F51414BA3D335639454415B86CD21F95F51418C5D09F9639454417641524802605141EEDDB02A68945441A63DCC470B6051415296A36D6D945441904908F30D605141D50A0FF46E945441B0ED63261A6051410F820C5E74945441F2A799E91A605141174AC14C73945441B2C248DD0E605141E2361E5A6D9454418CE5AD7B0E6051413581BDFA6B9454414A6A59131360514171B5C65B6E9454411434D8CD2760514147512D9F779454410CB1D5B53A60514198E542717F94544192F612504D6051412F8EE7F88594544164A65B595260514171B24B6E87945441A2A60849556051417E122919889454417172DE685D6051419043CAC4899454416390222E63605141296D1AFF89945441FDD8E8FC6B605141B205EBD48A94544108F85E9174605141A3746B708B9454410B9880D876605141C966FB5C8B945441A24025607D605141A3746B708B94544179AF3B3B7D6051415756624F8C94544155ABEB1B78605141C5FA2F5D8C9454415E9275456D605141CE7B90FC8B945441BD34E6D0606051410FB616BF8A9454416C133AA15F605141CE7B90FC8B9454414BF6DD9063605141DF3034A28C945441E9B964316C605141F0E5D7478D945441D851ACC670605141F0E5D7478D9454417BAF6D9976605141540945B68D94544152B81E557D6051417B14AE578D94544148E17A947E6051413D0AD7938D9454410AD7A3E07F6051411F85EBD18D9454415C8FC2D581605141F6285C2F8E9454418FC2F5788760514114AE47E18D9454411F85EBF18C605141D7A3704D8D9454413333338395605141000000708C945441F6285CAF9C60514185EB51B88B94544166666686A1605141A4703D2A8B94544152B81E85A5605141EC51B8BE8A94544133333313AA6051411F85EB518A945441D7A370FDAD605141EC51B8EE8994544133333353B26051415C8FC27589945441713D0A97B66051411F85EB018994544133333323BB605141CDCCCC7C889454413D0AD763BF6051415C8FC2158894544185EB5198C360514148E17AA487945441F6285C3FC8605141CDCCCC2C879454419A999919CC60514114AE47D186945441AE47E15AD060514152B81E5586945441EC51B88ED46051419A9999D985945441713D0AE7D86051410AD7A3608594544114AE47F1DC605141CDCCCCEC84945441F6285C3FE16051415C8FC285849454411F5E7C41EA6051414AEE0DA183945441C5085BADEE6051410B820517839454413F157D69F76051413A396AFB829454416BC4618D0D61514138C0CA9985945441D5652BDD1561514171B24B6E87945441E6A52C9922615141640BB99D8C9454415A690C2422615141769B227B8A94544192D61063206151418EC731E1889454414208E94911615141960A6A3A84945441B4213B690D615141B892DBAE8394544189E9A74307615141B0DFF84782945441C889253202615141E917BECB8194544100281440F7605141D8621A2681945441924F9946E260514167712F7F8294544191917DBDE26051414E40345781945441F6BFF1EFE760514120D1E3EE809454410818237CEA60514138DF23CF80945441344AF6F6EE605141068C835A80945441866E595EF36051414870A333809454418CAE9CECF76051418954C30C8094544158DA50C5FD605141C5A76381809454411666E3560161514179C343A880945441D060F683056151416A32C4438194544195BC19390A6151418093D4CB81945441F9111E4C106151416171D50283945441E7FFF23417615141CBE7A60F85945441C5CCFA2322615141322E09408894544114513C4424615141322E0940889454416866FDC8256151415820992C88945441C67BBE4D276151416411F74985945441D9AC5FF928615141558077E585945441B7EA3EE9276151416E81A9B488945441E93DDF5D286151414F5FAAEB899454417576D17A2B615141B9D57BF88B9454415D43D96936615141916240599294544152013F763E61514115DA433597945441315E94FA45615141C3D456629B9454412A496805486151411E055F7C9C94544103CA8B6150615141F6D6BA00A1945441A2331F2A55615141B892BC6EA3945441E4A854FC60615141EE1953D5A89454412396BD2561615141807585C7A894544159CCFC3868615141616C02A2AB94544154AB2F3F6C61514159AB1361AD945441BAF1916F6F615141BC51544AAE9454411CA7743B73615141D982F5F5AF945441F5E2FCC57E615141EF53B8E8B3945441D6DF73918861514118E6691CB694544192EA5A709261514192EDBA8DB7945441D4CACC7EAB6151410CF50BFFB89454412532FD6FBA615141FFB5B82BB9945441D2C333A7BA6151413EA32155B99454416CB15D2FC361514122561C87B9945441ECD5CDCFD96151414DD92BD8B8945441400A05E9E36151415C6AAB3CB894544160980852FF61514159CA89F5B5945441783EC7C112625141588C3A5FB494544138211FE81E62514178EC88BEB4945441E52AD4F72562514118E6691CB6945441DDE2CC562D625141E3001586B89454418C836E7834625141DD418DD1BA945441BC04276440625141920C3122C09454418E701ECB4A62514194BBF44BC59454413B7AD3DA516251418E9A2752C9945441896EC76557625141B0CCFACCCD9454419C3B955D5E62514135892E22D5945441846C7000646251412E2331AFD6945441B43E65C26A6251417C17253ADC9454413535BDEB7562514146C22D60E894544193BA30DB7A6251412DE07125EE945441A90F07A283625141ECF2B345FA945441549B2CF3866251411D14FDF3FF945441E68D576C846251415E80A0A50295544198288CE08A6251414C6E758E09955441D83AC4309662514170FECF5C18955441C9C8BA609F6251411A87D9B92595544188352E44A8625141B9DC243B2F9554414CB75589AC6251410DE81ED832955441CE7D667AB062514192DAF6F635955441D5364F8AB76251411B7540BA3A955441E2C3706CBF625141765473293F95544137CF6A09C3625141E39ED9A340955441E28DD0E7CB625141954CC816449554413699CA84CF62514105C3F5BE449554415C655844D5625141136B676346955441BEFD73C3E0625141B19CAB5F47955441BEAC837CF362514179E1940B47955441BD76E3F7FF625141AAC8728D4695544134A6F9AF07635141136B67634695544145A5ECB11D635141A3F439BB459554416F9D419F22635141136B676346955441AE1141032A635141E28389E146955441FB2DB20B336351417D0D5C3946955441F07DF93C3F6351415914D95E469554414AA1A471506351417639236745955441621376915E635141A72001E9449554414E7FF24965635141AC5E78FF44955441D5E0249773635141FEEEBCEC4395544130A507447E635141A72001E9449554415C8FC2A5816351418FC2F5C8459554413D0AD733856351410AD7A3704595544185EB514888635141C3F5285C4595544148E17AC48E6351411F85EB4145955441F6285CCF946351410AD7A300459554410AD7A3909A635141CDCCCCBC4495544152B81EE5A06351418FC2F56844955441AE47E1EAA16351410000006044955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E84EAE76B4635141B9A684B63B955441854A52EEC16351415330570E3B955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441C1CEFFD0EA6351418AA9CC2C5E955441AE83EA4DEA635141FD4AFD5E5F95544157FAD8EBEB6351417AFFF63060955441760C703DF263514129F0A66463955441A7E5B4B4F4635141DE8FCD8C649554417E49E925F5635141A9110D8663955441FFE6A50603645141D86E324243955441560FE0C0096451413D384340459554417FEB9268FC63514125A2A0A663955441CEC04DC5FA635141FAE7CBB7679554412CBB87E3FD6351416B64E04C699554411072B0C9066451412D0E3FC76D9554410F922B580D645141866AD8276B95544175EEAD9216645141C10069B751955441FFAFFCB011645141E19C04AF4C9554410E2D5F280B64514111E7F928459554411996F53C036451412EA0C0C842955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441BB8B07A2196451414C267EB746955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB51483695544160E274B708645141B9C1D4783595544113ABB3EC0564514192DAF6F635955441C99FB94F026451415A1FE0A2359554416EC086E0FD635141534BA7D0349554418A2BBAEBFA635141EAA8B2FA34955441FE64A9FAF66351412264C94E35955441E214C6B1F3635141B9C1D4783595544122BF659AEE635141F17CEBCC35955441A0F854A9EA635141C0950D4B3695544157DD9903E5635141622CF66E369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544166666666B46351415C8FC2653B9554417B14AE07AF635141EC51B80E3C9554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441550555FA9C6351411486B725409554415DF4DD8E976351418BD01DA0419554416BD2EFB78C635141F0464B484295544150B8ACF37C6351417D28ACFB3F955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554410AD7A3B06A635141666666163F95544152B81E45676351415C8FC2453F955441A4703DDA63635141333333633F95544100000090606351415C8FC2853F9554418FC2F5685D635141CDCCCCBC3F95544152B81EB559635141AE47E1DA3F9554419A9999695663514185EB51F83F9554411F85EBF15263514185EB511840955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441F6285C4F0A6351410AD7A3D042955441C3F5286C026351413D0AD7234395544114AE47A1FE62514100000040439554410AD7A3E0F9625141CDCCCC6C439554410AD7A350F562514114AE47A14395544185EB5108F16251413D0AD7C3439554418FC2F568EC625141EC51B8FE43955441A4703D9AE76251417B14AE07449554413D0AD733E362514185EB5168439554413D0AD7A3DE6251419A9999D942955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF104955441E17A143E83625141B81E856BF59454419A9999797E625141666666E6EE945441CDCCCC8C7A6251410AD7A380E99454419A9999497662514148E17A94E3945441AE47E1DA71625141295C8F72DE945441D7A370ED6C625141CDCCCCDCD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441E17A140E3B6251410AD7A300B894544148E17AC4376251413D0AD753B99454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB59454419A9999392962514185EB51B8B3945441AE47E1DA21625141E17A147EB2945441C3F5284C196251418FC2F518B2945441A4703DAA116251418FC2F598B1945441D7A3708D0A6251411F85EB01B2945441CDCCCC5C0662514133333333B294544100000010026251410AD7A380B2945441F6285C4FF761514114AE4711B394544152B81E05F3615141AE47E14AB3945441B81E85CBEF6151410AD7A370B3945441E17A145EED615141AE47E18AB394544114AE4741EB6151418FC2F598B394544133333383E8615141A4703DEAB3945441CDCCCC0CE06151413D0AD793B4945441CDCCCC4CDC615141CDCCCCDCB494544185EB51E8D861514133333313B5945441713D0AC7CE61514166666606B69454413D0AD773BE615141E17A146EB694544152B81E05B8615141295C8FA2B694544133333383B1615141713D0AD7B6945441713D0A17AA615141D7A3705DB6945441333333B3A1615141EC51B8DEB5945441E17A14CE9A6151413D0AD773B5945441D7A3707D97615141B81E85FBB4945441713D0A379461514133333393B4945441F6285CAF8A615141C3F5284CB3945441A4703D4A8261514114AE47C1B0945441AE47E1CA7E615141B81E858BAF945441295C8F627B61514133333363AE945441D7A3701D7861514185EB5148AD9454417B14AEC774615141CDCCCC1CAC9454417B14AEB7706151415C8FC2B5AA945441AE47E14A6D61514152B81E95A9945441295C8F52696151419A9999E9A7945441D7A370DD656151410AD7A380A69454415C8FC25562615141B81E850BA5945441D7A3700D5F6151417B14AEA7A39454418FC2F5285C6151413D0AD723A2945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441295C8F724161514152B81EB59394544114AE47413E615141295C8F0292945441D7A370ED3A61514133333333909454413D0AD7B3376151415C8FC2858E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441CDCCCC8C2B615141000000F087945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F945441000000400F615141666666967E945441E17A14FE0A615141E17A14FE7D9454415C8FC28506615141EC51B84E7D945441C3F5281C02615141333333737C9454413D0AD7E3FD6051418FC2F5587C9454410AD7A380F9605141C3F5286C7C945441A4703D7AF5605141666666867C9454417B14AE47F16051413D0AD7837C945441666666C6EC60514185EB51A87C9454410AD7A340E8605141D7A3701D7D94544185EB51E8E36051419A9999997D9454411F85EBA1DF60514114AE47F17D945441295C8FA2DB605141F6285C4F7E945441A4703D4AD76051410AD7A3C07E945441E17A142ED360514148E17A247F94544114AE47D1CE605141713D0A777F945441A4703DDACA6051417B14AED77F945441F6285C3FC660514148E17A348094544133333313C260514185EB51A880945441295C8FD2BD6051417B14AE078194544114AE4741B9605141CDCCCC6C81945441D7A3700DB56051413D0AD7D3819454418FC2F5C8B06051417B14AE3782945441A4703DBAAC605141B81E85AB82945441F6285C3FA86051410000001083945441CDCCCC3CA4605141EC51B86E8394544185EB51689F60514114AE47C183945441C3F5289C97605141CDCCCCCC849454415113DC0D8E605141359F2FC985945441F3BB5DF7856051414654D36E86945441E1ED437B7A605141F57F127A8A945441B54F87CB7E605141F57F127A8A9454411973F4397F6051410635B61F8B945441AE0206768D6051417626A1C6899454412DA9626493605141EE4BCF7389945441999AE94E9F6051413A86553688945441C8BD2F81A260514100DB68CB8794544117B2230CA8605141B395386A87945441C259A3FDBD605141D2B737338694544108AC1EDCCD6051411C5D464D849454419F7339F8DC605141F3CA941982945441A022FD21E2605141A68564B88194544123EB3CD4E1605141092CA5A182945441064AE9BDDC605141B9B605648394544108AC1EDCCD605141E248B797859454414E92951AC1605141365E781C879454416A14739CBD6051418DA3A87D879454415F153FB9BB605141B02CE48287945441F38DCDDDB560514126CDF8B78794544197F9B70BAE60514100DB68CB879454414565A239A6605141D557597A889454415777CD509F605141A0D4492989945441B4DDCAAB9B605141D227EA9D899454411E35262495605141C2966A398A945441888C819C8E605141B205EBD48A945441A92F2C188760514162904B978B945441B8A135E87D60514178F15B1F8C945441821E26977E60514197135BE88A945441E08423F27A6051417121CBFB8A945441C683F12278605141562F3B0F8B945441700CFB7F85605141D2B7373386945441B7F271BE78605141040BD8A7869454410AD7A35072605141EC51B86E86945441E17A149E6D6051418FC2F52886945441444FADD05B60514168416626849454414F0F809C4660514113E8FC427F945441B87F3C023F6051410E01D7D57C945441D89C66B441605141768CCA507F94544165AB49AF496051410E4EC2108294544193CAD0E3586051417D0DF991859454417894CC9E58605141F098EC0C889454413A656680526051415E9D65FB85945441657B40104760514159B48EEE82945441BA9AC4673A6051411BD9360D7E94544131B8053F32605141353155D97A945441EC6E5ABB26605141ADD31246769454418B95455A1D605141DBF3E5007294544126099B731A6051418FC0A3716C9454414ADA24FE16605141D97747856A945441A2F314F90C6051410F18FB4B63945441DCECB8E80160514153C068B05B945441F780D03AEB5F5141CE7A86B84C9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441EC51B89E9B5F514152B81E25279454415C8FC2958A5F514185EB51D820945441C3F528AC785F5141E17A145E1A945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C9454410AD7A390505F514185EB51F80A945441AE47E1FA4C5F51413D0AD79309945441C3F5289C4B5F5141A4703D0A09945441295C8FC2495F51415C8FC26508945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA201945441F6285CBF345F514185EB51480094544135B4811E305F5141996F569CFE9354411F85EB012D5F5141F6285C3FFD935441713D0A67295F51417B14AED7FB93544148E17A14255F5141B81E857BFA9354411F85EB911D5F5141CDCCCC8CF793544148E17A94195F51415C8FC215F69354411F85EB01165F514152B81EB5F49354410AD7A370125F5141EC51B85EF3935441B81E854B0F5F51415C8FC225F293544133333393095F5141295C8F12F09354415C8FC205035F514152B81E85ED9354418FC2F528005F51413D0AD773EC93544166666666FB5E5141E17A149EEA9354415C8FC2C5F75E5141EC51B84EE993544114AE4741F65E51413D0AD7C3E89354411F85EBC1F35E5141C3F528BCE793544148E17A34F15E5141666666D6E693544114AE47F1EC5E5141E17A142EE59354417B14AED7EA5E5141F6285C7FE4935441F6285C9FE85E5141D7A370ADE39354411F85EBB1E65E5141000000F0E2935441F6285CCFE45E5141AE47E12AE2935441CDCCCCCCE25E51419A999969E1935441615D8B93E15E5141464471ECE0935441F25B97BBE05E5141D223BC5FE3935441FFCFDD42DF5E5141C55D35EAE593544160D6FCE4DD5E5141FBE0443BE5935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E29354415484426FDF5E51419CAF4A2BE09354410544B31FE15E5141678628BEE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441713D0AF7D65E51417B14AEF7DC935441295C8F22D45E5141A4703DFADB935441AE47E10AD15E51418FC2F5B8DA935441295C8FE2CD5E51418FC2F588D99354415C8FC275C85E51410AD7A380D7935441AE47E15AC55E5141295C8F72D693544152B81EE5BB5E5141A4703DCAD29354418FC2F588B75E5141D7A3702DD1935441E17A14BEB35E5141A4703DBACF935441EC51B8BEB25E5141E17A145ECF9354419A9999F9AE5E514185EB51E8CD93544114AE4721AC5E51411F85EBE1CC9354418FC2F528A65E51411F85EB91CA93544152B81EC5A15E514114AE47F1C8935441C3F5285C9E5E5141713D0AA7C79354411F85EB119B5E514133333363C6935441713D0A47985E51411F85EB51C59354417B14AE97955E51418FC2F548C4935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441333333E3675E5141D7A370EDB293544114AE47D15A5E5141713D0A17AE935441295C8FC2585E514152B81E75AD935441A4703D3A4E5E514152B81E55A99354419A9999394A5E51410AD7A3D0A79354415C8FC285425E51411F85EBF1A49354411F85EBD13B5E5141AE47E17AA293544185EB5108375E5141333333F3A09354413BAA5A3E315E514137AE1A039F935441FBF066792B5E5141B12066499D9354419F33F136275E5141FD5AEC0B9C93544188CB9C881E5E5141A505FDD59993544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB519894935441295C8F12D05D5141713D0AC794935441666666B6CB5D5141A4703DEA9493544135CAA38EC35D51413DB413059593544185EB51D8C15D51418FC2F50895935441295C8F32BE5D51413D0AD72395935441AE47E11AB35D51418FC2F548959354413D0AD723B05D51410000006095935441A4703D6AA55D5141CDCCCCAC959354410AD7A360A25D51413D0AD7C3959354415C8FC285945D514152B81E1596935441666666E6925D51413D0AD723969354415C8FC265925D5141AE47E13A95935441931F0CD3885D51419728336994935441667860DA885D5141A971678B949354415AAF9464875D514122D778A394935441758C2FC6875D5141DB336CD390935441A895D98D865D51416BD4E6BF909354414CFE0869855D5141CA287F8B969354415F2D335F825D5141E4AAA8B59693544195D1EDE6725D5141CCA5E5489593544157929D00655D5141507CC8F3939354418B9B47C8635D514137CB3CF8919354412E0477A3625D5141739C9BAE8F9354410C8B36B9615D5141739C9BAE8F935441F511F6CE605D51410FC29230939354413429AC3C585D514154E327079293544122CF622F505D5141545BA6D58F935441747655E6445D5141993F8B248D9354412AE340B6395D5141793AB88689935441CD6854002D5D5141F9BC05878493544188AF809A265D51419066ACAB81935441F1788143265D51415F1F42E48193544114AE47E1245D5141CDCCCC2C83935441C3F528AC245D5141F6285CBF8393544104E3229E245D51410254089B86935441D7A3709D245D5141F6285CBF869354410E9DE4A4245D5141F5B080C2869354419272DCA4245D5141D83AE3C586935441747AE289245D514102028AC886935441BDB90789245D5141C7962BD586935441BFB6402F2D5D51413A259E448A935441EFE00C15305D514180432E7F8A93544176950518395D51415E8C16298E9354412C6CFCD4435D51417DE9CC3292935441CA9BEC814E5D514112731E2C9593544190D486F6575D514191832F3B979354419F0A8F875D5D51416C2B116F9A935441CBD000F6605D51411D45CC459B935441C8F12214655D5141C1ADFB209A935441A2990448685D51417FF3C55D999354417F5AA9506C5D5141CC227672999354419BB93249795D514157EA1B969A935441A68BE0627F5D51410804D76C9B935441EA4F0F51875D51414E2267A79B935441DF2DF915905D51414E2267A79B9354410690100D945D514178B08D049E93544107158DA2975D5141734C338D9E9354412F1E376A965D514169FF01099C9354415A5F2C43965D514198A451599B935441DEDD90F49E5D5141E2263C0B9B9354414B5E3826A35D51410D6831E49A93544150470F33A65D51419D08ACD09A935441F481EC27AB5D5141C1ADFB209A935441AC09FBA0B25D51410F94404A999354415F2DAFA2BA5D5141E5524B7199935441FE033220C05D514159162BFC98935441E1CC3572C75D5141E5524B7199935441B0CD84D5CF5D51417B8F6BE69993544108DFE447DA5D51410B30E6D299935441C624AF84D95D51419F34BB3699935441EAA7E899E15D5141A5D060BF99935441AD510D4EE05D51415286C11E9B9354412B621E5DE25D51414ABE0C309C935441189A696EE35D51410D6831E49A935441F4ECA64BF15D514145C9B5D49B9354419DD758601A5E51413CFF2E14A1935441BCE35A621A5E51415C310CF2A0935441A8825B8B1C5E5141A79A7458A193544195A95725305E51410A696CD3A59354415AED67BF475E51417A5A19BFAD935441A737ABF24A5E5141E647366DAF935441F4A2DB774E5E5141120EC558B1935441EC51B8CE4F5E51410AD7A300B3935441AE47E14A555E5141C3F5286CB293544148E17AD4575E5141295C8F52B393544148E17A145F5E5141B81E85FBB5935441F6285CEF595E51415C8FC2D5C6935441264ED56D595E51410C587663C8935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE93544166666626665E514114AE4781B8935441AE47E19A675E5141713D0A17B9935441C0E40AA8695E51411DA27CD1B993544109A787866D5E51416D7EF435BB93544114F5176A6A5E51419F213B1EB79354419A545F9E745E5141794808D3BC93544197FAFD517C5E51411336B443BF935441E20165997F5E5141C0EB14A3C0935441898213E8815E51418C05D1A0C193544166FB4CB5845E5141E9793B00C393544171CDFACE8A5E51416326F297C59354412F3474728D5E514115C0F972C693544106293E788E5E514130E231D4C7935441067629B3935E5141109353FCC9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC93544114AE4721CA5E51415C8FC2D5DE935441AE47E16ACD5E514133333303E09354413D0AD783D05E51411F85EB31E1935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354417B14AE77D85E514152B81E35E49354416F69AF8CDA5E5141FD112BE4E4935441A96FF248D85E514117951A64EA935441BA712294D85E5141C714E656EC93544103EBB6D9DA5E5141096E834CEC935441BA8CF6D2DB5E5141FA4869EBEA935441FE03B2A0DD5E51411E66B700E693544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354418644B3B5ED5E51410DE22068EC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F793544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC935441C3F528AC185F5141D7A3700DFE935441250001C8145F5141A107C86103945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E318945441713D0A27165F514114AE47C10E945441295C8F02205F51413D0AD7530194544164AA4760205F51412542C2EE00945441C8CD93B9205F51410525FB88009454418FC2F548295F514185EB51E803945441AE47E1FA295F514185EB513804945441EA7C720A2D5F5141B6F1A95E05945441913E16292A5F51414349B595039454415AAFD0B5235F51412B64F6A9009454414E9A448E195F51419A0624CDFC9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B421794544101BEDBEB625F51417171B97B1894544177FC34C9655F514105C0F8761994544101030000000100000005000000631EA276255D5141021E8369829354411DC4753E245D514194988E3483935441B81673AF245D514168C2DD57839354418E31BF90255D514193A7917682935441631EA276255D5141021E83698293544101030000000100000004000000CB19A540195F5141671B8B5CFC935441EBB03C1F195F5141B09B0A91FC935441AA50D52C195F51412D844D96FC935441CB19A540195F5141671B8B5CFC935441010300000001000000040000000544B31FE15E5141678628BEE0935441615D8B93E15E5141464471ECE09354416D09AF95E15E5141DD683AE6E09354410544B31FE15E5141678628BEE0935441
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441AD2E8ACE776251411602D441E994544118F9273A7C625141997C79D1EE945441DEB55F7F84625141978F4183F994544126D0F5C6876251414D8873ED00955441E68D576C846251415E80A0A50295544140DBECBE8A625141F18D766A0995544172A59E589662514152DFC79618955441E90372CD9E625141333A9EE32495544123BE327D9F62514173094BD825955441788DA758A16251412418BBD427955441C793CFB6A2625141D0432D4B29955441C53D35E4A46251415C4C3D9F2B955441B0AB2CB1A762514101C3F09D2E955441EF92368AA86251415C0467762F9554411074592AAC625141769BBF8732955441E2291E89B06251418BD7E30036955441595889CEB7625141F927A1E03A955441D28BDCF0BF6251410C6C9F5F3F9554417A7E037DC1625141F75AAF0140955441F3AB3B3CC462514146D82A1B4195544123B083FDC66251419284712D42955441C8A221D2CB625141D39B590E4495544198BD914DCF6251418B6CEBB44495544119678018D162514100474E32459554415B98E221D562514159E78E5946955441E2ED39F7D56251410594BC724695544120F67C45DA625141345A37D14695544165394998DE6251411FA91530479554418D6877AEE2625141EE5B0E57479554418B96936FE7625141490AB441479554412FE553E7EB6251415331A32D479554412E5616CEEF62514128891D1C47955441919FCBF0F462514102E2E2FC46955441ACEC754CFB625141B3E5A2BC46955441998C59C40C635141293A963C469554418745772C1D63514148D135BF459554417F42A8D7216351410670CA4846955441A059CCB6226351415D33F964469554414E46F22B246351417898D97D46955441531F6BAA286351419D518CCA46955441AFDFFE322B635141F06672CB469554415706F8342D635141A52711A6469554416CEA9BB3326351416912C43F46955441490B9F3A3863514199F64B494695544107B2414D3B6351418AA3BE5246955441BF1948F53F635141069E7B5446955441D038C19945635141D9963F03469554411FEF9D9349635141D87601CA4595544115508DF84D63514170D0BD8A45955441CB3435AD53635141FBE0444A459554414E1864FA5D635141493846EE44955441EE36756765635141DC7841FD44955441B1B5864B6B635141F78A178C449554412CEAFC4C6F6351414E77243F4495544129DC3EA373635141ABE6DAED43955441825344FF7863514138D2806C4495544188BED6067E635141FC225BE34495544187E7FCD0816351418B9C0F8F459554413A788513856351410AEECB3846955441CDED791D886351412A2B19B846955441FE72375D8D6351413FACD8C44795544179728F9B93635141F3F66F6048955441150CBC05996351413D4F51184995544106DC10E19E635141B31F4EB5489554413D2976EDA06351411D271EBE4595544192F8A6D1A2635141CC3B584D44955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E453F8D3AF6351414F257F5F3B955441092E1EBBB263514130DFB02939955441E6F32383B4635141A2860643399554410E45A4FFB86351414F257F5F3B95544103130FA7BC635141EF7D41503B95544169D154C8C0635141E87AAE1C3B955441E664BB76C263514149AFFAFC3A955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441AC83EA4DEA635141FA4AFD5E5F955441A5E5B4B4F4635141E18FCD8C64955441FAE6A50603645141DD6E32424395544187DD39E00864514100A4BAFD44955441F03201C0096451410FE63E4245955441E4B8787A06645141345227B64C955441BA2011B800645141CB4EDCD459955441D3C04DC5FA635141F5E7CBB7679554410E72B0C906645141280E3FC76D9554410A922B580D645141856AD8276B95544170EEAD9216645141C00069B7519554415A4A926E1164514147188A624C95544138CCC41D0B645141CD96CB25459554413B990B4703645141B23AC7CB42955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441E683B3B219645141FEEF69C146955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB514836955441B9EF434509645141E53824983595544160E274B708645141B9C1D47835955441471127C607645141C1046AA335955441682B482506645141EBC3FAEC35955441BA5289AF0364514147BBDBC23595544195D65DFA01645141D87E1193359554411717DE24FE635141F82B4FDD349554419CACCB51FB6351414D0507F534955441BB25F92DFA635141B7BE820A35955441F3218316F66351414DB4315A359554412110BF02F36351413B881F843595544114C35F7CEE635141743CACD03595544123E1B725EA6351412771524E369554418693B0CBE46351413E12A370369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544100C39723B56351419B2DCB8038955441214B70B7B4635141FB22E31F389554416F791592B2635141B81C909337955441E8D739D5B063514106F9B6433895544159D89982AF6351417582CBD9389554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441054CE6CE9E63514102F6AC4C3F955441550555FA9C6351411486B725409554413922674197635141BFAECFA441955441F16B41F48C6351412B6CA344429554419167132083635141B8CC25E2409554411700B8637D635141F522030C40955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554417E712BBD6A6351411A6566AC3E955441B84DE1A96663514169A69C3B3E955441471C36D161635141B9E7D2CA3D955441D5EA8AF85C635141BC8501743E955441BDE7DBAC58635141C3D498C83E955441A4D1F25E55635141739362393F95544196BB09115263514123522CAA3F955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441AAFF2272ED62514158DCA68541955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF10495544138A8F958886251419899C05EF9945441EF8D63118562514136BB243CF59454417BD7C35C80625141A272FAF5EE94544128BD2D157D6251411DE456AFE9945441C6E810CE78625141A45F3244E494544149466FD07362514118F98A6BDE945441BFE946D36D6251418A7EE5DBD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441D001B4FF3B62514154E53976B8945441D527F5FD3A625141D82ECA35B8945441288CDA453A625141871273EEB79454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB594544174B7A968296251415BAA7DCFB29454412984C2491E62514129B74A38B094544122C4D5EA18625141556AD555AF945441E7D0964511625141EF837B35AF9454413DB7D2C20462514190DDC307B09454415D6AC807FB615141C8D0735BB19454413E9489C4F261514102DFE5EDB2945441F365F5C5EF61514102DFE5EDB2945441A155DE59EC615141F2106137B294544147634480E8615141FB06E25BB2945441A24216A8E16151411B996CEDB394544130A074AADC6151411CA3EBC8B3945441D5A35BF5D861514112AD6AA4B3945441D47C958CCE615141237BEF5AB4945441411724B9BD6151413453F3ECB4945441C7888072B86151413453F3ECB494544113A44CBFB06151412B67F1A3B49454416C6F2030AA61514133497411B5945441A8BC67C6A1615141237BEF5AB49454411C56C0ED9B615141258FED11B4945441B97724CB9761514114C1685BB39454414DA307849361514114C1685BB39454414883E36E8A615141939D279CB19454417376FEE982615141F9435C86AF94544170B694CE7E615141F203BA93AE9454412FC3DEF37A615141552AB01FAD945441C49CDC5977615141F2C3945DAC94544160F69B61746151411E771F7BAB945441B8DC6CB770615141E7836F27AA9454411AC33D0D6D615141BA90BFD3A8945441E3CF873269615141B5903C90A7945441437639D9656151414CEA7EDBA5945441A41CEB7F6261514114F7CE87A4945441A9DC42065F615141DC031F34A39454410703B64E5C615141735D617FA1945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441C0F3C3EA416151410F33C9A593945441151836A33E615141523721C29194544166E186093B615141F6B937838F945441A3B8B8AF37615141F08C110D8E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441D9DC26E32B615141D67D57E287945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F9454418BCF93510F615141C81A7DD37D945441E93A1CDF0A6151419366FF9C7C945441D48AE5F305615141CB2F81AB7B945441DAB4EDA301615141BB91C1777B9454418661F60EFD6051416214C2327B94544186ED3E8BF8605141FE96C2ED7A9454413ED6C65DF4605141473A83977A945441593C4E75F060514185A1C4D979945441492AD7BDEB60514190DD43417A94544123A06137E6605141957B03757A9454411AE32080E1605141321A3DCC7B9454410E02233FDF605141C70745F17B945441073FD4C0DB6051416BE4A79E7C94544192DE8167D76051419C8C09037D9454415A73D184D36051415D1FAF547E94544172A2A1C6CF60514132E04F827E945441A11EB21ACC605141B01451CB7E94544117FA3BDDC66051412E4952147F945441804CA971C2605141DC25B5C17F94544179C5360FBE6051413376788A80945441ADD844D1B96051417C6B1A0181945441806D94EEB56051413E3A9C6E819454413AE39ED5B0605141862F3EE58194544134205057AD605141B7D79F498294544110E39A50A8605141FFCC41C082945441D085CBADA4605141DD7F01AE82945441B2753C1DA16051415BB402F782945441D78775799F605141ECDA22008394544122CA537D976051415186071B84945441921E6BDD8D605141CFBA086484945441BA1309CF8560514117B0AADA849454413285BB99826051411C47A848849454414E4B89497E605141822E697F849454411012D6677860514114032600859454410AE168B871605141D58EC74C8594544154C834D46D6051415E7784B3849454417D674BC0636051412F1A6E808494544134208CC25F6051416E8ECC3384945441225785DF5B605141C54D13288494544117075DC55A605141C81973678394544171057161566051410F5F4BE881945441067415B746605141EA74A21D7E9454419EE08F653C605141E618F7D478945441F613480C36605141A710A16F759454413A26A6293160514188B6A7BD729454411E20F1B22060514128FA93DA6C945441337939EC156051414E8449C36894544177BC2AF00E60514144B1E87864945441C5F388B8086051418CE10585609454416F238A7908605141FBE489FF64945441584FD4540E605141ED3516C167945441DA1A326E12605141D9E15A0F6A9454414DF0744E1D605141E2B4BB596E945441BD506349266051417470D90A72945441BF524AC62B6051411314B9097494544168561DA735605141C92CEDED779454411ACD5DF03B605141EE1696B87B945441E78EBEF2416051417A4246667F945441BE472216496051418AA6FBDB81945441EA3B62354E605141FB2DB21B8394544160B0BAE358605141F464C4928594544199A1D09F586051415320940388945441766C633153605141A6813A3786945441EBCA828B47605141EF2F6D0F839454412DFD95A0396051411AD707BF7D9454412B2E2FC632605141F512630E7B945441B50E77D329605141CBE8D180779454411E07B3F3276051419E3F2FC2769454417345AB601D605141F790CF0372945441C9D64A3817605141E6E3418C6F945441D45C32270860514122C9262B66945441D7A3707D08605141F6285C0F60945441AE47E10AED5F514148E17AD44D94544152B81E45EC5F51419A9999594D9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441C683D4E39B5F51417C6FE39A24945441A9FA326A8A5F5141237722711E9454410EFBD60F795F51419404F67319945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C94544165CC575C515F5141D7B507330A945441CB617BF64C5F5141F0208B8908945441F70FD6244B5F5141D6EB90D90794544193E793C4495F5141EDB0705407945441A105556B485F5141F5EEF6D106945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA2019454417FB97999345F51411D919014FF9354418DD6EEB6345F5141C50EF62EFE935441489D4AB2315F51414CB8A1B1FC93544107A7F0FB2E5F514129C3A174FB93544128C72EC72D5F51418EDC62EEFA9354416959D23C2B5F5141311619DAF9935441BED6A9AF295F51410D4A6031F993544169C92166265F514119D9DFCBF7935441C39A4AD5235F5141A365D5B4F69354417C56A34B1D5F514104D8D3EDF393544118B23801185F5141A5C570AEF1935441902EFA55145F5141EDF9D65BF093544196359AC0115F51412849F47DEF935441CBCA63F00C5F51415DC38EE0ED9354411C5E9014075F5141DC1061E9EB935441B0CF56CA015F5141216D0C23EA935441CFB39F0EFD5E5141BE7A66A0E89354413380A05EF75E5141017111F1E69354418694D94BF35E5141DA7E26BCE5935441081D175AEE5E5141D0D12C45E4935441B4C410B2EA5E5141B3D5E12FE39354417BB6568FE75E514156021442E29354413583915EE55E514154DEF39BE193544177E13FFDE15E5141DA294EC8E0935441615D8B93E15E5141464471ECE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441CDAF45D0D65E5141C15AF324DD9354410BD7C057D55E514192F5E7A7DC9354413A2E3605D45E5141839AA90FDC935441AE47E10AD15E51418FC2F5B8DA9354415F46ED77BE5E51414F2D6E43D2935441DA7C568FB65E5141D148D945CE935441D9CD50CEAA5E51414B6B3A44C993544160074876A25E5141D278B94EC7935441267C82889D5E51415D24C0E7C5935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441BB341329685E5141679FA42AB1935441B132B95E5B5E5141AE32CD71AB935441A3DC451B575E514126E69352AA93544163011F134E5E5141B3CA124BA7935441D85E72B0485E5141D2FBCA62A59354415588683A415E51417E3318A3A29354416663AD0E3B5E5141A9C9E5E5A09354415A1F81AE365E51413C591E00A0935441580C0D66305E51417E54016E9E935441A4703DBA2B5E51413D0AD7539D935441EAF51B5B255E51419B97BF929B935441713D0AC7205E51410AD7A3709A9354416FCD083E1E5E51413A1D6BC79993544150C356C3195E51411CEB64E79893544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB51989493544131EF0ECBD15D51412FBA82B291935441545E6174CB5D514107E90A9691935441A2ED9800C25D51414C8BFACE91935441A192271BB95D51411231C4CE909354413B05548BB15D51416914B9B292935441908DD789AA5D51412FBA82B291935441C98C9CA4A25D514191E530CF92935441916E1BBE945D5141E0CFD94092935441931F0CD3885D51419728336994935441667860DA885D5141A971678B9493544107AEF89C8A5D51413F8612FC95935441ECEDC10D925D5141E079D01A97935441E3ADAF88945D5141B6B5094E98935441C41F2A05975D5141B79E9FB298935441E74085D9975D5141B79E9FB298935441CCF10837A25D51413646007798935441FC9A3A0EAA5D51416B2BB49597935441D49661BCAD5D514116C24B2F97935441C03562E5AF5D514195315506979354410DA1926AB35D51414AA7FF4D96935441A798E0C6BA5D5141BFF51BD395935441C3E012C7C45D51413F8612FC9593544126AF0A42C95D5141F4FBBC4395935441BE83A32DCD5D514134234B06959354415B94BE60C85D51411580718B9693544120D8CEFADF5D5141F6FD846298935441AB89B275E05D514155E9D9F196935441B8AC67E6E35D5141362513259893544161A84580F15D514157A9C76C999354418E17BD2E055E5141839043AA9B93544118AA2C3F055E51414992501D9C935441E35F3843055E51412E48C8959B9354414CF2AD76125E51418F35E5439D935441719BDF4D1A5E5141F00115A09E9354416359B64E1A5E5141B63B9ABC9E9354410BE80959365E5141762C7EB7A4935441A8770E11405E5141786F98C7A7935441E16CE746605E514189526F59B393544153DA8F615F5E514186C1E5BDB493544143449E7A5A5E51415F055B0CC7935441FA17F788595E5141C7135C6DCA935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE935441E94E4744665E5141523DA144B8935441658333D75F5E5141F574A0EFB49354417AB573AC605E514148FAD3B4B3935441B800B615665E5141ACF0FADBB3935441988CFE026A5E514157075F51B593544168800117725E514156E67586B9935441480C4A04765E51419C37CC37BC935441FC7264027C5E5141D1F67B2ABF93544149D8B52F7F5E51410681D776C09354413CA4D467815E51416F1BBA69C19354416F522AE5835E5141ACC4409AC2935441F4B875FB875E5141E5307364C4935441AB741A098A5E5141D933D943C59354412F3474728D5E514115C0F972C69354410F9B65A48E5E51411F1967E6C79354416DDC689D935E5141A03E5BF3C9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC935441B87B7764C95E51418E716AE2DF93544129F1F3ADCB5E5141D3E2A3F0E09354411EB296ABCE5E5141FFE6E62BE29354413FB6D9E6CF5E5141D3E2A3F0E0935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354416F69AF8CDA5E5141FD112BE4E4935441A0C3DD9EDD5E5141A2A05012E6935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E293544146732864DF5E51415C0F346AE09354410A728673E15E51418AB04048E1935441F25B97BBE05E5141D223BC5FE393544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354413D0AD7D3E45E5141D7A3700DE99354416DFD97D0E65E5141988879D0E9935441E10C9B01E95E5141E72768A3EA935441DD293C6AED5E51413630C14BEC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F79354416AC9BC59125F514147AF6327F993544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC93544112DCE5FC185F51415920342AFD93544166167E90185F51419479F5C9FD9354413DB432AB145F51417A7EC73F03945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E3189454419F9AA20D135F51411011CC1A1C945441DA6C93AA245F514135CB889D029454415969F5F9245F514137D2C4FE01945441D2410D7A195F5141C18A1551FD9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B42179454417FA3DD176D5F5141EC58DDF71B945441A7C312D66F5F5141B0AEE7DE1C945441F3748B7D745F51419D18EBD91E9454414575A574785F51413756018220945441592284F57B5F5141B58FB2F82194544176E4424F7D5F5141B35E4E322294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B94544139C42A8EE35F514142CF05BB4F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441AB06401B03605141071316766594544114411897086051417C6384F6689454418CE5AD7B0E6051413581BDFA6B9454418973BB1813605141CA882E5E6E94544154FD6D4D20605141B839F84474945441BA0B58DB296051417D618D787894544171BB84A232605141333D1B1A7C94544136F0FA703860514184F8FC807E945441ED0CF6FB3F60514196E82E4B81945441EA26CE67486051410EB4ED3F8494544103FE194E4C605141A6D3599E85945441D4F712F2506051413C363E0687945441AE4CF2AB5260514184AB1181879454412D7BF1A8586051417864C9CA88945441D5F2DC695D605141634FD4C489945441E202311E62605141795D5EF489945441F731D10863605141DF51A1FD89945441F41804EB63605141DEAC03118A9454413982925765605141F89795338A9454419C0E49C36B605141412574CF8A9454414A351E516F605141855B40118B945441E23340A4746051410A59CA6F8B9454418BB9B3E07660514160CF135D8B945441A24025607D605141A3746B708B94544194D6827E88605141A16A326A8A94544113CF5BFC9E605141A7621B1C889454415BB094C5AE6051419A5D98A4869454419017D0F0B3605141AFB2B692869454413AFDE6FBC460514197AD331B8594544110CEE70FE3605141690BBE5081945441B29177A4E7605141A0C5CEF4809454415E54BF90EB605141AFA002B380945441D04F6913EE6051412394A7718094544129C2D964F2605141F9E83D3C80945441B1AEE3F5F460514178C30D2680945441CDAE7D0CF86051419D403F0F809454419F0DD218FA605141219B1A38809454414C0A5EC6FE60514147E0538C809454411666E3560161514179C343A880945441440A316304615141A56BC319819454411AC6DBEC07615141CA7B6A8981945441736BEDBC096151419A92CFBD819454410F9164120C61514163247D2A82945441FB9ADDA7106151419E450E1E8394544113D92268116151417E601A5783945441012254DB1A6151410EE72D20869454415119390D22615141810466398894544188DD35DB23615141322E094088945441E1D09BDA24615141CE67843888945441A82336CC256151412B1F7A26889454416C3A484B27615141898DA44E85945441B6359AE428615141521C302386945441B7EA3EE9276151416E81A9B4889454418F11DA5E28615141068D4FEC8994544173A72A762B615141786F58F78B945441127AC7E42D6151417B02F6608D94544147CFC81A35615141DD1ECC9591945441A311E2BE3E6151415A719E5D97945441A4FDF0A6466151417A3A51BF9B945441FFCF5D0B516151411EE2FC56A19454411A5B5FAF5561514113709DABA3945441E4AD657059615141E5FAAD62A5945441005AB1115D6151410F843F0BA7945441A3312294606151418F4DB8A5A89454415363BA6E61615141792AF5E4A8945441CE72388A66615141A53947F4AA945441AEBD89AB69615141277ED042AC945441F9173B1B6C615141153B7951AD94544143C7D0316E615141E0D78AEFAD9454412268D0726F61514108B9C14BAE9454419F9AA22D7361514107C5E0EFAF945441B23D25BF766151418665BF29B194544140D2F1A67B615141A6F65CD7B2945441A5A84EA07E615141754DD4DBB39454416D41AB0F80615141C79AD532B49454412A3B98698661514116425AA0B59454415F34BB8088615141E393A718B69454411B992C688B6151414F77A086B694544109B188B892615141C9CCE291B794544146FA82CBA96151412A12FCE5B8945441BF4ABA58B1615141888A8A10B99454412532FD6FBA615141FFB5B82BB994544176016DF4BA6151413D02E656B994544162523876C261514134C3DF82B994544101465D38CC615141E2494141B99454414345AACFD4615141834CD5FEB8945441356D753AE361514168642B47B894544136FA62A0FB61514172B51F44B69454413D06107812625141F7883F65B4945441F16F65FC17625141B2073F88B494544133BC5DE41E62514107776BBEB4945441F2FC733624625141BC0E70C5B5945441E52AD4F72562514118E6691CB694544155D7868828625141D515C1F3B6945441358E208B2862514193A7ACF4B6945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 5254527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441F6306C92735F514101C9CD78209454417C58F7C17F5F514130CD1D9825945441ED7D8F54935F5141FF1587552C9454417A8C724F9B5F5141BB8EE3F92E945441C6C6F8119A5F5141D81105D82D945441C8C62A70935F514154D16DB72A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B945441BF2BC22BE35F51410D18E4754F945441BAC767B4E35F514129F57ED74F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441A0719D4B02605141E7FD7FF1649454419EF0F19808605141D7DCB2F7689454412DC905FD0D605141D5EB54DA6B94544146C71D410E6051419D188E1F6D945441381692450C605141A5E0420E6C945441BDE45E18066051417A1AD19F6894544109C1AA16FE5F51414BA3D335639454415B86CD21F95F51418C5D09F9639454417641524802605141EEDDB02A68945441A63DCC470B6051415296A36D6D945441904908F30D605141D50A0FF46E945441B0ED63261A6051410F820C5E74945441F2A799E91A605141174AC14C73945441B2C248DD0E605141E2361E5A6D9454418CE5AD7B0E6051413581BDFA6B9454414A6A59131360514171B5C65B6E9454411434D8CD2760514147512D9F779454410CB1D5B53A60514198E542717F94544192F612504D6051412F8EE7F88594544164A65B595260514171B24B6E87945441A2A60849556051417E122919889454417172DE685D6051419043CAC4899454416390222E63605141296D1AFF89945441FDD8E8FC6B605141B205EBD48A94544108F85E9174605141A3746B708B9454410B9880D876605141C966FB5C8B945441A24025607D605141A3746B708B94544179AF3B3B7D6051415756624F8C94544155ABEB1B78605141C5FA2F5D8C9454415E9275456D605141CE7B90FC8B945441BD34E6D0606051410FB616BF8A9454416C133AA15F605141CE7B90FC8B9454414BF6DD9063605141DF3034A28C945441E9B964316C605141F0E5D7478D945441D851ACC670605141F0E5D7478D9454417BAF6D9976605141540945B68D94544152B81E557D6051417B14AE578D94544148E17A947E6051413D0AD7938D9454410AD7A3E07F6051411F85EBD18D9454415C8FC2D581605141F6285C2F8E9454418FC2F5788760514114AE47E18D9454411F85EBF18C605141D7A3704D8D9454413333338395605141000000708C945441F6285CAF9C60514185EB51B88B94544166666686A1605141A4703D2A8B94544152B81E85A5605141EC51B8BE8A94544133333313AA6051411F85EB518A945441D7A370FDAD605141EC51B8EE8994544133333353B26051415C8FC27589945441713D0A97B66051411F85EB018994544133333323BB605141CDCCCC7C889454413D0AD763BF6051415C8FC2158894544185EB5198C360514148E17AA487945441F6285C3FC8605141CDCCCC2C879454419A999919CC60514114AE47D186945441AE47E15AD060514152B81E5586945441EC51B88ED46051419A9999D985945441713D0AE7D86051410AD7A3608594544114AE47F1DC605141CDCCCCEC84945441F6285C3FE16051415C8FC285849454411F5E7C41EA6051414AEE0DA183945441C5085BADEE6051410B820517839454413F157D69F76051413A396AFB829454416BC4618D0D61514138C0CA9985945441D5652BDD1561514171B24B6E87945441E6A52C9922615141640BB99D8C9454415A690C2422615141769B227B8A94544192D61063206151418EC731E1889454414208E94911615141960A6A3A84945441B4213B690D615141B892DBAE8394544189E9A74307615141B0DFF84782945441C889253202615141E917BECB8194544100281440F7605141D8621A2681945441924F9946E260514167712F7F8294544191917DBDE26051414E40345781945441F6BFF1EFE760514120D1E3EE809454410818237CEA60514138DF23CF80945441344AF6F6EE605141068C835A80945441866E595EF36051414870A333809454418CAE9CECF76051418954C30C8094544158DA50C5FD605141C5A76381809454411666E3560161514179C343A880945441D060F683056151416A32C4438194544195BC19390A6151418093D4CB81945441F9111E4C106151416171D50283945441E7FFF23417615141CBE7A60F85945441C5CCFA2322615141322E09408894544114513C4424615141322E0940889454416866FDC8256151415820992C88945441C67BBE4D276151416411F74985945441D9AC5FF928615141558077E585945441B7EA3EE9276151416E81A9B488945441E93DDF5D286151414F5FAAEB899454417576D17A2B615141B9D57BF88B9454415D43D96936615141916240599294544152013F763E61514115DA433597945441315E94FA45615141C3D456629B9454412A496805486151411E055F7C9C94544103CA8B6150615141F6D6BA00A1945441A2331F2A55615141B892BC6EA3945441E4A854FC60615141EE1953D5A89454412396BD2561615141807585C7A894544159CCFC3868615141616C02A2AB94544154AB2F3F6C61514159AB1361AD945441BAF1916F6F615141BC51544AAE9454411CA7743B73615141D982F5F5AF945441F5E2FCC57E615141EF53B8E8B3945441D6DF73918861514118E6691CB694544192EA5A709261514192EDBA8DB7945441D4CACC7EAB6151410CF50BFFB89454412532FD6FBA615141FFB5B82BB9945441D2C333A7BA6151413EA32155B99454416CB15D2FC361514122561C87B9945441ECD5CDCFD96151414DD92BD8B8945441400A05E9E36151415C6AAB3CB894544160980852FF61514159CA89F5B5945441783EC7C112625141588C3A5FB494544138211FE81E62514178EC88BEB4945441E52AD4F72562514118E6691CB6945441DDE2CC562D625141E3001586B89454418C836E7834625141DD418DD1BA945441BC04276440625141920C3122C09454418E701ECB4A62514194BBF44BC59454413B7AD3DA516251418E9A2752C9945441896EC76557625141B0CCFACCCD9454419C3B955D5E62514135892E22D5945441846C7000646251412E2331AFD6945441B43E65C26A6251417C17253ADC9454413535BDEB7562514146C22D60E894544193BA30DB7A6251412DE07125EE945441A90F07A283625141ECF2B345FA945441549B2CF3866251411D14FDF3FF945441E68D576C846251415E80A0A50295544198288CE08A6251414C6E758E09955441D83AC4309662514170FECF5C18955441C9C8BA609F6251411A87D9B92595544188352E44A8625141B9DC243B2F9554414CB75589AC6251410DE81ED832955441CE7D667AB062514192DAF6F635955441D5364F8AB76251411B7540BA3A955441E2C3706CBF625141765473293F95544137CF6A09C3625141E39ED9A340955441E28DD0E7CB625141954CC816449554413699CA84CF62514105C3F5BE449554415C655844D5625141136B676346955441BEFD73C3E0625141B19CAB5F47955441BEAC837CF362514179E1940B47955441BD76E3F7FF625141AAC8728D4695544134A6F9AF07635141136B67634695544145A5ECB11D635141A3F439BB459554416F9D419F22635141136B676346955441AE1141032A635141E28389E146955441FB2DB20B336351417D0D5C3946955441F07DF93C3F6351415914D95E469554414AA1A471506351417639236745955441621376915E635141A72001E9449554414E7FF24965635141AC5E78FF44955441D5E0249773635141FEEEBCEC4395544130A507447E635141A72001E9449554415C8FC2A5816351418FC2F5C8459554413D0AD733856351410AD7A3704595544185EB514888635141C3F5285C4595544148E17AC48E6351411F85EB4145955441F6285CCF946351410AD7A300459554410AD7A3909A635141CDCCCCBC4495544152B81EE5A06351418FC2F56844955441AE47E1EAA16351410000006044955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E84EAE76B4635141B9A684B63B955441854A52EEC16351415330570E3B955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441C1CEFFD0EA6351418AA9CC2C5E955441AE83EA4DEA635141FD4AFD5E5F95544157FAD8EBEB6351417AFFF63060955441760C703DF263514129F0A66463955441A7E5B4B4F4635141DE8FCD8C649554417E49E925F5635141A9110D8663955441FFE6A50603645141D86E324243955441560FE0C0096451413D384340459554417FEB9268FC63514125A2A0A663955441CEC04DC5FA635141FAE7CBB7679554412CBB87E3FD6351416B64E04C699554411072B0C9066451412D0E3FC76D9554410F922B580D645141866AD8276B95544175EEAD9216645141C10069B751955441FFAFFCB011645141E19C04AF4C9554410E2D5F280B64514111E7F928459554411996F53C036451412EA0C0C842955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441BB8B07A2196451414C267EB746955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB51483695544160E274B708645141B9C1D4783595544113ABB3EC0564514192DAF6F635955441C99FB94F026451415A1FE0A2359554416EC086E0FD635141534BA7D0349554418A2BBAEBFA635141EAA8B2FA34955441FE64A9FAF66351412264C94E35955441E214C6B1F3635141B9C1D4783595544122BF659AEE635141F17CEBCC35955441A0F854A9EA635141C0950D4B3695544157DD9903E5635141622CF66E369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544166666666B46351415C8FC2653B9554417B14AE07AF635141EC51B80E3C9554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441550555FA9C6351411486B725409554415DF4DD8E976351418BD01DA0419554416BD2EFB78C635141F0464B484295544150B8ACF37C6351417D28ACFB3F955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554410AD7A3B06A635141666666163F95544152B81E45676351415C8FC2453F955441A4703DDA63635141333333633F95544100000090606351415C8FC2853F9554418FC2F5685D635141CDCCCCBC3F95544152B81EB559635141AE47E1DA3F9554419A9999695663514185EB51F83F9554411F85EBF15263514185EB511840955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441F6285C4F0A6351410AD7A3D042955441C3F5286C026351413D0AD7234395544114AE47A1FE62514100000040439554410AD7A3E0F9625141CDCCCC6C439554410AD7A350F562514114AE47A14395544185EB5108F16251413D0AD7C3439554418FC2F568EC625141EC51B8FE43955441A4703D9AE76251417B14AE07449554413D0AD733E362514185EB5168439554413D0AD7A3DE6251419A9999D942955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF104955441E17A143E83625141B81E856BF59454419A9999797E625141666666E6EE945441CDCCCC8C7A6251410AD7A380E99454419A9999497662514148E17A94E3945441AE47E1DA71625141295C8F72DE945441D7A370ED6C625141CDCCCCDCD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441E17A140E3B6251410AD7A300B894544148E17AC4376251413D0AD753B99454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB59454419A9999392962514185EB51B8B3945441AE47E1DA21625141E17A147EB2945441C3F5284C196251418FC2F518B2945441A4703DAA116251418FC2F598B1945441D7A3708D0A6251411F85EB01B2945441CDCCCC5C0662514133333333B294544100000010026251410AD7A380B2945441F6285C4FF761514114AE4711B394544152B81E05F3615141AE47E14AB3945441B81E85CBEF6151410AD7A370B3945441E17A145EED615141AE47E18AB394544114AE4741EB6151418FC2F598B394544133333383E8615141A4703DEAB3945441CDCCCC0CE06151413D0AD793B4945441CDCCCC4CDC615141CDCCCCDCB494544185EB51E8D861514133333313B5945441713D0AC7CE61514166666606B69454413D0AD773BE615141E17A146EB694544152B81E05B8615141295C8FA2B694544133333383B1615141713D0AD7B6945441713D0A17AA615141D7A3705DB6945441333333B3A1615141EC51B8DEB5945441E17A14CE9A6151413D0AD773B5945441D7A3707D97615141B81E85FBB4945441713D0A379461514133333393B4945441F6285CAF8A615141C3F5284CB3945441A4703D4A8261514114AE47C1B0945441AE47E1CA7E615141B81E858BAF945441295C8F627B61514133333363AE945441D7A3701D7861514185EB5148AD9454417B14AEC774615141CDCCCC1CAC9454417B14AEB7706151415C8FC2B5AA945441AE47E14A6D61514152B81E95A9945441295C8F52696151419A9999E9A7945441D7A370DD656151410AD7A380A69454415C8FC25562615141B81E850BA5945441D7A3700D5F6151417B14AEA7A39454418FC2F5285C6151413D0AD723A2945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441295C8F724161514152B81EB59394544114AE47413E615141295C8F0292945441D7A370ED3A61514133333333909454413D0AD7B3376151415C8FC2858E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441CDCCCC8C2B615141000000F087945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F945441000000400F615141666666967E945441E17A14FE0A615141E17A14FE7D9454415C8FC28506615141EC51B84E7D945441C3F5281C02615141333333737C9454413D0AD7E3FD6051418FC2F5587C9454410AD7A380F9605141C3F5286C7C945441A4703D7AF5605141666666867C9454417B14AE47F16051413D0AD7837C945441666666C6EC60514185EB51A87C9454410AD7A340E8605141D7A3701D7D94544185EB51E8E36051419A9999997D9454411F85EBA1DF60514114AE47F17D945441295C8FA2DB605141F6285C4F7E945441A4703D4AD76051410AD7A3C07E945441E17A142ED360514148E17A247F94544114AE47D1CE605141713D0A777F945441A4703DDACA6051417B14AED77F945441F6285C3FC660514148E17A348094544133333313C260514185EB51A880945441295C8FD2BD6051417B14AE078194544114AE4741B9605141CDCCCC6C81945441D7A3700DB56051413D0AD7D3819454418FC2F5C8B06051417B14AE3782945441A4703DBAAC605141B81E85AB82945441F6285C3FA86051410000001083945441CDCCCC3CA4605141EC51B86E8394544185EB51689F60514114AE47C183945441C3F5289C97605141CDCCCCCC849454415113DC0D8E605141359F2FC985945441F3BB5DF7856051414654D36E86945441E1ED437B7A605141F57F127A8A945441B54F87CB7E605141F57F127A8A9454411973F4397F6051410635B61F8B945441AE0206768D6051417626A1C6899454412DA9626493605141EE4BCF7389945441999AE94E9F6051413A86553688945441C8BD2F81A260514100DB68CB8794544117B2230CA8605141B395386A87945441C259A3FDBD605141D2B737338694544108AC1EDCCD6051411C5D464D849454419F7339F8DC605141F3CA941982945441A022FD21E2605141A68564B88194544123EB3CD4E1605141092CA5A182945441064AE9BDDC605141B9B605648394544108AC1EDCCD605141E248B797859454414E92951AC1605141365E781C879454416A14739CBD6051418DA3A87D879454415F153FB9BB605141B02CE48287945441F38DCDDDB560514126CDF8B78794544197F9B70BAE60514100DB68CB879454414565A239A6605141D557597A889454415777CD509F605141A0D4492989945441B4DDCAAB9B605141D227EA9D899454411E35262495605141C2966A398A945441888C819C8E605141B205EBD48A945441A92F2C188760514162904B978B945441B8A135E87D60514178F15B1F8C945441821E26977E60514197135BE88A945441E08423F27A6051417121CBFB8A945441C683F12278605141562F3B0F8B945441700CFB7F85605141D2B7373386945441B7F271BE78605141040BD8A7869454410AD7A35072605141EC51B86E86945441E17A149E6D6051418FC2F52886945441444FADD05B60514168416626849454414F0F809C4660514113E8FC427F945441B87F3C023F6051410E01D7D57C945441D89C66B441605141768CCA507F94544165AB49AF496051410E4EC2108294544193CAD0E3586051417D0DF991859454417894CC9E58605141F098EC0C889454413A656680526051415E9D65FB85945441657B40104760514159B48EEE82945441BA9AC4673A6051411BD9360D7E94544131B8053F32605141353155D97A945441EC6E5ABB26605141ADD31246769454418B95455A1D605141DBF3E5007294544126099B731A6051418FC0A3716C9454414ADA24FE16605141D97747856A945441A2F314F90C6051410F18FB4B63945441DCECB8E80160514153C068B05B945441F780D03AEB5F5141CE7A86B84C9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441EC51B89E9B5F514152B81E25279454415C8FC2958A5F514185EB51D820945441C3F528AC785F5141E17A145E1A945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C9454410AD7A390505F514185EB51F80A945441AE47E1FA4C5F51413D0AD79309945441C3F5289C4B5F5141A4703D0A09945441295C8FC2495F51415C8FC26508945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA201945441F6285CBF345F514185EB51480094544135B4811E305F5141996F569CFE9354411F85EB012D5F5141F6285C3FFD935441713D0A67295F51417B14AED7FB93544148E17A14255F5141B81E857BFA9354411F85EB911D5F5141CDCCCC8CF793544148E17A94195F51415C8FC215F69354411F85EB01165F514152B81EB5F49354410AD7A370125F5141EC51B85EF3935441B81E854B0F5F51415C8FC225F293544133333393095F5141295C8F12F09354415C8FC205035F514152B81E85ED9354418FC2F528005F51413D0AD773EC93544166666666FB5E5141E17A149EEA9354415C8FC2C5F75E5141EC51B84EE993544114AE4741F65E51413D0AD7C3E89354411F85EBC1F35E5141C3F528BCE793544148E17A34F15E5141666666D6E693544114AE47F1EC5E5141E17A142EE59354417B14AED7EA5E5141F6285C7FE4935441F6285C9FE85E5141D7A370ADE39354411F85EBB1E65E5141000000F0E2935441F6285CCFE45E5141AE47E12AE2935441CDCCCCCCE25E51419A999969E1935441615D8B93E15E5141464471ECE0935441F25B97BBE05E5141D223BC5FE3935441FFCFDD42DF5E5141C55D35EAE593544160D6FCE4DD5E5141FBE0443BE5935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E29354415484426FDF5E51419CAF4A2BE09354410544B31FE15E5141678628BEE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441713D0AF7D65E51417B14AEF7DC935441295C8F22D45E5141A4703DFADB935441AE47E10AD15E51418FC2F5B8DA935441295C8FE2CD5E51418FC2F588D99354415C8FC275C85E51410AD7A380D7935441AE47E15AC55E5141295C8F72D693544152B81EE5BB5E5141A4703DCAD29354418FC2F588B75E5141D7A3702DD1935441E17A14BEB35E5141A4703DBACF935441EC51B8BEB25E5141E17A145ECF9354419A9999F9AE5E514185EB51E8CD93544114AE4721AC5E51411F85EBE1CC9354418FC2F528A65E51411F85EB91CA93544152B81EC5A15E514114AE47F1C8935441C3F5285C9E5E5141713D0AA7C79354411F85EB119B5E514133333363C6935441713D0A47985E51411F85EB51C59354417B14AE97955E51418FC2F548C4935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441333333E3675E5141D7A370EDB293544114AE47D15A5E5141713D0A17AE935441295C8FC2585E514152B81E75AD935441A4703D3A4E5E514152B81E55A99354419A9999394A5E51410AD7A3D0A79354415C8FC285425E51411F85EBF1A49354411F85EBD13B5E5141AE47E17AA293544185EB5108375E5141333333F3A09354413BAA5A3E315E514137AE1A039F935441FBF066792B5E5141B12066499D9354419F33F136275E5141FD5AEC0B9C93544188CB9C881E5E5141A505FDD59993544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB519894935441295C8F12D05D5141713D0AC794935441666666B6CB5D5141A4703DEA9493544135CAA38EC35D51413DB413059593544185EB51D8C15D51418FC2F50895935441295C8F32BE5D51413D0AD72395935441AE47E11AB35D51418FC2F548959354413D0AD723B05D51410000006095935441A4703D6AA55D5141CDCCCCAC959354410AD7A360A25D51413D0AD7C3959354415C8FC285945D514152B81E1596935441666666E6925D51413D0AD723969354415C8FC265925D5141AE47E13A95935441931F0CD3885D51419728336994935441667860DA885D5141A971678B949354415AAF9464875D514122D778A394935441758C2FC6875D5141DB336CD390935441A895D98D865D51416BD4E6BF909354414CFE0869855D5141CA287F8B969354415F2D335F825D5141E4AAA8B59693544195D1EDE6725D5141CCA5E5489593544157929D00655D5141507CC8F3939354418B9B47C8635D514137CB3CF8919354412E0477A3625D5141739C9BAE8F9354410C8B36B9615D5141739C9BAE8F935441F511F6CE605D51410FC29230939354413429AC3C585D514154E327079293544122CF622F505D5141545BA6D58F935441747655E6445D5141993F8B248D9354412AE340B6395D5141793AB88689935441CD6854002D5D5141F9BC05878493544188AF809A265D51419066ACAB81935441F1788143265D51415F1F42E48193544114AE47E1245D5141CDCCCC2C83935441C3F528AC245D5141F6285CBF8393544104E3229E245D51410254089B86935441D7A3709D245D5141F6285CBF869354410E9DE4A4245D5141F5B080C2869354419272DCA4245D5141D83AE3C586935441747AE289245D514102028AC886935441BDB90789245D5141C7962BD586935441BFB6402F2D5D51413A259E448A935441EFE00C15305D514180432E7F8A93544176950518395D51415E8C16298E9354412C6CFCD4435D51417DE9CC3292935441CA9BEC814E5D514112731E2C9593544190D486F6575D514191832F3B979354419F0A8F875D5D51416C2B116F9A935441CBD000F6605D51411D45CC459B935441C8F12214655D5141C1ADFB209A935441A2990448685D51417FF3C55D999354417F5AA9506C5D5141CC227672999354419BB93249795D514157EA1B969A935441A68BE0627F5D51410804D76C9B935441EA4F0F51875D51414E2267A79B935441DF2DF915905D51414E2267A79B9354410690100D945D514178B08D049E93544107158DA2975D5141734C338D9E9354412F1E376A965D514169FF01099C9354415A5F2C43965D514198A451599B935441DEDD90F49E5D5141E2263C0B9B9354414B5E3826A35D51410D6831E49A93544150470F33A65D51419D08ACD09A935441F481EC27AB5D5141C1ADFB209A935441AC09FBA0B25D51410F94404A999354415F2DAFA2BA5D5141E5524B7199935441FE033220C05D514159162BFC98935441E1CC3572C75D5141E5524B7199935441B0CD84D5CF5D51417B8F6BE69993544108DFE447DA5D51410B30E6D299935441C624AF84D95D51419F34BB3699935441EAA7E899E15D5141A5D060BF99935441AD510D4EE05D51415286C11E9B9354412B621E5DE25D51414ABE0C309C935441189A696EE35D51410D6831E49A935441F4ECA64BF15D514145C9B5D49B9354419DD758601A5E51413CFF2E14A1935441BCE35A621A5E51415C310CF2A0935441A8825B8B1C5E5141A79A7458A193544195A95725305E51410A696CD3A59354415AED67BF475E51417A5A19BFAD935441A737ABF24A5E5141E647366DAF935441F4A2DB774E5E5141120EC558B1935441EC51B8CE4F5E51410AD7A300B3935441AE47E14A555E5141C3F5286CB293544148E17AD4575E5141295C8F52B393544148E17A145F5E5141B81E85FBB5935441F6285CEF595E51415C8FC2D5C6935441264ED56D595E51410C587663C8935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE93544166666626665E514114AE4781B8935441AE47E19A675E5141713D0A17B9935441C0E40AA8695E51411DA27CD1B993544109A787866D5E51416D7EF435BB93544114F5176A6A5E51419F213B1EB79354419A545F9E745E5141794808D3BC93544197FAFD517C5E51411336B443BF935441E20165997F5E5141C0EB14A3C0935441898213E8815E51418C05D1A0C193544166FB4CB5845E5141E9793B00C393544171CDFACE8A5E51416326F297C59354412F3474728D5E514115C0F972C693544106293E788E5E514130E231D4C7935441067629B3935E5141109353FCC9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC93544114AE4721CA5E51415C8FC2D5DE935441AE47E16ACD5E514133333303E09354413D0AD783D05E51411F85EB31E1935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354417B14AE77D85E514152B81E35E49354416F69AF8CDA5E5141FD112BE4E4935441A96FF248D85E514117951A64EA935441BA712294D85E5141C714E656EC93544103EBB6D9DA5E5141096E834CEC935441BA8CF6D2DB5E5141FA4869EBEA935441FE03B2A0DD5E51411E66B700E693544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354418644B3B5ED5E51410DE22068EC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F793544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC935441C3F528AC185F5141D7A3700DFE935441250001C8145F5141A107C86103945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E318945441713D0A27165F514114AE47C10E945441295C8F02205F51413D0AD7530194544164AA4760205F51412542C2EE00945441C8CD93B9205F51410525FB88009454418FC2F548295F514185EB51E803945441AE47E1FA295F514185EB513804945441EA7C720A2D5F5141B6F1A95E05945441913E16292A5F51414349B595039454415AAFD0B5235F51412B64F6A9009454414E9A448E195F51419A0624CDFC9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B421794544101BEDBEB625F51417171B97B1894544177FC34C9655F514105C0F8761994544101030000000100000005000000631EA276255D5141021E8369829354411DC4753E245D514194988E3483935441B81673AF245D514168C2DD57839354418E31BF90255D514193A7917682935441631EA276255D5141021E83698293544101030000000100000004000000CB19A540195F5141671B8B5CFC935441EBB03C1F195F5141B09B0A91FC935441AA50D52C195F51412D844D96FC935441CB19A540195F5141671B8B5CFC935441010300000001000000040000000544B31FE15E5141678628BEE0935441615D8B93E15E5141464471ECE09354416D09AF95E15E5141DD683AE6E09354410544B31FE15E5141678628BEE0935441
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441AD2E8ACE776251411602D441E994544118F9273A7C625141997C79D1EE945441DEB55F7F84625141978F4183F994544126D0F5C6876251414D8873ED00955441E68D576C846251415E80A0A50295544140DBECBE8A625141F18D766A0995544172A59E589662514152DFC79618955441E90372CD9E625141333A9EE32495544123BE327D9F62514173094BD825955441788DA758A16251412418BBD427955441C793CFB6A2625141D0432D4B29955441C53D35E4A46251415C4C3D9F2B955441B0AB2CB1A762514101C3F09D2E955441EF92368AA86251415C0467762F9554411074592AAC625141769BBF8732955441E2291E89B06251418BD7E30036955441595889CEB7625141F927A1E03A955441D28BDCF0BF6251410C6C9F5F3F9554417A7E037DC1625141F75AAF0140955441F3AB3B3CC462514146D82A1B4195544123B083FDC66251419284712D42955441C8A221D2CB625141D39B590E4495544198BD914DCF6251418B6CEBB44495544119678018D162514100474E32459554415B98E221D562514159E78E5946955441E2ED39F7D56251410594BC724695544120F67C45DA625141345A37D14695544165394998DE6251411FA91530479554418D6877AEE2625141EE5B0E57479554418B96936FE7625141490AB441479554412FE553E7EB6251415331A32D479554412E5616CEEF62514128891D1C47955441919FCBF0F462514102E2E2FC46955441ACEC754CFB625141B3E5A2BC46955441998C59C40C635141293A963C469554418745772C1D63514148D135BF459554417F42A8D7216351410670CA4846955441A059CCB6226351415D33F964469554414E46F22B246351417898D97D46955441531F6BAA286351419D518CCA46955441AFDFFE322B635141F06672CB469554415706F8342D635141A52711A6469554416CEA9BB3326351416912C43F46955441490B9F3A3863514199F64B494695544107B2414D3B6351418AA3BE5246955441BF1948F53F635141069E7B5446955441D038C19945635141D9963F03469554411FEF9D9349635141D87601CA4595544115508DF84D63514170D0BD8A45955441CB3435AD53635141FBE0444A459554414E1864FA5D635141493846EE44955441EE36756765635141DC7841FD44955441B1B5864B6B635141F78A178C449554412CEAFC4C6F6351414E77243F4495544129DC3EA373635141ABE6DAED43955441825344FF7863514138D2806C4495544188BED6067E635141FC225BE34495544187E7FCD0816351418B9C0F8F459554413A788513856351410AEECB3846955441CDED791D886351412A2B19B846955441FE72375D8D6351413FACD8C44795544179728F9B93635141F3F66F6048955441150CBC05996351413D4F51184995544106DC10E19E635141B31F4EB5489554413D2976EDA06351411D271EBE4595544192F8A6D1A2635141CC3B584D44955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E453F8D3AF6351414F257F5F3B955441092E1EBBB263514130DFB02939955441E6F32383B4635141A2860643399554410E45A4FFB86351414F257F5F3B95544103130FA7BC635141EF7D41503B95544169D154C8C0635141E87AAE1C3B955441E664BB76C263514149AFFAFC3A955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441AC83EA4DEA635141FA4AFD5E5F955441A5E5B4B4F4635141E18FCD8C64955441FAE6A50603645141DD6E32424395544187DD39E00864514100A4BAFD44955441F03201C0096451410FE63E4245955441E4B8787A06645141345227B64C955441BA2011B800645141CB4EDCD459955441D3C04DC5FA635141F5E7CBB7679554410E72B0C906645141280E3FC76D9554410A922B580D645141856AD8276B95544170EEAD9216645141C00069B7519554415A4A926E1164514147188A624C95544138CCC41D0B645141CD96CB25459554413B990B4703645141B23AC7CB42955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441E683B3B219645141FEEF69C146955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB514836955441B9EF434509645141E53824983595544160E274B708645141B9C1D47835955441471127C607645141C1046AA335955441682B482506645141EBC3FAEC35955441BA5289AF0364514147BBDBC23595544195D65DFA01645141D87E1193359554411717DE24FE635141F82B4FDD349554419CACCB51FB6351414D0507F534955441BB25F92DFA635141B7BE820A35955441F3218316F66351414DB4315A359554412110BF02F36351413B881F843595544114C35F7CEE635141743CACD03595544123E1B725EA6351412771524E369554418693B0CBE46351413E12A370369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544100C39723B56351419B2DCB8038955441214B70B7B4635141FB22E31F389554416F791592B2635141B81C909337955441E8D739D5B063514106F9B6433895544159D89982AF6351417582CBD9389554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441054CE6CE9E63514102F6AC4C3F955441550555FA9C6351411486B725409554413922674197635141BFAECFA441955441F16B41F48C6351412B6CA344429554419167132083635141B8CC25E2409554411700B8637D635141F522030C40955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554417E712BBD6A6351411A6566AC3E955441B84DE1A96663514169A69C3B3E955441471C36D161635141B9E7D2CA3D955441D5EA8AF85C635141BC8501743E955441BDE7DBAC58635141C3D498C83E955441A4D1F25E55635141739362393F95544196BB09115263514123522CAA3F955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441AAFF2272ED62514158DCA68541955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF10495544138A8F958886251419899C05EF9945441EF8D63118562514136BB243CF59454417BD7C35C80625141A272FAF5EE94544128BD2D157D6251411DE456AFE9945441C6E810CE78625141A45F3244E494544149466FD07362514118F98A6BDE945441BFE946D36D6251418A7EE5DBD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441D001B4FF3B62514154E53976B8945441D527F5FD3A625141D82ECA35B8945441288CDA453A625141871273EEB79454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB594544174B7A968296251415BAA7DCFB29454412984C2491E62514129B74A38B094544122C4D5EA18625141556AD555AF945441E7D0964511625141EF837B35AF9454413DB7D2C20462514190DDC307B09454415D6AC807FB615141C8D0735BB19454413E9489C4F261514102DFE5EDB2945441F365F5C5EF61514102DFE5EDB2945441A155DE59EC615141F2106137B294544147634480E8615141FB06E25BB2945441A24216A8E16151411B996CEDB394544130A074AADC6151411CA3EBC8B3945441D5A35BF5D861514112AD6AA4B3945441D47C958CCE615141237BEF5AB4945441411724B9BD6151413453F3ECB4945441C7888072B86151413453F3ECB494544113A44CBFB06151412B67F1A3B49454416C6F2030AA61514133497411B5945441A8BC67C6A1615141237BEF5AB49454411C56C0ED9B615141258FED11B4945441B97724CB9761514114C1685BB39454414DA307849361514114C1685BB39454414883E36E8A615141939D279CB19454417376FEE982615141F9435C86AF94544170B694CE7E615141F203BA93AE9454412FC3DEF37A615141552AB01FAD945441C49CDC5977615141F2C3945DAC94544160F69B61746151411E771F7BAB945441B8DC6CB770615141E7836F27AA9454411AC33D0D6D615141BA90BFD3A8945441E3CF873269615141B5903C90A7945441437639D9656151414CEA7EDBA5945441A41CEB7F6261514114F7CE87A4945441A9DC42065F615141DC031F34A39454410703B64E5C615141735D617FA1945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441C0F3C3EA416151410F33C9A593945441151836A33E615141523721C29194544166E186093B615141F6B937838F945441A3B8B8AF37615141F08C110D8E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441D9DC26E32B615141D67D57E287945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F9454418BCF93510F615141C81A7DD37D945441E93A1CDF0A6151419366FF9C7C945441D48AE5F305615141CB2F81AB7B945441DAB4EDA301615141BB91C1777B9454418661F60EFD6051416214C2327B94544186ED3E8BF8605141FE96C2ED7A9454413ED6C65DF4605141473A83977A945441593C4E75F060514185A1C4D979945441492AD7BDEB60514190DD43417A94544123A06137E6605141957B03757A9454411AE32080E1605141321A3DCC7B9454410E02233FDF605141C70745F17B945441073FD4C0DB6051416BE4A79E7C94544192DE8167D76051419C8C09037D9454415A73D184D36051415D1FAF547E94544172A2A1C6CF60514132E04F827E945441A11EB21ACC605141B01451CB7E94544117FA3BDDC66051412E4952147F945441804CA971C2605141DC25B5C17F94544179C5360FBE6051413376788A80945441ADD844D1B96051417C6B1A0181945441806D94EEB56051413E3A9C6E819454413AE39ED5B0605141862F3EE58194544134205057AD605141B7D79F498294544110E39A50A8605141FFCC41C082945441D085CBADA4605141DD7F01AE82945441B2753C1DA16051415BB402F782945441D78775799F605141ECDA22008394544122CA537D976051415186071B84945441921E6BDD8D605141CFBA086484945441BA1309CF8560514117B0AADA849454413285BB99826051411C47A848849454414E4B89497E605141822E697F849454411012D6677860514114032600859454410AE168B871605141D58EC74C8594544154C834D46D6051415E7784B3849454417D674BC0636051412F1A6E808494544134208CC25F6051416E8ECC3384945441225785DF5B605141C54D13288494544117075DC55A605141C81973678394544171057161566051410F5F4BE881945441067415B746605141EA74A21D7E9454419EE08F653C605141E618F7D478945441F613480C36605141A710A16F759454413A26A6293160514188B6A7BD729454411E20F1B22060514128FA93DA6C945441337939EC156051414E8449C36894544177BC2AF00E60514144B1E87864945441C5F388B8086051418CE10585609454416F238A7908605141FBE489FF64945441584FD4540E605141ED3516C167945441DA1A326E12605141D9E15A0F6A9454414DF0744E1D605141E2B4BB596E945441BD506349266051417470D90A72945441BF524AC62B6051411314B9097494544168561DA735605141C92CEDED779454411ACD5DF03B605141EE1696B87B945441E78EBEF2416051417A4246667F945441BE472216496051418AA6FBDB81945441EA3B62354E605141FB2DB21B8394544160B0BAE358605141F464C4928594544199A1D09F586051415320940388945441766C633153605141A6813A3786945441EBCA828B47605141EF2F6D0F839454412DFD95A0396051411AD707BF7D9454412B2E2FC632605141F512630E7B945441B50E77D329605141CBE8D180779454411E07B3F3276051419E3F2FC2769454417345AB601D605141F790CF0372945441C9D64A3817605141E6E3418C6F945441D45C32270860514122C9262B66945441D7A3707D08605141F6285C0F60945441AE47E10AED5F514148E17AD44D94544152B81E45EC5F51419A9999594D9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441C683D4E39B5F51417C6FE39A24945441A9FA326A8A5F5141237722711E9454410EFBD60F795F51419404F67319945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C94544165CC575C515F5141D7B507330A945441CB617BF64C5F5141F0208B8908945441F70FD6244B5F5141D6EB90D90794544193E793C4495F5141EDB0705407945441A105556B485F5141F5EEF6D106945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA2019454417FB97999345F51411D919014FF9354418DD6EEB6345F5141C50EF62EFE935441489D4AB2315F51414CB8A1B1FC93544107A7F0FB2E5F514129C3A174FB93544128C72EC72D5F51418EDC62EEFA9354416959D23C2B5F5141311619DAF9935441BED6A9AF295F51410D4A6031F993544169C92166265F514119D9DFCBF7935441C39A4AD5235F5141A365D5B4F69354417C56A34B1D5F514104D8D3EDF393544118B23801185F5141A5C570AEF1935441902EFA55145F5141EDF9D65BF093544196359AC0115F51412849F47DEF935441CBCA63F00C5F51415DC38EE0ED9354411C5E9014075F5141DC1061E9EB935441B0CF56CA015F5141216D0C23EA935441CFB39F0EFD5E5141BE7A66A0E89354413380A05EF75E5141017111F1E69354418694D94BF35E5141DA7E26BCE5935441081D175AEE5E5141D0D12C45E4935441B4C410B2EA5E5141B3D5E12FE39354417BB6568FE75E514156021442E29354413583915EE55E514154DEF39BE193544177E13FFDE15E5141DA294EC8E0935441615D8B93E15E5141464471ECE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441CDAF45D0D65E5141C15AF324DD9354410BD7C057D55E514192F5E7A7DC9354413A2E3605D45E5141839AA90FDC935441AE47E10AD15E51418FC2F5B8DA9354415F46ED77BE5E51414F2D6E43D2935441DA7C568FB65E5141D148D945CE935441D9CD50CEAA5E51414B6B3A44C993544160074876A25E5141D278B94EC7935441267C82889D5E51415D24C0E7C5935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441BB341329685E5141679FA42AB1935441B132B95E5B5E5141AE32CD71AB935441A3DC451B575E514126E69352AA93544163011F134E5E5141B3CA124BA7935441D85E72B0485E5141D2FBCA62A59354415588683A415E51417E3318A3A29354416663AD0E3B5E5141A9C9E5E5A09354415A1F81AE365E51413C591E00A0935441580C0D66305E51417E54016E9E935441A4703DBA2B5E51413D0AD7539D935441EAF51B5B255E51419B97BF929B935441713D0AC7205E51410AD7A3709A9354416FCD083E1E5E51413A1D6BC79993544150C356C3195E51411CEB64E79893544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB51989493544131EF0ECBD15D51412FBA82B291935441545E6174CB5D514107E90A9691935441A2ED9800C25D51414C8BFACE91935441A192271BB95D51411231C4CE909354413B05548BB15D51416914B9B292935441908DD789AA5D51412FBA82B291935441C98C9CA4A25D514191E530CF92935441916E1BBE945D5141E0CFD94092935441931F0CD3885D51419728336994935441667860DA885D5141A971678B9493544107AEF89C8A5D51413F8612FC95935441ECEDC10D925D5141E079D01A97935441E3ADAF88945D5141B6B5094E98935441C41F2A05975D5141B79E9FB298935441E74085D9975D5141B79E9FB298935441CCF10837A25D51413646007798935441FC9A3A0EAA5D51416B2BB49597935441D49661BCAD5D514116C24B2F97935441C03562E5AF5D514195315506979354410DA1926AB35D51414AA7FF4D96935441A798E0C6BA5D5141BFF51BD395935441C3E012C7C45D51413F8612FC9593544126AF0A42C95D5141F4FBBC4395935441BE83A32DCD5D514134234B06959354415B94BE60C85D51411580718B9693544120D8CEFADF5D5141F6FD846298935441AB89B275E05D514155E9D9F196935441B8AC67E6E35D5141362513259893544161A84580F15D514157A9C76C999354418E17BD2E055E5141839043AA9B93544118AA2C3F055E51414992501D9C935441E35F3843055E51412E48C8959B9354414CF2AD76125E51418F35E5439D935441719BDF4D1A5E5141F00115A09E9354416359B64E1A5E5141B63B9ABC9E9354410BE80959365E5141762C7EB7A4935441A8770E11405E5141786F98C7A7935441E16CE746605E514189526F59B393544153DA8F615F5E514186C1E5BDB493544143449E7A5A5E51415F055B0CC7935441FA17F788595E5141C7135C6DCA935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE935441E94E4744665E5141523DA144B8935441658333D75F5E5141F574A0EFB49354417AB573AC605E514148FAD3B4B3935441B800B615665E5141ACF0FADBB3935441988CFE026A5E514157075F51B593544168800117725E514156E67586B9935441480C4A04765E51419C37CC37BC935441FC7264027C5E5141D1F67B2ABF93544149D8B52F7F5E51410681D776C09354413CA4D467815E51416F1BBA69C19354416F522AE5835E5141ACC4409AC2935441F4B875FB875E5141E5307364C4935441AB741A098A5E5141D933D943C59354412F3474728D5E514115C0F972C69354410F9B65A48E5E51411F1967E6C79354416DDC689D935E5141A03E5BF3C9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC935441B87B7764C95E51418E716AE2DF93544129F1F3ADCB5E5141D3E2A3F0E09354411EB296ABCE5E5141FFE6E62BE29354413FB6D9E6CF5E5141D3E2A3F0E0935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354416F69AF8CDA5E5141FD112BE4E4935441A0C3DD9EDD5E5141A2A05012E6935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E293544146732864DF5E51415C0F346AE09354410A728673E15E51418AB04048E1935441F25B97BBE05E5141D223BC5FE393544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354413D0AD7D3E45E5141D7A3700DE99354416DFD97D0E65E5141988879D0E9935441E10C9B01E95E5141E72768A3EA935441DD293C6AED5E51413630C14BEC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F79354416AC9BC59125F514147AF6327F993544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC93544112DCE5FC185F51415920342AFD93544166167E90185F51419479F5C9FD9354413DB432AB145F51417A7EC73F03945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E3189454419F9AA20D135F51411011CC1A1C945441DA6C93AA245F514135CB889D029454415969F5F9245F514137D2C4FE01945441D2410D7A195F5141C18A1551FD9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B42179454417FA3DD176D5F5141EC58DDF71B945441A7C312D66F5F5141B0AEE7DE1C945441F3748B7D745F51419D18EBD91E9454414575A574785F51413756018220945441592284F57B5F5141B58FB2F82194544176E4424F7D5F5141B35E4E322294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B94544139C42A8EE35F514142CF05BB4F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441AB06401B03605141071316766594544114411897086051417C6384F6689454418CE5AD7B0E6051413581BDFA6B9454418973BB1813605141CA882E5E6E94544154FD6D4D20605141B839F84474945441BA0B58DB296051417D618D787894544171BB84A232605141333D1B1A7C94544136F0FA703860514184F8FC807E945441ED0CF6FB3F60514196E82E4B81945441EA26CE67486051410EB4ED3F8494544103FE194E4C605141A6D3599E85945441D4F712F2506051413C363E0687945441AE4CF2AB5260514184AB1181879454412D7BF1A8586051417864C9CA88945441D5F2DC695D605141634FD4C489945441E202311E62605141795D5EF489945441F731D10863605141DF51A1FD89945441F41804EB63605141DEAC03118A9454413982925765605141F89795338A9454419C0E49C36B605141412574CF8A9454414A351E516F605141855B40118B945441E23340A4746051410A59CA6F8B9454418BB9B3E07660514160CF135D8B945441A24025607D605141A3746B708B94544194D6827E88605141A16A326A8A94544113CF5BFC9E605141A7621B1C889454415BB094C5AE6051419A5D98A4869454419017D0F0B3605141AFB2B692869454413AFDE6FBC460514197AD331B8594544110CEE70FE3605141690BBE5081945441B29177A4E7605141A0C5CEF4809454415E54BF90EB605141AFA002B380945441D04F6913EE6051412394A7718094544129C2D964F2605141F9E83D3C80945441B1AEE3F5F460514178C30D2680945441CDAE7D0CF86051419D403F0F809454419F0DD218FA605141219B1A38809454414C0A5EC6FE60514147E0538C809454411666E3560161514179C343A880945441440A316304615141A56BC319819454411AC6DBEC07615141CA7B6A8981945441736BEDBC096151419A92CFBD819454410F9164120C61514163247D2A82945441FB9ADDA7106151419E450E1E8394544113D92268116151417E601A5783945441012254DB1A6151410EE72D20869454415119390D22615141810466398894544188DD35DB23615141322E094088945441E1D09BDA24615141CE67843888945441A82336CC256151412B1F7A26889454416C3A484B27615141898DA44E85945441B6359AE428615141521C302386945441B7EA3EE9276151416E81A9B4889454418F11DA5E28615141068D4FEC8994544173A72A762B615141786F58F78B945441127AC7E42D6151417B02F6608D94544147CFC81A35615141DD1ECC9591945441A311E2BE3E6151415A719E5D97945441A4FDF0A6466151417A3A51BF9B945441FFCF5D0B516151411EE2FC56A19454411A5B5FAF5561514113709DABA3945441E4AD657059615141E5FAAD62A5945441005AB1115D6151410F843F0BA7945441A3312294606151418F4DB8A5A89454415363BA6E61615141792AF5E4A8945441CE72388A66615141A53947F4AA945441AEBD89AB69615141277ED042AC945441F9173B1B6C615141153B7951AD94544143C7D0316E615141E0D78AEFAD9454412268D0726F61514108B9C14BAE9454419F9AA22D7361514107C5E0EFAF945441B23D25BF766151418665BF29B194544140D2F1A67B615141A6F65CD7B2945441A5A84EA07E615141754DD4DBB39454416D41AB0F80615141C79AD532B49454412A3B98698661514116425AA0B59454415F34BB8088615141E393A718B69454411B992C688B6151414F77A086B694544109B188B892615141C9CCE291B794544146FA82CBA96151412A12FCE5B8945441BF4ABA58B1615141888A8A10B99454412532FD6FBA615141FFB5B82BB994544176016DF4BA6151413D02E656B994544162523876C261514134C3DF82B994544101465D38CC615141E2494141B99454414345AACFD4615141834CD5FEB8945441356D753AE361514168642B47B894544136FA62A0FB61514172B51F44B69454413D06107812625141F7883F65B4945441F16F65FC17625141B2073F88B494544133BC5DE41E62514107776BBEB4945441F2FC733624625141BC0E70C5B5945441E52AD4F72562514118E6691CB694544155D7868828625141D515C1F3B6945441358E208B2862514193A7ACF4B6945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 410369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441F6306C92735F514101C9CD78209454417C58F7C17F5F514130CD1D9825945441ED7D8F54935F5141FF1587552C9454417A8C724F9B5F5141BB8EE3F92E945441C6C6F8119A5F5141D81105D82D945441C8C62A70935F514154D16DB72A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B945441BF2BC22BE35F51410D18E4754F945441BAC767B4E35F514129F57ED74F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441A0719D4B02605141E7FD7FF1649454419EF0F19808605141D7DCB2F7689454412DC905FD0D605141D5EB54DA6B94544146C71D410E6051419D188E1F6D945441381692450C605141A5E0420E6C945441BDE45E18066051417A1AD19F6894544109C1AA16FE5F51414BA3D335639454415B86CD21F95F51418C5D09F9639454417641524802605141EEDDB02A68945441A63DCC470B6051415296A36D6D945441904908F30D605141D50A0FF46E945441B0ED63261A6051410F820C5E74945441F2A799E91A605141174AC14C73945441B2C248DD0E605141E2361E5A6D9454418CE5AD7B0E6051413581BDFA6B9454414A6A59131360514171B5C65B6E9454411434D8CD2760514147512D9F779454410CB1D5B53A60514198E542717F94544192F612504D6051412F8EE7F88594544164A65B595260514171B24B6E87945441A2A60849556051417E122919889454417172DE685D6051419043CAC4899454416390222E63605141296D1AFF89945441FDD8E8FC6B605141B205EBD48A94544108F85E9174605141A3746B708B9454410B9880D876605141C966FB5C8B945441A24025607D605141A3746B708B94544179AF3B3B7D6051415756624F8C94544155ABEB1B78605141C5FA2F5D8C9454415E9275456D605141CE7B90FC8B945441BD34E6D0606051410FB616BF8A9454416C133AA15F605141CE7B90FC8B9454414BF6DD9063605141DF3034A28C945441E9B964316C605141F0E5D7478D945441D851ACC670605141F0E5D7478D9454417BAF6D9976605141540945B68D94544152B81E557D6051417B14AE578D94544148E17A947E6051413D0AD7938D9454410AD7A3E07F6051411F85EBD18D9454415C8FC2D581605141F6285C2F8E9454418FC2F5788760514114AE47E18D9454411F85EBF18C605141D7A3704D8D9454413333338395605141000000708C945441F6285CAF9C60514185EB51B88B94544166666686A1605141A4703D2A8B94544152B81E85A5605141EC51B8BE8A94544133333313AA6051411F85EB518A945441D7A370FDAD605141EC51B8EE8994544133333353B26051415C8FC27589945441713D0A97B66051411F85EB018994544133333323BB605141CDCCCC7C889454413D0AD763BF6051415C8FC2158894544185EB5198C360514148E17AA487945441F6285C3FC8605141CDCCCC2C879454419A999919CC60514114AE47D186945441AE47E15AD060514152B81E5586945441EC51B88ED46051419A9999D985945441713D0AE7D86051410AD7A3608594544114AE47F1DC605141CDCCCCEC84945441F6285C3FE16051415C8FC285849454411F5E7C41EA6051414AEE0DA183945441C5085BADEE6051410B820517839454413F157D69F76051413A396AFB829454416BC4618D0D61514138C0CA9985945441D5652BDD1561514171B24B6E87945441E6A52C9922615141640BB99D8C9454415A690C2422615141769B227B8A94544192D61063206151418EC731E1889454414208E94911615141960A6A3A84945441B4213B690D615141B892DBAE8394544189E9A74307615141B0DFF84782945441C889253202615141E917BECB8194544100281440F7605141D8621A2681945441924F9946E260514167712F7F8294544191917DBDE26051414E40345781945441F6BFF1EFE760514120D1E3EE809454410818237CEA60514138DF23CF80945441344AF6F6EE605141068C835A80945441866E595EF36051414870A333809454418CAE9CECF76051418954C30C8094544158DA50C5FD605141C5A76381809454411666E3560161514179C343A880945441D060F683056151416A32C4438194544195BC19390A6151418093D4CB81945441F9111E4C106151416171D50283945441E7FFF23417615141CBE7A60F85945441C5CCFA2322615141322E09408894544114513C4424615141322E0940889454416866FDC8256151415820992C88945441C67BBE4D276151416411F74985945441D9AC5FF928615141558077E585945441B7EA3EE9276151416E81A9B488945441E93DDF5D286151414F5FAAEB899454417576D17A2B615141B9D57BF88B9454415D43D96936615141916240599294544152013F763E61514115DA433597945441315E94FA45615141C3D456629B9454412A496805486151411E055F7C9C94544103CA8B6150615141F6D6BA00A1945441A2331F2A55615141B892BC6EA3945441E4A854FC60615141EE1953D5A89454412396BD2561615141807585C7A894544159CCFC3868615141616C02A2AB94544154AB2F3F6C61514159AB1361AD945441BAF1916F6F615141BC51544AAE9454411CA7743B73615141D982F5F5AF945441F5E2FCC57E615141EF53B8E8B3945441D6DF73918861514118E6691CB694544192EA5A709261514192EDBA8DB7945441D4CACC7EAB6151410CF50BFFB89454412532FD6FBA615141FFB5B82BB9945441D2C333A7BA6151413EA32155B99454416CB15D2FC361514122561C87B9945441ECD5CDCFD96151414DD92BD8B8945441400A05E9E36151415C6AAB3CB894544160980852FF61514159CA89F5B5945441783EC7C112625141588C3A5FB494544138211FE81E62514178EC88BEB4945441E52AD4F72562514118E6691CB6945441DDE2CC562D625141E3001586B89454418C836E7834625141DD418DD1BA945441BC04276440625141920C3122C09454418E701ECB4A62514194BBF44BC59454413B7AD3DA516251418E9A2752C9945441896EC76557625141B0CCFACCCD9454419C3B955D5E62514135892E22D5945441846C7000646251412E2331AFD6945441B43E65C26A6251417C17253ADC9454413535BDEB7562514146C22D60E894544193BA30DB7A6251412DE07125EE945441A90F07A283625141ECF2B345FA945441549B2CF3866251411D14FDF3FF945441E68D576C846251415E80A0A50295544198288CE08A6251414C6E758E09955441D83AC4309662514170FECF5C18955441C9C8BA609F6251411A87D9B92595544188352E44A8625141B9DC243B2F9554414CB75589AC6251410DE81ED832955441CE7D667AB062514192DAF6F635955441D5364F8AB76251411B7540BA3A955441E2C3706CBF625141765473293F95544137CF6A09C3625141E39ED9A340955441E28DD0E7CB625141954CC816449554413699CA84CF62514105C3F5BE449554415C655844D5625141136B676346955441BEFD73C3E0625141B19CAB5F47955441BEAC837CF362514179E1940B47955441BD76E3F7FF625141AAC8728D4695544134A6F9AF07635141136B67634695544145A5ECB11D635141A3F439BB459554416F9D419F22635141136B676346955441AE1141032A635141E28389E146955441FB2DB20B336351417D0D5C3946955441F07DF93C3F6351415914D95E469554414AA1A471506351417639236745955441621376915E635141A72001E9449554414E7FF24965635141AC5E78FF44955441D5E0249773635141FEEEBCEC4395544130A507447E635141A72001E9449554415C8FC2A5816351418FC2F5C8459554413D0AD733856351410AD7A3704595544185EB514888635141C3F5285C4595544148E17AC48E6351411F85EB4145955441F6285CCF946351410AD7A300459554410AD7A3909A635141CDCCCCBC4495544152B81EE5A06351418FC2F56844955441AE47E1EAA16351410000006044955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E84EAE76B4635141B9A684B63B955441854A52EEC16351415330570E3B955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441C1CEFFD0EA6351418AA9CC2C5E955441AE83EA4DEA635141FD4AFD5E5F95544157FAD8EBEB6351417AFFF63060955441760C703DF263514129F0A66463955441A7E5B4B4F4635141DE8FCD8C649554417E49E925F5635141A9110D8663955441FFE6A50603645141D86E324243955441560FE0C0096451413D384340459554417FEB9268FC63514125A2A0A663955441CEC04DC5FA635141FAE7CBB7679554412CBB87E3FD6351416B64E04C699554411072B0C9066451412D0E3FC76D9554410F922B580D645141866AD8276B95544175EEAD9216645141C10069B751955441FFAFFCB011645141E19C04AF4C9554410E2D5F280B64514111E7F928459554411996F53C036451412EA0C0C842955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441BB8B07A2196451414C267EB746955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB51483695544160E274B708645141B9C1D4783595544113ABB3EC0564514192DAF6F635955441C99FB94F026451415A1FE0A2359554416EC086E0FD635141534BA7D0349554418A2BBAEBFA635141EAA8B2FA34955441FE64A9FAF66351412264C94E35955441E214C6B1F3635141B9C1D4783595544122BF659AEE635141F17CEBCC35955441A0F854A9EA635141C0950D4B3695544157DD9903E5635141622CF66E369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544166666666B46351415C8FC2653B9554417B14AE07AF635141EC51B80E3C9554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441550555FA9C6351411486B725409554415DF4DD8E976351418BD01DA0419554416BD2EFB78C635141F0464B484295544150B8ACF37C6351417D28ACFB3F955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554410AD7A3B06A635141666666163F95544152B81E45676351415C8FC2453F955441A4703DDA63635141333333633F95544100000090606351415C8FC2853F9554418FC2F5685D635141CDCCCCBC3F95544152B81EB559635141AE47E1DA3F9554419A9999695663514185EB51F83F9554411F85EBF15263514185EB511840955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441F6285C4F0A6351410AD7A3D042955441C3F5286C026351413D0AD7234395544114AE47A1FE62514100000040439554410AD7A3E0F9625141CDCCCC6C439554410AD7A350F562514114AE47A14395544185EB5108F16251413D0AD7C3439554418FC2F568EC625141EC51B8FE43955441A4703D9AE76251417B14AE07449554413D0AD733E362514185EB5168439554413D0AD7A3DE6251419A9999D942955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF104955441E17A143E83625141B81E856BF59454419A9999797E625141666666E6EE945441CDCCCC8C7A6251410AD7A380E99454419A9999497662514148E17A94E3945441AE47E1DA71625141295C8F72DE945441D7A370ED6C625141CDCCCCDCD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441E17A140E3B6251410AD7A300B894544148E17AC4376251413D0AD753B99454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB59454419A9999392962514185EB51B8B3945441AE47E1DA21625141E17A147EB2945441C3F5284C196251418FC2F518B2945441A4703DAA116251418FC2F598B1945441D7A3708D0A6251411F85EB01B2945441CDCCCC5C0662514133333333B294544100000010026251410AD7A380B2945441F6285C4FF761514114AE4711B394544152B81E05F3615141AE47E14AB3945441B81E85CBEF6151410AD7A370B3945441E17A145EED615141AE47E18AB394544114AE4741EB6151418FC2F598B394544133333383E8615141A4703DEAB3945441CDCCCC0CE06151413D0AD793B4945441CDCCCC4CDC615141CDCCCCDCB494544185EB51E8D861514133333313B5945441713D0AC7CE61514166666606B69454413D0AD773BE615141E17A146EB694544152B81E05B8615141295C8FA2B694544133333383B1615141713D0AD7B6945441713D0A17AA615141D7A3705DB6945441333333B3A1615141EC51B8DEB5945441E17A14CE9A6151413D0AD773B5945441D7A3707D97615141B81E85FBB4945441713D0A379461514133333393B4945441F6285CAF8A615141C3F5284CB3945441A4703D4A8261514114AE47C1B0945441AE47E1CA7E615141B81E858BAF945441295C8F627B61514133333363AE945441D7A3701D7861514185EB5148AD9454417B14AEC774615141CDCCCC1CAC9454417B14AEB7706151415C8FC2B5AA945441AE47E14A6D61514152B81E95A9945441295C8F52696151419A9999E9A7945441D7A370DD656151410AD7A380A69454415C8FC25562615141B81E850BA5945441D7A3700D5F6151417B14AEA7A39454418FC2F5285C6151413D0AD723A2945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441295C8F724161514152B81EB59394544114AE47413E615141295C8F0292945441D7A370ED3A61514133333333909454413D0AD7B3376151415C8FC2858E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441CDCCCC8C2B615141000000F087945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F945441000000400F615141666666967E945441E17A14FE0A615141E17A14FE7D9454415C8FC28506615141EC51B84E7D945441C3F5281C02615141333333737C9454413D0AD7E3FD6051418FC2F5587C9454410AD7A380F9605141C3F5286C7C945441A4703D7AF5605141666666867C9454417B14AE47F16051413D0AD7837C945441666666C6EC60514185EB51A87C9454410AD7A340E8605141D7A3701D7D94544185EB51E8E36051419A9999997D9454411F85EBA1DF60514114AE47F17D945441295C8FA2DB605141F6285C4F7E945441A4703D4AD76051410AD7A3C07E945441E17A142ED360514148E17A247F94544114AE47D1CE605141713D0A777F945441A4703DDACA6051417B14AED77F945441F6285C3FC660514148E17A348094544133333313C260514185EB51A880945441295C8FD2BD6051417B14AE078194544114AE4741B9605141CDCCCC6C81945441D7A3700DB56051413D0AD7D3819454418FC2F5C8B06051417B14AE3782945441A4703DBAAC605141B81E85AB82945441F6285C3FA86051410000001083945441CDCCCC3CA4605141EC51B86E8394544185EB51689F60514114AE47C183945441C3F5289C97605141CDCCCCCC849454415113DC0D8E605141359F2FC985945441F3BB5DF7856051414654D36E86945441E1ED437B7A605141F57F127A8A945441B54F87CB7E605141F57F127A8A9454411973F4397F6051410635B61F8B945441AE0206768D6051417626A1C6899454412DA9626493605141EE4BCF7389945441999AE94E9F6051413A86553688945441C8BD2F81A260514100DB68CB8794544117B2230CA8605141B395386A87945441C259A3FDBD605141D2B737338694544108AC1EDCCD6051411C5D464D849454419F7339F8DC605141F3CA941982945441A022FD21E2605141A68564B88194544123EB3CD4E1605141092CA5A182945441064AE9BDDC605141B9B605648394544108AC1EDCCD605141E248B797859454414E92951AC1605141365E781C879454416A14739CBD6051418DA3A87D879454415F153FB9BB605141B02CE48287945441F38DCDDDB560514126CDF8B78794544197F9B70BAE60514100DB68CB879454414565A239A6605141D557597A889454415777CD509F605141A0D4492989945441B4DDCAAB9B605141D227EA9D899454411E35262495605141C2966A398A945441888C819C8E605141B205EBD48A945441A92F2C188760514162904B978B945441B8A135E87D60514178F15B1F8C945441821E26977E60514197135BE88A945441E08423F27A6051417121CBFB8A945441C683F12278605141562F3B0F8B945441700CFB7F85605141D2B7373386945441B7F271BE78605141040BD8A7869454410AD7A35072605141EC51B86E86945441E17A149E6D6051418FC2F52886945441444FADD05B60514168416626849454414F0F809C4660514113E8FC427F945441B87F3C023F6051410E01D7D57C945441D89C66B441605141768CCA507F94544165AB49AF496051410E4EC2108294544193CAD0E3586051417D0DF991859454417894CC9E58605141F098EC0C889454413A656680526051415E9D65FB85945441657B40104760514159B48EEE82945441BA9AC4673A6051411BD9360D7E94544131B8053F32605141353155D97A945441EC6E5ABB26605141ADD31246769454418B95455A1D605141DBF3E5007294544126099B731A6051418FC0A3716C9454414ADA24FE16605141D97747856A945441A2F314F90C6051410F18FB4B63945441DCECB8E80160514153C068B05B945441F780D03AEB5F5141CE7A86B84C9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441EC51B89E9B5F514152B81E25279454415C8FC2958A5F514185EB51D820945441C3F528AC785F5141E17A145E1A945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C9454410AD7A390505F514185EB51F80A945441AE47E1FA4C5F51413D0AD79309945441C3F5289C4B5F5141A4703D0A09945441295C8FC2495F51415C8FC26508945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA201945441F6285CBF345F514185EB51480094544135B4811E305F5141996F569CFE9354411F85EB012D5F5141F6285C3FFD935441713D0A67295F51417B14AED7FB93544148E17A14255F5141B81E857BFA9354411F85EB911D5F5141CDCCCC8CF793544148E17A94195F51415C8FC215F69354411F85EB01165F514152B81EB5F49354410AD7A370125F5141EC51B85EF3935441B81E854B0F5F51415C8FC225F293544133333393095F5141295C8F12F09354415C8FC205035F514152B81E85ED9354418FC2F528005F51413D0AD773EC93544166666666FB5E5141E17A149EEA9354415C8FC2C5F75E5141EC51B84EE993544114AE4741F65E51413D0AD7C3E89354411F85EBC1F35E5141C3F528BCE793544148E17A34F15E5141666666D6E693544114AE47F1EC5E5141E17A142EE59354417B14AED7EA5E5141F6285C7FE4935441F6285C9FE85E5141D7A370ADE39354411F85EBB1E65E5141000000F0E2935441F6285CCFE45E5141AE47E12AE2935441CDCCCCCCE25E51419A999969E1935441615D8B93E15E5141464471ECE0935441F25B97BBE05E5141D223BC5FE3935441FFCFDD42DF5E5141C55D35EAE593544160D6FCE4DD5E5141FBE0443BE5935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E29354415484426FDF5E51419CAF4A2BE09354410544B31FE15E5141678628BEE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441713D0AF7D65E51417B14AEF7DC935441295C8F22D45E5141A4703DFADB935441AE47E10AD15E51418FC2F5B8DA935441295C8FE2CD5E51418FC2F588D99354415C8FC275C85E51410AD7A380D7935441AE47E15AC55E5141295C8F72D693544152B81EE5BB5E5141A4703DCAD29354418FC2F588B75E5141D7A3702DD1935441E17A14BEB35E5141A4703DBACF935441EC51B8BEB25E5141E17A145ECF9354419A9999F9AE5E514185EB51E8CD93544114AE4721AC5E51411F85EBE1CC9354418FC2F528A65E51411F85EB91CA93544152B81EC5A15E514114AE47F1C8935441C3F5285C9E5E5141713D0AA7C79354411F85EB119B5E514133333363C6935441713D0A47985E51411F85EB51C59354417B14AE97955E51418FC2F548C4935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441333333E3675E5141D7A370EDB293544114AE47D15A5E5141713D0A17AE935441295C8FC2585E514152B81E75AD935441A4703D3A4E5E514152B81E55A99354419A9999394A5E51410AD7A3D0A79354415C8FC285425E51411F85EBF1A49354411F85EBD13B5E5141AE47E17AA293544185EB5108375E5141333333F3A09354413BAA5A3E315E514137AE1A039F935441FBF066792B5E5141B12066499D9354419F33F136275E5141FD5AEC0B9C93544188CB9C881E5E5141A505FDD59993544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB519894935441295C8F12D05D5141713D0AC794935441666666B6CB5D5141A4703DEA9493544135CAA38EC35D51413DB413059593544185EB51D8C15D51418FC2F50895935441295C8F32BE5D51413D0AD72395935441AE47E11AB35D51418FC2F548959354413D0AD723B05D51410000006095935441A4703D6AA55D5141CDCCCCAC959354410AD7A360A25D51413D0AD7C3959354415C8FC285945D514152B81E1596935441666666E6925D51413D0AD723969354415C8FC265925D5141AE47E13A95935441931F0CD3885D51419728336994935441667860DA885D5141A971678B949354415AAF9464875D514122D778A394935441758C2FC6875D5141DB336CD390935441A895D98D865D51416BD4E6BF909354414CFE0869855D5141CA287F8B969354415F2D335F825D5141E4AAA8B59693544195D1EDE6725D5141CCA5E5489593544157929D00655D5141507CC8F3939354418B9B47C8635D514137CB3CF8919354412E0477A3625D5141739C9BAE8F9354410C8B36B9615D5141739C9BAE8F935441F511F6CE605D51410FC29230939354413429AC3C585D514154E327079293544122CF622F505D5141545BA6D58F935441747655E6445D5141993F8B248D9354412AE340B6395D5141793AB88689935441CD6854002D5D5141F9BC05878493544188AF809A265D51419066ACAB81935441F1788143265D51415F1F42E48193544114AE47E1245D5141CDCCCC2C83935441C3F528AC245D5141F6285CBF8393544104E3229E245D51410254089B86935441D7A3709D245D5141F6285CBF869354410E9DE4A4245D5141F5B080C2869354419272DCA4245D5141D83AE3C586935441747AE289245D514102028AC886935441BDB90789245D5141C7962BD586935441BFB6402F2D5D51413A259E448A935441EFE00C15305D514180432E7F8A93544176950518395D51415E8C16298E9354412C6CFCD4435D51417DE9CC3292935441CA9BEC814E5D514112731E2C9593544190D486F6575D514191832F3B979354419F0A8F875D5D51416C2B116F9A935441CBD000F6605D51411D45CC459B935441C8F12214655D5141C1ADFB209A935441A2990448685D51417FF3C55D999354417F5AA9506C5D5141CC227672999354419BB93249795D514157EA1B969A935441A68BE0627F5D51410804D76C9B935441EA4F0F51875D51414E2267A79B935441DF2DF915905D51414E2267A79B9354410690100D945D514178B08D049E93544107158DA2975D5141734C338D9E9354412F1E376A965D514169FF01099C9354415A5F2C43965D514198A451599B935441DEDD90F49E5D5141E2263C0B9B9354414B5E3826A35D51410D6831E49A93544150470F33A65D51419D08ACD09A935441F481EC27AB5D5141C1ADFB209A935441AC09FBA0B25D51410F94404A999354415F2DAFA2BA5D5141E5524B7199935441FE033220C05D514159162BFC98935441E1CC3572C75D5141E5524B7199935441B0CD84D5CF5D51417B8F6BE69993544108DFE447DA5D51410B30E6D299935441C624AF84D95D51419F34BB3699935441EAA7E899E15D5141A5D060BF99935441AD510D4EE05D51415286C11E9B9354412B621E5DE25D51414ABE0C309C935441189A696EE35D51410D6831E49A935441F4ECA64BF15D514145C9B5D49B9354419DD758601A5E51413CFF2E14A1935441BCE35A621A5E51415C310CF2A0935441A8825B8B1C5E5141A79A7458A193544195A95725305E51410A696CD3A59354415AED67BF475E51417A5A19BFAD935441A737ABF24A5E5141E647366DAF935441F4A2DB774E5E5141120EC558B1935441EC51B8CE4F5E51410AD7A300B3935441AE47E14A555E5141C3F5286CB293544148E17AD4575E5141295C8F52B393544148E17A145F5E5141B81E85FBB5935441F6285CEF595E51415C8FC2D5C6935441264ED56D595E51410C587663C8935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE93544166666626665E514114AE4781B8935441AE47E19A675E5141713D0A17B9935441C0E40AA8695E51411DA27CD1B993544109A787866D5E51416D7EF435BB93544114F5176A6A5E51419F213B1EB79354419A545F9E745E5141794808D3BC93544197FAFD517C5E51411336B443BF935441E20165997F5E5141C0EB14A3C0935441898213E8815E51418C05D1A0C193544166FB4CB5845E5141E9793B00C393544171CDFACE8A5E51416326F297C59354412F3474728D5E514115C0F972C693544106293E788E5E514130E231D4C7935441067629B3935E5141109353FCC9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC93544114AE4721CA5E51415C8FC2D5DE935441AE47E16ACD5E514133333303E09354413D0AD783D05E51411F85EB31E1935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354417B14AE77D85E514152B81E35E49354416F69AF8CDA5E5141FD112BE4E4935441A96FF248D85E514117951A64EA935441BA712294D85E5141C714E656EC93544103EBB6D9DA5E5141096E834CEC935441BA8CF6D2DB5E5141FA4869EBEA935441FE03B2A0DD5E51411E66B700E693544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354418644B3B5ED5E51410DE22068EC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F793544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC935441C3F528AC185F5141D7A3700DFE935441250001C8145F5141A107C86103945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E318945441713D0A27165F514114AE47C10E945441295C8F02205F51413D0AD7530194544164AA4760205F51412542C2EE00945441C8CD93B9205F51410525FB88009454418FC2F548295F514185EB51E803945441AE47E1FA295F514185EB513804945441EA7C720A2D5F5141B6F1A95E05945441913E16292A5F51414349B595039454415AAFD0B5235F51412B64F6A9009454414E9A448E195F51419A0624CDFC9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B421794544101BEDBEB625F51417171B97B1894544177FC34C9655F514105C0F8761994544101030000000100000005000000631EA276255D5141021E8369829354411DC4753E245D514194988E3483935441B81673AF245D514168C2DD57839354418E31BF90255D514193A7917682935441631EA276255D5141021E83698293544101030000000100000004000000CB19A540195F5141671B8B5CFC935441EBB03C1F195F5141B09B0A91FC935441AA50D52C195F51412D844D96FC935441CB19A540195F5141671B8B5CFC935441010300000001000000040000000544B31FE15E5141678628BEE0935441615D8B93E15E5141464471ECE09354416D09AF95E15E5141DD683AE6E09354410544B31FE15E5141678628BEE0935441
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441AD2E8ACE776251411602D441E994544118F9273A7C625141997C79D1EE945441DEB55F7F84625141978F4183F994544126D0F5C6876251414D8873ED00955441E68D576C846251415E80A0A50295544140DBECBE8A625141F18D766A0995544172A59E589662514152DFC79618955441E90372CD9E625141333A9EE32495544123BE327D9F62514173094BD825955441788DA758A16251412418BBD427955441C793CFB6A2625141D0432D4B29955441C53D35E4A46251415C4C3D9F2B955441B0AB2CB1A762514101C3F09D2E955441EF92368AA86251415C0467762F9554411074592AAC625141769BBF8732955441E2291E89B06251418BD7E30036955441595889CEB7625141F927A1E03A955441D28BDCF0BF6251410C6C9F5F3F9554417A7E037DC1625141F75AAF0140955441F3AB3B3CC462514146D82A1B4195544123B083FDC66251419284712D42955441C8A221D2CB625141D39B590E4495544198BD914DCF6251418B6CEBB44495544119678018D162514100474E32459554415B98E221D562514159E78E5946955441E2ED39F7D56251410594BC724695544120F67C45DA625141345A37D14695544165394998DE6251411FA91530479554418D6877AEE2625141EE5B0E57479554418B96936FE7625141490AB441479554412FE553E7EB6251415331A32D479554412E5616CEEF62514128891D1C47955441919FCBF0F462514102E2E2FC46955441ACEC754CFB625141B3E5A2BC46955441998C59C40C635141293A963C469554418745772C1D63514148D135BF459554417F42A8D7216351410670CA4846955441A059CCB6226351415D33F964469554414E46F22B246351417898D97D46955441531F6BAA286351419D518CCA46955441AFDFFE322B635141F06672CB469554415706F8342D635141A52711A6469554416CEA9BB3326351416912C43F46955441490B9F3A3863514199F64B494695544107B2414D3B6351418AA3BE5246955441BF1948F53F635141069E7B5446955441D038C19945635141D9963F03469554411FEF9D9349635141D87601CA4595544115508DF84D63514170D0BD8A45955441CB3435AD53635141FBE0444A459554414E1864FA5D635141493846EE44955441EE36756765635141DC7841FD44955441B1B5864B6B635141F78A178C449554412CEAFC4C6F6351414E77243F4495544129DC3EA373635141ABE6DAED43955441825344FF7863514138D2806C4495544188BED6067E635141FC225BE34495544187E7FCD0816351418B9C0F8F459554413A788513856351410AEECB3846955441CDED791D886351412A2B19B846955441FE72375D8D6351413FACD8C44795544179728F9B93635141F3F66F6048955441150CBC05996351413D4F51184995544106DC10E19E635141B31F4EB5489554413D2976EDA06351411D271EBE4595544192F8A6D1A2635141CC3B584D44955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E453F8D3AF6351414F257F5F3B955441092E1EBBB263514130DFB02939955441E6F32383B4635141A2860643399554410E45A4FFB86351414F257F5F3B95544103130FA7BC635141EF7D41503B95544169D154C8C0635141E87AAE1C3B955441E664BB76C263514149AFFAFC3A955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441AC83EA4DEA635141FA4AFD5E5F955441A5E5B4B4F4635141E18FCD8C64955441FAE6A50603645141DD6E32424395544187DD39E00864514100A4BAFD44955441F03201C0096451410FE63E4245955441E4B8787A06645141345227B64C955441BA2011B800645141CB4EDCD459955441D3C04DC5FA635141F5E7CBB7679554410E72B0C906645141280E3FC76D9554410A922B580D645141856AD8276B95544170EEAD9216645141C00069B7519554415A4A926E1164514147188A624C95544138CCC41D0B645141CD96CB25459554413B990B4703645141B23AC7CB42955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441E683B3B219645141FEEF69C146955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB514836955441B9EF434509645141E53824983595544160E274B708645141B9C1D47835955441471127C607645141C1046AA335955441682B482506645141EBC3FAEC35955441BA5289AF0364514147BBDBC23595544195D65DFA01645141D87E1193359554411717DE24FE635141F82B4FDD349554419CACCB51FB6351414D0507F534955441BB25F92DFA635141B7BE820A35955441F3218316F66351414DB4315A359554412110BF02F36351413B881F843595544114C35F7CEE635141743CACD03595544123E1B725EA6351412771524E369554418693B0CBE46351413E12A370369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544100C39723B56351419B2DCB8038955441214B70B7B4635141FB22E31F389554416F791592B2635141B81C909337955441E8D739D5B063514106F9B6433895544159D89982AF6351417582CBD9389554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441054CE6CE9E63514102F6AC4C3F955441550555FA9C6351411486B725409554413922674197635141BFAECFA441955441F16B41F48C6351412B6CA344429554419167132083635141B8CC25E2409554411700B8637D635141F522030C40955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554417E712BBD6A6351411A6566AC3E955441B84DE1A96663514169A69C3B3E955441471C36D161635141B9E7D2CA3D955441D5EA8AF85C635141BC8501743E955441BDE7DBAC58635141C3D498C83E955441A4D1F25E55635141739362393F95544196BB09115263514123522CAA3F955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441AAFF2272ED62514158DCA68541955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF10495544138A8F958886251419899C05EF9945441EF8D63118562514136BB243CF59454417BD7C35C80625141A272FAF5EE94544128BD2D157D6251411DE456AFE9945441C6E810CE78625141A45F3244E494544149466FD07362514118F98A6BDE945441BFE946D36D6251418A7EE5DBD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441D001B4FF3B62514154E53976B8945441D527F5FD3A625141D82ECA35B8945441288CDA453A625141871273EEB79454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB594544174B7A968296251415BAA7DCFB29454412984C2491E62514129B74A38B094544122C4D5EA18625141556AD555AF945441E7D0964511625141EF837B35AF9454413DB7D2C20462514190DDC307B09454415D6AC807FB615141C8D0735BB19454413E9489C4F261514102DFE5EDB2945441F365F5C5EF61514102DFE5EDB2945441A155DE59EC615141F2106137B294544147634480E8615141FB06E25BB2945441A24216A8E16151411B996CEDB394544130A074AADC6151411CA3EBC8B3945441D5A35BF5D861514112AD6AA4B3945441D47C958CCE615141237BEF5AB4945441411724B9BD6151413453F3ECB4945441C7888072B86151413453F3ECB494544113A44CBFB06151412B67F1A3B49454416C6F2030AA61514133497411B5945441A8BC67C6A1615141237BEF5AB49454411C56C0ED9B615141258FED11B4945441B97724CB9761514114C1685BB39454414DA307849361514114C1685BB39454414883E36E8A615141939D279CB19454417376FEE982615141F9435C86AF94544170B694CE7E615141F203BA93AE9454412FC3DEF37A615141552AB01FAD945441C49CDC5977615141F2C3945DAC94544160F69B61746151411E771F7BAB945441B8DC6CB770615141E7836F27AA9454411AC33D0D6D615141BA90BFD3A8945441E3CF873269615141B5903C90A7945441437639D9656151414CEA7EDBA5945441A41CEB7F6261514114F7CE87A4945441A9DC42065F615141DC031F34A39454410703B64E5C615141735D617FA1945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441C0F3C3EA416151410F33C9A593945441151836A33E615141523721C29194544166E186093B615141F6B937838F945441A3B8B8AF37615141F08C110D8E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441D9DC26E32B615141D67D57E287945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F9454418BCF93510F615141C81A7DD37D945441E93A1CDF0A6151419366FF9C7C945441D48AE5F305615141CB2F81AB7B945441DAB4EDA301615141BB91C1777B9454418661F60EFD6051416214C2327B94544186ED3E8BF8605141FE96C2ED7A9454413ED6C65DF4605141473A83977A945441593C4E75F060514185A1C4D979945441492AD7BDEB60514190DD43417A94544123A06137E6605141957B03757A9454411AE32080E1605141321A3DCC7B9454410E02233FDF605141C70745F17B945441073FD4C0DB6051416BE4A79E7C94544192DE8167D76051419C8C09037D9454415A73D184D36051415D1FAF547E94544172A2A1C6CF60514132E04F827E945441A11EB21ACC605141B01451CB7E94544117FA3BDDC66051412E4952147F945441804CA971C2605141DC25B5C17F94544179C5360FBE6051413376788A80945441ADD844D1B96051417C6B1A0181945441806D94EEB56051413E3A9C6E819454413AE39ED5B0605141862F3EE58194544134205057AD605141B7D79F498294544110E39A50A8605141FFCC41C082945441D085CBADA4605141DD7F01AE82945441B2753C1DA16051415BB402F782945441D78775799F605141ECDA22008394544122CA537D976051415186071B84945441921E6BDD8D605141CFBA086484945441BA1309CF8560514117B0AADA849454413285BB99826051411C47A848849454414E4B89497E605141822E697F849454411012D6677860514114032600859454410AE168B871605141D58EC74C8594544154C834D46D6051415E7784B3849454417D674BC0636051412F1A6E808494544134208CC25F6051416E8ECC3384945441225785DF5B605141C54D13288494544117075DC55A605141C81973678394544171057161566051410F5F4BE881945441067415B746605141EA74A21D7E9454419EE08F653C605141E618F7D478945441F613480C36605141A710A16F759454413A26A6293160514188B6A7BD729454411E20F1B22060514128FA93DA6C945441337939EC156051414E8449C36894544177BC2AF00E60514144B1E87864945441C5F388B8086051418CE10585609454416F238A7908605141FBE489FF64945441584FD4540E605141ED3516C167945441DA1A326E12605141D9E15A0F6A9454414DF0744E1D605141E2B4BB596E945441BD506349266051417470D90A72945441BF524AC62B6051411314B9097494544168561DA735605141C92CEDED779454411ACD5DF03B605141EE1696B87B945441E78EBEF2416051417A4246667F945441BE472216496051418AA6FBDB81945441EA3B62354E605141FB2DB21B8394544160B0BAE358605141F464C4928594544199A1D09F586051415320940388945441766C633153605141A6813A3786945441EBCA828B47605141EF2F6D0F839454412DFD95A0396051411AD707BF7D9454412B2E2FC632605141F512630E7B945441B50E77D329605141CBE8D180779454411E07B3F3276051419E3F2FC2769454417345AB601D605141F790CF0372945441C9D64A3817605141E6E3418C6F945441D45C32270860514122C9262B66945441D7A3707D08605141F6285C0F60945441AE47E10AED5F514148E17AD44D94544152B81E45EC5F51419A9999594D9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441C683D4E39B5F51417C6FE39A24945441A9FA326A8A5F5141237722711E9454410EFBD60F795F51419404F67319945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C94544165CC575C515F5141D7B507330A945441CB617BF64C5F5141F0208B8908945441F70FD6244B5F5141D6EB90D90794544193E793C4495F5141EDB0705407945441A105556B485F5141F5EEF6D106945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA2019454417FB97999345F51411D919014FF9354418DD6EEB6345F5141C50EF62EFE935441489D4AB2315F51414CB8A1B1FC93544107A7F0FB2E5F514129C3A174FB93544128C72EC72D5F51418EDC62EEFA9354416959D23C2B5F5141311619DAF9935441BED6A9AF295F51410D4A6031F993544169C92166265F514119D9DFCBF7935441C39A4AD5235F5141A365D5B4F69354417C56A34B1D5F514104D8D3EDF393544118B23801185F5141A5C570AEF1935441902EFA55145F5141EDF9D65BF093544196359AC0115F51412849F47DEF935441CBCA63F00C5F51415DC38EE0ED9354411C5E9014075F5141DC1061E9EB935441B0CF56CA015F5141216D0C23EA935441CFB39F0EFD5E5141BE7A66A0E89354413380A05EF75E5141017111F1E69354418694D94BF35E5141DA7E26BCE5935441081D175AEE5E5141D0D12C45E4935441B4C410B2EA5E5141B3D5E12FE39354417BB6568FE75E514156021442E29354413583915EE55E514154DEF39BE193544177E13FFDE15E5141DA294EC8E0935441615D8B93E15E5141464471ECE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441CDAF45D0D65E5141C15AF324DD9354410BD7C057D55E514192F5E7A7DC9354413A2E3605D45E5141839AA90FDC935441AE47E10AD15E51418FC2F5B8DA9354415F46ED77BE5E51414F2D6E43D2935441DA7C568FB65E5141D148D945CE935441D9CD50CEAA5E51414B6B3A44C993544160074876A25E5141D278B94EC7935441267C82889D5E51415D24C0E7C5935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441BB341329685E5141679FA42AB1935441B132B95E5B5E5141AE32CD71AB935441A3DC451B575E514126E69352AA93544163011F134E5E5141B3CA124BA7935441D85E72B0485E5141D2FBCA62A59354415588683A415E51417E3318A3A29354416663AD0E3B5E5141A9C9E5E5A09354415A1F81AE365E51413C591E00A0935441580C0D66305E51417E54016E9E935441A4703DBA2B5E51413D0AD7539D935441EAF51B5B255E51419B97BF929B935441713D0AC7205E51410AD7A3709A9354416FCD083E1E5E51413A1D6BC79993544150C356C3195E51411CEB64E79893544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB51989493544131EF0ECBD15D51412FBA82B291935441545E6174CB5D514107E90A9691935441A2ED9800C25D51414C8BFACE91935441A192271BB95D51411231C4CE909354413B05548BB15D51416914B9B292935441908DD789AA5D51412FBA82B291935441C98C9CA4A25D514191E530CF92935441916E1BBE945D5141E0CFD94092935441931F0CD3885D51419728336994935441667860DA885D5141A971678B9493544107AEF89C8A5D51413F8612FC95935441ECEDC10D925D5141E079D01A97935441E3ADAF88945D5141B6B5094E98935441C41F2A05975D5141B79E9FB298935441E74085D9975D5141B79E9FB298935441CCF10837A25D51413646007798935441FC9A3A0EAA5D51416B2BB49597935441D49661BCAD5D514116C24B2F97935441C03562E5AF5D514195315506979354410DA1926AB35D51414AA7FF4D96935441A798E0C6BA5D5141BFF51BD395935441C3E012C7C45D51413F8612FC9593544126AF0A42C95D5141F4FBBC4395935441BE83A32DCD5D514134234B06959354415B94BE60C85D51411580718B9693544120D8CEFADF5D5141F6FD846298935441AB89B275E05D514155E9D9F196935441B8AC67E6E35D5141362513259893544161A84580F15D514157A9C76C999354418E17BD2E055E5141839043AA9B93544118AA2C3F055E51414992501D9C935441E35F3843055E51412E48C8959B9354414CF2AD76125E51418F35E5439D935441719BDF4D1A5E5141F00115A09E9354416359B64E1A5E5141B63B9ABC9E9354410BE80959365E5141762C7EB7A4935441A8770E11405E5141786F98C7A7935441E16CE746605E514189526F59B393544153DA8F615F5E514186C1E5BDB493544143449E7A5A5E51415F055B0CC7935441FA17F788595E5141C7135C6DCA935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE935441E94E4744665E5141523DA144B8935441658333D75F5E5141F574A0EFB49354417AB573AC605E514148FAD3B4B3935441B800B615665E5141ACF0FADBB3935441988CFE026A5E514157075F51B593544168800117725E514156E67586B9935441480C4A04765E51419C37CC37BC935441FC7264027C5E5141D1F67B2ABF93544149D8B52F7F5E51410681D776C09354413CA4D467815E51416F1BBA69C19354416F522AE5835E5141ACC4409AC2935441F4B875FB875E5141E5307364C4935441AB741A098A5E5141D933D943C59354412F3474728D5E514115C0F972C69354410F9B65A48E5E51411F1967E6C79354416DDC689D935E5141A03E5BF3C9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC935441B87B7764C95E51418E716AE2DF93544129F1F3ADCB5E5141D3E2A3F0E09354411EB296ABCE5E5141FFE6E62BE29354413FB6D9E6CF5E5141D3E2A3F0E0935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354416F69AF8CDA5E5141FD112BE4E4935441A0C3DD9EDD5E5141A2A05012E6935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E293544146732864DF5E51415C0F346AE09354410A728673E15E51418AB04048E1935441F25B97BBE05E5141D223BC5FE393544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354413D0AD7D3E45E5141D7A3700DE99354416DFD97D0E65E5141988879D0E9935441E10C9B01E95E5141E72768A3EA935441DD293C6AED5E51413630C14BEC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F79354416AC9BC59125F514147AF6327F993544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC93544112DCE5FC185F51415920342AFD93544166167E90185F51419479F5C9FD9354413DB432AB145F51417A7EC73F03945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E3189454419F9AA20D135F51411011CC1A1C945441DA6C93AA245F514135CB889D029454415969F5F9245F514137D2C4FE01945441D2410D7A195F5141C18A1551FD9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B42179454417FA3DD176D5F5141EC58DDF71B945441A7C312D66F5F5141B0AEE7DE1C945441F3748B7D745F51419D18EBD91E9454414575A574785F51413756018220945441592284F57B5F5141B58FB2F82194544176E4424F7D5F5141B35E4E322294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B94544139C42A8EE35F514142CF05BB4F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441AB06401B03605141071316766594544114411897086051417C6384F6689454418CE5AD7B0E6051413581BDFA6B9454418973BB1813605141CA882E5E6E94544154FD6D4D20605141B839F84474945441BA0B58DB296051417D618D787894544171BB84A232605141333D1B1A7C94544136F0FA703860514184F8FC807E945441ED0CF6FB3F60514196E82E4B81945441EA26CE67486051410EB4ED3F8494544103FE194E4C605141A6D3599E85945441D4F712F2506051413C363E0687945441AE4CF2AB5260514184AB1181879454412D7BF1A8586051417864C9CA88945441D5F2DC695D605141634FD4C489945441E202311E62605141795D5EF489945441F731D10863605141DF51A1FD89945441F41804EB63605141DEAC03118A9454413982925765605141F89795338A9454419C0E49C36B605141412574CF8A9454414A351E516F605141855B40118B945441E23340A4746051410A59CA6F8B9454418BB9B3E07660514160CF135D8B945441A24025607D605141A3746B708B94544194D6827E88605141A16A326A8A94544113CF5BFC9E605141A7621B1C889454415BB094C5AE6051419A5D98A4869454419017D0F0B3605141AFB2B692869454413AFDE6FBC460514197AD331B8594544110CEE70FE3605141690BBE5081945441B29177A4E7605141A0C5CEF4809454415E54BF90EB605141AFA002B380945441D04F6913EE6051412394A7718094544129C2D964F2605141F9E83D3C80945441B1AEE3F5F460514178C30D2680945441CDAE7D0CF86051419D403F0F809454419F0DD218FA605141219B1A38809454414C0A5EC6FE60514147E0538C809454411666E3560161514179C343A880945441440A316304615141A56BC319819454411AC6DBEC07615141CA7B6A8981945441736BEDBC096151419A92CFBD819454410F9164120C61514163247D2A82945441FB9ADDA7106151419E450E1E8394544113D92268116151417E601A5783945441012254DB1A6151410EE72D20869454415119390D22615141810466398894544188DD35DB23615141322E094088945441E1D09BDA24615141CE67843888945441A82336CC256151412B1F7A26889454416C3A484B27615141898DA44E85945441B6359AE428615141521C302386945441B7EA3EE9276151416E81A9B4889454418F11DA5E28615141068D4FEC8994544173A72A762B615141786F58F78B945441127AC7E42D6151417B02F6608D94544147CFC81A35615141DD1ECC9591945441A311E2BE3E6151415A719E5D97945441A4FDF0A6466151417A3A51BF9B945441FFCF5D0B516151411EE2FC56A19454411A5B5FAF5561514113709DABA3945441E4AD657059615141E5FAAD62A5945441005AB1115D6151410F843F0BA7945441A3312294606151418F4DB8A5A89454415363BA6E61615141792AF5E4A8945441CE72388A66615141A53947F4AA945441AEBD89AB69615141277ED042AC945441F9173B1B6C615141153B7951AD94544143C7D0316E615141E0D78AEFAD9454412268D0726F61514108B9C14BAE9454419F9AA22D7361514107C5E0EFAF945441B23D25BF766151418665BF29B194544140D2F1A67B615141A6F65CD7B2945441A5A84EA07E615141754DD4DBB39454416D41AB0F80615141C79AD532B49454412A3B98698661514116425AA0B59454415F34BB8088615141E393A718B69454411B992C688B6151414F77A086B694544109B188B892615141C9CCE291B794544146FA82CBA96151412A12FCE5B8945441BF4ABA58B1615141888A8A10B99454412532FD6FBA615141FFB5B82BB994544176016DF4BA6151413D02E656B994544162523876C261514134C3DF82B994544101465D38CC615141E2494141B99454414345AACFD4615141834CD5FEB8945441356D753AE361514168642B47B894544136FA62A0FB61514172B51F44B69454413D06107812625141F7883F65B4945441F16F65FC17625141B2073F88B494544133BC5DE41E62514107776BBEB4945441F2FC733624625141BC0E70C5B5945441E52AD4F72562514118E6691CB694544155D7868828625141D515C1F3B6945441358E208B2862514193A7ACF4B6945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 415044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441F6306C92735F514101C9CD78209454417C58F7C17F5F514130CD1D9825945441ED7D8F54935F5141FF1587552C9454417A8C724F9B5F5141BB8EE3F92E945441C6C6F8119A5F5141D81105D82D945441C8C62A70935F514154D16DB72A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B945441BF2BC22BE35F51410D18E4754F945441BAC767B4E35F514129F57ED74F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441A0719D4B02605141E7FD7FF1649454419EF0F19808605141D7DCB2F7689454412DC905FD0D605141D5EB54DA6B94544146C71D410E6051419D188E1F6D945441381692450C605141A5E0420E6C945441BDE45E18066051417A1AD19F6894544109C1AA16FE5F51414BA3D335639454415B86CD21F95F51418C5D09F9639454417641524802605141EEDDB02A68945441A63DCC470B6051415296A36D6D945441904908F30D605141D50A0FF46E945441B0ED63261A6051410F820C5E74945441F2A799E91A605141174AC14C73945441B2C248DD0E605141E2361E5A6D9454418CE5AD7B0E6051413581BDFA6B9454414A6A59131360514171B5C65B6E9454411434D8CD2760514147512D9F779454410CB1D5B53A60514198E542717F94544192F612504D6051412F8EE7F88594544164A65B595260514171B24B6E87945441A2A60849556051417E122919889454417172DE685D6051419043CAC4899454416390222E63605141296D1AFF89945441FDD8E8FC6B605141B205EBD48A94544108F85E9174605141A3746B708B9454410B9880D876605141C966FB5C8B945441A24025607D605141A3746B708B94544179AF3B3B7D6051415756624F8C94544155ABEB1B78605141C5FA2F5D8C9454415E9275456D605141CE7B90FC8B945441BD34E6D0606051410FB616BF8A9454416C133AA15F605141CE7B90FC8B9454414BF6DD9063605141DF3034A28C945441E9B964316C605141F0E5D7478D945441D851ACC670605141F0E5D7478D9454417BAF6D9976605141540945B68D94544152B81E557D6051417B14AE578D94544148E17A947E6051413D0AD7938D9454410AD7A3E07F6051411F85EBD18D9454415C8FC2D581605141F6285C2F8E9454418FC2F5788760514114AE47E18D9454411F85EBF18C605141D7A3704D8D9454413333338395605141000000708C945441F6285CAF9C60514185EB51B88B94544166666686A1605141A4703D2A8B94544152B81E85A5605141EC51B8BE8A94544133333313AA6051411F85EB518A945441D7A370FDAD605141EC51B8EE8994544133333353B26051415C8FC27589945441713D0A97B66051411F85EB018994544133333323BB605141CDCCCC7C889454413D0AD763BF6051415C8FC2158894544185EB5198C360514148E17AA487945441F6285C3FC8605141CDCCCC2C879454419A999919CC60514114AE47D186945441AE47E15AD060514152B81E5586945441EC51B88ED46051419A9999D985945441713D0AE7D86051410AD7A3608594544114AE47F1DC605141CDCCCCEC84945441F6285C3FE16051415C8FC285849454411F5E7C41EA6051414AEE0DA183945441C5085BADEE6051410B820517839454413F157D69F76051413A396AFB829454416BC4618D0D61514138C0CA9985945441D5652BDD1561514171B24B6E87945441E6A52C9922615141640BB99D8C9454415A690C2422615141769B227B8A94544192D61063206151418EC731E1889454414208E94911615141960A6A3A84945441B4213B690D615141B892DBAE8394544189E9A74307615141B0DFF84782945441C889253202615141E917BECB8194544100281440F7605141D8621A2681945441924F9946E260514167712F7F8294544191917DBDE26051414E40345781945441F6BFF1EFE760514120D1E3EE809454410818237CEA60514138DF23CF80945441344AF6F6EE605141068C835A80945441866E595EF36051414870A333809454418CAE9CECF76051418954C30C8094544158DA50C5FD605141C5A76381809454411666E3560161514179C343A880945441D060F683056151416A32C4438194544195BC19390A6151418093D4CB81945441F9111E4C106151416171D50283945441E7FFF23417615141CBE7A60F85945441C5CCFA2322615141322E09408894544114513C4424615141322E0940889454416866FDC8256151415820992C88945441C67BBE4D276151416411F74985945441D9AC5FF928615141558077E585945441B7EA3EE9276151416E81A9B488945441E93DDF5D286151414F5FAAEB899454417576D17A2B615141B9D57BF88B9454415D43D96936615141916240599294544152013F763E61514115DA433597945441315E94FA45615141C3D456629B9454412A496805486151411E055F7C9C94544103CA8B6150615141F6D6BA00A1945441A2331F2A55615141B892BC6EA3945441E4A854FC60615141EE1953D5A89454412396BD2561615141807585C7A894544159CCFC3868615141616C02A2AB94544154AB2F3F6C61514159AB1361AD945441BAF1916F6F615141BC51544AAE9454411CA7743B73615141D982F5F5AF945441F5E2FCC57E615141EF53B8E8B3945441D6DF73918861514118E6691CB694544192EA5A709261514192EDBA8DB7945441D4CACC7EAB6151410CF50BFFB89454412532FD6FBA615141FFB5B82BB9945441D2C333A7BA6151413EA32155B99454416CB15D2FC361514122561C87B9945441ECD5CDCFD96151414DD92BD8B8945441400A05E9E36151415C6AAB3CB894544160980852FF61514159CA89F5B5945441783EC7C112625141588C3A5FB494544138211FE81E62514178EC88BEB4945441E52AD4F72562514118E6691CB6945441DDE2CC562D625141E3001586B89454418C836E7834625141DD418DD1BA945441BC04276440625141920C3122C09454418E701ECB4A62514194BBF44BC59454413B7AD3DA516251418E9A2752C9945441896EC76557625141B0CCFACCCD9454419C3B955D5E62514135892E22D5945441846C7000646251412E2331AFD6945441B43E65C26A6251417C17253ADC9454413535BDEB7562514146C22D60E894544193BA30DB7A6251412DE07125EE945441A90F07A283625141ECF2B345FA945441549B2CF3866251411D14FDF3FF945441E68D576C846251415E80A0A50295544198288CE08A6251414C6E758E09955441D83AC4309662514170FECF5C18955441C9C8BA609F6251411A87D9B92595544188352E44A8625141B9DC243B2F9554414CB75589AC6251410DE81ED832955441CE7D667AB062514192DAF6F635955441D5364F8AB76251411B7540BA3A955441E2C3706CBF625141765473293F95544137CF6A09C3625141E39ED9A340955441E28DD0E7CB625141954CC816449554413699CA84CF62514105C3F5BE449554415C655844D5625141136B676346955441BEFD73C3E0625141B19CAB5F47955441BEAC837CF362514179E1940B47955441BD76E3F7FF625141AAC8728D4695544134A6F9AF07635141136B67634695544145A5ECB11D635141A3F439BB459554416F9D419F22635141136B676346955441AE1141032A635141E28389E146955441FB2DB20B336351417D0D5C3946955441F07DF93C3F6351415914D95E469554414AA1A471506351417639236745955441621376915E635141A72001E9449554414E7FF24965635141AC5E78FF44955441D5E0249773635141FEEEBCEC4395544130A507447E635141A72001E9449554415C8FC2A5816351418FC2F5C8459554413D0AD733856351410AD7A3704595544185EB514888635141C3F5285C4595544148E17AC48E6351411F85EB4145955441F6285CCF946351410AD7A300459554410AD7A3909A635141CDCCCCBC4495544152B81EE5A06351418FC2F56844955441AE47E1EAA16351410000006044955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E84EAE76B4635141B9A684B63B955441854A52EEC16351415330570E3B955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441C1CEFFD0EA6351418AA9CC2C5E955441AE83EA4DEA635141FD4AFD5E5F95544157FAD8EBEB6351417AFFF63060955441760C703DF263514129F0A66463955441A7E5B4B4F4635141DE8FCD8C649554417E49E925F5635141A9110D8663955441FFE6A50603645141D86E324243955441560FE0C0096451413D384340459554417FEB9268FC63514125A2A0A663955441CEC04DC5FA635141FAE7CBB7679554412CBB87E3FD6351416B64E04C699554411072B0C9066451412D0E3FC76D9554410F922B580D645141866AD8276B95544175EEAD9216645141C10069B751955441FFAFFCB011645141E19C04AF4C9554410E2D5F280B64514111E7F928459554411996F53C036451412EA0C0C842955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441BB8B07A2196451414C267EB746955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB51483695544160E274B708645141B9C1D4783595544113ABB3EC0564514192DAF6F635955441C99FB94F026451415A1FE0A2359554416EC086E0FD635141534BA7D0349554418A2BBAEBFA635141EAA8B2FA34955441FE64A9FAF66351412264C94E35955441E214C6B1F3635141B9C1D4783595544122BF659AEE635141F17CEBCC35955441A0F854A9EA635141C0950D4B3695544157DD9903E5635141622CF66E369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544166666666B46351415C8FC2653B9554417B14AE07AF635141EC51B80E3C9554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441550555FA9C6351411486B725409554415DF4DD8E976351418BD01DA0419554416BD2EFB78C635141F0464B484295544150B8ACF37C6351417D28ACFB3F955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554410AD7A3B06A635141666666163F95544152B81E45676351415C8FC2453F955441A4703DDA63635141333333633F95544100000090606351415C8FC2853F9554418FC2F5685D635141CDCCCCBC3F95544152B81EB559635141AE47E1DA3F9554419A9999695663514185EB51F83F9554411F85EBF15263514185EB511840955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441F6285C4F0A6351410AD7A3D042955441C3F5286C026351413D0AD7234395544114AE47A1FE62514100000040439554410AD7A3E0F9625141CDCCCC6C439554410AD7A350F562514114AE47A14395544185EB5108F16251413D0AD7C3439554418FC2F568EC625141EC51B8FE43955441A4703D9AE76251417B14AE07449554413D0AD733E362514185EB5168439554413D0AD7A3DE6251419A9999D942955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF104955441E17A143E83625141B81E856BF59454419A9999797E625141666666E6EE945441CDCCCC8C7A6251410AD7A380E99454419A9999497662514148E17A94E3945441AE47E1DA71625141295C8F72DE945441D7A370ED6C625141CDCCCCDCD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441E17A140E3B6251410AD7A300B894544148E17AC4376251413D0AD753B99454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB59454419A9999392962514185EB51B8B3945441AE47E1DA21625141E17A147EB2945441C3F5284C196251418FC2F518B2945441A4703DAA116251418FC2F598B1945441D7A3708D0A6251411F85EB01B2945441CDCCCC5C0662514133333333B294544100000010026251410AD7A380B2945441F6285C4FF761514114AE4711B394544152B81E05F3615141AE47E14AB3945441B81E85CBEF6151410AD7A370B3945441E17A145EED615141AE47E18AB394544114AE4741EB6151418FC2F598B394544133333383E8615141A4703DEAB3945441CDCCCC0CE06151413D0AD793B4945441CDCCCC4CDC615141CDCCCCDCB494544185EB51E8D861514133333313B5945441713D0AC7CE61514166666606B69454413D0AD773BE615141E17A146EB694544152B81E05B8615141295C8FA2B694544133333383B1615141713D0AD7B6945441713D0A17AA615141D7A3705DB6945441333333B3A1615141EC51B8DEB5945441E17A14CE9A6151413D0AD773B5945441D7A3707D97615141B81E85FBB4945441713D0A379461514133333393B4945441F6285CAF8A615141C3F5284CB3945441A4703D4A8261514114AE47C1B0945441AE47E1CA7E615141B81E858BAF945441295C8F627B61514133333363AE945441D7A3701D7861514185EB5148AD9454417B14AEC774615141CDCCCC1CAC9454417B14AEB7706151415C8FC2B5AA945441AE47E14A6D61514152B81E95A9945441295C8F52696151419A9999E9A7945441D7A370DD656151410AD7A380A69454415C8FC25562615141B81E850BA5945441D7A3700D5F6151417B14AEA7A39454418FC2F5285C6151413D0AD723A2945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441295C8F724161514152B81EB59394544114AE47413E615141295C8F0292945441D7A370ED3A61514133333333909454413D0AD7B3376151415C8FC2858E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441CDCCCC8C2B615141000000F087945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F945441000000400F615141666666967E945441E17A14FE0A615141E17A14FE7D9454415C8FC28506615141EC51B84E7D945441C3F5281C02615141333333737C9454413D0AD7E3FD6051418FC2F5587C9454410AD7A380F9605141C3F5286C7C945441A4703D7AF5605141666666867C9454417B14AE47F16051413D0AD7837C945441666666C6EC60514185EB51A87C9454410AD7A340E8605141D7A3701D7D94544185EB51E8E36051419A9999997D9454411F85EBA1DF60514114AE47F17D945441295C8FA2DB605141F6285C4F7E945441A4703D4AD76051410AD7A3C07E945441E17A142ED360514148E17A247F94544114AE47D1CE605141713D0A777F945441A4703DDACA6051417B14AED77F945441F6285C3FC660514148E17A348094544133333313C260514185EB51A880945441295C8FD2BD6051417B14AE078194544114AE4741B9605141CDCCCC6C81945441D7A3700DB56051413D0AD7D3819454418FC2F5C8B06051417B14AE3782945441A4703DBAAC605141B81E85AB82945441F6285C3FA86051410000001083945441CDCCCC3CA4605141EC51B86E8394544185EB51689F60514114AE47C183945441C3F5289C97605141CDCCCCCC849454415113DC0D8E605141359F2FC985945441F3BB5DF7856051414654D36E86945441E1ED437B7A605141F57F127A8A945441B54F87CB7E605141F57F127A8A9454411973F4397F6051410635B61F8B945441AE0206768D6051417626A1C6899454412DA9626493605141EE4BCF7389945441999AE94E9F6051413A86553688945441C8BD2F81A260514100DB68CB8794544117B2230CA8605141B395386A87945441C259A3FDBD605141D2B737338694544108AC1EDCCD6051411C5D464D849454419F7339F8DC605141F3CA941982945441A022FD21E2605141A68564B88194544123EB3CD4E1605141092CA5A182945441064AE9BDDC605141B9B605648394544108AC1EDCCD605141E248B797859454414E92951AC1605141365E781C879454416A14739CBD6051418DA3A87D879454415F153FB9BB605141B02CE48287945441F38DCDDDB560514126CDF8B78794544197F9B70BAE60514100DB68CB879454414565A239A6605141D557597A889454415777CD509F605141A0D4492989945441B4DDCAAB9B605141D227EA9D899454411E35262495605141C2966A398A945441888C819C8E605141B205EBD48A945441A92F2C188760514162904B978B945441B8A135E87D60514178F15B1F8C945441821E26977E60514197135BE88A945441E08423F27A6051417121CBFB8A945441C683F12278605141562F3B0F8B945441700CFB7F85605141D2B7373386945441B7F271BE78605141040BD8A7869454410AD7A35072605141EC51B86E86945441E17A149E6D6051418FC2F52886945441444FADD05B60514168416626849454414F0F809C4660514113E8FC427F945441B87F3C023F6051410E01D7D57C945441D89C66B441605141768CCA507F94544165AB49AF496051410E4EC2108294544193CAD0E3586051417D0DF991859454417894CC9E58605141F098EC0C889454413A656680526051415E9D65FB85945441657B40104760514159B48EEE82945441BA9AC4673A6051411BD9360D7E94544131B8053F32605141353155D97A945441EC6E5ABB26605141ADD31246769454418B95455A1D605141DBF3E5007294544126099B731A6051418FC0A3716C9454414ADA24FE16605141D97747856A945441A2F314F90C6051410F18FB4B63945441DCECB8E80160514153C068B05B945441F780D03AEB5F5141CE7A86B84C9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441EC51B89E9B5F514152B81E25279454415C8FC2958A5F514185EB51D820945441C3F528AC785F5141E17A145E1A945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C9454410AD7A390505F514185EB51F80A945441AE47E1FA4C5F51413D0AD79309945441C3F5289C4B5F5141A4703D0A09945441295C8FC2495F51415C8FC26508945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA201945441F6285CBF345F514185EB51480094544135B4811E305F5141996F569CFE9354411F85EB012D5F5141F6285C3FFD935441713D0A67295F51417B14AED7FB93544148E17A14255F5141B81E857BFA9354411F85EB911D5F5141CDCCCC8CF793544148E17A94195F51415C8FC215F69354411F85EB01165F514152B81EB5F49354410AD7A370125F5141EC51B85EF3935441B81E854B0F5F51415C8FC225F293544133333393095F5141295C8F12F09354415C8FC205035F514152B81E85ED9354418FC2F528005F51413D0AD773EC93544166666666FB5E5141E17A149EEA9354415C8FC2C5F75E5141EC51B84EE993544114AE4741F65E51413D0AD7C3E89354411F85EBC1F35E5141C3F528BCE793544148E17A34F15E5141666666D6E693544114AE47F1EC5E5141E17A142EE59354417B14AED7EA5E5141F6285C7FE4935441F6285C9FE85E5141D7A370ADE39354411F85EBB1E65E5141000000F0E2935441F6285CCFE45E5141AE47E12AE2935441CDCCCCCCE25E51419A999969E1935441615D8B93E15E5141464471ECE0935441F25B97BBE05E5141D223BC5FE3935441FFCFDD42DF5E5141C55D35EAE593544160D6FCE4DD5E5141FBE0443BE5935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E29354415484426FDF5E51419CAF4A2BE09354410544B31FE15E5141678628BEE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441713D0AF7D65E51417B14AEF7DC935441295C8F22D45E5141A4703DFADB935441AE47E10AD15E51418FC2F5B8DA935441295C8FE2CD5E51418FC2F588D99354415C8FC275C85E51410AD7A380D7935441AE47E15AC55E5141295C8F72D693544152B81EE5BB5E5141A4703DCAD29354418FC2F588B75E5141D7A3702DD1935441E17A14BEB35E5141A4703DBACF935441EC51B8BEB25E5141E17A145ECF9354419A9999F9AE5E514185EB51E8CD93544114AE4721AC5E51411F85EBE1CC9354418FC2F528A65E51411F85EB91CA93544152B81EC5A15E514114AE47F1C8935441C3F5285C9E5E5141713D0AA7C79354411F85EB119B5E514133333363C6935441713D0A47985E51411F85EB51C59354417B14AE97955E51418FC2F548C4935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441333333E3675E5141D7A370EDB293544114AE47D15A5E5141713D0A17AE935441295C8FC2585E514152B81E75AD935441A4703D3A4E5E514152B81E55A99354419A9999394A5E51410AD7A3D0A79354415C8FC285425E51411F85EBF1A49354411F85EBD13B5E5141AE47E17AA293544185EB5108375E5141333333F3A09354413BAA5A3E315E514137AE1A039F935441FBF066792B5E5141B12066499D9354419F33F136275E5141FD5AEC0B9C93544188CB9C881E5E5141A505FDD59993544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB519894935441295C8F12D05D5141713D0AC794935441666666B6CB5D5141A4703DEA9493544135CAA38EC35D51413DB413059593544185EB51D8C15D51418FC2F50895935441295C8F32BE5D51413D0AD72395935441AE47E11AB35D51418FC2F548959354413D0AD723B05D51410000006095935441A4703D6AA55D5141CDCCCCAC959354410AD7A360A25D51413D0AD7C3959354415C8FC285945D514152B81E1596935441666666E6925D51413D0AD723969354415C8FC265925D5141AE47E13A95935441931F0CD3885D51419728336994935441667860DA885D5141A971678B949354415AAF9464875D514122D778A394935441758C2FC6875D5141DB336CD390935441A895D98D865D51416BD4E6BF909354414CFE0869855D5141CA287F8B969354415F2D335F825D5141E4AAA8B59693544195D1EDE6725D5141CCA5E5489593544157929D00655D5141507CC8F3939354418B9B47C8635D514137CB3CF8919354412E0477A3625D5141739C9BAE8F9354410C8B36B9615D5141739C9BAE8F935441F511F6CE605D51410FC29230939354413429AC3C585D514154E327079293544122CF622F505D5141545BA6D58F935441747655E6445D5141993F8B248D9354412AE340B6395D5141793AB88689935441CD6854002D5D5141F9BC05878493544188AF809A265D51419066ACAB81935441F1788143265D51415F1F42E48193544114AE47E1245D5141CDCCCC2C83935441C3F528AC245D5141F6285CBF8393544104E3229E245D51410254089B86935441D7A3709D245D5141F6285CBF869354410E9DE4A4245D5141F5B080C2869354419272DCA4245D5141D83AE3C586935441747AE289245D514102028AC886935441BDB90789245D5141C7962BD586935441BFB6402F2D5D51413A259E448A935441EFE00C15305D514180432E7F8A93544176950518395D51415E8C16298E9354412C6CFCD4435D51417DE9CC3292935441CA9BEC814E5D514112731E2C9593544190D486F6575D514191832F3B979354419F0A8F875D5D51416C2B116F9A935441CBD000F6605D51411D45CC459B935441C8F12214655D5141C1ADFB209A935441A2990448685D51417FF3C55D999354417F5AA9506C5D5141CC227672999354419BB93249795D514157EA1B969A935441A68BE0627F5D51410804D76C9B935441EA4F0F51875D51414E2267A79B935441DF2DF915905D51414E2267A79B9354410690100D945D514178B08D049E93544107158DA2975D5141734C338D9E9354412F1E376A965D514169FF01099C9354415A5F2C43965D514198A451599B935441DEDD90F49E5D5141E2263C0B9B9354414B5E3826A35D51410D6831E49A93544150470F33A65D51419D08ACD09A935441F481EC27AB5D5141C1ADFB209A935441AC09FBA0B25D51410F94404A999354415F2DAFA2BA5D5141E5524B7199935441FE033220C05D514159162BFC98935441E1CC3572C75D5141E5524B7199935441B0CD84D5CF5D51417B8F6BE69993544108DFE447DA5D51410B30E6D299935441C624AF84D95D51419F34BB3699935441EAA7E899E15D5141A5D060BF99935441AD510D4EE05D51415286C11E9B9354412B621E5DE25D51414ABE0C309C935441189A696EE35D51410D6831E49A935441F4ECA64BF15D514145C9B5D49B9354419DD758601A5E51413CFF2E14A1935441BCE35A621A5E51415C310CF2A0935441A8825B8B1C5E5141A79A7458A193544195A95725305E51410A696CD3A59354415AED67BF475E51417A5A19BFAD935441A737ABF24A5E5141E647366DAF935441F4A2DB774E5E5141120EC558B1935441EC51B8CE4F5E51410AD7A300B3935441AE47E14A555E5141C3F5286CB293544148E17AD4575E5141295C8F52B393544148E17A145F5E5141B81E85FBB5935441F6285CEF595E51415C8FC2D5C6935441264ED56D595E51410C587663C8935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE93544166666626665E514114AE4781B8935441AE47E19A675E5141713D0A17B9935441C0E40AA8695E51411DA27CD1B993544109A787866D5E51416D7EF435BB93544114F5176A6A5E51419F213B1EB79354419A545F9E745E5141794808D3BC93544197FAFD517C5E51411336B443BF935441E20165997F5E5141C0EB14A3C0935441898213E8815E51418C05D1A0C193544166FB4CB5845E5141E9793B00C393544171CDFACE8A5E51416326F297C59354412F3474728D5E514115C0F972C693544106293E788E5E514130E231D4C7935441067629B3935E5141109353FCC9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC93544114AE4721CA5E51415C8FC2D5DE935441AE47E16ACD5E514133333303E09354413D0AD783D05E51411F85EB31E1935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354417B14AE77D85E514152B81E35E49354416F69AF8CDA5E5141FD112BE4E4935441A96FF248D85E514117951A64EA935441BA712294D85E5141C714E656EC93544103EBB6D9DA5E5141096E834CEC935441BA8CF6D2DB5E5141FA4869EBEA935441FE03B2A0DD5E51411E66B700E693544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354418644B3B5ED5E51410DE22068EC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F793544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC935441C3F528AC185F5141D7A3700DFE935441250001C8145F5141A107C86103945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E318945441713D0A27165F514114AE47C10E945441295C8F02205F51413D0AD7530194544164AA4760205F51412542C2EE00945441C8CD93B9205F51410525FB88009454418FC2F548295F514185EB51E803945441AE47E1FA295F514185EB513804945441EA7C720A2D5F5141B6F1A95E05945441913E16292A5F51414349B595039454415AAFD0B5235F51412B64F6A9009454414E9A448E195F51419A0624CDFC9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B421794544101BEDBEB625F51417171B97B1894544177FC34C9655F514105C0F8761994544101030000000100000005000000631EA276255D5141021E8369829354411DC4753E245D514194988E3483935441B81673AF245D514168C2DD57839354418E31BF90255D514193A7917682935441631EA276255D5141021E83698293544101030000000100000004000000CB19A540195F5141671B8B5CFC935441EBB03C1F195F5141B09B0A91FC935441AA50D52C195F51412D844D96FC935441CB19A540195F5141671B8B5CFC935441010300000001000000040000000544B31FE15E5141678628BEE0935441615D8B93E15E5141464471ECE09354416D09AF95E15E5141DD683AE6E09354410544B31FE15E5141678628BEE0935441
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441AD2E8ACE776251411602D441E994544118F9273A7C625141997C79D1EE945441DEB55F7F84625141978F4183F994544126D0F5C6876251414D8873ED00955441E68D576C846251415E80A0A50295544140DBECBE8A625141F18D766A0995544172A59E589662514152DFC79618955441E90372CD9E625141333A9EE32495544123BE327D9F62514173094BD825955441788DA758A16251412418BBD427955441C793CFB6A2625141D0432D4B29955441C53D35E4A46251415C4C3D9F2B955441B0AB2CB1A762514101C3F09D2E955441EF92368AA86251415C0467762F9554411074592AAC625141769BBF8732955441E2291E89B06251418BD7E30036955441595889CEB7625141F927A1E03A955441D28BDCF0BF6251410C6C9F5F3F9554417A7E037DC1625141F75AAF0140955441F3AB3B3CC462514146D82A1B4195544123B083FDC66251419284712D42955441C8A221D2CB625141D39B590E4495544198BD914DCF6251418B6CEBB44495544119678018D162514100474E32459554415B98E221D562514159E78E5946955441E2ED39F7D56251410594BC724695544120F67C45DA625141345A37D14695544165394998DE6251411FA91530479554418D6877AEE2625141EE5B0E57479554418B96936FE7625141490AB441479554412FE553E7EB6251415331A32D479554412E5616CEEF62514128891D1C47955441919FCBF0F462514102E2E2FC46955441ACEC754CFB625141B3E5A2BC46955441998C59C40C635141293A963C469554418745772C1D63514148D135BF459554417F42A8D7216351410670CA4846955441A059CCB6226351415D33F964469554414E46F22B246351417898D97D46955441531F6BAA286351419D518CCA46955441AFDFFE322B635141F06672CB469554415706F8342D635141A52711A6469554416CEA9BB3326351416912C43F46955441490B9F3A3863514199F64B494695544107B2414D3B6351418AA3BE5246955441BF1948F53F635141069E7B5446955441D038C19945635141D9963F03469554411FEF9D9349635141D87601CA4595544115508DF84D63514170D0BD8A45955441CB3435AD53635141FBE0444A459554414E1864FA5D635141493846EE44955441EE36756765635141DC7841FD44955441B1B5864B6B635141F78A178C449554412CEAFC4C6F6351414E77243F4495544129DC3EA373635141ABE6DAED43955441825344FF7863514138D2806C4495544188BED6067E635141FC225BE34495544187E7FCD0816351418B9C0F8F459554413A788513856351410AEECB3846955441CDED791D886351412A2B19B846955441FE72375D8D6351413FACD8C44795544179728F9B93635141F3F66F6048955441150CBC05996351413D4F51184995544106DC10E19E635141B31F4EB5489554413D2976EDA06351411D271EBE4595544192F8A6D1A2635141CC3B584D44955441B81E85ABA463514133333333449554411F85EB61A8635141D7A370FD43955441A29F253BA96351412401366C40955441E453F8D3AF6351414F257F5F3B955441092E1EBBB263514130DFB02939955441E6F32383B4635141A2860643399554410E45A4FFB86351414F257F5F3B95544103130FA7BC635141EF7D41503B95544169D154C8C0635141E87AAE1C3B955441E664BB76C263514149AFFAFC3A955441D266C3F6CA63514114A107E8399554413109B8CCCA635141C07ABD883C95544133333383D0635141B81E855B3F955441CDCCCC0CD6635141E17A147E3E95544166666626D96351419A9999293E955441333333A3E16351410AD7A3203D955441295C8FD2E563514114AE47A13C955441B81E854BEA635141000000003C9554415C8FC2F5EE635141E17A147E3B955441AE47E13AF363514148E17AF43A9554419A999959F76351415C8FC2753A9554419A9999C9FA635141F6285C3F3A955441AC83EA4DEA635141FA4AFD5E5F955441A5E5B4B4F4635141E18FCD8C64955441FAE6A50603645141DD6E32424395544187DD39E00864514100A4BAFD44955441F03201C0096451410FE63E4245955441E4B8787A06645141345227B64C955441BA2011B800645141CB4EDCD459955441D3C04DC5FA635141F5E7CBB7679554410E72B0C906645141280E3FC76D9554410A922B580D645141856AD8276B95544170EEAD9216645141C00069B7519554415A4A926E1164514147188A624C95544138CCC41D0B645141CD96CB25459554413B990B4703645141B23AC7CB42955441D7A370FD05645141F6285C4F3C9554413D0AD73309645141B81E857B3D9554419A9999790C6451413D0AD7E33E9554419A9999D90F64514152B81E854095544152B81E25136451413333338342955441C3F5286C16645141AE47E15A45955441E683B3B219645141FEEF69C146955441E17A143E20645141666666A64A955441CDCCCCBC21645141713D0A2747955441D7A3701D226451417B14AE47469554411F85EBA11C6451418FC2F5C84095544114AE4761196451418FC2F5183E9554411F85EB11166451417B14AEA73B9554418FC2F5D8126451410000009039955441666666B60F645141E17A14BE37955441333333630C64514185EB514836955441B9EF434509645141E53824983595544160E274B708645141B9C1D47835955441471127C607645141C1046AA335955441682B482506645141EBC3FAEC35955441BA5289AF0364514147BBDBC23595544195D65DFA01645141D87E1193359554411717DE24FE635141F82B4FDD349554419CACCB51FB6351414D0507F534955441BB25F92DFA635141B7BE820A35955441F3218316F66351414DB4315A359554412110BF02F36351413B881F843595544114C35F7CEE635141743CACD03595544123E1B725EA6351412771524E369554418693B0CBE46351413E12A370369554413D0AD7B3DC635141EC51B8AE36955441CDCCCC4CD9635141E17A142E37955441D7A3705DD56351410AD7A3B037955441295C8F52CF63514100000070389554419A999939CA635141AE47E11A39955441B81E855BC463514114AE47F139955441D7A370EDBE635141666666963A9554417B14AEE7B9635141B81E851B3B95544100C39723B56351419B2DCB8038955441214B70B7B4635141FB22E31F389554416F791592B2635141B81C909337955441E8D739D5B063514106F9B6433895544159D89982AF6351417582CBD9389554419A999989A96351415C8FC2853C95544152B81E25A46351413D0AD7D33C955441054CE6CE9E63514102F6AC4C3F955441550555FA9C6351411486B725409554413922674197635141BFAECFA441955441F16B41F48C6351412B6CA344429554419167132083635141B8CC25E2409554411700B8637D635141F522030C40955441A4703DEA75635141F6285CAF3E9554418FC2F59873635141713D0AD73E955441B81E85EB706351417B14AEE73E9554411F85EB516D6351418FC2F5083F9554417E712BBD6A6351411A6566AC3E955441B84DE1A96663514169A69C3B3E955441471C36D161635141B9E7D2CA3D955441D5EA8AF85C635141BC8501743E955441BDE7DBAC58635141C3D498C83E955441A4D1F25E55635141739362393F95544196BB09115263514123522CAA3F955441666666F64E635141AE47E13A40955441E17A148E4A6351411F85EB6140955441E17A141E4663514148E17A74409554419A9999B941635141EC51B89E4095544152B81E453E635141A4703DBA409554413D0AD7733A63514114AE47D1409554410AD7A3C035635141666666B640955441295C8FB2326351418FC2F5884095544114AE47A1316351415C8FC275409554418FC2F5382D635141A4703D9A40955441E17A14DE2C6351417B14AE6741955441A4703DEA28635141CDCCCC9C41955441666666F6246351411F85EBC141955441EC51B83E21635141AE47E1EA41955441CDCCCC5C1D6351419A9999294295544185EB51681963514114AE4751429554410AD7A3A011635141295C8F9242955441EC51B8FE0D635141295C8FB242955441AAFF2272ED62514158DCA68541955441A4703D6ADA625141666666064295544100000020D662514133333313419554419A9999D9D16251419A9999094095544185EB51B8CD625141713D0AD73E95544185EB5178C9625141CDCCCC6C3D95544166666666C5625141AE47E1AA3B9554417B14AE77C162514185EB51C83995544114AE47D1BA6251419A9999D935955441AE47E13ABA62514133333363349554417B14AE67B9625141AE47E1EA339554419A999949B26251419A9999D92F955441000000C0AE625141EC51B8DE2C9554410AD7A320AB625141F6285C6F299554418FC2F538A76251411F85EB41269554415C8FC205A4625141713D0AC7229554418FC2F5B8A06251411F85EBA11E9554411F85EB919A6251413333334316955441713D0A6797625141E17A141E12955441000000C0936251419A9999A90D95544114AE47219462514152B81EC50C95544185EB51888E6251411F85EBF10495544138A8F958886251419899C05EF9945441EF8D63118562514136BB243CF59454417BD7C35C80625141A272FAF5EE94544128BD2D157D6251411DE456AFE9945441C6E810CE78625141A45F3244E494544149466FD07362514118F98A6BDE945441BFE946D36D6251418A7EE5DBD89454417B14AEB7676251419A9999B9D39454413333336362625141666666C6CE9454417B14AE975F625141295C8F52CC945441713D0AD75B625141B81E85CBC99454413D0AD7435B625141713D0A37C9945441D7A3701D536251417B14AEF7C3945441E17A149E486251413D0AD773BE945441D001B4FF3B62514154E53976B8945441D527F5FD3A625141D82ECA35B8945441288CDA453A625141871273EEB79454418FC2F50838625141000000A0B7945441B81E85AB30625141B81E85BBB594544174B7A968296251415BAA7DCFB29454412984C2491E62514129B74A38B094544122C4D5EA18625141556AD555AF945441E7D0964511625141EF837B35AF9454413DB7D2C20462514190DDC307B09454415D6AC807FB615141C8D0735BB19454413E9489C4F261514102DFE5EDB2945441F365F5C5EF61514102DFE5EDB2945441A155DE59EC615141F2106137B294544147634480E8615141FB06E25BB2945441A24216A8E16151411B996CEDB394544130A074AADC6151411CA3EBC8B3945441D5A35BF5D861514112AD6AA4B3945441D47C958CCE615141237BEF5AB4945441411724B9BD6151413453F3ECB4945441C7888072B86151413453F3ECB494544113A44CBFB06151412B67F1A3B49454416C6F2030AA61514133497411B5945441A8BC67C6A1615141237BEF5AB49454411C56C0ED9B615141258FED11B4945441B97724CB9761514114C1685BB39454414DA307849361514114C1685BB39454414883E36E8A615141939D279CB19454417376FEE982615141F9435C86AF94544170B694CE7E615141F203BA93AE9454412FC3DEF37A615141552AB01FAD945441C49CDC5977615141F2C3945DAC94544160F69B61746151411E771F7BAB945441B8DC6CB770615141E7836F27AA9454411AC33D0D6D615141BA90BFD3A8945441E3CF873269615141B5903C90A7945441437639D9656151414CEA7EDBA5945441A41CEB7F6261514114F7CE87A4945441A9DC42065F615141DC031F34A39454410703B64E5C615141735D617FA1945441295C8FE25861514114AE4751A094544185EB515855615141AE47E16A9E94544152B81EE551615141E17A149E9C94544114AE47414E615141AE47E1AA9A945441333333834A615141CDCCCC9C98945441713D0A57476151411F85EBF196945441295C8F72446151413333336395945441C0F3C3EA416151410F33C9A593945441151836A33E615141523721C29194544166E186093B615141F6B937838F945441A3B8B8AF37615141F08C110D8E945441C3F528AC34615141295C8FE28C9454418FC2F588306151415C8FC2A58A945441F6285C3F2D615141666666C688945441D9DC26E32B615141D67D57E287945441D7A3703D2B6151410AD7A3F086945441333333C325615141666666E683945441666666262561514148E17AE4839454418FC2F5881F6151415C8FC2D583945441295C8F7218615141EC51B89E819454410AD7A32013615141666666D67F9454418BCF93510F615141C81A7DD37D945441E93A1CDF0A6151419366FF9C7C945441D48AE5F305615141CB2F81AB7B945441DAB4EDA301615141BB91C1777B9454418661F60EFD6051416214C2327B94544186ED3E8BF8605141FE96C2ED7A9454413ED6C65DF4605141473A83977A945441593C4E75F060514185A1C4D979945441492AD7BDEB60514190DD43417A94544123A06137E6605141957B03757A9454411AE32080E1605141321A3DCC7B9454410E02233FDF605141C70745F17B945441073FD4C0DB6051416BE4A79E7C94544192DE8167D76051419C8C09037D9454415A73D184D36051415D1FAF547E94544172A2A1C6CF60514132E04F827E945441A11EB21ACC605141B01451CB7E94544117FA3BDDC66051412E4952147F945441804CA971C2605141DC25B5C17F94544179C5360FBE6051413376788A80945441ADD844D1B96051417C6B1A0181945441806D94EEB56051413E3A9C6E819454413AE39ED5B0605141862F3EE58194544134205057AD605141B7D79F498294544110E39A50A8605141FFCC41C082945441D085CBADA4605141DD7F01AE82945441B2753C1DA16051415BB402F782945441D78775799F605141ECDA22008394544122CA537D976051415186071B84945441921E6BDD8D605141CFBA086484945441BA1309CF8560514117B0AADA849454413285BB99826051411C47A848849454414E4B89497E605141822E697F849454411012D6677860514114032600859454410AE168B871605141D58EC74C8594544154C834D46D6051415E7784B3849454417D674BC0636051412F1A6E808494544134208CC25F6051416E8ECC3384945441225785DF5B605141C54D13288494544117075DC55A605141C81973678394544171057161566051410F5F4BE881945441067415B746605141EA74A21D7E9454419EE08F653C605141E618F7D478945441F613480C36605141A710A16F759454413A26A6293160514188B6A7BD729454411E20F1B22060514128FA93DA6C945441337939EC156051414E8449C36894544177BC2AF00E60514144B1E87864945441C5F388B8086051418CE10585609454416F238A7908605141FBE489FF64945441584FD4540E605141ED3516C167945441DA1A326E12605141D9E15A0F6A9454414DF0744E1D605141E2B4BB596E945441BD506349266051417470D90A72945441BF524AC62B6051411314B9097494544168561DA735605141C92CEDED779454411ACD5DF03B605141EE1696B87B945441E78EBEF2416051417A4246667F945441BE472216496051418AA6FBDB81945441EA3B62354E605141FB2DB21B8394544160B0BAE358605141F464C4928594544199A1D09F586051415320940388945441766C633153605141A6813A3786945441EBCA828B47605141EF2F6D0F839454412DFD95A0396051411AD707BF7D9454412B2E2FC632605141F512630E7B945441B50E77D329605141CBE8D180779454411E07B3F3276051419E3F2FC2769454417345AB601D605141F790CF0372945441C9D64A3817605141E6E3418C6F945441D45C32270860514122C9262B66945441D7A3707D08605141F6285C0F60945441AE47E10AED5F514148E17AD44D94544152B81E45EC5F51419A9999594D9454411F85EB21D75F51410AD7A3904094544100000020D35F5141713D0A873E94544185EB51D8C55F51419A999909389454415C8FC2E5C45F5141C3F5289C3794544100000090B65F5141333333533194544148E17A34B25F51413D0AD7432F945441AE47E1CAA65F5141D7A3701D2B945441C683D4E39B5F51417C6FE39A24945441A9FA326A8A5F5141237722711E9454410EFBD60F795F51419404F67319945441666666C6745F51410AD7A3E0189454419A999999735F5141E17A146E18945441D7A370ED715F5141A4703DCA17945441713D0A976E5F514166666676169454417B14AE176C5F5141AE47E18A15945441EC51B8AE695F51419A99999914945441E17A142E675F514114AE47B113945441E17A14AE645F5141B81E85BB12945441C3F5280C625F514148E17AB411945441B81E852B5F5F51411F85EBA110945441F6285C5F535F5141D7A3700D0C94544165CC575C515F5141D7B507330A945441CB617BF64C5F5141F0208B8908945441F70FD6244B5F5141D6EB90D90794544193E793C4495F5141EDB0705407945441A105556B485F5141F5EEF6D106945441D7A3706D465F5141C3F5281C07945441E17A141E435F51418FC2F5C8059454415C8FC2953F5F514114AE4771049454410AD7A3D03B5F5141EC51B8FE029454418FC2F538385F5141295C8FA2019454417FB97999345F51411D919014FF9354418DD6EEB6345F5141C50EF62EFE935441489D4AB2315F51414CB8A1B1FC93544107A7F0FB2E5F514129C3A174FB93544128C72EC72D5F51418EDC62EEFA9354416959D23C2B5F5141311619DAF9935441BED6A9AF295F51410D4A6031F993544169C92166265F514119D9DFCBF7935441C39A4AD5235F5141A365D5B4F69354417C56A34B1D5F514104D8D3EDF393544118B23801185F5141A5C570AEF1935441902EFA55145F5141EDF9D65BF093544196359AC0115F51412849F47DEF935441CBCA63F00C5F51415DC38EE0ED9354411C5E9014075F5141DC1061E9EB935441B0CF56CA015F5141216D0C23EA935441CFB39F0EFD5E5141BE7A66A0E89354413380A05EF75E5141017111F1E69354418694D94BF35E5141DA7E26BCE5935441081D175AEE5E5141D0D12C45E4935441B4C410B2EA5E5141B3D5E12FE39354417BB6568FE75E514156021442E29354413583915EE55E514154DEF39BE193544177E13FFDE15E5141DA294EC8E0935441615D8B93E15E5141464471ECE0935441295C8FA2E05E5141C3F5288CE09354411F85EB51DF5E514100000020E09354411F85EB21DD5E5141C3F5283CDF935441CDCCCC3CD95E5141295C8FF2DD935441CDAF45D0D65E5141C15AF324DD9354410BD7C057D55E514192F5E7A7DC9354413A2E3605D45E5141839AA90FDC935441AE47E10AD15E51418FC2F5B8DA9354415F46ED77BE5E51414F2D6E43D2935441DA7C568FB65E5141D148D945CE935441D9CD50CEAA5E51414B6B3A44C993544160074876A25E5141D278B94EC7935441267C82889D5E51415D24C0E7C5935441713D0AE7925E51411F85EB51C393544148E17A74905E51418FC2F568C2935441A4703DFA8D5E514185EB5178C1935441333333F38B5E514148E17AB4C093544133333373895E51418FC2F5B8BF9354411F85EB41875E5141CDCCCCFCBE935441333333E3845E5141F6285C0FBE93544148E17A14825E5141B81E85CBBC935441000000507F5E5141C3F528DCBB935441333333837C5E5141CDCCCCBCBA935441EC51B8BE755E5141E17A143EB8935441EC51B8FE715E514100000030B69354419A999979705E5141EC51B85EB5935441BB341329685E5141679FA42AB1935441B132B95E5B5E5141AE32CD71AB935441A3DC451B575E514126E69352AA93544163011F134E5E5141B3CA124BA7935441D85E72B0485E5141D2FBCA62A59354415588683A415E51417E3318A3A29354416663AD0E3B5E5141A9C9E5E5A09354415A1F81AE365E51413C591E00A0935441580C0D66305E51417E54016E9E935441A4703DBA2B5E51413D0AD7539D935441EAF51B5B255E51419B97BF929B935441713D0AC7205E51410AD7A3709A9354416FCD083E1E5E51413A1D6BC79993544150C356C3195E51411CEB64E79893544133333343165E514185EB513898935441AE47E10A0E5E51413333339396935441C3F5287C0B5E5141B81E851B9693544152B81E85025E5141333333039593544100000010005E51419A9999D99493544152B81EF5F65D5141F6285C8F94935441F6285C2FF35D5141295C8F72949354419A999909EB5D5141D7A3703D94935441C3F5281CE65D5141D7A3705D94935441E17A146EDE5D51418FC2F588949354413D0AD713D95D514185EB51989493544131EF0ECBD15D51412FBA82B291935441545E6174CB5D514107E90A9691935441A2ED9800C25D51414C8BFACE91935441A192271BB95D51411231C4CE909354413B05548BB15D51416914B9B292935441908DD789AA5D51412FBA82B291935441C98C9CA4A25D514191E530CF92935441916E1BBE945D5141E0CFD94092935441931F0CD3885D51419728336994935441667860DA885D5141A971678B9493544107AEF89C8A5D51413F8612FC95935441ECEDC10D925D5141E079D01A97935441E3ADAF88945D5141B6B5094E98935441C41F2A05975D5141B79E9FB298935441E74085D9975D5141B79E9FB298935441CCF10837A25D51413646007798935441FC9A3A0EAA5D51416B2BB49597935441D49661BCAD5D514116C24B2F97935441C03562E5AF5D514195315506979354410DA1926AB35D51414AA7FF4D96935441A798E0C6BA5D5141BFF51BD395935441C3E012C7C45D51413F8612FC9593544126AF0A42C95D5141F4FBBC4395935441BE83A32DCD5D514134234B06959354415B94BE60C85D51411580718B9693544120D8CEFADF5D5141F6FD846298935441AB89B275E05D514155E9D9F196935441B8AC67E6E35D5141362513259893544161A84580F15D514157A9C76C999354418E17BD2E055E5141839043AA9B93544118AA2C3F055E51414992501D9C935441E35F3843055E51412E48C8959B9354414CF2AD76125E51418F35E5439D935441719BDF4D1A5E5141F00115A09E9354416359B64E1A5E5141B63B9ABC9E9354410BE80959365E5141762C7EB7A4935441A8770E11405E5141786F98C7A7935441E16CE746605E514189526F59B393544153DA8F615F5E514186C1E5BDB493544143449E7A5A5E51415F055B0CC7935441FA17F788595E5141C7135C6DCA935441E8E634265C5E51414A2625CAD6935441666666865C5E5141000000D0D8935441295C8FA25F5E51415C8FC275CE935441E94E4744665E5141523DA144B8935441658333D75F5E5141F574A0EFB49354417AB573AC605E514148FAD3B4B3935441B800B615665E5141ACF0FADBB3935441988CFE026A5E514157075F51B593544168800117725E514156E67586B9935441480C4A04765E51419C37CC37BC935441FC7264027C5E5141D1F67B2ABF93544149D8B52F7F5E51410681D776C09354413CA4D467815E51416F1BBA69C19354416F522AE5835E5141ACC4409AC2935441F4B875FB875E5141E5307364C4935441AB741A098A5E5141D933D943C59354412F3474728D5E514115C0F972C69354410F9B65A48E5E51411F1967E6C79354416DDC689D935E5141A03E5BF3C9935441A0D2B543975E51413DCAD2BFCA935441FA1012259A5E5141771E4DA4CB935441F92BE6639D5E514114F6A1F0CC935441C657B5949F5E51411356F4B5CD9354419B432950A35E51413B45F9C3CE93544126312FCAA85E5141EAE115ACD0935441904F2786AF5E51415CEA5C3AD3935441F00DCD7CB55E5141104C41BED5935441AC4A2ACABC5E51417B4F653BD99354415187F4ECBD5E51419D79A2ADD9935441000000B0C15E51417B14AEA7DB935441A4703DAAC45E5141666666C6DC935441B87B7764C95E51418E716AE2DF93544129F1F3ADCB5E5141D3E2A3F0E09354411EB296ABCE5E5141FFE6E62BE29354413FB6D9E6CF5E5141D3E2A3F0E0935441D7A3703DD35E51413D0AD743E29354418FC2F598D55E5141CDCCCC2CE39354416F69AF8CDA5E5141FD112BE4E4935441A0C3DD9EDD5E5141A2A05012E6935441901818C9DE5E51413EACB9D8E29354412C953D61DE5E5141151D0790E293544146732864DF5E51415C0F346AE09354410A728673E15E51418AB04048E1935441F25B97BBE05E5141D223BC5FE393544152B81EF5DE5E5141B81E85CBE693544100000010E15E5141E17A148EE79354415C8FC2F5E25E5141D7A3705DE89354413D0AD7D3E45E5141D7A3700DE99354416DFD97D0E65E5141988879D0E9935441E10C9B01E95E5141E72768A3EA935441DD293C6AED5E51413630C14BEC9354410C173F8AEF5E5141096E834CEC93544105CD9DF2F25E51414D2250F6ED9354416E4BE873FA5E5141A7005A12F0935441554D33B20E5F5141AB5B1CF1F79354416AC9BC59125F514147AF6327F993544110EAE2C4165F514159588B9EFA935441BDE65172195F5141BB3BB8CBFB935441AA50D52C195F51412D844D96FC93544112DCE5FC185F51415920342AFD93544166167E90185F51419479F5C9FD9354413DB432AB145F51417A7EC73F03945441B81E85AB085F5141C3F5281C14945441A4703D6A0B5F5141295C8F421694544152B81EC50E5F51413D0AD7E3189454419F9AA20D135F51411011CC1A1C945441DA6C93AA245F514135CB889D029454415969F5F9245F514137D2C4FE01945441D2410D7A195F5141C18A1551FD9354413DCFA1B0195F5141764790ACFB935441ADB26108215F5141E1EA6164FE935441D84DA5B1335F51415B2E7481069454411A62C420365F514171B803B907945441ABCF13B03E5F514106EB87B90A9454411FD515965C5F5141667F836816945441CCD184435F5F5141E22C9B42179454417FA3DD176D5F5141EC58DDF71B945441A7C312D66F5F5141B0AEE7DE1C945441F3748B7D745F51419D18EBD91E9454414575A574785F51413756018220945441592284F57B5F5141B58FB2F82194544176E4424F7D5F5141B35E4E322294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A9454416BD70008945F51418209333B2A945441198AA0E99B5F514165668D922D94544120AA97399E5F5141E113A56C2E9454410B2C9962AF5F5141D1DFB4023694544183207A01C25F5141847741043F94544182D1DBADD25F5141EC55DE4A47945441B076D24EDD5F5141F095CCEA4B94544139C42A8EE35F514142CF05BB4F945441BD4CBB31E95F51415914176C53945441F60088DBEA5F5141BCF743995494544129861A57F95F5141D9D7729E5E9454414970FC53FB5F5141A03E7A3360945441AB06401B03605141071316766594544114411897086051417C6384F6689454418CE5AD7B0E6051413581BDFA6B9454418973BB1813605141CA882E5E6E94544154FD6D4D20605141B839F84474945441BA0B58DB296051417D618D787894544171BB84A232605141333D1B1A7C94544136F0FA703860514184F8FC807E945441ED0CF6FB3F60514196E82E4B81945441EA26CE67486051410EB4ED3F8494544103FE194E4C605141A6D3599E85945441D4F712F2506051413C363E0687945441AE4CF2AB5260514184AB1181879454412D7BF1A8586051417864C9CA88945441D5F2DC695D605141634FD4C489945441E202311E62605141795D5EF489945441F731D10863605141DF51A1FD89945441F41804EB63605141DEAC03118A9454413982925765605141F89795338A9454419C0E49C36B605141412574CF8A9454414A351E516F605141855B40118B945441E23340A4746051410A59CA6F8B9454418BB9B3E07660514160CF135D8B945441A24025607D605141A3746B708B94544194D6827E88605141A16A326A8A94544113CF5BFC9E605141A7621B1C889454415BB094C5AE6051419A5D98A4869454419017D0F0B3605141AFB2B692869454413AFDE6FBC460514197AD331B8594544110CEE70FE3605141690BBE5081945441B29177A4E7605141A0C5CEF4809454415E54BF90EB605141AFA002B380945441D04F6913EE6051412394A7718094544129C2D964F2605141F9E83D3C80945441B1AEE3F5F460514178C30D2680945441CDAE7D0CF86051419D403F0F809454419F0DD218FA605141219B1A38809454414C0A5EC6FE60514147E0538C809454411666E3560161514179C343A880945441440A316304615141A56BC319819454411AC6DBEC07615141CA7B6A8981945441736BEDBC096151419A92CFBD819454410F9164120C61514163247D2A82945441FB9ADDA7106151419E450E1E8394544113D92268116151417E601A5783945441012254DB1A6151410EE72D20869454415119390D22615141810466398894544188DD35DB23615141322E094088945441E1D09BDA24615141CE67843888945441A82336CC256151412B1F7A26889454416C3A484B27615141898DA44E85945441B6359AE428615141521C302386945441B7EA3EE9276151416E81A9B4889454418F11DA5E28615141068D4FEC8994544173A72A762B615141786F58F78B945441127AC7E42D6151417B02F6608D94544147CFC81A35615141DD1ECC9591945441A311E2BE3E6151415A719E5D97945441A4FDF0A6466151417A3A51BF9B945441FFCF5D0B516151411EE2FC56A19454411A5B5FAF5561514113709DABA3945441E4AD657059615141E5FAAD62A5945441005AB1115D6151410F843F0BA7945441A3312294606151418F4DB8A5A89454415363BA6E61615141792AF5E4A8945441CE72388A66615141A53947F4AA945441AEBD89AB69615141277ED042AC945441F9173B1B6C615141153B7951AD94544143C7D0316E615141E0D78AEFAD9454412268D0726F61514108B9C14BAE9454419F9AA22D7361514107C5E0EFAF945441B23D25BF766151418665BF29B194544140D2F1A67B615141A6F65CD7B2945441A5A84EA07E615141754DD4DBB39454416D41AB0F80615141C79AD532B49454412A3B98698661514116425AA0B59454415F34BB8088615141E393A718B69454411B992C688B6151414F77A086B694544109B188B892615141C9CCE291B794544146FA82CBA96151412A12FCE5B8945441BF4ABA58B1615141888A8A10B99454412532FD6FBA615141FFB5B82BB994544176016DF4BA6151413D02E656B994544162523876C261514134C3DF82B994544101465D38CC615141E2494141B99454414345AACFD4615141834CD5FEB8945441356D753AE361514168642B47B894544136FA62A0FB61514172B51F44B69454413D06107812625141F7883F65B4945441F16F65FC17625141B2073F88B494544133BC5DE41E62514107776BBEB4945441F2FC733624625141BC0E70C5B5945441E52AD4F72562514118E6691CB694544155D7868828625141D515C1F3B6945441358E208B2862514193A7ACF4B6945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132736 - 3683613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -42  </desc>
+<a>
+01060000000100000001030000000100000044000000AE47E14AED86514166666656F6995441CDCCCC0CED865141AE47E13AF29954417B14AEE7EC865141B81E852BEE9954413D0AD7E3EB865141C3F5287CE69954411F85EB61EB86514114AE4701E39954411F85EB61E8865141AE47E1EAD8995441F6285CDFE58651410AD7A350D199544152B81EC5E38651419A999939CB99544114AE4701E38651415C8FC285C999544148E17A54E2865141C3F5280CC79954418FC2F528E18651411F85EBC1C7995441333333E3DB865141666666B6CA995441F6285C1FDB865141A4703D6ACA995441A4703DCADA865141C3F528FCC99954415C8FC2E5D88651419A999989C79954419A999979D38651411F85EB21BE99544114AE4761D386514152B81E85BD9954413D0AD7C3D08651418FC2F5B8BC995441295C8F22CD8651418FC2F558BC995441C3F5288CBF8651419A999949BD9954415C8FC275BF865141D7A370CDBD99544185EB5158BB865141D7A3702DBD995441C3F5284CB686514185EB5128BB99544185EB5118B3865141D7A3702DBE995441000000F0B3865141B81E857BC3995441295C8F12B58651417B14AE37C699544148E17AF4B9865141295C8F12C8995441333333D3BC8651410AD7A300D0995441CDCCCC9CC386514100000080DA995441EC51B81EC5865141EC51B81EE1995441E17A149EC78651418FC2F5B8DE995441EC51B82ECD865141A4703D3ADC995441D7A3704DCF86514185EB51C8DA99544185EB51B8D3865141B81E85ABD6995441295C8F82D486514100000050D7995441B81E855BD68651413D0AD7B3D89954411F85EBA1D786514148E17A74D99954418FC2F558D88651418FC2F5E8D9995441333333F3D8865141E17A143EDA99544114AE47C1D98651411F85EB91DA9954419A999999DA8651415C8FC2F5DA995441000000E0DB86514114AE4781DB995441D7A3704DDD86514133333303DC99544148E17A74DE8651418FC2F588DC99544152B81EA5DF865141B81E850BDD9954417B14AE67E0865141CDCCCC6CDD995441C3F528DCE0865141B81E85CBDD99544114AE4751E186514133333343DE9954419A999999E1865141EC51B8CEDE995441C3F528ECE1865141A4703DAADF9954419A999909E38651419A999979E199544166666606E4865141333333F3E2995441B81E85ABE48651417B14AE47E499544114AE47F1E586514114AE47F1E69954413D0AD7E3E5865141C3F5287CE8995441C3F528BCE5865141E17A14AEE9995441EC51B84EE6865141AE47E1FAEA9954418FC2F598E686514185EB51B8EC995441B81E85ABE686514133333363EE995441AE47E1FAE58651413D0AD773F09954411F85EBD1E4865141AE47E15AF2995441713D0A67E4865141A4703D3AF4995441D7A3708DE38651419A9999B9F6995441B81E850BE3865141F6285C3FF89954418FC2F5C8E4865141666666E6F89954415C8FC2F5E686514114AE47C1F899544100000050EC865141E17A149EF7995441AE47E14AED86514166666656F6995441
+</a>
+
+<b>
+01060000000100000001030000000100000003010000F4CE9F9DEA865141E97764FAF7995441635CD8BAEA86514184E9A67BF8995441F6285CCFEA865141666666D6F89954412F7E83A2EA8651415C43C0C9F89954417BC6740EEA865141CBC0FD9FF89954418072C4D6E9865141C8BC4890F89954418413EC98E986514197C033ADF899544115532D75E9865141EC1C5CBEF89954418DF5456BE9865141A7161DC3F899544139DB945EE98651415EA834C9F899544144192A4FE9865141AD923CCDF89954410A543741E98651410576CECCF8995441C442AD32E986514153AE91CBF8995441BA905A1EE9865141873FBBCBF89954411B4F9DDFE886514190F7CBC9F899544129EBB98EE8865141B96B4DC2F89954419A63F378E886514155FF9ABFF8995441C4FC0536E88651412855CFB6F8995441BFEED5C4E7865141B8D54595F89954415C8FC2F5E686514114AE47C1F8995441FCF3FD40E6865141BEE004CEF8995441EF158221E6865141024A2018F999544166666606E68651411F85EBB1F999544178BF636DE586514167BFA6B7F9995441713D0A07E5865141D7A3707DF9995441D027D595E48651417980E176F9995441C3F528ECE386514185EB5198F99954419A9999F9E286514148E17AE4F9995441EC51B80EE28651418FC2F578FA99544194DB196BE1865141C47D7FB6FA995441F18AFB2BE1865141ABD3DC10FB9954418E4829B6E086514167280F76FB9954416208C684E08651410EBCDEE0FB995441C52F8479E0865141A7CF6924FC995441F8A5BE57E08651413B5987D8FC9954414D4F122AE086514103D6A4BBFD99544169E76EC8DF865141F6EAA78BFE9954412CB3CEBCDF8651414C1F3684FF99544102F5E2AEDF865141F5A6BB9DFF99544134A2B2BBDF8651417BD6DA92FF9954417C9A32BCDF8651418D693F91FF995441FCD80DBADF865141A39E13BFFF9954415B94BC99DF86514143A62156009A544168E1576BDF8651414F3031E4009A5441FE02496FDF8651417600E132019A54412E30D454DF865141AF4314BA019A54413B44AF73DE865141A6A5CB0B039A5441A5F5DAF7DD8651416991487F049A544152B81EF5DC86514100000040059A5441C3F528CCDC865141CDCCCCAC059A54415C8FC275DC86514166666656069A54418FC2F528DC865141666666E6069A54415C8FC295DB8651413D0AD7A3079A5441CDCCCC8CDB86514133333333089A5441D7A3709DDB865141295C8FD2089A544185EB5178DB86514152B81EC5099A544185EB5138DB86514185EB51380A9A54413D0AD793DA865141333333730A9A544133333303DA8651410AD7A3D00A9A5441333333B3D98651413D0AD7230B9A5441FFC0CA8DD9865141F9466B540C9A5441E17A146ED9865141CDCCCCDC0C9A5441DE643B0BD98651415E84754B0D9A54411B6F128FD88651413528E6680D9A54411B6F12CFD78651413FFF89790D9A544114AE4721D78651418FC2F5980D9A54413D0AD7C3D6865141666666D60D9A54419A999939D68651410AD7A3200E9A5441295C8F62D5865141D7A370CD0E9A5441F6285CAFD4865141E17A148E0F9A54418D2019C7D486514178799DAA0F9A544156344C78D4865141128D28EE0F9A5441BC20C134D4865141DC513748109A54415AF90240D48651417565C28B109A54412783C861D48651410F794DCF109A54418F83183DD3865141052A2978119A5441CDF9521BD386514103164E59129A5441033544C1D286514133C7D16F129A5441D00D2E3AD28651412C3D64E0129A5441A7E617B3D1865141969F6B0D139A54416C35949CD1865141BFC68194139A5441ACBFA999D0865141F028E153149A5441E9D32C26CF865141C0775D3D149A5441F6285C7FCD86514114AE4761139A5441713D0A47CB865141B81E857B129A54410AC0BD9BC986514186CADE38129A54412086EB00C3865141D3B627B51C9A5441295C8F02C08651417B14AE471F9A5441E17A14CEBE8651410AD7A3C0249A5441C3F5281CBF8651418FC2F558299A5441CDCCCC2CC28651417B14AEE7309A5441F15B9B1AC4865141FE2D1E0A379A5441F6285C2FC5865141000000C03C9A5441D7A370BDC4865141F6285C7F3E9A544133333303C4865141AE47E1BA3F9A54415493396FC38651417128B63F409A54419D4745ECC18651413C5856CD409A544180643ACBBF8651414209D02D409A5441D9F77899BE86514143C5BA58439A544173BC0275BD865141F0B293EA479A5441311511D2BD86514173D114304B9A5441A4F8BE4CC18651417503A6F04D9A54414B65807EC28651411579A92C4C9A5441BC169D38C386514164522C904E9A544175F0C2F5C68651411C7067224F9A544101E80745CE86514179501AFF479A5441CDCCCCCCD0865141E17A14EE3F9A544114AE47A1D1865141713D0AA73D9A54410AD7A3F0D18651418FC2F5C83B9A54411F85EB21D286514166666676399A5441AE3F830ED28651413898CBA1379A54411E020992D08651410B4E0722329A5441F6300260CD865141AE7892992D9A54413F7893EAC886514174D8BBE0279A54419A9999C9C88651418FC2F5F8259A544152B81E45C9865141B81E850B249A5441713D0A17CA8651417B14AE47229A54413D0AD733CD86514166666676209A5441F6285CFFCF865141713D0AA7209A5441333333B3D38651418FC2F5F81D9A544114AE4701D6865141AE47E1BA1C9A5441FD001EA7DD86514187FC6FF9149A5441EC51B80EE186514185EB5148129A54419A9999A9E78651413D0AD7730D9A54410AD7A3E0E9865141E17A141E0C9A54418FC2F5A8EB865141CDCCCC2C0A9A54413D0AD7C3EC86514100000080089A5441416858F5ED865141E3DAD6E6069A544185EB5118F08651419A999909069A54417B14AED7EE8651413D0AD7D3009A5441AE47E10AF4865141CDCCCC8CFF995441D680F3B3F28651412E609745FA995441DEDBA8A3F1865141700CE400E7995441604A5399F0865141E588135BE19954418A5C4654ED865141E2504296D8995441E5F9E917E98651412983AD70CD995441F6285C3FEC86514148E17A74C99954418FC2F578ED86514166666606C8995441FADDDF4EF28651411EF5C972C49954411E2D0E6F0287514114034FD7BF995441AE47E10A0487514114AE47C1BF9954419A99993903875141E17A142EBC99544185EB5168028751413D0AD703B9995441EC51B84E02875141D7A370DDB6995441295C8F1200875141295C8F52B799544185EB5148FF865141B81E85ABB799544133333313FF865141E17A14FEB79954418FC2F588FE865141295C8F82B899544185EB5108FE865141D7A3700DB99954412AB91432FE865141CC55FDF5B999544195743FD6FD865141B41C8B58BA99544148E17A44FD8651411F85EB71BA995441BE173AC7FC8651417FEE954ABA9954418ECED419FC865141ECAFEC3EBA9954416ABBEE0EFB86514102EF073FBA9954418334DF15FA8651415620E10CBA995441C3F5288CF886514166666616BA995441D7A3700DF886514114AE4721BA9954417B14AEA7F786514133333323BA9954417B14AE37F78651419A9999A9B99954411CED974EF78651415C8FC2D5B89954413D0AD7C3F58651415C8FC2D5B8995441FD82B77BF5865141F0B945D0B89954411F85EBB1F3865141D7A370ADB8995441630DB6A2F38651412A97BEA8B8995441B81E857BF0865141000000F0B799544114AE4731F0865141CDCCCC5CBA995441713D0AA7EF865141713D0AE7BD995441713D0AF7EC8651415C8FC275C09954417B14AED7EA86514114AE47E1C1995441B81E85EBE8865141C3F5280CC399544148E17A54E2865141C3F5280CC799544114AE4701E38651415C8FC285C9995441642731B4E38651416F5C19FCC999544142A24522E48651417733BDCCCA99544105986E3EE486514111CD5666CB9954414B79E972E48651413E008AF9CB9954418883C076E4865141E270C7C3CC9954418883C096E4865141B9143841CD9954416FD578B5E4865141215242D8CD9954416CF40AF1E486514109BE3C76CE99544171AC1C26E5865141F0F5B2F5CE99544148508D63E5865141F0F5B275CF99544116F4FDC0E5865141F7CC5606D099544116F4FD20E68651413FAED1BAD099544198DF4FB9E68651417BB8A8BED19954413179E9B2E6865141B8C27F42D29954418D20B442E68651417742386BD29954419FACD93DE68651418115D76ED29954415F47F7C8E6865141CA933414D4995441C3159FCCE6865141AA933D17D4995441F745B6FFE686514126D72D0AD4995441C412834CE78651413B8575CBD399544120A24502E88651411229E6E8D399544138273194E7865141BA70C7A3D49954416183C076E7865141B0992353D59954410FCBA1D1E78651412BAED11AD5995441E66E12CFE88651417D66F0DFD4995441D1C0CA0DE98651417D66F0DFD4995441FA1C5A70E98651417D66F0DFD49954414CD57875E9865141873D9430D59954417B310838E98651410629E688D5995441E1976E3EE8865141395C19DCD5995441E1976EBEE786514110008AF9D59954416382777CE78651410793E433D699544104A1BC91E78651416F365174D6995441EF45B6FFE78651413C33BDACD699544128508DA3E886514185EBDB11D7995441D7976EDEE8865141295C197CD79954417408AC08E9865141761438E1D7995441DF45B65FE98651419B70C7A3D999544108A24522E98651413FE1042EDA99544131FED4E4E8865141B01E0F45DA99544170CEFACCE8865141CF47DE52DA9954411F85EB61EB86514114AE4701E39954415D1C858BEB8651410872891EE4995441CC45B6DFEB865141FCADD1FAE3995441475A6447EC865141BFA3FAF6E3995441B7976EBEEC86514163143801E49954413383C056ED865141C6514258E4995441F678E932EE86514160EBDB71E4995441C345B69FEE86514123E1048EE49954414E08ACE8EE8651412AB8A8DEE499544163B6F309EF86514186476B34E59954411BD57815EF86514120E104AEE599544152F8A1DCEE865141404A6642E69954412A83C076EE865141E0D62DCAE6995441E5A145E2ED865141E6ADD17AE799544142310878ED865141F184750BE8995441C71C5A90ED8651410F0A615DE899544123AC1CE6ED8651419FCC5686E899544160B6F309EF86514161C27F02E8995441AD6E122FEF865141B9514278E89954415DB6F3E9EE86514145143801E999544128462210EE865141BD36294FEA995441C91C5A50ED86514139143841EB995441D4F3FD20EE865141E75B19BCEB995441365A64A7EE8651417DF5B215EC995441E778E912EF8651411666F07FEC995441B71C5AF0EF86514156476BB4EC995441A26E122FF086514142992333ED99544106D57895F0865141ACD62DAAED9954418BC0CA4DF08651418E514278EE995441B81C5AD0EF86514117143801EF9954412283C076EE865141141438E1F0995441BA4F9F06EE865141A1C5F6B3F1995441CCFAD1DBED8651412B499D2FF2995441B76E12EFED865141C432BD0CF3995441C8B7661EEE8651417245D5B0F3995441DF614564EE86514191741798F4995441C045B63FEE865141FE3C9470F599544126F4C40BEE8651417174F60DF699544175D39C93ED8651410E6C34CEF699544173AF5D46ED865141FBE9C139F79954411F85EBB1EC86514148E17A14F899544114AE4741EC865141B81E850BF89954419A9999E9EB8651410AD7A3C0F799544172B408E1EB8651411C87A9B5F7995441F4CE9F9DEA865141E97764FAF7995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5217901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D961F3BB23A15041BEDA451BDF545541C5A362BC2FA15041AB8B4C76DF545541A3D1413B41A15041127F52F2DF545541182F44934CA1504177147043E05455416ACFA4215AA15041F9BAFFA8E054554127FCE4675AA15041586671ABE0545541683B9D9E5FA15041AC4D3629E15455412C48CF7F62A15041515FAD6EE15455411ACA71A369A15041C0AAE41AE254554170FF44156FA15041EE18DA27E35455410681062E6FA150416C9FAC2DE3545541E8F2917571A15041351E2952E05455411011DE6D6FA15041BF9EEC07E05455414C79620A6EA15041000F05D6DF54554191BA232A6AA150410723B94ADF5455412FE0ED0B5CA150415265574FDD54554125F241905AA1504183850A1ADD545541BEADDB924CA1504192A832FADC545541F5CD19534BA1504121799BF7DC5455419CD06B9449A15041DFA6F3EFDC54554157F4062A48A15041FD4D52E5DC545541303F74FE3EA1504192EBE7B9DC545541E44F68D231A15041FA2F47ADDC545541D3F688552FA150417EA0E4AADC545541967BFD722CA15041349820A8DC545541A1A884422BA150414219A1A7DC545541D54E8E072BA1504158F916AADC5455414518C82C23A15041856DFFFDDC5455415FF4D2F822A150413E6284F9DC545541D961F3BB23A15041BEDA451BDF545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5285096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+010600000001000000010300000001000000CA000000037DFFCCC6A250419176EDC6925355418914DA12C9A25041352858F3915355418B26A5F8C1A2504104A1E71C7E5355418454031AC3A250418B853AEE79535541007EEA7BBCA25041B38FB35766535541E44BFC0AB9A250414962E58460535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A92545541E6A31463D1A15041FC2D9E8C9254554172D17817D4A150412E8716A38E54554138E15D8DD7A15041CE77F7318A54554188253822DAA15041D0C5D21A8754554157544331DBA15041D2399E9785545541CED71A64DCA15041C2E33C5B845455417099BD15DFA150415BAAC6DF81545541032DA458E0A15041572C68C880545541230042D7E2A15041C3119FB57E54554148E8B71CE5A15041876A1E4E7C5455417B7615E5E8A15041176EF36776545541F01AD259E9A1504166A07B9875545541C1577527EDA1504175BD54257254554110D0ABB9F1A15041A32108886D545541B2380610F3A150414631520D6C5455419A49D5E5F5A15041D08B8B286854554117ADBD05F9A15041173CE8A9645455413A2F65F1FBA150419AC76ED0615455411122ADC7FDA150416D02B8F55F545541DC73261A00A250417806F8CE5D545541D356AD3602A250412E1762105C545541B138892606A2504119BBA3A859545541F14616220DA25041E20FF55A5554554138F52B220EA2504118FEBA5754545541A634BC2015A25041CAB52A0E4D545541208535E616A250419E5DB7984A545541D45935AC1AA25041928CC67445545541CDD3F46F1CA2504198B80E624354554170C529661FA25041AEC29D2A405455413A68C73223A250417E06E5673C545541759AD21A25A2504186441A9E3A545541AB04F8E529A25041DC169FD235545541E854B81A2DA25041DBEFCA743254554193601BEA2FA25041AFC872E62F545541C7ACFCF331A25041B2D8AAEA2D545541391E15E433A25041449CC4FA2B545541413144CA36A250412F56755F295455410A6DB9E23EA250414A2F555C21545541CCA8FB4B46A250418F69EDCF19545541148D58074FA25041E96161D7105455414CBAE06851A2504182719B2F0E54554165184BEC55A25041BC0D21420954554114A019E65AA25041189530BB03545541FB2900AF62A25041711B7F9FFA535541BC48B74A64A25041EA64A254F8535541CAADA5CA65A250410688ED11F6535541901E649467A25041A97ADD88F4535541186FF4276FA2504100EB64F8ED5355410FE080FA71A250415F86C38EEB535541EBC5880A75A25041FC8D0FC3E75355412E00CFE87AA25041C97DC2A5E0535541DDD9322680A250418FF703FFD853554112AEA3E181A25041CD5D02B0D6535541E938835283A25041D4F51B0CD55355412CD0083D87A2504134A8354AD1535541C5DEECBF88A250417364C283CF535541D73CBCE889A25041A3570EC1CD5355416F95FC778CA25041DC5984FDC75355411050BBEF8EA2504181881F3CC2535541E7FE01D48FA25041B3B978FEBF53554155C1747992A25041056AE5B9BA535541639D910295A250411F07B65EB653554135FF15C596A25041DF4957DCB25355410687C34597A25041BC740D21B15355415E6F2BDE98A250416DC34C06AC535541979DF22999A25041FD767247AA535541DCE7677799A2504192566B83A85355417D2D66DA9AA25041914B4AC1A453554187F36B3D9CA2504156774AF9A15355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F535541037DFFCCC6A250419176EDC692535541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5285100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+0106000000010000000103000000010000009F000000E6A31463D1A15041FE2D9E8C9254554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541E670D2DAE0A15041CDF0D56B99545541B18F273FE7A1504151D807D39A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B5455419BEAA6946BA2504175EB6FC7095455410C41083A6CA250411302E45E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541E6536E88D5A25041D664FAC6AE53554114C15E48D4A25041321794F6AB5355413220BBF7D2A2504124EED866A8535541517F17A7D1A25041582210BBA45355413EFA51CDCEA25041F785404DA0535541EEF91E99CDA25041391CA89B995355410C1463A7CBA250415B9BC2BD9453554186AC8FAFCAA250415D37426191535541037DFFCCC6A250419176EDC69253554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A153554184F36B3D9CA2504152774AF9A15355417C2D66DA9AA25041934B4AC1A4535541DBE7677799A2504190566B83A8535541979DF22999A2504100777247AA535541979D72F298A2504137821CAFAB5355410D4DFEE598A2504155232AD8AB5355415A6F2BDE98A2504172C34C06AC5355411086AA0B98A2504126FFD5A7AE53554130FF15C596A25041DE4957DCB25355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541F491ED6C92A25041CADBD5D2BA53554148B8185990A25041FE2E89F5BE535541CAE74D6A8FA25041C453381CC15355410D50BBEF8EA250417C881F3CC2535541DFD818298AA250417494E473CD535541C6DEECBF88A250417464C283CF535541EA0F689288A25041646B49C6CF53554128D0083D87A2504138A8354AD1535541F37B93C786A250415F59AFCFD1535541338FD78C84A25041EC3384DED35355414004897483A250414C1677EBD453554176660A1481A250410FA106C2D7535541DCD9322680A2504191F703FFD85355415E9B0F3A7CA2504147C94AB9DE535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB5355410FE080FA71A250415D86C38EEB535541712B31A970A25041C69391BCEC5355418E1E649467A25041A57ADD88F4535541CFADA5CA65A250410388ED11F6535541E275DEB964A25041356417ADF7535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C60254554162184BEC55A25041B70D2142095455411FA9577453A250410904D1FA0B5455414ABAE06851A2504180719B2F0E545541158D58074FA25041E56161D710545541600B765A4DA25041501301901254554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455412562257E41A25041CB0D8CB41E545541096DB9E23EA25041472F555C21545541C89C25993EA25041C61D27A521545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541C4ACFCF331A25041B1D8AAEA2D5455418E601BEA2FA25041AAC872E62F545541032288112AA2504119749FA635545541A904F8E529A25041DC169FD2355455412246BCFE25A250410ADFD8C339545541779AD21A25A2504185441A9E3A545541AA45840922A250418506228E3D545541764DCAC520A2504114F190CE3E545541D2D3F46F1CA2504195B80E6243545541D45935AC1AA25041978CC674455455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541A434BC2015A25041CCB52A0E4D545541867794B413A250418DFCD1B34E5455413CF52B220EA2504118FEBA5754545541F44616220DA25041E20FF55A55545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541315A6AC903A250415953551A5B545541D056AD3602A250412C1762105C5455418E33534900A25041B129FEA75D545541DACFDEFFFFA15041DFD750E75D5455410D22ADC7FDA150417002B8F55F545541392F65F1FBA150419EC76ED061545541107582B6FBA150411A511A0D6254554114ADBD05F9A15041143CE8A964545541930A5B52F8A15041F95189726554554194C87691F5A150413472699C68545541B4380610F3A150414531520D6C5455415A20C9CAF2A15041C2C13B706C545541C8A89BF8F1A15041553969426D54554112D0ABB9F1A15041A22108886D545541C6577527EDA1504172BD542572545541B3663F68ECA150416A7BC5D2725455417FEE51B4EBA150419DF3B28673545541F51AD259E9A150416AA07B98755455417F7615E5E8A15041176EF3677654554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A54554144E8B71CE5A15041846A1E4E7C545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541285A831FE3A1504155C722697E545541200042D7E2A15041BE119FB57E545541CCA0B5CFE2A15041B928E5BB7E545541AE5DE29EE2A150415E5B87EE7E5455416FEA6C8FE1A15041065519C67F545541D9D30A07E1A150418C25743780545541C827854DDEA150414D3079A382545541D2D71A64DCA15041C1E33C5B8454554153544331DBA15041D2399E97855455418B253822DAA15041CBC5D21A87545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F8895455413CE15D8DD7A15041D177F7318A5455416DD17817D4A150412B8716A38E545541E6A31463D1A15041FE2D9E8C92545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5312821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+010600000001000000010300000001000000720000007113F40055A250412CB068662E535541EBB76D8A56A250410B299F582F5355416CBE63ED57A25041E950203330535541CDBC2D1258A250415329DC4B30535541C43228005AA25041FEC3149630535541EC9D74BB5CA250418CFFDAFE30535541565FF3405FA25041AE8D915F315355418FE44AAE60A2504118934E9631535541F19C667B61A250416DCDDA99315355412F2120E867A250418F87EFD331535541427DE3DC6AA2504168B601F831535541A023FEC56BA2504137060B0332535541E02560836EA250412A0E402432535541680CEC9C70A250418F53B33D32535541E32CB65671A25041E92A7F46325355415F0A4B3473A25041D3A31B5D32535541038C1AEB73A250413728F46432535541526F703F76A2504166FB71BE3253554101D1C5C178A25041BE4CAD1E335355411A77115E79A250414AAD1736335355419795CE617AA25041FA9D165933535541D79042A97BA25041B173C77633535541AF3E29067EA250415132BDB133535541D86328E27EA25041872BA8C633535541559FD8A47FA250417F1C2BD9335355410232DB8381A2504147C5B606345355414E055AD382A250410F1E9D2634535541FF45846C85A250414501DC653453554162F86F4087A2504184BC599234535541A95279F688A25041B4FA76C234535541C47DD5B98BA25041047A742435535541908BE63290A25041599A14C33553554109CCDCD894A250416283A07836535541DB7247FB95A250411EB724A536535541421204A096A25041D281C6C436535541C55A824497A25041477158E636535541BBD5F00399A250417C75A841375355416256172D9AA25041220D4D7E3753554121A4425A9CA25041F0849E22385355417D7215AE9DA25041AB489F823853554149007CC39EA25041043846E338535541787C13A6A0A2504113A75F55395355415EF64FA4A5A250416869A3B23A535541D6F008D4A9A2504125F42BDA3B53554171B99A56AEA25041BC691B173D535541434606B4AEA250417A9A10233D53554198D141A2B2A2504141D5DCA33D5355414A1D9194B3A25041932D59C33D535541AEA74C6BB9A250413538EDAA3E53554172585996BAA250415A77E8BE3B535541FDADFA6DBBA25041A562AE9F3953554139F6D526B9A250418FAA5B673953554178420D4BB6A25041A770051F3953554109195307B1A25041198A3F363753554144B87FCEABA2504158285A5A355355413A8E6864A6A2504171075FD6335355412D38A44AA3A2504192B30D3C3353554150BA54189CA2504153F5E2D53153554120953FE99AA25041A4217760355355415487D0D19AA250415999B8A635535541137ADFC498A25041174988E6345355413D0AD76395A25041C3F5289C33535541419921D090A25041BACEA05335535541CEFF519E90A2504179A0866135535541076F540F8BA2504160965DCD3453554155D3C2E28AA250413113D088345355411500ABC987A250411EDE35C42F535541C8D454828BA25041D97EA8B6315355414ECF11348EA2504129D3A61A33535541DE0F8E9F91A25041F95DB1E62E535541E17A14DE88A25041F6285CEF2A5355414AAB476480A25041FEEB86482C5355413E14D82D80A25041F18DDB4D2C535541060CB20E7CA2504176AB6AF728535541392E1C987BA250410262FCB0285355418FC2F53877A25041AE47E11A265355412FCA848876A25041E671C91723535541E3068C6B76A2504103F790A5225355415EB17BF969A25041BCECC6DD1C5355411E4CB9EB69A2504188EC62D71C535541638EEE6167A250417FCA62231E5355410D4A4D4F63A2504165066F3B2053554104D64B0563A2504188757B6120535541B81E85DB5FA25041E17A14FE1F535541F947763B61A25041EEF925471B5355418B4B895061A25041453A40321B5355414740DCC665A2504176FD2A8317535541214A4EBF67A250417E40777417535541DEDE0FA169A250410202316317535541923D978A68A25041B54911411353554100015BFE67A2504118DA694511535541E2017D5F67A25041C8F951F30E535541A4A75F5766A2504164A4EF150B535541D6BE2FF962A25041B6E969030F5355415679E1AA5FA25041F20E4CDE1253554155E8D6D05DA25041A183140715535541A35AF15D5DA2504100101190155355412ADD86B25BA25041083CCEF816535541F83467A25AA250410262A6E317535541ED678A5659A25041F174A69D19535541BF62E79156A25041A02857571D535541B0A0CC6555A25041A274E10B1F535541698936B354A2504119BE1E0D2053554177D86E2754A25041480B04E42053554127450E0353A25041C467F9D322535541185B6EDA52A25041CD8F5D86235355418138615B52A250410521FB9B255355415B03262652A25041E9B6E97F2653554185402B4D52A25041616C9B63285355417E29CA6252A25041CA71427A295355411F9B41F852A25041E4E4019B2A535541EA2A1EFC53A25041A5D0C2902C5355412A0705E654A2504173A112512E5355417113F40055A250412CB068662E535541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 201472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+010600000001000000010300000001000000090000008744EC2141A1504176D898A9295555415E4B7D944BA15041642ECDCC2B555541C931E15A78A15041C1DE27DC3355554191B8288C79A1504187F5AD3732555541C456140E72A15041C1D01D1530555541D1A71D8550A150416A9B287C2A555541FFA3A31043A1504192E566B62755554133BFFDD542A15041857494F1275555418744EC2141A1504176D898A929555541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 406320
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D961F3BB23A15041BEDA451BDF545541C5A362BC2FA15041AB8B4C76DF545541A3D1413B41A15041127F52F2DF545541182F44934CA1504177147043E05455416ACFA4215AA15041F9BAFFA8E054554127FCE4675AA15041586671ABE0545541683B9D9E5FA15041AC4D3629E15455412C48CF7F62A15041515FAD6EE15455411ACA71A369A15041C0AAE41AE254554170FF44156FA15041EE18DA27E35455410681062E6FA150416C9FAC2DE3545541E8F2917571A15041351E2952E05455411011DE6D6FA15041BF9EEC07E05455414C79620A6EA15041000F05D6DF54554191BA232A6AA150410723B94ADF5455412FE0ED0B5CA150415265574FDD54554125F241905AA1504183850A1ADD545541BEADDB924CA1504192A832FADC545541F5CD19534BA1504121799BF7DC5455419CD06B9449A15041DFA6F3EFDC54554157F4062A48A15041FD4D52E5DC545541303F74FE3EA1504192EBE7B9DC545541E44F68D231A15041FA2F47ADDC545541D3F688552FA150417EA0E4AADC545541967BFD722CA15041349820A8DC545541A1A884422BA150414219A1A7DC545541D54E8E072BA1504158F916AADC5455414518C82C23A15041856DFFFDDC5455415FF4D2F822A150413E6284F9DC545541D961F3BB23A15041BEDA451BDF545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 3178797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC25554133333343F6B65041CDCCCC3CDB255541E17A145EFEB65041295C8FE2D725554185EB510808B750415C8FC2E5D2255541A4703D3A0BB750411F85EBD1D225554148E17A940EB75041A4703DBAD1255541A4703D7A12B75041713D0A07D12555417B14AE3716B7504185EB5128CF2555416666666618B7504185EB5188CE25554114AE47811AB750418FC2F548CD255541713D0A171EB7504166666656CB2555411F85EB8120B75041A4703D1ACB255541F6285C3F24B75041E17A14CECB255541E17A140E27B750410AD7A310CE255541000000F029B75041295C8F42D1255541AE47E10A2CB75041AE47E11AD1255541666666862DB750417B14AEC7CF255541E17A14FE2DB75041CDCCCCFCCD2555410AD7A3A02FB7504114AE4781CC255541EC51B8FE30B750419A999959CB255541B81E856B31B7504148E17A84C7255541AE47E14A33B750419A9999B9C52555410AD7A34036B75041F6285CFFC2255541713D0A6737B7504185EB5168C12555419A9999D934B75041713D0AD7BC255541B81E850B32B75041A4703D7ABE2555418FC2F5782FB75041E17A143EBE2555419A9999E92DB7504166666676BD2555413333339310B750415C8FC2E5C82555411F85EB0106B7504148E17AD4CD25554133333393FCB650415C8FC295D225554133333343F6B65041C3F5288CD5255541713D0A07F0B65041295C8FE2D7255541EC51B8DEE9B6504152B81EC5DA25554183A25978E3B65041C4F00815DD25554166666666E3B65041B81E851BDD255541C3F528BCDFB65041713D0AA7DD255541C3F5288CCDB650410AD7A330E4255541B63DE68FBBB6504121F07EFDE9255541B63DE68FBBB65041F82624A8EC255541B884C96CB8B65041BC102804EE255541B66CFE47B6B65041DD33F17AEF2555418ED2BBAAB3B6504140CC6497EE255541295C8FB2B2B650415C8FC245EC255541F6285C2FA0B65041D7A3702DF1255541713D0A27A2B65041A4703DBAF5255541F6285C1FA4B65041AE47E14AFA255541D7A370CDA5B650418FC2F5B8F9255541B8F5CBCDA5B65041D88DC5BAF925554114FA0219A7B65041F1EBE948F92555411A93D334AEB65041DB7C0E7DF625554109000000295C8F92AFB650419A9999D9F32555419A9999E9AFB65041F6285CAFF2255541F6285C7FB0B6504148E17AF4F12555417B14AEC7B2B6504185EB51E8F12555418FC2F548B4B65041295C8F32F22555413D0AD793B4B6504148E17A44F3255541B81E85BBB2B650410AD7A330F4255541295C8FE2B0B650417B14AE87F4255541295C8F92AFB650419A9999D9F32555410F000000DE93890DA9B65041B53B7E6DF72555417D42F9CDA6B65041069F1B60F7255541369DB8DEA4B65041E01CA4E7F62555419A9999E9A3B65041AE47E1CAF5255541F6285C9FA3B650415C8FC255F425554114AE4741A4B65041EC51B81EF32555417B14AE77A5B65041295C8FA2F2255541CDCCCCECA6B650410AD7A350F32555417B14AE17A8B65041EC51B88EF3255541713D0A67A9B650410AD7A350F3255541713D0A47AAB650417B14AEC7F225554120DA1BFBABB650413926D3B8F2255541868A5A3CADB65041ABAC3922F4255541E1AB5432ABB65041760DB7A4F6255541DE93890DA9B65041B53B7E6DF7255541
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541E17A14DEB4B6504166666656FA2555413D0AD713B9B65041AE47E12AF9255541D7A3706DBCB6504133333363F825554166666656C1B650413D0AD773F725554114AE47C1C3B6504148E17AD4F62555410AD7A3B0C4B6504185EB5198F62555413D0AD7A3C4B65041A4703DEAF225554148E17A04D2B65041666666C6EC255541A4703D0AD1B650417B14AED7EA255541E17A144ED1B650411F85EB51E92555410AD7A340D2B6504100000080E9255541B81E85BBD3B65041C3F528BCE9255541D7A370EDD6B65041CDCCCC1CE92555410AD7A330D9B650418FC2F518E8255541AE47E1EADBB650419A999929E7255541CDCCCCCCDEB65041295C8F12E6255541333333C3E1B65041AE47E1AAE4255541D7A3701DE5B65041B81E85BBE3255541000000C0E6B65041C3F5281CE325554166666606EAB6504114AE4751E125554114AE47D1EBB650418FC2F528E125554148E17A74EDB65041A4703D4ADF255541713D0AB7EFB65041295C8FD2DE2555415C8FC2E5F1B65041F6285C2FDD2555413D0AD743F3B65041666666D6DC255541D2C2E944F3B65041AD8818D1DC255541E7112B1FF3B65041BC88DF95DC2555411289C2A8F2B65041F39B36C7DB25554168B00CB4F1B650411BCFB11BDA2555412AB61721F1B65041B8116619D9255541A9058458E8B65041864DAA8FDC255541A5E2357DE6B650416902C14BDD255541DDE910F9E3B650417FF0A74ADE255541B1072A2CE3B650410A973E94DE255541757F0C63E2B650412B7435E3DE2555413AB446FBDFB65041B515FBD4DF25554111140383DFB65041254A3304E02555416B5501EFDCB65041B3105707E1255541AC312E2DDCB65041A81F7153E1255541C3C86083DBB65041B2DEFF98E12555416A81608ADAB650414BECD8F5E1255541B310B674D9B650411CE863ADE225554136C6D470D7B650412EA48901E4255541319F2461D7B65041E219D90BE4255541B03C0456D5B65041170EA763E5255541FAAAC759D3B6504174D7ABB1E62555416F4B6225D1B650412FA63A26E82555417E3B6612D1B6504116FF6F35E8255541C26771EDD0B6504157F80A53E82555419228B04AD0B65041BACA45DFE8255541B69B4377CFB6504131906F95E9255541912BD44BCFB650414A15DCBAE9255541BDC7D741CFB65041BF96BEC0E9255541F5A4063CCFB65041BA262CC4E92555410C2C175ACDB65041C5C65F7FEA255541FA24D83DCDB65041A093588AEA255541355C095BCCB65041AE5272E2EA2555413CA0CB1DCCB6504172233CFAEA2555415C4FBA06CBB65041CA9AA266EB2555417467C118CAB65041418D12C3EB25554100911DDEC8B6504162544A3DEC255541369CECA7C7B6504147B9C7B5EC255541D3CBBF85C6B65041C8B57E26ED2555413A69ED4CC6B650414A11913CED255541BCE80A1BC3B650416578437AEE25554193B49111C3B650417982F17DEE25554170BD7F81C2B6504173D6E7B5EE2555417A771C2CC1B65041186A833AEF2555410AD3DC55C0B65041BA47BC8DEF255541A272FA43BFB650413D501FF8EF25554139F5BDA1BCB650413A5205FEF0255541FBF74BDBBAB650417B538BAEF12555415C0E8BCAB9B65041BEEB7D18F225554165AFD2F0B7B650418D9F80D0F2255541175AC8DBB4B6504175BDFE02F4255541BA9B8EC5B4B650411ED9A00BF4255541511B8FD8B3B65041DFEAAF67F4255541BEC0CBF6B0B65041CF2A7586F5255541416C005CADB65041099FB5ECF6255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 3579146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC25554133333343F6B65041CDCCCC3CDB255541E17A145EFEB65041295C8FE2D725554185EB510808B750415C8FC2E5D2255541A4703D3A0BB750411F85EBD1D225554148E17A940EB75041A4703DBAD1255541A4703D7A12B75041713D0A07D12555417B14AE3716B7504185EB5128CF2555416666666618B7504185EB5188CE25554114AE47811AB750418FC2F548CD255541713D0A171EB7504166666656CB2555411F85EB8120B75041A4703D1ACB255541F6285C3F24B75041E17A14CECB255541E17A140E27B750410AD7A310CE255541000000F029B75041295C8F42D1255541AE47E10A2CB75041AE47E11AD1255541666666862DB750417B14AEC7CF255541E17A14FE2DB75041CDCCCCFCCD2555410AD7A3A02FB7504114AE4781CC255541EC51B8FE30B750419A999959CB255541B81E856B31B7504148E17A84C7255541AE47E14A33B750419A9999B9C52555410AD7A34036B75041F6285CFFC2255541713D0A6737B7504185EB5168C12555419A9999D934B75041713D0AD7BC255541B81E850B32B75041A4703D7ABE2555418FC2F5782FB75041E17A143EBE2555419A9999E92DB7504166666676BD2555413333339310B750415C8FC2E5C82555411F85EB0106B7504148E17AD4CD25554133333393FCB650415C8FC295D225554133333343F6B65041C3F5288CD5255541713D0A07F0B65041295C8FE2D7255541EC51B8DEE9B6504152B81EC5DA25554183A25978E3B65041C4F00815DD25554166666666E3B65041B81E851BDD255541C3F528BCDFB65041713D0AA7DD255541C3F5288CCDB650410AD7A330E4255541B63DE68FBBB6504121F07EFDE9255541B63DE68FBBB65041F82624A8EC255541B884C96CB8B65041BC102804EE255541B66CFE47B6B65041DD33F17AEF2555418ED2BBAAB3B6504140CC6497EE255541295C8FB2B2B650415C8FC245EC255541F6285C2FA0B65041D7A3702DF1255541713D0A27A2B65041A4703DBAF5255541F6285C1FA4B65041AE47E14AFA255541D7A370CDA5B650418FC2F5B8F9255541B8F5CBCDA5B65041D88DC5BAF925554114FA0219A7B65041F1EBE948F92555411A93D334AEB65041DB7C0E7DF625554109000000295C8F92AFB650419A9999D9F32555419A9999E9AFB65041F6285CAFF2255541F6285C7FB0B6504148E17AF4F12555417B14AEC7B2B6504185EB51E8F12555418FC2F548B4B65041295C8F32F22555413D0AD793B4B6504148E17A44F3255541B81E85BBB2B650410AD7A330F4255541295C8FE2B0B650417B14AE87F4255541295C8F92AFB650419A9999D9F32555410F000000DE93890DA9B65041B53B7E6DF72555417D42F9CDA6B65041069F1B60F7255541369DB8DEA4B65041E01CA4E7F62555419A9999E9A3B65041AE47E1CAF5255541F6285C9FA3B650415C8FC255F425554114AE4741A4B65041EC51B81EF32555417B14AE77A5B65041295C8FA2F2255541CDCCCCECA6B650410AD7A350F32555417B14AE17A8B65041EC51B88EF3255541713D0A67A9B650410AD7A350F3255541713D0A47AAB650417B14AEC7F225554120DA1BFBABB650413926D3B8F2255541868A5A3CADB65041ABAC3922F4255541E1AB5432ABB65041760DB7A4F6255541DE93890DA9B65041B53B7E6DF7255541
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541E17A14DEB4B6504166666656FA2555413D0AD713B9B65041AE47E12AF9255541D7A3706DBCB6504133333363F825554166666656C1B650413D0AD773F725554114AE47C1C3B6504148E17AD4F62555410AD7A3B0C4B6504185EB5198F62555413D0AD7A3C4B65041A4703DEAF225554148E17A04D2B65041666666C6EC255541A4703D0AD1B650417B14AED7EA255541E17A144ED1B650411F85EB51E92555410AD7A340D2B6504100000080E9255541B81E85BBD3B65041C3F528BCE9255541D7A370EDD6B65041CDCCCC1CE92555410AD7A330D9B650418FC2F518E8255541AE47E1EADBB650419A999929E7255541CDCCCCCCDEB65041295C8F12E6255541333333C3E1B65041AE47E1AAE4255541D7A3701DE5B65041B81E85BBE3255541000000C0E6B65041C3F5281CE325554166666606EAB6504114AE4751E125554114AE47D1EBB650418FC2F528E125554148E17A74EDB65041A4703D4ADF255541713D0AB7EFB65041295C8FD2DE2555415C8FC2E5F1B65041F6285C2FDD2555413D0AD743F3B65041666666D6DC255541D2C2E944F3B65041AD8818D1DC255541E7112B1FF3B65041BC88DF95DC2555411289C2A8F2B65041F39B36C7DB25554168B00CB4F1B650411BCFB11BDA2555412AB61721F1B65041B8116619D9255541A9058458E8B65041864DAA8FDC255541A5E2357DE6B650416902C14BDD255541DDE910F9E3B650417FF0A74ADE255541B1072A2CE3B650410A973E94DE255541757F0C63E2B650412B7435E3DE2555413AB446FBDFB65041B515FBD4DF25554111140383DFB65041254A3304E02555416B5501EFDCB65041B3105707E1255541AC312E2DDCB65041A81F7153E1255541C3C86083DBB65041B2DEFF98E12555416A81608ADAB650414BECD8F5E1255541B310B674D9B650411CE863ADE225554136C6D470D7B650412EA48901E4255541319F2461D7B65041E219D90BE4255541B03C0456D5B65041170EA763E5255541FAAAC759D3B6504174D7ABB1E62555416F4B6225D1B650412FA63A26E82555417E3B6612D1B6504116FF6F35E8255541C26771EDD0B6504157F80A53E82555419228B04AD0B65041BACA45DFE8255541B69B4377CFB6504131906F95E9255541912BD44BCFB650414A15DCBAE9255541BDC7D741CFB65041BF96BEC0E9255541F5A4063CCFB65041BA262CC4E92555410C2C175ACDB65041C5C65F7FEA255541FA24D83DCDB65041A093588AEA255541355C095BCCB65041AE5272E2EA2555413CA0CB1DCCB6504172233CFAEA2555415C4FBA06CBB65041CA9AA266EB2555417467C118CAB65041418D12C3EB25554100911DDEC8B6504162544A3DEC255541369CECA7C7B6504147B9C7B5EC255541D3CBBF85C6B65041C8B57E26ED2555413A69ED4CC6B650414A11913CED255541BCE80A1BC3B650416578437AEE25554193B49111C3B650417982F17DEE25554170BD7F81C2B6504173D6E7B5EE2555417A771C2CC1B65041186A833AEF2555410AD3DC55C0B65041BA47BC8DEF255541A272FA43BFB650413D501FF8EF25554139F5BDA1BCB650413A5205FEF0255541FBF74BDBBAB650417B538BAEF12555415C0E8BCAB9B65041BEEB7D18F225554165AFD2F0B7B650418D9F80D0F2255541175AC8DBB4B6504175BDFE02F4255541BA9B8EC5B4B650411ED9A00BF4255541511B8FD8B3B65041DFEAAF67F4255541BEC0CBF6B0B65041CF2A7586F5255541416C005CADB65041099FB5ECF6255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 404712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC25554133333343F6B65041CDCCCC3CDB255541E17A145EFEB65041295C8FE2D725554185EB510808B750415C8FC2E5D2255541A4703D3A0BB750411F85EBD1D225554148E17A940EB75041A4703DBAD1255541A4703D7A12B75041713D0A07D12555417B14AE3716B7504185EB5128CF2555416666666618B7504185EB5188CE25554114AE47811AB750418FC2F548CD255541713D0A171EB7504166666656CB2555411F85EB8120B75041A4703D1ACB255541F6285C3F24B75041E17A14CECB255541E17A140E27B750410AD7A310CE255541000000F029B75041295C8F42D1255541AE47E10A2CB75041AE47E11AD1255541666666862DB750417B14AEC7CF255541E17A14FE2DB75041CDCCCCFCCD2555410AD7A3A02FB7504114AE4781CC255541EC51B8FE30B750419A999959CB255541B81E856B31B7504148E17A84C7255541AE47E14A33B750419A9999B9C52555410AD7A34036B75041F6285CFFC2255541713D0A6737B7504185EB5168C12555419A9999D934B75041713D0AD7BC255541B81E850B32B75041A4703D7ABE2555418FC2F5782FB75041E17A143EBE2555419A9999E92DB7504166666676BD2555413333339310B750415C8FC2E5C82555411F85EB0106B7504148E17AD4CD25554133333393FCB650415C8FC295D225554133333343F6B65041C3F5288CD5255541713D0A07F0B65041295C8FE2D7255541EC51B8DEE9B6504152B81EC5DA25554183A25978E3B65041C4F00815DD25554166666666E3B65041B81E851BDD255541C3F528BCDFB65041713D0AA7DD255541C3F5288CCDB650410AD7A330E4255541B63DE68FBBB6504121F07EFDE9255541B63DE68FBBB65041F82624A8EC255541B884C96CB8B65041BC102804EE255541B66CFE47B6B65041DD33F17AEF2555418ED2BBAAB3B6504140CC6497EE255541295C8FB2B2B650415C8FC245EC255541F6285C2FA0B65041D7A3702DF1255541713D0A27A2B65041A4703DBAF5255541F6285C1FA4B65041AE47E14AFA255541D7A370CDA5B650418FC2F5B8F9255541B8F5CBCDA5B65041D88DC5BAF925554114FA0219A7B65041F1EBE948F92555411A93D334AEB65041DB7C0E7DF625554109000000295C8F92AFB650419A9999D9F32555419A9999E9AFB65041F6285CAFF2255541F6285C7FB0B6504148E17AF4F12555417B14AEC7B2B6504185EB51E8F12555418FC2F548B4B65041295C8F32F22555413D0AD793B4B6504148E17A44F3255541B81E85BBB2B650410AD7A330F4255541295C8FE2B0B650417B14AE87F4255541295C8F92AFB650419A9999D9F32555410F000000DE93890DA9B65041B53B7E6DF72555417D42F9CDA6B65041069F1B60F7255541369DB8DEA4B65041E01CA4E7F62555419A9999E9A3B65041AE47E1CAF5255541F6285C9FA3B650415C8FC255F425554114AE4741A4B65041EC51B81EF32555417B14AE77A5B65041295C8FA2F2255541CDCCCCECA6B650410AD7A350F32555417B14AE17A8B65041EC51B88EF3255541713D0A67A9B650410AD7A350F3255541713D0A47AAB650417B14AEC7F225554120DA1BFBABB650413926D3B8F2255541868A5A3CADB65041ABAC3922F4255541E1AB5432ABB65041760DB7A4F6255541DE93890DA9B65041B53B7E6DF7255541
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541E17A14DEB4B6504166666656FA2555413D0AD713B9B65041AE47E12AF9255541D7A3706DBCB6504133333363F825554166666656C1B650413D0AD773F725554114AE47C1C3B6504148E17AD4F62555410AD7A3B0C4B6504185EB5198F62555413D0AD7A3C4B65041A4703DEAF225554148E17A04D2B65041666666C6EC255541A4703D0AD1B650417B14AED7EA255541E17A144ED1B650411F85EB51E92555410AD7A340D2B6504100000080E9255541B81E85BBD3B65041C3F528BCE9255541D7A370EDD6B65041CDCCCC1CE92555410AD7A330D9B650418FC2F518E8255541AE47E1EADBB650419A999929E7255541CDCCCCCCDEB65041295C8F12E6255541333333C3E1B65041AE47E1AAE4255541D7A3701DE5B65041B81E85BBE3255541000000C0E6B65041C3F5281CE325554166666606EAB6504114AE4751E125554114AE47D1EBB650418FC2F528E125554148E17A74EDB65041A4703D4ADF255541713D0AB7EFB65041295C8FD2DE2555415C8FC2E5F1B65041F6285C2FDD2555413D0AD743F3B65041666666D6DC255541D2C2E944F3B65041AD8818D1DC255541E7112B1FF3B65041BC88DF95DC2555411289C2A8F2B65041F39B36C7DB25554168B00CB4F1B650411BCFB11BDA2555412AB61721F1B65041B8116619D9255541A9058458E8B65041864DAA8FDC255541A5E2357DE6B650416902C14BDD255541DDE910F9E3B650417FF0A74ADE255541B1072A2CE3B650410A973E94DE255541757F0C63E2B650412B7435E3DE2555413AB446FBDFB65041B515FBD4DF25554111140383DFB65041254A3304E02555416B5501EFDCB65041B3105707E1255541AC312E2DDCB65041A81F7153E1255541C3C86083DBB65041B2DEFF98E12555416A81608ADAB650414BECD8F5E1255541B310B674D9B650411CE863ADE225554136C6D470D7B650412EA48901E4255541319F2461D7B65041E219D90BE4255541B03C0456D5B65041170EA763E5255541FAAAC759D3B6504174D7ABB1E62555416F4B6225D1B650412FA63A26E82555417E3B6612D1B6504116FF6F35E8255541C26771EDD0B6504157F80A53E82555419228B04AD0B65041BACA45DFE8255541B69B4377CFB6504131906F95E9255541912BD44BCFB650414A15DCBAE9255541BDC7D741CFB65041BF96BEC0E9255541F5A4063CCFB65041BA262CC4E92555410C2C175ACDB65041C5C65F7FEA255541FA24D83DCDB65041A093588AEA255541355C095BCCB65041AE5272E2EA2555413CA0CB1DCCB6504172233CFAEA2555415C4FBA06CBB65041CA9AA266EB2555417467C118CAB65041418D12C3EB25554100911DDEC8B6504162544A3DEC255541369CECA7C7B6504147B9C7B5EC255541D3CBBF85C6B65041C8B57E26ED2555413A69ED4CC6B650414A11913CED255541BCE80A1BC3B650416578437AEE25554193B49111C3B650417982F17DEE25554170BD7F81C2B6504173D6E7B5EE2555417A771C2CC1B65041186A833AEF2555410AD3DC55C0B65041BA47BC8DEF255541A272FA43BFB650413D501FF8EF25554139F5BDA1BCB650413A5205FEF0255541FBF74BDBBAB650417B538BAEF12555415C0E8BCAB9B65041BEEB7D18F225554165AFD2F0B7B650418D9F80D0F2255541175AC8DBB4B6504175BDFE02F4255541BA9B8EC5B4B650411ED9A00BF4255541511B8FD8B3B65041DFEAAF67F4255541BEC0CBF6B0B65041CF2A7586F5255541416C005CADB65041099FB5ECF6255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 404770
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC25554133333343F6B65041CDCCCC3CDB255541E17A145EFEB65041295C8FE2D725554185EB510808B750415C8FC2E5D2255541A4703D3A0BB750411F85EBD1D225554148E17A940EB75041A4703DBAD1255541A4703D7A12B75041713D0A07D12555417B14AE3716B7504185EB5128CF2555416666666618B7504185EB5188CE25554114AE47811AB750418FC2F548CD255541713D0A171EB7504166666656CB2555411F85EB8120B75041A4703D1ACB255541F6285C3F24B75041E17A14CECB255541E17A140E27B750410AD7A310CE255541000000F029B75041295C8F42D1255541AE47E10A2CB75041AE47E11AD1255541666666862DB750417B14AEC7CF255541E17A14FE2DB75041CDCCCCFCCD2555410AD7A3A02FB7504114AE4781CC255541EC51B8FE30B750419A999959CB255541B81E856B31B7504148E17A84C7255541AE47E14A33B750419A9999B9C52555410AD7A34036B75041F6285CFFC2255541713D0A6737B7504185EB5168C12555419A9999D934B75041713D0AD7BC255541B81E850B32B75041A4703D7ABE2555418FC2F5782FB75041E17A143EBE2555419A9999E92DB7504166666676BD2555413333339310B750415C8FC2E5C82555411F85EB0106B7504148E17AD4CD25554133333393FCB650415C8FC295D225554133333343F6B65041C3F5288CD5255541713D0A07F0B65041295C8FE2D7255541EC51B8DEE9B6504152B81EC5DA25554183A25978E3B65041C4F00815DD25554166666666E3B65041B81E851BDD255541C3F528BCDFB65041713D0AA7DD255541C3F5288CCDB650410AD7A330E4255541B63DE68FBBB6504121F07EFDE9255541B63DE68FBBB65041F82624A8EC255541B884C96CB8B65041BC102804EE255541B66CFE47B6B65041DD33F17AEF2555418ED2BBAAB3B6504140CC6497EE255541295C8FB2B2B650415C8FC245EC255541F6285C2FA0B65041D7A3702DF1255541713D0A27A2B65041A4703DBAF5255541F6285C1FA4B65041AE47E14AFA255541D7A370CDA5B650418FC2F5B8F9255541B8F5CBCDA5B65041D88DC5BAF925554114FA0219A7B65041F1EBE948F92555411A93D334AEB65041DB7C0E7DF625554109000000295C8F92AFB650419A9999D9F32555419A9999E9AFB65041F6285CAFF2255541F6285C7FB0B6504148E17AF4F12555417B14AEC7B2B6504185EB51E8F12555418FC2F548B4B65041295C8F32F22555413D0AD793B4B6504148E17A44F3255541B81E85BBB2B650410AD7A330F4255541295C8FE2B0B650417B14AE87F4255541295C8F92AFB650419A9999D9F32555410F000000DE93890DA9B65041B53B7E6DF72555417D42F9CDA6B65041069F1B60F7255541369DB8DEA4B65041E01CA4E7F62555419A9999E9A3B65041AE47E1CAF5255541F6285C9FA3B650415C8FC255F425554114AE4741A4B65041EC51B81EF32555417B14AE77A5B65041295C8FA2F2255541CDCCCCECA6B650410AD7A350F32555417B14AE17A8B65041EC51B88EF3255541713D0A67A9B650410AD7A350F3255541713D0A47AAB650417B14AEC7F225554120DA1BFBABB650413926D3B8F2255541868A5A3CADB65041ABAC3922F4255541E1AB5432ABB65041760DB7A4F6255541DE93890DA9B65041B53B7E6DF7255541
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541E17A14DEB4B6504166666656FA2555413D0AD713B9B65041AE47E12AF9255541D7A3706DBCB6504133333363F825554166666656C1B650413D0AD773F725554114AE47C1C3B6504148E17AD4F62555410AD7A3B0C4B6504185EB5198F62555413D0AD7A3C4B65041A4703DEAF225554148E17A04D2B65041666666C6EC255541A4703D0AD1B650417B14AED7EA255541E17A144ED1B650411F85EB51E92555410AD7A340D2B6504100000080E9255541B81E85BBD3B65041C3F528BCE9255541D7A370EDD6B65041CDCCCC1CE92555410AD7A330D9B650418FC2F518E8255541AE47E1EADBB650419A999929E7255541CDCCCCCCDEB65041295C8F12E6255541333333C3E1B65041AE47E1AAE4255541D7A3701DE5B65041B81E85BBE3255541000000C0E6B65041C3F5281CE325554166666606EAB6504114AE4751E125554114AE47D1EBB650418FC2F528E125554148E17A74EDB65041A4703D4ADF255541713D0AB7EFB65041295C8FD2DE2555415C8FC2E5F1B65041F6285C2FDD2555413D0AD743F3B65041666666D6DC255541D2C2E944F3B65041AD8818D1DC255541E7112B1FF3B65041BC88DF95DC2555411289C2A8F2B65041F39B36C7DB25554168B00CB4F1B650411BCFB11BDA2555412AB61721F1B65041B8116619D9255541A9058458E8B65041864DAA8FDC255541A5E2357DE6B650416902C14BDD255541DDE910F9E3B650417FF0A74ADE255541B1072A2CE3B650410A973E94DE255541757F0C63E2B650412B7435E3DE2555413AB446FBDFB65041B515FBD4DF25554111140383DFB65041254A3304E02555416B5501EFDCB65041B3105707E1255541AC312E2DDCB65041A81F7153E1255541C3C86083DBB65041B2DEFF98E12555416A81608ADAB650414BECD8F5E1255541B310B674D9B650411CE863ADE225554136C6D470D7B650412EA48901E4255541319F2461D7B65041E219D90BE4255541B03C0456D5B65041170EA763E5255541FAAAC759D3B6504174D7ABB1E62555416F4B6225D1B650412FA63A26E82555417E3B6612D1B6504116FF6F35E8255541C26771EDD0B6504157F80A53E82555419228B04AD0B65041BACA45DFE8255541B69B4377CFB6504131906F95E9255541912BD44BCFB650414A15DCBAE9255541BDC7D741CFB65041BF96BEC0E9255541F5A4063CCFB65041BA262CC4E92555410C2C175ACDB65041C5C65F7FEA255541FA24D83DCDB65041A093588AEA255541355C095BCCB65041AE5272E2EA2555413CA0CB1DCCB6504172233CFAEA2555415C4FBA06CBB65041CA9AA266EB2555417467C118CAB65041418D12C3EB25554100911DDEC8B6504162544A3DEC255541369CECA7C7B6504147B9C7B5EC255541D3CBBF85C6B65041C8B57E26ED2555413A69ED4CC6B650414A11913CED255541BCE80A1BC3B650416578437AEE25554193B49111C3B650417982F17DEE25554170BD7F81C2B6504173D6E7B5EE2555417A771C2CC1B65041186A833AEF2555410AD3DC55C0B65041BA47BC8DEF255541A272FA43BFB650413D501FF8EF25554139F5BDA1BCB650413A5205FEF0255541FBF74BDBBAB650417B538BAEF12555415C0E8BCAB9B65041BEEB7D18F225554165AFD2F0B7B650418D9F80D0F2255541175AC8DBB4B6504175BDFE02F4255541BA9B8EC5B4B650411ED9A00BF4255541511B8FD8B3B65041DFEAAF67F4255541BEC0CBF6B0B65041CF2A7586F5255541416C005CADB65041099FB5ECF6255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900954 - 53621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000028000000AA7CF2354FE350411810B1974D265441666666964DE35041A4703DAA4B2654410AD7A3903CE350415C8FC2153A265441AE47E1FA38E350417B14AE673A26544152B81E7534E350411F85EB3140265441A4703DAA31E3504152B81E054326544152B81ED52BE3504148E17A8449265441F6285CEF23E35041A4703D6A52265441713D0A071CE35041000000505B2654410AD7A36015E35041713D0AC7622654411B0F9C6616E350415F4C12C765265441EC51B82E18E350410AD7A320672654415014EE5817E35041AE603C6168265441E51309FC16E35041810E4C3C692654417191339715E35041DC24C6626B265441AA647AD115E35041931BC9AF6E2654416976D85A17E35041EE964A56702654417FA1E42816E35041FA80F60075265441CD0CB53D17E3504173AF5CBE752654411A78855218E350410891A792752654416F6B2EB019E3504125448CA9742654414246DB241CE35041960E6D2C742654410227749D1DE35041AEA8A8DF712654410194F1A91FE35041B6C3031C7026544156879A0721E35041B6C3031C702654411188FA3127E3504130FFF6736B2654415D1EE59A34E3504180664C9C5F265441A40225E446E35041A9520CAC6C265441D8A59FED53E35041034D5944762654415E7638E256E3504158E9CB7B78265441CECEB75859E3504115817F017726544163B9E3AB5CE350416A1E3A30732654413B9EC10461E3504152EBA2BB6D265441D545428E5EE350416C7E978F6826544192DDF5135DE350419D89A5E1632654418221E9D45CE35041D0362D145F265441415B163B5BE3504133EE7AA15B2654415532FECF55E350411AD52F3A5526544170272E3E4FE3504106DD77A14D265441AA7CF2354FE350411810B1974D265441
+</a>
+
+<b>
+0106000000010000000103000000010000003700000023FC4CBF25E350414846EA8B6C26544169ECC57F28E350410C6E2F4D6A2654412BA9B9262AE35041584CABD7682654415D1EE59A34E3504180664C9C5F265441357F675C3AE350415E19CEB86326544124ECB36A3AE3504154B004C363265441FDA4296C3AE3504114A20FC4632654419515BB6C3AE35041C78477C463265441A40225E446E35041A9520CAC6C265441D8A59FED53E35041034D5944762654415E7638E256E3504158E9CB7B782654419AD0033B59E3504167E65113772654412F56E78D59E350412ADC6EC47626544163B9E3AB5CE350416A1E3A30732654413B9EC10461E3504152EBA2BB6D265441D545428E5EE350416C7E978F682654419D1769C95DE35041BD163D206626544148618BC55DE350410600FF136626544192DDF5135DE350419D89A5E16326544146A524005DE35041507311C162265441B34AE3055DE350411E5A3BCF6226544140FCAA055DE35041F15FF1CA62265441AFEA0AFE5CE350418009403662265441851D4AFB5CE35041EE6890006226544100E737FA5CE35041AC41ADEB612654419659BCF95CE3504118FC43E261265441C40522D45CE35041E832314060265441A5A5D1BB5CE35041AD0422DE5E265441132AB66B5BE35041FD97350A5C265441AEE06F3E5BE3504137E6B1A85B26544152FBA5F259E350410A37531D5A265441687AA4C359E3504134CDC5E559265441D785003758E350414409041158265441E720C5EE57E35041FB91A6BB57265441A13D8B2057E3504135CBEDC756265441931AB97D53E3504180D7048B5226544170272E3E4FE3504106DD77A14D265441AA7CF2354FE350411810B1974D265441EFE926DD4EE3504136E73F2E4D265441F19BA5F516E35041A9C55C4B692654417291339715E35041DD24C6626B265441AB647AD115E35041921BC9AF6E2654416476D85A17E35041F2964A567026544180A1E42816E35041FB80F60075265441D20CB53D17E350416EAF5CBE752654411A78855218E350410991A792752654416E6B2EB019E3504126448CA97426544100FF30C819E350410EF2C4A47426544178BCDF2C1CE35041C343E41F742654410427749D1DE35041ABA8A8DF712654417C7366DC1DE35041077574A971265441022BFE2C1EE35041AE410E64712654410194F1A91FE35041BAC3031C70265441C81271FD20E35041BAC3031C7026544123FC4CBF25E350414846EA8B6C265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 249284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB8544185EB5168FBF450410AD7A3C0EEB8544148E17AE4FAF45041CDCCCC6CEEB85441C3F528DCF9F45041CDCCCCFCEEB8544148E17A04F9F450410AD7A350EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441C3F5280CFAF4504148E17A34EDB85441C3F5282CF8F4504148E17AD4ECB8544185EB5108F8F450410AD7A360EBB854410AD7A3B0F8F45041CDCCCC8CE9B8544148E17A14FBF45041CDCCCCBCE9B854410AD7A380FBF450418FC2F5B8EAB854410AD7A330FDF450410AD7A370EAB8544148E17A04FFF450418FC2F5B8EAB854410AD7A310FFF450418FC2F538E9B85441C3F528BCFEF450418FC2F5E8E7B854410AD7A3A0FFF4504148E17A34E7B8544185EB517800F550410AD7A320E6B8544148E17A9402F550410AD7A360E5B85441C3F5280C03F550418FC2F578E5B854410AD7A39003F550410AD7A3D0E4B85441C3F5283C03F5504148E17AD4E3B85441C3F5285C04F550418FC2F598E3B854410AD7A34005F5504148E17AE4E2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854410AD7A33009F5504148E17A84E2B854410AD7A3E00AF5504148E17AC4E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544185EB51880BF550410AD7A390DFB854410AD7A3100BF550410AD7A390DCB854410AD7A3D00BF550418FC2F558DBB85441C3F528DC0BF55041CDCCCCCCD9B85441C3F528DC08F550410AD7A3A0D8B8544185EB51F807F55041CDCCCC2CD7B85441C3F528DC08F550418FC2F5C8D4B8544148E17A8409F55041CDCCCC8CD4B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441C3F528CC0CF550410AD7A3C0D6B8544185EB51380DF55041CDCCCC2CD7B8544148E17A840CF5504148E17A94D8B8544185EB51A80CF550418FC2F568DAB85441C3F528BC0DF5504148E17A34DBB854410AD7A3900FF550410AD7A350DDB854410AD7A31011F550418FC2F5C8DDB854410AD7A36012F55041CDCCCCECDDB8544185EB510813F550418FC2F5C8DDB85441C3F5284C14F550410AD7A3D0DEB85441C3F5286C16F55041C3F528ACDFB85441A4703DAA18F550417B14AE77DBB85441C3F528AC17F5504148E17AA4DAB854410AD7A32016F5504148E17A14DAB85441C3F528AC14F550418FC2F598DAB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB854410AD7A31011F550410AD7A3A0DBB8544148E17AA410F5504148E17AB4DCB8544185EB513810F550418FC2F528DBB8544148E17AA410F55041CDCCCCECDAB8544185EB51C810F550410AD7A390D9B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B8544185EB512814F550418FC2F588D5B854410AD7A36015F5504148E17A84D3B854410AD7A3F015F550410AD7A360D3B8544185EB513816F5504148E17A84D3B85441C3F528BC16F550418FC2F548D3B8544185EB51A818F550410AD7A350D1B8544148E17A7419F55041CDCCCCFCD0B85441C3F5285C19F5504148E17A74CEB8544185EB51C819F55041CDCCCC6CCDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB8544185EB51B81AF55041CDCCCCFCCAB8544148E17A441CF55041CDCCCCACC9B8544185EB51F81CF5504148E17AF4C9B8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF550418FC2F528CCB8544148E17A241EF5504148E17A64CCB854410AD7A3501FF550410AD7A3A0CCB854410AD7A3301EF550410AD7A3B0CEB854410AD7A3E01CF5504148E17A64D2B85441C3F5281C1DF5504148E17A24D3B85441AE47E1BA21F550415C8FC2C5CBB85441A4703D8A26F55041C3F528FCC4B8544185EB51D824F550418FC2F528C6B854410AD7A30024F550418FC2F538C5B854410AD7A3F024F550418FC2F518C4B8544148E17A4425F550410AD7A320C2B8544185EB51F825F55041CDCCCC0CC1B8544148E17AC426F550410AD7A3A0BDB85441C3F5281C26F550410AD7A310BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441C3F528AC26F55041CDCCCCFCBBB8544185EB51C825F550418FC2F528BAB85441C3F5284C26F550410AD7A3A0B7B8544148E17A2427F5504148E17A04B7B8544148E17AA428F55041CDCCCCECB6B854410AD7A3A029F5504148E17AD4B6B8544185EB51482AF5504148E17A54B8B85441CDCCCC5C2BF550418FC2F568BCB85441295C8F322BF550418FC2F568BEB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B8544148E17A642CF5504148E17AB4B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B8544185EB51282CF550410AD7A350B0B854410AD7A3502BF5504148E17A94AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB85441CDCCCCBC2EF55041CDCCCC8CADB85441CDCCCCEC2EF550410AD7A390ACB854410AD7A3502EF550418FC2F518ACB854410AD7A3002DF5504148E17A54ACB854410AD7A3B02BF550418FC2F5E8ABB8544148E17A542AF550410AD7A300ACB8544185EB518829F550418FC2F528ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB854410AD7A31029F5504148E17AE4A9B854410AD7A3602AF55041CDCCCC9CA6B8544148E17A542DF55041CDCCCC5CA7B8544185EB51782DF55041CDCCCCDCA5B85441CDCCCC7C2FF5504148E17AF4A5B854410AD7A39030F5504148E17A34A2B85441CDCCCCEC31F5504148E17A44A1B85441CDCCCCFC36F5504148E17A34A2B85441CDCCCCAC38F55041CDCCCC1CA2B85441CDCCCC6C39F55041CDCCCC5CA1B8544148E17A443AF55041CDCCCCFCA0B8544148E17A643BF550418FC2F538A1B854410AD7A3403BF550410AD7A3709FB85441CDCCCC3C3CF550410AD7A3109FB85441CDCCCC5C3DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB854410AD7A3603FF550418FC2F5C89EB85441CDCCCC2C40F550418FC2F5F89EB8544185EB519840F5504148E17A949FB85441CDCCCC3C42F55041CDCCCC6CA0B85441CDCCCC6C42F5504148E17AF49FB8544185EB515841F5504148E17A449EB85441CDCCCCCC42F550410AD7A3D09CB8544185EB51D842F550418FC2F5389BB854410AD7A39042F5504148E17A849AB854410AD7A3F042F5504148E17A849AB854410AD7A32043F5504148E17AB49AB854410AD7A3C045F550410AD7A3F09AB854410AD7A35046F55041CDCCCCBC9BB8544185EB519846F5504148E17A149BB854410AD7A3D047F550410AD7A3009AB854410AD7A3B049F550410AD7A3609AB85441CDCCCCAC4AF550410AD7A3209BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441CDCCCCCC4EF55041CDCCCCFC97B854410AD7A3504FF550418FC2F53898B8544185EB519852F55041CDCCCC1C99B8544148E17A8454F550418FC2F5789AB85441CDCCCCCC54F550418FC2F5E899B8544185EB51C855F550418FC2F5489AB8544148E17A3456F5504148E17A6499B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A4703D8A5BF55041C3F528FC9AB85441AE47E1AA5CF55041666666069BB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB85441333333E35EF55041F6285CFF9AB85441295C8F3263F550415C8FC2E59AB8544148E17A1464F55041CDCCCC0C9AB85441295C8FE264F55041C3F528DC9AB85441A4703D8A68F55041666666C69AB8544185EB512868F550410AD7A36097B85441CDCCCCFC66F550418FC2F58896B85441CDCCCCCC66F550418FC2F53895B854410AD7A3506AF5504148E17A6493B8544185EB51A869F550418FC2F5C892B85441CDCCCC1C62F5504148E17A4492B85441CDCCCCFC60F55041CDCCCCEC92B8544148E17A945FF550418FC2F55893B854410AD7A3205EF55041CDCCCC3C94B85441CDCCCC7C5CF55041CDCCCCDC93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B8544185EB516858F5504148E17AC490B85441CDCCCC1C56F5504148E17A2491B85441CDCCCC5C55F55041CDCCCC4C90B85441CDCCCC0C54F550418FC2F58890B85441CDCCCCDC53F550418FC2F50892B8544185EB512853F55041CDCCCC5C92B8544148E17A1452F5504148E17A9490B8544148E17AF450F5504148E17A748FB85441CDCCCC8C4FF550410AD7A3508FB85441CDCCCCFC4EF55041CDCCCC4C90B85441CDCCCCFC4EF550410AD7A39091B8544185EB51584DF550418FC2F54891B8544185EB51C849F55041CDCCCCAC90B8544185EB517845F55041CDCCCC1C90B8544148E17A9441F5504148E17AC490B854410AD7A3103EF550418FC2F5A891B8544185EB51183CF550418FC2F59892B8544148E17A043BF55041CDCCCC7C93B85441CDCCCC4C3BF550410AD7A3F094B85441CDCCCCDC38F550410AD7A3B095B85441CDCCCCFC36F550418FC2F53895B8544185EB518835F5504148E17A3496B854410AD7A37035F550410AD7A33097B8544185EB51F834F55041CDCCCC3C97B85441CDCCCC2C34F55041CDCCCC5C98B854410AD7A33033F550418FC2F55899B8544148E17A5430F550418FC2F5A89AB85441CDCCCC4C2FF5504148E17AA49BB8544148E17A942CF55041CDCCCC9C9AB854410AD7A3A029F5504148E17A149BB85441EC51B82E29F550413D0AD7139BB85441E17A14EE26F5504152B81E659CB854413333330321F550417B14AEE79FB854410000002018F5504152B81EF5A7B85441B81E85EB15F5504133333363AAB85441CDCCCCFC13F5504148E17A64ADB854410AD7A38013F550410AD7A340AEB854410AD7A38013F55041CDCCCCCCAFB85441C3F5287C11F5504148E17A74B3B85441C3F5286C0FF550418FC2F558B4B8544148E17AE40CF550418FC2F5A8B8B8544185EB51E80BF55041CDCCCCECB9B854410AD7A3400BF55041CDCCCC2CBFB854410AD7A3A008F550418FC2F5A8C1B8544185EB51F804F5504148E17AB4CAB85441C3F528DC05F550418FC2F568CBB8544185EB517806F550418FC2F5D8CDB85441C3F5284C05F5504148E17A84D0B854410AD7A31005F550418FC2F5F8D1B85441C3F528CC03F55041CDCCCC1CD2B85441C3F5283C03F550410AD7A350D4B854410AD7A35001F5504148E17A24D3B854417B14AE67FEF45041A4703D6AD8B85441CDCCCCECF8F450415C8FC285DFB8544185EB51E8F9F45041CDCCCC0CE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B8544148E17A34F6F450410AD7A310E4B85441C3F528FCF4F450418FC2F5B8E4B85441C3F5287CF3F450418FC2F5B8E4B8544185EB51F8EBF4504185EB51C8EBB854413D0AD7E3E9F45041CDCCCCDCEEB854418FC2F5B8E8F45041EC51B82EF2B854417B14AEA7E8F450417B14AE87F5B854410103000000010000001600000085EB51F891F5504148E17A74A7B85441CDCCCC0C93F550410AD7A300A9B8544185EB518895F550410AD7A330A9B8544148E17A1497F5504148E17AE4A9B8544185EB51A899F550410AD7A300ACB854410AD7A3E09AF5504148E17A24ACB8544185EB51E89BF550418FC2F5B8ABB85441EC51B83E9EF55041AE47E10AACB85441CDCCCC5C9DF5504148E17AD4AAB85441CDCCCCCC99F550418FC2F558A8B854410AD7A38097F550418FC2F568A4B85441A4703D0A96F55041F6285C4FA3B8544148E17A8493F550418FC2F518A3B85441CDCCCC8C8BF550418FC2F598A1B8544148E17AD48BF5504148E17A64A2B85441CDCCCC4C8CF550410AD7A330A3B8544185EB51588CF550410AD7A380A4B85441CDCCCCCC8DF550410AD7A3B0A7B85441CDCCCCEC8EF550410AD7A320A7B85441CDCCCCAC8FF5504148E17A44A7B85441CDCCCCFC90F550418FC2F5D8A6B8544185EB51F891F5504148E17A74A7B854410103000000010000001800000000000060FBF4504152B81E7564B854410AD7A370FFF450410AD7A3A063B8544148E17A64FFF45041CDCCCC2C62B854410AD7A3F0FDF4504148E17A1462B8544148E17A24FDF45041CDCCCC3C61B85441D7A370DDF9F450419A9999A962B8544185EB5188F6F4504148E17A6463B854410AD7A330F4F4504185EB51C862B854410AD7A3D0F0F45041CDCCCCEC62B8544148E17A44EFF450410AD7A30064B8544148E17AF4EDF45041CDCCCC0C64B854410AD7A310EDF4504185EB517864B85441CDCCCC1CEAF450410AD7A39064B8544185EB5198E9F4504148E17A5464B8544148E17A04E7F45041CDCCCCCC64B854410AD7A330E5F4504148E17A0466B8544148E17AA4E3F45041CDCCCC1C66B854410AD7A3C0E2F45041CDCCCCDC66B8544148E17AE4DFF450410AD7A33067B854418FC2F5E8DFF45041666666C667B85441B81E855BEAF4504185EB51B866B8544152B81E45F7F450419A99990967B85441A4703D4AF9F4504152B81E1567B8544100000060FBF4504152B81E7564B8544101030000000100000016000000CDCCCC5CA3F550410AD7A3F0BEB85441CDCCCCACA4F550418FC2F598BFB854410AD7A350A6F5504148E17A54C1B8544185EB5158A7F550410AD7A3C0C4B85441CDCCCC2CA6F55041CDCCCCCCBBB854410AD7A380A3F550410AD7A3E0B9B8544148E17A24A2F55041CDCCCCECB6B8544148E17AF4A1F5504148E17AB4B5B8544148E17A94A1F550418FC2F5C8B3B85441CDCCCC2CA0F5504148E17A24B2B85441CDCCCC9C9FF5504148E17A04B1B85441C3F5285C9FF550418FC2F578AFB85441CDCCCC3C9FF550410AD7A300AFB8544185EB51B89EF55041CDCCCC0CAFB8544148E17A549FF550410AD7A370B1B8544148E17A14A0F55041CDCCCC8CB6B85441CDCCCCCC9FF5504148E17A34BAB854410AD7A3C09FF5504148E17A94BDB8544148E17A14A0F5504148E17AB4BEB854410AD7A310A1F55041CDCCCCFCBEB854410AD7A390A2F550410AD7A3F0BEB85441CDCCCC5CA3F550410AD7A3F0BEB854410103000000010000002B0000000AD7A320EFF4504148E17AA47AB8544185EB5198EFF45041CDCCCCDC7BB85441CDCCCC5CEFF450410AD7A3C07CB85441CDCCCC5CEFF4504148E17AA47DB8544185EB51A8EEF45041CDCCCC1C81B8544148E17AE4EEF4504148E17A2482B8544148E17A34F0F450410AD7A36082B85441295C8F92F1F4504148E17AE484B854413D0AD703F4F45041CDCCCC6C81B854410AD7A3E0F4F45041AE47E10A7EB854413D0AD793F3F45041AE47E1AA77B85441713D0A17F0F450410000004070B85441C3F5284CEFF4504185EB51D86DB8544185EB51A8EEF45041CDCCCC4C6CB854410AD7A350ECF450410AD7A3606DB854410AD7A3E0E9F4504185EB51486DB8544185EB5128E4F4504148E17A746EB8544148E17AA4E3F450410AD7A3406FB8544185EB5178E2F450410AD7A33070B854410AD7A350DDF4504148E17A8470B8544148E17AB4DCF4504148E17AE470B8544185EB51E8DBF4504185EB515872B854410AD7A300DCF450410AD7A33073B85441CDCCCCECDDF4504148E17AF475B8544148E17A24DCF450410AD7A34078B85441CDCCCC2CDAF450410AD7A3C079B8544148E17A14DAF4504148E17AD47AB8544185EB51F8DAF4504148E17A547CB854410AD7A320E0F45041CDCCCC9C7CB8544148E17A24DFF4504148E17A747AB8544185EB5158E1F450410AD7A3D078B854410AD7A3C0E2F4504185EB514879B854410AD7A3E0E3F450410AD7A3807AB8544185EB51C8E3F45041CDCCCC7C7BB8544148E17A84E2F4504148E17AE47CB8544148E17A24E5F45041CDCCCCFC7CB85441CDCCCC1CE7F45041CDCCCC8C7DB8544148E17A24E8F45041CDCCCC2C7DB85441CDCCCCCCE8F450410AD7A3607CB8544185EB5198E9F4504185EB51487CB854410AD7A350ECF4504148E17A147AB8544148E17A64EDF450410AD7A3207AB854410AD7A320EFF4504148E17AA47AB854410103000000010000003000000085EB51A8E5F450410AD7A390ACB8544148E17AA4E6F45041CDCCCC6CACB8544185EB51E8E7F450410AD7A320ADB85441CDCCCC2CE9F45041CDCCCC7CABB854410AD7A3D0EAF450410AD7A380AAB8544185EB5148EBF45041CDCCCC6CA9B8544148E17A54EEF450410AD7A3D0A5B8544148E17A14EFF45041CDCCCC2CA4B8544185EB5178EEF4504148E17AA4A1B8544185EB5168EFF45041CDCCCC6CA0B8544185EB5138EFF45041CDCCCC9C9DB8544148E17AA4EFF4504148E17A049CB85441CDCCCCFCEEF45041CDCCCCAC9CB8544148E17A64EDF4504148E17AC49CB85441CDCCCC4CEDF45041CDCCCC2C9BB8544148E17A94EDF4504148E17AF499B8544185EB51D8EEF4504185EB51C898B85441CDCCCCFCEEF4504185EB51D897B8544185EB51C8EFF450410AD7A3D096B854410AD7A300F1F45041CDCCCC7C93B85441CDCCCCACF3F450410AD7A34090B854410AD7A330F4F450410AD7A3208FB85441CDCCCCACF3F45041CDCCCCDC8DB8544185EB5148F4F4504148E17AE48BB8544148E17A44F5F4504185EB51F88CB85441CDCCCC1CF6F4504185EB51488BB85441CDCCCC4CF6F4504148E17AD489B8544148E17A04F6F4504148E17A0487B8544148E17A54F7F4504185EB51C883B85441CDCCCC8CF8F4504148E17AC481B8544185EB5108F8F4504185EB513880B854410AD7A350F8F450410AD7A3007FB8544148E17AE4F7F45041CDCCCC7C7EB8544148E17A44F6F4504185EB51D87FB8544185EB5188F0F4504185EB51D888B854410AD7A390F1F45041CDCCCCEC89B8544148E17A54F1F4504148E17A848BB8544185EB5128F0F4504185EB51D88BB8544148E17AE4EEF4504185EB51988CB85441CDCCCCECECF4504185EB513892B85441CDCCCCFCEBF45041CDCCCC5C98B8544148E17A54EBF4504185EB51189AB854410AD7A360EBF4504185EB51289CB85441CDCCCCBCE9F4504148E17A649FB854410AD7A350E9F4504148E17A04A2B8544148E17A24E8F450410AD7A3F0A3B854410AD7A320E6F4504148E17AE4A9B8544185EB51A8E5F450410AD7A390ACB8544101030000000100000010000000CDCCCCFCDFF4504148E17A44BCB8544185EB5168E0F45041CDCCCC5CBCB85441CDCCCCBCE0F450410AD7A390BBB8544148E17A74E3F4504185EB5158B7B854410AD7A3E0E3F4504148E17A74B6B854410AD7A3E0E3F45041CDCCCC3CB5B85441CDCCCCDCE4F4504148E17A04B4B8544148E17A14E6F4504148E17A64B1B85441CDCCCC6CE5F450410AD7A310B1B8544185EB5178E5F4504185EB5198ADB8544185EB5158E4F450410AD7A360AFB854410AD7A3E0E3F450410AD7A370B1B854410AD7A3C0E2F45041CDCCCCFCB2B8544148E17A54E2F450410AD7A330B5B8544148E17A34E1F4504185EB5158B7B85441CDCCCCFCDFF4504148E17A44BCB854410103000000010000003D000000E17A141E55F650415C8FC2053AB9544114AE47B156F65041D7A370BD37B95441D7A3708D5AF650415C8FC2C538B954419A9999E95BF650415C8FC2C538B95441F6285CAF5EF65041AE47E1CA37B954418FC2F58860F65041D7A370BD37B9544185EB517863F65041AE47E18A36B954410AD7A3C065F65041713D0AA736B95441C3F528CC68F650417B14AE7737B95441295C8F626CF6504148E17A6438B95441AE47E1DA72F650410000004037B95441C3F5283C73F650410AD7A39035B954411F85EB7174F6504114AE478134B9544152B81E355FF650418FC2F51831B954410AD7A3804BF650410AD7A3002EB95441C3F5280C39F65041E17A143E29B954410000005035F650410AD7A37029B95441F6285C8F31F65041E17A14AE28B954418FC2F57830F650418FC2F5F827B954418FC2F5782BF65041B81E853B26B95441D7A370AD29F650413D0AD70326B95441A4703DAA27F6504148E17A9425B954410000003029F650418FC2F5F827B95441E17A143E29F65041E17A14AE28B95441713D0A172BF65041295C8F6229B954410AD7A3B02BF65041E17A14EE29B95441B81E853B2CF65041CDCCCC3C30B9544185EB51E82BF65041EC51B86E31B954413D0AD7032CF650417B14AE4733B95441EC51B8FE2CF650411F85EBB134B95441D7A3706D2DF650417B14AE7737B954419A9999492CF65041B81E854B3AB9544148E17A142EF65041AE47E1FA3BB954419A9999892DF650415C8FC2853CB9544152B81E652CF65041AE47E13A3DB95441713D0AD729F65041C3F5285C3CB95441EC51B8CE28F650418FC2F5C83FB9544148E17A2426F650415C8FC2753FB954415C8FC20524F65041F6285C9F3FB954411F85EBE122F65041AE47E17A3EB954417B14AE7721F6504114AE47513EB95441295C8F421EF65041EC51B8CE3EB95441C3F5282C1DF650418FC2F5C83FB95441A4703D3A1DF6504185EB517841B95441D7A3708D1DF65041713D0A9743B95441000000101EF65041AE47E1AA44B9544185EB511821F6504148E17A1444B954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB95441AE47E10A44F650419A9999E93CB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B954418FC2F5784CF65041D7A370BD37B954413D0AD7B34EF650413333334339B954417B14AE1751F65041F6285C2F3AB95441C3F5283C52F6504148E17AA439B954410AD7A36053F65041F6285C2F3AB95441E17A141E55F650415C8FC2053AB9544101030000000100000061000000C3F5280CB1F5504148E17A1419B954410AD7A3B0B2F5504185EB51781BB95441C3F528DCB3F5504185EB51981CB9544185EB5108B5F55041CDCCCC1C1DB9544148E17AA4B5F55041CDCCCC8C1FB9544185EB5158B9F55041CDCCCC5C1FB9544148E17AE4BAF5504185EB515820B9544148E17AA4BBF5504148E17A2421B9544148E17AF4BCF550410AD7A32022B95441C3F528CCBDF5504185EB51E823B9544185EB51A8BDF55041CDCCCC9C24B954410AD7A350BEF55041CDCCCC8C25B95441C3F5284CBFF55041CDCCCC7C26B95441C3F528ACC2F5504185EB51D827B9544148E17AE4C3F55041CDCCCCBC28B954410AD7A350C4F55041CDCCCC7C29B9544148E17A54C9F5504148E17AF42CB954410AD7A370CBF55041CDCCCCFC2DB9544148E17A84CCF55041CDCCCC2C2EB95441C3F5285CCDF5504148E17A642FB9544148E17AA4CDF550410AD7A3F030B9544148E17AC4CEF5504185EB51A833B9544185EB51A8CFF5504148E17AA434B95441C3F528ECD0F55041CDCCCC1C35B954410AD7A300D2F550410AD7A3C036B95441C3F5283CD2F55041CDCCCC4C38B954410AD7A320D3F5504185EB51D839B954410AD7A3B0D3F550410AD7A3D03BB9544185EB51A8D5F5504185EB51283EB9544148E17A44D9F55041CDCCCCEC40B9544148E17A94DAF5504148E17AC441B954410AD7A360DBF5504185EB51D842B95441C3F5282CDCF5504185EB51C843B9544148E17A84DEF55041CDCCCC0C45B9544185EB51D8E1F5504185EB51A845B9544148E17A34E3F550410AD7A36045B954410AD7A3E0E5F55041CDCCCCFC45B9544185EB5138E8F5504185EB51E844B95441C3F528CCEAF550410AD7A30045B9544185EB5158ECF5504148E17AB445B9544148E17A84EDF5504185EB51F846B954410AD7A3B0EEF55041CDCCCCAC47B954410AD7A300F0F5504185EB51A848B954410AD7A380F1F550410AD7A3F04BB95441C3F5282CF1F55041CDCCCCEC4CB9544148E17A44F1F550410AD7A3A04DB95441C3F528ECF1F550410AD7A3904EB95441C3F5286CF3F550410AD7A3804FB954410AD7A3B0F4F5504185EB51984FB9544148E17AF4F5F55041CDCCCC1C50B95441C3F5283CF6F55041CDCCCCAC50B9544148E17A74F7F55041CDCCCC3C51B9544148E17AF4F8F550410AD7A36051B9544185EB5188FBF5504148E17AA452B954410AD7A340FEF550410AD7A30054B9544148E17A64FEF550410AD7A3B055B9544185EB5198FDF5504185EB51B856B95441C3F528ACFBF550410AD7A36057B9544185EB5188FEF550410AD7A3F057B95441C3F528ACFEF5504185EB517857B9544185EB517802F6504185EB51D854B954410AD7A33005F6504148E17AF453B9544185EB512807F6504148E17A9453B954410AD7A36008F6504185EB51E853B9544148E17A040AF6504148E17A9453B95441C3F5288C0CF650410AD7A3F051B9544148E17AF410F650410AD7A37050B9544185EB51C812F6504185EB51F84FB95441C3F5288C15F65041CDCCCC9C4EB95441C3F528AC16F65041CDCCCC5C4CB954410AD7A36017F6504148E17A544BB954410AD7A3B018F650410AD7A3D04AB9544148E17A141BF650410AD7A3004BB954410AD7A3101CF6504185EB51E847B954410AD7A35015F65041CDCCCC9C45B9544148E17A840BF6504148E17A3447B954410AD7A31001F65041CDCCCC7C47B95441C3F5280CF9F550410AD7A38046B9544148E17AA4EEF5504185EB512844B95441C3F5280CE7F5504185EB515841B9544185EB5198DFF5504148E17AA43DB954410AD7A370D7F5504185EB510837B9544148E17AF4CEF5504148E17A842DB95441C3F5281CC8F5504185EB51E826B9544185EB5168C1F5504185EB519822B9544148E17A94BCF55041CDCCCC6C1EB9544185EB5158B9F550410AD7A3A01AB95441C3F528DCB6F550410AD7A34017B95441666666F6B3F55041295C8F7212B95441F6285C7FB1F55041AE47E14A0DB9544148E17AF4B0F550410AD7A3D00BB9544148E17AD4AFF55041CDCCCC1C0EB954410AD7A350AFF55041CDCCCC7C11B954410AD7A3E0AFF55041CDCCCC5C13B954410AD7A3B0AFF5504185EB518814B9544148E17AF4B0F5504185EB51E817B95441C3F5280CB1F5504148E17A1419B9544101030000000100000009000000EC51B8CE86F650418FC2F5D837B954410AD7A33087F65041C3F5289C38B95441F6285C3F90F65041666666E638B954417B14AE9795F650416666660639B9544185EB514895F65041295C8F5236B95441A4703D0A95F650410AD7A33033B954417B14AE4785F65041D7A370FD33B954410AD7A33087F650410AD7A3D036B95441EC51B8CE86F650418FC2F5D837B9544101030000000100000021000000EC51B83E99F45041295C8FD202B95441E17A147E9AF45041CDCCCCDC03B954413D0AD7739AF450411F85EB3105B95441E17A143E9BF45041CDCCCC7C05B9544185EB5188A1F45041D7A370BD02B9544114AE47F1A8F45041E17A14BEFEB8544114AE4751AAF450418FC2F508FDB85441B81E859BADF450418FC2F5E8FBB85441AE47E13AB2F45041EC51B83EF9B854415C8FC2C5B2F45041EC51B8BEF8B8544152B81EC5B5F45041A4703DEAF3B8544152B81EA5B5F45041A4703D8AF2B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB854413D0AD763BCF45041000000A0EFB854418FC2F5B8BDF45041000000A0EFB854413D0AD783BEF4504100000000EFB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB85441EC51B88EB0F450413D0AD753EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B85441713D0A47A7F45041F6285CFFF2B85441713D0A87A7F4504148E17A14F4B85441CDCCCCDCA6F450419A999989F5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854417B14AE07A3F45041F6285C5FF5B85441E17A14FE9CF45041EC51B8BEF9B854419A9999E997F450418FC2F5E8FCB85441EC51B8BE98F4504185EB512800B95441EC51B83E99F4504185EB512801B95441EC51B83E99F45041295C8FD202B954410103000000010000003100000014AE4741E6F45041E17A144ED0B85441EC51B83EE5F45041E17A14EECFB8544152B81E45E6F4504185EB5148C9B8544185EB51D8E5F4504148E17A24C7B8544148E17AC4E4F4504185EB5188C6B8544185EB51C8E3F4504185EB5108C5B8544148E17A04E4F45041CDCCCC7CC3B8544185EB51C8E3F4504185EB51A8C1B85441CDCCCC6CE2F450410AD7A310C0B8544148E17A94E1F4504148E17A44BFB8544185EB51F8E0F450410AD7A390BEB8544185EB5198E0F450410AD7A310BDB85441CDCCCC2CE0F4504148E17A04BDB8544148E17AF4DEF45041CDCCCC2CBFB854410AD7A3E0DDF4504185EB5188C6B85441CDCCCC6CDCF45041CDCCCC2CC8B854410AD7A3D0DBF450410AD7A330CAB8544148E17A44DAF4504185EB51C8CBB8544185EB51A8D9F45041CDCCCC9CCDB8544185EB5188D5F450410AD7A320D1B8544185EB51B8D2F450410AD7A300D3B8544185EB5198CEF4504148E17A34D5B854410AD7A3F0C7F45041CDCCCC5CDAB8544185EB51C8BFF450410AD7A390DFB8544185EB5158BDF45041CDCCCC9CE2B854410AD7A300BEF450410AD7A360E2B8544148E17A74BFF450410AD7A340E1B8544185EB51C8C2F450410AD7A3C0DFB8544185EB51F8C5F4504185EB51B8DEB854410AD7A3D0C9F4504148E17A74DDB85441CDCCCC0CCDF450410AD7A330DCB85441CDCCCC0CD0F4504148E17A34E1B8544148E17A24D0F4504185EB5118E2B854410AD7A3D0D2F450410AD7A370E4B8544185EB5178D3F450410AD7A380E3B8544148E17A64D5F4504185EB5108E3B8544185EB5158D8F45041CDCCCC7CE1B8544148E17A84D9F4504185EB51E8E1B8544148E17AC4D8F45041CDCCCC8CE0B8544185EB5118D9F4504148E17AC4DEB854410AD7A380DAF4504148E17A44DDB854410AD7A3A0DBF450410AD7A3F0DCB8544185EB5158DEF45041CDCCCCECDAB8544148E17AA4DDF450410AD7A360D9B8544185EB5198DDF4504148E17AA4D7B854410AD7A3D0E1F450410AD7A340D5B854410AD7A320E3F450410AD7A370D5B85441D7A370DDE3F450411F85EB91D4B8544114AE4741E6F45041E17A144ED0B854410103000000010000002F0000000AD7A3109EF550410AD7A350FEB85441C3F528BC9DF5504185EB51E8FCB854410AD7A3409EF55041CDCCCCBCFBB8544185EB51189FF55041CDCCCCCCFAB854410AD7A350A0F5504148E17AB4FAB8544148E17AA4A0F5504185EB5178FAB8544185EB5158A1F55041CDCCCC6CFAB8544185EB5198A3F5504148E17A34FCB8544185EB51E8A4F550410AD7A3A0FCB85441C3F5282CA6F5504185EB5148FDB85441C3F5286CA8F55041CDCCCCFCFDB85441C3F528ECA9F5504148E17A14FEB8544185EB5178ABF55041CDCCCC1CFFB85441C3F528FCABF5504185EB517800B95441C3F528ACADF550410AD7A39003B9544148E17AE4AEF55041CDCCCC4C05B9544185EB5148ACF55041713D0AA7F6B85441C3F528DCAAF5504133333303F0B8544152B81EA5AAF5504133333303EFB85441F6285CCFA8F5504152B81EA5E1B854417B14AEE7A8F55041CDCCCCBCDAB8544185EB5118A8F5504185EB51E8DBB854410AD7A3A0A7F55041CDCCCCBCDDB854410AD7A3A0A7F5504185EB5148DFB854410AD7A390A8F5504148E17AC4E4B85441C3F5280CA8F5504148E17A44E6B8544185EB5118A8F5504185EB5168E9B8544148E17AE4A8F55041CDCCCCDCEAB854410AD7A3C0A8F5504185EB5198ECB854410AD7A350A9F5504148E17AF4EDB854410AD7A350A9F550410AD7A3E0EFB85441C3F5287CA7F55041CDCCCC9CF7B85441C3F528FCA5F5504148E17AA4F8B8544185EB51E8A1F5504185EB5128F9B85441C3F528DC9EF5504185EB51A8F7B8544185EB51F89DF55041CDCCCCCCF7B8544148E17AD49AF5504148E17A24F7B85441C3F528FC96F5504148E17A54F7B8544185EB51B895F5504148E17A24F7B854413D0AD76394F55041295C8F62F7B85441EC51B83E9BF5504114AE471105B95441C3F5283C9CF5504148E17AD404B9544185EB51C89DF55041CDCCCC0C06B9544148E17A949EF5504185EB512805B954410AD7A3109EF5504185EB51E802B9544148E17AD49DF5504185EB5158FFB854410AD7A3109EF550410AD7A350FEB85441
+</a>
+
+<b>
+0106000000010000000103000000010000004900000014AE4751AAF450418FC2F508FDB85441B67E8CA4ACF45041661F693DFCB854410A1BD6E5ADF45041AB9EC6BDFBB85441F68FB34AB2F4504144572330F9B854413AADC061B2F450419D86E41AF9B85441432E7AEEB2F45041414B1C7DF8B8544156F678CBB3F450418AED0219F7B85441FAE1C362B4F450417C233A25F6B85441D4EDB2E0B4F45041F5DA8B42F5B85441FD312CC1B5F4504102ABD1BEF3B8544152B81EA5B5F45041A4703D8AF2B8544184A70CADB5F45041F0222584F2B854414B6CE9ACB5F45041FB0C0382F2B85441211EE063B6F4504117C89DF7F1B854413019029CB6F45041C25578CCF1B8544151F0D22FB8F45041F5011496F0B8544134ED4996B8F4504165443746F0B854419C7F40A4B8F45041900B963CF0B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB8544191FECE7FBBF45041CEA7F829EFB85441B8B2826ABCF4504100A95189EFB85441E74940B1BDF45041118CA298EFB8544138631E93BEF45041B7EEEBDEEEB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB8544117279B4AB1F45041BCB0E74EEEB85441492896B7AFF45041C8B9E488EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B8544154322AA2A7F45041380B657FF2B85441DC7D2F56A7F45041041CA501F3B85441B2503E81A7F45041547C61FBF3B85441713D0A87A7F4504148E17A14F4B854416149F985A7F45041B21ED116F4B85441821D3D89A7F4504105EDC029F4B85441486C2B44A7F450417AB10AA7F4B85441CDCCCCDCA6F450419A999989F5B85441AFA983B8A6F450412CB95EA4F5B85441EFBBB5ADA6F4504147FDF7B7F5B854410953673CA6F45041B7FAEEFFF5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854410BB96B0BA3F45041EBFDB265F5B85441A1C86A969CF45041A0BE0816FAB854411938A8E997F45041AAC92EE9FCB854415709211298F450413A4F0F87FDB8544181CDFB5698F45041A56C4F7EFEB854415A4A738E98F45041495F066CFFB854411C4A699098F45041EA9EAC73FFB854410B93B7A298F45041905A15BBFFB85441C523D31799F45041378F87DA00B95441EC51B83E99F4504185EB512801B95441EC51B83E99F4504137E9FF3901B954418108EF4699F45041BB1D294E01B95441EC51B83E99F450415E26F67902B95441EC51B83E99F4504148E695C402B95441706091279AF45041ACDC0F8F03B9544155A991889AF45041FE6853CC03B954418AD55F7A9AF45041AB903E5804B954413D0AD7739AF450411F85EB3105B95441F79B92879AF4504127E1393905B9544130B4963F9BF450418018247C05B95441694275539CF450415CD9A30305B954414BE81E449DF45041067B849A04B95441ED7D6CDC9EF45041D138DAE503B95441288B1003A2F45041AB0BF46602B954410E67BE7EA7F450413CCF6B5EFFB85441821D3D89A7F45041E741931CFFB85441027022E5A7F450419D2EC926FFB854414D540803A9F45041C14FA08DFEB854418533D4D4A9F45041A27081A3FDB8544114AE4751AAF450418FC2F508FDB85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 356466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB8544185EB5168FBF450410AD7A3C0EEB8544148E17AE4FAF45041CDCCCC6CEEB85441C3F528DCF9F45041CDCCCCFCEEB8544148E17A04F9F450410AD7A350EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441C3F5280CFAF4504148E17A34EDB85441C3F5282CF8F4504148E17AD4ECB8544185EB5108F8F450410AD7A360EBB854410AD7A3B0F8F45041CDCCCC8CE9B8544148E17A14FBF45041CDCCCCBCE9B854410AD7A380FBF450418FC2F5B8EAB854410AD7A330FDF450410AD7A370EAB8544148E17A04FFF450418FC2F5B8EAB854410AD7A310FFF450418FC2F538E9B85441C3F528BCFEF450418FC2F5E8E7B854410AD7A3A0FFF4504148E17A34E7B8544185EB517800F550410AD7A320E6B8544148E17A9402F550410AD7A360E5B85441C3F5280C03F550418FC2F578E5B854410AD7A39003F550410AD7A3D0E4B85441C3F5283C03F5504148E17AD4E3B85441C3F5285C04F550418FC2F598E3B854410AD7A34005F5504148E17AE4E2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854410AD7A33009F5504148E17A84E2B854410AD7A3E00AF5504148E17AC4E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544185EB51880BF550410AD7A390DFB854410AD7A3100BF550410AD7A390DCB854410AD7A3D00BF550418FC2F558DBB85441C3F528DC0BF55041CDCCCCCCD9B85441C3F528DC08F550410AD7A3A0D8B8544185EB51F807F55041CDCCCC2CD7B85441C3F528DC08F550418FC2F5C8D4B8544148E17A8409F55041CDCCCC8CD4B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441C3F528CC0CF550410AD7A3C0D6B8544185EB51380DF55041CDCCCC2CD7B8544148E17A840CF5504148E17A94D8B8544185EB51A80CF550418FC2F568DAB85441C3F528BC0DF5504148E17A34DBB854410AD7A3900FF550410AD7A350DDB854410AD7A31011F550418FC2F5C8DDB854410AD7A36012F55041CDCCCCECDDB8544185EB510813F550418FC2F5C8DDB85441C3F5284C14F550410AD7A3D0DEB85441C3F5286C16F55041C3F528ACDFB85441A4703DAA18F550417B14AE77DBB85441C3F528AC17F5504148E17AA4DAB854410AD7A32016F5504148E17A14DAB85441C3F528AC14F550418FC2F598DAB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB854410AD7A31011F550410AD7A3A0DBB8544148E17AA410F5504148E17AB4DCB8544185EB513810F550418FC2F528DBB8544148E17AA410F55041CDCCCCECDAB8544185EB51C810F550410AD7A390D9B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B8544185EB512814F550418FC2F588D5B854410AD7A36015F5504148E17A84D3B854410AD7A3F015F550410AD7A360D3B8544185EB513816F5504148E17A84D3B85441C3F528BC16F550418FC2F548D3B8544185EB51A818F550410AD7A350D1B8544148E17A7419F55041CDCCCCFCD0B85441C3F5285C19F5504148E17A74CEB8544185EB51C819F55041CDCCCC6CCDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB8544185EB51B81AF55041CDCCCCFCCAB8544148E17A441CF55041CDCCCCACC9B8544185EB51F81CF5504148E17AF4C9B8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF550418FC2F528CCB8544148E17A241EF5504148E17A64CCB854410AD7A3501FF550410AD7A3A0CCB854410AD7A3301EF550410AD7A3B0CEB854410AD7A3E01CF5504148E17A64D2B85441C3F5281C1DF5504148E17A24D3B85441AE47E1BA21F550415C8FC2C5CBB85441A4703D8A26F55041C3F528FCC4B8544185EB51D824F550418FC2F528C6B854410AD7A30024F550418FC2F538C5B854410AD7A3F024F550418FC2F518C4B8544148E17A4425F550410AD7A320C2B8544185EB51F825F55041CDCCCC0CC1B8544148E17AC426F550410AD7A3A0BDB85441C3F5281C26F550410AD7A310BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441C3F528AC26F55041CDCCCCFCBBB8544185EB51C825F550418FC2F528BAB85441C3F5284C26F550410AD7A3A0B7B8544148E17A2427F5504148E17A04B7B8544148E17AA428F55041CDCCCCECB6B854410AD7A3A029F5504148E17AD4B6B8544185EB51482AF5504148E17A54B8B85441CDCCCC5C2BF550418FC2F568BCB85441295C8F322BF550418FC2F568BEB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B8544148E17A642CF5504148E17AB4B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B8544185EB51282CF550410AD7A350B0B854410AD7A3502BF5504148E17A94AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB85441CDCCCCBC2EF55041CDCCCC8CADB85441CDCCCCEC2EF550410AD7A390ACB854410AD7A3502EF550418FC2F518ACB854410AD7A3002DF5504148E17A54ACB854410AD7A3B02BF550418FC2F5E8ABB8544148E17A542AF550410AD7A300ACB8544185EB518829F550418FC2F528ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB854410AD7A31029F5504148E17AE4A9B854410AD7A3602AF55041CDCCCC9CA6B8544148E17A542DF55041CDCCCC5CA7B8544185EB51782DF55041CDCCCCDCA5B85441CDCCCC7C2FF5504148E17AF4A5B854410AD7A39030F5504148E17A34A2B85441CDCCCCEC31F5504148E17A44A1B85441CDCCCCFC36F5504148E17A34A2B85441CDCCCCAC38F55041CDCCCC1CA2B85441CDCCCC6C39F55041CDCCCC5CA1B8544148E17A443AF55041CDCCCCFCA0B8544148E17A643BF550418FC2F538A1B854410AD7A3403BF550410AD7A3709FB85441CDCCCC3C3CF550410AD7A3109FB85441CDCCCC5C3DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB854410AD7A3603FF550418FC2F5C89EB85441CDCCCC2C40F550418FC2F5F89EB8544185EB519840F5504148E17A949FB85441CDCCCC3C42F55041CDCCCC6CA0B85441CDCCCC6C42F5504148E17AF49FB8544185EB515841F5504148E17A449EB85441CDCCCCCC42F550410AD7A3D09CB8544185EB51D842F550418FC2F5389BB854410AD7A39042F5504148E17A849AB854410AD7A3F042F5504148E17A849AB854410AD7A32043F5504148E17AB49AB854410AD7A3C045F550410AD7A3F09AB854410AD7A35046F55041CDCCCCBC9BB8544185EB519846F5504148E17A149BB854410AD7A3D047F550410AD7A3009AB854410AD7A3B049F550410AD7A3609AB85441CDCCCCAC4AF550410AD7A3209BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441CDCCCCCC4EF55041CDCCCCFC97B854410AD7A3504FF550418FC2F53898B8544185EB519852F55041CDCCCC1C99B8544148E17A8454F550418FC2F5789AB85441CDCCCCCC54F550418FC2F5E899B8544185EB51C855F550418FC2F5489AB8544148E17A3456F5504148E17A6499B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A4703D8A5BF55041C3F528FC9AB85441AE47E1AA5CF55041666666069BB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB85441333333E35EF55041F6285CFF9AB85441295C8F3263F550415C8FC2E59AB8544148E17A1464F55041CDCCCC0C9AB85441295C8FE264F55041C3F528DC9AB85441A4703D8A68F55041666666C69AB8544185EB512868F550410AD7A36097B85441CDCCCCFC66F550418FC2F58896B85441CDCCCCCC66F550418FC2F53895B854410AD7A3506AF5504148E17A6493B8544185EB51A869F550418FC2F5C892B85441CDCCCC1C62F5504148E17A4492B85441CDCCCCFC60F55041CDCCCCEC92B8544148E17A945FF550418FC2F55893B854410AD7A3205EF55041CDCCCC3C94B85441CDCCCC7C5CF55041CDCCCCDC93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B8544185EB516858F5504148E17AC490B85441CDCCCC1C56F5504148E17A2491B85441CDCCCC5C55F55041CDCCCC4C90B85441CDCCCC0C54F550418FC2F58890B85441CDCCCCDC53F550418FC2F50892B8544185EB512853F55041CDCCCC5C92B8544148E17A1452F5504148E17A9490B8544148E17AF450F5504148E17A748FB85441CDCCCC8C4FF550410AD7A3508FB85441CDCCCCFC4EF55041CDCCCC4C90B85441CDCCCCFC4EF550410AD7A39091B8544185EB51584DF550418FC2F54891B8544185EB51C849F55041CDCCCCAC90B8544185EB517845F55041CDCCCC1C90B8544148E17A9441F5504148E17AC490B854410AD7A3103EF550418FC2F5A891B8544185EB51183CF550418FC2F59892B8544148E17A043BF55041CDCCCC7C93B85441CDCCCC4C3BF550410AD7A3F094B85441CDCCCCDC38F550410AD7A3B095B85441CDCCCCFC36F550418FC2F53895B8544185EB518835F5504148E17A3496B854410AD7A37035F550410AD7A33097B8544185EB51F834F55041CDCCCC3C97B85441CDCCCC2C34F55041CDCCCC5C98B854410AD7A33033F550418FC2F55899B8544148E17A5430F550418FC2F5A89AB85441CDCCCC4C2FF5504148E17AA49BB8544148E17A942CF55041CDCCCC9C9AB854410AD7A3A029F5504148E17A149BB85441EC51B82E29F550413D0AD7139BB85441E17A14EE26F5504152B81E659CB854413333330321F550417B14AEE79FB854410000002018F5504152B81EF5A7B85441B81E85EB15F5504133333363AAB85441CDCCCCFC13F5504148E17A64ADB854410AD7A38013F550410AD7A340AEB854410AD7A38013F55041CDCCCCCCAFB85441C3F5287C11F5504148E17A74B3B85441C3F5286C0FF550418FC2F558B4B8544148E17AE40CF550418FC2F5A8B8B8544185EB51E80BF55041CDCCCCECB9B854410AD7A3400BF55041CDCCCC2CBFB854410AD7A3A008F550418FC2F5A8C1B8544185EB51F804F5504148E17AB4CAB85441C3F528DC05F550418FC2F568CBB8544185EB517806F550418FC2F5D8CDB85441C3F5284C05F5504148E17A84D0B854410AD7A31005F550418FC2F5F8D1B85441C3F528CC03F55041CDCCCC1CD2B85441C3F5283C03F550410AD7A350D4B854410AD7A35001F5504148E17A24D3B854417B14AE67FEF45041A4703D6AD8B85441CDCCCCECF8F450415C8FC285DFB8544185EB51E8F9F45041CDCCCC0CE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B8544148E17A34F6F450410AD7A310E4B85441C3F528FCF4F450418FC2F5B8E4B85441C3F5287CF3F450418FC2F5B8E4B8544185EB51F8EBF4504185EB51C8EBB854413D0AD7E3E9F45041CDCCCCDCEEB854418FC2F5B8E8F45041EC51B82EF2B854417B14AEA7E8F450417B14AE87F5B854410103000000010000001600000085EB51F891F5504148E17A74A7B85441CDCCCC0C93F550410AD7A300A9B8544185EB518895F550410AD7A330A9B8544148E17A1497F5504148E17AE4A9B8544185EB51A899F550410AD7A300ACB854410AD7A3E09AF5504148E17A24ACB8544185EB51E89BF550418FC2F5B8ABB85441EC51B83E9EF55041AE47E10AACB85441CDCCCC5C9DF5504148E17AD4AAB85441CDCCCCCC99F550418FC2F558A8B854410AD7A38097F550418FC2F568A4B85441A4703D0A96F55041F6285C4FA3B8544148E17A8493F550418FC2F518A3B85441CDCCCC8C8BF550418FC2F598A1B8544148E17AD48BF5504148E17A64A2B85441CDCCCC4C8CF550410AD7A330A3B8544185EB51588CF550410AD7A380A4B85441CDCCCCCC8DF550410AD7A3B0A7B85441CDCCCCEC8EF550410AD7A320A7B85441CDCCCCAC8FF5504148E17A44A7B85441CDCCCCFC90F550418FC2F5D8A6B8544185EB51F891F5504148E17A74A7B854410103000000010000001800000000000060FBF4504152B81E7564B854410AD7A370FFF450410AD7A3A063B8544148E17A64FFF45041CDCCCC2C62B854410AD7A3F0FDF4504148E17A1462B8544148E17A24FDF45041CDCCCC3C61B85441D7A370DDF9F450419A9999A962B8544185EB5188F6F4504148E17A6463B854410AD7A330F4F4504185EB51C862B854410AD7A3D0F0F45041CDCCCCEC62B8544148E17A44EFF450410AD7A30064B8544148E17AF4EDF45041CDCCCC0C64B854410AD7A310EDF4504185EB517864B85441CDCCCC1CEAF450410AD7A39064B8544185EB5198E9F4504148E17A5464B8544148E17A04E7F45041CDCCCCCC64B854410AD7A330E5F4504148E17A0466B8544148E17AA4E3F45041CDCCCC1C66B854410AD7A3C0E2F45041CDCCCCDC66B8544148E17AE4DFF450410AD7A33067B854418FC2F5E8DFF45041666666C667B85441B81E855BEAF4504185EB51B866B8544152B81E45F7F450419A99990967B85441A4703D4AF9F4504152B81E1567B8544100000060FBF4504152B81E7564B8544101030000000100000016000000CDCCCC5CA3F550410AD7A3F0BEB85441CDCCCCACA4F550418FC2F598BFB854410AD7A350A6F5504148E17A54C1B8544185EB5158A7F550410AD7A3C0C4B85441CDCCCC2CA6F55041CDCCCCCCBBB854410AD7A380A3F550410AD7A3E0B9B8544148E17A24A2F55041CDCCCCECB6B8544148E17AF4A1F5504148E17AB4B5B8544148E17A94A1F550418FC2F5C8B3B85441CDCCCC2CA0F5504148E17A24B2B85441CDCCCC9C9FF5504148E17A04B1B85441C3F5285C9FF550418FC2F578AFB85441CDCCCC3C9FF550410AD7A300AFB8544185EB51B89EF55041CDCCCC0CAFB8544148E17A549FF550410AD7A370B1B8544148E17A14A0F55041CDCCCC8CB6B85441CDCCCCCC9FF5504148E17A34BAB854410AD7A3C09FF5504148E17A94BDB8544148E17A14A0F5504148E17AB4BEB854410AD7A310A1F55041CDCCCCFCBEB854410AD7A390A2F550410AD7A3F0BEB85441CDCCCC5CA3F550410AD7A3F0BEB854410103000000010000002B0000000AD7A320EFF4504148E17AA47AB8544185EB5198EFF45041CDCCCCDC7BB85441CDCCCC5CEFF450410AD7A3C07CB85441CDCCCC5CEFF4504148E17AA47DB8544185EB51A8EEF45041CDCCCC1C81B8544148E17AE4EEF4504148E17A2482B8544148E17A34F0F450410AD7A36082B85441295C8F92F1F4504148E17AE484B854413D0AD703F4F45041CDCCCC6C81B854410AD7A3E0F4F45041AE47E10A7EB854413D0AD793F3F45041AE47E1AA77B85441713D0A17F0F450410000004070B85441C3F5284CEFF4504185EB51D86DB8544185EB51A8EEF45041CDCCCC4C6CB854410AD7A350ECF450410AD7A3606DB854410AD7A3E0E9F4504185EB51486DB8544185EB5128E4F4504148E17A746EB8544148E17AA4E3F450410AD7A3406FB8544185EB5178E2F450410AD7A33070B854410AD7A350DDF4504148E17A8470B8544148E17AB4DCF4504148E17AE470B8544185EB51E8DBF4504185EB515872B854410AD7A300DCF450410AD7A33073B85441CDCCCCECDDF4504148E17AF475B8544148E17A24DCF450410AD7A34078B85441CDCCCC2CDAF450410AD7A3C079B8544148E17A14DAF4504148E17AD47AB8544185EB51F8DAF4504148E17A547CB854410AD7A320E0F45041CDCCCC9C7CB8544148E17A24DFF4504148E17A747AB8544185EB5158E1F450410AD7A3D078B854410AD7A3C0E2F4504185EB514879B854410AD7A3E0E3F450410AD7A3807AB8544185EB51C8E3F45041CDCCCC7C7BB8544148E17A84E2F4504148E17AE47CB8544148E17A24E5F45041CDCCCCFC7CB85441CDCCCC1CE7F45041CDCCCC8C7DB8544148E17A24E8F45041CDCCCC2C7DB85441CDCCCCCCE8F450410AD7A3607CB8544185EB5198E9F4504185EB51487CB854410AD7A350ECF4504148E17A147AB8544148E17A64EDF450410AD7A3207AB854410AD7A320EFF4504148E17AA47AB854410103000000010000003000000085EB51A8E5F450410AD7A390ACB8544148E17AA4E6F45041CDCCCC6CACB8544185EB51E8E7F450410AD7A320ADB85441CDCCCC2CE9F45041CDCCCC7CABB854410AD7A3D0EAF450410AD7A380AAB8544185EB5148EBF45041CDCCCC6CA9B8544148E17A54EEF450410AD7A3D0A5B8544148E17A14EFF45041CDCCCC2CA4B8544185EB5178EEF4504148E17AA4A1B8544185EB5168EFF45041CDCCCC6CA0B8544185EB5138EFF45041CDCCCC9C9DB8544148E17AA4EFF4504148E17A049CB85441CDCCCCFCEEF45041CDCCCCAC9CB8544148E17A64EDF4504148E17AC49CB85441CDCCCC4CEDF45041CDCCCC2C9BB8544148E17A94EDF4504148E17AF499B8544185EB51D8EEF4504185EB51C898B85441CDCCCCFCEEF4504185EB51D897B8544185EB51C8EFF450410AD7A3D096B854410AD7A300F1F45041CDCCCC7C93B85441CDCCCCACF3F450410AD7A34090B854410AD7A330F4F450410AD7A3208FB85441CDCCCCACF3F45041CDCCCCDC8DB8544185EB5148F4F4504148E17AE48BB8544148E17A44F5F4504185EB51F88CB85441CDCCCC1CF6F4504185EB51488BB85441CDCCCC4CF6F4504148E17AD489B8544148E17A04F6F4504148E17A0487B8544148E17A54F7F4504185EB51C883B85441CDCCCC8CF8F4504148E17AC481B8544185EB5108F8F4504185EB513880B854410AD7A350F8F450410AD7A3007FB8544148E17AE4F7F45041CDCCCC7C7EB8544148E17A44F6F4504185EB51D87FB8544185EB5188F0F4504185EB51D888B854410AD7A390F1F45041CDCCCCEC89B8544148E17A54F1F4504148E17A848BB8544185EB5128F0F4504185EB51D88BB8544148E17AE4EEF4504185EB51988CB85441CDCCCCECECF4504185EB513892B85441CDCCCCFCEBF45041CDCCCC5C98B8544148E17A54EBF4504185EB51189AB854410AD7A360EBF4504185EB51289CB85441CDCCCCBCE9F4504148E17A649FB854410AD7A350E9F4504148E17A04A2B8544148E17A24E8F450410AD7A3F0A3B854410AD7A320E6F4504148E17AE4A9B8544185EB51A8E5F450410AD7A390ACB8544101030000000100000010000000CDCCCCFCDFF4504148E17A44BCB8544185EB5168E0F45041CDCCCC5CBCB85441CDCCCCBCE0F450410AD7A390BBB8544148E17A74E3F4504185EB5158B7B854410AD7A3E0E3F4504148E17A74B6B854410AD7A3E0E3F45041CDCCCC3CB5B85441CDCCCCDCE4F4504148E17A04B4B8544148E17A14E6F4504148E17A64B1B85441CDCCCC6CE5F450410AD7A310B1B8544185EB5178E5F4504185EB5198ADB8544185EB5158E4F450410AD7A360AFB854410AD7A3E0E3F450410AD7A370B1B854410AD7A3C0E2F45041CDCCCCFCB2B8544148E17A54E2F450410AD7A330B5B8544148E17A34E1F4504185EB5158B7B85441CDCCCCFCDFF4504148E17A44BCB854410103000000010000003D000000E17A141E55F650415C8FC2053AB9544114AE47B156F65041D7A370BD37B95441D7A3708D5AF650415C8FC2C538B954419A9999E95BF650415C8FC2C538B95441F6285CAF5EF65041AE47E1CA37B954418FC2F58860F65041D7A370BD37B9544185EB517863F65041AE47E18A36B954410AD7A3C065F65041713D0AA736B95441C3F528CC68F650417B14AE7737B95441295C8F626CF6504148E17A6438B95441AE47E1DA72F650410000004037B95441C3F5283C73F650410AD7A39035B954411F85EB7174F6504114AE478134B9544152B81E355FF650418FC2F51831B954410AD7A3804BF650410AD7A3002EB95441C3F5280C39F65041E17A143E29B954410000005035F650410AD7A37029B95441F6285C8F31F65041E17A14AE28B954418FC2F57830F650418FC2F5F827B954418FC2F5782BF65041B81E853B26B95441D7A370AD29F650413D0AD70326B95441A4703DAA27F6504148E17A9425B954410000003029F650418FC2F5F827B95441E17A143E29F65041E17A14AE28B95441713D0A172BF65041295C8F6229B954410AD7A3B02BF65041E17A14EE29B95441B81E853B2CF65041CDCCCC3C30B9544185EB51E82BF65041EC51B86E31B954413D0AD7032CF650417B14AE4733B95441EC51B8FE2CF650411F85EBB134B95441D7A3706D2DF650417B14AE7737B954419A9999492CF65041B81E854B3AB9544148E17A142EF65041AE47E1FA3BB954419A9999892DF650415C8FC2853CB9544152B81E652CF65041AE47E13A3DB95441713D0AD729F65041C3F5285C3CB95441EC51B8CE28F650418FC2F5C83FB9544148E17A2426F650415C8FC2753FB954415C8FC20524F65041F6285C9F3FB954411F85EBE122F65041AE47E17A3EB954417B14AE7721F6504114AE47513EB95441295C8F421EF65041EC51B8CE3EB95441C3F5282C1DF650418FC2F5C83FB95441A4703D3A1DF6504185EB517841B95441D7A3708D1DF65041713D0A9743B95441000000101EF65041AE47E1AA44B9544185EB511821F6504148E17A1444B954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB95441AE47E10A44F650419A9999E93CB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B954418FC2F5784CF65041D7A370BD37B954413D0AD7B34EF650413333334339B954417B14AE1751F65041F6285C2F3AB95441C3F5283C52F6504148E17AA439B954410AD7A36053F65041F6285C2F3AB95441E17A141E55F650415C8FC2053AB9544101030000000100000061000000C3F5280CB1F5504148E17A1419B954410AD7A3B0B2F5504185EB51781BB95441C3F528DCB3F5504185EB51981CB9544185EB5108B5F55041CDCCCC1C1DB9544148E17AA4B5F55041CDCCCC8C1FB9544185EB5158B9F55041CDCCCC5C1FB9544148E17AE4BAF5504185EB515820B9544148E17AA4BBF5504148E17A2421B9544148E17AF4BCF550410AD7A32022B95441C3F528CCBDF5504185EB51E823B9544185EB51A8BDF55041CDCCCC9C24B954410AD7A350BEF55041CDCCCC8C25B95441C3F5284CBFF55041CDCCCC7C26B95441C3F528ACC2F5504185EB51D827B9544148E17AE4C3F55041CDCCCCBC28B954410AD7A350C4F55041CDCCCC7C29B9544148E17A54C9F5504148E17AF42CB954410AD7A370CBF55041CDCCCCFC2DB9544148E17A84CCF55041CDCCCC2C2EB95441C3F5285CCDF5504148E17A642FB9544148E17AA4CDF550410AD7A3F030B9544148E17AC4CEF5504185EB51A833B9544185EB51A8CFF5504148E17AA434B95441C3F528ECD0F55041CDCCCC1C35B954410AD7A300D2F550410AD7A3C036B95441C3F5283CD2F55041CDCCCC4C38B954410AD7A320D3F5504185EB51D839B954410AD7A3B0D3F550410AD7A3D03BB9544185EB51A8D5F5504185EB51283EB9544148E17A44D9F55041CDCCCCEC40B9544148E17A94DAF5504148E17AC441B954410AD7A360DBF5504185EB51D842B95441C3F5282CDCF5504185EB51C843B9544148E17A84DEF55041CDCCCC0C45B9544185EB51D8E1F5504185EB51A845B9544148E17A34E3F550410AD7A36045B954410AD7A3E0E5F55041CDCCCCFC45B9544185EB5138E8F5504185EB51E844B95441C3F528CCEAF550410AD7A30045B9544185EB5158ECF5504148E17AB445B9544148E17A84EDF5504185EB51F846B954410AD7A3B0EEF55041CDCCCCAC47B954410AD7A300F0F5504185EB51A848B954410AD7A380F1F550410AD7A3F04BB95441C3F5282CF1F55041CDCCCCEC4CB9544148E17A44F1F550410AD7A3A04DB95441C3F528ECF1F550410AD7A3904EB95441C3F5286CF3F550410AD7A3804FB954410AD7A3B0F4F5504185EB51984FB9544148E17AF4F5F55041CDCCCC1C50B95441C3F5283CF6F55041CDCCCCAC50B9544148E17A74F7F55041CDCCCC3C51B9544148E17AF4F8F550410AD7A36051B9544185EB5188FBF5504148E17AA452B954410AD7A340FEF550410AD7A30054B9544148E17A64FEF550410AD7A3B055B9544185EB5198FDF5504185EB51B856B95441C3F528ACFBF550410AD7A36057B9544185EB5188FEF550410AD7A3F057B95441C3F528ACFEF5504185EB517857B9544185EB517802F6504185EB51D854B954410AD7A33005F6504148E17AF453B9544185EB512807F6504148E17A9453B954410AD7A36008F6504185EB51E853B9544148E17A040AF6504148E17A9453B95441C3F5288C0CF650410AD7A3F051B9544148E17AF410F650410AD7A37050B9544185EB51C812F6504185EB51F84FB95441C3F5288C15F65041CDCCCC9C4EB95441C3F528AC16F65041CDCCCC5C4CB954410AD7A36017F6504148E17A544BB954410AD7A3B018F650410AD7A3D04AB9544148E17A141BF650410AD7A3004BB954410AD7A3101CF6504185EB51E847B954410AD7A35015F65041CDCCCC9C45B9544148E17A840BF6504148E17A3447B954410AD7A31001F65041CDCCCC7C47B95441C3F5280CF9F550410AD7A38046B9544148E17AA4EEF5504185EB512844B95441C3F5280CE7F5504185EB515841B9544185EB5198DFF5504148E17AA43DB954410AD7A370D7F5504185EB510837B9544148E17AF4CEF5504148E17A842DB95441C3F5281CC8F5504185EB51E826B9544185EB5168C1F5504185EB519822B9544148E17A94BCF55041CDCCCC6C1EB9544185EB5158B9F550410AD7A3A01AB95441C3F528DCB6F550410AD7A34017B95441666666F6B3F55041295C8F7212B95441F6285C7FB1F55041AE47E14A0DB9544148E17AF4B0F550410AD7A3D00BB9544148E17AD4AFF55041CDCCCC1C0EB954410AD7A350AFF55041CDCCCC7C11B954410AD7A3E0AFF55041CDCCCC5C13B954410AD7A3B0AFF5504185EB518814B9544148E17AF4B0F5504185EB51E817B95441C3F5280CB1F5504148E17A1419B9544101030000000100000009000000EC51B8CE86F650418FC2F5D837B954410AD7A33087F65041C3F5289C38B95441F6285C3F90F65041666666E638B954417B14AE9795F650416666660639B9544185EB514895F65041295C8F5236B95441A4703D0A95F650410AD7A33033B954417B14AE4785F65041D7A370FD33B954410AD7A33087F650410AD7A3D036B95441EC51B8CE86F650418FC2F5D837B9544101030000000100000021000000EC51B83E99F45041295C8FD202B95441E17A147E9AF45041CDCCCCDC03B954413D0AD7739AF450411F85EB3105B95441E17A143E9BF45041CDCCCC7C05B9544185EB5188A1F45041D7A370BD02B9544114AE47F1A8F45041E17A14BEFEB8544114AE4751AAF450418FC2F508FDB85441B81E859BADF450418FC2F5E8FBB85441AE47E13AB2F45041EC51B83EF9B854415C8FC2C5B2F45041EC51B8BEF8B8544152B81EC5B5F45041A4703DEAF3B8544152B81EA5B5F45041A4703D8AF2B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB854413D0AD763BCF45041000000A0EFB854418FC2F5B8BDF45041000000A0EFB854413D0AD783BEF4504100000000EFB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB85441EC51B88EB0F450413D0AD753EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B85441713D0A47A7F45041F6285CFFF2B85441713D0A87A7F4504148E17A14F4B85441CDCCCCDCA6F450419A999989F5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854417B14AE07A3F45041F6285C5FF5B85441E17A14FE9CF45041EC51B8BEF9B854419A9999E997F450418FC2F5E8FCB85441EC51B8BE98F4504185EB512800B95441EC51B83E99F4504185EB512801B95441EC51B83E99F45041295C8FD202B954410103000000010000003100000014AE4741E6F45041E17A144ED0B85441EC51B83EE5F45041E17A14EECFB8544152B81E45E6F4504185EB5148C9B8544185EB51D8E5F4504148E17A24C7B8544148E17AC4E4F4504185EB5188C6B8544185EB51C8E3F4504185EB5108C5B8544148E17A04E4F45041CDCCCC7CC3B8544185EB51C8E3F4504185EB51A8C1B85441CDCCCC6CE2F450410AD7A310C0B8544148E17A94E1F4504148E17A44BFB8544185EB51F8E0F450410AD7A390BEB8544185EB5198E0F450410AD7A310BDB85441CDCCCC2CE0F4504148E17A04BDB8544148E17AF4DEF45041CDCCCC2CBFB854410AD7A3E0DDF4504185EB5188C6B85441CDCCCC6CDCF45041CDCCCC2CC8B854410AD7A3D0DBF450410AD7A330CAB8544148E17A44DAF4504185EB51C8CBB8544185EB51A8D9F45041CDCCCC9CCDB8544185EB5188D5F450410AD7A320D1B8544185EB51B8D2F450410AD7A300D3B8544185EB5198CEF4504148E17A34D5B854410AD7A3F0C7F45041CDCCCC5CDAB8544185EB51C8BFF450410AD7A390DFB8544185EB5158BDF45041CDCCCC9CE2B854410AD7A300BEF450410AD7A360E2B8544148E17A74BFF450410AD7A340E1B8544185EB51C8C2F450410AD7A3C0DFB8544185EB51F8C5F4504185EB51B8DEB854410AD7A3D0C9F4504148E17A74DDB85441CDCCCC0CCDF450410AD7A330DCB85441CDCCCC0CD0F4504148E17A34E1B8544148E17A24D0F4504185EB5118E2B854410AD7A3D0D2F450410AD7A370E4B8544185EB5178D3F450410AD7A380E3B8544148E17A64D5F4504185EB5108E3B8544185EB5158D8F45041CDCCCC7CE1B8544148E17A84D9F4504185EB51E8E1B8544148E17AC4D8F45041CDCCCC8CE0B8544185EB5118D9F4504148E17AC4DEB854410AD7A380DAF4504148E17A44DDB854410AD7A3A0DBF450410AD7A3F0DCB8544185EB5158DEF45041CDCCCCECDAB8544148E17AA4DDF450410AD7A360D9B8544185EB5198DDF4504148E17AA4D7B854410AD7A3D0E1F450410AD7A340D5B854410AD7A320E3F450410AD7A370D5B85441D7A370DDE3F450411F85EB91D4B8544114AE4741E6F45041E17A144ED0B854410103000000010000002F0000000AD7A3109EF550410AD7A350FEB85441C3F528BC9DF5504185EB51E8FCB854410AD7A3409EF55041CDCCCCBCFBB8544185EB51189FF55041CDCCCCCCFAB854410AD7A350A0F5504148E17AB4FAB8544148E17AA4A0F5504185EB5178FAB8544185EB5158A1F55041CDCCCC6CFAB8544185EB5198A3F5504148E17A34FCB8544185EB51E8A4F550410AD7A3A0FCB85441C3F5282CA6F5504185EB5148FDB85441C3F5286CA8F55041CDCCCCFCFDB85441C3F528ECA9F5504148E17A14FEB8544185EB5178ABF55041CDCCCC1CFFB85441C3F528FCABF5504185EB517800B95441C3F528ACADF550410AD7A39003B9544148E17AE4AEF55041CDCCCC4C05B9544185EB5148ACF55041713D0AA7F6B85441C3F528DCAAF5504133333303F0B8544152B81EA5AAF5504133333303EFB85441F6285CCFA8F5504152B81EA5E1B854417B14AEE7A8F55041CDCCCCBCDAB8544185EB5118A8F5504185EB51E8DBB854410AD7A3A0A7F55041CDCCCCBCDDB854410AD7A3A0A7F5504185EB5148DFB854410AD7A390A8F5504148E17AC4E4B85441C3F5280CA8F5504148E17A44E6B8544185EB5118A8F5504185EB5168E9B8544148E17AE4A8F55041CDCCCCDCEAB854410AD7A3C0A8F5504185EB5198ECB854410AD7A350A9F5504148E17AF4EDB854410AD7A350A9F550410AD7A3E0EFB85441C3F5287CA7F55041CDCCCC9CF7B85441C3F528FCA5F5504148E17AA4F8B8544185EB51E8A1F5504185EB5128F9B85441C3F528DC9EF5504185EB51A8F7B8544185EB51F89DF55041CDCCCCCCF7B8544148E17AD49AF5504148E17A24F7B85441C3F528FC96F5504148E17A54F7B8544185EB51B895F5504148E17A24F7B854413D0AD76394F55041295C8F62F7B85441EC51B83E9BF5504114AE471105B95441C3F5283C9CF5504148E17AD404B9544185EB51C89DF55041CDCCCC0C06B9544148E17A949EF5504185EB512805B954410AD7A3109EF5504185EB51E802B9544148E17AD49DF5504185EB5158FFB854410AD7A3109EF550410AD7A350FEB85441
+</a>
+
+<b>
+0106000000010000000103000000010000004900000014AE4751AAF450418FC2F508FDB85441B67E8CA4ACF45041661F693DFCB854410A1BD6E5ADF45041AB9EC6BDFBB85441F68FB34AB2F4504144572330F9B854413AADC061B2F450419D86E41AF9B85441432E7AEEB2F45041414B1C7DF8B8544156F678CBB3F450418AED0219F7B85441FAE1C362B4F450417C233A25F6B85441D4EDB2E0B4F45041F5DA8B42F5B85441FD312CC1B5F4504102ABD1BEF3B8544152B81EA5B5F45041A4703D8AF2B8544184A70CADB5F45041F0222584F2B854414B6CE9ACB5F45041FB0C0382F2B85441211EE063B6F4504117C89DF7F1B854413019029CB6F45041C25578CCF1B8544151F0D22FB8F45041F5011496F0B8544134ED4996B8F4504165443746F0B854419C7F40A4B8F45041900B963CF0B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB8544191FECE7FBBF45041CEA7F829EFB85441B8B2826ABCF4504100A95189EFB85441E74940B1BDF45041118CA298EFB8544138631E93BEF45041B7EEEBDEEEB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB8544117279B4AB1F45041BCB0E74EEEB85441492896B7AFF45041C8B9E488EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B8544154322AA2A7F45041380B657FF2B85441DC7D2F56A7F45041041CA501F3B85441B2503E81A7F45041547C61FBF3B85441713D0A87A7F4504148E17A14F4B854416149F985A7F45041B21ED116F4B85441821D3D89A7F4504105EDC029F4B85441486C2B44A7F450417AB10AA7F4B85441CDCCCCDCA6F450419A999989F5B85441AFA983B8A6F450412CB95EA4F5B85441EFBBB5ADA6F4504147FDF7B7F5B854410953673CA6F45041B7FAEEFFF5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854410BB96B0BA3F45041EBFDB265F5B85441A1C86A969CF45041A0BE0816FAB854411938A8E997F45041AAC92EE9FCB854415709211298F450413A4F0F87FDB8544181CDFB5698F45041A56C4F7EFEB854415A4A738E98F45041495F066CFFB854411C4A699098F45041EA9EAC73FFB854410B93B7A298F45041905A15BBFFB85441C523D31799F45041378F87DA00B95441EC51B83E99F4504185EB512801B95441EC51B83E99F4504137E9FF3901B954418108EF4699F45041BB1D294E01B95441EC51B83E99F450415E26F67902B95441EC51B83E99F4504148E695C402B95441706091279AF45041ACDC0F8F03B9544155A991889AF45041FE6853CC03B954418AD55F7A9AF45041AB903E5804B954413D0AD7739AF450411F85EB3105B95441F79B92879AF4504127E1393905B9544130B4963F9BF450418018247C05B95441694275539CF450415CD9A30305B954414BE81E449DF45041067B849A04B95441ED7D6CDC9EF45041D138DAE503B95441288B1003A2F45041AB0BF46602B954410E67BE7EA7F450413CCF6B5EFFB85441821D3D89A7F45041E741931CFFB85441027022E5A7F450419D2EC926FFB854414D540803A9F45041C14FA08DFEB854418533D4D4A9F45041A27081A3FDB8544114AE4751AAF450418FC2F508FDB85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983732 - 59546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285CEFA34851410AD7A3800B57544148E17A74AB485141A4703DFA0E575441AE47E18AC0485141D7A370BD18575441CDCCCC6CCD4851413D0AD7E3115754411F85EB11D3485141E17A141E0E5754413D0AD723D248514114AE47110C5754419A999989CB485141EC51B85E0957544166666686C6485141D7A3705D06575441295C8F92C048514114AE4731035754417B14AE27B8485141713D0A97005754417B14AE07B24851410AD7A340FF565441F6285C2FAC48514185EB5168FE565441295C8F82A4485141A4703DEAFD5654413D0AD7539D4851411F85EB11FD56544185EB519899485141C3F528FC02575441000000A09748514185EB51F803575441295C8FB29A4851418FC2F57805575441EC51B8BEA2485141AE47E13A08575441D7A3707DA24851419A9999890A575441F6285CEFA34851410AD7A3800B575441
+</a>
+
+<b>
+0106000000010000000103000000010000002700000004949B1BB648514115EAC4E8135754416ADF5897B74851418B00929814575441E4F35D95BD4851415673BF5E175754411FD8A052BF48514171923B2018575441B39DED8BC04851413BF5E1BC1857544194ACA419C1485141CF538771185754418386F172CD485141E4A5D3D211575441C8895C4ED2485141A418C5A00E5754411F85EB11D3485141E17A141E0E5754413D0AD723D248514114AE47110C5754419A999989CB485141EC51B85E0957544166666686C6485141D7A3705D065754412978ECADC448514142E79F6105575441461256B6C048514145BCE05403575441BAE78429B748514162218A5F005754410A6DD6B3B24851411FCD3B66FF565441610456C5AD48514130DA02A3FE56544171B1EC87A9485141B896B83CFE565441295C8F82A4485141A4703DEAFD5654413D0AD7539D4851411F85EB11FD565441E70997A09B4851412956ACC3FF565441500F1E0E9B4851415DE0CAAB005754412782196A9A4851412057B7AF01575441A33E49459A485141EB3D0EEA015754411468C1319A48514106A101090257544185EB519899485141C3F528FC025754410D1E57A8984851417F5C2674035754418E8BA3AE974851410B877AFF0357544130BD76BF99485141D60B15020557544124DBA4C59A485141FC63647205575441B3C92B6C9E48514120BAB7BF06575441EC51B8BEA2485141AE47E13A085754414582F3A1A2485141B599353F09575441D7A3707DA24851419A9999890A575441CAF3A460A348514123E554210B575441C6EAE7C9A648514160E568C80C575441E0826DC1A948514114B033310E57544148E17A74AB485141A4703DFA0E57544104949B1BB648514115EAC4E813575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 1636689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F59554152CA0FF97CAC5041F3F609C91E595541443EE8207BAC50415796FD761F595541328118FE78AC5041A0B0E1F1205955419E8B187876AC5041E89F7B9926595541A0DC83D174AC5041A452989529595541F6D848CF71AC5041D79F8BBE2B59554177E7A1EF70AC5041798C477B2F5955412219F49871AC5041BD6DA29D2F5955418F207F4B74AC50416CEB2825305955416D08931476AC5041BF0DEC452D59554138FB0CAC79AC504155C3532827595541364883527BAC504106340FBB245955417D243E667FAC5041F30691B3255955415103D7027FAC5041C7C0759F2B59554196FA9D347FAC50415991329E2C5955415BC3CC027FAC504199DB8E3F32595541327903047FAC50414BCBAB7E3259554188CBB01B7FAC50418F4DDC833259554188CBB01B7FAC50413712004C375955414A4B2D377FAC5041FB20DED83759554132FCA0B07FAC50419D0B4F473A5955412AD658FB7FAC5041288046593B595541FCCD74E27FAC50419DE490C23D595541FCCD74E27FAC5041B24C7A8E425955411B75E7977FAC504118D0A75746595541
+</a>
+
+<b>
+010600000001000000010300000001000000230000002FFCA0B07FAC5041A10B4F473A595541474B2D377FAC5041FD20DED83759554100A17B207FAC504159988F6437595541A58BA61B7FAC5041CE8ACB4B37595541317903047FAC50414ACBAB7E325955415DC3CC027FAC50419BDB8E3F3259554192FA9D347FAC50415891329E2C59554160E8F2027FAC5041AE5BCC9D2B595541A5A7A5FE7EAC50418A61BF8A2B595541D323B84D7FAC50414E7185C526595541144E81567FAC5041AC5329B52559554182295A5B7BAC5041C0B428BF245955412E9234C779AC504147C3CE0B27595541B6D5CF4978AC5041779B7D83295955417008931476AC5041BA0DEC452D59554192207F4B74AC504171EB282530595541B4DBB61774AC50419F41FF1A3059554169D4AEE370AC50411C86E6852F595541F6285C0F6EAC50411F85EBB13B595541EC51B8BE6CAC50410AD7A3F041595541F6285C5F6AAC50417B14AE374D595541CDCCCCBC63AC5041295C8FE2685955410AD7A38066AC5041EC51B8EE6859554114AE470169AC504152B81E156859554148E17AC46AAC50418FC2F598665955413D0AD7536FAC504114AE47C162595541666666767AAC50413333336356595541666666067DAC504185EB51F8515955418FC2F5E87DAC50410AD7A37050595541361C5A4D7FAC5041D4CE3893485955411A75E7977FAC504113D0A75746595541FDCD74E27FAC5041AD4C7A8E42595541FDCD74E27FAC50419FE490C23D5955418646A6F47FAC5041D1F35B773B5955412FFCA0B07FAC5041A10B4F473A595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 4294191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F59554152CA0FF97CAC5041F3F609C91E595541443EE8207BAC50415796FD761F595541328118FE78AC5041A0B0E1F1205955419E8B187876AC5041E89F7B9926595541A0DC83D174AC5041A452989529595541F6D848CF71AC5041D79F8BBE2B59554177E7A1EF70AC5041798C477B2F5955412219F49871AC5041BD6DA29D2F5955418F207F4B74AC50416CEB2825305955416D08931476AC5041BF0DEC452D59554138FB0CAC79AC504155C3532827595541364883527BAC504106340FBB245955417D243E667FAC5041F30691B3255955415103D7027FAC5041C7C0759F2B59554196FA9D347FAC50415991329E2C5955415BC3CC027FAC504199DB8E3F32595541327903047FAC50414BCBAB7E3259554188CBB01B7FAC50418F4DDC833259554188CBB01B7FAC50413712004C375955414A4B2D377FAC5041FB20DED83759554132FCA0B07FAC50419D0B4F473A5955412AD658FB7FAC5041288046593B595541FCCD74E27FAC50419DE490C23D595541FCCD74E27FAC5041B24C7A8E425955411B75E7977FAC504118D0A75746595541
+</a>
+
+<b>
+010600000001000000010300000001000000230000002FFCA0B07FAC5041A10B4F473A595541474B2D377FAC5041FD20DED83759554100A17B207FAC504159988F6437595541A58BA61B7FAC5041CE8ACB4B37595541317903047FAC50414ACBAB7E325955415DC3CC027FAC50419BDB8E3F3259554192FA9D347FAC50415891329E2C59554160E8F2027FAC5041AE5BCC9D2B595541A5A7A5FE7EAC50418A61BF8A2B595541D323B84D7FAC50414E7185C526595541144E81567FAC5041AC5329B52559554182295A5B7BAC5041C0B428BF245955412E9234C779AC504147C3CE0B27595541B6D5CF4978AC5041779B7D83295955417008931476AC5041BA0DEC452D59554192207F4B74AC504171EB282530595541B4DBB61774AC50419F41FF1A3059554169D4AEE370AC50411C86E6852F595541F6285C0F6EAC50411F85EBB13B595541EC51B8BE6CAC50410AD7A3F041595541F6285C5F6AAC50417B14AE374D595541CDCCCCBC63AC5041295C8FE2685955410AD7A38066AC5041EC51B8EE6859554114AE470169AC504152B81E156859554148E17AC46AAC50418FC2F598665955413D0AD7536FAC504114AE47C162595541666666767AAC50413333336356595541666666067DAC504185EB51F8515955418FC2F5E87DAC50410AD7A37050595541361C5A4D7FAC5041D4CE3893485955411A75E7977FAC504113D0A75746595541FDCD74E27FAC5041AD4C7A8E42595541FDCD74E27FAC50419FE490C23D5955418646A6F47FAC5041D1F35B773B5955412FFCA0B07FAC5041A10B4F473A595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984286 - 97118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000024000000CDCCCC0CF7965141EC51B8FEB88F54410AD7A320FF965141D7A370FDB78F5441666666E606975141D7A370EDB58F5441000000101297514152B81E25B58F5441A4703D1A17975141E17A140EB48F5441666666B61897514100000050B38F5441AE47E1AA1C975141B81E852BB68F54413D0AD7631F975141CDCCCC5CB28F54417B14AE4723975141C3F528ECAC8F54418FC2F5D817975141CDCCCC8C9F8F5441295C8FC215975141CDCCCC4CA08F5441B81E859B0E97514166666636A08F54410AD7A3500A9751413D0AD723A18F544148E17AE40097514114AE4721A38F5441C3F5285CFC965141F6285C3FA38F54410AD7A3A0F89651413D0AD763A48F54411F85EBD1F7965141295C8FA2A48F5441CDCCCC2CF3965141295C8F52A48F54417B14AED7F19651411F85EB01A48F54415C8FC2D5ED965141EC51B80EA38F544133333333EB965141D7A3703DA38F5441AE47E17AE8965141C3F5281CA48F54417B14AEE7E7965141E17A140EA48F54410AD7A3D0DD96514152B81E15A38F5441AE47E17AD9965141EC51B8AEA08F544148E17A74D6965141CDCCCC5CA18F544152B81EC5D1965141713D0A87A48F5441EC51B8FEC7965141CDCCCC3CA88F5441B81E856BC69651410AD7A300A98F5441713D0A07C6965141AE47E13AAE8F54413D0AD723CA96514185EB51C8C08F54417B14AEF7CC9651418FC2F578C08F5441A4703DEAD79651415C8FC235BC8F5441B81E85BBE39651411F85EBB1B98F5441CDCCCC6CED965141F6285C1FB98F5441CDCCCC0CF7965141EC51B8FEB88F5441
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000AE47E17AD9965141EC51B8AEA08F544143B78D8DD8965141E4C411E4A08F54416B14AB54D6965141A26D4A72A18F5441F1A653E7D296514174E2FCC2A38F5441580E42D8D1965141B5403383A48F544121AA51A4D0965141EFC3A6F4A48F5441E39A6BC9CC965141DBF5376BA68F544117399747C9965141CD03FBBFA78F5441B3D8E0A4C696514190BEC7E4A88F54417DC6A898C6965141DA17B7EAA88F5441A2A13772C6965141CC1363FDA88F54413609D80FC696514190419723AE8F544105608D0EC8965141FB138762B78F5441E7B92EA2C99651416938677FBE8F5441AC2CDD1ECA9651410C33DFB1C08F5441EF9CB9DDCC9651411C3ECE7BC08F54417B14AEF7CC9651418FC2F578C08F5441A4703DEAD79651415C8FC235BC8F54411B63E7F9D7965141C4296D32BC8F5441E3E32E15D89651415E5DBE27BC8F54417751CD2DDB965141FD8AEF83BB8F5441B81E85BBE39651411F85EBB1B98F5441CDCCCC6CED965141F6285C1FB98F5441CDCCCC0CF7965141EC51B8FEB88F5441B74C9DF4FC96514196DA9E42B88F54418E1EE4D1FE965141B37920FFB78F54417ED3680F079751416C751AD7B58F54413A1CE1530D9751412132177AB58F5441A52EDBF40F9751416916EA4AB58F5441530B000E12975141C69B4225B58F5441F76A53A11297514123BEB005B58F5441A4703D1A17975141E17A140EB48F5441666666B61897514100000050B38F5441D076F1D7189751414F2E3C68B38F54414A8951ED1897514164273860B38F5441383397BD1C975141FB445A11B68F54413D0AD7631F975141CDCCCC5CB28F5441717A30EE21975141ED6150CFAE8F54411030253F23975141861A26E8AC8F544122874ED917975141A3A46E959F8F5441BDA7B6D8159751418E4ADE46A08F54413DE011D3159751418E4ADE46A08F5441295C8FC215975141CDCCCC4CA08F5441961EB0DD139751418E4ADE46A08F5441F5F434AF0E9751418E4ADE46A08F5441F3FD7BD2009751413A070B34A38F544185D0015BFC9651411C2C795BA38F5441367E19BCF79651419665A1AAA48F5441BE509F44F3965141B5403383A48F544162F208CEF196514111D2E80CA48F5441117A6C31F0965141EF62D29DA38F54415C8FC2D5ED965141EC51B80EA38F544133333333EB965141D7A3703DA38F5441A59917CDEA965141CB77195EA38F544102045C41E896514163090E48A48F5441FE693AFBE7965141CB27F30FA48F54417B14AEE7E7965141E17A140EA48F544158A74E91E19651411C29B671A38F544150381AC8DD965141D4F45320A38F5441BF03AA48DA965141E51FA620A18F5441AE47E17AD9965141EC51B8AEA08F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984286 - 298865
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000024000000CDCCCC0CF7965141EC51B8FEB88F54410AD7A320FF965141D7A370FDB78F5441666666E606975141D7A370EDB58F5441000000101297514152B81E25B58F5441A4703D1A17975141E17A140EB48F5441666666B61897514100000050B38F5441AE47E1AA1C975141B81E852BB68F54413D0AD7631F975141CDCCCC5CB28F54417B14AE4723975141C3F528ECAC8F54418FC2F5D817975141CDCCCC8C9F8F5441295C8FC215975141CDCCCC4CA08F5441B81E859B0E97514166666636A08F54410AD7A3500A9751413D0AD723A18F544148E17AE40097514114AE4721A38F5441C3F5285CFC965141F6285C3FA38F54410AD7A3A0F89651413D0AD763A48F54411F85EBD1F7965141295C8FA2A48F5441CDCCCC2CF3965141295C8F52A48F54417B14AED7F19651411F85EB01A48F54415C8FC2D5ED965141EC51B80EA38F544133333333EB965141D7A3703DA38F5441AE47E17AE8965141C3F5281CA48F54417B14AEE7E7965141E17A140EA48F54410AD7A3D0DD96514152B81E15A38F5441AE47E17AD9965141EC51B8AEA08F544148E17A74D6965141CDCCCC5CA18F544152B81EC5D1965141713D0A87A48F5441EC51B8FEC7965141CDCCCC3CA88F5441B81E856BC69651410AD7A300A98F5441713D0A07C6965141AE47E13AAE8F54413D0AD723CA96514185EB51C8C08F54417B14AEF7CC9651418FC2F578C08F5441A4703DEAD79651415C8FC235BC8F5441B81E85BBE39651411F85EBB1B98F5441CDCCCC6CED965141F6285C1FB98F5441CDCCCC0CF7965141EC51B8FEB88F5441
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000AE47E17AD9965141EC51B8AEA08F544143B78D8DD8965141E4C411E4A08F54416B14AB54D6965141A26D4A72A18F5441F1A653E7D296514174E2FCC2A38F5441580E42D8D1965141B5403383A48F544121AA51A4D0965141EFC3A6F4A48F5441E39A6BC9CC965141DBF5376BA68F544117399747C9965141CD03FBBFA78F5441B3D8E0A4C696514190BEC7E4A88F54417DC6A898C6965141DA17B7EAA88F5441A2A13772C6965141CC1363FDA88F54413609D80FC696514190419723AE8F544105608D0EC8965141FB138762B78F5441E7B92EA2C99651416938677FBE8F5441AC2CDD1ECA9651410C33DFB1C08F5441EF9CB9DDCC9651411C3ECE7BC08F54417B14AEF7CC9651418FC2F578C08F5441A4703DEAD79651415C8FC235BC8F54411B63E7F9D7965141C4296D32BC8F5441E3E32E15D89651415E5DBE27BC8F54417751CD2DDB965141FD8AEF83BB8F5441B81E85BBE39651411F85EBB1B98F5441CDCCCC6CED965141F6285C1FB98F5441CDCCCC0CF7965141EC51B8FEB88F5441B74C9DF4FC96514196DA9E42B88F54418E1EE4D1FE965141B37920FFB78F54417ED3680F079751416C751AD7B58F54413A1CE1530D9751412132177AB58F5441A52EDBF40F9751416916EA4AB58F5441530B000E12975141C69B4225B58F5441F76A53A11297514123BEB005B58F5441A4703D1A17975141E17A140EB48F5441666666B61897514100000050B38F5441D076F1D7189751414F2E3C68B38F54414A8951ED1897514164273860B38F5441383397BD1C975141FB445A11B68F54413D0AD7631F975141CDCCCC5CB28F5441717A30EE21975141ED6150CFAE8F54411030253F23975141861A26E8AC8F544122874ED917975141A3A46E959F8F5441BDA7B6D8159751418E4ADE46A08F54413DE011D3159751418E4ADE46A08F5441295C8FC215975141CDCCCC4CA08F5441961EB0DD139751418E4ADE46A08F5441F5F434AF0E9751418E4ADE46A08F5441F3FD7BD2009751413A070B34A38F544185D0015BFC9651411C2C795BA38F5441367E19BCF79651419665A1AAA48F5441BE509F44F3965141B5403383A48F544162F208CEF196514111D2E80CA48F5441117A6C31F0965141EF62D29DA38F54415C8FC2D5ED965141EC51B80EA38F544133333333EB965141D7A3703DA38F5441A59917CDEA965141CB77195EA38F544102045C41E896514163090E48A48F5441FE693AFBE7965141CB27F30FA48F54417B14AEE7E7965141E17A140EA48F544158A74E91E19651411C29B671A38F544150381AC8DD965141D4F45320A38F5441BF03AA48DA965141E51FA620A18F5441AE47E17AD9965141EC51B8AEA08F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565433 - 55763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+0106000000010000000103000000010000003801000000000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA3544100000010336351417B14AE27C2A35441B81E85BB2F63514114AE4721C4A35441295C8FE22A635141E17A14FEC6A354415C8FC205256351419A9999D9CAA354417D9CAB2C1B6351418D062351D0A354415EB3171714635141AB375B9ED5A3544179CF3AE911635141CFE46476D7A35441713D0A070B635141CDCCCCBCDDA35441C3F528CC0463514148E17A54E2A3544185EB51880463514152B81E85E2A354418FC2F528FB625141CDCCCC3CE9A3544185EB51B8F1625141B81E851BF0A3544152B81EF5EC6251410AD7A380F3A354411F85EBC1E7625141CDCCCC6CF7A3544133333363E3625141333333B3FAA3544100000090DB6251417B14AED7FFA354415C8FC2B5D7625141713D0AB702A4544152B81EE5D2625141D7A370FD05A4544114AE4751CC625141C3F528DC0AA454413D0AD7D3BF625141EC51B87E14A45441E17A144EB56251419A9999791CA4544114AE4701B462514185EB51A81EA45441E17A141EB06251410AD7A3D021A454415C8FC205AC6251415C8FC23525A4544148E17A24A6625141C3F5286C2AA4544166666616A3625141E17A146E2DA4544185EB51D89D625141AE47E1EA32A454410AD7A3109962514152B81ED537A4544148E17A449762514152B81E9539A45441C3F5282C95625141EC51B8DE3BA45441B81E858B896251413333333348A45441295C8F4279625141B81E853B59A45441EC51B8EE67625141EC51B8CE6BA4544185EB51F8666251413D0AD7E36AA454411F85EB615F625141E17A14EE73A454410AD7A3F058625141F6285C4F7BA45441295C8FC252625141EC51B8BE81A45441EC51B8DE4C62514114AE474188A454417B14AE97486251417B14AE778CA454410AD7A390466251411F85EB618EA454416666669645625141E17A144E8FA45441666666E63F6251416666660694A4544152B81EF53B625141AE47E1CA97A454410AD7A3A03A625141B81E854B9AA454416666660634625141C3F5287C9FA454415C8FC2E5296251411F85EB31A6A45441713D0AF72762514114AE4771A7A4544148E17AC42062514148E17AC4ABA4544148E17A441A6251419A999909B0A45441713D0AB7156251410AD7A350B3A454417B14AE77106251411F85EB31B7A45441295C8F120A62514114AE4721BCA45441D7A370BD086251418FC2F528BDA45441AE47E10A0262514185EB51B8C2A454417B14AE37FB615141C3F5282CC9A45441713D0A07F46151411F85EB21D0A4544114AE4721EB615141295C8FA2D9A45441713D0AC7E46151410AD7A380E0A45441000000F0DF61514152B81EE5E5A454410AD7A3C0D6615141713D0AD7EFA454419A9999E9D061514100000000F7A454417B14AE37D0615141A4703DDAF7A45441D7A370ADC8615141EC51B8AE01A55441713D0A07C3615141295C8F520AA55441C3F528CCBE6151418FC2F5B810A5544133333373B9615141295C8F721AA5544166666616B56151413D0AD7A322A5544152B81EC5AE615141C3F528AC2EA5544185EB51F8AA615141713D0AF735A55441F6285C6FA7615141333333B33DA55441E17A14DEA4615141B81E855B44A55441D7A370CDA2615141CDCCCC5C4AA55441A4703D8AA16151419A9999694BA5544114AE47F19F6151413D0AD7E351A5544114AE47119F6151415C8FC26558A55441EC51B87E9E61514152B81ED55BA554413D0AD7F39D61514114AE470160A5544114AE47219E615141CDCCCCBC64A554418FC2F5A89D61514152B81E5569A55441A4703D7A9D615141713D0AD76BA55441E17A146E9D61514185EB51A86CA55441AE47E16A9C615141D7A370CD76A554411F85EBF19A615141E17A141E84A554419A9999C9996151417B14AE078DA554415C8FC2159A61514148E17A0494A55441A4703D2A99615141295C8F029FA5544148E17AE498615141A4703DEAA1A5544148E17A4498615141CDCCCC9CA8A55441713D0AF796615141A4703D0AB5A554415C8FC225966151413D0AD793BEA55441000000909561514148E17AD4C3A55441C3F5287C956151413D0AD7D3C4A554419A9999C994615141AE47E1BACDA5544152B81E259361514100000050E0A5544185EB5108926151418FC2F538EDA55441F6285C8F91615141E17A14CEF1A55441CDCCCC5C916151410AD7A360F5A5544114AE47A19161514148E17A94F8A55441AE47E19A926151417B14AEB7FAA55441A4703D8A92615141C3F528ACFBA55441AE47E1CA90615141B81E855B00A65441E17A149E8D615141000000A005A65441A4703DFA8B61514185EB515806A65441C3F528FC8A6151413333337306A65441333333038A615141CDCCCC1C0BA65441C3F5283C8B6151413D0AD7130AA65441333333438D615141C3F5284C08A65441A4703D6A90615141B81E85EB07A654411D5EC15390615141B27439E908A65441282021B9936151416E3A8BFC08A65441439323CC93615141DC91FD1008A65441781934959561514161953FC2FCA554416FBFF6389461514141BC4DA7FBA554411295BA4E946151418CDF2D87F9A5544156ED602895615141AC291C4CF6A554415C8FC2859761514114AE4751E5A55441A4703DFA98615141A4703D3AD7A55441CDCCCC1C9961514100000040D4A55441A4703D8A996151418FC2F518CFA55441333333B39A615141EC51B85EC4A554419A9999699B6151417B14AE27B9A55441713D0A279C615141295C8F72AFA554413D0AD7039D615141295C8F02A5A55441AE47E15A9E615141E17A149E95A55441713D0A579F615141333333038AA55441A4703D1AA16151413D0AD7D37CA5544148E17AF4A1615141C3F5286C76A55441C3F5287CA161514152B81EC571A55441E17A146EA2615141713D0AA76AA5544100000070A3615141EC51B81E5EA554411F85EB51A461514114AE472157A554415C8FC225A66151411F85EB514FA55441A4703D7AA86151413333339347A55441E17A148EAA6151417B14AEC741A554410AD7A3D0AB6151411F85EBA13EA55441713D0A07AF61514148E17A0438A55441B81E859BB1615141B81E851B33A554415C8FC2B5B66151417B14AE0729A55441CDCCCC5CBA615141AE47E19A22A5544166666666BF6151418FC2F51819A55441C3F5286CC2615141F6285C3F14A554413D0AD723C6615141333333130EA55441C3F5287CCA6151416666666607A55441713D0A17D0615141713D0A87FFA454410AD7A3E0D4615141AE47E16AF9A45441B81E859BDA615141D7A3706DF2A454415C8FC205E06151411F85EB91ECA4544148E17A54E7615141295C8FB2E4A4544148E17AD4EF61514114AE47B1DBA45441E17A148EF46151417B14AEC7D6A4544133333363F76151411F85EBB1D3A45441AE47E14AFB615141A4703DCACFA45441295C8F12FF615141295C8F12CCA45441C3F5283C0C625141C3F5285CC0A45441B81E854B1462514100000030BAA454413D0AD7B31D625141C3F5288CB3A4544148E17A2426625141F6285C0FAEA454419A9999792E625141666666D6A8A45441EC51B89E366251411F85EB51A3A45441295C8F323E625141D7A370AD9DA454410000008042625141F6285C9F99A454418FC2F5A8496251411F85EB2193A45441713D0A674B6251410AD7A36091A454415C8FC2B54A625141EC51B87E90A454418FC2F5984C625141AE47E17A8EA45441B81E85CB4D625141B81E85CB8EA4544148E17A5452625141295C8FF289A45441F6285CFF5562514152B81EF584A454418FC2F50858625141F6285CCF83A45441AE47E1AA5A625141F6285C7F81A45441B81E859B636251415C8FC21578A454415C8FC2856B62514152B81EA56EA454419A9999897C6251417B14AE175DA454415C8FC2058D6251418FC2F5284BA45441295C8F3291625141A4703DBA46A4544152B81ED59362514152B81EB543A45441AE47E1AA9B625141CDCCCC8C3BA4544114AE47E19E62514148E17A0438A45441713D0A17A2625141D7A370AD34A4544152B81E75A66251411F85EBA130A45441D7A370EDA9625141B81E855B2DA454411F85EBF1AC625141666666562AA45441000000C0B2625141EC51B8BE25A45441713D0AD7B66251410000004022A4544133333303BB62514148E17AC41EA45441713D0AB7BC6251418FC2F5281DA45441B81E85DBC062514152B81EE519A4544185EB5108C5625141A4703D0A16A454419A999999C7625141E17A143E14A454413D0AD7B3CA625141713D0AB711A45441F6285CBFCE625141295C8F720EA45441C3F528ECD26251415C8FC2650BA454410AD7A330D46251418FC2F5380AA45441333333E3D6625141AE47E12A08A45441C3F528CCDC625141D7A370DD03A454415C8FC295E06251419A99990901A454410AD7A310E962514100000000FBA3544148E17A44EE6251415C8FC235F7A3544152B81E05F3625141D7A370ADF3A3544185EB51C8FC625141D7A370ADECA354419A99994906635141E17A14CEE5A35441000000200E63514166666606E0A35441295C8F22156351419A999979DBA354411F85EB0121635141CDCCCCDCD2A3544185EB51E8286351413D0AD723CDA35441AE47E1DA346351410AD7A3B0C5A354410AD7A300386351413D0AD7D3C3A354413D0AD7633F6351417B14AEC7BFA35441666666164963514185EB5128BBA354410000007058635141AE47E19AB4A354415C8FC2556263514152B81EC5B0A3544148E17A3464635141E17A14BEAEA3544114AE4701686351417B14AE27ADA3544185EB51286963514133333373AFA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441E17A143E91635141713D0AF7A2A354415C8FC2E59B63514185EB51D8A0A35441A4703D0AA3635141C3F5286C9FA35441713D0A77AB635141CDCCCC5C9DA354417B14AE57B8635141D7A3708D99A3544148E17AE4B76351418FC2F59898A354418FC2F538B46351410AD7A3A099A354418FC2F538AD6351410AD7A3E09BA35441A4703DDAA8635141A4703D4A9DA35441E17A14BEA4635141000000209EA35441B81E856B9D6351418FC2F5689FA35441EC51B8DE9663514114AE47A1A0A35441F6285C0F90635141AE47E10AA2A354410000003089635141713D0AD7A3A354411F85EB21806351417B14AE37A6A35441713D0A4775635141000000C0A9A3544148E17AF46D63514152B81EC5ACA3544148E17A5469635141333333D3AEA354410AD7A3C068635141C3F528DCADA35441B81E85AB6C63514100000010ACA3544152B81EB572635141E17A147EA9A354417B14AEA777635141295C8FD2A7A354419A9999F97E6351411F85EB61A5A35441666666C68763514114AE4701A3A35441666666B68E6351415C8FC245A1A354413D0AD75395635141C3F528DC9FA35441E17A146E9B63514148E17AC49EA354410AD7A370A0635141EC51B8FE9DA3544100000000A56351418FC2F5189DA354418FC2F5A8A86351413D0AD7639CA35441295C8F52AC635141C3F5283C9BA354415C8FC265B1635141F6285C6F99A3544166666686B763514114AE47D197A354419F9E299CC1635141896FB0FB95A35441187DE03EC46351414FC428D095A3544152B81EA5C96351413333335394A35441E17A14CEDB6351411F85EBD18EA35441333333B3F2635141A4703DEA87A354410AD7A3D0F36351413D0AD79387A35441713D0A17F76351419A99998986A35441AE47E19AF8635141EC51B80E86A354410AD7A31003645141CDCCCCBC82A35441000000D00C64514152B81E757FA35441666666461564514152B81EB57CA35441CDCCCCCC18645141C3F528AC7BA354410AD7A3D01F645141C3F528FC78A354415C8FC225236451411F85EBB177A354410AD7A3E029645141713D0A0775A354418FC2F5682C64514114AE475173A354419A99994942645141333333036AA35441EC51B80E4C6451415C8FC23566A354413D0AD7635B6451410AD7A31061A35441EC51B8CE5D645141AE47E16A5FA35441666666A6686451418FC2F5985BA35441B81E85CB716451413D0AD74359A35441333333C379645141AE47E19A57A35441A4703DBA8364514185EB513856A354419A9999098B645141000000A055A354410AD7A3408F645141D7A370AD55A35441713D0A579564514185EB514857A35441EC51B89E946451418FC2F5B853A35441B81E852B8A6451410AD7A35051A3544114AE472187645141F6285CEF50A354419A9999E9816451418FC2F5B850A3544114AE47E1816451415C8FC2B551A3544152B81E45766451416666667653A35441AE47E1FA69645141F6285C5F56A3544152B81E2556645141AE47E18A5DA35441E17A148E4864514185EB51D861A3544114AE47A14864514114AE47E162A35441A4703D8A3864514148E17A4469A3544114AE47D1216451413D0AD76372A3544152B81E551A645141666666E674A3544185EB51E80E645141F6285CDF77A354415C8FC2250B64514185EB514879A35441B81E858B016451410AD7A3707CA354410AD7A330FF635141666666367DA35441AE47E1AAF063514148E17A4481A354417B14AE17CD6351410AD7A3F08BA3544100000090B563514152B81E5593A35441
+</a>
+
+<b>
+0106000000010000000103000000010000009D01000014AE4701686351417B14AE27ADA354413B58661268635141C061C549ADA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA35441C544C61A7563514110927F48ABA35441F333CEC8806351417629FE59A7A354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441C88DF9638B6351417EB71A4EA4A35441E17A143E91635141713D0AF7A2A35441FDA1889B92635141F69082B1A2A35441DA40D7A89A6351414E6C6017A1A35441A4703D0AA3635141C3F5286C9FA35441E4F91B77A46351418217F2129FA35441C411E613AA6351417ABFA2B39DA35441713D0A77AB635141CDCCCC5C9DA354415111D8D7B163514132ECB5799BA3544190A9F824B8635141B562719C99A354417B14AE57B8635141D7A3708D99A3544148E17AE4B76351418FC2F59898A35441D22EEA5DB763514146ECB9BE98A354418FC2F538B46351410AD7A3A099A35441DC920A93B2635141A8B841289AA354418FC2F538AD6351410AD7A3E09BA35441D8049467AC635141765851249CA35441A4703DDAA8635141A4703D4A9DA35441E17A14BEA4635141000000209EA35441C159A754A363514195E96C5F9EA35441B81E856B9D6351418FC2F5689FA35441D177610F99635141B201DA38A0A35441EC51B8DE9663514114AE47A1A0A35441F6285C0F90635141AE47E10AA2A3544129601C888E63514178093671A2A354410000003089635141713D0AD7A3A354411F85EB21806351417B14AE37A6A35441AC49BE2A7D6351411563BC2EA7A354415A43ED0975635141FD6A34D9A9A354410B0BE5EC6E635141D2BDAA5EACA3544148E17A5469635141333333D3AEA354410AD7A3C068635141C3F528DCADA35441E7EB076469635141BB9F3091ADA354411C1D28A46C635141DEE96013ACA35441B81E85AB6C63514100000010ACA3544181FF5F4F72635141F3DC63A9A9A3544152B81EB572635141E17A147EA9A354417B14AEA777635141295C8FD2A7A35441ECEAEC877863514159BFCF87A7A354419A9999F97E6351411F85EB61A5A354417847E2158263514133A1C98AA4A35441666666C68763514114AE4701A3A354417413027D8C635141C83EF4D3A1A35441666666B68E6351415C8FC245A1A35441084B1847916351417C3989B9A0A354413D0AD75395635141C3F528DC9FA3544186BDC9E598635141975B8A389FA35441E17A146E9B63514148E17AC49EA354418E09190D9E63514116C2035D9EA354410AD7A370A0635141EC51B8FE9DA35441270E3E94A363514199098E609DA3544100000000A56351418FC2F5189DA35441A9A28CA3A8635141FCCAE2649CA35441295C8F52AC635141C3F5283C9BA3544165C8CFD8B063514108FE59A199A354415C8FC265B1635141F6285C6F99A3544195790DB0B66351410BB3DC0998A3544166666686B763514114AE47D197A354415102C2B0BB6351410F99520F97A354414A2E7E5FC1635141BB69B90696A354419F9E299CC1635141896FB0FB95A35441ACAE6196C363514154A807DB95A35441187DE03EC46351414FC428D095A35441C1F92F83C4635141E20C55BD95A3544152B81EA5C96351413333335394A35441C617C806D963514119C88AA98FA35441E17A14CEDB6351411F85EBD18EA35441E95F7EBAE7635141616354398BA35441333333B3F2635141A4703DEA87A35441C13BF614F7635141E58A428A86A35441713D0A17F76351419A99998986A35441BED40318F76351418C854A8986A35441A3F7F5AE0264514188A7CDDB82A35441EE4AB72304645141E3E53C6082A35441000000D00C64514152B81E757FA35441E88BBB751364514198A71E4C7DA35441666666461564514152B81EB57CA35441CDCCCCCC18645141C3F528AC7BA35441C710F7D11A64514109B507E67AA35441D3A7007623645141AB761D9277A35441637DA32629645141D06FC35075A354410AD7A3E029645141713D0A0775A3544189A1CE1D2A645141FC13BDDD74A354418FC2F5682C64514114AE475173A354416F1FB46D3864514126B5AB346EA354419A99994942645141333333036AA35441565FFEC943645141C4E6976D69A35441EC51B80E4C6451415C8FC23566A354417ABF724050645141B83975CD64A35441726894DC546451418E72734163A354413D0AD7635B6451410AD7A31061A3544190B5FED15B645141551292C560A35441EC51B8CE5D645141AE47E16A5FA35441786E47B963645141935246555DA35441666666A6686451418FC2F5985BA35441FC5184E06C6451415644F5845AA35441B81E85CB716451413D0AD74359A35441AA4373B077645141ABB5750958A35441333333C379645141AE47E19A57A354413B48866881645141C1A1D68A56A35441A4703DBA8364514185EB513856A354419A9999098B645141000000A055A354419C29FB8E8D645141B8DE09A855A354410AD7A3408F645141D7A370AD55A3544105721484916451410F55364656A35441944D72FB936451417CDBACEC56A35441713D0A579564514185EB514857A35441EC51B89E946451418FC2F5B853A35441B81E852B8A6451410AD7A35051A3544114AE472187645141F6285CEF50A354419A9999E9816451418FC2F5B850A3544114AE47E1816451415C8FC2B551A3544152B81E45766451416666667653A35441AE47E1FA69645141F6285C5F56A3544152B81E2556645141AE47E18A5DA35441E17A148E4864514185EB51D861A3544114AE47A14864514114AE47E162A35441A4703D8A3864514148E17A4469A3544114AE47D1216451413D0AD76372A3544152B81E551A645141666666E674A3544185EB51E80E645141F6285CDF77A354415C8FC2250B64514185EB514879A35441B81E858B016451410AD7A3707CA354410AD7A330FF635141666666367DA35441AE47E1AAF063514148E17A4481A354417B14AE17CD6351410AD7A3F08BA3544100000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA354415DC87445996351414AF49D679AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA35441EC1C4F088163514174079B1BA0A354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA3544100000010336351417B14AE27C2A35441B81E85BB2F63514114AE4721C4A354417F87D5B62A6351410EF9D91AC7A354415C8FC205256351419A9999D9CAA354417B9CAB2C1B6351418B062351D0A354415BB3171714635141A9375B9ED5A3544174CF3AE911635141D1E46476D7A35441713D0A070B635141CDCCCCBCDDA35441C3F528CC0463514148E17A54E2A3544185EB51880463514152B81E85E2A354418FC2F528FB625141CDCCCC3CE9A3544185EB51B8F1625141B81E851BF0A3544152B81EF5EC6251410AD7A380F3A354411F85EBC1E7625141CDCCCC6CF7A3544133333363E3625141333333B3FAA354419C9E44EADD625141A359E04BFEA3544100000090DB6251417B14AED7FFA3544115B87A88D9625141F3790B5B01A454415C8FC2B5D7625141713D0AB702A4544152B81EE5D2625141D7A370FD05A4544114AE4751CC625141C3F528DC0AA454413D0AD7D3BF625141EC51B87E14A45441E17A144EB56251419A9999791CA4544114AE4701B462514185EB51A81EA454415C8FC205AC6251415C8FC23525A4544148E17A24A6625141C3F5286C2AA4544166666616A3625141E17A146E2DA4544185EB51D89D625141AE47E1EA32A454410AD7A3109962514152B81ED537A4544148E17A449762514152B81E9539A45441C3F5282C95625141EC51B8DE3BA45441B81E858B896251413333333348A45441295C8F4279625141B81E853B59A45441EC51B8EE67625141EC51B8CE6BA4544185EB51F8666251413D0AD7E36AA454411F85EB615F625141E17A14EE73A454410AD7A3F058625141F6285C4F7BA45441295C8FC252625141EC51B8BE81A45441D6663FD7516251419953CDC282A45441EC51B8DE4C62514114AE474188A454417B14AE97486251417B14AE778CA454410AD7A390466251411F85EB618EA454416666669645625141E17A144E8FA45441666666E63F6251416666660694A4544152B81EF53B625141AE47E1CA97A454410AD7A3A03A625141B81E854B9AA454416666660634625141C3F5287C9FA454415C8FC2E5296251411F85EB31A6A45441713D0AF72762514114AE4771A7A4544148E17AC42062514148E17AC4ABA4544148E17A441A6251419A999909B0A45441713D0AB7156251410AD7A350B3A454417B14AE77106251411F85EB31B7A45441295C8F120A62514114AE4721BCA45441AE47E10A0262514185EB51B8C2A454417B14AE37FB615141C3F5282CC9A45441713D0A07F46151411F85EB21D0A4544114AE4721EB615141295C8FA2D9A45441713D0AC7E46151410AD7A380E0A45441000000F0DF61514152B81EE5E5A454410AD7A3C0D6615141713D0AD7EFA454417B14AE37D0615141A4703DDAF7A45441D7A370ADC8615141EC51B8AE01A55441713D0A07C3615141295C8F520AA55441C3F528CCBE6151418FC2F5B810A5544133333373B9615141295C8F721AA5544166666616B56151413D0AD7A322A5544185EB51F8AA615141713D0AF735A55441F6285C6FA7615141333333B33DA55441E17A14DEA4615141B81E855B44A55441D7A370CDA2615141CDCCCC5C4AA55441A4703D8AA16151419A9999694BA5544114AE47F19F6151413D0AD7E351A5544114AE47119F6151415C8FC26558A55441EC51B87E9E61514152B81ED55BA554413D0AD7F39D61514114AE470160A5544114AE47219E615141CDCCCCBC64A554418FC2F5A89D61514152B81E5569A55441056FD68B9D6151417DDC40E56AA55441A4703D7A9D615141713D0AD76BA55441E17A146E9D61514185EB51A86CA55441AE47E16A9C615141D7A370CD76A554411F85EBF19A615141E17A141E84A554419A9999C9996151417B14AE078DA554415C8FC2159A61514148E17A0494A55441A4703D2A99615141295C8F029FA5544148E17AE498615141A4703DEAA1A5544148E17A4498615141CDCCCC9CA8A55441713D0AF796615141A4703D0AB5A554415C8FC225966151413D0AD793BEA55441000000909561514148E17AD4C3A55441C3F5287C956151413D0AD7D3C4A554419A9999C994615141AE47E1BACDA5544152B81E259361514100000050E0A5544185EB5108926151418FC2F538EDA55441F6285C8F91615141E17A14CEF1A55441CDCCCC5C916151410AD7A360F5A5544114AE47A19161514148E17A94F8A55441AE47E19A926151417B14AEB7FAA55441A4703D8A92615141C3F528ACFBA55441AE47E1CA90615141B81E855B00A65441E17A149E8D615141000000A005A65441A4703DFA8B61514185EB515806A65441C3F528FC8A6151413333337306A65441333333038A615141CDCCCC1C0BA65441333333438D615141C3F5284C08A65441A4703D6A90615141B81E85EB07A65441195EC15390615141B67439E908A654410D8A894C91615141A3BFC0EE08A654412B2021B993615141713A8BFC08A65441439323CC93615141DC91FD1008A65441781934959561514161953FC2FCA554416FBFF6389461514141BC4DA7FBA554411295BA4E946151418CDF2D87F9A5544156ED602895615141AC291C4CF6A554415C8FC2859761514114AE4751E5A55441A4703DFA98615141A4703D3AD7A55441CDCCCC1C9961514100000040D4A55441A4703D8A996151418FC2F518CFA55441333333B39A615141EC51B85EC4A554419A9999699B6151417B14AE27B9A55441713D0A279C615141295C8F72AFA554413D0AD7039D615141295C8F02A5A55441713D0A579F615141333333038AA55441A4703D1AA16151413D0AD7D37CA5544148E17AF4A1615141C3F5286C76A55441C3F5287CA161514152B81EC571A55441E17A146EA2615141713D0AA76AA5544100000070A3615141EC51B81E5EA554411F85EB51A461514114AE472157A554415C8FC225A66151411F85EB514FA55441A4703D7AA86151413333339347A55441E17A148EAA6151417B14AEC741A554410AD7A3D0AB6151411F85EBA13EA55441713D0A07AF61514148E17A0438A55441B81E859BB1615141B81E851B33A554415C8FC2B5B66151417B14AE0729A55441CDCCCC5CBA615141AE47E19A22A5544166666666BF6151418FC2F51819A55441C3F5286CC2615141F6285C3F14A554413D0AD723C6615141333333130EA55441C3F5287CCA6151416666666607A55441713D0A17D0615141713D0A87FFA454410AD7A3E0D4615141AE47E16AF9A45441B81E859BDA615141D7A3706DF2A454415C8FC205E06151411F85EB91ECA4544148E17A54E7615141295C8FB2E4A4544148E17AD4EF61514114AE47B1DBA45441E17A148EF46151417B14AEC7D6A4544133333363F76151411F85EBB1D3A45441AE47E14AFB615141A4703DCACFA45441295C8F12FF615141295C8F12CCA45441C3F5283C0C625141C3F5285CC0A45441B81E854B1462514100000030BAA454417941533B1C625141755EE995B4A454413D0AD7B31D625141C3F5288CB3A4544148E17A2426625141F6285C0FAEA45441B644718F286251410CDD6A8BACA454419A9999792E625141666666D6A8A4544162D61E7B326251412FE7B31FA6A45441EC51B89E366251411F85EB51A3A4544192D886B03B6251414ED8858B9FA45441295C8F323E625141D7A370AD9DA454416B10E2554262514149DE0DC799A454410000008042625141F6285C9F99A45441F3B2155346625141BFBCE42796A45441638552504A62514161685B7992A45441E7746E504B6251418224697791A45441713D0A674B6251410AD7A36091A454415C8FC2B54A625141EC51B87E90A45441B28773974C62514182997D7C8EA454418FC2F5984C625141AE47E17A8EA45441E465289D4C6251411EF6FB7B8EA45441B81E85CB4D625141B81E85CB8EA45441522C0A384E6251416AB785578EA4544196EF5E554F625141A88C87268DA45441FB42104C526251412A738EFB89A454414A68467854625141ABEB3A0987A45441F6285CFF5562514152B81EF584A454419653F2B75662514124A3298D84A45441470A4D985762514167F8CE0E84A454418FC2F50858625141F6285CCF83A45441AE47E1AA5A625141F6285C7F81A45441CD663C035B6251419290552281A4544191F96C59606251414F2BF0837BA45441B81E859B636251415C8FC21578A45441AD7E1D6F64625141C972651977A454415C8FC2856B62514152B81EA56EA45441EF8C15DD706251410D349A2269A45441BE49F63C766251411BC4429763A454419A9999897C6251417B14AE175DA45441A68B05FC826251412DF0561456A45441F4E4BA158B625141247E8B444DA454415C8FC2058D6251418FC2F5284BA45441295C8F3291625141A4703DBA46A45441BAE84653936251419B33EF4944A4544152B81ED59362514152B81EB543A45441847A776C94625141B92B8B1743A454416D2F1B089C6251412F9749263BA4544114AE47E19E62514148E17A0438A45441713D0A17A2625141D7A370AD34A4544114D8D307A3625141A4B46ECE33A45441D7A370EDA9625141B81E855B2DA454412119355BAA6251416F61A9ED2CA454411F85EBF1AC625141666666562AA454418304BB07AE62514105C09D7A29A454412A8F0A4FB262514112BA151826A45441C3D12788B462514182ABEC3824A45441713D0AD7B66251410000004022A45441229745D0BA625141DB7AFCEE1EA454418D10D706BB62514180030BC11EA45441713D0AB7BC6251418FC2F5281DA454418CE027D2BC625141688F96131DA45441B81E85DBC062514152B81EE519A454412A4DE530C3625141E3FA87BD17A4544185EB5108C5625141A4703D0A16A45441DC68D02DC66251413AFBC33C15A454419A999999C7625141E17A143E14A454413D0AD7B3CA625141713D0AB711A454412C4EB9EECA6251414270798711A45441F6285CBFCE625141295C8F720EA454416AD11466D062514119E1BE3D0DA45441C3F528ECD26251415C8FC2650BA4544113E479E0D3625141530D46830AA454410AD7A330D46251418FC2F5380AA4544194698D29D662514181354FB808A45441333333E3D6625141AE47E12A08A454417270AF02D9625141FB89389F06A45441C3F528CCDC625141D7A370DD03A454411DAE5F15E062514162DD716901A454415C8FC295E06251419A99990901A45441FD1FFDB3E3625141711C49D1FEA35441EB7BB740EB625141D483FC67F9A35441CADD9F1EF06251410CEC54D5F5A3544152B81E05F3625141D7A370ADF3A354413D212A93F462514124C30790F2A3544183289BFBFC62514140AB5B88ECA3544187DB61A105635141634FB547E6A35441A4E78DB10C6351419779A514E1A35441000000200E63514166666606E0A35441DBB6FED212635141CC9891F9DCA35441295C8F22156351419A999979DBA354414DF3A7F31A63514109D66241D7A354411F85EB0121635141CDCCCCDCD2A35441699EDAB2216351416B85A25CD2A3544136297CBB27635141BC45C1FDCDA3544185EB51E8286351413D0AD723CDA35441CB4A6C862F63514144757603C9A35441AE47E1DA346351410AD7A3B0C5A354410AD7A300386351413D0AD7D3C3A354412361A6C53D63514128C79BAAC0A354413D0AD7633F6351417B14AEC7BFA35441AC85781146635141BC67C098BCA35441666666164963514185EB5128BBA354413E8F13A3556351411F51EACCB5A354410000007058635141AE47E19AB4A35441D8D8B3BF596351410708CE18B4A35441B49F733B60635141E7FDB295B1A354415C8FC2556263514152B81EC5B0A354414407B12A63635141192141DEAFA3544148E17A3464635141E17A14BEAEA354418984824666635141192FA7E0ADA3544114AE4701686351417B14AE27ADA35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565433 - 99176
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+0106000000010000000103000000010000003801000000000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA3544100000010336351417B14AE27C2A35441B81E85BB2F63514114AE4721C4A35441295C8FE22A635141E17A14FEC6A354415C8FC205256351419A9999D9CAA354417D9CAB2C1B6351418D062351D0A354415EB3171714635141AB375B9ED5A3544179CF3AE911635141CFE46476D7A35441713D0A070B635141CDCCCCBCDDA35441C3F528CC0463514148E17A54E2A3544185EB51880463514152B81E85E2A354418FC2F528FB625141CDCCCC3CE9A3544185EB51B8F1625141B81E851BF0A3544152B81EF5EC6251410AD7A380F3A354411F85EBC1E7625141CDCCCC6CF7A3544133333363E3625141333333B3FAA3544100000090DB6251417B14AED7FFA354415C8FC2B5D7625141713D0AB702A4544152B81EE5D2625141D7A370FD05A4544114AE4751CC625141C3F528DC0AA454413D0AD7D3BF625141EC51B87E14A45441E17A144EB56251419A9999791CA4544114AE4701B462514185EB51A81EA45441E17A141EB06251410AD7A3D021A454415C8FC205AC6251415C8FC23525A4544148E17A24A6625141C3F5286C2AA4544166666616A3625141E17A146E2DA4544185EB51D89D625141AE47E1EA32A454410AD7A3109962514152B81ED537A4544148E17A449762514152B81E9539A45441C3F5282C95625141EC51B8DE3BA45441B81E858B896251413333333348A45441295C8F4279625141B81E853B59A45441EC51B8EE67625141EC51B8CE6BA4544185EB51F8666251413D0AD7E36AA454411F85EB615F625141E17A14EE73A454410AD7A3F058625141F6285C4F7BA45441295C8FC252625141EC51B8BE81A45441EC51B8DE4C62514114AE474188A454417B14AE97486251417B14AE778CA454410AD7A390466251411F85EB618EA454416666669645625141E17A144E8FA45441666666E63F6251416666660694A4544152B81EF53B625141AE47E1CA97A454410AD7A3A03A625141B81E854B9AA454416666660634625141C3F5287C9FA454415C8FC2E5296251411F85EB31A6A45441713D0AF72762514114AE4771A7A4544148E17AC42062514148E17AC4ABA4544148E17A441A6251419A999909B0A45441713D0AB7156251410AD7A350B3A454417B14AE77106251411F85EB31B7A45441295C8F120A62514114AE4721BCA45441D7A370BD086251418FC2F528BDA45441AE47E10A0262514185EB51B8C2A454417B14AE37FB615141C3F5282CC9A45441713D0A07F46151411F85EB21D0A4544114AE4721EB615141295C8FA2D9A45441713D0AC7E46151410AD7A380E0A45441000000F0DF61514152B81EE5E5A454410AD7A3C0D6615141713D0AD7EFA454419A9999E9D061514100000000F7A454417B14AE37D0615141A4703DDAF7A45441D7A370ADC8615141EC51B8AE01A55441713D0A07C3615141295C8F520AA55441C3F528CCBE6151418FC2F5B810A5544133333373B9615141295C8F721AA5544166666616B56151413D0AD7A322A5544152B81EC5AE615141C3F528AC2EA5544185EB51F8AA615141713D0AF735A55441F6285C6FA7615141333333B33DA55441E17A14DEA4615141B81E855B44A55441D7A370CDA2615141CDCCCC5C4AA55441A4703D8AA16151419A9999694BA5544114AE47F19F6151413D0AD7E351A5544114AE47119F6151415C8FC26558A55441EC51B87E9E61514152B81ED55BA554413D0AD7F39D61514114AE470160A5544114AE47219E615141CDCCCCBC64A554418FC2F5A89D61514152B81E5569A55441A4703D7A9D615141713D0AD76BA55441E17A146E9D61514185EB51A86CA55441AE47E16A9C615141D7A370CD76A554411F85EBF19A615141E17A141E84A554419A9999C9996151417B14AE078DA554415C8FC2159A61514148E17A0494A55441A4703D2A99615141295C8F029FA5544148E17AE498615141A4703DEAA1A5544148E17A4498615141CDCCCC9CA8A55441713D0AF796615141A4703D0AB5A554415C8FC225966151413D0AD793BEA55441000000909561514148E17AD4C3A55441C3F5287C956151413D0AD7D3C4A554419A9999C994615141AE47E1BACDA5544152B81E259361514100000050E0A5544185EB5108926151418FC2F538EDA55441F6285C8F91615141E17A14CEF1A55441CDCCCC5C916151410AD7A360F5A5544114AE47A19161514148E17A94F8A55441AE47E19A926151417B14AEB7FAA55441A4703D8A92615141C3F528ACFBA55441AE47E1CA90615141B81E855B00A65441E17A149E8D615141000000A005A65441A4703DFA8B61514185EB515806A65441C3F528FC8A6151413333337306A65441333333038A615141CDCCCC1C0BA65441C3F5283C8B6151413D0AD7130AA65441333333438D615141C3F5284C08A65441A4703D6A90615141B81E85EB07A654411D5EC15390615141B27439E908A65441282021B9936151416E3A8BFC08A65441439323CC93615141DC91FD1008A65441781934959561514161953FC2FCA554416FBFF6389461514141BC4DA7FBA554411295BA4E946151418CDF2D87F9A5544156ED602895615141AC291C4CF6A554415C8FC2859761514114AE4751E5A55441A4703DFA98615141A4703D3AD7A55441CDCCCC1C9961514100000040D4A55441A4703D8A996151418FC2F518CFA55441333333B39A615141EC51B85EC4A554419A9999699B6151417B14AE27B9A55441713D0A279C615141295C8F72AFA554413D0AD7039D615141295C8F02A5A55441AE47E15A9E615141E17A149E95A55441713D0A579F615141333333038AA55441A4703D1AA16151413D0AD7D37CA5544148E17AF4A1615141C3F5286C76A55441C3F5287CA161514152B81EC571A55441E17A146EA2615141713D0AA76AA5544100000070A3615141EC51B81E5EA554411F85EB51A461514114AE472157A554415C8FC225A66151411F85EB514FA55441A4703D7AA86151413333339347A55441E17A148EAA6151417B14AEC741A554410AD7A3D0AB6151411F85EBA13EA55441713D0A07AF61514148E17A0438A55441B81E859BB1615141B81E851B33A554415C8FC2B5B66151417B14AE0729A55441CDCCCC5CBA615141AE47E19A22A5544166666666BF6151418FC2F51819A55441C3F5286CC2615141F6285C3F14A554413D0AD723C6615141333333130EA55441C3F5287CCA6151416666666607A55441713D0A17D0615141713D0A87FFA454410AD7A3E0D4615141AE47E16AF9A45441B81E859BDA615141D7A3706DF2A454415C8FC205E06151411F85EB91ECA4544148E17A54E7615141295C8FB2E4A4544148E17AD4EF61514114AE47B1DBA45441E17A148EF46151417B14AEC7D6A4544133333363F76151411F85EBB1D3A45441AE47E14AFB615141A4703DCACFA45441295C8F12FF615141295C8F12CCA45441C3F5283C0C625141C3F5285CC0A45441B81E854B1462514100000030BAA454413D0AD7B31D625141C3F5288CB3A4544148E17A2426625141F6285C0FAEA454419A9999792E625141666666D6A8A45441EC51B89E366251411F85EB51A3A45441295C8F323E625141D7A370AD9DA454410000008042625141F6285C9F99A454418FC2F5A8496251411F85EB2193A45441713D0A674B6251410AD7A36091A454415C8FC2B54A625141EC51B87E90A454418FC2F5984C625141AE47E17A8EA45441B81E85CB4D625141B81E85CB8EA4544148E17A5452625141295C8FF289A45441F6285CFF5562514152B81EF584A454418FC2F50858625141F6285CCF83A45441AE47E1AA5A625141F6285C7F81A45441B81E859B636251415C8FC21578A454415C8FC2856B62514152B81EA56EA454419A9999897C6251417B14AE175DA454415C8FC2058D6251418FC2F5284BA45441295C8F3291625141A4703DBA46A4544152B81ED59362514152B81EB543A45441AE47E1AA9B625141CDCCCC8C3BA4544114AE47E19E62514148E17A0438A45441713D0A17A2625141D7A370AD34A4544152B81E75A66251411F85EBA130A45441D7A370EDA9625141B81E855B2DA454411F85EBF1AC625141666666562AA45441000000C0B2625141EC51B8BE25A45441713D0AD7B66251410000004022A4544133333303BB62514148E17AC41EA45441713D0AB7BC6251418FC2F5281DA45441B81E85DBC062514152B81EE519A4544185EB5108C5625141A4703D0A16A454419A999999C7625141E17A143E14A454413D0AD7B3CA625141713D0AB711A45441F6285CBFCE625141295C8F720EA45441C3F528ECD26251415C8FC2650BA454410AD7A330D46251418FC2F5380AA45441333333E3D6625141AE47E12A08A45441C3F528CCDC625141D7A370DD03A454415C8FC295E06251419A99990901A454410AD7A310E962514100000000FBA3544148E17A44EE6251415C8FC235F7A3544152B81E05F3625141D7A370ADF3A3544185EB51C8FC625141D7A370ADECA354419A99994906635141E17A14CEE5A35441000000200E63514166666606E0A35441295C8F22156351419A999979DBA354411F85EB0121635141CDCCCCDCD2A3544185EB51E8286351413D0AD723CDA35441AE47E1DA346351410AD7A3B0C5A354410AD7A300386351413D0AD7D3C3A354413D0AD7633F6351417B14AEC7BFA35441666666164963514185EB5128BBA354410000007058635141AE47E19AB4A354415C8FC2556263514152B81EC5B0A3544148E17A3464635141E17A14BEAEA3544114AE4701686351417B14AE27ADA3544185EB51286963514133333373AFA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441E17A143E91635141713D0AF7A2A354415C8FC2E59B63514185EB51D8A0A35441A4703D0AA3635141C3F5286C9FA35441713D0A77AB635141CDCCCC5C9DA354417B14AE57B8635141D7A3708D99A3544148E17AE4B76351418FC2F59898A354418FC2F538B46351410AD7A3A099A354418FC2F538AD6351410AD7A3E09BA35441A4703DDAA8635141A4703D4A9DA35441E17A14BEA4635141000000209EA35441B81E856B9D6351418FC2F5689FA35441EC51B8DE9663514114AE47A1A0A35441F6285C0F90635141AE47E10AA2A354410000003089635141713D0AD7A3A354411F85EB21806351417B14AE37A6A35441713D0A4775635141000000C0A9A3544148E17AF46D63514152B81EC5ACA3544148E17A5469635141333333D3AEA354410AD7A3C068635141C3F528DCADA35441B81E85AB6C63514100000010ACA3544152B81EB572635141E17A147EA9A354417B14AEA777635141295C8FD2A7A354419A9999F97E6351411F85EB61A5A35441666666C68763514114AE4701A3A35441666666B68E6351415C8FC245A1A354413D0AD75395635141C3F528DC9FA35441E17A146E9B63514148E17AC49EA354410AD7A370A0635141EC51B8FE9DA3544100000000A56351418FC2F5189DA354418FC2F5A8A86351413D0AD7639CA35441295C8F52AC635141C3F5283C9BA354415C8FC265B1635141F6285C6F99A3544166666686B763514114AE47D197A354419F9E299CC1635141896FB0FB95A35441187DE03EC46351414FC428D095A3544152B81EA5C96351413333335394A35441E17A14CEDB6351411F85EBD18EA35441333333B3F2635141A4703DEA87A354410AD7A3D0F36351413D0AD79387A35441713D0A17F76351419A99998986A35441AE47E19AF8635141EC51B80E86A354410AD7A31003645141CDCCCCBC82A35441000000D00C64514152B81E757FA35441666666461564514152B81EB57CA35441CDCCCCCC18645141C3F528AC7BA354410AD7A3D01F645141C3F528FC78A354415C8FC225236451411F85EBB177A354410AD7A3E029645141713D0A0775A354418FC2F5682C64514114AE475173A354419A99994942645141333333036AA35441EC51B80E4C6451415C8FC23566A354413D0AD7635B6451410AD7A31061A35441EC51B8CE5D645141AE47E16A5FA35441666666A6686451418FC2F5985BA35441B81E85CB716451413D0AD74359A35441333333C379645141AE47E19A57A35441A4703DBA8364514185EB513856A354419A9999098B645141000000A055A354410AD7A3408F645141D7A370AD55A35441713D0A579564514185EB514857A35441EC51B89E946451418FC2F5B853A35441B81E852B8A6451410AD7A35051A3544114AE472187645141F6285CEF50A354419A9999E9816451418FC2F5B850A3544114AE47E1816451415C8FC2B551A3544152B81E45766451416666667653A35441AE47E1FA69645141F6285C5F56A3544152B81E2556645141AE47E18A5DA35441E17A148E4864514185EB51D861A3544114AE47A14864514114AE47E162A35441A4703D8A3864514148E17A4469A3544114AE47D1216451413D0AD76372A3544152B81E551A645141666666E674A3544185EB51E80E645141F6285CDF77A354415C8FC2250B64514185EB514879A35441B81E858B016451410AD7A3707CA354410AD7A330FF635141666666367DA35441AE47E1AAF063514148E17A4481A354417B14AE17CD6351410AD7A3F08BA3544100000090B563514152B81E5593A35441
+</a>
+
+<b>
+0106000000010000000103000000010000009D01000014AE4701686351417B14AE27ADA354413958661268635141BF61C549ADA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA35441C844C61A7563514111927F48ABA35441F533CEC8806351417129FE59A7A354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441CB8DF9638B6351417CB71A4EA4A35441E17A143E91635141713D0AF7A2A35441FBA1889B92635141F49082B1A2A35441DA40D7A89A635141516C6017A1A35441A4703D0AA3635141C3F5286C9FA35441E6F91B77A46351417F17F2129FA35441C211E613AA6351417DBFA2B39DA35441713D0A77AB635141CDCCCC5C9DA354414F11D8D7B163514136ECB5799BA3544195A9F824B8635141B962719C99A354417B14AE57B8635141D7A3708D99A3544148E17AE4B76351418FC2F59898A35441D32EEA5DB76351414AECB9BE98A354418FC2F538B46351410AD7A3A099A35441E1920A93B2635141A7B841289AA354418FC2F538AD6351410AD7A3E09BA35441DA049467AC635141785851249CA35441A4703DDAA8635141A4703D4A9DA35441E17A14BEA4635141000000209EA35441C159A754A363514198E96C5F9EA35441B81E856B9D6351418FC2F5689FA35441D577610F99635141B401DA38A0A35441EC51B8DE9663514114AE47A1A0A35441F6285C0F90635141AE47E10AA2A3544128601C888E6351417C093671A2A354410000003089635141713D0AD7A3A354411F85EB21806351417B14AE37A6A35441A749BE2A7D6351411263BC2EA7A354415A43ED0975635141016B34D9A9A35441070BE5EC6E635141CFBDAA5EACA3544148E17A5469635141333333D3AEA354410AD7A3C068635141C3F528DCADA35441E7EB076469635141BB9F3091ADA35441201D28A46C635141DAE96013ACA35441B81E85AB6C63514100000010ACA3544185FF5F4F72635141F4DC63A9A9A3544152B81EB572635141E17A147EA9A354417B14AEA777635141295C8FD2A7A35441F0EAEC87786351415BBFCF87A7A354419A9999F97E6351411F85EB61A5A354417347E2158263514134A1C98AA4A35441666666C68763514114AE4701A3A354417613027D8C635141CC3EF4D3A1A35441666666B68E6351415C8FC245A1A35441054B1847916351417A3989B9A0A354413D0AD75395635141C3F528DC9FA3544184BDC9E598635141995B8A389FA35441E17A146E9B63514148E17AC49EA354419109190D9E63514117C2035D9EA354410AD7A370A0635141EC51B8FE9DA35441230E3E94A363514199098E609DA3544100000000A56351418FC2F5189DA35441A6A28CA3A8635141FBCAE2649CA35441295C8F52AC635141C3F5283C9BA354416AC8CFD8B063514103FE59A199A354415C8FC265B1635141F6285C6F99A3544190790DB0B663514109B3DC0998A3544166666686B763514114AE47D197A354414E02C2B0BB6351410A99520F97A354414E2E7E5FC1635141B969B90696A354419F9E299CC1635141896FB0FB95A35441B1AE6196C363514155A807DB95A35441187DE03EC46351414FC428D095A35441C3F92F83C4635141E20C55BD95A3544152B81EA5C96351413333335394A35441C717C806D96351411BC88AA98FA35441E17A14CEDB6351411F85EBD18EA35441ED5F7EBAE7635141646354398BA35441333333B3F2635141A4703DEA87A35441BC3BF614F7635141EA8A428A86A35441713D0A17F76351419A99998986A35441C1D40318F76351418A854A8986A354419EF7F5AE0264514188A7CDDB82A35441F04AB72304645141E4E53C6082A35441000000D00C64514152B81E757FA35441E78BBB751364514196A71E4C7DA35441666666461564514152B81EB57CA35441CDCCCCCC18645141C3F528AC7BA35441C310F7D11A6451410BB507E67AA35441D0A7007623645141A9761D9277A354415E7DA32629645141CC6FC35075A354410AD7A3E029645141713D0A0775A354418EA1CE1D2A645141FD13BDDD74A354418FC2F5682C64514114AE475173A354416C1FB46D3864514125B5AB346EA354419A99994942645141333333036AA35441565FFEC943645141C7E6976D69A35441EC51B80E4C6451415C8FC23566A354417BBF724050645141B33975CD64A354416D6894DC546451418972734163A354413D0AD7635B6451410AD7A31061A3544193B5FED15B645141511292C560A35441EC51B8CE5D645141AE47E16A5FA35441746E47B963645141955246555DA35441666666A6686451418FC2F5985BA35441FF5184E06C6451415A44F5845AA35441B81E85CB716451413D0AD74359A35441AF4373B077645141AFB5750958A35441333333C379645141AE47E19A57A354413948866881645141C3A1D68A56A35441A4703DBA8364514185EB513856A354419A9999098B645141000000A055A354419729FB8E8D645141BCDE09A855A354410AD7A3408F645141D7A370AD55A3544108721484916451411155364656A35441904D72FB9364514180DBACEC56A35441713D0A579564514185EB514857A35441EC51B89E946451418FC2F5B853A35441B81E852B8A6451410AD7A35051A3544114AE472187645141F6285CEF50A354419A9999E9816451418FC2F5B850A3544114AE47E1816451415C8FC2B551A3544152B81E45766451416666667653A35441AE47E1FA69645141F6285C5F56A3544152B81E2556645141AE47E18A5DA35441E17A148E4864514185EB51D861A3544114AE47A14864514114AE47E162A35441A4703D8A3864514148E17A4469A3544114AE47D1216451413D0AD76372A3544152B81E551A645141666666E674A3544185EB51E80E645141F6285CDF77A354415C8FC2250B64514185EB514879A35441B81E858B016451410AD7A3707CA354410AD7A330FF635141666666367DA35441AE47E1AAF063514148E17A4481A354417B14AE17CD6351410AD7A3F08BA3544100000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA354415FC874459963514147F49D679AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA35441E91C4F088163514178079B1BA0A354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA3544100000010336351417B14AE27C2A35441B81E85BB2F63514114AE4721C4A354417C87D5B62A63514110F9D91AC7A354415C8FC205256351419A9999D9CAA354417B9CAB2C1B6351418B062351D0A354415BB3171714635141A9375B9ED5A3544174CF3AE911635141D1E46476D7A35441713D0A070B635141CDCCCCBCDDA35441C3F528CC0463514148E17A54E2A3544185EB51880463514152B81E85E2A354418FC2F528FB625141CDCCCC3CE9A3544185EB51B8F1625141B81E851BF0A3544152B81EF5EC6251410AD7A380F3A354411F85EBC1E7625141CDCCCC6CF7A3544133333363E3625141333333B3FAA35441A09E44EADD625141A759E04BFEA3544100000090DB6251417B14AED7FFA3544118B87A88D9625141F1790B5B01A454415C8FC2B5D7625141713D0AB702A4544152B81EE5D2625141D7A370FD05A4544114AE4751CC625141C3F528DC0AA454413D0AD7D3BF625141EC51B87E14A45441E17A144EB56251419A9999791CA4544114AE4701B462514185EB51A81EA454415C8FC205AC6251415C8FC23525A4544148E17A24A6625141C3F5286C2AA4544166666616A3625141E17A146E2DA4544185EB51D89D625141AE47E1EA32A454410AD7A3109962514152B81ED537A4544148E17A449762514152B81E9539A45441C3F5282C95625141EC51B8DE3BA45441B81E858B896251413333333348A45441295C8F4279625141B81E853B59A45441EC51B8EE67625141EC51B8CE6BA4544185EB51F8666251413D0AD7E36AA454411F85EB615F625141E17A14EE73A454410AD7A3F058625141F6285C4F7BA45441295C8FC252625141EC51B8BE81A45441D3663FD7516251419B53CDC282A45441EC51B8DE4C62514114AE474188A454417B14AE97486251417B14AE778CA454410AD7A390466251411F85EB618EA454416666669645625141E17A144E8FA45441666666E63F6251416666660694A4544152B81EF53B625141AE47E1CA97A454410AD7A3A03A625141B81E854B9AA454416666660634625141C3F5287C9FA454415C8FC2E5296251411F85EB31A6A45441713D0AF72762514114AE4771A7A4544148E17AC42062514148E17AC4ABA4544148E17A441A6251419A999909B0A45441713D0AB7156251410AD7A350B3A454417B14AE77106251411F85EB31B7A45441295C8F120A62514114AE4721BCA45441AE47E10A0262514185EB51B8C2A454417B14AE37FB615141C3F5282CC9A45441713D0A07F46151411F85EB21D0A4544114AE4721EB615141295C8FA2D9A45441713D0AC7E46151410AD7A380E0A45441000000F0DF61514152B81EE5E5A454410AD7A3C0D6615141713D0AD7EFA454417B14AE37D0615141A4703DDAF7A45441D7A370ADC8615141EC51B8AE01A55441713D0A07C3615141295C8F520AA55441C3F528CCBE6151418FC2F5B810A5544133333373B9615141295C8F721AA5544166666616B56151413D0AD7A322A5544185EB51F8AA615141713D0AF735A55441F6285C6FA7615141333333B33DA55441E17A14DEA4615141B81E855B44A55441D7A370CDA2615141CDCCCC5C4AA55441A4703D8AA16151419A9999694BA5544114AE47F19F6151413D0AD7E351A5544114AE47119F6151415C8FC26558A55441EC51B87E9E61514152B81ED55BA554413D0AD7F39D61514114AE470160A5544114AE47219E615141CDCCCCBC64A554418FC2F5A89D61514152B81E5569A55441026FD68B9D6151417FDC40E56AA55441A4703D7A9D615141713D0AD76BA55441E17A146E9D61514185EB51A86CA55441AE47E16A9C615141D7A370CD76A554411F85EBF19A615141E17A141E84A554419A9999C9996151417B14AE078DA554415C8FC2159A61514148E17A0494A55441A4703D2A99615141295C8F029FA5544148E17AE498615141A4703DEAA1A5544148E17A4498615141CDCCCC9CA8A55441713D0AF796615141A4703D0AB5A554415C8FC225966151413D0AD793BEA55441000000909561514148E17AD4C3A55441C3F5287C956151413D0AD7D3C4A554419A9999C994615141AE47E1BACDA5544152B81E259361514100000050E0A5544185EB5108926151418FC2F538EDA55441F6285C8F91615141E17A14CEF1A55441CDCCCC5C916151410AD7A360F5A5544114AE47A19161514148E17A94F8A55441AE47E19A926151417B14AEB7FAA55441A4703D8A92615141C3F528ACFBA55441AE47E1CA90615141B81E855B00A65441E17A149E8D615141000000A005A65441A4703DFA8B61514185EB515806A65441C3F528FC8A6151413333337306A65441333333038A615141CDCCCC1C0BA65441333333438D615141C3F5284C08A65441A4703D6A90615141B81E85EB07A65441195EC15390615141B67439E908A654410D8A894C91615141A3BFC0EE08A654412B2021B993615141713A8BFC08A65441439323CC93615141DC91FD1008A65441781934959561514161953FC2FCA554416FBFF6389461514141BC4DA7FBA554411295BA4E946151418CDF2D87F9A5544156ED602895615141AC291C4CF6A554415C8FC2859761514114AE4751E5A55441A4703DFA98615141A4703D3AD7A55441CDCCCC1C9961514100000040D4A55441A4703D8A996151418FC2F518CFA55441333333B39A615141EC51B85EC4A554419A9999699B6151417B14AE27B9A55441713D0A279C615141295C8F72AFA554413D0AD7039D615141295C8F02A5A55441713D0A579F615141333333038AA55441A4703D1AA16151413D0AD7D37CA5544148E17AF4A1615141C3F5286C76A55441C3F5287CA161514152B81EC571A55441E17A146EA2615141713D0AA76AA5544100000070A3615141EC51B81E5EA554411F85EB51A461514114AE472157A554415C8FC225A66151411F85EB514FA55441A4703D7AA86151413333339347A55441E17A148EAA6151417B14AEC741A554410AD7A3D0AB6151411F85EBA13EA55441713D0A07AF61514148E17A0438A55441B81E859BB1615141B81E851B33A554415C8FC2B5B66151417B14AE0729A55441CDCCCC5CBA615141AE47E19A22A5544166666666BF6151418FC2F51819A55441C3F5286CC2615141F6285C3F14A554413D0AD723C6615141333333130EA55441C3F5287CCA6151416666666607A55441713D0A17D0615141713D0A87FFA454410AD7A3E0D4615141AE47E16AF9A45441B81E859BDA615141D7A3706DF2A454415C8FC205E06151411F85EB91ECA4544148E17A54E7615141295C8FB2E4A4544148E17AD4EF61514114AE47B1DBA45441E17A148EF46151417B14AEC7D6A4544133333363F76151411F85EBB1D3A45441AE47E14AFB615141A4703DCACFA45441295C8F12FF615141295C8F12CCA45441C3F5283C0C625141C3F5285CC0A45441B81E854B1462514100000030BAA454417B41533B1C625141735EE995B4A454413D0AD7B31D625141C3F5288CB3A4544148E17A2426625141F6285C0FAEA45441B144718F286251410EDD6A8BACA454419A9999792E625141666666D6A8A4544165D61E7B326251412DE7B31FA6A45441EC51B89E366251411F85EB51A3A4544197D886B03B62514151D8858B9FA45441295C8F323E625141D7A370AD9DA454416B10E2554262514145DE0DC799A454410000008042625141F6285C9F99A45441F0B2155346625141C3BCE42796A454415E8552504A62514166685B7992A45441E8746E504B6251418724697791A45441713D0A674B6251410AD7A36091A454415C8FC2B54A625141EC51B87E90A45441B78773974C6251417E997D7C8EA454418FC2F5984C625141AE47E17A8EA45441E565289D4C6251411BF6FB7B8EA45441B81E85CB4D625141B81E85CB8EA45441542C0A384E6251416FB785578EA454419AEF5E554F625141A78C87268DA45441F942104C526251412B738EFB89A454414F68467854625141AFEB3A0987A45441F6285CFF5562514152B81EF584A454419A53F2B75662514127A3298D84A454414A0A4D98576251416BF8CE0E84A454418FC2F50858625141F6285CCF83A45441AE47E1AA5A625141F6285C7F81A45441CE663C035B6251419690552281A4544193F96C59606251414C2BF0837BA45441B81E859B636251415C8FC21578A45441AC7E1D6F64625141CB72651977A454415C8FC2856B62514152B81EA56EA45441F08C15DD7062514109349A2269A45441BE49F63C7662514120C4429763A454419A9999897C6251417B14AE175DA45441A58B05FC8262514132F0561456A45441F9E4BA158B625141237E8B444DA454415C8FC2058D6251418FC2F5284BA45441295C8F3291625141A4703DBA46A45441BDE84653936251419F33EF4944A4544152B81ED59362514152B81EB543A45441807A776C94625141B82B8B1743A45441712F1B089C6251412E9749263BA4544114AE47E19E62514148E17A0438A45441713D0A17A2625141D7A370AD34A4544119D8D307A3625141A9B46ECE33A45441D7A370EDA9625141B81E855B2DA454411C19355BAA6251416E61A9ED2CA454411F85EBF1AC625141666666562AA454418304BB07AE62514104C09D7A29A45441258F0A4FB262514111BA151826A45441C1D12788B462514185ABEC3824A45441713D0AD7B66251410000004022A45441239745D0BA625141DB7AFCEE1EA454418810D706BB6251417F030BC11EA45441713D0AB7BC6251418FC2F5281DA454418FE027D2BC625141648F96131DA45441B81E85DBC062514152B81EE519A454412C4DE530C3625141E1FA87BD17A4544185EB5108C5625141A4703D0A16A45441D968D02DC662514137FBC33C15A454419A999999C7625141E17A143E14A454413D0AD7B3CA625141713D0AB711A454412A4EB9EECA6251414470798711A45441F6285CBFCE625141295C8F720EA4544169D11466D06251411CE1BE3D0DA45441C3F528ECD26251415C8FC2650BA4544112E479E0D3625141550D46830AA454410AD7A330D46251418FC2F5380AA4544195698D29D66251417D354FB808A45441333333E3D6625141AE47E12A08A454417170AF02D9625141FF89389F06A45441C3F528CCDC625141D7A370DD03A454411BAE5F15E06251415DDD716901A454415C8FC295E06251419A99990901A45441FC1FFDB3E3625141741C49D1FEA35441ED7BB740EB625141D483FC67F9A35441CCDD9F1EF06251410BEC54D5F5A3544152B81E05F3625141D7A370ADF3A354413C212A93F462514123C30790F2A3544185289BFBFC62514142AB5B88ECA3544187DB61A105635141624FB547E6A354419FE78DB10C6351419779A514E1A35441000000200E63514166666606E0A35441DFB6FED212635141CF9891F9DCA35441295C8F22156351419A999979DBA354414FF3A7F31A6351410ED66241D7A354411F85EB0121635141CDCCCCDCD2A35441679EDAB2216351416685A25CD2A3544131297CBB27635141BB45C1FDCDA3544185EB51E8286351413D0AD723CDA35441CC4A6C862F63514147757603C9A35441AE47E1DA346351410AD7A3B0C5A354410AD7A300386351413D0AD7D3C3A354412861A6C53D63514126C79BAAC0A354413D0AD7633F6351417B14AEC7BFA35441AD85781146635141BA67C098BCA35441666666164963514185EB5128BBA354413E8F13A3556351412251EACCB5A354410000007058635141AE47E19AB4A35441D5D8B3BF596351410B08CE18B4A35441B59F733B60635141E4FDB295B1A354415C8FC2556263514152B81EC5B0A354413F07B12A636351411D2141DEAFA3544148E17A3464635141E17A14BEAEA354418A84824666635141192FA7E0ADA3544114AE4701686351417B14AE27ADA35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565433 - 258905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+0106000000010000000103000000010000003801000000000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA3544100000010336351417B14AE27C2A35441B81E85BB2F63514114AE4721C4A35441295C8FE22A635141E17A14FEC6A354415C8FC205256351419A9999D9CAA354417D9CAB2C1B6351418D062351D0A354415EB3171714635141AB375B9ED5A3544179CF3AE911635141CFE46476D7A35441713D0A070B635141CDCCCCBCDDA35441C3F528CC0463514148E17A54E2A3544185EB51880463514152B81E85E2A354418FC2F528FB625141CDCCCC3CE9A3544185EB51B8F1625141B81E851BF0A3544152B81EF5EC6251410AD7A380F3A354411F85EBC1E7625141CDCCCC6CF7A3544133333363E3625141333333B3FAA3544100000090DB6251417B14AED7FFA354415C8FC2B5D7625141713D0AB702A4544152B81EE5D2625141D7A370FD05A4544114AE4751CC625141C3F528DC0AA454413D0AD7D3BF625141EC51B87E14A45441E17A144EB56251419A9999791CA4544114AE4701B462514185EB51A81EA45441E17A141EB06251410AD7A3D021A454415C8FC205AC6251415C8FC23525A4544148E17A24A6625141C3F5286C2AA4544166666616A3625141E17A146E2DA4544185EB51D89D625141AE47E1EA32A454410AD7A3109962514152B81ED537A4544148E17A449762514152B81E9539A45441C3F5282C95625141EC51B8DE3BA45441B81E858B896251413333333348A45441295C8F4279625141B81E853B59A45441EC51B8EE67625141EC51B8CE6BA4544185EB51F8666251413D0AD7E36AA454411F85EB615F625141E17A14EE73A454410AD7A3F058625141F6285C4F7BA45441295C8FC252625141EC51B8BE81A45441EC51B8DE4C62514114AE474188A454417B14AE97486251417B14AE778CA454410AD7A390466251411F85EB618EA454416666669645625141E17A144E8FA45441666666E63F6251416666660694A4544152B81EF53B625141AE47E1CA97A454410AD7A3A03A625141B81E854B9AA454416666660634625141C3F5287C9FA454415C8FC2E5296251411F85EB31A6A45441713D0AF72762514114AE4771A7A4544148E17AC42062514148E17AC4ABA4544148E17A441A6251419A999909B0A45441713D0AB7156251410AD7A350B3A454417B14AE77106251411F85EB31B7A45441295C8F120A62514114AE4721BCA45441D7A370BD086251418FC2F528BDA45441AE47E10A0262514185EB51B8C2A454417B14AE37FB615141C3F5282CC9A45441713D0A07F46151411F85EB21D0A4544114AE4721EB615141295C8FA2D9A45441713D0AC7E46151410AD7A380E0A45441000000F0DF61514152B81EE5E5A454410AD7A3C0D6615141713D0AD7EFA454419A9999E9D061514100000000F7A454417B14AE37D0615141A4703DDAF7A45441D7A370ADC8615141EC51B8AE01A55441713D0A07C3615141295C8F520AA55441C3F528CCBE6151418FC2F5B810A5544133333373B9615141295C8F721AA5544166666616B56151413D0AD7A322A5544152B81EC5AE615141C3F528AC2EA5544185EB51F8AA615141713D0AF735A55441F6285C6FA7615141333333B33DA55441E17A14DEA4615141B81E855B44A55441D7A370CDA2615141CDCCCC5C4AA55441A4703D8AA16151419A9999694BA5544114AE47F19F6151413D0AD7E351A5544114AE47119F6151415C8FC26558A55441EC51B87E9E61514152B81ED55BA554413D0AD7F39D61514114AE470160A5544114AE47219E615141CDCCCCBC64A554418FC2F5A89D61514152B81E5569A55441A4703D7A9D615141713D0AD76BA55441E17A146E9D61514185EB51A86CA55441AE47E16A9C615141D7A370CD76A554411F85EBF19A615141E17A141E84A554419A9999C9996151417B14AE078DA554415C8FC2159A61514148E17A0494A55441A4703D2A99615141295C8F029FA5544148E17AE498615141A4703DEAA1A5544148E17A4498615141CDCCCC9CA8A55441713D0AF796615141A4703D0AB5A554415C8FC225966151413D0AD793BEA55441000000909561514148E17AD4C3A55441C3F5287C956151413D0AD7D3C4A554419A9999C994615141AE47E1BACDA5544152B81E259361514100000050E0A5544185EB5108926151418FC2F538EDA55441F6285C8F91615141E17A14CEF1A55441CDCCCC5C916151410AD7A360F5A5544114AE47A19161514148E17A94F8A55441AE47E19A926151417B14AEB7FAA55441A4703D8A92615141C3F528ACFBA55441AE47E1CA90615141B81E855B00A65441E17A149E8D615141000000A005A65441A4703DFA8B61514185EB515806A65441C3F528FC8A6151413333337306A65441333333038A615141CDCCCC1C0BA65441C3F5283C8B6151413D0AD7130AA65441333333438D615141C3F5284C08A65441A4703D6A90615141B81E85EB07A654411D5EC15390615141B27439E908A65441282021B9936151416E3A8BFC08A65441439323CC93615141DC91FD1008A65441781934959561514161953FC2FCA554416FBFF6389461514141BC4DA7FBA554411295BA4E946151418CDF2D87F9A5544156ED602895615141AC291C4CF6A554415C8FC2859761514114AE4751E5A55441A4703DFA98615141A4703D3AD7A55441CDCCCC1C9961514100000040D4A55441A4703D8A996151418FC2F518CFA55441333333B39A615141EC51B85EC4A554419A9999699B6151417B14AE27B9A55441713D0A279C615141295C8F72AFA554413D0AD7039D615141295C8F02A5A55441AE47E15A9E615141E17A149E95A55441713D0A579F615141333333038AA55441A4703D1AA16151413D0AD7D37CA5544148E17AF4A1615141C3F5286C76A55441C3F5287CA161514152B81EC571A55441E17A146EA2615141713D0AA76AA5544100000070A3615141EC51B81E5EA554411F85EB51A461514114AE472157A554415C8FC225A66151411F85EB514FA55441A4703D7AA86151413333339347A55441E17A148EAA6151417B14AEC741A554410AD7A3D0AB6151411F85EBA13EA55441713D0A07AF61514148E17A0438A55441B81E859BB1615141B81E851B33A554415C8FC2B5B66151417B14AE0729A55441CDCCCC5CBA615141AE47E19A22A5544166666666BF6151418FC2F51819A55441C3F5286CC2615141F6285C3F14A554413D0AD723C6615141333333130EA55441C3F5287CCA6151416666666607A55441713D0A17D0615141713D0A87FFA454410AD7A3E0D4615141AE47E16AF9A45441B81E859BDA615141D7A3706DF2A454415C8FC205E06151411F85EB91ECA4544148E17A54E7615141295C8FB2E4A4544148E17AD4EF61514114AE47B1DBA45441E17A148EF46151417B14AEC7D6A4544133333363F76151411F85EBB1D3A45441AE47E14AFB615141A4703DCACFA45441295C8F12FF615141295C8F12CCA45441C3F5283C0C625141C3F5285CC0A45441B81E854B1462514100000030BAA454413D0AD7B31D625141C3F5288CB3A4544148E17A2426625141F6285C0FAEA454419A9999792E625141666666D6A8A45441EC51B89E366251411F85EB51A3A45441295C8F323E625141D7A370AD9DA454410000008042625141F6285C9F99A454418FC2F5A8496251411F85EB2193A45441713D0A674B6251410AD7A36091A454415C8FC2B54A625141EC51B87E90A454418FC2F5984C625141AE47E17A8EA45441B81E85CB4D625141B81E85CB8EA4544148E17A5452625141295C8FF289A45441F6285CFF5562514152B81EF584A454418FC2F50858625141F6285CCF83A45441AE47E1AA5A625141F6285C7F81A45441B81E859B636251415C8FC21578A454415C8FC2856B62514152B81EA56EA454419A9999897C6251417B14AE175DA454415C8FC2058D6251418FC2F5284BA45441295C8F3291625141A4703DBA46A4544152B81ED59362514152B81EB543A45441AE47E1AA9B625141CDCCCC8C3BA4544114AE47E19E62514148E17A0438A45441713D0A17A2625141D7A370AD34A4544152B81E75A66251411F85EBA130A45441D7A370EDA9625141B81E855B2DA454411F85EBF1AC625141666666562AA45441000000C0B2625141EC51B8BE25A45441713D0AD7B66251410000004022A4544133333303BB62514148E17AC41EA45441713D0AB7BC6251418FC2F5281DA45441B81E85DBC062514152B81EE519A4544185EB5108C5625141A4703D0A16A454419A999999C7625141E17A143E14A454413D0AD7B3CA625141713D0AB711A45441F6285CBFCE625141295C8F720EA45441C3F528ECD26251415C8FC2650BA454410AD7A330D46251418FC2F5380AA45441333333E3D6625141AE47E12A08A45441C3F528CCDC625141D7A370DD03A454415C8FC295E06251419A99990901A454410AD7A310E962514100000000FBA3544148E17A44EE6251415C8FC235F7A3544152B81E05F3625141D7A370ADF3A3544185EB51C8FC625141D7A370ADECA354419A99994906635141E17A14CEE5A35441000000200E63514166666606E0A35441295C8F22156351419A999979DBA354411F85EB0121635141CDCCCCDCD2A3544185EB51E8286351413D0AD723CDA35441AE47E1DA346351410AD7A3B0C5A354410AD7A300386351413D0AD7D3C3A354413D0AD7633F6351417B14AEC7BFA35441666666164963514185EB5128BBA354410000007058635141AE47E19AB4A354415C8FC2556263514152B81EC5B0A3544148E17A3464635141E17A14BEAEA3544114AE4701686351417B14AE27ADA3544185EB51286963514133333373AFA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441E17A143E91635141713D0AF7A2A354415C8FC2E59B63514185EB51D8A0A35441A4703D0AA3635141C3F5286C9FA35441713D0A77AB635141CDCCCC5C9DA354417B14AE57B8635141D7A3708D99A3544148E17AE4B76351418FC2F59898A354418FC2F538B46351410AD7A3A099A354418FC2F538AD6351410AD7A3E09BA35441A4703DDAA8635141A4703D4A9DA35441E17A14BEA4635141000000209EA35441B81E856B9D6351418FC2F5689FA35441EC51B8DE9663514114AE47A1A0A35441F6285C0F90635141AE47E10AA2A354410000003089635141713D0AD7A3A354411F85EB21806351417B14AE37A6A35441713D0A4775635141000000C0A9A3544148E17AF46D63514152B81EC5ACA3544148E17A5469635141333333D3AEA354410AD7A3C068635141C3F528DCADA35441B81E85AB6C63514100000010ACA3544152B81EB572635141E17A147EA9A354417B14AEA777635141295C8FD2A7A354419A9999F97E6351411F85EB61A5A35441666666C68763514114AE4701A3A35441666666B68E6351415C8FC245A1A354413D0AD75395635141C3F528DC9FA35441E17A146E9B63514148E17AC49EA354410AD7A370A0635141EC51B8FE9DA3544100000000A56351418FC2F5189DA354418FC2F5A8A86351413D0AD7639CA35441295C8F52AC635141C3F5283C9BA354415C8FC265B1635141F6285C6F99A3544166666686B763514114AE47D197A354419F9E299CC1635141896FB0FB95A35441187DE03EC46351414FC428D095A3544152B81EA5C96351413333335394A35441E17A14CEDB6351411F85EBD18EA35441333333B3F2635141A4703DEA87A354410AD7A3D0F36351413D0AD79387A35441713D0A17F76351419A99998986A35441AE47E19AF8635141EC51B80E86A354410AD7A31003645141CDCCCCBC82A35441000000D00C64514152B81E757FA35441666666461564514152B81EB57CA35441CDCCCCCC18645141C3F528AC7BA354410AD7A3D01F645141C3F528FC78A354415C8FC225236451411F85EBB177A354410AD7A3E029645141713D0A0775A354418FC2F5682C64514114AE475173A354419A99994942645141333333036AA35441EC51B80E4C6451415C8FC23566A354413D0AD7635B6451410AD7A31061A35441EC51B8CE5D645141AE47E16A5FA35441666666A6686451418FC2F5985BA35441B81E85CB716451413D0AD74359A35441333333C379645141AE47E19A57A35441A4703DBA8364514185EB513856A354419A9999098B645141000000A055A354410AD7A3408F645141D7A370AD55A35441713D0A579564514185EB514857A35441EC51B89E946451418FC2F5B853A35441B81E852B8A6451410AD7A35051A3544114AE472187645141F6285CEF50A354419A9999E9816451418FC2F5B850A3544114AE47E1816451415C8FC2B551A3544152B81E45766451416666667653A35441AE47E1FA69645141F6285C5F56A3544152B81E2556645141AE47E18A5DA35441E17A148E4864514185EB51D861A3544114AE47A14864514114AE47E162A35441A4703D8A3864514148E17A4469A3544114AE47D1216451413D0AD76372A3544152B81E551A645141666666E674A3544185EB51E80E645141F6285CDF77A354415C8FC2250B64514185EB514879A35441B81E858B016451410AD7A3707CA354410AD7A330FF635141666666367DA35441AE47E1AAF063514148E17A4481A354417B14AE17CD6351410AD7A3F08BA3544100000090B563514152B81E5593A35441
+</a>
+
+<b>
+0106000000010000000103000000010000009D01000014AE4701686351417B14AE27ADA354413958661268635141BF61C549ADA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA35441C844C61A7563514111927F48ABA35441F533CEC8806351417129FE59A7A354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441CB8DF9638B6351417CB71A4EA4A35441E17A143E91635141713D0AF7A2A35441FBA1889B92635141F49082B1A2A35441DA40D7A89A635141516C6017A1A35441A4703D0AA3635141C3F5286C9FA35441E6F91B77A46351417F17F2129FA35441C211E613AA6351417DBFA2B39DA35441713D0A77AB635141CDCCCC5C9DA354414F11D8D7B163514136ECB5799BA3544195A9F824B8635141B962719C99A354417B14AE57B8635141D7A3708D99A3544148E17AE4B76351418FC2F59898A35441D32EEA5DB76351414AECB9BE98A354418FC2F538B46351410AD7A3A099A35441E1920A93B2635141A7B841289AA354418FC2F538AD6351410AD7A3E09BA35441DA049467AC635141785851249CA35441A4703DDAA8635141A4703D4A9DA35441E17A14BEA4635141000000209EA35441C159A754A363514198E96C5F9EA35441B81E856B9D6351418FC2F5689FA35441D577610F99635141B401DA38A0A35441EC51B8DE9663514114AE47A1A0A35441F6285C0F90635141AE47E10AA2A3544128601C888E6351417C093671A2A354410000003089635141713D0AD7A3A354411F85EB21806351417B14AE37A6A35441A749BE2A7D6351411263BC2EA7A354415A43ED0975635141016B34D9A9A35441070BE5EC6E635141CFBDAA5EACA3544148E17A5469635141333333D3AEA354410AD7A3C068635141C3F528DCADA35441E7EB076469635141BB9F3091ADA35441201D28A46C635141DAE96013ACA35441B81E85AB6C63514100000010ACA3544185FF5F4F72635141F4DC63A9A9A3544152B81EB572635141E17A147EA9A354417B14AEA777635141295C8FD2A7A35441F0EAEC87786351415BBFCF87A7A354419A9999F97E6351411F85EB61A5A354417347E2158263514134A1C98AA4A35441666666C68763514114AE4701A3A354417613027D8C635141CC3EF4D3A1A35441666666B68E6351415C8FC245A1A35441054B1847916351417A3989B9A0A354413D0AD75395635141C3F528DC9FA3544184BDC9E598635141995B8A389FA35441E17A146E9B63514148E17AC49EA354419109190D9E63514117C2035D9EA354410AD7A370A0635141EC51B8FE9DA35441230E3E94A363514199098E609DA3544100000000A56351418FC2F5189DA35441A6A28CA3A8635141FBCAE2649CA35441295C8F52AC635141C3F5283C9BA354416AC8CFD8B063514103FE59A199A354415C8FC265B1635141F6285C6F99A3544190790DB0B663514109B3DC0998A3544166666686B763514114AE47D197A354414E02C2B0BB6351410A99520F97A354414E2E7E5FC1635141B969B90696A354419F9E299CC1635141896FB0FB95A35441B1AE6196C363514155A807DB95A35441187DE03EC46351414FC428D095A35441C3F92F83C4635141E20C55BD95A3544152B81EA5C96351413333335394A35441C717C806D96351411BC88AA98FA35441E17A14CEDB6351411F85EBD18EA35441ED5F7EBAE7635141646354398BA35441333333B3F2635141A4703DEA87A35441BC3BF614F7635141EA8A428A86A35441713D0A17F76351419A99998986A35441C1D40318F76351418A854A8986A354419EF7F5AE0264514188A7CDDB82A35441F04AB72304645141E4E53C6082A35441000000D00C64514152B81E757FA35441E78BBB751364514196A71E4C7DA35441666666461564514152B81EB57CA35441CDCCCCCC18645141C3F528AC7BA35441C310F7D11A6451410BB507E67AA35441D0A7007623645141A9761D9277A354415E7DA32629645141CC6FC35075A354410AD7A3E029645141713D0A0775A354418EA1CE1D2A645141FD13BDDD74A354418FC2F5682C64514114AE475173A354416C1FB46D3864514125B5AB346EA354419A99994942645141333333036AA35441565FFEC943645141C7E6976D69A35441EC51B80E4C6451415C8FC23566A354417BBF724050645141B33975CD64A354416D6894DC546451418972734163A354413D0AD7635B6451410AD7A31061A3544193B5FED15B645141511292C560A35441EC51B8CE5D645141AE47E16A5FA35441746E47B963645141955246555DA35441666666A6686451418FC2F5985BA35441FF5184E06C6451415A44F5845AA35441B81E85CB716451413D0AD74359A35441AF4373B077645141AFB5750958A35441333333C379645141AE47E19A57A354413948866881645141C3A1D68A56A35441A4703DBA8364514185EB513856A354419A9999098B645141000000A055A354419729FB8E8D645141BCDE09A855A354410AD7A3408F645141D7A370AD55A3544108721484916451411155364656A35441904D72FB9364514180DBACEC56A35441713D0A579564514185EB514857A35441EC51B89E946451418FC2F5B853A35441B81E852B8A6451410AD7A35051A3544114AE472187645141F6285CEF50A354419A9999E9816451418FC2F5B850A3544114AE47E1816451415C8FC2B551A3544152B81E45766451416666667653A35441AE47E1FA69645141F6285C5F56A3544152B81E2556645141AE47E18A5DA35441E17A148E4864514185EB51D861A3544114AE47A14864514114AE47E162A35441A4703D8A3864514148E17A4469A3544114AE47D1216451413D0AD76372A3544152B81E551A645141666666E674A3544185EB51E80E645141F6285CDF77A354415C8FC2250B64514185EB514879A35441B81E858B016451410AD7A3707CA354410AD7A330FF635141666666367DA35441AE47E1AAF063514148E17A4481A354417B14AE17CD6351410AD7A3F08BA3544100000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA354415FC874459963514147F49D679AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA35441E91C4F088163514178079B1BA0A354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA3544100000010336351417B14AE27C2A35441B81E85BB2F63514114AE4721C4A354417C87D5B62A63514110F9D91AC7A354415C8FC205256351419A9999D9CAA354417B9CAB2C1B6351418B062351D0A354415BB3171714635141A9375B9ED5A3544174CF3AE911635141D1E46476D7A35441713D0A070B635141CDCCCCBCDDA35441C3F528CC0463514148E17A54E2A3544185EB51880463514152B81E85E2A354418FC2F528FB625141CDCCCC3CE9A3544185EB51B8F1625141B81E851BF0A3544152B81EF5EC6251410AD7A380F3A354411F85EBC1E7625141CDCCCC6CF7A3544133333363E3625141333333B3FAA35441A09E44EADD625141A759E04BFEA3544100000090DB6251417B14AED7FFA3544118B87A88D9625141F1790B5B01A454415C8FC2B5D7625141713D0AB702A4544152B81EE5D2625141D7A370FD05A4544114AE4751CC625141C3F528DC0AA454413D0AD7D3BF625141EC51B87E14A45441E17A144EB56251419A9999791CA4544114AE4701B462514185EB51A81EA454415C8FC205AC6251415C8FC23525A4544148E17A24A6625141C3F5286C2AA4544166666616A3625141E17A146E2DA4544185EB51D89D625141AE47E1EA32A454410AD7A3109962514152B81ED537A4544148E17A449762514152B81E9539A45441C3F5282C95625141EC51B8DE3BA45441B81E858B896251413333333348A45441295C8F4279625141B81E853B59A45441EC51B8EE67625141EC51B8CE6BA4544185EB51F8666251413D0AD7E36AA454411F85EB615F625141E17A14EE73A454410AD7A3F058625141F6285C4F7BA45441295C8FC252625141EC51B8BE81A45441D3663FD7516251419B53CDC282A45441EC51B8DE4C62514114AE474188A454417B14AE97486251417B14AE778CA454410AD7A390466251411F85EB618EA454416666669645625141E17A144E8FA45441666666E63F6251416666660694A4544152B81EF53B625141AE47E1CA97A454410AD7A3A03A625141B81E854B9AA454416666660634625141C3F5287C9FA454415C8FC2E5296251411F85EB31A6A45441713D0AF72762514114AE4771A7A4544148E17AC42062514148E17AC4ABA4544148E17A441A6251419A999909B0A45441713D0AB7156251410AD7A350B3A454417B14AE77106251411F85EB31B7A45441295C8F120A62514114AE4721BCA45441AE47E10A0262514185EB51B8C2A454417B14AE37FB615141C3F5282CC9A45441713D0A07F46151411F85EB21D0A4544114AE4721EB615141295C8FA2D9A45441713D0AC7E46151410AD7A380E0A45441000000F0DF61514152B81EE5E5A454410AD7A3C0D6615141713D0AD7EFA454417B14AE37D0615141A4703DDAF7A45441D7A370ADC8615141EC51B8AE01A55441713D0A07C3615141295C8F520AA55441C3F528CCBE6151418FC2F5B810A5544133333373B9615141295C8F721AA5544166666616B56151413D0AD7A322A5544185EB51F8AA615141713D0AF735A55441F6285C6FA7615141333333B33DA55441E17A14DEA4615141B81E855B44A55441D7A370CDA2615141CDCCCC5C4AA55441A4703D8AA16151419A9999694BA5544114AE47F19F6151413D0AD7E351A5544114AE47119F6151415C8FC26558A55441EC51B87E9E61514152B81ED55BA554413D0AD7F39D61514114AE470160A5544114AE47219E615141CDCCCCBC64A554418FC2F5A89D61514152B81E5569A55441026FD68B9D6151417FDC40E56AA55441A4703D7A9D615141713D0AD76BA55441E17A146E9D61514185EB51A86CA55441AE47E16A9C615141D7A370CD76A554411F85EBF19A615141E17A141E84A554419A9999C9996151417B14AE078DA554415C8FC2159A61514148E17A0494A55441A4703D2A99615141295C8F029FA5544148E17AE498615141A4703DEAA1A5544148E17A4498615141CDCCCC9CA8A55441713D0AF796615141A4703D0AB5A554415C8FC225966151413D0AD793BEA55441000000909561514148E17AD4C3A55441C3F5287C956151413D0AD7D3C4A554419A9999C994615141AE47E1BACDA5544152B81E259361514100000050E0A5544185EB5108926151418FC2F538EDA55441F6285C8F91615141E17A14CEF1A55441CDCCCC5C916151410AD7A360F5A5544114AE47A19161514148E17A94F8A55441AE47E19A926151417B14AEB7FAA55441A4703D8A92615141C3F528ACFBA55441AE47E1CA90615141B81E855B00A65441E17A149E8D615141000000A005A65441A4703DFA8B61514185EB515806A65441C3F528FC8A6151413333337306A65441333333038A615141CDCCCC1C0BA65441333333438D615141C3F5284C08A65441A4703D6A90615141B81E85EB07A65441195EC15390615141B67439E908A654410D8A894C91615141A3BFC0EE08A654412B2021B993615141713A8BFC08A65441439323CC93615141DC91FD1008A65441781934959561514161953FC2FCA554416FBFF6389461514141BC4DA7FBA554411295BA4E946151418CDF2D87F9A5544156ED602895615141AC291C4CF6A554415C8FC2859761514114AE4751E5A55441A4703DFA98615141A4703D3AD7A55441CDCCCC1C9961514100000040D4A55441A4703D8A996151418FC2F518CFA55441333333B39A615141EC51B85EC4A554419A9999699B6151417B14AE27B9A55441713D0A279C615141295C8F72AFA554413D0AD7039D615141295C8F02A5A55441713D0A579F615141333333038AA55441A4703D1AA16151413D0AD7D37CA5544148E17AF4A1615141C3F5286C76A55441C3F5287CA161514152B81EC571A55441E17A146EA2615141713D0AA76AA5544100000070A3615141EC51B81E5EA554411F85EB51A461514114AE472157A554415C8FC225A66151411F85EB514FA55441A4703D7AA86151413333339347A55441E17A148EAA6151417B14AEC741A554410AD7A3D0AB6151411F85EBA13EA55441713D0A07AF61514148E17A0438A55441B81E859BB1615141B81E851B33A554415C8FC2B5B66151417B14AE0729A55441CDCCCC5CBA615141AE47E19A22A5544166666666BF6151418FC2F51819A55441C3F5286CC2615141F6285C3F14A554413D0AD723C6615141333333130EA55441C3F5287CCA6151416666666607A55441713D0A17D0615141713D0A87FFA454410AD7A3E0D4615141AE47E16AF9A45441B81E859BDA615141D7A3706DF2A454415C8FC205E06151411F85EB91ECA4544148E17A54E7615141295C8FB2E4A4544148E17AD4EF61514114AE47B1DBA45441E17A148EF46151417B14AEC7D6A4544133333363F76151411F85EBB1D3A45441AE47E14AFB615141A4703DCACFA45441295C8F12FF615141295C8F12CCA45441C3F5283C0C625141C3F5285CC0A45441B81E854B1462514100000030BAA454417B41533B1C625141735EE995B4A454413D0AD7B31D625141C3F5288CB3A4544148E17A2426625141F6285C0FAEA45441B144718F286251410EDD6A8BACA454419A9999792E625141666666D6A8A4544165D61E7B326251412DE7B31FA6A45441EC51B89E366251411F85EB51A3A4544197D886B03B62514151D8858B9FA45441295C8F323E625141D7A370AD9DA454416B10E2554262514145DE0DC799A454410000008042625141F6285C9F99A45441F0B2155346625141C3BCE42796A454415E8552504A62514166685B7992A45441E8746E504B6251418724697791A45441713D0A674B6251410AD7A36091A454415C8FC2B54A625141EC51B87E90A45441B78773974C6251417E997D7C8EA454418FC2F5984C625141AE47E17A8EA45441E565289D4C6251411BF6FB7B8EA45441B81E85CB4D625141B81E85CB8EA45441542C0A384E6251416FB785578EA454419AEF5E554F625141A78C87268DA45441F942104C526251412B738EFB89A454414F68467854625141AFEB3A0987A45441F6285CFF5562514152B81EF584A454419A53F2B75662514127A3298D84A454414A0A4D98576251416BF8CE0E84A454418FC2F50858625141F6285CCF83A45441AE47E1AA5A625141F6285C7F81A45441CE663C035B6251419690552281A4544193F96C59606251414C2BF0837BA45441B81E859B636251415C8FC21578A45441AC7E1D6F64625141CB72651977A454415C8FC2856B62514152B81EA56EA45441F08C15DD7062514109349A2269A45441BE49F63C7662514120C4429763A454419A9999897C6251417B14AE175DA45441A58B05FC8262514132F0561456A45441F9E4BA158B625141237E8B444DA454415C8FC2058D6251418FC2F5284BA45441295C8F3291625141A4703DBA46A45441BDE84653936251419F33EF4944A4544152B81ED59362514152B81EB543A45441807A776C94625141B82B8B1743A45441712F1B089C6251412E9749263BA4544114AE47E19E62514148E17A0438A45441713D0A17A2625141D7A370AD34A4544119D8D307A3625141A9B46ECE33A45441D7A370EDA9625141B81E855B2DA454411C19355BAA6251416E61A9ED2CA454411F85EBF1AC625141666666562AA454418304BB07AE62514104C09D7A29A45441258F0A4FB262514111BA151826A45441C1D12788B462514185ABEC3824A45441713D0AD7B66251410000004022A45441239745D0BA625141DB7AFCEE1EA454418810D706BB6251417F030BC11EA45441713D0AB7BC6251418FC2F5281DA454418FE027D2BC625141648F96131DA45441B81E85DBC062514152B81EE519A454412C4DE530C3625141E1FA87BD17A4544185EB5108C5625141A4703D0A16A45441D968D02DC662514137FBC33C15A454419A999999C7625141E17A143E14A454413D0AD7B3CA625141713D0AB711A454412A4EB9EECA6251414470798711A45441F6285CBFCE625141295C8F720EA4544169D11466D06251411CE1BE3D0DA45441C3F528ECD26251415C8FC2650BA4544112E479E0D3625141550D46830AA454410AD7A330D46251418FC2F5380AA4544195698D29D66251417D354FB808A45441333333E3D6625141AE47E12A08A454417170AF02D9625141FF89389F06A45441C3F528CCDC625141D7A370DD03A454411BAE5F15E06251415DDD716901A454415C8FC295E06251419A99990901A45441FC1FFDB3E3625141741C49D1FEA35441ED7BB740EB625141D483FC67F9A35441CCDD9F1EF06251410BEC54D5F5A3544152B81E05F3625141D7A370ADF3A354413C212A93F462514123C30790F2A3544185289BFBFC62514142AB5B88ECA3544187DB61A105635141624FB547E6A354419FE78DB10C6351419779A514E1A35441000000200E63514166666606E0A35441DFB6FED212635141CF9891F9DCA35441295C8F22156351419A999979DBA354414FF3A7F31A6351410ED66241D7A354411F85EB0121635141CDCCCCDCD2A35441679EDAB2216351416685A25CD2A3544131297CBB27635141BB45C1FDCDA3544185EB51E8286351413D0AD723CDA35441CC4A6C862F63514147757603C9A35441AE47E1DA346351410AD7A3B0C5A354410AD7A300386351413D0AD7D3C3A354412861A6C53D63514126C79BAAC0A354413D0AD7633F6351417B14AEC7BFA35441AD85781146635141BA67C098BCA35441666666164963514185EB5128BBA354413E8F13A3556351412251EACCB5A354410000007058635141AE47E19AB4A35441D5D8B3BF596351410B08CE18B4A35441B59F733B60635141E4FDB295B1A354415C8FC2556263514152B81EC5B0A354413F07B12A636351411D2141DEAFA3544148E17A3464635141E17A14BEAEA354418A84824666635141192FA7E0ADA3544114AE4701686351417B14AE27ADA35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801939 - 249255
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000006000000010300000001000000370000001F85EB118FF15041E17A14BEADB95441F6285C8F8FF1504100000080ABB9544152B81EC58FF15041713D0A67A8B954418FC2F5A891F15041EC51B84EA3B95441E17A14DE92F1504114AE47F1A1B9544148E17AB495F150418FC2F5C8A1B954410000002096F15041EC51B85E9EB954413D0AD76395F15041B81E857B9BB95441A4703DAA93F15041D7A3701D98B95441E17A140E90F1504185EB51E897B95441D7A370CD8DF150418FC2F58898B95441E17A14AE89F150413D0AD7139BB954413D0AD78385F150410AD7A3809EB95441EC51B83E82F150418FC2F508A2B954419A99993979F1504114AE47B1ACB95441666666F669F15041C3F5282CBEB95441F6285CFF68F1504166666606BFB95441333333536AF150411F85EB81BFB95441A4703D2A6BF1504148E17A74BFB95441713D0A376CF150415C8FC215C0B95441F6285C5F6DF150411F85EB81C0B95441F6285CAF6EF150410AD7A330C0B954411F85EB4171F150417B14AEB7C0B95441D7A370AD71F15041C3F528ECC2B95441E17A145E6FF1504148E17AB4C5B95441CDCCCC6C6DF1504148E17AB4C5B95441713D0A376CF150418FC2F548C5B954410AD7A3B06BF150411F85EBC1C5B95441F6285C6F68F150415C8FC2E5C6B95441EC51B81E6DF15041B81E85ABCDB95441CDCCCC8C72F1504133333303D3B954410AD7A3F07AF15041E17A142EDAB954418FC2F59883F150418FC2F5B8E4B9544148E17AB485F15041AE47E11AEAB95441713D0A7786F15041295C8FB2F0B95441AE47E19A85F15041C3F5281CF7B9544148E17A547FF150415C8FC2D500BA5441D7A370BD78F15041295C8F220EBA54418FC2F56883F150418FC2F5980ABA54413333337386F1504152B81ED507BA5441AE47E1CA89F1504114AE474100BA54419A9999798CF15041AE47E1EAF6B954417B14AE478DF15041D7A370ADF1B95441C3F5281C8DF15041F6285CDFEAB954419A99998987F1504148E17AF4DFB9544185EB517882F150411F85EBB1D7B95441AE47E14A77F15041A4703D3ACCB954419A9999A974F15041A4703DAAC7B95441A4703D3A74F15041713D0A97C2B954413333339374F150413D0AD733BEB95441D7A370DD75F150415C8FC2C5B9B95441AE47E15A78F15041295C8F02B5B95441EC51B83E7DF15041EC51B87EAFB95441EC51B8FE7DF15041A4703D2AB0B954411F85EB118FF15041E17A14BEADB9544101030000000100000023000000CDCCCCDCABF15041333333D35AB8544152B81E85A5F1504152B81EE54FB854418FC2F518A5F15041B81E854B4FB854411F85EBE18AF15041B81E854B67B85441AE47E1EA7AF15041CDCCCCBC79B854417B14AE477AF1504148E17A847AB854413D0AD7F36BF15041EC51B81E8DB85441A4703D3A5EF150410AD7A3F09EB85441A4703D3A60F150419A9999999EB854419A9999C964F15041000000609CB854415C8FC2256DF1504148E17A8499B85441AE47E12A77F15041713D0A7796B85441AE47E12A7EF1504148E17AD48CB85441EC51B86E7FF15041713D0A178BB85441D7A370BD84F150418FC2F5C883B8544114AE475190F1504114AE473175B854418FC2F53892F150413D0AD7D372B85441CDCCCCCC91F150417B14AEA771B854410AD7A35095F150417B14AEB76DB854418FC2F5F895F15041C3F5280C6BB854418FC2F50898F150417B14AE7768B85441CDCCCCEC98F150417B14AE6766B854418FC2F5189AF15041C3F528CC65B854410AD7A3A099F15041C3F5283C62B854418FC2F5B899F150417B14AED75FB854410AD7A3209BF150417B14AEE75EB854410AD7A3009DF150413D0AD7235FB854418FC2F5E89FF150413D0AD7E35FB8544152B81E15A1F15041C3F528CC5FB85441CDCCCCDCA2F150410000001061B85441CDCCCCECA4F150417B14AE175FB85441CDCCCC4CA5F150417B14AEA75FB85441C3F5281CA6F15041666666D65EB854410AD7A3D0ABF15041000000605CB85441CDCCCCDCABF15041333333D35AB8544101030000000100000041000000AE47E13A8BF150419A9999A973B9544148E17AF48DF15041B81E855B78B9544185EB513890F15041AE47E19A80B95441D7A3706D90F150410AD7A30086B954413D0AD7738FF150419A9999898CB95441295C8FA28DF15041A4703DEA91B954418FC2F5088FF150417B14AE7791B954418FC2F54891F150417B14AE3792B954410AD7A3F091F150410000004093B954410AD7A36097F150410000006091B9544152B81E3599F150413D0AD76390B95441CDCCCC0C97F150410000004090B9544152B81E6596F150413D0AD7838EB954418FC2F5B896F15041C3F5286C8BB954418FC2F54897F150413D0AD74389B954418FC2F5D897F15041C3F528DC87B954418FC2F55899F15041000000B086B954418FC2F5D89AF150417B14AE3786B95441CDCCCCFC9DF150413D0AD77386B95441CDCCCCEC9EF15041C3F5283C85B954410AD7A3E09EF15041C3F528EC83B954410AD7A3F09DF15041C3F5283C82B9544152B81EC59CF15041C3F5288C80B9544152B81E559AF150413D0AD7637EB9544152B81E9599F150413D0AD7B37CB95441CDCCCC9C97F150410000004072B95441CDCCCC3C97F15041C3F5282C71B95441CDCCCCFC94F150413D0AD7536DB954418FC2F52893F150417B14AE8769B95441C3F528EC91F15041AE47E1CA67B9544114AE470189F150411F85EB0162B954415C8FC26585F1504152B81ED55FB9544152B81EB577F1504114AE477156B9544148E17A7457F150411F85EBA142B95441EC51B8DE51F150415C8FC2153FB954415C8FC2D54DF150410AD7A3C03BB9544152B81E154BF15041EC51B8BE37B954417B14AE173CF150417B14AE371DB95441F6285C0F3AF150410AD7A30016B954410AD7A3B039F15041666666760EB954413D0AD7533BF150410000001009B9544152B81E153FF150413D0AD7B304B95441E17A142E44F15041EC51B8AE00B95441B81E852B49F15041295C8F42FDB85441CDCCCC0C53F150417B14AE57F7B854419A9999F952F150415C8FC275F6B854410AD7A3804DF1504185EB5148F4B85441EC51B8DE4DF15041AE47E15AF3B8544152B81E554BF1504152B81E95F0B85441C3F528BC36F15041F6285C5FFFB85441333333C332F150418FC2F53803B954415C8FC24532F1504185EB511804B95441AE47E1BA30F1504152B81ED506B95441295C8FB22FF150411F85EB6109B95441CDCCCC1C30F1504114AE47F110B95441F6285C0F32F1504152B81EC51AB954417B14AE2733F15041295C8F7220B954418FC2F5F83EF150410AD7A3B035B954411F85EB3144F150413D0AD7133FB95441333333D344F15041B81E85DB3FB954411F85EB6168F150419A9999D956B95441295C8FB279F15041C3F5280C62B95441EC51B8AE82F15041AE47E16A69B95441C3F5280C88F150419A9999696FB95441AE47E13A8BF150419A9999A973B954410103000000010000002E000000B81E852B81F150415C8FC26595B85441E17A148E76F150411F85EBB197B8544114AE47716DF15041713D0A779AB854419A99992965F15041A4703D4A9DB85441A4703D8A60F150411F85EB919FB85441666666465EF15041295C8FF29FB85441000000505DF15041B81E85DB9FB85441000000905AF150417B14AE87A3B85441CDCCCCAC57F15041295C8FE2A9B854419A9999D956F150410AD7A370AFB854418FC2F53857F1504133333323B2B85441C3F5289C5EF1504133333323BAB85441D7A3703D62F15041EC51B85EBFB85441B81E851B65F1504114AE47E1C4B854415C8FC20566F1504185EB5178C9B85441C3F5287C66F15041AE47E1DAD0B854413D0AD70365F150418FC2F528D8B85441AE47E10A62F15041000000E0DEB854417B14AE575DF150418FC2F5E8E5B85441AE47E18A58F15041713D0A27EBB85441EC51B8DE4DF15041AE47E15AF3B85441E17A146E5DF150419A999989F9B85441C3F5285C5EF1504185EB51E8F9B85441CDCCCC2C60F15041F6285CBFFAB854415C8FC26570F150413333334302B95441333333A372F15041D7A3701DFDB85441713D0AF772F1504100000030F9B85441E17A149E67F15041000000C0F2B85441AE47E1DA66F1504114AE4701F1B854416666666667F15041713D0A67EDB8544152B81E2569F150411F85EB41E9B85441B81E85FB6BF15041CDCCCC3CE4B8544148E17A246DF15041AE47E17AE4B8544148E17A446FF15041333333F3DFB854413D0AD70372F15041F6285C7FDAB85441B81E858B73F150413D0AD7D3D6B85441295C8F9272F15041CDCCCCBCD5B85441295C8FD272F15041C3F5281CCAB854411F85EB9171F150415C8FC2B5C4B85441C3F5280C6EF1504100000020BBB85441666666966BF15041666666E6B5B8544185EB51786EF1504185EB5138AEB854410AD7A3E070F15041A4703D9AAAB854410AD7A37075F15041666666C6A5B8544114AE47B180F15041713D0AE795B85441B81E852B81F150415C8FC26595B854410103000000010000000E000000713D0A1782F1504114AE47F128BA544148E17A5484F15041E17A145E2CBA544148E17A7486F150411F85EB112BBA5441713D0AE78EF1504114AE476135BA54413333333389F1504152B81EC524BA544152B81E1581F15041000000200DBA5441333333A373F15041AE47E1AA11BA544114AE472175F150418FC2F54815BA5441C3F5287C78F15041A4703D1A1CBA544152B81EA57AF15041E17A14DE1EBA5441295C8FE27CF150415C8FC2C520BA544114AE47117FF150413D0AD78323BA54413333332381F1504148E17AB426BA5441713D0A1782F1504114AE47F128BA54410103000000010000000A00000085EB5188C7F1504185EB516869B9544152B81ED5C2F15041CDCCCCCC6EB95441333333E3B9F150410AD7A34078B9544133333343B4F150419A9999097EB954413D0AD7E3C5F15041D7A370FD7EB95441E17A140EC6F150413D0AD7137BB95441D7A3701DCAF15041295C8FA26CB95441D7A370BDCDF150411F85EBC15FB9544148E17A44CBF15041713D0A0764B9544185EB5188C7F1504185EB516869B95441
+</a>
+
+<b>
+01060000000100000001030000000100000094000000AF97FCB097F150418A70A74A90B95441CDCCCC0C97F150410000004090B9544152B81E6596F150413D0AD7838EB95441B9788D6696F1504186E54F768EB95441C66D766296F15041C004EE6B8EB95441CD45B27096F1504168F586168EB954418FC2F5B896F15041C3F5286C8BB9544171191EC096F15041A5EBB4508BB95441821B4AC196F150417ECC203F8BB9544151B0353B97F15041966BFE6489B954419969B54897F1504127D9CD4489B954418FC2F54897F150413D0AD74389B954418FC2F5D897F15041C3F528DC87B95441BF785AE397F150419E2B09D487B95441C71551EB97F150418DDC0BC187B95441CCA71CE698F1504104DDC50987B954418FC2F55899F15041000000B086B954418FC2F5D89AF150417B14AE3786B95441CECC86EC9AF15041D9F5243986B95441EA707AEF9AF150418B34313886B95441DDD19CC99CF150418B34313886B95441EF0791029EF1504174E8596C86B954417B5E26AC9EF15041F8731E9085B95441ED5C5EAC9EF150414ABCD58F85B954419C918CEC9EF1504165263A3585B95441948D15EB9EF1504177DFBF0C85B95441110E09EA9EF15041EDD8C4EF84B95441DD2DC1E49EF15041D862DA5D84B95441C73ED2DA9EF1504187B0AFE183B954410AD7A3F09DF15041C3F5283C82B954418A1F44FE9CF15041910F95DE80B95441FEA6C5D59BF150417ED00AD17FB95441FB7868A69AF15041C656CAAB7EB9544152B81E559AF150413D0AD7637EB95441A18AF44F9AF15041722338587EB954417E0B5F3F9AF15041872830487EB95441F55545A199F15041F8EC2DCF7CB9544152B81E9599F150413D0AD7B37CB954417B608F9499F15041227CDEB07CB9544112A6438F99F150413C983DA47CB954416AD5135999F15041D479DAA27BB95441F02840FA98F15041D931A0AD79B95441DCD88B8998F15041B425232877B95441FEF7FB5A98F150417735163176B95441EC783E0998F15041DBD361F974B9544105EDBED397F150414E94886373B95441CDCCCC9C97F150410000004072B95441F65D556C97F15041364FBDB471B954418E89FB3597F150410280822071B95441D065665196F15041DA35E3996FB95441D3461CAD95F15041FF8D22816EB9544146D20FCC94F15041282F0F236DB95441B159050D93F150411762567C69B9544154E2FA4D91F1504120BA7BF367B95441A133A5A88EF15041A01E155D66B95441D9A7ABDA8BF1504101A60A9E64B954411D380CAA89F150419B76CCAA62B954410E7C52A088F15041D00329EB61B954413807DB4586F150411CC73A5C60B954415C8FC26585F1504152B81ED55FB9544152B81EB577F1504114AE477156B9544148E17A7457F150411F85EBA142B95441EC51B8DE51F150415C8FC2153FB954415C8FC2D54DF150410AD7A3C03BB95441E2AC08634DF150412DC89A193BB954414B6C065C4DF15041B50CE3133BB9544179E00C8E4AF150417E7B6E2937B95441C985568C3FF150419D97B3A223B954414D47A3A13DF1504164F2DBF01FB954417B14AE173CF150417B14AE371DB954411F8658F13BF1504138C499AF1CB95441B8B89DE53BF15041A2C1FD981CB954419F93BFC739F150415A63D00715B9544178CF038439F150417BCA5EBA0DB954413C64EFFD39F1504188693CE00BB95441A48252FF3AF150417455CB8A08B95441B54F0BA63EF15041FB69AFE203B9544168DC86BA43F1504196B4DE2000B95441D280EAB348F1504151DCB187FCB85441C89EDAB251F15041AC96EE21F7B85441E71D06734FF15041A451A00EF5B854410AD7A3804DF1504185EB5148F4B85441D89A04AC4DF15041644697FAF3B85441610D42EB4CF15041676E53B4F3B85441303A8FF14BF15041E7FC56FDF1B85441ACF3FB9C4BF15041B8825A6CF1B85441766CE3FB4AF15041E2896874F1B8544174132D934AF1504189CAEDC0F1B85441078C5EA648F15041BEED9152F3B85441DF41A26A44F150416A3C4764F6B854413A850B8642F1504113673F14F8B854415DFE604B41F15041C90285EEF8B85441CA2A34F53FF15041625891A0F9B85441093823C13EF15041CFF11726FAB85441BEA7301D3DF15041E327630CFBB85441904C07193AF150411F719D01FDB854414A74DA7F36F150411C080BC2FFB85441BFFA4D7A32F15041307523D503B95441785213B131F15041F45F312005B954417A9AE14A31F1504179008FD505B95441AE47E1BA30F1504152B81ED506B95441698CF51A30F15041F8F3146008B954415F9422C32FF15041C1E6FB3809B954411EBA89BA2FF15041630B41F309B9544118CDCC1C30F150419EAD47F110B9544156295C0F32F15041DCB71EC51AB954416C3B311333F150415B2E550820B9544195A80FF633F15041F4258AE521B954418FC2F5F83EF150410AD7A3B035B95441FA3D18D743F15041079E94703EB95441AA362E7844F15041DD569F4F3FB954418F61A1AD57F15041F28800A44BB95441F7B6D1DB5BF150419A3756494EB95441B658408C66F15041A354C40155B9544155D14A4B68F150418A66B31056B95441C8CDD3BB6BF15041A38B912E58B954415E25863072F150411C77ADD65CB954418306B02C79F15041B886255661B954413872D3F682F150411762567C69B95441350941B785F150415304382F6CB95441681C30C686F15041A2DBE2816DB954417C8948D98AF15041FE388ECC72B95441337F562D8DF1504197F9D28076B9544116F1E5CF8DF15041F1D07DD377B954410964E11D8EF1504119B592AB78B95441A18C4C668FF15041029E367A7BB95441095208AA8FF150418DE0F5527CB9544183FEDB0890F1504182399D107DB954411D88539090F15041EF4693497FB95441EF63F7B890F150411D49159081B95441EF63F7B890F15041D43E23E483B95441EF63F7B890F15041236F75F485B9544171706BAB90F1504116D097CE87B954415293C78290F1504156B931308AB95441D8E6F32390F15041FE6787D58CB95441095208AA8FF15041AC274A438EB95441E6D404158FF15041236B8B6291B954411D88539090F15041BCF402EA91B95441ED2A223691F15041C6568C2492B9544150C3394591F15041106A6F3692B954418FC2F54891F150417B14AE3792B9544136BD175191F150416CFA7F4492B95441493BA20B92F15041C2E3952193B954412E8CD96397F150419A77FF5491B9544113526F2C99F1504189C3466390B954411E245B1E99F1504191E35C6290B954418BAA3C6598F150418641B46E90B95441AF97FCB097F150418A70A74A90B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801939 - 261160
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000006000000010300000001000000370000001F85EB118FF15041E17A14BEADB95441F6285C8F8FF1504100000080ABB9544152B81EC58FF15041713D0A67A8B954418FC2F5A891F15041EC51B84EA3B95441E17A14DE92F1504114AE47F1A1B9544148E17AB495F150418FC2F5C8A1B954410000002096F15041EC51B85E9EB954413D0AD76395F15041B81E857B9BB95441A4703DAA93F15041D7A3701D98B95441E17A140E90F1504185EB51E897B95441D7A370CD8DF150418FC2F58898B95441E17A14AE89F150413D0AD7139BB954413D0AD78385F150410AD7A3809EB95441EC51B83E82F150418FC2F508A2B954419A99993979F1504114AE47B1ACB95441666666F669F15041C3F5282CBEB95441F6285CFF68F1504166666606BFB95441333333536AF150411F85EB81BFB95441A4703D2A6BF1504148E17A74BFB95441713D0A376CF150415C8FC215C0B95441F6285C5F6DF150411F85EB81C0B95441F6285CAF6EF150410AD7A330C0B954411F85EB4171F150417B14AEB7C0B95441D7A370AD71F15041C3F528ECC2B95441E17A145E6FF1504148E17AB4C5B95441CDCCCC6C6DF1504148E17AB4C5B95441713D0A376CF150418FC2F548C5B954410AD7A3B06BF150411F85EBC1C5B95441F6285C6F68F150415C8FC2E5C6B95441EC51B81E6DF15041B81E85ABCDB95441CDCCCC8C72F1504133333303D3B954410AD7A3F07AF15041E17A142EDAB954418FC2F59883F150418FC2F5B8E4B9544148E17AB485F15041AE47E11AEAB95441713D0A7786F15041295C8FB2F0B95441AE47E19A85F15041C3F5281CF7B9544148E17A547FF150415C8FC2D500BA5441D7A370BD78F15041295C8F220EBA54418FC2F56883F150418FC2F5980ABA54413333337386F1504152B81ED507BA5441AE47E1CA89F1504114AE474100BA54419A9999798CF15041AE47E1EAF6B954417B14AE478DF15041D7A370ADF1B95441C3F5281C8DF15041F6285CDFEAB954419A99998987F1504148E17AF4DFB9544185EB517882F150411F85EBB1D7B95441AE47E14A77F15041A4703D3ACCB954419A9999A974F15041A4703DAAC7B95441A4703D3A74F15041713D0A97C2B954413333339374F150413D0AD733BEB95441D7A370DD75F150415C8FC2C5B9B95441AE47E15A78F15041295C8F02B5B95441EC51B83E7DF15041EC51B87EAFB95441EC51B8FE7DF15041A4703D2AB0B954411F85EB118FF15041E17A14BEADB9544101030000000100000023000000CDCCCCDCABF15041333333D35AB8544152B81E85A5F1504152B81EE54FB854418FC2F518A5F15041B81E854B4FB854411F85EBE18AF15041B81E854B67B85441AE47E1EA7AF15041CDCCCCBC79B854417B14AE477AF1504148E17A847AB854413D0AD7F36BF15041EC51B81E8DB85441A4703D3A5EF150410AD7A3F09EB85441A4703D3A60F150419A9999999EB854419A9999C964F15041000000609CB854415C8FC2256DF1504148E17A8499B85441AE47E12A77F15041713D0A7796B85441AE47E12A7EF1504148E17AD48CB85441EC51B86E7FF15041713D0A178BB85441D7A370BD84F150418FC2F5C883B8544114AE475190F1504114AE473175B854418FC2F53892F150413D0AD7D372B85441CDCCCCCC91F150417B14AEA771B854410AD7A35095F150417B14AEB76DB854418FC2F5F895F15041C3F5280C6BB854418FC2F50898F150417B14AE7768B85441CDCCCCEC98F150417B14AE6766B854418FC2F5189AF15041C3F528CC65B854410AD7A3A099F15041C3F5283C62B854418FC2F5B899F150417B14AED75FB854410AD7A3209BF150417B14AEE75EB854410AD7A3009DF150413D0AD7235FB854418FC2F5E89FF150413D0AD7E35FB8544152B81E15A1F15041C3F528CC5FB85441CDCCCCDCA2F150410000001061B85441CDCCCCECA4F150417B14AE175FB85441CDCCCC4CA5F150417B14AEA75FB85441C3F5281CA6F15041666666D65EB854410AD7A3D0ABF15041000000605CB85441CDCCCCDCABF15041333333D35AB8544101030000000100000041000000AE47E13A8BF150419A9999A973B9544148E17AF48DF15041B81E855B78B9544185EB513890F15041AE47E19A80B95441D7A3706D90F150410AD7A30086B954413D0AD7738FF150419A9999898CB95441295C8FA28DF15041A4703DEA91B954418FC2F5088FF150417B14AE7791B954418FC2F54891F150417B14AE3792B954410AD7A3F091F150410000004093B954410AD7A36097F150410000006091B9544152B81E3599F150413D0AD76390B95441CDCCCC0C97F150410000004090B9544152B81E6596F150413D0AD7838EB954418FC2F5B896F15041C3F5286C8BB954418FC2F54897F150413D0AD74389B954418FC2F5D897F15041C3F528DC87B954418FC2F55899F15041000000B086B954418FC2F5D89AF150417B14AE3786B95441CDCCCCFC9DF150413D0AD77386B95441CDCCCCEC9EF15041C3F5283C85B954410AD7A3E09EF15041C3F528EC83B954410AD7A3F09DF15041C3F5283C82B9544152B81EC59CF15041C3F5288C80B9544152B81E559AF150413D0AD7637EB9544152B81E9599F150413D0AD7B37CB95441CDCCCC9C97F150410000004072B95441CDCCCC3C97F15041C3F5282C71B95441CDCCCCFC94F150413D0AD7536DB954418FC2F52893F150417B14AE8769B95441C3F528EC91F15041AE47E1CA67B9544114AE470189F150411F85EB0162B954415C8FC26585F1504152B81ED55FB9544152B81EB577F1504114AE477156B9544148E17A7457F150411F85EBA142B95441EC51B8DE51F150415C8FC2153FB954415C8FC2D54DF150410AD7A3C03BB9544152B81E154BF15041EC51B8BE37B954417B14AE173CF150417B14AE371DB95441F6285C0F3AF150410AD7A30016B954410AD7A3B039F15041666666760EB954413D0AD7533BF150410000001009B9544152B81E153FF150413D0AD7B304B95441E17A142E44F15041EC51B8AE00B95441B81E852B49F15041295C8F42FDB85441CDCCCC0C53F150417B14AE57F7B854419A9999F952F150415C8FC275F6B854410AD7A3804DF1504185EB5148F4B85441EC51B8DE4DF15041AE47E15AF3B8544152B81E554BF1504152B81E95F0B85441C3F528BC36F15041F6285C5FFFB85441333333C332F150418FC2F53803B954415C8FC24532F1504185EB511804B95441AE47E1BA30F1504152B81ED506B95441295C8FB22FF150411F85EB6109B95441CDCCCC1C30F1504114AE47F110B95441F6285C0F32F1504152B81EC51AB954417B14AE2733F15041295C8F7220B954418FC2F5F83EF150410AD7A3B035B954411F85EB3144F150413D0AD7133FB95441333333D344F15041B81E85DB3FB954411F85EB6168F150419A9999D956B95441295C8FB279F15041C3F5280C62B95441EC51B8AE82F15041AE47E16A69B95441C3F5280C88F150419A9999696FB95441AE47E13A8BF150419A9999A973B954410103000000010000002E000000B81E852B81F150415C8FC26595B85441E17A148E76F150411F85EBB197B8544114AE47716DF15041713D0A779AB854419A99992965F15041A4703D4A9DB85441A4703D8A60F150411F85EB919FB85441666666465EF15041295C8FF29FB85441000000505DF15041B81E85DB9FB85441000000905AF150417B14AE87A3B85441CDCCCCAC57F15041295C8FE2A9B854419A9999D956F150410AD7A370AFB854418FC2F53857F1504133333323B2B85441C3F5289C5EF1504133333323BAB85441D7A3703D62F15041EC51B85EBFB85441B81E851B65F1504114AE47E1C4B854415C8FC20566F1504185EB5178C9B85441C3F5287C66F15041AE47E1DAD0B854413D0AD70365F150418FC2F528D8B85441AE47E10A62F15041000000E0DEB854417B14AE575DF150418FC2F5E8E5B85441AE47E18A58F15041713D0A27EBB85441EC51B8DE4DF15041AE47E15AF3B85441E17A146E5DF150419A999989F9B85441C3F5285C5EF1504185EB51E8F9B85441CDCCCC2C60F15041F6285CBFFAB854415C8FC26570F150413333334302B95441333333A372F15041D7A3701DFDB85441713D0AF772F1504100000030F9B85441E17A149E67F15041000000C0F2B85441AE47E1DA66F1504114AE4701F1B854416666666667F15041713D0A67EDB8544152B81E2569F150411F85EB41E9B85441B81E85FB6BF15041CDCCCC3CE4B8544148E17A246DF15041AE47E17AE4B8544148E17A446FF15041333333F3DFB854413D0AD70372F15041F6285C7FDAB85441B81E858B73F150413D0AD7D3D6B85441295C8F9272F15041CDCCCCBCD5B85441295C8FD272F15041C3F5281CCAB854411F85EB9171F150415C8FC2B5C4B85441C3F5280C6EF1504100000020BBB85441666666966BF15041666666E6B5B8544185EB51786EF1504185EB5138AEB854410AD7A3E070F15041A4703D9AAAB854410AD7A37075F15041666666C6A5B8544114AE47B180F15041713D0AE795B85441B81E852B81F150415C8FC26595B854410103000000010000000E000000713D0A1782F1504114AE47F128BA544148E17A5484F15041E17A145E2CBA544148E17A7486F150411F85EB112BBA5441713D0AE78EF1504114AE476135BA54413333333389F1504152B81EC524BA544152B81E1581F15041000000200DBA5441333333A373F15041AE47E1AA11BA544114AE472175F150418FC2F54815BA5441C3F5287C78F15041A4703D1A1CBA544152B81EA57AF15041E17A14DE1EBA5441295C8FE27CF150415C8FC2C520BA544114AE47117FF150413D0AD78323BA54413333332381F1504148E17AB426BA5441713D0A1782F1504114AE47F128BA54410103000000010000000A00000085EB5188C7F1504185EB516869B9544152B81ED5C2F15041CDCCCCCC6EB95441333333E3B9F150410AD7A34078B9544133333343B4F150419A9999097EB954413D0AD7E3C5F15041D7A370FD7EB95441E17A140EC6F150413D0AD7137BB95441D7A3701DCAF15041295C8FA26CB95441D7A370BDCDF150411F85EBC15FB9544148E17A44CBF15041713D0A0764B9544185EB5188C7F1504185EB516869B95441
+</a>
+
+<b>
+01060000000100000001030000000100000094000000AF97FCB097F150418A70A74A90B95441CDCCCC0C97F150410000004090B9544152B81E6596F150413D0AD7838EB95441B9788D6696F1504186E54F768EB95441C66D766296F15041C004EE6B8EB95441CD45B27096F1504168F586168EB954418FC2F5B896F15041C3F5286C8BB9544171191EC096F15041A5EBB4508BB95441821B4AC196F150417ECC203F8BB9544151B0353B97F15041966BFE6489B954419969B54897F1504127D9CD4489B954418FC2F54897F150413D0AD74389B954418FC2F5D897F15041C3F528DC87B95441BF785AE397F150419E2B09D487B95441C71551EB97F150418DDC0BC187B95441CCA71CE698F1504104DDC50987B954418FC2F55899F15041000000B086B954418FC2F5D89AF150417B14AE3786B95441CECC86EC9AF15041D9F5243986B95441EA707AEF9AF150418B34313886B95441DDD19CC99CF150418B34313886B95441EF0791029EF1504174E8596C86B954417B5E26AC9EF15041F8731E9085B95441ED5C5EAC9EF150414ABCD58F85B954419C918CEC9EF1504165263A3585B95441948D15EB9EF1504177DFBF0C85B95441110E09EA9EF15041EDD8C4EF84B95441DD2DC1E49EF15041D862DA5D84B95441C73ED2DA9EF1504187B0AFE183B954410AD7A3F09DF15041C3F5283C82B954418A1F44FE9CF15041910F95DE80B95441FEA6C5D59BF150417ED00AD17FB95441FB7868A69AF15041C656CAAB7EB9544152B81E559AF150413D0AD7637EB95441A18AF44F9AF15041722338587EB954417E0B5F3F9AF15041872830487EB95441F55545A199F15041F8EC2DCF7CB9544152B81E9599F150413D0AD7B37CB954417B608F9499F15041227CDEB07CB9544112A6438F99F150413C983DA47CB954416AD5135999F15041D479DAA27BB95441F02840FA98F15041D931A0AD79B95441DCD88B8998F15041B425232877B95441FEF7FB5A98F150417735163176B95441EC783E0998F15041DBD361F974B9544105EDBED397F150414E94886373B95441CDCCCC9C97F150410000004072B95441F65D556C97F15041364FBDB471B954418E89FB3597F150410280822071B95441D065665196F15041DA35E3996FB95441D3461CAD95F15041FF8D22816EB9544146D20FCC94F15041282F0F236DB95441B159050D93F150411762567C69B9544154E2FA4D91F1504120BA7BF367B95441A133A5A88EF15041A01E155D66B95441D9A7ABDA8BF1504101A60A9E64B954411D380CAA89F150419B76CCAA62B954410E7C52A088F15041D00329EB61B954413807DB4586F150411CC73A5C60B954415C8FC26585F1504152B81ED55FB9544152B81EB577F1504114AE477156B9544148E17A7457F150411F85EBA142B95441EC51B8DE51F150415C8FC2153FB954415C8FC2D54DF150410AD7A3C03BB95441E2AC08634DF150412DC89A193BB954414B6C065C4DF15041B50CE3133BB9544179E00C8E4AF150417E7B6E2937B95441C985568C3FF150419D97B3A223B954414D47A3A13DF1504164F2DBF01FB954417B14AE173CF150417B14AE371DB954411F8658F13BF1504138C499AF1CB95441B8B89DE53BF15041A2C1FD981CB954419F93BFC739F150415A63D00715B9544178CF038439F150417BCA5EBA0DB954413C64EFFD39F1504188693CE00BB95441A48252FF3AF150417455CB8A08B95441B54F0BA63EF15041FB69AFE203B9544168DC86BA43F1504196B4DE2000B95441D280EAB348F1504151DCB187FCB85441C89EDAB251F15041AC96EE21F7B85441E71D06734FF15041A451A00EF5B854410AD7A3804DF1504185EB5148F4B85441D89A04AC4DF15041644697FAF3B85441610D42EB4CF15041676E53B4F3B85441303A8FF14BF15041E7FC56FDF1B85441ACF3FB9C4BF15041B8825A6CF1B85441766CE3FB4AF15041E2896874F1B8544174132D934AF1504189CAEDC0F1B85441078C5EA648F15041BEED9152F3B85441DF41A26A44F150416A3C4764F6B854413A850B8642F1504113673F14F8B854415DFE604B41F15041C90285EEF8B85441CA2A34F53FF15041625891A0F9B85441093823C13EF15041CFF11726FAB85441BEA7301D3DF15041E327630CFBB85441904C07193AF150411F719D01FDB854414A74DA7F36F150411C080BC2FFB85441BFFA4D7A32F15041307523D503B95441785213B131F15041F45F312005B954417A9AE14A31F1504179008FD505B95441AE47E1BA30F1504152B81ED506B95441698CF51A30F15041F8F3146008B954415F9422C32FF15041C1E6FB3809B954411EBA89BA2FF15041630B41F309B9544118CDCC1C30F150419EAD47F110B9544156295C0F32F15041DCB71EC51AB954416C3B311333F150415B2E550820B9544195A80FF633F15041F4258AE521B954418FC2F5F83EF150410AD7A3B035B95441FA3D18D743F15041079E94703EB95441AA362E7844F15041DD569F4F3FB954418F61A1AD57F15041F28800A44BB95441F7B6D1DB5BF150419A3756494EB95441B658408C66F15041A354C40155B9544155D14A4B68F150418A66B31056B95441C8CDD3BB6BF15041A38B912E58B954415E25863072F150411C77ADD65CB954418306B02C79F15041B886255661B954413872D3F682F150411762567C69B95441350941B785F150415304382F6CB95441681C30C686F15041A2DBE2816DB954417C8948D98AF15041FE388ECC72B95441337F562D8DF1504197F9D28076B9544116F1E5CF8DF15041F1D07DD377B954410964E11D8EF1504119B592AB78B95441A18C4C668FF15041029E367A7BB95441095208AA8FF150418DE0F5527CB9544183FEDB0890F1504182399D107DB954411D88539090F15041EF4693497FB95441EF63F7B890F150411D49159081B95441EF63F7B890F15041D43E23E483B95441EF63F7B890F15041236F75F485B9544171706BAB90F1504116D097CE87B954415293C78290F1504156B931308AB95441D8E6F32390F15041FE6787D58CB95441095208AA8FF15041AC274A438EB95441E6D404158FF15041236B8B6291B954411D88539090F15041BCF402EA91B95441ED2A223691F15041C6568C2492B9544150C3394591F15041106A6F3692B954418FC2F54891F150417B14AE3792B9544136BD175191F150416CFA7F4492B95441493BA20B92F15041C2E3952193B954412E8CD96397F150419A77FF5491B9544113526F2C99F1504189C3466390B954411E245B1E99F1504191E35C6290B954418BAA3C6598F150418641B46E90B95441AF97FCB097F150418A70A74A90B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966094 - 2025063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966094 - 4569934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 5179648
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B55411E44FC9429925041D06392E17B2B5541EFB7AADD2C925041700F3ADB832B5541FB52E439419250412B41F1ACB22B5541D5D67E2244925041E0245356B92B55413D31860166925041F55C0D06B82B55415CA1FA6063925041FD7CE545B72B5541FCD9360E5692504158C9477CAF2B554146E2EDDC4F9250419BB1260BAA2B55418ADEB3F349925041ECC5CE91A32B5541D8EE6092439250415552E1479A2B554111B36CF93E925041C5D6FD2D912B554183279D3F36925041E8B32E017A2B5541F8C7967D2C9250412621AC735F2B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55419C6D8F9E0A925041773554FA582B55417264CCCE0A92504112A8599B512B5541B13E16BB1F925041EA4E2489512B554173111DBF24925041E27A2FA6502B55413129FCA625925041F6EA067C502B5541C060F39C26925041626E739B4E2B5541F52E20912492504139F6641D492B554134285CC01E925041C0622A683C2B554146CDB8E719925041D8ACE3B6322B5541C3020AD00E9250416D01DFB2212B5541D79B01D00792504150B4DF6F182B5541965CA622FA9150410EACF824092B55417EC0682EEE9150418E9E7083FD2A5541AD97B455DB915041E4243F8BEE2A554119528B31D3915041DF4183ECE82A55410103000000040000004900000098E15E68A793504158EA53119E2A5541AEC0ED5691935041FB059A738A2A554141CCCE5A8A935041F1332A6D822A554162205D99859350418F97E209712A554198F2C6AA83935041E1D4A256662A55413165BB84839350415ACD04B85D2A554126E7DFB1809350412E292BA0572A55413728EF4D7A935041A7218D014F2A5541733B68FB719350415057B5A4452A5541175AC8A16C9350419C7DADF43E2A554173E7D3C76C935041E9A3A544382A55412C840F416A935041C92913CC2F2A55415AB6DCAA489350414B487967342A554187E8A91427935041409C0D9B392A5541C329B3BB16935041EF384914372A5541C9BE568B15935041E33406AF462A554188F035D41193504119854B93472A554153ACBF14EC925041A2E4C0CA452A5541AB2A8FFDDA92504187536655412A554100000060CB925041B81E85EB462A55414ABCD793C192504114F0A7C3482A55417632BCCBC09250411E60561D4A2A5541FA0D3007C2925041E3DC0B1F502A55413344E1A6C7925041D827E306532A55418D156B16D09250412751ADDE562A5541F3BA152ED6925041AE9130C65F2A5541590880DDE0925041FD62BA35682A5541431567A5E29250416141AD25692A5541EA556C45E29250413510A4CD692A55414EE9874DE0925041DC31B1DD682A55415860C045DC9250411337DBDD652A5541BB4B1CB6D5925041989E178E612A5541E7F35D06D1925041AD0869BE5B2A5541AEBDAC66CB9250415382B636562A5541116B18B7C3925041D827E306532A554155DFB976CA925041C52C0996622A554140B35866D1925041F4FD104D742A5541403C206ED59250410DCA70BC7F2A554120490736D7925041CBF02514852A5541BCD4E3BDD992504124CF1804862A55412BF1C6CDDB925041501F1AEC852A55414DAB972DDF92504124B02074852A5541A7314AB5E4925041B47445D4822A554192E6F014EB925041E05A77447F2A5541D7798A64F292504165E1AB847B2A5541C35FB86301935041D3CC07F5742A5541CE7EB0F3019350410B5BF9FC752A554167C776CCF39250411760A1447C2A55419E24E134EC92504192D96C04802A5541855881C5E09250417D6F1BD4852A5541BC5DABC5DD925041D64D0EC4862A5541FE17FEDDD79250415C5D0A0C872A55419BC2D2F5DA925041A0F0A35B8E2A5541376DA70DDE925041A1796B63922A55417A398935E0925041268967AB922A55418600415DE5925041CDC96C4B922A5541B417FA6CEA9250411B6A6F1B922A5541AAEB985CF1925041A1796B63922A5541E51989C3049350418086522B942A5541785FB4F21393504196E33ADB952A5541BD5C1DBA1E93504127312743972A554152F2C71837935041CF38E40A9C2A5541FD1DA3FF4B935041AE90A2BAA02A554162E245A752935041138E8D3AA22A55416FC8F55E58935041FDB96C92A42A554122597A2E6193504140A5464AA72A5541E1DC173668935041A583393AA82A5541522A82E5729350411F933582A82A5541B896E4247E93504178333852A82A5541BAC76BC486935041BB954A02A72A5541DC0A042C8E93504183C968DAA42A55412D844D339B93504155D1A75AA02A554198E15E68A793504158EA53119E2A55410B00000088F82637E8925041BA473A69652A554151E88AE83E935041FB14B45F602A5541658DDBA554935041C14A0DB3612A5541127816A16E9350417793CA3A622A554188C418EC809350410B02502B612A55413D0DD6738193504115EC18AD652A5541127816A16E9350413CB3EC0F682A5541A69FCD603E9350417090F7F0652A5541FFA12E3125935041916A2F88672A55410D610694EE92504124C37DFA6A2A554188F82637E8925041BA473A69652A5541050000005BA3122450935041781F1130802A5541A55A559C4F935041FDB631D3792A554111A757E761935041C3EC8A267B2A5541C6EF146F629350414F42064F822A55415BA3122450935041781F1130802A554105000000AAA31D88F6925041ED9A54C1852A554178DC4925F4925041880CADFB802A5541F52B1FBA02935041FDB631D3792A554171AA359504935041673275647F2A5541AAA31D88F6925041ED9A54C1852A554101030000000100000022000000073D5DC9A7925041742690ED6F2A5541C8E84459A39250417D8B18E0762A5541F4F9ECC39D9250418F9185847D2A55415322AA3D999250412569C80A822A5541B748988092925041684DFD33882A5541B077DAF8889250415177718A912A554111D5468F819250419FCB7191982A5541BD7E775178925041B09C2F19A22A554197729D086B925041326768A2B02A5541431CCECA61925041EAB21474BA2A5541FCCD3A6861925041E37B9620BB2A55416EA574C461925041921127D1BB2A5541D3A25F446392504165C125E9BB2A5541B2FA1DF467925041DF733981BA2A55413B8B200B7A9250417ACE8E69B42A55413495EEE18F92504184DBF7E9AC2A5541A8DA9758A8925041AF196AC2A42A554110C3581FBF9250418CB7D9CA9C2A5541F0E1CEF6C89250416AFD086B992A5541D0777DC6CE9250415362309B962A5541A4B043E6D2925041D8E864DB922A554199FB1ACED59250411AA3B7F38C2A5541C66A1446D692504194EBFB13882A5541F3BA152ED69250417D6F1BD4852A5541E7125696D19250414E27DB24782A55417610C3CEC992504107DAF22D642A5541C3E90D77C49250413DAE958E582A554175FE33BFC1925041C1F6D9AE532A55411B2041CFC092504173EC0767502A554102F50567BE925041CD99C83F4E2A55419C717552BE92504150EE4E634E2A55415D295396AE92504102F03282652A5541C88CE056AC9250416837E3AE692A5541073D5DC9A7925041742690ED6F2A55410103000000020000002C00000006D1016DBD91504149650CF6962A5541F8D66E72C6915041F4F714309A2A554155C5D0AED4915041CB044DEB9F2A554142E6EDAEDF91504193F5E12BA42A55419746FE2DED915041AA09C770A92A55416FD10B3BFB9150413A8100E5AE2A5541AA4612AB0A925041D3BFE2B7B42A5541532A99AD0F9250416A4B9DCBB62A5541C9BF221A21925041A32FD2F4BC2A55415B5E1816249250415CE13E92BC2A554107A6267A2992504193C1D54DBE2A5541515B192B39925041F7B6B2E1BE2A5541622CD7B242925041D90F69B0BE2A5541B54DF7D34E9250412FCCF8B9BD2A554154BF798E5D925041477173B4BB2A5541B67FA70561925041B79BFF64B92A5541EA93BD2977925041E9B175F1A02A5541976F9E1D80925041647DDE2E982A5541BAB2F6B98C92504154E1CFC38B2A5541EF2CCDA998925041AC032099802A5541B4AD28989F92504117618C2F792A55416603C09BA5925041C8B41388702A5541230C4BABA3925041D0F0A411712A55419F59923B999250418ACD05C3742A5541B4A620048992504122DC89387A2A5541DADD689C70925041F86AEA91822A5541CDCCCCFC629250419A9999C9872A554148E17A243E92504152B81EA58D2A55417DA04950329250412941FB178F2A5541A711E9F62992504179AB91CB892A554142BDB0731892504168C9C41DA72A55419D3A66E111925041CF89D69BA42A55410001C89A07925041B490DF8EA12A5541609C0F83F891504167D014399D2A55419F2283CAEC9150417CE5E8D9992A5541634C7244E0915041E68F6DFF952A55410FEF7BE7D3915041FAEB3805912A5541F4E6479DC5915041F6C01E348C2A554127AE1BE6C6915041556BA359882A5541BAC93FB2BA915041D85516F1852A5541F7CE6486A0915041A4D5390D832A5541A85591959A9150413972AC4C852A554122F90CC899915041C2404250892A554106D1016DBD91504149650CF6962A5541050000007288382E039250417B571403AB2A55417FA83005F4915041495825AFA72A5541886FD963F4915041AD1185A6A52A5541F7EB8C5D03925041DE1074FAA82A55417288382E039250417B571403AB2A55410103000000010000000A00000085EB51380F9250418FC2F558BF2A5541790861320F925041C609FC0BB82A55415AEA6A050A925041EDDB8532B62A5541B35E4C4CFF9150412FEBF0F1B12A5541350B7488F79150413A8100E5AE2A5541E065E558E191504177D1807BA62A5541330FC9E4E691504136FB6C5DAA2A5541C7BB049EFC915041713FDA61B62A5541A07F694C0A925041A0360B80BD2A554185EB51380F9250418FC2F558BF2A55410103000000010000000400000085EB51380F9250418FC2F558BF2A5541F561A4790F9250418312AACFBF2A5541C558C3CB11925041299918D4C22A554185EB51380F9250418FC2F558BF2A55410103000000020000004A000000E76D51181C925041A6D82E0C192B55415819938715925041900BF733052B5541B986BCFA0C92504157182CD0E82A55411EDBF4120A925041C0B6D717E12A5541AA24B8510B9250413D9E96ADE02A554121363B7B0C9250410ABADEBFE32A5541C49E4D741392504115879C28FB2A55417A38E2411B92504170FC1AD1122B5541FEB4B2271D9250419970BD52182B55412CB5FFAD21925041CA053C3B152B554147F2EAA527925041B6CA1F7A112B5541EECBFC622E925041540AF2020E2B5541DA5FCFF2319250419C8D34820B2B5541E0619E293492504101B8C032092B554198DE5BAA369250411524EEA2052B5541FF6BA93B3F925041282D5A32F72A55417065243D44925041C19F0CA1EE2A5541E2934E5B46925041794DDBD0E92A5541C2B7550D49925041B4CC7FE2E22A55414A564B094C925041DADB5816DB2A55415F9167CA4F925041D643E818D32A5541CC2084925A92504153751122C02A5541ABB0B8B4599250414D7342EBBD2A5541893C4F6954925041B1681F7FBE2A5541E2934E5B46925041EF7F348EBF2A5541E3F90E273C92504135CEC7F0BF2A5541FC044AED2F925041A1FA22D8BF2A5541A27B9AC92B9250418353D9A6BF2A5541769B030E2A925041CDDAB993C12A55411BE1423B2D92504103BB504FC32A5541EECBFC622E925041C5A33B40C22A55410A3E977731925041CBA50A77C42A55415B2D07672B9250413A6AD65BCC2A5541211423212892504134680725CA2A55417C9DD2442C9250417D20F9C0C42A55416862B68328925041A7FCF10EC22A55416395966923925041711C5B53C02A554101D568F21F9250413DD43495C62A5541D5C3C08725925041262FBA9AC82A554153279AC22492504108575FBACF2A55413C540D041992504131FEA8EBCF2A5541A8B1799A11925041406CA592CE2A5541C558C3CB11925041299918D4C22A5541CEF8C4180992504174F60655BE2A55416CC94D05FF915041E245763FB92A5541BF2DB3E0FB915041C929D3C4B72A55414799C545F89150416AB188A4B52A5541640EB838EA915041292C06C9AD2A5541BFBBF020DF91504142CAD3F1A62A55414A2FC1BBD7915041FE3C93E0A22A55415D0EA4BBCC9150417F1A54889E2A5541C8DC6BC9BC9150414EDCA29E982A5541E1C8CD22AF915041467DEF0CBC2A5541CBB3F981B2915041B0EFB90AC52A5541E5F3E7F3B3915041CBE8B017C82A554163C27DF7B79150414AB7461BCC2A5541A4B46B11BE9150417FF02B9AD02A55415DA00900CD915041252ACAE0DA2A5541B209D5C3D0915041F3082A28DC2A55418ECA6C01D5915041F6027BD4DC2A55418D60C64DD891504173126BF9DD2A55414D403ED5DE915041110A9FCFE12A55414F6093C6E6915041F0C487B9E62A55414D096FB5ED915041A12D863EEC2A5541A9D347C4F3915041214A49B2F12A55419C7C23B3FA9150410F7CAB9EF72A554108BE75C401925041CEDEFACFFD2A5541471784240692504160590650012B554118D81B620A9250414014EF39062B5541D727E9F00C9250419FC59652092B5541940D10CC129250410F7E6266112B55413E8270A419925041EFC2FDFF1A2B55413A1F5EE71B925041FCE7A12D192B5541E76D51181C925041A6D82E0C192B554106000000847A003CF69150418E5EE866E72A554133D23FFCF5915041125F9857E12A5541A2676D4007925041A5D9DD6AE32A55413556EA16069250410EA1ED64E92A55416C9CA6AD04925041EF68AD4FE92A5541847A003CF69150418E5EE866E72A5541010300000002000000110000008A0D10CC129250411A5A15E9232B5541EFEAB0C81B925041B3CC03B0322B55411F4756BD279250415659A3F54C2B5541F3DA349129925041CEA64423522B554110F978D72C92504109B296A6542B5541EEE26656359250413E06EB94542B55416AA7A4733592504192359386522B5541B3E246B333925041CEC9A8254E2B55415A8396E6329250411F7CCF2A4C2B55419DC4354D3192504122C34B15492B5541D9584BEC2C925041B5CD85903F2B55413D76FC682A9250419B7372013A2B5541DD269AC2249250412C6BB4F82D2B55419BAADC4122925041F0E004D5292B5541A6E6FCC01992504179F9C8D31D2B5541250BF3F515925041AB31F4CD1F2B55418A0D10CC129250411A5A15E9232B55410900000059C1ADF8199250415042E1DE1F2B55412C7DE83E239250417D525230302B5541B93A3A862A9250419446B1283E2B5541148F709131925041272959F24E2B554169FDD0D02B925041D6EBEF3C502B5541DC3F7F8924925041C7AFCC643E2B5541BE5464BA1D9250416205494D322B554142E41B561492504124A8CE18242B554159C1ADF8199250415042E1DE1F2B55410103000000010000000D00000022CD92764392504159E8F9D1532B55413F2C23A0429250414C416D31512B554105F6FDFA3D925041CB1622374B2B554168BE18832F925041B6617B8C392B5541EA4654772C925041D70788A0352B55415CAB81DE269250411BDD1C032E2B5541ED57CB5F2692504103788FB22E2B5541E299CAAF29925041D48A06B4352B554155538E0B30925041F87A2FFB432B554172E82337329250412DB751C7482B55412C6008E6369250418C3B90AD522B5541E32466A638925041467D6F5A542B554122CD92764392504159E8F9D1532B5541010300000001000000160000002480196546925041E0A03DA1532B554116A283414892504127C3AF47532B55413AB9D77F6E925041292FA603512B55416E8D23606C9250419D03780F512B5541F2F1A44C6C925041C61491B04F2B5541D5D36006699250410113B88E4D2B5541DC583B136492504176D80824492B5541B28E9BD0579250418187B5B23F2B554187C4FB8D4B925041109BE32D362B55411A775A6046925041856034C3312B55410970F6D83D9250413EEDAE0F2B2B554136CFEC5F37925041C9D60A09262B55414854C76C329250413B415313222B5541EAC961FA309250415C8969DB202B55418C33C4E92F9250417A6D7AE9202B55417A58813B27925041D8F49C132B2B5541C27BB94927925041D5E8F6AD2C2B5541BE6A42612D92504170375035352B5541EEAC615432925041E66D957D3B2B554151781C2539925041FAF7B0E7432B5541F28A73833E925041E1FE2D9B4A2B55412480196546925041E0A03DA1532B55410103000000010000001B00000006A564D07D925041B8B98825502B554106A564D07D925041D9019FED4E2B5541A5BFF6D27C925041F4B7AF034E2B5541D82E699168925041A761D12C3E2B5541AFE23FD44E92504167FEC7B0292B554169628F7B439250415EC06602212B5541CF64A4553B92504112BBDB9C1A2B55411B19DC4938925041534B082D182B55412A3D4FD536925041E1D5ECED172B554198DE5BAA3692504152A43137182B5541CC6B7E453192504146474F2C1F2B5541D45D5F433192504178BD0B2F1F2B5541C1B8485932925041E8B6EDA0202B5541C79BA17C3B9250412761707B272B55419705AECE41925041181393952C2B5541259B65C445925041BBCC55EF2F2B5541E8A9698B4C925041AC7E7809352B554138D9C6724E925041761257DD362B5541DC9289CC5192504135822A4D392B55417C154FFF54925041EB28FBE33B2B554133BC1F96579250412BC652193E2B554114B8319A5D925041AE37FFAA422B5541D39C63DF68925041B9AC5D804B2B5541D73B94366D925041D1389C144F2B5541B22DC5CF6F925041B42EBFEF502B5541F5F2FBAB72925041ECB75DC4502B554106A564D07D925041B8B98825502B55410103000000020000001400000069BE6F5BD59150415B75DF8BE82A554183F755C3E8915041452D4DAEF62A55416907F7F3FB91504161A90F0B082B5541C613E6E00A925041FE52562D192B5541AA65A9841192504198D3ABC1212B55412DEF857A1892504143C9E4061C2B5541D85E30701892504167DF4DF81B2B5541862641C215925041FEAFC452172B554107F7FBAB0C9250417F6DFD990A2B5541CA0794FF049250416DD62EA6012B5541EB26A7D0F89150410F7CAB9EF72A55412F08FA0DE891504140FFB5CFE82A5541CBCC5650E0915041F4AB56C3E32A5541F17565C6D8915041F19E8374DF2A5541FF5C34D0D59150414343583EDE2A5541E2D8E77ED09150410280A32ADD2A5541FEAF82FACD915041C2ACC65ADC2A554105CF147CD491504100FD821EE62A5541DF99B9D4D5915041DD5C5F34E82A554169BE6F5BD59150415B75DF8BE82A55410E0000006078829CD591504142695C83E52A55418EDDEEA3D8915041355C8934E12A55416B67B7C1EB915041904C6688EE2A55418B9B03FDFC915041614684ADFD2A5541E9E20462039250411FA9D3DE032B554129CCBDBA0B9250413AC3797C0C2B554169B5761314925041CBE660EB162B5541959DBAC4169250410BBD97A11B2B554125F87053129250413B9F2CFF1E2B5541F87F82A90B9250411B0E0D5F152B554197182C53FD915041FF503A26052B55416B67B7C1EB9150415E262FBCF52A55411FEE5370DF91504140123872EC2A55416078829CD591504142695C83E52A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554124BAF19209925041578C697C572B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 5300258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B55411E44FC9429925041D06392E17B2B5541EFB7AADD2C925041700F3ADB832B5541FB52E439419250412B41F1ACB22B5541D5D67E2244925041E0245356B92B55413D31860166925041F55C0D06B82B55415CA1FA6063925041FD7CE545B72B5541FCD9360E5692504158C9477CAF2B554146E2EDDC4F9250419BB1260BAA2B55418ADEB3F349925041ECC5CE91A32B5541D8EE6092439250415552E1479A2B554111B36CF93E925041C5D6FD2D912B554183279D3F36925041E8B32E017A2B5541F8C7967D2C9250412621AC735F2B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55419C6D8F9E0A925041773554FA582B55417264CCCE0A92504112A8599B512B5541B13E16BB1F925041EA4E2489512B554173111DBF24925041E27A2FA6502B55413129FCA625925041F6EA067C502B5541C060F39C26925041626E739B4E2B5541F52E20912492504139F6641D492B554134285CC01E925041C0622A683C2B554146CDB8E719925041D8ACE3B6322B5541C3020AD00E9250416D01DFB2212B5541D79B01D00792504150B4DF6F182B5541965CA622FA9150410EACF824092B55417EC0682EEE9150418E9E7083FD2A5541AD97B455DB915041E4243F8BEE2A554119528B31D3915041DF4183ECE82A55410103000000040000004900000098E15E68A793504158EA53119E2A5541AEC0ED5691935041FB059A738A2A554141CCCE5A8A935041F1332A6D822A554162205D99859350418F97E209712A554198F2C6AA83935041E1D4A256662A55413165BB84839350415ACD04B85D2A554126E7DFB1809350412E292BA0572A55413728EF4D7A935041A7218D014F2A5541733B68FB719350415057B5A4452A5541175AC8A16C9350419C7DADF43E2A554173E7D3C76C935041E9A3A544382A55412C840F416A935041C92913CC2F2A55415AB6DCAA489350414B487967342A554187E8A91427935041409C0D9B392A5541C329B3BB16935041EF384914372A5541C9BE568B15935041E33406AF462A554188F035D41193504119854B93472A554153ACBF14EC925041A2E4C0CA452A5541AB2A8FFDDA92504187536655412A554100000060CB925041B81E85EB462A55414ABCD793C192504114F0A7C3482A55417632BCCBC09250411E60561D4A2A5541FA0D3007C2925041E3DC0B1F502A55413344E1A6C7925041D827E306532A55418D156B16D09250412751ADDE562A5541F3BA152ED6925041AE9130C65F2A5541590880DDE0925041FD62BA35682A5541431567A5E29250416141AD25692A5541EA556C45E29250413510A4CD692A55414EE9874DE0925041DC31B1DD682A55415860C045DC9250411337DBDD652A5541BB4B1CB6D5925041989E178E612A5541E7F35D06D1925041AD0869BE5B2A5541AEBDAC66CB9250415382B636562A5541116B18B7C3925041D827E306532A554155DFB976CA925041C52C0996622A554140B35866D1925041F4FD104D742A5541403C206ED59250410DCA70BC7F2A554120490736D7925041CBF02514852A5541BCD4E3BDD992504124CF1804862A55412BF1C6CDDB925041501F1AEC852A55414DAB972DDF92504124B02074852A5541A7314AB5E4925041B47445D4822A554192E6F014EB925041E05A77447F2A5541D7798A64F292504165E1AB847B2A5541C35FB86301935041D3CC07F5742A5541CE7EB0F3019350410B5BF9FC752A554167C776CCF39250411760A1447C2A55419E24E134EC92504192D96C04802A5541855881C5E09250417D6F1BD4852A5541BC5DABC5DD925041D64D0EC4862A5541FE17FEDDD79250415C5D0A0C872A55419BC2D2F5DA925041A0F0A35B8E2A5541376DA70DDE925041A1796B63922A55417A398935E0925041268967AB922A55418600415DE5925041CDC96C4B922A5541B417FA6CEA9250411B6A6F1B922A5541AAEB985CF1925041A1796B63922A5541E51989C3049350418086522B942A5541785FB4F21393504196E33ADB952A5541BD5C1DBA1E93504127312743972A554152F2C71837935041CF38E40A9C2A5541FD1DA3FF4B935041AE90A2BAA02A554162E245A752935041138E8D3AA22A55416FC8F55E58935041FDB96C92A42A554122597A2E6193504140A5464AA72A5541E1DC173668935041A583393AA82A5541522A82E5729350411F933582A82A5541B896E4247E93504178333852A82A5541BAC76BC486935041BB954A02A72A5541DC0A042C8E93504183C968DAA42A55412D844D339B93504155D1A75AA02A554198E15E68A793504158EA53119E2A55410B00000088F82637E8925041BA473A69652A554151E88AE83E935041FB14B45F602A5541658DDBA554935041C14A0DB3612A5541127816A16E9350417793CA3A622A554188C418EC809350410B02502B612A55413D0DD6738193504115EC18AD652A5541127816A16E9350413CB3EC0F682A5541A69FCD603E9350417090F7F0652A5541FFA12E3125935041916A2F88672A55410D610694EE92504124C37DFA6A2A554188F82637E8925041BA473A69652A5541050000005BA3122450935041781F1130802A5541A55A559C4F935041FDB631D3792A554111A757E761935041C3EC8A267B2A5541C6EF146F629350414F42064F822A55415BA3122450935041781F1130802A554105000000AAA31D88F6925041ED9A54C1852A554178DC4925F4925041880CADFB802A5541F52B1FBA02935041FDB631D3792A554171AA359504935041673275647F2A5541AAA31D88F6925041ED9A54C1852A554101030000000100000022000000073D5DC9A7925041742690ED6F2A5541C8E84459A39250417D8B18E0762A5541F4F9ECC39D9250418F9185847D2A55415322AA3D999250412569C80A822A5541B748988092925041684DFD33882A5541B077DAF8889250415177718A912A554111D5468F819250419FCB7191982A5541BD7E775178925041B09C2F19A22A554197729D086B925041326768A2B02A5541431CCECA61925041EAB21474BA2A5541FCCD3A6861925041E37B9620BB2A55416EA574C461925041921127D1BB2A5541D3A25F446392504165C125E9BB2A5541B2FA1DF467925041DF733981BA2A55413B8B200B7A9250417ACE8E69B42A55413495EEE18F92504184DBF7E9AC2A5541A8DA9758A8925041AF196AC2A42A554110C3581FBF9250418CB7D9CA9C2A5541F0E1CEF6C89250416AFD086B992A5541D0777DC6CE9250415362309B962A5541A4B043E6D2925041D8E864DB922A554199FB1ACED59250411AA3B7F38C2A5541C66A1446D692504194EBFB13882A5541F3BA152ED69250417D6F1BD4852A5541E7125696D19250414E27DB24782A55417610C3CEC992504107DAF22D642A5541C3E90D77C49250413DAE958E582A554175FE33BFC1925041C1F6D9AE532A55411B2041CFC092504173EC0767502A554102F50567BE925041CD99C83F4E2A55419C717552BE92504150EE4E634E2A55415D295396AE92504102F03282652A5541C88CE056AC9250416837E3AE692A5541073D5DC9A7925041742690ED6F2A55410103000000020000002C00000006D1016DBD91504149650CF6962A5541F8D66E72C6915041F4F714309A2A554155C5D0AED4915041CB044DEB9F2A554142E6EDAEDF91504193F5E12BA42A55419746FE2DED915041AA09C770A92A55416FD10B3BFB9150413A8100E5AE2A5541AA4612AB0A925041D3BFE2B7B42A5541532A99AD0F9250416A4B9DCBB62A5541C9BF221A21925041A32FD2F4BC2A55415B5E1816249250415CE13E92BC2A554107A6267A2992504193C1D54DBE2A5541515B192B39925041F7B6B2E1BE2A5541622CD7B242925041D90F69B0BE2A5541B54DF7D34E9250412FCCF8B9BD2A554154BF798E5D925041477173B4BB2A5541B67FA70561925041B79BFF64B92A5541EA93BD2977925041E9B175F1A02A5541976F9E1D80925041647DDE2E982A5541BAB2F6B98C92504154E1CFC38B2A5541EF2CCDA998925041AC032099802A5541B4AD28989F92504117618C2F792A55416603C09BA5925041C8B41388702A5541230C4BABA3925041D0F0A411712A55419F59923B999250418ACD05C3742A5541B4A620048992504122DC89387A2A5541DADD689C70925041F86AEA91822A5541CDCCCCFC629250419A9999C9872A554148E17A243E92504152B81EA58D2A55417DA04950329250412941FB178F2A5541A711E9F62992504179AB91CB892A554142BDB0731892504168C9C41DA72A55419D3A66E111925041CF89D69BA42A55410001C89A07925041B490DF8EA12A5541609C0F83F891504167D014399D2A55419F2283CAEC9150417CE5E8D9992A5541634C7244E0915041E68F6DFF952A55410FEF7BE7D3915041FAEB3805912A5541F4E6479DC5915041F6C01E348C2A554127AE1BE6C6915041556BA359882A5541BAC93FB2BA915041D85516F1852A5541F7CE6486A0915041A4D5390D832A5541A85591959A9150413972AC4C852A554122F90CC899915041C2404250892A554106D1016DBD91504149650CF6962A5541050000007288382E039250417B571403AB2A55417FA83005F4915041495825AFA72A5541886FD963F4915041AD1185A6A52A5541F7EB8C5D03925041DE1074FAA82A55417288382E039250417B571403AB2A55410103000000010000000A00000085EB51380F9250418FC2F558BF2A5541790861320F925041C609FC0BB82A55415AEA6A050A925041EDDB8532B62A5541B35E4C4CFF9150412FEBF0F1B12A5541350B7488F79150413A8100E5AE2A5541E065E558E191504177D1807BA62A5541330FC9E4E691504136FB6C5DAA2A5541C7BB049EFC915041713FDA61B62A5541A07F694C0A925041A0360B80BD2A554185EB51380F9250418FC2F558BF2A55410103000000010000000400000085EB51380F9250418FC2F558BF2A5541F561A4790F9250418312AACFBF2A5541C558C3CB11925041299918D4C22A554185EB51380F9250418FC2F558BF2A55410103000000020000004A000000E76D51181C925041A6D82E0C192B55415819938715925041900BF733052B5541B986BCFA0C92504157182CD0E82A55411EDBF4120A925041C0B6D717E12A5541AA24B8510B9250413D9E96ADE02A554121363B7B0C9250410ABADEBFE32A5541C49E4D741392504115879C28FB2A55417A38E2411B92504170FC1AD1122B5541FEB4B2271D9250419970BD52182B55412CB5FFAD21925041CA053C3B152B554147F2EAA527925041B6CA1F7A112B5541EECBFC622E925041540AF2020E2B5541DA5FCFF2319250419C8D34820B2B5541E0619E293492504101B8C032092B554198DE5BAA369250411524EEA2052B5541FF6BA93B3F925041282D5A32F72A55417065243D44925041C19F0CA1EE2A5541E2934E5B46925041794DDBD0E92A5541C2B7550D49925041B4CC7FE2E22A55414A564B094C925041DADB5816DB2A55415F9167CA4F925041D643E818D32A5541CC2084925A92504153751122C02A5541ABB0B8B4599250414D7342EBBD2A5541893C4F6954925041B1681F7FBE2A5541E2934E5B46925041EF7F348EBF2A5541E3F90E273C92504135CEC7F0BF2A5541FC044AED2F925041A1FA22D8BF2A5541A27B9AC92B9250418353D9A6BF2A5541769B030E2A925041CDDAB993C12A55411BE1423B2D92504103BB504FC32A5541EECBFC622E925041C5A33B40C22A55410A3E977731925041CBA50A77C42A55415B2D07672B9250413A6AD65BCC2A5541211423212892504134680725CA2A55417C9DD2442C9250417D20F9C0C42A55416862B68328925041A7FCF10EC22A55416395966923925041711C5B53C02A554101D568F21F9250413DD43495C62A5541D5C3C08725925041262FBA9AC82A554153279AC22492504108575FBACF2A55413C540D041992504131FEA8EBCF2A5541A8B1799A11925041406CA592CE2A5541C558C3CB11925041299918D4C22A5541CEF8C4180992504174F60655BE2A55416CC94D05FF915041E245763FB92A5541BF2DB3E0FB915041C929D3C4B72A55414799C545F89150416AB188A4B52A5541640EB838EA915041292C06C9AD2A5541BFBBF020DF91504142CAD3F1A62A55414A2FC1BBD7915041FE3C93E0A22A55415D0EA4BBCC9150417F1A54889E2A5541C8DC6BC9BC9150414EDCA29E982A5541E1C8CD22AF915041467DEF0CBC2A5541CBB3F981B2915041B0EFB90AC52A5541E5F3E7F3B3915041CBE8B017C82A554163C27DF7B79150414AB7461BCC2A5541A4B46B11BE9150417FF02B9AD02A55415DA00900CD915041252ACAE0DA2A5541B209D5C3D0915041F3082A28DC2A55418ECA6C01D5915041F6027BD4DC2A55418D60C64DD891504173126BF9DD2A55414D403ED5DE915041110A9FCFE12A55414F6093C6E6915041F0C487B9E62A55414D096FB5ED915041A12D863EEC2A5541A9D347C4F3915041214A49B2F12A55419C7C23B3FA9150410F7CAB9EF72A554108BE75C401925041CEDEFACFFD2A5541471784240692504160590650012B554118D81B620A9250414014EF39062B5541D727E9F00C9250419FC59652092B5541940D10CC129250410F7E6266112B55413E8270A419925041EFC2FDFF1A2B55413A1F5EE71B925041FCE7A12D192B5541E76D51181C925041A6D82E0C192B554106000000847A003CF69150418E5EE866E72A554133D23FFCF5915041125F9857E12A5541A2676D4007925041A5D9DD6AE32A55413556EA16069250410EA1ED64E92A55416C9CA6AD04925041EF68AD4FE92A5541847A003CF69150418E5EE866E72A5541010300000002000000110000008A0D10CC129250411A5A15E9232B5541EFEAB0C81B925041B3CC03B0322B55411F4756BD279250415659A3F54C2B5541F3DA349129925041CEA64423522B554110F978D72C92504109B296A6542B5541EEE26656359250413E06EB94542B55416AA7A4733592504192359386522B5541B3E246B333925041CEC9A8254E2B55415A8396E6329250411F7CCF2A4C2B55419DC4354D3192504122C34B15492B5541D9584BEC2C925041B5CD85903F2B55413D76FC682A9250419B7372013A2B5541DD269AC2249250412C6BB4F82D2B55419BAADC4122925041F0E004D5292B5541A6E6FCC01992504179F9C8D31D2B5541250BF3F515925041AB31F4CD1F2B55418A0D10CC129250411A5A15E9232B55410900000059C1ADF8199250415042E1DE1F2B55412C7DE83E239250417D525230302B5541B93A3A862A9250419446B1283E2B5541148F709131925041272959F24E2B554169FDD0D02B925041D6EBEF3C502B5541DC3F7F8924925041C7AFCC643E2B5541BE5464BA1D9250416205494D322B554142E41B561492504124A8CE18242B554159C1ADF8199250415042E1DE1F2B55410103000000010000000D00000022CD92764392504159E8F9D1532B55413F2C23A0429250414C416D31512B554105F6FDFA3D925041CB1622374B2B554168BE18832F925041B6617B8C392B5541EA4654772C925041D70788A0352B55415CAB81DE269250411BDD1C032E2B5541ED57CB5F2692504103788FB22E2B5541E299CAAF29925041D48A06B4352B554155538E0B30925041F87A2FFB432B554172E82337329250412DB751C7482B55412C6008E6369250418C3B90AD522B5541E32466A638925041467D6F5A542B554122CD92764392504159E8F9D1532B5541010300000001000000160000002480196546925041E0A03DA1532B554116A283414892504127C3AF47532B55413AB9D77F6E925041292FA603512B55416E8D23606C9250419D03780F512B5541F2F1A44C6C925041C61491B04F2B5541D5D36006699250410113B88E4D2B5541DC583B136492504176D80824492B5541B28E9BD0579250418187B5B23F2B554187C4FB8D4B925041109BE32D362B55411A775A6046925041856034C3312B55410970F6D83D9250413EEDAE0F2B2B554136CFEC5F37925041C9D60A09262B55414854C76C329250413B415313222B5541EAC961FA309250415C8969DB202B55418C33C4E92F9250417A6D7AE9202B55417A58813B27925041D8F49C132B2B5541C27BB94927925041D5E8F6AD2C2B5541BE6A42612D92504170375035352B5541EEAC615432925041E66D957D3B2B554151781C2539925041FAF7B0E7432B5541F28A73833E925041E1FE2D9B4A2B55412480196546925041E0A03DA1532B55410103000000010000001B00000006A564D07D925041B8B98825502B554106A564D07D925041D9019FED4E2B5541A5BFF6D27C925041F4B7AF034E2B5541D82E699168925041A761D12C3E2B5541AFE23FD44E92504167FEC7B0292B554169628F7B439250415EC06602212B5541CF64A4553B92504112BBDB9C1A2B55411B19DC4938925041534B082D182B55412A3D4FD536925041E1D5ECED172B554198DE5BAA3692504152A43137182B5541CC6B7E453192504146474F2C1F2B5541D45D5F433192504178BD0B2F1F2B5541C1B8485932925041E8B6EDA0202B5541C79BA17C3B9250412761707B272B55419705AECE41925041181393952C2B5541259B65C445925041BBCC55EF2F2B5541E8A9698B4C925041AC7E7809352B554138D9C6724E925041761257DD362B5541DC9289CC5192504135822A4D392B55417C154FFF54925041EB28FBE33B2B554133BC1F96579250412BC652193E2B554114B8319A5D925041AE37FFAA422B5541D39C63DF68925041B9AC5D804B2B5541D73B94366D925041D1389C144F2B5541B22DC5CF6F925041B42EBFEF502B5541F5F2FBAB72925041ECB75DC4502B554106A564D07D925041B8B98825502B55410103000000020000001400000069BE6F5BD59150415B75DF8BE82A554183F755C3E8915041452D4DAEF62A55416907F7F3FB91504161A90F0B082B5541C613E6E00A925041FE52562D192B5541AA65A9841192504198D3ABC1212B55412DEF857A1892504143C9E4061C2B5541D85E30701892504167DF4DF81B2B5541862641C215925041FEAFC452172B554107F7FBAB0C9250417F6DFD990A2B5541CA0794FF049250416DD62EA6012B5541EB26A7D0F89150410F7CAB9EF72A55412F08FA0DE891504140FFB5CFE82A5541CBCC5650E0915041F4AB56C3E32A5541F17565C6D8915041F19E8374DF2A5541FF5C34D0D59150414343583EDE2A5541E2D8E77ED09150410280A32ADD2A5541FEAF82FACD915041C2ACC65ADC2A554105CF147CD491504100FD821EE62A5541DF99B9D4D5915041DD5C5F34E82A554169BE6F5BD59150415B75DF8BE82A55410E0000006078829CD591504142695C83E52A55418EDDEEA3D8915041355C8934E12A55416B67B7C1EB915041904C6688EE2A55418B9B03FDFC915041614684ADFD2A5541E9E20462039250411FA9D3DE032B554129CCBDBA0B9250413AC3797C0C2B554169B5761314925041CBE660EB162B5541959DBAC4169250410BBD97A11B2B554125F87053129250413B9F2CFF1E2B5541F87F82A90B9250411B0E0D5F152B554197182C53FD915041FF503A26052B55416B67B7C1EB9150415E262FBCF52A55411FEE5370DF91504140123872EC2A55416078829CD591504142695C83E52A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554124BAF19209925041578C697C572B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 402665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B55411E44FC9429925041D06392E17B2B5541EFB7AADD2C925041700F3ADB832B5541FB52E439419250412B41F1ACB22B5541D5D67E2244925041E0245356B92B55413D31860166925041F55C0D06B82B55415CA1FA6063925041FD7CE545B72B5541FCD9360E5692504158C9477CAF2B554146E2EDDC4F9250419BB1260BAA2B55418ADEB3F349925041ECC5CE91A32B5541D8EE6092439250415552E1479A2B554111B36CF93E925041C5D6FD2D912B554183279D3F36925041E8B32E017A2B5541F8C7967D2C9250412621AC735F2B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55419C6D8F9E0A925041773554FA582B55417264CCCE0A92504112A8599B512B5541B13E16BB1F925041EA4E2489512B554173111DBF24925041E27A2FA6502B55413129FCA625925041F6EA067C502B5541C060F39C26925041626E739B4E2B5541F52E20912492504139F6641D492B554134285CC01E925041C0622A683C2B554146CDB8E719925041D8ACE3B6322B5541C3020AD00E9250416D01DFB2212B5541D79B01D00792504150B4DF6F182B5541965CA622FA9150410EACF824092B55417EC0682EEE9150418E9E7083FD2A5541AD97B455DB915041E4243F8BEE2A554119528B31D3915041DF4183ECE82A55410103000000040000004900000098E15E68A793504158EA53119E2A5541AEC0ED5691935041FB059A738A2A554141CCCE5A8A935041F1332A6D822A554162205D99859350418F97E209712A554198F2C6AA83935041E1D4A256662A55413165BB84839350415ACD04B85D2A554126E7DFB1809350412E292BA0572A55413728EF4D7A935041A7218D014F2A5541733B68FB719350415057B5A4452A5541175AC8A16C9350419C7DADF43E2A554173E7D3C76C935041E9A3A544382A55412C840F416A935041C92913CC2F2A55415AB6DCAA489350414B487967342A554187E8A91427935041409C0D9B392A5541C329B3BB16935041EF384914372A5541C9BE568B15935041E33406AF462A554188F035D41193504119854B93472A554153ACBF14EC925041A2E4C0CA452A5541AB2A8FFDDA92504187536655412A554100000060CB925041B81E85EB462A55414ABCD793C192504114F0A7C3482A55417632BCCBC09250411E60561D4A2A5541FA0D3007C2925041E3DC0B1F502A55413344E1A6C7925041D827E306532A55418D156B16D09250412751ADDE562A5541F3BA152ED6925041AE9130C65F2A5541590880DDE0925041FD62BA35682A5541431567A5E29250416141AD25692A5541EA556C45E29250413510A4CD692A55414EE9874DE0925041DC31B1DD682A55415860C045DC9250411337DBDD652A5541BB4B1CB6D5925041989E178E612A5541E7F35D06D1925041AD0869BE5B2A5541AEBDAC66CB9250415382B636562A5541116B18B7C3925041D827E306532A554155DFB976CA925041C52C0996622A554140B35866D1925041F4FD104D742A5541403C206ED59250410DCA70BC7F2A554120490736D7925041CBF02514852A5541BCD4E3BDD992504124CF1804862A55412BF1C6CDDB925041501F1AEC852A55414DAB972DDF92504124B02074852A5541A7314AB5E4925041B47445D4822A554192E6F014EB925041E05A77447F2A5541D7798A64F292504165E1AB847B2A5541C35FB86301935041D3CC07F5742A5541CE7EB0F3019350410B5BF9FC752A554167C776CCF39250411760A1447C2A55419E24E134EC92504192D96C04802A5541855881C5E09250417D6F1BD4852A5541BC5DABC5DD925041D64D0EC4862A5541FE17FEDDD79250415C5D0A0C872A55419BC2D2F5DA925041A0F0A35B8E2A5541376DA70DDE925041A1796B63922A55417A398935E0925041268967AB922A55418600415DE5925041CDC96C4B922A5541B417FA6CEA9250411B6A6F1B922A5541AAEB985CF1925041A1796B63922A5541E51989C3049350418086522B942A5541785FB4F21393504196E33ADB952A5541BD5C1DBA1E93504127312743972A554152F2C71837935041CF38E40A9C2A5541FD1DA3FF4B935041AE90A2BAA02A554162E245A752935041138E8D3AA22A55416FC8F55E58935041FDB96C92A42A554122597A2E6193504140A5464AA72A5541E1DC173668935041A583393AA82A5541522A82E5729350411F933582A82A5541B896E4247E93504178333852A82A5541BAC76BC486935041BB954A02A72A5541DC0A042C8E93504183C968DAA42A55412D844D339B93504155D1A75AA02A554198E15E68A793504158EA53119E2A55410B00000088F82637E8925041BA473A69652A554151E88AE83E935041FB14B45F602A5541658DDBA554935041C14A0DB3612A5541127816A16E9350417793CA3A622A554188C418EC809350410B02502B612A55413D0DD6738193504115EC18AD652A5541127816A16E9350413CB3EC0F682A5541A69FCD603E9350417090F7F0652A5541FFA12E3125935041916A2F88672A55410D610694EE92504124C37DFA6A2A554188F82637E8925041BA473A69652A5541050000005BA3122450935041781F1130802A5541A55A559C4F935041FDB631D3792A554111A757E761935041C3EC8A267B2A5541C6EF146F629350414F42064F822A55415BA3122450935041781F1130802A554105000000AAA31D88F6925041ED9A54C1852A554178DC4925F4925041880CADFB802A5541F52B1FBA02935041FDB631D3792A554171AA359504935041673275647F2A5541AAA31D88F6925041ED9A54C1852A554101030000000100000022000000073D5DC9A7925041742690ED6F2A5541C8E84459A39250417D8B18E0762A5541F4F9ECC39D9250418F9185847D2A55415322AA3D999250412569C80A822A5541B748988092925041684DFD33882A5541B077DAF8889250415177718A912A554111D5468F819250419FCB7191982A5541BD7E775178925041B09C2F19A22A554197729D086B925041326768A2B02A5541431CCECA61925041EAB21474BA2A5541FCCD3A6861925041E37B9620BB2A55416EA574C461925041921127D1BB2A5541D3A25F446392504165C125E9BB2A5541B2FA1DF467925041DF733981BA2A55413B8B200B7A9250417ACE8E69B42A55413495EEE18F92504184DBF7E9AC2A5541A8DA9758A8925041AF196AC2A42A554110C3581FBF9250418CB7D9CA9C2A5541F0E1CEF6C89250416AFD086B992A5541D0777DC6CE9250415362309B962A5541A4B043E6D2925041D8E864DB922A554199FB1ACED59250411AA3B7F38C2A5541C66A1446D692504194EBFB13882A5541F3BA152ED69250417D6F1BD4852A5541E7125696D19250414E27DB24782A55417610C3CEC992504107DAF22D642A5541C3E90D77C49250413DAE958E582A554175FE33BFC1925041C1F6D9AE532A55411B2041CFC092504173EC0767502A554102F50567BE925041CD99C83F4E2A55419C717552BE92504150EE4E634E2A55415D295396AE92504102F03282652A5541C88CE056AC9250416837E3AE692A5541073D5DC9A7925041742690ED6F2A55410103000000020000002C00000006D1016DBD91504149650CF6962A5541F8D66E72C6915041F4F714309A2A554155C5D0AED4915041CB044DEB9F2A554142E6EDAEDF91504193F5E12BA42A55419746FE2DED915041AA09C770A92A55416FD10B3BFB9150413A8100E5AE2A5541AA4612AB0A925041D3BFE2B7B42A5541532A99AD0F9250416A4B9DCBB62A5541C9BF221A21925041A32FD2F4BC2A55415B5E1816249250415CE13E92BC2A554107A6267A2992504193C1D54DBE2A5541515B192B39925041F7B6B2E1BE2A5541622CD7B242925041D90F69B0BE2A5541B54DF7D34E9250412FCCF8B9BD2A554154BF798E5D925041477173B4BB2A5541B67FA70561925041B79BFF64B92A5541EA93BD2977925041E9B175F1A02A5541976F9E1D80925041647DDE2E982A5541BAB2F6B98C92504154E1CFC38B2A5541EF2CCDA998925041AC032099802A5541B4AD28989F92504117618C2F792A55416603C09BA5925041C8B41388702A5541230C4BABA3925041D0F0A411712A55419F59923B999250418ACD05C3742A5541B4A620048992504122DC89387A2A5541DADD689C70925041F86AEA91822A5541CDCCCCFC629250419A9999C9872A554148E17A243E92504152B81EA58D2A55417DA04950329250412941FB178F2A5541A711E9F62992504179AB91CB892A554142BDB0731892504168C9C41DA72A55419D3A66E111925041CF89D69BA42A55410001C89A07925041B490DF8EA12A5541609C0F83F891504167D014399D2A55419F2283CAEC9150417CE5E8D9992A5541634C7244E0915041E68F6DFF952A55410FEF7BE7D3915041FAEB3805912A5541F4E6479DC5915041F6C01E348C2A554127AE1BE6C6915041556BA359882A5541BAC93FB2BA915041D85516F1852A5541F7CE6486A0915041A4D5390D832A5541A85591959A9150413972AC4C852A554122F90CC899915041C2404250892A554106D1016DBD91504149650CF6962A5541050000007288382E039250417B571403AB2A55417FA83005F4915041495825AFA72A5541886FD963F4915041AD1185A6A52A5541F7EB8C5D03925041DE1074FAA82A55417288382E039250417B571403AB2A55410103000000010000000A00000085EB51380F9250418FC2F558BF2A5541790861320F925041C609FC0BB82A55415AEA6A050A925041EDDB8532B62A5541B35E4C4CFF9150412FEBF0F1B12A5541350B7488F79150413A8100E5AE2A5541E065E558E191504177D1807BA62A5541330FC9E4E691504136FB6C5DAA2A5541C7BB049EFC915041713FDA61B62A5541A07F694C0A925041A0360B80BD2A554185EB51380F9250418FC2F558BF2A55410103000000010000000400000085EB51380F9250418FC2F558BF2A5541F561A4790F9250418312AACFBF2A5541C558C3CB11925041299918D4C22A554185EB51380F9250418FC2F558BF2A55410103000000020000004A000000E76D51181C925041A6D82E0C192B55415819938715925041900BF733052B5541B986BCFA0C92504157182CD0E82A55411EDBF4120A925041C0B6D717E12A5541AA24B8510B9250413D9E96ADE02A554121363B7B0C9250410ABADEBFE32A5541C49E4D741392504115879C28FB2A55417A38E2411B92504170FC1AD1122B5541FEB4B2271D9250419970BD52182B55412CB5FFAD21925041CA053C3B152B554147F2EAA527925041B6CA1F7A112B5541EECBFC622E925041540AF2020E2B5541DA5FCFF2319250419C8D34820B2B5541E0619E293492504101B8C032092B554198DE5BAA369250411524EEA2052B5541FF6BA93B3F925041282D5A32F72A55417065243D44925041C19F0CA1EE2A5541E2934E5B46925041794DDBD0E92A5541C2B7550D49925041B4CC7FE2E22A55414A564B094C925041DADB5816DB2A55415F9167CA4F925041D643E818D32A5541CC2084925A92504153751122C02A5541ABB0B8B4599250414D7342EBBD2A5541893C4F6954925041B1681F7FBE2A5541E2934E5B46925041EF7F348EBF2A5541E3F90E273C92504135CEC7F0BF2A5541FC044AED2F925041A1FA22D8BF2A5541A27B9AC92B9250418353D9A6BF2A5541769B030E2A925041CDDAB993C12A55411BE1423B2D92504103BB504FC32A5541EECBFC622E925041C5A33B40C22A55410A3E977731925041CBA50A77C42A55415B2D07672B9250413A6AD65BCC2A5541211423212892504134680725CA2A55417C9DD2442C9250417D20F9C0C42A55416862B68328925041A7FCF10EC22A55416395966923925041711C5B53C02A554101D568F21F9250413DD43495C62A5541D5C3C08725925041262FBA9AC82A554153279AC22492504108575FBACF2A55413C540D041992504131FEA8EBCF2A5541A8B1799A11925041406CA592CE2A5541C558C3CB11925041299918D4C22A5541CEF8C4180992504174F60655BE2A55416CC94D05FF915041E245763FB92A5541BF2DB3E0FB915041C929D3C4B72A55414799C545F89150416AB188A4B52A5541640EB838EA915041292C06C9AD2A5541BFBBF020DF91504142CAD3F1A62A55414A2FC1BBD7915041FE3C93E0A22A55415D0EA4BBCC9150417F1A54889E2A5541C8DC6BC9BC9150414EDCA29E982A5541E1C8CD22AF915041467DEF0CBC2A5541CBB3F981B2915041B0EFB90AC52A5541E5F3E7F3B3915041CBE8B017C82A554163C27DF7B79150414AB7461BCC2A5541A4B46B11BE9150417FF02B9AD02A55415DA00900CD915041252ACAE0DA2A5541B209D5C3D0915041F3082A28DC2A55418ECA6C01D5915041F6027BD4DC2A55418D60C64DD891504173126BF9DD2A55414D403ED5DE915041110A9FCFE12A55414F6093C6E6915041F0C487B9E62A55414D096FB5ED915041A12D863EEC2A5541A9D347C4F3915041214A49B2F12A55419C7C23B3FA9150410F7CAB9EF72A554108BE75C401925041CEDEFACFFD2A5541471784240692504160590650012B554118D81B620A9250414014EF39062B5541D727E9F00C9250419FC59652092B5541940D10CC129250410F7E6266112B55413E8270A419925041EFC2FDFF1A2B55413A1F5EE71B925041FCE7A12D192B5541E76D51181C925041A6D82E0C192B554106000000847A003CF69150418E5EE866E72A554133D23FFCF5915041125F9857E12A5541A2676D4007925041A5D9DD6AE32A55413556EA16069250410EA1ED64E92A55416C9CA6AD04925041EF68AD4FE92A5541847A003CF69150418E5EE866E72A5541010300000002000000110000008A0D10CC129250411A5A15E9232B5541EFEAB0C81B925041B3CC03B0322B55411F4756BD279250415659A3F54C2B5541F3DA349129925041CEA64423522B554110F978D72C92504109B296A6542B5541EEE26656359250413E06EB94542B55416AA7A4733592504192359386522B5541B3E246B333925041CEC9A8254E2B55415A8396E6329250411F7CCF2A4C2B55419DC4354D3192504122C34B15492B5541D9584BEC2C925041B5CD85903F2B55413D76FC682A9250419B7372013A2B5541DD269AC2249250412C6BB4F82D2B55419BAADC4122925041F0E004D5292B5541A6E6FCC01992504179F9C8D31D2B5541250BF3F515925041AB31F4CD1F2B55418A0D10CC129250411A5A15E9232B55410900000059C1ADF8199250415042E1DE1F2B55412C7DE83E239250417D525230302B5541B93A3A862A9250419446B1283E2B5541148F709131925041272959F24E2B554169FDD0D02B925041D6EBEF3C502B5541DC3F7F8924925041C7AFCC643E2B5541BE5464BA1D9250416205494D322B554142E41B561492504124A8CE18242B554159C1ADF8199250415042E1DE1F2B55410103000000010000000D00000022CD92764392504159E8F9D1532B55413F2C23A0429250414C416D31512B554105F6FDFA3D925041CB1622374B2B554168BE18832F925041B6617B8C392B5541EA4654772C925041D70788A0352B55415CAB81DE269250411BDD1C032E2B5541ED57CB5F2692504103788FB22E2B5541E299CAAF29925041D48A06B4352B554155538E0B30925041F87A2FFB432B554172E82337329250412DB751C7482B55412C6008E6369250418C3B90AD522B5541E32466A638925041467D6F5A542B554122CD92764392504159E8F9D1532B5541010300000001000000160000002480196546925041E0A03DA1532B554116A283414892504127C3AF47532B55413AB9D77F6E925041292FA603512B55416E8D23606C9250419D03780F512B5541F2F1A44C6C925041C61491B04F2B5541D5D36006699250410113B88E4D2B5541DC583B136492504176D80824492B5541B28E9BD0579250418187B5B23F2B554187C4FB8D4B925041109BE32D362B55411A775A6046925041856034C3312B55410970F6D83D9250413EEDAE0F2B2B554136CFEC5F37925041C9D60A09262B55414854C76C329250413B415313222B5541EAC961FA309250415C8969DB202B55418C33C4E92F9250417A6D7AE9202B55417A58813B27925041D8F49C132B2B5541C27BB94927925041D5E8F6AD2C2B5541BE6A42612D92504170375035352B5541EEAC615432925041E66D957D3B2B554151781C2539925041FAF7B0E7432B5541F28A73833E925041E1FE2D9B4A2B55412480196546925041E0A03DA1532B55410103000000010000001B00000006A564D07D925041B8B98825502B554106A564D07D925041D9019FED4E2B5541A5BFF6D27C925041F4B7AF034E2B5541D82E699168925041A761D12C3E2B5541AFE23FD44E92504167FEC7B0292B554169628F7B439250415EC06602212B5541CF64A4553B92504112BBDB9C1A2B55411B19DC4938925041534B082D182B55412A3D4FD536925041E1D5ECED172B554198DE5BAA3692504152A43137182B5541CC6B7E453192504146474F2C1F2B5541D45D5F433192504178BD0B2F1F2B5541C1B8485932925041E8B6EDA0202B5541C79BA17C3B9250412761707B272B55419705AECE41925041181393952C2B5541259B65C445925041BBCC55EF2F2B5541E8A9698B4C925041AC7E7809352B554138D9C6724E925041761257DD362B5541DC9289CC5192504135822A4D392B55417C154FFF54925041EB28FBE33B2B554133BC1F96579250412BC652193E2B554114B8319A5D925041AE37FFAA422B5541D39C63DF68925041B9AC5D804B2B5541D73B94366D925041D1389C144F2B5541B22DC5CF6F925041B42EBFEF502B5541F5F2FBAB72925041ECB75DC4502B554106A564D07D925041B8B98825502B55410103000000020000001400000069BE6F5BD59150415B75DF8BE82A554183F755C3E8915041452D4DAEF62A55416907F7F3FB91504161A90F0B082B5541C613E6E00A925041FE52562D192B5541AA65A9841192504198D3ABC1212B55412DEF857A1892504143C9E4061C2B5541D85E30701892504167DF4DF81B2B5541862641C215925041FEAFC452172B554107F7FBAB0C9250417F6DFD990A2B5541CA0794FF049250416DD62EA6012B5541EB26A7D0F89150410F7CAB9EF72A55412F08FA0DE891504140FFB5CFE82A5541CBCC5650E0915041F4AB56C3E32A5541F17565C6D8915041F19E8374DF2A5541FF5C34D0D59150414343583EDE2A5541E2D8E77ED09150410280A32ADD2A5541FEAF82FACD915041C2ACC65ADC2A554105CF147CD491504100FD821EE62A5541DF99B9D4D5915041DD5C5F34E82A554169BE6F5BD59150415B75DF8BE82A55410E0000006078829CD591504142695C83E52A55418EDDEEA3D8915041355C8934E12A55416B67B7C1EB915041904C6688EE2A55418B9B03FDFC915041614684ADFD2A5541E9E20462039250411FA9D3DE032B554129CCBDBA0B9250413AC3797C0C2B554169B5761314925041CBE660EB162B5541959DBAC4169250410BBD97A11B2B554125F87053129250413B9F2CFF1E2B5541F87F82A90B9250411B0E0D5F152B554197182C53FD915041FF503A26052B55416B67B7C1EB9150415E262FBCF52A55411FEE5370DF91504140123872EC2A55416078829CD591504142695C83E52A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554124BAF19209925041578C697C572B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 423979
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B55411E44FC9429925041D06392E17B2B5541EFB7AADD2C925041700F3ADB832B5541FB52E439419250412B41F1ACB22B5541D5D67E2244925041E0245356B92B55413D31860166925041F55C0D06B82B55415CA1FA6063925041FD7CE545B72B5541FCD9360E5692504158C9477CAF2B554146E2EDDC4F9250419BB1260BAA2B55418ADEB3F349925041ECC5CE91A32B5541D8EE6092439250415552E1479A2B554111B36CF93E925041C5D6FD2D912B554183279D3F36925041E8B32E017A2B5541F8C7967D2C9250412621AC735F2B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55419C6D8F9E0A925041773554FA582B55417264CCCE0A92504112A8599B512B5541B13E16BB1F925041EA4E2489512B554173111DBF24925041E27A2FA6502B55413129FCA625925041F6EA067C502B5541C060F39C26925041626E739B4E2B5541F52E20912492504139F6641D492B554134285CC01E925041C0622A683C2B554146CDB8E719925041D8ACE3B6322B5541C3020AD00E9250416D01DFB2212B5541D79B01D00792504150B4DF6F182B5541965CA622FA9150410EACF824092B55417EC0682EEE9150418E9E7083FD2A5541AD97B455DB915041E4243F8BEE2A554119528B31D3915041DF4183ECE82A55410103000000040000004900000098E15E68A793504158EA53119E2A5541AEC0ED5691935041FB059A738A2A554141CCCE5A8A935041F1332A6D822A554162205D99859350418F97E209712A554198F2C6AA83935041E1D4A256662A55413165BB84839350415ACD04B85D2A554126E7DFB1809350412E292BA0572A55413728EF4D7A935041A7218D014F2A5541733B68FB719350415057B5A4452A5541175AC8A16C9350419C7DADF43E2A554173E7D3C76C935041E9A3A544382A55412C840F416A935041C92913CC2F2A55415AB6DCAA489350414B487967342A554187E8A91427935041409C0D9B392A5541C329B3BB16935041EF384914372A5541C9BE568B15935041E33406AF462A554188F035D41193504119854B93472A554153ACBF14EC925041A2E4C0CA452A5541AB2A8FFDDA92504187536655412A554100000060CB925041B81E85EB462A55414ABCD793C192504114F0A7C3482A55417632BCCBC09250411E60561D4A2A5541FA0D3007C2925041E3DC0B1F502A55413344E1A6C7925041D827E306532A55418D156B16D09250412751ADDE562A5541F3BA152ED6925041AE9130C65F2A5541590880DDE0925041FD62BA35682A5541431567A5E29250416141AD25692A5541EA556C45E29250413510A4CD692A55414EE9874DE0925041DC31B1DD682A55415860C045DC9250411337DBDD652A5541BB4B1CB6D5925041989E178E612A5541E7F35D06D1925041AD0869BE5B2A5541AEBDAC66CB9250415382B636562A5541116B18B7C3925041D827E306532A554155DFB976CA925041C52C0996622A554140B35866D1925041F4FD104D742A5541403C206ED59250410DCA70BC7F2A554120490736D7925041CBF02514852A5541BCD4E3BDD992504124CF1804862A55412BF1C6CDDB925041501F1AEC852A55414DAB972DDF92504124B02074852A5541A7314AB5E4925041B47445D4822A554192E6F014EB925041E05A77447F2A5541D7798A64F292504165E1AB847B2A5541C35FB86301935041D3CC07F5742A5541CE7EB0F3019350410B5BF9FC752A554167C776CCF39250411760A1447C2A55419E24E134EC92504192D96C04802A5541855881C5E09250417D6F1BD4852A5541BC5DABC5DD925041D64D0EC4862A5541FE17FEDDD79250415C5D0A0C872A55419BC2D2F5DA925041A0F0A35B8E2A5541376DA70DDE925041A1796B63922A55417A398935E0925041268967AB922A55418600415DE5925041CDC96C4B922A5541B417FA6CEA9250411B6A6F1B922A5541AAEB985CF1925041A1796B63922A5541E51989C3049350418086522B942A5541785FB4F21393504196E33ADB952A5541BD5C1DBA1E93504127312743972A554152F2C71837935041CF38E40A9C2A5541FD1DA3FF4B935041AE90A2BAA02A554162E245A752935041138E8D3AA22A55416FC8F55E58935041FDB96C92A42A554122597A2E6193504140A5464AA72A5541E1DC173668935041A583393AA82A5541522A82E5729350411F933582A82A5541B896E4247E93504178333852A82A5541BAC76BC486935041BB954A02A72A5541DC0A042C8E93504183C968DAA42A55412D844D339B93504155D1A75AA02A554198E15E68A793504158EA53119E2A55410B00000088F82637E8925041BA473A69652A554151E88AE83E935041FB14B45F602A5541658DDBA554935041C14A0DB3612A5541127816A16E9350417793CA3A622A554188C418EC809350410B02502B612A55413D0DD6738193504115EC18AD652A5541127816A16E9350413CB3EC0F682A5541A69FCD603E9350417090F7F0652A5541FFA12E3125935041916A2F88672A55410D610694EE92504124C37DFA6A2A554188F82637E8925041BA473A69652A5541050000005BA3122450935041781F1130802A5541A55A559C4F935041FDB631D3792A554111A757E761935041C3EC8A267B2A5541C6EF146F629350414F42064F822A55415BA3122450935041781F1130802A554105000000AAA31D88F6925041ED9A54C1852A554178DC4925F4925041880CADFB802A5541F52B1FBA02935041FDB631D3792A554171AA359504935041673275647F2A5541AAA31D88F6925041ED9A54C1852A554101030000000100000022000000073D5DC9A7925041742690ED6F2A5541C8E84459A39250417D8B18E0762A5541F4F9ECC39D9250418F9185847D2A55415322AA3D999250412569C80A822A5541B748988092925041684DFD33882A5541B077DAF8889250415177718A912A554111D5468F819250419FCB7191982A5541BD7E775178925041B09C2F19A22A554197729D086B925041326768A2B02A5541431CCECA61925041EAB21474BA2A5541FCCD3A6861925041E37B9620BB2A55416EA574C461925041921127D1BB2A5541D3A25F446392504165C125E9BB2A5541B2FA1DF467925041DF733981BA2A55413B8B200B7A9250417ACE8E69B42A55413495EEE18F92504184DBF7E9AC2A5541A8DA9758A8925041AF196AC2A42A554110C3581FBF9250418CB7D9CA9C2A5541F0E1CEF6C89250416AFD086B992A5541D0777DC6CE9250415362309B962A5541A4B043E6D2925041D8E864DB922A554199FB1ACED59250411AA3B7F38C2A5541C66A1446D692504194EBFB13882A5541F3BA152ED69250417D6F1BD4852A5541E7125696D19250414E27DB24782A55417610C3CEC992504107DAF22D642A5541C3E90D77C49250413DAE958E582A554175FE33BFC1925041C1F6D9AE532A55411B2041CFC092504173EC0767502A554102F50567BE925041CD99C83F4E2A55419C717552BE92504150EE4E634E2A55415D295396AE92504102F03282652A5541C88CE056AC9250416837E3AE692A5541073D5DC9A7925041742690ED6F2A55410103000000020000002C00000006D1016DBD91504149650CF6962A5541F8D66E72C6915041F4F714309A2A554155C5D0AED4915041CB044DEB9F2A554142E6EDAEDF91504193F5E12BA42A55419746FE2DED915041AA09C770A92A55416FD10B3BFB9150413A8100E5AE2A5541AA4612AB0A925041D3BFE2B7B42A5541532A99AD0F9250416A4B9DCBB62A5541C9BF221A21925041A32FD2F4BC2A55415B5E1816249250415CE13E92BC2A554107A6267A2992504193C1D54DBE2A5541515B192B39925041F7B6B2E1BE2A5541622CD7B242925041D90F69B0BE2A5541B54DF7D34E9250412FCCF8B9BD2A554154BF798E5D925041477173B4BB2A5541B67FA70561925041B79BFF64B92A5541EA93BD2977925041E9B175F1A02A5541976F9E1D80925041647DDE2E982A5541BAB2F6B98C92504154E1CFC38B2A5541EF2CCDA998925041AC032099802A5541B4AD28989F92504117618C2F792A55416603C09BA5925041C8B41388702A5541230C4BABA3925041D0F0A411712A55419F59923B999250418ACD05C3742A5541B4A620048992504122DC89387A2A5541DADD689C70925041F86AEA91822A5541CDCCCCFC629250419A9999C9872A554148E17A243E92504152B81EA58D2A55417DA04950329250412941FB178F2A5541A711E9F62992504179AB91CB892A554142BDB0731892504168C9C41DA72A55419D3A66E111925041CF89D69BA42A55410001C89A07925041B490DF8EA12A5541609C0F83F891504167D014399D2A55419F2283CAEC9150417CE5E8D9992A5541634C7244E0915041E68F6DFF952A55410FEF7BE7D3915041FAEB3805912A5541F4E6479DC5915041F6C01E348C2A554127AE1BE6C6915041556BA359882A5541BAC93FB2BA915041D85516F1852A5541F7CE6486A0915041A4D5390D832A5541A85591959A9150413972AC4C852A554122F90CC899915041C2404250892A554106D1016DBD91504149650CF6962A5541050000007288382E039250417B571403AB2A55417FA83005F4915041495825AFA72A5541886FD963F4915041AD1185A6A52A5541F7EB8C5D03925041DE1074FAA82A55417288382E039250417B571403AB2A55410103000000010000000A00000085EB51380F9250418FC2F558BF2A5541790861320F925041C609FC0BB82A55415AEA6A050A925041EDDB8532B62A5541B35E4C4CFF9150412FEBF0F1B12A5541350B7488F79150413A8100E5AE2A5541E065E558E191504177D1807BA62A5541330FC9E4E691504136FB6C5DAA2A5541C7BB049EFC915041713FDA61B62A5541A07F694C0A925041A0360B80BD2A554185EB51380F9250418FC2F558BF2A55410103000000010000000400000085EB51380F9250418FC2F558BF2A5541F561A4790F9250418312AACFBF2A5541C558C3CB11925041299918D4C22A554185EB51380F9250418FC2F558BF2A55410103000000020000004A000000E76D51181C925041A6D82E0C192B55415819938715925041900BF733052B5541B986BCFA0C92504157182CD0E82A55411EDBF4120A925041C0B6D717E12A5541AA24B8510B9250413D9E96ADE02A554121363B7B0C9250410ABADEBFE32A5541C49E4D741392504115879C28FB2A55417A38E2411B92504170FC1AD1122B5541FEB4B2271D9250419970BD52182B55412CB5FFAD21925041CA053C3B152B554147F2EAA527925041B6CA1F7A112B5541EECBFC622E925041540AF2020E2B5541DA5FCFF2319250419C8D34820B2B5541E0619E293492504101B8C032092B554198DE5BAA369250411524EEA2052B5541FF6BA93B3F925041282D5A32F72A55417065243D44925041C19F0CA1EE2A5541E2934E5B46925041794DDBD0E92A5541C2B7550D49925041B4CC7FE2E22A55414A564B094C925041DADB5816DB2A55415F9167CA4F925041D643E818D32A5541CC2084925A92504153751122C02A5541ABB0B8B4599250414D7342EBBD2A5541893C4F6954925041B1681F7FBE2A5541E2934E5B46925041EF7F348EBF2A5541E3F90E273C92504135CEC7F0BF2A5541FC044AED2F925041A1FA22D8BF2A5541A27B9AC92B9250418353D9A6BF2A5541769B030E2A925041CDDAB993C12A55411BE1423B2D92504103BB504FC32A5541EECBFC622E925041C5A33B40C22A55410A3E977731925041CBA50A77C42A55415B2D07672B9250413A6AD65BCC2A5541211423212892504134680725CA2A55417C9DD2442C9250417D20F9C0C42A55416862B68328925041A7FCF10EC22A55416395966923925041711C5B53C02A554101D568F21F9250413DD43495C62A5541D5C3C08725925041262FBA9AC82A554153279AC22492504108575FBACF2A55413C540D041992504131FEA8EBCF2A5541A8B1799A11925041406CA592CE2A5541C558C3CB11925041299918D4C22A5541CEF8C4180992504174F60655BE2A55416CC94D05FF915041E245763FB92A5541BF2DB3E0FB915041C929D3C4B72A55414799C545F89150416AB188A4B52A5541640EB838EA915041292C06C9AD2A5541BFBBF020DF91504142CAD3F1A62A55414A2FC1BBD7915041FE3C93E0A22A55415D0EA4BBCC9150417F1A54889E2A5541C8DC6BC9BC9150414EDCA29E982A5541E1C8CD22AF915041467DEF0CBC2A5541CBB3F981B2915041B0EFB90AC52A5541E5F3E7F3B3915041CBE8B017C82A554163C27DF7B79150414AB7461BCC2A5541A4B46B11BE9150417FF02B9AD02A55415DA00900CD915041252ACAE0DA2A5541B209D5C3D0915041F3082A28DC2A55418ECA6C01D5915041F6027BD4DC2A55418D60C64DD891504173126BF9DD2A55414D403ED5DE915041110A9FCFE12A55414F6093C6E6915041F0C487B9E62A55414D096FB5ED915041A12D863EEC2A5541A9D347C4F3915041214A49B2F12A55419C7C23B3FA9150410F7CAB9EF72A554108BE75C401925041CEDEFACFFD2A5541471784240692504160590650012B554118D81B620A9250414014EF39062B5541D727E9F00C9250419FC59652092B5541940D10CC129250410F7E6266112B55413E8270A419925041EFC2FDFF1A2B55413A1F5EE71B925041FCE7A12D192B5541E76D51181C925041A6D82E0C192B554106000000847A003CF69150418E5EE866E72A554133D23FFCF5915041125F9857E12A5541A2676D4007925041A5D9DD6AE32A55413556EA16069250410EA1ED64E92A55416C9CA6AD04925041EF68AD4FE92A5541847A003CF69150418E5EE866E72A5541010300000002000000110000008A0D10CC129250411A5A15E9232B5541EFEAB0C81B925041B3CC03B0322B55411F4756BD279250415659A3F54C2B5541F3DA349129925041CEA64423522B554110F978D72C92504109B296A6542B5541EEE26656359250413E06EB94542B55416AA7A4733592504192359386522B5541B3E246B333925041CEC9A8254E2B55415A8396E6329250411F7CCF2A4C2B55419DC4354D3192504122C34B15492B5541D9584BEC2C925041B5CD85903F2B55413D76FC682A9250419B7372013A2B5541DD269AC2249250412C6BB4F82D2B55419BAADC4122925041F0E004D5292B5541A6E6FCC01992504179F9C8D31D2B5541250BF3F515925041AB31F4CD1F2B55418A0D10CC129250411A5A15E9232B55410900000059C1ADF8199250415042E1DE1F2B55412C7DE83E239250417D525230302B5541B93A3A862A9250419446B1283E2B5541148F709131925041272959F24E2B554169FDD0D02B925041D6EBEF3C502B5541DC3F7F8924925041C7AFCC643E2B5541BE5464BA1D9250416205494D322B554142E41B561492504124A8CE18242B554159C1ADF8199250415042E1DE1F2B55410103000000010000000D00000022CD92764392504159E8F9D1532B55413F2C23A0429250414C416D31512B554105F6FDFA3D925041CB1622374B2B554168BE18832F925041B6617B8C392B5541EA4654772C925041D70788A0352B55415CAB81DE269250411BDD1C032E2B5541ED57CB5F2692504103788FB22E2B5541E299CAAF29925041D48A06B4352B554155538E0B30925041F87A2FFB432B554172E82337329250412DB751C7482B55412C6008E6369250418C3B90AD522B5541E32466A638925041467D6F5A542B554122CD92764392504159E8F9D1532B5541010300000001000000160000002480196546925041E0A03DA1532B554116A283414892504127C3AF47532B55413AB9D77F6E925041292FA603512B55416E8D23606C9250419D03780F512B5541F2F1A44C6C925041C61491B04F2B5541D5D36006699250410113B88E4D2B5541DC583B136492504176D80824492B5541B28E9BD0579250418187B5B23F2B554187C4FB8D4B925041109BE32D362B55411A775A6046925041856034C3312B55410970F6D83D9250413EEDAE0F2B2B554136CFEC5F37925041C9D60A09262B55414854C76C329250413B415313222B5541EAC961FA309250415C8969DB202B55418C33C4E92F9250417A6D7AE9202B55417A58813B27925041D8F49C132B2B5541C27BB94927925041D5E8F6AD2C2B5541BE6A42612D92504170375035352B5541EEAC615432925041E66D957D3B2B554151781C2539925041FAF7B0E7432B5541F28A73833E925041E1FE2D9B4A2B55412480196546925041E0A03DA1532B55410103000000010000001B00000006A564D07D925041B8B98825502B554106A564D07D925041D9019FED4E2B5541A5BFF6D27C925041F4B7AF034E2B5541D82E699168925041A761D12C3E2B5541AFE23FD44E92504167FEC7B0292B554169628F7B439250415EC06602212B5541CF64A4553B92504112BBDB9C1A2B55411B19DC4938925041534B082D182B55412A3D4FD536925041E1D5ECED172B554198DE5BAA3692504152A43137182B5541CC6B7E453192504146474F2C1F2B5541D45D5F433192504178BD0B2F1F2B5541C1B8485932925041E8B6EDA0202B5541C79BA17C3B9250412761707B272B55419705AECE41925041181393952C2B5541259B65C445925041BBCC55EF2F2B5541E8A9698B4C925041AC7E7809352B554138D9C6724E925041761257DD362B5541DC9289CC5192504135822A4D392B55417C154FFF54925041EB28FBE33B2B554133BC1F96579250412BC652193E2B554114B8319A5D925041AE37FFAA422B5541D39C63DF68925041B9AC5D804B2B5541D73B94366D925041D1389C144F2B5541B22DC5CF6F925041B42EBFEF502B5541F5F2FBAB72925041ECB75DC4502B554106A564D07D925041B8B98825502B55410103000000020000001400000069BE6F5BD59150415B75DF8BE82A554183F755C3E8915041452D4DAEF62A55416907F7F3FB91504161A90F0B082B5541C613E6E00A925041FE52562D192B5541AA65A9841192504198D3ABC1212B55412DEF857A1892504143C9E4061C2B5541D85E30701892504167DF4DF81B2B5541862641C215925041FEAFC452172B554107F7FBAB0C9250417F6DFD990A2B5541CA0794FF049250416DD62EA6012B5541EB26A7D0F89150410F7CAB9EF72A55412F08FA0DE891504140FFB5CFE82A5541CBCC5650E0915041F4AB56C3E32A5541F17565C6D8915041F19E8374DF2A5541FF5C34D0D59150414343583EDE2A5541E2D8E77ED09150410280A32ADD2A5541FEAF82FACD915041C2ACC65ADC2A554105CF147CD491504100FD821EE62A5541DF99B9D4D5915041DD5C5F34E82A554169BE6F5BD59150415B75DF8BE82A55410E0000006078829CD591504142695C83E52A55418EDDEEA3D8915041355C8934E12A55416B67B7C1EB915041904C6688EE2A55418B9B03FDFC915041614684ADFD2A5541E9E20462039250411FA9D3DE032B554129CCBDBA0B9250413AC3797C0C2B554169B5761314925041CBE660EB162B5541959DBAC4169250410BBD97A11B2B554125F87053129250413B9F2CFF1E2B5541F87F82A90B9250411B0E0D5F152B554197182C53FD915041FF503A26052B55416B67B7C1EB9150415E262FBCF52A55411FEE5370DF91504140123872EC2A55416078829CD591504142695C83E52A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B554154D8F55609925041CD57AC7E562B554124BAF19209925041578C697C572B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>820470 - 3147675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+010600000001000000010300000004000000AF00000085EB516847D45041D7A3700D8429544148E17A0445D450418FC2F5D883295441333333C338D450410AD7A3D082295441EC51B83E36D4504152B81ED581295441000000802ED45041AE47E18A80295441B81E850B27D45041000000A07F295441CDCCCC9C1FD450415C8FC2A57D2954418FC2F5081BD450418FC2F5C87C295441D7A3708D1BD4504114AE475179295441F6285C9F13D4504152B81E35772954415C8FC2A511D45041EC51B8AE762954415C8FC2C50CD4504185EB517875295441CDCCCCAC0ED45041295C8F4278295441000000E013D45041000000F07B2954413D0AD73319D450419A9999C982295441F6285C3F1CD450419A9999698B29544114AE47B11FD450417B14AED78C295441D7A3700D20D450417B14AE178F295441333333B321D45041A4703DDA8F295441000000B020D45041A4703D7A98295441E17A14FE1BD4504152B81E1597295441D7A3706D17D45041E17A142E95295441CDCCCCCC13D45041F6285CEF91295441333333C311D450417B14AEE79029544152B81E9510D45041D7A3702D94295441F6285C1F0BD450415C8FC2E592295441CDCCCCDC01D45041B81E858B94295441CDCCCC8CFDD350418FC2F5B8A0295441D7A3705DF9D3504133333363A32954415C8FC255F7D3504185EB5168AD295441C3F5281CF9D350411F85EB11B02954418FC2F518F8D35041333333A3B1295441F6285C8FF6D350410AD7A320B82954410AD7A3A0F1D350415C8FC235C22954419A999969EBD3504114AE4701CE295441D7A3703DE8D350411F85EB21CE29544166666636E6D35041C3F528CCD029544166666666D9D35041D7A3707DD5295441E17A147ECED350410AD7A310D2295441C3F5282CBBD3504100000000CB29544185EB5148B0D35041AE47E17AC52954415C8FC2D598D35041A4703D5ABA29544148E17A8487D35041C3F5289CB32954415C8FC2D584D35041713D0A97B2295441EC51B8FE7ED350413D0AD7F3AF295441A4703DCA7BD35041A4703D2AAE295441EC51B81E77D350413D0AD7F3AB29544185EB512873D3504148E17A84AA295441333333F36CD350418FC2F5D8B12954417B14AE9765D350415C8FC245B5295441F6285CCF5AD35041AE47E12AAE2954413D0AD7C357D3504100000090AF295441B81E85AB4DD35041AE47E1AAA92954410000007048D35041A4703D8AB02954410AD7A3C047D3504114AE4761B229544152B81EC546D3504114AE4771B5295441333333D345D35041295C8F62B829544148E17A1445D35041E17A14DEBA295441C3F5283C44D3504166666646BD2954419A99994943D35041C3F5282CC029544185EB511842D350419A999919C82954418FC2F5C83FD35041A4703D3AD12954410000007037D35041EC51B8DECF2954413333331331D350419A999999C8295441713D0A5729D3504166666676BD2954413333336323D35041B81E857BB729544114AE47A11FD3504166666686BA2954417B14AE271BD350415C8FC215C5295441B81E859B15D3504133333323CD295441666666C610D35041D7A3701DD4295441000000600DD350411F85EBA1DB295441C3F528CC09D35041295C8FD2E02954410AD7A37009D35041B81E854BE529544185EB51580FD35041C3F5287CEA295441CDCCCCFC13D350411F85EBE1EF295441D7A370DD1AD350413D0AD703F3295441713D0A8722D3504148E17AD4F5295441713D0A772DD35041AE47E18AF4295441EC51B8AE30D35041AE47E18AF4295441B81E85EB38D350410AD7A3F0F0295441CDCCCC5C48D350417B14AE67EB295441B81E854B4AD350418FC2F588EB295441CDCCCC2C53D3504148E17AD4E82954413D0AD7035FD3504185EB5128E7295441CDCCCC3C68D35041666666E6E62954413333339371D35041713D0A57E9295441B81E859B77D350418FC2F5E8E9295441295C8F727DD3504148E17AD4EA29544114AE470182D35041F6285C3FE7295441295C8F328FD350418FC2F508D0295441B81E854B8DD3504114AE4701CE295441D7A370CD8DD35041D7A370FDCC295441F6285C9F92D3504152B81E05CF2954419A99997982D350415C8FC245EC2954416666666683D35041AE47E19AEE295441EC51B8FE89D350410AD7A320F0295441AE47E17A91D35041713D0AE7F1295441EC51B8CE96D3504133333333F52954410AD7A3F09FD35041713D0A87FA295441AE47E1EAA6D35041333333D3FD295441C3F5289CABD35041E17A14BE002A5441B81E851BB4D35041E17A14EE042A544133333373BAD350411F85EBC1012A5441333333C3BED3504185EB5168032A54411F85EB61BED35041EC51B87E092A5441713D0A47C8D350413D0AD7330F2A5441A4703D7AC9D350418FC2F5080D2A544166666626D3D35041333333B30A2A5441295C8F62D8D3504148E17AB4062A544148E17A34DDD3504185EB5168032A5441666666B6DDD35041F6285C4F052A5441F6285CCFDBD35041C3F528BC082A544133333383E1D3504152B81E25052A5441713D0A37E4D3504114AE47A1042A54417B14AE97E6D35041666666E6022A54419A999939E7D3504148E17A14FE29544148E17A04EAD35041295C8F92FD295441713D0AC7EAD35041A4703D9AFF295441D7A370BDF0D35041C3F528CCFB295441B81E85DBF8D3504166666646FA295441333333E3FAD35041C3F528ECFB29544148E17AE403D45041295C8F42F929544148E17AE403D4504185EB5178F6295441B81E850B05D4504185EB5188F6295441D7A3704D06D45041D7A370FDF7295441000000400BD450410AD7A370F429544114AE4711F6D3504114AE4721DF295441F6285C0FEDD35041F6285CFFD5295441F6285C3FF1D35041F6285CAFD12954418FC2F518F8D350418FC2F588D829544185EB51880DD450410AD7A340F0295441000000E013D450419A999939EE295441E17A145E13D45041666666C6F1295441333333D317D450419A999929F32954418FC2F5D81CD4504148E17AF4D42954418FC2F54821D450413D0AD753BA2954410000000025D450418FC2F5B8A029544148E17AC428D450417B14AEA7A22954416666661625D450419A999979BB295441EC51B84E26D450417B14AED7BB2954415C8FC2752BD4504148E17A64BD2954413D0AD7C32BD45041AE47E17ABD29544114AE471133D45041D7A3708DBF295441295C8F823BD45041295C8FF2C12954415C8FC2A541D4504148E17AB4C3295441A4703D1A49D45041713D0AD7C5295441A4703D0A50D45041F6285C4FC8295441A4703D0A57D45041AE47E1BACA295441666666265ED45041295C8F42CD29544114AE47F15ED45041AE47E18ACD295441A4703D3A6ED450415C8FC285D32954417B14AEB77AD45041F6285CAFD4295441000000D088D45041AE47E1AAD52954410000009095D45041E17A148ED6295441CDCCCC3C9BD450413D0AD713CD2954418FC2F508ACD4504166666696CC295441713D0A17B3D450411F85EBA1C0295441713D0AB7B3D45041295C8F92BF2954417B14AE27B8D45041B81E850BB8295441EC51B88EBED450410AD7A330AD2954410AD7A350C0D450418FC2F538AA295441F6285C2FBDD45041C3F5280CA9295441295C8F42A1D4504152B81EF5A0295441333333D382D45041333333D3952954419A99995981D4504152B81E3596295441B81E85DB78D45041713D0A4794295441A4703D5A78D45041AE47E1AA91295441EC51B85E71D45041B81E85BB8F295441B81E85FB6AD450417B14AEB78C2954415C8FC23565D45041D7A3703D8A2954415C8FC2D55BD45041295C8FF2872954410AD7A3F059D4504148E17A5487295441B81E852B58D450417B14AEC787295441A4703D5A53D45041666666568729544185EB516847D45041D7A3700D84295441050000003D0AD7D375D350418FC2F588D8295441E17A14FE6FD35041E17A14EED9295441AE47E11A6FD350411F85EBC1D6295441295C8F7275D35041E17A149ED52954413D0AD7D375D350418FC2F588D829544108000000295C8F0237D450415C8FC225A4295441A4703DFA45D45041E17A14BEAA2954411F85EB414AD4504114AE47C1A6295441AE47E18A5BD4504133333323AC295441295C8F4259D450419A999919B22954410AD7A3A047D4504185EB5168AD295441F6285C1F36D45041CDCCCC0CA6295441295C8F0237D450415C8FC225A4295441050000008FC2F5F890D3504166666626BE2954411F85EB118FD35041C3F528ACBF2954413D0AD7438BD35041EC51B81EBC295441666666068CD35041A4703DDABA2954418FC2F5F890D3504166666626BE295441
+</a>
+
+<b>
+010600000001000000010300000002000000F4000000E17A145E13D45041666666C6F12954411F85EB3118D4504148E17A44F3295441C735B84A21D450410A2F4154BA29544135A9399025D4504187ACF42EBB295441288F2C3041D450414F0ACF92C329544169D257F94AD4504120329E81C62954418DAA54AA50D4504193A5B486C82954411FEEF42860D450418A7CD104CE29544158AF2A2B69D450418C94158BD1295441996296B46ED4504173BD2591D3295441E66F84CC7FD45041891D090AD5295441000000D088D45041AE47E1AAD5295441295C8F9284D45041CDCCCCBCEF2954419A9999899AD45041C3F5284CF329544185EB51289FD45041EC51B8EED72954410000009095D45041E17A148ED6295441CDCCCC3C9BD450413D0AD713CD2954418FC2F508ACD4504166666696CC295441713D0AB7B3D45041295C8F92BF2954417B14AE27B8D45041B81E850BB8295441EC51B88EBED450410AD7A330AD2954410AD7A350C0D450418FC2F538AA295441781C1BEBBBD450410DDC38AEA829544159A29CFCB8D4504124F1CCD4A72954414A9D5F51B6D450411600DD0EA729544117929EB9B3D450411F19924EA62954419CB2D714B0D45041BE4A5740A5295441A5F349CBA8D45041FBADE123A32954411D480CDBA4D45041856A7468A2295441D0C615059ED45041687A38B3A02954410F55C72D99D450414500EBB49E2954414DE3785694D45041F906B76D9C295441BCF5A9128ED45041D78C696F9A2954417E06A86088D45041DE9102BA98295441BD94598983D450413F9A01E1952954418AD247FC80D450419BA0406C9429544191581B157BD450419BCAFE6C922954415458E62273D450419E24D43890295441D6C8C04671D450411B0D35B08F295441E13880576AD4504114DC48718C295441153BFE4565D450417F3668448A295441821906F15ED45041B94C07B588295441C5E588DE5AD45041AD78BF3388295441730FC41D5AD4504104422F63872954411C6FFEF557D450414C9D97D18729544117D6FB2356D450414490F597872954415FE4DF5551D4504119E464C88629544195EDE39A49D450416C1927A884295441F78105E846D4504103716F02842954412D112F383CD45041E378331B8329544169426DEE37D45041E0A0E9D28229544157426E5B36D4504189A95CD781295441000000802ED45041AE47E18A802954418909709027D45041B3C05BB07F295441C0917EEB24D45041F981410F7F2954415B6A286221D45041C985611E7E295441167F71B51ED45041E6DA2A7A7D2954414D8372F51BD450417BF284F57C2954418FC2F5081BD450418FC2F5C87C295441D7A3708D1BD4504114AE475179295441F6285C9F13D4504152B81E35772954415C8FC2C50CD4504185EB517875295441443A02580ED4504163DB36C677295441F3ED7E220FD4504138BCCB957829544151087F7211D45041932177387A29544182E17C2212D450418BBBEDB47A295441A49F360714D4504188796B227C2954418890274515D4504183FF38BB7D2954415E5303BC16D45041E968359D7F295441FBC9D43418D45041A2E6B681812954413D0AD73319D450419A9999C9822954415FAC5DFA19D45041B755EDFB84295441246E62651AD4504176FC0E2B862954412E8F692E1CD45041C77598398B295441DD46190720D45041D79F68C28C295441BFE838E71FD4504127C3D1288E295441AEB9643520D45041D3581C2A8F295441333333B321D45041A4703DDA8F295441000000B020D45041A4703D7A9829544199680F821ED45041035D76D497295441D2C9DEF01AD4504189B9ECA496295441C2955BD118D450415B5B69C295295441CC8F208617D45041885B5E38952954418F36424816D450419721D027942954417C7B586E14D45041BC1CDF7F92295441FCE462BC13D45041AC0110E791295441333333C311D450417B14AEE79029544152B81E9510D45041D7A3702D94295441F6285C1F0BD450415C8FC2E592295441CDCCCCDC01D45041B81E858B94295441CDCCCC8CFDD350418FC2F5B8A0295441D7A3705DF9D3504133333363A32954415C8FC255F7D3504185EB5168AD295441C3F5281CF9D350411F85EB11B02954418FC2F518F8D35041333333A3B12954419E389BD8F4D35041578F0913B12954411D3A3124F4D35041238CA395B22954419F2BE725F4D3504134713061B6295441878CD909F4D35041764152B8B82954415230044AF3D350417BA7E8D6BB29544154C8DC2AEFD35041EBFE167DC129544117CF5B18EED35041CC70FB0DC32954419A999949EBD35041B81E85ABC6295441C3F5281CEAD350410AD7A320C629544114AE4771E9D350413D0AD743C6295441EC51B8AEE5D35041713D0A97CA2954419A9999F9DFD350418FC2F548CD295441295C8F22DED350415C8FC2E5CE2954415C8FC265D9D3504114AE4751D22954411F85EB51D8D35041000000E0D42954417E5F3E5ECDD35041001162A7D129544184C81066C9D35041E2ADB354D0295441D8F0E2DAC5D35041542A0BE8CE29544107860B60C3D35041398AE4FFCD2954411EC655D1BDD35041FBADA1F7CB295441717D4105BBD3504171AC47ECCA29544118C3A3EAB4D35041B3C835D4C7295441813C182EA0D35041DE8E97D6BD295441A040A5EE9CD350418FAF024CBC295441A8581E0E98D35041D7A8820CBA295441426C8EA695D35041C1FBD71CB92954415BA178E592D350416553520AB82954415F22DDF38FD35041BC53E8E4B6295441C016FBB089D35041CED5D474B42954419001FE8987D3504159604E9EB32954415E85972C84D35041D59FA34AB2295441BC0D1A4281D35041D11881F9B0295441A2CE431B7ED350410AB3FB74AF295441063DCEBB7BD35041DDC46623AE29544186F1BE8474D350415A25A902AB29544185EB512873D3504148E17A84AA295441CBF70DBC6FD350417D40338FAE295441333333F36CD350418FC2F5D8B12954417B14AE9765D350415C8FC245B5295441F6285CCF5AD35041AE47E12AAE2954413D0AD7C357D3504100000090AF295441B81E85AB4DD35041AE47E1AAA92954410000007048D35041A4703D8AB0295441D80DF02F46D350415E1ECC41B7295441EA57803B44D350419C096A48BD2954419D07025A43D35041AED8FBF9BF295441EE796A1C42D350413F025FFEC72954418FC2F5C83FD35041A4703D3AD12954410000007037D35041EC51B8DECF2954411A9220E733D35041A069C8D4CB295441510608EE30D35041CCDA1464C8295441E77CBD152FD350417C8209BCC5295441EA36E51A2DD350414F553DE2C22954418E2913E429D3504184497941BE2954418840885028D350410B64FD3FBC2954411D08417525D35041FC9644DFB82954413225184123D35041C2C62297B72954410FC0D18C1FD3504166BEAEB6BA2954410D39DEBC1CD3504184529B59C12954413473DFF21AD3504175976962C529544169182B4913D3504192C65D7DD0295441F1C759B010D35041FF0E314ED4295441A35725010FD35041AB249907D8295441E5623A320DD350415FA852E4DB295441052312D909D35041B16DD4BFE02954419A3A6D9B09D35041EEDC3C34E32954411482DCA709D35041F5100E7CE52954411739A6B10CD350419954AA27E8295441E455AB6610D35041CDC179B6EB2954414F243CD913D35041F61364C6EF295441D814D95514D350416308D9B3F0295441390ED37417D35041F8043950F22954418906AB141BD35041C401D3D2F329544123FDB2821FD3504190FE6C55F5295441DEF82A8621D3504148FD10F0F529544178EF32F425D35041ECFDBEA2F5295441A6E5C6952AD3504134FF1A08F5295441ABDF6E672DD35041A1FF8ED4F42954410CD9688630D350410F0003A1F42954419E1CF12E3BD3504196F0C11DF0295441A00F3B643DD35041AA6E5856EF29544163DD51663FD35041A213159EEE295441243E0D0D41D3504175649006EE295441161711ED43D35041ADBDC1FEEC295441980951D845D350419C0DAE4EEC295441D8093F9348D350416DC3193AEB295441361250334AD35041D7E15487EB295441357A71FD4AD3504160F3C252EB2954413150DDB84DD3504156B2B47DEA295441FD5F9B184FD35041FA1F8F12EA2954415975859851D350412555A14FE9295441D421FF2E53D3504123722BD4E82954419B92E79754D35041B83B30A1E82954412332D06D59D3504158C752F2E7295441F2668DDA5BD35041DB82A39AE72954413859603D5FD350414EAAB626E72954413556AB7461D350410ECEDF16E7295441E382CAAE65D35041DEEFB8E6E62954413120BFF068D350416B146C15E72954417EBC8AAC69D3504141CF7E46E7295441AB5375966BD350417C2E84C6E72954419F84DB746DD35041081A8743E8295441E4A0068F6FD35041955528D0E82954411238F17871D35041CFB42D50E92954410ED6F05F75D35041EAD7F3B2E9295441E85B01817BD35041DB1C1986EA295441295C8F727DD3504148E17AD4EA2954419A99997982D350415C8FC245EC295441DF287E9583D35041E10C9B96EE295441AE47E17A91D35041713D0AE7F129544103614D4C93D35041E6EF1D07F32954419E679EC396D35041532C542CF52954413BAFE85FA1D3504154989B34FB2954418F0114BCA5D350416F461944FD295441C2607B29A9D35041B6807338FF29544170383E16ADD35041F8736578012A5441FF7A4BFBB2D35041DE810B60042A5441B81E851BB4D35041E17A14EE042A544133333373BAD350411F85EBC1012A5441333333C3BED3504185EB5168032A54411F85EB61BED35041EC51B87E092A5441713D0A47C8D350413D0AD7330F2A5441A4703D7AC9D350418FC2F5080D2A544166666626D3D35041333333B30A2A544148E17A34DDD3504185EB5168032A5441666666B6DDD35041F6285C4F052A5441F6285CCFDBD35041C3F528BC082A5441ABC435F6DED35041197535C0062A5441887CF649E0D350415A6651EA052A54410E74A8D3E1D35041769EC915052A5441DEAB0F6BE3D35041B1AC26C8042A5441713D0A37E4D3504114AE47A1042A5441064DA37CE6D35041A8CB13FA022A54419A999939E7D3504148E17A14FE29544148E17A04EAD35041295C8F92FD295441713D0AC7EAD35041A4703D9AFF295441D7A370BDF0D35041C3F528CCFB295441B81E85DBF8D3504166666646FA295441333333E3FAD35041C3F528ECFB29544148E17AE403D45041295C8F42F929544148E17AE403D4504185EB5178F6295441B81E850B05D4504185EB5188F6295441D7A3704D06D45041D7A370FDF7295441000000400BD450410AD7A370F4295441F6285C0FEDD35041F6285CFFD5295441F6285C3FF1D35041F6285CAFD129544185EB51880DD450410AD7A340F029544136F6242814D45041F30DBD15EE295441E17A145E13D45041666666C6F129544108000000F6285C1F36D45041CDCCCC0CA62954411B5E2CFE36D450413447DF0EA4295441A4703DFA45D45041E17A14BEAA2954411F85EB414AD4504114AE47C1A6295441AE47E18A5BD4504133333323AC295441295C8F4259D450419A999919B22954410AD7A3A047D4504185EB5168AD295441F6285C1F36D45041CDCCCC0CA6295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>820470 - 3359118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+010600000001000000010300000004000000AF00000085EB516847D45041D7A3700D8429544148E17A0445D450418FC2F5D883295441333333C338D450410AD7A3D082295441EC51B83E36D4504152B81ED581295441000000802ED45041AE47E18A80295441B81E850B27D45041000000A07F295441CDCCCC9C1FD450415C8FC2A57D2954418FC2F5081BD450418FC2F5C87C295441D7A3708D1BD4504114AE475179295441F6285C9F13D4504152B81E35772954415C8FC2A511D45041EC51B8AE762954415C8FC2C50CD4504185EB517875295441CDCCCCAC0ED45041295C8F4278295441000000E013D45041000000F07B2954413D0AD73319D450419A9999C982295441F6285C3F1CD450419A9999698B29544114AE47B11FD450417B14AED78C295441D7A3700D20D450417B14AE178F295441333333B321D45041A4703DDA8F295441000000B020D45041A4703D7A98295441E17A14FE1BD4504152B81E1597295441D7A3706D17D45041E17A142E95295441CDCCCCCC13D45041F6285CEF91295441333333C311D450417B14AEE79029544152B81E9510D45041D7A3702D94295441F6285C1F0BD450415C8FC2E592295441CDCCCCDC01D45041B81E858B94295441CDCCCC8CFDD350418FC2F5B8A0295441D7A3705DF9D3504133333363A32954415C8FC255F7D3504185EB5168AD295441C3F5281CF9D350411F85EB11B02954418FC2F518F8D35041333333A3B1295441F6285C8FF6D350410AD7A320B82954410AD7A3A0F1D350415C8FC235C22954419A999969EBD3504114AE4701CE295441D7A3703DE8D350411F85EB21CE29544166666636E6D35041C3F528CCD029544166666666D9D35041D7A3707DD5295441E17A147ECED350410AD7A310D2295441C3F5282CBBD3504100000000CB29544185EB5148B0D35041AE47E17AC52954415C8FC2D598D35041A4703D5ABA29544148E17A8487D35041C3F5289CB32954415C8FC2D584D35041713D0A97B2295441EC51B8FE7ED350413D0AD7F3AF295441A4703DCA7BD35041A4703D2AAE295441EC51B81E77D350413D0AD7F3AB29544185EB512873D3504148E17A84AA295441333333F36CD350418FC2F5D8B12954417B14AE9765D350415C8FC245B5295441F6285CCF5AD35041AE47E12AAE2954413D0AD7C357D3504100000090AF295441B81E85AB4DD35041AE47E1AAA92954410000007048D35041A4703D8AB02954410AD7A3C047D3504114AE4761B229544152B81EC546D3504114AE4771B5295441333333D345D35041295C8F62B829544148E17A1445D35041E17A14DEBA295441C3F5283C44D3504166666646BD2954419A99994943D35041C3F5282CC029544185EB511842D350419A999919C82954418FC2F5C83FD35041A4703D3AD12954410000007037D35041EC51B8DECF2954413333331331D350419A999999C8295441713D0A5729D3504166666676BD2954413333336323D35041B81E857BB729544114AE47A11FD3504166666686BA2954417B14AE271BD350415C8FC215C5295441B81E859B15D3504133333323CD295441666666C610D35041D7A3701DD4295441000000600DD350411F85EBA1DB295441C3F528CC09D35041295C8FD2E02954410AD7A37009D35041B81E854BE529544185EB51580FD35041C3F5287CEA295441CDCCCCFC13D350411F85EBE1EF295441D7A370DD1AD350413D0AD703F3295441713D0A8722D3504148E17AD4F5295441713D0A772DD35041AE47E18AF4295441EC51B8AE30D35041AE47E18AF4295441B81E85EB38D350410AD7A3F0F0295441CDCCCC5C48D350417B14AE67EB295441B81E854B4AD350418FC2F588EB295441CDCCCC2C53D3504148E17AD4E82954413D0AD7035FD3504185EB5128E7295441CDCCCC3C68D35041666666E6E62954413333339371D35041713D0A57E9295441B81E859B77D350418FC2F5E8E9295441295C8F727DD3504148E17AD4EA29544114AE470182D35041F6285C3FE7295441295C8F328FD350418FC2F508D0295441B81E854B8DD3504114AE4701CE295441D7A370CD8DD35041D7A370FDCC295441F6285C9F92D3504152B81E05CF2954419A99997982D350415C8FC245EC2954416666666683D35041AE47E19AEE295441EC51B8FE89D350410AD7A320F0295441AE47E17A91D35041713D0AE7F1295441EC51B8CE96D3504133333333F52954410AD7A3F09FD35041713D0A87FA295441AE47E1EAA6D35041333333D3FD295441C3F5289CABD35041E17A14BE002A5441B81E851BB4D35041E17A14EE042A544133333373BAD350411F85EBC1012A5441333333C3BED3504185EB5168032A54411F85EB61BED35041EC51B87E092A5441713D0A47C8D350413D0AD7330F2A5441A4703D7AC9D350418FC2F5080D2A544166666626D3D35041333333B30A2A5441295C8F62D8D3504148E17AB4062A544148E17A34DDD3504185EB5168032A5441666666B6DDD35041F6285C4F052A5441F6285CCFDBD35041C3F528BC082A544133333383E1D3504152B81E25052A5441713D0A37E4D3504114AE47A1042A54417B14AE97E6D35041666666E6022A54419A999939E7D3504148E17A14FE29544148E17A04EAD35041295C8F92FD295441713D0AC7EAD35041A4703D9AFF295441D7A370BDF0D35041C3F528CCFB295441B81E85DBF8D3504166666646FA295441333333E3FAD35041C3F528ECFB29544148E17AE403D45041295C8F42F929544148E17AE403D4504185EB5178F6295441B81E850B05D4504185EB5188F6295441D7A3704D06D45041D7A370FDF7295441000000400BD450410AD7A370F429544114AE4711F6D3504114AE4721DF295441F6285C0FEDD35041F6285CFFD5295441F6285C3FF1D35041F6285CAFD12954418FC2F518F8D350418FC2F588D829544185EB51880DD450410AD7A340F0295441000000E013D450419A999939EE295441E17A145E13D45041666666C6F1295441333333D317D450419A999929F32954418FC2F5D81CD4504148E17AF4D42954418FC2F54821D450413D0AD753BA2954410000000025D450418FC2F5B8A029544148E17AC428D450417B14AEA7A22954416666661625D450419A999979BB295441EC51B84E26D450417B14AED7BB2954415C8FC2752BD4504148E17A64BD2954413D0AD7C32BD45041AE47E17ABD29544114AE471133D45041D7A3708DBF295441295C8F823BD45041295C8FF2C12954415C8FC2A541D4504148E17AB4C3295441A4703D1A49D45041713D0AD7C5295441A4703D0A50D45041F6285C4FC8295441A4703D0A57D45041AE47E1BACA295441666666265ED45041295C8F42CD29544114AE47F15ED45041AE47E18ACD295441A4703D3A6ED450415C8FC285D32954417B14AEB77AD45041F6285CAFD4295441000000D088D45041AE47E1AAD52954410000009095D45041E17A148ED6295441CDCCCC3C9BD450413D0AD713CD2954418FC2F508ACD4504166666696CC295441713D0A17B3D450411F85EBA1C0295441713D0AB7B3D45041295C8F92BF2954417B14AE27B8D45041B81E850BB8295441EC51B88EBED450410AD7A330AD2954410AD7A350C0D450418FC2F538AA295441F6285C2FBDD45041C3F5280CA9295441295C8F42A1D4504152B81EF5A0295441333333D382D45041333333D3952954419A99995981D4504152B81E3596295441B81E85DB78D45041713D0A4794295441A4703D5A78D45041AE47E1AA91295441EC51B85E71D45041B81E85BB8F295441B81E85FB6AD450417B14AEB78C2954415C8FC23565D45041D7A3703D8A2954415C8FC2D55BD45041295C8FF2872954410AD7A3F059D4504148E17A5487295441B81E852B58D450417B14AEC787295441A4703D5A53D45041666666568729544185EB516847D45041D7A3700D84295441050000003D0AD7D375D350418FC2F588D8295441E17A14FE6FD35041E17A14EED9295441AE47E11A6FD350411F85EBC1D6295441295C8F7275D35041E17A149ED52954413D0AD7D375D350418FC2F588D829544108000000295C8F0237D450415C8FC225A4295441A4703DFA45D45041E17A14BEAA2954411F85EB414AD4504114AE47C1A6295441AE47E18A5BD4504133333323AC295441295C8F4259D450419A999919B22954410AD7A3A047D4504185EB5168AD295441F6285C1F36D45041CDCCCC0CA6295441295C8F0237D450415C8FC225A4295441050000008FC2F5F890D3504166666626BE2954411F85EB118FD35041C3F528ACBF2954413D0AD7438BD35041EC51B81EBC295441666666068CD35041A4703DDABA2954418FC2F5F890D3504166666626BE295441
+</a>
+
+<b>
+010600000001000000010300000002000000F4000000E17A145E13D45041666666C6F12954411F85EB3118D4504148E17A44F3295441C735B84A21D450410A2F4154BA29544135A9399025D4504187ACF42EBB295441288F2C3041D450414F0ACF92C329544169D257F94AD4504120329E81C62954418DAA54AA50D4504193A5B486C82954411FEEF42860D450418A7CD104CE29544158AF2A2B69D450418C94158BD1295441996296B46ED4504173BD2591D3295441E66F84CC7FD45041891D090AD5295441000000D088D45041AE47E1AAD5295441295C8F9284D45041CDCCCCBCEF2954419A9999899AD45041C3F5284CF329544185EB51289FD45041EC51B8EED72954410000009095D45041E17A148ED6295441CDCCCC3C9BD450413D0AD713CD2954418FC2F508ACD4504166666696CC295441713D0AB7B3D45041295C8F92BF2954417B14AE27B8D45041B81E850BB8295441EC51B88EBED450410AD7A330AD2954410AD7A350C0D450418FC2F538AA295441781C1BEBBBD450410DDC38AEA829544159A29CFCB8D4504124F1CCD4A72954414A9D5F51B6D450411600DD0EA729544117929EB9B3D450411F19924EA62954419CB2D714B0D45041BE4A5740A5295441A5F349CBA8D45041FBADE123A32954411D480CDBA4D45041856A7468A2295441D0C615059ED45041687A38B3A02954410F55C72D99D450414500EBB49E2954414DE3785694D45041F906B76D9C295441BCF5A9128ED45041D78C696F9A2954417E06A86088D45041DE9102BA98295441BD94598983D450413F9A01E1952954418AD247FC80D450419BA0406C9429544191581B157BD450419BCAFE6C922954415458E62273D450419E24D43890295441D6C8C04671D450411B0D35B08F295441E13880576AD4504114DC48718C295441153BFE4565D450417F3668448A295441821906F15ED45041B94C07B588295441C5E588DE5AD45041AD78BF3388295441730FC41D5AD4504104422F63872954411C6FFEF557D450414C9D97D18729544117D6FB2356D450414490F597872954415FE4DF5551D4504119E464C88629544195EDE39A49D450416C1927A884295441F78105E846D4504103716F02842954412D112F383CD45041E378331B8329544169426DEE37D45041E0A0E9D28229544157426E5B36D4504189A95CD781295441000000802ED45041AE47E18A802954418909709027D45041B3C05BB07F295441C0917EEB24D45041F981410F7F2954415B6A286221D45041C985611E7E295441167F71B51ED45041E6DA2A7A7D2954414D8372F51BD450417BF284F57C2954418FC2F5081BD450418FC2F5C87C295441D7A3708D1BD4504114AE475179295441F6285C9F13D4504152B81E35772954415C8FC2C50CD4504185EB517875295441443A02580ED4504163DB36C677295441F3ED7E220FD4504138BCCB957829544151087F7211D45041932177387A29544182E17C2212D450418BBBEDB47A295441A49F360714D4504188796B227C2954418890274515D4504183FF38BB7D2954415E5303BC16D45041E968359D7F295441FBC9D43418D45041A2E6B681812954413D0AD73319D450419A9999C9822954415FAC5DFA19D45041B755EDFB84295441246E62651AD4504176FC0E2B862954412E8F692E1CD45041C77598398B295441DD46190720D45041D79F68C28C295441BFE838E71FD4504127C3D1288E295441AEB9643520D45041D3581C2A8F295441333333B321D45041A4703DDA8F295441000000B020D45041A4703D7A9829544199680F821ED45041035D76D497295441D2C9DEF01AD4504189B9ECA496295441C2955BD118D450415B5B69C295295441CC8F208617D45041885B5E38952954418F36424816D450419721D027942954417C7B586E14D45041BC1CDF7F92295441FCE462BC13D45041AC0110E791295441333333C311D450417B14AEE79029544152B81E9510D45041D7A3702D94295441F6285C1F0BD450415C8FC2E592295441CDCCCCDC01D45041B81E858B94295441CDCCCC8CFDD350418FC2F5B8A0295441D7A3705DF9D3504133333363A32954415C8FC255F7D3504185EB5168AD295441C3F5281CF9D350411F85EB11B02954418FC2F518F8D35041333333A3B12954419E389BD8F4D35041578F0913B12954411D3A3124F4D35041238CA395B22954419F2BE725F4D3504134713061B6295441878CD909F4D35041764152B8B82954415230044AF3D350417BA7E8D6BB29544154C8DC2AEFD35041EBFE167DC129544117CF5B18EED35041CC70FB0DC32954419A999949EBD35041B81E85ABC6295441C3F5281CEAD350410AD7A320C629544114AE4771E9D350413D0AD743C6295441EC51B8AEE5D35041713D0A97CA2954419A9999F9DFD350418FC2F548CD295441295C8F22DED350415C8FC2E5CE2954415C8FC265D9D3504114AE4751D22954411F85EB51D8D35041000000E0D42954417E5F3E5ECDD35041001162A7D129544184C81066C9D35041E2ADB354D0295441D8F0E2DAC5D35041542A0BE8CE29544107860B60C3D35041398AE4FFCD2954411EC655D1BDD35041FBADA1F7CB295441717D4105BBD3504171AC47ECCA29544118C3A3EAB4D35041B3C835D4C7295441813C182EA0D35041DE8E97D6BD295441A040A5EE9CD350418FAF024CBC295441A8581E0E98D35041D7A8820CBA295441426C8EA695D35041C1FBD71CB92954415BA178E592D350416553520AB82954415F22DDF38FD35041BC53E8E4B6295441C016FBB089D35041CED5D474B42954419001FE8987D3504159604E9EB32954415E85972C84D35041D59FA34AB2295441BC0D1A4281D35041D11881F9B0295441A2CE431B7ED350410AB3FB74AF295441063DCEBB7BD35041DDC46623AE29544186F1BE8474D350415A25A902AB29544185EB512873D3504148E17A84AA295441CBF70DBC6FD350417D40338FAE295441333333F36CD350418FC2F5D8B12954417B14AE9765D350415C8FC245B5295441F6285CCF5AD35041AE47E12AAE2954413D0AD7C357D3504100000090AF295441B81E85AB4DD35041AE47E1AAA92954410000007048D35041A4703D8AB0295441D80DF02F46D350415E1ECC41B7295441EA57803B44D350419C096A48BD2954419D07025A43D35041AED8FBF9BF295441EE796A1C42D350413F025FFEC72954418FC2F5C83FD35041A4703D3AD12954410000007037D35041EC51B8DECF2954411A9220E733D35041A069C8D4CB295441510608EE30D35041CCDA1464C8295441E77CBD152FD350417C8209BCC5295441EA36E51A2DD350414F553DE2C22954418E2913E429D3504184497941BE2954418840885028D350410B64FD3FBC2954411D08417525D35041FC9644DFB82954413225184123D35041C2C62297B72954410FC0D18C1FD3504166BEAEB6BA2954410D39DEBC1CD3504184529B59C12954413473DFF21AD3504175976962C529544169182B4913D3504192C65D7DD0295441F1C759B010D35041FF0E314ED4295441A35725010FD35041AB249907D8295441E5623A320DD350415FA852E4DB295441052312D909D35041B16DD4BFE02954419A3A6D9B09D35041EEDC3C34E32954411482DCA709D35041F5100E7CE52954411739A6B10CD350419954AA27E8295441E455AB6610D35041CDC179B6EB2954414F243CD913D35041F61364C6EF295441D814D95514D350416308D9B3F0295441390ED37417D35041F8043950F22954418906AB141BD35041C401D3D2F329544123FDB2821FD3504190FE6C55F5295441DEF82A8621D3504148FD10F0F529544178EF32F425D35041ECFDBEA2F5295441A6E5C6952AD3504134FF1A08F5295441ABDF6E672DD35041A1FF8ED4F42954410CD9688630D350410F0003A1F42954419E1CF12E3BD3504196F0C11DF0295441A00F3B643DD35041AA6E5856EF29544163DD51663FD35041A213159EEE295441243E0D0D41D3504175649006EE295441161711ED43D35041ADBDC1FEEC295441980951D845D350419C0DAE4EEC295441D8093F9348D350416DC3193AEB295441361250334AD35041D7E15487EB295441357A71FD4AD3504160F3C252EB2954413150DDB84DD3504156B2B47DEA295441FD5F9B184FD35041FA1F8F12EA2954415975859851D350412555A14FE9295441D421FF2E53D3504123722BD4E82954419B92E79754D35041B83B30A1E82954412332D06D59D3504158C752F2E7295441F2668DDA5BD35041DB82A39AE72954413859603D5FD350414EAAB626E72954413556AB7461D350410ECEDF16E7295441E382CAAE65D35041DEEFB8E6E62954413120BFF068D350416B146C15E72954417EBC8AAC69D3504141CF7E46E7295441AB5375966BD350417C2E84C6E72954419F84DB746DD35041081A8743E8295441E4A0068F6FD35041955528D0E82954411238F17871D35041CFB42D50E92954410ED6F05F75D35041EAD7F3B2E9295441E85B01817BD35041DB1C1986EA295441295C8F727DD3504148E17AD4EA2954419A99997982D350415C8FC245EC295441DF287E9583D35041E10C9B96EE295441AE47E17A91D35041713D0AE7F129544103614D4C93D35041E6EF1D07F32954419E679EC396D35041532C542CF52954413BAFE85FA1D3504154989B34FB2954418F0114BCA5D350416F461944FD295441C2607B29A9D35041B6807338FF29544170383E16ADD35041F8736578012A5441FF7A4BFBB2D35041DE810B60042A5441B81E851BB4D35041E17A14EE042A544133333373BAD350411F85EBC1012A5441333333C3BED3504185EB5168032A54411F85EB61BED35041EC51B87E092A5441713D0A47C8D350413D0AD7330F2A5441A4703D7AC9D350418FC2F5080D2A544166666626D3D35041333333B30A2A544148E17A34DDD3504185EB5168032A5441666666B6DDD35041F6285C4F052A5441F6285CCFDBD35041C3F528BC082A5441ABC435F6DED35041197535C0062A5441887CF649E0D350415A6651EA052A54410E74A8D3E1D35041769EC915052A5441DEAB0F6BE3D35041B1AC26C8042A5441713D0A37E4D3504114AE47A1042A5441064DA37CE6D35041A8CB13FA022A54419A999939E7D3504148E17A14FE29544148E17A04EAD35041295C8F92FD295441713D0AC7EAD35041A4703D9AFF295441D7A370BDF0D35041C3F528CCFB295441B81E85DBF8D3504166666646FA295441333333E3FAD35041C3F528ECFB29544148E17AE403D45041295C8F42F929544148E17AE403D4504185EB5178F6295441B81E850B05D4504185EB5188F6295441D7A3704D06D45041D7A370FDF7295441000000400BD450410AD7A370F4295441F6285C0FEDD35041F6285CFFD5295441F6285C3FF1D35041F6285CAFD129544185EB51880DD450410AD7A340F029544136F6242814D45041F30DBD15EE295441E17A145E13D45041666666C6F129544108000000F6285C1F36D45041CDCCCC0CA62954411B5E2CFE36D450413447DF0EA4295441A4703DFA45D45041E17A14BEAA2954411F85EB414AD4504114AE47C1A6295441AE47E18A5BD4504133333323AC295441295C8F4259D450419A999919B22954410AD7A3A047D4504185EB5168AD295441F6285C1F36D45041CDCCCC0CA6295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985983 - 3102931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000DC000000CA1938293B0B51416BAAF954F72155411B30C0B3390B51413B98428BF7215541981D547A360B51417DA1F827F92155419A9999692F0B5141713D0A17FC215541A4703DDA270B5141CDCCCCECFD21554114AE4701250B514133333363FD21554185EB5118230B51419A999969FD2155413D0AD703220B5141F6285CBFFC215541D7A3705D200B5141F6285CEFF921554114AE47F11E0B5141AE47E13AF82155411F85EB011C0B51418FC2F528F6215541A4703D1A160B514152B81EC5F321554100000050120B5141666666B6F0215541713D0AD70D0B514152B81EC5EB2155417B14AEF7000B5141666666960D22554133333353FB0A51413D0AD743102255410E54DC52EF0A51414B7AB9CD152255416BF903D2F00A51414576575B18225541DD53DD0BF50A5141B60794E520225541D74F7B99F70A5141654A1FFF282255414FAEB645F90A51411B910C8B2E225541939ACA97FA0A514163B8E59F312255411F85EB81FC0A5141AE47E1AA3322554166666626FE0A51415C8FC2A53422554114AE4701FF0A514185EB512835225541E17A143E020B5141C3F528FC35225541713D0AB7060B51413333332336225541EC51B8BE0D0B514152B81ED53522554133333343160B51415C8FC235372255418FC2F5F8270B51411F85EBA13B225541666666962C0B5141D7A3703D3C22554183CFB31D360B5141314FA9223D225541713D0AD7460B514148E17A843D22554114AE47A1570B514148E17AC43E225541666666166B0B514185EB51B84122554100000080700B51417B14AEC74122554148E17AF4720B5141EC51B8CE4122554152B81E557D0B51413D0AD74341225541C3F528CC7E0B5141E17A141E4122554148E17A24860B5141295C8F6240225541C367A2298C0B5141A3434F173F22554110E99B728B0B514191FD529339225541B58669AE890B51413741BE4E392255418828D837830B5141F050484B3A225541DF1BAA58770B5141841072CA3B225541536C60BF750B5141DCD0F2903A2255416EFC955F750B5141BC617F7837225541C686A345740B51413EB1674B2F225541C05C8137740B5141C654FBAF2C22554157CCF5AD750B5141461527EB2A2255418A3C16F7740B51410F761321282255418F439866730B5141D59FCA1A272255410F75A436710B5141F6D893DC232255414841600C710B5141CAE6220D222255416EC57826750B5141448464A720225541425A12C7780B51415028F45B21225541DE88884A7C0B5141CFDFB96F21225541706A3AF67D0B5141B133E2DB232255410388E73B7E0B51411C46A82326225541373465027D0B51418160ABC5272255415992BB8D7D0B5141F8A959AD2922554199A82DF2820B5141CCE5320C292255417077E00F870B5141F3E5DD802822554118B75F49880B51412E66DEAF27225541BB964994890B5141C456AA9C25225541556FBB50980B5141333605C7232255410ADD969A980B51412BB6BD02282255419092A4CC9A0B51419E35EB7C272255410C2DC2A29B0B514110B518F726225541C4FBAC729D0B51417919561525225541B7477BA59C0B51413EE5881B24225541BAE0BC169C0B51411630B242222255411B7A35E19B0B51410FAE035820225541AB9349D89B0B5141082C556D1E225541862E9E079D0B51418376473B1C22554170F147B6A00B514176537C161B2255413782EF8BA30B5141568FED7F1B225541111D44BBA40B514162431F4D1C2255413E049E76A50B51416B5E0FA91D2255418DB76191A50B5141232DFA781F2255419F9D1641A50B5141097C807521225541B31C0D62A40B51419E7E01E623225541B84E9044A30B5141069A289B252255410319E7E5A00B51410301E72926225541DFFC517E9E0B5141768014A4252255417442E0C8980B51416CB53C712A22554150F27F4B990B5141928445782D2255414C1193E69C0B5141AD147B182D225541235FEE8DA40B51410CE5DBC42B225541EC0DE1DFA80B5141430547052B225541395C3DE5AE0B5141A2D5A7B129225541183BD0E8B20B514100F6BD6628225541DA0A85C2B30B51412296D3EC27225541418935D6B30B51419776379D27225541B88C2A81B40B5141473617D426225541CC9C72B3B40B51414E647BE429225541DDBACFB9B30B5141B1F5677D29225541C1ABF18FB00B51417675674E2A225541AEACF34BAD0B514139451C282B225541AA7D00CBA90B51410325B1E72B225541D9C0DC7F9E0B51417544C5E02D225541F3D169969A0B51413C740FA92E2255415AB2AA28990B514128F4B9EE2E225541682220FD980B5141A7E3D8AA302255412DA21FCE990B5141DE0195FE362255411922CA139A0B5141F5B0DD393A22554116A5D0768F0B51418DD09CA73B22554111453B888F0B5141F27F3BCC3D2255411D970697900B51414ACE9D813E2255413D0AD773A50B5141A4703D6A3B225541E17A14EEA90B514152B81E853A22554100000090B40B51415C8FC2653822554148E17A64B60B514152B81E053822554177035BBBB70B5141212D369537225541CDCCCCCCB70B5141A4703DBA3722554148E17A14CB0B5141D7A370BD33225541AE32B05FD10B51419D2395853222554155CB672DD80B51416B9693B431225541AC40869ADB0B51413C407139312255413CC55E5ADB0B51414F18CF5C252255414A99D8CAE40B514138B57FC62322554118727CFFF40B51416F67CD042122554145381B2CF80B51419CD0924522225541ED702BD7FB0B5141381E744527225541ED702BD7FB0B5141CDB12F802C225541F9DC302FFD0B5141C16435382F225541896109EFFC0B51411B37C0B931225541735B9344FD0B51412797D47A33225541CDCCCC9C010C51413D0AD723332255410AB33739020C5141A3DD7D4626225541CDCCCC4C040C5141713D0A571322554166666616040C5141C3F528DC11225541C3F5288C030C5141A4703DAA10225541E17A149E010C5141333333730E2255417B14AE87010C514148E17AD40B2255411F85EBD1020C5141C3F5282C06225541713D0AD7060C51413D0AD74307225541B1E8A04A080C51411C30738A02225541C758FB770B0C5141DA5BE784FE215541809B7A960D0C514184DC6836FA215541F6285C0F0A0C5141D7A3705DF82155410AD7A3F0040C514148E17A84F5215541000000E0FD0B5141F6285CFFF12155415C8FC255F60B51413D0AD733EE21554100000090F30B514100000000F02155418FC2F538EB0B514148E17A24F721554166666666E90B51411F85EB51F52155410AD7A380E80B51419A999959F1215541A4703D9AE70B5141AE47E11AEC2155419BD06964E60B51414079C2FBE5215541346D11A2D70B5141717535B9E9215541A37769F3C90B5141B62956D3EB215541FED7493CC40B5141E210B08EEC215541E21FBB99BF0B5141B3901462EC215541BD032632BD0B5141355DB51AEC215541FAFC5B72B90B5141F2A4C13BEB21554116E412B6B60B5141F01F6265EA215541773CD45DB40B514142421800E92155410FBEFF95B10B5141878D40B6E62155412EE4845BB00B51418AEAAF0EE62155414637F0C0AF0B5141F4725D52E8215541E4998780AF0B51411D9C52BEEB2155410D420180AF0B51416F486CABF0215541DB2824E2AF0B5141B0B5D126F7215541ACA888B5AF0B5141045202BBF9215541A86EE259AF0B51415E8C5376FE215541A86EE259AF0B5141EEA36CCD042255416C4238D9AF0B5141A9AF20A809225541E8DC55AFB00B5141859AA0DF0D225541CF2BDCABB20B5141EEBCDC3316225541A9C630DBB30B5141237610E21B225541751412CCB40B5141FFC74EA820225541DFC87AF2B50B51414035B423272255416D494D78B60B5141309F2A7C2A22554182D0F88BB60B514142E6846F312255413152E8FFB60B5141CDACE21B35225541D2CAD6C3B70B51413303661737225541CFB3A43BB60B51415B23F67B37225541F0243EB4B50B5141A531F99B34225541D037F09DB50B514108FF674C31225541A4703D7AB50B5141E17A14FE2B225541AE47E1EAB40B5141AE47E18A26225541A4703D6AB30B514152B81E651E225541F6285C2FB20B51411F85EBB118225541E17A144EB00B514166666626112255415C8FC225AF0B5141295C8F820C22554154C30158AE0B5141B7DD940208225541AEAC47FDAD0B51415EA4861B03225541740DFD2CAE0B5141610923ABFD2155410BC75356AE0B5141F5AAB298FA2155415BAAB89CAE0B5141EA651C00F621554195201A2EAE0B514123629992EC215541A9306260AE0B5141DD49E6E5E7215541862EE646AF0B51419AC9DB2CE521554185EB5168AC0B5141CDCCCC3CE4215541713D0A57A80B5141CDCCCCDCE22155417B14AEC7A50B5141E17A140EE2215541B81E85EBA30B5141B81E85EBE1215541A2CC6B549D0B5141017C56EFE1215541F6285CDF980B51411F85EBF1E1215541333333738C0B5141000000D0E12155417B14AE87830B5141D7A370DDE1215541EC51B86E7F0B514152B81E75E2215541000000807B0B5141713D0A67E3215541B81E851B770B514100000020E521554148E17A94720B5141F6285CFFE62155417B14AE77760B514152B81EA5EF21554148E17A24710B51417B14AE17F12155417B14AE476C0B5141295C8F42F22155418ED036DE690B5141BAF9B47EF221554114AE47B1640B514185EB51E8F2215541B81E85DB5E0B5141B81E853BF32155419A9999995B0B5141F6285CCFF32155419A999919540B5141F6285CFFF42155411F26D1414E0B5141FA8E8CEEF521554141C28F02480B5141DE71856FF6215541D7A3707D440B51419A9999E9F6215541830CAD3D410B5141AEDAA921F721554152B81EC53C0B51413D0AD783F7215541CA1938293B0B51416BAAF954F7215541
+</a>
+
+<b>
+0106000000010000000103000000010000004000000048E17A14CB0B5141D7A370BD33225541AD32B05FD10B51419E2395853222554156CB672DD80B51416B9693B431225541AC40869ADB0B51413F407139312255413DC55E5ADB0B51414C18CF5C252255414999D8CAE40B514137B57FC62322554116727CFFF40B51417267CD042122554140381B2CF80B51419DD0924522225541F2702BD7FB0B5141351E744527225541F2702BD7FB0B5141C9B12F802C225541F7DC302FFD0B5141BC6435382F225541886109EFFC0B51411D37C0B931225541725B9344FD0B51412697D47A33225541CDCCCC9C010C51413D0AD723332255410AB33739020C5141A6DD7D4626225541CDCCCC4C040C5141713D0A571322554166666616040C5141C3F528DC11225541C3F5288C030C5141A4703DAA10225541E17A149E010C5141333333730E2255417B14AE87010C514148E17AD40B2255411F85EBD1020C5141C3F5282C06225541713D0AD7060C51413D0AD74307225541AEE8A04A080C51411930738A02225541C758FB770B0C5141DA5BE784FE2155417D9B7A960D0C514183DC6836FA215541F6285C0F0A0C5141D7A3705DF82155410AD7A3F0040C514148E17A84F5215541000000E0FD0B5141F6285CFFF12155415C8FC255F60B51413D0AD733EE21554100000090F30B514100000000F02155418FC2F538EB0B514148E17A24F721554166666666E90B51411F85EB51F52155410AD7A380E80B51419A999959F1215541A4703D9AE70B5141AE47E11AEC2155419ED06964E60B51414279C2FBE5215541306D11A2D70B51416D7535B9E9215541A87769F3C90B5141B82956D3EB215541FBD7493CC40B5141DF10B08EEC215541E71FBB99BF0B5141B1901462EC215541C0032632BD0B51413A5DB51AEC215541F6FC5B72B90B5141F1A4C13BEB21554113E412B6B60B5141F01F6265EA215541783CD45DB40B514141421800E921554111BEFF95B10B5141848D40B6E62155412BE4845BB00B514189EAAF0EE62155414B37F0C0AF0B5141F8725D52E8215541E8998780AF0B51411A9C52BEEB2155410A420180AF0B514173486CABF0215541DF2824E2AF0B5141B5B5D126F7215541B1A888B5AF0B5141FF5102BBF9215541AA6EE259AF0B51415A8C5376FE215541AA6EE259AF0B5141EDA36CCD04225541674238D9AF0B5141AEAF20A809225541ECDC55AFB00B51418A9AA0DF0D225541D02BDCABB20B5141EFBCDC3316225541A7C630DBB30B5141257610E21B225541751412CCB40B5141FAC74EA820225541DFC87AF2B50B51413C35B423272255416A494D78B60B5141309F2A7C2A22554181D0F88BB60B514144E6846F312255412F52E8FFB60B5141C8ACE21B35225541D2CAD6C3B70B5141340366173722554172B9E827B80B5141C99265A73722554148E17A14CB0B5141D7A370BD33225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985983 - 3473135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000DC000000CA1938293B0B51416BAAF954F72155411B30C0B3390B51413B98428BF7215541981D547A360B51417DA1F827F92155419A9999692F0B5141713D0A17FC215541A4703DDA270B5141CDCCCCECFD21554114AE4701250B514133333363FD21554185EB5118230B51419A999969FD2155413D0AD703220B5141F6285CBFFC215541D7A3705D200B5141F6285CEFF921554114AE47F11E0B5141AE47E13AF82155411F85EB011C0B51418FC2F528F6215541A4703D1A160B514152B81EC5F321554100000050120B5141666666B6F0215541713D0AD70D0B514152B81EC5EB2155417B14AEF7000B5141666666960D22554133333353FB0A51413D0AD743102255410E54DC52EF0A51414B7AB9CD152255416BF903D2F00A51414576575B18225541DD53DD0BF50A5141B60794E520225541D74F7B99F70A5141654A1FFF282255414FAEB645F90A51411B910C8B2E225541939ACA97FA0A514163B8E59F312255411F85EB81FC0A5141AE47E1AA3322554166666626FE0A51415C8FC2A53422554114AE4701FF0A514185EB512835225541E17A143E020B5141C3F528FC35225541713D0AB7060B51413333332336225541EC51B8BE0D0B514152B81ED53522554133333343160B51415C8FC235372255418FC2F5F8270B51411F85EBA13B225541666666962C0B5141D7A3703D3C22554183CFB31D360B5141314FA9223D225541713D0AD7460B514148E17A843D22554114AE47A1570B514148E17AC43E225541666666166B0B514185EB51B84122554100000080700B51417B14AEC74122554148E17AF4720B5141EC51B8CE4122554152B81E557D0B51413D0AD74341225541C3F528CC7E0B5141E17A141E4122554148E17A24860B5141295C8F6240225541C367A2298C0B5141A3434F173F22554110E99B728B0B514191FD529339225541B58669AE890B51413741BE4E392255418828D837830B5141F050484B3A225541DF1BAA58770B5141841072CA3B225541536C60BF750B5141DCD0F2903A2255416EFC955F750B5141BC617F7837225541C686A345740B51413EB1674B2F225541C05C8137740B5141C654FBAF2C22554157CCF5AD750B5141461527EB2A2255418A3C16F7740B51410F761321282255418F439866730B5141D59FCA1A272255410F75A436710B5141F6D893DC232255414841600C710B5141CAE6220D222255416EC57826750B5141448464A720225541425A12C7780B51415028F45B21225541DE88884A7C0B5141CFDFB96F21225541706A3AF67D0B5141B133E2DB232255410388E73B7E0B51411C46A82326225541373465027D0B51418160ABC5272255415992BB8D7D0B5141F8A959AD2922554199A82DF2820B5141CCE5320C292255417077E00F870B5141F3E5DD802822554118B75F49880B51412E66DEAF27225541BB964994890B5141C456AA9C25225541556FBB50980B5141333605C7232255410ADD969A980B51412BB6BD02282255419092A4CC9A0B51419E35EB7C272255410C2DC2A29B0B514110B518F726225541C4FBAC729D0B51417919561525225541B7477BA59C0B51413EE5881B24225541BAE0BC169C0B51411630B242222255411B7A35E19B0B51410FAE035820225541AB9349D89B0B5141082C556D1E225541862E9E079D0B51418376473B1C22554170F147B6A00B514176537C161B2255413782EF8BA30B5141568FED7F1B225541111D44BBA40B514162431F4D1C2255413E049E76A50B51416B5E0FA91D2255418DB76191A50B5141232DFA781F2255419F9D1641A50B5141097C807521225541B31C0D62A40B51419E7E01E623225541B84E9044A30B5141069A289B252255410319E7E5A00B51410301E72926225541DFFC517E9E0B5141768014A4252255417442E0C8980B51416CB53C712A22554150F27F4B990B5141928445782D2255414C1193E69C0B5141AD147B182D225541235FEE8DA40B51410CE5DBC42B225541EC0DE1DFA80B5141430547052B225541395C3DE5AE0B5141A2D5A7B129225541183BD0E8B20B514100F6BD6628225541DA0A85C2B30B51412296D3EC27225541418935D6B30B51419776379D27225541B88C2A81B40B5141473617D426225541CC9C72B3B40B51414E647BE429225541DDBACFB9B30B5141B1F5677D29225541C1ABF18FB00B51417675674E2A225541AEACF34BAD0B514139451C282B225541AA7D00CBA90B51410325B1E72B225541D9C0DC7F9E0B51417544C5E02D225541F3D169969A0B51413C740FA92E2255415AB2AA28990B514128F4B9EE2E225541682220FD980B5141A7E3D8AA302255412DA21FCE990B5141DE0195FE362255411922CA139A0B5141F5B0DD393A22554116A5D0768F0B51418DD09CA73B22554111453B888F0B5141F27F3BCC3D2255411D970697900B51414ACE9D813E2255413D0AD773A50B5141A4703D6A3B225541E17A14EEA90B514152B81E853A22554100000090B40B51415C8FC2653822554148E17A64B60B514152B81E053822554177035BBBB70B5141212D369537225541CDCCCCCCB70B5141A4703DBA3722554148E17A14CB0B5141D7A370BD33225541AE32B05FD10B51419D2395853222554155CB672DD80B51416B9693B431225541AC40869ADB0B51413C407139312255413CC55E5ADB0B51414F18CF5C252255414A99D8CAE40B514138B57FC62322554118727CFFF40B51416F67CD042122554145381B2CF80B51419CD0924522225541ED702BD7FB0B5141381E744527225541ED702BD7FB0B5141CDB12F802C225541F9DC302FFD0B5141C16435382F225541896109EFFC0B51411B37C0B931225541735B9344FD0B51412797D47A33225541CDCCCC9C010C51413D0AD723332255410AB33739020C5141A3DD7D4626225541CDCCCC4C040C5141713D0A571322554166666616040C5141C3F528DC11225541C3F5288C030C5141A4703DAA10225541E17A149E010C5141333333730E2255417B14AE87010C514148E17AD40B2255411F85EBD1020C5141C3F5282C06225541713D0AD7060C51413D0AD74307225541B1E8A04A080C51411C30738A02225541C758FB770B0C5141DA5BE784FE215541809B7A960D0C514184DC6836FA215541F6285C0F0A0C5141D7A3705DF82155410AD7A3F0040C514148E17A84F5215541000000E0FD0B5141F6285CFFF12155415C8FC255F60B51413D0AD733EE21554100000090F30B514100000000F02155418FC2F538EB0B514148E17A24F721554166666666E90B51411F85EB51F52155410AD7A380E80B51419A999959F1215541A4703D9AE70B5141AE47E11AEC2155419BD06964E60B51414079C2FBE5215541346D11A2D70B5141717535B9E9215541A37769F3C90B5141B62956D3EB215541FED7493CC40B5141E210B08EEC215541E21FBB99BF0B5141B3901462EC215541BD032632BD0B5141355DB51AEC215541FAFC5B72B90B5141F2A4C13BEB21554116E412B6B60B5141F01F6265EA215541773CD45DB40B514142421800E92155410FBEFF95B10B5141878D40B6E62155412EE4845BB00B51418AEAAF0EE62155414637F0C0AF0B5141F4725D52E8215541E4998780AF0B51411D9C52BEEB2155410D420180AF0B51416F486CABF0215541DB2824E2AF0B5141B0B5D126F7215541ACA888B5AF0B5141045202BBF9215541A86EE259AF0B51415E8C5376FE215541A86EE259AF0B5141EEA36CCD042255416C4238D9AF0B5141A9AF20A809225541E8DC55AFB00B5141859AA0DF0D225541CF2BDCABB20B5141EEBCDC3316225541A9C630DBB30B5141237610E21B225541751412CCB40B5141FFC74EA820225541DFC87AF2B50B51414035B423272255416D494D78B60B5141309F2A7C2A22554182D0F88BB60B514142E6846F312255413152E8FFB60B5141CDACE21B35225541D2CAD6C3B70B51413303661737225541CFB3A43BB60B51415B23F67B37225541F0243EB4B50B5141A531F99B34225541D037F09DB50B514108FF674C31225541A4703D7AB50B5141E17A14FE2B225541AE47E1EAB40B5141AE47E18A26225541A4703D6AB30B514152B81E651E225541F6285C2FB20B51411F85EBB118225541E17A144EB00B514166666626112255415C8FC225AF0B5141295C8F820C22554154C30158AE0B5141B7DD940208225541AEAC47FDAD0B51415EA4861B03225541740DFD2CAE0B5141610923ABFD2155410BC75356AE0B5141F5AAB298FA2155415BAAB89CAE0B5141EA651C00F621554195201A2EAE0B514123629992EC215541A9306260AE0B5141DD49E6E5E7215541862EE646AF0B51419AC9DB2CE521554185EB5168AC0B5141CDCCCC3CE4215541713D0A57A80B5141CDCCCCDCE22155417B14AEC7A50B5141E17A140EE2215541B81E85EBA30B5141B81E85EBE1215541A2CC6B549D0B5141017C56EFE1215541F6285CDF980B51411F85EBF1E1215541333333738C0B5141000000D0E12155417B14AE87830B5141D7A370DDE1215541EC51B86E7F0B514152B81E75E2215541000000807B0B5141713D0A67E3215541B81E851B770B514100000020E521554148E17A94720B5141F6285CFFE62155417B14AE77760B514152B81EA5EF21554148E17A24710B51417B14AE17F12155417B14AE476C0B5141295C8F42F22155418ED036DE690B5141BAF9B47EF221554114AE47B1640B514185EB51E8F2215541B81E85DB5E0B5141B81E853BF32155419A9999995B0B5141F6285CCFF32155419A999919540B5141F6285CFFF42155411F26D1414E0B5141FA8E8CEEF521554141C28F02480B5141DE71856FF6215541D7A3707D440B51419A9999E9F6215541830CAD3D410B5141AEDAA921F721554152B81EC53C0B51413D0AD783F7215541CA1938293B0B51416BAAF954F7215541
+</a>
+
+<b>
+0106000000010000000103000000010000004000000048E17A14CB0B5141D7A370BD33225541AD32B05FD10B51419E2395853222554156CB672DD80B51416B9693B431225541AC40869ADB0B51413F407139312255413DC55E5ADB0B51414C18CF5C252255414999D8CAE40B514137B57FC62322554116727CFFF40B51417267CD042122554140381B2CF80B51419DD0924522225541F2702BD7FB0B5141351E744527225541F2702BD7FB0B5141C9B12F802C225541F7DC302FFD0B5141BC6435382F225541886109EFFC0B51411D37C0B931225541725B9344FD0B51412697D47A33225541CDCCCC9C010C51413D0AD723332255410AB33739020C5141A6DD7D4626225541CDCCCC4C040C5141713D0A571322554166666616040C5141C3F528DC11225541C3F5288C030C5141A4703DAA10225541E17A149E010C5141333333730E2255417B14AE87010C514148E17AD40B2255411F85EBD1020C5141C3F5282C06225541713D0AD7060C51413D0AD74307225541AEE8A04A080C51411930738A02225541C758FB770B0C5141DA5BE784FE2155417D9B7A960D0C514183DC6836FA215541F6285C0F0A0C5141D7A3705DF82155410AD7A3F0040C514148E17A84F5215541000000E0FD0B5141F6285CFFF12155415C8FC255F60B51413D0AD733EE21554100000090F30B514100000000F02155418FC2F538EB0B514148E17A24F721554166666666E90B51411F85EB51F52155410AD7A380E80B51419A999959F1215541A4703D9AE70B5141AE47E11AEC2155419ED06964E60B51414279C2FBE5215541306D11A2D70B51416D7535B9E9215541A87769F3C90B5141B82956D3EB215541FBD7493CC40B5141DF10B08EEC215541E71FBB99BF0B5141B1901462EC215541C0032632BD0B51413A5DB51AEC215541F6FC5B72B90B5141F1A4C13BEB21554113E412B6B60B5141F01F6265EA215541783CD45DB40B514141421800E921554111BEFF95B10B5141848D40B6E62155412BE4845BB00B514189EAAF0EE62155414B37F0C0AF0B5141F8725D52E8215541E8998780AF0B51411A9C52BEEB2155410A420180AF0B514173486CABF0215541DF2824E2AF0B5141B5B5D126F7215541B1A888B5AF0B5141FF5102BBF9215541AA6EE259AF0B51415A8C5376FE215541AA6EE259AF0B5141EDA36CCD04225541674238D9AF0B5141AEAF20A809225541ECDC55AFB00B51418A9AA0DF0D225541D02BDCABB20B5141EFBCDC3316225541A7C630DBB30B5141257610E21B225541751412CCB40B5141FAC74EA820225541DFC87AF2B50B51413C35B423272255416A494D78B60B5141309F2A7C2A22554181D0F88BB60B514144E6846F312255412F52E8FFB60B5141C8ACE21B35225541D2CAD6C3B70B5141340366173722554172B9E827B80B5141C99265A73722554148E17A14CB0B5141D7A370BD33225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974285 - 1477390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -31  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5281C88E05041000000F06B2D554185EB512886E050415C8FC2756A2D5541F6A6167883E0504184924F0B692D5541666666B680E0504152B81E15682D55410AD7A3807EE05041000000D0672D5541D231112479E0504176D85CD2682D55418FC2F52873E050411F85EB816A2D554185EB51386FE050413D0AD7E36B2D55414764875B5FE050418A4DF979712D554191E791866BE050419B4FFBCC732D5541391E9B3076E050411B07FEF1762D5541137D9F3F7BE0504169270068792D5541C3F5281C88E05041000000F06B2D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000069968C3688E050418B82B0D76B2D5541A8694C1386E050413FACE7416A2D5541AE9150A983E0504154F63F23692D55414356042783E050412366AFE7682D554197A0E65D82E050410D1D92A4682D554159B45ED380E050417C7FA71E682D5541B58EE56E80E05041BC61620C682D55416D09007C7EE050413CC279D0672D5541B8B258EE7BE05041D20E201B682D55415DBBD14579E05041BFD4CED1682D5541D3D90CF078E0504177C4B0E5682D5541D97F67EF78E050416D4C4BE7682D55411603F2FF75E05041ACD3C4B4692D5541A6FE1C2073E050411F3306856A2D55410C67A5216FE05041320A67EB6B2D55411B58ABFC62E05041588A59F86F2D5541EE01F0AA62E050414A917414702D55417C53FD9A61E05041A20B3381702D5541AA2699D360E05041A1F2CDCE702D55418C4655F55FE0504170E1E830712D5541A4EE80A568E0504107D1B5BD722D554130195EB16AE05041AA1BAD40732D554152E5462A6CE0504152FE74AE732D5541831DFBFA6CE050418DA836E9732D55412C50C24072E05041AE8D3765752D5541DE4AF03C76E0504111D90AF1762D55413252C3EB78E050418637850C782D554156BD13287BE05041CDACFF5A792D5541564DD00D7FE05041D99081CF752D5541FBCC673185E050413411EAAB6F2D554169968C3688E050418B82B0D76B2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974285 - 3438677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -31  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5281C88E05041000000F06B2D554185EB512886E050415C8FC2756A2D5541F6A6167883E0504184924F0B692D5541666666B680E0504152B81E15682D55410AD7A3807EE05041000000D0672D5541D231112479E0504176D85CD2682D55418FC2F52873E050411F85EB816A2D554185EB51386FE050413D0AD7E36B2D55414764875B5FE050418A4DF979712D554191E791866BE050419B4FFBCC732D5541391E9B3076E050411B07FEF1762D5541137D9F3F7BE0504169270068792D5541C3F5281C88E05041000000F06B2D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000069968C3688E050418B82B0D76B2D5541A8694C1386E050413FACE7416A2D5541AE9150A983E0504154F63F23692D55414356042783E050412366AFE7682D554197A0E65D82E050410D1D92A4682D554159B45ED380E050417C7FA71E682D5541B58EE56E80E05041BC61620C682D55416D09007C7EE050413CC279D0672D5541B8B258EE7BE05041D20E201B682D55415DBBD14579E05041BFD4CED1682D5541D3D90CF078E0504177C4B0E5682D5541D97F67EF78E050416D4C4BE7682D55411603F2FF75E05041ACD3C4B4692D5541A6FE1C2073E050411F3306856A2D55410C67A5216FE05041320A67EB6B2D55411B58ABFC62E05041588A59F86F2D5541EE01F0AA62E050414A917414702D55417C53FD9A61E05041A20B3381702D5541AA2699D360E05041A1F2CDCE702D55418C4655F55FE0504170E1E830712D5541A4EE80A568E0504107D1B5BD722D554130195EB16AE05041AA1BAD40732D554152E5462A6CE0504152FE74AE732D5541831DFBFA6CE050418DA836E9732D55412C50C24072E05041AE8D3765752D5541DE4AF03C76E0504111D90AF1762D55413252C3EB78E050418637850C782D554156BD13287BE05041CDACFF5A792D5541564DD00D7FE05041D99081CF752D5541FBCC673185E050413411EAAB6F2D554169968C3688E050418B82B0D76B2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43979 - 57687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001C0000007B14AE470CD9504114AE4791D6FE5441F6285C8F0AD950419A999909D7FE5441966593FE07D95041301E508CD6FE5441387FDE6B07D95041BB3F6E96D6FE5441CBA8A68B02D95041538720E4D6FE5441BA2CAF1BFFD85041091834A1D5FE54417E25C62AFCD85041CF01D768D4FE544182328ABCF8D85041FE8F45ECD2FE5441FE97F14DF5D850418D88987ED3FE54418FC2F578F5D8504166666676D6FE5441E17A14AEF5D85041333333C3DDFE5441000000D0F4D850417B14AEC7DDFE5441713D0A37EFD8504148E17AE4DDFE54411F85EBF1DDD85041713D0AA7D5FE54411F85EBF1D4D85041000000D0D3FE5441914C0198D3D850411267C9D4DDFE5441B81E850BDDD85041000000B0DFFE544133333333E5D8504166666606E2FE5441A4703DEAF0D85041E17A14DEE5FE5441AE47E1FAF7D85041B81E850BE7FE54417B14AEC700D95041B81E854BE7FE5441333333730CD9504185EB5118E6FE54410AD7A3800CD95041713D0A97E5FE5441000000C00CD95041C3F5286CE2FE5441C3F528BC0CD950410AD7A350DFFE544114AE47A10CD95041CDCCCC4CDDFE544148E17A840CD95041713D0A27DBFE54417B14AE470CD9504114AE4791D6FE5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000008FC2F578F5D8504166666676D6FE54419CA7418DF5D850418ABB7140D9FE5441F6E25F8DF5D85041894F9944D9FE5441F232D08FF5D85041E712659AD9FE5441FE5E196F0CD950419AB5468AD9FE5441C73FBE6C0CD950412148CB5CD9FE544122AD5E6B0CD9504171134842D9FE54417B420B680CD9504117411302D9FE5441EE45AF5A0CD95041AA832B00D8FE54415ACA732F0CD95041DF7DE697D6FE5441F6285C8F0AD950419A999909D7FE5441966593FE07D95041301E508CD6FE5441387FDE6B07D95041BB3F6E96D6FE544119C76D8B02D950413BF987EDD6FE5441BA7AD5C001D9504175E2B299D6FE5441BA2CAF1BFFD85041091834A1D5FE544193DCB872FDD8504171B7E5F0D4FE544150C2DA36FDD850413FA0EDE2D4FE5441BA271DF9FCD8504172F371BED4FE54417E25C62AFCD85041CF01D768D4FE5441C96C5A7CF9D85041A50F643FD3FE54418FAFF11BF9D85041FB129D15D3FE5441CC8097F6F8D850412F766D05D3FE5441BFC8CAEFF8D850416E267B02D3FE5441A72BA7D5F8D850416C7327F7D2FE54419F20CACEF8D85041C6102EF4D2FE5441267F50C5F8D8504178F512F0D2FE5441C9BBA5FCF7D85041F4E63A0CD3FE5441FE97F14DF5D850418D88987ED3FE54418FC2F578F5D8504166666676D6FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 3170589
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441AE47E15AF956514114AE4771A47D54410AD7A34015575141D7A370ED997D544148E17A241957514133333373987D5441713D0A271A5751410AD7A3D0947D5441E17A14EE1A57514148E17A24907D5441D7A370BD1C5751417B14AE47797D5441333333631F5751411F85EBD1577D5441E17A14CEDC5651417B14AEA7587D54416353C500D8565141FFCD9EC6597D544139895CCAD756514198FAC2D8597D54414E37A4EBD656514127BDB8215A7D5441D123A908CF5651419057561B5D7D54414161B3BFCE56514134C893255D7D5441D023083BCA5651416B8B91D25D7D54414AD70958C7565141DAD8811C5E7D54418FDBAD0DBA56514122373C805F7D544100000060B45651417B14AEA75F7D5441EC51B86EAF565141F6285C9F5F7D5441A4703D9AA55651413D0AD7135E7D5441D7A370ED8F5651419A9999D9597D5441B81E854B8B565141666666768B7D5441E17A148E8756514166666686B37D5441000000B0885651418FC2F5B8B47D54415C8FC2E5B4565141F6285CFFB27D5441295C8F22BE56514133333353B27D544148E17A94C55651417B14AE47B17D54419A999959CE565141CDCCCCDCAF7D5441B748C51ECF5651415B8723A5AE7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D54412A9D5119B7565141FBBAD9945F7D54417883203AB456514180536EA75F7D54415FB0EA1FB1565141B06235A25F7D5441AD3DCA59AF5651413A05129C5F7D5441909F88ABAD565141CF3872585F7D5441A706F81EAB565141859DE1F15E7D544188E3FCEEA6565141E15F65495E7D5441AB341FE4A5565141BFC0731F5E7D544189960019A55651418328A2FA5D7D5441F7D295F1A1565141178E275D5D7D5441BCB23156A0565141B3A8EA0C5D7D544148AA014B9C565141F86403435C7D5441890B41139756514145D47C3E5B7D544106231B559156514106D8BF1F5A7D54419B76A5EC8F5651411BB871D9597D54416BF255DF8F5651411FE5A6705A7D544159A18F7F8F565141ACBECD6D5E7D5441FAE8269BA25651416577096D617D5441916920F6A3565141B1233BA3617D5441A6792A9AA55651410A45D5E4617D54412A8ADE9CAA565141AEAD2AAD627D544114C156B1AE565141DFF44A50637D5441AFFD30ECAE565141BA958E51637D544172AF3923B15651414893253F637D54415CE0E0F9B25651414EA7DD2F637D5441E59D73C5B65651416A3D5210637D54413282B5B0BA565141A4EA83EF627D54415CF54A6FBD565141F6113BF5627D5441AE67B02CC156514183F2A3EF627D5441AE345F49C3565141BB1092E8627D54412FB63745C55651412849A2D9627D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 3488163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441AE47E15AF956514114AE4771A47D54410AD7A34015575141D7A370ED997D544148E17A241957514133333373987D5441713D0A271A5751410AD7A3D0947D5441E17A14EE1A57514148E17A24907D5441D7A370BD1C5751417B14AE47797D5441333333631F5751411F85EBD1577D5441E17A14CEDC5651417B14AEA7587D54416353C500D8565141FFCD9EC6597D544139895CCAD756514198FAC2D8597D54414E37A4EBD656514127BDB8215A7D5441D123A908CF5651419057561B5D7D54414161B3BFCE56514134C893255D7D5441D023083BCA5651416B8B91D25D7D54414AD70958C7565141DAD8811C5E7D54418FDBAD0DBA56514122373C805F7D544100000060B45651417B14AEA75F7D5441EC51B86EAF565141F6285C9F5F7D5441A4703D9AA55651413D0AD7135E7D5441D7A370ED8F5651419A9999D9597D5441B81E854B8B565141666666768B7D5441E17A148E8756514166666686B37D5441000000B0885651418FC2F5B8B47D54415C8FC2E5B4565141F6285CFFB27D5441295C8F22BE56514133333353B27D544148E17A94C55651417B14AE47B17D54419A999959CE565141CDCCCCDCAF7D5441B748C51ECF5651415B8723A5AE7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D54412A9D5119B7565141FBBAD9945F7D54417883203AB456514180536EA75F7D54415FB0EA1FB1565141B06235A25F7D5441AD3DCA59AF5651413A05129C5F7D5441909F88ABAD565141CF3872585F7D5441A706F81EAB565141859DE1F15E7D544188E3FCEEA6565141E15F65495E7D5441AB341FE4A5565141BFC0731F5E7D544189960019A55651418328A2FA5D7D5441F7D295F1A1565141178E275D5D7D5441BCB23156A0565141B3A8EA0C5D7D544148AA014B9C565141F86403435C7D5441890B41139756514145D47C3E5B7D544106231B559156514106D8BF1F5A7D54419B76A5EC8F5651411BB871D9597D54416BF255DF8F5651411FE5A6705A7D544159A18F7F8F565141ACBECD6D5E7D5441FAE8269BA25651416577096D617D5441916920F6A3565141B1233BA3617D5441A6792A9AA55651410A45D5E4617D54412A8ADE9CAA565141AEAD2AAD627D544114C156B1AE565141DFF44A50637D5441AFFD30ECAE565141BA958E51637D544172AF3923B15651414893253F637D54415CE0E0F9B25651414EA7DD2F637D5441E59D73C5B65651416A3D5210637D54413282B5B0BA565141A4EA83EF627D54415CF54A6FBD565141F6113BF5627D5441AE67B02CC156514183F2A3EF627D5441AE345F49C3565141BB1092E8627D54412FB63745C55651412849A2D9627D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 86483
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441AE47E15AF956514114AE4771A47D54410AD7A34015575141D7A370ED997D544148E17A241957514133333373987D5441713D0A271A5751410AD7A3D0947D5441E17A14EE1A57514148E17A24907D5441D7A370BD1C5751417B14AE47797D5441333333631F5751411F85EBD1577D5441E17A14CEDC5651417B14AEA7587D54416353C500D8565141FFCD9EC6597D544139895CCAD756514198FAC2D8597D54414E37A4EBD656514127BDB8215A7D5441D123A908CF5651419057561B5D7D54414161B3BFCE56514134C893255D7D5441D023083BCA5651416B8B91D25D7D54414AD70958C7565141DAD8811C5E7D54418FDBAD0DBA56514122373C805F7D544100000060B45651417B14AEA75F7D5441EC51B86EAF565141F6285C9F5F7D5441A4703D9AA55651413D0AD7135E7D5441D7A370ED8F5651419A9999D9597D5441B81E854B8B565141666666768B7D5441E17A148E8756514166666686B37D5441000000B0885651418FC2F5B8B47D54415C8FC2E5B4565141F6285CFFB27D5441295C8F22BE56514133333353B27D544148E17A94C55651417B14AE47B17D54419A999959CE565141CDCCCCDCAF7D5441B748C51ECF5651415B8723A5AE7D5441
+</a>
+
+<b>
+010600000001000000010300000001000000210000007B9197051F575141A0FFF7705C7D5441D212E9111F575141F3EE48D55B7D5441EB7EFE0808575141221BB3285C7D5441E659A47F00575141ECA59A385C7D5441C5DEE51EF35651415637B4805C7D544137A903D5ED56514106A419765C7D5441E34519ADDC565141CC3972BB5C7D5441A64BB088D7565141D75DB6345E7D54413DAAB0BAD65651417278E11C677D54417A5B995AD4565141D328888C817D5441474177EDD25651419C17396C917D5441A52155DFD15651410B659D8B9D7D54410862134BD0565141F160B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441EC18393CD3565141348AAE03AF7D5441A74626F8DB565141713EF13CAD7D5441433BB66EE35651416DAC546CAB7D54419517CED0EA5651411E4FF247A97D5441F4E3BCA9EC5651413E3B01B8A87D5441DF8C7679EF5651416F12CBD1A77D5441E61E976CF35651415DDF3478A67D54415FD11143F4565141C8A9E62EA67D54414AA2AB6EF5565141479B80C8A57D5441C3F117B8FB56514186672A8DA37D544171E7B13A03575141E1E381B8A07D544174F430E50A57514153E7CFD49D7D5441677D1E2019575141343ADB74987D5441141FF80E1A575141AA5D4527957D54417053D1FE1A5751415B1110518F7D5441F38C56901B5751416B8FF622887D544179B1F0A51C575141B2CC82707A7D5441EA9D5DE01D57514183DEDCEA6A7D54417B9197051F575141A0FFF7705C7D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 86484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441AE47E15AF956514114AE4771A47D54410AD7A34015575141D7A370ED997D544148E17A241957514133333373987D5441713D0A271A5751410AD7A3D0947D5441E17A14EE1A57514148E17A24907D5441D7A370BD1C5751417B14AE47797D5441333333631F5751411F85EBD1577D5441E17A14CEDC5651417B14AEA7587D54416353C500D8565141FFCD9EC6597D544139895CCAD756514198FAC2D8597D54414E37A4EBD656514127BDB8215A7D5441D123A908CF5651419057561B5D7D54414161B3BFCE56514134C893255D7D5441D023083BCA5651416B8B91D25D7D54414AD70958C7565141DAD8811C5E7D54418FDBAD0DBA56514122373C805F7D544100000060B45651417B14AEA75F7D5441EC51B86EAF565141F6285C9F5F7D5441A4703D9AA55651413D0AD7135E7D5441D7A370ED8F5651419A9999D9597D5441B81E854B8B565141666666768B7D5441E17A148E8756514166666686B37D5441000000B0885651418FC2F5B8B47D54415C8FC2E5B4565141F6285CFFB27D5441295C8F22BE56514133333353B27D544148E17A94C55651417B14AE47B17D54419A999959CE565141CDCCCCDCAF7D5441B748C51ECF5651415B8723A5AE7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003B3CDBFDC0565141AFA48DECB17D54419A6C28A9CA56514148617375B07D5441B26DD16DCE5651414C89D7BCAF7D5441E713C571CE5651418C7498B6AF7D544107ACCF7BCE5651415B33B9A6AF7D5441DE456520CF5651411E792594AE7D5441230F8CB2D25651414624F6B9887D5441A8450F81D456514113A34A15757D544187946FE6D4565141390F7EC4707D5441487A66FAD55651418DBF449B647D54414C02AC72D65651416593A0BD5F7D544114AD8A85D5565141AC57FDBF5F7D5441C26D0E73C656514122D5814A627D5441D9814B40C3565141B2B297A8627D5441869CB801B9565141CFB6BDFD627D5441D8412BC2AE565141A7DCEB52637D5441B138AE7F8F565141041C16715E7D5441B92A61A08C56514120F7E8337D7D5441A3D5A3EE8B565141D6C370A3847D5441B085015C88565141CFCC8AE8AA7D5441E17A148E8756514166666686B37D54415BD0D7CF885651419DB0B7B7B47D54415D6EEADE89565141450724ADB47D544180592B458C56514185702C95B47D5441DDFD7EC49556514174AB4E36B47D5441648AFDFA975651411E223420B47D54410A5EEC24A6565141EACFB992B37D5441855C2A84B456514162002B03B37D5441909BCE3DBD565141757CDA63B27D54413B3CDBFDC0565141AFA48DECB17D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 234590
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441AE47E15AF956514114AE4771A47D54410AD7A34015575141D7A370ED997D544148E17A241957514133333373987D5441713D0A271A5751410AD7A3D0947D5441E17A14EE1A57514148E17A24907D5441D7A370BD1C5751417B14AE47797D5441333333631F5751411F85EBD1577D5441E17A14CEDC5651417B14AEA7587D54416353C500D8565141FFCD9EC6597D544139895CCAD756514198FAC2D8597D54414E37A4EBD656514127BDB8215A7D5441D123A908CF5651419057561B5D7D54414161B3BFCE56514134C893255D7D5441D023083BCA5651416B8B91D25D7D54414AD70958C7565141DAD8811C5E7D54418FDBAD0DBA56514122373C805F7D544100000060B45651417B14AEA75F7D5441EC51B86EAF565141F6285C9F5F7D5441A4703D9AA55651413D0AD7135E7D5441D7A370ED8F5651419A9999D9597D5441B81E854B8B565141666666768B7D5441E17A148E8756514166666686B37D5441000000B0885651418FC2F5B8B47D54415C8FC2E5B4565141F6285CFFB27D5441295C8F22BE56514133333353B27D544148E17A94C55651417B14AE47B17D54419A999959CE565141CDCCCCDCAF7D5441B748C51ECF5651415B8723A5AE7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D54412A9D5119B7565141FBBAD9945F7D54417883203AB456514180536EA75F7D54415FB0EA1FB1565141B06235A25F7D5441AD3DCA59AF5651413A05129C5F7D5441909F88ABAD565141CF3872585F7D5441A706F81EAB565141859DE1F15E7D544188E3FCEEA6565141E15F65495E7D5441AB341FE4A5565141BFC0731F5E7D544189960019A55651418328A2FA5D7D5441F7D295F1A1565141178E275D5D7D5441BCB23156A0565141B3A8EA0C5D7D544148AA014B9C565141F86403435C7D5441890B41139756514145D47C3E5B7D544106231B559156514106D8BF1F5A7D54419B76A5EC8F5651411BB871D9597D54416BF255DF8F5651411FE5A6705A7D544159A18F7F8F565141ACBECD6D5E7D5441FAE8269BA25651416577096D617D5441916920F6A3565141B1233BA3617D5441A6792A9AA55651410A45D5E4617D54412A8ADE9CAA565141AEAD2AAD627D544114C156B1AE565141DFF44A50637D5441AFFD30ECAE565141BA958E51637D544172AF3923B15651414893253F637D54415CE0E0F9B25651414EA7DD2F637D5441E59D73C5B65651416A3D5210637D54413282B5B0BA565141A4EA83EF627D54415CF54A6FBD565141F6113BF5627D5441AE67B02CC156514183F2A3EF627D5441AE345F49C3565141BB1092E8627D54412FB63745C55651412849A2D9627D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 370848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441AE47E15AF956514114AE4771A47D54410AD7A34015575141D7A370ED997D544148E17A241957514133333373987D5441713D0A271A5751410AD7A3D0947D5441E17A14EE1A57514148E17A24907D5441D7A370BD1C5751417B14AE47797D5441333333631F5751411F85EBD1577D5441E17A14CEDC5651417B14AEA7587D54416353C500D8565141FFCD9EC6597D544139895CCAD756514198FAC2D8597D54414E37A4EBD656514127BDB8215A7D5441D123A908CF5651419057561B5D7D54414161B3BFCE56514134C893255D7D5441D023083BCA5651416B8B91D25D7D54414AD70958C7565141DAD8811C5E7D54418FDBAD0DBA56514122373C805F7D544100000060B45651417B14AEA75F7D5441EC51B86EAF565141F6285C9F5F7D5441A4703D9AA55651413D0AD7135E7D5441D7A370ED8F5651419A9999D9597D5441B81E854B8B565141666666768B7D5441E17A148E8756514166666686B37D5441000000B0885651418FC2F5B8B47D54415C8FC2E5B4565141F6285CFFB27D5441295C8F22BE56514133333353B27D544148E17A94C55651417B14AE47B17D54419A999959CE565141CDCCCCDCAF7D5441B748C51ECF5651415B8723A5AE7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D54412A9D5119B7565141FBBAD9945F7D54417883203AB456514180536EA75F7D54415FB0EA1FB1565141B06235A25F7D5441AD3DCA59AF5651413A05129C5F7D5441909F88ABAD565141CF3872585F7D5441A706F81EAB565141859DE1F15E7D544188E3FCEEA6565141E15F65495E7D5441AB341FE4A5565141BFC0731F5E7D544189960019A55651418328A2FA5D7D5441F7D295F1A1565141178E275D5D7D5441BCB23156A0565141B3A8EA0C5D7D544148AA014B9C565141F86403435C7D5441890B41139756514145D47C3E5B7D544106231B559156514106D8BF1F5A7D54419B76A5EC8F5651411BB871D9597D54416BF255DF8F5651411FE5A6705A7D544159A18F7F8F565141ACBECD6D5E7D5441FAE8269BA25651416577096D617D5441916920F6A3565141B1233BA3617D5441A6792A9AA55651410A45D5E4617D54412A8ADE9CAA565141AEAD2AAD627D544114C156B1AE565141DFF44A50637D5441AFFD30ECAE565141BA958E51637D544172AF3923B15651414893253F637D54415CE0E0F9B25651414EA7DD2F637D5441E59D73C5B65651416A3D5210637D54413282B5B0BA565141A4EA83EF627D54415CF54A6FBD565141F6113BF5627D5441AE67B02CC156514183F2A3EF627D5441AE345F49C3565141BB1092E8627D54412FB63745C55651412849A2D9627D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 58333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041147915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F254417B14AE6731E7504148E17A14D1F25441AE47E17A87E75041CDCCCC9CEDF254416E9062AD8FE7504159E76D9EE0F25441F94B0DEF99E750418EB643C2CFF25441C5FA54CC9FE75041ECDF01E1C4F254413D0AD773A2E750411F85EBA1BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441666666761EE8504148E17AF4D5F254410103000000010000002500000052B81E6566E75041295C8FF2F2F25441000000E068E750413D0AD703F5F25441333333136CE75041D7A3703DF4F25441295C8F626CE750418FC2F558F1F25441AE47E13A6CE750411F85EBB1EFF25441713D0AE76CE750419A999979EDF25441F6285C4F70E75041F6285C2FECF25441000000C074E750418FC2F598ECF254411F85EB6177E7504148E17A94EDF25441A4703DFA7BE75041EC51B8DEEEF25441E17A14DE7EE75041713D0AE7EFF25441000000707FE750415C8FC2B5F1F254417B14AE977FE75041295C8F22F4F254410AD7A3207FE75041F6285CAFF5F254415C8FC2D57DE75041D7A3709DF6F2544152B81EF57CE750417B14AEE7F7F2544148E17A747EE75041A4703DDAF7F2544185EB517880E750411F85EB01F8F25441713D0A7783E750419A999929F8F254415C8FC22586E750415C8FC2D5F8F25441713D0A3788E75041C3F5289CF9F2544152B81EA587E7504185EB5198F7F2544152B81EA587E75041A4703D7AF5F2544185EB51C888E75041D7A3703DF4F25441D7A3700D8BE75041D7A3700DF3F254411F85EBF18DE75041E17A14BEF2F2544185EB515892E75041713D0AA7F2F25441EC51B86E6FE750418FC2F528E7F25441D7A3702D6CE750419A999919EAF25441E17A140E6AE7504133333393E7F254411F85EB416AE7504152B81E75E5F25441CDCCCCBC33E750419A999959D3F25441C3F5285C37E7504148E17A04D7F254417B14AE3757E750419A9999F9E3F25441000000005DE750419A9999E9E9F25441B81E856B62E75041E17A142EEFF2544152B81E6566E75041295C8FF2F2F25441
+</a>
+
+<b>
+0106000000010000000103000000010000006B0000005C8FC24507E75041000000F0C2F2544138F3ED581AE7504115BA1E57C9F25441A87298ED1AE75041C5B70589C9F25441F4831FDF1DE750414AF5F485CAF2544190EE977029E7504152840668CEF25441E39CAF8430E75041911949C8D0F25441037637F331E75041CCF3BB42D1F25441EF2CCF4932E75041E732705FD1F2544170BA37EB4BE7504131F970DED9F25441528D49E25FE750410E13AE7CE0F25441820A812D60E75041DCF69C95E0F254414A31CBC260E7504133AD19C7E0F254412224A29E6CE75041B5DE6EB5E4F254417205A92A6EE750419CB0B538E5F25441AE47E17A87E75041CDCCCC9CEDF25441383DBCBD8EE750413A314D1AE2F254417F445DAE8FE75041DEC9D19CE0F25441F94B0DEF99E750418EB643C2CFF25441C4FA54CC9FE75041EADF01E1C4F254410D52BC6FA2E75041125408AABFF254418EF6AA73A2E75041D065A89FBFF254413D0AD773A2E750411F85EBA1BFF25441B521D67AA2E75041808054A6BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F25441FE5FB710A1E7504171F5CC26F3F25441A83A2E46A1E75041FA43FD2EF3F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F254411D2E6693EDE7504132C1950EE4F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F254410800D21DF6E75041D1FEB04EE1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF254412C139BAE0CE850410C7CFFBBDCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441C74E72561EE85041B6338802D6F25441666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF254416263DCDA22E8504186A9C0D2C9F254414089B0AD22E85041AFC9FFD1C9F2544102609FB220E85041DEB08AC9C9F25441666666361FE85041333333C3C9F254412FECBEF91BE85041629819F1C9F2544176CF323C17E85041ABCF5134CAF254415C8FC2C516E85041AE47E13ACAF2544127DD16A704E850416139613FCDF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F254419611AE2552E75041EBAB2BA6AAF25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041197915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544147B0615322E7504167F452199CF25441E019489A21E75041B0E080799CF25441EE9FBEFE1EE75041CE635CD49DF25441425C1A4D1EE75041AB36AA309EF2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F254416F4265D8D9E65041FD99EA0EACF2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 119309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041147915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F254417B14AE6731E7504148E17A14D1F25441AE47E17A87E75041CDCCCC9CEDF254416E9062AD8FE7504159E76D9EE0F25441F94B0DEF99E750418EB643C2CFF25441C5FA54CC9FE75041ECDF01E1C4F254413D0AD773A2E750411F85EBA1BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441666666761EE8504148E17AF4D5F254410103000000010000002500000052B81E6566E75041295C8FF2F2F25441000000E068E750413D0AD703F5F25441333333136CE75041D7A3703DF4F25441295C8F626CE750418FC2F558F1F25441AE47E13A6CE750411F85EBB1EFF25441713D0AE76CE750419A999979EDF25441F6285C4F70E75041F6285C2FECF25441000000C074E750418FC2F598ECF254411F85EB6177E7504148E17A94EDF25441A4703DFA7BE75041EC51B8DEEEF25441E17A14DE7EE75041713D0AE7EFF25441000000707FE750415C8FC2B5F1F254417B14AE977FE75041295C8F22F4F254410AD7A3207FE75041F6285CAFF5F254415C8FC2D57DE75041D7A3709DF6F2544152B81EF57CE750417B14AEE7F7F2544148E17A747EE75041A4703DDAF7F2544185EB517880E750411F85EB01F8F25441713D0A7783E750419A999929F8F254415C8FC22586E750415C8FC2D5F8F25441713D0A3788E75041C3F5289CF9F2544152B81EA587E7504185EB5198F7F2544152B81EA587E75041A4703D7AF5F2544185EB51C888E75041D7A3703DF4F25441D7A3700D8BE75041D7A3700DF3F254411F85EBF18DE75041E17A14BEF2F2544185EB515892E75041713D0AA7F2F25441EC51B86E6FE750418FC2F528E7F25441D7A3702D6CE750419A999919EAF25441E17A140E6AE7504133333393E7F254411F85EB416AE7504152B81E75E5F25441CDCCCCBC33E750419A999959D3F25441C3F5285C37E7504148E17A04D7F254417B14AE3757E750419A9999F9E3F25441000000005DE750419A9999E9E9F25441B81E856B62E75041E17A142EEFF2544152B81E6566E75041295C8FF2F2F25441
+</a>
+
+<b>
+0106000000010000000103000000010000006C000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF254416363DCDA22E8504189A9C0D2C9F254414089B0AD22E85041AFC9FFD1C9F2544102609FB220E85041DDB08AC9C9F25441666666361FE85041333333C3C9F254412FECBEF91BE85041629819F1C9F2544176CF323C17E85041ABCF5134CAF254415C8FC2C516E85041AE47E13ACAF2544127DD16A704E850416139613FCDF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F254419611AE2552E75041E9AB2BA6AAF25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041197915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544149B0615322E7504165F452199CF25441E70E439B21E75041737AFE789CF25441E019489A21E75041B0E080799CF25441EE9FBEFE1EE75041CE635CD49DF25441425C1A4D1EE75041AB36AA309EF2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F2544138F3ED581AE7504115BA1E57C9F25441A87298ED1AE75041C5B70589C9F25441F4831FDF1DE750414AF5F485CAF25441DC5197DC22E750414BD2C232CCF25441E69CAF8430E75041911949C8D0F25441037637F331E75041CCF3BB42D1F25441EF2CCF4932E75041E332705FD1F25441A92E17A23AE7504190EA9423D4F2544102FD325453E7504118B94253DCF25441528D49E25FE750410E13AE7CE0F25441820A812D60E75041DCF69C95E0F254414C31CBC260E7504130AD19C7E0F254412224A29E6CE75041B0DE6EB5E4F254417205A92A6EE750419DB0B538E5F25441AE47E17A87E75041CDCCCC9CEDF25441CCD5BCBD8EE75041603F4C1AE2F254413E445DAE8FE7504142CAD19CE0F25441F94B0DEF99E750418EB643C2CFF25441C4FA54CC9FE75041EADF01E1C4F254410B52BC6FA2E75041175408AABFF254418EF6AA73A2E75041D065A89FBFF254413D0AD773A2E750411F85EBA1BFF25441B521D67AA2E75041808054A6BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F25441FE5FB710A1E7504171F5CC26F3F25441A63A2E46A1E75041F943FD2EF3F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F254411D2E6693EDE7504133C1950EE4F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F254410800D21DF6E75041D2FEB04EE1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF254412C139BAE0CE850410C7CFFBBDCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441C74E72561EE85041B8338802D6F25441666666761EE8504148E17AF4D5F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 301393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041147915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F254417B14AE6731E7504148E17A14D1F25441AE47E17A87E75041CDCCCC9CEDF254416E9062AD8FE7504159E76D9EE0F25441F94B0DEF99E750418EB643C2CFF25441C5FA54CC9FE75041ECDF01E1C4F254413D0AD773A2E750411F85EBA1BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441666666761EE8504148E17AF4D5F254410103000000010000002500000052B81E6566E75041295C8FF2F2F25441000000E068E750413D0AD703F5F25441333333136CE75041D7A3703DF4F25441295C8F626CE750418FC2F558F1F25441AE47E13A6CE750411F85EBB1EFF25441713D0AE76CE750419A999979EDF25441F6285C4F70E75041F6285C2FECF25441000000C074E750418FC2F598ECF254411F85EB6177E7504148E17A94EDF25441A4703DFA7BE75041EC51B8DEEEF25441E17A14DE7EE75041713D0AE7EFF25441000000707FE750415C8FC2B5F1F254417B14AE977FE75041295C8F22F4F254410AD7A3207FE75041F6285CAFF5F254415C8FC2D57DE75041D7A3709DF6F2544152B81EF57CE750417B14AEE7F7F2544148E17A747EE75041A4703DDAF7F2544185EB517880E750411F85EB01F8F25441713D0A7783E750419A999929F8F254415C8FC22586E750415C8FC2D5F8F25441713D0A3788E75041C3F5289CF9F2544152B81EA587E7504185EB5198F7F2544152B81EA587E75041A4703D7AF5F2544185EB51C888E75041D7A3703DF4F25441D7A3700D8BE75041D7A3700DF3F254411F85EBF18DE75041E17A14BEF2F2544185EB515892E75041713D0AA7F2F25441EC51B86E6FE750418FC2F528E7F25441D7A3702D6CE750419A999919EAF25441E17A140E6AE7504133333393E7F254411F85EB416AE7504152B81E75E5F25441CDCCCCBC33E750419A999959D3F25441C3F5285C37E7504148E17A04D7F254417B14AE3757E750419A9999F9E3F25441000000005DE750419A9999E9E9F25441B81E856B62E75041E17A142EEFF2544152B81E6566E75041295C8FF2F2F25441
+</a>
+
+<b>
+0106000000010000000103000000010000006C000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF254416363DCDA22E8504189A9C0D2C9F254414089B0AD22E85041AFC9FFD1C9F2544102609FB220E85041DDB08AC9C9F25441666666361FE85041333333C3C9F254412FECBEF91BE85041629819F1C9F2544176CF323C17E85041ABCF5134CAF254415C8FC2C516E85041AE47E13ACAF2544127DD16A704E850416139613FCDF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F254419611AE2552E75041E9AB2BA6AAF25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041197915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544149B0615322E7504165F452199CF25441E70E439B21E75041737AFE789CF25441E019489A21E75041B0E080799CF25441EE9FBEFE1EE75041CE635CD49DF25441425C1A4D1EE75041AB36AA309EF2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F2544138F3ED581AE7504115BA1E57C9F25441A87298ED1AE75041C5B70589C9F25441F4831FDF1DE750414AF5F485CAF25441DC5197DC22E750414BD2C232CCF25441E69CAF8430E75041911949C8D0F25441037637F331E75041CCF3BB42D1F25441EF2CCF4932E75041E332705FD1F25441A92E17A23AE7504190EA9423D4F2544102FD325453E7504118B94253DCF25441528D49E25FE750410E13AE7CE0F25441820A812D60E75041DCF69C95E0F254414C31CBC260E7504130AD19C7E0F254412224A29E6CE75041B0DE6EB5E4F254417205A92A6EE750419DB0B538E5F25441AE47E17A87E75041CDCCCC9CEDF25441CCD5BCBD8EE75041603F4C1AE2F254413E445DAE8FE7504142CAD19CE0F25441F94B0DEF99E750418EB643C2CFF25441C4FA54CC9FE75041EADF01E1C4F254410B52BC6FA2E75041175408AABFF254418EF6AA73A2E75041D065A89FBFF254413D0AD773A2E750411F85EBA1BFF25441B521D67AA2E75041808054A6BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F25441FE5FB710A1E7504171F5CC26F3F25441A63A2E46A1E75041F943FD2EF3F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F254411D2E6693EDE7504133C1950EE4F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F254410800D21DF6E75041D2FEB04EE1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF254412C139BAE0CE850410C7CFFBBDCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441C74E72561EE85041B8338802D6F25441666666761EE8504148E17AF4D5F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2907071 - 3046889
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000002000000DB0000003D0AD78346A95041295C8F62333254413D0AD7B348A950419A9999B92E325441713D0AF74CA950417B14AE17263254410000008053A9504152B81E951D325441A4703D5A57A9504152B81EC518325441295C8F5262A95041EC51B86E17325441295C8F926BA95041EC51B84E16325441EC51B8DE75A95041D7A3700D153254417B14AEA77FA950415C8FC245163254413333334389A95041CDCCCCDC16325441F6285C7F8CA950413D0AD743163254410AD7A3208FA950410000009015325441CDCCCC1C90A950415C8FC27515325441EC51B8AE99A950413D0AD7A317325441AE47E18A9BA95041666666A617325441C3F528DC9CA95041295C8F2217325441EC51B87E9FA95041CDCCCCAC163254419A9999C9A1A95041295C8F7216325441EC51B8EEA2A9504152B81E5516325441D7A370FDA2A950418FC2F5B812325441295C8F62A1A95041D7A3708D12325441C3F5289C9FA95041C3F528EC11325441EC51B8CE9EA95041AE47E14A11325441000000C09EA9504114AE47E10C3254415C8FC2E59FA9504148E17A140C3254413D0AD753A1A95041C3F528BC0B32544166666646A3A95041D7A370AD0B325441AE47E1CAA3A95041EC51B8AE0D32544152B81E05A4A95041AE47E1EA0F32544100000090A3A950417B14AEC71232544166666646A3A95041EC51B88E14325441295C8F72A3A950417B14AE3716325441D7A3705DA4A950417B14AE971732544114AE47E1A4A95041E17A14FE173254418FC2F5F8A5A95041295C8F721832544148E17AF4ACA9504185EB51D817325441CDCCCC0CB4A95041666666561732544114AE4781BBA9504114AE47E1163254410AD7A320D4A95041C3F528BC133254419A999969DBA95041CDCCCCAC123254418FC2F558DDA950417B14AEA70C32544114AE4721DFA95041295C8F8209325441333333C3DEA95041000000F00732544114AE4781DDA95041B81E850B07325441713D0AB7DDA9504185EB51280532544133333313DEA95041C3F5281C033254413D0AD753DEA95041CDCCCC6C013254413D0AD7B3DEA95041C3F528ECFC315441295C8FC2DEA95041713D0A37FC315441713D0A67E6A9504148E17A04FD315441CDCCCC8CE6A950410AD7A3E0FB315441666666A6E6A950413D0AD7A3FA3154410AD7A380E6A950415C8FC245FA315441F6285CFFE7A9504114AE4741FA315441F6285CFFE7A9504148E17AE4FA315441713D0A17EAA9504148E17A74FE31544148E17AC4EAA950419A9999D9FE3154413D0AD763EBA95041C3F5285CFF315441C3F528ACEBA95041AE47E1FAFF31544133333303ECA95041713D0AB700325441EC51B82EECA95041333333730132544166666616EDA950411F85EB81013254410AD7A3E0EDA95041D7A370AD013254413D0AD7B3F3A9504114AE4781043254413D0AD783F2A950411F85EB7107325441713D0AB7F6A95041F6285C2F09325441713D0A5704AA504152B81E85073254413D0AD73308AA50418FC2F5080732544114AE470105AA5041B81E858B033254411F85EB6104AA5041D7A370BD023254413D0AD763FFA95041A4703DFA0232544100000010FFA95041A4703DCA02325441B81E858BFEA9504152B81E550232544100000030FEA95041CDCCCCAC01325441B81E851BFEA9504148E17AD400325441CDCCCCDCFCA95041D7A3707D0032544100000090FBA9504152B81E05FF315441C3F528ECF9A950418FC2F518FD31544100000030F9A9504166666666FB31544185EB5148F8A95041A4703D7AF9315441A4703D0AF7A95041666666D6F7315441C3F5282CF5A9504100000050F631544185EB5188F3A95041AE47E14AF531544185EB51F8EFA950419A999929F431544100000080EEA950410AD7A350F3315441F6285C7FEDA950417B14AEA7F2315441A4703D7AECA95041F6285C1FF2315441B81E850BEBA9504185EB51C8F13154413D0AD763EAA950413D0AD7F3F1315441295C8F42EAA950413D0AD733F3315441CDCCCCDCE9A95041D7A3706DF331544185EB51D8E8A9504148E17AC4F331544166666656E8A9504166666646F43154410AD7A3F0E7A950418FC2F5C8F4315441F6285CFFE7A9504152B81E85F53154417B14AE47E8A95041E17A145EF6315441AE47E12AE8A95041EC51B81EF8315441F6285CFFE7A9504185EB51F8F831544114AE4701E8A950415C8FC205FA3154418FC2F568E6A95041B81E850BFA3154410AD7A340E6A95041666666A6F93154415C8FC275E5A95041713D0AF7F7315441F6285C8FE5A950417B14AE87F63154419A999949E3A950417B14AE77F63154415C8FC2F5E0A95041E17A146EF631544114AE4771DEA95041E17A14BEF53154411F85EB11DDA95041A4703DCAF4315441F6285C7FDCA95041E17A147EF331544185EB5158DCA95041CDCCCCBCF1315441713D0AF7DBA950410AD7A320F13154419A999929DBA95041D7A3700DF1315441D7A3708DDAA95041EC51B86EF13154410AD7A3C0D9A950413D0AD793F2315441295C8FC2D8A95041333333F3F331544185EB51D8D7A9504152B81E55F4315441EC51B89ED6A9504148E17AB4F3315441AE47E1EAD2A95041EC51B8BEF1315441AE47E1CAD1A9504152B81E95F1315441666666B6D0A95041D7A3707DF13154417B14AED7CEA95041AE47E16AF231544185EB5108CEA950419A999939F231544148E17A54CEA95041295C8F42F331544133333363CDA9504152B81EE5F43154417B14AEA7CBA95041C3F528FCF531544148E17A44CAA950411F85EB91F731544152B81ED5C8A95041C3F5289CF831544148E17AA4C7A95041333333B3F9315441333333F3C6A95041EC51B8FEF93154418FC2F5E8C5A95041EC51B8FEF931544152B81EC5C4A95041A4703D8AFA315441E17A14AEC3A95041713D0A07FC315441D7A3704DC1A9504166666676FD31544152B81E85BFA9504114AE4741FE315441E17A146EBEA95041333333F3FE3154413D0AD733BCA950413D0AD7E3FF315441CDCCCCACB9A950410000003000325441CDCCCC7CB8A9504100000030003254410AD7A3C0B6A95041AE47E1CAFF315441295C8F92B4A9504114AE47B1FF3154413D0AD7E3B2A950410000003000325441F6285CFFB1A95041EC51B8AE00325441EC51B80EB1A95041E17A14EE0032544148E17A04B0A95041AE47E1FA00325441295C8F52AFA950417B14AE0701325441B81E85ABAFA95041A4703D0A00325441CDCCCCCCB1A9504185EB5128FE31544133333323B3A950417B14AEF7FC315441CDCCCCDCB5A9504148E17A94FB315441EC51B87EB7A950419A999909FB31544152B81E45BAA95041AE47E14AFA31544148E17AB4BBA9504185EB5118FA3154411F85EBF1BCA95041E17A140EF931544166666696BDA95041C3F5289CF8315441F6285C1FBFA95041295C8F82F8315441D7A3704DC1A9504166666636F8315441C3F5283CC3A95041A4703DEAF7315441C3F5286CC4A9504185EB5178F7315441295C8FC2C5A950417B14AE87F6315441713D0AA7C6A95041E17A143EF5315441B81E858BC7A9504133333333F4315441E17A143EC8A95041D7A3700DF33154415C8FC205CBA950418FC2F5F8F031544152B81E65C9A9504166666676EE3154413D0AD7C3C7A9504152B81E05EC3154413D0AD793C4A950413D0AD793E93154419A999949C3A95041F6285C8FE8315441F6285CFFC1A9504114AE47E1E7315441713D0AC7C0A9504114AE4711E73154418FC2F548BFA95041B81E85CBE631544152B81E85BDA9504100000000E7315441C3F5287CBBA9504114AE4771E9315441666666D6B8A950417B14AEC7E93154418FC2F598B6A95041F6285C8FE8315441C3F5282CB5A9504152B81E45E73154413D0AD7C3B4A9504114AE4781E53154415C8FC2D5B4A95041E17A14BEE33154417B14AE57B6A95041AE47E1DAE1315441D7A3709DB7A95041A4703D9ADF31544114AE4701B7A9504148E17A84DE3154418FC2F5C8B5A95041AE47E10ADE3154415C8FC275B4A9504133333353DE3154413D0AD763B2A95041CDCCCCBCDF315441D7A3707DB0A95041666666C6E1315441D7A3702DAEA9504148E17A94E1315441C3F5281CADA95041F6285CDFE0315441A4703D5AACA9504148E17A54DF315441713D0A37ACA95041666666D6DD3154415C8FC225ACA95041F6285CAFDC3154411F85EBF1ABA9504166666676DB315441EC51B80EABA95041B81E85BBDA3154413D0AD703A1A95041F6285C9FDE3154419A99996996A95041EC51B86EE2315441CDCCCCCC95A95041C3F528ECE03154413333334394A95041A4703D7ADD315441295C8FA292A9504133333393DB315441713D0AC777A950418FC2F568ED315441000000F073A9504185EB51A8EF315441AE47E18A71A950419A999979F0315441B81E854B6DA9504166666646F1315441295C8F8267A95041713D0A37F33154413D0AD76362A95041713D0A37F431544148E17A445FA9504114AE4781F431544148E17AA45DA950411F85EB61F431544152B81E855BA9504114AE47A1F431544152B81E455AA9504114AE47A1F43154410AD7A35057A950411F85EBE1F23154410AD7A3B055A9504100000000FC315441B81E85DB55A95041A4703D0AFE315441AE47E1FA56A95041333333530A3254410AD7A35056A95041333333F30A3254416666665656A950416666667610325441C3F528EC4BA950418FC2F5A8073254410AD7A3704BA95041A4703D3A073254419A9999E944A9504148E17AD4163254417B14AE673EA95041CDCCCC6C26325441666666E637A9504148E17A04363254411F85EB8138A95041666666263632544114AE471144A950415C8FC275383254413D0AD78346A95041295C8F623332544119000000EC51B89E82A950415C8FC235EF3154419A99995982A95041F6285C1FEE3154419A99995982A9504185EB51F8EC31544114AE47C182A950413D0AD7F3EB315441A4703DFA83A9504114AE47D1EB315441EC51B8FE84A9504185EB51F8EC31544148E17A4485A95041B81E85EBED315441EC51B8FE84A950415C8FC235EF3154410000001085A950418FC2F528F031544185EB517885A950413D0AD7B3F0315441295C8FC286A95041C3F5281CF1315441AE47E12A87A950415C8FC295F131544148E17AA487A95041000000B0F331544148E17AA487A95041B81E850BF5315441EC51B85E87A950410AD7A3E0F6315441E17A148E86A95041A4703D5AF73154410000001085A95041CDCCCC7CF7315441B81E850B84A9504133333303F731544185EB511883A9504148E17A44F63154415C8FC2F582A95041F6285C6FF43154419A99992983A95041D7A3708DF3315441666666C683A950415C8FC265F2315441666666C683A95041666666D6F03154419A99992983A9504148E17AF4EF315441EC51B89E82A950415C8FC235EF315441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000007508379147A950419EF58031133254413D3E294045A95041A12F1C9618325441656DD5DA43A950413D70C4F11B325441C3F3D24542A95041C76F23C01F32544173E5207640A950412C1FB21B24325441D3ED95843DA950415E271C242B325441F140AC7846A95041F250279E2F32544178F9AFF647A95041582163F02D32544133113CD04CA950413D512996233254416D64A8C151A95041FB80993E1D325441DB9F32DC55A950415C69636214325441CDC2030656A950415C69636214325441CAB61D9C56A950413D27603D10325441BE182F9156A95041B256611F0F325441049B87A456A950417073A4450E325441AE47E13A56A9504148E17A640D325441FCECAF3C56A950414105826F0D325441E6A4942656A950411EECDC5B0D3254416666665656A9504166666676103254411F4D64CD55A95041FEA39A021032544177FA9A2B55A95041CBBEDD790F32544148E17A644FA95041D7A3707D0A325441143D70B64CA950414EB4EB5308325441DCBD79E14BA95041FEBC274909325441A3A3AF8E4AA9504138F14F530C32544175E0BFCC49A950418CA5C2100E3254417417BEDD48A9504132BFBA351032544182DB225848A95041E34C9B68113254417508379147A950419EF5803113325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2907071 - 3583293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000002000000DB0000003D0AD78346A95041295C8F62333254413D0AD7B348A950419A9999B92E325441713D0AF74CA950417B14AE17263254410000008053A9504152B81E951D325441A4703D5A57A9504152B81EC518325441295C8F5262A95041EC51B86E17325441295C8F926BA95041EC51B84E16325441EC51B8DE75A95041D7A3700D153254417B14AEA77FA950415C8FC245163254413333334389A95041CDCCCCDC16325441F6285C7F8CA950413D0AD743163254410AD7A3208FA950410000009015325441CDCCCC1C90A950415C8FC27515325441EC51B8AE99A950413D0AD7A317325441AE47E18A9BA95041666666A617325441C3F528DC9CA95041295C8F2217325441EC51B87E9FA95041CDCCCCAC163254419A9999C9A1A95041295C8F7216325441EC51B8EEA2A9504152B81E5516325441D7A370FDA2A950418FC2F5B812325441295C8F62A1A95041D7A3708D12325441C3F5289C9FA95041C3F528EC11325441EC51B8CE9EA95041AE47E14A11325441000000C09EA9504114AE47E10C3254415C8FC2E59FA9504148E17A140C3254413D0AD753A1A95041C3F528BC0B32544166666646A3A95041D7A370AD0B325441AE47E1CAA3A95041EC51B8AE0D32544152B81E05A4A95041AE47E1EA0F32544100000090A3A950417B14AEC71232544166666646A3A95041EC51B88E14325441295C8F72A3A950417B14AE3716325441D7A3705DA4A950417B14AE971732544114AE47E1A4A95041E17A14FE173254418FC2F5F8A5A95041295C8F721832544148E17AF4ACA9504185EB51D817325441CDCCCC0CB4A95041666666561732544114AE4781BBA9504114AE47E1163254410AD7A320D4A95041C3F528BC133254419A999969DBA95041CDCCCCAC123254418FC2F558DDA950417B14AEA70C32544114AE4721DFA95041295C8F8209325441333333C3DEA95041000000F00732544114AE4781DDA95041B81E850B07325441713D0AB7DDA9504185EB51280532544133333313DEA95041C3F5281C033254413D0AD753DEA95041CDCCCC6C013254413D0AD7B3DEA95041C3F528ECFC315441295C8FC2DEA95041713D0A37FC315441713D0A67E6A9504148E17A04FD315441CDCCCC8CE6A950410AD7A3E0FB315441666666A6E6A950413D0AD7A3FA3154410AD7A380E6A950415C8FC245FA315441F6285CFFE7A9504114AE4741FA315441F6285CFFE7A9504148E17AE4FA315441713D0A17EAA9504148E17A74FE31544148E17AC4EAA950419A9999D9FE3154413D0AD763EBA95041C3F5285CFF315441C3F528ACEBA95041AE47E1FAFF31544133333303ECA95041713D0AB700325441EC51B82EECA95041333333730132544166666616EDA950411F85EB81013254410AD7A3E0EDA95041D7A370AD013254413D0AD7B3F3A9504114AE4781043254413D0AD783F2A950411F85EB7107325441713D0AB7F6A95041F6285C2F09325441713D0A5704AA504152B81E85073254413D0AD73308AA50418FC2F5080732544114AE470105AA5041B81E858B033254411F85EB6104AA5041D7A370BD023254413D0AD763FFA95041A4703DFA0232544100000010FFA95041A4703DCA02325441B81E858BFEA9504152B81E550232544100000030FEA95041CDCCCCAC01325441B81E851BFEA9504148E17AD400325441CDCCCCDCFCA95041D7A3707D0032544100000090FBA9504152B81E05FF315441C3F528ECF9A950418FC2F518FD31544100000030F9A9504166666666FB31544185EB5148F8A95041A4703D7AF9315441A4703D0AF7A95041666666D6F7315441C3F5282CF5A9504100000050F631544185EB5188F3A95041AE47E14AF531544185EB51F8EFA950419A999929F431544100000080EEA950410AD7A350F3315441F6285C7FEDA950417B14AEA7F2315441A4703D7AECA95041F6285C1FF2315441B81E850BEBA9504185EB51C8F13154413D0AD763EAA950413D0AD7F3F1315441295C8F42EAA950413D0AD733F3315441CDCCCCDCE9A95041D7A3706DF331544185EB51D8E8A9504148E17AC4F331544166666656E8A9504166666646F43154410AD7A3F0E7A950418FC2F5C8F4315441F6285CFFE7A9504152B81E85F53154417B14AE47E8A95041E17A145EF6315441AE47E12AE8A95041EC51B81EF8315441F6285CFFE7A9504185EB51F8F831544114AE4701E8A950415C8FC205FA3154418FC2F568E6A95041B81E850BFA3154410AD7A340E6A95041666666A6F93154415C8FC275E5A95041713D0AF7F7315441F6285C8FE5A950417B14AE87F63154419A999949E3A950417B14AE77F63154415C8FC2F5E0A95041E17A146EF631544114AE4771DEA95041E17A14BEF53154411F85EB11DDA95041A4703DCAF4315441F6285C7FDCA95041E17A147EF331544185EB5158DCA95041CDCCCCBCF1315441713D0AF7DBA950410AD7A320F13154419A999929DBA95041D7A3700DF1315441D7A3708DDAA95041EC51B86EF13154410AD7A3C0D9A950413D0AD793F2315441295C8FC2D8A95041333333F3F331544185EB51D8D7A9504152B81E55F4315441EC51B89ED6A9504148E17AB4F3315441AE47E1EAD2A95041EC51B8BEF1315441AE47E1CAD1A9504152B81E95F1315441666666B6D0A95041D7A3707DF13154417B14AED7CEA95041AE47E16AF231544185EB5108CEA950419A999939F231544148E17A54CEA95041295C8F42F331544133333363CDA9504152B81EE5F43154417B14AEA7CBA95041C3F528FCF531544148E17A44CAA950411F85EB91F731544152B81ED5C8A95041C3F5289CF831544148E17AA4C7A95041333333B3F9315441333333F3C6A95041EC51B8FEF93154418FC2F5E8C5A95041EC51B8FEF931544152B81EC5C4A95041A4703D8AFA315441E17A14AEC3A95041713D0A07FC315441D7A3704DC1A9504166666676FD31544152B81E85BFA9504114AE4741FE315441E17A146EBEA95041333333F3FE3154413D0AD733BCA950413D0AD7E3FF315441CDCCCCACB9A950410000003000325441CDCCCC7CB8A9504100000030003254410AD7A3C0B6A95041AE47E1CAFF315441295C8F92B4A9504114AE47B1FF3154413D0AD7E3B2A950410000003000325441F6285CFFB1A95041EC51B8AE00325441EC51B80EB1A95041E17A14EE0032544148E17A04B0A95041AE47E1FA00325441295C8F52AFA950417B14AE0701325441B81E85ABAFA95041A4703D0A00325441CDCCCCCCB1A9504185EB5128FE31544133333323B3A950417B14AEF7FC315441CDCCCCDCB5A9504148E17A94FB315441EC51B87EB7A950419A999909FB31544152B81E45BAA95041AE47E14AFA31544148E17AB4BBA9504185EB5118FA3154411F85EBF1BCA95041E17A140EF931544166666696BDA95041C3F5289CF8315441F6285C1FBFA95041295C8F82F8315441D7A3704DC1A9504166666636F8315441C3F5283CC3A95041A4703DEAF7315441C3F5286CC4A9504185EB5178F7315441295C8FC2C5A950417B14AE87F6315441713D0AA7C6A95041E17A143EF5315441B81E858BC7A9504133333333F4315441E17A143EC8A95041D7A3700DF33154415C8FC205CBA950418FC2F5F8F031544152B81E65C9A9504166666676EE3154413D0AD7C3C7A9504152B81E05EC3154413D0AD793C4A950413D0AD793E93154419A999949C3A95041F6285C8FE8315441F6285CFFC1A9504114AE47E1E7315441713D0AC7C0A9504114AE4711E73154418FC2F548BFA95041B81E85CBE631544152B81E85BDA9504100000000E7315441C3F5287CBBA9504114AE4771E9315441666666D6B8A950417B14AEC7E93154418FC2F598B6A95041F6285C8FE8315441C3F5282CB5A9504152B81E45E73154413D0AD7C3B4A9504114AE4781E53154415C8FC2D5B4A95041E17A14BEE33154417B14AE57B6A95041AE47E1DAE1315441D7A3709DB7A95041A4703D9ADF31544114AE4701B7A9504148E17A84DE3154418FC2F5C8B5A95041AE47E10ADE3154415C8FC275B4A9504133333353DE3154413D0AD763B2A95041CDCCCCBCDF315441D7A3707DB0A95041666666C6E1315441D7A3702DAEA9504148E17A94E1315441C3F5281CADA95041F6285CDFE0315441A4703D5AACA9504148E17A54DF315441713D0A37ACA95041666666D6DD3154415C8FC225ACA95041F6285CAFDC3154411F85EBF1ABA9504166666676DB315441EC51B80EABA95041B81E85BBDA3154413D0AD703A1A95041F6285C9FDE3154419A99996996A95041EC51B86EE2315441CDCCCCCC95A95041C3F528ECE03154413333334394A95041A4703D7ADD315441295C8FA292A9504133333393DB315441713D0AC777A950418FC2F568ED315441000000F073A9504185EB51A8EF315441AE47E18A71A950419A999979F0315441B81E854B6DA9504166666646F1315441295C8F8267A95041713D0A37F33154413D0AD76362A95041713D0A37F431544148E17A445FA9504114AE4781F431544148E17AA45DA950411F85EB61F431544152B81E855BA9504114AE47A1F431544152B81E455AA9504114AE47A1F43154410AD7A35057A950411F85EBE1F23154410AD7A3B055A9504100000000FC315441B81E85DB55A95041A4703D0AFE315441AE47E1FA56A95041333333530A3254410AD7A35056A95041333333F30A3254416666665656A950416666667610325441C3F528EC4BA950418FC2F5A8073254410AD7A3704BA95041A4703D3A073254419A9999E944A9504148E17AD4163254417B14AE673EA95041CDCCCC6C26325441666666E637A9504148E17A04363254411F85EB8138A95041666666263632544114AE471144A950415C8FC275383254413D0AD78346A95041295C8F623332544119000000EC51B89E82A950415C8FC235EF3154419A99995982A95041F6285C1FEE3154419A99995982A9504185EB51F8EC31544114AE47C182A950413D0AD7F3EB315441A4703DFA83A9504114AE47D1EB315441EC51B8FE84A9504185EB51F8EC31544148E17A4485A95041B81E85EBED315441EC51B8FE84A950415C8FC235EF3154410000001085A950418FC2F528F031544185EB517885A950413D0AD7B3F0315441295C8FC286A95041C3F5281CF1315441AE47E12A87A950415C8FC295F131544148E17AA487A95041000000B0F331544148E17AA487A95041B81E850BF5315441EC51B85E87A950410AD7A3E0F6315441E17A148E86A95041A4703D5AF73154410000001085A95041CDCCCC7CF7315441B81E850B84A9504133333303F731544185EB511883A9504148E17A44F63154415C8FC2F582A95041F6285C6FF43154419A99992983A95041D7A3708DF3315441666666C683A950415C8FC265F2315441666666C683A95041666666D6F03154419A99992983A9504148E17AF4EF315441EC51B89E82A950415C8FC235EF315441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000007508379147A950419EF58031133254413D3E294045A95041A12F1C9618325441656DD5DA43A950413D70C4F11B325441C3F3D24542A95041C76F23C01F32544173E5207640A950412C1FB21B24325441D3ED95843DA950415E271C242B325441F140AC7846A95041F250279E2F32544178F9AFF647A95041582163F02D32544133113CD04CA950413D512996233254416D64A8C151A95041FB80993E1D325441DB9F32DC55A950415C69636214325441CDC2030656A950415C69636214325441CAB61D9C56A950413D27603D10325441BE182F9156A95041B256611F0F325441049B87A456A950417073A4450E325441AE47E13A56A9504148E17A640D325441FCECAF3C56A950414105826F0D325441E6A4942656A950411EECDC5B0D3254416666665656A9504166666676103254411F4D64CD55A95041FEA39A021032544177FA9A2B55A95041CBBEDD790F32544148E17A644FA95041D7A3707D0A325441143D70B64CA950414EB4EB5308325441DCBD79E14BA95041FEBC274909325441A3A3AF8E4AA9504138F14F530C32544175E0BFCC49A950418CA5C2100E3254417417BEDD48A9504132BFBA351032544182DB225848A95041E34C9B68113254417508379147A950419EF5803113325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211460 - 4132577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -28  </desc>
+<a>
+0106000000020000000103000000010000000B000000E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554166666616F2295141AE47E16A5C405541295C8FE2D3295141295C8F025A4055411F85EB71D8295141A4703D7A80405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055410103000000010000000C00000014AE4741C3295141295C8FF244405541AE47E10AB82951410AD7A3804A4055410AD7A3A0AD295141EC51B85E4F405541D7A3709DAD295141EC51B85E574055419A999999AD295141C3F528EC6240554100000040AE295141EC51B86E6540554185EB5148B6295141B81E85FB6040554152B81E55BE295141713D0AF75C405541713D0AC7D0295141666666F659405541A4703D8AD02951415C8FC2653D405541B81E859BCF295141EC51B8EE3D40554114AE4741C3295141295C8FF244405541
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000029A56D82F2295141734FBB725C4055412FBF2778F229514107FD0C805A4055417D189926F22951415FCEB7984D405541C5A59CFFF12951412963CA523E405541A5D22295F12951414BBE7EE23640554117D9CE57EB29514117D9CEC736405541759318A4EA295141819543D32E405541C1630D29DD2951410449C34636405541EDB4A63BCF2951419819C6503E405541D3DA4522CD295141F6D543B83F40554154E3A583CE295141BE9F1AC759405541AC39C9B4CB295141823CBBC95A40554181C54858BF295141F51F3C3C5F405541456A3168B62951416DDD6D7362405541C3DCDB7DAE2951411A43734C6540554100000040AE295141EC51B86E6540554114AE4791AE2951417B14AEA7664055419A999959B7295141E17A145E76405541713D0A37C0295141AE47E13A8640554114AE47F1C12951411F85EBC1864055413D0AD773C8295141A4703D7A8340554148E17AD4CA295141CDCCCC6C88405541AE47E16ACC295141F6285CDF8840554114AE47B1D32951416666662684405541000493F8D7295141919202D880405541DCF51A5DD52951412523BE3169405541295C8FE2D3295141295C8F025A405541180DDB78DA295141B6004F5C5A405541E923EDADE7295141EE577D965B40554133333383F2295141E92631985C40554129A56D82F2295141734FBB725C405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211460 - 4132585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -26  </desc>
+<a>
+0106000000020000000103000000010000000B000000E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554166666616F2295141AE47E16A5C405541295C8FE2D3295141295C8F025A4055411F85EB71D8295141A4703D7A80405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055410103000000010000000C00000014AE4741C3295141295C8FF244405541AE47E10AB82951410AD7A3804A4055410AD7A3A0AD295141EC51B85E4F405541D7A3709DAD295141EC51B85E574055419A999999AD295141C3F528EC6240554100000040AE295141EC51B86E6540554185EB5148B6295141B81E85FB6040554152B81E55BE295141713D0AF75C405541713D0AC7D0295141666666F659405541A4703D8AD02951415C8FC2653D405541B81E859BCF295141EC51B8EE3D40554114AE4741C3295141295C8FF244405541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D34D6200D82951418716D91E81405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554129A56D82F2295141734FBB725C40554133333383F2295141E92631985C405541E923EDADE7295141EE577D965B4055413B9EE4ECDC2951418F05AB965A40554109EA47ECD829514124B433475A405541295C8FE2D3295141295C8F025A405541DCF51A5DD52951412523BE3169405541D34D6200D82951418716D91E81405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346410 - 1848169
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -594  </desc>
+<a>
+0106000000010000000103000000010000000E000000EEDEF462F3B450417BA84EA5B14B5441628FFF76F0B4504123406EDAB04B5441000000B0E9B4504185EB51E8AE4B544188023EF6E7B4504143126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E1625616C2B45041F391986D0E4C544188F9A916CBB45041DEDC28AE0D4C54415EB8BBB6CFB45041298FFC510D4C5441D00F0241E6B45041F58CCAE4D54B544165BBEF42E5B4504112039DA6D54B5441B0496FF0EAB450411DF7F9B8C64B54411027E987F1B45041A99A8E53B64B5441EEDEF462F3B450417BA84EA5B14B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EFDEF462F3B450417AA84EA5B14B5441628FFF76F0B4504125406EDAB04B5441000000B0E9B4504185EB51E8AE4B544185023EF6E7B4504147126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E3625616C2B45041F291986D0E4C544183F9A916CBB45041E3DC28AE0D4C544166A10A41CEB45041D18A136F0D4C544100000060CEB45041D7A3701D0D4C5441E17A140EE6B4504152B81E85D64B544114AE47C1F4B45041CDCCCCBCB14B5441EFDEF462F3B450417AA84EA5B14B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346410 - 3570758
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -594  </desc>
+<a>
+0106000000010000000103000000010000000E000000EEDEF462F3B450417BA84EA5B14B5441628FFF76F0B4504123406EDAB04B5441000000B0E9B4504185EB51E8AE4B544188023EF6E7B4504143126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E1625616C2B45041F391986D0E4C544188F9A916CBB45041DEDC28AE0D4C54415EB8BBB6CFB45041298FFC510D4C5441D00F0241E6B45041F58CCAE4D54B544165BBEF42E5B4504112039DA6D54B5441B0496FF0EAB450411DF7F9B8C64B54411027E987F1B45041A99A8E53B64B5441EEDEF462F3B450417BA84EA5B14B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EFDEF462F3B450417AA84EA5B14B5441628FFF76F0B4504125406EDAB04B5441000000B0E9B4504185EB51E8AE4B544185023EF6E7B4504147126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E3625616C2B45041F291986D0E4C544183F9A916CBB45041E3DC28AE0D4C544166A10A41CEB45041D18A136F0D4C544100000060CEB45041D7A3701D0D4C5441E17A140EE6B4504152B81E85D64B544114AE47C1F4B45041CDCCCCBCB14B5441EFDEF462F3B450417AA84EA5B14B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924345 - 2994880
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000260000007FE1709D14CB5041E4F32BEF483C544152B81EE526CB5041A4703D4A553C54413D0AD7832ACB5041295C8F52573C5441F6285C4F30CB5041EC51B8EE5B3C5441F6285C7F65CB5041F6285CBF5B3C54410000008085CB5041333333A35B3C54415C8FC22580CB5041CDCCCCAC2B3C5441295C8FC27ECB5041C3F5287C2A3C5441B81E855B65CB5041E17A148E2B3C5441B81E851B4CCB5041EC51B89E2C3C5441C024805934CB50412F70F61F2C3C5441AE47E10A32CB50410AD7A3102C3C5441713D0A8732CB5041CDCCCCEC3C3C5441666666862BCB5041295C8F223D3C5441EC51B86E2BCB5041EC51B8DE3E3C5441295C8F5226CB5041666666F63E3C5441295C8F2226CB5041A4703DAA393C5441295C8F6222CB504166666626393C5441F6285C5F1ECB5041CDCCCC4C393C5441B81E856B1ECB5041295C8FC23D3C5441B81E859B12CB50411F85EBE13D3C5441666666A611CB5041EC51B8BE3D3C5441295C8F5211CB5041A4703DFA343C5441F1FDBE1A0FCB5041D85A98FA343C54411F85EBB10ECB5041666666B6343C5441AE47E16A0ECB50410AD7A310343C544152B81EA50DCB5041EC51B8BE303C5441CDCCCC3C06CB50415C8FC2C5303C5441C841463606CB50411BA49D322E3C54410000003006CB50415C8FC2B52B3C544185EB5198FBCA50415C8FC2A52B3C5441F6285CFFFACA504148E17AB42C3C544179530409FCCA5041CBE7F9862E3C54416FC2448C02CB50410857ABEE373C54419A99991905CB50410AD7A3903B3C54413333337308CB50410AD7A3903F3C5441D7A370DD0BCB504152B81E05433C54417FE1709D14CB5041E4F32BEF483C5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B229103C0DCB5041302A1CBF303C5441CDCCCC3C06CB50415C8FC2C5303C5441CE69BE9C05CB50412FD9CC722F3C5441E73B2AFB05CB504155BC7B402C3C544185EB5198FBCA50415C8FC2A52B3C5441F6285CFFFACA504148E17AB42C3C54410AD7A3A0FCCA504114AE47812F3C54419A99991905CB50410AD7A3903B3C54413333337308CB50410AD7A3903F3C5441501C776D0BCB50412D6ED593423C54412911782E0ECB50419724F595443C54414869F5A412CB5041179C62C4413C5441D2B2C60812CB50413BDDD8CC3D3C544168A7898711CB5041EB8181843A3C54415B2A94AD10CB50418A1348FB343C54417B14AE570FCB5041D7A370FD343C54411F85EBB10ECB5041666666B6343C5441AE47E16A0ECB50410AD7A310343C5441B229103C0DCB5041302A1CBF303C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924345 - 3457141
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000260000007FE1709D14CB5041E4F32BEF483C544152B81EE526CB5041A4703D4A553C54413D0AD7832ACB5041295C8F52573C5441F6285C4F30CB5041EC51B8EE5B3C5441F6285C7F65CB5041F6285CBF5B3C54410000008085CB5041333333A35B3C54415C8FC22580CB5041CDCCCCAC2B3C5441295C8FC27ECB5041C3F5287C2A3C5441B81E855B65CB5041E17A148E2B3C5441B81E851B4CCB5041EC51B89E2C3C5441C024805934CB50412F70F61F2C3C5441AE47E10A32CB50410AD7A3102C3C5441713D0A8732CB5041CDCCCCEC3C3C5441666666862BCB5041295C8F223D3C5441EC51B86E2BCB5041EC51B8DE3E3C5441295C8F5226CB5041666666F63E3C5441295C8F2226CB5041A4703DAA393C5441295C8F6222CB504166666626393C5441F6285C5F1ECB5041CDCCCC4C393C5441B81E856B1ECB5041295C8FC23D3C5441B81E859B12CB50411F85EBE13D3C5441666666A611CB5041EC51B8BE3D3C5441295C8F5211CB5041A4703DFA343C5441F1FDBE1A0FCB5041D85A98FA343C54411F85EBB10ECB5041666666B6343C5441AE47E16A0ECB50410AD7A310343C544152B81EA50DCB5041EC51B8BE303C5441CDCCCC3C06CB50415C8FC2C5303C5441C841463606CB50411BA49D322E3C54410000003006CB50415C8FC2B52B3C544185EB5198FBCA50415C8FC2A52B3C5441F6285CFFFACA504148E17AB42C3C544179530409FCCA5041CBE7F9862E3C54416FC2448C02CB50410857ABEE373C54419A99991905CB50410AD7A3903B3C54413333337308CB50410AD7A3903F3C5441D7A370DD0BCB504152B81E05433C54417FE1709D14CB5041E4F32BEF483C5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B229103C0DCB5041302A1CBF303C5441CDCCCC3C06CB50415C8FC2C5303C5441CE69BE9C05CB50412FD9CC722F3C5441E73B2AFB05CB504155BC7B402C3C544185EB5198FBCA50415C8FC2A52B3C5441F6285CFFFACA504148E17AB42C3C54410AD7A3A0FCCA504114AE47812F3C54419A99991905CB50410AD7A3903B3C54413333337308CB50410AD7A3903F3C5441501C776D0BCB50412D6ED593423C54412911782E0ECB50419724F595443C54414869F5A412CB5041179C62C4413C5441D2B2C60812CB50413BDDD8CC3D3C544168A7898711CB5041EB8181843A3C54415B2A94AD10CB50418A1348FB343C54417B14AE570FCB5041D7A370FD343C54411F85EBB10ECB5041666666B6343C5441AE47E16A0ECB50410AD7A310343C5441B229103C0DCB5041302A1CBF303C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193076 - 3006221
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000013000000E5D37048F13051418635AF22017D5441311FAD09FA30514171A2CB74007D544197704B8704315141FF88F18CFF7C54415C0FCAB20B315141D9D5A83FFF7C5441B87A6B13143151418D6F17A5FE7C54417433ED211931514178DC33F7FD7C5441A83FB19A1C3151413C9607FCFC7C54414E654FFB2031514143D06F7EFA7C54412FEC6E301E315141F5BD4949F57C5441D52C626A1A315141FA30C857F67C544109547BBC15315141EE83E1C6F77C544138081600103151419670699BF87C54415C0FCAB20B315141F3F65FD5F87C5441098A256F05315141AC034D49F97C544123ABDC04FF305141088A4383F97C54417812C095F93051412E3D8CD0F97C54419B197448F5305141F769DEE3F97C54412CC783D4F03051412E3D8CD0F97C5441E5D37048F13051418635AF22017D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C00000099C26E5EF0305141BDE9FC30F57C5441E3F3A7B9F0305141649D18E2F97C5441D9A392D5F0305141E22CA7E1F97C54412AC783D4F0305141303D8CD0F97C54413DC12CDEF230514193B663D9F97C5441B0B84464F9305141104DE1BEF97C54414F680BBEFE30514165B83287F97C544127ABDC04FF305141038A4383F97C54416EA7EDC9FF30514197FC4E7CF97C5441FE840EDA013151413C04D766F97C5441E759E6270931514158576D04F97C5441580FCAB20B315141F6F65FD5F87C54415E364CEB0E31514177CCFAA9F87C54417ED0E9C410315141A278EC7EF87C544109547BBC15315141E983E1C6F77C5441D12C626A1A315141FC30C857F67C54410F9756191E315141F931C14FF57C5441DCF5083616315141C3E6D0C9E97C544160C9A8020731514102B0DDA3ED7C544112A67FA2053151419E5CE9E4E87C5441282DAAEB01315141BA6781DBDC7C54416690FD440D3151417471663EDA7C5441BFFEE8940C315141A6461013D97C5441D7D96DC108315141A48D399ED97C544114AE47010531514133333343DA7C54413D0AD7B3FF305141E17A14FEDA7C5441295C8FE2EE305141C3F5282CDE7C544199C26E5EF0305141BDE9FC30F57C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193076 - 3822498
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000013000000E5D37048F13051418635AF22017D5441311FAD09FA30514171A2CB74007D544197704B8704315141FF88F18CFF7C54415C0FCAB20B315141D9D5A83FFF7C5441B87A6B13143151418D6F17A5FE7C54417433ED211931514178DC33F7FD7C5441A83FB19A1C3151413C9607FCFC7C54414E654FFB2031514143D06F7EFA7C54412FEC6E301E315141F5BD4949F57C5441D52C626A1A315141FA30C857F67C544109547BBC15315141EE83E1C6F77C544138081600103151419670699BF87C54415C0FCAB20B315141F3F65FD5F87C5441098A256F05315141AC034D49F97C544123ABDC04FF305141088A4383F97C54417812C095F93051412E3D8CD0F97C54419B197448F5305141F769DEE3F97C54412CC783D4F03051412E3D8CD0F97C5441E5D37048F13051418635AF22017D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C00000099C26E5EF0305141BDE9FC30F57C5441E3F3A7B9F0305141649D18E2F97C5441D9A392D5F0305141E22CA7E1F97C54412AC783D4F0305141303D8CD0F97C54413DC12CDEF230514193B663D9F97C5441B0B84464F9305141104DE1BEF97C54414F680BBEFE30514165B83287F97C544127ABDC04FF305141038A4383F97C54416EA7EDC9FF30514197FC4E7CF97C5441FE840EDA013151413C04D766F97C5441E759E6270931514158576D04F97C5441580FCAB20B315141F6F65FD5F87C54415E364CEB0E31514177CCFAA9F87C54417ED0E9C410315141A278EC7EF87C544109547BBC15315141E983E1C6F77C5441D12C626A1A315141FC30C857F67C54410F9756191E315141F931C14FF57C5441DCF5083616315141C3E6D0C9E97C544160C9A8020731514102B0DDA3ED7C544112A67FA2053151419E5CE9E4E87C5441282DAAEB01315141BA6781DBDC7C54416690FD440D3151417471663EDA7C5441BFFEE8940C315141A6461013D97C5441D7D96DC108315141A48D399ED97C544114AE47010531514133333343DA7C54413D0AD7B3FF305141E17A14FEDA7C5441295C8FE2EE305141C3F5282CDE7C544199C26E5EF0305141BDE9FC30F57C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193210 - 1516221
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE467B05041295C8FC21BC3544185EB519864B050413D0AD79339C354411F85EB3160B05041295C8F6261C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C3544114AE47E186B05041000000E05FC354411F85EBE18AB0504114AE47815DC35441E17A149E8EB0504148E17AB43BC35441000000D090B05041333333D327C35441B81E857B87B0504185EB510824C35441666666B67DB050411F85EBD121C35441B81E855B73B050411F85EBF11EC3544148E17AE467B05041295C8FC21BC35441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C638765D6FB050419E7CFDD51DC35441B382A2196EB05041DCC7077C1DC3544153C7A2056BB05041687E6D293EC35441193E32EB67B050414A30114262C3544190F639A968B0504178398C5762C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C354410331A89F83B050418FB99CA361C35441CD130BB084B0504190CC472761C35441BD39815385B05041F4B86F6759C35441E95E9C3A87B0504198DB874B47C35441C101AC3C8AB05041EC2FDE1C25C354414F3484A989B050412D0A23EB24C35441B81E857B87B0504185EB510824C35441666666B67DB050411F85EBD121C35441B81E855B73B050411F85EBF11EC35441C638765D6FB050419E7CFDD51DC35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193210 - 3640411
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE467B05041295C8FC21BC3544185EB519864B050413D0AD79339C354411F85EB3160B05041295C8F6261C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C3544114AE47E186B05041000000E05FC354411F85EBE18AB0504114AE47815DC35441E17A149E8EB0504148E17AB43BC35441000000D090B05041333333D327C35441B81E857B87B0504185EB510824C35441666666B67DB050411F85EBD121C35441B81E855B73B050411F85EBF11EC3544148E17AE467B05041295C8FC21BC35441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C638765D6FB050419E7CFDD51DC35441B382A2196EB05041DCC7077C1DC3544153C7A2056BB05041687E6D293EC35441193E32EB67B050414A30114262C3544190F639A968B0504178398C5762C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C354410331A89F83B050418FB99CA361C35441CD130BB084B0504190CC472761C35441BD39815385B05041F4B86F6759C35441E95E9C3A87B0504198DB874B47C35441C101AC3C8AB05041EC2FDE1C25C354414F3484A989B050412D0A23EB24C35441B81E857B87B0504185EB510824C35441666666B67DB050411F85EBD121C35441B81E855B73B050411F85EBF11EC35441C638765D6FB050419E7CFDD51DC35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6991 - 58982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000B000000CDCCCC6CD5B650417B14AE9783E15441D7A370ED7AB650419A9999A974E154411F85EBD174B65041B81E857B99E154411F85EBA175B65041713D0AA79AE154418FC2F59897B6504114AE4741A0E154413D0AD7339AB65041C3F528BC90E15441F6285C7FD3B65041F6285C6F9AE15441E17A14EED3B65041C3F5282C95E1544114AE4791D4B65041A4703D3A8CE15441A4703D1AD5B6504114AE47D18AE15441CDCCCC6CD5B650417B14AE9783E15441
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000579F0A4D1B65041825C01F882E154417B2C9CE3D0B650410E461CD882E154411C20BB1BC5B6504190598FE680E15441741825ADBFB65041DF34250180E154410491571FB6B65041E1EFA46D7EE15441543618B8AFB65041B6CD345F7DE1544160C32666AAB65041EF5D847E7CE154419B4AF6C7A6B650412E99B7E57BE15441BB0151DC97B650416952906F79E15441083BE34590B6504162991B2F78E15441E4E7DFD18AB650411441CC4877E154410DE693C786B6504123A9299E76E15441C992D2A180B650410789879A75E15441B6A670ED7AB65041139A99A974E1544124486BEA7AB6504194E8CFBB74E15441F011F0097AB65041C8CD21057AE15441A178978877B65041A9D3951F89E1544173D2FA4A77B65041F7A805938AE154413D02046776B6504155B656F18FE154412758846275B650411E85CB1396E15441563339EA74B65041E5C300E998E154414BA8C8DF74B65041E899F02799E15441C5C8F2DD74B65041B04D013399E15441C8B67ADD74B65041592AD53599E1544104B6981675B65041F7086ADE99E15441625E263175B650417FA9A6049AE154410E26816375B65041A062294D9AE15441CA0A1A6875B65041A41CC8539AE154411238060076B650416F978FB69AE15441FB15B6E278B65041D20F65309BE15441737966AC7DB6504183258DFA9BE154415A94589C82B65041D58904CB9CE15441770BE8418CB650416B6B54629EE15441CED4F59897B650415C414741A0E154413D0AD7339AB65041C3F528BC90E1544189D5C013ACB65041DDCFDBC293E1544164984495ADB650419040200494E15441A1895175AEB650412EBD0E2A94E1544149D9EC42C7B65041CA890A5D98E154415EF0F7F9C7B6504123BF077C98E1544185F3074FCCB650416C30CB3799E1544131CEDAA2CFB65041F4BD01C899E15441CA1165BBD2B65041E0E82E4E9AE154416D1B2B7ED3B65041C983286F9AE15441B62B7313D4B650416D28CF1F93E15441B0160271D4B6504102E80EFF8DE1544114AE4791D4B65041A4703D3A8CE154418B8439D5D4B650419DBC2B878BE154418244AEE6D4B65041AB482A598BE1544198CFF7E6D4B650419E7568588BE154417A0423F8D4B65041B7D4282B8BE154411BDA6925D5B650410995F5D689E15441B24BE64CD5B650416319596286E15441C04AA150D5B650417B38C60E86E154419A879462D5B65041B3A5A27C84E15441CDCCCC6CD5B650417B14AE9783E154415A284509D2B65041EDBD8E0883E154410579F0A4D1B65041825C01F882E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7081 - 142552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000011000000E17A14EEF7BA5041000000105ADB54410AD7A370EFBA504185EB51C85ADB544148E17A54E9BA5041333333335BDB5441B81E85DBE3BA5041D7A3706D5BDB5441AE47E19AE2BA5041333333835BDB544148E17AA4E0BA5041B81E856B5DDB5441C3F5287CA3BA5041B81E85DB98DB544133333363A7BA50415C8FC2F59ADB544166666646B0BA50419A9999999FDB544166666636B9BA504133333313A4DB544152B81EA5BCBA5041A4703DBAA5DB54418FC2F558E3BA5041CDCCCC1C80DB54411F85EB71E4BA5041C3F5280C7FDB5441713D0AB706BB5041CDCCCCBC5DDB5441295C8FE201BB504148E17AC458DB54413333339300BB5041EC51B8FE58DB5441E17A14EEF7BA5041000000105ADB5441
+</a>
+
+<b>
+0106000000010000000103000000010000003200000082227755AFBA5041F8FDCF1B9FDB5441996E2BAFB5BA5041D204F44EA2DB5441CB51168DB9BA50414200EF3CA4DB544139641FA5BCBA504191C93CBAA5DB544170A202D5C2BA50411CFADAB69FDB54417C28DA98C4BA5041F0B3B5FF9DDB54411D2F16ADC5BA50414AB93CF39CDB5441BB607FA5CABA50410668941E98DB54418D1E974DCCBA5041344E678296DB5441530A0DDECCBA5041BB8900F695DB5441FA96D312CDBA5041F89EB5C295DB54419530A68FD7BA5041AFD853918BDB54411D7CB5E6D9BA5041BFC9194B89DB5441774B2C37DFBA50411E40DD2084DB54418FC2F558E3BA5041CDCCCC1C80DB5441E4288ABCE3BA5041ED4C2BBC7FDB5441F7CEBEF9E8BA50419E1CD3A47ADB5441B966720BF5BA5041AAA7ACE96EDB5441DA32AC8BFCBA5041EC583D9F67DB5441B0A6CEEEFCBA504140D1E13E67DB5441B2BD944705BB50412F25F7215FDB5441713D0AB706BB5041CDCCCCBC5DDB5441D82A6BEC04BB5041B29FE2E45BDB5441B05A231504BB5041E95D5D075BDB54417E9CD07202BB50415D8BEA5859DB5441AC3595AA01BB5041538333CE58DB54413333339300BB5041EC51B8FE58DB5441E17A14EEF7BA5041000000105ADB54417D3A7A82F4BA50413F8C415A5ADB54418F1C45F6F0BA504101F546A75ADB54410AD7A370EFBA504185EB51C85ADB5441E37A5B2BEBBA5041825006135BDB544148E17A54E9BA5041333333335BDB544145A24A58E8BA5041DD10AF3D5BDB544188D6D53AE4BA504105447A695BDB5441480CAF6BE2BA50415BD212B15BDB544148E17AA4E0BA5041B81E856B5DDB54417E0C0A5BDDBA50413CC54B9D60DB544169711CB0DBBA50416097373C62DB54419A5597CAD6BA5041A9A47BFE66DB544171EBE632D6BA504153EEE79167DB544109DED7C3D2BA504112F63DE86ADB54416736E929CFBA504137EA3E686EDB5441F0353A79C8BA5041A2FCC2E874DB54413F3BDABCABBA50412DC03ED690DB5441B586454FAABA5041775B8B3992DB544189541562A5BA50415649430397DB5441AF8A2338A4BA50415EF1D32498DB5441FEFA438FA3BA5041B7A7F3C898DB544182227755AFBA5041F8FDCF1B9FDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11035 - 52507
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000010000000AE47E10A76225141F6285C6F449D544152B81E657122514133333303449D544152B81E957022514148E17AA43F9D5441C3F528BC6F22514152B81E653D9D54417B14AE176022514114AE47613F9D54418FC2F5F84F225141CDCCCC6C419D544148E17A5457225141AE47E12A709D5441000000D063225141000000D0709D54417B14AE77752251419A9999B9719D54411F85EB3176225141B81E851B6B9D5441713D0A6777225141333333F3619D544152B81E0578225141B81E85AB5C9D54418FC2F5087822514114AE4761579D54415C8FC2B577225141EC51B85E529D5441CDCCCC1C77225141CDCCCC9C4C9D5441AE47E10A76225141F6285C6F449D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000B253055478225141C42BE0C7619D54414C75D41779225141D289B8CC5D9D5441BDE5074B792251416CBC09DD569D544161406361792251419FF7AFD5539D5441DE40B13F79225141AECDC16C529D5441E4BF2127792251414AA2AC65519D54412A97DF7C7822514124C01F7E4B9D54415C8FC2B57722514166666696449D544172CBF54076225141C66A0277449D54417BDD828E76225141569D1CED469D544153E8B146772251415EA8D3054D9D54411E6A1AD877225141E980B458539D5441F0502FF5772251416806EE0C559D5441AEAE7DEB77225141A8FB0205579D5441F0502FF577225141E9F017FD589D544123F3E0FE772251410FC2125A5A9D5441ED5D48FF772251411BBF6EDD5C9D54411BE153B17722514102A9AFD75F9D5441BDF66D717622514112A21D53689D5441208EF0C27522514180BB90966D9D54419B3700627522514148D132B7719D5441C3F528EC75225141F6285CBF719D5441962C02BB76225141175236F46A9D544170B0790277225141B64665FA689D54418E6EA92277225141DB5A9716689D5441B253055478225141C42BE0C7619D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11035 - 62818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000010000000AE47E10A76225141F6285C6F449D544152B81E657122514133333303449D544152B81E957022514148E17AA43F9D5441C3F528BC6F22514152B81E653D9D54417B14AE176022514114AE47613F9D54418FC2F5F84F225141CDCCCC6C419D544148E17A5457225141AE47E12A709D5441000000D063225141000000D0709D54417B14AE77752251419A9999B9719D54411F85EB3176225141B81E851B6B9D5441713D0A6777225141333333F3619D544152B81E0578225141B81E85AB5C9D54418FC2F5087822514114AE4761579D54415C8FC2B577225141EC51B85E529D5441CDCCCC1C77225141CDCCCC9C4C9D5441AE47E10A76225141F6285C6F449D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000B253055478225141C42BE0C7619D54414C75D41779225141D289B8CC5D9D5441BDE5074B792251416CBC09DD569D544161406361792251419FF7AFD5539D5441DE40B13F79225141AECDC16C529D5441E4BF2127792251414AA2AC65519D54412A97DF7C7822514124C01F7E4B9D54415C8FC2B57722514166666696449D544172CBF54076225141C66A0277449D54417BDD828E76225141569D1CED469D544153E8B146772251415EA8D3054D9D54411E6A1AD877225141E980B458539D5441F0502FF5772251416806EE0C559D5441AEAE7DEB77225141A8FB0205579D5441F0502FF577225141E9F017FD589D544123F3E0FE772251410FC2125A5A9D5441ED5D48FF772251411BBF6EDD5C9D54411BE153B17722514102A9AFD75F9D5441BDF66D717622514112A21D53689D5441208EF0C27522514180BB90966D9D54419B3700627522514148D132B7719D5441C3F528EC75225141F6285CBF719D5441962C02BB76225141175236F46A9D544170B0790277225141B64665FA689D54418E6EA92277225141DB5A9716689D5441B253055478225141C42BE0C7619D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971934 - 3130518
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+01060000000100000001030000000400000074000000CDCCCCACA8475141000000E014BE5441EC51B87EA94751416666665615BE5441C3F5289CA94751415C8FC20516BE544166666636AD475141B81E856B16BE54410AD7A3A0B0475141C3F528CC16BE54417B14AE47B44751413333333317BE544185EB5128B84751410AD7A3A017BE544114AE4761BE4751410AD7A35018BE5441F6285CDFBF4751419A99995918BE54419A9999A9C04751413D0AD7F318BE5441B81E856BC1475141E17A148E19BE5441E17A147EC2475141F6285CDF19BE5441713D0A97C347514148E17A641ABE54419A999949C44751419A9999791ABE544148E17A84C64751415C8FC2851ABE5441295C8F42C7475141F6285CBF1ABE5441000000E0C74751415C8FC2B51ABE5441000000B0C8475141EC51B88E1ABE54415C8FC295C9475141F6285C7F1ABE5441E17A147ECA475141A4703D6A1ABE5441AE47E1CACB475141666666461ABE54410AD7A310CD47514148E17A641ABE5441E17A140ECD4751417B14AE971ABE54411F85EBF1CB4751413D0AD7731ABE5441D7A3702DCB475141666666761ABE544152B81E35C9475141A4703DAA1ABE54410AD7A340C8475141A4703DDA1ABE5441F6285C0FC7475141B81E85FB1ABE544152B81E75C6475141F6285CBF1ABE5441F6285C4FC4475141000000B01ABE54417B14AE87C34751417B14AE971ABE54415C8FC265C2475141333333131ABE5441C3F5285CC147514114AE47C119BE5441295C8F82C047514114AE472119BE54410AD7A3D0BF4751419A99999918BE5441D7A370BDBE475141A4703D8A18BE544152B81EA5BE4751411F85EB1119BE5441F6285C9FBE475141AE47E18A19BE54411F85EB11BF4751413D0AD7331ABE5441B81E85EBBF4751413D0AD7431BBE5441F6285CBFC04751417B14AE471CBE5441333333A3C0475141AE47E1BA1CBE544114AE4721C1475141D7A3705D1DBE5441E17A149EC2475141666666361DBE5441E17A142EC5475141C3F5282C1DBE5441CDCCCC5CC94751418FC2F5181DBE5441B81E85CBCB475141666666061DBE5441E17A140ECD475141C3F528AC1DBE544148E17A24D0475141B81E85DB20BE5441B81E85CBD1475141CDCCCC6C23BE5441E17A148ED2475141F6285CDF23BE5441AE47E14AD4475141295C8FB224BE54410AD7A3E0D54751417B14AE5724BE5441EC51B82ED74751417B14AEA723BE5441C3F528ACD7475141F6285CFF22BE5441A4703DBAD84751413333333322BE54418FC2F588D9475141EC51B82E20BE544114AE47C1D9475141CDCCCC0C1FBE54415C8FC295DB4751417B14AEB71FBE5441333333E3DC47514185EB51481FBE54418FC2F558DE475141333333731DBE54417B14AE27DF475141CDCCCCDC1BBE5441EC51B85EDF4751419A9999091ABE5441A4703D6ADE475141CDCCCCBC16BE5441CDCCCC4CD6475141F6285CEF14BE54413D0AD7F3D7475141CDCCCC8C17BE5441A4703D7AD8475141E17A144E18BE54418FC2F548D947514152B81E4519BE5441AE47E16AD94751413D0AD7B319BE5441B81E85EBD9475141333333231ABE54413D0AD723DA475141C3F528EC1ABE54418FC2F508DA475141E17A148E1BBE5441D7A370BDD94751413D0AD7E31CBE5441F6285C5FD9475141AE47E1CA1CBE5441B81E85ABD9475141000000E01BBE544148E17AD4D94751411F85EB411BBE5441295C8FC2D9475141AE47E17A1ABE544148E17A24D94751413D0AD7F319BE5441713D0A07D94751413333337319BE5441E17A142ED8475141CDCCCC7C18BE54417B14AEA7D74751417B14AEC717BE54413D0AD7D3D547514148E17AD414BE5441C3F5287CC04751415C8FC21510BE544114AE4781BF475141295C8F020FBE5441A4703D9ABB4751411F85EB210BBE54418FC2F568B947514152B81ED508BE5441713D0A27B64751410000004006BE5441E17A147EB2475141A4703D7A04BE54415C8FC295A3475141B81E852BF9BD54417B14AE67A0475141295C8FA2F8BD544114AE47519C47514185EB51E8F7BD5441295C8FE294475141AE47E1EAF7BD54411F85EB3193475141000000E0F7BD54419A99991992475141713D0A17F9BD5441CDCCCCBC914751417B14AEA7FABD54419A999979914751417B14AE97FBBD5441D7A370FD90475141000000F0FCBD5441AE47E19A924751415C8FC245FEBD54413D0AD73395475141C3F5286C01BE54413333337398475141CDCCCC2C05BE54413D0AD7F39A475141E17A149E0BBE54418FC2F55899475141000000200DBE5441F6285C7F9A475141B81E85AB0EBE544185EB51189C475141AE47E15A0FBE54417B14AEF79D47514114AE474110BE5441333333E39F4751418FC2F59811BE5441C3F528ACA14751410000005013BE5441E17A14FEA14751410000008014BE544152B81E65A24751410AD7A32016BE544114AE47419D4751417B14AE9718BE544148E17AB4A1475141EC51B8FE1DBE5441EC51B83EA3475141713D0AC719BE544152B81E55A5475141CDCCCC8C15BE54413D0AD773A6475141C3F528AC15BE5441C3F5287CA74751413333332315BE5441CDCCCCACA8475141000000E014BE5441110000005C8FC215A547514114AE471114BE544166666676A44751416666666614BE5441AE47E1DAA3475141F6285C5F14BE5441295C8F62A3475141CDCCCC7C13BE544148E17AD4A2475141F6285C8F12BE5441CDCCCC1CA24751413D0AD7D311BE544185EB5128A1475141000000E010BE5441B81E851BA04751419A9999F90FBE54418FC2F5589F47514114AE47810FBE5441C3F5287C9F475141CDCCCCEC0EBE544152B81E55A2475141CDCCCCAC0EBE54415C8FC2F5A4475141CDCCCCEC0EBE54410AD7A370A6475141000000300FBE54411F85EBE1A64751410AD7A32010BE5441CDCCCCCCA6475141D7A3700D11BE54410AD7A310A6475141D7A3709D12BE54415C8FC215A547514114AE471114BE54410B000000000000D09847514152B81EC5FFBD54418FC2F528974751410AD7A3D0FFBD54416666667695475141000000F0FEBD544148E17A14954751418FC2F528FDBD5441E17A14AE9547514100000070FCBD5441F6285CBF96475141C3F528CCFCBD5441D7A3705D9747514133333373FDBD544185EB51989847514133333373FDBD5441713D0A7799475141EC51B8FEFDBD54415C8FC2159947514185EB51D8FEBD5441000000D09847514152B81EC5FFBD54411B00000000000050D0475141E17A14AE1BBE54413D0AD7B3CE4751419A9999191BBE5441000000D0CE475141333333D31ABE544152B81E65D04751415C8FC2751BBE5441713D0AF7D1475141A4703DAA1BBE544152B81EB5D24751410AD7A3101CBE5441B81E854BD54751411F85EB411CBE5441D7A370EDD5475141A4703D7A1CBE5441E17A147ED6475141EC51B8AE1CBE54410AD7A3E0D64751418FC2F5F81CBE544133333343D747514185EB51381DBE5441C3F5280CD8475141A4703D4A1DBE54410AD7A380D84751419A9999891DBE544114AE47F1D8475141666666F61DBE544114AE47C1D9475141CDCCCC0C1FBE5441C3F5288CD9475141CDCCCC2C1FBE5441C3F528BCD8475141F6285C0F1EBE54419A999959D84751413D0AD7B31DBE5441A4703DFAD74751415C8FC2851DBE54418FC2F538D74751410AD7A3701DBE544114AE47C1D6475141A4703D2A1DBE54418FC2F568D64751417B14AEE71CBE544114AE47D1D5475141EC51B8AE1CBE544114AE4741D5475141A4703D7A1CBE54413D0AD7A3D24751418FC2F5481CBE544152B81EE5D1475141295C8FE21BBE544100000050D0475141E17A14AE1BBE5441
+</a>
+
+<b>
+0106000000010000000103000000010000003700000051E634B4C0475141287C382210BE5441A12C9A2BC04751414A29AE5612BE544109CBC4AABF475141B8B7076B14BE5441F5F2022CBF47514117ECCC7616BE544158C35DD9BE475141F1024CCC17BE54411752D7B8BE475141F57FB15218BE544114AE4761BE4751410AD7A35018BE54412591D441BE475141A343596419BE5441AE47E13ABE47514114AE47A119BE5441B38F6798BE47514128C9B4191ABE544123738463BF475141ED17541F1BBE5441C5076874C0475141566ACA7E1CBE544114AE4721C1475141D7A3705D1DBE5441E17A149EC2475141666666361DBE5441E17A142EC5475141C3F5282C1DBE5441EF960497C6475141E50DB0251DBE544134F0DC3BC84751412A24241E1DBE54412BEB6C43CA475141D91516121DBE5441B81E85CBCB475141666666061DBE5441E17A140ECD475141C3F528AC1DBE5441488F72EDCD47514123CA94921EBE54419D4E33E5CE475141796C28921FBE5441037283D8CF4751414B8E278D20BE544148E17A24D0475141B81E85DB20BE5441C9E323B5D0475141588C47BC21BE5441FAF24A5DD14751415B0B8AC122BE5441B81E85CBD1475141CDCCCC6C23BE54414733649AD247514109A934E523BE5441F426167BD44751416032E17723BE544166FC80B5D64751416097AE6922BE5441605B5C9DD8475141BC16E4DB20BE5441A04F0268D9475141D73CA6911FBE5441BDAB293ADA4751419E1F8AFB1EBE5441B66FD213DB475141825E95371FBE54417D881B9ADC475141B409F58A1EBE5441DAD8E836DE4751418128301B1DBE54417B14AE27DF475141CDCCCCDC1BBE54410F57BA4BDF47514111E5CFAA1ABE54410B6AF943DF47514192222EAD19BE5441A13F25E5DE47514178E87F6518BE5441A4703D6ADE475141CDCCCCBC16BE5441EBBD87F5DB4751417ABA263116BE5441ECBF760ED9475141D00A1A8C15BE54410ADA31ACD6475141B5E6400415BE54417D4554D7D44751415A170A9C14BE54415F8E8925D24751418D67B80214BE5441767598C5CF475141B70C987B13BE54412D8FA6DDCD475141D79B230F13BE54417820B95ECB4751410B25208112BE544152407142C8475141452823D011BE5441F0959898C54751417793953811BE5441A2179444C347514124B81BB410BE5441FA642A3BC24751418B20247910BE54413E480EA1C1475141EAAC4C5A10BE544151E634B4C0475141287C382210BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971934 - 3351026
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+01060000000100000001030000000400000074000000CDCCCCACA8475141000000E014BE5441EC51B87EA94751416666665615BE5441C3F5289CA94751415C8FC20516BE544166666636AD475141B81E856B16BE54410AD7A3A0B0475141C3F528CC16BE54417B14AE47B44751413333333317BE544185EB5128B84751410AD7A3A017BE544114AE4761BE4751410AD7A35018BE5441F6285CDFBF4751419A99995918BE54419A9999A9C04751413D0AD7F318BE5441B81E856BC1475141E17A148E19BE5441E17A147EC2475141F6285CDF19BE5441713D0A97C347514148E17A641ABE54419A999949C44751419A9999791ABE544148E17A84C64751415C8FC2851ABE5441295C8F42C7475141F6285CBF1ABE5441000000E0C74751415C8FC2B51ABE5441000000B0C8475141EC51B88E1ABE54415C8FC295C9475141F6285C7F1ABE5441E17A147ECA475141A4703D6A1ABE5441AE47E1CACB475141666666461ABE54410AD7A310CD47514148E17A641ABE5441E17A140ECD4751417B14AE971ABE54411F85EBF1CB4751413D0AD7731ABE5441D7A3702DCB475141666666761ABE544152B81E35C9475141A4703DAA1ABE54410AD7A340C8475141A4703DDA1ABE5441F6285C0FC7475141B81E85FB1ABE544152B81E75C6475141F6285CBF1ABE5441F6285C4FC4475141000000B01ABE54417B14AE87C34751417B14AE971ABE54415C8FC265C2475141333333131ABE5441C3F5285CC147514114AE47C119BE5441295C8F82C047514114AE472119BE54410AD7A3D0BF4751419A99999918BE5441D7A370BDBE475141A4703D8A18BE544152B81EA5BE4751411F85EB1119BE5441F6285C9FBE475141AE47E18A19BE54411F85EB11BF4751413D0AD7331ABE5441B81E85EBBF4751413D0AD7431BBE5441F6285CBFC04751417B14AE471CBE5441333333A3C0475141AE47E1BA1CBE544114AE4721C1475141D7A3705D1DBE5441E17A149EC2475141666666361DBE5441E17A142EC5475141C3F5282C1DBE5441CDCCCC5CC94751418FC2F5181DBE5441B81E85CBCB475141666666061DBE5441E17A140ECD475141C3F528AC1DBE544148E17A24D0475141B81E85DB20BE5441B81E85CBD1475141CDCCCC6C23BE5441E17A148ED2475141F6285CDF23BE5441AE47E14AD4475141295C8FB224BE54410AD7A3E0D54751417B14AE5724BE5441EC51B82ED74751417B14AEA723BE5441C3F528ACD7475141F6285CFF22BE5441A4703DBAD84751413333333322BE54418FC2F588D9475141EC51B82E20BE544114AE47C1D9475141CDCCCC0C1FBE54415C8FC295DB4751417B14AEB71FBE5441333333E3DC47514185EB51481FBE54418FC2F558DE475141333333731DBE54417B14AE27DF475141CDCCCCDC1BBE5441EC51B85EDF4751419A9999091ABE5441A4703D6ADE475141CDCCCCBC16BE5441CDCCCC4CD6475141F6285CEF14BE54413D0AD7F3D7475141CDCCCC8C17BE5441A4703D7AD8475141E17A144E18BE54418FC2F548D947514152B81E4519BE5441AE47E16AD94751413D0AD7B319BE5441B81E85EBD9475141333333231ABE54413D0AD723DA475141C3F528EC1ABE54418FC2F508DA475141E17A148E1BBE5441D7A370BDD94751413D0AD7E31CBE5441F6285C5FD9475141AE47E1CA1CBE5441B81E85ABD9475141000000E01BBE544148E17AD4D94751411F85EB411BBE5441295C8FC2D9475141AE47E17A1ABE544148E17A24D94751413D0AD7F319BE5441713D0A07D94751413333337319BE5441E17A142ED8475141CDCCCC7C18BE54417B14AEA7D74751417B14AEC717BE54413D0AD7D3D547514148E17AD414BE5441C3F5287CC04751415C8FC21510BE544114AE4781BF475141295C8F020FBE5441A4703D9ABB4751411F85EB210BBE54418FC2F568B947514152B81ED508BE5441713D0A27B64751410000004006BE5441E17A147EB2475141A4703D7A04BE54415C8FC295A3475141B81E852BF9BD54417B14AE67A0475141295C8FA2F8BD544114AE47519C47514185EB51E8F7BD5441295C8FE294475141AE47E1EAF7BD54411F85EB3193475141000000E0F7BD54419A99991992475141713D0A17F9BD5441CDCCCCBC914751417B14AEA7FABD54419A999979914751417B14AE97FBBD5441D7A370FD90475141000000F0FCBD5441AE47E19A924751415C8FC245FEBD54413D0AD73395475141C3F5286C01BE54413333337398475141CDCCCC2C05BE54413D0AD7F39A475141E17A149E0BBE54418FC2F55899475141000000200DBE5441F6285C7F9A475141B81E85AB0EBE544185EB51189C475141AE47E15A0FBE54417B14AEF79D47514114AE474110BE5441333333E39F4751418FC2F59811BE5441C3F528ACA14751410000005013BE5441E17A14FEA14751410000008014BE544152B81E65A24751410AD7A32016BE544114AE47419D4751417B14AE9718BE544148E17AB4A1475141EC51B8FE1DBE5441EC51B83EA3475141713D0AC719BE544152B81E55A5475141CDCCCC8C15BE54413D0AD773A6475141C3F528AC15BE5441C3F5287CA74751413333332315BE5441CDCCCCACA8475141000000E014BE5441110000005C8FC215A547514114AE471114BE544166666676A44751416666666614BE5441AE47E1DAA3475141F6285C5F14BE5441295C8F62A3475141CDCCCC7C13BE544148E17AD4A2475141F6285C8F12BE5441CDCCCC1CA24751413D0AD7D311BE544185EB5128A1475141000000E010BE5441B81E851BA04751419A9999F90FBE54418FC2F5589F47514114AE47810FBE5441C3F5287C9F475141CDCCCCEC0EBE544152B81E55A2475141CDCCCCAC0EBE54415C8FC2F5A4475141CDCCCCEC0EBE54410AD7A370A6475141000000300FBE54411F85EBE1A64751410AD7A32010BE5441CDCCCCCCA6475141D7A3700D11BE54410AD7A310A6475141D7A3709D12BE54415C8FC215A547514114AE471114BE54410B000000000000D09847514152B81EC5FFBD54418FC2F528974751410AD7A3D0FFBD54416666667695475141000000F0FEBD544148E17A14954751418FC2F528FDBD5441E17A14AE9547514100000070FCBD5441F6285CBF96475141C3F528CCFCBD5441D7A3705D9747514133333373FDBD544185EB51989847514133333373FDBD5441713D0A7799475141EC51B8FEFDBD54415C8FC2159947514185EB51D8FEBD5441000000D09847514152B81EC5FFBD54411B00000000000050D0475141E17A14AE1BBE54413D0AD7B3CE4751419A9999191BBE5441000000D0CE475141333333D31ABE544152B81E65D04751415C8FC2751BBE5441713D0AF7D1475141A4703DAA1BBE544152B81EB5D24751410AD7A3101CBE5441B81E854BD54751411F85EB411CBE5441D7A370EDD5475141A4703D7A1CBE5441E17A147ED6475141EC51B8AE1CBE54410AD7A3E0D64751418FC2F5F81CBE544133333343D747514185EB51381DBE5441C3F5280CD8475141A4703D4A1DBE54410AD7A380D84751419A9999891DBE544114AE47F1D8475141666666F61DBE544114AE47C1D9475141CDCCCC0C1FBE5441C3F5288CD9475141CDCCCC2C1FBE5441C3F528BCD8475141F6285C0F1EBE54419A999959D84751413D0AD7B31DBE5441A4703DFAD74751415C8FC2851DBE54418FC2F538D74751410AD7A3701DBE544114AE47C1D6475141A4703D2A1DBE54418FC2F568D64751417B14AEE71CBE544114AE47D1D5475141EC51B8AE1CBE544114AE4741D5475141A4703D7A1CBE54413D0AD7A3D24751418FC2F5481CBE544152B81EE5D1475141295C8FE21BBE544100000050D0475141E17A14AE1BBE5441
+</a>
+
+<b>
+0106000000010000000103000000010000003700000051E634B4C0475141287C382210BE5441A12C9A2BC04751414A29AE5612BE544109CBC4AABF475141B8B7076B14BE5441F5F2022CBF47514117ECCC7616BE544158C35DD9BE475141F1024CCC17BE54411752D7B8BE475141F57FB15218BE544114AE4761BE4751410AD7A35018BE54412591D441BE475141A343596419BE5441AE47E13ABE47514114AE47A119BE5441B38F6798BE47514128C9B4191ABE544123738463BF475141ED17541F1BBE5441C5076874C0475141566ACA7E1CBE544114AE4721C1475141D7A3705D1DBE5441E17A149EC2475141666666361DBE5441E17A142EC5475141C3F5282C1DBE5441EF960497C6475141E50DB0251DBE544134F0DC3BC84751412A24241E1DBE54412BEB6C43CA475141D91516121DBE5441B81E85CBCB475141666666061DBE5441E17A140ECD475141C3F528AC1DBE5441488F72EDCD47514123CA94921EBE54419D4E33E5CE475141796C28921FBE5441037283D8CF4751414B8E278D20BE544148E17A24D0475141B81E85DB20BE5441C9E323B5D0475141588C47BC21BE5441FAF24A5DD14751415B0B8AC122BE5441B81E85CBD1475141CDCCCC6C23BE54414733649AD247514109A934E523BE5441F426167BD44751416032E17723BE544166FC80B5D64751416097AE6922BE5441605B5C9DD8475141BC16E4DB20BE5441A04F0268D9475141D73CA6911FBE5441BDAB293ADA4751419E1F8AFB1EBE5441B66FD213DB475141825E95371FBE54417D881B9ADC475141B409F58A1EBE5441DAD8E836DE4751418128301B1DBE54417B14AE27DF475141CDCCCCDC1BBE54410F57BA4BDF47514111E5CFAA1ABE54410B6AF943DF47514192222EAD19BE5441A13F25E5DE47514178E87F6518BE5441A4703D6ADE475141CDCCCCBC16BE5441EBBD87F5DB4751417ABA263116BE5441ECBF760ED9475141D00A1A8C15BE54410ADA31ACD6475141B5E6400415BE54417D4554D7D44751415A170A9C14BE54415F8E8925D24751418D67B80214BE5441767598C5CF475141B70C987B13BE54412D8FA6DDCD475141D79B230F13BE54417820B95ECB4751410B25208112BE544152407142C8475141452823D011BE5441F0959898C54751417793953811BE5441A2179444C347514124B81BB410BE5441FA642A3BC24751418B20247910BE54413E480EA1C1475141EAAC4C5A10BE544151E634B4C0475141287C382210BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13927 - 1422450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -508  </desc>
+<a>
+010600000001000000010300000001000000270000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F5092255417B14AEE7EE1B5141B81E854B0A22554133333383EE1B5141E17A14CE0A22554152B81E15EE1B51418FC2F5680B22554152B81E85ED1B5141B81E853B0C225541C3F528ECEC1B514114AE47F10C225541F6285C8FEA1B51413333333311225541AE47E19AF31B51413D0AD70317225541EC51B8FEFC1B514185EB51C8132255410AD7A360FF1B514166666686142255418FC2F528031C514148E17AB41522554185EB51C8071C51415C8FC225172255415C8FC2F5091C5141333333530B2255411F85EB310B1C51419A9999C904225541666666560C1C5141E17A148EFF21554148E17AE40D1C5141D7A3705DFB21554152B81E65101C51418FC2F548F621554133333343111C51410AD7A310F12155411F85EB810D1C51411F85EBA1F1215541E17A148E0B1C5141AE47E1CAF3215541C3F5286C0A1C514185EB5128F62155415C8FC2F5091C5141D7A370ADF8215541713D0AC7081C5141295C8F52FA215541295C8FD2061C514152B81E05FC215541E17A14DE041C514114AE4761FC2155419A999999001C5141CDCCCC2CFC215541
+</a>
+
+<b>
+010600000001000000010300000001000000260000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F5092255417B14AEE7EE1B5141B81E854B0A22554133333383EE1B5141E17A14CE0A22554152B81E15EE1B51418FC2F5680B22554152B81E85ED1B5141B81E853B0C225541C3F528ECEC1B514114AE47F10C225541F6285C8FEA1B51413333333311225541AE47E19AF31B51413D0AD70317225541EC51B8FEFC1B514185EB51C8132255410AD7A360FF1B514166666686142255418FC2F528031C514148E17AB41522554185EB51C8071C51415C8FC225172255415C8FC2F5091C5141333333530B2255411F85EB310B1C51419A9999C904225541553A6B3F0C1C5141D1A254F7FF21554102BA165A0C1C5141C8F52384FF215541A72349F40D1C5141DFDA5A3DFB21554187AD077C0F1C5141EF2F2022F8215541C7BCF3D80C1C51412E3CC898F72155410A2ED1580A1C5141296EB691F62155415C8FC2F5091C5141D7A370ADF8215541713D0AC7081C5141295C8F52FA215541295C8FD2061C514152B81E05FC215541E17A14DE041C514114AE4761FC2155419A999999001C5141CDCCCC2CFC215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13927 - 3534514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -508  </desc>
+<a>
+010600000001000000010300000001000000270000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F5092255417B14AEE7EE1B5141B81E854B0A22554133333383EE1B5141E17A14CE0A22554152B81E15EE1B51418FC2F5680B22554152B81E85ED1B5141B81E853B0C225541C3F528ECEC1B514114AE47F10C225541F6285C8FEA1B51413333333311225541AE47E19AF31B51413D0AD70317225541EC51B8FEFC1B514185EB51C8132255410AD7A360FF1B514166666686142255418FC2F528031C514148E17AB41522554185EB51C8071C51415C8FC225172255415C8FC2F5091C5141333333530B2255411F85EB310B1C51419A9999C904225541666666560C1C5141E17A148EFF21554148E17AE40D1C5141D7A3705DFB21554152B81E65101C51418FC2F548F621554133333343111C51410AD7A310F12155411F85EB810D1C51411F85EBA1F1215541E17A148E0B1C5141AE47E1CAF3215541C3F5286C0A1C514185EB5128F62155415C8FC2F5091C5141D7A370ADF8215541713D0AC7081C5141295C8F52FA215541295C8FD2061C514152B81E05FC215541E17A14DE041C514114AE4761FC2155419A999999001C5141CDCCCC2CFC215541
+</a>
+
+<b>
+010600000001000000010300000001000000260000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F5092255417B14AEE7EE1B5141B81E854B0A22554133333383EE1B5141E17A14CE0A22554152B81E15EE1B51418FC2F5680B22554152B81E85ED1B5141B81E853B0C225541C3F528ECEC1B514114AE47F10C225541F6285C8FEA1B51413333333311225541AE47E19AF31B51413D0AD70317225541EC51B8FEFC1B514185EB51C8132255410AD7A360FF1B514166666686142255418FC2F528031C514148E17AB41522554185EB51C8071C51415C8FC225172255415C8FC2F5091C5141333333530B2255411F85EB310B1C51419A9999C904225541553A6B3F0C1C5141D1A254F7FF21554102BA165A0C1C5141C8F52384FF215541A72349F40D1C5141DFDA5A3DFB21554187AD077C0F1C5141EF2F2022F8215541C7BCF3D80C1C51412E3CC898F72155410A2ED1580A1C5141296EB691F62155415C8FC2F5091C5141D7A370ADF8215541713D0AC7081C5141295C8F52FA215541295C8FD2061C514152B81E05FC215541E17A14DE041C514114AE4761FC2155419A999999001C5141CDCCCC2CFC215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>19079 - 265641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -169  </desc>
+<a>
+0106000000010000000103000000010000000F0000001F85EBE10D725141295C8FF2369B54411F85EBE10D72514152B81ED52E9B5441CDCCCC3CFE715141713D0A072F9B54419A9999E9FD7151417B14AE67289B54411F85EBD1F77151411F85EB51279B5441295C8F92F5715141CDCCCC7C309B544152B81EF5F17151417B14AE873D9B544152B81EB5F0715141E17A14BE409B5441E17A143EEF7151415C8FC245439B54415C8FC2A5EC715141713D0A57469B54415C8FC2F5EC715141CDCCCCAC4D9B54413D0AD7B30E725141F6285C6F4E9B5441000000300E7251419A9999294C9B5441D7A370AD0E725141713D0A47379B54411F85EBE10D725141295C8FF2369B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B81E851BFB7151415C8FC205649B54413A9955ADFF71514196DB0DAA649B5441BD908AD9FF7151412FCAE6F6639B5441B8F22BF7067251413F404EEF649B5441828C2554077251411F541AA9659B5441D16F275C0C72514160023B67669B544141CABC6E2A72514199FA75A56A9B5441EBDE4EB7307251418B5204876B9B54410E7A616035725141FDD826336C9B5441C6D9F89A367251416D21A3626C9B5441814BF6E9347251412D47E121619B54418D957DC3237251411BFFD5155F9B544186A1C065237251415CD1BD374F9B5441208CCCE7227251413B42FA324F9B54413D0AD7B30E725141F6285C6F4E9B544191E50D590B725141F09C54284F9B5441A7BF472D0A725141F0AF37BE4F9B5441B1C3542C09725141E86E74FE4F9B54414D149DB507725141E86E74FE4F9B5441E87BD5D305725141EEC627534F9B544122BEDBCD037251410096AE384E9B544137931367FF715141D60324174E9B54416117391CFC715141761A28044E9B54415C8FC2F5EC715141CDCCCCAC4D9B54415614CCDFF07151410B9FC8A8559B544163B70D0AEF7151415DD92AA35D9B544185EB51F8F7715141713D0AD75D9B5441F6285CAFF971514185EB51F85F9B5441B81E851BFB7151415C8FC205649B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27037 - 59307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000120000000AD7A39099E85041D7A370EDECFD5441AE47E1EAA5E850413D0AD7E3EAFD5441EC51B85EA1E85041F6285C5FD7FD5441A4703D5AA0E85041A4703DCACEFD544100000040A0E850410AD7A3E0C3FD544148E17A449DE85041B81E857BA3FD54419A9999A98CE8504100000010A3FD544185EB51588AE8504100000010A3FD54415C8FC2D588E8504114AE47C1A3FD54417B14AE478AE8504133333323B0FD5441000000908BE85041D7A3702DBBFD54415C8FC2F58CE850410AD7A360C2FD5441333333D38FE850418FC2F578CBFD5441A4703D8A92E8504114AE4771D4FD54411F85EB1195E85041713D0A77DEFD5441EC51B87E97E8504100000080E9FD5441D7A3700D98E850419A9999E9EBFD54410AD7A39099E85041D7A370EDECFD5441
+</a>
+
+<b>
+010600000001000000010300000001000000260000006F2E33CFA3E85041C3B893D7E1FD5441620DEEE2A1E85041044ACB96D9FD5441EC51B85EA1E85041F6285C5FD7FD5441D5ACF215A1E850414C2A89F9D4FD5441FE5CDD0EA1E850417F14CABDD4FD544188839690A0E85041DDADA894D0FD5441618CE47EA0E85041E5EB66FFCFFD5441A4703D5AA0E85041A4703DCACEFD5441B08DAC55A0E85041C2C921E4CCFD544100000040A0E850410AD7A3E0C3FD5441C4A046889EE850413CDB7D38B1FD544173D949509EE85041D39C5FD8AEFD5441F804A4239EE850413D4E6CF3ACFD544153086F109EE85041A080CD22ACFD54414305672E9DE85041092AF67AA3FD5441311A76B091E850416EA18C30A3FD5441976F7F1C91E85041148BCE2CA3FD54419A9999A98CE8504100000010A3FD544185EB51588AE8504100000010A3FD544108DB6CDD89E85041F9555C48A3FD54418FE141DB88E85041404D63F0A3FD54416616E65E89E8504116407358A8FD544171BED6418AE85041165C25F1AFFD54412A833E858BE85041FA1850C1BAFD5441E4E129758CE85041C3D4E9C3BFFD54416B5B5F948DE8504154952858C4FD5441EFC8E0AC8EE85041960DA1D2C7FD5441333333D38FE850418FC2F578CBFD5441A4703D8A92E8504114AE4771D4FD54415F93889C94E850416B8D04A6DCFD54411F85EB1195E85041713D0A77DEFD544195D0780F97E850413192C385E7FD5441498E609597E85041D0AC0BE2E9FD544177F2F89697E85041D3EDF2E8E9FD5441CD16891298E85041A01A0BEBEBFD5441AD345DBA99E850419BC98EE6ECFD5441AE47E1EAA5E850413D0AD7E3EAFD54416F2E33CFA3E85041C3B893D7E1FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27067 - 59317
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5282C98E95041E17A14EECBFF544152B81E459FE9504152B81EA5B6FF54411F85EBF19EE9504152B81E35B5FF5441B81E857B9DE950411F85EB21B0FF544148E17AF49AE950419A999979A2FF54413333337397E950410000008094FF54415C8FC2D596E95041AE47E19A94FF544114AE47E195E9504152B81EC594FF54410AD7A3408EE950415C8FC22597FF54410AD7A3C092E95041D7A370BDAFFF54417B14AE2797E95041B81E85CBC7FF544152B81E7597E950413D0AD773C9FF5441C3F5282C98E95041E17A14EECBFF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B81E857B9DE950411F85EB21B0FF5441963372729CE95041DFB99389AAFF54414E88CFF99BE950415958B7FDA7FF544162BFDC479BE95041444B293CA4FF54415A91104E9AE95041535013E29FFF544141E4C9289AE950412820734D9FFF54417FAAE39999E9504126E5AF139DFF5441122F0E4999E9504167A563D19BFF544100CDE1FC98E95041AE79ACA19AFF5441E1956E2998E950411198965697FF544196F7BB7797E950416C2A149294FF5441E3C093E18EE950419E8098F396FF5441A2C685448EE95041736BFA3A97FF544150D961628FE95041C08433559DFF5441A46AA6F491E950419B8FA262ABFF544113AE55A292E95041A44BD217AFFF5441966B533195E9504136C8AF12BDFF5441EA3C38AC95E95041F9D42BB2BFFF54417B14AE2797E95041B81E85CBC7FF5441C314016D97E95041D6F35E47C9FF5441792022B697E95041D0061D55CAFF5441E6D154CF97E9504156E76CACCAFF5441B7DB2DD997E95041C2638CCECAFF5441CC6C8CE997E9504193D94407CBFF5441A6AF2E3798E950418B4806CDCBFF5441F3340DC99CE950411231A718BEFF544152B81E459FE9504152B81EA5B6FF54411F85EBF19EE9504152B81E35B5FF5441B81E857B9DE950411F85EB21B0FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>30106 - 4022982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -97  </desc>
+<a>
+0106000000010000000103000000010000001A000000CDCCCC4C384A5141EC51B8DE4D885441F6285C4F504A5141713D0A474D885441EC51B82E504A5141A4703D7A45885441CDCCCC5C514A514185EB51D84488544166666666544A51415C8FC2F5438854419A999939574A514152B81EB5438854413D0AD7735C4A5141A4703DCA4388544185EB5178614A5141A4703DCA4388544185EB5178614A5141D7A3701D4A88544185EB5198614A51413D0AD7A34F885441CDCCCC4C624A5141D7A370CD58885441F6285C6F664A5141666666165888544152B81ED5694A51410000003057885441CDCCCCBC734A51415C8FC235578854410AD7A3F0794A51417B14AE3758885441333333C3804A514152B81E8559885441000000D0814A5141713D0AB7588854419A9999E9824A5141CDCCCC8C49885441CDCCCC9C844A51411F85EB3132885441666666E6874A51419A9999D904885441B81E85FB864A51417B14AEB70388544114AE4761854A51413333338303885441A4703DEA644A5141333333C3028854419A9999A93D4A51410000000004885441B81E85BB3A4A5141333333A32A885441CDCCCC4C384A5141EC51B8DE4D885441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000085EB5198614A51413D0AD7A34F885441731535DD614A5141CF8FE8C258885441F6285C6F664A5141666666165888544152B81ED5694A51410000003057885441CDCCCCBC734A51415C8FC235578854410AD7A3F0794A51417B14AE3758885441333333C3804A514152B81E8559885441000000D0814A5141713D0AB7588854419A9999E9824A5141CDCCCC8C49885441CDCCCC9C844A51411F85EB3132885441666666E6874A51419A9999D904885441B81E85FB864A51417B14AEB70388544114AE4761854A51413333338303885441A4703DEA644A5141333333C3028854419A9999A93D4A51410000000004885441B81E85BB3A4A5141333333A32A885441CDCCCC4C384A5141EC51B8DE4D885441B280304F504A5141DC709B3C4D88544153EED94D504A5141181CBEEA4C885441266E5D08514A5141386356E34C885441266E5D08514A51411068A03045885441F601241C514A51419FB2F11B45885441EBDE1019514A5141F8A4D2ED44885441C976A35A514A5141B7A094DA44885441CDCCCC5C514A514185EB51D84488544166666666544A51415C8FC2F5438854419A999939574A514152B81EB5438854413D0AD7735C4A5141A4703DCA4388544185EB5178614A5141A4703DCA4388544185EB5178614A5141D7A3701D4A88544185EB5198614A51413D0AD7A34F885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232507 - 203812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000027000000A4703D2A62AB5041F6285C7F1D605441CDCCCC8C5EAB504114AE4711196054417B14AEE756AB5041C3F5280C0B60544148E17A7454AB5041333333030C6054410AD7A3A04CAB50415C8FC2F50D605441F6285CFF45AB5041B81E85DB006054411F85EBB13BAB5041C3F5289CEC5F54410AD7A3F038AB50410AD7A330E75F54415C8FC2552FAB5041C3F528CCE85F5441B81E859B28AB50411F85EB01EA5F54415C8FC2D526AB504152B81EB5EA5F5441CDCCCC5C26AB5041713D0AF7EB5F54413D0AD77336AB5041000000300B605441D7A370DD3CAB5041000000F0086054418FC2F57843AB50410AD7A3800C605441AE47E1DA47AB5041666666E61060544185EB51384CAB50416666662614605441713D0AA752AB504114AE47811B605441A4703D1A59AB5041EC51B8FE216054413D0AD7F35AAB5041B81E85DB2360544148E17A245EAB504185EB5108266054413333330367AB50411F85EB212C60544185EB51586BAB50419A9999E931605441333333B371AB5041AE47E18A3360544152B81EB576AB5041A4703D8A346054410AD7A3D078AB504133333393356054411F85EB7180AB50411F85EBC135605441000000908AAB504152B81E7538605441A4703D5A9DAB5041D7A370ED3F605441713D0A27A0AB5041E17A14CE42605441B81E852BA3AB50415C8FC285356054418FC2F5C8B3AB5041E17A144E3760544114AE47D1B3AB5041D7A3700D3660544152B81E5582AB5041EC51B8BE306054411F85EBB17BAB50417B14AE672F605441295C8F7276AB50410AD7A3102D60544185EB51F86FAB50419A9999E9286054415C8FC22567AB5041E17A143E22605441A4703D2A62AB5041F6285C7F1D605441
+</a>
+
+<b>
+010600000001000000010300000001000000360000008D1E852BA3AB5041878FC28535605441EDCE8930A8AB50413ABD9E0F36605441F9DFE73EA8AB5041E3542911366054418FC2F5C8B3AB5041767A144E37605441E1B7A1CAB3AB5041CC9FA70D376054418FC7C3CEB3AB5041C0925F6E3660544191B415D0B3AB5041AD6E803B3660544112AE47D1B3AB504122A4700D3660544145A0F85E9EAB5041161594C033605441BBEA71AE9CAB5041A41E30923360544152B81E5582AB5041EC51B8BE3060544184BDC5FD7EAB504136270A12306054413485EBB17BAB5041E614AE672F605441095C8F7276AB504176D7A3102D60544145EB51F86FAB5041059A99E928605441928FC22567AB50412C7B143E22605441563A4ABD65AB5041F1DBCAE620605441A4703D2A62AB5041F6285C7F1D6054410398AE6060AB5041C951A54E1B6054416CCCCC8C5EAB5041F4AD4711196054410ED73C3E58AB5041677B5E800D6054417B14AEE756AB5041C3F5280C0B605441AE501CC456AB504132842B1A0B60544148E17A7454AB5041333333030C605441B6FDE1B44CAB5041943AB9F00D605441123C32534CAB5041A7272A290E6054419326541548AB50410E29E9C41060544100B208E947AB50419FAD24EC10605441AC6CA38149AB5041BF98AFD8106054416F9AA3574CAB5041FDB6AFBC1260544112C9A32D4FAB5041D9C766FA156054415962ED5556AB50415B43678A1D605441C62683EA59AB5041FD3C7AA9206054416DDD369A5BAB50411645D521226054418B29857C5EAB5041F14E7A7024605441176BD3FF5FAB50417B8352A625605441081CEEAD61AB5041F5DD67FE26605441171F139168AB5041C976FADA2B6054416A20CADC6AAB5041550ED66B2E60544182F3379E6CAB5041C45A1FDA3060544121AA131371AB50416FB5B1EE3160544175ABCA5E73AB50416FB5B1EE316054415280A6B779AB50419F1F44F5336054410BCEA6717EAB504148C6682C3560544191ED5DA182AB504108E4B1C4346054411C85393285AB504116981FA234605441F61DCC0E8AAB5041D589D6FB35605441E4D55ECF90AB5041BAC61F78376054414516847A9BAB504175C88D0F3C6054417B08F21F9FAB5041212320243D605441724628F2A0AB50411959FE4F3F605441B61B7720A2AB5041669F491D3A6054419DA87EADA2AB5041D43180B0376054418D1E852BA3AB5041878FC28535605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232507 - 377960
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000027000000A4703D2A62AB5041F6285C7F1D605441CDCCCC8C5EAB504114AE4711196054417B14AEE756AB5041C3F5280C0B60544148E17A7454AB5041333333030C6054410AD7A3A04CAB50415C8FC2F50D605441F6285CFF45AB5041B81E85DB006054411F85EBB13BAB5041C3F5289CEC5F54410AD7A3F038AB50410AD7A330E75F54415C8FC2552FAB5041C3F528CCE85F5441B81E859B28AB50411F85EB01EA5F54415C8FC2D526AB504152B81EB5EA5F5441CDCCCC5C26AB5041713D0AF7EB5F54413D0AD77336AB5041000000300B605441D7A370DD3CAB5041000000F0086054418FC2F57843AB50410AD7A3800C605441AE47E1DA47AB5041666666E61060544185EB51384CAB50416666662614605441713D0AA752AB504114AE47811B605441A4703D1A59AB5041EC51B8FE216054413D0AD7F35AAB5041B81E85DB2360544148E17A245EAB504185EB5108266054413333330367AB50411F85EB212C60544185EB51586BAB50419A9999E931605441333333B371AB5041AE47E18A3360544152B81EB576AB5041A4703D8A346054410AD7A3D078AB504133333393356054411F85EB7180AB50411F85EBC135605441000000908AAB504152B81E7538605441A4703D5A9DAB5041D7A370ED3F605441713D0A27A0AB5041E17A14CE42605441B81E852BA3AB50415C8FC285356054418FC2F5C8B3AB5041E17A144E3760544114AE47D1B3AB5041D7A3700D3660544152B81E5582AB5041EC51B8BE306054411F85EBB17BAB50417B14AE672F605441295C8F7276AB50410AD7A3102D60544185EB51F86FAB50419A9999E9286054415C8FC22567AB5041E17A143E22605441A4703D2A62AB5041F6285C7F1D605441
+</a>
+
+<b>
+010600000001000000010300000001000000360000008D1E852BA3AB5041878FC28535605441EDCE8930A8AB50413ABD9E0F36605441F9DFE73EA8AB5041E3542911366054418FC2F5C8B3AB5041767A144E37605441E1B7A1CAB3AB5041CC9FA70D376054418FC7C3CEB3AB5041C0925F6E3660544191B415D0B3AB5041AD6E803B3660544112AE47D1B3AB504122A4700D3660544145A0F85E9EAB5041161594C033605441BBEA71AE9CAB5041A41E30923360544152B81E5582AB5041EC51B8BE3060544184BDC5FD7EAB504136270A12306054413485EBB17BAB5041E614AE672F605441095C8F7276AB504176D7A3102D60544145EB51F86FAB5041059A99E928605441928FC22567AB50412C7B143E22605441563A4ABD65AB5041F1DBCAE620605441A4703D2A62AB5041F6285C7F1D6054410398AE6060AB5041C951A54E1B6054416CCCCC8C5EAB5041F4AD4711196054410ED73C3E58AB5041677B5E800D6054417B14AEE756AB5041C3F5280C0B605441AE501CC456AB504132842B1A0B60544148E17A7454AB5041333333030C605441B6FDE1B44CAB5041943AB9F00D605441123C32534CAB5041A7272A290E6054419326541548AB50410E29E9C41060544100B208E947AB50419FAD24EC10605441AC6CA38149AB5041BF98AFD8106054416F9AA3574CAB5041FDB6AFBC1260544112C9A32D4FAB5041D9C766FA156054415962ED5556AB50415B43678A1D605441C62683EA59AB5041FD3C7AA9206054416DDD369A5BAB50411645D521226054418B29857C5EAB5041F14E7A7024605441176BD3FF5FAB50417B8352A625605441081CEEAD61AB5041F5DD67FE26605441171F139168AB5041C976FADA2B6054416A20CADC6AAB5041550ED66B2E60544182F3379E6CAB5041C45A1FDA3060544121AA131371AB50416FB5B1EE3160544175ABCA5E73AB50416FB5B1EE316054415280A6B779AB50419F1F44F5336054410BCEA6717EAB504148C6682C3560544191ED5DA182AB504108E4B1C4346054411C85393285AB504116981FA234605441F61DCC0E8AAB5041D589D6FB35605441E4D55ECF90AB5041BAC61F78376054414516847A9BAB504175C88D0F3C6054417B08F21F9FAB5041212320243D605441724628F2A0AB50411959FE4F3F605441B61B7720A2AB5041669F491D3A6054419DA87EADA2AB5041D43180B0376054418D1E852BA3AB5041878FC28535605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583948 - 69345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -125  </desc>
+<a>
+01060000000100000001030000000100000015000000023F275C16E050419B8D01B97EEA5441E85A37DC16E050413D9FF4D87AEA54411CCB67EC16E05041C0C840E078EA5441E45D920B17E050418132ECE677EA5441D8CC7C5917E05041109758A675EA5441873D7C1418E050418618B18271EA5441713D0AE71AE050411F85EB7163EA5441F6285C4F21E0504148E17A0461EA54410000008029E05041E17A145E5DEA5441295C8FB223E05041295C8F5258EA5441D7A3704D20E05041EC51B85E55EA5441713D0A1718E0504185EB51D85AEA54419A9999D90FE050419A99996960EA54411F85EB210DE05041F6285C3F62EA54418FC2F59813E050413333332368EA5441A4703D3A10E0504185EB51287BEA54411F85EB7110E050418FC2F5387DEA54417A8AD16711E05041767A147C7DEA54417301164C12E05041699292807DEA5441BE2880F712E050415D017DCE7DEA5441023F275C16E050419B8D01B97EEA5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000000000008029E05041E17A145E5DEA5441F6285C4F21E0504148E17A0461EA54410840096F1BE050411B71723E63EA544128F1B71C1BE050410D3BCAF363EA5441CC25F69C18E05041B907F8CD70EA544103147AB817E050417C34C99F75EA5441D54E9E3E17E050411CF1013E78EA5441F61087B516E05041DEB02DDF7BEA5441A4703D5A16E050415C8FC2D57EEA54413D0AD74319E05041C3F5289C7FEA544185EB519824E050418FC2F54882EA5441295C8F422FE050411F85EB7185EA5441E5EAD73F30E05041DF42E5E285EA5441E263280532E05041EC8A78407EEA5441272CF78133E05041719E7BCD75EA544150BEE48334E0504164DAF9C56DEA544106C7878E34E050419639CA696DEA544122A042C734E0504134497D0B6BEA5441BAE53C1D35E050415C99E64265EA5441AE47E16A34E050418FC2F5C864EA5441A4703D8A33E050415C8FC23564EA54413D0AD7832EE0504114AE47F160EA54410000008029E05041E17A145E5DEA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583948 - 1536298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -125  </desc>
+<a>
+01060000000100000001030000000100000015000000023F275C16E050419B8D01B97EEA5441E85A37DC16E050413D9FF4D87AEA54411CCB67EC16E05041C0C840E078EA5441E45D920B17E050418132ECE677EA5441D8CC7C5917E05041109758A675EA5441873D7C1418E050418618B18271EA5441713D0AE71AE050411F85EB7163EA5441F6285C4F21E0504148E17A0461EA54410000008029E05041E17A145E5DEA5441295C8FB223E05041295C8F5258EA5441D7A3704D20E05041EC51B85E55EA5441713D0A1718E0504185EB51D85AEA54419A9999D90FE050419A99996960EA54411F85EB210DE05041F6285C3F62EA54418FC2F59813E050413333332368EA5441A4703D3A10E0504185EB51287BEA54411F85EB7110E050418FC2F5387DEA54417A8AD16711E05041767A147C7DEA54417301164C12E05041699292807DEA5441BE2880F712E050415D017DCE7DEA5441023F275C16E050419B8D01B97EEA5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000000000008029E05041E17A145E5DEA5441F6285C4F21E0504148E17A0461EA54410540096F1BE050411671723E63EA544128F1B71C1BE050410D3BCAF363EA5441CC25F69C18E05041B907F8CD70EA544103147AB817E050417C34C99F75EA5441D54E9E3E17E050411CF1013E78EA5441F61087B516E05041DEB02DDF7BEA5441A4703D5A16E050415C8FC2D57EEA54413D0AD74319E05041C3F5289C7FEA544185EB519824E050418FC2F54882EA5441295C8F422FE050411F85EB7185EA5441E3EAD73F30E05041DB42E5E285EA5441E263280532E05041EC8A78407EEA5441272CF78133E05041719E7BCD75EA544150BEE48334E0504162DAF9C56DEA544109C7878E34E050419539CA696DEA544123A042C734E0504137497D0B6BEA5441BAE53C1D35E050415C99E64265EA5441AE47E16A34E050418FC2F5C864EA5441A4703D8A33E050415C8FC23564EA54413D0AD7832EE0504114AE47F160EA54410000008029E05041E17A145E5DEA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198514 - 396603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -53  </desc>
+<a>
+01060000000100000001030000000100000039000000295C8F4290F350419A9999B99A0B55418FC2F56893F35041333333C39C0B5541A4703DBA95F350419A9999699D0B554114AE47319BF35041B81E85AB9C0B55411F85EB31A0F350417B14AE479B0B5541000000B0A2F35041CDCCCC3C990B554114AE4771A8F35041CDCCCC1C970B5541A4703D5AADF350419A999989950B5541CDCCCCCCABF350419A999999960B5541F6285CAFA5F35041B81E853B9B0B5541B81E850BA0F3504148E17AD49E0B55417B14AE5799F3504148E17A24A20B5541D7A3705D96F35041F6285C3FA40B5541E17A149E92F35041CDCCCCCCA50B5541E17A14FE92F35041000000C0A60B554114AE47F192F3504100000070A70B55410AD7A3A092F35041A4703DEAA70B554114AE47F191F350418FC2F5A8A80B554148E17A348FF35041D7A3700DAB0B55411F85EB0193F35041AE47E14AAF0B5541000000409EF350411F85EB31AA0B55417B14AE579EF35041713D0A37AB0B55416666668699F3504133333303AF0B5541EC51B86E99F35041C3F5286CB10B554148E17A449AF3504114AE47F1B40B55418FC2F5B89AF3504100000010B90B554114AE47319BF35041000000B0BA0B5541333333A39AF3504114AE47D1BC0B5541000000D096F35041295C8F52C50B5541EC51B8BE94F35041F6285C6FC90B5541295C8F3295F35041D7A370CDC90B55419A9999F996F35041B81E852BCB0B55419A9999599FF3504133333333C40B554114AE47E1A2F35041AE47E12AC10B554114AE4791A6F35041AE47E14ABE0B5541713D0AE7A7F35041A4703DBABC0B5541295C8F82A8F3504148E17A44BB0B55410AD7A3E0A7F35041713D0AE7B50B5541AE47E1AAA8F35041A4703DCAAF0B5541295C8FB2AAF3504166666646A90B55411F85EBC1AEF350413D0AD7739B0B554166666626B1F35041AE47E1AA970B55415C8FC205B4F3504152B81E55940B55410AD7A3B0B5F3504185EB51B8900B554133333373B7F350415C8FC2458C0B5541295C8FA2B7F3504185EB51A8880B55410AD7A370B6F35041F6285C5F880B55417B14AE07AFF35041000000908C0B55411F85EB91A9F35041B81E856B8F0B5541713D0A07A4F35041EC51B8EE910B5541F6285C1FA0F35041EC51B86E930B5541000000009CF350417B14AE67940B5541C3F528AC98F350413D0AD7F3940B5541B81E852B92F350415C8FC275950B5541295C8F928EF3504185EB5188950B55415C8FC2758BF3504185EB5158970B5541295C8F4290F350419A9999B99A0B5541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000000000409EF350411F85EB31AA0B55417A7FD14B9EF350418B1C7976AA0B5541B0A04FFCA2F35041A14E537FA80B554116BA5592A6F350418FEF0DEBA50B554198FFE9F6AAF3504142D2CBC7A10B55415F7636A4ADF350418517B1929E0B554114AE4799AEF3504183C0CA019B0B5541FE14C38BAFF35041B33B0BDC980B55418D2F96BDB2F35041242138AA950B5541A0B371EDB4F35041C131E658920B5541A0B371ADB5F35041D5DF2DBA900B5541B106983DB3F350413E9741FA910B5541FB941525B2F3504135F70A98920B5541428C9370AFF350416FDC1A57940B554196DCCD5CADF350410613618D950B5541DDBD48D1ABF3504123984C9F960B55411BC81F55ABF35041D2DF2DFA960B55411B2FDDC4A4F3504108AC1C1A9D0B5541068195D39EF3504191ED7C2FA10B5541022B87F69AF350412DB29DF7A20B5541EE7C3FA597F35041BC7493E8A40B55415EBA490495F35041190456DEA50B55414A4826F392F3504196374B56A70B55417A7809F392F350410B61D757A70B55411AFADBF292F35041B4EA485AA70B5541BFA4A3F292F3504154804F5DA70B55414F24AFF792F3504149CB7F72A70B55411CF17BA492F35041E36419ECA70B5541E9BD48F191F350410BC1A8AEA80B55410DD894368FF35041F77FC80FAB0B55412340AE368FF3504162D4E40FAB0B5541F14316378FF35041DFCF5810AB0B554138E0B6388FF350411F5B2912AB0B5541EE1C9B3D8FF350419CAB9D17AB0B554178D3AD4292F3504115F1AB4FAE0B554160E5D06A92F350413F355E82AE0B554152B81E7D94F35041C1CAA13DAE0B55415A643B079AF3504154E3A5EBAB0B55416DEBFD779BF35041DE092A71AB0B554136F2ED3B9EF350415527172EAA0B55413E3EAA3C9EF35041F39F6E33AA0B5541000000409EF350411F85EB31AA0B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43678 - 1525387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -57  </desc>
+<a>
+010600000001000000010300000001000000090000003D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441D7A370ADF1D850419A99995933FF54417B14AE1702D95041000000502DFF54413D0AD78303D9504152B81E2526FF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000EC51B8BEF1D85041CDCCCCCC35FF544114C226AFF1D85041A9891FA233FF5441946B14AFF1D85041F270169F33FF5441FE9514F9F6D850413881FD6631FF5441537E0A2102D9504196ED3FB22CFF54413D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43678 - 3202647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -57  </desc>
+<a>
+010600000001000000010300000001000000090000003D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441D7A370ADF1D850419A99995933FF54417B14AE1702D95041000000502DFF54413D0AD78303D9504152B81E2526FF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000EC51B8BEF1D85041CDCCCCCC35FF544114C226AFF1D85041A9891FA233FF5441946B14AFF1D85041F270169F33FF5441FE9514F9F6D850413881FD6631FF5441537E0A2102D9504196ED3FB22CFF54413D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46604 - 1530156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+01060000000100000001030000000100000008000000AE47E18A3AD35041F6285CDF1C095541C3F528DC33D350415C8FC2F5360955411F85EB415AD3504185EB51E8310955419A99995960D350419A9999891C09554185EB519866D3504114AE47A1060955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541AE47E18A3AD35041F6285CDF1C095541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EFCCC5BB59D35041808FA0820E095541DDC2306B5AD3504191EC53EB090955415D8FC26D5AD3504107AC1CDA09095541DCF97EB25AD350418B6CE70B09095541DCF97EB25AD3504160C2B5C207095541075AB7B35AD3504114D940B9070955414B0CB8B35AD3504156967FB807095541663B1FB85AD3504171C61B97070955411ED402C55AD35041DFE6373307095541DD2F0B535AD35041AE16103907095541FACA1DCA59D35041F671653F0709554185DD45CC59D3504184FCBC31070955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541AE47E18A3AD35041F6285CDF1C095541C3F528DC33D350415C8FC2F5360955411F85EB415AD3504185EB51E8310955419A99995960D350419A9999891C0955410CEA4C3A63D350419707407112095541E5DBBEB659D35041BFAB59B811095541950D19A059D35041F084A1B6110955418412439C59D3504192EFFDB511095541B7F3FD2C59D350416ABC74A3110955410BD7A38859D35041C64B37D90F095541EFCCC5BB59D35041808FA0820E095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46604 - 3485440
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+01060000000100000001030000000100000008000000AE47E18A3AD35041F6285CDF1C095541C3F528DC33D350415C8FC2F5360955411F85EB415AD3504185EB51E8310955419A99995960D350419A9999891C09554185EB519866D3504114AE47A1060955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541AE47E18A3AD35041F6285CDF1C095541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EFCCC5BB59D35041808FA0820E095541DDC2306B5AD3504191EC53EB090955415D8FC26D5AD3504107AC1CDA09095541DCF97EB25AD350418B6CE70B09095541DCF97EB25AD3504160C2B5C207095541075AB7B35AD3504114D940B9070955414B0CB8B35AD3504156967FB807095541663B1FB85AD3504171C61B97070955411ED402C55AD35041DFE6373307095541DD2F0B535AD35041AE16103907095541FACA1DCA59D35041F671653F0709554185DD45CC59D3504184FCBC31070955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541AE47E18A3AD35041F6285CDF1C095541C3F528DC33D350415C8FC2F5360955411F85EB415AD3504185EB51E8310955419A99995960D350419A9999891C0955410CEA4C3A63D350419707407112095541E5DBBEB659D35041BFAB59B811095541950D19A059D35041F084A1B6110955418412439C59D3504192EFFDB511095541B7F3FD2C59D350416ABC74A3110955410BD7A38859D35041C64B37D90F095541EFCCC5BB59D35041808FA0820E095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55231 - 2909492
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001E000000713D0AB7276051410AD7A300849154413D0AD7332660514114AE47B181915441713D0A772260514185EB51587A9154410AD7A3C00F6051419A9999A9539154415C8FC2F50D60514185EB51985291544166666646ED5F51417B14AE2754915441D7A370CDA35F51419A9999A957915441F6285C1F7D5F5141295C8F8259915441E17A143E7C5F51413D0AD7C35A915441713D0AA7805F514100000010699154411F85EBD1825F5141B81E85DB73915441713D0A97835F51418FC2F5A87C915441E17A147E835F5141E17A14BE8491544100000050825F5141B81E85CB8C915441F6285C8F805F5141713D0AE794915441D7A3708D7F5F514114AE47B198915441295C8F42905F51411F85EBB199915441D7A3705DAE5F51415C8FC215969154411F85EB61D55F514185EB516891915441713D0AC7DA5F51417B14AE079091544100000080F15F5141B81E853B8A9154410AD7A3900260514185EB51A882915441EC51B88E036051417B14AE37829154413D0AD7230A6051411F85EBD18F91544148E17A740B605141E17A143E909154413D0AD7C30F60514148E17AE48D915441AE47E12A14605141EC51B89E8B915441CDCCCC6C196051417B14AEE788915441295C8FA21C6051416666667687915441713D0AB7276051410AD7A30084915441
+</a>
+
+<b>
+010600000001000000010300000001000000E2000000D7A3705DAE5F51415C8FC21596915441BC6BD892AE5F5141E78E5B0F96915441DF119DAEB05F5141CE2BA6CE95915441AA405093B25F514175D18A9495915441A2C9CF47B45F5141A3C436609591544165C14623B65F51418DD73627959154418F6D59DFB85F5141FFBA49D394915441026A647EB95F514173BB38C094915441607524DDBC5F5141FE15CB5894915441805C2843BF5F5141BB112F0F949154413CD01630C25F5141B17F66B59391544196D6F626C55F514181C26C5A93915441B7031A3FC85F5141D03476FB9291544102774781CA5F5141E10A26B692915441F5B4C71BCB5F5141B76FA0A39291544141A499EDCB5F5141D018798A9291544126579079CC5F514126A3B17992915441F9143E31CE5F514182FAFB449291544181ED1E2ED05F51417898FA079291544132DB1DC2D25F51419671DBB8919154410E89792DD35F514176A4FCAB91915441C4780D15D55F514140F78871919154415D4B2B65D55F51413B8B7D67919154417A292581D65F51415DABFB1E919154416B77992CD75F5141E2B034F39091544180417996D75F5141A84E2CD8909154416FCAA434DA5F5141F3280F2D90915441CCAB8495DA5F5141FA07531490915441E325ACF0DC5F5141939A6C7A8F915441B9E3EA0CDE5F51410DA3E6318F915441E554DB94DF5F51411770E6CD8E9154415B600F6EE05F51413D6C7B968E915441DA8E8AFDE15F5141A49B8E308E915441BF3B85B0E25F51416344E4028E915441D1E977A7E55F5141563F40418D9154416BA400C4E85F5141453905768C91544175A654F2EB5F51412AF33FA68B9154415FCD6254EC5F5141FC4B3B8D8B91544150185626EF5F514145D707D58A91544198D84280EF5F51417B3E16BE8A9154413BDCB57EF15F5141645AD93B8A9154418D4AC505F25F514177F123008A9154414EDB9874F25F51417C0FF2CE89915441F0513FE6F45F5141AD9B39B9889154414747C942F55F51414ED92590889154416731882CF85F514101361E45879154416B3F615EFB5F5141C12B15DA8591544168BE356FFE5F51414125B47D849154413C299BFD00605141A51E395B839154416EAA268D0360514160B26F3482915441309D14780360514120FDDF08829154419C41726303605141C73237DE819154415C62FE92026051413948422F80915441DBD9BA7401605141A64A6FDF7D915441812F9A8800605141D73643F77B915441BE9536A0FF5F5141F4C7D1167A915441264297B5FE5F51413A5BC23178915441D533CCABFD5F51419C92410C7691544194BD258EFC5F51410450B3BD739154417AA292ACFB5F51414E7658EB719154410F30CAB3FA5F5141F06E02E96F915441E561239FF95F5141C1C50EAD6D91544126C460EFF85F5141B186B0416C9154413D46FBCAF75F5141F32338E569915441FA30B1AEF65F5141D090989967915441C568E9AFF55F5141EDA7F78A659154417BB01AAEF45F514130F5147663915441A1474EB3F35F5141AB14AF6F619154413C4FBCCFF25F51415A6F4C995F915441C61682F6F15F514147A94AD85D9154417D5F390DF15F5141E38818F65B9154419BBB29FFEF5F51417BDAE1C7599154411E32A5EFEE5F5141D065A89657915441BE075CE6ED5F5141198F5072559154416A60B546ED5F5141EE5251285491544135EDA2DEEC5F51413831A22C54915441D96AA23EEC5F51419F9A45345491544141FF73D4EB5F5141A94357395491544173DB5B79E95F514167C8215654915441491C078AE75F5141F44EC76D54915441E7EAC115E55F5141CA81C58B5491544139F9A722E35F5141261C99A35491544189540176E25F51415A1BD7AB54915441F2B49BB9DF5F51412FC746CD549154417AC07E6CDF5F5141C430F5D05491544148FF494FDA5F5141D238750F55915441FE82DBFAD65F51412DEF263855915441882376CBD35F51413E07145F55915441A56A5A6BD05F51419271548855915441D10DC319CF5F5141453472985591544192A26193CC5F51413FBB4DB7559154417A92ACD4C95F51412AA3D9D855915441C1131F0EC75F51417B6CC5FA5591544190CC592BC45F5141E6100A1E569154413B0AA57EC15F5141ECF9B93E569154415471E324BF5F51416A24745B5691544124C5933ABC5F514188F0147F569154413E66B936B95F514128E3EDA3569154411EEDAA9FB65F5141F43695C356915441AA8E6AA3B35F5141294311E85691544193AF9DF5B05F5141898BCE0857915441455C88ECAD5F5141BC69E72D57915441C45B67F9AA5F51410CF9F35157915441FB38A0F9A75F51411E1E9B765791544183AFBDB7A45F5141F72A6A9E579154416031150FA15F5141A4AD25CB57915441452C85F59D5F51418CF80CF157915441F81F76319B5F5141DBC3DE1258915441C0CA2370985F514135178F3458915441B11BD5B2955F5141ED540E5658915441CF06ACC7925F5141093EBE795891544101EB67B58F5F514107514C9F589154416B95E6EA8C5F514142EF6CC15891544107B173278A5F5141264537E358915441C76F0278875F514139FA0C04599154413905DE05855F51410223F52159915441D37D4886825F514101A8814059915441F5DFBBAD7F5F514188FF4D63599154417A6F6D1E7D5F514154D0E38359915441FC1343EB7C5F514188DBDBCC59915441BC0D85BB7C5F51418621F2105A915441117BB67E7C5F5141D42FAA675A915441AF087C467C5F514177A1DAB75A915441DD923F407C5F514165B0DECA5A91544146CCB0557C5F5141361A63105B9154419DC1FC6E7C5F5141109266625B9154419BB9B6067D5F514101B34E4E5D9154413D36B83B7D5F514169D627FA5D915441913EF5C97D5F51415A334DC75F91544185BD01F47D5F51414961A04F60915441283BC54B7E5F51416669296C61915441E120A58F7E5F5141872C374862915441E2F916297F5F5141126BB139649154411067F45E7F5F5141419D53E8649154414F2E5BEF7F5F5141C5417CBC66915441D6BF929E805F514186DB8CF468915441777E97BB805F5141BA1B5B766991544138C2DED6805F5141518136FE699154413A0B541E815F5141233D1A626B9154411946CF34815F51418C8A11D26B9154418B847E93815F51414A7BA2A96D915441F78716ED815F514174D2D8676F9154410FB35B44825F51411A9A7C1A71915441C8B80195825F5141CAE325AC72915441311937B6825F51412B148A51739154418C9842C3825F5141FA15829273915441CA8999D0825F51419DD6F1D4739154415CC6EEDA825F51419F3C8D4274915441876EF2E0825F514106514E877491544143573FE8825F51412458C3DA74915441074592ED825F51411A19A01775915441D59FF1F1825F5141965B9C4975915441300BD41C835F5141FBA6DB33779154414BC1C129835F514196ABA7C777915441D05A3658835F5141F8B4B9DA799154419C6F805F835F5141D9680E2E7A915441E9701F7F835F514128098B977B915441FD7DED88835F51419B7BA1077C91544128F3CB96835F51416AAB2DA67C91544193D8BB96835F5141906A58C27C915441CF6B4996835F5141D7F165E77C91544116B73895835F51413093B43F7D915441A76F5F94835F5141BF7210867D915441DF036E8D835F51418217A0C57F9154412BBC8F8C835F5141138C9A0D80915441FE4A2188835F514174E1F47C819154411FB03E86835F514132983B1982915441D1355D80835F514108D8BB0084915441E3FA377F835F514136DFAF5F84915441F7AEE27D835F5141A54C68BF84915441D9AB1776835F5141119196F4849154419F81686D835F51417EC8D92F85915441F1820631835F51416B7FE9CB869154410919271D835F51411DC98653879154410184F0E4825F5141015022D38891544153307ACB825F5141A45EE48089915441539E4E77825F5141B64648BF8B915441FFD3C769825F514106E3961B8C915441A8998552825F514139724FBA8C91544120E9953A825F51414BA0962E8D91544143BB541E825F5141C71B4DB18D91544113B5360B825F51413814BE098E915441ADFD1BF0815F5141BD4D22878E915441AE5DA2D9815F514131001CEF8E9154417839F64E815F51418477A470919154416DBC4537815F5141B64B3CDE91915441837A44EC805F51412E143A39939154419D3F54AE805F514148EFC457949154412F0A2B8E805F51417A0986EB94915441E4FDD16D805F51418992356595915441F09C1653805F514125E7C4C995915441B77B3BEA7F5F51417307375497915441C3B605CD7F5F51412BCD18C297915441B46164A27F5F5141D96C766298915441A0A425947F5F51414FAE0C9898915441D7A3708D7F5F514114AE47B19891544149008AB27F5F5141D28C81B398915441BBCD5FB27F5F51418FC1ADB298915441A86A4A5D805F5141036DC0BD98915441124BD47F805F514103F7D2BF98915441AC39A296825F514175F8E9DF98915441A49FD971845F514190A86DFC98915441884DB954865F51411EF8661999915441769BAF94875F514126D5992C99915441D6841DF0885F51410B9D724199915441199FF6208B5F514158AB196399915441694BAC308B5F514153FB0A6499915441C3D3C0C28E5F514139F4E39A99915441FD5559B98F5F514179DAAFA9999154414CF5AC43905F5141DA45C9B199915441D0FDCBD5905F5141D7A843A09991544139E15489915F51418152BC8A999154411C5FDCAB935F5141D306334999915441DAA25629945F51410C21273A999154415EC7CA13955F514148E5091E999154410975B2E0975F5141AB6C12C89891544132E15B7A985F5141C354A5B5989154416ADAEA2F995F514152DEDF9F98915441CD4FC2A79B5F5141B9A91B5498915441016067939C5F514181DDD937989154412C2585CD9D5F514164282F129891544191C45865A35F514188197D6697915441190F8432A45F514145D7E24D97915441286B4E16A65F5141757EDF13979154418FE55B1BA85F51417E11DFD596915441D7A3705DAE5F51415C8FC21596915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55231 - 3206347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001E000000713D0AB7276051410AD7A300849154413D0AD7332660514114AE47B181915441713D0A772260514185EB51587A9154410AD7A3C00F6051419A9999A9539154415C8FC2F50D60514185EB51985291544166666646ED5F51417B14AE2754915441D7A370CDA35F51419A9999A957915441F6285C1F7D5F5141295C8F8259915441E17A143E7C5F51413D0AD7C35A915441713D0AA7805F514100000010699154411F85EBD1825F5141B81E85DB73915441713D0A97835F51418FC2F5A87C915441E17A147E835F5141E17A14BE8491544100000050825F5141B81E85CB8C915441F6285C8F805F5141713D0AE794915441D7A3708D7F5F514114AE47B198915441295C8F42905F51411F85EBB199915441D7A3705DAE5F51415C8FC215969154411F85EB61D55F514185EB516891915441713D0AC7DA5F51417B14AE079091544100000080F15F5141B81E853B8A9154410AD7A3900260514185EB51A882915441EC51B88E036051417B14AE37829154413D0AD7230A6051411F85EBD18F91544148E17A740B605141E17A143E909154413D0AD7C30F60514148E17AE48D915441AE47E12A14605141EC51B89E8B915441CDCCCC6C196051417B14AEE788915441295C8FA21C6051416666667687915441713D0AB7276051410AD7A30084915441
+</a>
+
+<b>
+010600000001000000010300000001000000E2000000D7A3705DAE5F51415C8FC21596915441BC6BD892AE5F5141E78E5B0F96915441DF119DAEB05F5141CE2BA6CE95915441AA405093B25F514175D18A9495915441A2C9CF47B45F5141A3C436609591544165C14623B65F51418DD73627959154418F6D59DFB85F5141FFBA49D394915441026A647EB95F514173BB38C094915441607524DDBC5F5141FE15CB5894915441805C2843BF5F5141BB112F0F949154413CD01630C25F5141B17F66B59391544196D6F626C55F514181C26C5A93915441B7031A3FC85F5141D03476FB9291544102774781CA5F5141E10A26B692915441F5B4C71BCB5F5141B76FA0A39291544141A499EDCB5F5141D018798A9291544126579079CC5F514126A3B17992915441F9143E31CE5F514182FAFB449291544181ED1E2ED05F51417898FA079291544132DB1DC2D25F51419671DBB8919154410E89792DD35F514176A4FCAB91915441C4780D15D55F514140F78871919154415D4B2B65D55F51413B8B7D67919154417A292581D65F51415DABFB1E919154416B77992CD75F5141E2B034F39091544180417996D75F5141A84E2CD8909154416FCAA434DA5F5141F3280F2D90915441CCAB8495DA5F5141FA07531490915441E325ACF0DC5F5141939A6C7A8F915441B9E3EA0CDE5F51410DA3E6318F915441E554DB94DF5F51411770E6CD8E9154415B600F6EE05F51413D6C7B968E915441DA8E8AFDE15F5141A49B8E308E915441BF3B85B0E25F51416344E4028E915441D1E977A7E55F5141563F40418D9154416BA400C4E85F5141453905768C91544175A654F2EB5F51412AF33FA68B9154415FCD6254EC5F5141FC4B3B8D8B91544150185626EF5F514145D707D58A91544198D84280EF5F51417B3E16BE8A9154413BDCB57EF15F5141645AD93B8A9154418D4AC505F25F514177F123008A9154414EDB9874F25F51417C0FF2CE89915441F0513FE6F45F5141AD9B39B9889154414747C942F55F51414ED92590889154416731882CF85F514101361E45879154416B3F615EFB5F5141C12B15DA8591544168BE356FFE5F51414125B47D849154413C299BFD00605141A51E395B839154416EAA268D0360514160B26F3482915441309D14780360514120FDDF08829154419C41726303605141C73237DE819154415C62FE92026051413948422F80915441DBD9BA7401605141A64A6FDF7D915441812F9A8800605141D73643F77B915441BE9536A0FF5F5141F4C7D1167A915441264297B5FE5F51413A5BC23178915441D533CCABFD5F51419C92410C7691544194BD258EFC5F51410450B3BD739154417AA292ACFB5F51414E7658EB719154410F30CAB3FA5F5141F06E02E96F915441E561239FF95F5141C1C50EAD6D91544126C460EFF85F5141B186B0416C9154413D46FBCAF75F5141F32338E569915441FA30B1AEF65F5141D090989967915441C568E9AFF55F5141EDA7F78A659154417BB01AAEF45F514130F5147663915441A1474EB3F35F5141AB14AF6F619154413C4FBCCFF25F51415A6F4C995F915441C61682F6F15F514147A94AD85D9154417D5F390DF15F5141E38818F65B9154419BBB29FFEF5F51417BDAE1C7599154411E32A5EFEE5F5141D065A89657915441BE075CE6ED5F5141198F5072559154416A60B546ED5F5141EE5251285491544135EDA2DEEC5F51413831A22C54915441D96AA23EEC5F51419F9A45345491544141FF73D4EB5F5141A94357395491544173DB5B79E95F514167C8215654915441491C078AE75F5141F44EC76D54915441E7EAC115E55F5141CA81C58B5491544139F9A722E35F5141261C99A35491544189540176E25F51415A1BD7AB54915441F2B49BB9DF5F51412FC746CD549154417AC07E6CDF5F5141C430F5D05491544148FF494FDA5F5141D238750F55915441FE82DBFAD65F51412DEF263855915441882376CBD35F51413E07145F55915441A56A5A6BD05F51419271548855915441D10DC319CF5F5141453472985591544192A26193CC5F51413FBB4DB7559154417A92ACD4C95F51412AA3D9D855915441C1131F0EC75F51417B6CC5FA5591544190CC592BC45F5141E6100A1E569154413B0AA57EC15F5141ECF9B93E569154415471E324BF5F51416A24745B5691544124C5933ABC5F514188F0147F569154413E66B936B95F514128E3EDA3569154411EEDAA9FB65F5141F43695C356915441AA8E6AA3B35F5141294311E85691544193AF9DF5B05F5141898BCE0857915441455C88ECAD5F5141BC69E72D57915441C45B67F9AA5F51410CF9F35157915441FB38A0F9A75F51411E1E9B765791544183AFBDB7A45F5141F72A6A9E579154416031150FA15F5141A4AD25CB57915441452C85F59D5F51418CF80CF157915441F81F76319B5F5141DBC3DE1258915441C0CA2370985F514135178F3458915441B11BD5B2955F5141ED540E5658915441CF06ACC7925F5141093EBE795891544101EB67B58F5F514107514C9F589154416B95E6EA8C5F514142EF6CC15891544107B173278A5F5141264537E358915441C76F0278875F514139FA0C04599154413905DE05855F51410223F52159915441D37D4886825F514101A8814059915441F5DFBBAD7F5F514188FF4D63599154417A6F6D1E7D5F514154D0E38359915441FC1343EB7C5F514188DBDBCC59915441BC0D85BB7C5F51418621F2105A915441117BB67E7C5F5141D42FAA675A915441AF087C467C5F514177A1DAB75A915441DD923F407C5F514165B0DECA5A91544146CCB0557C5F5141361A63105B9154419DC1FC6E7C5F5141109266625B9154419BB9B6067D5F514101B34E4E5D9154413D36B83B7D5F514169D627FA5D915441913EF5C97D5F51415A334DC75F91544185BD01F47D5F51414961A04F60915441283BC54B7E5F51416669296C61915441E120A58F7E5F5141872C374862915441E2F916297F5F5141126BB139649154411067F45E7F5F5141419D53E8649154414F2E5BEF7F5F5141C5417CBC66915441D6BF929E805F514186DB8CF468915441777E97BB805F5141BA1B5B766991544138C2DED6805F5141518136FE699154413A0B541E815F5141233D1A626B9154411946CF34815F51418C8A11D26B9154418B847E93815F51414A7BA2A96D915441F78716ED815F514174D2D8676F9154410FB35B44825F51411A9A7C1A71915441C8B80195825F5141CAE325AC72915441311937B6825F51412B148A51739154418C9842C3825F5141FA15829273915441CA8999D0825F51419DD6F1D4739154415CC6EEDA825F51419F3C8D4274915441876EF2E0825F514106514E877491544143573FE8825F51412458C3DA74915441074592ED825F51411A19A01775915441D59FF1F1825F5141965B9C4975915441300BD41C835F5141FBA6DB33779154414BC1C129835F514196ABA7C777915441D05A3658835F5141F8B4B9DA799154419C6F805F835F5141D9680E2E7A915441E9701F7F835F514128098B977B915441FD7DED88835F51419B7BA1077C91544128F3CB96835F51416AAB2DA67C91544193D8BB96835F5141906A58C27C915441CF6B4996835F5141D7F165E77C91544116B73895835F51413093B43F7D915441A76F5F94835F5141BF7210867D915441DF036E8D835F51418217A0C57F9154412BBC8F8C835F5141138C9A0D80915441FE4A2188835F514174E1F47C819154411FB03E86835F514132983B1982915441D1355D80835F514108D8BB0084915441E3FA377F835F514136DFAF5F84915441F7AEE27D835F5141A54C68BF84915441D9AB1776835F5141119196F4849154419F81686D835F51417EC8D92F85915441F1820631835F51416B7FE9CB869154410919271D835F51411DC98653879154410184F0E4825F5141015022D38891544153307ACB825F5141A45EE48089915441539E4E77825F5141B64648BF8B915441FFD3C769825F514106E3961B8C915441A8998552825F514139724FBA8C91544120E9953A825F51414BA0962E8D91544143BB541E825F5141C71B4DB18D91544113B5360B825F51413814BE098E915441ADFD1BF0815F5141BD4D22878E915441AE5DA2D9815F514131001CEF8E9154417839F64E815F51418477A470919154416DBC4537815F5141B64B3CDE91915441837A44EC805F51412E143A39939154419D3F54AE805F514148EFC457949154412F0A2B8E805F51417A0986EB94915441E4FDD16D805F51418992356595915441F09C1653805F514125E7C4C995915441B77B3BEA7F5F51417307375497915441C3B605CD7F5F51412BCD18C297915441B46164A27F5F5141D96C766298915441A0A425947F5F51414FAE0C9898915441D7A3708D7F5F514114AE47B19891544149008AB27F5F5141D28C81B398915441BBCD5FB27F5F51418FC1ADB298915441A86A4A5D805F5141036DC0BD98915441124BD47F805F514103F7D2BF98915441AC39A296825F514175F8E9DF98915441A49FD971845F514190A86DFC98915441884DB954865F51411EF8661999915441769BAF94875F514126D5992C99915441D6841DF0885F51410B9D724199915441199FF6208B5F514158AB196399915441694BAC308B5F514153FB0A6499915441C3D3C0C28E5F514139F4E39A99915441FD5559B98F5F514179DAAFA9999154414CF5AC43905F5141DA45C9B199915441D0FDCBD5905F5141D7A843A09991544139E15489915F51418152BC8A999154411C5FDCAB935F5141D306334999915441DAA25629945F51410C21273A999154415EC7CA13955F514148E5091E999154410975B2E0975F5141AB6C12C89891544132E15B7A985F5141C354A5B5989154416ADAEA2F995F514152DEDF9F98915441CD4FC2A79B5F5141B9A91B5498915441016067939C5F514181DDD937989154412C2585CD9D5F514164282F129891544191C45865A35F514188197D6697915441190F8432A45F514145D7E24D97915441286B4E16A65F5141757EDF13979154418FE55B1BA85F51417E11DFD596915441D7A3705DAE5F51415C8FC21596915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55357 - 5219097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000C000000000000C0105F5141E17A14AE539B5441713D0A372F5F5141E17A147E5F9B5441000000B0455F514148E17A44249B5441F6285C8F1B5F5141AE47E1FA0C9B54410AD7A3D01A5F5141666666E60C9B5441D7A370AD1A5F514148E17AE40D9B544114AE47D1195F5141AE47E1CA0C9B54410AD7A3900F5F5141000000B00B9B5441D7A3700D0B5F5141333333132F9B54418FC2F588065F5141B81E857B529B54411F85EB21105F5141C3F5289C539B5441000000C0105F5141E17A14AE539B5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000007C7B07392F5F51419166D6785F9B5441D733D3573A5F514177C1442A429B5441BBBBACAE455F5141C70EC849249B54412CEA1BC8325F5141D01D0ED1199B54412881895F1D5F5141048078FB0D9B5441A7D1A8C81A5F51411C4C01200D9B5441650FFCE4165F5141AFD23A7A0C9B54410AD7A3900F5F5141000000B00B9B5441CDCCCCBC015F5141295C8F320A9B5441D7A3708DF15E51413D0AD773089B5441333333F3EA5E5141E17A14BE079B544148E17AD4D85E5141B81E85CB059B544152B81EB5D75E5141E17A14AE069B5441CDCCCC5CD35E5141E17A14BE289B54413D0AD703CF5E5141E17A14CE4A9B54411F85EBE1CF5E5141B81E85EB4B9B5441713D0AF7E15E5141B81E852B4E9B5441D7A3703DE45E51413D0AD7734E9B544185EB51B8F85E5141C3F528DC509B54418FC2F588065F5141B81E857B529B54419633CC89065F5141E85BF474529B5441A545A0DA0F5F5141A5D4C893539B5441403A2B5E115F5141BC8C68EB539B54416BF1A9D6215F514106F24F4E5A9B54417C7B07392F5F51419166D6785F9B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58233 - 1838748
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -107  </desc>
+<a>
+010600000001000000010300000001000000230000001F85EB515EB0504152B81E25D44E5441AE47E19A63B0504148E17A94D54E5441F6285C5F61B05041295C8F22D04E54418FC2F5585EB050418FC2F508D14E54410AD7A3005EB0504133333373CE4E5441F6285CCF61B050411F85EB21CE4E5441D7A3706D6AB050410AD7A390C94E54415C8FC26573B050417B14AE07C94E54413D0AD7F376B05041E17A141EC94E54413D0AD7D377B05041E17A14BEBC4E54419A9999F95FB050413D0AD773B84E5441E17A141E5DB0504152B81EA5B74E5441A4703D1A5CB0504166666626BC4E5441A4703D3A54B050418FC2F528BB4E5441333333B351B0504148E17AE4C14E5441AE47E12A51B050413D0AD793D04E54413D0AD7C350B05041B81E854BD14E5441E17A143E50B050411F85EB31D24E544152B81EA548B0504100000090C94E5441E17A14BE47B0504166666666C94E5441333333E343B05041F6285C9FCE4E54413D0AD7233FB0504114AE47F1D54E5441B81E85FB39B05041A4703D2ADE4E54410AD7A3E032B0504148E17A84E74E54415C8FC2B52EB050417B14AE57EE4E54417B14AEC72CB05041EC51B8BEF54E544185EB513831B05041AE47E1DAFB4E5441333333933CB05041AE47E13A004F5441C3F5286C56B05041C3F5284CF04E54411F85EB2162B050411F85EBB1E04E5441295C8F8263B05041EC51B8CED84E54418FC2F5B862B05041B81E858BD74E544185EB51D85DB050411F85EB21D64E5441666666065EB0504166666616D54E54411F85EB515EB0504152B81E25D44E5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000002E7F09E861B05041F42C0BFFE04E54415BA8E4EB61B05041D9DFE7F9E04E5441DCD5D0F461B050416A3A51A6DE4E5441BED36C9562B050410E46F732DB4E5441B8D6314762B0504121357CC0D84E54412A8EF3F260B0504141950A08D74E544185EB51D85DB050411F85EB21D64E54418881FFD85DB05041C8C1FB1DD64E5441097D97AE59B05041BCC02725D54E54413A6918E555B05041A3A3523ED44E5441EF11993053B0504132EB598DD34E5441105A44AA50B050419258E8B5D24E5441E8707E4350B05041FB379828D24E5441E17A143E50B050411F85EB31D24E544152B81EA548B0504100000090C94E5441E17A14BE47B0504166666666C94E5441333333E343B05041F6285C9FCE4E54413D0AD7233FB0504114AE47F1D54E5441B81E85FB39B05041A4703D2ADE4E54410AD7A3E032B0504148E17A84E74E54415C8FC2B52EB050417B14AE57EE4E54417B14AEC72CB05041EC51B8BEF54E544185EB513831B05041AE47E1DAFB4E5441333333933CB05041AE47E13A004F5441C3F5286C56B05041C3F5284CF04E54416111EA7559B0504196AEDF3FEC4E544185EB51685AB0504185EB51A8EC4E54418FC2F5A87DB050417B14AE47FB4E5441E17A145E8AB05041295C8F42FF4E5441D7A3703D8CB05041A4703D2AFF4E5441666666A692B050417B14AE67FC4E5441D7A3707D98B050418FC2F5A8F94E54413D0AD7439CB05041AE47E15AF74E5441AE47E11AA5B050411F85EB91EF4E54418FC2F578AAB05041666666F6EB4E54415C8FC225A0B05041B81E850BEC4E54410AD7A38098B050417B14AE47EC4E544185EB51188CB05041C3F528BCEF4E5441B81E853B89B05041EC51B80EF04E54411F85EB4185B050418FC2F578EF4E54413D0AD7937FB05041B81E85FBEC4E54418C017A227BB05041EF761B65EA4E5441676C1BF178B050410D68F356E94E54417FC062AF6EB050417AD6C173E54E544122FC14F663B05041DDAFF2A3E24E54419E2A5A2A62B0504149DA21E4E14E54412E7F09E861B05041F42C0BFFE04E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58233 - 3816459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -107  </desc>
+<a>
+010600000001000000010300000001000000230000001F85EB515EB0504152B81E25D44E5441AE47E19A63B0504148E17A94D54E5441F6285C5F61B05041295C8F22D04E54418FC2F5585EB050418FC2F508D14E54410AD7A3005EB0504133333373CE4E5441F6285CCF61B050411F85EB21CE4E5441D7A3706D6AB050410AD7A390C94E54415C8FC26573B050417B14AE07C94E54413D0AD7F376B05041E17A141EC94E54413D0AD7D377B05041E17A14BEBC4E54419A9999F95FB050413D0AD773B84E5441E17A141E5DB0504152B81EA5B74E5441A4703D1A5CB0504166666626BC4E5441A4703D3A54B050418FC2F528BB4E5441333333B351B0504148E17AE4C14E5441AE47E12A51B050413D0AD793D04E54413D0AD7C350B05041B81E854BD14E5441E17A143E50B050411F85EB31D24E544152B81EA548B0504100000090C94E5441E17A14BE47B0504166666666C94E5441333333E343B05041F6285C9FCE4E54413D0AD7233FB0504114AE47F1D54E5441B81E85FB39B05041A4703D2ADE4E54410AD7A3E032B0504148E17A84E74E54415C8FC2B52EB050417B14AE57EE4E54417B14AEC72CB05041EC51B8BEF54E544185EB513831B05041AE47E1DAFB4E5441333333933CB05041AE47E13A004F5441C3F5286C56B05041C3F5284CF04E54411F85EB2162B050411F85EBB1E04E5441295C8F8263B05041EC51B8CED84E54418FC2F5B862B05041B81E858BD74E544185EB51D85DB050411F85EB21D64E5441666666065EB0504166666616D54E54411F85EB515EB0504152B81E25D44E5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000002E7F09E861B05041F42C0BFFE04E54415BA8E4EB61B05041D9DFE7F9E04E5441DCD5D0F461B050416A3A51A6DE4E5441BED36C9562B050410E46F732DB4E5441B8D6314762B0504121357CC0D84E54412A8EF3F260B0504141950A08D74E544185EB51D85DB050411F85EB21D64E54418881FFD85DB05041C8C1FB1DD64E5441097D97AE59B05041BCC02725D54E54413A6918E555B05041A3A3523ED44E5441EF11993053B0504132EB598DD34E5441105A44AA50B050419258E8B5D24E5441E8707E4350B05041FB379828D24E5441E17A143E50B050411F85EB31D24E544152B81EA548B0504100000090C94E5441E17A14BE47B0504166666666C94E5441333333E343B05041F6285C9FCE4E54413D0AD7233FB0504114AE47F1D54E5441B81E85FB39B05041A4703D2ADE4E54410AD7A3E032B0504148E17A84E74E54415C8FC2B52EB050417B14AE57EE4E54417B14AEC72CB05041EC51B8BEF54E544185EB513831B05041AE47E1DAFB4E5441333333933CB05041AE47E13A004F5441C3F5286C56B05041C3F5284CF04E54416111EA7559B0504196AEDF3FEC4E544185EB51685AB0504185EB51A8EC4E54418FC2F5A87DB050417B14AE47FB4E5441E17A145E8AB05041295C8F42FF4E5441D7A3703D8CB05041A4703D2AFF4E5441666666A692B050417B14AE67FC4E5441D7A3707D98B050418FC2F5A8F94E54413D0AD7439CB05041AE47E15AF74E5441AE47E11AA5B050411F85EB91EF4E54418FC2F578AAB05041666666F6EB4E54415C8FC225A0B05041B81E850BEC4E54410AD7A38098B050417B14AE47EC4E544185EB51188CB05041C3F528BCEF4E5441B81E853B89B05041EC51B80EF04E54411F85EB4185B050418FC2F578EF4E54413D0AD7937FB05041B81E85FBEC4E54418C017A227BB05041EF761B65EA4E5441676C1BF178B050410D68F356E94E54417FC062AF6EB050417AD6C173E54E544122FC14F663B05041DDAFF2A3E24E54419E2A5A2A62B0504149DA21E4E14E54412E7F09E861B05041F42C0BFFE04E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58660 - 1840484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB513843AB5041E17A142E444D544185EB511846AB50418FC2F558744D5441000000E048AB50415C8FC235A24D5441D7A3702D4AAB50413D0AD763A34D5441A4703DAA71AB5041B81E85BBA14D54418FC2F56894AB504185EB5148A04D54419A99998995AB5041AE47E1FA9E4D5441D7A370DD90AB50415C8FC2656D4D544114AE47818FAB5041295C8FE25E4D5441A4703D0A8EAB50410AD7A3B05C4D5441666666D686AB5041EC51B8DE584D5441000000507CAB5041D7A370BD534D54411F85EBE169AB5041AE47E19A4B4D5441CDCCCCCC60AB50415C8FC275484D5441D7A370BD5AAB50418FC2F5A8464D54411F85EB6144AB504100000020434D544185EB513843AB5041E17A142E444D5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000A71ED91F46AB5041445B27D5744D544119D6804047AB50412A522F6F874D54416A8BEA3C94AB5041E5379630914D5441DA5FF0F492AB504188DD3C98834D5441A71ED91F46AB5041445B27D5744D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58660 - 3329596
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB513843AB5041E17A142E444D544185EB511846AB50418FC2F558744D5441000000E048AB50415C8FC235A24D5441D7A3702D4AAB50413D0AD763A34D5441A4703DAA71AB5041B81E85BBA14D54418FC2F56894AB504185EB5148A04D54419A99998995AB5041AE47E1FA9E4D5441D7A370DD90AB50415C8FC2656D4D544114AE47818FAB5041295C8FE25E4D5441A4703D0A8EAB50410AD7A3B05C4D5441666666D686AB5041EC51B8DE584D5441000000507CAB5041D7A370BD534D54411F85EBE169AB5041AE47E19A4B4D5441CDCCCCCC60AB50415C8FC275484D5441D7A370BD5AAB50418FC2F5A8464D54411F85EB6144AB504100000020434D544185EB513843AB5041E17A142E444D5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000A71ED91F46AB5041445B27D5744D544119D6804047AB50412A522F6F874D54416A8BEA3C94AB5041E5379630914D5441DA5FF0F492AB504188DD3C98834D5441A71ED91F46AB5041445B27D5744D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>60052 - 57799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000020000000103000000010000001C00000014AE47E1E9B450413333339338D95441333333F3E7B4504185EB514837D954410AD7A3E0E6B450417B14AEB735D954410AD7A300E5B45041CDCCCC7C35D9544114AE4781E0B450417B14AEE738D9544152B81EE5DEB450411F85EBC13CD954418FC2F5A8DBB450418FC2F5D840D95441CDCCCC1CD2B45041D7A3703D4AD9544114AE4711CCB45041713D0AB74FD95441CDCCCC5CC6B4504114AE473152D954415C8FC275C3B450411F85EB6154D95441AE47E15AC1B4504114AE479156D9544100000040BEB45041EC51B85E59D954413D0AD783B2B450413333339360D95441D7A3706DAFB4504148E17AA464D954418FC2F588AFB450410AD7A30066D954411F85EB41B0B45041E17A149E65D95441EC51B85EB3B4504148E17A8461D95441F6285CFFBEB450410AD7A3605AD95441AE47E10AC7B45041295C8F4253D95441EC51B8BECCB450418FC2F5C850D95441333333A3E6B4504185EB51183AD9544166666616F6B45041F6285C0F3DD954413D0AD733FEB4504185EB51983CD9544152B81E25FEB450418FC2F5583BD95441B81E852BF6B45041D7A370CD3BD954411F85EB31EEB450415C8FC2453AD9544114AE47E1E9B450413333339338D95441010300000001000000140000000AD7A3A05EB450418FC2F5486ED9544148E17A1467B450410AD7A3906ED954410000006069B45041F6285CFF6CD95441EC51B82E6FB45041A4703DBA63D95441AE47E13A7BB4504114AE47D162D95441C3F528EC79B45041A4703DBA61D954413333337374B450419A99993962D95441CDCCCCCC72B45041F6285C2F61D954419A99992970B4504152B81EF561D954415C8FC2756EB450416666668662D9544152B81EF56DB45041E17A140E64D95441C3F5280C6AB45041E17A149E6AD9544148E17A7468B45041CDCCCC1C6CD95441713D0AB766B45041CDCCCC4C6DD9544152B81E9564B4504152B81EF56CD95441CDCCCCCC62B45041EC51B8AE6AD9544148E17A3461B45041295C8F326AD95441B81E85EB5FB450411F85EBE16BD9544148E17A645EB45041E17A14FE6CD954410AD7A3A05EB450418FC2F5486ED95441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000003333337374B450419A99993962D954416737BA3F73B450416491CC7761D954414B3F157C71B45041993BFB9161D954419A99992970B4504152B81EF561D954415C8FC2756EB450416666668662D9544152B81EF56DB45041E17A140E64D95441C3F5280C6AB45041E17A149E6AD9544148E17A7468B45041CDCCCC1C6CD95441713D0AB766B45041CDCCCC4C6DD9544152B81E9564B4504152B81EF56CD95441CDCCCCCC62B45041EC51B8AE6AD9544148E17A3461B45041295C8F326AD95441B81E85EB5FB450411F85EBE16BD9544148E17A645EB45041E17A14FE6CD954410AD7A3A05EB450418FC2F5486ED9544140FE65AD62B4504194D04D6B6ED95441FC1F562367B45041E8327E866ED95441EB363C1868B45041D5B939DF6DD95441D9D9A02C69B45041127B72226DD9544166E1BA6469B450419D56CFF76CD95441BE6CE2606BB45041D210B0CC69D9544167FBF72D6FB45041257B8DB363D954412BA2CB9874B4504109308B5163D95441C94F27E47AB45041EBB0D4D762D9544120426ABD79B450416D527DBE61D954413333337374B450419A99993962D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468013 - 1728447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -153  </desc>
+<a>
+0106000000010000000103000000010000000700000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541EC51B89E7BA350417B14AE274A1E554148E17A0483A35041C3F5287C301E5541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541E548E6927AA35041F03630D9491E5541FD380A0B78A3504192982DC8521E55418FC2F53879A3504148E17A74521E554148E17A0483A35041C3F5287C301E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468013 - 3368410
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -153  </desc>
+<a>
+0106000000010000000103000000010000000700000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541EC51B89E7BA350417B14AE274A1E554148E17A0483A35041C3F5287C301E5541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541E548E6927AA35041F03630D9491E5541FD380A0B78A3504192982DC8521E55418FC2F53879A3504148E17A74521E554148E17A0483A35041C3F5287C301E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65002 - 2998417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001E00000066666636D5E35041F6285C2F596054417B14AE47D2E35041F6285C5F5D60544152B81E25CCE35041CDCCCC2C61605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A6765605441D7A3705DE2E350417B14AE876D6054418FC2F528F0E35041AE47E18A73605441AE47E11AF1E3504152B81EF573605441B81E855BE7E35041F6285C4F8A605441EC51B84EE7E35041F6285C6F8B60544166666666E8E35041E17A141E8D605441666666D6FAE35041CDCCCC0C9A605441666666B620E45041295C8FD2AE605441666666E621E45041295C8F92AE60544152B81EE521E4504185EB5188AC605441666666E621E45041333333F3A260544185EB51B821E450417B14AED798605441666666A621E4504185EB51E88C60544148E17A8421E450415C8FC295816054410000006021E45041295C8F927760544114AE472121E45041CDCCCCCC6C605441E17A14DE20E4504185EB514868605441C3F5286C20E450410AD7A3E063605441295C8F621FE45041AE47E13A5B60544152B81E351EE45041713D0AC751605441F6285CDF1DE450419A9999694F605441666666C600E45041333333333F605441B81E85DBE7E35041C3F528DC32605441D7A3704DE6E3504185EB51983760544166666636D5E35041F6285C2F59605441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003F53FB00F5E350418A1CDA5E396054416B8E1FCBDBE35041CABC3B3468605441C14F7218DAE35041932D5F676860544146B85AC0CBE350415CB1540762605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A67656054410E59CC5BE2E350419DBFF6866D6054411089D495E2E35041994F8EFF6C605441FBBC8595E3E35041B25FD5E76660544136DD79AEE5E3504152EB3BB661605441DBD72E79ECE3504149EBD56D53605441012CD491EFE35041200619094E60544154A92EF7F2E35041AAC530D7496054419F517928F9E35041D8A1C6BF4260544111501D77FDE35041E65D988F3D6054413F53FB00F5E350418A1CDA5E39605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65002 - 3590044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001E00000066666636D5E35041F6285C2F596054417B14AE47D2E35041F6285C5F5D60544152B81E25CCE35041CDCCCC2C61605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A6765605441D7A3705DE2E350417B14AE876D6054418FC2F528F0E35041AE47E18A73605441AE47E11AF1E3504152B81EF573605441B81E855BE7E35041F6285C4F8A605441EC51B84EE7E35041F6285C6F8B60544166666666E8E35041E17A141E8D605441666666D6FAE35041CDCCCC0C9A605441666666B620E45041295C8FD2AE605441666666E621E45041295C8F92AE60544152B81EE521E4504185EB5188AC605441666666E621E45041333333F3A260544185EB51B821E450417B14AED798605441666666A621E4504185EB51E88C60544148E17A8421E450415C8FC295816054410000006021E45041295C8F927760544114AE472121E45041CDCCCCCC6C605441E17A14DE20E4504185EB514868605441C3F5286C20E450410AD7A3E063605441295C8F621FE45041AE47E13A5B60544152B81E351EE45041713D0AC751605441F6285CDF1DE450419A9999694F605441666666C600E45041333333333F605441B81E85DBE7E35041C3F528DC32605441D7A3704DE6E3504185EB51983760544166666636D5E35041F6285C2F59605441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003F53FB00F5E350418A1CDA5E396054416B8E1FCBDBE35041CABC3B3468605441C14F7218DAE35041932D5F676860544146B85AC0CBE350415CB1540762605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A67656054410E59CC5BE2E350419DBFF6866D6054411089D495E2E35041994F8EFF6C605441FBBC8595E3E35041B25FD5E76660544136DD79AEE5E3504152EB3BB661605441DBD72E79ECE3504149EBD56D53605441012CD491EFE35041200619094E60544154A92EF7F2E35041AAC530D7496054419F517928F9E35041D8A1C6BF4260544111501D77FDE35041E65D988F3D6054413F53FB00F5E350418A1CDA5E39605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>67920 - 1441893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+010600000001000000010300000001000000110000008FC2F5A8D3F15041B81E85BB5010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A10554166666696DDF150413D0AD7B33510554152B81E35DBF15041B81E85DB3110554114AE47C1DBF15041295C8FB22D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D105541295C8F22D3F15041F6285C2F2D1055410AD7A350D3F15041B81E85EB301055410AD7A3A0D3F150413D0AD7C335105541AE47E1FAD3F15041B81E851B3D1055418FC2F5A8D3F15041B81E85BB50105541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D8F4BA5CD3F15041A13802685010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A1055417D3E478EDDF150414A11B8A63510554144908009DCF15041332E32DC311055419F74BB93DCF150418196CDF12D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D1055418707C0DDD1F15041A398CF3A2D10554154037A58D2F15041A5586B1431105541B834A6F5D2F15041E86D2F0236105541FE52D9BAD3F1504103FF45A93C105541925355C5D3F15041CDB104623D105541D8F4BA5CD3F15041A138026850105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>67920 - 3441998
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+010600000001000000010300000001000000110000008FC2F5A8D3F15041B81E85BB5010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A10554166666696DDF150413D0AD7B33510554152B81E35DBF15041B81E85DB3110554114AE47C1DBF15041295C8FB22D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D105541295C8F22D3F15041F6285C2F2D1055410AD7A350D3F15041B81E85EB301055410AD7A3A0D3F150413D0AD7C335105541AE47E1FAD3F15041B81E851B3D1055418FC2F5A8D3F15041B81E85BB50105541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D8F4BA5CD3F15041A13802685010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A1055417D3E478EDDF150414A11B8A63510554144908009DCF15041332E32DC311055419F74BB93DCF150418196CDF12D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D1055418707C0DDD1F15041A398CF3A2D10554154037A58D2F15041A5586B1431105541B834A6F5D2F15041E86D2F0236105541FE52D9BAD3F1504103FF45A93C105541925355C5D3F15041CDB104623D105541D8F4BA5CD3F15041A138026850105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471071 - 1061146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000F000000D7A3703DC8275141F6285C9F727A54413D0AD7E3C7275141333333C3707A5441E17A147EC82751417B14AED76E7A544166666686C92751410AD7A3E06C7A54418FC2F5C8C82751413D0AD7A36A7A5441C3F528FCC8275141CDCCCCBC697A5441B81E854B752751410AD7A3203A7A544148E17AF47027514148E17A24417A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A5441D7A3703DC8275141F6285C9F727A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000572B5350712751417AC7BD95407A5441607B4BB76F275141A56CD825437A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A54419EF0C822C8275141D8683F31737A54410044A41FC8275141D8683F31737A54414134952BC82751415425C9F6727A5441572B5350712751417AC7BD95407A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471071 - 3538369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000F000000D7A3703DC8275141F6285C9F727A54413D0AD7E3C7275141333333C3707A5441E17A147EC82751417B14AED76E7A544166666686C92751410AD7A3E06C7A54418FC2F5C8C82751413D0AD7A36A7A5441C3F528FCC8275141CDCCCCBC697A5441B81E854B752751410AD7A3203A7A544148E17AF47027514148E17A24417A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A5441D7A3703DC8275141F6285C9F727A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000572B5350712751417AC7BD95407A5441607B4BB76F275141A56CD825437A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A54419EF0C822C8275141D8683F31737A54410044A41FC8275141D8683F31737A54414134952BC82751415425C9F6727A5441572B5350712751417AC7BD95407A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960135 - 855352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -29  </desc>
+<a>
+01060000000100000001030000000100000016000000695933E40B6451411738E76B87715441DE3168DEFE6351417D8A3D478B7154417BC1F000FF635141E99F42AC8B7154419050C4600F64514114654EEF867154416086131B13645141C9F5D2DA85715441D734C43D1664514153C5DAFB8471544199D0A8B81C6451419225670883715441EF4E13D520645141B9E13ED081715441FF62A7DF24645141D91185D680715441B300C1D828645141E2D2CDE17F715441D5C1F2EB296451415467D5977F71544199C06CD62E645141C676040D7E7154412B1877403264514182931ABA7C715441CECAE82932645141649364657C7154411A43241B326451414AE96B3B7C7154416A0F9B6F2A645141CA8D55EF7E715441B1961295276451417E33EB977F715441DA2CC9C0226451419B335BD680715441442704A71D6451410662D14182715441A51FD04F146451418DCED9F784715441628533310E645141F4069EC386715441695933E40B6451411738E76B87715441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A4703D4A3B6451418FC2F5F88571544185EB51284464514114AE470184715441AE47E17A60645141B81E85BB7D7154418FC2F5D8646451413D0AD7C37C715441A4703D6A60645141D7A3706D67715441CDCCCCEC5F645141EC51B88E67715441C3F5280C5464514114AE47516A71544185EB51E846645141000000606D715441F6285C6F3964514152B81E85707154419A9999692D6451413D0AD7C37371544148E17AD41C645141295C8F4278715441D7A370EDFC635141713D0A777E71544148E17AD4FB635141C3F528CC7E71544100000080FE635141333333638B7154419A9999790D6451413D0AD7F386715441713D0A0721645141713D0A4781715441000000302D6451410AD7A3F07D715441D7A3700D3264514148E17A147C71544166666656326451413D0AD7E37C715441C3F5283C2D6451413D0AD7B37E7154410000002023645141B81E856B8171544185EB51180E64514166666686877154415C8FC295F7635141295C8F028E715441713D0AF7F6635141B81E85EB91715441713D0A87F063514148E17AD49371544100000000EF6351417B14AEF7907154417B14AE97ED635141A4703D8A91715441A4703DEAEA63514114AE479192715441CDCCCC4CD2635141EC51B80E9A715441E17A14AED46351419A999959AA715441295C8FD2F36351415C8FC2059C71544114AE4771F86351411F85EB01997154413D0AD7831A6451419A9999998E715441D7A3708D2A645141000000B089715441A4703D4A3B6451418FC2F5F885715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960135 - 1256368
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000016000000695933E40B6451411738E76B87715441DE3168DEFE6351417D8A3D478B7154417BC1F000FF635141E99F42AC8B7154419050C4600F64514114654EEF867154416086131B13645141C9F5D2DA85715441D734C43D1664514153C5DAFB8471544199D0A8B81C6451419225670883715441EF4E13D520645141B9E13ED081715441FF62A7DF24645141D91185D680715441B300C1D828645141E2D2CDE17F715441D5C1F2EB296451415467D5977F71544199C06CD62E645141C676040D7E7154412B1877403264514182931ABA7C715441CECAE82932645141649364657C7154411A43241B326451414AE96B3B7C7154416A0F9B6F2A645141CA8D55EF7E715441B1961295276451417E33EB977F715441DA2CC9C0226451419B335BD680715441442704A71D6451410662D14182715441A51FD04F146451418DCED9F784715441628533310E645141F4069EC386715441695933E40B6451411738E76B87715441
+</a>
+
+<b>
+0106000000010000000103000000010000003100000073FF49F0EE635141140712FE907154417B14AE97ED635141A4703D8A91715441A4703DEAEA63514114AE479192715441CDCCCC4CD2635141EC51B80E9A715441E17A14AED46351419A999959AA715441295C8FD2F36351415C8FC2059C71544114AE4771F86351411F85EB01997154413D0AD7831A6451419A9999998E715441D7A3708D2A645141000000B089715441A4703D4A3B6451418FC2F5F88571544185EB51284464514114AE470184715441AE47E17A60645141B81E85BB7D7154418FC2F5D8646451413D0AD7C37C715441A4703D6A60645141D7A3706D67715441CDCCCCEC5F645141EC51B88E67715441C3F5280C5464514114AE47516A71544185EB51E846645141000000606D715441F6285C6F3964514152B81E85707154419A9999692D6451413D0AD7C37371544148E17AD41C645141295C8F4278715441609015E9FB635141E0B31E9E7E715441D05AD7E9FB63514172228FA17E7154414F6D3AFBFB635141E0B31E9E7E71544105FF59FFFD635141893A24E187715441F12E5FD5FE635141BCD088328B71544174D8163DFF6351410404332B8B715441695933E40B6451411338E76B8771544176DC11FF0C645141C75B151B877154419A9999790D6451413D0AD7F386715441361BD04F14645141D5CFD9F7847154411F15392F1B645141643631F982715441713D0A0721645141713D0A47817154419E8CA87C2A64514139DF70D47E715441000000302D6451410AD7A3F07D715441D7A3700D3264514148E17A147C71544166666656326451413D0AD7E37C715441C3F5283C2D6451413D0AD7B37E715441A180526D29645141C9ACDEB97F715441B100C1D828645141E7D2CDE17F7154410000002023645141B81E856B81715441320E790E0E6451418F65C556877154415C8FC295F7635141295C8F028E715441713D0AF7F6635141B81E85EB917154415FE91D9BF0635141149C51E193715441B8C5A391F063514112C755D193715441713D0A87F063514148E17AD4937154410D4DDF16F0635141FABD47029371544173FF49F0EE635141679A72119171544173FF49F0EE635141140712FE90715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960135 - 3468357
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000016000000695933E40B6451411738E76B87715441DE3168DEFE6351417D8A3D478B7154417BC1F000FF635141E99F42AC8B7154419050C4600F64514114654EEF867154416086131B13645141C9F5D2DA85715441D734C43D1664514153C5DAFB8471544199D0A8B81C6451419225670883715441EF4E13D520645141B9E13ED081715441FF62A7DF24645141D91185D680715441B300C1D828645141E2D2CDE17F715441D5C1F2EB296451415467D5977F71544199C06CD62E645141C676040D7E7154412B1877403264514182931ABA7C715441CECAE82932645141649364657C7154411A43241B326451414AE96B3B7C7154416A0F9B6F2A645141CA8D55EF7E715441B1961295276451417E33EB977F715441DA2CC9C0226451419B335BD680715441442704A71D6451410662D14182715441A51FD04F146451418DCED9F784715441628533310E645141F4069EC386715441695933E40B6451411738E76B87715441
+</a>
+
+<b>
+0106000000010000000103000000010000003100000073FF49F0EE635141140712FE907154417B14AE97ED635141A4703D8A91715441A4703DEAEA63514114AE479192715441CDCCCC4CD2635141EC51B80E9A715441E17A14AED46351419A999959AA715441295C8FD2F36351415C8FC2059C71544114AE4771F86351411F85EB01997154413D0AD7831A6451419A9999998E715441D7A3708D2A645141000000B089715441A4703D4A3B6451418FC2F5F88571544185EB51284464514114AE470184715441AE47E17A60645141B81E85BB7D7154418FC2F5D8646451413D0AD7C37C715441A4703D6A60645141D7A3706D67715441CDCCCCEC5F645141EC51B88E67715441C3F5280C5464514114AE47516A71544185EB51E846645141000000606D715441F6285C6F3964514152B81E85707154419A9999692D6451413D0AD7C37371544148E17AD41C645141295C8F4278715441609015E9FB635141E0B31E9E7E715441D05AD7E9FB63514172228FA17E7154414F6D3AFBFB635141E0B31E9E7E71544105FF59FFFD635141893A24E187715441F12E5FD5FE635141BCD088328B71544174D8163DFF6351410404332B8B715441695933E40B6451411338E76B8771544176DC11FF0C645141C75B151B877154419A9999790D6451413D0AD7F386715441361BD04F14645141D5CFD9F7847154411F15392F1B645141643631F982715441713D0A0721645141713D0A47817154419E8CA87C2A64514139DF70D47E715441000000302D6451410AD7A3F07D715441D7A3700D3264514148E17A147C71544166666656326451413D0AD7E37C715441C3F5283C2D6451413D0AD7B37E715441A180526D29645141C9ACDEB97F715441B100C1D828645141E7D2CDE17F7154410000002023645141B81E856B81715441320E790E0E6451418F65C556877154415C8FC295F7635141295C8F028E715441713D0AF7F6635141B81E85EB917154415FE91D9BF0635141149C51E193715441B8C5A391F063514112C755D193715441713D0A87F063514148E17AD4937154410D4DDF16F0635141FABD47029371544173FF49F0EE635141679A72119171544173FF49F0EE635141140712FE90715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971998 - 58524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000000A000000D20B5DDF04BD50412DD3D1E3B2CF54418F5529AC3FBD504107BB88F3BDCF5441B81E85AB3FBD5041A4703DCABDCF5441D7A3706D3FBD50417B14AEB7ADCF54418FC2F58839BD5041713D0AC7ABCF54417B14AE172CBD5041E17A14FEA7CF5441C3F5284C20BD5041AE47E16AA5CF54413D0AD70313BD50415C8FC225A3CF5441B81E859B04BD5041295C8F52A1CF5441D20B5DDF04BD50412DD3D1E3B2CF5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000002405F2AD04BD504158DDF417A6CF544161AE40E004BD5041E97151E3B2CF5441CA4834EC1BBD5041FFF7E039B7CF544197B485562FBD5041BE9CE3E0BACF5441692C37AA3FBD50410BBB85F2BDCF5441B81E85AB3FBD5041A4703DCABDCF5441F7BCDD9D3FBD5041F74B4941BACF544120C9EC5A3FBD5041A9931BB4ADCF54418388831739BD504197D418A7ABCF54418623C09438BD5041E52C4782ABCF5441247B53BC37BD5041C6E75645ABCF54416E05C3CD2BBD5041BD71D9F4A7CF5441B47BC2111FBD5041F0032635A5CF54419B02F6C41EBD504184020628A5CF54417EBCE3FB10BD50418AB81AF1A2CF544140D5B09B04BD5041D20AE15DA1CF54412405F2AD04BD504158DDF417A6CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208500 - 1621857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -145  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370ED28935041B81E855B4144554148E17A0429935041713D0A37424455418FC2F5982893504152B81E9543445541B81E855B25935041A4703D3A434455416666660625935041A4703D3A434455413D0AD7C324935041EC51B8CE45445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541A4703D7A2B935041F6285C5F3E445541F6285CBF29935041295C8F023E445541E17A149E279350417B14AE773D445541F6285CDF26935041EC51B85E3D44554148E17A6426935041A4703D7A3D445541E17A14FE25935041295C8FC23D44554114AE47C125935041000000203E445541EC51B86E25935041B81E85FB3D44554152B81E35259350410000003040445541AE47E15A279350418FC2F54840445541D7A3706D28935041D7A3705D40445541295C8F322893504148E17A4441445541D7A370ED28935041B81E855B41445541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000576E5BEE28935041EAC82D5B414455418FC2F5982893504152B81E95434455411CE3BFBC279350414F92F86D434455414A57436027935041C5356E83444455417622B1F326935041AF0998604544554119C7E85E26935041C2FF19C1454455415ED69CC724935041B8EE390146445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541A4703D7A2B935041F6285C5F3E44554103FF8C23299350412C4EE0DA3D44554154C545DE28935041E3907F9F3E44554107B7E999289350411278C4903F445541D7A3706D28935041D7A3705D40445541295C8F322893504148E17A4441445541576E5BEE28935041EAC82D5B41445541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208500 - 4281603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -145  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370ED28935041B81E855B4144554148E17A0429935041713D0A37424455418FC2F5982893504152B81E9543445541B81E855B25935041A4703D3A434455416666660625935041A4703D3A434455413D0AD7C324935041EC51B8CE45445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541A4703D7A2B935041F6285C5F3E445541F6285CBF29935041295C8F023E445541E17A149E279350417B14AE773D445541F6285CDF26935041EC51B85E3D44554148E17A6426935041A4703D7A3D445541E17A14FE25935041295C8FC23D44554114AE47C125935041000000203E445541EC51B86E25935041B81E85FB3D44554152B81E35259350410000003040445541AE47E15A279350418FC2F54840445541D7A3706D28935041D7A3705D40445541295C8F322893504148E17A4441445541D7A370ED28935041B81E855B41445541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000576E5BEE28935041EAC82D5B414455418FC2F5982893504152B81E95434455411CE3BFBC279350414F92F86D434455414A57436027935041C5356E83444455417622B1F326935041AF0998604544554119C7E85E26935041C2FF19C1454455415ED69CC724935041B8EE390146445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541A4703D7A2B935041F6285C5F3E44554103FF8C23299350412C4EE0DA3D44554154C545DE28935041E3907F9F3E44554107B7E999289350411278C4903F445541D7A3706D28935041D7A3705D40445541295C8F322893504148E17A4441445541576E5BEE28935041EAC82D5B41445541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86154 - 56608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+01060000000100000001030000000100000014000000295C8FC2F1B45041E17A14FE6A085541713D0A17F3B450411F85EB516A085541B81E85FBF4B450418FC2F57865085541E17A142EF7B45041295C8F32610855417B14AEB7F9B45041333333335E0855410AD7A380FCB45041E17A14AE5B0855417B14AED70BB55041F6285C0F520855413D0AD7030CB55041D7A370CD50085541AE47E1FAFBB45041666666D63F0855418FC2F598F1B45041295C8FE234085541CDCCCC0CE9B45041EC51B8DE2B085541713D0AC7CDB450410AD7A3303B085541D7A370ADC9B450410AD7A3E03D08554148E17AF4C5B450415C8FC21541085541713D0A57BCB45041000000804A0855415C8FC215B2B45041E17A148E5508554152B81E05B1B450416666669658085541713D0A17B1B4504114AE47215908554185EB5128B1B45041EC51B8AE59085541295C8FC2F1B45041E17A14FE6A085541
+</a>
+
+<b>
+010600000001000000010300000001000000140000002501DDBAD1B450416770006962085541295C8FC2F1B45041E17A14FE6A085541713D0A17F3B450411F85EB516A085541B81E85FBF4B450418FC2F57865085541E17A142EF7B45041295C8F32610855417B14AEB7F9B45041333333335E0855410AD7A380FCB45041E17A14AE5B0855417B14AED70BB55041F6285C0F520855413D0AD7030CB55041D7A370CD50085541CDCCCC0CE9B45041EC51B8DE2B085541713D0AC7CDB450410AD7A3303B085541D7A370ADC9B450410AD7A3E03D08554148E17AF4C5B450415C8FC21541085541713D0A57BCB45041000000804A0855415C8FC215B2B45041E17A148E5508554152B81E05B1B45041666666965808554102B04243B1B450416AF6729A5908554155235E89B1B4504113B080BD59085541ECF0D8B2B1B450413D81D6D3590855412501DDBAD1B450416770006962085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>91539 - 39658
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000008000000666666A6CCBB5041D7A3707D2B76544152B81EE5C8BB504185EB51682D765441D7A3700DC5BB5041EC51B85E2F76544185EB51D8C7BB50415C8FC235437654417B14AEA7CBBB5041CDCCCC5C43765441713D0AD7CFBB50417B14AE87437654418FC2F5B8CCBB50410AD7A3702B765441666666A6CCBB5041D7A3707D2B765441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000D15BD25AC5BB504111517F84317654415F2CCD73C5BB5041E72A5F1F3276544134C7BB2CC9BB504116A83B8030765441E491CAF9CBBB504137E1D8913176544103C73517CFBB50411C0458BD3D7654415D015F82CEBB504116BA363F39765441666666A6CCBB5041D7A3707D2B765441D7A3700DC5BB5041EC51B85E2F765441D15BD25AC5BB504111517F8431765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>91539 - 78678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000008000000666666A6CCBB5041D7A3707D2B76544152B81EE5C8BB504185EB51682D765441D7A3700DC5BB5041EC51B85E2F76544185EB51D8C7BB50415C8FC235437654417B14AEA7CBBB5041CDCCCC5C43765441713D0AD7CFBB50417B14AE87437654418FC2F5B8CCBB50410AD7A3702B765441666666A6CCBB5041D7A3707D2B765441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000D15BD25AC5BB504111517F84317654415F2CCD73C5BB5041E72A5F1F3276544134C7BB2CC9BB504116A83B8030765441E491CAF9CBBB504137E1D8913176544103C73517CFBB50411C0458BD3D7654415D015F82CEBB504116BA363F39765441666666A6CCBB5041D7A3707D2B765441D7A3700DC5BB5041EC51B85E2F765441D15BD25AC5BB504111517F8431765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>92278 - 1796120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002A000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F67754418FC2F5E842A7504152B81EA5F477544185EB51C842A75041713D0AA7F17754413333335342A75041AE47E18AEE77544185EB516841A75041000000D0ED775441D7A3708D3DA7504152B81E35ED775441333333733BA75041CDCCCC0CEB7754410AD7A3303DA7504148E17A84E4775441000000203BA75041C3F528CCE27754413D0AD73338A7504185EB5188E1775441EC51B86E37A75041E17A148EE1775441333333832AA75041F6285CEFE17754413D0AD7D329A750410AD7A340E977544152B81ED528A75041C3F5285CEE7754416666664627A75041AE47E1EAF27754419A9999F918A75041713D0A67087854417B14AE3718A75041295C8F120A785441666666D617A75041000000F00B785441295C8FD217A7504152B81EF5247854411F85EB311AA7504148E17A144678544114AE47211CA75041C3F528EC4A78544185EB51381CA75041B81E85EB4B785441A4703D6A22A7504100000040517854411F85EBD124A75041E17A146E427854410000004027A75041713D0AE7397854415C8FC25528A750418FC2F5382E785441B81E855B2AA75041713D0AC724785441295C8F122CA75041CDCCCC8C1A785441000000602BA7504114AE474114785441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F67754418FC2F5E842A7504152B81EA5F477544185EB51C842A75041713D0AA7F17754413333335342A75041AE47E18AEE77544185EB516841A75041000000D0ED775441D7A3708D3DA7504152B81E35ED775441333333733BA75041CDCCCC0CEB7754410AD7A3303DA7504148E17A84E4775441000000203BA75041C3F528CCE27754413D0AD73338A7504185EB5188E1775441EC51B86E37A75041E17A148EE1775441333333832AA75041F6285CEFE17754413D0AD7D329A750410AD7A340E977544152B81ED528A75041C3F5285CEE7754416666664627A75041AE47E1EAF27754419A9999F918A75041713D0A67087854417B14AE3718A75041295C8F120A785441666666D617A75041000000F00B785441295C8FD217A7504152B81EF5247854411F85EB311AA7504148E17A144678544114AE47211CA75041C3F528EC4A78544185EB51381CA75041B81E85EB4B785441A4703D6A22A750410000004051785441A07BDBCD24A75041735B1D87427854415FEA4BB325A75041ADDE2C573F7854415C637B1C27A750418A92AE633A7854415C8FC25528A750418FC2F5382E785441B81E855B2AA75041713D0AC724785441295C8F122CA75041CDCCCC8C1A785441000000602BA7504114AE474114785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>92278 - 3401927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002A000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F67754418FC2F5E842A7504152B81EA5F477544185EB51C842A75041713D0AA7F17754413333335342A75041AE47E18AEE77544185EB516841A75041000000D0ED775441D7A3708D3DA7504152B81E35ED775441333333733BA75041CDCCCC0CEB7754410AD7A3303DA7504148E17A84E4775441000000203BA75041C3F528CCE27754413D0AD73338A7504185EB5188E1775441EC51B86E37A75041E17A148EE1775441333333832AA75041F6285CEFE17754413D0AD7D329A750410AD7A340E977544152B81ED528A75041C3F5285CEE7754416666664627A75041AE47E1EAF27754419A9999F918A75041713D0A67087854417B14AE3718A75041295C8F120A785441666666D617A75041000000F00B785441295C8FD217A7504152B81EF5247854411F85EB311AA7504148E17A144678544114AE47211CA75041C3F528EC4A78544185EB51381CA75041B81E85EB4B785441A4703D6A22A7504100000040517854411F85EBD124A75041E17A146E427854410000004027A75041713D0AE7397854415C8FC25528A750418FC2F5382E785441B81E855B2AA75041713D0AC724785441295C8F122CA75041CDCCCC8C1A785441000000602BA7504114AE474114785441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F67754418FC2F5E842A7504152B81EA5F477544185EB51C842A75041713D0AA7F17754413333335342A75041AE47E18AEE77544185EB516841A75041000000D0ED775441D7A3708D3DA7504152B81E35ED775441333333733BA75041CDCCCC0CEB7754410AD7A3303DA7504148E17A84E4775441000000203BA75041C3F528CCE27754413D0AD73338A7504185EB5188E1775441EC51B86E37A75041E17A148EE1775441333333832AA75041F6285CEFE17754413D0AD7D329A750410AD7A340E977544152B81ED528A75041C3F5285CEE7754416666664627A75041AE47E1EAF27754419A9999F918A75041713D0A67087854417B14AE3718A75041295C8F120A785441666666D617A75041000000F00B785441295C8FD217A7504152B81EF5247854411F85EB311AA7504148E17A144678544114AE47211CA75041C3F528EC4A78544185EB51381CA75041B81E85EB4B785441A4703D6A22A750410000004051785441A07BDBCD24A75041735B1D87427854415FEA4BB325A75041ADDE2C573F7854415C637B1C27A750418A92AE633A7854415C8FC25528A750418FC2F5382E785441B81E855B2AA75041713D0AC724785441295C8F122CA75041CDCCCC8C1A785441000000602BA7504114AE474114785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235506 - 272239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -212  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC27522A151415C8FC2D563A054418FC2F5282BA15141E17A14CE5EA054419A9999792DA1514114AE47315DA054417B14AE072FA15141295C8FB25BA054415C8FC23530A15141E17A148E59A054411F85EB2131A15141295C8F9254A05441F6285C2F2BA15141D7A3709D51A054418FC2F53828A15141A4703DFA52A05441295C8F021BA1514185EB51B853A05441B81E85EB20A15141C3F528CC4CA05441AE47E16A20A1514152B81E954BA054419A9999E920A15141C3F5284C4BA05441E17A145E20A151419A9999994AA054415C8FC2951FA15141295C8F624AA05441C3F528BC1EA151419A9999B949A0544114AE47D11DA151415C8FC25549A05441666666361DA1514185EB517849A0544114AE47011BA15141AE47E1EA48A054410000005018A15141E17A14FE48A05441295C8F8213A15141D7A3703D48A054417B14AE9712A15141713D0A1749A05441E17A140E03A1514185EB517857A054415C8FC2750BA15141E17A14DE61A054411F85EBA114A15141713D0A376DA05441B81E858B17A15141B81E85CB6AA05441333333931CA151410000008067A054415C8FC27522A151415C8FC2D563A05441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000B36AC6E623A15141E3EF680063A054417F7241A426A15141135CD76A61A05441C4603AE727A15141DC35BAA160A054411BC632242BA15141685F58B05EA054417173288E2DA15141286A65195DA05441F972F6062FA15141A06A97A05BA054417516431630A151417E9E109159A05441A740F4A230A15141F53C504057A0544154441EC430A1514117F5308D56A05441DD465FEC30A15141ADBBC6B355A0544105C4811C2FA15141EA4BA3C454A054412244A66A2DA15141A0A376FD53A054411BF58E442BA15141692FAC1153A05441282569F229A1514152DE20FC52A054413ECDACCE28A151412A3F821D53A05441EE41A94128A1514160A0D8AD53A05441C4603AE727A151416BFC591754A054419662A25227A15141E2CA7A1954A0544114DC7E7D26A1514171DF30DD53A05441C3F4F98625A15141ECD935B353A05441D38A0A7D24A151418925C69E53A054412E62D07C23A15141A7AAB38F53A05441CFFD461B23A151414007D74353A054412B1ED86A21A15141792C245C53A05441393E46A01BA1514140FB74AF53A054419583F4091BA15141411BEBBC53A05441E4A2B73619A15141582F6FF954A054418018B8061BA151411EE25F8D57A05441D042616B1BA1514163A4E11B58A05441B36AC6E623A15141E3EF680063A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235713 - 1176925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000C000000666666560A9F51413D0AD79318A154415C8FC2E50B9F514152B81EE519A1544166666676129F51413D0AD7A315A1544166666616FF9E5141333333F304A154413D0AD7C3EB9E5141EC51B84EF4A05441000000A0DB9E5141B81E855BE3A054413D0AD713DA9E51410AD7A390E7A0544133333363D79E5141C3F528CCECA0544185EB5158E69E5141295C8F92FAA0544185EB5138EE9E5141AE47E14A02A154418FC2F598F69E5141C3F5281C09A15441666666560A9F51413D0AD79318A15441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441CDCCCCCC039F5141C3F528DC1DA154418BA6F431049F51412045C2291EA154416CFF589C079F51419EF0E94D1CA1544163CBA0320A9F514188FA2F061BA15441211DBC090C9F51418D410C1E1AA1544177A647A80A9F514109E4FDD818A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235713 - 3478977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000C000000666666560A9F51413D0AD79318A154415C8FC2E50B9F514152B81EE519A1544166666676129F51413D0AD7A315A1544166666616FF9E5141333333F304A154413D0AD7C3EB9E5141EC51B84EF4A05441000000A0DB9E5141B81E855BE3A054413D0AD713DA9E51410AD7A390E7A0544133333363D79E5141C3F528CCECA0544185EB5158E69E5141295C8F92FAA0544185EB5138EE9E5141AE47E14A02A154418FC2F598F69E5141C3F5281C09A15441666666560A9F51413D0AD79318A15441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441CDCCCCCC039F5141C3F528DC1DA154418BA6F431049F51412045C2291EA154416CFF589C079F51419EF0E94D1CA1544163CBA0320A9F514188FA2F061BA15441211DBC090C9F51418D410C1E1AA1544177A647A80A9F514109E4FDD818A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 2889953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441E17A14CE8B5751417B14AE57EF915441333333C38B575141295C8FF2F791544148E17AF48B575141713D0AD7FB915441E17A14AE8C5751413D0AD723FE915441F6285CDF8C575141295C8F02079254411F85EBE1BE57514152B81E950E92544166666666C55751410AD7A33009925441A4703DAAC8575141000000A006925441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514126613353D89154411F1A28DBAD57514128E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 5230330
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441E17A14CE8B5751417B14AE57EF915441333333C38B575141295C8FF2F791544148E17AF48B575141713D0AD7FB915441E17A14AE8C5751413D0AD723FE915441F6285CDF8C575141295C8F02079254411F85EBE1BE57514152B81E950E92544166666666C55751410AD7A33009925441A4703DAAC8575141000000A006925441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 5242399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441E17A14CE8B5751417B14AE57EF915441333333C38B575141295C8FF2F791544148E17AF48B575141713D0AD7FB915441E17A14AE8C5751413D0AD723FE915441F6285CDF8C575141295C8F02079254411F85EBE1BE57514152B81E950E92544166666666C55751410AD7A33009925441A4703DAAC8575141000000A006925441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 408824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441E17A14CE8B5751417B14AE57EF915441333333C38B575141295C8FF2F791544148E17AF48B575141713D0AD7FB915441E17A14AE8C5751413D0AD723FE915441F6285CDF8C575141295C8F02079254411F85EBE1BE57514152B81E950E92544166666666C55751410AD7A33009925441A4703DAAC8575141000000A006925441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 410373
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441E17A14CE8B5751417B14AE57EF915441333333C38B575141295C8FF2F791544148E17AF48B575141713D0AD7FB915441E17A14AE8C5751413D0AD723FE915441F6285CDF8C575141295C8F02079254411F85EBE1BE57514152B81E950E92544166666666C55751410AD7A33009925441A4703DAAC8575141000000A006925441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103978 - 3806180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000070000001F85EB919A6151415C8FC2B5739A544185EB5108976151413D0AD793709A5441EC51B87E78615141CDCCCCBCD09A5441333333837F615141666666F6D39A5441E17A144E8B6151411F85EB31D99A5441000000F0A76151417B14AE077F9A54411F85EB919A6151415C8FC2B5739A5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000004EEFFFEFA76151410F49AE077F9A54411094D9779F615141AE1EA0DB779A5441BA2AB74D9F615141BD1424B5779A544138E9E8F79E615141B62D486F779A54411F85EB919A6151415C8FC2B5739A544185EB5108976151413D0AD793709A5441EC51B87E78615141CDCCCCBCD09A5441333333837F615141666666F6D39A5441BF7F587C81615141142484A2D49A5441572B4B6D81615141488CDCCFD49A54411CFEC5488B61514167BD902FD99A54414220B3D88B6151416183667DD79A5441599F28938C615141F2A23B32D59A5441AE5741B6906151419F63172BC89A5441A4D219C09C61514115613942A29A544124194829A5615141E06AC3C5879A54414EEFFFEFA76151410F49AE077F9A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>104861 - 2999544
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -633  </desc>
+<a>
+0106000000010000000103000000010000001300000052B81EB5E30D514148E17AA439445441EC51B84E920D51413D0AD7C3304454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE524454410AD7A3E05A0D51410AD7A34058445441EC51B88E660D514114AE47C15944544100000070900D51419A9999195F44544100000030AD0D51417B14AED765445441C3F5283CB70D514152B81EC56944544185EB5138DA0D51415C8FC2956D44544185EB51A8E00D5141A4703D6A6E44544152B81EB5E30D514148E17AA439445441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000025489F6A610D51419898FA175944544123E133C4610D514174DE521A2F445441134EC5C2610D5141B4E2E1142F4454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE52445441980178004B0D5141EA8A864355445441EB536D354C0D51410F78FC655044544160248BDF530D5141F7C937FD514454414B3C51EA520D514165D0C8DB564454410AD7A3E05A0D51410AD7A3405844544125489F6A610D51419898FA1759445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>104861 - 3375862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -633  </desc>
+<a>
+0106000000010000000103000000010000001300000052B81EB5E30D514148E17AA439445441EC51B84E920D51413D0AD7C3304454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE524454410AD7A3E05A0D51410AD7A34058445441EC51B88E660D514114AE47C15944544100000070900D51419A9999195F44544100000030AD0D51417B14AED765445441C3F5283CB70D514152B81EC56944544185EB5138DA0D51415C8FC2956D44544185EB51A8E00D5141A4703D6A6E44544152B81EB5E30D514148E17AA439445441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000025489F6A610D51419898FA175944544123E133C4610D514174DE521A2F445441134EC5C2610D5141B4E2E1142F4454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE52445441980178004B0D5141EA8A864355445441EB536D354C0D51410F78FC655044544160248BDF530D5141F7C937FD514454414B3C51EA520D514165D0C8DB564454410AD7A3E05A0D51410AD7A3405844544125489F6A610D51419898FA1759445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108202 - 960539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE17BE125141A4703D9A22495541713D0AD7C1125141713D0AE72C495541000000B0C41251413D0AD7A3374955418FC2F5C8C512514148E17AA43949554100000030CC1251418FC2F528374955411F85EB11CD12514185EB519835495541D7A370EDD61251419A9999A9204955410AD7A3B0D712514185EB51881E4955419A999959D8125141B81E85AB1B495541CDCCCC4CCC125141D7A370DD1D49554185EB51E8C7125141A4703DAA1E4955417B14AE17BE125141A4703D9A22495541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000B89E7E61A812514191FA39F22F4955410B54ECAAA7125141606C15D931495541E9C73718A7125141BF10339133495541AD107388AA1251414803CE5C334955410EB59040AC125141B1CAD84733495541D820B9E3AD1251418359EE1D334955415A518B2EB0125141277719CA32495541CB3B0330B2125141277719CA32495541F1890027B4125141903E24B5324955414449E847B6125141CC94447632495541B5336049B81251415287DF41324955414449682BBA12514132FB2AAF31495541C6793A76BC125141B68CA1C83049554139C5D629BF12514186BA92EC2F49554170CB1C50C2125141591B96AF2E495541D63E7ECEBF1251414147515027495541A5B2B7C5BE1251419503957824495541B81E859BB412514114AE47E126495541E9C7B7FBAA125141B48CA10129495541ECBA580DA9125141055AF4272E4955411F85EB71A81251411F85EBF12F495541B89E7E61A812514191FA39F22F495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108638 - 55006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5C8A54D51411F85EB51DC735441B81E85DBA44D5141F6285C6FDE735441666666A6A44D5141AE47E11ADF73544114AE47C1A44D5141EC51B89EDF73544185EB5178A84D514148E17AB4E07354419A999949AC4D5141D7A3706DE1735441D7A3702DAF4D5141B81E850BE2735441E17A14EEB04D5141B81E850BE2735441EC51B8CEB14D5141EC51B8FEE17354417B14AE87B24D5141295C8F52E17354411F85EBC1BE4D5141713D0A37CF7354410AD7A330BE4D5141000000C0CE73544185EB5168B34D5141A4703D0AD07354417B14AE47AF4D51415C8FC2B5D0735441D7A370CDAC4D514148E17A54D17354419A999949AC4D51418FC2F588D17354411F85EB21AC4D514185EB51D8D1735441B81E851BA84D514166666616D87354418FC2F5C8A54D51411F85EB51DC735441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000937512CAAF4D51412F39C5BBCF735441BED3CDF0AB4D5141F7006175D073544120A10189AA4D5141335C93D2D0735441637E6CEDA94D514103BBF510D173544178EE5CB7A84D5141D41C498DD17354410934E925A54D51418B63936DD3735441B716B932A04D514169E70F82D6735441F728B3A49D4D5141B6801440D8735441996E4FD39B4D514135171091D9735441F02D25EC9A4D51414E76AB3EDA735441017AC8C29A4D51411390E184DA735441300E8F279A4D5141AA8DDE97DB735441E17A140E9B4D5141B81E858BDB735441EC51B8EE9B4D5141B81E858BDB735441B83E83F09B4D5141506AD68BDB73544120DC367C9C4D51410BC05487DB735441713D0AD79D4D5141295C8F02DC735441CDCCCCEC9E4D51413D0AD793DC735441000000F0A04D5141333333C3DD735441D7A3700DA34D51415C8FC2E5DE73544114AE47C1A44D5141EC51B89EDF735441666666A6A44D5141AE47E11ADF735441B81E85DBA44D5141F6285C6FDE7354418FC2F5C8A54D51411F85EB51DC735441B81E851BA84D514166666616D87354411F85EB21AC4D514185EB51D8D17354419A999949AC4D51418FC2F588D1735441D7A370CDAC4D514148E17A54D17354417B14AE47AF4D51415C8FC2B5D073544185EB5168B34D5141A4703D0AD0735441994E2405B84D51415FEEF77CCF7354417F07AFC9BA4D51416477FF03CF73544183BFC2D4BD4D51410006FECACE7354410F2261DABD4D514102F051CACE7354410A272FE5BD4D5141000407C9CE73544158A10E2EBE4D51416D25CFB6CE7354419D943445BE4D514117D7D9D0CE7354411F85EBC1BE4D5141713D0A37CF735441D1244BB3BE4D51415939B34CCF7354413D456FC8BE4D5141D2DD7B64CF735441CA9E691DBA4D51413EAB1417D6735441AE11187BB94D514188A07407D7735441399CFB82B64D5141D76A176DDB735441D3258E30B64D51417926D1E7DB7354411D8C9CAEB44D51418AA1073EDE7354415D0D5AF5B34D51413CF50A35DF7354417B14AE87B24D5141295C8F52E17354410DA3E3E0B14D5141BFE4CEEDE1735441713D0AE7B44D514152B81E95E17354412E07D304B74D514180C09E2EE1735441E91FAA35B94D5141CD635ABFE173544178B3087CB94D5141E2D276C2E1735441163F9BA8B94D51413B4A6FC4E1735441CBC1DDC5BB4D5141D88D98A4E1735441E17A14DEBB4D51411F85EBA1E173544158290003BC4D51412C05468BE1735441F6285C9FBD4D5141B81E85FBDF735441CDCCCCBCBF4D51417B14AE17DD735441C3F5283CC14D514148E17A14DB735441845B74D2C14D5141A3ED7143DA735441856EE3B3C24D51418E073AF7D873544134498F17C34D5141286F538DD8735441F6285C3FC34D514185EB5158D8735441CDCCCC2CC44D514133333343D7735441138FC760C44D5141445EFF12D773544128839DA9C44D5141F2A04FB4D67354414BE5CEBDC54D5141DFB42EFCD57354418FC2F5B8C64D5141AE47E1EAD373544133333353C84D514148E17AD4D0735441B3797D4BC94D5141500CFDF8CE735441A409C23ECA4D51418D573614CD7354417B14AE07CB4D5141A4703D6ACB735441F7FE6D97C74D5141879E9AF0CC73544126359541C64D51414DDA3388CD73544100000030C64D514100000090CD73544192495B4AC44D5141711AACB7CD73544190D70A71C04D5141630FEF09CE735441AE47E19ABC4D5141F6285C5FCE7354410AC2B2A5BA4D5141CB2F0389CE735441E156A874B44D5141CCD7A116CF735441937512CAAF4D51412F39C5BBCF735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108638 - 91689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5C8A54D51411F85EB51DC735441B81E85DBA44D5141F6285C6FDE735441666666A6A44D5141AE47E11ADF73544114AE47C1A44D5141EC51B89EDF73544185EB5178A84D514148E17AB4E07354419A999949AC4D5141D7A3706DE1735441D7A3702DAF4D5141B81E850BE2735441E17A14EEB04D5141B81E850BE2735441EC51B8CEB14D5141EC51B8FEE17354417B14AE87B24D5141295C8F52E17354411F85EBC1BE4D5141713D0A37CF7354410AD7A330BE4D5141000000C0CE73544185EB5168B34D5141A4703D0AD07354417B14AE47AF4D51415C8FC2B5D0735441D7A370CDAC4D514148E17A54D17354419A999949AC4D51418FC2F588D17354411F85EB21AC4D514185EB51D8D1735441B81E851BA84D514166666616D87354418FC2F5C8A54D51411F85EB51DC735441
+</a>
+
+<b>
+010600000001000000010300000001000000510000008E7512CAAF4D51413039C5BBCF735441BED3CDF0AB4D5141F7006175D073544120A10189AA4D5141335C93D2D0735441637E6CEDA94D514103BBF510D173544178EE5CB7A84D5141D41C498DD17354410C34E925A54D51418A63936DD3735441B716B932A04D514169E70F82D6735441F728B3A49D4D5141B6801440D87354419D6E4FD39B4D51413A171091D9735441ED2D25EC9A4D51415076AB3EDA735441027AC8C29A4D51411390E184DA735441300E8F279A4D5141AA8DDE97DB735441E17A140E9B4D5141B81E858BDB735441EC51B8EE9B4D5141B81E858BDB735441B93E83F09B4D5141506AD68BDB73544120DC367C9C4D51410BC05487DB735441713D0AD79D4D5141295C8F02DC735441CDCCCCEC9E4D51413D0AD793DC735441000000F0A04D5141333333C3DD735441D7A3700DA34D51415C8FC2E5DE73544114AE47C1A44D5141EC51B89EDF735441666666A6A44D5141AE47E11ADF735441B81E85DBA44D5141F6285C6FDE7354418FC2F5C8A54D51411F85EB51DC735441B81E851BA84D514166666616D87354411F85EB21AC4D514185EB51D8D17354419A999949AC4D51418FC2F588D1735441D7A370CDAC4D514148E17A54D17354417B14AE47AF4D51415C8FC2B5D073544185EB5168B34D5141A4703D0AD0735441944E2405B84D514164EEF77CCF7354417F07AFC9BA4D51416477FF03CF73544183BFC2D4BD4D51410006FECACE7354410F2261DABD4D514102F051CACE7354410A272FE5BD4D5141000407C9CE73544158A10E2EBE4D51416D25CFB6CE7354419D943445BE4D514117D7D9D0CE7354411F85EBC1BE4D5141713D0A37CF735441CC244BB3BE4D51415E39B34CCF7354413D456FC8BE4D5141D2DD7B64CF735441CA9E691DBA4D51413EAB1417D6735441AF11187BB94D514186A07407D7735441389CFB82B64D5141D66A176DDB735441D3258E30B64D51417926D1E7DB7354411D8C9CAEB44D51418AA1073EDE7354415D0D5AF5B34D51413CF50A35DF7354417B14AE87B24D5141295C8F52E173544108A3E3E0B14D5141C0E4CEEDE1735441713D0AE7B44D514152B81E95E17354412E07D304B74D514180C09E2EE1735441E41FAA35B94D5141CF635ABFE173544178B3087CB94D5141E5D276C2E1735441163F9BA8B94D51413B4A6FC4E1735441C7C1DDC5BB4D5141D68D98A4E1735441E17A14DEBB4D51411F85EBA1E17354415B290003BC4D51412805468BE1735441F6285C9FBD4D5141B81E85FBDF735441CDCCCCBCBF4D51417B14AE17DD735441C3F5283CC14D514148E17A14DB735441875B74D2C14D5141A3ED7143DA735441856EE3B3C24D51418E073AF7D873544134498F17C34D5141286F538DD8735441F6285C3FC34D514185EB5158D8735441CDCCCC2CC44D514133333343D7735441168FC760C44D5141455EFF12D773544128839DA9C44D5141F2A04FB4D67354414BE5CEBDC54D5141DFB42EFCD57354418FC2F5B8C64D5141AE47E1EAD373544133333353C84D514148E17AD4D0735441B3797D4BC94D5141500CFDF8CE735441A509C23ECA4D51418B573614CD7354417B14AE07CB4D5141A4703D6ACB735441F7FE6D97C74D5141879E9AF0CC73544126359541C64D51414DDA3388CD73544100000030C64D514100000090CD73544192495B4AC44D5141701AACB7CD73544195D70A71C04D5141620FEF09CE735441AE47E19ABC4D5141F6285C5FCE7354410AC2B2A5BA4D5141CB2F0389CE735441E156A874B44D5141CCD7A116CF7354418E7512CAAF4D51413039C5BBCF735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108638 - 293737
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5C8A54D51411F85EB51DC735441B81E85DBA44D5141F6285C6FDE735441666666A6A44D5141AE47E11ADF73544114AE47C1A44D5141EC51B89EDF73544185EB5178A84D514148E17AB4E07354419A999949AC4D5141D7A3706DE1735441D7A3702DAF4D5141B81E850BE2735441E17A14EEB04D5141B81E850BE2735441EC51B8CEB14D5141EC51B8FEE17354417B14AE87B24D5141295C8F52E17354411F85EBC1BE4D5141713D0A37CF7354410AD7A330BE4D5141000000C0CE73544185EB5168B34D5141A4703D0AD07354417B14AE47AF4D51415C8FC2B5D0735441D7A370CDAC4D514148E17A54D17354419A999949AC4D51418FC2F588D17354411F85EB21AC4D514185EB51D8D1735441B81E851BA84D514166666616D87354418FC2F5C8A54D51411F85EB51DC735441
+</a>
+
+<b>
+010600000001000000010300000001000000510000008E7512CAAF4D51413039C5BBCF735441BED3CDF0AB4D5141F7006175D073544120A10189AA4D5141335C93D2D0735441637E6CEDA94D514103BBF510D173544178EE5CB7A84D5141D41C498DD17354410C34E925A54D51418A63936DD3735441B716B932A04D514169E70F82D6735441F728B3A49D4D5141B6801440D87354419D6E4FD39B4D51413A171091D9735441ED2D25EC9A4D51415076AB3EDA735441027AC8C29A4D51411390E184DA735441300E8F279A4D5141AA8DDE97DB735441E17A140E9B4D5141B81E858BDB735441EC51B8EE9B4D5141B81E858BDB735441B93E83F09B4D5141506AD68BDB73544120DC367C9C4D51410BC05487DB735441713D0AD79D4D5141295C8F02DC735441CDCCCCEC9E4D51413D0AD793DC735441000000F0A04D5141333333C3DD735441D7A3700DA34D51415C8FC2E5DE73544114AE47C1A44D5141EC51B89EDF735441666666A6A44D5141AE47E11ADF735441B81E85DBA44D5141F6285C6FDE7354418FC2F5C8A54D51411F85EB51DC735441B81E851BA84D514166666616D87354411F85EB21AC4D514185EB51D8D17354419A999949AC4D51418FC2F588D1735441D7A370CDAC4D514148E17A54D17354417B14AE47AF4D51415C8FC2B5D073544185EB5168B34D5141A4703D0AD0735441944E2405B84D514164EEF77CCF7354417F07AFC9BA4D51416477FF03CF73544183BFC2D4BD4D51410006FECACE7354410F2261DABD4D514102F051CACE7354410A272FE5BD4D5141000407C9CE73544158A10E2EBE4D51416D25CFB6CE7354419D943445BE4D514117D7D9D0CE7354411F85EBC1BE4D5141713D0A37CF735441CC244BB3BE4D51415E39B34CCF7354413D456FC8BE4D5141D2DD7B64CF735441CA9E691DBA4D51413EAB1417D6735441AF11187BB94D514186A07407D7735441389CFB82B64D5141D66A176DDB735441D3258E30B64D51417926D1E7DB7354411D8C9CAEB44D51418AA1073EDE7354415D0D5AF5B34D51413CF50A35DF7354417B14AE87B24D5141295C8F52E173544108A3E3E0B14D5141C0E4CEEDE1735441713D0AE7B44D514152B81E95E17354412E07D304B74D514180C09E2EE1735441E41FAA35B94D5141CF635ABFE173544178B3087CB94D5141E5D276C2E1735441163F9BA8B94D51413B4A6FC4E1735441C7C1DDC5BB4D5141D68D98A4E1735441E17A14DEBB4D51411F85EBA1E17354415B290003BC4D51412805468BE1735441F6285C9FBD4D5141B81E85FBDF735441CDCCCCBCBF4D51417B14AE17DD735441C3F5283CC14D514148E17A14DB735441875B74D2C14D5141A3ED7143DA735441856EE3B3C24D51418E073AF7D873544134498F17C34D5141286F538DD8735441F6285C3FC34D514185EB5158D8735441CDCCCC2CC44D514133333343D7735441168FC760C44D5141455EFF12D773544128839DA9C44D5141F2A04FB4D67354414BE5CEBDC54D5141DFB42EFCD57354418FC2F5B8C64D5141AE47E1EAD373544133333353C84D514148E17AD4D0735441B3797D4BC94D5141500CFDF8CE735441A509C23ECA4D51418B573614CD7354417B14AE07CB4D5141A4703D6ACB735441F7FE6D97C74D5141879E9AF0CC73544126359541C64D51414DDA3388CD73544100000030C64D514100000090CD73544192495B4AC44D5141701AACB7CD73544195D70A71C04D5141620FEF09CE735441AE47E19ABC4D5141F6285C5FCE7354410AC2B2A5BA4D5141CB2F0389CE735441E156A874B44D5141CCD7A116CF7354418E7512CAAF4D51413039C5BBCF735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110585 - 171476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -168  </desc>
+<a>
+01060000000100000001030000000100000039000000E17A14AE423051411F85EB31C0D054410AD7A3D044305141295C8FF2BFD05441A4703DCA4130514166666616B4D054416666666641305141AE47E10AAFD05441AE47E1DA4230514148E17A44AED05441AE47E18A46305141D7A370CDB6D0544152B81EA549305141C3F5283CBCD054415C8FC2C54B305141E17A147EBED05441666666764D3051419A999999BDD0544148E17A944F3051418FC2F5F8BBD054411F85EB515030514100000010BAD054415C8FC23551305141295C8F32B8D05441333333A351305141EC51B8BEB6D05441295C8FE252305141A4703D6AADD05441F6285CCF53305141EC51B81EA6D0544114AE4751543051418FC2F598A5D05441B81E859B55305141C3F5285CA5D05441EC51B8CE57305141295C8FB2A4D05441D7A3707D58305141333333D3A2D05441EC51B8AE5730514152B81E559FD05441CDCCCC3C563051411F85EBF19CD0544152B81EA555305141AE47E1DA9BD0544185EB518854305141C3F5280C96D05441A4703D2A54305141D7A3706D91D0544100000010503051419A9999A98ED05441E17A145E4B3051415C8FC2858CD05441295C8F524430514185EB510888D0544185EB51F83F3051410000001085D0544185EB51A83E3051415C8FC20582D054410AD7A3603C305141295C8F9280D054415C8FC2A5383051411F85EBB180D05441666666C6373051415C8FC26580D05441A4703D9A3630514152B81E2580D0544152B81E4535305141F6285CCF7DD05441E17A142E34305141EC51B82E7AD054415C8FC275313051411F85EB3175D05441713D0AA72D305141A4703DAA6FD054419A9999792B3051418FC2F5D86ED054411F85EBC127305141F6285CEF6FD054415C8FC2C52130514148E17A3471D054413D0AD7831B305141A4703D7A71D0544114AE473117305141E17A148E70D05441AE47E15A19305141295C8F6272D05441B81E85EB1A305141B81E858B74D05441EC51B8BE1B3051416666662676D05441295C8F621E305141D7A3709D7DD05441AE47E17A203051413333332385D05441CDCCCC6C22305141B81E859B8DD05441A4703D6A25305141D7A370ED97D0544152B81EA526305141CDCCCC6C9ED05441AE47E15A27305141AE47E1DAA3D05441E17A140E29305141AE47E16AA9D0544185EB51282C305141713D0A67B0D0544114AE47112F3051415C8FC2C5B7D054419A9999D9323051411F85EBC1BED05441CDCCCCAC353051413D0AD753C1D05441E17A14AE423051411F85EB31C0D05441
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441ACFE50584030514133DAF57E7AD054414DB122DF3D305141DDECD86D7AD0544195567C873A3051412FBA9AB179D054418F16C6EC38305141D3C470D277D054418CBEC15238305141CFA4150577D054418CBEC15238305141CE14689E76D054418CBEC1523830514121AA801576D0544137C44C94373051412CE25D0972D054419A4662EB363051412B02AC4470D0544131CE88AF36305141BAB1C1CF6FD05441BBAA0BF8343051417D914BCB6CD054416B2B095A34305141255092B56BD05441B0DD5D993330514197E4ED626AD054418849146C33305141A49954136AD054417F54A47A313051418E05124668D05441000000E02D3051415C8FC20565D0544140D2571D2D305141412B82BA64D05441C75B35C22C305141F9B102A364D05441C05328F42A305141A16CE1F763D05441B2430E582730514147CFBBB262D054415BC187C32530514115A5241662D0544157AA4708253051412BA6D1E061D0544166B788CE243051410BD65FD061D05441F600B6FF22305141421FB37E61D05441C6402A7F183051411E8F34A35FD0544102450D82073051411E8F34A35FD05441599A01C0003051410C51C2DD60D0544177559E480130514100B7BA3F61D054411E3AD2A6013051414539498361D054417F6438DE023051419A6E9A6262D05441BC83B8BE0E30514152D85F236AD054410AD7A31010305141713D0AF76AD05441AC4AC64A12305141086C5B926CD05441CDFC3D5A18305141630575CD70D054413D0AD7831B305141A4703D7A71D054415C8FC2C52130514148E17A3471D054411F85EBC127305141F6285CEF6FD054419A9999792B3051418FC2F5D86ED05441713D0AA72D305141A4703DAA6FD054415C8FC275313051411F85EB3175D05441E17A142E34305141EC51B82E7AD0544152B81E4535305141F6285CCF7DD054414710B795353051410826975C7ED0544164A33DF13B305141391281847FD05441C286F1F03E305141828AD71D82D05441091767AE3F3051410F1FCB6484D05441EC75E8BF3F30514150D4568D84D0544182AE29CA3F305141615717A584D054412FB705E03F3051415DD2B8D784D05441B36A77254130514125047EDD85D05441295C8F524430514185EB510888D0544145D547AE483051417F6067CF8AD05441A4498FE94C305141037099368DD05441B585E1F14D3051412BFC7FB28DD0544100000010503051419A9999A98ED05441AC75323250305141A7ECA5C08ED054410A9FCA30513051410B40FD378FD05441BFA16CEE53305141BE22442891D05441171F376654305141A67A6F578BD05441FAD3076F543051415AB389AB8AD054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110585 - 352992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -168  </desc>
+<a>
+01060000000100000001030000000100000039000000E17A14AE423051411F85EB31C0D054410AD7A3D044305141295C8FF2BFD05441A4703DCA4130514166666616B4D054416666666641305141AE47E10AAFD05441AE47E1DA4230514148E17A44AED05441AE47E18A46305141D7A370CDB6D0544152B81EA549305141C3F5283CBCD054415C8FC2C54B305141E17A147EBED05441666666764D3051419A999999BDD0544148E17A944F3051418FC2F5F8BBD054411F85EB515030514100000010BAD054415C8FC23551305141295C8F32B8D05441333333A351305141EC51B8BEB6D05441295C8FE252305141A4703D6AADD05441F6285CCF53305141EC51B81EA6D0544114AE4751543051418FC2F598A5D05441B81E859B55305141C3F5285CA5D05441EC51B8CE57305141295C8FB2A4D05441D7A3707D58305141333333D3A2D05441EC51B8AE5730514152B81E559FD05441CDCCCC3C563051411F85EBF19CD0544152B81EA555305141AE47E1DA9BD0544185EB518854305141C3F5280C96D05441A4703D2A54305141D7A3706D91D0544100000010503051419A9999A98ED05441E17A145E4B3051415C8FC2858CD05441295C8F524430514185EB510888D0544185EB51F83F3051410000001085D0544185EB51A83E3051415C8FC20582D054410AD7A3603C305141295C8F9280D054415C8FC2A5383051411F85EBB180D05441666666C6373051415C8FC26580D05441A4703D9A3630514152B81E2580D0544152B81E4535305141F6285CCF7DD05441E17A142E34305141EC51B82E7AD054415C8FC275313051411F85EB3175D05441713D0AA72D305141A4703DAA6FD054419A9999792B3051418FC2F5D86ED054411F85EBC127305141F6285CEF6FD054415C8FC2C52130514148E17A3471D054413D0AD7831B305141A4703D7A71D0544114AE473117305141E17A148E70D05441AE47E15A19305141295C8F6272D05441B81E85EB1A305141B81E858B74D05441EC51B8BE1B3051416666662676D05441295C8F621E305141D7A3709D7DD05441AE47E17A203051413333332385D05441CDCCCC6C22305141B81E859B8DD05441A4703D6A25305141D7A370ED97D0544152B81EA526305141CDCCCC6C9ED05441AE47E15A27305141AE47E1DAA3D05441E17A140E29305141AE47E16AA9D0544185EB51282C305141713D0A67B0D0544114AE47112F3051415C8FC2C5B7D054419A9999D9323051411F85EBC1BED05441CDCCCCAC353051413D0AD753C1D05441E17A14AE423051411F85EB31C0D05441
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441ACFE50584030514133DAF57E7AD054414DB122DF3D305141DDECD86D7AD0544195567C873A3051412FBA9AB179D054418F16C6EC38305141D3C470D277D054418CBEC15238305141CFA4150577D054418CBEC15238305141CE14689E76D054418CBEC1523830514121AA801576D0544137C44C94373051412CE25D0972D054419A4662EB363051412B02AC4470D0544131CE88AF36305141BAB1C1CF6FD05441BBAA0BF8343051417D914BCB6CD054416B2B095A34305141255092B56BD05441B0DD5D993330514197E4ED626AD054418849146C33305141A49954136AD054417F54A47A313051418E05124668D05441000000E02D3051415C8FC20565D0544140D2571D2D305141412B82BA64D05441C75B35C22C305141F9B102A364D05441C05328F42A305141A16CE1F763D05441B2430E582730514147CFBBB262D054415BC187C32530514115A5241662D0544157AA4708253051412BA6D1E061D0544166B788CE243051410BD65FD061D05441F600B6FF22305141421FB37E61D05441C6402A7F183051411E8F34A35FD0544102450D82073051411E8F34A35FD05441599A01C0003051410C51C2DD60D0544177559E480130514100B7BA3F61D054411E3AD2A6013051414539498361D054417F6438DE023051419A6E9A6262D05441BC83B8BE0E30514152D85F236AD054410AD7A31010305141713D0AF76AD05441AC4AC64A12305141086C5B926CD05441CDFC3D5A18305141630575CD70D054413D0AD7831B305141A4703D7A71D054415C8FC2C52130514148E17A3471D054411F85EBC127305141F6285CEF6FD054419A9999792B3051418FC2F5D86ED05441713D0AA72D305141A4703DAA6FD054415C8FC275313051411F85EB3175D05441E17A142E34305141EC51B82E7AD0544152B81E4535305141F6285CCF7DD054414710B795353051410826975C7ED0544164A33DF13B305141391281847FD05441C286F1F03E305141828AD71D82D05441091767AE3F3051410F1FCB6484D05441EC75E8BF3F30514150D4568D84D0544182AE29CA3F305141615717A584D054412FB705E03F3051415DD2B8D784D05441B36A77254130514125047EDD85D05441295C8F524430514185EB510888D0544145D547AE483051417F6067CF8AD05441A4498FE94C305141037099368DD05441B585E1F14D3051412BFC7FB28DD0544100000010503051419A9999A98ED05441AC75323250305141A7ECA5C08ED054410A9FCA30513051410B40FD378FD05441BFA16CEE53305141BE22442891D05441171F376654305141A67A6F578BD05441FAD3076F543051415AB389AB8AD054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115495 - 356539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000600000000000000F6D050413D0AD783CA9354411F85EBF1F8D0504148E17AE4CB935441295C8F0229D15041D7A370DD759354418FC2F53826D150410AD7A3C0749354416666660614D15041E17A141E9593544100000000F6D050413D0AD783CA935441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000026E399AF08D1504148A08448A99354419BA6EA8202D15041DB83A943B4935441468D0608F6D05041410A9887CA935441E8A1201DF6D05041D7D17691CA9354411FD01350F6D0504185A94BA9CA93544185440552F6D05041B55734AACA9354415AFC07F0F8D05041F4B598E3CB935441E1F3E72715D15041FE66746699935441295C8F0229D15041D7A370DD759354416EBEA19B28D15041ED6C5CB475935441D8FDDA6B28D1504107184BA1759354419AAB6BEC27D1504121066F6E75935441AFB8873327D150410EFB242A75935441BAE8569A0AD15041D6DD1F41A793544148CF23EC09D1504178179315A793544126E399AF08D1504148A08448A9935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>122107 - 32561
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B00000014AE4751A6135141C3F528DCA1C154411F85EBB19E1351411F85EB91AAC15441295C8FA292135141AE47E15AB7C1544133333343861351411F85EBD1C3C154413D0AD7737B13514152B81EA5CDC15441295C8F027413514185EB51A8D3C15441333333436F13514133333333D8C154411F85EB417A1351410AD7A3E0DFC15441A4703DBA831351413D0AD723E7C15441F6285CDF8D135141EC51B84EF0C15441713D0AC78F13514148E17A34F0C15441B81E85CB93135141D7A3706DECC1544166666656A0135141A4703DDADEC15441000000B0A413514114AE4771DBC15441E17A14BEA8135141EC51B8FED8C1544100000020C113514133333333D0C154418FC2F528D0135141A4703D1ACBC15441D7A3705DD51351410AD7A330C5C15441295C8F52D71351418FC2F5A8C6C15441AE47E1BAD8135141295C8FE2C5C154417B14AE57D61351413D0AD7A3C3C154415C8FC295D0135141D7A3706DBFC15441B81E85ABC71351411F85EBC1B8C15441C3F528BCB7135141F6285CAFACC15441D7A3703DAB135141AE47E16AA3C15441C3F5284CA71351418FC2F518A1C1544114AE4751A6135141C3F528DCA1C15441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000295C8FC26E135141EC51B8AED8C154416C0B39A179135141C9052FEFE0C1544111E5E4D382135141C56048EBE7C15441F6285CDF8D135141EC51B84EF0C154419ADFED74871351417AC98A82EAC1544107B3FC6A81135141DD2C695EE5C154417C15C59F7E135141ABFAE939E3C15441A409CA1D7A1351419E2F69C7DFC154414A33D724751351413AEE8B4EDCC1544111677CD4721351410D05ECB0DAC15441FE84584D6F135141D8D5483AD8C15441295C8FC26E135141EC51B8AED8C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>122107 - 72666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B00000014AE4751A6135141C3F528DCA1C154411F85EBB19E1351411F85EB91AAC15441295C8FA292135141AE47E15AB7C1544133333343861351411F85EBD1C3C154413D0AD7737B13514152B81EA5CDC15441295C8F027413514185EB51A8D3C15441333333436F13514133333333D8C154411F85EB417A1351410AD7A3E0DFC15441A4703DBA831351413D0AD723E7C15441F6285CDF8D135141EC51B84EF0C15441713D0AC78F13514148E17A34F0C15441B81E85CB93135141D7A3706DECC1544166666656A0135141A4703DDADEC15441000000B0A413514114AE4771DBC15441E17A14BEA8135141EC51B8FED8C1544100000020C113514133333333D0C154418FC2F528D0135141A4703D1ACBC15441D7A3705DD51351410AD7A330C5C15441295C8F52D71351418FC2F5A8C6C15441AE47E1BAD8135141295C8FE2C5C154417B14AE57D61351413D0AD7A3C3C154415C8FC295D0135141D7A3706DBFC15441B81E85ABC71351411F85EBC1B8C15441C3F528BCB7135141F6285CAFACC15441D7A3703DAB135141AE47E16AA3C15441C3F5284CA71351418FC2F518A1C1544114AE4751A6135141C3F528DCA1C15441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000295C8FC26E135141EC51B8AED8C154416C0B39A179135141C9052FEFE0C1544111E5E4D382135141C56048EBE7C15441F6285CDF8D135141EC51B84EF0C154419ADFED74871351417AC98A82EAC1544107B3FC6A81135141DD2C695EE5C154417C15C59F7E135141ABFAE939E3C15441A409CA1D7A1351419E2F69C7DFC154414A33D724751351413AEE8B4EDCC1544111677CD4721351410D05ECB0DAC15441FE84584D6F135141D8D5483AD8C15441295C8FC26E135141EC51B8AED8C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>124489 - 2993281
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5284CE1C85041000000608BF9544152B81EE5DFC850410AD7A35095F95441B81E85CBF5C8504185EB518896F95441B81E859B03C95041F6285C1F96F954417B14AE5711C950419A9999A996F95441CDCCCC2C1BC95041AE47E18A96F95441295C8FF224C95041713D0A1797F95441B81E85BB29C95041B81E850B98F95441295C8F922DC950411F85EB019AF95441295C8FB22DC9504148E17A9494F954413D0AD7B311C950413333333392F954418FC2F50812C950410AD7A3108EF95441C3F5284CE1C85041000000608BF95441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000005DB0006604C950417D1B522796F954414B75A5C90AC95041B287A06796F954414654911D0DC95041B75B0E7F96F954415D4681550FC950414688629596F95441E70C441F11C950417ECD61A796F95441725BF25B12C95041B5706CA696F9544199889B5A13C950418ACB50A396F95441CDCCCC2C1BC95041AE47E18A96F95441519C17091CC950413EC6389796F954413AB972B020C95041F58AF7D996F95441CA50F01422C95041E76EF0ED96F954419483364823C95041BB7227FF96F954415C39F46C24C9504140068E0F97F9544151B6C41125C9504167C5441D97F95441B0BCD3AB29C950419452630898F954412E2275052AC95041D29D4E3198F954418905347C2BC9504104D7D3F098F95441295C8F922DC950411F85EB019AF9544195019FA32DC95041B8CF922097F95441FBE911A82DC95041648D4D6096F95441E66DC0AB2DC950415EF92FC195F954415688FDAC2DC95041AE4E508695F9544196438B042DC950416891ED5496F95441333333E320C95041819543F394F95441D34D621812C95041FA7E6A6494F954411CA3890612C950418678126492F95441902AEC260BC95041AF5421B892F954413249E94C04C95041BE8D9A2293F954413271DCFE03C950411502442396F954415DB0006604C950417D1B522796F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>124489 - 3785954
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5284CE1C85041000000608BF9544152B81EE5DFC850410AD7A35095F95441B81E85CBF5C8504185EB518896F95441B81E859B03C95041F6285C1F96F954417B14AE5711C950419A9999A996F95441CDCCCC2C1BC95041AE47E18A96F95441295C8FF224C95041713D0A1797F95441B81E85BB29C95041B81E850B98F95441295C8F922DC950411F85EB019AF95441295C8FB22DC9504148E17A9494F954413D0AD7B311C950413333333392F954418FC2F50812C950410AD7A3108EF95441C3F5284CE1C85041000000608BF95441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000005DB0006604C950417D1B522796F954414B75A5C90AC95041B287A06796F954414654911D0DC95041B75B0E7F96F954415D4681550FC950414688629596F95441E70C441F11C950417ECD61A796F95441725BF25B12C95041B5706CA696F9544199889B5A13C950418ACB50A396F95441CDCCCC2C1BC95041AE47E18A96F95441519C17091CC950413EC6389796F954413AB972B020C95041F58AF7D996F95441CA50F01422C95041E76EF0ED96F954419483364823C95041BB7227FF96F954415C39F46C24C9504140068E0F97F9544151B6C41125C9504167C5441D97F95441B0BCD3AB29C950419452630898F954412E2275052AC95041D29D4E3198F954418905347C2BC9504104D7D3F098F95441295C8F922DC950411F85EB019AF9544195019FA32DC95041B8CF922097F95441FBE911A82DC95041648D4D6096F95441E66DC0AB2DC950415EF92FC195F954415688FDAC2DC95041AE4E508695F9544196438B042DC950416891ED5496F95441333333E320C95041819543F394F95441D34D621812C95041FA7E6A6494F954411CA3890612C950418678126492F95441902AEC260BC95041AF5421B892F954413249E94C04C95041BE8D9A2293F954413271DCFE03C950411502442396F954415DB0006604C950417D1B522796F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132219 - 1224582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17A943E815141F6285C5FAA8E544152B81E953D81514185EB5198AC8E5441333333E338815141EC51B85EAF8E544185EB51B833815141EC51B83EAE8E54411F85EBF11581514114AE4751C08E5441295C8FA2CE805141EC51B8FEEA8E5441AE47E13AAC8051410AD7A3E0FF8E5441F6285C6FAF8051415C8FC245058F54419A9999B9EC805141EC51B84EE08E5441D7A3701D34815141F6285CDFB48E54411F85EB814481514148E17A34AA8E5441B81E85FB49815141C3F528DCB28E544185EB51784A8151411F85EBF1B18E54411F85EB314B815141B81E850BB18E5441666666A64B815141713D0AB7B08E54410AD7A3A041815141AE47E1CA9F8E5441D7A3707D4081514185EB51E89D8E544185EB51283A815141CDCCCC0CA08E54417B14AEA73E815141E17A144EA88E544148E17A943E815141F6285C5FAA8E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C2F812C144815141C67DD9239B8E544181A1561C428151418ECBF9589C8E5441A820C33740815141FB8B434B9D8E5441F9782D99418151413A8783BE9F8E54418520F21A438151411F7DA149A28E5441D1ECB884458151410A5CB75CA68E54419E01BFB3488151417E0AD8BCAB8E5441666666A64B815141713D0AB7B08E54418B5D79FA4C81514175940639B08E5441B42291A44E8151415B8D5125AF8E544132164E465081514197295222AE8E5441586655D7518151417D229D0EAD8E5441259E963E538151411162531CAC8E544194D3F04954815141F4E58DEFAA8E5441F93409F154815141E13D0A27AA8E5441A77B741255815141204F1B3DA98E5441F2D5D7A5548151415701FB07A88E54417C414C4F5381514127DDB112A68E544199EC760651815141D3DD71A5A28E54417C70B1D94F815141AD8D6A14A18E54416269FCC54E8151413CE3FFEF9F8E54417D9F16644C8151414D45D8299D8E5441B7C606484B815141296AE1B19B8E544143A78B0A4A8151419DB8C179998E54412E8AF728498151413BCCB9EB988E5441C2F812C144815141C67DD9239B8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132219 - 3986060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17A943E815141F6285C5FAA8E544152B81E953D81514185EB5198AC8E5441333333E338815141EC51B85EAF8E544185EB51B833815141EC51B83EAE8E54411F85EBF11581514114AE4751C08E5441295C8FA2CE805141EC51B8FEEA8E5441AE47E13AAC8051410AD7A3E0FF8E5441F6285C6FAF8051415C8FC245058F54419A9999B9EC805141EC51B84EE08E5441D7A3701D34815141F6285CDFB48E54411F85EB814481514148E17A34AA8E5441B81E85FB49815141C3F528DCB28E544185EB51784A8151411F85EBF1B18E54411F85EB314B815141B81E850BB18E5441666666A64B815141713D0AB7B08E54410AD7A3A041815141AE47E1CA9F8E5441D7A3707D4081514185EB51E89D8E544185EB51283A815141CDCCCC0CA08E54417B14AEA73E815141E17A144EA88E544148E17A943E815141F6285C5FAA8E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C2F812C144815141C67DD9239B8E544181A1561C428151418ECBF9589C8E5441A820C33740815141FB8B434B9D8E5441F9782D99418151413A8783BE9F8E54418520F21A438151411F7DA149A28E5441D1ECB884458151410A5CB75CA68E54419E01BFB3488151417E0AD8BCAB8E5441666666A64B815141713D0AB7B08E54418B5D79FA4C81514175940639B08E5441B42291A44E8151415B8D5125AF8E544132164E465081514197295222AE8E5441586655D7518151417D229D0EAD8E5441259E963E538151411162531CAC8E544194D3F04954815141F4E58DEFAA8E5441F93409F154815141E13D0A27AA8E5441A77B741255815141204F1B3DA98E5441F2D5D7A5548151415701FB07A88E54417C414C4F5381514127DDB112A68E544199EC760651815141D3DD71A5A28E54417C70B1D94F815141AD8D6A14A18E54416269FCC54E8151413CE3FFEF9F8E54417D9F16644C8151414D45D8299D8E5441B7C606484B815141296AE1B19B8E544143A78B0A4A8151419DB8C179998E54412E8AF728498151413BCCB9EB988E5441C2F812C144815141C67DD9239B8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238023 - 396527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB5148F5BD50413333332397D05441EC51B85E12BE5041C3F5289C9DD05441CDCCCC8C1DBE504114AE478195D054417B14AE3722BE504114AE472193D054416666662626BE5041295C8F2292D05441000000302BBE5041F6285C3F92D054415C8FC2952EBE504152B81EB591D05441295C8F9231BE504185EB511890D05441EC51B82E35BE5041CDCCCCEC8CD0544148E17A7438BE50410000006089D05441333333533ABE50418FC2F56886D05441295C8F123CBE50410AD7A3D07FD05441A4703DBA36BE50411F85EB417DD05441EC51B8FE2CBE50413D0AD79378D0544185EB51E826BE50411F85EBA175D05441F6285CCF22BE5041EC51B86E78D0544148E17A141FBE5041713D0AE778D05441333333E31CBE5041D7A370BD78D05441B81E856B04BE5041B81E854B73D05441CDCCCC6C01BE50413333334382D054419A999949F5BD5041F6285CBF7FD0544166666626EEBD50419A99998988D054417B14AE97E7BD50417B14AE1794D0544185EB5148F5BD50413333332397D05441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000017E27A141FBE50415C3D0AE778D05441B808E7131EBE5041FAFE05D478D0544120C731121EBE50419496E5D378D05441E73233E31CBE5041FCA370BD78D054416274776B04BE5041A469C94B73D05441CDCCCC6C01BE50413333334382D054419E32C20B35BE5041590B800B8DD05441E508CD2035BE50416EC705F98CD05441EC51B82E35BE5041CDCCCCEC8CD054411089AAEE36BE5041D17DDE068BD0544105E17A7438BE50418BFFFF5F89D054417A3233533ABE504116C3F56886D05441245C8F123CBE504108D7A3D07FD05441AA475CB23BBE50418D299CA27FD054414BC1075C3BBE5041FB664D797FD0544124703DBA36BE50417C85EB417DD05441C451B8FE2CBE50419C0AD79378D0544199EB51E826BE5041EB85EBA175D054418D7600D223BE5041AC92FABD77D05441F6285CCF22BE5041EC51B86E78D0544119393DD91FBE5041844E3FCE78D0544117E27A141FBE50415C3D0AE778D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>142742 - 969167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE477132EE504185EB513823C1544185EB51682EEE50418FC2F5C81CC1544114AE476119EE504152B81EA501C154415C8FC2A5F5ED504185EB51F8DEC0544152B81E55E9ED5041D7A3704DEFC05441AE47E11A27EE50413D0AD7732AC1544114AE477132EE504185EB513823C15441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000CAC1D0EE29EE504139C6770217C1544185EB51682EEE50418FC2F5C81CC1544144A9417132EE50413E52483823C15441CDCCCC2C33EE50410AD7A3C022C15441AE47E1CA33EE50413D0AD77321C15441F41A39D533EE5041D69B0C5521C15441DE4B75A933EE5041C48F093221C15441A4C42E4333EE50418231B2D620C15441398A28F633EE50416ECEF45721C15441002A847A2FEE5041EFD81FD11AC15441C8C9DFFE2AEE5041C64ED11415C15441BB6F638027EE50410DBF113111C154413CD9C4C91FEE50412B46CDC008C154411232D39C1DEE5041D6397DC606C154412F7F484B1CEE504157C8CEFE04C15441921F5BA51AEE50413A98FCC002C15441DA72F8501AEE5041E58BACC600C154418EF8ECAE1BEE5041B05063F6FEC0544185EB510821EE5041B81E85BBF8C05441713D0A7729EE504185EB5188EEC05441C3F5281C29EE50413D0AD7A3EDC05441713D0AE71FEE5041C3F5289CECC05441CDCCCC9C19EE5041D7A3703DEBC054411F85EB210EEE5041713D0A67E6C0544133333303F8ED5041E17A146EDDC05441C3F5287CF6ED5041B81E85DBDDC054415C8FC2A5F5ED504185EB51F8DEC05441AF6CD05319EE5041486E528001C15441D197A3C521EE50418DB6FC790CC154410D265C6826EE5041A348AD7512C15441CAC1D0EE29EE504139C6770217C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238741 - 58142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000100000023000000A4703D3AF2BB5041A4703DDA26CC54413D0AD793EDBB504114AE473126CC544152B81EE5E8BB504152B81ED525CC5441AE47E1AACBBB5041C3F528CC24CC54410AD7A3E0C2BB50415C8FC24524CC544100000070B4BB50410000001022CC5441AE47E12AB0BB50416666663621CC544152B81E15ACBB5041C3F528AC1FCC5441713D0A87A8BB5041AE47E13A1DCC5441D7A3700D9CBB5041AE47E1AA25CC5441295C8F328BBB50413D0AD7B331CC544152B81E5585BB50418FC2F5A836CC54413D0AD7D37FBB504148E17A343CCC54418FC2F5E87ABB50417B14AE2742CC5441A4703D3A76BB5041A4703D5A48CC54413333330371BB5041B81E850B51CC54413D0AD7F370BB5041CDCCCC2C51CC5441F6285C7FCFBB50415C8FC28554CC544148E17A74D8BB5041713D0AD754CC544148E17A34DDBB5041295C8F1255CC5441E17A14BEE0BB50418FC2F52855CC54418FC2F588E3BB5041E17A14CE53CC544148E17A54E6BB5041D7A3705D52CC544114AE4741E9BB50416666666650CC5441333333D3EABB5041AE47E1EA4ECC544100000070EBBB5041CDCCCCBC4DCC54415C8FC265ECBB50417B14AEE74BCC544152B81E25EEBB5041D7A370AD49CC5441C3F5284CF0BB50410000008047CC5441AE47E16AF2BB50417B14AEE743CC5441D7A3708DF5BB504185EB51583CCC54411F85EB51F8BB504148E17AE435CC5441F6285C8FFCBB5041713D0A472ACC5441B81E85CBFCBB5041000000B028CC5441A4703D3AF2BB5041A4703DDA26CC5441
+</a>
+
+<b>
+010600000002000000010300000001000000520000000EFE673176BB504176E1F66848CC5441F205A99972BB5041377405664ECC54410F58E1F770BB5041D5E4EE2B51CC5441E278CA8BCEBB5041B434FD7854CC5441EB984749D3BB50419D9223A854CC544148E17A74D8BB5041713D0AD754CC544116C78133DABB50410FB9EBEC54CC54414055205ADFBB50414BCE272055CC5441027313B8E0BB5041D7BDCF2855CC5441E2824DE1E1BB50417129289554CC544116B88E94E6BB50416B674C2C52CC54419EE3954AE9BB504111F59C5D50CC5441D1CAD3B6E9BB50415A6567F74FCC54418E5F7EC5EABB50419DD0BCE84ECC5441577DED51ECBB50418B77890D4CCC54415C8FC265ECBB50417B14AEE74BCC544173800068ECBB50412F7DD2E44BCC5441F2E3C470ECBB5041BDD6A6D44BCC54417E7A5B6DEDBB504158A1AD974ACC544152B81E25EEBB5041D7A370AD49CC544113BB0E34EEBB50413437549E49CC544140BE0355EEBB50419C97F87449CC544105EDF0EDEEBB5041D95549E248CC5441E31EC7E3EFBB5041913298E947CC5441F1C12E3EF0BB5041D7C2238E47CC5441E39DFD39F2BB504183FBAD3044CC54416ED3DC7DF2BB5041CF5DE7B943CC5441105052A0F2BB5041A77FCE6643CC544199F2B5DFF2BB50412FD4F1CD42CC54418967DC30F3BB50415E757EDA41CC544182D9D943F3BB50415E757EDA41CC5441593C9182F3BB50415CFC374541CC5441D7A3708DF5BB504185EB51583CCC5441C2E01CDEF6BB504114BF5B4739CC5441DD48BFC0F7BB50414659EE2B37CC54412A521FD9F8BB504106C51B7234CC5441A47D0034FABB50419104DFBB30CC5441462B430FFBBB504111613B632ECC544131551E6DFCBB5041E1F021862ACC5441CCF047BCFCBB5041B6361B1729CC5441B81E85CBFCBB5041000000B028CC54415995AAC7F6BB50419F759CA427CC544117611F0FF0BB5041D2FA728B26CC54413D0AD793EDBB504114AE473126CC54412F4674CAEBBB5041C2811D0E26CC5441D04F4DC3E4BB50419B00C8B325CC54417C5FDD47CABB5041F8EF67C624CC544194C68BF3C2BB504179A2E34624CC54410AD7A3E0C2BB50415C8FC24524CC54415C74CFDEC2BB5041FEDF7A4524CC54414784E4A3C2BB504129D2794124CC5441F0025F19BABB50410771D2ED22CC544100000070B4BB50410000001022CC544186EBFF23B4BB50418502DF0022CC5441DFCDF25BB3BB50410A93CBE121CC54417793E560B0BB5041F51A274121CC5441AE47E12AB0BB50416666663621CC544161062927B0BB50410B69FF3421CC54412928ECD5AFBB5041501FE52321CC5441D0C45A19AEBB5041A755C66E20CC544152B81E15ACBB5041C3F528AC1FCC5441ACD7F7DCABBB5041BE8C94851FCC5441A11D76D4ABBB5041E9531D821FCC544136F08069ABBB504182CB3F361FCC5441BBECAE14AABB504147C2154C1ECC5441D8823398A8BB504113B9AB461DCC54413401F1AAA1BB5041DD3C9FDE21CC54414537A175A1BB5041E5F4AD0222CC54417A95F4BC9ABB50411CFD239B26CC5441AD87521C97BB5041F8B8363229CC54410466B86D93BB504162E342D32BCC5441B14D0C748DBB5041DC0DE11F30CC5441DC8F05C88BBB5041EA9F1E4931CC5441295C8F328BBB50413D0AD7B331CC544123DA04FD85BB5041DC500A1B36CC5441700D75DB82BB5041EF1E3A2739CC544151F9C20280BB50417BAA37053CCC5441ABC0CFCB7BBB50419A9D321541CC54418FC2F5E87ABB50417B14AE2742CC5441622AD90678BB504150A89AF845CC5441B85A846277BB5041990252DC46CC54410EFE673176BB504176E1F66848CC54410103000000010000000600000050BC91F4E0BB5041C22F850E55CC54417B192D28E1BB5041B5A87AF554CC5441DC055ED8E5BB5041A832629D52CC54415E0AA8F2E5BB5041B2DAD68F52CC5441E2824DE1E1BB50417129289554CC544150BC91F4E0BB5041C22F850E55CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238741 - 120643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000023000000A4703D3AF2BB5041A4703DDA26CC54413D0AD793EDBB504114AE473126CC544152B81EE5E8BB504152B81ED525CC5441AE47E1AACBBB5041C3F528CC24CC54410AD7A3E0C2BB50415C8FC24524CC544100000070B4BB50410000001022CC5441AE47E12AB0BB50416666663621CC544152B81E15ACBB5041C3F528AC1FCC5441713D0A87A8BB5041AE47E13A1DCC5441D7A3700D9CBB5041AE47E1AA25CC5441295C8F328BBB50413D0AD7B331CC544152B81E5585BB50418FC2F5A836CC54413D0AD7D37FBB504148E17A343CCC54418FC2F5E87ABB50417B14AE2742CC5441A4703D3A76BB5041A4703D5A48CC54413333330371BB5041B81E850B51CC54413D0AD7F370BB5041CDCCCC2C51CC5441F6285C7FCFBB50415C8FC28554CC544148E17A74D8BB5041713D0AD754CC544148E17A34DDBB5041295C8F1255CC5441E17A14BEE0BB50418FC2F52855CC54418FC2F588E3BB5041E17A14CE53CC544148E17A54E6BB5041D7A3705D52CC544114AE4741E9BB50416666666650CC5441333333D3EABB5041AE47E1EA4ECC544100000070EBBB5041CDCCCCBC4DCC54415C8FC265ECBB50417B14AEE74BCC544152B81E25EEBB5041D7A370AD49CC5441C3F5284CF0BB50410000008047CC5441AE47E16AF2BB50417B14AEE743CC5441D7A3708DF5BB504185EB51583CCC54411F85EB51F8BB504148E17AE435CC5441F6285C8FFCBB5041713D0A472ACC5441B81E85CBFCBB5041000000B028CC5441A4703D3AF2BB5041A4703DDA26CC5441
+</a>
+
+<b>
+010600000001000000010300000001000000520000000BFE673176BB504173E1F66848CC5441F305A99972BB5041337405664ECC54410A58E1F770BB5041D0E4EE2B51CC5441E078CA8BCEBB5041B434FD7854CC5441E6984749D3BB5041A29223A854CC544148E17A74D8BB5041713D0AD754CC544115C78133DABB50410CB9EBEC54CC54414055205ADFBB504150CE272055CC5441047313B8E0BB5041D8BDCF2855CC5441E0824DE1E1BB50417529289554CC544114B88E94E6BB50416C674C2C52CC5441A2E3954AE9BB50410EF59C5D50CC5441CECAD3B6E9BB50415F6567F74FCC54418C5F7EC5EABB5041A1D0BCE84ECC54415C7DED51ECBB50418E77890D4CCC54415C8FC265ECBB50417B14AEE74BCC54416E800068ECBB5041307DD2E44BCC5441F5E3C470ECBB5041B9D6A6D44BCC54417A7A5B6DEDBB504159A1AD974ACC544152B81E25EEBB5041D7A370AD49CC54410FBB0E34EEBB50412F37549E49CC54413BBE0355EEBB5041A197F87449CC544108EDF0EDEEBB5041D55549E248CC5441E31EC7E3EFBB5041913298E947CC5441F5C12E3EF0BB5041D3C2238E47CC5441E69DFD39F2BB504186FBAD3044CC54416BD3DC7DF2BB5041D25DE7B943CC54410F5052A0F2BB5041AA7FCE6643CC544196F2B5DFF2BB50412ED4F1CD42CC54418A67DC30F3BB50415C757EDA41CC544185D9D943F3BB50415C757EDA41CC54415E3C9182F3BB50415BFC374541CC5441D7A3708DF5BB504185EB51583CCC5441C1E01CDEF6BB504119BF5B4739CC5441E048BFC0F7BB50414459EE2B37CC54412B521FD9F8BB504102C51B7234CC5441A97D0034FABB50419304DFBB30CC5441432B430FFBBB504115613B632ECC544135551E6DFCBB5041E1F021862ACC5441D0F047BCFCBB5041B2361B1729CC5441B81E85CBFCBB5041000000B028CC54415595AAC7F6BB5041A2759CA427CC544119611F0FF0BB5041D4FA728B26CC54413D0AD793EDBB504114AE473126CC54412E4674CAEBBB5041C6811D0E26CC5441D44F4DC3E4BB5041A000C8B325CC5441775FDD47CABB5041F4EF67C624CC544192C68BF3C2BB50417CA2E34624CC54410AD7A3E0C2BB50415C8FC24524CC54415C74CFDEC2BB5041FBDF7A4524CC54414484E4A3C2BB504129D2794124CC5441F0025F19BABB50410671D2ED22CC544100000070B4BB50410000001022CC544188EBFF23B4BB50418402DF0022CC5441DECDF25BB3BB50410693CBE121CC54417893E560B0BB5041F71A274121CC5441AE47E12AB0BB50416666663621CC54415F062927B0BB50410C69FF3421CC54412728ECD5AFBB5041541FE52321CC5441D2C45A19AEBB5041A555C66E20CC544152B81E15ACBB5041C3F528AC1FCC5441A8D7F7DCABBB5041BF8C94851FCC54419E1D76D4ABBB5041EE531D821FCC544135F08069ABBB50417DCB3F361FCC5441BDECAE14AABB50414AC2154C1ECC5441DA823398A8BB504116B9AB461DCC54413501F1AAA1BB5041DC3C9FDE21CC54414837A175A1BB5041E6F4AD0222CC54417E95F4BC9ABB504120FD239B26CC5441AD87521C97BB5041FAB8363229CC54410366B86D93BB50415FE342D32BCC5441AC4D0C748DBB5041D70DE11F30CC5441D78F05C88BBB5041E99F1E4931CC5441295C8F328BBB50413D0AD7B331CC544125DA04FD85BB5041DC500A1B36CC5441730D75DB82BB5041EA1E3A2739CC54414FF9C20280BB50417CAA37053CCC5441A8C0CFCB7BBB5041979D321541CC54418FC2F5E87ABB50417B14AE2742CC54415E2AD90678BB50414DA89AF845CC5441B85A846277BB5041970252DC46CC54410BFE673176BB504173E1F66848CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238741 - 357511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000023000000A4703D3AF2BB5041A4703DDA26CC54413D0AD793EDBB504114AE473126CC544152B81EE5E8BB504152B81ED525CC5441AE47E1AACBBB5041C3F528CC24CC54410AD7A3E0C2BB50415C8FC24524CC544100000070B4BB50410000001022CC5441AE47E12AB0BB50416666663621CC544152B81E15ACBB5041C3F528AC1FCC5441713D0A87A8BB5041AE47E13A1DCC5441D7A3700D9CBB5041AE47E1AA25CC5441295C8F328BBB50413D0AD7B331CC544152B81E5585BB50418FC2F5A836CC54413D0AD7D37FBB504148E17A343CCC54418FC2F5E87ABB50417B14AE2742CC5441A4703D3A76BB5041A4703D5A48CC54413333330371BB5041B81E850B51CC54413D0AD7F370BB5041CDCCCC2C51CC5441F6285C7FCFBB50415C8FC28554CC544148E17A74D8BB5041713D0AD754CC544148E17A34DDBB5041295C8F1255CC5441E17A14BEE0BB50418FC2F52855CC54418FC2F588E3BB5041E17A14CE53CC544148E17A54E6BB5041D7A3705D52CC544114AE4741E9BB50416666666650CC5441333333D3EABB5041AE47E1EA4ECC544100000070EBBB5041CDCCCCBC4DCC54415C8FC265ECBB50417B14AEE74BCC544152B81E25EEBB5041D7A370AD49CC5441C3F5284CF0BB50410000008047CC5441AE47E16AF2BB50417B14AEE743CC5441D7A3708DF5BB504185EB51583CCC54411F85EB51F8BB504148E17AE435CC5441F6285C8FFCBB5041713D0A472ACC5441B81E85CBFCBB5041000000B028CC5441A4703D3AF2BB5041A4703DDA26CC5441
+</a>
+
+<b>
+010600000001000000010300000001000000520000000BFE673176BB504173E1F66848CC5441F305A99972BB5041337405664ECC54410A58E1F770BB5041D0E4EE2B51CC5441E078CA8BCEBB5041B434FD7854CC5441E6984749D3BB5041A29223A854CC544148E17A74D8BB5041713D0AD754CC544115C78133DABB50410CB9EBEC54CC54414055205ADFBB504150CE272055CC5441047313B8E0BB5041D8BDCF2855CC5441E0824DE1E1BB50417529289554CC544114B88E94E6BB50416C674C2C52CC5441A2E3954AE9BB50410EF59C5D50CC5441CECAD3B6E9BB50415F6567F74FCC54418C5F7EC5EABB5041A1D0BCE84ECC54415C7DED51ECBB50418E77890D4CCC54415C8FC265ECBB50417B14AEE74BCC54416E800068ECBB5041307DD2E44BCC5441F5E3C470ECBB5041B9D6A6D44BCC54417A7A5B6DEDBB504159A1AD974ACC544152B81E25EEBB5041D7A370AD49CC54410FBB0E34EEBB50412F37549E49CC54413BBE0355EEBB5041A197F87449CC544108EDF0EDEEBB5041D55549E248CC5441E31EC7E3EFBB5041913298E947CC5441F5C12E3EF0BB5041D3C2238E47CC5441E69DFD39F2BB504186FBAD3044CC54416BD3DC7DF2BB5041D25DE7B943CC54410F5052A0F2BB5041AA7FCE6643CC544196F2B5DFF2BB50412ED4F1CD42CC54418A67DC30F3BB50415C757EDA41CC544185D9D943F3BB50415C757EDA41CC54415E3C9182F3BB50415BFC374541CC5441D7A3708DF5BB504185EB51583CCC5441C1E01CDEF6BB504119BF5B4739CC5441E048BFC0F7BB50414459EE2B37CC54412B521FD9F8BB504102C51B7234CC5441A97D0034FABB50419304DFBB30CC5441432B430FFBBB504115613B632ECC544135551E6DFCBB5041E1F021862ACC5441D0F047BCFCBB5041B2361B1729CC5441B81E85CBFCBB5041000000B028CC54415595AAC7F6BB5041A2759CA427CC544119611F0FF0BB5041D4FA728B26CC54413D0AD793EDBB504114AE473126CC54412E4674CAEBBB5041C6811D0E26CC5441D44F4DC3E4BB5041A000C8B325CC5441775FDD47CABB5041F4EF67C624CC544192C68BF3C2BB50417CA2E34624CC54410AD7A3E0C2BB50415C8FC24524CC54415C74CFDEC2BB5041FBDF7A4524CC54414484E4A3C2BB504129D2794124CC5441F0025F19BABB50410671D2ED22CC544100000070B4BB50410000001022CC544188EBFF23B4BB50418402DF0022CC5441DECDF25BB3BB50410693CBE121CC54417893E560B0BB5041F71A274121CC5441AE47E12AB0BB50416666663621CC54415F062927B0BB50410C69FF3421CC54412728ECD5AFBB5041541FE52321CC5441D2C45A19AEBB5041A555C66E20CC544152B81E15ACBB5041C3F528AC1FCC5441A8D7F7DCABBB5041BF8C94851FCC54419E1D76D4ABBB5041EE531D821FCC544135F08069ABBB50417DCB3F361FCC5441BDECAE14AABB50414AC2154C1ECC5441DA823398A8BB504116B9AB461DCC54413501F1AAA1BB5041DC3C9FDE21CC54414837A175A1BB5041E6F4AD0222CC54417E95F4BC9ABB504120FD239B26CC5441AD87521C97BB5041FAB8363229CC54410366B86D93BB50415FE342D32BCC5441AC4D0C748DBB5041D70DE11F30CC5441D78F05C88BBB5041E99F1E4931CC5441295C8F328BBB50413D0AD7B331CC544125DA04FD85BB5041DC500A1B36CC5441730D75DB82BB5041EA1E3A2739CC54414FF9C20280BB50417CAA37053CCC5441A8C0CFCB7BBB5041979D321541CC54418FC2F5E87ABB50417B14AE2742CC54415E2AD90678BB50414DA89AF845CC5441B85A846277BB5041970252DC46CC54410BFE673176BB504173E1F66848CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 1637645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E5655416565F6E573A15041D3F4428C77565541
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541713D0A0748A15041333333E3C15655415C8FC2454AA15041A4703D5AC15655418FC2F5F850A150410AD7A350BF5655417063B13054A150415F27F7A6CA5655411284EF7653A150411AE67A1ACC5655413D0AD76353A150411F85EBF1CB56554114AE47314EA15041B81E855BCC56554152B81E5554A15041D7A3707DDC5655413333330358A150413D0AD7C3DA5655418FC2F5E859A15041A4703DCAD9565541A4703D0A5DA150418FC2F518D856554148E17A4465A15041D7A3705DDE5655411F85EB0169A1504185EB51C8DA565541666666366DA1504148E17A14E0565541E17A145E6DA1504185EB5188E55655417B14AEA76BA15041D7A3706DE95655413333332367A150415C8FC2F5E8565541D7A3708D63A150410AD7A310E5565541713D0A8761A15041B81E852BE1565541666666E65BA150410AD7A3D0E156554148E17AF45EA150411F85EB51E85655413D0AD78362A1504185EB51A8F056554148E17AC464A15041F6285C1FF95655417B92E8B865A1504132120ECA025755414D1F51EE68A15041C93992D702575541509ABAB076A15041FA0543DB045755412EE5DB1781A15041498E2A6F095755414CBE5DEC82A15041E0EB92E201575541D7A370AD7CA150410AD7A340F6565541BEB5FEF47DA15041341BFD3DF5565541680692F282A150410DFA7775F256554101BC266586A15041F3DE7DE7EF565541DA1DB11488A15041D2448A08EB565541E99C40718EA15041591A1355D6565541C49429DC8CA150414BD5EA54D0565541E17A145E8FA15041295C8F02CE565541EC51B8DE94A15041713D0AF7C85655419A9999099CA150411F85EBD1C15655413D0AD7639CA15041D7A3702DC1565541C3C179A790A15041F62D6D9BB2565541D4E9E5BC8EA1504113993B87B45655410624CA9F8EA15041318FA15AB45655411306E9748EA15041C5138D86B4565541FB83561B7AA1504196A33494945655416C8714FB6DA15041D602DAA281565541AC4E330C6CA1504125E7C49D7E565541B872B8CA69A1504120E1A6177B56554159F2BC7669A15041FC2B75947A565541F8FE239D69A15041390908887A565541F6285C6F66A150413D0AD78370565541967BFF5264A150415A1E39D36C5655414BE0FF5061A15041FA02633768565541B25B343B61A150410A8C6B0468565541CC44D1E163A15041B42739E2665655410000002063A150415C8FC26564565541EC51B8DE62A15041000000106356554114AE478162A15041CDCCCCBC61565541F6285C1F62A1504148E17A44605655411F85EBA161A15041333333235E5655419A9999F95EA1504185EB51A85F5655418531986C59A15041350C5FD062565541BF61C53452A150415178BDEE6656554166F52FB246A1504172748F516D5655413C97141344A1504193B1F5FA69565541662E70E942A150419303512C68565541ED10FF623DA1504116B64DB9695655413F24D72633A150419E098FC46C5655410D42D0752CA1504143A2798F6D565541EF24BD2529A150417F9ECC1D6E565541AE633B5A2BA15041046D976E725655416ABD82BD2DA150417CC3107272565541026DE1492EA150412171B45C72565541AE3953DA3AA15041E8E37397725655412E94C8DF42A150414F8935BC72565541EF7512F545A15041619583B2725655411CFCED2648A150413212ADB872565541A4703D2A49A15041B81E85BB72565541CC3D873A49A15041A1276BD8725655419B3D505149A150413C06D80073565541D7A3708D49A15041B81E856B73565541BD084BE14CA1504123CC3E5679565541D75C60784FA150413B36A5967856554112B4914454A150416F6ABD1C77565541A1B140A258A15041C657D6C475565541C0C8726759A150416864298875565541EB0941835EA15041CB8BC2F5735655410C4B30B85EA15041E8ED78E573565541C9B088AC62A15041D5DD699580565541070000003333339352A15041295C8FB29B565541B81E858B50A150411F85EBF1975655411359527B59A15041C15ACE77915655417FB381C459A15041497F50159256554139D44C6F5EA15041188C7C679D5655411F85EB515CA150411F85EB61985655413333339352A15041295C8FB29B5655410A00000014AE478167A1504185EB5108B8565541713D0AB764A150415C8FC2E5B8565541E17A145E5DA15041C3F5284CBB565541C17A140E5BA1504197A3700DBC565541B81E851B64A15041B81E851BAD565541FE01E0F764A150414B1B50CCAF565541B795418865A15041C5D5548FB1565541B96BCFB37CA1504137F6914BA856554114AE479165A15041B81E85ABB156554114AE478167A1504185EB5108B85655410B00000087E4A3EC80A15041D1B6D89BDA56554120AE64B377A15041A1E65644E25655410505B50272A150418AED8739E7565541155CE8BD70A1504109C789AEE9565541D433521F70A15041593BC0E1EA565541D7A370ED6EA15041000000B0E55655411F85EB2173A15041C3F5283CE0565541B81E850B79A15041F6285C1FE156554185EB51A87BA15041666666F6DE565541A4703DDA7DA150415C8FC225DD56554187E4A3EC80A15041D1B6D89BDA5655410F000000B8E3A3EC80A15041BDB6D89BDA565541A4703D8A81A150419A999919DA5655416E482B8681A1504153F45512DA565541AD806B6585A15041252D49D4D6565541EC51B88E82A150415C8FC275D356554185EB513880A1504185EB51B8CF5655410000006080A15041B81E85ABCB5655415C8FC25583A1504152B81EF5C956554148E17A8485A15041333333D3CB5655413D0AD77386A150419A9999C9CE565541CDCCCC5C85A15041F6285CBFD15655413D0AD72386A15041D7A3709DD356554131AD53AC89A15041C8A41421D356554105CC114784A150418C4896DDD7565541B8E3A3EC80A15041BDB6D89BDA56554104000000FFBF7D9C7FA150418348CE21A756554101FC32BB84A15041997EEC00AE56554185EB514884A150418FC2F588AD565541FFBF7D9C7FA150418348CE21A75655410800000048E17A2462A15041295C8F02CB56554148E17A0457A15041666666A6D3565541E6771AA353A1504149754B78CC565541333333A354A1504185EB51D8CB565541C3F5286C5CA150418FC2F548C0565541333333735EA1504114AE4791C6565541C3F528DC5FA150410AD7A3F0CA56554148E17A2462A15041295C8F02CB565541060000007B14AE1776A150410AD7A390CF565541666666F677A15041C3F528BCCA565541295C8FF27CA150415C8FC2C5D3565541B81E852B7CA1504133333393D6565541D7A3705D79A15041CDCCCCDCD45655417B14AE1776A150410AD7A390CF56554104000000547375186CA15041BD651A00F3565541333333336CA15041A4703D7AF2565541BA79F4B86CA1504192404177F1565541547375186CA15041BD651A00F3565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 5286048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E5655416565F6E573A15041D3F4428C77565541
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541713D0A0748A15041333333E3C15655415C8FC2454AA15041A4703D5AC15655418FC2F5F850A150410AD7A350BF5655417063B13054A150415F27F7A6CA5655411284EF7653A150411AE67A1ACC5655413D0AD76353A150411F85EBF1CB56554114AE47314EA15041B81E855BCC56554152B81E5554A15041D7A3707DDC5655413333330358A150413D0AD7C3DA5655418FC2F5E859A15041A4703DCAD9565541A4703D0A5DA150418FC2F518D856554148E17A4465A15041D7A3705DDE5655411F85EB0169A1504185EB51C8DA565541666666366DA1504148E17A14E0565541E17A145E6DA1504185EB5188E55655417B14AEA76BA15041D7A3706DE95655413333332367A150415C8FC2F5E8565541D7A3708D63A150410AD7A310E5565541713D0A8761A15041B81E852BE1565541666666E65BA150410AD7A3D0E156554148E17AF45EA150411F85EB51E85655413D0AD78362A1504185EB51A8F056554148E17AC464A15041F6285C1FF95655417B92E8B865A1504132120ECA025755414D1F51EE68A15041C93992D702575541509ABAB076A15041FA0543DB045755412EE5DB1781A15041498E2A6F095755414CBE5DEC82A15041E0EB92E201575541D7A370AD7CA150410AD7A340F6565541BEB5FEF47DA15041341BFD3DF5565541680692F282A150410DFA7775F256554101BC266586A15041F3DE7DE7EF565541DA1DB11488A15041D2448A08EB565541E99C40718EA15041591A1355D6565541C49429DC8CA150414BD5EA54D0565541E17A145E8FA15041295C8F02CE565541EC51B8DE94A15041713D0AF7C85655419A9999099CA150411F85EBD1C15655413D0AD7639CA15041D7A3702DC1565541C3C179A790A15041F62D6D9BB2565541D4E9E5BC8EA1504113993B87B45655410624CA9F8EA15041318FA15AB45655411306E9748EA15041C5138D86B4565541FB83561B7AA1504196A33494945655416C8714FB6DA15041D602DAA281565541AC4E330C6CA1504125E7C49D7E565541B872B8CA69A1504120E1A6177B56554159F2BC7669A15041FC2B75947A565541F8FE239D69A15041390908887A565541F6285C6F66A150413D0AD78370565541967BFF5264A150415A1E39D36C5655414BE0FF5061A15041FA02633768565541B25B343B61A150410A8C6B0468565541CC44D1E163A15041B42739E2665655410000002063A150415C8FC26564565541EC51B8DE62A15041000000106356554114AE478162A15041CDCCCCBC61565541F6285C1F62A1504148E17A44605655411F85EBA161A15041333333235E5655419A9999F95EA1504185EB51A85F5655418531986C59A15041350C5FD062565541BF61C53452A150415178BDEE6656554166F52FB246A1504172748F516D5655413C97141344A1504193B1F5FA69565541662E70E942A150419303512C68565541ED10FF623DA1504116B64DB9695655413F24D72633A150419E098FC46C5655410D42D0752CA1504143A2798F6D565541EF24BD2529A150417F9ECC1D6E565541AE633B5A2BA15041046D976E725655416ABD82BD2DA150417CC3107272565541026DE1492EA150412171B45C72565541AE3953DA3AA15041E8E37397725655412E94C8DF42A150414F8935BC72565541EF7512F545A15041619583B2725655411CFCED2648A150413212ADB872565541A4703D2A49A15041B81E85BB72565541CC3D873A49A15041A1276BD8725655419B3D505149A150413C06D80073565541D7A3708D49A15041B81E856B73565541BD084BE14CA1504123CC3E5679565541D75C60784FA150413B36A5967856554112B4914454A150416F6ABD1C77565541A1B140A258A15041C657D6C475565541C0C8726759A150416864298875565541EB0941835EA15041CB8BC2F5735655410C4B30B85EA15041E8ED78E573565541C9B088AC62A15041D5DD699580565541070000003333339352A15041295C8FB29B565541B81E858B50A150411F85EBF1975655411359527B59A15041C15ACE77915655417FB381C459A15041497F50159256554139D44C6F5EA15041188C7C679D5655411F85EB515CA150411F85EB61985655413333339352A15041295C8FB29B5655410A00000014AE478167A1504185EB5108B8565541713D0AB764A150415C8FC2E5B8565541E17A145E5DA15041C3F5284CBB565541C17A140E5BA1504197A3700DBC565541B81E851B64A15041B81E851BAD565541FE01E0F764A150414B1B50CCAF565541B795418865A15041C5D5548FB1565541B96BCFB37CA1504137F6914BA856554114AE479165A15041B81E85ABB156554114AE478167A1504185EB5108B85655410B00000087E4A3EC80A15041D1B6D89BDA56554120AE64B377A15041A1E65644E25655410505B50272A150418AED8739E7565541155CE8BD70A1504109C789AEE9565541D433521F70A15041593BC0E1EA565541D7A370ED6EA15041000000B0E55655411F85EB2173A15041C3F5283CE0565541B81E850B79A15041F6285C1FE156554185EB51A87BA15041666666F6DE565541A4703DDA7DA150415C8FC225DD56554187E4A3EC80A15041D1B6D89BDA5655410F000000B8E3A3EC80A15041BDB6D89BDA565541A4703D8A81A150419A999919DA5655416E482B8681A1504153F45512DA565541AD806B6585A15041252D49D4D6565541EC51B88E82A150415C8FC275D356554185EB513880A1504185EB51B8CF5655410000006080A15041B81E85ABCB5655415C8FC25583A1504152B81EF5C956554148E17A8485A15041333333D3CB5655413D0AD77386A150419A9999C9CE565541CDCCCC5C85A15041F6285CBFD15655413D0AD72386A15041D7A3709DD356554131AD53AC89A15041C8A41421D356554105CC114784A150418C4896DDD7565541B8E3A3EC80A15041BDB6D89BDA56554104000000FFBF7D9C7FA150418348CE21A756554101FC32BB84A15041997EEC00AE56554185EB514884A150418FC2F588AD565541FFBF7D9C7FA150418348CE21A75655410800000048E17A2462A15041295C8F02CB56554148E17A0457A15041666666A6D3565541E6771AA353A1504149754B78CC565541333333A354A1504185EB51D8CB565541C3F5286C5CA150418FC2F548C0565541333333735EA1504114AE4791C6565541C3F528DC5FA150410AD7A3F0CA56554148E17A2462A15041295C8F02CB565541060000007B14AE1776A150410AD7A390CF565541666666F677A15041C3F528BCCA565541295C8FF27CA150415C8FC2C5D3565541B81E852B7CA1504133333393D6565541D7A3705D79A15041CDCCCCDCD45655417B14AE1776A150410AD7A390CF56554104000000547375186CA15041BD651A00F3565541333333336CA15041A4703D7AF2565541BA79F4B86CA1504192404177F1565541547375186CA15041BD651A00F3565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 243174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E5655416565F6E573A15041D3F4428C77565541
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541713D0A0748A15041333333E3C15655415C8FC2454AA15041A4703D5AC15655418FC2F5F850A150410AD7A350BF5655417063B13054A150415F27F7A6CA5655411284EF7653A150411AE67A1ACC5655413D0AD76353A150411F85EBF1CB56554114AE47314EA15041B81E855BCC56554152B81E5554A15041D7A3707DDC5655413333330358A150413D0AD7C3DA5655418FC2F5E859A15041A4703DCAD9565541A4703D0A5DA150418FC2F518D856554148E17A4465A15041D7A3705DDE5655411F85EB0169A1504185EB51C8DA565541666666366DA1504148E17A14E0565541E17A145E6DA1504185EB5188E55655417B14AEA76BA15041D7A3706DE95655413333332367A150415C8FC2F5E8565541D7A3708D63A150410AD7A310E5565541713D0A8761A15041B81E852BE1565541666666E65BA150410AD7A3D0E156554148E17AF45EA150411F85EB51E85655413D0AD78362A1504185EB51A8F056554148E17AC464A15041F6285C1FF95655417B92E8B865A1504132120ECA025755414D1F51EE68A15041C93992D702575541509ABAB076A15041FA0543DB045755412EE5DB1781A15041498E2A6F095755414CBE5DEC82A15041E0EB92E201575541D7A370AD7CA150410AD7A340F6565541BEB5FEF47DA15041341BFD3DF5565541680692F282A150410DFA7775F256554101BC266586A15041F3DE7DE7EF565541DA1DB11488A15041D2448A08EB565541E99C40718EA15041591A1355D6565541C49429DC8CA150414BD5EA54D0565541E17A145E8FA15041295C8F02CE565541EC51B8DE94A15041713D0AF7C85655419A9999099CA150411F85EBD1C15655413D0AD7639CA15041D7A3702DC1565541C3C179A790A15041F62D6D9BB2565541D4E9E5BC8EA1504113993B87B45655410624CA9F8EA15041318FA15AB45655411306E9748EA15041C5138D86B4565541FB83561B7AA1504196A33494945655416C8714FB6DA15041D602DAA281565541AC4E330C6CA1504125E7C49D7E565541B872B8CA69A1504120E1A6177B56554159F2BC7669A15041FC2B75947A565541F8FE239D69A15041390908887A565541F6285C6F66A150413D0AD78370565541967BFF5264A150415A1E39D36C5655414BE0FF5061A15041FA02633768565541B25B343B61A150410A8C6B0468565541CC44D1E163A15041B42739E2665655410000002063A150415C8FC26564565541EC51B8DE62A15041000000106356554114AE478162A15041CDCCCCBC61565541F6285C1F62A1504148E17A44605655411F85EBA161A15041333333235E5655419A9999F95EA1504185EB51A85F5655418531986C59A15041350C5FD062565541BF61C53452A150415178BDEE6656554166F52FB246A1504172748F516D5655413C97141344A1504193B1F5FA69565541662E70E942A150419303512C68565541ED10FF623DA1504116B64DB9695655413F24D72633A150419E098FC46C5655410D42D0752CA1504143A2798F6D565541EF24BD2529A150417F9ECC1D6E565541AE633B5A2BA15041046D976E725655416ABD82BD2DA150417CC3107272565541026DE1492EA150412171B45C72565541AE3953DA3AA15041E8E37397725655412E94C8DF42A150414F8935BC72565541EF7512F545A15041619583B2725655411CFCED2648A150413212ADB872565541A4703D2A49A15041B81E85BB72565541CC3D873A49A15041A1276BD8725655419B3D505149A150413C06D80073565541D7A3708D49A15041B81E856B73565541BD084BE14CA1504123CC3E5679565541D75C60784FA150413B36A5967856554112B4914454A150416F6ABD1C77565541A1B140A258A15041C657D6C475565541C0C8726759A150416864298875565541EB0941835EA15041CB8BC2F5735655410C4B30B85EA15041E8ED78E573565541C9B088AC62A15041D5DD699580565541070000003333339352A15041295C8FB29B565541B81E858B50A150411F85EBF1975655411359527B59A15041C15ACE77915655417FB381C459A15041497F50159256554139D44C6F5EA15041188C7C679D5655411F85EB515CA150411F85EB61985655413333339352A15041295C8FB29B5655410A00000014AE478167A1504185EB5108B8565541713D0AB764A150415C8FC2E5B8565541E17A145E5DA15041C3F5284CBB565541C17A140E5BA1504197A3700DBC565541B81E851B64A15041B81E851BAD565541FE01E0F764A150414B1B50CCAF565541B795418865A15041C5D5548FB1565541B96BCFB37CA1504137F6914BA856554114AE479165A15041B81E85ABB156554114AE478167A1504185EB5108B85655410D00000087E4A3EC80A15041D1B6D89BDA565541551FA3EC80A150418B5AD99BDA56554158E5A3EC80A15041E6B6D89BDA56554120AE64B377A15041A1E65644E25655410505B50272A150418AED8739E7565541155CE8BD70A1504109C789AEE9565541D433521F70A15041593BC0E1EA565541D7A370ED6EA15041000000B0E55655411F85EB2173A15041C3F5283CE0565541B81E850B79A15041F6285C1FE156554185EB51A87BA15041666666F6DE565541A4703DDA7DA150415C8FC225DD56554187E4A3EC80A15041D1B6D89BDA56554111000000B8E3A3EC80A15041BDB6D89BDA565541A4703D8A81A150419A999919DA5655416E482B8681A1504153F45512DA565541AD806B6585A15041252D49D4D6565541EC51B88E82A150415C8FC275D356554185EB513880A1504185EB51B8CF5655410000006080A15041B81E85ABCB5655415C8FC25583A1504152B81EF5C956554148E17A8485A15041333333D3CB5655413D0AD77386A150419A9999C9CE565541CDCCCC5C85A15041F6285CBFD15655413D0AD72386A15041D7A3709DD356554131AD53AC89A15041C8A41421D356554105CC114784A150418C4896DDD75655410DE5A3EC80A150411CB7D89BDA565541B693A4EC80A15041C426D89BDA565541B8E3A3EC80A15041BDB6D89BDA56554104000000FFBF7D9C7FA150418348CE21A756554101FC32BB84A15041997EEC00AE56554185EB514884A150418FC2F588AD565541FFBF7D9C7FA150418348CE21A75655410800000048E17A2462A15041295C8F02CB56554148E17A0457A15041666666A6D3565541E6771AA353A1504149754B78CC565541333333A354A1504185EB51D8CB565541C3F5286C5CA150418FC2F548C0565541333333735EA1504114AE4791C6565541C3F528DC5FA150410AD7A3F0CA56554148E17A2462A15041295C8F02CB565541060000007B14AE1776A150410AD7A390CF565541666666F677A15041C3F528BCCA565541295C8FF27CA150415C8FC2C5D3565541B81E852B7CA1504133333393D6565541D7A3705D79A15041CDCCCCDCD45655417B14AE1776A150410AD7A390CF56554104000000547375186CA15041BD651A00F3565541333333336CA15041A4703D7AF2565541BA79F4B86CA1504192404177F1565541547375186CA15041BD651A00F3565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 419661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E5655416565F6E573A15041D3F4428C77565541
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541713D0A0748A15041333333E3C15655415C8FC2454AA15041A4703D5AC15655418FC2F5F850A150410AD7A350BF5655417063B13054A150415F27F7A6CA5655411284EF7653A150411AE67A1ACC5655413D0AD76353A150411F85EBF1CB56554114AE47314EA15041B81E855BCC56554152B81E5554A15041D7A3707DDC5655413333330358A150413D0AD7C3DA5655418FC2F5E859A15041A4703DCAD9565541A4703D0A5DA150418FC2F518D856554148E17A4465A15041D7A3705DDE5655411F85EB0169A1504185EB51C8DA565541666666366DA1504148E17A14E0565541E17A145E6DA1504185EB5188E55655417B14AEA76BA15041D7A3706DE95655413333332367A150415C8FC2F5E8565541D7A3708D63A150410AD7A310E5565541713D0A8761A15041B81E852BE1565541666666E65BA150410AD7A3D0E156554148E17AF45EA150411F85EB51E85655413D0AD78362A1504185EB51A8F056554148E17AC464A15041F6285C1FF95655417B92E8B865A1504132120ECA025755414D1F51EE68A15041C93992D702575541509ABAB076A15041FA0543DB045755412EE5DB1781A15041498E2A6F095755414CBE5DEC82A15041E0EB92E201575541D7A370AD7CA150410AD7A340F6565541BEB5FEF47DA15041341BFD3DF5565541680692F282A150410DFA7775F256554101BC266586A15041F3DE7DE7EF565541DA1DB11488A15041D2448A08EB565541E99C40718EA15041591A1355D6565541C49429DC8CA150414BD5EA54D0565541E17A145E8FA15041295C8F02CE565541EC51B8DE94A15041713D0AF7C85655419A9999099CA150411F85EBD1C15655413D0AD7639CA15041D7A3702DC1565541C3C179A790A15041F62D6D9BB2565541D4E9E5BC8EA1504113993B87B45655410624CA9F8EA15041318FA15AB45655411306E9748EA15041C5138D86B4565541FB83561B7AA1504196A33494945655416C8714FB6DA15041D602DAA281565541AC4E330C6CA1504125E7C49D7E565541B872B8CA69A1504120E1A6177B56554159F2BC7669A15041FC2B75947A565541F8FE239D69A15041390908887A565541F6285C6F66A150413D0AD78370565541967BFF5264A150415A1E39D36C5655414BE0FF5061A15041FA02633768565541B25B343B61A150410A8C6B0468565541CC44D1E163A15041B42739E2665655410000002063A150415C8FC26564565541EC51B8DE62A15041000000106356554114AE478162A15041CDCCCCBC61565541F6285C1F62A1504148E17A44605655411F85EBA161A15041333333235E5655419A9999F95EA1504185EB51A85F5655418531986C59A15041350C5FD062565541BF61C53452A150415178BDEE6656554166F52FB246A1504172748F516D5655413C97141344A1504193B1F5FA69565541662E70E942A150419303512C68565541ED10FF623DA1504116B64DB9695655413F24D72633A150419E098FC46C5655410D42D0752CA1504143A2798F6D565541EF24BD2529A150417F9ECC1D6E565541AE633B5A2BA15041046D976E725655416ABD82BD2DA150417CC3107272565541026DE1492EA150412171B45C72565541AE3953DA3AA15041E8E37397725655412E94C8DF42A150414F8935BC72565541EF7512F545A15041619583B2725655411CFCED2648A150413212ADB872565541A4703D2A49A15041B81E85BB72565541CC3D873A49A15041A1276BD8725655419B3D505149A150413C06D80073565541D7A3708D49A15041B81E856B73565541BD084BE14CA1504123CC3E5679565541D75C60784FA150413B36A5967856554112B4914454A150416F6ABD1C77565541A1B140A258A15041C657D6C475565541C0C8726759A150416864298875565541EB0941835EA15041CB8BC2F5735655410C4B30B85EA15041E8ED78E573565541C9B088AC62A15041D5DD699580565541070000003333339352A15041295C8FB29B565541B81E858B50A150411F85EBF1975655411359527B59A15041C15ACE77915655417FB381C459A15041497F50159256554139D44C6F5EA15041188C7C679D5655411F85EB515CA150411F85EB61985655413333339352A15041295C8FB29B5655410A00000014AE478167A1504185EB5108B8565541713D0AB764A150415C8FC2E5B8565541E17A145E5DA15041C3F5284CBB565541C17A140E5BA1504197A3700DBC565541B81E851B64A15041B81E851BAD565541FE01E0F764A150414B1B50CCAF565541B795418865A15041C5D5548FB1565541B96BCFB37CA1504137F6914BA856554114AE479165A15041B81E85ABB156554114AE478167A1504185EB5108B85655410D00000087E4A3EC80A15041D1B6D89BDA565541551FA3EC80A150418B5AD99BDA56554158E5A3EC80A15041E6B6D89BDA56554120AE64B377A15041A1E65644E25655410505B50272A150418AED8739E7565541155CE8BD70A1504109C789AEE9565541D433521F70A15041593BC0E1EA565541D7A370ED6EA15041000000B0E55655411F85EB2173A15041C3F5283CE0565541B81E850B79A15041F6285C1FE156554185EB51A87BA15041666666F6DE565541A4703DDA7DA150415C8FC225DD56554187E4A3EC80A15041D1B6D89BDA56554111000000B8E3A3EC80A15041BDB6D89BDA565541A4703D8A81A150419A999919DA5655416E482B8681A1504153F45512DA565541AD806B6585A15041252D49D4D6565541EC51B88E82A150415C8FC275D356554185EB513880A1504185EB51B8CF5655410000006080A15041B81E85ABCB5655415C8FC25583A1504152B81EF5C956554148E17A8485A15041333333D3CB5655413D0AD77386A150419A9999C9CE565541CDCCCC5C85A15041F6285CBFD15655413D0AD72386A15041D7A3709DD356554131AD53AC89A15041C8A41421D356554105CC114784A150418C4896DDD75655410DE5A3EC80A150411CB7D89BDA565541B693A4EC80A15041C426D89BDA565541B8E3A3EC80A15041BDB6D89BDA56554104000000FFBF7D9C7FA150418348CE21A756554101FC32BB84A15041997EEC00AE56554185EB514884A150418FC2F588AD565541FFBF7D9C7FA150418348CE21A75655410800000048E17A2462A15041295C8F02CB56554148E17A0457A15041666666A6D3565541E6771AA353A1504149754B78CC565541333333A354A1504185EB51D8CB565541C3F5286C5CA150418FC2F548C0565541333333735EA1504114AE4791C6565541C3F528DC5FA150410AD7A3F0CA56554148E17A2462A15041295C8F02CB565541060000007B14AE1776A150410AD7A390CF565541666666F677A15041C3F528BCCA565541295C8FF27CA150415C8FC2C5D3565541B81E852B7CA1504133333393D6565541D7A3705D79A15041CDCCCCDCD45655417B14AE1776A150410AD7A390CF56554104000000547375186CA15041BD651A00F3565541333333336CA15041A4703D7AF2565541BA79F4B86CA1504192404177F1565541547375186CA15041BD651A00F3565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158936 - 158819
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE67733E5141000000D0950C554114AE47E17E3E5141EC51B8DEA40C554152B81E05813E5141B81E85ABA70C55419A9999498E3E5141C3F5280CB90C55411F85EB01913E5141295C8F72B70C5541E17A141E963E514148E17A04B40C554148E17A64983E514185EB5128B20C55410AD7A3C08A3E51417B14AE47A00C554148E17A047D3E5141666666468E0C554152B81E857B3E514114AE47B18F0C55417B14AE67733E5141000000D0950C5541
+</a>
+
+<b>
+0106000000040000000103000000010000001B000000EAC5BC42673E5141C387E819A60C554139759E606D3E5141AB2B4E1BAD0C5541116019CB6E3E5141137FD8B9AE0C5541412896A1723E51412E3618BDB30C554151DB410B793E5141558D24CFBB0C554128396EA37B3E51412215B625BF0C554191DF62C07C3E5141BB8C5A94C00C55410C1E13C67D3E5141511E0FE5C10C55413CB77412803E514151447BD1C00C55417AB63DE3823E51415313AF52BF0C5541FF582FEC893E51416F223B96BB0C554168009F568E3E5141B3228004B90C5541E7D00F48803E5141857327B4A60C554161263240733E5141FC7DCBED950C554173801F84723E5141942EB77B960C554144EF6C1F723E5141B5CFB3C7960C55417DC9BCCD703E51413DF8FDDD970C55415D02B4696E3E51412A0E5E94990C55411A823DAD673E514159C2A7A99E0C55411B9F0FFB663E514112371C309F0C5541A86B1E87643E5141DF860B01A10C5541E0BD7385643E5141B7D64102A10C5541637DEF81643E51412026FFFDA00C55413BF680E2633E5141A9AD1193A10C5541A76967E6633E5141A9AD1193A10C554176B0EEDC633E5141B7464798A10C5541EAC5BC42673E5141C387E819A60C554101030000000100000005000000326D8AB1633E51411CD224B0A10C5541C3A85EA9633E5141BDA20AA6A10C55411EB93FA2633E5141B4F76DABA10C55416DE19BA9633E5141FB9E81B4A10C5541326D8AB1633E51411CD224B0A10C5541010300000001000000070000002EAB141D703E51418488F543980C55414AB30340733E51413BB28FED950C5541FCD8375D733E5141AAFDCBD7950C55417AB8D053733E5141B79B85CB950C55413233D7B66C3E5141639984CC9A0C554108A777D66F3E5141F5AF9578980C55412EAB141D703E51418488F543980C554101030000000100000005000000823BD54F7D3E51414C01C248C20C55413C3860DA7D3E51412A0C2EFFC10C5541A48DAC6C7D3E51418C38FF26C20C5541BE6A07767D3E514173E50333C20C5541823BD54F7D3E51414C01C248C20C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159935 - 310830
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000005A0000009A9999F98040514114AE4701DC0E554152B81E557F405141E17A140EDC0E5541713D0A477F405141B81E85EBDC0E5541000000F07F4051410AD7A390EA0E55410AD7A300BC40514148E17AF4F40E5541A4703D6ABE405141E17A146EF50E5541713D0A77BE405141B81E854BEC0E5541D7A3702DC14051417B14AEA7E70E55418FC2F5C8C3405141295C8F82E80E5541C3F528BCC740514114AE4761EE0E55419A999949CC405141EC51B87EF20E5541A4703D0ACE405141F6285C7FF80E554100000080D1405141A4703DEAE70E5541CDCCCC3CD3405141EC51B81EE40E5541B81E854BD64051411F85EBB1E10E5541D7A3709DD9405141AE47E12AE10E5541AE47E18ADF4051413D0AD763E20E55415C8FC205F4405141B81E854BEF0E5541C3F528BC0341514166666606FC0E55418FC2F51820415141D7A370CD180F554114AE4781284151419A999999210F5541000000C035415141A4703D3A2E0F55417B14AEA73B4151411F85EB313B0F554185EB51B84441514100000000450F5541666666264B415141EC51B85E470F5541EC51B80E53415141A4703DCA460F554152B81E055E415141E17A14CE500F55410AD7A390664151413D0AD7035D0F5541333333736F415141AE47E1AA640F554166666646704151417B14AEF7620F5541295C8F8271415141A4703D2A5F0F5541713D0A377241514152B81E755B0F55410AD7A38072415141EC51B8BE560F5541B81E859B714151415C8FC2A5510F5541000000407041514114AE47E14D0F55418FC2F5086E415141CDCCCC1C490F55418FC2F58863415141AE47E12A390F55411F85EB415C41514114AE47712F0F554148E17A64554151413D0AD753270F554152B81E3554415141D7A370ED250F5541000000B04B415141F6285CAF1C0F5541000000A04741514152B81ED5180F5541666666F6424151419A999969140F554148E17A643D415141CDCCCC3C0F0F5541E17A145E3A415141295C8F020D0F554152B81E6539415141AE47E14A0C0F5541EC51B86E3541514133333373090F5541F6285CDF2E415141A4703DAA050F5541EC51B8CE23415141713D0A47000F55417B14AEB71A41514166666686FB0E5541EC51B8AE16415141C3F528CCF80E55411F85EBE112415141E17A141EF50E554114AE47810F415141C3F5281CF10E5541CDCCCC0C0A415141295C8FC2E80E554185EB51E80741514152B81EC5E30E55417B14AE5707415141C3F528CCE00E554166666636FF40514100000010E00E5541EC51B85EFB405141E17A144EDF0E5541713D0AC7F74051410AD7A3F0DD0E5541AE47E18AF44051413D0AD7E3DB0E55418FC2F548EE40514166666626D40E55418FC2F598EC405141295C8F12D30E5541D7A370ADEA40514114AE4771D20E5541EC51B8DEDF405141E17A146ED50E5541E17A146EDC405141B81E850BD50E55417B14AEE7D94051410AD7A370D30E5541F6285CDFD24051413D0AD703D20E55411F85EB21D040514185EB5128D50E554114AE4761CE405141AE47E12AD70E5541D7A370EDCB40514114AE4711D90E5541000000D0C74051411F85EB21DB0E5541AE47E1AAC240514185EB5198E00E55418FC2F5C8BD40514166666636E30E5541AE47E18AB440514152B81E95E30E554185EB5178B340514100000070E30E554152B81EE5B0405141713D0A17E30E554152B81E85AE40514152B81EC5E20E5541B81E857BAC40514185EB51C8E10E55419A999909AA4051419A999999E00E55410AD7A3E0A540514152B81E95DF0E5541C3F5287CA2405141000000C0DE0E5541AE47E16AA0405141EC51B83EDE0E554152B81EE59D40514100000090DC0E5541D7A3700D9C40514152B81E55DB0E55410000006098405141C3F5281CDB0E55410000003095405141A4703DEADA0E5541C3F5285C90405141E17A14CEDB0E55417B14AEC78840514148E17A34DD0E5541C3F5287C8440514152B81E55DC0E55419A9999F98040514114AE4701DC0E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AE47E14A0541514162105821FD0E55414A0C02930B415141560E2D9A020F554108AC1C0211415141D578E9B6080F554154E3A56B124151414E621098090F554142FD178422415141B0264B551B0F554114AE4781284151419A999999210F5541C22E775D2B415141BA6AA653240F55414260E5882B41514148E17A74240F5541D62AE7CB3241514188AD64692B0F5541000000C035415141A4703D3A2E0F55417B14AEA73B4151411F85EB313B0F5541D521C29C43415141185A4ACD430F55418D976E3A49415141C520B09A460F554176B67B7D4D4151418644C732470F5541998BD4864C4151410950711D4A0F5541F6285C274F41514179E926714A0F554193AE930350415141FDA32BDD480F55412573182D504151416C53A192470F5541BE9F1ADF5241514160E5D0F2470F5541F2D24D3A5A41514185EB51704E0F5541F6285C7F5F41514166666626540F55419E9F21436441514182D77CB9590F5541190456CE64415141AC1C5A5C5A0F55416ABC74E36B415141C976BEDF600F5541986E122B704151417593180C5E0F554108AC1CB270415141B81E85835F0F55411D5A64DB6D415141643BDFAF620F5541EFC881996F4151418FC5F15B640F554166666646704151417B14AEF7620F554106B467D470415141F5C5BAD1620F5541D122DB41724151418B6CE7635F0F55415A643B47734151411F85EB995A0F554179E92661734151417F6ABC3C570F5541D9CEF73B73415141FA7E6AB4550F5541B072688972415141295C8F7A510F5541B4C8766E7041514114AE47914C0F5541AC1C5ABC6D415141B4C876FE470F554104560E056B415141AE47E1FA420F55418D976ECA66415141713D0AA73C0F5541986E12EB5F4151417F6ABCFC320F554123DBF90E5A41514123DBF98E2B0F5541E7FBA95156415141B81E855B270F5541713D0A9F454151418D976E82150F5541CFF753533F415141621058B90F0F5541355EBA813B4151416666667E0C0F5541C1CAA19D37415141666666C6090F55410000008829415141355EBA31020F55417D3F35C617415141B81E859BF80E5541AAF1D23D104151418D976E9AF00E554121B072800A415141BA490C2AE80E5541F2D24D920A4151418D976E12E80E55417242709A0A4151417A67E9FDE70E55412DB29DB7084151411283C0E2E20E554108AC1CD20841514152B81EFDE20E5541295C8FB207415141EC51B8F6E00E55413D0AD733054151418195433BE00E55419F5A1AD8024151416FF60C64E00E554160E5D0CAFF405141F4FDD498E00E5541F148B84104415141F563B03CFC0E5541AE47E14A0541514162105821FD0E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164649 - 3096479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -428  </desc>
+<a>
+0106000000010000000103000000010000001B000000713D0A375F3951413D0AD7C391095541CDCCCCFC5B395141A4703D6A920955411F85EBA15839514152B81EA593095541A4703D2A56395141EC51B80E950955411F85EB6153395141295C8F229709554148E17A0451395141AE47E1AA9909554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD09554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB10955419A99995945395141C3F528CCB209554185EB51184B39514114AE4731B5095541A4703D9A4E39514152B81E05B6095541A4703DCA523951415C8FC2F5B509554152B81E45543951415C8FC215B4095541D7A3708D553951418FC2F5F8B1095541A4703D7A65395141CDCCCC4CB0095541A4703D6A6539514133333363AF095541713D0A2767395141D7A3704DAF09554152B81E756A395141F6285C8FA1095541333333036E3951418FC2F5C892095541E17A146E66395141713D0AE791095541AE47E18A6239514148E17AA491095541713D0A375F3951413D0AD7C391095541
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000002FE8D60C51395141C6AFEDA1990955417B69CC0251395141219D4FAD99095541DC42BC334F3951410796C44A9C095541F655810A4E395141ED527AF89D0955410186271E4C395141C2C546C0A009554192F9B0AA4A395141F3514ED9A209554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD0955413CD968C24339514109B3FA61B009554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB10955419A99995945395141C3F528CCB209554135BFB5F2463951416824B676B309554184B5955A473951418FE903A2B3095541073F21A649395141DE1CF496B409554189A48C954A395141EAF0E9D0B1095541F097032854395141F454A23AB409554152B81E45543951415C8FC215B4095541D7A3708D553951418FC2F5F8B1095541328A88DD553951417458066DAE0955413D68F07951395141A98CBB8EAE0955410E064BAA46395141B06EA32BAD095541C1DDDFFD45395141894B8415AD0955413C0E6AD84539514183E7B510AD095541A9E9E91B47395141E01B9CBFA9095541D9179A3247395141A02A0F84A9095541D221C1DA47395141F7E57D8FA8095541B479C39748395141CEF0967CA7095541EDE3F42A49395141978DADA5A609554191EAC3DC493951411A29C6A2A5095541B15C91C94B39514152C824D7A20955411742F1E94C3951416078B833A109554151A230584E395141D43A091F9F0955415EAD37084F395141BECE031F9E095541240AC3AA4F39514180A49A329D095541FE823D1050395141DD8D029F9C095541AC7F57B8513951410A312E369A095541B0E9BC0652395141D57628C49909554196FE2F2F52395141AAA2538999095541EF092B9A51395141331D970A990955412FE8D60C51395141C6AFEDA199095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164649 - 3289198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -428  </desc>
+<a>
+0106000000010000000103000000010000001B000000713D0A375F3951413D0AD7C391095541CDCCCCFC5B395141A4703D6A920955411F85EBA15839514152B81EA593095541A4703D2A56395141EC51B80E950955411F85EB6153395141295C8F229709554148E17A0451395141AE47E1AA9909554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD09554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB10955419A99995945395141C3F528CCB209554185EB51184B39514114AE4731B5095541A4703D9A4E39514152B81E05B6095541A4703DCA523951415C8FC2F5B509554152B81E45543951415C8FC215B4095541D7A3708D553951418FC2F5F8B1095541A4703D7A65395141CDCCCC4CB0095541A4703D6A6539514133333363AF095541713D0A2767395141D7A3704DAF09554152B81E756A395141F6285C8FA1095541333333036E3951418FC2F5C892095541E17A146E66395141713D0AE791095541AE47E18A6239514148E17AA491095541713D0A375F3951413D0AD7C391095541
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000002FE8D60C51395141C6AFEDA1990955417B69CC0251395141219D4FAD99095541DC42BC334F3951410796C44A9C095541F655810A4E395141ED527AF89D0955410186271E4C395141C2C546C0A009554192F9B0AA4A395141F3514ED9A209554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD0955413CD968C24339514109B3FA61B009554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB10955419A99995945395141C3F528CCB209554135BFB5F2463951416824B676B309554184B5955A473951418FE903A2B3095541073F21A649395141DE1CF496B409554189A48C954A395141EAF0E9D0B1095541F097032854395141F454A23AB409554152B81E45543951415C8FC215B4095541D7A3708D553951418FC2F5F8B1095541328A88DD553951417458066DAE0955413D68F07951395141A98CBB8EAE0955410E064BAA46395141B06EA32BAD095541C1DDDFFD45395141894B8415AD0955413C0E6AD84539514183E7B510AD095541A9E9E91B47395141E01B9CBFA9095541D9179A3247395141A02A0F84A9095541D221C1DA47395141F7E57D8FA8095541B479C39748395141CEF0967CA7095541EDE3F42A49395141978DADA5A609554191EAC3DC493951411A29C6A2A5095541B15C91C94B39514152C824D7A20955411742F1E94C3951416078B833A109554151A230584E395141D43A091F9F0955415EAD37084F395141BECE031F9E095541240AC3AA4F39514180A49A329D095541FE823D1050395141DD8D029F9C095541AC7F57B8513951410A312E369A095541B0E9BC0652395141D57628C49909554196FE2F2F52395141AAA2538999095541EF092B9A51395141331D970A990955412FE8D60C51395141C6AFEDA199095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>165181 - 233035
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -501  </desc>
+<a>
+0106000000010000000103000000010000000E000000B81E85CBF2435141AE47E18ADD075541666666C6F24351413D0AD723E8075541E17A14FEF3435141C3F528ECEF075541B81E85BBF44351419A9999D9F10755419A9999E91E4451417B14AE27EE075541333333B31E445141B81E854BDD0755410AD7A3702144514152B81E35C70755417B14AE271E44514100000090C40755413D0AD7D31B445141C3F528CCC4075541A4703D2A1844514166666616C507554185EB5198FD4351418FC2F558CA075541CDCCCC0CF243514114AE47E1CC075541C3F5284CF24351411F85EBA1CF075541B81E85CBF2435141AE47E18ADD075541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000DDE5935F3435141F3953AA0CC075541C98556BCF34351415D15096ED4075541B37933F6F34351410A2A1D22D9075541589393251144514158AD28A1D50755414A68EFD31F4451411AEEB7E4D30755418635785E21445141C8577D26C70755414720D736214451417BC69406C7075541472DE00E21445141081267E6C6075541CFD009A620445141F07DFD91C60755414B8AF81D15445141AB9E63F3C607554148E17A141244514114AE47E1C6075541F36A8620F6435141E85854FCCB075541AE938496F4435141232EC252CC0755410DDE5935F3435141F3953AA0CC075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>165187 - 214188
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -43  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C8F45445141F6285CDFC4075541C3F5285C4344514148E17A14C5075541B81E855B3E445141333333F3C507554148E17A543B445141B81E85BBC5075541713D0A37384451417B14AEE7C5075541666666B636445141713D0AD7C5075541EC51B88E344451413D0AD783C9075541F6285CAF33445141D7A370CDCA075541A4703D6A32445141AE47E12ACD075541C3F5284C3144514185EB5138D0075541AE47E13A3044514100000010D4075541EC51B80E2F445141295C8F42D9075541295C8F422E44514152B81E15DD075541000000D02C445141295C8F52E1075541AE47E12A2B44514133333353E507554152B81E452A44514114AE47A1E8075541EC51B84E29445141AE47E1FAEC0755415C8FC2D528445141333333C3EF07554185EB51B828445141C3F5281CF1075541000000A02844514152B81EB5F3075541C3F5280C28445141B81E858BF6075541CDCCCCCC26445141B81E85CBFB07554185EB51C82544514185EB5188FF0755416666660625445141AE47E1BA01085541AE47E1DA23445141713D0AA703085541F6285C9F22445141D7A3704D080855417B14AEF725445141EC51B86E0A0855417B14AE9729445141333333930B0855418FC2F5782D4451410AD7A3A00D0855415C8FC20530445141295C8F320F0855411F85EB3133445141D7A3704D100855417B14AE173744514148E17AB4FF0755418FC2F5D838445141B81E853BF8075541F6285C4F3B44514185EB5158F90755417B14AE673B4451413D0AD7D3F8075541AE47E1DA3E4451410AD7A370F8075541B81E852B3F4451413D0AD7D3F6075541713D0AE7414451419A9999A9F7075541CDCCCC8C43445141C3F528ECF807554114AE479143445141A4703D1AF60755413D0AD713444451419A9999C9F1075541D7A3706D45445141333333F3E807554152B81EA54644514114AE47A1E1075541A4703D4A48445141E17A14DED90755411F85EB414A4451413D0AD793D3075541E17A14BE4D445141D7A3700DC9075541B81E857B4A445141B81E858BC6075541B81E85CB4944514114AE4731C707554114AE47114944514114AE4781C6075541713D0AA747445141666666E6C5075541295C8FA2474451418FC2F5D8C4075541F6285C8F45445141F6285CDFC4075541
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000AF44380A25445141677ECCAF010855416666660625445141AE47E1BA01085541AE47E1DA23445141713D0AA70308554182EC8E5023445141131FE7B00508554132795C9F22445141EDD6704D08085541BB2F6E122344514172AAB6960808554164A0A9E424445141DCC898BF090855417118AFF7254451416B51B86E0A08554167F508AA264451412EBDEEA60A0855417B14AE9729445141333333930B085541A7C7B80D2D445141E25AE9670D085541E8E6F4782D445141E535A3A00D085541F3C5C305304451415C748F320F0855415828A92B314451417465ED980F0855411F85EB3133445141D7A3704D10085541563F871B36445141DC8944E603085541784F20D9364451419980DDBE000855413261CD12374451415A3FB4C0FF075541D6D10A7D364451411C35DD5C000855412704DF2D37445141F1E67CFAFC0755418E19F4D83844514150308C3BF80755418FC2F5D838445141B81E853BF80755413E2AD7D93A445141C1383A23F9075541AC2B5C4F3B445141C0DC5158F90755412ADCC5523B445141DD8DBA45F907554177D036533B44514119405343F90755417BB388533B445141D72E9541F9075541F6A9D35E3B445141210B1104F9075541345FAD673B4451412A80D6D3F80755411A03E1DA3E445141F6D7A370F80755417FB511EF3E445141EE674A09F8075541B81E852B3F4451413D0AD7D3F6075541A7370AE741445141282D98A9F7075541B9CDCC8C43445141FD6028ECF8075541D594E68E43445141B753A599F7075541665C46914344514176BD3C1AF6075541366FA0DE43445141FB86D38BF30755413D0AD713444451419A9999C9F1075541D7A3706D45445141333333F3E807554152B81EA54644514114AE47A1E1075541595ABEDB464451416915859FE007554180843C4A48445141E16714DED9075541E4F7F430494451418A4E7DFCD60755411F85EB414A4451413D0AD793D3075541AA8AC2E74B445141B9DBD899CE075541E07613BE4D445141DBDB6F0DC9075541B81E85CB4944514114AE4731C707554114AE47114944514114AE4781C6075541713D0AA747445141666666E6C5075541D96BCDAC434451419E8B5208C6075541829BB9AE3E445141B21C99C9C6075541AD393C9A3644514104EE6F5DC607554171CA9AC936445141B3A151D8CA0755412BAB65A635445141B618153ECB0755419C3171CD35445141A03ED733D10755412EBD477135445141CDF7FE8FD6075541505DAF07354451413160851BDA0755411F85EBE13344514185EB5148DE075541016901B0304451417A0134A3DD0755418CF483DB2F445141CE1652C8DF0755412E18E22A2E4451417469158EDF075541029CFFCF2D445141D957C345E1075541587FB82E2D445141B48109C7E20755410EBDC3152C445141A60D850BE407554126E613CE2A445141135D3C5AEA07554144215B6F29445141FC41F668EF07554155E8327329445141DC2A0AC7EF0755414CA5E1C629445141D168BE90F107554156412F53294451419E249FBAF40755416BF7290C2844514181AB848BF6075541CB2ACDCC264451414AB784CBFB0755414C410CA82644514153C38452FC07554185EB51C82544514185EB5188FF075541AF44380A25445141677ECCAF01085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239735 - 255556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F588D0C05041295C8F72FCCE544148E17AA4D3C05041E17A14CEF6CE5441B81E858BD7C0504100000050EACE544114AE47B1B6C0504114AE4791BACE5441CDCCCCFCB1C05041AE47E16ABECE54418FC2F568A5C050419A9999F9C9CE5441A4703D5A9BC05041C3F5287CD4CE5441C3F5282CA0C050415C8FC285D6CE54413D0AD773A4C0504166666686D9CE544133333303A8C0504152B81E65DDCE54419A9999B9C6C0504185EB51080ACF54418FC2F588D0C05041295C8F72FCCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000076956D74D5C05041CDE65746E7CE544185DD9606D5C050419E92B6A6E6CE5441450FFEDAD1C05041000A03E1F0CE5441F39A11F7CFC05041CDC92A4AF5CE544136101EEACDC050413B6136DDF9CE5441C93CF05BCCC05041E69BE3B3FCCE544125E65BEAC5C05041A8B9A68605CF54418473992EC5C050417F317A8104CF5441CB220167A9C050416BD0FA22DCCE5441610DC2BAA5C0504144BB6F2AD8CE54418A4805E3A0C050413EA42DCCD4CE54411C6DC9D9A0C0504170223EC7D4CE5441A4F5C1E19CC050417B0707E3D2CE5441D97C9C659BC0504116F14670D4CE54412E4B663F9DC0504103DF3E49D5CE544118F6282CA0C05041E68EC285D6CE5441FD09D773A4C05041DB656686D9CE5441BF333303A8C0504125B71E65DDCE5441310BAB22B7C05041E8E2E75FF3CE54415C784A70BDC050415C832489FCCE5441309999B9C6C05041ECEA51080ACF54411F6F8D61C7C05041B5C9BC1F09CF54413888D27DC7C0504142EDF7F008CF5441F671DB11C8C050413EB2962B08CF54411AB106C3CCC050419F3C32AC01CF54418FC2F588D0C05041295C8F72FCCE5441B18719B8D1C05041E7E4204CFACE544100C0F905D3C050419123E3EDF7CE54414E1E3DC0D3C05041A9CBD669F6CE54410D188748D4C05041CF26F0C0F4CE5441ACB47F08D6C05041D6F7E926EFCE54415C5D8A85D7C050414A564F47EACE544176956D74D5C05041CDE65746E7CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239735 - 350872
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F588D0C05041295C8F72FCCE544148E17AA4D3C05041E17A14CEF6CE5441B81E858BD7C0504100000050EACE544114AE47B1B6C0504114AE4791BACE5441CDCCCCFCB1C05041AE47E16ABECE54418FC2F568A5C050419A9999F9C9CE5441A4703D5A9BC05041C3F5287CD4CE5441C3F5282CA0C050415C8FC285D6CE54413D0AD773A4C0504166666686D9CE544133333303A8C0504152B81E65DDCE54419A9999B9C6C0504185EB51080ACF54418FC2F588D0C05041295C8F72FCCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000076956D74D5C05041CDE65746E7CE544185DD9606D5C050419E92B6A6E6CE5441450FFEDAD1C05041000A03E1F0CE5441F39A11F7CFC05041CDC92A4AF5CE544136101EEACDC050413B6136DDF9CE5441C93CF05BCCC05041E69BE3B3FCCE544125E65BEAC5C05041A8B9A68605CF54418473992EC5C050417F317A8104CF5441CB220167A9C050416BD0FA22DCCE5441610DC2BAA5C0504144BB6F2AD8CE54418A4805E3A0C050413EA42DCCD4CE54411C6DC9D9A0C0504170223EC7D4CE5441A4F5C1E19CC050417B0707E3D2CE5441D97C9C659BC0504116F14670D4CE54412E4B663F9DC0504103DF3E49D5CE544118F6282CA0C05041E68EC285D6CE5441FD09D773A4C05041DB656686D9CE5441BF333303A8C0504125B71E65DDCE5441310BAB22B7C05041E8E2E75FF3CE54415C784A70BDC050415C832489FCCE5441309999B9C6C05041ECEA51080ACF54411F6F8D61C7C05041B5C9BC1F09CF54413888D27DC7C0504142EDF7F008CF5441F671DB11C8C050413EB2962B08CF54411AB106C3CCC050419F3C32AC01CF54418FC2F588D0C05041295C8F72FCCE5441B18719B8D1C05041E7E4204CFACE544100C0F905D3C050419123E3EDF7CE54414E1E3DC0D3C05041A9CBD669F6CE54410D188748D4C05041CF26F0C0F4CE5441ACB47F08D6C05041D6F7E926EFCE54415C5D8A85D7C050414A564F47EACE544176956D74D5C05041CDE65746E7CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168472 - 3152614
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000F000000295C8F62F9C1504148E17AF436945441C3F5285CFAC150411F85EBB136945441295C8F0233C25041CDCCCCAC2794544185EB51E832C2504152B81EC5269454418FC2F58830C25041F6285CDF1F945441295C8F222FC250418FC2F5C81C945441B81E85EB2BC25041A4703DFA1094544152B81EF52AC250411F85EB310B945441AE47E18A29C250417B14AE470A945441E17A14BEF9C15041F6285CDF16945441A4703D7AE1C150413D0AD7231A94544152B81E65E0C15041C3F5288C1B945441C3F528CCE3C1504114AE47913694544148E17A54E5C150417B14AE473C945441295C8F62F9C1504148E17AF436945441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000300A86C409C25041953E9BA6129454413C8BFB3A0DC250414C73C6581E94544187E3D4522DC2504107A2DB21169454413B3D0ADB2CC250415C6DE8691494544165988B252CC25041166858CF1194544171AE9FE92BC250419706D9EE10945441D9A0C6CA2BC25041F92B8535109454410DA9E0AB2BC2504165F7687C0F94544180F44D8B2BC25041F33744B90E9454419C4BF7142BC2504126193D180C945441AC2065E82AC25041727ED4380B9454417B329C6E2AC25041E9C450DE0A9454417EE7B26A29C25041D56828500A945441E5055C241CC250416FD46BCF0D945441300A86C409C25041953E9BA612945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168472 - 3543808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000F000000295C8F62F9C1504148E17AF436945441C3F5285CFAC150411F85EBB136945441295C8F0233C25041CDCCCCAC2794544185EB51E832C2504152B81EC5269454418FC2F58830C25041F6285CDF1F945441295C8F222FC250418FC2F5C81C945441B81E85EB2BC25041A4703DFA1094544152B81EF52AC250411F85EB310B945441AE47E18A29C250417B14AE470A945441E17A14BEF9C15041F6285CDF16945441A4703D7AE1C150413D0AD7231A94544152B81E65E0C15041C3F5288C1B945441C3F528CCE3C1504114AE47913694544148E17A54E5C150417B14AE473C945441295C8F62F9C1504148E17AF436945441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000300A86C409C25041953E9BA6129454413C8BFB3A0DC250414C73C6581E94544187E3D4522DC2504107A2DB21169454413B3D0ADB2CC250415C6DE8691494544165988B252CC25041166858CF1194544171AE9FE92BC250419706D9EE10945441D9A0C6CA2BC25041F92B8535109454410DA9E0AB2BC2504165F7687C0F94544180F44D8B2BC25041F33744B90E9454419C4BF7142BC2504126193D180C945441AC2065E82AC25041727ED4380B9454417B329C6E2AC25041E9C450DE0A9454417EE7B26A29C25041D56828500A945441E5055C241CC250416FD46BCF0D945441300A86C409C25041953E9BA612945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173005 - 2916661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000020000003A0000005C8FC25568FE50410000007018525441EC51B84E63FE5041E17A140E16525441713D0A875FFE504185EB51F8135254419A9999F95EFE5041AE47E18A13525441EC51B89E5EFE50410AD7A31015525441CDCCCCAC5DFE5041D7A3709D14525441F6285C8F5DFE5041E17A14CE135254418FC2F5685DFE5041D7A370AD125254413D0AD7E351FE50417B14AE57185254418FC2F54859FE50418FC2F5A8205254419A9999A95CFE5041713D0AB723525441713D0A675FFE50419A9999492452544185EB515862FE5041333333732D52544148E17A9462FE50410AD7A310315254416666662662FE50411F85EB113352544152B81EF561FE50419A9999B93552544114AE471162FE5041E17A148E3B5254413333338362FE5041333333633F525441713D0AE762FE504133333363425254410AD7A3E062FE504148E17A7445525441F6285C1F66FE504152B81E454D525441EC51B81E6AFE504185EB512856525441000000906FFE50411F85EB515F5254410000001070FE5041C3F5287C645254411F85EB8170FE50419A9999096952544185EB514878FE5041295C8FB276525441295C8F727CFE5041295C8FB27C5254415C8FC25580FE5041333333A381525441D7A3700D86FE5041E17A14FE86525441E17A141E8CFE50417B14AE97855254415C8FC24590FE5041000000C0835254418FC2F52893FE5041AE47E1EA81525441C3F528FC89FE50413D0AD743765254410000003086FE5041C3F528BC6C52544185EB51B889FE50413D0AD7336C525441295C8F628DFE50418FC2F5886F525441C3F5280C93FE504114AE471171525441AE47E1FA95FE50411F85EB116D5254410AD7A3609DFE5041AE47E1AA6E525441CDCCCCBCA1FE50417B14AE37705254419A999979B1FE5041E17A144E6C525441D7A3707DB0FE5041F6285C1F6A525441C3F5281CAEFE50410AD7A38063525441C3F5286CADFE50411F85EB3160525441AE47E1DAACFE5041E17A144E5B5254418FC2F5E8ABFE5041295C8FE258525441C3F528FCA6FE504152B81E8552525441000000309EFE50417B14AED745525441B81E85DB94FE5041B81E852B3B525441EC51B84E8FFE5041295C8F8234525441CDCCCCBC89FE5041713D0A472D525441333333A385FE5041CDCCCC4C2852544185EB513882FE504133333303255254410AD7A3407EFE504148E17A342252544185EB51F879FE50415C8FC215205254419A9999696DFE5041B81E85BB1A5254419A9999196BFE5041000000C0195254415C8FC25568FE50410000007018525441050000007B14AE9779FE5041000000C04A52544185EB51A87FFE50411F85EBF1535254410000002078FE504166666636555254411F85EB3173FE5041713D0A374D5254417B14AE9779FE5041000000C04A525441
+</a>
+
+<b>
+010600000001000000010300000001000000160000000AF14CA395FE5041231C25A96B52544137C4A7DB99FE50415F4637816C5254418B76F46B9DFE5041E82E2D096C525441CE946F24A3FE504184E80EA16A52544161EB02FDA9FE50414681E2906852544140C35F4DAEFE5041A74DCC8867525441C3F5281CAEFE50410AD7A38063525441C3F5286CADFE50411F85EB3160525441379145FEACFE5041CC9E0A7F5C5254419757ABECACFE50415EA65DE75B525441AE47E1DAACFE5041E17A144E5B525441A3919E84ACFE5041940B2E715A52544159DEB307ACFE50411B804931595254418FC2F5E8ABFE5041295C8FE258525441556E4580AAFE504166336910575254417579B673A9FE5041147154B555525441BFA3823EA7FE50415CC5DEDA52525441E7B08337A1FE5041BF1239354A52544137F672828BFE5041786F22BF5352544137F672828BFE5041CAE4541756525441DD1DF26A91FE5041ED174758615254410AF14CA395FE5041231C25A96B525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173005 - 5249061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000020000003A0000005C8FC25568FE50410000007018525441EC51B84E63FE5041E17A140E16525441713D0A875FFE504185EB51F8135254419A9999F95EFE5041AE47E18A13525441EC51B89E5EFE50410AD7A31015525441CDCCCCAC5DFE5041D7A3709D14525441F6285C8F5DFE5041E17A14CE135254418FC2F5685DFE5041D7A370AD125254413D0AD7E351FE50417B14AE57185254418FC2F54859FE50418FC2F5A8205254419A9999A95CFE5041713D0AB723525441713D0A675FFE50419A9999492452544185EB515862FE5041333333732D52544148E17A9462FE50410AD7A310315254416666662662FE50411F85EB113352544152B81EF561FE50419A9999B93552544114AE471162FE5041E17A148E3B5254413333338362FE5041333333633F525441713D0AE762FE504133333363425254410AD7A3E062FE504148E17A7445525441F6285C1F66FE504152B81E454D525441EC51B81E6AFE504185EB512856525441000000906FFE50411F85EB515F5254410000001070FE5041C3F5287C645254411F85EB8170FE50419A9999096952544185EB514878FE5041295C8FB276525441295C8F727CFE5041295C8FB27C5254415C8FC25580FE5041333333A381525441D7A3700D86FE5041E17A14FE86525441E17A141E8CFE50417B14AE97855254415C8FC24590FE5041000000C0835254418FC2F52893FE5041AE47E1EA81525441C3F528FC89FE50413D0AD743765254410000003086FE5041C3F528BC6C52544185EB51B889FE50413D0AD7336C525441295C8F628DFE50418FC2F5886F525441C3F5280C93FE504114AE471171525441AE47E1FA95FE50411F85EB116D5254410AD7A3609DFE5041AE47E1AA6E525441CDCCCCBCA1FE50417B14AE37705254419A999979B1FE5041E17A144E6C525441D7A3707DB0FE5041F6285C1F6A525441C3F5281CAEFE50410AD7A38063525441C3F5286CADFE50411F85EB3160525441AE47E1DAACFE5041E17A144E5B5254418FC2F5E8ABFE5041295C8FE258525441C3F528FCA6FE504152B81E8552525441000000309EFE50417B14AED745525441B81E85DB94FE5041B81E852B3B525441EC51B84E8FFE5041295C8F8234525441CDCCCCBC89FE5041713D0A472D525441333333A385FE5041CDCCCC4C2852544185EB513882FE504133333303255254410AD7A3407EFE504148E17A342252544185EB51F879FE50415C8FC215205254419A9999696DFE5041B81E85BB1A5254419A9999196BFE5041000000C0195254415C8FC25568FE50410000007018525441050000007B14AE9779FE5041000000C04A52544185EB51A87FFE50411F85EBF1535254410000002078FE504166666636555254411F85EB3173FE5041713D0A374D5254417B14AE9779FE5041000000C04A525441
+</a>
+
+<b>
+010600000001000000010300000001000000160000000AF14CA395FE5041231C25A96B52544137C4A7DB99FE50415F4637816C5254418B76F46B9DFE5041E82E2D096C525441CE946F24A3FE504184E80EA16A52544161EB02FDA9FE50414681E2906852544140C35F4DAEFE5041A74DCC8867525441C3F5281CAEFE50410AD7A38063525441C3F5286CADFE50411F85EB3160525441379145FEACFE5041CC9E0A7F5C5254419757ABECACFE50415EA65DE75B525441AE47E1DAACFE5041E17A144E5B525441A3919E84ACFE5041940B2E715A52544159DEB307ACFE50411B804931595254418FC2F5E8ABFE5041295C8FE258525441556E4580AAFE504166336910575254417579B673A9FE5041147154B555525441BFA3823EA7FE50415CC5DEDA52525441E7B08337A1FE5041BF1239354A52544137F672828BFE5041786F22BF5352544137F672828BFE5041CAE4541756525441DD1DF26A91FE5041ED174758615254410AF14CA395FE5041231C25A96B525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 3021751
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -94  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB11312154410AD7A3A0F4F05041666666E6312154411F85EBE1F3F050413D0AD783322154415C8FC255F2F05041713D0A273421544114AE4741F1F05041A4703DEA35215441333333D3EFF05041000000D03921544148E17A04CDF0504114AE47F10221544166666656C9F050418FC2F5D808215441E17A147EC5F050418FC2F5C808215441F6285CDFC6F0504152B81E5500215441333333C3BFF05041CDCCCC2C032154417B14AE57BEF050413D0AD72303215441AE47E13ABEF0504148E17A240721544152B81EB5C3F050418FC2F5080E2154418FC2F5E8CAF05041295C8F1217215441EC51B8FED6F050415C8FC25526215441713D0AA7D9F050413D0AD7332A215441A4703DDADFF05041C3F5285C322154415C8FC2E5EDF050413333332344215441C3F5289CF3F0504114AE47C14C215441B81E854B00F15041333333434E2154410500000048E17AE407F15041B81E85AB31215441D7A3704D07F15041666666362F215441A4703D0A09F15041B81E85CB2E215441E17A149E09F15041F6285C3F3121544148E17AE407F15041B81E85AB31215441090000005C8FC24508F15041000000D03B215441713D0AC709F150415C8FC2F53A21544114AE47810CF150415C8FC2153B21544114AE47710CF15041F6285CFF3E215441EC51B8DE0AF15041C3F528CC3F2154417B14AEB708F15041666666063F215441A4703DEA07F15041F6285C1F3E215441F6285CDF07F15041EC51B8DE3C2154415C8FC24508F15041000000D03B215441
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FD524C63D8F05041C62AD9DD14215441061F3CF3DEF05041D66D2E361F2154418CA95A30E0F050412F85BE631F215441014DCC42E1F05041E70CDBBA1E215441BE6821FEE2F050418347A2D21D215441212E5AE6E3F05041B9E14C511E2154412BBCCD25E3F050415E8C830D1F215441CBBFD90DE0F0504143DA95F320215441333333D3EFF05041000000D039215441F07012B3F0F050413ACFD46D37215441D97D9921F1F05041FEF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CB4DF535F2F050415451F05A342154415C8FC255F2F05041713D0A2734215441051D008BF2F05041C503B4EE332154419BEB917AF3F0504191E5CBBD32215441B2957E26F5F050417469F4F030215441A54DD3A2F4F0504161ED1C242F215441862D2694F2F050411EDBD7E52A21544174B14EC7F0F05041F7A09432282154415591A1B8EEF05041B7188F91232154410AE6A48BEDF05041FDB6DEBB202154419A5A1DCEECF0504178966EFB1E215441288573E4EBF0504172BE9ECF1E21544100A75AEFE8F05041736274111F2154415E5C3DC9E6F05041AF72303C1E2154416237217AE4F050415E8B307E1D215441B9A894EBE3F050414B845B1C1C215441AC60E967E3F050411A8CAC82182154416237217AE4F050410BEBDB0C18215441E049AFA1E5F05041CCE1147917215441002B3D45E8F050414ECF86511621544116E45920E6F05041FB2E32E010215441B31E2138E5F05041E4BCC0510E21544186F392CEE4F0504181F787690D2154413E7BAF25E4F0504184D26B1A0B215441D2465A28E3F05041931C6CE0082154415ED63ADFE4F050411681C33008215441D4BA5845E3F050415B2C5D40042154418E403C59E1F05041F3EEBE31042154417EB0E551E0F05041E45E682A032154417D0C1010E0F05041C53EBB1B012154417C683ACEDFF05041AE94CE6FFF2054416B340E85DEF05041875A8BBCFC2054414F5C0CFADCF0504159AA87A6F92054416B7FC92DDCF050417217D0E1F820544120278F1DCBF050418434C8ACFE205441F1B3594AD6F05041A253A3CB1021544153038FCCD6F05041AFA6DB0712215441D2FC1430D7F050418ABB8EF912215441FD524C63D8F05041C62AD9DD1421544110000000F06E9318E1F05041BF9714B3192154412AE42148DFF05041DAE469F219215441ACD19320DEF0504189FD6934192154419AF35AF6DDF05041145AF8211821544191843EE1DDF05041C372F86317215441372E220EDDF050410FC6BFBD1521544191843EE1DDF05041C74DDC141521544121750533DFF05041AC0087D514215441A8F6AF6FE0F05041C74DDC1415215441C34305AFE0F050410FC6BFBD15215441A8F6AF6FE0F050414ECF865116215441A8F6AF6FE0F05041A825A32417215441D5213ED9E0F05041D550318E172154411D9A2182E1F0504138166A76182154412F785AACE1F05041926C864919215441F06E9318E1F05041BF9714B319215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 5315226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -94  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB11312154410AD7A3A0F4F05041666666E6312154411F85EBE1F3F050413D0AD783322154415C8FC255F2F05041713D0A273421544114AE4741F1F05041A4703DEA35215441333333D3EFF05041000000D03921544148E17A04CDF0504114AE47F10221544166666656C9F050418FC2F5D808215441E17A147EC5F050418FC2F5C808215441F6285CDFC6F0504152B81E5500215441333333C3BFF05041CDCCCC2C032154417B14AE57BEF050413D0AD72303215441AE47E13ABEF0504148E17A240721544152B81EB5C3F050418FC2F5080E2154418FC2F5E8CAF05041295C8F1217215441EC51B8FED6F050415C8FC25526215441713D0AA7D9F050413D0AD7332A215441A4703DDADFF05041C3F5285C322154415C8FC2E5EDF050413333332344215441C3F5289CF3F0504114AE47C14C215441B81E854B00F15041333333434E2154410500000048E17AE407F15041B81E85AB31215441D7A3704D07F15041666666362F215441A4703D0A09F15041B81E85CB2E215441E17A149E09F15041F6285C3F3121544148E17AE407F15041B81E85AB31215441090000005C8FC24508F15041000000D03B215441713D0AC709F150415C8FC2F53A21544114AE47810CF150415C8FC2153B21544114AE47710CF15041F6285CFF3E215441EC51B8DE0AF15041C3F528CC3F2154417B14AEB708F15041666666063F215441A4703DEA07F15041F6285C1F3E215441F6285CDF07F15041EC51B8DE3C2154415C8FC24508F15041000000D03B215441
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FD524C63D8F05041C62AD9DD14215441061F3CF3DEF05041D66D2E361F2154418CA95A30E0F050412F85BE631F215441014DCC42E1F05041E70CDBBA1E215441BE6821FEE2F050418347A2D21D215441212E5AE6E3F05041B9E14C511E2154412BBCCD25E3F050415E8C830D1F215441CBBFD90DE0F0504143DA95F320215441333333D3EFF05041000000D039215441F07012B3F0F050413ACFD46D37215441D97D9921F1F05041FEF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CB4DF535F2F050415451F05A342154415C8FC255F2F05041713D0A2734215441051D008BF2F05041C503B4EE332154419BEB917AF3F0504191E5CBBD32215441B2957E26F5F050417469F4F030215441A54DD3A2F4F0504161ED1C242F215441862D2694F2F050411EDBD7E52A21544174B14EC7F0F05041F7A09432282154415591A1B8EEF05041B7188F91232154410AE6A48BEDF05041FDB6DEBB202154419A5A1DCEECF0504178966EFB1E215441288573E4EBF0504172BE9ECF1E21544100A75AEFE8F05041736274111F2154415E5C3DC9E6F05041AF72303C1E2154416237217AE4F050415E8B307E1D215441B9A894EBE3F050414B845B1C1C215441AC60E967E3F050411A8CAC82182154416237217AE4F050410BEBDB0C18215441E049AFA1E5F05041CCE1147917215441002B3D45E8F050414ECF86511621544116E45920E6F05041FB2E32E010215441B31E2138E5F05041E4BCC0510E21544186F392CEE4F0504181F787690D2154413E7BAF25E4F0504184D26B1A0B215441D2465A28E3F05041931C6CE0082154415ED63ADFE4F050411681C33008215441D4BA5845E3F050415B2C5D40042154418E403C59E1F05041F3EEBE31042154417EB0E551E0F05041E45E682A032154417D0C1010E0F05041C53EBB1B012154417C683ACEDFF05041AE94CE6FFF2054416B340E85DEF05041875A8BBCFC2054414F5C0CFADCF0504159AA87A6F92054416B7FC92DDCF050417217D0E1F820544120278F1DCBF050418434C8ACFE205441F1B3594AD6F05041A253A3CB1021544153038FCCD6F05041AFA6DB0712215441D2FC1430D7F050418ABB8EF912215441FD524C63D8F05041C62AD9DD1421544110000000F06E9318E1F05041BF9714B3192154412AE42148DFF05041DAE469F219215441ACD19320DEF0504189FD6934192154419AF35AF6DDF05041145AF8211821544191843EE1DDF05041C372F86317215441372E220EDDF050410FC6BFBD1521544191843EE1DDF05041C74DDC141521544121750533DFF05041AC0087D514215441A8F6AF6FE0F05041C74DDC1415215441C34305AFE0F050410FC6BFBD15215441A8F6AF6FE0F050414ECF865116215441A8F6AF6FE0F05041A825A32417215441D5213ED9E0F05041D550318E172154411D9A2182E1F0504138166A76182154412F785AACE1F05041926C864919215441F06E9318E1F05041BF9714B319215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>240587 - 5321530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000080000005C8FC2E576D0504114AE47D1E0E35441333333837AD0504148E17AB407E454417B14AEC79DD05041B81E850B0AE45441713D0A47C1D050415C8FC2650CE454410AD7A390BDD0504114AE4781E5E354410AD7A330BCD0504100000030E4E354413D0AD70378D05041A4703DAADFE354415C8FC2E576D0504114AE47D1E0E35441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000E1F5E741BFD050412E6A373CF7E354410AD7A390BDD0504114AE4781E5E354410AD7A330BCD0504100000030E4E3544121930CB893D050416499B680E1E354418B28790593D050410DFEDD74E1E354413D0AD70378D05041A4703DAADFE354415C8FC2E576D0504114AE47D1E0E3544172EBA26677D05041681EA33BE6E35441580DBA7777D05041988F7BF3E6E35441ED37328B78D05041C96CC786F2E3544130291FA178D050416650A372F3E354418D6608A678D050412DC577A7F3E35441141DF95CBFD0504145E0C557F8E35441DAC2C04EBFD050415B33CDC2F7E35441CD7C503DBFD050419C0C1D0CF7E35441E1F5E741BFD050412E6A373CF7E35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>179779 - 4168981
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -163  </desc>
+<a>
+010600000001000000010300000001000000150000000AD7A3403D2D51411F85EB41022B55419A999919482D5141295C8F320A2B554166666636492D514152B81EA5052B554185EB51384B2D5141EC51B8DE012B5541AE47E18A4D2D514185EB51B8FE2A554148E17A744F2D5141AE47E13AFC2A554152B81ED54E2D5141333333C3FA2A55415C8FC2754D2D5141CDCCCCACF92A554114AE4711452D51415C8FC205F52A554148E17A942F2D51415C8FC2F5EF2A5541C3F5285C292D514148E17A04EC2A554152B81E95272D514185EB51D8EB2A55415C8FC295182D51410AD7A3B0F12A554114AE4771092D51417B14AE97F72A55415C8FC235FE2C5141C3F528FCFB2A55415C8FC2C5FD2C514152B81E75FD2A55413D0AD783042D51411F85EBE1062B55411F85EB011B2D51415C8FC2A5FB2A5541EC51B86E262D5141C3F528AC032B5541CDCCCC5C302D51413D0AD713032B55410AD7A3403D2D51411F85EB41022B5541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000433F0909472D51412BB6DC820D2B5541D722400A3D2D51413E12A0BE022B5541DA917E8D3C2D5141D087CD5F022B554159A22D6A3C2D5141E8A7A361022B5541BB6E2595342D5141A274E6C9022B5541A7B6064E332D5141F41556E8022B55414C129ED42B2D514137545D9A032B55418159938E292D51415CE984D0032B554148E17AB4252D5141E9263150042B5541B4D373B6242D51416B904FCF032B554118DC06C51C2D5141D1DD9EE2FC2A5541BA490CF21A2D5141B81E854BFB2A5541B29DEF57122D5141A4703D5AFE2A55419CE58911032D5141763390D5042B55413D0AD783042D51411F85EBE1062B5541CDCCCC0C0F2D5141C3F5289C152B5541AE47E13A212D5141713D0A072F2B55413D0AD723232D5141E17A14FE2D2B5541F6285C7F282D51417B14AE47282B5541F6285C0F2F2D5141F6285C5F222B5541A4703D6A342D514152B81EE51E2B5541F6285C4F412D5141AE47E1BA162B55417B14AE07442D514100000050142B55411F85EB01462D51415C8FC2B5102B5541433F0909472D51412BB6DC820D2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>961914 - 1197881
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000003E000000C4340AF1CF3F51414792F498FC755441B5C1224FD03F514184DC635BF875544169C15F5BCA3F5141451B16C6F7755441642B89AEBE3F5141D412965EF7755441CC7EBF71B63F514125F819DBF6755441C8119A8BB03F5141A03EEA2AF6755441F03FE148AF3F5141B26D0FEFFA755441A4C6141CAF3F51411A2EECEDFA755441FE630E62A13F5141B57910B7FB755441E4153C51A13F5141E40B4603FE75544166D0E5E0993F5141D026A05FFE755441380BCFC2913F514184890BAAFF75544180B8A83A913F5141FE4EC62F15765441427763A5913F514126FB4A8A22765441E4968623923F5141A23FC67E2D76544163B878F2963F51417AA8C9F12E765441CAB7A196993F5141822EB45130765441887621F39B3F514124A9645E32765441E4DB243AA03F5141F66EF91A367654414E009720A63F51416CA5417D3976544156F4AA30AD3F51410588FAC63B7654416F30C3B8B23F5141F81568923E765441AE62C21CBA3F51410FA5A5EA3F765441FC8F2D37BF3F5141EAF8CE5D3F7654414936B111C73F5141E27F543F3E765441B6223F89CA3F5141C510BF73427654418AEB0C5CD03F5141D386AB204676544199FDD81DD33F5141B0ED1C904776544144C71489D53F51414BA88AE947765441448DFF6DD83F5141DAD2C68A47765441661B15EEDD3F5141D47392DF4576544180D97A4AE83F5141DCDFFE2442765441C09DEA6CEE3F51414B02B1FB3F765441CADAEEDEF53F514153C346493C76544155565821F73F5141D254E1363B765441393324FBF63F5141BCB4116837765441A65CFFFEF63F5141FCE2BFAF30765441C125E245F73F51418650BB362C765441F8C1606AF73F51417070EEB5277654415436F24CF73F5141D0B91A01237654419A7AAF5FF73F514102CF4AF31E7654410F9FFDB1F73F5141B09EAB1C1C7654414C49EEE4F83F5141EB75E561177654414F5B466DFA3F51414FC2587113765441CC307517FB3F5141403515E60F7654419191EAC2FB3F51417F76E71C0C765441DEA786C5FB3F5141E02B4AAB097654412AB95BDEF73F5141BFFF8D400A7654416A28607AF33F5141A84C97600A765441AB29375DE83F51415BE0903E0A7654413E888343E43F5141EE3AEB9D0A7654416E9FB53AE03F514182A042510C765441B893BF63DF3F5141709FD00412765441A17C5859DE3F5141326411B219765441F7896E07DD3F5141B6C6FE622376544128258940D23F51412F892CDA22765441C6526466CB3F5141EBEF318B21765441F87D5381CB3F51412480A9E6177654414B756199CB3F5141162A0F73157654419CA72167CE3F51411C47F8F60B765441EAF1DA4CCF3F51413C8F3F3D04765441C4340AF1CF3F51414792F498FC755441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000AE47E1DA913F5141D7A370BDFF755441A8E9379F913F5141145D524A057654417BB8A83A913F5141FA4EC62F157654413E7763A5913F514126FB4A8A22765441E8968623923F5141A03FC67E2D76544163B878F2963F514175A8C9F12E765441CBB7A196993F5141862EB45130765441887621F39B3F514122A9645E32765441E2DB243AA03F5141F76EF91A367654414D009720A63F514167A5417D3976544155F4AA30AD3F51410688FAC63B7654416C30C3B8B23F5141F41568923E765441B162C21CBA3F51410BA5A5EA3F765441FB8F2D37BF3F5141ECF8CE5D3F7654414E36B111C73F5141DF7F543F3E765441B5223F89CA3F5141C210BF73427654418BEB0C5CD03F5141D786AB20467654419DFDD81DD33F5141ACED1C904776544142C71489D53F514150A88AE947765441498DFF6DD83F5141D8D2C68A47765441651B15EEDD3F5141D67392DF4576544185D97A4AE83F5141DADFFE2442765441C39DEA6CEE3F51414C02B1FB3F765441C9DAEEDEF53F514153C346493C76544158565821F73F5141CF54E1363B7654413B3324FBF63F5141BEB4116837765441A25CFFFEF63F5141FAE2BFAF30765441C525E245F73F51418350BB362C765441F7C1606AF73F51416B70EEB5277654415336F24CF73F5141D5B91A0123765441977AAF5FF73F514106CF4AF31E765441129FFDB1F73F5141B59EAB1C1C7654414949EEE4F83F5141E675E561177654414E5B466DFA3F51414EC2587113765441CF307517FB3F51413C3515E60F7654418F91EAC2FB3F51417C76E71C0C765441DAA786C5FB3F5141DE2B4AAB097654412FB95BDEF73F5141BDFF8D400A7654416A28607AF33F5141A34C97600A765441AD29375DE83F514158E0903E0A76544140888343E43F5141EC3AEB9D0A765441699FB53AE03F514184A042510C765441B493BF63DF3F5141759FD00412765441A47C5859DE3F5141366411B219765441F6896E07DD3F5141BAC6FE62237654412D258940D23F51412B892CDA22765441C6526466CB3F5141E7EF318B21765441F77D5381CB3F51412180A9E61776544146756199CB3F5141142A0F73157654419BA72167CE3F51411947F8F60B765441E9F1DA4CCF3F5141378F3F3D04765441C2340AF1CF3F51414392F498FC755441B6C1224FD03F514189DC635BF875544166C15F5BCA3F51414A1B16C6F7755441622B89AEBE3F5141D112965EF7755441D17EBF71B63F514124F819DBF6755441C4119A8BB03F5141A33EEA2AF6755441D7FF125FAF3F514124E7259BFA7554411F85EB51AF3F5141CDCCCCECFA755441AE2E5549AF3F51416C1C59EDFA755441EC3FE148AF3F5141B16D0FEFFA7554411C7F0336AF3F514130C694EEFA755441A4703D6AA13F5141000000D0FB755441DAE74460A13F514139AB8DF5FB755441475F0FD3A03F5141377D6409FE755441000000B0A03F5141D7A3708DFE755441A4703DDA993F514114AE4761FE755441AE47E1DA913F5141D7A370BDFF755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>961914 - 3823778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000003E000000C4340AF1CF3F51414792F498FC755441B5C1224FD03F514184DC635BF875544169C15F5BCA3F5141451B16C6F7755441642B89AEBE3F5141D412965EF7755441CC7EBF71B63F514125F819DBF6755441C8119A8BB03F5141A03EEA2AF6755441F03FE148AF3F5141B26D0FEFFA755441A4C6141CAF3F51411A2EECEDFA755441FE630E62A13F5141B57910B7FB755441E4153C51A13F5141E40B4603FE75544166D0E5E0993F5141D026A05FFE755441380BCFC2913F514184890BAAFF75544180B8A83A913F5141FE4EC62F15765441427763A5913F514126FB4A8A22765441E4968623923F5141A23FC67E2D76544163B878F2963F51417AA8C9F12E765441CAB7A196993F5141822EB45130765441887621F39B3F514124A9645E32765441E4DB243AA03F5141F66EF91A367654414E009720A63F51416CA5417D3976544156F4AA30AD3F51410588FAC63B7654416F30C3B8B23F5141F81568923E765441AE62C21CBA3F51410FA5A5EA3F765441FC8F2D37BF3F5141EAF8CE5D3F7654414936B111C73F5141E27F543F3E765441B6223F89CA3F5141C510BF73427654418AEB0C5CD03F5141D386AB204676544199FDD81DD33F5141B0ED1C904776544144C71489D53F51414BA88AE947765441448DFF6DD83F5141DAD2C68A47765441661B15EEDD3F5141D47392DF4576544180D97A4AE83F5141DCDFFE2442765441C09DEA6CEE3F51414B02B1FB3F765441CADAEEDEF53F514153C346493C76544155565821F73F5141D254E1363B765441393324FBF63F5141BCB4116837765441A65CFFFEF63F5141FCE2BFAF30765441C125E245F73F51418650BB362C765441F8C1606AF73F51417070EEB5277654415436F24CF73F5141D0B91A01237654419A7AAF5FF73F514102CF4AF31E7654410F9FFDB1F73F5141B09EAB1C1C7654414C49EEE4F83F5141EB75E561177654414F5B466DFA3F51414FC2587113765441CC307517FB3F5141403515E60F7654419191EAC2FB3F51417F76E71C0C765441DEA786C5FB3F5141E02B4AAB097654412AB95BDEF73F5141BFFF8D400A7654416A28607AF33F5141A84C97600A765441AB29375DE83F51415BE0903E0A7654413E888343E43F5141EE3AEB9D0A7654416E9FB53AE03F514182A042510C765441B893BF63DF3F5141709FD00412765441A17C5859DE3F5141326411B219765441F7896E07DD3F5141B6C6FE622376544128258940D23F51412F892CDA22765441C6526466CB3F5141EBEF318B21765441F87D5381CB3F51412480A9E6177654414B756199CB3F5141162A0F73157654419CA72167CE3F51411C47F8F60B765441EAF1DA4CCF3F51413C8F3F3D04765441C4340AF1CF3F51414792F498FC755441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000AE47E1DA913F5141D7A370BDFF755441A8E9379F913F5141145D524A057654417BB8A83A913F5141FA4EC62F157654413E7763A5913F514126FB4A8A22765441E8968623923F5141A03FC67E2D76544163B878F2963F514175A8C9F12E765441CBB7A196993F5141862EB45130765441887621F39B3F514122A9645E32765441E2DB243AA03F5141F76EF91A367654414D009720A63F514167A5417D3976544155F4AA30AD3F51410688FAC63B7654416C30C3B8B23F5141F41568923E765441B162C21CBA3F51410BA5A5EA3F765441FB8F2D37BF3F5141ECF8CE5D3F7654414E36B111C73F5141DF7F543F3E765441B5223F89CA3F5141C210BF73427654418BEB0C5CD03F5141D786AB20467654419DFDD81DD33F5141ACED1C904776544142C71489D53F514150A88AE947765441498DFF6DD83F5141D8D2C68A47765441651B15EEDD3F5141D67392DF4576544185D97A4AE83F5141DADFFE2442765441C39DEA6CEE3F51414C02B1FB3F765441C9DAEEDEF53F514153C346493C76544158565821F73F5141CF54E1363B7654413B3324FBF63F5141BEB4116837765441A25CFFFEF63F5141FAE2BFAF30765441C525E245F73F51418350BB362C765441F7C1606AF73F51416B70EEB5277654415336F24CF73F5141D5B91A0123765441977AAF5FF73F514106CF4AF31E765441129FFDB1F73F5141B59EAB1C1C7654414949EEE4F83F5141E675E561177654414E5B466DFA3F51414EC2587113765441CF307517FB3F51413C3515E60F7654418F91EAC2FB3F51417C76E71C0C765441DAA786C5FB3F5141DE2B4AAB097654412FB95BDEF73F5141BDFF8D400A7654416A28607AF33F5141A34C97600A765441AD29375DE83F514158E0903E0A76544140888343E43F5141EC3AEB9D0A765441699FB53AE03F514184A042510C765441B493BF63DF3F5141759FD00412765441A47C5859DE3F5141366411B219765441F6896E07DD3F5141BAC6FE62237654412D258940D23F51412B892CDA22765441C6526466CB3F5141E7EF318B21765441F77D5381CB3F51412180A9E61776544146756199CB3F5141142A0F73157654419BA72167CE3F51411947F8F60B765441E9F1DA4CCF3F5141378F3F3D04765441C2340AF1CF3F51414392F498FC755441B6C1224FD03F514189DC635BF875544166C15F5BCA3F51414A1B16C6F7755441622B89AEBE3F5141D112965EF7755441D17EBF71B63F514124F819DBF6755441C4119A8BB03F5141A33EEA2AF6755441D7FF125FAF3F514124E7259BFA7554411F85EB51AF3F5141CDCCCCECFA755441AE2E5549AF3F51416C1C59EDFA755441EC3FE148AF3F5141B16D0FEFFA7554411C7F0336AF3F514130C694EEFA755441A4703D6AA13F5141000000D0FB755441DAE74460A13F514139AB8DF5FB755441475F0FD3A03F5141377D6409FE755441000000B0A03F5141D7A3708DFE755441A4703DDA993F514114AE4761FE755441AE47E1DA913F5141D7A370BDFF755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873019 - 3988976
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -64  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCCFC4E6B51419A99991925AC5441295C8F724A6B51419A99996925AC54418FC2F508456B51418FC2F5B825AC5441EC51B83E416B5141333333D325AC5441295C8FB23E6B51410000000026AC5441D7A3702D3D6B514114AE47E12EAC54415C8FC2A53A6B5141666666B63DAC544114AE47113E6B5141A4703DFA3EAC5441000000703F6B5141A4703D2A3FAC5441713D0A87466B5141AE47E1EA3EAC5441B81E856B506B5141AE47E17A3EAC5441AE47E1BA5D6B5141AE47E16A3EAC54419A9999195F6B5141C3F528AC3DAC54418FC2F5885F6B5141EC51B8AE3BAC54418FC2F5785F6B51411F85EB9138AC54418FC2F5585F6B5141713D0A7734AC54419A9999E95E6B5141C3F5284C30AC5441A4703D6A5E6B51410AD7A3802CAC5441AE47E11A5E6B514148E17AB429AC5441CDCCCCAC526B5141AE47E14A27AC5441CDCCCCFC4E6B51419A99991925AC5441
+</a>
+
+<b>
+01060000000100000001030000000100000067000000A3050D9E3A6B5141024E543F2FAC5441B70798E63A6B51416B6EB1602EAC5441E44C39463B6B51417780AE632DAC54414528D7FA3B6B5141F859DDE42BAC5441D599C8E23C6B514108DD04F229AC54414CA82ED53D6B514152B8AFE827AC5441586FF9633E6B51416B0B08BB26AC5441B6F3FD8C3E6B51413F355E7226AC5441C2946E7A416B5141AFC9AC3B26AC54410CB1AA17436B51419688922A26AC54419B073618456B514117B06B1426AC5441FBB44DAB456B5141C3C0710A26AC5441B3749703486B5141C42595CD25AC5441B0C1A48F4A6B5141C76C7C8025AC5441E9E3FFFF4A6B5141E68B9B7225AC544188C7B8564C6B5141591D464825AC54419B4A6DEC4C6B51413332C83525AC544184DE2F044D6B51419075553C25AC54419FC1229F4E6B5141C005A7AD25AC54413D0AD7634F6B5141AAF1D23525AC54410F1876DD4C6B51412FF4EDC422AC544185EB51B84B6B5141560E2D4221AC544196438BB44C6B5141B81E85F320AC5441190456464C6B51417B14AE371CAC54413880EBF2496B51419FB48B4A1CAC5441EA6D631A456B514193D8A12B1DAC5441E52C26CD436B51419A642E801DAC5441713D0A47436B5141A4703DBA1DAC54419A9999B9416B51418FC2F5281EAC5441FFECD1D13F6B5141855809051FAC54410D1097FD3D6B51419F96645D20AC5441DBEE8D5B3C6B51415AD2ECC921AC544101AF90EC3A6B514101AFE95D23AC54417B37D77C396B51417785921225AC5441F62B223F386B51417C2EA9A026AC54415A643B17376B5141713D0A4F28AC54413F355E6A386B5141D9CEF72B2CAC5441EE7C3F7D396B51410C022B472DAC5441CBB4754B396B514146C12B252FAC5441A11D34C0386B51416F74AC2330AC5441F74D1BD0376B5141C2DB5F1D31AC5441C4BC0536366B514101B149A131AC5441FC8A13A6336B5141C113DE0332AC5441E80B8CB3316B5141DA46E62F32AC5441D9D730992F6B51416F68AA5532AC54416F1283682D6B5141D122DB5132AC5441B73977752D6B5141BD93B6E833AC5441ADD9D4792D6B51415150AF3034AC5441A2B157B52D6B514196B9F1D834AC5441DCF3E5012E6B51418FF2A6B035AC54419D8580952E6B51411E44ADCA36AC5441273108542F6B5141EC51B83638AC5441C5A8A6EF2F6B514175F8390439AC54416DD6088E316B51418A0AEB533AAC544122ED9C8B326B5141F59298E83AAC544104AF1349346B5141B6B0FAE83BAC544193799AB0366B51417E9CE9203DAC5441F6285C7F3A6B51415C8FC2953EAC5441D124C2F73E6B51414123AE3740AC5441C14B2993416B51413A79A2F240AC5441D7A3703D426B514152B81E2541AC544185EB51B8496B51413D0AD79343AC5441EC51B85E4D6B51419A9999D944AC544114AE47F14D6B51410AD7A39045AC54415C06192C526B5141A209274A47AC5441FE520804546B514116EAE21147AC5441E5FA131F556B51413860590C47AC5441EC062A57596B5141884521D247AC544139F41CE55C6B5141894974FB46AC5441CCDFE9425F6B514186D9765446AC5441DDBCB1FD5E6B5141D36D6AE042AC5441F853E3BD5E6B5141000000683FAC5441C19A7A6B5D6B514113E84B863FAC544168379F315C6B51416E905F823FAC5441EF8B0886566B5141C0A95E1C3FAC5441A3F1DBFB506B5141582908143FAC5441A29197B24E6B5141EF2088173FAC5441B1969A17486B514152F9637D3FAC54413BDF4F95436B51410E2DB21540AC5441BFF110C63F6B5141914E3C273FAC544183C087B73F6B51413AB4C1183FAC5441154E91163E6B5141C11A6FB03EAC5441D4F985063D6B5141B3F876643EAC5441E159F07C3B6B514116BD47CA3DAC5441546472B03A6B51410F2EBF773DAC5441CC5037B13A6B51417FAF3C733DAC5441A347CE4E3A6B5141A6D9EB533DAC54418853B1C1376B5141516507EA3BAC54411ACA311B356B51410AC8127A3AAC5441E810D59C326B5141761607E738AC544192794CBC316B5141FC83FB5138AC5441D521AB7F316B51415834831338AC54413108AC542F6B5141986E12A335AC5441A245B63B2F6B5141AC1C5A4434AC5441CE8822E12F6B514121C9970934AC54415BAA7222316B51415797F9CC33AC544111CD3043336B514172399A6233AC54414EC6E3DF336B514195582B3533AC5441946AECB8356B5141E246D4C532AC5441C436E6A5376B5141432AB15132AC5441F0A7C60B396B51414260E55831AC544176C3753E3A6B514182DAB0C92FAC5441A3050D9E3A6B5141024E543F2FAC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>188845 - 56102
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000013000000713D0A172CE7504114AE47B1262E5541E17A140E38E75041C3F5281C1B2E55410AD7A37038E75041CDCCCCBC1A2E5541C3F5282C35E75041C3F5282C182E55410AD7A31033E7504185EB51D8152E55411F85EB912EE75041C3F5282C122E5541C3F5286C22E75041B81E851B092E55411F85EBB11DE75041CDCCCC4C0C2E5541666666E617E75041713D0A37102E5541666666F61AE750419A9999890F2E5541666666E61BE750418FC2F568122E5541A4703DBA18E75041CDCCCC2C132E55410AD7A3C019E75041666666D6162E5541A4703D2A1BE7504185EB51081C2E55411F85EB611CE75041000000001F2E55410AD7A31031E75041D7A3705D302E5541EC51B8FE32E7504152B81E652E2E554152B81E8534E75041713D0AD72C2E5541713D0A172CE7504114AE47B1262E5541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000E17A140E38E75041C3F5281C1B2E554177AB343A38E75041958777F11A2E55412961586B38E7504123C2A4B81A2E5541C3F5282C35E75041C3F5282C182E5541527D53BA32E75041A9C8CC91152E5541CE759D9032E75041C6A1B86F152E5541E72326392EE750413F608CF6112E5541C6264FBE2AE75041049821510F2E5541F603705E22E75041FE6CC924092E55416AF6D8D31DE750413C7CE3350C2E5541A966FBB81DE7504141EE07480C2E55411F85EBB11DE75041CDCCCC4C0C2E5541E3767F2018E750416E42CA0F102E554135F2D31C19E7504155A15DF20F2E5541666666F61AE750419A9999890F2E554157B797491BE75041A4938088102E55412DA898DF1BE75041250F1D54122E5541666666E61BE750418FC2F568122E5541151170CC18E75041D37BD535132E55412EDD4B8F1AE750416FD874CE192E5541E90C135A1BE750411B06E97C1C2E554108ECDF711CE750413242650D1F2E55411028C2CE1CE75041E76E615B1F2E554180CD78561DE750414C5053CD1F2E5541A546AC801DE750414AE5C1F01F2E5541227C21351EE7504111034588202E55412033D4751EE75041B40B97BE202E554199F55E4826E750414CF4EB4F272E5541BBEFCA0D31E750414EA70C5B302E5541EC51B8FE32E7504152B81E652E2E554152B81E8534E75041713D0AD72C2E5541713D0A172CE7504114AE47B1262E5541E17A140E38E75041C3F5281C1B2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189143 - 56378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000620000005C8FC205CBE65041713D0A477F2B5541EC51B8BECBE65041333333137F2B55418FC2F588CCE6504114AE47E17E2B554100000090CDE6504148E17AA47E2B5541D7A3707DCEE65041666666667E2B5541AE47E19ACFE65041B81E851B7E2B55411F85EBF1D0E65041295C8FC27D2B5541713D0A07D2E650415C8FC2757D2B554185EB5188D6E65041C3F5284C7C2B5541F6285C1FD7E6504148E17A147C2B554133333363D8E6504114AE47917B2B55410AD7A3B0D9E65041D7A3700D7B2B554152B81E05DBE65041000000807A2B5541EC51B80EDCE650411F85EB117A2B55415C8FC2D5DCE65041AE47E1CA792B5541F6285C5FDDE65041F6285C8F792B5541C3F5281CDEE6504133333363792B55419A9999D9DEE65041A4703D3A792B55413D0AD763DFE6504100000010792B55410AD7A3D0DFE6504152B81EE5782B554100000030E0E65041333333B3782B55418FC2F588E0E65041F6285C8F782B5541713D0A07E1E650410AD7A350782B5541295C8F82E1E65041C3F5280C782B5541D7A3701DE2E6504148E17AA4772B554185EB5198E2E6504166666656772B55410AD7A310E3E650418FC2F508772B5541713D0A97E3E65041713D0A97762B5541AE47E13AE3E650417B14AE97752B5541F6285CEFE2E65041000000E0742B5541B81E85BBE2E6504100000030742B55418FC2F578E2E65041EC51B87E732B5541B81E851BE2E650417B14AE87722B554114AE47C1E1E65041713D0AB7712B554185EB5178E1E65041713D0AE7702B5541E17A143EE1E65041713D0A27702B5541A4703D0AE1E65041EC51B85E6F2B55413D0AD733DFE65041E17A147E682B55415C8FC205DDE65041AE47E19A5E2B55413D0AD7D3DBE65041D7A3706D5E2B5541333333D3D4E6504114AE47D15E2B55413D0AD733D2E65041295C8F125F2B554185EB51D8CFE65041D7A3704D5F2B5541C3F5282CCDE650418FC2F5785F2B5541713D0A27C9E65041AE47E1BA5F2B55418FC2F5F8C4E650417B14AEF75F2B5541A4703D7AC1E6504152B81E15602B5541F6285C0FBEE65041295C8F12602B554114AE47F1B9E65041F6285CEF5F2B5541B81E850BB6E65041CDCCCCBC5F2B554148E17A04B6E65041A4703D3A612B55418FC2F5E8B5E6504152B81E05672B55418FC2F508B7E6504114AE4711672B55418FC2F518B9E65041A4703D2A672B5541E17A14FEBAE6504185EB5138672B5541A4703D7ABDE650410AD7A350672B5541713D0A47BFE650411F85EB61672B554185EB51D8C0E6504148E17A64672B554185EB5138C2E65041C3F5286C672B554133333343C4E65041AE47E16A672B554100000000C6E65041CDCCCC6C672B554114AE47E1C7E65041713D0A67672B55410AD7A380CAE65041A4703D6A672B55415C8FC2A5CCE6504133333373672B55419A9999A9CCE65041A4703D6A6D2B5541B81E858BCAE65041C3F528CC6E2B5541C3F5285CC6E650410AD7A3506F2B5541295C8FB2C3E65041C3F528BC6D2B55417B14AEA7C1E65041CDCCCCCC6D2B55419A999929C0E65041B81E85DB6D2B5541A4703DCABEE650413D0AD7E36D2B5541F6285C8FBDE65041AE47E1EA6D2B5541713D0A47BCE65041AE47E1FA6D2B554148E17AF4BAE65041000000106E2B55413D0AD713B9E65041295C8F326E2B5541AE47E12AB7E65041E17A145E6E2B5541666666D6B5E65041333333836E2B5541A4703DAAB4E650419A9999C96E2B5541E17A140EB4E650419A999999712B55413D0AD753B3E65041295C8FF2742B55417B14AEB7B2E6504133333303792B554100000030B4E650417B14AE27792B554114AE47B1B5E65041713D0A47792B5541C3F5288CB7E65041F6285C6F792B554185EB51E8B9E650410AD7A3A0792B5541F6285CAFBBE6504152B81ED5792B5541EC51B8CEBDE650410AD7A3107A2B5541F6285C2FC0E65041AE47E14A7A2B55411F85EBC1C1E65041AE47E17A7A2B55413D0AD783C3E6504114AE47B17A2B5541A4703DFAC4E65041C3F528DC7A2B5541C3F528CCC6E65041666666167B2B5541A4703DBAC8E6504148E17A547B2B5541000000C0C9E65041000000607B2B554185EB51A8C9E650413D0AD7B37B2B5541000000F0C8E65041EC51B83E7E2B5541713D0A77C8E65041EC51B8CE7F2B55415C8FC205CBE65041713D0A477F2B5541
+</a>
+
+<b>
+0106000000010000000103000000010000005800000063D3D1A5CCE6504113DFE98A672B55419A9999A9CCE65041A4703D6A6D2B554117AA28A9CCE65041C02C876A6D2B55414A172AA9CCE650418089096D6D2B554186567DCFCBE650412985A4F86D2B5541B81E858BCAE65041C3F528CC6E2B554178B54B84CAE6504190A60DCD6E2B554140771B68C6E650413EA3294F6F2B5541C3F5285CC6E650410AD7A3506F2B554106F8B6B2C3E65041097740BC6D2B554141BFBD9BB9E65041BAC3C9286E2B5541384D4C73B6E65041F23518726E2B5541F4A2BDA7B4E6504176831FD56E2B55416C437247B4E6504136821A91702B5541889C601CB4E6504173FEAD57712B5541E17A140EB4E650419A999999712B5541AD3F125AB3E650410235E3D5742B55417003DEB7B2E65041BBD83703792B554100000030B4E650417B14AE27792B554114AE47B1B5E65041713D0A47792B5541C3F5288CB7E65041F6285C6F792B554185EB51E8B9E650410AD7A3A0792B5541F6285CAFBBE6504152B81ED5792B5541EC51B8CEBDE650410AD7A3107A2B5541F6285C2FC0E65041AE47E14A7A2B55411F85EBC1C1E65041AE47E17A7A2B55413D0AD783C3E6504114AE47B17A2B5541A4703DFAC4E65041C3F528DC7A2B5541C3F528CCC6E65041666666167B2B5541A4703DBAC8E6504148E17A547B2B5541000000C0C9E65041000000607B2B554185EB51A8C9E650413D0AD7B37B2B5541000000F0C8E65041EC51B83E7E2B55416A80BE7EC8E65041754A3EB57F2B5541FE60B58DC8E65041E9B605CA7F2B5541A2AB540ECBE650411E48A3447F2B5541EC51B8BECBE65041333333137F2B55418FC2F588CCE6504114AE47E17E2B55418CFAFDB1CCE6504194B2CBD77E2B55418FFCFC06D2E65041A63BC6757D2B5541F70EBE07D2E65041902894757D2B55413F228496D6E65041893AED467C2B5541D668634ADAE65041632492CD7A2B554152B81E05DBE65041000000807A2B5541EC51B80EDCE650411F85EB117A2B55411EBA92C6DCE650411AE64CD0792B554154A3EBE7DCE65041924806C3792B5541F6285C5FDDE65041F6285C8F792B5541C3F5281CDEE6504133333363792B55418D11C27DDEE65041AE03194E792B554120F6618BDFE65041C6606A00792B55419B3303DBE1E6504196AFF2D0772B5541D7A3701DE2E6504148E17AA4772B554185EB5198E2E6504166666656772B55410AD7A310E3E650418FC2F508772B55414FE91A96E3E650417A19D597762B55413B3F5819E3E650419A881D46752B5541F6285CEFE2E65041000000E0742B5541EF4099DEE2E65041AA1B18A7742B554136D8A4F4E1E65041C6DACB2D722B554114AE47C1E1E65041713D0AB7712B554185EB5178E1E65041713D0AE7702B5541E17A143EE1E65041713D0A27702B5541A4703D0AE1E65041EC51B85E6F2B55413D0AD733DFE65041E17A147E682B5541355E8B64DEE650413D60E1D1642B55412820DC04DDE65041630DBF9A5E2B5541C0857A74DCE6504190F04C855E2B55418A68D167DCE65041DC846B835E2B55412BD5D39FD7E65041822C5EA95E2B5541DAA48A6BD1E650416BEF19265F2B554185EB51D8CFE65041D7A3704D5F2B5541C3F5282CCDE650418FC2F5785F2B5541713D0A27C9E65041AE47E1BA5F2B55418FC2F5F8C4E650417B14AEF75F2B5541A4703D7AC1E6504152B81E15602B554146D20CC3BEE6504198F61513602B55417D1B05C3BEE650413E29621D602B5541BE7E210BB6E65041A8A8E2D15F2B554148E17A04B6E65041A4703D3A612B55418FC2F5E8B5E6504152B81E05672B55418FC2F508B7E6504114AE4711672B5541BD27B3D9B8E650417AE03F27672B55416D87FB69C6E650416A16886B672B554114AE47E1C7E65041713D0A67672B55410AD7A380CAE65041A4703D6A672B55415C8FC2A5CCE6504133333373672B554163D3D1A5CCE6504113DFE98A672B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189938 - 55033
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000050000008FC2F598D9ED50417B14AEE7BF8E544100000050BEED5041AE47E17AF28E5441333333F3C4ED50417B14AE67F78E5441713D0A67E0ED5041F6285C0FC48E54418FC2F598D9ED50417B14AEE7BF8E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000333333F3C4ED50417B14AE67F78E5441257A35E2CDED504100F93CB2E68E544181E54B42D4ED50418A2FC9A2DA8E5441CF339A50DCED50413FE47D97CB8E54414DF6DB60E0ED5041530D960BC48E5441CD69AE9DDAED5041920FDF86C08E5441177CE298D9ED5041973ED8F1BF8E54416E33F5FFD5ED50419065D592C68E5441623778FFC9ED504190B3F1D1DC8E544130923F0DC8ED50411A3B706DE08E54417CEC7C70BEED5041F767FC92F28E5441333333F3C4ED50417B14AE67F78E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>127073 - 202508
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -122  </desc>
+<a>
+01060000000100000001030000000100000009000000EC51B86EC4B65041C3F528CC7D4455411F85EB71C7B65041B81E85EB7C445541333333B3C1B65041AE47E11A6A4455410AD7A3B0BBB6504166666636574455418FC2F508BAB65041333333C35744554100000080B8B65041A4703D3A58445541A4703DAABBB650415C8FC2F56144554152B81E95BEB650419A9999196B445541EC51B86EC4B65041C3F528CC7D445541
+</a>
+
+<b>
+01060000000100000001030000000100000044000000B7C8112FC7B65041F01DFEFE7C4455411E85EB71C7B65041B61E85EB7C445541E7DDD793C6B6504103B836147A445541077D2508C6B6504103B836147A445541CAECA23AC4B65041C46F752D79445541A7BCCCA0C3B6504154C707137744554187BCCCA0C3B65041EE665BDF7544554165875B07C4B6504192D13D1275445541ABA4E153C3B650416FA1677874445541FF26AFD3C2B65041B1D6D81174445541848CF606C3B650415059A69173445541848CF606C3B650413211E5AA724455415D740BBAC2B65041ADAB9D77724455419C79A6B9C1B6504118E6A910714455418B61BB6CC1B65041CC6D12906F445541BB7E41B9C0B650411B9033DC6D445541CC135F86C1B650410E95CEDB6C445541492C4AD3C1B650417BCA3F756C44554145010F39C0B650414BADB9286D445541FDB3B252C0B65041ED1C375B6B4455415619FA85C0B650415F6F2E416A44554138145F86C1B65041A1A49FDA694455417F98EBADBFB650410A40CEC063445541CE8877B8BEB650411C76E5F163445541CE8877B8BEB65041107B80F162445541FD708C6BBEB6504190B58C8A61445541E8A5FD04BEB65041749DA13D61445541178E12B8BDB65041CEBFC2895F445541444651D1BCB65041F5D7ADD65F4455410B93ADB7BCB65041462AA5BC5E44554190F8F4EABCB6504161472B095E445541CA5D3C1EBDB650416917556F5D445541AB157B37BCB65041C33976BB5B4455414A9848B7BBB6504159F1B4D45A44554119032BEABAB65041D25B97075A44554119032BEABAB65041B313D620594455415714A125BCB650418A2928A658445541C9D6A3B0BBB650417C6666365744554124644558BAB650410BC5D7A8574455416D85F869BAB650419E96A3A0584455413320B136BAB65041DA2BC16D59445541B1FEC50EB9B65041291E46F159445541D78FC653BBB6504180EFE0EB60445541B9703DAABBB65041928FC2F5614455410B8688C2BCB65041D642DE63654455416D0B4538BEB65041CA23EE0B65445541D658A11EBEB65041E96BAFF2654455414CD6D39EBEB650410ECC5B26674455415DEEBEEBBEB65041BFA93ADA684455412DD1389FBFB650412B276D5A694455411BB94D52BFB650414D5743F46944554147B81E95BEB650416F9999196B445541873680D2BFB65041104D0DF56B4455417906AA38BFB65041D2F24F246D445541214D8E0FC0B6504177A523D36F4455419B85F997C3B650412F0CCD1D7B445541D2BCCCA0C3B65041C4B29B147B445541D0048E87C4B65041E0CA86617B445541E37D72D8C3B650417178DDEB7B4455410C3669E2C3B6504146F6B50B7C445541389DC9E7C3B650411828E51C7C445541F3346421C5B650415D60A42E7C4455416C9F4654C4B650411EDED6AE7C445541F1048E87C4B6504191A865157D445541C21C79D4C4B65041B5907AC87C445541B2FFF287C5B65041E4F5C1FB7C445541769BFA21C5B6504169BFF1977D445541B7C8112FC7B65041F01DFEFE7C445541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37432 - 2913192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A3A02C9A5041666666F603FD5441295C8FE2299A5041E17A14CEC6FC544133333373279A5041F6285C5F8EFC5441A4703DBA269A50411F85EB318DFC54415C8FC275259A50413D0AD7A38CFC544148E17AF40F9A5041AE47E1DA8EFC5441AE47E1EA0D9A5041295C8F828FFC544152B81E05099A50416666667691FC5441F6285C6F0B9A504152B81E55C8FC5441C3F5282C0E9A50416666668606FD54410AD7A3302B9A50413333338305FD54410AD7A3A02C9A5041666666F603FD5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C3F5282C0E9A50416666668606FD5441B1843E80169A50418F78013C06FD5441DDF22E4A169A50411D22896302FD54419138B540139A5041DAC76D3DC6FC54413ABC967E109A504119F78D9C8FFC5441F036CA71109A50417F21F9CD8EFC544148E17AF40F9A5041AE47E1DA8EFC54415CB3FC0D0E9A5041032746778FFC5441DBB2CB05099A50418B6A367691FC544122830B21099A5041FF82DEF093FC5441F86254C1099A50415BCE9D2AA2FC544152A81F3D0A9A5041733A4727ADFC54415C9B60850A9A5041F91BEB90B3FC5441019AFAF20A9A5041D8B01E4BBDFC54410EEB6B820B9A504131962C06CAFC5441B196C8A60B9A50419FAD4540CDFC544122F7DDFF0B9A504100AE2228D5FC54414C6643780C9A5041534262D7DFFC54417A73F80C0D9A50419A6FD209EDFC5441C3F5282C0E9A50416666668606FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>41613 - 1660281
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000150000009A99998904BC504100000030BE2455416666665609BC5041A4703D7ABE2455411F85EB5109BC5041D7A3703DBA245541F6285C4F09BC504185EB5138B82455418FC2F54809BC5041EC51B8DEB324554152B81E15FDBB5041295C8FA2B32455411F85EB81FDBB50413D0AD773B0245541F6285CCFF3BB504166666656AD2455418FC2F518F3BB50419A9999D9AE2455410AD7A3B0E1BB5041EC51B8AEA62455418FC2F5C8DFBB50415C8FC2B5AA2455418FC2F5F8DBBB504100000020AA245541C3F5287CCEBB504152B81E55A4245541B81E856BCDBB50410AD7A370B02455413D0AD743CEBB5041C3F528CCB12455417B14AE77DCBB50413D0AD7F3B6245541713D0AD7E5BB5041AE47E1EAB9245541333333D3EDBB5041EC51B8BEBB245541713D0AE7FBBB5041CDCCCCACBD245541333333F301BC50419A999909BE2455419A99998904BC504100000030BE245541
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A3B0E1BB5041EC51B8AEA6245541A0C36BF6DFBB5041D5223B90AA2455414E6210A0DFBB504123DBF95EAB2455418FC2F5F8DBBB504100000020AA245541D122DB89CEBB5041D7A3700DA524554126C0E6A0CDBB5041FDCB65C6B02455414260E570CDBB5041C1CAA1A5B12455417B14AE77DCBB50413D0AD7F3B62455410F73C6A7E5BB5041CEE85097B92455414CDDA90CEEBB50412C5239E9BB245541713D0AE7FBBB5041CDCCCCACBD245541402254A8FCBB504190D962B8BD24554152B81E15FDBB5041295C8FA2B3245541D41AD932FDBB50410B02F3C3B224554109CDC980FDBB50414F86507CB024554114186204FBBB5041D86D0DA7AF245541933A1A27F6BB5041A21F0C17AE2455416836370EF4BB50415D58ABD7AD24554104E837B3F3BB5041B5B088C6AD2455418FC2F518F3BB50419A9999D9AE2455410AD7A3B0E1BB5041EC51B8AEA6245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>41613 - 4313974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000150000009A99998904BC504100000030BE2455416666665609BC5041A4703D7ABE2455411F85EB5109BC5041D7A3703DBA245541F6285C4F09BC504185EB5138B82455418FC2F54809BC5041EC51B8DEB324554152B81E15FDBB5041295C8FA2B32455411F85EB81FDBB50413D0AD773B0245541F6285CCFF3BB504166666656AD2455418FC2F518F3BB50419A9999D9AE2455410AD7A3B0E1BB5041EC51B8AEA62455418FC2F5C8DFBB50415C8FC2B5AA2455418FC2F5F8DBBB504100000020AA245541C3F5287CCEBB504152B81E55A4245541B81E856BCDBB50410AD7A370B02455413D0AD743CEBB5041C3F528CCB12455417B14AE77DCBB50413D0AD7F3B6245541713D0AD7E5BB5041AE47E1EAB9245541333333D3EDBB5041EC51B8BEBB245541713D0AE7FBBB5041CDCCCCACBD245541333333F301BC50419A999909BE2455419A99998904BC504100000030BE245541
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A3B0E1BB5041EC51B8AEA6245541A0C36BF6DFBB5041D5223B90AA2455414E6210A0DFBB504123DBF95EAB2455418FC2F5F8DBBB504100000020AA245541D122DB89CEBB5041D7A3700DA524554126C0E6A0CDBB5041FDCB65C6B02455414260E570CDBB5041C1CAA1A5B12455417B14AE77DCBB50413D0AD7F3B62455410F73C6A7E5BB5041CEE85097B92455414CDDA90CEEBB50412C5239E9BB245541713D0AE7FBBB5041CDCCCCACBD245541402254A8FCBB504190D962B8BD24554152B81E15FDBB5041295C8FA2B3245541D41AD932FDBB50410B02F3C3B224554109CDC980FDBB50414F86507CB024554114186204FBBB5041D86D0DA7AF245541933A1A27F6BB5041A21F0C17AE2455416836370EF4BB50415D58ABD7AD24554104E837B3F3BB5041B5B088C6AD2455418FC2F518F3BB50419A9999D9AE2455410AD7A3B0E1BB5041EC51B8AEA6245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976052 - 976033
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000270000009196C89412695141D7F78ED01B645441E74549741269514169DDC0951B645441EB493473126951414B5C7D951B6454410739BE3C0769514190719749076454416285BAA0136951413A417150E9635441DEC1D7AB13695141D9A5F6B5E5635441F7968FCC0E6951411B88C2DBE5635441EB3FF5320C69514174EA11D0EA6354414583F1440769514125FDC5CDF5635441252805AF0269514149F50BF3FF6354415BA215D9FD6851418DF4266A0B645441AB65D9B6F96851411FC3B0DD15645441EC51B80EF96851415C8FC2C5166454415C8FC225F8685141C3F5288C16645441B81E855BF7685141CDCCCCDC18645441B81E85ABF7685141C3F528DC196454411F85EB61F8685141EC51B88E1A645441B81E856BF96851413D0AD7E31A64544114AE4771016951413D0AD7431C6454419A9999E90E695141D7A3706D1E64544167E3994726695141F1B7BDA61F6454410539D7942A695141E0F0475E20645441B9D62B102D695141D5AA73FB1F645441BE2381BC33695141013BA2571C645441CF721934386951419FC42BDE18645441788608B537695141173F28EE176454419E16371134695141FD756FDA1A64544105862C413169514134D494C81C645441988550CD2A695141A611818A1F64544162272BDF28695141A611818A1F645441556BE88C28695141D6EF1E7E1F645441217F87DD276951410EA1A88F1F645441D4804C5D24695141BFA8CDDC1E64544188F226BE236951419085D8C41E645441F3BE7F2D1D695141E6C898831D645441C19B25CF1A695141DBDAE9141D645441F6FF14AD156951414D11C45E1C645441FF1A748314695141DCF43A161C6454419196C89412695141D7F78ED01B645441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000217F87DD276951410EA1A88F1F645441622C54AB2A69514121F6E0471F645441CDCCCCEC2E695141713D0A771D64544100000000336951411F85EB711A64544152B81E1537695141C3F528CC16645441EB870A203A695141FFFB320B15645441A26C5FF03D695141F539690812645441B84A1B9044695141964002390F6454416E2F706048695141EDC34ED10D64544129C815654D6951412FD18032086454413FA6D10454695141C5BB27C601645441F530FE3A576951410F31FB8FFE635441BA8B6D425F695141FF60B8BEF96354411BDFFCAB62695141F59EEEBBF6635441FFF2C73D5A6951411CC0EBAEE863544190291E9D526951419BCCD6A2DB6354412514C5304C69514127F5B333D2635441C97486FB4969514173C4AF97CF63544138B12E1E38695141988B84F0C0635441BF25BB7A2D6951411D33EA30CF6354411CC5F9AF2F69514143E1E8A1DA6354419A9999193269514148E17AA4EB635441C5D90BAF2E695141785F2AE4EA635441C3F5283C2C6951419A999999EA635441666666A629695141E17A14CEE9635441CDCCCCEC256951411F85EB41E9635441295C8F62246951415C8FC2B5E863544114AE47F11A695141E17A149EE7635441CDCCCC9C1769514152B81E45E7635441EC51B82E146951418FC2F5F8E76354410739BE3C0769514190719749076454419196C89412695141D7F78ED01B645441DE4F2C3718695141D040B69B1C645441821AE836226951413F02F76E1E645441217F87DD276951410EA1A88F1F645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>48412 - 1701736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB5188608F5041F6285C3F9B2A5541295C8F724B8F504148E17A34932A5541295C8F62368F50419A9999398B2A5541EC51B8EE278F5041C3F5282C8D2A554114AE4741388F50419A999949962A554185EB51B8408F50410AD7A390992A5541B81E85EB4A8F5041A4703D0A9D2A554114AE47B1568F504148E17A84A12A554185EB5188618F504114AE47F1A52A55415C8FC245618F504100000030A02A554185EB5188608F5041F6285C3F9B2A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001900000034D51EC55C8F50419D1397FFA32A55411C7D5FB4578F5041AB933EEEA12A5541BB766B5C548F5041EC0C79A1A02A554127546B044F8F504162742C999E2A55419157C1004C8F504191B2AE739D2A55416DD2ADF8428F50419262FF549A2A5541C69BA6EC3E8F50414C04AADE982A5541BAC5E2553A8F504171CFD017972A5541FD34D472388F5041583C7033962A55414C88122D368F5041A4006620952A554108ECED70328F5041293D750A932A554165193F8F2D8F504168749850902A55416C677CEF2A8F5041009576D98E2A5541EC51B8EE278F5041C3F5282C8D2A55417B14AE67268F50411F85EB518C2A554114AE47A1218F50418FC2F5A88C2A554133333383168F5041C3F5289C8E2A554185EB51582F8F5041D7A3706D982A554114AE47E1408F5041295C8F829E2A5541F6285C5F4B8F504152B81EA5A12A5541CDCCCC6C4F8F5041B81E853BA32A5541A4703D9A5E8F504166666606AE2A5541A4703D2A608F5041333333F3AD2A554185EB5188618F504114AE47F1A52A554134D51EC55C8F50419D1397FFA32A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>48412 - 3414853
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB5188608F5041F6285C3F9B2A5541295C8F724B8F504148E17A34932A5541295C8F62368F50419A9999398B2A5541EC51B8EE278F5041C3F5282C8D2A554114AE4741388F50419A999949962A554185EB51B8408F50410AD7A390992A5541B81E85EB4A8F5041A4703D0A9D2A554114AE47B1568F504148E17A84A12A554185EB5188618F504114AE47F1A52A55415C8FC245618F504100000030A02A554185EB5188608F5041F6285C3F9B2A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001900000034D51EC55C8F50419D1397FFA32A55411C7D5FB4578F5041AB933EEEA12A5541BB766B5C548F5041EC0C79A1A02A554127546B044F8F504162742C999E2A55419157C1004C8F504191B2AE739D2A55416DD2ADF8428F50419262FF549A2A5541C69BA6EC3E8F50414C04AADE982A5541BAC5E2553A8F504171CFD017972A5541FD34D472388F5041583C7033962A55414C88122D368F5041A4006620952A554108ECED70328F5041293D750A932A554165193F8F2D8F504168749850902A55416C677CEF2A8F5041009576D98E2A5541EC51B8EE278F5041C3F5282C8D2A55417B14AE67268F50411F85EB518C2A554114AE47A1218F50418FC2F5A88C2A554133333383168F5041C3F5289C8E2A554185EB51582F8F5041D7A3706D982A554114AE47E1408F5041295C8F829E2A5541F6285C5F4B8F504152B81EA5A12A5541CDCCCC6C4F8F5041B81E853BA32A5541A4703D9A5E8F504166666606AE2A5541A4703D2A608F5041333333F3AD2A554185EB5188618F504114AE47F1A52A554134D51EC55C8F50419D1397FFA32A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72024 - 53861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DBA33BD50418FC2F558473155413333339326BD5041713D0AB7523155411F85EBE121BD504148E17AE4553155410000002024BD5041AE47E10A5A3155418FC2F55839BD50418FC2F5E848315541F6285C3F4EBD50410AD7A350373155410AD7A3804BBD5041E17A14CE323155418FC2F56848BD5041B81E851B35315541B81E851B45BD5041CDCCCC7C373155417B14AE173FBD50417B14AEE73C315541A4703DBA33BD50418FC2F55847315541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000003333339326BD5041713D0AB752315541B0314A9224BD5041CEAF5A1254315541731D4B5624BD5041123D1D40543155417C6135E821BD50410C1C1EF055315541D0432E3E22BD50413D0A388F563155413B75F87C22BD504131276B03573155414577B73B24BD5041924081F4593155418C0FC98327BD5041178E554E57315541C532D03B2ABD5041BBDE711C55315541B1ECE95F31BD504172EDC33D4F31554193E50CFB39BD5041FB698060483155419CF767063BBD5041A0846C7F473155418C6891364CBD504145BC130739315541069B7B3C4EBD5041C0B0E94B37315541E305A75E4DBD5041FBC572DF35315541ACBA4E4D4CBD5041699D581E34315541640EB6704BBD5041FF90F0D9323155418FC2F56848BD5041B81E851B35315541C7FF86CC46BD5041050BBF44363155415F2D718C45BD5041AF6F8439373155418510F9A744BD50415285DEE4373155417B14AE173FBD50417B14AEE73C315541A4703DBA33BD50418FC2F558473155411171CC5F30BD5041C7C0E53E4A3155419BC7A70A2FBD504174B19C774B315541CE5DB66228BD5041FC0BA02951315541F12D4A4328BD504194719741513155413333339326BD5041713D0AB752315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 3086676
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001DA5B9B62CC5504170DB4A9B503155411F85EB812AC550415C8FC2A55E315541317F43BE33C55041C86A6933613155415E4141E834C55041BB9FAE8461315541029D2AD136C550410FB1A40B62315541420DBA2D4DC550414D258D316831554139DC415760C55041512EAC5C6D3155413777CBF25FC550417D14C3426D315541DD2E6A4E61C550410641B0A06D315541FB773B2667C55041683DDB346F315541BD8EB83368C550419D8B18D1603155411DA5B9B62CC5504170DB4A9B50315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 3412372
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001DA5B9B62CC5504170DB4A9B503155411F85EB812AC550415C8FC2A55E315541317F43BE33C55041C86A6933613155415E4141E834C55041BB9FAE8461315541029D2AD136C550410FB1A40B62315541420DBA2D4DC550414D258D316831554139DC415760C55041512EAC5C6D3155413777CBF25FC550417D14C3426D315541DD2E6A4E61C550410641B0A06D315541FB773B2667C55041683DDB346F315541BD8EB83368C550419D8B18D1603155411DA5B9B62CC5504170DB4A9B50315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 3181040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541D7A3704DDB915041CDCCCCBC48245541A4703DFAC9915041E17A144E2424554148E17A24C19150411F85EB412724554166666656C2915041295C8F222C2455419A9999C9C6915041CDCCCCBC4224554152B81EE5C8915041A4703DAA52245541F6285C2FCA9150416666664667245541
+</a>
+
+<b>
+01060000000100000001030000000200000064000000A4703DFAC9915041E17A144E24245541CDCCCC3CCB9150415C8FC2E5232455417B14AEA7DC915041295C8F92472455411F85EB71DF915041F6285C7F49245541EC51B81EE8915041713D0A774A24554114AE47B1F5915041CDCCCCDC4E245541B81E851BFC9150410AD7A3D051245541D7A3706D1C925041F6285C2F67245541D7A370ED1E925041EC51B83E6824554148E17A0428925041713D0A176C2455410AD7A3E02A92504114AE47F16C24554114AE475134925041A4703DFA6D245541AE47E1FA4C925041295C8FA26D245541D7A3702D4E925041000000006D2455419A9999D93E925041E17A147E65245541AE47E16A3292504148E17AE45D245541C3F5289C3192504114AE47415D245541E17A147E28925041EC51B85E5724554185EB51281C92504185EB51684F245541C8F50B5F18925041B0F509164D245541B81E854B0D925041B81E854B46245541B2CF19D205925041FB68D692402455418FC2F5C8E8915041EC51B81E2B245541713D0A77E491504185EB5148272455411F85EBC1E1915041A4703D7A232455410AD7A360D8915041A4703D3A0524554100000030D69150411F85EB91FB235541F6285C5FD591504148E17A84F723554133333373D49150419A999919EE23554148E17A94D3915041A4703D6AEB235541A4703D7AD2915041333333D3E8235541E17A148ECF915041C3F5287CE52355410AD7A370CC9150411F85EBD1E22355411F85EB51C89150415C8FC245DF23554185EB5168BC91504185EB5168D7235541E17A143EB8915041000000B0D423554166666666B3915041C3F5282CD3235541CDCCCC9CB1915041295C8F12D3235541A4703DEAAE915041CDCCCCECD22355411F85EB81AE915041666666E6D223554152B81E25A2915041295C8F42D52355419A9999B9949150410AD7A340DA235541EC51B81E8E9150410AD7A300DF235541E14F45158C9150413DDB9B63E22355412DFE9D178991504153B1F372E7235541827D287D87915041C9948900EC23554176C3157B86915041F9862309F123554188B2BF82849150414F571879FF2355410719D6C98291504133BDA74D04245541E53B61C47F915041E65523BB08245541F6285C5F859150417B14AE07102455417B14AE678D915041713D0A371924554148E17A54959150418FC2F58822245541382C6E839A91504135FBEE9A28245541155282509E9150411BEEC8322D245541C33A1FCEA09150411F300FBE3124554160611A35A49150413AB44415382455411D14FB28A691504102173B283D245541A3FE5D6BA891504165E8330743245541F0420424AA915041316D2E764B245541CDCCCCFCAC915041295C8FF25A245541295C8F72AD915041A4703DFA69245541713D0A37AE91504185EB51C87524554114AE4771AF9150418FC2F5588124554145259AEAB09150419FDC7C4C8F245541DE7004D0B0915041AA1F82679224554133333343B0915041295C8F329C245541AE47E1CAAE915041F6285C2FA824554185EB51A8AD91504185EB5178AD245541666666A6B29150410AD7A330AD24554148E17AC4B69150419A9999C9AC2455410AD7A3B0B9915041F6285C2FAC24554133333323BB9150419A9999A9AB2455415C8FC215C291504166666646A7245541D7A3707DCB9150413D0AD713A0245541C3F5285CCB915041333333E39F245541EC51B84ED1915041E17A143E9B2455410AD7A360D6915041333333839624554185EB5198D9915041C3F528FC942455419A9999E9D8915041000000409424554100000040DD915041C3F528EC90245541AE47E12ADE915041D7A370ED8F245541E17A146EDC91504185EB51488E24554185EB5148EB915041295C8F227F245541E17A14CEDC915041C3F5280C8C24554166666676CD91504148E17A947E245541439B1226CD9150410D1D7B267D24554130FE4FE1CC91504164822FED7B2455418F86760DCC915041FD0BED277824554128E96768CB915041AC62DE3775245541AE47E15ACB915041A4703DFA74245541F6285C2FCA915041666666466724554166A8440DCA915041A054B9256524554165095F42C99150413E56177C5824554147A98A29C891504189479C204D245541569C6CF2C69150416CA754F14324554155F91CF9C291504157D5035D2F24554166666656C2915041295C8F222C24554148E17A24C19150411F85EB4127245541A4703DFAC9915041E17A144E24245541050000007B14AE77EA915041B81E85BB49245541713D0A17EB915041AE47E13A482455411F85EB81EE915041AE47E1CA492455411F85EBE1ED915041B81E854B4B2455417B14AE77EA915041B81E85BB49245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 5173014
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541D7A3704DDB915041CDCCCCBC48245541A4703DFAC9915041E17A144E2424554148E17A24C19150411F85EB412724554166666656C2915041295C8F222C2455419A9999C9C6915041CDCCCCBC4224554152B81EE5C8915041A4703DAA52245541F6285C2FCA9150416666664667245541
+</a>
+
+<b>
+01060000000100000001030000000200000063000000A4703DFAC9915041E17A144E24245541CDCCCC3CCB9150415C8FC2E5232455417B14AEA7DC915041295C8F92472455411F85EB71DF915041F6285C7F49245541EC51B81EE8915041713D0A774A24554114AE47B1F5915041CDCCCCDC4E245541B81E851BFC9150410AD7A3D051245541D7A3706D1C925041F6285C2F67245541D7A370ED1E925041EC51B83E6824554148E17A0428925041713D0A176C2455410AD7A3E02A92504114AE47F16C24554114AE475134925041A4703DFA6D245541AE47E1FA4C925041295C8FA26D245541D7A3702D4E925041000000006D2455419A9999D93E925041E17A147E65245541AE47E16A3292504148E17AE45D245541C3F5289C3192504114AE47415D245541E17A147E28925041EC51B85E5724554185EB51281C92504185EB51684F245541B81E854B0D925041B81E854B46245541E17A148E07925041AE47E1DA412455418FC2F5C8E8915041EC51B81E2B245541713D0A77E491504185EB5148272455411F85EBC1E1915041A4703D7A232455410AD7A360D8915041A4703D3A0524554100000030D69150411F85EB91FB235541F6285C5FD591504148E17A84F723554133333373D49150419A999919EE23554148E17A94D3915041A4703D6AEB235541A4703D7AD2915041333333D3E8235541E17A148ECF915041C3F5287CE52355410AD7A370CC9150411F85EBD1E22355411F85EB51C89150415C8FC245DF23554185EB5168BC91504185EB5168D7235541E17A143EB8915041000000B0D423554166666666B3915041C3F5282CD3235541CDCCCC9CB1915041295C8F12D3235541A4703DEAAE915041CDCCCCECD22355411F85EB81AE915041666666E6D223554152B81E25A2915041295C8F42D52355419A9999B9949150410AD7A340DA235541EC51B81E8E9150410AD7A300DF235541E14F45158C9150413DDB9B63E22355412DFE9D178991504153B1F372E7235541827D287D87915041C9948900EC23554176C3157B86915041F9862309F123554188B2BF82849150414F571879FF2355410719D6C98291504133BDA74D04245541E53B61C47F915041E65523BB08245541F6285C5F859150417B14AE07102455417B14AE678D915041713D0A371924554148E17A54959150418FC2F58822245541382C6E839A91504135FBEE9A28245541155282509E9150411BEEC8322D245541C33A1FCEA09150411F300FBE3124554160611A35A49150413AB44415382455411D14FB28A691504102173B283D245541A3FE5D6BA891504165E8330743245541F0420424AA915041316D2E764B245541CDCCCCFCAC915041295C8FF25A245541295C8F72AD915041A4703DFA69245541713D0A37AE91504185EB51C87524554114AE4771AF9150418FC2F5588124554145259AEAB09150419FDC7C4C8F245541DE7004D0B0915041AA1F82679224554133333343B0915041295C8F329C245541AE47E1CAAE915041F6285C2FA824554185EB51A8AD91504185EB5178AD245541666666A6B29150410AD7A330AD24554148E17AC4B69150419A9999C9AC2455410AD7A3B0B9915041F6285C2FAC24554133333323BB9150419A9999A9AB2455415C8FC215C291504166666646A7245541D7A3707DCB9150413D0AD713A0245541C3F5285CCB915041333333E39F245541EC51B84ED1915041E17A143E9B2455410AD7A360D6915041333333839624554185EB5198D9915041C3F528FC942455419A9999E9D8915041000000409424554100000040DD915041C3F528EC90245541AE47E12ADE915041D7A370ED8F245541E17A146EDC91504185EB51488E24554185EB5148EB915041295C8F227F245541E17A14CEDC915041C3F5280C8C24554166666676CD91504148E17A947E245541439B1226CD9150410D1D7B267D24554130FE4FE1CC91504164822FED7B2455418F86760DCC915041FD0BED277824554128E96768CB915041AC62DE3775245541AE47E15ACB915041A4703DFA74245541F6285C2FCA915041666666466724554166A8440DCA915041A054B9256524554165095F42C99150413E56177C5824554147A98A29C891504189479C204D245541569C6CF2C69150416CA754F14324554155F91CF9C291504157D5035D2F24554166666656C2915041295C8F222C24554148E17A24C19150411F85EB4127245541A4703DFAC9915041E17A144E24245541050000007B14AE77EA915041B81E85BB49245541713D0A17EB915041AE47E13A482455411F85EB81EE915041AE47E1CA492455411F85EBE1ED915041B81E854B4B2455417B14AE77EA915041B81E85BB49245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 52608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541D7A3704DDB915041CDCCCCBC48245541A4703DFAC9915041E17A144E2424554148E17A24C19150411F85EB412724554166666656C2915041295C8F222C2455419A9999C9C6915041CDCCCCBC4224554152B81EE5C8915041A4703DAA52245541F6285C2FCA9150416666664667245541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000439B1226CD9150410D1D7B267D24554130FE4FE1CC91504164822FED7B2455418F86760DCC915041FD0BED277824554128E96768CB915041AC62DE3775245541AE47E15ACB915041A4703DFA74245541F6285C2FCA915041666666466724554166A8440DCA915041A054B9256524554165095F42C99150413E56177C5824554147A98A29C891504189479C204D245541569C6CF2C69150416CA754F143245541E1DC5848C591504116A3D1523B245541A34C55CCC3915041D6C701343B245541E367CC8CC4915041E2DA9C07412455411A12F9D4C4915041A9F02B2A45245541B7107FADC5915041A9B0E79449245541EFBAABF5C59150411054B2174E2455412ED622B6C691504133BA2C54552455412ED622B6C69150417677F46F5B2455416B62E4EEC7915041B1832D7E6524554172D32E67C89150414411588977245541565E7678CA9150414391CF5E8024554149CB527ACD915041B2E528EF80245541D9DA0E3BCD9150413CF018867D245541439B1226CD9150410D1D7B267D245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 86055
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541D7A3704DDB915041CDCCCCBC48245541A4703DFAC9915041E17A144E2424554148E17A24C19150411F85EB412724554166666656C2915041295C8F222C2455419A9999C9C6915041CDCCCCBC4224554152B81EE5C8915041A4703DAA52245541F6285C2FCA9150416666664667245541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000439B1226CD9150410D1D7B267D24554130FE4FE1CC91504164822FED7B2455418F86760DCC915041FD0BED277824554128E96768CB915041AC62DE3775245541AE47E15ACB915041A4703DFA74245541F6285C2FCA915041666666466724554166A8440DCA915041A054B9256524554165095F42C99150413E56177C5824554147A98A29C891504189479C204D245541569C6CF2C69150416CA754F143245541E1DC5848C591504116A3D1523B245541A34C55CCC3915041D6C701343B245541E367CC8CC4915041E2DA9C07412455411A12F9D4C4915041A9F02B2A45245541B7107FADC5915041A9B0E79449245541EFBAABF5C59150411054B2174E2455412ED622B6C691504133BA2C54552455412ED622B6C69150417677F46F5B2455416B62E4EEC7915041B1832D7E6524554172D32E67C89150414411588977245541565E7678CA9150414391CF5E8024554149CB527ACD915041B2E528EF80245541D9DA0E3BCD9150413CF018867D245541439B1226CD9150410D1D7B267D245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>82958 - 425659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -771  </desc>
+<a>
+0106000000010000000103000000010000000C000000333333235D8D5041F6285C7F68205541D7A370ED5B8D5041C3F5283C7420554114AE47E15B8D50411F85EBB1742055419A9999A95A8D5041D7A3706D7820554148E17AA45B8D50413D0AD7F378205541F6285CCF638D5041333333037B205541CDCCCC8C648D50419A99995978205541CDCCCC8C678D5041AE47E1EA7820554114AE47D1678D50415C8FC21577205541713D0AB7698D5041A4703D0A6A205541295C8FC2698D504185EB51B869205541333333235D8D5041F6285C7F68205541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D7A370ED5B8D5041C3F5283C7420554114AE47E15B8D50411F85EBB1742055419A9999A95A8D5041D7A3706D78205541F5F5757A5B8D50419A6754DD78205541590EFCD5638D504172695DEB7A205541426C02D6638D5041108146EB7A205541451F5CD6638D5041B1C403EA7A205541CED562EC648D50416FFCC3957520554114AE4791668D50418FC2F56869205541333333235D8D5041F6285C7F68205541D7A370ED5B8D5041C3F5283C74205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126796 - 10004
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001700000014AE473145B95041C3F5288C4B4055411F85EB3141B95041A4703D2A53405541295C8FB23EB950416666663659405541E17A14FE3BB9504185EB5138624055419A9999D93AB95041295C8FD2664055411F85EBB13BB950418FC2F58868405541295C8FB25CB950419A9999F976405541713D0A5762B950411F85EB7179405541CDCCCC9C6CB95041000000F07D405541EC51B82E6EB950413D0AD7437D405541713D0A1771B950410000003075405541A4703DDA71B9504114AE471173405541AE47E12A72B950411F85EB3172405541CDCCCC6C7AB9504148E17A445B4055419A9999F979B950415C8FC2B55940554114AE477170B950413333334352405541E17A147E6CB95041D7A3702D4F4055418FC2F5586BB950417B14AE474E40554148E17A7453B95041666666663B405541D7A370AD51B950418FC2F5383A405541B81E85CB50B95041F6285C2F3A405541D7A3706D4AB950410AD7A3404340554114AE473145B95041C3F5288C4B405541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000001F85EB3141B95041A4703D2A53405541B05495933EB950411DF58C9D5940554190775E023EB950413E311B815B405541799623B83DB95041FCB949785C4055417E63CE7F3FB950412F3A6C345D4055412E854D0543B9504162120FB054405541A1D9A8DE46B95041082A85944C405541ADB9A19E4BB950417174D7CC444055410CFD9FA952B95041E77412E43A405541D7A370AD51B950418FC2F5383A405541B81E85CB50B95041F6285C2F3A405541D7A3706D4AB950410AD7A3404340554114AE473145B95041C3F5288C4B4055411F85EB3141B95041A4703D2A53405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>182846 - 1733918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD544114AE47E1D198504152B81EA559FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD544133333333919850410AD7A3804DFD54419A9999D988985041A4703D9A68FD54411F85EB6182985041B81E85AB80FD5441295C8F2282985041EC51B84E82FD5441CDCCCCDC949850417B14AE9785FD5441D7A3708D99985041B81E857B86FD5441713D0AF7A0985041295C8F7288FD5441D7A370DDA99850410AD7A3808BFD5441F6285C5FAF985041666666D68DFD5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000D7A370DDA99850410AD7A3808BFD5441F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD5441A4703D9AFA98504148E17AE403FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD544181254C599E9850416B1D8B9627FD5441411F4AD19B98504136C310E32EFD5441036EE87B95985041C4274C2641FD544133333333919850410AD7A3804DFD5441497AEA8D909850410C2912994FFD544117986E588F985041D8F7808553FD54416EA76FEC8C985041B9B6B4615BFD5441DD6130AB89985041B95C04F265FD5441B8C96BFD86985041D0813E866FFD5441CF65A07383985041B1E3F9B07CFD5441295C8F2282985041EC51B84E82FD5441B264719C91985041C203AD0585FD54415D7738199698504122C7B9D385FD5441820386B19A985041C9FFF2C886FD5441985935259E9850414B2A35B387FD54410283D7439E98504166E3A6BC87FD54419433907E9E9850415A1FE5CA87FD5441718B96B79F98504197B2422F88FD5441C91F2FECA0985041FA9C7F9088FD544113E21A73A49850413AD2C4A489FD5441D7A370DDA99850410AD7A3808BFD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>182846 - 3445555
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD544114AE47E1D198504152B81EA559FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD544133333333919850410AD7A3804DFD54419A9999D988985041A4703D9A68FD54411F85EB6182985041B81E85AB80FD5441295C8F2282985041EC51B84E82FD5441CDCCCCDC949850417B14AE9785FD5441D7A3708D99985041B81E857B86FD5441713D0AF7A0985041295C8F7288FD5441D7A370DDA99850410AD7A3808BFD5441F6285C5FAF985041666666D68DFD5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000D7A370DDA99850410AD7A3808BFD5441F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD5441A4703D9AFA98504148E17AE403FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD544181254C599E9850416B1D8B9627FD5441411F4AD19B98504136C310E32EFD5441036EE87B95985041C4274C2641FD544133333333919850410AD7A3804DFD5441497AEA8D909850410C2912994FFD544117986E588F985041D8F7808553FD54416EA76FEC8C985041B9B6B4615BFD5441DD6130AB89985041B95C04F265FD5441B8C96BFD86985041D0813E866FFD5441CF65A07383985041B1E3F9B07CFD5441295C8F2282985041EC51B84E82FD5441B264719C91985041C203AD0585FD54415D7738199698504122C7B9D385FD5441820386B19A985041C9FFF2C886FD5441985935259E9850414B2A35B387FD54410283D7439E98504166E3A6BC87FD54419433907E9E9850415A1FE5CA87FD5441718B96B79F98504197B2422F88FD5441C91F2FECA0985041FA9C7F9088FD544113E21A73A49850413AD2C4A489FD5441D7A370DDA99850410AD7A3808BFD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>222544 - 2991521
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -28  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AEC70C2A5141E17A142EACB8544133333373142A514148E17AA4B2B85441A4703DDA152A5141C3F528DCB1B85441713D0AD7222A514100000040ABB8544185EB51282E2A5141C3F5288CA3B8544148E17AC4322A5141D7A370BDA0B854413D0AD7C3392A51419A9999799CB85441F6285CFF482A51417B14AE3794B854411F85EB215D2A5141F6285CDF8AB8544166666676662A5141C3F528CC86B85441EC51B8CE6E2A5141295C8FA283B85441000000B06D2A51415C8FC2E580B8544114AE4781652A51417B14AE9782B85441333333135C2A51411F85EBB183B8544166666646532A51419A99991984B8544114AE47112D2A5141F6285C3F98B854417B14AEC70C2A5141E17A142EACB85441
+</a>
+
+<b>
+010600000001000000010300000001000000110000001326ADB1032A514153AC0BD3A3B85441467F8F510D2A5141A9FAE2E7ABB8544129C80642192A51413B9D117AA4B854418CED037D2A2A51413975F8D699B85441FF3C2888382A5141DD22BF3392B85441B170290F452A514142B2A2988BB854419FAFEF014E2A5141A34AABE086B854411382E12E502A5141E772FBBA85B85441E7A5181D532A51419DDF0C3484B85441133B9E5A462A5141DE5997ED84B854412EAFA9E93C2A5141FF4A4CE085B85441979D4409342A5141A41C8B9A87B85441F3CB390B242A5141D6D04D5F8DB85441EEC269E5142A5141D80C8A1296B85441267B883B0D2A5141781571A49BB85441926D88FA072A514171AF2F1BA0B854411326ADB1032A514153AC0BD3A3B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230510 - 150336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000040000000103000000020000000800000085EB51685BFD5041B81E851B402954417B14AEA75EFD50410AD7A3A0512954410AD7A39061FD50418FC2F52861295441B81E85BB67FD50419A9999C97F2954419A99996970FD504114AE47F17E2954418FC2F50868FD50417B14AE875429544114AE471164FD50419A9999E93F29544185EB51685BFD5041B81E851B40295441050000005C8FC2A560FD504152B81EE540295441A4703D0A64FD50413D0AD79340295441C3F5281C64FD5041AE47E12A42295441C3F528DC60FD504152B81E85422954415C8FC2A560FD504152B81EE5402954410103000000010000000A000000A4703DFA17FE5041E17A14BE58295441A4703D9A1CFE5041295C8FD26D295441E17A145E24FE50417B14AE176D295441E17A141E27FE504152B81ED56C29544114AE473129FE5041333333A36C29544152B81EB529FE5041713D0A976C2954410AD7A3C024FE50411F85EBB157295441AE47E12A1EFE504152B81EB53B295441C3F528AC11FE5041D7A370FD3B295441A4703DFA17FE5041E17A14BE5829544101030000000100000006000000666666E612FE50417B14AE078D2954418FC2F50808FE5041A4703D1A8F2954418FC2F5E809FE5041295C8F8297295441E17A145E0CFE5041CDCCCC8CA4295441C3F5283C17FE5041666666A6A2295441666666E612FE50417B14AE078D2954410103000000010000000A000000713D0A2706FE5041000000403C295441295C8F42FBFD5041EC51B87E3C2954410AD7A350FFFD5041AE47E19A4F2954413333330306FE5041F6285C0F70295441A4703D7A0CFE5041E17A148E6F295441CDCCCCBC10FE5041D7A3701D6F29544185EB51A80DFE50413D0AD753602954413D0AD7C309FE50418FC2F5884D295441295C8F7208FE50416666662647295441713D0A2706FE5041000000403C295441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000F76E0E1E27FE5041AB4A1FD56C295441B9D0D3D428FE5041B268E3AB6C2954414EA7483129FE5041D1F232A36C295441C066954929FE5041175AF5A06C295441C6FAAB9729FE50418B8FC1996C2954418F151EB529FE5041744C0A976C29544105C4042527FE504109A54AC8612954410AD7A3C024FE50411F85EBB157295441AE47E12A1EFE504152B81EB53B2954414F2B29AC11FE5041A1A270FD3B29544146532D6F13FE50417509330644295441A4703DFA17FE5041E17A14BE58295441A4703D9A1CFE5041295C8FD26D295441E17A145E24FE50417B14AE176D295441F76E0E1E27FE5041AB4A1FD56C295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230510 - 290099
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000040000000103000000020000000800000085EB51685BFD5041B81E851B402954417B14AEA75EFD50410AD7A3A0512954410AD7A39061FD50418FC2F52861295441B81E85BB67FD50419A9999C97F2954419A99996970FD504114AE47F17E2954418FC2F50868FD50417B14AE875429544114AE471164FD50419A9999E93F29544185EB51685BFD5041B81E851B40295441050000005C8FC2A560FD504152B81EE540295441A4703D0A64FD50413D0AD79340295441C3F5281C64FD5041AE47E12A42295441C3F528DC60FD504152B81E85422954415C8FC2A560FD504152B81EE5402954410103000000010000000A000000A4703DFA17FE5041E17A14BE58295441A4703D9A1CFE5041295C8FD26D295441E17A145E24FE50417B14AE176D295441E17A141E27FE504152B81ED56C29544114AE473129FE5041333333A36C29544152B81EB529FE5041713D0A976C2954410AD7A3C024FE50411F85EBB157295441AE47E12A1EFE504152B81EB53B295441C3F528AC11FE5041D7A370FD3B295441A4703DFA17FE5041E17A14BE5829544101030000000100000006000000666666E612FE50417B14AE078D2954418FC2F50808FE5041A4703D1A8F2954418FC2F5E809FE5041295C8F8297295441E17A145E0CFE5041CDCCCC8CA4295441C3F5283C17FE5041666666A6A2295441666666E612FE50417B14AE078D2954410103000000010000000A000000713D0A2706FE5041000000403C295441295C8F42FBFD5041EC51B87E3C2954410AD7A350FFFD5041AE47E19A4F2954413333330306FE5041F6285C0F70295441A4703D7A0CFE5041E17A148E6F295441CDCCCCBC10FE5041D7A3701D6F29544185EB51A80DFE50413D0AD753602954413D0AD7C309FE50418FC2F5884D295441295C8F7208FE50416666662647295441713D0A2706FE5041000000403C295441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000F76E0E1E27FE5041AB4A1FD56C295441B9D0D3D428FE5041B268E3AB6C2954414EA7483129FE5041D1F232A36C295441C066954929FE5041175AF5A06C295441C6FAAB9729FE50418B8FC1996C2954418F151EB529FE5041744C0A976C29544105C4042527FE504109A54AC8612954410AD7A3C024FE50411F85EBB157295441AE47E12A1EFE504152B81EB53B2954414F2B29AC11FE5041A1A270FD3B29544146532D6F13FE50417509330644295441A4703DFA17FE5041E17A14BE58295441A4703D9A1CFE5041295C8FD26D295441E17A145E24FE50417B14AE176D295441F76E0E1E27FE5041AB4A1FD56C295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99455 - 3082006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99455 - 3398618
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905702 - 1663649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000001F0000003D0AD763B8D650411F85EB31591F55418FC2F5C8C0D65041713D0A87631F55419A9999D9C3D65041EC51B80E671F5541C3F528CCC5D650417B14AEC7631F554148E17AC4C8D650417B14AED75E1F5541C3F5282CCAD650413D0AD7F35B1F554148E17AC4CDD65041AE47E15A551F5541333333F3CFD65041B81E855B511F554100000080D1D65041295C8FD24E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541B81E851BC0D65041AE47E10A3D1F554166666646B2D6504185EB5158371F5541295C8F52A2D65041713D0A57311F5541666666D6A0D65041A4703D6A341F55413D0AD7439ED650419A999919391F5541C3F5288C9CD65041295C8F123C1F5541333333D39CD65041A4703D0A3D1F554114AE47219DD650413D0AD7433E1F5541EC51B82E9ED65041295C8FE23F1F55410AD7A3D09FD6504100000060421F5541C3F528DCA0D6504114AE47A1431F5541D7A370CDA3D65041C3F528CC451F5541EC51B82EA7D650410AD7A360481F55410AD7A300ABD65041C3F5287C4B1F5541B81E858BAED65041F6285CEF4E1F5541D7A370DDB3D65041D7A3708D541F55413D0AD763B8D650411F85EB31591F5541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000458576E4C9D65041CB6CE18E5C1F5541479E7461CAD65041865D08925B1F5541391F6A96CBD6504176EF085B591F55412A2ACA0DCCD65041DD84F57F581F55411690C961CED65041C7505C76541F55413E6B67E7CFD650414D6817C9511F55410DD02A7ED1D650412E8DDFD04E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541B81E851BC0D65041AE47E10A3D1F554166666646B2D6504185EB5158371F5541295C8F52A2D65041713D0A57311F5541666666D6A0D65041A4703D6A341F55413D0AD7439ED650419A999919391F5541C3F5288C9CD65041295C8F123C1F5541333333D39CD65041A4703D0A3D1F554114AE47219DD650413D0AD7433E1F5541EC51B82E9ED65041295C8FE23F1F55410AD7A3D09FD6504100000060421F5541C3F528DCA0D6504114AE47A1431F5541D7A370CDA3D65041C3F528CC451F5541EC51B82EA7D650410AD7A360481F55410AD7A300ABD65041C3F5287C4B1F5541B81E858BAED65041F6285CEF4E1F5541D7A370DDB3D65041D7A3708D541F55413D0AD763B8D650411F85EB31591F55418FC2F5C8C0D65041713D0A87631F5541D31268DCC3D6504123FF420A671F55414E4105E9C3D65041A25039F6661F554110334DECC3D65041BC53D4F9661F554127A751D1C6D650414AB07E0C621F5541BD1F7E74C8D6504138D3A75C5F1F5541458576E4C9D65041CB6CE18E5C1F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905702 - 3307022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000001F0000003D0AD763B8D650411F85EB31591F55418FC2F5C8C0D65041713D0A87631F55419A9999D9C3D65041EC51B80E671F5541C3F528CCC5D650417B14AEC7631F554148E17AC4C8D650417B14AED75E1F5541C3F5282CCAD650413D0AD7F35B1F554148E17AC4CDD65041AE47E15A551F5541333333F3CFD65041B81E855B511F554100000080D1D65041295C8FD24E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541B81E851BC0D65041AE47E10A3D1F554166666646B2D6504185EB5158371F5541295C8F52A2D65041713D0A57311F5541666666D6A0D65041A4703D6A341F55413D0AD7439ED650419A999919391F5541C3F5288C9CD65041295C8F123C1F5541333333D39CD65041A4703D0A3D1F554114AE47219DD650413D0AD7433E1F5541EC51B82E9ED65041295C8FE23F1F55410AD7A3D09FD6504100000060421F5541C3F528DCA0D6504114AE47A1431F5541D7A370CDA3D65041C3F528CC451F5541EC51B82EA7D650410AD7A360481F55410AD7A300ABD65041C3F5287C4B1F5541B81E858BAED65041F6285CEF4E1F5541D7A370DDB3D65041D7A3708D541F55413D0AD763B8D650411F85EB31591F5541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000458576E4C9D65041CB6CE18E5C1F5541479E7461CAD65041865D08925B1F5541391F6A96CBD6504176EF085B591F55412A2ACA0DCCD65041DD84F57F581F55411690C961CED65041C7505C76541F55413E6B67E7CFD650414D6817C9511F55410DD02A7ED1D650412E8DDFD04E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541B81E851BC0D65041AE47E10A3D1F554166666646B2D6504185EB5158371F5541295C8F52A2D65041713D0A57311F5541666666D6A0D65041A4703D6A341F55413D0AD7439ED650419A999919391F5541C3F5288C9CD65041295C8F123C1F5541333333D39CD65041A4703D0A3D1F554114AE47219DD650413D0AD7433E1F5541EC51B82E9ED65041295C8FE23F1F55410AD7A3D09FD6504100000060421F5541C3F528DCA0D6504114AE47A1431F5541D7A370CDA3D65041C3F528CC451F5541EC51B82EA7D650410AD7A360481F55410AD7A300ABD65041C3F5287C4B1F5541B81E858BAED65041F6285CEF4E1F5541D7A370DDB3D65041D7A3708D541F55413D0AD763B8D650411F85EB31591F55418FC2F5C8C0D65041713D0A87631F5541D31268DCC3D6504123FF420A671F55414E4105E9C3D65041A25039F6661F554110334DECC3D65041BC53D4F9661F554127A751D1C6D650414AB07E0C621F5541BD1F7E74C8D6504138D3A75C5F1F5541458576E4C9D65041CB6CE18E5C1F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888719 - 585595
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED544135476981E2DF5041E8C14826A6ED544160024D08DADF5041EC4FCE2BA8ED5441CDAA1E66D7DF5041D222A8CCA8ED54417E0E9DD3D3DF5041BA9DD8A6A9ED54417C23416BD0DF5041ABD0FA76AAED544144A64055CEDF50410CBD62F6AAED5441FE9EE061CDDF50418AAC7330ABED5441F02EFE67CCDF50417531126CABED54416B66A8E3CBDF504184FEA48BABED5441E4AD7455CDDF5041636F9BFAAEED544152A89964CFDF504169AF9696B3ED54416A1EB821D1DF50417C01F67AB7ED5441D964ABEDD2DF5041F0E1D3FABAED5441CBBA1D9EE0DF5041EFEA95B8B7ED5441B345FAEAE7DF5041A3D6B2FBB5ED5441391B28D9EEDF5041BCD75955B4ED54419B138234F6DF50415EFD07A6B2ED5441C415E1FAFADF5041E6E980A9B1ED544196830C1EFEDF5041F1FB610BB1ED5441A9267B1504E0504124AA1796B0ED54415CDE78F705E0504167AA1471B0ED5441977A1C8906E0504104A60058B0ED5441D0C6DEF005E05041AE36366BACED5441258E869505E05041CA5D0A84AAED5441B4CAAA5205E050411501E356A8ED54415224AB7F02E050412F4E728DA8ED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441A4703DBAE7DF50418FC2F5D891ED5441A4703D8AE0DF50416666664694ED5441A4703DCADCDF50411F85EB6194ED5441000000C0D7DF50418FC2F58894ED54415C8FC295D2DF504152B81EC595ED5441F6285C3FC8DF5041E17A149E9AED544152B81EF5C5DF50417B14AE779EED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888719 - 1527177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED544135476981E2DF5041E8C14826A6ED544160024D08DADF5041EC4FCE2BA8ED5441CDAA1E66D7DF5041D222A8CCA8ED54417E0E9DD3D3DF5041BA9DD8A6A9ED54417C23416BD0DF5041ABD0FA76AAED544144A64055CEDF50410CBD62F6AAED5441FE9EE061CDDF50418AAC7330ABED5441F02EFE67CCDF50417531126CABED54416B66A8E3CBDF504184FEA48BABED5441E4AD7455CDDF5041636F9BFAAEED544152A89964CFDF504169AF9696B3ED54416A1EB821D1DF50417C01F67AB7ED5441D964ABEDD2DF5041F0E1D3FABAED5441CBBA1D9EE0DF5041EFEA95B8B7ED5441B345FAEAE7DF5041A3D6B2FBB5ED5441391B28D9EEDF5041BCD75955B4ED54419B138234F6DF50415EFD07A6B2ED5441C415E1FAFADF5041E6E980A9B1ED544196830C1EFEDF5041F1FB610BB1ED5441A9267B1504E0504124AA1796B0ED54415CDE78F705E0504167AA1471B0ED5441977A1C8906E0504104A60058B0ED5441D0C6DEF005E05041AE36366BACED5441258E869505E05041CA5D0A84AAED5441B4CAAA5205E050411501E356A8ED54415224AB7F02E050412F4E728DA8ED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441A4703DBAE7DF50418FC2F5D891ED5441A4703D8AE0DF50416666664694ED5441A4703DCADCDF50411F85EB6194ED5441000000C0D7DF50418FC2F58894ED54415C8FC295D2DF504152B81EC595ED5441F6285C3FC8DF5041E17A149E9AED544152B81EF5C5DF50417B14AE779EED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888719 - 4200594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED544135476981E2DF5041E8C14826A6ED544160024D08DADF5041EC4FCE2BA8ED5441CDAA1E66D7DF5041D222A8CCA8ED54417E0E9DD3D3DF5041BA9DD8A6A9ED54417C23416BD0DF5041ABD0FA76AAED544144A64055CEDF50410CBD62F6AAED5441FE9EE061CDDF50418AAC7330ABED5441F02EFE67CCDF50417531126CABED54416B66A8E3CBDF504184FEA48BABED5441E4AD7455CDDF5041636F9BFAAEED544152A89964CFDF504169AF9696B3ED54416A1EB821D1DF50417C01F67AB7ED5441D964ABEDD2DF5041F0E1D3FABAED5441CBBA1D9EE0DF5041EFEA95B8B7ED5441B345FAEAE7DF5041A3D6B2FBB5ED5441391B28D9EEDF5041BCD75955B4ED54419B138234F6DF50415EFD07A6B2ED5441C415E1FAFADF5041E6E980A9B1ED544196830C1EFEDF5041F1FB610BB1ED5441A9267B1504E0504124AA1796B0ED54415CDE78F705E0504167AA1471B0ED5441977A1C8906E0504104A60058B0ED5441D0C6DEF005E05041AE36366BACED5441258E869505E05041CA5D0A84AAED5441B4CAAA5205E050411501E356A8ED54415224AB7F02E050412F4E728DA8ED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441A4703DBAE7DF50418FC2F5D891ED5441A4703D8AE0DF50416666664694ED5441A4703DCADCDF50411F85EB6194ED5441000000C0D7DF50418FC2F58894ED54415C8FC295D2DF504152B81EC595ED5441F6285C3FC8DF5041E17A149E9AED544152B81EF5C5DF50417B14AE779EED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873759 - 181966
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000000E0000008FC2F59866AE5041CDCCCC0CA5005541F6285C1F62AE5041EC51B88EAC005541EC51B8FE5AAE5041713D0A77B50055411F85EB3151AE5041713D0A87C000554185EB51C847AE5041AE47E1EACA005541F6285CEF4CAE5041295C8FA2CE0055417B14AEF751AE5041713D0A67C8005541EC51B89E56AE504166666676C3005541E17A14BE65AE50417B14AE37B5005541EC51B89E69AE5041EC51B85EB1005541295C8F426CAE504185EB5158AC00554114AE47416DAE5041CDCCCC0CAA005541AE47E1AA6CAE50413D0AD753A80055418FC2F59866AE5041CDCCCC0CA5005541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F6285C1F62AE5041EC51B88EAC0055417A07F0D65FAE504132201869AF00554100530A005DAE5041DECFC66CB30055411772DBAF5AAE50411EFA0FD0B50055411F85EB3151AE5041713D0A87C000554131BAA70B48AE5041FE4D8DA0CA005541E08EE6CD4CAE504108667B11CE00554169EED7154DAE5041C74EB4D3CD005541AAD4303151AE504191E9DB5CC90055417B14AEF751AE5041713D0A67C8005541EC51B89E56AE504166666676C30055413EDA2E845AAE5041C6581C04BF005541D5D8D6A15CAE504105704E8BBD005541387D666760AE504122AA4BDDB90055413000834464AE504160A1625EB600554152C04D8266AE5041ED75F974B40055415942E71367AE5041FC5580E4B30055417A56F4D067AE5041E6B3E928B30055411FE6A0F869AE5041D11F9E63B0005541C1A162456CAE50412344C110AC005541915AAEB56CAE50412E1CCA4EAB005541D513CAF96CAE5041400BB2B1AA005541E3CED40E6DAE5041AE5F2981AA005541FEE817396DAE5041FBC2AE1FAA005541AE47E1AA6CAE50413D0AD753A80055418FC2F59866AE5041CDCCCC0CA5005541F6285C1F62AE5041EC51B88EAC005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 999824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441666666F6E3685141F6285C2FD9335441C3F528FCE568514114AE4701DB335441AE47E13AEC685141AE47E1CADF33544133333323FA68514185EB5198EB335441713D0AA7F0685141E17A146EF233544114AE4771E76851411F85EB11F9335441B81E853BE868514152B81E55F93354418FC2F5A8EB6851418FC2F5A8FA33544166666636EF6851413D0AD7B3FB335441CDCCCC9CF268514133333373FC33544152B81E65F66851417B14AEE7FC335441AE47E13AFA6851410AD7A320FD33544148E17AB4FD6851418FC2F508FD33544152B81E3505695141E17A14BEFC33544148E17A94096951411F85EB91FC335441000000300D6951418FC2F518FB335441C3F528EC0F69514133333333F8335441C3F528DC12695141C3F528FCF3335441333333631E69514185EB51C8EA33544148E17A342269514185EB5168E63354415C8FC25524695141000000C0DF33544152B81E45296951411F85EBD1D8335441A4703DAA2F695141713D0A97D83354419A9999193169514148E17A54D83354415C8FC2F53469514114AE4721D5335441000000E0386951410AD7A360D3335441295C8F223B69514152B81EE5D333544148E17A343E695141A4703DDAD6335441713D0A373F695141E17A148ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA3354416666666614695141B81E859BC9335441A4703D1A106951415C8FC255C83354411F85EB610D69514152B81EE5C63354411F85EB610969514100000060C733544152B81E950469514133333393C63354419A9999A9FE685141F6285CEFC53354413D0AD7B3F96851419A9999F9C43354419A9999A9F6685141A4703D6AC2335441713D0AE7F46851417B14AEA7C033544133333343F0685141CDCCCC2CC03354417B14AE57EA685141E17A140EBB33544185EB51C8E768514114AE4741B63354415C8FC295E668514185EB51F8B3335441D7A3703DE36851419A9999A9B133544166666636E16851415C8FC2E5B1335441CDCCCC9CDF685141B81E858BB3335441666666C6DD685141B81E859BB633544152B81E05DD685141EC51B8AEB833544185EB5138DC685141A4703D6ABB335441713D0A77DB68514152B81E95BD335441D7A3700DDA685141000000C0BF33544100000040D96851418FC2F5C8C03354419A999949DA685141EC51B8DEC1335441295C8F22DB68514152B81ED5C03354419A999959DD6851410AD7A390C3335441713D0A77DB6851419A999919C733544152B81EF5D968514148E17A44C9335441CDCCCC7CD96851411F85EBA1CA335441
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000790CA4BB35695141FFEE85CCD4335441000000E0386951410AD7A360D3335441666A78FA38695141E30F7468D33354413EB3E84539695141625E1F48D33354412A8C828C3B6951411388B02AD43354414C8D5F5B3E6951418B030BBBD6335441C610B4333F6951413BEECD92D63354411CFE50193F6951413779DF6ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA3354416666666614695141B81E859BC9335441A4703D1A106951415C8FC255C83354411F85EB610D69514152B81EE5C63354411F85EB610969514100000060C733544152B81E950469514133333393C63354419A9999A9FE685141F6285CEFC53354413D0AD7B3F96851419A9999F9C43354419A9999A9F6685141A4703D6AC2335441713D0AE7F46851417B14AEA7C033544133333343F0685141CDCCCC2CC03354417B14AE57EA685141E17A140EBB33544185EB51C8E768514114AE4741B63354415C8FC295E668514185EB51F8B3335441D7A3703DE36851419A9999A9B133544166666636E16851415C8FC2E5B1335441CDCCCC9CDF685141B81E858BB3335441666666C6DD685141B81E859BB633544152B81E05DD685141EC51B8AEB833544185EB5138DC685141A4703D6ABB335441713D0A77DB68514152B81E95BD335441D7A3700DDA685141000000C0BF33544100000040D96851418FC2F5C8C03354419A999949DA685141EC51B8DEC1335441295C8F22DB68514152B81ED5C03354419A999959DD6851410AD7A390C3335441713D0A77DB6851419A999919C733544152B81EF5D968514148E17A44C9335441CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441666666F6E3685141F6285C2FD9335441C3F528FCE568514114AE4701DB335441AE47E13AEC685141AE47E1CADF33544133333323FA68514185EB5198EB335441713D0AA7F0685141E17A146EF233544114AE4771E76851411F85EB11F9335441B81E853BE868514152B81E55F93354418FC2F5A8EB6851418FC2F5A8FA33544166666636EF6851413D0AD7B3FB335441CDCCCC9CF268514133333373FC33544152B81E65F66851417B14AEE7FC335441AE47E13AFA6851410AD7A320FD33544148E17AB4FD6851418FC2F508FD33544152B81E3505695141E17A14BEFC335441E889745A09695141538A3594FC3354419245E8D3096951418FD6A58EFC3354413179F9F50C6951416B0FFD1FFB335441D83D97690E695141B3E4F8D7F9335441F4EA8B4210695141A5FF5CB5F73354417E6377AB1069514110C43A1DF7335441EC2C0FB61269514164467827F4335441001C8702176951419F9F339DF033544132AD1A97176951418876DA25F033544179A56FC81E69514125B04C54EA33544168AC2AE7216951415C8AECC0E6335441D5352C3824695141B3497A1CE03354413486DF3B24695141C22FBE16E0335441648D084924695141D968CBECDF335441E4DF3FFA25695141186DF862DD335441C6E02A0E26695141C5EB1745DD33544164E35537296951414E1B42D8D83354415C9C016D2B695141DFF1A9BFD8335441EB3376802B695141FD105FBDD83354419FA549A72E695141DC12BD9BD8335441A30ADC4E306951419763B16ED83354413D5D9B5734695141B11817AFD5335441790CA4BB35695141FFEE85CCD4335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 3337306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441666666F6E3685141F6285C2FD9335441C3F528FCE568514114AE4701DB335441AE47E13AEC685141AE47E1CADF33544133333323FA68514185EB5198EB335441713D0AA7F0685141E17A146EF233544114AE4771E76851411F85EB11F9335441B81E853BE868514152B81E55F93354418FC2F5A8EB6851418FC2F5A8FA33544166666636EF6851413D0AD7B3FB335441CDCCCC9CF268514133333373FC33544152B81E65F66851417B14AEE7FC335441AE47E13AFA6851410AD7A320FD33544148E17AB4FD6851418FC2F508FD33544152B81E3505695141E17A14BEFC33544148E17A94096951411F85EB91FC335441000000300D6951418FC2F518FB335441C3F528EC0F69514133333333F8335441C3F528DC12695141C3F528FCF3335441333333631E69514185EB51C8EA33544148E17A342269514185EB5168E63354415C8FC25524695141000000C0DF33544152B81E45296951411F85EBD1D8335441A4703DAA2F695141713D0A97D83354419A9999193169514148E17A54D83354415C8FC2F53469514114AE4721D5335441000000E0386951410AD7A360D3335441295C8F223B69514152B81EE5D333544148E17A343E695141A4703DDAD6335441713D0A373F695141E17A148ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA3354416666666614695141B81E859BC9335441A4703D1A106951415C8FC255C83354411F85EB610D69514152B81EE5C63354411F85EB610969514100000060C733544152B81E950469514133333393C63354419A9999A9FE685141F6285CEFC53354413D0AD7B3F96851419A9999F9C43354419A9999A9F6685141A4703D6AC2335441713D0AE7F46851417B14AEA7C033544133333343F0685141CDCCCC2CC03354417B14AE57EA685141E17A140EBB33544185EB51C8E768514114AE4741B63354415C8FC295E668514185EB51F8B3335441D7A3703DE36851419A9999A9B133544166666636E16851415C8FC2E5B1335441CDCCCC9CDF685141B81E858BB3335441666666C6DD685141B81E859BB633544152B81E05DD685141EC51B8AEB833544185EB5138DC685141A4703D6ABB335441713D0A77DB68514152B81E95BD335441D7A3700DDA685141000000C0BF33544100000040D96851418FC2F5C8C03354419A999949DA685141EC51B8DEC1335441295C8F22DB68514152B81ED5C03354419A999959DD6851410AD7A390C3335441713D0A77DB6851419A999919C733544152B81EF5D968514148E17A44C9335441CDCCCC7CD96851411F85EBA1CA335441
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000790CA4BB35695141FFEE85CCD4335441000000E0386951410AD7A360D3335441666A78FA38695141E30F7468D33354413EB3E84539695141625E1F48D33354412A8C828C3B6951411388B02AD43354414C8D5F5B3E6951418B030BBBD6335441C610B4333F6951413BEECD92D63354411CFE50193F6951413779DF6ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA3354416666666614695141B81E859BC9335441A4703D1A106951415C8FC255C83354411F85EB610D69514152B81EE5C63354411F85EB610969514100000060C733544152B81E950469514133333393C63354419A9999A9FE685141F6285CEFC53354413D0AD7B3F96851419A9999F9C43354419A9999A9F6685141A4703D6AC2335441713D0AE7F46851417B14AEA7C033544133333343F0685141CDCCCC2CC03354417B14AE57EA685141E17A140EBB33544185EB51C8E768514114AE4741B63354415C8FC295E668514185EB51F8B3335441D7A3703DE36851419A9999A9B133544166666636E16851415C8FC2E5B1335441CDCCCC9CDF685141B81E858BB3335441666666C6DD685141B81E859BB633544152B81E05DD685141EC51B8AEB833544185EB5138DC685141A4703D6ABB335441713D0A77DB68514152B81E95BD335441D7A3700DDA685141000000C0BF33544100000040D96851418FC2F5C8C03354419A999949DA685141EC51B8DEC1335441295C8F22DB68514152B81ED5C03354419A999959DD6851410AD7A390C3335441713D0A77DB6851419A999919C733544152B81EF5D968514148E17A44C9335441CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441666666F6E3685141F6285C2FD9335441C3F528FCE568514114AE4701DB335441AE47E13AEC685141AE47E1CADF33544133333323FA68514185EB5198EB335441713D0AA7F0685141E17A146EF233544114AE4771E76851411F85EB11F9335441B81E853BE868514152B81E55F93354418FC2F5A8EB6851418FC2F5A8FA33544166666636EF6851413D0AD7B3FB335441CDCCCC9CF268514133333373FC33544152B81E65F66851417B14AEE7FC335441AE47E13AFA6851410AD7A320FD33544148E17AB4FD6851418FC2F508FD33544152B81E3505695141E17A14BEFC335441E889745A09695141538A3594FC3354419245E8D3096951418FD6A58EFC3354413179F9F50C6951416B0FFD1FFB335441D83D97690E695141B3E4F8D7F9335441F4EA8B4210695141A5FF5CB5F73354417E6377AB1069514110C43A1DF7335441EC2C0FB61269514164467827F4335441001C8702176951419F9F339DF033544132AD1A97176951418876DA25F033544179A56FC81E69514125B04C54EA33544168AC2AE7216951415C8AECC0E6335441D5352C3824695141B3497A1CE03354413486DF3B24695141C22FBE16E0335441648D084924695141D968CBECDF335441E4DF3FFA25695141186DF862DD335441C6E02A0E26695141C5EB1745DD33544164E35537296951414E1B42D8D83354415C9C016D2B695141DFF1A9BFD8335441EB3376802B695141FD105FBDD83354419FA549A72E695141DC12BD9BD8335441A30ADC4E306951419763B16ED83354413D5D9B5734695141B11817AFD5335441790CA4BB35695141FFEE85CCD4335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501374 - 1261859
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -851  </desc>
+<a>
+01060000000100000001030000000100000063000000445481A95D5951414F8E696F13B15441B61E7201605951418C41AAD813B154419F8FC224625951417A7C643714B1544161A9846063595141C75D7E6114B15441295AB37C64595141C75D7E6114B15441F7A14E79655951411AD6046C14B15441A65F5E33675951412C9B4A0D14B15441EF760E2269595141F815E36413B15441BDBEA91E6A595141170902C712B15441D250F2646B595141E3839A1E12B15441E18688296D59514176E25EED10B154418616BF226F5951411306695D0FB154414299147E705951415D1A80E20DB15441064A439A71595141956951C60CB15441270A65A172595141C721B6C90BB154412340FB65745951410508F48D0AB154411348B8697659514143EE315209B15441A3A915A2785951411D97A36A08B154413F394C9B7A59514142212FAD07B15441695DDD277D595141C1BAADDA06B154413E727BC97F59514137BDBF2706B1544138DEA75283595141F6097FBE05B154417FF5574185595141B6563E5505B154416A66A864875951416E0C910B05B15441C0AB31148959514128C2E3C104B15441C60FA1998A5951413B87296304B154411D552A498C595141A0C4F50E04B154415674973B9059514192C919A902B15441E366C6E491595141EFFA8CE401B15441BF5D04D0925951419D0301EE00B154410B0B6E678E59514161146ACC02B1544164AAFE098C5951419308358403B1544138A50CC687595141D2CC3E6704B1544146B0545A84595141F2882BDE04B15441C6BFA17E825951410C91484A05B15441B587C33D8259514175B4E72203B1544134FFAF7780595141E7C65F6FFDB0544114ECD31E925951415DE41F50F4B054415BCF00F29D59514170921063EDB054411D84BDB0A0595141F8719CB2EBB0544160840DFBA1595141F044514BEDB054412919F372A45951416DCD19CCE9B0544100000000A9595141C3F5285CE3B05441D7A370FDAA595141EC51B8AEDDB05441EC51B8CEAC59514148E17A74D8B054413D0AD7D3AD59514185EB5158D1B0544133333323B4595141A4703D9AD5B0544185EB51E8B5595141D7A370CDD6B054410AD7A3B0BA59514166666646DAB054417B14AE17BB59514185EB5108DAB054410AD7A3D0BE59514185EB5168D7B05441295C8F32C05951413D0AD773D6B05441AE47E12AC1595141713D0AD7D5B0544114AE47C1C1595141C3F5286CD5B05441C3F5285CC2595141EC51B81ED5B054413D0AD743C059514148E17AD4BCB0544159D81C61BE59514124793174BDB05441713D0AF7BC595141000000F0BDB05441C3F5281CBC595141D7A3703DBEB05441EC51B86EBB5951410AD7A380BEB054418FC2F578BA595141A4703DBABEB0544114AE4701BA5951410AD7A3F0BEB0544100000020B9595141EC51B88EBFB05441EC51B84EB85951418FC2F508C0B05441A4703D9AB7595141B81E854BC0B05441AE47E1BAB6595141713D0A87C0B054410AD7A350B6595141C3F5289CC0B05441F6285CCFB5595141A4703D7AC0B054419A999939B559514100000050C0B054418FC2F5A8B4595141EC51B85EC0B0544133333313B3595141AE47E14AC1B05441CDCCCC9CAF5951413D0AD773C3B054413E7D615EAC5951411A7484B6C7B05441F58A0ECEA8595141FE252DA8CAB0544154C4B85DA15951418B5608F7D0B0544196C3CBA99E5951417FFF8F6DD4B05441AB9E52699B59514155EC2A6DD7B0544124EE1BD19459514102E374F4DEB054411AA0A329925951411BDFA464E1B054414967D8348F595141CAA7B3D7E3B0544182FE4B6B8C595141B934CC2DE7B0544194BD630A89595141C831A105EBB05441EA047B4086595141174D6AC2EEB0544156C17EAC805951415EE066DFF3B05441AF4906057B595141534177D1F7B0544112400F31755951410972255AFAB0544112C7488F715951417DDEC9FFFBB0544163B9314774595141EA48B33201B15441E905E0DA6E5951414CCBB0EA04B1544188E2389669595141613E58B809B15441746F91C86459514148AEAD9009B1544147CB95465E595141796FAC6C0BB15441D1CD6B2F575951417B1BAE250AB154419AF7EE8A58595141BFA3521612B154410CC12A2A54595141C95AE5F710B1544112C9C723555951412975B42412B1544123C4C393575951418D74A73312B154414DE854205A5951417418F5B112B15441445481A95D5951414F8E696F13B15441
+</a>
+
+<b>
+010600000001000000010300000001000000670000005B9DEC6D65595141426B8B6B14B15441FAA14E79655951411ED6046C14B15441A75F5E33675951412F9B4A0D14B15441F1760E2269595141FA15E36413B15441CDC66FDC695951410C4466F012B15441C0BEA91E6A5951411A0902C712B1544191B5F23F6B5951411916B33112B15441D550F2646B595141E5839A1E12B154411A059AFB6C5951415D0A590C11B15441E28688296D59514179E25EED10B154418116BF226F5951411306695D0FB154413F99147E70595141621A80E20DB15441024A439A71595141956951C60CB15441260A65A172595141C521B6C90BB154412840FB65745951410508F48D0AB154411048B8697659514144EE315209B1544103DCE5B476595141D79C832309B15441E32813907A5951416E80254207B15441CCAFC2F07C5951411A847E7D06B15441D712FD2B7F5951419EF4A9E705B154419630339980595141F01A058A05B154415624B5288359514184F975E104B154416868463884595141AD8CA3B204B154416709D3CA8859514180232ABF03B15441386B9A478B5951411CB93D0D03B154419BABD21B8D5951417F4DDE9C02B15441C5B5D8A192595141520E198700B154411B162B369359514149E74C7CFFB0544166E35A3B9159514131F83C2500B1544164FC893688595141489E624C03B15441A918906382595141A284326404B1544193AAEEAF81595141618D72A302B15441AC99FE06815951413FAC178300B154413137998380595141D9BF1CF2FDB05441ABA57D8B80595141C91407AFFDB0544137FFAF7780595141E5C65F6FFDB0544141FCBE9480595141D4B45B60FDB054419EE523A98059514141F501B3FCB054411DC12E918259514115D97199FBB05441030EECE39C59514143A0050EECB054416E738CD9A0595141130BD08FE9B05441063EA718A2595141B51020C8E9B054411F2DB76FA1595141AF4E9033ECB054414EE7B04CA159514197F19273ECB0544162840DFBA1595141EC44514BEDB054412719F372A459514171CD19CCE9B0544100000000A9595141C3F5285CE3B05441D7A370FDAA595141EC51B8AEDDB05441EC51B8CEAC59514148E17A74D8B054413D0AD7D3AD59514185EB5158D1B0544133333323B4595141A4703D9AD5B0544185EB51E8B5595141D7A370CDD6B054410AD7A3B0BA59514166666646DAB054417B14AE17BB59514185EB5108DAB054410AD7A3D0BE59514185EB5168D7B05441295C8F32C05951413D0AD773D6B05441AE47E12AC1595141713D0AD7D5B0544114AE47C1C1595141C3F5286CD5B05441C3F5285CC2595141EC51B81ED5B054413D0AD743C059514148E17AD4BCB054415ED81C61BE5951411F793174BDB05441713D0AF7BC595141000000F0BDB05441C3F5281CBC595141D7A3703DBEB05441EC51B86EBB5951410AD7A380BEB054418FC2F578BA595141A4703DBABEB0544114AE4701BA5951410AD7A3F0BEB0544100000020B9595141EC51B88EBFB05441E56042B3B359514147355DD1C2B05441C102D471B0595141CC512080C4B054413E7D615EAC595141197484B6C7B05441F38A0ECEA8595141FE252DA8CAB0544157C4B85DA1595141865608F7D0B0544198C3CBA99E5951417CFF8F6DD4B05441A99E52699B59514152EC2A6DD7B0544128EE1BD19459514101E374F4DEB0544118A0A329925951411DDFA464E1B054414A67D8348F595141CDA7B3D7E3B0544110CC9E438D595141FF74DD2AE6B0544125CD61C48D595141B43FA8E2E6B054417471D9FF8959514103079017EBB05441493214EA87595141CBB1B49DEDB05441D52F2E6D8859514113F7B86BEEB05441BEBD21B2815951415CB395EEF4B0544147C646E77F5951419E36EC13F8B054412368D8A57C595141D4D8EB64FCB05441312A864E7A595141C540F299FDB0544161B9314774595141ED48B33201B15441E505E0DA6E5951414FCBB0EA04B154418AE2389669595141653E58B809B15441746F91C86459514144AEAD9009B1544143CB95465E595141756FAC6C0BB15441CFCD6B2F575951417C1BAE250AB15441C339186F585951419C2BB85A11B154419AF7EE8A58595141BCA3521612B15441033AF86A5B595141972329F712B15441495481A95D5951414F8E696F13B1544168B1D29F5E5951415240A09A13B15441B61E7201605951418841AAD813B154419D8FC22462595141777C643714B154415DA9846063595141C95D7E6114B15441EBE12C7264595141C95D7E6114B154412A5AB37C64595141C95D7E6114B154415B9DEC6D65595141426B8B6B14B15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501374 - 3400346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -851  </desc>
+<a>
+01060000000100000001030000000100000063000000445481A95D5951414F8E696F13B15441B61E7201605951418C41AAD813B154419F8FC224625951417A7C643714B1544161A9846063595141C75D7E6114B15441295AB37C64595141C75D7E6114B15441F7A14E79655951411AD6046C14B15441A65F5E33675951412C9B4A0D14B15441EF760E2269595141F815E36413B15441BDBEA91E6A595141170902C712B15441D250F2646B595141E3839A1E12B15441E18688296D59514176E25EED10B154418616BF226F5951411306695D0FB154414299147E705951415D1A80E20DB15441064A439A71595141956951C60CB15441270A65A172595141C721B6C90BB154412340FB65745951410508F48D0AB154411348B8697659514143EE315209B15441A3A915A2785951411D97A36A08B154413F394C9B7A59514142212FAD07B15441695DDD277D595141C1BAADDA06B154413E727BC97F59514137BDBF2706B1544138DEA75283595141F6097FBE05B154417FF5574185595141B6563E5505B154416A66A864875951416E0C910B05B15441C0AB31148959514128C2E3C104B15441C60FA1998A5951413B87296304B154411D552A498C595141A0C4F50E04B154415674973B9059514192C919A902B15441E366C6E491595141EFFA8CE401B15441BF5D04D0925951419D0301EE00B154410B0B6E678E59514161146ACC02B1544164AAFE098C5951419308358403B1544138A50CC687595141D2CC3E6704B1544146B0545A84595141F2882BDE04B15441C6BFA17E825951410C91484A05B15441B587C33D8259514175B4E72203B1544134FFAF7780595141E7C65F6FFDB0544114ECD31E925951415DE41F50F4B054415BCF00F29D59514170921063EDB054411D84BDB0A0595141F8719CB2EBB0544160840DFBA1595141F044514BEDB054412919F372A45951416DCD19CCE9B0544100000000A9595141C3F5285CE3B05441D7A370FDAA595141EC51B8AEDDB05441EC51B8CEAC59514148E17A74D8B054413D0AD7D3AD59514185EB5158D1B0544133333323B4595141A4703D9AD5B0544185EB51E8B5595141D7A370CDD6B054410AD7A3B0BA59514166666646DAB054417B14AE17BB59514185EB5108DAB054410AD7A3D0BE59514185EB5168D7B05441295C8F32C05951413D0AD773D6B05441AE47E12AC1595141713D0AD7D5B0544114AE47C1C1595141C3F5286CD5B05441C3F5285CC2595141EC51B81ED5B054413D0AD743C059514148E17AD4BCB0544159D81C61BE59514124793174BDB05441713D0AF7BC595141000000F0BDB05441C3F5281CBC595141D7A3703DBEB05441EC51B86EBB5951410AD7A380BEB054418FC2F578BA595141A4703DBABEB0544114AE4701BA5951410AD7A3F0BEB0544100000020B9595141EC51B88EBFB05441EC51B84EB85951418FC2F508C0B05441A4703D9AB7595141B81E854BC0B05441AE47E1BAB6595141713D0A87C0B054410AD7A350B6595141C3F5289CC0B05441F6285CCFB5595141A4703D7AC0B054419A999939B559514100000050C0B054418FC2F5A8B4595141EC51B85EC0B0544133333313B3595141AE47E14AC1B05441CDCCCC9CAF5951413D0AD773C3B054413E7D615EAC5951411A7484B6C7B05441F58A0ECEA8595141FE252DA8CAB0544154C4B85DA15951418B5608F7D0B0544196C3CBA99E5951417FFF8F6DD4B05441AB9E52699B59514155EC2A6DD7B0544124EE1BD19459514102E374F4DEB054411AA0A329925951411BDFA464E1B054414967D8348F595141CAA7B3D7E3B0544182FE4B6B8C595141B934CC2DE7B0544194BD630A89595141C831A105EBB05441EA047B4086595141174D6AC2EEB0544156C17EAC805951415EE066DFF3B05441AF4906057B595141534177D1F7B0544112400F31755951410972255AFAB0544112C7488F715951417DDEC9FFFBB0544163B9314774595141EA48B33201B15441E905E0DA6E5951414CCBB0EA04B1544188E2389669595141613E58B809B15441746F91C86459514148AEAD9009B1544147CB95465E595141796FAC6C0BB15441D1CD6B2F575951417B1BAE250AB154419AF7EE8A58595141BFA3521612B154410CC12A2A54595141C95AE5F710B1544112C9C723555951412975B42412B1544123C4C393575951418D74A73312B154414DE854205A5951417418F5B112B15441445481A95D5951414F8E696F13B15441
+</a>
+
+<b>
+010600000001000000010300000001000000670000005B9DEC6D65595141426B8B6B14B15441FAA14E79655951411ED6046C14B15441A75F5E33675951412F9B4A0D14B15441F1760E2269595141FA15E36413B15441CDC66FDC695951410C4466F012B15441C0BEA91E6A5951411A0902C712B1544191B5F23F6B5951411916B33112B15441D550F2646B595141E5839A1E12B154411A059AFB6C5951415D0A590C11B15441E28688296D59514179E25EED10B154418116BF226F5951411306695D0FB154413F99147E70595141621A80E20DB15441024A439A71595141956951C60CB15441260A65A172595141C521B6C90BB154412840FB65745951410508F48D0AB154411048B8697659514144EE315209B1544103DCE5B476595141D79C832309B15441E32813907A5951416E80254207B15441CCAFC2F07C5951411A847E7D06B15441D712FD2B7F5951419EF4A9E705B154419630339980595141F01A058A05B154415624B5288359514184F975E104B154416868463884595141AD8CA3B204B154416709D3CA8859514180232ABF03B15441386B9A478B5951411CB93D0D03B154419BABD21B8D5951417F4DDE9C02B15441C5B5D8A192595141520E198700B154411B162B369359514149E74C7CFFB0544166E35A3B9159514131F83C2500B1544164FC893688595141489E624C03B15441A918906382595141A284326404B1544193AAEEAF81595141618D72A302B15441AC99FE06815951413FAC178300B154413137998380595141D9BF1CF2FDB05441ABA57D8B80595141C91407AFFDB0544137FFAF7780595141E5C65F6FFDB0544141FCBE9480595141D4B45B60FDB054419EE523A98059514141F501B3FCB054411DC12E918259514115D97199FBB05441030EECE39C59514143A0050EECB054416E738CD9A0595141130BD08FE9B05441063EA718A2595141B51020C8E9B054411F2DB76FA1595141AF4E9033ECB054414EE7B04CA159514197F19273ECB0544162840DFBA1595141EC44514BEDB054412719F372A459514171CD19CCE9B0544100000000A9595141C3F5285CE3B05441D7A370FDAA595141EC51B8AEDDB05441EC51B8CEAC59514148E17A74D8B054413D0AD7D3AD59514185EB5158D1B0544133333323B4595141A4703D9AD5B0544185EB51E8B5595141D7A370CDD6B054410AD7A3B0BA59514166666646DAB054417B14AE17BB59514185EB5108DAB054410AD7A3D0BE59514185EB5168D7B05441295C8F32C05951413D0AD773D6B05441AE47E12AC1595141713D0AD7D5B0544114AE47C1C1595141C3F5286CD5B05441C3F5285CC2595141EC51B81ED5B054413D0AD743C059514148E17AD4BCB054415ED81C61BE5951411F793174BDB05441713D0AF7BC595141000000F0BDB05441C3F5281CBC595141D7A3703DBEB05441EC51B86EBB5951410AD7A380BEB054418FC2F578BA595141A4703DBABEB0544114AE4701BA5951410AD7A3F0BEB0544100000020B9595141EC51B88EBFB05441E56042B3B359514147355DD1C2B05441C102D471B0595141CC512080C4B054413E7D615EAC595141197484B6C7B05441F38A0ECEA8595141FE252DA8CAB0544157C4B85DA1595141865608F7D0B0544198C3CBA99E5951417CFF8F6DD4B05441A99E52699B59514152EC2A6DD7B0544128EE1BD19459514101E374F4DEB0544118A0A329925951411DDFA464E1B054414A67D8348F595141CDA7B3D7E3B0544110CC9E438D595141FF74DD2AE6B0544125CD61C48D595141B43FA8E2E6B054417471D9FF8959514103079017EBB05441493214EA87595141CBB1B49DEDB05441D52F2E6D8859514113F7B86BEEB05441BEBD21B2815951415CB395EEF4B0544147C646E77F5951419E36EC13F8B054412368D8A57C595141D4D8EB64FCB05441312A864E7A595141C540F299FDB0544161B9314774595141ED48B33201B15441E505E0DA6E5951414FCBB0EA04B154418AE2389669595141653E58B809B15441746F91C86459514144AEAD9009B1544143CB95465E595141756FAC6C0BB15441CFCD6B2F575951417C1BAE250AB15441C339186F585951419C2BB85A11B154419AF7EE8A58595141BCA3521612B15441033AF86A5B595141972329F712B15441495481A95D5951414F8E696F13B1544168B1D29F5E5951415240A09A13B15441B61E7201605951418841AAD813B154419D8FC22462595141777C643714B154415DA9846063595141C95D7E6114B15441EBE12C7264595141C95D7E6114B154412A5AB37C64595141C95D7E6114B154415B9DEC6D65595141426B8B6B14B15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875616 - 963350
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E85DB75EB5041713D0A273FDE54413D0AD78379EB50419A9999F93ADE544185EB51987FEB50417B14AE8733DE5441A4703DEA78EB50410000000028DE544148E17AC477EB50417B14AEE725DE5441F6285CDF6AEB5041EC51B83E2EDE5441E17A14EE69EB5041333333C32EDE54418FC2F5586CEB5041D7A370BD34DE5441CDCCCC1C6FEB50415C8FC2F53ADE54415C8FC22572EB504114AE470140DE5441E17A142E74EB5041F6285C2F3EDE5441B81E85DB75EB5041713D0A273FDE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000713D0A674FEB504114AE4731FFDD5441666666A64CEB5041B81E85FBFFDD5441000000C04AEB504148E17A8400DE54411F85EBE144EB5041B81E85DB01DE5441333333A345EB504152B81E2504DE5441295C8F7248EB5041E17A14DE07DE54415C8FC28549EB5041F6285C6F09DE544172BCE4254FEB50418E968C4912DE54410C82075A50EB504115A5374F14DE544108FA8E3452EB5041A029B27C17DE5441EC51B8CE54EB50418FC2F5F81BDE5441A4703DCA57EB50411F85EB6120DE54419A9999D958EB50415C8FC2F521DE5441F6285CAF59EB5041E17A148E23DE544185EB51685AEB5041EC51B81E25DE5441295C8FF25AEB5041295C8FD226DE54417B14AE475BEB50413D0AD79328DE5441295C8F825BEB5041C3F5286C2ADE5441301E22E85BEB504138407E052CDE5441CD5914445EEB50416D74020432DE54412141A00B62EB504155CE5FFB3BDE5441DBEC397763EB5041E20DC2BC3FDE54417F6B8C8C64EB5041F66D788142DE5441ED09908267EB50411BDC67DE40DE54412A3C5CCE6CEB50417BE58DEE3DDE5441A6F76D1270EB5041B441108E3CDE54412CEFF0C96DEB50413B147BFB37DE54419B20B8B96CEB5041B7C41A9735DE544118326EF069EB5041A3D0E8C12EDE54417645B8CA6AEB504191AC3B192EDE5441D70690466AEB5041173D24242DDE5441E3FBBE1F69EB5041B4C60EBE2ADE5441C50565E866EB5041A4A2FAA725DE5441FF61831C65EB504153EB1E5E21DE544110EEEBA763EB50412ABF01D51DDE54417855DE905FEB50419DD8E61414DE5441564E2FA75CEB504125664F100EDE544175859C0C5CEB5041741872050DDE54410A9C2F745BEB5041C96A13E20BDE5441F6964CE55AEB50411406C2EB0ADE5441EA2235705AEB50411090F2C309DE544115C2DB885AEB504197B046C708DE5441B685460A5BEB5041C6D7650507DE54415849B18B5BEB5041B43297D404DE5441A4703D7A5AEB50418FC2F59803DE544161011AD655EB5041EAE3D624FDDD5441713D0A674FEB504114AE4731FFDD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876215 - 1493949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -764  </desc>
+<a>
+0106000000010000000103000000010000001C0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441F6285CFFBDE350411F85EBD16FF054413D0AD7E3BDE35041CDCCCCCC67F05441B81E85DBBDE350411F85EB5165F0544114AE4791B4E35041E17A141E6DF05441CDCCCCECB1E35041AE47E13A6EF05441713D0AD7A9E35041000000406FF0544185EB51C8A3E35041B81E85DB6FF054415C8FC2959BE35041AE47E1EA7AF05441EC51B8FE9AE3504148E17A147CF054419A9999499EE35041713D0A977EF054413D0AD733A2E350410AD7A3C080F0544100000010A3E350419A9999E980F05441B81E85DBA3E350410AD7A3B080F054417B14AEB7A4E350415C8FC21580F05441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441F6285CFFBDE350411F85EBD16FF054413D0AD7E3BDE35041CDCCCCCC67F05441B81E85DBBDE350411F85EB5165F05441F8109B05B6E35041B935BED96BF054413A5FE6DEACE350412F2C1EDE6EF05441560E2D7AABE3504160E5D05A6FF05441C976BEEFA7E350419CC4205870F054411D5A647BA5E350415C8FC26D71F05441F0A7C6A3A3E350417F6ABCBC72F05441F853E395A2E35041508D972E74F05441DD240671A1E350417B14AE2F7AF05441E77B5C9E9CE35041542ED62F7DF054419A9999499EE35041713D0A977EF054413D0AD733A2E350410AD7A3C080F0544100000010A3E350419A9999E980F05441B81E85DBA3E350410AD7A3B080F054417B14AEB7A4E350415C8FC21580F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876215 - 3397485
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -764  </desc>
+<a>
+0106000000010000000103000000010000001C0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441F6285CFFBDE350411F85EBD16FF054413D0AD7E3BDE35041CDCCCCCC67F05441B81E85DBBDE350411F85EB5165F0544114AE4791B4E35041E17A141E6DF05441CDCCCCECB1E35041AE47E13A6EF05441713D0AD7A9E35041000000406FF0544185EB51C8A3E35041B81E85DB6FF054415C8FC2959BE35041AE47E1EA7AF05441EC51B8FE9AE3504148E17A147CF054419A9999499EE35041713D0A977EF054413D0AD733A2E350410AD7A3C080F0544100000010A3E350419A9999E980F05441B81E85DBA3E350410AD7A3B080F054417B14AEB7A4E350415C8FC21580F05441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441F6285CFFBDE350411F85EBD16FF054413D0AD7E3BDE35041CDCCCCCC67F05441B81E85DBBDE350411F85EB5165F05441F8109B05B6E35041B935BED96BF054413A5FE6DEACE350412F2C1EDE6EF05441560E2D7AABE3504160E5D05A6FF05441C976BEEFA7E350419CC4205870F054411D5A647BA5E350415C8FC26D71F05441F0A7C6A3A3E350417F6ABCBC72F05441F853E395A2E35041508D972E74F05441DD240671A1E350417B14AE2F7AF05441E77B5C9E9CE35041542ED62F7DF054419A9999499EE35041713D0A977EF054413D0AD733A2E350410AD7A3C080F0544100000010A3E350419A9999E980F05441B81E85DBA3E350410AD7A3B080F054417B14AEB7A4E350415C8FC21580F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>623189 - 1434609
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541EC51B84E87E2504185EB51E8580955411F85EBB198E25041000000F054095541A4703D1AA9E2504114AE47315109554148E17AA4A9E25041EC51B8BE4A0955410C0000008FC2F5487AE25041E17A146E4B095541CDCCCC5C7EE25041666666A649095541295C8F428BE25041E17A145E46095541CDCCCC2C98E2504133333303440955417B14AE3798E25041C3F5289C48095541CDCCCC0C95E25041F6285C6F490955417B14AE978BE250418FC2F5784B0955411F85EB0181E25041AE47E14A4E095541E17A14EE7CE25041333333A34F095541AE47E16A78E250410AD7A3F050095541AE47E16A78E2504185EB5128500955418FC2F5487AE25041E17A146E4B095541
+</a>
+
+<b>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541EC51B84E87E2504185EB51E8580955411F85EBB198E25041000000F054095541A4703D1AA9E2504114AE47315109554148E17AA4A9E25041EC51B8BE4A09554114000000B81657177AE250410DC6B0EB4B09554143060D667AE2504127261AA84A095541C6A2ED7983E250410E76F54348095541CD1F9B9287E250410B97524E47095541295C8F428BE25041E17A145E4609554192C85BB38CE25041EEBDD41A46095541C876844E8DE250417ACC7CF6450955411AB3DB8D98E25041E52204A943095541849FD74998E25041AB9651B548095541E1DBAEA195E2504162D15D8149095541E28302DD91E25041C59D1C1F4A0955415DD542978EE2504131261AA84A0955415A45D3368AE25041E1C626B14B095541D5C948E783E2504159269D664D095541EC7262D781E25041638802124E0955418D8006897FE25041BE58AFD14E095541538A48B778E250415302281F5109554193A1FDCB78E2504106159CD4500955418DCB009A79E250418417F7EE4D095541B81657177AE250410DC6B0EB4B095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>623189 - 3467345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541EC51B84E87E2504185EB51E8580955411F85EBB198E25041000000F054095541A4703D1AA9E2504114AE47315109554148E17AA4A9E25041EC51B8BE4A0955410C0000008FC2F5487AE25041E17A146E4B095541CDCCCC5C7EE25041666666A649095541295C8F428BE25041E17A145E46095541CDCCCC2C98E2504133333303440955417B14AE3798E25041C3F5289C48095541CDCCCC0C95E25041F6285C6F490955417B14AE978BE250418FC2F5784B0955411F85EB0181E25041AE47E14A4E095541E17A14EE7CE25041333333A34F095541AE47E16A78E250410AD7A3F050095541AE47E16A78E2504185EB5128500955418FC2F5487AE25041E17A146E4B095541
+</a>
+
+<b>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541EC51B84E87E2504185EB51E8580955411F85EBB198E25041000000F054095541A4703D1AA9E2504114AE47315109554148E17AA4A9E25041EC51B8BE4A09554114000000B81657177AE250410DC6B0EB4B09554143060D667AE2504127261AA84A095541C6A2ED7983E250410E76F54348095541CD1F9B9287E250410B97524E47095541295C8F428BE25041E17A145E4609554192C85BB38CE25041EEBDD41A46095541C876844E8DE250417ACC7CF6450955411AB3DB8D98E25041E52204A943095541849FD74998E25041AB9651B548095541E1DBAEA195E2504162D15D8149095541E28302DD91E25041C59D1C1F4A0955415DD542978EE2504131261AA84A0955415A45D3368AE25041E1C626B14B095541D5C948E783E2504159269D664D095541EC7262D781E25041638802124E0955418D8006897FE25041BE58AFD14E095541538A48B778E250415302281F5109554193A1FDCB78E2504106159CD4500955418DCB009A79E250418417F7EE4D095541B81657177AE250410DC6B0EB4B095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>250078 - 2934137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E17ABA2D514114AE47D142755441EC51B82EB82D5141D7A3705D4A755441A4703D9ABE2D5141A4703D8A4C7554419A9999D9C42D5141CDCCCCCC4E755441E17A143ECC2D51413D0AD7835175544152B81EB5D12D5141AE47E1AA53755441B81E85CBCD2D51418FC2F5985A75544114AE47E1CC2D514148E17A245E755441B81E85ABC92D514148E17A5469755441E17A142EC82D5141333333036E7554417B14AE57C62D5141A4703DDA737554417B14AED7CC2D51419A9999B9757554417B14AEA7D22D5141666666667775544185EB5188D72D51415C8FC24579755441F6285C0FDE2D5141000000707C75544185EB5108E92D5141B81E857B80755441CDCCCC5CF62D5141A4703D8A8575544148E17AC4F82D5141713D0AD78575544152B81E15FA2D5141CDCCCC4C83755441F6285CAFFB2D51415C8FC2E57D755441333333C3FC2D5141A4703D4A7A755441C3F528CCFF2D5141A4703DEA71755441AE47E1AA022E51417B14AEA76B755441AE47E1DA042E5141D7A3709D667554415C8FC215082E5141E17A140E617554410AD7A3500D2E5141A4703D4A587554410AD7A3600D2E51419A9999B95675544152B81E550C2E5141333333B355755441EC51B89E022E5141C3F528DC50755441D7A370DDF42D51415C8FC2A54A75544148E17A04EA2D5141D7A3701D45755441B81E852BDD2D5141333333C33E755441000000C0D52D51419A9999E93B7554417B14AEE7CF2D5141CDCCCC1C3A755441CDCCCCACC32D5141666666A6357554417B14AE97BC2D51413D0AD7E33B755441AE47E17ABA2D514114AE47D142755441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE5F4AEAD12D51412D60DC10547554419F0E23ADCF2D5141C3DDE54357755441FF45C2C4CD2D5141B29B27B35A755441C56F6CA3CA2D5141ED5E7CF46575544198597377C72D51411732CE5F70755441D75DCD5EC62D51412990E80074755441F53D7B07CD2D5141226BD1E475755441EEE874D3D42D5141CB8B6375787554410F3837E5D82D5141E83359227A7554411EF4497ADD2D5141012592E97B7554410265C764E32D514109831B347E755441046578B3ED2D5141BE03F8408275544146C6029BF32D5141E759757E847554417F23675FF62D514113C1C47C85755441D8E2F4CCF82D5141099C8ECB85755441AAAE45FCF92D5141EE84CB7C83755441238856C2FC2D51414C3E204D7A75544180FC87EDFF2D51419E8573A171755441F084AFF2022E514193663D026B7554413BD0AC76032E5141F6DD22D269755441604A79C5022E5141BD64DDF168755441002AE2ABEE2D51414234AB3A60755441B79433B0DC2D5141F48B736E58755441707E032DD62D5141C661899B55755441EE5F4AEAD12D51412D60DC1054755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>250078 - 3801200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E17ABA2D514114AE47D142755441EC51B82EB82D5141D7A3705D4A755441A4703D9ABE2D5141A4703D8A4C7554419A9999D9C42D5141CDCCCCCC4E755441E17A143ECC2D51413D0AD7835175544152B81EB5D12D5141AE47E1AA53755441B81E85CBCD2D51418FC2F5985A75544114AE47E1CC2D514148E17A245E755441B81E85ABC92D514148E17A5469755441E17A142EC82D5141333333036E7554417B14AE57C62D5141A4703DDA737554417B14AED7CC2D51419A9999B9757554417B14AEA7D22D5141666666667775544185EB5188D72D51415C8FC24579755441F6285C0FDE2D5141000000707C75544185EB5108E92D5141B81E857B80755441CDCCCC5CF62D5141A4703D8A8575544148E17AC4F82D5141713D0AD78575544152B81E15FA2D5141CDCCCC4C83755441F6285CAFFB2D51415C8FC2E57D755441333333C3FC2D5141A4703D4A7A755441C3F528CCFF2D5141A4703DEA71755441AE47E1AA022E51417B14AEA76B755441AE47E1DA042E5141D7A3709D667554415C8FC215082E5141E17A140E617554410AD7A3500D2E5141A4703D4A587554410AD7A3600D2E51419A9999B95675544152B81E550C2E5141333333B355755441EC51B89E022E5141C3F528DC50755441D7A370DDF42D51415C8FC2A54A75544148E17A04EA2D5141D7A3701D45755441B81E852BDD2D5141333333C33E755441000000C0D52D51419A9999E93B7554417B14AEE7CF2D5141CDCCCC1C3A755441CDCCCCACC32D5141666666A6357554417B14AE97BC2D51413D0AD7E33B755441AE47E17ABA2D514114AE47D142755441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE5F4AEAD12D51412D60DC10547554419F0E23ADCF2D5141C3DDE54357755441FF45C2C4CD2D5141B29B27B35A755441C56F6CA3CA2D5141ED5E7CF46575544198597377C72D51411732CE5F70755441D75DCD5EC62D51412990E80074755441F53D7B07CD2D5141226BD1E475755441EEE874D3D42D5141CB8B6375787554410F3837E5D82D5141E83359227A7554411EF4497ADD2D5141012592E97B7554410265C764E32D514109831B347E755441046578B3ED2D5141BE03F8408275544146C6029BF32D5141E759757E847554417F23675FF62D514113C1C47C85755441D8E2F4CCF82D5141099C8ECB85755441AAAE45FCF92D5141EE84CB7C83755441238856C2FC2D51414C3E204D7A75544180FC87EDFF2D51419E8573A171755441F084AFF2022E514193663D026B7554413BD0AC76032E5141F6DD22D269755441604A79C5022E5141BD64DDF168755441002AE2ABEE2D51414234AB3A60755441B79433B0DC2D5141F48B736E58755441707E032DD62D5141C661899B55755441EE5F4AEAD12D51412D60DC1054755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254667 - 1871449
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000200000053000000D7A370EDB29F50418FC2F528E03354417B14AED7BB9F50418FC2F5D8DE3354413D0AD7E3C19F5041E17A14CEDD335441A4703DDAC79F5041D7A3703DDC335441295C8F22CC9F5041000000F0DA33544152B81EF5D29F504166666656D9335441EC51B89ED79F5041CDCCCCBCD7335441295C8F42DB9F50418FC2F528D63354411F85EB71DE9F504114AE47E1D33354411F85EBA1E29F50411F85EB71D03354419A999909E69F50419A9999B9CC33544133333373E69F50411F85EB31CD335441713D0A47F29F5041CDCCCCACDA335441295C8F12FD9F504185EB5158DF3354419A9999F907A050413D0AD7A3E1335441F6285C7F19A050410AD7A3E0E23354413D0AD7A31BA05041B81E85BBEB335441295C8FC221A05041E17A146EE93354413D0AD7F32CA050413D0AD703E6335441EC51B85E36A05041295C8F62E33354410AD7A3803DA05041F6285C4FE23354418FC2F55845A0504114AE4761E233544185EB515845A050418FC2F528DE3354417B14AE5745A05041AE47E1AAD73354419A99995945A050415C8FC255CF3354418FC2F5B83FA050411F85EB51CE335441000000003AA05041D7A3707DCD3354416666664635A050418FC2F5E8CC335441F6285CFF31A05041E17A14BECC335441295C8F822FA05041E17A14DECC335441EC51B85E2AA05041295C8F72CD335441C3F5289C23A05041C3F5283CCE33544185EB51681AA050415C8FC245CF3354413D0AD76315A0504100000090CF3354417B14AE2712A05041AE47E15ACF335441AE47E1CA0FA05041B81E85FBCE3354419A9999590CA05041713D0A07CE335441333333F308A050418FC2F5C8CC335441C3F5280C06A050415C8FC235CB33544148E17AC403A05041D7A3706DC93354411F85EB9101A050410AD7A3D0C63354419A9999A9FF9F50413D0AD753C43354418FC2F56800A05041EC51B8FEC333544114AE473102A050410AD7A370C63354413D0AD76304A0504185EB51F8C833544114AE47A106A05041666666B6CA3354413333335309A0504148E17A34CC3354419A9999990CA0504185EB5168CD33544152B81EF50FA05041C3F5285CCE3354417B14AE4712A0504114AE47B1CE335441E17A146E15A05041B81E85DBCE33544185EB51681AA05041666666A6CE3354411F85EBB123A05041D7A3709DCD335441EC51B85E2AA05041E17A14DECC335441295C8F822FA05041EC51B83ECC335441F6285C1F32A05041F6285C1FCC3354415C8FC26535A05041EC51B83ECC335441AE47E12A3AA05041E17A14DECC335441E17A14EE3FA05041295C8FB2CD3354419A99995945A050413D0AD793CE3354419A99995945A050417B14AED7CC335441AE47E19A30A05041C3F5283CCA335441C3F5282C12A050411F85EB01C63354413D0AD7D305A050417B14AE87C3335441A4703D0A03A05041295C8F42C23354413333333300A05041B81E85EBBF3354410AD7A390FF9F50415C8FC265BF335441AE47E11AF69F5041A4703D9AB73354417B14AE67F59F50419A999929B7335441713D0A87E79F50415C8FC2F5A9335441F6285C4FDA9F504185EB51E8A03354410AD7A340D69F50419A9999C99A3354415C8FC275D59F504185EB51389C3354415C8FC275D59F5041F6285C1F9E33544185EB51C8D49F504148E17A149E33544185EB51C8D49F5041C3F528EC9B335441F6285CCFD39F504185EB51389C335441EC51B88ED39F5041B81E85AB9B3354418FC2F508D59F504185EB51E89A3354410AD7A3B0D59F5041000000F099335441CDCCCC9CC19F50410AD7A3009E33544152B81ED5AA9F50410AD7A360E1335441D7A370EDB29F50418FC2F528E03354410500000033333303C89F5041E17A142E9F335441C3F5286CCA9F5041EC51B8FE9D335441713D0AE7CB9F50419A9999E9A03354413D0AD793C99F50413D0AD723A233544133333303C89F5041E17A142E9F335441
+</a>
+
+<b>
+01060000000100000001030000000200000007010000AAF840043CA0504172265BABCB3354419A99995945A050417B14AED7CC3354414C17705945A05041FD10E709D03354413552A57745A0504198761E69E23354416A57F87D45A05041050FBC6AE23354411F85EBC14BA0504148E17A04E4335441A4703D6A4FA05041A4703D9AE53354410AD7A33055A050415C8FC295E7335441713D0AE758A0504185EB5198E93354415C8FC23560A05041666666D6EB3354419A99994969A05041A4703D6AEB335441EC51B87E6DA05041A4703DCAEE3354418FC2F5286FA050413D0AD7A3F0335441AE47E1AA6FA050413D0AD733F1335441E17A146E70A05041CDCCCC0CF2335441AE47E12A79A050417B14AEB7F9335441AE47E18A82A050413D0AD75302345441B81E856B87A05041295C8F02FE33544148E17A448AA05041295C8F42FC3354419A9999598EA05041D7A3705DF83354410AD7A3D08FA0504166666686F5335441CDCCCCAC8FA050417B14AE77F3335441C3F5286C90A050415C8FC2B5F13354418FC2F54890A050417B14AEC7EF3354411F85EB3190A05041C3F5282CEE3354411F85EB818EA0504185EB5128EC335441A4703D2A8CA0504152B81E65EB335441EC51B89E8BA05041D7A3700DE93354410AD7A3908BA0504114AE4741E7335441C3F5286C8AA050411F85EBB1E433544114AE479189A050417B14AE07E23354417B14AEB788A0504185EB51C8DE335441D7A3703D83A0504100000020D9335441F6285C1F83A05041713D0A27D6335441295C8F5284A05041EC51B8AED4335441A4703D1A84A05041666666C6D2335441A4703D8A84A050417B14AE77D133544185EB512884A050411F85EB81CF33544152B81E9583A050411F85EB91CF3354415C8FC2D581A0504114AE47A1CD335441333333F37FA0504185EB51F8CB3354410AD7A3407FA050417B14AE67CB335441295C8F627EA050418FC2F5D8C6335441B81E851B81A0504148E17AD4C4335441AE47E1AA83A0504166666616C333544148E17A3484A050413D0AD743C1335441EC51B82E84A0504114AE47D1BE335441C3F5284C84A05041E17A14CEBD3354415C8FC26585A05041E17A14EEBC335441CDCCCC6C83A0504152B81E75B83354413D0AD7E381A05041AE47E1CAB2335441EC51B86E81A050418FC2F5F8B1335441A4703D0A83A0504133333313AA33544185EB512883A050415C8FC235A93354411F85EBF184A050419A999979A03354413D0AD71384A050411F85EBC19F335441000000F082A05041295C8F129F335441F6285CAF83A050411F85EBB19D3354416666667685A05041666666C69A335441295C8F6287A050411F85EB9199335441AE47E16A88A0504166666646983354413D0AD75388A0504152B81E859633544114AE472189A050410000008094335441E17A141E89A0504114AE4731933354413D0AD70389A05041CDCCCC1C8F335441AE47E1EA89A05041713D0A278D335441713D0A9787A05041D7A3708D873354410AD7A31085A05041295C8FF287335441295C8F327EA05041D7A3701D8933544152B81E0576A05041295C8F828933544114AE479174A050415C8FC2D57F3354413333339370A050413D0AD7B3823354411F85EBF16FA0504152B81E1582335441000000206DA05041A4703D0A82335441713D0A8766A0504114AE4701823354410000002060A05041CDCCCCAC80335441CDCCCC3C5AA05041713D0A377E3354418FC2F51859A05041666666267933544114AE47F157A05041B81E85CB773354415C8FC24556A050418FC2F5E8763354419A99994953A05041AE47E1DA75335441EC51B80E48A050416666663674335441D7A370BD47A050410AD7A350793354410000009047A05041F6285CCF7A3354413D0AD77348A05041A4703DAA7C3354416666661649A0504185EB5128813354411F85EBD149A050411F85EB6186335441CDCCCCAC4BA050410AD7A3B094335441EC51B86E52A050411F85EB01943354413D0AD76353A05041C3F528CC9C33544114AE47E155A050413D0AD7239F335441EC51B8AE53A05041295C8F82A23354410000000053A050417B14AE57A5335441EC51B83E55A05041E17A147EA93354419A9999A956A05041C3F528DCAA335441F6285C3F57A0504152B81E15AC33544152B81EF558A05041CDCCCC4CAB335441CDCCCC4C5BA05041000000F0AD33544114AE47B15BA05041E17A144EAF3354417B14AE275BA0504114AE47D1B0335441CDCCCCBC59A050419A999999B13354415C8FC2F55AA05041F6285C6FB6335441F6285C7F5BA05041AE47E1BAB8335441C3F528FC5BA05041F6285CAFBC3354413D0AD7535CA0504185EB5178C1335441EC51B89E5CA050413D0AD7C3C333544114AE47415DA05041C3F5281CC63354419A9999795EA05041E17A14DEC7335441295C8F2260A0504148E17AE4C83354413333332362A0504185EB5148C933544152B81E7565A0504152B81E55C93354418FC2F5E86FA0504152B81E55C933544114AE47D175A050418FC2F5B8C9335441F6285C4F7AA0504148E17A74CA3354418FC2F5687CA05041713D0A17CB335441B81E851B7EA05041F6285C2FCC33544114AE47217FA05041B81E85EBCD335441D7A3705D7EA05041E17A146ECE335441000000B07DA0504133333313CD335441666666467CA0504100000000CC335441EC51B82E7AA050410AD7A360CB335441F6285C9F76A050411F85EBC1CA3354415C8FC2E56FA05041295C8F22CA3354410000008065A0504114AE4731CA335441000000F061A0504114AE4731CA3354418FC2F5D85FA05041B81E85CBC9335441EC51B8DE5DA05041D7A3708DC83354419A9999495CA0504114AE47A1C6335441A4703DAA5BA05041000000C0C333544185EB51C858A0504148E17A84C633544148E17A9456A05041E17A14EEC73354417B14AE1754A0504185EB5158C9335441E17A147E51A05041EC51B80ECC33544185EB51584FA05041713D0A17CE33544148E17A244DA050413D0AD763CF335441F6285C8F4BA050417B14AED7CF3354419A99996949A050411F85EB11D0335441241D31C845A05041B9FC0963CF335441A09A3FF945A0504108F2A296CE335441CDCCCC5C49A05041295C8F42CF3354419A9999094BA05041295C8F32CF335441666666A64CA050413D0AD7C3CE3354411F85EBA14EA050415C8FC2B5CD335441E17A14CE50A050419A9999B9CB33544185EB518853A05041F6285CEFC83354413333331356A0504133333313C7335441D7A3703D59A05041713D0AE7C43354419A9999E95AA05041AE47E10AC333544185EB51885BA05041F6285CCFC03354419A9999195BA050418FC2F518BC335441A4703D8A5AA0504100000050B8335441C3F5289C59A05041713D0AB7B4335441EC51B88E58A05041E17A146EB13354410AD7A37057A05041EC51B8EEB0335441713D0A3754A05041C3F5281CB233544114AE47114FA05041713D0AD7B433544152B81E054DA05041713D0AB7B4335441000000B047A0504100000060B0335441713D0AF743A050410AD7A300B0335441713D0A2744A0504185EB5148AC3354419A9999C942A0504185EB5148AC335441F6285CFF3FA050418FC2F5E8AB33544152B81E253DA05041A4703D2AAB335441B81E85EB39A05041B81E858BAA3354410000009037A05041B81E857BAA335441295C8F3236A05041713D0AB7AC3354413D0AD79335A0504114AE47A1AF335441E17A144E30A05041E17A146EB133544114AE47E126A05041B81E859BB23354411F85EB6126A05041E17A143EB1335441295C8F322EA05041333333D3AE33544152B81E0535A05041713D0AB7AC3354411F85EB9136A05041C3F5281CAA335441A4703D4A3AA05041CDCCCCDCA93354415C8FC2953CA05041B81E856BAA335441666666D641A050418FC2F578AB3354417B14AED743A050419A999969AB3354415C8FC2B544A05041CDCCCCFCA933544148E17A5445A05041295C8F22A73354411F85EBB146A050415C8FC275A5335441713D0A174CA050418FC2F598A33354417417367F4BA05041E3124BE1A2335441C402442F4BA050411800CF95A233544152B81ED54AA05041EC51B8BEA2335441B81E85EB42A05041A4703D9AA3335441CDCCCC0C3FA0504152B81E85A3335441000000003CA050419A999919A3335441EC51B80E3AA050413D0AD783A23354410000008038A05041333333C3A133544152B81EE535A050411F85EB419F335441A749216C33A050414E17B9169D33544122697F0731A050415516E49A9B3354414A988C702DA05041955F0CEE99335441B110C22C28A05041FD7F3F059933544152B81E5524A0504185EB51189A3354418FC2F56823A05041713D0AA79933544148E17AC421A0504114AE47E199335441713D0AE720A05041B81E850B9C3354418FC2F5A80FA05041B81E853B9C335441666666D60CA050410AD7A3209C335441295C8F920BA05041333333839B3354413D0AD7A30AA0504114AE47919A335441CDCCCC7C09A05041000000C09A3354417B14AEF708A0504148E17AD499335441000000E005A050418FC2F5789A335441CD64CFF204A050412FCB11509A3354410AD7A38003A0504148E17A249A33544185EB516802A050413D0AD7039A335441C3F5286C00A0504185EB51189A3354415C8FC285FF9F50417B14AEB799335441669AF488FE9F5041D94E88A49933544132C3E9C4FD9F5041D94E88A499335441EAD29892FC9F5041F0F3068C99335441C713FFC0FA9F50415688012A9933544196C82C76F99F5041283E045B9933544158D8DB43F89F5041BC1CFCC7983354417B14AE07F59F50417B14AEA797335441333333A3F29F5041713D0AE797335441713D0A87F19F5041295C8F329733544154A126FCEF9F50414055A0D196335441F60B57E2EE9F504157FA1EB996335441B51A3134EC9F50414DE1D84A963354416010C517E99F50410F0ACE8695335441A4703DFAE69F504185EB51889433544100000030E19F504114AE47B194335441F6285CDFDE9F504114AE47B1943354417B14AE97DD9F5041B81E85BB943354413D0AD783DC9F50418FC2F5F89433544148E17A84DB9F50418FC2F5689533544148E17A84DA9F5041CDCCCC0C96335441B81E857BD89F5041333333E397335441D7A370CDD79F50413D0AD7C398335441A352124DD69F5041066645C19A3354412F0E7C68D69F504135CE5B059B335441DFC20CABD69F50411D67C8699B335441565554F8D79F504172BD99609D335441578284E2D99F5041F878483BA033544181C89B0BDA9F5041F68CC578A033544167796289DA9F50411A74D90AA1335441C6E0BBCCDC9F5041AC0B3F97A233544109477BACE69F5041CC00C258A9335441E1E2307EE79F5041300CB3EFA9335441FF9D1E0EE89F5041CC09066AAA335441D87C576BE99F5041D4BAC0C5AB3354410525379BE99F5041D5EA0CF0AB3354416FBDE0E2EA9F50418585C627AD335441D44A3C01F69F5041DFBD2787B73354414EC9D10203A050410427723CC2335441381BDE5403A050417D8C8F64C2335441728AD0D805A050418CBC8B89C33354410B01F3B711A050417B0B99EAC533544143371C9713A05041FA869633C63354414EF314CF13A05041EB351D3CC63354416655D5D415A05041D07A0984C6335441255CD4E41BA05041278AA15BC73354414D9DAB1A23A050411A4C0B5CC8335441E2508F3123A05041B34A395FC8335441EFE9FD1F2BA050414A7A4779C9335441A4EC70592BA05041BA7C4281C93354414D327C652BA05041FECBEE82C93354419165F04930A05041198AEA30CA335441C2B642AC36A050415FB268FFCA335441AAF840043CA0504172265BABCB3354410C000000FB147015F79F5041AF0F827DB6335441518AB1BFF69F5041AEEF430FB6335441F9A491B9F69F5041A3CF05A1B5335441D4FFE8B5F89F50418F2FCA9FB4335441AF7A7E20FB9F504166BFF01DB33354412970B883FC9F504112CAB1E0B23354410FBBEB6EFF9F5041ECF9183AB13354419130236501A05041DD399AF0B0335441A720FF5302A050413ADF3840B1335441B2154D1FFF9F5041FDF91360B233544157955E1AFB9F5041303A8B62B4335441FB147015F79F5041AF0F827DB6335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259069 - 303376
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+01060000000100000001030000000100000058000000666666D6323C51418FC2F578E687544185EB51C82F3C5141D7A3709DE6875441AE47E1BA2C3C5141F6285C7FE78754418FC2F5282A3C5141713D0A77E8875441333333B3283C51410AD7A360EA875441AE47E11A283C5141000000A0EB87544114AE47D1273C5141F6285CCFEC8754410AD7A330283C5141D7A3700DEE8754418FC2F5B8293C5141CDCCCC2CF0875441C3F5289C2A3C51410AD7A370F28754419A9999B92B3C5141F6285CAFF387544185EB51482D3C5141B81E85ABF4875441E17A145E2E3C5141A4703DEAF4875441AE47E14A2F3C514152B81E75F5875441E17A142E343C5141D7A3708DFB875441295C8F823C3C51419A9999190288544148E17A843F3C51417B14AE67FF875441713D0A07423C51415C8FC2C5FF8754410AD7A350463C5141B81E857B04885441713D0AC7483C5141F6285C0F07885441EC51B85E4C3C51419A999989058854410AD7A350503C51417B14AEA7058854418FC2F5E8533C51415C8FC2B5068854418FC2F598583C5141D7A370AD09885441AE47E10A643C51419A9999690C885441295C8F12663C5141B81E85CB0E885441EC51B8BE693C51419A9999E90E8854418FC2F5D86D3C51417B14AE670E885441E17A148E703C514185EB51E80A88544148E17AF4743C51419A9999E90488544148E17AD47B3C51417B14AE17098854410AD7A3D07F3C51419A9999B9028854410AD7A350823C51411F85EB81FE875441AE47E1CA853C51415C8FC2B5F7875441EC51B8DE853C51417B14AEC7F4875441B81E851B843C51417B14AEF7EF875441CDCCCCEC813C51411F85EBE1E9875441713D0A977D3C51415C8FC295E08754418FC2F5F87A3C51417B14AEA7D8875441713D0A97783C5141F6285CEFD1875441AE47E10A783C51411F85EB01CF875441AE47E15A783C51415C8FC245CC87544148E17AA4793C5141B81E855BCA87544148E17A147D3C51413D0AD7A3C88754418FC2F5B87E3C5141F6285C5FC6875441AE47E15A7A3C5141F6285C5FC2875441E17A14AE783C5141666666D6C0875441000000306E3C5141B81E853BB78754417B14AE37533C51413D0AD783A2875441CDCCCCBC523C51411F85EBC1A087544185EB51684D3C5141D7A370ED9E87544185EB5128453C5141295C8F629C875441295C8F423B3C51411F85EB819A875441EC51B8CE363C51411F85EBF198875441713D0AF7363C51417B14AEB79B875441713D0AE72D3C51415C8FC2859B875441EC51B80E243C5141D7A3709D9C875441333333F31D3C5141A4703D7A9E875441AE47E1DA1B3C5141E17A149EA0875441D7A3703D1A3C514148E17A24A68754413D0AD7E3173C5141CDCCCC7CAC875441666666761C3C514100000050AE875441295C8F02213C5141295C8F52AF875441A4703D7A233C514133333343AF8754415C8FC275243C5141E17A143EAF875441000000D02D3C514148E17A34AE87544148E17A24323C5141D7A3705DAE8754415C8FC265353C5141CDCCCC5CAF8754415C8FC285373C5141713D0A17B1875441295C8F72393C514133333373B4875441A4703D4A3E3C5141A4703DDAC0875441CDCCCC0C413C51417B14AE47C887544148E17A54403C51418FC2F538C9875441666666A63E3C5141C3F5286CCB875441F6285C0F403C514148E17AF4CE875441EC51B8BE3A3C51418FC2F5F8D48754418FC2F5A83E3C5141713D0A07DD8754415C8FC2953F3C51418FC2F538E0875441D7A3703D3B3C514100000010E2875441D7A3709D3A3C514114AE47F1E38754419A999949363C5141666666F6E2875441AE47E18A343C5141D7A3709DE3875441EC51B89E343C5141B81E854BE587544100000050373C51411F85EB31E6875441295C8FA2393C5141C3F5287CE6875441713D0A27393C51415C8FC205E987544133333383383C5141AE47E1CAE8875441666666D6323C51418FC2F578E6875441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C7FD5CF7173C5141D6541648AC87544171F917011C3C5141A4192E21AE875441F7F3CD1B213C51410337F251AF875441A4703D7A233C514133333343AF8754415C8FC275243C5141E17A143EAF875441E9AF1FCB273C5141C8829BBEAE8754413488AC7C283C5141592524F1AC875441E3F613E82A3C51411964621DAD87544108E8FEFA2C3C51411964621DAD875441BD7048C1313C51415103FCE0AC875441F23C47E9343C5141FF01A736AF8754415C8FC265353C5141CDCCCC5CAF8754415C8FC285373C5141713D0A17B1875441295C8F72393C514133333373B487544104C83C4B3B3C5141E382CF2DB98754413E01B9233D3C51417FD1EDE7BD87544165EB51B33E3C5141DF0AB2C7C08754417A06A497533C5141B11DE7FAA2875441B20A3E95533C5141DE0353D3A2875441704F4692533C5141B1936EC9A28754417B14AE37533C51413D0AD783A2875441281651DB523C5141AC54F157A1875441672BEBBF523C51414814BDE8A08754415B2B94AC523C5141D9FE1DCAA0875441AB3B3BB64E3C51413FC215609F87544185EB51684D3C5141D7A370ED9E87544132B7B18B453C514147712F819C87544178216564453C5141905D90769C8754413F161958373C5141B691CBE999875441EE892811373C5141EA675FDA9B875441587E643E363C514128F7B4B39B875441E5F4B3D8333C51415C8280A69B875441CFF87CB3303C5141950D2D959B8754410F31B7F52A3C51416C3F5BD99B875441EC51B80E243C5141D7A3709D9C875441504D4DCF233C51416A8EC7B09C875441C0C1C746213C5141FA4F8C769D87544184AC3AF31D3C51412C293B7A9E875441DC1536021C3C51414B66E775A087544113DB95481A3C5141F2E059FEA5875441D7A3703D1A3C514148E17A24A6875441C7FD5CF7173C5141D6541648AC875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262138 - 207329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE47E17C6D51410AD7A390503B544114AE47F1896D51417B14AE275E3B54415C8FC2358A6D51419A9999895E3B5441333333E39F6D5141C3F5286C753B5441C3F5289CAF6D51418FC2F548853B5441F6285C1FB06D514148E17AE4853B544166666656B06D51415C8FC225863B5441CDCCCC6CB36D5141EC51B8EE833B5441D7A370BDB66D51413D0AD783813B5441F6285C7FB66D5141295C8F42813B544152B81E35B06D514152B81ED5853B5441CDCCCCACAF6D5141CDCCCC3C853B5441CDCCCCECB56D51417B14AEB7803B54417B14AEC7906D5141CDCCCC9C583B5441D7A3707D906D51411F85EB31583B5441000000C0856D5141000000704C3B544114AE47E17C6D51410AD7A390503B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000014AE47F1896D51417B14AE275E3B544176C0B5358A6D51410A4987895E3B5441C7C36B3A8A6D51410F45858E5E3B54418B95C5BB906D51416B04A88B583B544199F8806D906D5141824EF62D583B54415E5026AF8F6D514124FB1550573B544101775E938F6D5141425CAC31573B54413549A4F78E6D5141BA493187563B54415D37E25E8D6D5141A980B5C7543B5441BA1B166D896D5141F8843E76503B544147B9477F876D5141C3B9A7594E3B5441F401FDBF856D5141E2CE01704C3B544121B5C3F4806D51414F18DCE64E3B5441499BCF5F7E6D5141376642604F3B544114AE47E17C6D51410AD7A390503B544114AE47F1896D51417B14AE275E3B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262138 - 355829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE47E17C6D51410AD7A390503B544114AE47F1896D51417B14AE275E3B54415C8FC2358A6D51419A9999895E3B5441333333E39F6D5141C3F5286C753B5441C3F5289CAF6D51418FC2F548853B5441F6285C1FB06D514148E17AE4853B544166666656B06D51415C8FC225863B5441CDCCCC6CB36D5141EC51B8EE833B5441D7A370BDB66D51413D0AD783813B5441F6285C7FB66D5141295C8F42813B544152B81E35B06D514152B81ED5853B5441CDCCCCACAF6D5141CDCCCC3C853B5441CDCCCCECB56D51417B14AEB7803B54417B14AEC7906D5141CDCCCC9C583B5441D7A3707D906D51411F85EB31583B5441000000C0856D5141000000704C3B544114AE47E17C6D51410AD7A390503B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000014AE47F1896D51417B14AE275E3B544176C0B5358A6D51410A4987895E3B5441C7C36B3A8A6D51410F45858E5E3B54418B95C5BB906D51416B04A88B583B544199F8806D906D5141824EF62D583B54415E5026AF8F6D514124FB1550573B544101775E938F6D5141425CAC31573B54413549A4F78E6D5141BA493187563B54415D37E25E8D6D5141A980B5C7543B5441BA1B166D896D5141F8843E76503B544147B9477F876D5141C3B9A7594E3B5441F401FDBF856D5141E2CE01704C3B544121B5C3F4806D51414F18DCE64E3B5441499BCF5F7E6D5141376642604F3B544114AE47E17C6D51410AD7A390503B544114AE47F1896D51417B14AE275E3B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263819 - 142822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -31  </desc>
+<a>
+0106000000010000000103000000010000000E000000C3F5286CE217514148E17AD4E9865441C3F528CCD8175141A4703D9AEA8654415C8FC205D1175141AE47E1FAEA8654415C8FC2D5CB175141713D0AD7EA865441F6285C6FCA1751417B14AEA7EB86544185EB5148C617514185EB5198EE865441666666E6C6175141EC51B85EF5865441C3F5281CD51751417B14AED7F3865441B81E85EBE517514114AE4751F186544166666606F91751411F85EBC1EF865441CDCCCC6CFA1751413D0AD763EF86544148E17AF4F31751419A9999D9E786544148E17AF4ED1751418FC2F5C8E8865441C3F5286CE217514148E17AD4E9865441
+</a>
+
+<b>
+010600000001000000010300000001000000160000001A84A559F6175141C7D42BA4EA86544148E17AF4F31751419A9999D9E786544148E17AF4ED1751418FC2F5C8E8865441C3F5286CE217514148E17AD4E98654419E557252DF17514188AD6515EA865441AD377131DF175141E007D516EA865441C3F528CCD8175141A4703D9AEA8654415C8FC205D1175141AE47E1FAEA8654415C8FC2D5CB175141713D0AD7EA865441D15515DACA175141C5408D69EB865441D2A8A1D9C8175141383863CBEC865441A0D7B949C61751416EDDBEA7EE86544124284D61C6175141864868AAEF8654412BA15774C61751413957517BF0865441452975E4C6175141FBC86849F58654413B31E690C71751418BC12524F58654415B22B267D01751416C0EA347F4865441C1CE82AFDA17514106B94701F3865441B81E85EBE517514114AE4751F1865441F9A24BEEF81751413B63E3C3EF86544128065B6CFA175141AB725263EF8654411A84A559F6175141C7D42BA4EA865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264367 - 3107727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A14D318514152B81E75478454417B14AE07D318514148E17AB44D845441C3F528BCD2185141C3F528FC5084544185EB51A8D218514148E17AD451845441AE47E10AD218514152B81EA558845441713D0A77D1185141F6285C3F6284544100000080D11851418FC2F588668454411F85EB81D61851413D0AD7B36A84544152B81EE5DC185141F6285C3F6D84544166666626E4185141AE47E1FA6E845441D7A370BDEB185141666666E66F84544148E17A44EC185141EC51B8DE6B84544148E17A54ED1851410000004062845441CDCCCC4CE618514148E17A9462845441B81E85BBDE185141666666B662845441C3F5280CDF185141333333D360845441A4703D9ADF185141F6285C7F5D8454413D0AD713E01851419A9999B9598454417B14AE47E11851418FC2F52850845441CDCCCCECE118514152B81E054A845441B81E851BE218514114AE47D143845441E17A14AEDB18514185EB51A84584544148E17A14D318514152B81E7547845441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C316687BD1185141C394D459648454412327F67BD118514123B386ED61845441EBF3F3BDD118514146913DA45D84544195BD66A8D21851416ADE97D3518454418290C90AD31851410A1837304C845441C5806312D3185141C2431A4E47845441C340B354D218514186E782FB3D845441C203DF73C6185141ECED50C840845441EF852A3AC6185141C6D7F65550845441EA710D4DC8185141E6D3E3FE5D845441C316687BD1185141C394D45964845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264367 - 3482630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A14D318514152B81E75478454417B14AE07D318514148E17AB44D845441C3F528BCD2185141C3F528FC5084544185EB51A8D218514148E17AD451845441AE47E10AD218514152B81EA558845441713D0A77D1185141F6285C3F6284544100000080D11851418FC2F588668454411F85EB81D61851413D0AD7B36A84544152B81EE5DC185141F6285C3F6D84544166666626E4185141AE47E1FA6E845441D7A370BDEB185141666666E66F84544148E17A44EC185141EC51B8DE6B84544148E17A54ED1851410000004062845441CDCCCC4CE618514148E17A9462845441B81E85BBDE185141666666B662845441C3F5280CDF185141333333D360845441A4703D9ADF185141F6285C7F5D8454413D0AD713E01851419A9999B9598454417B14AE47E11851418FC2F52850845441CDCCCCECE118514152B81E054A845441B81E851BE218514114AE47D143845441E17A14AEDB18514185EB51A84584544148E17A14D318514152B81E7547845441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C316687BD1185141C394D459648454412327F67BD118514123B386ED61845441EBF3F3BDD118514146913DA45D84544195BD66A8D21851416ADE97D3518454418290C90AD31851410A1837304C845441C5806312D3185141C2431A4E47845441C340B354D218514186E782FB3D845441C203DF73C6185141ECED50C840845441EF852A3AC6185141C6D7F65550845441EA710D4DC8185141E6D3E3FE5D845441C316687BD1185141C394D45964845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269232 - 3075369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04A4985141000000F05193544152B81EB59C9851413D0AD763489354410000004093985141E17A149E439354410AD7A37089985141CDCCCC0C3E935441A4703D0A809851417B14AED739935441CDCCCC2C7C98514114AE47D1389354417B14AE4774985141713D0A8738935441A4703D5A78985141B81E851B4C935441C3F528AC80985141C3F5281C74935441C3F528AC89985141EC51B8FE7493544152B81E658C98514114AE47417593544185EB51988D985141F6285CCF7293544185EB5128909851411F85EB2171935441D7A3706D93985141EC51B8CE6F935441713D0A7798985141666666466F935441D7A3702D9C985141CDCCCC6C70935441D7A370DDA3985141F6285CDF73935441E17A143EAB9851411F85EB717893544148E17A04A4985141000000F051935441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000C5977B7D91985141DC66AE97709354414EA2A280939851411FE0B0CC6F9354410805C02E9798514178441A696F935441897CF57B989851413878EC476F9354412F53F8279C9851414A081B6B70935441ED7987789D985141195947017193544104BFD208A0985141D0E3982772935441B18176F9A19851412963510673935441892B24D2A39851413E044BDA7393544145CDE579A49851418BB4544074935441905394F5A5985141875EA72B759354410A25FB38A898514157D5C292769354419FD27EE4A99851417AEBBA9B77935441E17A143EAB9851411F85EB7178935441AA1A5A21AB985141667ACED877935441BF82432CA4985141689D09C45293544159360105A498514166F5CBF2519354416B6CA753A29851411DFCB0BA4F9354415AE0CF579D985141127C5438499354416DED18B89C985141B68CBA6748935441E1EF9E7E979851412FC66AC24593544156715C41939851413050C49E43935441BD6742FE8F985141EB92E7C441935441AD972FF18B985141FABD54783F935441BA3CA75389985141744AD3FF3D935441E1654DC0869851414A17B2D83C9354415073B9E286985141668860A93D935441B44A72FC8D985141B98A26BB60935441D09AED3791985141B6511AB270935441C5977B7D91985141DC66AE9770935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269232 - 3376497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04A4985141000000F05193544152B81EB59C9851413D0AD763489354410000004093985141E17A149E439354410AD7A37089985141CDCCCC0C3E935441A4703D0A809851417B14AED739935441CDCCCC2C7C98514114AE47D1389354417B14AE4774985141713D0A8738935441A4703D5A78985141B81E851B4C935441C3F528AC80985141C3F5281C74935441C3F528AC89985141EC51B8FE7493544152B81E658C98514114AE47417593544185EB51988D985141F6285CCF7293544185EB5128909851411F85EB2171935441D7A3706D93985141EC51B8CE6F935441713D0A7798985141666666466F935441D7A3702D9C985141CDCCCC6C70935441D7A370DDA3985141F6285CDF73935441E17A143EAB9851411F85EB717893544148E17A04A4985141000000F051935441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000C5977B7D91985141DC66AE97709354414EA2A280939851411FE0B0CC6F9354410805C02E9798514178441A696F935441897CF57B989851413878EC476F9354412F53F8279C9851414A081B6B70935441ED7987789D985141195947017193544104BFD208A0985141D0E3982772935441B18176F9A19851412963510673935441892B24D2A39851413E044BDA7393544145CDE579A49851418BB4544074935441905394F5A5985141875EA72B759354410A25FB38A898514157D5C292769354419FD27EE4A99851417AEBBA9B77935441E17A143EAB9851411F85EB7178935441AA1A5A21AB985141667ACED877935441BF82432CA4985141689D09C45293544159360105A498514166F5CBF2519354416B6CA753A29851411DFCB0BA4F9354415AE0CF579D985141127C5438499354416DED18B89C985141B68CBA6748935441E1EF9E7E979851412FC66AC24593544156715C41939851413050C49E43935441BD6742FE8F985141EB92E7C441935441AD972FF18B985141FABD54783F935441BA3CA75389985141744AD3FF3D935441E1654DC0869851414A17B2D83C9354415073B9E286985141668860A93D935441B44A72FC8D985141B98A26BB60935441D09AED3791985141B6511AB270935441C5977B7D91985141DC66AE9770935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269997 - 55013
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000014000000B81E85DB608F5141A4703DEAD78E5441EC51B80E608F51410AD7A310CB8E5441AE47E14A588F5141A4703D7ACF8E544185EB51D8568F5141CDCCCC4CD08E5441713D0AE7548F5141F6285CDFD18E54410AD7A3C04F8F5141B81E850BD68E54417B14AEF74A8F51413D0AD743DB8E5441295C8F42468F51413D0AD7F3E18E5441AE47E13A448F51415C8FC205E68E544166666646418F51410AD7A3C0ED8E5441295C8FB23D8F514166666666F48E5441EC51B89E3F8F514152B81E25F48E544185EB51184C8F5141666666D6F28E544152B81EB55F8F514148E17A54F28E54411F85EB81608F5141D7A370ADEF8E5441D7A3704D628F5141E17A140EEB8E5441EC51B8EE618F51413D0AD763E28E5441B81E85DB618F5141713D0AA7E18E544166666656618F5141713D0A97DC8E5441B81E85DB608F5141A4703DEAD78E5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000CDCCCC1C408F5141A4703D5ADE8E544193E53E0B408F514199DE0575DE8E54418315E709408F514158C15C78DE8E54416DE2EECD3F8F5141448F91D2DE8E5441EC51B85E3C8F514100000010E48E544129E646733B8F514183D26CBEE48E54415C07E4783A8F51417736A481E58E54413DB79CF0388F5141A2160AB2E78E544185349857338F51411B90CEEAEB8E5441EC2DDDDF2B8F5141846B9054EA8E54418690837C2B8F5141B5D66C0CF08E54412D2073482B8F5141120E8F0BF38E5441BB0B81162B8F514111D0331EF68E5441E6633DFC2D8F51410C49B3E8F78E5441CA008D802E8F5141432D4A39F88E5441D7A3701D318F5141295C8F92F88E5441A4703D4A348F5141295C8F02F88E54419A999989368F5141295C8FD2F68E5441B9E05747388F514122EA7103F58E54411F2EAE50398F514174AE41E4F38E54417583E8923A8F5141732E1C15F38E544152B81E553C8F51419A9999E9F18E5441C05636593C8F5141E8B80EF1F18E54415CCE3C613C8F51414CFEE5EBF18E544176EAB7B83D8F5141C9EFF45AF48E544166666646418F51410AD7A3C0ED8E544110B68CAC438F5141E82B157AE78E5441661AAA3A448F5141150BBAF9E58E5441DF9C0B53468F5141081DF4B8E18E544135E79ABE4A8F5141C9C1EB94DB8E54417B14AEF74A8F51413D0AD743DB8E5441CC3ED51A4B8F5141CEC47D1DDB8E54414EDBBB9C4F8F5141222CD81ED68E5441DE0B0CD6568F5141CB04C845D08E5441E6A9D488578F514179BD80E8CF8E5441DD2ADD3D588F51410BD1A281CF8E5441B2AC19E94F8F514109C1288DCB8E5441D7A3700D4A8F5141EC51B8CEC88E5441CA17C6E4448F51413AFF0875D38E5441FAC7525A428F5141C1F750B7D88E5441E298820B428F5141CDC6487BD98E5441CDCCCC1C408F5141A4703D5ADE8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275046 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275777 - 3142195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DDA792551411F85EBC1203D54410AD7A32079255141C3F5280C1B3D54418FC2F5C8722551413D0AD7031C3D5441AE47E1CA712551418FC2F5A8133D5441E17A145E70255141CDCCCC7C073D54413D0AD70370255141333333B3043D5441F6285CFF6125514148E17A74063D5441AE47E1FA63255141295C8F92163D544152B81EF565255141713D0AA7263D544114AE479173255141EC51B89E223D5441A4703DDA792551411F85EBC1203D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003333333354255141295C8F422A3D5441CDCCCCDC61255141D7A370DD273D54414172F90E66255141522E619F263D544176581296632551416CE9FF5E133D54418113D6E961255141F7A32B77063D54411F85EB313F255141EC51B8CE0A3D5441EC51B84E3E255141CDCCCCEC0B3D5441B81E858B40255141A4703D0A1E3D54417B14AEC74225514185EB5128303D54413333333354255141295C8F422A3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275777 - 3397259
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DDA792551411F85EBC1203D54410AD7A32079255141C3F5280C1B3D54418FC2F5C8722551413D0AD7031C3D5441AE47E1CA712551418FC2F5A8133D5441E17A145E70255141CDCCCC7C073D54413D0AD70370255141333333B3043D5441F6285CFF6125514148E17A74063D5441AE47E1FA63255141295C8F92163D544152B81EF565255141713D0AA7263D544114AE479173255141EC51B89E223D5441A4703DDA792551411F85EBC1203D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003333333354255141295C8F422A3D5441CDCCCCDC61255141D7A370DD273D54414172F90E66255141522E619F263D544176581296632551416CE9FF5E133D54418113D6E961255141F7A32B77063D54411F85EB313F255141EC51B8CE0A3D5441EC51B84E3E255141CDCCCCEC0B3D5441B81E858B40255141A4703D0A1E3D54417B14AEC74225514185EB5128303D54413333333354255141295C8F422A3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276956 - 2933548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC7CC0AD50411F85EBE1B1D15441E17A141EC1AD5041B81E855BAFD15441D7A370BDC4AD5041713D0AE798D154417B14AE67C7AD504152B81E8589D154417B14AE17C3AD504152B81EC586D15441B81E85CBBBAD50413333332386D154413D0AD783BAAD5041F6285CEF85D15441AE47E1BABAAD50419A9999A984D1544166666656B6AD50418FC2F54884D1544114AE4791B6AD50415C8FC2E582D154417B14AEF7BAAD5041713D0A4783D1544114AE4771CCAD504185EB51C884D1544148E17A94D2AD50419A9999895FD1544148E17AB4D6AD50413333338346D15441EC51B88EC9AD5041D7A3709D48D15441F6285CAFBFAD50413D0AD7934BD154417B14AE27B4AD50419A9999094FD154419A999929A8AD5041C3F5286C4ED15441000000C08BAD5041CDCCCC9C54D15441AE47E1EA76AD504185EB518858D154413D0AD72370AD5041333333A381D1544185EB51886EAD504152B81E658BD15441C3F5282C66AD5041B81E851BBED1544152B81E756AAD50413D0AD703BFD1544114AE4761AAAD504148E17AD4CCD154413D0AD793BBAD5041C3F5288CD0D15441CDCCCC7CC0AD50411F85EBE1B1D15441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000B81E85BBBBAD5041F6285C8F63D15441EC51B87EC0AD5041333333E362D15441CC9B6C63C3AD504195E1698561D1544149F31844C6AD5041C6A4598D60D15441A35889E1C7AD5041F8F70A0660D15441CBFA0977CAAD5041C484D6AB5FD1544170D4B30BCFAD50414C8DB36F5FD1544148E17A94D2AD50419A9999895FD1544158507609D3AD50415A80E8C35CD154413781F1F7D3AD5041CB461F1D57D15441411CDF5ED5AD504190EF9F9B4ED15441FFBC46DCD5AD504131EDD5A24BD154418CFCDB7FD6AD5041DC9E6EC247D1544148E17AB4D6AD50413333338346D15441BE8F9C30D5AD5041C0FB39C146D15441757545E9D0AD5041C5A8637047D154418FAF9B73CCAD5041EFBAF52648D15441EC51B88EC9AD5041D7A3709D48D154412CF15929C9AD50418CB9DBBB48D15441F195B294C1AD504168AC33024BD15441F6285CAFBFAD50413D0AD7934BD15441818F5D91BEAD504155B4295B52D154415244FA95BCAD5041A71DEA835ED15441B81E85BBBBAD5041F6285C8F63D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276956 - 3787815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC7CC0AD50411F85EBE1B1D15441E17A141EC1AD5041B81E855BAFD15441D7A370BDC4AD5041713D0AE798D154417B14AE67C7AD504152B81E8589D154417B14AE17C3AD504152B81EC586D15441B81E85CBBBAD50413333332386D154413D0AD783BAAD5041F6285CEF85D15441AE47E1BABAAD50419A9999A984D1544166666656B6AD50418FC2F54884D1544114AE4791B6AD50415C8FC2E582D154417B14AEF7BAAD5041713D0A4783D1544114AE4771CCAD504185EB51C884D1544148E17A94D2AD50419A9999895FD1544148E17AB4D6AD50413333338346D15441EC51B88EC9AD5041D7A3709D48D15441F6285CAFBFAD50413D0AD7934BD154417B14AE27B4AD50419A9999094FD154419A999929A8AD5041C3F5286C4ED15441000000C08BAD5041CDCCCC9C54D15441AE47E1EA76AD504185EB518858D154413D0AD72370AD5041333333A381D1544185EB51886EAD504152B81E658BD15441C3F5282C66AD5041B81E851BBED1544152B81E756AAD50413D0AD703BFD1544114AE4761AAAD504148E17AD4CCD154413D0AD793BBAD5041C3F5288CD0D15441CDCCCC7CC0AD50411F85EBE1B1D15441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000B81E85BBBBAD5041F6285C8F63D15441EC51B87EC0AD5041333333E362D15441CC9B6C63C3AD504195E1698561D1544149F31844C6AD5041C6A4598D60D15441A35889E1C7AD5041F8F70A0660D15441CBFA0977CAAD5041C484D6AB5FD1544170D4B30BCFAD50414C8DB36F5FD1544148E17A94D2AD50419A9999895FD1544158507609D3AD50415A80E8C35CD154413781F1F7D3AD5041CB461F1D57D15441411CDF5ED5AD504190EF9F9B4ED15441FFBC46DCD5AD504131EDD5A24BD154418CFCDB7FD6AD5041DC9E6EC247D1544148E17AB4D6AD50413333338346D15441BE8F9C30D5AD5041C0FB39C146D15441757545E9D0AD5041C5A8637047D154418FAF9B73CCAD5041EFBAF52648D15441EC51B88EC9AD5041D7A3709D48D154412CF15929C9AD50418CB9DBBB48D15441F195B294C1AD504168AC33024BD15441F6285CAFBFAD50413D0AD7934BD15441818F5D91BEAD504155B4295B52D154415244FA95BCAD5041A71DEA835ED15441B81E85BBBBAD5041F6285C8F63D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277031 - 2932220
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B6FAA5041C3F528DC8AD25441713D0AD75AAA5041F6285C1F73D25441295C8F8252AA5041713D0AC769D25441295C8F724FAA504148E17AE46BD25441D7A370FD49AA50416666668674D254415C8FC20548AA50410AD7A37078D254410000006046AA5041D7A3709D7CD25441CDCCCCBC44AA50411F85EB7181D254411F85EB5143AA5041713D0A4786D2544114AE478141AA5041D7A3700D8AD25441AE47E11A3CAA504152B81EF591D254410AD7A39036AA504185EB516899D254419A9999D942AA5041000000A0A9D2544185EB51D851AA50418FC2F5A8BBD25441000000C057AA5041D7A3705DC4D25441AE47E18A5EAA50415C8FC255C0D254419A9999F96BAA5041F6285CDFB7D25441C3F5287C6CAA504152B81E85B6D2544152B81EF568AA50417B14AEA7ACD25441CDCCCC2C60AA5041EC51B89EA1D254417B14AE2760AA50415C8FC2959DD254418FC2F5786CAA5041F6285C3F8ED25441B81E852B6FAA5041C3F528DC8AD25441
+</a>
+
+<b>
+010600000001000000010300000001000000240000000AD7A39036AA504185EB516899D25441239B021F3AAA504197B27D159ED25441D167252B41AA5041E51FEA2A95D254413CDAA9BE45AA5041E070C6DE8ED254414763BC2A47AA50411B92EC1F8CD25441210819B448AA504151A2EA2889D254414FA168EE48AA5041A51B037C88D25441701C85D949AA504182C8DFC585D254414E7310364BAA5041865A63C681D25441D8661CA54BAA5041C7FD27B87FD254415B1E57A24CAA5041684A72377BD254418E295ECC4CAA50415360F6717AD25441FA8A573D4DAA5041B5B3CDB477D25441609206A74DAA50412138E80576D25441091B2DC04EAA504168C7FA0973D254417DE6A31350AA5041510436D46FD25441FBB94E0551AA5041660EB9C56DD2544112AB74A052AA504155E4F2F769D254411F18DB8952AA50416FBEBFCA69D25441C4260FA04FAA5041A7E57AC36BD2544105C2BF744FAA5041415133E46BD2544126F8E37C4BAA504132C4DE2772D25441FC65ECAC49AA5041235B9D2675D2544129D4327248AA5041A17DDD9877D254412798A57E46AA5041EBC8C64F7CD25441541FF24F45AA50418765E5BF7FD25441E6EBFCE144AA504197CB3A0481D25441DF7A82FE43AA50418AF8A6FA83D254416369BD6943AA5041167BC81986D254412C770F2843AA5041D8731A9E86D254416F5B248F41AA50413543B6038AD254412BC9E19640AA50410E9A92648BD25441568B2EC93CAA5041A325F6F590D254417B578C2C3CAA5041C1591ADF91D254413246487F3BAA5041929DA2C892D254410AD7A39036AA504185EB516899D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277031 - 3769154
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B6FAA5041C3F528DC8AD25441713D0AD75AAA5041F6285C1F73D25441295C8F8252AA5041713D0AC769D25441295C8F724FAA504148E17AE46BD25441D7A370FD49AA50416666668674D254415C8FC20548AA50410AD7A37078D254410000006046AA5041D7A3709D7CD25441CDCCCCBC44AA50411F85EB7181D254411F85EB5143AA5041713D0A4786D2544114AE478141AA5041D7A3700D8AD25441AE47E11A3CAA504152B81EF591D254410AD7A39036AA504185EB516899D254419A9999D942AA5041000000A0A9D2544185EB51D851AA50418FC2F5A8BBD25441000000C057AA5041D7A3705DC4D25441AE47E18A5EAA50415C8FC255C0D254419A9999F96BAA5041F6285CDFB7D25441C3F5287C6CAA504152B81E85B6D2544152B81EF568AA50417B14AEA7ACD25441CDCCCC2C60AA5041EC51B89EA1D254417B14AE2760AA50415C8FC2959DD254418FC2F5786CAA5041F6285C3F8ED25441B81E852B6FAA5041C3F528DC8AD25441
+</a>
+
+<b>
+010600000001000000010300000001000000240000000AD7A39036AA504185EB516899D25441239B021F3AAA504197B27D159ED25441D167252B41AA5041E51FEA2A95D254413CDAA9BE45AA5041E070C6DE8ED254414763BC2A47AA50411B92EC1F8CD25441210819B448AA504151A2EA2889D254414FA168EE48AA5041A51B037C88D25441701C85D949AA504182C8DFC585D254414E7310364BAA5041865A63C681D25441D8661CA54BAA5041C7FD27B87FD254415B1E57A24CAA5041684A72377BD254418E295ECC4CAA50415360F6717AD25441FA8A573D4DAA5041B5B3CDB477D25441609206A74DAA50412138E80576D25441091B2DC04EAA504168C7FA0973D254417DE6A31350AA5041510436D46FD25441FBB94E0551AA5041660EB9C56DD2544112AB74A052AA504155E4F2F769D254411F18DB8952AA50416FBEBFCA69D25441C4260FA04FAA5041A7E57AC36BD2544105C2BF744FAA5041415133E46BD2544126F8E37C4BAA504132C4DE2772D25441FC65ECAC49AA5041235B9D2675D2544129D4327248AA5041A17DDD9877D254412798A57E46AA5041EBC8C64F7CD25441541FF24F45AA50418765E5BF7FD25441E6EBFCE144AA504197CB3A0481D25441DF7A82FE43AA50418AF8A6FA83D254416369BD6943AA5041167BC81986D254412C770F2843AA5041D8731A9E86D254416F5B248F41AA50413543B6038AD254412BC9E19640AA50410E9A92648BD25441568B2EC93CAA5041A325F6F590D254417B578C2C3CAA5041C1591ADF91D254413246487F3BAA5041929DA2C892D254410AD7A39036AA504185EB516899D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277181 - 2928641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+01060000000100000001030000000100000012000000000000506BAC5041D7A3700D52CF5441333333A384AC50417B14AE6748CF54417B14AE5799AC50413333331340CF54410AD7A3F096AC504185EB51983BCF54411F85EB6193AC50417B14AE8736CF54417B14AED78EAC50413333333331CF5441713D0A978BAC50411F85EB612DCF54418FC2F5C885AC50417B14AE2726CF54411F85EBC182AC5041A4703DEA21CF5441C3F5286C81AC5041F6285CDF1FCF5441C3F5285C4DAC5041C3F5288C29CF5441B81E858B44AC5041F6285C2F2BCF54410AD7A3B053AC5041333333833CCF5441E17A14CE58AC5041C3F5289C42CF54415C8FC29564AC504152B81E3550CF54413333337366AC5041EC51B8DE51CF5441AE47E1DA68AC5041295C8F9252CF5441000000506BAC5041D7A3700D52CF5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A47E4EF95AAC504117BA2C6F3FCF5441CBAFA17460AC5041C2DC8D3E48CF5441FF9368AA61AC50414CDFD32F4ACF5441453537B762AC5041713A65C84BCF54413A4EB0B863AC5041C97E0C354DCF54418EF5A4A264AC5041AF44816B4ECF5441A100F45E65AC5041646363654FCF54417474BD0666AC5041798D543A50CF5441B5ADABB566AC50410D591C9750CF5441264456F568AC5041EAEE6DAA51CF5441C07293586AAC50410E04347B51CF5441A4703D3A85AC5041F6285CAF47CF544128ECC98E80AC5041729B836B3FCF5441726A3DE483AC5041CDCD04D63ACF54418D09481484AC5041FB09E49A3ACF5441229BFE4884AC50419E61A1533ACF5441EF121FEE84AC50411FB1959439CF5441FF818A3888AC5041F80A67F935CF5441D7569F9E8CAC5041460783C732CF544166F6A9DF8EAC50416DBC923C31CF5441676991AF8CAC504189483AAB2ECF544111AA38268BAC50410E9774D52CCF54416052A57588AC50411C70257C29CF5441BBDCD3ED86AC50419863509427CF544149E373B885AC5041E7F4A71726CF54413A54356684AC5041B414DA3624CF54417B8E2BF782AC5041A288AB4B22CF54411D3E166D81AC5041B63CFFE31FCF544130D6A3F673AC50410785606322CF5441CF5097D16AAC50411966081924CF544155BA75CC61AC504159967EC425CF5441C3F5285C4DAC5041C3F5288C29CF544101AE0A9653AC5041C9459E8E33CF5441E8DFE1A45AAC50413D7672E73ECF5441A47E4EF95AAC504117BA2C6F3FCF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277181 - 3807130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+01060000000100000001030000000100000012000000000000506BAC5041D7A3700D52CF5441333333A384AC50417B14AE6748CF54417B14AE5799AC50413333331340CF54410AD7A3F096AC504185EB51983BCF54411F85EB6193AC50417B14AE8736CF54417B14AED78EAC50413333333331CF5441713D0A978BAC50411F85EB612DCF54418FC2F5C885AC50417B14AE2726CF54411F85EBC182AC5041A4703DEA21CF5441C3F5286C81AC5041F6285CDF1FCF5441C3F5285C4DAC5041C3F5288C29CF5441B81E858B44AC5041F6285C2F2BCF54410AD7A3B053AC5041333333833CCF5441E17A14CE58AC5041C3F5289C42CF54415C8FC29564AC504152B81E3550CF54413333337366AC5041EC51B8DE51CF5441AE47E1DA68AC5041295C8F9252CF5441000000506BAC5041D7A3700D52CF5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A47E4EF95AAC504117BA2C6F3FCF5441CBAFA17460AC5041C2DC8D3E48CF5441FF9368AA61AC50414CDFD32F4ACF5441453537B762AC5041713A65C84BCF54413A4EB0B863AC5041C97E0C354DCF54418EF5A4A264AC5041AF44816B4ECF5441A100F45E65AC5041646363654FCF54417474BD0666AC5041798D543A50CF5441B5ADABB566AC50410D591C9750CF5441264456F568AC5041EAEE6DAA51CF5441C07293586AAC50410E04347B51CF5441A4703D3A85AC5041F6285CAF47CF544128ECC98E80AC5041729B836B3FCF5441726A3DE483AC5041CDCD04D63ACF54418D09481484AC5041FB09E49A3ACF5441229BFE4884AC50419E61A1533ACF5441EF121FEE84AC50411FB1959439CF5441FF818A3888AC5041F80A67F935CF5441D7569F9E8CAC5041460783C732CF544166F6A9DF8EAC50416DBC923C31CF5441676991AF8CAC504189483AAB2ECF544111AA38268BAC50410E9774D52CCF54416052A57588AC50411C70257C29CF5441BBDCD3ED86AC50419863509427CF544149E373B885AC5041E7F4A71726CF54413A54356684AC5041B414DA3624CF54417B8E2BF782AC5041A288AB4B22CF54411D3E166D81AC5041B63CFFE31FCF544130D6A3F673AC50410785606322CF5441CF5097D16AAC50411966081924CF544155BA75CC61AC504159967EC425CF5441C3F5285C4DAC5041C3F5288C29CF544101AE0A9653AC5041C9459E8E33CF5441E8DFE1A45AAC50413D7672E73ECF5441A47E4EF95AAC504117BA2C6F3FCF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277275 - 2934060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AEF792AC504148E17A042CD354418FC2F5589AAC50415C8FC2E52BD35441A4703D5AAAAC5041295C8F6229D35441295C8F52A8AC504114AE471126D354410AD7A3F0A1AC504114AE47A11BD3544100000090A0AC504114AE476119D354418FC2F5889AAC5041F6285C7F0ED354413D0AD7C394AC5041D7A370DD05D3544185EB51088DAC5041F6285C3FFBD254416666664684AC5041D7A3701DEED254418FC2F5F879AC504133333393E1D2544185EB516874AC5041CDCCCCCCDAD25441333333436AAC50413D0AD773CED2544148E17AA469AC5041D7A370ADCDD254413D0AD7F367AC50413D0AD7A3CDD2544114AE479166AC50410AD7A330CED2544152B81E7557AC5041E17A14FED7D254415C8FC2654AAC504114AE4741E1D25441000000F03EAC5041EC51B8CEE5D25441F6285CFF3FAC504100000000E8D2544185EB515849AC50410AD7A360F3D254413D0AD7F351AC5041C3F5289CFDD2544185EB51A852AC5041713D0A27FDD25441713D0A1770AC5041713D0AF720D35441F6285C8F76AC5041EC51B8FE26D35441AE47E17A78AC504114AE479128D35441666666267BAC504114AE47A129D35441295C8F827BAC50415C8FC2C529D354417B14AEF792AC504148E17A042CD35441
+</a>
+
+<b>
+010600000001000000010300000001000000110000000958416B7BAC5041152A48B629D35441295C8F827BAC50415C8FC2C529D35441D90DA28486AC50415BB376D32AD354417D936B228EAC5041086C118E2BD35441B94666E791AC5041A9E06BEA2BD3544171A2906E96AC504193210FF62BD354414C5002519AAC5041AB733EE52BD354412592F414A1AC5041164D19D92AD354410E40204BAAAC5041CF32EA4829D354415042755AA8AC5041A2012F1E26D35441D5AE7706A6AC5041CBA0C14F22D35441ECE31415A4AC50414C6C89221FD35441256710F9A1AC5041B5779DAF1BD354419E14317C8EAC50417FEFCFA622D3544182CB385881AC5041E4C0ED6427D35441CE2BF80281AC50415CBF048727D354410958416B7BAC5041152A48B629D35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277275 - 3799638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AEF792AC504148E17A042CD354418FC2F5589AAC50415C8FC2E52BD35441A4703D5AAAAC5041295C8F6229D35441295C8F52A8AC504114AE471126D354410AD7A3F0A1AC504114AE47A11BD3544100000090A0AC504114AE476119D354418FC2F5889AAC5041F6285C7F0ED354413D0AD7C394AC5041D7A370DD05D3544185EB51088DAC5041F6285C3FFBD254416666664684AC5041D7A3701DEED254418FC2F5F879AC504133333393E1D2544185EB516874AC5041CDCCCCCCDAD25441333333436AAC50413D0AD773CED2544148E17AA469AC5041D7A370ADCDD254413D0AD7F367AC50413D0AD7A3CDD2544114AE479166AC50410AD7A330CED2544152B81E7557AC5041E17A14FED7D254415C8FC2654AAC504114AE4741E1D25441000000F03EAC5041EC51B8CEE5D25441F6285CFF3FAC504100000000E8D2544185EB515849AC50410AD7A360F3D254413D0AD7F351AC5041C3F5289CFDD2544185EB51A852AC5041713D0A27FDD25441713D0A1770AC5041713D0AF720D35441F6285C8F76AC5041EC51B8FE26D35441AE47E17A78AC504114AE479128D35441666666267BAC504114AE47A129D35441295C8F827BAC50415C8FC2C529D354417B14AEF792AC504148E17A042CD35441
+</a>
+
+<b>
+010600000001000000010300000001000000110000000958416B7BAC5041152A48B629D35441295C8F827BAC50415C8FC2C529D35441D90DA28486AC50415BB376D32AD354417D936B228EAC5041086C118E2BD35441B94666E791AC5041A9E06BEA2BD3544171A2906E96AC504193210FF62BD354414C5002519AAC5041AB733EE52BD354412592F414A1AC5041164D19D92AD354410E40204BAAAC5041CF32EA4829D354415042755AA8AC5041A2012F1E26D35441D5AE7706A6AC5041CBA0C14F22D35441ECE31415A4AC50414C6C89221FD35441256710F9A1AC5041B5779DAF1BD354419E14317C8EAC50417FEFCFA622D3544182CB385881AC5041E4C0ED6427D35441CE2BF80281AC50415CBF048727D354410958416B7BAC5041152A48B629D35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 1476711
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D554114AE472127E5504114AE47E1012D5541D7A3702D24E550415C8FC245002D55415C8FC2351DE55041EC51B89E0B2D55418FC2F5381CE55041A4703D3A0D2D5541B81E855B16E550417B14AEC7162D554114AE47F114E55041E17A14BE1A2D5541713D0A4718E55041C3F528BC1C2D5541000000201EE55041E17A14DE2E2D55410A000000F6285C5F21E550417B14AED7322D55417B14AE6724E5504185EB51682A2D5541B81E85BB29E550419A9999F91F2D5541E17A146E2FE55041A4703D8A172D554148E17A3431E55041AE47E12A1B2D554148E17AC42AE5504114AE47D1272D5541F6285C9F28E550413D0AD7B32C2D5541D7A370BD23E55041F6285C0F372D5541C3F5284C22E55041D7A3707D342D5541F6285C5F21E550417B14AED7322D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000004A4FA8981DE5504156B333100B2D554143A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D55412382D5A824E5504116A9011C352D5541F96C27AB23E55041E5F8C7EE362D5541D7A370BD23E55041F6285C0F372D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541D157144D31E55041ABCE8BC9162D55411B47B04431E55041904D0FC4162D55416DAE580931E55041617607DD152D55414A4FA8981DE5504156B333100B2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 3817424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D554114AE472127E5504114AE47E1012D5541D7A3702D24E550415C8FC245002D55415C8FC2351DE55041EC51B89E0B2D55418FC2F5381CE55041A4703D3A0D2D5541B81E855B16E550417B14AEC7162D554114AE47F114E55041E17A14BE1A2D5541713D0A4718E55041C3F528BC1C2D5541000000201EE55041E17A14DE2E2D55410A000000F6285C5F21E550417B14AED7322D55417B14AE6724E5504185EB51682A2D5541B81E85BB29E550419A9999F91F2D5541E17A146E2FE55041A4703D8A172D554148E17A3431E55041AE47E12A1B2D554148E17AC42AE5504114AE47D1272D5541F6285C9F28E550413D0AD7B32C2D5541D7A370BD23E55041F6285C0F372D5541C3F5284C22E55041D7A3707D342D5541F6285C5F21E550417B14AED7322D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000004A4FA8981DE5504156B333100B2D554143A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D55412382D5A824E5504116A9011C352D5541F96C27AB23E55041E5F8C7EE362D5541D7A370BD23E55041F6285C0F372D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541D157144D31E55041ABCE8BC9162D55411B47B04431E55041904D0FC4162D55416DAE580931E55041617607DD152D55414A4FA8981DE5504156B333100B2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 146156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D554114AE472127E5504114AE47E1012D5541D7A3702D24E550415C8FC245002D55415C8FC2351DE55041EC51B89E0B2D55418FC2F5381CE55041A4703D3A0D2D5541B81E855B16E550417B14AEC7162D554114AE47F114E55041E17A14BE1A2D5541713D0A4718E55041C3F528BC1C2D5541000000201EE55041E17A14DE2E2D55410A000000F6285C5F21E550417B14AED7322D55417B14AE6724E5504185EB51682A2D5541B81E85BB29E550419A9999F91F2D5541E17A146E2FE55041A4703D8A172D554148E17A3431E55041AE47E12A1B2D554148E17AC42AE5504114AE47D1272D5541F6285C9F28E550413D0AD7B32C2D5541D7A370BD23E55041F6285C0F372D5541C3F5284C22E55041D7A3707D342D5541F6285C5F21E550417B14AED7322D5541
+</a>
+
+<b>
+0106000000010000000103000000010000002500000043A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D55412382D5A824E5504116A9011C352D5541F96C27AB23E55041E5F8C7EE362D5541D7A370BD23E55041F6285C0F372D55413D0AD72323E550418FC2F518392D5541860E794726E550417C0528E93A2D5541B6EB4C7E26E5504114F491043B2D55413D2EA47E2BE55041E11E139E392D5541C31FCC7F2BE550413475B39D392D554117CF598B2BE550413F65F799392D5541A214448D2BE55041A8EA5899392D5541437698932BE5504127224D97392D5541030C87A22BE55041A77E7992392D55413EB95C9A2EE55041F852D7B4362D55419390637330E5504157B68D30322D554198322E3C32E550414EEACD7B272D5541DD6CAD4B32E5504186B16312272D55415CF8494C32E550413BD43A0E272D55417FEA2D3232E55041A2A1B5431D2D5541A0BD9F2C32E55041D4BC801B1D2D5541B697FA1C31E550411E507629162D55416DAE580931E55041617607DD152D5541892AD74329E550417782BF8B112D5541BB5281941DE55041DE47A4160B2D554143A1ED491DE550413F7C4D8A0B2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 352067
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D554114AE472127E5504114AE47E1012D5541D7A3702D24E550415C8FC245002D55415C8FC2351DE55041EC51B89E0B2D55418FC2F5381CE55041A4703D3A0D2D5541B81E855B16E550417B14AEC7162D554114AE47F114E55041E17A14BE1A2D5541713D0A4718E55041C3F528BC1C2D5541000000201EE55041E17A14DE2E2D55410A000000F6285C5F21E550417B14AED7322D55417B14AE6724E5504185EB51682A2D5541B81E85BB29E550419A9999F91F2D5541E17A146E2FE55041A4703D8A172D554148E17A3431E55041AE47E12A1B2D554148E17AC42AE5504114AE47D1272D5541F6285C9F28E550413D0AD7B32C2D5541D7A370BD23E55041F6285C0F372D5541C3F5284C22E55041D7A3707D342D5541F6285C5F21E550417B14AED7322D5541
+</a>
+
+<b>
+0106000000010000000103000000010000002500000043A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D55412382D5A824E5504116A9011C352D5541F96C27AB23E55041E5F8C7EE362D5541D7A370BD23E55041F6285C0F372D55413D0AD72323E550418FC2F518392D5541860E794726E550417C0528E93A2D5541B6EB4C7E26E5504114F491043B2D55413D2EA47E2BE55041E11E139E392D5541C31FCC7F2BE550413475B39D392D554117CF598B2BE550413F65F799392D5541A214448D2BE55041A8EA5899392D5541437698932BE5504127224D97392D5541030C87A22BE55041A77E7992392D55413EB95C9A2EE55041F852D7B4362D55419390637330E5504157B68D30322D554198322E3C32E550414EEACD7B272D5541DD6CAD4B32E5504186B16312272D55415CF8494C32E550413BD43A0E272D55417FEA2D3232E55041A2A1B5431D2D5541A0BD9F2C32E55041D4BC801B1D2D5541B697FA1C31E550411E507629162D55416DAE580931E55041617607DD152D5541892AD74329E550417782BF8B112D5541BB5281941DE55041DE47A4160B2D554143A1ED491DE550413F7C4D8A0B2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278446 - 53700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E85F0F4504100000030682C554166666636EEF450417B14AEA7662C55418FC2F578ECF450419A999939692C554152B81E75EAF450419A9999A96C2C5541713D0A37E7F4504152B81E65722C554114AE4701E6F45041D7A3707D742C554114AE4771EBF450410AD7A3E0772C554152B81E55EAF450413D0AD7637A2C5541713D0A07E9F450413D0AD7437C2C55415C8FC265E6F450413D0AD7038A2C55419A9999D9E6F45041A4703D0A8F2C5541713D0A67EAF45041000000B08D2C5541EC51B8AEEFF45041F6285C2F842C554185EB5198F3F4504148E17A34812C55418FC2F5C8FCF45041D7A370DD712C55413D0AD723FFF45041666666E6732C554152B81E75F5F45041F6285C4F842C55410AD7A310F3F45041CDCCCC8C8B2C5541B81E853BF6F45041A4703DFA892C5541333333C3F6F45041E17A141E892C5541713D0A77F9F45041CDCCCC7C832C5541B81E85ABFDF4504152B81E357C2C554114AE47A107F55041B81E856B6C2C5541333333C30BF55041A4703DBA662C55417B14AE070CF55041C3F5285C662C554152B81EB509F55041F6285C6F632C55416666669607F55041713D0A57612C5541713D0A1705F55041EC51B84E5E2C5541713D0A2702F5504185EB51785B2C5541E17A145E01F550413D0AD7635C2C5541B81E856BFEF45041CDCCCC1C602C55410AD7A350FBF4504185EB5108642C5541EC51B8DEF9F45041B81E85DB652C5541E17A146EF8F45041CDCCCC1C682C554148E17AD4F5F45041EC51B82E6C2C5541C3F528ACF4F45041C3F5283C6B2C554152B81E85F0F4504100000030682C5541
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F6285C1FF8F450410AD7A3B0892C55417F43FA3EF8F450419B0AD0B4892C5541EF82A660F9F45041228D6393892C554162ECB2DBF9F4504173D847EB892C55415C8FC2F5F9F45041EC51B8EE892C5541B81E85EBFAF450415C8FC2958A2C55410AD7A3A0FBF45041D7A3704D8B2C55412E1B83AFFBF450418EF39B6B8B2C5541F6942DEDFBF45041566D46A98B2C554100570AC810F55041FC826A866A2C55416B3C2BC015F55041DA0B9ED06F2C5541333333D315F55041333333B36F2C5541B600ECFC17F55041EB26BD21722C55418E71439D19F55041487B9A526F2C5541295C8F0222F55041E17A14AE602C5541AE1E1BAA20F55041378D88FC5D2C5541AB844B321DF55041C636AC04582C5541333333D317F5504185EB51585F2C5541B81E85FB13F550411F85EBA1642C5541863B28D312F55041F826EC09662C5541B918BD3310F55041571F2299692C55417F8FAD0510F55041BB4C7871692C55413333330310F5504148E17A74692C5541A4703DDA0FF550415C8FC2A5692C55417B14AE070CF55041C3F5285C662C5541333333C30BF55041A4703DBA662C55411B00238F09F550414C0F3CC3692C55410BA2887403F5504113559409732C5541B853A9DD02F5504127C3B9F8732C554154BA2846FCF45041A81F4C087F2C5541915DAB07F9F450418975FE97842C5541163F7B5DF6F4504180B25EEC892C5541133E714AF7F45041763C07D1892C5541F6285C1FF8F450410AD7A3B0892C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>280165 - 265548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47B183F850417B14AE57617F5441A4703D0A7AF850413D0AD7B3657F5441CDCCCCDC7BF850410AD7A390717F54419A9999A979F85041E17A14BE737F5441B81E85DB77F85041AE47E14A747F544114AE47D175F85041295C8F22747F544148E17A8472F85041CDCCCC5C727F5441666666166CF850415C8FC295737F5441000000D069F85041CDCCCC1C6F7F5441EC51B81E65F85041333333C3717F544114AE47A165F8504166666676737F5441CDCCCC4C68F85041B81E857B777F54418FC2F5E869F850410AD7A380787F5441295C8F626CF85041666666A6787F544185EB51C87EF850418FC2F538797F54413D0AD71396F8504152B81E057A7F544114AE47619CF85041F6285C9F7A7F544100000030A9F85041EC51B85E7B7F5441E17A149EACF85041F6285CAF717F5441CDCCCC4CACF85041D7A3705D6D7F54419A999909ADF85041F6285CCF687F5441EC51B80EB0F85041D7A370CD5C7F5441F6285C3FA4F85041713D0AE75D7F54415C8FC2F596F850410AD7A3505E7F5441E17A14AE8BF85041666666865F7F544114AE47B183F850417B14AE57617F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000002336C51768F850414878AD2B777F544104C65F4068F85041B092AA58777F544154345A6968F850413AEC9B8D777F54412C1E284069F85041C540B215787F5441746268EC69F85041DC70D880787F5441381E05F76AF850412B07BC90787F54417FE302F96CF85041A308089D787F5441DBA6956C70F85041EFBF93C6787F54410425870074F85041CC6D14E3787F544151BBA1E277F850411AC20302797F5441058670EF7EF850413DBFA034797F5441C8A94BDD87F85041771B8E88797F54410FDAD76E8FF8504113FEE2CA797F54417275F82096F85041A8B2C1FE797F5441ABC9BA519CF850410A9FCC997A7F5441E3D9B684A5F85041A938E6277B7F5441996E0C2EA9F85041BD299B5E7B7F5441FAACAC46A9F850415426B21E7B7F5441E17A149EACF85041F6285CAF717F5441CDCCCC4CACF85041D7A3705D6D7F544102DF77CBACF8504147411A4F6A7F54419A999909ADF85041F6285CCF687F5441EC51B80EB0F85041D7A370CD5C7F5441F6285C3FA4F85041713D0AE75D7F54415C8FC2F596F850410AD7A3505E7F54411F37CB158EF8504195495A445F7F5441F4916FC58BF85041AA06E5835F7F544119F92AC589F850417F07A6F55F7F544114AE47B183F850417B14AE57617F5441A4703D0A7AF850413D0AD7B3657F5441CDCCCCDC7BF850410AD7A390717F5441B6AAEBFF7AF85041B1AB426B727F5441243B2F8C7AF85041A116D0DD727F54419A9999A979F85041E17A14BE737F5441B81E85DB77F85041AE47E14A747F54419A72402777F85041BF54F63C747F5441432E85C076F8504178DF0735747F544114AE47D175F85041295C8F22747F5441510F681075F85041C4AAF6BA737F54419CBFB4C174F85041671EB190737F544148E17A8472F85041CDCCCC5C727F5441666666166CF850415C8FC295737F5441000000D069F85041CDCCCC1C6F7F5441EC51B81E65F85041333333C3717F5441F25A6A8165F8504149512F0C737F544114F71D0366F850418589B409747F54412336C51768F850414878AD2B777F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282525 - 398150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000012000000E17A140EFEAC504152B81EC55CE1544148E17AE4F7AC50410AD7A38053E1544152B81EE5F5AC5041E17A14AE4EE15441AE47E1EAF0AC5041295C8FF247E15441CDCCCCACEEAC5041AE47E14A46E1544152B81E85E0AC5041295C8F323EE15441CDCCCC1CDFAC504185EB51083EE154410AD7A3F0D5AC50410AD7A3E037E154410AD7A3E0CCAC5041333333C32EE154418FC2F538CDAC5041295C8FA22BE15441D7A3702DC3AC5041EC51B87E31E15441EC51B87ED1AC504148E17AC43DE15441333333D3DCAC50410AD7A36047E15441CDCCCCFCE0AC5041E17A14AE4CE15441F6285C2FE4AC5041713D0A174FE1544152B81E35EFAC5041B81E85CB59E154410AD7A3D0FAAC5041E17A140E5EE15441E17A140EFEAC504152B81EC55CE154410D00000085EB51E8DEAC5041CDCCCC4C45E1544148E17A04E1AC50416666664644E15441CDCCCC6CE2AC5041E17A14EE41E15441CDCCCC7CE1AC50419A99993941E15441000000C0E1AC50418FC2F55840E1544100000020E4AC5041E17A14FE40E1544114AE4771E5AC504114AE473142E15441B81E856BE3AC5041CDCCCC5C44E154419A999989E3AC50417B14AE8746E154413D0AD773E2AC50415C8FC29547E154413D0AD793E0AC50415C8FC29547E154418FC2F558DFAC5041B81E85CB46E1544185EB51E8DEAC5041CDCCCC4C45E15441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000554F621BCDAC50417F33ACAE2CE15441C629F538CDAC50414BB58FA22BE15441E5A3702DC3AC5041E451B87E31E154414AB99660C7AC50410E8B4D1835E15441EC51B87ED1AC504148E17AC43DE1544114E9A12EDCAC5041B22B0ED546E15441333333D3DCAC50410AD7A36047E1544154AC095ADDAC50416805680C48E15441988B9377DDAC504175E4083248E1544123889278DDAC50418CB64D3348E154418360F07DDDAC504192D1233A48E15441390DED39DEAC504198959C2949E15441D8CCCCFCE0AC5041CC7A14AE4CE154410B295C2FE4AC5041503D0A174FE154417DB81E35EFAC5041AE1E85CB59E15441D131A3D0FAAC5041393E140E5EE15441187C179EFBAC504181C998BC5DE15441E17A140EFEAC504152B81EC55CE15441CEB4CCB1FAAC5041C54B62B757E15441718F7AE4F7AC50412AE7A48053E15441037B1EE5F5AC5041789015AE4EE154413B04E1EAF0AC5041622A8FF247E15441CDCCCCACEEAC5041AE47E14A46E15441B876C18EE3AC504175C446EF3FE15441EF8FF57AE2AC5041989D8D513FE1544146214F32E2AC5041527E01283FE1544119338D43E0AC5041527E01283FE15441174CEBC0DEAC5041719EAEDA3EE15441B227DF8DDEAC5041D14269A83DE154410AD7A3F0D5AC50410AD7A3E037E15441E418A4FACCAC504183045ADD2EE154410AD7A3E0CCAC5041333333C32EE15441554F621BCDAC50417F33ACAE2CE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283969 - 3132607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F568283E51419A9999E9460555419A999949263E51413D0AD7B34705554152B81E35243E5141A4703D7A480555413D0AD783253E5141CDCCCC5C4C055541CDCCCC4C273E51410AD7A32051055541B81E85CB283E51415C8FC2F55605554152B81E952E3E51418FC2F5F870055541A4703DDA343E51419A9999A9890555411F85EB91353E5141AE47E12A8E055541F6285C7F363E5141C3F528DC930555418FC2F558373E5141CDCCCCCC980555418FC2F5E8373E5141D7A370DD9B05554133333363393E51413D0AD723A1055541A4703DDA3A3E5141A4703D7AA0055541F6285C3F3C3E51413D0AD7C39F055541295C8F623D3E5141EC51B82E9F055541713D0A573E3E5141B81E859B9E0555417B14AE07403E51417B14AE979D0555410AD7A3D0403E51413D0AD7139D055541713D0A37403E5141E17A14DE9A055541B81E855B3F3E51413D0AD7B3970555419A9999093E3E51413D0AD73391055541EC51B88E3C3E5141295C8FE28805554185EB51483A3E5141295C8F727E055541C3F5282C383E5141295C8F227605554152B81EF5363E5141AE47E1BA71055541C3F528EC353E51415C8FC2456E055541B81E85BB313E5141C3F528EC5C055541CDCCCC1C2D3E51413D0AD7434A055541333333B32C3E5141F6285C8F480555417B14AEE72B3E514148E17A84450555418FC2F568283E51419A9999E946055541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541BD126B13353E5141C86C3F07520555419DBADE46353E514168DF9FBC51055541F27F4361323E5141CD5FDB464D055541B5CEAC37303E51415A0B8F1E490555411FB29DB92F3E5141E16E342C480555419A9999692E3E51410AD7A300480555413718949C313E5141361445425405554132600278363E5141763D658D68055541000000B0373E51418FC2F5D86D055541C3F528EC353E51415C8FC2456E05554137BDF0C53A3E5141E931E5B28005554104FBC8B13D3E51413F7A53468F05554173FF6AF73E3E51415ACDE9C6950555410AD7A3D0403E51413D0AD7139D055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283969 - 3493779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F568283E51419A9999E9460555419A999949263E51413D0AD7B34705554152B81E35243E5141A4703D7A480555413D0AD783253E5141CDCCCC5C4C055541CDCCCC4C273E51410AD7A32051055541B81E85CB283E51415C8FC2F55605554152B81E952E3E51418FC2F5F870055541A4703DDA343E51419A9999A9890555411F85EB91353E5141AE47E12A8E055541F6285C7F363E5141C3F528DC930555418FC2F558373E5141CDCCCCCC980555418FC2F5E8373E5141D7A370DD9B05554133333363393E51413D0AD723A1055541A4703DDA3A3E5141A4703D7AA0055541F6285C3F3C3E51413D0AD7C39F055541295C8F623D3E5141EC51B82E9F055541713D0A573E3E5141B81E859B9E0555417B14AE07403E51417B14AE979D0555410AD7A3D0403E51413D0AD7139D055541713D0A37403E5141E17A14DE9A055541B81E855B3F3E51413D0AD7B3970555419A9999093E3E51413D0AD73391055541EC51B88E3C3E5141295C8FE28805554185EB51483A3E5141295C8F727E055541C3F5282C383E5141295C8F227605554152B81EF5363E5141AE47E1BA71055541C3F528EC353E51415C8FC2456E055541B81E85BB313E5141C3F528EC5C055541CDCCCC1C2D3E51413D0AD7434A055541333333B32C3E5141F6285C8F480555417B14AEE72B3E514148E17A84450555418FC2F568283E51419A9999E946055541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541BD126B13353E5141C86C3F07520555419DBADE46353E514168DF9FBC51055541F27F4361323E5141CD5FDB464D055541B5CEAC37303E51415A0B8F1E490555411FB29DB92F3E5141E16E342C480555419A9999692E3E51410AD7A300480555413718949C313E5141361445425405554132600278363E5141763D658D68055541000000B0373E51418FC2F5D86D055541C3F528EC353E51415C8FC2456E05554137BDF0C53A3E5141E931E5B28005554104FBC8B13D3E51413F7A53468F05554173FF6AF73E3E51415ACDE9C6950555410AD7A3D0403E51413D0AD7139D055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284951 - 3132607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCBC2D3E5141713D0A57440555411F85EBE12E3E51410AD7A3C0470555417B14AE772F3E5141D7A370AD47055541AE47E1CA333E5141E17A14FE4F0555417B14AEE7353E51419A99997952055541E17A14FE383E51418FC2F5F85405554133333343383E514148E17AE45005554185EB5178373E5141AE47E1FA4B05554133333303333E5141EC51B8FE4A055541C3F5286C323E514148E17A144905554148E17AA4303E51413D0AD7F34405554152B81ED52E3E5141EC51B87E40055541CDCCCCBC2D3E5141713D0A5744055541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541BD126B13353E5141C86C3F07520555419DBADE46353E514168DF9FBC51055541F27F4361323E5141CD5FDB464D055541B5CEAC37303E51415A0B8F1E490555411FB29DB92F3E5141E16E342C480555419A9999692E3E51410AD7A300480555413718949C313E5141361445425405554132600278363E5141763D658D68055541000000B0373E51418FC2F5D86D055541C3F528EC353E51415C8FC2456E05554137BDF0C53A3E5141E931E5B28005554104FBC8B13D3E51413F7A53468F05554173FF6AF73E3E51415ACDE9C6950555410AD7A3D0403E51413D0AD7139D055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284951 - 3493779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCBC2D3E5141713D0A57440555411F85EBE12E3E51410AD7A3C0470555417B14AE772F3E5141D7A370AD47055541AE47E1CA333E5141E17A14FE4F0555417B14AEE7353E51419A99997952055541E17A14FE383E51418FC2F5F85405554133333343383E514148E17AE45005554185EB5178373E5141AE47E1FA4B05554133333303333E5141EC51B8FE4A055541C3F5286C323E514148E17A144905554148E17AA4303E51413D0AD7F34405554152B81ED52E3E5141EC51B87E40055541CDCCCCBC2D3E5141713D0A5744055541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541BD126B13353E5141C86C3F07520555419DBADE46353E514168DF9FBC51055541F27F4361323E5141CD5FDB464D055541B5CEAC37303E51415A0B8F1E490555411FB29DB92F3E5141E16E342C480555419A9999692E3E51410AD7A300480555413718949C313E5141361445425405554132600278363E5141763D658D68055541000000B0373E51418FC2F5D86D055541C3F528EC353E51415C8FC2456E05554137BDF0C53A3E5141E931E5B28005554104FBC8B13D3E51413F7A53468F05554173FF6AF73E3E51415ACDE9C6950555410AD7A3D0403E51413D0AD7139D055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287019 - 4257022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000100000007B14AE97A8D550410000006089C1544133333393ABD55041AE47E11A8CC1544152B81E35ADD55041CDCCCC3C73C15441B81E85DBA0D55041AE47E1BA6FC15441E17A146E93D55041A4703DFA6CC15441A4703D8A95D55041A4703D4A52C154417B14AEF78DD55041B81E85CB51C15441333333C383D55041D7A3702D52C154417B14AE7780D550417B14AED752C154418FC2F5487CD55041E17A147E54C15441F6285C1F7AD55041D7A3704D76C154413D0AD78386D550419A9999C978C15441C3F528DC9BD55041B81E855B80C1544148E17A44A0D5504114AE471183C1544114AE4771A4D5504185EB51F885C154417B14AE97A8D550410000006089C15441
+</a>
+
+<b>
+010600000001000000010300000001000000160000002366A23494D550414EEEE83352C154417B14AEF78DD55041B81E85CB51C15441333333C383D55041D7A3702D52C154417B14AE7780D550417B14AED752C154418FC2F5487CD55041E17A147E54C15441F6285C1F7AD55041D7A3704D76C154413D0AD78386D550419A9999C978C15441C3F528DC9BD55041B81E855B80C1544148E17A44A0D5504114AE471183C1544114AE4771A4D5504185EB51F885C154417B14AE97A8D550410000006089C1544133333393ABD55041AE47E11A8CC15441FCE04338ADD55041EFBB411073C15441DCA6DF00A8D5504128666EC271C15441DA7E06F3A0D55041F1D8FFFE6FC15441D145F6C29BD55041067F75AF6EC154410CF893B197D5504150A556BA6DC15441E7FBA92192D550410681959B6CC154410E2DB27593D55041273108CC5BC15441D924CF2D94D550418963EDEF52C154418195433B94D55041560E2D4A52C154412366A23494D550414EEEE83352C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287019 - 4257050
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000100000007B14AE97A8D550410000006089C1544133333393ABD55041AE47E11A8CC1544152B81E35ADD55041CDCCCC3C73C15441B81E85DBA0D55041AE47E1BA6FC15441E17A146E93D55041A4703DFA6CC15441A4703D8A95D55041A4703D4A52C154417B14AEF78DD55041B81E85CB51C15441333333C383D55041D7A3702D52C154417B14AE7780D550417B14AED752C154418FC2F5487CD55041E17A147E54C15441F6285C1F7AD55041D7A3704D76C154413D0AD78386D550419A9999C978C15441C3F528DC9BD55041B81E855B80C1544148E17A44A0D5504114AE471183C1544114AE4771A4D5504185EB51F885C154417B14AE97A8D550410000006089C15441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000A972BB3A94D5504120D5634852C154418195433B94D55041560E2D4A52C15441D924CF2D94D550418963EDEF52C154410E2DB27593D55041273108CC5BC15441E7FBA92192D550410681959B6CC154410CF893B197D5504150A556BA6DC1544127BC741099D5504126FAFF006EC15441D145F6C29BD55041067F75AF6EC15441DA7E06F3A0D55041F1D8FFFE6FC15441DCA6DF00A8D5504128666EC271C15441FCE04338ADD55041EFBB411073C154411F85EBF1AED55041C3F528CC58C154410000007098D55041B81E856B52C154414468BA5896D5504129A2F15A52C15441A972BB3A94D5504120D5634852C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287492 - 223353
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA85A65141E17A14BECDA7544114AE47317DA6514166666606DCA75441C3F5289C7AA65141B81E859BDBA754413D0AD71374A65141EC51B86ED3A754413D0AD7536BA65141295C8F52DFA75441000000506EA651418FC2F5D8E1A7544185EB51E870A6514148E17A84E0A75441EC51B80E77A65141C3F5287CE4A75441F6285C8F78A651419A9999D9E7A754411F85EB9176A65141CDCCCC6CEBA75441713D0A2779A6514100000010EDA75441E17A14BE7AA6514114AE4721EAA75441F6285C1F80A65141C3F5284CDFA75441000000108AA6514148E17A54CBA75441A4703D6A95A65141F6285CAFBEA754411F85EBE1A4A65141AE47E12AA9A75441B81E85BBA5A65141333333B3A6A7544100000050B6A65141EC51B80E94A75441B81E859BB7A65141CDCCCC9C92A754415C8FC2A5BDA65141333333738CA7544185EB51A8C6A65141D7A3702D82A7544114AE4711C5A65141EC51B80E81A75441713D0A77C2A651416666662681A7544114AE4721C0A651415C8FC2F580A754418FC2F5E8BCA65141CDCCCC8C83A754413D0AD743BBA65141D7A3708D82A754411F85EBD1B8A65141EC51B85E85A754419A999949B7A651411F85EBB186A754410AD7A310B5A65141EC51B83E85A754415C8FC2D5B1A65141C3F528AC88A7544148E17AC4A9A65141C3F5283C91A75441D7A3709D9AA65141F6285CAFA3A75441A4703D5A97A6514185EB51A8A7A75441EC51B86E95A65141713D0AF7ABA75441AE47E15A90A651410AD7A350B3A75441E17A144E89A651419A9999C9BCA754415C8FC2A585A65141295C8FF2BEA7544114AE47C17FA651417B14AE17C3A75441000000E086A65141EC51B8BEC7A75441AE47E1CA85A65141E17A14BECDA75441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B7E6936C8BA651410C47869EDCA754410799643A8CA65141FE729AF8DAA75441067FE01E8EA65141DDA5A22FD7A7544107BEBB1D8EA651416FD0FD2DD7A754415CD1F9588DA65141899746EDD6A75441EFDD6EBD8BA651418B30EA65D6A75441A0AB93A889A65141E60BA7B6D5A75441477C9F3789A65141A998757FD6A754419D89614588A65141887D86C1D6A75441E996235387A651411EDC80ABD6A754419301E04A86A65141D48A48CFD5A754416829911685A65141E8612C61D5A7544197FFEEF483A6514151495F98D7A75441F8BAB2A983A65141FA5D812FD8A75441F43EC62A83A65141845C782ED9A754411F709C9982A65141191B1352DAA75441F3337DDF80A65141278F5FFBDDA754417433123D7FA65141C6903540E1A75441ABD3EB207EA651419C8BEA4FE3A75441B27B23057DA65141D53A4E8BE5A754416AE711BF7CA65141B51C6318E6A75441C8EEE2BB7BA651417D303F22E8A754411459EDC37AA651417BE78448EAA75441C0D2D66B7AA65141BA96B70EEBA754414AEDC5297AA651411ABFD37CEBA754415552DFFE7AA65141E09AA1D1EBA75441EB32C44F7CA651416044CBC3EBA75441A4703D1A7DA6514152B81E35EBA75441E17A146E80A65141E17A149EE5A75441CDCCCCEC80A65141AE47E1CAE5A75441000000907DA6514185EB51D8EBA754410141C1ED7DA6514169584925ECA75441B35AC3087EA651417BCD002DECA75441F34D01FB7EA65141507D33F3ECA75441B81E858B7FA651418FC2F578EDA75441565178F27EA6514128672C07EFA754418BF001EA7EA6514173FF301DEFA75441713D0A777EA6514185EB5148F0A754413D0AD70381A65141E17A14EEF0A754418FC2F52885A651419A999969EFA7544195CCFEF085A65141CD022C9CEDA75441DD52182787A65141DB0FA1B6EAA75441C2F5DC8D88A65141D5D07ECDE7A75441295C8FD289A651413D0AD713E5A75441BA36C8588AA651411DCCC916E4A754419D89614588A651415033A6F8E2A754414B7F145588A651414FDF05D9E2A754410AD7A35088A65141666666D6E2A75441B7E6936C8BA651410C47869EDCA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287492 - 393512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA85A65141E17A14BECDA7544114AE47317DA6514166666606DCA75441C3F5289C7AA65141B81E859BDBA754413D0AD71374A65141EC51B86ED3A754413D0AD7536BA65141295C8F52DFA75441000000506EA651418FC2F5D8E1A7544185EB51E870A6514148E17A84E0A75441EC51B80E77A65141C3F5287CE4A75441F6285C8F78A651419A9999D9E7A754411F85EB9176A65141CDCCCC6CEBA75441713D0A2779A6514100000010EDA75441E17A14BE7AA6514114AE4721EAA75441F6285C1F80A65141C3F5284CDFA75441000000108AA6514148E17A54CBA75441A4703D6A95A65141F6285CAFBEA754411F85EBE1A4A65141AE47E12AA9A75441B81E85BBA5A65141333333B3A6A7544100000050B6A65141EC51B80E94A75441B81E859BB7A65141CDCCCC9C92A754415C8FC2A5BDA65141333333738CA7544185EB51A8C6A65141D7A3702D82A7544114AE4711C5A65141EC51B80E81A75441713D0A77C2A651416666662681A7544114AE4721C0A651415C8FC2F580A754418FC2F5E8BCA65141CDCCCC8C83A754413D0AD743BBA65141D7A3708D82A754411F85EBD1B8A65141EC51B85E85A754419A999949B7A651411F85EBB186A754410AD7A310B5A65141EC51B83E85A754415C8FC2D5B1A65141C3F528AC88A7544148E17AC4A9A65141C3F5283C91A75441D7A3709D9AA65141F6285CAFA3A75441A4703D5A97A6514185EB51A8A7A75441EC51B86E95A65141713D0AF7ABA75441AE47E15A90A651410AD7A350B3A75441E17A144E89A651419A9999C9BCA754415C8FC2A585A65141295C8FF2BEA7544114AE47C17FA651417B14AE17C3A75441000000E086A65141EC51B8BEC7A75441AE47E1CA85A65141E17A14BECDA75441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B7E6936C8BA651410C47869EDCA754410799643A8CA65141FE729AF8DAA75441067FE01E8EA65141DDA5A22FD7A7544107BEBB1D8EA651416FD0FD2DD7A754415CD1F9588DA65141899746EDD6A75441EFDD6EBD8BA651418B30EA65D6A75441A0AB93A889A65141E60BA7B6D5A75441477C9F3789A65141A998757FD6A754419D89614588A65141887D86C1D6A75441E996235387A651411EDC80ABD6A754419301E04A86A65141D48A48CFD5A754416829911685A65141E8612C61D5A7544197FFEEF483A6514151495F98D7A75441F8BAB2A983A65141FA5D812FD8A75441F43EC62A83A65141845C782ED9A754411F709C9982A65141191B1352DAA75441F3337DDF80A65141278F5FFBDDA754417433123D7FA65141C6903540E1A75441ABD3EB207EA651419C8BEA4FE3A75441B27B23057DA65141D53A4E8BE5A754416AE711BF7CA65141B51C6318E6A75441C8EEE2BB7BA651417D303F22E8A754411459EDC37AA651417BE78448EAA75441C0D2D66B7AA65141BA96B70EEBA754414AEDC5297AA651411ABFD37CEBA754415552DFFE7AA65141E09AA1D1EBA75441EB32C44F7CA651416044CBC3EBA75441A4703D1A7DA6514152B81E35EBA75441E17A146E80A65141E17A149EE5A75441CDCCCCEC80A65141AE47E1CAE5A75441000000907DA6514185EB51D8EBA754410141C1ED7DA6514169584925ECA75441B35AC3087EA651417BCD002DECA75441F34D01FB7EA65141507D33F3ECA75441B81E858B7FA651418FC2F578EDA75441565178F27EA6514128672C07EFA754418BF001EA7EA6514173FF301DEFA75441713D0A777EA6514185EB5148F0A754413D0AD70381A65141E17A14EEF0A754418FC2F52885A651419A999969EFA7544195CCFEF085A65141CD022C9CEDA75441DD52182787A65141DB0FA1B6EAA75441C2F5DC8D88A65141D5D07ECDE7A75441295C8FD289A651413D0AD713E5A75441BA36C8588AA651411DCCC916E4A754419D89614588A651415033A6F8E2A754414B7F145588A651414FDF05D9E2A754410AD7A35088A65141666666D6E2A75441B7E6936C8BA651410C47869EDCA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288768 - 150985
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000080000000103000000010000000F000000A4703D9A6E0E5141A4703DFA1F2E5441EC51B8DE6F0E5141AE47E1DA0E2E5441333333D3700E514148E17AA4052E5441E17A147E710E5141D7A370BD002E5441295C8F52700E5141B81E85CB002E544185EB51A8700E5141713D0AE7FE2D5441295C8F426D0E51413D0AD783FF2D5441AE47E16A6A0E5141295C8F92002E544114AE47B1680E514100000030022E54410AD7A3B0670E51410AD7A300102E544133333393660E5141D7A370ED1C2E544185EB51E8650E51410AD7A310262E5441713D0A37650E51419A999919312E544152B81E556D0E5141AE47E15A312E5441A4703D9A6E0E5141A4703DFA1F2E54410103000000010000001000000085EB5198280E51417B14AEA7DA2E5441D7A3704D2A0E5141D7A3705DDD2E54418FC2F5E82B0E5141CDCCCC3CDF2E54410AD7A3802D0E5141A4703D3AE02E54411F85EB412F0E5141A4703DAAE02E544100000020310E51411F85EB71E02E5441333333A3340E51419A9999C9DF2E54417B14AE37370E5141D7A370CDD02E54417B14AE67350E514133333333D02E5441EC51B8DE330E514185EB5128CF2E5441F6285C7F320E514152B81EE5CD2E5441E17A149E310E51411F85EBA1CC2E5441A4703D0A2F0E5141C3F5287CCF2E544114AE47512A0E5141B81E85EBD42E5441713D0A87260E514148E17A34D72E544185EB5198280E51417B14AEA7DA2E54410103000000010000000A0000009A999959300E51419A999919162E5441C3F528BC220E51417B14AE67112E5441CDCCCCBC220E5141000000D01F2E5441D7A370AD220E51411F85EBC1292E5441000000D0220E5141713D0A972B2E54411F85EB31230E5141713D0AF72C2E54417B14AE57240E51415C8FC2F52D2E5441B81E85CB250E5141AE47E16A2E2E54410AD7A3D02F0E5141295C8F922E2E54419A999959300E51419A999919162E54410103000000010000002B00000085EB5118840E51418FC2F5F8472E544185EB5138870E51417B14AE27472E5441C3F528BC8C0E5141000000D0432E544148E17A848E0E5141295C8FB2422E54410AD7A3208E0E5141AE47E1EA412E5441295C8F72890E514148E17A24432E5441E17A14EE820E5141D7A370DD422E5441000000D0800E51417B14AE07422E544185EB51787D0E5141000000C0412E5441B81E854B7A0E5141F6285CBF402E54415C8FC265770E5141D7A3704D402E5441D7A3709D750E5141CDCCCC4C3F2E54418FC2F5C8760E51410AD7A3E0472E544148E17AF4770E5141E17A14BE522E54413D0AD703790E5141F6285C5F5A2E5441D7A3703D7A0E514152B81ED55F2E54418FC2F5E87B0E5141AE47E1CA652E5441EC51B83E7C0E514166666676662E5441B81E85EB7E0E51417B14AEE7652E5441F6285CCF7F0E51417B14AE77682E544114AE47317D0E5141D7A3704D692E5441B81E856B7F0E5141CDCCCC7C6F2E54413D0AD7D3850E5141C3F5287C6E2E5441EC51B80E890E51410AD7A3D06D2E54415C8FC2E58A0E51411F85EB416D2E5441000000108B0E5141AE47E16A6A2E5441AE47E13A8B0E5141D7A370CD682E5441713D0AD78A0E51411F85EB01632E544148E17A64890E51411F85EBF15F2E5441EC51B87E860E5141F6285C8F612E5441CDCCCCFC830E5141CDCCCC8C5D2E5441713D0AA7820E5141000000E05A2E5441C3F528FC820E51411F85EB41582E54411F85EB51830E5141AE47E16A562E5441295C8F42810E5141000000C0552E544185EB51787D0E5141CDCCCC5C562E54413D0AD7137C0E51418FC2F5F8552E5441CDCCCC4C7C0E5141AE47E1DA532E54411F85EBC17C0E51418FC2F548512E54410AD7A3407F0E5141A4703DBA4D2E544152B81EA5800E5141F6285CFF4A2E5441295C8FC2810E514152B81EC5482E544185EB5118840E51418FC2F5F8472E544101030000000100000010000000A4703D5A1E0E514148E17AD4972E5441E17A14CE1D0E5141713D0A679F2E544185EB51E8190E51411F85EB51A62E5441713D0A97180E51413D0AD703AD2E5441EC51B85E180E5141AE47E1FAAF2E544148E17A041A0E5141E17A143EB12E54411F85EB211E0E51411F85EB21B12E5441333333B3210E5141EC51B8DEAF2E5441B81E853B280E5141333333F3AD2E544185EB51C8280E5141D7A3707DAA2E5441CDCCCC8C290E51418FC2F5589F2E544148E17A54290E51419A9999B99B2E54417B14AE17260E514152B81E25902E544148E17A54200E5141CDCCCC6C942E54411F85EBB11D0E5141666666F6952E5441A4703D5A1E0E514148E17AD4972E54410103000000010000000F00000000000060830E5141666666067D2E5441C3F5288C850E5141CDCCCCFC832E544148E17AD4860E51411F85EB71882E54411F85EBF1870E5141295C8F828C2E544100000080880E51415C8FC2758E2E544166666656890E5141C3F5284C902E5441EC51B81E8B0E5141AE47E1EA922E5441C3F5283C8D0E51410AD7A3D0952E5441D7A370BD8E0E5141CDCCCCFC972E54419A999969900E51410AD7A3F09A2E5441713D0A778F0E514185EB51688F2E5441666666F68E0E51411F85EBD1832E5441666666F68E0E514185EB51687B2E5441AE47E1AA880E5141CDCCCC4C7C2E544100000060830E5141666666067D2E544101030000000100000022000000295C8FC2310E5141000000F0BC2E54418FC2F5D8300E51418FC2F578BC2E5441CDCCCC0C2F0E514185EB5138BC2E5441C3F5283C2E0E51417B14AE07BC2E54413D0AD7F32B0E514152B81EE5B92E544185EB51082B0E514148E17A14B92E544185EB5168280E5141713D0AC7B52E5441A4703D3A270E5141EC51B8BEB42E54418FC2F538260E514148E17A74B42E544148E17A14260E51410AD7A380B52E544100000040260E51413D0AD723B72E5441713D0AC7250E51411F85EB91B92E5441C3F528AC240E51411F85EB91B92E54419A999989230E5141713D0AB7BB2E5441295C8FE2230E51411F85EB11BD2E5441C3F528AC240E514152B81E65BE2E5441C3F528BC240E5141A4703D5AC02E5441D7A3702D250E514152B81EA5C12E5441666666F6280E51415C8FC2E5C12E5441666666562C0E514166666656C22E54413D0AD7C32E0E5141000000F0C22E54418FC2F5E82F0E51411F85EBB1C42E54413D0AD753310E51411F85EBB1C42E544114AE47E1310E514100000040C32E544166666636320E5141D7A3701DC22E544185EB5188320E51417B14AE27C12E544185EB51B8320E514152B81E65C02E5441AE47E1DA320E5141AE47E1CABF2E5441E17A14DE320E5141E17A142EBF2E5441AE47E1DA320E5141D7A370BDBE2E5441F6285CBF320E5141CDCCCCECBD2E5441295C8F92320E5141C3F5287CBD2E54411F85EB21320E5141EC51B80EBD2E5441295C8FC2310E5141000000F0BC2E544101030000000100000013000000D7A3709D830E51417B14AE27FB2D544148E17A948B0E5141F6285C7FFB2D5441666666868B0E514100000090F92D5441295C8FF28C0E514114AE4781F92D54410AD7A3008D0E5141A4703D0AFB2D5441B81E854B920E514148E17AA4FA2D54419A999989950E51417B14AE87FA2D544185EB51C8980E51415C8FC295FA2D5441EC51B83E970E5141CDCCCCFCEC2D5441295C8FD2950E514133333393E22D5441000000C0920E5141F6285C7FCC2D5441E17A14EE900E51418FC2F598C22D54410AD7A3908F0E5141D7A3703DBF2D5441713D0A078E0E514152B81E05BD2D5441A4703DCA8A0E514100000030C32D5441A4703DAA790E514114AE4761C42D54417B14AE677B0E5141000000D0E92D54417B14AE977D0E5141000000D0FB2D5441D7A3709D830E51417B14AE27FB2D5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A3D02F0E5141295C8F922E2E544130F1BB10300E51417FB2B31E232E54416FD10F44300E51414A1ED7AC162E544194165457300E51416BB08181162E5441C8689859300E5141FF10D019162E5441815A7CB62E0E5141F2911289152E54412323BB442D0E5141B6F39009152E54412FF0C09C250E5141A0E8AF65122E5441433EF603250E51416796FF30122E5441D3CFD826240E5141A4C1BFE4112E5441A66790C2230E51418FE02AC2112E5441A84A9FD5220E5141F4DC7570112E5441C012DFBE220E51417706D7CB162E54411DC4F5BD220E5141D92E271D1B2E5441D5D0BDBC220E51412CB8AD7E1E2E5441CDCCCCBC220E5141000000D01F2E5441061C8BAE220E51417B34080B292E5441500F87C4220E514116FF4FFB2A2E5441000000D0220E5141713D0A972B2E54411F85EB31230E5141713D0AF72C2E54417B14AE57240E51415C8FC2F52D2E5441BCB6F46C250E5141CE41184D2E2E54418DAAF718290E5141C351F5772E2E5441ED3BF6692E0E514145F7028D2E2E54410AD7A3D02F0E5141295C8F922E2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288768 - 392985
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000080000000103000000010000000F000000A4703D9A6E0E5141A4703DFA1F2E5441EC51B8DE6F0E5141AE47E1DA0E2E5441333333D3700E514148E17AA4052E5441E17A147E710E5141D7A370BD002E5441295C8F52700E5141B81E85CB002E544185EB51A8700E5141713D0AE7FE2D5441295C8F426D0E51413D0AD783FF2D5441AE47E16A6A0E5141295C8F92002E544114AE47B1680E514100000030022E54410AD7A3B0670E51410AD7A300102E544133333393660E5141D7A370ED1C2E544185EB51E8650E51410AD7A310262E5441713D0A37650E51419A999919312E544152B81E556D0E5141AE47E15A312E5441A4703D9A6E0E5141A4703DFA1F2E54410103000000010000001000000085EB5198280E51417B14AEA7DA2E5441D7A3704D2A0E5141D7A3705DDD2E54418FC2F5E82B0E5141CDCCCC3CDF2E54410AD7A3802D0E5141A4703D3AE02E54411F85EB412F0E5141A4703DAAE02E544100000020310E51411F85EB71E02E5441333333A3340E51419A9999C9DF2E54417B14AE37370E5141D7A370CDD02E54417B14AE67350E514133333333D02E5441EC51B8DE330E514185EB5128CF2E5441F6285C7F320E514152B81EE5CD2E5441E17A149E310E51411F85EBA1CC2E5441A4703D0A2F0E5141C3F5287CCF2E544114AE47512A0E5141B81E85EBD42E5441713D0A87260E514148E17A34D72E544185EB5198280E51417B14AEA7DA2E54410103000000010000000A0000009A999959300E51419A999919162E5441C3F528BC220E51417B14AE67112E5441CDCCCCBC220E5141000000D01F2E5441D7A370AD220E51411F85EBC1292E5441000000D0220E5141713D0A972B2E54411F85EB31230E5141713D0AF72C2E54417B14AE57240E51415C8FC2F52D2E5441B81E85CB250E5141AE47E16A2E2E54410AD7A3D02F0E5141295C8F922E2E54419A999959300E51419A999919162E54410103000000010000002B00000085EB5118840E51418FC2F5F8472E544185EB5138870E51417B14AE27472E5441C3F528BC8C0E5141000000D0432E544148E17A848E0E5141295C8FB2422E54410AD7A3208E0E5141AE47E1EA412E5441295C8F72890E514148E17A24432E5441E17A14EE820E5141D7A370DD422E5441000000D0800E51417B14AE07422E544185EB51787D0E5141000000C0412E5441B81E854B7A0E5141F6285CBF402E54415C8FC265770E5141D7A3704D402E5441D7A3709D750E5141CDCCCC4C3F2E54418FC2F5C8760E51410AD7A3E0472E544148E17AF4770E5141E17A14BE522E54413D0AD703790E5141F6285C5F5A2E5441D7A3703D7A0E514152B81ED55F2E54418FC2F5E87B0E5141AE47E1CA652E5441EC51B83E7C0E514166666676662E5441B81E85EB7E0E51417B14AEE7652E5441F6285CCF7F0E51417B14AE77682E544114AE47317D0E5141D7A3704D692E5441B81E856B7F0E5141CDCCCC7C6F2E54413D0AD7D3850E5141C3F5287C6E2E5441EC51B80E890E51410AD7A3D06D2E54415C8FC2E58A0E51411F85EB416D2E5441000000108B0E5141AE47E16A6A2E5441AE47E13A8B0E5141D7A370CD682E5441713D0AD78A0E51411F85EB01632E544148E17A64890E51411F85EBF15F2E5441EC51B87E860E5141F6285C8F612E5441CDCCCCFC830E5141CDCCCC8C5D2E5441713D0AA7820E5141000000E05A2E5441C3F528FC820E51411F85EB41582E54411F85EB51830E5141AE47E16A562E5441295C8F42810E5141000000C0552E544185EB51787D0E5141CDCCCC5C562E54413D0AD7137C0E51418FC2F5F8552E5441CDCCCC4C7C0E5141AE47E1DA532E54411F85EBC17C0E51418FC2F548512E54410AD7A3407F0E5141A4703DBA4D2E544152B81EA5800E5141F6285CFF4A2E5441295C8FC2810E514152B81EC5482E544185EB5118840E51418FC2F5F8472E544101030000000100000010000000A4703D5A1E0E514148E17AD4972E5441E17A14CE1D0E5141713D0A679F2E544185EB51E8190E51411F85EB51A62E5441713D0A97180E51413D0AD703AD2E5441EC51B85E180E5141AE47E1FAAF2E544148E17A041A0E5141E17A143EB12E54411F85EB211E0E51411F85EB21B12E5441333333B3210E5141EC51B8DEAF2E5441B81E853B280E5141333333F3AD2E544185EB51C8280E5141D7A3707DAA2E5441CDCCCC8C290E51418FC2F5589F2E544148E17A54290E51419A9999B99B2E54417B14AE17260E514152B81E25902E544148E17A54200E5141CDCCCC6C942E54411F85EBB11D0E5141666666F6952E5441A4703D5A1E0E514148E17AD4972E54410103000000010000000F00000000000060830E5141666666067D2E5441C3F5288C850E5141CDCCCCFC832E544148E17AD4860E51411F85EB71882E54411F85EBF1870E5141295C8F828C2E544100000080880E51415C8FC2758E2E544166666656890E5141C3F5284C902E5441EC51B81E8B0E5141AE47E1EA922E5441C3F5283C8D0E51410AD7A3D0952E5441D7A370BD8E0E5141CDCCCCFC972E54419A999969900E51410AD7A3F09A2E5441713D0A778F0E514185EB51688F2E5441666666F68E0E51411F85EBD1832E5441666666F68E0E514185EB51687B2E5441AE47E1AA880E5141CDCCCC4C7C2E544100000060830E5141666666067D2E544101030000000100000022000000295C8FC2310E5141000000F0BC2E54418FC2F5D8300E51418FC2F578BC2E5441CDCCCC0C2F0E514185EB5138BC2E5441C3F5283C2E0E51417B14AE07BC2E54413D0AD7F32B0E514152B81EE5B92E544185EB51082B0E514148E17A14B92E544185EB5168280E5141713D0AC7B52E5441A4703D3A270E5141EC51B8BEB42E54418FC2F538260E514148E17A74B42E544148E17A14260E51410AD7A380B52E544100000040260E51413D0AD723B72E5441713D0AC7250E51411F85EB91B92E5441C3F528AC240E51411F85EB91B92E54419A999989230E5141713D0AB7BB2E5441295C8FE2230E51411F85EB11BD2E5441C3F528AC240E514152B81E65BE2E5441C3F528BC240E5141A4703D5AC02E5441D7A3702D250E514152B81EA5C12E5441666666F6280E51415C8FC2E5C12E5441666666562C0E514166666656C22E54413D0AD7C32E0E5141000000F0C22E54418FC2F5E82F0E51411F85EBB1C42E54413D0AD753310E51411F85EBB1C42E544114AE47E1310E514100000040C32E544166666636320E5141D7A3701DC22E544185EB5188320E51417B14AE27C12E544185EB51B8320E514152B81E65C02E5441AE47E1DA320E5141AE47E1CABF2E5441E17A14DE320E5141E17A142EBF2E5441AE47E1DA320E5141D7A370BDBE2E5441F6285CBF320E5141CDCCCCECBD2E5441295C8F92320E5141C3F5287CBD2E54411F85EB21320E5141EC51B80EBD2E5441295C8FC2310E5141000000F0BC2E544101030000000100000013000000D7A3709D830E51417B14AE27FB2D544148E17A948B0E5141F6285C7FFB2D5441666666868B0E514100000090F92D5441295C8FF28C0E514114AE4781F92D54410AD7A3008D0E5141A4703D0AFB2D5441B81E854B920E514148E17AA4FA2D54419A999989950E51417B14AE87FA2D544185EB51C8980E51415C8FC295FA2D5441EC51B83E970E5141CDCCCCFCEC2D5441295C8FD2950E514133333393E22D5441000000C0920E5141F6285C7FCC2D5441E17A14EE900E51418FC2F598C22D54410AD7A3908F0E5141D7A3703DBF2D5441713D0A078E0E514152B81E05BD2D5441A4703DCA8A0E514100000030C32D5441A4703DAA790E514114AE4761C42D54417B14AE677B0E5141000000D0E92D54417B14AE977D0E5141000000D0FB2D5441D7A3709D830E51417B14AE27FB2D5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A3D02F0E5141295C8F922E2E544130F1BB10300E51417FB2B31E232E54416FD10F44300E51414A1ED7AC162E544194165457300E51416BB08181162E5441C8689859300E5141FF10D019162E5441815A7CB62E0E5141F2911289152E54412323BB442D0E5141B6F39009152E54412FF0C09C250E5141A0E8AF65122E5441433EF603250E51416796FF30122E5441D3CFD826240E5141A4C1BFE4112E5441A66790C2230E51418FE02AC2112E5441A84A9FD5220E5141F4DC7570112E5441C012DFBE220E51417706D7CB162E54411DC4F5BD220E5141D92E271D1B2E5441D5D0BDBC220E51412CB8AD7E1E2E5441CDCCCCBC220E5141000000D01F2E5441061C8BAE220E51417B34080B292E5441500F87C4220E514116FF4FFB2A2E5441000000D0220E5141713D0A972B2E54411F85EB31230E5141713D0AF72C2E54417B14AE57240E51415C8FC2F52D2E5441BCB6F46C250E5141CE41184D2E2E54418DAAF718290E5141C351F5772E2E5441ED3BF6692E0E514145F7028D2E2E54410AD7A3D02F0E5141295C8F922E2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290160 - 3105964
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D00000085EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB544114AE4741B6945041E17A14EE69FB54411F85EBF1C09450410000008063FB5441666666D6CF945041EC51B88E56FB54413D0AD703CE9450418FC2F5B850FB5441D7A3703DB89450413D0AD7D356FB544185EB51A8B3945041E17A148E58FB544114AE4791739450419A9999F978FB544185EB512874945041D7A3703D7BFB544148E17A048994504152B81EB577FB54419A9999B98F945041713D0A1779FB544185EB51D8A39450416666663675FB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000C0D9BA8CBB945041FC1B024266FB544111F872EDB594504155CED4DA68FB544109721D99A99450414F93708F6EFB54411EF60367A3945041E3E2718971FB5441F3FF6D089F945041F6FED7A273FB54411EEFDBDA9A945041D6C827C275FB544185D5F13897945041EC51F8A777FB544185EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB5441E01EAD2CB6945041330750FC69FB544122A17295BE945041878B96EB64FB5441C0D9BA8CBB945041FC1B024266FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290160 - 3473207
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D00000085EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB544114AE4741B6945041E17A14EE69FB54411F85EBF1C09450410000008063FB5441666666D6CF945041EC51B88E56FB54413D0AD703CE9450418FC2F5B850FB5441D7A3703DB89450413D0AD7D356FB544185EB51A8B3945041E17A148E58FB544114AE4791739450419A9999F978FB544185EB512874945041D7A3703D7BFB544148E17A048994504152B81EB577FB54419A9999B98F945041713D0A1779FB544185EB51D8A39450416666663675FB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000C0D9BA8CBB945041FC1B024266FB544111F872EDB594504155CED4DA68FB544109721D99A99450414F93708F6EFB54411EF60367A3945041E3E2718971FB5441F3FF6D089F945041F6FED7A273FB54411EEFDBDA9A945041D6C827C275FB544185D5F13897945041EC51F8A777FB544185EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB5441E01EAD2CB6945041330750FC69FB544122A17295BE945041878B96EB64FB5441C0D9BA8CBB945041FC1B024266FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302239 - 215920
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -124  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A3603A3D5141D7A3706D8F2355410AD7A380223D51415C8FC2759C2355413D0AD773123D5141EC51B85EA52355410AD7A3000D3D51418FC2F5D8A8235541AE47E11A083D51410AD7A340AC235541F6285C7F033D51410AD7A300B02355417B14AE670E3D514152B81E65B92355419A999949113D51410AD7A3E0BB235541B81E85AB173D5141D7A370EDB5235541F6285C9F393D5141E17A149EA0235541666666863C3D514148E17AA49E235541EC51B87E423D51419A9999599A23554185EB5198423D51410AD7A3809923554114AE47E13D3D5141713D0AD7912355417B14AE373D3D5141E17A145E9023554148E17AD43B3D51410AD7A3F08E2355410AD7A3603A3D5141D7A3706D8F235541
+</a>
+
+<b>
+0106000000010000000103000000010000003400000091ED61520B3D514121001904AA2355418FEAEA3E0B3D5141EE73A111AA23554141934E8E0A3D514142746B8CAA2355412CFC88820A3D514122A99A94AA2355416D09D87F0A3D51415EA77996AA235541B5A783B9033D51415788B732B0235541CE8110C5033D51411FB1A93CB0235541ABB271E5063D514192A2DFEDB22355418D3395ED063D5141F2BFE1F4B2235541F10B05F6063D5141519A25FCB223554143F9EB59113D5141F5B97BC8BB23554127CC2E28123D514112E22311BB235541B81E85AB173D5141D7A370EDB52355417B895005193D51411EAA6714B523554176A0B3F0193D514159AAC967B42355417B4DAE401C3D51417D7FFF33B2235541C96FB6031E3D5141BFD6651CB02355411521128C203D5141B8B8BE91AE2355411ACE0CDC223D51419318E7EAAC2355415F61C1D9233D514197FA3F60AB235541FC167E9A263D514100632A2AAA23554101C478EA283D5141D951A648A9235541266450912A3D5141FBB52FDAA7235541E40CEAA82C3D51413D0D96C2A52355410E5ABC9F303D5141EFEA8DFFA3235541F1A22D5E343D5141ACC8853CA22355410FE7A975393D5141661640B8A0235541526DD87F393D5141DF1FDCB1A0235541B372D687393D5141E9F4D7ACA0235541E0385F8B393D51413415A0AAA0235541292540343A3D514179780FFC8F235541EA8486D3323D5141AFAD82B39323554133FA9346323D51416BE56F9096235541E74838BE2F3D5141027D85C697235541748658542C3D5141099B2C519923554128D5FCCB293D5141000CD98B982355413821337F293D514177AE5BA49823554178B81D6E243D514156A463689B235541C5940412253D5141B50B9B109D23554102934252253D51410B74B58D9D2355418C90EC45263D514108F521F19D235541CDFBE81D233D5141ABD67CC99F235541E3205D9F213D514165CD1F29A02355416ED49493203D514108524EF99F23554185A7A3E0203D5141810A070B9F235541A89DCED0233D514124DE91CA9D235541287BAEE2243D5141A2ACA72B9D23554130713946243D5141E7272A7E9B2355410AD7A380223D51415C8FC2759C2355413D0AD773123D5141EC51B85EA52355410AD7A3000D3D51418FC2F5D8A823554191ED61520B3D514121001904AA235541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302239 - 392516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -45  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A3603A3D5141D7A3706D8F2355410AD7A380223D51415C8FC2759C2355413D0AD773123D5141EC51B85EA52355410AD7A3000D3D51418FC2F5D8A8235541AE47E11A083D51410AD7A340AC235541F6285C7F033D51410AD7A300B02355417B14AE670E3D514152B81E65B92355419A999949113D51410AD7A3E0BB235541B81E85AB173D5141D7A370EDB5235541F6285C9F393D5141E17A149EA0235541666666863C3D514148E17AA49E235541EC51B87E423D51419A9999599A23554185EB5198423D51410AD7A3809923554114AE47E13D3D5141713D0AD7912355417B14AE373D3D5141E17A145E9023554148E17AD43B3D51410AD7A3F08E2355410AD7A3603A3D5141D7A3706D8F235541
+</a>
+
+<b>
+010600000001000000010300000001000000320000008EED61520B3D514122001904AA2355418FEAEA3E0B3D5141E973A111AA2355413D934E8E0A3D51413F746B8CAA2355417909D87F0A3D514156A77996AA235541B0A783B9033D51415888B732B0235541CA8110C5033D51411CB1A93CB0235541A9B271E5063D514193A2DFEDB2235541200B05F6063D51419D9925FCB223554143F9EB59113D5141F5B97BC8BB2355417CCC2E28123D5141C3E12311BB235541B81E85AB173D5141D7A370EDB52355417F895005193D514121AA6714B523554176A0B3F0193D514159AAC967B42355417B4DAE401C3D51417D7FFF33B2235541C96FB6031E3D5141BFD6651CB02355411521128C203D5141B8B8BE91AE2355411ACE0CDC223D51419318E7EAAC2355415F61C1D9233D514197FA3F60AB235541FC167E9A263D514100632A2AAA23554101C478EA283D5141D951A648A9235541266450912A3D5141FBB52FDAA7235541E40CEAA82C3D51413D0D96C2A52355410E5ABC9F303D5141EFEA8DFFA3235541F1A22D5E343D5141ACC8853CA223554112E7A975393D5141681640B8A0235541F72C5F84393D514180D804AFA0235541AF72D687393D5141EBF4D7ACA0235541DC385F8B393D51413715A0AAA02355412C2540343A3D51417C780FFC8F235541EA8486D3323D5141AFAD82B39323554133FA9346323D51416BE56F9096235541E74838BE2F3D5141027D85C697235541748658542C3D5141099B2C519923554128D5FCCB293D5141000CD98B982355412721337F293D514181AE5BA4982355417CB81D6E243D514154A463689B235541C9940412253D5141B50B9B109D23554103934252253D51410A74B58D9D2355418C90EC45263D514108F521F19D235541CBFBE81D233D5141ACD67CC99F235541E2205D9F213D514166CD1F29A023554172D49493203D514109524EF99F23554185A7A3E0203D5141810A070B9F235541AA9DCED0233D514125DE91CA9D235541267BAEE2243D5141A4ACA72B9D23554130713946243D5141E3272A7E9B2355410AD7A380223D51415C8FC2759C2355413D0AD773123D5141EC51B85EA52355410AD7A3000D3D51418FC2F5D8A82355418EED61520B3D514122001904AA235541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320455 - 3034982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -530  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE4791B080514148E17A349B6D544185EB5128B68051410AD7A3309D6D544152B81E55B680514148E17AD49C6D5441295C8F02B780514148E17AF4996D54415C8FC265B98051419A9999D9936D544166666646BC80514148E17AF48D6D54419A999989BF805141295C8F72896D544152B81E75C08051419A999999876D54410AD7A3F0C080514152B81E85856D544152B81E55C1805141333333C3826D5441333333F3C2805141D7A3704D7E6D5441F6285CAFC5805141CDCCCC0C7A6D5441713D0AC7C280514185EB5148786D544148E17A84B8805141A4703DEA716D544185EB5168B08051419A9999196C6D5441AE47E14AA78051417B14AE47646D54410AD7A360A5805141000000E0626D5441C3F5285CA480514114AE4721626D54411F85EB019F805141E17A149E696D5441295C8F229F8051410AD7A3F0706D5441F6285C4F9C805141AE47E11A776D5441713D0AB797805141713D0AA77A6D54417B14AEB7958051418FC2F518796D5441000000608B805141295C8F92756D54418FC2F5288B80514133333383766D5441AE47E16A868051415C8FC2558C6D54410AD7A3A09B80514114AE47D1936D544114AE4791B080514148E17A349B6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3F5285CA480514114AE4721626D544114AE47F19C805141000000B05C6D5441E17A143E958051415C8FC2855A6D54410000002092805141E17A14FE5B6D5441BC61CF6491805141538AFA025F6D5441311F36EC9580514176B7E03D606D544133946C35978051410FA564D65D6D5441A9C609069D8051413447815A606D54410DEF18DB9C805141669488FE646D5441294825F1988051416F52CFB56C6D54410A05AC489A8051414F0F560D6E6D5441BB5E988E99805141EED0B3CA706D5441A3F22FE197805141D8D98166706D544105A6086D96805141D002716B736D544122FF1483928051417526A9DA716D54414FED784B9380514146C30EC96F6D5441A66A9D00918051412FCCDC646F6D544181C8807C8E805141907C7E1A766D544104BFD2B08B805141D277A7B4746D5441FAC227668B805141EF6BA894756D5441B2BE9B9B8D805141A91F6155766D54413E5821998E8051416603519B766D5441F70BA54C92805141E980B9EE776D54417B14AEB7958051418FC2F518796D5441B02BDFDB958051413E622235796D5441CDF6261796805141267D5E4A796D5441BA5CA331978051415AB3303F7A6D5441713D0AB797805141713D0AA77A6D54415B6A5EA59B8051417E7E1E9E776D54418CFBFD7C9780514115E80698746D5441DD8B7EC99A805141CCA3CD8F6F6D544137F30F119B80514152848C566F6D5441991B41E79E80514118151072716D5441F06A6F079F805141849CD52B716D54415D0A63DE9E80514199E18FA2696D544149FD9D0CA1805141A0B8A09D666D5441CBF3EF409E80514145DCD80C656D54418983905D9E805141C947618A636D5441730195429F80514164AA1B6C626D544154BE1B9AA08051417AA14DD0626D544140B156C8A2805141F735C552646D5441C3F5285CA480514114AE4721626D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320455 - 3515640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -530  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE4791B080514148E17A349B6D544185EB5128B68051410AD7A3309D6D544152B81E55B680514148E17AD49C6D5441295C8F02B780514148E17AF4996D54415C8FC265B98051419A9999D9936D544166666646BC80514148E17AF48D6D54419A999989BF805141295C8F72896D544152B81E75C08051419A999999876D54410AD7A3F0C080514152B81E85856D544152B81E55C1805141333333C3826D5441333333F3C2805141D7A3704D7E6D5441F6285CAFC5805141CDCCCC0C7A6D5441713D0AC7C280514185EB5148786D544148E17A84B8805141A4703DEA716D544185EB5168B08051419A9999196C6D5441AE47E14AA78051417B14AE47646D54410AD7A360A5805141000000E0626D5441C3F5285CA480514114AE4721626D54411F85EB019F805141E17A149E696D5441295C8F229F8051410AD7A3F0706D5441F6285C4F9C805141AE47E11A776D5441713D0AB797805141713D0AA77A6D54417B14AEB7958051418FC2F518796D5441000000608B805141295C8F92756D54418FC2F5288B80514133333383766D5441AE47E16A868051415C8FC2558C6D54410AD7A3A09B80514114AE47D1936D544114AE4791B080514148E17A349B6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3F5285CA480514114AE4721626D544114AE47F19C805141000000B05C6D5441E17A143E958051415C8FC2855A6D54410000002092805141E17A14FE5B6D5441BC61CF6491805141538AFA025F6D5441311F36EC9580514176B7E03D606D544133946C35978051410FA564D65D6D5441A9C609069D8051413447815A606D54410DEF18DB9C805141669488FE646D5441294825F1988051416F52CFB56C6D54410A05AC489A8051414F0F560D6E6D5441BB5E988E99805141EED0B3CA706D5441A3F22FE197805141D8D98166706D544105A6086D96805141D002716B736D544122FF1483928051417526A9DA716D54414FED784B9380514146C30EC96F6D5441A66A9D00918051412FCCDC646F6D544181C8807C8E805141907C7E1A766D544104BFD2B08B805141D277A7B4746D5441FAC227668B805141EF6BA894756D5441B2BE9B9B8D805141A91F6155766D54413E5821998E8051416603519B766D5441F70BA54C92805141E980B9EE776D54417B14AEB7958051418FC2F518796D5441B02BDFDB958051413E622235796D5441CDF6261796805141267D5E4A796D5441BA5CA331978051415AB3303F7A6D5441713D0AB797805141713D0AA77A6D54415B6A5EA59B8051417E7E1E9E776D54418CFBFD7C9780514115E80698746D5441DD8B7EC99A805141CCA3CD8F6F6D544137F30F119B80514152848C566F6D5441991B41E79E80514118151072716D5441F06A6F079F805141849CD52B716D54415D0A63DE9E80514199E18FA2696D544149FD9D0CA1805141A0B8A09D666D5441CBF3EF409E80514145DCD80C656D54418983905D9E805141C947618A636D5441730195429F80514164AA1B6C626D544154BE1B9AA08051417AA14DD0626D544140B156C8A2805141F735C552646D5441C3F5285CA480514114AE4721626D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661056 - 51245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000002C00000048E17A2478C25041713D0A4775CA5441713D0A1782C2504114AE476183CA54418FC2F54873C2504148E17A9484CA5441D7A3708D6CC25041713D0A0785CA54417B14AE7767C250411F85EBA185CA54418FC2F55866C25041666666A67ECA54413D0AD72365C25041B81E85DB75CA5441A4703D6A63C25041AE47E1AA6DCA5441A4703D3A60C25041B81E855B64CA54410AD7A3E05EC2504185EB514862CA5441F6285CAF5AC25041D7A3706D64CA5441CDCCCCAC53C2504114AE47D168CA5441F6285C7F4AC250419A9999796FCA5441295C8F4244C250415C8FC2D573CA54413333335343C2504185EB513874CA54417B14AE273EC25041EC51B83E76CA5441EC51B84E3EC250418FC2F54878CA5441F6285C4F40C2504148E17AB47FCA5441D7A3706D41C250413D0AD76385CA5441D7A370FD41C250415C8FC2858BCA5441D7A370CD41C2504114AE470191CA544148E17A3441C25041AE47E17A94CA5441333333433EC250418FC2F508A6CA5441666666D63EC2504166666656AACA5441D7A3708D40C250410AD7A300AECA5441295C8FE243C2504152B81EC5B2CA54410AD7A3A057C25041EC51B82ECDCA5441295C8F9259C2504166666676CDCA5441333333535BC250410AD7A380CCCA544114AE472171C25041713D0A479CCA544185EB514872C2504185EB51289CCA54411F85EBB195C250413D0AD77398CA5441295C8F3294C250418FC2F5F894CA5441D7A3708D84C2504152B81EA570CA54411F85EB118CC250410AD7A3F06DCA5441000000D082C25041F6285C8F5FCA54418FC2F51877C25041B81E85CB51CA54410AD7A30071C2504114AE47A157CA5441713D0A476CC25041EC51B80E5BCA544148E17A2468C25041F6285C8F5DCA544148F2E5F163C2504173B9CFCB5FCA5441CF5D0D366FC25041523184CD6DCA54410245A4C474C25041115F9B6776CA544148E17A2478C25041713D0A4775CA5441
+</a>
+
+<b>
+010600000002000000010300000001000000360000009820F1F05EC25041CC6A606162CA5441BBBD5E7A5DC2504189F29EFF62CA544119880C7259C250416FCD273465CA5441CDCCCCAC53C2504114AE47D168CA5441CC9051E54CC250419A9639BC6DCA5441F6285C7F4AC250419A9999796FCA5441295C8F4244C250415C8FC2D573CA54411398B1D043C25041A367A50474CA5441E8AC47D143C25041ED40E10674CA5441C3F6F2F844C250411D75D3A477CA54417D859CFC45C250415C1C571B7CCA544171DD7B0946C250410130E27B7CCA5441F662280347C250412CA8C12D83CA544162CA343447C250416D48926C84CA5441A94EA81347C25041D7035A7586CA54413D6FFA2547C250417C889D198ACA544162CA343447C25041406860048BCA54413614460047C2504178145D0F8ECA5441000360B246C25041D276484E91CA544195F72B9F46C250413F96178391CA54410350D6BF44C25041A6D9F6F196CA54414AD4265D44C25041C64C051A98CA54410DCB9B4F44C25041746A9D3798CA5441493910A041C25041214A07169ECA5441A4A873F73FC250416214007AA2CA5441420AFB0540C25041F32D7D7FA2CA5441828345E73FC25041CD94D4A4A2CA54410B2DA3E63FC25041764C82A6A2CA54410FA54DA43EC25041220C8D2DA4CA54415519538B3EC2504142DBA95AA4CA5441333333433EC250418FC2F508A6CA5441666666D63EC2504166666656AACA5441D7A3708D40C250410AD7A300AECA5441295C8FE243C2504152B81EC5B2CA54410AD7A3A057C25041EC51B82ECDCA54418B2F1EA058C2504150917F53CDCA54417170CDC659C250416C3AC859CDCA5441EB1835B75AC250410E4C17D6CCCA544108658C425BC2504112F5C289CCCA5441DD3E2EA46CC2504144B07134A6CA544114AE472171C25041713D0A479CCA54414A255BC56BC2504180FCFC2D93CA5441D402830668C25041872DE2DB8BCA54419EDFE69C66C25041FC504EB888CA54417BDD417E66C25041EDF6347488CA5441403F020167C25041B7E5C89486CA54419A53956E67C25041F96489B485CA54412CF75DEA66C250417C0EEC3082CA54418FC2F55866C25041666666A67ECA54413D0AD72365C25041B81E85DB75CA544120C355C463C25041BCABA2566FCA544128222AFA61C25041F2BE038369CA54415302E64860C25041AB90558664CA54419820F1F05EC25041CC6A606162CA544101030000000100000013000000D7A3708D84C2504152B81EA570CA544172D2C5A584C25041A94A5D9C70CA54411F85EB118CC250410AD7A3F06DCA5441000000D082C25041F6285C8F5FCA54418FC2F51877C25041B81E85CB51CA54410AD7A30071C2504114AE47A157CA5441713D0A476CC25041EC51B80E5BCA544148E17A2468C25041F6285C8F5DCA544114F7E5F163C2504161BFCFCB5FCA5441CC5D0D366FC25041533184CD6DCA54410445A4C474C250410C5F9B6776CA54413E76B87777C250411928C08075CA5441648F57DF77C25041B4BB225E75CA5441DED76DE077C25041ADC5C55D75CA54418BCE681478C25041A9D2DC4975CA54413750640778C25041E4E83B3775CA54410CF1027584C25041CD78789E70CA54412A84BE7A84C25041B345F1AB70CA5441D7A3708D84C2504152B81EA570CA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729708 - 1619048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -734  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCCDC13AE50413D0AD763BC3955415C8FC28527AE5041F6285CEFC039554149BA3B862CAE50412D2C7C17C23955411ADACD1E2BAE5041E887ACADA73955412147D42526AE5041789DFE8FA63955418FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC395541
+</a>
+
+<b>
+010600000001000000010300000001000000080000008FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC3955416FAC78C027AE50418C0EF0FCC03955419BF7C1D22CAE50419D807F12A839554138D014C12AAE50415899FF97A73955411F47D42526AE5041759DFE8FA63955418FC2F5D81CAE50410AD7A360A4395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729708 - 3428028
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -734  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCCDC13AE50413D0AD763BC3955415C8FC28527AE5041F6285CEFC039554149BA3B862CAE50412D2C7C17C23955411ADACD1E2BAE5041E887ACADA73955412147D42526AE5041789DFE8FA63955418FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC395541
+</a>
+
+<b>
+010600000001000000010300000001000000080000008FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC3955416FAC78C027AE50418C0EF0FCC03955419BF7C1D22CAE50419D807F12A839554138D014C12AAE50415899FF97A73955411F47D42526AE5041759DFE8FA63955418FC2F5D81CAE50410AD7A360A4395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618821 - 1563477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000010000000500000012EBB1D1F2BF5041AF561C13A8F55441D7A3706DE0BF5041B81E855BAAF5544100000040F2BF50418FC2F528ACF554417F167E8DF3BF5041F8DB8389ABF5544112EBB1D1F2BF5041AF561C13A8F55441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000985EFB6DDDBF5041E0F6C5D6A9F55441C62DEACED9BF50419E228D27A9F554415DE1F84DDABF504168A0C571AAF55441FAD66410DBBF50412EDFE19CABF55441FAD66410DBBF504127F4DBF4ACF554415254CB89DABF504149C558F1AEF554417EE08DE8D9BF5041EF461111B1F55441C62DEACED9BF5041FA8937F8B2F554414A98CC01D9BF504116E5482CB5F55441CD02AF34D8BF50412553AAADB8F55441A15EF658D8BF5041FEC5A064BAF5544196D1C894D8BF5041546DFB8DBCF554416A1E19D0DCBF504183E32C7BBAF55441565CA4B7DFBF504138946DF7B0F554417C2BD735E7BF50416D09220BABF5544189422636EBBF5041E948BA72ABF554414D352F58F1BF5041CB9589A8ABF55441ABC5B125F3BF5041FBB20FF5AAF5544114EBB1D1F2BF5041AE561C13A8F55441D7A3706DE0BF5041B81E855BAAF55441985EFB6DDDBF5041E0F6C5D6A9F55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618821 - 3278742
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000010000000500000012EBB1D1F2BF5041AF561C13A8F55441D7A3706DE0BF5041B81E855BAAF5544100000040F2BF50418FC2F528ACF554417F167E8DF3BF5041F8DB8389ABF5544112EBB1D1F2BF5041AF561C13A8F55441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000985EFB6DDDBF5041E0F6C5D6A9F55441C62DEACED9BF50419E228D27A9F554415DE1F84DDABF504168A0C571AAF55441FAD66410DBBF50412EDFE19CABF55441FAD66410DBBF504127F4DBF4ACF554415254CB89DABF504149C558F1AEF554417EE08DE8D9BF5041EF461111B1F55441C62DEACED9BF5041FA8937F8B2F554414A98CC01D9BF504116E5482CB5F55441CD02AF34D8BF50412553AAADB8F55441A15EF658D8BF5041FEC5A064BAF5544196D1C894D8BF5041546DFB8DBCF554416A1E19D0DCBF504183E32C7BBAF55441565CA4B7DFBF504138946DF7B0F554417C2BD735E7BF50416D09220BABF5544189422636EBBF5041E948BA72ABF554414D352F58F1BF5041CB9589A8ABF55441ABC5B125F3BF5041FBB20FF5AAF5544114EBB1D1F2BF5041AE561C13A8F55441D7A3706DE0BF5041B81E855BAAF55441985EFB6DDDBF5041E0F6C5D6A9F55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466263 - 4372015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -304  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703DBAC9A0504133333393E02E554148E17A64C8A0504166666646FD2E5541AE47E18AE0A05041295C8F92002F554185EB5128FAA0504148E17A14042F5541B81E85EBFAA0504166666636032F554114AE4791FAA05041C3F5289C012F5541295C8F02F9A050417B14AE57FD2E5541000000B0F6A050415C8FC255F82E55419A999949F4A05041CDCCCC6CF52E5541EC51B8FEF0A050410AD7A360F22E5541D7A370DDF1A05041EC51B82EEF2E554133333343EAA0504166666676E22E5541F6285CFFDDA05041AE47E14AE22E55413D0AD7C3CAA0504152B81EB5DF2E5541A4703DBAC9A0504133333393E02E5541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4703DBAC9A0504133333393E02E554148E17A64C8A0504166666646FD2E5541A2D5EB86DEA0504130171C4C002F5541E55A2822DFA050417DBFF044FC2E5541A261BC58DFA050413F2B8B47FA2E5541D578E966DEA05041F6285C6FF92E5541FA7E6AECDEA0504191ED7C47F52E5541190ADEF9E1A0504148F597DFF52E5541754D5368E1A05041B5B8095BF92E554175931834E0A05041295C8FB2FA2E5541461E47EADFA0504131E1D455FD2E5541A261BC58DFA05041552B31AEFF2E55419BEB7291DFA050419D878070002F554185EB5128FAA0504148E17A14042F5541B81E85EBFAA0504166666636032F554114AE4791FAA05041C3F5289C012F5541295C8F02F9A050417B14AE57FD2E5541000000B0F6A050415C8FC255F82E55419A999949F4A05041CDCCCC6CF52E5541EC51B8FEF0A050410AD7A360F22E5541D7A370DDF1A05041EC51B82EEF2E554133333343EAA0504166666676E22E5541F6285CFFDDA05041AE47E14AE22E55413D0AD7C3CAA0504152B81EB5DF2E5541A4703DBAC9A0504133333393E02E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 3088067
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B84544133333313B31551418FC2F5E85884544166666626C01551413D0AD733528454418FC2F588D6155141713D0A0744845441F6285C5FE5155141295C8F123984544148E17A04F115514100000030308454415C8FC2050116514148E17A342284544185EB51F8FB155141B81E855B1D845441713D0AE7F7155141333333E318845441713D0AD7E5155141B81E85FB28845441B81E857BDC155141AE47E19A3084544152B81E55CE155141666666463C84544152B81E55C91551413D0AD77340845441666666D6C71551418FC2F59841845441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F845441DCB9E7DFB7155141D3347E992E845441A79B7CD9B41551417AC16A693184544154D139A8B2155141D7D92E7333845441483FCAEAAB155141893FC3013A84544108BBB0B7A01551414EC7CFF44484544197213526951551412979284B50845441BCF4673690155141D2FD19CC54845441CFC947FD8C1551416F7787855784544174450DAF8A155141EA187632598454413AA9791486155141949E20EE5C845441445BBBAB83155141AF68468F5E845441730051B58A1551418CB975496B8454410C469E748D15514175C3C1E369845441BF4B3BDC8F155141FEBC4F756884544175AA951696155141D92DE65264845441D90B1CF7A1155141647EBA625C8454416291F8C0A615514132D0012A59845441D107A79DB2155141E44E212151845441AEA939A5B9155141C72E93534C845441A8A8A866BC155141062D82614A845441A1A9F32BC215514183F7ECF24584544126EFA0E4C715514136FE0F8E41845441BBF45825CE1551412A5E506E3C8454419D290680E115514139158A842C8454416E03C707E9155141D664BF2326845441AC9A0950F8155141B8D7C25518845441791C8C30E9155141AFD4F54307845441787A9164E7155141D84FA65105845441E29DF131E5155141F2582AC604845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 3431620
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B84544133333313B31551418FC2F5E85884544166666626C01551413D0AD733528454418FC2F588D6155141713D0A0744845441F6285C5FE5155141295C8F123984544148E17A04F115514100000030308454415C8FC2050116514148E17A342284544185EB51F8FB155141B81E855B1D845441713D0AE7F7155141333333E318845441713D0AD7E5155141B81E85FB28845441B81E857BDC155141AE47E19A3084544152B81E55CE155141666666463C84544152B81E55C91551413D0AD77340845441666666D6C71551418FC2F59841845441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F845441DCB9E7DFB7155141D3347E992E845441A79B7CD9B41551417AC16A693184544154D139A8B2155141D7D92E7333845441483FCAEAAB155141893FC3013A84544108BBB0B7A01551414EC7CFF44484544197213526951551412979284B50845441BCF4673690155141D2FD19CC54845441CFC947FD8C1551416F7787855784544174450DAF8A155141EA187632598454413AA9791486155141949E20EE5C845441445BBBAB83155141AF68468F5E845441730051B58A1551418CB975496B8454410C469E748D15514175C3C1E369845441BF4B3BDC8F155141FEBC4F756884544175AA951696155141D92DE65264845441D90B1CF7A1155141647EBA625C8454416291F8C0A615514132D0012A59845441D107A79DB2155141E44E212151845441AEA939A5B9155141C72E93534C845441A8A8A866BC155141062D82614A845441A1A9F32BC215514183F7ECF24584544126EFA0E4C715514136FE0F8E41845441BBF45825CE1551412A5E506E3C8454419D290680E115514139158A842C8454416E03C707E9155141D664BF2326845441AC9A0950F8155141B8D7C25518845441791C8C30E9155141AFD4F54307845441787A9164E7155141D84FA65105845441E29DF131E5155141F2582AC604845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323608 - 1851955
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001C00000052B81EA588C850419A9999D9F2A6544114AE474183C8504114AE47E1FBA654410AD7A38081C85041C3F5289CFEA65441B81E850B75C850411F85EB8113A754410AD7A3B07AC8504185EB514814A754410AD7A3608FC85041713D0AA7F1A654410AD7A30093C8504152B81EC5ECA6544185EB51D896C85041A4703DCAE6A65441295C8F329BC850413D0AD7C3DDA654415C8FC2659DC850418FC2F5B8D6A65441E17A146E9EC85041E17A14FECFA65441000000609DC85041295C8FE2C8A65441B81E859B9CC8504114AE4781C5A65441A4703D6A9BC85041AE47E14AC2A65441295C8F3297C85041AE47E13ABAA65441E17A14EE92C850415C8FC245B3A6544114AE477195C8504114AE47A1BAA654417B14AEF797C850410AD7A3A0BFA65441333333F398C850413D0AD7C3C2A6544114AE479199C85041C3F5285CC7A6544152B81EE599C850419A999909CCA654419A99994999C850413D0AD763D3A654410AD7A3C097C8504152B81E75D9A65441D7A370AD95C850417B14AEE7DEA6544152B81EA592C850417B14AEB7E3A654415C8FC2658FC85041D7A3709DE8A654417B14AE378CC850419A999969EDA6544152B81EA588C850419A9999D9F2A65441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000C4CD303C97C85041D8694A4DBAA654418588712797C850414D99C128BAA65441E17A14EE92C850415C8FC245B3A65441FF4E8C5793C8504149BA9B7AB4A65441BB1D135A95C850414A865054BAA654416F20B95296C85041FCCC033DBDA654415C8FC22597C85041E17A14AEBFA65441218BB4E996C850418868033BC1A65441D3A43BF996C850418C399736C3A654414FCBAC2F97C8504109AA42D5C6A6544107996B4997C8504170365F7AC7A654411B38003797C85041B4E79D66C8A65441F104A7FE96C85041DE931499CAA654410000009096C850419A9999E9CEA654417B14AEB795C8504133333373D2A65441C3F528FC93C8504148E17A24D8A65441EC51B8DE91C8504133333323DDA65441A4703D4A8FC850417B14AEE7E1A654411F85EB718CC8504148E17A84E6A65441A4703D1A89C85041713D0AB7EAA65441ADA6C1A285C85041A5AA78B4EEA6544189EAF0647EC850413FB8AF56F8A6544152B81EF577C8504152B81E0503A754413D0AD72375C8504148E17AB407A754415C8FC2556FC850418FC2F5B812A75441C41AA0AC7AC8504194D2C44714A754419CDC1FDD82C85041D8B2018F06A75441ED19F4618BC85041F255D202F8A65441DD086C788FC8504158120287F1A654412D4FEE1F92C85041B1A8C7F3EDA654416050B0AD94C85041B9946629EAA65441BB9FC1CC96C85041297C3CDCE6A654419B69A03198C85041FF4F3DFEE3A6544177CC0EB29AC85041E2BF4ACEDEA65441B32210279BC85041B18BD1A9DDA65441A0C49F809BC850418239F2C9DCA6544153B702699DC850412DA2C5A3D6A65441E17A146E9EC85041E17A14FECFA65441D387516B9DC850415FEDCF2EC9A65441B81E859B9CC8504114AE4781C5A65441888E186E9BC85041727E4455C2A65441EFDC50B899C85041CB635B0DBFA65441C4CD303C97C85041D8694A4DBAA65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323608 - 3479531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001C00000052B81EA588C850419A9999D9F2A6544114AE474183C8504114AE47E1FBA654410AD7A38081C85041C3F5289CFEA65441B81E850B75C850411F85EB8113A754410AD7A3B07AC8504185EB514814A754410AD7A3608FC85041713D0AA7F1A654410AD7A30093C8504152B81EC5ECA6544185EB51D896C85041A4703DCAE6A65441295C8F329BC850413D0AD7C3DDA654415C8FC2659DC850418FC2F5B8D6A65441E17A146E9EC85041E17A14FECFA65441000000609DC85041295C8FE2C8A65441B81E859B9CC8504114AE4781C5A65441A4703D6A9BC85041AE47E14AC2A65441295C8F3297C85041AE47E13ABAA65441E17A14EE92C850415C8FC245B3A6544114AE477195C8504114AE47A1BAA654417B14AEF797C850410AD7A3A0BFA65441333333F398C850413D0AD7C3C2A6544114AE479199C85041C3F5285CC7A6544152B81EE599C850419A999909CCA654419A99994999C850413D0AD763D3A654410AD7A3C097C8504152B81E75D9A65441D7A370AD95C850417B14AEE7DEA6544152B81EA592C850417B14AEB7E3A654415C8FC2658FC85041D7A3709DE8A654417B14AE378CC850419A999969EDA6544152B81EA588C850419A9999D9F2A65441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000C4CD303C97C85041D8694A4DBAA654418588712797C850414D99C128BAA65441E17A14EE92C850415C8FC245B3A65441FF4E8C5793C8504149BA9B7AB4A65441BB1D135A95C850414A865054BAA654416F20B95296C85041FCCC033DBDA654415C8FC22597C85041E17A14AEBFA65441218BB4E996C850418868033BC1A65441D3A43BF996C850418C399736C3A654414FCBAC2F97C8504109AA42D5C6A6544107996B4997C8504170365F7AC7A654411B38003797C85041B4E79D66C8A65441F104A7FE96C85041DE931499CAA654410000009096C850419A9999E9CEA654417B14AEB795C8504133333373D2A65441C3F528FC93C8504148E17A24D8A65441EC51B8DE91C8504133333323DDA65441A4703D4A8FC850417B14AEE7E1A654411F85EB718CC8504148E17A84E6A65441A4703D1A89C85041713D0AB7EAA65441ADA6C1A285C85041A5AA78B4EEA6544189EAF0647EC850413FB8AF56F8A6544152B81EF577C8504152B81E0503A754413D0AD72375C8504148E17AB407A754415C8FC2556FC850418FC2F5B812A75441C41AA0AC7AC8504194D2C44714A754419CDC1FDD82C85041D8B2018F06A75441ED19F4618BC85041F255D202F8A65441DD086C788FC8504158120287F1A654412D4FEE1F92C85041B1A8C7F3EDA654416050B0AD94C85041B9946629EAA65441BB9FC1CC96C85041297C3CDCE6A654419B69A03198C85041FF4F3DFEE3A6544177CC0EB29AC85041E2BF4ACEDEA65441B32210279BC85041B18BD1A9DDA65441A0C49F809BC850418239F2C9DCA6544153B702699DC850412DA2C5A3D6A65441E17A146E9EC85041E17A14FECFA65441D387516B9DC850415FEDCF2EC9A65441B81E859B9CC8504114AE4781C5A65441888E186E9BC85041727E4455C2A65441EFDC50B899C85041CB635B0DBFA65441C4CD303C97C85041D8694A4DBAA65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326721 - 1354039
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000100000001030000000100000013000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC54418FC2F51887225141B81E85AB12BC5441C3F5286C8B225141295C8F6215BC544114AE47619122514114AE47411ABC54419A9999199A225141CDCCCC5C20BC54415C8FC2059D22514148E17A5419BC5441713D0A479F2251417B14AEE713BC54415C8FC2B59F225141E17A14DE12BC5441D7A3706DA22251415C8FC2550CBC5441295C8F32A5225141B81E85AB05BC54410AD7A3A0A022514148E17AE403BC54411F85EB51972251413333332301BC5441D7A3703D8F2251410AD7A3C0FEBB544148E17A148922514133333363FCBB5441666666F686225141B81E850B01BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC5441F14ACE1786225141002EF36B12BC54419EEC41FC892251418393A6C814BC544147B22B7A8B225141DB5C036E15BC5441B48731618E22514178FD66CD17BC54418994EF9B8F22514172CFB0CE18BC54416395710D91225141DC56BFFC19BC5441F7ED43FE92225141021789621BBC5441A4097A329522514154BDB5ED1CBC544100050D43972251418861068A1EBC54418083E40298225141E4F70B511FBC54410BC970039922514174FEEC0220BC54419A9999199A225141CDCCCC5C20BC5441B3F89F809A2251417F5AE3641FBC54415C8FC2059D22514148E17A5419BC5441713D0A479F2251417B14AEE713BC54415C8FC2B59F225141E17A14DE12BC5441D7A3706DA22251415C8FC2550CBC5441295C8F32A5225141B81E85AB05BC54410AD7A3A0A022514148E17AE403BC54411F85EB51972251413333332301BC5441D7A3703D8F2251410AD7A3C0FEBB544148E17A148922514133333363FCBB5441666666F686225141B81E850B01BC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326721 - 3476552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000100000001030000000100000013000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC54418FC2F51887225141B81E85AB12BC5441C3F5286C8B225141295C8F6215BC544114AE47619122514114AE47411ABC54419A9999199A225141CDCCCC5C20BC54415C8FC2059D22514148E17A5419BC5441713D0A479F2251417B14AEE713BC54415C8FC2B59F225141E17A14DE12BC5441D7A3706DA22251415C8FC2550CBC5441295C8F32A5225141B81E85AB05BC54410AD7A3A0A022514148E17AE403BC54411F85EB51972251413333332301BC5441D7A3703D8F2251410AD7A3C0FEBB544148E17A148922514133333363FCBB5441666666F686225141B81E850B01BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC5441F14ACE1786225141002EF36B12BC54419EEC41FC892251418393A6C814BC544147B22B7A8B225141DB5C036E15BC5441B48731618E22514178FD66CD17BC54418994EF9B8F22514172CFB0CE18BC54416395710D91225141DC56BFFC19BC5441F7ED43FE92225141021789621BBC5441A4097A329522514154BDB5ED1CBC544100050D43972251418861068A1EBC54418083E40298225141E4F70B511FBC54410BC970039922514174FEEC0220BC54419A9999199A225141CDCCCC5C20BC5441B3F89F809A2251417F5AE3641FBC54415C8FC2059D22514148E17A5419BC5441713D0A479F2251417B14AEE713BC54415C8FC2B59F225141E17A14DE12BC5441D7A3706DA22251415C8FC2550CBC5441295C8F32A5225141B81E85AB05BC54410AD7A3A0A022514148E17AE403BC54411F85EB51972251413333332301BC5441D7A3703D8F2251410AD7A3C0FEBB544148E17A148922514133333363FCBB5441666666F686225141B81E850B01BC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327817 - 214526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000082000000E17A14AEC322514148E17A74E41055415C8FC205C5225141D7A3709DE41055410AD7A300C8225141B81E85DBE4105541B81E85FBCA225141D7A3709DE41055419A999989D022514185EB51F8E310554133333373D5225141666666A6E31055418FC2F598D72251415C8FC275E3105541713D0AF7D8225141CDCCCCECE2105541CDCCCC1CDB22514114AE47A1E210554152B81E75DC225141AE47E11AE21055419A999939DD225141295C8FE2DF10554185EB5138DD225141A4703D5ADD105541AE47E17AD52251417B14AE27C51055410AD7A3C0D42251410AD7A3C0C11055418FC2F5A8D32251411F85EB61BB1055413D0AD743D22251418FC2F5E8B0105541B81E857BD2225141F6285CAFAE105541295C8F22D2225141333333A3AD105541D7A370DDCF22514185EB5118A8105541C3F5284CCF225141EC51B86EA5105541D7A370DDCF22514114AE4741A41055418FC2F558D12251418FC2F598A2105541AE47E17AD122514166666606A1105541E17A144ED1225141C3F5285C9D10554166666616D1225141666666A699105541666666A6D0225141B81E85DB961055415C8FC235CF2251419A999989921055410AD7A3E0CC2251418FC2F5888E1055411F85EBA1C92251410AD7A3708910554185EB51E8C32251410AD7A3408B105541C3F528CCC22251417B14AEC787105541D7A370BDBF225141B81E852B8410554152B81EA5BB2251417B14AEA77F105541A4703D7AB7225141295C8F527C1055410AD7A380B4225141AE47E14A781055418FC2F598B6225141F6285C5F7610554152B81E75B72251419A9999B9761055418FC2F5D8B7225141EC51B81E78105541295C8FA2B922514152B81E35781055417B14AE97BA2251413D0AD71379105541EC51B8DEBC2251418FC2F5E87B1055411F85EBA1BD22514114AE47217D10554114AE4771C422514185EB5158841055419A999949C7225141AE47E1AA82105541D7A370ADC6225141D7A3708D7E10554148E17A04C62251411F85EB917C105541E17A14AEC3225141295C8F627D1055417B14AE57C1225141713D0A677B10554114AE47B1BF225141295C8F927A1055413D0AD783BE225141713D0AC77A1055419A999939BE225141A4703D0A791055411F85EB21BE22514152B81E057710554133333313BE225141A4703DEA73105541713D0AF7BD225141B81E85AB72105541F6285CDFBE22514148E17A9472105541333333B3BE225141295C8F6270105541AE47E14ABD2251413D0AD7F36D10554133333393BB225141F6285CAF6B105541333333C3B7225141A4703D7A6D1055410AD7A3E0B722514114AE47C16E1055410AD7A380B62251415C8FC2D56F105541D7A3701DB5225141E17A14EE6E105541CDCCCCFCB3225141F6285CBF6F105541A4703DFAB622514114AE471174105541B81E851BB72251416666667675105541A4703D5AB42251416666661678105541AE47E15AB4225141666666367B1055418FC2F5F8B4225141F6285C2F7F10554152B81E05B62251413D0AD71383105541CDCCCC5CB72251415C8FC2A586105541AE47E12AB8225141295C8FD288105541CDCCCC1CB8225141A4703DEA8A105541AE47E15AB822514148E17AF48C1055417B14AE17B7225141A4703DDA8F1055410AD7A320B6225141B81E85EB911055419A999979B622514114AE4781931055415C8FC255B72251411F85EBD19410554148E17A44B9225141713D0A0796105541CDCCCCECBB225141713D0AF79610554185EB51F8BC225141D7A3700D9A1055418FC2F528BD22514114AE47719C10554114AE4761BC225141666666669E10554185EB5198BA225141A4703DBA9E1055419A999959B922514166666616A1105541E17A14FEB9225141AE47E14AA2105541713D0A27BA225141295C8FA2A3105541E17A14EEBA2251417B14AE47A41055417B14AE77BB225141CDCCCC7CA5105541333333F3BB2251418FC2F518A7105541666666B6BB225141D7A3703DA91055413D0AD743BB22514100000040AA10554114AE4711BB225141CDCCCCECAA105541295C8F42BA22514152B81E35AB10554152B81E25B8225141C3F5289CAB105541D7A370EDB6225141713D0A77AB10554185EB5168B4225141295C8FD2AA105541D7A370EDAE2251418FC2F578B51055418FC2F5C8A9225141AE47E17AC0105541713D0A97A6225141295C8F32C7105541EC51B8CEA5225141D7A370BDCA105541B81E857BA3225141B81E85BBCD105541000000709D2251411F85EBB1D7105541B81E85EB97225141AE47E1DADE1055418FC2F58896225141295C8F12E110554100000090962251413D0AD783E310554185EB51689522514100000050E510554133333373932251417B14AE37E71055415C8FC2C58D2251417B14AEC7EC105541B81E85FB8B2251417B14AE67F010554152B81E958B22514185EB5108F2105541333333438B2251415C8FC2D5F3105541E17A141E8B22514185EB51C8F5105541EC51B8CE8A22514152B81E55F81055410AD7A3D08A22514185EB5168FA10554152B81EF5A8225141C3F528DCFA105541F6285C1FA8225141A4703D7AF61055413D0AD7D3A62251415C8FC235F41055411F85EB11A7225141AE47E19AF110554185EB51B8A622514100000040EE10554166666656A7225141713D0AB7ED105541713D0AD7A8225141EC51B8CEEB10554185EB5178AB2251411F85EBE1E8105541B81E85EBAC225141A4703DBAE710554114AE47E1AE225141C3F528BCE610554152B81E05B1225141713D0A57E610554148E17AB4B42251419A999909E6105541295C8F42BA2251413D0AD743E4105541CDCCCCACBC2251413D0AD7E3E3105541295C8F42BE2251411F85EBF1E3105541E17A14AEC322514148E17A74E4105541
+</a>
+
+<b>
+010600000001000000010300000001000000A5000000696D3D6FC72251416D1DB0CFE410554119E2C89FC7225141DB68A3D3E410554156EF55ECC7225141D622DED9E4105541AF81C8D6C8225141CE0A18CAE4105541F07FB005CB225141B94A0196E4105541D5AA2576CD225141A19EC053E41055419A999989D022514185EB51F8E31055412632AC07D1225141F18D1BF0E3105541A9C87AABD52251417DB06BA1E31055418FC2F598D72251415C8FC275E3105541713D0AF7D8225141CDCCCCECE21055417B55DDCDDA2251415D8F1FACE21055416EB5BB27DB2251414E2B039DE210554113E29D73DC225141B567DC1AE210554151EC7437DD225141442AD2E3DF10554140B2C838DD225141DDA03D45DE10554185EB5138DD225141A4703D5ADD105541A3CDEF4BDB22514164D81965D710554166C318E8D5225141FD71B37EC6105541AE47E17AD52251417B14AE27C51055410AD7A3C0D42251410AD7A3C0C110554149B78C99D3225141E8EA7B82BB1055413D0AD743D22251418FC2F5E8B0105541B81E857BD2225141F6285CAFAE105541295C8F22D2225141333333A3AD105541D7A370DDCF22514185EB5118A8105541C3F5284CCF225141EC51B86EA5105541D7A370DDCF22514114AE4741A4105541D8C04E57D1225141B1843B90A2105541AE47E17AD122514166666606A1105541E17A144ED1225141C3F5285C9D10554166666616D1225141666666A699105541CDE7DA9AD02251411442C5DA961055415C8FC235CF2251419A999989921055410AD7A3E0CC2251418FC2F5888E1055411F85EBA1C92251410AD7A3708910554185EB51E8C32251410AD7A3408B105541C3F528CCC22251417B14AEC787105541D7A370BDBF225141B81E852B8410554152B81EA5BB2251417B14AEA77F105541A4703D7AB7225141295C8F527C1055410AD7A380B4225141AE47E14A781055418FC2F598B6225141F6285C5F7610554152B81E75B72251419A9999B9761055418FC2F5D8B7225141EC51B81E78105541295C8FA2B922514152B81E35781055417B14AE97BA2251413D0AD71379105541EC51B8DEBC2251418FC2F5E87B1055411F85EBA1BD22514114AE47217D10554114AE4771C422514185EB515884105541F5B12540C7225141792174B082105541A42390D2C4225141960A49E17D10554155D73373C4225141E3A5D41D7D105541E17A14AEC3225141295C8F627D1055417B14AE57C1225141713D0A677B1055415E8548B1BF22514175C88F927A105541F6F5D583BE2251413C900AC77A105541678E9939BE22514179E23D0A791055411F85EB21BE22514152B81E057710554133333313BE225141A4703DEA73105541713D0AF7BD225141B81E85AB72105541F6285CDFBE22514148E17A9472105541333333B3BE225141295C8F6270105541AE47E14ABD2251413D0AD7F36D10554133333393BB225141F6285CAF6B105541333333C3B7225141A4703D7A6D1055410AD7A3E0B722514114AE47C16E1055410AD7A380B62251415C8FC2D56F105541CC4C841DB5225141A34D21EE6E1055413F93CDFCB3225141AD475DBF6F105541A4703DFAB622514114AE471174105541B81E851BB72251416666667675105541A4703D5AB42251416666661678105541AE47E15AB4225141666666367B1055418FC2F5F8B4225141F6285C2F7F10554152B81E05B62251413D0AD71383105541CDCCCC5CB72251415C8FC2A586105541AE47E12AB8225141295C8FD288105541CDCCCC1CB8225141A4703DEA8A105541AE47E15AB822514148E17AF48C1055417B14AE17B7225141A4703DDA8F1055410AD7A320B6225141B81E85EB911055419A999979B622514114AE4781931055415C8FC255B72251411F85EBD19410554148E17A44B9225141713D0A0796105541CDCCCCECBB225141713D0AF79610554185EB51F8BC225141D7A3700D9A1055418FC2F528BD22514114AE47719C10554114AE4761BC225141666666669E1055419A7A5398BA2251416B273DBA9E105541C44A6E26BA225141495520929F1055419A999959B922514166666616A1105541E17A14FEB9225141AE47E14AA2105541713D0A27BA225141295C8FA2A3105541E17A14EEBA2251417B14AE47A41055417B14AE77BB225141CDCCCC7CA5105541333333F3BB2251418FC2F518A7105541666666B6BB225141D7A3703DA9105541E23B3570BB22514133BFDCDBA91055413D0AD743BB22514100000040AA1055416B07C827BB2251410F88E59FAA10554182AC4811BB2251416543CCECAA105541DABD4711BB225141E396CCECAA10554114AE4711BB225141CDCCCCECAA105541295C8F42BA22514152B81E35AB10554152B81E25B8225141C3F5289CAB105541EDAD71EDB622514109720A77AB105541111471EDB6225141CF4A0A77AB105541D7A370EDB6225141713D0A77AB105541B92A5268B4225141466C8FD2AA10554120046CB7B2225141A40BDE1BAE105541D7A370EDAE2251418FC2F578B51055418AD1ABE7AC225141FCF63DCDB9105541244DF6C8A92251416A68E27AC0105541C134F596A62251417E95EE32C7105541EC51B8CEA5225141D7A370BDCA10554156B5877BA3225141E4C981BBCD105541F09124E9A0225141A50490F8D1105541000000709D2251411F85EBB1D7105541D23DC41F9D22514104BE091AD810554185C218EB972251410BC68EDBDE1055418FC2F58896225141295C8F12E110554100000090962251413D0AD783E310554185EB51689522514100000050E510554133333373932251417B14AE37E7105541FFB3C3C58D225141CDF5ACC7EC105541464346EE8B2251412BCC929DF010554152B81E958B22514185EB5108F2105541333333438B2251415C8FC2D5F3105541E17A141E8B22514185EB51C8F5105541C5ABF3F68A2251419A402E0AF710554199F1B8CE8A225141A9631D55F8105541A8BB99D08A22514169A9655DFA1055419FC199D08A225141311B6C5DFA105541597A23F79522514191FB2B93FA105541C0EDE6EFA8225141098955CDFA10554145C6B8D5A822514171C75D37FA1055414AC65A1FA822514125943E7AF61055413D0AD7D3A62251415C8FC235F4105541E197DB09A72251417411994DF110554185EB51B8A622514100000040EE10554118098E53A7225141E34A81B9ED105541713D0AD7A8225141EC51B8CEEB10554185EB5178AB2251411F85EBE1E8105541B81E85EBAC225141A4703DBAE710554114AE47E1AE225141C3F528BCE6105541E7B9F0E4B02251410586F95CE6105541C559F2E4B02251414139F95CE6105541C659F2E4B02251414139F95CE6105541A2D5F706B1225141C87E414DE610554179F0A720B1225141CBD4AF54E610554198E372B7B4225141FB445806E61055419C889F8CB522514188F3A1C4E5105541D7889F8CB522514176F3A1C4E51055419E163044BA225141A4054140E4105541CDCCCCACBC2251413D0AD7E3E3105541D4EDAEE0BD225141CC0D86EEE3105541295C8F42BE2251411F85EBF1E3105541BCA50511C1225141B03C8635E4105541E17A14AEC322514148E17A74E4105541BAB5D2E8C322514150257B7BE410554196DA62C3C62251410005B4C1E4105541A6E810D6C6225141CD2939C3E410554132A2DDF8C6225141461E0EC6E4105541696D3D6FC72251416D1DB0CFE4105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329646 - 1312752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -486  </desc>
+<a>
+0106000000010000000103000000020000000F000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF5441AE47E15AAC075141C3F528CCDEBF5441EC51B8AEAA075141E17A147EDEBF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF54415C8FC2357F075141F6285C8FF0BF54411F85EB2188075141C3F5287C01C05441295C8F72910751417B14AE2713C054410500000085EB5178A7075141295C8FC2E0BF5441A4703D3AA7075141F6285C2FE0BF5441E17A14EEA70751413D0AD7E3DFBF5441CDCCCC2CA8075141713D0A77E0BF544185EB5178A7075141295C8FC2E0BF5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF54413680AD00B007514158987817E2BF544135F3C775AE0751417A30D7B2E0BF5441F43E4C89A50751418AA7574AE4BF54416DF09D19A4075141A189F610E1BF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF54415C8FC2357F075141F6285C8FF0BF54411F85EB2188075141C3F5287C01C05441295C8F72910751417B14AE2713C05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329646 - 3405437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -486  </desc>
+<a>
+0106000000010000000103000000020000000F000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF5441AE47E15AAC075141C3F528CCDEBF5441EC51B8AEAA075141E17A147EDEBF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF54415C8FC2357F075141F6285C8FF0BF54411F85EB2188075141C3F5287C01C05441295C8F72910751417B14AE2713C054410500000085EB5178A7075141295C8FC2E0BF5441A4703D3AA7075141F6285C2FE0BF5441E17A14EEA70751413D0AD7E3DFBF5441CDCCCC2CA8075141713D0A77E0BF544185EB5178A7075141295C8FC2E0BF5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF54413680AD00B007514158987817E2BF544135F3C775AE0751417A30D7B2E0BF5441F43E4C89A50751418AA7574AE4BF54416DF09D19A4075141A189F610E1BF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF54415C8FC2357F075141F6285C8FF0BF54411F85EB2188075141C3F5287C01C05441295C8F72910751417B14AE2713C05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335003 - 1486491
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -332  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AE67412E51417B14AE179D325541A4703D6A3E2E51415C8FC2C59A3255410AD7A3B03A2E514152B81EF597325541666666F6362E51410AD7A390953255410AD7A3F0332E514152B81E05943255411F85EBC1352E514114AE47E19D325541CDCCCCFC362E5141C3F5287CA53255418FC2F508382E51415C8FC255AC3255417B14AE37392E51413D0AD793B4325541E17A144E3A2E5141D7A370BDB9325541C3F5281C3C2E51417B14AE47C2325541000000703E2E5141A4703DEACB32554152B81E353F2E5141295C8F42CE325541C3F5287C4A2E514100000070CC32554152B81E05492E51415C8FC2A5C43255417B14AEB7452E51418FC2F5F8AB3255410AD7A340442E51411F85EB219F3255410AD7A320432E5141F6285C7F9E325541A4703D5A422E5141B81E85CB9D3255417B14AE67412E51417B14AE179D325541
+</a>
+
+<b>
+010600000001000000010300000001000000210000007B14AE47272E514185EB519890325541AE47E19A272E5141E17A14CE95325541A4703D7A292E51415C8FC225A0325541CF4739FB2C2E5141C090D353B0325541810E019D2F2E514184C8307BBC325541E0209034312E5141EAF3DEC3C3325541F6E68C74322E5141C4F74563C8325541F8A999E4332E5141A2EF96C2CD325541F42DB25D342E5141AD8390DACF325541F39ABE00352E514102774347D03255417B14AE773F2E51415C8FC235CE3255417A6301803C2E51411F5A3B82C0325541336C8CE0392E5141B840D865B4325541DBAF70C3372E5141E6BE248FAA32554126FF29B6362E51410B9CFCC6A5325541B81E850B352E514148E17A149E3255415526DD18352E5141649DBF759A32554100DC6741352E5141112B9B25903255412984D540382E5141C262B8D483325541C051F8883A2E514166E559A679325541FDBFF3C53D2E51411C895D106B3255417B14AEF73E2E51411F85EBB165325541D7A3700D402E5141C3F528CC60325541F6285CEF3A2E51411F85EB715F325541F6285CBF312E51413D0AD7C35D32554148E17AB4302E5141333333335E3255419A9999F92F2E5141295C8F425F3255416ED23AAD2D2E5141FCBD269D6932554103E736EB2A2E51413100BB09763255415AD1B13D2A2E514115BD6E17793255413E5788E1292E5141A14168097B325541D7A3705D282E51410AD7A370833255417B14AE47272E514185EB519890325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335003 - 3307764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -332  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AE67412E51417B14AE179D325541A4703D6A3E2E51415C8FC2C59A3255410AD7A3B03A2E514152B81EF597325541666666F6362E51410AD7A390953255410AD7A3F0332E514152B81E05943255411F85EBC1352E514114AE47E19D325541CDCCCCFC362E5141C3F5287CA53255418FC2F508382E51415C8FC255AC3255417B14AE37392E51413D0AD793B4325541E17A144E3A2E5141D7A370BDB9325541C3F5281C3C2E51417B14AE47C2325541000000703E2E5141A4703DEACB32554152B81E353F2E5141295C8F42CE325541C3F5287C4A2E514100000070CC32554152B81E05492E51415C8FC2A5C43255417B14AEB7452E51418FC2F5F8AB3255410AD7A340442E51411F85EB219F3255410AD7A320432E5141F6285C7F9E325541A4703D5A422E5141B81E85CB9D3255417B14AE67412E51417B14AE179D325541
+</a>
+
+<b>
+010600000001000000010300000001000000210000007B14AE47272E514185EB519890325541AE47E19A272E5141E17A14CE95325541A4703D7A292E51415C8FC225A0325541CF4739FB2C2E5141C090D353B0325541810E019D2F2E514184C8307BBC325541E0209034312E5141EAF3DEC3C3325541F6E68C74322E5141C4F74563C8325541F8A999E4332E5141A2EF96C2CD325541F42DB25D342E5141AD8390DACF325541F39ABE00352E514102774347D03255417B14AE773F2E51415C8FC235CE3255417A6301803C2E51411F5A3B82C0325541336C8CE0392E5141B840D865B4325541DBAF70C3372E5141E6BE248FAA32554126FF29B6362E51410B9CFCC6A5325541B81E850B352E514148E17A149E3255415526DD18352E5141649DBF759A32554100DC6741352E5141112B9B25903255412984D540382E5141C262B8D483325541C051F8883A2E514166E559A679325541FDBFF3C53D2E51411C895D106B3255417B14AEF73E2E51411F85EBB165325541D7A3700D402E5141C3F528CC60325541F6285CEF3A2E51411F85EB715F325541F6285CBF312E51413D0AD7C35D32554148E17AB4302E5141333333335E3255419A9999F92F2E5141295C8F425F3255416ED23AAD2D2E5141FCBD269D6932554103E736EB2A2E51413100BB09763255415AD1B13D2A2E514115BD6E17793255413E5788E1292E5141A14168097B325541D7A3705D282E51410AD7A370833255417B14AE47272E514185EB519890325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335468 - 3064338
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -644  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47F1342D5141A4703D7A373255411F85EB61362D5141CDCCCC5C3C325541713D0AA7372D51413333333342325541A4703D5A382D5141C3F5280C45325541C3F528CC3B2D5141AE47E12A44325541713D0A273E2D51419A999949433255418FC2F5183D2D51418FC2F5383C325541000000803C2D514152B81E9537325541333333C33B2D51416666668634325541C3F5283C3B2D5141F6285C2F3132554152B81E95392D5141C3F528EC2832554166666636382D5141EC51B85E233255410AD7A3E0362D51417B14AE171C325541D7A370ED352D51416666666616325541EC51B81E352D51418FC2F52811325541A4703D6A342D5141666666D60C3255419A999919342D514148E17A640A325541CDCCCC8C302D51413D0AD74307325541713D0AA7302D5141EC51B82E0E325541B81E851B312D514133333323133255419A999999312D514148E17A6417325541B81E853B322D5141E17A14EE1B325541EC51B89E322D51411F85EB01203255410AD7A340332D51419A9999C924325541CDCCCC3C342D51413D0AD7D32F32554114AE47F1342D5141A4703D7A37325541
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000262DDA33312D5141A9B76BF513325541F436BB8C312D51419CD1C2F31632554153BCD7A2312D5141AF4B22A01732554173DD8AAD312D51417E9B8BF317325541D3518932322D5141A420705F1C3255417132ADE6322D514156DEFD52223255419571156B332D51411A9C50A526325541210EE0AB332D5141535F817B29325541459701EB332D514155D5153F2C32554185565A3A342D5141C79369B82F325541879EE165342D5141BD464B9131325541E222ADF1342D5141A606D378373255418D725FFC342D5141EDF4DE9F3732554172D98824352D51414E2F1D2838325541B04D7446352D5141C0982E9B38325541528C6532362D51411B6E95BB3B325541A0267A0D372D514184E25A713F32554189EADCE0372D5141345F6A1E43325541B20BDE4E382D5141E7D2E5DD443255418436497C382D5141314F7BFF4532554111D1AA8A382D5141F326666946325541645303DA382D514105DAC6B1483255414B3DCAB3392D5141C6B5DF0C49325541022769E03A2D51414BDB658549325541A106B28A3E2D51416A8092FD4A325541F90F0F9A3F2D514112D45D6A4B325541B77F38EF402D514199D7CBF24B325541E26A8AD1402D5141D611C69C4B3255415E409192402D5141828E41E64A325541C3D96633402D5141C6326FD2493255417AA0953F3F2D51413347C50F47325541258764EF3D2D5141A765454143325541141F4771422D514166C978064232554198990E9B452D51418FB0502B41325541402B966F4C2D5141C3D1B826403255410EECC938522D51415353F8493F325541C2C82262522D5141C762D6443F3255410E980E29522D5141A21F00A33E32554162C69CF2512D5141CFE2CD083E325541467BEEB7512D51419709B8623D3255413D729A30512D5141C071B2E33B325541C8C9EFAF502D5141EC9B87773A325541E6BA911D502D5141E77943D938325541DDF67FAF4F2D51415979BBA1373255410FB4C22B4E2D514150AA4E5833325541A524E80D4C2D5141EC85B05A2D32554174D5C2664B2D51417C399D812B325541946C7C2A492D51416E00E52D25325541A4568270482D51410A61851F23325541709F7614482D5141A86989062232554198E09BC1472D51415A0782092132554125213058472D5141A04990C71F325541D2BA4FF6462D514131AEA89C1E32554143962558462D5141E10BA4B91C325541595538EB452D5141D36AFD6C1B325541877D757C452D51411CB6BC1A1A325541B7D8EB07452D514150E7D7B6183255415C118BA4442D51417E715A871732554172896E14442D51418F8940CF1532554186217772432D5141FEA89FE013325541E88AC419432D51412721C0D1123255413C1D99D3422D5141C3B575FB113255415BD96680422D5141D80C63FD10325541654344C1412D51417E8DA6751132554171BCD3F3402D51410D3082F811325541F790DECC3F2D51410BF062B4123255410FC58EC13E2D5141C9A4A75E13325541895311893D2D51411945B325143255413F06FBF13C2D51415B05F08514325541B04949123C2D514177546C14153255411F85EB313A2D5141666666461632554141134EAE392D5141525746AF14325541352AD2A5392D51418F14458014325541D1013786392D51410FCC28D1133255417F135154392D5141F90EB4BC12325541B93F4C20392D51417D747F9C113255419CD89AF3382D5141F675E1A4103255411B952FD3382D5141D02F44F10F32554103D090B2382D5141298C893C0F3255411F975599382D51416C63D3200F32554139E7797A332D51416A06091A0A3255413E74179A302D514182B1DCC40A3255417179609C302D51411D6E165F0B3255411663AB9E302D5141CFE0CFF90B325541EBCC23A7302D514151CE60D70D3255415B0246A9302D5141BCCE4C400E3255417AF367AE302D5141B8EBEF7E0E325541BC0D53C8302D5141BEEA30990F3255418E9FBD0B312D5141332A7D7412325541262DDA33312D5141A9B76BF513325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335468 - 3356971
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -644  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47F1342D5141A4703D7A373255411F85EB61362D5141CDCCCC5C3C325541713D0AA7372D51413333333342325541A4703D5A382D5141C3F5280C45325541C3F528CC3B2D5141AE47E12A44325541713D0A273E2D51419A999949433255418FC2F5183D2D51418FC2F5383C325541000000803C2D514152B81E9537325541333333C33B2D51416666668634325541C3F5283C3B2D5141F6285C2F3132554152B81E95392D5141C3F528EC2832554166666636382D5141EC51B85E233255410AD7A3E0362D51417B14AE171C325541D7A370ED352D51416666666616325541EC51B81E352D51418FC2F52811325541A4703D6A342D5141666666D60C3255419A999919342D514148E17A640A325541CDCCCC8C302D51413D0AD74307325541713D0AA7302D5141EC51B82E0E325541B81E851B312D514133333323133255419A999999312D514148E17A6417325541B81E853B322D5141E17A14EE1B325541EC51B89E322D51411F85EB01203255410AD7A340332D51419A9999C924325541CDCCCC3C342D51413D0AD7D32F32554114AE47F1342D5141A4703D7A37325541
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000262DDA33312D5141A9B76BF513325541F436BB8C312D51419CD1C2F31632554153BCD7A2312D5141AF4B22A01732554173DD8AAD312D51417E9B8BF317325541D3518932322D5141A420705F1C3255417132ADE6322D514156DEFD52223255419571156B332D51411A9C50A526325541210EE0AB332D5141535F817B29325541459701EB332D514155D5153F2C32554185565A3A342D5141C79369B82F325541879EE165342D5141BD464B9131325541E222ADF1342D5141A606D378373255418D725FFC342D5141EDF4DE9F3732554172D98824352D51414E2F1D2838325541B04D7446352D5141C0982E9B38325541528C6532362D51411B6E95BB3B325541A0267A0D372D514184E25A713F32554189EADCE0372D5141345F6A1E43325541B20BDE4E382D5141E7D2E5DD443255418436497C382D5141314F7BFF4532554111D1AA8A382D5141F326666946325541645303DA382D514105DAC6B1483255414B3DCAB3392D5141C6B5DF0C49325541022769E03A2D51414BDB658549325541A106B28A3E2D51416A8092FD4A325541F90F0F9A3F2D514112D45D6A4B325541B77F38EF402D514199D7CBF24B325541E26A8AD1402D5141D611C69C4B3255415E409192402D5141828E41E64A325541C3D96633402D5141C6326FD2493255417AA0953F3F2D51413347C50F47325541258764EF3D2D5141A765454143325541141F4771422D514166C978064232554198990E9B452D51418FB0502B41325541402B966F4C2D5141C3D1B826403255410EECC938522D51415353F8493F325541C2C82262522D5141C762D6443F3255410E980E29522D5141A21F00A33E32554162C69CF2512D5141CFE2CD083E325541467BEEB7512D51419709B8623D3255413D729A30512D5141C071B2E33B325541C8C9EFAF502D5141EC9B87773A325541E6BA911D502D5141E77943D938325541DDF67FAF4F2D51415979BBA1373255410FB4C22B4E2D514150AA4E5833325541A524E80D4C2D5141EC85B05A2D32554174D5C2664B2D51417C399D812B325541946C7C2A492D51416E00E52D25325541A4568270482D51410A61851F23325541709F7614482D5141A86989062232554198E09BC1472D51415A0782092132554125213058472D5141A04990C71F325541D2BA4FF6462D514131AEA89C1E32554143962558462D5141E10BA4B91C325541595538EB452D5141D36AFD6C1B325541877D757C452D51411CB6BC1A1A325541B7D8EB07452D514150E7D7B6183255415C118BA4442D51417E715A871732554172896E14442D51418F8940CF1532554186217772432D5141FEA89FE013325541E88AC419432D51412721C0D1123255413C1D99D3422D5141C3B575FB113255415BD96680422D5141D80C63FD10325541654344C1412D51417E8DA6751132554171BCD3F3402D51410D3082F811325541F790DECC3F2D51410BF062B4123255410FC58EC13E2D5141C9A4A75E13325541895311893D2D51411945B325143255413F06FBF13C2D51415B05F08514325541B04949123C2D514177546C14153255411F85EB313A2D5141666666461632554141134EAE392D5141525746AF14325541352AD2A5392D51418F14458014325541D1013786392D51410FCC28D1133255417F135154392D5141F90EB4BC12325541B93F4C20392D51417D747F9C113255419CD89AF3382D5141F675E1A4103255411B952FD3382D5141D02F44F10F32554103D090B2382D5141298C893C0F3255411F975599382D51416C63D3200F32554139E7797A332D51416A06091A0A3255413E74179A302D514182B1DCC40A3255417179609C302D51411D6E165F0B3255411663AB9E302D5141CFE0CFF90B325541EBCC23A7302D514151CE60D70D3255415B0246A9302D5141BCCE4C400E3255417AF367AE302D5141B8EBEF7E0E325541BC0D53C8302D5141BEEA30990F3255418E9FBD0B312D5141332A7D7412325541262DDA33312D5141A9B76BF513325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 184213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -62  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B55419A9999E9FB7A5041F6285CCF562B5541F6285CBFFD7A50415C8FC2A5582B554148E17A84007B504133333363592B55410AD7A380017B5041AE47E10A592B5541C3F528AC017B5041B81E85FB582B554100000090027B504148E17AA4582B55410AD7A3F0037B5041D7A3701D582B554100000020067B5041713D0A47572B554148E17AE4057B5041666666B6552B5541713D0A77067B504133333373552B554114AE4781077B50418FC2F5F8542B5541C3F5282C097B504166666636542B55411F85EBD1087B5041295C8F82532B55418FC2F598077B504185EB5108512B55418FC2F5A8067B5041B81E850B4F2B55419A999959067B50410AD7A3804E2B55418FC2F538077B5041B81E851B4E2B55417B14AE97077B504114AE47F14D2B5541A4703D1A087B5041EC51B8AE4D2B55419A999969087B5041333333334E2B5541CDCCCCAC0A7B504148E17AA4522B5541D7A3700D0B7B504166666656532B5541295C8FC20B7B50413D0AD7D3542B55419A9999D90B7B504166666616552B5541D7A370ED0C7B504185EB5198542B554148E17AC40D7B50415C8FC235542B5541CDCCCC8C0E7B50419A9999D9532B55411F85EB610F7B504185EB5178532B55417B14AE17117B5041000000B0522B5541D7A3705D117B504100000090522B55418FC2F5C8147B50413D0AD7D3502B5541CDCCCC8C157B50410AD7A370502B5541F6285C6F167B5041E17A14FE4F2B5541C3F5281C187B5041666666264F2B554148E17A041B7B5041AE47E1AA4D2B5541EC51B8AE1C7B50411F85EBD14C2B5541295C8F021E7B5041666666264C2B5541E17A145E1E7B504185EB51F84B2B5541A4703D8A207B504148E17A544B2B55419A999919257B5041CDCCCCFC492B55417B14AE97277B504114AE4741492B5541713D0A97297B5041713D0A97482B554114AE47C12B7B5041EC51B8DE472B554152B81EA52E7B50419A999939462B554185EB5128357B504152B81E85422B5541C3F5289C357B504133333343422B5541D7A370DD377B50417B14AEE7402B5541333333C33A7B504185EB51283F2B5541D7A370BD417B5041AE47E13A3A2B55415C8FC2B5457B5041EC51B8AE372B55417B14AE27467B504133333363372B55418FC2F518507B5041E17A140E322B55418FC2F5E8527B5041D7A3700D302B5541E17A14DE587B50418FC2F598292B55417B14AED75D7B5041CDCCCCAC242B55418FC2F5485F7B504166666626232B5541F6285C7F5C7B5041A4703D9A202B5541D7A370ED557B5041EC51B86E282B55419A999959547B5041C3F528BC262B55410AD7A370537B50415C8FC2C5272B5541AE47E13A537B504133333303282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B5541713D0A87427B504185EB51E8322B554133333303427B5041713D0A67342B5541EC51B8EE377B50417B14AE473C2B55411F85EB41327B5041EC51B8EE3E2B55413D0AD7832F7B5041AE47E1BA3E2B554148E17A342F7B50418FC2F5E83D2B5541333333E32E7B5041AE47E10A3E2B55417B14AE672E7B5041666666D63C2B55415C8FC2A52C7B5041333333C33D2B5541EC51B80E2B7B5041CDCCCC9C3A2B5541333333A31D7B50415C8FC2753D2B55415C8FC2451B7B5041333333133D2B55411F85EB11157B50415C8FC2C53C2B5541A4703D2A147B504114AE47D13D2B55411F85EBE10E7B5041C3F528BC422B554114AE4701107B50411F85EB01442B554148E17A94107B5041E17A14AE442B55411F85EB71117B5041CDCCCCAC452B5541F6285CFF127B50415C8FC275472B554133333323077B504114AE47214D2B5541D7A3704D037B504148E17A44462B554105000000D7A3702D287B5041C3F528AC402B5541A4703DFA297B50413D0AD733452B55411F85EBC1247B5041F6285C1F472B5541EC51B88E237B50411F85EB61422B5541D7A3702D287B5041C3F528AC402B5541
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000009A9999E9FB7A5041F6285CCF562B554115E6FD3BFD7A50411C7B3622582B55415B2B148EFD7A504112966506582B5541577B147AFF7A5041DA48E35E572B5541C023476AFF7A5041D094822F582B554113C2F8EAFD7A5041042969B1582B5541921C7B84007B50416F1E3363592B5541A9B9C089007B50415D695A61592B55416F7EA480017B5041950CE10A592B5541C3F528AC017B5041B81E85FB582B5541EBA7FF8F027B5041EB027BA4582B554136D4A2F0037B5041F406711D582B554181421C60057B504131229790572B55419667FC1F067B5041F509F246572B55414E68EB1F067B5041B5A07F46572B554177EA7AE4057B50417C1167B6552B55414B6E9889057B5041F74C3EDA552B5541C996A17F047B50419425E743562B554137559212047B5041394350A0552B5541C6BB273C057B5041656E3E2A552B5541E1703293057B50412C2BAE07552B5541879F853B067B50416580F6B8542B55412FAAFF2F077B5041189A6746542B5541DCA2EBD1087B5041353A9082532B5541E78DF498077B504139E45108512B554176C6F5A8067B5041A24D860B4F2B55413EE04B7E067B5041AFD2DBC04E2B554143045B79067B5041B35136B84E2B55419A999959067B50410AD7A3804E2B55416F479711077B5041E4DE572D4E2B55419E30F638077B5041F0A7841B4E2B5541A595AD97077B5041CAB447F14D2B554133333323077B504114AE47214D2B55410CE9704D037B5041235D7B44462B554127E8C2C5FD7A5041B39E3303492B554188318639FC7A50418E7CDAC7492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B9215D2FF77A50416C9E3CFA502B5541FE3D3E8AF67A5041F2D9131E512B55411A5500F0F57A5041D2E6154E512B55419AC63E1AF57A50411844FF8F512B55414C690160F47A504151FE28DC512B55414B9D341AF37A50413A9701D04E2B55416884EB61F17A504163145D1F4F2B5541C030B95EF17A504181571E25532B55411710FC65F27A5041856EBCB2522B5541F1F1ECD1F27A50419AD2D583522B5541B023C8FAF47A5041847E6882572B5541D7A3701DF57A5041295C8FD2572B554112243B17F57A50412E538BD4572B554141EFCDFEF27A504198A64480582B5541F6285C6FF37A50415C8FC2E5592B554179E0665CF57A5041B0FE58D35A2B55412E931DA5F57A5041BAA31EA55A2B5541F9198F12F77A5041596D3C3A5A2B5541601A0A77F87A50416DCF47C1592B5541FFA1B095F97A504100B6955F592B5541D91313DCF97A504175891312592B5541EBC6DC33FA7A5041E92B67B1582B55419A9999E9FB7A5041F6285CCF562B55410E00000034B9984C047B50415F6C2D58562B55410497C155037B5041335A3DBA562B554139ABEC01027B5041C6C1A340572B5541907C6F1D017B5041F23D869B572B5541FB023CEA007B5041B5E813AE572B55418A3B3DFAFF7A504126E6B8FE572B5541A28E966BFF7A5041F1E8102F582B55418F3C487DFF7A5041E42FCC5D572B5541B4C9C2C5FF7A5041FE041F45572B554168891DD5007B50419090F5E8562B5541F4B27BC4017B50418A2B3E8A562B5541F96A4711037B504185B46506562B554108B239EC037B5041CF1F87AF552B554134B9984C047B50415F6C2D58562B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 290543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -62  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B55419A9999E9FB7A5041F6285CCF562B5541F6285CBFFD7A50415C8FC2A5582B554148E17A84007B504133333363592B55410AD7A380017B5041AE47E10A592B5541C3F528AC017B5041B81E85FB582B554100000090027B504148E17AA4582B55410AD7A3F0037B5041D7A3701D582B554100000020067B5041713D0A47572B554148E17AE4057B5041666666B6552B5541713D0A77067B504133333373552B554114AE4781077B50418FC2F5F8542B5541C3F5282C097B504166666636542B55411F85EBD1087B5041295C8F82532B55418FC2F598077B504185EB5108512B55418FC2F5A8067B5041B81E850B4F2B55419A999959067B50410AD7A3804E2B55418FC2F538077B5041B81E851B4E2B55417B14AE97077B504114AE47F14D2B5541A4703D1A087B5041EC51B8AE4D2B55419A999969087B5041333333334E2B5541CDCCCCAC0A7B504148E17AA4522B5541D7A3700D0B7B504166666656532B5541295C8FC20B7B50413D0AD7D3542B55419A9999D90B7B504166666616552B5541D7A370ED0C7B504185EB5198542B554148E17AC40D7B50415C8FC235542B5541CDCCCC8C0E7B50419A9999D9532B55411F85EB610F7B504185EB5178532B55417B14AE17117B5041000000B0522B5541D7A3705D117B504100000090522B55418FC2F5C8147B50413D0AD7D3502B5541CDCCCC8C157B50410AD7A370502B5541F6285C6F167B5041E17A14FE4F2B5541C3F5281C187B5041666666264F2B554148E17A041B7B5041AE47E1AA4D2B5541EC51B8AE1C7B50411F85EBD14C2B5541295C8F021E7B5041666666264C2B5541E17A145E1E7B504185EB51F84B2B5541A4703D8A207B504148E17A544B2B55419A999919257B5041CDCCCCFC492B55417B14AE97277B504114AE4741492B5541713D0A97297B5041713D0A97482B554114AE47C12B7B5041EC51B8DE472B554152B81EA52E7B50419A999939462B554185EB5128357B504152B81E85422B5541C3F5289C357B504133333343422B5541D7A370DD377B50417B14AEE7402B5541333333C33A7B504185EB51283F2B5541D7A370BD417B5041AE47E13A3A2B55415C8FC2B5457B5041EC51B8AE372B55417B14AE27467B504133333363372B55418FC2F518507B5041E17A140E322B55418FC2F5E8527B5041D7A3700D302B5541E17A14DE587B50418FC2F598292B55417B14AED75D7B5041CDCCCCAC242B55418FC2F5485F7B504166666626232B5541F6285C7F5C7B5041A4703D9A202B5541D7A370ED557B5041EC51B86E282B55419A999959547B5041C3F528BC262B55410AD7A370537B50415C8FC2C5272B5541AE47E13A537B504133333303282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B5541713D0A87427B504185EB51E8322B554133333303427B5041713D0A67342B5541EC51B8EE377B50417B14AE473C2B55411F85EB41327B5041EC51B8EE3E2B55413D0AD7832F7B5041AE47E1BA3E2B554148E17A342F7B50418FC2F5E83D2B5541333333E32E7B5041AE47E10A3E2B55417B14AE672E7B5041666666D63C2B55415C8FC2A52C7B5041333333C33D2B5541EC51B80E2B7B5041CDCCCC9C3A2B5541333333A31D7B50415C8FC2753D2B55415C8FC2451B7B5041333333133D2B55411F85EB11157B50415C8FC2C53C2B5541A4703D2A147B504114AE47D13D2B55411F85EBE10E7B5041C3F528BC422B554114AE4701107B50411F85EB01442B554148E17A94107B5041E17A14AE442B55411F85EB71117B5041CDCCCCAC452B5541F6285CFF127B50415C8FC275472B554133333323077B504114AE47214D2B5541D7A3704D037B504148E17A44462B554105000000D7A3702D287B5041C3F528AC402B5541A4703DFA297B50413D0AD733452B55411F85EBC1247B5041F6285C1F472B5541EC51B88E237B50411F85EB61422B5541D7A3702D287B5041C3F528AC402B5541
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000009A9999E9FB7A5041F6285CCF562B554115E6FD3BFD7A50411C7B3622582B55415B2B148EFD7A504112966506582B5541577B147AFF7A5041DA48E35E572B5541C023476AFF7A5041D094822F582B554113C2F8EAFD7A5041042969B1582B5541921C7B84007B50416F1E3363592B5541A9B9C089007B50415D695A61592B55416F7EA480017B5041950CE10A592B5541C3F528AC017B5041B81E85FB582B5541EBA7FF8F027B5041EB027BA4582B554136D4A2F0037B5041F406711D582B554181421C60057B504131229790572B55419667FC1F067B5041F509F246572B55414E68EB1F067B5041B5A07F46572B554177EA7AE4057B50417C1167B6552B55414B6E9889057B5041F74C3EDA552B5541C996A17F047B50419425E743562B554137559212047B5041394350A0552B5541C6BB273C057B5041656E3E2A552B5541E1703293057B50412C2BAE07552B5541879F853B067B50416580F6B8542B55412FAAFF2F077B5041189A6746542B5541DCA2EBD1087B5041353A9082532B5541E78DF498077B504139E45108512B554176C6F5A8067B5041A24D860B4F2B55413EE04B7E067B5041AFD2DBC04E2B554143045B79067B5041B35136B84E2B55419A999959067B50410AD7A3804E2B55416F479711077B5041E4DE572D4E2B55419E30F638077B5041F0A7841B4E2B5541A595AD97077B5041CAB447F14D2B554133333323077B504114AE47214D2B55410CE9704D037B5041235D7B44462B554127E8C2C5FD7A5041B39E3303492B554188318639FC7A50418E7CDAC7492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B9215D2FF77A50416C9E3CFA502B5541FE3D3E8AF67A5041F2D9131E512B55411A5500F0F57A5041D2E6154E512B55419AC63E1AF57A50411844FF8F512B55414C690160F47A504151FE28DC512B55414B9D341AF37A50413A9701D04E2B55416884EB61F17A504163145D1F4F2B5541C030B95EF17A504181571E25532B55411710FC65F27A5041856EBCB2522B5541F1F1ECD1F27A50419AD2D583522B5541B023C8FAF47A5041847E6882572B5541D7A3701DF57A5041295C8FD2572B554112243B17F57A50412E538BD4572B554141EFCDFEF27A504198A64480582B5541F6285C6FF37A50415C8FC2E5592B554179E0665CF57A5041B0FE58D35A2B55412E931DA5F57A5041BAA31EA55A2B5541F9198F12F77A5041596D3C3A5A2B5541601A0A77F87A50416DCF47C1592B5541FFA1B095F97A504100B6955F592B5541D91313DCF97A504175891312592B5541EBC6DC33FA7A5041E92B67B1582B55419A9999E9FB7A5041F6285CCF562B55410E00000034B9984C047B50415F6C2D58562B55410497C155037B5041335A3DBA562B554139ABEC01027B5041C6C1A340572B5541907C6F1D017B5041F23D869B572B5541FB023CEA007B5041B5E813AE572B55418A3B3DFAFF7A504126E6B8FE572B5541A28E966BFF7A5041F1E8102F582B55418F3C487DFF7A5041E42FCC5D572B5541B4C9C2C5FF7A5041FE041F45572B554168891DD5007B50419090F5E8562B5541F4B27BC4017B50418A2B3E8A562B5541F96A4711037B504185B46506562B554108B239EC037B5041CF1F87AF552B554134B9984C047B50415F6C2D58562B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336930 - 233216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+0106000000010000000103000000030000003A000000000000707CB45041E17A141E7A305441CDCCCCFC7AB45041B81E853B7E30544148E17A247EB45041A4703D5A84305441E17A14EE7FB450411F85EBC183305441CDCCCCDC81B45041A4703DAA893054415C8FC2E580B45041F6285CDF8A305441713D0A5763B45041B81E850BA5305441D7A3702D5EB45041C3F5288C9E3054411F85EBF157B450417B14AEC79730544114AE474156B450410000000096305441713D0AA754B45041EC51B8EE94305441295C8FB251B45041AE47E15A93305441E17A144E50B450417B14AED792305441EC51B8FE4BB450417B14AEE79330544148E17AB44AB4504148E17AC494305441713D0A574BB45041B81E852B9830544152B81E254DB450415C8FC2E59A305441F6285C1F55B45041EC51B8AEA430544148E17AB45DB4504152B81EC5AE305441713D0AB760B450418FC2F588B2305441AE47E17A64B45041295C8F12B6305441B81E858B68B45041AE47E11AB8305441C3F528FC6CB45041295C8FC2B930544185EB51D86FB4504133333383BA3054410AD7A38071B45041F6285C5FB630544185EB51C887B4504148E17A64A03054415C8FC27588B450411F85EBC19D3054417B14AE578AB450419A9999599B30544148E17AF48DB450410AD7A3F0983054413D0AD78390B45041295C8FD29A3054418FC2F5D892B450410AD7A39098305441F6285C3F92B450410AD7A3A095305441C3F5283C8FB450418FC2F5A89030544185EB51C887B450410AD7A3A08E305441AE47E1CA83B450413D0AD7038B3054419A99999985B45041F6285CCF89305441E17A147E8AB4504114AE47B18B305441D7A3706D8DB450418FC2F5F885305441C3F528DC8EB450411F85EB7185305441EC51B88E8EB45041A4703D2A84305441AE47E10A91B45041B81E855B82305441E17A14CE94B4504185EB5198853054418FC2F52896B45041B81E854B85305441CDCCCCEC99B45041713D0AC787305441000000009AB4504185EB51E888305441E17A141E98B450415C8FC2E58C305441295C8F5299B45041AE47E13A8F305441295C8F5299B450417B14AE7792305441EC51B87E98B4504100000080943054417B14AE37A1B45041A4703D6A90305441AE47E12A9FB4504185EB51C88A305441EC51B86E9BB45041295C8F7281305441713D0A9797B4504100000060773054417B14AEA795B45041A4703D2A72305441333333138EB450418FC2F5387930544114AE476186B45041E17A145E783054410AD7A34084B450418FC2F54876305441000000707CB45041E17A141E7A305441060000005C8FC2E586B450413D0AD783793054419A9999A986B4504114AE47817A3054417B14AE5784B450411F85EBB17C305441A4703DBA82B450417B14AE377A30544152B81E1584B45041333333E3783054415C8FC2E586B450413D0AD78379305441080000000AD7A31086B450413D0AD7B37E305441295C8F6285B450411F85EBF17D305441E17A144E88B4504185EB51287B30544114AE47D189B450413D0AD7237A3054411F85EBC18AB45041EC51B83E7A305441AE47E15A8BB450417B14AED77A305441CDCCCC8C87B45041295C8FE27E3054410AD7A31086B450413D0AD7B37E305441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000713D0A5763B45041B81E850BA5305441701FEFE173B45041B7E39D6596305441577BB7AD75B4504199F2A3F293305441D70CDD377FB45041F10F065C8C3054417C709D2880B4504189F8D7868B3054414E92EE7980B450419EDED63E8B3054413E292E7C80B45041AF32D93C8B3054417236328280B450415C8485378B3054412260B0DA80B45041A192F1C78A305441C0F2331F7FB450414EFDEC1D8730544161762B737EB45041B0E60EB2853054417B14AE777BB45041333333637F3054418A8CBA3C79B45041427B69257C3054411E8A71D473B45041BAEBDB2D80305441E17A14BE72B4504148E17A14813054415499B1AA72B4504116F9FF2381305441666666F670B4504114AE4781823054413D0AD7336EB450411F85EB31843054414D61E1426CB45041F86CA9108530544192A57F7D68B450417B2FBE6287305441E26DDBCF63B45041013B5A9089305441713D0A5763B45041E17A14CE893054411F85EB6161B450411F85EBB18A3054417B14AEC75FB450410AD7A3F08B305441336D21695EB4504181FC30B58C3054418BEAE1F859B450412659C1B68F30544148DBFAC452B450414844E533933054419C52C86952B45041DA11B1BC93305441713D0AA754B45041EC51B8EE9430544114AE474156B4504100000000963054411F85EBF157B450417B14AEC797305441D7A3702D5EB45041C3F5288C9E305441713D0A5763B45041B81E850BA5305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336930 - 358541
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+0106000000010000000103000000030000003A000000000000707CB45041E17A141E7A305441CDCCCCFC7AB45041B81E853B7E30544148E17A247EB45041A4703D5A84305441E17A14EE7FB450411F85EBC183305441CDCCCCDC81B45041A4703DAA893054415C8FC2E580B45041F6285CDF8A305441713D0A5763B45041B81E850BA5305441D7A3702D5EB45041C3F5288C9E3054411F85EBF157B450417B14AEC79730544114AE474156B450410000000096305441713D0AA754B45041EC51B8EE94305441295C8FB251B45041AE47E15A93305441E17A144E50B450417B14AED792305441EC51B8FE4BB450417B14AEE79330544148E17AB44AB4504148E17AC494305441713D0A574BB45041B81E852B9830544152B81E254DB450415C8FC2E59A305441F6285C1F55B45041EC51B8AEA430544148E17AB45DB4504152B81EC5AE305441713D0AB760B450418FC2F588B2305441AE47E17A64B45041295C8F12B6305441B81E858B68B45041AE47E11AB8305441C3F528FC6CB45041295C8FC2B930544185EB51D86FB4504133333383BA3054410AD7A38071B45041F6285C5FB630544185EB51C887B4504148E17A64A03054415C8FC27588B450411F85EBC19D3054417B14AE578AB450419A9999599B30544148E17AF48DB450410AD7A3F0983054413D0AD78390B45041295C8FD29A3054418FC2F5D892B450410AD7A39098305441F6285C3F92B450410AD7A3A095305441C3F5283C8FB450418FC2F5A89030544185EB51C887B450410AD7A3A08E305441AE47E1CA83B450413D0AD7038B3054419A99999985B45041F6285CCF89305441E17A147E8AB4504114AE47B18B305441D7A3706D8DB450418FC2F5F885305441C3F528DC8EB450411F85EB7185305441EC51B88E8EB45041A4703D2A84305441AE47E10A91B45041B81E855B82305441E17A14CE94B4504185EB5198853054418FC2F52896B45041B81E854B85305441CDCCCCEC99B45041713D0AC787305441000000009AB4504185EB51E888305441E17A141E98B450415C8FC2E58C305441295C8F5299B45041AE47E13A8F305441295C8F5299B450417B14AE7792305441EC51B87E98B4504100000080943054417B14AE37A1B45041A4703D6A90305441AE47E12A9FB4504185EB51C88A305441EC51B86E9BB45041295C8F7281305441713D0A9797B4504100000060773054417B14AEA795B45041A4703D2A72305441333333138EB450418FC2F5387930544114AE476186B45041E17A145E783054410AD7A34084B450418FC2F54876305441000000707CB45041E17A141E7A305441060000005C8FC2E586B450413D0AD783793054419A9999A986B4504114AE47817A3054417B14AE5784B450411F85EBB17C305441A4703DBA82B450417B14AE377A30544152B81E1584B45041333333E3783054415C8FC2E586B450413D0AD78379305441080000000AD7A31086B450413D0AD7B37E305441295C8F6285B450411F85EBF17D305441E17A144E88B4504185EB51287B30544114AE47D189B450413D0AD7237A3054411F85EBC18AB45041EC51B83E7A305441AE47E15A8BB450417B14AED77A305441CDCCCC8C87B45041295C8FE27E3054410AD7A31086B450413D0AD7B37E305441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000713D0A5763B45041B81E850BA5305441701FEFE173B45041B7E39D6596305441577BB7AD75B4504199F2A3F293305441D70CDD377FB45041F10F065C8C3054417C709D2880B4504189F8D7868B3054414E92EE7980B450419EDED63E8B3054413E292E7C80B45041AF32D93C8B3054417236328280B450415C8485378B3054412260B0DA80B45041A192F1C78A305441C0F2331F7FB450414EFDEC1D8730544161762B737EB45041B0E60EB2853054417B14AE777BB45041333333637F3054418A8CBA3C79B45041427B69257C3054411E8A71D473B45041BAEBDB2D80305441E17A14BE72B4504148E17A14813054415499B1AA72B4504116F9FF2381305441666666F670B4504114AE4781823054413D0AD7336EB450411F85EB31843054414D61E1426CB45041F86CA9108530544192A57F7D68B450417B2FBE6287305441E26DDBCF63B45041013B5A9089305441713D0A5763B45041E17A14CE893054411F85EB6161B450411F85EBB18A3054417B14AEC75FB450410AD7A3F08B305441336D21695EB4504181FC30B58C3054418BEAE1F859B450412659C1B68F30544148DBFAC452B450414844E533933054419C52C86952B45041DA11B1BC93305441713D0AA754B45041EC51B8EE9430544114AE474156B4504100000000963054411F85EBF157B450417B14AEC797305441D7A3702D5EB45041C3F5288C9E305441713D0A5763B45041B81E850BA5305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>840163 - 3112698
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000002D000000FC13E8807F65514101E517133A705441B81E854B796551418FC2F5883E705441A4703DBA6665514185EB51284B705441C57F51BC63655141232D59274D705441AEFEFC9A62655141458CEEEA52705441F11896486365514145E9DA6B56705441FDF6D6EA67655141CB86717D5A705441AF2DB2886B6551417248702F5C70544199094AE86D6551415CC71B0E5B70544135CB489A6F655141C011959158705441D1176B606F655141245C0E1556705441406E5C196C6551415B0D430C54705441136CB3D669655141E1D810B152705441401170986865514192499B175070544140117098686551415B47F2D44D7054415692C4B96965514187E036614D705441AF2DB2886B6551410D1569BC4E7054411F4AF4786E6551414F2F026A4F70544109268CD8706551411821E1F14D705441A5DB125573655141A86D03B84D705441B050EF40756551411821E1F14D70544109ECDC0F776551419355134D4F705441C800F94F7F655141930FEC4E567054416F650B817D6551417DF7FBE35770544158E4B65F7C6551413B46C7EC5970544163F02E957B65514124225F4C5C705441908973217B6551415C3080C45D7054414263623E7B6551415D99E47A6070544115BEA57C7C6551411A73D39760705441D30C71857E6551417D54E8645B7054414E92172C8465514151BBA3D85B7054411F85EB5188655141B81E855B5E7054418FC2F5088A6551411F85EB915D705441F6285CCF96655141D7A3704D4F7054419A9999E99965514185EB51F84C705441AE47E15A9B6551413D0AD7E34B705441333333839D655141A4703DAA4970544114AE4701A065514114AE477147705441CDCCCCEC96655141C3F5287C3C7054419A99999995655141D7A370BD3B705441713D0AC7896551418FC2F5A83070544185EB513889655141CDCCCC2C31705441C3F5286C84655141D7A3709D35705441CDCCCC1C826551413D0AD7C337705441FC13E8807F65514101E517133A705441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000CF6CD35690655141E7CB6F4846705441B5E24870906551415106BD6546705441673AD23792655141FB2006B448705441615399C992655141B248587249705441AAB681B19365514135031DA14A705441DEF2BB1C956551415AB5537B4C705441097F30629665514103173A244E705441A7752AD096655141A35DC7A54E70544147E4F579996551415477A3A34C70544123AFD95E9F655141356A1C9347705441328DD6D69F65514158EF0F3E4770544123640B619D65514191540B46447054413E8B7ACE99655141D6ED5EF63F7054411E88B31D97655141A13A2CB73C7054412595AE01966551419528F6F73B705441F7B1F5679565514194D7EA8E3B705441F378CDB491655141C3D63E17387054416EDF6BA68C655141A510285A33705441756152568B65514119522A1F3270544185EB513889655141CDCCCC2C317054416AD28A6787655141A784F1DA32705441CA72626A856551417EE428B2347054414AB24CFD83655141C82B9F04367054411185351C83655141C9211FD636705441A52784F285655141078A17513A705441AC4F746986655141124076DB3A7054414962903B89655141F1BA911A3E705441CA6747BD89655141E221DDAF3E7054411E9DC14E8B6551415108F17D40705441355FE89C8D655141AC212C2543705441BCBA14A88E655141B277AC5844705441A2C63F558F65514126FEFA1F457054418AF0B09E8F6551416611827445705441CF6CD35690655141E7CB6F4846705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>840163 - 3487846
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000002D000000FC13E8807F65514101E517133A705441B81E854B796551418FC2F5883E705441A4703DBA6665514185EB51284B705441C57F51BC63655141232D59274D705441AEFEFC9A62655141458CEEEA52705441F11896486365514145E9DA6B56705441FDF6D6EA67655141CB86717D5A705441AF2DB2886B6551417248702F5C70544199094AE86D6551415CC71B0E5B70544135CB489A6F655141C011959158705441D1176B606F655141245C0E1556705441406E5C196C6551415B0D430C54705441136CB3D669655141E1D810B152705441401170986865514192499B175070544140117098686551415B47F2D44D7054415692C4B96965514187E036614D705441AF2DB2886B6551410D1569BC4E7054411F4AF4786E6551414F2F026A4F70544109268CD8706551411821E1F14D705441A5DB125573655141A86D03B84D705441B050EF40756551411821E1F14D70544109ECDC0F776551419355134D4F705441C800F94F7F655141930FEC4E567054416F650B817D6551417DF7FBE35770544158E4B65F7C6551413B46C7EC5970544163F02E957B65514124225F4C5C705441908973217B6551415C3080C45D7054414263623E7B6551415D99E47A6070544115BEA57C7C6551411A73D39760705441D30C71857E6551417D54E8645B7054414E92172C8465514151BBA3D85B7054411F85EB5188655141B81E855B5E7054418FC2F5088A6551411F85EB915D705441F6285CCF96655141D7A3704D4F7054419A9999E99965514185EB51F84C705441AE47E15A9B6551413D0AD7E34B705441333333839D655141A4703DAA4970544114AE4701A065514114AE477147705441CDCCCCEC96655141C3F5287C3C7054419A99999995655141D7A370BD3B705441713D0AC7896551418FC2F5A83070544185EB513889655141CDCCCC2C31705441C3F5286C84655141D7A3709D35705441CDCCCC1C826551413D0AD7C337705441FC13E8807F65514101E517133A705441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000CF6CD35690655141E7CB6F4846705441B5E24870906551415106BD6546705441673AD23792655141FB2006B448705441615399C992655141B248587249705441AAB681B19365514135031DA14A705441DEF2BB1C956551415AB5537B4C705441097F30629665514103173A244E705441A7752AD096655141A35DC7A54E70544147E4F579996551415477A3A34C70544123AFD95E9F655141356A1C9347705441328DD6D69F65514158EF0F3E4770544123640B619D65514191540B46447054413E8B7ACE99655141D6ED5EF63F7054411E88B31D97655141A13A2CB73C7054412595AE01966551419528F6F73B705441F7B1F5679565514194D7EA8E3B705441F378CDB491655141C3D63E17387054416EDF6BA68C655141A510285A33705441756152568B65514119522A1F3270544185EB513889655141CDCCCC2C317054416AD28A6787655141A784F1DA32705441CA72626A856551417EE428B2347054414AB24CFD83655141C82B9F04367054411185351C83655141C9211FD636705441A52784F285655141078A17513A705441AC4F746986655141124076DB3A7054414962903B89655141F1BA911A3E705441CA6747BD89655141E221DDAF3E7054411E9DC14E8B6551415108F17D40705441355FE89C8D655141AC212C2543705441BCBA14A88E655141B277AC5844705441A2C63F558F65514126FEFA1F457054418AF0B09E8F6551416611827445705441CF6CD35690655141E7CB6F4846705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341646 - 1223605
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -104  </desc>
+<a>
+01060000000100000001030000000100000023000000295C8F32CD8E5141713D0AF7489A54411F85EB51D48E51419A999929439A54417B14AE47E08E5141AE47E16A399A5441CDCCCCBCE68E51411F85EB91329A5441AE47E14AE08E5141CDCCCCCC2F9A5441AE47E10ADD8E5141D7A3702D2C9A5441EC51B86EDA8E51417B14AEE7269A54411F85EB01DA8E51418FC2F558249A5441A4703D8ADA8E514114AE4701229A5441E17A140EDE8E5141295C8F321C9A5441A4703DBAE08E514148E17AA4169A54419A9999B9E18E5141295C8F020F9A5441C3F5286CE18E5141000000F0099A54418FC2F538DB8E5141295C8FA2099A544100000080D58E51418FC2F5480A9A544166666626D38E514148E17A540B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441EC51B8BEC18E5141B81E853B339A54419A9999A9BE8E51413D0AD783389A54418FC2F588BC8E5141E17A140E3D9A5441A4703D9AC08E5141CDCCCC0C3E9A5441295C8FA2C48E5141295C8FD2419A5441E17A14AEC58E5141713D0A77459A54417B14AE67C88E514133333373489A544148E17AF4C98E51419A999939499A5441AE47E16ACB8E51413D0AD773499A5441295C8F32CD8E5141713D0AF7489A5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441EC51B8BEC18E5141B81E853B339A54419A9999A9BE8E51413D0AD783389A54418FC2F588BC8E5141E17A140E3D9A5441A147EAF3BC8E51415439128F3E9A5441CEC56318C38E5141CFDCB5A0429A5441E17A14AEC58E5141713D0A77459A54417B14AE67C88E514133333373489A544148E17AF4C98E51419A999939499A54416E54CB8BCB8E51415BAFC8414A9A54414D0B9176CD8E514193B45729499A5441854E6377D48E5141BFBC1A9B439A54417B14AE47E08E5141AE47E16A399A54416D6D48B0E88E5141F62B8077329A54411950E5A7DF8E514163E62A6C2D9A5441FFC533EFDD8E5141E0B5A1172C9A54415B46E0D3DD8E5141E81860E12B9A544145901BB3DD8E5141356E81C72B9A54412BEE8911DC8E51419B393A63289A5441FB5B1D3CDB8E5141D5EA78BB269A544157979323DB8E5141828C7EC5249A544171B6FE86DB8E5141AD1CAFF9229A544179C74DB4DB8E5141F2C99C1D229A5441BD93D15BDC8E51412082EFBA209A544163D9F3A7DC8E5141E495FA15209A5441737C1A71DE8E5141CBF0094B1C9A5441374BDD9FDF8E514135706BEF189A544154E82952E08E5141AE89FEA6169A54415FAD822EE18E5141A0221C7E0F9A54416AA47E24E18E5141C139B3790E9A5441BAE959F4E08E514143B53348099A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341646 - 3312397
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -104  </desc>
+<a>
+01060000000100000001030000000100000023000000295C8F32CD8E5141713D0AF7489A54411F85EB51D48E51419A999929439A54417B14AE47E08E5141AE47E16A399A5441CDCCCCBCE68E51411F85EB91329A5441AE47E14AE08E5141CDCCCCCC2F9A5441AE47E10ADD8E5141D7A3702D2C9A5441EC51B86EDA8E51417B14AEE7269A54411F85EB01DA8E51418FC2F558249A5441A4703D8ADA8E514114AE4701229A5441E17A140EDE8E5141295C8F321C9A5441A4703DBAE08E514148E17AA4169A54419A9999B9E18E5141295C8F020F9A5441C3F5286CE18E5141000000F0099A54418FC2F538DB8E5141295C8FA2099A544100000080D58E51418FC2F5480A9A544166666626D38E514148E17A540B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441EC51B8BEC18E5141B81E853B339A54419A9999A9BE8E51413D0AD783389A54418FC2F588BC8E5141E17A140E3D9A5441A4703D9AC08E5141CDCCCC0C3E9A5441295C8FA2C48E5141295C8FD2419A5441E17A14AEC58E5141713D0A77459A54417B14AE67C88E514133333373489A544148E17AF4C98E51419A999939499A5441AE47E16ACB8E51413D0AD773499A5441295C8F32CD8E5141713D0AF7489A5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441EC51B8BEC18E5141B81E853B339A54419A9999A9BE8E51413D0AD783389A54418FC2F588BC8E5141E17A140E3D9A5441A147EAF3BC8E51415439128F3E9A5441CEC56318C38E5141CFDCB5A0429A5441E17A14AEC58E5141713D0A77459A54417B14AE67C88E514133333373489A544148E17AF4C98E51419A999939499A54416E54CB8BCB8E51415BAFC8414A9A54414D0B9176CD8E514193B45729499A5441854E6377D48E5141BFBC1A9B439A54417B14AE47E08E5141AE47E16A399A54416D6D48B0E88E5141F62B8077329A54411950E5A7DF8E514163E62A6C2D9A5441FFC533EFDD8E5141E0B5A1172C9A54415B46E0D3DD8E5141E81860E12B9A544145901BB3DD8E5141356E81C72B9A54412BEE8911DC8E51419B393A63289A5441FB5B1D3CDB8E5141D5EA78BB269A544157979323DB8E5141828C7EC5249A544171B6FE86DB8E5141AD1CAFF9229A544179C74DB4DB8E5141F2C99C1D229A5441BD93D15BDC8E51412082EFBA209A544163D9F3A7DC8E5141E495FA15209A5441737C1A71DE8E5141CBF0094B1C9A5441374BDD9FDF8E514135706BEF189A544154E82952E08E5141AE89FEA6169A54415FAD822EE18E5141A0221C7E0F9A54416AA47E24E18E5141C139B3790E9A5441BAE959F4E08E514143B53348099A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 407637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441AE47E1EA0DE95041333333E355A65441295C8FB20CE950417B14AE7755A65441EC51B88E0CE95041333333C354A65441713D0A870BE950413333339354A65441EC51B87E0AE95041333333F354A65441EC51B8DE0AE950417B14AE5754A65441EC51B87E0AE95041B81E85FB52A65441AE47E15A0AE95041B81E851B51A65441713D0A570BE95041B81E85EB50A65441AE47E13A0CE950413333331350A65441AE47E1BA0DE950417B14AED74FA65441AE47E11A0EE95041333333834FA65441EC51B8DE0DE95041333333F34EA65441295C8FF20BE95041B81E852B4DA65441AE47E14A0BE95041B81E859B4CA65441EC51B8AE0AE95041333333934BA65441EC51B8AE0AE95041F6285C4F4AA65441295C8F020BE950417B14AE074AA65441AE47E1AA0BE95041F6285C1F4AA65441AE47E1AA0BE950417B14AE2748A65441EC51B80E0BE95041F6285C1F47A65441295C8F020BE950413333332346A65441713D0A670AE950417B14AE8745A65441AE47E1CA09E95041B81E85AB45A65441EC51B8FE08E950413333330345A65441EC51B8CE08E95041B81E858B44A65441713D0AB708E950413333338343A65441295C8FB209E950417B14AE1743A65441AE47E1CA09E950417B14AE2742A65441AE47E1AA08E95041F6285CEF40A65441713D0AE708E950417B14AEA740A65441713D0AE708E950417B14AE573FA65441713D0AF707E95041F6285C3F3FA65441295C8F4207E95041F6285CDF3EA65441295C8F4207E95041B81E85FB3DA65441713D0A9707E95041B81E853B3DA65441AE47E14A08E95041333333533DA65441295C8F8209E950417B14AEB73CA65441AE47E16A09E950417B14AE073BA65441EC51B8FE08E95041B81E85DB39A65441AE47E11A0BE95041F6285C1F38A65441EC51B83E0BE950413D0AD78334A65441295C8FF20BE95041B81E85DB33A65441EC51B8BE0CE950413D0AD79333A65441AE47E12A0DE950417B14AEE733A65441295C8F620EE950413D0AD70333A65441EC51B81E0DE95041F6285C1F32A65441AE47E12A0DE95041333333F330A65441713D0A970DE95041F6285CAF2FA65441EC51B81E10E95041F6285CAF2CA65441713D0AD70FE950417B14AE472BA65441713D0A2711E950417B14AEC729A654413333335312E950417B14AE6729A654413333338312E95041333333E328A65441EC51B84E16E95041F6285C1F26A654413333330317E95041F6285C7F26A65441AE47E1DA17E950417B14AE0726A65441EC51B8EE18E95041B81E85FB25A65441713D0A6719E95041B81E855B26A65441AE47E1AA1AE95041F6285C1F26A65441EC51B81E1CE95041F6285C4F26A65441333333431CE950413333330327A65441EC51B8AE1CE950413333339327A65441AE47E1BA1CE950417B14AE1728A65441713D0A371CE95041B81E859B28A65441713D0AF71CE950417B14AE6729A65441713D0A871DE950417B14AE6729A65441EC51B82E1EE95041B81E85DB27A65441AE47E16A1EE95041B81E856B25A65441AE47E1DA1DE95041F6285C8F25A65441EC51B8DE1CE950417B14AE1725A65441713D0A371CE95041B81E85EB23A65441713D0AA71BE950417B14AE6723A65441333333B31BE95041333333F321A65441EC51B85E1BE950417B14AE5721A65441713D0A771EE95041333333B31FA65441713D0A071FE95041B81E851B21A65441333333B31EE95041B81E85DB21A65441EC51B8EE1EE95041F6285C5F22A65441333333E31EE950417B14AE3723A65441AE47E1FA1EE95041B81E851B24A65441AE47E19A1EE95041333333F324A65441AE47E14A20E950413333338325A65441AE47E1DA20E95041333333F324A65441AE47E1CA21E950417B14AE0723A65441EC51B8BE21E95041B81E850B22A65441713D0A7721E95041B81E85AB21A65441333333F320E950417B14AE1722A65441EC51B83E20E950417B14AEE721A65441713D0AC71FE950417B14AE3720A654413333339320E950417B14AE3720A654413333331322E95041333333F31EA65441333333D322E95041F6285C2F1FA65441333333C323E950417B14AE171FA65441EC51B87E25E95041B81E85FB1CA654413333330326E95041333333C31BA65441713D0AF725E95041F6285C0F1BA65441713D0A7727E95041B81E858B1AA65441AE47E1BA28E95041333333C318A65441AE47E1FA27E950417B14AE8718A65441AE47E19A27E950417B14AE2718A65441AE47E10A27E95041F6285C3F18A65441713D0A8726E95041F6285C0F18A65441EC51B8AE25E950417B14AE2718A65441AE47E12A25E95041F6285CDF17A654413333331325E95041F6285C7F17A654413333335324E95041B81E85FB16A65441713D0AE723E950413333332316A65441AE47E14A23E950413333339315A65441713D0A1721E95041B81E85DB15A65441333333A31FE950417B14AE6717A65441EC51B82E1EE95041F6285CDF17A65441713D0AC71CE95041B81E853B19A65441333333C31AE950417B14AE371AA65441EC51B81E19E95041F6285CCF1BA65441EC51B86E17E950417B14AE771CA65441AE47E12A16E95041F6285C7F1DA65441EC51B86E14E95041F6285C3F1EA65441333333D313E95041B81E853B1FA65441AE47E1DA11E95041F6285C1F20A65441EC51B84E10E95041B81E85DB21A65441EC51B82E0FE95041B81E853B22A65441333333630EE950417B14AE0723A65441333333D30DE95041B81E851B24A65441EC51B8BE0CE95041F6285C9F24A65441AE47E13A0CE95041F6285C9F24A65441713D0A170CE95041B81E858B26A65441EC51B86E0BE950417B14AE5727A65441713D0A970AE950417B14AE5727A65441713D0A4709E95041B81E859B28A65441713D0AB708E950417B14AEA728A654413333336308E950417B14AEE727A65441AE47E13A09E950417B14AE9726A65441713D0AE708E95041B81E853B25A65441713D0AF707E950417B14AE1725A654413333335306E950413333337326A65441AE47E17A05E950417B14AEC726A65441713D0A0704E950417B14AE1728A65441EC51B8CE02E950417B14AE7728A65441713D0AD700E950417B14AEC729A65441AE47E11A00E95041E17A141E2BA65441D7A3701DFDE850417B14AE8732A65441F6285C7FFCE850411F85EB5138A65441713D0A87FCE850413D0AD73339A65441EC51B82EFDE850413D0AD73339A65441EC51B85EFDE85041F6285C9F39A6544133333323FDE850413D0AD7533AA6544133333393FCE850413D0AD7533AA6544185EB51F8FDE85041AE47E1DA44A65441EC51B80EFFE850413D0AD7C348A65441713D0A87FFE85041B81E851B48A65441EC51B85E00E950413D0AD73348A65441EC51B81E01E950417B14AEB748A65441EC51B80E02E950413D0AD7C34BA65441333333D301E950417B14AE174CA65441AE47E12A01E95041F6285C2F4CA654413333332300E95041B81E85FB4CA65441713D0AA700E950413D0AD7D34DA65441AE47E1CA03E95041B81E858B50A65441EC51B85E06E950413D0AD72352A65441EC51B83E08E950417B14AE2754A65441EC51B8FE08E95041B81E850B55A65441333333B309E950417B14AE7755A65441333333E309E95041F6285C1F56A65441333333C30BE950413D0AD73357A65441EC51B88E0CE950413D0AD78358A65441333333030EE950413D0AD7635AA65441713D0A170FE95041F6285C9F5AA65441AE47E19A0FE95041F6285C8F5BA65441333333A310E950417B14AE075CA65441713D0A9710E95041B81E85EB5CA65441713D0A2714E95041F6285CDF5FA65441AE47E15A19E950417B14AE1764A65441AE47E13A1BE950417B14AE7761A65441713D0A9719E95041333333A35FA65441AE47E1FA18E950417B14AE975FA6544109000000295C8FA204E950417B14AEC74AA65441AE47E11A05E95041333333E349A65441AE47E17A05E95041B81E85AB48A65441295C8FC205E950413333339348A65441713D0A3707E95041F6285C4F4AA65441295C8FB206E950417B14AE274BA65441EC51B8FE05E950417B14AE274BA65441713D0AB705E950417B14AEC74AA65441295C8FA204E950417B14AEC74AA6544110000000AE47E1BA01E950413333332346A65441295C8FB200E950413333335346A65441295C8FC2FFE850413333338343A65441295C8F32FFE850413333339342A65441AE47E10A00E950417B14AE3741A65441295C8F1201E95041F6285CEF40A65441295C8F7201E95041B81E852B41A65441713D0A5702E950413333334341A65441EC51B8FE02E95041F6285CEF40A65441713D0A0704E95041B81E854B42A65441713D0AD703E95041F6285CCF42A65441295C8F4204E95041F6285C7F44A65441713D0AA703E950413333336345A65441AE47E10A03E95041F6285CFF45A65441295C8FC202E95041B81E856B46A65441AE47E1BA01E950413333332346A654410103000000010000000F0000007B14AE770FE95041E17A14EED5A65441295C8FD210E9504152B81E65D6A65441EC51B83E11E9504100000070D6A65441295C8FD210E95041333333E3D5A654418FC2F52811E9504148E17AD4D4A65441E17A146E12E95041C3F5281CD4A65441295C8F4212E95041F6285CAFD3A65441B81E857B10E9504133333343D3A654410000003010E95041713D0AF7D2A654418FC2F5D80FE95041D7A3702DD3A65441AE47E1EA0EE95041666666B6D2A65441EC51B89E0EE95041E17A144ED3A6544148E17AB40EE95041713D0A47D4A6544185EB51680EE9504148E17A24D6A654417B14AE770FE95041E17A14EED5A6544101030000000100000022000000295C8F3216E95041F6285C3FDAA65441EC51B87E16E95041295C8FB2D9A65441EC51B87E16E95041A4703DFAD8A654411F85EB6117E9504185EB5178D8A654417B14AE5717E9504166666646D9A654411F85EB4117E95041D7A370BDD9A654411F85EB6117E950413D0AD7F3D9A654413D0AD7C317E950411F85EB91D9A65441333333F318E950418FC2F5E8D9A6544185EB51E818E9504166666646D9A65441F6285CFF1BE9504152B81EB5D7A654415C8FC2351CE9504133333333D7A65441333333E31CE950411F85EBF1D6A65441AE47E17A1DE95041EC51B87ED7A65441C3F528DC1DE950411F85EBA1D5A65441295C8FC21CE95041B81E859BD6A65441666666561CE950411F85EBD1D6A65441EC51B8BE1BE95041EC51B80ED6A65441A4703DBA1AE95041EC51B82ED6A654413D0AD7631AE950411F85EBF1D6A6544152B81E7519E950415C8FC285D6A654410AD7A35018E95041AE47E17AD6A654417B14AE5717E950411F85EBF1D6A654416666661617E9504148E17A94D7A65441295C8F3216E950419A999989D7A65441EC51B82E15E95041CDCCCC4CD8A654416666662613E95041C3F5280CD8A65441B81E851B13E95041EC51B8AED8A65441D7A3709D13E9504114AE4771D9A65441A4703D2A14E95041B81E853BD9A6544152B81E1514E950413D0AD7F3D9A65441295C8FC214E95041295C8FB2D9A65441C3F528DC15E95041295C8FB2D9A65441295C8F3216E95041F6285C3FDAA6544101030000000A00000003020000295C8F024AE95041F6285C7FB3A65441AE47E12A49E95041F6285C4FB3A65441295C8FA249E95041B81E857BB1A65441295C8FB24BE9504133333323B2A65441AE47E1FA4EE95041B81E85FBAFA65441EC51B8AE4FE950417B14AE67ADA65441295C8FD24FE95041B81E855BAAA65441713D0A5750E950417B14AE37AAA65441295C8FC250E95041F6285C3FA8A65441AE47E17A50E950417B14AE37A7A65441295C8FD24FE95041B81E852BA7A65441AE47E1FA4EE95041F6285C0FA8A65441295C8F624DE95041F6285C3FA8A65441EC51B86E4DE95041F6285C4FA7A65441EC51B8FE4DE95041B81E85CBA6A65441295C8FC24DE95041B81E853BA6A65441EC51B84E4CE95041F6285CFFA5A65441713D0A474BE950417B14AEC7A4A65441AE47E10A4BE9504133333313A4A65441EC51B83E4AE95041B81E858BA4A65441AE47E18A49E95041F6285CAFA4A65441713D0AA748E950417B14AE07A4A65441295C8FF247E95041F6285CFFA2A65441713D0AD748E95041B81E85DBA2A65441295C8FE248E95041B81E85FBA0A65441AE47E10A48E950417B14AEB79FA65441713D0AE747E95041333333439EA65441EC51B8AE46E950417B14AE779DA65441295C8FA246E95041F6285C9F9CA65441713D0A3746E95041F6285CDF9BA65441713D0A3746E95041B81E856B9AA65441295C8FB245E95041B81E859B9AA65441EC51B80E44E950413333336399A65441295C8F9244E95041F6285CDF98A65441AE47E11A44E95041B81E855B98A65441EC51B8DE43E950417B14AEA797A65441295C8FB242E95041F6285C8F97A65441AE47E12A43E950417B14AEE796A65441713D0AE741E950413333339396A65441AE47E1EA40E95041B81E85FB94A65441295C8F7240E95041333333B394A65441EC51B81E40E95041B81E853B94A65441713D0A7742E95041F6285C1F92A65441AE47E16A42E950413333335391A65441EC51B82E45E95041F6285C6F90A65441EC51B85E45E95041B81E85BB8FA65441713D0A2747E95041F6285C1F8FA65441AE47E10A48E95041333333A38FA65441EC51B85E48E950417B14AE5790A65441295C8F1249E95041B81E857B90A65441295C8F024AE950413333330390A65441AE47E1CA48E95041B81E853B8EA65441713D0AD748E95041F6285C3F8DA65441EC51B8FE47E950417B14AEC78CA65441EC51B86E47E95041F6285CEF8BA65441713D0A2747E95041F6285C6F8AA65441295C8FA246E950417B14AE278AA65441EC51B87E46E950417B14AEC789A65441EC51B88E45E95041333333A389A65441295C8F2245E95041F6285C0F8AA65441AE47E17A44E95041B81E856B8BA65441AE47E1BA43E95041B81E859B8BA65441295C8F9241E95041F6285CDF8CA65441AE47E12A40E95041F6285CAF8CA65441AE47E1CA3FE95041B81E852B8CA65441AE47E1EA3DE95041F6285C7F8CA65441295C8F223CE95041333333438CA65441295C8FC23BE950417B14AEB78AA65441AE47E1EA3AE950417B14AE9789A65441713D0AF73AE95041B81E850B88A65441EC51B8AE3AE950417B14AE8787A65441EC51B8EE39E950413333333387A65441295C8FE239E95041F6285CAF86A65441EC51B88E39E95041B81E858B86A65441713D0A4739E95041B81E853B85A65441295C8F8239E95041B81E85DB84A65441EC51B8FE38E95041B81E854B84A65441713D0AB738E950417B14AE3783A65441295C8FA237E950413333330381A65441EC51B87E37E950417B14AEA77FA65441AE47E15A37E95041333333337EA65441295C8FB236E95041333333837CA65441713D0AF737E950417B14AE977AA65441295C8F6238E950417B14AE1779A65441AE47E19A39E950417B14AE5778A65441713D0A673AE950417B14AE5778A65441713D0AC73AE95041F6285C0F78A65441295C8FA23AE95041B81E855B77A65441295C8FD23AE95041F6285C2F76A65441AE47E1DA3BE950417B14AEB775A65441713D0AA73CE950417B14AE1773A65441713D0A973DE950417B14AEC771A65441713D0AE73EE950417B14AE6771A65441EC51B88E3FE95041F6285CAF71A65441AE47E16A3FE95041B81E85CB70A65441EC51B8AE3DE950417B14AED770A65441295C8F123DE95041F6285C5F70A65441EC51B85E3CE95041F6285C8F70A65441EC51B86E3BE950413333335370A65441295C8F423AE95041F6285C8F70A65441EC51B85E39E950413333335370A65441AE47E17A38E95041F6285C5F70A65441EC51B84E37E95041333333F36FA65441AE47E1EA34E95041333333F36FA65441EC51B86E35E95041333333536DA65441295C8FD234E95041333333536DA65441EC51B87E34E95041333333C36CA65441AE47E1FA33E95041333333236DA65441713D0A3734E95041F6285CBF6DA65441713D0AE732E950417B14AE676EA65441AE47E18A31E95041333333836DA65441295C8FE230E950417B14AEA76DA65441295C8F2230E95041F6285CFF6CA65441AE47E15A31E95041F6285C3F6CA65441713D0A6731E950417B14AE076BA65441713D0A1730E95041F6285C8F6AA65441EC51B8AE2EE95041333333E36AA65441295C8FE22DE95041F6285CAF6BA65441295C8F622CE950417B14AE376BA65441295C8F022CE950413333336369A65441713D0AB729E95041F6285C7F68A65441AE47E1BA28E95041333333A368A65441AE47E18A25E950417B14AEB766A65441AE47E18A25E95041B81E85BB65A65441713D0A7724E95041B81E853B64A65441713D0A8723E950417B14AEB763A65441295C8FA222E95041B81E855B65A65441713D0A1721E95041F6285C1F65A65441EC51B84E1FE95041B81E85AB63A65441EC51B8EE1EE95041333333C363A65441713D0AA71EE950413333335364A65441AE47E12A1FE95041B81E85FB64A65441713D0A671FE95041F6285C0F66A65441AE47E10A1EE950417B14AE8766A65441AE47E16A1EE95041F6285C5F67A65441713D0A671FE95041B81E855B68A65441AE47E12A22E950413333333369A65441EC51B85E24E95041333333B36AA65441EC51B8AE25E95041333333A36BA65441AE47E1AA26E95041B81E85EB6BA65441295C8F5227E95041F6285C4F6BA65441EC51B84E28E95041333333736BA65441295C8F9229E950417B14AE176DA65441AE47E16A2AE95041B81E859B6DA65441713D0A872FE950413333332370A65441295C8F1231E95041333333A371A65441713D0A9731E950417B14AEB772A65441AE47E13A33E95041F6285C1F74A65441713D0AF731E95041B81E85DB78A65441EC51B87E31E950417B14AE177CA65441AE47E12A31E950417B14AEA77CA65441EC51B84E31E950417B14AEF77DA65441EC51B85E30E95041333333037EA65441295C8FC22FE95041333333937EA65441EC51B87E2EE950417B14AE0780A65441713D0A572FE95041B81E85BB80A65441713D0A872FE95041B81E852B80A65441EC51B8EE30E95041333333237FA65441713D0A6731E95041333333937EA65441295C8F0232E950417B14AE777FA65441713D0AE732E95041333333E37FA65441295C8F8233E95041F6285C4F80A65441EC51B83E32E95041B81E85DB81A65441AE47E14A32E95041333333B382A65441AE47E11A32E95041F6285C4F83A65441295C8F9232E95041333333F384A65441713D0A7733E95041333333C384A65441EC51B8EE33E95041F6285C5F85A65441295C8F8233E95041333333E385A65441AE47E1CA33E95041F6285CAF86A65441AE47E1CA33E950413333339387A65441713D0A6734E950417B14AE1788A65441EC51B89E35E95041B81E85FB88A65441EC51B8EE36E95041B81E85FB88A65441713D0A7736E95041333333638AA65441AE47E1BA34E95041F6285CEF8BA65441AE47E1FA33E95041F6285CFF8DA65441713D0AE735E95041333333B391A65441295C8F8236E95041333333B391A65441EC51B8EE36E95041B81E85AB93A65441EC51B83E38E950417B14AE1794A65441AE47E11A3BE950417B14AEC798A65441EC51B80E3BE950417B14AE479AA65441713D0A673AE95041333333139BA65441AE47E1EA3AE950417B14AE679BA65441295C8F923BE95041F6285CCF9CA65441EC51B8FE3BE950417B14AEE79CA65441EC51B8EE3CE95041333333B39DA65441713D0A073DE950417B14AE379EA65441AE47E16A3CE950417B14AE579FA65441AE47E13A3CE950417B14AEF7A1A65441713D0AA73CE95041B81E854BA2A65441EC51B8EE3CE950417B14AE17A3A65441713D0A673DE950417B14AE77A3A65441EC51B87E3DE950417B14AE07A4A65441295C8F623EE95041B81E85EBA4A65441AE47E16A3FE95041F6285CDFA4A65441295C8F823FE95041F6285C6FA5A65441AE47E18A40E95041F6285C6FA5A65441EC51B89E41E950417B14AE47A6A65441EC51B82E42E9504133333353A6A65441EC51B8BE42E950417B14AE07A7A65441EC51B8BE42E95041F6285CCFA8A65441AE47E15A43E9504133333343AAA65441AE47E12A43E95041333333D3AAA65441295C8F4243E95041F6285C2FACA65441AE47E10A42E9504133333303AEA65441295C8F6241E950417B14AE27AEA65441AE47E14A41E95041F6285CDFADA65441295C8F823FE95041B81E85FBACA65441EC51B85E3FE95041B81E856BACA65441AE47E1DA3EE9504133333363ABA65441EC51B84E3DE95041333333B3ACA65441EC51B8BE3CE950417B14AE97ADA65441713D0AB73BE950417B14AEE7ABA65441EC51B82E39E950417B14AEB7ABA65441EC51B8FE38E95041F6285C6FABA65441295C8FD237E95041F6285CCFABA65441295C8FA237E95041B81E85BBAAA65441295C8FB236E950417B14AE37AAA65441713D0A7736E95041333333B3A9A65441AE47E17A35E950417B14AE37AAA65441295C8F0235E95041F6285CEFA9A65441713D0AC734E9504133333343AAA65441EC51B8AE34E9504133333333ABA65441713D0AD733E95041B81E854BABA65441713D0A4733E950417B14AEF7AAA65441713D0A5732E95041F6285C9FABA65441713D0A8732E950417B14AED7ACA65441EC51B82E33E95041F6285CAFADA65441713D0A1733E95041B81E850BAFA65441295C8F5233E9504133333313B0A65441AE47E17A35E95041F6285CAFB0A65441295C8F2236E9504133333383B2A65441295C8F1237E95041B81E852BB3A65441AE47E15A37E950417B14AE57B4A65441295C8FD237E95041F6285C6FB4A65441AE47E1DA38E95041B81E851BB4A65441EC51B82E39E95041333333D3B3A65441713D0A673AE95041B81E851BB4A65441713D0AF73AE95041F6285C0FB4A65441713D0A573BE95041B81E85ABB4A65441295C8FF23BE95041F6285C2FB5A65441AE47E19A3CE950417B14AE07B6A65441295C8F223FE950417B14AEB7B7A65441295C8F523FE95041B81E857BB7A65441713D0AD73FE950417B14AEE7B7A65441713D0AD73FE9504133333393BAA65441EC51B86E3EE95041B81E859BBBA65441EC51B86E3EE9504133333313BCA65441713D0AE73EE950417B14AE07BCA65441EC51B85E3FE95041B81E85EBBCA65441295C8F4240E950417B14AEB7BDA65441295C8FB23FE950417B14AE37BFA65441EC51B84E3DE950417B14AE27C0A65441295C8FD23AE950417B14AE67C2A65441EC51B88E39E95041B81E852BC2A65441AE47E1CA36E95041F6285C8FC1A65441EC51B88E36E95041F6285C4FC2A65441295C8FE236E95041333333D3C2A65441295C8FE236E95041F6285C6FC3A65441AE47E13A36E950417B14AEB7C3A65441713D0A2735E950417B14AED7C4A65441AE47E12A34E950417B14AE07C5A65441AE47E1FA33E950417B14AE97C5A65441AE47E10A33E950417B14AE57C6A65441EC51B89E32E950417B14AE67C5A65441AE47E11A32E950417B14AE37C5A65441EC51B8AE31E95041B81E85CBC4A65441295C8F5230E95041333333B3C4A65441AE47E1DA2FE950417B14AE97C5A65441AE47E1DA2FE950417B14AEF7C5A65441AE47E14A2FE95041333333C3C6A65441AE47E1BA2EE95041F6285CCFC6A65441EC51B81E2EE9504133333353C7A65441AE47E19A2DE9504133333353C7A65441295C8F122BE950417B14AEC7C8A65441AE47E19A2AE950417B14AE97C8A65441713D0A472AE95041F6285C0FC9A65441713D0A6728E9504133333373C8A65441AE47E17A26E95041333333A3C8A65441AE47E15A25E950417B14AE47C7A65441AE47E18A25E95041333333F3C6A65441AE47E1FA24E95041B81E856BC4A65441295C8FF223E9504133333393C3A65441713D0A2723E95041B81E85DBC3A65441713D0A9722E950417B14AEA7C4A65441AE47E1BA22E95041B81E858BC5A65441EC51B8FE20E95041B81E850BC7A65441AE47E1DA20E950417B14AEA7C7A65441713D0A471EE95041B81E85CBC7A65441713D0A271DE9504133333353C7A65441295C8F321DE95041B81E85ABC6A65441EC51B82E1BE95041B81E851BC6A65441295C8F321AE950417B14AE37C5A65441EC51B8FE17E95041F6285C5FC4A65441EC51B80E17E95041F6285C5FC4A65441713D0AA715E95041F6285CCFC3A65441AE47E19A15E95041F6285C0FC3A65441EC51B89E14E950417B14AEB7C3A65441295C8F3214E9504133333393C3A65441AE47E13A12E950417B14AE87C6A65441295C8F7213E95041F6285C9FC6A65441713D0A5714E95041F6285CFFC6A65441713D0AB714E95041B81E85ABC6A65441713D0A7715E95041B81E850BC7A65441713D0A7715E95041B81E85CBC7A65441EC51B88E15E95041F6285CAFC8A65441EC51B8CE14E95041F6285C9FC9A65441EC51B86E14E950417B14AE87C9A65441EC51B8DE13E95041B81E853BCAA65441295C8FD213E950417B14AE77CAA65441AE47E14A14E95041F6285C8FCAA65441295C8FC214E95041F6285C1FCBA65441AE47E13A15E95041333333B3CAA65441295C8FD216E95041B81E85FBCAA65441EC51B8DE16E9504133333383CAA65441AE47E14A17E950417B14AE47CAA65441AE47E11A17E95041B81E859BC7A65441713D0AA718E9504133333353C7A65441AE47E1EA19E95041333333C3C6A65441713D0A571AE950417B14AE37C8A65441713D0AF719E9504133333333C9A65441EC51B8AE19E95041333333C3C9A65441AE47E10A1BE95041B81E853BCAA65441EC51B81E1CE9504133333323CAA65441EC51B8DE1CE950417B14AE77CAA65441295C8F021DE95041F6285CEFCAA65441EC51B86E1DE95041B81E855BCBA65441EC51B86E1DE95041333333A3CBA65441EC51B81E1CE95041333333A3CBA65441EC51B8EE1BE9504133333313CBA65441713D0A271AE95041F6285C7FCBA65441295C8FA219E950417B14AEC7CBA65441AE47E14A1AE9504133333363CCA65441AE47E16A1BE9504133333363CCA65441EC51B87E1CE95041B81E859BCDA65441713D0A271DE95041333333E3CDA65441EC51B8FE1DE95041F6285CEFCDA65441713D0A471EE9504133333313CEA65441713D0AD71EE950417B14AED7CDA65441EC51B8BE21E95041F6285C8FCDA65441EC51B84E22E95041F6285C2FCDA65441713D0AC722E95041B81E856BCDA65441AE47E17A23E9504133333353CDA65441EC51B82E24E95041333333E3CDA65441295C8FC223E950417B14AEB7CFA65441AE47E1DA23E95041F6285C8FD0A65441295C8F7225E95041F6285CEFD0A65441AE47E1EA25E95041F6285C8FD0A65441EC51B8CE26E95041B81E85CBD0A65441713D0A4727E950417B14AE97D1A65441713D0AE726E950417B14AE77D3A65441EC51B85E27E95041B81E858BD4A65441EC51B8CE26E95041F6285C3FD5A65441AE47E1CA24E95041B81E851BD5A65441EC51B89E23E95041B81E85FBD3A65441AE47E14A23E95041F6285C1FD4A65441295C8F3223E95041F6285C0FD5A65441713D0A6722E950417B14AE87D5A65441295C8FD222E95041B81E850BD6A65441EC51B87E22E95041F6285C5FD6A65441AE47E19A21E95041F6285CCFD5A65441295C8F8221E9504133333323D6A65441295C8F6223E95041F6285CAFD7A65441EC51B89E23E950417B14AEC7D7A65441713D0AB723E9504133333313D7A65441AE47E1EA25E95041F6285C7FD7A65441AE47E14A26E95041B81E85FBD6A65441295C8F5227E95041B81E85CBD6A65441EC51B81E28E950417B14AE37D7A65441713D0A172AE95041B81E85CBD6A65441295C8FA22BE95041333333F3D5A65441713D0A772DE950417B14AE77D6A65441EC51B8EE2DE950417B14AEC7D7A65441EC51B80E2FE95041333333F3D8A65441EC51B8CE2FE950417B14AE17D9A65441EC51B82E30E95041F6285CCFD8A65441295C8F8230E9504133333323D9A65441AE47E12A31E95041F6285C2FD9A65441295C8FA231E950417B14AE07DAA65441AE47E17A32E950417B14AE37DAA65441713D0A4733E95041B81E85ABDBA65441EC51B89E32E950417B14AEA7DCA65441AE47E13A33E95041F6285C1FDDA65441713D0A7733E950417B14AEF7DDA65441AE47E1FA33E95041333333C3DEA65441AE47E1FA33E95041B81E859BDFA65441AE47E1EA34E950417B14AEF7E3A65441EC51B87E34E95041F6285CBFE5A65441AE47E1BA34E95041F6285C8FE8A65441713D0A0734E95041F6285C4FE9A65441EC51B8BE33E95041B81E857BEAA65441EC51B8FE32E95041F6285CCFEAA65441EC51B80E32E950417B14AE57EAA65441AE47E15A31E95041F6285CDFE9A65441EC51B87E31E95041F6285C7FE9A65441EC51B88E30E95041B81E859BE8A65441AE47E10A30E950417B14AE77E8A65441295C8FB22DE95041F6285C3FE7A65441AE47E13A2DE950417B14AE17E8A65441295C8FC22CE9504133333373ECA65441AE47E12A2EE950417B14AE37ECA65441EC51B81E2EE95041B81E856BEBA65441295C8F022FE950417B14AE17EBA65441295C8F2230E95041F6285CBFEBA65441295C8F7231E95041F6285C1FECA65441AE47E15A31E95041B81E856BEBA65441295C8F3232E95041B81E850BEBA65441295C8F8233E95041B81E858BECA65441295C8F6232E950417B14AEE7EDA65441295C8F6232E95041B81E859BEEA65441713D0AE732E95041B81E852BEFA65441295C8F9232E95041B81E85BBEFA65441713D0A9734E95041F6285C4FEFA65441295C8FD234E9504133333383EEA65441AE47E15A34E950417B14AE17EEA65441EC51B84E34E950417B14AE87EDA65441EC51B83E35E9504133333333EDA65441AE47E19A36E950417B14AE87EDA65441713D0AD736E95041B81E85CBEEA65441AE47E1BA37E950417B14AE57F0A65441AE47E17A38E9504133333373EFA65441AE47E1CA39E950417B14AED7EEA65441713D0A673AE95041333333A3EFA65441713D0A973AE9504133333393F0A65441AE47E13A3CE950417B14AEE7F0A65441713D0A773CE95041B81E856BF1A65441295C8F723DE95041F6285CAFECA65441EC51B88E3CE95041F6285C0FEDA65441295C8F023BE9504133333303EDA65441295C8F423AE950417B14AE37ECA65441EC51B81E3AE95041F6285C5FEBA65441713D0A673AE950417B14AEE7EAA65441EC51B8BE39E950417B14AE27EAA65441AE47E1DA38E95041B81E851BEAA65441AE47E11A38E95041F6285CAFE9A65441AE47E18A37E95041F6285C5FE8A65441713D0AA736E95041B81E85DBE7A65441713D0A2735E95041F6285C0FE7A65441EC51B89E35E950417B14AEF7E0A65441AE47E10A36E95041F6285C5FDFA65441AE47E19A36E95041F6285C9FDEA65441713D0A0737E95041F6285C1FDDA65441713D0A2738E950417B14AED7DCA65441295C8FF238E950417B14AE07DDA65441295C8F8239E950417B14AE07DDA65441295C8F123AE95041F6285C4FDDA65441295C8FD23AE95041F6285C1FDDA65441295C8F323BE9504133333383DCA65441713D0AE73BE9504133333323DCA65441EC51B8FE3BE95041B81E85BBDAA65441EC51B88E3CE9504133333313DAA65441EC51B8FE3BE95041B81E856BD9A65441713D0AE73BE9504133333393D8A65441AE47E1AA3BE950417B14AEC7D7A65441EC51B82E3CE950417B14AE67D7A65441713D0A473CE950417B14AEA7D6A65441AE47E18A3DE950417B14AE57D5A65441713D0A273EE95041B81E85ABD5A65441295C8F923EE950417B14AEC7D4A65441AE47E12A40E950417B14AE67D4A65441AE47E12A40E950417B14AEF7D4A65441EC51B84E40E95041F6285C9FD5A65441EC51B84E40E9504133333383D6A65441713D0A473FE950417B14AEA7D6A65441713D0A473FE95041B81E855BD7A65441EC51B8FE3EE9504133333303D8A65441295C8FB23FE95041B81E857BD8A65441295C8F7240E95041B81E854BD8A65441295C8F3241E95041F6285CAFD7A65441EC51B8FE41E95041B81E858BD7A65441295C8F1243E95041B81E857BD8A65441AE47E1FA42E95041F6285CFFD8A65441EC51B87E43E95041B81E85CBD9A65441713D0A9743E95041B81E858BDAA65441295C8F6244E95041F6285CDFDAA65441295C8F3244E95041333333C3DBA65441AE47E14A47E950417B14AE77DCA65441295C8F5248E95041F6285C5FDCA65441AE47E1CA48E9504133333313DDA65441EC51B83E4AE9504133333373DDA65441713D0A574AE95041B81E852BDDA65441713D0A374CE95041B81E858BDDA65441AE47E1CA4EE950417B14AEC7DDA65441AE47E18A4FE950417B14AE57DEA65441AE47E1BA52E950417B14AE47DFA65441AE47E1EA52E95041B81E850BDFA65441713D0AA754E95041F6285C8FDFA65441AE47E17A56E950417B14AEA7DFA65441EC51B81E58E95041F6285C7FE0A65441AE47E1CA5AE950417B14AE87E1A65441EC51B8CE5BE95041D7A370BDE1A65441713D0A175DE95041F6285CCFE1A65441EC51B87E5EE95041F6285C2FE2A65441AE47E11A62E95041F6285C2FD9A65441295C8F3259E95041B81E853BD6A65441AE47E1EA4FE95041F6285CEFD3A65441EC51B8AE4FE95041333333D3D4A65441295C8FC24DE95041F6285CAFD4A65441AE47E11A4DE95041B81E85FBD3A65441295C8F324DE95041F6285C8FD3A65441713D0AD74BE9504133333323D3A65441295C8F824BE950417B14AED7D3A65441EC51B8CE4AE950417B14AE07D4A65441713D0AF749E9504133333383D3A65441AE47E11A4AE95041333333C3D2A65441EC51B88E45E95041F6285C4FD1A65441AE47E1EA43E95041B81E852BD1A65441AE47E18A40E950417B14AEE7CFA65441713D0AE73EE950417B14AEB7CFA65441333333933EE950413D0AD7D3CEA65441295C8F323EE95041F6285CEFCDA65441713D0AB747E95041B81E850BB5A65441295C8F024AE95041F6285C7FB3A6544109000000EC51B80E3EE950417B14AE77D3A65441713D0AA73CE950417B14AEA7D3A65441295C8F223CE95041B81E856BD3A65441713D0A173CE95041B81E85BBD1A65441713D0AA73CE95041F6285C1FD1A65441295C8F423DE95041B81E852BD1A65441713D0AC73DE95041B81E85BBD1A65441AE47E14A3EE95041F6285CCFD2A65441EC51B80E3EE950417B14AE77D3A6544107000000713D0AB74AE950417B14AE77D6A65441295C8FE24BE95041F6285CCFD5A65441713D0A974CE95041F6285C5FD6A65441AE47E15A4CE95041B81E852BD7A65441AE47E1FA4BE95041F6285CBFD6A65441295C8F224BE95041B81E85CBD6A65441713D0AB74AE950417B14AE77D6A6544111000000EC51B82E48E95041333333A3D7A65441EC51B8BE48E95041B81E85FBD6A65441713D0AD748E9504133333353D6A65441713D0AC749E95041F6285C4FD7A65441AE47E1BA49E95041B81E85EBD7A65441713D0A874AE95041B81E851BD8A65441EC51B8FE4AE95041F6285CDFD7A65441295C8F524BE950417B14AE57D8A65441AE47E1CA4BE950417B14AE57D8A65441713D0A674CE95041333333C3D8A65441AE47E18A4CE95041F6285CEFD9A65441295C8FB24BE95041B81E85BBDAA65441713D0A574AE950417B14AE97DAA65441295C8FA249E95041333333F3D8A65441295C8FA249E95041B81E854BD8A65441EC51B8EE48E950417B14AE57D8A65441EC51B82E48E95041333333A3D7A6544108000000295C8FB254E95041333333E3D9A65441EC51B8EE54E950417B14AE97DAA65441EC51B82E54E95041B81E854BDBA65441EC51B89E53E95041F6285C3FDBA65441AE47E18A52E95041B81E858BDAA65441713D0A9752E950417B14AE37DAA65441EC51B83E53E95041333333B3D9A65441295C8FB254E95041333333E3D9A6544113000000295C8FB224E9504133333373CBA65441EC51B86E23E95041B81E855BCBA65441713D0A8723E950417B14AE97CBA65441EC51B87E22E950417B14AE97CBA65441713D0A7721E95041F6285C0FCCA65441AE47E1EA1FE95041F6285C4FCBA65441EC51B80E20E95041F6285C2FCAA65441EC51B8AE1FE95041F6285CFFC9A65441EC51B8AE1FE9504133333333C9A65441EC51B86E20E95041333333A3C8A65441295C8FB221E950417B14AEC7C8A65441295C8F4222E95041B81E854BC9A65441295C8FD222E950417B14AEE7C9A65441713D0AC722E95041B81E859BCAA65441713D0AB723E95041F6285CBFCAA65441713D0A4724E9504133333393C9A65441295C8F4225E95041F6285C5FCAA65441EC51B84E25E95041F6285CEFCAA65441295C8FB224E9504133333373CBA6544109000000AE47E1AA3EE95041B81E852BC2A65441713D0AA73FE95041B81E85BBC2A65441AE47E1CA3FE950417B14AE57C3A65441713D0A473FE9504133333383C4A65441AE47E1AA3EE9504133333323C4A65441295C8FD23DE950417B14AE17C4A65441AE47E1EA3DE950417B14AE27C3A65441295C8F323EE95041F6285C4FC2A65441AE47E1AA3EE95041B81E852BC2A654410D000000EC51B8AE31E950417B14AED77CA65441713D0AE732E950417B14AEF77AA65441713D0AE732E950417B14AE4779A65441AE47E17A32E950417B14AEE778A65441AE47E13A33E95041F6285C9F78A65441713D0AC734E95041B81E856B79A65441295C8FD234E95041333333D37AA65441295C8F4234E95041F6285C6F7BA65441295C8F4234E95041333333837CA65441713D0A6734E95041B81E855B7DA65441295C8FE233E95041333333D37DA65441EC51B82E33E950417B14AEF77DA65441EC51B8AE31E950417B14AED77CA6544107000000AE47E1EA49E95041B81E85BBADA65441295C8F024AE9504133333353ACA65441295C8F224BE95041F6285CFFABA65441AE47E1FA4BE950417B14AEE7ABA65441295C8F524BE950417B14AE67ADA65441295C8FC24AE950417B14AEC7ADA65441AE47E1EA49E95041B81E85BBADA654410A000000AE47E17A4DE950417B14AEE7AEA65441AE47E1AA4DE950417B14AED7AFA65441713D0AF74CE95041333333A3B0A65441295C8F824BE95041333333A3B0A65441EC51B8CE4AE95041B81E852BB0A65441713D0A874AE95041B81E857BAEA65441EC51B88E4BE95041F6285C6FAEA65441AE47E1BA4CE95041F6285CDFADA65441AE47E1AA4DE950417B14AEF7ADA65441AE47E17A4DE950417B14AEE7AEA6544101030000000B00000038030000666666F6BAE85041666666A6DBA75441F6285CAFB9E850417B14AEE7D9A75441A4703DEAB9E85041CDCCCCECD7A75441713D0AA7BAE850411F85EBD1D6A7544152B81E05BBE85041A4703DFAD4A7544148E17A14BCE8504152B81E75D3A75441A4703D6ABDE8504114AE4701D0A7544166666606BFE85041D7A3702DCFA7544100000080C0E85041AE47E1DACEA754413D0AD733C2E85041B81E85EBCCA754411F85EB91C6E8504185EB51F8BEA75441D7A3705DCBE85041E17A140EB0A75441000000D0CAE85041000000B0AFA75441F6285C3FC9E8504152B81E75AFA75441F6285C7FC7E8504148E17AC4AEA754413D0AD7B3C5E85041E17A146EADA75441CDCCCC8CC4E850415C8FC2A5ACA754413D0AD733C2E85041D7A370DDABA75441C3F5283CC1E85041EC51B8CEAAA75441E17A14FEBFE85041C3F5287CAAA75441333333E3BEE85041E17A143EA9A7544114AE4741BFE85041CDCCCC8CA8A75441F6285CBFC1E85041295C8F32A9A75441CDCCCC1CC2E850413D0AD703A8A75441295C8F42CAE85041E17A146E9BA754417B14AE07CAE850418FC2F5C89AA7544114AE4771CAE85041000000309AA7544166666616CBE85041AE47E18A99A754419A999939CBE8504148E17A6498A75441333333D3CBE8504185EB517897A754410AD7A3A0CAE850419A99996996A7544185EB51B8CAE8504148E17AC495A754418FC2F568CBE85041C3F528FC94A75441713D0AA7CCE8504114AE472192A75441A4703DAACDE85041B81E85AB91A7544114AE47D1CEE8504152B81E8590A75441A4703D6ACFE850415C8FC2758FA75441AE47E16AD1E85041E17A141E8EA75441AE47E10AD2E8504185EB51488CA75441AE47E16AD4E8504185EB512888A75441F6285CBFD5E850418FC2F54887A75441713D0AA7D6E850413D0AD72387A75441E17A145ED6E85041EC51B89E86A75441B81E85EBD6E85041713D0AF784A75441EC51B80ED7E85041333333F383A7544152B81E35D8E850411F85EB5184A754410AD7A370D8E850415C8FC22585A75441EC51B8AED9E85041E17A140E85A75441EC51B88EDAE850415C8FC20586A754411F85EB71DAE850418FC2F5E886A754411F85EBC1DBE85041A4703D2A86A754415C8FC285DDE85041295C8F6284A75441AE47E10ADDE85041D7A3705D84A7544152B81E95DCE85041C3F528FC82A7544133333313DCE85041CDCCCCEC81A75441A4703D7ADBE85041E17A14FE7FA7544148E17A04DBE850410AD7A3707FA75441666666C6D9E85041D7A3706D7EA754413D0AD793D8E85041333333237DA75441CDCCCC2CD9E85041D7A370AD7CA754411F85EBF1D8E85041D7A370CD7BA75441666666E6D8E85041B81E854B7BA754417B14AE87D8E85041F6285C8F7AA75441D7A370BDDAE850417B14AE377CA75441AE47E14ADBE85041333333437CA754410AD7A3C0DBE85041A4703D8A7CA75441CDCCCCCCDBE850415C8FC2757DA754411F85EB91DBE85041B81E85EB7DA75441F6285C1FDCE850410AD7A3907EA754419A999989DCE85041A4703DDA7FA7544185EB5178DEE850415C8FC21580A754410AD7A340DFE85041F6285C7F80A7544114AE47F1DFE850410AD7A3707FA75441295C8FC2DFE85041F6285CBF7EA75441C3F5282CE0E85041D7A3706D7EA75441E17A14AEE0E850419A9999697DA75441713D0A67E0E850410AD7A3F07BA75441AE47E1AADFE850418FC2F5F87AA754417B14AE87DFE850411F85EB017AA75441666666B6DFE850419A99993979A754411F85EB81E1E85041000000C077A754415C8FC2A5E1E8504148E17AD476A7544185EB51F8E1E850413333335376A754415C8FC2A5E1E850415C8FC2C575A75441CDCCCC9CE2E850416666669675A75441EC51B81EE3E850418FC2F5E875A75441295C8FF2E3E85041E17A148E76A7544148E17A74E4E850419A99999976A754411F85EB01E5E85041B81E853B76A75441A4703DCAE5E85041A4703D8A75A7544148E17A34E6E85041713D0A8774A75441333333A3EBE85041AE47E14A70A75441B81E856BECE850410000001070A75441713D0A57EDE85041295C8F6270A7544148E17AE4EDE85041000000D071A754411F85EB71EEE8504185EB519872A75441000000B0EFE85041000000D071A75441C3F528BCEFE850410AD7A3C070A75441A4703D1AF0E850417B14AE2770A75441B81E855BF2E85041CDCCCC0C6FA75441B81E853BF3E850417B14AE676EA754415C8FC2A5F3E85041CDCCCC4C6DA754413D0AD723F3E850411F85EB316CA7544100000030F3E8504185EB51E86AA754415C8FC2A5F3E850415C8FC2B569A75441D7A3709DF4E85041EC51B88E68A7544185EB51D8F4E850418FC2F51868A75441333333F3F5E8504185EB516867A754417B14AE77F7E850411F85EB2167A7544114AE47F1F8E85041EC51B85E64A75441EC51B89EF8E85041EC51B87E63A75441C3F5284CF8E850413D0AD72364A754418FC2F528F8E8504148E17AD464A75441EC51B8BEF7E85041E17A143E65A754410AD7A380F6E85041C3F528EC64A754415C8FC245F6E8504148E17AF463A7544185EB5198F6E85041EC51B87E63A75441666666F6F6E850417B14AE5762A75441333333D3F6E85041713D0AA761A754410AD7A380F6E85041E17A14EE61A75441EC51B8FEF5E85041333333B361A754411F85EB41F5E85041B81E859B61A75441B81E85FBF4E85041CDCCCC1C62A7544166666656F4E85041CDCCCC3C61A754418FC2F5A8F4E850419A99993960A754413D0AD7C3F5E850416666661660A7544114AE4751F6E850415C8FC2A55DA754413D0AD783F7E850418FC2F5A85EA7544114AE4711F8E8504114AE47915EA75441EC51B89EF8E85041D7A3707D5FA75441C3F5280CFAE850418FC2F5E85CA75441C3F5280CFAE85041000000505CA75441C3F528ECFAE850415C8FC2C55CA75441000000E0FAE850415C8FC2E55BA7544114AE47D1F9E85041713D0AD75AA75441A4703D8AF9E8504152B81E555AA75441A4703D8AF9E8504148E17AA459A75441713D0A87F8E85041713D0AF759A75441C3F5284CF8E8504185EB519859A754417B14AE77F7E850411F85EB115BA7544114AE4731F7E85041A4703D1A5AA7544185EB5198F6E85041333333B35AA7544166666656F4E85041B81E852B58A7544133333333F4E850411F85EB9157A75441E17A146EF4E85041EC51B86E57A7544133333353F3E85041C3F5283C56A7544100000030F3E85041333333A355A7544133333373F2E850410AD7A35055A754417B14AE47F3E850418FC2F55854A754415C8FC2A5F3E85041713D0AB754A754415C8FC285F4E85041EC51B8EE53A75441713D0AE7F5E850417B14AED753A75441E17A142EF6E85041295C8F1254A75441A4703DEAF6E85041AE47E1FA53A75441AE47E10AF6E8504152B81E8553A7544148E17A14F9E850410AD7A3B052A754417B14AE17FAE85041E17A143E53A75441713D0A87F8E850411F85EBA151A75441AE47E13AFAE85041D7A370AD51A75441AE47E13AFAE850415C8FC2B550A75441D7A370ADF9E85041A4703DAA50A75441CDCCCCFCF8E850419A9999F94FA754413D0AD783F7E85041000000604FA75441EC51B8DEF6E85041713D0AC74EA754413D0AD7A3F6E85041295C8FD24EA7544185EB5198F6E8504185EB51484FA75441D7A370BDF3E85041D7A3700D4FA754415C8FC2A5F3E85041CDCCCC5C4EA75441C3F528ECF3E850417B14AEB74DA7544152B81ED5F3E850418FC2F5C84BA7544114AE47D1F2E850419A9999994BA75441E17A14CEF1E85041333333734AA75441713D0AF7EFE85041AE47E1AA49A7544114AE4781EFE850410AD7A34049A754415C8FC245EFE85041E17A140E48A75441713D0AF7EFE85041333333D347A75441A4703DFAF0E85041D7A3707D46A754419A999969EFE85041D7A3709D45A754417B14AEC7EFE85041713D0A7744A7544148E17AA4EFE85041666666C643A75441713D0AF7EFE8504152B81E1543A75441E17A14EEF0E85041CDCCCC4C42A75441E17A14CEF1E850417B14AE8742A75441295C8FA2F2E8504114AE472143A754410AD7A300F3E85041F6285C5F44A75441F6285C7FF2E85041A4703D7A45A75441D7A370BDF3E85041E17A140E48A75441000000F0F4E85041B81E859B48A754413D0AD7A3F6E85041B81E859B48A754410AD7A360F7E8504152B81E3549A75441295C8FB2F7E85041D7A370FD49A75441C3F5286CF7E85041666666964AA754417B14AE77F7E85041713D0A274CA75441713D0AA7F7E85041666666364DA7544152B81EC5F9E850419A9999594DA75441EC51B85EFAE85041F6285CEF4CA7544133333303FBE850411F85EB414DA75441E17A141EFCE850413D0AD7E34CA7544185EB5188FCE85041B81E85FB4CA754410AD7A390FBE850419A9999394EA75441A4703D6AFAE8504152B81E454EA75441D7A3708DFAE850413D0AD7A34EA7544166666606FCE85041F6285CAF4EA75441AE47E1FAFBE850411F85EB014FA7544185EB51A8FBE85041000000604FA754413D0AD793FCE85041AE47E19A4FA7544100000080FDE850419A9999194FA75441D7A370EDFEE850419A9999194FA7544100000040FFE85041F6285C8F4FA754416666666600E95041CDCCCCFC50A75441F6285C1F00E950418FC2F5B851A7544185EB510800E950413333330353A75441C3F528DC00E95041295C8F1254A754411F85EB5101E95041C3F5283C56A75441E17A143E02E9504114AE47E156A754416666660603E95041B81E856B56A754415C8FC2E503E95041F6285C5F56A754415C8FC2E503E95041EC51B8AE55A75441A4703DFA02E95041CDCCCC0C56A75441EC51B8EE02E950418FC2F57853A754416666662602E95041B81E85EB52A75441713D0AD702E95041CDCCCCFC50A7544148E17A4404E9504114AE471150A754417B14AE4705E9504185EB512850A75441AE47E12A07E95041B81E852B51A754415C8FC26507E95041B81E850B52A75441EC51B8FE07E9504185EB51E851A754419A99991909E950411F85EB8152A75441713D0AA709E9504185EB51A853A75441AE47E1FA0DE95041CDCCCC3C4FA75441B81E851B0DE95041C3F5286C4FA75441C3F528EC0CE95041D7A3700D4FA75441A4703D4A0DE950411F85EB414DA75441666666760CE950410AD7A3C04CA75441E17A14CE0AE950418FC2F5884DA754411F85EBE109E95041EC51B81E4DA7544185EB517809E95041E17A146E4CA754410AD7A38008E950413D0AD7034CA75441333333F307E95041000000304BA75441000000D007E95041666666964AA754416666661608E95041AE47E1AA49A7544114AE477107E950413333339349A754413333331307E9504114AE471149A7544148E17A2405E9504152B81E3549A75441A4703DBA04E950417B14AEA748A75441CDCCCC2C04E950410000009048A75441C3F5287C03E950417B14AEC747A75441F6285CBF02E95041B81E85BB47A7544152B81E3503E950411F85EB5147A75441D7A3701D03E950417B14AEE746A75441C3F5289C02E95041000000D046A75441A4703D3A01E950411F85EB9145A7544114AE47A100E9504152B81EB545A75441F6285C1F00E9504148E17A0445A75441AE47E15A00E950417B14AE4744A754410AD7A3F0FFE850417B14AE8742A754419A9999A9FFE85041713D0AF740A7544148E17AE4FFE85041295C8F5240A7544185EB5128FFE850417B14AE373FA75441F6285C1F00E95041F6285C8F3DA754410AD7A3F0FFE8504152B81E253DA754413D0AD71300E95041A4703D0A3CA754411F85EB7100E9504114AE47713BA75441F6285CDF01E9504152B81E653BA754418FC2F55803E950411F85EB213CA75441AE47E1AA03E9504152B81E253DA75441CDCCCC2C04E95041F6285CAF3CA75441B81E851B06E95041E17A14DE3CA754413D0AD7E306E95041D7A370CD3EA75441CDCCCCAC07E950410AD7A3F03EA75441AE47E10A08E9504114AE47A13FA754419A99991909E950417B14AE373FA75441295C8F0209E950410AD7A3D03FA75441F6285C6F0AE950419A99996940A754413D0AD7630AE950413333330341A754410AD7A3200BE950411F85EB3141A7544148E17A140BE950418FC2F57841A754411F85EBA10BE9504114AE474142A754411F85EB810CE9504114AE474142A754413D0AD7030DE95041666666E642A75441333333C30EE9504148E17A4443A7544185EB51680FE95041666666A644A75441F6285C8F10E9504114AE47C145A754417B14AE7710E95041295C8F2247A7544114AE47A112E95041666666F647A75441295C8F5213E950417B14AEC747A754413D0AD79315E95041295C8F4246A75441F6285C7F16E95041C3F5285C43A75441CDCCCC2C16E95041E17A14FE42A754411F85EBD116E950417B14AE8742A75441C3F5283C17E95041AE47E11A41A75441CDCCCC0C17E9504114AE478140A75441F6285C5F17E9504152B81EC53FA754417B14AE6716E950413D0AD7133FA75441E17A14DE16E950415C8FC2F53CA75441295C8FA216E95041000000803CA7544148E17A6415E95041713D0A073BA75441B81E85AB15E95041AE47E11A3AA754416666660615E95041CDCCCCDC38A754418FC2F55815E950413D0AD74338A754415C8FC29512E95041D7A3703D36A75441CDCCCCFC11E950419A99991936A75441AE47E17A11E9504148E17A5436A75441E17A14BE10E9504152B81E7535A7544148E17A740FE9504152B81E9534A7544148E17A940EE950411F85EBB132A7544152B81EA50CE95041A4703D9A32A754413D0AD7230CE95041B81E853B32A754413D0AD7430BE9504185EB511832A75441333333930AE95041A4703DDA30A75441CDCCCCFC0AE950419A99992930A75441713D0AA709E95041C3F5289C2FA75441B81E85DB07E950410000005031A754410AD7A3C006E9504148E17A4431A75441D7A3709D06E950419A9999E931A754417B14AE4705E950417B14AE4732A754413333335305E95041E17A148E32A754419A99990904E9504152B81ED532A754410000007003E95041D7A370DD31A75441E17A143E02E950415C8FC2C531A754416666664601E95041AE47E18A31A75441F6285CFF00E9504148E17A6430A754411F85EB3102E95041EC51B80E2FA754415C8FC2A505E95041CDCCCC4C30A75441295C8F6206E95041AE47E1AA30A754417B14AE0707E950410000007030A7544152B81E9507E95041C3F5289C2FA75441AE47E1EA08E95041E17A143E2FA75441AE47E1CA09E95041F6285CDF2EA75441EC51B89E0AE95041B81E850B2EA75441A4703D8A0BE950410AD7A3D02DA75441B81E853B0CE950410AD7A3102CA7544114AE47B10CE950415C8FC2B52CA7544152B81E650EE950419A9999A92CA754415C8FC2350EE95041EC51B88E2BA754411F85EB0110E950417B14AEB729A75441EC51B8FE0EE950410AD7A37029A75441000000800FE95041000000C028A754413D0AD77316E95041333333E328A754417B14AE0719E95041B81E858B2AA75441E17A142E1AE9504185EB51682AA75441D7A3705D1AE950415C8FC2152AA75441F6285CDF1AE9504114AE47212AA754417B14AEA71BE950419A9999E92AA7544185EB51581CE95041D7A3700D2BA75441B81E855B1DE950410AD7A3102CA75441295C8FA21DE9504185EB51682AA75441333333531EE95041A4703D0A2AA75441295C8FF220E95041666666C62AA75441E17A142E21E95041295C8FB22BA75441C3F5288C21E9504148E17A042CA75441F6285C6F23E95041B81E854B2CA75441A4703DAA23E9504185EB51082DA754411F85EBA124E95041C3F528FC2CA754411F85EBA124E9504185EB51282CA75441E17A143E26E95041E17A14FE29A75441AE47E1FA26E95041F6285CCF29A75441666666E627E95041E17A141E29A75441000000A027E95041F6285C0F28A75441000000A027E950411F85EBC125A754411F85EB8125E95041AE47E15A26A7544148E17AF424E95041D7A370AD26A7544148E17A1424E950419A9999D925A75441713D0AA722E95041A4703DAA25A75441F6285C8F22E9504148E17A7423A7544114AE473122E95041333333F322A754417B14AE9721E95041333333F322A7544148E17A7421E950419A99991924A7544114AE477120E95041666666B625A75441713D0A271FE950410000002026A75441713D0A271FE9504152B81EC526A75441AE47E16A1EE95041CDCCCCDC26A75441AE47E18A1DE95041C3F5282C26A754415C8FC2E51CE95041E17A14EE24A7544114AE47F11CE95041F6285CAF23A754410AD7A3001EE950418FC2F5A821A75441713D0A671DE95041EC51B83E21A754417B14AE871CE95041B81E85DB22A75441CDCCCC6C1BE950410AD7A38023A75441333333D31AE950415C8FC24523A75441F6285C5F17E95041C3F5288C23A754419A9999E916E95041A4703D0A23A75441666666E615E95041333333F322A754418FC2F57814E9504148E17A9422A75441B81E850B13E9504114AE477122A7544152B81EC512E95041713D0A0722A75441295C8F9211E95041C3F528CC21A7544152B81E2510E950418FC2F5C820A75441C3F528CC0DE95041EC51B83E21A7544152B81EA50CE95041B81E851B21A754411F85EB810CE950415C8FC28521A75441B81E855B0BE950419A99997921A75441CDCCCCDC0BE950415C8FC2A520A75441CDCCCCDC0BE9504152B81EF51FA754413D0AD7430BE95041CDCCCC2C1FA7544148E17A140BE95041AE47E1EA1CA754417B14AE2706E950417B14AE671FA75441F6285C3F06E95041D7A370DD1FA7544148E17A4404E950410000003020A7544185EB513804E9504114AE477122A75441F6285C9F03E95041713D0AC723A754419A99994902E95041B81E859B24A754417B14AEC701E95041C3F5284C25A75441EC51B82E01E95041F6285C2F27A754413333334300E95041713D0A2728A75441F6285C1F00E95041F6285CEF28A75441D7A370CDFFE85041A4703D2A29A754415C8FC2D5FEE85041D7A3702D2AA75441EC51B88EFEE85041000000602BA75441AE47E1BAFDE850419A9999C92BA75441666666E6FCE85041713D0A772BA75441F6285CEFFBE85041666666A62BA75441B81E857BF8E85041713D0AD72FA75441666666D6F7E85041A4703DDA30A75441C3F528CCF4E85041E17A147E2DA75441C3F528ACF5E8504185EB51282CA75441295C8FB2F7E850410AD7A37029A75441A4703DCAF7E8504185EB51C827A75441C3F5284CF8E85041F6285C2F27A75441F6285C4FF9E85041A4703DCA24A75441A4703D8AF9E850416666661623A754410AD7A390FBE8504152B81E351EA754415C8FC235FCE85041000000B01CA754417B14AE97FDE85041666666861AA75441EC51B8AEFDE85041F6285C5F19A75441D7A370EDFEE85041D7A3708D15A754410AD7A310FFE850413D0AD7C313A75441E17A14BEFEE85041295C8FB212A75441AE47E17AFFE8504114AE475111A754416666666600E950418FC2F5C80EA754413D0AD7F300E95041000000D009A7544152B81E7501E9504152B81EF506A754410AD7A3B001E95041E17A14FE05A754411F85EB3102E950411F85EB1105A75441295C8F0202E95041AE47E15A02A75441B81E85CB02E95041295C8F9201A75441E17A146E02E9504148E17A5400A75441B81E85CB02E9504185EB5168FFA654413D0AD7B302E950413D0AD743FBA654416666662602E95041EC51B89EFAA654418FC2F57802E95041713D0AA7F9A65441CDCCCC6C02E950415C8FC245F8A65441713D0AF701E95041B81E85FBF6A65441EC51B80E02E95041E17A148EF5A65441D7A370CDFFE85041B81E853BF5A65441CDCCCC8C01E950417B14AE07F7A654413333332301E950418FC2F568F8A65441713D0A1701E950419A9999F9F9A6544152B81E7501E95041713D0A67FBA65441F6285CFF00E9504152B81EA5FCA65441AE47E15A00E950415C8FC2B501A75441AE47E15A00E95041713D0A1703A7544185EB510800E950419A99994904A75441C3F528FCFFE85041A4703DDA05A7544185EB5128FFE8504185EB511807A75441B81E856BFEE85041F6285CDF0AA7544114AE4701FEE850415C8FC2050CA754415C8FC2F5FDE85041713D0A870CA7544152B81E25FEE85041295C8FC20CA7544185EB5148FEE8504114AE47D10DA75441333333E3FBE8504148E17A7411A75441AE47E15AF9E8504185EB516818A75441E17A14EEF7E85041A4703D3A1CA754418FC2F548F7E85041D7A3703D1DA7544133333313F5E85041713D0AE722A7544185EB51F8F3E85041666666F623A75441B81E853BF3E85041F6285C2F27A75441A4703DDAF1E850410AD7A3302BA75441CDCCCC8CEFE85041D7A3701D30A754419A999989EEE8504152B81E1531A7544152B81EB5EDE8504148E17A2432A7544114AE4701ECE850413D0AD7A335A754415C8FC215EBE850415C8FC20537A754419A999909EBE85041A4703DAA37A754410AD7A330ECE850410000009036A7544114AE47E1ECE8504114AE475135A75441F6285CBFF0E8504152B81ED532A75441295C8FC2F1E850411F85EBD131A75441713D0A67F2E8504148E17A6430A75441295C8F82F3E8504148E17A842FA75441F6285C8FF7E85041AE47E18A31A75441713D0A07F5E85041333333F334A75441E17A14CEF1E85041713D0A6738A75441E17A149EEDE850417B14AE573EA754413D0AD733EDE85041295C8F923EA75441C3F5283CECE85041D7A370AD3FA754417B14AE27EDE850418FC2F59840A754417B14AE27EDE8504114AE476141A75441EC51B88EECE850410AD7A37042A75441D7A3702DEBE85041333333E341A75441E17A14FEEAE850419A99992942A754415C8FC215EBE85041D7A370BD44A75441333333A3EBE850413D0AD73345A754413D0AD773EBE85041295C8F4246A754413D0AD793EAE8504185EB51B846A7544166666626E9E85041B81E85DB46A7544185EB51C8E8E85041AE47E10A47A754417B14AE17E8E8504152B81E9546A75441F6285C4FE7E8504152B81E7547A75441CDCCCC3CE5E85041C3F5280C4BA75441713D0AA7E5E85041CDCCCCBC4BA754411F85EBE1E5E850417B14AED74CA754418FC2F5B8E7E8504148E17AD44BA75441AE47E11AE9E8504114AE47B14BA75441295C8F32E9E8504148E17AB44CA7544166666646E8E85041AE47E1BA4EA754417B14AE37E7E85041666666F64EA75441A4703DAAE6E8504114AE47514EA75441D7A370EDE5E85041713D0AE74DA754413D0AD7C3E3E8504114AE47314FA754413D0AD7E3E2E850413D0AD7834FA7544166666656E2E8504114AE47314FA75441F6285C2FE1E85041A4703DCA4FA75441E17A14EEDEE8504148E17AF451A754413D0AD783DEE85041AE47E11A53A754419A999989DCE85041B81E858B55A75441713D0A77DAE850418FC2F5D857A7544148E17A44D9E850418FC2F5B858A754413D0AD7F3D5E85041A4703DBA5CA75441713D0AE7D1E850419A99991961A75441000000C0D0E85041B81E857B62A75441A4703D5ACAE850410AD7A33068A75441C3F5287CC6E85041EC51B84E6AA75441EC51B82EC4E850419A9999496CA7544148E17A04C2E85041CDCCCC0C6FA75441D7A3700DC1E850410000001070A754411F85EB61BEE85041AE47E1CA73A754415C8FC275BDE8504185EB513875A7544114AE4751B9E85041E17A14BE7AA75441B81E85FBB7E8504185EB51287BA7544114AE4791B7E850411F85EBC17BA7544133333333B7E850417B14AE577BA754413D0AD7E3B7E85041333333837AA7544166666636B8E8504114AE477178A75441713D0AA7BAE85041295C8F3277A7544114AE47F1BBE850413D0AD74375A754419A9999B9BCE85041295C8F0273A7544185EB5188BFE850417B14AE2770A754410AD7A370BFE85041AE47E18A6EA754418FC2F538C0E850418FC2F5786CA754410AD7A330C1E85041666666466BA754411F85EB91C2E85041C3F528DC6AA75441C3F528DCC3E85041E17A149E69A75441B81E85EBC4E850413D0AD73369A75441333333B3C5E850418FC2F57868A75441713D0AB7C6E85041EC51B8AE67A75441713D0A97C7E850410AD7A35067A7544100000030C8E85041713D0A0766A754417B14AE07CAE85041F6285C2F64A75441E17A140ECCE85041F6285C4F63A754411F85EB81CFE85041333333F35FA7544148E17A94D1E85041000000F05EA754417B14AE97D2E850410AD7A3C05EA75441AE47E17AD4E850418FC2F5C85DA754415C8FC275D6E85041C3F5289C5AA75441C3F528BCD6E85041000000D058A7544114AE4761D7E85041C3F528FC57A7544100000050D9E85041EC51B88E56A754413D0AD773D9E85041333333C354A754413D0AD783DEE850413D0AD7C34DA7544114AE4711DFE85041A4703D4A4CA7544100000070DFE8504148E17AF44AA7544133333373E0E850419A9999D949A75441F6285CEFE2E85041F6285C1F46A75441D7A3702DE4E85041713D0A5745A75441713D0AC7E4E8504152B81EF543A75441CDCCCC7CE3E85041CDCCCC4C42A7544114AE4771E3E85041333333E341A754415C8FC2D5E2E85041EC51B87E41A7544133333393DFE850410AD7A3A03FA754410AD7A350D9E850417B14AE074AA75441CDCCCC1CD4E850410000002051A7544152B81E25D3E85041E17A143E53A754417B14AE77D3E85041B81E85AB54A7544185EB5148D3E85041F6285C5F56A75441E17A14DED2E850416666668657A75441CDCCCC5CD2E850417B14AE0758A754411F85EB41D1E850413D0AD7D359A7544148E17AD4CFE85041333333935BA75441A4703D8ACEE85041E17A14AE5CA75441E17A14EECCE8504152B81EB55EA75441EC51B8BECCE85041E17A144E5FA75441295C8F42CAE85041333333B361A754410AD7A3E0C8E85041666666B662A75441C3F5287CC6E850415C8FC25565A754413D0AD7D3C4E850413D0AD77367A754418FC2F5B8C3E850417B14AE7768A75441B81E854BC2E85041AE47E17A69A75441D7A3702DC0E8504114AE47816BA754410AD7A370BFE85041000000706DA75441EC51B87EBCE85041A4703D7A70A7544100000040BBE85041AE47E10A72A75441E17A140EBAE85041EC51B8DE72A7544100000010B7E850410AD7A3E076A75441295C8F82B6E850417B14AED777A75441295C8F82B4E850416666662678A75441A4703D1AB3E850419A9999197AA75441333333D3B2E8504148E17A347BA7544100000090B3E850415C8FC2B57BA75441000000B0B2E85041AE47E13A7DA75441C3F528BCB2E85041295C8F327EA7544114AE47F1B4E85041C3F5287C7FA7544152B81EF5B5E85041CDCCCC4C7FA7544185EB5118B6E85041713D0AB77FA754415C8FC205B4E850413D0AD73382A754415C8FC2E5B4E85041C3F528FC82A75441E17A14AEB5E850415C8FC26583A7544166666656B7E850415C8FC26583A7544166666636B8E85041F6285C1F83A75441E17A140EBAE85041333333F383A75441A4703DEAB9E85041713D0AF784A754417B14AE77BAE8504185EB515886A75441CDCCCCFCBBE850413333335388A75441EC51B87EBCE8504114AE47B188A754410AD7A3D0BCE85041C3F528CC89A754410AD7A3D0BCE8504148E17A948AA75441295C8F72BCE85041713D0AE78AA75441F6285CAFB9E85041A4703D2A8AA754415C8FC245B9E85041E17A146E89A75441E17A144EB8E8504148E17AD488A75441AE47E14AB7E85041713D0A2789A75441AE47E16AB6E85041EC51B85E88A7544166666676B6E85041C3F5282C87A75441D7A370DDB5E850417B14AE8786A7544166666676B6E8504148E17A8485A7544152B81E15B5E85041000000B084A754417B14AEA7B3E850417B14AEC784A75441CDCCCC8CB2E850410AD7A36085A7544148E17AC4B1E85041295C8F0285A7544166666666B1E850410AD7A38084A7544114AE47A1B1E8504148E17AC483A754417B14AEC7B2E850413D0AD71383A75441C3F528BCB2E850411F85EB9182A754415C8FC225B3E85041AE47E14A82A75441CDCCCC6CB3E85041B81E856B81A75441C3F528DCB1E850413D0AD73382A75441713D0A57B0E85041295C8F6282A75441C3F5283CAFE85041295C8F4283A75441F6285C7FAEE8504152B81EB582A754415C8FC2F5AEE85041B81E856B81A7544148E17A04B0E85041CDCCCC0C81A75441A4703D3AB2E85041B81E85AB7FA754417B14AEE7B1E85041333333E37EA7544148E17AE4B0E8504148E17A847EA7544114AE47E1AFE85041713D0AD77EA75441295C8F12AFE85041A4703DBA7FA754417B14AEF7ABE8504148E17AE482A75441D7A3706DACE85041F6285C1F83A75441D7A3708DABE85041295C8F2284A75441EC51B82EABE85041713D0AF784A75441A4703D8AAAE8504148E17A8485A7544166666666AAE850417B14AE8786A75441295C8F92A9E85041EC51B87E87A75441AE47E19AA8E85041B81E853B88A7544152B81E45A7E850411F85EB6189A75441EC51B85EA4E85041C3F5284C8DA7544185EB5118A4E85041713D0A678EA7544133333373A3E85041E17A145E8FA754413D0AD763A2E85041C3F5287C91A7544114AE47F1A2E85041333333A392A75441B81E859BA1E85041CDCCCCCC94A7544185EB5198A0E85041F6285CFF95A75441000000D09FE850416666664696A75441AE47E10AA0E850410000009097A7544152B81E959FE85041A4703DFA97A75441CDCCCCCC9EE850419A99992998A754417B14AE279EE850415C8FC2E598A75441CDCCCCEC9DE8504152B81EF599A75441C3F5283C9DE85041AE47E16A9AA754417B14AE479DE850418FC2F5C89AA75441EC51B8CE9BE850413D0AD7039BA75441295C8FE29AE850419A9999599CA75441295C8FE29AE850411F85EBE19EA75441E17A143E9AE85041F6285C4FA0A754411F85EB319AE8504100000000A1A754410AD7A3D098E85041295C8FF2A3A75441B81E854B97E850418FC2F598A8A75441AE47E19A96E85041E17A143EA9A75441B81E858B95E85041A4703DBAABA754411F85EB2195E8504148E17A24ACA754417B14AED793E85041E17A144EAEA75441A4703D2A94E85041B81E85DBAEA75441295C8F1294E85041B81E859BB0A7544148E17AB493E850418FC2F528B1A754413D0AD72392E850419A9999B9B2A75441EC51B85E92E85041CDCCCCBCB3A754418FC2F5E891E8504148E17AB4B4A75441E17A140E8FE85041713D0AC7B6A75441B81E859B8FE850410AD7A330B7A7544114AE471190E850419A999919B7A754419A9999598DE85041B81E85EBBAA75441B81E854B89E85041C3F528ACC4A754418FC2F5B886E85041295C8F72CBA75441F6285CDF87E8504185EB51A8CDA754418FC2F5F884E850419A9999E9CFA754418FC2F51884E85041A4703D5AD2A7544152B81E9586E850413D0AD713D2A754411F85EB5187E85041C3F528DCD2A754413D0AD7F386E85041C3F528BCD3A75441C3F5282C8BE85041EC51B89ED4A75441F6285C5F8BE8504166666606D5A75441295C8FA28AE85041333333B3DBA75441AE47E16A8BE85041B81E859BDBA754415C8FC2C58AE85041D7A3706DDFA7544114AE47718DE850411F85EB41E0A75441A4703D8A91E850415C8FC215E1A75441D7A3704D94E85041B81E859BDBA754410000008095E8504148E17A54DBA754410000006096E850418FC2F548DBA75441D7A370ED96E8504148E17A34DCA754410AD7A33096E850419A999989E4A75441666666A696E85041D7A3708DE5A7544152B81E2596E850418FC2F598E5A75441333333A395E850411F85EB51E5A7544152B81E4595E85041E17A141EE7A75441D7A3704D94E8504100000010EAA7544152B81E6594E85041295C8F42EBA75441F6285C0F93E850410AD7A340EEA75441713D0A4792E8504133333393EEA754411F85EBA191E8504166666696EFA75441B81E857B90E85041AE47E16AF0A754413D0AD7838FE85041AE47E16AF0A75441713D0AC78EE85041CDCCCC9CF1A754411F85EBE18FE85041713D0A07F2A754411F85EBE18FE850413D0AD7C3F2A7544148E17A548FE85041AE47E1BAF3A75441EC51B8DE8EE85041D7A370EDF4A75441EC51B8DE8EE85041A4703D8AF6A754413D0AD7E38CE85041000000A0F9A75441D7A3709D8CE8504114AE4701FBA75441E17A14AE8AE85041AE47E1EAFEA75441295C8F628CE850411F85EB1100A85441666666168EE850410000005001A8544148E17A248BE850411F85EB1100A85441AE47E18A8AE8504185EB515800A854417B14AE678AE85041AE47E14A03A8544185EB515889E85041B81E85FB03A854411F85EB3188E85041B81E859B06A85441C3F528BC87E85041A4703DAA07A85441B81E850B87E85041CDCCCC9C0AA854419A99998986E850417B14AEB70BA8544114AE47C185E85041CDCCCC8C10A854415C8FC2D584E850415C8FC26516A854411F85EBB184E8504185EB517818A854418FC2F51884E85041E17A14AE1AA85441AE47E1BA83E850418FC2F5F81FA854411F85EBD183E85041D7A3706D23A8544114AE470184E8504114AE472125A85441EC51B8AE83E850419A9999E925A8544148E17AC486E850411F85EB312AA854418FC2F51884E850410AD7A3C02EA85441C3F5283C84E85041295C8FF22FA85441CDCCCCCC85E850411F85EB2130A85441EC51B84E86E85041C3F5288C30A85441EC51B84E86E8504114AE473131A85441EC51B86E85E850419A9999F931A854410AD7A31085E85041713D0A6733A854418FC2F51884E85041CDCCCCDC33A85441EC51B88E84E8504114AE470138A854419A9999E983E85041F6285C3F39A85441B81E85AB82E8504114AE47A13AA85441C3F5285C83E85041F6285CFF3AA85441295C8F0287E85041713D0A473AA85441D7A3701D89E85041D7A3703D3CA854410000009088E85041C3F5289C3CA854416666662688E8504152B81E353DA8544148E17A8488E85041CDCCCC2C3EA854411F85EB3188E85041295C8F4241A85441295C8F2287E850418FC2F56842A854419A9999898AE8504152B81E8546A854415C8FC2858CE85041713D0A0748A85441C3F528AC8DE850415C8FC23548A85441000000D08DE85041000000C047A8544148E17A3490E85041C3F528CC47A854417B14AE3791E85041666666E648A854411F85EB8192E850413D0AD77349A85441EC51B85E92E850410AD7A37048A85441CDCCCC9C93E8504152B81EA546A85441CDCCCC9C93E850417B14AE1746A85441295C8F7291E85041C3F5282C45A85441CDCCCCFC90E8504114AE471144A854411F85EB6190E85041000000D043A85441B81E85FB8EE85041CDCCCCDC3EA8544185EB51788FE85041D7A3701D3DA85441B81E859B8FE85041295C8F223BA854415C8FC20590E85041B81E852B3AA854415C8FC2258FE85041A4703D5A3AA8544114AE47518EE8504114AE47C139A85441EC51B8DE8EE850410AD7A31039A85441B81E85BB8EE8504185EB518836A854410AD7A3608FE85041333333E335A85441EC51B89E90E85041B81E85AB36A85441C3F5282C91E85041333333E335A8544148E17AD492E85041AE47E11A35A85441EC51B83E93E85041E17A143E35A854416666669693E8504152B81EA534A85441D7A370ED94E850419A99997932A854413D0AD71398E85041B81E859B2AA85441713D0A3798E85041A4703D3A29A85441B81E854B97E850418FC2F5F826A854417B14AE9795E85041EC51B8CE24A8544114AE47E196E85041B81E850B22A85441B81E852B98E85041713D0AF722A85441713D0AF799E8504148E17A8423A85441EC51B8CE9BE850416666664622A8544185EB51789FE85041A4703D5A18A85441B81E855BA7E850413D0AD7B307A8544152B81EA5A9E85041295C8FC2FFA754410AD7A370AAE8504114AE4761FDA75441295C8FE2AEE850411F85EBE1F1A75441A4703D9AAFE8504148E17AF4EFA75441EC51B86EB0E85041295C8FE2EDA754417B14AE07B1E85041295C8F02EDA7544114AE47C1B0E85041A4703D5AEBA75441F6285CFFB1E8504185EB51F8E9A7544148E17AA4B2E85041CDCCCC2CE8A7544185EB5178B3E850410AD7A390E6A75441F6285C9FB4E85041713D0A17E5A754418FC2F508B5E8504152B81E05E3A75441C3F5280CB6E85041E17A14FEE0A7544100000010B7E85041F6285C2FDEA754411F85EB11BAE85041713D0AC7DEA754413D0AD793BAE85041C3F5285CDCA75441666666F6BAE85041666666A6DBA754410E0000009A9999A997E8504100000010EAA7544152B81EE597E85041F6285C5FE9A754410AD7A31097E85041C3F5283CE9A754417B14AE7796E85041EC51B8AEE8A754413333338396E85041B81E85ABE7A754410000004097E85041F6285CBFE6A75441B81E854B97E850413D0AD7D3E5A754415C8FC29598E850410AD7A3B0E5A75441EC51B82E99E8504133333323E5A754418FC2F59899E85041C3F528BCE5A75441A4703D1A9AE8504152B81E15E8A754415C8FC27599E85041000000F0EAA75441D7A370AD98E8504133333313EBA754419A9999A997E8504100000010EAA754410C0000001F85EB6193E85041B81E855B2CA85441CDCCCCBC92E85041E17A146E2EA8544114AE47D191E850411F85EB412FA85441C3F5284C90E8504148E17AB42EA854417B14AE5790E85041B81E853B2DA854417B14AE3791E850417B14AE872BA854417B14AE1792E8504185EB51782AA85441F6285C2F92E850411F85EB7128A85441D7A3706D93E850415C8FC26528A854419A99995994E85041B81E85BB29A85441A4703D2A94E85041D7A3701D2BA854411F85EB6193E85041B81E855B2CA854410D000000EC51B8AEEBE850411F85EBD143A754418FC2F5F8ECE850411F85EBD143A7544166666686EDE8504114AE472143A754410AD7A310EDE85041713D0AB742A75441F6285C3FEDE850415C8FC23542A7544166666666EEE85041C3F5289C41A754419A999989EEE85041A4703DFA41A7544148E17AA4EFE850413D0AD79342A7544148E17AA4EFE850411F85EBF142A754411F85EB51EFE85041713D0A9743A75441F6285CFFEEE85041AE47E14A45A754419A9999C9ECE8504185EB51F844A75441EC51B8AEEBE850411F85EBD143A7544112000000AE47E18AF2E8504114AE478140A75441A4703DDAF1E8504114AE47A13FA7544185EB5138F2E850410AD7A3F03EA7544185EB5118F3E850418FC2F5F83DA75441EC51B83EF4E8504185EB51483DA754419A999959F5E850418FC2F5183DA75441B81E859BF7E85041713D0A273AA7544114AE47F1F8E85041CDCCCC7C3BA7544152B81EE5F8E8504148E17A743CA754418FC2F528F8E850411F85EBE13DA754417B14AE57F8E850413D0AD7133FA75441CDCCCC1CF8E85041295C8F5240A75441B81E85BBF6E850410AD7A3B040A75441F6285CCFF5E850418FC2F59840A7544166666636F5E85041B81E85CB41A754410AD7A3C0F4E85041333333E341A75441E17A148EF3E8504114AE478140A75441AE47E18AF2E8504114AE478140A754410C0000001F85EBE1F7E85041B81E85BB35A75441AE47E15AF9E8504185EB519835A75441AE47E15AF9E85041D7A3703D36A754411F85EBA1F9E85041C3F5286C36A7544114AE47F1F8E850411F85EBE136A75441295C8F92F8E85041F6285C6F37A75441295C8F92F8E8504114AE47F137A7544114AE4731F7E850415C8FC2E537A75441C3F5288CF6E85041EC51B89E37A75441AE47E10AF6E85041B81E859B36A754413D0AD7A3F6E850419A99991936A754411F85EBE1F7E85041B81E85BB35A754410B000000C3F528BCB2E850411F85EBB1BEA75441E17A14EEB3E85041C3F528BCBAA75441CDCCCC4CB4E85041CDCCCCDCB9A7544152B81EF5B5E850417B14AE17BAA7544152B81EF5B5E850410AD7A3B0BAA7544185EB51F8B6E850418FC2F578BBA754419A999979B7E85041666666A6BEA7544133333353B6E85041EC51B82EC1A75441D7A3701DB4E8504114AE47A1C0A7544133333393B4E8504152B81EB5BFA75441C3F528BCB2E850411F85EBB1BEA75441110000000AD7A340A2E850415C8FC2F5FAA75441E17A14EEA1E8504148E17A04FCA75441E17A140EA1E85041C3F528FCFCA75441B81E85BBA0E8504185EB5148FBA75441666666F6A0E85041D7A3702DFAA7544100000090A1E850418FC2F578F8A75441EC51B89EA2E85041A4703DAAF5A7544185EB5138A3E850411F85EB41F2A75441666666B6A2E85041F6285C0FF1A754415C8FC2C5A3E8504166666696EFA754418FC2F5C8A4E85041EC51B87EEFA754419A999979A5E850417B14AEA7EDA75441CDCCCC7CA6E85041333333D3ECA75441333333A3A7E85041333333D3ECA7544166666616A7E8504185EB5118F0A7544133333393A3E85041B81E856BF8A754410AD7A340A2E850415C8FC2F5FAA7544109000000CDCCCCECAFE85041333333D3DAA754418FC2F538AEE850411F85EBE1DBA7544166666606ADE850413D0AD783DBA7544148E17A44AEE85041713D0A97D6A75441B81E856BAFE85041E17A14AED6A7544114AE47E1AFE85041295C8FA2D6A754418FC2F5D8B0E85041CDCCCCECD7A754411F85EB91B0E8504152B81E95D9A75441CDCCCCECAFE85041333333D3DAA754410E000000C3F5280CB6E8504100000010D8A754410AD7A300B6E8504152B81E15D6A75441E17A146EB7E85041CDCCCC8CD3A7544166666656B7E8504166666646D3A75441EC51B81EB8E85041295C8F22D3A7544166666636B8E850418FC2F518D0A75441E17A142EB9E850413D0AD793CEA7544148E17A54BAE85041295C8FF2CEA7544100000060BAE85041EC51B8AECFA75441713D0AE7B8E8504166666686D1A754419A999959B8E8504133333343D2A7544114AE4771B8E850413D0AD7D3D3A75441EC51B83EB7E850410AD7A300D7A75441C3F5280CB6E8504100000010D8A7544114000000A4703D8ABCE8504152B81E15C4A7544100000020BCE850410AD7A300C5A75441D7A370ADBCE85041E17A146EC6A7544148E17AD4BDE8504114AE47D1C4A75441713D0A27BEE85041295C8FC2C3A7544185EB51A8BEE850415C8FC2E5C3A754415C8FC255BEE850418FC2F5C8C5A75441A4703D4ABEE850418FC2F588C7A75441B81E85EBBDE85041C3F5286CC9A754417B14AE17BDE850419A9999D9CAA75441295C8F72BCE8504100000020CBA75441D7A370EDBAE85041C3F5282CCBA7544100000060BAE8504166666616C8A75441F6285C8FBAE850415C8FC285C6A75441C3F5284CBBE8504166666656C6A75441C3F5286CBAE8504133333373C4A754419A999919BAE85041713D0AD7C2A75441F6285C8FBAE85041B81E859BC2A754411F85EBE1BAE850411F85EB11C3A75441A4703D8ABCE8504152B81E15C4A75441
+</a>
+
+<b>
+0106000000010000000103000000060000007D06000085EB51789FE85041A4703D5A18A85441DE67662699E8504140F4287C16A85441516666F69DE850418990C25506A854418072C8DEA0E850419437D9F6FBA754414B8F28DCA0E85041704CC7DFFBA75441DB5F26CCA0E850415E9E1053FBA754410B25D710A1E85041F87C01B3F9A754417E6D208DA1E85041DF55EA3BF8A75441926A88ADA2E85041EF4EC6A7F5A754416FE3E6E4A2E8504112DE9A26F4A75441BA8B6C34A3E85041F256A368F2A75441EA25A3E6A2E850414159C281F1A7544174F2DEBEA2E850419275BA0BF1A75441111CD9B7A3E8504145355DAFEFA75441043B9DD8A4E85041D24B736BEFA75441A7B45B8AA5E85041DDAA94C0EDA75441B9A59575A6E8504167F079E7ECA75441DBD747A1A7E85041D51AD4C1ECA75441A86D68EFA9E8504108396FA2E7A754415A28DB9FADE850419052A4E0D8A75441C95A607DADE850415BD28FB8D8A754411B681BC8ADE850418C53A33FD8A754412CEB4635AEE850419C4BF58AD6A75441BC039D8CB3E850412FE6E15DC6A754416476F5E8B4E85041471780ECC0A7544178CB9B20B4E85041D2B777A1C0A75441CA59317BB4E85041A06E1EA7BFA75441D561BF1BB4E850413A189A49BFA7544105DFB2B3B2E8504133D2BDA0BEA754418789443BB3E850411DBAEEEDBCA7544107C08DEEB3E85041311EE9AEBAA7544105FDE224B4E8504170302986BAA75441B3F15E68B4E850411A5794CCB9A7544152CFA7ECB5E8504159F4D40EBAA754418B2D8CF7B5E8504143AC3EAFBAA7544176AB84F3B6E8504131BEA06CBBA75441BBF853FDB6E85041A06A191DBCA754411435C172B8E85041C7FE6A74BAA754412B7199C4BEE8504193C9E549B3A75441268479A8C4E8504151CA8CB8ACA75441CDCCCC8CC4E850415C8FC2A5ACA754413D0AD733C2E85041D7A370DDABA754415E20B3D2C1E85041A26E4373ABA754413B632917C1E850416EB005CAAAA75441F3769CECC0E85041D09012BAAAA75441E17A14FEBFE85041C3F5287CAAA75441333333E3BEE85041E17A143EA9A754418E8E8519BFE8504103FCB7D7A8A75441DEEB8132BFE8504162335F89A8A75441624B8440BFE85041B7F93C8EA8A7544114AE4741BFE85041CDCCCC8CA8A75441F6285CBFC1E85041295C8F32A9A75441A484BBD1C1E85041AFC409F7A8A75441DC0DE60DC2E850413B0B3127A8A7544100B28A05C2E850416412C124A8A754416CD3FE48C2E8504137E192BFA7A754419D70C0E3C5E8504173063E2EA2A754411DF2E65CC6E850415F89326FA1A75441234CF0D0C9E850416558411B9CA75441CD0A0BE1C9E85041EB80B5049CA75441768DC13DCAE85041BB1880759BA75441E71C7A22CAE8504155581F1C9BA754417150CA01CAE850415F7EE5C39AA7544149035E21CAE85041F59EC0A39AA7544114AE4771CAE85041000000309AA754418B2905C4CAE85041898442DD99A754419F6588FDCAE850419ED4F67A99A75441BEB02726CBE8504139928F6A98A75441531D99B6CBE85041838D467097A7544190D81CDECAE85041FAC9E29F96A754410AD7A3A0CAE850419A99996996A754410BF68EABCAE85041CD4B771D96A75441AF0BBBA5CAE85041F7B24AEA95A75441AE78CFD6CAE850410051517C95A7544132439B70CBE8504143D115B994A754410439AA29CCE85041971E090293A7544198BB9691CCE850410BFE915292A75441713D0AA7CCE8504114AE472192A75441EAEBA1B1CCE85041C7B4771C92A75441D77BBDB3CCE8504136B5E81892A75441C0B619E1CDE85041342A517191A75441075233A8CEE85041DAAB518C90A75441754BBE4FCFE85041CA41C4A48FA75441A4703D6ACFE850415C8FC2758FA754414AFBD578CFE85041A989F96B8FA75441ABE42784CFE85041987B545C8FA75441BDA89DB9D0E85041B42D797D8EA75441E1C77FE9D0E85041C29D705B8EA754411C265B4DD1E85041AD8ADF318EA75441E1FA6E50D1E85041C95ECF2F8EA7544165F0206FD1E85041F21C9B118EA75441AE47E10AD2E8504185EB51488CA75441AE47E16AD4E8504185EB512888A75441F6285CBFD5E850418FC2F54887A75441B8D68FA0D6E850412DC0E02487A754419DECF586D6E850416B2A4FE986A75441E17A145ED6E85041EC51B89E86A754418A7C1877D6E850412947C95386A75441547AE07CD6E85041BD0BA92586A75441AFB2B6EAD6E8504118EEF7C884A75441A591E20DD7E850416C68B9EE83A75441ECB43F28D8E850412E69D64584A75441B576632BD8E8504141FCC94E84A7544152B81E35D8E850411F85EB5184A754414900E257D8E85041334EA5CD84A754414CC7A176D8E85041065D502585A75441EC51B8AED9E85041E17A140E85A75441EB1287BED9E8504199088F1F85A7544196FA22D5D9E85041017C831E85A754413F14BB65DAE850419B0870D885A75441EC51B88EDAE850415C8FC20586A75441B550EA8DDAE8504166B51B0C86A75441E74A0C9EDAE85041312CDA2086A75441B3A07183DAE85041C65AB75E86A754411F85EB71DAE850418FC2F5E886A754411F85EBC1DBE85041A4703D2A86A754415C8FC285DDE85041295C8F6284A75441AE47E10ADDE85041D7A3705D84A754414E7C2600DDE85041B841403D84A754415C5642F6DCE8504106C8633B84A75441876491BDDCE8504162FA807583A754411B16A799DCE850411D0FC20983A7544127B64A8ADCE8504133268BE582A7544133333313DCE85041CDCCCCEC81A75441A4703D7ADBE85041E17A14FE7FA754418E74C516DBE8504126059C867FA75441B000EFFCDAE85041E3927D6A7FA75441ADEEA5CCDAE850415BAB24437FA75441A5032926DAE85041CAE18FC27EA754416E76F9BDD9E85041783F55747EA754410F63DBF5D8E8504165C9C98C7DA754413D0AD793D8E85041333333237DA7544168C2F7AFD8E85041C78C8B0D7DA75441F201C51BD9E85041A29ED79E7CA75441579F21FCD8E85041B8DCA81B7CA75441687C1DDCD8E85041243B1FAD7BA754412F390BE4D8E85041150C9B817BA754413D99A2E1D8E850416EEA534F7BA754418124C96DD8E850419AF965727AA75441D00275AAD9E85041B65B71697BA754417E5A5288DAE85041785DD70F7CA7544194848491DAE850417CD82A167CA75441045E98DFDAE85041213D763A7CA75441AE47E14ADBE85041333333437CA754410AD7A3C0DBE85041A4703D8A7CA7544162F5B8C1DBE85041CDC9349F7CA75441F76415CBDBE85041E93A41A57CA75441EDBA89C6DBE85041ECA079FC7CA75441CDCCCCCCDBE850415C8FC2757DA754414BC4C0BEDBE8504160A0DA917DA754419FB95EBEDBE85041E2D933997DA75441B79DB4A8DBE85041AC4086F57DA75441F03D17CFDBE85041F79AEE327EA75441F6285C1FDCE850410AD7A3907EA754413953EF7FDCE85041C33941BC7FA754418B8238A4DCE85041575871DD7FA7544185EB5178DEE850415C8FC21580A754410AD7A340DFE85041F6285C7F80A75441A20240C1DFE85041534A40BA7FA75441584750EFDFE8504164AC2D697FA7544123497CE5DFE85041B1AFE2437FA754418A1E17B9DFE8504152AC62C37EA75441DD9C6732E0E85041241F41477EA754414DD85F8DE0E85041B21CD9857DA754411C3624ACE0E8504124237A6D7DA75441E17A14AEE0E850419A9999697DA75441713D0A67E0E850410AD7A3F07BA75441AE47E1AADFE850418FC2F5F87AA754417B14AE87DFE850411F85EB017AA75441BAE9708DDFE85041C8EB37E979A754413B34CF89DFE85041699CFADD79A7544155A9F8A7DFE85041F022777779A75441666666B6DFE850419A99993979A75441CB7A60BBDFE8504182A7823579A754414CED39C1DFE85041152CA12179A75441C0B67A8FE0E850414FDD055278A7544127616EBEE0E85041E455EF4378A75441E678247EE1E850411F462DB077A7544116725DA5E1E85041CFAEF1C676A754411ADE23EDE1E8504172FE0B4076A75441EBCDF3A9E1E850410D38F1CC75A75441AE1D77A2E1E85041D8510BC375A75441F418D542E2E85041DACDA5A775A75441CDCCCC9CE2E850416666669675A75441D97DBDCEE2E8504182A922B675A75441A7823E4EE3E850418CB9ADE475A75441D0BD17ACE3E850413963275776A75441295C8FF2E3E85041E17A148E76A754413189A45EE4E850418BE7A99776A754413C415AC1E4E85041F8B2776676A754411F85EB01E5E85041B81E853B76A7544119F35880E5E85041593BA2CB75A754415C7799D6E5E8504177FA156C75A7544105A22521E6E85041DC3535B674A754412B998E3AE6E85041325E6D6D74A75441FCA10222E7E850417E0561B773A7544173BFFFBFE8E85041C9380A5272A7544155837612E9E8504125A88A1472A75441233BC668E9E85041172E8AD171A75441DD4342D5E9E850410BD9D47C71A754415A70D6D4EAE85041CB7B22E270A75441EF6CD3B1EBE85041B6D3FD2D70A75441E67AB611ECE8504194A39D2770A75441A2D6F271ECE850414C6B380A70A7544189C46F50EDE85041140C024E70A75441503DAD9CEDE85041EAF08C0A71A7544148DBFCFDEDE85041F3CB5CE271A754419E6AE27DEEE850411FF9C89072A75441A9B0810CEFE85041A4F3F63672A75441331C4DA1EFE850411A8DDBB471A7544136B86EB7EFE850418C4F232A71A75441C3F528BCEFE850410AD7A3C070A7544132B080CCEFE8504158B911A670A754413B15D3D0EFE8504191CDFA8A70A7544179F79713F0E85041C46B7C3270A75441A4703D1AF0E850417B14AE2770A7544110A7347CF0E85041B2B5ACF76FA75441606D332AF1E85041E612399D6FA754416A5EFE65F2E850411BD0B7F06EA75441770A6442F3E8504131B062556EA75441EA43EE4DF3E85041F19EA8366EA7544185084D9FF3E85041A382BC3E6DA754413D0AD723F3E850411F85EB316CA7544148902E24F3E85041742BA7286CA75441A5F53920F3E85041D687D8206CA754416B3D7F28F3E8504196A0B0B36BA7544100000030F3E8504185EB51E86AA754415C8FC2A5F3E850415C8FC2B569A7544131DA358AF4E850417B6AA0A568A7544141AF47EFF4E8504197936DE867A75441DC3A6CF5F5E85041A5200B6067A75441C5573D8FF6E85041B1DEA63967A7544104C3F279F7E85041D0F8AB1D67A754416743E8A6F8E850417AE302EA64A75441ED2A46EFF8E85041CD11475964A754411B9A0BE3F8E850416149193864A754417F5A9791F8E85041C540FA9863A754412CD81171F8E850416C4505DA63A7544129B7082AF8E850415CCEFEEA64A754414993BFC8F7E850416E03CE4665A75441757C8F47F7E85041B21A641F65A754410AD7A380F6E85041C3F528EC64A754415C8FC245F6E8504148E17AF463A7544190226E52F6E85041AA6268E263A75441F8F71F52F6E8504194F21EE163A7544192BA539FF6E85041C4B0036163A75441C5E705F0F6E85041CFECAD3762A75441333333D3F6E85041713D0AA761A754410AD7A380F6E85041E17A14EE61A75441603EB552F6E85041027643D961A754412418BF4BF6E8504105AC4DDC61A75441555F3E29F6E85041C7C778C661A75441EC51B8FEF5E85041333333B361A75441F742D0B6F5E8504186642EAA61A754417F8E6A34F5E85041A15C51B461A7544110D3B710F5E85041B365DFF561A7544126602A02F5E850413AB58E3362A75441CD9C4FECF4E85041F5E82A0862A7544166666656F4E85041CDCCCC3C61A754418FC2F5A8F4E850419A99993960A7544120476E03F5E8504197A2572E60A7544163D089B5F5E85041D67AB90E60A754414D40BA04F6E850416BCC92D45EA7544183F88249F6E85041DEFAD5A75DA75441A38DB14FF6E850411B22C4AC5DA7544114AE4751F6E850415C8FC2A55DA75441E17CA8FDF6E8504144F981375EA754416A2F838AF7E85041EBC7D7A75EA7544114AE4711F8E8504114AE47915EA75441F331603EF8E85041165D93DC5EA75441940E9C44F8E85041688CDEE25EA75441BA21B350F8E85041F0BD2BFB5EA75441D88F7A97F8E850417C7359715FA7544180430BFBF8E85041C901DCD35EA754415DF8E6CEF9E8504126161D4B5DA75441EAE984FDF9E85041BF8B2FED5CA75441C3F5280CFAE85041A7F441AA5CA75441C3F5280CFAE85041000000505CA75441C3F528ECFAE850415C8FC2C55CA75441E17267E7FAE8504199B8266E5CA75441C122B4D4FAE850411DB276DA5BA754413CF2551EFAE85041998118245BA75441C38341DDF9E85041A43D39EA5AA75441A5CEDCD3F9E85041025E9FD95AA7544114AE47D1F9E85041713D0AD75AA7544190FE10B1F9E85041B076209C5AA7544141387277F9E85041FF354B365AA75441BF4C0B7AF9E85041A080A3A959A7544184049DBAF8E850412CE99CE659A754411647AB92F8E85041D6917EFD59A75441229EF38AF8E850415D48CBF559A75441713D0A87F8E85041713D0AF759A75441F89A9C7EF8E8504133437BE959A75441AC810D41F8E850418E0B0FAC59A75441171A4714F8E8504127FBA0FB59A75441AF718507F8E850413D81AC265AA75441C16FE8EEF7E8504130D84D6B5AA75441877E35D1F7E8504177461DB05AA7544167DDD4B2F7E85041B08C11F75AA75441AE1C6F86F7E850418E1E43235BA75441ADE4547DF7E850413F60E0075BA754417B14AE77F7E850411F85EB115BA7544186D19942F7E85041998B2D575AA754413007142FF7E850418817711C5AA7544185EB5198F6E85041333333B35AA754410C92F919F5E8504103D6B30659A754416EF1FA5BF4E850410FD33E3858A75441DF4D2E58F4E85041490E842D58A7544166666656F4E85041B81E852B58A754412B036E54F4E85041E327EC2258A75441D9A8184FF4E850413259DC1358A75441925B3246F4E850417BB9D5EE57A75441A2B8F945F4E85041476ED9E357A7544133333333F4E850411F85EB9157A754412A54975EF4E8504175CAFA7757A754418A812067F4E85041FB572F6757A75441850707DCF3E85041B6FB70D056A75441586BAC39F3E850417BB0966556A754415AE7C873F3E850416CD6916156A75441CA861A4CF3E85041E05C6C4156A754411248F52AF3E85041BCC8FEA055A7544133333373F2E850410AD7A35055A75441EBA42F74F2E8504140937D4F55A75441D4D59F6EF2E850413BD5AF4D55A7544150EBC68FF2E85041EB2D542F55A754417B14AE47F3E850418FC2F55854A75441042B3D6DF3E8504119D9847E54A7544134A5D6BEF3E8504173D99CA054A75441BE6BFECFF3E85041E858459154A754414A24F47DF4E85041B4501BE753A75441B2D3B2E2F5E8504135D511D753A7544168E752E4F5E85041926DDBD753A75441713D0AE7F5E850417B14AED753A75441226960EBF5E85041B23846DB53A75441534E262FF6E850417A7D1CFC53A7544189D203E5F6E85041770F20F853A75441B83E3421F6E8504177C4E39053A75441E522440DF6E850411EEC038853A75441F7C44E0FF6E85041AA51748753A75441AE47E10AF6E8504152B81E8553A7544148E17A14F9E850410AD7A3B052A75441D5935E17F9E85041367A37B252A754417CA08F27F9E85041EB8BC4AD52A7544165D61C6BF9E85041F57FD0D452A754410CB90A9FF9E8504159BF9BF152A754411021E312FAE85041D93F263953A75441C37E18F3F8E85041EC2C151152A754417DF15E6EF8E850414283C59051A754418AFA9F2FFAE85041757B24AD51A75441AE47E13AFAE85041D7A370AD51A75441AE47E13AFAE85041CF72EED750A75441E13D6E20FAE850413612B4BB50A754414FE86608FAE850411F0FA6B150A75441D7A370ADF9E85041A4703DAA50A75441CDCCCCFCF8E850419A9999F94FA75441AA0562DEF7E850411DBFE4844FA754418F571EB9F7E850418B33A5774FA7544111BAF86EF7E850417BFF78624FA75441AB078EE9F6E85041BA9705D74EA75441559542A3F6E85041BEEA7CD84EA7544185EB5198F6E8504185EB51484FA7544177B09496F6E85041520D2E484FA754415B5D4E96F6E85041CEFF8A554FA75441B3031119F5E85041871C153F4FA75441B35D82EEF4E85041378F7F3A4FA75441A9D92410F4E850417AD63F1B4FA754410F6036EAF3E8504191000C114FA75441D7A370BDF3E85041D7A3700D4FA754415C8FC2A5F3E85041CDCCCC5C4EA75441A53B79E0F3E850412C0A17D34DA75441E094AEEBF3E85041B3576AAD4DA75441ECEEC3E0F3E85041C20803C34CA7544122C203C5F3E8504155A1E0D54BA75441F8C11FB2F3E850417FD894C24BA7544114AE47D1F2E850419A9999994BA7544127EB720AF2E85041B663C4B74AA75441B6C696D7F1E85041FC85647F4AA75441AB6B77C5F1E850415773896F4AA75441C0005C2FF0E8504143BFD4C249A75441372E27E7EFE85041FF0F87AE49A754417E969F63EFE85041DFE0682A49A75441D08E8636EFE850415A4A943F48A754418118464AEFE85041361C542548A754415C8FC245EFE85041E17A140E48A75441EC3F2B68EFE85041A7D9A60248A754415C963E10F0E8504119A9F7B147A754413FFFCBF2F0E850417600418746A75441DFFDB1C6EFE850419DDD75DB45A75441163C878CEFE85041DFF4F7B045A754419A999969EFE85041D7A3709D45A7544123E73D6FEFE85041840DC98B45A754410CF6305CEFE85041AC2D843B45A7544171269CC2EFE85041FBFD985D44A754419371EDC1EFE8504174482C5A44A75441177C5CB8EFE850419F3DF46644A75441654166C1EFE8504154E2855744A7544160A4F2B8EFE85041947A1C2D44A754413CDC6F8AEFE850419E1015B143A75441198D3CFDEFE85041776E35F542A754411FEDD566F0E85041AA9077BA42A75441E17A14EEF0E85041CDCCCC4C42A754414E401E18F1E85041C29BD95742A754415C3C7C25F1E85041480F6A5042A7544179BCBD26F1E8504127FA574E42A75441587E9DA9F1E85041E84F187E42A75441E17A14CEF1E850417B14AE8742A75441295C8FA2F2E8504114AE472143A754419666D2A7F2E85041E6F5113343A754418AA8CF1AF3E850417332EB4E44A75441349042DDF2E85041BB8EC6AC44A75441F6285C7FF2E85041A4703D7A45A75441870F8BB7F3E850412AF0D80148A754417A066BBEF3E850419200880E48A754415FC920E1F3E8504124B28B1E48A75441F0D554F6F3E85041B3C9E92048A754413D52AA7DF4E85041E9BCC46648A7544117CFF7DFF4E850417D891F9448A7544102510E2CF5E85041B81E859B48A754413D0AD7A3F6E85041B81E859B48A7544154131FDBF6E85041F2A37EC848A75441A2B68D02F7E85041C2B331E148A75441747EA535F7E85041BAB8F20C49A754410640D553F7E850418364B32A49A754410AD7A360F7E8504152B81E3549A75441C4502662F7E85041FBC5CF3849A754414D80466BF7E850417660CE4149A754418227C2C4F7E850415D3511134AA75441205B9C9EF7E8504148F4DB5E4AA7544192342873F7E85041F18C8BB24AA754417C2A8886F7E8504151A00F454BA7544122551483F7E85041FC92EA414CA75441287F98ABF7E850417C6C64594CA75441C7DC73B2F7E850410EC8F3334DA754416464419DF9E85041E7689D484DA75441CCD0444DFAE85041132F6EFB4CA75441EC51B85EFAE85041F6285CEF4CA7544133333303FBE850411F85EB414DA75441E17A141EFCE850413D0AD7E34CA7544192DD102AFCE850410EF582E64CA7544179319E42FCE85041365984DD4CA7544100C61B87FCE85041AEFD3FFB4CA7544185EB5188FCE85041B81E85FB4CA75441B1CB2B88FCE85041A814B6FB4CA75441D239BB8FFCE850412649FEFE4CA754413CB1FB41FCE850419A65D9554DA754410AD7A390FBE850419A9999394EA7544131CA2675FBE850417DF6AC3A4EA75441AF4A1A71FBE850415EE1323F4EA7544119C8C06DFAE850413CC4924E4EA75441D7A3708DFAE850413D0AD7A34EA75441BCBE5F9CFBE8504150AC1EAC4EA7544135A4C210FCE85041BA6933A54EA75441D986C027FCE8504122047BBD4EA754412F66F220FCE85041DD418D1F4FA754417E0446B9FBE850413E063D644FA754411BD23873FCE85041A5B9B9924FA75441A579DC98FCE850419C9921984FA75441CEDBAE11FDE850412D85FD554FA754412F16E774FDE85041158353194FA7544108EF049FFDE85041D0D024F94EA75441D07F8BBEFDE850416F078F114FA75441F57B63B4FEE850419A9999194FA75441D7A370EDFEE850419A9999194FA75441716CC7EEFEE850411A88821B4FA75441921D61F7FEE85041F58BCA1B4FA75441E147CA0EFFE85041F7512B494FA7544100000040FFE85041F6285C8F4FA75441572CA3B7FFE85041A3CDDD2350A7544158FBC1EAFFE85041ED889E5550A75441F410F47500E95041FFC5F70651A7544121B5551F00E95041D53E52B951A7544185EB510800E950413333330353A75441C3F528DC00E95041295C8F1254A75441A5E391DC00E9504136A47C1454A754415E1C09E100E95041A182221A54A754417F617CE400E95041CC5AB33954A75441516B8E2901E950419427687E55A754411E79D64F01E95041D3B116FF55A754411732B07001E95041BE3A9E5156A7544185EA663902E95041F94106D556A754413974E3ED02E95041D189AF7856A754411C6ECAF002E950410024397856A754416666660603E95041B81E856B56A754416FA0A85E03E95041D30FB76656A754415C8FC2E503E95041C5952F5156A754415C8FC2E503E95041EC51B8AE55A75441A4703DFA02E95041CDCCCC0C56A7544194750BFA02E9504119049E0156A754414BD03CF402E950412FDF3A0456A754414FAA21F802E95041E8B3079455A75441236F74F002E9504149A153DC53A75441C84460E902E95041D1D12F7553A754416666662602E95041B81E85EB52A75441713D0AD702E95041CDCCCCFC50A7544148E17A4404E9504114AE471150A75441E2AA465704E95041FA64F31250A75441A5F5B75A04E95041912B121050A75441B386AA9F04E95041B7AB621950A754417B14AE4705E9504185EB512850A754419B86637F05E950417B19344650A754410167AF2E06E95041E1178D8150A754411AF6603607E950417A27552951A754416F6B2C7B07E95041AB9A970652A75441EC51B8FE07E9504185EB51E851A754419A99991909E950411F85EB8152A754414812A84209E95041F28460D752A75441B2A21BBE09E950410D4CC29053A754417D191CAB0CE95041194FBF9350A754410271C9560DE95041095738D04FA754411CA36EA30DE95041ABF41D964FA75441058C10F60DE95041F4E1B7414FA75441DA00F2DB0DE950417EF55B434FA75441B81E851B0DE95041C3F5286C4FA75441F729B0170DE95041420C7F644FA75441F2E6F8070DE95041289DA7684FA754412C2C99DF0CE95041CCB0D3E74EA754412FAA00390DE950413F131D964DA75441A4703D4A0DE950411F85EB414DA75441AD1D5A270DE95041DEFBA02C4DA75441E656CB6C0CE9504103C12CC54CA75441E17A14CE0AE950418FC2F5884DA754411F85EBE109E95041EC51B81E4DA7544185EB517809E95041E17A146E4CA754415D3E5BD908E95041E3E1E4294CA7544129BEAF8208E95041AEAAC9084CA75441A9F7BC7B08E95041F9917FFC4BA75441333333F307E95041000000304BA75441000000D007E95041666666964AA75441402B79DF07E95041467DA2624AA754416CB70DF007E95041077661A549A75441C1E5D7AA07E950419488749B49A754417AB69AA007E95041E721AC9C49A75441E3214B9D07E950413013839949A7544114AE477107E950413333339349A75441DACD8D1D07E95041BE09941F49A75441C8AEE60E07E950413068971149A7544148E17A2405E9504152B81E3549A7544117AD190005E95041E8D0AF0449A754412E635AB104E95041B35C5BBC48A75441CE47420C04E950415F47779448A754410680847003E95041411EEEC647A75441F6285CBF02E95041B81E85BB47A7544152B81E3503E950411F85EB5147A75441BC6C762503E95041845BAC0B47A754419DDCD20B03E95041110874E446A75441C3F5289C02E95041000000D046A75441A4703D3A01E950411F85EB9145A75441EEBB7B0801E950418ECA5E9D45A754417C4111BE00E95041B37F5AC645A7544102C74DB100E9504103B96EB145A7544114AE47A100E9504152B81EB545A75441F6285C1F00E9504148E17A0445A754417584823100E95041396FE8CA44A75441FA1D995500E950413030683144A75441E08AE20300E95041DB54D5D842A754412B93D2ECFFE85041506D119842A754416C1BD3E3FFE85041C7ED673F42A754419A9999A9FFE85041713D0AF740A7544148E17AE4FFE85041295C8F5240A75441FB3882D3FFE850419B980B3940A75441DB4DB4CEFFE85041A8C0B03C40A75441E093C63CFFE85041D2E06E563FA7544185EB5128FFE850417B14AE373FA754417543C828FFE85041ADCFE2363FA75441579BDC27FFE850415DF96E353FA754418780C331FFE85041DA9975273FA75441F6285C1F00E95041F6285C8F3DA754410AD7A3F0FFE8504152B81E253DA75441698039F5FFE85041A5BF46003DA754416C4C1D0700E95041BE9BF4EE3BA7544197C3346C00E9504167AEDD6F3BA754417A0D8F4D01E9504199665B623BA75441C6217F9701E950415CE182673BA75441F6285CDF01E9504152B81E653BA754411A498FF001E950416448B86D3BA7544191D9B6FB01E950413A587F6E3BA75441C648492602E950413A4895883BA754418FC2F55803E950411F85EB213CA75441AE47E1AA03E9504152B81E253DA75441CDCCCC2C04E95041F6285CAF3CA7544182A76B8104E95041C8F059B73CA7544102D7F48304E9504182648DB63CA754410A6BA39304E95041A55F12B93CA75441B81E851B06E95041E17A14DE3CA754418D7EDEA706E95041B23224393EA7544104C273C906E95041C249E0683EA754413CAC6AE906E95041192F48B93EA75441D4B1C90A07E950419D1743D43EA754415EC8688E07E950411E1951EB3EA7544151AF46AA07E95041F4303AEC3EA75441F60320AC07E95041409385F03EA75441CDCCCCAC07E950410AD7A3F03EA754414F720F0908E95041CB0DDD9D3FA75441036D161F08E9504147C965993FA754419A99991909E950417B14AE373FA75441E69A411809E95041F9D299403FA75441C045612B09E9504137E7F9383FA7544153B29C2509E950415BAC4DD73FA75441D331D26709E95041343D19FB3FA75441F6285C6F0AE950419A99996940A75441361315680AE9504198BBA2CA40A754412EF923750AE95041602C7B0741A754410AD7A3200BE950411F85EB3141A754415A7ABB1A0BE95041FCE56E5441A75441B5C3DF220BE9504188071C7141A75441D378F5460BE95041ABBFAFB841A754411F9573BD0BE9504114AE474142A754417063F0BE0BE9504114AE474142A75441C78E1BD90BE950417B36652E42A75441D7BCFD590CE9504114AE474142A754411F85EB810CE9504114AE474142A75441D68B1F870CE950419C99E44742A75441B6A760A50CE950417073534C42A75441E243B40C0DE95041789E43E842A75441B4C19DA20DE95041056CCA0743A754412394291D0EE95041E78D911443A75441AC79E97B0EE950414E91092B43A75441949E13960EE95041E193FD3A43A75441333333C30EE9504148E17A4443A75441469BF3CE0EE950419921AB5D43A754418AA52FE20EE950410E6E656943A75441D7D5092F0FE950413B655C0444A7544159DC20830FE9504102FF6BBC44A75441724EBA8A0FE9504140C063C744A75441F6285C8F10E9504114AE47C145A75441C15BB28E10E95041A5EF2CCB45A754417E9F9AA310E9504153AA27DD45A75441BC2E939310E950414C58170A47A754412B0900B610E95041BD48683A47A754411B88062B11E95041C52B306747A7544157C5444511E95041D22B526C47A75441220327A212E95041228B2BF647A75441295C8F5213E950417B14AEC747A75441C850577B15E9504124DD125346A75441FFC922B715E95041871B4DD345A75441221D8FBE15E9504115F4E6BB45A754413C34660A16E95041E3563B8E44A754414AB7827816E95041527A2A6743A754418389336916E95041F2CEE84243A75441CDCCCC2C16E95041E17A14FE42A75441325B2E7916E95041E6844FC742A754417C3C1DD816E950411DA5FB7142A75441B4A736DA16E9504101CC336B42A75441CEFF983817E9504129B61C2741A7544189AA543517E950414523BB0441A75441CDCCCC0C17E9504114AE478140A75441867BC13D17E950417BD2B41140A75441CF40745917E95041F7E849C83FA754416535FC6C16E95041BA04D2183FA75441DD152A6D16E950415EF9C3173FA754417B14AE6716E950413D0AD7133FA75441B62F5D8316E95041DD9517953EA754415D66FD9E16E95041C4797AF23DA75441E2A15ACF16E950419FB78AF33CA7544145262C9F16E950417442FC7B3CA754419954356316E950411AD7EB343CA754416EB238A515E95041994E27683BA75441A3143C5C15E95041390A31FD3AA75441546238A915E950412A2A73163AA75441F2081F6115E9504183BA8F8B39A754410428BC3915E95041B33C175139A754412AD0FD2E15E95041005EFE2A39A75441B1FD5D1115E95041AF38EDF138A754410A6CE7F014E95041B9F89D2039A75441787A3D0D15E950415D00FAE938A754416666660615E95041CDCCCCDC38A754418FC2F55815E950413D0AD74338A7544184AB59F113E95041FE133C3C37A75441A787538513E9504131F5ED0B37A75441BA39DD8C13E95041D83E93F236A7544177BFEF4C13E9504101D5B6C336A7544163EAF48F12E95041C2F4E06436A7544103933C9C12E95041F6E2F85636A75441CD880A9D12E9504105FEC64236A754415C8FC29512E95041D7A3703D36A75441FB969E0F12E950415B74021E36A754412074EEAA11E95041C1F6B33E36A75441AE47E17A11E9504148E17A5436A7544143E1C87611E95041C591A24F36A75441A553516C11E95041C09E085336A75441B2A43F4011E9504176B71D0F36A75441E17A14BE10E9504152B81E7535A75441869B0BB710E950417AD3567035A75441449AA19810E9504108550D6D35A75441A38C5D7B0FE9504107EBBFA734A75441AD269C8F0FE95041A1CE8EA734A7544148E17A740FE9504152B81E9534A75441A1C97F690FE95041C8CA6E7D34A754418D5709670FE95041CE76DE7B34A75441875C5E640FE95041528B5D7234A75441B9FF44D60EE950416360D63F33A75441914B93800EE95041C0EEF7B032A754410D8A40E20DE95041766A66A932A7544195A5EDB30DE95041E798FFA932A75441603F01AF0CE950418B68B69A32A7544152B81EA50CE95041A4703D9A32A7544196D7DB8B0CE95041DB54BB8732A75441970C55280CE95041285F525032A7544163F1B83A0BE950412F7C0C1932A75441BEA55A010BE95041027533D231A754414E639CBB0AE950415646022331A75441333333930AE95041A4703DDA30A75441CDCCCCFC0AE950419A99992930A75441FC60A54F0AE950413E5BF0E12FA75441B3B4309009E95041E0360BB52FA754415B53ED7E09E9504145B234C22FA75441B81E85DB07E950410000005031A754412C2249D407E950416A94B44F31A75441623CD6CD07E95041004D295A31A754410CBE7EEC06E95041D1A73A4831A75441B81AD59D06E95041B054C2E731A75441D7A3709D06E950419A9999E931A754411B02D89C06E95041DB9DC3E931A7544125F0BF8C06E95041023B670A32A754412AFB556705E950413275785C32A754413A17D04D05E95041543821AA32A75441BD0EC71C04E950419CABA0D832A754413AD25B1404E950417C17CDD232A754419A99990904E9504152B81ED532A7544132BFFDFE03E95041246803C432A754417475AEE503E95041FC457FB232A754412C76F94B03E95041F2C2A6DA31A754410FF48FB802E9504145A83DCF31A75441176E2F5002E95041160699D331A754410C8340B501E95041717F3BA531A754416666664601E95041AE47E18A31A75441D53BA04401E950414326878331A754419276824301E9504138A1318331A75441E44A3D1401E95041FE43DB0131A75441BA54BD1801E95041CD17A8CD30A75441F6285CFF00E9504148E17A6430A754415531782501E9504181A2FE3930A754416089EC2601E9504122991F2930A75441CDDCEE1502E95041F9B7320D2FA754414572112C02E9504102683E152FA754411F85EB3102E95041EC51B80E2FA75441F1FB390805E95041622F1B1430A75441848FD6A905E95041F4EC074430A7544170B498F705E950411C5D947530A754414A911E1606E950411C0DCA8430A7544176AB427606E95041EBA3F89B30A754413C9786B206E9504116765D8E30A75441C2D44F0007E95041AB9DA07230A75441A003C40C07E95041590B626830A7544152B81E9507E95041C3F5289C2FA754411325C99707E95041FB196D9B2FA754416895F69B07E95041DC7FA8912FA7544138DDF0D508E950416C31AE3D2FA75441AC804CFC08E950410E5C4E1D2FA75441A37E2E1909E95041936A25102FA754419BFAE9AC09E9504188667DE42EA754412A94B6400AE950417ADC86692EA75441EC51B89E0AE95041B81E850B2EA7544177C72BE70AE95041554168F92DA7544172CD13920BE9504107E1FAAB2DA75441A5FC01B80BE950410D8A094E2DA754414C3A292D0CE95041F0E93D202CA754411DB60A330CE950418BA010262CA75441B81E853B0CE950410AD7A3102CA7544156AFE6830CE95041358321762CA75441575D64BC0CE95041E84E11AE2CA754411F4FF4110DE95041D21110B32CA7544152B81E650EE950419A9999A92CA754415C8FC2350EE95041EC51B88E2BA75441E3466E420EE95041A9E8BF812BA75441C4705C410EE950417F22A67C2BA7544179A9630010E9504190AE42B729A75441799BE4A30FE95041EDDDE89D29A75441B43E231B0EE950419BB7C16429A75441E0931ADE0EE95041A1B9B36F29A754416FE2B9890FE9504121AC2BA928A75441D169EB4C11E95041898533A928A754416FD40A5112E95041730D35BD28A75441F0FF9FC112E95041B4554BB828A754414199EB3813E95041B2EFCEBE28A754419DE719BC13E95041A6B970D528A754414BE893C713E950418BD4AAD528A75441094F681C15E9504103F57BC228A75441158D078B15E95041567F98DE28A754418AAE26F115E950411A889DE028A7544195CB100B16E95041C895BADB28A75441C30DA33016E95041ACF4DEE128A754413D0AD77316E95041333333E328A7544129F0F98716E950416E2226F028A754410F0E348E16E95041ADBC2AF128A754415D8CE2C116E950417D52631529A75441B664C0C018E950412B8CE85D2AA75441880037F518E95041B27C407D2AA754410AA0071519E950411F80EC892AA754418A9386B919E95041D57E41762AA75441FE40DCC719E950416E6447702AA7544106233C101AE9504198D60D5A2AA754410DB0DF521AE9504127F32D282AA75441D7A3705D1AE950415C8FC2152AA7544155D065A01AE950418F77B21B2AA754416551F7C41AE950412FA2EF172AA754414F1564CE1AE95041AD7DC61F2AA75441F6285CDF1AE9504114AE47212AA75441E92F502A1BE9504107B53B6C2AA754416971A3C01BE9504180CA44E92AA75441499108D21BE950411973B8EA2AA75441236B98F61BE950410EA09CF92AA7544185EB51581CE95041D7A3700D2BA75441600403691CE95041B2BC211E2BA754413714C06A1CE95041A571A01E2BA754414E32B9611DE95041494D96EB2BA75441295C8FA21DE9504185EB51682AA7544146EE6DAB1DE95041229898632AA75441B6F854AF1DE950410A121D4B2AA75441E9FBE15E1EE95041A7F33A012AA75441FE5188851FE95041B59C72432AA754412AB252F320E95041671B2EBF2AA7544117F2AB3521E950419AE943A72BA75441CB3FE38321E9504193B85AF02BA7544121369E0222E95041B8284EFD2BA75441F9F3715823E95041B72B0F442CA75441B4B7955A23E950410B3477482CA75441F6285C6F23E95041B81E854B2CA754418ED5FD9123E95041D71891BA2CA754418E533CB723E9504166D743072DA75441A6D0DC8424E95041172700F32CA754411F85EBA124E95041FE80B4772CA754411F85EBA124E9504185EB51282CA75441AAD758D124E950411F3C8BE82BA754410395147725E950411B2FB8F82AA754414895B63F26E950413BFE09FB29A75441AA747F2A27E95041B59935A229A75441A22BB0D527E950412BD9730529A754419EC1C2BC27E95041044EF57D28A75441000000A027E95041F6285C0F28A75441000000A027E95041889EA0E127A75441C44E069227E95041EADDA99527A754417E18469F27E9504147A7F27E26A754418D95F98727E95041F0AAC3E425A75441D983628826E95041B88B742B26A7544130DD9E9D25E95041D221EA5E26A7544164C9C8F924E95041080458AA26A7544148E17AF424E95041D7A370AD26A754417DCA03F424E950410C0400AD26A7544106056FF224E95041C15EBAAD26A75441528DE39024E950411858414F26A7544148E17A1424E950419A9999D925A75441713D0AA722E95041A4703DAA25A75441E46EF1A622E9504101C2ECA725A75441A3BE598F22E950411CA927A525A75441A0D59A9C22E950410282ECB024A754414A963C9922E9504144C9736024A75441DD01627E22E9504165D4886223A7544187255C2A22E95041333333F322A75441B16B41B421E95041333333F322A754410AEC586E21E95041BFEA8C3E24A754414E888EB820E95041DC17EB4D25A754410AA5DAA820E9504134A4E45D25A7544114AE477120E95041666666B625A75441C7DA2BE31FE95041D47BD7E325A75441A9DE1A311FE9504106A5622626A75441863710281FE95041102895CC26A7544104DBF38A1EE95041BD659AEC26A75441FC311F741EE950417C0CA3DB26A75441AE47E16A1EE95041CDCCCCDC26A75441A18E24BA1DE95041B11A6E5126A7544124EF5C881DE950410CEC6F2C26A754418B1130FA1CE950416899625325A75441DC57B1BF1CE9504104F3827A24A754411FBA01D21CE95041B465EDDD23A75441CE0D78F31DE9504103D48EB921A75441912B30E71DE95041A0165B9721A75441257461871DE95041B1C6165521A75441E836594F1DE95041223A619B21A75441A73892DE1CE9504190E99E4622A754413DC7F4961CE95041B8FFCAD622A75441BB46CB8D1BE95041209CEE7623A75441C6F752831BE950415B117E7323A75441CDCCCC6C1BE950410AD7A38023A75441A95F20EE1AE9504178F1145023A754411CC90CE31AE95041E7E4454E23A754414CC555A61AE95041FD66554923A75441A90692C319E95041565D655B23A754415C318AD918E950417C66647323A754418380C08218E950411C17447523A754416AA1617E18E950411E4D4C7523A7544171F931C017E950412364728423A754415ADECD5E17E950413034729823A754411D8B93CF16E95041D741ED0723A75441666666E615E95041333333F322A75441A242D2DE15E95041A0533CF122A75441ED3A84D715E950419CCEE5F022A75441E31C541B15E950413AC7A3C222A754412C395D5015E950419CCC8FCC22A75441DB9D0B4915E95041D8206ACA22A754418FC2F57814E9504148E17A9422A75441B81E850B13E9504114AE477122A75441CB99B20013E95041F0B6F26022A75441291649ED12E95041CD17055422A75441B3993FB612E95041A659C51822A754413E81EEB911E9504144D4B8D321A75441295C8F9211E95041C3F528CC21A754418AFB3D9910E9504167C5521B21A75441217C248210E950416D646C1121A754416C395C7E10E9504102AA410821A75441B6733F3810E9504175EC86D620A7544199CD691610E950411FECBDCE20A75441A2A04EF00EE9504192CFA90E21A754411295C6670EE9504144033A2021A75441C3F528CC0DE95041EC51B83E21A75441168BE9A10DE950413AFAAD3921A75441B7233D8D0DE95041B1C9563C21A754417ED3C9DB0CE950417CC3D42221A754414A401BA30CE9504116E6982121A754411F85EB810CE950415C8FC28521A754419CF72C720CE95041A5141C8521A754410621AC700CE9504178115E8821A75441F435885C0CE950412B39378421A75441B81E855B0BE950419A99997921A75441DE7DDEAA0BE95041DFD393F720A7544192FD5ADC0BE95041C4BCA08520A75441522A7EC00BE95041EF2B43D61FA7544134A2EBB30BE95041FA4A95BF1FA754413D0AD7430BE95041CDCCCC2C1FA7544148E17A140BE95041AE47E1EA1CA754410673FCA007E95041C3961CA91EA75441C824029D07E9504105F2B6AB1EA7544111FEA29807E95041D92A54AD1EA754419AA242F506E9504104A7D8FF1EA75441E4EE584606E950410F5DF15E1FA754418815494606E95041F873E7A71FA75441D603C14606E950410BBB62E21FA75441C49408CF05E950413EF6A7F91FA754417683891A05E950410A77220D20A75441792C2B5A04E950412DA6772C20A754412E15E35404E950414012197020A7544133ED2C4204E950415A50944621A75441290C873D04E95041B6340F7A21A7544185EB513804E9504114AE477122A75441885F2A0404E95041692BCFE522A75441594392E403E95041BF71845023A7544151847BB503E95041198C9C9523A75441F6285C9F03E95041713D0AC723A754417E6A1D5903E95041D685B6F223A75441FC4D0D3E02E95041D70409B224A75441864B56C201E95041E0F9C36B25A75441EEC2E23C01E950411A05B71327A7544101EEF13201E95041085C032227A75441EC51B82E01E95041F6285C2F27A7544141C2EB1B01E950412332214327A75441876F40FF00E95041F1A75D6C27A754412440CF5000E950419A34DB3F28A75441BAE6612000E95041D0C4C70B29A7544171789EBEFFE85041F914BC4629A754412D2269E1FEE850415BABE25E2AA754412402F19CFEE850412148A1222BA75441EC51B88EFEE85041000000602BA754417FDFF185FEE850417FD45F642BA75441286A6580FEE85041FEBB3C742BA7544193B85AC0FDE8504192CD15DA2BA7544177826EF7FCE850410661A87D2BA75441666666E6FCE85041713D0A772BA75441A7989B66FCE850416CFD898F2BA754418A4DB5F3FBE850417C2217BB2BA754413BAF8A18FBE85041DB36A9AC2CA754410CD9E201FBE850413FF999C62CA754410450A888F8E85041EC9F18C72FA754419540CE6BF8E8504180F708F02FA7544188B648D7F7E85041741D32EB30A75441F95384C5F5E85041465CAF912EA75441C3F528CCF4E85041E17A147E2DA75441C692B678F5E85041C62AD0762CA754416B2DCC97F5E85041A766853F2CA75441515D2DC4F5E85041B7E916082CA75441861DD239F7E850417D48AB122AA754410F5E5CA3F7E850412B27487129A75441EFAA32C0F7E850416161437C28A75441A4703DCAF7E8504185EB51C827A75441D1D72AD7F7E85041B5A019B927A754419BDB8CD8F7E85041B6B059AD27A754412559AA5AF8E85041CCEC370C27A75441C6578F5FF8E85041C184780127A75441512F5D15F9E850419FF36C5325A754410081F358F9E85041B68E3E8324A75441A4703D8AF9E850416666661623A754416703358CF9E85041BDD9A81123A754416CC95190F9E8504145FC9CED22A75441E4035019FAE85041E1FFF7B521A75441CE740C64FAE85041B3ED349620A75441FDDE24E7FAE850410AA3D56F1FA75441524B10A5FBE85041106D70F11DA754417FDC711BFCE850418BA103EE1CA754415C8FC235FCE85041000000B01CA75441B841BB93FDE850416886938C1AA7544145026BA4FDE85041EC6448E319A75441EC51B8AEFDE85041F6285C5F19A75441289397B2FDE8504133B87A5319A75441E6FDC7B5FDE8504178BF1F3319A75441A0DD3BCCFDE85041B0AECD0419A754413D04AA78FEE850413D82BDF316A754414C2EAD7CFEE850412A4F47E216A754410FBC4D9DFEE85041E3F8518316A75441D7A370EDFEE85041D7A3708D15A7544123FEE109FFE85041FF0DAF1B14A754414A19FDF7FEE8504155FF3D7213A754419F39FCDDFEE85041BA3A2B1C13A7544193878D67FEE850412418FD5714A754412A8C8C58FBE8504163EEBD6B1DA75441305B9B04F6E8504162A83D7529A754413BE54F77F2E85041D86FBB602FA75441D22ECF73F0E8504134FA8B0533A7544175F0EFBFF0E85041D3F08AD432A754419841E2DAF0E85041B09F98B932A754415E87E4C2F1E8504105D168B431A7544169FBD103F2E8504185EAEC4031A75441713D0A67F2E8504148E17A6430A75441295C8F82F3E8504148E17A842FA75441F6285C8FF7E85041AE47E18A31A75441FA86651BF7E85041BAE4E82632A75441D9239290F6E85041A4EDAB0133A75441091847C5F5E85041DECA3BF333A75441713D0A07F5E85041333333F334A754410C27BED8F2E850411B3B584937A7544143B02431F2E8504151CF2D1738A7544101CA4021F1E85041EA3E325C39A75441E17A149EEDE850417B14AE573EA75441674C3C93EDE85041C8AFB05D3EA754415009DF8CEDE85041E12BF6663EA754412496F51EEDE850419BBC73AD3EA7544181B63648ECE8504195647EB93FA7544160CC05C2ECE85041747A4D3340A75441A7651A33EDE85041BD184A9D40A75441F7C5EB35EDE85041FED330EC40A754410744692AEDE850413382D18141A754411A2450B7ECE85041B3BEF93942A754414BD5BB99ECE85041C6DB195D42A75441EC51B88EECE850410AD7A37042A7544188C9A68AECE850417AD9026F42A75441930C0C8AECE85041DA99BA6F42A75441F699D67FECE850417D92AE6A42A75441DF367A47EBE8504144D89FED41A754416A952A05EBE850415F6F8F2B42A75441A4DA1300EBE8504121F8426142A754410355F00CEBE85041A36CA3C743A75441EE4FD210EBE8504154349CFE43A7544124308E19EBE85041E5F7CFBE44A75441493D051FEBE85041372531C544A75441333333A3EBE850413D0AD73345A754418BA7C77CEBE850411325750F46A754412A6DB777EBE850416DA7B33D46A75441809E5974EBE85041FCF0A43F46A754413D0AD773EBE85041295C8F4246A754416E5AC140EBE850419C7C6A5D46A75441AE991F9DEAE850410E11D6BB46A75441194CCF86E9E850410E6057DF46A754411433D257E9E850416678C2D646A7544166666626E9E85041B81E85DB46A754411825DD06E9E85041253565EB46A754410AEDA6C7E8E850413D90481947A754413E0F4791E8E850417F5F2FE646A754417B14AE17E8E8504152B81E9546A75441325AAE0CE8E850411B4C6BA146A754415FB2F545E7E85041BB798D9247A75441706E5DCAE6E85041CEA0297648A754416F57C36EE6E8504194232BFA48A754411D7B2FA1E5E850414483455E4AA754412946EF4DE5E85041D52F66124BA75441A30CB8A1E5E85041F1F3F3B34BA75441713D0AA7E5E85041CDCCCCBC4BA75441A70388A7E5E85041361029BF4BA7544186FA06B2E5E85041041966D34BA75441A24DA7DFE5E850410AF082AF4CA75441A5CE101AE6E85041555689AA4CA75441218794B5E7E85041564133CF4BA75441AA0B3C37E8E85041B4ED2E974BA75441CEF159A9E8E85041589066964BA75441803DB912E9E85041E95917B24BA75441AE47E11AE9E8504114AE47B14BA75441DB14281BE9E8504147AB4EB44BA754412D58EE36E9E8504167299BBB4BA75441C0299C2BE9E8504101E367684CA75441295C8F32E9E8504148E17AB44CA75441E8159F24E9E8504173AD13D34CA7544173512724E9E85041DAC237DA4CA7544143E924BEE8E85041B1B7BFF64DA7544106127E56E8E85041DF198E974EA7544166666646E8E85041AE47E1BA4EA7544187D29E3EE8E85041032597BC4EA75441A141353DE8E85041CC14C8BE4EA7544173CF3D04E8E8504168ED6CC94EA754417B14AE37E7E85041666666F64EA75441A4703DAAE6E8504114AE47514EA75441D7A370EDE5E85041713D0AE74DA7544129871B0FE4E85041126A61044FA75441253BB6B9E3E85041CD2CFA474FA75441A2E60425E3E85041C01BD16B4FA754413D0AD7E3E2E850413D0AD7834FA7544141750766E2E85041A323673A4FA7544138150451E2E850415EFE5C344FA7544125879A48E2E85041C1BC6E384FA75441F6285C2FE1E85041A4703DCA4FA75441FF9607CFDFE85041A625821C51A7544128B6C4F8DEE850418C94F51252A75441C1FD84B3DEE850414B8FC19652A754413D0AD783DEE85041AE47E11A53A75441C201B7E3DDE85041D89374E053A75441A5669376DDE85041FF4E457054A754413AF91D85DCE85041B8B520A355A7544138838B9EDBE85041E926A99056A75441713D0A77DAE850418FC2F5D857A75441CCC9952FDAE8504122DA2B0D58A75441F129C251D9E85041FDFF4FBD58A75441CD29BDD2D8E850418E2D604259A7544129521EF8D7E850412F3A804A5AA75441AC9DF47CD7E850413314D8FD5AA754417C3F5CA7D6E850410B13E1F55BA754411A2BDAC7D5E850413BD2AC105DA754413A7C0CBED4E85041046B450F5EA75441731CF0DED3E85041993C8E105FA754414D6C3D03D3E85041DCF2C4E65FA75441713D0AE7D1E850419A99991961A754415A4AABB5D1E8504131DBD25461A754411148D52BD1E85041ADAEB90C62A754419543BAE2D0E85041FFA8DC5162A75441000000C0D0E85041B81E857B62A7544189BF6A1BD0E85041021B5A0E63A7544122FB010BD0E850410FD0DE1D63A754412220BA07CFE85041BE52F30A64A75441A85852F0CDE850417236D9FD64A75441890BFED5CCE850419472521566A75441994DBCB4CBE85041C86E930F67A75441C686F074CAE850414068C12268A75441329BCB59CAE850414F2AE23068A75441F3DC26B2C7E8504169F8FEA469A75441A0807799C6E85041CDF952466AA754416FCE6D63C5E8504155C5AD436BA75441BCD48046C4E85041AFFF5F396CA75441F9A77BDDC3E8504145C241B16CA7544148E17A04C2E85041CDCCCC0C6FA75441E6020727C1E850417A3327F56FA754411D2402C4C0E85041CC92957670A7544125C4FC8CBFE85041ADEE142972A754415C332068BFE85041E456985E72A75441064E3471BEE8504160C232BF73A75441D9A0E795BDE85041CDFC0F1275A7544136ED7B3DBDE85041CCDD578375A7544163FC2FB5BBE85041A795538E77A7544173FC0868BBE8504136E701FA77A75441A9510905BBE850414EBC287978A75441AB577A19BAE85041C49230B379A75441A3815073B9E85041333AB9AE7AA75441E9668A53B9E8504193F710BB7AA7544114AE4751B9E85041E17A14BE7AA75441A0FFC135B9E85041E7B5A2C67AA75441C8565D1CB8E8504128C4F1337BA75441236998A6B7E85041E7B98FCB7BA75441621B0F9AB7E850415D3A3AB57BA7544114AE4791B7E850411F85EBC17BA7544133333333B7E850417B14AE577BA754411132C48FB7E8504195FF54E87AA754419F98109FB7E850412CEE20C77AA754417BAE5FE8B7E85041278019667AA7544166666636B8E8504114AE477178A75441421D9836B8E8504140502E7178A7544171994D37B8E850419FE6836C78A754411DEBE04CB9E850412924F8CB77A75441F40A3699BAE8504178A5192277A7544190108A0FBBE850415D9DEB6A76A75441DFF2DAD4BBE85041E4086C6E75A7544114AE47F1BBE850413D0AD74375A754416A275417BCE85041460C31D674A7544155FFBB48BCE850416835AA3274A754410993C27BBCE85041AA09C5B473A754419A9999B9BCE85041295C8F0273A754419BF5EB17BFE85041C6DDFA9970A75441A2A1F969BFE850416CD15F3570A75441D62A0F72BFE85041C6A43FE66EA75441C6562B75BFE85041CC2AD6D96EA754410AD7A370BFE85041AE47E18A6EA75441E7880B81BFE85041558B7B5F6EA75441301ACBFDBEE85041A5F53BD86EA7544127EBA078BDE850415B4B9AFC70A754416DA0EB4ABAE850418B82A63375A754417042A15AB6E85041054EF83E7AA7544170C01B4DB3E85041FEFAD7817EA75441907E9FA9B3E8504198C40EBD7EA75441E2A436B0B3E8504184C7E6C07EA7544172F1E010B5E850419D4EAE707FA75441BA217AF8B5E8504134A3DD487FA75441E5539115B6E850412546C7A77FA75441C8DFF913B6E850412AE2EDA97FA7544185EB5118B6E85041713D0AB77FA7544174522345B4E850414569C5E781A754410B37EA0FB4E8504168C1953982A75441083F6FBBB4E850413FEE91B682A75441AC97A4D3B4E85041BA4AF5EB82A75441DAEA6CDBB4E85041E6FFEAF282A75441175003AEB5E85041BCB75E5983A75441AEC36A6AB7E850412E2DF65683A7544134298DB7B7E85041FE083A4783A7544166666636B8E85041F6285C1F83A7544163092558B8E8504179ED832E83A75441FAD76C58B8E8504129E5792E83A7544128763E12B9E8504148D6465583A75441499E8EABB9E85041549BF3C683A75441E17A140EBAE85041333333F383A754419C1DDCF8B9E850416CD70B8D84A75441B843BBF2B9E850419103610785A75441DEC96782BAE8504104D1C95B86A754412F2753FEBBE850419442C95388A754414039C905BCE850412506B55988A75441EC51B87EBCE8504114AE47B188A75441AD7DE081BCE850412B652EBC88A75441B6332788BCE85041806C29C188A75441AEF28390BCE8504132D5BAEE88A754410AD7A3D0BCE85041C3F528CC89A754410AD7A3D0BCE8504148E17A948AA75441295C8F72BCE85041713D0AE78AA75441F67220C5B9E850418F100D308AA75441C428DCC1B9E8504142CD2D2F8AA75441F6285CAFB9E85041A4703D2A8AA754415C8FC245B9E85041E17A146E89A7544146515F54B8E8504157D961D888A75441B985434CB8E8504146FA0ED588A75441410193F8B7E850414C15B7EF88A75441D67FC843B7E85041F7B8E93189A75441B15B19B9B6E85041EACD68E588A75441E1B6B6FAB6E85041E73359DF88A75441AE47E16AB6E85041EC51B85E88A75441B13BB06FB6E85041C749C3DE87A75441ACCB935FB6E85041AA539E1387A75441D7A370DDB5E850417B14AE8786A7544103E67B3DB6E85041937AEDE485A75441BFCFE063B6E85041180E577985A7544152B81E15B5E85041000000B084A7544105BFBDD7B3E85041D6D190C484A7544106103CBBB3E85041F65C87C884A75441A4E4D13EB3E850416A77FE1285A75441BB439AFEB2E8504152AD1A2385A75441CDCCCC8CB2E850410AD7A36085A7544194B7D3F0B1E850412134631785A754419AA2D2ABB1E850413DD3090285A7544171803580B1E85041D0EE47A484A7544166666666B1E850410AD7A38084A754417EA01C6AB1E85041C93EC77484A75441F594E865B1E850412C0DBE6B84A754413C291C97B1E8504128D2FAE483A7544114AE47A1B1E8504148E17AC483A75441428273A3B1E85041F9612DC383A754414231C7AAB1E85041F8E41BAF83A75441A42846A7B2E85041F080971F83A754413F8637B7B2E850411563AE7B82A75441411E1E35B3E85041F5E4971A82A75441CDCCCC6CB3E85041B81E856B81A75441C3F528DCB1E850413D0AD73382A75441516B980FB1E85041CFB5664C82A754414D03B170B0E850411A56A97382A7544135FD1C99AFE85041BD59F4F882A75441C3F5283CAFE85041295C8F4283A7544185E45C30AFE850416EDEB83983A75441512D2230AFE850414B2CDD3983A75441D3D94595AEE85041F33B89C582A75441BC5F5F7FAEE85041E5C515B582A75441646D1961AEE85041572F589E82A7544116448B7EAEE85041304BBB6182A7544186D3104AACE85041BA074B4883A7544109247F3FACE8504113E5855483A754410CC9CD06ACE8504147E971A283A75441E8F353D2ABE85041263A6AE083A754418B9FEF7DABE85041E9E3CC5384A754413E3BE22EABE85041A3CA510985A754419B34919BAAE85041034806A485A7544168C2E181AAE85041AD6BF69886A75441F6689ACBA9E8504105C8323C87A75441295C8F92A9E85041EC51B87E87A75441AE47E19AA8E85041B81E853B88A754410CAD09DAA7E850413E85A3E188A75441151EB012A7E85041AE047BAB89A75441C8077D09A7E850419A53B0B589A7544189CD8B98A4E850410E82B31D8DA7544174728B2EA4E850418AAFBC0D8EA7544185EB5118A4E85041713D0A678EA7544133333373A3E85041E17A145E8FA75441B420410FA3E85041AD47BC2590A754414EACFA04A3E85041DE1ABD3F90A754415F223D65A2E8504159EF137F91A7544114AE47F1A2E85041333333A392A75441D9207738A2E85041197292CE93A7544180483FA4A1E85041BA3EE0D594A7544102BD4D76A1E850419624CD0995A754419B4C04D2A0E85041D4FE1EBB95A7544185EB5198A0E85041F6285CFF95A75441246E58DA9FE850412A2EBB4296A75441503D2DE09FE850418E16525C96A7544194E34816A0E85041CB1DEC4697A75441E1D2F10BA0E85041E34831B497A754413362F09B9FE85041A9635B0898A7544172CD51BC9EE850419DB7D24298A754414433302E9EE85041E6DEAE0599A75441C14D0EF99DE85041881017F699A754413F19E3459DE8504181DD7C7D9AA75441C4C0B8459DE85041E796F7B89AA754417B14AE479DE850418FC2F5C89AA75441A771E2029DE85041CBA4B4D39AA75441896E4B749CE850419CC7DDF99AA754412420DD099CE85041AA179AFA9AA75441EC51B8CE9BE850413D0AD7039BA754418F724BFD9AE85041F025E9329CA75441295C8FE29AE85041F0F9F8159DA75441295C8FE29AE850411F85EBE19EA7544175DF8BCE9AE85041F5D4620E9FA75441D9405BC49AE850412D92BA829FA754415A32013E9AE850417DACA488A0A7544169FEB93B9AE850415AD168EFA0A754419AF48F309AE850413D5AE602A1A754410071935599E850415D4CA0D6A2A754413D96C41699E8504134B8337DA3A75441D35171DC98E85041A5DF59D9A3A754410AD7A3D098E85041295C8FF2A3A75441D3C71AA898E850412EF8906EA4A754417963186C98E8504108096C78A5A7544145FF84EE97E8504123664FA6A6A7544167CCF7E297E85041A517A6C9A6A75441234142A397E850417662BFBEA7A754410090347697E85041B1696016A8A75441B81E854B97E850418FC2F598A8A75441E0EA5C0F97E85041FA9931D1A8A7544135EEECF596E850415DA007F8A8A7544165F5549596E850412B304765A9A754417437781B96E85041F34D8395AAA754411CA919CB95E8504174B32F25ABA75441B81E858B95E85041A4703DBAABA754411F85EB2195E8504148E17A24ACA754412D4827EA94E850411DF2F681ACA75441923727B494E8504111B7F503ADA754416CC62F5194E8504142DEFE82ADA7544178C7316494E85041AC20A186ADA754415FCB71E993E85041EB1CC13EAEA754411E1A9A2394E85041DFD925D0AEA75441A4703D2A94E85041B81E85DBAEA75441E203FF2994E85041682122E0AEA75441559B073894E85041209A3703AFA7544111F5531694E8504169FB3B54B0A75441295C8F1294E85041B81E859BB0A7544151FB40EC93E85041DF0A1CD5B0A7544188E526C293E85041BD385029B1A75441CA7F067C93E850410D246A61B1A75441D662404792E8504101413096B2A7544172045F2992E8504188FAF2D1B2A75441EC51B85E92E85041CDCCCCBCB3A754417267DA5D92E850410D8C9FBEB3A75441AECC846092E85041EB8849C5B3A7544118AEC83D92E8504107BD1202B4A754418FC2F5E891E8504148E17AB4B4A75441FE16B3CB91E85041CC80B8C9B4A75441C22C59C391E850415DDA55D8B4A7544184D7EE1F8FE85041BBA422C0B6A75441C48984198FE85041C65894CFB6A75441C29417408FE85041CB1D61ECB6A7544102DFA75B8FE850418F0F46E7B6A754410A3FF6718FE850411ACA9C11B7A7544198AFA1908FE850415CB98228B7A754413FE8B6E38FE8504118618600B7A754415BA0950290E850411A0C4106B7A75441704A78EE8FE85041F7216920B7A7544114AE471190E850419A999919B7A75441825E88B28EE850419595A506B9A75441B166EA638DE85041C5745FF8BAA7544116ED7D3D8DE85041CE354C56BBA75441343204CA8BE85041C759C3CABEA754418A86334D89E8504169290BBCC4A75441E3252C3288E850419E96FEA2C7A754417AE0723F87E8504134FB5D10CAA754418FC2F5B886E85041295C8F72CBA75441F6285CDF87E8504185EB51A8CDA75441D7133BC287E85041CB71F8BECDA75441234460C587E850415762DACDCDA75441EB5DF41185E85041ED1C14E8CFA75441B062C6F284E85041F0F57734D0A754417101192B84E85041FB6AA927D2A754418FC2F51884E85041A4703D5AD2A75441B074FB7C84E85041CBCF2B4FD2A75441FB519E6285E85041D247CB1BD2A754413B47446E86E85041BCC02318D2A7544152B81E9586E850413D0AD713D2A754412095A09886E85041F6AF8F17D2A75441AA4EFF9986E850410DE68A17D2A75441FA6FA49F86E85041AD1E011FD2A754411F85EB5187E85041C3F528DCD2A754412C1A292587E8504134E8BA46D3A75441736F170F87E850416372B4AED3A75441CBCACD7A88E850419FB7260ED4A75441C3F5282C8BE85041EC51B89ED4A75441D42AC6408BE850412EAA76C8D4A754413907D15A8BE850414A334CCFD4A754415C5B2F578BE850414279D8F5D4A75441F6285C5F8BE8504166666606D5A7544108314A1D8BE850410826645CD7A75441A3A4D8B48AE850414DD209B1DBA754415E0B7AE48AE85041D36D68ABDBA754419F95EE208BE8504194CE709BDBA75441A95B13428BE8504102F157A0DBA75441AE47E16A8BE85041B81E859BDBA7544170DA42E48AE85041A52CCCB8DEA75441EA8A85E38AE850417916B176DFA7544114AE47718DE850411F85EB41E0A75441F692657A8FE850416D2929ABE0A75441EECCA98B91E85041A4347C05E1A75441B14492ED91E850417566AF49E0A75441CF4C912392E8504140C2BDE5DFA7544121DD99D692E85041D8B3C082DEA75441244670D992E85041B87A4C7CDEA7544101CCEDE893E8504148299148DCA754417FAC4D0794E850410F539626DCA75441D7A3704D94E85041B81E859BDBA754418F24BDFB94E8504145162173DBA754413FD65D3F95E850411892B45ADBA75441BD0482AC95E85041349ECA43DBA7544105DD814596E8504195460E49DBA754418153604696E850415A1D474ADBA754410000006096E850418FC2F548DBA75441D7A370ED96E8504148E17A34DCA75441F8E561ED96E85041A26F2135DCA7544139A18CEE96E850412887C536DCA754418EA962E996E85041B6444A62DCA754415363A2B496E8504111AE49B6DEA75441AB3E7A4D96E85041912D87A5E4A75441AA624BB296E85041CA32C89BE5A7544158B09C4596E850410B8E1096E5A7544152B81E2596E850418FC2F598E5A754414673CD1B96E85041CD7FDD93E5A75441BBD7280F96E85041E23B3393E5A754416699B9A195E85041AE6C2259E5A7544152B81E4595E85041E17A141EE7A75441B7924C4495E85041E6269420E7A754415116BC3D95E85041E332D37FE7A7544147E2E7D894E850410EC89680E8A754419328714E94E85041E2DFF81CEAA75441ED72B16194E850418F413216EBA754416E6F126794E8504161C2283EEBA75441150602F993E85041635EC758ECA75441DF556A9193E850411960D523EDA75441B6EA337893E850419A90A055EDA75441F6285C0F93E850410AD7A340EEA7544155310A7592E8504122DA3D80EEA75441A75E433992E85041ED90D3A8EEA754411F85EBA191E8504166666696EFA75441CF78108791E850412764C8A9EFA75441C806757A91E85041CC1FFCBCEFA75441B654738590E850415A564C6FF0A7544173AD1F5790E85041AE47E16AF0A754413D0AD7838FE85041AE47E16AF0A75441437B99338FE850416A91E5ECF0A754417FD6E7DB8EE85041A4EBA2A4F1A754411F85EBE18FE85041713D0A07F2A754411F85EBE18FE8504148C63822F2A75441B50328E38FE850417A5BC222F2A754411F85EBE18FE85041AAED842AF2A754411F85EBE18FE850413D0AD7C3F2A75441CC6513C08FE85041DCD9F3FEF2A75441542584BF8FE850416D037702F3A754411C35574A8FE85041277E46D5F3A75441C0C7C3378FE850413A1CA205F4A75441EC51B8DE8EE850414F973436F5A75441EC51B8DE8EE85041EB22FCB6F5A75441904119E58EE850419E456D79F6A75441EC51B8DE8EE850419894A381F6A75441EC51B8DE8EE85041A4703D8AF6A754419ACD25A88DE850419F04236EF8A75441D3126F588DE8504130D5EB04F9A75441E41181FA8CE85041F5F7AF7CF9A754413D0AD7E38CE85041000000A0F9A75441D7A3709D8CE8504114AE4701FBA754415B63168D8CE850413F215822FBA75441B7EF2E878CE850416ADC7C46FBA75441499129E78BE85041B77BB9CCFCA75441B2A38CFD8AE85041CFF81F51FEA754416E998BAF8AE85041D3D7DEEBFEA754414CF1F27C8BE8504142B7B676FFA75441F2D5C8E98BE85041C6AC8FB6FFA754414D6459438CE8504128ADD2FCFFA75441295C8F628CE850411F85EB1100A85441666666168EE850410000005001A85441198D2E0F8EE85041C763F44C01A854413BD77F4B8EE85041DC5C237601A85441780A394D8BE85041595ADB2E00A854412A7D29AA8AE85041AC7DFB4900A8544149A5C6968AE850419E20DE5200A85441A64A718D8AE85041ECFAC3C901A854414842DC718AE85041F347A67002A854417B14AE678AE85041AE47E14A03A85441D01B591E8AE85041F76B9D7A03A854419ED9646289E85041FF66B92204A854416F76D2DE88E850418AF40F5805A854419AADB76088E850415D1BB33006A854411F85EB3188E85041B81E859B06A85441AC4E961488E85041A225F4DE06A854412CB649CB87E850414D925DA007A8544117CAB66B87E850411611660F09A854413B636B1987E8504189BAEA680AA85441EBE1211587E850418610BD730AA85441B81E850B87E85041CDCCCC9C0AA854419BE917DB86E850410ABC3D060BA854415127079786E8504150860DB20BA854411CDEFF4486E85041209352820DA85441A3B8811B86E8504197CA955F0EA85441A045F0E085E85041581E49C90FA85441D65CAAC985E8504140E7A66910A85441021023BC85E8504124317DAD10A85441AB63AA6885E85041AB0308C012A8544199801F5985E850411B91BB4913A854411CD3112085E85041D27684E014A85441C27664DC84E85041452EB45816A8544176DFA4BF84E85041E3BF27AD17A854411F85EBB184E8504185EB517818A85441E3C3A28384E85041A070832319A85441A7B6CE7C84E85041BB85E64919A85441251E122884E85041E6E37F9B1AA85441E19BE4C683E85041FF9E8EB51FA854415D2AF2BD83E8504130A4A86E20A85441C59472C983E850418F7C312822A854410CFA9CCA83E850418F31DC4422A854414ECBD7D783E850415F26697423A85441A1D809F183E85041265FD08B24A8544114AE470184E8504114AE472125A8544127527FFB83E850411B8F4F2F25A8544177ECAFC683E85041F811640526A8544165DFFBEB84E850417C0704A227A85441FC64624C86E85041EBFD348B29A8544100A71CC486E85041E09E8A282AA8544169304DC186E85041D9FA812D2AA8544148E17AC486E850411F85EB312AA854410F4ACA1D86E850418198724E2BA85441F72C7EA184E85041110378EE2DA854418288773484E8504187467DC92EA854417C8B515784E85041263BC5F52FA85441CDCCCCCC85E850411F85EB2130A85441EC4B73E085E85041C720FD3130A85441A2339FF485E85041E99A893430A85441EE8FAF2886E85041D9E10E6D30A85441EC51B84E86E85041C3F5288C30A85441EC51B84E86E8504123FCF4B530A854410B6BBC5E86E8504180057ADB30A85441205C454F86E85041338AC64B31A854413D35CF7B85E85041512C581432A85441EDDD5B6885E850412B725F5E32A85441FC099D1885E8504162BCE66033A85441CCE3A51185E8504117E21F6333A854410AD7A31085E85041713D0A6733A85441C5825DA784E850414DD5179933A8544120AF8F2984E8504160E448F233A854411E51682584E850415021E54C34A85441EC51B88E84E8504114AE470138A8544141C7E95584E850410CCDB56E38A854411CAFE7F683E850416F371A5C39A854413CF53BB782E850411DE384A73AA8544116F55C0E83E850414CB9ECD53AA854418014306783E8504144452FFD3AA854415C373A5286E850415DCBD2693AA85441B3177C7286E8504178D0AC583AA8544133E12F9186E85041706B675D3AA85441295C8F0287E85041713D0A473AA85441B674BB3587E850412783BF763AA85441F352169A87E85041BC8D34863AA854412A796D6A87E8504120E978933AA85441E539144B88E850412FD151793BA85441D7A3701D89E85041D7A3703D3CA85441FA396B1A89E850410495763F3CA854412294ED2289E85041D88CDF463CA85441318B567288E8504165F71FC73CA85441756A536088E850417F1D37E13CA85441EC2C5D3488E85041A37E30343DA85441063A286D88E850417BE95AE03DA8544166DB827288E8504113897EFD3DA8544148E17A8488E85041CDCCCC2C3EA854414FAD1D8188E8504181F9FA4C3EA85441F15B5F9488E8504139A7C8B53EA8544158854F4888E8504165A95F6C40A854411F85EB3188E85041295C8F4241A8544116A94D1988E850417648445D41A8544141B8401888E850410290836241A85441F12C223F87E850415E245D6942A85441759EB2F588E85041C06F3B9D44A854419A9999898AE8504152B81E8546A854415C8FC2858CE85041713D0A0748A854412B67EDAB8DE85041CB1BB93548A854414DF350AC8DE85041BB293F3548A85441000000D08DE85041000000C047A8544118C3C65E8FE8504109CDEAC747A854415F626A0C90E85041D1D1E8BE47A85441A2CBDF2690E85041D0CEE3CB47A8544148E17A3490E85041C3F528CC47A85441265F2F3F90E850410A0DD1D747A8544153970C6B90E85041130756ED47A85441F358D46691E85041589F3AF748A85441F2CDD6B791E85041DB324A1D49A854411F85EB8192E850413D0AD77349A85441EC51B85E92E850410AD7A37048A854419E85FAA392E85041A195950C48A85441CDCCCC9C93E850414D0C3B9E46A85441CDCCCC9C93E850418B67971846A854417719FA6791E850418AB14A2C45A85441CFB836EC90E8504138045A0C44A854417737C75590E85041F9682FE743A85441A1B878F58FE85041FCAC8E5042A85441015837C38FE850417B60DE9E41A85441F4EE19628FE8504128A9C29340A85441755D365F8FE8504101AF453E40A85441AC212DF58EE850419A5B25CB3EA854416147CEF68EE85041F20A00C63EA85441A15AD6538FE85041526437A03DA854413C1729748FE85041AEA4592C3DA8544170E1277A8FE85041A2A8BFE03CA85441D5E7AA9B8FE850413F2A34F73AA85441C7BC79E18FE85041C48016333AA854415C8FC2258FE85041A4703D5A3AA8544114AE47518EE8504114AE47C139A854411F82B28C8EE85041F859137739A854410FA445DA8EE8504146E0FCE438A85441740716CB8EE85041892D16CF37A8544128E292C68EE850416904E95337A85441B81E85BB8EE8504185EB518836A854410717FDBE8EE8504136F3D98436A85441FE35ECBE8EE85041932F0D8336A854411FDBAE448FE85041D05033FC35A85441A962C5468FE8504194A711FD35A854410AD7A3608FE85041333333E335A8544168A0F10B90E850412561154F36A854412A5BD9AF90E8504195A3429336A85441C3F5282C91E85041333333E335A854411CDD163591E850416508FCDE35A85441C9DF244891E850411140C5C335A854417A2D4A9B92E85041D41AE13535A8544148E17AD492E85041AE47E11A35A85441FAEC93D892E85041FADA3C1C35A85441009797DC92E850412EE78E1A35A854414B7B3F4793E850413F80F92035A85441C878B98893E850410AA930B534A854416239B88A93E8504139703BB534A854418E981BB393E850410369A17634A85441D7A370ED94E850419A99997932A8544111E4064996E85041D6D575152FA85441D269024696E85041E065A9E12EA85441C6014F4496E85041E1843AD32EA8544159912A4596E850417ACC78D22EA85441FD4F526496E8504107EB49D12EA854413D0AD71398E85041B81E859B2AA85441713D0A3798E85041A4703D3A29A85441B81E854B97E850418FC2F5F826A854417B14AE9795E85041EC51B8CE24A85441FF96AF5496E85041EBDD2E3923A85441A224C9D296E85041C2966C1E22A8544105A348D796E85041F0E1F72022A8544114AE47E196E85041B81E850B22A854411EA8EF9897E85041E3E47F8E22A85441D569B03798E85041299E4AE822A85441FA1E0AFE99E85041E583C27F23A85441339189C69AE85041DF918DF822A854416E036F1C9BE85041EA0B7AB222A85441F5BF79BD9BE85041D2A5454522A85441AE5E2AC89BE85041CCE1053E22A8544108AD68D89CE85041E0A9594D1FA854415F21B92F9EE8504177BD93C01BA85441255E3D549FE8504156A2077A18A854417528F7729FE850410121BF6818A8544185EB51789FE85041A4703D5A18A854411C0000003570743FF2E85041BE9B55E43EA754413B7A7220F3E8504161736BFC3DA754416CF80A73F4E85041E12F7D3D3DA75441F2D26C66F5E850413B0427183DA75441149F75C9F5E850418761537D3CA75441AA0FE082F6E8504143E472843BA75441CB39C62BF7E85041DB82888B3AA75441246D5B30F7E85041B5AB29713AA7544123019B3FF7E850414EA61D723AA754412F40B2A8F7E8504115683D2F3AA7544157A32AA8F7E85041A49469313AA7544114C3DD6CF8E85041C27308FA3AA75441ABDA83EBF8E85041EE4FD67B3BA75441F11044DEF8E850417F25447E3CA7544110BDF72EF8E85041F2C4DCC63DA7544160249367F8E85041106A121A3FA754411322E42CF8E8504172022A4740A754411CF19EA6F6E850415DBA0FAA40A75441DFB941DEF5E850416E1F8B9840A754413B9B5F41F5E85041B534B7C841A75441B8FE00CAF4E850415EF1D4E241A754414AC99934F4E850418EF4792841A754415DC9CA99F3E8504132AE558E40A75441EF6D5DA0F2E850415030467740A754419D48AE62F2E850418C74144340A75441EBFF9A0CF2E850415A6FE9D03FA75441986F18E9F1E85041597E289F3FA754413570743FF2E85041BE9B55E43EA754410F000000554DF39290E85041B502FDBD2EA8544189C10F6790E850416FA91AAD2EA854414CC5A35C90E850416E991D692DA8544139D1CDCB90E850411AAA7F422CA85441276E6E2091E85041A517AF9C2BA854418796AB0E92E8504179C600672AA85441EF18644392E850411B808D7928A85441622FD4C492E85041535B097828A85441E103E46B93E85041995C147628A854418A0A2C5594E850419CD5A7BD29A85441DA0A2F2C94E850418B9392F52AA8544150CDFC6093E850413C514C6A2CA85441F172C3C492E85041560FF94D2EA85441251962F591E8504144E856462FA85441554DF39290E85041B502FDBD2EA85441130000003A257F6A99E850413265D282EAA7544199C4D17299E850414F9A7EDFEAA75441334039B698E85041543B8115EBA75441C82C354F98E85041B29DB1ACEAA75441851712AD97E85041D5A84F14EAA75441A540D1D197E85041FC357C7CE9A7544170B6F90897E850412BA65021E9A754411979729E96E850415AB571ACE8A754411F8A3C8E96E85041B87662D6E7A75441B95B0A4897E85041F7525FB3E6A754416EC7905097E85041BB92ACD0E5A75441595BC49A98E85041EBC99BAFE5A7544102FBE01499E85041D18D341CE5A75441FC61F69799E85041185E499CE5A75441E165231F9AE85041E2D509A2E7A75441C3776C1F9AE85041AA58A30DE8A75441A71E2FFD99E85041A1A86685E8A75441D3F527F599E85041795F8FEFE8A754413A257F6A99E850413265D282EAA7544118000000DC54D51FEDE85041FC98C7B942A7544150D2F04CEDE85041B3BEF93942A75441760214EEEDE850419A185EBB41A75441F30B084FEEE850415C1468A741A75441AAD8F37DEEE85041BA5E62D341A7544155492A8DEEE850412D9F9FE241A75441ADC88194EEE85041C8A647EE41A754418D57C797EEE8504178DA75F341A75441FDB03144EFE8504124F2BA4542A754419ECAEF9CEFE850411A93D78442A75441D30C71A3EFE8504171AD95E042A754411682FF69EFE850418093145043A754419055826AEFE850418AF1125243A754415C962969EFE8504192CB7F5243A75441A9E8DB04EFE85041F318084D45A754417FA07D02EFE8504101FBE44D45A75441DD73A4D7EEE850411507272C45A75441EB0E7530EEE85041D322CF2645A75441EE7022B2ECE850418CCA3AE444A7544111191AC5EBE85041FEE5A2EC43A75441F7A94DD4ECE85041530285D643A75441D5119773EDE8504184DA6D4043A75441096C1247EDE850416CA62DCD42A75441DC54D51FEDE85041FC98C7B942A7544112000000D2212A82F8E85041317E390138A75441E238B6B9F7E85041B4B8F3EA37A754419DAD7270F7E85041B4B8F3EA37A75441B4037050F7E8504188E62CF437A754415B9B44EDF6E850412FDC5AB637A75441C6A2CA9CF6E85041ADD19DA837A754415E258424F6E85041F8D2A7C136A75441C01191A2F6E85041B5232A2136A7544128BA2ECBF7E85041CD5302BB35A754410E0263ACF8E8504169991C9435A75441B5E83656F9E85041228A499E35A75441E8167652F9E8504153F7374136A75441D42D5A92F9E85041DE46BB6936A754415042613BF9E850413F6247D136A75441BE6F5708F9E85041715CA3E436A75441F852579EF8E8504144BF954B37A75441197BA9A9F8E8504144DBB1C437A75441D2212A82F8E85041317E390138A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 422978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441AE47E1EA0DE95041333333E355A65441295C8FB20CE950417B14AE7755A65441EC51B88E0CE95041333333C354A65441713D0A870BE950413333339354A65441EC51B87E0AE95041333333F354A65441EC51B8DE0AE950417B14AE5754A65441EC51B87E0AE95041B81E85FB52A65441AE47E15A0AE95041B81E851B51A65441713D0A570BE95041B81E85EB50A65441AE47E13A0CE950413333331350A65441AE47E1BA0DE950417B14AED74FA65441AE47E11A0EE95041333333834FA65441EC51B8DE0DE95041333333F34EA65441295C8FF20BE95041B81E852B4DA65441AE47E14A0BE95041B81E859B4CA65441EC51B8AE0AE95041333333934BA65441EC51B8AE0AE95041F6285C4F4AA65441295C8F020BE950417B14AE074AA65441AE47E1AA0BE95041F6285C1F4AA65441AE47E1AA0BE950417B14AE2748A65441EC51B80E0BE95041F6285C1F47A65441295C8F020BE950413333332346A65441713D0A670AE950417B14AE8745A65441AE47E1CA09E95041B81E85AB45A65441EC51B8FE08E950413333330345A65441EC51B8CE08E95041B81E858B44A65441713D0AB708E950413333338343A65441295C8FB209E950417B14AE1743A65441AE47E1CA09E950417B14AE2742A65441AE47E1AA08E95041F6285CEF40A65441713D0AE708E950417B14AEA740A65441713D0AE708E950417B14AE573FA65441713D0AF707E95041F6285C3F3FA65441295C8F4207E95041F6285CDF3EA65441295C8F4207E95041B81E85FB3DA65441713D0A9707E95041B81E853B3DA65441AE47E14A08E95041333333533DA65441295C8F8209E950417B14AEB73CA65441AE47E16A09E950417B14AE073BA65441EC51B8FE08E95041B81E85DB39A65441AE47E11A0BE95041F6285C1F38A65441EC51B83E0BE950413D0AD78334A65441295C8FF20BE95041B81E85DB33A65441EC51B8BE0CE950413D0AD79333A65441AE47E12A0DE950417B14AEE733A65441295C8F620EE950413D0AD70333A65441EC51B81E0DE95041F6285C1F32A65441AE47E12A0DE95041333333F330A65441713D0A970DE95041F6285CAF2FA65441EC51B81E10E95041F6285CAF2CA65441713D0AD70FE950417B14AE472BA65441713D0A2711E950417B14AEC729A654413333335312E950417B14AE6729A654413333338312E95041333333E328A65441EC51B84E16E95041F6285C1F26A654413333330317E95041F6285C7F26A65441AE47E1DA17E950417B14AE0726A65441EC51B8EE18E95041B81E85FB25A65441713D0A6719E95041B81E855B26A65441AE47E1AA1AE95041F6285C1F26A65441EC51B81E1CE95041F6285C4F26A65441333333431CE950413333330327A65441EC51B8AE1CE950413333339327A65441AE47E1BA1CE950417B14AE1728A65441713D0A371CE95041B81E859B28A65441713D0AF71CE950417B14AE6729A65441713D0A871DE950417B14AE6729A65441EC51B82E1EE95041B81E85DB27A65441AE47E16A1EE95041B81E856B25A65441AE47E1DA1DE95041F6285C8F25A65441EC51B8DE1CE950417B14AE1725A65441713D0A371CE95041B81E85EB23A65441713D0AA71BE950417B14AE6723A65441333333B31BE95041333333F321A65441EC51B85E1BE950417B14AE5721A65441713D0A771EE95041333333B31FA65441713D0A071FE95041B81E851B21A65441333333B31EE95041B81E85DB21A65441EC51B8EE1EE95041F6285C5F22A65441333333E31EE950417B14AE3723A65441AE47E1FA1EE95041B81E851B24A65441AE47E19A1EE95041333333F324A65441AE47E14A20E950413333338325A65441AE47E1DA20E95041333333F324A65441AE47E1CA21E950417B14AE0723A65441EC51B8BE21E95041B81E850B22A65441713D0A7721E95041B81E85AB21A65441333333F320E950417B14AE1722A65441EC51B83E20E950417B14AEE721A65441713D0AC71FE950417B14AE3720A654413333339320E950417B14AE3720A654413333331322E95041333333F31EA65441333333D322E95041F6285C2F1FA65441333333C323E950417B14AE171FA65441EC51B87E25E95041B81E85FB1CA654413333330326E95041333333C31BA65441713D0AF725E95041F6285C0F1BA65441713D0A7727E95041B81E858B1AA65441AE47E1BA28E95041333333C318A65441AE47E1FA27E950417B14AE8718A65441AE47E19A27E950417B14AE2718A65441AE47E10A27E95041F6285C3F18A65441713D0A8726E95041F6285C0F18A65441EC51B8AE25E950417B14AE2718A65441AE47E12A25E95041F6285CDF17A654413333331325E95041F6285C7F17A654413333335324E95041B81E85FB16A65441713D0AE723E950413333332316A65441AE47E14A23E950413333339315A65441713D0A1721E95041B81E85DB15A65441333333A31FE950417B14AE6717A65441EC51B82E1EE95041F6285CDF17A65441713D0AC71CE95041B81E853B19A65441333333C31AE950417B14AE371AA65441EC51B81E19E95041F6285CCF1BA65441EC51B86E17E950417B14AE771CA65441AE47E12A16E95041F6285C7F1DA65441EC51B86E14E95041F6285C3F1EA65441333333D313E95041B81E853B1FA65441AE47E1DA11E95041F6285C1F20A65441EC51B84E10E95041B81E85DB21A65441EC51B82E0FE95041B81E853B22A65441333333630EE950417B14AE0723A65441333333D30DE95041B81E851B24A65441EC51B8BE0CE95041F6285C9F24A65441AE47E13A0CE95041F6285C9F24A65441713D0A170CE95041B81E858B26A65441EC51B86E0BE950417B14AE5727A65441713D0A970AE950417B14AE5727A65441713D0A4709E95041B81E859B28A65441713D0AB708E950417B14AEA728A654413333336308E950417B14AEE727A65441AE47E13A09E950417B14AE9726A65441713D0AE708E95041B81E853B25A65441713D0AF707E950417B14AE1725A654413333335306E950413333337326A65441AE47E17A05E950417B14AEC726A65441713D0A0704E950417B14AE1728A65441EC51B8CE02E950417B14AE7728A65441713D0AD700E950417B14AEC729A65441AE47E11A00E95041E17A141E2BA65441D7A3701DFDE850417B14AE8732A65441F6285C7FFCE850411F85EB5138A65441713D0A87FCE850413D0AD73339A65441EC51B82EFDE850413D0AD73339A65441EC51B85EFDE85041F6285C9F39A6544133333323FDE850413D0AD7533AA6544133333393FCE850413D0AD7533AA6544185EB51F8FDE85041AE47E1DA44A65441EC51B80EFFE850413D0AD7C348A65441713D0A87FFE85041B81E851B48A65441EC51B85E00E950413D0AD73348A65441EC51B81E01E950417B14AEB748A65441EC51B80E02E950413D0AD7C34BA65441333333D301E950417B14AE174CA65441AE47E12A01E95041F6285C2F4CA654413333332300E95041B81E85FB4CA65441713D0AA700E950413D0AD7D34DA65441AE47E1CA03E95041B81E858B50A65441EC51B85E06E950413D0AD72352A65441EC51B83E08E950417B14AE2754A65441EC51B8FE08E95041B81E850B55A65441333333B309E950417B14AE7755A65441333333E309E95041F6285C1F56A65441333333C30BE950413D0AD73357A65441EC51B88E0CE950413D0AD78358A65441333333030EE950413D0AD7635AA65441713D0A170FE95041F6285C9F5AA65441AE47E19A0FE95041F6285C8F5BA65441333333A310E950417B14AE075CA65441713D0A9710E95041B81E85EB5CA65441713D0A2714E95041F6285CDF5FA65441AE47E15A19E950417B14AE1764A65441AE47E13A1BE950417B14AE7761A65441713D0A9719E95041333333A35FA65441AE47E1FA18E950417B14AE975FA6544109000000295C8FA204E950417B14AEC74AA65441AE47E11A05E95041333333E349A65441AE47E17A05E95041B81E85AB48A65441295C8FC205E950413333339348A65441713D0A3707E95041F6285C4F4AA65441295C8FB206E950417B14AE274BA65441EC51B8FE05E950417B14AE274BA65441713D0AB705E950417B14AEC74AA65441295C8FA204E950417B14AEC74AA6544110000000AE47E1BA01E950413333332346A65441295C8FB200E950413333335346A65441295C8FC2FFE850413333338343A65441295C8F32FFE850413333339342A65441AE47E10A00E950417B14AE3741A65441295C8F1201E95041F6285CEF40A65441295C8F7201E95041B81E852B41A65441713D0A5702E950413333334341A65441EC51B8FE02E95041F6285CEF40A65441713D0A0704E95041B81E854B42A65441713D0AD703E95041F6285CCF42A65441295C8F4204E95041F6285C7F44A65441713D0AA703E950413333336345A65441AE47E10A03E95041F6285CFF45A65441295C8FC202E95041B81E856B46A65441AE47E1BA01E950413333332346A654410103000000010000000F0000007B14AE770FE95041E17A14EED5A65441295C8FD210E9504152B81E65D6A65441EC51B83E11E9504100000070D6A65441295C8FD210E95041333333E3D5A654418FC2F52811E9504148E17AD4D4A65441E17A146E12E95041C3F5281CD4A65441295C8F4212E95041F6285CAFD3A65441B81E857B10E9504133333343D3A654410000003010E95041713D0AF7D2A654418FC2F5D80FE95041D7A3702DD3A65441AE47E1EA0EE95041666666B6D2A65441EC51B89E0EE95041E17A144ED3A6544148E17AB40EE95041713D0A47D4A6544185EB51680EE9504148E17A24D6A654417B14AE770FE95041E17A14EED5A6544101030000000100000022000000295C8F3216E95041F6285C3FDAA65441EC51B87E16E95041295C8FB2D9A65441EC51B87E16E95041A4703DFAD8A654411F85EB6117E9504185EB5178D8A654417B14AE5717E9504166666646D9A654411F85EB4117E95041D7A370BDD9A654411F85EB6117E950413D0AD7F3D9A654413D0AD7C317E950411F85EB91D9A65441333333F318E950418FC2F5E8D9A6544185EB51E818E9504166666646D9A65441F6285CFF1BE9504152B81EB5D7A654415C8FC2351CE9504133333333D7A65441333333E31CE950411F85EBF1D6A65441AE47E17A1DE95041EC51B87ED7A65441C3F528DC1DE950411F85EBA1D5A65441295C8FC21CE95041B81E859BD6A65441666666561CE950411F85EBD1D6A65441EC51B8BE1BE95041EC51B80ED6A65441A4703DBA1AE95041EC51B82ED6A654413D0AD7631AE950411F85EBF1D6A6544152B81E7519E950415C8FC285D6A654410AD7A35018E95041AE47E17AD6A654417B14AE5717E950411F85EBF1D6A654416666661617E9504148E17A94D7A65441295C8F3216E950419A999989D7A65441EC51B82E15E95041CDCCCC4CD8A654416666662613E95041C3F5280CD8A65441B81E851B13E95041EC51B8AED8A65441D7A3709D13E9504114AE4771D9A65441A4703D2A14E95041B81E853BD9A6544152B81E1514E950413D0AD7F3D9A65441295C8FC214E95041295C8FB2D9A65441C3F528DC15E95041295C8FB2D9A65441295C8F3216E95041F6285C3FDAA6544101030000000A00000003020000295C8F024AE95041F6285C7FB3A65441AE47E12A49E95041F6285C4FB3A65441295C8FA249E95041B81E857BB1A65441295C8FB24BE9504133333323B2A65441AE47E1FA4EE95041B81E85FBAFA65441EC51B8AE4FE950417B14AE67ADA65441295C8FD24FE95041B81E855BAAA65441713D0A5750E950417B14AE37AAA65441295C8FC250E95041F6285C3FA8A65441AE47E17A50E950417B14AE37A7A65441295C8FD24FE95041B81E852BA7A65441AE47E1FA4EE95041F6285C0FA8A65441295C8F624DE95041F6285C3FA8A65441EC51B86E4DE95041F6285C4FA7A65441EC51B8FE4DE95041B81E85CBA6A65441295C8FC24DE95041B81E853BA6A65441EC51B84E4CE95041F6285CFFA5A65441713D0A474BE950417B14AEC7A4A65441AE47E10A4BE9504133333313A4A65441EC51B83E4AE95041B81E858BA4A65441AE47E18A49E95041F6285CAFA4A65441713D0AA748E950417B14AE07A4A65441295C8FF247E95041F6285CFFA2A65441713D0AD748E95041B81E85DBA2A65441295C8FE248E95041B81E85FBA0A65441AE47E10A48E950417B14AEB79FA65441713D0AE747E95041333333439EA65441EC51B8AE46E950417B14AE779DA65441295C8FA246E95041F6285C9F9CA65441713D0A3746E95041F6285CDF9BA65441713D0A3746E95041B81E856B9AA65441295C8FB245E95041B81E859B9AA65441EC51B80E44E950413333336399A65441295C8F9244E95041F6285CDF98A65441AE47E11A44E95041B81E855B98A65441EC51B8DE43E950417B14AEA797A65441295C8FB242E95041F6285C8F97A65441AE47E12A43E950417B14AEE796A65441713D0AE741E950413333339396A65441AE47E1EA40E95041B81E85FB94A65441295C8F7240E95041333333B394A65441EC51B81E40E95041B81E853B94A65441713D0A7742E95041F6285C1F92A65441AE47E16A42E950413333335391A65441EC51B82E45E95041F6285C6F90A65441EC51B85E45E95041B81E85BB8FA65441713D0A2747E95041F6285C1F8FA65441AE47E10A48E95041333333A38FA65441EC51B85E48E950417B14AE5790A65441295C8F1249E95041B81E857B90A65441295C8F024AE950413333330390A65441AE47E1CA48E95041B81E853B8EA65441713D0AD748E95041F6285C3F8DA65441EC51B8FE47E950417B14AEC78CA65441EC51B86E47E95041F6285CEF8BA65441713D0A2747E95041F6285C6F8AA65441295C8FA246E950417B14AE278AA65441EC51B87E46E950417B14AEC789A65441EC51B88E45E95041333333A389A65441295C8F2245E95041F6285C0F8AA65441AE47E17A44E95041B81E856B8BA65441AE47E1BA43E95041B81E859B8BA65441295C8F9241E95041F6285CDF8CA65441AE47E12A40E95041F6285CAF8CA65441AE47E1CA3FE95041B81E852B8CA65441AE47E1EA3DE95041F6285C7F8CA65441295C8F223CE95041333333438CA65441295C8FC23BE950417B14AEB78AA65441AE47E1EA3AE950417B14AE9789A65441713D0AF73AE95041B81E850B88A65441EC51B8AE3AE950417B14AE8787A65441EC51B8EE39E950413333333387A65441295C8FE239E95041F6285CAF86A65441EC51B88E39E95041B81E858B86A65441713D0A4739E95041B81E853B85A65441295C8F8239E95041B81E85DB84A65441EC51B8FE38E95041B81E854B84A65441713D0AB738E950417B14AE3783A65441295C8FA237E950413333330381A65441EC51B87E37E950417B14AEA77FA65441AE47E15A37E95041333333337EA65441295C8FB236E95041333333837CA65441713D0AF737E950417B14AE977AA65441295C8F6238E950417B14AE1779A65441AE47E19A39E950417B14AE5778A65441713D0A673AE950417B14AE5778A65441713D0AC73AE95041F6285C0F78A65441295C8FA23AE95041B81E855B77A65441295C8FD23AE95041F6285C2F76A65441AE47E1DA3BE950417B14AEB775A65441713D0AA73CE950417B14AE1773A65441713D0A973DE950417B14AEC771A65441713D0AE73EE950417B14AE6771A65441EC51B88E3FE95041F6285CAF71A65441AE47E16A3FE95041B81E85CB70A65441EC51B8AE3DE950417B14AED770A65441295C8F123DE95041F6285C5F70A65441EC51B85E3CE95041F6285C8F70A65441EC51B86E3BE950413333335370A65441295C8F423AE95041F6285C8F70A65441EC51B85E39E950413333335370A65441AE47E17A38E95041F6285C5F70A65441EC51B84E37E95041333333F36FA65441AE47E1EA34E95041333333F36FA65441EC51B86E35E95041333333536DA65441295C8FD234E95041333333536DA65441EC51B87E34E95041333333C36CA65441AE47E1FA33E95041333333236DA65441713D0A3734E95041F6285CBF6DA65441713D0AE732E950417B14AE676EA65441AE47E18A31E95041333333836DA65441295C8FE230E950417B14AEA76DA65441295C8F2230E95041F6285CFF6CA65441AE47E15A31E95041F6285C3F6CA65441713D0A6731E950417B14AE076BA65441713D0A1730E95041F6285C8F6AA65441EC51B8AE2EE95041333333E36AA65441295C8FE22DE95041F6285CAF6BA65441295C8F622CE950417B14AE376BA65441295C8F022CE950413333336369A65441713D0AB729E95041F6285C7F68A65441AE47E1BA28E95041333333A368A65441AE47E18A25E950417B14AEB766A65441AE47E18A25E95041B81E85BB65A65441713D0A7724E95041B81E853B64A65441713D0A8723E950417B14AEB763A65441295C8FA222E95041B81E855B65A65441713D0A1721E95041F6285C1F65A65441EC51B84E1FE95041B81E85AB63A65441EC51B8EE1EE95041333333C363A65441713D0AA71EE950413333335364A65441AE47E12A1FE95041B81E85FB64A65441713D0A671FE95041F6285C0F66A65441AE47E10A1EE950417B14AE8766A65441AE47E16A1EE95041F6285C5F67A65441713D0A671FE95041B81E855B68A65441AE47E12A22E950413333333369A65441EC51B85E24E95041333333B36AA65441EC51B8AE25E95041333333A36BA65441AE47E1AA26E95041B81E85EB6BA65441295C8F5227E95041F6285C4F6BA65441EC51B84E28E95041333333736BA65441295C8F9229E950417B14AE176DA65441AE47E16A2AE95041B81E859B6DA65441713D0A872FE950413333332370A65441295C8F1231E95041333333A371A65441713D0A9731E950417B14AEB772A65441AE47E13A33E95041F6285C1F74A65441713D0AF731E95041B81E85DB78A65441EC51B87E31E950417B14AE177CA65441AE47E12A31E950417B14AEA77CA65441EC51B84E31E950417B14AEF77DA65441EC51B85E30E95041333333037EA65441295C8FC22FE95041333333937EA65441EC51B87E2EE950417B14AE0780A65441713D0A572FE95041B81E85BB80A65441713D0A872FE95041B81E852B80A65441EC51B8EE30E95041333333237FA65441713D0A6731E95041333333937EA65441295C8F0232E950417B14AE777FA65441713D0AE732E95041333333E37FA65441295C8F8233E95041F6285C4F80A65441EC51B83E32E95041B81E85DB81A65441AE47E14A32E95041333333B382A65441AE47E11A32E95041F6285C4F83A65441295C8F9232E95041333333F384A65441713D0A7733E95041333333C384A65441EC51B8EE33E95041F6285C5F85A65441295C8F8233E95041333333E385A65441AE47E1CA33E95041F6285CAF86A65441AE47E1CA33E950413333339387A65441713D0A6734E950417B14AE1788A65441EC51B89E35E95041B81E85FB88A65441EC51B8EE36E95041B81E85FB88A65441713D0A7736E95041333333638AA65441AE47E1BA34E95041F6285CEF8BA65441AE47E1FA33E95041F6285CFF8DA65441713D0AE735E95041333333B391A65441295C8F8236E95041333333B391A65441EC51B8EE36E95041B81E85AB93A65441EC51B83E38E950417B14AE1794A65441AE47E11A3BE950417B14AEC798A65441EC51B80E3BE950417B14AE479AA65441713D0A673AE95041333333139BA65441AE47E1EA3AE950417B14AE679BA65441295C8F923BE95041F6285CCF9CA65441EC51B8FE3BE950417B14AEE79CA65441EC51B8EE3CE95041333333B39DA65441713D0A073DE950417B14AE379EA65441AE47E16A3CE950417B14AE579FA65441AE47E13A3CE950417B14AEF7A1A65441713D0AA73CE95041B81E854BA2A65441EC51B8EE3CE950417B14AE17A3A65441713D0A673DE950417B14AE77A3A65441EC51B87E3DE950417B14AE07A4A65441295C8F623EE95041B81E85EBA4A65441AE47E16A3FE95041F6285CDFA4A65441295C8F823FE95041F6285C6FA5A65441AE47E18A40E95041F6285C6FA5A65441EC51B89E41E950417B14AE47A6A65441EC51B82E42E9504133333353A6A65441EC51B8BE42E950417B14AE07A7A65441EC51B8BE42E95041F6285CCFA8A65441AE47E15A43E9504133333343AAA65441AE47E12A43E95041333333D3AAA65441295C8F4243E95041F6285C2FACA65441AE47E10A42E9504133333303AEA65441295C8F6241E950417B14AE27AEA65441AE47E14A41E95041F6285CDFADA65441295C8F823FE95041B81E85FBACA65441EC51B85E3FE95041B81E856BACA65441AE47E1DA3EE9504133333363ABA65441EC51B84E3DE95041333333B3ACA65441EC51B8BE3CE950417B14AE97ADA65441713D0AB73BE950417B14AEE7ABA65441EC51B82E39E950417B14AEB7ABA65441EC51B8FE38E95041F6285C6FABA65441295C8FD237E95041F6285CCFABA65441295C8FA237E95041B81E85BBAAA65441295C8FB236E950417B14AE37AAA65441713D0A7736E95041333333B3A9A65441AE47E17A35E950417B14AE37AAA65441295C8F0235E95041F6285CEFA9A65441713D0AC734E9504133333343AAA65441EC51B8AE34E9504133333333ABA65441713D0AD733E95041B81E854BABA65441713D0A4733E950417B14AEF7AAA65441713D0A5732E95041F6285C9FABA65441713D0A8732E950417B14AED7ACA65441EC51B82E33E95041F6285CAFADA65441713D0A1733E95041B81E850BAFA65441295C8F5233E9504133333313B0A65441AE47E17A35E95041F6285CAFB0A65441295C8F2236E9504133333383B2A65441295C8F1237E95041B81E852BB3A65441AE47E15A37E950417B14AE57B4A65441295C8FD237E95041F6285C6FB4A65441AE47E1DA38E95041B81E851BB4A65441EC51B82E39E95041333333D3B3A65441713D0A673AE95041B81E851BB4A65441713D0AF73AE95041F6285C0FB4A65441713D0A573BE95041B81E85ABB4A65441295C8FF23BE95041F6285C2FB5A65441AE47E19A3CE950417B14AE07B6A65441295C8F223FE950417B14AEB7B7A65441295C8F523FE95041B81E857BB7A65441713D0AD73FE950417B14AEE7B7A65441713D0AD73FE9504133333393BAA65441EC51B86E3EE95041B81E859BBBA65441EC51B86E3EE9504133333313BCA65441713D0AE73EE950417B14AE07BCA65441EC51B85E3FE95041B81E85EBBCA65441295C8F4240E950417B14AEB7BDA65441295C8FB23FE950417B14AE37BFA65441EC51B84E3DE950417B14AE27C0A65441295C8FD23AE950417B14AE67C2A65441EC51B88E39E95041B81E852BC2A65441AE47E1CA36E95041F6285C8FC1A65441EC51B88E36E95041F6285C4FC2A65441295C8FE236E95041333333D3C2A65441295C8FE236E95041F6285C6FC3A65441AE47E13A36E950417B14AEB7C3A65441713D0A2735E950417B14AED7C4A65441AE47E12A34E950417B14AE07C5A65441AE47E1FA33E950417B14AE97C5A65441AE47E10A33E950417B14AE57C6A65441EC51B89E32E950417B14AE67C5A65441AE47E11A32E950417B14AE37C5A65441EC51B8AE31E95041B81E85CBC4A65441295C8F5230E95041333333B3C4A65441AE47E1DA2FE950417B14AE97C5A65441AE47E1DA2FE950417B14AEF7C5A65441AE47E14A2FE95041333333C3C6A65441AE47E1BA2EE95041F6285CCFC6A65441EC51B81E2EE9504133333353C7A65441AE47E19A2DE9504133333353C7A65441295C8F122BE950417B14AEC7C8A65441AE47E19A2AE950417B14AE97C8A65441713D0A472AE95041F6285C0FC9A65441713D0A6728E9504133333373C8A65441AE47E17A26E95041333333A3C8A65441AE47E15A25E950417B14AE47C7A65441AE47E18A25E95041333333F3C6A65441AE47E1FA24E95041B81E856BC4A65441295C8FF223E9504133333393C3A65441713D0A2723E95041B81E85DBC3A65441713D0A9722E950417B14AEA7C4A65441AE47E1BA22E95041B81E858BC5A65441EC51B8FE20E95041B81E850BC7A65441AE47E1DA20E950417B14AEA7C7A65441713D0A471EE95041B81E85CBC7A65441713D0A271DE9504133333353C7A65441295C8F321DE95041B81E85ABC6A65441EC51B82E1BE95041B81E851BC6A65441295C8F321AE950417B14AE37C5A65441EC51B8FE17E95041F6285C5FC4A65441EC51B80E17E95041F6285C5FC4A65441713D0AA715E95041F6285CCFC3A65441AE47E19A15E95041F6285C0FC3A65441EC51B89E14E950417B14AEB7C3A65441295C8F3214E9504133333393C3A65441AE47E13A12E950417B14AE87C6A65441295C8F7213E95041F6285C9FC6A65441713D0A5714E95041F6285CFFC6A65441713D0AB714E95041B81E85ABC6A65441713D0A7715E95041B81E850BC7A65441713D0A7715E95041B81E85CBC7A65441EC51B88E15E95041F6285CAFC8A65441EC51B8CE14E95041F6285C9FC9A65441EC51B86E14E950417B14AE87C9A65441EC51B8DE13E95041B81E853BCAA65441295C8FD213E950417B14AE77CAA65441AE47E14A14E95041F6285C8FCAA65441295C8FC214E95041F6285C1FCBA65441AE47E13A15E95041333333B3CAA65441295C8FD216E95041B81E85FBCAA65441EC51B8DE16E9504133333383CAA65441AE47E14A17E950417B14AE47CAA65441AE47E11A17E95041B81E859BC7A65441713D0AA718E9504133333353C7A65441AE47E1EA19E95041333333C3C6A65441713D0A571AE950417B14AE37C8A65441713D0AF719E9504133333333C9A65441EC51B8AE19E95041333333C3C9A65441AE47E10A1BE95041B81E853BCAA65441EC51B81E1CE9504133333323CAA65441EC51B8DE1CE950417B14AE77CAA65441295C8F021DE95041F6285CEFCAA65441EC51B86E1DE95041B81E855BCBA65441EC51B86E1DE95041333333A3CBA65441EC51B81E1CE95041333333A3CBA65441EC51B8EE1BE9504133333313CBA65441713D0A271AE95041F6285C7FCBA65441295C8FA219E950417B14AEC7CBA65441AE47E14A1AE9504133333363CCA65441AE47E16A1BE9504133333363CCA65441EC51B87E1CE95041B81E859BCDA65441713D0A271DE95041333333E3CDA65441EC51B8FE1DE95041F6285CEFCDA65441713D0A471EE9504133333313CEA65441713D0AD71EE950417B14AED7CDA65441EC51B8BE21E95041F6285C8FCDA65441EC51B84E22E95041F6285C2FCDA65441713D0AC722E95041B81E856BCDA65441AE47E17A23E9504133333353CDA65441EC51B82E24E95041333333E3CDA65441295C8FC223E950417B14AEB7CFA65441AE47E1DA23E95041F6285C8FD0A65441295C8F7225E95041F6285CEFD0A65441AE47E1EA25E95041F6285C8FD0A65441EC51B8CE26E95041B81E85CBD0A65441713D0A4727E950417B14AE97D1A65441713D0AE726E950417B14AE77D3A65441EC51B85E27E95041B81E858BD4A65441EC51B8CE26E95041F6285C3FD5A65441AE47E1CA24E95041B81E851BD5A65441EC51B89E23E95041B81E85FBD3A65441AE47E14A23E95041F6285C1FD4A65441295C8F3223E95041F6285C0FD5A65441713D0A6722E950417B14AE87D5A65441295C8FD222E95041B81E850BD6A65441EC51B87E22E95041F6285C5FD6A65441AE47E19A21E95041F6285CCFD5A65441295C8F8221E9504133333323D6A65441295C8F6223E95041F6285CAFD7A65441EC51B89E23E950417B14AEC7D7A65441713D0AB723E9504133333313D7A65441AE47E1EA25E95041F6285C7FD7A65441AE47E14A26E95041B81E85FBD6A65441295C8F5227E95041B81E85CBD6A65441EC51B81E28E950417B14AE37D7A65441713D0A172AE95041B81E85CBD6A65441295C8FA22BE95041333333F3D5A65441713D0A772DE950417B14AE77D6A65441EC51B8EE2DE950417B14AEC7D7A65441EC51B80E2FE95041333333F3D8A65441EC51B8CE2FE950417B14AE17D9A65441EC51B82E30E95041F6285CCFD8A65441295C8F8230E9504133333323D9A65441AE47E12A31E95041F6285C2FD9A65441295C8FA231E950417B14AE07DAA65441AE47E17A32E950417B14AE37DAA65441713D0A4733E95041B81E85ABDBA65441EC51B89E32E950417B14AEA7DCA65441AE47E13A33E95041F6285C1FDDA65441713D0A7733E950417B14AEF7DDA65441AE47E1FA33E95041333333C3DEA65441AE47E1FA33E95041B81E859BDFA65441AE47E1EA34E950417B14AEF7E3A65441EC51B87E34E95041F6285CBFE5A65441AE47E1BA34E95041F6285C8FE8A65441713D0A0734E95041F6285C4FE9A65441EC51B8BE33E95041B81E857BEAA65441EC51B8FE32E95041F6285CCFEAA65441EC51B80E32E950417B14AE57EAA65441AE47E15A31E95041F6285CDFE9A65441EC51B87E31E95041F6285C7FE9A65441EC51B88E30E95041B81E859BE8A65441AE47E10A30E950417B14AE77E8A65441295C8FB22DE95041F6285C3FE7A65441AE47E13A2DE950417B14AE17E8A65441295C8FC22CE9504133333373ECA65441AE47E12A2EE950417B14AE37ECA65441EC51B81E2EE95041B81E856BEBA65441295C8F022FE950417B14AE17EBA65441295C8F2230E95041F6285CBFEBA65441295C8F7231E95041F6285C1FECA65441AE47E15A31E95041B81E856BEBA65441295C8F3232E95041B81E850BEBA65441295C8F8233E95041B81E858BECA65441295C8F6232E950417B14AEE7EDA65441295C8F6232E95041B81E859BEEA65441713D0AE732E95041B81E852BEFA65441295C8F9232E95041B81E85BBEFA65441713D0A9734E95041F6285C4FEFA65441295C8FD234E9504133333383EEA65441AE47E15A34E950417B14AE17EEA65441EC51B84E34E950417B14AE87EDA65441EC51B83E35E9504133333333EDA65441AE47E19A36E950417B14AE87EDA65441713D0AD736E95041B81E85CBEEA65441AE47E1BA37E950417B14AE57F0A65441AE47E17A38E9504133333373EFA65441AE47E1CA39E950417B14AED7EEA65441713D0A673AE95041333333A3EFA65441713D0A973AE9504133333393F0A65441AE47E13A3CE950417B14AEE7F0A65441713D0A773CE95041B81E856BF1A65441295C8F723DE95041F6285CAFECA65441EC51B88E3CE95041F6285C0FEDA65441295C8F023BE9504133333303EDA65441295C8F423AE950417B14AE37ECA65441EC51B81E3AE95041F6285C5FEBA65441713D0A673AE950417B14AEE7EAA65441EC51B8BE39E950417B14AE27EAA65441AE47E1DA38E95041B81E851BEAA65441AE47E11A38E95041F6285CAFE9A65441AE47E18A37E95041F6285C5FE8A65441713D0AA736E95041B81E85DBE7A65441713D0A2735E95041F6285C0FE7A65441EC51B89E35E950417B14AEF7E0A65441AE47E10A36E95041F6285C5FDFA65441AE47E19A36E95041F6285C9FDEA65441713D0A0737E95041F6285C1FDDA65441713D0A2738E950417B14AED7DCA65441295C8FF238E950417B14AE07DDA65441295C8F8239E950417B14AE07DDA65441295C8F123AE95041F6285C4FDDA65441295C8FD23AE95041F6285C1FDDA65441295C8F323BE9504133333383DCA65441713D0AE73BE9504133333323DCA65441EC51B8FE3BE95041B81E85BBDAA65441EC51B88E3CE9504133333313DAA65441EC51B8FE3BE95041B81E856BD9A65441713D0AE73BE9504133333393D8A65441AE47E1AA3BE950417B14AEC7D7A65441EC51B82E3CE950417B14AE67D7A65441713D0A473CE950417B14AEA7D6A65441AE47E18A3DE950417B14AE57D5A65441713D0A273EE95041B81E85ABD5A65441295C8F923EE950417B14AEC7D4A65441AE47E12A40E950417B14AE67D4A65441AE47E12A40E950417B14AEF7D4A65441EC51B84E40E95041F6285C9FD5A65441EC51B84E40E9504133333383D6A65441713D0A473FE950417B14AEA7D6A65441713D0A473FE95041B81E855BD7A65441EC51B8FE3EE9504133333303D8A65441295C8FB23FE95041B81E857BD8A65441295C8F7240E95041B81E854BD8A65441295C8F3241E95041F6285CAFD7A65441EC51B8FE41E95041B81E858BD7A65441295C8F1243E95041B81E857BD8A65441AE47E1FA42E95041F6285CFFD8A65441EC51B87E43E95041B81E85CBD9A65441713D0A9743E95041B81E858BDAA65441295C8F6244E95041F6285CDFDAA65441295C8F3244E95041333333C3DBA65441AE47E14A47E950417B14AE77DCA65441295C8F5248E95041F6285C5FDCA65441AE47E1CA48E9504133333313DDA65441EC51B83E4AE9504133333373DDA65441713D0A574AE95041B81E852BDDA65441713D0A374CE95041B81E858BDDA65441AE47E1CA4EE950417B14AEC7DDA65441AE47E18A4FE950417B14AE57DEA65441AE47E1BA52E950417B14AE47DFA65441AE47E1EA52E95041B81E850BDFA65441713D0AA754E95041F6285C8FDFA65441AE47E17A56E950417B14AEA7DFA65441EC51B81E58E95041F6285C7FE0A65441AE47E1CA5AE950417B14AE87E1A65441EC51B8CE5BE95041D7A370BDE1A65441713D0A175DE95041F6285CCFE1A65441EC51B87E5EE95041F6285C2FE2A65441AE47E11A62E95041F6285C2FD9A65441295C8F3259E95041B81E853BD6A65441AE47E1EA4FE95041F6285CEFD3A65441EC51B8AE4FE95041333333D3D4A65441295C8FC24DE95041F6285CAFD4A65441AE47E11A4DE95041B81E85FBD3A65441295C8F324DE95041F6285C8FD3A65441713D0AD74BE9504133333323D3A65441295C8F824BE950417B14AED7D3A65441EC51B8CE4AE950417B14AE07D4A65441713D0AF749E9504133333383D3A65441AE47E11A4AE95041333333C3D2A65441EC51B88E45E95041F6285C4FD1A65441AE47E1EA43E95041B81E852BD1A65441AE47E18A40E950417B14AEE7CFA65441713D0AE73EE950417B14AEB7CFA65441333333933EE950413D0AD7D3CEA65441295C8F323EE95041F6285CEFCDA65441713D0AB747E95041B81E850BB5A65441295C8F024AE95041F6285C7FB3A6544109000000EC51B80E3EE950417B14AE77D3A65441713D0AA73CE950417B14AEA7D3A65441295C8F223CE95041B81E856BD3A65441713D0A173CE95041B81E85BBD1A65441713D0AA73CE95041F6285C1FD1A65441295C8F423DE95041B81E852BD1A65441713D0AC73DE95041B81E85BBD1A65441AE47E14A3EE95041F6285CCFD2A65441EC51B80E3EE950417B14AE77D3A6544107000000713D0AB74AE950417B14AE77D6A65441295C8FE24BE95041F6285CCFD5A65441713D0A974CE95041F6285C5FD6A65441AE47E15A4CE95041B81E852BD7A65441AE47E1FA4BE95041F6285CBFD6A65441295C8F224BE95041B81E85CBD6A65441713D0AB74AE950417B14AE77D6A6544111000000EC51B82E48E95041333333A3D7A65441EC51B8BE48E95041B81E85FBD6A65441713D0AD748E9504133333353D6A65441713D0AC749E95041F6285C4FD7A65441AE47E1BA49E95041B81E85EBD7A65441713D0A874AE95041B81E851BD8A65441EC51B8FE4AE95041F6285CDFD7A65441295C8F524BE950417B14AE57D8A65441AE47E1CA4BE950417B14AE57D8A65441713D0A674CE95041333333C3D8A65441AE47E18A4CE95041F6285CEFD9A65441295C8FB24BE95041B81E85BBDAA65441713D0A574AE950417B14AE97DAA65441295C8FA249E95041333333F3D8A65441295C8FA249E95041B81E854BD8A65441EC51B8EE48E950417B14AE57D8A65441EC51B82E48E95041333333A3D7A6544108000000295C8FB254E95041333333E3D9A65441EC51B8EE54E950417B14AE97DAA65441EC51B82E54E95041B81E854BDBA65441EC51B89E53E95041F6285C3FDBA65441AE47E18A52E95041B81E858BDAA65441713D0A9752E950417B14AE37DAA65441EC51B83E53E95041333333B3D9A65441295C8FB254E95041333333E3D9A6544113000000295C8FB224E9504133333373CBA65441EC51B86E23E95041B81E855BCBA65441713D0A8723E950417B14AE97CBA65441EC51B87E22E950417B14AE97CBA65441713D0A7721E95041F6285C0FCCA65441AE47E1EA1FE95041F6285C4FCBA65441EC51B80E20E95041F6285C2FCAA65441EC51B8AE1FE95041F6285CFFC9A65441EC51B8AE1FE9504133333333C9A65441EC51B86E20E95041333333A3C8A65441295C8FB221E950417B14AEC7C8A65441295C8F4222E95041B81E854BC9A65441295C8FD222E950417B14AEE7C9A65441713D0AC722E95041B81E859BCAA65441713D0AB723E95041F6285CBFCAA65441713D0A4724E9504133333393C9A65441295C8F4225E95041F6285C5FCAA65441EC51B84E25E95041F6285CEFCAA65441295C8FB224E9504133333373CBA6544109000000AE47E1AA3EE95041B81E852BC2A65441713D0AA73FE95041B81E85BBC2A65441AE47E1CA3FE950417B14AE57C3A65441713D0A473FE9504133333383C4A65441AE47E1AA3EE9504133333323C4A65441295C8FD23DE950417B14AE17C4A65441AE47E1EA3DE950417B14AE27C3A65441295C8F323EE95041F6285C4FC2A65441AE47E1AA3EE95041B81E852BC2A654410D000000EC51B8AE31E950417B14AED77CA65441713D0AE732E950417B14AEF77AA65441713D0AE732E950417B14AE4779A65441AE47E17A32E950417B14AEE778A65441AE47E13A33E95041F6285C9F78A65441713D0AC734E95041B81E856B79A65441295C8FD234E95041333333D37AA65441295C8F4234E95041F6285C6F7BA65441295C8F4234E95041333333837CA65441713D0A6734E95041B81E855B7DA65441295C8FE233E95041333333D37DA65441EC51B82E33E950417B14AEF77DA65441EC51B8AE31E950417B14AED77CA6544107000000AE47E1EA49E95041B81E85BBADA65441295C8F024AE9504133333353ACA65441295C8F224BE95041F6285CFFABA65441AE47E1FA4BE950417B14AEE7ABA65441295C8F524BE950417B14AE67ADA65441295C8FC24AE950417B14AEC7ADA65441AE47E1EA49E95041B81E85BBADA654410A000000AE47E17A4DE950417B14AEE7AEA65441AE47E1AA4DE950417B14AED7AFA65441713D0AF74CE95041333333A3B0A65441295C8F824BE95041333333A3B0A65441EC51B8CE4AE95041B81E852BB0A65441713D0A874AE95041B81E857BAEA65441EC51B88E4BE95041F6285C6FAEA65441AE47E1BA4CE95041F6285CDFADA65441AE47E1AA4DE950417B14AEF7ADA65441AE47E17A4DE950417B14AEE7AEA6544101030000000B00000038030000666666F6BAE85041666666A6DBA75441F6285CAFB9E850417B14AEE7D9A75441A4703DEAB9E85041CDCCCCECD7A75441713D0AA7BAE850411F85EBD1D6A7544152B81E05BBE85041A4703DFAD4A7544148E17A14BCE8504152B81E75D3A75441A4703D6ABDE8504114AE4701D0A7544166666606BFE85041D7A3702DCFA7544100000080C0E85041AE47E1DACEA754413D0AD733C2E85041B81E85EBCCA754411F85EB91C6E8504185EB51F8BEA75441D7A3705DCBE85041E17A140EB0A75441000000D0CAE85041000000B0AFA75441F6285C3FC9E8504152B81E75AFA75441F6285C7FC7E8504148E17AC4AEA754413D0AD7B3C5E85041E17A146EADA75441CDCCCC8CC4E850415C8FC2A5ACA754413D0AD733C2E85041D7A370DDABA75441C3F5283CC1E85041EC51B8CEAAA75441E17A14FEBFE85041C3F5287CAAA75441333333E3BEE85041E17A143EA9A7544114AE4741BFE85041CDCCCC8CA8A75441F6285CBFC1E85041295C8F32A9A75441CDCCCC1CC2E850413D0AD703A8A75441295C8F42CAE85041E17A146E9BA754417B14AE07CAE850418FC2F5C89AA7544114AE4771CAE85041000000309AA7544166666616CBE85041AE47E18A99A754419A999939CBE8504148E17A6498A75441333333D3CBE8504185EB517897A754410AD7A3A0CAE850419A99996996A7544185EB51B8CAE8504148E17AC495A754418FC2F568CBE85041C3F528FC94A75441713D0AA7CCE8504114AE472192A75441A4703DAACDE85041B81E85AB91A7544114AE47D1CEE8504152B81E8590A75441A4703D6ACFE850415C8FC2758FA75441AE47E16AD1E85041E17A141E8EA75441AE47E10AD2E8504185EB51488CA75441AE47E16AD4E8504185EB512888A75441F6285CBFD5E850418FC2F54887A75441713D0AA7D6E850413D0AD72387A75441E17A145ED6E85041EC51B89E86A75441B81E85EBD6E85041713D0AF784A75441EC51B80ED7E85041333333F383A7544152B81E35D8E850411F85EB5184A754410AD7A370D8E850415C8FC22585A75441EC51B8AED9E85041E17A140E85A75441EC51B88EDAE850415C8FC20586A754411F85EB71DAE850418FC2F5E886A754411F85EBC1DBE85041A4703D2A86A754415C8FC285DDE85041295C8F6284A75441AE47E10ADDE85041D7A3705D84A7544152B81E95DCE85041C3F528FC82A7544133333313DCE85041CDCCCCEC81A75441A4703D7ADBE85041E17A14FE7FA7544148E17A04DBE850410AD7A3707FA75441666666C6D9E85041D7A3706D7EA754413D0AD793D8E85041333333237DA75441CDCCCC2CD9E85041D7A370AD7CA754411F85EBF1D8E85041D7A370CD7BA75441666666E6D8E85041B81E854B7BA754417B14AE87D8E85041F6285C8F7AA75441D7A370BDDAE850417B14AE377CA75441AE47E14ADBE85041333333437CA754410AD7A3C0DBE85041A4703D8A7CA75441CDCCCCCCDBE850415C8FC2757DA754411F85EB91DBE85041B81E85EB7DA75441F6285C1FDCE850410AD7A3907EA754419A999989DCE85041A4703DDA7FA7544185EB5178DEE850415C8FC21580A754410AD7A340DFE85041F6285C7F80A7544114AE47F1DFE850410AD7A3707FA75441295C8FC2DFE85041F6285CBF7EA75441C3F5282CE0E85041D7A3706D7EA75441E17A14AEE0E850419A9999697DA75441713D0A67E0E850410AD7A3F07BA75441AE47E1AADFE850418FC2F5F87AA754417B14AE87DFE850411F85EB017AA75441666666B6DFE850419A99993979A754411F85EB81E1E85041000000C077A754415C8FC2A5E1E8504148E17AD476A7544185EB51F8E1E850413333335376A754415C8FC2A5E1E850415C8FC2C575A75441CDCCCC9CE2E850416666669675A75441EC51B81EE3E850418FC2F5E875A75441295C8FF2E3E85041E17A148E76A7544148E17A74E4E850419A99999976A754411F85EB01E5E85041B81E853B76A75441A4703DCAE5E85041A4703D8A75A7544148E17A34E6E85041713D0A8774A75441333333A3EBE85041AE47E14A70A75441B81E856BECE850410000001070A75441713D0A57EDE85041295C8F6270A7544148E17AE4EDE85041000000D071A754411F85EB71EEE8504185EB519872A75441000000B0EFE85041000000D071A75441C3F528BCEFE850410AD7A3C070A75441A4703D1AF0E850417B14AE2770A75441B81E855BF2E85041CDCCCC0C6FA75441B81E853BF3E850417B14AE676EA754415C8FC2A5F3E85041CDCCCC4C6DA754413D0AD723F3E850411F85EB316CA7544100000030F3E8504185EB51E86AA754415C8FC2A5F3E850415C8FC2B569A75441D7A3709DF4E85041EC51B88E68A7544185EB51D8F4E850418FC2F51868A75441333333F3F5E8504185EB516867A754417B14AE77F7E850411F85EB2167A7544114AE47F1F8E85041EC51B85E64A75441EC51B89EF8E85041EC51B87E63A75441C3F5284CF8E850413D0AD72364A754418FC2F528F8E8504148E17AD464A75441EC51B8BEF7E85041E17A143E65A754410AD7A380F6E85041C3F528EC64A754415C8FC245F6E8504148E17AF463A7544185EB5198F6E85041EC51B87E63A75441666666F6F6E850417B14AE5762A75441333333D3F6E85041713D0AA761A754410AD7A380F6E85041E17A14EE61A75441EC51B8FEF5E85041333333B361A754411F85EB41F5E85041B81E859B61A75441B81E85FBF4E85041CDCCCC1C62A7544166666656F4E85041CDCCCC3C61A754418FC2F5A8F4E850419A99993960A754413D0AD7C3F5E850416666661660A7544114AE4751F6E850415C8FC2A55DA754413D0AD783F7E850418FC2F5A85EA7544114AE4711F8E8504114AE47915EA75441EC51B89EF8E85041D7A3707D5FA75441C3F5280CFAE850418FC2F5E85CA75441C3F5280CFAE85041000000505CA75441C3F528ECFAE850415C8FC2C55CA75441000000E0FAE850415C8FC2E55BA7544114AE47D1F9E85041713D0AD75AA75441A4703D8AF9E8504152B81E555AA75441A4703D8AF9E8504148E17AA459A75441713D0A87F8E85041713D0AF759A75441C3F5284CF8E8504185EB519859A754417B14AE77F7E850411F85EB115BA7544114AE4731F7E85041A4703D1A5AA7544185EB5198F6E85041333333B35AA7544166666656F4E85041B81E852B58A7544133333333F4E850411F85EB9157A75441E17A146EF4E85041EC51B86E57A7544133333353F3E85041C3F5283C56A7544100000030F3E85041333333A355A7544133333373F2E850410AD7A35055A754417B14AE47F3E850418FC2F55854A754415C8FC2A5F3E85041713D0AB754A754415C8FC285F4E85041EC51B8EE53A75441713D0AE7F5E850417B14AED753A75441E17A142EF6E85041295C8F1254A75441A4703DEAF6E85041AE47E1FA53A75441AE47E10AF6E8504152B81E8553A7544148E17A14F9E850410AD7A3B052A754417B14AE17FAE85041E17A143E53A75441713D0A87F8E850411F85EBA151A75441AE47E13AFAE85041D7A370AD51A75441AE47E13AFAE850415C8FC2B550A75441D7A370ADF9E85041A4703DAA50A75441CDCCCCFCF8E850419A9999F94FA754413D0AD783F7E85041000000604FA75441EC51B8DEF6E85041713D0AC74EA754413D0AD7A3F6E85041295C8FD24EA7544185EB5198F6E8504185EB51484FA75441D7A370BDF3E85041D7A3700D4FA754415C8FC2A5F3E85041CDCCCC5C4EA75441C3F528ECF3E850417B14AEB74DA7544152B81ED5F3E850418FC2F5C84BA7544114AE47D1F2E850419A9999994BA75441E17A14CEF1E85041333333734AA75441713D0AF7EFE85041AE47E1AA49A7544114AE4781EFE850410AD7A34049A754415C8FC245EFE85041E17A140E48A75441713D0AF7EFE85041333333D347A75441A4703DFAF0E85041D7A3707D46A754419A999969EFE85041D7A3709D45A754417B14AEC7EFE85041713D0A7744A7544148E17AA4EFE85041666666C643A75441713D0AF7EFE8504152B81E1543A75441E17A14EEF0E85041CDCCCC4C42A75441E17A14CEF1E850417B14AE8742A75441295C8FA2F2E8504114AE472143A754410AD7A300F3E85041F6285C5F44A75441F6285C7FF2E85041A4703D7A45A75441D7A370BDF3E85041E17A140E48A75441000000F0F4E85041B81E859B48A754413D0AD7A3F6E85041B81E859B48A754410AD7A360F7E8504152B81E3549A75441295C8FB2F7E85041D7A370FD49A75441C3F5286CF7E85041666666964AA754417B14AE77F7E85041713D0A274CA75441713D0AA7F7E85041666666364DA7544152B81EC5F9E850419A9999594DA75441EC51B85EFAE85041F6285CEF4CA7544133333303FBE850411F85EB414DA75441E17A141EFCE850413D0AD7E34CA7544185EB5188FCE85041B81E85FB4CA754410AD7A390FBE850419A9999394EA75441A4703D6AFAE8504152B81E454EA75441D7A3708DFAE850413D0AD7A34EA7544166666606FCE85041F6285CAF4EA75441AE47E1FAFBE850411F85EB014FA7544185EB51A8FBE85041000000604FA754413D0AD793FCE85041AE47E19A4FA7544100000080FDE850419A9999194FA75441D7A370EDFEE850419A9999194FA7544100000040FFE85041F6285C8F4FA754416666666600E95041CDCCCCFC50A75441F6285C1F00E950418FC2F5B851A7544185EB510800E950413333330353A75441C3F528DC00E95041295C8F1254A754411F85EB5101E95041C3F5283C56A75441E17A143E02E9504114AE47E156A754416666660603E95041B81E856B56A754415C8FC2E503E95041F6285C5F56A754415C8FC2E503E95041EC51B8AE55A75441A4703DFA02E95041CDCCCC0C56A75441EC51B8EE02E950418FC2F57853A754416666662602E95041B81E85EB52A75441713D0AD702E95041CDCCCCFC50A7544148E17A4404E9504114AE471150A754417B14AE4705E9504185EB512850A75441AE47E12A07E95041B81E852B51A754415C8FC26507E95041B81E850B52A75441EC51B8FE07E9504185EB51E851A754419A99991909E950411F85EB8152A75441713D0AA709E9504185EB51A853A75441AE47E1FA0DE95041CDCCCC3C4FA75441B81E851B0DE95041C3F5286C4FA75441C3F528EC0CE95041D7A3700D4FA75441A4703D4A0DE950411F85EB414DA75441666666760CE950410AD7A3C04CA75441E17A14CE0AE950418FC2F5884DA754411F85EBE109E95041EC51B81E4DA7544185EB517809E95041E17A146E4CA754410AD7A38008E950413D0AD7034CA75441333333F307E95041000000304BA75441000000D007E95041666666964AA754416666661608E95041AE47E1AA49A7544114AE477107E950413333339349A754413333331307E9504114AE471149A7544148E17A2405E9504152B81E3549A75441A4703DBA04E950417B14AEA748A75441CDCCCC2C04E950410000009048A75441C3F5287C03E950417B14AEC747A75441F6285CBF02E95041B81E85BB47A7544152B81E3503E950411F85EB5147A75441D7A3701D03E950417B14AEE746A75441C3F5289C02E95041000000D046A75441A4703D3A01E950411F85EB9145A7544114AE47A100E9504152B81EB545A75441F6285C1F00E9504148E17A0445A75441AE47E15A00E950417B14AE4744A754410AD7A3F0FFE850417B14AE8742A754419A9999A9FFE85041713D0AF740A7544148E17AE4FFE85041295C8F5240A7544185EB5128FFE850417B14AE373FA75441F6285C1F00E95041F6285C8F3DA754410AD7A3F0FFE8504152B81E253DA754413D0AD71300E95041A4703D0A3CA754411F85EB7100E9504114AE47713BA75441F6285CDF01E9504152B81E653BA754418FC2F55803E950411F85EB213CA75441AE47E1AA03E9504152B81E253DA75441CDCCCC2C04E95041F6285CAF3CA75441B81E851B06E95041E17A14DE3CA754413D0AD7E306E95041D7A370CD3EA75441CDCCCCAC07E950410AD7A3F03EA75441AE47E10A08E9504114AE47A13FA754419A99991909E950417B14AE373FA75441295C8F0209E950410AD7A3D03FA75441F6285C6F0AE950419A99996940A754413D0AD7630AE950413333330341A754410AD7A3200BE950411F85EB3141A7544148E17A140BE950418FC2F57841A754411F85EBA10BE9504114AE474142A754411F85EB810CE9504114AE474142A754413D0AD7030DE95041666666E642A75441333333C30EE9504148E17A4443A7544185EB51680FE95041666666A644A75441F6285C8F10E9504114AE47C145A754417B14AE7710E95041295C8F2247A7544114AE47A112E95041666666F647A75441295C8F5213E950417B14AEC747A754413D0AD79315E95041295C8F4246A75441F6285C7F16E95041C3F5285C43A75441CDCCCC2C16E95041E17A14FE42A754411F85EBD116E950417B14AE8742A75441C3F5283C17E95041AE47E11A41A75441CDCCCC0C17E9504114AE478140A75441F6285C5F17E9504152B81EC53FA754417B14AE6716E950413D0AD7133FA75441E17A14DE16E950415C8FC2F53CA75441295C8FA216E95041000000803CA7544148E17A6415E95041713D0A073BA75441B81E85AB15E95041AE47E11A3AA754416666660615E95041CDCCCCDC38A754418FC2F55815E950413D0AD74338A754415C8FC29512E95041D7A3703D36A75441CDCCCCFC11E950419A99991936A75441AE47E17A11E9504148E17A5436A75441E17A14BE10E9504152B81E7535A7544148E17A740FE9504152B81E9534A7544148E17A940EE950411F85EBB132A7544152B81EA50CE95041A4703D9A32A754413D0AD7230CE95041B81E853B32A754413D0AD7430BE9504185EB511832A75441333333930AE95041A4703DDA30A75441CDCCCCFC0AE950419A99992930A75441713D0AA709E95041C3F5289C2FA75441B81E85DB07E950410000005031A754410AD7A3C006E9504148E17A4431A75441D7A3709D06E950419A9999E931A754417B14AE4705E950417B14AE4732A754413333335305E95041E17A148E32A754419A99990904E9504152B81ED532A754410000007003E95041D7A370DD31A75441E17A143E02E950415C8FC2C531A754416666664601E95041AE47E18A31A75441F6285CFF00E9504148E17A6430A754411F85EB3102E95041EC51B80E2FA754415C8FC2A505E95041CDCCCC4C30A75441295C8F6206E95041AE47E1AA30A754417B14AE0707E950410000007030A7544152B81E9507E95041C3F5289C2FA75441AE47E1EA08E95041E17A143E2FA75441AE47E1CA09E95041F6285CDF2EA75441EC51B89E0AE95041B81E850B2EA75441A4703D8A0BE950410AD7A3D02DA75441B81E853B0CE950410AD7A3102CA7544114AE47B10CE950415C8FC2B52CA7544152B81E650EE950419A9999A92CA754415C8FC2350EE95041EC51B88E2BA754411F85EB0110E950417B14AEB729A75441EC51B8FE0EE950410AD7A37029A75441000000800FE95041000000C028A754413D0AD77316E95041333333E328A754417B14AE0719E95041B81E858B2AA75441E17A142E1AE9504185EB51682AA75441D7A3705D1AE950415C8FC2152AA75441F6285CDF1AE9504114AE47212AA754417B14AEA71BE950419A9999E92AA7544185EB51581CE95041D7A3700D2BA75441B81E855B1DE950410AD7A3102CA75441295C8FA21DE9504185EB51682AA75441333333531EE95041A4703D0A2AA75441295C8FF220E95041666666C62AA75441E17A142E21E95041295C8FB22BA75441C3F5288C21E9504148E17A042CA75441F6285C6F23E95041B81E854B2CA75441A4703DAA23E9504185EB51082DA754411F85EBA124E95041C3F528FC2CA754411F85EBA124E9504185EB51282CA75441E17A143E26E95041E17A14FE29A75441AE47E1FA26E95041F6285CCF29A75441666666E627E95041E17A141E29A75441000000A027E95041F6285C0F28A75441000000A027E950411F85EBC125A754411F85EB8125E95041AE47E15A26A7544148E17AF424E95041D7A370AD26A7544148E17A1424E950419A9999D925A75441713D0AA722E95041A4703DAA25A75441F6285C8F22E9504148E17A7423A7544114AE473122E95041333333F322A754417B14AE9721E95041333333F322A7544148E17A7421E950419A99991924A7544114AE477120E95041666666B625A75441713D0A271FE950410000002026A75441713D0A271FE9504152B81EC526A75441AE47E16A1EE95041CDCCCCDC26A75441AE47E18A1DE95041C3F5282C26A754415C8FC2E51CE95041E17A14EE24A7544114AE47F11CE95041F6285CAF23A754410AD7A3001EE950418FC2F5A821A75441713D0A671DE95041EC51B83E21A754417B14AE871CE95041B81E85DB22A75441CDCCCC6C1BE950410AD7A38023A75441333333D31AE950415C8FC24523A75441F6285C5F17E95041C3F5288C23A754419A9999E916E95041A4703D0A23A75441666666E615E95041333333F322A754418FC2F57814E9504148E17A9422A75441B81E850B13E9504114AE477122A7544152B81EC512E95041713D0A0722A75441295C8F9211E95041C3F528CC21A7544152B81E2510E950418FC2F5C820A75441C3F528CC0DE95041EC51B83E21A7544152B81EA50CE95041B81E851B21A754411F85EB810CE950415C8FC28521A75441B81E855B0BE950419A99997921A75441CDCCCCDC0BE950415C8FC2A520A75441CDCCCCDC0BE9504152B81EF51FA754413D0AD7430BE95041CDCCCC2C1FA7544148E17A140BE95041AE47E1EA1CA754417B14AE2706E950417B14AE671FA75441F6285C3F06E95041D7A370DD1FA7544148E17A4404E950410000003020A7544185EB513804E9504114AE477122A75441F6285C9F03E95041713D0AC723A754419A99994902E95041B81E859B24A754417B14AEC701E95041C3F5284C25A75441EC51B82E01E95041F6285C2F27A754413333334300E95041713D0A2728A75441F6285C1F00E95041F6285CEF28A75441D7A370CDFFE85041A4703D2A29A754415C8FC2D5FEE85041D7A3702D2AA75441EC51B88EFEE85041000000602BA75441AE47E1BAFDE850419A9999C92BA75441666666E6FCE85041713D0A772BA75441F6285CEFFBE85041666666A62BA75441B81E857BF8E85041713D0AD72FA75441666666D6F7E85041A4703DDA30A75441C3F528CCF4E85041E17A147E2DA75441C3F528ACF5E8504185EB51282CA75441295C8FB2F7E850410AD7A37029A75441A4703DCAF7E8504185EB51C827A75441C3F5284CF8E85041F6285C2F27A75441F6285C4FF9E85041A4703DCA24A75441A4703D8AF9E850416666661623A754410AD7A390FBE8504152B81E351EA754415C8FC235FCE85041000000B01CA754417B14AE97FDE85041666666861AA75441EC51B8AEFDE85041F6285C5F19A75441D7A370EDFEE85041D7A3708D15A754410AD7A310FFE850413D0AD7C313A75441E17A14BEFEE85041295C8FB212A75441AE47E17AFFE8504114AE475111A754416666666600E950418FC2F5C80EA754413D0AD7F300E95041000000D009A7544152B81E7501E9504152B81EF506A754410AD7A3B001E95041E17A14FE05A754411F85EB3102E950411F85EB1105A75441295C8F0202E95041AE47E15A02A75441B81E85CB02E95041295C8F9201A75441E17A146E02E9504148E17A5400A75441B81E85CB02E9504185EB5168FFA654413D0AD7B302E950413D0AD743FBA654416666662602E95041EC51B89EFAA654418FC2F57802E95041713D0AA7F9A65441CDCCCC6C02E950415C8FC245F8A65441713D0AF701E95041B81E85FBF6A65441EC51B80E02E95041E17A148EF5A65441D7A370CDFFE85041B81E853BF5A65441CDCCCC8C01E950417B14AE07F7A654413333332301E950418FC2F568F8A65441713D0A1701E950419A9999F9F9A6544152B81E7501E95041713D0A67FBA65441F6285CFF00E9504152B81EA5FCA65441AE47E15A00E950415C8FC2B501A75441AE47E15A00E95041713D0A1703A7544185EB510800E950419A99994904A75441C3F528FCFFE85041A4703DDA05A7544185EB5128FFE8504185EB511807A75441B81E856BFEE85041F6285CDF0AA7544114AE4701FEE850415C8FC2050CA754415C8FC2F5FDE85041713D0A870CA7544152B81E25FEE85041295C8FC20CA7544185EB5148FEE8504114AE47D10DA75441333333E3FBE8504148E17A7411A75441AE47E15AF9E8504185EB516818A75441E17A14EEF7E85041A4703D3A1CA754418FC2F548F7E85041D7A3703D1DA7544133333313F5E85041713D0AE722A7544185EB51F8F3E85041666666F623A75441B81E853BF3E85041F6285C2F27A75441A4703DDAF1E850410AD7A3302BA75441CDCCCC8CEFE85041D7A3701D30A754419A999989EEE8504152B81E1531A7544152B81EB5EDE8504148E17A2432A7544114AE4701ECE850413D0AD7A335A754415C8FC215EBE850415C8FC20537A754419A999909EBE85041A4703DAA37A754410AD7A330ECE850410000009036A7544114AE47E1ECE8504114AE475135A75441F6285CBFF0E8504152B81ED532A75441295C8FC2F1E850411F85EBD131A75441713D0A67F2E8504148E17A6430A75441295C8F82F3E8504148E17A842FA75441F6285C8FF7E85041AE47E18A31A75441713D0A07F5E85041333333F334A75441E17A14CEF1E85041713D0A6738A75441E17A149EEDE850417B14AE573EA754413D0AD733EDE85041295C8F923EA75441C3F5283CECE85041D7A370AD3FA754417B14AE27EDE850418FC2F59840A754417B14AE27EDE8504114AE476141A75441EC51B88EECE850410AD7A37042A75441D7A3702DEBE85041333333E341A75441E17A14FEEAE850419A99992942A754415C8FC215EBE85041D7A370BD44A75441333333A3EBE850413D0AD73345A754413D0AD773EBE85041295C8F4246A754413D0AD793EAE8504185EB51B846A7544166666626E9E85041B81E85DB46A7544185EB51C8E8E85041AE47E10A47A754417B14AE17E8E8504152B81E9546A75441F6285C4FE7E8504152B81E7547A75441CDCCCC3CE5E85041C3F5280C4BA75441713D0AA7E5E85041CDCCCCBC4BA754411F85EBE1E5E850417B14AED74CA754418FC2F5B8E7E8504148E17AD44BA75441AE47E11AE9E8504114AE47B14BA75441295C8F32E9E8504148E17AB44CA7544166666646E8E85041AE47E1BA4EA754417B14AE37E7E85041666666F64EA75441A4703DAAE6E8504114AE47514EA75441D7A370EDE5E85041713D0AE74DA754413D0AD7C3E3E8504114AE47314FA754413D0AD7E3E2E850413D0AD7834FA7544166666656E2E8504114AE47314FA75441F6285C2FE1E85041A4703DCA4FA75441E17A14EEDEE8504148E17AF451A754413D0AD783DEE85041AE47E11A53A754419A999989DCE85041B81E858B55A75441713D0A77DAE850418FC2F5D857A7544148E17A44D9E850418FC2F5B858A754413D0AD7F3D5E85041A4703DBA5CA75441713D0AE7D1E850419A99991961A75441000000C0D0E85041B81E857B62A75441A4703D5ACAE850410AD7A33068A75441C3F5287CC6E85041EC51B84E6AA75441EC51B82EC4E850419A9999496CA7544148E17A04C2E85041CDCCCC0C6FA75441D7A3700DC1E850410000001070A754411F85EB61BEE85041AE47E1CA73A754415C8FC275BDE8504185EB513875A7544114AE4751B9E85041E17A14BE7AA75441B81E85FBB7E8504185EB51287BA7544114AE4791B7E850411F85EBC17BA7544133333333B7E850417B14AE577BA754413D0AD7E3B7E85041333333837AA7544166666636B8E8504114AE477178A75441713D0AA7BAE85041295C8F3277A7544114AE47F1BBE850413D0AD74375A754419A9999B9BCE85041295C8F0273A7544185EB5188BFE850417B14AE2770A754410AD7A370BFE85041AE47E18A6EA754418FC2F538C0E850418FC2F5786CA754410AD7A330C1E85041666666466BA754411F85EB91C2E85041C3F528DC6AA75441C3F528DCC3E85041E17A149E69A75441B81E85EBC4E850413D0AD73369A75441333333B3C5E850418FC2F57868A75441713D0AB7C6E85041EC51B8AE67A75441713D0A97C7E850410AD7A35067A7544100000030C8E85041713D0A0766A754417B14AE07CAE85041F6285C2F64A75441E17A140ECCE85041F6285C4F63A754411F85EB81CFE85041333333F35FA7544148E17A94D1E85041000000F05EA754417B14AE97D2E850410AD7A3C05EA75441AE47E17AD4E850418FC2F5C85DA754415C8FC275D6E85041C3F5289C5AA75441C3F528BCD6E85041000000D058A7544114AE4761D7E85041C3F528FC57A7544100000050D9E85041EC51B88E56A754413D0AD773D9E85041333333C354A754413D0AD783DEE850413D0AD7C34DA7544114AE4711DFE85041A4703D4A4CA7544100000070DFE8504148E17AF44AA7544133333373E0E850419A9999D949A75441F6285CEFE2E85041F6285C1F46A75441D7A3702DE4E85041713D0A5745A75441713D0AC7E4E8504152B81EF543A75441CDCCCC7CE3E85041CDCCCC4C42A7544114AE4771E3E85041333333E341A754415C8FC2D5E2E85041EC51B87E41A7544133333393DFE850410AD7A3A03FA754410AD7A350D9E850417B14AE074AA75441CDCCCC1CD4E850410000002051A7544152B81E25D3E85041E17A143E53A754417B14AE77D3E85041B81E85AB54A7544185EB5148D3E85041F6285C5F56A75441E17A14DED2E850416666668657A75441CDCCCC5CD2E850417B14AE0758A754411F85EB41D1E850413D0AD7D359A7544148E17AD4CFE85041333333935BA75441A4703D8ACEE85041E17A14AE5CA75441E17A14EECCE8504152B81EB55EA75441EC51B8BECCE85041E17A144E5FA75441295C8F42CAE85041333333B361A754410AD7A3E0C8E85041666666B662A75441C3F5287CC6E850415C8FC25565A754413D0AD7D3C4E850413D0AD77367A754418FC2F5B8C3E850417B14AE7768A75441B81E854BC2E85041AE47E17A69A75441D7A3702DC0E8504114AE47816BA754410AD7A370BFE85041000000706DA75441EC51B87EBCE85041A4703D7A70A7544100000040BBE85041AE47E10A72A75441E17A140EBAE85041EC51B8DE72A7544100000010B7E850410AD7A3E076A75441295C8F82B6E850417B14AED777A75441295C8F82B4E850416666662678A75441A4703D1AB3E850419A9999197AA75441333333D3B2E8504148E17A347BA7544100000090B3E850415C8FC2B57BA75441000000B0B2E85041AE47E13A7DA75441C3F528BCB2E85041295C8F327EA7544114AE47F1B4E85041C3F5287C7FA7544152B81EF5B5E85041CDCCCC4C7FA7544185EB5118B6E85041713D0AB77FA754415C8FC205B4E850413D0AD73382A754415C8FC2E5B4E85041C3F528FC82A75441E17A14AEB5E850415C8FC26583A7544166666656B7E850415C8FC26583A7544166666636B8E85041F6285C1F83A75441E17A140EBAE85041333333F383A75441A4703DEAB9E85041713D0AF784A754417B14AE77BAE8504185EB515886A75441CDCCCCFCBBE850413333335388A75441EC51B87EBCE8504114AE47B188A754410AD7A3D0BCE85041C3F528CC89A754410AD7A3D0BCE8504148E17A948AA75441295C8F72BCE85041713D0AE78AA75441F6285CAFB9E85041A4703D2A8AA754415C8FC245B9E85041E17A146E89A75441E17A144EB8E8504148E17AD488A75441AE47E14AB7E85041713D0A2789A75441AE47E16AB6E85041EC51B85E88A7544166666676B6E85041C3F5282C87A75441D7A370DDB5E850417B14AE8786A7544166666676B6E8504148E17A8485A7544152B81E15B5E85041000000B084A754417B14AEA7B3E850417B14AEC784A75441CDCCCC8CB2E850410AD7A36085A7544148E17AC4B1E85041295C8F0285A7544166666666B1E850410AD7A38084A7544114AE47A1B1E8504148E17AC483A754417B14AEC7B2E850413D0AD71383A75441C3F528BCB2E850411F85EB9182A754415C8FC225B3E85041AE47E14A82A75441CDCCCC6CB3E85041B81E856B81A75441C3F528DCB1E850413D0AD73382A75441713D0A57B0E85041295C8F6282A75441C3F5283CAFE85041295C8F4283A75441F6285C7FAEE8504152B81EB582A754415C8FC2F5AEE85041B81E856B81A7544148E17A04B0E85041CDCCCC0C81A75441A4703D3AB2E85041B81E85AB7FA754417B14AEE7B1E85041333333E37EA7544148E17AE4B0E8504148E17A847EA7544114AE47E1AFE85041713D0AD77EA75441295C8F12AFE85041A4703DBA7FA754417B14AEF7ABE8504148E17AE482A75441D7A3706DACE85041F6285C1F83A75441D7A3708DABE85041295C8F2284A75441EC51B82EABE85041713D0AF784A75441A4703D8AAAE8504148E17A8485A7544166666666AAE850417B14AE8786A75441295C8F92A9E85041EC51B87E87A75441AE47E19AA8E85041B81E853B88A7544152B81E45A7E850411F85EB6189A75441EC51B85EA4E85041C3F5284C8DA7544185EB5118A4E85041713D0A678EA7544133333373A3E85041E17A145E8FA754413D0AD763A2E85041C3F5287C91A7544114AE47F1A2E85041333333A392A75441B81E859BA1E85041CDCCCCCC94A7544185EB5198A0E85041F6285CFF95A75441000000D09FE850416666664696A75441AE47E10AA0E850410000009097A7544152B81E959FE85041A4703DFA97A75441CDCCCCCC9EE850419A99992998A754417B14AE279EE850415C8FC2E598A75441CDCCCCEC9DE8504152B81EF599A75441C3F5283C9DE85041AE47E16A9AA754417B14AE479DE850418FC2F5C89AA75441EC51B8CE9BE850413D0AD7039BA75441295C8FE29AE850419A9999599CA75441295C8FE29AE850411F85EBE19EA75441E17A143E9AE85041F6285C4FA0A754411F85EB319AE8504100000000A1A754410AD7A3D098E85041295C8FF2A3A75441B81E854B97E850418FC2F598A8A75441AE47E19A96E85041E17A143EA9A75441B81E858B95E85041A4703DBAABA754411F85EB2195E8504148E17A24ACA754417B14AED793E85041E17A144EAEA75441A4703D2A94E85041B81E85DBAEA75441295C8F1294E85041B81E859BB0A7544148E17AB493E850418FC2F528B1A754413D0AD72392E850419A9999B9B2A75441EC51B85E92E85041CDCCCCBCB3A754418FC2F5E891E8504148E17AB4B4A75441E17A140E8FE85041713D0AC7B6A75441B81E859B8FE850410AD7A330B7A7544114AE471190E850419A999919B7A754419A9999598DE85041B81E85EBBAA75441B81E854B89E85041C3F528ACC4A754418FC2F5B886E85041295C8F72CBA75441F6285CDF87E8504185EB51A8CDA754418FC2F5F884E850419A9999E9CFA754418FC2F51884E85041A4703D5AD2A7544152B81E9586E850413D0AD713D2A754411F85EB5187E85041C3F528DCD2A754413D0AD7F386E85041C3F528BCD3A75441C3F5282C8BE85041EC51B89ED4A75441F6285C5F8BE8504166666606D5A75441295C8FA28AE85041333333B3DBA75441AE47E16A8BE85041B81E859BDBA754415C8FC2C58AE85041D7A3706DDFA7544114AE47718DE850411F85EB41E0A75441A4703D8A91E850415C8FC215E1A75441D7A3704D94E85041B81E859BDBA754410000008095E8504148E17A54DBA754410000006096E850418FC2F548DBA75441D7A370ED96E8504148E17A34DCA754410AD7A33096E850419A999989E4A75441666666A696E85041D7A3708DE5A7544152B81E2596E850418FC2F598E5A75441333333A395E850411F85EB51E5A7544152B81E4595E85041E17A141EE7A75441D7A3704D94E8504100000010EAA7544152B81E6594E85041295C8F42EBA75441F6285C0F93E850410AD7A340EEA75441713D0A4792E8504133333393EEA754411F85EBA191E8504166666696EFA75441B81E857B90E85041AE47E16AF0A754413D0AD7838FE85041AE47E16AF0A75441713D0AC78EE85041CDCCCC9CF1A754411F85EBE18FE85041713D0A07F2A754411F85EBE18FE850413D0AD7C3F2A7544148E17A548FE85041AE47E1BAF3A75441EC51B8DE8EE85041D7A370EDF4A75441EC51B8DE8EE85041A4703D8AF6A754413D0AD7E38CE85041000000A0F9A75441D7A3709D8CE8504114AE4701FBA75441E17A14AE8AE85041AE47E1EAFEA75441295C8F628CE850411F85EB1100A85441666666168EE850410000005001A8544148E17A248BE850411F85EB1100A85441AE47E18A8AE8504185EB515800A854417B14AE678AE85041AE47E14A03A8544185EB515889E85041B81E85FB03A854411F85EB3188E85041B81E859B06A85441C3F528BC87E85041A4703DAA07A85441B81E850B87E85041CDCCCC9C0AA854419A99998986E850417B14AEB70BA8544114AE47C185E85041CDCCCC8C10A854415C8FC2D584E850415C8FC26516A854411F85EBB184E8504185EB517818A854418FC2F51884E85041E17A14AE1AA85441AE47E1BA83E850418FC2F5F81FA854411F85EBD183E85041D7A3706D23A8544114AE470184E8504114AE472125A85441EC51B8AE83E850419A9999E925A8544148E17AC486E850411F85EB312AA854418FC2F51884E850410AD7A3C02EA85441C3F5283C84E85041295C8FF22FA85441CDCCCCCC85E850411F85EB2130A85441EC51B84E86E85041C3F5288C30A85441EC51B84E86E8504114AE473131A85441EC51B86E85E850419A9999F931A854410AD7A31085E85041713D0A6733A854418FC2F51884E85041CDCCCCDC33A85441EC51B88E84E8504114AE470138A854419A9999E983E85041F6285C3F39A85441B81E85AB82E8504114AE47A13AA85441C3F5285C83E85041F6285CFF3AA85441295C8F0287E85041713D0A473AA85441D7A3701D89E85041D7A3703D3CA854410000009088E85041C3F5289C3CA854416666662688E8504152B81E353DA8544148E17A8488E85041CDCCCC2C3EA854411F85EB3188E85041295C8F4241A85441295C8F2287E850418FC2F56842A854419A9999898AE8504152B81E8546A854415C8FC2858CE85041713D0A0748A85441C3F528AC8DE850415C8FC23548A85441000000D08DE85041000000C047A8544148E17A3490E85041C3F528CC47A854417B14AE3791E85041666666E648A854411F85EB8192E850413D0AD77349A85441EC51B85E92E850410AD7A37048A85441CDCCCC9C93E8504152B81EA546A85441CDCCCC9C93E850417B14AE1746A85441295C8F7291E85041C3F5282C45A85441CDCCCCFC90E8504114AE471144A854411F85EB6190E85041000000D043A85441B81E85FB8EE85041CDCCCCDC3EA8544185EB51788FE85041D7A3701D3DA85441B81E859B8FE85041295C8F223BA854415C8FC20590E85041B81E852B3AA854415C8FC2258FE85041A4703D5A3AA8544114AE47518EE8504114AE47C139A85441EC51B8DE8EE850410AD7A31039A85441B81E85BB8EE8504185EB518836A854410AD7A3608FE85041333333E335A85441EC51B89E90E85041B81E85AB36A85441C3F5282C91E85041333333E335A8544148E17AD492E85041AE47E11A35A85441EC51B83E93E85041E17A143E35A854416666669693E8504152B81EA534A85441D7A370ED94E850419A99997932A854413D0AD71398E85041B81E859B2AA85441713D0A3798E85041A4703D3A29A85441B81E854B97E850418FC2F5F826A854417B14AE9795E85041EC51B8CE24A8544114AE47E196E85041B81E850B22A85441B81E852B98E85041713D0AF722A85441713D0AF799E8504148E17A8423A85441EC51B8CE9BE850416666664622A8544185EB51789FE85041A4703D5A18A85441B81E855BA7E850413D0AD7B307A8544152B81EA5A9E85041295C8FC2FFA754410AD7A370AAE8504114AE4761FDA75441295C8FE2AEE850411F85EBE1F1A75441A4703D9AAFE8504148E17AF4EFA75441EC51B86EB0E85041295C8FE2EDA754417B14AE07B1E85041295C8F02EDA7544114AE47C1B0E85041A4703D5AEBA75441F6285CFFB1E8504185EB51F8E9A7544148E17AA4B2E85041CDCCCC2CE8A7544185EB5178B3E850410AD7A390E6A75441F6285C9FB4E85041713D0A17E5A754418FC2F508B5E8504152B81E05E3A75441C3F5280CB6E85041E17A14FEE0A7544100000010B7E85041F6285C2FDEA754411F85EB11BAE85041713D0AC7DEA754413D0AD793BAE85041C3F5285CDCA75441666666F6BAE85041666666A6DBA754410E0000009A9999A997E8504100000010EAA7544152B81EE597E85041F6285C5FE9A754410AD7A31097E85041C3F5283CE9A754417B14AE7796E85041EC51B8AEE8A754413333338396E85041B81E85ABE7A754410000004097E85041F6285CBFE6A75441B81E854B97E850413D0AD7D3E5A754415C8FC29598E850410AD7A3B0E5A75441EC51B82E99E8504133333323E5A754418FC2F59899E85041C3F528BCE5A75441A4703D1A9AE8504152B81E15E8A754415C8FC27599E85041000000F0EAA75441D7A370AD98E8504133333313EBA754419A9999A997E8504100000010EAA754410C0000001F85EB6193E85041B81E855B2CA85441CDCCCCBC92E85041E17A146E2EA8544114AE47D191E850411F85EB412FA85441C3F5284C90E8504148E17AB42EA854417B14AE5790E85041B81E853B2DA854417B14AE3791E850417B14AE872BA854417B14AE1792E8504185EB51782AA85441F6285C2F92E850411F85EB7128A85441D7A3706D93E850415C8FC26528A854419A99995994E85041B81E85BB29A85441A4703D2A94E85041D7A3701D2BA854411F85EB6193E85041B81E855B2CA854410D000000EC51B8AEEBE850411F85EBD143A754418FC2F5F8ECE850411F85EBD143A7544166666686EDE8504114AE472143A754410AD7A310EDE85041713D0AB742A75441F6285C3FEDE850415C8FC23542A7544166666666EEE85041C3F5289C41A754419A999989EEE85041A4703DFA41A7544148E17AA4EFE850413D0AD79342A7544148E17AA4EFE850411F85EBF142A754411F85EB51EFE85041713D0A9743A75441F6285CFFEEE85041AE47E14A45A754419A9999C9ECE8504185EB51F844A75441EC51B8AEEBE850411F85EBD143A7544112000000AE47E18AF2E8504114AE478140A75441A4703DDAF1E8504114AE47A13FA7544185EB5138F2E850410AD7A3F03EA7544185EB5118F3E850418FC2F5F83DA75441EC51B83EF4E8504185EB51483DA754419A999959F5E850418FC2F5183DA75441B81E859BF7E85041713D0A273AA7544114AE47F1F8E85041CDCCCC7C3BA7544152B81EE5F8E8504148E17A743CA754418FC2F528F8E850411F85EBE13DA754417B14AE57F8E850413D0AD7133FA75441CDCCCC1CF8E85041295C8F5240A75441B81E85BBF6E850410AD7A3B040A75441F6285CCFF5E850418FC2F59840A7544166666636F5E85041B81E85CB41A754410AD7A3C0F4E85041333333E341A75441E17A148EF3E8504114AE478140A75441AE47E18AF2E8504114AE478140A754410C0000001F85EBE1F7E85041B81E85BB35A75441AE47E15AF9E8504185EB519835A75441AE47E15AF9E85041D7A3703D36A754411F85EBA1F9E85041C3F5286C36A7544114AE47F1F8E850411F85EBE136A75441295C8F92F8E85041F6285C6F37A75441295C8F92F8E8504114AE47F137A7544114AE4731F7E850415C8FC2E537A75441C3F5288CF6E85041EC51B89E37A75441AE47E10AF6E85041B81E859B36A754413D0AD7A3F6E850419A99991936A754411F85EBE1F7E85041B81E85BB35A754410B000000C3F528BCB2E850411F85EBB1BEA75441E17A14EEB3E85041C3F528BCBAA75441CDCCCC4CB4E85041CDCCCCDCB9A7544152B81EF5B5E850417B14AE17BAA7544152B81EF5B5E850410AD7A3B0BAA7544185EB51F8B6E850418FC2F578BBA754419A999979B7E85041666666A6BEA7544133333353B6E85041EC51B82EC1A75441D7A3701DB4E8504114AE47A1C0A7544133333393B4E8504152B81EB5BFA75441C3F528BCB2E850411F85EBB1BEA75441110000000AD7A340A2E850415C8FC2F5FAA75441E17A14EEA1E8504148E17A04FCA75441E17A140EA1E85041C3F528FCFCA75441B81E85BBA0E8504185EB5148FBA75441666666F6A0E85041D7A3702DFAA7544100000090A1E850418FC2F578F8A75441EC51B89EA2E85041A4703DAAF5A7544185EB5138A3E850411F85EB41F2A75441666666B6A2E85041F6285C0FF1A754415C8FC2C5A3E8504166666696EFA754418FC2F5C8A4E85041EC51B87EEFA754419A999979A5E850417B14AEA7EDA75441CDCCCC7CA6E85041333333D3ECA75441333333A3A7E85041333333D3ECA7544166666616A7E8504185EB5118F0A7544133333393A3E85041B81E856BF8A754410AD7A340A2E850415C8FC2F5FAA7544109000000CDCCCCECAFE85041333333D3DAA754418FC2F538AEE850411F85EBE1DBA7544166666606ADE850413D0AD783DBA7544148E17A44AEE85041713D0A97D6A75441B81E856BAFE85041E17A14AED6A7544114AE47E1AFE85041295C8FA2D6A754418FC2F5D8B0E85041CDCCCCECD7A754411F85EB91B0E8504152B81E95D9A75441CDCCCCECAFE85041333333D3DAA754410E000000C3F5280CB6E8504100000010D8A754410AD7A300B6E8504152B81E15D6A75441E17A146EB7E85041CDCCCC8CD3A7544166666656B7E8504166666646D3A75441EC51B81EB8E85041295C8F22D3A7544166666636B8E850418FC2F518D0A75441E17A142EB9E850413D0AD793CEA7544148E17A54BAE85041295C8FF2CEA7544100000060BAE85041EC51B8AECFA75441713D0AE7B8E8504166666686D1A754419A999959B8E8504133333343D2A7544114AE4771B8E850413D0AD7D3D3A75441EC51B83EB7E850410AD7A300D7A75441C3F5280CB6E8504100000010D8A7544114000000A4703D8ABCE8504152B81E15C4A7544100000020BCE850410AD7A300C5A75441D7A370ADBCE85041E17A146EC6A7544148E17AD4BDE8504114AE47D1C4A75441713D0A27BEE85041295C8FC2C3A7544185EB51A8BEE850415C8FC2E5C3A754415C8FC255BEE850418FC2F5C8C5A75441A4703D4ABEE850418FC2F588C7A75441B81E85EBBDE85041C3F5286CC9A754417B14AE17BDE850419A9999D9CAA75441295C8F72BCE8504100000020CBA75441D7A370EDBAE85041C3F5282CCBA7544100000060BAE8504166666616C8A75441F6285C8FBAE850415C8FC285C6A75441C3F5284CBBE8504166666656C6A75441C3F5286CBAE8504133333373C4A754419A999919BAE85041713D0AD7C2A75441F6285C8FBAE85041B81E859BC2A754411F85EBE1BAE850411F85EB11C3A75441A4703D8ABCE8504152B81E15C4A75441
+</a>
+
+<b>
+0106000000010000000103000000060000007D06000085EB51789FE85041A4703D5A18A85441DE67662699E8504140F4287C16A85441516666F69DE850418990C25506A854418072C8DEA0E850419437D9F6FBA754414B8F28DCA0E85041704CC7DFFBA75441DB5F26CCA0E850415E9E1053FBA754410B25D710A1E85041F87C01B3F9A754417E6D208DA1E85041DF55EA3BF8A75441926A88ADA2E85041EF4EC6A7F5A754416FE3E6E4A2E8504112DE9A26F4A75441BA8B6C34A3E85041F256A368F2A75441EA25A3E6A2E850414159C281F1A7544174F2DEBEA2E850419275BA0BF1A75441111CD9B7A3E8504145355DAFEFA75441043B9DD8A4E85041D24B736BEFA75441A7B45B8AA5E85041DDAA94C0EDA75441B9A59575A6E8504167F079E7ECA75441DBD747A1A7E85041D51AD4C1ECA75441A86D68EFA9E8504108396FA2E7A754415A28DB9FADE850419052A4E0D8A75441C95A607DADE850415BD28FB8D8A754411B681BC8ADE850418C53A33FD8A754412CEB4635AEE850419C4BF58AD6A75441BC039D8CB3E850412FE6E15DC6A754416476F5E8B4E85041471780ECC0A7544178CB9B20B4E85041D2B777A1C0A75441CA59317BB4E85041A06E1EA7BFA75441D561BF1BB4E850413A189A49BFA7544105DFB2B3B2E8504133D2BDA0BEA754418789443BB3E850411DBAEEEDBCA7544107C08DEEB3E85041311EE9AEBAA7544105FDE224B4E8504170302986BAA75441B3F15E68B4E850411A5794CCB9A7544152CFA7ECB5E8504159F4D40EBAA754418B2D8CF7B5E8504143AC3EAFBAA7544176AB84F3B6E8504131BEA06CBBA75441BBF853FDB6E85041A06A191DBCA754411435C172B8E85041C7FE6A74BAA754412B7199C4BEE8504193C9E549B3A75441268479A8C4E8504151CA8CB8ACA75441CDCCCC8CC4E850415C8FC2A5ACA754413D0AD733C2E85041D7A370DDABA754415E20B3D2C1E85041A26E4373ABA754413B632917C1E850416EB005CAAAA75441F3769CECC0E85041D09012BAAAA75441E17A14FEBFE85041C3F5287CAAA75441333333E3BEE85041E17A143EA9A754418E8E8519BFE8504103FCB7D7A8A75441DEEB8132BFE8504162335F89A8A75441624B8440BFE85041B7F93C8EA8A7544114AE4741BFE85041CDCCCC8CA8A75441F6285CBFC1E85041295C8F32A9A75441A484BBD1C1E85041AFC409F7A8A75441DC0DE60DC2E850413B0B3127A8A7544100B28A05C2E850416412C124A8A754416CD3FE48C2E8504137E192BFA7A754419D70C0E3C5E8504173063E2EA2A754411DF2E65CC6E850415F89326FA1A75441234CF0D0C9E850416558411B9CA75441CD0A0BE1C9E85041EB80B5049CA75441768DC13DCAE85041BB1880759BA75441E71C7A22CAE8504155581F1C9BA754417150CA01CAE850415F7EE5C39AA7544149035E21CAE85041F59EC0A39AA7544114AE4771CAE85041000000309AA754418B2905C4CAE85041898442DD99A754419F6588FDCAE850419ED4F67A99A75441BEB02726CBE8504139928F6A98A75441531D99B6CBE85041838D467097A7544190D81CDECAE85041FAC9E29F96A754410AD7A3A0CAE850419A99996996A754410BF68EABCAE85041CD4B771D96A75441AF0BBBA5CAE85041F7B24AEA95A75441AE78CFD6CAE850410051517C95A7544132439B70CBE8504143D115B994A754410439AA29CCE85041971E090293A7544198BB9691CCE850410BFE915292A75441713D0AA7CCE8504114AE472192A75441EAEBA1B1CCE85041C7B4771C92A75441D77BBDB3CCE8504136B5E81892A75441C0B619E1CDE85041342A517191A75441075233A8CEE85041DAAB518C90A75441754BBE4FCFE85041CA41C4A48FA75441A4703D6ACFE850415C8FC2758FA754414AFBD578CFE85041A989F96B8FA75441ABE42784CFE85041987B545C8FA75441BDA89DB9D0E85041B42D797D8EA75441E1C77FE9D0E85041C29D705B8EA754411C265B4DD1E85041AD8ADF318EA75441E1FA6E50D1E85041C95ECF2F8EA7544165F0206FD1E85041F21C9B118EA75441AE47E10AD2E8504185EB51488CA75441AE47E16AD4E8504185EB512888A75441F6285CBFD5E850418FC2F54887A75441B8D68FA0D6E850412DC0E02487A754419DECF586D6E850416B2A4FE986A75441E17A145ED6E85041EC51B89E86A754418A7C1877D6E850412947C95386A75441547AE07CD6E85041BD0BA92586A75441AFB2B6EAD6E8504118EEF7C884A75441A591E20DD7E850416C68B9EE83A75441ECB43F28D8E850412E69D64584A75441B576632BD8E8504141FCC94E84A7544152B81E35D8E850411F85EB5184A754414900E257D8E85041334EA5CD84A754414CC7A176D8E85041065D502585A75441EC51B8AED9E85041E17A140E85A75441EB1287BED9E8504199088F1F85A7544196FA22D5D9E85041017C831E85A754413F14BB65DAE850419B0870D885A75441EC51B88EDAE850415C8FC20586A75441B550EA8DDAE8504166B51B0C86A75441E74A0C9EDAE85041312CDA2086A75441B3A07183DAE85041C65AB75E86A754411F85EB71DAE850418FC2F5E886A754411F85EBC1DBE85041A4703D2A86A754415C8FC285DDE85041295C8F6284A75441AE47E10ADDE85041D7A3705D84A754414E7C2600DDE85041B841403D84A754415C5642F6DCE8504106C8633B84A75441876491BDDCE8504162FA807583A754411B16A799DCE850411D0FC20983A7544127B64A8ADCE8504133268BE582A7544133333313DCE85041CDCCCCEC81A75441A4703D7ADBE85041E17A14FE7FA754418E74C516DBE8504126059C867FA75441B000EFFCDAE85041E3927D6A7FA75441ADEEA5CCDAE850415BAB24437FA75441A5032926DAE85041CAE18FC27EA754416E76F9BDD9E85041783F55747EA754410F63DBF5D8E8504165C9C98C7DA754413D0AD793D8E85041333333237DA7544168C2F7AFD8E85041C78C8B0D7DA75441F201C51BD9E85041A29ED79E7CA75441579F21FCD8E85041B8DCA81B7CA75441687C1DDCD8E85041243B1FAD7BA754412F390BE4D8E85041150C9B817BA754413D99A2E1D8E850416EEA534F7BA754418124C96DD8E850419AF965727AA75441D00275AAD9E85041B65B71697BA754417E5A5288DAE85041785DD70F7CA7544194848491DAE850417CD82A167CA75441045E98DFDAE85041213D763A7CA75441AE47E14ADBE85041333333437CA754410AD7A3C0DBE85041A4703D8A7CA7544162F5B8C1DBE85041CDC9349F7CA75441F76415CBDBE85041E93A41A57CA75441EDBA89C6DBE85041ECA079FC7CA75441CDCCCCCCDBE850415C8FC2757DA754414BC4C0BEDBE8504160A0DA917DA754419FB95EBEDBE85041E2D933997DA75441B79DB4A8DBE85041AC4086F57DA75441F03D17CFDBE85041F79AEE327EA75441F6285C1FDCE850410AD7A3907EA754413953EF7FDCE85041C33941BC7FA754418B8238A4DCE85041575871DD7FA7544185EB5178DEE850415C8FC21580A754410AD7A340DFE85041F6285C7F80A75441A20240C1DFE85041534A40BA7FA75441584750EFDFE8504164AC2D697FA7544123497CE5DFE85041B1AFE2437FA754418A1E17B9DFE8504152AC62C37EA75441DD9C6732E0E85041241F41477EA754414DD85F8DE0E85041B21CD9857DA754411C3624ACE0E8504124237A6D7DA75441E17A14AEE0E850419A9999697DA75441713D0A67E0E850410AD7A3F07BA75441AE47E1AADFE850418FC2F5F87AA754417B14AE87DFE850411F85EB017AA75441BAE9708DDFE85041C8EB37E979A754413B34CF89DFE85041699CFADD79A7544155A9F8A7DFE85041F022777779A75441666666B6DFE850419A99993979A75441CB7A60BBDFE8504182A7823579A754414CED39C1DFE85041152CA12179A75441C0B67A8FE0E850414FDD055278A7544127616EBEE0E85041E455EF4378A75441E678247EE1E850411F462DB077A7544116725DA5E1E85041CFAEF1C676A754411ADE23EDE1E8504172FE0B4076A75441EBCDF3A9E1E850410D38F1CC75A75441AE1D77A2E1E85041D8510BC375A75441F418D542E2E85041DACDA5A775A75441CDCCCC9CE2E850416666669675A75441D97DBDCEE2E8504182A922B675A75441A7823E4EE3E850418CB9ADE475A75441D0BD17ACE3E850413963275776A75441295C8FF2E3E85041E17A148E76A754413189A45EE4E850418BE7A99776A754413C415AC1E4E85041F8B2776676A754411F85EB01E5E85041B81E853B76A7544119F35880E5E85041593BA2CB75A754415C7799D6E5E8504177FA156C75A7544105A22521E6E85041DC3535B674A754412B998E3AE6E85041325E6D6D74A75441FCA10222E7E850417E0561B773A7544173BFFFBFE8E85041C9380A5272A7544155837612E9E8504125A88A1472A75441233BC668E9E85041172E8AD171A75441DD4342D5E9E850410BD9D47C71A754415A70D6D4EAE85041CB7B22E270A75441EF6CD3B1EBE85041B6D3FD2D70A75441E67AB611ECE8504194A39D2770A75441A2D6F271ECE850414C6B380A70A7544189C46F50EDE85041140C024E70A75441503DAD9CEDE85041EAF08C0A71A7544148DBFCFDEDE85041F3CB5CE271A754419E6AE27DEEE850411FF9C89072A75441A9B0810CEFE85041A4F3F63672A75441331C4DA1EFE850411A8DDBB471A7544136B86EB7EFE850418C4F232A71A75441C3F528BCEFE850410AD7A3C070A7544132B080CCEFE8504158B911A670A754413B15D3D0EFE8504191CDFA8A70A7544179F79713F0E85041C46B7C3270A75441A4703D1AF0E850417B14AE2770A7544110A7347CF0E85041B2B5ACF76FA75441606D332AF1E85041E612399D6FA754416A5EFE65F2E850411BD0B7F06EA75441770A6442F3E8504131B062556EA75441EA43EE4DF3E85041F19EA8366EA7544185084D9FF3E85041A382BC3E6DA754413D0AD723F3E850411F85EB316CA7544148902E24F3E85041742BA7286CA75441A5F53920F3E85041D687D8206CA754416B3D7F28F3E8504196A0B0B36BA7544100000030F3E8504185EB51E86AA754415C8FC2A5F3E850415C8FC2B569A7544131DA358AF4E850417B6AA0A568A7544141AF47EFF4E8504197936DE867A75441DC3A6CF5F5E85041A5200B6067A75441C5573D8FF6E85041B1DEA63967A7544104C3F279F7E85041D0F8AB1D67A754416743E8A6F8E850417AE302EA64A75441ED2A46EFF8E85041CD11475964A754411B9A0BE3F8E850416149193864A754417F5A9791F8E85041C540FA9863A754412CD81171F8E850416C4505DA63A7544129B7082AF8E850415CCEFEEA64A754414993BFC8F7E850416E03CE4665A75441757C8F47F7E85041B21A641F65A754410AD7A380F6E85041C3F528EC64A754415C8FC245F6E8504148E17AF463A7544190226E52F6E85041AA6268E263A75441F8F71F52F6E8504194F21EE163A7544192BA539FF6E85041C4B0036163A75441C5E705F0F6E85041CFECAD3762A75441333333D3F6E85041713D0AA761A754410AD7A380F6E85041E17A14EE61A75441603EB552F6E85041027643D961A754412418BF4BF6E8504105AC4DDC61A75441555F3E29F6E85041C7C778C661A75441EC51B8FEF5E85041333333B361A75441F742D0B6F5E8504186642EAA61A754417F8E6A34F5E85041A15C51B461A7544110D3B710F5E85041B365DFF561A7544126602A02F5E850413AB58E3362A75441CD9C4FECF4E85041F5E82A0862A7544166666656F4E85041CDCCCC3C61A754418FC2F5A8F4E850419A99993960A7544120476E03F5E8504197A2572E60A7544163D089B5F5E85041D67AB90E60A754414D40BA04F6E850416BCC92D45EA7544183F88249F6E85041DEFAD5A75DA75441A38DB14FF6E850411B22C4AC5DA7544114AE4751F6E850415C8FC2A55DA75441E17CA8FDF6E8504144F981375EA754416A2F838AF7E85041EBC7D7A75EA7544114AE4711F8E8504114AE47915EA75441F331603EF8E85041165D93DC5EA75441940E9C44F8E85041688CDEE25EA75441BA21B350F8E85041F0BD2BFB5EA75441D88F7A97F8E850417C7359715FA7544180430BFBF8E85041C901DCD35EA754415DF8E6CEF9E8504126161D4B5DA75441EAE984FDF9E85041BF8B2FED5CA75441C3F5280CFAE85041A7F441AA5CA75441C3F5280CFAE85041000000505CA75441C3F528ECFAE850415C8FC2C55CA75441E17267E7FAE8504199B8266E5CA75441C122B4D4FAE850411DB276DA5BA754413CF2551EFAE85041998118245BA75441C38341DDF9E85041A43D39EA5AA75441A5CEDCD3F9E85041025E9FD95AA7544114AE47D1F9E85041713D0AD75AA7544190FE10B1F9E85041B076209C5AA7544141387277F9E85041FF354B365AA75441BF4C0B7AF9E85041A080A3A959A7544184049DBAF8E850412CE99CE659A754411647AB92F8E85041D6917EFD59A75441229EF38AF8E850415D48CBF559A75441713D0A87F8E85041713D0AF759A75441F89A9C7EF8E8504133437BE959A75441AC810D41F8E850418E0B0FAC59A75441171A4714F8E8504127FBA0FB59A75441AF718507F8E850413D81AC265AA75441C16FE8EEF7E8504130D84D6B5AA75441877E35D1F7E8504177461DB05AA7544167DDD4B2F7E85041B08C11F75AA75441AE1C6F86F7E850418E1E43235BA75441ADE4547DF7E850413F60E0075BA754417B14AE77F7E850411F85EB115BA7544186D19942F7E85041998B2D575AA754413007142FF7E850418817711C5AA7544185EB5198F6E85041333333B35AA754410C92F919F5E8504103D6B30659A754416EF1FA5BF4E850410FD33E3858A75441DF4D2E58F4E85041490E842D58A7544166666656F4E85041B81E852B58A754412B036E54F4E85041E327EC2258A75441D9A8184FF4E850413259DC1358A75441925B3246F4E850417BB9D5EE57A75441A2B8F945F4E85041476ED9E357A7544133333333F4E850411F85EB9157A754412A54975EF4E8504175CAFA7757A754418A812067F4E85041FB572F6757A75441850707DCF3E85041B6FB70D056A75441586BAC39F3E850417BB0966556A754415AE7C873F3E850416CD6916156A75441CA861A4CF3E85041E05C6C4156A754411248F52AF3E85041BCC8FEA055A7544133333373F2E850410AD7A35055A75441EBA42F74F2E8504140937D4F55A75441D4D59F6EF2E850413BD5AF4D55A7544150EBC68FF2E85041EB2D542F55A754417B14AE47F3E850418FC2F55854A75441042B3D6DF3E8504119D9847E54A7544134A5D6BEF3E8504173D99CA054A75441BE6BFECFF3E85041E858459154A754414A24F47DF4E85041B4501BE753A75441B2D3B2E2F5E8504135D511D753A7544168E752E4F5E85041926DDBD753A75441713D0AE7F5E850417B14AED753A75441226960EBF5E85041B23846DB53A75441534E262FF6E850417A7D1CFC53A7544189D203E5F6E85041770F20F853A75441B83E3421F6E8504177C4E39053A75441E522440DF6E850411EEC038853A75441F7C44E0FF6E85041AA51748753A75441AE47E10AF6E8504152B81E8553A7544148E17A14F9E850410AD7A3B052A75441D5935E17F9E85041367A37B252A754417CA08F27F9E85041EB8BC4AD52A7544165D61C6BF9E85041F57FD0D452A754410CB90A9FF9E8504159BF9BF152A754411021E312FAE85041D93F263953A75441C37E18F3F8E85041EC2C151152A754417DF15E6EF8E850414283C59051A754418AFA9F2FFAE85041757B24AD51A75441AE47E13AFAE85041D7A370AD51A75441AE47E13AFAE85041CF72EED750A75441E13D6E20FAE850413612B4BB50A754414FE86608FAE850411F0FA6B150A75441D7A370ADF9E85041A4703DAA50A75441CDCCCCFCF8E850419A9999F94FA75441AA0562DEF7E850411DBFE4844FA754418F571EB9F7E850418B33A5774FA7544111BAF86EF7E850417BFF78624FA75441AB078EE9F6E85041BA9705D74EA75441559542A3F6E85041BEEA7CD84EA7544185EB5198F6E8504185EB51484FA7544177B09496F6E85041520D2E484FA754415B5D4E96F6E85041CEFF8A554FA75441B3031119F5E85041871C153F4FA75441B35D82EEF4E85041378F7F3A4FA75441A9D92410F4E850417AD63F1B4FA754410F6036EAF3E8504191000C114FA75441D7A370BDF3E85041D7A3700D4FA754415C8FC2A5F3E85041CDCCCC5C4EA75441A53B79E0F3E850412C0A17D34DA75441E094AEEBF3E85041B3576AAD4DA75441ECEEC3E0F3E85041C20803C34CA7544122C203C5F3E8504155A1E0D54BA75441F8C11FB2F3E850417FD894C24BA7544114AE47D1F2E850419A9999994BA7544127EB720AF2E85041B663C4B74AA75441B6C696D7F1E85041FC85647F4AA75441AB6B77C5F1E850415773896F4AA75441C0005C2FF0E8504143BFD4C249A75441372E27E7EFE85041FF0F87AE49A754417E969F63EFE85041DFE0682A49A75441D08E8636EFE850415A4A943F48A754418118464AEFE85041361C542548A754415C8FC245EFE85041E17A140E48A75441EC3F2B68EFE85041A7D9A60248A754415C963E10F0E8504119A9F7B147A754413FFFCBF2F0E850417600418746A75441DFFDB1C6EFE850419DDD75DB45A75441163C878CEFE85041DFF4F7B045A754419A999969EFE85041D7A3709D45A7544123E73D6FEFE85041840DC98B45A754410CF6305CEFE85041AC2D843B45A7544171269CC2EFE85041FBFD985D44A754419371EDC1EFE8504174482C5A44A75441177C5CB8EFE850419F3DF46644A75441654166C1EFE8504154E2855744A7544160A4F2B8EFE85041947A1C2D44A754413CDC6F8AEFE850419E1015B143A75441198D3CFDEFE85041776E35F542A754411FEDD566F0E85041AA9077BA42A75441E17A14EEF0E85041CDCCCC4C42A754414E401E18F1E85041C29BD95742A754415C3C7C25F1E85041480F6A5042A7544179BCBD26F1E8504127FA574E42A75441587E9DA9F1E85041E84F187E42A75441E17A14CEF1E850417B14AE8742A75441295C8FA2F2E8504114AE472143A754419666D2A7F2E85041E6F5113343A754418AA8CF1AF3E850417332EB4E44A75441349042DDF2E85041BB8EC6AC44A75441F6285C7FF2E85041A4703D7A45A75441870F8BB7F3E850412AF0D80148A754417A066BBEF3E850419200880E48A754415FC920E1F3E8504124B28B1E48A75441F0D554F6F3E85041B3C9E92048A754413D52AA7DF4E85041E9BCC46648A7544117CFF7DFF4E850417D891F9448A7544102510E2CF5E85041B81E859B48A754413D0AD7A3F6E85041B81E859B48A7544154131FDBF6E85041F2A37EC848A75441A2B68D02F7E85041C2B331E148A75441747EA535F7E85041BAB8F20C49A754410640D553F7E850418364B32A49A754410AD7A360F7E8504152B81E3549A75441C4502662F7E85041FBC5CF3849A754414D80466BF7E850417660CE4149A754418227C2C4F7E850415D3511134AA75441205B9C9EF7E8504148F4DB5E4AA7544192342873F7E85041F18C8BB24AA754417C2A8886F7E8504151A00F454BA7544122551483F7E85041FC92EA414CA75441287F98ABF7E850417C6C64594CA75441C7DC73B2F7E850410EC8F3334DA754416464419DF9E85041E7689D484DA75441CCD0444DFAE85041132F6EFB4CA75441EC51B85EFAE85041F6285CEF4CA7544133333303FBE850411F85EB414DA75441E17A141EFCE850413D0AD7E34CA7544192DD102AFCE850410EF582E64CA7544179319E42FCE85041365984DD4CA7544100C61B87FCE85041AEFD3FFB4CA7544185EB5188FCE85041B81E85FB4CA75441B1CB2B88FCE85041A814B6FB4CA75441D239BB8FFCE850412649FEFE4CA754413CB1FB41FCE850419A65D9554DA754410AD7A390FBE850419A9999394EA7544131CA2675FBE850417DF6AC3A4EA75441AF4A1A71FBE850415EE1323F4EA7544119C8C06DFAE850413CC4924E4EA75441D7A3708DFAE850413D0AD7A34EA75441BCBE5F9CFBE8504150AC1EAC4EA7544135A4C210FCE85041BA6933A54EA75441D986C027FCE8504122047BBD4EA754412F66F220FCE85041DD418D1F4FA754417E0446B9FBE850413E063D644FA754411BD23873FCE85041A5B9B9924FA75441A579DC98FCE850419C9921984FA75441CEDBAE11FDE850412D85FD554FA754412F16E774FDE85041158353194FA7544108EF049FFDE85041D0D024F94EA75441D07F8BBEFDE850416F078F114FA75441F57B63B4FEE850419A9999194FA75441D7A370EDFEE850419A9999194FA75441716CC7EEFEE850411A88821B4FA75441921D61F7FEE85041F58BCA1B4FA75441E147CA0EFFE85041F7512B494FA7544100000040FFE85041F6285C8F4FA75441572CA3B7FFE85041A3CDDD2350A7544158FBC1EAFFE85041ED889E5550A75441F410F47500E95041FFC5F70651A7544121B5551F00E95041D53E52B951A7544185EB510800E950413333330353A75441C3F528DC00E95041295C8F1254A75441A5E391DC00E9504136A47C1454A754415E1C09E100E95041A182221A54A754417F617CE400E95041CC5AB33954A75441516B8E2901E950419427687E55A754411E79D64F01E95041D3B116FF55A754411732B07001E95041BE3A9E5156A7544185EA663902E95041F94106D556A754413974E3ED02E95041D189AF7856A754411C6ECAF002E950410024397856A754416666660603E95041B81E856B56A754416FA0A85E03E95041D30FB76656A754415C8FC2E503E95041C5952F5156A754415C8FC2E503E95041EC51B8AE55A75441A4703DFA02E95041CDCCCC0C56A7544194750BFA02E9504119049E0156A754414BD03CF402E950412FDF3A0456A754414FAA21F802E95041E8B3079455A75441236F74F002E9504149A153DC53A75441C84460E902E95041D1D12F7553A754416666662602E95041B81E85EB52A75441713D0AD702E95041CDCCCCFC50A7544148E17A4404E9504114AE471150A75441E2AA465704E95041FA64F31250A75441A5F5B75A04E95041912B121050A75441B386AA9F04E95041B7AB621950A754417B14AE4705E9504185EB512850A754419B86637F05E950417B19344650A754410167AF2E06E95041E1178D8150A754411AF6603607E950417A27552951A754416F6B2C7B07E95041AB9A970652A75441EC51B8FE07E9504185EB51E851A754419A99991909E950411F85EB8152A754414812A84209E95041F28460D752A75441B2A21BBE09E950410D4CC29053A754417D191CAB0CE95041194FBF9350A754410271C9560DE95041095738D04FA754411CA36EA30DE95041ABF41D964FA75441058C10F60DE95041F4E1B7414FA75441DA00F2DB0DE950417EF55B434FA75441B81E851B0DE95041C3F5286C4FA75441F729B0170DE95041420C7F644FA75441F2E6F8070DE95041289DA7684FA754412C2C99DF0CE95041CCB0D3E74EA754412FAA00390DE950413F131D964DA75441A4703D4A0DE950411F85EB414DA75441AD1D5A270DE95041DEFBA02C4DA75441E656CB6C0CE9504103C12CC54CA75441E17A14CE0AE950418FC2F5884DA754411F85EBE109E95041EC51B81E4DA7544185EB517809E95041E17A146E4CA754415D3E5BD908E95041E3E1E4294CA7544129BEAF8208E95041AEAAC9084CA75441A9F7BC7B08E95041F9917FFC4BA75441333333F307E95041000000304BA75441000000D007E95041666666964AA75441402B79DF07E95041467DA2624AA754416CB70DF007E95041077661A549A75441C1E5D7AA07E950419488749B49A754417AB69AA007E95041E721AC9C49A75441E3214B9D07E950413013839949A7544114AE477107E950413333339349A75441DACD8D1D07E95041BE09941F49A75441C8AEE60E07E950413068971149A7544148E17A2405E9504152B81E3549A7544117AD190005E95041E8D0AF0449A754412E635AB104E95041B35C5BBC48A75441CE47420C04E950415F47779448A754410680847003E95041411EEEC647A75441F6285CBF02E95041B81E85BB47A7544152B81E3503E950411F85EB5147A75441BC6C762503E95041845BAC0B47A754419DDCD20B03E95041110874E446A75441C3F5289C02E95041000000D046A75441A4703D3A01E950411F85EB9145A75441EEBB7B0801E950418ECA5E9D45A754417C4111BE00E95041B37F5AC645A7544102C74DB100E9504103B96EB145A7544114AE47A100E9504152B81EB545A75441F6285C1F00E9504148E17A0445A754417584823100E95041396FE8CA44A75441FA1D995500E950413030683144A75441E08AE20300E95041DB54D5D842A754412B93D2ECFFE85041506D119842A754416C1BD3E3FFE85041C7ED673F42A754419A9999A9FFE85041713D0AF740A7544148E17AE4FFE85041295C8F5240A75441FB3882D3FFE850419B980B3940A75441DB4DB4CEFFE85041A8C0B03C40A75441E093C63CFFE85041D2E06E563FA7544185EB5128FFE850417B14AE373FA754417543C828FFE85041ADCFE2363FA75441579BDC27FFE850415DF96E353FA754418780C331FFE85041DA9975273FA75441F6285C1F00E95041F6285C8F3DA754410AD7A3F0FFE8504152B81E253DA75441698039F5FFE85041A5BF46003DA754416C4C1D0700E95041BE9BF4EE3BA7544197C3346C00E9504167AEDD6F3BA754417A0D8F4D01E9504199665B623BA75441C6217F9701E950415CE182673BA75441F6285CDF01E9504152B81E653BA754411A498FF001E950416448B86D3BA7544191D9B6FB01E950413A587F6E3BA75441C648492602E950413A4895883BA754418FC2F55803E950411F85EB213CA75441AE47E1AA03E9504152B81E253DA75441CDCCCC2C04E95041F6285CAF3CA7544182A76B8104E95041C8F059B73CA7544102D7F48304E9504182648DB63CA754410A6BA39304E95041A55F12B93CA75441B81E851B06E95041E17A14DE3CA754418D7EDEA706E95041B23224393EA7544104C273C906E95041C249E0683EA754413CAC6AE906E95041192F48B93EA75441D4B1C90A07E950419D1743D43EA754415EC8688E07E950411E1951EB3EA7544151AF46AA07E95041F4303AEC3EA75441F60320AC07E95041409385F03EA75441CDCCCCAC07E950410AD7A3F03EA754414F720F0908E95041CB0DDD9D3FA75441036D161F08E9504147C965993FA754419A99991909E950417B14AE373FA75441E69A411809E95041F9D299403FA75441C045612B09E9504137E7F9383FA7544153B29C2509E950415BAC4DD73FA75441D331D26709E95041343D19FB3FA75441F6285C6F0AE950419A99996940A75441361315680AE9504198BBA2CA40A754412EF923750AE95041602C7B0741A754410AD7A3200BE950411F85EB3141A754415A7ABB1A0BE95041FCE56E5441A75441B5C3DF220BE9504188071C7141A75441D378F5460BE95041ABBFAFB841A754411F9573BD0BE9504114AE474142A754417063F0BE0BE9504114AE474142A75441C78E1BD90BE950417B36652E42A75441D7BCFD590CE9504114AE474142A754411F85EB810CE9504114AE474142A75441D68B1F870CE950419C99E44742A75441B6A760A50CE950417073534C42A75441E243B40C0DE95041789E43E842A75441B4C19DA20DE95041056CCA0743A754412394291D0EE95041E78D911443A75441AC79E97B0EE950414E91092B43A75441949E13960EE95041E193FD3A43A75441333333C30EE9504148E17A4443A75441469BF3CE0EE950419921AB5D43A754418AA52FE20EE950410E6E656943A75441D7D5092F0FE950413B655C0444A7544159DC20830FE9504102FF6BBC44A75441724EBA8A0FE9504140C063C744A75441F6285C8F10E9504114AE47C145A75441C15BB28E10E95041A5EF2CCB45A754417E9F9AA310E9504153AA27DD45A75441BC2E939310E950414C58170A47A754412B0900B610E95041BD48683A47A754411B88062B11E95041C52B306747A7544157C5444511E95041D22B526C47A75441220327A212E95041228B2BF647A75441295C8F5213E950417B14AEC747A75441C850577B15E9504124DD125346A75441FFC922B715E95041871B4DD345A75441221D8FBE15E9504115F4E6BB45A754413C34660A16E95041E3563B8E44A754414AB7827816E95041527A2A6743A754418389336916E95041F2CEE84243A75441CDCCCC2C16E95041E17A14FE42A75441325B2E7916E95041E6844FC742A754417C3C1DD816E950411DA5FB7142A75441B4A736DA16E9504101CC336B42A75441CEFF983817E9504129B61C2741A7544189AA543517E950414523BB0441A75441CDCCCC0C17E9504114AE478140A75441867BC13D17E950417BD2B41140A75441CF40745917E95041F7E849C83FA754416535FC6C16E95041BA04D2183FA75441DD152A6D16E950415EF9C3173FA754417B14AE6716E950413D0AD7133FA75441B62F5D8316E95041DD9517953EA754415D66FD9E16E95041C4797AF23DA75441E2A15ACF16E950419FB78AF33CA7544145262C9F16E950417442FC7B3CA754419954356316E950411AD7EB343CA754416EB238A515E95041994E27683BA75441A3143C5C15E95041390A31FD3AA75441546238A915E950412A2A73163AA75441F2081F6115E9504183BA8F8B39A754410428BC3915E95041B33C175139A754412AD0FD2E15E95041005EFE2A39A75441B1FD5D1115E95041AF38EDF138A754410A6CE7F014E95041B9F89D2039A75441787A3D0D15E950415D00FAE938A754416666660615E95041CDCCCCDC38A754418FC2F55815E950413D0AD74338A7544184AB59F113E95041FE133C3C37A75441A787538513E9504131F5ED0B37A75441BA39DD8C13E95041D83E93F236A7544177BFEF4C13E9504101D5B6C336A7544163EAF48F12E95041C2F4E06436A7544103933C9C12E95041F6E2F85636A75441CD880A9D12E9504105FEC64236A754415C8FC29512E95041D7A3703D36A75441FB969E0F12E950415B74021E36A754412074EEAA11E95041C1F6B33E36A75441AE47E17A11E9504148E17A5436A7544143E1C87611E95041C591A24F36A75441A553516C11E95041C09E085336A75441B2A43F4011E9504176B71D0F36A75441E17A14BE10E9504152B81E7535A75441869B0BB710E950417AD3567035A75441449AA19810E9504108550D6D35A75441A38C5D7B0FE9504107EBBFA734A75441AD269C8F0FE95041A1CE8EA734A7544148E17A740FE9504152B81E9534A75441A1C97F690FE95041C8CA6E7D34A754418D5709670FE95041CE76DE7B34A75441875C5E640FE95041528B5D7234A75441B9FF44D60EE950416360D63F33A75441914B93800EE95041C0EEF7B032A754410D8A40E20DE95041766A66A932A7544195A5EDB30DE95041E798FFA932A75441603F01AF0CE950418B68B69A32A7544152B81EA50CE95041A4703D9A32A7544196D7DB8B0CE95041DB54BB8732A75441970C55280CE95041285F525032A7544163F1B83A0BE950412F7C0C1932A75441BEA55A010BE95041027533D231A754414E639CBB0AE950415646022331A75441333333930AE95041A4703DDA30A75441CDCCCCFC0AE950419A99992930A75441FC60A54F0AE950413E5BF0E12FA75441B3B4309009E95041E0360BB52FA754415B53ED7E09E9504145B234C22FA75441B81E85DB07E950410000005031A754412C2249D407E950416A94B44F31A75441623CD6CD07E95041004D295A31A754410CBE7EEC06E95041D1A73A4831A75441B81AD59D06E95041B054C2E731A75441D7A3709D06E950419A9999E931A754411B02D89C06E95041DB9DC3E931A7544125F0BF8C06E95041023B670A32A754412AFB556705E950413275785C32A754413A17D04D05E95041543821AA32A75441BD0EC71C04E950419CABA0D832A754413AD25B1404E950417C17CDD232A754419A99990904E9504152B81ED532A7544132BFFDFE03E95041246803C432A754417475AEE503E95041FC457FB232A754412C76F94B03E95041F2C2A6DA31A754410FF48FB802E9504145A83DCF31A75441176E2F5002E95041160699D331A754410C8340B501E95041717F3BA531A754416666664601E95041AE47E18A31A75441D53BA04401E950414326878331A754419276824301E9504138A1318331A75441E44A3D1401E95041FE43DB0131A75441BA54BD1801E95041CD17A8CD30A75441F6285CFF00E9504148E17A6430A754415531782501E9504181A2FE3930A754416089EC2601E9504122991F2930A75441CDDCEE1502E95041F9B7320D2FA754414572112C02E9504102683E152FA754411F85EB3102E95041EC51B80E2FA75441F1FB390805E95041622F1B1430A75441848FD6A905E95041F4EC074430A7544170B498F705E950411C5D947530A754414A911E1606E950411C0DCA8430A7544176AB427606E95041EBA3F89B30A754413C9786B206E9504116765D8E30A75441C2D44F0007E95041AB9DA07230A75441A003C40C07E95041590B626830A7544152B81E9507E95041C3F5289C2FA754411325C99707E95041FB196D9B2FA754416895F69B07E95041DC7FA8912FA7544138DDF0D508E950416C31AE3D2FA75441AC804CFC08E950410E5C4E1D2FA75441A37E2E1909E95041936A25102FA754419BFAE9AC09E9504188667DE42EA754412A94B6400AE950417ADC86692EA75441EC51B89E0AE95041B81E850B2EA7544177C72BE70AE95041554168F92DA7544172CD13920BE9504107E1FAAB2DA75441A5FC01B80BE950410D8A094E2DA754414C3A292D0CE95041F0E93D202CA754411DB60A330CE950418BA010262CA75441B81E853B0CE950410AD7A3102CA7544156AFE6830CE95041358321762CA75441575D64BC0CE95041E84E11AE2CA754411F4FF4110DE95041D21110B32CA7544152B81E650EE950419A9999A92CA754415C8FC2350EE95041EC51B88E2BA75441E3466E420EE95041A9E8BF812BA75441C4705C410EE950417F22A67C2BA7544179A9630010E9504190AE42B729A75441799BE4A30FE95041EDDDE89D29A75441B43E231B0EE950419BB7C16429A75441E0931ADE0EE95041A1B9B36F29A754416FE2B9890FE9504121AC2BA928A75441D169EB4C11E95041898533A928A754416FD40A5112E95041730D35BD28A75441F0FF9FC112E95041B4554BB828A754414199EB3813E95041B2EFCEBE28A754419DE719BC13E95041A6B970D528A754414BE893C713E950418BD4AAD528A75441094F681C15E9504103F57BC228A75441158D078B15E95041567F98DE28A754418AAE26F115E950411A889DE028A7544195CB100B16E95041C895BADB28A75441C30DA33016E95041ACF4DEE128A754413D0AD77316E95041333333E328A7544129F0F98716E950416E2226F028A754410F0E348E16E95041ADBC2AF128A754415D8CE2C116E950417D52631529A75441B664C0C018E950412B8CE85D2AA75441880037F518E95041B27C407D2AA754410AA0071519E950411F80EC892AA754418A9386B919E95041D57E41762AA75441FE40DCC719E950416E6447702AA7544106233C101AE9504198D60D5A2AA754410DB0DF521AE9504127F32D282AA75441D7A3705D1AE950415C8FC2152AA7544155D065A01AE950418F77B21B2AA754416551F7C41AE950412FA2EF172AA754414F1564CE1AE95041AD7DC61F2AA75441F6285CDF1AE9504114AE47212AA75441E92F502A1BE9504107B53B6C2AA754416971A3C01BE9504180CA44E92AA75441499108D21BE950411973B8EA2AA75441236B98F61BE950410EA09CF92AA7544185EB51581CE95041D7A3700D2BA75441600403691CE95041B2BC211E2BA754413714C06A1CE95041A571A01E2BA754414E32B9611DE95041494D96EB2BA75441295C8FA21DE9504185EB51682AA7544146EE6DAB1DE95041229898632AA75441B6F854AF1DE950410A121D4B2AA75441E9FBE15E1EE95041A7F33A012AA75441FE5188851FE95041B59C72432AA754412AB252F320E95041671B2EBF2AA7544117F2AB3521E950419AE943A72BA75441CB3FE38321E9504193B85AF02BA7544121369E0222E95041B8284EFD2BA75441F9F3715823E95041B72B0F442CA75441B4B7955A23E950410B3477482CA75441F6285C6F23E95041B81E854B2CA754418ED5FD9123E95041D71891BA2CA754418E533CB723E9504166D743072DA75441A6D0DC8424E95041172700F32CA754411F85EBA124E95041FE80B4772CA754411F85EBA124E9504185EB51282CA75441AAD758D124E950411F3C8BE82BA754410395147725E950411B2FB8F82AA754414895B63F26E950413BFE09FB29A75441AA747F2A27E95041B59935A229A75441A22BB0D527E950412BD9730529A754419EC1C2BC27E95041044EF57D28A75441000000A027E95041F6285C0F28A75441000000A027E95041889EA0E127A75441C44E069227E95041EADDA99527A754417E18469F27E9504147A7F27E26A754418D95F98727E95041F0AAC3E425A75441D983628826E95041B88B742B26A7544130DD9E9D25E95041D221EA5E26A7544164C9C8F924E95041080458AA26A7544148E17AF424E95041D7A370AD26A754417DCA03F424E950410C0400AD26A7544106056FF224E95041C15EBAAD26A75441528DE39024E950411858414F26A7544148E17A1424E950419A9999D925A75441713D0AA722E95041A4703DAA25A75441E46EF1A622E9504101C2ECA725A75441A3BE598F22E950411CA927A525A75441A0D59A9C22E950410282ECB024A754414A963C9922E9504144C9736024A75441DD01627E22E9504165D4886223A7544187255C2A22E95041333333F322A75441B16B41B421E95041333333F322A754410AEC586E21E95041BFEA8C3E24A754414E888EB820E95041DC17EB4D25A754410AA5DAA820E9504134A4E45D25A7544114AE477120E95041666666B625A75441C7DA2BE31FE95041D47BD7E325A75441A9DE1A311FE9504106A5622626A75441863710281FE95041102895CC26A7544104DBF38A1EE95041BD659AEC26A75441FC311F741EE950417C0CA3DB26A75441AE47E16A1EE95041CDCCCCDC26A75441A18E24BA1DE95041B11A6E5126A7544124EF5C881DE950410CEC6F2C26A754418B1130FA1CE950416899625325A75441DC57B1BF1CE9504104F3827A24A754411FBA01D21CE95041B465EDDD23A75441CE0D78F31DE9504103D48EB921A75441912B30E71DE95041A0165B9721A75441257461871DE95041B1C6165521A75441E836594F1DE95041223A619B21A75441A73892DE1CE9504190E99E4622A754413DC7F4961CE95041B8FFCAD622A75441BB46CB8D1BE95041209CEE7623A75441C6F752831BE950415B117E7323A75441CDCCCC6C1BE950410AD7A38023A75441A95F20EE1AE9504178F1145023A754411CC90CE31AE95041E7E4454E23A754414CC555A61AE95041FD66554923A75441A90692C319E95041565D655B23A754415C318AD918E950417C66647323A754418380C08218E950411C17447523A754416AA1617E18E950411E4D4C7523A7544171F931C017E950412364728423A754415ADECD5E17E950413034729823A754411D8B93CF16E95041D741ED0723A75441666666E615E95041333333F322A75441A242D2DE15E95041A0533CF122A75441ED3A84D715E950419CCEE5F022A75441E31C541B15E950413AC7A3C222A754412C395D5015E950419CCC8FCC22A75441DB9D0B4915E95041D8206ACA22A754418FC2F57814E9504148E17A9422A75441B81E850B13E9504114AE477122A75441CB99B20013E95041F0B6F26022A75441291649ED12E95041CD17055422A75441B3993FB612E95041A659C51822A754413E81EEB911E9504144D4B8D321A75441295C8F9211E95041C3F528CC21A754418AFB3D9910E9504167C5521B21A75441217C248210E950416D646C1121A754416C395C7E10E9504102AA410821A75441B6733F3810E9504175EC86D620A7544199CD691610E950411FECBDCE20A75441A2A04EF00EE9504192CFA90E21A754411295C6670EE9504144033A2021A75441C3F528CC0DE95041EC51B83E21A75441168BE9A10DE950413AFAAD3921A75441B7233D8D0DE95041B1C9563C21A754417ED3C9DB0CE950417CC3D42221A754414A401BA30CE9504116E6982121A754411F85EB810CE950415C8FC28521A754419CF72C720CE95041A5141C8521A754410621AC700CE9504178115E8821A75441F435885C0CE950412B39378421A75441B81E855B0BE950419A99997921A75441DE7DDEAA0BE95041DFD393F720A7544192FD5ADC0BE95041C4BCA08520A75441522A7EC00BE95041EF2B43D61FA7544134A2EBB30BE95041FA4A95BF1FA754413D0AD7430BE95041CDCCCC2C1FA7544148E17A140BE95041AE47E1EA1CA754410673FCA007E95041C3961CA91EA75441C824029D07E9504105F2B6AB1EA7544111FEA29807E95041D92A54AD1EA754419AA242F506E9504104A7D8FF1EA75441E4EE584606E950410F5DF15E1FA754418815494606E95041F873E7A71FA75441D603C14606E950410BBB62E21FA75441C49408CF05E950413EF6A7F91FA754417683891A05E950410A77220D20A75441792C2B5A04E950412DA6772C20A754412E15E35404E950414012197020A7544133ED2C4204E950415A50944621A75441290C873D04E95041B6340F7A21A7544185EB513804E9504114AE477122A75441885F2A0404E95041692BCFE522A75441594392E403E95041BF71845023A7544151847BB503E95041198C9C9523A75441F6285C9F03E95041713D0AC723A754417E6A1D5903E95041D685B6F223A75441FC4D0D3E02E95041D70409B224A75441864B56C201E95041E0F9C36B25A75441EEC2E23C01E950411A05B71327A7544101EEF13201E95041085C032227A75441EC51B82E01E95041F6285C2F27A7544141C2EB1B01E950412332214327A75441876F40FF00E95041F1A75D6C27A754412440CF5000E950419A34DB3F28A75441BAE6612000E95041D0C4C70B29A7544171789EBEFFE85041F914BC4629A754412D2269E1FEE850415BABE25E2AA754412402F19CFEE850412148A1222BA75441EC51B88EFEE85041000000602BA754417FDFF185FEE850417FD45F642BA75441286A6580FEE85041FEBB3C742BA7544193B85AC0FDE8504192CD15DA2BA7544177826EF7FCE850410661A87D2BA75441666666E6FCE85041713D0A772BA75441A7989B66FCE850416CFD898F2BA754418A4DB5F3FBE850417C2217BB2BA754413BAF8A18FBE85041DB36A9AC2CA754410CD9E201FBE850413FF999C62CA754410450A888F8E85041EC9F18C72FA754419540CE6BF8E8504180F708F02FA7544188B648D7F7E85041741D32EB30A75441F95384C5F5E85041465CAF912EA75441C3F528CCF4E85041E17A147E2DA75441C692B678F5E85041C62AD0762CA754416B2DCC97F5E85041A766853F2CA75441515D2DC4F5E85041B7E916082CA75441861DD239F7E850417D48AB122AA754410F5E5CA3F7E850412B27487129A75441EFAA32C0F7E850416161437C28A75441A4703DCAF7E8504185EB51C827A75441D1D72AD7F7E85041B5A019B927A754419BDB8CD8F7E85041B6B059AD27A754412559AA5AF8E85041CCEC370C27A75441C6578F5FF8E85041C184780127A75441512F5D15F9E850419FF36C5325A754410081F358F9E85041B68E3E8324A75441A4703D8AF9E850416666661623A754416703358CF9E85041BDD9A81123A754416CC95190F9E8504145FC9CED22A75441E4035019FAE85041E1FFF7B521A75441CE740C64FAE85041B3ED349620A75441FDDE24E7FAE850410AA3D56F1FA75441524B10A5FBE85041106D70F11DA754417FDC711BFCE850418BA103EE1CA754415C8FC235FCE85041000000B01CA75441B841BB93FDE850416886938C1AA7544145026BA4FDE85041EC6448E319A75441EC51B8AEFDE85041F6285C5F19A75441289397B2FDE8504133B87A5319A75441E6FDC7B5FDE8504178BF1F3319A75441A0DD3BCCFDE85041B0AECD0419A754413D04AA78FEE850413D82BDF316A754414C2EAD7CFEE850412A4F47E216A754410FBC4D9DFEE85041E3F8518316A75441D7A370EDFEE85041D7A3708D15A7544123FEE109FFE85041FF0DAF1B14A754414A19FDF7FEE8504155FF3D7213A754419F39FCDDFEE85041BA3A2B1C13A7544193878D67FEE850412418FD5714A754412A8C8C58FBE8504163EEBD6B1DA75441305B9B04F6E8504162A83D7529A754413BE54F77F2E85041D86FBB602FA75441D22ECF73F0E8504134FA8B0533A7544175F0EFBFF0E85041D3F08AD432A754419841E2DAF0E85041B09F98B932A754415E87E4C2F1E8504105D168B431A7544169FBD103F2E8504185EAEC4031A75441713D0A67F2E8504148E17A6430A75441295C8F82F3E8504148E17A842FA75441F6285C8FF7E85041AE47E18A31A75441FA86651BF7E85041BAE4E82632A75441D9239290F6E85041A4EDAB0133A75441091847C5F5E85041DECA3BF333A75441713D0A07F5E85041333333F334A754410C27BED8F2E850411B3B584937A7544143B02431F2E8504151CF2D1738A7544101CA4021F1E85041EA3E325C39A75441E17A149EEDE850417B14AE573EA75441674C3C93EDE85041C8AFB05D3EA754415009DF8CEDE85041E12BF6663EA754412496F51EEDE850419BBC73AD3EA7544181B63648ECE8504195647EB93FA7544160CC05C2ECE85041747A4D3340A75441A7651A33EDE85041BD184A9D40A75441F7C5EB35EDE85041FED330EC40A754410744692AEDE850413382D18141A754411A2450B7ECE85041B3BEF93942A754414BD5BB99ECE85041C6DB195D42A75441EC51B88EECE850410AD7A37042A7544188C9A68AECE850417AD9026F42A75441930C0C8AECE85041DA99BA6F42A75441F699D67FECE850417D92AE6A42A75441DF367A47EBE8504144D89FED41A754416A952A05EBE850415F6F8F2B42A75441A4DA1300EBE8504121F8426142A754410355F00CEBE85041A36CA3C743A75441EE4FD210EBE8504154349CFE43A7544124308E19EBE85041E5F7CFBE44A75441493D051FEBE85041372531C544A75441333333A3EBE850413D0AD73345A754418BA7C77CEBE850411325750F46A754412A6DB777EBE850416DA7B33D46A75441809E5974EBE85041FCF0A43F46A754413D0AD773EBE85041295C8F4246A754416E5AC140EBE850419C7C6A5D46A75441AE991F9DEAE850410E11D6BB46A75441194CCF86E9E850410E6057DF46A754411433D257E9E850416678C2D646A7544166666626E9E85041B81E85DB46A754411825DD06E9E85041253565EB46A754410AEDA6C7E8E850413D90481947A754413E0F4791E8E850417F5F2FE646A754417B14AE17E8E8504152B81E9546A75441325AAE0CE8E850411B4C6BA146A754415FB2F545E7E85041BB798D9247A75441706E5DCAE6E85041CEA0297648A754416F57C36EE6E8504194232BFA48A754411D7B2FA1E5E850414483455E4AA754412946EF4DE5E85041D52F66124BA75441A30CB8A1E5E85041F1F3F3B34BA75441713D0AA7E5E85041CDCCCCBC4BA75441A70388A7E5E85041361029BF4BA7544186FA06B2E5E85041041966D34BA75441A24DA7DFE5E850410AF082AF4CA75441A5CE101AE6E85041555689AA4CA75441218794B5E7E85041564133CF4BA75441AA0B3C37E8E85041B4ED2E974BA75441CEF159A9E8E85041589066964BA75441803DB912E9E85041E95917B24BA75441AE47E11AE9E8504114AE47B14BA75441DB14281BE9E8504147AB4EB44BA754412D58EE36E9E8504167299BBB4BA75441C0299C2BE9E8504101E367684CA75441295C8F32E9E8504148E17AB44CA75441E8159F24E9E8504173AD13D34CA7544173512724E9E85041DAC237DA4CA7544143E924BEE8E85041B1B7BFF64DA7544106127E56E8E85041DF198E974EA7544166666646E8E85041AE47E1BA4EA7544187D29E3EE8E85041032597BC4EA75441A141353DE8E85041CC14C8BE4EA7544173CF3D04E8E8504168ED6CC94EA754417B14AE37E7E85041666666F64EA75441A4703DAAE6E8504114AE47514EA75441D7A370EDE5E85041713D0AE74DA7544129871B0FE4E85041126A61044FA75441253BB6B9E3E85041CD2CFA474FA75441A2E60425E3E85041C01BD16B4FA754413D0AD7E3E2E850413D0AD7834FA7544141750766E2E85041A323673A4FA7544138150451E2E850415EFE5C344FA7544125879A48E2E85041C1BC6E384FA75441F6285C2FE1E85041A4703DCA4FA75441FF9607CFDFE85041A625821C51A7544128B6C4F8DEE850418C94F51252A75441C1FD84B3DEE850414B8FC19652A754413D0AD783DEE85041AE47E11A53A75441C201B7E3DDE85041D89374E053A75441A5669376DDE85041FF4E457054A754413AF91D85DCE85041B8B520A355A7544138838B9EDBE85041E926A99056A75441713D0A77DAE850418FC2F5D857A75441CCC9952FDAE8504122DA2B0D58A75441F129C251D9E85041FDFF4FBD58A75441CD29BDD2D8E850418E2D604259A7544129521EF8D7E850412F3A804A5AA75441AC9DF47CD7E850413314D8FD5AA754417C3F5CA7D6E850410B13E1F55BA754411A2BDAC7D5E850413BD2AC105DA754413A7C0CBED4E85041046B450F5EA75441731CF0DED3E85041993C8E105FA754414D6C3D03D3E85041DCF2C4E65FA75441713D0AE7D1E850419A99991961A754415A4AABB5D1E8504131DBD25461A754411148D52BD1E85041ADAEB90C62A754419543BAE2D0E85041FFA8DC5162A75441000000C0D0E85041B81E857B62A7544189BF6A1BD0E85041021B5A0E63A7544122FB010BD0E850410FD0DE1D63A754412220BA07CFE85041BE52F30A64A75441A85852F0CDE850417236D9FD64A75441890BFED5CCE850419472521566A75441994DBCB4CBE85041C86E930F67A75441C686F074CAE850414068C12268A75441329BCB59CAE850414F2AE23068A75441F3DC26B2C7E8504169F8FEA469A75441A0807799C6E85041CDF952466AA754416FCE6D63C5E8504155C5AD436BA75441BCD48046C4E85041AFFF5F396CA75441F9A77BDDC3E8504145C241B16CA7544148E17A04C2E85041CDCCCC0C6FA75441E6020727C1E850417A3327F56FA754411D2402C4C0E85041CC92957670A7544125C4FC8CBFE85041ADEE142972A754415C332068BFE85041E456985E72A75441064E3471BEE8504160C232BF73A75441D9A0E795BDE85041CDFC0F1275A7544136ED7B3DBDE85041CCDD578375A7544163FC2FB5BBE85041A795538E77A7544173FC0868BBE8504136E701FA77A75441A9510905BBE850414EBC287978A75441AB577A19BAE85041C49230B379A75441A3815073B9E85041333AB9AE7AA75441E9668A53B9E8504193F710BB7AA7544114AE4751B9E85041E17A14BE7AA75441A0FFC135B9E85041E7B5A2C67AA75441C8565D1CB8E8504128C4F1337BA75441236998A6B7E85041E7B98FCB7BA75441621B0F9AB7E850415D3A3AB57BA7544114AE4791B7E850411F85EBC17BA7544133333333B7E850417B14AE577BA754411132C48FB7E8504195FF54E87AA754419F98109FB7E850412CEE20C77AA754417BAE5FE8B7E85041278019667AA7544166666636B8E8504114AE477178A75441421D9836B8E8504140502E7178A7544171994D37B8E850419FE6836C78A754411DEBE04CB9E850412924F8CB77A75441F40A3699BAE8504178A5192277A7544190108A0FBBE850415D9DEB6A76A75441DFF2DAD4BBE85041E4086C6E75A7544114AE47F1BBE850413D0AD74375A754416A275417BCE85041460C31D674A7544155FFBB48BCE850416835AA3274A754410993C27BBCE85041AA09C5B473A754419A9999B9BCE85041295C8F0273A754419BF5EB17BFE85041C6DDFA9970A75441A2A1F969BFE850416CD15F3570A75441D62A0F72BFE85041C6A43FE66EA75441C6562B75BFE85041CC2AD6D96EA754410AD7A370BFE85041AE47E18A6EA75441E7880B81BFE85041558B7B5F6EA75441301ACBFDBEE85041A5F53BD86EA7544127EBA078BDE850415B4B9AFC70A754416DA0EB4ABAE850418B82A63375A754417042A15AB6E85041054EF83E7AA7544170C01B4DB3E85041FEFAD7817EA75441907E9FA9B3E8504198C40EBD7EA75441E2A436B0B3E8504184C7E6C07EA7544172F1E010B5E850419D4EAE707FA75441BA217AF8B5E8504134A3DD487FA75441E5539115B6E850412546C7A77FA75441C8DFF913B6E850412AE2EDA97FA7544185EB5118B6E85041713D0AB77FA7544174522345B4E850414569C5E781A754410B37EA0FB4E8504168C1953982A75441083F6FBBB4E850413FEE91B682A75441AC97A4D3B4E85041BA4AF5EB82A75441DAEA6CDBB4E85041E6FFEAF282A75441175003AEB5E85041BCB75E5983A75441AEC36A6AB7E850412E2DF65683A7544134298DB7B7E85041FE083A4783A7544166666636B8E85041F6285C1F83A7544163092558B8E8504179ED832E83A75441FAD76C58B8E8504129E5792E83A7544128763E12B9E8504148D6465583A75441499E8EABB9E85041549BF3C683A75441E17A140EBAE85041333333F383A754419C1DDCF8B9E850416CD70B8D84A75441B843BBF2B9E850419103610785A75441DEC96782BAE8504104D1C95B86A754412F2753FEBBE850419442C95388A754414039C905BCE850412506B55988A75441EC51B87EBCE8504114AE47B188A75441AD7DE081BCE850412B652EBC88A75441B6332788BCE85041806C29C188A75441AEF28390BCE8504132D5BAEE88A754410AD7A3D0BCE85041C3F528CC89A754410AD7A3D0BCE8504148E17A948AA75441295C8F72BCE85041713D0AE78AA75441F67220C5B9E850418F100D308AA75441C428DCC1B9E8504142CD2D2F8AA75441F6285CAFB9E85041A4703D2A8AA754415C8FC245B9E85041E17A146E89A7544146515F54B8E8504157D961D888A75441B985434CB8E8504146FA0ED588A75441410193F8B7E850414C15B7EF88A75441D67FC843B7E85041F7B8E93189A75441B15B19B9B6E85041EACD68E588A75441E1B6B6FAB6E85041E73359DF88A75441AE47E16AB6E85041EC51B85E88A75441B13BB06FB6E85041C749C3DE87A75441ACCB935FB6E85041AA539E1387A75441D7A370DDB5E850417B14AE8786A7544103E67B3DB6E85041937AEDE485A75441BFCFE063B6E85041180E577985A7544152B81E15B5E85041000000B084A7544105BFBDD7B3E85041D6D190C484A7544106103CBBB3E85041F65C87C884A75441A4E4D13EB3E850416A77FE1285A75441BB439AFEB2E8504152AD1A2385A75441CDCCCC8CB2E850410AD7A36085A7544194B7D3F0B1E850412134631785A754419AA2D2ABB1E850413DD3090285A7544171803580B1E85041D0EE47A484A7544166666666B1E850410AD7A38084A754417EA01C6AB1E85041C93EC77484A75441F594E865B1E850412C0DBE6B84A754413C291C97B1E8504128D2FAE483A7544114AE47A1B1E8504148E17AC483A75441428273A3B1E85041F9612DC383A754414231C7AAB1E85041F8E41BAF83A75441A42846A7B2E85041F080971F83A754413F8637B7B2E850411563AE7B82A75441411E1E35B3E85041F5E4971A82A75441CDCCCC6CB3E85041B81E856B81A75441C3F528DCB1E850413D0AD73382A75441516B980FB1E85041CFB5664C82A754414D03B170B0E850411A56A97382A7544135FD1C99AFE85041BD59F4F882A75441C3F5283CAFE85041295C8F4283A7544185E45C30AFE850416EDEB83983A75441512D2230AFE850414B2CDD3983A75441D3D94595AEE85041F33B89C582A75441BC5F5F7FAEE85041E5C515B582A75441646D1961AEE85041572F589E82A7544116448B7EAEE85041304BBB6182A7544186D3104AACE85041BA074B4883A7544109247F3FACE8504113E5855483A754410CC9CD06ACE8504147E971A283A75441E8F353D2ABE85041263A6AE083A754418B9FEF7DABE85041E9E3CC5384A754413E3BE22EABE85041A3CA510985A754419B34919BAAE85041034806A485A7544168C2E181AAE85041AD6BF69886A75441F6689ACBA9E8504105C8323C87A75441295C8F92A9E85041EC51B87E87A75441AE47E19AA8E85041B81E853B88A754410CAD09DAA7E850413E85A3E188A75441151EB012A7E85041AE047BAB89A75441C8077D09A7E850419A53B0B589A7544189CD8B98A4E850410E82B31D8DA7544174728B2EA4E850418AAFBC0D8EA7544185EB5118A4E85041713D0A678EA7544133333373A3E85041E17A145E8FA75441B420410FA3E85041AD47BC2590A754414EACFA04A3E85041DE1ABD3F90A754415F223D65A2E8504159EF137F91A7544114AE47F1A2E85041333333A392A75441D9207738A2E85041197292CE93A7544180483FA4A1E85041BA3EE0D594A7544102BD4D76A1E850419624CD0995A754419B4C04D2A0E85041D4FE1EBB95A7544185EB5198A0E85041F6285CFF95A75441246E58DA9FE850412A2EBB4296A75441503D2DE09FE850418E16525C96A7544194E34816A0E85041CB1DEC4697A75441E1D2F10BA0E85041E34831B497A754413362F09B9FE85041A9635B0898A7544172CD51BC9EE850419DB7D24298A754414433302E9EE85041E6DEAE0599A75441C14D0EF99DE85041881017F699A754413F19E3459DE8504181DD7C7D9AA75441C4C0B8459DE85041E796F7B89AA754417B14AE479DE850418FC2F5C89AA75441A771E2029DE85041CBA4B4D39AA75441896E4B749CE850419CC7DDF99AA754412420DD099CE85041AA179AFA9AA75441EC51B8CE9BE850413D0AD7039BA754418F724BFD9AE85041F025E9329CA75441295C8FE29AE85041F0F9F8159DA75441295C8FE29AE850411F85EBE19EA7544175DF8BCE9AE85041F5D4620E9FA75441D9405BC49AE850412D92BA829FA754415A32013E9AE850417DACA488A0A7544169FEB93B9AE850415AD168EFA0A754419AF48F309AE850413D5AE602A1A754410071935599E850415D4CA0D6A2A754413D96C41699E8504134B8337DA3A75441D35171DC98E85041A5DF59D9A3A754410AD7A3D098E85041295C8FF2A3A75441D3C71AA898E850412EF8906EA4A754417963186C98E8504108096C78A5A7544145FF84EE97E8504123664FA6A6A7544167CCF7E297E85041A517A6C9A6A75441234142A397E850417662BFBEA7A754410090347697E85041B1696016A8A75441B81E854B97E850418FC2F598A8A75441E0EA5C0F97E85041FA9931D1A8A7544135EEECF596E850415DA007F8A8A7544165F5549596E850412B304765A9A754417437781B96E85041F34D8395AAA754411CA919CB95E8504174B32F25ABA75441B81E858B95E85041A4703DBAABA754411F85EB2195E8504148E17A24ACA754412D4827EA94E850411DF2F681ACA75441923727B494E8504111B7F503ADA754416CC62F5194E8504142DEFE82ADA7544178C7316494E85041AC20A186ADA754415FCB71E993E85041EB1CC13EAEA754411E1A9A2394E85041DFD925D0AEA75441A4703D2A94E85041B81E85DBAEA75441E203FF2994E85041682122E0AEA75441559B073894E85041209A3703AFA7544111F5531694E8504169FB3B54B0A75441295C8F1294E85041B81E859BB0A7544151FB40EC93E85041DF0A1CD5B0A7544188E526C293E85041BD385029B1A75441CA7F067C93E850410D246A61B1A75441D662404792E8504101413096B2A7544172045F2992E8504188FAF2D1B2A75441EC51B85E92E85041CDCCCCBCB3A754417267DA5D92E850410D8C9FBEB3A75441AECC846092E85041EB8849C5B3A7544118AEC83D92E8504107BD1202B4A754418FC2F5E891E8504148E17AB4B4A75441FE16B3CB91E85041CC80B8C9B4A75441C22C59C391E850415DDA55D8B4A7544184D7EE1F8FE85041BBA422C0B6A75441C48984198FE85041C65894CFB6A75441C29417408FE85041CB1D61ECB6A7544102DFA75B8FE850418F0F46E7B6A754410A3FF6718FE850411ACA9C11B7A7544198AFA1908FE850415CB98228B7A754413FE8B6E38FE8504118618600B7A754415BA0950290E850411A0C4106B7A75441704A78EE8FE85041F7216920B7A7544114AE471190E850419A999919B7A75441825E88B28EE850419595A506B9A75441B166EA638DE85041C5745FF8BAA7544116ED7D3D8DE85041CE354C56BBA75441343204CA8BE85041C759C3CABEA754418A86334D89E8504169290BBCC4A75441E3252C3288E850419E96FEA2C7A754417AE0723F87E8504134FB5D10CAA754418FC2F5B886E85041295C8F72CBA75441F6285CDF87E8504185EB51A8CDA75441D7133BC287E85041CB71F8BECDA75441234460C587E850415762DACDCDA75441EB5DF41185E85041ED1C14E8CFA75441B062C6F284E85041F0F57734D0A754417101192B84E85041FB6AA927D2A754418FC2F51884E85041A4703D5AD2A75441B074FB7C84E85041CBCF2B4FD2A75441FB519E6285E85041D247CB1BD2A754413B47446E86E85041BCC02318D2A7544152B81E9586E850413D0AD713D2A754412095A09886E85041F6AF8F17D2A75441AA4EFF9986E850410DE68A17D2A75441FA6FA49F86E85041AD1E011FD2A754411F85EB5187E85041C3F528DCD2A754412C1A292587E8504134E8BA46D3A75441736F170F87E850416372B4AED3A75441CBCACD7A88E850419FB7260ED4A75441C3F5282C8BE85041EC51B89ED4A75441D42AC6408BE850412EAA76C8D4A754413907D15A8BE850414A334CCFD4A754415C5B2F578BE850414279D8F5D4A75441F6285C5F8BE8504166666606D5A7544108314A1D8BE850410826645CD7A75441A3A4D8B48AE850414DD209B1DBA754415E0B7AE48AE85041D36D68ABDBA754419F95EE208BE8504194CE709BDBA75441A95B13428BE8504102F157A0DBA75441AE47E16A8BE85041B81E859BDBA7544170DA42E48AE85041A52CCCB8DEA75441EA8A85E38AE850417916B176DFA7544114AE47718DE850411F85EB41E0A75441F692657A8FE850416D2929ABE0A75441EECCA98B91E85041A4347C05E1A75441B14492ED91E850417566AF49E0A75441CF4C912392E8504140C2BDE5DFA7544121DD99D692E85041D8B3C082DEA75441244670D992E85041B87A4C7CDEA7544101CCEDE893E8504148299148DCA754417FAC4D0794E850410F539626DCA75441D7A3704D94E85041B81E859BDBA754418F24BDFB94E8504145162173DBA754413FD65D3F95E850411892B45ADBA75441BD0482AC95E85041349ECA43DBA7544105DD814596E8504195460E49DBA754418153604696E850415A1D474ADBA754410000006096E850418FC2F548DBA75441D7A370ED96E8504148E17A34DCA75441F8E561ED96E85041A26F2135DCA7544139A18CEE96E850412887C536DCA754418EA962E996E85041B6444A62DCA754415363A2B496E8504111AE49B6DEA75441AB3E7A4D96E85041912D87A5E4A75441AA624BB296E85041CA32C89BE5A7544158B09C4596E850410B8E1096E5A7544152B81E2596E850418FC2F598E5A754414673CD1B96E85041CD7FDD93E5A75441BBD7280F96E85041E23B3393E5A754416699B9A195E85041AE6C2259E5A7544152B81E4595E85041E17A141EE7A75441B7924C4495E85041E6269420E7A754415116BC3D95E85041E332D37FE7A7544147E2E7D894E850410EC89680E8A754419328714E94E85041E2DFF81CEAA75441ED72B16194E850418F413216EBA754416E6F126794E8504161C2283EEBA75441150602F993E85041635EC758ECA75441DF556A9193E850411960D523EDA75441B6EA337893E850419A90A055EDA75441F6285C0F93E850410AD7A340EEA7544155310A7592E8504122DA3D80EEA75441A75E433992E85041ED90D3A8EEA754411F85EBA191E8504166666696EFA75441CF78108791E850412764C8A9EFA75441C806757A91E85041CC1FFCBCEFA75441B654738590E850415A564C6FF0A7544173AD1F5790E85041AE47E16AF0A754413D0AD7838FE85041AE47E16AF0A75441437B99338FE850416A91E5ECF0A754417FD6E7DB8EE85041A4EBA2A4F1A754411F85EBE18FE85041713D0A07F2A754411F85EBE18FE8504148C63822F2A75441B50328E38FE850417A5BC222F2A754411F85EBE18FE85041AAED842AF2A754411F85EBE18FE850413D0AD7C3F2A75441CC6513C08FE85041DCD9F3FEF2A75441542584BF8FE850416D037702F3A754411C35574A8FE85041277E46D5F3A75441C0C7C3378FE850413A1CA205F4A75441EC51B8DE8EE850414F973436F5A75441EC51B8DE8EE85041EB22FCB6F5A75441904119E58EE850419E456D79F6A75441EC51B8DE8EE850419894A381F6A75441EC51B8DE8EE85041A4703D8AF6A754419ACD25A88DE850419F04236EF8A75441D3126F588DE8504130D5EB04F9A75441E41181FA8CE85041F5F7AF7CF9A754413D0AD7E38CE85041000000A0F9A75441D7A3709D8CE8504114AE4701FBA754415B63168D8CE850413F215822FBA75441B7EF2E878CE850416ADC7C46FBA75441499129E78BE85041B77BB9CCFCA75441B2A38CFD8AE85041CFF81F51FEA754416E998BAF8AE85041D3D7DEEBFEA754414CF1F27C8BE8504142B7B676FFA75441F2D5C8E98BE85041C6AC8FB6FFA754414D6459438CE8504128ADD2FCFFA75441295C8F628CE850411F85EB1100A85441666666168EE850410000005001A85441198D2E0F8EE85041C763F44C01A854413BD77F4B8EE85041DC5C237601A85441780A394D8BE85041595ADB2E00A854412A7D29AA8AE85041AC7DFB4900A8544149A5C6968AE850419E20DE5200A85441A64A718D8AE85041ECFAC3C901A854414842DC718AE85041F347A67002A854417B14AE678AE85041AE47E14A03A85441D01B591E8AE85041F76B9D7A03A854419ED9646289E85041FF66B92204A854416F76D2DE88E850418AF40F5805A854419AADB76088E850415D1BB33006A854411F85EB3188E85041B81E859B06A85441AC4E961488E85041A225F4DE06A854412CB649CB87E850414D925DA007A8544117CAB66B87E850411611660F09A854413B636B1987E8504189BAEA680AA85441EBE1211587E850418610BD730AA85441B81E850B87E85041CDCCCC9C0AA854419BE917DB86E850410ABC3D060BA854415127079786E8504150860DB20BA854411CDEFF4486E85041209352820DA85441A3B8811B86E8504197CA955F0EA85441A045F0E085E85041581E49C90FA85441D65CAAC985E8504140E7A66910A85441021023BC85E8504124317DAD10A85441AB63AA6885E85041AB0308C012A8544199801F5985E850411B91BB4913A854411CD3112085E85041D27684E014A85441C27664DC84E85041452EB45816A8544176DFA4BF84E85041E3BF27AD17A854411F85EBB184E8504185EB517818A85441E3C3A28384E85041A070832319A85441A7B6CE7C84E85041BB85E64919A85441251E122884E85041E6E37F9B1AA85441E19BE4C683E85041FF9E8EB51FA854415D2AF2BD83E8504130A4A86E20A85441C59472C983E850418F7C312822A854410CFA9CCA83E850418F31DC4422A854414ECBD7D783E850415F26697423A85441A1D809F183E85041265FD08B24A8544114AE470184E8504114AE472125A8544127527FFB83E850411B8F4F2F25A8544177ECAFC683E85041F811640526A8544165DFFBEB84E850417C0704A227A85441FC64624C86E85041EBFD348B29A8544100A71CC486E85041E09E8A282AA8544169304DC186E85041D9FA812D2AA8544148E17AC486E850411F85EB312AA854410F4ACA1D86E850418198724E2BA85441F72C7EA184E85041110378EE2DA854418288773484E8504187467DC92EA854417C8B515784E85041263BC5F52FA85441CDCCCCCC85E850411F85EB2130A85441EC4B73E085E85041C720FD3130A85441A2339FF485E85041E99A893430A85441EE8FAF2886E85041D9E10E6D30A85441EC51B84E86E85041C3F5288C30A85441EC51B84E86E8504123FCF4B530A854410B6BBC5E86E8504180057ADB30A85441205C454F86E85041338AC64B31A854413D35CF7B85E85041512C581432A85441EDDD5B6885E850412B725F5E32A85441FC099D1885E8504162BCE66033A85441CCE3A51185E8504117E21F6333A854410AD7A31085E85041713D0A6733A85441C5825DA784E850414DD5179933A8544120AF8F2984E8504160E448F233A854411E51682584E850415021E54C34A85441EC51B88E84E8504114AE470138A8544141C7E95584E850410CCDB56E38A854411CAFE7F683E850416F371A5C39A854413CF53BB782E850411DE384A73AA8544116F55C0E83E850414CB9ECD53AA854418014306783E8504144452FFD3AA854415C373A5286E850415DCBD2693AA85441B3177C7286E8504178D0AC583AA8544133E12F9186E85041706B675D3AA85441295C8F0287E85041713D0A473AA85441B674BB3587E850412783BF763AA85441F352169A87E85041BC8D34863AA854412A796D6A87E8504120E978933AA85441E539144B88E850412FD151793BA85441D7A3701D89E85041D7A3703D3CA85441FA396B1A89E850410495763F3CA854412294ED2289E85041D88CDF463CA85441318B567288E8504165F71FC73CA85441756A536088E850417F1D37E13CA85441EC2C5D3488E85041A37E30343DA85441063A286D88E850417BE95AE03DA8544166DB827288E8504113897EFD3DA8544148E17A8488E85041CDCCCC2C3EA854414FAD1D8188E8504181F9FA4C3EA85441F15B5F9488E8504139A7C8B53EA8544158854F4888E8504165A95F6C40A854411F85EB3188E85041295C8F4241A8544116A94D1988E850417648445D41A8544141B8401888E850410290836241A85441F12C223F87E850415E245D6942A85441759EB2F588E85041C06F3B9D44A854419A9999898AE8504152B81E8546A854415C8FC2858CE85041713D0A0748A854412B67EDAB8DE85041CB1BB93548A854414DF350AC8DE85041BB293F3548A85441000000D08DE85041000000C047A8544118C3C65E8FE8504109CDEAC747A854415F626A0C90E85041D1D1E8BE47A85441A2CBDF2690E85041D0CEE3CB47A8544148E17A3490E85041C3F528CC47A85441265F2F3F90E850410A0DD1D747A8544153970C6B90E85041130756ED47A85441F358D46691E85041589F3AF748A85441F2CDD6B791E85041DB324A1D49A854411F85EB8192E850413D0AD77349A85441EC51B85E92E850410AD7A37048A854419E85FAA392E85041A195950C48A85441CDCCCC9C93E850414D0C3B9E46A85441CDCCCC9C93E850418B67971846A854417719FA6791E850418AB14A2C45A85441CFB836EC90E8504138045A0C44A854417737C75590E85041F9682FE743A85441A1B878F58FE85041FCAC8E5042A85441015837C38FE850417B60DE9E41A85441F4EE19628FE8504128A9C29340A85441755D365F8FE8504101AF453E40A85441AC212DF58EE850419A5B25CB3EA854416147CEF68EE85041F20A00C63EA85441A15AD6538FE85041526437A03DA854413C1729748FE85041AEA4592C3DA8544170E1277A8FE85041A2A8BFE03CA85441D5E7AA9B8FE850413F2A34F73AA85441C7BC79E18FE85041C48016333AA854415C8FC2258FE85041A4703D5A3AA8544114AE47518EE8504114AE47C139A854411F82B28C8EE85041F859137739A854410FA445DA8EE8504146E0FCE438A85441740716CB8EE85041892D16CF37A8544128E292C68EE850416904E95337A85441B81E85BB8EE8504185EB518836A854410717FDBE8EE8504136F3D98436A85441FE35ECBE8EE85041932F0D8336A854411FDBAE448FE85041D05033FC35A85441A962C5468FE8504194A711FD35A854410AD7A3608FE85041333333E335A8544168A0F10B90E850412561154F36A854412A5BD9AF90E8504195A3429336A85441C3F5282C91E85041333333E335A854411CDD163591E850416508FCDE35A85441C9DF244891E850411140C5C335A854417A2D4A9B92E85041D41AE13535A8544148E17AD492E85041AE47E11A35A85441FAEC93D892E85041FADA3C1C35A85441009797DC92E850412EE78E1A35A854414B7B3F4793E850413F80F92035A85441C878B98893E850410AA930B534A854416239B88A93E8504139703BB534A854418E981BB393E850410369A17634A85441D7A370ED94E850419A99997932A8544111E4064996E85041D6D575152FA85441D269024696E85041E065A9E12EA85441C6014F4496E85041E1843AD32EA8544159912A4596E850417ACC78D22EA85441FD4F526496E8504107EB49D12EA854413D0AD71398E85041B81E859B2AA85441713D0A3798E85041A4703D3A29A85441B81E854B97E850418FC2F5F826A854417B14AE9795E85041EC51B8CE24A85441FF96AF5496E85041EBDD2E3923A85441A224C9D296E85041C2966C1E22A8544105A348D796E85041F0E1F72022A8544114AE47E196E85041B81E850B22A854411EA8EF9897E85041E3E47F8E22A85441D569B03798E85041299E4AE822A85441FA1E0AFE99E85041E583C27F23A85441339189C69AE85041DF918DF822A854416E036F1C9BE85041EA0B7AB222A85441F5BF79BD9BE85041D2A5454522A85441AE5E2AC89BE85041CCE1053E22A8544108AD68D89CE85041E0A9594D1FA854415F21B92F9EE8504177BD93C01BA85441255E3D549FE8504156A2077A18A854417528F7729FE850410121BF6818A8544185EB51789FE85041A4703D5A18A854411C0000003570743FF2E85041BE9B55E43EA754413B7A7220F3E8504161736BFC3DA754416CF80A73F4E85041E12F7D3D3DA75441F2D26C66F5E850413B0427183DA75441149F75C9F5E850418761537D3CA75441AA0FE082F6E8504143E472843BA75441CB39C62BF7E85041DB82888B3AA75441246D5B30F7E85041B5AB29713AA7544123019B3FF7E850414EA61D723AA754412F40B2A8F7E8504115683D2F3AA7544157A32AA8F7E85041A49469313AA7544114C3DD6CF8E85041C27308FA3AA75441ABDA83EBF8E85041EE4FD67B3BA75441F11044DEF8E850417F25447E3CA7544110BDF72EF8E85041F2C4DCC63DA7544160249367F8E85041106A121A3FA754411322E42CF8E8504172022A4740A754411CF19EA6F6E850415DBA0FAA40A75441DFB941DEF5E850416E1F8B9840A754413B9B5F41F5E85041B534B7C841A75441B8FE00CAF4E850415EF1D4E241A754414AC99934F4E850418EF4792841A754415DC9CA99F3E8504132AE558E40A75441EF6D5DA0F2E850415030467740A754419D48AE62F2E850418C74144340A75441EBFF9A0CF2E850415A6FE9D03FA75441986F18E9F1E85041597E289F3FA754413570743FF2E85041BE9B55E43EA754410F000000554DF39290E85041B502FDBD2EA8544189C10F6790E850416FA91AAD2EA854414CC5A35C90E850416E991D692DA8544139D1CDCB90E850411AAA7F422CA85441276E6E2091E85041A517AF9C2BA854418796AB0E92E8504179C600672AA85441EF18644392E850411B808D7928A85441622FD4C492E85041535B097828A85441E103E46B93E85041995C147628A854418A0A2C5594E850419CD5A7BD29A85441DA0A2F2C94E850418B9392F52AA8544150CDFC6093E850413C514C6A2CA85441F172C3C492E85041560FF94D2EA85441251962F591E8504144E856462FA85441554DF39290E85041B502FDBD2EA85441130000003A257F6A99E850413265D282EAA7544199C4D17299E850414F9A7EDFEAA75441334039B698E85041543B8115EBA75441C82C354F98E85041B29DB1ACEAA75441851712AD97E85041D5A84F14EAA75441A540D1D197E85041FC357C7CE9A7544170B6F90897E850412BA65021E9A754411979729E96E850415AB571ACE8A754411F8A3C8E96E85041B87662D6E7A75441B95B0A4897E85041F7525FB3E6A754416EC7905097E85041BB92ACD0E5A75441595BC49A98E85041EBC99BAFE5A7544102FBE01499E85041D18D341CE5A75441FC61F69799E85041185E499CE5A75441E165231F9AE85041E2D509A2E7A75441C3776C1F9AE85041AA58A30DE8A75441A71E2FFD99E85041A1A86685E8A75441D3F527F599E85041795F8FEFE8A754413A257F6A99E850413265D282EAA7544118000000DC54D51FEDE85041FC98C7B942A7544150D2F04CEDE85041B3BEF93942A75441760214EEEDE850419A185EBB41A75441F30B084FEEE850415C1468A741A75441AAD8F37DEEE85041BA5E62D341A7544155492A8DEEE850412D9F9FE241A75441ADC88194EEE85041C8A647EE41A754418D57C797EEE8504178DA75F341A75441FDB03144EFE8504124F2BA4542A754419ECAEF9CEFE850411A93D78442A75441D30C71A3EFE8504171AD95E042A754411682FF69EFE850418093145043A754419055826AEFE850418AF1125243A754415C962969EFE8504192CB7F5243A75441A9E8DB04EFE85041F318084D45A754417FA07D02EFE8504101FBE44D45A75441DD73A4D7EEE850411507272C45A75441EB0E7530EEE85041D322CF2645A75441EE7022B2ECE850418CCA3AE444A7544111191AC5EBE85041FEE5A2EC43A75441F7A94DD4ECE85041530285D643A75441D5119773EDE8504184DA6D4043A75441096C1247EDE850416CA62DCD42A75441DC54D51FEDE85041FC98C7B942A7544112000000D2212A82F8E85041317E390138A75441E238B6B9F7E85041B4B8F3EA37A754419DAD7270F7E85041B4B8F3EA37A75441B4037050F7E8504188E62CF437A754415B9B44EDF6E850412FDC5AB637A75441C6A2CA9CF6E85041ADD19DA837A754415E258424F6E85041F8D2A7C136A75441C01191A2F6E85041B5232A2136A7544128BA2ECBF7E85041CD5302BB35A754410E0263ACF8E8504169991C9435A75441B5E83656F9E85041228A499E35A75441E8167652F9E8504153F7374136A75441D42D5A92F9E85041DE46BB6936A754415042613BF9E850413F6247D136A75441BE6F5708F9E85041715CA3E436A75441F852579EF8E8504144BF954B37A75441197BA9A9F8E8504144DBB1C437A75441D2212A82F8E85041317E390138A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>343273 - 226454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000200000018000000C3F5288C61FA504166666686A3C45441333333F35FFA5041AE47E17AA2C45441666666865CFA5041CDCCCC3C9FC45441666666165CFA50411F85EB419EC45441333333435CFA5041EC51B8CE9DC4544114AE47A155FA5041A4703D8A9FC45441713D0AF74DFA5041AE47E18AA1C454411F85EBB14FFA50419A9999D9A2C454410AD7A3B051FA5041EC51B87EA3C45441D7A3701D54FA5041EC51B87EA3C454410000006058FA50417B14AE47A3C45441CDCCCCCC5AFA5041F6285CDFA3C45441333333D35BFA5041AE47E12AA5C45441713D0AF763FA5041D7A370ADA6C4544114AE471166FA50417B14AE07A6C45441B81E856B67FA5041F6285C5FA6C4544185EB51C86EFA504133333373A4C4544148E17A347EFA5041B81E856BA0C45441EC51B8AE7EFA504114AE47D194C454413D0AD7835EFA504185EB51389DC454417B14AE5762FA504185EB51A8A1C45441F6285C7F63FA5041713D0A47A3C454415C8FC2B562FA504114AE47B1A3C45441C3F5288C61FA504166666686A3C454410B000000A4703DEA75FA50411F85EB419CC45441333333C375FA5041333333339AC45441A4703D7A76FA504114AE478199C4544185EB518877FA5041E17A14FE98C45441C3F5288C78FA50410AD7A3E098C45441B81E85EB78FA5041AE47E19A99C45441F6285C3F79FA5041D7A370FD9BC454410000001079FA5041EC51B86E9DC454410000003078FA5041C3F528FC9DC45441F6285C0F77FA50419A9999A99DC45441A4703DEA75FA50411F85EB419CC45441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000BFB92E435CFA504167D3C3CE9DC45441583E02C858FA504105D387B79EC45441542755A155FA5041BBEB398A9FC454416CD013D259FA504152F2A85BA0C45441B95482EA5EFA50413C0B4C5AA1C454411B48D18B5EFA504157A7A526A1C45441D79BE0715DFA50416D8FDC8CA0C454410B9242355CFA50417382B4E69EC45441357DDE405CFA5041E4FF0CA19EC45441509370585CFA5041217CA0139EC454419A364ED55CFA5041CA5D99A89DC45441BFB92E435CFA504167D3C3CE9DC45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345437 - 1234377
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -233  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E10A6F835141E17A141E28B754418FC2F5985D835141AE47E1EA1EB7544185EB51E85D8351419A9999B91FB75441AE47E14A62835141A4703D6A26B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441EC51B8DE74835141E17A14BE24B754415C8FC2457583514185EB513822B75441F6285CAF768351411F85EBA11FB75441E17A14EE778351418FC2F5B81EB754413D0AD79379835141CDCCCC0C1EB754415C8FC2757B83514148E17A041EB75441E17A141E7E835141713D0A671CB75441E17A148E7E835141295C8F421BB75441C3F528DC7E8351413333337319B754419A9999E97E8351417B14AEB717B7544148E17A047F8351416666661616B754413D0AD73380835141295C8F3214B7544114AE478180835141E17A149E12B75441666666767F835141295C8FA210B75441CDCCCCEC7E8351413D0AD7F30EB754410AD7A3407E83514148E17AC40CB75441333333837E835141000000600BB754413D0AD7D37A835141B81E854B00B7544148E17AC47583514185EB5118F1B65441AE47E1BA738351415C8FC2F5EAB65441AE47E19A6A8351419A999929EDB6544114AE47C16883514100000010EEB65441713D0A17678351417B14AEB7EFB654410AD7A36066835141C3F528BCF0B65441D7A3708D628351411F85EB31F6B654416666663659835141E17A142E04B75441F6285CCF58835141EC51B8CE04B75441A4703D0A5983514152B81E4505B75441C3F528EC5983514185EB51A805B754411F85EB815B8351411F85EBF105B75441713D0A47628351417B14AE67F9B65441B81E85DB7A835141333333E303B75441EC51B80E7B835141AE47E15A06B75441E17A148E74835141A4703D6A14B75441CDCCCCAC798351413D0AD72317B75441AE47E10A6F835141E17A141E28B75441
+</a>
+
+<b>
+01060000000100000001030000000100000032000000AE47E10A6F835141E17A141E28B75441F9A4CD3A648351417E4A466A22B75441A109F52563835141BF1446D821B75441D0A9D6E561835141895655FE22B7544125966A7462835141EC59685025B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441EC51B8DE74835141E17A14BE24B754415C8FC2457583514185EB513822B75441F6285CAF768351411F85EBA11FB75441E17A14EE778351418FC2F5B81EB754413D0AD79379835141CDCCCC0C1EB754415C8FC2757B83514148E17A041EB75441E17A141E7E835141713D0A671CB75441E17A148E7E835141295C8F421BB75441C3F528DC7E8351413333337319B754419A9999E97E8351417B14AEB717B7544148E17A047F8351416666661616B754413D0AD73380835141295C8F3214B7544114AE478180835141E17A149E12B75441666666767F835141295C8FA210B75441CDCCCCEC7E8351413D0AD7F30EB754410AD7A3407E83514148E17AC40CB75441333333837E835141000000600BB754413D0AD7D37A835141B81E854B00B7544148E17AC47583514185EB5118F1B65441AE47E1BA738351415C8FC2F5EAB65441AE47E19A6A8351419A999929EDB6544114AE47C16883514100000010EEB65441713D0A17678351417B14AEB7EFB654410AD7A36066835141C3F528BCF0B65441D7A3708D628351411F85EB31F6B654416666663659835141E17A142E04B75441F6285CCF58835141EC51B8CE04B75441A4703D0A5983514152B81E4505B75441C3F528EC5983514185EB51A805B754411F85EB815B8351411F85EBF105B75441713D0A47628351417B14AE67F9B65441B81E85DB7A835141333333E303B75441EC51B80E7B835141AE47E15A06B75441E17A148E74835141A4703D6A14B75441CDCCCCAC798351413D0AD72317B75441AE47E10A6F835141E17A141E28B75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345437 - 3425819
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -233  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E10A6F835141E17A141E28B754418FC2F5985D835141AE47E1EA1EB7544185EB51E85D8351419A9999B91FB75441AE47E14A62835141A4703D6A26B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441EC51B8DE74835141E17A14BE24B754415C8FC2457583514185EB513822B75441F6285CAF768351411F85EBA11FB75441E17A14EE778351418FC2F5B81EB754413D0AD79379835141CDCCCC0C1EB754415C8FC2757B83514148E17A041EB75441E17A141E7E835141713D0A671CB75441E17A148E7E835141295C8F421BB75441C3F528DC7E8351413333337319B754419A9999E97E8351417B14AEB717B7544148E17A047F8351416666661616B754413D0AD73380835141295C8F3214B7544114AE478180835141E17A149E12B75441666666767F835141295C8FA210B75441CDCCCCEC7E8351413D0AD7F30EB754410AD7A3407E83514148E17AC40CB75441333333837E835141000000600BB754413D0AD7D37A835141B81E854B00B7544148E17AC47583514185EB5118F1B65441AE47E1BA738351415C8FC2F5EAB65441AE47E19A6A8351419A999929EDB6544114AE47C16883514100000010EEB65441713D0A17678351417B14AEB7EFB654410AD7A36066835141C3F528BCF0B65441D7A3708D628351411F85EB31F6B654416666663659835141E17A142E04B75441F6285CCF58835141EC51B8CE04B75441A4703D0A5983514152B81E4505B75441C3F528EC5983514185EB51A805B754411F85EB815B8351411F85EBF105B75441713D0A47628351417B14AE67F9B65441B81E85DB7A835141333333E303B75441EC51B80E7B835141AE47E15A06B75441E17A148E74835141A4703D6A14B75441CDCCCCAC798351413D0AD72317B75441AE47E10A6F835141E17A141E28B75441
+</a>
+
+<b>
+01060000000100000001030000000100000032000000AE47E10A6F835141E17A141E28B75441F9A4CD3A648351417E4A466A22B75441A109F52563835141BF1446D821B75441D0A9D6E561835141895655FE22B7544125966A7462835141EC59685025B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441EC51B8DE74835141E17A14BE24B754415C8FC2457583514185EB513822B75441F6285CAF768351411F85EBA11FB75441E17A14EE778351418FC2F5B81EB754413D0AD79379835141CDCCCC0C1EB754415C8FC2757B83514148E17A041EB75441E17A141E7E835141713D0A671CB75441E17A148E7E835141295C8F421BB75441C3F528DC7E8351413333337319B754419A9999E97E8351417B14AEB717B7544148E17A047F8351416666661616B754413D0AD73380835141295C8F3214B7544114AE478180835141E17A149E12B75441666666767F835141295C8FA210B75441CDCCCCEC7E8351413D0AD7F30EB754410AD7A3407E83514148E17AC40CB75441333333837E835141000000600BB754413D0AD7D37A835141B81E854B00B7544148E17AC47583514185EB5118F1B65441AE47E1BA738351415C8FC2F5EAB65441AE47E19A6A8351419A999929EDB6544114AE47C16883514100000010EEB65441713D0A17678351417B14AEB7EFB654410AD7A36066835141C3F528BCF0B65441D7A3708D628351411F85EB31F6B654416666663659835141E17A142E04B75441F6285CCF58835141EC51B8CE04B75441A4703D0A5983514152B81E4505B75441C3F528EC5983514185EB51A805B754411F85EB815B8351411F85EBF105B75441713D0A47628351417B14AE67F9B65441B81E85DB7A835141333333E303B75441EC51B80E7B835141AE47E15A06B75441E17A148E74835141A4703D6A14B75441CDCCCCAC798351413D0AD72317B75441AE47E10A6F835141E17A141E28B75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351646 - 1281874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51E8491E5141333333D38AED5441295C8FF2491E5141F6285C8F8AED5441713D0A57481E51417B14AE177CED5441713D0A17481E5141A4703D1A74ED5441295C8F52461E51417B14AE876DED54411F85EBC1441E5141E17A140E6CED54415C8FC265201E51415C8FC28564ED5441000000E0E71D5141E17A143E5FED5441A4703D7AE61D5141E17A145E60ED5441713D0A77E21D51411F85EBC180ED544185EB51E8491E5141333333D38AED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000048E17A24E41D5141295C8FE25EED5441D7A3709D9D1D5141AE47E1CA57ED54413D0AD7F39B1D51419A9999A958ED54413D0AD783991D51410AD7A3A05FED5441C3F5286C951D51419A9999296AED54419A9999A98F1D51415C8FC2B578ED54417DCC6F46F61D51416BDD7DAF82ED544123CE2C3AF71D5141DFD152057CED54419FF838A9F81D5141049FDDF876ED544169054431F91D51411CF6703574ED5441134DEF0AFA1D51410B1AD8516FED5441AF3A684AFA1D514169091C536AED544108B62426FA1D5141A7AEE8BA68ED544100000080FA1D51413D0AD7A367ED5441FFAA94C7FC1D51412C45FE3161ED544148E17A24E41D5141295C8FE25EED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351646 - 3588789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51E8491E5141333333D38AED5441295C8FF2491E5141F6285C8F8AED5441713D0A57481E51417B14AE177CED5441713D0A17481E5141A4703D1A74ED5441295C8F52461E51417B14AE876DED54411F85EBC1441E5141E17A140E6CED54415C8FC265201E51415C8FC28564ED5441000000E0E71D5141E17A143E5FED5441A4703D7AE61D5141E17A145E60ED5441713D0A77E21D51411F85EBC180ED544185EB51E8491E5141333333D38AED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000048E17A24E41D5141295C8FE25EED5441D7A3709D9D1D5141AE47E1CA57ED54413D0AD7F39B1D51419A9999A958ED54413D0AD783991D51410AD7A3A05FED5441C3F5286C951D51419A9999296AED54419A9999A98F1D51415C8FC2B578ED54417DCC6F46F61D51416BDD7DAF82ED544123CE2C3AF71D5141DFD152057CED54419FF838A9F81D5141049FDDF876ED544169054431F91D51411CF6703574ED5441134DEF0AFA1D51410B1AD8516FED5441AF3A684AFA1D514169091C536AED544108B62426FA1D5141A7AEE8BA68ED544100000080FA1D51413D0AD7A367ED5441FFAA94C7FC1D51412C45FE3161ED544148E17A24E41D5141295C8FE25EED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350073 - 146036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001E0000000AD7A380A64751413D0AD7F3ABBB5441F6285C0FA84751417B14AE77ABBB54410AD7A3B0AA475141713D0AD7A9BB54411F85EB91AE47514114AE4761A9BB5441B81E858BB1475141713D0A47AABB54410AD7A3C0B447514152B81E85ABBB54417B14AE67B7475141CDCCCC2CADBB5441D7A3708DB4475141EC51B8AEA4BB54413D0AD7E3B1475141B81E85DBA1BB5441E17A149EAF4751410AD7A370A0BB54411F85EB51AC47514185EB51389FBB544148E17A14A9475141CDCCCC5CA3BB5441D7A3708D97475141AE47E1BAAABB5441D7A3709D994751417B14AE67AFBB5441295C8F028B475141713D0A57B8BB5441E17A140E8F4751410AD7A3D0BDBB5441000000D0914751419A999999BCBB54411F85EBC1944751415C8FC275BBBB54410AD7A3B0984751410AD7A380B9BB5441EC51B8DE9A475141713D0AD7B7BB5441A4703D2A9B475141F6285CCFB6BB5441F6285CDF9A4751419A999979B5BB544114AE47E19C4751417B14AE07B4BB5441D7A3701D9E47514166666666B3BB5441713D0A179F475141E17A141EB1BB5441713D0A27A14751413D0AD7C3AFBB5441F6285C1FA24751419A999979AFBB544185EB51D8A2475141C3F5285CAEBB5441D7A3707DA4475141F6285C8FACBB54410AD7A380A64751413D0AD7F3ABBB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D7A3709D994751417B14AE67AFBB5441A329375A924751414641E0DAB3BB5441295C8F028B475141713D0A57B8BB544175C4A7618E47514150134652BCBB5441000000D0914751419A999999BCBB544107F441199A475141B4580D72B7BB54419CE256339A475141B49E3EEFB7BB54416EA4971D9E4751418EC3777FB3BB5441862E1822A0475141A372E435B1BB5441F8CA817EA147514141BF232FB0BB5441BA968A16A24751414A5E4D82AFBB5441522A962BA3475141821187C6AEBB5441C937C0BAA447514156F09E0AADBB5441CEFB8F88A6475141B57B5FF1ABBB5441B12C198EAA47514108456AECA9BB54410AD7A3B0AA475141713D0AD7A9BB54411F85EB91AE47514114AE4761A9BB5441B81E858BB1475141713D0A47AABB54410AD7A3C0B447514152B81E85ABBB54417B14AE67B7475141CDCCCC2CADBB5441D7A3708DB4475141EC51B8AEA4BB54413D0AD7E3B1475141B81E85DBA1BB5441E17A149EAF4751410AD7A370A0BB54411F85EB51AC47514185EB51389FBB544148E17A14A9475141CDCCCC5CA3BB5441D7A3708D97475141AE47E1BAAABB5441D7A3709D994751417B14AE67AFBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350073 - 415616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001E0000000AD7A380A64751413D0AD7F3ABBB5441F6285C0FA84751417B14AE77ABBB54410AD7A3B0AA475141713D0AD7A9BB54411F85EB91AE47514114AE4761A9BB5441B81E858BB1475141713D0A47AABB54410AD7A3C0B447514152B81E85ABBB54417B14AE67B7475141CDCCCC2CADBB5441D7A3708DB4475141EC51B8AEA4BB54413D0AD7E3B1475141B81E85DBA1BB5441E17A149EAF4751410AD7A370A0BB54411F85EB51AC47514185EB51389FBB544148E17A14A9475141CDCCCC5CA3BB5441D7A3708D97475141AE47E1BAAABB5441D7A3709D994751417B14AE67AFBB5441295C8F028B475141713D0A57B8BB5441E17A140E8F4751410AD7A3D0BDBB5441000000D0914751419A999999BCBB54411F85EBC1944751415C8FC275BBBB54410AD7A3B0984751410AD7A380B9BB5441EC51B8DE9A475141713D0AD7B7BB5441A4703D2A9B475141F6285CCFB6BB5441F6285CDF9A4751419A999979B5BB544114AE47E19C4751417B14AE07B4BB5441D7A3701D9E47514166666666B3BB5441713D0A179F475141E17A141EB1BB5441713D0A27A14751413D0AD7C3AFBB5441F6285C1FA24751419A999979AFBB544185EB51D8A2475141C3F5285CAEBB5441D7A3707DA4475141F6285C8FACBB54410AD7A380A64751413D0AD7F3ABBB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D7A3709D994751417B14AE67AFBB5441A329375A924751414641E0DAB3BB5441295C8F028B475141713D0A57B8BB544175C4A7618E47514150134652BCBB5441000000D0914751419A999999BCBB544107F441199A475141B4580D72B7BB54419CE256339A475141B49E3EEFB7BB54416EA4971D9E4751418EC3777FB3BB5441862E1822A0475141A372E435B1BB5441F8CA817EA147514141BF232FB0BB5441BA968A16A24751414A5E4D82AFBB5441522A962BA3475141821187C6AEBB5441C937C0BAA447514156F09E0AADBB5441CEFB8F88A6475141B57B5FF1ABBB5441B12C198EAA47514108456AECA9BB54410AD7A3B0AA475141713D0AD7A9BB54411F85EB91AE47514114AE4761A9BB5441B81E858BB1475141713D0A47AABB54410AD7A3C0B447514152B81E85ABBB54417B14AE67B7475141CDCCCC2CADBB5441D7A3708DB4475141EC51B8AEA4BB54413D0AD7E3B1475141B81E85DBA1BB5441E17A149EAF4751410AD7A370A0BB54411F85EB51AC47514185EB51389FBB544148E17A14A9475141CDCCCC5CA3BB5441D7A3708D97475141AE47E1BAAABB5441D7A3709D994751417B14AE67AFBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350850 - 137641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A31092B55041AE47E11AF9915441D7A3709D92B5504114AE47A1F59154411F85EBB190B55041B81E855BF591544152B81EC58DB550417B14AEB7F4915441AE47E1AA8BB55041333333E3F2915441B81E854B8AB5504133333383F0915441C3F528BC87B550415C8FC235EB9154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441666666E68DB55041C3F528ACDF915441E17A144E7BB55041E17A143ED2915441666666F678B55041E17A144ED2915441333333F377B55041713D0AB7D3915441000000D077B5504114AE4741D8915441B81E85BB77B55041B81E85DBDD9154413333339378B55041C3F5287CE3915441295C8F027AB55041CDCCCC9CE8915441D7A370FD7BB55041713D0AF7EC91544114AE47A17EB5504148E17AC4F0915441295C8FB283B55041B81E852BF6915441C3F5282C98B5504152B81E3505925441EC51B82E98B55041D7A3700D00925441EC51B89E93B55041713D0A97FE9154410AD7A31092B55041AE47E11AF9915441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B81E854B8AB5504133333383F0915441AED3CA3889B5504141D5284AEE9154416156C31D89B5504104922C12EE9154412376397E88B55041433DB9C7EC91544118C9450488B550410D4420CBEB9154418FDF1DD387B5504198584F65EB9154410742D35D86B5504102F7D909E99154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441B4D2BFB18DB55041FA7C37B3DF91544120B509657BB55041ABD1A94ED291544138918B4679B550414310F14BD29154414C4AA6EE78B550416889DF58D2915441D4F0ABD678B55041ACC1437AD2915441F1F340F277B55041E3CC48D6D39154410F03C4F177B550418D1E66E6D391544133531AEE77B55041E7D6565FD491544167CDB6DC77B55041B5057C9DD69154419DC498C277B55041A711CA0ADE9154411936CCA478B5504183220ABBE3915441FE0C6F007AB55041D3FB028CE891544150A73E1A7BB5504177AE9C03EB915441FFEB1A047CB550414E6EE7EBEC915441B9D0EC977CB5504141188DD5ED91544114AE47A17EB5504148E17AC4F09154419D4AA5C47FB55041846D1BFBF1915441E1A079FE83B55041F5454663F691544143D4548886B5504135C58C40F89154419FABEFF28EB55041220DF66EFE9154419050B16B8FB550413007A6C7FE915441660C1AD491B550413BF95B8C0092544158C1F3FF92B55041DC3E94680192544148A645B896B550410857FE2304925441C1D9751D98B5504145562B1D05925441C1D9751D98B55041CD629816009254412FC292FD94B550411F5B8107FF915441EC51B89E93B55041713D0A97FE9154410AD7A31092B55041AE47E11AF9915441852FC46D92B5504130A47DCEF69154411EFDCE7B92B55041C4BC819CF59154411F85EBB190B55041B81E855BF59154412ED6A68E90B55041019DCD53F591544115A20B0090B5504155B69934F591544152B81EC58DB550417B14AEB7F4915441AE47E1AA8BB55041333333E3F2915441B81E854B8AB5504133333383F0915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350850 - 336075
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A31092B55041AE47E11AF9915441D7A3709D92B5504114AE47A1F59154411F85EBB190B55041B81E855BF591544152B81EC58DB550417B14AEB7F4915441AE47E1AA8BB55041333333E3F2915441B81E854B8AB5504133333383F0915441C3F528BC87B550415C8FC235EB9154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441666666E68DB55041C3F528ACDF915441E17A144E7BB55041E17A143ED2915441666666F678B55041E17A144ED2915441333333F377B55041713D0AB7D3915441000000D077B5504114AE4741D8915441B81E85BB77B55041B81E85DBDD9154413333339378B55041C3F5287CE3915441295C8F027AB55041CDCCCC9CE8915441D7A370FD7BB55041713D0AF7EC91544114AE47A17EB5504148E17AC4F0915441295C8FB283B55041B81E852BF6915441C3F5282C98B5504152B81E3505925441EC51B82E98B55041D7A3700D00925441EC51B89E93B55041713D0A97FE9154410AD7A31092B55041AE47E11AF9915441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B81E854B8AB5504133333383F0915441AED3CA3889B5504141D5284AEE9154416156C31D89B5504104922C12EE9154412376397E88B55041433DB9C7EC91544118C9450488B550410D4420CBEB9154418FDF1DD387B5504198584F65EB9154410742D35D86B5504102F7D909E99154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441B4D2BFB18DB55041FA7C37B3DF91544120B509657BB55041ABD1A94ED291544138918B4679B550414310F14BD29154414C4AA6EE78B550416889DF58D2915441D4F0ABD678B55041ACC1437AD2915441F1F340F277B55041E3CC48D6D39154410F03C4F177B550418D1E66E6D391544133531AEE77B55041E7D6565FD491544167CDB6DC77B55041B5057C9DD69154419DC498C277B55041A711CA0ADE9154411936CCA478B5504183220ABBE3915441FE0C6F007AB55041D3FB028CE891544150A73E1A7BB5504177AE9C03EB915441FFEB1A047CB550414E6EE7EBEC915441B9D0EC977CB5504141188DD5ED91544114AE47A17EB5504148E17AC4F09154419D4AA5C47FB55041846D1BFBF1915441E1A079FE83B55041F5454663F691544143D4548886B5504135C58C40F89154419FABEFF28EB55041220DF66EFE9154419050B16B8FB550413007A6C7FE915441660C1AD491B550413BF95B8C0092544158C1F3FF92B55041DC3E94680192544148A645B896B550410857FE2304925441C1D9751D98B5504145562B1D05925441C1D9751D98B55041CD629816009254412FC292FD94B550411F5B8107FF915441EC51B89E93B55041713D0A97FE9154410AD7A31092B55041AE47E11AF9915441852FC46D92B5504130A47DCEF69154411EFDCE7B92B55041C4BC819CF59154411F85EBB190B55041B81E855BF59154412ED6A68E90B55041019DCD53F591544115A20B0090B5504155B69934F591544152B81EC58DB550417B14AEB7F4915441AE47E1AA8BB55041333333E3F2915441B81E854B8AB5504133333383F0915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354438 - 223463
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -448  </desc>
+<a>
+01060000000100000001030000000100000075000000D7A3702D88C15041B81E851BD3D55441000000B085C15041AE47E1CAD9D554415C8FC2B586C150411F85EB81DAD55441295C8F8288C150419A999939DBD55441A4703D3A89C15041295C8F82DBD55441CDCCCC5C8BC150417B14AE67DCD55441C3F5289C91C150417B14AE27DED554410000009097C15041C3F528DCDFD5544152B81E659DC15041000000B0E1D554419A9999A9A2C150419A999929E3D5544133333323A5C1504114AE47E1E3D55441EC51B8AEA7C15041EC51B89EE4D5544148E17A04ADC15041AE47E1EAE5D5544133333303B2C150419A999929E7D55441E17A14DEB1C15041A4703DEAE7D554418FC2F5C8ACC1504148E17A94E6D554415C8FC295A7C150413D0AD713E5D55441D7A3700DA5C150418FC2F558E4D5544133333393A2C1504114AE47A1E3D55441E17A143E9DC15041713D0A17E2D55441EC51B85E97C1504152B81E65E0D5544114AE478191C15041C3F528ECDED55441B81E859B8DC15041D7A370DDDDD5544148E17A348BC15041D7A370FDDCD554419A99991989C1504152B81EF5DBD554410AD7A39085C1504114AE4791DAD554415C8FC20583C15041C3F528BCD7D55441E17A141E7EC150411F85EBD1D0D554413D0AD7437EC150410AD7A3B0D2D55441D7A370BD77C15041A4703DFAD5D55441A4703DDA74C150419A999909D9D55441666666B67AC1504133333383E0D5544114AE476179C1504185EB51D8E1D55441D7A370CD77C1504114AE4761E3D554410AD7A3F073C15041AE47E1BAE6D5544185EB51B870C1504148E17A44E9D55441713D0A2773C150418FC2F5C8EBD554418FC2F5386DC15041F6285C7FEFD554415C8FC20573C1504152B81EC5F6D55441EC51B89E75C150410AD7A3B0F0D55441EC51B88E73C15041EC51B83EEED55441333333C373C15041F6285C1FECD554417B14AEA773C1504114AE4751EAD554419A99999974C1504148E17A34E8D55441CDCCCC8C7AC15041A4703D0AEDD55441CDCCCC0C7EC15041E17A14EEEFD5544114AE47F180C1504148E17AC4F3D55441C3F5289C85C1504152B81EC5F7D55441713D0AE787C15041E17A14FEF8D55441000000808BC150413D0AD783FAD5544152B81E3590C1504114AE47B1FBD5544148E17AC492C15041666666E6FBD554419A9999F992C150418FC2F548FDD5544185EB513894C15041A4703D5AFDD55441F6285C7F94C150418FC2F568F9D554418FC2F58895C15041295C8FF2F5D55441000000C097C15041E17A141EF5D554419A9999B99AC15041295C8F92F6D554417B14AE379CC1504100000080F8D55441CDCCCC7C9BC150419A999919FAD55441333333839DC15041EC51B8DEFCD55441F6285C1FA0C1504148E17A64FED55441C3F528DCA3C150419A99997902D65441A4703DCAA5C15041000000F006D654411F85EB41A6C150416666660608D65441E17A147EA6C150410AD7A3B009D654411F85EB51ADC15041A4703D8A09D65441F6285C6FADC15041F6285C2F06D654419A9999C9ADC150418FC2F5D8FBD55441713D0A17AFC15041295C8F82F4D5544152B81E65B2C15041D7A3700DE8D55441E17A148EB2C15041C3F5284CE7D554410AD7A310B8C1504148E17A94E8D554418FC2F518C3C1504100000040EBD55441295C8FF2C2C1504100000010ECD55441B81E85CBB8C1504166666696E9D5544185EB5148B8C15041AE47E17AE9D55441A4703D0AB5C15041333333F3FAD554418FC2F5C8B4C1504114AE4741FDD55441CDCCCC4CBFC1504114AE47C1F9D5544114AE4771C4C15041295C8FC2FAD554413D0AD763C9C150411F85EB91FBD55441C3F5288CCCC15041295C8FA2FCD55441713D0A27D0C15041C3F528BCF1D554419A999969D2C15041B81E853BECD554411F85EB71D6C150413D0AD703E2D5544152B81EF5D6C150411F85EB61DBD55441AE47E1CAD4C1504133333383D9D55441713D0A97D1C15041713D0A17D7D55441713D0AF7CBC1504133333373D5D55441A4703DAAC6C15041CDCCCC2CD5D55441B81E85DBC0C15041000000D0D4D554410AD7A3C0C0C150410AD7A3E0D5D5544133333313BBC150413D0AD723D6D55441CDCCCC5CBBC15041AE47E19AD4D55441AE47E10AB6C15041B81E854BD2D554417B14AE77B5C150419A999989D5D55441713D0AF7AFC150419A9999A9D4D5544133333333B0C150413D0AD7D3D2D5544166666686AAC15041EC51B83ECFD554413D0AD753A8C15041B81E85DBCDD5544148E17AD4A7C15041713D0A57D1D55441AE47E16AA5C1504166666656D1D55441E17A142EA0C15041D7A370DDD0D5544148E17A64A0C150410AD7A320CBD5544185EB5128A0C1504185EB5178C3D554410AD7A3C09FC15041666666B6BED5544114AE479199C15041D7A370CDBFD554415C8FC2459AC150418FC2F518C7D55441E17A14CE9AC1504166666616CCD55441E17A14CE9AC15041B81E85DBCDD55441713D0AA79AC15041F6285C9FCED554413333336395C150419A999989CDD55441B81E85DB91C15041A4703D0AD0D554411F85EB818EC150415C8FC2B5D0D55441B81E85AB8BC15041713D0A27D2D55441D7A3702D88C15041B81E851BD3D55441
+</a>
+
+<b>
+010600000001000000010300000001000000B900000033333313BBC150413D0AD723D6D554417A202C20BBC150419F2D94DED5D554415835CC5CBBC15041E47AE19AD4D55441E7FAE10AB6C150416B72864BD2D55441CE7B4CBEB5C15041C01F5FFBD3D554417B14AE77B5C150419A999989D5D55441713D0AF7AFC150419A9999A9D4D55441EA66A50CB0C150416E76E300D4D55441BDF63133B0C15041664ED7D3D2D5544166666686AAC15041EC51B83ECFD55441B40AD753A8C15041031F85DBCDD554411B23C2D6A8C150418FED485BCED554416365EE9EA8C150413F78A543D1D55441D5B212CFA7C15041A8CF087FD1D554414D5F7486A5C1504178240358D1D5544167489174A5C1504152F86856D1D55441AE47E16AA5C1504166666656D1D55441EC7A142EA0C1504102A470DDD0D55441FF143DAD9AC15041AC7A9480CED554419A901CA79AC150415CCE5F9FCED55441713D0AA79AC15041F6285C9FCED55441EABE157595C150411123498DCDD55441BD32336395C15041FA999989CDD55441B81E85DB91C15041A4703D0AD0D554418A83B6BD8EC150414929CDA9D0D554417860A1638EC15041DAC385CDD0D55441497443908DC15041DC659C30D1D55441B81E85AB8BC15041713D0A27D2D55441D00A0E9D8BC15041B5B6FE2AD2D5544120583A678BC15041F946B639D2D55441DA6B873D8BC15041A1F31C45D2D55441264FDF9489C1504145654302D3D554412A1664ED88C15041FB4EDF14D3D5544149DFDC9088C15041B37B4F00D3D5544137D5662D88C15041D629811BD3D554415B8B430388C1504100CFCF0CD3D55441593F2A1C87C1504149E0EA71D3D55441A81C136286C1504158452EF4D3D5544120C482AC86C15041497EA99BD4D5544177BF483D87C15041DDFF32A0D5D554413E8E09B187C1504182AD7322D6D55441AD1F150E88C15041B0C6D9BBD7D554419809B12088C150416287AF9FD9D55441907096B387C150411052FFE6DAD55441A4703D3A89C15041295C8F82DBD55441665F019E8AC1504174BBB217DCD55441C4115AA18AC15041D6DC1919DCD554418CCCCC5C8BC150415014AE67DCD554411FB86F538CC15041400DC4ACDCD55441F2318C8C8DC1504199D87804DDD55441C3F5289C91C150417B14AE27DED554411FF6958092C15041B5E51B69DED55441B5FFFF8F97C150418DF528DCDFD5544127B81E659DC15041EBFFFFAFE1D55441306E7AFAA0C150417DB2E0B0E2D55441849999A9A2C1504159999929E3D55441408934D2A3C15041D5E6957FE3D5544119909C0FA4C150411F1F6391E3D55441F3323323A5C15041D4AD47E1E3D55441442F0847A6C1504134872236E4D5544159C8F587A6C15041F3860349E4D55441F651B8AEA7C15041C151B89EE4D55441C7007B04ADC15041B373E0EAE5D554414B383603B2C15041697B8D29E7D55441E17A14DEB1C15041A4703DEAE7D554418FC2F5C8ACC1504148E17A94E6D554415C8FC295A7C150413D0AD713E5D55441534C30DDA5C150410518D894E4D55441C2A3700DA5C150418FC2F558E4D554417B10EE6BA4C1504151862F2AE4D5544133333393A2C1504114AE47A1E3D55441E17A143E9DC15041713D0A17E2D55441962D88E29CC1504135BD9DFCE1D554410C52B85E97C15041A8B81E65E0D554416FE345A994C15041BEEF04B7DFD554412AAE478191C15041CDF528ECDED55441C31E859B8DC15041F7A370DDDDD55441234177758CC15041C9245872DDD5544148E17A348BC15041D7A370FDDCD554419A99991989C1504152B81EF5DBD5544118D0EAB988C150413E1B7FCFDBD55441190F40B988C15041D1F63BCFDBD554410AD7A39085C1504135AE4791DAD55441A552E62085C15041845B672BDCD554417F9E694684C150416F6A9C3DDCD55441D891B67983C1504103ADC805DCD55441066F9FBF82C150418B0559BBDBD55441E7BA7CA881C15041E4E24101DBD55441B36D85E180C15041A8A7F0F1D9D55441318FC20583C15041ADF528BCD7D55441E77A141E7EC150416785EBD1D0D55441FC051F267EC15041CCA9DD37D1D55441CF5EC52C7EC15041A7F52B8CD1D55441F9322E3A7EC15041133F2D36D2D55441480AD7437EC150410AD7A3B0D2D55441EDA370BD77C15041A4703DFAD5D55441AF703DDA74C15041A4999909D9D55441FC1B74B875C1504176140E25DAD55441800A7E1E77C15041FEAFC4EDDBD55441F564AC2F78C15041F6C13C4ADDD55441666666B67AC1504133333383E0D5544114AE476179C1504185EB51D8E1D55441D7A370CD77C150413FAE4761E3D554415C6E971176C15041A5673CE2E4D554414757A4F073C1504175D8E0BAE6D55441C6E1EB4778C15041960A07DAEAD5544152F1A0C07AC150418B5CE81AEDD5544195DE0E727BC1504134AB8AC7EDD55441CDCCCC0C7EC15041E17A14EEEFD55441F65B9EC680C15041BD7CE18BF3D554413682010181C150419E68F0CAF3D554413023C2D683C15041F1E699E6F5D554411B98C1F485C1504123A51708F7D55441B61E91B48BC15041FD3A689EF9D5544173D08A5C8DC15041E0E4EDF3FAD554416BA7DE688DC15041BF511FFEFAD5544152B81E3590C1504114AE47B1FBD5544148E17AC492C15041666666E6FBD554419A9999F992C150418FC2F548FDD55441F31BCD8093C15041A0494A50FDD554410E3523C293C15041D5E4EDF3FAD554417F573A7C94C150416E3A7CFDF8D55441DE7468D494C15041C5FF1F4DF8D554418FC2F58895C15041295C8FF2F5D5544148D7545F97C150418AAE4D42F5D55441000000C097C15041E17A141EF5D554419A9999B99AC15041295C8F92F6D554417B14AE379CC1504100000080F8D55441D651DB349CC15041E7213086F8D55441A601CD2A9CC1504173763A9CF8D55441DAFE87299CC15041B8D0029FF8D554411A4206299CC15041CB2B1FA0F8D554413DE17A949EC15041FFAD47A1FAD55441120AD723A1C15041495C8FA2FCD554419B59E6EEA1C1504181FF5463FDD554416BA8C583A2C150419002570FFFD55441171ABCD2A3C15041E847858300D65441F6B1E373A4C15041E860A4E901D65441FD52377AA4C15041568DB3F701D65441A4754E34A5C150419AA6199103D654412B820101A6C150419EBF7F2A05D6544147BB7CA8A6C150414580550E07D65441754C8805A7C150419DC5838208D654419F62ECF2A6C15041C779A69909D654415063D099A6C15041D7E22EAB09D6544167D1209BA6C15041B37600B009D654411485EB51ADC1504199703D8A09D65441E20EED5BADC15041D858536608D65441F6285C6FADC15041EB285C2F06D654419A9999C9ADC150418FC2F5D8FBD55441713D0A17AFC15041295C8F82F4D5544152B81E65B2C15041D7A3700DE8D55441E17A148EB2C15041C3F5284CE7D5544175760FC5B6C15041334F4D47E8D554419AE6A310B8C1504125877A94E8D554418FC2F518C3C1504100000040EBD55441745C8FF2C2C15041EBFFFF0FECD55441E2CCCC4CBFC1504114AE47C1F9D554417F480D32C1C150417CE61C20FAD5544114AE4771C4C15041295C8FC2FAD554413D0AD763C9C150411F85EB91FBD55441FEF4FEABCBC15041CF82F356FCD554411254288CCCC15041D9A78EA2FCD554416D7F3C3DCFC15041A070157FF4D55441713D0A27D0C15041C3F528BCF1D554419A999969D2C15041B81E853BECD554413D61E869D4C15041F2D97029E7D55441D682EA71D6C15041B907D703E2D554411BB71EF5D6C150411284EB61DBD554412832CC32D6C15041421ABCD2DAD55441810FB578D5C150411DCBDC3DDAD554414CBE5D20D4C150415C6B3702D9D55441293863E1D1C15041688D474FD7D55441AF6DDB79D1C150416639C315D7D554418FC2F568D1C15041C2CCCCECD7D554412D5533A3D0C1504154D5D5F3DED55441941F0A17CBC150416DC648D1DCD55441F1B71E55CBC15041F484EB91DAD5544153D81AE1CBC15041CDD50F72D5D55441A4703DAAC6C15041CDCCCC2CD5D55441B81E85DBC0C15041000000D0D4D55441CB6A78CCC0C15041326AA568D5D5544120D7A3C0C0C150412AD7A3E0D5D55441895BAA63BDC15041C4807208D6D5544133333313BBC150413D0AD723D6D55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354454 - 216868
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000050000005B000000C3F5286CDDC25041A4703DBAE5D65441AE47E1DAE3C250413D0AD743ECD6544152B81EB5E4C250417B14AE77EBD6544114AE47C1E9C25041CDCCCCBCE6D6544114AE4721EBC2504114AE47F1E8D6544133333393EAC25041CDCCCC0CECD654419A9999A9EAC250417B14AE07EDD65441000000D0EAC250418FC2F578EDD65441CDCCCCFCEAC25041E17A14CEEDD65441AE47E12AEBC25041B81E850BEED654413D0AD773EBC250413D0AD743EED6544185EB51C8EBC250415C8FC275EED6544185EB5128ECC25041D7A3708DEED654413D0AD783ECC2504152B81EA5EED6544185EB51D8ECC25041EC51B8BEEED65441A4703D0AEDC25041B81E85DBEED6544148E17A34EDC250413D0AD743EFD65441E17A14DEEDC2504152B81E05F0D654418FC2F598E7C25041C3F5288CF7D654419A9999A9E6C2504152B81E85F8D65441D7A3707DEDC2504152B81EA5FDD65441D7A3702DFCC2504148E17AB401D75441295C8FF20EC350419A9999F90BD754416666665628C3504114AE476118D75441EC51B83E3CC350418FC2F5B823D754417B14AE174CC3504114AE473131D7544148E17A2451C350417B14AE4733D75441C3F528EC57C350417B14AE0735D754413333336361C350411F85EB5136D75441000000F062C35041295C8F0236D75441AE47E1EA65C3504114AE476132D754411F85EB1168C3504114AE475130D754413D0AD7636AC350411F85EBF12ED75441D7A370AD6DC350415C8FC2F52DD75441B81E858B77C35041713D0A772CD75441A4703D4A77C35041EC51B8AE2AD754415C8FC21574C35041EC51B85E2AD75441A4703D9A72C35041333333632BD75441A4703D3A69C35041AE47E1AA29D754415C8FC2B55BC35041AE47E1DA26D754411F85EB3158C35041713D0A9724D75441A4703D5A58C35041EC51B84E21D7544114AE47015AC35041EC51B8FE20D75441E17A147E5CC350413333334323D75441A4703D1A61C35041713D0A0723D75441E17A14FE63C35041AE47E11A23D75441E17A14EE63C35041F6285CCF21D75441000000304FC35041E17A143E1CD75441A4703D6A32C350415C8FC2450CD75441B81E850B32C350411F85EBA108D75441F6285C7F33C35041E17A149E03D75441F6285C8F37C35041F6285C9FFAD65441333333B337C35041C3F528CCF9D6544114AE476133C3504152B81ED5FAD65441F6285C7F2EC3504114AE47B1FBD65441E17A14FE2AC35041A4703D0AFBD65441A4703DAA22C350415C8FC285F8D65441CDCCCCDC17C3504152B81E75F5D654417B14AE5712C350417B14AE17F4D65441CDCCCCDC0FC35041C3F528FCF2D6544185EB51C80CC35041A4703D9AF0D654419A9999690AC35041D7A370DDEDD65441F6285CEF08C35041CDCCCC4CEAD654410AD7A33009C3504185EB5148E5D654411F85EB010AC3504185EB5158E2D654410AD7A3D00BC350413D0AD763E0D6544148E17A1404C35041D7A3701DDCD65441B81E859B01C35041E17A14CEDAD65441C3F528BCFAC25041AE47E12AD7D6544152B81E75F2C25041713D0A87D3D654410AD7A390EBC25041D7A3700DCED65441F6285C8FE0C250415C8FC235C2D65441000000E0DCC2504152B81EC5BCD6544166666626DDC250410AD7A3F0BBD65441CDCCCC1CD8C250417B14AE77B4D65441295C8F92D5C25041CDCCCC5CB0D65441E17A14BED2C25041CDCCCCCCAFD654413D0AD703BFC25041F6285CDFABD65441E17A145EBDC25041F6285CDFABD65441CDCCCC1CB9C250413D0AD7F3B4D654410AD7A300B5C250419A9999B9BDD65441CDCCCCDCB4C25041713D0A07BED65441AE47E1FAA7C25041295C8FA2BCD65441EC51B81EABC25041F6285C0FC5D65441E17A146EACC250418FC2F5A8C2D65441713D0AA7C6C25041CDCCCC2CCBD65441E17A146EC4C250410AD7A3F0CDD654411F85EB51CAC25041666666C6D1D654418FC2F568CFC2504114AE4741D6D65441C3F528ACD3C25041713D0AA7DAD65441C3F5286CDDC25041A4703DBAE5D654410900000048E17A8451C3504152B81EE524D754413D0AD73350C35041C3F528EC22D75441E17A145E50C35041C3F528FC20D75441333333B352C350416666668620D7544114AE471155C35041A4703DDA20D7544148E17AF455C350415C8FC26522D75441B81E853B55C3504148E17AD424D75441B81E855B53C35041A4703D4A25D7544148E17A8451C3504152B81EE524D754410900000048E17AF4C7C25041D7A3701DC7D654410AD7A340C7C250411F85EB41C8D654413D0AD793C3C250415C8FC205C4D65441F6285CBFB6C25041AE47E13ABED654418FC2F5A8B7C250417B14AE17BDD65441295C8F32BBC2504133333303BFD654411F85EBD1BEC250417B14AEB7C0D6544100000010C4C2504114AE4751C3D6544148E17AF4C7C25041D7A3701DC7D654410C0000007B14AE7747C3504185EB51181FD75441B81E859B46C350410000005021D75441CDCCCC6C45C35041CDCCCCAC21D75441EC51B8AE43C350419A9999C920D754419A99994942C350415C8FC2451FD754419A99994942C350417B14AE271ED7544114AE477143C3504148E17A941DD754413333333345C35041CDCCCC8C1BD75441666666D646C35041B81E853B1BD754419A9999B947C350411F85EB611CD7544152B81E0548C350419A9999991DD754417B14AE7747C3504185EB51181FD754410B000000F6285C7F1EC350410AD7A31006D754411F85EB1124C35041CDCCCC1C07D754410AD7A3E026C35041A4703D8A08D75441CDCCCC6C28C35041CDCCCC1C0BD754419A99995928C35041C3F5280C0DD75441B81E856B26C35041A4703D8A0FD75441F6285CFF24C35041E17A141E10D7544185EB51481BC35041295C8FE20DD754410AD7A3D01AC3504148E17AF40CD75441295C8F521CC350413D0AD71309D75441F6285C7F1EC350410AD7A31006D75441
+</a>
+
+<b>
+0106000000010000000103000000010000001E02000004C35C8FE0C250412935C335C2D65441569E337DDFC25041034608A1C0D6544148C5FFDFDCC2504108F81EC5BCD6544166666626DDC250410AD7A3F0BBD65441CDCCCC1CD8C250417B14AE77B4D65441295C8F92D5C25041CDCCCC5CB0D65441E17A14BED2C25041CDCCCCCCAFD654413D0AD703BFC25041F6285CDFABD65441E17A145EBDC25041F6285CDFABD65441CDCCCC1CB9C250413D0AD7F3B4D654410AD7A300B5C250419A9999B9BDD65441CDCCCCDCB4C25041713D0A07BED65441F6285CBFB6C25041AE47E13ABED654418FC2F5A8B7C250417B14AE17BDD65441295C8F32BBC2504133333303BFD654411F85EBD1BEC250417B14AEB7C0D6544100000010C4C2504114AE4751C3D6544148E17AF4C7C25041D7A3701DC7D6544130096145C7C250412875363AC8D6544148E17A04C8C2504133333323C9D654419815EB31C8C25041B539EB41C9D65441C3DBFFCFC7C25041B61A29BCC9D65441445F0BA7C6C25041410ECC2CCBD654419FC8156EC4C25041A64FA3F0CDD6544195CF8BC7C9C250418DE54D6CD1D654411F85EB51CAC25041666666C6D1D654418FC2F568CFC2504114AE4741D6D65441C3F528ACD3C25041713D0AA7DAD65441C3F5286CDDC25041A4703DBAE5D65441AE47E1DAE3C250413D0AD743ECD6544152B81EB5E4C250417B14AE77EBD6544170C51162E9C25041DF870516E7D6544172C6AA54E9C25041A0758700E7D654415BC26D52E9C2504182CCCCFCE6D6544173F47A4EE9C2504134B769F5E6D65441B2FE054BE9C25041F591C8EDE6D6544175AC1248E9C2504178BAF1E5E6D65441FA38A445E9C2504130C8EDDDE6D65441E04EBD43E9C250411A85C5D5E6D65441B6036042E9C25041ADE181CDE6D6544198D68D41E9C25041C5ED2BC5E6D6544198D68D41E9C250417FAB6DB4E6D65441B6036042E9C250418CB717ACE6D65441E04EBD43E9C250418A14D4A3E6D65441FA38A445E9C250416AD1AB9BE6D6544175AC1248E9C25041CCDEA793E6D65441B88ED248E9C250412E0CAA91E6D654413CE8C844E9C25041F1EDE18DE6D65441688C7D40E9C25041D7274C89E6D65441F74F813CE9C250417BFE7084E6D65441D090D838E9C250418DC4557FE6D65441B0528735E9C25041F512007AE6D654410C389132E9C25041BAC27574E6D65441D37FF92FE9C25041C6E6BC6EE6D654415302C32DE9C250412DC5DB68E6D654410AEF572CE9C250418F235064E6D65441442C666CE8C250418080D6C2E3D65441AC59866CE7C250418A7AFB79E1D65441B02028FFE5C25041E69696FADED6544119108E22E4C25041ED0C55C2DCD654414754EAFCE1C2504118CD0C78DAD654415FE36362DEC25041362748F2D7D654418B8FC938DBC25041673DE1B7D5D65441987CDE5AD8C25041D7025092D4D65441B1F4C859D8C25041EE07DF91D4D65441C7181054D8C250410B50478FD4D65441E2C8854ED8C250417235518CD4D654414A173049D8C25041F1F6FF88D4D654411D46B946D8C25041E1144C87D4D6544173CB98CAD7C25041A698A22ED4D65441AEDCA831D8C250412E995B8CD3D6544158E60E34D8C2504104E3038ED3D65441D484E9ACD8C250418CE656E4D3D65441919F898ADBC250417124CA09D5D6544178279F8BDBC250415B1F3B0AD5D654416C035891DBC250413DD7D20CD5D654414753E296DBC2504137F2C80FD5D65441EA04389CDBC2504158301A13D5D65441E2F52C9EDBC250411DF07114D5D65441DD72DAD0DEC25041B39F3D55D7D65441659C2F73E2C250414C3C79E0D9D65441011F9376E2C250417F3AF5E2D9D6544152486E7BE2C25041E676F1E6D9D654416D0E0480E2C25041B9D23CEBD9D65441A34E2B82E2C25041AA2476EDD9D654412BB670B0E4C25041E95FF340DCD6544180D294B2E4C25041D5D44F43DCD65441CC87F5B3E4C250413413EB44DCD654412848CB97E6C25041F364CC85DED65441A3CF669AE6C250413B500C89DED65441738E0F9EE6C25041288A278EDED654414F4D97A1E6C25041A61FDC93DED65441C792C515E8C25041E8182D1FE1D65441B02C8518E8C250419D855824E1D65441D11C5F1AE8C250416AAF5328E1D6544105E7E51EE9C250416AEBD07BE3D6544127AFA31FE9C25041279D8E7DE3D65441A72CDA21E9C2504120BF6F83E3D6544146404523E9C250416960FB87E3D65441DB97FDE4E9C250418501B02FE6D65441445B65E5E9C25041F0552731E6D65441DD8AD2E6E9C2504175884537E6D654412483D8E7E9C25041BD42783DE6D65441E25363E8E9C2504130AAF942E6D65441AA9B6CEAE9C2504138CB9743E6D65441887343F2E9C25041801D8B46E6D65441C698E4F9E9C25041E012004AE6D6544114AE4701EAC2504129E1F24DE6D65441DF9A6408EAC2504163345F52E6D65441FF92330FEAC250418B324057E6D65441B31FAD15EAC250415B83905CE6D654418127CA1BEAC2504100534A62E6D65441DCF78321EAC25041235B6768E6D654414C48D426EAC25041D7E7E06EE6D65441D446B52BEAC25041F7DFAF75E6D654419695E42DEAC25041FA231279E6D654418C95E48DEBC2504141058DADE8D65441A3992190EBC250410AAE47B1E8D65441E1671494EBC25041B8C3AAB8E8D654414C5D8997EBC2504197E84BC0E8D65441E9AF7C9AEBC2504114C022C8E8D654410423EB9CEBC25041B2B226D0E8D65441740DD29EEBC25041D2F54ED8E8D654419E582FA0EBC25041DF9892E0E8D65441668501A1EBC25041C78CE8E8E8D65441668501A1EBC250410CCFA6F9E8D654419E582FA0EBC25041FFC2FC01E9D654410D3E499FEBC2504172E2C807E9D6544147ED3614EBC2504119C87512ECD654410A5D5327EBC25041421181E8ECD65441A4F4B56CEBC250413505F68DEDD65441452BDA86EBC25041ECF8D0B0EDD6544176E1C7BBEBC25041E565ACD9EDD6544112F66F09ECC250413AB88F07EED6544170D86E0FECC25041B2F6540BEED6544117EEDE15ECC250410B6DED0FEED6544168FF0767ECC250418C3FBC4DEED6544109200CC6ECC250418AED0740EED6544145D69CC7ECC25041EEA7D03FEED654412DCAF2CFECC250416F7AFE3EEED65441720CB1E0ECC250416F7AFE3EEED65441650007E9ECC25041EEA7D03FEED65441C8A34AF1ECC25041C2F22D41EED65441E8E672F9ECC25041DCDC1443EED6544125D97601EDC250414C508345EED65441A2B04D09EDC25041EAA27648EED65441E1D5EE10EDC25041F497EB4BEED6544138D34818EDC250416226D94FEED654418E703D4AEDC25041DF32AB6CEED65441645D5A51EDC2504119861771EED6544184552958EDC250419684F875EED654412DE2A25EEDC2504167D5487BEED654415BEABF64EDC250410BA50281EED6544100BA796AEDC250413AAD1F87EED65441C60ACA6FEDC25041E339998DEED65441AE09AB74EDC25041A2316894EED65441885C1779EDC25041D91E859BEED65441712A0A7DEDC250417D34E8A2EED65441DB1F7F80EDC250415B5989AAEED654411717E280EDC25041ADFD7AABEED6544123EBFCA2EDC25041DB7DB5FFEED65441E17A14DEEDC2504152B81E05F0D654411444FB89EDC2504177CB156AF0D65441F0C2F598E7C2504182F5288CF7D65441D34B9004E7C25041C7108226F8D65441AB6BC2CAE6C250415370A162F8D6544139113DAEE6C2504185A04B80F8D65441A49999A9E6C2504147B81E85F8D654410DA4707DEDC2504147B81EA5FDD6544114ECBFE1F3C2504137127069FFD65441D7A3702DFCC2504148E17AB401D754414CD8282805C350414546399E06D75441495C8FF20EC350416F9999F90BD7544129396BFC19C35041A8C2405E11D754416666665628C3504114AE476118D75441EC51B83E3CC350418FC2F5B823D754417B14AE174CC3504114AE473131D75441E7E07A2451C350415014AE4733D75441A2F528EC57C350415B14AE0735D754419433336361C35041FF84EB5136D754419344232E62C35041DA1A552936D75441537D046460C35041C11DC59635D75441E45D81E35BC350411A6F2B4834D754411CB669DF5BC3504101B8E14634D75441E39388D95BC35041363AAB4434D75441A3B7CFD35BC350413382134234D75441886745CE5BC3504124671D3F34D754413DE06ECD5BC35041EE17A03E34D75441D6C33AB158C350410036246832D754412575A3E756C350410036246832D754410B1C5CE156C35041C897EF6732D754412DA51BDB56C350418BF5516732D754411BEBE8D456C350415AFD4B6632D754418BB8CACE56C350410CCEDE6432D7544138C3C7C856C35041EFF60B6332D7544191A759C756C35041F0758C6232D754412F9FF0CB52C35041773C79F630D75441B45E69FB4FC3504104858D6231D75441B391B3F94FC35041772BCB6231D75441D51A73F34FC3504129CD686331D75441AB68E4E64FC3504129CD686331D75441CDF1A3E04FC35041772BCB6231D75441BB3771DA4FC350415033C56131D754419F0453D44FC35041F803586031D75441D80F50CE4FC35041DB2C855E31D754419EED6EC84FC35041B1AF4E5C31D75441CD3BB1C64FC3504184E7905B31D754416D0034734DC35041111E0A5730D75441F5D5386F4DC350419A2D305530D75441E585AE694DC350418B123A5230D75441A6E35C654DC35041DD38944F30D754418058007D4AC350416178BE6B2ED754417249FC7B4AC350410F14136B2ED754416F0FE1764AC3504133556A672ED75441FEE505724AC350414C186E632ED75441F91F706D4AC35041E4BC225F2ED7544129AE8D6A4AC35041E87C1F5C2ED75441577CC13747C35041C9A3E3DE2AD7544171DE473747C3504135FC5DDE2AD75441C251722843C35041CDB13A6026D754417F6014AA3EC35041E1FE2F5122D75441AD2E48773BC350415C74D3681FD7544125EFF9733BC35041E38AAC651FD754419092AE6F3BC35041DEC416611FD754413E56B26B3BC350416C9B3B5C1FD75441639709683BC350416A6120571FD75441CC6173663BC35041F5F0AB541FD75441915DABF439C35041448405051DD7544150A0951338C350418F16E98F1AD754415A91051038C350416916EE8A1AD75441C352B40C38C350417B6498851AD754413F38BE0938C3504160140E801AD75441A67F260738C35041B738557A1AD754417C02F00438C350411E1774741AD75441308A160438C350416FD8D3711AD75441E47D227437C350414AB0FA9D18D7544103B9DDC635C35041BEFE9E6116D75441DEF96A6134C350413699A94315D75441701E77C32FC350414ECFE08512D75441A1947DF42FC3504153B5B83B12D7544101C4F86D2FC35041129BB61F12D754419F92B1682FC35041A22F751E12D75441AB9CAE622FC35041F058A21C12D754419E7BCD5C2FC3504145DB6B1A12D754410BA014572FC350410D23D41712D75441E34E8A512FC350410009DE1412D75441969D344C2FC35041DDC98C1112D75441896319472FC350416D0BE40D12D75441183A3E422FC35041BCCEE70912D754414874A83D2FC350411E739C0512D7544109185D392FC350414EAD060112D7544157DB60352FC350413C832BFC11D75441E71CB8312FC35041CF4910F711D7544107DF662E2FC35041E197BAF111D75441B7C3702B2FC350415B4730EC11D75441200CD9282FC35041C76B77E611D75441D48DA2262FC35041194A96E011D7544122B7CF242FC35041255493DA11D75441408862232FC35041D62175D411D75441638F5C222FC350411A6842CE11D754416C2CBA212FC35041BFC170C711D75441AB27719B2EC35041CCE82C8211D754419D2C73972EC35041C4B9FE7F11D75441517B1D922EC35041D97BAD7C11D754414341028D2EC35041D3BC047911D75441C71727882EC35041767F087511D75441025291832EC35041D823BD7011D75441C3F5457F2EC35041B45E276C11D7544107B9497B2EC3504197344C6711D75441A1FAA0772EC35041E8F9306211D75441C1BC4F742EC350413C49DB5C11D7544167A159712EC35041B6F8505711D75441DFA2D56E2EC350418497C75111D75441E2981F002DC35041414AACE10DD75441705E1C002BC350410784F1730BD754415CDF0DFE2AC35041754B5B710BD754414EDB56FA2AC3504197AF2A6C0BD75441011DA09129C350413191184F09D754411C4382D128C3504124FDA8600CD7544177F4A23C28C35041B7F3F73F0DD75441EB55E41227C35041DDE095FE0ED7544171FD41A426C350410D49F7400FD75441B81E856B26C35041A4703D8A0FD75441707052A125C3504197D053DC0FD75441BE10B69E25C35041CFD6E4DD0FD7544181A2769D25C35041CFD6E4DD0FD75441F6285CFF24C35041E17A141E10D7544164D70BE823C35041CFD6E4DD0FD754414E8659B622C35041CFD6E4DD0FD754410A3176C91EC3504189B4CD230FD7544181C9309B1CC350414365EE8E0ED754410341DFCE1BC350417ADF7A010ED7544185EB51481BC35041295C8FE20DD75441FEBB56181BC35041135C1C830DD75441BA085BB71AC35041B7F3F73F0DD75441BA085BB71AC350412B8201F10BD75441002B72711BC35041AEEDF3E709D7544181C9309B1CC350417D2D1E0408D754411F93B79F1DC350415740804506D75441FF5D3EA41EC3504111F1A0B005D754417ED3EA7321C35041E6A0970D06D75441B6583C1D1DC3504189BB742F05D75441D3B4F21B1DC350412774302F05D75441A3C7921617C35041910AE5E403D7544191CF2D4414C3504165487E9904D75441872DC5C20FC350412CAC25C305D75441FDB582BD0FC35041491159C405D7544137FC4FB70FC35041270A5FC505D754419A850FB10FC35041ADABFCC505D75441E134F1A30FC35041CBD5F2C505D7544163A0E39A0DC350417E01BBA005D75441B5C832950DC35041393527A005D75441B70D008F0DC350419D3D219F05D7544167DBE1880DC350411A0EB49D05D7544173E5DE820DC350416837E19B05D75441C5C3FD7C0DC35041BDB9AA9905D75441F5E2BA790DC3504154A33E9805D7544140BD5D020AC350413147890104D754419AB61EB106C350419CEC11FF02D75441690AF42F02C35041069947B001D7544189C6432E02C35041ACC8C5AF01D75441DF7A81F9FDC25041B4249B6100D7544115F3E056F9C250414B02F338FFD65441D0FF7E95F6C250412F9972A4FED65441332C6D90F6C25041195A3CA3FED65441E0366A8AF6C25041728369A1FED6544191148984F6C25041C705339FFED65441A939D07EF6C250412F4E9B9CFED6544123E94579F6C25041E032A599FED654413537F073F6C25041F5F45396FED654411DFDD46EF6C250419036AB92FED65441ACD3F969F6C25041DEF9AE8EFED6544195F11067F6C25041CB2C068CFED6544184937C59F3C25041BAA1A9A3FBD654412AAFCF57F3C250412F1307A2FBD65441EB528453F3C25041BF4C719DFBD65441DB16884FF3C25041EE239698FBD654418DCA764CF3C25041B1E35A94FBD65441BB09A168F1C250414C2C36D1F8D6544199970968F1C25041DB3156D0F8D654411859B864F1C250418E8000CBF8D65441C83DC261F1C25041A93076C5F8D65441D2862A5FF1C25041D353BDBFF8D654418608F45CF1C25041C632DCB9F8D65441D431215BF1C25041D23CD9B3F8D65441A6998F5AF1C25041569B9EB1F8D65441B3542835F0C25041CEA154F7F3D654419400EFD8EDC250412C69C3A3F0D65441258EC022EEC250419FC514C2EFD654419BB14126EEC250419AA2D2C5EFD654414DEE3D2AEEC25041B7CCADCAEFD6544184A65F2CEEC250414C3891CDEFD65441575768DCF0C25041A8B54097F3D65441865DEFDDF0C250412B847899F3D65441129C40E1F0C250417835CE9EF3D65441C1B636E4F0C25041FE8558A4F3D65441F96ECEE6F0C25041876111AAF3D65441A4EC04E9F0C250413583F2AFF3D65441AAC2D7EAF0C250412979F5B5F3D65441845B69EBF0C25041041A30B8F3D6544154BA0311F2C250412DE04C73F8D6544197A137E5F3C2504197BA981FFBD65441A9D8BBD7F6C250412B082FEEFDD65441B0893180F9C25041F13A707DFED654410A2EB383F9C2504158D83E7EFED65441A0A5AD2AFEC25041E476FDA7FFD6544136D43D2CFEC25041891865A8FFD654411866D92FFEC25041060870A9FFD654417DCA546602C35041489023F800D754411DC23EE706C35041CE1ADB4602D754411C4E6EE806C35041575B354702D75441C75472400AC350419525BC4B03D75441BA705A430AC35041F09BAB4C03D7544168923B490AC350419B19E24E03D7544138737E4C0AC35041632F4E5003D7544159B7EAB90DC35041652475E204D75441DA93FAA10FC350411DB4510505D7544136CF8D1414C3504172497EDF03D75441B941421514C35041D47250DF03D75441CACC9EFD16C350418E50392503D7544183D02C0217C350410FC2332403D75441E08A5F0817C35041D2C92D2303D754412902A00E17C35041AB27902203D75441F3B32E1B17C35041AB27902203D75441902A6F2117C35041D2C92D2303D75441EDE4A12717C350410FC2332403D7544115BE042917C3504197107D2403D75441A4F388431DC350419540507304D75441DEA76E9F21C3504149317E5205D75441F3A473A521C350411059E65305D754411885F6AA21C350416A1A8E5505D75441EAB729B724C35041F32A9F5906D7544105AE219E27C350418928833807D75441088467A127C3504135F18E3907D75441B6A548A727C35041E06EC53B07D75441E08101AD27C3504177265D3E07D75441C5D18BB227C35041C641534107D75441BD126DB527C35041304A0E4307D75441884EEA082AC35041688F3CB708D754417EBF5E0B2AC35041DEC4D2B808D754418BF979102AC350414E837BBC08D75441082355152AC35041A1C077C008D754412BE8EA192AC350413F1CC3C408D754417544361E2AC35041B0E258C908D75441278132222AC35041800B34CE08D754413585E9252AC350410BA864D308D75441EF4E67972BC350414756A1FD0AD754415FDC5F9D2DC35041304B98720DD75441735B6E9F2DC35041B7832E750DD75441E21917A32DC35041C4BD497A0DD75441C35768A62DC35041116F9F7F0DD7544112735EA92DC3504197BF29850DD754410471E2AB2DC350412820B38A0DD75441927597122FC3504111C498E710D754419D597B5930C35041EB5A359011D754415E53795D30C350415D89639211D75441FA91686230C35041B112759511D754410853792D30C3504105FA86E511D754414D422FC934C35041E6FFFAA114D754410CF481CD34C35041F897B4A414D754410E2E9DD234C35041D3565DA814D7544159C324D434C35041A22890A914D754417D09534836C3504157C64ED315D75441779CA64B36C35041D93018D615D7544112633C5036C35041D88C63DA15D7544186BE875436C35041DD52F9DE15D7544162FB835836C350414E7CD4E315D75441CE54275936C3504185CEABE415D754419E41C51738C35041860A293818D7544118A7CA1A38C3504151F26C3C18D7544119E51B1E38C3504135A4C24118D754419CFF112138C350414FF44C4718D7544135B8A92338C35041F9CF054D18D75441F635E02538C350419CF1E65218D75441ABADB92638C35041B52F875518D754418EE68AB638C350419728EF281AD75441C3A7EF8F3AC350413EC2FC931CD7544123B67F933AC3504164C2F7981CD754415BEC15953AC35041E4326C9B1CD75441ACF33D023CC35041423EACE31ED754412E5D1E2B3FC35041A7E403C321D75441BE93C3AC43C35041367904D525D75441437B4CB043C350414B8860D825D75441CC89A8B343C35041AF6EE9DB25D754416B1D87C547C35041E9FF685D2AD75441F8B4DAEF4AC35041CA1967D12DD75441C50F63C74DC35041E5884CAA2FD75441CA004CFA4FC35041317192A030D75441C5AE4AC752C35041C6D7053530D75441F37C00C952C350414731C83430D75441D1F340CF52C35041A18F2A3430D7544164A5CFDB52C35041A18F2A3430D75441421C10E252C350414731C83430D7544154D642E852C350417929CE3530D75441E40861EE52C350415D593B3730D75441CDFE63F452C35041E42F0E3930D75441DE19D2F552C35041EEB08D3930D75441FA5B44F856C350416B3624A831D75441A13579CB58C350416B3624A831D75441B18EC0D158C3504198D458A831D754418F0501D858C350414976F6A831D75441A0BF33DE58C35041076FFCA931D7544130F251E458C350415F9E69AB31D754418EE754EA58C35041DB743CAD31D75441260936F058C35041A6F272AF31D7544166E5EEF558C35041A9AA0AB231D75441813579FB58C35041C3C500B531D7544162BD4FFC58C35041F9147EB531D754410EEAAC245CC35041A280299333D754417916CC9A60C35041C1F0BEDE34D754416A8B489D60C35041901981DF34D75441217F400D63C35041DB0C20A735D75441F8B1DB0E63C35041259BA7A735D7544131D4BC1463C35041F018DEA935D75441DAAF751A63C350415CD075AC35D75441F5FFFF1F63C350416BEB6BAF35D7544142B1552563C35041022ABDB235D7544145EB702A63C3504147E865B635D75441D76CE12C63C35041DE6D66B835D75441A78E175C63C35041740FE47E35D75441AE47E1EA65C3504114AE476132D754411F85EB1168C3504114AE475130D754413D0AD7636AC350411F85EBF12ED75441F92318E06DC35041779261862DD754415792616673C35041049C12A72CD75441A276A43D6AC350410F6095532AD7544113AAC6A961C35041E7CB874A28D75441CF03AD9855C35041F18F0AF725D75441374080254CC350414E77A45D24D754419EAF1FE545C35041895D3EC422D754418A679AE13CC35041E7110CF81DD75441F25DE9C03DC3504117256E391CD7544180DF948841C35041E7110CF81DD75441AECC652A43C350411F8BC4B71DD7544114AE477143C3504148E17A941DD75441218CA5C944C350416F27B8061CD754419FB8D00545C35041DC02577F1BD75441BAC99E7845C35041DC02577F1BD75441666666D646C35041B81E853B1BD754412E636E7B47C35041B4FD5C111CD75441370403D249C350417F1BBD181DD7544136734C584FC350417F573A6C1FD75441E25539F651C3504163D2E1DB1FD75441EC5B3D4E55C350418821C17020D754418D2F757355C3504163D2E1DB1FD754419FF04A5757C35041467A512620D7544125C8805659C3504143E3031F21D7544114AE47015AC35041EC51B8FE20D754417803B5105BC350418D3724F621D754413A8A5CB85CC35041895D3EC422D75441136E49565FC35041895D3EC422D7544170BB782D61C3504119448E0723D754412BDBAE7E63C3504176B1761723D75441EC7A14EE63C350412D2A5CCF21D75441200000304FC35041F77A143E1CD75441D13D0A2730C3504148E17A040BD754419D965B8F37C35041FF6C5D9FFAD654417FD9A09937C35041ECAAD962FAD65441083333B337C35041CDF528CCF9D65441B8CA459437C35041CBD691D3F9D65441C6713D8A35C35041CAD6A350FAD654413FAE476133C3504152B81ED5FAD65441F6285C7F2EC350411FAE47B1FBD65441E17A14FE2AC35041A4703D0AFBD65441A4703DAA22C350415C8FC285F8D65441CDCCCCDC17C3504152B81E75F5D654417B14AE5712C350417B14AE17F4D65441CDCCCCDC0FC35041C3F528FCF2D6544185EB51C80CC35041A4703D9AF0D654419A9999690AC35041D7A370DDEDD65441F6285CEF08C35041CDCCCC4CEAD654410AD7A33009C3504185EB5148E5D654411F85EB010AC3504185EB5158E2D654410AD7A3D00BC350413D0AD763E0D6544148E17A1404C35041D7A3701DDCD65441B81E859B01C35041E17A14CEDAD65441C3F528BCFAC25041AE47E12AD7D6544167B81E75F2C25041B13D0A87D3D65441D8CC6AC3ECC250415C3B2001CFD654410AD7A390EBC25041D7A3700DCED6544143684E15E6C2504174624F27C8D6544104C35C8FE0C250412935C335C2D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354870 - 1347700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000020000006E0000000AD7A3F0543351419A999949300D554114AE474155335141295C8F62300D5541713D0AA757335141A4703D1A300D5541AE47E1BA583351411F85EB01300D5541713D0A575A335141C3F528EC2F0D5541E17A14EE59335141C3F528FC2C0D5541295C8FB23E335141AE47E1FA2F0D5541333333233C3351411F85EB41290D55419A99999936335141000000601F0D5541713D0A1733335141B81E859B180D5541A4703D1A313351417B14AE87160D5541EC51B8FE2E335141000000E0130D5541666666B62C335141000000A0100D554114AE471127335141295C8FC2150D554148E17AB421335141333333231A0D55418FC2F5B81C33514152B81EA51C0D5541F6285CAF173351415C8FC255200D5541AE47E1BA143351411F85EBE1210D55410AD7A3C012335141E17A14BE220D55410AD7A3A00B335141C3F528DC310D5541713D0A370B335141CDCCCC3C320D5541713D0AF70A3351410AD7A3A0320D554185EB51F80A335141AE47E14A330D554185EB51C80A335141B81E85CB330D55419A9999C90A335141EC51B87E340D5541333333F302335141CDCCCCAC350D5541C3F528BCFC3251419A999989350D5541666666E6F632514185EB5118360D554100000010F13251413D0AD793360D55415C8FC205EE325141A4703D1A370D5541EC51B87EEB325141295C8F42230D5541CDCCCC4CE53251415C8FC255230D55413D0AD7E3E13251413D0AD763230D5541A4703DEADA32514166666626230D5541A4703D1AD932514133333333230D5541A4703D5AD53251410AD7A3D0230D5541A4703D7AD3325141713D0A57240D5541CDCCCCFCCF3251413D0AD763250D5541B81E85FBCD325141CDCCCC3C260D554152B81EE5CC325141AE47E16A260D554152B81EA5CA325141A4703DDA260D5541AE47E13AC83251415C8FC255270D5541AE47E10AC7325141713D0AD7250D55418FC2F538C5325141EC51B85E260D55417B14AE17C9325141F6285C7F2B0D554114AE4751CB3251411F85EBF12E0D5541C3F5281CCF325141E17A145E320D55415C8FC295D2325141B81E85EB360D5541CDCCCC3CD132514114AE47413A0D5541AE47E16ACE325141CDCCCC7C3D0D5541A4703D9ACA32514100000030410D554152B81E25B9325141C3F5287C460D5541B81E858BB8325141E17A142E480D554148E17A64BF325141333333734A0D554148E17A34C43251415C8FC2C54B0D554114AE47E1C6325141333333734C0D554133333393CA325141666666064D0D5541666666F6CF32514148E17AB44D0D554114AE4781D2325141CDCCCCBC4D0D5541CDCCCC6CD2325141713D0AB74E0D5541D7A370ADD232514152B81E654F0D554148E17A04D43251413D0AD7D3540D55417B14AEC7D432514114AE47B1570D554152B81E65D5325141333333035A0D5541295C8F72D73251418FC2F588600D5541D7A370DDD83251413D0AD7E3650D55418FC2F568DA3251413D0AD7C3650D5541000000C0DB3251410AD7A350650D55419A9999B9DD325141B81E858B630D5541713D0A77E032514152B81E05610D5541A4703DBAE1325141D7A370AD5F0D5541AE47E1CAE232514185EB51A85E0D5541A4703DEAE43251415C8FC2F55D0D554185EB5198E73251417B14AE775D0D554114AE4791E93251413D0AD7535D0D5541C3F5285CEC325141713D0A975D0D554114AE4771EF32514114AE47F15D0D5541295C8F12F132514114AE47415E0D5541666666B6F2325141EC51B86E5E0D5541C3F5281CF4325141B81E857B5E0D554166666616F5325141AE47E15A5E0D5541B81E85CBF5325141F6285CAF5E0D55415C8FC2E5F63251417B14AE775F0D554152B81EC5F8325141295C8F125F0D554100000000FC3251417B14AEB75D0D5541333333F305335141E17A144E5C0D5541D7A3709D0B335141000000F05A0D5541D7A3707D123351419A999919590D5541CDCCCC0C16335141333333D3570D554185EB51C81B335141E17A145E550D5541B81E858B20335141295C8F22540D554185EB51A825335141000000D0520D5541B81E853B2A335141666666B6510D5541B81E858B2C335141C3F528FC500D554185EB51A831335141D7A3700D4F0D554152B81E5535335141E17A143E4E0D55418FC2F52839335141E17A14AE4C0D5541AE47E17A3C335141E17A14CE4A0D554114AE4721413351413D0AD7A3470D5541AE47E1FA43335141B81E854B450D5541F6285CCF473351411F85EBD1410D5541F6285CFF493351415C8FC2653F0D5541333333434C3351417B14AED73B0D5541CDCCCCDC4D335141CDCCCC3C390D5541CDCCCCEC4D335141E17A14DE380D5541AE47E10A4E335141EC51B82E380D5541666666D6503351411F85EB31300D5541295C8FE25333514152B81E65300D55416666665654335141AE47E15A300D55410AD7A3F0543351419A999949300D55410F000000295C8F6235335141CDCCCC7C430D55419A99999928335141D7A370CD460D55413D0AD71310335141E17A14AE4D0D5541713D0A570F335141B81E853B4D0D5541E17A140E0F3351410AD7A3604C0D5541A4703DEA0D33514114AE47713B0D55410AD7A3300E335141E17A149E3A0D554185EB51882B335141E17A141E330D55419A9999793A33514185EB5188300D554148E17A343C335141333333C3300D55413D0AD7E33C33514114AE4721320D55413D0AD713403351417B14AEA73E0D5541000000303F335141713D0A97400D5541713D0A873D33514148E17A94410D5541295C8F6235335141CDCCCC7C430D5541
+</a>
+
+<b>
+0106000000010000000103000000020000007000000029092459C5325141F27C0275260D554199B42CC8C63251411C52A76F280D5541EE465636CA3251413A70843B2D0D554159008158CC325141E6A976DF2F0D5541A4232121D03251414900F8B3330D55415C8FC295D2325141B81E85EB360D5541E64EBC34D13251414277EA113A0D5541CDCCCC3CD132514114AE47413A0D5541AE47E16ACE325141CDCCCC7C3D0D5541A4703D9ACA32514100000030410D554152B81E25B9325141C3F5287C460D5541B81E858BB8325141E17A142E480D554148E17A64BF325141333333734A0D554148E17A34C43251415C8FC2C54B0D554114AE47E1C6325141333333734C0D554133333393CA325141666666064D0D5541666666F6CF32514148E17AB44D0D554114AE4781D2325141CDCCCCBC4D0D5541CDCCCC6CD2325141713D0AB74E0D5541D7A370ADD232514152B81E654F0D554148E17A04D43251413D0AD7D3540D55417B14AEC7D432514114AE47B1570D554152B81E65D5325141333333035A0D5541295C8F72D73251418FC2F588600D5541D7A370DDD83251413D0AD7E3650D55418FC2F568DA3251413D0AD7C3650D5541000000C0DB3251410AD7A350650D55419A9999B9DD325141B81E858B630D5541713D0A77E032514152B81E05610D5541A4703DBAE1325141D7A370AD5F0D5541AE47E1CAE232514185EB51A85E0D5541A4703DEAE43251415C8FC2F55D0D554185EB5198E73251417B14AE775D0D554114AE4791E93251413D0AD7535D0D5541C3F5285CEC325141713D0A975D0D554114AE4771EF32514114AE47F15D0D5541295C8F12F132514114AE47415E0D5541666666B6F2325141EC51B86E5E0D5541C3F5281CF4325141B81E857B5E0D554166666616F5325141AE47E15A5E0D5541B81E85CBF5325141F6285CAF5E0D55415C8FC2E5F63251417B14AE775F0D554152B81EC5F8325141295C8F125F0D554100000000FC3251417B14AEB75D0D5541333333F305335141E17A144E5C0D5541D7A3709D0B335141000000F05A0D5541D7A3707D123351419A999919590D5541CDCCCC0C16335141333333D3570D554185EB51C81B335141E17A145E550D5541B81E858B20335141295C8F22540D554185EB51A825335141000000D0520D5541B81E853B2A335141666666B6510D5541B81E858B2C335141C3F528FC500D554185EB51A831335141D7A3700D4F0D554152B81E5535335141E17A143E4E0D55418FC2F52839335141E17A14AE4C0D5541AE47E17A3C335141E17A14CE4A0D554114AE4721413351413D0AD7A3470D5541AE47E1FA43335141B81E854B450D5541F6285CCF473351411F85EBD1410D5541F6285CFF493351415C8FC2653F0D5541333333434C3351417B14AED73B0D5541CDCCCCDC4D335141CDCCCC3C390D5541CDCCCCEC4D335141E17A14DE380D5541AE47E10A4E335141EC51B82E380D5541666666D6503351411F85EB31300D5541295C8FE25333514152B81E65300D55416666665654335141AE47E15A300D55410AD7A3F0543351419A999949300D554114AE474155335141295C8F62300D5541713D0AA757335141A4703D1A300D5541AE47E1BA583351411F85EB01300D5541713D0A575A335141C3F528EC2F0D5541E17A14EE59335141C3F528FC2C0D5541295C8FB23E335141AE47E1FA2F0D5541333333233C3351411F85EB41290D55419A99999936335141000000601F0D5541713D0A1733335141B81E859B180D5541A4703D1A313351417B14AE87160D5541EC51B8FE2E335141000000E0130D5541666666B62C335141000000A0100D554114AE471127335141295C8FC2150D554148E17AB421335141333333231A0D55418FC2F5B81C33514152B81EA51C0D5541F6285CAF173351415C8FC255200D5541AE47E1BA143351411F85EBE1210D55410AD7A3C012335141E17A14BE220D55410AD7A3A00B335141C3F528DC310D5541713D0A370B335141CDCCCC3C320D5541713D0AF70A3351410AD7A3A0320D554185EB51F80A335141AE47E14A330D554185EB51C80A335141B81E85CB330D55419A9999C90A335141EC51B87E340D5541333333F302335141CDCCCCAC350D5541C3F528BCFC3251419A999989350D5541666666E6F632514185EB5118360D554100000010F13251413D0AD793360D55415C8FC205EE325141A4703D1A370D5541EC51B87EEB325141295C8F42230D5541CDCCCC4CE53251415C8FC255230D55413D0AD7E3E13251413D0AD763230D5541A4703DEADA32514166666626230D5541A4703D1AD932514133333333230D5541A4703D5AD53251410AD7A3D0230D5541A4703D7AD3325141713D0A57240D5541CDCCCCFCCF3251413D0AD763250D5541B81E85FBCD325141CDCCCC3C260D554152B81EE5CC325141AE47E16A260D554152B81EA5CA325141A4703DDA260D5541AE47E13AC83251415C8FC255270D5541AE47E10AC7325141713D0AD7250D554129092459C5325141F27C0275260D55410F000000295C8F6235335141CDCCCC7C430D55419A99999928335141D7A370CD460D55413D0AD71310335141E17A14AE4D0D5541713D0A570F335141B81E853B4D0D5541E17A140E0F3351410AD7A3604C0D5541A4703DEA0D33514114AE47713B0D55410AD7A3300E335141E17A149E3A0D554185EB51882B335141E17A141E330D55419A9999793A33514185EB5188300D554148E17A343C335141333333C3300D55413D0AD7E33C33514114AE4721320D55413D0AD713403351417B14AEA73E0D5541000000303F335141713D0A97400D5541713D0A873D33514148E17A94410D5541295C8F6235335141CDCCCC7C430D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489573 - 53323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000D200000085EB5198F7235141000000F09A205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417B14AEA705245141000000A09B205541666666660B245141E17A14FE98205541B81E853B0B24514185EB515897205541C3F5289C0D2451411F85EB31982055413D0AD75315245141333333F39A2055419A9999890B2451411F85EB4196205541E17A145E0C24514152B81EA5932055413D0AD7830B2451418FC2F5589320554114AE47910A245141F6285CAF93205541000000100A24514166666606942055415C8FC2F5092451410AD7A390942055411F85EBF1082451411F85EBA19420554100000070082451410000002094205541F6285CAF0724514114AE471194205541EC51B89E0624514185EB51089420554148E17A8407245141A4703DFA942055417B14AE4707245141295C8F1296205541AE47E15A05245141CDCCCC1C972055415C8FC2B5032451410AD7A3F097205541D7A3702D02245141CDCCCC0C9820554185EB51B8022451417B14AEF795205541EC51B85E00245141E17A14BE9620554114AE47E1FF235141000000C098205541EC51B86EFF235141A4703D2A99205541333333A3FE2351419A9999F99820554114AE47D1FC235141A4703D2A992055415C8FC225FC23514152B81EA599205541A4703D7AFB235141CDCCCC9C992055419A999959FB2351419A9999F9982055419A999949FC235141713D0A6798205541B81E854BFC235141CDCCCC6C97205541A4703D7AFB2351419A99996997205541295C8F82FB2351413D0AD7639620554185EB5118FB235141D7A3702D95205541A4703D7AFB2351413333339391205541D7A3708DFD235141A4703D6A9120554152B81E85FD235141713D0AC790205541CDCCCC0CFF23514152B81E859020554148E17A840324514148E17A64902055419A999979042451410000001091205541D7A370ED05245141EC51B82E92205541CDCCCC0C07245141B81E855B93205541000000A008245141EC51B82E93205541EC51B82E0A245141C3F528DC92205541333333030D24514166666606922055413D0AD7C30F245141D7A3704D912055413D0AD7231224514185EB51A89020554148E17A5415245141EC51B8BE8F2055419A99995918245141295C8FF28E205541B81E85CB1C245141000000C08D205541295C8F4221245141666666368C2055417B14AEE7242451410AD7A3F08A20554148E17A5426245141D7A3706D8A205541D7A3700D27245141EC51B8EE89205541B81E85CB272451418FC2F548892055413D0AD74328245141F6285CCF832055418FC2F568292451415C8FC2957D205541F6285C8F29245141333333C37C205541E17A14DE2324514152B81E957E205541713D0A9723245141AE47E1BA7E205541EC51B86E23245141EC51B8CE7E2055411F85EB4123245141000000E07E205541295C8F222324514114AE47017F205541C3F5280C23245141000000207F2055419A9999F922245141CDCCCC4C7F205541C3F528EC222451417B14AE877F2055411F85EBE122245141EC51B8DE7F20554114AE47E1222451411F85EB41802055417B14AEE722245141F6285C7F80205541295C8FF2222451411F85EBC180205541CDCCCC0C232451411F85EB4181205541F6285C1F23245141295C8F8281205541B81E853B23245141EC51B8DE812055413333336323245141EC51B83E822055410000009023245141D7A3708D822055411F85EBC1232451419A9999D982205541000000C024245141A4703D5A84205541AE47E19A242451413D0AD733862055410AD7A31023245141F6285C1F87205541A4703DDA22245141F6285C4F8720554114AE476122245141A4703DBA872055418FC2F518222451411F85EBE1872055413D0AD7B3212451417B14AE0788205541D7A3704D2124514148E17A24882055415C8FC2F5202451419A9999298820554152B81E8520245141295C8F2288205541EC51B83E20245141E17A140E8820554114AE470120245141EC51B8EE87205541713D0AA71F245141F6285CAF87205541666666561F245141EC51B86E87205541E17A140E1F245141A4703D3A87205541000000C01E245141C3F528FC862055410AD7A3801E245141A4703DEA862055417B14AE271E245141295C8FE286205541713D0AC71D245141295C8FE286205541B81E857B1D245141CDCCCCEC86205541713D0A271D245141A4703D0A87205541D7A370CD1C245141F6285CFF862055418FC2F5681C24514148E17AE486205541D7A370FD1B2451411F85EBC1862055417B14AEA71B2451415C8FC2B586205541333333631B245141295C8FB28620554148E17A041B2451411F85EBC186205541D7A370BD1A24514152B81ED5862055418FC2F5381A245141AE47E1FA862055413D0AD7A3192451415C8FC2258720554114AE472119245141295C8FA287205541CDCCCC3C18245141CDCCCCDC872055411F85EBE117245141CDCCCC9C872055410AD7A330172451419A9999B98720554114AE4751162451418FC2F5C887205541713D0A771524514114AE47518820554148E17AB414245141A4703D7A89205541C3F5282C1424514148E17AB489205541333333E313245141B81E85FB8820554148E17AD41324514148E17A348820554185EB515813245141295C8FF287205541666666061324514114AE470188205541CDCCCCAC122451417B14AE1788205541CDCCCC5C1224514152B81E358820554152B81E05122451419A99995988205541C3F528BC112451413D0AD78388205541E17A146E11245141CDCCCCBC88205541CDCCCC2C11245141333333F388205541C3F528FC10245141AE47E12A89205541F6285CDF10245141F6285C5F89205541E17A14CE102451411F85EB9189205541B81E85CB1024514185EB51B88920554114AE47D1102451410AD7A3E089205541295C8FE210245141713D0A078A2055419A9999F910245141CDCCCC2C8A205541D7A3700D11245141AE47E16A8A20554166666616112451410AD7A3A08A205541B81E850B112451415C8FC2E58A205541AE47E1EA10245141D7A3702D8B205541AE47E1BA102451411F85EB618B205541666666761024514114AE47918B205541CDCCCC2C10245141A4703DBA8B205541666666860F245141666666068C2055418FC2F5480E245141713D0AA78C2055419A9999190C24514185EB51488D205541B81E85CB0B2451410AD7A3908D2055415C8FC2D509245141713D0A078E205541295C8FC208245141EC51B8BE8E2055413D0AD793072451418FC2F5988E2055413D0AD7F306245141E17A140E8E205541CDCCCC0C07245141C3F528CC8B2055418FC2F5F8052451419A9999A989205541EC51B8FE0324514114AE47A1892055418FC2F5E8022451413D0AD7038A2055413D0AD7E3012451413D0AD7138A205541F6285CFF00245141A4703DBA89205541D7A3709D002451417B14AE478920554166666646FF235141295C8FE289205541F6285C7FFE2351410AD7A3808920554114AE4701FE235141E17A14CE892055419A9999B9FC23514114AE47218A2055417B14AE77FC2351410AD7A3008B20554133333393FB235141295C8F528B205541B81E85FBFA23514114AE47B18A20554100000060FA235141F6285CEF8B205541713D0AD7FA235141AE47E1EA8C205541D7A3707DFA235141E17A149E8D205541EC51B83EF92351413D0AD7B38E20554114AE4731F82351415C8FC2158F205541C3F5282CF7235141D7A370FD8E2055418FC2F598F623514114AE47B18F20554166666626F62351410AD7A3A08F20554166666626F623514148E17AC48E2055419A999929F52351418FC2F5188E205541CDCCCC3CF4235141EC51B8BE8D205541F6285C3FF3235141333333038D205541C3F5289CF2235141713D0A478C205541666666E6F1235141F6285CAF8B205541A4703DAAF02351417B14AE678C205541F6285C1FF02351413D0AD7338D2055413D0AD753EF235141295C8F528D205541CDCCCC5CED2351413D0AD7738E205541F6285C8FEC2351411F85EB218E20554185EB5158E823514114AE47A19020554133333303E7235141F6285C2F9120554148E17AD4E5235141295C8F829120554148E17A84E4235141AE47E14A92205541295C8F32E3235141E17A149E93205541C3F5289CE22351416666667694205541713D0A17E223514114AE47F194205541CDCCCC2CE2235141CDCCCCAC952055413D0AD7E3DF235141D7A370ED952055418FC2F5E8DE23514114AE47419620554114AE47A1DE235141B81E85EB95205541713D0A17D9235141713D0AC79A2055413D0AD703DA235141EC51B80E9B205541AE47E18ADC235141EC51B87E9A205541AE47E13ADE235141713D0A579B20554152B81ED5DE235141A4703D1A9C2055417B14AEB7E223514148E17AE49C205541713D0A07DE2351418FC2F508A02055419A999969D9235141F6285CCFA32055419A9999E9DE2351413D0AD7B3A7205541F6285C8FE1235141C3F528DCA620554185EB51F8E323514114AE4741A520554148E17A04E6235141E17A14EEA3205541D7A3704DE7235141D7A3705DA22055410AD7A360E6235141D7A3703DA1205541AE47E16AE6235141EC51B88EA020554148E17AA4F2235141A4703D7A9B20554185EB5198F7235141000000F09A205541
+</a>
+
+<b>
+0106000000010000000103000000010000007E01000029E0C82D07245141AEE3DA57932055411C8A0659092451412E7B680893205541E1BB083D0C2451418E93DE4092205541333333030D24514166666606922055416B68EDC20F2451413DF7AD4D91205541991E0BED1424514111DC4EDC8F20554148E17A5415245141EC51B8BE8F205541D2F48F811524514197A2D0B28F205541281E52C519245141D97D92908E205541B31EBC541D2451415132C0908D205541300733A01F24514185DA75C68C205541DE45FAEB22245141DD15E2A18B2055417A025B3F252451416D8A1BD18A2055416463635526245141FC57D16C8A205541B0956E6A262451413176665E8A205541CFCAEC9926245141FA9DDC3D8A205541AC699DA526245141414FDA358A205541875362CB26245141D0EEF91B8A205541853B75D026245141590680188A20554145DF367127245141181EB697892055417816AFD7272451411E5943BB882055419B7223EE272451410812B1B5872055413D0AD74328245141F6285CCF832055414F824C892824514133FBBB5582205541B1500E3F29245141F64194797E2055410BAA785D292451412F5C38D47D2055410B70817D29245141E48BE8C87C205541817EE93C292451418D668FDD7C2055417C9ABC7C272451416EADD96C7D20554199A2D79E26245141124DCBB37D2055417FC101DD25245141EA5AC4F17D205541D6E0958B2424514114A3A55D7E205541A6F51CD623245141F22187997E205541CCC11D99232451410FC3C6B97E205541713D0A9723245141AE47E1BA7E2055414230213323245141D125B2EF7E2055414C4C0814232451419C1B34157F205541C3F5280C23245141000000207F2055418D16A20123245141FEDC68397F205541BEA130F6222451416E3BBD5B7F205541CC025BF4222451416D9EC6637F205541E72711E6222451414C6A78BB7F205541311598E422245141CA2FBC6180205541967558E5222451415E00F3688020554148AAAF0A232451417CD69B37812055412041C64E2324514128A54D0D82205541F55F8CAD232451410A4F5EB6822055413E54AEA02424514189DBD32A84205541000000C024245141A4703D5A84205541AE47E19A242451413D0AD73386205541F0A1A84623245141ACCD16FF862055410AD7A31023245141F6285C1F87205541A4703DDA22245141F6285C4F87205541D029769922245141B11B99888720554114AE476122245141A4703DBA87205541258ABE4C2224514182E381C5872055418FC2F518222451411F85EBE1872055413D0AD7B3212451417B14AE0788205541D7A3704D2124514148E17A24882055415C8FC2F5202451419A9999298820554152B81E8520245141295C8F2288205541D408E648202451418B810A1188205541EC51B83E20245141E17A140E8820554114AE470120245141EC51B8EE87205541E5A402C11F2451413D3098C187205541713D0AA71F245141F6285CAF872055412FE7EA841F2451415C060294872055413CF4B2191F2451416CE8AB428720554166504DAD1E2451415C26DFF6862055419F817DA81E24514181C282F5862055412D8ACBA71E245141016D50F5862055418C419F541E245141D49C70E68620554116B3D2241E245141295C8FE286205541C18782CB1D245141295C8FE2862055416282F9A91D245141CC4580E686205541B81E857B1D245141CDCCCCEC86205541713D0A271D245141A4703D0A87205541D7A370CD1C245141F6285CFF862055418FC2F5681C24514148E17AE486205541A92764231C245141355D1ECE86205541DBD9DCF51B245141AD79D8C086205541C1FAEA611B245141BF95C4B28620554173B45A371B245141648CABB9862055416F8BE2C81A24514198DA06D28620554164722AA11924514155F3502887205541CA985F8C192451410AF8303C8720554114AE472119245141295C8FA287205541CDCCCC3C18245141CDCCCCDC872055411F85EBE117245141CDCCCC9C872055410AD7A330172451419A9999B987205541E30E5A10172451414205D2BB872055416F55515216245141D67DE3C8872055410196C60D16245141EC1B20F3872055415A550BA3152451414520CB3588205541D0036A1D1524514125D013DA8820554148E17AB414245141A4703D7A8920554187AB8E7314245141D517FA9589205541C3F5282C1424514148E17AB489205541333333E313245141B81E85FB88205541D598E8DF1324514182A903CF8820554148E17AD41324514148E17A348820554185EB515813245141295C8FF2872055412599AE3613245141F6B49AF88720554160C303E812245141D656E00888205541CDCCCCAC122451417B14AE1788205541F75D6D5D122451419FA1E334882055414B3B430612245141951E1B5A8820554120A939B111245141DE26D18B88205541BF8E945F112451419411E2C8882055413FD60F3B1124514154AB50E788205541028B3FFD102451413460A229892055418D0764D210245141AE9D4E85892055417CA6EACC10245141DFA118C28920554114AE47D1102451410AD7A3E089205541ABC7DCDA10245141592CEFF5892055416E914CEC10245141BE5400178A2055419A9999F910245141CDCCCC2C8A20554110F960FC1024514170B57E358A205541D7A3700D11245141AE47E16A8A20554166666616112451410AD7A3A08A205541B81E850B112451415C8FC2E58A205541AE47E1EA10245141D7A3702D8B205541AE47E1BA102451411F85EB618B205541666666761024514114AE47918B205541CDCCCC2C10245141A4703DBA8B2055416BD4F722102451411C70BDBE8B2055418D98260C0F245141589743448C2055418FC2F5480E245141713D0AA78C205541484CD4FA0C245141203761078D2055418397C34C0C245141DF6191398D20554171A20A110C245141C2413F508D205541B81E85CB0B2451410AD7A3908D205541926544C30A24514129DEFECE8D205541161511D409245141E228F40C8E2055410C8B3B55092451413E17D35C8E205541295C8FC208245141EC51B8BE8E205541BA222E8108245141129790B68E205541E5D440C307245141BBC6DF9E8E2055413D0AD793072451418FC2F5988E2055413D0AD7F306245141E17A140E8E20554146EA8305072451419E37D4748C2055412A40C608072451412A245E298C205541BB83040907245141E77DBC238C205541ED0E0E09072451418584DF228C205541D5D9750907245141DD517C198C2055412F8A7A090724514121C10F198C205541B5BAC309072451418A2271128C20554126B3620A072451414DC5C7C78B20554142A7CEA206245141185124FA8A205541A8504E6306245141C961517C8A2055415454E2570624514127AFAF658A205541A191545506245141404CA0608A205541D8E2FFF8052451410FAAADA989205541D26E64C9052451418A77D1A88920554126668F17052451419544E5A589205541361050F30424514155C34CA58920554189BA4BD004245141656FB9A4892055418E0E4CA7042451419DF00CA4892055414490CF0504245141B4D94FA28920554183D6E356032451413124D5DC892055418FC2F5E8022451413D0AD7038A2055413D0AD7E3012451413D0AD7138A205541F194B87101245141C56316E789205541F6285CFF00245141A4703DBA892055419321519F002451412639E049892055417D8A9D5F00245141A9E5976389205541E669F35900245141679E26668920554197B1505800245141EEAAE36689205541DC430D57002451417DB175678920554125CD81500024514116276A6A89205541B5CEFF4C002451411997FF6B89205541FBE9154700245141111AAB6E892055413A30891D002451410A816D8189205541CE84C8BDFF2351419DCAA8AC89205541A728E4A3FF2351414F7259B8892055411AF7FC63FF235141158033D58920554166666646FF235141295C8FE289205541FB5FA5F4FE235141541657BA89205541942D937FFE2351410766F782892055410453BD3CFE2351412B258FA98920554114AE4701FE235141E17A14CE8920554101BF5CC1FC2351412CAF89218A2055417B14AE77FC2351410AD7A3008B205541100BB1DBFB235141469191388B2055414ACE7DACFB235141C6EE7D498B20554133333393FB235141295C8F528B2055415D947E71FB235141D49FB82E8B2055413735C6FBFA2351417FCF0BB58A2055419FD4BEDEFA2351415BB621EC8A2055415FE17374FA235141576287C58B205541D3251B61FA2351417E6CB2F18B2055418FDA5294FA2351418E30EA5D8C205541713D0AD7FA235141AE47E1EA8C205541D7A3707DFA235141E17A149E8D205541D709E03BFA2351413B0638D78D205541EC51B83EF92351413D0AD7B38E20554114AE4731F82351415C8FC2158F205541B847C62CF7235141D94A7FFD8E20554165D17BF1F62351419A8E20458F2055418FC2F598F623514114AE47B18F20554166666626F62351410AD7A3A08F20554133E2F524F62351413FD980C38E2055412C858A11F62351417ADF53B68E2055414D8C99F2F5235141CDA455A18E205541861047D0F5235141782E0C8A8E2055417C43C8BBF5235141A353247C8E205541B315EDB1F5235141D46574758E205541F7979BACF5235141E1A6D8718E2055416F00B09DF4235141D659A4E38D205541CDCCCC3CF4235141EC51B8BE8D205541F6285C3FF3235141333333038D2055417FB73CE4F2235141B907249A8C2055412DD48757F223514122ADC40D8C2055414AAC49ECF12351416DFD45B48B205541CBA9B4A7F12351417017E9D38B205541C2F8DDFFF0235141AF7FC2358C205541DC3402FEF023514133DED7368C2055415A1CE3EAF02351415FB0FD418C205541BC54DDC2F0235141E4EF52598C205541C7F5583FF02351416520D1048D205541F6285C1FF02351413D0AD7338D20554170066518F02351414331E4348D2055413AE1D322EF23514179C6BE6E8D205541ECF83C4BEE235141D50EB9EA8D20554101463EF6ED235141A6B1991B8E205541CDCCCC5CED2351413D0AD7738E205541F6285C8FEC2351411F85EB218E20554106AD16E5EB235141E973CF868E20554167257726EB235141057AC2F78E2055414389E25DEA23514106E69B6E8F205541B844792FEA235141E6DD1B8A8F20554185EB5158E823514114AE47A19020554133333303E7235141F6285C2F91205541976DCEABE6235141F31F61479120554148E17AD4E5235141295C8F82912055410A4C13C5E4235141F86C5E249220554192E1BF71E323514126AFA65E93205541E17A61ACE2235141DFD6115F94205541C3F5289CE22351416666667694205541162D258EE22351415533568394205541FAB9641AE22351413BD02D0E95205541CDCCCC2CE2235141CDCCCCAC952055417653D040E023514110852AE39520554120953D73DF23514124A31113962055418FC2F5E8DE23514114AE4741962055416F9588E5DE23514185332E3D9620554172D141A1DE235141F5C380EE9520554163B37F05DD235141276292549720554175FE35A8DA235141A0934A6799205541935669A2DA2351419354606C9920554193C8FC18D9235141541D55C59A205541DFA919DBD9235141CF5163029B2055410B0EB316DB2351413BAC8CD19A205541AE47E18ADC235141EC51B87E9A205541AE47E13ADE235141713D0A579B20554166D1714CDE2351411CE1446D9B205541D86D13D1DE23514190371F159C2055414EB2BF1DDF2351414D4002299C20554193760CBBDF23514183C0FE489C2055414695F4BFDF235141E12DFE499C2055415EEDEBD2E0235141E6FDE7819C20554119C9A619E1235141E3F349909C20554193878267E123514146FF1EA09C2055415849E7A1E123514127C5FEAB9C205541D4B60FB6E2235141CB9E26E49C2055417B14AEB7E223514148E17AE49C20554157138942E2235141B6CAF8329D205541C9E9BAE8DF235141AA0235C69E20554145329F83DD23514168427574A0205541607F7F14DD235141A80B5BCFA02055413AACE0C0DC235141E780C113A1205541EE7C8652DC235141E5B9056EA1205541D1857DEEDB235141A978D9BFA1205541B7C39C67DA235141FFEC94FFA2205541B87F3A67DA235141384EE5FFA2205541C5CF7385D92351414CC193B8A32055415F4319A8D9235141D78E97FBA320554173E08F0CDC235141238D0CADA520554135A4D149DE2351416531C242A72055417390FA02DF235141948BC3ABA720554156FF0C01E0235141106FE95AA7205541CCFAA882E1235141E79033E0A6205541454BA420E32351418D94EAD0A520554185EB51F8E323514114AE4741A5205541549CEC9CE523514177161831A42055410963BD82E6235141C7EF4E54A320554149BB0C1FE7235141854BF095A22055416B68E83CE72351410F129371A2205541E16DCA3EE7235141A5929F4BA22055410AD7A360E6235141D7A3703DA1205541EADA3367E6235141B46177CDA0205541AE47E16AE6235141EC51B88EA02055419C7DE973E6235141E27FF78AA020554183A5DF6CE82351419A5422B99F205541C9DB2F90EA23514123D5B3D59E20554148E17AA4F2235141A4703D7A9B2055416360E50DF52351412466EB369B2055415A8BA414F523514167132F369B20554155DB40B0F723514136B58AEB9A205541295B04C0F723514148FF9AE89A205541EFAC32CAF92351413F2256879A205541D1C65E02FA235141CC7CDF7C9A205541011E3BACFC2351413917DCFD99205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417AD0F04105245141F2E6D83C9B205541A7ADB9AA052451413B5C629A9B2055412A450D0106245141FA8B03779B205541DDCD31FE072451419180B98D9A2055419E2221920A24514109A7575F99205541638CBF640B245141D3E74BF898205541D2F69B350B245141B8A50B509720554129FDAABA0B245141DC18C78597205541863962090E2451413728E95898205541259EEB0A152451417B492BD99A2055413D0AD75315245141333333F39A2055415D6F33A90B245141B71A1151962055419A9999890B2451411F85EB4196205541CB6AD5070C245141BC9096B494205541126705240C2451415E99DD5B9420554116CD524C0C245141AFA702DD93205541E17A145E0C24514152B81EA59320554130DC0BB20B245141BEB415699320554178346B830B2451414EB4AB5993205541F812EA540B245141E8C8AC6993205541EC9D7F8A0A245141B20105B493205541D7CC54410A2451416BD72FE59320554151F0D30B0A2451416242611C942055415C8FC2F5092451410AD7A390942055411F85EBF1082451411F85EBA1942055419322FCDA082451419322FC8A94205541BBC68F6A082451412193CE2094205541C604EFE00624514137FC7E0A942055413008C6C406245141F611920994205541464489A4062451413FDA82089420554148E17A8407245141A4703DFA9420554128A71F8407245141740BE2FB942055412AC3667D072451418AAB3B2D952055417B14AE4707245141295C8F1296205541AE47E15A05245141CDCCCC1C972055415C8FC2B5032451410AD7A3F0972055413BCEF0A6032451410D26B4F197205541D7A3702D02245141CDCCCC0C98205541B73452AD02245141F7C9E621962055410588177602245141C36B850D96205541F7FA115B00245141976908CD9620554114AE47E1FF235141000000C0982055412B4F14DFFF2351419F740AC298205541EC51B86EFF235141A4703D2A9920554193EAF16AFF235141C179562999205541C5E5CF05FF23514188EC2A11992055419AFE53E6FE23514167A8A409992055417468F4E3FE235141CF7213099920554102E96DDDFE235141C2358407992055412F5E8EDCFE235141E8C84E079920554102319B46FD23514159DDFD1D9920554116C753ADFC235141CD47FF43992055415C8FC225FC23514152B81EA599205541714134FFFB235141C4EF3FA399205541A4703D7AFB235141CDCCCC9C992055415BF6815FFB23514162692317992055419A999959FB2351419A9999F998205541BE0F84EBFB235141BC797EA0982055416A5D353DFC235141F5642A66982055414F04EC4AFC235141CC3EBFBA97205541BCB2584BFC23514163716A839720554102FD6A4BFC2351411BA11A7A97205541A4703D7AFB2351419A999969972055415B71677EFB235141168397E69620554123323382FB2351417CAA2A6F96205541BD51C918FB235141C27CCD2E9520554185EB5118FB235141D7A3702D952055413B663E70FB235141AD0359F191205541A4703D7AFB2351413333339391205541666D4F7DFD2351414ED67B6B9120554152B81E85FD235141713D0AC790205541CDCCCC0CFF23514152B81E859020554148E17A840324514148E17A64902055419A999979042451410000001091205541D7A370ED05245141EC51B82E92205541B3A47E1006245141FB0A6A539220554129E0C82D07245141AEE3DA5793205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758399 - 405515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000B00000007475023398E6504197E3F46A65AC5441BE21E3249AE6504129E038126CAC54412843EEF199E650417A7007706CAC54413D0AD7939EE650417B14AED76FAC5441AEE6E1BDA5E65041DC8EA70973AC544152B81ED5AAE650415C8FC2C578AC5441AE47E1EAACE65041666666D678AC544160E2A965AFE6504129B968D978AC54418FC2F5B8B7E65041C3F528BC7CAC5441AE47E18ABBE65041666666E67DAC5441713D0AF7BBE6504114AE47417EAC54418FC2F508C7E650413D0AD7E381AC54418A6DE025CEE650415FA8564883AC54417B14AE97D7E65041C3F528EC84AC544152B81E15E1E6504185EB518885AC5441F6285C6FE6E650418FC2F50886AC544148E17AF4E8E650410000000086AC54415C8FC275EBE650413D0AD77386AC544166666616F6E65041F6285C8F89AC5441AE47E1CAF8E65041295C8FC289AC5441A4703D2AFBE6504185EB51D88AAC54415C8FC2F5FFE65041D7A3709D8BAC5441EC51B8EE01E75041AE47E16A8CAC54417B14AEA703E7504185EB51288EAC54418E69D27C05E750419B0A73B08CAC544171A8D16007E75041623082778CAC5441295C8FD209E75041CDCCCC1C8EAC5441666666460AE750410AD7A3308FAC54419A9999E90AE7504148E17AB490AC54419A9999390CE75041C3F528BC92AC5441A5672A790CE750412E8FBBEE92AC54417B14AEA70CE750417B14AEF793AC54419A9999E90BE75041E17A145E95AC5441420296480BE75041191E2F3A96AC544185EB51F808E750417B14AE5797AC54411F85EB3106E75041F6285CDF98AC54410000005004E7504148E17A5499AC5441333333C302E75041666666969BAC544185EB51F807E75041F6285CDF9BAC544152B81EE50AE75041EC51B8CE9BAC54410000006017E75041EC51B84E9BAC54411F85EB6129E75041000000909AAC5441E17A142E29E75041CDCCCC5CA2AC5441C3F528CC25E750418FC2F5E8B0AC544152B81EE51EE750417B14AE87BAAC5441000000801BE75041EC51B8AEC4AC5441333333C319E75041295C8FB2CCAC5441B81E854B17E75041C3F5285CDCAC5441713D0AB717E7504148E17A44E8AC5441A4703D7A18E750415C8FC205EBAC5441C3F5289C19E750417B14AE77EDAC5441666666261BE75041AE47E1CAF0AC5441C3F5284C1DE750415C8FC2E5F2AC544148E17AE41EE75041B81E859BF4AC5441333333931FE750415C8FC245F3AC5441EC51B89E21E75041295C8F42EEAC5441333333D323E750413D0AD7C3E7AC5441CDCCCC3C29E7504185EB51D8D6AC5441D7A370FD29E7504148E17AE4D3AC5441CDCCCC7C28E75041B81E85ABD3AC5441F6285C9F26E750417B14AE97D2AC544185EB519824E750418FC2F5F8D1AC54410000003023E75041EC51B8AED1AC5441A4703D4A23E75041E17A148ED0AC5441D7A3700D25E75041C3F5288CCAAC54415C8FC2E526E750411F85EB41C4AC544114AE47E128E75041295C8F82BDAC5441CDCCCCEC29E75041295C8FF2B9AC54418FC2F5482BE75041AE47E1BAB6AC54411F85EB512EE75041EC51B88EAFAC544185EB51D831E75041B81E853BA7AC5441E17A143E31E75041AE47E1BA9FAC54418FC2F5C830E7504148E17A049AAC54413333336330E75041713D0A0795AC5441EC51B80E30E7504185EB51E890AC5441AE47E13A2CE750415C8FC2158FAC5441A4703D4A29E75041EC51B8AE8DAC5441CDCCCC0C30E750419A99997983AC54415C8FC2F527E75041D7A370BD81AC5441E17A14AE27E75041B81E85EB80AC5441B81E858B23E75041EC51B8AE80AC544185EB512818E7504114AE470181AC5441AE47E14A0DE75041AE47E12A82AC5441666666B604E750418FC2F56883AC5441EC51B8EEFBE65041295C8F9284AC54415C8FC285F7E65041F6285CCF83AC5441B81E856BEEE65041D7A370CD80AC544185EB5168E9E65041713D0AD77FAC5441F6285C8FE5E65041CDCCCCCC7FAC5441CDCCCCCCD4E65041295C8FC27FAC54418FC2F518CBE65041D7A3703D7FAC5441F6285CAFC5E6504185EB51987DAC5441295C8FD2BBE650417B14AEE778AC5441CDCCCC8CAEE650413333337372AC5441B81E850BA4E65041000000706DAC5441D7A370FD9CE65041B81E85AB69AC5441D7A370DD9AE650411F85EBF167AC54410AD7A3F098E65041333333B365AC54416666663696E65041D7A370ED60AC544185EB516893E65041333333835AAC5441EC51B8AE91E650410000008054AC544148E17A1491E65041666666A650AC5441713D0AA790E65041713D0AE749AC5441AE47E18A91E65041CDCCCCCC4AAC54415C8FC2B591E65041295C8F424BAC54410AD7A3C091E65041713D0A474EAC5441E17A14DE91E650410AD7A3C050AC544185EB519892E65041E17A145E54AC54413333330394E650413D0AD78359AC54410AD7A3C096E65041713D0AA75FAC5441B81E85EB99E650411F85EB7165AC5441CDCCCC8C9DE65041713D0A1769AC5441295C8FA29DE650418FC2F5C867AC5441D7A3708D9DE650418FC2F59866AC5441D7A370AD9EE650410000006067AC5441AE47E16A9EE65041EC51B8FE65AC5441D7A3708D9DE650416666668664AC54418FC2F5089DE65041666666C65FAC54411F85EB419CE65041E17A144E5EAC544152B81E559CE650418FC2F5885BAC5441C3F5280C9BE650410AD7A3D059AC544185EB51389BE650410000000058AC5441A4703DFA98E650415C8FC22555AC5441A4703DFA98E650418FC2F52853AC54413333331397E650416666661651AC54411F85EB6196E65041C3F5285C4FAC54413333332394E650418FC2F5784BAC5441C3F5285C93E65041D7A3700D49AC54410AD7A31092E6504185EB51D847AC544185EB519890E650419A99996947AC54417B14AEC78EE65041713D0A9740AC5441C3F5286C90E65041B81E85DB3EAC54410AD7A3208FE650411F85EB213DAC54419A9999398DE650417B14AE673BAC5441CDCCCC8C8AE650418FC2F50838AC54415C8FC2B585E6504114AE47A133AC54410AD7A35082E65041E17A14EE32AC5441A4703D7A81E65041B81E856B32AC54419A9999A97FE65041E17A14AE32AC54413D0AD7A37CE65041D7A370FD31AC54410AD7A3B07BE65041713D0AE731AC5441333333237BE650410000005031AC5441D7A3701D78E6504152B81E3531AC5441AE47E16A78E65041B81E85AB31AC54415C8FC2857AE650410AD7A3D032AC5441D7A370CD7EE65041F6285CFF33AC544114AE47B17EE65041713D0A6734AC5441333333437AE650418FC2F53833AC5441EC51B84E78E650418FC2F56832AC54418FC2F5E877E65041F6285CCF31AC544148E17A4473E65041B81E851B32AC54413333339370E650418FC2F50831AC54419A9999796EE650411F85EBE12DAC54418FC2F5186CE65041B81E85CB2BAC5441D7A3707D68E65041666666962AAC54415C8FC2A564E6504148E17A7428AC5441B81E85AB61E650413D0AD76325AC54417F461BFF5EE650412C8F48DC28AC5441333333535FE65041C3F5285C2AAC5441CDCCCC2C60E65041A4703DBA2CAC54411E8812C964E650411666F4EE2AAC54410CF545346FE6504161D1CFB134AC5441B81E852B74E650413333330339AC54413333337376E650417B14AEB739AC5441EC51B8BE77E650413D0AD7833AAC54417B14AEE77AE650415C8FC2753CAC54410AD7A3807CE65041000000703DAC5441E17A14BE7DE65041713D0A173EAC54413943D30D87E65041AA2048F942AC5441706D1C3489E6504111108C9C44AC5441FD608F6E8AE65041CD1ABBB546AC5441FC0412328DE65041A3BA0EE249AC5441332F5B588FE650418063337B52AC5441741A706491E65041A053EA5C5AAC5441F34C17B992E65041FE2FA1B85AAC54417475023398E6504197E3F46A65AC5441
+</a>
+
+<b>
+0106000000010000000103000000010000009E000000295C8FD209E75041CDCCCC1C8EAC544129ED4B460AE75041F4CC64308FAC5441B1FDFF3F18E75041E4D9A39091AC54411E33332318E750417CA070CD96AC5441D142805D17E75041D55585369BAC54414D87EB6129E750419AFCFF8F9AAC54412C7B142E29E7504101CCCC5CA2AC5441165B33FE28E750412E66B82AA3AC5441C3F528CC25E750418FC2F5E8B0AC5441A2B2A1EE21E75041FC4A104CB6AC5441C8B81EE51EE750410816AE87BAAC54417CF183EC1DE75041122A1D6FBDAC5441000000801BE75041EC51B8AEC4AC54419CE7BD7F1AE75041567BD34CC9AC5441A23533C319E75041865A8FB2CCAC5441DC20854B17E7504190F7285CDCAC54412DB1B29717E75041A1BEE5CBE4AC5441713D0AB717E7504148E17A44E8AC54414340194518E750415610C145EAAC5441C4703D7A18E75041858EC205EBAC5441F3F8289C19E750410514AE77EDAC544178FB439C19E75041666CE877EDAC5441666666261BE75041AE47E1CAF0AC5441D4FF284C1DE75041249AC2E5F2AC5441A9017B091FE7504160392553F4AC5441333333931FE750415C8FC245F3AC5441EC51B89E21E75041295C8F42EEAC5441019C262D23E750414C6BF3ACE9AC5441DD3233D323E750417A08D7C3E7AC5441B0D1CD3C29E75041DCEB4DD8D6AC5441D7A370FD29E7504148E17AE4D3AC5441CDCCCC7C28E75041B81E85ABD3AC5441F6285C9F26E750417B14AE97D2AC544185EB519824E750418FC2F5F8D1AC54410000003023E75041EC51B8AED1AC544138703D4A23E750412979148ED0AC5441AF051EF623E7504102073C44CEAC5441D7A3700D25E75041C3F5288CCAAC54415C8FC2E526E750411F85EB41C4AC5441DB9E877627E75041350E3155C2AC544192AC47E128E750411D5B8F82BDAC5441217D8B8B29E75041A18E1C3EBBAC5441CDCCCCEC29E75041295C8FF2B9AC54418FC2F5482BE75041AE47E1BAB6AC54417F7A7F302CE75041E5F4B197B4AC5441CD80EB512EE750414554B88EAFAC54414FD7687530E75041057AB681AAAC544185EB51D831E75041B81E853BA7AC5441E17A143E31E75041AE47E1BA9FAC54418FC2F5C830E7504148E17A049AAC54416A7EE47A30E750416CA8763096AC5441E832336330E750411E3F0A0795AC5441FF50B80E30E7504146EC51E890AC5441E017891B2FE75041A182867490AC5441AE47E13A2CE750415C8FC2158FAC5441A4703D4A29E75041EC51B8AE8DAC54418A0C654A29E75041C8827CAE8DAC54412B0000A030E750416347E19A82AC544139BBF12B31E7504140EC1AE381AC54411F85EB212FE750416666668681AC54412E7E85892DE750410D17146181AC54410F713FE129E75041E4A6840B81AC5441E17A14AE27E75041B81E85EB80AC54418816D39723E75041473E6DAF80AC544126EC512818E75041E0AE470181AC54415474FDF614E7504132ECBA5881AC5441AE47E14A0DE75041AE47E12A82AC5441654D112508E75041DB90B7E982AC5441DD6666B604E75041DCC3F56883AC5441ED3380B1FCE650410F39C57884AC54419F50B8EEFBE65041345C8F9284AC54415C8FC285F7E65041F6285CCF83AC5441B81E856BEEE65041D7A370CD80AC544185EB5168E9E65041713D0AD77FAC5441AE77EAE3E8E65041C3D9A9D57FAC5441D02B5C8FE5E650413ACECCCC7FAC54417CF9FB65D5E65041CAF3ECC27FAC544152C9CCCCD4E650411E5C8FC27FAC544152C4F518CBE65041A3A4703D7FAC544195285CAFC5E6504126EC51987DAC54412C231E1DC3E65041E9E34C5F7CAC5441295C8FD2BBE650417B14AEE778AC5441CDCCCC8CAEE650413333337372AC5441877FB746ACE650413EF2745D71AC54419F1C850BA4E65041AD0100706DAC5441DF30A87C9EE6504151392A786AAC5441D7A370FD9CE65041B81E85AB69AC5441B53861089CE65041B2B896E468AC5441C2A370DD9AE650414B86EBF167AC5441B3D5A3F098E65041A93333B365AC54416E64663696E65041AFA570ED60AC544145EB516893E65041D43333835AAC5441D964453693E650412F0CC1D459AC5441EC51B8AE91E650410000008054AC544148E17A1491E65041666666A650AC5441B2516DC690E65041D0EB70D64BAC5441E53C0AA790E65041073E0AE749AC544118EA51F88DE65041ADAF473147AC5441BD15AE8789E65041530AD78339AC54411B3D0A577AE65041525B8F8235AC54418FC2F5E877E65041F6285CCF31AC5441D0DF7A4473E65041221E851B32AC54414135339370E65041D5C5F50831AC544138D751256EE650411481EB972DAC5441F0FF790F6CE65041708058C82BAC54414C5EC7446CE6504164B3BFF131AC5441BC4746296EE65041713EAAB733AC5441260B4C2071E650418941A45D36AC54413708D04073E650413F5D1D3738AC54415F1B1AB275E65041E5D8F87B39AC54413333337376E650417B14AEB739AC5441DC50CCBB77E650417F650A823AAC5441583B0A677AE650410192C2C53BAC544125DAA35080E650411A82EBB13EAC54410CD8A3E083E65041FBDF7A7440AC54418709D77386E65041D92A5C9F41AC5441841F850B88E6504125D4A31043AC544142D6AEB588E65041AB90383C44AC5441746D1C3489E650410E108C9C44AC5441FC608F6E8AE65041C91ABBB546AC5441FB0412328DE65041A3BA0EE249AC5441302F5B588FE650418563337B52AC5441FAD18C6A90E650410CE3D89A56AC54412ADE23E191E65041B12F7D7E5AAC5441EE4C17B992E65041FB2FA1B85AAC54417075023398E6504197E3F46A65AC5441C321E3249AE6504126E038126CAC54412A43EEF199E65041777007706CAC54410BB613629DE65041ED35F1F66EAC544110A6707D9EE650413183EBB16FAC5441571CEEFC9FE65041747BB97870AC5441B0E6E1BDA5E65041DA8EA70973AC54416A356063A7E65041E23278E474AC54412DA4702DABE65041089C992977AC5441D624CF5DAEE65041BE8728D878AC54415CE2A965AFE6504127B968D978AC544159EE14BEB6E65041ADF910477CAC54411FF60762B8E65041FDE5B8EF7CAC5441AE47E18ABBE65041666666E67DAC5441713D0AF7BBE6504114AE47417EAC54418FC2F508C7E650413D0AD7E381AC5441EE170386C7E65041C19952FC81AC5441CFEA5188CFE650410DEA511883AC5441873233F3D8E65041E599996984AC54417EB94171DCE65041935FF73B85AC544152B81E15E1E6504185EB518885AC5441F6285C6FE6E650418FC2F50886AC544148E17AF4E8E650410000000086AC54415C8FC275EBE650413D0AD77386AC544166666616F6E65041F6285C8F89AC5441AE47E1CAF8E65041295C8FC289AC5441A4703D2AFBE6504185EB51D88AAC54415C8FC2F5FFE65041D7A3709D8BAC5441EC51B8EE01E75041AE47E16A8CAC54417B14AEA703E7504185EB51288EAC54418F69D27C05E75041990A73B08CAC544174A8D16007E75041673082778CAC5441295C8FD209E75041CDCCCC1C8EAC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758399 - 410251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000B00000007475023398E6504197E3F46A65AC5441BE21E3249AE6504129E038126CAC54412843EEF199E650417A7007706CAC54413D0AD7939EE650417B14AED76FAC5441AEE6E1BDA5E65041DC8EA70973AC544152B81ED5AAE650415C8FC2C578AC5441AE47E1EAACE65041666666D678AC544160E2A965AFE6504129B968D978AC54418FC2F5B8B7E65041C3F528BC7CAC5441AE47E18ABBE65041666666E67DAC5441713D0AF7BBE6504114AE47417EAC54418FC2F508C7E650413D0AD7E381AC54418A6DE025CEE650415FA8564883AC54417B14AE97D7E65041C3F528EC84AC544152B81E15E1E6504185EB518885AC5441F6285C6FE6E650418FC2F50886AC544148E17AF4E8E650410000000086AC54415C8FC275EBE650413D0AD77386AC544166666616F6E65041F6285C8F89AC5441AE47E1CAF8E65041295C8FC289AC5441A4703D2AFBE6504185EB51D88AAC54415C8FC2F5FFE65041D7A3709D8BAC5441EC51B8EE01E75041AE47E16A8CAC54417B14AEA703E7504185EB51288EAC54418E69D27C05E750419B0A73B08CAC544171A8D16007E75041623082778CAC5441295C8FD209E75041CDCCCC1C8EAC5441666666460AE750410AD7A3308FAC54419A9999E90AE7504148E17AB490AC54419A9999390CE75041C3F528BC92AC5441A5672A790CE750412E8FBBEE92AC54417B14AEA70CE750417B14AEF793AC54419A9999E90BE75041E17A145E95AC5441420296480BE75041191E2F3A96AC544185EB51F808E750417B14AE5797AC54411F85EB3106E75041F6285CDF98AC54410000005004E7504148E17A5499AC5441333333C302E75041666666969BAC544185EB51F807E75041F6285CDF9BAC544152B81EE50AE75041EC51B8CE9BAC54410000006017E75041EC51B84E9BAC54411F85EB6129E75041000000909AAC5441E17A142E29E75041CDCCCC5CA2AC5441C3F528CC25E750418FC2F5E8B0AC544152B81EE51EE750417B14AE87BAAC5441000000801BE75041EC51B8AEC4AC5441333333C319E75041295C8FB2CCAC5441B81E854B17E75041C3F5285CDCAC5441713D0AB717E7504148E17A44E8AC5441A4703D7A18E750415C8FC205EBAC5441C3F5289C19E750417B14AE77EDAC5441666666261BE75041AE47E1CAF0AC5441C3F5284C1DE750415C8FC2E5F2AC544148E17AE41EE75041B81E859BF4AC5441333333931FE750415C8FC245F3AC5441EC51B89E21E75041295C8F42EEAC5441333333D323E750413D0AD7C3E7AC5441CDCCCC3C29E7504185EB51D8D6AC5441D7A370FD29E7504148E17AE4D3AC5441CDCCCC7C28E75041B81E85ABD3AC5441F6285C9F26E750417B14AE97D2AC544185EB519824E750418FC2F5F8D1AC54410000003023E75041EC51B8AED1AC5441A4703D4A23E75041E17A148ED0AC5441D7A3700D25E75041C3F5288CCAAC54415C8FC2E526E750411F85EB41C4AC544114AE47E128E75041295C8F82BDAC5441CDCCCCEC29E75041295C8FF2B9AC54418FC2F5482BE75041AE47E1BAB6AC54411F85EB512EE75041EC51B88EAFAC544185EB51D831E75041B81E853BA7AC5441E17A143E31E75041AE47E1BA9FAC54418FC2F5C830E7504148E17A049AAC54413333336330E75041713D0A0795AC5441EC51B80E30E7504185EB51E890AC5441AE47E13A2CE750415C8FC2158FAC5441A4703D4A29E75041EC51B8AE8DAC5441CDCCCC0C30E750419A99997983AC54415C8FC2F527E75041D7A370BD81AC5441E17A14AE27E75041B81E85EB80AC5441B81E858B23E75041EC51B8AE80AC544185EB512818E7504114AE470181AC5441AE47E14A0DE75041AE47E12A82AC5441666666B604E750418FC2F56883AC5441EC51B8EEFBE65041295C8F9284AC54415C8FC285F7E65041F6285CCF83AC5441B81E856BEEE65041D7A370CD80AC544185EB5168E9E65041713D0AD77FAC5441F6285C8FE5E65041CDCCCCCC7FAC5441CDCCCCCCD4E65041295C8FC27FAC54418FC2F518CBE65041D7A3703D7FAC5441F6285CAFC5E6504185EB51987DAC5441295C8FD2BBE650417B14AEE778AC5441CDCCCC8CAEE650413333337372AC5441B81E850BA4E65041000000706DAC5441D7A370FD9CE65041B81E85AB69AC5441D7A370DD9AE650411F85EBF167AC54410AD7A3F098E65041333333B365AC54416666663696E65041D7A370ED60AC544185EB516893E65041333333835AAC5441EC51B8AE91E650410000008054AC544148E17A1491E65041666666A650AC5441713D0AA790E65041713D0AE749AC5441AE47E18A91E65041CDCCCCCC4AAC54415C8FC2B591E65041295C8F424BAC54410AD7A3C091E65041713D0A474EAC5441E17A14DE91E650410AD7A3C050AC544185EB519892E65041E17A145E54AC54413333330394E650413D0AD78359AC54410AD7A3C096E65041713D0AA75FAC5441B81E85EB99E650411F85EB7165AC5441CDCCCC8C9DE65041713D0A1769AC5441295C8FA29DE650418FC2F5C867AC5441D7A3708D9DE650418FC2F59866AC5441D7A370AD9EE650410000006067AC5441AE47E16A9EE65041EC51B8FE65AC5441D7A3708D9DE650416666668664AC54418FC2F5089DE65041666666C65FAC54411F85EB419CE65041E17A144E5EAC544152B81E559CE650418FC2F5885BAC5441C3F5280C9BE650410AD7A3D059AC544185EB51389BE650410000000058AC5441A4703DFA98E650415C8FC22555AC5441A4703DFA98E650418FC2F52853AC54413333331397E650416666661651AC54411F85EB6196E65041C3F5285C4FAC54413333332394E650418FC2F5784BAC5441C3F5285C93E65041D7A3700D49AC54410AD7A31092E6504185EB51D847AC544185EB519890E650419A99996947AC54417B14AEC78EE65041713D0A9740AC5441C3F5286C90E65041B81E85DB3EAC54410AD7A3208FE650411F85EB213DAC54419A9999398DE650417B14AE673BAC5441CDCCCC8C8AE650418FC2F50838AC54415C8FC2B585E6504114AE47A133AC54410AD7A35082E65041E17A14EE32AC5441A4703D7A81E65041B81E856B32AC54419A9999A97FE65041E17A14AE32AC54413D0AD7A37CE65041D7A370FD31AC54410AD7A3B07BE65041713D0AE731AC5441333333237BE650410000005031AC5441D7A3701D78E6504152B81E3531AC5441AE47E16A78E65041B81E85AB31AC54415C8FC2857AE650410AD7A3D032AC5441D7A370CD7EE65041F6285CFF33AC544114AE47B17EE65041713D0A6734AC5441333333437AE650418FC2F53833AC5441EC51B84E78E650418FC2F56832AC54418FC2F5E877E65041F6285CCF31AC544148E17A4473E65041B81E851B32AC54413333339370E650418FC2F50831AC54419A9999796EE650411F85EBE12DAC54418FC2F5186CE65041B81E85CB2BAC5441D7A3707D68E65041666666962AAC54415C8FC2A564E6504148E17A7428AC5441B81E85AB61E650413D0AD76325AC54417F461BFF5EE650412C8F48DC28AC5441333333535FE65041C3F5285C2AAC5441CDCCCC2C60E65041A4703DBA2CAC54411E8812C964E650411666F4EE2AAC54410CF545346FE6504161D1CFB134AC5441B81E852B74E650413333330339AC54413333337376E650417B14AEB739AC5441EC51B8BE77E650413D0AD7833AAC54417B14AEE77AE650415C8FC2753CAC54410AD7A3807CE65041000000703DAC5441E17A14BE7DE65041713D0A173EAC54413943D30D87E65041AA2048F942AC5441706D1C3489E6504111108C9C44AC5441FD608F6E8AE65041CD1ABBB546AC5441FC0412328DE65041A3BA0EE249AC5441332F5B588FE650418063337B52AC5441741A706491E65041A053EA5C5AAC5441F34C17B992E65041FE2FA1B85AAC54417475023398E6504197E3F46A65AC5441
+</a>
+
+<b>
+0106000000010000000103000000010000009E000000295C8FD209E75041CDCCCC1C8EAC544129ED4B460AE75041F4CC64308FAC5441B1FDFF3F18E75041E4D9A39091AC54411E33332318E750417CA070CD96AC5441D142805D17E75041D55585369BAC54414D87EB6129E750419AFCFF8F9AAC54412C7B142E29E7504101CCCC5CA2AC5441165B33FE28E750412E66B82AA3AC5441C3F528CC25E750418FC2F5E8B0AC5441A2B2A1EE21E75041FC4A104CB6AC5441C8B81EE51EE750410816AE87BAAC54417CF183EC1DE75041122A1D6FBDAC5441000000801BE75041EC51B8AEC4AC54415137977D1AE75041E2C7BF56C9AC5441A23533C319E75041865A8FB2CCAC5441DC20854B17E7504190F7285CDCAC54412DB1B29717E75041A1BEE5CBE4AC5441713D0AB717E7504148E17A44E8AC54414340194518E750415610C145EAAC5441C4703D7A18E75041858EC205EBAC5441F3F8289C19E750410514AE77EDAC544178FB439C19E75041666CE877EDAC5441666666261BE75041AE47E1CAF0AC5441D4FF284C1DE75041249AC2E5F2AC5441A9017B091FE7504160392553F4AC5441333333931FE750415C8FC245F3AC5441EC51B89E21E75041295C8F42EEAC5441019C262D23E75041476BF3ACE9AC5441DD3233D323E750417A08D7C3E7AC5441B0D1CD3C29E75041DCEB4DD8D6AC5441D7A370FD29E7504148E17AE4D3AC5441CDCCCC7C28E75041B81E85ABD3AC5441F6285C9F26E750417B14AE97D2AC544185EB519824E750418FC2F5F8D1AC54410000003023E75041EC51B8AED1AC544138703D4A23E750412979148ED0AC5441AF051EF623E7504102073C44CEAC5441D7A3700D25E75041C3F5288CCAAC54415C8FC2E526E750411F85EB41C4AC5441DB9E877627E75041350E3155C2AC544192AC47E128E750411D5B8F82BDAC5441217D8B8B29E75041A18E1C3EBBAC5441CDCCCCEC29E75041295C8FF2B9AC54418FC2F5482BE75041AE47E1BAB6AC54417F7A7F302CE75041E5F4B197B4AC5441CD80EB512EE750414554B88EAFAC54414FD7687530E75041057AB681AAAC544185EB51D831E75041B81E853BA7AC5441E17A143E31E75041AE47E1BA9FAC54418FC2F5C830E7504148E17A049AAC544140CECF7930E75041BF43E52296AC5441E832336330E750411E3F0A0795AC5441FF50B80E30E7504146EC51E890AC5441E117891B2FE75041A682867490AC5441AE47E13A2CE750415C8FC2158FAC5441A4703D4A29E75041EC51B8AE8DAC54418A0C654A29E75041C8827CAE8DAC54412B0000A030E750416347E19A82AC544139BBF12B31E7504140EC1AE381AC54411F85EB212FE750416666668681AC54412F7E85892DE750410E17146181AC54410F713FE129E75041E4A6840B81AC5441E17A14AE27E75041B81E85EB80AC54418816D39723E75041473E6DAF80AC544126EC512818E75041E0AE470181AC5441CC9DFEFF14E750412F48C45781AC5441AE47E14A0DE75041AE47E12A82AC5441654D112508E75041DB90B7E982AC5441DD6666B604E75041DCC3F56883AC5441ED3380B1FCE650410F39C57884AC54419F50B8EEFBE65041345C8F9284AC54415C8FC285F7E65041F6285CCF83AC5441B81E856BEEE65041D7A370CD80AC544185EB5168E9E65041713D0AD77FAC5441AE77EAE3E8E65041C3D9A9D57FAC5441D02B5C8FE5E650413ACECCCC7FAC544180F9FB65D5E65041CAF3ECC27FAC544152C9CCCCD4E650411E5C8FC27FAC544152C4F518CBE65041A3A4703D7FAC544195285CAFC5E6504126EC51987DAC54412C231E1DC3E65041E9E34C5F7CAC5441295C8FD2BBE650417B14AEE778AC5441CDCCCC8CAEE650413333337372AC5441AF434B3AACE65041607C875771AC54419F1C850BA4E65041AD0100706DAC54418A8C8D839EE6504128F5D87B6AAC5441D7A370FD9CE65041B81E85AB69AC5441B53861089CE65041B4B896E468AC5441C2A370DD9AE650414B86EBF167AC5441B3D5A3F098E65041A93333B365AC54416E64663696E65041AFA570ED60AC544145EB516893E65041D43333835AAC5441D964453693E650412F0CC1D459AC5441EC51B8AE91E650410000008054AC544148E17A1491E65041666666A650AC5441B2516DC690E65041D0EB70D64BAC5441E53C0AA790E65041073E0AE749AC544118EA51F88DE65041ADAF473147AC5441BD15AE8789E65041530AD78339AC54411B3D0A577AE65041525B8F8235AC54418FC2F5E877E65041F6285CCF31AC5441D0DF7A4473E65041221E851B32AC54414135339370E65041D5C5F50831AC544138D751256EE650411881EB972DAC5441ECFF790F6CE65041758058C82BAC54414E5EC7446CE650415FB3BFF131AC5441B84746296EE650416D3EAAB733AC5441260B4C2071E650418941A45D36AC54413608D04073E650413E5D1D3738AC54415F1B1AB275E65041E5D8F87B39AC54413333337376E650417B14AEB739AC5441DC50CCBB77E650417F650A823AAC5441583B0A677AE650410192C2C53BAC544125DAA35080E650411A82EBB13EAC54410CD8A3E083E65041FBDF7A7440AC54418709D77386E65041D92A5C9F41AC5441841F850B88E6504125D4A31043AC544142D6AEB588E65041AB90383C44AC5441746D1C3489E650410E108C9C44AC5441FC608F6E8AE65041C91ABBB546AC5441FB0412328DE65041A3BA0EE249AC5441302F5B588FE650418563337B52AC544105D28C6A90E6504139E3D89A56AC54412ADE23E191E65041B12F7D7E5AAC5441EE4C17B992E65041FB2FA1B85AAC54417075023398E6504197E3F46A65AC5441C321E3249AE6504126E038126CAC54412A43EEF199E65041777007706CAC54410BB613629DE65041ED35F1F66EAC544110A6707D9EE650413183EBB16FAC54410A1CEEFC9FE65041517BB97870AC5441B0E6E1BDA5E65041DA8EA70973AC54416A356063A7E65041E23278E474AC54412DA4702DABE65041089C992977AC5441D624CF5DAEE65041BE8728D878AC54415CE2A965AFE6504127B968D978AC544159EE14BEB6E65041ADF910477CAC544123F60762B8E65041FBE5B8EF7CAC5441AE47E18ABBE65041666666E67DAC5441713D0AF7BBE6504114AE47417EAC54418FC2F508C7E650413D0AD7E381AC5441ED170386C7E65041C09952FC81AC5441CFEA5188CFE650410DEA511883AC5441873233F3D8E65041E599996984AC54417EB94171DCE65041935FF73B85AC544152B81E15E1E6504185EB518885AC5441F6285C6FE6E650418FC2F50886AC544148E17AF4E8E650410000000086AC54415C8FC275EBE650413D0AD77386AC544166666616F6E65041F6285C8F89AC5441AE47E1CAF8E65041295C8FC289AC5441A4703D2AFBE6504185EB51D88AAC54415C8FC2F5FFE65041D7A3709D8BAC5441EC51B8EE01E75041AE47E16A8CAC54417B14AEA703E7504185EB51288EAC54418F69D27C05E75041990A73B08CAC544174A8D16007E75041673082778CAC5441295C8FD209E75041CDCCCC1C8EAC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>362634 - 4440008
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -670  </desc>
+<a>
+01060000000100000001030000000200000017000000000000F00EA45041C3F528AC7A5E5441CDCCCC6C0EA450417B14AE77865E54417B14AED70FA450418FC2F5B8985E5441A4703D0A10A45041CDCCCCBC9F5E5441C3F528CC0FA450411F85EB81A75E54410AD7A3A00FA45041CDCCCC6CB45E5441D7A3705D0FA45041AE47E10ABD5E5441F6285CFF16A4504185EB5138C05E54417B14AEB713A45041B81E85BBC75E54410AD7A32011A450415C8FC225CF5E54411F85EB111BA450410AD7A3C0D25E5441F6285C2F1EA45041AE47E18AD25E544148E17A2421A45041CDCCCCECCD5E5441EC51B89E29A4504152B81E75BB5E5441EC51B8BE2DA4504148E17AC4AF5E5441C3F5283C31A4504148E17AC4A65E5441A4703DDA37A450415C8FC2B5955E5441F6285CFF3AA4504185EB51D88F5E54417B14AE073EA45041333333B38B5E5441D7A3706D44A450411F85EBA1855E54413D0AD7D344A4504114AE4731845E5441000000000FA45041E17A144E7A5E5441000000F00EA45041C3F528AC7A5E544105000000F6285C5F25A450419A9999B9A65E5441A4703D0A26A45041B81E85FBA65E5441D7A370CD25A450419A999999A75E5441295C8F2225A4504185EB5158A75E5441F6285C5F25A450419A9999B9A65E5441
+</a>
+
+<b>
+0106000000010000000103000000020000001B0000005F90B0FE28A45041446EBBD1BC5E5441EC51B89E29A4504152B81E75BB5E5441EC51B8BE2DA4504148E17AC4AF5E5441C3F5283C31A4504148E17AC4A65E5441A4703DDA37A450415C8FC2B5955E5441F6285CFF3AA4504185EB51D88F5E54417B14AE073EA45041333333B38B5E5441D7A3706D44A450411F85EBA1855E54413D0AD7D344A4504114AE4731845E5441000000000FA45041E17A144E7A5E5441000000F00EA45041C3F528AC7A5E5441CDCCCC6C0EA450417B14AE77865E54417B14AED70FA450418FC2F5B8985E5441A4703D0A10A45041CDCCCCBC9F5E5441C3F528CC0FA450411F85EB81A75E54410AD7A3A00FA45041CDCCCC6CB45E5441D7A3705D0FA45041AE47E10ABD5E5441F6285CFF16A4504185EB5138C05E54417B14AEB713A45041B81E85BBC75E54410AD7A32011A450415C8FC225CF5E54411F85EB111BA450410AD7A3C0D25E5441F6285C2F1EA45041AE47E18AD25E544148E17A2421A45041CDCCCCECCD5E5441A1BE46E727A4504172F36832BF5E54410A232FA718A45041C1F7870FBA5E544193D2F28719A4504109D56DA5B75E54415F90B0FE28A45041446EBBD1BC5E5441050000000AD7A38024A450418FC2F568A35E5441C3F5282C29A4504114AE4741A55E5441E17A145E27A45041295C8FF2A95E5441C3F528BC22A450418FC2F518A85E54410AD7A38024A450418FC2F568A35E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371416 - 354253
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000002000000460000001F85EB1159C95041D7A3705DC6A1544152B81E7561C95041D7A370EDC3A154419A99991979C95041AE47E1EABFA154413333337382C9504133333383B9A1544148E17AD499C950411F85EB01B1A15441000000A0A4C9504152B81E15ADA154413D0AD703BBC950418FC2F528A3A15441713D0AC7C4C950411F85EB319EA1544185EB5108DCC950417B14AE9792A154419A9999F9E9C95041F6285CCF89A15441EC51B86EEDC950417B14AE3788A154418FC2F588EEC950413D0AD76381A15441E17A143EEFC95041333333737CA15441D7A3705DE5C95041B81E85AB86A1544100000040DFC950419A9999E98BA154411F85EB71DCC9504152B81ED588A154417B14AE57E9C95041F6285C6F7AA15441CDCCCC4CEAC950418FC2F5E877A1544166666696E2C950417B14AE8774A154413D0AD7B3D9C950410AD7A3A070A15441EC51B85ECEC950419A9999F96CA15441E17A146EC8C95041B81E858B7BA1544114AE4731CBC950410000000086A1544152B81E65C7C95041EC51B8CE8AA15441AE47E14AC1C950413D0AD79395A154411F85EB11BAC950410AD7A3B09BA1544166666656B4C95041AE47E1AA9EA15441333333A3A9C95041000000009FA15441AE47E12A9FC95041713D0A47A2A15441F6285C9F99C9504185EB5188A1A154419A9999F999C9504152B81E05A0A154418FC2F5F897C950411F85EBB19FA15441000000F09BC95041C3F528FC96A154411F85EB119FC9504148E17AC48DA154413D0AD713A1C950417B14AE6785A15441B81E858BA0C950415C8FC21585A1544166666616A4C95041C3F528DC78A15441E17A149EA8C95041D7A370DD61A15441B81E852BA5C95041A4703D4A5DA15441295C8F6283C95041CDCCCCFC53A15441B81E85BB7EC95041713D0A2752A154413D0AD72378C95041E17A148E4FA1544152B81E5575C95041C3F5283C4CA1544114AE47416EC95041C3F528CC4BA15441B81E854B69C9504114AE47814BA1544148E17AF467C9504185EB51A84CA15441295C8FE267C950411F85EBF14DA15441E17A14CE66C950413333338359A1544152B81EB570C95041333333335AA15441295C8F8271C95041713D0A576CA1544152B81E4570C950417B14AE476CA154416666667664C95041E17A14CE6BA15441D7A370AD5CC95041295C8FD26AA1544114AE47615CC950416666669668A15441F6285CFF52C95041B81E856B68A154413D0AD75346C95041E17A143E69A154417B14AE8737C950413D0AD7D372A1544148E17A5438C950417B14AE3776A154418FC2F5283AC95041295C8F6282A154417B14AE573BC95041C3F5287C85A1544148E17A044BC95041295C8FF29AA15441333333F352C95041AE47E12AA1A15441333333435FC95041EC51B86EB0A1544148E17A445FC95041C3F528ECB2A154411F85EBA158C950418FC2F5E8B4A154419A9999D958C95041666666D6BFA15441AE47E15A5DC950415C8FC215BFA15441B81E850B5DC950411F85EB61C2A154413D0AD7035CC95041F6285C5FC5A154411F85EB1159C95041D7A3705DC6A154410A000000D7A3703DD0C95041A4703DCA8FA154413D0AD7B3D2C9504185EB514890A15441713D0A07D4C950411F85EBB18FA15441E17A146ED4C95041E17A144E90A15441333333E3CEC95041C3F5287C94A1544166666686CEC95041F6285CEF93A154417B14AE97CFC950417B14AE0793A1544100000040CDC95041000000008FA154413D0AD723CFC95041666666E68DA15441D7A3703DD0C95041A4703DCA8FA15441
+</a>
+
+<b>
+0106000000010000000103000000020000006900000042660040DFC95041938299E98BA154418C7F186DDEC9504151D004028BA1544121A6EB71DCC95041F42120D588A154417B14AE57E9C95041F6285C6F7AA15441B770B6FDE9C950418DF184B978A15441502ECC4CEAC950411A7DF5E877A1544166666696E2C950417B14AE8774A15441C04A93C5E0C9504193A484BB73A1544135A0D6B3D9C950415A3FA4A070A154413376B85ECEC95041CEA599F96CA15441A70F156EC8C95041638D868B7BA15441F1D44831CBC95041CC4FFFFF85A1544192072065C7C95041A06DB7CE8AA15441FD03DD5DC3C9504139DABBEA91A15441AE47E14AC1C950413D0AD79395A15441F8554F0ABEC95041E094745498A154411F85EB11BAC950410AD7A3B09BA1544106F1E5F9B7C9504164AC0DC79CA15441DCF76656B4C95041C4DFE1AA9EA154419D72487AAFC95041B8678AD19EA15441333333A3A9C95041000000009FA15441C37A0FFFA4C950410B93EE73A0A15441E3FEDF2A9FC95041847E0B47A2A15441F6285C9F99C9504185EB5188A1A154419A9999F999C9504152B81E05A0A154418FC2F5F897C950411F85EBB19FA15441000000F09BC95041C3F528FC96A154411F85EB119FC9504148E17AC48DA154413D0AD713A1C950417B14AE6785A15441B81E858BA0C950415C8FC21585A1544166666616A4C95041C3F528DC78A15441E17A149EA8C95041D7A370DD61A15441B81E852BA5C95041A4703D4A5DA15441182D8BD093C950411E8AE48258A154411F66906283C950415BFECDFC53A15441A16C84BB7EC95041F40F0B2752A15441DCB77F2D7AC9504186329E5B50A154413D0AD72378C95041E17A148E4FA154410CF24C8975C95041A9AFDD794CA15441AB711F5575C95041E1E4293C4CA15441D7EB46416EC9504122EF28CC4BA15441D425864B69C95041770B49814BA154419FDA7AF467C95041066652A84CA1544105AD1CF067C95041A3E3A8F84CA15441824871E967C950411EB854734DA1544140E28FE267C950419D80EAF14DA154412982329067C9504170F2136451A154415ADBFE7867C95041F776955C52A1544101B9E04F67C95041242FFB1454A15441DEFB802B67C9504144F1919A55A15441D37A960F67C9504104A291C556A15441F78514CE66C9504176BC328359A15441348A1FB570C950413F8932335AA1544145DD010471C95041FD89652A61A15441295C8F8271C95041713D0A576CA1544175941E4570C95041C952AF476CA154416CE9FA3D65C950411CDD1BD66BA154416666667664C95041E17A14CE6BA15441D7A370AD5CC95041295C8FD26AA154416022C07A5CC950416AFFBF5569A15441657247615CC95041823A679668A15441E806347B58C95041A4FA948468A15441F6285CFF52C95041B81E856B68A154413D0AD75346C95041E17A143E69A154410E8E8A6C3AC950413580F3F370A15441731AAE8737C950418623D7D372A15441ED42410738C95041405270F074A1544124617A2E38C95041158FA59675A154412C497B5438C950414900AF3776A15441ACF924A538C9504129A5025078A154418FC2F5283AC95041295C8F6282A154417B14AE573BC95041C3F5287C85A1544148E17A044BC95041295C8FF29AA15441333333F352C95041AE47E12AA1A15441333333435FC95041EC51B86EB0A1544148E17A445FC95041C3F528ECB2A154417AEAC62B5AC950414E21FB72B4A154412AF4ECA158C95041A154F5E8B4A154419A9999D958C95041666666D6BFA15441AE47E15A5DC950415C8FC215BFA15441B81E850B5DC950411F85EB61C2A15441DB71C73F5CC95041736FEC70C5A1544152B81E7561C95041D7A370EDC3A154414421EAA067C950415EC87DE1C2A15441DCB0981979C950412941E0EABFA15441933C327382C9504122B13283B9A154417F515FAE82C9504155BBAC6DB9A1544148E17AD499C950411F85EB01B1A15441B88C71D499C95041AED8E100B1A1544117632A92A4C950411C6E261AADA15441000000A0A4C9504152B81E15ADA154412B61230BB0C9504149CCAE05A8A1544144ACD503BBC950412700F528A3A1544110760AC7C4C950419663EA319EA15441EA38C1A4CFC9504163950DC698A1544185EB5108DCC950417B14AE9792A154419A9999F9E9C95041F6285CCF89A15441719AC66AEBC9504198FB512589A154416DC7B76EEDC9504125EEAD3788A1544188B726F3EDC950410E39910385A154418FC2F588EEC950413D0AD76381A15441E17A143EEFC95041333333737CA15441D7A3705DE5C95041B81E85AB86A1544157499690E1C950410E7D90ED89A1544142660040DFC95041938299E98BA154410C0000005E6934E3CEC95041B2412A7C94A1544166666686CEC95041F6285CEF93A15441264DFE87CEC95041F25902EE93A15441E7ACAC97CFC95041E0A8AC0793A15441249AFE3FCDC95041DB3500008FA1544158CED623CFC95041341965E68DA154410AEB713DD0C950415E4D3DCA8FA15441B39BD5B3D2C95041A8AA504890A1544199E90907D4C95041E088EAB18FA154416BE68420D4C950412CCB88D88FA15441E17A146ED4C95041E17A144E90A154415E6934E3CEC95041B2412A7C94A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371485 - 190524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000001000000010300000001000000110000003D0AD75339D8504148E17A246DA95441000000503AD85041666666866CA954413D0AD7A340D85041CDCCCC4C6AA95441713D0AC74CD850415C8FC28566A954419A9999D948D85041AE47E12A57A95441F6285C4F47D85041713D0A4755A95441B81E85AB44D85041D7A3704D54A95441A4703DBA41D8504185EB51E853A95441F6285C9F3FD85041EC51B86E54A95441AE47E11A3DD850411F85EB1156A954416666660639D8504152B81E955BA95441D7A3703D32D85041B81E856B62A9544152B81EB52BD850418FC2F5186CA95441333333032BD85041713D0A576DA954419A99999930D85041295C8F826EA954411F85EB7137D8504114AE47F16BA954413D0AD75339D8504148E17A246DA95441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000014AE47D14DD850411F85EBB16AA95441332415A84DD85041B89AA20C6AA95441B34A88E23ED85041125D95656FA954416C7388803AD85041607855756CA95441000000503AD85041666666866CA954413D0AD75339D8504148E17A246DA9544172FBC4A938D85041558911B86CA95441F2BD791837D850410470D4126CA95441885E8AA436D8504187E9503E6CA954410C31E66536D850416FF1CF556CA954410457CE5936D850418D2B595A6CA95441D367FD3036D850417D79A8696CA9544152EF752D36D85041CC5BFB6A6CA954418458C72C36D850416ED83C6B6CA95441F09B542A36D85041CCED276C6CA954412B393C0936D85041DFD891786CA95441FD736FFE35D8504171E39E7C6CA95441C9AFFCFC35D85041B2F5297D6CA954415ECDD9FB35D850416411977D6CA954417C06EBFA35D850418EA1F07D6CA95441A9CED5AB30D85041B10FFAD96EA95441D5A795AF2FD85041B0E08E516EA95441ADCD48AC2FD8504113F8DD506EA9544105B8689B2FD850415E5C554D6EA95441F77D53312FD8504133BF1E376EA95441AEB9C49D2BD8504174F067776DA95441CAA0DA982BD85041B07F60766DA95441B47A1F652BD85041CF6F8B6B6DA95441EF9619582BD850416B55D1686DA95441D868EB502BD85041196D50676DA95441A1DB5EF327D85041D334FC7E73A95441240182FC1FD850412EE9578687A954415472AD001FD85041349D00F68AA95441BD0D7F001FD850416AB91AF78AA954416511F3FF1ED85041FDF56DFA8AA954419DEBA4FD1ED85041479472088BA954419F0ED9F61ED850417F7BC6318BA95441AEF4CCD61ED850414EA8A6F48BA95441161AE59B1ED85041A479D95A8DA95441DB34743B22D85041FD70CA548FA95441B92A3D4022D85041DF14FB578FA954413D0AD78322D85041AE47E17A8FA95441CDCCCC8C26D850416666669692A954419A9999A928D85041295C8FB289A95441F6285C4F2CD850410000004086A954418FC2F5A82FD85041C3F528AC84A954415C8FC2C535D850410AD7A38082A954418FC2F53839D85041AE47E14A83A95441AE47E1DA3DD85041333333D387A95441F9A7BF2A42D8504110135BD387A95441153FF55341D850411F54D15485A954413CD2C90E3DD850413938A46A82A95441328AA9A63AD85041E4BDAA2A7FA95441C4F89D4E3AD850410FA142127CA954412B84FA0E3DD850414F55651A7DA954414A55852F41D850419A0988227EA95441BBE0E1EF43D850416E26F03A81A9544140A2856F47D85041A7F7378482A954411CE2E8684AD85041636CDE027FA954410DF0491945D8504157699C6A77A95441A6854F9847D850414E58F92175A95441B596F2E049D85041E81DA6E276A95441832DDFF04AD85041B21CBF5178A95441857E472951D8504189E8601E78A95441EBA8EA1C51D85041788DBDEC77A9544170FB3C0851D850413086B69977A95441A6EB915450D85041DE6B50C874A9544185EB511850D85041666666D673A95441F441263B4FD850414CC98F5E70A9544114AE47D14DD850411F85EBB16AA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371485 - 398162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000001000000010300000001000000110000003D0AD75339D8504148E17A246DA95441000000503AD85041666666866CA954413D0AD7A340D85041CDCCCC4C6AA95441713D0AC74CD850415C8FC28566A954419A9999D948D85041AE47E12A57A95441F6285C4F47D85041713D0A4755A95441B81E85AB44D85041D7A3704D54A95441A4703DBA41D8504185EB51E853A95441F6285C9F3FD85041EC51B86E54A95441AE47E11A3DD850411F85EB1156A954416666660639D8504152B81E955BA95441D7A3703D32D85041B81E856B62A9544152B81EB52BD850418FC2F5186CA95441333333032BD85041713D0A576DA954419A99999930D85041295C8F826EA954411F85EB7137D8504114AE47F16BA954413D0AD75339D8504148E17A246DA95441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000014AE47D14DD850411F85EBB16AA95441332415A84DD85041B89AA20C6AA95441B34A88E23ED85041125D95656FA954416C7388803AD85041607855756CA95441000000503AD85041666666866CA954413D0AD75339D8504148E17A246DA9544172FBC4A938D85041558911B86CA95441F2BD791837D850410470D4126CA95441885E8AA436D8504187E9503E6CA954410C31E66536D850416FF1CF556CA954410457CE5936D850418D2B595A6CA95441D367FD3036D850417D79A8696CA9544152EF752D36D85041CC5BFB6A6CA954418458C72C36D850416ED83C6B6CA95441F09B542A36D85041CCED276C6CA954412B393C0936D85041DFD891786CA95441FD736FFE35D8504171E39E7C6CA95441C9AFFCFC35D85041B2F5297D6CA954415ECDD9FB35D850416411977D6CA954417C06EBFA35D850418EA1F07D6CA95441A9CED5AB30D85041B10FFAD96EA95441D5A795AF2FD85041B0E08E516EA95441ADCD48AC2FD8504113F8DD506EA9544105B8689B2FD850415E5C554D6EA95441F77D53312FD8504133BF1E376EA95441AEB9C49D2BD8504174F067776DA95441CAA0DA982BD85041B07F60766DA95441B47A1F652BD85041CF6F8B6B6DA95441EF9619582BD850416B55D1686DA95441D868EB502BD85041196D50676DA95441A1DB5EF327D85041D334FC7E73A95441240182FC1FD850412EE9578687A954415472AD001FD85041349D00F68AA95441BD0D7F001FD850416AB91AF78AA954416511F3FF1ED85041FDF56DFA8AA954419DEBA4FD1ED85041479472088BA954419F0ED9F61ED850417F7BC6318BA95441AEF4CCD61ED850414EA8A6F48BA95441161AE59B1ED85041A479D95A8DA95441DB34743B22D85041FD70CA548FA95441B92A3D4022D85041DF14FB578FA954413D0AD78322D85041AE47E17A8FA95441CDCCCC8C26D850416666669692A954419A9999A928D85041295C8FB289A95441F6285C4F2CD850410000004086A954418FC2F5A82FD85041C3F528AC84A954415C8FC2C535D850410AD7A38082A954418FC2F53839D85041AE47E14A83A95441AE47E1DA3DD85041333333D387A95441F9A7BF2A42D8504110135BD387A95441153FF55341D850411F54D15485A954413CD2C90E3DD850413938A46A82A95441328AA9A63AD85041E4BDAA2A7FA95441C4F89D4E3AD850410FA142127CA954412B84FA0E3DD850414F55651A7DA954414A55852F41D850419A0988227EA95441BBE0E1EF43D850416E26F03A81A9544140A2856F47D85041A7F7378482A954411CE2E8684AD85041636CDE027FA954410DF0491945D8504157699C6A77A95441A6854F9847D850414E58F92175A95441B596F2E049D85041E81DA6E276A95441832DDFF04AD85041B21CBF5178A95441857E472951D8504189E8601E78A95441EBA8EA1C51D85041788DBDEC77A9544170FB3C0851D850413086B69977A95441A6EB915450D85041DE6B50C874A9544185EB511850D85041666666D673A95441F441263B4FD850414CC98F5E70A9544114AE47D14DD850411F85EBB16AA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 1856190
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441EC51B81E66CF504114AE47C12A9F5441F6285C2F6CCF5041CDCCCC6C289F5441CDCCCCAC6FCF50410AD7A3B0219F5441333333336DCF5041B81E85AB159F5441CDCCCC0C6ECF5041295C8FD2129F54410AD7A33071CF50419A9999190B9F5441CDCCCC9C76CF5041000000F0019F5441EC51B89E79CF504152B81E25F69E5441D7A370AD78CF504114AE47F1F49E5441D7A3701D12CF5041A4703D3AF59E5441713D0AE710CF5041AE47E17AF69E54415C8FC2D511CF5041D7A3703D169F54410AD7A32019CF504166666696179F54418FC2F5681ECF5041D7A370BD179F54418FC2F5A824CF5041C3F5283C179F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008FC2F5A824CF5041C3F5283C179F5441B115BA1125CF5041D9F2AE611C9F5441E102D0B824CF50418943CDC0229F5441A70DFDB824CF50418F4987E1229F5441704FBECD24CF5041D5315031249F54414AAA142B25CF504162FBC9F8289F5441BADFF94825CF504194B40AFB2B9F5441BF1D776A25CF50418384D9182E9F544143E57F6223CF5041803E7A7D2E9F54415B1909501FCF504115CE434C2F9F54412B5CB9571FCF50418639229B2F9F544181BE5F561FCF504163DE7E9B2F9F5441B85FD85F1FCF504152BF70EE2F9F54414BB252601FCF5041368857F32F9F54416963F5BE1FCF5041EE15672F339F544192C5183821CF50414285F8F4399F5441FE12B92D38CF50414D15C34C369F544163EAF16D42CF50417E02600D369F5441B94C4BE151CF5041D959AADA359F5441ED7DE60D64CF5041C653CB72369F544152E91F2A68CF5041FB406833369F54413885518567CF5041AC14FD44349F5441AC656A6E66CF50415D8AA219319F54418A7EAC1566CF5041E4188A952D9F5441DE52072F66CF5041BFF8DC762A9F5441D76017166BCF504195B32FE1289F54418567BC856CCF5041CF48BCCC269F54410281C4346ECF504194EF1FE8209F5441E19906DC6DCF5041CDA9AC4A1D9F5441F822D5F76CCF5041AB89FF2B1A9F5441333333336DCF5041B81E85AB159F54414EF72F116DCF5041999A1054149F5441743CDDA66ECF5041CA73BEC50F9F54410ABAB3FA70CF5041760E64110B9F5441569C1EFB75CF5041F02A6D01029F54417939DC6579CF5041BDE8C0ACF59E5441D7A370AD78CF504114AE47F1F49E5441D7A3701D12CF5041A4703D3AF59E5441713D0AE710CF5041AE47E17AF69E5441646BD53E12CF5041C25CCE35169F54410AD7A32019CF504166666696179F54418FC2F5681ECF5041D7A370BD179F54418FC2F5A824CF5041C3F5283C179F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 1856191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441EC51B81E66CF504114AE47C12A9F5441F6285C2F6CCF5041CDCCCC6C289F5441CDCCCCAC6FCF50410AD7A3B0219F5441333333336DCF5041B81E85AB159F5441CDCCCC0C6ECF5041295C8FD2129F54410AD7A33071CF50419A9999190B9F5441CDCCCC9C76CF5041000000F0019F5441EC51B89E79CF504152B81E25F69E5441D7A370AD78CF504114AE47F1F49E5441D7A3701D12CF5041A4703D3AF59E5441713D0AE710CF5041AE47E17AF69E54415C8FC2D511CF5041D7A3703D169F54410AD7A32019CF504166666696179F54418FC2F5681ECF5041D7A370BD179F54418FC2F5A824CF5041C3F5283C179F5441
+</a>
+
+<b>
+010600000001000000010300000001000000210000005C8FC2D511CF5041D7A3703D169F5441AE47E13A12CF504152B81EA5239F544152B81E5512CF5041F6285C4F259F54416666660613CF50415C8FC2A5269F54411F85EB2114CF5041AE47E16A269F5441000000A013CF50413D0AD7E3219F5441E17A142E17CF5041E17A146E219F54418FC2F5B81CCF5041A4703D2A1F9F544185EB51F81DCF50419A9999491E9F54411F85EB911ECF5041A4703D3A1D9F544185EB51081FCF504148E17A941C9F5441CDCCCC0C20CF5041D7A3704D1C9F5441E17A14BE20CF5041CDCCCC7C1C9F54413D0AD73321CF5041333333F31C9F5441666666B621CF5041C3F528BC1D9F5441666666C622CF50419A999979219F5441295C8FB223CF5041B81E859B2C9F54417B14AE471CCF504185EB51E82D9F54417B14AE771CCF504133333303349F544148E17AD41FCF5041AE47E19A349F5441B85FD85F1FCF504152BF70EE2F9F544181BE5F561FCF504163DE7E9B2F9F54412B5CB9571FCF50418639229B2F9F54415B1909501FCF504115CE434C2F9F544143E57F6223CF5041803E7A7D2E9F54419274F15C25CF5041B1777EFD2D9F54414AAA142B25CF504162FBC9F8289F54411ABBD1B524CF5041948BB6F7229F5441B115BA1125CF5041D9F2AE611C9F54418FC2F5A824CF5041C3F5283C179F54418FC2F5681ECF5041D7A370BD179F54410AD7A32019CF504166666696179F54415C8FC2D511CF5041D7A3703D169F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 3612840
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441EC51B81E66CF504114AE47C12A9F5441F6285C2F6CCF5041CDCCCC6C289F5441CDCCCCAC6FCF50410AD7A3B0219F5441333333336DCF5041B81E85AB159F5441CDCCCC0C6ECF5041295C8FD2129F54410AD7A33071CF50419A9999190B9F5441CDCCCC9C76CF5041000000F0019F5441EC51B89E79CF504152B81E25F69E5441D7A370AD78CF504114AE47F1F49E5441D7A3701D12CF5041A4703D3AF59E5441713D0AE710CF5041AE47E17AF69E54415C8FC2D511CF5041D7A3703D169F54410AD7A32019CF504166666696179F54418FC2F5681ECF5041D7A370BD179F54418FC2F5A824CF5041C3F5283C179F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008FC2F5A824CF5041C3F5283C179F5441B115BA1125CF5041D9F2AE611C9F5441E102D0B824CF50418943CDC0229F5441A70DFDB824CF50418F4987E1229F5441704FBECD24CF5041D5315031249F54414AAA142B25CF504162FBC9F8289F5441BADFF94825CF504194B40AFB2B9F5441BF1D776A25CF50418384D9182E9F544143E57F6223CF5041803E7A7D2E9F54415B1909501FCF504115CE434C2F9F54412B5CB9571FCF50418639229B2F9F544181BE5F561FCF504163DE7E9B2F9F5441B85FD85F1FCF504152BF70EE2F9F54414BB252601FCF5041368857F32F9F54416963F5BE1FCF5041EE15672F339F544192C5183821CF50414285F8F4399F5441FE12B92D38CF50414D15C34C369F544163EAF16D42CF50417E02600D369F5441B94C4BE151CF5041D959AADA359F5441ED7DE60D64CF5041C653CB72369F544152E91F2A68CF5041FB406833369F54413885518567CF5041AC14FD44349F5441AC656A6E66CF50415D8AA219319F54418A7EAC1566CF5041E4188A952D9F5441DE52072F66CF5041BFF8DC762A9F5441D76017166BCF504195B32FE1289F54418567BC856CCF5041CF48BCCC269F54410281C4346ECF504194EF1FE8209F5441E19906DC6DCF5041CDA9AC4A1D9F5441F822D5F76CCF5041AB89FF2B1A9F5441333333336DCF5041B81E85AB159F54414EF72F116DCF5041999A1054149F5441743CDDA66ECF5041CA73BEC50F9F54410ABAB3FA70CF5041760E64110B9F5441569C1EFB75CF5041F02A6D01029F54417939DC6579CF5041BDE8C0ACF59E5441D7A370AD78CF504114AE47F1F49E5441D7A3701D12CF5041A4703D3AF59E5441713D0AE710CF5041AE47E17AF69E5441646BD53E12CF5041C25CCE35169F54410AD7A32019CF504166666696179F54418FC2F5681ECF5041D7A370BD179F54418FC2F5A824CF5041C3F5283C179F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 3617778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441EC51B81E66CF504114AE47C12A9F5441F6285C2F6CCF5041CDCCCC6C289F5441CDCCCCAC6FCF50410AD7A3B0219F5441333333336DCF5041B81E85AB159F5441CDCCCC0C6ECF5041295C8FD2129F54410AD7A33071CF50419A9999190B9F5441CDCCCC9C76CF5041000000F0019F5441EC51B89E79CF504152B81E25F69E5441D7A370AD78CF504114AE47F1F49E5441D7A3701D12CF5041A4703D3AF59E5441713D0AE710CF5041AE47E17AF69E54415C8FC2D511CF5041D7A3703D169F54410AD7A32019CF504166666696179F54418FC2F5681ECF5041D7A370BD179F54418FC2F5A824CF5041C3F5283C179F5441
+</a>
+
+<b>
+010600000001000000010300000001000000210000005C8FC2D511CF5041D7A3703D169F5441AE47E13A12CF504152B81EA5239F544152B81E5512CF5041F6285C4F259F54416666660613CF50415C8FC2A5269F54411F85EB2114CF5041AE47E16A269F5441000000A013CF50413D0AD7E3219F5441E17A142E17CF5041E17A146E219F54418FC2F5B81CCF5041A4703D2A1F9F544185EB51F81DCF50419A9999491E9F54411F85EB911ECF5041A4703D3A1D9F544185EB51081FCF504148E17A941C9F5441CDCCCC0C20CF5041D7A3704D1C9F5441E17A14BE20CF5041CDCCCC7C1C9F54413D0AD73321CF5041333333F31C9F5441666666B621CF5041C3F528BC1D9F5441666666C622CF50419A999979219F5441295C8FB223CF5041B81E859B2C9F54417B14AE471CCF504185EB51E82D9F54417B14AE771CCF504133333303349F544148E17AD41FCF5041AE47E19A349F5441B85FD85F1FCF504152BF70EE2F9F544181BE5F561FCF504163DE7E9B2F9F54412B5CB9571FCF50418639229B2F9F54415B1909501FCF504115CE434C2F9F544143E57F6223CF5041803E7A7D2E9F54419274F15C25CF5041B1777EFD2D9F54414AAA142B25CF504162FBC9F8289F54411ABBD1B524CF5041948BB6F7229F5441B115BA1125CF5041D9F2AE611C9F54418FC2F5A824CF5041C3F5283C179F54418FC2F5681ECF5041D7A370BD179F54410AD7A32019CF504166666696179F54415C8FC2D511CF5041D7A3703D169F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968022 - 1145905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+0106000000010000000103000000010000002000000076BE616FB857514197A3C4F5A4485441AB5806969F5751411C56E061A2485441584ACC6B9F57514171AE8863A2485441A0034BA89B57514166B9D51AA34854413A6DC9F996575141AF705637A5485441317648219457514149D6F090A74854410E9A142F92575141041AA5B4AA48544144647A629057514159C4F241AD4854418D7ECCE08D575141151482BCAF485441360ACEE68B57514149C01AECB048544143C143248E575141D80D6F3DB248544191AB89088C57514186F66B31B6485441A6BC79958A5751411A717DAAB5485441F07902528A57514198DA9E96B6485441763D9E8D875751411AA1BB70BD4854412D8015D187575141980ADD5CBE485441068BF2DE88575141EF7EDB56C0485441F07902528A575141D96DEBC9C1485441CDB19C878957514169BB3F1BC3485441068BF2DE8857514153AA4F8EC448544169862850855751410E1A84F9C2485441E7EF493C865751416DE8FC42C14854414ABB41E77A5751411AA1BB70BD485441160FA9B779575141980ADD5CBE4854418264597872575141F7D855A6BC485441869116A07057514160318705BF485441A4703D6A9257514185EB5168CB4854418FC2F588A95751410AD7A3B0D44854411205E2D3B3575141B2488A11BB4854411FBC5711B6575141BAA20461B74854415368F040B7575141FBD5D407B348544176BE616FB857514197A3C4F5A4485441
+</a>
+
+<b>
+010600000001000000010300000001000000260000008FC2F588A95751410AD7A3B0D4485441D7A370CDAC5751413D0AD7B3CB4854415C8FC2F5B157514185EB51F8BE4854418E816EA0B357514175109E91BB4854410E05E2D3B3575141AE488A11BB485441D660850EB457514184B1F5B0BA4854412A3AF98DB657514194D40998B54854412272A7A8B657514104B23536B5485441F6285CCFB7575141713D0A17AC485441A6E306D6B7575141EDC33518AC48544176BE616FB857514193A3C4F5A4485441AA5806969F5751412156E061A24854415B4ACC6B9F57514170AE8863A24854419F034BA89B57514165B9D51AA34854413C6DC9F996575141B0705637A548544131764821945751414CD6F090A74854410B9A142F92575141001AA5B4AA4854413F647A629057514158C4F241AD485441897ECCE08D575141171482BCAF4854413A0ACEE68B5751414BC01AECB048544140C143248E575141D50D6F3DB248544190AB89088C57514189F66B31B6485441A5BC79958A5751411A717DAAB5485441ED7902528A57514196DA9E96B6485441783D9E8D8757514116A1BB70BD4854412F8015D1875751419D0ADD5CBE485441028BF2DE88575141EC7EDB56C0485441ED7902528A575141D76DEBC9C1485441D2B19C87895751416CBB3F1BC3485441028BF2DE8857514158AA4F8EC448544167862850855751410B1A84F9C2485441E3EF493C8657514169E8FC42C14854414CBB41E77A57514116A1BB70BD485441180FA9B7795751419D0ADD5CBE4854418064597872575141FBD855A6BC485441879116A07057514162318705BF485441A4703D6A9257514185EB5168CB4854418FC2F588A95751410AD7A3B0D4485441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968022 - 3429800
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+0106000000010000000103000000010000002000000076BE616FB857514197A3C4F5A4485441AB5806969F5751411C56E061A2485441584ACC6B9F57514171AE8863A2485441A0034BA89B57514166B9D51AA34854413A6DC9F996575141AF705637A5485441317648219457514149D6F090A74854410E9A142F92575141041AA5B4AA48544144647A629057514159C4F241AD4854418D7ECCE08D575141151482BCAF485441360ACEE68B57514149C01AECB048544143C143248E575141D80D6F3DB248544191AB89088C57514186F66B31B6485441A6BC79958A5751411A717DAAB5485441F07902528A57514198DA9E96B6485441763D9E8D875751411AA1BB70BD4854412D8015D187575141980ADD5CBE485441068BF2DE88575141EF7EDB56C0485441F07902528A575141D96DEBC9C1485441CDB19C878957514169BB3F1BC3485441068BF2DE8857514153AA4F8EC448544169862850855751410E1A84F9C2485441E7EF493C865751416DE8FC42C14854414ABB41E77A5751411AA1BB70BD485441160FA9B779575141980ADD5CBE4854418264597872575141F7D855A6BC485441869116A07057514160318705BF485441A4703D6A9257514185EB5168CB4854418FC2F588A95751410AD7A3B0D44854411205E2D3B3575141B2488A11BB4854411FBC5711B6575141BAA20461B74854415368F040B7575141FBD5D407B348544176BE616FB857514197A3C4F5A4485441
+</a>
+
+<b>
+010600000001000000010300000001000000260000008FC2F588A95751410AD7A3B0D4485441D7A370CDAC5751413D0AD7B3CB4854415C8FC2F5B157514185EB51F8BE4854418E816EA0B357514175109E91BB4854410E05E2D3B3575141AE488A11BB485441D660850EB457514184B1F5B0BA4854412A3AF98DB657514194D40998B54854412272A7A8B657514104B23536B5485441F6285CCFB7575141713D0A17AC485441A6E306D6B7575141EDC33518AC48544176BE616FB857514193A3C4F5A4485441AA5806969F5751412156E061A24854415B4ACC6B9F57514170AE8863A24854419F034BA89B57514165B9D51AA34854413C6DC9F996575141B0705637A548544131764821945751414CD6F090A74854410B9A142F92575141001AA5B4AA4854413F647A629057514158C4F241AD485441897ECCE08D575141171482BCAF4854413A0ACEE68B5751414BC01AECB048544140C143248E575141D50D6F3DB248544190AB89088C57514189F66B31B6485441A5BC79958A5751411A717DAAB5485441ED7902528A57514196DA9E96B6485441783D9E8D8757514116A1BB70BD4854412F8015D1875751419D0ADD5CBE485441028BF2DE88575141EC7EDB56C0485441ED7902528A575141D76DEBC9C1485441D2B19C87895751416CBB3F1BC3485441028BF2DE8857514158AA4F8EC448544167862850855751410B1A84F9C2485441E3EF493C8657514169E8FC42C14854414CBB41E77A57514116A1BB70BD485441180FA9B7795751419D0ADD5CBE4854418064597872575141FBD855A6BC485441879116A07057514162318705BF485441A4703D6A9257514185EB5168CB4854418FC2F588A95751410AD7A3B0D4485441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976072 - 1018944
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000350000008EC6C4114E1E51417F4E3BAFFE465441CDCCCC4C4F1E51410AD7A320FE465441E17A14DE551E5141E17A14CEFD465441333333335D1E5141B81E855BFF465441C3F5282C621E514166666606004754415C8FC2A5651E5141713D0A870047544189B258806A1E514139D2C79701475441000000606B1E514185EB51A8FB465441713D0A076C1E514185EB5168F6465441E17A140E6C1E514185EB51B8F5465441000000B0701E514166666646F646544185EB5158761E5141F6285C6FF64654411F85EB917B1E51417B14AE77F64654419A999979811E51411F85EBB1F6465441B81E853B881E5141AE47E12AF74654411F85EBE18D1E5141F6285C3FF8465441666666F6921E51410AD7A380F8465441A4703DCA911E5141EC51B8CEE9465441A4703D9A901E51411F85EBF1DA4654419A9999698F1E5141B81E850BCC46544152B81EF58E1E5141713D0A57C6465441333333338E1E51419A9999D9BC465441C3F528DC8C1E5141D7A370CDBC465441E17A14FE771E5141AE47E10ABC4654418FC2F5386B1E5141B81E859BBB465441CDCCCCFC5E1E514114AE47F1B946544166666696531E514114AE47B1B746544133333313501E5141E17A143EB746544148E17A244D1E5141713D0A87B6465441666666C64A1E514148E17AD4BE465441F6285CDF481E5141AE47E1AAC4465441C3F5281C471E5141713D0A17C9465441000000D0431E514152B81EC5CF465441BED6D749441E5141ED381915D04654416BA07290441E5141D05B8764D0465441A65856AF441E5141528A6FCED046544171FF82A6441E5141F393A9A6D1465441410700F6431E514105B1DAE8D1465441C43728A2431E51410B122B41D1465441A1FDC51D431E51418E4253EDD04654411ECFDDB3421E5141528A6FCED046544114AE4781411E514152B81EE5D1465441666666C6381E51413D0AD733F94654416B00D97E381E5141BBFCE45EFA46544143241AD03A1E514101BB6EC9FC465441D65788663D1E514168FE3674FE4654417B1E577A411E5141A5FC97E1FF46544140E12466431E5141C089485D0047544164586A00461E5141E49FA63F00475441550D5BAA461E514169B8763500475441737CB5954B1E51411E6777E9FE46544143861AEB4C1E51417F4E3BAFFE4654418EC6C4114E1E51417F4E3BAFFE465441
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000048E17A244D1E5141713D0A87B6465441666666C64A1E514148E17AD4BE465441F6285CDF481E5141AE47E1AAC4465441C3F5281C471E5141713D0A17C9465441000000D0431E514152B81EC5CF465441C1D6D749441E5141EC381915D046544166A07290441E5141D45B8764D0465441A75856AF441E5141518A6FCED04654416FFF82A6441E5141F893A9A6D1465441420700F6431E514106B1DAE8D1465441C23728A2431E514107122B41D1465441A6FDC51D431E5141924253EDD04654411ECFDDB3421E5141518A6FCED046544114AE4781411E514152B81EE5D1465441666666C6381E51413D0AD733F946544155FFD1F4381E5141E2EC4CEEF9465441BEC37CB53B1E5141B21AA916FC465441AC21A0113D1E51415F62D622FD4654412003B19B3D1E514100290562FD465441035419583E1E5141406C9DB7FD465441470E610F401E5141504CEE6DFE465441DCC2A140411E514142871FCDFE4654417DF9F39F431E514131C6E285FF4654411EA13C3A441E5141E5BDB9A8FF4654411758E9D6451E5141BEF7BEB5FF465441BB60CF09481E5141D6FE38F1FE46544179ACD09D491E514124864257FE4654419D3210264C1E5141078565E1FD465441990C29114E1E514182AFC0CDFD465441CDCCCC4C4F1E51410AD7A320FE465441E17A14DE551E5141E17A14CEFD465441333333335D1E5141B81E855BFF465441C3F5282C621E514166666606004754415C8FC2A5651E5141713D0A870047544189B258806A1E51413CD2C79701475441000000606B1E514185EB51A8FB465441713D0A076C1E514185EB5168F6465441E17A140E6C1E514185EB51B8F5465441000000B0701E514166666646F646544185EB5158761E5141F6285C6FF64654411F85EB917B1E51417B14AE77F64654419A999979811E51411F85EBB1F6465441B81E853B881E5141AE47E12AF74654411F85EBE18D1E5141F6285C3FF8465441666666F6921E51410AD7A380F8465441A4703DCA911E5141EC51B8CEE9465441A4703D9A901E51411F85EBF1DA4654419A9999698F1E5141B81E850BCC46544152B81EF58E1E5141713D0A57C6465441333333338E1E51419A9999D9BC465441C3F528DC8C1E5141D7A370CDBC465441E17A14FE771E5141AE47E10ABC4654418FC2F5386B1E5141B81E859BBB465441C3F528BC651E5141D7A370DDBA465441CDCCCCFC5E1E514114AE47F1B946544166666696531E514114AE47B1B746544133333313501E5141E17A143EB746544148E17A244D1E5141713D0A87B6465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976072 - 3329488
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000350000008EC6C4114E1E51417F4E3BAFFE465441CDCCCC4C4F1E51410AD7A320FE465441E17A14DE551E5141E17A14CEFD465441333333335D1E5141B81E855BFF465441C3F5282C621E514166666606004754415C8FC2A5651E5141713D0A870047544189B258806A1E514139D2C79701475441000000606B1E514185EB51A8FB465441713D0A076C1E514185EB5168F6465441E17A140E6C1E514185EB51B8F5465441000000B0701E514166666646F646544185EB5158761E5141F6285C6FF64654411F85EB917B1E51417B14AE77F64654419A999979811E51411F85EBB1F6465441B81E853B881E5141AE47E12AF74654411F85EBE18D1E5141F6285C3FF8465441666666F6921E51410AD7A380F8465441A4703DCA911E5141EC51B8CEE9465441A4703D9A901E51411F85EBF1DA4654419A9999698F1E5141B81E850BCC46544152B81EF58E1E5141713D0A57C6465441333333338E1E51419A9999D9BC465441C3F528DC8C1E5141D7A370CDBC465441E17A14FE771E5141AE47E10ABC4654418FC2F5386B1E5141B81E859BBB465441CDCCCCFC5E1E514114AE47F1B946544166666696531E514114AE47B1B746544133333313501E5141E17A143EB746544148E17A244D1E5141713D0A87B6465441666666C64A1E514148E17AD4BE465441F6285CDF481E5141AE47E1AAC4465441C3F5281C471E5141713D0A17C9465441000000D0431E514152B81EC5CF465441BED6D749441E5141ED381915D04654416BA07290441E5141D05B8764D0465441A65856AF441E5141528A6FCED046544171FF82A6441E5141F393A9A6D1465441410700F6431E514105B1DAE8D1465441C43728A2431E51410B122B41D1465441A1FDC51D431E51418E4253EDD04654411ECFDDB3421E5141528A6FCED046544114AE4781411E514152B81EE5D1465441666666C6381E51413D0AD733F94654416B00D97E381E5141BBFCE45EFA46544143241AD03A1E514101BB6EC9FC465441D65788663D1E514168FE3674FE4654417B1E577A411E5141A5FC97E1FF46544140E12466431E5141C089485D0047544164586A00461E5141E49FA63F00475441550D5BAA461E514169B8763500475441737CB5954B1E51411E6777E9FE46544143861AEB4C1E51417F4E3BAFFE4654418EC6C4114E1E51417F4E3BAFFE465441
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000048E17A244D1E5141713D0A87B6465441666666C64A1E514148E17AD4BE465441F6285CDF481E5141AE47E1AAC4465441C3F5281C471E5141713D0A17C9465441000000D0431E514152B81EC5CF465441C1D6D749441E5141EC381915D046544166A07290441E5141D45B8764D0465441A75856AF441E5141518A6FCED04654416FFF82A6441E5141F893A9A6D1465441420700F6431E514106B1DAE8D1465441C23728A2431E514107122B41D1465441A6FDC51D431E5141924253EDD04654411ECFDDB3421E5141518A6FCED046544114AE4781411E514152B81EE5D1465441666666C6381E51413D0AD733F946544155FFD1F4381E5141E2EC4CEEF9465441BEC37CB53B1E5141B21AA916FC465441AC21A0113D1E51415F62D622FD4654412003B19B3D1E514100290562FD465441035419583E1E5141406C9DB7FD465441470E610F401E5141504CEE6DFE465441DCC2A140411E514142871FCDFE4654417DF9F39F431E514131C6E285FF4654411EA13C3A441E5141E5BDB9A8FF4654411758E9D6451E5141BEF7BEB5FF465441BB60CF09481E5141D6FE38F1FE46544179ACD09D491E514124864257FE4654419D3210264C1E5141078565E1FD465441990C29114E1E514182AFC0CDFD465441CDCCCC4C4F1E51410AD7A320FE465441E17A14DE551E5141E17A14CEFD465441333333335D1E5141B81E855BFF465441C3F5282C621E514166666606004754415C8FC2A5651E5141713D0A870047544189B258806A1E51413CD2C79701475441000000606B1E514185EB51A8FB465441713D0A076C1E514185EB5168F6465441E17A140E6C1E514185EB51B8F5465441000000B0701E514166666646F646544185EB5158761E5141F6285C6FF64654411F85EB917B1E51417B14AE77F64654419A999979811E51411F85EBB1F6465441B81E853B881E5141AE47E12AF74654411F85EBE18D1E5141F6285C3FF8465441666666F6921E51410AD7A380F8465441A4703DCA911E5141EC51B8CEE9465441A4703D9A901E51411F85EBF1DA4654419A9999698F1E5141B81E850BCC46544152B81EF58E1E5141713D0A57C6465441333333338E1E51419A9999D9BC465441C3F528DC8C1E5141D7A370CDBC465441E17A14FE771E5141AE47E10ABC4654418FC2F5386B1E5141B81E859BBB465441C3F528BC651E5141D7A370DDBA465441CDCCCCFC5E1E514114AE47F1B946544166666696531E514114AE47B1B746544133333313501E5141E17A143EB746544148E17A244D1E5141713D0A87B6465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389275 - 959778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000007900000052B81E45FE995041E17A149E18225441000000D0FC99504185EB514818225441CDCCCC4CFD995041713D0A471A225441A4703DCAFC995041A4703D6A21225441C3F5288CFB99504152B81EF5212254417B14AEA7FA995041A4703DBA242254418FC2F538F9995041F6285C4F2722544114AE4711F699504148E17A64282254418FC2F5E8F5995041C3F5289C2B22544152B81EF5F09950411F85EB113022544185EB5148EF9950411F85EB513322544148E17A24EB995041F6285C4F352254413D0AD7D3ED995041D7A3709D382254419A999989EF995041333333233A225441F6285CCFF0995041AE47E13A3D22544185EB5138F29950418FC2F5D84122544114AE4791EF9950415C8FC2554422544152B81EF5EF995041295C8F5246225441AE47E1DAF099504166666626452254419A9999C9F29950413D0AD763422254415C8FC2B5F39950415C8FC225412254413D0AD7F3F4995041F6285CDF3F2254411F85EB01F7995041EC51B85E3F22544100000010F9995041F6285C3F3E225441AE47E13AFB995041295C8F323D225441D7A3700DFF99504185EB51B83C225441F6285C0F019A5041295C8F323D225441CDCCCC5C039A5041295C8FE23D2254411F85EB91069A50419A9999E93E2254411F85EBE1099A5041B81E85DB3F2254419A9999090D9A50418FC2F5E840225441000000900F9A50413333330342225441AE47E17A139A504114AE476144225441D7A3708D199A5041F6285C0F482254410AD7A3A0209A50419A9999A94B225441CDCCCC2C269A50419A9999794E2254415C8FC275299A5041F6285C2F50225441000000102D9A50418FC2F5785122544133333323319A50415C8FC2B5522254410AD7A380359A5041295C8FC2532254415C8FC2B5399A504114AE47215422544185EB51F83C9A504148E17AE454225441B81E858B409A504114AE47715622544148E17A54469A5041295C8F9259225441CDCCCCFC459A5041F6285C1F5A2254413D0AD733409A5041A4703DEA56225441295C8FC23C9A5041AE47E16A55225441AE47E19A399A50419A9999C954225441713D0A87359A5041713D0A575422544133333323319A50419A999949532254418FC2F5082D9A504114AE472152225441713D0A47299A50410AD7A3D050225441AE47E10A269A504148E17A144F225441B81E858B229A5041AE47E14A4D22544152B81E85209A50411F85EB514C2254418FC2F5A8199A5041C3F528CC48225441D7A370FD179A5041F6285CBF47225441295C8F52139A504114AE47E144225441000000100F9A5041295C8FB2422254417B14AE170D9A5041AE47E1DA4122544148E17AD40A9A5041B81E85DB402254417B14AEC7069A504114AE47913F2254411F85EBC1029A50419A9999693E22544133333343FF995041F6285C9F3D2254413D0AD783FB995041D7A370CD3D2254419A999959F99950411F85EBC13E225441CDCCCCCCF6995041F6285CDF3F22544152B81E35F5995041B81E859B402254419A999909F4995041AE47E1EA412254410AD7A3A0F29950413D0AD70344225441CDCCCC3CF0995041D7A3708D472254419A9999F9EE9950413D0AD7E34822544185EB5198EF995041713D0A4749225441F6285C0FF4995041333333534C225441C3F528FCF099504148E17A2450225441A4703D4AF4995041B81E850B52225441666666B6F2995041333333D3542254419A9999E9F19950415C8FC2F5552254419A9999A9F7995041B81E855B5822544114AE47D1F999504100000090592254413D0AD793009A5041EC51B87E5C2254418FC2F5C8039A5041CDCCCCFC5D225441666666360D9A50415C8FC2D562225441AE47E12A129A50415C8FC2B56522544133333383189A5041E17A14CE6D225441F6285C9F199A5041CDCCCCFC6E22544148E17A14229A5041C3F5286C77225441D7A370ED2D9A50410AD7A3107F225441E17A14FE2E9A5041000000C07F225441E17A14EE369A50417B14AE9782225441000000703B9A50411F85EB617922544114AE47913F9A504148E17A2471225441D7A3701D449A5041A4703D0A68225441AE47E16A459A504148E17A44652254418FC2F508479A504185EB51D862225441333333934E9A50410000003069225441B81E850B569A5041295C8F626F225441666666065B9A5041E17A147E74225441666666065D9A504148E17AD47F2254419A999929689A50418FC2F5B88022544148E17A94689A504185EB51587E225441C3F528BC689A50417B14AE777D225441AE47E16A6A9A5041AE47E1EA73225441C3F5286C6C9A5041A4703D8A68225441A4703D1A6E9A504185EB51785E225441C3F528CC569A50419A9999395622544100000050499A5041AE47E13A4E2254410AD7A3B0439A504185EB514845225441000000F03F9A5041B81E85BB3F2254417B14AEE7389A5041EC51B8DE39225441B81E85BB379A50416666660635225441F6285C8F369A5041E17A14CE30225441C3F5288C339A50413D0AD7732A2254411F85EBE1289A50411F85EBC1272254413D0AD7231E9A50415C8FC2F5202254418FC2F5081E9A504185EB51081E22544148E17AE4199A5041333333C31B22544185EB5188119A5041A4703D5A1A225441333333C3079A5041D7A370AD19225441713D0AB7019A504185EB51681922544152B81E45FE995041E17A149E18225441
+</a>
+
+<b>
+01060000000100000001030000000100000034000000B04FACCED29950411A6A988EAB2154416B565A12D299504146D58A57AF215441A4711FCCD199504143B14CBDB1215441333333B3D5995041C3F5283CB22154418ECF08F9D4995041308E11FEB72154413706DD49D4995041B77FF1C2BE215441114CD369D69950410F024D29BF215441FB8064C6DF99504169BCB125C12154415CE8F214EE995041C4507ACFC4215441410F58C2109A50411B8CE223D12154417033C7FA0A9A50418E1F957AE221544129F10214169A5041DCC8CA9EE621544110EF9F30109A50419368B4A9FA2154414CE5996A109A504118298D22FC2154417A07AF9F0F9A50417FEE687EFD2154414F38CD7D0E9A5041C66514AA002254419802ACBC0F9A50412AD8BCF2032254417086FDAD0C9A5041F96274AA06225441A44E7909089A50417BD019100A22544168587FCF079A504118E6887F0F2254417BD2CAFA049A5041C975431A12225441BD6E2B5B019A50417C5831C8122254412D2DA1F0FC99504156649A7118225441E6EAD969049A504163387F76192254417608DBAE109A50410131374B1A2254414EB1B7761A9A50418CC255131C22544173962C1E1E9A5041197506FE1D2254415A582B5E319A50413FE83FD4EB215441A7753DB0309A5041473B73E7E921544107745414349A50413E6669FCE62154415093FB8A379A5041BC5C4ACCE2215441D7CC368A3A9A50412E5EC538DD2154415C8D0F033C9A50419BC907BBDA215441AEEA3B843E9A5041AA0A404ED4215441F3ED692B439A5041B0BED9DACF2154417C1024D8449A5041DBDD5063CE2154412A9A3977469A504181688064CB2154417E82FA9D469A504129572B82C62154411FCCF96D469A5041FBA369DBC32154411A25451A419A50419C346B13C2215441DD4A81C62A9A50414C3EF6F5B9215441BCFF9B4A269A50416F1C0452B821544114317355229A50411D107357B92154415E9B2F011E9A504195A9A9DAB72154413D0AD7531A9A5041A4703DEAB5215441F92887B81A9A50419B4F1001B421544154F2F4D9149A504166CE46C5B221544173F3B693F39950419115C0BCAC215441CE75E592DD9950416DF81627AA215441CC925436D3995041C3C84179A9215441472DF561D3995041C7E90D7EAA215441B04FACCED29950411A6A988EAB215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395265 - 1371051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000001D000000666666969438514114AE47A167EB5441CDCCCC3C88385141E17A140E67EB54419A999919813851413D0AD71367EB544148E17A248138514152B81E1568EB544152B81EC581385141C3F5283C84EB5441295C8FD281385141E17A145E86EB5441D7A3701D83385141A4703D4A86EB5441F6285CCF8338514152B81E657EEB5441B81E85EB823851418FC2F5D87DEB54413D0AD71383385141000000B07BEB5441C3F528EC843851410AD7A3A07AEB54417B14AE9787385141AE47E19A79EB5441C3F5285C893851413D0AD7B378EB544185EB51088E38514114AE479179EB5441EC51B8BE92385141D7A3702D7BEB5441713D0AF7953851410AD7A3507CEB5441295C8FA2983851410AD7A3B07DEB5441CDCCCC0C9C385141F6285C0F7DEB54411F85EBB1B73851415C8FC2E585EB54419A999949C83851418FC2F5588BEB5441B81E858BCE385141000000507DEB54410AD7A300D13851415C8FC2D577EB54417B14AE87C7385141CDCCCCDC79EB5441333333F3C13851410000006079EB5441B81E852BBC385141D7A3708D77EB544100000020B738514148E17A2475EB5441CDCCCC0CA6385141713D0A776CEB54419A9999099F385141B81E857B69EB5441666666969438514114AE47A167EB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8FD281385141E17A145E86EB5441E17A144E82385141F6285C1F9AEB54410AD7A36082385141295C8F729DEB54411F85EB71B938514148E17AA4ACEB5441295C8F12BD3851411F85EB81A4EB54419A999949C83851418FC2F5588BEB5441212834EAA3385141BC4100937FEB54412C07D0939D385141E8AF5B8C7DEB5441DE5EC8279D38514163BFB36682EB5441C439BDED9A38514172EFA4BF86EB5441AE47E10A963851411F85EBC184EB5441047C2CEE93385141C061051984EB544190F524D08338514140E3A46E7FEB5441D7A3701D83385141A4703D4A86EB5441295C8FD281385141E17A145E86EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395265 - 3457104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000001D000000666666969438514114AE47A167EB5441CDCCCC3C88385141E17A140E67EB54419A999919813851413D0AD71367EB544148E17A248138514152B81E1568EB544152B81EC581385141C3F5283C84EB5441295C8FD281385141E17A145E86EB5441D7A3701D83385141A4703D4A86EB5441F6285CCF8338514152B81E657EEB5441B81E85EB823851418FC2F5D87DEB54413D0AD71383385141000000B07BEB5441C3F528EC843851410AD7A3A07AEB54417B14AE9787385141AE47E19A79EB5441C3F5285C893851413D0AD7B378EB544185EB51088E38514114AE479179EB5441EC51B8BE92385141D7A3702D7BEB5441713D0AF7953851410AD7A3507CEB5441295C8FA2983851410AD7A3B07DEB5441CDCCCC0C9C385141F6285C0F7DEB54411F85EBB1B73851415C8FC2E585EB54419A999949C83851418FC2F5588BEB5441B81E858BCE385141000000507DEB54410AD7A300D13851415C8FC2D577EB54417B14AE87C7385141CDCCCCDC79EB5441333333F3C13851410000006079EB5441B81E852BBC385141D7A3708D77EB544100000020B738514148E17A2475EB5441CDCCCC0CA6385141713D0A776CEB54419A9999099F385141B81E857B69EB5441666666969438514114AE47A167EB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8FD281385141E17A145E86EB5441E17A144E82385141F6285C1F9AEB54410AD7A36082385141295C8F729DEB54411F85EB71B938514148E17AA4ACEB5441295C8F12BD3851411F85EB81A4EB54419A999949C83851418FC2F5588BEB5441212834EAA3385141BC4100937FEB54412C07D0939D385141E8AF5B8C7DEB5441DE5EC8279D38514163BFB36682EB5441C439BDED9A38514172EFA4BF86EB5441AE47E10A963851411F85EBC184EB5441047C2CEE93385141C061051984EB544190F524D08338514140E3A46E7FEB5441D7A3701D83385141A4703D4A86EB5441295C8FD281385141E17A145E86EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943734 - 187174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15AC6BC50413D0AD7B3923754415C8FC2F5C5BC50418FC2F50892375441F6285C5FBFBC504114AE47219337544133333373BFBC50417B14AE97953754418FC2F588BFBC50419A9999199C3754413D0AD783BFBC50413D0AD7E3B1375441CDCCCC5CBFBC50411F85EB81C4375441EC51B8AED1BC5041EC51B8FECC375441295C8F92D5BC5041EC51B84ECE375441333333C3DBBC504133333353CF3754418FC2F5C8E2BC5041713D0AE7CF3754417B14AE97EDBC504133333333D03754410AD7A370F1BC5041295C8FA2D037544100000000F7BC50418FC2F548D237544185EB51D8FCBC5041AE47E17AD437544114AE47B108BD5041A4703D4AD93754418FC2F57811BD504166666666DC3754413D0AD76319BD5041333333C3DD3754418FC2F54827BD5041713D0AF7DD375441B81E856B2FBD5041295C8FD2DD3754418FC2F5F836BD5041666666E6DC37544114AE470146BD5041C3F5287CD9375441C3F528CC48BD504100000010A437544152B81EE537BD50413D0AD773A63754415C8FC2E51EBD504185EB5138AA375441295C8F0217BD5041F6285C5FAB375441333333E30ABD50418FC2F508AD375441B81E851BFCBC504114AE4771AE3754419A999999F3BC50411F85EBA1B43754419A9999B9EBBC504114AE4771AF375441F6285CCFE5BC5041D7A3701DAB3754410AD7A3D0E4BC50413D0AD703AB375441B81E852BDFBC5041333333B3AA3754413D0AD7C3DDBC504185EB5168AA3754410AD7A360DCBC504133333343AA37544185EB5178D5BC5041B81E85ABA9375441C3F528CCD3BC5041295C8FD2A8375441A4703D3AD3BC50419A999939A837544152B81ED5D1BC504114AE47E1A63754411F85EB41CBBC504152B81E859B375441AE47E15AC6BC50413D0AD7B392375441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA537544159590958CFBC50413967DA19A537544118FB568FCEBC504100C4D1E3A437544118FB568FCEBC50417A083FFCA3375441763DC9FBCEBC50413B704CDAA2375441A5B44523CEBC50413FEC6CA3A03754418DC6C99DCDBC50410F1075989F375441D8654002CCBC504134106CD19C3754414D2596A2CBBC50414471FF2C9C37544190934B92CBBC50416D23FD0F9C3754411F85EB41CBBC504152B81E859B375441A4B6CB54CABC50412F8BA2DA99375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943734 - 187177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15AC6BC50413D0AD7B3923754415C8FC2F5C5BC50418FC2F50892375441F6285C5FBFBC504114AE47219337544133333373BFBC50417B14AE97953754418FC2F588BFBC50419A9999199C3754413D0AD783BFBC50413D0AD7E3B1375441CDCCCC5CBFBC50411F85EB81C4375441EC51B8AED1BC5041EC51B8FECC375441295C8F92D5BC5041EC51B84ECE375441333333C3DBBC504133333353CF3754418FC2F5C8E2BC5041713D0AE7CF3754417B14AE97EDBC504133333333D03754410AD7A370F1BC5041295C8FA2D037544100000000F7BC50418FC2F548D237544185EB51D8FCBC5041AE47E17AD437544114AE47B108BD5041A4703D4AD93754418FC2F57811BD504166666666DC3754413D0AD76319BD5041333333C3DD3754418FC2F54827BD5041713D0AF7DD375441B81E856B2FBD5041295C8FD2DD3754418FC2F5F836BD5041666666E6DC37544114AE470146BD5041C3F5287CD9375441C3F528CC48BD504100000010A437544152B81EE537BD50413D0AD773A63754415C8FC2E51EBD504185EB5138AA375441295C8F0217BD5041F6285C5FAB375441333333E30ABD50418FC2F508AD375441B81E851BFCBC504114AE4771AE3754419A999999F3BC50411F85EBA1B43754419A9999B9EBBC504114AE4771AF375441F6285CCFE5BC5041D7A3701DAB3754410AD7A3D0E4BC50413D0AD703AB375441B81E852BDFBC5041333333B3AA3754413D0AD7C3DDBC504185EB5168AA3754410AD7A360DCBC504133333343AA37544185EB5178D5BC5041B81E85ABA9375441C3F528CCD3BC5041295C8FD2A8375441A4703D3AD3BC50419A999939A837544152B81ED5D1BC504114AE47E1A63754411F85EB41CBBC504152B81E859B375441AE47E15AC6BC50413D0AD7B392375441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C5D5955DBCBC50411893D9A8913754417FEA6664BBBC5041DEE89DA88F37544142F1EB57BBBC5041E2F46D928F375441B9CAE53FBBBC50411BA0935D8F37544121E29D7FBABC5041A0D6D1E18D37544100D34FA7B9BC5041DEA6AC528E3754419B0749EAB7BC50411C207B768E3754418CEF326BB4BC5041DE2B0636903754413DBB3A89B2BC50414C460227913754419DC9ABBAB1BC5041AC1BAF9293375441604E3B9EB1BC504136EFF00A98375441B9036D9EB1BC5041333806449837544116F127ABB1BC5041EAA91B44983754411D1869AAB1BC5041ECA9D12898375441ED2511BFB3BC5041B79E9B4798375441A1FDA39CB3BC5041C66C89D79337544121E1C139B5BC5041EA0F24D3913754411CEB6687B9BC50410A1E950491375441C698A6D0BBBC5041BD94F6F993375441E9DA0FE4BCBC5041B9273A529537544116F50BD5BDBC5041ABBA7DAA9637544161448DD6BEBC5041236271AE97375441E9C1A47CBFBC5041506FAB6A98375441DF2E2374BFBC504154E772DF95375441B6107473BFBC5041F51614AB953754415F8F6633BFBC5041BAAA596095375441DFA0EF11BDBC50418599132C93375441375AAB70BCBC5041517A14D091375441C5D5955DBCBC50411893D9A891375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943734 - 393249
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15AC6BC50413D0AD7B3923754415C8FC2F5C5BC50418FC2F50892375441F6285C5FBFBC504114AE47219337544133333373BFBC50417B14AE97953754418FC2F588BFBC50419A9999199C3754413D0AD783BFBC50413D0AD7E3B1375441CDCCCC5CBFBC50411F85EB81C4375441EC51B8AED1BC5041EC51B8FECC375441295C8F92D5BC5041EC51B84ECE375441333333C3DBBC504133333353CF3754418FC2F5C8E2BC5041713D0AE7CF3754417B14AE97EDBC504133333333D03754410AD7A370F1BC5041295C8FA2D037544100000000F7BC50418FC2F548D237544185EB51D8FCBC5041AE47E17AD437544114AE47B108BD5041A4703D4AD93754418FC2F57811BD504166666666DC3754413D0AD76319BD5041333333C3DD3754418FC2F54827BD5041713D0AF7DD375441B81E856B2FBD5041295C8FD2DD3754418FC2F5F836BD5041666666E6DC37544114AE470146BD5041C3F5287CD9375441C3F528CC48BD504100000010A437544152B81EE537BD50413D0AD773A63754415C8FC2E51EBD504185EB5138AA375441295C8F0217BD5041F6285C5FAB375441333333E30ABD50418FC2F508AD375441B81E851BFCBC504114AE4771AE3754419A999999F3BC50411F85EBA1B43754419A9999B9EBBC504114AE4771AF375441F6285CCFE5BC5041D7A3701DAB3754410AD7A3D0E4BC50413D0AD703AB375441B81E852BDFBC5041333333B3AA3754413D0AD7C3DDBC504185EB5168AA3754410AD7A360DCBC504133333343AA37544185EB5178D5BC5041B81E85ABA9375441C3F528CCD3BC5041295C8FD2A8375441A4703D3AD3BC50419A999939A837544152B81ED5D1BC504114AE47E1A63754411F85EB41CBBC504152B81E859B375441AE47E15AC6BC50413D0AD7B392375441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA537544159590958CFBC50413967DA19A537544118FB568FCEBC504100C4D1E3A437544118FB568FCEBC50417A083FFCA3375441763DC9FBCEBC50413B704CDAA2375441A5B44523CEBC50413FEC6CA3A03754418DC6C99DCDBC50410F1075989F375441D8654002CCBC504134106CD19C3754414D2596A2CBBC50414471FF2C9C37544190934B92CBBC50416D23FD0F9C3754411F85EB41CBBC504152B81E859B375441A4B6CB54CABC50412F8BA2DA99375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419166 - 2630836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000020000000E17A144E5DBC5041000000C0EC345441A4703D8A41BC5041D7A3708DE6345441F6285CEF3CBC50419A999959E5345441C3F5285C3FBC5041295C8F82E63454419A99994941BC5041D7A3703DE8345441F6285C7F43BC504114AE47C1EA345441F6285C5F45BC50410AD7A340ED34544114AE477146BC50410AD7A3E0EE345441C3F528CC47BC50418FC2F5E8F0345441000000104ABC504114AE47D1F33454418FC2F5F84ABC504114AE4711F5345441F6285CCF4CBC5041E17A14FEF7345441A4703D2A4EBC5041AE47E1AAFA3454417B14AED74EBC504114AE47C1FC345441295C8F124FBC50418FC2F548FE3454419A9999F955BC5041D7A370FDFC34544185EB519857BC5041713D0AB7FC3454417B14AEF758BC50413D0AD733FE34544185EB514859BC50411F85EB21003554418FC2F5C859BC5041000000E0023554411F85EB3164BC50419A99997904355441666666F688BC5041000000A00C3554413D0AD78389BC50415C8FC2C50C3554419A9999C98ABC50410AD7A3100D3554410AD7A3508ABC5041EC51B8DE09355441B81E853B8ABC50415C8FC2050835544185EB51788ABC50413D0AD783033554411F85EBC18ABC504185EB51B8FE34544185EB51388BBC504114AE47F1F5345441F6285C5F5FBC504114AE4741ED345441EC51B8AE5EBC5041295C8F02ED345441E17A144E5DBC5041000000C0EC345441080000005C8FC2F566BC50418FC2F588FA34544148E17A0467BC504148E17A24FA345441C3F5283C67BC5041E17A145EF8345441E17A14BE6ABC50413D0AD713F93454411F85EBB16ABC5041B81E859BF934544114AE47716ABC504114AE4721FB345441E17A14AE69BC5041295C8F02FB3454415C8FC2F566BC50418FC2F588FA345441
+</a>
+
+<b>
+01060000000100000001030000000200000044000000F6285C5F5FBC504114AE4741ED34544185EB510864BC5041D7A3702DEE345441F6285C2F6ABC5041A4703DEAD234544148E17AF46CBC5041D7A3706DC53454415C8FC2D563BC50419A9999E9C5345441333333E35BBC5041CDCCCC2CC93454419A99999951BC50415C8FC215C7345441295C8F723CBC504133333393BE34544185EB51683FBC504133333353C2345441B81E85FB41BC5041EC51B80EC5345441EC51B89E44BC504114AE4791C7345441CDCCCCFC47BC504152B81E65CA345441666666564ABC5041F6285CBFCC345441C3F528AC4BBC50415C8FC265CE345441295C8F224DBC5041CDCCCC0CD0345441A4703D0A4FBC5041E17A141ED234544148E17A7451BC5041F6285C5FD43454410000002054BC5041A4703DEAD63454419A99995956BC504152B81E95D934544148E17A1457BC50410AD7A360DA34544185EB51C859BC5041F6285CBFDD345441A4703D2A5CBC50413D0AD7C3E034544185EB51B85BBC504152B81E15E1345441B81E85CB56BC50413D0AD713DB345441F6285C3F54BC5041EC51B80ED8345441295C8FE252BC50410AD7A3A0D6345441A4703DDA50BC50410AD7A3B0D4345441713D0A274EBC50415C8FC225D23454417B14AEA74ABC5041CDCCCC1CCE3454418FC2F50849BC5041CDCCCC2CCC3454410AD7A31047BC504152B81E55CA345441D7A3705D44BC50413D0AD733C83454415C8FC2A542BC50415C8FC2C5C6345441A4703DDA3FBC50418FC2F5B8C3345441713D0A573BBC5041AE47E18ABE34544148E17AE438BC504166666696BB345441B81E85AB36BC5041AE47E1DAB8345441E17A147E35BC50419A9999A9B63454419A99996934BC5041D7A370DDB3345441E17A148E33BC5041EC51B82EB23454411F85EBB132BC5041CDCCCC6CB1345441C3F5289C28BC50410AD7A3B0B13454416666668611BC5041C3F5284CB2345441B81E851B12BC5041295C8F12B43454411F85EB3113BC504114AE4791B6345441CDCCCC9C15BC5041F6285C6FBB345441B81E85AB16BC50417B14AEA7BD345441713D0A7717BC5041E17A145EBF345441C3F528CC18BC50410AD7A3A0C23454410AD7A3301ABC5041333333B3C634544114AE47911BBC50410AD7A3A0CB3454415C8FC2651EBC50415C8FC2C5D6345441A4703D0A1FBC5041F6285C5FD9345441713D0AA71FBC50413D0AD7E3DA345441000000B020BC5041C3F5283CDD345441713D0AE721BC5041AE47E1BADE3454419A9999A923BC504166666696DF3454419A9999C925BC5041B81E85CBDF34544148E17AB428BC504166666616E03454419A9999F92EBC5041295C8FE2E1345441295C8F4233BC50418FC2F5E8E23454419A99993937BC50417B14AEE7E3345441A17919073DBC5041D3AFF464E5345441F6285CEF3CBC50419A999959E5345441A4703D8A41BC5041D7A3708DE6345441E17A144E5DBC5041000000C0EC345441EC51B8AE5EBC5041295C8F02ED345441F6285C5F5FBC504114AE4741ED34544105000000666666C621BC504133333393B9345441C3F528BC21BC50415C8FC225B8345441A4703D9A22BC50419A999929B8345441F6285CAF22BC5041713D0A97B9345441666666C621BC504133333393B9345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419166 - 3428931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000020000000E17A144E5DBC5041000000C0EC345441A4703D8A41BC5041D7A3708DE6345441F6285CEF3CBC50419A999959E5345441C3F5285C3FBC5041295C8F82E63454419A99994941BC5041D7A3703DE8345441F6285C7F43BC504114AE47C1EA345441F6285C5F45BC50410AD7A340ED34544114AE477146BC50410AD7A3E0EE345441C3F528CC47BC50418FC2F5E8F0345441000000104ABC504114AE47D1F33454418FC2F5F84ABC504114AE4711F5345441F6285CCF4CBC5041E17A14FEF7345441A4703D2A4EBC5041AE47E1AAFA3454417B14AED74EBC504114AE47C1FC345441295C8F124FBC50418FC2F548FE3454419A9999F955BC5041D7A370FDFC34544185EB519857BC5041713D0AB7FC3454417B14AEF758BC50413D0AD733FE34544185EB514859BC50411F85EB21003554418FC2F5C859BC5041000000E0023554411F85EB3164BC50419A99997904355441666666F688BC5041000000A00C3554413D0AD78389BC50415C8FC2C50C3554419A9999C98ABC50410AD7A3100D3554410AD7A3508ABC5041EC51B8DE09355441B81E853B8ABC50415C8FC2050835544185EB51788ABC50413D0AD783033554411F85EBC18ABC504185EB51B8FE34544185EB51388BBC504114AE47F1F5345441F6285C5F5FBC504114AE4741ED345441EC51B8AE5EBC5041295C8F02ED345441E17A144E5DBC5041000000C0EC345441080000005C8FC2F566BC50418FC2F588FA34544148E17A0467BC504148E17A24FA345441C3F5283C67BC5041E17A145EF8345441E17A14BE6ABC50413D0AD713F93454411F85EBB16ABC5041B81E859BF934544114AE47716ABC504114AE4721FB345441E17A14AE69BC5041295C8F02FB3454415C8FC2F566BC50418FC2F588FA345441
+</a>
+
+<b>
+01060000000100000001030000000200000044000000F6285C5F5FBC504114AE4741ED34544185EB510864BC5041D7A3702DEE345441F6285C2F6ABC5041A4703DEAD234544148E17AF46CBC5041D7A3706DC53454415C8FC2D563BC50419A9999E9C5345441333333E35BBC5041CDCCCC2CC93454419A99999951BC50415C8FC215C7345441295C8F723CBC504133333393BE34544185EB51683FBC504133333353C2345441B81E85FB41BC5041EC51B80EC5345441EC51B89E44BC504114AE4791C7345441CDCCCCFC47BC504152B81E65CA345441666666564ABC5041F6285CBFCC345441C3F528AC4BBC50415C8FC265CE345441295C8F224DBC5041CDCCCC0CD0345441A4703D0A4FBC5041E17A141ED234544148E17A7451BC5041F6285C5FD43454410000002054BC5041A4703DEAD63454419A99995956BC504152B81E95D934544148E17A1457BC50410AD7A360DA34544185EB51C859BC5041F6285CBFDD345441A4703D2A5CBC50413D0AD7C3E034544185EB51B85BBC504152B81E15E1345441B81E85CB56BC50413D0AD713DB345441F6285C3F54BC5041EC51B80ED8345441295C8FE252BC50410AD7A3A0D6345441A4703DDA50BC50410AD7A3B0D4345441713D0A274EBC50415C8FC225D23454417B14AEA74ABC5041CDCCCC1CCE3454418FC2F50849BC5041CDCCCC2CCC3454410AD7A31047BC504152B81E55CA345441D7A3705D44BC50413D0AD733C83454415C8FC2A542BC50415C8FC2C5C6345441A4703DDA3FBC50418FC2F5B8C3345441713D0A573BBC5041AE47E18ABE34544148E17AE438BC504166666696BB345441B81E85AB36BC5041AE47E1DAB8345441E17A147E35BC50419A9999A9B63454419A99996934BC5041D7A370DDB3345441E17A148E33BC5041EC51B82EB23454411F85EBB132BC5041CDCCCC6CB1345441C3F5289C28BC50410AD7A3B0B13454416666668611BC5041C3F5284CB2345441B81E851B12BC5041295C8F12B43454411F85EB3113BC504114AE4791B6345441CDCCCC9C15BC5041F6285C6FBB345441B81E85AB16BC50417B14AEA7BD345441713D0A7717BC5041E17A145EBF345441C3F528CC18BC50410AD7A3A0C23454410AD7A3301ABC5041333333B3C634544114AE47911BBC50410AD7A3A0CB3454415C8FC2651EBC50415C8FC2C5D6345441A4703D0A1FBC5041F6285C5FD9345441713D0AA71FBC50413D0AD7E3DA345441000000B020BC5041C3F5283CDD345441713D0AE721BC5041AE47E1BADE3454419A9999A923BC504166666696DF3454419A9999C925BC5041B81E85CBDF34544148E17AB428BC504166666616E03454419A9999F92EBC5041295C8FE2E1345441295C8F4233BC50418FC2F5E8E23454419A99993937BC50417B14AEE7E3345441A17919073DBC5041D3AFF464E5345441F6285CEF3CBC50419A999959E5345441A4703D8A41BC5041D7A3708DE6345441E17A144E5DBC5041000000C0EC345441EC51B8AE5EBC5041295C8F02ED345441F6285C5F5FBC504114AE4741ED34544105000000666666C621BC504133333393B9345441C3F528BC21BC50415C8FC225B8345441A4703D9A22BC50419A999929B8345441F6285CAF22BC5041713D0A97B9345441666666C621BC504133333393B9345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399981 - 3009966
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000001B000000EC51B86E3E4D5141D7A3708D526C54417B14AE273E4D51418FC2F558556C5441000000A04F4D5141666666C6546C544185EB5118514D514152B81E65506C544166666656524D5141B81E85FB4A6C5441CDCCCC0C524D5141333333E3436C5441CDCCCCBC524D5141AE47E18A406C54410AD7A370544D5141000000A0396C5441EC51B84E574D514152B81EF52F6C5441C3F528FC534D5141D7A370ED2D6C5441A4703D5A514D514185EB51F82C6C5441A4703DBA4E4D5141F6285C0F2C6C5441B81E859B474D5141000000102A6C5441713D0A27404D51415C8FC245296C5441D7A3707D404D5141A4703DAA1F6C544148E17A74414D5141F6285CDF1D6C5441B81E859B374D5141F6285CDF1E6C544114AE47C1314D5141295C8FC2216C5441AE47E15A2F4D514114AE47B1236C54413D0AD7632F4D514100000090256C5441A4703DAA2F4D5141713D0AD7336C544185EB51682F4D514114AE47913D6C5441000000F0374D5141F6285C3F3E6C5441713D0AF73F4D5141CDCCCCAC3E6C54411F85EB613F4D5141333333B3456C5441D7A3700D3F4D51418FC2F5D84C6C5441EC51B86E3E4D5141D7A3708D526C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000009CD8EA95414D5141B2FA5FAB1D6C54410B2B7481414D514170A589B41D6C5441490B7EE1404D5141F75049EE1D6C5441B81E859B374D5141F6285CDF1E6C544114AE47C1314D5141295C8FC2216C544168A907902F4D514141B57B86236C5441CAFFB45D2F4D51413AF65248246C5441B5FD557D2F4D5141626EB3BB2A6C544110BD31892F4D514112D665B7386C544127F566822F4D5141E0F65B933D6C5441AAC91DFF3E4D514148A7AC883E6C5441713D0AF73F4D5141CDCCCCAC3E6C5441C2DB22EC3F4D514150A28C6F456C544100917EAB3F4D51411AE810974C6C5441E8A90AC13F4D5141FCBEE6A3516C5441920D3B17404D514185BC5617556C5441000000A04F4D5141666666C6546C544185EB5118514D514152B81E65506C544166666656524D5141B81E85FB4A6C5441CDCCCC0C524D5141333333E3436C5441CDCCCCBC524D5141AE47E18A406C54410AD7A370544D5141000000A0396C5441EC51B84E574D514152B81EF52F6C5441C3F528FC534D5141D7A370ED2D6C5441A4703D5A514D514185EB51F82C6C5441A4703DBA4E4D5141F6285C0F2C6C5441B81E859B474D5141000000102A6C5441713D0A27404D51415C8FC245296C54418B938E42404D514121C97136266C5441766F457D404D5141B7540BAF1F6C54419CD8EA95414D5141B2FA5FAB1D6C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399981 - 3826712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000001B000000EC51B86E3E4D5141D7A3708D526C54417B14AE273E4D51418FC2F558556C5441000000A04F4D5141666666C6546C544185EB5118514D514152B81E65506C544166666656524D5141B81E85FB4A6C5441CDCCCC0C524D5141333333E3436C5441CDCCCCBC524D5141AE47E18A406C54410AD7A370544D5141000000A0396C5441EC51B84E574D514152B81EF52F6C5441C3F528FC534D5141D7A370ED2D6C5441A4703D5A514D514185EB51F82C6C5441A4703DBA4E4D5141F6285C0F2C6C5441B81E859B474D5141000000102A6C5441713D0A27404D51415C8FC245296C5441D7A3707D404D5141A4703DAA1F6C544148E17A74414D5141F6285CDF1D6C5441B81E859B374D5141F6285CDF1E6C544114AE47C1314D5141295C8FC2216C5441AE47E15A2F4D514114AE47B1236C54413D0AD7632F4D514100000090256C5441A4703DAA2F4D5141713D0AD7336C544185EB51682F4D514114AE47913D6C5441000000F0374D5141F6285C3F3E6C5441713D0AF73F4D5141CDCCCCAC3E6C54411F85EB613F4D5141333333B3456C5441D7A3700D3F4D51418FC2F5D84C6C5441EC51B86E3E4D5141D7A3708D526C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000009CD8EA95414D5141B2FA5FAB1D6C54410B2B7481414D514170A589B41D6C5441490B7EE1404D5141F75049EE1D6C5441B81E859B374D5141F6285CDF1E6C544114AE47C1314D5141295C8FC2216C544168A907902F4D514141B57B86236C5441CAFFB45D2F4D51413AF65248246C5441B5FD557D2F4D5141626EB3BB2A6C544110BD31892F4D514112D665B7386C544127F566822F4D5141E0F65B933D6C5441AAC91DFF3E4D514148A7AC883E6C5441713D0AF73F4D5141CDCCCCAC3E6C5441C2DB22EC3F4D514150A28C6F456C544100917EAB3F4D51411AE810974C6C5441E8A90AC13F4D5141FCBEE6A3516C5441920D3B17404D514185BC5617556C5441000000A04F4D5141666666C6546C544185EB5118514D514152B81E65506C544166666656524D5141B81E85FB4A6C5441CDCCCC0C524D5141333333E3436C5441CDCCCCBC524D5141AE47E18A406C54410AD7A370544D5141000000A0396C5441EC51B84E574D514152B81EF52F6C5441C3F528FC534D5141D7A370ED2D6C5441A4703D5A514D514185EB51F82C6C5441A4703DBA4E4D5141F6285C0F2C6C5441B81E859B474D5141000000102A6C5441713D0A27404D51415C8FC245296C54418B938E42404D514121C97136266C5441766F457D404D5141B7540BAF1F6C54419CD8EA95414D5141B2FA5FAB1D6C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401990 - 59475
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000140000005C8FC235B00C5141C3F5281C38F15441713D0AE7B00C51418FC2F5D838F15441E17A14DEB10C5141E17A143E39F15441CDCCCCECB80C51413D0AD7D338F15441EC51B8EEC30C51410000000038F154413D0AD7B3C50C51417B14AEE737F15441E17A14DEC70C514152B81E2536F15441713D0A57C80C51419A9999D931F1544100000070C80C51410AD7A33027F15441D7A3705DC80C5141E17A14BE23F1544114AE47F1BC0C5141F6285C3F23F1544152B81EA5B70C51415C8FC22523F15441B81E859BB30C51419A99996923F1544185EB51B8B10C5141F6285CCF23F1544152B81ED5AF0C51418FC2F57824F154415C8FC235AD0C5141333333C325F154415C8FC2C5AD0C514152B81E5529F1544185EB51B8AE0C5141CDCCCCEC2FF15441000000C0AF0C514152B81E1537F154415C8FC235B00C5141C3F5281C38F15441
+</a>
+
+<b>
+0106000000010000000103000000010000001800000085EB51B8AE0C5141CDCCCCEC2FF15441FB5545B8AF0C5141DBEC68DF36F15441B67BC117B00C5141B3C523D937F154415C8FC235B00C5141C3F5281C38F15441713D0AE7B00C51418FC2F5D838F15441E17A14DEB10C5141E17A143E39F154414D837AC4B50C514114195F0339F1544143EE26B0C50C5141AF89B0D737F15441918127DFC70C514144BF5A1B36F154412DD40813C80C5141003AC44334F1544155C9BE20C80C5141B7E522C733F1544165ECD23CC80C5141215F586532F154410F0BC96CC80C51414CD3C69726F15441704EB15DC80C51419D7A17CA23F15441357FF871BE0C514188DEA55423F15441AF0FF5D6B70C51417024FB3623F15441987891B7B40C5141CDE2F45623F15441B81E859BB30C51419A99996923F15441910B7EDBB20C51414B4E0A9223F15441E8C24269B00C514132ACF64424F1544152B81ED5AF0C51418FC2F57824F154415C8FC235AD0C5141333333C325F154415C8FC2C5AD0C514152B81E5529F1544185EB51B8AE0C5141CDCCCCEC2FF15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>420861 - 37167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000B000000333333D35DA750411F85EB719A5855413333331354A7504148E17A849958554152B81E6552A7504152B81E65995855419A9999294BA75041D7A3701DB058554152B81EF54CA750410AD7A320B0585541EC51B8DE4DA750411F85EBE1AF5855415C8FC25550A75041B81E853BAF585541CDCCCC3C4FA75041C3F5280CB5585541D7A370FD53A7504185EB5118B558554152B81E7557A750410AD7A350AD585541333333D35DA750411F85EB719A585541
+</a>
+
+<b>
+010600000001000000010300000001000000110000003333331354A7504148E17A84995855410AAA617752A750415DC8D77899585541F496284452A75041D20EAACC99585541F6234E0452A75041906540959A585541A296C7B251A750417FA45A959B58554196B1ECF94FA75041FAD53EFEA05855413BD780464BA750415A6F4DFFAF5855410B649BCC4BA75041695AAF17B0585541863EA91A4CA7504107631E1FB058554152B81EF54CA750410AD7A320B0585541EC51B8DE4DA750411F85EBE1AF5855415C8FC25550A75041B81E853BAF585541CDCCCC3C4FA75041C3F5280CB5585541D7A370FD53A7504185EB5118B558554152B81E7557A750410AD7A350AD585541333333D35DA750411F85EB719A5855413333331354A7504148E17A8499585541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895338 - 3574466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -62  </desc>
+<a>
+0106000000010000000103000000010000001C0000005C8FC205257F514152B81E45E7A55441EC51B8CE227F51418FC2F568ECA55441D7A3708D217F5141D7A3705DF0A55441B81E854B207F5141B81E853BF5A554415C8FC225227F514148E17AD4F5A554418FC2F5C8247F514152B81E55F6A554417B14AE37317F5141F6285C5FF8A55441713D0A17377F514100000020F9A554413D0AD7D3417F51410AD7A3A0F9A554418FC2F5184D7F51411F85EB71FAA554415C8FC225517F51419A999989FAA55441F6285C7F527F51410AD7A360F9A5544114AE4721547F514166666666F7A5544133333373557F51413D0AD753F5A55441D7A3703D577F5141EC51B86EF1A554410AD7A3E0567F5141B81E856BF0A554413D0AD7D3557F5141CDCCCCCCEFA554417B14AE374F7F5141B81E85DBECA55441D7A370CD467F51415C8FC2D5EBA55441A4703DAA437F51417B14AE67EBA55441333333F33A7F51417B14AE07EAA55441295C8F02377F51417B14AE77E9A5544133333323327F51415C8FC2C5E8A55441666666A62F7F5141713D0A67E8A5544185EB51682E7F51419A999939E8A55441B81E85BB2C7F5141C3F528FCE7A55441A4703D7A287F5141CDCCCC9CE7A554415C8FC205257F514152B81E45E7A55441
+</a>
+
+<b>
+01060000000100000001030000000100000040000000332DC408527F5141CD2E5124FAA55441CB88DB94527F5141C0503B95F9A5544160A53E03537F51415D387C24F9A554411D5A646B537F514108AC1CBAF8A55441AD387BA3537F5141C5BF8B63F8A554416DE331D5537F514177E7D116F8A5544154E7BF22547F514168FC1F9FF7A554418E9BD254557F5141D65EBEC6F5A55441CB171CC2557F5141D100131EF5A554411700DF51567F5141A05CED29F4A554410B059F47577F514183D76E6DF1A55441553A3B5D577F5141AAA6D52FF1A554411904567E577F5141FED478D1F0A554410AD7A3E0567F5141B81E856BF0A55441AA12C0DE557F5141F821F8E6EFA55441B18E4CDC4E7F514102E9B71AEDA554419FD254CE4D7F514119E19CAFECA55441B6E16F8F4D7F51415413A996ECA554418FC2F5384D7F5141AC1C5A74ECA55441F2F4F0DE4C7F5141D2E2F963ECA55441B556C551467F5141A416DF32EBA554419149259F447F51413B57CEE3EAA5544178B872EE437F5141652161D9EAA55441BC1B2DF2437F51419C0D57C4EAA55441A4703DAA437F51417B14AE67EBA55441333333F33A7F51417B14AE07EAA55441295C8F02377F51417B14AE77E9A5544133333323327F51415C8FC2C5E8A55441666666A62F7F5141713D0A67E8A5544185EB51682E7F51419A999939E8A55441B81E85BB2C7F5141C3F528FCE7A55441A4703D7A287F5141CDCCCC9CE7A554411F984D5A257F51410B3B804DE7A5544197E8402B247F5141BCE7D975E9A5544110207623237F5141A6E6C112ECA554414836CF8F227F514199943A7CEDA55441BD862D27227F51417719DD8CEEA554412F31CEE7217F51413C0C5888EFA55441E078DDA5217F514198D53293F0A554413D0AD77B207F514114AE4749F5A55441CF810D0A227F51417FA5179AF5A55441BA16A48D247F5141665EB31CF6A5544122ED2ED3267F514157AEB792F6A55441BAC225C9287F514119BF95F8F6A55441E970E0502A7F514136E11448F7A554416C385F412B7F51412B19E378F7A55441DFB189672C7F51415C9E95B4F7A5544134C729182D7F514142AA6DD8F7A5544116F455DC2D7F514123DBACF3F7A554417B14AE37317F5141F6285C5FF8A55441B34CF013377F5141BCA3CB0FF9A55441BADFABCE377F514136FC9728F9A5544183B39590387F5141390FA13DF9A55441203CC347397F514143658350F9A554414D5380773B7F5141D41CA973F9A554411F409EC53F7F5141317BDDB8F9A554419FEF29DA417F514130134EDAF9A5544117521B82447F5141E70E0005FAA554418D79C8C7457F514137427319FAA5544192A424B4477F5141DDDF5D38FAA5544178F208A44A7F5141086D9467FAA5544123D1381F4D7F5141DCF6768FFAA55441E336803B507F5141170877C1FAA55441332DC408527F5141CD2E5124FAA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>896330 - 1170011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000004A000000B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441E17A146EEC67514185EB51B897AA5441666666F6E9675141A4703D5A9AAA544100000000E76751419A9999099CAA544152B81EF5E36751419A9999099CAA544148E17A64DF6751418FC2F5B89AAA5441EC51B82EDC675141666666C699AA5441B81E855BD86751411F85EB9199AA5441B81E853BD567514185EB51F89AAA54410AD7A310D26751417B14AE579EAA5441AE47E1DACE675141E17A14DEA2AA5441A4703DFACB6751417B14AE47A6AA54418FC2F518C9675141666666C6A6AA544133333373C46751415C8FC255A5AA54411F85EB71C167514114AE47B1A6AA5441C3F5287CBE67514152B81E25A7AA544114AE47D1BB6751410AD7A3D0A6AA5441AE47E1DAB8675141B81E855BA6AA544133333373B667514166666656A8AA54417B14AE67B4675141F6285C7FA9AA54411F85EB71B1675141000000F0AAAA5441CDCCCCACAD67514133333363ACAA5441E17A143EAA6751419A999959ACAA544185EB51F8A6675141AE47E13AACAA5441295C8F12A4675141295C8F92ACAA5441C3F5281CA067514100000020AEAA5441AE47E1CA9E6751410AD7A3E0ACAA54417B14AEF79F675141295C8FF2B2AA5441C3F5285CA5675141666666A6B6AA544166666676A96751410AD7A3C0B7AA5441F6285CAFAD675141E17A14FEB4AA544166666606B467514100000040B4AA544100000060B46751410AD7A3C0B8AA54413D0AD713B76751410AD7A300B9AA5441E17A142EBA6751417B14AEA7BAAA5441713D0AB7BB675141CDCCCC5CBCAA54417B14AE97BC6751418FC2F518BEAA5441713D0AD7BC675141C3F5285CC0AA544148E17AE4BB67514166666616C2AA5441EC51B8EEB867514133333333C6AA5441AE47E13AB5675141295C8F92C9AA54417B14AE97B3675141D7A370CDCAAA5441F6285C1FB5675141A4703D1ACCAA5441A4703D2AC1675141666666A6DAAA5441D7A370DDC5675141333333D3DFAA544152B81E45C86751411F85EBA1DFAA5441CDCCCC4CCC67514185EB5108DFAA5441F6285C7FCF67514152B81E35DEAA5441F6285CDFD267514152B81E35DDAA544152B81E95D7675141CDCCCC9CDBAA5441EC51B8FEDC675141295C8F62DAAA54410AD7A370DF675141666666F6D8AA544100000000E0675141713D0A67D5AA544100000010DF675141295C8F52D3AA5441295C8F92E1675141F6285CEFD0AA54413D0AD753E4675141CDCCCC8CCEAA5441A4703D4AE7675141EC51B8EECDAA544133333363E9675141CDCCCC4CCBAA5441A4703D6AEA6751413D0AD7A3C7AA54410AD7A3B0EB6751413D0AD783C4AA5441CDCCCC9CEF67514152B81E35B7AA544185EB5168EE675141E17A145EB5AA54415C8FC2C5ED675141295C8F82B2AA5441666666C6ED6751413D0AD7F3AFAA54410AD7A3F0ED67514148E17A84AEAA54417B14AEB7EE6751418FC2F578ACAA5441000000E0EF675141E17A14EEA9AA5441D7A370DDEF67514185EB5168A6AA54413D0AD723F06751415C8FC2A59DAA54413D0AD703F067514114AE47A199AA5441CDCCCCDCEF6751410AD7A31098AA5441B81E85FBEE675141AE47E1FA95AA5441B81E851BEE6751413333339394AA5441
+</a>
+
+<b>
+01060000000100000001030000000200000051000000B81E85FBEE675141AE47E1FA95AA5441B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441005484C7EA6751413ECEA55297AA5441EB7A69E5E867514152F1BCD998AA544198EC581BE7675141821F74079AAA54410C3242F6E56751411F2DAC029BAA5441C2C3B029E4675141A8D6BCED9AAA5441465CBBDAE267514172CC52319AAA5441424BB5A0E16751412C6FC79E99AA544125C5811CDE6751418F618FA398AA54414A8BD3F0D9675141B007D24F98AA5441ECB81A14D7675141D5BE1A3699AA5441A87FEB36D5675141BCC137FD9AAA54416355D761D4675141CF4416E09BAA54415BBF5DF2D0675141595B3AEB9FAA54419DA5DFCCCD6751417C92491EA4AA5441A7AD6ED1CB675141FF9DB14EA6AA54417FAE7C47C9675141D93567BEA6AA5441A1E14A8CC46751412EE6885DA5AA5441092DA583C1675141A1CE45A9A6AA54413671F745BE67514195686A1EA7AA544190B3A650BB675141F79AC6BCA6AA5441F13CF0ECB8675141900B4F5EA6AA5441975899C8B7675141A89877D5A1AA5441E76DAE75B567514141500726A1AA54412160C8DDAC675141AA100FC3A3AA5441516D2C11A76751418504EF5BA7AA54411BF1492AA46751419CC0366BA9AA544130AEC2D1A0675141230EBEC7ABAA5441AE47E1CA9E6751410AD7A3E0ACAA54417B14AEF79F675141295C8FF2B2AA5441C3F5285CA5675141666666A6B6AA544166666676A96751410AD7A3C0B7AA5441F6285CAFAD675141E17A14FEB4AA544166666606B467514100000040B4AA544100000060B46751410AD7A3C0B8AA54413D0AD713B76751410AD7A300B9AA5441E17A142EBA6751417B14AEA7BAAA5441713D0AB7BB675141CDCCCC5CBCAA54417B14AE97BC6751418FC2F518BEAA5441713D0AD7BC675141C3F5285CC0AA544148E17AE4BB67514166666616C2AA5441EC51B8EEB867514133333333C6AA5441AE47E13AB5675141295C8F92C9AA54417B14AE97B3675141D7A370CDCAAA5441F6285C1FB5675141A4703D1ACCAA5441A4703D2AC1675141666666A6DAAA5441D7A370DDC5675141333333D3DFAA544152B81E45C86751411F85EBA1DFAA5441CDCCCC4CCC67514185EB5108DFAA5441F6285C7FCF67514152B81E35DEAA5441F6285CDFD267514152B81E35DDAA544152B81E95D7675141CDCCCC9CDBAA5441EC51B8FEDC675141295C8F62DAAA54410AD7A370DF675141666666F6D8AA54412FCA7B27E0675141133D8352D5AA544145023626DF675141E4B7D683D3AA5441AE7F1605E26751416C9E368CD0AA5441A2298D3EE46751417DC03A9FCEAA5441E87DDC2FE767514184E537F4CDAA54419BBC0C09E9675141C7C8F1BDCBAA5441B288CA7BEA675141068ED278C7AA5441BF85D00AEC67514156CAE951C3AA5441E1438FD4ED67514169D3F640BDAA54415060B572EF675141B702BADDBCAA54418B820E0EF0675141C27772BDBAAA5441CDCCCC9CEF67514152B81E35B7AA544185EB5168EE675141E17A145EB5AA54415C8FC2C5ED675141295C8F82B2AA5441666666C6ED6751413D0AD7F3AFAA54410AD7A3F0ED67514148E17A84AEAA54417B14AEB7EE6751418FC2F578ACAA544190AF31D6EF6751411C7F9E03AAAA5441E898BDDFEF675141AE26B692A9AA54410F95CADDEF675141121314E4A6AA5441D7A370DDEF67514185EB5168A6AA54413D0AD723F06751415C8FC2A59DAA54413D0AD703F067514114AE47A199AA5441CDCCCCDCEF6751410AD7A31098AA5441B81E85FBEE675141AE47E1FA95AA54410700000029F29CE6CE6751417AE54C9BB4AA544174602EB3D06751411F249AF8B2AA54417C823A27D36751413CB9D66AB1AA54415FEDFDB4D46751411B1394BEB1AA54412DF49932D56751412335A032B4AA5441787134EDD1675141B400BD91B6AA544129F29CE6CE6751417AE54C9BB4AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>896330 - 3328873
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000004A000000B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441E17A146EEC67514185EB51B897AA5441666666F6E9675141A4703D5A9AAA544100000000E76751419A9999099CAA544152B81EF5E36751419A9999099CAA544148E17A64DF6751418FC2F5B89AAA5441EC51B82EDC675141666666C699AA5441B81E855BD86751411F85EB9199AA5441B81E853BD567514185EB51F89AAA54410AD7A310D26751417B14AE579EAA5441AE47E1DACE675141E17A14DEA2AA5441A4703DFACB6751417B14AE47A6AA54418FC2F518C9675141666666C6A6AA544133333373C46751415C8FC255A5AA54411F85EB71C167514114AE47B1A6AA5441C3F5287CBE67514152B81E25A7AA544114AE47D1BB6751410AD7A3D0A6AA5441AE47E1DAB8675141B81E855BA6AA544133333373B667514166666656A8AA54417B14AE67B4675141F6285C7FA9AA54411F85EB71B1675141000000F0AAAA5441CDCCCCACAD67514133333363ACAA5441E17A143EAA6751419A999959ACAA544185EB51F8A6675141AE47E13AACAA5441295C8F12A4675141295C8F92ACAA5441C3F5281CA067514100000020AEAA5441AE47E1CA9E6751410AD7A3E0ACAA54417B14AEF79F675141295C8FF2B2AA5441C3F5285CA5675141666666A6B6AA544166666676A96751410AD7A3C0B7AA5441F6285CAFAD675141E17A14FEB4AA544166666606B467514100000040B4AA544100000060B46751410AD7A3C0B8AA54413D0AD713B76751410AD7A300B9AA5441E17A142EBA6751417B14AEA7BAAA5441713D0AB7BB675141CDCCCC5CBCAA54417B14AE97BC6751418FC2F518BEAA5441713D0AD7BC675141C3F5285CC0AA544148E17AE4BB67514166666616C2AA5441EC51B8EEB867514133333333C6AA5441AE47E13AB5675141295C8F92C9AA54417B14AE97B3675141D7A370CDCAAA5441F6285C1FB5675141A4703D1ACCAA5441A4703D2AC1675141666666A6DAAA5441D7A370DDC5675141333333D3DFAA544152B81E45C86751411F85EBA1DFAA5441CDCCCC4CCC67514185EB5108DFAA5441F6285C7FCF67514152B81E35DEAA5441F6285CDFD267514152B81E35DDAA544152B81E95D7675141CDCCCC9CDBAA5441EC51B8FEDC675141295C8F62DAAA54410AD7A370DF675141666666F6D8AA544100000000E0675141713D0A67D5AA544100000010DF675141295C8F52D3AA5441295C8F92E1675141F6285CEFD0AA54413D0AD753E4675141CDCCCC8CCEAA5441A4703D4AE7675141EC51B8EECDAA544133333363E9675141CDCCCC4CCBAA5441A4703D6AEA6751413D0AD7A3C7AA54410AD7A3B0EB6751413D0AD783C4AA5441CDCCCC9CEF67514152B81E35B7AA544185EB5168EE675141E17A145EB5AA54415C8FC2C5ED675141295C8F82B2AA5441666666C6ED6751413D0AD7F3AFAA54410AD7A3F0ED67514148E17A84AEAA54417B14AEB7EE6751418FC2F578ACAA5441000000E0EF675141E17A14EEA9AA5441D7A370DDEF67514185EB5168A6AA54413D0AD723F06751415C8FC2A59DAA54413D0AD703F067514114AE47A199AA5441CDCCCCDCEF6751410AD7A31098AA5441B81E85FBEE675141AE47E1FA95AA5441B81E851BEE6751413333339394AA5441
+</a>
+
+<b>
+01060000000100000001030000000200000051000000B81E85FBEE675141AE47E1FA95AA5441B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441005484C7EA6751413ECEA55297AA5441EB7A69E5E867514152F1BCD998AA544198EC581BE7675141821F74079AAA54410C3242F6E56751411F2DAC029BAA5441C2C3B029E4675141A8D6BCED9AAA5441465CBBDAE267514172CC52319AAA5441424BB5A0E16751412C6FC79E99AA544125C5811CDE6751418F618FA398AA54414A8BD3F0D9675141B007D24F98AA5441ECB81A14D7675141D5BE1A3699AA5441A87FEB36D5675141BCC137FD9AAA54416355D761D4675141CF4416E09BAA54415BBF5DF2D0675141595B3AEB9FAA54419DA5DFCCCD6751417C92491EA4AA5441A7AD6ED1CB675141FF9DB14EA6AA54417FAE7C47C9675141D93567BEA6AA5441A1E14A8CC46751412EE6885DA5AA5441092DA583C1675141A1CE45A9A6AA54413671F745BE67514195686A1EA7AA544190B3A650BB675141F79AC6BCA6AA5441F13CF0ECB8675141900B4F5EA6AA5441975899C8B7675141A89877D5A1AA5441E76DAE75B567514141500726A1AA54412160C8DDAC675141AA100FC3A3AA5441516D2C11A76751418504EF5BA7AA54411BF1492AA46751419CC0366BA9AA544130AEC2D1A0675141230EBEC7ABAA5441AE47E1CA9E6751410AD7A3E0ACAA54417B14AEF79F675141295C8FF2B2AA5441C3F5285CA5675141666666A6B6AA544166666676A96751410AD7A3C0B7AA5441F6285CAFAD675141E17A14FEB4AA544166666606B467514100000040B4AA544100000060B46751410AD7A3C0B8AA54413D0AD713B76751410AD7A300B9AA5441E17A142EBA6751417B14AEA7BAAA5441713D0AB7BB675141CDCCCC5CBCAA54417B14AE97BC6751418FC2F518BEAA5441713D0AD7BC675141C3F5285CC0AA544148E17AE4BB67514166666616C2AA5441EC51B8EEB867514133333333C6AA5441AE47E13AB5675141295C8F92C9AA54417B14AE97B3675141D7A370CDCAAA5441F6285C1FB5675141A4703D1ACCAA5441A4703D2AC1675141666666A6DAAA5441D7A370DDC5675141333333D3DFAA544152B81E45C86751411F85EBA1DFAA5441CDCCCC4CCC67514185EB5108DFAA5441F6285C7FCF67514152B81E35DEAA5441F6285CDFD267514152B81E35DDAA544152B81E95D7675141CDCCCC9CDBAA5441EC51B8FEDC675141295C8F62DAAA54410AD7A370DF675141666666F6D8AA54412FCA7B27E0675141133D8352D5AA544145023626DF675141E4B7D683D3AA5441AE7F1605E26751416C9E368CD0AA5441A2298D3EE46751417DC03A9FCEAA5441E87DDC2FE767514184E537F4CDAA54419BBC0C09E9675141C7C8F1BDCBAA5441B288CA7BEA675141068ED278C7AA5441BF85D00AEC67514156CAE951C3AA5441E1438FD4ED67514169D3F640BDAA54415060B572EF675141B702BADDBCAA54418B820E0EF0675141C27772BDBAAA5441CDCCCC9CEF67514152B81E35B7AA544185EB5168EE675141E17A145EB5AA54415C8FC2C5ED675141295C8F82B2AA5441666666C6ED6751413D0AD7F3AFAA54410AD7A3F0ED67514148E17A84AEAA54417B14AEB7EE6751418FC2F578ACAA544190AF31D6EF6751411C7F9E03AAAA5441E898BDDFEF675141AE26B692A9AA54410F95CADDEF675141121314E4A6AA5441D7A370DDEF67514185EB5168A6AA54413D0AD723F06751415C8FC2A59DAA54413D0AD703F067514114AE47A199AA5441CDCCCCDCEF6751410AD7A31098AA5441B81E85FBEE675141AE47E1FA95AA54410700000029F29CE6CE6751417AE54C9BB4AA544174602EB3D06751411F249AF8B2AA54417C823A27D36751413CB9D66AB1AA54415FEDFDB4D46751411B1394BEB1AA54412DF49932D56751412335A032B4AA5441787134EDD1675141B400BD91B6AA544129F29CE6CE6751417AE54C9BB4AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943963 - 1823202
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -175  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285CFF92BC50418FC2F548E536544148E17A6498BC504185EB5178E5365441A4703D1A9BBC50419A999999E536544185EB51F896BC504152B81EB5D6365441AE47E1BA8BBC50411F85EBF1D536544185EB517888BC50419A9999F9C63654411F85EB6187BC50413D0AD753C7365441E17A149E86BC5041F6285C5FC7365441295C8FC285BC50415C8FC2E5C636544185EB51C884BC5041F6285CAFC636544148E17AF483BC5041A4703DDAC6365441CDCCCC2C83BC5041C3F5284CC7365441F6285C9F82BC5041CDCCCCECC7365441E17A146E81BC504166666656C8365441EC51B87E80BC5041295C8F52C8365441A4703DEA7FBC504148E17AF4C73654417B14AE977FBC5041295C8F82C73654413D0AD7837FBC5041713D0AB7C6365441295C8F027FBC50410AD7A360C6365441E17A145E7EBC50419A999939C6365441C3F528FC7DBC504152B81E55C63654415C8FC2C57DBC5041B81E85ABC6365441A4703D9A7DBC50410AD7A330C7365441F6285C5F7DBC5041B81E856BC736544152B81E157DBC504100000040C7365441EC51B8BE7CBC5041AE47E1BAC63654419A9999397CBC504166666616C6365441AE47E1FA7BBC50415C8FC275C5365441295C8F027CBC5041E17A149EC43654418FC2F5587CBC504100000090C3365441A4703D2A7CBC5041E17A141EC3365441D7A3708D7BBC5041CDCCCCACC2365441B81E851B7BBC50411F85EB61C2365441EC51B88E7ABC5041CDCCCCDCC1365441B81E850B71BC504114AE47E1C5365441CDCCCCEC6ABC5041713D0A77C8365441B81E85FB63BC50415C8FC265CB36544185EB51086CBC5041713D0AE7D13654413D0AD76371BC50419A999939D836544152B81E9575BC504100000040E236544114AE47D177BC50417B14AE17E9365441F6285C2F7EBC5041295C8FC2E4365441B81E850B80BC5041D7A3705DE3365441F6285CAF83BC50418FC2F588E33654415C8FC2B584BC50418FC2F588E336544114AE47E185BC50411F85EBB1E33654411F85EBC186BC50410AD7A3E0E3365441B81E85AB88BC50410AD7A310E4365441666666268BBC5041CDCCCC6CE4365441F6285CFF92BC50418FC2F548E5365441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000026A4BA3366BC504168DDBF75CA36544177CF24AF65BC504183E46F99CB3654417DB4E5F265BC5041CA88CC7FCC365441B88EC05166BC5041A642F52FCD36544185EB51086CBC5041713D0AE7D13654413D0AD76371BC50419A999939D836544152B81E9575BC504100000040E236544114AE47D177BC50417B14AE17E93654413D0AD7D372BC504100000000F13654416666669672BC5041666666F6F1365441666666E66DBC5041A4703DDAF33654411F85EB316CBC5041A4703D2AF4365441333333036CBC50417B14AE770037544152B81E2571BC50415C8FC245153754413D0AD75373BC504152B81E65153754418FC2F5D874BC504148E17AA4153754416666661678BC504185EB517816375441C3F5283C7ABC50416666664617375441B81E856B7BBC50419A99997917375441A4703DCA7DBC504185EB516817375441D7A370CD7FBC504152B81E35173754413D0AD7B381BC5041A4703D9A16375441295C8FB284BC5041295C8FA2143754417B14AE0788BC5041AE47E10A123754413D0AD7A389BC5041D7A3705D10375441666666568BBC5041EC51B80E0D3754413D0AD7B38CBC504166666686093754410AD7A3608EBC50410000003005375441000000C08FBC5041B81E85AB0237544185EB519892BC504133333313FD3654418FC2F5A899BC5041EC51B87EEB365441CDCCCC1C9ABC5041C3F5284CEA365441F6285C6F9BBC5041B81E85CBE6365441A4703D1A9BBC50419A999999E536544185EB51F896BC504152B81EB5D636544164CEF09A96BC5041030BC9AED63654418939711395BC5041816137E5D6365441BA0D642E95BC504137120E96D63654411DF3AD9E92BC5041ECA09269D63654410BCA9E9D92BC5041CD3B8069D6365441483D8DA78CBC5041D4B0F901D63654411A5EB09F8CBC50417F4922E0D5365441C03FE7898CBC5041FAD72EDED5365441750194328BBC5041224CB2BCCF365441C204E6EC89BC50419F83F842CA36544122DBB48C89BC504185996947C8365441CCDC12AB7EBC50415CA129BFC936544167C282E779BC5041C9435321C336544135C86D6379BC50417FCC335BC2365441B81E850B71BC504114AE47E1C5365441CDCCCCEC6ABC5041713D0A77C836544126A4BA3366BC504168DDBF75CA365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943963 - 3473755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -175  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285CFF92BC50418FC2F548E536544148E17A6498BC504185EB5178E5365441A4703D1A9BBC50419A999999E536544185EB51F896BC504152B81EB5D6365441AE47E1BA8BBC50411F85EBF1D536544185EB517888BC50419A9999F9C63654411F85EB6187BC50413D0AD753C7365441E17A149E86BC5041F6285C5FC7365441295C8FC285BC50415C8FC2E5C636544185EB51C884BC5041F6285CAFC636544148E17AF483BC5041A4703DDAC6365441CDCCCC2C83BC5041C3F5284CC7365441F6285C9F82BC5041CDCCCCECC7365441E17A146E81BC504166666656C8365441EC51B87E80BC5041295C8F52C8365441A4703DEA7FBC504148E17AF4C73654417B14AE977FBC5041295C8F82C73654413D0AD7837FBC5041713D0AB7C6365441295C8F027FBC50410AD7A360C6365441E17A145E7EBC50419A999939C6365441C3F528FC7DBC504152B81E55C63654415C8FC2C57DBC5041B81E85ABC6365441A4703D9A7DBC50410AD7A330C7365441F6285C5F7DBC5041B81E856BC736544152B81E157DBC504100000040C7365441EC51B8BE7CBC5041AE47E1BAC63654419A9999397CBC504166666616C6365441AE47E1FA7BBC50415C8FC275C5365441295C8F027CBC5041E17A149EC43654418FC2F5587CBC504100000090C3365441A4703D2A7CBC5041E17A141EC3365441D7A3708D7BBC5041CDCCCCACC2365441B81E851B7BBC50411F85EB61C2365441EC51B88E7ABC5041CDCCCCDCC1365441B81E850B71BC504114AE47E1C5365441CDCCCCEC6ABC5041713D0A77C8365441B81E85FB63BC50415C8FC265CB36544185EB51086CBC5041713D0AE7D13654413D0AD76371BC50419A999939D836544152B81E9575BC504100000040E236544114AE47D177BC50417B14AE17E9365441F6285C2F7EBC5041295C8FC2E4365441B81E850B80BC5041D7A3705DE3365441F6285CAF83BC50418FC2F588E33654415C8FC2B584BC50418FC2F588E336544114AE47E185BC50411F85EBB1E33654411F85EBC186BC50410AD7A3E0E3365441B81E85AB88BC50410AD7A310E4365441666666268BBC5041CDCCCC6CE4365441F6285CFF92BC50418FC2F548E5365441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000026A4BA3366BC504168DDBF75CA36544177CF24AF65BC504183E46F99CB3654417DB4E5F265BC5041CA88CC7FCC365441B88EC05166BC5041A642F52FCD36544185EB51086CBC5041713D0AE7D13654413D0AD76371BC50419A999939D836544152B81E9575BC504100000040E236544114AE47D177BC50417B14AE17E93654413D0AD7D372BC504100000000F13654416666669672BC5041666666F6F1365441666666E66DBC5041A4703DDAF33654411F85EB316CBC5041A4703D2AF4365441333333036CBC50417B14AE770037544152B81E2571BC50415C8FC245153754413D0AD75373BC504152B81E65153754418FC2F5D874BC504148E17AA4153754416666661678BC504185EB517816375441C3F5283C7ABC50416666664617375441B81E856B7BBC50419A99997917375441A4703DCA7DBC504185EB516817375441D7A370CD7FBC504152B81E35173754413D0AD7B381BC5041A4703D9A16375441295C8FB284BC5041295C8FA2143754417B14AE0788BC5041AE47E10A123754413D0AD7A389BC5041D7A3705D10375441666666568BBC5041EC51B80E0D3754413D0AD7B38CBC504166666686093754410AD7A3608EBC50410000003005375441000000C08FBC5041B81E85AB0237544185EB519892BC504133333313FD3654418FC2F5A899BC5041EC51B87EEB365441CDCCCC1C9ABC5041C3F5284CEA365441F6285C6F9BBC5041B81E85CBE6365441A4703D1A9BBC50419A999999E536544185EB51F896BC504152B81EB5D636544164CEF09A96BC5041030BC9AED63654418939711395BC5041816137E5D6365441BA0D642E95BC504137120E96D63654411DF3AD9E92BC5041ECA09269D63654410BCA9E9D92BC5041CD3B8069D6365441483D8DA78CBC5041D4B0F901D63654411A5EB09F8CBC50417F4922E0D5365441C03FE7898CBC5041FAD72EDED5365441750194328BBC5041224CB2BCCF365441C204E6EC89BC50419F83F842CA36544122DBB48C89BC504185996947C8365441CCDC12AB7EBC50415CA129BFC936544167C282E779BC5041C9435321C336544135C86D6379BC50417FCC335BC2365441B81E850B71BC504114AE47E1C5365441CDCCCCEC6ABC5041713D0A77C836544126A4BA3366BC504168DDBF75CA365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>161756 - 978070
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000400000005C8FC2C5304851417B14AEF76C4B5441666666B627485141CDCCCC2C7D4B544185EB51A82048514114AE47018A4B5441C3F5289C1C485141E17A145E884B5441666666C61B4851413D0AD793884B54419A9999691648514148E17AF4914B5441C3F528EC13485141A4703D0A914B54418FC2F558124851411F85EBF1904B5441295C8FD208485141713D0A97834B54413D0AD703FD475141F6285C0FA24B5441333333B3FF475141AE47E1FAA24B54419A99995906485141A4703D2AA54B5441E17A14CE09485141EC51B83EA64B544114AE47910A485141F6285CFFA54B54410AD7A3400B48514166666636A54B5441000000900C48514152B81EA5A14B54419A9999A90C485141C3F528CCA04B544152B81E950C485141E17A14AE9E4B54418FC2F5C80C485141333333839D4B5441AE47E1CA0D485141B81E854B9B4B5441C3F5283C0E485141EC51B8AE994B5441A4703D7A0E4851410AD7A340984B5441EC51B88E0E485141713D0A37964B54415C8FC2050F485141333333D3944B5441EC51B80E1148514148E17A34924B5441C3F528FC11485141EC51B89E914B5441AE47E14A1348514133333383914B544167A6C63D15485141ADB8368A924B5441333333231B4851419A999989944B5441AE47E1FA1A485141D7A3705D964B5441AE47E1CA1A48514114AE4721984B5441333333E31A48514133333323994B5441C3F5289C1B485141D7A3704D9A4B544185EB51581D485141F6285C0F9B4B54415C8FC225204851418FC2F5E89B4B54418FC2F5B8214851418FC2F5E89B4B544166666646244851411F85EB419C4B5441AE47E13A264851411F85EB519C4B5441E17A14CE274851411F85EB419C4B54411F85EBE1294851410AD7A3D09B4B5441D7A3706D2B485141F6285C0F9B4B5441000000B02C485141D7A3702D9A4B54415C8FC2852D485141295C8F42994B544114AE47112F48514148E17A64974B5441295C8FD230485141713D0AA7954B5441C3F5280C33485141B81E85CB934B54416666660637485141EC51B82E914B544152B81E753A485141AE47E1FA8E4B54419A9999E93D485141B81E856B8C4B5441713D0AA7404851417B14AE77894B54410706DE6D3F485141000C4F49884B54411CC187763C485141429EAF02874B544105F1EFEB3B485141A44E57AE864B5441CB1B612B3B485141998A339B864B5441295C8F123848514185EB5128864B544152B81E253B4851411F85EB71784B5441719B6DA34648514158C6D31C7B4B5441C10AC8B9494851414691DA08704B5441719B6DA34648514166D3E7F16E4B5441D061955E4348514166D3E7F16E4B54418F93C1BC3F485141F6C65CDA6F4B54417EA881783A485141F62180F26C4B54410DAD60A93248514115BFB0F3684B54415C8FC2C5304851417B14AEF76C4B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D0AD7533F4851410AD7A3903D4B54417B14AE77334851413D0AD703384B5441E17A14CE3048514152B81E75364B5441000000C02B485141666666563B4B54417B14AEF73D4851417B14AE274A4B544130DADFAE3A485141047AB0E0524B54419176CE46374851419EF90DDF5B4B54416904194B334851413DA73563664B5441A9568F6932485141B20C8EFB684B5441A69CFE2C37485141C1B0EF426B4B5441A70CC3D03C485141C609AD3D6E4B54416B3A7DED3F48514140DD2DCE6F4B54413EB3AA0343485141CEF0831A6F4B544116C3DFC846485141AD2C1FFF6E4B544134FFD4BC494851419B1E51F96F4B5441F69AFB964A4851412247EE8B6C4B5441F83E767C4B485141BFB9FBF0684B54412CA53DD64B485141AF38DB7A674B5441AF3FB0054C485141000B869B664B5441D8B4F47E4A485141515755F2654B5441D6B99F92484851413E228042654B54414107A0EC46485141C7BC6A9A654B5441AD54A04645485141D2D47FE8664B54418F07B64843485141BF9FAA38664B544171BACB4A41485141EB2BC00D654B5441BB93CB1D42485141DE1856D3614B544158638B254348514162BD96525E4B5441E1FD757D4348514105AFC1CF5C4B5441F4324B2D44485141427557685A4B544189E54AD3454851415DC7EC795A4B54414402F5D848485141395897065B4B5441073C5F404B485141291E17435C4B5441238EF4514B485141892741B25F4B5441E1D1B4E0494851415779C067634B5441A110CA5B4A485141D8F6EA5D644B5441DBAF496B4C4851417DE36AC7644B5441787F09734D485141414996CB604B54412589493E4D485141FC91016E5D4B5441EC51B81E4D485141A4703DFA584B54410AD7A3004C48514100000020534B544114AE47B14B485141EC51B87E514B5441333333134B485141295C8FA24D4B544114AE47F14A485141A4703D0A494B5441F6285C6F4B48514148E17AD4424B54413D0AD7533F4851410AD7A3903D4B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897377 - 1166563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+01060000000100000001030000000100000049000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA654416666667687725141C3F528BC2EA6544148E17AA4877251418FC2F52832A65441AE47E10A8772514148E17A8438A654418FC2F51882725141F6285CCF37A65441B81E85EB7E7251413D0AD7C337A65441E17A143E7E725141CDCCCCAC35A654411F85EB1174725141E17A14DE39A65441000000B070725141A4703D9A3BA65441B81E856B70725141666666C63AA65441C3F5284C6D725141C3F528AC3BA654410AD7A3F0707251410000003045A654410AD7A38070725141EC51B85E45A654417B14AE4772725141A4703DFA48A654419A9999198A725141713D0A473EA65441A4703DCA89725141E17A14DE3CA654419A9999A996725141713D0A3736A65441713D0AA79772514152B81E353AA654419A999979987251416666664643A65441AE47E1FA9E725141A4703D2A43A6544185EB51789E7251417B14AEB72EA65441B81E858B9C7251415C8FC2A52EA654411F85EB21997251417B14AE772FA654418FC2F5D898725141666666662DA65441CDCCCCEC97725141C3F528BC2BA65441E17A148E987251417B14AEF72AA6544114AE47C19D725141A4703D9A2AA65441E17A143EA2725141333333332BA654419A9999A9A67251415C8FC2052CA654410AD7A330AB7251410AD7A3102DA654417B14AEF7AD72514152B81EB529A654413D0AD703AD7251419A99990929A65441F6285CAFAA725141333333E328A654417B14AE97A67251418FC2F56827A654410AD7A3B0A4725141D7A3700D27A65441D7A3701DA0725141E17A14EE25A65441AE47E14AA07251419A99993925A65441A4703D1AA5725141666666461EA6544152B81EF5A872514114AE47411EA65441666666A6AB725141333333A31FA65441CDCCCC4CAB725141F6285C1F1EA654418FC2F5F8AA725141EC51B8EE1CA65441E17A140EAB7251413D0AD7931BA65441295C8F42AB7251417B14AE971AA65441EC51B83EAC72514114AE479119A654418FC2F598AD725141EC51B8DE18A6544133333313AF72514114AE472118A65441CDCCCCCCB07251418FC2F59817A654417B14AE57B3725141713D0A1718A65441713D0A27B2725141713D0AA716A6544148E17AB4AE725141295C8F6212A6544152B81ED5AB725141B81E85DB0EA65441EC51B8CEAA725141333333C30CA654410AD7A350AA72514185EB51A80AA654417B14AE07A3725141EC51B8DE09A65441295C8F029F72514185EB513809A654417B14AEF794725141A4703DDA05A654410AD7A37093725141F6285C2F06A6544152B81E9592725141D7A3705D07A65441E17A14BE927251413D0AD73308A65441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA654416666667687725141C3F528BC2EA6544148E17AA4877251418FC2F52832A65441AE47E10A8772514148E17A8438A654418FC2F51882725141F6285CCF37A65441B81E85EB7E7251413D0AD7C337A65441E17A143E7E725141CDCCCCAC35A654411C52488179725141719FA4A037A6544110AC70AE787251417D2D8AF737A654411D5F332278725141FDE4A63C38A65441E64FB256777251412363EEA138A65441755C351175725141463DEED639A65441A4703DF273725141448B6C6F3AA654417438AE5F727251417A115ABE3AA65441000000B070725141A4703D9A3BA65441241A148770725141C312D2193BA654417F669A586D7251418F930ECB3BA654410AD7A3F0707251410000003045A654410AD7A38070725141EC51B85E45A654417B14AE4772725141A4703DFA48A654419A9999198A725141713D0A473EA65441A4703DCA89725141E17A14DE3CA654419A9999A996725141713D0A3736A65441713D0AA79772514152B81E353AA654419A999979987251416666664643A65441AE47E1FA9E725141A4703D2A43A6544185EB51789E7251417B14AEB72EA65441B81E858B9C7251415C8FC2A52EA654411F85EB21997251417B14AE772FA654418FC2F5D898725141666666662DA65441CDCCCCEC97725141C3F528BC2BA65441E17A148E987251417B14AEF72AA6544114AE47C19D725141A4703D9A2AA65441E17A143EA2725141333333332BA654419A9999A9A67251415C8FC2052CA654410AD7A330AB7251410AD7A3102DA654417B14AEF7AD72514152B81EB529A654413D0AD703AD7251419A99990929A65441F6285CAFAA725141333333E328A654417B14AE97A67251418FC2F56827A654410AD7A3B0A4725141D7A3700D27A65441D7A3701DA0725141E17A14EE25A65441AE47E14AA07251419A99993925A65441A4703D1AA5725141666666461EA6544152B81EF5A872514114AE47411EA65441666666A6AB725141333333A31FA65441CDCCCC4CAB725141F6285C1F1EA654418FC2F5F8AA725141EC51B8EE1CA65441E17A140EAB7251413D0AD7931BA65441295C8F42AB7251417B14AE971AA65441EC51B83EAC72514114AE479119A654418FC2F598AD725141EC51B8DE18A6544133333313AF72514114AE472118A65441CDCCCCCCB07251418FC2F59817A654417B14AE57B3725141713D0A1718A65441713D0A27B2725141713D0AA716A6544148E17AB4AE725141295C8F6212A6544152B81ED5AB725141B81E85DB0EA65441EC51B8CEAA725141333333C30CA654410AD7A350AA72514185EB51A80AA654417B14AE07A3725141EC51B8DE09A65441295C8F029F72514185EB513809A654417B14AEF794725141A4703DDA05A654410AD7A37093725141F6285C2F06A6544152B81E9592725141D7A3705D07A65441E17A14BE927251413D0AD73308A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897377 - 3669980
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+01060000000100000001030000000100000049000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA654416666667687725141C3F528BC2EA6544148E17AA4877251418FC2F52832A65441AE47E10A8772514148E17A8438A654418FC2F51882725141F6285CCF37A65441B81E85EB7E7251413D0AD7C337A65441E17A143E7E725141CDCCCCAC35A654411F85EB1174725141E17A14DE39A65441000000B070725141A4703D9A3BA65441B81E856B70725141666666C63AA65441C3F5284C6D725141C3F528AC3BA654410AD7A3F0707251410000003045A654410AD7A38070725141EC51B85E45A654417B14AE4772725141A4703DFA48A654419A9999198A725141713D0A473EA65441A4703DCA89725141E17A14DE3CA654419A9999A996725141713D0A3736A65441713D0AA79772514152B81E353AA654419A999979987251416666664643A65441AE47E1FA9E725141A4703D2A43A6544185EB51789E7251417B14AEB72EA65441B81E858B9C7251415C8FC2A52EA654411F85EB21997251417B14AE772FA654418FC2F5D898725141666666662DA65441CDCCCCEC97725141C3F528BC2BA65441E17A148E987251417B14AEF72AA6544114AE47C19D725141A4703D9A2AA65441E17A143EA2725141333333332BA654419A9999A9A67251415C8FC2052CA654410AD7A330AB7251410AD7A3102DA654417B14AEF7AD72514152B81EB529A654413D0AD703AD7251419A99990929A65441F6285CAFAA725141333333E328A654417B14AE97A67251418FC2F56827A654410AD7A3B0A4725141D7A3700D27A65441D7A3701DA0725141E17A14EE25A65441AE47E14AA07251419A99993925A65441A4703D1AA5725141666666461EA6544152B81EF5A872514114AE47411EA65441666666A6AB725141333333A31FA65441CDCCCC4CAB725141F6285C1F1EA654418FC2F5F8AA725141EC51B8EE1CA65441E17A140EAB7251413D0AD7931BA65441295C8F42AB7251417B14AE971AA65441EC51B83EAC72514114AE479119A654418FC2F598AD725141EC51B8DE18A6544133333313AF72514114AE472118A65441CDCCCCCCB07251418FC2F59817A654417B14AE57B3725141713D0A1718A65441713D0A27B2725141713D0AA716A6544148E17AB4AE725141295C8F6212A6544152B81ED5AB725141B81E85DB0EA65441EC51B8CEAA725141333333C30CA654410AD7A350AA72514185EB51A80AA654417B14AE07A3725141EC51B8DE09A65441295C8F029F72514185EB513809A654417B14AEF794725141A4703DDA05A654410AD7A37093725141F6285C2F06A6544152B81E9592725141D7A3705D07A65441E17A14BE927251413D0AD73308A65441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA654416666667687725141C3F528BC2EA6544148E17AA4877251418FC2F52832A65441AE47E10A8772514148E17A8438A654418FC2F51882725141F6285CCF37A65441B81E85EB7E7251413D0AD7C337A65441E17A143E7E725141CDCCCCAC35A654411C52488179725141719FA4A037A6544110AC70AE787251417D2D8AF737A654411D5F332278725141FDE4A63C38A65441E64FB256777251412363EEA138A65441755C351175725141463DEED639A65441A4703DF273725141448B6C6F3AA654417438AE5F727251417A115ABE3AA65441000000B070725141A4703D9A3BA65441241A148770725141C312D2193BA654417F669A586D7251418F930ECB3BA654410AD7A3F0707251410000003045A654410AD7A38070725141EC51B85E45A654417B14AE4772725141A4703DFA48A654419A9999198A725141713D0A473EA65441A4703DCA89725141E17A14DE3CA654419A9999A996725141713D0A3736A65441713D0AA79772514152B81E353AA654419A999979987251416666664643A65441AE47E1FA9E725141A4703D2A43A6544185EB51789E7251417B14AEB72EA65441B81E858B9C7251415C8FC2A52EA654411F85EB21997251417B14AE772FA654418FC2F5D898725141666666662DA65441CDCCCCEC97725141C3F528BC2BA65441E17A148E987251417B14AEF72AA6544114AE47C19D725141A4703D9A2AA65441E17A143EA2725141333333332BA654419A9999A9A67251415C8FC2052CA654410AD7A330AB7251410AD7A3102DA654417B14AEF7AD72514152B81EB529A654413D0AD703AD7251419A99990929A65441F6285CAFAA725141333333E328A654417B14AE97A67251418FC2F56827A654410AD7A3B0A4725141D7A3700D27A65441D7A3701DA0725141E17A14EE25A65441AE47E14AA07251419A99993925A65441A4703D1AA5725141666666461EA6544152B81EF5A872514114AE47411EA65441666666A6AB725141333333A31FA65441CDCCCC4CAB725141F6285C1F1EA654418FC2F5F8AA725141EC51B8EE1CA65441E17A140EAB7251413D0AD7931BA65441295C8F42AB7251417B14AE971AA65441EC51B83EAC72514114AE479119A654418FC2F598AD725141EC51B8DE18A6544133333313AF72514114AE472118A65441CDCCCCCCB07251418FC2F59817A654417B14AE57B3725141713D0A1718A65441713D0A27B2725141713D0AA716A6544148E17AB4AE725141295C8F6212A6544152B81ED5AB725141B81E85DB0EA65441EC51B8CEAA725141333333C30CA654410AD7A350AA72514185EB51A80AA654417B14AE07A3725141EC51B8DE09A65441295C8F029F72514185EB513809A654417B14AEF794725141A4703DDA05A654410AD7A37093725141F6285C2F06A6544152B81E9592725141D7A3705D07A65441E17A14BE927251413D0AD73308A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402670 - 2906034
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -69  </desc>
+<a>
+0106000000010000000103000000010000001600000014AE47D13B265141D7A3705D70D35441B81E853B362651416666668670D354413333334339265141AE47E12A7FD35441A4703DDA3B2651410AD7A3B08BD35441A4703D2A4926514114AE473189D3544114AE47814E2651413D0AD7E384D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354411F85EBF15126514152B81E758DD35441333333936C2651413D0AD7937FD354410000002068265141D7A3708D76D3544185EB511866265141713D0AA771D35441295C8FB25B265141666666F674D3544114AE4761562651411F85EBA176D35441713D0A875326514114AE47D177D354411F85EBF151265141333333637DD35441E17A149E4D265141EC51B82E83D35441295C8F824B26514148E17AC46DD354415C8FC2354B2651410AD7A3C06CD354413D0AD7734A2651417B14AE476CD3544185EB51083F2651415C8FC2356FD3544114AE47D13B265141D7A3705D70D35441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D2A4926514114AE473189D35441366F81124A2651411305E1B588D354419FD214744A265141C1AB8E7588D35441D1D3FE1D4B2651415821F90488D354416F32278E4C2651416078917286D354413CE8BEF54D2651419EC7E6EC87D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354410A95C46350265141CB2EC1DA8DD3544131D85C13512651412212FE398ED3544118463E9F51265141FC2341198ED354414C90F923522651412B41BAD68DD354411C9441A5532651415EFF60918CD35441C360E980672651412690873882D354416FC931B768265141CC89881982D354411A285A276A265141813F49F781D354416A0EDF566C26514102726DBE81D35441F1EDA1956B26514191ED3E2780D35441867267756B265141F24175DA7FD35441428D27DA6A2651413F1B8F687ED35441968AFF7069265141AC9C100C7BD354416FE102DC682651418F5716A979D35441F97048D36726514171E7573277D3544196031F94672651416A7CDA9B76D3544133710A6F67265141DD66814376D3544116B840E96626514150DBAF7674D3544185EB511866265141713D0AA771D35441295C8FB25B265141666666F674D3544114AE4761562651411F85EBA176D35441713D0A875326514114AE47D177D354411F85EBF151265141333333637DD35441E17A149E4D265141EC51B82E83D35441295C8F824B26514148E17AC46DD354415C8FC2354B2651410AD7A3C06CD354413D0AD7734A2651417B14AE476CD3544185EB51083F2651415C8FC2356FD3544114AE47D13B265141D7A3705D70D35441B81E853B362651416666668670D354413333334339265141AE47E12A7FD35441A4703DDA3B2651410AD7A3B08BD35441A4703D2A4926514114AE473189D35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402670 - 3568670
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -69  </desc>
+<a>
+0106000000010000000103000000010000001600000014AE47D13B265141D7A3705D70D35441B81E853B362651416666668670D354413333334339265141AE47E12A7FD35441A4703DDA3B2651410AD7A3B08BD35441A4703D2A4926514114AE473189D3544114AE47814E2651413D0AD7E384D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354411F85EBF15126514152B81E758DD35441333333936C2651413D0AD7937FD354410000002068265141D7A3708D76D3544185EB511866265141713D0AA771D35441295C8FB25B265141666666F674D3544114AE4761562651411F85EBA176D35441713D0A875326514114AE47D177D354411F85EBF151265141333333637DD35441E17A149E4D265141EC51B82E83D35441295C8F824B26514148E17AC46DD354415C8FC2354B2651410AD7A3C06CD354413D0AD7734A2651417B14AE476CD3544185EB51083F2651415C8FC2356FD3544114AE47D13B265141D7A3705D70D35441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D2A4926514114AE473189D35441366F81124A2651411305E1B588D354419FD214744A265141C1AB8E7588D35441D1D3FE1D4B2651415821F90488D354416F32278E4C2651416078917286D354413CE8BEF54D2651419EC7E6EC87D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354410A95C46350265141CB2EC1DA8DD3544131D85C13512651412212FE398ED3544118463E9F51265141FC2341198ED354414C90F923522651412B41BAD68DD354411C9441A5532651415EFF60918CD35441C360E980672651412690873882D354416FC931B768265141CC89881982D354411A285A276A265141813F49F781D354416A0EDF566C26514102726DBE81D35441F1EDA1956B26514191ED3E2780D35441867267756B265141F24175DA7FD35441428D27DA6A2651413F1B8F687ED35441968AFF7069265141AC9C100C7BD354416FE102DC682651418F5716A979D35441F97048D36726514171E7573277D3544196031F94672651416A7CDA9B76D3544133710A6F67265141DD66814376D3544116B840E96626514150DBAF7674D3544185EB511866265141713D0AA771D35441295C8FB25B265141666666F674D3544114AE4761562651411F85EBA176D35441713D0A875326514114AE47D177D354411F85EBF151265141333333637DD35441E17A149E4D265141EC51B82E83D35441295C8F824B26514148E17AC46DD354415C8FC2354B2651410AD7A3C06CD354413D0AD7734A2651417B14AE476CD3544185EB51083F2651415C8FC2356FD3544114AE47D13B265141D7A3705D70D35441B81E853B362651416666668670D354413333334339265141AE47E12A7FD35441A4703DDA3B2651410AD7A3B08BD35441A4703D2A4926514114AE473189D35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406308 - 284805
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -276  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A14BED4195141AE47E17A1FD85441C3F5286CCD195141A4703D4A19D85441A4703D7ACC195141EC51B81E18D8544133333363C8195141F6285C0F13D854417B14AE87B91951415C8FC2F51FD8544152B81ED5B41951410000006024D854415C8FC2D5B1195141A4703D9A27D85441AE47E13AAF19514152B81E752BD854418FC2F588AD19514185EB51C82ED854410AD7A3F0AC195141CDCCCCEC2FD854419A999969AB19514185EB514833D8544152B81ED5AF19514152B81E6538D8544185EB5118B21951418FC2F5483BD85441E17A147EBC1951418FC2F5D846D8544133333313BE195141E17A149E47D854419A999929C6195141713D0AD73ED85441D7A370ADC71951411F85EBB13CD8544114AE4741CE1951415C8FC26533D8544100000070D2195141A4703D8A2CD854415C8FC245D51951413333332323D85441E17A14BED4195141AE47E17A1FD85441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000E36D296CCD1951413AD63D4A19D85441354DABE3CC195141D05640A118D854414A613D7ACC195141DD7BB81E18D85441EDE33263C8195141CA6D5C0F13D85441D63A7D64C7195141FA2283EC13D854419A80FC72BA1951410FA674291FD854412DDDAE87B91951412C07C2F51FD854416DAF0574B81951417E3E3A2521D85441D92064D6AF195141794EB24B2CD854415EB29A69AB195141D2C6514833D85441BC44D0FCAD1951411FB8D04236D85441F1258A3DAE195141F7ABAE8D36D8544152B81ED5AF19514152B81E6538D85441567A3313BE195141AA2D149E47D8544131DCC545BE1951416C40316747D8544163B14F99BF195141AB85AFF645D8544134BF9829C6195141082209D73ED85441DEB76FADC7195141BE0CEBB13CD854416F90D2B0CC195141C8ADD19B35D8544114AE4741CE1951415C8FC26533D854413E43D582CF195141A4268D5631D854413487FF6FD2195141CDFD3C8A2CD85441A81C07A8D4195141F3ABB5D928D85441662AEB5DD61951411DFD920126D85441C682E563D6195141E441A3F725D85441001C7BA4D71951415CA390E223D85441799A63A5D7195141522D41E123D85441E61FA0A5D9195141DE52B30121D85441A50F232EDA19514140B5AC3D20D85441A349B73EDD195141F5C709D71BD8544123B4D706E01951414CEFC40019D8544108640604E1195141E6898EFE17D85441818FC91EE0195141EEC9072D17D85441DFAF3829DF195141940DD44E16D8544156FD82FCDD195141728DAC3F15D85441F2CEA343DC195141357EFE3617D85441E17A14BED4195141AE47E17A1FD85441E36D296CCD1951413AD63D4A19D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406836 - 408461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -64  </desc>
+<a>
+010600000001000000010300000002000000510000005C8FC2054DA8504133333323904E5541000000C03AA85041AE47E15A814E5541D7A3704D35A8504133333313824E5541C3F5283C2DA850413D0AD723834E554114AE47712BA850410AD7A360834E55419A99998923A850415C8FC2D5844E5541295C8F8222A85041295C8F02864E5541000000A01DA8504133333343884E55415C8FC2551AA8504133333343884E5541295C8F0216A85041CDCCCC3C8A4E5541E17A142E15A85041E17A14CE8A4E55417B14AE9717A85041A4703DBA8D4E5541F6285C3F1DA850419A999949914E5541C3F528BC23A850415C8FC265974E554185EB518829A850418FC2F5589B4E55411F85EB312DA85041B81E857B9D4E5541AE47E12A2DA8504114AE47C19E4E5541AE47E17A35A85041000000B0A44E5541CDCCCC5C3CA850419A999999A84E55419A9999A943A850411F85EB31AD4E55413333332346A85041C3F528ECAC4E5541AE47E17A45A8504133333353AB4E554148E17A744CA85041AE47E1CAAE4E554152B81E754DA8504166666646AD4E55413333339345A850410AD7A390A74E55410000007041A85041713D0A37A54E554152B81E753CA8504148E17AA4A14E554114AE47D136A85041A4703D5A9E4E5541E17A14EE2FA85041333333D3994E55419A9999E92BA85041D7A3701D974E5541F6285C6F28A850413D0AD733944E554148E17AC424A8504114AE4731914E5541295C8FF221A85041000000C08E4E554185EB51481EA85041E17A14EE8B4E5541B81E85FB1CA85041D7A370DD894E55413D0AD74323A85041AE47E10A874E55410000003029A85041666666F68C4E5541EC51B88E2EA85041295C8FC2914E5541713D0AB733A8504148E17A84954E5541333333A337A85041E17A14DE974E5541EC51B8BE3AA850413D0AD713994E5541D7A370ED3CA850419A9999A99C4E55419A99990948A85041713D0A47A44E55411F85EBA150A850410AD7A3A0AA4E55413D0AD77353A85041713D0A47A84E5541A4703D7A50A850417B14AEC7A54E5541295C8FC24DA850418FC2F578A34E5541D7A3700D49A85041333333939F4E55410AD7A36042A850418FC2F5B89B4E5541666666563EA85041EC51B8FE984E55419A99994937A85041C3F528DC944E5541F6285C8F34A85041295C8F82924E5541B81E857B2FA8504185EB51388E4E554148E17A1430A85041A4703D6A8D4E55418FC2F56833A8504152B81E95904E55418FC2F5D842A85041000000509A4E5541CDCCCCDC49A85041A4703DBA9E4E5541C3F528DC4EA85041713D0A57A14E55419A9999A954A8504148E17A44A74E55419A9999C958A85041333333D3A34E5541D7A3706D54A85041B81E85AB9F4E554185EB51484DA85041713D0AA7994E5541D7A370AD48A850415C8FC205974E554114AE472143A85041295C8FB2924E55417B14AE6740A8504114AE4701914E5541CDCCCC5C3CA850417B14AEA78E4E55410AD7A35033A850417B14AE47884E5541D7A370BD31A8504133333383874E5541AE47E19A2DA850419A999959854E5541AE47E1CA2DA850418FC2F568844E5541000000B035A8504100000000834E55419A9999B93DA8504114AE4751894E554148E17A443CA8504152B81E558A4E5541CDCCCC8C3CA850415C8FC2A58B4E5541F6285C1F40A85041666666C68C4E55418FC2F5D842A85041F6285C5F8E4E55410AD7A3604DA8504152B81E15964E5541CDCCCC7C53A850410AD7A3A09B4E5541E17A148E5AA85041AE47E15AA24E5541AE47E1FA5EA85041A4703DAA9E4E55415C8FC2054DA8504133333323904E5541090000000AD7A38041A8504114AE47F1884E5541A4703DAA41A85041E17A14DE894E55419A9999F93FA850415C8FC2B5884E5541295C8FB23BA85041713D0A97854E55410000001039A850410AD7A340834E55411F85EB313AA8504152B81E35834E5541AE47E1DA3CA850410AD7A320854E55413D0AD7533FA85041295C8FE2864E55410AD7A38041A8504114AE47F1884E5541
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E4FFFFBF3AA85041B247E15A814E5541D7A3704D35A8504133333313824E5541851E811933A85041C352A55D824E5541DB4A48712BA8504144C2A360834E55419E98998923A850417D90C2D5844E55417F6ADDAA22A850411AA88C64864E55419D461A7427A850418D0D19B98A4E55411CEA79F92EA85041C157F4E6914E5541FB8A5E8833A85041F5B2F334954E5541F37C4F1136A85041040E4EED964E5541E88284F336A8504114CCD374974E554159E8D8CC39A850411F0EF382984E55410859F7EF39A85041518755C3984E5541EC51B8BE3AA850413D0AD713994E554129AD607F3CA85041D36ECFF49B4E5541AB59CCF14CA85041C754B28DA74E5541690D509750A85041DB562D84AA4E55418641B40F58A85041B3AB566EA44E5541C916F12058A8504104F6F35FA44E5541FE6EE23258A850412E9BFA50A44E5541A8E98C6055A850413D9EB3F1A04E5541A9A12C2951A850417ECC032F9D4E5541F5E21B7D4CA85041B52B1FA0984E55418BAD5A5C47A850410B0C788C954E5541E345531140A85041F6FE6F8F914E55417A54FC3A39A85041CD2233C68C4E5541BB62A56432A850411964221A884E5541463AEC4031A850410E518303894E55413C5EAF772CA85041AFCDCA91844E5541F1559D672EA850411A1CC2E2834E5541FBB09CB531A85041D9C23D8B834E5541854F064E33A85041FA87E550834E554166E4FE3435A8504136FB6ACA834E554138C6DD7936A85041E549FA92844E55418D7E30553DA8504158DAD28E884E554163AFFB883CA85041F883C92D8B4E5541A278993B42A85041F7374DD38E4E55415AA5FCC747A850417709254B924E554185FA86274BA85041EF5A0570944E55410677A7D34FA8504157BBC933984E55416A92F3BA52A85041489D02C89A4E554108DFFF5954A850417E91ABF49C4E5541FA0C26FE59A85041C0D595D2A24E5541E17A148E5AA85041AE47E15AA24E55416047E1FA5EA8504165703DAA9E4E55414A654C6257A85041E9121685984E5541D56F6CD954A850410C962678964E5541FC8EC2054DA8504149333323904E5541E4FFFFBF3AA85041B247E15A814E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408004 - 3010237
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000100000008000000000000704615514114AE47111EEA54411F85EBE149155141E17A14FE1DEA5441295C8F124A155141C3F5286C1CEA54410AD7A34041155141EC51B87E15EA5441000000B040155141295C8F721CEA5441295C8F424015514148E17AB421EA54413D0AD7C345155141666666D621EA5441000000704615514114AE47111EEA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BD342643A1551412C55D2781CEA54410D96BF873C155141B9D2B1761CEA54416D9C83A5401551416345726D1CEA54410F91BE4540155141C344518D21EA5441B36CD60F4815514111B9E3DC21EA5441BD45A80E49155141DC99C61E1CEA5441081DA2FE451551410C304C0D19EA54410521E43E41155141F38A3D9415EA5441F8D8F1363F155141157C83C114EA54413E1FF8453E1551419860919B14EA5441F6192BBF3C155141004D068C14EA5441545517493B155141BF0B7E8014EA544191937F483A15514163FD947814EA5441554978403A1551418FD75E581AEA5441CBBC7F483A1551410808FA6D1CEA54418BD342643A1551412C55D2781CEA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408004 - 3827248
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000100000008000000000000704615514114AE47111EEA54411F85EBE149155141E17A14FE1DEA5441295C8F124A155141C3F5286C1CEA54410AD7A34041155141EC51B87E15EA5441000000B040155141295C8F721CEA5441295C8F424015514148E17AB421EA54413D0AD7C345155141666666D621EA5441000000704615514114AE47111EEA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BD342643A1551412C55D2781CEA54410D96BF873C155141B9D2B1761CEA54416D9C83A5401551416345726D1CEA54410F91BE4540155141C344518D21EA5441B36CD60F4815514111B9E3DC21EA5441BD45A80E49155141DC99C61E1CEA5441081DA2FE451551410C304C0D19EA54410521E43E41155141F38A3D9415EA5441F8D8F1363F155141157C83C114EA54413E1FF8453E1551419860919B14EA5441F6192BBF3C155141004D068C14EA5441545517493B155141BF0B7E8014EA544191937F483A15514163FD947814EA5441554978403A1551418FD75E581AEA5441CBBC7F483A1551410808FA6D1CEA54418BD342643A1551412C55D2781CEA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408453 - 2957276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA54419A9999C98B155141713D0AC708EA54417B14AE178E15514114AE479104EA544152B81EA58F155141000000A001EA5441A4703DAA901551418FC2F578FFE954417B14AE979115514152B81E75FDE954411F85EB6191155141B81E85EBFBE95441AE47E1AA901551418FC2F5A8F9E95441F6285CFF8F1551413D0AD733F8E9544152B81EA58E155141EC51B85EF6E954418FC2F5988C1551417B14AE87F4E9544148E17A7489155141A4703DCAF2E95441EC51B8EE80155141E17A144EF0E9544152B81EA56E155141666666F6EEE9544152B81EA56D155141F6285CDFEEE95441EC51B8CE51155141CDCCCC5CECE954418FC2F5C8511551413D0AD733EFE954419A9999F9511551410AD7A3E0F3E95441CDCCCC1C521551417B14AE27FAE954411F85EB11521551413333331301EA544166666646561551410000009001EA5441713D0AF75815514114AE47E101EA5441666666D659155141B81E85FB01EA5441AE47E1BA5B155141713D0A2702EA5441713D0AF75E15514114AE477102EA54418FC2F538631551415C8FC2D502EA5441713D0A476915514148E17A6403EA544166666656731551411F85EB9105EA5441D7A370CD8515514114AE47310BEA5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000EC51B8CE51155141CDCCCC5CECE95441F410680B521551411C8B960DF7E95441CDCCCC1C521551417B14AE27FAE95441F255EF11521551411EE9C51001EA54410379EFCF6315514138C197E302EA5441713D0A476915514148E17A6403EA544166666656731551411F85EB9105EA5441D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA5441C667E83B8A15514116BF7ABB0CEA54419F1D18DE8A155141BC88C0EE0CEA54416942E9168E15514184A361010FEA5441B81E851B8E155141D7A370ED0EEA54411075DAED8E155141A8FCA88B0FEA54413333330396155141A4703D1A14EA54411122BA6C941551414F4816940BEA544100CA6AB19015514109D154A2FAE954418E7BD2288F1551412FC02911F7E954418B9C6CEC8B15514175F0C88FF4E95441AE40512D88155141ECFBE9A7F2E9544129DEE7F87F1551411CDA083CF0E954410CE8BD8F6B155141DB7044AFEEE95441EC51B8CE51155141CDCCCC5CECE95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408453 - 3420123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA54419A9999C98B155141713D0AC708EA54417B14AE178E15514114AE479104EA544152B81EA58F155141000000A001EA5441A4703DAA901551418FC2F578FFE954417B14AE979115514152B81E75FDE954411F85EB6191155141B81E85EBFBE95441AE47E1AA901551418FC2F5A8F9E95441F6285CFF8F1551413D0AD733F8E9544152B81EA58E155141EC51B85EF6E954418FC2F5988C1551417B14AE87F4E9544148E17A7489155141A4703DCAF2E95441EC51B8EE80155141E17A144EF0E9544152B81EA56E155141666666F6EEE9544152B81EA56D155141F6285CDFEEE95441EC51B8CE51155141CDCCCC5CECE954418FC2F5C8511551413D0AD733EFE954419A9999F9511551410AD7A3E0F3E95441CDCCCC1C521551417B14AE27FAE954411F85EB11521551413333331301EA544166666646561551410000009001EA5441713D0AF75815514114AE47E101EA5441666666D659155141B81E85FB01EA5441AE47E1BA5B155141713D0A2702EA5441713D0AF75E15514114AE477102EA54418FC2F538631551415C8FC2D502EA5441713D0A476915514148E17A6403EA544166666656731551411F85EB9105EA5441D7A370CD8515514114AE47310BEA5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000EC51B8CE51155141CDCCCC5CECE95441F410680B521551411C8B960DF7E95441CDCCCC1C521551417B14AE27FAE95441F255EF11521551411EE9C51001EA54410379EFCF6315514138C197E302EA5441713D0A476915514148E17A6403EA544166666656731551411F85EB9105EA5441D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA5441C667E83B8A15514116BF7ABB0CEA54419F1D18DE8A155141BC88C0EE0CEA54416942E9168E15514184A361010FEA5441B81E851B8E155141D7A370ED0EEA54411075DAED8E155141A8FCA88B0FEA54413333330396155141A4703D1A14EA54411122BA6C941551414F4816940BEA544100CA6AB19015514109D154A2FAE954418E7BD2288F1551412FC02911F7E954418B9C6CEC8B15514175F0C88FF4E95441AE40512D88155141ECFBE9A7F2E9544129DEE7F87F1551411CDA083CF0E954410CE8BD8F6B155141DB7044AFEEE95441EC51B8CE51155141CDCCCC5CECE95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408455 - 2957535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A999979C4155141333333D342EA54417B14AEE7CB1551413333332341EA5441B81E85CBCB155141333333333DEA54419A999909D1155141AE47E1DA3CEA5441713D0AF7CE155141333333F334EA5441CDCCCC5CCE155141E17A148E2CEA544148E17A54C01551415C8FC29530EA5441E17A144EBB15514152B81EF531EA544100000070BA155141295C8FE233EA54419A999959C0155141713D0AA743EA5441B81E857BC0155141000000F043EA54419A999979C4155141333333D342EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000D9D88D6C0155141B00F2F3E44EA5441E5713A09CC155141840EC0C544EA5441B81E85CBCB155141333333333DEA5441E974FAFED0155141E23894DB3CEA5441CA9E9F61CF1551418C06BC8936EA54418302E8CCCE1551415B1320A832EA5441F628AE1ACE1551413DA611A12CEA544165E3DA2AC715514158AA119F2EEA54415CE8638FBF155141848B97CB30EA5441D7D7BE2BBB155141926E684132EA5441F5AA4D66BA15514167764BE233EA5441ABD868C5BD155141614FCEAC3CEA54410D9D88D6C0155141B00F2F3E44EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408455 - 3476745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A999979C4155141333333D342EA54417B14AEE7CB1551413333332341EA5441B81E85CBCB155141333333333DEA54419A999909D1155141AE47E1DA3CEA5441713D0AF7CE155141333333F334EA5441CDCCCC5CCE155141E17A148E2CEA544148E17A54C01551415C8FC29530EA5441E17A144EBB15514152B81EF531EA544100000070BA155141295C8FE233EA54419A999959C0155141713D0AA743EA5441B81E857BC0155141000000F043EA54419A999979C4155141333333D342EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000D9D88D6C0155141B00F2F3E44EA5441E5713A09CC155141840EC0C544EA5441B81E85CBCB155141333333333DEA5441E974FAFED0155141E23894DB3CEA5441CA9E9F61CF1551418C06BC8936EA54418302E8CCCE1551415B1320A832EA5441F628AE1ACE1551413DA611A12CEA544165E3DA2AC715514158AA119F2EEA54415CE8638FBF155141848B97CB30EA5441D7D7BE2BBB155141926E684132EA5441F5AA4D66BA15514167764BE233EA5441ABD868C5BD155141614FCEAC3CEA54410D9D88D6C0155141B00F2F3E44EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408612 - 3008346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -120  </desc>
+<a>
+010600000001000000010300000001000000360000008FC2F528461551415C8FC27542EA54410AD7A3C0451551410000005042EA5441000000E0441551410000001042EA544152B81EB53D155141666666D63FEA5441F6285C7F3E155141333333333DEA5441CDCCCCCC3E1551410AD7A3003CEA5441A4703D2A3C15514148E17A443BEA5441EC51B83E3D155141295C8F8237EA5441CDCCCCEC3F15514148E17A5438EA54413D0AD7A340155141D7A3700D36EA544152B81E55421551413D0AD79336EA54418FC2F50843155141000000B036EA5441E17A14FE42155141EC51B82E34EA5441C3F528DC41155141B81E851B34EA5441C3F528DC40155141713D0AA733EA5441A4703D2A41155141AE47E1FA32EA5441CDCCCC2C421551410000007033EA54417B14AEE7421551417B14AE6733EA5441A4703DBA4315514114AE47E133EA544114AE47F143155141A4703D0A36EA54417B14AE0744155141CDCCCCDC36EA544185EB51A8471551413333333338EA54410000004049155141E17A14CE3BEA5441D7A370FD49155141666666463AEA54411F85EB114B1551416666666638EA54415C8FC2954A155141713D0A7736EA5441AE47E16A491551418FC2F5A834EA54416666666645155141666666B630EA54418FC2F5D8441551419A9999892DEA5441295C8F124415514185EB51382EEA544152B81EC543155141EC51B8AE30EA5441EC51B8AE4315514114AE475133EA5441CDCCCCDC421551411F85EBC132EA54418FC2F508431551410AD7A3902EEA54415C8FC265421551411F85EB912EEA544114AE47B1341551413D0AD75332EA5441C3F528FC2D155141EC51B83E34EA544152B81EB52D155141EC51B85E37EA5441B81E851B311551418FC2F5183EEA54413D0AD7C3331551419A99992944EA54419A999939311551410AD7A3F047EA54415C8FC2E52E155141A4703D0A4CEA544185EB51682D155141713D0A074FEA544152B81EF52F155141713D0AA74DEA5441EC51B81E33155141333333934CEA54418FC2F54835155141D7A3701D4CEA5441F6285C7F37155141333333D34BEA54415C8FC2353E155141713D0A674BEA5441666666B63F155141713D0A374BEA5441666666D640155141C3F528EC4AEA5441CDCCCCEC41155141D7A3706D4AEA54417B14AED7421551418FC2F5A849EA54415C8FC27543155141B81E85AB48EA54418FC2F528461551415C8FC27542EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000018242B7F321551411BEF3AE04BEA544159165C70371551414AE76AB74BEA5441545BF2533C155141EF8465734BEA5441F409659E40155141348EADC64AEA544166CB15F142155141D305E53E49EA5441C561D61B44155141A7368DF546EA5441A24C05C4451551415B92472143EA54418EA3130643155141C774AE6A42EA5441C256ADF93D1551418C71239C40EA5441A6858DEE3E15514177E9C7173CEA544141A6871D3C15514105D2579D3BEA5441DF27CD043D155141481EA7F237EA544189B46DE33F1551411926771B38EA5441E18818BD401551413C134CFB35EA544149F678F8421551417F328C9E36EA5441EA05194A43155141ADF67F6F2EEA54414A40F5123E155141B2355FC12FEA54415DC5740537155141F0E962B031EA5441E419F29C311551415406393533EA54418C494BE12E155141B2BBB44E34EA5441565F2D112F15514115D8B3D635EA54414C84DD1F30155141E268B27E3EEA5441DB92454631155141C1B9444E47EA5441935750CE311551410AC82A144BEA544118242B7F321551411BEF3AE04BEA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408612 - 3825269
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -120  </desc>
+<a>
+010600000001000000010300000001000000360000008FC2F528461551415C8FC27542EA54410AD7A3C0451551410000005042EA5441000000E0441551410000001042EA544152B81EB53D155141666666D63FEA5441F6285C7F3E155141333333333DEA5441CDCCCCCC3E1551410AD7A3003CEA5441A4703D2A3C15514148E17A443BEA5441EC51B83E3D155141295C8F8237EA5441CDCCCCEC3F15514148E17A5438EA54413D0AD7A340155141D7A3700D36EA544152B81E55421551413D0AD79336EA54418FC2F50843155141000000B036EA5441E17A14FE42155141EC51B82E34EA5441C3F528DC41155141B81E851B34EA5441C3F528DC40155141713D0AA733EA5441A4703D2A41155141AE47E1FA32EA5441CDCCCC2C421551410000007033EA54417B14AEE7421551417B14AE6733EA5441A4703DBA4315514114AE47E133EA544114AE47F143155141A4703D0A36EA54417B14AE0744155141CDCCCCDC36EA544185EB51A8471551413333333338EA54410000004049155141E17A14CE3BEA5441D7A370FD49155141666666463AEA54411F85EB114B1551416666666638EA54415C8FC2954A155141713D0A7736EA5441AE47E16A491551418FC2F5A834EA54416666666645155141666666B630EA54418FC2F5D8441551419A9999892DEA5441295C8F124415514185EB51382EEA544152B81EC543155141EC51B8AE30EA5441EC51B8AE4315514114AE475133EA5441CDCCCCDC421551411F85EBC132EA54418FC2F508431551410AD7A3902EEA54415C8FC265421551411F85EB912EEA544114AE47B1341551413D0AD75332EA5441C3F528FC2D155141EC51B83E34EA544152B81EB52D155141EC51B85E37EA5441B81E851B311551418FC2F5183EEA54413D0AD7C3331551419A99992944EA54419A999939311551410AD7A3F047EA54415C8FC2E52E155141A4703D0A4CEA544185EB51682D155141713D0A074FEA544152B81EF52F155141713D0AA74DEA5441EC51B81E33155141333333934CEA54418FC2F54835155141D7A3701D4CEA5441F6285C7F37155141333333D34BEA54415C8FC2353E155141713D0A674BEA5441666666B63F155141713D0A374BEA5441666666D640155141C3F528EC4AEA5441CDCCCCEC41155141D7A3706D4AEA54417B14AED7421551418FC2F5A849EA54415C8FC27543155141B81E85AB48EA54418FC2F528461551415C8FC27542EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000018242B7F321551411BEF3AE04BEA544159165C70371551414AE76AB74BEA5441545BF2533C155141EF8465734BEA5441F409659E40155141348EADC64AEA544166CB15F142155141D305E53E49EA5441C561D61B44155141A7368DF546EA5441A24C05C4451551415B92472143EA54418EA3130643155141C774AE6A42EA5441C256ADF93D1551418C71239C40EA5441A6858DEE3E15514177E9C7173CEA544141A6871D3C15514105D2579D3BEA5441DF27CD043D155141481EA7F237EA544189B46DE33F1551411926771B38EA5441E18818BD401551413C134CFB35EA544149F678F8421551417F328C9E36EA5441EA05194A43155141ADF67F6F2EEA54414A40F5123E155141B2355FC12FEA54415DC5740537155141F0E962B031EA5441E419F29C311551415406393533EA54418C494BE12E155141B2BBB44E34EA5441565F2D112F15514115D8B3D635EA54414C84DD1F30155141E268B27E3EEA5441DB92454631155141C1B9444E47EA5441935750CE311551410AC82A144BEA544118242B7F321551411BEF3AE04BEA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449921 - 232002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -642  </desc>
+<a>
+01060000000100000001030000000100000032000000AE47E11A9A1B51410AD7A340A32E5541D7A3701DA31B51417B14AE57A72E5541B81E85EBA31B5141D7A3704DA42E5541B81E855BA51B51413D0AD713A02E5541F6285C7FA61B5141EC51B80E9D2E554114AE47C1A91B5141713D0A77942E5541C3F5284CAF1B5141C3F528CC8A2E5541F6285C8FB71B51417B14AE877E2E5541F6285CFFC01B51419A9999A9722E55418FC2F5C8C61B5141D7A370AD6A2E55410AD7A3F0C91B5141F6285C8F6A2E5541F6285CDFCC1B514114AE47516A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E554114AE4721D21B5141713D0A87672E5541B81E850BD51B5141CDCCCCAC692E5541B81E85BBD51B514152B81E65652E5541EC51B84ED61B5141B81E85CB602E554100000040D71B514185EB51E8572E554166666676D81B514100000040542E55417B14AE87DD1B5141A4703D1A4D2E55415C8FC235DB1B5141333333A34C2E5541CDCCCCACD71B514114AE4711542E554100000050D51B5141E17A14EE562E5541D7A3706DD01B5141A4703DFA552E554114AE47A1C81B5141C3F5282C532E5541E17A144EC71B51415C8FC2A5582E554148E17A84C41B5141C3F5285C612E5541AE47E11AC51B51418FC2F568612E5541C3F5286CC61B5141295C8F22622E5541000000A0C81B5141B81E856B642E5541B81E857BC51B514185EB5118682E5541D7A3703DC31B514133333373662E5541AE47E19AC11B5141F6285C9F672E554185EB5138C01B5141295C8F12692E55411F85EB61BE1B51417B14AE276B2E554114AE4791BF1B51417B14AE276D2E5541D7A3703DBF1B5141CDCCCC1C6F2E5541EC51B86EBC1B5141CDCCCCAC702E5541713D0AF7B11B514114AE47216F2E5541F6285CDFAC1B514166666616732E5541A4703D0AA91B5141295C8FE2752E55411F85EBC1A01B5141D7A370FD722E5541713D0AD79A1B514185EB51E8702E55415C8FC225991B5141F6285C8F702E55410AD7A3B0961B51415C8FC285782E554133333383941B5141D7A370FD812E5541CDCCCCEC931B51417B14AE87842E55418FC2F518A91B5141D7A3706D8A2E5541AE47E11A9A1B51410AD7A340A32E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003600000028CAF5C8C61B5141799470AD6A2E55418893C75CC71B51413151EFA76A2E5541B526AB9EC81B51418667F29B6A2E55416BE4A3F0C91B514108EE5B8F6A2E554127955BDFCC1B51419C7947516A2E554154A8AE1ACD1B51417354263F6A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E554114AE4721D21B5141713D0A87672E55419140850BD51B514109FACBAC692E5541E040CEADD51B5141EC757FBA652E5541802985BBD51B514100621E65652E554176148CBDD51B5141700AE754652E5541E39026BED51B5141F9261350652E55418D16B74ED61B5141578686CB602E554181B4FF3FD71B5141C7C950E8572E554111003D1AD01B514149D6C295562E55416C6D0AC7C91B51414DE565B6542E5541633E66F6C71B514123DC83DB582E5541DD92E21AC51B5141EFDBF568612E5541C3F5286CC61B5141295C8F22622E554159501A88C61B5141FBA88C3F622E554198A53CFAC61B5141BD98B9BE612E554128EC47D1C91B5141975D0987622E554188AFFF7FC51B5141A17E3C0A6A2E5541C6D47155BF1B5141F661528D6E2E5541D7A3703DBF1B5141CDCCCC1C6F2E5541EC51B86EBC1B5141CDCCCCAC702E5541713D0AF7B11B514114AE47216F2E5541F6285CDFAC1B514166666616732E55416D5C027EAC1B5141A1D9755D732E5541B0283E0AA91B5141A2A38FE2752E55411F85EBC1A01B5141D7A370FD722E5541713D0AD79A1B514185EB51E8702E55415C8FC225991B5141F6285C8F702E5541E9B6A3B0961B514181F4C385782E554133333383941B5141D7A370FD812E5541E2DCCCEC931B5141F2CEAD87842E554198EAF618A91B5141E01D706D8A2E5541068FE11A9A1B51416CF7A340A32E5541B5B86F1DA31B5141BCA9AD57A72E5541928984EBA31B5141BBFB714DA42E5541EC00845BA51B51412C29D613A02E55419E53B31EA61B5141246CC80E9E2E5541F6285C7FA61B5141EC51B80E9D2E5541EDCC6D20A81B5141EBBC97C2982E5541083B47C1A91B51411F880977942E5541735BAE7BAB1B514153E26173912E5541C3F5284CAF1B5141C3F528CC8A2E5541F6285C8FB71B51417B14AE877E2E55418260FABBBA1B5141C086D3897A2E554150C05BFFC01B514120AD98A9722E55412D93FD14C41B5141220D26686E2E554128CAF5C8C61B5141799470AD6A2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449921 - 276784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -642  </desc>
+<a>
+01060000000100000001030000000100000032000000AE47E11A9A1B51410AD7A340A32E5541D7A3701DA31B51417B14AE57A72E5541B81E85EBA31B5141D7A3704DA42E5541B81E855BA51B51413D0AD713A02E5541F6285C7FA61B5141EC51B80E9D2E554114AE47C1A91B5141713D0A77942E5541C3F5284CAF1B5141C3F528CC8A2E5541F6285C8FB71B51417B14AE877E2E5541F6285CFFC01B51419A9999A9722E55418FC2F5C8C61B5141D7A370AD6A2E55410AD7A3F0C91B5141F6285C8F6A2E5541F6285CDFCC1B514114AE47516A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E554114AE4721D21B5141713D0A87672E5541B81E850BD51B5141CDCCCCAC692E5541B81E85BBD51B514152B81E65652E5541EC51B84ED61B5141B81E85CB602E554100000040D71B514185EB51E8572E554166666676D81B514100000040542E55417B14AE87DD1B5141A4703D1A4D2E55415C8FC235DB1B5141333333A34C2E5541CDCCCCACD71B514114AE4711542E554100000050D51B5141E17A14EE562E5541D7A3706DD01B5141A4703DFA552E554114AE47A1C81B5141C3F5282C532E5541E17A144EC71B51415C8FC2A5582E554148E17A84C41B5141C3F5285C612E5541AE47E11AC51B51418FC2F568612E5541C3F5286CC61B5141295C8F22622E5541000000A0C81B5141B81E856B642E5541B81E857BC51B514185EB5118682E5541D7A3703DC31B514133333373662E5541AE47E19AC11B5141F6285C9F672E554185EB5138C01B5141295C8F12692E55411F85EB61BE1B51417B14AE276B2E554114AE4791BF1B51417B14AE276D2E5541D7A3703DBF1B5141CDCCCC1C6F2E5541EC51B86EBC1B5141CDCCCCAC702E5541713D0AF7B11B514114AE47216F2E5541F6285CDFAC1B514166666616732E5541A4703D0AA91B5141295C8FE2752E55411F85EBC1A01B5141D7A370FD722E5541713D0AD79A1B514185EB51E8702E55415C8FC225991B5141F6285C8F702E55410AD7A3B0961B51415C8FC285782E554133333383941B5141D7A370FD812E5541CDCCCCEC931B51417B14AE87842E55418FC2F518A91B5141D7A3706D8A2E5541AE47E11A9A1B51410AD7A340A32E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003600000028CAF5C8C61B5141799470AD6A2E55418893C75CC71B51413151EFA76A2E5541B526AB9EC81B51418667F29B6A2E55416BE4A3F0C91B514108EE5B8F6A2E554127955BDFCC1B51419C7947516A2E554154A8AE1ACD1B51417354263F6A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E554114AE4721D21B5141713D0A87672E55419140850BD51B514109FACBAC692E5541E040CEADD51B5141EC757FBA652E5541802985BBD51B514100621E65652E554176148CBDD51B5141700AE754652E5541E39026BED51B5141F9261350652E55418D16B74ED61B5141578686CB602E554181B4FF3FD71B5141C7C950E8572E554111003D1AD01B514149D6C295562E55416C6D0AC7C91B51414DE565B6542E5541633E66F6C71B514123DC83DB582E5541DD92E21AC51B5141EFDBF568612E5541C3F5286CC61B5141295C8F22622E554159501A88C61B5141FBA88C3F622E554198A53CFAC61B5141BD98B9BE612E554128EC47D1C91B5141975D0987622E554188AFFF7FC51B5141A17E3C0A6A2E5541C6D47155BF1B5141F661528D6E2E5541D7A3703DBF1B5141CDCCCC1C6F2E5541EC51B86EBC1B5141CDCCCCAC702E5541713D0AF7B11B514114AE47216F2E5541F6285CDFAC1B514166666616732E55416D5C027EAC1B5141A1D9755D732E5541B0283E0AA91B5141A2A38FE2752E55411F85EBC1A01B5141D7A370FD722E5541713D0AD79A1B514185EB51E8702E55415C8FC225991B5141F6285C8F702E5541E9B6A3B0961B514181F4C385782E554133333383941B5141D7A370FD812E5541E2DCCCEC931B5141F2CEAD87842E554198EAF618A91B5141E01D706D8A2E5541068FE11A9A1B51416CF7A340A32E5541B5B86F1DA31B5141BCA9AD57A72E5541928984EBA31B5141BBFB714DA42E5541EC00845BA51B51412C29D613A02E55419E53B31EA61B5141246CC80E9E2E5541F6285C7FA61B5141EC51B80E9D2E5541EDCC6D20A81B5141EBBC97C2982E5541083B47C1A91B51411F880977942E5541735BAE7BAB1B514153E26173912E5541C3F5284CAF1B5141C3F528CC8A2E5541F6285C8FB71B51417B14AE877E2E55418260FABBBA1B5141C086D3897A2E554150C05BFFC01B514120AD98A9722E55412D93FD14C41B5141220D26686E2E554128CAF5C8C61B5141799470AD6A2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 1173819
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA4544174382C9FA7695141D048E97B1CA45441335B889DA769514105386BC31DA454415D9FE29AA769514106A312D41FA45441C3EA6B98A7695141A09BB51022A4544105E94397A76951414E93F91023A454413A500E96A7695141397ABD1B24A454415B795B94A76951411BCA6B9225A454417AA10293A769514158788EBB26A454419B999991A76951414AE5C1EF27A454410AD7A390A7695141666666C628A45441713D0A87A7695141666666C630A454415C8FC285A76951410AD7A3B031A45441889DF57AA7695141170106AC3AA45441713D0A77A7695141AE47E12A3EA454413D0AD7B3AF69514114AE47513FA45441E538D085B1695141B61E4C923FA45441D362E9A8B3695141F02C093E3CA45441F6285C8FB3695141000000A035A454419C6D9CC7A769514193FC44C631A45441C5C92B8AA76951414B1BCAB131A4544148087C8CA7695141C77121C830A45441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000010C6F37CB36951418572C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C8921387A7695141A268C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA4544110C6F37CB36951418572C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 3298988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA4544174382C9FA7695141D048E97B1CA45441335B889DA769514105386BC31DA454415D9FE29AA769514106A312D41FA45441C3EA6B98A7695141A09BB51022A4544105E94397A76951414E93F91023A454413A500E96A7695141397ABD1B24A454415B795B94A76951411BCA6B9225A454417AA10293A769514158788EBB26A454419B999991A76951414AE5C1EF27A454410AD7A390A7695141666666C628A45441713D0A87A7695141666666C630A454415C8FC285A76951410AD7A3B031A45441889DF57AA7695141170106AC3AA45441713D0A77A7695141AE47E12A3EA454413D0AD7B3AF69514114AE47513FA45441E538D085B1695141B61E4C923FA45441D362E9A8B3695141F02C093E3CA45441F6285C8FB3695141000000A035A454419C6D9CC7A769514193FC44C631A45441C5C92B8AA76951414B1BCAB131A4544148087C8CA7695141C77121C830A45441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000010C6F37CB36951418572C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C8921387A7695141A268C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA4544110C6F37CB36951418572C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 231143
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA4544174382C9FA7695141D048E97B1CA45441335B889DA769514105386BC31DA454415D9FE29AA769514106A312D41FA45441C3EA6B98A7695141A09BB51022A4544105E94397A76951414E93F91023A454413A500E96A7695141397ABD1B24A454415B795B94A76951411BCA6B9225A454417AA10293A769514158788EBB26A454419B999991A76951414AE5C1EF27A454410AD7A390A7695141666666C628A45441713D0A87A7695141666666C630A454415C8FC285A76951410AD7A3B031A45441889DF57AA7695141170106AC3AA45441713D0A77A7695141AE47E12A3EA454413D0AD7B3AF69514114AE47513FA45441E538D085B1695141B61E4C923FA45441D362E9A8B3695141F02C093E3CA45441F6285C8FB3695141000000A035A454419C6D9CC7A769514193FC44C631A45441C5C92B8AA76951414B1BCAB131A4544148087C8CA7695141C77121C830A45441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000BC6F37CB36951418072C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C4921387A7695141A568C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA454410BC6F37CB36951418072C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 332895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA4544174382C9FA7695141D048E97B1CA45441335B889DA769514105386BC31DA454415D9FE29AA769514106A312D41FA45441C3EA6B98A7695141A09BB51022A4544105E94397A76951414E93F91023A454413A500E96A7695141397ABD1B24A454415B795B94A76951411BCA6B9225A454417AA10293A769514158788EBB26A454419B999991A76951414AE5C1EF27A454410AD7A390A7695141666666C628A45441713D0A87A7695141666666C630A454415C8FC285A76951410AD7A3B031A45441889DF57AA7695141170106AC3AA45441713D0A77A7695141AE47E12A3EA454413D0AD7B3AF69514114AE47513FA45441E538D085B1695141B61E4C923FA45441D362E9A8B3695141F02C093E3CA45441F6285C8FB3695141000000A035A454419C6D9CC7A769514193FC44C631A45441C5C92B8AA76951414B1BCAB131A4544148087C8CA7695141C77121C830A45441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000BC6F37CB36951418072C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C4921387A7695141A568C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA454410BC6F37CB36951418072C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 1285862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441295C8F72880F51410AD7A380F4F55441713D0A07870F51413D0AD7E3F3F55441EC51B8BE850F5141713D0A57F3F55441AE47E16A830F51417B14AE57F2F554410AD7A3C0800F5141295C8F32F1F554413D0AD7337E0F514152B81E25F0F5544185EB51A87B0F5141AE47E1FAEEF55441666666967A0F5141E17A147EEEF55441EC51B8DE7A0F5141295C8F22EEF55441AE47E17A7A0F51419A9999E9EDF554415C8FC215780F5141EC51B88EECF554415C8FC2C5750F51419A999919EBF55441AE47E1AA730F51410AD7A3A0E9F554410AD7A3F0700F514185EB51B8E7F554419A9999A96E0F51410AD7A320E6F5544148E17A246D0F514114AE4711E5F55441C3F5287C6D0F51413D0AD743E3F554411F85EB916D0F51411F85EB81E1F55441E17A14DE6B0F514114AE4771E0F554413D0AD7C3690F514185EB51D8E1F55441B81E855B670F514166666606E4F55441E17A14DE650F5141333333F3E6F55441295C8F92630F5141333333D3EBF5544148E17AB4600F514166666656F3F554411F85EB515E0F51410AD7A360F9F55441713D0AA7610F51415C8FC215FAF554417B14AE37680F51415C8FC215FAF55441333333036A0F51411F85EB71F8F55441713D0AA7750F5141666666F6FAF55441713D0AA77B0F51410AD7A300FCF5544148E17A847D0F5141EC51B88EFCF554417B14AE47820F514100000030FEF55441333333B3820F514185EB5198FEF55441E17A14BE880F51418FC2F51800F654417B14AE678E0F5141EC51B8BE01F65441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000058E17AC4480F5141A4666606FDF55441A4703DCA470F5141713D0AF700F654415C8FC235460F514148E17AE404F65441F6285C7F460F51418FC2F50805F65441713D0A574E0F51413333330309F654410AD7A340510F5141000000600AF65441295C8FA2540F5141A4703DCA0BF654413D0AD7D3590F5141D7A370ED0CF65441E40C18245B0F514134BA45110DF65441FBD374E25E0F5141F40549690DF6544166666676600F5141AE47E14A0DF65441125CD191650F514108DD98D60CF65441AE47E1FA660F51411F85EBC10CF6544185EB5118690F514148E17AD40CF654415C8FC2C56A0F51410AD7A3100DF65441A4703D4A6D0F51417B14AEA70DF6544185EB5188760F514152B81E4510F65441713D0A77790F5141AE47E1BA10F654413D0AD7237B0F5141333333E310F654415C8FC2357D0F5141AE47E1BA10F654410AD7A3207F0F5141713D0A7710F65441295C8F627F0F5141CDCCCC1C10F654417B14AE47870F5141AE47E19A13F6544152B81E15880F5141D7A3704D14F65441D7A3701D8C0F51413D0AD73307F6544114AE47F18D0F51418FC2F5D802F65441B81E859B890F51411F85EBB101F65441E17A14BE880F51418FC2F51800F65441333333B3820F514185EB5198FEF554417B14AE47820F514100000030FEF554417AA7FE237B0F5141D5ECECE9FBF554413A5ED955750F5141E50BD7E4FAF554417F77A3E9700F5141AF27F7EFF9F55441C5ECD60F6C0F51419E9A63E3F8F55441333333036A0F51411F85EB71F8F5544100000060690F514185EB5188FBF55441333333D3670F5141C3F5287CFBF554415C8FC2255D0F514166666626FBF5544133333373590F5141C3F5280CFAF5544133333323580F51413D0AD783F9F55441295C8F82540F514133333323F7F55441295C8FC2510F51415C8FC2A5F5F5544185EB51784E0F5141713D0AF7F4F55441D7A3703D4B0F5141000000F0F5F554418FC2F5084A0F514148E17AA4F6F554413D0AD753490F5141B81E853BF8F5544158E17AC4480F5141A4666606FDF55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 3576640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441295C8F72880F51410AD7A380F4F55441713D0A07870F51413D0AD7E3F3F55441EC51B8BE850F5141713D0A57F3F55441AE47E16A830F51417B14AE57F2F554410AD7A3C0800F5141295C8F32F1F554413D0AD7337E0F514152B81E25F0F5544185EB51A87B0F5141AE47E1FAEEF55441666666967A0F5141E17A147EEEF55441EC51B8DE7A0F5141295C8F22EEF55441AE47E17A7A0F51419A9999E9EDF554415C8FC215780F5141EC51B88EECF554415C8FC2C5750F51419A999919EBF55441AE47E1AA730F51410AD7A3A0E9F554410AD7A3F0700F514185EB51B8E7F554419A9999A96E0F51410AD7A320E6F5544148E17A246D0F514114AE4711E5F55441C3F5287C6D0F51413D0AD743E3F554411F85EB916D0F51411F85EB81E1F55441E17A14DE6B0F514114AE4771E0F554413D0AD7C3690F514185EB51D8E1F55441B81E855B670F514166666606E4F55441E17A14DE650F5141333333F3E6F55441295C8F92630F5141333333D3EBF5544148E17AB4600F514166666656F3F554411F85EB515E0F51410AD7A360F9F55441713D0AA7610F51415C8FC215FAF554417B14AE37680F51415C8FC215FAF55441333333036A0F51411F85EB71F8F55441713D0AA7750F5141666666F6FAF55441713D0AA77B0F51410AD7A300FCF5544148E17A847D0F5141EC51B88EFCF554417B14AE47820F514100000030FEF55441333333B3820F514185EB5198FEF55441E17A14BE880F51418FC2F51800F654417B14AE678E0F5141EC51B8BE01F65441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000058E17AC4480F5141A4666606FDF55441A4703DCA470F5141713D0AF700F654415C8FC235460F514148E17AE404F65441F6285C7F460F51418FC2F50805F65441713D0A574E0F51413333330309F654410AD7A340510F5141000000600AF65441295C8FA2540F5141A4703DCA0BF654413D0AD7D3590F5141D7A370ED0CF65441E40C18245B0F514134BA45110DF65441FBD374E25E0F5141F40549690DF6544166666676600F5141AE47E14A0DF65441125CD191650F514108DD98D60CF65441AE47E1FA660F51411F85EBC10CF6544185EB5118690F514148E17AD40CF654415C8FC2C56A0F51410AD7A3100DF65441A4703D4A6D0F51417B14AEA70DF6544185EB5188760F514152B81E4510F65441713D0A77790F5141AE47E1BA10F654413D0AD7237B0F5141333333E310F654415C8FC2357D0F5141AE47E1BA10F654410AD7A3207F0F5141713D0A7710F65441295C8F627F0F5141CDCCCC1C10F654417B14AE47870F5141AE47E19A13F6544152B81E15880F5141D7A3704D14F65441D7A3701D8C0F51413D0AD73307F6544114AE47F18D0F51418FC2F5D802F65441B81E859B890F51411F85EBB101F65441E17A14BE880F51418FC2F51800F65441333333B3820F514185EB5198FEF554417B14AE47820F514100000030FEF554417AA7FE237B0F5141D5ECECE9FBF554413A5ED955750F5141E50BD7E4FAF554417F77A3E9700F5141AF27F7EFF9F55441C5ECD60F6C0F51419E9A63E3F8F55441333333036A0F51411F85EB71F8F5544100000060690F514185EB5188FBF55441333333D3670F5141C3F5287CFBF554415C8FC2255D0F514166666626FBF5544133333373590F5141C3F5280CFAF5544133333323580F51413D0AD783F9F55441295C8F82540F514133333323F7F55441295C8FC2510F51415C8FC2A5F5F5544185EB51784E0F5141713D0AF7F4F55441D7A3703D4B0F5141000000F0F5F554418FC2F5084A0F514148E17AA4F6F554413D0AD753490F5141B81E853BF8F5544158E17AC4480F5141A4666606FDF55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 1283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441295C8F72880F51410AD7A380F4F55441713D0A07870F51413D0AD7E3F3F55441EC51B8BE850F5141713D0A57F3F55441AE47E16A830F51417B14AE57F2F554410AD7A3C0800F5141295C8F32F1F554413D0AD7337E0F514152B81E25F0F5544185EB51A87B0F5141AE47E1FAEEF55441666666967A0F5141E17A147EEEF55441EC51B8DE7A0F5141295C8F22EEF55441AE47E17A7A0F51419A9999E9EDF554415C8FC215780F5141EC51B88EECF554415C8FC2C5750F51419A999919EBF55441AE47E1AA730F51410AD7A3A0E9F554410AD7A3F0700F514185EB51B8E7F554419A9999A96E0F51410AD7A320E6F5544148E17A246D0F514114AE4711E5F55441C3F5287C6D0F51413D0AD743E3F554411F85EB916D0F51411F85EB81E1F55441E17A14DE6B0F514114AE4771E0F554413D0AD7C3690F514185EB51D8E1F55441B81E855B670F514166666606E4F55441E17A14DE650F5141333333F3E6F55441295C8F92630F5141333333D3EBF5544148E17AB4600F514166666656F3F554411F85EB515E0F51410AD7A360F9F55441713D0AA7610F51415C8FC215FAF554417B14AE37680F51415C8FC215FAF55441333333036A0F51411F85EB71F8F55441713D0AA7750F5141666666F6FAF55441713D0AA77B0F51410AD7A300FCF5544148E17A847D0F5141EC51B88EFCF554417B14AE47820F514100000030FEF55441333333B3820F514185EB5198FEF55441E17A14BE880F51418FC2F51800F654417B14AE678E0F5141EC51B8BE01F65441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E859B890F51411F85EBB101F65441E17A14BE880F51418FC2F51800F65441333333B3820F514185EB5198FEF554417B14AE47820F514100000030FEF554417AA7FE237B0F5141D5ECECE9FBF554413A5ED955750F5141E50BD7E4FAF554417F77A3E9700F5141AF27F7EFF9F55441C5ECD60F6C0F51419E9A63E3F8F55441333333036A0F51411F85EB71F8F554416A7CADCD690F514134CD2275F9F554410AD7A3D06B0F51417B14AE97F9F554411F85EBE1700F514114AE47E1FAF5544148E17A74750F5141666666D6FBF554411F85EBF1780F51415C8FC295FCF55441666666B6810F51413D0AD753FFF55441B81E859B890F51411F85EBB101F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 55274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441295C8F72880F51410AD7A380F4F55441713D0A07870F51413D0AD7E3F3F55441EC51B8BE850F5141713D0A57F3F55441AE47E16A830F51417B14AE57F2F554410AD7A3C0800F5141295C8F32F1F554413D0AD7337E0F514152B81E25F0F5544185EB51A87B0F5141AE47E1FAEEF55441666666967A0F5141E17A147EEEF55441EC51B8DE7A0F5141295C8F22EEF55441AE47E17A7A0F51419A9999E9EDF554415C8FC215780F5141EC51B88EECF554415C8FC2C5750F51419A999919EBF55441AE47E1AA730F51410AD7A3A0E9F554410AD7A3F0700F514185EB51B8E7F554419A9999A96E0F51410AD7A320E6F5544148E17A246D0F514114AE4711E5F55441C3F5287C6D0F51413D0AD743E3F554411F85EB916D0F51411F85EB81E1F55441E17A14DE6B0F514114AE4771E0F554413D0AD7C3690F514185EB51D8E1F55441B81E855B670F514166666606E4F55441E17A14DE650F5141333333F3E6F55441295C8F92630F5141333333D3EBF5544148E17AB4600F514166666656F3F554411F85EB515E0F51410AD7A360F9F55441713D0AA7610F51415C8FC215FAF554417B14AE37680F51415C8FC215FAF55441333333036A0F51411F85EB71F8F55441713D0AA7750F5141666666F6FAF55441713D0AA77B0F51410AD7A300FCF5544148E17A847D0F5141EC51B88EFCF554417B14AE47820F514100000030FEF55441333333B3820F514185EB5198FEF55441E17A14BE880F51418FC2F51800F654417B14AE678E0F5141EC51B8BE01F65441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E859B890F51411F85EBB101F65441E17A14BE880F51418FC2F51800F65441333333B3820F514185EB5198FEF554417B14AE47820F514100000030FEF554417AA7FE237B0F5141D5ECECE9FBF554413A5ED955750F5141E50BD7E4FAF554417F77A3E9700F5141AF27F7EFF9F55441C5ECD60F6C0F51419E9A63E3F8F55441333333036A0F51411F85EB71F8F554416A7CADCD690F514134CD2275F9F554410AD7A3D06B0F51417B14AE97F9F554411F85EBE1700F514114AE47E1FAF5544148E17A74750F5141666666D6FBF554411F85EBF1780F51415C8FC295FCF55441666666B6810F51413D0AD753FFF55441B81E859B890F51411F85EBB101F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423088 - 194582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -450  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F538D90F5141D7A3700D94F6544152B81EE5D60F5141CDCCCC0C98F65441295C8FD2D40F51418FC2F5189CF65441D7A370FDD30F514148E17A149EF65441EC51B82ED30F5141713D0AB7A0F65441C3F528DCD20F51411F85EB31A2F6544133333383D50F5141333333C3A3F6544185EB51D8D60F5141333333C3A0F65441EC51B85ED80F514148E17A249DF65441000000C0D90F5141C3F5280C9AF65441C3F528BCDB0F5141295C8FE297F6544114AE4771E00F5141D7A3703D91F65441AE47E11AE10F51419A9999E98FF654413D0AD7F3DD0F5141B81E852B8DF65441A4703DFADA0F5141C3F5283C91F654418FC2F538D90F5141D7A3700D94F65441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000052B81EE5D60F5141CDCCCC0C98F654410D99D055D50F5141CC0AA0189BF65441F26C9DE5D30F51416A9439629EF654413D057993D30F5141FD95446E9FF654412893658CD30F5141769E5B859FF65441DFD6F58BD30F5141C33AC8869FF654413ABB87E0D20F5141FCA88034A2F6544176A54646D30F51418422A170A2F654415C765D94D30F514105BFC69EA2F6544156D994F3D30F5141916D0BD7A2F65441D52F0251D50F5141B141B3FCA0F654418669559FD60F514138E2A1BC9EF654413C753ADED70F5141EBA041BE9BF65441F03A4422D90F51417A2B2F5A99F654416C6CE752DB0F51412AA4F36096F6544176B5CF33E00F5141DC4695208FF65441736DCAD4DD0F514147FFF1558DF65441A4703DFADA0F5141C3F5283C91F654418FC2F538D90F5141D7A3700D94F6544152B81EE5D60F5141CDCCCC0C98F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423088 - 365354
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -450  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F538D90F5141D7A3700D94F6544152B81EE5D60F5141CDCCCC0C98F65441295C8FD2D40F51418FC2F5189CF65441D7A370FDD30F514148E17A149EF65441EC51B82ED30F5141713D0AB7A0F65441C3F528DCD20F51411F85EB31A2F6544133333383D50F5141333333C3A3F6544185EB51D8D60F5141333333C3A0F65441EC51B85ED80F514148E17A249DF65441000000C0D90F5141C3F5280C9AF65441C3F528BCDB0F5141295C8FE297F6544114AE4771E00F5141D7A3703D91F65441AE47E11AE10F51419A9999E98FF654413D0AD7F3DD0F5141B81E852B8DF65441A4703DFADA0F5141C3F5283C91F654418FC2F538D90F5141D7A3700D94F65441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000052B81EE5D60F5141CDCCCC0C98F654410D99D055D50F5141CC0AA0189BF65441F26C9DE5D30F51416A9439629EF654413D057993D30F5141FD95446E9FF654412893658CD30F5141769E5B859FF65441DFD6F58BD30F5141C33AC8869FF654413ABB87E0D20F5141FCA88034A2F6544176A54646D30F51418422A170A2F654415C765D94D30F514105BFC69EA2F6544156D994F3D30F5141916D0BD7A2F65441D52F0251D50F5141B141B3FCA0F654418669559FD60F514138E2A1BC9EF654413C753ADED70F5141EBA041BE9BF65441F03A4422D90F51417A2B2F5A99F654416C6CE752DB0F51412AA4F36096F6544176B5CF33E00F5141DC4695208FF65441736DCAD4DD0F514147FFF1558DF65441A4703DFADA0F5141C3F5283C91F654418FC2F538D90F5141D7A3700D94F6544152B81EE5D60F5141CDCCCC0C98F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>424914 - 3339665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -304  </desc>
+<a>
+01060000000200000001030000000100000020000000F6285C2FD1125141D7A3701DED395441F6285CDFCE125141295C8FC2EF3954415C8FC2C5CC12514114AE47F1F1395441A4703DEACA1251419A9999C9F3395441D7A3709DC8125141CDCCCCECF53954410AD7A3B0C61251419A9999D9F7395441B81E85EBC5125141295C8F32F9395441333333D3C512514133333373FA3954417B14AEF7C6125141B81E85BBFB395441F6285C0FCA125141A4703D4AFD395441C3F528ECCE12514152B81EB5003A5441333333C3D0125141F6285C0F023A5441A4703DBAD212514166666626FF395441B81E853BD5125141666666D6FB3954413D0AD723D81251411F85EB51F839544148E17A74DB1251413D0AD773F43954411F85EB71DF1251411F85EB81EF395441B81E85EBE1125141295C8F42EC395441333333E3E6125141713D0A27E4395441EC51B82EEA1251413D0AD7E3E539544152B81EC5EB125141EC51B8CEE2395441AE47E17AE712514100000070E039544166666666E1125141B81E851BDD395441B81E859BDD125141295C8F02DB395441D7A3708DDC12514148E17A84DA395441EC51B8CEDA125141AE47E1EADB39544133333383D9125141CDCCCCECDF39544166666636D8125141E17A14AEE33954415C8FC255D6125141F6285CCFE6395441AE47E12AD4125141666666A6E93954411F85EBD1D2125141CDCCCC3CEB395441F6285C2FD1125141D7A3701DED39544101030000000100000037000000A4703D2A0B135141E17A144E843954410AD7A3F009135141000000B084395441EC51B8EE06135141666666D68B39544133333373031351419A9999699339544185EB51A802135141F6285C0F9539544100000070011351411F85EB4197395441CDCCCC5CFF125141AE47E1FA9A395441333333B3FB125141F6285C1FA2395441666666A6F9125141713D0A47A63954415C8FC245F81251413D0AD773A83954413D0AD763F612514166666666AB395441B81E851BF512514152B81E35AE395441EC51B89EF4125141295C8FE2B0395441713D0AB7F212514114AE4791B439544114AE4741F0125141713D0A27B93954411F85EBD1EE1251419A999909BC3954415C8FC235EA125141F6285C7FC439544100000060E7125141333333E3C9395441D7A3700DE5125141333333F3CD395441A4703D9AE3125141295C8F32D0395441F6285CDFDE1251411F85EBD1D63954418FC2F598E0125141713D0AB7D739544152B81EC5E412514114AE4721DA3954410AD7A330EA1251413D0AD733DD39544185EB51A8ED1251419A999929DF3954413D0AD7D3F2125141F6285CAFE1395441F6285C9FF81251413D0AD753D639544148E17A64FA12514185EB5118D33954410AD7A320FE125141666666D6CC395441D7A370AD06135141C3F5281CBE39544148E17A440C1351410AD7A360B439544166666686101351419A9999E9AC395441B81E851B1113514152B81EB5AB3954417B14AE67141351415C8FC295A4395441713D0AE71A135141666666E69639544148E17A14201351418FC2F5188D395441295C8F822A1351419A999939773954411F85EB2135135141EC51B84E5C395441CDCCCCFC3D135141B81E85DB45395441A4703D7A3C135141C3F528BC45395441713D0A07371351419A99994945395441000000C02F13514114AE471144395441B81E854B2713514114AE4741453954417B14AE87221351411F85EBD147395441A4703D1A201351410AD7A3E04D3954418FC2F5D81E13514114AE4721523954413D0AD7531D135141F6285CDF58395441B81E851B1C135141295C8F125E39544185EB51681A1351413333331363395441AE47E1FA1713514152B81EB56839544148E17AE4141351415C8FC2E56F395441333333B311135141713D0A0776395441C3F5288C10135141000000B078395441000000400D13514114AE47017F395441A4703D2A0B135141E17A144E84395441
+</a>
+
+<b>
+0106000000010000000103000000010000006500000032E9A81E22135141EB9E8D53893954415871E06B24135141768DAA7B843954415BCF197524135141F622806A8439544177F72392251351412D07C01082395441FC16DFD5261351411759535C7F3954415BCE8AA92A135141542DEB2C7739544182F6AF652B13514151DC53B175395441C8980E773013514105CD1D6F6A39544191F3DEF733135141500314F6613954417DE6B2B337135141EF2229F0583954416A14CF843E135141793AB0F0443954416C052D933E1351414D2658EB44395441EAD6BB983E1351419EA041DB44395441A4703D7A3C135141C3F528BC45395441713D0A07371351419A99994945395441000000C02F13514114AE4711443954414B1582BA291351413D2C8D8444395441B81E854B2713514114AE4741453954411BD9253123135141736DAF2347395441F507B65F201351419A06E1FB51395441125B3C421E1351415E31C7EE59395441F30A879E1B1351413DD3D85B6239544105E7F043191351410EF3EBAA693954418F111357161351413F1F2C5B6F395441E54DFDBA1313514160507E6574395441BC1084081213514174959BB4773954417729DECA0E135141996B85137E395441950FEF000C1351413CE67D3183395441623F29270A13514159DC597D84395441EC51B8EE06135141666666D68B39544133333373031351419A9999699339544185EB51A802135141F6285C0F9539544100000070011351411F85EB419739544167000FFBFE12514166CCD6E49A3954417ECA2D73FB1251418EBEB201A2395441AE13CECDF9125141254D7664A53954415C8FC245F81251413D0AD773A839544167E078CFF61251415FC0537BAB395441C3DDEC45F6125141E509FA8EAB395441B81E851BF512514152B81E35AE3954415A29AB6CF412514161DCF983B0395441713D0AB7F212514114AE4791B43954412A8744D5EF1251411D91AD76BA395441B0BB5C93ED1251414C33140EBF395441D7C08640E9125141C81D29A0C7395441FDB1F79DE41251410643B55FD0395441B98DEB87DF125141CDBB9E55D8395441E2FB4807DD125141404D67C8DA395441132DBBF3DA125141C69B91D1DC39544133333383D9125141CDCCCCECDF39544166666636D8125141E17A14AEE33954415C8FC255D6125141F6285CCFE6395441AE47E12AD4125141666666A6E93954411F85EBD1D2125141CDCCCC3CEB395441F6285C2FD1125141D7A3701DED395441F6285CDFCE125141295C8FC2EF3954415C8FC2C5CC12514114AE47F1F1395441A4703DEACA1251419A9999C9F3395441D7A3709DC8125141CDCCCCECF53954410AD7A3B0C61251419A9999D9F7395441B81E85EBC5125141295C8F32F9395441333333D3C512514133333373FA3954417B14AEF7C6125141B81E85BBFB395441F6285C0FCA125141A4703D4AFD395441C3F528ECCE12514152B81EB5003A5441333333C3D0125141F6285C0F023A544188B86FB2D1125141D377FFF1023A5441F62C2415D41251411ED20DACFF395441CA2E04EDD612514151A1469FFB3954411B231B1ADA1251416253D2F9F6395441A68595E0DB125141CACA8D4CF43954417F348464DD125141F8FB130DF2395441E8E5B9F8DD125141549E3731F139544196ABE2B9DF1251410C4DB98DEE39544104ABAE85E1125141EA813BDAEB395441A464F5AAE612514186077119E43954417374189CE8125141CDC2C60FE1395441A5727637EA12514162514F32DE395441E9BAE439EA1251410BC35833DE395441BE1CD660EA125141935AF543DE395441A7597F64EA1251413F822B3EDE3954418BE00766EA12514199730B46DE39544117524C3CF01251413FA193C3E03954415B91FBC2F2125141AB096ED7E1395441DD18DD24F3125141E801A326E13954410DACB506F4125141D18CD67EDF395441E34F2644F5125141B207EB4CDD3954412831A1B8F6125141B607EBACDA3954414F8D307BF81251411397AD82D739544192B18980F812514109B81C79D7395441EA7A9BF7F81251417E5E0CA2D63954412A888B91FD1251416B62F147CE395441D7A370AD06135141C3F5281CBE395441378DA2070C135141BF350F4CB4395441686ACAFB0F135141980AF715AD395441D2C9FB61161351413E519DA7A039544188AD397A1913514103284B8A9A39544115C883801B135141C3A157879639544165F4395A1E13514183EC33F790395441C1DB533220135141EBDF3B448D39544132E9A81E22135141EB9E8D5389395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>425658 - 1708273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -909  </desc>
+<a>
+01060000000100000001030000000100000006000000CDCCCC6CF4835041D7A3707DC81E5541A4703D9AF3835041AE47E1BACA1E5541713D0A97108450411F85EBB1CF1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541CDCCCC6CF4835041D7A3707DC81E5541
+</a>
+
+<b>
+01060000000100000001030000000100000005000000057E0ED7108450416B38F70CCE1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541E7797A61F48350418BF2459CC81E5541057E0ED7108450416B38F70CCE1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>425658 - 3273491
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -909  </desc>
+<a>
+01060000000100000001030000000100000006000000CDCCCC6CF4835041D7A3707DC81E5541A4703D9AF3835041AE47E1BACA1E5541713D0A97108450411F85EBB1CF1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541CDCCCC6CF4835041D7A3707DC81E5541
+</a>
+
+<b>
+01060000000100000001030000000100000005000000057E0ED7108450416B38F70CCE1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541E7797A61F48350418BF2459CC81E5541057E0ED7108450416B38F70CCE1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429198 - 52908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000090000000A4703D2A02705141713D0A772BB15441295C8F820770514152B81EA529B15441B81E85EB0B705141D7A370AD27B15441B81E858B13705141C3F5288C24B154418FC2F5681D7051410AD7A3E020B15441C3F528FC1F70514152B81E851FB154410AD7A3D0287051419A9999D91DB154411F85EB11327051417B14AE171CB154413D0AD7F3347051417B14AE971BB1544133333353377051413D0AD7D31AB15441E17A143E3E7051411F85EB311AB1544100000080457051411F85EB7119B154415C8FC2C54A7051418FC2F50819B15441000000C0547051411F85EB7119B1544114AE47E158705141CDCCCCEC17B15441B81E85BB5970514185EB513816B154410000009059705141C3F5283C13B1544114AE47E158705141EC51B8EE10B1544114AE47F157705141B81E857B0FB154413D0AD7A355705141A4703D4A0EB15441295C8FA25270514152B81EF50CB154410AD7A3404F7051418FC2F5280DB15441295C8F324A705141666666760DB154418FC2F5F840705141333333030EB154410AD7A3F03E705141295C8F420EB154411F85EBD139705141A4703D5A0EB154418FC2F5B835705141CDCCCC9C0EB1544152B81E15337051411F85EBB10EB154413D0AD75331705141AE47E1DA0EB15441A4703D6A30705141E17A14BE0EB15441295C8FE22D705141F6285C0F0DB15441D7A3708D2C70514152B81E550CB154419A9999E9287051410AD7A3800DB15441C3F5285C25705141333333630DB15441CDCCCCDC1E705141295C8FB20FB15441666666961B705141666666A611B15441C3F5289C157051411F85EBB113B1544148E17A94127051410000000016B154417B14AE470F705141295C8FD219B1544148E17A540C705141713D0A371DB15441F6285CBF087051410AD7A3401FB154415C8FC2F504705141CDCCCC8C20B15441F6285C5F007051413D0AD75320B15441A4703D1AFC6F51410AD7A30020B154417B14AE97F96F51410000007020B1544114AE47E1F76F51415C8FC2F520B154410AD7A340F46F51419A99994922B15441D7A3701DF16F51413D0AD7C322B15441F6285C8FEC6F514148E17A0423B15441F6285CEFE86F51417B14AEB720B1544148E17A04E66F5141A4703D1A1FB15441CDCCCC3CE76F5141333333831CB1544185EB5198E86F514152B81E0519B15441E17A14EEE96F51418FC2F50817B154413D0AD793EB6F5141AE47E14A14B154415C8FC2E5EE6F5141F6285CEF0CB1544114AE47E1F06F5141CDCCCC2C09B15441B81E858BF36F51419A99996904B1544185EB5118F66F51417B14AED7FDB05441AE47E16AF76F5141B81E85ABF9B0544114AE4721FA6F5141B81E85EBF9B05441295C8F52FC6F5141B81E854BF9B054415C8FC2D5FE6F5141000000E0F5B05441B81E853B00705141F6285CFFF3B05441666666460370514114AE47B1F2B05441295C8F8204705141D7A3709DF2B0544148E17AF40470514133333393F4B054417B14AE670770514185EB5168F8B0544148E17A7409705141C3F5289CF9B054410AD7A3D00B70514148E17A24FAB054413D0AD7A30D705141E17A14BEF9B054410AD7A3600F705141E17A146EF9B05441D7A370BD11705141B81E853BFAB05441295C8F1214705141C3F5280CFCB0544185EB51F8177051417B14AEA7FBB054418FC2F5A81970514185EB5178FBB0544152B81E252270514114AE4791FAB05441EC51B88E2B705141CDCCCCCCF8B054418FC2F51830705141AE47E12AF9B05441713D0A97337051415C8FC2F5F9B05441333333B333705141333333D3F8B05441D7A3706D347051419A999999F6B054411F85EBB135705141A4703D6AF4B05441CDCCCC0C377051415C8FC255F0B054411F85EBB138705141C3F5280CEFB054417B14AED73A70514114AE4751ECB054411F85EB913D705141A4703D7AEAB054411F85EBA1417051419A999969E8B05441666666D64670514114AE47D1E7B0544148E17A544E7051415C8FC295E9B0544152B81E155070514114AE4761E8B05441E17A149E50705141713D0A47E4B054419A99995950705141A4703D5AE0B0544152B81E754F705141B81E859BDCB054410AD7A3F04D705141E17A148EDAB0544148E17A044C705141AE47E15AD9B05441295C8FF248705141000000A0DAB054411F85EBB14570514148E17A14DCB0544114AE47E13F705141713D0A57DEB05441AE47E17A387051411F85EBE1D9B05441CDCCCC0C35705141A4703D1AD8B05441000000C02F705141E17A14FED4B0544114AE47C12D7051415C8FC225D4B05441333333D32B70514185EB5108D7B0544185EB519829705141A4703D6AD8B05441E17A14BE2670514152B81E15D9B05441F6285C0F2270514114AE4711DAB054417B14AE971E7051419A9999F9E4B05441A4703DDA1B7051417B14AE77F1B05441EC51B88E1A7051410AD7A330F1B054416666666619705141D7A3706DEEB05441B81E856B1870514148E17A04EAB054419A99999918705141EC51B81EE5B05441E17A147E15705141713D0AE7E2B05441295C8F1210705141295C8FF2E1B05441A4703D1A097051419A999919E0B0544114AE473104705141B81E856BE0B054418FC2F558F36F5141C3F528FCE3B054411F85EBE1E66F51411F85EB61E7B0544166666686E06F514152B81E45EDB0544133333363D56F5141B81E859BF3B05441C3F528DCD36F5141713D0A97FAB05441D7A3700DD36F5141CDCCCC0CFDB05441EC51B81ED16F5141F6285C5F00B154415C8FC225CD6F5141EC51B8CE04B1544152B81E65C86F5141A4703DCA0AB15441B81E853BC66F51411F85EB810DB154417B14AE57C36F5141D7A370DD0FB154417B14AE97C66F514114AE471112B1544133333363C86F514114AE47E10FB154410AD7A360CA6F51416666666611B1544100000000CA6F514114AE47F113B154413D0AD733D76F5141EC51B81E16B15441B81E85CBD56F5141EC51B84E1AB1544166666676D36F5141B81E85FB1DB1544152B81EC5D16F5141666666D623B15441666666A6CF6F51410AD7A3302BB15441B81E854BD66F5141333333932AB15441EC51B89ED66F5141A4703D8A31B15441F6285C9FE46F514152B81E7530B15441713D0A27F06F51410AD7A3902FB15441B81E852BF36F51417B14AE372FB15441B81E852BFC6F51419A9999E92CB15441A4703D2A02705141713D0A772BB15441
+</a>
+
+<b>
+0106000000010000000103000000010000004E0000007ABA069C50705141EFF0E728E4B05441ADA175C84F7051411A1538F9DDB054415CB7F94F4F705141EDAE4769DCB054410112E49D4E705141083F6978DBB054413B706D514E7051412C82FD10DBB0544154F4CFBA4D70514148407B6CDAB054412CCB63AD4B7051412CC60E7FD9B05441EAC7AC2C49705141ADB1F887DAB054419244C83E46705141702B77D5DBB054411F85EBB14570514148E17A14DCB0544114AE47E13F705141713D0A57DEB05441D64D44933C705141F96E6E59DCB054414BE09E4E3B705141F53BE095DBB054413490D7393970514141E6F254DAB05441C98B62A638705141BF3720FCD9B054416D8F8E313670514138932AB2D8B05441CDCCCC0C35705141A4703D1AD8B05441E725531731705141A4578AC7D5B05441C3503D872E705141FEC9A979D4B0544114AE47C12D7051415C8FC225D4B05441333333D32B70514185EB5108D7B0544185EB519829705141A4703D6AD8B0544164C7AC51287051410C3AADB6D8B054410CF566F821705141430F8859DAB054419DF5468A1E7051417521B536E5B05441A4703DDA1B7051417B14AE77F1B0544117F093D31B705141744E0396F1B054416B5AF3AF197051412D646658FBB0544153848C691C7051412182602DFBB05441710AE300237051412CFE0268FAB05441CB8EB83D24705141AB11842CFAB05441EC51B88E2B705141CDCCCCCCF8B05441B4D55D8F2C705141432693E1F8B05441BB82B58D2D705141D2C029F6F8B054418FC2F51830705141AE47E12AF9B05441C5CFE3A9307051410749C44BF9B05441FE7216A1317051413E84C669F9B05441713D0A97337051415C8FC2F5F9B05441333333B333705141333333D3F8B05441D7A3706D347051419A999999F6B05441CF61658D347051410F198362F6B05441CB4459E534705141AABAE4CAF5B0544102E55F37357051411BEA7D3DF5B054412EABB95B357051411902D4FEF4B054417413628235705141E7ED2FBCF4B0544150C678DA3570514120C122F0F3B054415F9D7CF735705141D201C598F3B054416FA0DD22367051419A092716F3B054414892D8433670514130BDD8B2F2B05441E190804F36705141EEB8BF8FF2B05441CDCCCC0C377051415C8FC255F0B05441DF7BAC5B37705141D5090718F0B05441C268E3C7377051415CA854C3EFB0544167CB3310387051410F7BBB8AEFB05441221165ED38705141CA8C8DC0EEB054417B14AED73A70514114AE4751ECB054415D1FB14F3B7051412E985100ECB0544168A9E2F93B705141C920818DEBB054411F85EB913D705141A4703D7AEAB05441E7F2AEE34070514196794CCAE8B0544193D9AA7C41705141AA29897CE8B054411F85EBA1417051419A999969E8B0544173F7525442705141ABC03455E8B054419DAAF38A427051410A1EF64EE8B05441187291F5427051414114C642E8B05441D93677D54370514164E72D29E8B05441DA70131F44705141C6C2C320E8B05441666666D64670514114AE47D1E7B05441FA7A79E548705141BE449E4DE8B05441DC6A9262497051418E08216BE8B054418BADFBDE4A7051416F77DEC4E8B05441E93F4EB64B705141D805AAF7E8B05441557B246C4E705141306B7D85E9B05441C369A320507051418E70F408E8B054410CC97C2E50705141FBBAC19EE7B05441E33A404150705141AAD6DF0EE7B0544146DC504E507051417576B0AAE6B054417ABA069C50705141EFF0E728E4B05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 3048935
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441F6285C5F09625141D7A370DD5EC154416666663604625141AE47E1BA64C15441F6285CDF00625141295C8FF269C15441B81E85BBFF6151419A9999B96BC154413D0AD783FE6151410AD7A3C06CC1544152B81E75FD615141713D0A076FC15441295C8FA2FD61514152B81EF570C1544152B81E95FC6151417B14AED772C15441EC51B8FEF9615141AE47E1AA77C15441F6285CCFF86151411F85EB717CC154413D0AD7E3F7615141713D0AC77FC154411F85EBC1F76151413D0AD7E382C154418FC2F548F8615141B81E85AB87C154413D0AD753F8615141EC51B8DE8AC15441F6285C5FF86151411F85EBA18DC15441713D0A27F8615141AE47E12A94C154410AD7A320F9615141295C8F5298C1544148E17A44F8615141EC51B87E9CC1544148E17A24F861514166666666A2C15441F6285CDFF86151418FC2F5A8A7C1544152B81ED5FA61514166666676ACC15441333333F3FC615141F6285C3FAFC15441F6285C4FFE61514114AE4701B2C15441CDCCCC6C00625141C3F5286CB9C154419A99999904625141AE47E19AC1C1544148E17A24086251410AD7A3E0C7C154411F85EBB109625141C3F528BCC9C15441295C8F1210625141666666A6CEC1544185EB513813625141C3F528CCCCC15441A4703D3A166251410AD7A3C0CBC15441E17A146E136251417B14AE97C6C15441295C8F320F625141CDCCCCECBCC15441713D0A470A625141713D0AA7B1C1544152B81E650862514148E17A34AAC15441E17A147E06625141CDCCCCECA1C15441295C8F2205625141713D0A479AC15441C3F528DC0A625141F6285C8F99C15441C3F5288C09625141E17A144E92C154418FC2F51809625141000000508DC1544152B81E1509625141D7A3703D83C154417B14AE770962514148E17A347FC1544148E17A940A625141E17A148E78C15441713D0AF70B625141F6285C8F71C154410AD7A36012625141713D0A3773C15441F6285CCF1662514185EB516874C15441AE47E1BA1F62514114AE47216FC154411F85EBF11F6251410AD7A3006FC15441D7A3707D20625141333333B372C15441CDCCCC7C206251411F85EB0175C15441A4703D3A20625141E17A145E77C1544148E17A64236251410AD7A3B075C154415C8FC23527625141A4703DEA73C15441B81E855B2D625141295C8F6271C15441713D0AB733625141713D0AB76EC154411F85EBC13362514114AE47C16AC154411F85EB6138625141295C8F526AC15441C3F528CC386251410AD7A3A06EC15441C3F5289C3962514148E17A2475C15441000000B03A6251411F85EB217BC15441AE47E19A42625141C3F528BC79C15441C3F5280C4162514152B81E3570C154419A99999941625141295C8F0270C15441C3F528BC51625141E17A147E6BC154418FC2F51850625141E17A142E61C15441D7A3704D4962514185EB51E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C1544148E17A84576251415C8FC24537C1544114AE4781566251417B14AE3737C1544148E17AD455625141E17A14FE36C15441B81E856B54625141295C8FD236C15441713D0A7753625141E17A14FE36C1544152B81E655262514114AE47E136C15441C3F528FC506251417B14AE3737C15441F6285C4F50625141C3F5289C37C154410AD7A3B04F625141AE47E13A38C15441F6285C2F4F6251413333338338C154411F85EBF14D6251413333338338C15441A4703DAA4D625141E17A14AE38C15441666666A64C6251411F85EB2139C1544114AE47B14B6251413333331339C15441295C8F824A625141333333A339C15441C3F5289C49625141333333A339C154410AD7A350486251416666668639C1544100000030476251410000003039C15441AE47E1AA4562514114AE479138C15441F6285CEF4462514148E17AE437C154415C8FC225446251415C8FC2D537C154415C8FC20543625141E17A148E37C154410AD7A310426251418FC2F5B837C154411F85EBE1406251416666666638C15441000000D03F625141295C8FF237C15441F6285C3F3F625141AE47E13A38C154418FC2F5583E6251417B14AEE738C154413D0AD7F33D625141E17A14AE38C154418FC2F5383D625141AE47E13A38C15441EC51B86E3C625141000000A038C154419A9999793B6251410000003039C15441CDCCCCCC3A625141CDCCCCBC38C154417B14AEE739625141333333D338C154411F85EBA137625141C3F5288C39C15441A4703DEA346251413D0AD7433CC15441EC51B88E2A6251416666662639C154417B14AE6729625141EC51B86E36C154411F85EBB12762514148E17A7436C15441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000002F870ED34F625141AF975DEC5FC154419D9F39394F625141A09963285DC15441BCD3BA5F4E625141DC206A3F59C154416F8015964D6251415B47629F55C15441C7F9505A4D6251410CF5508C54C15441582ED94A4C62514195C6F1AA4FC15441996164D24B625141BA2792804DC15441DC04A14D4B625141B5C28E1D4BC15441B51D130F4B6251412747AAFD49C1544131B87B1342625141769562A84BC15441F3D6CDC23A625141973E696C4DC15441FD15575D38625141E3CFFF8E4EC15441890D90133462514190E6748350C15441232BE7152E6251412FD7CB2B54C15441A1FC01802B62514121B1ADDF55C154415B4D2ACC22625141CC56C39C5BC15441122DF3E01D625141239D18D45EC15441ACC07F5D1C6251416F2EAFF65FC15441D045953120625141A21597D05FC15441C98A76362462514143AB286D60C15441DC5ACDF5256251414C13D44C61C1544127EE9B0E28625141888A211662C15441B5D3B5152A625141162E73A563C154415733351C2C625141DD3D4FE264C15441CA42F4252F6251417ACD9C0567C154417C1209D6306251410CBD866269C154414DC248D931625141E80C2A2C6AC154412F870ED34F625141AF975DEC5FC15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 3302365
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441F6285C5F09625141D7A370DD5EC154416666663604625141AE47E1BA64C15441F6285CDF00625141295C8FF269C15441B81E85BBFF6151419A9999B96BC154413D0AD783FE6151410AD7A3C06CC1544152B81E75FD615141713D0A076FC15441295C8FA2FD61514152B81EF570C1544152B81E95FC6151417B14AED772C15441EC51B8FEF9615141AE47E1AA77C15441F6285CCFF86151411F85EB717CC154413D0AD7E3F7615141713D0AC77FC154411F85EBC1F76151413D0AD7E382C154418FC2F548F8615141B81E85AB87C154413D0AD753F8615141EC51B8DE8AC15441F6285C5FF86151411F85EBA18DC15441713D0A27F8615141AE47E12A94C154410AD7A320F9615141295C8F5298C1544148E17A44F8615141EC51B87E9CC1544148E17A24F861514166666666A2C15441F6285CDFF86151418FC2F5A8A7C1544152B81ED5FA61514166666676ACC15441333333F3FC615141F6285C3FAFC15441F6285C4FFE61514114AE4701B2C15441CDCCCC6C00625141C3F5286CB9C154419A99999904625141AE47E19AC1C1544148E17A24086251410AD7A3E0C7C154411F85EBB109625141C3F528BCC9C15441295C8F1210625141666666A6CEC1544185EB513813625141C3F528CCCCC15441A4703D3A166251410AD7A3C0CBC15441E17A146E136251417B14AE97C6C15441295C8F320F625141CDCCCCECBCC15441713D0A470A625141713D0AA7B1C1544152B81E650862514148E17A34AAC15441E17A147E06625141CDCCCCECA1C15441295C8F2205625141713D0A479AC15441C3F528DC0A625141F6285C8F99C15441C3F5288C09625141E17A144E92C154418FC2F51809625141000000508DC1544152B81E1509625141D7A3703D83C154417B14AE770962514148E17A347FC1544148E17A940A625141E17A148E78C15441713D0AF70B625141F6285C8F71C154410AD7A36012625141713D0A3773C15441F6285CCF1662514185EB516874C15441AE47E1BA1F62514114AE47216FC154411F85EBF11F6251410AD7A3006FC15441D7A3707D20625141333333B372C15441CDCCCC7C206251411F85EB0175C15441A4703D3A20625141E17A145E77C1544148E17A64236251410AD7A3B075C154415C8FC23527625141A4703DEA73C15441B81E855B2D625141295C8F6271C15441713D0AB733625141713D0AB76EC154411F85EBC13362514114AE47C16AC154411F85EB6138625141295C8F526AC15441C3F528CC386251410AD7A3A06EC15441C3F5289C3962514148E17A2475C15441000000B03A6251411F85EB217BC15441AE47E19A42625141C3F528BC79C15441C3F5280C4162514152B81E3570C154419A99999941625141295C8F0270C15441C3F528BC51625141E17A147E6BC154418FC2F51850625141E17A142E61C15441D7A3704D4962514185EB51E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C1544148E17A84576251415C8FC24537C1544114AE4781566251417B14AE3737C1544148E17AD455625141E17A14FE36C15441B81E856B54625141295C8FD236C15441713D0A7753625141E17A14FE36C1544152B81E655262514114AE47E136C15441C3F528FC506251417B14AE3737C15441F6285C4F50625141C3F5289C37C154410AD7A3B04F625141AE47E13A38C15441F6285C2F4F6251413333338338C154411F85EBF14D6251413333338338C15441A4703DAA4D625141E17A14AE38C15441666666A64C6251411F85EB2139C1544114AE47B14B6251413333331339C15441295C8F824A625141333333A339C15441C3F5289C49625141333333A339C154410AD7A350486251416666668639C1544100000030476251410000003039C15441AE47E1AA4562514114AE479138C15441F6285CEF4462514148E17AE437C154415C8FC225446251415C8FC2D537C154415C8FC20543625141E17A148E37C154410AD7A310426251418FC2F5B837C154411F85EBE1406251416666666638C15441000000D03F625141295C8FF237C15441F6285C3F3F625141AE47E13A38C154418FC2F5583E6251417B14AEE738C154413D0AD7F33D625141E17A14AE38C154418FC2F5383D625141AE47E13A38C15441EC51B86E3C625141000000A038C154419A9999793B6251410000003039C15441CDCCCCCC3A625141CDCCCCBC38C154417B14AEE739625141333333D338C154411F85EBA137625141C3F5288C39C15441A4703DEA346251413D0AD7433CC15441EC51B88E2A6251416666662639C154417B14AE6729625141EC51B86E36C154411F85EBB12762514148E17A7436C15441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000002F870ED34F625141AF975DEC5FC154419D9F39394F625141A09963285DC15441BCD3BA5F4E625141DC206A3F59C154416F8015964D6251415B47629F55C15441C7F9505A4D6251410CF5508C54C15441582ED94A4C62514195C6F1AA4FC15441996164D24B625141BA2792804DC15441DC04A14D4B625141B5C28E1D4BC15441B51D130F4B6251412747AAFD49C1544131B87B1342625141769562A84BC15441F3D6CDC23A625141973E696C4DC15441FD15575D38625141E3CFFF8E4EC15441890D90133462514190E6748350C15441232BE7152E6251412FD7CB2B54C15441A1FC01802B62514121B1ADDF55C154415B4D2ACC22625141CC56C39C5BC15441122DF3E01D625141239D18D45EC15441ACC07F5D1C6251416F2EAFF65FC15441D045953120625141A21597D05FC15441C98A76362462514143AB286D60C15441DC5ACDF5256251414C13D44C61C1544127EE9B0E28625141888A211662C15441B5D3B5152A625141162E73A563C154415733351C2C625141DD3D4FE264C15441CA42F4252F6251417ACD9C0567C154417C1209D6306251410CBD866269C154414DC248D931625141E80C2A2C6AC154412F870ED34F625141AF975DEC5FC15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431999 - 208318
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5281CD8285141E17A14BEAB855441B81E854BDB2851417B14AE37A98554419A999989DD285141D7A370BDA6855441D7A3706DDF285141000000E0A4855441C3F528FCE0285141B81E85ABA3855441000000A0E228514148E17AC4A1855441E17A14AEE428514185EB51089D8554419A999909E52851411F85EB3198855441C3F5285CE22851419A999979948554410AD7A380DE285141D7A370DD8F85544133333303DE28514148E17A748E855441CDCCCCCCDC2851411F85EBD188855441B81E85FBD7285141EC51B82E87855441F6285CAFD7285141AE47E14A8D8554410AD7A360D72851410AD7A38090855441B81E85DBD6285141B81E853B94855441EC51B83ED6285141EC51B81E998554415C8FC2D5D6285141F6285CCF9B855441B81E85EBD728514152B81E65A2855441333333A3D7285141F6285C7FA48554418FC2F508D5285141C3F5286CA7855441F6285C2FD12851410AD7A300AB855441EC51B89ECE28514114AE4781AE855441B81E85CBCA2851410AD7A3B0B485544185EB51E8C828514114AE4731B785544185EB51A8C72851411F85EBF1BA8554419A999959C7285141A4703D9ABE855441AE47E1EACA2851417B14AE67C2855441EC51B84ECC2851418FC2F568C48554411F85EB81D02851411F85EBE1B9855441EC51B8FED128514185EB51E8B6855441D7A3702DD22851417B14AEF7B48554415C8FC2E5D228514166666666B285544100000030D5285141AE47E1EAAE855441713D0A17D6285141CDCCCCFCAD855441C3F5281CD8285141E17A14BEAB855441
+</a>
+
+<b>
+010600000001000000010300000001000000270000009A999909E52851411F85EB319885544107075C8DE22851411CA1F4BD94855441A5E5195CE228514104924D7A9485544173FFF6E1DE2851414B1CC05190855441949C57D9DE285141961E7247908554413DDF0793DD2851410C9D2E6B8C85544151E5288ADC28514102BF44BB888554410F6863F9D72851411915805A878554417BD164B4D72851415461E4CC8B855441818F097ED7285141A7A8C24D8F855441D8F82732D72851413EFEB9A2918554412391CD4BD6285141066FDF0199855441132F89D9D7285141D4DBF8F7A18554412854C5CDD728514111148742A3855441333333A3D7285141F6285C7FA48554413410EE0DD52851416AFE9266A7855441F9A3249FD1285141C53AB298AA8554410DEF87B7CE285141E591665FAE85544137B7556CCA2851418AD2D62EB5855441378DCEC8C828514178EBE18FB78554413A329EE1C7285141D85AE945BA855441CEA64499C7285141397CF3A4BB85544125DA828CC7285141713981D0BE855441351ACC8ACA28514138A04401C2855441D7947DE3CA2851416469C773C2855441CDCCCCBCCF2851418FC2F528B885544119BD8716D228514138DAB415B58554415BE507B2D22851417D0F6B4FB48554417EA15169D3285141F4EE5BDCB28554410EF2BE6ED5285141BE179F7BB0855441D8A0EBEDD72851411B334364AD85544169F158F3D9285141020B6640AB85544129B3FD9CDC285141E618D8C2A78554410C22D2C9DE285141E5737481A58554416747C7E0E02851412057B4C0A385544105C4A2E0E2285141A4E08C2FA1855441F877112DE428514177A794319E8554415CF84BC9E42851418F8B09989B8554419A999909E52851411F85EB3198855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432389 - 93370
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -36  </desc>
+<a>
+01060000000100000001030000000200000056000000333333A3A14C51411F85EBD185435441D7A3709DA24C51419A9999A9864354413D0AD723A24C51419A9999F987435441666666F6A04C5141C3F528CC8C4354419A999919A04C5141A4703D3A934354413D0AD7439F4C514185EB516899435441C3F5288C9D4C5141333333B3A243544152B81ED5AE4C514166666606A84354415C8FC275B04C5141EC51B81E9B4354413D0AD733B24C5141B81E854B8D4354413D0AD7D3B94C514152B81EC58E4354417B14AE57C04C514152B81EA58F43544114AE47F1C34C5141C3F5286C9043544185EB5158C74C5141000000B091435441C3F5287CC94C51410000009092435441A4703DEACB4C51410000007093435441A4703D8AC74C514148E17A24C14354418FC2F5A8CE4C51411F85EB21C2435441B81E850BD24C514114AE47B1B0435441EC51B86ED54C51413D0AD7939E43544166666606D34C51411F85EB619A435441CDCCCCBCD04C5141E17A141E954354419A999949D04C514148E17A1494435441CDCCCC3CD34C5141E17A140E954354418FC2F568D44C5141F6285CFF95435441EC51B83ED64C5141EC51B82E97435441E17A146ED74C5141E17A14BE974354419A9999A9D84C5141E17A141E9843544185EB5148DB4C51417B14AE879943544148E17A04E24C514148E17AD481435441333333F3DE4C5141E17A144E8043544148E17A34DC4C5141D7A3702D7F435441295C8FE2D94C514152B81E057E435441B81E854BD54C5141A4703DFA7B4354413D0AD7A3D14C51410AD7A3A07A43544152B81E25CE4C5141B81E852B7943544166666636C64C51416666661676435441E17A14BEC44C5141295C8F22764354419A9999E9C34C5141F6285CDF75435441E17A144EC24C5141AE47E1BA7543544114AE4751BF4C51418FC2F55876435441F6285CEFBB4C51417B14AE0776435441295C8FB2B54C514148E17AD474435441295C8F02B54C5141F6285CEF764354419A999999AE4C51419A999969884354415C8FC2E5A84C51415C8FC23586435441EC51B89E9D4C51419A999969814354419A9999C9974C5141A4703DBA7F435441F6285C6F834C5141713D0A5778435441295C8F82854C5141F6285CBF6E43544148E17AF4834C5141CDCCCC7C6E4354413D0AD7D3604C5141B81E850B69435441C3F5283C504C5141AE47E13A6743544185EB51884A4C51418FC2F548654354415C8FC245484C5141F6285C1F654354419A9999794B4C51411F85EB216C435441B81E85AB4C4C5141666666C66D435441AE47E16A4D4C5141EC51B83E6E435441A4703D6A4E4C51411F85EB616E435441E17A146E4F4C5141666666266E43544152B81EE5544C514148E17A146E4354418FC2F558594C5141EC51B83E6E435441666666065B4C51410AD7A3506E435441EC51B89E5C4C514152B81EB56E4354413D0AD7335E4C514152B81E456F435441000000C05F4C51415C8FC2E56E4354410AD7A3E0604C5141713D0AF76E435441E17A143E624C514185EB51686F4354418FC2F528644C51411F85EB3170435441C3F5286C664C514114AE470171435441E17A146E674C5141295C8F4271435441295C8F72684C51418FC2F51871435441AE47E14A6A4C514114AE47717043544152B81E856D4C5141E17A144E7143544114AE4741704C514152B81EB5734354410AD7A340714C5141EC51B83E74435441AE47E1BA734C5141CDCCCC7C7443544148E17A44764C51410AD7A3A074435441B81E85BB774C51415C8FC2D5744354411F85EB71784C5141295C8F4275435441666666667B4C5141713D0A57784354417B14AE57844C5141000000107B435441295C8F02904C51415C8FC2357F435441F6285C6F984C51413333337382435441A4703DEA9E4C51416666668684435441333333A3A14C51411F85EBD18543544106000000CDCCCC7CB24C5141666666D6894354418FC2F548B04C514133333373894354413D0AD773B14C5141A4703DBA864354418FC2F5C8B34C5141B81E85DB864354418FC2F5C8B34C5141AE47E18A88435441CDCCCC7CB24C5141666666D689435441
+</a>
+
+<b>
+010600000001000000010300000001000000550000009A999949D04C514148E17A1494435441D7A3709DCE4C5141D7A3704D9343544114AE4771CB4C5141333333C391435441EC51B8FEC94C5141000000F090435441D7A3704DC74C514185EB517890435441AE47E1DAC54C5141CDCCCC5C8F435441E17A14AEC44C5141713D0AA78E435441713D0A47C24C51419A9999E98D43544114AE47A1BF4C51419A9999698D43544152B81E55B94C5141713D0AE78C4354413D0AD7E3B84C5141EC51B86E8C435441A4703D1AB84C514185EB51388C4354417B14AEB7B64C5141EC51B86E8C43544133333373B24C5141AE47E12A8C435441F5CC1CD8AF4C51411DAA2DD98B435441DAB895A1AC4C5141B913138A8A435441E177D9CCA64C514124CE2F84884354410E4BA42EA44C51417750C39C86435441843B44299D4C51410855EACD82435441B8321136974C5141399FF40481435441BD5B5581824C5141AB18552A794354416AF33F70834C51410E30ED527843544170FDC313814C5141F49AE84277435441E7042704674C51412FB6B7FA6D4354414F875122694C514128B9FC546A435441883716F3674C5141647D01266A435441751344BF674C5141A917FA1D6A435441C3F5283C504C5141AE47E13A6743544185EB51884A4C51418FC2F548654354415C8FC245484C5141F6285C1F654354419A9999794B4C51411F85EB216C435441B81E85AB4C4C5141666666C66D435441AE47E16A4D4C5141EC51B83E6E435441A4703D6A4E4C51411F85EB616E435441E17A146E4F4C5141666666266E43544152B81EE5544C514148E17A146E4354418FC2F558594C5141EC51B83E6E435441666666065B4C51410AD7A3506E435441EC51B89E5C4C514152B81EB56E4354413D0AD7335E4C514152B81E456F435441000000C05F4C51415C8FC2E56E4354410AD7A3E0604C5141713D0AF76E435441E17A143E624C514185EB51686F4354418FC2F528644C51411F85EB3170435441C3F5286C664C514114AE470171435441E17A146E674C5141295C8F4271435441295C8F72684C51418FC2F51871435441AE47E14A6A4C514114AE47717043544152B81E856D4C5141E17A144E7143544114AE4741704C514152B81EB5734354410AD7A340714C5141EC51B83E74435441AE47E1BA734C5141CDCCCC7C7443544148E17A44764C51410AD7A3A074435441B81E85BB774C51415C8FC2D5744354411F85EB71784C5141295C8F4275435441666666667B4C5141713D0A57784354417B14AE57844C5141000000107B435441295C8F02904C51415C8FC2357F435441F6285C6F984C51413333337382435441A4703DEA9E4C51416666668684435441333333A3A14C51411F85EBD185435441D7A3709DA24C51419A9999A9864354413D0AD723A24C51419A9999F987435441666666F6A04C5141C3F528CC8C4354419A999919A04C5141A4703D3A934354413D0AD7439F4C514185EB516899435441C3F5288C9D4C5141333333B3A243544152B81ED5AE4C514166666606A84354415C8FC275B04C5141EC51B81E9B4354413D0AD733B24C5141B81E854B8D4354413D0AD7D3B94C514152B81EC58E4354417B14AE57C04C514152B81EA58F43544114AE47F1C34C5141C3F5286C9043544185EB5158C74C5141000000B091435441C3F5287CC94C51410000009092435441A4703DEACB4C51410000007093435441DFD421E7CB4C5141AE9B77909343544151F2EE85CC4C51417DF843D293435441A40FC41EC84C51417B2F7C66BC435441B9FF48AACE4C5141A2DE441DBD435441707DB591D04C514172757ADBB043544165E27311D34C51412A402DB99A43544166666606D34C51411F85EB619A435441CDCCCCBCD04C5141E17A141E954354419A999949D04C514148E17A1494435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432389 - 342148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -36  </desc>
+<a>
+01060000000100000001030000000200000056000000333333A3A14C51411F85EBD185435441D7A3709DA24C51419A9999A9864354413D0AD723A24C51419A9999F987435441666666F6A04C5141C3F528CC8C4354419A999919A04C5141A4703D3A934354413D0AD7439F4C514185EB516899435441C3F5288C9D4C5141333333B3A243544152B81ED5AE4C514166666606A84354415C8FC275B04C5141EC51B81E9B4354413D0AD733B24C5141B81E854B8D4354413D0AD7D3B94C514152B81EC58E4354417B14AE57C04C514152B81EA58F43544114AE47F1C34C5141C3F5286C9043544185EB5158C74C5141000000B091435441C3F5287CC94C51410000009092435441A4703DEACB4C51410000007093435441A4703D8AC74C514148E17A24C14354418FC2F5A8CE4C51411F85EB21C2435441B81E850BD24C514114AE47B1B0435441EC51B86ED54C51413D0AD7939E43544166666606D34C51411F85EB619A435441CDCCCCBCD04C5141E17A141E954354419A999949D04C514148E17A1494435441CDCCCC3CD34C5141E17A140E954354418FC2F568D44C5141F6285CFF95435441EC51B83ED64C5141EC51B82E97435441E17A146ED74C5141E17A14BE974354419A9999A9D84C5141E17A141E9843544185EB5148DB4C51417B14AE879943544148E17A04E24C514148E17AD481435441333333F3DE4C5141E17A144E8043544148E17A34DC4C5141D7A3702D7F435441295C8FE2D94C514152B81E057E435441B81E854BD54C5141A4703DFA7B4354413D0AD7A3D14C51410AD7A3A07A43544152B81E25CE4C5141B81E852B7943544166666636C64C51416666661676435441E17A14BEC44C5141295C8F22764354419A9999E9C34C5141F6285CDF75435441E17A144EC24C5141AE47E1BA7543544114AE4751BF4C51418FC2F55876435441F6285CEFBB4C51417B14AE0776435441295C8FB2B54C514148E17AD474435441295C8F02B54C5141F6285CEF764354419A999999AE4C51419A999969884354415C8FC2E5A84C51415C8FC23586435441EC51B89E9D4C51419A999969814354419A9999C9974C5141A4703DBA7F435441F6285C6F834C5141713D0A5778435441295C8F82854C5141F6285CBF6E43544148E17AF4834C5141CDCCCC7C6E4354413D0AD7D3604C5141B81E850B69435441C3F5283C504C5141AE47E13A6743544185EB51884A4C51418FC2F548654354415C8FC245484C5141F6285C1F654354419A9999794B4C51411F85EB216C435441B81E85AB4C4C5141666666C66D435441AE47E16A4D4C5141EC51B83E6E435441A4703D6A4E4C51411F85EB616E435441E17A146E4F4C5141666666266E43544152B81EE5544C514148E17A146E4354418FC2F558594C5141EC51B83E6E435441666666065B4C51410AD7A3506E435441EC51B89E5C4C514152B81EB56E4354413D0AD7335E4C514152B81E456F435441000000C05F4C51415C8FC2E56E4354410AD7A3E0604C5141713D0AF76E435441E17A143E624C514185EB51686F4354418FC2F528644C51411F85EB3170435441C3F5286C664C514114AE470171435441E17A146E674C5141295C8F4271435441295C8F72684C51418FC2F51871435441AE47E14A6A4C514114AE47717043544152B81E856D4C5141E17A144E7143544114AE4741704C514152B81EB5734354410AD7A340714C5141EC51B83E74435441AE47E1BA734C5141CDCCCC7C7443544148E17A44764C51410AD7A3A074435441B81E85BB774C51415C8FC2D5744354411F85EB71784C5141295C8F4275435441666666667B4C5141713D0A57784354417B14AE57844C5141000000107B435441295C8F02904C51415C8FC2357F435441F6285C6F984C51413333337382435441A4703DEA9E4C51416666668684435441333333A3A14C51411F85EBD18543544106000000CDCCCC7CB24C5141666666D6894354418FC2F548B04C514133333373894354413D0AD773B14C5141A4703DBA864354418FC2F5C8B34C5141B81E85DB864354418FC2F5C8B34C5141AE47E18A88435441CDCCCC7CB24C5141666666D689435441
+</a>
+
+<b>
+010600000001000000010300000001000000550000009A999949D04C514148E17A1494435441D7A3709DCE4C5141D7A3704D9343544114AE4771CB4C5141333333C391435441EC51B8FEC94C5141000000F090435441D7A3704DC74C514185EB517890435441AE47E1DAC54C5141CDCCCC5C8F435441E17A14AEC44C5141713D0AA78E435441713D0A47C24C51419A9999E98D43544114AE47A1BF4C51419A9999698D43544152B81E55B94C5141713D0AE78C4354413D0AD7E3B84C5141EC51B86E8C435441A4703D1AB84C514185EB51388C4354417B14AEB7B64C5141EC51B86E8C43544133333373B24C5141AE47E12A8C435441F5CC1CD8AF4C51411DAA2DD98B435441DAB895A1AC4C5141B913138A8A435441E177D9CCA64C514124CE2F84884354410E4BA42EA44C51417750C39C86435441843B44299D4C51410855EACD82435441B8321136974C5141399FF40481435441BD5B5581824C5141AB18552A794354416AF33F70834C51410E30ED527843544170FDC313814C5141F49AE84277435441E7042704674C51412FB6B7FA6D4354414F875122694C514128B9FC546A435441883716F3674C5141647D01266A435441751344BF674C5141A917FA1D6A435441C3F5283C504C5141AE47E13A6743544185EB51884A4C51418FC2F548654354415C8FC245484C5141F6285C1F654354419A9999794B4C51411F85EB216C435441B81E85AB4C4C5141666666C66D435441AE47E16A4D4C5141EC51B83E6E435441A4703D6A4E4C51411F85EB616E435441E17A146E4F4C5141666666266E43544152B81EE5544C514148E17A146E4354418FC2F558594C5141EC51B83E6E435441666666065B4C51410AD7A3506E435441EC51B89E5C4C514152B81EB56E4354413D0AD7335E4C514152B81E456F435441000000C05F4C51415C8FC2E56E4354410AD7A3E0604C5141713D0AF76E435441E17A143E624C514185EB51686F4354418FC2F528644C51411F85EB3170435441C3F5286C664C514114AE470171435441E17A146E674C5141295C8F4271435441295C8F72684C51418FC2F51871435441AE47E14A6A4C514114AE47717043544152B81E856D4C5141E17A144E7143544114AE4741704C514152B81EB5734354410AD7A340714C5141EC51B83E74435441AE47E1BA734C5141CDCCCC7C7443544148E17A44764C51410AD7A3A074435441B81E85BB774C51415C8FC2D5744354411F85EB71784C5141295C8F4275435441666666667B4C5141713D0A57784354417B14AE57844C5141000000107B435441295C8F02904C51415C8FC2357F435441F6285C6F984C51413333337382435441A4703DEA9E4C51416666668684435441333333A3A14C51411F85EBD185435441D7A3709DA24C51419A9999A9864354413D0AD723A24C51419A9999F987435441666666F6A04C5141C3F528CC8C4354419A999919A04C5141A4703D3A934354413D0AD7439F4C514185EB516899435441C3F5288C9D4C5141333333B3A243544152B81ED5AE4C514166666606A84354415C8FC275B04C5141EC51B81E9B4354413D0AD733B24C5141B81E854B8D4354413D0AD7D3B94C514152B81EC58E4354417B14AE57C04C514152B81EA58F43544114AE47F1C34C5141C3F5286C9043544185EB5158C74C5141000000B091435441C3F5287CC94C51410000009092435441A4703DEACB4C51410000007093435441DFD421E7CB4C5141AE9B77909343544151F2EE85CC4C51417DF843D293435441A40FC41EC84C51417B2F7C66BC435441B9FF48AACE4C5141A2DE441DBD435441707DB591D04C514172757ADBB043544165E27311D34C51412A402DB99A43544166666606D34C51411F85EB619A435441CDCCCCBCD04C5141E17A141E954354419A999949D04C514148E17A1494435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944505 - 400476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000B00000001030000000100000015000000295C8F12E07951410AD7A3C0A392544100000080D87951418FC2F588A6925441AE47E1CACC7951410AD7A340A892544114AE4731C579514185EB5108A9925441E17A14AEBF795141EC51B8EEA7925441295C8FE2C37951419A999919AC925441C3F528ACCB795141713D0AC7AA9254413D0AD783D6795141B81E850BAA925441D7A3700DE0795141666666C6A89254410AD7A3E0EB79514114AE4711A4925441000000B0F3795141000000F09F92544166666686FB795141F6285CCF9A925441B81E85DB737A5141A4703DFA42925441CDCCCC9C757A51410AD7A3B04192544185EB51D8747A5141F6285C8F3F9254418FC2F548757A5141713D0A473F925441D7A370FD737A51418FC2F5383D92544133333303FB7951410AD7A3A095925441666666B6F5795141F6285C1F99925441CDCCCC6CE879514100000030A0925441295C8F12E07951410AD7A3C0A39254410103000000010000000F000000AE47E1BA6C7A514114AE47615C93544114AE47716C7A5141A4703DBA5C93544148E17A246C7A5141E17A14BE609354413D0AD7236C7A51413D0AD77363935441F6285C3F6C7A5141713D0AC76693544114AE47216C7A51410AD7A3606993544185EB5168687A5141000000B08C93544152B81E45647A5141CDCCCC5CB89354413D0AD753617A51413D0AD743D393544152B81EB5647A51415C8FC295D39354413D0AD7936E7A514114AE47D16D9354410AD7A3906E7A5141CDCCCCAC6993544185EB51686E7A51419A9999796693544148E17A446D7A5141CDCCCC0C62935441AE47E1BA6C7A514114AE47615C9354410103000000010000001A000000F6285CEF727A5141AE47E18A27935441CDCCCC7C6F7A514148E17A2449935441D7A3702D6E7A5141EC51B8AE4D935441295C8FB26D7A5141B81E852B50935441F6285C5F6D7A5141295C8F82539354419A9999996D7A5141AE47E1FA53935441F6285C9F6E7A51418FC2F5B84F935441EC51B85E6F7A514114AE47B14D93544114AE47F1707A5141713D0AA74A9354415C8FC295717A514152B81EF548935441CDCCCC3C737A514185EB51C8419354417B14AE97737A514185EB51283D9354410AD7A3C0777A514114AE478114935441A4703D5A787A5141AE47E1BA0A93544100000060787A514152B81E5505935441C3F5283C787A5141F6285C2F02935441295C8FE2777A51417B14AE7701935441713D0A57777A5141EC51B81E02935441295C8F92767A5141F6285C5F05935441295C8F22767A51419A99995908935441F6285C1F757A51410AD7A3D0129354417B14AE67747A5141713D0A271893544185EB51E8737A5141000000301A93544185EB51D8727A5141C3F528CC239354410AD7A300737A51413D0AD71326935441F6285CEF727A5141AE47E18A279354410103000000010000000F000000C3F5281C8E7A514152B81EB587925441EC51B8AE8F7A51418FC2F5F88792544185EB51D8917A51418FC2F5A87B925441000000F0937A51415C8FC2556F925441EC51B8EE957A5141EC51B8FE62925441C3F5283C977A5141666666165A9254415C8FC255977A5141D7A3708D56925441B81E85EB967A51411F85EBF15392544166666606967A5141AE47E11A51925441B81E85DB957A51419A999929519254415C8FC275947A51411F85EBA151925441D7A3709D957A5141CDCCCCEC54925441295C8FC2957A51419A9999B9589254419A9999B9927A514185EB51786D925441C3F5281C8E7A514152B81EB5879254410103000000010000000F000000666666E6717A51415C8FC2A5109354411F85EB41737A51419A99991918935441D7A3708D737A5141F6285CEF17935441295C8F42747A51417B14AEB7129354417B14AE47757A5141B81E85FB07935441D7A370AD757A51417B14AEF7049354410AD7A360767A5141AE47E17A0193544100000000767A5141E17A144E00935441713D0A47757A51418FC2F53800935441CDCCCC5C737A51411F85EB6100935441F6285CCF727A51410AD7A3A000935441D7A3708D737A5141333333A3009354418FC2F558727A51413D0AD75306935441295C8FD2717A51413D0AD7430B935441666666E6717A51415C8FC2A51093544101030000000100000019000000333333E3987A514148E17A245092544166666616977A5141F6285CBF50925441AE47E1FA977A514100000020549254411F85EB51987A51418FC2F5B85692544185EB5138987A514114AE47415A925441AE47E1EA967A5141A4703D2A639254418FC2F5F8947A51413D0AD7836F92544114AE47E1927A5141666666D67B925441333333B3907A514152B81E258892544114AE4761947A514148E17AC48892544133333343957A5141295C8FF2889254418FC2F5F8967A51418FC2F5287F92544185EB51589A7A5141B81E856B70925441A4703D6A9C7A5141B81E856B6A925441713D0AD79C7A5141D7A3701D69925441B81E859B9F7A5141AE47E1EA55925441D7A370DD9C7A514152B81E355592544185EB51589D7A5141B81E859B51925441E17A146E9D7A5141666666965192544114AE4761A07A5141C3F5288C3C925441E17A14FE9F7A51410AD7A3403D925441713D0AE79C7A5141D7A3705D4392544152B81EA59B7A514148E17AD444925441666666469A7A51413D0AD73346925441333333E3987A514148E17A245092544101030000000100000009000000000000207B7A5141AE47E1BAFB925441000000F07B7A5141EC51B88EF6925441A4703DAA797A514133333323FE925441C3F5281C797A5141EC51B82E02935441CDCCCC0C797A514148E17A5405935441A4703D1A797A51419A9999B90A935441AE47E10A797A5141F6285C2F0D935441C3F5285C7A7A5141713D0A5701935441000000207B7A5141AE47E1BAFB9254410103000000010000000E0000003D0AD7037A7A5141B81E85FBEA92544185EB51B87A7A51415C8FC245E892544114AE47517B7A5141713D0A97E5925441CDCCCCAC7C7A5141B81E851BDF9254417B14AEC77E7A5141D7A3707DD6925441295C8FC2807A5141E17A144ECE925441666666367F7A5141CDCCCCECCD92544185EB51B8777A5141295C8F12EB92544100000080757A5141AE47E1EAF0925441713D0AE7727A51415C8FC295F5925441333333B3757A51411F85EB01F792544114AE47E1757A51417B14AE17F79254410AD7A330787A5141C3F5285CF19254413D0AD7037A7A5141B81E85FBEA925441010300000001000000150000007B14AEC7767A51415C8FC285F7925441B81E853B747A5141AE47E1DAFC9254411F85EBA1747A5141CDCCCCBCFD9254413D0AD723757A514185EB5178FE9254415C8FC2E5757A5141F6285C0FFF92544185EB51C8767A514133333373FF925441713D0A97777A5141295C8F92FF92544185EB5128787A514166666666FF925441295C8FA2787A5141E17A14DEFE9254418FC2F5F8787A5141D7A370EDFD925441EC51B83E7B7A514185EB5158F692544148E17AF47C7A514114AE4721F2925441EC51B84E857A5141AE47E16ACF925441295C8FC2817A5141CDCCCC8CCE9254419A9999B97F7A514185EB51B8D69254415C8FC2A57D7A51417B14AE57DF925441666666467C7A5141295C8FD2E5925441EC51B89E7B7A5141D7A3707DE8925441CDCCCCFC7A7A5141713D0A37EB925441A4703D3A797A51417B14AE87F19254417B14AEC7767A51415C8FC285F792544101030000000100000014000000295C8F22707A51417B14AE877093544114AE4711717A5141D7A370FD6B935441AE47E16A717A514185EB51886593544100000000717A514114AE47B1609354411F85EB81727A5141295C8F92519354415C8FC215747A51411F85EBC14B93544114AE4771757A51418FC2F5984193544148E17A74747A51410AD7A3C041935441295C8F82727A5141CDCCCC3C49935441333333C3717A5141F6285C2F4B9354411F85EBD16F7A5141D7A3707D4E935441295C8F126F7A5141EC51B89E5093544148E17A446E7A5141A4703D0A54935441F6285C8F6D7A514152B81E555C93544114AE47116E7A514185EB51D861935441B81E850B6F7A5141CDCCCCDC649354417B14AE776F7A5141E17A140E679354415C8FC2956F7A5141295C8FF26D935441666666566F7A51410AD7A38071935441295C8F22707A51417B14AE877093544101030000000100000014000000EC51B83E797A514148E17A143F925441B81E855B7B7A51417B14AEF73B925441713D0A679F7A51413D0AD7B321925441EC51B8AE9A7A5141713D0A4743925441713D0A779A7A514152B81ED544925441EC51B83E9B7A514114AE47F1439254410AD7A3509C7A5141E17A148E4292544152B81E159E7A5141F6285CEF3E925441CDCCCCFC9F7A5141CDCCCC4C3B92544152B81E95A17A5141D7A3702D37925441B81E859BA37A5141713D0A172E925441000000E0A67A514148E17A741F925441000000C0A67A5141666666E6189254419A999929A47A514152B81E551A925441CDCCCC6CA17A5141D7A3704D1C925441F6285C4F777A5141B81E85CB3A9254413D0AD7B3767A5141D7A3703D3B925441EC51B80E787A5141333333233D925441295C8FD2777A5141F6285C4F3D925441EC51B83E797A514148E17A143F925441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000C6A012B97C7A5141B87627B5E3925441666666467C7A5141295C8FD2E5925441EC51B89E7B7A5141D7A3707DE8925441CDCCCCFC7A7A5141713D0A37EB925441A4703D3A797A51417B14AE87F19254417B14AEC7767A51415C8FC285F7925441B81E853B747A5141AE47E1DAFC9254411F85EBA1747A5141CDCCCCBCFD9254413D0AD723757A514185EB5178FE9254415C8FC2E5757A5141F6285C0FFF92544185EB51C8767A514133333373FF925441713D0A97777A5141295C8F92FF92544185EB5128787A514166666666FF925441295C8FA2787A5141E17A14DEFE9254418FC2F5F8787A5141D7A370EDFD925441EC51B83E7B7A514185EB5158F692544148E17AF47C7A514114AE4721F2925441EC51B84E857A5141AE47E16ACF925441295C8FC2817A5141CDCCCC8CCE9254413B05A9B2807A5141C54B68D0D2925441C6A012B97C7A5141B87627B5E3925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944505 - 400502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000B00000001030000000100000015000000295C8F12E07951410AD7A3C0A392544100000080D87951418FC2F588A6925441AE47E1CACC7951410AD7A340A892544114AE4731C579514185EB5108A9925441E17A14AEBF795141EC51B8EEA7925441295C8FE2C37951419A999919AC925441C3F528ACCB795141713D0AC7AA9254413D0AD783D6795141B81E850BAA925441D7A3700DE0795141666666C6A89254410AD7A3E0EB79514114AE4711A4925441000000B0F3795141000000F09F92544166666686FB795141F6285CCF9A925441B81E85DB737A5141A4703DFA42925441CDCCCC9C757A51410AD7A3B04192544185EB51D8747A5141F6285C8F3F9254418FC2F548757A5141713D0A473F925441D7A370FD737A51418FC2F5383D92544133333303FB7951410AD7A3A095925441666666B6F5795141F6285C1F99925441CDCCCC6CE879514100000030A0925441295C8F12E07951410AD7A3C0A39254410103000000010000000F000000AE47E1BA6C7A514114AE47615C93544114AE47716C7A5141A4703DBA5C93544148E17A246C7A5141E17A14BE609354413D0AD7236C7A51413D0AD77363935441F6285C3F6C7A5141713D0AC76693544114AE47216C7A51410AD7A3606993544185EB5168687A5141000000B08C93544152B81E45647A5141CDCCCC5CB89354413D0AD753617A51413D0AD743D393544152B81EB5647A51415C8FC295D39354413D0AD7936E7A514114AE47D16D9354410AD7A3906E7A5141CDCCCCAC6993544185EB51686E7A51419A9999796693544148E17A446D7A5141CDCCCC0C62935441AE47E1BA6C7A514114AE47615C9354410103000000010000001A000000F6285CEF727A5141AE47E18A27935441CDCCCC7C6F7A514148E17A2449935441D7A3702D6E7A5141EC51B8AE4D935441295C8FB26D7A5141B81E852B50935441F6285C5F6D7A5141295C8F82539354419A9999996D7A5141AE47E1FA53935441F6285C9F6E7A51418FC2F5B84F935441EC51B85E6F7A514114AE47B14D93544114AE47F1707A5141713D0AA74A9354415C8FC295717A514152B81EF548935441CDCCCC3C737A514185EB51C8419354417B14AE97737A514185EB51283D9354410AD7A3C0777A514114AE478114935441A4703D5A787A5141AE47E1BA0A93544100000060787A514152B81E5505935441C3F5283C787A5141F6285C2F02935441295C8FE2777A51417B14AE7701935441713D0A57777A5141EC51B81E02935441295C8F92767A5141F6285C5F05935441295C8F22767A51419A99995908935441F6285C1F757A51410AD7A3D0129354417B14AE67747A5141713D0A271893544185EB51E8737A5141000000301A93544185EB51D8727A5141C3F528CC239354410AD7A300737A51413D0AD71326935441F6285CEF727A5141AE47E18A279354410103000000010000000F000000C3F5281C8E7A514152B81EB587925441EC51B8AE8F7A51418FC2F5F88792544185EB51D8917A51418FC2F5A87B925441000000F0937A51415C8FC2556F925441EC51B8EE957A5141EC51B8FE62925441C3F5283C977A5141666666165A9254415C8FC255977A5141D7A3708D56925441B81E85EB967A51411F85EBF15392544166666606967A5141AE47E11A51925441B81E85DB957A51419A999929519254415C8FC275947A51411F85EBA151925441D7A3709D957A5141CDCCCCEC54925441295C8FC2957A51419A9999B9589254419A9999B9927A514185EB51786D925441C3F5281C8E7A514152B81EB5879254410103000000010000000F000000666666E6717A51415C8FC2A5109354411F85EB41737A51419A99991918935441D7A3708D737A5141F6285CEF17935441295C8F42747A51417B14AEB7129354417B14AE47757A5141B81E85FB07935441D7A370AD757A51417B14AEF7049354410AD7A360767A5141AE47E17A0193544100000000767A5141E17A144E00935441713D0A47757A51418FC2F53800935441CDCCCC5C737A51411F85EB6100935441F6285CCF727A51410AD7A3A000935441D7A3708D737A5141333333A3009354418FC2F558727A51413D0AD75306935441295C8FD2717A51413D0AD7430B935441666666E6717A51415C8FC2A51093544101030000000100000019000000333333E3987A514148E17A245092544166666616977A5141F6285CBF50925441AE47E1FA977A514100000020549254411F85EB51987A51418FC2F5B85692544185EB5138987A514114AE47415A925441AE47E1EA967A5141A4703D2A639254418FC2F5F8947A51413D0AD7836F92544114AE47E1927A5141666666D67B925441333333B3907A514152B81E258892544114AE4761947A514148E17AC48892544133333343957A5141295C8FF2889254418FC2F5F8967A51418FC2F5287F92544185EB51589A7A5141B81E856B70925441A4703D6A9C7A5141B81E856B6A925441713D0AD79C7A5141D7A3701D69925441B81E859B9F7A5141AE47E1EA55925441D7A370DD9C7A514152B81E355592544185EB51589D7A5141B81E859B51925441E17A146E9D7A5141666666965192544114AE4761A07A5141C3F5288C3C925441E17A14FE9F7A51410AD7A3403D925441713D0AE79C7A5141D7A3705D4392544152B81EA59B7A514148E17AD444925441666666469A7A51413D0AD73346925441333333E3987A514148E17A245092544101030000000100000009000000000000207B7A5141AE47E1BAFB925441000000F07B7A5141EC51B88EF6925441A4703DAA797A514133333323FE925441C3F5281C797A5141EC51B82E02935441CDCCCC0C797A514148E17A5405935441A4703D1A797A51419A9999B90A935441AE47E10A797A5141F6285C2F0D935441C3F5285C7A7A5141713D0A5701935441000000207B7A5141AE47E1BAFB9254410103000000010000000E0000003D0AD7037A7A5141B81E85FBEA92544185EB51B87A7A51415C8FC245E892544114AE47517B7A5141713D0A97E5925441CDCCCCAC7C7A5141B81E851BDF9254417B14AEC77E7A5141D7A3707DD6925441295C8FC2807A5141E17A144ECE925441666666367F7A5141CDCCCCECCD92544185EB51B8777A5141295C8F12EB92544100000080757A5141AE47E1EAF0925441713D0AE7727A51415C8FC295F5925441333333B3757A51411F85EB01F792544114AE47E1757A51417B14AE17F79254410AD7A330787A5141C3F5285CF19254413D0AD7037A7A5141B81E85FBEA925441010300000001000000150000007B14AEC7767A51415C8FC285F7925441B81E853B747A5141AE47E1DAFC9254411F85EBA1747A5141CDCCCCBCFD9254413D0AD723757A514185EB5178FE9254415C8FC2E5757A5141F6285C0FFF92544185EB51C8767A514133333373FF925441713D0A97777A5141295C8F92FF92544185EB5128787A514166666666FF925441295C8FA2787A5141E17A14DEFE9254418FC2F5F8787A5141D7A370EDFD925441EC51B83E7B7A514185EB5158F692544148E17AF47C7A514114AE4721F2925441EC51B84E857A5141AE47E16ACF925441295C8FC2817A5141CDCCCC8CCE9254419A9999B97F7A514185EB51B8D69254415C8FC2A57D7A51417B14AE57DF925441666666467C7A5141295C8FD2E5925441EC51B89E7B7A5141D7A3707DE8925441CDCCCCFC7A7A5141713D0A37EB925441A4703D3A797A51417B14AE87F19254417B14AEC7767A51415C8FC285F792544101030000000100000014000000295C8F22707A51417B14AE877093544114AE4711717A5141D7A370FD6B935441AE47E16A717A514185EB51886593544100000000717A514114AE47B1609354411F85EB81727A5141295C8F92519354415C8FC215747A51411F85EBC14B93544114AE4771757A51418FC2F5984193544148E17A74747A51410AD7A3C041935441295C8F82727A5141CDCCCC3C49935441333333C3717A5141F6285C2F4B9354411F85EBD16F7A5141D7A3707D4E935441295C8F126F7A5141EC51B89E5093544148E17A446E7A5141A4703D0A54935441F6285C8F6D7A514152B81E555C93544114AE47116E7A514185EB51D861935441B81E850B6F7A5141CDCCCCDC649354417B14AE776F7A5141E17A140E679354415C8FC2956F7A5141295C8FF26D935441666666566F7A51410AD7A38071935441295C8F22707A51417B14AE877093544101030000000100000014000000EC51B83E797A514148E17A143F925441B81E855B7B7A51417B14AEF73B925441713D0A679F7A51413D0AD7B321925441EC51B8AE9A7A5141713D0A4743925441713D0A779A7A514152B81ED544925441EC51B83E9B7A514114AE47F1439254410AD7A3509C7A5141E17A148E4292544152B81E159E7A5141F6285CEF3E925441CDCCCCFC9F7A5141CDCCCC4C3B92544152B81E95A17A5141D7A3702D37925441B81E859BA37A5141713D0A172E925441000000E0A67A514148E17A741F925441000000C0A67A5141666666E6189254419A999929A47A514152B81E551A925441CDCCCC6CA17A5141D7A3704D1C925441F6285C4F777A5141B81E85CB3A9254413D0AD7B3767A5141D7A3703D3B925441EC51B80E787A5141333333233D925441295C8FD2777A5141F6285C4F3D925441EC51B83E797A514148E17A143F925441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000BC3C683E977A51418459F6C6599254415C8FC255977A5141D7A3708D56925441B81E85EB967A51411F85EBF15392544166666606967A5141AE47E11A51925441B81E85DB957A51419A999929519254415C8FC275947A51411F85EBA151925441D7A3709D957A5141CDCCCCEC54925441295C8FC2957A51419A9999B9589254419A9999B9927A514185EB51786D925441C3F5281C8E7A514152B81EB587925441EC51B8AE8F7A51418FC2F5F88792544185EB51D8917A51418FC2F5A87B925441000000F0937A51415C8FC2556F925441EC51B8EE957A5141EC51B8FE62925441E6777FDC967A51419A709CA45C925441BC3C683E977A51418459F6C659925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>194765 - 237297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+0106000000010000000103000000010000003300000081B19569EE1751414D5E4FFDADF85441E053F59DED17514154CF852EACF854410CF75A15ED17514133DE3730ABF854416E43C453EB17514171233FF7A6F8544141EED936E91751419022D9A2A1F85441B7BDB411E717514181759DC19BF85441F073E079E61751417A75ABFF99F85441452ECF6BE517514159BC81FC95F85441A53BEDCBE4175141174B47AA92F8544184110578E517514178DA248588F85441934298FAE51751410AFD2D0184F85441523E0C73E6175141F76A2B517DF85441299CB569E6175141C58EEFFF78F854416AFE2B87E91751411367EC337AF85441F6285C8FEA1751419A9999E97AF854416856CE92E917514183307C4979F854417444A3EEE71751417E53349576F854411CFA7119E7175141D6F24F1274F854415EA89A76E61751411B1BACD871F85441E3242F6BE6175141CAD8F14071F85441961736A0E2175141E24842E671F854413825B0E5E1175141E5F2F29B75F85441B352E15DE1175141CEC675807AF85441AF8D1E0CE217514142E8ECAC82F854410EFA3BC5E217514196CB24578AF85441941736A0E21751411B0C640A8FF854419F522A56E2175141860CFDCC92F85441D54833C3E11751412BDB198D94F854411847E159E0175141F7DAD0BD94F85441A813F81AE21751412A71D3A49AF85441F8CFB91CE6175141BA0E4D0CA8F854416D8939B6E7175141C39EC50BADF8544172ACE32EED17514191C00841ACF854410305D2BFEC1751418A4FD20FAEF854411F85EB21EB175141EC51B85EB1F854415C8FC295EF1751415C8FC2A5B3F854411D68BD88F217514149105EA4B4F854416E28B05AF5175141FCE3E6DBB4F854415C8FC275F8175141CDCCCCFCB4F85441C67C1E36FB175141F1A8F225B5F854414429E2DFFC17514139D569EEB4F85441AB5FBD1DFF175141135ACF47B4F854415BC20F24011851418A7217E8B2F8544189D125D4041851419D1E42CFB0F85441A7DB8949071851415C630138AFF85441573EDC4F09185141D27B49D8ADF85441BE74B78D0B18514117DE021CACF85441FF2FF8240D185141ED98AAF0A9F85441485C6FED0C18514132FB6334A8F85441CDCCCC5CEF175141CDCCCCACB0F8544181B19569EE1751414D5E4FFDADF85441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000A4703D4A08185141D7A3703D96F85441713D0A7705185141CDCCCC5C92F85441666666C60318514114AE47D18FF8544152B81EF501185141000000B08CF8544133333373FF1751413D0AD7F387F85441666666F6F9175141713D0AE77CF85441B81E850BE7175141F6285C2F6DF8544100000060E61751419A99998971F85441713D0AB7E71751419A99993976F85441F6285C8FEA1751419A9999E97AF8544152B81E35E61751417B14AEE778F85441AE47E18AE61751413D0AD7037FF85441EC51B85EE517514152B81E6589F854418FC2F5C8E4175141A4703DDA92F85441F6285CDFE51751415C8FC23598F854411F85EB21E817514185EB51E89EF85441666666A6EB1751417B14AEC7A7F8544133333373ED175141F6285C0FACF85441CDCCCC5CEF175141CDCCCCACB0F85441713D0A070D185141713D0A47A8F854413D0AD7E30C18514166666666A7F854413D0AD7F30B1851419A9999B9A2F85441F6285CCF0A185141EC51B8FE9EF85441AE47E16A0A1851411F85EB419CF85441E17A149E09185141B81E859B99F85441A4703D4A08185141D7A3703D96F85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910123 - 1273883
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F5F8387151411F85EBF189645441CDCCCCEC23715141C3F528BCB06454417B14AE271771514114AE47D1C6645441B81E85DB15715141F6285C0FC96454418FC2F5D82171514185EB5178D0645441B81E85CB34715141C3F5285CAE645441C3F528BC4771514148E17A448C645441295C8F6244715141666666E68A645441A4703D2A427151417B14AE078A6454411F85EB213E715141EC51B86E88645441A4703DDA3A7151415C8FC215876454418FC2F5F8387151411F85EBF189645441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000C16234139715141101B3855A6645441B5A635A14771514169D1FD748C645441D683C8693171514141B8A60484645441C470E95A24715141A1B080CB7E645441FCD6189D1F715141E2D9B9C77D6454411D361C890E71514103164E409B64544144E4DE92FE7051419307FF56BA645441328A01FE2171514129DDA035D0645441219CD7D427715141D37391B2C5645441BFF61E0A2A71514185A5EEB8C1645441E6D7EC8A307151414D5622D0B56454410C16234139715141101B3855A6645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910123 - 4026201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F5F8387151411F85EBF189645441CDCCCCEC23715141C3F528BCB06454417B14AE271771514114AE47D1C6645441B81E85DB15715141F6285C0FC96454418FC2F5D82171514185EB5178D0645441B81E85CB34715141C3F5285CAE645441C3F528BC4771514148E17A448C645441295C8F6244715141666666E68A645441A4703D2A427151417B14AE078A6454411F85EB213E715141EC51B86E88645441A4703DDA3A7151415C8FC215876454418FC2F5F8387151411F85EBF189645441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000C16234139715141101B3855A6645441B5A635A14771514169D1FD748C645441D683C8693171514141B8A60484645441C470E95A24715141A1B080CB7E645441FCD6189D1F715141E2D9B9C77D6454411D361C890E71514103164E409B64544144E4DE92FE7051419307FF56BA645441328A01FE2171514129DDA035D0645441219CD7D427715141D37391B2C5645441BFF61E0A2A71514185A5EEB8C1645441E6D7EC8A307151414D5622D0B56454410C16234139715141101B3855A6645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>434909 - 59021
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -63  </desc>
+<a>
+010600000001000000010300000001000000110000006666667676B5504166666676E9E454418FC2F59872B550411F85EB51E6E45441D7A3703D6CB55041A4703D3AE1E45441666666666AB55041CDCCCCBCDBE45441E17A148E66B55041EC51B81EDBE454419A99991966B55041D7A370DDD7E45441C3F528AC64B55041A4703D9AC7E454413D0AD70364B5504114AE47F1B5E45441B81E85FB62B55041A4703D0AB5E4544114AE47C154B550417B14AE57B6E45441333333434EB55041CDCCCC1CB7E454417B14AE4747B5504114AE47F1B7E454410AD7A31049B55041B81E85EBF6E454416666662650B55041CDCCCCACF9E4544185EB51485EB55041B81E852BFFE45441A4703DCA65B5504152B81EF500E554416666667676B5504166666676E9E45441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C3F528AC64B55041A4703D9AC7E45441F9437EA364B550411CD374B1C6E45441B81E85FB62B55041A4703D0AB5E454417B14AE4747B5504114AE47F1B7E454410AD7A31049B55041B81E85EBF6E454416666662650B55041CDCCCCACF9E4544133D094C658B55041B5A06207FDE45441F3233C3F5EB550417174D6C9FEE45441EFAC2F2A62B550411BA2271800E554416820E08165B550415CEEE3E300E554416666667676B5504166666676E9E45441D7A3703D6CB55041A4703D3AE1E45441666666666AB55041CDCCCCBCDBE45441E17A148E66B55041EC51B81EDBE454419A99991966B55041D7A370DDD7E45441C3F528AC64B55041A4703D9AC7E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436963 - 3013887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002600000048E17A9478115141000000D002F854417B14AE577A115141F6285CEF00F85441333333537B115141AE47E18AFFF75441666666767C115141F6285CDFFDF75441D7A370FD7C1151411F85EB11FDF754419A9999C97D11514185EB5188FAF754411F85EB117E1151415C8FC215F9F75441A4703D3A7E1151418FC2F5B8F7F75441B81E851B7E1151419A999999F5F75441E17A14DE7D115141333333A3F3F754418FC2F5987D115141EC51B8CEF2F75441EC51B8CE7C115141E17A145EF1F754411F85EB417B115141295C8F82EFF7544133333383791151411F85EBD1EDF7544148E17A747711514100000030ECF7544148E17AC473115141F6285CEFE9F754411F85EB6170115141B81E85FBE7F75441EC51B8EE6E115141E17A144EEBF75441C3F528FC6C11514185EB5188EEF75441AE47E17A6A115141000000D0F1F754411F85EBA167115141A4703D0AF6F7544185EB51F865115141E17A14FEF7F7544133333353631151411F85EB11FBF754417B14AE77611151418FC2F5F8FDF75441295C8F42611151419A99996901F854410000006061115141713D0A4703F85441CDCCCC6C621151415C8FC23504F8544152B81EF561115141713D0A9707F85441C3F5289C611151418FC2F55808F8544133333313621151413D0AD7A308F854413D0AD7A3641151410000000008F85441EC51B89E661151419A99997907F854410AD7A3006A1151417B14AEB706F85441713D0A676D115141C3F5286C06F854411F85EB7171115141CDCCCCEC05F85441713D0AE773115141D7A370ED04F85441D7A3702D7611514152B81E1504F8544148E17A9478115141000000D002F85441
+</a>
+
+<b>
+010600000001000000010300000001000000180000001F85EB6170115141B81E85FBE7F754411F85EB716B115141CDCCCC0CE5F7544170E4FAF969115141CFB900D8E7F75441C27FA09E67115141667AC790EBF75441B165529964115141EEBA61A0EFF75441D1496F9061115141BBC5CCB4F3F754415B1920595F115141372C78AFF6F75441DE8C57AB5C1151414094DFD2FAF754415C5132C15A115141C298432BFEF75441BA90D9A759115141C284443A00F85441C29645E0581151411D481BB001F8544142DB3DFC59115141E75CED0E02F854412E3DFBC75B11514192E5FE0002F85441C7C1FE5B5D115141EB9056BB01F85441B9F159AA5E115141AEEB138EFFF75441F9CA0584601151411133A74DFEF75441C077AE4C611151414B2AC744FEF754416705B44E651151419D8E6EC3F8F7544191626EA2681151414C126A8DF4F7544197396DDE6B1151411C3174FEEFF75441889D4BEC6D115141AFDE5AFAECF7544118232DB56F1151418E5F5787E9F754414E3EB5DC6F115141AB8AA3DCE8F754411F85EB6170115141B81E85FBE7F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436963 - 3292433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002600000048E17A9478115141000000D002F854417B14AE577A115141F6285CEF00F85441333333537B115141AE47E18AFFF75441666666767C115141F6285CDFFDF75441D7A370FD7C1151411F85EB11FDF754419A9999C97D11514185EB5188FAF754411F85EB117E1151415C8FC215F9F75441A4703D3A7E1151418FC2F5B8F7F75441B81E851B7E1151419A999999F5F75441E17A14DE7D115141333333A3F3F754418FC2F5987D115141EC51B8CEF2F75441EC51B8CE7C115141E17A145EF1F754411F85EB417B115141295C8F82EFF7544133333383791151411F85EBD1EDF7544148E17A747711514100000030ECF7544148E17AC473115141F6285CEFE9F754411F85EB6170115141B81E85FBE7F75441EC51B8EE6E115141E17A144EEBF75441C3F528FC6C11514185EB5188EEF75441AE47E17A6A115141000000D0F1F754411F85EBA167115141A4703D0AF6F7544185EB51F865115141E17A14FEF7F7544133333353631151411F85EB11FBF754417B14AE77611151418FC2F5F8FDF75441295C8F42611151419A99996901F854410000006061115141713D0A4703F85441CDCCCC6C621151415C8FC23504F8544152B81EF561115141713D0A9707F85441C3F5289C611151418FC2F55808F8544133333313621151413D0AD7A308F854413D0AD7A3641151410000000008F85441EC51B89E661151419A99997907F854410AD7A3006A1151417B14AEB706F85441713D0A676D115141C3F5286C06F854411F85EB7171115141CDCCCCEC05F85441713D0AE773115141D7A370ED04F85441D7A3702D7611514152B81E1504F8544148E17A9478115141000000D002F85441
+</a>
+
+<b>
+010600000001000000010300000001000000180000001F85EB6170115141B81E85FBE7F754411F85EB716B115141CDCCCC0CE5F7544170E4FAF969115141CFB900D8E7F75441C27FA09E67115141667AC790EBF75441B165529964115141EEBA61A0EFF75441D1496F9061115141BBC5CCB4F3F754415B1920595F115141372C78AFF6F75441DE8C57AB5C1151414094DFD2FAF754415C5132C15A115141C298432BFEF75441BA90D9A759115141C284443A00F85441C29645E0581151411D481BB001F8544142DB3DFC59115141E75CED0E02F854412E3DFBC75B11514192E5FE0002F85441C7C1FE5B5D115141EB9056BB01F85441B9F159AA5E115141AEEB138EFFF75441F9CA0584601151411133A74DFEF75441C077AE4C611151414B2AC744FEF754416705B44E651151419D8E6EC3F8F7544191626EA2681151414C126A8DF4F7544197396DDE6B1151411C3174FEEFF75441889D4BEC6D115141AFDE5AFAECF7544118232DB56F1151418E5F5787E9F754414E3EB5DC6F115141AB8AA3DCE8F754411F85EB6170115141B81E85FBE7F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437037 - 194860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000730000007B14AEB79E0F5141F6285C5F96F85441EC51B87EA10F514148E17AB494F854411F85EB41A20F51411F85EB6193F85441B81E85CBA30F51413D0AD79393F85441F6285CEFA80F5141AE47E1DA98F854411F85EBA1AD0F514152B81E1594F8544114AE47D1B20F5141713D0A678DF8544100000000B50F514152B81E458AF8544185EB5178B80F514148E17A8485F85441295C8F12BB0F51411F85EB3182F85441000000A0BF0F5141666666667CF85441C3F5283CC30F5141D7A3700D78F854419A999979C60F51410AD7A39074F854415C8FC235C20F51413D0AD7036BF854413D0AD7F3C00F5141AE47E1DA6BF85441EC51B8CEBE0F51411F85EB816DF85441A4703DBABC0F5141713D0A376FF85441E17A143EBB0F51410AD7A3E070F8544152B81E55B60F5141E17A145E77F85441F6285C3FB20F51413D0AD7F37CF854411F85EB51AE0F514114AE478182F8544114AE47C1AC0F51419A99990985F85441295C8F92AA0F5141713D0A3788F85441713D0A17A70F5141000000F08CF854411F85EBC1A20F51413333338392F854413D0AD7039F0F5141EC51B82E8FF8544148E17AE4A20F5141B81E85CB89F85441333333B3A50F51413D0AD7E384F854411F85EB61A90F5141000000807DF8544114AE4761AA0F514148E17A747BF85441B81E859BAA0F51415C8FC2357BF854410AD7A3B0AB0F51415C8FC2057AF85441E17A14BEAD0F5141E17A147E77F854410AD7A360AF0F5141EC51B84E75F85441295C8FD2B00F51413333337372F85441CDCCCC4CB10F51416666663671F85441D7A370BDB10F514185EB51A86FF854415C8FC2D5B20F51417B14AE676CF85441EC51B81EB30F5141E17A14FE6BF85441D7A3707DAF0F5141A4703DDA6AF85441F6285CEFA60F51413333333368F8544133333313A30F5141A4703D0A67F85441295C8F42960F5141EC51B85E6FF85441A4703DCA950F514152B81E6570F854417B14AE97940F5141713D0A3773F8544100000050930F51410AD7A32078F85441713D0A97920F51415C8FC2F579F85441D7A370ED910F5141CDCCCC9C7AF8544114AE47A1900F5141A4703D5A7CF85441E17A149E8F0F5141333333037EF85441AE47E1EA8E0F5141CDCCCC3C7FF85441666666F68B0F5141EC51B85E85F85441E17A14EE880F51410AD7A3908BF85441C3F528BC870F5141000000308DF8544114AE47E1860F51410AD7A3208EF85441B81E852B850F5141EC51B87E8FF8544114AE4781830F51413333334390F85441CDCCCCDC800F5141B81E85FB8FF85441D7A370CD7D0F51419A9999998FF85441AE47E1DA7C0F5141CDCCCCBC8FF85441EC51B83E7B0F5141713D0AF78FF85441B81E85CB770F5141713D0A5790F8544152B81EC5750F5141666666A690F854417B14AE37740F51415C8FC2C590F854419A9999A9720F51417B14AED790F854419A9999F9710F51410AD7A3F090F85441D7A3707D6C0F51410000001090F8544114AE4731690F5141D7A3700D8BF8544152B81EA5680F5141D7A3705D8AF854413D0AD7C3630F5141713D0A5791F854415C8FC2D55F0F5141D7A370CD96F854415C8FC2555D0F5141000000509AF854419A9999195C0F5141666666469DF854418FC2F5A85B0F51415C8FC225A0F854418FC2F5485C0F5141000000D0A1F854418FC2F5685D0F5141F6285C8FA4F85441A4703D4A5E0F514185EB5128A7F854413D0AD7E3610F5141AE47E1DAA6F8544152B81E75670F5141295C8F32A6F85441333333B3670F5141A4703D9AA5F854413D0AD723680F5141713D0AC7A4F8544114AE4701690F5141A4703D6AA3F8544166666696690F51413D0AD7A3A2F85441666666A66D0F51413D0AD7739DF8544114AE47416E0F51415C8FC2B59CF85441333333E36E0F51411F85EB219CF854415C8FC2556F0F5141AE47E1AA9BF854415C8FC235700F51411F85EBC19AF85441E17A141E710F514152B81EB599F8544152B81E35720F51411F85EB7198F85441C3F5289C730F5141B81E85AB96F8544133333353740F5141A4703DCA95F85441295C8FD2740F51410AD7A35095F854413D0AD773770F51411F85EBB193F854417B14AEA7790F51418FC2F57892F85441B81E85DB7C0F5141713D0AC791F854417B14AE27810F51415C8FC27591F854417B14AED77E0F514148E17A7492F854411F85EBE17C0F5141C3F5284C93F85441C3F5286C790F514148E17A8495F85441B81E85BB760F5141E17A14DE97F854418FC2F5C8730F5141B81E850B9AF85441D7A3708D6F0F514148E17A949CF8544152B81EE5740F5141F6285C4F9CF8544133333303780F5141F6285C7F9BF85441AE47E1BA7B0F5141000000E099F85441713D0A37800F5141B81E857B97F854418FC2F538820F51417B14AED796F8544148E17AD4840F51415C8FC29596F854410AD7A380880F51418FC2F51897F85441E17A141E8D0F51419A99990998F85441CDCCCC2C910F51410AD7A34098F8544166666616960F51419A99990998F85441E17A149E9A0F51416666668697F854417B14AEB79E0F5141F6285C5F96F85441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000DE016339710F5141EDBC2A949BF85441002CFB21710F514136C7EFA39BF8544167F5310A700F5141D471C2499CF854418E281000700F51418FF7D34F9CF8544152B81EE5740F5141F6285C4F9CF854418D1D4B30760F5141B4101AC09BF854418517C16A770F5141AC6E795B9BF854416739F98E780F51415CD4F6FD9AF85441643C41A47B0F5141AA63EB9A99F854413FDF15E77D0F514139C13A6898F8544144C6103B800F51416455EC3097F85441D5ED805C820F5141C5D5F03E96F854412A7D95FD820F5141DC2559FB95F8544183920EDD840F5141F7B4E7B295F85441094247DD870F514151B98DBA95F85441439F48188D0F514157D85E4797F854419D288D2E8E0F5141F6824B9397F854413C52D818900F5141B5FE436297F8544131E4A063910F5141B71A02FE96F85441B44EE4D9960F51418644B9F495F85441B7D366C1980F5141642B0DDD95F854412C761EAA9A0F5141FF812DDC95F85441FE0D748C9E0F51413D3D9DFB95F85441E6E0A4BF9F0F51411169CAC894F854418B2585DDA00F51412DFB81C593F854411D5995D5A10F51417818A9C692F8544154196788A10F5141894B480892F85441846CB96CA00F51412275717A91F8544152ACE6AD880F5141495850048CF85441C3F528BC870F5141000000308DF8544114AE47E1860F51410AD7A3208EF85441B81E852B850F5141EC51B87E8FF8544114AE4781830F51413333334390F854417B14AE27810F51415C8FC27591F854417B14AED77E0F514148E17A7492F854411F85EBE17C0F5141C3F5284C93F854415CDD9B91790F514150790F9D95F85441DA7299EE770F51414E4951D796F85441B81E85BB760F5141E17A14DE97F854418FC2F5C8730F5141B81E850B9AF85441DE016339710F5141EDBC2A949BF85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437037 - 302266
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000730000007B14AEB79E0F5141F6285C5F96F85441EC51B87EA10F514148E17AB494F854411F85EB41A20F51411F85EB6193F85441B81E85CBA30F51413D0AD79393F85441F6285CEFA80F5141AE47E1DA98F854411F85EBA1AD0F514152B81E1594F8544114AE47D1B20F5141713D0A678DF8544100000000B50F514152B81E458AF8544185EB5178B80F514148E17A8485F85441295C8F12BB0F51411F85EB3182F85441000000A0BF0F5141666666667CF85441C3F5283CC30F5141D7A3700D78F854419A999979C60F51410AD7A39074F854415C8FC235C20F51413D0AD7036BF854413D0AD7F3C00F5141AE47E1DA6BF85441EC51B8CEBE0F51411F85EB816DF85441A4703DBABC0F5141713D0A376FF85441E17A143EBB0F51410AD7A3E070F8544152B81E55B60F5141E17A145E77F85441F6285C3FB20F51413D0AD7F37CF854411F85EB51AE0F514114AE478182F8544114AE47C1AC0F51419A99990985F85441295C8F92AA0F5141713D0A3788F85441713D0A17A70F5141000000F08CF854411F85EBC1A20F51413333338392F854413D0AD7039F0F5141EC51B82E8FF8544148E17AE4A20F5141B81E85CB89F85441333333B3A50F51413D0AD7E384F854411F85EB61A90F5141000000807DF8544114AE4761AA0F514148E17A747BF85441B81E859BAA0F51415C8FC2357BF854410AD7A3B0AB0F51415C8FC2057AF85441E17A14BEAD0F5141E17A147E77F854410AD7A360AF0F5141EC51B84E75F85441295C8FD2B00F51413333337372F85441CDCCCC4CB10F51416666663671F85441D7A370BDB10F514185EB51A86FF854415C8FC2D5B20F51417B14AE676CF85441EC51B81EB30F5141E17A14FE6BF85441D7A3707DAF0F5141A4703DDA6AF85441F6285CEFA60F51413333333368F8544133333313A30F5141A4703D0A67F85441295C8F42960F5141EC51B85E6FF85441A4703DCA950F514152B81E6570F854417B14AE97940F5141713D0A3773F8544100000050930F51410AD7A32078F85441713D0A97920F51415C8FC2F579F85441D7A370ED910F5141CDCCCC9C7AF8544114AE47A1900F5141A4703D5A7CF85441E17A149E8F0F5141333333037EF85441AE47E1EA8E0F5141CDCCCC3C7FF85441666666F68B0F5141EC51B85E85F85441E17A14EE880F51410AD7A3908BF85441C3F528BC870F5141000000308DF8544114AE47E1860F51410AD7A3208EF85441B81E852B850F5141EC51B87E8FF8544114AE4781830F51413333334390F85441CDCCCCDC800F5141B81E85FB8FF85441D7A370CD7D0F51419A9999998FF85441AE47E1DA7C0F5141CDCCCCBC8FF85441EC51B83E7B0F5141713D0AF78FF85441B81E85CB770F5141713D0A5790F8544152B81EC5750F5141666666A690F854417B14AE37740F51415C8FC2C590F854419A9999A9720F51417B14AED790F854419A9999F9710F51410AD7A3F090F85441D7A3707D6C0F51410000001090F8544114AE4731690F5141D7A3700D8BF8544152B81EA5680F5141D7A3705D8AF854413D0AD7C3630F5141713D0A5791F854415C8FC2D55F0F5141D7A370CD96F854415C8FC2555D0F5141000000509AF854419A9999195C0F5141666666469DF854418FC2F5A85B0F51415C8FC225A0F854418FC2F5485C0F5141000000D0A1F854418FC2F5685D0F5141F6285C8FA4F85441A4703D4A5E0F514185EB5128A7F854413D0AD7E3610F5141AE47E1DAA6F8544152B81E75670F5141295C8F32A6F85441333333B3670F5141A4703D9AA5F854413D0AD723680F5141713D0AC7A4F8544114AE4701690F5141A4703D6AA3F8544166666696690F51413D0AD7A3A2F85441666666A66D0F51413D0AD7739DF8544114AE47416E0F51415C8FC2B59CF85441333333E36E0F51411F85EB219CF854415C8FC2556F0F5141AE47E1AA9BF854415C8FC235700F51411F85EBC19AF85441E17A141E710F514152B81EB599F8544152B81E35720F51411F85EB7198F85441C3F5289C730F5141B81E85AB96F8544133333353740F5141A4703DCA95F85441295C8FD2740F51410AD7A35095F854413D0AD773770F51411F85EBB193F854417B14AEA7790F51418FC2F57892F85441B81E85DB7C0F5141713D0AC791F854417B14AE27810F51415C8FC27591F854417B14AED77E0F514148E17A7492F854411F85EBE17C0F5141C3F5284C93F85441C3F5286C790F514148E17A8495F85441B81E85BB760F5141E17A14DE97F854418FC2F5C8730F5141B81E850B9AF85441D7A3708D6F0F514148E17A949CF8544152B81EE5740F5141F6285C4F9CF8544133333303780F5141F6285C7F9BF85441AE47E1BA7B0F5141000000E099F85441713D0A37800F5141B81E857B97F854418FC2F538820F51417B14AED796F8544148E17AD4840F51415C8FC29596F854410AD7A380880F51418FC2F51897F85441E17A141E8D0F51419A99990998F85441CDCCCC2C910F51410AD7A34098F8544166666616960F51419A99990998F85441E17A149E9A0F51416666668697F854417B14AEB79E0F5141F6285C5F96F85441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000DE016339710F5141EDBC2A949BF85441002CFB21710F514136C7EFA39BF8544167F5310A700F5141D471C2499CF854418E281000700F51418FF7D34F9CF8544152B81EE5740F5141F6285C4F9CF854418D1D4B30760F5141B4101AC09BF854418517C16A770F5141AC6E795B9BF854416739F98E780F51415CD4F6FD9AF85441643C41A47B0F5141AA63EB9A99F854413FDF15E77D0F514139C13A6898F8544144C6103B800F51416455EC3097F85441D5ED805C820F5141C5D5F03E96F854412A7D95FD820F5141DC2559FB95F8544183920EDD840F5141F7B4E7B295F85441094247DD870F514151B98DBA95F85441439F48188D0F514157D85E4797F854419D288D2E8E0F5141F6824B9397F854413C52D818900F5141B5FE436297F8544131E4A063910F5141B71A02FE96F85441B44EE4D9960F51418644B9F495F85441B7D366C1980F5141642B0DDD95F854412C761EAA9A0F5141FF812DDC95F85441FE0D748C9E0F51413D3D9DFB95F85441E6E0A4BF9F0F51411169CAC894F854418B2585DDA00F51412DFB81C593F854411D5995D5A10F51417818A9C692F8544154196788A10F5141894B480892F85441846CB96CA00F51412275717A91F8544152ACE6AD880F5141495850048CF85441C3F528BC870F5141000000308DF8544114AE47E1860F51410AD7A3208EF85441B81E852B850F5141EC51B87E8FF8544114AE4781830F51413333334390F854417B14AE27810F51415C8FC27591F854417B14AED77E0F514148E17A7492F854411F85EBE17C0F5141C3F5284C93F854415CDD9B91790F514150790F9D95F85441DA7299EE770F51414E4951D796F85441B81E85BB760F5141E17A14DE97F854418FC2F5C8730F5141B81E850B9AF85441DE016339710F5141EDBC2A949BF85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437258 - 52695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A14DEC75D5141B81E855BE0D3544185EB5148C75D5141EC51B83EE0D3544148E17A84C85D5141666666D6DDD3544166666696C95D514185EB5158DBD354418FC2F5A8CA5D5141CDCCCCCCD7D35441295C8F22CB5D5141D7A3708DD4D354417B14AE77CB5D51417B14AEB7D1D35441B81E859BCB5D5141C3F5284CCFD35441295C8F92CB5D514148E17AA4CDD3544152B81E75C65D51411F85EBB1CED35441295C8F62BF5D5141F6285C1FD0D354419A999969BF5D5141666666C6D1D354413D0AD703BF5D51415C8FC205D5D3544148E17AB4BC5D5141E17A14FEDBD35441B81E85BBBA5D51415C8FC2D5E1D354419A999939B95D5141CDCCCC8CE6D354419A999949B85D514185EB51C8EBD354410AD7A3D0B65D5141666666A6F1D35441666666C6B45D5141AE47E13AF8D35441333333F3B65D5141666666F6FFD35441295C8FC2B85D5141C3F528EC03D45441E17A14DEBB5D514148E17A040AD45441CDCCCC4CBC5D5141713D0AD70AD4544185EB51E8BE5D5141F6285C3F0CD454415C8FC285C05D5141A4703DFA0CD45441AE47E15AC15D5141A4703DAA0CD4544133333383C15D5141C3F5281C0AD454415C8FC2C5C15D51419A9999E908D45441333333C3C25D5141EC51B83E07D45441713D0A17C45D5141EC51B8CE05D4544114AE4751C55D51413D0AD7F304D454418FC2F5E8C65D5141713D0A3704D45441C3F5286CC85D51415C8FC26503D45441295C8F32C95D5141295C8FF202D45441AE47E1BAC95D514185EB51F803D45441CDCCCC3CC75D5141C3F5283C05D45441B81E853BC55D514114AE476106D454413D0AD703C45D5141C3F5284C07D454410AD7A310C45D51419A99994908D45441E17A146EC45D5141713D0A370AD4544166666656C35D51417B14AE070DD454410AD7A320C35D5141CDCCCC7C0ED45441B81E856BC45D5141333333F30FD454415C8FC215C35D51419A9999A910D45441713D0AC7C65D514185EB512817D45441B81E859BC85D514148E17A041BD4544166666606CA5D51418FC2F5C81ED454410AD7A370CB5D514148E17A1422D4544152B81EF5D35D5141333333131ED45441F6285CEFDA5D5141C3F528CC1AD45441C3F5281CDE5D5141D7A370ED14D454415C8FC2D5DB5D5141295C8F7212D4544166666616DC5D5141E17A14AE09D4544114AE4761DD5D51413D0AD7330AD45441713D0A77E55D5141CDCCCC8CFED3544100000050E95D51411F85EB41F8D354411F85EB31D85D514185EB5188E9D35441AE47E14AD75D5141EC51B84EE9D354413D0AD7A3D65D514133333383E9D3544185EB51F8D55D514185EB5138E9D35441EC51B88ED55D5141295C8F92E8D354419A999989D55D51410AD7A310E8D3544185EB5148D55D514100000080E7D354411F85EB31D55D514185EB51E8E6D35441713D0A67D55D514148E17A44E6D354417B14AED7D55D5141295C8FF2E5D3544166666606D65D5141F6285C5FE5D354413D0AD743D65D514152B81EE5E4D35441B81E851BD65D514148E17A24E4D35441E17A14BED55D514148E17A64E3D354415C8FC245D55D5141EC51B8DEE2D354410AD7A350D45D51411F85EBA1E2D35441666666A6D05D51415C8FC2F5E1D35441E17A14DEC75D5141B81E855BE0D35441
+</a>
+
+<b>
+0106000000010000000103000000010000007A00000014AE4761DD5D51413D0AD7330AD45441D546788DE45D5141ACCD6EDDFFD3544163FEC285E65D5141CF6D0AD2FCD354418F6FDFBBE65D514109128B79FCD3544100000050E95D51411F85EB41F8D354415B8A3354D85D51419E52CFA5E9D354412CD0B63CD85D514162FD9A91E9D354417E4F6969D75D514135EA5456E9D35441654F6D5AD75D514140929852E9D35441717B1A4DD75D5141F439464FE9D3544197AA9AF4D65D5141CB68D369E9D354413D0AD7A3D65D514133333383E9D35441A0A949A2D65D5141D4B78582E9D3544185EB51F8D55D514185EB5138E9D35441EC51B88ED55D5141295C8F92E8D354414257888ED55D51419CE3CD8DE8D35441000B1685D55D5141F77CA306E8D3544175C4CC48D55D5141FB301081E7D3544185EB5148D55D514100000080E7D354411F85EB31D55D514185EB51E8E6D35441227F1333D55D51413E07C1E4E6D35441713D0A67D55D514148E17A44E6D354419CBE216AD55D5141853D3B42E6D35441105667D9D55D5141CE1921EDE5D3544166666606D65D5141F6285C5FE5D35441B170F311D65D5141D0E16048E5D354414DEAFC42D65D514184910CE1E4D354414036C917D65D514172AFCE1CE4D354411654ADEFD55D51416F4B64CAE3D354415107ADC2D55D51411272EC6DE3D354411916DA48D55D5141F24228E2E2D3544187470FD5D25D51419215455CE2D35441666666A6D05D51415C8FC2F5E1D35441AD2676B5CA5D51414AE43DE0E0D3544105118BE1C75D514120E4265CE0D354418FF2203DC55D5141C8E723DAE6D3544132BDBBF1C35D5141BDE4C51BEAD35441A5EEE6A1C35D51418CDF56E5EAD354411CA00350C35D5141043719B4EBD354411FB8EE12C35D5141C1E7524EECD35441661D59B3C15D51410F9BE449EFD3544108322A19C15D51410C531698F0D354410F3841AFC05D51416015D949F2D35441B743166AC05D51412665631FF3D35441C10F024CC05D51412734F0E5F3D354419A4B9C61C05D5141D5D7A044F5D35441601E3EADC05D5141B70B38C6F6D3544138295BAAC05D5141A77AFC4FF7D35441DDF3C89FC05D5141F163E524F8D354414FC02FCABF5D5141F496F337FBD3544175CF8CCFBE5D51419E311323FFD35441D27A3D32BE5D5141BAFAE26901D454412B7209CFBD5D5141F01E05D902D4544151F59F94BD5D5141416032B103D45441A33E18FABC5D5141A60D6BEE05D4544153D3D9D0BC5D51413EF4688706D4544176176CB1BC5D5141432EFEFB06D4544198A87016BC5D51414540C03809D45441B4D201FBBB5D5141C852079C09D454417D1F85F3BB5D514197B41FB709D45441B296CBF0BB5D51419206FCC009D45441B2E215DEBB5D51418F8D7D040AD4544176E88AF0BB5D5141184A97270AD454415DEDCFF3BB5D5141C913CF2D0AD454411F545209BC5D5141E2C9B6560AD4544194F3C023BC5D5141291BFB880AD45441FD57D738BC5D5141A76915B10AD454418B0B2A4CBC5D514133B9D4D50AD454418D694AECBC5D5141539E212D0BD45441D06CC5FEBD5D5141E2FB4AC10BD45441FDA9AF78BE5D514106EE19030CD454411F0E71F6BE5D5141F13EBE450CD454415C8FC285C05D5141A4703DFA0CD45441AE47E15AC15D5141A4703DAA0CD4544133333383C15D5141C3F5281C0AD45441ECC8B58BC15D5141A2E6F6F409D454415C8FC2C5C15D51419A9999E908D45441333333C3C25D5141EC51B83E07D4544165252ADCC25D5141D3CDAF2307D45441713D0A17C45D5141EC51B8CE05D4544166F2081CC45D51410AA73DCB05D45441D27F9521C45D5141282F60C705D4544114AE4751C55D51413D0AD7F304D454416E71FA78C55D5141719474E104D45441D460DA20C75D5141B07DD41804D454414C642B0BC85D5141CAD62E9A03D4544179E93CFAC85D5141B05C431303D45441295C8F32C95D5141295C8FF202D45441AE47E1BAC95D514185EB51F803D4544183110E3BC75D51417913283D05D45441AE4B56E3C65D514141F23F6F05D4544175E0DFF9C55D5141CAE492F405D45441B81E853BC55D514114AE476106D454413D0AD703C45D5141C3F5284C07D4544129CC120FC45D51415EF5942A08D45441AAF3F46CC45D5141D8DA1B310AD45441E17A146EC45D5141713D0A370AD45441C338FB63C35D5141F17EAFE40CD4544150454B4FC35D514105B4FF380DD454410AD7A320C35D5141CDCCCC7C0ED454419AAF0363C45D51414F5F93E90FD45441B81E856BC45D5141333333F30FD454410D46E718C35D5141361EECA710D45441D757D115C35D5141659AB3A910D45441713D0AC7C65D514185EB512817D454414FA938F0C75D51412358299B19D454415826DE39C85D5141CACF80361AD45441B81E859BC85D514148E17A041BD4544176AFA3C9C95D514117B077271ED4544100DC7958CB5D5141EC1136DC21D454410AD7A370CB5D514148E17A1422D4544152B81EF5D35D5141333333131ED45441389923DED55D51410EF77E2D1DD4544148B8F2F3DA5D51415C69ADC31AD45441F7FC321ADE5D51417E6F4DEB14D454413000CFA9DD5D5141B7CEC87014D454415C8FC2D5DB5D5141295C8F7212D4544169BF7DECDB5D5141CB07455D0FD45441E320B50EDC5D5141598175AD09D4544167095416DC5D5141721A92B009D4544166666616DC5D5141E17A14AE09D4544114AE4761DD5D51413D0AD7330AD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437258 - 102907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A14DEC75D5141B81E855BE0D3544185EB5148C75D5141EC51B83EE0D3544148E17A84C85D5141666666D6DDD3544166666696C95D514185EB5158DBD354418FC2F5A8CA5D5141CDCCCCCCD7D35441295C8F22CB5D5141D7A3708DD4D354417B14AE77CB5D51417B14AEB7D1D35441B81E859BCB5D5141C3F5284CCFD35441295C8F92CB5D514148E17AA4CDD3544152B81E75C65D51411F85EBB1CED35441295C8F62BF5D5141F6285C1FD0D354419A999969BF5D5141666666C6D1D354413D0AD703BF5D51415C8FC205D5D3544148E17AB4BC5D5141E17A14FEDBD35441B81E85BBBA5D51415C8FC2D5E1D354419A999939B95D5141CDCCCC8CE6D354419A999949B85D514185EB51C8EBD354410AD7A3D0B65D5141666666A6F1D35441666666C6B45D5141AE47E13AF8D35441333333F3B65D5141666666F6FFD35441295C8FC2B85D5141C3F528EC03D45441E17A14DEBB5D514148E17A040AD45441CDCCCC4CBC5D5141713D0AD70AD4544185EB51E8BE5D5141F6285C3F0CD454415C8FC285C05D5141A4703DFA0CD45441AE47E15AC15D5141A4703DAA0CD4544133333383C15D5141C3F5281C0AD454415C8FC2C5C15D51419A9999E908D45441333333C3C25D5141EC51B83E07D45441713D0A17C45D5141EC51B8CE05D4544114AE4751C55D51413D0AD7F304D454418FC2F5E8C65D5141713D0A3704D45441C3F5286CC85D51415C8FC26503D45441295C8F32C95D5141295C8FF202D45441AE47E1BAC95D514185EB51F803D45441CDCCCC3CC75D5141C3F5283C05D45441B81E853BC55D514114AE476106D454413D0AD703C45D5141C3F5284C07D454410AD7A310C45D51419A99994908D45441E17A146EC45D5141713D0A370AD4544166666656C35D51417B14AE070DD454410AD7A320C35D5141CDCCCC7C0ED45441B81E856BC45D5141333333F30FD454415C8FC215C35D51419A9999A910D45441713D0AC7C65D514185EB512817D45441B81E859BC85D514148E17A041BD4544166666606CA5D51418FC2F5C81ED454410AD7A370CB5D514148E17A1422D4544152B81EF5D35D5141333333131ED45441F6285CEFDA5D5141C3F528CC1AD45441C3F5281CDE5D5141D7A370ED14D454415C8FC2D5DB5D5141295C8F7212D4544166666616DC5D5141E17A14AE09D4544114AE4761DD5D51413D0AD7330AD45441713D0A77E55D5141CDCCCC8CFED3544100000050E95D51411F85EB41F8D354411F85EB31D85D514185EB5188E9D35441AE47E14AD75D5141EC51B84EE9D354413D0AD7A3D65D514133333383E9D3544185EB51F8D55D514185EB5138E9D35441EC51B88ED55D5141295C8F92E8D354419A999989D55D51410AD7A310E8D3544185EB5148D55D514100000080E7D354411F85EB31D55D514185EB51E8E6D35441713D0A67D55D514148E17A44E6D354417B14AED7D55D5141295C8FF2E5D3544166666606D65D5141F6285C5FE5D354413D0AD743D65D514152B81EE5E4D35441B81E851BD65D514148E17A24E4D35441E17A14BED55D514148E17A64E3D354415C8FC245D55D5141EC51B8DEE2D354410AD7A350D45D51411F85EBA1E2D35441666666A6D05D51415C8FC2F5E1D35441E17A14DEC75D5141B81E855BE0D35441
+</a>
+
+<b>
+0106000000010000000103000000010000007A00000014AE4761DD5D51413D0AD7330AD45441D946788DE45D5141A9CD6EDDFFD3544162FEC285E65D5141CD6D0AD2FCD35441926FDFBBE65D51410D128B79FCD3544100000050E95D51411F85EB41F8D354415C8A3354D85D51419952CFA5E9D354412BD0B63CD85D514167FD9A91E9D354417A4F6969D75D514132EA5456E9D35441644F6D5AD75D51413D929852E9D354416C7B1A4DD75D5141F639464FE9D354419BAA9AF4D65D5141C868D369E9D354413D0AD7A3D65D514133333383E9D35441A2A949A2D65D5141D0B78582E9D3544185EB51F8D55D514185EB5138E9D35441EC51B88ED55D5141295C8F92E8D354414757888ED55D514198E3CD8DE8D35441040B1685D55D5141F27CA306E8D3544174C4CC48D55D5141FB301081E7D3544185EB5148D55D514100000080E7D354411F85EB31D55D514185EB51E8E6D35441237F1333D55D51413C07C1E4E6D35441713D0A67D55D514148E17A44E6D3544197BE216AD55D5141833D3B42E6D35441105667D9D55D5141CB1921EDE5D3544166666606D65D5141F6285C5FE5D35441B070F311D65D5141CDE16048E5D354414CEAFC42D65D514189910CE1E4D354413F36C917D65D514170AFCE1CE4D354411654ADEFD55D51416F4B64CAE3D354415507ADC2D55D51410E72EC6DE3D354411616DA48D55D5141F54228E2E2D3544186470FD5D25D51419415455CE2D35441666666A6D05D51415C8FC2F5E1D35441AE2676B5CA5D514147E43DE0E0D3544100118BE1C75D514125E4265CE0D3544194F2203DC55D5141C6E723DAE6D3544130BDBBF1C35D5141BCE4C51BEAD35441A2EEE6A1C35D51418BDF56E5EAD354411EA00350C35D5141093719B4EBD3544124B8EE12C35D5141C4E7524EECD35441681D59B3C15D51410A9BE449EFD3544103322A19C15D514108531698F0D354410E3841AFC05D51416515D949F2D35441B943166AC05D51412A65631FF3D35441C50F024CC05D51412534F0E5F3D354419B4B9C61C05D5141D1D7A044F5D354415E1E3EADC05D5141B50B38C6F6D354413C295BAAC05D5141A57AFC4FF7D35441DAF3C89FC05D5141F263E524F8D354414DC02FCABF5D5141F196F337FBD3544171CF8CCFBE5D5141A1311323FFD35441D57A3D32BE5D5141B7FAE26901D454412F7209CFBD5D5141EE1E05D902D4544153F59F94BD5D5141456032B103D45441A63E18FABC5D5141AB0D6BEE05D4544150D3D9D0BC5D514140F4688706D4544176176CB1BC5D5141442EFEFB06D4544194A87016BC5D51414240C03809D45441B3D201FBBB5D5141C552079C09D454417A1F85F3BB5D51419BB41FB709D45441B796CBF0BB5D51419606FCC009D45441B6E215DEBB5D51418A8D7D040AD4544171E88AF0BB5D5141144A97270AD454415EEDCFF3BB5D5141C413CF2D0AD4544120545209BC5D5141E1C9B6560AD4544190F3C023BC5D5141291BFB880AD454410158D738BC5D5141A96915B10AD454418C0B2A4CBC5D514135B9D4D50AD4544190694AECBC5D5141569E212D0BD45441D16CC5FEBD5D5141E7FB4AC10BD45441FCA9AF78BE5D514108EE19030CD45441200E71F6BE5D5141F53EBE450CD454415C8FC285C05D5141A4703DFA0CD45441AE47E15AC15D5141A4703DAA0CD4544133333383C15D5141C3F5281C0AD45441EFC8B58BC15D5141A7E6F6F409D454415C8FC2C5C15D51419A9999E908D45441333333C3C25D5141EC51B83E07D4544163252ADCC25D5141CECDAF2307D45441713D0A17C45D5141EC51B8CE05D4544162F2081CC45D51410AA73DCB05D45441CF7F9521C45D51412A2F60C705D4544114AE4751C55D51413D0AD7F304D454416B71FA78C55D5141729474E104D45441D460DA20C75D5141B17DD41804D4544147642B0BC85D5141CDD62E9A03D4544175E93CFAC85D5141AC5C431303D45441295C8F32C95D5141295C8FF202D45441AE47E1BAC95D514185EB51F803D4544186110E3BC75D51417A13283D05D45441B14B56E3C65D51413EF23F6F05D4544170E0DFF9C55D5141CAE492F405D45441B81E853BC55D514114AE476106D454413D0AD703C45D5141C3F5284C07D454412BCC120FC45D51415BF5942A08D45441A8F3F46CC45D5141DDDA1B310AD45441E17A146EC45D5141713D0A370AD45441C638FB63C35D5141F47EAFE40CD454414E454B4FC35D514100B4FF380DD454410AD7A320C35D5141CDCCCC7C0ED4544198AF0363C45D51414E5F93E90FD45441B81E856BC45D5141333333F30FD454410A46E718C35D5141361EECA710D45441D757D115C35D5141619AB3A910D45441713D0AC7C65D514185EB512817D4544154A938F0C75D51411E58299B19D454415C26DE39C85D5141C9CF80361AD45441B81E859BC85D514148E17A041BD4544172AFA3C9C95D51411BB077271ED4544104DC7958CB5D5141EB1136DC21D454410AD7A370CB5D514148E17A1422D4544152B81EF5D35D5141333333131ED45441379923DED55D51410CF77E2D1DD4544144B8F2F3DA5D51415A69ADC31AD45441F8FC321ADE5D51417F6F4DEB14D454412E00CFA9DD5D5141BBCEC87014D454415C8FC2D5DB5D5141295C8F7212D4544169BF7DECDB5D5141C707455D0FD45441DF20B50EDC5D5141578175AD09D4544162095416DC5D5141741A92B009D4544166666616DC5D5141E17A14AE09D4544114AE4761DD5D51413D0AD7330AD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437258 - 304394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A14DEC75D5141B81E855BE0D3544185EB5148C75D5141EC51B83EE0D3544148E17A84C85D5141666666D6DDD3544166666696C95D514185EB5158DBD354418FC2F5A8CA5D5141CDCCCCCCD7D35441295C8F22CB5D5141D7A3708DD4D354417B14AE77CB5D51417B14AEB7D1D35441B81E859BCB5D5141C3F5284CCFD35441295C8F92CB5D514148E17AA4CDD3544152B81E75C65D51411F85EBB1CED35441295C8F62BF5D5141F6285C1FD0D354419A999969BF5D5141666666C6D1D354413D0AD703BF5D51415C8FC205D5D3544148E17AB4BC5D5141E17A14FEDBD35441B81E85BBBA5D51415C8FC2D5E1D354419A999939B95D5141CDCCCC8CE6D354419A999949B85D514185EB51C8EBD354410AD7A3D0B65D5141666666A6F1D35441666666C6B45D5141AE47E13AF8D35441333333F3B65D5141666666F6FFD35441295C8FC2B85D5141C3F528EC03D45441E17A14DEBB5D514148E17A040AD45441CDCCCC4CBC5D5141713D0AD70AD4544185EB51E8BE5D5141F6285C3F0CD454415C8FC285C05D5141A4703DFA0CD45441AE47E15AC15D5141A4703DAA0CD4544133333383C15D5141C3F5281C0AD454415C8FC2C5C15D51419A9999E908D45441333333C3C25D5141EC51B83E07D45441713D0A17C45D5141EC51B8CE05D4544114AE4751C55D51413D0AD7F304D454418FC2F5E8C65D5141713D0A3704D45441C3F5286CC85D51415C8FC26503D45441295C8F32C95D5141295C8FF202D45441AE47E1BAC95D514185EB51F803D45441CDCCCC3CC75D5141C3F5283C05D45441B81E853BC55D514114AE476106D454413D0AD703C45D5141C3F5284C07D454410AD7A310C45D51419A99994908D45441E17A146EC45D5141713D0A370AD4544166666656C35D51417B14AE070DD454410AD7A320C35D5141CDCCCC7C0ED45441B81E856BC45D5141333333F30FD454415C8FC215C35D51419A9999A910D45441713D0AC7C65D514185EB512817D45441B81E859BC85D514148E17A041BD4544166666606CA5D51418FC2F5C81ED454410AD7A370CB5D514148E17A1422D4544152B81EF5D35D5141333333131ED45441F6285CEFDA5D5141C3F528CC1AD45441C3F5281CDE5D5141D7A370ED14D454415C8FC2D5DB5D5141295C8F7212D4544166666616DC5D5141E17A14AE09D4544114AE4761DD5D51413D0AD7330AD45441713D0A77E55D5141CDCCCC8CFED3544100000050E95D51411F85EB41F8D354411F85EB31D85D514185EB5188E9D35441AE47E14AD75D5141EC51B84EE9D354413D0AD7A3D65D514133333383E9D3544185EB51F8D55D514185EB5138E9D35441EC51B88ED55D5141295C8F92E8D354419A999989D55D51410AD7A310E8D3544185EB5148D55D514100000080E7D354411F85EB31D55D514185EB51E8E6D35441713D0A67D55D514148E17A44E6D354417B14AED7D55D5141295C8FF2E5D3544166666606D65D5141F6285C5FE5D354413D0AD743D65D514152B81EE5E4D35441B81E851BD65D514148E17A24E4D35441E17A14BED55D514148E17A64E3D354415C8FC245D55D5141EC51B8DEE2D354410AD7A350D45D51411F85EBA1E2D35441666666A6D05D51415C8FC2F5E1D35441E17A14DEC75D5141B81E855BE0D35441
+</a>
+
+<b>
+0106000000010000000103000000010000007A00000014AE4761DD5D51413D0AD7330AD45441D946788DE45D5141A9CD6EDDFFD3544162FEC285E65D5141CD6D0AD2FCD35441926FDFBBE65D51410D128B79FCD3544100000050E95D51411F85EB41F8D354415C8A3354D85D51419952CFA5E9D354412BD0B63CD85D514167FD9A91E9D354417A4F6969D75D514132EA5456E9D35441644F6D5AD75D51413D929852E9D354416C7B1A4DD75D5141F639464FE9D354419BAA9AF4D65D5141C868D369E9D354413D0AD7A3D65D514133333383E9D35441A2A949A2D65D5141D0B78582E9D3544185EB51F8D55D514185EB5138E9D35441EC51B88ED55D5141295C8F92E8D354414757888ED55D514198E3CD8DE8D35441040B1685D55D5141F27CA306E8D3544174C4CC48D55D5141FB301081E7D3544185EB5148D55D514100000080E7D354411F85EB31D55D514185EB51E8E6D35441237F1333D55D51413C07C1E4E6D35441713D0A67D55D514148E17A44E6D3544197BE216AD55D5141833D3B42E6D35441105667D9D55D5141CB1921EDE5D3544166666606D65D5141F6285C5FE5D35441B070F311D65D5141CDE16048E5D354414CEAFC42D65D514189910CE1E4D354413F36C917D65D514170AFCE1CE4D354411654ADEFD55D51416F4B64CAE3D354415507ADC2D55D51410E72EC6DE3D354411616DA48D55D5141F54228E2E2D3544186470FD5D25D51419415455CE2D35441666666A6D05D51415C8FC2F5E1D35441AE2676B5CA5D514147E43DE0E0D3544100118BE1C75D514125E4265CE0D3544194F2203DC55D5141C6E723DAE6D3544130BDBBF1C35D5141BCE4C51BEAD35441A2EEE6A1C35D51418BDF56E5EAD354411EA00350C35D5141093719B4EBD3544124B8EE12C35D5141C4E7524EECD35441681D59B3C15D51410A9BE449EFD3544103322A19C15D514108531698F0D354410E3841AFC05D51416515D949F2D35441B943166AC05D51412A65631FF3D35441C50F024CC05D51412534F0E5F3D354419B4B9C61C05D5141D1D7A044F5D354415E1E3EADC05D5141B50B38C6F6D354413C295BAAC05D5141A57AFC4FF7D35441DAF3C89FC05D5141F263E524F8D354414DC02FCABF5D5141F196F337FBD3544171CF8CCFBE5D5141A1311323FFD35441D57A3D32BE5D5141B7FAE26901D454412F7209CFBD5D5141EE1E05D902D4544153F59F94BD5D5141456032B103D45441A63E18FABC5D5141AB0D6BEE05D4544150D3D9D0BC5D514140F4688706D4544176176CB1BC5D5141442EFEFB06D4544194A87016BC5D51414240C03809D45441B3D201FBBB5D5141C552079C09D454417A1F85F3BB5D51419BB41FB709D45441B796CBF0BB5D51419606FCC009D45441B6E215DEBB5D51418A8D7D040AD4544171E88AF0BB5D5141144A97270AD454415EEDCFF3BB5D5141C413CF2D0AD4544120545209BC5D5141E1C9B6560AD4544190F3C023BC5D5141291BFB880AD454410158D738BC5D5141A96915B10AD454418C0B2A4CBC5D514135B9D4D50AD4544190694AECBC5D5141569E212D0BD45441D16CC5FEBD5D5141E7FB4AC10BD45441FCA9AF78BE5D514108EE19030CD45441200E71F6BE5D5141F53EBE450CD454415C8FC285C05D5141A4703DFA0CD45441AE47E15AC15D5141A4703DAA0CD4544133333383C15D5141C3F5281C0AD45441EFC8B58BC15D5141A7E6F6F409D454415C8FC2C5C15D51419A9999E908D45441333333C3C25D5141EC51B83E07D4544163252ADCC25D5141CECDAF2307D45441713D0A17C45D5141EC51B8CE05D4544162F2081CC45D51410AA73DCB05D45441CF7F9521C45D51412A2F60C705D4544114AE4751C55D51413D0AD7F304D454416B71FA78C55D5141729474E104D45441D460DA20C75D5141B17DD41804D4544147642B0BC85D5141CDD62E9A03D4544175E93CFAC85D5141AC5C431303D45441295C8F32C95D5141295C8FF202D45441AE47E1BAC95D514185EB51F803D4544186110E3BC75D51417A13283D05D45441B14B56E3C65D51413EF23F6F05D4544170E0DFF9C55D5141CAE492F405D45441B81E853BC55D514114AE476106D454413D0AD703C45D5141C3F5284C07D454412BCC120FC45D51415BF5942A08D45441A8F3F46CC45D5141DDDA1B310AD45441E17A146EC45D5141713D0A370AD45441C638FB63C35D5141F47EAFE40CD454414E454B4FC35D514100B4FF380DD454410AD7A320C35D5141CDCCCC7C0ED4544198AF0363C45D51414E5F93E90FD45441B81E856BC45D5141333333F30FD454410A46E718C35D5141361EECA710D45441D757D115C35D5141619AB3A910D45441713D0AC7C65D514185EB512817D4544154A938F0C75D51411E58299B19D454415C26DE39C85D5141C9CF80361AD45441B81E859BC85D514148E17A041BD4544172AFA3C9C95D51411BB077271ED4544104DC7958CB5D5141EB1136DC21D454410AD7A370CB5D514148E17A1422D4544152B81EF5D35D5141333333131ED45441379923DED55D51410CF77E2D1DD4544144B8F2F3DA5D51415A69ADC31AD45441F8FC321ADE5D51417F6F4DEB14D454412E00CFA9DD5D5141BBCEC87014D454415C8FC2D5DB5D5141295C8F7212D4544169BF7DECDB5D5141C707455D0FD45441DF20B50EDC5D5141578175AD09D4544162095416DC5D5141741A92B009D4544166666616DC5D5141E17A14AE09D4544114AE4761DD5D51413D0AD7330AD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440670 - 1472685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000011000000E17A145E03FE50411F85EB71451D5541D7A3702D05FE50410AD7A3D04B1D55413333333307FE504152B81E85541D5541CDCCCCEC07FE5041C3F5285C5C1D5541A4703DFA07FE504152B81E25621D55418FC2F5B80FFE50418FC2F588611D55411F85EB4110FE504148E17AF4681D55419A9999A917FE50413D0AD753671D554152B81E8517FE504133333313611D5541713D0A8717FE504133333363521D5541B81E85EB16FE5041CDCCCC7C4C1D55410AD7A39015FE5041713D0A37461D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541CDCCCCEC08FE50411F85EBE1421D554148E17AC403FE504114AE47A1441D5541E17A145E03FE50411F85EB71451D5541
+</a>
+
+<b>
+010600000001000000010300000001000000180000009A9999A917FE50413D0AD753671D5541E433F68217FE5041CF3C82FC631D55417D1E518717FE50419AB19773611D554152B81E8517FE504133333313611D55411E170A8717FE5041FB5F5864521D5541B5AFDE8617FE5041B3358C61521D5541F3EE573517FE5041D4D4C4494F1D554179A941A916FE5041F4620E4A4B1D5541D0BEA04E16FE504154D585A6491D55419249051015FE5041EE4CEA3C451D5541D1D6E39013FE50411034F0D0401D5541CC11449613FE50411BF9D5CF401D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541CDCCCCEC08FE50411F85EBE1421D554148E17AC403FE504114AE47A1441D5541E17A145E03FE50411F85EB71451D5541D7A3702D05FE50410AD7A3D04B1D55413333333307FE504152B81E85541D5541CDCCCCEC07FE5041C3F5285C5C1D5541A4703DFA07FE504152B81E25621D55418FC2F5B80FFE50418FC2F588611D55411F85EB4110FE504148E17AF4681D55419A9999A917FE50413D0AD753671D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440670 - 3276568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000011000000E17A145E03FE50411F85EB71451D5541D7A3702D05FE50410AD7A3D04B1D55413333333307FE504152B81E85541D5541CDCCCCEC07FE5041C3F5285C5C1D5541A4703DFA07FE504152B81E25621D55418FC2F5B80FFE50418FC2F588611D55411F85EB4110FE504148E17AF4681D55419A9999A917FE50413D0AD753671D554152B81E8517FE504133333313611D5541713D0A8717FE504133333363521D5541B81E85EB16FE5041CDCCCC7C4C1D55410AD7A39015FE5041713D0A37461D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541CDCCCCEC08FE50411F85EBE1421D554148E17AC403FE504114AE47A1441D5541E17A145E03FE50411F85EB71451D5541
+</a>
+
+<b>
+010600000001000000010300000001000000180000009A9999A917FE50413D0AD753671D5541E433F68217FE5041CF3C82FC631D55417D1E518717FE50419AB19773611D554152B81E8517FE504133333313611D55411E170A8717FE5041FB5F5864521D5541B5AFDE8617FE5041B3358C61521D5541F3EE573517FE5041D4D4C4494F1D554179A941A916FE5041F4620E4A4B1D5541D0BEA04E16FE504154D585A6491D55419249051015FE5041EE4CEA3C451D5541D1D6E39013FE50411034F0D0401D5541CC11449613FE50411BF9D5CF401D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541CDCCCCEC08FE50411F85EBE1421D554148E17AC403FE504114AE47A1441D5541E17A145E03FE50411F85EB71451D5541D7A3702D05FE50410AD7A3D04B1D55413333333307FE504152B81E85541D5541CDCCCCEC07FE5041C3F5285C5C1D5541A4703DFA07FE504152B81E25621D55418FC2F5B80FFE50418FC2F588611D55411F85EB4110FE504148E17AF4681D55419A9999A917FE50413D0AD753671D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463875 - 243760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -63  </desc>
+<a>
+01060000000200000001030000000100000023000000000000B071F25041EC51B86E21AA5441713D0A576DF25041000000901BAA5441C3F5286C68F25041B81E850B16AA54417B14AEC760F25041EC51B8EE0FAA54410AD7A3405AF25041333333330CAA544114AE474154F25041EC51B8AE09AA5441F6285C5F51F250410000001009AA5441E17A147E51F250417B14AE270AAA54417B14AE974BF25041D7A370CD09AA54417B14AE874AF25041AE47E1FA09AA54416666669649F25041295C8F820AAA5441295C8FC248F2504114AE47B10CAA54419A99993946F25041AE47E10A0CAA5441E17A14DE44F25041C3F528FC0BAA5441713D0A4744F25041666666660DAA54419A99990943F25041F6285CDF0DAA5441F6285C8F40F25041333333A30DAA54415C8FC22540F2504185EB51580EAA5441B81E85DB41F25041EC51B80E11AA54419A99992945F25041EC51B81E12AA54419A99992945F250415C8FC2C513AA544148E17AC44AF250419A9999A916AA5441295C8FF24BF250419A9999B917AA5441EC51B82E4CF250419A9999C918AA54418FC2F5984DF2504114AE475119AA5441295C8F124FF25041E17A148E1AAA54416666661654F25041713D0A071BAA544152B81E3555F2504152B81E351CAA5441D7A370FD5AF25041713D0A371EAA5441B81E857B62F250415C8FC2451EAA544148E17A1466F25041D7A370ED20AA5441D7A3709D67F25041D7A370ED20AA5441C3F528EC6BF25041D7A370FD21AA54410AD7A3F071F25041E17A14EE21AA5441000000B071F25041EC51B86E21AA5441010300000001000000880100007B14AEF795F2504148E17AE42BAA54417B14AEE796F2504148E17A942AAA54413D0AD7A398F25041C3F5283C2BAA54413D0AD76399F2504185EB51082CAA54413D0AD7639CF25041C3F5284C2DAA54417B14AEB79FF2504185EB51F82CAA54413D0AD7B3A0F25041C3F528DC2DAA54413D0AD7E3A0F2504148E17AD432AA5441B81E85DB9FF25041C3F5286C34AA54417B14AEE79FF250410AD7A3F037AA54417B14AEB79FF2504185EB515839AA54417B14AE379EF2504185EB51D83AAA5441F6285C8F9DF2504185EB51383EAA54417B14AE079EF250410AD7A3403FAA5441B81E858B9EF250410AD7A31042AA5441F6285CCF9CF2504185EB51C844AA54417B14AE279CF250410AD7A37045AA5441B81E855B9BF2504148E17A5449AA5441F6285CAF9BF250410AD7A3204AAA54417B14AE579CF2504148E17AD44AAA54413D0AD7439EF2504148E17AC44BAA54413D0AD723A0F250410AD7A3E04AAA5441B81E85BBA1F250410AD7A3404BAA54417B14AEB7A2F2504148E17A244CAA5441F6285C1FA4F25041C3F5287C4BAA54413D0AD7B3A5F250415C8FC20542AA5441B81E852BA7F2504185EB51683BAA5441F6285C2FA6F250410AD7A3203BAA5441F6285C2FA6F2504148E17AC436AA54413D0AD713A7F2504185EB518833AA54417B14AE07A7F250410AD7A3902EAA54413D0AD793A8F250410AD7A3602BAA54417B14AE47A9F25041C3F528AC2AAA54413D0AD713AAF250410AD7A3D02AAA5441F6285CDFAAF2504185EB51C829AA54413D0AD793ABF250410AD7A3102AAA5441B81E852BADF25041C3F528DC27AA54413D0AD743ADF250410AD7A34024AA5441F6285C8FACF250410AD7A35023AA54417B14AE27AEF25041C3F5283C22AA54417B14AE87B1F25041C3F5283C22AA5441C3F528BCB4F25041333333F31DAA5441F6285CCFB4F2504185EB51381DAA54413D0AD713B3F250410AD7A3001CAA5441F6285C6FB1F2504148E17A641BAA54413D0AD763AEF2504148E17AC418AA54417B14AEF7ADF25041C3F5284C18AA54417B14AE37ADF25041C3F5289C16AA5441F6285C1FAAF25041C3F5284C12AA54413D0AD793A8F250410AD7A3C00DAA54417B14AEC7A7F25041C3F5285C08AA54413D0AD773A7F2504148E17A4402AA5441B81E852BA7F2504148E17A14FFA95441F6285CCFA5F2504185EB5188FDA954417B14AEB7A5F250410AD7A350FCA954417B14AE77A3F250410AD7A340F7A954413D0AD743A1F2504185EB5158F4A954417B14AE579FF2504185EB51A8F2A954417B14AED79DF2504185EB5108F0A954417B14AE379BF25041C3F5286CECA95441F6285C5F9AF2504148E17AF4EBA95441F6285C2F9AF2504185EB5158EBA95441B81E85EB98F250410AD7A350EAA954413D0AD77398F250410AD7A3D0E8A95441F6285C2F97F25041C3F5281CE8A95441B81E85AB96F2504185EB5148E6A95441B81E850B97F25041C3F528BCE4A95441B81E85AB96F250410AD7A390E0A954417B14AE3795F250410AD7A3C0DDA95441B81E85DB93F2504148E17A84DDA954413D0AD74392F250410AD7A320DBA95441F6285C5F91F2504148E17A54D7A954417B14AE5790F2504148E17A24D7A954413D0AD7738FF2504185EB5198D8A954413D0AD7738FF2504148E17A34DCA95441B81E857B8DF25041C3F528BCDEA95441F6285CBF8BF2504148E17AA4E1A95441B81E85EB89F2504148E17AF4E2A954417B14AE3786F250410AD7A340E5A95441B81E85DB84F25041C3F5287CE5A954417B14AE0783F2504185EB51A8E6A954413D0AD79381F25041C3F5289CE6A954417B14AED77FF25041C3F528ECE7A95441F6285CDF7DF2504148E17A34E8A954417B14AE177CF250410AD7A330E9A95441B81E858B7AF250410AD7A370EBA954417B14AE6777F250410AD7A300ECA95441F6285C2F76F2504148E17AB4ECA954417B14AEE775F2504185EB5128EEA95441B81E85AB72F2504148E17A94EEA954413D0AD7E370F2504185EB5158EEA95441B81E85FB6DF2504185EB51D8ECA954417B14AED76DF25041C3F5281CEBA95441F6285C3F6FF2504148E17A44EAA95441F6285C2F70F250410AD7A380EAA954417B14AE3771F250410AD7A360E9A95441B81E85BB71F2504148E17A74E7A95441F6285CDF71F2504185EB5128E2A95441F6285CAF71F2504185EB51A8E0A95441B81E850B73F250410AD7A390DDA95441B81E855B74F2504148E17A34DCA95441B81E855B74F2504148E17AA4D8A95441F6285C9F75F25041C3F5286CD7A95441B81E85DB75F2504148E17A04D6A954413D0AD7A377F2504148E17A54D1A954413D0AD7E379F2504148E17A24CEA954417B14AED77CF25041C3F5289CCBA954413D0AD7037EF250410AD7A320CCA95441F6285C9F7EF25041C3F5288CCFA95441B81E85CB79F25041C3F5283CD7A95441B81E857B78F2504185EB51A8D7A95441B81E858B77F25041C3F528BCD8A95441F6285C9F75F25041C3F5286CDDA954417B14AE3774F250410AD7A340E5A954417B14AEB772F2504148E17AB4E6A954417B14AE6771F25041C3F5289CE9A95441F6285C4F71F2504185EB51F8EAA95441F6285C3F75F2504148E17A44EAA95441F6285C8F76F250410AD7A350EAA95441F6285C3F78F2504185EB5118E9A95441F6285C0F78F25041C3F5281CE8A95441B81E857B78F2504148E17AB4E6A954413D0AD72379F2504185EB5118E6A954417B14AED779F2504185EB5168E4A954417B14AEB778F2504148E17AD4E1A954413D0AD78379F25041C3F528CCE0A954413D0AD7D37AF250410AD7A300E0A95441F6285CCF7BF250410AD7A3D0DFA95441B81E85FB7CF25041C3F5281CDFA95441F6285C2F7FF2504185EB51C8DBA954417B14AE2781F2504148E17A54DAA954417B14AEA782F2504148E17AC4D9A954413D0AD7C384F2504185EB51B8D9A954413D0AD7B385F25041C3F528DCD9A95441F6285C9F87F2504148E17A64DCA954413D0AD7638AF250410AD7A320DBA954417B14AE1791F2504148E17A64D6A95441B81E85CB91F250410AD7A350D5A95441B81E85CB91F25041C3F528CCD4A95441B81E854B90F250410AD7A350D2A954413D0AD70390F2504185EB5148D1A95441B81E851B90F2504148E17AD4CFA954417B14AEF792F2504185EB51E8CDA95441F6285C6F93F25041C3F528CCC8A954417B14AE0792F2504148E17A34C7A954413D0AD77392F2504148E17A74C6A95441B81E858B92F2504148E17AC4C4A95441F6285C0F93F250410AD7A3B0C3A95441B81E85EB92F2504185EB5148C2A954417B14AE4791F25041C3F5289CC2A95441B81E850B91F2504148E17AF4C1A954413D0AD77392F25041C3F5281CBEA95441F6285C4F92F250410AD7A390BCA954417B14AE0792F2504148E17A64BBA95441F6285CAF92F25041C3F5284CBBA954417B14AEB793F2504185EB51C8BAA954417B14AE8793F2504185EB51E8B8A954417B14AE1794F25041C3F5288CB7A954413D0AD71395F25041C3F5288CB7A95441F6285CBF94F250410AD7A340B5A95441F6285C3F96F2504148E17AE4B3A95441B81E859B97F2504148E17A54B3A954417B14AED797F2504148E17AA4B1A954417B14AE6795F2504100000030B0A95441B81E850B94F25041C3F528BCAEA954417B14AE7794F2504148E17AC4ACA95441B81E852B95F2504148E17A14ABA954417B14AE0795F2504148E17A74A8A95441B81E855B98F2504100000000AAA95441F6285CFF99F25041C3F528DCA9A954413D0AD7C39CF25041C3F528ECA8A954413D0AD7E39DF25041C3F528ECA8A95441333333D3A0F2504100000060A4A954417B14AE97A1F2504148E17A64A3A95441F6285CCF9CF2504148E17A94A3A95441B81E856B9DF2504185EB5138A2A95441B81E850B9DF2504100000070A0A954413D0AD7739EF25041C3F5282C9FA954417B14AE779DF25041000000309EA95441F6285C0F9FF25041000000209CA95441F6285C8FA0F25041000000A097A954417B14AEB7A5F2504148E17A7493A95441F6285CDFA7F2504185EB51C890A95441F6285C2FA9F2504185EB510890A954417B14AE27ABF2504185EB51D88CA954413D0AD763ABF2504148E17A048BA954413D0AD753B8F25041C3F528DC82A954417B14AED7B8F25041C3F528AC7FA95441F6285CAFB9F2504185EB51087EA95441F6285CBFBBF2504185EB51387BA954417B14AED7BEF2504185EB51E879A95441F6285C3FC0F250410000006077A95441F6285C5FC1F2504185EB51E876A95441F6285C4FC2F2504185EB51F875A95441B81E855BC2F2504148E17A3473A95441F6285CBFC1F25041000000F071A95441F6285C3FC9F2504148E17A1475A954413D0AD723CAF2504148E17A9473A95441F6285C1FCBF25041C3F5285C72A954413D0AD7C3CFF250410000009071A954413D0AD7B3D0F25041000000B06FA954413D0AD793D2F25041C3F5282C6FA954417B14AE27D5F25041C3F5283C6EA954413D0AD7F3D5F2504185EB51F86CA95441F6285CAFD7F25041C3F528CC6BA954413D0AD7A3DAF2504185EB51486BA954417B14AE27DEF25041C3F5280C6BA95441F6285CEFDFF25041000000E069A954417B14AE37E0F2504185EB513869A954413D0AD7E3E2F2504148E17A046AA9544152B81EF5E5F25041A4703DFA68A95441E17A148EEBF250413D0AD70367A954413D0AD723EEF2504185EB51F869A95441B81E857BF0F25041C3F5287C6AA95441B81E852BF5F2504148E17A346DA954413D0AD7A3F5F25041C3F5282C6CA95441B81E859BFAF2504148E17A246EA9544100000020FBF25041000000206FA95441B81E85BBFBF2504185EB51786EA95441B81E858BFBF25041C3F5280C6BA954417B14AEE7F9F25041000000F068A9544100000020F8F2504148E17A7466A954413D0AD723F7F2504185EB518864A954417B14AE07F8F2504185EB518861A954417B14AE77F7F25041C3F5285C60A95441B81E855BF8F25041C3F5280C5FA95441000000D0F9F2504185EB51E85EA95441B81E85FBFAF250410000000059A954417B14AE57FCF2504148E17A3455A9544100000050FEF25041C3F5284C52A954413D0AD77301F35041000000704FA954413D0AD75303F35041000000F04DA954413D0AD78303F3504148E17A544DA95441B81E85FB00F3504148E17A844DA95441D7A370EDFAF250411F85EB814CA9544152B81EA5F9F250418FC2F5984CA95441B81E85EBF5F2504185EB51784DA9544100000080F2F2504185EB51784DA954417B14AE27F0F25041C3F528FC4DA954413D0AD723EEF25041000000B04EA954417B14AE37ECF25041000000E04EA95441F6285C4FECF250410000002051A95441B81E852BECF2504148E17A7451A954417B14AE67E9F2504148E17A3452A954417B14AE67E6F25041C3F528BC51A954417B14AEE7E4F25041C3F528EC51A954413D0AD773E3F25041C3F528AC52A95441F6285C9FE1F25041C3F528DC52A95441B81E856BDFF25041C3F5281C52A954417B14AE17DFF25041C3F5285C51A95441B81E851BD5F25041C3F528EC51A954417B14AE77CDF25041C3F528FC53A954417B14AE87C9F250410000002054A95441F6285C7FC5F2504185EB512855A954417B14AE77C1F250410000007055A954417B14AEA7BEF2504185EB51A856A95441B81E853BBEF25041C3F5281C58A95441F6285CFFBAF2504148E17A8459A95441B81E856BB8F25041C3F5289C59A954417B14AE67B3F25041000000405BA954413D0AD723B2F2504185EB51285BA954417B14AE47AFF2504185EB51185CA95441B81E85DBAEF2504148E17A845CA954413D0AD743ADF25041C3F5286C5CA95441F6285CBFACF2504185EB51E85BA95441F6285CBFACF2504185EB51285BA954413D0AD7F3ABF25041C3F5282C5AA95441B81E85DBA8F2504185EB51F85AA954413D0AD753A6F25041C3F5286C5CA954417B14AEF7A4F25041000000605CA95441B81E852BA1F2504148E17AD45DA95441B81E859BA0F2504148E17AA45DA954417B14AEF79EF2504148E17AD45DA95441F6285C8F9DF25041000000305FA954417B14AE6798F2504148E17A0461A95441F6285CAF95F25041C3F5281C61A954413D0AD7F393F2504148E17AA460A95441F6285C6F93F2504185EB510860A95441C3F5284C8FF25041C3F5285C61A954413D0AD7A38CF2504185EB510863A95441F6285CDF89F2504148E17AD463A954413D0AD7038AF2504185EB518864A95441F6285CFF8AF2504185EB514865A95441F6285CDF89F2504148E17A7466A95441F6285CCF84F25041C3F5280C68A95441F6285C9F83F25041B81E85BB65A95441C3F5285C7AF2504114AE477169A95441D7A370CD69F250419A9999E970A95441F6285CCF60F25041C3F528FC74A95441B81E857B60F2504185EB51F875A954413D0AD7635DF2504148E17AB477A954413D0AD7635DF25041C3F528EC78A954413D0AD7735CF25041C3F5283C7AA954417B14AEF759F2504148E17AE47AA95441B81E857B57F2504148E17AE47AA954413D0AD75355F25041000000607AA95441F6285C9F54F25041C3F528DC79A95441C3F528BC4EF250417B14AEC77BA954411F85EBC146F250418FC2F5487EA954417B14AED746F25041000000407FA954413D0AD7F345F2504185EB514880A954413D0AD7A344F2504148E17A5480A95441F6285C2F43F2504148E17AF47FA95441F6285CAF41F2504148E17AE480A954413D0AD7B340F25041000000F080A95441F6285CDF3BF2504185EB518882A954413D0AD73339F25041C3F5284C85A954413D0AD79333F25041000000B087A954413D0AD78334F25041000000108BA954417B14AE2736F2504185EB51988DA95441B81E856B34F25041C3F528CC8FA954417B14AE3732F2504185EB512891A95441F6285C2F31F250410000006092A95441F6285CEF31F250410000006095A954417B14AE1731F250410000007097A95441666666C632F250411F85EB919AA95441F6285CBF35F25041AE47E1FAA0A95441C3F5281C38F25041CDCCCCFCA6A95441666666F63BF250413D0AD783AEA95441F6285C9F3CF25041C3F5281CAFA95441F6285C1F3EF2504148E17AF4AFA954417B14AE873FF250410AD7A370B2A95441B81E85DB42F2504148E17A64B8A954413D0AD75346F2504148E17A94BEA95441F6285CCF48F2504148E17AC4C1A95441B81E854B4BF2504148E17A74C3A95441B81E85AB51F2504185EB51F8C6A95441B81E856B52F2504185EB5138C6A95441F6285C3F54F25041C3F5282CC6A95441F6285CEF55F25041C3F5288CC6A954417B14AEC756F2504148E17A14C6A95441F6285C5F58F25041C3F528BCC6A954417B14AED75BF2504185EB5128CDA954413D0AD7135CF25041C3F528FCCEA95441B81E85AB5AF25041C3F5284CD0A954417B14AEC756F25041C3F528DCD0A95441F6285C7F54F25041EC51B87ED1A954417B14AEE752F2504185EB5108D2A954419A9999C951F250413D0AD753D3A95441295C8FF251F250413D0AD763D5A95441CDCCCC7C52F250419A999959DCA95441F6285CBF52F2504148E17A14E1A95441F6285CFF54F2504148E17AF4E2A954413D0AD75355F25041C3F5285CEAA954417B14AEE754F250410AD7A300ECA954413D0AD75355F2504148E17A04F1A954413D0AD74356F2504185EB5178F2A954417B14AE6759F25041C3F5285CF3A95441F6285C2F5BF250410AD7A3B0F6A954413D0AD7F35AF25041C3F528BCFFA954413D0AD75358F25041C3F5285C02AA54417B14AE5757F25041C3F5288C02AA5441713D0A7754F25041B81E852B04AA54418FC2F5785CF250413333333307AA54411F85EB3163F25041666666F60AAA54413D0AD7C363F2504148E17AB40AAA5441B81E85FB64F250410AD7A3500BAA54413D0AD76366F250410AD7A3B00BAA54413D0AD73369F2504185EB51980EAA5441F6285C1F6BF250410AD7A30010AA5441F6285C0F6CF25041C3F528FC10AA5441B81E85CB6DF2504148E17AA411AA5441B81E858B6EF250410AD7A30013AA5441B81E85AB6FF2504185EB513814AA5441B81E856B70F25041C3F528AC15AA5441B81E853B73F25041C3F5284C18AA54417B14AE7773F250410AD7A3F019AA5441F6285C0F75F25041C3F528EC1AAA54417B14AEB775F250410AD7A3601CAA5441B81E852B77F25041C3F528BC1DAA5441F6285C7F77F2504185EB51481FAA5441F6285C9F78F2504185EB516820AA54413D0AD75379F2504185EB51B821AA54413D0AD72379F2504148E17A4423AA54417B14AE977AF2504148E17A3424AA5441F6285C9F7BF2504185EB510826AA5441B81E850B7CF250410AD7A3D027AA54417B14AE277EF2504148E17AD426AA5441F6285C2F7FF25041C3F5287C27AA5441B81E855B80F2504148E17AB428AA5441F6285C4F83F25041C3F5287C27AA54413D0AD72385F2504185EB518827AA54413D0AD70387F250410AD7A3D027AA5441B81E85CB88F2504185EB51B827AA5441F6285C1F8CF250410AD7A39028AA54413D0AD7638DF250410AD7A32029AA5441B81E852B8FF250410AD7A38029AA5441B81E85EB8FF2504185EB51582AAA54417B14AE1791F25041C3F528AC2AAA54417B14AE5793F2504185EB51D82BAA54417B14AE7794F2504148E17A442CAA54417B14AEF795F2504148E17AE42BAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B040000C7AF1E0E93F2504146192CA4C3A954416FB483EB92F25041DE335248C2A9544165A65EE492F25041B874BF49C2A95441A718D00492F250419EAA2BA3C2A95441071E481E91F250419EAA2BA3C2A954417F833A0791F25041177ACC01C2A954417020DD0B91F25041E12C70F5C1A95441B81E850B91F2504148E17AF4C1A95441C75E6A5991F25041387EAF1FC1A954418E4EA7BF91F25041C11A86D8BFA954415BE6F84992F25041C1ED9E50BEA95441A899747292F250412E16260DBEA95441F6285C4F92F250410AD7A390BCA954417B14AE0792F2504148E17A64BBA95441626A5F2192F2504151EAC060BBA954412FB3DD1B92F250413190D040BBA95441730D1BC692F250413190D040BBA9544179CE1B7A93F250415DF907E7BAA954418DBD3DB693F250413786EEB9BAA954417B14AE8793F2504185EB51E8B8A954417547B78C93F250414AEC24DCB8A954417547B78C93F25041593546A4B8A9544142DF081794F250412C6B9578B7A95441AAD95FEE94F25041C3F5288CB7A954413D0AD71395F25041C3F5288CB7A9544133AC2F1395F250410CFF9C87B7A954411A775AA194F25041F03F260AB5A95441100EF09E95F25041690FC768B4A954418E8DA1CD95F25041AD1F984BB4A95441F6285C3F96F2504148E17AE4B3A95441086B568596F250417C7D89C7B3A95441F23B93B396F25041AAAB4C99B3A954412E3A1B9A97F25041C4DF2354B3A954418F6640D397F250411E29D6A1B1A95441298393C497F250415A961399B1A95441E5A16B4997F25041554C0670B1A954414A27E2F896F25041BAD17C1FB1A954412848C3A595F25041DB040F55B0A95441C775404E95F2504146EB472DB0A95441D779F6C794F2504105706B85AFA95441B81E850B94F25041C3F528BCAEA954417B14AE7794F2504148E17AC4ACA95441B9D7F48694F2504100B3C89FACA95441C2AAD39594F25041C52BFF4DACA95441BAB0610895F25041561EE368ABA95441950C982195F2504134E0522CABA95441DAF3282995F250418CBD3AE8AAA954417B14AE0795F2504148E17A74A8A95441A3C9041195F2504162EAD078A8A9544112A8170995F25041849E8D29A8A95441EF0AD64B96F25041100408F9A8A95441E5A16B4997F2504160014C6CA9A954415D9EF32F98F25041890090DFA9A95441D9C4076098F25041B26E9DFFA9A95441EEF4FBA898F25041AA1F63F9A9A9544168F467FF98F250415E7D02F2A9A95441BD66A45B99F25041890090DFA9A95441449703FD99F2504152CD74B1A9A95441DB92CF569BF25041E3663E55A9A954414DC4726B9CF250419369FAE1A8A95441C6564CDC9DF25041D9D0ECCAA8A954412A81FFBDA0F25041617A0EEEA3A95441B3C85516A1F25041E10F8D69A3A95441F6285CCF9CF2504148E17A94A3A954410CC540E89CF250412C18FB5CA3A954412127A9C79CF25041DA49AF4CA3A954413E26ED3A9DF25041351A0C38A2A954418A7D75329DF25041BDFC1629A1A95441B81E850B9DF2504100000070A0A95441EBFC151E9DF250410954505FA0A954412DC158189DF2504149ECE03CA0A954412258EE159EF2504167BE3D289FA95441435AF1A99DF25041C84543629EA954417B14AE779DF25041000000309EA9544129408AEF9DF2504194E7C3949DA95441C3BC24729EF25041B32DDCD09CA954414AED83139FF250416D2F54EA9BA95441821ABF0AA0F250415C2BD72D99A9544106F15B88A0F25041D1A700B597A95441B35B8FF299F25041E783EBE19CA954419E6766C690F2504192EC51F8A4A95441827B144E88F25041295C8F32ABA954415536AA5884F250418DABF8D4B3A954419D95DFBB85F25041A1D2EDE4ACA95441BA5287BF87F25041A7777302A9A95441603D6CB48BF25041A3BC22D8A5A954418CB564E290F25041A961A8F5A1A95441A5CD86C896F25041E5AA057E9CA95441FC83D2669DF25041B9320D5097A954416BBBC971A3F2504182F7BE6B92A95441F139C72BA5F25041FABA6BFB90A954410F3114EDAAF2504170811D178CA9544130B94263ABF250413A47FC088BA954413D0AD763ABF2504148E17A048BA954413610C365ABF25041D3A444038BA95441A91EFE6DABF25041958374F08AA954419FFAB123ACF25041645E828B8AA954414F82C4B4ACF25041FE5B09308AA95441FB7E10D5ACF250414822AC1B8AA9544174C2BBEDACF2504174291E0C8AA954419A1F6654AEF250414B621EFF88A954413A2BDC8EB2F25041D1A17EE484A9544165788727B8F25041B01BD90A80A954414F8884D6B8F25041BA935AB37FA954417B14AED7B8F25041C3F528AC7FA954410A3D8207B9F2504140A20E4F7FA954418DB8BC85B9F25041E0159EED7DA9544155FA07F3B9F2504132880AAC7DA95441491DAF82BBF2504188580F8B7BA954410B56A4E2BBF25041E1FD86F17AA95441058BCEDBBCF25041DEBFB1BF7AA954418C90A6AEBEF250413928B8F979A95441DE503E3EBFF250415C8EF81379A9544133AEF03CC0F25041606B405677A95441880BA33BC1F25041663DE7D676A954417B700EDBC1F2504100A49F6C76A95441B2FCCB24C2F25041C917E22276A95441BCFB8B4FC2F250411F1972ED75A954413F20E250C2F25041C2CBA59F75A95441ACBB1252C2F250416074625A75A9544178EA2B52C2F25041F18CA85475A954417BDF5952C2F25041685D354A75A954411FC55C52C2F2504120BA8C4975A95441406B6F52C2F250419F294F4575A954412FB77E52C2F2504116BDD44175A954417067553AC2F25041E2CD58F974A954417067553AC2F250418D70A6FA73A95441CCDF2C59C2F25041C080F7BC73A95441B81E855BC2F2504148E17A3473A9544198D4C3EBC1F250414287444C72A954415CEE259BC1F25041BD6A6BDD71A95441AA793119C3F250413EE59A7C72A95441707F6C36C5F2504178F7765B73A954417A978332C8F250410EEBD59974A9544176BA3BF0C9F250416725D0DA73A95441D2E9946FCAF25041C05FCA1B73A954417629C8DDCAF25041212097AD72A95441F6285C1FCBF25041C3F5285C72A954419152DB57CBF250414D71745272A95441CE0C4D2DCCF250416B02181D72A9544168077D8ECCF250416B02181D72A95441D738AC72CEF25041D65EEBC971A954413C20F82AD0F2504102D4BDC170A954413D0AD7B3D0F25041000000B06FA95441F0037AB5D0F25041E3EB8CAF6FA95441B2DFCFBBD0F25041C316149F6FA95441DD62B850D4F250415440716D6EA95441B6F17C78D5F250413950FBBB6DA954413D0AD7F3D5F2504185EB51F86CA95441C76BDF02D6F25041CA7525EE6CA9544190ECBC39D6F2504142E6CC986CA954416F207F4AD7F25041FCCC6B106CA95441F6285CAFD7F25041C3F528CC6BA95441BAE2591AD9F2504164C8E58C6BA95441E098E98EDBF25041E2D8C60C6AA95441AC139DC1E3F25041EC9B606C67A9544190824A68E9F250413FB09B5A65A95441687D2330EDF25041B24FDB3165A9544108770672EDF25041FBE190FD64A954417D028B45F7F25041DE78D4FE63A9544171B6F860F7F25041E23642BA63A954417B14AE07F8F2504185EB518861A954417B14AE77F7F25041C3F5285C60A954411FD16A86F7F250419D3B6D4660A95441101C3A85F7F2504176EF914360A95441101C3A85F7F25041E3D5E20360A95441E0C072EAF7F250413FB8E8B25FA95441B81E855BF8F25041C3F5280C5FA954416794B36DF8F25041B41B690A5FA954412D85F683F8F25041F7DF4EE55EA95441D9A73116F9F2504119C032FA5EA9544116A127B0F9F250412E5762EB5EA95441CBE799D1F9F25041723F3CE05EA95441B81E85FBFAF250410000000059A954417B14AE57FCF2504148E17A3455A9544100000050FEF25041C3F5284C52A954412CE90DCBFEF25041032314DC51A954416FA1661900F350413E2AC35E4DA95441AF2240CFFFF25041A6CD64524DA95441D3221102FAF2504197D8889C4CA95441A3033434F9F250417B8668B34CA9544107DDF90AF9F25041DD9A10BD4CA95441DB325BB0F8F25041DA624AD24CA9544199509804F8F25041200DE71B4DA95441E53A77F5F6F25041B52B073A4DA95441E642D3D2F6F250418A4C24424DA9544113BDE967F5F2504178CE1CBB4DA95441DEB5CCB5F4F2504185EB51784DA954416D9EE8D6F2F2504185EB51784DA95441BD9C63ABF2F25041E4B46D7B4DA9544134183EEBF1F25041D452FD984DA9544151A56370F0F250418D1E31EC4DA954419ED8C86CEFF25041907E513D4EA954413D0AD723EEF25041000000B04EA95441F290E040EDF25041F3B022C64EA954417F42A8F2ECF2504159C4B0D94EA95441409A5F78ECF2504159C4B0D94EA954417B14AE37ECF25041000000E04EA954412E7DAB38ECF250418A0014F84EA9544127817253ECF250418012BE984FA9544127817253ECF25041E93CB03651A954416BF00A42ECF250414705643F51A95441B81E852BECF2504148E17A7451A954417B14AE67E9F2504148E17A3452A954418DF136D7E7F25041738CBDF551A95441671B4BB9E7F25041738CBDF551A95441EEC8087AE7F25041A96524E751A954417B14AE67E6F25041C3F528BC51A954410C94C94EE5F25041D18545DF51A95441BA398F5DE4F2504106A66C3552A954413458CB4FE4F250419D1A963A52A954413D0AD773E3F25041C3F528AC52A95441F44B6C32E2F25041A79117CD52A95441A08C3181E1F250418FF579F452A95441565D4EA8E0F25041E65D088852A954418515C73FE0F250414F3D706452A9544166BAB883DFF2504106A66C3552A95441F1A17679DFF250414375E82052A95441B81E856BDFF25041C3F5281C52A9544135791023DFF25041BD243B7651A954416C25C18FDEF250415A3AD16351A9544105CBCF15DDF25041A6C71B7951A95441926A8AB8DBF25041AEE4369651A954414B402611DBF25041AEE4369651A954412B77C4A7D8F25041998CFEB851A954415C5470DDD7F25041A4FFE5D551A954416804B0A6D6F25041A4FFE5D551A95441B81E851BD5F25041C3F528EC51A954417B14AE77CDF25041C3F528FC53A954416CC050BDCCF25041AC4AC90254A9544125DDC3CCCBF250413F78E53254A954418405F993CAF250419BF0751654A954417B14AE87C9F250410000002054A95441BE0DD338C6F250413234D5F854A95441B5F430F4C5F250418D54CA1155A95441AA6879C7C5F250412804DB1555A95441F6285C7FC5F2504185EB512855A95441E383DE4EC4F25041B6C6793D55A95441B795E0D6C3F25041206E795155A954412E11082FC3F25041206E795155A954417B14AE77C1F250410000007055A954414E2CF719BFF25041DBD7BE7656A95441D1FC5ABDBEF25041F77EBCAF56A95441DBE1AB7DBEF25041A70128EE57A9544169DD6241BEF250411428FE0758A95441B81E853BBEF25041C3F5281C58A954419B8D452CBCF2504139CE8E0159A954415F731802BBF25041E0B8F1AB59A95441F5482664B9F25041AF45C9CB59A954414FCB7096B7F2504173D2A0EB59A95441DAE7F76CB6F25041A5BB1E435AA954417B14AE67B3F25041000000405BA9544195A0C5BDB2F25041EA6D93335BA9544137A4135DB2F2504154E3E3495BA95441F5E20187B1F2504140B3BA5B5BA95441713A2921B1F25041A13E1D7D5BA95441744F14D7B0F2504146E465955BA954418EB8C98CB0F25041D221C0AD5BA954414E3F3E22B0F25041C1F4ACD05BA954411DF7B580AFF25041A2BFC8285CA9544185E57712AFF250417B1A884D5CA95441B81E85DBAEF2504148E17A845CA954410A2B4E7EAEF250412C58EB7E5CA954413C012262AEF2504104664F885CA954412FA0F88AADF25041023F67705CA954413D0AD743ADF25041C3F5286C5CA95441F6285CBFACF2504185EB51E85BA95441F6285CBFACF25041D9D6F4945BA95441964858A4ACF250412370BB695BA954414669316CACF25041F1D046C15AA954412730292DACF2504120232E735AA954410089F2E8ABF25041F97BF72E5AA95441CCE1FFC4ABF2504102C43A385AA9544122391546ABF250410707FF6A5AA954417D9BFAC7A9F25041CBAE85CA5AA9544191C015E9A8F25041C1C9340A5BA95441EB074C2BA7F25041714CA0485CA95441CFB93E6CA6F2504135D977685CA954412542455AA6F2504135D977685CA954413D0AD753A6F25041C3F5286C5CA954411C0123EAA5F2504135D977685CA95441EC1194E1A4F2504135D977685CA954417CD4176EA2F25041661CE3585DA95441056FC611A2F2504121CF0B875DA954419B500EA3A1F250414121AEA65DA95441B81E852BA1F2504148E17AD45DA9544125394502A1F2504117EABAC65DA95441D69C4D14A0F2504117EABAC65DA954417A683DCB9FF2504137E24ABC5DA954417B14AEF79EF2504148E17AD45DA954419B7E57FA9DF250419392D1C85EA9544193E583569EF250418BF9FD245FA954412343C3619DF2504175D22F405FA95441F6D974579BF25041975E9AF95FA95441F003C8FA9AF25041A762BA2360A954417A84E9A29AF250414702B23960A95441355D0EA099F25041E886969560A954415F8BC89D98F25041C4CB762261A95441F5658C7096F25041C4CB762261A95441492F653096F250412398C51761A95441F6285CAF95F25041C3F5281C61A954412829B85095F25041F53E9F0261A954414FC871F294F25041F53E9F0261A95441337A643394F25041C4B0C7E260A9544169E6EF0894F2504144412CAA60A954413D0AD7F393F2504148E17AA460A95441F6285C6F93F2504185EB510860A954416B7ABE5693F25041F6C9371060A95441048D3CF691F250413B9718A360A95441540AD1B790F25041F53E9F0261A9544138BCC3F88FF2504188584E4261A95441FEE94AFB8DF25041A5C10A4162A954414E67DFBC8CF25041CC0F180063A954413801F7A68CF2504122765A0663A954413D0AD7A38CF2504185EB510863A954411EADCB1F8AF25041F56DE9C163A954413D0AD7038AF2504185EB518864A954417E050E398AF250417A24F1B064A95441E53CED1E8BF25041FBE190FD64A954417F4AD4ED8AF25041D810F03A65A95441F6285CFF8AF2504185EB514865A9544129DF7C558AF2504197565DF965A95441C8D330208AF25041AA64FC3B66A954411394F20E8AF25041C317E24266A95441F6285CDF89F2504148E17A7466A954419B69BA9388F250417BFCCCDC66A95441CA74E00288F25041F840E11A67A9544191BD164586F250418C753F9A67A95441E11FFCC684F2504115AA9D1968A95441945EC62784F25041C7CDB83A67A95441945EC62784F2504134B409FB66A95441014517E883F250416FF1D35B66A95441E4C0ABA982F250416F0C839B66A95441D257EFAA81F25041C7CDB83A67A954415348AC4C80F25041500217BA67A95441E91DBAAE7EF25041D936753968A95441C8CDB1B47DF25041332D341A68A95441E0881C6D7DF25041292DE03668A9544193E284B27BF25041008582F868A95441793527D678F25041A6229D766AA95441983F93B777F250412F57FBF56AA95441AC49FF9876F25041C28B59756BA9544130D6B5AC73F25041062874F36CA9544145E0218E72F25041179130F26DA954413377658F71F2504118ACDF316EA95441DB9A80B070F25041ABC58E716EA95441C931C4B16FF25041706D15D16EA95441DD3B30936EF25041F9A173506FA95441C1ED22D46DF25041BD2E4B706FA954419A9F15156DF250418CBB22906FA95441871BAAD66BF2504115F0800F70A954419C40C5F76AF250419E3F8ECE70A954414F7F8F586AF2504132593D0E71A95441C62F829969F2504159A74ACD71A954416E6E4CFA68F250414EC2F90C72A9544116AD165B68F25041E2DBA84C72A954418D78B8DB67F25041136A806C72A95441F9435A5C67F25041A6832FAC72A95441A18224BD66F250416B1007CC72A954418F1968BE65F250412FB88D2B73A95441100A256064F25041C2D13C6B73A954413C9A91E460F25041688A062975A954416D632C8E60F2504195A937C075A95441B81E857B60F2504185EB51F875A95441680ECA6760F2504109BE630376A95441A865336560F250415465EB0776A95441F8E2C7265FF25041D2B4F8C676A9544153605CE85DF25041BE8FDDA577A954415345ADA85DF25041BEAA8CE577A954413D0AD7635DF25041465B0FB478A954413D0AD7635DF25041C3F528EC78A954417409C7405DF25041435D3F1D79A95441CA104F295DF250410147A76379A95441724F198A5CF250418096B4227AA95441B3FC8E855CF2504151A25A237AA954413D0AD7735CF25041C3F5283C7AA95441E8C83DAB5AF250411566F8B47AA95441EBBB6AED59F250419DFF70217BA95441C393229C59F2504148E17AE47AA95441B81E857B57F2504148E17AE47AA954413D0AD75355F25041000000607AA95441514F782B55F250412A8482427AA9544186F33CC553F25041BEF06FDB7FA9544131D3B60851F25041434401CB8CA9544159C7291B4FF25041421F935D97A95441162B0F9D4DF25041060DFDB29FA954415C83883D4DF2504123BC9CA7A8A954416EEC443C4EF25041749AC39EAFA95441953A52FB4EF250413EE53BF9B3A954418B55013B4FF25041560C9932B9A95441186AD00E50F250411EEBC314C6A95441B05D296F50F25041E17EE349C6A95441D5038EE350F25041C88C108AC6A954411C57FA3851F25041EA242AB9C6A95441EB7A3D6851F25041019388A1C6A95441F50CBF5E52F2504148FD1745C6A95441B81E856B52F2504185EB5138C6A95441BE4D00AB52F25041CA85AB36C6A954412E32072653F25041DB5F2A22C6A95441409BC32454F25041DB5F2A22C6A95441CFC5854954F250419E186B2EC6A95441F0E6EFE755F2504133AE828AC6A954419E821C0256F250411B25C981C6A954417B14AEC756F2504148E17A14C6A954413996DFF456F25041E2731127C6A954416548210157F25041DB5F2A22C6A95441E348416057F25041EBB3BFE2C5A95441B8ABFC8557F250412D60DD3BC6A954419626E1A058F25041D40DF3A5C6A954413D86600F59F2504163ECC6A7C7A95441509B067E59F250413655BDCEC8A954417B14AED75BF2504185EB5128CDA95441DCEAD4FC5BF250419ADB3B49CEA95441F521DC145CF25041B82167D9CEA954411F567E105CF25041FCB822E2CEA954413D0AD7135CF25041C3F528FCCEA9544103F630F55BF25041AA76BD18CFA95441F00007F05BF250415A601123CFA9544103EE6CC65BF25041936F5944CFA95441B81E85AB5AF25041C3F5284CD0A9544185F7C5CA57F2504163D8B1B6D0A954415367E2C357F250418ABF39B8D0A95441224A647856F250412CFEE301D1A95441F70B110855F25041C85D6370D1A95441640C68E153F25041BBDCB703D2A954417E0EBFBA52F25041AE5B0C97D2A95441926E950252F250419AFB354FD3A95441926E950252F2504180F9DE75D4A9544183FCEA2152F250416A628B70D5A954418859DC1A52F250416F95D071D5A95441E9E8BE3F52F250419F466F2CD7A9544101A34D2D52F250414D82F9BFD7A954412A679E2652F25041EFD0D102D8A95441CDCCCC7C52F250419A999959DCA95441F6285CBF52F2504148E17A14E1A95441A5A0B8D152F25041AFEFC723E1A954416C5ED36653F250412475278CE1A95441B9F21BDE53F250416A097003E2A95441F6285CFF54F2504148E17AF4E2A954410E57760355F25041AF488850E3A954414313722155F25041C38CFCA2E3A95441D7A0544655F25041BD742EA5E4A9544182E8C55855F25041AC7925F1E5A9544182E8C55855F2504108F13918E7A95441D7A0544655F25041549DE186E7A95441D7A0544655F25041AD20DD2CE8A95441588CFE6155F25041AF14F6ADE8A954417A468D4F55F25041156F458BE9A954417A468D4F55F250411BC9EFFBE9A954413D0AD75355F25041C3F5285CEAA95441A162BB4B55F25041A538AE7BEAA95441F6FC1B3D55F250414E2CCBC4EAA95441B727C80555F25041C15D6ED9EBA954416D6F391855F25041FC0E0D94EDA95441F6FC1B3D55F25041B721EB5EEEA954417A468D4F55F25041526E53BDEFA95441588CFE6155F25041F79DF6D1F0A95441B91BE18655F25041E1BABB1BF1A954416078122656F25041021E334AF2A954413D0AD74356F2504185EB5178F2A95441463B9C7656F250415CD6B586F2A95441650A0AD557F250411D6C5AD6F2A954410057723359F25041371A0245F3A95441E23BFD5959F25041588C4758F3A954417B14AE6759F25041C3F5285CF3A95441D9C8D76959F25041B2D23460F3A954414C031AA259F2504176EF557CF3A954417A61776D5AF25041CD05E845F5A95441F6285C2F5BF250410AD7A3B0F6A954410FA2680D5BF25041954674D9FBA954411E839D2E5BF250410C191790FCA9544106C90E415BF250415AB9D77FFDA954411E839D2E5BF2504122A30982FEA954411E839D2E5BF25041BAFB585FFFA954411E839D2E5BF2504104D1AC96FFA95441C5FFA1885AF250415D54A83C00AA5441833635D059F25041941D15F500AA5441E0713D8959F25041208EC22601AA54413D0AD75358F25041C3F5285C02AA54414958FA7957F25041FD96A18502AA544169E1D52557F250416AD2B3AF02AA544116B72BEB54F25041C19C765704AA54418FC2F5785CF250413333333307AA54410844574E5FF2504159CB2FC908AA5441AFC2987D60F250417053EC6A09AA544151EE65B262F250414DB6AAAD0AAA54417EB816DE63F250414DB6AAAD0AAA544129B39EC464F250419DB3EE200BAA54419D73E02065F2504102CC975A0BAA54413D0AD76366F250410AD7A3B00BAA5441E9D98D9466F2504166CDF4E20BAA544165DE0D3367F25041FC7B9F4C0CAA5441EC0E6DD467F2504183ACFEED0CAA5441743FCC7568F2504193776BA60DAA5441AB72E7A368F25041F6DDA1020EAA544119D91D0069F250411AA8CA470EAA5441F5BD592C6AF2504144117F4E0FAA5441F6285C1F6BF250410AD7A30010AA5441A2B287836BF2504181449E6910AA5441A501D1E16BF2504123D539B610AA5441A0DBBE556CF25041185FD51611AA5441D0A9164B6DF250413B2DCF7311AA5441FA60170B6EF250414B6ACFB311AA5441E12C40506EF2504150353C6C12AA544118605B7E6EF25041AB3280DF12AA54415A29C8366FF25041AFFDEC9713AA5441FA8DFE926FF250410AFB300B14AA5441E68E420670F25041A594829514AA5441B9F1786270F250412CC5E13615AA5441F024949070F25041CD29189315AA54414557F33171F25041DCF4844B16AA54414F244AAD71F2504172727AD816AA54418892E93B72F2504140C8975D17AA544154B8B17472F25041EB55438E17AA544190B6395B73F25041FA20B04618AA54413046338973F25041280073FB19AA5441BEB3D39373F250417C6101021AAA544139B4569C73F25041CBB941071AAA544176AF492875F250416D7F3AE31AAA54414E479BB275F250410E7AC2C91BAA544109E0A8C975F25041B31314541CAA5441C743239976F25041A4758E231DAA544194DB742377F250419076D2961DAA544186A79D6877F2504181D84C661EAA544178C8C99577F25041078BBF5E1FAA5441103A6EA577F250419FFC636E1FAA5441440B183878F25041C66C26D71FAA5441E56F4E9478F2504167D15C3320AA54418009A01E79F25041A3CFE41921AA544168FAB82F79F25041C981147521AA54413D0AD75379F2504185EB51B821AA5441926E344179F25041B3561F5222AA5441926E344179F2504139CBB07322AA5441926E344179F25041F82E2B4323AA54419639A1F979F25041D0C67CCD23AA5441B69759FD79F25041C090DED023AA54417B14AE977AF2504148E17A3424AA544131C0B5C67AF250416187EC8724AA5441BECE36F77AF250413EC304B424AA544146FF95987BF25041EEF2A7C825AA54417D32B1C67BF25041F2BD148126AA5441B465CCF47BF25041EE1F8F5027AA54414F06052D7CF25041786500C127AA54417B14AE277EF2504148E17AD426AA544107F4413F7EF25041003A79E326AA544173F62D4C7EF2504193224BDD26AA5441FA268DED7EF250410289813927AA5441412515D47FF2504189B9E0DA27AA5441C855747580F25041CA824D9328AA5441451D691482F250410C1FD3C327AA5441547E275783F250416BBA9C6727AA54416349940F84F250416BBA9C6727AA5441EF44606985F25041EE1F8F5027AA54413543E84F86F25041A2EDB79527AA54415DD87D4D87F250410C1FD3C327AA54418A38800389F250415286C5AC27AA5441035490E489F25041C482B0FF27AA5441F6285C1F8CF250410AD7A39028AA5441A2EBFBE68CF250410C063BE928AA54419E2828848DF25041981A9F1D29AA544194BFBD818EF25041014CBA4B29AA544161570F0C8FF2504189E6C76229AA5441B2EBE87C90F250417F7D5D602AAA5441574D791091F250414FAE25AA2AAA54417B14AE1791F25041C3F528AC2AAA5441813A026391F25041E2246AD32AAA5441571B8C9191F250414C15AFEA2AAA5441DE170A9791F25041084687EE2AAA5441A7F26B4993F25041ABCBE3D02BAA544172AD8F2294F25041ABDD5F162CAA544112A8170995F25041ABDD5F162CAA544167DA76AA95F250410B7929BA2BAA5441C2D7BA1D96F250415BE01BA32BAA54415D710CA896F25041CF7AA1D32AAA5441DC1FF2CF96F25041C037B5B52AAA54417B14AEE796F2504148E17A942AAA5441C9C75CF596F25041A139A5992AAA5441FED5420497F25041E8AE788E2AAA54418506A2A597F2504115E293BC2AAA54410D37014798F250414C15AFEA2AAA54411C026EFF98F25041DE450E8C2BAA5441DA65E8CE99F25041ABDD5F162CAA5441DF3055879AF250414C4296722CAA5441F89113CA9BF25041F2DBE7FC2CAA5441D02965549CF250418E0B032B2DAA5441668E9BB09CF250410BA610422DAA5441AD8C23979DF25041F2DBE7FC2CAA5441D521B9949EF25041F2DBE7FC2CAA5441EC7067F89EF250418453250B2DAA54417B14AEB79FF2504185EB51F82CAA54413030B229A0F2504177EE565F2DAA5441D9190DD5A0F25041E33D62CC2DAA5441D9190DD5A0F250411907CF842EAA544157B41AECA0F250416005576B2FAA5441C0E5351AA1F25041BFCD079730AA5441C0E5351AA1F250410FCB4B0A31AA5441E58A66DEA0F25041276A4C4432AA54413D0AD7E3A0F2504148E17AD432AA5441AFC2FD94A0F25041941B184E33AA544139B5D678A0F25041C890C88F33AA5441B3C9500EA0F250418E74D01D34AA5441611D85EE9FF25041CBDDDA4E34AA5441611D85EE9FF25041C34C995538AA5441E8196ECE9FF250418096D8AD38AA54417B14AEB79FF2504185EB515839AA5441968AC7129FF250416A7538FD39AA5441F320FD079FF25041FAAC9B0B3AAA5441D521B9949EF25041C744ED953AAA544195764E689EF250416B89B1A73AAA54417B14AE379EF2504185EB51D83AAA54410CE6778F9DF250411489C3373EAA5441EB24D3E79DF2504171037AE83EAA54410FEFFB2C9EF250418F02BE5B3FAA54414622175B9EF250414E66382B40AA54414622175B9EF25041D59697CC40AA54417D5532899EF2504194FA119C41AA54417D5532899EF250417C9DF30342AA5441B81E858B9EF250410AD7A31042AA54417D5532899EF250416571471442AA54417D5532899EF25041E92C713D42AA54414622175B9EF25041525E8C6B42AA54416ACCFD319EF250416AF8DD9C42AA5441DDF7191A9DF25041F9F8405344AA5441F58D3DEA9CF25041DFF0EDC244AA5441987D4DB89CF25041621E77DF44AA54417B14AE279CF250410AD7A37045AA5441D1F7EC6C9BF25041116694FF48AA5441006156629BF25041A279A35A49AA54411FB002699BF25041A6B6547549AA5441BF3EEDAD9BF25041375C261D4AAA5441CD5276FC9EF25041060DC13E4BAA5441DB53B5E09FF25041285381004BAA54413D0AD723A0F250410AD7A3E04AAA5441BB855B29A0F250411D73F0E14AAA5441644E4256A0F25041E80D7DCB4AAA5441B980A1F7A0F25041D9D9A5104BAA5441B816F381A1F250415674B3274BAA544151D92CA1A1F2504103B56F3A4BAA5441B81E85BBA1F250410AD7A3404BAA54417CF027DBA1F25041138E395D4BAA5441A41737F5A1F250416F3EDC6C4BAA5441FF147B68A2F25041A771F79A4BAA54418645DA09A3F2504147D62DF74BAA54418F3FEB2CA3F250415C929DED4BAA54418124345BA3F2504163A0F4D74BAA5441D299C003A4F25041606014894BAA5441BE78F537A3F25041442AB5B042AA544130D77FD4A5F25041C762C01141AA544167090964A6F25041A4C987EB3EAA5441AEEE5985A6F25041C05F5A553EAA54414D4EF7AEA6F25041FC85C4993DAA54411AB432C1A6F25041037495473DAA5441B9337FC6A6F250418FCFB22F3DAA544168ECA3CBA6F25041637883183DAA5441C07D6AD4A6F2504169B1F4F03CAA5441F75F32DAA6F2504126DFE5D63CAA54419ED307BBA6F250416D0B26A83CAA5441596C15D2A6F250415E40B9EF3BAA5441909F3000A7F2504186A867653BAA544147E572DFA6F250419119B2523BAA5441F6285C2FA6F250410AD7A3203BAA5441F6285C2FA6F25041F237A38A3AAA544149A1A819A6F25041AE7AC4503AAA54419A089B02A6F25041D217060E39AA5441F6285C2FA6F250418B9AF8F436AA5441F6285C2FA6F2504148E17AC436AA5441F63C57EBA6F2504152921D1B34AA5441DB289611A7F25041E45FA89C32AA5441AC7CE20FA7F250418F31AEEA31AA5441080523E9A6F250416005576B2FAA54412B90DC07A7F25041FEFFA0A32EAA54417B14AE07A7F250410AD7A3902EAA54413AED380CA7F250418DA348872EAA54413F383E17A7F25041013DA63F2EAA5441293524C4A7F250416A41DAE52CAA54417DF1BA58A8F25041668964DA2BAA54413D0AD793A8F250410AD7A3602BAA544108A71EA7A8F25041BEA94A4D2BAA54416533ACAAA8F25041ED79E5462BAA54415695267AA9F250412E166B772AAA5441FB2E7804AAF25041984786A52AAA5441AE63008CAAF2504182C794342AAA5441F6285CDFAAF2504185EB51C829AA5441FF8CCD63ABF25041681F64FD29AA5441F15B5F8CABF25041101727042AAA54416E23542BADF250415286C5AC27AA54416E23542BADF250416B8DB5DF25AA54416E23542BADF2504120C4C04024AA5441B983BC0AADF25041BD4FB4F423AA5441F6285C8FACF250410AD7A35023AA54412CF07CB8ACF25041CFA2CA3423AA5441A18B02A1ACF25041116302FE22AA54411E53F73FAEF2504199667A1722AA54410D54E08AB0F25041C3F5283C22AA544165592C28B1F25041C3F5283C22AA54414FD834BEB3F250413B715A7D1EAA5441A40A945FB4F250419076D2961DAA544195D6BCA4B4F25041DBA8A9511DAA544103A65D03B4F2504154784AB01CAA544179D2A3E4B3F25041D3565F931CAA54413D0AD713B3F250410AD7A3001CAA5441EADD1998B2F250411069AFD21BAA5441E8AAEF6FB2F250410E7AC2C91BAA544124E8BA55B2F25041A63809BA1BAA5441F6285C6FB1F2504148E17A641BAA544186942433B1F25041499691301BAA5441981616FFB0F25041CCB055111BAA5441D9B29B2FB0F2504195E7E8581AAA5441BD250BF5AFF25041175A581E1AAA54413D0AD763AEF2504148E17AC418AA54417B14AEF7ADF25041C3F5284C18AA5441184F76E5ADF25041A4792B2318AA544158203AD8ADF25041C3ED941818AA54411657CD1FADF25041F5BEAD9016AA5441128C6067ACF250414AC425AA15AA5441162AE697ABF250416E61676714AA5441C1F786F6AAF250413263DF8013AA544102940C27AAF2504150353C6C12AA5441D36F1C16AAF2504150B7F33012AA5441909A94AFA9F250418637550311AA544144309257A9F25041ECA11E8810AA5441AECB5BFBA8F25041140ACDFD0FAA544185CC1788A8F25041F6DDA1020EAA5441BF995A20A8F25041837F17660BAA5441293524C4A7F250417053EC6A09AA5441A7CB5CDAA7F250414C837CDA08AA54417B14AEC7A7F25041C3F5285C08AA544189FDFEA4A7F2504107C8EED605AA54413869FB7EA7F25041FDC77A4605AA54413869FB7EA7F25041C1B0C11303AA54413D0AD773A7F2504148E17A4402AA54418AC6ED41A7F2504175A1521100AA5441E86BB70BA7F25041BD77D00FFFA9544177E01AD0A6F25041813976ACFEA95441F2A21716A6F25041E9D4CDD8FDA954410B09F9C8A5F25041A9E1F69EFDA954418F493CCBA5F250414F5A0852FDA954417B14AEB7A5F250410AD7A350FCA95441021DEDBDA3F250413AAAB1DEF7A95441DB7739ABA3F2504109F682C4F7A95441EF59AF62A3F25041C7B5EC24F7A9544147B9757EA2F250418893A5F7F5A9544132E36CA2A1F25041BF652ED5F4A954416819AF0EA1F25041EB9C7041F4A95441304AB0A3A0F2504175B8BECBF3A954414570BB65A0F250419FA55C95F3A954412CA682E29FF25041D6202E22F3A954410EFE18A69FF2504123F126EDF2A954413CB9AC589FF25041286E89B9F2A95441FAEF3FA09EF2504100D9F3BBF1A9544111B6CB6A9EF250414CC6C509F1A954417B14AED79DF2504185EB5108F0A95441FAD4B5BC9CF25041CC542B83EEA954418791B5039CF25041A617ABDCEDA95441D9842C919BF25041B7443CE7ECA954417B14AE379BF25041C3F5286CECA95441F6285C5F9AF2504148E17AF4EBA95441471B3F389AF2504156143B75EBA954411746460A9AF250415CB81F3AEBA95441B81E85EB98F250410AD7A350EAA95441FC950E8098F250411FBFD6F7E8A95441322D016698F2504138CFF1C8E8A954416880CC4C98F2504165BFECBAE8A954416EF8863698F25041567B89AEE8A954413C04B63198F2504160B2DBABE8A95441086C948E97F2504157297B75E8A95441651ECB5F97F25041196C1937E8A95441F6285C2F97F25041C3F5281CE8A9544191775E1E97F2504171E2DDDFE7A95441FED5420497F2504120600EBDE7A95441A5CF44F796F25041E12E1E55E7A95441B81E85AB96F2504185EB5148E6A95441F06A53C796F25041FB1393D5E5A954414A081ABF96F250419802C893E5A9544189CEB6F696F2504114E10412E5A9544146BBEB0297F250413B5BA5DFE4A95441813B35ED96F250412A6FAAAFE3A954414A081ABF96F2504108A5F983E2A95441D2AEC6CA96F25041313835ECE1A95441599A9BAF96F25041ECBA18BEE0A95441049B6A9D96F2504196BD5475E0A954417B14AE3795F250410AD7A3C0DDA954412C94537294F2504157D9899EDDA95441EA12820B94F25041904E1BA7DDA9544163E2226A93F250413551D733DDA954411A4A731993F2504168B985A9DCA954412E492FA692F2504113872608DCA95441D545355E92F25041D67C3648DBA954413D0AD74392F250410AD7A320DBA95441A3DE7B3092F250417C1348CEDAA954412FB3DD1B92F2504190F44C97DAA954416A79811892F2504132CE4168DAA95441D8F5788591F25041DF1BA5F6D7A95441F7E1683A91F2504197ECC04DD7A95441B3552CC290F250414AABDD37D7A95441FA1D0C5290F250412432AC2DD7A954416F6E19C88FF25041798ECE0ED8A95441BDD09FBC8FF25041D6CF8821D8A95441F3876EAD8FF250414160EB3FD8A9544139EF60968FF250412C612FB3D8A95441BC54537F8FF25041452B58F8D8A9544139EF60968FF25041048FD2C7D9A95441F3876EAD8FF250414A8D5AAEDAA95441BC54537F8FF25041B889E294DBA95441BC54537F8FF25041F9524F4DDCA9544161570F0C8FF250414F85AEEEDCA954415C8CA2538EF25041904E1BA7DDA954416BC0790E8EF25041AE4D5F1ADEA954414DC1359B8DF25041357EBEBBDEA95441FDC3F1278DF25041BDAE1D5DDFA95441C690D6F98CF25041CC798A15E0A95441769392868CF2504153AAE9B6E0A954419EFB40FC8BF25041DF0F6486E1A9544162FDB8158BF2504116D9D03EE2A954415867678B8AF25041B73D079BE2A95441E4951A178AF2504103A72DD5E2A95441B81E85EB89F2504148E17AF4E2A95441CA76649889F2504139181028E3A954417B04A94889F2504176A1816AE3A95441BDA02E7988F250419EA0C5DDE3A95441FC33BA4A88F250415C671CF7E3A954414349873287F25041CF59FBA4E4A95441BD7347F186F2504189375BDBE4A954413543E84F86F25041E4349F4EE5A95441E01089AE85F250411B68BA7CE5A9544159E0290D85F25041489BD5AAE5A954419A7CAF3D84F250416B65FEEFE5A95441084C509C83F25041DACB344CE6A95441F950608583F2504143C9AC57E6A954417B14AE0783F2504185EB51A8E6A95441A56C45E682F25041A13A3AA7E6A954410481E3E382F2504170306BA8E6A954417C50844282F2504170306BA8E6A954416D85178A81F25041F8CA78BFE6A95441E654B8E880F2504148C8BC32E7A95441C855747580F25041B62EF38EE7A95441AA56300280F25041579329EBE7A95441315AA81B7FF250418EC64419E8A954413CC3121E7EF250413E5F5230E8A95441B492B37C7DF2504157297B75E8A95441C33039AD7CF250417F28BFE8E8A95441D82FF5397CF2504166F4E72DE9A95441B465CCF47BF250413E8C39B8E9A95441CE99A3AF7BF2504175BF54E6E9A9544119CC7A6A7BF25041FCEFB387EAA95441BECE36F77AF25041CA870512EBA954416A7E00B17AF25041CC91243AEBA95441B81E858B7AF250410AD7A370EBA9544192CE0FBF78F250419A6520C3EBA954412BD7407D78F2504188EB7FE1EBA95441BDDAB89677F2504110868DF8EBA954412BAA59F576F25041B1EAC354ECA95441D677FA5376F25041474FFAB0ECA954419F44DF2576F250416F4E3E24EDA954417211C4F775F250412EB2B8F3EDA95441415715F175F2504122418AF7EDA954417B14AEE775F2504185EB5128EEA9544157A4368575F25041E0142E35EEA95441E0E0645675F25041C416EF4FEEA95441B38062A073F25041FB490A7EEEA95441299129FF72F25041D85A8E89EEA95441B81E85AB72F2504148E17A94EEA95441B541319372F250417FA94491EEA954419A1FA45D72F25041B5E21795EEA9544159245C4672F250419FE51F87EEA954414DF5366171F250416E4DDF68EEA954418689CAEC70F25041FB490A7EEEA954419527501D70F2504197E3D321EEA95441B9C491DA6EF2504188186769EDA95441E12C40506EF250416F4E3E24EDA954411495EEC56DF25041474FFAB0ECA9544134EC22E36DF250419D4223AAEBA954417B14AED76DF25041C3F5281CEBA954419D4DD7026FF25041A414C568EAA95441915CE3646FF250415C8B7D2BEAA9544150C05D3470F250414257A670EAA9544154F8683A71F2504171E07256E9A95441709430A771F250419C7A5FC0E7A95441E5BA18C071F25041EFFD4DC7E6A9544163FAF8C671F25041DF761FC3E5A95441965437A571F25041F3687609E5A95441CD8752D371F25041C6087453E3A95441F97315D871F25041E66BA53BE3A95441F6285CDF71F2504185EB5128E2A95441AD8663B771F250413FD98CE8E0A95441965437A571F250419911DC9FE0A954411D85964672F250410D161046DFA95441D54B9C6072F25041DF414515DFA95441B81E850B73F250410AD7A390DDA95441B81E855B74F2504148E17A34DCA95441B81E855B74F250418A482C63D9A95441607F484D74F25041F52D1485D8A95441C047F97875F25041FF967E87D7A95441D86303B675F25041C1F7B8E4D6A95441C26177D875F2504111ADBC16D6A95441DD463DEC75F25041E16A538CD5A954417EAB734876F25041A0A1E6D3D4A954419CAAB7BB76F250417DD735A8D3A95441B150F32C77F25041C7B9208DD2A954413D0AD7A377F2504148E17A54D1A95441952FAF0E78F25041B6011EBDD0A9544133A6831578F250416A1475AFD0A954410AD4262A79F25041BA4E8010CFA954412431479D79F25041D6547188CEA954413D0AD7E379F2504148E17A24CEA95441279BF9167AF25041397A9EF8CDA95441006BBC277AF250418D84CFE4CDA95441F60152257BF250411F8847FECCA9544155CA02517CF2504129F1B100CCA954415A7368B97CF25041C42F20B6CBA954417B14AED77CF25041C3F5289CCBA95441C81D70DB7CF250419D91D19DCBA95441DCFA61F27CF25041CEF36D8DCBA954413D0AD7037EF250410AD7A320CCA954413CC3121E7EF250416124CD2ECCA9544173F62D4C7EF250419C225515CDA95441F0903B637EF25041471DDDFBCDA954415AC256917EF25041BA4E8010CFA954415AC256917EF250417BF6393DCFA95441F6285C9F7EF25041C3F5288CCFA9544122287D6F7EF25041944E64D8CFA95441B95D20357EF25041514A4C6AD0A95441642BC1937DF25041A512FD95D1A9544164956F097DF25041CDA79293D2A954413C962B967CF25041DD72FF4BD3A954411E97E7227CF2504164A35EEDD3A9544146FF95987BF250412307D9BCD4A95441BECE36F77AF25041E16A538CD5A954418AA264BB7AF25041A63A2DBED5A95441D2BB6C357AF250416E5D8393D6A95441006BBC277AF250410E3504B8D6A954417C6FCBF779F2504195C0A7F5D6A95441B81E85CB79F25041C3F5283CD7A95441BD0E6EBD79F250413017B240D7A95441AB385D8679F25041FF967E87D7A95441D643BC1979F25041C7C36375D7A95441F36E7C0479F2504159DF3A7CD7A95441D97AE9C178F250419214A991D7A954419D6A205D78F25041BD8A40CBD7A954411F1C462578F25041F50F720BD8A954412F2BE30878F250413633122CD8A954417ED85AD077F250417893066ED8A9544123DB165D77F2504104F9803DD9A95441F7A7FB2E77F250413BC2EDF5D9A9544105DCD2E976F250414A8D5AAEDAA95441E6E4B58576F250413719833ADBA95441F6285C9F75F25041C3F5286CDDA95441B8499D5575F250415D0A2407DFA954418814DE4A75F25041BDAE1D5DDFA95441B104493A75F2504172ED719FDFA9544151E1C21C75F25041F914FB43E0A9544151E1C21C75F25041D044F7CDE0A95441B5B1A7EE74F2504149417FB4E1A954416B68A3BF74F25041A45BF34AE2A95441106E217D74F250416A5898BDE3A95441474B719274F250419E361768E4A95441474B719274F2504143D068F2E4A95441F21812F173F25041489BD5AAE5A954416AE8B24F73F2504120332735E6A95441E3B753AE72F250412FFE93EDE6A95441C7FEFB7272F2504166BF864CE7A954419B00B0DE71F25041F1B7C194E8A95441BB22BEB071F2504166F4E72DE9A954410755956B71F250413E8C39B8E9A954410755956B71F2504188DB48F3EAA95441F2D7369471F25041881809ECEAA954411388910172F25041ED7C86D8EAA95441787AF21873F250412D3EAEA6EAA95441607F484D74F25041C5BC9859EAA95441CB9E922D75F25041104AA747EAA95441F6285C3F75F2504148E17A44EAA954414AFC6C4E75F25041DA750645EAA9544165779C8D76F250415C8B7D2BEAA954410DC5BEC276F250415C8B7D2BEAA954413EC5C31378F25041E177D637E9A95441FB7268E777F25041579329EBE7A95441E23E912C78F25041CB2DAF1BE7A9544183A3C78878F2504143FD4F7AE6A954410AD4262A79F250416B65FEEFE5A954415F0686CB79F25041BC9F0951E4A954413771F0CD78F250419E73DE55E2A954413771F0CD78F2504108767A07E2A954417B14AEB778F2504148E17AD4E1A954413771F0CD78F250416560A9B7E1A954413771F0CD78F25041DF0F6486E1A95441C9A14F6F79F25041D044F7CDE0A95441379ED7557AF2504103ADA543E0A95441DC19DA857AF2504185E3E02FE0A954413D0AD7D37AF250410AD7A300E0A954416B374E187BF2504180F592F3DFA9544137CBBEDD7BF25041717C46A2DFA9544118996B847CF25041D1ADC563DFA95441757F7AA77CF25041DF41B14EDFA954415FBE4E187DF25041710EABF0DEA954410A964E7C7DF25041963E9759DEA95441518A65F87DF2504183431E9EDDA954415AC256917EF25041AE207892DCA95441E012A21D7FF2504108FC19E3DBA95441F6285C2F7FF2504185EB51C8DBA95441837C60387FF25041FDF7ABC1DBA9544109F2F9A57FF250411725AC38DBA9544132878FA380F2504190F44C97DAA95441BD825BFD81F250418B29E0DED9A95441547E275783F25041312C9C6BD9A954419F471CF684F2504154F6C4B0D9A95441E6F20C2185F25041634C3DC6D9A954413D0AD7B385F25041C3F528DCD9A9544101E76AE085F250414953F516DAA95441FE0FCD2186F25041A4F30824DAA9544108A61EAC86F25041EBF1900ADBA95441D63D703687F250417222F0ABDBA95441F0DF347A87F250414C657933DCA954413C1BA89B87F250412C63985FDCA9544144D18D1A89F25041B889E294DBA9544121344C5D8AF250419A8A9E21DBA95441600693968AF250410571CCFCDAA95441E2AEA6158CF25041A6442CEED9A95441E48F1A6D8DF25041DBF93CCAD8A9544196A245298EF25041289B9B76D8A954418A29900B8FF250410A6CBED6D7A95441B267BAC68FF2504131458552D7A954411B1D04AB90F25041919AF6A0D6A95441EABD782591F25041F185534FD6A9544103B9757A91F25041E27EF8CCD5A95441E61A2ECB91F250415A3AF4EAD4A95441FF4E058691F25041B4A0A260D4A95441E14FC11291F25041E13D6C04D4A9544186527D9F90F25041A53FE41DD3A954410F283D6790F25041C7C7837ED2A95441B81E854B90F250410AD7A350D2A95441B20D482590F2504145A8A2C3D1A95441B9BA2B1590F25041A512FD95D1A9544130AA451490F2504155D9E984D1A954413D0AD70390F2504185EB5148D1A954413A34170B90F25041D92077D6D0A9544131201EFE8FF25041ABB0FADFCFA954410E83DC4091F25041831B65E2CEA95441867F642792F25041FCEA0541CEA95441F280CDBE92F2504183948D0ECEA954417B14AEF792F2504185EB51E8CDA95441834B5A6693F25041B42C9D2EC9A954415D06056A93F25041C5601BC6C8A95441BDFFFB5A93F250412DB110B5C8A95441C57F3C5093F25041C9FFE1A8C8A95441A47EA89A92F2504133004EF3C7A95441A0B33BE291F250412F35E13AC7A95441E880F27392F2504111DB8572C6A95441B81E858B92F2504148E17AC4C4A95441A47EA89A92F2504172B1CEA4C4A95441A47EA89A92F250418AD8569EC4A95441C7AF1E0E93F2504146192CA4C3A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463875 - 349559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -63  </desc>
+<a>
+01060000000200000001030000000100000023000000000000B071F25041EC51B86E21AA5441713D0A576DF25041000000901BAA5441C3F5286C68F25041B81E850B16AA54417B14AEC760F25041EC51B8EE0FAA54410AD7A3405AF25041333333330CAA544114AE474154F25041EC51B8AE09AA5441F6285C5F51F250410000001009AA5441E17A147E51F250417B14AE270AAA54417B14AE974BF25041D7A370CD09AA54417B14AE874AF25041AE47E1FA09AA54416666669649F25041295C8F820AAA5441295C8FC248F2504114AE47B10CAA54419A99993946F25041AE47E10A0CAA5441E17A14DE44F25041C3F528FC0BAA5441713D0A4744F25041666666660DAA54419A99990943F25041F6285CDF0DAA5441F6285C8F40F25041333333A30DAA54415C8FC22540F2504185EB51580EAA5441B81E85DB41F25041EC51B80E11AA54419A99992945F25041EC51B81E12AA54419A99992945F250415C8FC2C513AA544148E17AC44AF250419A9999A916AA5441295C8FF24BF250419A9999B917AA5441EC51B82E4CF250419A9999C918AA54418FC2F5984DF2504114AE475119AA5441295C8F124FF25041E17A148E1AAA54416666661654F25041713D0A071BAA544152B81E3555F2504152B81E351CAA5441D7A370FD5AF25041713D0A371EAA5441B81E857B62F250415C8FC2451EAA544148E17A1466F25041D7A370ED20AA5441D7A3709D67F25041D7A370ED20AA5441C3F528EC6BF25041D7A370FD21AA54410AD7A3F071F25041E17A14EE21AA5441000000B071F25041EC51B86E21AA5441010300000001000000880100007B14AEF795F2504148E17AE42BAA54417B14AEE796F2504148E17A942AAA54413D0AD7A398F25041C3F5283C2BAA54413D0AD76399F2504185EB51082CAA54413D0AD7639CF25041C3F5284C2DAA54417B14AEB79FF2504185EB51F82CAA54413D0AD7B3A0F25041C3F528DC2DAA54413D0AD7E3A0F2504148E17AD432AA5441B81E85DB9FF25041C3F5286C34AA54417B14AEE79FF250410AD7A3F037AA54417B14AEB79FF2504185EB515839AA54417B14AE379EF2504185EB51D83AAA5441F6285C8F9DF2504185EB51383EAA54417B14AE079EF250410AD7A3403FAA5441B81E858B9EF250410AD7A31042AA5441F6285CCF9CF2504185EB51C844AA54417B14AE279CF250410AD7A37045AA5441B81E855B9BF2504148E17A5449AA5441F6285CAF9BF250410AD7A3204AAA54417B14AE579CF2504148E17AD44AAA54413D0AD7439EF2504148E17AC44BAA54413D0AD723A0F250410AD7A3E04AAA5441B81E85BBA1F250410AD7A3404BAA54417B14AEB7A2F2504148E17A244CAA5441F6285C1FA4F25041C3F5287C4BAA54413D0AD7B3A5F250415C8FC20542AA5441B81E852BA7F2504185EB51683BAA5441F6285C2FA6F250410AD7A3203BAA5441F6285C2FA6F2504148E17AC436AA54413D0AD713A7F2504185EB518833AA54417B14AE07A7F250410AD7A3902EAA54413D0AD793A8F250410AD7A3602BAA54417B14AE47A9F25041C3F528AC2AAA54413D0AD713AAF250410AD7A3D02AAA5441F6285CDFAAF2504185EB51C829AA54413D0AD793ABF250410AD7A3102AAA5441B81E852BADF25041C3F528DC27AA54413D0AD743ADF250410AD7A34024AA5441F6285C8FACF250410AD7A35023AA54417B14AE27AEF25041C3F5283C22AA54417B14AE87B1F25041C3F5283C22AA5441C3F528BCB4F25041333333F31DAA5441F6285CCFB4F2504185EB51381DAA54413D0AD713B3F250410AD7A3001CAA5441F6285C6FB1F2504148E17A641BAA54413D0AD763AEF2504148E17AC418AA54417B14AEF7ADF25041C3F5284C18AA54417B14AE37ADF25041C3F5289C16AA5441F6285C1FAAF25041C3F5284C12AA54413D0AD793A8F250410AD7A3C00DAA54417B14AEC7A7F25041C3F5285C08AA54413D0AD773A7F2504148E17A4402AA5441B81E852BA7F2504148E17A14FFA95441F6285CCFA5F2504185EB5188FDA954417B14AEB7A5F250410AD7A350FCA954417B14AE77A3F250410AD7A340F7A954413D0AD743A1F2504185EB5158F4A954417B14AE579FF2504185EB51A8F2A954417B14AED79DF2504185EB5108F0A954417B14AE379BF25041C3F5286CECA95441F6285C5F9AF2504148E17AF4EBA95441F6285C2F9AF2504185EB5158EBA95441B81E85EB98F250410AD7A350EAA954413D0AD77398F250410AD7A3D0E8A95441F6285C2F97F25041C3F5281CE8A95441B81E85AB96F2504185EB5148E6A95441B81E850B97F25041C3F528BCE4A95441B81E85AB96F250410AD7A390E0A954417B14AE3795F250410AD7A3C0DDA95441B81E85DB93F2504148E17A84DDA954413D0AD74392F250410AD7A320DBA95441F6285C5F91F2504148E17A54D7A954417B14AE5790F2504148E17A24D7A954413D0AD7738FF2504185EB5198D8A954413D0AD7738FF2504148E17A34DCA95441B81E857B8DF25041C3F528BCDEA95441F6285CBF8BF2504148E17AA4E1A95441B81E85EB89F2504148E17AF4E2A954417B14AE3786F250410AD7A340E5A95441B81E85DB84F25041C3F5287CE5A954417B14AE0783F2504185EB51A8E6A954413D0AD79381F25041C3F5289CE6A954417B14AED77FF25041C3F528ECE7A95441F6285CDF7DF2504148E17A34E8A954417B14AE177CF250410AD7A330E9A95441B81E858B7AF250410AD7A370EBA954417B14AE6777F250410AD7A300ECA95441F6285C2F76F2504148E17AB4ECA954417B14AEE775F2504185EB5128EEA95441B81E85AB72F2504148E17A94EEA954413D0AD7E370F2504185EB5158EEA95441B81E85FB6DF2504185EB51D8ECA954417B14AED76DF25041C3F5281CEBA95441F6285C3F6FF2504148E17A44EAA95441F6285C2F70F250410AD7A380EAA954417B14AE3771F250410AD7A360E9A95441B81E85BB71F2504148E17A74E7A95441F6285CDF71F2504185EB5128E2A95441F6285CAF71F2504185EB51A8E0A95441B81E850B73F250410AD7A390DDA95441B81E855B74F2504148E17A34DCA95441B81E855B74F2504148E17AA4D8A95441F6285C9F75F25041C3F5286CD7A95441B81E85DB75F2504148E17A04D6A954413D0AD7A377F2504148E17A54D1A954413D0AD7E379F2504148E17A24CEA954417B14AED77CF25041C3F5289CCBA954413D0AD7037EF250410AD7A320CCA95441F6285C9F7EF25041C3F5288CCFA95441B81E85CB79F25041C3F5283CD7A95441B81E857B78F2504185EB51A8D7A95441B81E858B77F25041C3F528BCD8A95441F6285C9F75F25041C3F5286CDDA954417B14AE3774F250410AD7A340E5A954417B14AEB772F2504148E17AB4E6A954417B14AE6771F25041C3F5289CE9A95441F6285C4F71F2504185EB51F8EAA95441F6285C3F75F2504148E17A44EAA95441F6285C8F76F250410AD7A350EAA95441F6285C3F78F2504185EB5118E9A95441F6285C0F78F25041C3F5281CE8A95441B81E857B78F2504148E17AB4E6A954413D0AD72379F2504185EB5118E6A954417B14AED779F2504185EB5168E4A954417B14AEB778F2504148E17AD4E1A954413D0AD78379F25041C3F528CCE0A954413D0AD7D37AF250410AD7A300E0A95441F6285CCF7BF250410AD7A3D0DFA95441B81E85FB7CF25041C3F5281CDFA95441F6285C2F7FF2504185EB51C8DBA954417B14AE2781F2504148E17A54DAA954417B14AEA782F2504148E17AC4D9A954413D0AD7C384F2504185EB51B8D9A954413D0AD7B385F25041C3F528DCD9A95441F6285C9F87F2504148E17A64DCA954413D0AD7638AF250410AD7A320DBA954417B14AE1791F2504148E17A64D6A95441B81E85CB91F250410AD7A350D5A95441B81E85CB91F25041C3F528CCD4A95441B81E854B90F250410AD7A350D2A954413D0AD70390F2504185EB5148D1A95441B81E851B90F2504148E17AD4CFA954417B14AEF792F2504185EB51E8CDA95441F6285C6F93F25041C3F528CCC8A954417B14AE0792F2504148E17A34C7A954413D0AD77392F2504148E17A74C6A95441B81E858B92F2504148E17AC4C4A95441F6285C0F93F250410AD7A3B0C3A95441B81E85EB92F2504185EB5148C2A954417B14AE4791F25041C3F5289CC2A95441B81E850B91F2504148E17AF4C1A954413D0AD77392F25041C3F5281CBEA95441F6285C4F92F250410AD7A390BCA954417B14AE0792F2504148E17A64BBA95441F6285CAF92F25041C3F5284CBBA954417B14AEB793F2504185EB51C8BAA954417B14AE8793F2504185EB51E8B8A954417B14AE1794F25041C3F5288CB7A954413D0AD71395F25041C3F5288CB7A95441F6285CBF94F250410AD7A340B5A95441F6285C3F96F2504148E17AE4B3A95441B81E859B97F2504148E17A54B3A954417B14AED797F2504148E17AA4B1A954417B14AE6795F2504100000030B0A95441B81E850B94F25041C3F528BCAEA954417B14AE7794F2504148E17AC4ACA95441B81E852B95F2504148E17A14ABA954417B14AE0795F2504148E17A74A8A95441B81E855B98F2504100000000AAA95441F6285CFF99F25041C3F528DCA9A954413D0AD7C39CF25041C3F528ECA8A954413D0AD7E39DF25041C3F528ECA8A95441333333D3A0F2504100000060A4A954417B14AE97A1F2504148E17A64A3A95441F6285CCF9CF2504148E17A94A3A95441B81E856B9DF2504185EB5138A2A95441B81E850B9DF2504100000070A0A954413D0AD7739EF25041C3F5282C9FA954417B14AE779DF25041000000309EA95441F6285C0F9FF25041000000209CA95441F6285C8FA0F25041000000A097A954417B14AEB7A5F2504148E17A7493A95441F6285CDFA7F2504185EB51C890A95441F6285C2FA9F2504185EB510890A954417B14AE27ABF2504185EB51D88CA954413D0AD763ABF2504148E17A048BA954413D0AD753B8F25041C3F528DC82A954417B14AED7B8F25041C3F528AC7FA95441F6285CAFB9F2504185EB51087EA95441F6285CBFBBF2504185EB51387BA954417B14AED7BEF2504185EB51E879A95441F6285C3FC0F250410000006077A95441F6285C5FC1F2504185EB51E876A95441F6285C4FC2F2504185EB51F875A95441B81E855BC2F2504148E17A3473A95441F6285CBFC1F25041000000F071A95441F6285C3FC9F2504148E17A1475A954413D0AD723CAF2504148E17A9473A95441F6285C1FCBF25041C3F5285C72A954413D0AD7C3CFF250410000009071A954413D0AD7B3D0F25041000000B06FA954413D0AD793D2F25041C3F5282C6FA954417B14AE27D5F25041C3F5283C6EA954413D0AD7F3D5F2504185EB51F86CA95441F6285CAFD7F25041C3F528CC6BA954413D0AD7A3DAF2504185EB51486BA954417B14AE27DEF25041C3F5280C6BA95441F6285CEFDFF25041000000E069A954417B14AE37E0F2504185EB513869A954413D0AD7E3E2F2504148E17A046AA9544152B81EF5E5F25041A4703DFA68A95441E17A148EEBF250413D0AD70367A954413D0AD723EEF2504185EB51F869A95441B81E857BF0F25041C3F5287C6AA95441B81E852BF5F2504148E17A346DA954413D0AD7A3F5F25041C3F5282C6CA95441B81E859BFAF2504148E17A246EA9544100000020FBF25041000000206FA95441B81E85BBFBF2504185EB51786EA95441B81E858BFBF25041C3F5280C6BA954417B14AEE7F9F25041000000F068A9544100000020F8F2504148E17A7466A954413D0AD723F7F2504185EB518864A954417B14AE07F8F2504185EB518861A954417B14AE77F7F25041C3F5285C60A95441B81E855BF8F25041C3F5280C5FA95441000000D0F9F2504185EB51E85EA95441B81E85FBFAF250410000000059A954417B14AE57FCF2504148E17A3455A9544100000050FEF25041C3F5284C52A954413D0AD77301F35041000000704FA954413D0AD75303F35041000000F04DA954413D0AD78303F3504148E17A544DA95441B81E85FB00F3504148E17A844DA95441D7A370EDFAF250411F85EB814CA9544152B81EA5F9F250418FC2F5984CA95441B81E85EBF5F2504185EB51784DA9544100000080F2F2504185EB51784DA954417B14AE27F0F25041C3F528FC4DA954413D0AD723EEF25041000000B04EA954417B14AE37ECF25041000000E04EA95441F6285C4FECF250410000002051A95441B81E852BECF2504148E17A7451A954417B14AE67E9F2504148E17A3452A954417B14AE67E6F25041C3F528BC51A954417B14AEE7E4F25041C3F528EC51A954413D0AD773E3F25041C3F528AC52A95441F6285C9FE1F25041C3F528DC52A95441B81E856BDFF25041C3F5281C52A954417B14AE17DFF25041C3F5285C51A95441B81E851BD5F25041C3F528EC51A954417B14AE77CDF25041C3F528FC53A954417B14AE87C9F250410000002054A95441F6285C7FC5F2504185EB512855A954417B14AE77C1F250410000007055A954417B14AEA7BEF2504185EB51A856A95441B81E853BBEF25041C3F5281C58A95441F6285CFFBAF2504148E17A8459A95441B81E856BB8F25041C3F5289C59A954417B14AE67B3F25041000000405BA954413D0AD723B2F2504185EB51285BA954417B14AE47AFF2504185EB51185CA95441B81E85DBAEF2504148E17A845CA954413D0AD743ADF25041C3F5286C5CA95441F6285CBFACF2504185EB51E85BA95441F6285CBFACF2504185EB51285BA954413D0AD7F3ABF25041C3F5282C5AA95441B81E85DBA8F2504185EB51F85AA954413D0AD753A6F25041C3F5286C5CA954417B14AEF7A4F25041000000605CA95441B81E852BA1F2504148E17AD45DA95441B81E859BA0F2504148E17AA45DA954417B14AEF79EF2504148E17AD45DA95441F6285C8F9DF25041000000305FA954417B14AE6798F2504148E17A0461A95441F6285CAF95F25041C3F5281C61A954413D0AD7F393F2504148E17AA460A95441F6285C6F93F2504185EB510860A95441C3F5284C8FF25041C3F5285C61A954413D0AD7A38CF2504185EB510863A95441F6285CDF89F2504148E17AD463A954413D0AD7038AF2504185EB518864A95441F6285CFF8AF2504185EB514865A95441F6285CDF89F2504148E17A7466A95441F6285CCF84F25041C3F5280C68A95441F6285C9F83F25041B81E85BB65A95441C3F5285C7AF2504114AE477169A95441D7A370CD69F250419A9999E970A95441F6285CCF60F25041C3F528FC74A95441B81E857B60F2504185EB51F875A954413D0AD7635DF2504148E17AB477A954413D0AD7635DF25041C3F528EC78A954413D0AD7735CF25041C3F5283C7AA954417B14AEF759F2504148E17AE47AA95441B81E857B57F2504148E17AE47AA954413D0AD75355F25041000000607AA95441F6285C9F54F25041C3F528DC79A95441C3F528BC4EF250417B14AEC77BA954411F85EBC146F250418FC2F5487EA954417B14AED746F25041000000407FA954413D0AD7F345F2504185EB514880A954413D0AD7A344F2504148E17A5480A95441F6285C2F43F2504148E17AF47FA95441F6285CAF41F2504148E17AE480A954413D0AD7B340F25041000000F080A95441F6285CDF3BF2504185EB518882A954413D0AD73339F25041C3F5284C85A954413D0AD79333F25041000000B087A954413D0AD78334F25041000000108BA954417B14AE2736F2504185EB51988DA95441B81E856B34F25041C3F528CC8FA954417B14AE3732F2504185EB512891A95441F6285C2F31F250410000006092A95441F6285CEF31F250410000006095A954417B14AE1731F250410000007097A95441666666C632F250411F85EB919AA95441F6285CBF35F25041AE47E1FAA0A95441C3F5281C38F25041CDCCCCFCA6A95441666666F63BF250413D0AD783AEA95441F6285C9F3CF25041C3F5281CAFA95441F6285C1F3EF2504148E17AF4AFA954417B14AE873FF250410AD7A370B2A95441B81E85DB42F2504148E17A64B8A954413D0AD75346F2504148E17A94BEA95441F6285CCF48F2504148E17AC4C1A95441B81E854B4BF2504148E17A74C3A95441B81E85AB51F2504185EB51F8C6A95441B81E856B52F2504185EB5138C6A95441F6285C3F54F25041C3F5282CC6A95441F6285CEF55F25041C3F5288CC6A954417B14AEC756F2504148E17A14C6A95441F6285C5F58F25041C3F528BCC6A954417B14AED75BF2504185EB5128CDA954413D0AD7135CF25041C3F528FCCEA95441B81E85AB5AF25041C3F5284CD0A954417B14AEC756F25041C3F528DCD0A95441F6285C7F54F25041EC51B87ED1A954417B14AEE752F2504185EB5108D2A954419A9999C951F250413D0AD753D3A95441295C8FF251F250413D0AD763D5A95441CDCCCC7C52F250419A999959DCA95441F6285CBF52F2504148E17A14E1A95441F6285CFF54F2504148E17AF4E2A954413D0AD75355F25041C3F5285CEAA954417B14AEE754F250410AD7A300ECA954413D0AD75355F2504148E17A04F1A954413D0AD74356F2504185EB5178F2A954417B14AE6759F25041C3F5285CF3A95441F6285C2F5BF250410AD7A3B0F6A954413D0AD7F35AF25041C3F528BCFFA954413D0AD75358F25041C3F5285C02AA54417B14AE5757F25041C3F5288C02AA5441713D0A7754F25041B81E852B04AA54418FC2F5785CF250413333333307AA54411F85EB3163F25041666666F60AAA54413D0AD7C363F2504148E17AB40AAA5441B81E85FB64F250410AD7A3500BAA54413D0AD76366F250410AD7A3B00BAA54413D0AD73369F2504185EB51980EAA5441F6285C1F6BF250410AD7A30010AA5441F6285C0F6CF25041C3F528FC10AA5441B81E85CB6DF2504148E17AA411AA5441B81E858B6EF250410AD7A30013AA5441B81E85AB6FF2504185EB513814AA5441B81E856B70F25041C3F528AC15AA5441B81E853B73F25041C3F5284C18AA54417B14AE7773F250410AD7A3F019AA5441F6285C0F75F25041C3F528EC1AAA54417B14AEB775F250410AD7A3601CAA5441B81E852B77F25041C3F528BC1DAA5441F6285C7F77F2504185EB51481FAA5441F6285C9F78F2504185EB516820AA54413D0AD75379F2504185EB51B821AA54413D0AD72379F2504148E17A4423AA54417B14AE977AF2504148E17A3424AA5441F6285C9F7BF2504185EB510826AA5441B81E850B7CF250410AD7A3D027AA54417B14AE277EF2504148E17AD426AA5441F6285C2F7FF25041C3F5287C27AA5441B81E855B80F2504148E17AB428AA5441F6285C4F83F25041C3F5287C27AA54413D0AD72385F2504185EB518827AA54413D0AD70387F250410AD7A3D027AA5441B81E85CB88F2504185EB51B827AA5441F6285C1F8CF250410AD7A39028AA54413D0AD7638DF250410AD7A32029AA5441B81E852B8FF250410AD7A38029AA5441B81E85EB8FF2504185EB51582AAA54417B14AE1791F25041C3F528AC2AAA54417B14AE5793F2504185EB51D82BAA54417B14AE7794F2504148E17A442CAA54417B14AEF795F2504148E17AE42BAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B040000C7AF1E0E93F2504146192CA4C3A954416FB483EB92F25041DE335248C2A9544165A65EE492F25041B874BF49C2A95441A718D00492F250419EAA2BA3C2A95441071E481E91F250419EAA2BA3C2A954417F833A0791F25041177ACC01C2A954417020DD0B91F25041E12C70F5C1A95441B81E850B91F2504148E17AF4C1A95441C75E6A5991F25041387EAF1FC1A954418E4EA7BF91F25041C11A86D8BFA954415BE6F84992F25041C1ED9E50BEA95441A899747292F250412E16260DBEA95441F6285C4F92F250410AD7A390BCA954417B14AE0792F2504148E17A64BBA95441626A5F2192F2504151EAC060BBA954412FB3DD1B92F250413190D040BBA95441730D1BC692F250413190D040BBA9544179CE1B7A93F250415DF907E7BAA954418DBD3DB693F250413786EEB9BAA954417B14AE8793F2504185EB51E8B8A954417547B78C93F250414AEC24DCB8A954417547B78C93F25041593546A4B8A9544142DF081794F250412C6B9578B7A95441AAD95FEE94F25041C3F5288CB7A954413D0AD71395F25041C3F5288CB7A9544133AC2F1395F250410CFF9C87B7A954411A775AA194F25041F03F260AB5A95441100EF09E95F25041690FC768B4A954418E8DA1CD95F25041AD1F984BB4A95441F6285C3F96F2504148E17AE4B3A95441086B568596F250417C7D89C7B3A95441F23B93B396F25041AAAB4C99B3A954412E3A1B9A97F25041C4DF2354B3A954418F6640D397F250411E29D6A1B1A95441298393C497F250415A961399B1A95441E5A16B4997F25041554C0670B1A954414A27E2F896F25041BAD17C1FB1A954412848C3A595F25041DB040F55B0A95441C775404E95F2504146EB472DB0A95441D779F6C794F2504105706B85AFA95441B81E850B94F25041C3F528BCAEA954417B14AE7794F2504148E17AC4ACA95441B9D7F48694F2504100B3C89FACA95441C2AAD39594F25041C52BFF4DACA95441BAB0610895F25041561EE368ABA95441950C982195F2504134E0522CABA95441DAF3282995F250418CBD3AE8AAA954417B14AE0795F2504148E17A74A8A95441A3C9041195F2504162EAD078A8A9544112A8170995F25041849E8D29A8A95441EF0AD64B96F25041100408F9A8A95441E5A16B4997F2504160014C6CA9A954415D9EF32F98F25041890090DFA9A95441D9C4076098F25041B26E9DFFA9A95441EEF4FBA898F25041AA1F63F9A9A9544168F467FF98F250415E7D02F2A9A95441BD66A45B99F25041890090DFA9A95441449703FD99F2504152CD74B1A9A95441DB92CF569BF25041E3663E55A9A954414DC4726B9CF250419369FAE1A8A95441C6564CDC9DF25041D9D0ECCAA8A954412A81FFBDA0F25041617A0EEEA3A95441B3C85516A1F25041E10F8D69A3A95441F6285CCF9CF2504148E17A94A3A954410CC540E89CF250412C18FB5CA3A954412127A9C79CF25041DA49AF4CA3A954413E26ED3A9DF25041351A0C38A2A954418A7D75329DF25041BDFC1629A1A95441B81E850B9DF2504100000070A0A95441EBFC151E9DF250410954505FA0A954412DC158189DF2504149ECE03CA0A954412258EE159EF2504167BE3D289FA95441435AF1A99DF25041C84543629EA954417B14AE779DF25041000000309EA9544129408AEF9DF2504194E7C3949DA95441C3BC24729EF25041B32DDCD09CA954414AED83139FF250416D2F54EA9BA95441821ABF0AA0F250415C2BD72D99A9544106F15B88A0F25041D1A700B597A95441B35B8FF299F25041E783EBE19CA954419E6766C690F2504192EC51F8A4A95441827B144E88F25041295C8F32ABA954415536AA5884F250418DABF8D4B3A954419D95DFBB85F25041A1D2EDE4ACA95441BA5287BF87F25041A7777302A9A95441603D6CB48BF25041A3BC22D8A5A954418CB564E290F25041A961A8F5A1A95441A5CD86C896F25041E5AA057E9CA95441FC83D2669DF25041B9320D5097A954416BBBC971A3F2504182F7BE6B92A95441F139C72BA5F25041FABA6BFB90A954410F3114EDAAF2504170811D178CA9544130B94263ABF250413A47FC088BA954413D0AD763ABF2504148E17A048BA954413610C365ABF25041D3A444038BA95441A91EFE6DABF25041958374F08AA954419FFAB123ACF25041645E828B8AA954414F82C4B4ACF25041FE5B09308AA95441FB7E10D5ACF250414822AC1B8AA9544174C2BBEDACF2504174291E0C8AA954419A1F6654AEF250414B621EFF88A954413A2BDC8EB2F25041D1A17EE484A9544165788727B8F25041B01BD90A80A954414F8884D6B8F25041BA935AB37FA954417B14AED7B8F25041C3F528AC7FA954410A3D8207B9F2504140A20E4F7FA954418DB8BC85B9F25041E0159EED7DA9544155FA07F3B9F2504132880AAC7DA95441491DAF82BBF2504188580F8B7BA954410B56A4E2BBF25041E1FD86F17AA95441058BCEDBBCF25041DEBFB1BF7AA954418C90A6AEBEF250413928B8F979A95441DE503E3EBFF250415C8EF81379A9544133AEF03CC0F25041606B405677A95441880BA33BC1F25041663DE7D676A954417B700EDBC1F2504100A49F6C76A95441B2FCCB24C2F25041C917E22276A95441BCFB8B4FC2F250411F1972ED75A954413F20E250C2F25041C2CBA59F75A95441ACBB1252C2F250416074625A75A9544178EA2B52C2F25041F18CA85475A954417BDF5952C2F25041685D354A75A954411FC55C52C2F2504120BA8C4975A95441406B6F52C2F250419F294F4575A954412FB77E52C2F2504116BDD44175A954417067553AC2F25041E2CD58F974A954417067553AC2F250418D70A6FA73A95441CCDF2C59C2F25041C080F7BC73A95441B81E855BC2F2504148E17A3473A9544198D4C3EBC1F250414287444C72A954415CEE259BC1F25041BD6A6BDD71A95441AA793119C3F250413EE59A7C72A95441707F6C36C5F2504178F7765B73A954417A978332C8F250410EEBD59974A9544176BA3BF0C9F250416725D0DA73A95441D2E9946FCAF25041C05FCA1B73A954417629C8DDCAF25041212097AD72A95441F6285C1FCBF25041C3F5285C72A954419152DB57CBF250414D71745272A95441CE0C4D2DCCF250416B02181D72A9544168077D8ECCF250416B02181D72A95441D738AC72CEF25041D65EEBC971A954413C20F82AD0F2504102D4BDC170A954413D0AD7B3D0F25041000000B06FA95441F0037AB5D0F25041E3EB8CAF6FA95441B2DFCFBBD0F25041C316149F6FA95441DD62B850D4F250415440716D6EA95441B6F17C78D5F250413950FBBB6DA954413D0AD7F3D5F2504185EB51F86CA95441C76BDF02D6F25041CA7525EE6CA9544190ECBC39D6F2504142E6CC986CA954416F207F4AD7F25041FCCC6B106CA95441F6285CAFD7F25041C3F528CC6BA95441BAE2591AD9F2504164C8E58C6BA95441E098E98EDBF25041E2D8C60C6AA95441AC139DC1E3F25041EC9B606C67A9544190824A68E9F250413FB09B5A65A95441687D2330EDF25041B24FDB3165A9544108770672EDF25041FBE190FD64A954417D028B45F7F25041DE78D4FE63A9544171B6F860F7F25041E23642BA63A954417B14AE07F8F2504185EB518861A954417B14AE77F7F25041C3F5285C60A954411FD16A86F7F250419D3B6D4660A95441101C3A85F7F2504176EF914360A95441101C3A85F7F25041E3D5E20360A95441E0C072EAF7F250413FB8E8B25FA95441B81E855BF8F25041C3F5280C5FA954416794B36DF8F25041B41B690A5FA954412D85F683F8F25041F7DF4EE55EA95441D9A73116F9F2504119C032FA5EA9544116A127B0F9F250412E5762EB5EA95441CBE799D1F9F25041723F3CE05EA95441B81E85FBFAF250410000000059A954417B14AE57FCF2504148E17A3455A9544100000050FEF25041C3F5284C52A954412CE90DCBFEF25041032314DC51A954416FA1661900F350413E2AC35E4DA95441AF2240CFFFF25041A6CD64524DA95441D3221102FAF2504197D8889C4CA95441A3033434F9F250417B8668B34CA9544107DDF90AF9F25041DD9A10BD4CA95441DB325BB0F8F25041DA624AD24CA9544199509804F8F25041200DE71B4DA95441E53A77F5F6F25041B52B073A4DA95441E642D3D2F6F250418A4C24424DA9544113BDE967F5F2504178CE1CBB4DA95441DEB5CCB5F4F2504185EB51784DA954416D9EE8D6F2F2504185EB51784DA95441BD9C63ABF2F25041E4B46D7B4DA9544134183EEBF1F25041D452FD984DA9544151A56370F0F250418D1E31EC4DA954419ED8C86CEFF25041907E513D4EA954413D0AD723EEF25041000000B04EA95441F290E040EDF25041F3B022C64EA954417F42A8F2ECF2504159C4B0D94EA95441409A5F78ECF2504159C4B0D94EA954417B14AE37ECF25041000000E04EA954412E7DAB38ECF250418A0014F84EA9544127817253ECF250418012BE984FA9544127817253ECF25041E93CB03651A954416BF00A42ECF250414705643F51A95441B81E852BECF2504148E17A7451A954417B14AE67E9F2504148E17A3452A954418DF136D7E7F25041738CBDF551A95441671B4BB9E7F25041738CBDF551A95441EEC8087AE7F25041A96524E751A954417B14AE67E6F25041C3F528BC51A954410C94C94EE5F25041D18545DF51A95441BA398F5DE4F2504106A66C3552A954413458CB4FE4F250419D1A963A52A954413D0AD773E3F25041C3F528AC52A95441F44B6C32E2F25041A79117CD52A95441A08C3181E1F250418FF579F452A95441565D4EA8E0F25041E65D088852A954418515C73FE0F250414F3D706452A9544166BAB883DFF2504106A66C3552A95441F1A17679DFF250414375E82052A95441B81E856BDFF25041C3F5281C52A9544135791023DFF25041BD243B7651A954416C25C18FDEF250415A3AD16351A9544105CBCF15DDF25041A6C71B7951A95441926A8AB8DBF25041AEE4369651A954414B402611DBF25041AEE4369651A954412B77C4A7D8F25041998CFEB851A954415C5470DDD7F25041A4FFE5D551A954416804B0A6D6F25041A4FFE5D551A95441B81E851BD5F25041C3F528EC51A954417B14AE77CDF25041C3F528FC53A954416CC050BDCCF25041AC4AC90254A9544125DDC3CCCBF250413F78E53254A954418405F993CAF250419BF0751654A954417B14AE87C9F250410000002054A95441BE0DD338C6F250413234D5F854A95441B5F430F4C5F250418D54CA1155A95441AA6879C7C5F250412804DB1555A95441F6285C7FC5F2504185EB512855A95441E383DE4EC4F25041B6C6793D55A95441B795E0D6C3F25041206E795155A954412E11082FC3F25041206E795155A954417B14AE77C1F250410000007055A954414E2CF719BFF25041DBD7BE7656A95441D1FC5ABDBEF25041F77EBCAF56A95441DBE1AB7DBEF25041A70128EE57A9544169DD6241BEF250411428FE0758A95441B81E853BBEF25041C3F5281C58A954419B8D452CBCF2504139CE8E0159A954415F731802BBF25041E0B8F1AB59A95441F5482664B9F25041AF45C9CB59A954414FCB7096B7F2504173D2A0EB59A95441DAE7F76CB6F25041A5BB1E435AA954417B14AE67B3F25041000000405BA9544195A0C5BDB2F25041EA6D93335BA9544137A4135DB2F2504154E3E3495BA95441F5E20187B1F2504140B3BA5B5BA95441713A2921B1F25041A13E1D7D5BA95441744F14D7B0F2504146E465955BA954418EB8C98CB0F25041D221C0AD5BA954414E3F3E22B0F25041C1F4ACD05BA954411DF7B580AFF25041A2BFC8285CA9544185E57712AFF250417B1A884D5CA95441B81E85DBAEF2504148E17A845CA954410A2B4E7EAEF250412C58EB7E5CA954413C012262AEF2504104664F885CA954412FA0F88AADF25041023F67705CA954413D0AD743ADF25041C3F5286C5CA95441F6285CBFACF2504185EB51E85BA95441F6285CBFACF25041D9D6F4945BA95441964858A4ACF250412370BB695BA954414669316CACF25041F1D046C15AA954412730292DACF2504120232E735AA954410089F2E8ABF25041F97BF72E5AA95441CCE1FFC4ABF2504102C43A385AA9544122391546ABF250410707FF6A5AA954417D9BFAC7A9F25041CBAE85CA5AA9544191C015E9A8F25041C1C9340A5BA95441EB074C2BA7F25041714CA0485CA95441CFB93E6CA6F2504135D977685CA954412542455AA6F2504135D977685CA954413D0AD753A6F25041C3F5286C5CA954411C0123EAA5F2504135D977685CA95441EC1194E1A4F2504135D977685CA954417CD4176EA2F25041661CE3585DA95441056FC611A2F2504121CF0B875DA954419B500EA3A1F250414121AEA65DA95441B81E852BA1F2504148E17AD45DA9544125394502A1F2504117EABAC65DA95441D69C4D14A0F2504117EABAC65DA954417A683DCB9FF2504137E24ABC5DA954417B14AEF79EF2504148E17AD45DA954419B7E57FA9DF250419392D1C85EA9544193E583569EF250418BF9FD245FA954412343C3619DF2504175D22F405FA95441F6D974579BF25041975E9AF95FA95441F003C8FA9AF25041A762BA2360A954417A84E9A29AF250414702B23960A95441355D0EA099F25041E886969560A954415F8BC89D98F25041C4CB762261A95441F5658C7096F25041C4CB762261A95441492F653096F250412398C51761A95441F6285CAF95F25041C3F5281C61A954412829B85095F25041F53E9F0261A954414FC871F294F25041F53E9F0261A95441337A643394F25041C4B0C7E260A9544169E6EF0894F2504144412CAA60A954413D0AD7F393F2504148E17AA460A95441F6285C6F93F2504185EB510860A954416B7ABE5693F25041F6C9371060A95441048D3CF691F250413B9718A360A95441540AD1B790F25041F53E9F0261A9544138BCC3F88FF2504188584E4261A95441FEE94AFB8DF25041A5C10A4162A954414E67DFBC8CF25041CC0F180063A954413801F7A68CF2504122765A0663A954413D0AD7A38CF2504185EB510863A954411EADCB1F8AF25041F56DE9C163A954413D0AD7038AF2504185EB518864A954417E050E398AF250417A24F1B064A95441E53CED1E8BF25041FBE190FD64A954417F4AD4ED8AF25041D810F03A65A95441F6285CFF8AF2504185EB514865A9544129DF7C558AF2504197565DF965A95441C8D330208AF25041AA64FC3B66A954411394F20E8AF25041C317E24266A95441F6285CDF89F2504148E17A7466A954419B69BA9388F250417BFCCCDC66A95441CA74E00288F25041F840E11A67A9544191BD164586F250418C753F9A67A95441E11FFCC684F2504115AA9D1968A95441945EC62784F25041C7CDB83A67A95441945EC62784F2504134B409FB66A95441014517E883F250416FF1D35B66A95441E4C0ABA982F250416F0C839B66A95441D257EFAA81F25041C7CDB83A67A954415348AC4C80F25041500217BA67A95441E91DBAAE7EF25041D936753968A95441C8CDB1B47DF25041332D341A68A95441E0881C6D7DF25041292DE03668A9544193E284B27BF25041008582F868A95441793527D678F25041A6229D766AA95441983F93B777F250412F57FBF56AA95441AC49FF9876F25041C28B59756BA9544130D6B5AC73F25041062874F36CA9544145E0218E72F25041179130F26DA954413377658F71F2504118ACDF316EA95441DB9A80B070F25041ABC58E716EA95441C931C4B16FF25041706D15D16EA95441DD3B30936EF25041F9A173506FA95441C1ED22D46DF25041BD2E4B706FA954419A9F15156DF250418CBB22906FA95441871BAAD66BF2504115F0800F70A954419C40C5F76AF250419E3F8ECE70A954414F7F8F586AF2504132593D0E71A95441C62F829969F2504159A74ACD71A954416E6E4CFA68F250414EC2F90C72A9544116AD165B68F25041E2DBA84C72A954418D78B8DB67F25041136A806C72A95441F9435A5C67F25041A6832FAC72A95441A18224BD66F250416B1007CC72A954418F1968BE65F250412FB88D2B73A95441100A256064F25041C2D13C6B73A954413C9A91E460F25041688A062975A954416D632C8E60F2504195A937C075A95441B81E857B60F2504185EB51F875A95441680ECA6760F2504109BE630376A95441A865336560F250415465EB0776A95441F8E2C7265FF25041D2B4F8C676A9544153605CE85DF25041BE8FDDA577A954415345ADA85DF25041BEAA8CE577A954413D0AD7635DF25041465B0FB478A954413D0AD7635DF25041C3F528EC78A954417409C7405DF25041435D3F1D79A95441CA104F295DF250410147A76379A95441724F198A5CF250418096B4227AA95441B3FC8E855CF2504151A25A237AA954413D0AD7735CF25041C3F5283C7AA95441E8C83DAB5AF250411566F8B47AA95441EBBB6AED59F250419DFF70217BA95441C393229C59F2504148E17AE47AA95441B81E857B57F2504148E17AE47AA954413D0AD75355F25041000000607AA95441514F782B55F250412A8482427AA9544186F33CC553F25041BEF06FDB7FA9544131D3B60851F25041434401CB8CA9544159C7291B4FF25041421F935D97A95441162B0F9D4DF25041060DFDB29FA954415C83883D4DF2504123BC9CA7A8A954416EEC443C4EF25041749AC39EAFA95441953A52FB4EF250413EE53BF9B3A954418B55013B4FF25041560C9932B9A95441186AD00E50F250411EEBC314C6A95441B05D296F50F25041E17EE349C6A95441D5038EE350F25041C88C108AC6A954411C57FA3851F25041EA242AB9C6A95441EB7A3D6851F25041019388A1C6A95441F50CBF5E52F2504148FD1745C6A95441B81E856B52F2504185EB5138C6A95441BE4D00AB52F25041CA85AB36C6A954412E32072653F25041DB5F2A22C6A95441409BC32454F25041DB5F2A22C6A95441CFC5854954F250419E186B2EC6A95441F0E6EFE755F2504133AE828AC6A954419E821C0256F250411B25C981C6A954417B14AEC756F2504148E17A14C6A954413996DFF456F25041E2731127C6A954416548210157F25041DB5F2A22C6A95441E348416057F25041EBB3BFE2C5A95441B8ABFC8557F250412D60DD3BC6A954419626E1A058F25041D40DF3A5C6A954413D86600F59F2504163ECC6A7C7A95441509B067E59F250413655BDCEC8A954417B14AED75BF2504185EB5128CDA95441DCEAD4FC5BF250419ADB3B49CEA95441F521DC145CF25041B82167D9CEA954411F567E105CF25041FCB822E2CEA954413D0AD7135CF25041C3F528FCCEA9544103F630F55BF25041AA76BD18CFA95441F00007F05BF250415A601123CFA9544103EE6CC65BF25041936F5944CFA95441B81E85AB5AF25041C3F5284CD0A9544185F7C5CA57F2504163D8B1B6D0A954415367E2C357F250418ABF39B8D0A95441224A647856F250412CFEE301D1A95441F70B110855F25041C85D6370D1A95441640C68E153F25041BBDCB703D2A954417E0EBFBA52F25041AE5B0C97D2A95441926E950252F250419AFB354FD3A95441926E950252F2504180F9DE75D4A9544183FCEA2152F250416A628B70D5A954418859DC1A52F250416F95D071D5A95441E9E8BE3F52F250419F466F2CD7A9544101A34D2D52F250414D82F9BFD7A954412A679E2652F25041EFD0D102D8A95441CDCCCC7C52F250419A999959DCA95441F6285CBF52F2504148E17A14E1A95441A5A0B8D152F25041AFEFC723E1A954416C5ED36653F250412475278CE1A95441B9F21BDE53F250416A097003E2A95441F6285CFF54F2504148E17AF4E2A954410E57760355F25041AF488850E3A954414313722155F25041C38CFCA2E3A95441D7A0544655F25041BD742EA5E4A9544182E8C55855F25041AC7925F1E5A9544182E8C55855F2504108F13918E7A95441D7A0544655F25041549DE186E7A95441D7A0544655F25041AD20DD2CE8A95441588CFE6155F25041AF14F6ADE8A954417A468D4F55F25041156F458BE9A954417A468D4F55F250411BC9EFFBE9A954413D0AD75355F25041C3F5285CEAA95441A162BB4B55F25041A538AE7BEAA95441F6FC1B3D55F250414E2CCBC4EAA95441B727C80555F25041C15D6ED9EBA954416D6F391855F25041FC0E0D94EDA95441F6FC1B3D55F25041B721EB5EEEA954417A468D4F55F25041526E53BDEFA95441588CFE6155F25041F79DF6D1F0A95441B91BE18655F25041E1BABB1BF1A954416078122656F25041021E334AF2A954413D0AD74356F2504185EB5178F2A95441463B9C7656F250415CD6B586F2A95441650A0AD557F250411D6C5AD6F2A954410057723359F25041371A0245F3A95441E23BFD5959F25041588C4758F3A954417B14AE6759F25041C3F5285CF3A95441D9C8D76959F25041B2D23460F3A954414C031AA259F2504176EF557CF3A954417A61776D5AF25041CD05E845F5A95441F6285C2F5BF250410AD7A3B0F6A954410FA2680D5BF25041954674D9FBA954411E839D2E5BF250410C191790FCA9544106C90E415BF250415AB9D77FFDA954411E839D2E5BF2504122A30982FEA954411E839D2E5BF25041BAFB585FFFA954411E839D2E5BF2504104D1AC96FFA95441C5FFA1885AF250415D54A83C00AA5441833635D059F25041941D15F500AA5441E0713D8959F25041208EC22601AA54413D0AD75358F25041C3F5285C02AA54414958FA7957F25041FD96A18502AA544169E1D52557F250416AD2B3AF02AA544116B72BEB54F25041C19C765704AA54418FC2F5785CF250413333333307AA54410844574E5FF2504159CB2FC908AA5441AFC2987D60F250417053EC6A09AA544151EE65B262F250414DB6AAAD0AAA54417EB816DE63F250414DB6AAAD0AAA544129B39EC464F250419DB3EE200BAA54419D73E02065F2504102CC975A0BAA54413D0AD76366F250410AD7A3B00BAA5441E9D98D9466F2504166CDF4E20BAA544165DE0D3367F25041FC7B9F4C0CAA5441EC0E6DD467F2504183ACFEED0CAA5441743FCC7568F2504193776BA60DAA5441AB72E7A368F25041F6DDA1020EAA544119D91D0069F250411AA8CA470EAA5441F5BD592C6AF2504144117F4E0FAA5441F6285C1F6BF250410AD7A30010AA5441A2B287836BF2504181449E6910AA5441A501D1E16BF2504123D539B610AA5441A0DBBE556CF25041185FD51611AA5441D0A9164B6DF250413B2DCF7311AA5441FA60170B6EF250414B6ACFB311AA5441E12C40506EF2504150353C6C12AA544118605B7E6EF25041AB3280DF12AA54415A29C8366FF25041AFFDEC9713AA5441FA8DFE926FF250410AFB300B14AA5441E68E420670F25041A594829514AA5441B9F1786270F250412CC5E13615AA5441F024949070F25041CD29189315AA54414557F33171F25041DCF4844B16AA54414F244AAD71F2504172727AD816AA54418892E93B72F2504140C8975D17AA544154B8B17472F25041EB55438E17AA544190B6395B73F25041FA20B04618AA54413046338973F25041280073FB19AA5441BEB3D39373F250417C6101021AAA544139B4569C73F25041CBB941071AAA544176AF492875F250416D7F3AE31AAA54414E479BB275F250410E7AC2C91BAA544109E0A8C975F25041B31314541CAA5441C743239976F25041A4758E231DAA544194DB742377F250419076D2961DAA544186A79D6877F2504181D84C661EAA544178C8C99577F25041078BBF5E1FAA5441103A6EA577F250419FFC636E1FAA5441440B183878F25041C66C26D71FAA5441E56F4E9478F2504167D15C3320AA54418009A01E79F25041A3CFE41921AA544168FAB82F79F25041C981147521AA54413D0AD75379F2504185EB51B821AA5441926E344179F25041B3561F5222AA5441926E344179F2504139CBB07322AA5441926E344179F25041F82E2B4323AA54419639A1F979F25041D0C67CCD23AA5441B69759FD79F25041C090DED023AA54417B14AE977AF2504148E17A3424AA544131C0B5C67AF250416187EC8724AA5441BECE36F77AF250413EC304B424AA544146FF95987BF25041EEF2A7C825AA54417D32B1C67BF25041F2BD148126AA5441B465CCF47BF25041EE1F8F5027AA54414F06052D7CF25041786500C127AA54417B14AE277EF2504148E17AD426AA544107F4413F7EF25041003A79E326AA544173F62D4C7EF2504193224BDD26AA5441FA268DED7EF250410289813927AA5441412515D47FF2504189B9E0DA27AA5441C855747580F25041CA824D9328AA5441451D691482F250410C1FD3C327AA5441547E275783F250416BBA9C6727AA54416349940F84F250416BBA9C6727AA5441EF44606985F25041EE1F8F5027AA54413543E84F86F25041A2EDB79527AA54415DD87D4D87F250410C1FD3C327AA54418A38800389F250415286C5AC27AA5441035490E489F25041C482B0FF27AA5441F6285C1F8CF250410AD7A39028AA5441A2EBFBE68CF250410C063BE928AA54419E2828848DF25041981A9F1D29AA544194BFBD818EF25041014CBA4B29AA544161570F0C8FF2504189E6C76229AA5441B2EBE87C90F250417F7D5D602AAA5441574D791091F250414FAE25AA2AAA54417B14AE1791F25041C3F528AC2AAA5441813A026391F25041E2246AD32AAA5441571B8C9191F250414C15AFEA2AAA5441DE170A9791F25041084687EE2AAA5441A7F26B4993F25041ABCBE3D02BAA544172AD8F2294F25041ABDD5F162CAA544112A8170995F25041ABDD5F162CAA544167DA76AA95F250410B7929BA2BAA5441C2D7BA1D96F250415BE01BA32BAA54415D710CA896F25041CF7AA1D32AAA5441DC1FF2CF96F25041C037B5B52AAA54417B14AEE796F2504148E17A942AAA5441C9C75CF596F25041A139A5992AAA5441FED5420497F25041E8AE788E2AAA54418506A2A597F2504115E293BC2AAA54410D37014798F250414C15AFEA2AAA54411C026EFF98F25041DE450E8C2BAA5441DA65E8CE99F25041ABDD5F162CAA5441DF3055879AF250414C4296722CAA5441F89113CA9BF25041F2DBE7FC2CAA5441D02965549CF250418E0B032B2DAA5441668E9BB09CF250410BA610422DAA5441AD8C23979DF25041F2DBE7FC2CAA5441D521B9949EF25041F2DBE7FC2CAA5441EC7067F89EF250418453250B2DAA54417B14AEB79FF2504185EB51F82CAA54413030B229A0F2504177EE565F2DAA5441D9190DD5A0F25041E33D62CC2DAA5441D9190DD5A0F250411907CF842EAA544157B41AECA0F250416005576B2FAA5441C0E5351AA1F25041BFCD079730AA5441C0E5351AA1F250410FCB4B0A31AA5441E58A66DEA0F25041276A4C4432AA54413D0AD7E3A0F2504148E17AD432AA5441AFC2FD94A0F25041941B184E33AA544139B5D678A0F25041C890C88F33AA5441B3C9500EA0F250418E74D01D34AA5441611D85EE9FF25041CBDDDA4E34AA5441611D85EE9FF25041C34C995538AA5441E8196ECE9FF250418096D8AD38AA54417B14AEB79FF2504185EB515839AA5441968AC7129FF250416A7538FD39AA5441F320FD079FF25041FAAC9B0B3AAA5441D521B9949EF25041C744ED953AAA544195764E689EF250416B89B1A73AAA54417B14AE379EF2504185EB51D83AAA54410CE6778F9DF250411489C3373EAA5441EB24D3E79DF2504171037AE83EAA54410FEFFB2C9EF250418F02BE5B3FAA54414622175B9EF250414E66382B40AA54414622175B9EF25041D59697CC40AA54417D5532899EF2504194FA119C41AA54417D5532899EF250417C9DF30342AA5441B81E858B9EF250410AD7A31042AA54417D5532899EF250416571471442AA54417D5532899EF25041E92C713D42AA54414622175B9EF25041525E8C6B42AA54416ACCFD319EF250416AF8DD9C42AA5441DDF7191A9DF25041F9F8405344AA5441F58D3DEA9CF25041DFF0EDC244AA5441987D4DB89CF25041621E77DF44AA54417B14AE279CF250410AD7A37045AA5441D1F7EC6C9BF25041116694FF48AA5441006156629BF25041A279A35A49AA54411FB002699BF25041A6B6547549AA5441BF3EEDAD9BF25041375C261D4AAA5441CD5276FC9EF25041060DC13E4BAA5441DB53B5E09FF25041285381004BAA54413D0AD723A0F250410AD7A3E04AAA5441BB855B29A0F250411D73F0E14AAA5441644E4256A0F25041E80D7DCB4AAA5441B980A1F7A0F25041D9D9A5104BAA5441B816F381A1F250415674B3274BAA544151D92CA1A1F2504103B56F3A4BAA5441B81E85BBA1F250410AD7A3404BAA54417CF027DBA1F25041138E395D4BAA5441A41737F5A1F250416F3EDC6C4BAA5441FF147B68A2F25041A771F79A4BAA54418645DA09A3F2504147D62DF74BAA54418F3FEB2CA3F250415C929DED4BAA54418124345BA3F2504163A0F4D74BAA5441D299C003A4F25041606014894BAA5441BE78F537A3F25041442AB5B042AA544130D77FD4A5F25041C762C01141AA544167090964A6F25041A4C987EB3EAA5441AEEE5985A6F25041C05F5A553EAA54414D4EF7AEA6F25041FC85C4993DAA54411AB432C1A6F25041037495473DAA5441B9337FC6A6F250418FCFB22F3DAA544168ECA3CBA6F25041637883183DAA5441C07D6AD4A6F2504169B1F4F03CAA5441F75F32DAA6F2504126DFE5D63CAA54419ED307BBA6F250416D0B26A83CAA5441596C15D2A6F250415E40B9EF3BAA5441909F3000A7F2504186A867653BAA544147E572DFA6F250419119B2523BAA5441F6285C2FA6F250410AD7A3203BAA5441F6285C2FA6F25041F237A38A3AAA544149A1A819A6F25041AE7AC4503AAA54419A089B02A6F25041D217060E39AA5441F6285C2FA6F250418B9AF8F436AA5441F6285C2FA6F2504148E17AC436AA5441F63C57EBA6F2504152921D1B34AA5441DB289611A7F25041E45FA89C32AA5441AC7CE20FA7F250418F31AEEA31AA5441080523E9A6F250416005576B2FAA54412B90DC07A7F25041FEFFA0A32EAA54417B14AE07A7F250410AD7A3902EAA54413AED380CA7F250418DA348872EAA54413F383E17A7F25041013DA63F2EAA5441293524C4A7F250416A41DAE52CAA54417DF1BA58A8F25041668964DA2BAA54413D0AD793A8F250410AD7A3602BAA544108A71EA7A8F25041BEA94A4D2BAA54416533ACAAA8F25041ED79E5462BAA54415695267AA9F250412E166B772AAA5441FB2E7804AAF25041984786A52AAA5441AE63008CAAF2504182C794342AAA5441F6285CDFAAF2504185EB51C829AA5441FF8CCD63ABF25041681F64FD29AA5441F15B5F8CABF25041101727042AAA54416E23542BADF250415286C5AC27AA54416E23542BADF250416B8DB5DF25AA54416E23542BADF2504120C4C04024AA5441B983BC0AADF25041BD4FB4F423AA5441F6285C8FACF250410AD7A35023AA54412CF07CB8ACF25041CFA2CA3423AA5441A18B02A1ACF25041116302FE22AA54411E53F73FAEF2504199667A1722AA54410D54E08AB0F25041C3F5283C22AA544165592C28B1F25041C3F5283C22AA54414FD834BEB3F250413B715A7D1EAA5441A40A945FB4F250419076D2961DAA544195D6BCA4B4F25041DBA8A9511DAA544103A65D03B4F2504154784AB01CAA544179D2A3E4B3F25041D3565F931CAA54413D0AD713B3F250410AD7A3001CAA5441EADD1998B2F250411069AFD21BAA5441E8AAEF6FB2F250410E7AC2C91BAA544124E8BA55B2F25041A63809BA1BAA5441F6285C6FB1F2504148E17A641BAA544186942433B1F25041499691301BAA5441981616FFB0F25041CCB055111BAA5441D9B29B2FB0F2504195E7E8581AAA5441BD250BF5AFF25041175A581E1AAA54413D0AD763AEF2504148E17AC418AA54417B14AEF7ADF25041C3F5284C18AA5441184F76E5ADF25041A4792B2318AA544158203AD8ADF25041C3ED941818AA54411657CD1FADF25041F5BEAD9016AA5441128C6067ACF250414AC425AA15AA5441162AE697ABF250416E61676714AA5441C1F786F6AAF250413263DF8013AA544102940C27AAF2504150353C6C12AA5441D36F1C16AAF2504150B7F33012AA5441909A94AFA9F250418637550311AA544144309257A9F25041ECA11E8810AA5441AECB5BFBA8F25041140ACDFD0FAA544185CC1788A8F25041F6DDA1020EAA5441BF995A20A8F25041837F17660BAA5441293524C4A7F250417053EC6A09AA5441A7CB5CDAA7F250414C837CDA08AA54417B14AEC7A7F25041C3F5285C08AA544189FDFEA4A7F2504107C8EED605AA54413869FB7EA7F25041FDC77A4605AA54413869FB7EA7F25041C1B0C11303AA54413D0AD773A7F2504148E17A4402AA54418AC6ED41A7F2504175A1521100AA5441E86BB70BA7F25041BD77D00FFFA9544177E01AD0A6F25041813976ACFEA95441F2A21716A6F25041E9D4CDD8FDA954410B09F9C8A5F25041A9E1F69EFDA954418F493CCBA5F250414F5A0852FDA954417B14AEB7A5F250410AD7A350FCA95441021DEDBDA3F250413AAAB1DEF7A95441DB7739ABA3F2504109F682C4F7A95441EF59AF62A3F25041C7B5EC24F7A9544147B9757EA2F250418893A5F7F5A9544132E36CA2A1F25041BF652ED5F4A954416819AF0EA1F25041EB9C7041F4A95441304AB0A3A0F2504175B8BECBF3A954414570BB65A0F250419FA55C95F3A954412CA682E29FF25041D6202E22F3A954410EFE18A69FF2504123F126EDF2A954413CB9AC589FF25041286E89B9F2A95441FAEF3FA09EF2504100D9F3BBF1A9544111B6CB6A9EF250414CC6C509F1A954417B14AED79DF2504185EB5108F0A95441FAD4B5BC9CF25041CC542B83EEA954418791B5039CF25041A617ABDCEDA95441D9842C919BF25041B7443CE7ECA954417B14AE379BF25041C3F5286CECA95441F6285C5F9AF2504148E17AF4EBA95441471B3F389AF2504156143B75EBA954411746460A9AF250415CB81F3AEBA95441B81E85EB98F250410AD7A350EAA95441FC950E8098F250411FBFD6F7E8A95441322D016698F2504138CFF1C8E8A954416880CC4C98F2504165BFECBAE8A954416EF8863698F25041567B89AEE8A954413C04B63198F2504160B2DBABE8A95441086C948E97F2504157297B75E8A95441651ECB5F97F25041196C1937E8A95441F6285C2F97F25041C3F5281CE8A9544191775E1E97F2504171E2DDDFE7A95441FED5420497F2504120600EBDE7A95441A5CF44F796F25041E12E1E55E7A95441B81E85AB96F2504185EB5148E6A95441F06A53C796F25041FB1393D5E5A954414A081ABF96F250419802C893E5A9544189CEB6F696F2504114E10412E5A9544146BBEB0297F250413B5BA5DFE4A95441813B35ED96F250412A6FAAAFE3A954414A081ABF96F2504108A5F983E2A95441D2AEC6CA96F25041313835ECE1A95441599A9BAF96F25041ECBA18BEE0A95441049B6A9D96F2504196BD5475E0A954417B14AE3795F250410AD7A3C0DDA954412C94537294F2504157D9899EDDA95441EA12820B94F25041904E1BA7DDA9544163E2226A93F250413551D733DDA954411A4A731993F2504168B985A9DCA954412E492FA692F2504113872608DCA95441D545355E92F25041D67C3648DBA954413D0AD74392F250410AD7A320DBA95441A3DE7B3092F250417C1348CEDAA954412FB3DD1B92F2504190F44C97DAA954416A79811892F2504132CE4168DAA95441D8F5788591F25041DF1BA5F6D7A95441F7E1683A91F2504197ECC04DD7A95441B3552CC290F250414AABDD37D7A95441FA1D0C5290F250412432AC2DD7A954416F6E19C88FF25041798ECE0ED8A95441BDD09FBC8FF25041D6CF8821D8A95441F3876EAD8FF250414160EB3FD8A9544139EF60968FF250412C612FB3D8A95441BC54537F8FF25041452B58F8D8A9544139EF60968FF25041048FD2C7D9A95441F3876EAD8FF250414A8D5AAEDAA95441BC54537F8FF25041B889E294DBA95441BC54537F8FF25041F9524F4DDCA9544161570F0C8FF250414F85AEEEDCA954415C8CA2538EF25041904E1BA7DDA954416BC0790E8EF25041AE4D5F1ADEA954414DC1359B8DF25041357EBEBBDEA95441FDC3F1278DF25041BDAE1D5DDFA95441C690D6F98CF25041CC798A15E0A95441769392868CF2504153AAE9B6E0A954419EFB40FC8BF25041DF0F6486E1A9544162FDB8158BF2504116D9D03EE2A954415867678B8AF25041B73D079BE2A95441E4951A178AF2504103A72DD5E2A95441B81E85EB89F2504148E17AF4E2A95441CA76649889F2504139181028E3A954417B04A94889F2504176A1816AE3A95441BDA02E7988F250419EA0C5DDE3A95441FC33BA4A88F250415C671CF7E3A954414349873287F25041CF59FBA4E4A95441BD7347F186F2504189375BDBE4A954413543E84F86F25041E4349F4EE5A95441E01089AE85F250411B68BA7CE5A9544159E0290D85F25041489BD5AAE5A954419A7CAF3D84F250416B65FEEFE5A95441084C509C83F25041DACB344CE6A95441F950608583F2504143C9AC57E6A954417B14AE0783F2504185EB51A8E6A95441A56C45E682F25041A13A3AA7E6A954410481E3E382F2504170306BA8E6A954417C50844282F2504170306BA8E6A954416D85178A81F25041F8CA78BFE6A95441E654B8E880F2504148C8BC32E7A95441C855747580F25041B62EF38EE7A95441AA56300280F25041579329EBE7A95441315AA81B7FF250418EC64419E8A954413CC3121E7EF250413E5F5230E8A95441B492B37C7DF2504157297B75E8A95441C33039AD7CF250417F28BFE8E8A95441D82FF5397CF2504166F4E72DE9A95441B465CCF47BF250413E8C39B8E9A95441CE99A3AF7BF2504175BF54E6E9A9544119CC7A6A7BF25041FCEFB387EAA95441BECE36F77AF25041CA870512EBA954416A7E00B17AF25041CC91243AEBA95441B81E858B7AF250410AD7A370EBA9544192CE0FBF78F250419A6520C3EBA954412BD7407D78F2504188EB7FE1EBA95441BDDAB89677F2504110868DF8EBA954412BAA59F576F25041B1EAC354ECA95441D677FA5376F25041474FFAB0ECA954419F44DF2576F250416F4E3E24EDA954417211C4F775F250412EB2B8F3EDA95441415715F175F2504122418AF7EDA954417B14AEE775F2504185EB5128EEA9544157A4368575F25041E0142E35EEA95441E0E0645675F25041C416EF4FEEA95441B38062A073F25041FB490A7EEEA95441299129FF72F25041D85A8E89EEA95441B81E85AB72F2504148E17A94EEA95441B541319372F250417FA94491EEA954419A1FA45D72F25041B5E21795EEA9544159245C4672F250419FE51F87EEA954414DF5366171F250416E4DDF68EEA954418689CAEC70F25041FB490A7EEEA954419527501D70F2504197E3D321EEA95441B9C491DA6EF2504188186769EDA95441E12C40506EF250416F4E3E24EDA954411495EEC56DF25041474FFAB0ECA9544134EC22E36DF250419D4223AAEBA954417B14AED76DF25041C3F5281CEBA954419D4DD7026FF25041A414C568EAA95441915CE3646FF250415C8B7D2BEAA9544150C05D3470F250414257A670EAA9544154F8683A71F2504171E07256E9A95441709430A771F250419C7A5FC0E7A95441E5BA18C071F25041EFFD4DC7E6A9544163FAF8C671F25041DF761FC3E5A95441965437A571F25041F3687609E5A95441CD8752D371F25041C6087453E3A95441F97315D871F25041E66BA53BE3A95441F6285CDF71F2504185EB5128E2A95441AD8663B771F250413FD98CE8E0A95441965437A571F250419911DC9FE0A954411D85964672F250410D161046DFA95441D54B9C6072F25041DF414515DFA95441B81E850B73F250410AD7A390DDA95441B81E855B74F2504148E17A34DCA95441B81E855B74F250418A482C63D9A95441607F484D74F25041F52D1485D8A95441C047F97875F25041FF967E87D7A95441D86303B675F25041C1F7B8E4D6A95441C26177D875F2504111ADBC16D6A95441DD463DEC75F25041E16A538CD5A954417EAB734876F25041A0A1E6D3D4A954419CAAB7BB76F250417DD735A8D3A95441B150F32C77F25041C7B9208DD2A954413D0AD7A377F2504148E17A54D1A95441952FAF0E78F25041B6011EBDD0A9544133A6831578F250416A1475AFD0A954410AD4262A79F25041BA4E8010CFA954412431479D79F25041D6547188CEA954413D0AD7E379F2504148E17A24CEA95441279BF9167AF25041397A9EF8CDA95441006BBC277AF250418D84CFE4CDA95441F60152257BF250411F8847FECCA9544155CA02517CF2504129F1B100CCA954415A7368B97CF25041C42F20B6CBA954417B14AED77CF25041C3F5289CCBA95441C81D70DB7CF250419D91D19DCBA95441DCFA61F27CF25041CEF36D8DCBA954413D0AD7037EF250410AD7A320CCA954413CC3121E7EF250416124CD2ECCA9544173F62D4C7EF250419C225515CDA95441F0903B637EF25041471DDDFBCDA954415AC256917EF25041BA4E8010CFA954415AC256917EF250417BF6393DCFA95441F6285C9F7EF25041C3F5288CCFA9544122287D6F7EF25041944E64D8CFA95441B95D20357EF25041514A4C6AD0A95441642BC1937DF25041A512FD95D1A9544164956F097DF25041CDA79293D2A954413C962B967CF25041DD72FF4BD3A954411E97E7227CF2504164A35EEDD3A9544146FF95987BF250412307D9BCD4A95441BECE36F77AF25041E16A538CD5A954418AA264BB7AF25041A63A2DBED5A95441D2BB6C357AF250416E5D8393D6A95441006BBC277AF250410E3504B8D6A954417C6FCBF779F2504195C0A7F5D6A95441B81E85CB79F25041C3F5283CD7A95441BD0E6EBD79F250413017B240D7A95441AB385D8679F25041FF967E87D7A95441D643BC1979F25041C7C36375D7A95441F36E7C0479F2504159DF3A7CD7A95441D97AE9C178F250419214A991D7A954419D6A205D78F25041BD8A40CBD7A954411F1C462578F25041F50F720BD8A954412F2BE30878F250413633122CD8A954417ED85AD077F250417893066ED8A9544123DB165D77F2504104F9803DD9A95441F7A7FB2E77F250413BC2EDF5D9A9544105DCD2E976F250414A8D5AAEDAA95441E6E4B58576F250413719833ADBA95441F6285C9F75F25041C3F5286CDDA95441B8499D5575F250415D0A2407DFA954418814DE4A75F25041BDAE1D5DDFA95441B104493A75F2504172ED719FDFA9544151E1C21C75F25041F914FB43E0A9544151E1C21C75F25041D044F7CDE0A95441B5B1A7EE74F2504149417FB4E1A954416B68A3BF74F25041A45BF34AE2A95441106E217D74F250416A5898BDE3A95441474B719274F250419E361768E4A95441474B719274F2504143D068F2E4A95441F21812F173F25041489BD5AAE5A954416AE8B24F73F2504120332735E6A95441E3B753AE72F250412FFE93EDE6A95441C7FEFB7272F2504166BF864CE7A954419B00B0DE71F25041F1B7C194E8A95441BB22BEB071F2504166F4E72DE9A954410755956B71F250413E8C39B8E9A954410755956B71F2504188DB48F3EAA95441F2D7369471F25041881809ECEAA954411388910172F25041ED7C86D8EAA95441787AF21873F250412D3EAEA6EAA95441607F484D74F25041C5BC9859EAA95441CB9E922D75F25041104AA747EAA95441F6285C3F75F2504148E17A44EAA954414AFC6C4E75F25041DA750645EAA9544165779C8D76F250415C8B7D2BEAA954410DC5BEC276F250415C8B7D2BEAA954413EC5C31378F25041E177D637E9A95441FB7268E777F25041579329EBE7A95441E23E912C78F25041CB2DAF1BE7A9544183A3C78878F2504143FD4F7AE6A954410AD4262A79F250416B65FEEFE5A954415F0686CB79F25041BC9F0951E4A954413771F0CD78F250419E73DE55E2A954413771F0CD78F2504108767A07E2A954417B14AEB778F2504148E17AD4E1A954413771F0CD78F250416560A9B7E1A954413771F0CD78F25041DF0F6486E1A95441C9A14F6F79F25041D044F7CDE0A95441379ED7557AF2504103ADA543E0A95441DC19DA857AF2504185E3E02FE0A954413D0AD7D37AF250410AD7A300E0A954416B374E187BF2504180F592F3DFA9544137CBBEDD7BF25041717C46A2DFA9544118996B847CF25041D1ADC563DFA95441757F7AA77CF25041DF41B14EDFA954415FBE4E187DF25041710EABF0DEA954410A964E7C7DF25041963E9759DEA95441518A65F87DF2504183431E9EDDA954415AC256917EF25041AE207892DCA95441E012A21D7FF2504108FC19E3DBA95441F6285C2F7FF2504185EB51C8DBA95441837C60387FF25041FDF7ABC1DBA9544109F2F9A57FF250411725AC38DBA9544132878FA380F2504190F44C97DAA95441BD825BFD81F250418B29E0DED9A95441547E275783F25041312C9C6BD9A954419F471CF684F2504154F6C4B0D9A95441E6F20C2185F25041634C3DC6D9A954413D0AD7B385F25041C3F528DCD9A9544101E76AE085F250414953F516DAA95441FE0FCD2186F25041A4F30824DAA9544108A61EAC86F25041EBF1900ADBA95441D63D703687F250417222F0ABDBA95441F0DF347A87F250414C657933DCA954413C1BA89B87F250412C63985FDCA9544144D18D1A89F25041B889E294DBA9544121344C5D8AF250419A8A9E21DBA95441600693968AF250410571CCFCDAA95441E2AEA6158CF25041A6442CEED9A95441E48F1A6D8DF25041DBF93CCAD8A9544196A245298EF25041289B9B76D8A954418A29900B8FF250410A6CBED6D7A95441B267BAC68FF2504131458552D7A954411B1D04AB90F25041919AF6A0D6A95441EABD782591F25041F185534FD6A9544103B9757A91F25041E27EF8CCD5A95441E61A2ECB91F250415A3AF4EAD4A95441FF4E058691F25041B4A0A260D4A95441E14FC11291F25041E13D6C04D4A9544186527D9F90F25041A53FE41DD3A954410F283D6790F25041C7C7837ED2A95441B81E854B90F250410AD7A350D2A95441B20D482590F2504145A8A2C3D1A95441B9BA2B1590F25041A512FD95D1A9544130AA451490F2504155D9E984D1A954413D0AD70390F2504185EB5148D1A954413A34170B90F25041D92077D6D0A9544131201EFE8FF25041ABB0FADFCFA954410E83DC4091F25041831B65E2CEA95441867F642792F25041FCEA0541CEA95441F280CDBE92F2504183948D0ECEA954417B14AEF792F2504185EB51E8CDA95441834B5A6693F25041B42C9D2EC9A954415D06056A93F25041C5601BC6C8A95441BDFFFB5A93F250412DB110B5C8A95441C57F3C5093F25041C9FFE1A8C8A95441A47EA89A92F2504133004EF3C7A95441A0B33BE291F250412F35E13AC7A95441E880F27392F2504111DB8572C6A95441B81E858B92F2504148E17AC4C4A95441A47EA89A92F2504172B1CEA4C4A95441A47EA89A92F250418AD8569EC4A95441C7AF1E0E93F2504146192CA4C3A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441941 - 246783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -397  </desc>
+<a>
+0106000000010000000103000000010000000800000085EB511869F0504114AE4781662B55413D0AD77368F050410AD7A300632B55411F85EB3160F05041EC51B81E652B5541AE47E1CA61F050411F85EBF16E2B5541666666E662F05041E17A143E742B5541EC51B8AE65F05041EC51B87E732B5541713D0A3769F05041B81E855B722B554185EB511869F0504114AE4781662B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000017909ECF68F05041F56FF6F4642B5541FF8F9ECF68F05041756FF6F4642B554132D052D660F050415AD274DE682B5541AE47E1CA61F050411F85EBF16E2B55412F80F6E962F0504143731F3D742B5541C662180663F0504145B99035742B55412AA0147564F050417125FAD2732B5541F690B8D565F05041334B2972732B5541216A005568F050411E7E4EA4722B5541C5FA2DD768F05041B753637A722B5541713D0A3769F05041B81E855B722B55415582682A69F05041A413CD846D2B554128EB1C2169F0504180B1C4E5692B55418FC2F51869F050415C8FC2D5662B554117909ECF68F05041F56FF6F4642B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441941 - 282026
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -397  </desc>
+<a>
+0106000000010000000103000000010000000800000085EB511869F0504114AE4781662B55413D0AD77368F050410AD7A300632B55411F85EB3160F05041EC51B81E652B5541AE47E1CA61F050411F85EBF16E2B5541666666E662F05041E17A143E742B5541EC51B8AE65F05041EC51B87E732B5541713D0A3769F05041B81E855B722B554185EB511869F0504114AE4781662B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000017909ECF68F05041F56FF6F4642B5541FF8F9ECF68F05041756FF6F4642B554132D052D660F050415AD274DE682B5541AE47E1CA61F050411F85EBF16E2B55412F80F6E962F0504143731F3D742B5541C662180663F0504145B99035742B55412AA0147564F050417125FAD2732B5541F690B8D565F05041334B2972732B5541216A005568F050411E7E4EA4722B5541C5FA2DD768F05041B753637A722B5541713D0A3769F05041B81E855B722B55415582682A69F05041A413CD846D2B554128EB1C2169F0504180B1C4E5692B55418FC2F51869F050415C8FC2D5662B554117909ECF68F05041F56FF6F4642B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442442 - 1467077
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81EE60751417B14AE6717265541EC51B81EE707514114AE47F11F26554133333363E707514114AE47D1282655410AD7A370F1075141EC51B84E2226554148E17A04EE07514114AE47E1182655413D0AD7B3E90751418FC2F508102655411F85EB01E6075141B81E853B0F265541EC51B81EE60751417B14AE6717265541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003765986BC907514157C15C1F2C2655413519DF58C9075141C608F42A2C265541A4703D7AC70751417B14AE3729265541C409AD78C707514101CBFE42292655419A9999E9C6075141E17A144E2D2655411F85EBF1C4075141295C8F823B2655419A999939D8075141EC51B81E47265541295C8F92EB075141295C8FF23A265541F6285C8FEC075141A4703D9A3926554185EB51F8E807514152B81EC533265541C3F5286CE707514185EB51482E26554133333363E707514114AE47D12826554151FDBD67ED075141CAEF9FEB2426554136BB857CF107514150F2D36F222655411E3D769FEE075141B9E5408C1A26554195E7E83FED0751418A60584E1726554150B84751EB075141EAC17058132655413D0AD7B3E90751418FC2F50810265541D30FEE01E6075141BC6B793B0F26554133333353E1075141666666360E2655419A999989D807514152B81E450D265541F701E184CE0751419E7DCC3B0F26554105B65D09D007514166D57C8C10265541BE5991D5CF0751419AAEA764142655411090D05CCE075141B4505F1B272655412F909C3ECE075141EB8338EB282655417AA6FD37CE075141E10F9EEF28265541C8BF0734CE075141B0A0FA21292655411DE2C078CB07514105B143DA2A2655413765986BC907514157C15C1F2C265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442442 - 3304144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81EE60751417B14AE6717265541EC51B81EE707514114AE47F11F26554133333363E707514114AE47D1282655410AD7A370F1075141EC51B84E2226554148E17A04EE07514114AE47E1182655413D0AD7B3E90751418FC2F508102655411F85EB01E6075141B81E853B0F265541EC51B81EE60751417B14AE6717265541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003765986BC907514157C15C1F2C2655413519DF58C9075141C608F42A2C265541A4703D7AC70751417B14AE3729265541C409AD78C707514101CBFE42292655419A9999E9C6075141E17A144E2D2655411F85EBF1C4075141295C8F823B2655419A999939D8075141EC51B81E47265541295C8F92EB075141295C8FF23A265541F6285C8FEC075141A4703D9A3926554185EB51F8E807514152B81EC533265541C3F5286CE707514185EB51482E26554133333363E707514114AE47D12826554151FDBD67ED075141CAEF9FEB2426554136BB857CF107514150F2D36F222655411E3D769FEE075141B9E5408C1A26554195E7E83FED0751418A60584E1726554150B84751EB075141EAC17058132655413D0AD7B3E90751418FC2F50810265541D30FEE01E6075141BC6B793B0F26554133333353E1075141666666360E2655419A999989D807514152B81E450D265541F701E184CE0751419E7DCC3B0F26554105B65D09D007514166D57C8C10265541BE5991D5CF0751419AAEA764142655411090D05CCE075141B4505F1B272655412F909C3ECE075141EB8338EB282655417AA6FD37CE075141E10F9EEF28265541C8BF0734CE075141B0A0FA21292655411DE2C078CB07514105B143DA2A2655413765986BC907514157C15C1F2C265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 2316132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541CDCCCC0CB7F55041713D0A570F2A55411F85EB71B9F55041C3F5287C0E2A5541EC51B86EBCF5504152B81EE50C2A5541D7A3705DC0F55041295C8FF2092A5541713D0A07C4F55041666666A6062A55419A999969C4F550410AD7A310062A5541F6285C0FC8F55041C3F5285C002A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000344358E3AAF550417B42629B0B2A5541FB885F36AEF5504172E5AD2C072A554155A78059B4F55041D3403135012A554100191950BBF55041C15C9814FC29554140A630A0C5F550416826EA0FF5295541D4A821F0CAF5504157BEE79BF129554133333303C7F55041A4703D4AEE295541F6285CFFC4F55041E17A14BEEC2955417B14AE67B8F550418FC2F5A8F0295541CDCCCC4CB4F550413D0AD763F2295541295C8FF2B0F550417B14AE37F3295541E17A143EACF550413D0AD7E3F4295541C3F5284CA9F5504166666686F62955419A999929A7F5504100000040F8295541D7A3701DA7F5504148E17AA4FA295541CDCCCCFCA5F55041A4703DBAFE295541F6285C4FA5F55041295C8F72FF295541F6285CAFA4F55041295C8FA2002A5541333333E3A4F550419A9999E9012A5541F6285CCFA5F550415C8FC255062A5541B81E85ABA5F5504185EB51F8072A55411F85EBA1A4F55041295C8F220B2A5541211A414DA3F55041A8D1F2AC0E2A554143DD6E37A3F550412F6FFB9C0F2A5541211A414DA3F550417186A8B8102A554131C400E6A3F5504191DA27EA112A5541EACEF658A5F550415CFE8BAE122A55418016BFE1A6F55041C347156D122A55412A77F5BBA7F55041A084E782122A55419EFB8F5AA9F550411FC53B040F2A5541344358E3AAF550417B42629B0B2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 3301634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541CDCCCC0CB7F55041713D0A570F2A55411F85EB71B9F55041C3F5287C0E2A5541EC51B86EBCF5504152B81EE50C2A5541D7A3705DC0F55041295C8FF2092A5541713D0A07C4F55041666666A6062A55419A999969C4F550410AD7A310062A5541F6285C0FC8F55041C3F5285C002A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000344358E3AAF550417B42629B0B2A5541FB885F36AEF5504172E5AD2C072A554155A78059B4F55041D3403135012A554100191950BBF55041C15C9814FC29554140A630A0C5F550416826EA0FF5295541D4A821F0CAF5504157BEE79BF129554133333303C7F55041A4703D4AEE295541F6285CFFC4F55041E17A14BEEC2955417B14AE67B8F550418FC2F5A8F0295541CDCCCC4CB4F550413D0AD763F2295541295C8FF2B0F550417B14AE37F3295541E17A143EACF550413D0AD7E3F4295541C3F5284CA9F5504166666686F62955419A999929A7F5504100000040F8295541D7A3701DA7F5504148E17AA4FA295541CDCCCCFCA5F55041A4703DBAFE295541F6285C4FA5F55041295C8F72FF295541F6285CAFA4F55041295C8FA2002A5541333333E3A4F550419A9999E9012A5541F6285CCFA5F550415C8FC255062A5541B81E85ABA5F5504185EB51F8072A55411F85EBA1A4F55041295C8F220B2A5541211A414DA3F55041A8D1F2AC0E2A554143DD6E37A3F550412F6FFB9C0F2A5541211A414DA3F550417186A8B8102A554131C400E6A3F5504191DA27EA112A5541EACEF658A5F550415CFE8BAE122A55418016BFE1A6F55041C347156D122A55412A77F5BBA7F55041A084E782122A55419EFB8F5AA9F550411FC53B040F2A5541344358E3AAF550417B42629B0B2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 9533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541CDCCCC0CB7F55041713D0A570F2A55411F85EB71B9F55041C3F5287C0E2A5541EC51B86EBCF5504152B81EE50C2A5541D7A3705DC0F55041295C8FF2092A5541713D0A07C4F55041666666A6062A55419A999969C4F550410AD7A310062A5541F6285C0FC8F55041C3F5285C002A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D4A821F0CAF5504157BEE79BF1295541639FEB69CAF550410FDA702EF129554160C67833CAF550416249240AF12955417B14AE17CAF55041C3F5281CF1295541CDCCCC2CC5F5504152B81E05F4295541EC51B85EBDF550410AD7A3C0F9295541DED8B1FAB3F55041C5E039A8002A554148E17AA4ADF55041D7A3709D062A5541333333D3AAF55041333333230A2A55411F85EB31A8F5504152B81E350F2A5541B3D659BFA3F5504199E8607D0D2A55414E3C9FAAA3F550416EDD87B40D2A5541A4D13EA8A3F5504167A4DABA0D2A5541FF561363A3F55041A8D1F2AC0E2A5541C56BEF3AA3F55041CBAB82CA0F2A5541211A414DA3F550417186A8B8102A554131C400E6A3F5504191DA27EA112A5541EACEF658A5F550415CFE8BAE122A55418016BFE1A6F55041C347156D122A55412A77F5BBA7F55041A084E782122A55419EFB8F5AA9F550411FC53B040F2A5541344358E3AAF550417B42629B0B2A5541FB885F36AEF5504172E5AD2C072A554155A78059B4F55041D3403135012A554100191950BBF55041C15C9814FC29554140A630A0C5F550416826EA0FF5295541D4A821F0CAF5504157BEE79BF1295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 54820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541CDCCCC0CB7F55041713D0A570F2A55411F85EB71B9F55041C3F5287C0E2A5541EC51B86EBCF5504152B81EE50C2A5541D7A3705DC0F55041295C8FF2092A5541713D0A07C4F55041666666A6062A55419A999969C4F550410AD7A310062A5541F6285C0FC8F55041C3F5285C002A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D4A821F0CAF5504157BEE79BF1295541639FEB69CAF550410FDA702EF129554160C67833CAF550416249240AF12955417B14AE17CAF55041C3F5281CF1295541CDCCCC2CC5F5504152B81E05F4295541EC51B85EBDF550410AD7A3C0F9295541DED8B1FAB3F55041C5E039A8002A554148E17AA4ADF55041D7A3709D062A5541333333D3AAF55041333333230A2A55411F85EB31A8F5504152B81E350F2A5541B3D659BFA3F5504199E8607D0D2A55414E3C9FAAA3F550416EDD87B40D2A5541A4D13EA8A3F5504167A4DABA0D2A5541FF561363A3F55041A8D1F2AC0E2A5541C56BEF3AA3F55041CBAB82CA0F2A5541211A414DA3F550417186A8B8102A554131C400E6A3F5504191DA27EA112A5541EACEF658A5F550415CFE8BAE122A55418016BFE1A6F55041C347156D122A55412A77F5BBA7F55041A084E782122A55419EFB8F5AA9F550411FC53B040F2A5541344358E3AAF550417B42629B0B2A5541FB885F36AEF5504172E5AD2C072A554155A78059B4F55041D3403135012A554100191950BBF55041C15C9814FC29554140A630A0C5F550416826EA0FF5295541D4A821F0CAF5504157BEE79BF1295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444165 - 1076195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000020000000103000000010000000900000014AE4771AED55041713D0AA75E5054415C8FC2F5AED5504185EB511858505441295C8F92B1D55041CDCCCCCC26505441F6285C3FAFD55041B81E853B26505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441C3F528BCAAD55041CDCCCC6C5F505441E17A146EACD55041713D0A375F50544114AE4771AED55041713D0AA75E50544101030000000100000010000000D7A3705DADD550415C8FC2A569505441CDCCCC4CAED550411F85EB815F505441AE47E1AAACD55041F6285CCF5F50544185EB51A8AAD55041EC51B81E605054410AD7A3B0A7D5504185EB51C8605054410AD7A3E0A3D550411F85EB41875054413D0AD743A3D55041CDCCCCEC8C50544133333333A3D55041713D0A878D5054418FC2F508A1D55041B81E859BA1505441A4703D6AA4D55041000000D0A1505441713D0AA7A6D5504148E17A948D505441295C8FD2A6D55041B81E850B8D5054413D0AD7E3A8D550415C8FC2A573505441D7A370FDA8D55041CDCCCC6C72505441666666B6A9D55041EC51B88E69505441D7A3705DADD550415C8FC2A569505441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3705DADD550415C8FC2A569505441CE2BC509AED550419D51DA5862505441B0B55D23AED550413A90444361505441CDCCCC4CAED550411F85EB815F5054413FB2F060AED55041742414095F5054415220D47BAED55041B78A5F215E50544181F6929EAED5504103A418695C5054411599C4D8AED55041344BB18759505441295C8F92B1D55041CDCCCCCC26505441E311E810AFD55041C39E13D925505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441E8BEF471A5D550414712EB3677505441F0AD2A38A6D55041DE5C09C8755054413588A31BA7D55041683DD993745054419CBEFBFDA8D550412E85216672505441666666B6A9D55041EC51B88E69505441D7A3705DADD550415C8FC2A569505441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444165 - 3584895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000020000000103000000010000000900000014AE4771AED55041713D0AA75E5054415C8FC2F5AED5504185EB511858505441295C8F92B1D55041CDCCCCCC26505441F6285C3FAFD55041B81E853B26505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441C3F528BCAAD55041CDCCCC6C5F505441E17A146EACD55041713D0A375F50544114AE4771AED55041713D0AA75E50544101030000000100000010000000D7A3705DADD550415C8FC2A569505441CDCCCC4CAED550411F85EB815F505441AE47E1AAACD55041F6285CCF5F50544185EB51A8AAD55041EC51B81E605054410AD7A3B0A7D5504185EB51C8605054410AD7A3E0A3D550411F85EB41875054413D0AD743A3D55041CDCCCCEC8C50544133333333A3D55041713D0A878D5054418FC2F508A1D55041B81E859BA1505441A4703D6AA4D55041000000D0A1505441713D0AA7A6D5504148E17A948D505441295C8FD2A6D55041B81E850B8D5054413D0AD7E3A8D550415C8FC2A573505441D7A370FDA8D55041CDCCCC6C72505441666666B6A9D55041EC51B88E69505441D7A3705DADD550415C8FC2A569505441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3705DADD550415C8FC2A569505441CE2BC509AED550419D51DA5862505441B0B55D23AED550413A90444361505441CDCCCC4CAED550411F85EB815F5054413FB2F060AED55041742414095F5054415220D47BAED55041B78A5F215E50544181F6929EAED5504103A418695C5054411599C4D8AED55041344BB18759505441295C8F92B1D55041CDCCCCCC26505441E311E810AFD55041C39E13D925505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441E8BEF471A5D550414712EB3677505441F0AD2A38A6D55041DE5C09C8755054413588A31BA7D55041683DD993745054419CBEFBFDA8D550412E85216672505441666666B6A9D55041EC51B88E69505441D7A3705DADD550415C8FC2A569505441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447281 - 31051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000200000001030000000200000052000000EC51B8FED93E51417B14AEA780445441666666D6C73E5141D7A3708D774454410AD7A3C0C73E514114AE47C1784454415C8FC2F5C53E5141C3F528DC7D44544148E17AF4B73E51413333338377445441A4703D3AB43E51410AD7A3107C4454411F85EB31B33E514152B81E957B445441D7A3705DB23E514148E17AE47C445441B81E854BAE3E51419A9999197B445441295C8F42AF3E5141E17A144E794454419A999939AA3E5141F6285CAF76445441333333F3AF3E51411F85EB816B445441C3F5284CB43E5141F6285CBF6844544148E17AC4B73E514152B81E25684454417B14AE07BE3E5141CDCCCC0C61445441D7A3705DC43E514114AE4781644454413D0AD7F3C83E51413D0AD79366445441CDCCCC7CC73E5141295C8FD26944544166666666CD3E5141666666366F445441B81E857BD13E51410AD7A340714454415C8FC2B5D73E5141F6285C7F74445441D7A3707DD93E5141A4703D9A7444544166666646DA3E51410AD7A3807344544148E17A74DA3E51419A9999497244544166666696DA3E5141C3F5289C6F445441AE47E1CADA3E51410AD7A3806B445441AE47E1DAD93E514185EB51D86A44544148E17A54CC3E51413D0AD7C36244544100000000CA3E51418FC2F5F86144544148E17A54C83E5141333333B35F445441D7A3700DC53E51410AD7A3305D44544152B81E15C43E51415C8FC2655C44544148E17AD4C33E5141D7A3700D5C4454419A999999C33E51419A9999B95B4454417B14AE47C33E5141B81E850B5B445441F6285CDFBF3E51415C8FC285584454411F85EBB1BE3E51413D0AD77359445441CDCCCC4CB83E51416666664659445441295C8F32B63E51419A9999095A4454419A999929B43E51413D0AD7635B445441F6285C6FAF3E514152B81E35614454417B14AE17AE3E5141AE47E15A6244544148E17AE4AD3E5141295C8F226344544148E17AC4A73E5141333333E37A445441D7A3702DA13E51417B14AE1789445441295C8FE29E3E51411F85EB71964454417B14AEC79B3E514148E17A84A844544152B81E659A3E51419A9999B9AE44544166666656983E5141AE47E1BAB4445441713D0A97913E5141295C8F72C5445441E17A142E913E514114AE4781C6445441F6285C7F8C3E5141D7A3708DD244544185EB51D8883E5141C3F5286CDB4454411F85EBC1823E51419A9999C9EE4454410AD7A320813E5141C3F5282CF6445441000000F0803E5141666666A6FA445441B81E85CB823E51413D0AD7631645544185EB51488A3E5141000000C019455441A4703D8A9F3E5141000000C0D9445441D7A3705DAF3E514114AE4791E2445441000000C0B73E514148E17A34E744544152B81E55B93E5141C3F5284CE84454411F85EB51BD3E5141CDCCCCCCE3445441AE47E1DABE3E514152B81EB5E14454410AD7A300C13E5141B81E854BDD445441CDCCCC4CC73E51410AD7A310C4445441333333B3CA3E514148E17A44B54454417B14AE77CB3E514114AE4771B5445441295C8F72CF3E514148E17AC4AB4454410AD7A3D0D23E514185EB51B8A24454411F85EBD1D43E5141F6285C3F9C445441666666B6D53E5141713D0A87974454417B14AED7D53E5141D7A370DD964454411F85EB61D63E51419A9999499644544166666646D73E514166666636954454415C8FC205D93E5141C3F528DC92445441D7A3701DDA3E5141C3F5280C9144544185EB51F8DA3E5141666666268F445441C3F5287CDB3E5141666666A68D445441AE47E11ADB3E5141B81E852B8A4454417B14AE57DA3E5141E17A144E84445441EC51B8FED93E51417B14AEA7804454410500000033333343CA3E514185EB51586A4454418FC2F5C8CA3E5141713D0A6769445441CDCCCCFCCB3E5141AE47E1FA69445441713D0A77CB3E5141666666066B44544133333343CA3E514185EB51586A4454410103000000010000000A000000713D0AF7DB3E5141295C8FC27544544166666626E53E5141E17A14EE7A4454418FC2F588E23E514152B81EC57644544152B81E25E03E51415C8FC235734454411F85EB71DE3E51418FC2F52871445441EC51B83EDD3E5141F6285C1F71445441A4703D0ADC3E5141333333037244544114AE4701DC3E514185EB517872445441A4703DCADB3E5141F6285C5F74445441713D0AF7DB3E5141295C8FC275445441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000202087ABD93E514143A0F97D80445441B9DE2883D93E514128FBBC69804454410990BAECD83E5141039B6F7B80445441E54227F9D93E5141D3699D1B88445441D126C35ADA3E514173C8DD4C8A4454414AA3F666DA3E51412235504D8C4454415EBF5A05DA3E51414E092BA38E4454417CF72242D93E51417B00037F90445441B667B3BBD73E514198C6AB05934454416E3FAC8AD63E5141D7D24E98944454415D2AE1D3D63E51413B10218095445441AD4B4F1DD83E51417F9C15989344544175E2578BD93E51415BC1A15A91445441489C5D7FDA3E5141B16261298F4454413A72C711DB3E51418D87EDEB8C445441B8FC2CEDDA3E5141F236DF898A445441CC18918BDA3E5141651067958744544118405BC0D93E5141B7A96A8880445441202087ABD93E514143A0F97D80445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447281 - 72782
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000200000001030000000200000052000000EC51B8FED93E51417B14AEA780445441666666D6C73E5141D7A3708D774454410AD7A3C0C73E514114AE47C1784454415C8FC2F5C53E5141C3F528DC7D44544148E17AF4B73E51413333338377445441A4703D3AB43E51410AD7A3107C4454411F85EB31B33E514152B81E957B445441D7A3705DB23E514148E17AE47C445441B81E854BAE3E51419A9999197B445441295C8F42AF3E5141E17A144E794454419A999939AA3E5141F6285CAF76445441333333F3AF3E51411F85EB816B445441C3F5284CB43E5141F6285CBF6844544148E17AC4B73E514152B81E25684454417B14AE07BE3E5141CDCCCC0C61445441D7A3705DC43E514114AE4781644454413D0AD7F3C83E51413D0AD79366445441CDCCCC7CC73E5141295C8FD26944544166666666CD3E5141666666366F445441B81E857BD13E51410AD7A340714454415C8FC2B5D73E5141F6285C7F74445441D7A3707DD93E5141A4703D9A7444544166666646DA3E51410AD7A3807344544148E17A74DA3E51419A9999497244544166666696DA3E5141C3F5289C6F445441AE47E1CADA3E51410AD7A3806B445441AE47E1DAD93E514185EB51D86A44544148E17A54CC3E51413D0AD7C36244544100000000CA3E51418FC2F5F86144544148E17A54C83E5141333333B35F445441D7A3700DC53E51410AD7A3305D44544152B81E15C43E51415C8FC2655C44544148E17AD4C33E5141D7A3700D5C4454419A999999C33E51419A9999B95B4454417B14AE47C33E5141B81E850B5B445441F6285CDFBF3E51415C8FC285584454411F85EBB1BE3E51413D0AD77359445441CDCCCC4CB83E51416666664659445441295C8F32B63E51419A9999095A4454419A999929B43E51413D0AD7635B445441F6285C6FAF3E514152B81E35614454417B14AE17AE3E5141AE47E15A6244544148E17AE4AD3E5141295C8F226344544148E17AC4A73E5141333333E37A445441D7A3702DA13E51417B14AE1789445441295C8FE29E3E51411F85EB71964454417B14AEC79B3E514148E17A84A844544152B81E659A3E51419A9999B9AE44544166666656983E5141AE47E1BAB4445441713D0A97913E5141295C8F72C5445441E17A142E913E514114AE4781C6445441F6285C7F8C3E5141D7A3708DD244544185EB51D8883E5141C3F5286CDB4454411F85EBC1823E51419A9999C9EE4454410AD7A320813E5141C3F5282CF6445441000000F0803E5141666666A6FA445441B81E85CB823E51413D0AD7631645544185EB51488A3E5141000000C019455441A4703D8A9F3E5141000000C0D9445441D7A3705DAF3E514114AE4791E2445441000000C0B73E514148E17A34E744544152B81E55B93E5141C3F5284CE84454411F85EB51BD3E5141CDCCCCCCE3445441AE47E1DABE3E514152B81EB5E14454410AD7A300C13E5141B81E854BDD445441CDCCCC4CC73E51410AD7A310C4445441333333B3CA3E514148E17A44B54454417B14AE77CB3E514114AE4771B5445441295C8F72CF3E514148E17AC4AB4454410AD7A3D0D23E514185EB51B8A24454411F85EBD1D43E5141F6285C3F9C445441666666B6D53E5141713D0A87974454417B14AED7D53E5141D7A370DD964454411F85EB61D63E51419A9999499644544166666646D73E514166666636954454415C8FC205D93E5141C3F528DC92445441D7A3701DDA3E5141C3F5280C9144544185EB51F8DA3E5141666666268F445441C3F5287CDB3E5141666666A68D445441AE47E11ADB3E5141B81E852B8A4454417B14AE57DA3E5141E17A144E84445441EC51B8FED93E51417B14AEA7804454410500000033333343CA3E514185EB51586A4454418FC2F5C8CA3E5141713D0A6769445441CDCCCCFCCB3E5141AE47E1FA69445441713D0A77CB3E5141666666066B44544133333343CA3E514185EB51586A4454410103000000010000000A000000713D0AF7DB3E5141295C8FC27544544166666626E53E5141E17A14EE7A4454418FC2F588E23E514152B81EC57644544152B81E25E03E51415C8FC235734454411F85EB71DE3E51418FC2F52871445441EC51B83EDD3E5141F6285C1F71445441A4703D0ADC3E5141333333037244544114AE4701DC3E514185EB517872445441A4703DCADB3E5141F6285C5F74445441713D0AF7DB3E5141295C8FC275445441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000202087ABD93E514143A0F97D80445441B9DE2883D93E514128FBBC69804454410990BAECD83E5141039B6F7B80445441E54227F9D93E5141D3699D1B88445441D126C35ADA3E514173C8DD4C8A4454414AA3F666DA3E51412235504D8C4454415EBF5A05DA3E51414E092BA38E4454417CF72242D93E51417B00037F90445441B667B3BBD73E514198C6AB05934454416E3FAC8AD63E5141D7D24E98944454415D2AE1D3D63E51413B10218095445441AD4B4F1DD83E51417F9C15989344544175E2578BD93E51415BC1A15A91445441489C5D7FDA3E5141B16261298F4454413A72C711DB3E51418D87EDEB8C445441B8FC2CEDDA3E5141F236DF898A445441CC18918BDA3E5141651067958744544118405BC0D93E5141B7A96A8880445441202087ABD93E514143A0F97D80445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>448986 - 3133552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -727  </desc>
+<a>
+0106000000010000000103000000010000002B0000003333332328365141D7A3709DE8525441F6285C8F273651418FC2F548EE525441C3F5285C2636514133333353F3525441295C8FB22436514133333333F95254413D0AD71322365141713D0A8701535441AE47E16A1E365141B81E850B0C535441CDCCCCBC25365141D7A3709D0D535441333333332D365141333333030F5354413D0AD7A32C365141A4703DEA155354410000006029365141713D0A371E5354419A9999091A365141713D0AF71A535441AE47E1BA1936514152B81E251C5354415C8FC2C5183651418FC2F5C821535441E17A147E18365141AE47E1DA2453544148E17AD43C365141EC51B8BE23535441C3F5289C3D365141295C8FB228535441713D0A373F3651413D0AD7F3315354411F85EBA140365141B81E850B39535441713D0A373F3651413D0AD71339535441713D0A373F36514100000090395354417B14AE7740365141B81E858B3953544185EB5158583651411F85EB31395354411F85EBD175365141333333C3385354415C8FC2557636514114AE47C138535441D7A370ED73365141713D0A77365354418FC2F5E86F365141666666B63153544148E17A246E3651410AD7A3602F53544152B81E356D365141000000E02D535441CDCCCCCC6B365141EC51B80E2B5354417B14AE676A365141C3F5282C285354419A9999B9693651419A9999B9265354418FC2F53869365141A4703D2A255354418FC2F5A868365141CDCCCCBC1E535441CDCCCC7C5E365141000000D0125354410AD7A39055365141333333630853544166666676543651418FC2F588F852544148E17A34433651410AD7A320F05254418FC2F5B840365141D7A3700DEF525441713D0A8731365141E17A149EEC52544148E17A642F365141EC51B81EE7525441AE47E1BA2936514100000040E552544114AE47312836514166666676E55254413333332328365141D7A3709DE8525441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000E17A147E18365141AE47E1DA24535441BDB3D6233A3651416482C1D323535441EC51B8BE33365141EC51B83E0E5354414993BED829365141D81987FC0D5354410CB969272B365141694E1CA10E5354416F099C822B365141E6779990115354410002EB2C2C3651417EBFD00712535441B885C3D72B365141D88EC51714535441DF104DD82A36514170D6FC8E145354419EE30D502A365141200BED6C145354416605B7942936514162ED28161753544105E7D9B727365141B422327A1B535441D3A26EA824365141451B81241C5354416880ACDD203651416CA60A251B53544167CBAFBC1E36514174F5F2F11A535441B5E1C2BD1C3651410C3D2A691B5354419C3F0D361B36514105EE419C1B535441409FF9001A3651413A72C9171B535441EDF2065B19365141A7D1B9591E5354410D8DE920193651411FBE0AB01F5354415D5C2DDA183651411021B250215354419E9D76C3183651413B2624E221535441E17A147E18365141AE47E1DA24535441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>511853 - 938646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000003F000000AE47E1FA78A75041666666B629335441AE47E17A7CA750417B14AEF72A33544148E17A747DA750410AD7A3602B33544152B81EA57FA750418FC2F5D82C3354419A99996986A75041295C8F523133544152B81EB587A75041713D0A5732335441B81E851B89A7504152B81EE533335441000000A08AA75041713D0A5736335441A4703D1A8CA75041295C8FE239335441AE47E14A8EA75041713D0AD73F3354413D0AD76393A750415C8FC2B538335441000000509BA75041D7A370FD2A335441000000F0A3A75041D7A3708D20335441D7A3708DB2A7504185EB5108043354410AD7A370B5A75041295C8F32043354417B14AEC7B9A7504148E17AD4023354417B14AE77BEA75041F6285C2F01335441AE47E1DABCA75041F6285C8FFB325441295C8F62BBA750417B14AEF7F53254411F85EB61B4A75041B81E85BBE23254411F85EBA1B3A750413D0AD7B3E2325441B81E85EBADA75041A4703DAAE23254419A9999C9A8A75041AE47E14AE2325441AE47E1FAA5A750411F85EB51E23254413D0AD703A3A75041D7A370DDE2325441EC51B81EA0A75041EC51B8AEE3325441C3F5285C99A75041A4703DCAE3325441EC51B87E93A750418FC2F5E8E3325441000000308EA75041713D0A47E33254410AD7A31089A75041295C8FF2E2325441295C8FF285A75041E17A14CEE23254413333338384A75041A4703D9AE33254411F85EB1184A75041D7A3705DE732544152B81E0584A7504166666666ED3254415C8FC29583A750415C8FC295EF325441295C8FC282A75041666666C6F0325441CDCCCC4C80A7504152B81E65F2325441F6285CCF7EA7504133333363F3325441B81E858B7DA75041A4703DAAF432544185EB51987CA750415C8FC225F63254410AD7A3C07BA750415C8FC295F8325441000000307AA750410AD7A3B001335441666666C678A750411F85EB81073354410AD7A35077A7504152B81E350D335441713D0A7776A75041A4703D6A123354413D0AD74376A75041F6285C7F15335441C3F5285C77A750419A999999183354411F85EBA178A750419A9999A9183354413D0AD77378A7504148E17AC41C33544185EB51387AA75041000000701E3354418FC2F5387BA75041F6285CDF1E3354410AD7A3D07AA75041AE47E15A213354417B14AEB77BA75041295C8FC22533544114AE47C17BA750419A999969263354411F85EB617BA750415C8FC2352733544148E17A847AA750417B14AE9727335441EC51B88E79A750415C8FC23527335441CDCCCC1C79A750415C8FC205263354416666666678A750417B14AEF7253354416666666678A75041C3F5282C27335441EC51B82E78A750418FC2F52828335441C3F5283C78A750415C8FC22529335441AE47E1FA78A75041666666B629335441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000005C70C512B6A75041090973F0043354412BF9B779B5A750411A67313D043354414A12CA62B3A7504184EA821404335441B860787EB2A75041AF458825043354417B467287A9A75041C80071A415335441EB32C78AA6A750414DA746781B335441BE66C44BA4A75041801A5DDA1F335441F17DF48CA0A7504142A7B0A624335441DC0CB5CE9BA75041B31B1B642A33544158262E8793A75041B3FC8E7838335441E3173E3191A7504189D5ADC83B33544189B2D1A78FA75041855CF8EE3D33544111ABF84D8EA750413C4EB7D23F335441D329A5FB8EA750411FF82A5242335441F747603F8FA75041395ECBA243335441096767998FA7504165801AB645335441FFB6A1CF8FA7504119806BD8493354416864064690A75041C489EB0B4F3354416262AB6C94A750414236D8554F33544148E17A4495A75041EC51B87E4C3354412CEDCE8797A75041C29E1B3148335441511AEEB2A0A75041CA3CFAC13633544161AE7B27A4A75041B469F82F3033544120C068E0A5A7504105E688E92C3354410327D0FDA5A750413DA805D22C3354413EEBACFBA9A75041633E619B2A335441B67CA429ACA750412EF8F965293354418471A8A9ADA75041875308912833544133333313B0A750413D0AD7B3283354411A80ADBFB3A7504113B8852B2133544107D20A89B4A75041F336CA9C1F33544102589B5CB5A750415FDB3F131E335441FC563B0FB7A7504135D5C8EA1A3354414FF6DBAAB7A75041938C4BC919335441873E3652B8A7504133BFFE9118335441046C17C8B8A7504185ED59B11733544121325C0DB9A75041F4257DC9163354412980125EBAA750414D376A62123354410C4EE124BBA75041736CF2C80F33544185D587F6BBA75041D6772F0B0D335441CA6A6038BCA7504107D177230C3354411054D205BCA750416AF141E80B3354415C70C512B6A75041090973F004335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452568 - 236950
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999D985325141CDCCCC2CFC2E5541B81E85EB86325141AE47E1FAFE2E5541A4703D5A87325141F6285C2F002F5541EC51B82E8C3251413D0AD7F3FC2E5541F6285C4F95325141295C8FC2F72E5541295C8F42A23251415C8FC295F12E554148E17AB4A5325141E17A14BEEE2E554152B81EE5A032514114AE4701E92E5541B81E853B9D325141D7A3705DE72E554166666626983251411F85EB61E62E5541D7A370ED943251417B14AEC7E52E55419A999989913251415C8FC245E62E5541295C8FD28D3251415C8FC275E82E5541295C8FA28B325141713D0A27EA2E5541713D0AC789325141713D0A57EC2E55415C8FC21588325141666666F6EE2E554100000080863251417B14AE87F12E55415C8FC27585325141B81E859BF32E554185EB51F884325141F6285CCFF42E5541E17A143E843251413D0AD7D3F52E554185EB5148843251419A999969F72E5541295C8FA28432514185EB5128F92E55419A9999D985325141CDCCCC2CFC2E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000E64751899132514183B8FA55E62E5541F787D633923251416081FBFBE52E5541A08727FC943251410035F82DE62E554166666626983251411F85EB61E62E5541EC18444E983251412163A069E62E5541889190DF99325141F6AEC985E62E554162E71AE99D325141B87EF276E72E5541796D7C01A1325141E092D036E92E554191F3DD19A43251415FA4A571EC2E5541E8F0D494A53251414641EECEEF2E5541E6CF24ADA23251418717D13DF12E55415742849FA2325141841C8A44F12E554106037D97A23251418D088048F12E5541481AFB7C9B325141E366A1C9F42E55418CB5A4BD92325141F55E863AF92E554106ACEA118B32514194CBF788FD2E554159F8BA6F873251417EAFFE39002F5541578DD4BE8832514107A4BE7F032F5541AE47E19A8A325141F6285C7F012F55412CB7162D8B3251418BD2A4F6002F554185BDBF4C8E32514194CBF788FD2E55415985CDAE93325141B72EAF2BFA2E55417452ED1A963251415F31B8B0F82E5541EE852F099D3251411F5D7CD4F52E5541D861CE549D3251414CFE46B5F52E55415FA05C959E3251411009FC30F52E5541A4C471FDA3325141C6FE824BF22E5541E17A142EA4325141CDCCCC2CF22E55417E1EA31EA632514136B37127F12E554131410B8FA73251415C820097EF2E5541A0A40437A93251414F1629CAED2E5541D1F785BBAE325141B3F075CFE82E55417EABB55DB2325141CB532D72E52E5541688FBC0EB5325141B1860D06E32E5541D43E440FAE32514136265FE8E42E554138199114A9325141CB532D72E52E55412621ACA3A43251419B6A14B7E52E5541D0000BB39C3251419B6A14B7E52E554112497F689A325141D43DF182E52E5541AE47E1DA973251411F85EB71E52E554191A8B68F96325141997FE42DE52E55419AFC6211923251416EC8B94FE52E5541F3D6AF168D325141C80C6F1EE62E5541F54FBC6A89325141C10D15A0E62E554185EB515889325141666666A6E62E5541EC055C4C8932514135A545A4E62E5541810C992F893251415E3A3DA8E62E554102FBC3F4853251416081FBFBE52E55412C56600887325141854E1B68E82E5541E17A141E87325141AE47E1DAE82E554149CCFF52873251413FE5B740EA2E554159F8BA6F8732514107A7AEF6EA2E554159F8BA6F873251416BC0398BEB2E554159F8BA6F873251415FA4A571EC2E5541DE970C5289325141F4D173FBEC2E5541D967E3EC8A325141C8868737EB2E5541A1CCD0D28B3251414EFE9B3AEA2E5541C3ED965B8D325141E3D98E8AE82E5541E64751899132514183B8FA55E62E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464545 - 21168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE47A18CD05041333333838E495441D7A3707D6FD050417B14AE97B449544114AE47A170D0504185EB5198B8495441AE47E12A76D05041B81E85FBCB495441AE47E10AA6D05041C3F5286C8D4954415C8FC2F590D05041B81E855B8E49544114AE47A18CD05041333333838E495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464545 - 66347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE47A18CD05041333333838E495441D7A3707D6FD050417B14AE97B449544114AE47A170D0504185EB5198B8495441AE47E12A76D05041B81E85FBCB495441AE47E10AA6D05041C3F5286C8D4954415C8FC2F590D05041B81E855B8E49544114AE47A18CD05041333333838E495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464563 - 21168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5288C76D0504100000050CD4954419A9999897DD05041713D0AC7E5495441CDCCCC2C84D0504152B81E05FD495441C3F528BC97D050415C8FC275E3495441C3F5284CABD0504152B81EE5C94954417B14AEE7ABD050419A999919C9495441E17A14CEC1D05041CDCCCC7CAC4954418FC2F548D7D05041CDCCCC6C904954415C8FC245BFD05041333333038E4954418FC2F508B4D05041666666568D495441713D0AD7A9D05041E17A145E8D495441F6285C5FA7D05041666666668D495441C3F5288C76D0504100000050CD495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464563 - 66347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5288C76D0504100000050CD4954419A9999897DD05041713D0AC7E5495441CDCCCC2C84D0504152B81E05FD495441C3F528BC97D050415C8FC275E3495441C3F5284CABD0504152B81EE5C94954417B14AEE7ABD050419A999919C9495441E17A14CEC1D05041CDCCCC7CAC4954418FC2F548D7D05041CDCCCC6C904954415C8FC245BFD05041333333038E4954418FC2F508B4D05041666666568D495441713D0AD7A9D05041E17A145E8D495441F6285C5FA7D05041666666668D495441C3F5288C76D0504100000050CD495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453066 - 365139
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81E4591AD5041E17A14EE16C85441AE47E1CA8EAD50411F85EB010BC854417B14AE5794AD504114AE47B109C854419A99992993AD5041E17A147E03C85441666666B694AD5041A4703DEAFDC754419A99997983AD5041713D0AE7F5C754419A9999997BAD5041C3F528BCF2C7544152B81EE577AD504114AE4721F2C75441F6285C8F71AD50411F85EBE1F1C754417B14AE276CAD50411F85EB11F3C754413D0AD7C339AD504148E17A7403C85441E17A14EE31AD50417B14AE0706C85441333333732CAD5041E17A14DE06C854413333336326AD50413333334307C8544152B81EC525AD5041666666E608C85441CDCCCC9C26AD50411F85EB510AC85441E17A14BE39AD50419A9999790AC854410AD7A39044AD5041E17A14EE07C8544148E17A746AAD5041D7A370BD11C85441AE47E13A76AD5041333333D314C85441B81E859B73AD5041333333B321C85441CDCCCC0C71AD5041AE47E19A23C85441AE47E19A66AD50410AD7A3C022C854413D0AD70365AD504185EB51A82BC854410AD7A3206AAD5041C3F5281C2FC85441AE47E17A72AD5041295C8F8232C85441333333737AAD5041A4703D6A3BC854413D0AD7237EAD5041C3F528BC3AC85441A4703DFA85AD5041C3F528FC2EC854411F85EBA190AD5041C3F528BC23C8544152B81E658CAD50411F85EB1121C8544152B81E4591AD5041E17A14EE16C85441
+</a>
+
+<b>
+010600000001000000010300000001000000330000007253A61D30AD5041C77DA84E06C85441178E33732CAD5041988B15DE06C854411AA73E3D28AD50414C54502407C85441EDFF336326AD5041DD25334307C854410FE4B70426AD50419BA2BF3D08C854417CD11EC525AD5041AB2366E608C854417506375D26AD504191FBBFE609C85441CDCCCC9C26AD50411F85EB510AC85441FA9745F731AD5041463578690AC85441F51A14BE39AD5041F0CF98790AC8544175A4A39044AD504173C713EE07C854415A01132F62AD5041F1613A990FC8544148E17A746AAD5041D7A370BD11C85441B0AAE23A76AD504184BB33D314C85441B81E859B73AD5041333333B321C85441E99E75C472AD50411448645322C8544179CDCC0C71AD5041460DE29A23C854419EFBE19A66AD50418E3BA5C022C85441AADD276665AD504162AAB08129C854410143D70365AD50419AAD50A82BC854413D4AA3206AAD5041D59E271C2FC85441F5266BF570AD5041D03C06E431C85441065D8CF570AD5041B7C113E431C8544175D0E17A72AD504172D38F8232C854416DAEA9F272AD50414A27650833C85441333333737AAD5041A4703D6A3BC854419AAA04A47BAD5041FD4911323BC854419B64D6237EAD5041CE8A28BC3AC85441C4733CFA85AD50416C2A28FC2EC854413741EBA190AD504110CB28BC23C854416EF9CFA190AD5041E5A217BC23C85441C04E1E658CAD504157F5EA1121C85441D43A392B8EAD5041AB7562611DC8544152B81E4591AD5041E17A14EE16C85441AE47E1CA8EAD50411F85EB010BC854417B14AE5794AD504114AE47B109C85441F83C37B993AD5041EFDDAB7006C8544165CF982993AD5041A60E137E03C854411E1C66B694AD50411F4E3DEAFDC75441FC4FC2B98FAD504139CBD198FBC754412866987983AD5041D1A50BE7F5C754416A5498997BAD50411CF529BCF2C7544164CF1EE577AD504112904821F2C75441A9475E3E75AD50416417C306F2C75441F6285C8F71AD50411F85EBE1F1C754417B14AE276CAD50411F85EB11F3C75441730281FC5DAD5041119858ADF7C754416E56D6C339AD504151EA7B7403C85441E977E58435AD5041DD32B5D904C85441E17A14EE31AD50417B14AE0706C854417253A61D30AD5041C77DA84E06C85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455774 - 4178754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -125  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FE223B350415C8FC28598D254413D0AD7E320B350410AD7A34096D254410AD7A3C01BB35041A4703D1A9CD254419A99996915B350415C8FC2B5A3D25441A4703DBA0FB35041C3F5287CABD254410AD7A3900BB350417B14AE17B3D254411F85EB310AB35041E17A148EB6D254415C8FC2A517B35041D7A370CDB8D25441EC51B88E18B35041EC51B8FEB7D254415C8FC2251EB350419A999929AED25441A4703DBA22B350413D0AD713A9D25441713D0AC727B350410AD7A300A5D254418FC2F5282CB350417B14AE579FD25441295C8FE223B350415C8FC28598D25441
+</a>
+
+<b>
+010600000001000000010300000002000000560000001D5A64D309B35041355EBA41B6D254410AD7A3900BB350417B14AE17B3D254415F95E2550DB35041C959CF83AFD25441A4703DBA0FB35041C3F5287CABD25441F2E42C6113B350418B2C321FA6D254419A99996915B350415C8FC2B5A3D254415ED0F77E1AB3504118BA81EC9CD2544131B8348420B350418C233DE895D254419539DAAE20B35041A51A89B695D25441C15A4B3519B350415A76ECF78FD2544183BFAA7C12B3504124867D1B8AD25441952430390DB350415987233386D254418196AAFA0BB35041D239A67086D2544152B81EBD08B35041F6285CA786D2544196438BFC06B350414260E5A085D254411283C09206B350411D5A641384D25441921A641705B35041C480D14183D25441B6F3FDCC02B35041AC1C5A0482D25441B6F3FDA400B350419EEFA7B681D254411B2FDD2401B3504196438BC484D25441378941B800B35041931804F685D25441666666D6FFB25041022B877E86D25441378941F0FEB250413BDF4F8D87D25441448B6CDFFDB250414C37891989D2544121B07250FCB250410E2DB2958CD2544114AE4761FBB25041508D97EE8FD254411283C0FAFAB250418941609D93D25441C1CAA11DFBB2504114AE479996D25441C520B05AFBB25041C3F528DC97D25441D4146687FBB250418CFDB54E9AD2544157DB5520FCB2504190209DE0A0D25441295C8F8AFCB25041CFF753A3A8D25441CFF75383FEB2504108AC1C6AA9D2544123DBF946FFB2504117D9CEFFA9D254418960BBEA01B35041D18BED6AB5D25441B81E853BFFB2504166666626B5D2544148E17AC4FCB2504185EB5138B5D254417B14AEC7FCB25041CDCCCC5CBBD25441713D0A17FDB2504148E17AB4C0D25441B81E854BFFB2504166666616C2D25441B81E85EB01B35041D7A3704DC2D254419A9999B908B3504133333343C2D25441CDCCCC7C0DB35041EC51B84EC3D254410000007019B3504185EB51D8C8D2544114AE47E119B350419A9999E9C7D254410AD7A36017B350418FC2F5A8C6D25441AE47E11A12B35041EC51B86EC4D25441A4703D3A11B35041713D0A67C3D25441295C8F6212B35041EC51B8EEBFD25441AE47E15A14B35041A4703DCABDD25441EC51B89E15B350417B14AE77BDD25441CDCCCC5C18B3504152B81E95BED25441931804E61AB350414260E5B0C0D25441A69BC4B01CB350413F355EFAC0D25441B4C876F61EB35041E5D022E3BBD25441B81E85AB1FB35041C3F5282CBBD25441CDCCCC2C24B350419A999909BCD25441F6285C6F26B3504114AE4791BBD254414A0C02DB27B35041736891BDBAD254419A9999092AB3504114AE4721B9D25441D122DB992CB35041F6285CC7B6D2544192D8064430B350410CBDAB56B2D25441D34D62A834B35041A69BC4F8ADD25441168FE40434B35041E0106109ADD2544196438B1C37B35041000000E0A9D25441A245B64B37B3504146B6F32DA8D25441018DCB672CB35041AC745E069FD25441833C90262CB35041C86EB4559FD25441DB2D85F72AB35041195745C6A0D2544186154C8027B350410D738FF7A4D25441313A4A0526B350419F2C321FA6D2544107B8547A23B35041C727B91EA9D254410559EC6323B35041DE82AB35A9D254418875B04223B350415B08AF5CA9D254410C5C7B2820B350414F795A61ACD25441F3C9A0C91FB35041287C26E6ACD2544174E3E8BD1FB35041900AFDF4ACD25441362D1CB41EB3504100208D45AED25441C5DDE48E1EB35041F9DDAC74AED25441129493AB1DB350419ECE8294AFD2544131D7C46A1DB350415A4622E6AFD25441967FBEDA18B350410F7E47E9B7D2544196438B0418B350413D0AD75BB9D2544183554E5215B350414439F569B8D25441508D97D611B35041FED47831B7D254411D5A64D309B35041355EBA41B6D254411300000033333323FEB250419A9999B9BDD2544133333323FEB250411F85EB51BAD25441EC51B8FEFEB25041CDCCCC5CB7D25441000000E0FFB25041D7A370ADB6D25441C3F5282C03B3504148E17AF4B6D25441713D0A3709B35041295C8F22B8D254419A9999190EB3504133333303B9D2544148E17A3411B35041D7A3706DBAD25441E17A147E12B35041666666B6BBD254413333337312B35041295C8F72BDD25441F6285CEF11B35041E17A140EBFD25441666666F60FB3504166666646C0D254418FC2F5480DB35041713D0A17C1D254413333336309B350417B14AE37C1D25441F6285C8F03B35041C3F5280CC1D254419A99998900B35041E17A148EC0D254410AD7A340FFB25041E17A14CEBFD2544166666686FEB25041CDCCCCECBED2544133333323FEB250419A9999B9BDD25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455774 - 4178760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -124  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FE223B350415C8FC28598D254413D0AD7E320B350410AD7A34096D254410AD7A3C01BB35041A4703D1A9CD254419A99996915B350415C8FC2B5A3D25441A4703DBA0FB35041C3F5287CABD254410AD7A3900BB350417B14AE17B3D254411F85EB310AB35041E17A148EB6D254415C8FC2A517B35041D7A370CDB8D25441EC51B88E18B35041EC51B8FEB7D254415C8FC2251EB350419A999929AED25441A4703DBA22B350413D0AD713A9D25441713D0AC727B350410AD7A300A5D254418FC2F5282CB350417B14AE579FD25441295C8FE223B350415C8FC28598D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000086154C8027B350410D738FF7A4D25441DB2D85F72AB35041195745C6A0D25441833C90262CB35041C86EB4559FD25441295C8FE223B350415C8FC28598D2544131B8348420B350418C233DE895D254415ED0F77E1AB3504118BA81EC9CD254419A99996915B350415C8FC2B5A3D25441F2E42C6113B350418B2C321FA6D25441A4703DBA0FB35041C3F5287CABD254415F95E2550DB35041C959CF83AFD254410AD7A3900BB350417B14AE17B3D254411D5A64D309B35041355EBA41B6D25441508D97D611B35041FED47831B7D2544183554E5215B350414439F569B8D2544196438B0418B350413D0AD75BB9D25441967FBEDA18B350410F7E47E9B7D2544131D7C46A1DB350415A4622E6AFD25441129493AB1DB350419ECE8294AFD25441C5DDE48E1EB35041F9DDAC74AED25441362D1CB41EB3504100208D45AED2544174E3E8BD1FB35041900AFDF4ACD25441F3C9A0C91FB35041287C26E6ACD254410C5C7B2820B350414F795A61ACD254418875B04223B350415B08AF5CA9D254410559EC6323B35041DE82AB35A9D25441313A4A0526B350419F2C321FA6D2544186154C8027B350410D738FF7A4D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>71977 - 2928848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+01060000000100000001030000000100000015000000713D0A77F1BD5041C3F5289C2D2E55413D0AD7E3ECBD5041AE47E15A2E2E5541EC51B8CEE8BD5041E17A143E2F2E5541A4703D4AE7BD5041295C8F922F2E55418FC2F578E7BD5041AE47E1BA302E554148E17A24DABD5041295C8F42342E5541295C8F62D3BD504166666606362E5541CDCCCC3CCDBD504152B81E95382E55419A9999B9CDBD5041C3F528DC392E554133333353C5BD5041C3F5288C3E2E5541B81E850BC4BD504152B81E953F2E554100000010C1BD5041D7A370FD422E5541713D0AF7BFBD5041295C8FA2442E554185EB5148C1BD5041B81E85CB472E55417B14AEE7C4BD5041F6285C7F502E5541AE47E13AC6BD504133333313512E554100000030D8BD5041EC51B87E4A2E554133333343EABD5041F6285CDF432E5541A4703D7AEBBD50410AD7A390422E55410AD7A330EFBD50411F85EB91352E5541713D0A77F1BD5041C3F5289C2D2E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000295C8F62D3BD504166666606362E554194335E5AD6BD5041C0FA942E352E55414A4CB1B5DDBD50417B82F045332E5541BBA7B85FE7BD5041887FF0B0302E55417C58505FE7BD5041AE7D91BD302E5541C4176C74E7BD50412172199E302E55416CC8E96DE7BD5041A0EED074302E55412C9E4598E7BD5041135BA768302E5541EC51B8CEE8BD5041E17A143E2F2E55413D0AD7E3ECBD5041AE47E15A2E2E5541713D0A77F1BD5041C3F5289C2D2E55416BE213F5F4BD504146244C6F212E554139326682E5BD504154A832CF272E55412B72A346E3BD504155DC57C9282E5541278624E7E0BD50415794B12E2A2E55418A5100CDC7BD5041273CB499392E55418A273553C5BD5041E214A5663B2E5541C94D7D37C3BD50419E0883C53D2E5541B8512C2BBFBD5041B138F9CB422E5541713D0AF7BFBD5041295C8FA2442E554100000010C1BD5041D7A370FD422E5541B81E850BC4BD504152B81E953F2E554133333353C5BD5041C3F5288C3E2E55419A9999B9CDBD5041C3F528DC392E5541CDCCCC3CCDBD504152B81E95382E5541295C8F62D3BD504166666606362E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>71977 - 3806749
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+01060000000100000001030000000100000015000000713D0A77F1BD5041C3F5289C2D2E55413D0AD7E3ECBD5041AE47E15A2E2E5541EC51B8CEE8BD5041E17A143E2F2E5541A4703D4AE7BD5041295C8F922F2E55418FC2F578E7BD5041AE47E1BA302E554148E17A24DABD5041295C8F42342E5541295C8F62D3BD504166666606362E5541CDCCCC3CCDBD504152B81E95382E55419A9999B9CDBD5041C3F528DC392E554133333353C5BD5041C3F5288C3E2E5541B81E850BC4BD504152B81E953F2E554100000010C1BD5041D7A370FD422E5541713D0AF7BFBD5041295C8FA2442E554185EB5148C1BD5041B81E85CB472E55417B14AEE7C4BD5041F6285C7F502E5541AE47E13AC6BD504133333313512E554100000030D8BD5041EC51B87E4A2E554133333343EABD5041F6285CDF432E5541A4703D7AEBBD50410AD7A390422E55410AD7A330EFBD50411F85EB91352E5541713D0A77F1BD5041C3F5289C2D2E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000295C8F62D3BD504166666606362E554194335E5AD6BD5041C0FA942E352E55414A4CB1B5DDBD50417B82F045332E5541BBA7B85FE7BD5041887FF0B0302E55417C58505FE7BD5041AE7D91BD302E5541C4176C74E7BD50412172199E302E55416CC8E96DE7BD5041A0EED074302E55412C9E4598E7BD5041135BA768302E5541EC51B8CEE8BD5041E17A143E2F2E55413D0AD7E3ECBD5041AE47E15A2E2E5541713D0A77F1BD5041C3F5289C2D2E55416BE213F5F4BD504146244C6F212E554139326682E5BD504154A832CF272E55412B72A346E3BD504155DC57C9282E5541278624E7E0BD50415794B12E2A2E55418A5100CDC7BD5041273CB499392E55418A273553C5BD5041E214A5663B2E5541C94D7D37C3BD50419E0883C53D2E5541B8512C2BBFBD5041B138F9CB422E5541713D0AF7BFBD5041295C8FA2442E554100000010C1BD5041D7A370FD422E5541B81E850BC4BD504152B81E953F2E554133333353C5BD5041C3F5288C3E2E55419A9999B9CDBD5041C3F528DC392E5541CDCCCC3CCDBD504152B81E95382E5541295C8F62D3BD504166666606362E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457557 - 3088512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -99  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F2256265141D7A3700D952A55415C8FC20552265141A4703D6A932A55417B14AE074C2651418FC2F5A88E2A5541A4703DBA4A2651411F85EB81902A5541CDCCCC0C46265141666666B6962A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A5541F6285CEF6126514148E17AC4972A554100000000602651419A9999E9972A5541333333F35E265141333333F3972A554185EB51885D26514148E17A04982A5541295C8F2256265141D7A3700D952A5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000713C164246265141A0D3D930972A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A554164CC50CB602651418870010E9A2A55411323721E5F265141322646DF982A554185EB51885D26514148E17A04982A5541295C8F2256265141D7A3700D952A5541472D0121522651412C911675932A5541276541AB4C2651415D7BC12A8F2A5541713C164246265141A0D3D930972A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457557 - 3433777
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -99  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F2256265141D7A3700D952A55415C8FC20552265141A4703D6A932A55417B14AE074C2651418FC2F5A88E2A5541A4703DBA4A2651411F85EB81902A5541CDCCCC0C46265141666666B6962A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A5541F6285CEF6126514148E17AC4972A554100000000602651419A9999E9972A5541333333F35E265141333333F3972A554185EB51885D26514148E17A04982A5541295C8F2256265141D7A3700D952A5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000713C164246265141A0D3D930972A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A554164CC50CB602651418870010E9A2A55411323721E5F265141322646DF982A554185EB51885D26514148E17A04982A5541295C8F2256265141D7A3700D952A5541472D0121522651412C911675932A5541276541AB4C2651415D7BC12A8F2A5541713C164246265141A0D3D930972A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466996 - 2979601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -39  </desc>
+<a>
+0106000000010000000103000000010000000F000000C3F528BCC89C5041CDCCCC7CE32A5541C3F5289CC79C50413D0AD7F3E42A5541666666F6BF9C504152B81EF5EE2A554114AE4781CC9C5041333333E3FB2A55419A999939D09C5041E17A148EFF2A5541B81E854BD49C504114AE4701032B554185EB51E8D79C50415C8FC2A5052B5541EC51B81EDC9C504114AE4771FE2A55410AD7A340D99C5041CDCCCC1CFB2A5541AE47E13AD79C5041E17A143EF82A5541D7A370FDD59C5041B81E850BF52A55418FC2F518D49C5041333333D3EF2A5541EC51B89ED19C504114AE4731EB2A5541295C8F02CF9C5041666666A6E82A5541C3F528BCC89C5041CDCCCC7CE32A5541
+</a>
+
+<b>
+010600000001000000010300000001000000110000002D5AD0B1C89C50411359C373E32A5541AEE513C9CA9C50414762F91FE52A554117B3CACFCA9C50414EA82D32E52A55416A313DC0CF9C5041506D2C5FE92A5541BC7B94D8D19C50416EE2779DEB2A55417305B532D69C5041E749E094F52A5541B029074AD79C5041B3559353F82A554143C48D71DA9C5041FEB6E47EFC2A55417B0EC50DDC9C50418F7E458EFE2A55419985D4BDE09C5041C81A9714F92A554115466CA2DF9C50416B6AD439F72A55418FE6BD84DF9C50419C1697BBF52A55417A2ACA9DDA9C5041C1E863F3EC2A55410A36C305DA9C50412BBABC93EB2A55417E696814D69C5041F07D9F46E72A5541DBCF74A2CC9C50414B66B368DE2A55412D5AD0B1C89C50411359C373E32A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470642 - 1094125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -20  </desc>
+<a>
+01060000000100000001030000000100000020000000F6285CCFCB345141E17A14AE3E6F5441E17A140ECC345141666666163D6F5441D7A3705DCF345141E17A148E3B6F544133333383D1345141713D0AA7396F544133333383D1345141E17A144E386F54419A999939D0345141295C8F72376F544152B81E25D2345141666666D62C6F5441B81E854BD4345141F6285CDF1F6F544114AE4771CB345141F6285C8F1E6F54411F85EB31C8345141333333D3406F5441333333A3C4345141E17A146E5B6F54413D0AD763C134514148E17A047A6F54418FC2F568C0345141EC51B8BE846F544100000000BF34514148E17AD4866F54411F85EB81BE3451413D0AD7138A6F544148E17A04BE345141B81E85FB8E6F54418FC2F528BD345141333333A3906F5441D7A3704DBC3451418FC2F5A8926F5441D7A3703DBC345141A4703DAA956F54410AD7A3A0BB34514166666666966F54417B14AED7BA345141295C8F829C6F54417B14AE37BE3451419A9999F9976F54411F85EB61C23451410AD7A3D08B6F54419A999969C63451419A9999E97F6F5441000000E0C83451413D0AD7037A6F544133333393CC34514152B81E05756F5441AE47E16ACE34514185EB51E8596F54411F85EB91CE34514148E17AB4536F5441EC51B81ECF345141A4703D5A4F6F54411F85EB91CE345141666666D6496F5441EC51B81ECF3451411F85EB21416F5441F6285CCFCB345141E17A14AE3E6F5441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000B6547D9ECC3451411F3151F2746F54416C6452D1CC3451415246FE72716F5441380D6E08CD345141AD3413486E6F54414CBCB4E8CD34514161A0D663616F5441FC62F25CCE34514128F958B55A6F5441F3456E91CE345141DFEE60C8536F5441C47ABF1CCF3451415290D8694F6F5441932F0597CE3451414D45AD85496F54416CF7AEB3CE345141133704C0476F544113B6B808CF345141EEDA9E11416F5441AC27A8CFCB345141438326AC3E6F5441E17A140ECC345141666666163D6F544126DFD470CF3451412F99E67C3B6F544133333383D1345141713D0AA7396F544133333383D1345141E17A144E386F54419A999939D0345141295C8F72376F5441D0E892DED2345141CB944421286F5441B81E854BD4345141F6285CDF1F6F54412C563490CB3451412E7DAE2E1E6F54413B22A060C83451418DA866E63E6F5441CBF30296C5345141F4A43256546F5441F4446BA3C43451415E29716C5B6F5441322E2F6DC134514196D377AC796F54418FC2F568C0345141EC51B8BE846F5441E166990ABF3451415882CEC4866F5441C2DC1603BE345141973E34FE8E6F54415E5F3059BC34514165B83F8D926F5441D7A3703DBC345141A4703DAA956F5441013465B7BB345141D7F6174B966F54417B14AED7BA345141295C8F829C6F54411022A41ABE345141E7A5D946986F54419A0EAB54C23451419F5D54F78B6F54419F749978C3345141CB4A9199886F5441CD221402C534514124DA6F0F846F5441C4C3299CC6345141A64F81707F6F5441C1498695C8345141E2F733B67A6F5441C1BF91B0CA3451413219F78F776F5441B6547D9ECC3451411F3151F2746F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470642 - 3815071
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -20  </desc>
+<a>
+01060000000100000001030000000100000020000000F6285CCFCB345141E17A14AE3E6F5441E17A140ECC345141666666163D6F5441D7A3705DCF345141E17A148E3B6F544133333383D1345141713D0AA7396F544133333383D1345141E17A144E386F54419A999939D0345141295C8F72376F544152B81E25D2345141666666D62C6F5441B81E854BD4345141F6285CDF1F6F544114AE4771CB345141F6285C8F1E6F54411F85EB31C8345141333333D3406F5441333333A3C4345141E17A146E5B6F54413D0AD763C134514148E17A047A6F54418FC2F568C0345141EC51B8BE846F544100000000BF34514148E17AD4866F54411F85EB81BE3451413D0AD7138A6F544148E17A04BE345141B81E85FB8E6F54418FC2F528BD345141333333A3906F5441D7A3704DBC3451418FC2F5A8926F5441D7A3703DBC345141A4703DAA956F54410AD7A3A0BB34514166666666966F54417B14AED7BA345141295C8F829C6F54417B14AE37BE3451419A9999F9976F54411F85EB61C23451410AD7A3D08B6F54419A999969C63451419A9999E97F6F5441000000E0C83451413D0AD7037A6F544133333393CC34514152B81E05756F5441AE47E16ACE34514185EB51E8596F54411F85EB91CE34514148E17AB4536F5441EC51B81ECF345141A4703D5A4F6F54411F85EB91CE345141666666D6496F5441EC51B81ECF3451411F85EB21416F5441F6285CCFCB345141E17A14AE3E6F5441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000B6547D9ECC3451411F3151F2746F54416C6452D1CC3451415246FE72716F5441380D6E08CD345141AD3413486E6F54414CBCB4E8CD34514161A0D663616F5441FC62F25CCE34514128F958B55A6F5441F3456E91CE345141DFEE60C8536F5441C47ABF1CCF3451415290D8694F6F5441932F0597CE3451414D45AD85496F54416CF7AEB3CE345141133704C0476F544113B6B808CF345141EEDA9E11416F5441AC27A8CFCB345141438326AC3E6F5441E17A140ECC345141666666163D6F544126DFD470CF3451412F99E67C3B6F544133333383D1345141713D0AA7396F544133333383D1345141E17A144E386F54419A999939D0345141295C8F72376F5441D0E892DED2345141CB944421286F5441B81E854BD4345141F6285CDF1F6F54412C563490CB3451412E7DAE2E1E6F54413B22A060C83451418DA866E63E6F5441CBF30296C5345141F4A43256546F5441F4446BA3C43451415E29716C5B6F5441322E2F6DC134514196D377AC796F54418FC2F568C0345141EC51B8BE846F5441E166990ABF3451415882CEC4866F5441C2DC1603BE345141973E34FE8E6F54415E5F3059BC34514165B83F8D926F5441D7A3703DBC345141A4703DAA956F5441013465B7BB345141D7F6174B966F54417B14AED7BA345141295C8F829C6F54411022A41ABE345141E7A5D946986F54419A0EAB54C23451419F5D54F78B6F54419F749978C3345141CB4A9199886F5441CD221402C534514124DA6F0F846F5441C4C3299CC6345141A64F81707F6F5441C1498695C8345141E2F733B67A6F5441C1BF91B0CA3451413219F78F776F5441B6547D9ECC3451411F3151F2746F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>480212 - 408910
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 10  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EBC1270A5141713D0A4739A554419A9999492C0A51418FC2F5F83AA55441A4703DAA330A5141713D0A6743A55441295C8FE2470A5141E17A14BE43A55441E17A148E470A51411F85EB2151A554415C8FC215510A51411F85EBB152A5544185EB5168520A5141295C8F7256A554418FC2F5D8540A5141D7A3709D56A554410AD7A3305A0A5141AE47E1AA55A55441333333535E0A51416666662655A55441F6285CEF5F0A5141AE47E1BA50A55441B81E857B620A5141CDCCCC3C4CA5544114AE4731650A51416666663648A55441295C8FB26B0A51419A9999D93FA55441F6285CDF6E0A5141C3F5285C3BA55441F6285C1F720A51410AD7A3F035A5544166666676750A5141A4703D4A30A554413D0AD743790A51413D0AD7832BA5544148E17AA4720A5141CDCCCC2C2EA5544114AE47A1640A514185EB51182DA5544133333353640A5141C3F528CC2BA554410AD7A370630A514114AE47A127A5544166666686610A5141AE47E1BA21A554411F85EB615E0A5141AE47E1EA1BA55441333333135C0A5141EC51B83E14A55441C3F5280C590A5141EC51B81E0AA554415C8FC2C5560A51411F85EB9107A5544166666626540A5141CDCCCC1C07A554413D0AD7B34F0A5141713D0A3700A55441295C8F024C0A51417B14AE77FCA45441EC51B8BE480A5141E17A147EF8A45441CDCCCC2C440A5141C3F5280CF2A45441713D0AC7430A514185EB5118F8A4544100000070430A5141AE47E11AFBA454415C8FC295420A5141EC51B86EFDA454410AD7A3103F0A514148E17AE403A5544152B81E853D0A5141EC51B80E06A55441F6285C4F3B0A514185EB518808A55441A4703DDA390A5141AE47E16A09A55441C3F5282C380A5141AE47E12A0AA554417B14AEA7350A514114AE47110CA554415C8FC2552F0A5141295C8F6212A55441B81E859B2A0A5141E17A148E17A554415C8FC2E5260A514148E17A041CA55441295C8FC2230A51418FC2F55820A5544185EB5158220A5141A4703D9A22A554418FC2F548210A5141AE47E1DA24A55441B81E855B200A5141C3F528DC27A55441333333331C0A514185EB51B837A5544114AE47E11D0A51411F85EB1138A55441AE47E16A240A5141000000C02EA55441B81E85BB2F0A5141713D0AC720A55441CDCCCCEC2E0A51410AD7A31020A55441295C8F122B0A5141333333B31CA5544133333343430A5141713D0A470AA55441AE47E18A450A5141F6285C2F0CA554411F85EBE14D0A5141000000A010A55441A4703D3A4B0A51417B14AE6713A55441A4703DFA4A0A51419A99997916A55441666666A6490A5141295C8F6218A55441666666D6470A51411F85EBF119A55441F6285C2F420A514152B81EE51EA55441713D0A873F0A514148E17A6420A55441713D0A973A0A514185EB51B821A55441A4703D7A370A51410AD7A3E023A5544166666656360A514185EB519826A554418FC2F5D8350A51419A99992926A5544185EB5158340A5141CDCCCCEC2BA554418FC2F5882F0A51417B14AEE734A554410AD7A3702B0A51416666668636A554411F85EBC1270A5141713D0A4739A55441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B81E855B200A5141C3F528DC27A55441940841AE1C0A5141DCF5E4E235A554418FC2F5181E0A514148E17A8434A55441295C8F12210A51417B14AE1732A55441B81E852B230A514114AE471130A554410AD7A3A0230A5141CDCCCC6C2FA554411F85EB71250A51415C8FC2452BA5544152B81ED5260A5141295C8FA226A5544100000060280A514185EB51F820A554415C8FC265290A5141EC51B8EE1DA55441B81E85DB2A0A5141B81E855B1AA5544148E17A842C0A5141B81E857B16A55441DC8CCEDF2D0A5141E30184FB13A55441B81E859B2A0A5141E17A148E17A554415C8FC2E5260A514148E17A041CA55441295C8FC2230A51418FC2F55820A5544185EB5158220A5141A4703D9A22A554418FC2F548210A5141AE47E1DA24A55441B81E855B200A5141C3F528DC27A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487482 - 180588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000020000002B000000B81E851B3EBF504114AE476143FF544148E17A343CBF50416666668647FF5441B81E850B48BF5041D7A3708D4FFF5441AE47E1DA4DBF5041CDCCCC3C53FF5441333333334DBF5041000000104EFF5441333333134CBF50413333333345FF5441666666864BBF5041713D0AD740FF5441713D0A9778BF5041EC51B88E59FF5441E17A142E75BF5041B81E851B51FF5441F6285C8F73BF50417B14AEF747FF544148E17A8474BF50417B14AEF73BFF5441F6285CBF75BF504185EB514823FF5441AE47E1FA76BF5041F6285C0F08FF5441F6285CAF78BF504166666676E2FE5441D7A3707D79BF504166666636D4FE5441295C8F321BBF5041295C8FB29BFE54416666667619BF504148E17AE49AFE544114AE47610EBF5041EC51B89EA8FE54410AD7A3100ABF50415C8FC245B0FE5441A4703D1A08BF5041D7A3702DB3FE5441A4703DAA06BF5041A4703D3AB7FE5441295C8FD205BF50419A999999B9FE5441F6285C0F05BF5041AE47E1EABBFE5441CDCCCC4C05BF504148E17A64C1FE5441D7A3709D09BF504114AE4791C7FE54410AD7A3E013BF50410AD7A320CEFE54410000007015BF5041B81E85EBD3FE5441713D0AF714BF50411F85EB61D9FE54416666668614BF5041F6285CEFDAFE5441295C8F1213BF5041B81E850BE0FE544185EB51F80EBF50418FC2F508EDFE54413D0AD7D30BBF50417B14AE17F6FE544152B81E1509BF50410AD7A3B0FCFE5441C3F5285C04BF5041EC51B84E08FF5441EC51B8DEFFBE5041AE47E1BA14FF5441CDCCCCFC05BF5041295C8FA21AFF54417B14AE0714BF5041F6285C4F23FF5441295C8F021EBF5041C3F5289C26FF5441000000C025BF50410AD7A31029FF5441000000002ABF504114AE47412EFF5441B81E850B32BF50413D0AD75339FF54418FC2F5A83EBF50410000003042FF5441B81E851B3EBF504114AE476143FF5441050000005C8FC2E54ABF504148E17AE43BFF5441666666F642BF5041000000E037FF5441E17A146E45BF5041713D0A7733FF54419A9999B94CBF50417B14AEA736FF54415C8FC2E54ABF504148E17AE43BFF5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008777CC7C11BF5041514E512898FE54410B14EBD10EBF50410878713D93FE544179963DDF0DBF504155F28DDC8FFE5441713D0A970CBF5041AE47E14A8BFE5441BB6C0AB70ABF504148A79A9980FE54416C74714DFFBE5041900172AD82FE544111DCF5A8F9BE50419AF9B8AE82FE5441DB5AF3BEF9BE50411F86453F83FE5441C2F6F6D8F9BE504155FF3DEA83FE544118119B3CF6BE5041C62B63E083FE5441000000B0F4BE5041C3F528DC83FE5441333333F3F7BE5041000000A08CFE544152B81EA5F8BE5041EC51B87E8EFE5441E17A140EFBBE5041A4703DBA96FE5441E38D6B34FABE5041BC278A899AFE54411EB600C0F9BE5041A33C33939CFE544122C18C4BF9BE504122ADD2789DFE5441A7FD21FE0DBF504132388D4EA9FE544126A246610EBF5041E2FCB69EA8FE544175EF6F4518BF504170FF395E9CFE5441A9BC657619BF504188B37BE49AFE5441275CB8FE16BF5041456F0AC798FE5441737910A115BF5041018EAD9F98FE54418777CC7C11BF5041514E512898FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487482 - 387460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000020000002B000000B81E851B3EBF504114AE476143FF544148E17A343CBF50416666668647FF5441B81E850B48BF5041D7A3708D4FFF5441AE47E1DA4DBF5041CDCCCC3C53FF5441333333334DBF5041000000104EFF5441333333134CBF50413333333345FF5441666666864BBF5041713D0AD740FF5441713D0A9778BF5041EC51B88E59FF5441E17A142E75BF5041B81E851B51FF5441F6285C8F73BF50417B14AEF747FF544148E17A8474BF50417B14AEF73BFF5441F6285CBF75BF504185EB514823FF5441AE47E1FA76BF5041F6285C0F08FF5441F6285CAF78BF504166666676E2FE5441D7A3707D79BF504166666636D4FE5441295C8F321BBF5041295C8FB29BFE54416666667619BF504148E17AE49AFE544114AE47610EBF5041EC51B89EA8FE54410AD7A3100ABF50415C8FC245B0FE5441A4703D1A08BF5041D7A3702DB3FE5441A4703DAA06BF5041A4703D3AB7FE5441295C8FD205BF50419A999999B9FE5441F6285C0F05BF5041AE47E1EABBFE5441CDCCCC4C05BF504148E17A64C1FE5441D7A3709D09BF504114AE4791C7FE54410AD7A3E013BF50410AD7A320CEFE54410000007015BF5041B81E85EBD3FE5441713D0AF714BF50411F85EB61D9FE54416666668614BF5041F6285CEFDAFE5441295C8F1213BF5041B81E850BE0FE544185EB51F80EBF50418FC2F508EDFE54413D0AD7D30BBF50417B14AE17F6FE544152B81E1509BF50410AD7A3B0FCFE5441C3F5285C04BF5041EC51B84E08FF5441EC51B8DEFFBE5041AE47E1BA14FF5441CDCCCCFC05BF5041295C8FA21AFF54417B14AE0714BF5041F6285C4F23FF5441295C8F021EBF5041C3F5289C26FF5441000000C025BF50410AD7A31029FF5441000000002ABF504114AE47412EFF5441B81E850B32BF50413D0AD75339FF54418FC2F5A83EBF50410000003042FF5441B81E851B3EBF504114AE476143FF5441050000005C8FC2E54ABF504148E17AE43BFF5441666666F642BF5041000000E037FF5441E17A146E45BF5041713D0A7733FF54419A9999B94CBF50417B14AEA736FF54415C8FC2E54ABF504148E17AE43BFF5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008777CC7C11BF5041514E512898FE54410B14EBD10EBF50410878713D93FE544179963DDF0DBF504155F28DDC8FFE5441713D0A970CBF5041AE47E14A8BFE5441BB6C0AB70ABF504148A79A9980FE54416C74714DFFBE5041900172AD82FE544111DCF5A8F9BE50419AF9B8AE82FE5441DB5AF3BEF9BE50411F86453F83FE5441C2F6F6D8F9BE504155FF3DEA83FE544118119B3CF6BE5041C62B63E083FE5441000000B0F4BE5041C3F528DC83FE5441333333F3F7BE5041000000A08CFE544152B81EA5F8BE5041EC51B87E8EFE5441E17A140EFBBE5041A4703DBA96FE5441E38D6B34FABE5041BC278A899AFE54411EB600C0F9BE5041A33C33939CFE544122C18C4BF9BE504122ADD2789DFE5441A7FD21FE0DBF504132388D4EA9FE544126A246610EBF5041E2FCB69EA8FE544175EF6F4518BF504170FF395E9CFE5441A9BC657619BF504188B37BE49AFE5441275CB8FE16BF5041456F0AC798FE5441737910A115BF5041018EAD9F98FE54418777CC7C11BF5041514E512898FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489246 - 3038533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000002000000200000000AD7A340652E51417B14AEC7EC2255419A999999652E514185EB51D8ED225541EC51B84E672E5141CDCCCC6CF3225541A4703D1A6F2E514133333373EE225541D7A370DD762E5141C3F5283CE92255418FC2F508802E5141E17A146EE3225541A4703DAA862E5141F6285C9FE42255413D0AD713872E51410AD7A340DD22554185EB51587F2E5141D7A3701DE122554185EB51387E2E5141EC51B8EEDE225541AE47E1AA7D2E51415C8FC205DD225541666666667D2E514152B81E05DC2255410AD7A3F07C2E514100000060D9225541333333637B2E51415C8FC2F5CF225541F6285CFF792E51411F85EBD1C222554114AE4781792E51418FC2F508BE2255417B14AEE7782E51415C8FC205B822554100000030792E5141333333D3B222554185EB5168762E51411F85EB31AF2255411F85EB616F2E5141F6285CCFA3225541EC51B86E6D2E5141000000F0AA22554185EB51C86A2E5141CDCCCC1CB52255417B14AE37692E5141713D0A87BB22554114AE4701692E5141C3F5287CBE2255418FC2F518692E51415C8FC245C22255413D0AD7736C2E5141D7A3705DC3225541E17A142E6C2E514166666606C4225541B81E857B692E5141333333F3D1225541C3F528BC672E514114AE4751E12255419A999909672E5141E17A140EE82255413D0AD7A3662E51413D0AD753EB2255410AD7A340652E51417B14AEC7EC2255410E0000000AD7A3A0722E5141EC51B8EEC5225541713D0A77742E5141E17A146EBB22554114AE47F1742E5141E17A140EC6225541713D0A57762E5141E17A142ECE2255417B14AE77782E51415C8FC225DB225541A4703D9A7A2E514152B81ED5E22255413D0AD703762E5141C3F528ECE422554100000080712E514114AE47A1E52255419A9999E96F2E51413D0AD7D3DD225541333333A36F2E51418FC2F5B8D9225541AE47E10A702E514166666606D52255415C8FC235712E51415C8FC2E5CD22554133333343722E5141A4703D5AC72255410AD7A3A0722E5141EC51B8EEC5225541
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000369243C66F2E5141CEEF4222D82255414023FDF66F2E5141CFF61CEDD5225541AE47E10A702E514166666606D52255418E71B642702E514126B58BB1D322554175867985702E51415CEFF719D22255419212B75E712E5141145514E7CC22554133333343722E5141A4703D5AC72255413082EF88722E5141899FF04AC622554120FB04D9722E514186C32F7FC0225541D9CEF76B732E5141FA7E6AA4B92255413F355E72742E5141BA490CBAAF22554110583944722E51415A643B37AA22554154E3A5C36F2E5141B0726819A622554150FB45036F2E51419A3A4E29A5225541D779C7EF6C2E5141479E67D7AC225541F9031D876C2E5141353C4869AE225541B6DFFA5E6C2E5141E00F6103AF2255411C066A4E6C2E51416453FC42AF2255416A077B41692E51413AF4DD5EBB2255417B14AE37692E5141713D0A87BB22554114AE4701692E5141C3F5287CBE22554199E07B0D692E5141E52CDC6FC02255418FC2F518692E51415C8FC245C22255410631A5146C2E5141F800713EC32255413D0AD7736C2E5141D7A3705DC3225541E17A142E6C2E514166666606C42255418869A7B2692E5141C69496D6D0225541B81E857B692E5141333333F3D1225541FE264B0A692E5141118DE9D6D5225541FF8C99FF682E5141D8FEF334D6225541DA7E83E4682E514197042623D72255415D6AC1D6682E5141D728239CD7225541C3C997BC682E514173093682D8225541B8D8BDAC682E51414E8A9B0DD92255418221F99F682E51410E99E47DD92255414428A780682E5141BC965291DA225541789EF176682E51411764B4E6DA225541E6AD4A65682E514184E8EF81DB22554123061939682E514196189406DD22554137A89D18682E51416E5C3924DE225541656A51FE672E514188A27C0BDF2255415262E4D1672E514103FA2A92E022554162E65EAF672E51411B75D1CCE1225541FA749BA4672E51416EA7C934E222554122F4352D672E5141101419B6E6225541AE9ED826672E514115A093F3E62255419A999909672E5141E17A140EE82255413D0AD7A3662E51413D0AD753EB22554149DD2F4D662E51416C6D8DAEEB225541972DB48E652E5141E93C06ECEC225541D7A370B5652E51417B14AE77EE225541F853E3D5652E51415839B408EF225541EC51B84E672E5141CDCCCC6CF3225541A4703D1A6F2E514133333373EE225541D7A370DD762E5141C3F5283CE9225541DAD6238D7E2E5141EBAF855EE4225541C46A24FC7F2E5141B8A5A56FE3225541D2AE06F5802E5141AEAF1194E32255414C3083CE822E5141298B850EE3225541690BCCEF852E5141F6691D95E22255417D4A78D6862E5141BB5994B1DE2255416DBECA58822E514187A2939DDF2255414B32D2A9802E51412967DA74E022554185EB51587F2E5141D7A3701DE1225541CB98C8797E2E51413127B86DDF2255414174A0457E2E514107FF8808DF22554185EB51387E2E5141EC51B8EEDE22554147D30F367E2E5141BDD6E9E6DE225541AE47E1AA7D2E51415C8FC205DD225541666666667D2E514152B81E05DC2255410AD7A3F07C2E514100000060D9225541179E119C7C2E51413F20205FD72255414B4D5DF37B2E514150600860D3225541DE94E96D7B2E5141F77DB936D0225541333333637B2E51415C8FC2F5CF225541CBA25E767A2E51418D59F236C7225541F6285CFF792E51411F85EBD1C2225541E892E4AF792E5141609BD6CDBF225541796120A9792E51417413198CBF22554114AE4781792E51418FC2F508BE2255417B14AEE7782E51415C8FC205B82255419F34A1EE782E51417DCCE585B7225541681FC326792E5141206E16C3B2225541231CEBA4782E51413DE49DE0B1225541C141AD61782E5141E4D8556BB1225541CB7E48EC772E51412172949EB0225541C28BEBCA762E5141DCF8E0A5AE225541E5D02243752E51413BDF4F0DB4225541EF24D099742E51416F80D373BE2255411E770FBB742E514104899F57C122554156AF31DA742E51418D5A630CC4225541D675E105752E51414EFED985C6225541713D0A57762E5141E17A142ECE225541EB64079A762E5141CBB263C6CF2255417993EEDE762E51417DB95D6AD12255417B14AE77782E51415C8FC225DB22554187A9E279792E51413207E868DE225541A4703D9A7A2E514152B81ED5E22255413D0AD703762E5141C3F528ECE422554169994D4D742E514130F1E030E5225541380D4DD1732E5141E7C8EB46E522554100000080712E514114AE47A1E52255419A9999E96F2E51413D0AD7D3DD225541BF612DD76F2E5141D5C3D6C0DC2255417BDD82D16F2E5141D581426CDC225541333333A36F2E51418FC2F5B8D9225541369243C66F2E5141CEEF4222D8225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489246 - 3274697
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000002000000200000000AD7A340652E51417B14AEC7EC2255419A999999652E514185EB51D8ED225541EC51B84E672E5141CDCCCC6CF3225541A4703D1A6F2E514133333373EE225541D7A370DD762E5141C3F5283CE92255418FC2F508802E5141E17A146EE3225541A4703DAA862E5141F6285C9FE42255413D0AD713872E51410AD7A340DD22554185EB51587F2E5141D7A3701DE122554185EB51387E2E5141EC51B8EEDE225541AE47E1AA7D2E51415C8FC205DD225541666666667D2E514152B81E05DC2255410AD7A3F07C2E514100000060D9225541333333637B2E51415C8FC2F5CF225541F6285CFF792E51411F85EBD1C222554114AE4781792E51418FC2F508BE2255417B14AEE7782E51415C8FC205B822554100000030792E5141333333D3B222554185EB5168762E51411F85EB31AF2255411F85EB616F2E5141F6285CCFA3225541EC51B86E6D2E5141000000F0AA22554185EB51C86A2E5141CDCCCC1CB52255417B14AE37692E5141713D0A87BB22554114AE4701692E5141C3F5287CBE2255418FC2F518692E51415C8FC245C22255413D0AD7736C2E5141D7A3705DC3225541E17A142E6C2E514166666606C4225541B81E857B692E5141333333F3D1225541C3F528BC672E514114AE4751E12255419A999909672E5141E17A140EE82255413D0AD7A3662E51413D0AD753EB2255410AD7A340652E51417B14AEC7EC2255410E0000000AD7A3A0722E5141EC51B8EEC5225541713D0A77742E5141E17A146EBB22554114AE47F1742E5141E17A140EC6225541713D0A57762E5141E17A142ECE2255417B14AE77782E51415C8FC225DB225541A4703D9A7A2E514152B81ED5E22255413D0AD703762E5141C3F528ECE422554100000080712E514114AE47A1E52255419A9999E96F2E51413D0AD7D3DD225541333333A36F2E51418FC2F5B8D9225541AE47E10A702E514166666606D52255415C8FC235712E51415C8FC2E5CD22554133333343722E5141A4703D5AC72255410AD7A3A0722E5141EC51B8EEC5225541
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000369243C66F2E5141CEEF4222D82255414023FDF66F2E5141CFF61CEDD5225541AE47E10A702E514166666606D52255418E71B642702E514126B58BB1D322554175867985702E51415CEFF719D22255419212B75E712E5141145514E7CC22554133333343722E5141A4703D5AC72255413082EF88722E5141899FF04AC622554120FB04D9722E514186C32F7FC0225541D9CEF76B732E5141FA7E6AA4B92255413F355E72742E5141BA490CBAAF22554110583944722E51415A643B37AA22554154E3A5C36F2E5141B0726819A622554150FB45036F2E51419A3A4E29A5225541D779C7EF6C2E5141479E67D7AC225541F9031D876C2E5141353C4869AE225541B6DFFA5E6C2E5141E00F6103AF2255411C066A4E6C2E51416453FC42AF2255416A077B41692E51413AF4DD5EBB2255417B14AE37692E5141713D0A87BB22554114AE4701692E5141C3F5287CBE22554199E07B0D692E5141E52CDC6FC02255418FC2F518692E51415C8FC245C22255410631A5146C2E5141F800713EC32255413D0AD7736C2E5141D7A3705DC3225541E17A142E6C2E514166666606C42255418869A7B2692E5141C69496D6D0225541B81E857B692E5141333333F3D1225541FE264B0A692E5141118DE9D6D5225541FF8C99FF682E5141D8FEF334D6225541DA7E83E4682E514197042623D72255415D6AC1D6682E5141D728239CD7225541C3C997BC682E514173093682D8225541B8D8BDAC682E51414E8A9B0DD92255418221F99F682E51410E99E47DD92255414428A780682E5141BC965291DA225541789EF176682E51411764B4E6DA225541E6AD4A65682E514184E8EF81DB22554123061939682E514196189406DD22554137A89D18682E51416E5C3924DE225541656A51FE672E514188A27C0BDF2255415262E4D1672E514103FA2A92E022554162E65EAF672E51411B75D1CCE1225541FA749BA4672E51416EA7C934E222554122F4352D672E5141101419B6E6225541AE9ED826672E514115A093F3E62255419A999909672E5141E17A140EE82255413D0AD7A3662E51413D0AD753EB22554149DD2F4D662E51416C6D8DAEEB225541972DB48E652E5141E93C06ECEC225541D7A370B5652E51417B14AE77EE225541F853E3D5652E51415839B408EF225541EC51B84E672E5141CDCCCC6CF3225541A4703D1A6F2E514133333373EE225541D7A370DD762E5141C3F5283CE9225541DAD6238D7E2E5141EBAF855EE4225541C46A24FC7F2E5141B8A5A56FE3225541D2AE06F5802E5141AEAF1194E32255414C3083CE822E5141298B850EE3225541690BCCEF852E5141F6691D95E22255417D4A78D6862E5141BB5994B1DE2255416DBECA58822E514187A2939DDF2255414B32D2A9802E51412967DA74E022554185EB51587F2E5141D7A3701DE1225541CB98C8797E2E51413127B86DDF2255414174A0457E2E514107FF8808DF22554185EB51387E2E5141EC51B8EEDE22554147D30F367E2E5141BDD6E9E6DE225541AE47E1AA7D2E51415C8FC205DD225541666666667D2E514152B81E05DC2255410AD7A3F07C2E514100000060D9225541179E119C7C2E51413F20205FD72255414B4D5DF37B2E514150600860D3225541DE94E96D7B2E5141F77DB936D0225541333333637B2E51415C8FC2F5CF225541CBA25E767A2E51418D59F236C7225541F6285CFF792E51411F85EBD1C2225541E892E4AF792E5141609BD6CDBF225541796120A9792E51417413198CBF22554114AE4781792E51418FC2F508BE2255417B14AEE7782E51415C8FC205B82255419F34A1EE782E51417DCCE585B7225541681FC326792E5141206E16C3B2225541231CEBA4782E51413DE49DE0B1225541C141AD61782E5141E4D8556BB1225541CB7E48EC772E51412172949EB0225541C28BEBCA762E5141DCF8E0A5AE225541E5D02243752E51413BDF4F0DB4225541EF24D099742E51416F80D373BE2255411E770FBB742E514104899F57C122554156AF31DA742E51418D5A630CC4225541D675E105752E51414EFED985C6225541713D0A57762E5141E17A142ECE225541EB64079A762E5141CBB263C6CF2255417993EEDE762E51417DB95D6AD12255417B14AE77782E51415C8FC225DB22554187A9E279792E51413207E868DE225541A4703D9A7A2E514152B81ED5E22255413D0AD703762E5141C3F528ECE422554169994D4D742E514130F1E030E5225541380D4DD1732E5141E7C8EB46E522554100000080712E514114AE47A1E52255419A9999E96F2E51413D0AD7D3DD225541BF612DD76F2E5141D5C3D6C0DC2255417BDD82D16F2E5141D581426CDC225541333333A36F2E51418FC2F5B8D9225541369243C66F2E5141CEEF4222D8225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 1367982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF5441E17A149E153E51411F85EB4185DF5441EC51B8CE1A3E514114AE477180DF5441F6285CDF1E3E51410AD7A3207CDF5441F6285C2F203E51410AD7A3E079DF5441F6285CAF203E51410AD7A37078DF5441F6285CAF203E5141000000B076DF5441F6285C3F213E51410000002073DF5441F6285C8F213E5141F6285C7F70DF5441F6285C4F223E5141F6285CDF6DDF5441CDCCCC4C263E5141713D0AF763DF54411F85EBA1173E51410AD7A3505BDF5441B81E854B0B3E5141CDCCCC3C53DF544152B81EF5163E5141AE47E19A44DF5441C3F528CC153E514152B81E2542DF5441A4703DEA133E51411F85EB513FDF544148E17A74113E514148E17AA43CDF5441000000D00B3E5141F6285CAF35DF5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF54418C17E9CF0B3E51418502B36F8EDF544129F0F69C153E5141DA2FCEA885DF54410AF9F1901A3E514188C0A24A81DF5441F6285CDF1E3E51410AD7A3207CDF5441B34FF51C203E51417C920ED179DF54416F82EBCA203E5141C0F39DE476DF54417E704589213E514107E6644974DF5441F39BBFC5213E51411BD0424E73DF54415A5BC801223E5141E58D2BD071DF5441379F0637223E5141B3E8007270DF5441F6F740E3223E5141C73A09656EDF54419553A01D233E514199CB33BE6DDF544139C2FD3D233E5141D7BEC9406DDF5441A91739AB233E5141663351B46BDF54419E7C9DB1243E5141B1C00BF467DF544157CC84D9253E5141910B99D563DF5441F8C74F05213E514156FC71AA60DF544146D027C0173E51410526D7895ADF54414C3B88420D3E5141AC6CC94553DF544152958A54103E5141D2E986684FDF5441C6DDF7AF103E51411B60C5004FDF5441FB86D06D183E5141DCCEFF5B45DF5441B235C424163E51417C0AAAF641DF54410B68F21B143E514193D927FA3EDF544107012FBB113E51417891E85C3CDF5441000000D00B3E5141F6285CAF35DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 1367993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF5441E17A149E153E51411F85EB4185DF5441EC51B8CE1A3E514114AE477180DF5441F6285CDF1E3E51410AD7A3207CDF5441F6285C2F203E51410AD7A3E079DF5441F6285CAF203E51410AD7A37078DF5441F6285CAF203E5141000000B076DF5441F6285C3F213E51410000002073DF5441F6285C8F213E5141F6285C7F70DF5441F6285C4F223E5141F6285CDF6DDF5441CDCCCC4C263E5141713D0AF763DF54411F85EBA1173E51410AD7A3505BDF5441B81E854B0B3E5141CDCCCC3C53DF544152B81EF5163E5141AE47E19A44DF5441C3F528CC153E514152B81E2542DF5441A4703DEA133E51411F85EB513FDF544148E17A74113E514148E17AA43CDF5441000000D00B3E5141F6285CAF35DF5441
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544107012FBB113E51417891E85C3CDF54410B68F21B143E514193D927FA3EDF5441B235C424163E51417C0AAAF641DF5441FB86D06D183E5141DCCEFF5B45DF54414C3B88420D3E5141AC6CC94553DF544146D027C0173E51410526D7895ADF5441F8C74F05213E514156FC71AA60DF544157CC84D9253E5141910B99D563DF54419E7C9DB1243E5141B1C00BF467DF5441A91739AB233E5141663351B46BDF544139C2FD3D233E5141D7BEC9406DDF54419553A01D233E514199CB33BE6DDF5441F6F740E3223E5141C73A09656EDF5441379F0637223E5141B3E8007270DF54415A5BC801223E5141E58D2BD071DF5441F39BBFC5213E51411BD0424E73DF54417E704589213E514107E6644974DF54416F82EBCA203E5141C0F39DE476DF5441B34FF51C203E51417C920ED179DF5441F6285CDF1E3E51410AD7A3207CDF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 3650447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF5441E17A149E153E51411F85EB4185DF5441EC51B8CE1A3E514114AE477180DF5441F6285CDF1E3E51410AD7A3207CDF5441F6285C2F203E51410AD7A3E079DF5441F6285CAF203E51410AD7A37078DF5441F6285CAF203E5141000000B076DF5441F6285C3F213E51410000002073DF5441F6285C8F213E5141F6285C7F70DF5441F6285C4F223E5141F6285CDF6DDF5441CDCCCC4C263E5141713D0AF763DF54411F85EBA1173E51410AD7A3505BDF5441B81E854B0B3E5141CDCCCC3C53DF544152B81EF5163E5141AE47E19A44DF5441C3F528CC153E514152B81E2542DF5441A4703DEA133E51411F85EB513FDF544148E17A74113E514148E17AA43CDF5441000000D00B3E5141F6285CAF35DF5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF54418C17E9CF0B3E51418502B36F8EDF544129F0F69C153E5141DA2FCEA885DF54410AF9F1901A3E514188C0A24A81DF5441F6285CDF1E3E51410AD7A3207CDF5441B34FF51C203E51417C920ED179DF54416F82EBCA203E5141C0F39DE476DF54417E704589213E514107E6644974DF5441F39BBFC5213E51411BD0424E73DF54415A5BC801223E5141E58D2BD071DF5441379F0637223E5141B3E8007270DF5441F6F740E3223E5141C73A09656EDF54419553A01D233E514199CB33BE6DDF544139C2FD3D233E5141D7BEC9406DDF5441A91739AB233E5141663351B46BDF54419E7C9DB1243E5141B1C00BF467DF544157CC84D9253E5141910B99D563DF5441F8C74F05213E514156FC71AA60DF544146D027C0173E51410526D7895ADF54414C3B88420D3E5141AC6CC94553DF544152958A54103E5141D2E986684FDF5441C6DDF7AF103E51411B60C5004FDF5441FB86D06D183E5141DCCEFF5B45DF5441B235C424163E51417C0AAAF641DF54410B68F21B143E514193D927FA3EDF544107012FBB113E51417891E85C3CDF5441000000D00B3E5141F6285CAF35DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 3653884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF5441E17A149E153E51411F85EB4185DF5441EC51B8CE1A3E514114AE477180DF5441F6285CDF1E3E51410AD7A3207CDF5441F6285C2F203E51410AD7A3E079DF5441F6285CAF203E51410AD7A37078DF5441F6285CAF203E5141000000B076DF5441F6285C3F213E51410000002073DF5441F6285C8F213E5141F6285C7F70DF5441F6285C4F223E5141F6285CDF6DDF5441CDCCCC4C263E5141713D0AF763DF54411F85EBA1173E51410AD7A3505BDF5441B81E854B0B3E5141CDCCCC3C53DF544152B81EF5163E5141AE47E19A44DF5441C3F528CC153E514152B81E2542DF5441A4703DEA133E51411F85EB513FDF544148E17A74113E514148E17AA43CDF5441000000D00B3E5141F6285CAF35DF5441
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544107012FBB113E51417891E85C3CDF54410B68F21B143E514193D927FA3EDF5441B235C424163E51417C0AAAF641DF5441FB86D06D183E5141DCCEFF5B45DF54414C3B88420D3E5141AC6CC94553DF544146D027C0173E51410526D7895ADF5441F8C74F05213E514156FC71AA60DF544157CC84D9253E5141910B99D563DF54419E7C9DB1243E5141B1C00BF467DF5441A91739AB233E5141663351B46BDF544139C2FD3D233E5141D7BEC9406DDF54419553A01D233E514199CB33BE6DDF5441F6F740E3223E5141C73A09656EDF5441379F0637223E5141B3E8007270DF54415A5BC801223E5141E58D2BD071DF5441F39BBFC5213E51411BD0424E73DF54417E704589213E514107E6644974DF54416F82EBCA203E5141C0F39DE476DF5441B34FF51C203E51417C920ED179DF5441F6285CDF1E3E51410AD7A3207CDF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494347 - 1378349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -89  </desc>
+<a>
+0106000000010000000103000000010000001C0000003D0AD7F3354C5141C3F528AC2EE35441333333B33B4C51410000001031E354417B14AE47444C5141F6285C9F31E354415C8FC215454C5141000000702DE3544166666646454C514185EB511829E35441EC51B87E494C51411F85EB5129E3544148E17A444D4C514152B81E8529E354411F85EB61554C5141EC51B83E2BE3544133333393534C5141295C8F9226E3544166666606534C51410AD7A30024E354418FC2F528534C51417B14AE371FE3544152B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441F6285C7F4E4C5141B81E85EB12E35441D7A3706D4B4C514185EB514811E35441713D0A774A4C5141713D0A8710E3544152B81E054A4C51411F85EBC110E35441C3F5287C454C5141E17A140E13E354411F85EBB1444C5141D7A3705D1BE35441B81E855B444C514185EB51681EE354413D0AD773194C51418FC2F59817E354419A9999A91C4C51410AD7A3F021E3544152B81EF51D4C514148E17A7429E35441C3F528FC1E4C5141F6285C4F2BE35441D7A3700D214C51411F85EB512BE35441D7A3709D284C51419A9999F92BE354413D0AD7F3354C5141C3F528AC2EE35441
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000052B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441F6285C7F4E4C5141B81E85EB12E35441D7A3706D4B4C514185EB514811E35441713D0A774A4C5141713D0A8710E3544152B81E054A4C51411F85EBC110E35441C3F5287C454C5141E17A140E13E354411F85EBB1444C5141D7A3705D1BE35441B81E855B444C514185EB51681EE354413D0AD773194C51418FC2F59817E3544169EE81F1194C5141116DFD5D1BE35441F6E20BA81C4C5141F05A5B5C22E354411347F4321D4C5141E63C806F25E354418E6331061D4C5141D82528E326E35441082325991D4C5141AA9E621C29E3544152B81EF51D4C514148E17A7429E35441C3F528FC1E4C5141F6285C4F2BE35441D7A3700D214C51411F85EB512BE35441D7A3709D284C51419A9999F92BE354413D0AD7F3354C5141C3F528AC2EE35441333333B33B4C51410000001031E354417B14AE47444C5141F6285C9F31E354415C8FC215454C5141000000702DE3544166666646454C514185EB511829E354415C8D3A47454C51413F3B5D1829E35441674FD94D454C5141F939341629E35441506C617E454C5141CC034E1B29E35441791E718F464C51418D1BDD2929E354411F3EDDC8474C51419819933A29E3544198E5E565484C5141EF7FF24229E3544142A561344C4C51412BD3B17629E354410629AFFE4C4C514161756B8129E35441B175A13F4D4C5141E2E7DC8429E3544148E17A444D4C514152B81E8529E35441EB6E299E4E4C514159F299CE29E35441AE364E594F4C514122E261F629E354414AE5BD7F504C5141C670F8342AE35441A5624615524C514103A42C8B2AE354415D742CD2544C5141C0F729202BE35441CECEC9D4544C51417240B8202BE35441CDCCCCEC524C514114AE47A126E35441333333A3524C51411F85EB911FE35441F0516DA4524C5141DEE8602E1FE3544152B81ED5514C514114AE47211FE35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494347 - 3341642
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -89  </desc>
+<a>
+0106000000010000000103000000010000001C0000003D0AD7F3354C5141C3F528AC2EE35441333333B33B4C51410000001031E354417B14AE47444C5141F6285C9F31E354415C8FC215454C5141000000702DE3544166666646454C514185EB511829E35441EC51B87E494C51411F85EB5129E3544148E17A444D4C514152B81E8529E354411F85EB61554C5141EC51B83E2BE3544133333393534C5141295C8F9226E3544166666606534C51410AD7A30024E354418FC2F528534C51417B14AE371FE3544152B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441F6285C7F4E4C5141B81E85EB12E35441D7A3706D4B4C514185EB514811E35441713D0A774A4C5141713D0A8710E3544152B81E054A4C51411F85EBC110E35441C3F5287C454C5141E17A140E13E354411F85EBB1444C5141D7A3705D1BE35441B81E855B444C514185EB51681EE354413D0AD773194C51418FC2F59817E354419A9999A91C4C51410AD7A3F021E3544152B81EF51D4C514148E17A7429E35441C3F528FC1E4C5141F6285C4F2BE35441D7A3700D214C51411F85EB512BE35441D7A3709D284C51419A9999F92BE354413D0AD7F3354C5141C3F528AC2EE35441
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000052B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441F6285C7F4E4C5141B81E85EB12E35441D7A3706D4B4C514185EB514811E35441713D0A774A4C5141713D0A8710E3544152B81E054A4C51411F85EBC110E35441C3F5287C454C5141E17A140E13E354411F85EBB1444C5141D7A3705D1BE35441B81E855B444C514185EB51681EE354413D0AD773194C51418FC2F59817E3544169EE81F1194C5141116DFD5D1BE35441F6E20BA81C4C5141F05A5B5C22E354411347F4321D4C5141E63C806F25E354418E6331061D4C5141D82528E326E35441082325991D4C5141AA9E621C29E3544152B81EF51D4C514148E17A7429E35441C3F528FC1E4C5141F6285C4F2BE35441D7A3700D214C51411F85EB512BE35441D7A3709D284C51419A9999F92BE354413D0AD7F3354C5141C3F528AC2EE35441333333B33B4C51410000001031E354417B14AE47444C5141F6285C9F31E354415C8FC215454C5141000000702DE3544166666646454C514185EB511829E354415C8D3A47454C51413F3B5D1829E35441674FD94D454C5141F939341629E35441506C617E454C5141CC034E1B29E35441791E718F464C51418D1BDD2929E354411F3EDDC8474C51419819933A29E3544198E5E565484C5141EF7FF24229E3544142A561344C4C51412BD3B17629E354410629AFFE4C4C514161756B8129E35441B175A13F4D4C5141E2E7DC8429E3544148E17A444D4C514152B81E8529E35441EB6E299E4E4C514159F299CE29E35441AE364E594F4C514122E261F629E354414AE5BD7F504C5141C670F8342AE35441A5624615524C514103A42C8B2AE354415D742CD2544C5141C0F729202BE35441CECEC9D4544C51417240B8202BE35441CDCCCCEC524C514114AE47A126E35441333333A3524C51411F85EB911FE35441F0516DA4524C5141DEE8602E1FE3544152B81ED5514C514114AE47211FE35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498794 - 2099466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D000000295C8F2276FE5041713D0AA7B42A544148E17AF477FE504133333333B02A5441B81E857B3AFE50410AD7A320B12A54419A9999C90BFE5041AE47E11AB22A5441CDCCCC5C09FE504166666626B92A544148E17A5408FE504100000070BD2A544185EB511807FE504114AE47D1C62A5441713D0AE706FE504166666626CD2A54410AD7A3902BFE504152B81ED5CC2A544185EB51A838FE5041C3F5289CCC2A54410AD7A3006CFE504148E17AD4CB2A5441666666066EFE504185EB5188C62A5441295C8F2276FE5041713D0AA7B42A5441
+</a>
+
+<b>
+0106000000010000000103000000010000003D00000065CD585729FE5041BCD40CDACC2A544165A1DF7415FE5041A01B650DCD2A5441AE47E17A1CFE50419A999919D92A5441000000F020FE50411F85EB01E42A5441CDCCCC8C22FE5041333333E3F42A5441EC51B8BE20FE5041F6285C9FF52A544185EB519822FE504185EB5168032B5441295C8FC226FE5041CDCCCC5C102B5441713D0A8727FE5041B81E85DB112B54411F85EB1128FE50411F85EBB1142B5441D7A3703D68FE504133333303062B5441713D0AB76AFE5041295C8F32062B54417B14AEB76CFE504152B81E35072B5441EC51B8CE6DFE5041F6285C5F082B5441B81E855B6EFE50419A999959092B54413D0AD78374FE5041713D0AD7072B544148E17A647FFE5041AE47E14A032B544148E17A5485FE5041AE47E1CA0F2B5441CDCCCC0C96FE504185EB51B8072B544152B81ED597FE5041B81E858B0C2B54413D0AD7639DFE504114AE47610C2B5441333333139FFE5041000000B00A2B5441AE47E14AA1FE5041CDCCCC1C092B54419A999989A3FE5041A4703DCA082B5441E17A14CEA7FE504185EB51F8042B5441AE47E15AA8FE50413D0AD7A3FF2A5441C3F528ECAAFE5041333333D3FC2A54418FC2F5E8ABFE5041713D0AD7FB2A5441D7A370FDAEFE5041F6285CCFF72A54417B14AE87B0FE50411F85EB81F62A544185EB51D8B3FE5041713D0A27F52A54411F85EB91ACFE50419A999989EC2A5441CDCCCC2CA7FE50419A999929E92A544185EB5148A5FE5041B81E85EBE72A5441E17A142E9FFE50413D0AD733ED2A544114AE47C199FE504100000060F22A5441EC51B81E95FE5041C3F528CCF62A5441D7A3707D90FE50411F85EBA1FA2A54411F85EB318BFE5041EC51B8EEFC2A54411F85EBA187FE5041A4703D1AE42A54411F85EB6184FE5041F6285C6FCD2A5441CDCCCC3C89FE50411F85EBC1CC2A5441B81E85EB8DFE5041AE47E11ACC2A5441EC51B8DE92FE5041A4703D6ACB2A54410AD7A3F094FE50410AD7A320CB2A5441E17A14CE98FE5041713D0A97CA2A544114AE47619FFE5041C3F528ACC92A54419A999949A7FE50411F85EB91C82A544185EB5198A6FE50419A999919C82A5441E17A148EA4FE5041CDCCCCBCB82A54419A999939A7FE504114AE4711AF2A5441000000308FFE50417B14AE87AF2A544148E17A6479FE504148E17AF4AF2A544152B81E556CFE50415C8FC2C5CC2A5441B73DD8CA6BFE5041956461DFCB2A5441F0D649225CFE504152E6A868CC2A5441A73B0CF64FFE50416F4D929FCC2A54415E020FAC3AFE504135A74CADCC2A54413A5A30062CFE50415E501FD3CC2A54410AD7A3902BFE504152B81ED5CC2A544165CD585729FE5041BCD40CDACC2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498794 - 3340292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D000000295C8F2276FE5041713D0AA7B42A544148E17AF477FE504133333333B02A5441B81E857B3AFE50410AD7A320B12A54419A9999C90BFE5041AE47E11AB22A5441CDCCCC5C09FE504166666626B92A544148E17A5408FE504100000070BD2A544185EB511807FE504114AE47D1C62A5441713D0AE706FE504166666626CD2A54410AD7A3902BFE504152B81ED5CC2A544185EB51A838FE5041C3F5289CCC2A54410AD7A3006CFE504148E17AD4CB2A5441666666066EFE504185EB5188C62A5441295C8F2276FE5041713D0AA7B42A5441
+</a>
+
+<b>
+0106000000010000000103000000010000003D00000065CD585729FE5041BCD40CDACC2A544165A1DF7415FE5041A01B650DCD2A5441AE47E17A1CFE50419A999919D92A5441000000F020FE50411F85EB01E42A5441CDCCCC8C22FE5041333333E3F42A5441EC51B8BE20FE5041F6285C9FF52A544185EB519822FE504185EB5168032B5441295C8FC226FE5041CDCCCC5C102B5441713D0A8727FE5041B81E85DB112B54411F85EB1128FE50411F85EBB1142B5441D7A3703D68FE504133333303062B5441713D0AB76AFE5041295C8F32062B54417B14AEB76CFE504152B81E35072B5441EC51B8CE6DFE5041F6285C5F082B5441B81E855B6EFE50419A999959092B54413D0AD78374FE5041713D0AD7072B544148E17A647FFE5041AE47E14A032B544148E17A5485FE5041AE47E1CA0F2B5441CDCCCC0C96FE504185EB51B8072B544152B81ED597FE5041B81E858B0C2B54413D0AD7639DFE504114AE47610C2B5441333333139FFE5041000000B00A2B5441AE47E14AA1FE5041CDCCCC1C092B54419A999989A3FE5041A4703DCA082B5441E17A14CEA7FE504185EB51F8042B5441AE47E15AA8FE50413D0AD7A3FF2A5441C3F528ECAAFE5041333333D3FC2A54418FC2F5E8ABFE5041713D0AD7FB2A5441D7A370FDAEFE5041F6285CCFF72A54417B14AE87B0FE50411F85EB81F62A544185EB51D8B3FE5041713D0A27F52A54411F85EB91ACFE50419A999989EC2A5441CDCCCC2CA7FE50419A999929E92A544185EB5148A5FE5041B81E85EBE72A5441E17A142E9FFE50413D0AD733ED2A544114AE47C199FE504100000060F22A5441EC51B81E95FE5041C3F528CCF62A5441D7A3707D90FE50411F85EBA1FA2A54411F85EB318BFE5041EC51B8EEFC2A54411F85EBA187FE5041A4703D1AE42A54411F85EB6184FE5041F6285C6FCD2A5441CDCCCC3C89FE50411F85EBC1CC2A5441B81E85EB8DFE5041AE47E11ACC2A5441EC51B8DE92FE5041A4703D6ACB2A54410AD7A3F094FE50410AD7A320CB2A5441E17A14CE98FE5041713D0A97CA2A544114AE47619FFE5041C3F528ACC92A54419A999949A7FE50411F85EB91C82A544185EB5198A6FE50419A999919C82A5441E17A148EA4FE5041CDCCCCBCB82A54419A999939A7FE504114AE4711AF2A5441000000308FFE50417B14AE87AF2A544148E17A6479FE504148E17AF4AF2A544152B81E556CFE50415C8FC2C5CC2A5441B73DD8CA6BFE5041956461DFCB2A5441F0D649225CFE504152E6A868CC2A5441A73B0CF64FFE50416F4D929FCC2A54415E020FAC3AFE504135A74CADCC2A54413A5A30062CFE50415E501FD3CC2A54410AD7A3902BFE504152B81ED5CC2A544165CD585729FE5041BCD40CDACC2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515328 - 1441242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -222  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528CCA9EB5041E17A14FE9E025541E17A14EEA6EB5041F6285CDF9E02554100000040A7EB50419A999969A0025541F6285C7FA7EB504133333353A50255419A9999D9A7EB50418FC2F528AA0255418FC2F518A8EB5041EC51B8FEAE02554152B81E15A8EB5041713D0AF7B30255417B14AEF7A7EB50413D0AD763B9025541000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541CDCCCC4CA8EB5041713D0A87D7025541A4703D7AA8EB5041295C8FD2D8025541295C8F62ABEB50418FC2F5C8D8025541713D0A07AEEB5041295C8FB2D8025541A4703DDAB0EB504114AE4751D8025541EC51B8AEB4EB5041D7A370EDD70255419A999919B5EB5041B81E85DBD7025541A4703DDAB4EB50413D0AD773D6025541B81E854BB4EB5041C3F528FCD0025541B81E854BB4EB5041D7A3703DCA02554114AE4791B4EB50411F85EB61C2025541E17A148EB5EB504166666656B8025541000000B0B6EB504148E17A94A90255410AD7A370B6EB504152B81E55A90255418FC2F548B2EB5041D7A3702DA50255417B14AE97ADEB5041C3F5287CA0025541A4703D3AABEB5041E17A140E9F025541C3F528CCA9EB5041E17A14FE9E025541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541BD42A647A8EB50418BE0414DD7025541A4703D7AA8EB5041295C8FD2D8025541F3EE3568ABEB504137DCC5C8D80255414F27B942AEEB5041A6163CAFD80255416A949B6AB1EB5041A3CD0093D8025541EA6DB7AFB4EB5041FFDD45EDD7025541C85650AFB4EB5041B736F4E6D70255418518F9ADB4EB504155072DE7D70255414BF9F71DB4EB50414C5F9BFCD202554124596CE6B3EB50415E2289EBCB0255416C0DDDF1B3EB50411270632ACB025541A7C52614B4EB5041B50C80E7C8025541917B8A92B4EB5041F9A64755C00255413E73C1B8B4EB5041587CB4D8BD0255415D6728DEB4EB504170EEAD15BB025541CA460E16B5EB50413DC25DAAB8025541A4703DDAB5EB50410AD7A340B10255410AD7A370B6EB504152B81E55A90255418FC2F548B2EB5041D7A3702DA50255417B14AE97ADEB5041C3F5287CA00255410FA69547ABEB5041341826169F025541B0EB0B07ABEB5041B3AFD70B9F025541C3F528CCA9EB5041E17A14FE9E025541E17A14EEA6EB5041F6285CDF9E02554100000040A7EB50419A999969A0025541BC3B3143A7EB50418671F6A8A0025541E1E4B459A7EB50414960D667A2025541F6285C7FA7EB504133333353A50255419A9999D9A7EB50418FC2F528AA0255418FC2F518A8EB5041EC51B8FEAE025541C7515517A8EB504163F4B419B10255419C120315A8EB5041C17822FCB302554111571205A8EB50419F981AECB60255412C40F6F7A7EB5041A6778A56B9025541000000B0A7EB5041F6285C4FBE025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515328 - 3569705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -222  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528CCA9EB5041E17A14FE9E025541E17A14EEA6EB5041F6285CDF9E02554100000040A7EB50419A999969A0025541F6285C7FA7EB504133333353A50255419A9999D9A7EB50418FC2F528AA0255418FC2F518A8EB5041EC51B8FEAE02554152B81E15A8EB5041713D0AF7B30255417B14AEF7A7EB50413D0AD763B9025541000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541CDCCCC4CA8EB5041713D0A87D7025541A4703D7AA8EB5041295C8FD2D8025541295C8F62ABEB50418FC2F5C8D8025541713D0A07AEEB5041295C8FB2D8025541A4703DDAB0EB504114AE4751D8025541EC51B8AEB4EB5041D7A370EDD70255419A999919B5EB5041B81E85DBD7025541A4703DDAB4EB50413D0AD773D6025541B81E854BB4EB5041C3F528FCD0025541B81E854BB4EB5041D7A3703DCA02554114AE4791B4EB50411F85EB61C2025541E17A148EB5EB504166666656B8025541000000B0B6EB504148E17A94A90255410AD7A370B6EB504152B81E55A90255418FC2F548B2EB5041D7A3702DA50255417B14AE97ADEB5041C3F5287CA0025541A4703D3AABEB5041E17A140E9F025541C3F528CCA9EB5041E17A14FE9E025541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541BD42A647A8EB50418BE0414DD7025541A4703D7AA8EB5041295C8FD2D8025541F3EE3568ABEB504137DCC5C8D80255414F27B942AEEB5041A6163CAFD80255416A949B6AB1EB5041A3CD0093D8025541EA6DB7AFB4EB5041FFDD45EDD7025541C85650AFB4EB5041B736F4E6D70255418518F9ADB4EB504155072DE7D70255414BF9F71DB4EB50414C5F9BFCD202554124596CE6B3EB50415E2289EBCB0255416C0DDDF1B3EB50411270632ACB025541A7C52614B4EB5041B50C80E7C8025541917B8A92B4EB5041F9A64755C00255413E73C1B8B4EB5041587CB4D8BD0255415D6728DEB4EB504170EEAD15BB025541CA460E16B5EB50413DC25DAAB8025541A4703DDAB5EB50410AD7A340B10255410AD7A370B6EB504152B81E55A90255418FC2F548B2EB5041D7A3702DA50255417B14AE97ADEB5041C3F5287CA00255410FA69547ABEB5041341826169F025541B0EB0B07ABEB5041B3AFD70B9F025541C3F528CCA9EB5041E17A14FE9E025541E17A14EEA6EB5041F6285CDF9E02554100000040A7EB50419A999969A0025541BC3B3143A7EB50418671F6A8A0025541E1E4B459A7EB50414960D667A2025541F6285C7FA7EB504133333353A50255419A9999D9A7EB50418FC2F528AA0255418FC2F518A8EB5041EC51B8FEAE025541C7515517A8EB504163F4B419B10255419C120315A8EB5041C17822FCB302554111571205A8EB50419F981AECB60255412C40F6F7A7EB5041A6778A56B9025541000000B0A7EB5041F6285C4FBE025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900653 - 244137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000002000000010300000002000000100000003D0AD7235FEA5041C3F5287C152E54418FC2F5B867EA5041C3F528AC202E544114AE47E176EA5041333333C3142E5441B81E856B7BEA5041B81E858B112E5441B81E852B75EA504166666616072E54411F85EBE168EA5041000000D0EE2D5441B81E853B5CEA50410AD7A350EE2D54417B14AE3751EA50418FC2F5E8ED2D5441D7A3703D46EA5041295C8FB2F12D5441333333034EEA5041EC51B8DEFC2D544114AE476150EA5041CDCCCC5CF92D54413333334355EA5041F6285CCFF82D5441F6285CBF58EA504185EB5108FD2D5441713D0A8759EA50413D0AD793012E54416666660656EA5041295C8F62082E54413D0AD7235FEA5041C3F5287C152E544105000000D7A370DD66EA504114AE47B1F92D5441E17A148E66EA5041D7A370EDFA2D5441713D0AB765EA5041EC51B8BEFA2D54415C8FC20566EA50413D0AD783F92D5441D7A370DD66EA504114AE47B1F92D54410103000000020000004A00000014AE47E1ABEA50417B14AEF7CD2D5441C3F528ECA6EA5041B81E859BCE2D544166666656A2EA5041EC51B8DECF2D5441295C8F8299EA504166666686CF2D54415C8FC2759BEA50415C8FC235C52D5441B81E850BA0EA5041CDCCCCACBE2D5441E17A148E9EEA50419A9999A9BA2D5441E17A142E9DEA50411F85EBF1B82D544152B81E9594EA50411F85EB51BA2D5441CDCCCC2C92EA504114AE4791B72D5441D7A370AD97EA5041B81E85FBB22D5441000000F098EA504166666676B02D54415C8FC2659AEA5041E17A146EAD2D54419A99990990EA5041B81E85FBAE2D54419A9999D97FEA504185EB51D8B12D5441E17A14DE76EA5041C3F528ACB32D5441D7A370ED6EEA5041666666B6B72D5441C3F528DC65EA5041E17A141EC22D5441000000105AEA5041A4703D1ACC2D5441000000405CEA50413D0AD763D12D544114AE47C168EA50418FC2F5B8D62D5441295C8FA26EEA5041CDCCCC8CD92D5441B81E859B75EA504166666666DC2D54413D0AD7F378EA504152B81E55DD2D54419A9999E97FEA5041C3F5281CDB2D54413333339389EA5041000000A0DA2D5441A4703D5A90EA504148E17AB4D42D544148E17A0493EA50415C8FC245D62D5441EC51B8AE95EA504148E17A04D52D54419A99995998EA5041AE47E14ADB2D54419A9999A998EA50418FC2F558E22D54419A99995998EA5041EC51B89EE82D5441F6285C1F9CEA5041295C8F82EC2D5441EC51B85E9EEA504133333383F12D544100000040A1EA5041295C8FD2EE2D5441AE47E1BAA4EA5041CDCCCC1CEF2D54413D0AD753A7EA5041295C8F72F02D544166666626A8EA504185EB5108F02D5441B81E85CBA8EA50417B14AE37F02D5441C3F528BCA9EA5041EC51B82EF12D54418FC2F5A8AAEA5041B81E85CBF12D54419A999999ABEA5041A4703D0AF22D5441713D0A57ACEA5041EC51B8EEF12D54418FC2F5A8ACEA5041EC51B84EF12D544152B81E45ACEA5041E17A145EF02D54415C8FC255ACEA5041CDCCCC7CEF2D54411F85EB31ADEA5041EC51B81EEF2D54413D0AD733AEEA5041B81E85BBEE2D5441713D0A17AFEA5041333333C3ED2D5441295C8FB2B0EA5041295C8F72EC2D544166666676B1EA504166666676EB2D544185EB51A8B1EA5041AE47E1BAEA2D544133333343B1EA5041CDCCCCFCE92D544148E17AA4B0EA504100000040E92D544185EB5188B0EA50417B14AE37E82D544152B81E05B1EA5041CDCCCCECE72D54410AD7A380B1EA5041B81E85CBE82D544114AE4771B2EA5041AE47E12AE82D54417B14AE07B3EA50410AD7A3F0E72D54413D0AD713B4EA504166666656E82D54418FC2F5C8B4EA5041D7A3709DE72D544133333343B5EA504114AE4741E72D544114AE4741B5EA5041B81E855BE22D5441EC51B82EBCEA50419A999909E02D544148E17AF4BAEA50411F85EBE1DB2D54411F85EBC1BDEA50413D0AD7F3D62D5441B81E850BC1EA504114AE4791D62D5441AE47E1AAC3EA5041295C8F22D02D5441AE47E1BABBEA50415C8FC235CA2D5441A4703D8AB8EA5041CDCCCC9CCC2D544114AE4731B4EA5041F6285C2FD32D5441295C8F52B3EA5041000000A0DA2D5441D7A3707DAEEA504133333303DB2D544114AE47E1ABEA50417B14AEF7CD2D54410B000000F6285C6F76EA5041CDCCCCBCC02D5441D7A3704D79EA504152B81EC5C12D5441AE47E18A7DEA504185EB5118C52D54415C8FC29582EA5041E17A145ECA2D54415C8FC2757EEA504114AE4761CE2D5441295C8FC279EA5041EC51B88ED02D5441F6285C0F75EA504114AE4771D02D5441CDCCCCBC71EA5041C3F528FCCF2D5441C3F528EC6CEA50410AD7A350CC2D5441D7A3709D6FEA5041CDCCCCCCC42D5441F6285C6F76EA5041CDCCCCBCC02D5441
+</a>
+
+<b>
+0106000000010000000103000000020000007700000016FBCBF099EA5041A6A71DFBAF2D54412920386098EA5041BADCA2BBAD2D54419A99990990EA5041B81E85FBAE2D544109F6EE8786EA5041CBFBDFA9B02D54410A8D40067CEA504188C7919FB22D544186604F9D7BEA5041B387EBB4B22D54413A73211C7AEA504112054903B32D54410899212C78EA504154673268B32D5441E17A14DE76EA5041C3F528ACB32D5441D7A370ED6EEA5041666666B6B72D5441C3F528DC65EA5041E17A141EC22D5441000000105AEA5041A4703D1ACC2D5441000000405CEA50413D0AD763D12D54419A9999F95BEA50419A999929D52D54410000003071EA5041C3F528ECE62D54415D4DE02972EA5041B9DDCDC0E32D5441355E7C2073EA5041CAACF9DCE02D544198FBE41775EA504162154A7EDC2D5441B81E859B75EA504166666666DC2D54417EE4B7CD77EA5041675E2003DD2D5441411532FE77EA5041C402A410DD2D544118FC0B1578EA504121D00217DD2D5441A4CB961C78EA5041CA121D19DD2D5441BD26DF1F78EA5041CF57071ADD2D5441F97AB93178EA5041E96E011FDD2D5441A58700F87CEA5041BE9E10D9DB2D5441BC3345A180EA50416F1AD3D2D92D5441AE7AE34D87EA5041A4470036DD2D54413333339389EA5041000000A0DA2D544181476F7290EA5041A39C1E56D32D5441A0E512BD92EA5041498957A5D42D54412F35210396EA5041562682AED22D5441EABFFD9C99EA5041F7760936DA2D5441BD842F4999EA50414051F415E12D5441700E93A198EA5041A1C809FFE52D5441DD22D3939BEA5041F73F1FE8EA2D5441A44ADA369DEA5041BE67268BEC2D544157D43D8F9CEA50411FDF3B74F12D54414A3713869EEA5041BACB74C3F22D5441339AE87CA0EA50411FDF3B74F12D5441AC4B5378A1EA5041DE05CAD5EE2D544177050D88A1EA5041F37190D8EE2D54414D1ADB9CA5EA5041320CF190EF2D54415B390509A7EA504157B734D1EF2D544159BD64DEA7EA504151CBA62CF02D544166666626A8EA504185EB5108F02D5441B81E85CBA8EA50417B14AE37F02D54412BAF0D60A9EA504193EF29D0F02D54418F754C9EABEA50411FDF3B74F12D5441BBB01AF2ABEA5041DE05CAD5EE2D5441A413F0E8ADEA5041908F2D2EEE2D5441FC898C90AEEA5041908F2D2EEE2D5441295C8FB2B0EA5041295C8F72EC2D544124B14F05B1EA504146CD0208EC2D544183863E2AB1EA504169EE74D8EB2D544166666676B1EA504166666676EB2D544185EB51A8B1EA5041AE47E1BAEA2D544133333343B1EA5041CDCCCCFCE92D5441A6DDD0A8B0EA504195582845E92D544148E17AA4B0EA504100000040E92D544185EB5188B0EA50417B14AE37E82D544152B81E05B1EA5041CDCCCCECE72D54410AD7A380B1EA5041B81E85CBE82D544114AE4771B2EA5041AE47E12AE82D54417B14AE07B3EA50410AD7A3F0E72D54413D0AD713B4EA504166666656E82D54418FC2F5C8B4EA5041D7A3709DE72D544133333343B5EA504114AE4741E72D54416C3A475AB5EA5041732679F9E62D5441F97E701DB6EA5041D3333D9AE42D5441F8EDDAC8B4EA50418EC790BDE12D5441D4B385B6B8EA5041C79F891AE02D5441208DF754BBEA50416D8CC269E12D544141C8C5A8BBEA5041D33CB423DE2D54417AA0BE05BAEA5041BE9E10D9DB2D5441BB7930A4BCEA5041304F0293D82D544182A13747BEEA5041C33AC2A0D52D544179A89404C1EA5041B8583411D22D54419DF7BDC1C1EA5041E29070B5CE2D54415B269BF9BDEA5041D5A2C4E2CB2D54416D0394FCBBEA50412E876522CC2D5441B278B762B8EA5041E91142BCCF2D54412C2A225EB9EA504182615002D32D5441EB50B0BFB6EA5041CFD7ECA9D32D5441F8EDDAC8B4EA5041A39C1E56D32D5441AA773E21B4EA5041304F0293D82D54411863FBECB2EA504141574DCCDA2D54414A002938AFEA504145EDA5DDDA2D5441356285EDACEA5041304F0293D82D5441569D5341ADEA5041498957A5D42D5441A413F0E8ADEA5041DC7417B3D12D5441FC898C90AEEA504162C3ACB7D02D544182D82195ADEA5041154D1010D02D544141FFAFF6AAEA5041E91142BCCF2D544115C4E1A2AAEA50416F60D7C0CE2D544100263E58A8EA50416F60D7C0CE2D54412EFE36B5A6EA50419B9BA514CF2D5441469B61BEA4EA504173FAD3CDD02D54416D3EE8BF9AEA50412CBB5E3CD02D5441700E93A198EA5041C7D67368CF2D5441637168989AEA5041F5AE6CC5CD2D5441B1E704409BEA5041B4D5FA26CB2D5441780F0CE39CEA5041CB722530C92D5441D085A88A9DEA5041ACD481E5C62D5441FE5DA1E79BEA5041B871ACEEC42D5441FE5DA1E79BEA5041F149A54BC32D54414A3713869EEA504184356559C02D5441A44ADA369DEA504191D28F62BE2D54411EFC44329EEA50417C34EC17BC2D5441780F0CE39CEA5041B50CE574BA2D5441700E93A198EA5041D647B3C8BA2D54417CABBDAA96EA5041D647B3C8BA2D54412F35210396EA5041A86FBA6BBC2D5441680D1A6094EA5041B50CE574BA2D5441486F761592EA50410F20AC25B92D5441AD823DC690EA5041CE463A87B62D54418948E8B394EA5041335A0138B52D5441CA215A5297EA5041C645C145B22D544116FBCBF099EA5041A6A71DFBAF2D54410B000000F6285C6F76EA5041CDCCCCBCC02D5441D7A3704D79EA504152B81EC5C12D5441AE47E18A7DEA504185EB5118C52D54415C8FC29582EA5041E17A145ECA2D54415C8FC2757EEA504114AE4761CE2D5441295C8FC279EA5041EC51B88ED02D5441F6285C0F75EA504114AE4771D02D5441CDCCCCBC71EA5041C3F528FCCF2D5441C3F528EC6CEA50410AD7A350CC2D5441D7A3709D6FEA5041CDCCCCCCC42D5441F6285C6F76EA5041CDCCCCBCC02D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900653 - 280150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000002000000010300000002000000100000003D0AD7235FEA5041C3F5287C152E54418FC2F5B867EA5041C3F528AC202E544114AE47E176EA5041333333C3142E5441B81E856B7BEA5041B81E858B112E5441B81E852B75EA504166666616072E54411F85EBE168EA5041000000D0EE2D5441B81E853B5CEA50410AD7A350EE2D54417B14AE3751EA50418FC2F5E8ED2D5441D7A3703D46EA5041295C8FB2F12D5441333333034EEA5041EC51B8DEFC2D544114AE476150EA5041CDCCCC5CF92D54413333334355EA5041F6285CCFF82D5441F6285CBF58EA504185EB5108FD2D5441713D0A8759EA50413D0AD793012E54416666660656EA5041295C8F62082E54413D0AD7235FEA5041C3F5287C152E544105000000D7A370DD66EA504114AE47B1F92D5441E17A148E66EA5041D7A370EDFA2D5441713D0AB765EA5041EC51B8BEFA2D54415C8FC20566EA50413D0AD783F92D5441D7A370DD66EA504114AE47B1F92D54410103000000020000004A00000014AE47E1ABEA50417B14AEF7CD2D5441C3F528ECA6EA5041B81E859BCE2D544166666656A2EA5041EC51B8DECF2D5441295C8F8299EA504166666686CF2D54415C8FC2759BEA50415C8FC235C52D5441B81E850BA0EA5041CDCCCCACBE2D5441E17A148E9EEA50419A9999A9BA2D5441E17A142E9DEA50411F85EBF1B82D544152B81E9594EA50411F85EB51BA2D5441CDCCCC2C92EA504114AE4791B72D5441D7A370AD97EA5041B81E85FBB22D5441000000F098EA504166666676B02D54415C8FC2659AEA5041E17A146EAD2D54419A99990990EA5041B81E85FBAE2D54419A9999D97FEA504185EB51D8B12D5441E17A14DE76EA5041C3F528ACB32D5441D7A370ED6EEA5041666666B6B72D5441C3F528DC65EA5041E17A141EC22D5441000000105AEA5041A4703D1ACC2D5441000000405CEA50413D0AD763D12D544114AE47C168EA50418FC2F5B8D62D5441295C8FA26EEA5041CDCCCC8CD92D5441B81E859B75EA504166666666DC2D54413D0AD7F378EA504152B81E55DD2D54419A9999E97FEA5041C3F5281CDB2D54413333339389EA5041000000A0DA2D5441A4703D5A90EA504148E17AB4D42D544148E17A0493EA50415C8FC245D62D5441EC51B8AE95EA504148E17A04D52D54419A99995998EA5041AE47E14ADB2D54419A9999A998EA50418FC2F558E22D54419A99995998EA5041EC51B89EE82D5441F6285C1F9CEA5041295C8F82EC2D5441EC51B85E9EEA504133333383F12D544100000040A1EA5041295C8FD2EE2D5441AE47E1BAA4EA5041CDCCCC1CEF2D54413D0AD753A7EA5041295C8F72F02D544166666626A8EA504185EB5108F02D5441B81E85CBA8EA50417B14AE37F02D5441C3F528BCA9EA5041EC51B82EF12D54418FC2F5A8AAEA5041B81E85CBF12D54419A999999ABEA5041A4703D0AF22D5441713D0A57ACEA5041EC51B8EEF12D54418FC2F5A8ACEA5041EC51B84EF12D544152B81E45ACEA5041E17A145EF02D54415C8FC255ACEA5041CDCCCC7CEF2D54411F85EB31ADEA5041EC51B81EEF2D54413D0AD733AEEA5041B81E85BBEE2D5441713D0A17AFEA5041333333C3ED2D5441295C8FB2B0EA5041295C8F72EC2D544166666676B1EA504166666676EB2D544185EB51A8B1EA5041AE47E1BAEA2D544133333343B1EA5041CDCCCCFCE92D544148E17AA4B0EA504100000040E92D544185EB5188B0EA50417B14AE37E82D544152B81E05B1EA5041CDCCCCECE72D54410AD7A380B1EA5041B81E85CBE82D544114AE4771B2EA5041AE47E12AE82D54417B14AE07B3EA50410AD7A3F0E72D54413D0AD713B4EA504166666656E82D54418FC2F5C8B4EA5041D7A3709DE72D544133333343B5EA504114AE4741E72D544114AE4741B5EA5041B81E855BE22D5441EC51B82EBCEA50419A999909E02D544148E17AF4BAEA50411F85EBE1DB2D54411F85EBC1BDEA50413D0AD7F3D62D5441B81E850BC1EA504114AE4791D62D5441AE47E1AAC3EA5041295C8F22D02D5441AE47E1BABBEA50415C8FC235CA2D5441A4703D8AB8EA5041CDCCCC9CCC2D544114AE4731B4EA5041F6285C2FD32D5441295C8F52B3EA5041000000A0DA2D5441D7A3707DAEEA504133333303DB2D544114AE47E1ABEA50417B14AEF7CD2D54410B000000F6285C6F76EA5041CDCCCCBCC02D5441D7A3704D79EA504152B81EC5C12D5441AE47E18A7DEA504185EB5118C52D54415C8FC29582EA5041E17A145ECA2D54415C8FC2757EEA504114AE4761CE2D5441295C8FC279EA5041EC51B88ED02D5441F6285C0F75EA504114AE4771D02D5441CDCCCCBC71EA5041C3F528FCCF2D5441C3F528EC6CEA50410AD7A350CC2D5441D7A3709D6FEA5041CDCCCCCCC42D5441F6285C6F76EA5041CDCCCCBCC02D5441
+</a>
+
+<b>
+0106000000010000000103000000020000007700000016FBCBF099EA5041A6A71DFBAF2D54412920386098EA5041BADCA2BBAD2D54419A99990990EA5041B81E85FBAE2D544109F6EE8786EA5041CBFBDFA9B02D54410A8D40067CEA504188C7919FB22D544186604F9D7BEA5041B387EBB4B22D54413A73211C7AEA504112054903B32D54410899212C78EA504154673268B32D5441E17A14DE76EA5041C3F528ACB32D5441D7A370ED6EEA5041666666B6B72D5441C3F528DC65EA5041E17A141EC22D5441000000105AEA5041A4703D1ACC2D5441000000405CEA50413D0AD763D12D54419A9999F95BEA50419A999929D52D54410000003071EA5041C3F528ECE62D54415D4DE02972EA5041B9DDCDC0E32D5441355E7C2073EA5041CAACF9DCE02D544198FBE41775EA504162154A7EDC2D5441B81E859B75EA504166666666DC2D54417EE4B7CD77EA5041675E2003DD2D5441411532FE77EA5041C402A410DD2D544118FC0B1578EA504121D00217DD2D5441A4CB961C78EA5041CA121D19DD2D5441BD26DF1F78EA5041CF57071ADD2D5441F97AB93178EA5041E96E011FDD2D5441A58700F87CEA5041BE9E10D9DB2D5441BC3345A180EA50416F1AD3D2D92D5441AE7AE34D87EA5041A4470036DD2D54413333339389EA5041000000A0DA2D544181476F7290EA5041A39C1E56D32D5441A0E512BD92EA5041498957A5D42D54412F35210396EA5041562682AED22D5441EABFFD9C99EA5041F7760936DA2D5441BD842F4999EA50414051F415E12D5441700E93A198EA5041A1C809FFE52D5441DD22D3939BEA5041F73F1FE8EA2D5441A44ADA369DEA5041BE67268BEC2D544157D43D8F9CEA50411FDF3B74F12D54414A3713869EEA5041BACB74C3F22D5441339AE87CA0EA50411FDF3B74F12D5441AC4B5378A1EA5041DE05CAD5EE2D544177050D88A1EA5041F37190D8EE2D54414D1ADB9CA5EA5041320CF190EF2D54415B390509A7EA504157B734D1EF2D544159BD64DEA7EA504151CBA62CF02D544166666626A8EA504185EB5108F02D5441B81E85CBA8EA50417B14AE37F02D54412BAF0D60A9EA504193EF29D0F02D54418F754C9EABEA50411FDF3B74F12D5441BBB01AF2ABEA5041DE05CAD5EE2D5441A413F0E8ADEA5041908F2D2EEE2D5441FC898C90AEEA5041908F2D2EEE2D5441295C8FB2B0EA5041295C8F72EC2D544124B14F05B1EA504146CD0208EC2D544183863E2AB1EA504169EE74D8EB2D544166666676B1EA504166666676EB2D544185EB51A8B1EA5041AE47E1BAEA2D544133333343B1EA5041CDCCCCFCE92D5441A6DDD0A8B0EA504195582845E92D544148E17AA4B0EA504100000040E92D544185EB5188B0EA50417B14AE37E82D544152B81E05B1EA5041CDCCCCECE72D54410AD7A380B1EA5041B81E85CBE82D544114AE4771B2EA5041AE47E12AE82D54417B14AE07B3EA50410AD7A3F0E72D54413D0AD713B4EA504166666656E82D54418FC2F5C8B4EA5041D7A3709DE72D544133333343B5EA504114AE4741E72D54416C3A475AB5EA5041732679F9E62D5441F97E701DB6EA5041D3333D9AE42D5441F8EDDAC8B4EA50418EC790BDE12D5441D4B385B6B8EA5041C79F891AE02D5441208DF754BBEA50416D8CC269E12D544141C8C5A8BBEA5041D33CB423DE2D54417AA0BE05BAEA5041BE9E10D9DB2D5441BB7930A4BCEA5041304F0293D82D544182A13747BEEA5041C33AC2A0D52D544179A89404C1EA5041B8583411D22D54419DF7BDC1C1EA5041E29070B5CE2D54415B269BF9BDEA5041D5A2C4E2CB2D54416D0394FCBBEA50412E876522CC2D5441B278B762B8EA5041E91142BCCF2D54412C2A225EB9EA504182615002D32D5441EB50B0BFB6EA5041CFD7ECA9D32D5441F8EDDAC8B4EA5041A39C1E56D32D5441AA773E21B4EA5041304F0293D82D54411863FBECB2EA504141574DCCDA2D54414A002938AFEA504145EDA5DDDA2D5441356285EDACEA5041304F0293D82D5441569D5341ADEA5041498957A5D42D5441A413F0E8ADEA5041DC7417B3D12D5441FC898C90AEEA504162C3ACB7D02D544182D82195ADEA5041154D1010D02D544141FFAFF6AAEA5041E91142BCCF2D544115C4E1A2AAEA50416F60D7C0CE2D544100263E58A8EA50416F60D7C0CE2D54412EFE36B5A6EA50419B9BA514CF2D5441469B61BEA4EA504173FAD3CDD02D54416D3EE8BF9AEA50412CBB5E3CD02D5441700E93A198EA5041C7D67368CF2D5441637168989AEA5041F5AE6CC5CD2D5441B1E704409BEA5041B4D5FA26CB2D5441780F0CE39CEA5041CB722530C92D5441D085A88A9DEA5041ACD481E5C62D5441FE5DA1E79BEA5041B871ACEEC42D5441FE5DA1E79BEA5041F149A54BC32D54414A3713869EEA504184356559C02D5441A44ADA369DEA504191D28F62BE2D54411EFC44329EEA50417C34EC17BC2D5441780F0CE39CEA5041B50CE574BA2D5441700E93A198EA5041D647B3C8BA2D54417CABBDAA96EA5041D647B3C8BA2D54412F35210396EA5041A86FBA6BBC2D5441680D1A6094EA5041B50CE574BA2D5441486F761592EA50410F20AC25B92D5441AD823DC690EA5041CE463A87B62D54418948E8B394EA5041335A0138B52D5441CA215A5297EA5041C645C145B22D544116FBCBF099EA5041A6A71DFBAF2D54410B000000F6285C6F76EA5041CDCCCCBCC02D5441D7A3704D79EA504152B81EC5C12D5441AE47E18A7DEA504185EB5118C52D54415C8FC29582EA5041E17A145ECA2D54415C8FC2757EEA504114AE4761CE2D5441295C8FC279EA5041EC51B88ED02D5441F6285C0F75EA504114AE4771D02D5441CDCCCCBC71EA5041C3F528FCCF2D5441C3F528EC6CEA50410AD7A350CC2D5441D7A3709D6FEA5041CDCCCCCCC42D5441F6285C6F76EA5041CDCCCCBCC02D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911967 - 399949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000D7000000C3F528BC34E25041E17A140EFDA65441CDCCCC9C24E250418FC2F54800A75441C3F528FC25E2504114AE47D105A754417B14AE1726E250417B14AEA70AA754411F85EB7125E25041666666260DA75441295C8F7222E25041D7A3703D14A754415C8FC21520E250413333333316A7544114AE47911CE25041E17A146E16A754410AD7A3F019E25041E17A145E16A7544185EB51F818E25041A4703DBA17A75441713D0AC71DE25041B81E851B24A7544185EB51B81FE25041EC51B84E26A75441295C8F4223E250410000006028A754411F85EBF126E25041D7A370FD28A754410000006036E25041333333D327A7544114AE472141E25041295C8FC226A75441666666C64BE250419A99993924A754413D0AD7634CE25041E17A140E24A7544152B81EF54BE25041F6285CFF22A754415C8FC2654DE2504152B81E4521A75441333333834DE250418FC2F55820A75441E17A14FE4FE25041295C8FE21FA75441295C8F4251E2504114AE47B120A7544185EB513853E25041CDCCCC2C20A7544185EB51B854E25041E17A149E1EA75441333333B355E25041F6285C8F1EA754415C8FC2C557E2504152B81E551FA7544114AE47C159E250415C8FC2751AA75441295C8FC25FE2504114AE473114A754413333332361E2504114AE47C112A754419A99997962E25041C3F5285C11A7544185EB51D863E250411F85EB910FA75441AE47E1EA64E250411F85EBE10DA75441295C8F9264E25041EC51B8FE0BA754413D0AD74365E250413D0AD7030BA75441AE47E16A66E250413D0AD7030BA754417B14AE6767E25041295C8F9208A754419A9999E967E250417B14AE3707A754411F85EB1169E25041295C8FC202A75441333333636AE25041F6285CAFFDA6544152B81E456EE25041E17A147EF6A65441000000D06EE25041C3F528DCF3A65441F6285C1F6FE25041D7A370DDECA6544148E17AA46FE25041D7A3709DEAA65441B81E85FB70E250413D0AD753E9A65441E17A141E72E25041A4703D4AE6A65441C3F5284C6FE25041D7A370ADE4A65441A4703D1A70E25041A4703D9AE2A65441F6285C5F71E25041CDCCCCFCE0A65441EC51B8DE72E250411F85EB01E0A65441C3F528BC73E250413D0AD7B3DDA65441713D0AB774E25041EC51B82EDDA65441AE47E18A74E2504148E17AB4DAA65441AE47E14A75E25041000000F0D7A654416666663679E250418FC2F518D0A65441C3F528AC79E250411F85EB71CDA654411F85EB617CE25041000000A0C4A65441713D0A277CE250410AD7A3A0C1A654411F85EBA17BE2504148E17AF4BFA65441E17A148E7AE250417B14AE17BFA65441C3F5284C76E2504148E17AE4BEA654413D0AD7A372E2504152B81E65C1A654410AD7A35071E2504114AE4751C2A65441CDCCCCDC6DE250411F85EB11C2A65441A4703DEA6AE25041E17A14FEC0A65441A4703DEA6AE250419A9999B9BCA654413D0AD7336BE2504114AE4761BCA65441A4703D2A6AE250415C8FC235B9A654415C8FC22568E25041333333D3B7A654419A99993967E2504166666676B5A6544114AE472166E250418FC2F5D8B3A65441E17A14CE64E250417B14AE27B3A65441A4703D7A63E25041EC51B85EB1A65441F6285CBF61E250418FC2F568AFA654418FC2F5185FE250415C8FC2D5ABA65441666666B65DE2504133333373AAA65441F6285C4F5DE250413D0AD7F3A8A65441333333635CE25041C3F5284CA9A654411F85EBB15BE250415C8FC255AAA65441E17A141E5BE250415C8FC255AAA65441D7A3706D5AE25041713D0A07ABA65441A4703D5A58E250419A9999A9ABA654417B14AEB757E250411F85EB41ABA65441666666C657E250410AD7A390AAA6544114AE474157E25041000000E0A9A654415C8FC29555E250417B14AEC7A8A654410AD7A3D055E25041000000A0A7A65441F6285C1F55E25041F6285C2FA6A6544185EB51B854E25041A4703D2AA7A6544185EB51F853E250410AD7A320A6A654416666669652E250417B14AEC7A5A65441D7A3707D51E2504133333383A4A6544152B81E2551E25041CDCCCCCCA4A654418FC2F5B851E25041E17A143EA6A6544114AE475151E25041CDCCCC0CA7A65441F6285C2F4FE25041A4703D2AA7A65441AE47E12A4DE2504152B81E25A8A654410AD7A3604EE2504166666616A8A65441333333434EE25041295C8F02A9A65441713D0AD74EE25041D7A3703DA9A6544152B81EE551E25041295C8F82A7A65441D7A3703D52E2504185EB5178A9A654413333337353E250411F85EB41ABA6544148E17A2454E250418FC2F528ADA6544148E17AE454E250410AD7A390ADA654411F85EBC155E25041CDCCCC7CAEA65441E17A14EE55E2504114AE4781B0A654418FC2F5E856E250410AD7A300B2A6544152B81E9558E25041CDCCCCECB2A654418FC2F5E856E250413D0AD713B4A65441B81E85CB56E25041EC51B80EB5A654418FC2F56855E2504100000000B5A654415C8FC2D554E25041C3F528ACB6A65441AE47E1DA53E25041295C8F22B7A654419A99996952E2504114AE4731B7A65441000000A053E25041D7A3701DB8A654415C8FC21554E2504148E17AC4B7A65441D7A3707D54E25041EC51B80EB8A65441D7A3707D54E25041CDCCCC9CB9A654415C8FC29555E2504133333313BAA654410AD7A3D055E2504166666666BBA65441B81E85CB56E250417B14AE17BCA6544152B81ED557E25041B81E85EBBBA654410000001058E25041295C8F52BCA65441EC51B8DE58E2504166666626BCA6544185EB512859E250418FC2F548BBA65441713D0AF759E250410AD7A3F0BAA654411F85EB315AE250417B14AED7B9A6544185EB51E859E25041713D0A67B8A654411F85EB715CE250415C8FC275B8A654418FC2F5D85CE25041713D0A27B9A65441CDCCCC6C5DE25041F6285CBFB8A654418FC2F5585EE25041CDCCCCDCB8A65441333333235DE25041EC51B88EB6A65441333333A35BE2504114AE47B1B5A65441AE47E18A5AE250413D0AD793B5A65441333333235AE250419A999909B6A654410000009059E2504114AE47B1B5A654419A99991959E250413D0AD7D3B4A654419A9999995AE25041F6285C4FB4A654415C8FC2855BE2504114AE47F1B4A654417B14AEE75CE2504152B81EC5B4A6544152B81E055DE25041B81E85BBB3A65441666666B65DE25041713D0A77B2A6544114AE47B15EE25041F6285C0FB2A654413D0AD7535FE2504133333323B1A654410000004060E250415C8FC205B1A654415C8FC2B560E250419A999999B1A654413333339361E25041E17A141EB2A654411F85EB2163E2504114AE47F1B4A65441B81E85EB64E25041CDCCCC2CB5A65441F6285CBF64E250413D0AD713B7A65441EC51B87E65E25041EC51B80EB8A65441295C8FD266E2504133333393B8A65441EC51B8BE67E250410AD7A3F0BAA65441713D0A9766E25041000000B0BBA654410000003066E250419A999939BEA654413D0AD74365E25041713D0A17BFA6544152B81EF565E25041A4703D6AC0A65441295C8F5265E2504152B81E65C1A6544114AE472166E25041295C8F82C1A65441713D0A9766E250413D0AD733C2A65441AE47E16A66E25041D7A3703DC3A654411F85EBE163E250413D0AD773C4A654418FC2F58863E25041C3F5280CC4A654410AD7A37062E25041295C8F82C4A654418FC2F5C862E250419A9999E9C4A65441E17A148E62E25041E17A142EC6A6544148E17A0463E2504148E17AA4C6A65441A4703DBA62E250411F85EB81C7A654413333331363E250413D0AD7E3C8A65441713D0A2762E2504114AE47C1C9A6544185EB515861E250413D0AD7A3C9A6544152B81E0560E25041295C8F72CAA6544114AE47B15EE250410AD7A300CCA65441713D0A375CE250419A999919CDA65441AE47E14A58E2504100000000D2A65441D7A370AD59E2504100000070D6A65441C3F528AC5FE250411F85EB01E0A65441B81E85BB5CE25041EC51B86EDFA65441AE47E1CA59E25041EC51B88EEAA65441333333235AE250411F85EBA1EFA6544114AE47415AE25041EC51B83EF4A65441295C8F7259E250417B14AE07F6A6544114AE478159E2504152B81EA5F7A654417B14AE7758E25041D7A370FDF7A654417B14AEF756E250413D0AD733F9A65441EC51B81E58E25041C3F5288CF9A654419A99991959E250415C8FC295FAA654416666668658E250411F85EB81FBA6544152B81E5556E2504185EB51F8FBA65441A4703D5A55E250410AD7A38001A75441713D0A8752E2504152B81E0505A7544114AE475151E2504152B81E0505A7544114AE479150E250417B14AEA705A75441B81E855B4FE2504114AE477107A75441000000F04CE250419A99994909A754418FC2F5084BE2504185EB515809A75441B81E856B49E2504185EB51D807A75441333333D346E250419A9999C907A75441EC51B82E47E25041CDCCCC3C06A75441AE47E18A45E25041E17A14DE02A754418FC2F55844E25041A4703D0A04A75441CDCCCC6C43E25041CDCCCCEC03A75441A4703D0A42E250417B14AEE704A7544185EB51F839E25041713D0A2707A75441295C8FC238E250419A99990907A754417B14AE0737E25041AE47E1BA07A75441B81E859B34E250415C8FC2F507A7544114AE47E12FE25041F6285CBF09A754419A9999492AE250410AD7A3300BA754417B14AEA729E2504185EB515809A754416666662631E250413D0AD79306A7544114AE473136E25041713D0A1706A75441C3F528BC34E25041E17A140EFDA65441
+</a>
+
+<b>
+01060000000100000001030000000100000076010000C3F528FC25E2504114AE47D105A754410721E6FE25E25041CF48884C06A754419C40E42826E25041619D55BA0AA754412622F61525E25041CA27F91F14A75441917CC84325E250410BDD190116A75441698404213FE25041AD70E8280CA75441AA75091D40E250414845EF2712A75441B91567AD2DE25041DB3860BF1AA754418A41DC3329E25041E6DE09171CA7544112407D0626E2504181448D331CA75441F1C0520324E25041A2B92B8028A754411F85EBF126E25041D7A370FD28A75441B29D92A52EE250412B64936828A754410000006036E25041333333D327A7544114AE472141E25041295C8FC226A75441666666C64BE250419A99993924A754413D0AD7634CE25041E17A140E24A7544152B81EF54BE25041F6285CFF22A754415C8FC2654DE2504152B81E4521A75441333333834DE250418FC2F55820A75441E17A14FE4FE25041295C8FE21FA754417591D2B850E2504143B4875920A75441149E784851E250413922B8AF20A75441A8C3E07851E25041433AF0A220A754414918C0D351E2504101FFF18A20A7544185EB513853E25041CDCCCC2C20A7544185EB51B854E25041E17A149E1EA75441CC6436EF54E25041FAF8DB9A1EA7544136DDBA0F55E25041CABC998A1EA75441749C785A55E2504159E790941EA75441333333B355E25041F6285C8F1EA754415C8FC2C557E2504152B81E551FA754412F9F938459E250419738F40A1BA7544114AE47C159E250415C8FC2751AA75441295C8FC25FE2504114AE473114A75441F71448C65FE25041D175652D14A754413333332361E2504114AE47C112A754419A99997962E25041C3F5285C11A7544185EB51D863E250411F85EB910FA75441AE47E1EA64E250411F85EBE10DA75441295C8F9264E25041EC51B8FE0BA754413D0AD74365E250413D0AD7030BA75441AE47E16A66E250413D0AD7030BA754417B14AE6767E25041295C8F9208A75441F9A1B38067E250418FD9C04F08A754417B5E9C4669E25041A30248DEFFA65441C47399356BE250411AD84D00FCA654414C4218006CE2504135D5CFAEFAA65441739B15C26DE250418310568DF6A654414901967E6DE250418651D80EF5A65441BDF49FEF6EE2504148A18F12F1A65441B9FDB01C6FE25041C003A819EDA65441F6285C1F6FE25041D7A370DDECA65441012E4A486FE25041F90D572CECA65441B89D91656FE25041CCE0A6ADEBA654417BB849896FE25041880A1913EBA6544148E17AA46FE25041D7A3709DEAA65441B81E85FB70E250413D0AD753E9A65441E17A141E72E25041A4703D4AE6A65441C3F5284C6FE25041D7A370ADE4A654410B8156FB6FE25041A2FBE4E9E2A65441A4703D1A70E25041A4703D9AE2A65441669F0FB470E25041D608A2D6E1A65441AF6F902F71E250417148F631E1A654419609FD3E71E250411226F725E1A65441F6285C5F71E25041CDCCCCFCE0A65441EC51B8DE72E250411F85EB01E0A65441C3F528BC73E250413D0AD7B3DDA65441713D0AB774E25041EC51B82EDDA65441A342928E74E2504121FD7EE9DAA65441E5658B8674E250414CD4FFDDDAA654412F3E568C74E25041F87D67C9DAA65441AE47E18A74E2504148E17AB4DAA65441AE47E14A75E25041000000F0D7A654416666663679E250418FC2F518D0A65441F6A2EEA479E25041560C999BCDA65441C3F528AC79E250411F85EB71CDA654412240FED57BE250415C5A6867C6A654418BB5EC5D7CE250417C1BEE6BC4A65441713D0A277CE250410AD7A3A0C1A6544199D59ED37BE2504195765594C0A65441B5CEACA17BE2504111BB3E1AC0A65441B98E6DE37AE25041157BFF5BBFA65441E17A148E7AE250417B14AE17BFA654414B4924327AE2504111725C13BFA654412E6E8AC779E25041A3993E1CBFA654419602351E79E250417FA84F0BBFA65441C3F5284C76E2504148E17AE4BEA654413D0AD7A372E2504152B81E65C1A654410AD7A35071E2504114AE4751C2A65441CDCCCCDC6DE250411F85EB11C2A654418529C6F16BE2504102286B5EC1A65441A4703DEA6AE25041E17A14FEC0A65441A4703DEA6AE250419595EED6C0A65441D57888E56AE25041D81783D4C0A65441A4703DEA6AE25041E30B64B5BFA65441A4703DEA6AE250419A9999B9BCA654413D0AD7336BE2504114AE4761BCA65441C8FFCB536AE2504133D8BBB4B9A65441A4703D2A6AE250415C8FC235B9A654415C8FC22568E25041333333D3B7A654414F6B480368E250412BABE77AB7A654416D7CFF7467E25041264F1B50B6A65441A1C6542067E25041AE7B4E1DB6A654416ED0184E67E250413463E4AAB5A654419A99993967E2504166666676B5A654412CEAFAEC66E2504176FA6405B5A65441FF5AFF7666E25041F2D0D697B4A654417883241E66E25041EFFD51D7B3A654414F4750B265E2504171DFF69EB3A65441E1C0BC7465E250414533C87EB3A6544129BF98E064E25041B9F92B45B3A65441BB9D98E263E25041F7F54D25B2A6544160854C7863E250412E56855CB1A65441F32696B462E250418DF5C97EB0A65441F6285CBF61E250418FC2F568AFA65441B695C9FA5FE25041F2FB6906ADA65441E27DB0A65FE25041D404F694ACA654418FC2F5185FE250415C8FC2D5ABA65441666666B65DE2504133333373AAA65441F6285C4F5DE250413D0AD7F3A8A65441333333635CE25041C3F5284CA9A654411F85EBB15BE250415C8FC255AAA65441E17A141E5BE250415C8FC255AAA65441D7A3706D5AE25041713D0A07ABA65441A4703D5A58E250419A9999A9ABA6544149677F5158E25041DC3006A4ABA6544149D1523E58E2504121A4D5A9ABA65441FA47DBB657E2504156EE2A55ABA6544125F2D5BB57E25041720C9244ABA654417B14AEB757E250411F85EB41ABA65441666666C657E250410AD7A390AAA65441DFA1A86257E25041927E4A0CAAA654413902133857E25041E7C1F6D9A9A654416153F21157E25041E5C9F6C0A9A654411D0BC20157E25041106E59B6A9A654413944FD9656E25041CE8D087BA9A65441200E4C0D56E25041DC210F16A9A654415C8FC29555E250417B14AEC7A8A654410AD7A3D055E25041000000A0A7A65441307AB47E55E25041875C9FF5A6A65441F6285C1F55E25041F6285C2FA6A65441EF8C38D254E25041D34B2DEBA6A65441BCE3DABC54E2504156864C3BA7A65441516B85A754E25041F6690013A7A6544185EB51F853E250410AD7A320A6A654416666669652E250417B14AEC7A5A654417DEE61F351E25041595B690BA5A65441D7A3707D51E2504133333383A4A654411930D23351E25041AC938CC0A4A6544161D4DE2751E25041CC8CABD3A4A654418FC2F5B851E25041E17A143EA6A6544114AE475151E25041CDCCCC0CA7A65441F6285C2F4FE25041A4703D2AA7A65441AE47E12A4DE2504152B81E25A8A654410AD7A3604EE2504166666616A8A65441333333434EE25041295C8F02A9A65441713D0AD74EE25041D7A3703DA9A6544152B81EE551E25041295C8F82A7A65441D7A3703D52E2504185EB5178A9A654413333337353E250411F85EB41ABA65441C5D304DD53E25041BDA5A264ACA654414969742454E25041AE5D5E1EADA65441AC8A742255E25041FDE6D5A5ADA65441766113A955E250417BE04D62AEA654411F85EBC155E25041CDCCCC7CAEA65441418EB9C255E250418E853686AEA654414EF6C9CB55E250413B17E792AEA65441E17A14EE55E2504114AE4781B0A654418FC2F5E856E250410AD7A300B2A654414478ECA358E25041ED4381F0B2A654418FC2F5E856E250413D0AD713B4A65441E008B9DA56E25041ED7770FDB4A65441767969CD56E250412CC798FEB4A65441B81E85CB56E25041EC51B80EB5A654414D324D4F56E250414B1B9009B5A654416FFE785E55E25041EE2A811EB5A65441119B7A1D55E25041CF2C8DDBB5A654415C8FC2D554E25041C3F528ACB6A65441AE47E1DA53E25041295C8F22B7A654419D983B7952E25041657F2C3DB7A65441585F572353E250412AB998BEB7A65441D8E9EE9353E250410264280EB8A65441F586960254E25041B308A4C4B7A65441A098270D54E250415113FBCAB7A654415C8FC21554E2504148E17AC4B7A65441D7A3707D54E25041EC51B80EB8A65441D7A3707D54E25041CDCCCC9CB9A654415C8FC29555E2504133333313BAA654410AD7A3D055E2504166666666BBA654418F0C66C056E25041283FD20FBCA65441BC17CAC956E2504136444F11BCA65441550B157C57E2504171E952FABBA6544152B81ED557E25041B81E85EBBBA65441C1BEE3D657E25041F6E99DEEBBA654415A67BCDA57E2504169F81EEEBBA65441F7B3A32958E25041EC34154DBCA65441EC51B8DE58E2504166666626BCA6544185EB512859E250418FC2F548BBA65441DA66F44B59E25041A43ABC39BBA65441DBE3414D59E250411C052D35BBA654413F1028AB59E250418E910F11BBA65441713D0AF759E250410AD7A3F0BAA654411F85EB315AE250417B14AED7B9A6544185EB51E859E25041713D0A67B8A654411F85EB715CE250415C8FC275B8A654418FC2F5D85CE25041713D0A27B9A65441CDCCCC6C5DE25041F6285CBFB8A65441F1FED13F5EE250417582AAD9B8A654416CAC294C5EE250419FFD6BC4B8A65441EA45E5BD5DE2504100A268B5B7A65441392EFE885DE25041E852F96FB7A65441FBE0B5085DE2504115C2717FB6A654417D440B215CE25041BE9CD9F9B5A65441D8C843AE5BE250411A23A9B7B5A65441978EB9D25AE2504184E3C5A6B5A654412414533A5AE250415B9970FBB5A65441C78948335AE25041FF1D55F7B5A65441333333235AE250419A999909B6A654410000009059E2504114AE47B1B5A65441A5EF6B7C59E2504112C4A98CB5A654412EC61F6F59E250413B01E884B5A65441A7BB166759E2504113D7C364B5A654419A99991959E250413D0AD7D3B4A6544101E6943F59E250418480BCC6B4A65441B6F2523C59E2504146B3B4B9B4A65441F0C9FD8E5AE25041261B2C43B4A65441DFC7F5B95AE2504182198C65B4A654415C8FC2855BE2504114AE47F1B4A65441F4A2BCB55CE25041AB025ACBB4A6544108A338EA5CE25041DD9031AEB4A6544152B81E055DE25041B81E85BBB3A65441FA9A86065DE25041AA69F2B8B3A65441EC340E045DE250418394CE8AB3A654415C5631875DE25041CAD471CDB2A65441666666B65DE25041713D0A77B2A65441D3ED17C85DE25041C057BA6FB2A65441E0F2B9CC5DE250419FBA0969B2A65441017170BB5EE250416BE39900B2A654413D0AD7535FE2504133333323B1A65441D62F7F675FE25041E4E2BF20B1A654410A71FE845FE25041120181F4B0A65441FFBE315060E25041E20F92E3B0A65441A258D3E860E25041F1EDA59DB1A654416887CBB361E25041F7F54D25B2A654411F85EB2163E2504114AE47F1B4A65441B81E85EB64E25041CDCCCC2CB5A6544137B282D764E2504146F07B09B6A6544129BF98E064E25041408E3D2CB7A65441F01BDD9A65E250415BCD5F08B8A65441F5826EF665E25041F123633DB8A65441295C8FD266E2504133333393B8A65441EC51B8BE67E250410AD7A3F0BAA65441EA9D32A167E25041AE14BF03BBA654414431C09066E25041C14CA6D7BBA654410000003066E250419A999939BEA65441CEEDF95965E2504162924802BFA65441AF6EFCA265E250410EA316CDBFA6544152B81EF565E25041A4703D6AC0A654410579B0E465E25041A2F89883C0A65441BBD187EF65E250416044B6A1C0A65441DA83136765E250412B087545C1A65441295C8F5265E2504152B81E65C1A6544114AE472166E25041295C8F82C1A65441BAFA4E4E66E2504119F558C6C1A65441822ECCA966E2504165D10B49C2A65441A3BF9F9366E250418EA96248C2A65441AE47E16A66E25041D7A3703DC3A654411F85EBE163E250413D0AD773C4A65441818E25DE63E25041B13D716FC4A6544168BBBAC063E25041B8E7D877C4A65441C1F6FE7C63E25041BD403F12C4A65441CA92D07362E25041878C4386C4A654418FC2F5C862E250419A9999E9C4A6544106F993C762E25041934637F1C4A654411F8BA9D362E25041077150FFC4A65441C1683DB162E250419E88516CC5A65441E17A148E62E25041E17A142EC6A65441BFE6C7E062E25041BFE6C780C6A65441A15E760663E25041E70CB795C6A65441C3BC450363E25041C3BC45A3C6A6544148E17A0463E2504148E17AA4C6A6544172257AFF62E25041E6FF66B3C6A65441642FE7C462E25041BE9557ACC7A654413333331363E250413D0AD7E3C8A65441713D0A2762E2504114AE47C1C9A6544185EB515861E250413D0AD7A3C9A6544152B81E0560E25041295C8F72CAA654419F6720455FE2504186CC7453CBA6544114AE47B15EE250410AD7A300CCA65441543C0D6F5DE250415A06628FCCA65441713D0A375CE250419A999919CDA65441AE47E14A58E2504100000000D2A65441D7A370AD59E2504100000070D6A65441C3F528AC5FE250411F85EB01E0A65441608B0C965FE25041487798FDDFA65441539DA79D5FE250414E63DC09E0A65441D0F681C05CE250410D546580DFA654418EC1EB9D5CE25041102BB9DEDFA65441AE47E1CA59E25041EC51B88EEAA65441333333235AE250411F85EBA1EFA6544114AE47415AE25041EC51B83EF4A654412CE4803F5AE2504175A4A542F4A65441295C8F7259E250417B14AE07F6A65441951F237459E250410990FA33F6A654410AE75B7759E250417D19788EF6A6544114AE478159E2504152B81EA5F7A654417B14AE7758E25041D7A370FDF7A65441164B36E357E25041D6997375F8A6544102CCC46157E250416EBE15DEF8A65441E20E6BFA56E25041846AA031F9A65441EC51B81E58E25041C3F5288CF9A654419ADFBA3D58E25041BB4BFDACF9A654419A99991959E250415C8FC295FAA6544126D3F89858E25041D7C41F64FBA654416666668658E250411F85EB81FBA654414E75126158E25041CA4FCB89FBA654410C7DC97458E25041FDC5669AFBA654413F1A0F4458E25041EA15EA8FFBA6544152B81E5556E2504185EB51F8FBA6544156CF2EEC55E250414DA8BB48FEA65441BFD4917455E25041EB94FFEB00A754411F7CD16955E250416D6D848201A75441AF34FA3354E25041F03909EF02A75441713D0A8752E2504152B81E0505A754414289016E52E2504152B81E0505A75441317BD95E52E25041917DF31605A75441C8C689AC51E2504152B81E0505A7544136A8C17251E2504152B81E0505A754412500628F50E25041A38F7BAA05A75441B81E855B4FE2504114AE477107A75441000000F04CE250419A99994909A75441F88628D44CE250413304714A09A754418C8860D24CE250412ACAC24B09A75441F3A280A84CE250412ACAC24B09A754418FC2F5084BE2504185EB515809A75441E82270FB4AE250412ACAC24B09A7544114A656DA4AE250412ACAC24B09A75441A5ACDDD34AE250411FB1012709A75441B81E856B49E2504185EB51D807A754411E03AE1048E25041AD7CA2D007A75441333333D346E250419A9999C907A75441D03CA7F446E25041D0CE8E3807A75441EC51B82E47E25041CDCCCC3C06A75441208BB1F545E25041539B91B903A75441E8B4D9AE45E2504183ACFE2703A75441DA0DB07B45E25041AF4017F102A75441A41CAB7F44E25041255F050404A7544137614C5F44E25041255F050404A754418FC2F55844E25041A4703D0A04A75441619A122744E25041255F050404A754410A8BFB4B43E25041255F050404A75441A4703D0A42E250417B14AEE704A75441642329A541E2504165A5D40305A75441E0A2F23340E250416632987205A75441355AD4CE3FE250411B74D18605A7544185EB51F839E25041713D0A2707A75441295C8FC238E250419A99990907A754417B14AE0737E25041AE47E1BA07A7544191FC58C634E25041719DB1F107A754415FAE899134E250414951020B08A7544130DAFE1730E250412AAC50BE09A75441B72449432AE25041EDB15D400BA75441A0BEC1C629E25041EF8FF8B209A754417B14AEA729E2504185EB515809A7544137C012AA29E2504193B16F5709A754418A236AA629E250411FCAC24B09A75441828DADDA2DE25041019261CB07A754416666662631E250413D0AD79306A75441E8D4FCB731E25041E9CCC38506A75441C17BBF2536E25041F6A88DCF05A75441C3F528BC34E25041E17A140EFDA65441CDCCCC9C24E250418FC2F54800A75441C3F528FC25E2504114AE47D105A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 400097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441295C8F6205E75041295C8FA22BAA5441666666D604E7504148E17A942AAA5441C3F5282C04E75041AE47E13A2AAA5441295C8F8203E75041295C8FE227AA5441666666A602E750418FC2F58827AA54416666664603E75041CDCCCCFC26AA544185EB51C803E750418FC2F51824AA5441295C8F0201E750410AD7A3B022AA5441666666D6FFE6504148E17AF424AA544148E17AC4FDE65041EC51B8AE24AA5441EC51B8FEFAE6504148E17A4425AA5441295C8FD2F9E65041EC51B8AE24AA544185EB5188F8E65041CDCCCCCC24AA5441EC51B88EF7E65041CDCCCCBC25AA5441295C8F62F1E650410AD7A33025AA544185EB51A8E7E65041295C8F0221AA5441C3F5281CE7E650418FC2F54821AA544101030000000100000080010000A4703D1A94E65041666666263EAA5441C3F5288C95E6504148E17A643CAA54410AD7A31094E650418FC2F5183DAA5441A4703D7A93E65041EC51B84E39AA544185EB512895E65041295C8F7238AA5441666666D696E6504148E17A5438AA5441A4703D4A96E65041CDCCCC6C34AA54416666660699E650418FC2F55834AA544148E17AC499E65041EC51B85E33AA544148E17A549BE65041EC51B80E33AA5441E17A145E9BE65041295C8FA235AA54410AD7A3609EE65041CDCCCC4C36AA54410AD7A3F09FE6504148E17A3435AA5441A4703DAA9FE650416666662634AA54410AD7A3F09FE650410AD7A34033AA5441A4703D3AA1E65041666666F631AA544185EB51E8A2E650410AD7A31031AA544185EB51D8A3E65041AE47E11A31AA5441295C8F32A4E65041CDCCCC5C30AA544185EB51A8A6E65041666666A631AA544148E17A84A7E650410AD7A36031AA5441C3F5284CA8E650410AD7A32030AA5441A4703D0AA9E650410AD7A32030AA5441295C8F32A9E650418FC2F5B82EAA5441295C8F72AAE65041295C8FD22DAA54410AD7A320ACE65041EC51B8DE2BAA5441295C8FC2AAE6504148E17AB428AA54410AD7A3C0ACE65041CDCCCCDC28AA544148E17A04AFE6504148E17A1428AA544185EB5158B0E65041AE47E11A27AA5441EC51B8EEB0E6504148E17A4425AA54410AD7A350B3E650410AD7A30028AA5441EC51B81EB3E65041CDCCCC3C28AA5441C3F5281CB5E65041EC51B84E2AAA544166666656B7E650418FC2F5482BAA5441C3F5289CB7E65041AE47E13A2AAA54410AD7A3C0B6E650416666669628AA544166666606B7E65041EC51B82E27AA5441A4703D4AB9E65041666666A627AA544166666646B8E65041AE47E1CA26AA544148E17AA4B9E650416666669623AA544185EB5148BBE650410AD7A34024AA5441A4703D6AB7E65041AE47E12A21AA5441666666E6B8E6504148E17A141EAA54410AD7A330BAE65041AE47E1AA1EAA544148E17AC4BCE65041EC51B81E1EAA54410AD7A300BDE6504148E17AD41CAA5441295C8F72BEE65041295C8FB21BAA5441C3F5286CBFE65041EC51B8DE1CAA5441295C8F42C1E6504148E17A441BAA544185EB5188C1E65041EC51B87E18AA54410AD7A3A0C2E65041AE47E11A18AA544166666616C5E65041EC51B87E18AA544185EB51D8C6E650416666669619AA5441A4703DFAC7E6504148E17AB419AA5441A4703D3AC9E65041EC51B8AE1AAA5441A4703D1ACBE65041295C8F121BAA544185EB51A8CEE65041295C8F721AAA544185EB5188D0E650416666669619AA5441EC51B84ED3E6504148E17A941BAA5441A4703DEAD2E650410AD7A3001EAA5441A4703D0AD6E650410AD7A3201CAA5441C3F528CCD7E65041AE47E1CA1CAA544185EB5108DDE65041CDCCCC0C1CAA54410AD7A3F0D6E650410AD7A3A019AA5441295C8F92D5E65041CDCCCC7C1AAA544166666676D3E65041EC51B80E1AAA544148E17AA4D2E65041AE47E15A19AA5441295C8F22D2E650418FC2F58818AA54410AD7A350D1E65041AE47E18A16AA544148E17A34CFE650410AD7A39015AA5441713D0A77CBE650416666664613AA544185EB5168C8E650410AD7A32012AA544166666616C5E65041EC51B85E10AA5441295C8FB2BFE65041CDCCCCEC0EAA54410AD7A370BBE650418FC2F5D80EAA5441295C8F12BAE65041295C8F6211AA54410AD7A390B9E65041295C8FB211AA5441295C8F82B8E650416666660613AA5441EC51B86EB8E6504148E17A7413AA5441A4703D0AB8E65041AE47E10A14AA5441A4703D6AB7E65041295C8F3214AA5441EC51B89EB5E6504148E17A4416AA544185EB51C8B3E65041AE47E17A17AA544185EB5198B1E650418FC2F52819AA5441295C8FB2B0E650418FC2F52819AA5441EC51B8FEAFE65041EC51B8BE19AA5441C3F5283CAEE65041295C8F521CAA544148E17AD4ACE65041AE47E1CA1CAA5441295C8FB2ABE65041EC51B86E1EAA5441A4703D8AABE6504148E17A041FAA5441295C8F22AAE65041AE47E1DA20AA5441295C8F82A9E6504148E17AA424AA5441295C8F12A6E65041666666D629AA5441295C8F32A4E65041EC51B8DE2BAA5441E17A149EA1E650418FC2F5382CAA5441666666969FE650410AD7A3B02CAA5441C3F5286C9CE65041295C8F222EAA54410AD7A38097E650410AD7A3002DAA5441A4703D3A97E65041EC51B87E2CAA544185EB512895E65041CDCCCC4C2CAA544185EB51E893E650410AD7A3502DAA5441A4703D3A92E65041666666762FAA54410AD7A30090E65041295C8FA230AA5441C3F5289C8FE6504148E17A2431AA5441E17A145E8CE65041EC51B8AE33AA544185EB51888AE65041CDCCCC1C34AA544148E17A1486E650418FC2F5D836AA5441C3F5280C84E65041EC51B86E37AA544185EB51C881E65041295C8F7238AA5441295C8FF27FE6504148E17AA438AA5441E17A14AE7DE650418FC2F55839AA544185EB51287CE65041AE47E17A3AAA544185EB515879E65041666666563BAA5441666666E677E650410AD7A3103BAA5441295C8F5275E65041295C8F923BAA54410AD7A35072E65041EC51B8BE3CAA5441E17A148E70E65041295C8FC23DAA5441A4703D5A6DE650418FC2F5A83EAA54410AD7A3C06BE6504148E17A543DAA5441295C8F2269E65041EC51B83E3FAA5441C3F528EC67E650410AD7A3D03EAA5441C3F528AC66E65041CDCCCC5C3FAA544148E17A4465E6504148E17A943EAA5441295C8FE262E65041666666163FAA5441A4703DEA5FE65041EC51B87E40AA5441A4703D5A5EE65041666666A640AA5441666666565DE650410AD7A3203FAA5441C3F528EC53E65041AE47E19A3DAA5441E17A144E51E65041295C8F723DAA544148E17AB44FE65041666666663AAA5441295C8F124CE65041AE47E13A39AA5441C3F5283C4AE650410AD7A34038AA54416666666648E65041295C8F2238AA544148E17A9447E65041AE47E14A38AA5441295C8FB247E65041666666B635AA544185EB510847E65041AE47E1CA35AA5441E17A14AE46E650418FC2F53836AA5441A4703DDA42E65041295C8F8237AA5441E17A145E41E65041666666A636AA544185EB51C83BE65041CDCCCC3C37AA544148E17A0437E65041666666B635AA5441295C8F3236E650416666663633AA544148E17A8434E65041295C8F1234AA544148E17AE433E6504148E17A5433AA544185EB51C831E65041AE47E15A32AA5441C3F5286C2EE65041AE47E1AA32AA5441666666E62CE6504148E17AA42EAA54410AD7A3702AE65041EC51B82E2CAA5441666666E627E65041295C8FF22BAA54416666666625E65041CDCCCCFC2BAA5441E17A14EE24E650418FC2F5F82AAA544185EB518821E65041666666162BAA5441C3F5283C1DE65041666666A627AA544185EB51D817E65041EC51B84E25AA5441A4703DBA17E650410AD7A39024AA54410AD7A37016E650410AD7A35023AA5441C3F5280C16E650416666665622AA5441A4703DEA14E65041295C8FF221AA5441E17A144E15E65041EC51B81E1EAA5441E17A140E14E650410AD7A3D01BAA5441C3F5288C0EE65041AE47E11A1DAA544185EB51880DE65041666666661CAA54410AD7A3100DE650410AD7A3F019AA5441A4703D5A0EE650416666661617AA5441E17A14DE0CE65041CDCCCC6C16AA544185EB511800E65041CDCCCCEC13AA544166666656FEE55041295C8F2215AA5441C3F5284CFEE55041666666D615AA5441A4703D2A02E65041EC51B8FE15AA5441C3F528CC05E65041295C8F4218AA544148E17AA40AE65041666666361AAA544185EB51680AE650418FC2F5981CAA5441A4703D2A0CE65041CDCCCC1C1BAA544148E17A340CE65041295C8F021CAA5441666666560DE65041666666561DAA544148E17AB40EE65041666666B621AA544148E17A640EE65041295C8FA221AA5441C3F5282C0AE65041666666061DAA544166666676F7E5504148E17AE41BAA544185EB51B8F6E55041295C8FE222AA5441295C8F72F6E5504148E17A6423AA5441E17A146EF5E55041295C8FE222AA544148E17A54F6E5504148E17A3421AA5441C3F528FCF3E550418FC2F5C81EAA54410AD7A370F3E55041666666E61EAA5441666666D6F1E5504148E17A241DAA544166666686F1E55041666666261BAA544166666666EEE550416666668615AA54410AD7A320EEE550410AD7A3B013AA5441A4703D4AECE55041295C8F1211AA5441666666F6EAE550418FC2F5E80DAA544148E17AC4EAE55041EC51B86E0AAA544185EB5168E7E55041295C8FC206AA544148E17AD4E4E5504148E17AE402AA544185EB5108E3E55041295C8F2201AA544185EB5128E1E55041295C8FA2FEA95441C3F528ECE0E55041EC51B84EFDA95441666666D6DDE55041CDCCCC3CFBA95441C3F528CCDDE5504166666666F9A9544148E17A64DCE55041EC51B82EF5A95441A4703DAADCE55041666666D6F2A9544185EB51D8DBE550418FC2F528F1A95441295C8F42DBE550410AD7A310F0A95441666666D6D8E55041CDCCCC1CEEA95441C3F528BCD9E55041AE47E1BAEBA95441E17A14EED9E55041AE47E1DAE9A954415C8FC2D5DDE5504152B81E25E8A95441295C8FE2DBE55041AE47E1AAE5A95441333333F3D7E5504133333363DDA954410AD7A350D9E5504166666606DCA95441E17A149ED9E550419A999999D9A9544185EB5128D7E5504148E17AA4D4A9544166666606D6E55041CDCCCC8CD3A95441A4703D3AD4E5504148E17AE4D0A9544185EB5198D0E550410AD7A350CEA9544148E17A54CFE55041295C8F72CAA9544133333353CFE5504114AE47B1CBA9544148E17A64D0E5504114AE4731D0A9544185EB5198D0E55041EC51B8CED7A9544148E17AE4CFE5504148E17A14D8A9544166666636CEE5504166666676DAA95441A4703D1ACCE5504148E17A94DAA954410AD7A3D0CAE55041AE47E12ADBA95441C3F528ACCBE55041666666E6DDA9544166666676CAE550418FC2F5A8DFA95441C3F528BCC5E55041AE47E1FAE2A95441E17A145EC4E55041EC51B8AEE3A95441295C8FD2C3E55041EC51B88EE5A95441C3F5287CBFE55041AE47E18AE9A9544148E17AE4BBE55041AE47E10AECA95441295C8FC2BAE5504166666646ECA954410AD7A390BAE55041EC51B85EEDA95441A4703DDAB6E55041CDCCCC5CEFA954415C8FC2D5B4E5504100000020EFA9544133333383B0E55041D7A370EDF0A95441E17A145EB0E55041295C8F62F3A95441C3F5283CB1E55041295C8F92F4A95441295C8F02B2E55041AE47E1AAF6A95441666666A6B8E55041AE47E1BAFFA95441C3F528DCB9E55041AE47E1BAFFA95441E17A145EBAE55041EC51B8BE00AA54419A999969BAE55041713D0AF701AA54415C8FC275BCE5504185EB51F804AA54418FC2F558C0E55041E17A14DE0AAA5441AE47E1DAC5E55041CDCCCC9C05AA544100000040C7E55041666666B605AA5441A4703DAAD2E550410AD7A3F0FBA95441A4703D6AD1E55041CDCCCC5CF9A9544148E17A74D6E5504148E17A54F7A9544148E17A44D9E55041EC51B8FEF7A9544185EB5198DAE55041666666A6FAA95441A4703DAADCE55041CDCCCC6CFDA9544166666606E0E55041666666E600AA5441C3F528FCDFE55041EC51B8EE02AA5441295C8FA2E0E550413333338307AA5441F6285C4FE7E55041EC51B89E12AA54410AD7A3D0E8E550416666668615AA5441295C8F82E1E55041EC51B84E16AA5441295C8F42E5E55041666666D61AAA5441295C8F12E8E5504148E17A841CAA5441C3F5286CE8E55041666666561DAA54410AD7A3C0E4E550410AD7A3901FAA5441295C8F22E2E55041666666461EAA5441A4703D1AD6E55041AE47E1EA29AA544148E17AC4D6E55041295C8FB22AAA54411F85EB81D6E55041C3F528DC2BAA5441CDCCCC3CD4E55041AE47E1FA2CAA5441D7A3704DD2E5504114AE47A12EAA5441295C8FD2D2E55041D7A370AD2FAA5441295C8FC2D3E55041EC51B84E2FAA544166666666D5E55041CDCCCC8C32AA5441E17A149ED4E55041CDCCCC2C33AA5441295C8F52D5E55041CDCCCCBC34AA544148E17A84DFE550418FC2F5D82CAA544185EB51C8E1E5504148E17AF429AA544185EB5158E3E550410AD7A3302AAA544166666676E8E55041EC51B8FE24AA5441C3F5282CECE550418FC2F54826AA5441295C8F12EDE5504148E17A1428AA5441666666D6ECE55041AE47E14A29AA54410AD7A330E8E55041666666462DAA544148E17A94E8E55041295C8FC22EAA5441C3F528DCE6E550410AD7A3802FAA5441A4703DCAE4E550418FC2F58831AA544185EB51A8E3E550416666665631AA54410AD7A330DEE55041295C8FE236AA5441295C8F12DEE55041CDCCCC1C39AA5441E17A145EDDE55041EC51B8EE39AA54410AD7A3D0D8E55041000000803CAA544114AE47C1DBE5504114AE475144AA5441A4703DBADBE55041EC51B85E42AA5441A4703D9ADDE550410AD7A3A041AA544166666656E0E55041AE47E13A3EAA5441D7A370CDE1E55041B81E859B3EAA5441B81E85EBE9E5504114AE47F136AA544185EB5198E9E550418FC2F58836AA5441666666F6EAE55041666666E632AA544148E17A84EEE5504148E17A2431AA5441666666C6EDE55041AE47E18A2FAA5441295C8FF2EEE5504148E17AE42FAA54410AD7A3B0F4E55041666666662BAA5441E17A140EF6E55041CDCCCC5C2BAA5441666666D6F6E55041EC51B87E2CAA5441C3F528CCFBE55041295C8F622FAA5441A4703D7AFDE55041AE47E1AA32AA544185EB5178FFE55041CDCCCC3C32AA5441A4703D1AFEE55041295C8F9231AA5441295C8F42FEE55041666666B630AA5441C3F5285CFDE55041AE47E1EA2EAA544166666676FCE55041295C8FD22DAA5441E17A146EFAE55041666666062CAA544148E17AA4FBE55041CDCCCCBC2AAA544148E17AC4F9E550416666669628AA5441E17A143EF8E5504148E17A5424AA5441A4703DEAF6E550416666669623AA5441666666E60EE650418FC2F53822AA5441666666D60FE650410AD7A38025AA5441C3F528BC10E65041CDCCCC1C25AA5441295C8F2214E65041CDCCCC9C27AA5441C3F5287C14E650410AD7A3302AAA5441A4703DDA15E65041295C8F422CAA5441E17A14DE16E6504148E17A542EAA5441A4703DFA18E65041AE47E13A2FAA5441666666661BE650418FC2F5B82EAA54410AD7A3D01AE65041AE47E13A2FAA5441E17A14BE1DE65041AE47E10A32AA54410AD7A3C020E650410AD7A35032AA5441A4703D1A21E65041EC51B84E34AA544148E17A8425E65041295C8F1234AA544185EB518826E65041AE47E18A34AA54410AD7A3202AE65041295C8F6234AA54410AD7A3602BE65041295C8F023AAA54410AD7A3202FE650418FC2F5E83AAA544185EB51F833E65041AE47E14A3DAA5441A4703D8A33E65041295C8F523FAA54416666666634E65041295C8F4240AA54410AD7A3103AE65041CDCCCC6C3EAA5441E17A144E3DE65041EC51B8EE3EAA5441C3F5287C3CE65041295C8F7242AA54410AD7A3D03DE650410AD7A32044AA5441C3F5280C3EE65041CDCCCCBC43AA5441C3F528FC3EE6504148E17AD444AA544185EB51A842E65041CDCCCC1C43AA544148E17AD443E6504148E17A4443AA54410AD7A33047E650416666666644AA5441E17A142E49E650410AD7A35046AA544185EB51184BE650418FC2F51847AA5441A4703D4A4BE65041AE47E19A47AA5441E17A149E4CE650410AD7A33048AA5441C3F5284C4EE650418FC2F57841AA5441C3F5289C53E650418FC2F5B842AA5441C3F5281C56E65041CDCCCC0C44AA544148E17A2458E65041295C8F8241AA54410AD7A35059E65041AE47E14A42AA5441666666765BE650418FC2F51842AA5441295C8FF25CE65041AE47E13A43AA544148E17AF464E65041295C8FD241AA5441E17A144E65E6504148E17A5442AA54410AD7A3C066E65041CDCCCCDC41AA5441A4703DCA66E6504148E17A1441AA5441C3F528EC67E65041CDCCCCAC3FAA544185EB512868E65041EC51B81E41AA5441A4703DEA69E65041EC51B80E42AA5441295C8FA26BE650410AD7A3B040AA5441E17A141E6DE650416666668642AA544148E17AB46DE650410AD7A34042AA5441C3F5282C6EE650410AD7A3B040AA5441295C8FE271E6504148E17AB441AA54410AD7A39078E65041EC51B81E41AA5441A4703DEA78E65041CDCCCC2C42AA54410AD7A3207AE65041EC51B85E42AA5441295C8F027FE65041AE47E1CA3FAA5441666666B67FE65041CDCCCC9C40AA54416666662683E65041EC51B86E3CAA54410AD7A31085E650410AD7A3603BAA5441E17A14AE87E65041CDCCCC4C3BAA544148E17A8489E65041666666863DAA5441C3F528AC8EE650410AD7A3F03CAA5441A4703D6A8FE65041CDCCCC2C3DAA5441E17A146E90E650418FC2F5B83DAA5441A4703D8A92E650410AD7A3003CAA54410AD7A32093E650418FC2F5B83DAA5441A4703D1A94E65041666666263EAA5441
+</a>
+
+<b>
+010600000001000000010300000001000000AE010000110CCB00A1E65041EEB52E5D2CAA5441A29F656D9FE65041C6DAA5E32CAA5441A4AE92589CE650412D13532C2EAA5441682098459BE65041AC7B7DEC2DAA5441CC6F838D97E650417BAD780F2DAA54411D1FD78097E65041E6A4AF002DAA54410AD7A38097E650410AD7A3002DAA544105175D8097E65041224621002DAA5441E467DB0D97E65041C4FB897A2CAA5441F6AD3AB296E65041B64AE8712CAA5441653CE53D95E65041465D2D602CAA54410B6C210B94E6504193ED34512DAA54419EBE275E92E65041AD8F7D482FAA5441A4703D3A92E65041666666762FAA5441B6E1663492E650415BFB79792FAA54419A6B031B92E65041C64C43972FAA5441CBEA460590E65041F91BC4A730AA544126C5282A8FE650419D19B5AE31AA5441B7E991B28CE650417BFC886C33AA5441E17A145E8CE65041EC51B8AE33AA54415B4D33508CE65041DDF1F8B133AA5441E8A628418CE65041ED0C97BC33AA544166C6D5A08AE65041BA1F262A34AA5441BD073F5986E65041389380BB36AA544147DF8C2F86E650417BEE54C836AA544148E17A1486E650418FC2F5D836AA5441C7C0CE7284E6504151F82C5137AA5441593C8A1F84E6504112E6CB6A37AA54411714E12B82E6504191069E6638AA5441A5D72ACF81E6504187D57D6F38AA544185EB51C881E65041295C8F7238AA5441295C8FF27FE6504148E17AA438AA5441168D14C27DE6504140DABD5239AA5441DCA1BE297CE6504110D79E7F3AAA5441A85B916C79E65041ABFCBC5A3BAA5441257B3ECC77E6504193BC00193BAA54418D0CE6B976E65041C6BDCE4B3BAA5441EFF0C46975E65041337CFD8D3BAA5441339489A972E6504113356AA33CAA54410A23F40271E65041D18E287F3DAA5441E17A148E70E65041295C8FC23DAA5441FE1BE1A96DE65041473494923EAA54418BDA015B6DE65041112B4CB13EAA5441685F98D06BE650419FF29E683DAA5441F8C4908569E650419D4249F63EAA5441295C8F2269E65041EC51B83E3FAA5441EB141C7668E6504134F78F013FAA544181B390F667E650416C001FDD3EAA54411DE3CCC366E65041EB7D97603FAA5441B2752DB566E6504157ADD9583FAA5441C3F528AC66E65041CDCCCC5C3FAA54415DC8406F65E6504137504DAC3EAA54415BD54C4F65E650415FC0629B3EAA54415FA66D9263E65041F121F0F03EAA54417F829F0B63E65041D630A70D3FAA54410419C50060E65041EEE0717D40AA5441CFCD884A5EE6504153B644A940AA544174D597435DE65041D43DDB1E3FAA54415C603B855CE65041B3BFD0FE3EAA54418017FD2354E650410F76E8A33DAA54416924DB5D51E65041515D887E3DAA54417179AB5751E65041EC1423733DAA5441E17A144E51E65041295C8F723DAA5441B454063D50E650413E9C796A3BAA5441374188BD4FE6504110D79E7F3AAA5441CC438D7B4CE65041B271B25C39AA5441295C8F124CE65041AE47E13A39AA5441ED8EFAFA4BE65041A3DD552E39AA54415D9F9ED549E65041AD0BEA4538AA54415164F18C48E6504105A1003038AA54411DF43DCD47E650412940FA3F38AA544148E17A9447E65041AE47E14A38AA5441C91DC39447E650417D27AF4438AA5441F66B008647E65041AD0BEA4538AA5441DA872DAC47E65041E11E894236AA54416CAF9EAF47E650414637F5F635AA54411C19B5D646E65041B915083836AA54412ACD87F343E650410369F02337AA5441A4703DDA42E65041295C8F8237AA54412EFDD7D442E65041E8536F7F37AA5441D197DAD042E65041204EB58037AA5441048A5A5C41E65041389380BB36AA544193252DB63BE65041B810F93E37AA544103051ED439E65041389380BB36AA54412474E01137E65041ED01B0BA35AA544148E17A0437E65041666666B635AA54411333430437E6504175A4BCB535AA54416E51070137E6504139988FB435AA5441D32BE92536E650417BF7074F33AA54415FB37F9B34E6504107B53C1434AA54411B84989234E65041C385550B34AA544148E17A8434E65041295C8F1234AA5441C1D9F51234E6504169DBB28B33AA54414B373CD433E65041F338F94C33AA54412ABC135832E65041A8DB4E9D32AA544146D66E6F31E650415FA3256332AA5441AEE2980F2FE65041FAEAAD9B32AA544187FEA6672EE65041FB7351AD32AA5441C9FC86A02DE65041F7688A9030AA5441666666E62CE6504148E17AA42EAA5441B56302962BE6504197DE16542DAA5441D152FF6B2AE65041E1875A342CAA5441DCE1F5A327E650410D7F9FF32BAA5441DEE8DF6A27E65041E15189F42BAA544147A9068B25E6504187B287082CAA5441A5CAC78225E65041C28D58FC2BAA54416666666625E65041CDCCCCFC2BAA5441BA683C2825E65041FF598D762BAA5441E9C9D7D324E65041001CD9F92AAA54412095FFB721E65041F441C9142BAA5441FAD5D88921E65041C88DEA162BAA544136F72A8921E65041A80D5F162BAA544185EB518821E65041666666162BAA5441C3F5283C1DE65041666666A627AA544168B64E1B1AE65041CE3D594A26AA5441732F8FF217E65041DCDF745D25AA5441CB57D1F017E650412CE35D5925AA544185EB51D817E65041EC51B84E25AA5441B86883CC17E650418B9F1C0425AA54414EC40D8B17E650418613646A24AA5441D8985D7E16E6504127697E6723AA54412D3D487716E6504179B6165723AA54410AD7A37016E650410AD7A35023AA54414F286E3D16E65041A7E21AD122AA54415D9E120A16E650417F78295A22AA54411CC2958F15E65041D8FF7F2B22AA5441A4703DEA14E65041295C8FF221AA54410A0C231F15E65041C3A36CEB1FAA54418AE4AD3C15E65041F6AFCF341EAA5441DFDF83B414E650411DE08B031DAA54416C70907B14E650418E65879A1CAA544168810D4713E65041178171061CAA5441155EF8EB11E650412C3A237A1CAA5441011CD6810EE65041A75C40211DAA5441620CD17D0DE65041ECC2AC5E1CAA5441A2D3204B0DE65041272D68241BAA54410AD7A3100DE650410AD7A3F019AA544174AE28170DE650410D7732E219AA544195F941100DE6504117E268B719AA54413B297EDD0BE6504117E268B719AA5441713F3B9E09E65041A739B7CC19AA544148E17AA40AE65041666666361AAA5441C96448A40AE6504149C866381AAA54417B5BBAAA0AE650413B62E13A1AAA54410DC755850AE6504170E87C721BAA544101B3776E0AE650413193915A1CAA544148693A1F0CE65041D587FF151BAA54419540C4210CE65041D7A7F5231BAA5441A4703D2A0CE65041CDCCCC1C1BAA5441D4096A2D0CE65041FB7905641BAA5441AD3E0D4B0CE65041D11A07071CAA5441B0A1E7670DE65041ECBD9D651DAA5441985C1C2D0EE65041ADC60EE11FAA54417CAA58E30FE65041BA55695B25AA5441F19EA6A610E65041DA86252625AA5441C3F528BC10E65041CDCCCC1C25AA544112DE9CBF10E6504161BB561F25AA54416D3D60D410E65041AD15AD1925AA5441312285C313E6504179EDEA5627AA5441295C8F2214E65041CDCCCC9C27AA54416FBE0B6414E650413D830E7F29AA544133AA268214E65041166DB5392AAA54415D2A3D9214E650417EA50F522AAA5441A0796F9F15E650411475CBC62BAA5441ACB41CE816E6504192E825582EAA5441AE12E80B19E650412D0E44332FAA5441BA48865B1BE65041AD90CBAF2EAA54416A7D0C4D1BE65041FD5B45BE2EAA5441666666661BE650418FC2F5B82EAA5441401CB3D81AE650415059E3332FAA54415FCA86C81DE650413ED1520832AA5441E1541B601EE65041DA6C8C1932AA54410AD7A3C020E650410AD7A35032AA5441ABFA28C320E650417286FC5E32AA5441A15EB6C420E65041E6AE295F32AA54413E3C8D1B21E65041396BC73C34AA54412E0B7F2523E65041554A53FE33AA5441FA13F0A025E65041554A53FE33AA5441259E22C826E650412F8E158834AA5441101827A629E650412A20ED6734AA5441DF247A212AE65041CDC2835F34AA5441264A7FA22AE6504125E2EAAA36AA5441126B575F2BE650414B76B7FC39AA54411F37B48E2FE65041905417033BAA5441D1CD1D0234E65041451DCC3C3DAA544104BB8E9433E650413913AE4A3FAA5441E056A04234E650414E02901B40AA54416666666634E65041295C8F4240AA54410263867E36E650412928E6943FAA5441C3AFC32B3AE650413918BD433EAA54411AE23F243DE6504169F82AE83EAA5441E17A144E3DE65041EC51B8EE3EAA544114C9864D3DE65041ABB417F13EAA5441C40880563DE650417A6808F33EAA5441DC4D4B913CE65041EDD6538B42AA5441DFB025AE3DE65041AB7CEAE943AA5441ACC3B41B3EE650419F3C2EA843AA54419D56BC0C3FE6504146A208C544AA54411BC507A542E650416C54CC0E43AA5441F8CFD18D43E650411F93233B43AA544148E17AD443E6504148E17A4443AA54412C3293F043E650416713F34D43AA5441037B2D7144E6504187FC716643AA5441BFD7EF6146E65041C8DFBA2044AA54410AD7A33047E650416666666644AA5441BCA86F7D47E650416B454DB044AA5441908C0F6849E65041C51A724F46AA544169DA4B1E4BE65041A96DBDFE46AA5441DC1708604BE650412C531F9847AA544136E8CB924CE65041ACD0971B48AA54416B3308494EE65041EDDB628441AA544100DB49494EE650419215718441AA5441C3F5284C4EE650418FC2F57841AA544181BCF2D550E6504152F1D91142AA54415D1ABD6B53E650419F413DA142AA54419160EA2856E65041AB7CEAE943AA5441DA83F90A58E65041EDDB628441AA544158FFB51C58E6504104DA448C41AA544148E17A2458E65041295C8F8241AA54413106855F58E65041BF32F6A941AA5441AAF9629559E65041D22EAE3342AA5441844CAE445AE650416AF1F1F141AA5441E81C72775BE650411C5CDB0742AA54411E064FFF5CE65041F09DA33843AA54413E51F55B5EE65041CB255BFB42AA5441362DA7F764E65041051C1FC641AA5441C43DA21665E65041DD3B150442AA5441676A1B4465E65041CAEF044642AA54416773B1C166E65041EEEBD2C641AA54411DE3CCC366E65041BBAEDA9A41AA54411DE3CCC366E6504153B644A940AA544181B390F667E6504153BB53A23FAA54419C5B364E68E65041CFCBD31641AA5441CE3E89EE69E650416AF1F1F141AA5441F521DC8E6BE6504153B644A940AA5441BB8DA79A6BE650413CE2ECB640AA5441295C8FA26BE650410AD7A3B040AA5441C1F6D6636CE65041A168E09F41AA5441DCDF40276DE650410A25258242AA54412553B5A66DE65041F718074742AA54418BC903B56DE650412243DA3E42AA5441ABFCF2DC6DE6504162D061B941AA5441C12A4D0A6EE6504153B644A940AA5441101E2F1870E65041CFCBD31641AA54411D7214D071E65041F3156CAB41AA54415BCB897B78E650416E5EEA0041AA5441C25D948978E65041F89B561F41AA54410AD7A39078E65041EC51B81E41AA5441FED06AA378E6504194EB515741AA5441DB4802FF78E65041C4C6C41D42AA5441AAD487247AE65041DE87AA5C42AA5441EDFADC997CE650411D14701041AA54411AC0BE127FE6504106263DB83FAA54417A1F61A27FE650412D456E8540AA54411F0A33AD7FE65041837B0F9240AA5441CD7E555A83E6504193B7F11F3CAA54413848A19484E650414375F5A43BAA54410AD7A31085E650410AD7A3603BAA5441BA175E4785E65041479F045F3BAA5441BE0C4E5285E65041ABFCBC5A3BAA5441F3578A0887E65041F891D3443BAA54415B95464A87E6504179145BC13AAA54410CF6116E89E650419FF29E683DAA54417E5A3F148FE650412A7526E53CAA5441FF016D3B90E6504192FDA29D3DAA5441E17A146E90E650418FC2F5B83DAA5441006CFE1292E650416A6CD8613CAA54413F5EA19692E650412B7A35DE3BAA5441569E5DD892E6504113356AA33CAA544163DE191A93E6504104C871943DAA544130665D0294E650415381EE1B3EAA5441A4703D1A94E65041666666263EAA5441FBE1F44994E6504192355DEC3DAA54418BE9998E94E65041515D887E3DAA5441FB7B670895E65041E1CABA043DAA54410AB5587895E65041C512947C3CAA54410B6C210B94E65041451DCC3C3DAA54417E86BF7193E65041FA9BF13639AA5441BDD1FB2795E6504112E1BC7138AA5441E4B44EC896E65041AD0BEA4538AA54416128AF4D96E65041CE945D8534AA5441A4703D4A96E65041CDCCCC6C34AA5441DB0C8C4A96E650418E92CA6C34AA54416437D64496E650416C8A0F4034AA54414BE8EC1799E650416C8A0F4034AA5441064B4E2B99E65041EC9F5F2834AA544148E17AC499E65041EC51B85E33AA544183529BD299E650411308E55B33AA5441E2A521DD99E650417BF7074F33AA5441E041E31F9BE65041670B3D1933AA544148E17A549BE65041EC51B80E33AA5441C66481549BE650411E06781033AA5441571E8B679BE65041B7BC4B0D33AA5441571E8B679BE650412B30A69E35AA5441F3A174669EE65041B915083836AA544110C2EBEF9FE65041BDACB83135AA5441A4703DAA9FE650416666662634AA54418ABBF2B79FE650415B58A9F933AA54414CE6B1CB9FE650410AEE0D8D33AA5441C0AFF4DA9FE650416D8F1E3933AA5441A402408AA0E650413BA7BC9F32AA544131C0744FA1E6504153EC87DA31AA5441150EB105A3E65041B8C669FF30AA5441C33A267BA3E650419D9BE71631AA544185EB51D8A3E65041AE47E11A31AA54414750A4ECA3E65041F50B13F030AA54411409A20CA4E65041DE731E5030AA544128A19430A4E65041212BF86030AA5441295C8F32A4E65041CDCCCC5C30AA54417419E08FA4E65041738BA38D30AA5441494FCFC9A6E6504146ACCB9831AA5441310A048FA7E650412B04264131AA54412D068F47A8E65041265A0D1430AA544118DE32EAA8E650410AD7A32030AA5441A4703D0AA9E650410AD7A32030AA544128ADC028A9E65041E4A672102FAA544157ED562FA9E65041FA25E2992EAA54416E280478AAE650416000C4BE2DAA5441F1085718ACE65041C6DFB4DC2BAA5441B1475FA7ABE6504148790DC62AAA5441295C8FC2AAE6504148E17AB428AA5441BEE825D1AAE650413015A2B528AA544189D0A9CFAAE650412084F8B128AA54412A4DF0C3ACE650415E0FA9DB28AA54415A317351AEE650417F90545228AA54417CBC6DEBAEE65041EE9B961828AA5441965F044AB0E65041EFA0A51127AA5441C84766E3B0E6504107EB7F4525AA54414DD586EBB0E650414FB3774E25AA5441EC51B8EEB0E6504148E17A4425AA544154174E1EB2E65041034BFBA026AA54418950D75EB3E650413C31AD0228AA54412F7B0433B3E65041AF6E694428AA5441D6DBCF56B5E6504104D234682AAA5441466C1A59B7E65041498D7E3E2BAA5441C3F5289CB7E65041AE47E13A2AAA54410AD7A3C0B6E650416666669628AA54418D8C75DDB6E65041F633CF0128AA544107BF22F7B6E65041A10B8F2727AA54418478A5F4B7E6504116FCE45F27AA54410283643EB9E65041F465F4A327AA5441BC8CE629B8E65041D4F8FFB926AA54417B327D88B9E6504120355A7923AA54418B11A315BBE650410427361824AA5441B8B1018DB9E65041285B05DF22AA544107BF22F7B6E65041ACC1FFE720AA54418AA48490B7E65041555416D220AA5441A4471BEFB8E65041BC3816E91DAA5441F4AC5C68BAE6504198E8E2951EAA54417923509DBCE65041210EE9141EAA5441482F9FF7BCE650418DECFB051DAA54410AD7A300BDE6504148E17AD41CAA5441D1FAC40ABDE65041568A8ACC1CAA5441F9A0C820BDE6504151987F8A1CAA5441C7AE522ABEE6504180C12CEB1BAA5441295C8F72BEE65041295C8FB21BAA5441E56FF5FBBEE650414471CA571CAA544155D46670BFE65041B9D53BCC1CAA54413D8A8C3CC1E650413A5DD2411BAA5441794EB65DC1E6504120C839301AAA544185EB5188C1E65041EC51B87E18AA544132E9B492C1E650413B48057B18AA544162323294C1E6504154ACBB6E18AA5441BC02F6C6C2E65041E2962C0118AA54416D63C1EAC4E6504154ACBB6E18AA5441F6C11D07C5E65041E7054C7C18AA544166666616C5E65041EC51B87E18AA5441F7657C38C5E65041D796E89318AA5441AEEEB9E2C6E65041FC39C35F19AA54417B19EEF3C7E65041B348D3B319AA5441A4703DFAC7E6504148E17AB419AA54414DFEF3FCC7E650414F059AB619AA5441605494FFC7E65041BBE468B719AA544130CAFD89C9E65041087570A81AAA544114183A40CBE65041D21F16001BAA5441BA73F66ACEE6504152A29D7C1AAA5441EF852A67D0E6504137499BA519AA544185EB5188D0E650416666669619AA544141A25A89D0E650412378249719AA54416F3CABA4D0E65041610F968B19AA5441441DEF4BD3E65041529D8E831BAA54417225004AD3E65041B66317911BAA5441EC51B84ED3E6504148E17A941BAA5441D2E8BA22D3E65041E004FCA31CAA54417A7249F4D2E65041BC3816E91DAA544178631C09D6E65041D582F01C1CAA54416D59FE16D8E65041540069A01CAA5441CA38C201DAE650412EB3A87A1CAA54415F57B748DAE65041954598701CAA54419306B367D7E65041D21F16001BAA54412BCE051FD6E650413B62E13A1AAA54413015D9E0D5E650415BDD904B1AAA5441295C8F92D5E65041CDCCCC7C1AAA5441B0657B56D5E65041AB7E8E701AAA54417F3FAB28D4E65041D8EFCDBE1AAA5441FC09FC69D2E650417F6B675219AA5441D6B46067D1E6504132CA14A218AA5441BE39F5CBCFE650414300F25817AA5441A3333A29CEE65041631EC37616AA5441B047760DCAE650419610430215AA544122E2E6E4C0E65041229DE87012AA5441D643F3BEBAE650411843AD2210AA54414C4F2A82BAE650418CCB779310AA54410918DF21BAE65041203A0E5411AA54410B370F13BAE65041861DA26111AA5441295C8F12BAE65041295C8F6211AA5441C7690011BAE650415404856311AA54413E7B941FB9E650411B9CD24012AA544186D5C918B9E65041C9565E4912AA54416FF7CF3FB8E65041A11552FB13AA54412267C84EB7E65041132BE16814AA5441BA2E1B06B6E65041960B340916AA5441C74257EAB1E6504194FC061E19AA5441F9278EA6B1E6504194FC061E19AA544185EB5198B1E650418FC2F52819AA5441295C8FB2B0E650418FC2F52819AA54415475C0A9B0E65041DF814B3019AA54414AD40B52AEE650413A58C3481CAA544105A9233DAEE650415E3620511CAA5441C3F5283CAEE65041295C8F521CAA5441276E3D2CAEE6504158B4E2571CAA5441E29B5E09ADE65041B9D53BCC1CAA54410953314CAAE65041ACC1FFE720AA54417295FC86A9E65041E0021EAC24AA5441AE29B1EEA5E650413A278F102AAA54417D465E4EA4E65041C6DFB4DC2BAA5441150EB105A3E65041DE1F711E2CAA5441FCBDBEEEA1E65041A05BF02D2CAA5441E17A149EA1E650418FC2F5382CAA5441110CCB00A1E65041EEB52E5D2CAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 410318
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441295C8F6205E75041295C8FA22BAA5441666666D604E7504148E17A942AAA5441C3F5282C04E75041AE47E13A2AAA5441295C8F8203E75041295C8FE227AA5441666666A602E750418FC2F58827AA54416666664603E75041CDCCCCFC26AA544185EB51C803E750418FC2F51824AA5441295C8F0201E750410AD7A3B022AA5441666666D6FFE6504148E17AF424AA544148E17AC4FDE65041EC51B8AE24AA5441EC51B8FEFAE6504148E17A4425AA5441295C8FD2F9E65041EC51B8AE24AA544185EB5188F8E65041CDCCCCCC24AA5441EC51B88EF7E65041CDCCCCBC25AA5441295C8F62F1E650410AD7A33025AA544185EB51A8E7E65041295C8F0221AA5441C3F5281CE7E650418FC2F54821AA544101030000000100000080010000A4703D1A94E65041666666263EAA5441C3F5288C95E6504148E17A643CAA54410AD7A31094E650418FC2F5183DAA5441A4703D7A93E65041EC51B84E39AA544185EB512895E65041295C8F7238AA5441666666D696E6504148E17A5438AA5441A4703D4A96E65041CDCCCC6C34AA54416666660699E650418FC2F55834AA544148E17AC499E65041EC51B85E33AA544148E17A549BE65041EC51B80E33AA5441E17A145E9BE65041295C8FA235AA54410AD7A3609EE65041CDCCCC4C36AA54410AD7A3F09FE6504148E17A3435AA5441A4703DAA9FE650416666662634AA54410AD7A3F09FE650410AD7A34033AA5441A4703D3AA1E65041666666F631AA544185EB51E8A2E650410AD7A31031AA544185EB51D8A3E65041AE47E11A31AA5441295C8F32A4E65041CDCCCC5C30AA544185EB51A8A6E65041666666A631AA544148E17A84A7E650410AD7A36031AA5441C3F5284CA8E650410AD7A32030AA5441A4703D0AA9E650410AD7A32030AA5441295C8F32A9E650418FC2F5B82EAA5441295C8F72AAE65041295C8FD22DAA54410AD7A320ACE65041EC51B8DE2BAA5441295C8FC2AAE6504148E17AB428AA54410AD7A3C0ACE65041CDCCCCDC28AA544148E17A04AFE6504148E17A1428AA544185EB5158B0E65041AE47E11A27AA5441EC51B8EEB0E6504148E17A4425AA54410AD7A350B3E650410AD7A30028AA5441EC51B81EB3E65041CDCCCC3C28AA5441C3F5281CB5E65041EC51B84E2AAA544166666656B7E650418FC2F5482BAA5441C3F5289CB7E65041AE47E13A2AAA54410AD7A3C0B6E650416666669628AA544166666606B7E65041EC51B82E27AA5441A4703D4AB9E65041666666A627AA544166666646B8E65041AE47E1CA26AA544148E17AA4B9E650416666669623AA544185EB5148BBE650410AD7A34024AA5441A4703D6AB7E65041AE47E12A21AA5441666666E6B8E6504148E17A141EAA54410AD7A330BAE65041AE47E1AA1EAA544148E17AC4BCE65041EC51B81E1EAA54410AD7A300BDE6504148E17AD41CAA5441295C8F72BEE65041295C8FB21BAA5441C3F5286CBFE65041EC51B8DE1CAA5441295C8F42C1E6504148E17A441BAA544185EB5188C1E65041EC51B87E18AA54410AD7A3A0C2E65041AE47E11A18AA544166666616C5E65041EC51B87E18AA544185EB51D8C6E650416666669619AA5441A4703DFAC7E6504148E17AB419AA5441A4703D3AC9E65041EC51B8AE1AAA5441A4703D1ACBE65041295C8F121BAA544185EB51A8CEE65041295C8F721AAA544185EB5188D0E650416666669619AA5441EC51B84ED3E6504148E17A941BAA5441A4703DEAD2E650410AD7A3001EAA5441A4703D0AD6E650410AD7A3201CAA5441C3F528CCD7E65041AE47E1CA1CAA544185EB5108DDE65041CDCCCC0C1CAA54410AD7A3F0D6E650410AD7A3A019AA5441295C8F92D5E65041CDCCCC7C1AAA544166666676D3E65041EC51B80E1AAA544148E17AA4D2E65041AE47E15A19AA5441295C8F22D2E650418FC2F58818AA54410AD7A350D1E65041AE47E18A16AA544148E17A34CFE650410AD7A39015AA5441713D0A77CBE650416666664613AA544185EB5168C8E650410AD7A32012AA544166666616C5E65041EC51B85E10AA5441295C8FB2BFE65041CDCCCCEC0EAA54410AD7A370BBE650418FC2F5D80EAA5441295C8F12BAE65041295C8F6211AA54410AD7A390B9E65041295C8FB211AA5441295C8F82B8E650416666660613AA5441EC51B86EB8E6504148E17A7413AA5441A4703D0AB8E65041AE47E10A14AA5441A4703D6AB7E65041295C8F3214AA5441EC51B89EB5E6504148E17A4416AA544185EB51C8B3E65041AE47E17A17AA544185EB5198B1E650418FC2F52819AA5441295C8FB2B0E650418FC2F52819AA5441EC51B8FEAFE65041EC51B8BE19AA5441C3F5283CAEE65041295C8F521CAA544148E17AD4ACE65041AE47E1CA1CAA5441295C8FB2ABE65041EC51B86E1EAA5441A4703D8AABE6504148E17A041FAA5441295C8F22AAE65041AE47E1DA20AA5441295C8F82A9E6504148E17AA424AA5441295C8F12A6E65041666666D629AA5441295C8F32A4E65041EC51B8DE2BAA5441E17A149EA1E650418FC2F5382CAA5441666666969FE650410AD7A3B02CAA5441C3F5286C9CE65041295C8F222EAA54410AD7A38097E650410AD7A3002DAA5441A4703D3A97E65041EC51B87E2CAA544185EB512895E65041CDCCCC4C2CAA544185EB51E893E650410AD7A3502DAA5441A4703D3A92E65041666666762FAA54410AD7A30090E65041295C8FA230AA5441C3F5289C8FE6504148E17A2431AA5441E17A145E8CE65041EC51B8AE33AA544185EB51888AE65041CDCCCC1C34AA544148E17A1486E650418FC2F5D836AA5441C3F5280C84E65041EC51B86E37AA544185EB51C881E65041295C8F7238AA5441295C8FF27FE6504148E17AA438AA5441E17A14AE7DE650418FC2F55839AA544185EB51287CE65041AE47E17A3AAA544185EB515879E65041666666563BAA5441666666E677E650410AD7A3103BAA5441295C8F5275E65041295C8F923BAA54410AD7A35072E65041EC51B8BE3CAA5441E17A148E70E65041295C8FC23DAA5441A4703D5A6DE650418FC2F5A83EAA54410AD7A3C06BE6504148E17A543DAA5441295C8F2269E65041EC51B83E3FAA5441C3F528EC67E650410AD7A3D03EAA5441C3F528AC66E65041CDCCCC5C3FAA544148E17A4465E6504148E17A943EAA5441295C8FE262E65041666666163FAA5441A4703DEA5FE65041EC51B87E40AA5441A4703D5A5EE65041666666A640AA5441666666565DE650410AD7A3203FAA5441C3F528EC53E65041AE47E19A3DAA5441E17A144E51E65041295C8F723DAA544148E17AB44FE65041666666663AAA5441295C8F124CE65041AE47E13A39AA5441C3F5283C4AE650410AD7A34038AA54416666666648E65041295C8F2238AA544148E17A9447E65041AE47E14A38AA5441295C8FB247E65041666666B635AA544185EB510847E65041AE47E1CA35AA5441E17A14AE46E650418FC2F53836AA5441A4703DDA42E65041295C8F8237AA5441E17A145E41E65041666666A636AA544185EB51C83BE65041CDCCCC3C37AA544148E17A0437E65041666666B635AA5441295C8F3236E650416666663633AA544148E17A8434E65041295C8F1234AA544148E17AE433E6504148E17A5433AA544185EB51C831E65041AE47E15A32AA5441C3F5286C2EE65041AE47E1AA32AA5441666666E62CE6504148E17AA42EAA54410AD7A3702AE65041EC51B82E2CAA5441666666E627E65041295C8FF22BAA54416666666625E65041CDCCCCFC2BAA5441E17A14EE24E650418FC2F5F82AAA544185EB518821E65041666666162BAA5441C3F5283C1DE65041666666A627AA544185EB51D817E65041EC51B84E25AA5441A4703DBA17E650410AD7A39024AA54410AD7A37016E650410AD7A35023AA5441C3F5280C16E650416666665622AA5441A4703DEA14E65041295C8FF221AA5441E17A144E15E65041EC51B81E1EAA5441E17A140E14E650410AD7A3D01BAA5441C3F5288C0EE65041AE47E11A1DAA544185EB51880DE65041666666661CAA54410AD7A3100DE650410AD7A3F019AA5441A4703D5A0EE650416666661617AA5441E17A14DE0CE65041CDCCCC6C16AA544185EB511800E65041CDCCCCEC13AA544166666656FEE55041295C8F2215AA5441C3F5284CFEE55041666666D615AA5441A4703D2A02E65041EC51B8FE15AA5441C3F528CC05E65041295C8F4218AA544148E17AA40AE65041666666361AAA544185EB51680AE650418FC2F5981CAA5441A4703D2A0CE65041CDCCCC1C1BAA544148E17A340CE65041295C8F021CAA5441666666560DE65041666666561DAA544148E17AB40EE65041666666B621AA544148E17A640EE65041295C8FA221AA5441C3F5282C0AE65041666666061DAA544166666676F7E5504148E17AE41BAA544185EB51B8F6E55041295C8FE222AA5441295C8F72F6E5504148E17A6423AA5441E17A146EF5E55041295C8FE222AA544148E17A54F6E5504148E17A3421AA5441C3F528FCF3E550418FC2F5C81EAA54410AD7A370F3E55041666666E61EAA5441666666D6F1E5504148E17A241DAA544166666686F1E55041666666261BAA544166666666EEE550416666668615AA54410AD7A320EEE550410AD7A3B013AA5441A4703D4AECE55041295C8F1211AA5441666666F6EAE550418FC2F5E80DAA544148E17AC4EAE55041EC51B86E0AAA544185EB5168E7E55041295C8FC206AA544148E17AD4E4E5504148E17AE402AA544185EB5108E3E55041295C8F2201AA544185EB5128E1E55041295C8FA2FEA95441C3F528ECE0E55041EC51B84EFDA95441666666D6DDE55041CDCCCC3CFBA95441C3F528CCDDE5504166666666F9A9544148E17A64DCE55041EC51B82EF5A95441A4703DAADCE55041666666D6F2A9544185EB51D8DBE550418FC2F528F1A95441295C8F42DBE550410AD7A310F0A95441666666D6D8E55041CDCCCC1CEEA95441C3F528BCD9E55041AE47E1BAEBA95441E17A14EED9E55041AE47E1DAE9A954415C8FC2D5DDE5504152B81E25E8A95441295C8FE2DBE55041AE47E1AAE5A95441333333F3D7E5504133333363DDA954410AD7A350D9E5504166666606DCA95441E17A149ED9E550419A999999D9A9544185EB5128D7E5504148E17AA4D4A9544166666606D6E55041CDCCCC8CD3A95441A4703D3AD4E5504148E17AE4D0A9544185EB5198D0E550410AD7A350CEA9544148E17A54CFE55041295C8F72CAA9544133333353CFE5504114AE47B1CBA9544148E17A64D0E5504114AE4731D0A9544185EB5198D0E55041EC51B8CED7A9544148E17AE4CFE5504148E17A14D8A9544166666636CEE5504166666676DAA95441A4703D1ACCE5504148E17A94DAA954410AD7A3D0CAE55041AE47E12ADBA95441C3F528ACCBE55041666666E6DDA9544166666676CAE550418FC2F5A8DFA95441C3F528BCC5E55041AE47E1FAE2A95441E17A145EC4E55041EC51B8AEE3A95441295C8FD2C3E55041EC51B88EE5A95441C3F5287CBFE55041AE47E18AE9A9544148E17AE4BBE55041AE47E10AECA95441295C8FC2BAE5504166666646ECA954410AD7A390BAE55041EC51B85EEDA95441A4703DDAB6E55041CDCCCC5CEFA954415C8FC2D5B4E5504100000020EFA9544133333383B0E55041D7A370EDF0A95441E17A145EB0E55041295C8F62F3A95441C3F5283CB1E55041295C8F92F4A95441295C8F02B2E55041AE47E1AAF6A95441666666A6B8E55041AE47E1BAFFA95441C3F528DCB9E55041AE47E1BAFFA95441E17A145EBAE55041EC51B8BE00AA54419A999969BAE55041713D0AF701AA54415C8FC275BCE5504185EB51F804AA54418FC2F558C0E55041E17A14DE0AAA5441AE47E1DAC5E55041CDCCCC9C05AA544100000040C7E55041666666B605AA5441A4703DAAD2E550410AD7A3F0FBA95441A4703D6AD1E55041CDCCCC5CF9A9544148E17A74D6E5504148E17A54F7A9544148E17A44D9E55041EC51B8FEF7A9544185EB5198DAE55041666666A6FAA95441A4703DAADCE55041CDCCCC6CFDA9544166666606E0E55041666666E600AA5441C3F528FCDFE55041EC51B8EE02AA5441295C8FA2E0E550413333338307AA5441F6285C4FE7E55041EC51B89E12AA54410AD7A3D0E8E550416666668615AA5441295C8F82E1E55041EC51B84E16AA5441295C8F42E5E55041666666D61AAA5441295C8F12E8E5504148E17A841CAA5441C3F5286CE8E55041666666561DAA54410AD7A3C0E4E550410AD7A3901FAA5441295C8F22E2E55041666666461EAA5441A4703D1AD6E55041AE47E1EA29AA544148E17AC4D6E55041295C8FB22AAA54411F85EB81D6E55041C3F528DC2BAA5441CDCCCC3CD4E55041AE47E1FA2CAA5441D7A3704DD2E5504114AE47A12EAA5441295C8FD2D2E55041D7A370AD2FAA5441295C8FC2D3E55041EC51B84E2FAA544166666666D5E55041CDCCCC8C32AA5441E17A149ED4E55041CDCCCC2C33AA5441295C8F52D5E55041CDCCCCBC34AA544148E17A84DFE550418FC2F5D82CAA544185EB51C8E1E5504148E17AF429AA544185EB5158E3E550410AD7A3302AAA544166666676E8E55041EC51B8FE24AA5441C3F5282CECE550418FC2F54826AA5441295C8F12EDE5504148E17A1428AA5441666666D6ECE55041AE47E14A29AA54410AD7A330E8E55041666666462DAA544148E17A94E8E55041295C8FC22EAA5441C3F528DCE6E550410AD7A3802FAA5441A4703DCAE4E550418FC2F58831AA544185EB51A8E3E550416666665631AA54410AD7A330DEE55041295C8FE236AA5441295C8F12DEE55041CDCCCC1C39AA5441E17A145EDDE55041EC51B8EE39AA54410AD7A3D0D8E55041000000803CAA544114AE47C1DBE5504114AE475144AA5441A4703DBADBE55041EC51B85E42AA5441A4703D9ADDE550410AD7A3A041AA544166666656E0E55041AE47E13A3EAA5441D7A370CDE1E55041B81E859B3EAA5441B81E85EBE9E5504114AE47F136AA544185EB5198E9E550418FC2F58836AA5441666666F6EAE55041666666E632AA544148E17A84EEE5504148E17A2431AA5441666666C6EDE55041AE47E18A2FAA5441295C8FF2EEE5504148E17AE42FAA54410AD7A3B0F4E55041666666662BAA5441E17A140EF6E55041CDCCCC5C2BAA5441666666D6F6E55041EC51B87E2CAA5441C3F528CCFBE55041295C8F622FAA5441A4703D7AFDE55041AE47E1AA32AA544185EB5178FFE55041CDCCCC3C32AA5441A4703D1AFEE55041295C8F9231AA5441295C8F42FEE55041666666B630AA5441C3F5285CFDE55041AE47E1EA2EAA544166666676FCE55041295C8FD22DAA5441E17A146EFAE55041666666062CAA544148E17AA4FBE55041CDCCCCBC2AAA544148E17AC4F9E550416666669628AA5441E17A143EF8E5504148E17A5424AA5441A4703DEAF6E550416666669623AA5441666666E60EE650418FC2F53822AA5441666666D60FE650410AD7A38025AA5441C3F528BC10E65041CDCCCC1C25AA5441295C8F2214E65041CDCCCC9C27AA5441C3F5287C14E650410AD7A3302AAA5441A4703DDA15E65041295C8F422CAA5441E17A14DE16E6504148E17A542EAA5441A4703DFA18E65041AE47E13A2FAA5441666666661BE650418FC2F5B82EAA54410AD7A3D01AE65041AE47E13A2FAA5441E17A14BE1DE65041AE47E10A32AA54410AD7A3C020E650410AD7A35032AA5441A4703D1A21E65041EC51B84E34AA544148E17A8425E65041295C8F1234AA544185EB518826E65041AE47E18A34AA54410AD7A3202AE65041295C8F6234AA54410AD7A3602BE65041295C8F023AAA54410AD7A3202FE650418FC2F5E83AAA544185EB51F833E65041AE47E14A3DAA5441A4703D8A33E65041295C8F523FAA54416666666634E65041295C8F4240AA54410AD7A3103AE65041CDCCCC6C3EAA5441E17A144E3DE65041EC51B8EE3EAA5441C3F5287C3CE65041295C8F7242AA54410AD7A3D03DE650410AD7A32044AA5441C3F5280C3EE65041CDCCCCBC43AA5441C3F528FC3EE6504148E17AD444AA544185EB51A842E65041CDCCCC1C43AA544148E17AD443E6504148E17A4443AA54410AD7A33047E650416666666644AA5441E17A142E49E650410AD7A35046AA544185EB51184BE650418FC2F51847AA5441A4703D4A4BE65041AE47E19A47AA5441E17A149E4CE650410AD7A33048AA5441C3F5284C4EE650418FC2F57841AA5441C3F5289C53E650418FC2F5B842AA5441C3F5281C56E65041CDCCCC0C44AA544148E17A2458E65041295C8F8241AA54410AD7A35059E65041AE47E14A42AA5441666666765BE650418FC2F51842AA5441295C8FF25CE65041AE47E13A43AA544148E17AF464E65041295C8FD241AA5441E17A144E65E6504148E17A5442AA54410AD7A3C066E65041CDCCCCDC41AA5441A4703DCA66E6504148E17A1441AA5441C3F528EC67E65041CDCCCCAC3FAA544185EB512868E65041EC51B81E41AA5441A4703DEA69E65041EC51B80E42AA5441295C8FA26BE650410AD7A3B040AA5441E17A141E6DE650416666668642AA544148E17AB46DE650410AD7A34042AA5441C3F5282C6EE650410AD7A3B040AA5441295C8FE271E6504148E17AB441AA54410AD7A39078E65041EC51B81E41AA5441A4703DEA78E65041CDCCCC2C42AA54410AD7A3207AE65041EC51B85E42AA5441295C8F027FE65041AE47E1CA3FAA5441666666B67FE65041CDCCCC9C40AA54416666662683E65041EC51B86E3CAA54410AD7A31085E650410AD7A3603BAA5441E17A14AE87E65041CDCCCC4C3BAA544148E17A8489E65041666666863DAA5441C3F528AC8EE650410AD7A3F03CAA5441A4703D6A8FE65041CDCCCC2C3DAA5441E17A146E90E650418FC2F5B83DAA5441A4703D8A92E650410AD7A3003CAA54410AD7A32093E650418FC2F5B83DAA5441A4703D1A94E65041666666263EAA5441
+</a>
+
+<b>
+010600000001000000010300000001000000B4010000E17A149EA1E650418FC2F5382CAA5441E50BCB00A1E65041F8B52E5D2CAA5441A29F656D9FE65041C6DAA5E32CAA5441A4AE92589CE650412D13532C2EAA5441682098459BE65041AC7B7DEC2DAA5441CC6F838D97E650417BAD780F2DAA5441211FD78097E65041E7A4AF002DAA54410AD7A38097E650410AD7A3002DAA544106175D8097E65041214621002DAA5441E567DB0D97E65041C3FB897A2CAA5441F1AD3AB296E65041B74AE8712CAA5441653CE53D95E65041465D2D602CAA54410B6C210B94E6504193ED34512DAA54419FBE275E92E65041AD8F7D482FAA5441A4703D3A92E65041666666762FAA5441B6E1663492E6504159FB79792FAA54419A6B031B92E65041C64C43972FAA5441CBEA460590E65041F91BC4A730AA544126C5282A8FE650419D19B5AE31AA5441B6E991B28CE650417DFC886C33AA5441E17A145E8CE65041EC51B8AE33AA5441584D33508CE65041DEF1F8B133AA5441E8A628418CE65041ED0C97BC33AA544166C6D5A08AE65041BA1F262A34AA5441BD073F5986E65041389380BB36AA54414CDF8C2F86E6504179EE54C836AA544148E17A1486E650418FC2F5D836AA5441C3C0CE7284E6504151F82C5137AA5441593C8A1F84E6504112E6CB6A37AA54411714E12B82E6504191069E6638AA5441AFD72ACF81E6504182D57D6F38AA544185EB51C881E65041295C8F7238AA5441295C8FF27FE6504148E17AA438AA5441158D14C27DE6504141DABD5239AA5441DCA1BE297CE6504110D79E7F3AAA5441A85B916C79E65041ABFCBC5A3BAA5441257B3ECC77E6504193BC00193BAA54418F0CE6B976E65041C8BDCE4B3BAA5441EBF0C46975E65041377CFD8D3BAA5441339489A972E6504113356AA33CAA54410723F40271E65041D48E287F3DAA5441E17A148E70E65041295C8FC23DAA5441FA1BE1A96DE650414A3494923EAA54418BDA015B6DE65041112B4CB13EAA5441685F98D06BE650419FF29E683DAA5441F4C4908569E650419F4249F63EAA5441295C8F2269E65041EC51B83E3FAA5441E9141C7668E6504139F78F013FAA544181B390F667E650416C001FDD3EAA54411DE3CCC366E65041EB7D97603FAA5441AF752DB566E650415AADD9583FAA5441C3F528AC66E65041CDCCCC5C3FAA54415DC8406F65E6504135504DAC3EAA54415BD54C4F65E650415FC0629B3EAA544161A66D9263E65041F121F0F03EAA544167829F0B63E65041DB30A70D3FAA54410419C50060E65041EEE0717D40AA5441CFCD884A5EE6504153B644A940AA544174D597435DE65041D43DDB1E3FAA54415E603B855CE65041B6BFD0FE3EAA54419DAA281059E650417DB2B06F3EAA54415D17FD2354E650410976E8A33DAA54416924DB5D51E65041515D887E3DAA54417679AB5751E65041ED1423733DAA5441E17A144E51E65041295C8F723DAA5441CD53063D50E65041879A796A3BAA5441374188BD4FE6504110D79E7F3AAA544166448D7B4CE65041E371B25C39AA5441295C8F124CE65041AE47E13A39AA5441D48EFAFA4BE6504195DD552E39AA54415D9F9ED549E65041AD0BEA4538AA54415164F18C48E6504105A1003038AA544122F43DCD47E650412D40FA3F38AA544148E17A9447E65041AE47E14A38AA5441C91DC39447E650418027AF4438AA5441F66B008647E65041AD0BEA4538AA5441D9872DAC47E65041E31E894236AA54416EAF9EAF47E650414437F5F635AA54411C19B5D646E65041B915083836AA544170CE87F343E650419668F02337AA5441A4703DDA42E65041295C8F8237AA54412DFDD7D442E65041EB536F7F37AA5441D197DAD042E65041204EB58037AA5441048A5A5C41E65041389380BB36AA544193252DB63BE65041B810F93E37AA544103051ED439E65041389380BB36AA54412974E01137E65041EF01B0BA35AA544148E17A0437E65041666666B635AA54411033430437E6504176A4BCB535AA54416E51070137E6504139988FB435AA5441D32BE92536E650417BF7074F33AA54415FB37F9B34E6504107B53C1434AA54411B84989234E65041C385550B34AA544148E17A8434E65041295C8F1234AA5441C1D9F51234E650416ADBB28B33AA544149373CD433E65041F238F94C33AA54412ABC135832E65041A7DB4E9D32AA544142D66E6F31E650415FA3256332AA5441FDE0980F2FE6504123EBAD9B32AA544187FEA6672EE65041FB7351AD32AA5441C9FC86A02DE65041FA688A9030AA5441666666E62CE6504148E17AA42EAA5441B36302962BE6504194DE16542DAA5441D152FF6B2AE65041E1875A342CAA5441D9E1F5A327E650410C7F9FF32BAA5441DEE8DF6A27E65041E35189F42BAA544147A9068B25E6504187B287082CAA5441A5CAC78225E65041C18D58FC2BAA54416666666625E65041CDCCCCFC2BAA5441AF683C2825E65041E8598D762BAA5441EEC9D7D324E65041FF1BD9F92AAA54412195FFB721E65041F341C9142BAA5441FAD5D88921E65041C88DEA162BAA54413AF72A8921E65041AD0D5F162BAA544185EB518821E65041666666162BAA5441C3F5283C1DE65041666666A627AA544153B34E1B1AE65041773C594A26AA5441732F8FF217E65041DCDF745D25AA5441CB57D1F017E650412CE35D5925AA544185EB51D817E65041EC51B84E25AA5441B56883CC17E65041889F1C0425AA54414EC40D8B17E650418613646A24AA5441D8985D7E16E6504127697E6723AA5441313D487716E650417BB6165723AA54410AD7A37016E650410AD7A35023AA544117286E3D16E650411CE21AD122AA54415D9E120A16E650417F78295A22AA54418CC2958F15E65041FFFF7F2B22AA5441A4703DEA14E65041295C8FF221AA5441090C231F15E65041C2A36CEB1FAA54418AE4AD3C15E65041F6AFCF341EAA5441DEDF83B414E650411EE08B031DAA54417070907B14E650418F65879A1CAA544168810D4713E65041178171061CAA5441155EF8EB11E650412C3A237A1CAA5441011CD6810EE65041A75C40211DAA5441620CD17D0DE65041ECC2AC5E1CAA5441A1D3204B0DE65041252D68241BAA54410AD7A3100DE650410AD7A3F019AA544175AE28170DE650410B7732E219AA544195F941100DE6504117E268B719AA54413B297EDD0BE6504117E268B719AA5441713F3B9E09E65041A839B7CC19AA544148E17AA40AE65041666666361AAA5441C96448A40AE650414CC866381AAA54417B5BBAAA0AE650413B62E13A1AAA544112C755850AE6504173E87C721BAA5441FFB2776E0AE650413093915A1CAA544148693A1F0CE65041D587FF151BAA54419740C4210CE65041D7A7F5231BAA5441A4703D2A0CE65041CDCCCC1C1BAA5441D4096A2D0CE65041FD7905641BAA5441AD3E0D4B0CE65041D11A07071CAA5441B0A1E7670DE65041ECBD9D651DAA5441985C1C2D0EE65041ADC60EE11FAA54417CAA58E30FE65041BA55695B25AA5441F09EA6A610E65041D986252625AA5441C3F528BC10E65041CDCCCC1C25AA544112DE9CBF10E6504163BB561F25AA54416D3D60D410E65041AD15AD1925AA5441342285C313E6504174EDEA5627AA5441295C8F2214E65041CDCCCC9C27AA54416FBE0B6414E650413B830E7F29AA54412CAA268214E650410B6DB5392AAA5441582A3D9214E650417AA50F522AAA5441A0796F9F15E650411475CBC62BAA5441ACB41CE816E6504192E825582EAA5441AE12E80B19E650412D0E44332FAA5441BA48865B1BE65041AD90CBAF2EAA5441677D0C4D1BE65041FE5B45BE2EAA5441666666661BE650418FC2F5B82EAA5441421CB3D81AE650414B59E3332FAA54415FCA86C81DE650413ED1520832AA5441E5541B601EE65041D66C8C1932AA54410AD7A3C020E650410AD7A35032AA5441ABFA28C320E650416E86FC5E32AA5441A15EB6C420E65041E6AE295F32AA54413E3C8D1B21E65041396BC73C34AA54412E0B7F2523E65041554A53FE33AA5441FA13F0A025E65041554A53FE33AA5441259E22C826E65041308E158834AA5441121827A629E650412920ED6734AA5441DF247A212AE65041CDC2835F34AA5441234A7FA22AE6504121E2EAAA36AA5441166B575F2BE650414E76B7FC39AA54411F37B48E2FE65041905417033BAA5441D1CD1D0234E65041451DCC3C3DAA544104BB8E9433E650413913AE4A3FAA5441E356A04234E650414C02901B40AA54416666666634E65041295C8F4240AA54410663867E36E650412828E6943FAA5441C3AFC32B3AE650413918BD433EAA544118E23F243DE6504168F82AE83EAA5441E17A144E3DE65041EC51B8EE3EAA544112C9864D3DE65041A8B417F13EAA5441C40880563DE650417A6808F33EAA5441DC4D4B913CE65041EDD6538B42AA5441DFB025AE3DE65041AB7CEAE943AA5441ACC3B41B3EE650419F3C2EA843AA54419D56BC0C3FE6504146A208C544AA54411BC507A542E650416C54CC0E43AA5441BFCFD18D43E650411793233B43AA544148E17AD443E6504148E17A4443AA54412C3293F043E650416813F34D43AA5441037B2D7144E6504187FC716643AA5441BFD7EF6146E65041C7DFBA2044AA54410AD7A33047E650416666666644AA5441E7A86F7D47E6504194454DB044AA5441908C0F6849E65041C51A724F46AA544169DA4B1E4BE65041A96DBDFE46AA5441DC1708604BE650412C531F9847AA544136E8CB924CE65041ACD0971B48AA54416B3308494EE65041EDDB628441AA5441FFDA49494EE650419715718441AA5441C3F5284C4EE650418FC2F57841AA544180BCF2D550E650414EF1D91142AA54415D1ABD6B53E650419F413DA142AA54419160EA2856E65041AB7CEAE943AA5441DA83F90A58E65041EDDB628441AA544157FFB51C58E6504104DA448C41AA544148E17A2458E65041295C8F8241AA54414206855F58E65041CA32F6A941AA5441AAF9629559E65041D22EAE3342AA5441844CAE445AE650416AF1F1F141AA5441E81C72775BE650411C5CDB0742AA54411D064FFF5CE65041F09DA33843AA54413B51F55B5EE65041CB255BFB42AA5441362DA7F764E65041051C1FC641AA5441C33DA21665E65041DC3B150442AA54416A6A1B4465E65041C9EF044642AA54416773B1C166E65041ECEBD2C641AA54411DE3CCC366E65041B8AEDA9A41AA54411DE3CCC366E6504153B644A940AA544181B390F667E6504153BB53A23FAA54419C5B364E68E65041CFCBD31641AA5441CE3E89EE69E650416AF1F1F141AA5441F521DC8E6BE6504153B644A940AA5441B78DA79A6BE650413FE2ECB640AA5441295C8FA26BE650410AD7A3B040AA5441BDF6D6636CE65041A068E09F41AA5441DADF40276DE650410825258242AA544193E195676DE650412E544E6442AA54414A53B5A66DE65041E618074742AA54418AC903B56DE650412443DA3E42AA5441ADFCF2DC6DE650415FD061B941AA5441C12A4D0A6EE6504153B644A940AA5441101E2F1870E65041CFCBD31641AA54411D7214D071E65041F3156CAB41AA54415BCB897B78E650416E5EEA0041AA5441C65D948978E65041F89B561F41AA54410AD7A39078E65041EC51B81E41AA5441FAD06AA378E6504190EB515741AA5441DB4802FF78E65041C4C6C41D42AA5441ABD487247AE65041DE87AA5C42AA5441EDFADC997CE650411A14701041AA54411AC0BE127FE6504106263DB83FAA54415F1F61A27FE650410E456E8540AA54417C4F96A67FE65041BEA0578A40AA5441230A33AD7FE650417E7B0F9240AA5441CD7E555A83E6504193B7F11F3CAA54413A48A19484E650414275F5A43BAA54410AD7A31085E650410AD7A3603BAA5441C5175E4785E65041479F045F3BAA5441BE0C4E5285E65041ABFCBC5A3BAA5441F3578A0887E65041F891D3443BAA54415B95464A87E6504179145BC13AAA54410CF6116E89E650419FF29E683DAA54417E5A3F148FE650412A7526E53CAA544101026D3B90E6504192FDA29D3DAA5441E17A146E90E650418FC2F5B83DAA5441016CFE1292E65041686CD8613CAA54413F5EA19692E650412B7A35DE3BAA5441569E5DD892E6504113356AA33CAA544163DE191A93E6504104C871943DAA54412D665D0294E650415281EE1B3EAA5441A4703D1A94E65041666666263EAA5441FFE1F44994E6504190355DEC3DAA54418BE9998E94E65041515D887E3DAA5441FB7B670895E65041E2CABA043DAA544105B5587895E65041CB12947C3CAA54410B6C210B94E65041451DCC3C3DAA54417E86BF7193E65041FA9BF13639AA5441BDD1FB2795E6504112E1BC7138AA5441E4B44EC896E65041AD0BEA4538AA54416228AF4D96E65041D1945D8534AA5441A4703D4A96E65041CDCCCC6C34AA5441DE0C8C4A96E650418B92CA6C34AA54416437D64496E650416C8A0F4034AA54414BE8EC1799E650416C8A0F4034AA5441064B4E2B99E65041ED9F5F2834AA544148E17AC499E65041EC51B85E33AA544184529BD299E650411308E55B33AA5441E2A521DD99E650417BF7074F33AA5441E441E31F9BE65041660B3D1933AA544148E17A549BE65041EC51B80E33AA5441C46481549BE650412106781033AA5441571E8B679BE65041B7BC4B0D33AA5441571E8B679BE650412B30A69E35AA5441F3A174669EE65041B915083836AA544110C2EBEF9FE65041BAACB83135AA5441A4703DAA9FE650416666662634AA544189BBF2B79FE650415E58A9F933AA54414CE6B1CB9FE650410AEE0D8D33AA5441C0AFF4DA9FE650416D8F1E3933AA5441A402408AA0E650413BA7BC9F32AA544131C0744FA1E6504153EC87DA31AA5441150EB105A3E65041B8C669FF30AA5441C73A267BA3E650419D9BE71631AA544185EB51D8A3E65041AE47E11A31AA54415050A4ECA3E65041E20B13F030AA54411409A20CA4E65041DE731E5030AA54412AA19430A4E650411D2BF86030AA5441295C8F32A4E65041CDCCCC5C30AA5441BD19E08FA4E65041998BA38D30AA5441494FCFC9A6E6504146ACCB9831AA5441310A048FA7E650412B04264131AA54412D068F47A8E65041265A0D1430AA544119DE32EAA8E650410AD7A32030AA5441A4703D0AA9E650410AD7A32030AA544124ADC028A9E65041E7A672102FAA544157ED562FA9E65041FA25E2992EAA54416E280478AAE650416000C4BE2DAA5441F1085718ACE65041C6DFB4DC2BAA5441AF475FA7ABE6504145790DC62AAA5441295C8FC2AAE6504148E17AB428AA5441BCE825D1AAE650413015A2B528AA544189D0A9CFAAE650412084F8B128AA54411C4DF0C3ACE65041620FA9DB28AA5441FE90318AADE650416D182B9728AA54415B317351AEE650417B90545228AA54417CBC6DEBAEE65041EE9B961828AA5441965F044AB0E65041EFA0A51127AA5441C84766E3B0E6504107EB7F4525AA54414FD586EBB0E6504148B3774E25AA5441EC51B8EEB0E6504148E17A4425AA5441D9174E1EB2E650419C4BFBA026AA54418950D75EB3E650413C31AD0228AA54412F7B0433B3E65041AF6E694428AA5441D6DBCF56B5E6504104D234682AAA5441486C1A59B7E65041448D7E3E2BAA5441C3F5289CB7E65041AE47E13A2AAA54410AD7A3C0B6E650416666669628AA54418A8C75DDB6E65041FB33CF0128AA544107BF22F7B6E65041A10B8F2727AA5441AF77A5F4B7E65041EBFBE45F27AA5441F982643EB9E65041F265F4A327AA5441BC8CE629B8E65041D4F8FFB926AA54417B327D88B9E6504120355A7923AA54418811A315BBE650410227361824AA5441BCB1018DB9E65041295B05DF22AA544107BF22F7B6E65041ACC1FFE720AA54418AA48490B7E65041555416D220AA5441A4471BEFB8E65041BC3816E91DAA5441F4AC5C68BAE6504198E8E2951EAA54417923509DBCE65041210EE9141EAA5441452F9FF7BCE650418BECFB051DAA54410AD7A300BDE6504148E17AD41CAA5441D1FAC40ABDE65041528A8ACC1CAA5441F9A0C820BDE6504151987F8A1CAA5441C5AE522ABEE6504180C12CEB1BAA5441295C8F72BEE65041295C8FB21BAA5441FD6FF5FBBEE650416171CA571CAA544155D46670BFE65041B9D53BCC1CAA54413D8A8C3CC1E650413A5DD2411BAA5441794EB65DC1E6504123C839301AAA544185EB5188C1E65041EC51B87E18AA544137E9B492C1E650413948057B18AA544162323294C1E6504154ACBB6E18AA5441BC02F6C6C2E65041E2962C0118AA54416D63C1EAC4E6504154ACBB6E18AA5441F2C11D07C5E65041E7054C7C18AA544166666616C5E65041EC51B87E18AA5441F7657C38C5E65041D896E89318AA5441AEEEB9E2C6E65041FC39C35F19AA54417919EEF3C7E65041B248D3B319AA5441A4703DFAC7E6504148E17AB419AA54414AFEF3FCC7E650414F059AB619AA5441605494FFC7E65041BBE468B719AA544130CAFD89C9E65041087570A81AAA544114183A40CBE65041D21F16001BAA5441BA73F66ACEE6504152A29D7C1AAA5441F0852A67D0E6504132499BA519AA544185EB5188D0E650416666669619AA544143A25A89D0E650412578249719AA54416F3CABA4D0E65041610F968B19AA5441441DEF4BD3E65041529D8E831BAA54417525004AD3E65041B46317911BAA5441EC51B84ED3E6504148E17A941BAA5441D4E8BA22D3E65041DE04FCA31CAA54417A7249F4D2E65041BC3816E91DAA544178631C09D6E65041D582F01C1CAA54416D59FE16D8E65041540069A01CAA54418D38C201DAE6504137B3A87A1CAA5441ABD7B721DAE65041FD4420761CAA54415A57B748DAE65041914598701CAA54419306B367D7E65041D21F16001BAA54412BCE051FD6E650413B62E13A1AAA54412F15D9E0D5E650415CDD904B1AAA5441295C8F92D5E65041CDCCCC7C1AAA5441B2657B56D5E65041A97E8E701AAA54417F3FAB28D4E65041D8EFCDBE1AAA5441FC09FC69D2E650417F6B675219AA5441D6B46067D1E6504132CA14A218AA5441BE39F5CBCFE650414300F25817AA5441A3333A29CEE65041631EC37616AA5441B047760DCAE650419610430215AA544122E2E6E4C0E65041229DE87012AA5441DA43F3BEBAE650411A43AD2210AA54413720E89DBAE6504128D6FD5F10AA5441114F2A82BAE65041FACB779310AA54410918DF21BAE65041203A0E5411AA544111370F13BAE650417A1DA26111AA5441295C8F12BAE65041295C8F6211AA5441C8690011BAE650415604856311AA5441427B941FB9E650411A9CD24012AA544181D5C918B9E65041CD565E4912AA54416FF7CF3FB8E65041A11552FB13AA54412267C84EB7E65041132BE16814AA5441BA2E1B06B6E65041960B340916AA5441C74257EAB1E6504194FC061E19AA5441F7278EA6B1E6504195FC061E19AA544185EB5198B1E650418FC2F52819AA5441295C8FB2B0E650418FC2F52819AA54415175C0A9B0E65041DF814B3019AA54414AD40B52AEE650413A58C3481CAA544107A9233DAEE65041613620511CAA5441C3F5283CAEE65041295C8F521CAA54412A6E3D2CAEE6504155B4E2571CAA5441E29B5E09ADE65041B9D53BCC1CAA54410953314CAAE65041ACC1FFE720AA54417295FC86A9E65041E0021EAC24AA5441AE29B1EEA5E650413A278F102AAA54417D465E4EA4E65041C6DFB4DC2BAA5441150EB105A3E65041DE1F711E2CAA544101BEBEEEA1E650419E5BF02D2CAA5441E17A149EA1E650418FC2F5382CAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13600 - 56288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000002A000000CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541A0E0F5AD0B1F514139E2E462572155415DC753A60A1F5141143AB1B556215541A7C9DA5BFD1E5141EAC2332E5C2155419F9825ACFE1E5141E3917E7E5D2155416A9A7C32031F51417347C3335D2155412520463C071F514161E8E95E672155419350DE69041F514102A74D1F69215541093FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE1242068215541A68D170EFB1E51415FB01F4E5F215541C3F5284CF91E514152B81E455D215541CDCCCCCCF31E51418FC2F5A85F2155418FC2F5A8EE1E51411F85EB916221554166666616E81E5141F6285C7F66215541B81E85BBE11E51413D0AD753692155413D0AD7A3DD1E5141CDCCCCAC6A215541D7A3707DD71E5141C3F5280C6D21554185EB5158D11E51410AD7A3207021554133333383C81E51410AD7A3707721554114AE4731CA1E5141CDCCCC5C792155418FC2F538D51E514114AE47F187215541EC51B80EDA1E5141A4703DBA86215541EC51B83EDF1E5141713D0AF788215541666666B6E01E51418FC2F5D8892155410AD7A320FA1E514148E17A34A421554185EB5108FC1E514148E17A94A321554185EB5138FF1E514152B81E95A2215541D7A370ED051F5141CDCCCCFC9E2155417B14AEA70A1F5141B81E859B9C215541F6285CEF0C1F5141C3F5281C9B2155410AD7A340091F51410AD7A340952155419A999959051F5141D7A3703D8F2155411F85EB61011F5141333333D389215541EC51B80E091F5141333333C381215541AE47E19A0B1F5141713D0AE77E215541CDCCCC6C0C1F5141000000007D215541713D0AF70C1F51415C8FC2F579215541DD3CD9B90B1F5141E1E8F0D56A2155416D81EB8C0B1F5141D4C96D3469215541CDCCCC3C0B1F5141C3F5287C67215541
+</a>
+
+<b>
+01060000000100000001030000000100000050000000CAAB8744D81E5141CC495BBF6C215541CCED7CF3D41E51417BE4ED516E215541D8E72DC1D31E51412A1C75EB6E215541594BBE96D31E5141BD2CBA006F215541F6577268D31E5141909DEE176F215541BA086A9BD21E51411BD5B27E6F2155417BA66D56D21E5141349446A16F2155413FD0508FD01E5141F29A0DC77021554133333383C81E51410AD7A37077215541F1F8AD5EC91E5141CDE7CC6B78215541CF52E057CD1E514117C05EC774215541B505D5BAD11E5141B3A0A36C712155419AB8C91DD61E5141C47E00806E2155411504C8ACDA1E5141ED88A0C76C2155415DAF045AE01E5141352E32CD6A21554164245E8BE61E514127719D22682155411864AFC4F51E5141DC9EED64602155417A5CF70EF71E514140BEA8BF63215541AD026498FD1E514142EBC6776D215541EE6565CC061F51415D6B9B747A215541590AAB020B1F5141B670EC917F215541F59E254C0B1F51411C616E3F7F21554135C29CC50B1F5141C550E5837E215541F1F60AA20C1F5141AF3843D47B2155414DE226ED0C1F514145630F7D7921554135F2B4A10C1F5141287822E4752155419CA768970C1F514163656E6675215541BD40D2930C1F514149DCA33A752155411C8B9E810C1F514154CB745C74215541CF71947D0C1F5141D1FE252B74215541282CD6380C1F51415A7807E4702155419E9EA0110C1F5141F6626B056F215541659D42A30B1F5141543D08046A215541E64DBA850B1F5141AB29E80C69215541CDCCCC3C0B1F5141C3F5287C672155412C1D7B0C0B1F5141E6B6A0FA6321554115B1EEF80A1F5141E008838F62215541DFD301F50A1F514179939946622155417B14AEA70A1F5141A4703DAA5C2155411858CC040B1F514176B477CA5A21554196D6BB750B1F51410E339784582155416CE23BA60B1F51418D15B48A57215541A7E9B9150B1F51415213E1FE562155415DC753A60A1F5141143AB1B556215541401AD71B081F51413E5671C157215541D4DC6D3C051F51413E3226F05821554165F3210D031F51414A3E5DD65921554136B19DD1021F514190B8DCEE59215541E2354156011F5141995A038B5A2155411F88BD39FF1E51412C427F695B21554141692EB1FE1E5141F2F7B4A15B215541958958D4FD1E5141832D9BFC5B215541A5C9DA5BFD1E5141E6C2332E5C215541A0C0428DFE1E5141E0B99B5F5D215541261376D5FF1E51415D16506B5D215541659A7C32031F51417347C3335D21554165EB4A6E041F5141E825FC4E60215541781BCF58061F514191FE2322652155412020463C071F51415CE8E95E672155419850DE69041F5141FDA64D1F69215541DF2CCC00041F51419380CB5869215541053FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE124206821554136E6274DFE1E514196E382A065215541EAF35BA0FD1E51412A34035064215541DCBF9C3EFB1E514185559CAC5F2155419A3A2730FA1E51419D97204D5E215541BF443C16F91E5141C136905C5D2155415C7C8DB5F61E51418B162F655E2155415ABD688CF41E5141F8C4A8555F215541E8CD9A96F31E5141337EA4C75F2155410747A66EF01E5141CD8C109161215541C15C5507ED1E51414EB17A8B6321554166666616E81E5141F6285C7F66215541E1EE2597E61E51419278072A6721554130708496E41E51417E31500E682155416C00F36EE41E51413305EF1F68215541B81E85BBE11E51413D0AD753692155418D07A7CCDD1E5141A9AF5C9F6A215541CAAB8744D81E5141CC495BBF6C215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899881 - 2048078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A141EEFE75041E17A149E77335441713D0AA7F1E7504148E17A3476335441000000E0F5E750413D0AD73374335441295C8F92F7E75041A4703D6A733354413D0AD753F9E750413D0AD7E37133544185EB51C8FBE7504152B81E35703354417B14AEA7F8E750417B14AEE758335441AE47E11AF3E75041666666965833544100000010F3E7504114AE47D1563354415C8FC2E5E9E750417B14AE17553354415C8FC2C5E9E75041E17A142E4B335441E17A14AEF5E75041C3F5284C4B335441E17A14FEF8E7504114AE47F148335441AE47E19AF9E750411F85EB81483354415C8FC265F6E750413D0AD74348335441CDCCCC8CF1E75041C3F528CC473354417B14AE87ECE75041D7A3704D47335441E17A144EE8E750413D0AD7D3463354413D0AD753E4E750419A99995946335441A4703DCAE0E75041A4703DAA45335441EC51B85EDDE750410AD7A3D044335441E17A148EDAE75041713D0A7743335441295C8F92D7E75041AE47E19A413354419A9999C9D4E750419A9999494233544148E17A14D1E75041EC51B86E4333544152B81E85CDE75041CDCCCC5C443354413D0AD7D3D3E75041666666A64C3354415C8FC2C5D4E75041666666464E3354418FC2F548D5E750417B14AE4750335441A4703D3AD6E75041B81E853B5333544100000000D7E75041E17A14EE5533544152B81ED5D7E75041B81E85EB5733544148E17AF4D8E75041000000505A3354418FC2F5D8D9E75041EC51B82E5D3354411F85EB31DAE750418FC2F508603354410AD7A340C3E75041A4703D8A633354418FC2F5F8B7E750415C8FC2A564335441AE47E11AA9E75041B81E851B66335441CDCCCC2CAFE75041333333E36F335441EC51B88EB1E75041B81E854B6F335441E17A146EB3E75041666666666D335441CDCCCCECB4E75041666666166D3354415C8FC2D5B7E75041E17A149E6B33544166666636BCE750411F85EB516A335441D7A370FDBCE75041333333236C33544114AE4771BDE75041AE47E13A6D335441E17A149EC9E75041B81E852B69335441A4703D9ACCE75041B81E856B713354417B14AE47DDE7504148E17A446B335441E17A14AEE4E750417B14AE477D3354417B14AE47E9E75041D7A3707D7B3354415C8FC225EBE75041666666667A335441E17A141EEFE75041E17A149E77335441
+</a>
+
+<b>
+0106000000010000000103000000020000005700000052B81E4594E750413D0AD7E39B3354417B14AE9795E750415C8FC2959F3354419A99990996E75041295C8F02A233544148E17A649BE75041CDCCCC8CA1335441713D0AE79EE75041000000F0A0335441295C8F42A2E75041CDCCCC1CA0335441AE47E14AA5E75041000000509F335441C3F528BCA8E75041A4703D2A9E33544185EB5148A7E75041B81E85EB99335441D7A3701DA5E7504185EB51A8943354417B14AEE7A4E75041C3F528AC903354413D0AD763A5E75041713D0A778E335441AE47E18AA7E75041F6285C5F84335441C3F5286CA9E75041C3F5287C75335441C3F5286CAAE75041EC51B8DE7033544148E17AF4ABE750410000001070335441CDCCCC2CAFE75041333333E36F335441AE47E11AA9E75041B81E851B663354418FC2F5F8B7E750415C8FC2A5643354410AD7A340C3E75041A4703D8A633354419955AE73DAE7504117F5B8F15F3354418FC2F5D8D9E75041EC51B82E5D33544106584C83D8E7504151D834B65933544122115FB6D6E750412ADD70D555335441DF5C88A2D4E750418D9D5D374E33544197C00D62D3E750413E14E5104C33544160CECBB9CBE750414D74559B41335441203BC02EC9E7504142E6042B3D33544101DAF44EC8E75041A6496F9439335441106FA917C6E75041A8BAC5F2363354414536F99CC4E75041F7CD574937335441D31B418AC1E75041B4BADC0D3833544192BE8758BEE750417D846FA736335441240E7AFCB9E75041DE4F496C343354416BFC427DB8E75041E64AF91233335441CDCCCC1CB8E75041000000503033544152B81E05B8E75041F6285C4F2D335441000000C0B7E75041333333532B3354419A999939B6E750419A99990929335441C3F5288CB1E750413D0AD78323335441B81E854BB1E750410AD7A3102233544185EB51A8AFE75041EC51B8FE1F3354415C8FC245AEE750418FC2F5C81E335441295C8F32ACE7504114AE47211A335441713D0A57A3E7504114AE47211A3354419A999949A8E75041000000C024335441713D0A37A8E750415C8FC2A5253354415C8FC245A8E750419A9999F92633544185EB5168A7E75041AE47E1EA26335441713D0A77A7E75041EC51B8FE2533544114AE4701A7E75041D7A3708D24335441A4703D1AA2E750410AD7A33019335441B81E854BA1E750413333339317335441295C8FF2A0E750411F85EB2116335441CDCCCC7CA0E750415C8FC23515335441B81E85CB9FE750419A999909153354411F85EB819CE75041A4703DFA143354415C8FC2D59AE75041E17A140E1433544148E17A748FE75041D7A3706D0C33544114AE476192E75041E17A149E15335441D7A3704D94E75041333333E31C3354413D0AD76396E750413D0AD713263354410000002098E7504152B81E452F3354415C8FC2B598E75041295C8F8235335441B81E854B99E75041E17A141E3D335441F6285CAF99E75041AE47E1EA44335441B81E85BB99E75041B81E85EB483354418FC2F5689AE750418FC2F5F85533544185EB51A89CE7504152B81EA55F3354413D0AD7539EE75041D7A370FD63335441F6285C3F9FE75041000000806733544100000040A0E750413D0AD7C36C3354415C8FC2D5A0E750411F85EBB171335441B81E856BA1E750415C8FC2B577335441AE47E14AA1E7504114AE47817C335441AE47E1EAA0E75041AE47E1BA7F3354415C8FC295A0E750417B14AE2782335441A4703D6A9FE7504152B81E95863354418FC2F5E89DE75041C3F528EC88335441713D0AE79AE75041CDCCCCAC893354411F85EB5198E75041CDCCCCFC88335441713D0A9795E75041B81E853B87335441A4703D1A91E75041F6285C9F873354415C8FC2C591E75041000000908E3354416666666692E7504166666666933354416666668693E75041EC51B82E9833544152B81E4594E750413D0AD7E39B33544105000000F6285CAFA2E75041A4703D1A53335441D7A370FDA1E75041000000E0513354413D0AD753A3E75041E17A141E513354413D0AD703A4E750419A99995952335441F6285CAFA2E75041A4703D1A53335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899881 - 4586384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A141EEFE75041E17A149E77335441713D0AA7F1E7504148E17A3476335441000000E0F5E750413D0AD73374335441295C8F92F7E75041A4703D6A733354413D0AD753F9E750413D0AD7E37133544185EB51C8FBE7504152B81E35703354417B14AEA7F8E750417B14AEE758335441AE47E11AF3E75041666666965833544100000010F3E7504114AE47D1563354415C8FC2E5E9E750417B14AE17553354415C8FC2C5E9E75041E17A142E4B335441E17A14AEF5E75041C3F5284C4B335441E17A14FEF8E7504114AE47F148335441AE47E19AF9E750411F85EB81483354415C8FC265F6E750413D0AD74348335441CDCCCC8CF1E75041C3F528CC473354417B14AE87ECE75041D7A3704D47335441E17A144EE8E750413D0AD7D3463354413D0AD753E4E750419A99995946335441A4703DCAE0E75041A4703DAA45335441EC51B85EDDE750410AD7A3D044335441E17A148EDAE75041713D0A7743335441295C8F92D7E75041AE47E19A413354419A9999C9D4E750419A9999494233544148E17A14D1E75041EC51B86E4333544152B81E85CDE75041CDCCCC5C443354413D0AD7D3D3E75041666666A64C3354415C8FC2C5D4E75041666666464E3354418FC2F548D5E750417B14AE4750335441A4703D3AD6E75041B81E853B5333544100000000D7E75041E17A14EE5533544152B81ED5D7E75041B81E85EB5733544148E17AF4D8E75041000000505A3354418FC2F5D8D9E75041EC51B82E5D3354411F85EB31DAE750418FC2F508603354410AD7A340C3E75041A4703D8A633354418FC2F5F8B7E750415C8FC2A564335441AE47E11AA9E75041B81E851B66335441CDCCCC2CAFE75041333333E36F335441EC51B88EB1E75041B81E854B6F335441E17A146EB3E75041666666666D335441CDCCCCECB4E75041666666166D3354415C8FC2D5B7E75041E17A149E6B33544166666636BCE750411F85EB516A335441D7A370FDBCE75041333333236C33544114AE4771BDE75041AE47E13A6D335441E17A149EC9E75041B81E852B69335441A4703D9ACCE75041B81E856B713354417B14AE47DDE7504148E17A446B335441E17A14AEE4E750417B14AE477D3354417B14AE47E9E75041D7A3707D7B3354415C8FC225EBE75041666666667A335441E17A141EEFE75041E17A149E77335441
+</a>
+
+<b>
+0106000000010000000103000000020000005700000052B81E4594E750413D0AD7E39B3354417B14AE9795E750415C8FC2959F3354419A99990996E75041295C8F02A233544148E17A649BE75041CDCCCC8CA1335441713D0AE79EE75041000000F0A0335441295C8F42A2E75041CDCCCC1CA0335441AE47E14AA5E75041000000509F335441C3F528BCA8E75041A4703D2A9E33544185EB5148A7E75041B81E85EB99335441D7A3701DA5E7504185EB51A8943354417B14AEE7A4E75041C3F528AC903354413D0AD763A5E75041713D0A778E335441AE47E18AA7E75041F6285C5F84335441C3F5286CA9E75041C3F5287C75335441C3F5286CAAE75041EC51B8DE7033544148E17AF4ABE750410000001070335441CDCCCC2CAFE75041333333E36F335441AE47E11AA9E75041B81E851B663354418FC2F5F8B7E750415C8FC2A5643354410AD7A340C3E75041A4703D8A633354419955AE73DAE7504117F5B8F15F3354418FC2F5D8D9E75041EC51B82E5D33544106584C83D8E7504151D834B65933544122115FB6D6E750412ADD70D555335441DF5C88A2D4E750418D9D5D374E33544197C00D62D3E750413E14E5104C33544160CECBB9CBE750414D74559B41335441203BC02EC9E7504142E6042B3D33544101DAF44EC8E75041A6496F9439335441106FA917C6E75041A8BAC5F2363354414536F99CC4E75041F7CD574937335441D31B418AC1E75041B4BADC0D3833544192BE8758BEE750417D846FA736335441240E7AFCB9E75041DE4F496C343354416BFC427DB8E75041E64AF91233335441CDCCCC1CB8E75041000000503033544152B81E05B8E75041F6285C4F2D335441000000C0B7E75041333333532B3354419A999939B6E750419A99990929335441C3F5288CB1E750413D0AD78323335441B81E854BB1E750410AD7A3102233544185EB51A8AFE75041EC51B8FE1F3354415C8FC245AEE750418FC2F5C81E335441295C8F32ACE7504114AE47211A335441713D0A57A3E7504114AE47211A3354419A999949A8E75041000000C024335441713D0A37A8E750415C8FC2A5253354415C8FC245A8E750419A9999F92633544185EB5168A7E75041AE47E1EA26335441713D0A77A7E75041EC51B8FE2533544114AE4701A7E75041D7A3708D24335441A4703D1AA2E750410AD7A33019335441B81E854BA1E750413333339317335441295C8FF2A0E750411F85EB2116335441CDCCCC7CA0E750415C8FC23515335441B81E85CB9FE750419A999909153354411F85EB819CE75041A4703DFA143354415C8FC2D59AE75041E17A140E1433544148E17A748FE75041D7A3706D0C33544114AE476192E75041E17A149E15335441D7A3704D94E75041333333E31C3354413D0AD76396E750413D0AD713263354410000002098E7504152B81E452F3354415C8FC2B598E75041295C8F8235335441B81E854B99E75041E17A141E3D335441F6285CAF99E75041AE47E1EA44335441B81E85BB99E75041B81E85EB483354418FC2F5689AE750418FC2F5F85533544185EB51A89CE7504152B81EA55F3354413D0AD7539EE75041D7A370FD63335441F6285C3F9FE75041000000806733544100000040A0E750413D0AD7C36C3354415C8FC2D5A0E750411F85EBB171335441B81E856BA1E750415C8FC2B577335441AE47E14AA1E7504114AE47817C335441AE47E1EAA0E75041AE47E1BA7F3354415C8FC295A0E750417B14AE2782335441A4703D6A9FE7504152B81E95863354418FC2F5E89DE75041C3F528EC88335441713D0AE79AE75041CDCCCCAC893354411F85EB5198E75041CDCCCCFC88335441713D0A9795E75041B81E853B87335441A4703D1A91E75041F6285C9F873354415C8FC2C591E75041000000908E3354416666666692E7504166666666933354416666668693E75041EC51B82E9833544152B81E4594E750413D0AD7E39B33544105000000F6285CAFA2E75041A4703D1A53335441D7A370FDA1E75041000000E0513354413D0AD753A3E75041E17A141E513354413D0AD703A4E750419A99995952335441F6285CAFA2E75041A4703D1A53335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507883 - 215271
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -56  </desc>
+<a>
+0106000000010000000103000000010000002700000033333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D125541A4703D6AE53A5141D7A3706D141255419A999949E53A5141B81E851B181255413D0AD733E33A5141EC51B80E1A1255410AD7A3A0E33A51417B14AEE71D1255411F85EBD1E83A5141000000902C1255413D0AD733E83A5141000000C02D125541F6285C1FEB3A5141CDCCCCAC341255418FC2F5C8ED3A514114AE473136125541E17A148EEE3A51418FC2F548381255417B14AEA7EF3A5141EC51B89E3A12554152B81E05F23A51413D0AD7733E1255418FC2F548F33A5141295C8FE23F1255415C8FC275F53A5141F6285C3F4012554185EB5168F73A514152B81E054012554185EB5138F93A514148E17A343F125541AE47E12AFB3A5141CDCCCCCC3D125541000000F0FB3A5141713D0A373C125541AE47E14AFC3A5141CDCCCCFC39125541F6285CCFF93A51418FC2F5483212554152B81E05F63A5141CDCCCC1C281255418FC2F538F53A5141F6285C6F23125541D7A3704DF23A5141713D0A571D125541AE47E1BAEF3A5141D7A3700D1B12554114AE4751ED3A51417B14AED717125541AE47E15AEC3A51410AD7A3A012125541666666B6ED3A51418FC2F5980D1255419A9999D9ED3A51417B14AEE709125541CDCCCCFCEC3A51413D0AD7530612554114AE47D1EA3A5141666666360312554133333383E53A51415C8FC23500125541
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000CDCCCCFCEC3A51413D0AD753061255413E61C7E9EB3A5141ED310DC9041255411B08CFD1EA3A5141174CF65803125541523CB5A0EA3A514127CFE81A0312554133333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D1255419906BD90E63A51417184F1AC1112554119967F63E53A5141D5830530151255419A999949E53A5141B81E851B1812554128D89A68E33A51412A1F5FDD191255415B100238E33A5141420674341A12554120AABC3EE33A514174A05E711A1255415E50973FE33A5141050C1A791A125541A80B634EE33A514182280CFF1A1255410AD7A3A0E33A51417B14AEE71D125541F5AFB481E63A5141E0FD480826125541656C81B8E63A5141A49BF9A2261255415CBA16CAE63A514195FC9BD426125541FFDBF897E93A514124F005E82C1255411F537DB2E83A514113E45BEC2E125541F6285C1FEB3A5141CDCCCCAC341255414ED55AD2EC3A5141FD03BAA435125541BF3E04C3ED3A51412494A5BB3512554132067575F03A51414BBF4EC7391255415C48364CF23A5141912DE6D73C125541D00520BAF33A5141B4BC6BF53F12554174E452E1F43A5141CDE19E26401255415C8FC275F53A5141F6285C3F4012554185EB5168F73A514152B81E054012554185EB5138F93A514148E17A343F1255416EAEEFB8F93A51413AFEB0D73E125541D7F76105FA3A51410A225AF23D125541997185FBFB3A5141B69DD7443A1255416119D987F93A5141FC68FCAF311255417735D237F83A51413A511C032E1255419CE43E0DF83A5141A126D6902D125541DF8FFE93F73A514181C1644B2C125541723E2B75F73A5141B72AA8F82B12554187418B30F73A5141C20977402B12554152B81E05F63A5141CDCCCC1C28125541B9DD1C57F53A51414D4A3620241255410A7F6B3DF53A5141F5DCA1D5231255415C48364CF23A51413891AE751D125541F198E6E5F03A51416E4655171C125541AE47E1BAEF3A5141D7A3700D1B12554114AE4751ED3A51417B14AED717125541AE47E15AEC3A51410AD7A3A012125541666666B6ED3A51418FC2F5980D125541851F2DC1ED3A5141218191770C1255410FBE2AD1ED3A5141DF132FF009125541806502B1ED3A5141C92C513F09125541CDCCCCFCEC3A51413D0AD75306125541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507883 - 366452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -56  </desc>
+<a>
+0106000000010000000103000000010000002700000033333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D125541A4703D6AE53A5141D7A3706D141255419A999949E53A5141B81E851B181255413D0AD733E33A5141EC51B80E1A1255410AD7A3A0E33A51417B14AEE71D1255411F85EBD1E83A5141000000902C1255413D0AD733E83A5141000000C02D125541F6285C1FEB3A5141CDCCCCAC341255418FC2F5C8ED3A514114AE473136125541E17A148EEE3A51418FC2F548381255417B14AEA7EF3A5141EC51B89E3A12554152B81E05F23A51413D0AD7733E1255418FC2F548F33A5141295C8FE23F1255415C8FC275F53A5141F6285C3F4012554185EB5168F73A514152B81E054012554185EB5138F93A514148E17A343F125541AE47E12AFB3A5141CDCCCCCC3D125541000000F0FB3A5141713D0A373C125541AE47E14AFC3A5141CDCCCCFC39125541F6285CCFF93A51418FC2F5483212554152B81E05F63A5141CDCCCC1C281255418FC2F538F53A5141F6285C6F23125541D7A3704DF23A5141713D0A571D125541AE47E1BAEF3A5141D7A3700D1B12554114AE4751ED3A51417B14AED717125541AE47E15AEC3A51410AD7A3A012125541666666B6ED3A51418FC2F5980D1255419A9999D9ED3A51417B14AEE709125541CDCCCCFCEC3A51413D0AD7530612554114AE47D1EA3A5141666666360312554133333383E53A51415C8FC23500125541
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000CDCCCCFCEC3A51413D0AD753061255413E61C7E9EB3A5141ED310DC9041255411B08CFD1EA3A5141174CF65803125541523CB5A0EA3A514127CFE81A0312554133333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D1255419906BD90E63A51417184F1AC1112554119967F63E53A5141D5830530151255419A999949E53A5141B81E851B1812554128D89A68E33A51412A1F5FDD191255415B100238E33A5141420674341A12554120AABC3EE33A514174A05E711A1255415E50973FE33A5141050C1A791A125541A80B634EE33A514182280CFF1A1255410AD7A3A0E33A51417B14AEE71D125541F5AFB481E63A5141E0FD480826125541656C81B8E63A5141A49BF9A2261255415CBA16CAE63A514195FC9BD426125541FFDBF897E93A514124F005E82C1255411F537DB2E83A514113E45BEC2E125541F6285C1FEB3A5141CDCCCCAC341255414ED55AD2EC3A5141FD03BAA435125541BF3E04C3ED3A51412494A5BB3512554132067575F03A51414BBF4EC7391255415C48364CF23A5141912DE6D73C125541D00520BAF33A5141B4BC6BF53F12554174E452E1F43A5141CDE19E26401255415C8FC275F53A5141F6285C3F4012554185EB5168F73A514152B81E054012554185EB5138F93A514148E17A343F1255416EAEEFB8F93A51413AFEB0D73E125541D7F76105FA3A51410A225AF23D125541997185FBFB3A5141B69DD7443A1255416119D987F93A5141FC68FCAF311255417735D237F83A51413A511C032E1255419CE43E0DF83A5141A126D6902D125541DF8FFE93F73A514181C1644B2C125541723E2B75F73A5141B72AA8F82B12554187418B30F73A5141C20977402B12554152B81E05F63A5141CDCCCC1C28125541B9DD1C57F53A51414D4A3620241255410A7F6B3DF53A5141F5DCA1D5231255415C48364CF23A51413891AE751D125541F198E6E5F03A51416E4655171C125541AE47E1BAEF3A5141D7A3700D1B12554114AE4751ED3A51417B14AED717125541AE47E15AEC3A51410AD7A3A012125541666666B6ED3A51418FC2F5980D125541851F2DC1ED3A5141218191770C1255410FBE2AD1ED3A5141DF132FF009125541806502B1ED3A5141C92C513F09125541CDCCCCFCEC3A51413D0AD75306125541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520501 - 230678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC3C286751411F85EB71876D544152B81E45296751419A999909846D5441C3F5288C29675141F6285C8F816D5441713D0A57296751415C8FC2C57E6D544114AE47C1286751411F85EB917C6D5441F6285CFF27675141C3F5289C796D5441CDCCCC2C26675141F6285C9F746D544114AE47F120675141666666F6756D5441000000201C67514133333383776D5441E17A149E176751410AD7A370796D544166666636136751419A9999897C6D54417B14AE170A675141EC51B83E846D544148E17AB40D67514152B81E45896D5441CDCCCCDC1167514114AE47618F6D54410AD7A3D01A67514152B81E758E6D544152B81E451C6751417B14AE978E6D54413D0AD73320675141333333D38E6D5441295C8F12256751419A9999E98E6D5441CDCCCC3C286751411F85EB71876D5441
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441CE1BFFF82067514151826CF4756D54414CD7366E1F675141A29AEF72766D54412CC18A1B1F675141A903898D766D5441043472991E675141C08A64B7766D5441EE814D371D675141630B5629776D5441E84A402E1D675141FA973F2C776D544169BA10821B6751412F72BCC6776D5441D209DAB8196751418906408A786D54412D3C43BE186751418B3B68F5786D54419B3198711867514110293116796D5441844025C116675141770EFF0B7A6D5441F246824115675141AADFC2197B6D54412DFE64A813675141640971397C6D54417EA125D2116751410340ADB67D6D544140BE991011675141F9303F5A7E6D5441970A31D30F675141AFE77E667F6D5441F03350210E675141B9D92CD5806D5441BCAE01C10C675141E9B7EAFE816D5441A6476C980C6751414B043721826D544110FE29B20A675141619029BC836D54417B14AE170A675141EC51B83E846D5441E37E8D730B67514119B69C22866D5441AFBFE9990B675141A7B7F857866D544148E17AB40D67514152B81E45896D5441FD8FEFDC1067514119E340E98D6D544197BC8AE41167514121747B608F6D544174FFAC1318675141B59C59BD8E6D54410AD7A3D01A67514152B81E758E6D544181FB42011C675141F14462918E6D544198D66FE11D67514135AA0EB08E6D544153C6DE411E6751411D39C2B58E6D54412ED7DB691E6751414D771FB88E6D544114A6D8D91F675141B31BE1CD8E6D5441F0CA348C2267514158A3FCDD8E6D5441C6AA621A236751419E9A8AE08E6D544110928B3F24675141C104CFE58E6D5441AEA2BAFB24675141459630E98E6D544145B1F512256751412528A8E88E6D5441DC788DA125675141922639988D6D54414A2131F3256751411D819AD78C6D5441A6CEBC76266751414B1F3CA18B6D5441CCFEB6C3276751410ABB9B8F886D5441420A566628675141CD40D7E8866D5441313F61FA28675141B9B14200856D54418A86F65629675141B58F4C6A836D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520501 - 343602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC3C286751411F85EB71876D544152B81E45296751419A999909846D5441C3F5288C29675141F6285C8F816D5441713D0A57296751415C8FC2C57E6D544114AE47C1286751411F85EB917C6D5441F6285CFF27675141C3F5289C796D5441CDCCCC2C26675141F6285C9F746D544114AE47F120675141666666F6756D5441000000201C67514133333383776D5441E17A149E176751410AD7A370796D544166666636136751419A9999897C6D54417B14AE170A675141EC51B83E846D544148E17AB40D67514152B81E45896D5441CDCCCCDC1167514114AE47618F6D54410AD7A3D01A67514152B81E758E6D544152B81E451C6751417B14AE978E6D54413D0AD73320675141333333D38E6D5441295C8F12256751419A9999E98E6D5441CDCCCC3C286751411F85EB71876D5441
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441CE1BFFF82067514151826CF4756D54414CD7366E1F675141A29AEF72766D54412CC18A1B1F675141A903898D766D5441043472991E675141C08A64B7766D5441EE814D371D675141630B5629776D5441E84A402E1D675141FA973F2C776D544169BA10821B6751412F72BCC6776D5441D209DAB8196751418906408A786D54412D3C43BE186751418B3B68F5786D54419B3198711867514110293116796D5441844025C116675141770EFF0B7A6D5441F246824115675141AADFC2197B6D54412DFE64A813675141640971397C6D54417EA125D2116751410340ADB67D6D544140BE991011675141F9303F5A7E6D5441970A31D30F675141AFE77E667F6D5441F03350210E675141B9D92CD5806D5441BCAE01C10C675141E9B7EAFE816D5441A6476C980C6751414B043721826D544110FE29B20A675141619029BC836D54417B14AE170A675141EC51B83E846D5441E37E8D730B67514119B69C22866D5441AFBFE9990B675141A7B7F857866D544148E17AB40D67514152B81E45896D5441FD8FEFDC1067514119E340E98D6D544197BC8AE41167514121747B608F6D544174FFAC1318675141B59C59BD8E6D54410AD7A3D01A67514152B81E758E6D544181FB42011C675141F14462918E6D544198D66FE11D67514135AA0EB08E6D544153C6DE411E6751411D39C2B58E6D54412ED7DB691E6751414D771FB88E6D544114A6D8D91F675141B31BE1CD8E6D5441F0CA348C2267514158A3FCDD8E6D5441C6AA621A236751419E9A8AE08E6D544110928B3F24675141C104CFE58E6D5441AEA2BAFB24675141459630E98E6D544145B1F512256751412528A8E88E6D5441DC788DA125675141922639988D6D54414A2131F3256751411D819AD78C6D5441A6CEBC76266751414B1F3CA18B6D5441CCFEB6C3276751410ABB9B8F886D5441420A566628675141CD40D7E8866D5441313F61FA28675141B9B14200856D54418A86F65629675141B58F4C6A836D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>523939 - 263820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000002000000010300000002000000E9000000B81E855BF7B85041EC51B8DEBB2F5441295C8F42F8B850411F85EBC1BB2F544152B81E35F9B85041EC51B8AEBB2F5441F6285C7F03B95041AE47E1DABA2F544114AE47F113B950410AD7A3E0B82F5441EC51B89E16B950413D0AD793E22F54413D0AD73321B95041D7A3705DE62F5441000000902DB95041F6285CEFF32F5441333333A338B950418FC2F5A8FB2F5441AE47E14A3DB95041295C8F32FF2F5441A4703DCA3EB9504148E17A64FF2F54413333334343B95041EC51B82E02305441B81E854B47B9504114AE47610730544185EB51784BB95041A4703D1A18305441C3F528EC4BB95041713D0A47163054411F85EBC14BB95041AE47E12A153054413D0AD7A34CB95041713D0A8714305441A4703D6A4DB95041E17A143E1430544152B81E354DB9504133333363133054415C8FC2854DB950410AD7A38012305441666666864DB950413D0AD7B311305441CDCCCCAC4DB95041B81E852B1130544148E17A244EB95041000000A01030544148E17A944CB950417B14AEB7103054418FC2F5E84BB9504148E17A640F30544152B81EC54AB950418FC2F5680F305441F6285C5F4AB95041E17A148E0F3054415C8FC2054AB95041C3F528AC0E305441C3F5285C4AB9504185EB51480E305441CDCCCCEC4BB95041E17A142E0D305441CDCCCC0C4CB95041333333930C305441A4703DAA4BB9504152B81E650C305441F6285CAF4AB9504185EB51680C305441A4703D5A4AB950413D0AD7130C305441F6285C0F4AB95041295C8F920B3054415C8FC2F549B950413D0AD7130B305441295C8F124AB9504152B81E950A305441000000F04AB95041A4703D9A09305441295C8F024CB95041D7A370FD09305441AE47E17A4CB9504114AE47C109305441A4703DEA4DB950411F85EBD1083054410AD7A3204EB950417B14AEE7073054419A9999294DB950418FC2F5380630544185EB51084CB95041295C8F720630544185EB51584BB95041B81E85CB06305441F6285C3F4AB95041EC51B8BE07305441AE47E14A49B950410AD7A3800730544185EB51F848B95041666666060730544148E17A0449B95041AE47E1CA0530544148E17AD449B950413D0AD7F30330544152B81E354AB95041295C8F420330544185EB51F84AB95041F6285C9F02305441D7A370DD4BB950418FC2F52802305441C3F5281C4DB95041333333C30130544114AE47714DB95041CDCCCC6C01305441333333734DB95041C3F528FC00305441000000204DB95041E17A14AE00305441CDCCCCDC4BB95041295C8F1200305441E17A149E4BB95041D7A3701DFF2F544114AE47214CB95041C3F5284CFE2F5441EC51B8FE4CB950413D0AD7B3FD2F54417B14AE274EB9504185EB5138FD2F54417B14AEE74EB95041666666F6FB2F544114AE47214FB950415C8FC2D5FB2F54417B14AEA74FB950410AD7A3B0FB2F544148E17A9450B9504152B81ED5FB2F54415C8FC2A551B95041713D0A97FB2F5441EC51B8DE51B95041D7A3702DFB2F544185EB51D851B95041F6285C7FFA2F544114AE470152B95041CDCCCCECF92F54410AD7A38052B95041E17A144EF92F544114AE479153B950413D0AD7D3F82F5441295C8FC254B95041F6285C7FF82F54418FC2F57856B95041D7A3703DF82F5441333333B356B95041B81E85EBF72F54411F85EB9156B95041F6285C9FF72F5441CDCCCCBC55B95041D7A3705DF72F54413D0AD76355B950413D0AD7F3F62F544152B81E6555B95041E17A146EF62F5441F6285CAF55B95041D7A3701DF62F54410000006056B950413D0AD703F52F5441333333C356B95041C3F528ECF32F5441D7A370FD57B95041E17A146EF22F5441C3F5286C58B950415C8FC235F22F5441EC51B81E59B950415C8FC275F22F54413D0AD7C359B95041CDCCCCCCF22F54418FC2F5685AB950415C8FC265F32F5441F6285C4F5BB950417B14AE77F42F5441CDCCCC6C5BB95041EC51B83EF52F5441F6285C1F5BB9504148E17AE4F52F5441E17A141E5BB9504166666656F62F54411F85EB515BB95041CDCCCCFCF62F54419A9999C95BB95041CDCCCCFCF72F5441000000005CB95041F6285C7FF92F544148E17AF45BB9504148E17AE4FA2F5441AE47E12A5CB95041C3F528CCFB2F544114AE47D15CB950413D0AD7F3FB2F54418FC2F5985DB9504148E17A14FC2F5441295C8F125FB9504152B81EF5FB2F54410AD7A3B060B9504148E17AB4FB2F54417B14AE3761B95041666666C6FB2F5441000000B061B95041E17A141EFC2F544185EB51F861B9504114AE4791FC2F5441713D0A2762B950417B14AE67FD2F544152B81E9562B950411F85EBB1FD2F5441713D0A0763B950410AD7A380FD2F544152B81E5563B95041F6285CEFFC2F544185EB51F863B95041F6285CBFFC2F54410AD7A3D064B95041AE47E1AAFC2F544185EB51D865B95041666666B6FC2F5441F6285C6F66B950419A999979FC2F5441000000A066B95041000000F0FB2F54419A99997966B9504114AE4741FB2F5441CDCCCC2C66B9504114AE4721FA2F5441295C8F6266B95041333333A3F92F54410000000066B950417B14AED7F82F5441D7A3704D66B950419A999919F82F54419A9999F966B950413D0AD773F72F5441A4703D7A67B95041B81E85ABF62F5441C3F5289C68B950411F85EB61F52F5441AE47E14A69B9504100000000F52F5441C3F5289C69B950418FC2F5F8F42F5441D7A370FD69B95041295C8F22F52F54413D0AD7636AB95041C3F5287CF52F5441333333836AB9504114AE4701F62F54419A9999A96AB9504133333363F62F5441333333036BB9504148E17A94F62F54411F85EB716BB95041AE47E15AF62F54413D0AD7E36BB9504133333313F62F5441CDCCCC1C6CB9504148E17AA4F52F5441666666E66BB95041CDCCCCBCF42F54417B14AE976BB950410AD7A3F0F22F5441713D0A476CB95041AE47E16AF22F5441333333036DB9504114AE4711F22F5441A4703DDA6DB9504148E17A84F22F5441666666466EB9504148E17A94F22F5441A4703DEA6EB9504133333373F22F5441713D0A576FB9504133333343F22F54419A9999A96FB9504114AE47D1F12F5441AE47E19A6FB950410AD7A300F12F544148E17AC470B950419A9999E9EF2F544152B81E8571B95041295C8F72EF2F5441AE47E14A72B9504148E17AC4EF2F54419A99994973B950419A9999F9EF2F54411F85EBD173B9504114AE47E1F02F5441AE47E11A74B950411F85EB11F12F5441F6285C4F76B950419A999909F12F54416666662677B95041C3F5287CF12F54417B14AEC777B950413D0AD763F12F5441E17A142E78B95041B81E856BF12F5441713D0A8778B95041E17A149EF12F5441713D0A0779B95041C3F5285CF22F5441CDCCCC8C79B95041AE47E1EAF22F5441E17A14CE7AB950415C8FC2A5F22F544148E17A947BB95041C3F5285CF22F54415C8FC2857BB950415C8FC2C5F12F54415C8FC2457CB95041D7A3709DF02F5441EC51B84E7DB9504114AE47F1EF2F5441A4703DFA7EB9504133333363EF2F5441E17A143E80B9504148E17A94EF2F54410000006081B95041AE47E16AEF2F54410AD7A3E081B95041295C8F72EF2F5441D7A3703D82B950413D0AD7A3EF2F54417B14AED782B950410AD7A310F02F544152B81E7583B95041C3F5288CF02F5441AE47E12A84B95041CDCCCCACF02F5441666666C684B9504148E17AA4F02F5441AE47E19A86B950410AD7A310F12F5441CDCCCCDC86B95041C3F528BCF02F5441666666C686B950410AD7A300F02F5441D7A370FD86B95041A4703DAAEE2F5441AE47E1EA87B9504100000050ED2F544152B81E358CB9504152B81EC5E92F544185EB51C88DB9504185EB51D8E82F54416666669687B950418FC2F568E02F544114AE475182B950410AD7A330DA2F544148E17A347EB95041AE47E11AD62F5441F6285CBF6EB95041CDCCCCECC92F5441AE47E11A6AB9504152B81E95C52F54411F85EBB158B95041D7A370CDB02F5441D7A3706D4FB95041C3F5281CA42F5441333333334BB9504152B81E959F2F5441333333C346B950410AD7A3609B2F54411F85EB813DB950410AD7A310942F54413D0AD76334B95041000000508D2F544152B81ED52BB9504185EB5138872F54413D0AD7832CB95041A4703DDA882F5441295C8FB22FB950413D0AD7138B2F544185EB51E82EB9504185EB51788F2F5441CDCCCC9C2DB9504185EB51788F2F54411F85EBF12DB950410AD7A3E0912F5441E17A145E2DB95041CDCCCC9C932F54417B14AEB72CB9504100000090952F544152B81EE52BB95041F6285C0F962F5441D7A3708D2AB9504166666636962F5441D7A370CD27B950411F85EB11962F54411F85EB3126B95041E17A14FE9B2F5441E17A14FE24B950410AD7A300A42F54417B14AEC724B95041EC51B8AEA52F5441666666C624B950415C8FC265A72F5441B81E85EB24B9504114AE4721A92F5441295C8F0226B9504100000070AC2F544185EB51F826B95041713D0AD7AE2F54415C8FC2252AB95041295C8F72B62F5441E17A146E2CB950410AD7A3A0BC2F54418FC2F5E82BB9504148E17AD4BC2F5441F6285CAF29B9504100000090B62F5441F6285C6F26B950415C8FC2D5AE2F54419A99997925B95041000000A0AC2F54413D0AD75324B950419A999949A92F5441295C8F3224B95041AE47E18AA72F54416666661624B95041333333C3A52F54417B14AE5724B95041EC51B8EEA32F54410000008025B95041E17A141E9C2F5441713D0A4721B95041CDCCCC4C9B2F54410000006022B95041D7A370DD952F5441A4703D2A21B9504100000080962F544152B81E551FB95041C3F5280C972F544152B81E551DB950419A999969972F5441E17A14BE1AB95041713D0A37972F544148E17A0414B95041AE47E19A932F54413D0AD7230AB950419A9999A9A02F5441CDCCCC5C06B9504185EB5168A42F5441D7A3705D03B950415C8FC2E5A52F54418FC2F5C8FBB85041713D0A97A82F5441C3F5284CF3B85041713D0AF7AB2F54413D0AD7D3EFB85041713D0A07AD2F5441295C8FF2ECB85041AE47E1BAB12F5441CDCCCC3CEEB850419A999979B52F544166666636EFB85041333333F3B72F5441C3F528FCF0B85041CDCCCC2CB72F54419A999969F5B8504152B81EE5B82F5441B81E855BF7B85041EC51B8DEBB2F54410500000048E17A645CB950415C8FC275D22F54413D0AD7D361B950417B14AE07CF2F5441E17A14AE65B950417B14AE77D52F54419A99995960B95041CDCCCCBCD82F544148E17A645CB950415C8FC275D22F54410103000000010000001E000000C3F528EC21B95041666666168E2F5441C3F528EC21B95041B81E85BB8E2F54419A99992923B9504148E17AE48F2F54415C8FC29525B9504152B81E75842F54418FC2F5E826B95041A4703DDA842F54418FC2F55827B950418FC2F528842F54411F85EB2123B9504185EB5138802F54410AD7A3D021B95041D7A370FD802F5441295C8F4220B95041AE47E16A832F54415C8FC21515B9504114AE4731922F5441AE47E11A15B950413D0AD7E3922F544148E17AF417B95041E17A14AE942F5441000000D019B95041A4703D8A942F54419A99990920B950417B14AE37932F5441295C8F0220B9504152B81E75922F5441A4703D2A1FB950410AD7A350922F5441B81E85DB1EB9504148E17AA4912F5441B81E85DB1EB9504100000000912F5441A4703D1A1FB95041A4703D7A902F544185EB51881FB9504148E17A04902F5441AE47E1FA1FB9504148E17AE48F2F54410AD7A31020B95041295C8F628F2F5441F6285CBF1FB9504185EB51488F2F544114AE47511FB950413D0AD7B38E2F54419A9999391FB95041000000308E2F54419A9999791FB95041333333638D2F54410AD7A31020B95041713D0AF78C2F54417B14AEF720B95041A4703DDA8C2F5441CDCCCCCC21B950411F85EB718D2F5441C3F528EC21B95041666666168E2F5441
+</a>
+
+<b>
+0106000000010000000103000000010000009900000052B81E9562B950411F85EBB1FD2F54411BB6B1E362B950415517EE8FFD2F5441713D0A0763B950410AD7A380FD2F5441AB21BA0263B95041504D916EFD2F544131D7460263B950410333AE6CFD2F54415992BDFF62B9504183920D62FD2F54419C0F7FF162B95041D59F5D26FD2F54418141D2E862B95041F4CC0302FD2F5441563D61E662B9504193CCC8F7FC2F5441013CF9C962B9504197F7C080FC2F544185EB51F863B95041F6285CBFFC2F544122CA912D65B950417669281DFA2F5441FC4A6BA164B95041C06B6CA7F82F5441AE4CB65564B950419CC589DDF72F54411E4B3B0167B95041C706E6DCF52F5441F5EA6B0267B95041E18E01DCF52F54418C6154C564B950412E797847F42F544137AB1B9E62B95041A9D92665F22F54417A696F5460B95041278193D6EF2F5441F9C989565DB95041996F146AEE2F5441FDF9B40958B95041552491D1EE2F5441C073D42C54B95041F3927FF9F02F54418C44F0C250B950417CBBDFE1F42F5441EC2F1C5F4BB95041B5283FE1F82F5441AFAAE6E948B95041D59E2B42F92F5441088533EF43B95041FE8F5F8CF42F5441E8DE208640B95041E37624EFFB2F5441146289793DB95041ACADF7F7FD2F5441EB70552F42B950419691FEA800305441A8981ABC43B950413FA88DCA02305441A73AE8C643B95041E8497AD802305441AD4A052244B950412306EA4D03305441ADD40C3C44B9504165AD766F033054410389958444B9504113EEF3CC03305441B29193A444B95041271630F603305441F15C819345B9504165D7242A053054415610438E46B95041FD45586D06305441B81E854B47B9504114AE476107305441219F65CE4AB950413FD0A1711530544185EB51784BB95041A4703D1A18305441C3F528EC4BB95041713D0A47163054411F85EBC14BB95041AE47E12A153054413D0AD7A34CB95041713D0A8714305441A4703D6A4DB95041E17A143E1430544152B81E354DB9504133333363133054415C8FC2854DB950410AD7A3801230544101F0DC854DB950418108AB5F12305441666666864DB950413D0AD7B311305441D4E5E09C4DB95041AB920A6411305441CDCCCCAC4DB95041B81E852B1130544148E17A244EB95041000000A01030544148E17A944CB950417B14AEB7103054418FC2F5E84BB9504148E17A640F30544152B81EC54AB950418FC2F5680F305441F6285C5F4AB95041E17A148E0F3054415C8FC2054AB95041C3F528AC0E305441C3F5285C4AB9504185EB51480E305441CDCCCCEC4BB95041E17A142E0D305441CDCCCC0C4CB95041333333930C305441A4703DAA4BB9504152B81E650C305441F6285CAF4AB9504185EB51680C305441A4703D5A4AB950413D0AD7130C305441F6285C0F4AB95041295C8F920B3054415C8FC2F549B950413D0AD7130B305441295C8F124AB9504152B81E950A305441000000F04AB95041A4703D9A09305441295C8F024CB95041D7A370FD09305441AE47E17A4CB9504114AE47C109305441A4703DEA4DB950411F85EBD1083054410AD7A3204EB950417B14AEE707305441717B7E2C4DB950415F81013E06305441CC88261F4DB95041E3670A3B0630544185EB51084CB95041295C8F720630544185EB51584BB95041B81E85CB06305441F6285C3F4AB95041EC51B8BE07305441AE47E14A49B950410AD7A3800730544185EB51F848B95041666666060730544148E17A0449B95041AE47E1CA0530544148E17AD449B950413D0AD7F30330544152B81E354AB95041295C8F420330544185EB51F84AB95041F6285C9F02305441C9DC93AC4BB9504108CB354202305441D7A370DD4BB950418FC2F52802305441C3F5281C4DB95041333333C30130544114AE47714DB95041CDCCCC6C01305441BE40BD724DB950417985301701305441333333734DB95041C3F528FC00305441000000204DB95041E17A14AE00305441CC0BD1034DB95041DBBA84A000305441CDCCCCDC4BB95041295C8F1200305441E17A149E4BB95041D7A3701DFF2F544114AE47214CB95041C3F5284CFE2F5441EC51B8FE4CB950413D0AD7B3FD2F54417B14AE274EB9504185EB5138FD2F54417B14AEE74EB95041666666F6FB2F544114AE47214FB950415C8FC2D5FB2F5441773577A34FB950415ED0CDB1FB2F544173E477A44FB95041EF6B4BAEFB2F544162B89DBF4FB95041E8D353B4FB2F544148E17A9450B9504152B81ED5FB2F54415C8FC2A551B95041713D0A97FB2F5441EC51B8DE51B95041D7A3702DFB2F54410717C0DA51B95041012F77C1FA2F544185EB51D851B95041F6285C7FFA2F5441252624EE51B950412DEF4731FA2F544114AE470152B95041CDCCCCECF92F5441EE6F5A6052B9504111155176F92F54410AD7A38052B95041E17A144EF92F54416532C1B552B950412F034436F92F544114AE479153B950413D0AD7D3F82F54410D44773654B95041A3D020A6F82F5441295C8FC254B95041F6285C7FF82F54418FC2F57856B95041D7A3703DF82F5441333333B356B95041B81E85EBF72F54411F85EB9156B95041F6285C9FF72F5441FB74BC3E56B950411766A185F72F54417207221A56B95041AD8A4D82F72F5441CC5ED70956B95041C0034575F72F5441CDCCCCBC55B95041D7A3705DF72F54413D0AD76355B950413D0AD7F3F62F544152B81E6555B95041E17A146EF62F5441F6285CAF55B95041D7A3701DF62F54418F01B83056B950411843374FF52F54410000006056B950413D0AD703F52F5441333333C356B95041C3F528ECF32F54416589906157B9504180519B2BF32F5441D7A370FD57B95041E17A146EF22F5441C3F5286C58B950415C8FC235F22F5441EC51B81E59B950415C8FC275F22F54413D0AD7C359B95041CDCCCCCCF22F54418FC2F5685AB950415C8FC265F32F5441F6285C4F5BB950417B14AE77F42F5441CDCCCC6C5BB95041EC51B83EF52F5441CAF5FE5E5BB95041687D445CF52F5441FFB3AE2C5BB9504168A0F6C7F52F5441F6285C1F5BB9504148E17AE4F52F5441E17A141E5BB9504166666656F62F54411F85EB515BB95041CDCCCCFCF62F54419A9999C95BB95041CDCCCCFCF72F5441000000005CB95041F6285C7FF92F544171EF94F55BB950419F2A53C2FA2F544148E17AF45BB9504148E17AE4FA2F5441AE47E12A5CB95041C3F528CCFB2F54418036A6415CB95041B1EF96D1FB2F544114AE47D15CB950413D0AD7F3FB2F54418FC2F5985DB9504148E17A14FC2F5441295C8F125FB9504152B81EF5FB2F54410AD7A3B060B9504148E17AB4FB2F54417B14AE3761B95041666666C6FB2F5441000000B061B95041E17A141EFC2F544185EB51F861B9504114AE4791FC2F5441713D0A2762B950417B14AE67FD2F544152B81E9562B950411F85EBB1FD2F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524030 - 2626388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000002000000A5000000D7A370CDF7AB504100000080C82054418FC2F588F7AB5041295C8FF2CA2054413D0AD7D3F7AB504152B81E55D520544100000030FDAB5041295C8FF2D6205441000000F003AC5041A4703DAAD9205441AE47E1FA09AC5041CDCCCC0CDC20544185EB51580CAC50418FC2F5F8DC205441000000500DAC504152B81EE5DC205441295C8F120EAC5041EC51B87EDC205441AE47E19A0FAC50413D0AD713DB2054410000003016AC5041B81E852BD5205441A4703D3A16AC5041B81E85DBD42054411F85EB1116AC50419A999959D4205441C3F528CC15AC504100000000D42054413D0AD75315AC504100000000D4205441000000F014AC50415C8FC2E5D420544148E17AC413AC504100000040D520544148E17AD412AC50411F85EB21D52054410000002012AC5041B81E858BD4205441A4703DEA10AC50415C8FC2E5D4205441295C8F6211AC5041000000E0D52054410000003011AC50413D0AD7E3D6205441295C8F2210AC50411F85EBA1D720544185EB51D80EAC50417B14AE97D7205441295C8FF20DAC50415C8FC2C5D6205441666666060EAC50411F85EB71D5205441C3F5285C0DAC50411F85EB21D5205441295C8FC20BAC50417B14AE27D4205441EC51B8BE0AAC50413D0AD723D320544148E17A640AAC50417B14AEF7D1205441666666460AAC5041A4703DAACF2054410AD7A3A00AAC50411F85EBF1CD205441295C8F220BAC50413D0AD793CC205441295C8FC20BAC504100000090CB205441EC51B84E0CAC50411F85EBD1CA20544185EB51580CAC504100000000CA2054410AD7A3300CAC504148E17A74C92054413D0AD7630BAC50419A9999C9C7205441295C8FC20AAC50415C8FC255C5205441F6285C8F0EAC504114AE4761C4205441A4703D5A0EAC504100000090C3205441F6285C7F11AC5041333333C3C2205441D7A3704D10AC5041F6285C1FC0205441333333A30FAC504185EB5118BD2054417B14AE670AAC5041F6285CAFB32054413D0AD7F30AAC50419A999959B320544152B81EC50AAC504114AE4711B32054417B14AE7708AC50413D0AD763AF205441A4703D9A06AC5041C3F528FCAB2054416666661605AC5041EC51B8AEA82054411F85EBE102AC5041A4703D2AA2205441D7A3704D01AC504185EB51B89F20544100000040FFAB50419A9999399D205441B81E85DBFAAB50418FC2F5A897205441EC51B82EF9AB5041713D0AB7932054419A999989F9AB50417B14AE979120544114AE4711FBAB5041666666168F20544133333393FCAB5041E17A14CE8C2054418FC2F518FCAB5041666666968B2054418FC2F5D8FAAB50418FC2F5588820544152B81E75F5AB5041333333037A205441B81E859BF2AB5041B81E85AB722054415C8FC2F5EDAB5041C3F5282C662054415C8FC285EAAB5041E17A14EE5D2054413D0AD773E4AB504148E17A644F2054415C8FC285E1AB5041000000E0472054413D0AD733E2AB5041F6285CBF47205441C3F5282CE5AB5041EC51B83E4F2054419A999939EBAB5041666666C65D205441F6285C9FEEAB5041A4703DFA65205441F6285C4FF3AB50413D0AD7837220544114AE4701F6AB5041B81E85DB79205441AE47E1AAFBAB5041CDCCCC1C8820544114AE47E1FCAB5041295C8F828B20544166666616FDAB5041A4703D0A8C2054413D0AD7C3FEAB5041D7A370CD892054410AD7A31000AC5041C3F528CC882054415C8FC28503AC5041E17A14AE85205441B81E855BFEAB50415C8FC2D578205441C3F528CCFBAB504185EB51E871205441D7A370BDF9AB5041E17A149E6B20544114AE4741F7AB5041295C8F12632054419A999969F6AB504185EB51E85E2054411F85EB81F4AB5041000000E0552054413D0AD7B3FBAB5041333333234F205441C3F5287CFDAB504148E17AC44E205441AE47E11A00AC5041333333434B2054416666669601AC5041F6285C3F4C2054415C8FC2C503AC5041713D0A274D205441D7A3703D06AC50411F85EBF14D205441CDCCCCDC09AC5041295C8F324F205441AE47E1FA0AAC5041B81E857B4F205441CDCCCCFC0CAC5041333333834F2054413333334310AC5041713D0A874F2054418FC2F5D812AC5041B81E850B512054415C8FC25515AC50419A9999A95220544152B81E5517AC5041E17A14BE532054417B14AEA715AC50413333335348205441C3F5285C14AC5041A4703D0A41205441D7A370AD0CAC50411F85EBB13E2054410AD7A31005AC5041EC51B85E3B205441B81E853B01AC5041AE47E12A392054413D0AD7F3F7AB504148E17A14332054415C8FC2B5F3AB5041000000803020544185EB5188F0AB50418FC2F5B82D205441AE47E13AEEAB5041EC51B8FE2A2054410AD7A3F0EAAB504148E17AC42820544148E17AB4E6AB5041EC51B8BE25205441F6285CEFE4AB5041D7A370ED2520544152B81E75E2AB50410AD7A34025205441B81E859BDFAB5041713D0A6722205441713D0A17DEAB50411F85EBF11F20544185EB51D8D2AB5041000000F024205441EC51B81ED2AB5041295C8FF22420544166666686C5AB50415C8FC295242054417B14AE97C3AB5041C3F5289C242054418FC2F5E8C2AB5041AE47E13A29205441295C8FB2C1AB504185EB51E82F20544114AE47F1BFAB50413D0AD76332205441CDCCCCBCBFAB50415C8FC27533205441F6285CCFBEAB5041AE47E1CA362054415C8FC295BDAB5041666666363B20544133333313BDAB50410AD7A3E03C2054413D0AD743BCAB50417B14AEA73F20544152B81EE5BBAB5041AE47E10A4120544148E17A74BBAB50418FC2F5D842205441A4703D0ABBAB50419A99992945205441C3F528ECBAAB5041E17A140E48205441E17A14FEBAAB5041333333234A2054411F85EB21BBAB5041666666E64A205441C3F5288CBBAB50418FC2F5A84C2054418FC2F578BCAB5041D7A370ED4E20544148E17A54BDAB5041A4703DEA50205441000000E0CFAB5041CDCCCC5C49205441A4703D4AD6AB5041B81E855B4B2054413D0AD733E1AB5041AE47E15A492054418FC2F578E6AB5041B81E85EB5520544185EB5188EAAB5041A4703D9A5F20544152B81EA5EFAB5041AE47E1CA6B2054415C8FC2F5EFAB5041333333C373205441F6285CFFE7AB5041C3F5284C7520544185EB5158D6AB504148E17AB478205441295C8F12DDAB5041295C8FC27D2054415C8FC2B5E5AB5041D7A370DD802054418FC2F598F0AB504114AE471183205441295C8FE2F1AB50413D0AD793872054410AD7A3C0F1AB5041CDCCCC4C8A205441295C8F02F2AB5041F6285CDF8C20544133333343F3AB5041CDCCCC5C9020544114AE4751F3AB5041295C8F6293205441B81E85EBF3AB5041CDCCCC3C96205441A4703D8AF4AB5041CDCCCC5C98205441AE47E1CAF4AB5041A4703D9A9B20544133333373F5AB504148E17A649D2054411F85EB51F5AB504148E17A549F2054410AD7A370F6AB5041F6285CAFA5205441B81E854BF7AB504100000050A82054419A999999F7AB50413D0AD783AC205441A4703D4AF8AB504148E17AF4B02054418FC2F538F8AB504148E17AC4B220544185EB5158F8AB504148E17A84B420544152B81E15F8AB50410AD7A320BA205441333333D3F7AB5041295C8F92BE205441E17A142EF7AB504114AE4711C2205441D7A370CDF7AB504100000080C8205441060000007B14AEC7EFAB50418FC2F54834205441AE47E15AEFAB504114AE477135205441A4703D5AEEAB5041F6285C8F35205441F6285C4FEDAB5041A4703D4A352054413D0AD763EEAB50417B14AE17342054417B14AEC7EFAB50418FC2F54834205441
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000B4E55A27E1AB5041DE16CC848520544111205694ECAB50416A87CA1F86205441F8625F97ECAB5041B9CCDF1F86205441C54310AEECAB5041CA166F938620544195A25D31F0AB5041AD5DC75D96205441F258C6C7F2AB50413C6005B9A120544162730590F3AB5041E1BB9F93A720544105BDEFEBF3AB504181F5EB12AA205441CB3DBABAF5AB5041FBA75EC9B72054412DD9A4BAF5AB5041B2D34DCAB720544104AC26C8F5AB5041DD74632FB82054410C04B98DF4AB5041F1538EEEC420544142095B76F4AB504198EBCBF3C52054410DA8BE0AF4AB5041B14E4952D02054415D9D5601F4AB50411D2B4506D22054415834C3F6F3AB50413BA674F0D3205441D8FB74D2F7AB5041F8350424D520544122DCCBABF7AB50418B0466C7CF205441FCB53794F7AB5041ADEE4082CC2054410F8053CBF7AB5041122D5793C8205441522DBC84F7AB50414E37B790C52054412A0E0354F7AB50414CE9BD43C120544189C1F504F8AB5041D0AC9837BB2054414A79FC4DF8AB50413AD85361B52054413DDD943BF8AB5041DEDE2796B0205441B4EFEA95F7AB5041FB5E1A51AC205441F673AA4CF7AB504167BEC95FA8205441CB4024B7F5AB50410181D292A1205441D4A9CD63F5AB504164EFF2499E205441F20C9CB5F4AB504129FB4D899A2054414DE68363F4AB504198F012D897205441A3200BC0F3AB50412785F66E952054411A9FDF46F3AB5041533CAD2691205441780720C6F2AB504195B649008F20544179936125F2AB50413FF962408D2054415B949BD4F1AB50410A9148148B205441295C8FE2F1AB50413D0AD793872054412406DB45F1AB50413005EB6E852054418FC2F598F0AB504114AE47118320544180B3DE7DE8AB504193447F6D812054415C8FC2B5E5AB5041D7A370DD80205441295C8F12DDAB5041295C8FC27D205441F6285C7FDBAB50417B14AEC77E205441C3F528FCCCAB5041AE47E18A7F205441A4703D5AC8AB5041CDCCCCEC7E20544152B81EE5C9AB50417B14AE2781205441D7A370FDCCAB504185EB51A886205441000000B0CFAB5041295C8F628C20544152B81E85D2AB5041333333B3932054413D0AD763D5AB50411F85EBF19C20544148E17AE4D7AB5041E17A14CEA62054413D0AD753DAAB504148E17AD4AF2054417AF1F116DCAB50416A6DA63CB42054418428E569E6AB5041CF82DB24B1205441177BD2D4E5AB5041232E9A09AE2054418F546FCAE5AB50419A845AD4AD205441AA45CC6EE5AB5041D82056E9AB205441744FA9B0E4AB504154AA87EEA7205441BB87D698E2AB5041AF7AEBDA9D205441B1AA04ADE1AB5041887FA45D9A2054413B093ED5DEAB50410431DA988F205441A87A2C01DCAB5041A509422085205441B4E55A27E1AB5041DE16CC8485205441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526595 - 187804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+01060000000100000001030000000200000048000000E17A14BE26D15041B81E857BAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB5154418FC2F5F827D15041C3F528ECAB515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441333333132AD15041C3F528ECAD5154415C8FC2E52AD15041EC51B8BEAD5154410AD7A3F02BD15041A4703D5AAD51544152B81EB52CD1504166666696AD5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544148E17AE430D1504100000080B05154411F85EB1132D15041A4703DAAB051544148E17AB433D1504166666626B15154417B14AEB735D15041666666D6B1515441A4703D5A37D150411F85EBC1B25154415C8FC20538D15041A4703DFAB3515441295C8F0239D15041AE47E13AB551544148E17A143AD15041EC51B8DEB5515441A4703DFA3BD150417B14AE77B65154410AD7A3803DD15041295C8F22B7515441D7A3700D40D15041CDCCCC2CAE515441D7A3701D46D15041F6285CBF8E5154411F85EB2148D15041F6285CCF8451544152B81E054FD150411F85EBB162515441295C8F5252D15041F6285C9F56515441B81E85CB56D15041D7A3700D45515441A4703D5A58D150415C8FC2B53F515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF355154418FC2F5985ED15041EC51B8CE31515441333333735ED150415C8FC2A52F51544114AE47715DD15041CDCCCC6C2D5154410AD7A3403AD15041F6285CFF25515441EC51B8CE39D15041E17A14EE26515441295C8F6237D15041333333A3285154410AD7A37033D150419A9999692B515441CDCCCC1C1FD15041713D0A172751544185EB51181ED150418FC2F5B82B515441EC51B83E1DD15041333333A32F5154417B14AEE71AD1504148E17A543A515441A4703D4A1DD150419A9999993A5154413D0AD70319D150415C8FC2B541515441000000A017D150417B14AE1744515441AE47E19A13D1504148E17A844F5154413333332313D15041AE47E15A525154413D0AD75318D150413D0AD72353515441C3F5281C1DD150410000003053515441CDCCCC1C25D150413D0AD7E35C5154415C8FC25521D15041713D0A6764515441B81E859B24D1504148E17A3468515441F6285C4F2AD150418FC2F5B86D515441AE47E15A2AD15041295C8FE273515441713D0AF727D15041713D0A67755154411F85EBF11BD15041AE47E1EA76515441EC51B88E21D15041A4703D1A855154410000006016D15041713D0AF78C515441B81E856B19D15041000000E094515441333333631DD150418FC2F5289F5154411F85EB711ED15041EC51B8EEA45154411F85EBC11CD15041713D0A47A9515441A4703DEA1DD15041D7A370DDA95154419A99997920D150411F85EB61AB5154419A99999922D15041EC51B80EAC5154418FC2F5A823D15041A4703D5AAC515441EC51B8BE24D1504185EB51C8AC515441CDCCCC9C25D150413D0AD703AD515441CDCCCC3C26D1504114AE47E1AC515441E17A14BE26D15041B81E857BAC515441050000009A99999950D15041EC51B8EE3B5154419A9999D951D15041AE47E16A385154419A9999A954D15041AE47E15A395154415C8FC25553D15041EC51B8DE3C5154419A99999950D15041EC51B8EE3B515441
+</a>
+
+<b>
+01060000000100000001030000000200000081000000A4703D5A58D150415C8FC2B53F515441078CC1A358D15041859A80E93E515441DC8B22B758D1504189F648B13E515441CF0A31BD58D150418401D5A23E515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF35515441281AF78B5ED150415A57DAF031515441EE4B9E985ED150410E80B7C931515441333333735ED150415C8FC2A52F5154412127290A5ED1504127510CBE2E515441479C25EA5DD1504177F140792E515441890909D25DD1504159E53C422E51544114AE47715DD15041CDCCCC6C2D515441BCB75E754FD15041FD9D31792A51544177269B374ED15041F9E222372A515441AC8FA8E34CD1504191235FEE295154413C103E154AD150419D95BC56295154412050CD2343D15041183393DF275154417105EFEF3FD1504160D1863227515441A5F6604A3CD150415E8C7B6D2651544146E80A403AD15041ACA19C0026515441EC51B8CE39D15041E17A14EE26515441295C8F6237D15041333333A3285154410AD7A37033D150419A9999692B5154415853596D33D15041FA71E6682B5154413EEBF9EB31D15041B8F2C8782C515441EDCC8AC52FD1504173DF22F82D515441E2EE43EC2AD15041DB649CCD315154417E3910BB29D15041CD78D9A33251544140F3205829D1504173BD69D1325154415968CA1627D15041C1EFF20E34515441D0E1504123D15041F931C5253651544123F2E3DA20D15041262CDA6F375154415330D5AA1FD150417E3E063B38515441A67F49061FD150413EEACEA838515441F4AC1E651FD1504125F0E0A538515441543AF7C515D15041DA5656A5505154419DE0D1C82AD150413995504E555154419FF0690D2BD1504104466AEC6351544130B3158A2AD15041DB1F22B76D515441796445AD2AD150412C231CF8735154418482D2E029D15041839FFECC755154413D86C17326D15041024B8BF6A95154416633666B26D1504112D53EF5A95154415AC5748626D150416C21AB99AC51544140EE49B926D1504175924A7FAC515441E17A14BE26D15041B81E857BAC515441B407F7C426D150413D7D0475AC51544151E912FB26D15041B0888639AC5154419CB8A62027D15041F5C76C1EAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB515441E03F888927D150413A0DC9D2AB51544196E2F28D27D15041C2A499CFAB51544169D2B9FD27D15041069177ECAB51544115C7413A28D1504138280A42AC515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441F94184012AD15041F6DEADEBAD515441B3D17B0C2AD15041F6DEADEBAD5154410706D42D2AD1504124DA69E6AD515441E607B0352AD1504167A6B7E4AD51544112A5FE572AD15041595050DDAD515441DDB0D2602AD15041609568DBAD5154416015B76E2AD15041321869D8AD515441E3CFA8802AD1504125BE89D4AD5154411E1774CA2AD15041CBE69CC4AD515441089DE3E22AD15041ECEC56BFAD515441BAC16DE32BD15041CD421656AD515441ADF093AB2CD150419BFE2E8EAD515441710E0F362DD1504196AA9BF2AD515441D1F8B0A32DD150419B4CA44DAE5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544182F2EBBA30D150418F2F0869B0515441FF8AA7D530D150414C0B8977B0515441785DA0DD31D150416F88E9A2B05154411F85EB1132D15041A4703DAAB0515441F1B07B1B32D15041E8A713ADB05154413935256132D15041222186B8B05154413A6D348533D1504128606018B151544148E17AB433D1504166666626B1515441F85DA82334D15041A944614CB15154416BFB0DB135D15041F5C1CDCEB151544163BBF95537D150417E9021BEB251544104181A5737D15041F07B27C0B2515441A4703D5A37D150411F85EBC1B251544179292FF637D1504101CEE0DDB3515441C8E20A0038D15041D29A95EFB3515441FCCBC9E438D15041C26F1E15B5515441295C8F0239D15041AE47E13AB55154412A1431D639D15041F8A476B9B5515441334DDA153AD150414B2303DEB551544131F6F70F3BD150419526E92DB6515441A4703DFA3BD150417B14AE77B6515441814D69BA3CD15041DB59CBCBB65154415DC4F5D53CD150417CE099D7B6515441532D39DB3CD150416B0428DAB65154410AD7A3803DD15041295C8F22B7515441A5DAC8A53FD1504168440499AF515441D7A3700D40D15041CDCCCC2CAE515441892BA10E40D150412D24A226AE515441D79C073840D150415EB00450AD515441D7A3701D46D15041F6285CBF8E515441317E795346D15041285C34B58D5154417F06885A46D1504133F771908D515441FEC9677346D1504140A2EC178D5154411F85EB2148D15041F6285CCF845154413E066D5A48D1504149F879B783515441D766062D4AD1504198AB38987A515441D4004E334BD15041EC18369D75515441DAE606994BD1504148F15CA57351544146AA1AD34BD15041214BB285725154416F3DB92F4CD1504162A4EFBA7051544133A9FC334CD1504142A4D1A5705154416F17540F4DD15041F2F185626C515441185183C74DD15041A4C920D0685154411B6B39CB4ED150413D09B0D06351544152B81E054FD150411F85EBB1625154414982726D51D15041A568E5E459515441188B8F9251D150419EFC885C59515441AF79158C52D15041E35361BD55515441B81E85CB56D15041D7A3700D455154412D1336E856D15041C92506AB44515441F63ED7F956D15041D1DB0A66445154412D45EE9457D1504173CA905A42515441A4703D5A58D150415C8FC2B53F515441050000007DCC68374FD15041332A19053D515441F650B02950D150418511F1F83751544115EC9A8655D15041E898BD8C3951544154E815E554D1504183AF60F73D5154417DCC68374FD15041332A19053D515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526595 - 283182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000200000048000000E17A14BE26D15041B81E857BAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB5154418FC2F5F827D15041C3F528ECAB515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441333333132AD15041C3F528ECAD5154415C8FC2E52AD15041EC51B8BEAD5154410AD7A3F02BD15041A4703D5AAD51544152B81EB52CD1504166666696AD5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544148E17AE430D1504100000080B05154411F85EB1132D15041A4703DAAB051544148E17AB433D1504166666626B15154417B14AEB735D15041666666D6B1515441A4703D5A37D150411F85EBC1B25154415C8FC20538D15041A4703DFAB3515441295C8F0239D15041AE47E13AB551544148E17A143AD15041EC51B8DEB5515441A4703DFA3BD150417B14AE77B65154410AD7A3803DD15041295C8F22B7515441D7A3700D40D15041CDCCCC2CAE515441D7A3701D46D15041F6285CBF8E5154411F85EB2148D15041F6285CCF8451544152B81E054FD150411F85EBB162515441295C8F5252D15041F6285C9F56515441B81E85CB56D15041D7A3700D45515441A4703D5A58D150415C8FC2B53F515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF355154418FC2F5985ED15041EC51B8CE31515441333333735ED150415C8FC2A52F51544114AE47715DD15041CDCCCC6C2D5154410AD7A3403AD15041F6285CFF25515441EC51B8CE39D15041E17A14EE26515441295C8F6237D15041333333A3285154410AD7A37033D150419A9999692B515441CDCCCC1C1FD15041713D0A172751544185EB51181ED150418FC2F5B82B515441EC51B83E1DD15041333333A32F5154417B14AEE71AD1504148E17A543A515441A4703D4A1DD150419A9999993A5154413D0AD70319D150415C8FC2B541515441000000A017D150417B14AE1744515441AE47E19A13D1504148E17A844F5154413333332313D15041AE47E15A525154413D0AD75318D150413D0AD72353515441C3F5281C1DD150410000003053515441CDCCCC1C25D150413D0AD7E35C5154415C8FC25521D15041713D0A6764515441B81E859B24D1504148E17A3468515441F6285C4F2AD150418FC2F5B86D515441AE47E15A2AD15041295C8FE273515441713D0AF727D15041713D0A67755154411F85EBF11BD15041AE47E1EA76515441EC51B88E21D15041A4703D1A855154410000006016D15041713D0AF78C515441B81E856B19D15041000000E094515441333333631DD150418FC2F5289F5154411F85EB711ED15041EC51B8EEA45154411F85EBC11CD15041713D0A47A9515441A4703DEA1DD15041D7A370DDA95154419A99997920D150411F85EB61AB5154419A99999922D15041EC51B80EAC5154418FC2F5A823D15041A4703D5AAC515441EC51B8BE24D1504185EB51C8AC515441CDCCCC9C25D150413D0AD703AD515441CDCCCC3C26D1504114AE47E1AC515441E17A14BE26D15041B81E857BAC515441050000009A99999950D15041EC51B8EE3B5154419A9999D951D15041AE47E16A385154419A9999A954D15041AE47E15A395154415C8FC25553D15041EC51B8DE3C5154419A99999950D15041EC51B8EE3B515441
+</a>
+
+<b>
+0106000000010000000103000000020000007F000000A4703D5A58D150415C8FC2B53F515441078CC1A358D15041859A80E93E515441DC8B22B758D1504189F648B13E515441CF0A31BD58D150418401D5A23E515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF35515441281AF78B5ED150415A57DAF031515441EE4B9E985ED150410680B7C931515441333333735ED150415C8FC2A52F5154411F27290A5ED1504125510CBE2E515441479C25EA5DD1504177F140792E515441890909D25DD1504159E53C422E51544114AE47715DD15041CDCCCC6C2D515441BCB75E754FD15041FD9D31792A51544177269B374ED15041F9E222372A515441AC8FA8E34CD1504191235FEE2951544138103E154AD150419A95BC56295154412150CD2343D15041143393DF275154417105EFEF3FD1504160D1863227515441A5F6604A3CD150415E8C7B6D2651544146E80A403AD15041ACA19C0026515441EC51B8CE39D15041E17A14EE26515441295C8F6237D15041333333A3285154410AD7A37033D150419A9999692B5154415753596D33D15041FB71E6682B5154413EEBF9EB31D15041B8F2C8782C515441EDCC8AC52FD1504173DF22F82D515441E2EE43EC2AD15041DB649CCD315154417E3910BB29D15041CD78D9A33251544140F3205829D1504173BD69D1325154415968CA1627D15041C1EFF20E34515441D0E1504123D15041F931C5253651544123F2E3DA20D15041262CDA6F375154415330D5AA1FD150417E3E063B38515441A67F49061FD150413EEACEA838515441F4AC1E651FD1504125F0E0A538515441543AF7C515D15041DA5656A5505154419DE0D1C82AD150413995504E555154419FF0690D2BD1504104466AEC6351544130B3158A2AD15041DB1F22B76D515441796445AD2AD150412C231CF8735154418482D2E029D15041839FFECC755154413D86C17326D15041024B8BF6A95154416633666B26D1504112D53EF5A95154415AC5748626D150416C21AB99AC51544140EE49B926D1504175924A7FAC515441E17A14BE26D15041B81E857BAC515441AC07F7C426D150414E7D0475AC51544151E912FB26D15041B0888639AC515441A0B8A62027D15041F7C76C1EAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB515441E03F888927D150413A0DC9D2AB51544196E2F28D27D15041C2A499CFAB51544169D2B9FD27D15041069177ECAB51544115C7413A28D1504138280A42AC515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441F94184012AD15041F6DEADEBAD515441B3D17B0C2AD15041F6DEADEBAD5154410706D42D2AD1504124DA69E6AD515441A49D87432AD15041CCECBAE1AD515441DEB0D2602AD15041649568DBAD5154416015B76E2AD15041321869D8AD515441CE4091932AD150412E2675D0AD5154410B9DE3E22AD15041EDEC56BFAD515441BAC16DE32BD15041CD421656AD515441ADF093AB2CD150419BFE2E8EAD515441710E0F362DD1504196AA9BF2AD515441D1F8B0A32DD150419B4CA44DAE5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544182F2EBBA30D150418F2F0869B0515441FF8AA7D530D150414C0B8977B0515441785DA0DD31D150416F88E9A2B05154411F85EB1132D15041A4703DAAB0515441F1B07B1B32D15041E8A713ADB05154413935256132D15041222186B8B05154413A6D348533D1504128606018B151544148E17AB433D1504166666626B1515441F85DA82334D15041A944614CB15154416BFB0DB135D15041F5C1CDCEB151544163BBF95537D150417E9021BEB251544104181A5737D15041F07B27C0B2515441A4703D5A37D150411F85EBC1B251544179292FF637D1504101CEE0DDB3515441C8E20A0038D15041D29A95EFB3515441FCCBC9E438D15041C26F1E15B5515441295C8F0239D15041AE47E13AB55154412A1431D639D15041F8A476B9B5515441334DDA153AD150414B2303DEB551544131F6F70F3BD150419526E92DB6515441A4703DFA3BD150417B14AE77B6515441814D69BA3CD15041DB59CBCBB65154415DC4F5D53CD150417CE099D7B6515441532D39DB3CD150416B0428DAB65154410AD7A3803DD15041295C8F22B7515441A0D9C8A53FD1504107480499AF515441882BA10E40D150413024A226AE515441D89C073840D150415CB00450AD515441C8C5AE7641D15041A8C925DCA6515441D7A3701D46D15041F6285CBF8E515441317E795346D15041285C34B58D5154417F06885A46D1504133F771908D515441FEC9677346D1504140A2EC178D5154411F85EB2148D15041F6285CCF845154413E066D5A48D1504149F879B783515441D766062D4AD1504198AB38987A515441D4004E334BD15041EC18369D75515441DAE606994BD1504148F15CA57351544146AA1AD34BD150411F4BB28572515441AE9E75224CD1504113BFA2FC7051544133A9FC334CD1504142A4D1A5705154416F17540F4DD15041F2F185626C515441185183C74DD15041A4C920D0685154411B6B39CB4ED150413D09B0D06351544152B81E054FD150411F85EBB1625154414982726D51D15041A568E5E459515441188B8F9251D150419EFC885C59515441B479158C52D15041E35361BD55515441B81E85CB56D15041D7A3700D455154412D1336E856D15041C92506AB44515441F63ED7F956D15041D1DB0A66445154412D45EE9457D1504173CA905A42515441A4703D5A58D150415C8FC2B53F515441050000007DCC68374FD15041332A19053D515441F650B02950D150418511F1F83751544115EC9A8655D15041E898BD8C3951544154E815E554D1504183AF60F73D5154417DCC68374FD15041332A19053D515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527413 - 187174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000020000003D000000AE47E18AF7BC5041F6285CDF57375441AE47E18AEABC50413D0AD76358375441C3F5282CD6BC50418FC2F5285937544148E17AB4D1BC5041713D0A6759375441B81E85EBCFBC5041AE47E19A593754415C8FC2B5C3BC504148E17A545A3754413D0AD743C3BC5041295C8F025D3754415C8FC255C1BC50418FC2F5C85D375441D7A3708DC1BC5041F6285CBF6037544166666696C1BC50410AD7A35064375441F6285C8FC1BC504152B81EE56737544148E17A64C1BC504185EB51386A3754417B14AE67C1BC5041713D0A976B375441C3F528ECC0BC5041C3F528EC6E375441AE47E1BABFBC50418FC2F53874375441D7A370CDBFBC5041713D0A1775375441B81E852BC0BC5041000000C07637544114AE4751C0BC50413D0AD793783754417B14AE87C0BC5041333333C379375441AE47E19AC0BC5041295C8FF27A375441EC51B8AEC0BC50411F85EBC17C3754417B14AEC7C0BC50418FC2F5287E37544100000000C1BC5041A4703D2A813754418FC2F588C3BC5041000000E08D3754410AD7A320C5BC5041295C8FA290375441AE47E15AC6BC50413D0AD7B3923754411F85EB41CBBC504152B81E859B37544152B81ED5D1BC504114AE47E1A6375441A4703D3AD3BC50419A999939A8375441C3F528CCD3BC5041295C8FD2A837544185EB5178D5BC5041B81E85ABA93754410AD7A360DCBC504133333343AA3754413D0AD7C3DDBC504185EB5168AA375441B81E852BDFBC5041333333B3AA3754410AD7A3D0E4BC50413D0AD703AB375441F6285CCFE5BC5041D7A3701DAB3754419A9999B9EBBC504114AE4771AF3754419A999999F3BC50411F85EBA1B4375441B81E851BFCBC504114AE4771AE375441333333E30ABD50418FC2F508AD375441295C8F0217BD5041F6285C5FAB3754415C8FC2E51EBD504185EB5138AA375441E17A149E14BD5041333333839837544114AE47413CBD50415C8FC2F56937544114AE478137BD5041F6285CAF6A3754411F85EB0137BD5041E17A14BE6A375441E17A14EE29BD504152B81EF56D375441713D0AB727BD5041000000806E3754410AD7A3D024BD50411F85EB716F37544114AE47811EBD50418FC2F5E87037544152B81E251FBD504114AE474174375441000000801BBD5041B81E859B75375441295C8F421ABD5041CDCCCC4C723754419A99993911BD50410AD7A3D075375441D7A3707D0BBD50419A9999C9773754417B14AE7707BD5041666666D678375441F6285C3FFDBC504148E17A347B375441EC51B80EFDBC504114AE47C17A3754417B14AE07FDBC5041A4703D3A7A37544152B81E15FABC5041666666C667375441AE47E18AF7BC5041F6285CDF5737544105000000CDCCCCCCD6BC5041AE47E15A91375441C3F528DCD7BC50411F85EBA190375441CDCCCCDCD8BC504185EB51F891375441295C8FA2D7BC5041000000C092375441CDCCCCCCD6BC5041AE47E15A91375441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA537544159590958CFBC50413967DA19A537544118FB568FCEBC504100C4D1E3A437544118FB568FCEBC50417A083FFCA3375441763DC9FBCEBC50413B704CDAA2375441A5B44523CEBC50413FEC6CA3A03754418DC6C99DCDBC50410F1075989F375441D8654002CCBC504134106CD19C3754414D2596A2CBBC50414471FF2C9C37544190934B92CBBC50416D23FD0F9C3754411F85EB41CBBC504152B81E859B375441A4B6CB54CABC50412F8BA2DA99375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527413 - 393249
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000020000003D000000AE47E18AF7BC5041F6285CDF57375441AE47E18AEABC50413D0AD76358375441C3F5282CD6BC50418FC2F5285937544148E17AB4D1BC5041713D0A6759375441B81E85EBCFBC5041AE47E19A593754415C8FC2B5C3BC504148E17A545A3754413D0AD743C3BC5041295C8F025D3754415C8FC255C1BC50418FC2F5C85D375441D7A3708DC1BC5041F6285CBF6037544166666696C1BC50410AD7A35064375441F6285C8FC1BC504152B81EE56737544148E17A64C1BC504185EB51386A3754417B14AE67C1BC5041713D0A976B375441C3F528ECC0BC5041C3F528EC6E375441AE47E1BABFBC50418FC2F53874375441D7A370CDBFBC5041713D0A1775375441B81E852BC0BC5041000000C07637544114AE4751C0BC50413D0AD793783754417B14AE87C0BC5041333333C379375441AE47E19AC0BC5041295C8FF27A375441EC51B8AEC0BC50411F85EBC17C3754417B14AEC7C0BC50418FC2F5287E37544100000000C1BC5041A4703D2A813754418FC2F588C3BC5041000000E08D3754410AD7A320C5BC5041295C8FA290375441AE47E15AC6BC50413D0AD7B3923754411F85EB41CBBC504152B81E859B37544152B81ED5D1BC504114AE47E1A6375441A4703D3AD3BC50419A999939A8375441C3F528CCD3BC5041295C8FD2A837544185EB5178D5BC5041B81E85ABA93754410AD7A360DCBC504133333343AA3754413D0AD7C3DDBC504185EB5168AA375441B81E852BDFBC5041333333B3AA3754410AD7A3D0E4BC50413D0AD703AB375441F6285CCFE5BC5041D7A3701DAB3754419A9999B9EBBC504114AE4771AF3754419A999999F3BC50411F85EBA1B4375441B81E851BFCBC504114AE4771AE375441333333E30ABD50418FC2F508AD375441295C8F0217BD5041F6285C5FAB3754415C8FC2E51EBD504185EB5138AA375441E17A149E14BD5041333333839837544114AE47413CBD50415C8FC2F56937544114AE478137BD5041F6285CAF6A3754411F85EB0137BD5041E17A14BE6A375441E17A14EE29BD504152B81EF56D375441713D0AB727BD5041000000806E3754410AD7A3D024BD50411F85EB716F37544114AE47811EBD50418FC2F5E87037544152B81E251FBD504114AE474174375441000000801BBD5041B81E859B75375441295C8F421ABD5041CDCCCC4C723754419A99993911BD50410AD7A3D075375441D7A3707D0BBD50419A9999C9773754417B14AE7707BD5041666666D678375441F6285C3FFDBC504148E17A347B375441EC51B80EFDBC504114AE47C17A3754417B14AE07FDBC5041A4703D3A7A37544152B81E15FABC5041666666C667375441AE47E18AF7BC5041F6285CDF5737544105000000CDCCCCCCD6BC5041AE47E15A91375441C3F528DCD7BC50411F85EBA190375441CDCCCCDCD8BC504185EB51F891375441295C8FA2D7BC5041000000C092375441CDCCCCCCD6BC5041AE47E15A91375441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA537544159590958CFBC50413967DA19A537544118FB568FCEBC504100C4D1E3A437544118FB568FCEBC50417A083FFCA3375441763DC9FBCEBC50413B704CDAA2375441A5B44523CEBC50413FEC6CA3A03754418DC6C99DCDBC50410F1075989F375441D8654002CCBC504134106CD19C3754414D2596A2CBBC50414471FF2C9C37544190934B92CBBC50416D23FD0F9C3754411F85EB41CBBC504152B81E859B375441A4B6CB54CABC50412F8BA2DA99375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528429 - 3143523
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000160000005C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A99992974895441713D0A671311514152B81E256B8954419A9999D9171151415C8FC265638954413D0AD7F319115141EC51B8BE5E895441EC51B81E1C1151413D0AD7B3598954415C8FC2051F11514185EB51E85389544185EB517822115141295C8F624F895441295C8F52251151415C8FC2C54A895441E17A14AE29115141CDCCCC5C4389544152B81E552D1151415C8FC2953B89544185EB51782A1151418FC2F5983B8954415C8FC20528115141CDCCCCAC41895441713D0A97241151413D0AD71347895441D7A3707D20115141C3F5281C4D895441AE47E16A1D115141CDCCCC5C5289544114AE47411A115141F6285C0F59895441713D0AB7161151411F85EB3161895441713D0AC710115141AE47E1FA6C8954415C8FC2150D115141A4703DFA73895441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000CFA860442D1151410A2469B93B89544185EB51782A1151418FC2F5983B8954415C8FC20528115141CDCCCCAC41895441713D0A97241151413D0AD71347895441D7A3707D20115141C3F5281C4D895441AE47E16A1D115141CDCCCC5C5289544114AE47411A115141F6285C0F59895441713D0AB7161151411F85EB3161895441713D0AC710115141AE47E1FA6C8954415C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A999929748954412182B17112115141034B9A066D895441A50BC5391411514142EE07B6698954419A9999D9171151415C8FC265638954413D0AD7F319115141EC51B8BE5E895441EC51B81E1C1151413D0AD7B3598954412AAFDB351E1151416D4D688755895441848F8E7020115141604F650C528954416D2D53A62411514131BC43DC4B895441E3B685552711514103E30E5A478954418F2CCD352A115141E8B7CC3B42895441CFA860442D1151410A2469B93B895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528429 - 3525838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000160000005C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A99992974895441713D0A671311514152B81E256B8954419A9999D9171151415C8FC265638954413D0AD7F319115141EC51B8BE5E895441EC51B81E1C1151413D0AD7B3598954415C8FC2051F11514185EB51E85389544185EB517822115141295C8F624F895441295C8F52251151415C8FC2C54A895441E17A14AE29115141CDCCCC5C4389544152B81E552D1151415C8FC2953B89544185EB51782A1151418FC2F5983B8954415C8FC20528115141CDCCCCAC41895441713D0A97241151413D0AD71347895441D7A3707D20115141C3F5281C4D895441AE47E16A1D115141CDCCCC5C5289544114AE47411A115141F6285C0F59895441713D0AB7161151411F85EB3161895441713D0AC710115141AE47E1FA6C8954415C8FC2150D115141A4703DFA73895441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000CFA860442D1151410A2469B93B89544185EB51782A1151418FC2F5983B8954415C8FC20528115141CDCCCCAC41895441713D0A97241151413D0AD71347895441D7A3707D20115141C3F5281C4D895441AE47E16A1D115141CDCCCC5C5289544114AE47411A115141F6285C0F59895441713D0AB7161151411F85EB3161895441713D0AC710115141AE47E1FA6C8954415C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A999929748954412182B17112115141034B9A066D895441A50BC5391411514142EE07B6698954419A9999D9171151415C8FC265638954413D0AD7F319115141EC51B8BE5E895441EC51B81E1C1151413D0AD7B3598954412AAFDB351E1151416D4D688755895441848F8E7020115141604F650C528954416D2D53A62411514131BC43DC4B895441E3B685552711514103E30E5A478954418F2CCD352A115141E8B7CC3B42895441CFA860442D1151410A2469B93B895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529783 - 990564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001700000066666636281651418FC2F5E891695441F6285CCF3E1651419A9999A99569544152B81ED56C165141CDCCCC4C9D69544185EB5118A9165141D7A3704DA769544100000050A916514148E17AF4A0695441AE47E1AAA9165141713D0A77976954415C8FC2A5A91651415C8FC2358E6954419A9999F9A8165141F6285C1F84695441F6285CBFA916514114AE47F17B695441D7A3702DAA165141666666E6736954418FC2F5F8AA1651417B14AEB76A6954415C8FC2F5AA1651413333335361695441666666B6AA1651419A999959616954415C8FC255AA1651410AD7A3905C6954419A9999797E1651416666665652695441D7A3709D52165141B81E851B486954417B14AE9731165141EC51B8DE426954411F85EB9110165141295C8FA23D695441666666F604165141AE47E1AA6B695441CDCCCCFC05165141AE47E1BA6C695441333333C3FD155141D7A370DD8A695441713D0A77171651411F85EB218F69544166666636281651418FC2F5E891695441
+</a>
+
+<b>
+010600000001000000010300000001000000390000003F355E2AAA1651413108AC0461695441FA7E6A54A8165141BE9F1AC75F695441CFF7532BA6165141EC51B87E5E6954416891ED24A416514123DBF9765D695441E3A59BACA1165141E17A14AE5C695441B4C8765697165141E17A141E5A6954415A643BA78B165141560E2D7257695441508D97E683165141A8C64BAF556954411058391C691651412DB29D2F4F695441B07268C15D1651414260E5504C6954415A643B7755165141FED478214A6954411F85EB994A1651413108AC4447695441AAF1D24D4616514185EB51504669544181954313411651416DE7FB5145695441BA490CDA311651413BDF4F0D43695441295C8FBA1E16514152B81E5D40695441D6BB429E131651415C0773DB3E695441E030E8CC111651415C0773DB3E695441607A26D9101651412EEC526A40695441B13BC18C0F165141BD5E4443456954415EA01F0A0D165141F30779214F6954415C339C220B165141D7150C7D56695441A1120EC0091651417EB9D2695D69544139B31A1107165141D508828A676954419F3807F105165141FC88039C6B695441EC51B83606165141C976BEEF6C6954411283C03A03165141986E12BB776954417B14AEBF00165141105839F480695441DF4F8D87FE15514114AE47A98769544108AC1C1AFE155141CFF753C38A6954412DB29D870C165141A69BC4188D695441E17A14C61D165141894160758F6954410AD7A39021165141621058498F695441C3F5283C24165141713D0ACF8D6954413108ACBC261651414A0C02038E6954410000006029165141EE7C3F959069544104560EBD2A16514177BE9F52916954419A9999792D1651416210580992695441E5D022EB3F1651413BDF4F6D95695441A8C64B3F4E165141AAF1D2ED97695441AA27EDE565165141575A31199C69544116E0058E6C165141FB5700419D695441F2746A4779165141D713AB5D9F6954418EC433DC8016514146DFCD9FA069544151645A70851651412F3E5C62A16954411B47F9CC8E165141DF1628F0A269544113EC0EE297165141AE431472A4695441EA9C00DBA416514178F04B99A66954419ACFA88BA8165141F31E261BA76954419EEFA77EA8165141AE47E1AAA269544183C0CA91A81651419318044698695441DD2406B1A8165141B81E85F38F6954415EBA49C4A816514139B4C87E826954413BDF4F05A91651419EEFA73E76695441BA490C8AA9165141986E122B6A695441B81E85EBA91651416891ED6C636954413F355E2AAA1651413108AC0461695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529783 - 3586734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001700000066666636281651418FC2F5E891695441F6285CCF3E1651419A9999A99569544152B81ED56C165141CDCCCC4C9D69544185EB5118A9165141D7A3704DA769544100000050A916514148E17AF4A0695441AE47E1AAA9165141713D0A77976954415C8FC2A5A91651415C8FC2358E6954419A9999F9A8165141F6285C1F84695441F6285CBFA916514114AE47F17B695441D7A3702DAA165141666666E6736954418FC2F5F8AA1651417B14AEB76A6954415C8FC2F5AA1651413333335361695441666666B6AA1651419A999959616954415C8FC255AA1651410AD7A3905C6954419A9999797E1651416666665652695441D7A3709D52165141B81E851B486954417B14AE9731165141EC51B8DE426954411F85EB9110165141295C8FA23D695441666666F604165141AE47E1AA6B695441CDCCCCFC05165141AE47E1BA6C695441333333C3FD155141D7A370DD8A695441713D0A77171651411F85EB218F69544166666636281651418FC2F5E891695441
+</a>
+
+<b>
+010600000001000000010300000001000000390000003F355E2AAA1651413108AC0461695441FA7E6A54A8165141BE9F1AC75F695441CFF7532BA6165141EC51B87E5E6954416891ED24A416514123DBF9765D695441E3A59BACA1165141E17A14AE5C695441B4C8765697165141E17A141E5A6954415A643BA78B165141560E2D7257695441508D97E683165141A8C64BAF556954411058391C691651412DB29D2F4F695441B07268C15D1651414260E5504C6954415A643B7755165141FED478214A6954411F85EB994A1651413108AC4447695441AAF1D24D4616514185EB51504669544181954313411651416DE7FB5145695441BA490CDA311651413BDF4F0D43695441295C8FBA1E16514152B81E5D40695441D6BB429E131651415C0773DB3E695441E030E8CC111651415C0773DB3E695441607A26D9101651412EEC526A40695441B13BC18C0F165141BD5E4443456954415EA01F0A0D165141F30779214F6954415C339C220B165141D7150C7D56695441A1120EC0091651417EB9D2695D69544139B31A1107165141D508828A676954419F3807F105165141FC88039C6B695441EC51B83606165141C976BEEF6C6954411283C03A03165141986E12BB776954417B14AEBF00165141105839F480695441DF4F8D87FE15514114AE47A98769544108AC1C1AFE155141CFF753C38A6954412DB29D870C165141A69BC4188D695441E17A14C61D165141894160758F6954410AD7A39021165141621058498F695441C3F5283C24165141713D0ACF8D6954413108ACBC261651414A0C02038E6954410000006029165141EE7C3F959069544104560EBD2A16514177BE9F52916954419A9999792D1651416210580992695441E5D022EB3F1651413BDF4F6D95695441A8C64B3F4E165141AAF1D2ED97695441AA27EDE565165141575A31199C69544116E0058E6C165141FB5700419D695441F2746A4779165141D713AB5D9F6954418EC433DC8016514146DFCD9FA069544151645A70851651412F3E5C62A16954411B47F9CC8E165141DF1628F0A269544113EC0EE297165141AE431472A4695441EA9C00DBA416514178F04B99A66954419ACFA88BA8165141F31E261BA76954419EEFA77EA8165141AE47E1AAA269544183C0CA91A81651419318044698695441DD2406B1A8165141B81E85F38F6954415EBA49C4A816514139B4C87E826954413BDF4F05A91651419EEFA73E76695441BA490C8AA9165141986E122B6A695441B81E85EBA91651416891ED6C636954413F355E2AAA1651413108AC0461695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532559 - 2936634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+01060000000100000001030000000100000071000000295C8F12FD2351415C8FC295F0425441295C8FA201245141295C8F82EC4254415C8FC2B50524514166666606E8425441AE47E1BA0A245141333333C3E0425441295C8FA20D24514133333313DC42544148E17A141024514100000070D742544185EB512811245141E17A140ED642544133333313122451417B14AEF7D44254418FC2F5D813245141D7A370FDD3425441295C8F8215245141AE47E1CAD34254410AD7A3F017245141666666C6D34254415C8FC2C52724514185EB5188D642544152B81E152E2451419A999969D74254413D0AD7C33B245141333333B3D94254411F85EB613C245141295C8F72D9425441666666A63D2451411F85EB11D842544185EB51483C245141A4703D6AD54254415C8FC2C53B24514148E17A04CF4254415C8FC265382451418FC2F588BD4254419A9999F93A245141CDCCCC8CB94254411F85EBB13D2451410AD7A380B94254411F85EB214E2451411F85EB81C7425441D7A370BD5E24514148E17AF4BA4254411F85EB416524514148E17A74B94254415C8FC2456D2451418FC2F578B5425441C3F5289C6F2451413D0AD7A3A0425441E17A14BE70245141000000D09C425441C3F528DC75245141333333739A42544185EB51787A2451418FC2F5A8994254411F85EB4176245141C3F5282C96425441D7A370BD73245141CDCCCCDC934254419A9999A9722451418FC2F56892425441D7A3700D722451418FC2F5B8904254419A9999B971245141CDCCCCCC8E4254419A99992971245141CDCCCCBC89425441D7A3708D702451418FC2F588874254419A9999D96F2451418FC2F50886425441B81E856B6E245141CDCCCC3C834254415C8FC2756D24514148E17A04814254411F85EB716B2451417B14AE377A4254415C8FC2756A2451418FC2F5E875425441A4703D1A6A245141C3F528DC72425441A4703D4A6A2451413D0AD733714254411F85EB116B2451413D0AD7F36F425441EC51B88E722451417B14AEB76B425441A4703D5A78245141C3F5285C68425441713D0AB77A245141B81E851B66425441C3F528FC7C2451418FC2F53864425441AE47E10A7E245141A4703DCA63425441E17A14DE7F2451411F85EB7163425441C3F5286C83245141295C8F9263425441666666C6852451417B14AEC762425441A4703D1A88245141C3F5282C624254411F85EB418B2451413D0AD713624254411F85EBE18E245141A4703D6A6042544148E17AF493245141AE47E17A5F4254418FC2F5D8932451410AD7A3D05E425441295C8F4292245141CDCCCC7C51425441D7A3708D902451419A999969454254410AD7A350902451417B14AEF741425441333333738E2451419A999919424254410AD7A3908B2451413D0AD7D34242544185EB51F8842451415C8FC2F545425441D7A370FD812451419A99998947425441F6285C2F81245141B81E855B48425441D7A3703D80245141295C8F5249425441E17A146E79245141D7A3703D514254417B14AEC776245141A4703D0A55425441F6285C1F74245141AE47E1DA584254415C8FC2E567245141AE47E19A6B425441295C8F5261245141C3F5289C7242544152B81E955B245141713D0A277642544114AE47A156245141000000F07E4254410AD7A35054245141EC51B8BE85425441AE47E18A512451419A99991988425441C3F5286C45245141D7A370BD8A4254413D0AD7B33F24514148E17AE48E425441A4703D9A3724514114AE475197425441333333A331245141713D0AA79942544185EB51482C2451410AD7A3409D4254413D0AD7F32924514152B81E05A24254415C8FC2A527245141E17A14CEA7425441F6285C1F25245141A4703DCAAB42544148E17A0422245141D7A3702DAE425441A4703DEA1A2451413D0AD753B2425441A4703DBA152451413D0AD753B7425441713D0A17122451419A999989BA425441A4703D6A0F2451415C8FC2D5BF425441CDCCCC2C0F24514148E17A74C242544114AE47F10F2451413D0AD763C44254410AD7A31011245141AE47E13AC5425441D7A370ED2424514185EB5198B2425441B81E850B2424514148E17A44B54254417B14AE3722245141295C8F82C2425441333333931B2451413D0AD703C44254413333337313245141333333D3C6425441A4703D3A11245141D7A3703DC94254418FC2F5A80C245141AE47E1FAD242544185EB51E80424514152B81E15DC42544152B81EE5FF235141C3F5286CDF425441E17A142EF9235141A4703D7AE742544166666606F8235141295C8FA2E7425441C3F5282CF7235141B81E85CBE7425441B81E853BF52351413D0AD783E942544152B81E55EE2351419A9999F9F04254410AD7A3F0ED235141666666A6F2425441E17A149EEC23514114AE47C1F442544152B81E85EA235141CDCCCCACF6425441D7A370CDE923514185EB5118F742544114AE4781EC235141E17A149E03435441EC51B8CEF1235141295C8F42FD425441A4703D2AFA23514185EB5128F3425441295C8F12FD2351415C8FC295F0425441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000019C29C548724514168DE192CA44254410010C878862451414E2C4550A3425441B3F949E583245141EE0A0F63A44254415A8AE1E380245141EE0A0F63A4425441A7AB10E17A2451417537049AA4425441A7AB10E17A24514154D361D2A7425441E1C18784782451414E2194E6AB425441BBB6C83A77245141476FC6FAAF4254415BA043B76F24514167C8B758B5425441690F90F85E24514119A7885BBB4254410B04BCDE4E24514165B25585C6425441AAE285F14F2451419816FF3CC84254418B8994934A245141584EBAADCE425441F80E665841245141FFE90216C3425441B6860A9C44245141AA63CF64BF4254412B204F5B422451416DF76C79BD425441D9D2E0C63E2451413BD49C6CBA425441EE5987043C245141BC782388B942544116D4CEEB382451418D58B6B9BC425441E4BF35323924514112C302ACC142544191F2E44F3A2451416016DB73C7425441F82723E83B245141E397B6B3D0425441DD301C673C24514198DC04A6D542544178406B6B3D245141A389689FD7425441F80E665841245141DD6FFE7AD742544138C148144C24514197009D69D94254414BCC006E4824514183EA33A6E54254419E899B834F24514136C904A9EB42544149ABED3062245141D6B27F25E44254410F95768D64245141297BCBA4E242544142F91F456624514123D4AE22DE425441E2D7E9576724514197009D69D9425441B51A5D226A245141FED3A042D44254414E4759496F245141F82C84C0CF42544187521F8375245141F285673ECB425441F4C18E747D2451418516F84CC3425441CDAB1EC184245141F39BC911BA425441C6F950D588245141DAF4A59FB0425441F95DFA8C8A245141E1A6738BAC425441AC477CF987245141D44D891DAC42544119C29C548724514168DE192CA4425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532559 - 3569065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+01060000000100000001030000000100000071000000295C8F12FD2351415C8FC295F0425441295C8FA201245141295C8F82EC4254415C8FC2B50524514166666606E8425441AE47E1BA0A245141333333C3E0425441295C8FA20D24514133333313DC42544148E17A141024514100000070D742544185EB512811245141E17A140ED642544133333313122451417B14AEF7D44254418FC2F5D813245141D7A370FDD3425441295C8F8215245141AE47E1CAD34254410AD7A3F017245141666666C6D34254415C8FC2C52724514185EB5188D642544152B81E152E2451419A999969D74254413D0AD7C33B245141333333B3D94254411F85EB613C245141295C8F72D9425441666666A63D2451411F85EB11D842544185EB51483C245141A4703D6AD54254415C8FC2C53B24514148E17A04CF4254415C8FC265382451418FC2F588BD4254419A9999F93A245141CDCCCC8CB94254411F85EBB13D2451410AD7A380B94254411F85EB214E2451411F85EB81C7425441D7A370BD5E24514148E17AF4BA4254411F85EB416524514148E17A74B94254415C8FC2456D2451418FC2F578B5425441C3F5289C6F2451413D0AD7A3A0425441E17A14BE70245141000000D09C425441C3F528DC75245141333333739A42544185EB51787A2451418FC2F5A8994254411F85EB4176245141C3F5282C96425441D7A370BD73245141CDCCCCDC934254419A9999A9722451418FC2F56892425441D7A3700D722451418FC2F5B8904254419A9999B971245141CDCCCCCC8E4254419A99992971245141CDCCCCBC89425441D7A3708D702451418FC2F588874254419A9999D96F2451418FC2F50886425441B81E856B6E245141CDCCCC3C834254415C8FC2756D24514148E17A04814254411F85EB716B2451417B14AE377A4254415C8FC2756A2451418FC2F5E875425441A4703D1A6A245141C3F528DC72425441A4703D4A6A2451413D0AD733714254411F85EB116B2451413D0AD7F36F425441EC51B88E722451417B14AEB76B425441A4703D5A78245141C3F5285C68425441713D0AB77A245141B81E851B66425441C3F528FC7C2451418FC2F53864425441AE47E10A7E245141A4703DCA63425441E17A14DE7F2451411F85EB7163425441C3F5286C83245141295C8F9263425441666666C6852451417B14AEC762425441A4703D1A88245141C3F5282C624254411F85EB418B2451413D0AD713624254411F85EBE18E245141A4703D6A6042544148E17AF493245141AE47E17A5F4254418FC2F5D8932451410AD7A3D05E425441295C8F4292245141CDCCCC7C51425441D7A3708D902451419A999969454254410AD7A350902451417B14AEF741425441333333738E2451419A999919424254410AD7A3908B2451413D0AD7D34242544185EB51F8842451415C8FC2F545425441D7A370FD812451419A99998947425441F6285C2F81245141B81E855B48425441D7A3703D80245141295C8F5249425441E17A146E79245141D7A3703D514254417B14AEC776245141A4703D0A55425441F6285C1F74245141AE47E1DA584254415C8FC2E567245141AE47E19A6B425441295C8F5261245141C3F5289C7242544152B81E955B245141713D0A277642544114AE47A156245141000000F07E4254410AD7A35054245141EC51B8BE85425441AE47E18A512451419A99991988425441C3F5286C45245141D7A370BD8A4254413D0AD7B33F24514148E17AE48E425441A4703D9A3724514114AE475197425441333333A331245141713D0AA79942544185EB51482C2451410AD7A3409D4254413D0AD7F32924514152B81E05A24254415C8FC2A527245141E17A14CEA7425441F6285C1F25245141A4703DCAAB42544148E17A0422245141D7A3702DAE425441A4703DEA1A2451413D0AD753B2425441A4703DBA152451413D0AD753B7425441713D0A17122451419A999989BA425441A4703D6A0F2451415C8FC2D5BF425441CDCCCC2C0F24514148E17A74C242544114AE47F10F2451413D0AD763C44254410AD7A31011245141AE47E13AC5425441D7A370ED2424514185EB5198B2425441B81E850B2424514148E17A44B54254417B14AE3722245141295C8F82C2425441333333931B2451413D0AD703C44254413333337313245141333333D3C6425441A4703D3A11245141D7A3703DC94254418FC2F5A80C245141AE47E1FAD242544185EB51E80424514152B81E15DC42544152B81EE5FF235141C3F5286CDF425441E17A142EF9235141A4703D7AE742544166666606F8235141295C8FA2E7425441C3F5282CF7235141B81E85CBE7425441B81E853BF52351413D0AD783E942544152B81E55EE2351419A9999F9F04254410AD7A3F0ED235141666666A6F2425441E17A149EEC23514114AE47C1F442544152B81E85EA235141CDCCCCACF6425441D7A370CDE923514185EB5118F742544114AE4781EC235141E17A149E03435441EC51B8CEF1235141295C8F42FD425441A4703D2AFA23514185EB5128F3425441295C8F12FD2351415C8FC295F0425441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000019C29C548724514168DE192CA44254410010C878862451414E2C4550A3425441B3F949E583245141EE0A0F63A44254415A8AE1E380245141EE0A0F63A4425441A7AB10E17A2451417537049AA4425441A7AB10E17A24514154D361D2A7425441E1C18784782451414E2194E6AB425441BBB6C83A77245141476FC6FAAF4254415BA043B76F24514167C8B758B5425441690F90F85E24514119A7885BBB4254410B04BCDE4E24514165B25585C6425441AAE285F14F2451419816FF3CC84254418B8994934A245141584EBAADCE425441F80E665841245141FFE90216C3425441B6860A9C44245141AA63CF64BF4254412B204F5B422451416DF76C79BD425441D9D2E0C63E2451413BD49C6CBA425441EE5987043C245141BC782388B942544116D4CEEB382451418D58B6B9BC425441E4BF35323924514112C302ACC142544191F2E44F3A2451416016DB73C7425441F82723E83B245141E397B6B3D0425441DD301C673C24514198DC04A6D542544178406B6B3D245141A389689FD7425441F80E665841245141DD6FFE7AD742544138C148144C24514197009D69D94254414BCC006E4824514183EA33A6E54254419E899B834F24514136C904A9EB42544149ABED3062245141D6B27F25E44254410F95768D64245141297BCBA4E242544142F91F456624514123D4AE22DE425441E2D7E9576724514197009D69D9425441B51A5D226A245141FED3A042D44254414E4759496F245141F82C84C0CF42544187521F8375245141F285673ECB425441F4C18E747D2451418516F84CC3425441CDAB1EC184245141F39BC911BA425441C6F950D588245141DAF4A59FB0425441F95DFA8C8A245141E1A6738BAC425441AC477CF987245141D44D891DAC42544119C29C548724514168DE192CA4425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533957 - 3096711
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -174  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B80E5E275141295C8F325A5B54410AD7A3005B275141C3F5280C485B544114AE47E15A27514133333353475B5441E17A146E57275141666666D6325B5441666666E655275141F6285CBF295B5441666666A642275141295C8F12365B54410AD7A3A0332751410AD7A3B03F5B5441CDCCCCBC3727514166666656585B5441AE47E1AA252751417B14AEC75C5B5441666666E625275141F6285C2F5F5B54419A9999492B275141CDCCCC5C7A5B54411F85EBB1372751410AD7A380725B544148E17AF443275141C3F528BC6A5B5441CDCCCC0C4E27514166666656645B5441EC51B80E5E275141295C8F325A5B5441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000CDCCCCBC3727514166666656585B5441B733E6B435275141DD9993284C5B5441BC751AA1342751414C3A7AED4B5B544177615A5B34275141049FF0544A5B544192F5C7E3332751416CAC39054A5B5441F089E59E332751413CE61272495B5441C71DA3F4322751419209EFE1445B5441EA46B9603427514167E88E30445B5441CE8A985234275141B07FD5DB435B5441A6DD65F233275141CD56F09A415B5441EC51B84E3027514114AE47D1415B5441CDCCCC5C2227514148E17AC44A5B54410472035C242751416F578FA8555B5441763A233D2527514155AC104A555B5441661A312A24275141BA48B20D505B544165F971292727514181FE288C4F5B5441B3E057A525275141C6C740F7495B544105C0597029275141C8D4197C495B5441C89FF6022B275141343B3556495B5441686C1B322C275141C701CD2B485B544143AA4FF22E2751416668DD23475B54411E6E591631275141FD1816724D5B544135BF592D3227514150F70C7C4D5B5441DB7B4741322751416EAD28754E5B54415D1DFE79312751416EAD28754E5B5441174CABA52F2751413C4F84284F5B544174B16B0231275141658D58E4555B5441DD0033B42A2751416E142237575B5441C6AF329D2927514139EC4626585B5441561B209A282751416AD1B4C5585B5441386504A1272751416AD1B4C5585B54416728C4CF26275141EC726BFE575B5441E2645F2626275141229B460F575B54411EF2551925275141DFA8343A585B5441CF135F0F25275141BD3675225A5B5441AE47E1AA252751417B14AEC75C5B5441CDCCCCBC3727514166666656585B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533957 - 3442763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -174  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B80E5E275141295C8F325A5B54410AD7A3005B275141C3F5280C485B544114AE47E15A27514133333353475B5441E17A146E57275141666666D6325B5441666666E655275141F6285CBF295B5441666666A642275141295C8F12365B54410AD7A3A0332751410AD7A3B03F5B5441CDCCCCBC3727514166666656585B5441AE47E1AA252751417B14AEC75C5B5441666666E625275141F6285C2F5F5B54419A9999492B275141CDCCCC5C7A5B54411F85EBB1372751410AD7A380725B544148E17AF443275141C3F528BC6A5B5441CDCCCC0C4E27514166666656645B5441EC51B80E5E275141295C8F325A5B5441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000CDCCCCBC3727514166666656585B5441B733E6B435275141DD9993284C5B5441BC751AA1342751414C3A7AED4B5B544177615A5B34275141049FF0544A5B544192F5C7E3332751416CAC39054A5B5441F089E59E332751413CE61272495B5441C71DA3F4322751419209EFE1445B5441EA46B9603427514167E88E30445B5441CE8A985234275141B07FD5DB435B5441A6DD65F233275141CD56F09A415B5441EC51B84E3027514114AE47D1415B5441CDCCCC5C2227514148E17AC44A5B54410472035C242751416F578FA8555B5441763A233D2527514155AC104A555B5441661A312A24275141BA48B20D505B544165F971292727514181FE288C4F5B5441B3E057A525275141C6C740F7495B544105C0597029275141C8D4197C495B5441C89FF6022B275141343B3556495B5441686C1B322C275141C701CD2B485B544143AA4FF22E2751416668DD23475B54411E6E591631275141FD1816724D5B544135BF592D3227514150F70C7C4D5B5441DB7B4741322751416EAD28754E5B54415D1DFE79312751416EAD28754E5B5441174CABA52F2751413C4F84284F5B544174B16B0231275141658D58E4555B5441DD0033B42A2751416E142237575B5441C6AF329D2927514139EC4626585B5441561B209A282751416AD1B4C5585B5441386504A1272751416AD1B4C5585B54416728C4CF26275141EC726BFE575B5441E2645F2626275141229B460F575B54411EF2551925275141DFA8343A585B5441CF135F0F25275141BD3675225A5B5441AE47E1AA252751417B14AEC75C5B5441CDCCCCBC3727514166666656585B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626860 - 2133956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000260000008FC2F518DDFF5041666666167B0B55419A9999B9DDFF5041666666B6790B5541F6285C6FDFFF504133333363780B554133333343E4FF504166666676760B5541713D0A97E3FF5041E17A14BE730B5541E17A145EE2FF5041AE47E1CA720B5541AE47E1FACDFF5041C3F5280C740B5541AE47E1FAC4FF50411F85EBD1740B5541E17A140EBDFF50410AD7A320740B5541D7A3707DB3FF50418FC2F588720B5541D7A3702DA4FF5041C3F528DC700B5541EC51B87E9CFF50417B14AE476F0B5541CDCCCC2C98FF50411F85EB916E0B5541713D0AB796FF5041A4703D8A6E0B5541E17A147E94FF50413D0AD7B36E0B55415C8FC26592FF5041295C8F126F0B554114AE47C190FF50418FC2F598720B554185EB51D894FF504114AE4701750B55418FC2F54898FF504114AE4721760B55417B14AE079DFF5041713D0A17780B5541295C8F92A8FF5041AE47E1AA7E0B5541295C8F02B8FF5041295C8F42870B55410AD7A3E0BEFF50410AD7A3508B0B55419A999959C7FF50413D0AD7D3900B5541A4703DCAC9FF50410AD7A3F08D0B5541713D0AD7C4FF504152B81E358A0B554133333393C5FF5041D7A3709D880B5541B81E85DBBFFF50418FC2F5A8840B554148E17AE4C0FF504185EB5178820B5541CDCCCC5CC6FF504148E17A54820B5541B81E85EBCAFF504152B81E75810B5541666666A6CFFF5041E17A144E810B55410AD7A300D4FF5041CDCCCCDC810B5541D7A3701DD3FF5041AE47E1FA7C0B554166666646D6FF5041AE47E11A7D0B554114AE4771D8FF5041C3F528BC7B0B5541B81E851BDBFF50413D0AD7337B0B55418FC2F518DDFF5041666666167B0B5541
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A330A2FF504152B81E25950B5541B81E854BA3FF5041295C8F02960B554185EB51C8A5FF50411F85EB21980B5541EC51B84EA9FF50417B14AE779B0B55417B14AE97AFFF5041CDCCCC8CA10B554133333363B3FF5041000000D09A0B5541666666E6B9FF5041E17A147E8F0B5541E17A14BEB1FF5041A4703DEA880B55417B14AEE7ACFF504166666616850B5541E17A14BEA9FF50417B14AED7820B5541713D0A77A7FF50413D0AD783810B55416348E4B5A8FF50413BAD8BBE7E0B55417418BA36A1FF50419D6E60797A0B5541886625699CFF5041B9128ED5770B554193D8F22C98FF50417D8A1E18760B55415001072E92FF5041F136E221740B55416666666690FF5041E17A14BE770B5541A4703DFA8FFF5041E17A14DE7A0B5541713D0AB78FFF5041666666667D0B55419A9999F992FF50415C8FC2D58B0B5541B81E850B95FF5041AE47E15A8D0B55410000003097FF5041295C8FD28E0B55410AD7A38099FF5041AE47E1FA8F0B55410AD7A3709DFF504166666616920B55410AD7A330A2FF504152B81E25950B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626860 - 4645918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000260000008FC2F518DDFF5041666666167B0B55419A9999B9DDFF5041666666B6790B5541F6285C6FDFFF504133333363780B554133333343E4FF504166666676760B5541713D0A97E3FF5041E17A14BE730B5541E17A145EE2FF5041AE47E1CA720B5541AE47E1FACDFF5041C3F5280C740B5541AE47E1FAC4FF50411F85EBD1740B5541E17A140EBDFF50410AD7A320740B5541D7A3707DB3FF50418FC2F588720B5541D7A3702DA4FF5041C3F528DC700B5541EC51B87E9CFF50417B14AE476F0B5541CDCCCC2C98FF50411F85EB916E0B5541713D0AB796FF5041A4703D8A6E0B5541E17A147E94FF50413D0AD7B36E0B55415C8FC26592FF5041295C8F126F0B554114AE47C190FF50418FC2F598720B554185EB51D894FF504114AE4701750B55418FC2F54898FF504114AE4721760B55417B14AE079DFF5041713D0A17780B5541295C8F92A8FF5041AE47E1AA7E0B5541295C8F02B8FF5041295C8F42870B55410AD7A3E0BEFF50410AD7A3508B0B55419A999959C7FF50413D0AD7D3900B5541A4703DCAC9FF50410AD7A3F08D0B5541713D0AD7C4FF504152B81E358A0B554133333393C5FF5041D7A3709D880B5541B81E85DBBFFF50418FC2F5A8840B554148E17AE4C0FF504185EB5178820B5541CDCCCC5CC6FF504148E17A54820B5541B81E85EBCAFF504152B81E75810B5541666666A6CFFF5041E17A144E810B55410AD7A300D4FF5041CDCCCCDC810B5541D7A3701DD3FF5041AE47E1FA7C0B554166666646D6FF5041AE47E11A7D0B554114AE4771D8FF5041C3F528BC7B0B5541B81E851BDBFF50413D0AD7337B0B55418FC2F518DDFF5041666666167B0B5541
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A330A2FF504152B81E25950B5541B81E854BA3FF5041295C8F02960B554185EB51C8A5FF50411F85EB21980B5541EC51B84EA9FF50417B14AE779B0B55417B14AE97AFFF5041CDCCCC8CA10B554133333363B3FF5041000000D09A0B5541666666E6B9FF5041E17A147E8F0B5541E17A14BEB1FF5041A4703DEA880B55417B14AEE7ACFF504166666616850B5541E17A14BEA9FF50417B14AED7820B5541713D0A77A7FF50413D0AD783810B55416348E4B5A8FF50413BAD8BBE7E0B55417418BA36A1FF50419D6E60797A0B5541886625699CFF5041B9128ED5770B554193D8F22C98FF50417D8A1E18760B55415001072E92FF5041F136E221740B55416666666690FF5041E17A14BE770B5541A4703DFA8FFF5041E17A14DE7A0B5541713D0AB78FFF5041666666667D0B55419A9999F992FF50415C8FC2D58B0B5541B81E850B95FF5041AE47E15A8D0B55410000003097FF5041295C8FD28E0B55410AD7A38099FF5041AE47E1FA8F0B55410AD7A3709DFF504166666616920B55410AD7A330A2FF504152B81E25950B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536780 - 998533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000180000001F85EBF1E75D5141E17A143E8C525441EC51B83EE95D5141B81E85CB8852544166666636E75D5141333333838752544148E17A94E65D5141D7A3701D875254410AD7A3A0DD5D51416666660681525441666666C6D95D51417B14AE677E52544152B81E65D35D51418FC2F5687A525441C3F528CCCC5D5141CDCCCC6C78525441C3F5286CCB5D51417B14AE977B525441C3F5284CC75D51413D0AD713815254413D0AD7A3C05D514185EB5148865254411F85EB91B85D5141AE47E14A8B525441333333E3B05D514148E17A4490525441713D0A87B65D514185EB51A8945254417B14AE97C25D514148E17A849C525441C3F528DCCD5D51418FC2F5C8A35254410AD7A3B0DD5D51418FC2F5E8AC525441C3F5281CDE5D514185EB51C8A652544152B81EF5DC5D5141A4703D6A9D52544185EB5148E35D514152B81EE59952544185EB51A8E55D51413D0AD7439752544114AE4781E65D51417B14AE47935254418FC2F518E75D5141EC51B80E905254411F85EBF1E75D5141E17A143E8C525441
+</a>
+
+<b>
+0106000000010000000103000000010000006500000016B2535ECB5D514174E312AA7B52544160250BC6CC5D5141863A8978785254418F9C7780CA5D514123BE68FD7B5254419A60D256C75D514132F686168052544130D5E4B0C55D5141861343D381525441A531EF0EC15D514165E1B61385525441CAFE84B6BB5D51415A1D5C3D885254416B37F2E6B65D5141DEA4C2D28A52544141DA09F0B25D5141EC77EAD38C525441AD0DC35FAF5D51417A28A2578E5254417EA31887AE5D5141132BFCB78D52544117A672E7AD5D5141CE5220F68C5254412D14A4D0AD5D5141D57B71E48B52544185EB51F8AE5D5141B81E85BB86525441EC51B86EAC5D5141D7A3707D85525441F6285C7FA25D51411F85EB217C525441A4703D3A9F5D5141F6285C0F7752544185EB5158955D51418FC2F58873525441A4703DDA7C5D51419A9999A9735254417B14AEB77D5D5141E17A14CE76525441AE47E15A7F5D514185EB51D87A52544114AE4781855D514148E17AD48852544185EB5118875D5141F6285CDF8D525441295C8F22875D5141295C8F728F5254410AD7A3F0865D5141B81E856B91525441AE47E15A865D51415C8FC2E593525441713D0AC7845D5141B81E859B97525441E17A141E835D5141333333139B5254418FC2F508835D5141C3F5283C9C525441D7A370CD895D514185EB51B8A1525441AE47E1AA8E5D5141B81E852BA6525441EC51B86E935D5141B81E856BAB5254419A999929985D5141EC51B8EEB15254418FC2F5489E5D5141B81E853BBB52544133333373A35D514152B81E15C352544148E17AF4A45D5141295C8F32C5525441A4703D8AA95D5141D7A3700DC2525441D7A3700DAA5D5141295C8F42BF525441F6285CDFA95D51419A9999F9BD525441295C8FF2A95D5141F6285C1FBD525441D7A3709DAA5D51415C8FC215BC5254413D0AD7C3AC5D51410AD7A390B9525441EC51B86EB05D514185EB51F8B5525441CDCCCC5CB45D5141B81E853BB952544152B81EF5B95D514152B81EE5B152544100000000C25D514185EB5128B852544148E17A54BE5D5141000000F0BC52544148E17A54BC5D5141713D0AB7BC525441295C8FE2BA5D514114AE47C1BE525441AE47E14ABC5D51413D0AD703C0525441B81E85EBBA5D5141B81E859BC15254417B14AE07B95D514152B81E75C052544114AE4711B85D514166666616C152544185EB51A8B55D5141F6285C7FC35254418FC2F578B35D514114AE4721C752544133333373B35D514114AE4791C85254415C8FC265B45D51413D0AD763CA5254417B14AE07B65D51418FC2F5E8CB5254410AD7A340B95D5141333333C3CD52544152B81E65B75D51417B14AED7CF5254418FC2F5F8B55D5141D7A370BDD15254413D0AD743AE5D514185EB51E8CB5254410AD7A3E0AB5D514148E17AD4C9525441AE47E17AA85D514152B81EA5C4525441AE47E1FAA55D5141333333A3C6525441EC51B88EA65D514133333373C752544114AE4781AB5D5141295C8F22CD525441AE47E1DAAF5D514133333323D1525441CDCCCCECBA5D5141295C8FE2D85254413D0AD793C15D51419A9999F9DC52544166666606C95D5141F6285CFFDF525441AE47E12AD05D51419A9999D9E1525441EC51B80ED65D5141C3F528ACE252544114AE47A1DB5D5141EC51B8DEE252544166666606E45D5141F6285CEFE152544152B81E35E55D5141D7A370CDE15254411F85EBE1E55D5141A4703DBAE1525441B81E856BE65D5141AE47E19AE152544114AE4761E45D5141F6285C6FDD525441E17A14CEE25D51419A9999F9D7525441AE47E15AE25D5141AE47E1CAD55254411F85EB31E25D514152B81E85D2525441295C8FB2E15D5141CDCCCC2CCF525441295C8F52E15D514185EB51D8CD525441295C8F72DD5D51418FC2F5F8BF525441A4703D3ADD5D5141000000A0B35254410AD7A3B0DD5D51418FC2F5E8AC525441C3F528DCCD5D51418FC2F5C8A35254417B14AE97C25D514148E17A849C525441713D0A87B65D514185EB51A894525441333333E3B05D514148E17A44905254411F85EB91B85D5141AE47E14A8B52544146497846BA5D514173AFDC3B8A525441084CA8C3BE5D51411406435987525441357DB07AC05D514133DC02538652544162C13781C15D514114C63D9B8552544183295CC8C25D5141C32C799B8452544169884A05C45D51419A615A9B83525441A5176B4BC75D5141413B671181525441D77E9603C85D514154BFEF1F8052544116B2535ECB5D514174E312AA7B525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536780 - 3490947
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000180000001F85EBF1E75D5141E17A143E8C525441EC51B83EE95D5141B81E85CB8852544166666636E75D5141333333838752544148E17A94E65D5141D7A3701D875254410AD7A3A0DD5D51416666660681525441666666C6D95D51417B14AE677E52544152B81E65D35D51418FC2F5687A525441C3F528CCCC5D5141CDCCCC6C78525441C3F5286CCB5D51417B14AE977B525441C3F5284CC75D51413D0AD713815254413D0AD7A3C05D514185EB5148865254411F85EB91B85D5141AE47E14A8B525441333333E3B05D514148E17A4490525441713D0A87B65D514185EB51A8945254417B14AE97C25D514148E17A849C525441C3F528DCCD5D51418FC2F5C8A35254410AD7A3B0DD5D51418FC2F5E8AC525441C3F5281CDE5D514185EB51C8A652544152B81EF5DC5D5141A4703D6A9D52544185EB5148E35D514152B81EE59952544185EB51A8E55D51413D0AD7439752544114AE4781E65D51417B14AE47935254418FC2F518E75D5141EC51B80E905254411F85EBF1E75D5141E17A143E8C525441
+</a>
+
+<b>
+0106000000010000000103000000010000006500000016B2535ECB5D514174E312AA7B52544160250BC6CC5D5141863A8978785254418F9C7780CA5D514123BE68FD7B5254419A60D256C75D514132F686168052544130D5E4B0C55D5141861343D381525441A531EF0EC15D514165E1B61385525441CAFE84B6BB5D51415A1D5C3D885254416B37F2E6B65D5141DEA4C2D28A52544141DA09F0B25D5141EC77EAD38C525441AD0DC35FAF5D51417A28A2578E5254417EA31887AE5D5141132BFCB78D52544117A672E7AD5D5141CE5220F68C5254412D14A4D0AD5D5141D57B71E48B52544185EB51F8AE5D5141B81E85BB86525441EC51B86EAC5D5141D7A3707D85525441F6285C7FA25D51411F85EB217C525441A4703D3A9F5D5141F6285C0F7752544185EB5158955D51418FC2F58873525441A4703DDA7C5D51419A9999A9735254417B14AEB77D5D5141E17A14CE76525441AE47E15A7F5D514185EB51D87A52544114AE4781855D514148E17AD48852544185EB5118875D5141F6285CDF8D525441295C8F22875D5141295C8F728F5254410AD7A3F0865D5141B81E856B91525441AE47E15A865D51415C8FC2E593525441713D0AC7845D5141B81E859B97525441E17A141E835D5141333333139B5254418FC2F508835D5141C3F5283C9C525441D7A370CD895D514185EB51B8A1525441AE47E1AA8E5D5141B81E852BA6525441EC51B86E935D5141B81E856BAB5254419A999929985D5141EC51B8EEB15254418FC2F5489E5D5141B81E853BBB52544133333373A35D514152B81E15C352544148E17AF4A45D5141295C8F32C5525441A4703D8AA95D5141D7A3700DC2525441D7A3700DAA5D5141295C8F42BF525441F6285CDFA95D51419A9999F9BD525441295C8FF2A95D5141F6285C1FBD525441D7A3709DAA5D51415C8FC215BC5254413D0AD7C3AC5D51410AD7A390B9525441EC51B86EB05D514185EB51F8B5525441CDCCCC5CB45D5141B81E853BB952544152B81EF5B95D514152B81EE5B152544100000000C25D514185EB5128B852544148E17A54BE5D5141000000F0BC52544148E17A54BC5D5141713D0AB7BC525441295C8FE2BA5D514114AE47C1BE525441AE47E14ABC5D51413D0AD703C0525441B81E85EBBA5D5141B81E859BC15254417B14AE07B95D514152B81E75C052544114AE4711B85D514166666616C152544185EB51A8B55D5141F6285C7FC35254418FC2F578B35D514114AE4721C752544133333373B35D514114AE4791C85254415C8FC265B45D51413D0AD763CA5254417B14AE07B65D51418FC2F5E8CB5254410AD7A340B95D5141333333C3CD52544152B81E65B75D51417B14AED7CF5254418FC2F5F8B55D5141D7A370BDD15254413D0AD743AE5D514185EB51E8CB5254410AD7A3E0AB5D514148E17AD4C9525441AE47E17AA85D514152B81EA5C4525441AE47E1FAA55D5141333333A3C6525441EC51B88EA65D514133333373C752544114AE4781AB5D5141295C8F22CD525441AE47E1DAAF5D514133333323D1525441CDCCCCECBA5D5141295C8FE2D85254413D0AD793C15D51419A9999F9DC52544166666606C95D5141F6285CFFDF525441AE47E12AD05D51419A9999D9E1525441EC51B80ED65D5141C3F528ACE252544114AE47A1DB5D5141EC51B8DEE252544166666606E45D5141F6285CEFE152544152B81E35E55D5141D7A370CDE15254411F85EBE1E55D5141A4703DBAE1525441B81E856BE65D5141AE47E19AE152544114AE4761E45D5141F6285C6FDD525441E17A14CEE25D51419A9999F9D7525441AE47E15AE25D5141AE47E1CAD55254411F85EB31E25D514152B81E85D2525441295C8FB2E15D5141CDCCCC2CCF525441295C8F52E15D514185EB51D8CD525441295C8F72DD5D51418FC2F5F8BF525441A4703D3ADD5D5141000000A0B35254410AD7A3B0DD5D51418FC2F5E8AC525441C3F528DCCD5D51418FC2F5C8A35254417B14AE97C25D514148E17A849C525441713D0A87B65D514185EB51A894525441333333E3B05D514148E17A44905254411F85EB91B85D5141AE47E14A8B52544146497846BA5D514173AFDC3B8A525441084CA8C3BE5D51411406435987525441357DB07AC05D514133DC02538652544162C13781C15D514114C63D9B8552544183295CC8C25D5141C32C799B8452544169884A05C45D51419A615A9B83525441A5176B4BC75D5141413B671181525441D77E9603C85D514154BFEF1F8052544116B2535ECB5D514174E312AA7B525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537636 - 3153532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000030000002B00000000000050FE5651410AD7A3B03D63544152B81EA5FD565141E17A141E3E635441333333C3FC565141E17A142E3F63544114AE4731FC5651418FC2F5484163544152B81E45FB5651410AD7A3A04563544185EB51F8F95651417B14AE1747635441295C8F22F6565141000000204D6354413D0AD703F7565141295C8F624D635441666666E6F9565141C3F5283C4E635441AE47E1AAFA565141666666764E6354413D0AD713FE5651417B14AE774F635441F6285C3FFE56514114AE47314F63544166666676045751419A99991945635441D7A3709D0657514152B81E753D635441D7A3707D07575141000000603863544148E17A84085751411F85EB4133635441295C8F6209575141CDCCCC6C2B635441295C8F220A5751411F85EBC127635441000000400D5751415C8FC2D51D635441B81E85FB06575141D7A3701D1C6354418FC2F51801575141000000801A6354417B14AE67DC565141D7A3706D10635441666666A6E5565141F6285C9F1D635441C3F5282CE7565141E17A141E2163544114AE47D1E65651419A999949246354418FC2F558E55651413D0AD7D3276354418FC2F538E5565141C3F5284C296354418FC2F5D8E7565141B81E85CB2D63544148E17A54EA565141713D0A573163544148E17AA4ED565141A4703DBA336354419A999959F15651411F85EB81356354417B14AEC7F35651418FC2F54837635441A4703DEAF65651411F85EBB13A635441AE47E1DAF8565141CDCCCC4C3D63544148E17A44F9565141E17A14CE3B635441713D0AE7F856514148E17AF43A635441000000C0F85651415C8FC2953963544148E17A44F95651415C8FC28538635441713D0A170457514114AE47813C635441713D0A2704575141333333533D6354411F85EBB1035751411F85EBA13E635441000000D00257514148E17A643F63544100000050FE5651410AD7A3B03D63544105000000B81E857B035751411F85EB01396354413333338303575141B81E85AB376354419A9999D904575141B81E85AB376354411F85EBD1045751419A99990939635441B81E857B035751411F85EB0139635441050000007B14AEC7FC565141295C8F02276354415C8FC2D5FC565141B81E85AB25635441E17A141EFE5651410AD7A3B025635441B81E850BFE565141B81E850B276354417B14AEC7FC565141295C8F0227635441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000FAA2897EF8565141804F100735635441FE06CDE807575141140A494936635441160390D10857514145A7F489306354417A9F30520957514139349A002C635441FB38D5350A575141363A878427635441520CB9750B575141F38E8D89236354418772F9330D575141F4F510FC1D635441E12B9DD9F0565141A192360A16635441E818B681DF565141BE3806F91063544186AF0E7DDC565141C675F38B106354410142BB10E056514177ACDAA61563544118D7853CE356514139677D2D1A63544182A5EF77E556514139470B5D1D635441B5C94B26E75651418C709E102163544163A653E3E65651416E3873A823635441DA2BA0E8E5565141F69EDE792663544113132B46E55651418CB3D4B0286354414647E764E7565141450AB2CF2D6354412A394A64EA565141BC616F62316354416DF0277EEC565141E8C61AE6326354413E538BFDF256514194F719B536635441A761A694F5565141B6AA5D3E396354418947F0F3F6565141F3B30BBF3A635441FC51D4E9F6565141E92D79B13A6354419975714BF8565141549B6A0135635441FAA2897EF8565141804F100735635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537636 - 3538595
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000030000002B00000000000050FE5651410AD7A3B03D63544152B81EA5FD565141E17A141E3E635441333333C3FC565141E17A142E3F63544114AE4731FC5651418FC2F5484163544152B81E45FB5651410AD7A3A04563544185EB51F8F95651417B14AE1747635441295C8F22F6565141000000204D6354413D0AD703F7565141295C8F624D635441666666E6F9565141C3F5283C4E635441AE47E1AAFA565141666666764E6354413D0AD713FE5651417B14AE774F635441F6285C3FFE56514114AE47314F63544166666676045751419A99991945635441D7A3709D0657514152B81E753D635441D7A3707D07575141000000603863544148E17A84085751411F85EB4133635441295C8F6209575141CDCCCC6C2B635441295C8F220A5751411F85EBC127635441000000400D5751415C8FC2D51D635441B81E85FB06575141D7A3701D1C6354418FC2F51801575141000000801A6354417B14AE67DC565141D7A3706D10635441666666A6E5565141F6285C9F1D635441C3F5282CE7565141E17A141E2163544114AE47D1E65651419A999949246354418FC2F558E55651413D0AD7D3276354418FC2F538E5565141C3F5284C296354418FC2F5D8E7565141B81E85CB2D63544148E17A54EA565141713D0A573163544148E17AA4ED565141A4703DBA336354419A999959F15651411F85EB81356354417B14AEC7F35651418FC2F54837635441A4703DEAF65651411F85EBB13A635441AE47E1DAF8565141CDCCCC4C3D63544148E17A44F9565141E17A14CE3B635441713D0AE7F856514148E17AF43A635441000000C0F85651415C8FC2953963544148E17A44F95651415C8FC28538635441713D0A170457514114AE47813C635441713D0A2704575141333333533D6354411F85EBB1035751411F85EBA13E635441000000D00257514148E17A643F63544100000050FE5651410AD7A3B03D63544105000000B81E857B035751411F85EB01396354413333338303575141B81E85AB376354419A9999D904575141B81E85AB376354411F85EBD1045751419A99990939635441B81E857B035751411F85EB0139635441050000007B14AEC7FC565141295C8F02276354415C8FC2D5FC565141B81E85AB25635441E17A141EFE5651410AD7A3B025635441B81E850BFE565141B81E850B276354417B14AEC7FC565141295C8F0227635441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000FAA2897EF8565141804F100735635441FE06CDE807575141140A494936635441160390D10857514145A7F489306354417A9F30520957514139349A002C635441FB38D5350A575141363A878427635441520CB9750B575141F38E8D89236354418772F9330D575141F4F510FC1D635441E12B9DD9F0565141A192360A16635441E818B681DF565141BE3806F91063544186AF0E7DDC565141C675F38B106354410142BB10E056514177ACDAA61563544118D7853CE356514139677D2D1A63544182A5EF77E556514139470B5D1D635441B5C94B26E75651418C709E102163544163A653E3E65651416E3873A823635441DA2BA0E8E5565141F69EDE792663544113132B46E55651418CB3D4B0286354414647E764E7565141450AB2CF2D6354412A394A64EA565141BC616F62316354416DF0277EEC565141E8C61AE6326354413E538BFDF256514194F719B536635441A761A694F5565141B6AA5D3E396354418947F0F3F6565141F3B30BBF3A635441FC51D4E9F6565141E92D79B13A6354419975714BF8565141549B6A0135635441FAA2897EF8565141804F100735635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 1242419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D544100000080B85D514152B81EE58A6D54410AD7A3B0B85D5141666666C68C6D54418FC2F598BB5D514152B81EF58A6D544100000060BC5D51417B14AE77896D544152B81E15BC5D5141EC51B84E886D544166666656B95D51417B14AEB7866D54410AD7A320B85D514114AE4771856D54413D0AD7E3B65D514114AE4781856D5441333333F3B55D51413D0AD7B3846D54417B14AE97B55D5141E17A14DE846D5441295C8FF2B45D51410AD7A3D0846D5441AE47E11AB45D5141713D0A97846D5441CDCCCC7CB35D514148E17AF4846D5441D7A370DDB25D51413D0AD713856D5441000000C0B15D514148E17AE4846D5441295C8F52B05D5141E17A143E856D5441AE47E15AAF5D5141CDCCCC0C856D54413D0AD793AD5D5141000000B0846D544100000090AB5D51417B14AEB7846D5441E17A143EAB5D5141D7A3703D856D5441B81E85ABAA5D51413D0AD753856D54418FC2F5D8A95D5141EC51B81E846D5441333333F3A85D5141E17A144E846D54411F85EB71A85D514114AE4701856D5441295C8FE2A75D5141AE47E1CA846D54419A999929A75D5141F6285C9F846D544148E17AC4A55D514148E17AD4846D5441E17A145EA55D5141713D0AD7856D5441CDCCCC8CA45D5141713D0A17856D5441D7A370BDA35D5141295C8FE2846D5441B81E855BA25D514152B81E05856D5441A4703D4AA05D5141D7A3709D846D54410AD7A3309E5D51410AD7A3E0846D5441CDCCCCCC995D51413D0AD703856D5441CDCCCC6C955D51415C8FC205856D5441B81E85BB8E5D5141C3F5282C856D54413D0AD7738D5D51417B14AE27866D5441713D0AA78C5D514152B81E05876D54410AD7A3A0875D514148E17AE4876D5441CDCCCCDC7E5D514114AE47F1896D54410AD7A3F07D5D51418FC2F5188E6D54411F85EBA17C5D5141F6285C4F956D5441B81E855B7A5D514152B81E55A06D544185EB51D8785D514148E17AD4A86D54415C8FC2B5785D51415C8FC295A96D5441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000641957F0AD5D5141EB501F68896D5441BBC23029A75D514105D9840F896D5441F6285C6F985D5141EC51B83E886D544166666686905D5141713D0AB7886D544155B80E56875D5141ADAB0F4A896D54413A0A677F865D5141127E9A84896D5441BA04F192825D51412B1E23D28A6D544192A562887F5D51418EE8A7D58B6D5441C5082C437F5D5141F3B54A2B8C6D5441295C8FF27B5D5141EC51B86E9E6D5441A7A750A37B5D514171E8997BA06D5441C3F528AC7A5D51410AD7A3E0A66D54419F56A5B17A5D5141FBE140DDA66D54413D0AD7F37C5D514185EB5178A56D5441713D0AE77F5D5141C3F528DCA36D5441E17A141E835D51413D0AD773A26D544148E17A14885D5141295C8F82A06D5441666666D68C5D5141F6285C7F9E6D54419A9999B9905D5141CDCCCC7C9C6D5441A4703D8A935D514148E17A149B6D5441AE47E11A995D5141AE47E1AA986D5441A4703DCA9C5D5141295C8F42976D5441CBA97384A45D514131D3449E956D544191B53AB9A85D5141C25EB0CC946D544150760653AA5D514170551E6B946D5441F29685A8AB5D5141244C8C09946D54411D3F86DDAB5D5141EF6F20E2936D5441B7B704FEAC5D514114A77694936D5441A5181DDCAE5D5141B4C690C7926D54410C399C31B05D5141B886F73E926D5441208DBE9FB35D514165BC9943906D544105571C9BB55D514100D321158F6D5441FC72D2BFB65D514149F704798E6D54410E3D30BBB85D514100D2BCF28C6D54412E7A135EB85D514171E788BE8A6D5441EA97BE34B85D51418F13B1DB896D54411ABE9B90B75D514195B9D5D4896D5441452D0723B15D5141EC8F958F896D544123AAB468B05D51416846BE87896D5441920FB7F7AE5D514164EDE57D896D5441641957F0AD5D5141EB501F68896D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 3278201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D544100000080B85D514152B81EE58A6D54410AD7A3B0B85D5141666666C68C6D54418FC2F598BB5D514152B81EF58A6D544100000060BC5D51417B14AE77896D544152B81E15BC5D5141EC51B84E886D544166666656B95D51417B14AEB7866D54410AD7A320B85D514114AE4771856D54413D0AD7E3B65D514114AE4781856D5441333333F3B55D51413D0AD7B3846D54417B14AE97B55D5141E17A14DE846D5441295C8FF2B45D51410AD7A3D0846D5441AE47E11AB45D5141713D0A97846D5441CDCCCC7CB35D514148E17AF4846D5441D7A370DDB25D51413D0AD713856D5441000000C0B15D514148E17AE4846D5441295C8F52B05D5141E17A143E856D5441AE47E15AAF5D5141CDCCCC0C856D54413D0AD793AD5D5141000000B0846D544100000090AB5D51417B14AEB7846D5441E17A143EAB5D5141D7A3703D856D5441B81E85ABAA5D51413D0AD753856D54418FC2F5D8A95D5141EC51B81E846D5441333333F3A85D5141E17A144E846D54411F85EB71A85D514114AE4701856D5441295C8FE2A75D5141AE47E1CA846D54419A999929A75D5141F6285C9F846D544148E17AC4A55D514148E17AD4846D5441E17A145EA55D5141713D0AD7856D5441CDCCCC8CA45D5141713D0A17856D5441D7A370BDA35D5141295C8FE2846D5441B81E855BA25D514152B81E05856D5441A4703D4AA05D5141D7A3709D846D54410AD7A3309E5D51410AD7A3E0846D5441CDCCCCCC995D51413D0AD703856D5441CDCCCC6C955D51415C8FC205856D5441B81E85BB8E5D5141C3F5282C856D54413D0AD7738D5D51417B14AE27866D5441713D0AA78C5D514152B81E05876D54410AD7A3A0875D514148E17AE4876D5441CDCCCCDC7E5D514114AE47F1896D54410AD7A3F07D5D51418FC2F5188E6D54411F85EBA17C5D5141F6285C4F956D5441B81E855B7A5D514152B81E55A06D544185EB51D8785D514148E17AD4A86D54415C8FC2B5785D51415C8FC295A96D5441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000641957F0AD5D5141EB501F68896D5441BBC23029A75D514105D9840F896D5441F6285C6F985D5141EC51B83E886D544166666686905D5141713D0AB7886D544155B80E56875D5141ADAB0F4A896D54413A0A677F865D5141127E9A84896D5441BA04F192825D51412B1E23D28A6D544192A562887F5D51418EE8A7D58B6D5441C5082C437F5D5141F3B54A2B8C6D5441295C8FF27B5D5141EC51B86E9E6D5441A7A750A37B5D514171E8997BA06D5441C3F528AC7A5D51410AD7A3E0A66D54419F56A5B17A5D5141FBE140DDA66D54413D0AD7F37C5D514185EB5178A56D5441713D0AE77F5D5141C3F528DCA36D5441E17A141E835D51413D0AD773A26D544148E17A14885D5141295C8F82A06D5441666666D68C5D5141F6285C7F9E6D54419A9999B9905D5141CDCCCC7C9C6D5441A4703D8A935D514148E17A149B6D5441AE47E11A995D5141AE47E1AA986D5441A4703DCA9C5D5141295C8F42976D5441CBA97384A45D514131D3449E956D544191B53AB9A85D5141C25EB0CC946D544150760653AA5D514170551E6B946D5441F29685A8AB5D5141244C8C09946D54411D3F86DDAB5D5141EF6F20E2936D5441B7B704FEAC5D514114A77694936D5441A5181DDCAE5D5141B4C690C7926D54410C399C31B05D5141B886F73E926D5441208DBE9FB35D514165BC9943906D544105571C9BB55D514100D321158F6D5441FC72D2BFB65D514149F704798E6D54410E3D30BBB85D514100D2BCF28C6D54412E7A135EB85D514171E788BE8A6D5441EA97BE34B85D51418F13B1DB896D54411ABE9B90B75D514195B9D5D4896D5441452D0723B15D5141EC8F958F896D544123AAB468B05D51416846BE87896D5441920FB7F7AE5D514164EDE57D896D5441641957F0AD5D5141EB501F68896D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542277 - 2926261
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+010600000001000000010300000001000000130000003D0AD7933D41514152B81E454AFE5441000000A03B415141F6285CAF53FE54418FC2F5983B415141AE47E10A56FE5441C3F5281C3C4151419A99998958FE544148E17A943D4151411F85EB215AFE544152B81E8540415141333333635BFE5441000000004741514114AE47F15CFE5441CDCCCC9C494151417B14AE6737FE5441666666864C415141E17A148E0DFE544185EB51384B415141713D0AD70BFE5441D7A3705D47415141D7A370AD0AFE5441D7A3701D374151411F85EB110AFE5441E17A142E31415141C3F528BC0AFE5441CDCCCC7C2E4151417B14AE7731FE5441D7A3701D2D4151416666663645FE5441713D0A273341514185EB517845FE54415C8FC2553D4151413D0AD74346FE54413D0AD7A33E41514185EB519847FE54413D0AD7933D41514152B81E454AFE5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000CE194FD83741514140F1E7180AFE5441D77EDB08344151419862F38945FE54415C8FC2553D4151413D0AD74346FE54413D0AD7A33E41514185EB519847FE54413D0AD7933D41514152B81E454AFE5441000000A03B415141F6285CAF53FE54418FC2F5983B415141AE47E10A56FE5441C3F5281C3C4151419A99998958FE544148E17A943D4151411F85EB215AFE544152B81E8540415141333333635BFE5441000000004741514114AE47F15CFE5441CDCCCC9C494151417B14AE6737FE5441666666864C415141E17A148E0DFE544185EB51384B415141713D0AD70BFE5441D7A3705D47415141D7A370AD0AFE5441A9E1571938415141C959561B0AFE5441CE194FD83741514140F1E7180AFE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 1459050
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E415541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C41554194410F700DF350419CE40A817E4155413B95136B18F350411524C99589415541E461E62919F35041BDAA6A4F8A415541E1041C421CF35041AECE008C8D415541DC8C35A91FF35041B314AEDE8A415541EF0EB6BD1FF35041319B1ACE8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F2296415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 1459053
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -52  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E415541
+</a>
+
+<b>
+0106000000010000000103000000010000003700000052B81E6523F35041333333736C41554152B81E451CF35041EC51B8CE61415541713D0A1717F3504185EB51A85A415541B81E85DB13F350411F85EBC1564155410000002012F35041C3F528DC57415541D7A3708D0CF35041CDCCCC2C54415541713D0AF704F35041666666365F415541333333F302F35041295C8FC2664155417B14AE27FBF25041713D0A677141554133333373F7F2504114AE47317541554100000030F5F250417B14AEA77741554152B81EF5F5F2504152B81EF582415541AE47E14AF7F25041F6285C6F9041554148E17A64F6F25041295C8F42954155410AD7A330F2F25041000000109D415541713D0AE7EBF25041AE47E1BAA7415541E17A14FEE1F250417B14AEA7B84155411F85EB31DEF250413D0AD783BC415541EC51B86ED9F25041C3F528CCBF415541C3F5280CD9F25041AE47E1CAC1415541A4703D7AD9F2504133333303C44155417B14AE77D8F250419A999919C84155418FC2F5B8D7F2504148E17A24C9415541D7A370BDDDF250419A9999C9D04155415C8FC215E3F2504152B81EE5D8415541F6285C4FE4F25041713D0A77DD4155413D0AD7F3E4F25041B81E853BE04155410AD7A340E5F250415C8FC235E7415541333333B3E7F25041F6285CFFE441554114AE47F1EFF250419A9999B9DE415541295C8FE2F0F250413D0AD733DE4155411F85EB51FEF25041C3F528ECD24155411F85EBA10AF35041C3F528FCC641554114AE47210DF35041B81E85ABC4415541CDCCCC5C1AF35041A4703D0AB94155418FC2F5282AF35041D7A3707DAB41554185EB51C82AF3504114AE47E1AA41554185EB51C839F350418FC2F5A89E415541713D0A773FF35041CDCCCCCC9A415541713D0A8740F3504114AE4781994155418FC2F5783AF35041000000C09141554185EB51A833F35041333333D396415541E17A141E33F35041295C8F2296415541B81E852B32F350419A9999E99641554185EB51D82CF35041EC51B8EE9A415541AEACBDAA1FF3504172FD12E18A415541E1041C421CF35041AECE008C8D415541E461E62919F35041BDAA6A4F8A4155413B95136B18F350411524C9958941554194410F700DF350419CE40A817E415541666666F60EF35041713D0AF77C415541D7A370AD13F35041F6285C3F78415541E17A148E1BF350419A99996971415541A4703DAA1DF3504148E17AE47041554152B81E6523F35041333333736C415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 3466023
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E415541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C41554194410F700DF350419CE40A817E4155413B95136B18F350411524C99589415541E461E62919F35041BDAA6A4F8A415541E1041C421CF35041AECE008C8D415541DC8C35A91FF35041B314AEDE8A415541EF0EB6BD1FF35041319B1ACE8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F2296415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 3467213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -52  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E415541
+</a>
+
+<b>
+0106000000010000000103000000010000003700000052B81E6523F35041333333736C41554152B81E451CF35041EC51B8CE61415541713D0A1717F3504185EB51A85A415541B81E85DB13F350411F85EBC1564155410000002012F35041C3F528DC57415541D7A3708D0CF35041CDCCCC2C54415541713D0AF704F35041666666365F415541333333F302F35041295C8FC2664155417B14AE27FBF25041713D0A677141554133333373F7F2504114AE47317541554100000030F5F250417B14AEA77741554152B81EF5F5F2504152B81EF582415541AE47E14AF7F25041F6285C6F9041554148E17A64F6F25041295C8F42954155410AD7A330F2F25041000000109D415541713D0AE7EBF25041AE47E1BAA7415541E17A14FEE1F250417B14AEA7B84155411F85EB31DEF250413D0AD783BC415541EC51B86ED9F25041C3F528CCBF415541C3F5280CD9F25041AE47E1CAC1415541A4703D7AD9F2504133333303C44155417B14AE77D8F250419A999919C84155418FC2F5B8D7F2504148E17A24C9415541D7A370BDDDF250419A9999C9D04155415C8FC215E3F2504152B81EE5D8415541F6285C4FE4F25041713D0A77DD4155413D0AD7F3E4F25041B81E853BE04155410AD7A340E5F250415C8FC235E7415541333333B3E7F25041F6285CFFE441554114AE47F1EFF250419A9999B9DE415541295C8FE2F0F250413D0AD733DE4155411F85EB51FEF25041C3F528ECD24155411F85EBA10AF35041C3F528FCC641554114AE47210DF35041B81E85ABC4415541CDCCCC5C1AF35041A4703D0AB94155418FC2F5282AF35041D7A3707DAB41554185EB51C82AF3504114AE47E1AA41554185EB51C839F350418FC2F5A89E415541713D0A773FF35041CDCCCCCC9A415541713D0A8740F3504114AE4781994155418FC2F5783AF35041000000C09141554185EB51A833F35041333333D396415541E17A141E33F35041295C8F2296415541B81E852B32F350419A9999E99641554185EB51D82CF35041EC51B8EE9A415541AEACBDAA1FF3504172FD12E18A415541E1041C421CF35041AECE008C8D415541E461E62919F35041BDAA6A4F8A4155413B95136B18F350411524C9958941554194410F700DF350419CE40A817E415541666666F60EF35041713D0AF77C415541D7A370AD13F35041F6285C3F78415541E17A148E1BF350419A99996971415541A4703DAA1DF3504148E17AE47041554152B81E6523F35041333333736C415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546931 - 3128298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB5198BA005141C3F528CC115255419A999909BE005141B81E851B1352554114AE4791C2005141AE47E19A14525541F6285CDFC60051416666660616525541CDCCCCFCCA005141295C8F4217525541AE47E11ACF005141F6285C7F18525541C3F5287CD20051418FC2F5A819525541D7A3701DD5005141713D0AA71352554114AE4731CF005141C3F5286C125255418FC2F598CA005141295C8F2211525541000000B0C40051413D0AD7130F5255419A9999C9BB005141000000C00B52554185EB5178B30051416666661609525541333333C3B10051413D0AD7D30D525541EC51B84EB40051410AD7A3100F5255413D0AD713B7005141000000601052554185EB5198BA005141C3F528CC11525541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000356146D6B1005141EB63E39E0D5255416CDE2251B6005141AC946DF30F525541955DF6BABC00514148FA1DAB12525541B5623C46C70051419F5D9925165255410A1F1289D20051414DCE848B19525541F2108C0CD5005141C7D8A0CD13525541EA179951CF0051412834DF72125255412F2A312DC80051418475CB4A105255419F6BD1E7C2005141FDC948690E5255415AA51430BF005141BBC173050D5255413303F083BB0051418352B3A90B5255417ADA609EB70051416DA35F6A0A525541B59D9E7DB300514119A94A1A09525541356146D6B1005141EB63E39E0D525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546931 - 3511621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB5198BA005141C3F528CC115255419A999909BE005141B81E851B1352554114AE4791C2005141AE47E19A14525541F6285CDFC60051416666660616525541CDCCCCFCCA005141295C8F4217525541AE47E11ACF005141F6285C7F18525541C3F5287CD20051418FC2F5A819525541D7A3701DD5005141713D0AA71352554114AE4731CF005141C3F5286C125255418FC2F598CA005141295C8F2211525541000000B0C40051413D0AD7130F5255419A9999C9BB005141000000C00B52554185EB5178B30051416666661609525541333333C3B10051413D0AD7D30D525541EC51B84EB40051410AD7A3100F5255413D0AD713B7005141000000601052554185EB5198BA005141C3F528CC11525541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000356146D6B1005141EB63E39E0D5255416CDE2251B6005141AC946DF30F525541955DF6BABC00514148FA1DAB12525541B5623C46C70051419F5D9925165255410A1F1289D20051414DCE848B19525541F2108C0CD5005141C7D8A0CD13525541EA179951CF0051412834DF72125255412F2A312DC80051418475CB4A105255419F6BD1E7C2005141FDC948690E5255415AA51430BF005141BBC173050D5255413303F083BB0051418352B3A90B5255417ADA609EB70051416DA35F6A0A525541B59D9E7DB300514119A94A1A09525541356146D6B1005141EB63E39E0D525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548701 - 248871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000200000001030000000100000010000000A4703D2A4D0C5141CDCCCC0CA72455415C8FC285510C5141C3F528BCAE2455417B14AED7510C514133333343AF24554185EB51085A0C5141CDCCCC1CBD245541713D0AE75B0C51418FC2F508BC245541F6285CFF610C51417B14AE77B924554185EB5198640C514166666646B92455410AD7A300670C5141EC51B84EB924554114AE47016C0C51410AD7A3F0B52455415C8FC2F56D0C5141295C8F42B5245541CDCCCCBC690C5141713D0A57AC245541D7A3700D660C5141000000B0A42455418FC2F568650C51418FC2F578A324554166666686620C514148E17A749D245541713D0AD75E0C51419A9999F995245541A4703D2A4D0C5141CDCCCC0CA7245541010300000001000000140000007B14AE073C0C5141A4703DFA6B245541D7A3706D380C5141F6285C2F6F245541C3F5287C340C514100000040722455419A999959300C5141333333F37424554114AE47D1320C51411F85EB017924554148E17AB4360C51415C8FC2557F2455418FC2F5383A0C5141295C8F2285245541B81E857B3E0C514185EB51D88C245541C3F528BC420C51415C8FC2A594245541C3F528CC4C0C514166666666A62455415C8FC2855E0C514152B81E5595245541EC51B88E5D0C514100000060932455419A9999195B0C514114AE47418E2455410AD7A340570C514114AE47B181245541CDCCCC3C4F0C514114AE47F17124554148E17A444D0C5141333333D36C245541333333934A0C514185EB512869245541B81E851B480C514114AE471166245541A4703DCA450C514185EB51F8622455417B14AE073C0C5141A4703DFA6B245541
+</a>
+
+<b>
+010600000001000000010300000001000000720000003B586DB1290C51411440CCB577245541B864AC001F0C51415376298F80245541123731531E0C51411ECC503381245541A387185C1E0C514160AFDE368124554191EDB76F1E0C514142FEB33E812455419A230C7A1E0C5141928BD34281245541DE9F88F91E0C5141D2D1B7758124554152B81E851F0C5141D7A370AD812455412AC97E0B220C51411BDCDDC7832455413D0AD733230C5141EC51B8BE84245541D7A3700D220C51410AD7A3D087245541AE47E16A1B0C51419A9999D98B245541333333A31F0C5141CDCCCCEC94245541666666F6210C5141C3F528EC99245541AE47E16A290C51413D0AD7F3A9245541EC51B8BE2A0C5141000000B0AC245541E17A14FE300C51411F85EB01BA24554114AE4701260C51419A999999BC2455419A999939230C51413D0AD7F3B6245541333333E31D0C5141F6285CDFAC245541B81E853B1C0C5141D7A370DDA9245541ADA1F1B41B0C514181FFEF00AA2455415C8FC235FB0B5141AE47E1DAB0245541C9EFF3FEF90B51413A20A7D1AF245541B01056EDF60B5141861C784BB52455419C637412F10B5141A02C9CD6C0245541FD5559FBED0B51411B3DA90BC724554165C63618F00B51417E5A002AC824554174B9C54FF00B51412D56853CC8245541707E0251F00B51410BDA1148C8245541EDE527C5F00B5141D5108F85C824554156F24EA9F00B5141B2F77F3ECA2455418052CDA9F00B5141ED3FCC84CB245541E37214AAF00B5141DF186487CB2455411F8E4528F10B5141097CB04BCC2455419BFD22A4F20B5141D53F6B8ECC24554121509BF0F30B5141BAF2738FCD245541B2C47444F40B51415E3196C4CD2455419A9999E9F60B514148E17A64CD245541A4703DFAF90B51415C8FC245CD24554129F0374FFE0B5141BE5AA8E7CC245541543C8F75000C514141C7B7B1CC2455413978E2D4010C51413CD1D171CC245541CC8E24CF030C51414AE14E05CC245541479F127C040C51417B9368DDCB2455410AD7A3E0070C514185EB5108CB245541EC51B8EE080C51413D0AD7C3CA2455413D0AD7330A0C51419A999999CA2455417B14AE870C0C514114AE47B1CA245541A4703D3A0F0C514133333393CA24554114AE47D1110C5141D7A3709DCA24554114AE47F1150C5141F6285C6FCA245541AE47E1CA170C51411F85EB51CA245541D7A370CD190C514148E17A34CA245541EB76D3631A0C51415148178BC9245541C516DDB81B0C514101EBCD21C92455410D0B0BC41B0C51412F383A15C92455414F7AE1B41C0C5141B82400D4C8245541FA9ECBBC1D0C514113128682C8245541081B4136200C5141469CCADFC72455413319AFB3220C5141A1CCD06CC7245541250F5D26250C5141EA0262EEC6245541AC638B6A260C51419FE06A75C6245541182F4E27280C51413BC8C8DCC52455415D4A40D3290C51416EBFBC52C52455410FEF70EB2A0C51417B7A95DAC4245541AE12076A2C0C51410E1F8536C4245541D097034F2E0C5141792E63B9C3245541BB9FAEA6300C5141C20CF450C32455410333B45A320C51416F56920FC32455416A27F54A350C5141536A6552C22455412CEA3853360C5141B84F7521C2245541AC80AFA4370C51417733A1E2C12455415AB1A8BE380C514128141AAEC1245541CBE5947D390C5141B11A898AC12455410AD7A3203A0C5141C3F5286CC12455418AAF768E3A0C5141BB294615C3245541063557DF3B0C5141683A623FC3245541CE77C7873C0C5141257DD2E7C3245541D5FC5830400C51419CEEFCF8C42455413D65F5B3400C5141AA8841DEC4245541BE40BBE2410C5141D495F6DFC3245541E17A143E450C5141713D0AE7C224554180F8165B480C51410420EC45C32455417622FDA4490C5141FFD4A904C4245541270EEB514A0C514162DEF941C4245541D8654AF64A0C5141BDBD9E4EC4245541049BD3B94B0C5141AC4BA95DC424554108A62F0B4C0C5141F3F8F55BC4245541E83B31554C0C514131A76622C42455412DF398214D0C5141AFB16B83C3245541A76066F74D0C514156080EC1C22455417CA5A2EA4E0C5141C83409A2C124554136798864500C5141B1D614FAC0245541E4337892520C5141DB822D70C12455418C1D01E0540C514134A465C4C1245541D38FE1D3550C5141344001EFC024554108A3E130560C5141652FA19DC02455415384089C570C5141D1754084BE24554101272E395A0C514107E5C970BD245541FA4A28E2590C5141FDAB9FDCBC2455417B14AED7510C514133333343AF2455415C8FC285510C5141C3F528BCAE245541A4703D2A4D0C5141CDCCCC0CA7245541C3F528CC4C0C514166666666A6245541C3F528BC420C51415C8FC2A594245541B81E857B3E0C514185EB51D88C2455419BD15CD33A0C5141EAC4013A862455413C523116320C5141902447CE77245541F23B69E5310C51415B05107E772455419A999959300C5141333333F374245541445053BD2D0C5141EAE52D11762455418FC2F5482B0C5141E17A141E772455413B586DB1290C51411440CCB577245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548701 - 382182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000200000001030000000100000010000000A4703D2A4D0C5141CDCCCC0CA72455415C8FC285510C5141C3F528BCAE2455417B14AED7510C514133333343AF24554185EB51085A0C5141CDCCCC1CBD245541713D0AE75B0C51418FC2F508BC245541F6285CFF610C51417B14AE77B924554185EB5198640C514166666646B92455410AD7A300670C5141EC51B84EB924554114AE47016C0C51410AD7A3F0B52455415C8FC2F56D0C5141295C8F42B5245541CDCCCCBC690C5141713D0A57AC245541D7A3700D660C5141000000B0A42455418FC2F568650C51418FC2F578A324554166666686620C514148E17A749D245541713D0AD75E0C51419A9999F995245541A4703D2A4D0C5141CDCCCC0CA7245541010300000001000000140000007B14AE073C0C5141A4703DFA6B245541D7A3706D380C5141F6285C2F6F245541C3F5287C340C514100000040722455419A999959300C5141333333F37424554114AE47D1320C51411F85EB017924554148E17AB4360C51415C8FC2557F2455418FC2F5383A0C5141295C8F2285245541B81E857B3E0C514185EB51D88C245541C3F528BC420C51415C8FC2A594245541C3F528CC4C0C514166666666A62455415C8FC2855E0C514152B81E5595245541EC51B88E5D0C514100000060932455419A9999195B0C514114AE47418E2455410AD7A340570C514114AE47B181245541CDCCCC3C4F0C514114AE47F17124554148E17A444D0C5141333333D36C245541333333934A0C514185EB512869245541B81E851B480C514114AE471166245541A4703DCA450C514185EB51F8622455417B14AE073C0C5141A4703DFA6B245541
+</a>
+
+<b>
+010600000001000000010300000001000000720000003B586DB1290C51411440CCB577245541B864AC001F0C51415376298F80245541123731531E0C51411ECC503381245541A387185C1E0C514160AFDE368124554191EDB76F1E0C514142FEB33E812455419A230C7A1E0C5141928BD34281245541DE9F88F91E0C5141D2D1B7758124554152B81E851F0C5141D7A370AD812455412AC97E0B220C51411BDCDDC7832455413D0AD733230C5141EC51B8BE84245541D7A3700D220C51410AD7A3D087245541AE47E16A1B0C51419A9999D98B245541333333A31F0C5141CDCCCCEC94245541666666F6210C5141C3F528EC99245541AE47E16A290C51413D0AD7F3A9245541EC51B8BE2A0C5141000000B0AC245541E17A14FE300C51411F85EB01BA24554114AE4701260C51419A999999BC2455419A999939230C51413D0AD7F3B6245541333333E31D0C5141F6285CDFAC245541B81E853B1C0C5141D7A370DDA9245541ADA1F1B41B0C514181FFEF00AA2455415C8FC235FB0B5141AE47E1DAB0245541C9EFF3FEF90B51413A20A7D1AF245541B01056EDF60B5141861C784BB52455419C637412F10B5141A02C9CD6C0245541FD5559FBED0B51411B3DA90BC724554165C63618F00B51417E5A002AC824554174B9C54FF00B51412D56853CC8245541707E0251F00B51410BDA1148C8245541EDE527C5F00B5141D5108F85C824554156F24EA9F00B5141B2F77F3ECA2455418052CDA9F00B5141ED3FCC84CB245541E37214AAF00B5141DF186487CB2455411F8E4528F10B5141097CB04BCC2455419BFD22A4F20B5141D53F6B8ECC24554121509BF0F30B5141BAF2738FCD245541B2C47444F40B51415E3196C4CD2455419A9999E9F60B514148E17A64CD245541A4703DFAF90B51415C8FC245CD24554129F0374FFE0B5141BE5AA8E7CC245541543C8F75000C514141C7B7B1CC2455413978E2D4010C51413CD1D171CC245541CC8E24CF030C51414AE14E05CC245541479F127C040C51417B9368DDCB2455410AD7A3E0070C514185EB5108CB245541EC51B8EE080C51413D0AD7C3CA2455413D0AD7330A0C51419A999999CA2455417B14AE870C0C514114AE47B1CA245541A4703D3A0F0C514133333393CA24554114AE47D1110C5141D7A3709DCA24554114AE47F1150C5141F6285C6FCA245541AE47E1CA170C51411F85EB51CA245541D7A370CD190C514148E17A34CA245541EB76D3631A0C51415148178BC9245541C516DDB81B0C514101EBCD21C92455410D0B0BC41B0C51412F383A15C92455414F7AE1B41C0C5141B82400D4C8245541FA9ECBBC1D0C514113128682C8245541081B4136200C5141469CCADFC72455413319AFB3220C5141A1CCD06CC7245541250F5D26250C5141EA0262EEC6245541AC638B6A260C51419FE06A75C6245541182F4E27280C51413BC8C8DCC52455415D4A40D3290C51416EBFBC52C52455410FEF70EB2A0C51417B7A95DAC4245541AE12076A2C0C51410E1F8536C4245541D097034F2E0C5141792E63B9C3245541BB9FAEA6300C5141C20CF450C32455410333B45A320C51416F56920FC32455416A27F54A350C5141536A6552C22455412CEA3853360C5141B84F7521C2245541AC80AFA4370C51417733A1E2C12455415AB1A8BE380C514128141AAEC1245541CBE5947D390C5141B11A898AC12455410AD7A3203A0C5141C3F5286CC12455418AAF768E3A0C5141BB294615C3245541063557DF3B0C5141683A623FC3245541CE77C7873C0C5141257DD2E7C3245541D5FC5830400C51419CEEFCF8C42455413D65F5B3400C5141AA8841DEC4245541BE40BBE2410C5141D495F6DFC3245541E17A143E450C5141713D0AE7C224554180F8165B480C51410420EC45C32455417622FDA4490C5141FFD4A904C4245541270EEB514A0C514162DEF941C4245541D8654AF64A0C5141BDBD9E4EC4245541049BD3B94B0C5141AC4BA95DC424554108A62F0B4C0C5141F3F8F55BC4245541E83B31554C0C514131A76622C42455412DF398214D0C5141AFB16B83C3245541A76066F74D0C514156080EC1C22455417CA5A2EA4E0C5141C83409A2C124554136798864500C5141B1D614FAC0245541E4337892520C5141DB822D70C12455418C1D01E0540C514134A465C4C1245541D38FE1D3550C5141344001EFC024554108A3E130560C5141652FA19DC02455415384089C570C5141D1754084BE24554101272E395A0C514107E5C970BD245541FA4A28E2590C5141FDAB9FDCBC2455417B14AED7510C514133333343AF2455415C8FC285510C5141C3F528BCAE245541A4703D2A4D0C5141CDCCCC0CA7245541C3F528CC4C0C514166666666A6245541C3F528BC420C51415C8FC2A594245541B81E857B3E0C514185EB51D88C2455419BD15CD33A0C5141EAC4013A862455413C523116320C5141902447CE77245541F23B69E5310C51415B05107E772455419A999959300C5141333333F374245541445053BD2D0C5141EAE52D11762455418FC2F5482B0C5141E17A141E772455413B586DB1290C51411440CCB577245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>551868 - 1470839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F508E8F65041333333639D215541713D0AF7E1F65041000000E0982155418FC2F518DDF6504114AE47E19F215541000000A0D6F65041295C8FB2AA2155413D0AD7F3CFF650413D0AD753B8215541295C8FC2D0F65041D7A3707DB82155415C8FC235D5F650417B14AE87B8215541713D0AD7DDF65041C3F5280CBD2155413D0AD773EBF65041E17A145EC3215541713D0A77F2F65041D7A3703DC621554148E17AF402F75041E17A143ECB215541713D0A3707F7504152B81E65CB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D42155418FC2F57816F75041A4703D9AD8215541333333831EF75041713D0A47DD215541E17A147E20F75041D7A370FDDD215541E17A14BE20F750415C8FC2A5DB215541295C8F821FF75041000000C0DA215541C3F528CC1EF75041AE47E13ADA2155411F85EB011CF750410AD7A390D7215541666666B619F75041C3F5284CD3215541A4703DBA18F750417B14AED7CD2155419A9999D918F75041CDCCCCACC8215541000000E019F750415C8FC2E5C221554152B81E951CF7504152B81E45BB215541D7A3705D0DF7504166666616BB21554148E17A6406F75041C3F5289CB92155410AD7A3D0F8F65041C3F5285CB4215541713D0AD7F1F65041333333A3B52155417B14AE77ECF650418FC2F5D8B221554100000090E6F65041A4703DDAB72155410AD7A390D8F65041C3F5289CB8215541295C8F22DAF6504100000060B52155413D0AD7B3DDF650415C8FC285B0215541AE47E12AE4F650411F85EB21AA2155415C8FC205E9F650419A999919A72155411F85EBB1EFF65041B81E851BA42155410AD7A340E8F650419A9999299E2155418FC2F508E8F65041333333639D215541
+</a>
+
+<b>
+010600000001000000010300000001000000340000003D0AD7F3CFF650413D0AD753B821554123D55842D5F65041D3175683B8215541778BD98FD7F65041E6BEDBD5B9215541AD115457E8F6504147F98CFFC12155414BA45E94F0F650410724E852C52155419EFBD6D8F2F65041F546183BC6215541AF22AEF0FEF65041EC2A32EFC9215541A706C8A402F7504196566E11CB2155414DB5B82D07F7504190B7D35ECB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D42155418FC2F57816F75041A4703D9AD8215541333333831EF75041713D0A47DD215541E17A147E20F75041D7A370FDDD215541E17A14BE20F750415C8FC2A5DB215541295C8F821FF75041000000C0DA2155411969CB151DF75041E6932798D8215541AB9240C71BF7504193738C23D7215541C9F9FAF71AF7504116A021A2D52155412556AF3419F75041E8E1C97DD0215541E89B8AD018F7504119DD2F53CE215541749DB6C418F750415E44E01DCC21554175E3D8D418F7504112294A75C9215541117FB23B19F75041E0D0DD83C6215541DA70C5D619F750419253C719C321554152B81E951CF7504152B81E45BB215541556C3A9F14F750416A16AE2CBB215541623DA0490EF75041B0863B19BB215541F18EE0E609F75041F4AB885ABA21554182901BE105F75041CEC45C69B92155411370DC0F04F75041734477B5B82155418B95754900F750411BC5C93FB7215541490B7D27FCF650419F18B4A6B5215541CC11EFD8F8F6504182F25D5FB4215541880D8CD5F4F6504131A2CF16B52155414CDAB90FF2F650419C56D198B52155415AFF258AECF6504160058DE2B22155410C3A5233E8F650413732D476B62155416D1D8863E6F65041E07FA5DCB7215541325BAD39DEF65041EC23BE4DB82155418207A726D8F65041D6F11D6DB9215541DCBF21ECD8F6504150706FCBB7215541BEAEED62DAF650417B3F7208B5215541C5E04FD7DDF650417211B362B02155412A92054DE4F65041B236980CAA215541BD61DD9AEFF650414C20DC25A42155410AD7A340E8F650419A9999299E2155418FC2F508E8F65041333333639D215541713D0AF7E1F65041000000E0982155418FC2F518DDF6504114AE47E19F215541000000A0D6F65041295C8FB2AA2155413D0AD7F3CFF650413D0AD753B8215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>551868 - 3572536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F508E8F65041333333639D215541713D0AF7E1F65041000000E0982155418FC2F518DDF6504114AE47E19F215541000000A0D6F65041295C8FB2AA2155413D0AD7F3CFF650413D0AD753B8215541295C8FC2D0F65041D7A3707DB82155415C8FC235D5F650417B14AE87B8215541713D0AD7DDF65041C3F5280CBD2155413D0AD773EBF65041E17A145EC3215541713D0A77F2F65041D7A3703DC621554148E17AF402F75041E17A143ECB215541713D0A3707F7504152B81E65CB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D42155418FC2F57816F75041A4703D9AD8215541333333831EF75041713D0A47DD215541E17A147E20F75041D7A370FDDD215541E17A14BE20F750415C8FC2A5DB215541295C8F821FF75041000000C0DA215541C3F528CC1EF75041AE47E13ADA2155411F85EB011CF750410AD7A390D7215541666666B619F75041C3F5284CD3215541A4703DBA18F750417B14AED7CD2155419A9999D918F75041CDCCCCACC8215541000000E019F750415C8FC2E5C221554152B81E951CF7504152B81E45BB215541D7A3705D0DF7504166666616BB21554148E17A6406F75041C3F5289CB92155410AD7A3D0F8F65041C3F5285CB4215541713D0AD7F1F65041333333A3B52155417B14AE77ECF650418FC2F5D8B221554100000090E6F65041A4703DDAB72155410AD7A390D8F65041C3F5289CB8215541295C8F22DAF6504100000060B52155413D0AD7B3DDF650415C8FC285B0215541AE47E12AE4F650411F85EB21AA2155415C8FC205E9F650419A999919A72155411F85EBB1EFF65041B81E851BA42155410AD7A340E8F650419A9999299E2155418FC2F508E8F65041333333639D215541
+</a>
+
+<b>
+010600000001000000010300000001000000340000003D0AD7F3CFF650413D0AD753B821554123D55842D5F65041D3175683B8215541778BD98FD7F65041E6BEDBD5B9215541AD115457E8F6504147F98CFFC12155414BA45E94F0F650410724E852C52155419EFBD6D8F2F65041F546183BC6215541AF22AEF0FEF65041EC2A32EFC9215541A706C8A402F7504196566E11CB2155414DB5B82D07F7504190B7D35ECB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D42155418FC2F57816F75041A4703D9AD8215541333333831EF75041713D0A47DD215541E17A147E20F75041D7A370FDDD215541E17A14BE20F750415C8FC2A5DB215541295C8F821FF75041000000C0DA2155411969CB151DF75041E6932798D8215541AB9240C71BF7504193738C23D7215541C9F9FAF71AF7504116A021A2D52155412556AF3419F75041E8E1C97DD0215541E89B8AD018F7504119DD2F53CE215541749DB6C418F750415E44E01DCC21554175E3D8D418F7504112294A75C9215541117FB23B19F75041E0D0DD83C6215541DA70C5D619F750419253C719C321554152B81E951CF7504152B81E45BB215541556C3A9F14F750416A16AE2CBB215541623DA0490EF75041B0863B19BB215541F18EE0E609F75041F4AB885ABA21554182901BE105F75041CEC45C69B92155411370DC0F04F75041734477B5B82155418B95754900F750411BC5C93FB7215541490B7D27FCF650419F18B4A6B5215541CC11EFD8F8F6504182F25D5FB4215541880D8CD5F4F6504131A2CF16B52155414CDAB90FF2F650419C56D198B52155415AFF258AECF6504160058DE2B22155410C3A5233E8F650413732D476B62155416D1D8863E6F65041E07FA5DCB7215541325BAD39DEF65041EC23BE4DB82155418207A726D8F65041D6F11D6DB9215541DCBF21ECD8F6504150706FCBB7215541BEAEED62DAF650417B3F7208B5215541C5E04FD7DDF650417211B362B02155412A92054DE4F65041B236980CAA215541BD61DD9AEFF650414C20DC25A42155410AD7A340E8F650419A9999299E2155418FC2F508E8F65041333333639D215541713D0AF7E1F65041000000E0982155418FC2F518DDF6504114AE47E19F215541000000A0D6F65041295C8FB2AA2155413D0AD7F3CFF650413D0AD753B8215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614349 - 614351
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000F0000009A9999494BDB5041D7A3700D5F39544185EB51B84ADB5041666666E65F395441295C8F923CDB5041AE47E19A7639544148E17A442EDB5041EC51B88E8D3954415B3E44103EDB5041929F5E3B973954416A16DC183EDB504117C0492D9739544151D8AFE943DB5041067306B69A39544149816FF143DB5041D96573A99A39544152A93B6647DB504191615FC09C39544155EC722B65DB5041FB73E5966C39544162708F7C61DB50418E5222B86A39544131E7527D61DB50416220E5B66A3954413D0AD7135BDB5041713D0A7767395441CDCCCCDC51DB5041D7A3707D623954419A9999494BDB5041D7A3700D5F395441
+</a>
+
+<b>
+0106000000010000000103000000020000006200000000000040AADB504148E17A748A3954410AD7A3C0B0DB504114AE47E18539544148E17A84B5DB50416666663677395441CDCCCC8CB8DB5041EC51B87E6C39544152B81E35BADB50419A999969673954411F85EBC1BBDB50415C8FC24560395441AE47E1CABDDB5041AE47E1BA5739544114AE47D1BEDB5041295C8F6252395441333333A3BFDB504185EB51A84D39544114AE4781BCDB50413D0AD7434F3954413080EF77BADB5041103A31F94F395441ADC7C2B8B7DB5041C9CAD42C51395441D20854D5B5DB5041622DADB051395441E7B2FF99B3DB5041835B7860523954417491B832B1DB5041A489431053395441E96732F5A8DB5041A489431053395441B81E85CBA7DB5041333333B3553954411F85EB31A6DB50419A999999583954415C8FC205A4DB5041EC51B88E5C395441EC51B86EA1DB5041E17A147E61395441F6285C3F9FDB5041E17A146E6539544152B81E859EDB504114AE47C16639544152B81E159DDB5041A4703D3A693954417B14AE879CDB5041AE47E17A6A39544185EB51D89ADB5041000000906D395441CDCCCC1C99DB5041CDCCCCFC6F395441000000B096DB50419A99998972395441295C8F2292DB5041AE47E1AA763954418FC2F5F88FDB5041333333D378395441A4703D0A8FDB504152B81E457939544148E17A948CDB50418FC2F5087C39544148E17A248BDB50410AD7A3707B3954418FC2F5A889DB5041713D0A377B395441D7A3704D88DB5041295C8F027B395441C3F5283C86DB504152B81E257839544114AE47A183DB50419A999989743954417B14AE8783DB5041F6285C6F743954419A99991981DB5041F6285CEF713954415C8FC2D57EDB5041AE47E19A6F395441666666667EDB504185EB51286F395441666666867BDB5041666666266D395441F6285CCF78DB504114AE47416B395441AE47E1EA77DB5041C3F5285C6A39544148E17A5477DB504152B81EC569395441AE47E1CA75DB50419A99993968395441AE47E17A74DB5041AE47E18A673954419A99995971DB5041A4703DEA6539544185EB51E870DB5041F6285CAF653954410AD7A3C066DB5041713D0A475F39544152B81E7560DB5041E17A14AE603954419A9999495FDB5041A4703DDA5D3954418FC2F5085EDB5041A4703D8A5B395441F6285C8F59DB504152B81E055A39544148E17A9457DB50418FC2F508593954413D0AD7F350DB5041D7A370BD553954419A9999494BDB5041D7A3700D5F395441CDCCCCDC51DB5041D7A3707D623954413D0AD7135BDB5041713D0A7767395441C747FF8361DB5041A6CC10AC6A39544162708F7C61DB50418E5222B86A39544128919FF964DB50416734A1786C39544116C856F764DB5041DAD86F7C6C39544155EC722B65DB5041FB73E5966C39544196787E1D5CDB5041595DD83C7B395441081807A559DB5041F1A8F45A7F3954419809D87F53DB50416FF91B2D8939544152A93B6647DB504191615FC09C39544149816FF143DB5041D96573A99A39544151D8AFE943DB5041067306B69A3954416A16DC183EDB504117C0492D973954415B3E44103EDB5041929F5E3B9739544114AEE8FB3DDB50411FC9BA5C9739544148E17A442EDB5041EC51B88E8D395441CDCCCC8C2ADB50415C8FC28593395441666666962DDB5041C3F528CC95395441D7A370CD30DB5041B81E857B973954419A9999F94BDB5041713D0AB7A5395441000000404FDB5041295C8F42A639544152B81EC552DB504100000050A8395441666666F65ADB5041295C8F12AF395441CDCCCC9C5CDB5041E17A146EB03954411F85EB4164DB5041A4703D3AB6395441000000D065DB50413D0AD743B7395441333333536BDB5041666666F6BA39544148E17A146DDB504133333383BA39544114AE47917ADB5041AE47E1EAA439544185EB513888DB5041666666168F3954411F85EBE188DB5041713D0A078E3954415C8FC20588DB5041E17A141E8D39544148E17A7488DB50411F85EBF18B395441333333738ADB5041CDCCCC3C8E3954413333332391DB5041EC51B8AE83395441F6285C1F92DB5041B81E851B85395441295C8F2296DB50415C8FC2058A395441AE47E13A99DB5041B81E85FB8C395441EC51B84E9FDB504114AE4721923954415C8FC295A3DB50415C8FC2B58F39544100000040AADB504148E17A748A39544105000000A4703D1A65DB5041A4703D2AB3395441F6285CDF63DB50411F85EB81B43954410AD7A3C062DB5041CDCCCC9CB339544148E17AF463DB5041A4703D5AB2395441A4703D1A65DB5041A4703D2AB3395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556200 - 1553547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -39  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E17A81C150410AD7A36048F35441EC51B86E81C15041EC51B89E49F35441000000307FC15041A4703DEA4CF354417B14AEC785C15041295C8F8254F35441AE47E13A8CC15041CDCCCC7C4DF3544148E17A3493C150411F85EB2146F35441713D0A9794C15041666666A644F35441E17A14BE97C15041EC51B8DE3EF3544148E17AE499C15041C3F5280C3BF354419A9999D99BC150416666664637F35441B81E85FB97C1504185EB51D836F35441F6285C0F93C15041CDCCCC2C36F35441A4703D1A91C15041AE47E19A36F35441666666868FC1504148E17A8438F35441E17A14CE8DC150418FC2F5B83DF35441333333C38EC150417B14AEC740F35441AE47E13A8CC150413333331343F35441B81E858B86C150416666667645F35441CDCCCCAC82C15041EC51B82E47F35441AE47E17A81C150410AD7A36048F35441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000A4703DA29BC150413D0AD7DB36F354413EA4380394C1504168F90FAA3AF3544110A7695B90C15041FC1D18983EF3544154E3A50391C1504146B6F3BD3EF35441FCA9F12A92C15041250681D540F354415A643B1F91C15041105839F441F35441A69BC42890C15041355EBA5942F35441CBA145AE8FC15041B4C8765E43F354417F6ABC248EC15041BA490C7243F3544139B4C8968DC15041BC74935042F35441A69BC4D08BC150416DE7FB7943F3544139B4C86E89C1504160E5D04A44F35441759318DC86C150416891ED2C45F354412DB29DEF83C15041022B87A646F35441022B87D681C15041F2D24D7A48F35441BA490C8A81C15041FA7E6ADC49F354417368918D7FC15041643BDF874CF3544188550F5580C150410154DD3B4EF354413E63B95C81C1504140979F6B4FF354418941604D82C15041F2D24DEA4FF3544146B6F39585C150415A643B1F54F35441D9CEF7438AC1504121B072D04FF3544154E3A5938DC15041B4C876E64BF35441CDCCCC4491C1504160E5D0A247F354415EBA497494C150418B6CE74B44F3544148E17A2C97C15041448B6C273FF35441A4703DA29BC150413D0AD7DB36F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556200 - 3474378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -39  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E17A81C150410AD7A36048F35441EC51B86E81C15041EC51B89E49F35441000000307FC15041A4703DEA4CF354417B14AEC785C15041295C8F8254F35441AE47E13A8CC15041CDCCCC7C4DF3544148E17A3493C150411F85EB2146F35441713D0A9794C15041666666A644F35441E17A14BE97C15041EC51B8DE3EF3544148E17AE499C15041C3F5280C3BF354419A9999D99BC150416666664637F35441B81E85FB97C1504185EB51D836F35441F6285C0F93C15041CDCCCC2C36F35441A4703D1A91C15041AE47E19A36F35441666666868FC1504148E17A8438F35441E17A14CE8DC150418FC2F5B83DF35441333333C38EC150417B14AEC740F35441AE47E13A8CC150413333331343F35441B81E858B86C150416666667645F35441CDCCCCAC82C15041EC51B82E47F35441AE47E17A81C150410AD7A36048F35441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000A4703DA29BC150413D0AD7DB36F354413EA4380394C1504168F90FAA3AF3544110A7695B90C15041FC1D18983EF3544154E3A50391C1504146B6F3BD3EF35441FCA9F12A92C15041250681D540F354415A643B1F91C15041105839F441F35441A69BC42890C15041355EBA5942F35441CBA145AE8FC15041B4C8765E43F354417F6ABC248EC15041BA490C7243F3544139B4C8968DC15041BC74935042F35441A69BC4D08BC150416DE7FB7943F3544139B4C86E89C1504160E5D04A44F35441759318DC86C150416891ED2C45F354412DB29DEF83C15041022B87A646F35441022B87D681C15041F2D24D7A48F35441BA490C8A81C15041FA7E6ADC49F354417368918D7FC15041643BDF874CF3544188550F5580C150410154DD3B4EF354413E63B95C81C1504140979F6B4FF354418941604D82C15041F2D24DEA4FF3544146B6F39585C150415A643B1F54F35441D9CEF7438AC1504121B072D04FF3544154E3A5938DC15041B4C876E64BF35441CDCCCC4491C1504160E5D0A247F354415EBA497494C150418B6CE74B44F3544148E17A2C97C15041448B6C273FF35441A4703DA29BC150413D0AD7DB36F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557085 - 366199
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000005D0000005C8FC24572AC5041333333736DCB5441713D0A7776AC5041EC51B87E75CB5441666666A678AC5041F6285CAF79CB54411F85EB117BAC504148E17A547ECB5441295C8FB287AC50411F85EB1179CB5441666666B68FAC5041D7A3708D76CB54413D0AD7939BAC5041CDCCCC1C74CB5441CDCCCC1C9EAC5041EC51B8CE7ECB5441CDCCCC4CABAC5041000000007ECB544166666666AFAC5041000000407FCB544100000020BCAC50419A9999197DCB5441333333F3C1AC5041000000407BCB544100000070D0AC50417B14AE4774CB5441000000C0DEAC5041000000A06CCB544133333353ECAC5041333333B368CB544100000060F7AC5041000000A066CB5441295C8FA205AD5041C3F5284C65CB5441333333A306AD50411F85EBD161CB5441C3F5282C08AD504152B81EA55FCB5441333333730AAD504185EB51E85DCB5441295C8F421AAD50410AD7A3A052CB544148E17A1418AD50411F85EBD13FCB54415C8FC20518AD5041295C8F523FCB544185EB518816AD50418FC2F5E83DCB5441000000C013AD50419A9999993CCB5441A4703D9A10AD5041713D0A673ACB5441B81E858B0FAD5041333333D33ACB5441295C8FD20DAD5041A4703D1A3DCB5441C3F528EC0BAD5041E17A145E3DCB5441A4703D8A08AD5041A4703D0A3ACB5441F6285C5F06AD504148E17A2439CB5441295C8F2206AD50418FC2F5983DCB54413D0AD70305AD504148E17A643ECB544152B81E2503AD5041E17A148E3DCB54418FC2F56801AD504152B81E353ECB544133333393FDAC504152B81EE53FCB54413D0AD733FDAC504114AE478142CB5441F6285CFFFBAC5041CDCCCC9C44CB5441C3F528ECF9AC50417B14AE2745CB544185EB5118F6AC504152B81EB542CB5441F6285C2FF5AC5041666666E642CB54411F85EB91F3AC504152B81E2545CB544185EB5158F2AC5041295C8FC245CB5441F6285CAFEFAC50413D0AD77344CB544114AE4771ECAC50415C8FC23545CB5441CDCCCCCCE9AC50415C8FC27548CB5441C3F5280CE8AC504148E17A1449CB54413D0AD783E6AC50415C8FC2D547CB5441CDCCCC2CE5AC5041E17A14FE48CB5441E17A140EDFAC5041000000904BCB5441E17A149EDBAC50413D0AD7934DCB5441D7A3703DD7AC5041CDCCCC5C52CB5441C3F5283CD5AC504185EB517852CB54415C8FC2A5D5AC5041C3F528DC53CB54419A9999B9D7AC50411F85EBC156CB5441E17A14DED6AC5041A4703D6A58CB54411F85EB11D5AC5041F6285CBF58CB54417B14AE67D3AC50415C8FC2F559CB5441E17A141ED3AC5041713D0AE75CCB544152B81E95D5AC50415C8FC2155FCB544148E17A44D5AC50413D0AD78360CB54413D0AD753CEAC5041C3F5285C63CB544100000020CDAC5041AE47E18A62CB54417B14AED7CDAC5041B81E85EB5ECB54418FC2F578CEAC50417B14AE775DCB544152B81EC5CCAC504114AE47F15CCB54418FC2F518C8AC5041CDCCCCCC5ACB5441D7A370FDC4AC5041D7A3707D5ACB54419A9999F9C3AC5041B81E859B5CCB5441B81E856BC5AC5041666666965FCB5441C3F528ECC1AC50411F85EB7163CB5441F6285CBFBFAC5041666666A665CB54419A999929BBAC5041713D0A7765CB5441B81E85DBB5AC5041B81E851B64CB5441295C8FC2AFAC5041EC51B8BE63CB54413D0AD723ABAC5041713D0A7764CB54415C8FC245A5AC5041A4703DEA66CB5441F6285CEFA2AC50419A99998967CB54411F85EB319DAC5041EC51B87E68CB5441C3F5281C9AAC50416666662669CB54413333336398AC50413D0AD70364CB5441E17A14AE96AC504185EB512863CB54415C8FC26595AC50410000002065CB544185EB51B893AC50411F85EB2166CB54410AD7A38092AC5041E17A143E65CB5441F6285C8F90AC5041666666D662CB5441CDCCCCAC8EAC504114AE478160CB54411F85EB818BAC50418FC2F58861CB5441CDCCCC4C86AC504148E17A6465CB5441C3F5288C84AC50410AD7A32068CB544148E17AC481AC504114AE47A169CB5441E17A146E7DAC5041333333A368CB54415C8FC24572AC5041333333736DCB5441
+</a>
+
+<b>
+010600000001000000010300000001000000860000000DD6473397AC504139513D0375CB54413D0AD7939BAC5041CDCCCC1C74CB5441280BBA969BAC5041A79BFA2874CB5441E2BBBF969BAC5041719D122974CB54419BF67FA39BAC504162CF472174CB544159D48E999BAC50414C09F7F773CB5441487E2DCC9AAC5041A11B31EE6ECB54419D5EF13C9AAC5041708E44786BCB54412E447F0AC0AC50410C84D1E967CB544191FDA290CFAC5041468F698665CB544128CA9079D7AC50415FBE2D5F61CB544196CE8903DAAC5041BF35648353CB5441DD65F94ADEAC5041609A3B2150CB5441349E8CE4EFAC50414264C90F4ACB5441F73B355209AD50415D501D8441CB5441EFC1B33718AD504115C5CA0141CB544186E07A1418AD50411485EBD13FCB54415BB4FD0918AD50412CEA2A773FCB54415C8FC20518AD5041295C8F523FCB544185EB518816AD50418FC2F5E83DCB544141EA055C15AD50418390945B3DCB54413FFFFFBF13AD5041E59999993CCB5441E4703D9A10AD5041723E0A673ACB5441F2A583BA0FAD504149AD6CC03ACB5441B81E858B0FAD5041333333D33ACB5441295C8FD20DAD5041A4703D1A3DCB5441C3F528EC0BAD5041E17A145E3DCB5441A4703D8A08AD5041A4703D0A3ACB5441D94D7E4508AD5041A623C6ED39CB5441F6285C5F06AD504193E17A2439CB5441F525AA5806AD5041B42112A239CB5441BB36704E06AD50412C12E5613ACB544160E2B24806AD504196998ECD3ACB54416B5D8F2206AD5041F0C2F5983DCB544184BECD5005AD5041757AD92D3ECB54413D0AD70305AD504148E17A643ECB54411E78EDA203AD504132A06CC63DCB544147B81E2503AD5041787B148E3DCB5441AEC1F56801AD5041D3B81E353ECB54413BE6176B00AD504113F4D3A43ECB544133333393FDAC504152B81EE53FCB54413D0AD733FDAC504114AE478142CB5441F6285CFFFBAC5041CDCCCC9C44CB5441C3F528ECF9AC50417B14AE2745CB544185EB5118F6AC504152B81EB542CB5441F6285C2FF5AC5041666666E642CB5441C5134993F4AC50411AAD5BBF43CB5441D585EB91F3AC50411CB81E2545CB54414CBFAB76F3AC5041BFD7CC3245CB544185EB5158F2AC5041295C8FC245CB544115BA9EBBF1AC50417315897545CB5441A0285CAFEFAC50419E0AD77344CB5441FFAD4771ECAC50414890C23545CB544139C279B8EBAC5041FED60C1946CB5441CDCCCCCCE9AC50415C8FC27548CB54410511CE4CE8AC5041CA219CFD48CB5441D8F5280CE8AC50417DE17A1449CB54413D0AD783E6AC50415C8FC2D547CB5441CDCCCC2CE5AC5041E17A14FE48CB5441F77A140EDFAC50416B0000904BCB544134ECDC15DEAC5041F61380214CCB5441E17A149EDBAC50413D0AD7934DCB544144FC3FFFD8AC5041FD0D1E7150CB54414DA4703DD7AC504143CDCC5C52CB5441C6F5283CD5AC504190EB517852CB54415C8FC2A5D5AC5041C3F528DC53CB54419A9999B9D7AC50411F85EBC156CB544138B2FC56D7AC50415585888057CB5441E17A14DED6AC5041A4703D6A58CB54411F85EB11D5AC5041F6285CBF58CB54417B14AE67D3AC50415C8FC2F559CB54412704BE46D3AC504160E6DE465BCB54414E7C141ED3AC50419C3D0AE75CCB544133B91E95D5AC5041A78FC2155FCB54412D19366BD5AC5041AE1803D45FCB544148E17A44D5AC50413D0AD78360CB5441072F5305D5AC504116DDBA9D60CB54413D0AD753CEAC5041C3F5285C63CB544100000020CDAC5041AE47E18A62CB5441E312AED7CDAC5041D71D85EB5ECB54415A6F8A5FCEAC5041511449B25DCB54418FC2F578CEAC50417B14AE775DCB5441642ACAE0CCAC50419F00D0F95CCB5441E5B61EC5CCAC5041BFAD47F15CCB5441DCC3F518C8AC50417ACECCCC5ACB544158A470FDC4AC504138A4707D5ACB5441E3EC0A06C4AC50415CDF8F815CCB54419A9999F9C3AC5041B81E859B5CCB54419E0BA3BFC4AC50411CA3ED335ECB5441B81E856BC5AC5041666666965FCB5441C3F528ECC1AC50411F85EB7163CB5441F6285CBFBFAC5041666666A665CB54419A999929BBAC5041713D0A7765CB5441632CCDABB8AC50416F53D5D364CB5441A31E85DBB5AC5041AF1F851B64CB5441008968EEAFAC5041D6A953C163CB54418624CCD8AFAC504166C20AC063CB5441838920C7AFAC50410CD4FDBE63CB5441745C8FC2AFAC5041F651B8BE63CB5441680AD723ABAC50417B3D0A7764CB5441BD8FC245A5AC5041FA703DEA66CB544155D44952A4AC5041D936142B67CB5441F6285CEFA2AC50419A99998967CB54418AA8A70BA1AC50413AA949DA67CB54414B86EB319DAC50412353B87E68CB54418295BF739BAC5041F63A73DD68CB5441C3F5281C9AAC50416666662669CB54413333336398AC50413D0AD70364CB5441192A2F5E98AC5041C533520164CB5441567A14AE96AC5041C7EC512863CB54415E90C26595AC5041CC00002065CB544166C6F69C94AC504107EA989865CB544185EB51B893AC50411F85EB2166CB54410AD7A38092AC5041E17A143E65CB5441EB285C8F90AC50417C6666D662CB544177CCCCAC8EAC5041A0AE478160CB54414A34D49A8DAC504160875EDA60CB54411F85EB818BAC50418FC2F58861CB5441CDCCCC4C86AC504148E17A6465CB5441C3F5288C84AC50410AD7A32068CB5441546BF96882AC5041FD4B604869CB544188E17AC481AC5041A0AE47A169CB54416550D2337EAC5041C76872D068CB5441E17A146E7DAC5041333333A368CB5441DE75348277AC5041719C08316BCB5441928FC24572AC5041943333736DCB5441713D0A7776AC5041EC51B87E75CB54412FD7269477AC5041E8BA74A177CB5441466666A678AC5041E9275CAF79CB5441AA85EB117BAC5041C7E07A547ECB54410A5D8FB287AC5041A984EB1179CB54410E9D439C89AC5041B0C91A7878CB5441666666B68FAC5041D7A3708D76CB54410DD6473397AC504139513D0375CB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 242061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441B81E85BB16F0504185EB516857B85441A4703DEAF5EF5041A4703D7A6AB854415C8FC2C5ECEF5041CDCCCC4C71B854417B14AEE7E2EF50410AD7A31076B854417B14AE67D3EF50419A9999B97BB854410AD7A330C0EF5041E17A144E7DB854417B14AE57B1EF50419A9999C97AB854413D0AD753B0EF504114AE47317CB85441000000A0B7EF5041CDCCCC8C81B85441D7A370CDB9EF50416666669684B8544100000040BAEF50415C8FC24588B85441A4703DFABBEF50417B14AE2788B85441AE47E1AAC6EF5041B81E850B85B854413D0AD7E3D3EF50413333334387B854410AD7A370DCEF5041AE47E1CA86B85441F6285C5FE5EF5041D7A3706D84B85441F6285C2FE2EF504148E17A347CB85441E17A140EE4EF50417B14AE677BB854418FC2F5A8EAEF50413333339378B85441D7A3707DF7EF5041C3F5282C73B85441E17A146E05F05041A4703DAA6CB85441333333C307F050419A9999396FB85441F6285C6F10F0504185EB51886CB85441295C8FD211F050413D0AD7A36FB85441CDCCCC9C1DF05041EC51B8FE6AB8544148E17A741BF0504148E17A8465B85441CDCCCC9C24F05041713D0AB762B854415C8FC26529F050411F85EB4168B854410103000000010000000C0000003D0AD7F3A3EF5041EC51B8DE8FB85441F6285C8FA9EF50415C8FC2258DB85441295C8F22B7EF50418FC2F5088AB854411F85EB11B9EF504148E17AE487B854413D0AD7A3B8EF50411F85EB0185B854413D0AD7C3B6EF504148E17A6482B85441B81E85ABACEF5041295C8FF27AB854419A999949A6EF50419A9999697FB85441000000B09CEF50418FC2F5288BB854415C8FC2F59BEF50411F85EB718CB854410AD7A3B0A4EF5041C3F528FC8BB854413D0AD7F3A3EF5041EC51B8DE8FB8544101030000000100000009000000295C8F229BEF50417B14AEE789B8544152B81E25A6EF5041000000E07AB85441295C8FF2A9EF50419A99997976B85441C3F528ACA9EF5041B81E85FB72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854419A9999E98EEF50417B14AE2781B8544185EB51E898EF504114AE47518AB85441295C8F229BEF50417B14AEE789B854410103000000010000002F0000008FC2F598EDEF5041713D0AE7D1B85441E17A148EDCEF5041666666E6D2B8544152B81EF5DCEF504185EB51E8CBB85441E17A14FEEEEF504114AE47E1CAB85441E17A149E05F0504114AE4741C6B85441EC51B81E1AF050417B14AEF7C3B85441C3F528AC21F0504148E17AD4C2B854415C8FC29504F050415C8FC275C0B8544166666606F8EF50417B14AEB7BFB85441C3F528FCF6EF50419A9999F9BEB85441E17A149ED9EF50415C8FC2B5BCB85441000000D0D0EF5041E17A146EBDB85441B81E855BC6EF504185EB51E8C2B85441EC51B8AEBFEF5041713D0AD7CCB85441F6285C1FBDEF5041B81E85EBCCB85441B81E85CBBDEF5041713D0AD7D0B854410AD7A370C2EF504152B81E35D7B854411F85EB71C4EF5041AE47E12AD9B854411F85EB61C9EF504133333383DCB8544148E17A44D8EF504114AE4731E4B854419A999979E5EF504114AE4701EBB8544100000080F5EF504114AE47F1F1B85441713D0AF7F5EF5041CDCCCCBCF0B854410AD7A3D0F3EF5041713D0AD7EEB854418FC2F578EFEF504152B81E35EEB8544133333363EFEF50417B14AE97EBB854419A9999D9F6EF50410AD7A3D0ECB854411F85EB21FDEF504133333333F1B85441000000A0FCEF5041CDCCCC2CF6B854418FC2F5B8FDEF5041CDCCCCFCF7B85441666666F603F05041F6285CEFF6B854413333336308F05041A4703DBAFAB8544114AE47F105F05041EC51B8BEFFB85441EC51B83E03F050418FC2F588FFB8544152B81E9503F05041D7A3706DFDB854410AD7A31002F0504148E17A64FAB854410AD7A330FDEF50413D0AD763F9B8544185EB5138FEEF5041AE47E15AFBB85441B81E858B02F050415C8FC2350CB954415C8FC2C503F05041B81E859B0FB95441B81E85EB05F05041F6285C7F12B9544185EB51A815F05041713D0A9706B95441A4703DAA0BF05041EC51B80EF8B85441AE47E1CAFFEF5041000000E0ECB85441D7A370FDF7EF504166666636E7B85441E17A141EEFEF50417B14AEB7E2B854418FC2F598EDEF5041713D0AE7D1B854410103000000010000003100000014AE47E157F050415C8FC2E547B854410AD7A36058F05041AE47E1CA4AB854413D0AD72359F05041000000A058B854417B14AE6755F05041D7A370FD69B854418FC2F5C850F050411F85EB8177B85441B81E856B4EF05041C3F528FC76B85441CDCCCC4C4DF05041B81E85AB7AB854411F85EB5141F05041AE47E12A8CB8544114AE47C13AF05041F6285CFF93B854417B14AED736F05041B81E855B98B85441A4703D9A2DF0504100000050A4B85441295C8F122BF05041AE47E12AA6B85441F6285C2F28F05041A4703D7AA7B854417B14AE671CF050419A999959ABB854411F85EBD1F0EF504100000080B2B85441295C8FC2D9EF504152B81EF5B6B85441AE47E13AD0EF50413D0AD7E3BAB85441EC51B8AED9EF5041EC51B81EBAB85441295C8F52F7EF50410AD7A390BBB854415C8FC29504F0504152B81E05BDB8544152B81EE521F0504114AE4761BFB85441A4703DDA32F0504166666676C0B854413D0AD7F33FF05041D7A370EDC1B854417B14AEB74AF05041AE47E1EAC1B854410000003052F05041D7A3703DBCB85441295C8F0251F05041A4703D1AB9B8544185EB51084DF050410AD7A3D0B2B85441666666F64CF05041B81E85FBADB854417B14AE674FF05041F6285CCFA9B85441000000C058F05041AE47E11A9CB8544148E17AB45BF050415C8FC27598B85441B81E85DB67F05041333333338FB85441666666166FF05041B81E85AB8BB85441CDCCCCAC7AF0504185EB51B888B8544152B81E057FF0504148E17A0487B85441B81E85DB8BF05041EC51B87E7EB854410AD7A3808EF05041000000407BB854419A9999998DF0504148E17A3477B85441D7A3702D7BF05041D7A370FD7AB8544152B81EE565F05041C3F5287C7BB85441F6285C3F53F0504185EB513876B85441E17A14CE56F0504114AE47516CB85441713D0AD759F0504152B81ED55FB8544148E17AD45AF050413333334356B85441B81E857B55F05041000000D038B854419A99991950F05041CDCCCC6C3CB8544185EB51F84CF05041E17A149E3EB854413D0AD7D353F05041F6285C4F48B8544114AE47E157F050415C8FC2E547B8544101030000000100000017000000333333F3D9EF5041D7A370DD8DB854413D0AD713D7EF5041713D0A1788B85441713D0AD7D3EF504148E17A4488B85441333333B3C6EF5041295C8F0286B854413D0AD743BCEF5041D7A3701D89B85441A4703DCAB7EF50418FC2F5188BB8544148E17A14AAEF5041000000908EB854419A9999999FEF5041F6285C9F93B85441713D0A179BEF50415C8FC28599B8544152B81E2590EF5041A4703DAAA9B854413333337392EF5041E17A14EEAAB854413D0AD73399EF504114AE47A1AEB85441C3F5288C99EF50411F85EBD1AEB85441EC51B84E9EEF504152B81E65ABB8544148E17AF4ADEF50413D0AD783A0B854418FC2F5F8B2EF504185EB51E89EB854418FC2F558B8EF504148E17AD49BB854411F85EB01BAEF5041CDCCCCEC9BB85441D7A370EDBBEF5041E17A14BE9AB85441C3F5289CBCEF50419A99997998B85441C3F5284CC8EF5041CDCCCCDC92B85441C3F5287CCEEF50410000003092B85441333333F3D9EF5041D7A370DD8DB854410103000000020000001200000066666666DAEF5041CDCCCC9C65B8544166666676DFEF504114AE47D162B8544114AE4771EFEF5041B81E85FB55B85441B81E850BF0EF504148E17A0454B854411F85EBB1EBEF504152B81E9545B854415C8FC285E6EF504148E17A8434B854415C8FC2C5E3EF5041713D0A8738B8544114AE47A1DEEF5041A4703D1A2EB85441B81E85DBD8EF5041EC51B80E2FB85441E17A149ED9EF50413333336334B854415C8FC2C5D4EF50413333333337B85441E17A142ED2EF5041A4703D2A30B85441D7A3703DCFEF5041713D0AA730B85441E17A148ED5EF50413333330344B854415C8FC2C5D4EF5041B81E850B46B854419A9999C9D5EF5041333333934AB854411F85EB81D7EF5041B81E85AB55B8544166666666DAEF5041CDCCCC9C65B854410B0000001F85EB01DAEF5041713D0A0736B854415C8FC245DCEF5041F6285C3F3AB85441E17A14FEDDEF5041713D0A2739B854411F85EB61E3EF5041F6285C6F3CB854415C8FC265E4EF5041F6285CDF3FB85441E17A14EEE3EF50413333335344B854419A999919E0EF5041B81E85AB46B8544133333303E0EF50410AD7A3E049B854411F85EBE1DBEF5041713D0AC743B854419A999959D7EF5041F6285CBF37B854411F85EB01DAEF5041713D0A0736B854410103000000010000001A00000085EB5138E5EF5041333333032DB85441666666A6ECEF5041295C8F5245B85441E17A148EF1EF5041B81E858B55B8544100000000E0EF5041A4703DAA63B8544148E17A24D2EF50411F85EB516BB85441CDCCCC3CCBEF5041333333636DB8544148E17AE4C6EF5041AE47E1BA6FB85441A4703D5AC3EF5041C3F5284C73B85441CDCCCCFCBEEF50417B14AE7775B8544148E17AF4AEEF504185EB515879B85441D7A3703DC0EF5041D7A3704D7CB854411F85EB31D3EF504114AE47C17AB85441AE47E18AE2EF5041295C8F2275B854413D0AD7F3EBEF504152B81E0570B85441E17A145EF5EF5041333333B369B85441CDCCCC5C12F05041EC51B8CE58B8544148E17A8413F050415C8FC2E556B854413333338311F05041A4703D5A54B85441295C8F120AF050419A9999893CB85441F6285C6FFEEF50415C8FC2052BB85441F6285C2FFBEF50419A9999E927B8544185EB51F8F6EF5041D7A3705D26B85441D7A3709DF1EF50415C8FC24526B85441A4703DEAEBEF50418FC2F53829B85441295C8F12E6EF5041B81E856B2BB8544185EB5138E5EF5041333333032DB8544101030000000100000005000000713D0A87C8EF5041AE47E11A61B85441A4703D0AC3EF5041EC51B8AE32B85441D7A3703DBCEF50410AD7A3D033B85441F6285C4FBBEF50413333333335B85441713D0A87C8EF5041AE47E11A61B8544101030000000100000015000000B81E85DB9CEF50417B14AE574FB85441000000909DEF5041C3F528FC50B854417B14AE07A0EF5041C3F528EC51B85441AE47E11AA2EF5041D7A370ED5AB85441AE47E11AA0EF5041000000905DB85441295C8FD2A0EF50418FC2F53865B85441333333A3A3EF504148E17A346AB854410AD7A3F0ACEF504114AE471173B85441F6285C7FB0EF5041B81E858B74B85441D7A3709DBDEF50417B14AE1772B854419A999959C1EF5041AE47E18A70B854411F85EBA1C4EF5041333333F36DB8544166666606C7EF50410AD7A3B06AB854417B14AE57C7EF5041000000A066B8544133333363C6EF504185EB519861B854410AD7A360BEEF504148E17AE446B854415C8FC2C5BCEF5041A4703D9A45B85441295C8FD2A2EF5041666666A643B85441E17A143E96EF50419A99999939B854413D0AD79391EF50418FC2F56840B85441B81E85DB9CEF50417B14AE574FB854410103000000010000000A000000E17A149ECFEF5041713D0AF759B85441F6285CBFD2EF5041666666D669B85441666666D6D5EF50411F85EB2168B854411F85EB91D1EF50413333333355B85441E17A144ECFEF5041F6285CBF46B8544100000050CAEF504185EB517831B85441AE47E1BAC8EF5041C3F528BC31B854411F85EBC1C9EF5041F6285C5F38B854411F85EB21CEEF5041B81E85BB4FB85441E17A149ECFEF5041713D0AF759B85441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008A317C24D2EF5041A114EB516BB85441ADC7F1F4D1EF5041583327606BB8544185F1CD3CCBEF5041E68634636DB85441D9A279E4C6EF5041A899E2BA6FB85441C043E0A9C6EF5041EC70F0F56FB85441A4703D5AC3EF5041C3F5284C73B85441C708F672C1EF5041C66F673E74B854412FE1CCFCBEEF50417A0AAF7775B85441030A7DF4AEEF5041184A525879B854415283528DB1EF5041C56F13CA79B85441A770889BB1EF5041319E82CC79B85441B16C2507BBEF504107B723697BB8544110A6703DC0EF5041A03D704D7CB85441292B263AC4EF504100CB1BFA7BB854411F85EB31D3EF504114AE47C17AB854418570C1B9E0EF5041547EE1CC75B854410231E28AE2EF5041D2C98E2275B8544137107A5DE3EF5041C8F315B074B854413D0AD7F3EBEF504152B81E0570B85441E17A145EF5EF5041333333B369B8544152D61A97FEEF5041B576AA5364B85441067ACD5C12F05041DB2BB7CE58B85441BF1F9A6812F050419A0434BB58B85441CEC9BBBF12F0504143981D2B58B854419EBF7A8413F0504107C7C2E556B85441950D29B812F05041CF6069E255B854413333338311F05041A4703D5A54B85441041F10150CF05041E85B7EF842B85441FDD58E120AF05041ABCF98893CB85441F6285C6FFEEF50415C8FC2052BB85441F6285C2FFBEF50419A9999E927B8544185EB51F8F6EF5041D7A3705D26B854415918E9D5F2EF5041D650284B26B854417A66709DF1EF5041F3EEC24526B8544133F83DEAEBEF5041DBE2F53829B854419B498F12E6EF50416141856B2BB8544185EB5138E5EF5041333333032DB85441666666A6ECEF5041295C8F5245B85441E17A148EF1EF5041B81E858B55B85441ABA40000E0EF5041D53B3DAA63B854413FAF9108D3EF5041557424D46AB85441258AA225D2EF5041347B48516BB854418A317C24D2EF5041A114EB516BB85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 362398
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441B81E85BB16F0504185EB516857B85441A4703DEAF5EF5041A4703D7A6AB854415C8FC2C5ECEF5041CDCCCC4C71B854417B14AEE7E2EF50410AD7A31076B854417B14AE67D3EF50419A9999B97BB854410AD7A330C0EF5041E17A144E7DB854417B14AE57B1EF50419A9999C97AB854413D0AD753B0EF504114AE47317CB85441000000A0B7EF5041CDCCCC8C81B85441D7A370CDB9EF50416666669684B8544100000040BAEF50415C8FC24588B85441A4703DFABBEF50417B14AE2788B85441AE47E1AAC6EF5041B81E850B85B854413D0AD7E3D3EF50413333334387B854410AD7A370DCEF5041AE47E1CA86B85441F6285C5FE5EF5041D7A3706D84B85441F6285C2FE2EF504148E17A347CB85441E17A140EE4EF50417B14AE677BB854418FC2F5A8EAEF50413333339378B85441D7A3707DF7EF5041C3F5282C73B85441E17A146E05F05041A4703DAA6CB85441333333C307F050419A9999396FB85441F6285C6F10F0504185EB51886CB85441295C8FD211F050413D0AD7A36FB85441CDCCCC9C1DF05041EC51B8FE6AB8544148E17A741BF0504148E17A8465B85441CDCCCC9C24F05041713D0AB762B854415C8FC26529F050411F85EB4168B854410103000000010000000C0000003D0AD7F3A3EF5041EC51B8DE8FB85441F6285C8FA9EF50415C8FC2258DB85441295C8F22B7EF50418FC2F5088AB854411F85EB11B9EF504148E17AE487B854413D0AD7A3B8EF50411F85EB0185B854413D0AD7C3B6EF504148E17A6482B85441B81E85ABACEF5041295C8FF27AB854419A999949A6EF50419A9999697FB85441000000B09CEF50418FC2F5288BB854415C8FC2F59BEF50411F85EB718CB854410AD7A3B0A4EF5041C3F528FC8BB854413D0AD7F3A3EF5041EC51B8DE8FB8544101030000000100000009000000295C8F229BEF50417B14AEE789B8544152B81E25A6EF5041000000E07AB85441295C8FF2A9EF50419A99997976B85441C3F528ACA9EF5041B81E85FB72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854419A9999E98EEF50417B14AE2781B8544185EB51E898EF504114AE47518AB85441295C8F229BEF50417B14AEE789B854410103000000010000002F0000008FC2F598EDEF5041713D0AE7D1B85441E17A148EDCEF5041666666E6D2B8544152B81EF5DCEF504185EB51E8CBB85441E17A14FEEEEF504114AE47E1CAB85441E17A149E05F0504114AE4741C6B85441EC51B81E1AF050417B14AEF7C3B85441C3F528AC21F0504148E17AD4C2B854415C8FC29504F050415C8FC275C0B8544166666606F8EF50417B14AEB7BFB85441C3F528FCF6EF50419A9999F9BEB85441E17A149ED9EF50415C8FC2B5BCB85441000000D0D0EF5041E17A146EBDB85441B81E855BC6EF504185EB51E8C2B85441EC51B8AEBFEF5041713D0AD7CCB85441F6285C1FBDEF5041B81E85EBCCB85441B81E85CBBDEF5041713D0AD7D0B854410AD7A370C2EF504152B81E35D7B854411F85EB71C4EF5041AE47E12AD9B854411F85EB61C9EF504133333383DCB8544148E17A44D8EF504114AE4731E4B854419A999979E5EF504114AE4701EBB8544100000080F5EF504114AE47F1F1B85441713D0AF7F5EF5041CDCCCCBCF0B854410AD7A3D0F3EF5041713D0AD7EEB854418FC2F578EFEF504152B81E35EEB8544133333363EFEF50417B14AE97EBB854419A9999D9F6EF50410AD7A3D0ECB854411F85EB21FDEF504133333333F1B85441000000A0FCEF5041CDCCCC2CF6B854418FC2F5B8FDEF5041CDCCCCFCF7B85441666666F603F05041F6285CEFF6B854413333336308F05041A4703DBAFAB8544114AE47F105F05041EC51B8BEFFB85441EC51B83E03F050418FC2F588FFB8544152B81E9503F05041D7A3706DFDB854410AD7A31002F0504148E17A64FAB854410AD7A330FDEF50413D0AD763F9B8544185EB5138FEEF5041AE47E15AFBB85441B81E858B02F050415C8FC2350CB954415C8FC2C503F05041B81E859B0FB95441B81E85EB05F05041F6285C7F12B9544185EB51A815F05041713D0A9706B95441A4703DAA0BF05041EC51B80EF8B85441AE47E1CAFFEF5041000000E0ECB85441D7A370FDF7EF504166666636E7B85441E17A141EEFEF50417B14AEB7E2B854418FC2F598EDEF5041713D0AE7D1B854410103000000010000003100000014AE47E157F050415C8FC2E547B854410AD7A36058F05041AE47E1CA4AB854413D0AD72359F05041000000A058B854417B14AE6755F05041D7A370FD69B854418FC2F5C850F050411F85EB8177B85441B81E856B4EF05041C3F528FC76B85441CDCCCC4C4DF05041B81E85AB7AB854411F85EB5141F05041AE47E12A8CB8544114AE47C13AF05041F6285CFF93B854417B14AED736F05041B81E855B98B85441A4703D9A2DF0504100000050A4B85441295C8F122BF05041AE47E12AA6B85441F6285C2F28F05041A4703D7AA7B854417B14AE671CF050419A999959ABB854411F85EBD1F0EF504100000080B2B85441295C8FC2D9EF504152B81EF5B6B85441AE47E13AD0EF50413D0AD7E3BAB85441EC51B8AED9EF5041EC51B81EBAB85441295C8F52F7EF50410AD7A390BBB854415C8FC29504F0504152B81E05BDB8544152B81EE521F0504114AE4761BFB85441A4703DDA32F0504166666676C0B854413D0AD7F33FF05041D7A370EDC1B854417B14AEB74AF05041AE47E1EAC1B854410000003052F05041D7A3703DBCB85441295C8F0251F05041A4703D1AB9B8544185EB51084DF050410AD7A3D0B2B85441666666F64CF05041B81E85FBADB854417B14AE674FF05041F6285CCFA9B85441000000C058F05041AE47E11A9CB8544148E17AB45BF050415C8FC27598B85441B81E85DB67F05041333333338FB85441666666166FF05041B81E85AB8BB85441CDCCCCAC7AF0504185EB51B888B8544152B81E057FF0504148E17A0487B85441B81E85DB8BF05041EC51B87E7EB854410AD7A3808EF05041000000407BB854419A9999998DF0504148E17A3477B85441D7A3702D7BF05041D7A370FD7AB8544152B81EE565F05041C3F5287C7BB85441F6285C3F53F0504185EB513876B85441E17A14CE56F0504114AE47516CB85441713D0AD759F0504152B81ED55FB8544148E17AD45AF050413333334356B85441B81E857B55F05041000000D038B854419A99991950F05041CDCCCC6C3CB8544185EB51F84CF05041E17A149E3EB854413D0AD7D353F05041F6285C4F48B8544114AE47E157F050415C8FC2E547B8544101030000000100000017000000333333F3D9EF5041D7A370DD8DB854413D0AD713D7EF5041713D0A1788B85441713D0AD7D3EF504148E17A4488B85441333333B3C6EF5041295C8F0286B854413D0AD743BCEF5041D7A3701D89B85441A4703DCAB7EF50418FC2F5188BB8544148E17A14AAEF5041000000908EB854419A9999999FEF5041F6285C9F93B85441713D0A179BEF50415C8FC28599B8544152B81E2590EF5041A4703DAAA9B854413333337392EF5041E17A14EEAAB854413D0AD73399EF504114AE47A1AEB85441C3F5288C99EF50411F85EBD1AEB85441EC51B84E9EEF504152B81E65ABB8544148E17AF4ADEF50413D0AD783A0B854418FC2F5F8B2EF504185EB51E89EB854418FC2F558B8EF504148E17AD49BB854411F85EB01BAEF5041CDCCCCEC9BB85441D7A370EDBBEF5041E17A14BE9AB85441C3F5289CBCEF50419A99997998B85441C3F5284CC8EF5041CDCCCCDC92B85441C3F5287CCEEF50410000003092B85441333333F3D9EF5041D7A370DD8DB854410103000000020000001200000066666666DAEF5041CDCCCC9C65B8544166666676DFEF504114AE47D162B8544114AE4771EFEF5041B81E85FB55B85441B81E850BF0EF504148E17A0454B854411F85EBB1EBEF504152B81E9545B854415C8FC285E6EF504148E17A8434B854415C8FC2C5E3EF5041713D0A8738B8544114AE47A1DEEF5041A4703D1A2EB85441B81E85DBD8EF5041EC51B80E2FB85441E17A149ED9EF50413333336334B854415C8FC2C5D4EF50413333333337B85441E17A142ED2EF5041A4703D2A30B85441D7A3703DCFEF5041713D0AA730B85441E17A148ED5EF50413333330344B854415C8FC2C5D4EF5041B81E850B46B854419A9999C9D5EF5041333333934AB854411F85EB81D7EF5041B81E85AB55B8544166666666DAEF5041CDCCCC9C65B854410B0000001F85EB01DAEF5041713D0A0736B854415C8FC245DCEF5041F6285C3F3AB85441E17A14FEDDEF5041713D0A2739B854411F85EB61E3EF5041F6285C6F3CB854415C8FC265E4EF5041F6285CDF3FB85441E17A14EEE3EF50413333335344B854419A999919E0EF5041B81E85AB46B8544133333303E0EF50410AD7A3E049B854411F85EBE1DBEF5041713D0AC743B854419A999959D7EF5041F6285CBF37B854411F85EB01DAEF5041713D0A0736B854410103000000010000001A00000085EB5138E5EF5041333333032DB85441666666A6ECEF5041295C8F5245B85441E17A148EF1EF5041B81E858B55B8544100000000E0EF5041A4703DAA63B8544148E17A24D2EF50411F85EB516BB85441CDCCCC3CCBEF5041333333636DB8544148E17AE4C6EF5041AE47E1BA6FB85441A4703D5AC3EF5041C3F5284C73B85441CDCCCCFCBEEF50417B14AE7775B8544148E17AF4AEEF504185EB515879B85441D7A3703DC0EF5041D7A3704D7CB854411F85EB31D3EF504114AE47C17AB85441AE47E18AE2EF5041295C8F2275B854413D0AD7F3EBEF504152B81E0570B85441E17A145EF5EF5041333333B369B85441CDCCCC5C12F05041EC51B8CE58B8544148E17A8413F050415C8FC2E556B854413333338311F05041A4703D5A54B85441295C8F120AF050419A9999893CB85441F6285C6FFEEF50415C8FC2052BB85441F6285C2FFBEF50419A9999E927B8544185EB51F8F6EF5041D7A3705D26B85441D7A3709DF1EF50415C8FC24526B85441A4703DEAEBEF50418FC2F53829B85441295C8F12E6EF5041B81E856B2BB8544185EB5138E5EF5041333333032DB8544101030000000100000005000000713D0A87C8EF5041AE47E11A61B85441A4703D0AC3EF5041EC51B8AE32B85441D7A3703DBCEF50410AD7A3D033B85441F6285C4FBBEF50413333333335B85441713D0A87C8EF5041AE47E11A61B8544101030000000100000015000000B81E85DB9CEF50417B14AE574FB85441000000909DEF5041C3F528FC50B854417B14AE07A0EF5041C3F528EC51B85441AE47E11AA2EF5041D7A370ED5AB85441AE47E11AA0EF5041000000905DB85441295C8FD2A0EF50418FC2F53865B85441333333A3A3EF504148E17A346AB854410AD7A3F0ACEF504114AE471173B85441F6285C7FB0EF5041B81E858B74B85441D7A3709DBDEF50417B14AE1772B854419A999959C1EF5041AE47E18A70B854411F85EBA1C4EF5041333333F36DB8544166666606C7EF50410AD7A3B06AB854417B14AE57C7EF5041000000A066B8544133333363C6EF504185EB519861B854410AD7A360BEEF504148E17AE446B854415C8FC2C5BCEF5041A4703D9A45B85441295C8FD2A2EF5041666666A643B85441E17A143E96EF50419A99999939B854413D0AD79391EF50418FC2F56840B85441B81E85DB9CEF50417B14AE574FB854410103000000010000000A000000E17A149ECFEF5041713D0AF759B85441F6285CBFD2EF5041666666D669B85441666666D6D5EF50411F85EB2168B854411F85EB91D1EF50413333333355B85441E17A144ECFEF5041F6285CBF46B8544100000050CAEF504185EB517831B85441AE47E1BAC8EF5041C3F528BC31B854411F85EBC1C9EF5041F6285C5F38B854411F85EB21CEEF5041B81E85BB4FB85441E17A149ECFEF5041713D0AF759B85441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008A317C24D2EF5041A114EB516BB85441ADC7F1F4D1EF5041583327606BB8544185F1CD3CCBEF5041E68634636DB85441D9A279E4C6EF5041A899E2BA6FB85441C043E0A9C6EF5041EC70F0F56FB85441A4703D5AC3EF5041C3F5284C73B85441C708F672C1EF5041C66F673E74B854412FE1CCFCBEEF50417A0AAF7775B85441030A7DF4AEEF5041184A525879B854415283528DB1EF5041C56F13CA79B85441A770889BB1EF5041319E82CC79B85441B16C2507BBEF504107B723697BB8544110A6703DC0EF5041A03D704D7CB85441292B263AC4EF504100CB1BFA7BB854411F85EB31D3EF504114AE47C17AB854418570C1B9E0EF5041547EE1CC75B854410231E28AE2EF5041D2C98E2275B8544137107A5DE3EF5041C8F315B074B854413D0AD7F3EBEF504152B81E0570B85441E17A145EF5EF5041333333B369B8544152D61A97FEEF5041B576AA5364B85441067ACD5C12F05041DB2BB7CE58B85441BF1F9A6812F050419A0434BB58B85441CEC9BBBF12F0504143981D2B58B854419EBF7A8413F0504107C7C2E556B85441950D29B812F05041CF6069E255B854413333338311F05041A4703D5A54B85441041F10150CF05041E85B7EF842B85441FDD58E120AF05041ABCF98893CB85441F6285C6FFEEF50415C8FC2052BB85441F6285C2FFBEF50419A9999E927B8544185EB51F8F6EF5041D7A3705D26B854415918E9D5F2EF5041D650284B26B854417A66709DF1EF5041F3EEC24526B8544133F83DEAEBEF5041DBE2F53829B854419B498F12E6EF50416141856B2BB8544185EB5138E5EF5041333333032DB85441666666A6ECEF5041295C8F5245B85441E17A148EF1EF5041B81E858B55B85441ABA40000E0EF5041D53B3DAA63B854413FAF9108D3EF5041557424D46AB85441258AA225D2EF5041347B48516BB854418A317C24D2EF5041A114EB516BB85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>559968 - 217989
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000007C0000009A999919DFD2504152B81EC527AF544148E17A84E6D25041C3F528AC31AF5441B81E85DBEED250413D0AD7F33EAF54415C8FC2E5F0D25041E17A140E40AF54417B14AE47F2D250419A99994942AF5441CDCCCC9CF4D250413D0AD7D347AF54419A999959F5D25041C3F528DC47AF54410AD7A3D0F6D250410AD7A3304CAF5441E17A146EF6D25041000000904CAF54415C8FC2D5F7D2504114AE478150AF54413D0AD7C3F8D250417B14AEA752AF5441AE47E12AFAD250417B14AE1755AF5441D7A3704DFCD2504152B81E1558AF54411F85EB11FED2504152B81E855AAF5441666666E6FFD25041666666765CAF5441F6285C2F07D350416666661666AF544152B81E250AD35041E17A14BE6AAF5441F6285CBF0BD350415C8FC2256DAF5441295C8F8213D35041CDCCCC5C7EAF5441333333C314D3504152B81E457FAF5441EC51B8AE15D3504148E17A0480AF54418FC2F5A816D3504148E17A3482AF5441B81E851B16D3504148E17A8484AF54416666665615D35041713D0AF784AF5441B81E858B16D350419A99990987AF54410AD7A3C017D350418FC2F53889AF54415C8FC2F518D3504114AE47C18BAF54410AD7A3F019D35041CDCCCCAC8CAF544148E17A341BD350413D0AD7138DAF5441E17A145E1ED35041333333D38DAF54418FC2F5C820D350417B14AE578EAF544185EB51F822D350413D0AD7838EAF54419A9999292AD35041C3F528DC8EAF544152B81E3535D35041000000B08EAF54410AD7A3A03DD35041A4703D1A8FAF544185EB51283FD35041295C8F0290AF5441000000D03ED350415C8FC29590AF5441000000603DD35041295C8F0290AF5441AE47E12A3CD350417B14AEC78FAF5441E17A14AE37D35041CDCCCC8C8FAF54410AD7A38032D350411F85EB518FAF54418FC2F5582CD35041E17A147E8FAF5441D7A370CD27D35041E17A147E8FAF5441D7A3704D21D35041713D0A178FAF5441B81E853B1FD35041D7A370CD8EAF5441AE47E1CA1DD3504152B81E758EAF5441666666D61BD35041333333D38DAF54419A9999391AD3504148E17AC48DAF5441333333A31FD35041EC51B89E8FAF54417B14AEF732D350417B14AEB791AF5441713D0AD735D350417B14AE0792AF5441F6285CEF43D35041295C8FC297AF5441B81E85CB4CD35041C3F5285C9BAF54419A9999C954D350411F85EBB1A2AF54419A99993960D35041713D0AF7B0AF54419A99998961D3504185EB51C8B4AF5441EC51B84E5FD35041000000D0C3AF5441AE47E13A5CD35041E17A145ED8AF54410AD7A3D05AD3504185EB5138E2AF5441EC51B87E59D35041AE47E1EAEAAF544185EB51A85DD35041E17A141EE9AF54410AD7A3E05DD35041EC51B89EE2AF54419A9999895FD35041CDCCCCCCD8AF54417B14AEC761D35041CDCCCC1CC4AF5441295C8FC264D350418FC2F528B3AF5441CDCCCCEC56D35041F6285CAFA0AF5441D7A370FD4ED3504185EB51E897AF5441713D0A5749D35041333333A391AF5441CDCCCC1C47D350419A9999298FAF54415C8FC2C545D35041D7A370AD8DAF54417B14AEF736D35041333333638DAF5441E17A14EE20D35041333333F389AF5441D7A370DD1DD350411F85EB5189AF5441333333431AD3504148E17A9488AF54413D0AD7F31BD35041713D0A8783AF54411F85EB2119D35041713D0AA780AF54410AD7A33019D35041666666C67DAF54411F85EBB117D35041000000A07CAF5441E17A14FE14D3504148E17A8479AF54415C8FC2A514D350410AD7A34078AF54413D0AD77315D350415C8FC20578AF5441B81E851B15D350419A99996976AF54411F85EBD114D350410AD7A3A074AF5441A4703D2A15D350415C8FC2F572AF5441D7A3704D14D350416666663672AF54410AD7A3B012D35041EC51B88E72AF54419A9999D910D35041713D0A0770AF54415C8FC2950FD35041A4703DDA6FAF54417B14AE070ED35041713D0AD76DAF5441CDCCCCCC0DD35041E17A14CE6CAF5441666666A60CD35041CDCCCC6C6BAF5441AE47E12A0DD35041AE47E1CA6AAF5441E17A14BE0DD350418FC2F5F867AF5441666666A60CD350415C8FC2F565AF54415C8FC2850AD3504114AE477165AF544148E17A6408D35041CDCCCC2C64AF54410000007006D350411F85EB1161AF54418FC2F57807D35041333333935FAF5441E17A143E07D350413D0AD7A35CAF5441AE47E10A03D350413333335358AF54415C8FC2D501D35041D7A370DD57AF5441A4703D7AFFD2504148E17A4458AF54415C8FC255FBD2504114AE47A152AF5441713D0AD7F9D25041F6285C8F50AF5441333333D3F7D250410AD7A3E04CAF544152B81E05F6D25041EC51B87E47AF5441B81E852BF8D250413333334346AF544100000040F7D250410AD7A3C042AF54417B14AE77F5D250417B14AEB741AF54410AD7A3A0F3D25041C3F5285C3FAF544100000030F2D25041000000903BAF54413D0AD713EED25041000000803BAF5441CDCCCC8CE7D2504152B81EF530AF54419A999949E0D250413333331327AF544114AE4781D9D250416666665616AF544114AE4781D3D250411F85EBA106AF54413D0AD763D7D250410AD7A3B005AF544185EB51E8D4D2504185EB515801AF5441295C8F32D1D2504152B81E15FDAE5441000000F0CED25041EC51B84EFBAE54410AD7A300CED25041F6285CAFFBAE544100000050D2D25041666666F606AF5441000000E0D7D250415C8FC23517AF54419A999919DFD2504152B81EC527AF5441
+</a>
+
+<b>
+010600000001000000010300000001000000780000000EA55E0834D35041469258D591AF5441223E0BD735D350410D2FAD0792AF54416D2D5DEF43D35041822B8FC297AF5441B81E85CB4CD35041C3F5285C9BAF54419A9999C954D350411F85EBB1A2AF5441D019E4285AD35041F75DCD65A9AF5441CEC89A3960D35041B68F09F7B0AF5441BECB9A8961D35041721C51C8B4AF5441D05A7ABC5FD3504111C43DECC0AF5441EC51B84E5FD35041000000D0C3AF5441DDF47E475ED35041DA1B1BAECAAF544102FEE13A5CD35041321C135ED8AF544121C2A4D05AD35041F8D35038E2AF544180CADF395AD350411FDFB719E6AF5441786CB87E59D35041DD98E0EAEAAF544196A650A85DD35041959F141EE9AF54417EDFA2E05DD3504121C7B79EE2AF5441229A329A5ED350412C010655DEAF54419A9999895FD35041CDCCCCCCD8AF54417B14AEC761D35041CDCCCC1CC4AF5441D8F7BCD263D350411D9F3F7DB8AF544109E48EC264D3504196F2F528B3AF544161ACCCEC56D35041660C5CAFA0AF54419CB4DBA256D350410044915DA0AF5441D7A370FD4ED3504185EB51E897AF544143E06DF14CD3504157A0CEA295AF5441975D095749D35041988E33A391AF544120516E0348D350411249DB2990AF5441CDCCCC1C47D350419A9999298FAF54417623C3C545D35041F74771AD8DAF544102C2DE8C40D35041BAC640938DAF54417B14AEF736D35041333333638DAF5441E17A14EE20D35041333333F389AF544101E4400B1FD350416DEAF48F89AF5441FE846FDD1DD35041CF8EEB5189AF5441834A01181DD3504188435D2989AF5441333333431AD3504148E17A9488AF5441D518DFB717D350412291910082AF544168E08D4A15D35041E23236D17BAF54417694BB900AD35041E7F82E5769AF5441CCBB811505D3504118344CD260AF54419F678F6303D35041D3B30B3D5EAF5441AF16AD3F01D3504152A647C75AAF54414260408DFED25041C1C3F60157AF54415C8FC255FBD2504114AE47A152AF5441713D0AD7F9D25041F6285C8F50AF5441EFE98783F9D250412957BEF64FAF5441964116CBF8D250415A0FDDF44EAF54414C359609F8D25041FFBD08444DAF5441333333D3F7D250410AD7A3E04CAF544152B81E05F6D25041EC51B87E47AF54416528BA49F6D250412653E4CB45AF5441BED60C5BF1D250415FD5D57A3CAF5441B10A483BEFD250410B237E843BAF54413D0AD713EED25041000000803BAF5441CDCCCC8CE7D2504152B81EF530AF54416C989D14E2D250417F10CF8329AF5441A3859949E0D250413BB6331327AF5441ED3D4781D9D25041CE7D665616AF54415544E934D5D2504117462F160BAF544114AE4781D3D250411F85EBA106AF54413AD61E32D1D250413458C614FDAE5441C30140F0CED250414E97EA4EFBAE54417928A500CED2504165D35BAFFBAE5441B444FE69D1D25041E916919C04AF544100000050D2D25041666666F606AF5441000000E0D7D250415C8FC23517AF54419A999919DFD2504152B81EC527AF5441A6860F93E0D25041617609BD29AF544100327C84E6D25041920E2AAC31AF5441426D86DBEED250416F50D6F33EAF54415C8FC2E5F0D25041E17A140E40AF54417B14AE47F2D250419A99994942AF5441CDCCCC9CF4D250413D0AD7D347AF54419A999959F5D25041C3F528DC47AF54410AD7A3D0F6D250410AD7A3304CAF5441E17A146EF6D25041000000904CAF54415C8FC2D5F7D2504114AE478150AF54413D0AD7C3F8D250417B14AEA752AF5441AE47E12AFAD250417B14AE1755AF5441D7A3704DFCD2504152B81E1558AF54411F85EB11FED2504152B81E855AAF5441666666E6FFD25041666666765CAF5441F6285C2F07D350416666661666AF544152B81E250AD35041E17A14BE6AAF5441F6285CBF0BD350415C8FC2256DAF5441295C8F8213D35041CDCCCC5C7EAF5441333333C314D3504152B81E457FAF5441EC51B8AE15D3504148E17A0480AF54418FC2F5A816D3504148E17A3482AF5441B81E851B16D3504148E17A8484AF54416666665615D35041713D0AF784AF5441B81E858B16D350419A99990987AF54410AD7A3C017D350418FC2F53889AF54415C8FC2F518D3504114AE47C18BAF54410AD7A3F019D35041CDCCCCAC8CAF544148E17A341BD350413D0AD7138DAF5441E17A145E1ED35041333333D38DAF54418FC2F5C820D350417B14AE578EAF544185EB51F822D350413D0AD7838EAF54419A9999292AD35041C3F528DC8EAF544152B81E3535D35041000000B08EAF54410AD7A3A03DD35041A4703D1A8FAF544185EB51283FD35041295C8F0290AF5441000000D03ED350415C8FC29590AF5441000000603DD35041295C8F0290AF5441AE47E12A3CD350417B14AEC78FAF5441E17A14AE37D35041CDCCCC8C8FAF54410AD7A38032D350411F85EB518FAF54418FC2F5582CD35041E17A147E8FAF5441D7A370CD27D35041E17A147E8FAF5441D7A3704D21D35041713D0A178FAF5441B81E853B1FD35041D7A370CD8EAF5441AE47E1CA1DD3504152B81E758EAF5441666666D61BD35041333333D38DAF544141529B391AD3504102F17AC48DAF54416F14E7DD1DD35041CBAD92038FAF5441333333A31FD35041EC51B89E8FAF54417B14AEF732D350417B14AEB791AF54410EA55E0834D35041469258D591AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945944 - 3140125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD7C348785141E17A146E0A885441D7A3704D4878514114AE470105885441EC51B8FE47785141A4703D4A048854413333336347785141E17A14AE03885441E17A149E467851416666666603885441C3F5284C4278514148E17A84038854410AD7A3C04078514148E17A94038854411F85EBD13D7851413D0AD79303885441B81E85DB3978514166666666038854417B14AE7736785141D7A3700D0388544185EB5128317851410000005002885441CDCCCC5C2B785141CDCCCC9C018854419A99996926785141D7A3702D018854413D0AD7F3237851415C8FC2050188544133333383217851418FC2F5E8008854417B14AE271D785141C3F5281C01885441C3F528BC09785141F6285CDF02885441EC51B87E09785141D7A370FD0A8854410AD7A3B015785141AE47E1CA0A8854411F85EB611F78514114AE47C10A88544185EB51D824785141333333E30A8854413D0AD703327851411F85EB010B885441C3F5281C417851419A9999090B8854410AD7A390487851411F85EB710A8854413D0AD7C348785141E17A146E0A885441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000B97BE0BB09785141A188EFE80288544121DC388B0978514186CE3CFD0A8854414730C28F1D785141856415C30A885441C5B9C27C2C7851411EBE06F50A88544117FDEB2A4178514132416D080B885441521E1BC2487851417066BD590A885441FB61BF4A487851414B0405FB04885441BA70AAF747785141F5202843048854419A4763654778514153DD46B0038854413E6B7089467851411F1FF666038854415049352442785141F09E1886038854411144CEFD3D785141279EE09303885441CEF473013A7851417D65196803885441FD377FBC3578514193AE5AF30288544191CEF5D5307851418D2B0D4602885441C8CFC81D2978514123B1446A018854419F3FA83A23785141CACB38FD00885441856B2EB01F785141942965FE00885441634EDDB11A7851417EF4515501885441B97BE0BB09785141A188EFE802885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945944 - 3518542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD7C348785141E17A146E0A885441D7A3704D4878514114AE470105885441EC51B8FE47785141A4703D4A048854413333336347785141E17A14AE03885441E17A149E467851416666666603885441C3F5284C4278514148E17A84038854410AD7A3C04078514148E17A94038854411F85EBD13D7851413D0AD79303885441B81E85DB3978514166666666038854417B14AE7736785141D7A3700D0388544185EB5128317851410000005002885441CDCCCC5C2B785141CDCCCC9C018854419A99996926785141D7A3702D018854413D0AD7F3237851415C8FC2050188544133333383217851418FC2F5E8008854417B14AE271D785141C3F5281C01885441C3F528BC09785141F6285CDF02885441EC51B87E09785141D7A370FD0A8854410AD7A3B015785141AE47E1CA0A8854411F85EB611F78514114AE47C10A88544185EB51D824785141333333E30A8854413D0AD703327851411F85EB010B885441C3F5281C417851419A9999090B8854410AD7A390487851411F85EB710A8854413D0AD7C348785141E17A146E0A885441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000B97BE0BB09785141A188EFE80288544121DC388B0978514186CE3CFD0A8854414730C28F1D785141856415C30A885441C5B9C27C2C7851411EBE06F50A88544117FDEB2A4178514132416D080B885441521E1BC2487851417066BD590A885441FB61BF4A487851414B0405FB04885441BA70AAF747785141F5202843048854419A4763654778514153DD46B0038854413E6B7089467851411F1FF666038854415049352442785141F09E1886038854411144CEFD3D785141279EE09303885441CEF473013A7851417D65196803885441FD377FBC3578514193AE5AF30288544191CEF5D5307851418D2B0D4602885441C8CFC81D2978514123B1446A018854419F3FA83A23785141CACB38FD00885441856B2EB01F785141942965FE00885441634EDDB11A7851417EF4515501885441B97BE0BB09785141A188EFE802885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>563780 - 169592
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000900000014AE47F18D655141000000A087A85441E17A143E8D655141EC51B87E81A854419A9999B98C65514148E17AF47CA85441E17A148E7965514185EB51287FA85441C3F5280C4965514152B81EA585A85441B81E855B4A655141D7A3702D90A854417B14AEC760655141713D0A578DA85441D7A3705D77655141B81E857B8AA8544114AE47F18D655141000000A087A85441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000ED959D92496551417F2D27DE89A854416E51855B4A6551418B796F2D90A8544101EE39705D655141778B4BC38DA854417B14AEC760655141713D0A578DA85441D15C018264655141B8FC4BDE8CA85441E965715D776551419003847B8AA854418BFA35508765514181B7C97688A8544114AE47F18D655141000000A087A854414D7234768D655141B9A7366A83A85441901E143E8D6551416C68B77E81A85441ED5898B98C65514120067BF47CA854417A7A5660786551419595DD787FA85441A404290C49655141F32F1FA585A85441ED959D92496551417F2D27DE89A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>563780 - 285891
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000900000014AE47F18D655141000000A087A85441E17A143E8D655141EC51B87E81A854419A9999B98C65514148E17AF47CA85441E17A148E7965514185EB51287FA85441C3F5280C4965514152B81EA585A85441B81E855B4A655141D7A3702D90A854417B14AEC760655141713D0A578DA85441D7A3705D77655141B81E857B8AA8544114AE47F18D655141000000A087A85441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000ED959D92496551417F2D27DE89A854416E51855B4A6551418B796F2D90A8544101EE39705D655141778B4BC38DA854417B14AEC760655141713D0A578DA85441D15C018264655141B8FC4BDE8CA85441E965715D776551419003847B8AA854418BFA35508765514181B7C97688A8544114AE47F18D655141000000A087A854414D7234768D655141B9A7366A83A85441901E143E8D6551416C68B77E81A85441ED5898B98C65514120067BF47CA854417A7A5660786551419595DD787FA85441A404290C49655141F32F1FA585A85441ED959D92496551417F2D27DE89A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571181 - 343058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8F2247535141666666A62B8354417B14AE07495351418FC2F51828835441E17A14AE3C535141A4703D6A1D8354419A9999893C535141AE47E14A1D8354413D0AD79339535141295C8F821E8354410000000038535141D7A3700D1F8354415C8FC20537535141295C8FC21F8354410000004036535141AE47E1EA208354415C8FC2A545535141F6285C6F2E835441295C8F2247535141666666A62B835441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A69999893C535141B847E14A1D8354413D0AD79339535141295C8F821E8354410000000038535141D7A3700D1F8354415C8FC20537535141295C8FC21F83544108BD4DA236535141C7649557208354410000004036535141AE47E1EA20835441A3BC38F438535141E33A954A23835441BD38AFE03E53514151476E482883544135F244A242535141250C11CA2B835441D8D59FA545535141D6AC3D6F2E8354416907AE07495351410FDBF51828835441E17A14AE3C535141A4703D6A1D835441A69999893C535141B847E14A1D835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571627 - 53353
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+0106000000010000000103000000010000003F000000EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F544114AE476180465141C3F5283C788F5441F6285CCF94465141666666167C8F5441F6285C9FAB4651410AD7A360808F544185EB5178C7465141E17A147E848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441295C8F82FD4651413D0AD7F38C8F544148E17A5400475141713D0A678B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F5441713D0AD7FD4651419A999949898F5441CDCCCCCCDC46514114AE4731848F5441B81E850BC8465141E17A14EE808F544166666636AC4651417B14AE977C8F5441EC51B85E9B465141AE47E1FA798F54417B14AE479546514152B81EE5788F5441E17A144E8C465141A4703D1A778F5441713D0A77694651411F85EB816F8F5441AE47E1DA4A465141AE47E1DA688F5441EC51B82E3C465141C3F528CC658F5441666666C6354651410AD7A350648F54418FC2F5A830465141CDCCCC0C638F54410AD7A3902846514114AE47B1608F54417B14AEB700465141C3F528CC548F54411F85EBB1FE4551410AD7A350558F5441CDCCCCFCFC455141295C8FE2548F544114AE47F1FB4551410AD7A360538F544166666626EC455141295C8F924E8F5441CDCCCCFCDC455141F6285CFF498F54411F85EB11CB45514166666696448F544152B81EF5C24551410AD7A310428F54411F85EB31BB45514152B81E853F8F54418FC2F568B94551419A999909408F544185EB5158B545514152B81E653E8F544133333353B3455141EC51B8AE3C8F5441713D0A37A345514185EB5158378F54419A9999299A4551415C8FC2E5348F5441B81E850B8845514185EB5138308F544152B81E257E455141B81E85BB2D8F5441F6285C4F76455141C3F528DC2B8F544114AE47B1744551419A9999692B8F5441E17A14EE72455141EC51B87E2B8F544114AE4771724551418FC2F5A82C8F5441B81E85CB71455141D7A3702D2E8F5441333333A3734551411F85EB912E8F544148E17A148A455141EC51B86E348F5441AE47E17A9B455141C3F528BC388F54410AD7A350A2455141C3F5288C3A8F5441295C8F82B545514152B81E65418F544100000040C945514114AE4751488F54419A9999C9DB4551411F85EBB14D8F54417B14AEE7EA455141E17A14FE518F544148E17A04FB4551413D0AD793568F54419A999979FD45514100000030578F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441713D0A17374651411F85EB81688F5441EC51B88E42465141C3F528EC6A8F5441
+</a>
+
+<b>
+010600000001000000010300000001000000770000007EE01C5FB345514166C0D1B83C8F5441D6F8C78BAA45514168411DC6398F5441B5EF76F0A8455141F4AAD63D398F544129263188A7455141CA7779C6388F54413AD4C80CA3455141EB3EE54C378F5441828B0E589D455141DE65F6C1358F5441F3248FF88C4551413DC9E37D318F5441C5DD975B834551415FC0D20A2F8F54412CAD4F427C45514157F921482D8F5441A304518277455141182285252C8F5441F6285C4F76455141C3F528DC2B8F54418A10F40875455141F318DB812B8F54413AC5F2C474455141A29D0A6F2B8F5441FC33BB1974455141F69AB1702B8F5441E17A14EE72455141EC51B87E2B8F544114AE4771724551418FC2F5A82C8F5441B81E85CB71455141D7A3702D2E8F5441FFB5EA06734551412FAEA0702E8F5441333333A3734551411F85EB912E8F5441AAD87F16744551415CF309B02E8F5441AE559A8C854551419FB7BB3F338F54412DE472228A4551418C8F2C72348F54415DEE2EDD934551415FEB0EDA368F5441AE47E17A9B455141C3F528BC388F54413F13FF8B9B455141CAEBB2C0388F544180602078A145514193BFBE523A8F54410AD7A350A2455141C3F5288C3A8F5441B52E95ADAD4551411A9DE0993E8F544115E7FE04B7455141FB03A3EC418F54416753AB2EB94551413C19CDAE428F54412BCEE761BB455141F2AC5174438F544197795FEFC4455141DBB3E7CD468F5441763F0016C845514156CBC6E8478F5441A3D9E22EC94551410448474B488F5441C1DB37C0CE4551419866C9E9498F5441EF30CE82D7455141356755744C8F54418DEE82C6DE45514163235D8B4E8F5441B647EA9DE1455141802B255A4F8F54411AB33843E2455141842923894F8F5441DDDC493BE8455141209E863B518F54417B14AEE7EA455141E17A14FE518F5441328D8243F9455141D6901414568F5441CBC842D4FB45514107526AC7568F54419A999979FD45514100000030578F54411B26673C03465141FB200E03598F54416B11E1FF0C465141E5339D1A5C8F5441A5E40BDA0D4651414D98B45F5C8F5441E64FB41D10465141A9F946175D8F5441724976741D4651415D07D736618F5441E88B43FF26465141CD38F420648F5441B4EED8712C465141FC060FBA658F54414176173E2E465141A2921241668F544186224CF93146514153DE4859678F5441BC7F170833465141A694A2A6678F544185F80D4D3346514165CF30B5678F5441EBAD2E9733465141DC1DD6C4678F544176EFBAC933465141DF5781CF678F544100DC77CE3B46514137D33280698F5441A5650139414651417C5232A46A8F54415307D09642465141EE7093ED6A8F5441AD858C5B4746514123302AC36B8F54415CBDFDDD48465141458FC7066C8F5441000000304A4651411F85EB416C8F54415031BB854B46514149E0078B6C8F54415470F468544651419D1FCC716E8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F5441A61ECB0A724651418C681DFF748F5441D2126EB87E465141133433DC778F5441F338C75D80465141A17A5E3B788F5441B3C976268B4651412C8E15447A8F54416473030A9A46514179E423127D8F5441BB5BE0E29F4651417FE8A12B7E8F5441F575BD47A446514159202BFF7E8F54417EEE5AB6AB46514112B90964808F5441007F26B8BF465141EA8BE158838F544185EB5178C7465141E17A147E848F544160669715D646514135B91AB5868F5441295C8F12DC465141D7A3709D878F54410498F28CE0465141BF54DE5B888F5441FD94FC3BF1465141E7F3B9208B8F5441A45D2989F54651414FD267C48B8F5441925D98BCF94651417D2E42648C8F54413A34958BFD465141D5DFBCEE8C8F54415057035000475141A239A5658B8F54414EDE8E49004751419183372F8B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F54416449B5D9FD465141C46C5C4A898F54411605133CE7465141A59135CD858F5441CDCCCCCCDC46514114AE4731848F5441B81E850BC8465141E17A14EE808F544166666636AC4651417B14AE977C8F5441EC51B85E9B465141AE47E1FA798F54417B14AE479546514152B81EE5788F5441E17A144E8C465141A4703D1A778F5441713D0A77694651411F85EB816F8F5441AE47E1DA4A465141AE47E1DA688F5441EC51B82E3C465141C3F528CC658F5441666666C6354651410AD7A350648F54418FC2F5A830465141CDCCCC0C638F54410AD7A3902846514114AE47B1608F54417B14AEB700465141C3F528CC548F54411F85EBB1FE4551410AD7A350558F5441CDCCCCFCFC455141295C8FE2548F544114AE47F1FB4551410AD7A360538F544166666626EC455141295C8F924E8F54415333AF0DE245514158A8AB864B8F54415D686565E04551419846A6064B8F5441CDCCCCFCDC455141F6285CFF498F544132F950ADDB455141F271109A498F54411F85EB11CB45514166666696448F544152B81EF5C24551410AD7A310428F5441208ED07CC2455141006832E9418F5441ABBD0A9DBF4551411ABCF7F7408F54412C078A3FBB455141F2CC95893F8F54418FC2F568B94551419A999909408F544185EB5158B545514152B81E653E8F54417EE01C5FB345514166C0D1B83C8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571627 - 170516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000003F000000EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F544114AE476180465141C3F5283C788F5441F6285CCF94465141666666167C8F5441F6285C9FAB4651410AD7A360808F544185EB5178C7465141E17A147E848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441295C8F82FD4651413D0AD7F38C8F544148E17A5400475141713D0A678B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F5441713D0AD7FD4651419A999949898F5441CDCCCCCCDC46514114AE4731848F5441B81E850BC8465141E17A14EE808F544166666636AC4651417B14AE977C8F5441EC51B85E9B465141AE47E1FA798F54417B14AE479546514152B81EE5788F5441E17A144E8C465141A4703D1A778F5441713D0A77694651411F85EB816F8F5441AE47E1DA4A465141AE47E1DA688F5441EC51B82E3C465141C3F528CC658F5441666666C6354651410AD7A350648F54418FC2F5A830465141CDCCCC0C638F54410AD7A3902846514114AE47B1608F54417B14AEB700465141C3F528CC548F54411F85EBB1FE4551410AD7A350558F5441CDCCCCFCFC455141295C8FE2548F544114AE47F1FB4551410AD7A360538F544166666626EC455141295C8F924E8F5441CDCCCCFCDC455141F6285CFF498F54411F85EB11CB45514166666696448F544152B81EF5C24551410AD7A310428F54411F85EB31BB45514152B81E853F8F54418FC2F568B94551419A999909408F544185EB5158B545514152B81E653E8F544133333353B3455141EC51B8AE3C8F5441713D0A37A345514185EB5158378F54419A9999299A4551415C8FC2E5348F5441B81E850B8845514185EB5138308F544152B81E257E455141B81E85BB2D8F5441F6285C4F76455141C3F528DC2B8F544114AE47B1744551419A9999692B8F5441E17A14EE72455141EC51B87E2B8F544114AE4771724551418FC2F5A82C8F5441B81E85CB71455141D7A3702D2E8F5441333333A3734551411F85EB912E8F544148E17A148A455141EC51B86E348F5441AE47E17A9B455141C3F528BC388F54410AD7A350A2455141C3F5288C3A8F5441295C8F82B545514152B81E65418F544100000040C945514114AE4751488F54419A9999C9DB4551411F85EBB14D8F54417B14AEE7EA455141E17A14FE518F544148E17A04FB4551413D0AD793568F54419A999979FD45514100000030578F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441713D0A17374651411F85EB81688F5441EC51B88E42465141C3F528EC6A8F5441
+</a>
+
+<b>
+010600000001000000010300000001000000580000002ED70F1CD04551411D1FB14E4A8F5441E71F9AC9DB4551417361EAB14D8F54415CCCACE7EA455141C5DE13FE518F54416CE07904FB4551418047D693568F54410A779979FD455141CCA4FE2F578F54411BBE7AAF0C465141F6FC26015C8F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441AE764DEF35465141D2188043688F5441ECB5091737465141BF06EB81688F5441378F2A173B46514181959859698F5441EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441BCD9664150465141B423428E6D8F54412A7EE1AA56465141E15D70ED6E8F5441BA5C8E2D5E4651410E339893708F5441295C8FC268465141666666E6728F54417F3BDAAD7646514145C13B0B768F544156F1486180465141B7EE283C788F5441702CC1B5854651416EC0753D798F5441F6285CCF94465141666666167C8F54410BDBD7BAA0465141B5FC3E547E8F544107465C9FAB4651418B2CA360808F544168F35178C74651417F73147E848F5441BBF1C70EC8465141703EE294848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441CB568F82FD4651417109D7F38C8F54412FDA7A54004751412B190A678B8F54410AD7A32000475141E17A145E8A8F54414ECC7468FF4651416CD0ECC8898F5441C9DEFF4FFF465141D9AE1EB5898F5441713D0AD7FD4651419A999949898F5441CDCCCCCCDC46514114AE4731848F5441BEA0FEE0D8465141A0A47D93838F544145CA830BC846514125A615EE808F5441F5E36536AC46514122AAAE977C8F5441F86E3514A6465141ED3E1FA47B8F5441EC51B85E9B465141AE47E1FA798F5441A21C8E78974651417CC80B49798F5441DB63AF47954651418E991FE5788F54416C35144E8C465141FEA53D1A778F544132D60A7769465141410BEC816F8F5441832136786146514166B114C56D8F5441AE47E1DA4A465141AE47E1DA688F54414C01AB533F46514197C2E573668F54410343B72E3C4651411C0B29CC658F5441D63666C635465141BA1CA550648F54413C6EF6A830465141EE0CCD0C638F5441CDD644F12F465141A7C54DD7628F54410AD7A3902846514114AE47B1608F54417B14AEB700465141C3F528CC548F54412CA9CC73004651416B5887DD548F5441A231EAB1FE4551411092A450558F544142BA36F2FD455141CED25C20558F5441CDCCCCFCFC455141295C8FE2548F54417E6FDF61FC45514154851003548F5441283B47F1FB455141B96AA460538F5441D51C6626EC4551410BC98F924E8F544115E73161E54551417E0E99874C8F5441CDCCCCFCDC455141F6285CFF498F54411F85EB11CB45514166666696448F544152B81EF5C24551410AD7A310428F54411F85EB31BB45514152B81E853F8F54418FC2F568B94551419A999909408F544160965158B5455141AB7E1F653E8F544180F53253B34551418888B8AE3C8F54418C5D0937A3455141DF0A5358378F54418CA9E2509E455141A7D33C05368F54419A9999299A4551415C8FC2E5348F54416CF4EBAF8D45514169C43AAD318F54413A9E850B88455141E8915238308F544150F31F257E4551415E4B86BB2D8F544143605D4F76455141625A29DC2B8F5441715046B17445514120749A692B8F5441443B14EE72455141F1E9B87E2B8F544114AE4771724551418FC2F5A82C8F54412497FE0C7245514155F7FD932D8F54419C9085CB714551411ABC702D2E8F5441F5971E9173455141EC81118E2E8F5441FF8832A3734551410556EB912E8F544136067C148A4551414B3BB76E348F54415487E07A9B455141DFB027BC388F5441B198A450A2455141C263288C3A8F544186898E82B5455141D3E11D65418F54418C7F0040C94551410F654751488F54412ED70F1CD04551411D1FB14E4A8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571627 - 389203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000003F000000EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F544114AE476180465141C3F5283C788F5441F6285CCF94465141666666167C8F5441F6285C9FAB4651410AD7A360808F544185EB5178C7465141E17A147E848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441295C8F82FD4651413D0AD7F38C8F544148E17A5400475141713D0A678B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F5441713D0AD7FD4651419A999949898F5441CDCCCCCCDC46514114AE4731848F5441B81E850BC8465141E17A14EE808F544166666636AC4651417B14AE977C8F5441EC51B85E9B465141AE47E1FA798F54417B14AE479546514152B81EE5788F5441E17A144E8C465141A4703D1A778F5441713D0A77694651411F85EB816F8F5441AE47E1DA4A465141AE47E1DA688F5441EC51B82E3C465141C3F528CC658F5441666666C6354651410AD7A350648F54418FC2F5A830465141CDCCCC0C638F54410AD7A3902846514114AE47B1608F54417B14AEB700465141C3F528CC548F54411F85EBB1FE4551410AD7A350558F5441CDCCCCFCFC455141295C8FE2548F544114AE47F1FB4551410AD7A360538F544166666626EC455141295C8F924E8F5441CDCCCCFCDC455141F6285CFF498F54411F85EB11CB45514166666696448F544152B81EF5C24551410AD7A310428F54411F85EB31BB45514152B81E853F8F54418FC2F568B94551419A999909408F544185EB5158B545514152B81E653E8F544133333353B3455141EC51B8AE3C8F5441713D0A37A345514185EB5158378F54419A9999299A4551415C8FC2E5348F5441B81E850B8845514185EB5138308F544152B81E257E455141B81E85BB2D8F5441F6285C4F76455141C3F528DC2B8F544114AE47B1744551419A9999692B8F5441E17A14EE72455141EC51B87E2B8F544114AE4771724551418FC2F5A82C8F5441B81E85CB71455141D7A3702D2E8F5441333333A3734551411F85EB912E8F544148E17A148A455141EC51B86E348F5441AE47E17A9B455141C3F528BC388F54410AD7A350A2455141C3F5288C3A8F5441295C8F82B545514152B81E65418F544100000040C945514114AE4751488F54419A9999C9DB4551411F85EBB14D8F54417B14AEE7EA455141E17A14FE518F544148E17A04FB4551413D0AD793568F54419A999979FD45514100000030578F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441713D0A17374651411F85EB81688F5441EC51B88E42465141C3F528EC6A8F5441
+</a>
+
+<b>
+010600000001000000010300000001000000580000002ED70F1CD04551411D1FB14E4A8F5441E71F9AC9DB4551417361EAB14D8F54415CCCACE7EA455141C5DE13FE518F54416CE07904FB4551418047D693568F54410A779979FD455141CCA4FE2F578F54411BBE7AAF0C465141F6FC26015C8F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441AE764DEF35465141D2188043688F5441ECB5091737465141BF06EB81688F5441378F2A173B46514181959859698F5441EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441BCD9664150465141B423428E6D8F54412A7EE1AA56465141E15D70ED6E8F5441BA5C8E2D5E4651410E339893708F5441295C8FC268465141666666E6728F54417F3BDAAD7646514145C13B0B768F544156F1486180465141B7EE283C788F5441702CC1B5854651416EC0753D798F5441F6285CCF94465141666666167C8F54410BDBD7BAA0465141B5FC3E547E8F544107465C9FAB4651418B2CA360808F544168F35178C74651417F73147E848F5441BBF1C70EC8465141703EE294848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441CB568F82FD4651417109D7F38C8F54412FDA7A54004751412B190A678B8F54410AD7A32000475141E17A145E8A8F54414ECC7468FF4651416CD0ECC8898F5441C9DEFF4FFF465141D9AE1EB5898F5441713D0AD7FD4651419A999949898F5441CDCCCCCCDC46514114AE4731848F5441BEA0FEE0D8465141A0A47D93838F544145CA830BC846514125A615EE808F5441F5E36536AC46514122AAAE977C8F5441F86E3514A6465141ED3E1FA47B8F5441EC51B85E9B465141AE47E1FA798F5441A21C8E78974651417CC80B49798F5441DB63AF47954651418E991FE5788F54416C35144E8C465141FEA53D1A778F544132D60A7769465141410BEC816F8F5441832136786146514166B114C56D8F5441AE47E1DA4A465141AE47E1DA688F54414C01AB533F46514197C2E573668F54410343B72E3C4651411C0B29CC658F5441D63666C635465141BA1CA550648F54413C6EF6A830465141EE0CCD0C638F5441CDD644F12F465141A7C54DD7628F54410AD7A3902846514114AE47B1608F54417B14AEB700465141C3F528CC548F54412CA9CC73004651416B5887DD548F5441A231EAB1FE4551411092A450558F544142BA36F2FD455141CED25C20558F5441CDCCCCFCFC455141295C8FE2548F54417E6FDF61FC45514154851003548F5441283B47F1FB455141B96AA460538F5441D51C6626EC4551410BC98F924E8F544115E73161E54551417E0E99874C8F5441CDCCCCFCDC455141F6285CFF498F54411F85EB11CB45514166666696448F544152B81EF5C24551410AD7A310428F54411F85EB31BB45514152B81E853F8F54418FC2F568B94551419A999909408F544160965158B5455141AB7E1F653E8F544180F53253B34551418888B8AE3C8F54418C5D0937A3455141DF0A5358378F54418CA9E2509E455141A7D33C05368F54419A9999299A4551415C8FC2E5348F54416CF4EBAF8D45514169C43AAD318F54413A9E850B88455141E8915238308F544150F31F257E4551415E4B86BB2D8F544143605D4F76455141625A29DC2B8F5441715046B17445514120749A692B8F5441443B14EE72455141F1E9B87E2B8F544114AE4771724551418FC2F5A82C8F54412497FE0C7245514155F7FD932D8F54419C9085CB714551411ABC702D2E8F5441F5971E9173455141EC81118E2E8F5441FF8832A3734551410556EB912E8F544136067C148A4551414B3BB76E348F54415487E07A9B455141DFB027BC388F5441B198A450A2455141C263288C3A8F544186898E82B5455141D3E11D65418F54418C7F0040C94551410F654751488F54412ED70F1CD04551411D1FB14E4A8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571829 - 3006808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000027000000D7A3706D704E5141EC51B82E3189544133333303604E514114AE47914D8954415C8FC2155C4E51413D0AD76355895441B81E85CB494E5141713D0A277489544148E17A343A4E51418FC2F5688E89544152B81EA5254E51417B14AEE7B0895441CDCCCCAC274E51413D0AD7E3B1895441CDCCCC1C424E5141B81E85ABB989544114AE47D14F4E5141E17A140E9E8954419A9999894F4E5141713D0A779A895441000000C04F4E5141E17A14EE96895441CDCCCCEC4F4E5141666666869389544133333303504E5141D7A370CD91895441C3F5289C504E5141F6285C7F8F89544100000000514E51417B14AE978D895441C3F5287C514E5141F6285C6F8C895441F6285CFF514E51419A9999798B895441295C8FD2524E514185EB51288A895441A4703D5A544E51418FC2F52888895441AE47E12A584E51413D0AD733838954418FC2F5885A4E5141713D0A277F895441AE47E14A604E5141C3F5288C7589544148E17AD4634E51413333331371895441AE47E1BA654E51410000004070895441EC51B8DE684E5141333333136E895441333333D36B4E5141E17A14FE6B8954411F85EBB16D4E514185EB51A86A89544152B81EB56F4E5141000000B068895441A4703D4A724E5141AE47E1AA65895441AE47E1FA734E5141333333E35F895441713D0A67774E514114AE47015789544185EB5108794E5141713D0A9753895441EC51B8AE7A4E5141EC51B8EE508954413D0AD713844E51415C8FC23543895441D7A370DD854E5141CDCCCCAC3F895441F6285C5F854E514185EB51383D8954418FC2F5A8774E51418FC2F5F83489544185EB51C8714E51411F85EBE130895441D7A3706D704E5141EC51B82E31895441
+</a>
+
+<b>
+01060000000100000001030000000100000067000000E9B89F34824E51410B413C5E3F895441F2566772814E514107D4908140895441575171397F4E514113A585584489544173AE915F7C4E5141D8C8C34749895441626523377C4E514167C1798A4989544103E50A86784E5141C92EE2A14F8954418E5FA3A1774E51418DD0F840518954418D2B3465754E5141C9A7D2545589544199D4D02E754E5141574600B8558954416EDF5B6C744E5141707B86E45689544159BA640F734E514152E3D5FF5889544133E964AE724E51411C6E17C15989544179799F79724E5141904DA22A5A89544116D566D3704E5141559613775D895441B5E6AD1C6E4E514103D46A0462895441B639227C6B4E5141FA74CE8566895441873AC95F6B4E5141D27D90B666895441AB5E188C6A4E5141B988762168895441E2DCD148694E51413442A64B6A895441AF866542694E51414BF542526A895441600DE9E4654E5141A3EA15C96D89544113AA224C624E51415768E70371895441C60CBA2A614E514194F5C707728954414D079F3E604E5141180881147389544140A4DD325F4E5141DF9D824674895441B29C37DB5E4E5141120133E774895441DFC9C07B5D4E5141F7D88C6B77895441776258865B4E51418983DFA67A89544173EEB8E5594E514136ABBE2A7D895441657F798B584E51416570AE677F8954418F229527584E51411DE77E138089544155D0FCF5564E5141C67E1E21828954417FD440E7564E514186527E378289544147A84F94544E51411E8CECBE858954419BD84F4A544E51414F134B2F868954419E4C4DBB514E5141817DD9F988895441225FAB1D514E5141F2F4CFA58989544190454889504E5141DDF21F978A8954418A52A2914F4E5141BB19042F8C895441B97EDE7F4F4E51416E5DD38D8C8954413CD2A6344F4E5141249D0C418E8954413C4A50294F4E51413D1D75F68E895441F22CC9DA4E4E5141CAC5961C948954415E9DC2BE4E4E514186050BE897895441FF027EBA4E4E514147594C9B9889544113A13C514F4E5141362EC0D59A895441E55D5D574F4E5141174B97EC9A89544178012DA64F4E5141FC6657129C8954415D7CB4894F4E5141B0FC4A759A89544133A23C984F4E5141F93B8D83998954416BC246BC4F4E5141C4EA052C9789544136F9ACD54F4E5141714F554895895441C920E9F04F4E5141FD917A3593895441B5B86004504E5141BE72E5C891895441F3136D4C504E5141EBE7F3B290895441AB849890504E5141C0C6F8AB8F895441D5A2E4D3504E5141CE0C206F8E895441E9CF7503514E5141A8006C8F8D89544147F7CF92514E5141C0A1ED448C895441119EB6F6514E514172F1CB898B8954418603AE8F524E5141ED3020938A89544104ADCFD1524E5141A60884298A8954416373A689544E514143025AEB87895441A4A404D9574E514176AE379E838954416593C82A584E51417F24F73383895441549F86605A4E51414F92356C7F895441D66E54355C4E51418785685C7C8954411E8438D95E4E514187E6D8F477895441A2729043604E51412D545D9875895441EB0483A3604E5141FE121A1C758954419898FA0C624E5141A954185373895441550074E8624E5141E7819C3D7289544148E17AD4634E5141333333137189544132964FBD654E514190F1503E708954410B7F30DD654E514193153C287089544108B0DAD3684E5141B8F7B91A6E89544159F52A326D4E514136D485036B8954411F85EBB16D4E514185EB51A86A8954410408555F6E4E514152E991FE69895441738D0FAF6F4E5141EF68EEB568895441574CBB96704E5141D6E82AA867895441A4703D4A724E5141AE47E1AA6589544148ECAE63724E5141BB65DC53658954412F4E00F2734E5141C70A9101608954411303EC34744E5141E5F58F4C5F895441FE71D741764E514188A639FA5989544162DA3F69774E514128ABA6FC56895441FE619691774E514178A323A856895441003A3DDB784E5141060E7DF5538954413FCC9607794E5141354792985389544186BE94E0794E51412E8ABA3A528954414F09B2B97A4E51414966B0DE50895441C6A1D6FB7C4E5141C7513E924D8954412AA4049E7E4E51414460712F4B89544138F4A0C7814E51410D5EE990468954413D0AD713844E51415C8FC2354389544177038552844E514104AFCDB942895441FB959ADC854E5141FFC9A1A83F8954416DC690C9854E5141A7F4BA493F8954412910EF5E854E5141814D10383D895441C4D98222844E5141F5A0BF793C89544193F9091E844E5141F5DF1C803C895441E9B89F34824E51410B413C5E3F895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571829 - 3823328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000027000000D7A3706D704E5141EC51B82E3189544133333303604E514114AE47914D8954415C8FC2155C4E51413D0AD76355895441B81E85CB494E5141713D0A277489544148E17A343A4E51418FC2F5688E89544152B81EA5254E51417B14AEE7B0895441CDCCCCAC274E51413D0AD7E3B1895441CDCCCC1C424E5141B81E85ABB989544114AE47D14F4E5141E17A140E9E8954419A9999894F4E5141713D0A779A895441000000C04F4E5141E17A14EE96895441CDCCCCEC4F4E5141666666869389544133333303504E5141D7A370CD91895441C3F5289C504E5141F6285C7F8F89544100000000514E51417B14AE978D895441C3F5287C514E5141F6285C6F8C895441F6285CFF514E51419A9999798B895441295C8FD2524E514185EB51288A895441A4703D5A544E51418FC2F52888895441AE47E12A584E51413D0AD733838954418FC2F5885A4E5141713D0A277F895441AE47E14A604E5141C3F5288C7589544148E17AD4634E51413333331371895441AE47E1BA654E51410000004070895441EC51B8DE684E5141333333136E895441333333D36B4E5141E17A14FE6B8954411F85EBB16D4E514185EB51A86A89544152B81EB56F4E5141000000B068895441A4703D4A724E5141AE47E1AA65895441AE47E1FA734E5141333333E35F895441713D0A67774E514114AE47015789544185EB5108794E5141713D0A9753895441EC51B8AE7A4E5141EC51B8EE508954413D0AD713844E51415C8FC23543895441D7A370DD854E5141CDCCCCAC3F895441F6285C5F854E514185EB51383D8954418FC2F5A8774E51418FC2F5F83489544185EB51C8714E51411F85EBE130895441D7A3706D704E5141EC51B82E31895441
+</a>
+
+<b>
+01060000000100000001030000000100000067000000E9B89F34824E51410B413C5E3F895441F2566772814E514107D4908140895441575171397F4E514113A585584489544173AE915F7C4E5141D8C8C34749895441626523377C4E514167C1798A4989544103E50A86784E5141C92EE2A14F8954418E5FA3A1774E51418DD0F840518954418D2B3465754E5141C9A7D2545589544199D4D02E754E5141574600B8558954416EDF5B6C744E5141707B86E45689544159BA640F734E514152E3D5FF5889544133E964AE724E51411C6E17C15989544179799F79724E5141904DA22A5A89544116D566D3704E5141559613775D895441B5E6AD1C6E4E514103D46A0462895441B639227C6B4E5141FA74CE8566895441873AC95F6B4E5141D27D90B666895441AB5E188C6A4E5141B988762168895441E2DCD148694E51413442A64B6A895441AF866542694E51414BF542526A895441600DE9E4654E5141A3EA15C96D89544113AA224C624E51415768E70371895441C60CBA2A614E514194F5C707728954414D079F3E604E5141180881147389544140A4DD325F4E5141DF9D824674895441B29C37DB5E4E5141120133E774895441DFC9C07B5D4E5141F7D88C6B77895441776258865B4E51418983DFA67A89544173EEB8E5594E514136ABBE2A7D895441657F798B584E51416570AE677F8954418F229527584E51411DE77E138089544155D0FCF5564E5141C67E1E21828954417FD440E7564E514186527E378289544147A84F94544E51411E8CECBE858954419BD84F4A544E51414F134B2F868954419E4C4DBB514E5141817DD9F988895441225FAB1D514E5141F2F4CFA58989544190454889504E5141DDF21F978A8954418A52A2914F4E5141BB19042F8C895441B97EDE7F4F4E51416E5DD38D8C8954413CD2A6344F4E5141249D0C418E8954413C4A50294F4E51413D1D75F68E895441F22CC9DA4E4E5141CAC5961C948954415E9DC2BE4E4E514186050BE897895441FF027EBA4E4E514147594C9B9889544113A13C514F4E5141362EC0D59A895441E55D5D574F4E5141174B97EC9A89544178012DA64F4E5141FC6657129C8954415D7CB4894F4E5141B0FC4A759A89544133A23C984F4E5141F93B8D83998954416BC246BC4F4E5141C4EA052C9789544136F9ACD54F4E5141714F554895895441C920E9F04F4E5141FD917A3593895441B5B86004504E5141BE72E5C891895441F3136D4C504E5141EBE7F3B290895441AB849890504E5141C0C6F8AB8F895441D5A2E4D3504E5141CE0C206F8E895441E9CF7503514E5141A8006C8F8D89544147F7CF92514E5141C0A1ED448C895441119EB6F6514E514172F1CB898B8954418603AE8F524E5141ED3020938A89544104ADCFD1524E5141A60884298A8954416373A689544E514143025AEB87895441A4A404D9574E514176AE379E838954416593C82A584E51417F24F73383895441549F86605A4E51414F92356C7F895441D66E54355C4E51418785685C7C8954411E8438D95E4E514187E6D8F477895441A2729043604E51412D545D9875895441EB0483A3604E5141FE121A1C758954419898FA0C624E5141A954185373895441550074E8624E5141E7819C3D7289544148E17AD4634E5141333333137189544132964FBD654E514190F1503E708954410B7F30DD654E514193153C287089544108B0DAD3684E5141B8F7B91A6E89544159F52A326D4E514136D485036B8954411F85EBB16D4E514185EB51A86A8954410408555F6E4E514152E991FE69895441738D0FAF6F4E5141EF68EEB568895441574CBB96704E5141D6E82AA867895441A4703D4A724E5141AE47E1AA6589544148ECAE63724E5141BB65DC53658954412F4E00F2734E5141C70A9101608954411303EC34744E5141E5F58F4C5F895441FE71D741764E514188A639FA5989544162DA3F69774E514128ABA6FC56895441FE619691774E514178A323A856895441003A3DDB784E5141060E7DF5538954413FCC9607794E5141354792985389544186BE94E0794E51412E8ABA3A528954414F09B2B97A4E51414966B0DE50895441C6A1D6FB7C4E5141C7513E924D8954412AA4049E7E4E51414460712F4B89544138F4A0C7814E51410D5EE990468954413D0AD713844E51415C8FC2354389544177038552844E514104AFCDB942895441FB959ADC854E5141FFC9A1A83F8954416DC690C9854E5141A7F4BA493F8954412910EF5E854E5141814D10383D895441C4D98222844E5141F5A0BF793C89544193F9091E844E5141F5DF1C803C895441E9B89F34824E51410B413C5E3F895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571829 - 432151
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000027000000D7A3706D704E5141EC51B82E3189544133333303604E514114AE47914D8954415C8FC2155C4E51413D0AD76355895441B81E85CB494E5141713D0A277489544148E17A343A4E51418FC2F5688E89544152B81EA5254E51417B14AEE7B0895441CDCCCCAC274E51413D0AD7E3B1895441CDCCCC1C424E5141B81E85ABB989544114AE47D14F4E5141E17A140E9E8954419A9999894F4E5141713D0A779A895441000000C04F4E5141E17A14EE96895441CDCCCCEC4F4E5141666666869389544133333303504E5141D7A370CD91895441C3F5289C504E5141F6285C7F8F89544100000000514E51417B14AE978D895441C3F5287C514E5141F6285C6F8C895441F6285CFF514E51419A9999798B895441295C8FD2524E514185EB51288A895441A4703D5A544E51418FC2F52888895441AE47E12A584E51413D0AD733838954418FC2F5885A4E5141713D0A277F895441AE47E14A604E5141C3F5288C7589544148E17AD4634E51413333331371895441AE47E1BA654E51410000004070895441EC51B8DE684E5141333333136E895441333333D36B4E5141E17A14FE6B8954411F85EBB16D4E514185EB51A86A89544152B81EB56F4E5141000000B068895441A4703D4A724E5141AE47E1AA65895441AE47E1FA734E5141333333E35F895441713D0A67774E514114AE47015789544185EB5108794E5141713D0A9753895441EC51B8AE7A4E5141EC51B8EE508954413D0AD713844E51415C8FC23543895441D7A370DD854E5141CDCCCCAC3F895441F6285C5F854E514185EB51383D8954418FC2F5A8774E51418FC2F5F83489544185EB51C8714E51411F85EBE130895441D7A3706D704E5141EC51B82E31895441
+</a>
+
+<b>
+01060000000100000001030000000100000067000000EDB89F34824E51410E413C5E3F895441F1566772814E514103D49081408954415C5171397F4E514110A585584489544173AE915F7C4E5141D8C8C34749895441606523377C4E514162C1798A4989544101E50A86784E5141C92EE2A14F8954418B5FA3A1774E51418CD0F840518954418B2B3465754E5141CDA7D2545589544199D4D02E754E5141574600B8558954416FDF5B6C744E51416F7B86E45689544154BA640F734E514157E3D5FF588954412EE964AE724E51411B6E17C15989544178799F79724E5141934DA22A5A89544116D566D3704E5141559613775D895441B8E6AD1C6E4E5141FFD36A0462895441B139227C6B4E5141F874CE8566895441873AC95F6B4E5141D27D90B666895441A65E188C6A4E5141BE88762168895441E2DCD148694E51413442A64B6A895441AD866542694E514148F542526A895441600DE9E4654E5141A3EA15C96D8954410FAA224C624E51415A68E70371895441C10CBA2A614E514198F5C707728954414C079F3E604E5141130881147389544140A4DD325F4E5141DF9D824674895441AF9C37DB5E4E5141140133E774895441DFC9C07B5D4E5141F7D88C6B77895441776258865B4E51418983DFA67A89544174EEB8E5594E514136ABBE2A7D895441687F798B584E51416170AE677F89544191229527584E51411CE77E138089544155D0FCF5564E5141C67E1E21828954417CD440E7564E514181527E378289544149A84F94544E51411A8CECBE858954419BD84F4A544E51414F134B2F868954419A4C4DBB514E5141807DD9F9888954411F5FAB1D514E5141F5F4CFA58989544194454889504E5141DAF21F978A8954418652A2914F4E5141C019042F8C895441BB7EDE7F4F4E51416A5DD38D8C8954413CD2A6344F4E5141279D0C418E8954413B4A50294F4E5141381D75F68E895441F02CC9DA4E4E5141CAC5961C948954415E9DC2BE4E4E514182050BE897895441FB027EBA4E4E51414A594C9B9889544110A13C514F4E5141392EC0D59A895441EA5D5D574F4E5141154B97EC9A89544176012DA64F4E5141FA6657129C8954415E7CB4894F4E5141B3FC4A759A89544132A23C984F4E5141FE3B8D839989544167C246BC4F4E5141C6EA052C9789544132F9ACD54F4E5141734F554895895441CB20E9F04F4E514102927A3593895441B2B86004504E5141C172E5C891895441F5136D4C504E5141EFE7F3B290895441A6849890504E5141BBC6F8AB8F895441D7A2E4D3504E5141D00C206F8E895441E6CF7503514E5141A4006C8F8D89544144F7CF92514E5141C4A1ED448C8954410C9EB6F6514E514170F1CB898B8954418903AE8F524E5141ED3020938A89544107ADCFD1524E5141A30884298A8954416773A689544E51413F025AEB87895441A0A404D9574E514178AE379E838954416293C82A584E51417A24F73383895441569F86605A4E51415392356C7F895441D86E54355C4E51418585685C7C895441208438D95E4E51418CE6D8F4778954419F729043604E51412F545D9875895441ED0483A3604E5141FC121A1C758954419898FA0C624E5141AB54185373895441580074E8624E5141EC819C3D7289544148E17AD4634E5141333333137189544136964FBD654E514195F1503E708954410E7F30DD654E514190153C287089544105B0DAD3684E5141B3F7B91A6E89544157F52A326D4E514135D485036B8954411F85EBB16D4E514185EB51A86A8954410508555F6E4E514157E991FE69895441718D0FAF6F4E5141F468EEB5688954415C4CBB96704E5141D7E82AA867895441A4703D4A724E5141AE47E1AA6589544147ECAE63724E5141BC65DC53658954412F4E00F2734E5141CA0A9101608954411303EC34744E5141E2F58F4C5F8954410272D741764E51418AA639FA5989544161DA3F69774E514125ABA6FC5689544102629691774E514173A323A856895441FD393DDB784E5141080E7DF55389544140CC9607794E5141354792985389544189BE94E0794E51412A8ABA3A528954415209B2B97A4E51414566B0DE50895441C3A1D6FB7C4E5141CA513E924D8954412AA4049E7E4E51414060712F4B89544137F4A0C7814E5141085EE990468954413D0AD713844E51415C8FC2354389544175038552844E514100AFCDB942895441F9959ADC854E5141FFC9A1A83F8954416CC690C9854E5141A8F4BA493F8954412E10EF5E854E5141804D10383D895441C4D98222844E5141F5A0BF793C89544193F9091E844E5141F5DF1C803C895441EDB89F34824E51410E413C5E3F895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 2306685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC1917454411F85EB71B17C51418FC2F56893745441CDCCCC7CAC7C5141D7A370DD957454419A999989AB7C51410AD7A3F095745441
+</a>
+
+<b>
+0106000000010000000103000000010000004F00000071720595C77C5141E7BE65DE8E74544153B541DBC87C5141B86F6EDF8F745441DD4BF543C97C514107C9C7369074544148493678C97C51419EFF89609074544180F440E0CA7C5141F2B7E67F917454416F266416CD7C5141B2060E67937454412A986A53CD7C5141D850F79993745441B24BF806CF7C51418166A50895745441010F2D3BD07C514100228630967454413CE2FE6DD07C51419F904F61967454413CE2FE6DD07C51416A608FE2967454413CE2FE6DD07C5141A19C2B7297745441806B0325D07C5141B6C4BFC99774544105A662DECF7C5141B0B1801E987454415FF18D2FCE7C51413A48878599745441F2C79E23CE7C5141A710DE8A9974544130D457FFCB7C5141C40F09E09A74544100000020D17C5141D7A3703D9B745441AE47E1FADA7C514152B81EC59B7454419A999999DB7C5141B81E85CB9B745441000000B0E07C514148E17A24977454417B14AE67E27C514100000030967454419A999989E67C5141000000909474544185EB5178E67C514133333313947454413D0AD733F47C51415C8FC2C594745441B81E852BF47C51410000003093745441C3F5281CF47C51413D0AD7238B745441713D0A07F47C51418FC2F57887745441713D0AF7F37C51411F85EBB18674544114AE47D1E27C51411F85EB318874544185EB5178DC7C51419A9999F989745441FD90BC1BD67C51416ACE37CB8A74544177C7E0A1D57C514108BE822C8D745441EDCCC7D6D47C5141A7ADCD8D8F7454415FA171BAD37C5141AF0F483090745441424AC581D17C5141F05B9744907454412A24569ACF7C5141569D89348E745441534A36C7CD7C51417EC369618C745441B45AEB65CB7C5141A7E9498E8A745441123A63B3C87C51418B929D5588745441ED803CD8C57C5141F0D38F458674544180194C46C27C51414EB3079383745441D1650CA0BE7C5141A330053E80745441C40ED1ACB87C5141E28793017B74544122EE48FAB57C514184E497B478745441B4865868B27C514195E408FA74745441C8B706FFAE7C51416067EDD970745441F1DDE62BAD7C514179C9D8C16D745441D6863AF3AA7C5141D17713BE6A745441CE603C51A57C5141023CEA8D64745441EC51B89EA47C51413D0AD7836474544114AE47C1A37C5141B81E859B64745441F6285CDFA27C51411F85EB91647454415C8FC285A27C5141C3F5286C64745441000000D0A07C51416666660663745441EC51B8CE9E7C5141EC51B85E61745441D7A3701D9D7C51419A999919607454415C8FC2F5987C514152B81E95627454418FC2F568957C51411F85EB91647454419A999959907C5141F6285C6F657454419A9999498C7C5141D7A370BD6674544114AE47518A7C5141D7A370AD67745441E17A145E887C51413D0AD713697454413D0AD7A38B7C5141713D0A476B74544114AE47F18C7C51413D0AD7936E7454418FC2F5688E7C514148E17AC4747454417B14AE87917C51419A9999F976745441295C8F72927C5141713D0A677B745441295C8FC2927C5141B81E857B7C745441D7A3701D997C5141000000307B745441666666D6A67C5141E17A143E78745441C3F5289CAC7C51410000002077745441C3F5289CAD7C5141EC51B82E7774544133333343B17C51413D0AD7F37A745441000000A0B97C514100000060837454413D0AD753BF7C51415C8FC235897454411E52AEA3C37C51410DA3E10E8C74544169BB5701C77C5141C26C0B6A8E74544171720595C77C5141E7BE65DE8E745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 2306687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC1917454411F85EB71B17C51418FC2F56893745441CDCCCC7CAC7C5141D7A370DD957454419A999989AB7C51410AD7A3F095745441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000295C8FC2927C5141B81E857B7C7454415C8FC235957C5141E17A14EE84745441E17A14FE8C7C51413D0AD7D3877454413D0AD7A3947C51417B14AEA78C745441295C8F029D7C5141A4703D2A9174544152B81E55A47C5141D7A3700D947454419A999989AB7C51410AD7A3F0957454415C19653BB67C5141B0B1801E98745441F3A80A99BC7C51414E2CC35199745441FF743A7DC17C51417527C1E69974544152D271F3C77C51417A993D969A7454415AD9D50DCC7C5141657BAA799A7454415FF18D2FCE7C51413A4887859974544105A662DECF7C5141B0B1801E987454413CE2FE6DD07C5141A19C2B72977454413CE2FE6DD07C51419F904F6196745441B24BF806CF7C51418166A508957454412A986A53CD7C5141D850F799937454416F266416CD7C5141B2060E679374544180F440E0CA7C5141F2B7E67F91745441A4856C45C97C5141DDD200389074544153B541DBC87C5141B86F6EDF8F74544169BB5701C77C5141C26C0B6A8E7454411E52AEA3C37C51410DA3E10E8C7454413D0AD753BF7C51415C8FC23589745441000000A0B97C5141000000608374544133333343B17C51413D0AD7F37A745441C3F5289CAD7C5141EC51B82E77745441C3F5289CAC7C51410000002077745441666666D6A67C5141E17A143E78745441D7A3701D997C5141000000307B745441295C8FC2927C5141B81E857B7C745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 3448789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC1917454411F85EB71B17C51418FC2F56893745441CDCCCC7CAC7C5141D7A370DD957454419A999989AB7C51410AD7A3F095745441
+</a>
+
+<b>
+0106000000010000000103000000010000004F00000071720595C77C5141E7BE65DE8E74544153B541DBC87C5141B86F6EDF8F745441DD4BF543C97C514107C9C7369074544148493678C97C51419EFF89609074544180F440E0CA7C5141F2B7E67F917454416F266416CD7C5141B2060E67937454412A986A53CD7C5141D850F79993745441B24BF806CF7C51418166A50895745441010F2D3BD07C514100228630967454413CE2FE6DD07C51419F904F61967454413CE2FE6DD07C51416A608FE2967454413CE2FE6DD07C5141A19C2B7297745441806B0325D07C5141B6C4BFC99774544105A662DECF7C5141B0B1801E987454415FF18D2FCE7C51413A48878599745441F2C79E23CE7C5141A710DE8A9974544130D457FFCB7C5141C40F09E09A74544100000020D17C5141D7A3703D9B745441AE47E1FADA7C514152B81EC59B7454419A999999DB7C5141B81E85CB9B745441000000B0E07C514148E17A24977454417B14AE67E27C514100000030967454419A999989E67C5141000000909474544185EB5178E67C514133333313947454413D0AD733F47C51415C8FC2C594745441B81E852BF47C51410000003093745441C3F5281CF47C51413D0AD7238B745441713D0A07F47C51418FC2F57887745441713D0AF7F37C51411F85EBB18674544114AE47D1E27C51411F85EB318874544185EB5178DC7C51419A9999F989745441FD90BC1BD67C51416ACE37CB8A74544177C7E0A1D57C514108BE822C8D745441EDCCC7D6D47C5141A7ADCD8D8F7454415FA171BAD37C5141AF0F483090745441424AC581D17C5141F05B9744907454412A24569ACF7C5141569D89348E745441534A36C7CD7C51417EC369618C745441B45AEB65CB7C5141A7E9498E8A745441123A63B3C87C51418B929D5588745441ED803CD8C57C5141F0D38F458674544180194C46C27C51414EB3079383745441D1650CA0BE7C5141A330053E80745441C40ED1ACB87C5141E28793017B74544122EE48FAB57C514184E497B478745441B4865868B27C514195E408FA74745441C8B706FFAE7C51416067EDD970745441F1DDE62BAD7C514179C9D8C16D745441D6863AF3AA7C5141D17713BE6A745441CE603C51A57C5141023CEA8D64745441EC51B89EA47C51413D0AD7836474544114AE47C1A37C5141B81E859B64745441F6285CDFA27C51411F85EB91647454415C8FC285A27C5141C3F5286C64745441000000D0A07C51416666660663745441EC51B8CE9E7C5141EC51B85E61745441D7A3701D9D7C51419A999919607454415C8FC2F5987C514152B81E95627454418FC2F568957C51411F85EB91647454419A999959907C5141F6285C6F657454419A9999498C7C5141D7A370BD6674544114AE47518A7C5141D7A370AD67745441E17A145E887C51413D0AD713697454413D0AD7A38B7C5141713D0A476B74544114AE47F18C7C51413D0AD7936E7454418FC2F5688E7C514148E17AC4747454417B14AE87917C51419A9999F976745441295C8F72927C5141713D0A677B745441295C8FC2927C5141B81E857B7C745441D7A3701D997C5141000000307B745441666666D6A67C5141E17A143E78745441C3F5289CAC7C51410000002077745441C3F5289CAD7C5141EC51B82E7774544133333343B17C51413D0AD7F37A745441000000A0B97C514100000060837454413D0AD753BF7C51415C8FC235897454411E52AEA3C37C51410DA3E10E8C74544169BB5701C77C5141C26C0B6A8E74544171720595C77C5141E7BE65DE8E745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 3450838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC1917454411F85EB71B17C51418FC2F56893745441CDCCCC7CAC7C5141D7A370DD957454419A999989AB7C51410AD7A3F095745441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000295C8FC2927C5141B81E857B7C7454415C8FC235957C5141E17A14EE84745441E17A14FE8C7C51413D0AD7D3877454413D0AD7A3947C51417B14AEA78C745441295C8F029D7C5141A4703D2A9174544152B81E55A47C5141D7A3700D947454419A999989AB7C51410AD7A3F0957454415C19653BB67C5141B0B1801E98745441F3A80A99BC7C51414E2CC35199745441FF743A7DC17C51417527C1E69974544152D271F3C77C51417A993D969A7454415AD9D50DCC7C5141657BAA799A7454415FF18D2FCE7C51413A4887859974544105A662DECF7C5141B0B1801E987454413CE2FE6DD07C5141A19C2B72977454413CE2FE6DD07C51419F904F6196745441B24BF806CF7C51418166A508957454412A986A53CD7C5141D850F799937454416F266416CD7C5141B2060E679374544180F440E0CA7C5141F2B7E67F91745441A4856C45C97C5141DDD200389074544153B541DBC87C5141B86F6EDF8F74544169BB5701C77C5141C26C0B6A8E7454411E52AEA3C37C51410DA3E10E8C7454413D0AD753BF7C51415C8FC23589745441000000A0B97C5141000000608374544133333343B17C51413D0AD7F37A745441C3F5289CAD7C5141EC51B82E77745441C3F5289CAC7C51410000002077745441666666D6A67C5141E17A143E78745441D7A3701D997C5141000000307B745441295C8FC2927C5141B81E857B7C745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574365 - 245064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000000C000000F6285C4F14BC5041B81E854B21265441666666C614BC50410000008022265441CDCCCCEC0EBC50413D0AD7C32D26544114AE475124BC50413333330340265441CDCCCCDC2BBC504185EB51683F26544114AE470125BC50411F85EB0133265441295C8F6222BC504152B81EC52D2654419A9999A91FBC5041666666962726544148E17A541CBC5041F6285CFF1F265441E17A140E18BC5041713D0AB715265441D7A3705D11BC50418FC2F5A819265441F6285C4F14BC5041B81E854B21265441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000666666C614BC50410000008022265441769A03B114BC5041367E2EA922265441A5D213A313BC5041BBEAC36D25265441FDCF0A1E15BC504159EDCCF22326544142F8C69D18BC5041E4DBF7B7202654418620831D1CBC50417F9742E91F26544105E332481CBC50416B07D2E11F265441F4CD3F821BBC5041DA1EB3051E265441E17A140E18BC5041713D0AB715265441483E1DCD15BC504111C9440B1726544178732F3E15BC5041FA468D5F17265441954497FB14BC5041F98D883D182654413B00E22C14BC5041EB46CAE9182654416E30B93B13BC50418EBB56C718265441274A73AF12BC5041BBD6A3E118265441D7A3705D11BC50418FC2F5A819265441F6285C4F14BC5041B81E854B21265441666666C614BC50410000008022265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574365 - 325892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000000C000000F6285C4F14BC5041B81E854B21265441666666C614BC50410000008022265441CDCCCCEC0EBC50413D0AD7C32D26544114AE475124BC50413333330340265441CDCCCCDC2BBC504185EB51683F26544114AE470125BC50411F85EB0133265441295C8F6222BC504152B81EC52D2654419A9999A91FBC5041666666962726544148E17A541CBC5041F6285CFF1F265441E17A140E18BC5041713D0AB715265441D7A3705D11BC50418FC2F5A819265441F6285C4F14BC5041B81E854B21265441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000666666C614BC50410000008022265441769A03B114BC5041367E2EA922265441A5D213A313BC5041BBEAC36D25265441FDCF0A1E15BC504159EDCCF22326544142F8C69D18BC5041E4DBF7B7202654418620831D1CBC50417F9742E91F26544105E332481CBC50416B07D2E11F265441F4CD3F821BBC5041DA1EB3051E265441E17A140E18BC5041713D0AB715265441483E1DCD15BC504111C9440B1726544178732F3E15BC5041FA468D5F17265441954497FB14BC5041F98D883D182654413B00E22C14BC5041EB46CAE9182654416E30B93B13BC50418EBB56C718265441274A73AF12BC5041BBD6A3E118265441D7A3705D11BC50418FC2F5A819265441F6285C4F14BC5041B81E854B21265441666666C614BC50410000008022265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585595 - 1527178
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441A4703DBAE7DF50418FC2F5D891ED5441A4703D8AE0DF50416666664694ED5441A4703DCADCDF50411F85EB6194ED5441000000C0D7DF50418FC2F58894ED54415C8FC295D2DF504152B81EC595ED5441F6285C3FC8DF5041E17A149E9AED544152B81EF5C5DF50417B14AE779EED5441
+</a>
+
+<b>
+010600000001000000010300000001000000280000005124AB7F02E05041314E728DA8ED54418F2EFC1501E050414E83BDA8A8ED5441C56EA5F1FEDF5041DAEDEDF2A8ED54414678FF6AFDDF5041869DF743A9ED54411060EC1CF8DF5041453DB15DAAED5441F8D03276EFDF504123DAED4CACED5441E5D48CEBEBDF504115F48722ADED54410A963056E9DF5041942758BEADED544166ECB47CE7DF5041C308E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413915C287E5DF5041DCA43BC3A9ED5441849F385BE5DF5041E305AA4EA9ED5441316D2A71E4DF5041EF130FEAA6ED5441D683131CE4DF5041FB8D590BA6ED544137476981E2DF5041E6C14826A6ED54415C024D08DADF5041EF4FCE2BA8ED5441D0AA1E66D7DF5041D422A8CCA8ED5441790E9DD3D3DF5041BB9DD8A6A9ED54418123416BD0DF5041ACD0FA76AAED544143A64055CEDF50410FBD62F6AAED5441FC9EE061CDDF50418BAC7330ABED5441F02EFE67CCDF50417031126CABED54416666A8E3CBDF504187FEA48BABED5441E7AD7455CDDF5041676F9BFAAEED544152A89964CFDF504164AF9696B3ED54416A1EB821D1DF50417901F67AB7ED5441DE64ABEDD2DF5041F5E1D3FABAED5441C6BA1D9EE0DF5041EEEA95B8B7ED5441B745FAEAE7DF5041A2D6B2FBB5ED54413D1B28D9EEDF5041B8D75955B4ED544196138234F6DF50415AFD07A6B2ED5441C515E1FAFADF5041EBE980A9B1ED544191830C1EFEDF5041F4FB610BB1ED5441A7267B1504E0504120AA1796B0ED544158DE78F705E0504167AA1471B0ED5441957A1C8906E0504103A60058B0ED5441D5C6DEF005E05041B336366BACED5441248E869505E05041C75D0A84AAED5441AFCAAA5205E050411701E356A8ED54415124AB7F02E05041314E728DA8ED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585595 - 4200595
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441A4703DBAE7DF50418FC2F5D891ED5441A4703D8AE0DF50416666664694ED5441A4703DCADCDF50411F85EB6194ED5441000000C0D7DF50418FC2F58894ED54415C8FC295D2DF504152B81EC595ED5441F6285C3FC8DF5041E17A149E9AED544152B81EF5C5DF50417B14AE779EED5441
+</a>
+
+<b>
+010600000001000000010300000001000000280000005124AB7F02E05041314E728DA8ED54418F2EFC1501E050414E83BDA8A8ED5441C56EA5F1FEDF5041DAEDEDF2A8ED54414678FF6AFDDF5041869DF743A9ED54411060EC1CF8DF5041453DB15DAAED5441F8D03276EFDF504123DAED4CACED5441E5D48CEBEBDF504115F48722ADED54410A963056E9DF5041942758BEADED544166ECB47CE7DF5041C308E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413915C287E5DF5041DCA43BC3A9ED5441849F385BE5DF5041E305AA4EA9ED5441316D2A71E4DF5041EF130FEAA6ED5441D683131CE4DF5041FB8D590BA6ED544137476981E2DF5041E6C14826A6ED54415C024D08DADF5041EF4FCE2BA8ED5441D0AA1E66D7DF5041D422A8CCA8ED5441790E9DD3D3DF5041BB9DD8A6A9ED54418123416BD0DF5041ACD0FA76AAED544143A64055CEDF50410FBD62F6AAED5441FC9EE061CDDF50418BAC7330ABED5441F02EFE67CCDF50417031126CABED54416666A8E3CBDF504187FEA48BABED5441E7AD7455CDDF5041676F9BFAAEED544152A89964CFDF504164AF9696B3ED54416A1EB821D1DF50417901F67AB7ED5441DE64ABEDD2DF5041F5E1D3FABAED5441C6BA1D9EE0DF5041EEEA95B8B7ED5441B745FAEAE7DF5041A2D6B2FBB5ED54413D1B28D9EEDF5041B8D75955B4ED544196138234F6DF50415AFD07A6B2ED5441C515E1FAFADF5041EBE980A9B1ED544191830C1EFEDF5041F4FB610BB1ED5441A7267B1504E0504120AA1796B0ED544158DE78F705E0504167AA1471B0ED5441957A1C8906E0504103A60058B0ED5441D5C6DEF005E05041B336366BACED5441248E869505E05041C75D0A84AAED5441AFCAAA5205E050411701E356A8ED54415124AB7F02E05041314E728DA8ED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>591518 - 1824296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000230000005C8FC2D575C75041D7A3700D473654410AD7A350AAC75041D7A3706D363654410AD7A3C0D3C75041CDCCCC4C293654413D0AD753D5C75041E17A142E26365441295C8F22D3C75041CDCCCCBC1F3654413D0AD7A3CFC75041CDCCCCCC14365441D7A3701DCFC750415C8FC205133654418FC2F568CCC750417B14AED7093654419A999959CBC75041C3F5280C06365441B81E854BC8C7504152B81E65043654413333337380C750415C8FC2251B365441000000A080C75041CDCCCC2C1C3654413D0AD7F37EC750417B14AED71C3654417B14AE1781C7504185EB518822365441B81E85AB81C75041A4703D9A23365441F6285C0F85C75041E17A144E2336544114AE477185C75041000000A0243654415C8FC29588C7504166666696233654413333330389C750419A9999E92436544114AE47E185C75041295C8FF2253654410AD7A3807DC75041000000302836544148E17A247DC7504152B81E5527365441713D0AF77BC7504148E17AB42336544152B81E857AC75041F6285C4F24365441D7A3705D79C75041B81E851B21365441D7A370ED7AC7504114AE47812036544114AE474179C75041E17A144E1B3654418FC2F5F87BC75041CDCCCC6C1A365441713D0AC770C750418FC2F578143654411F85EB1164C75041CDCCCC9C0D36544148E17AD462C75041B81E856B0F36544185EB51F868C75041B81E856B20365441E17A14BE6FC75041333333933336544148E17A3475C750410AD7A300453654415C8FC2D575C75041D7A3700D47365441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000965CE0EA80C75041F01DDCFF1A3654418DF7D7BB97C750419C4F55CB26365441A7B80DE6CFC75041842EE5CA15365441BCD06358CBC750417364810B063654413C95470DC8C750419F6DBC8504365441A9EBE4F4C0C75041A53F0FB806365441965CE0EA80C75041F01DDCFF1A365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>591518 - 3196606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000230000005C8FC2D575C75041D7A3700D473654410AD7A350AAC75041D7A3706D363654410AD7A3C0D3C75041CDCCCC4C293654413D0AD753D5C75041E17A142E26365441295C8F22D3C75041CDCCCCBC1F3654413D0AD7A3CFC75041CDCCCCCC14365441D7A3701DCFC750415C8FC205133654418FC2F568CCC750417B14AED7093654419A999959CBC75041C3F5280C06365441B81E854BC8C7504152B81E65043654413333337380C750415C8FC2251B365441000000A080C75041CDCCCC2C1C3654413D0AD7F37EC750417B14AED71C3654417B14AE1781C7504185EB518822365441B81E85AB81C75041A4703D9A23365441F6285C0F85C75041E17A144E2336544114AE477185C75041000000A0243654415C8FC29588C7504166666696233654413333330389C750419A9999E92436544114AE47E185C75041295C8FF2253654410AD7A3807DC75041000000302836544148E17A247DC7504152B81E5527365441713D0AF77BC7504148E17AB42336544152B81E857AC75041F6285C4F24365441D7A3705D79C75041B81E851B21365441D7A370ED7AC7504114AE47812036544114AE474179C75041E17A144E1B3654418FC2F5F87BC75041CDCCCC6C1A365441713D0AC770C750418FC2F578143654411F85EB1164C75041CDCCCC9C0D36544148E17AD462C75041B81E856B0F36544185EB51F868C75041B81E856B20365441E17A14BE6FC75041333333933336544148E17A3475C750410AD7A300453654415C8FC2D575C75041D7A3700D47365441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000965CE0EA80C75041F01DDCFF1A3654418DF7D7BB97C750419C4F55CB26365441A7B80DE6CFC75041842EE5CA15365441BCD06358CBC750417364810B063654413C95470DC8C750419F6DBC8504365441A9EBE4F4C0C75041A53F0FB806365441965CE0EA80C75041F01DDCFF1A365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>631192 - 64873
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+010600000001000000010300000001000000480000001F6E78EF2A51514181C78426E879544101431F0E2B5151416D5BC613E8795441943C24AC2A5151411BC3D76AE779544104C137982951514119B91C8FE5795441B050D26729515141279FAB3BE57954415E4B345424515141F5674C9CE9795441A5E145101D515141A558407AEF795441FFC05EC516515141FF2DEB20F4795441200192111551514132601339F57954419C5967F014515141A7F4699CF57954411C990B48155151414D221598F779544172B4547F165151418565B14CFA795441D407311317515141C067E6F7FA795441FF694C9818515141490C6A74FB795441C8788B89195151418DDEABB2FB79544121FC5A8A1A515141017B8F3FFD795441F3DAA60E1B515141960094EBFE79544115C4C72D1B515141F4EBE9B5FF795441047BC0341A51514139BE2BF4FF795441C2B9F2921B5151411827E67A037A5441B267CB391C5151413875FA50037A5441734E8AA11B515141DA97A456057A5441EB54F95E195151414FCEDC51067A54411D11A22B17515141DD2D2E10077A5441D5FB165E1651514158CA2687067A544149BABFC31451514131970C34027A54413871B8CA1351514198526F91027A54410DB88A1814515141FAA54B25037A5441CCCAA1E70F5151416C0637F8037A5441D5CB00910F51514165C9344C037A5441320E69880E51514107DEDE81027A54413F46FCE40D515141469FAC23017A54418780C4EC0D515141F12C51BF017A5441E9D3A0800E51514165C9344C037A54415D416E970E5151417A4598D6037A5441EE5D2F990F5151416C0637F8037A544191CE1C6E105151412DF5E689047A5441A00D7E4C10515141CB50096A057A5441B2E2DF710F5151414C02FC65067A54418C02E1781051514139927CE9067A5441EDCEB6BC10515141441485F8067A544104BDAC0412515141FBDA24EC067A54411F85EBA11551514133333333067A5441E17A140E175151418FC2F548077A5441EC51B8EE1B51514185EB51A8057A5441AE47E18A1C515141F6285C8F037A5441302AD6F71D5151413BC06697027A544163C53FFA2051514181B46E79017A5441B725168223515141C817DA58097A544189563DAC275151412D0A36B1167A54412BBDC2872A51514137D0D435217A54411A1DA9612B515141E358424A277A54412396A3C72C51514121FF2D412F7A54416989425C2D515141A77B812B2F7A544174A1A55C2B515141A601FA67247A5441032D56492A5151412A47B3581D7A5441A698EB282951514197135914187A544106AD2583285151415E3D011D167A5441934AC52527515141A2EE1F79117A544159E2F8CC2551514157A65E500D7A54410C6BB62C255151413B480E0F0B7A54418E7EEE63225151414FD672A1027A54419C4A5D782151514121DF8B52007A5441F362FD6A1F515141F8D7557BFB7954412A9A07371F515141782A9B22FB795441641A6C2A1F5151413AEDE1FFFA795441A10908D51D51514105092573F8795441EE1F91CB1C515141B359E196F8795441A09752A91A51514173118D29F47954411BAE3D531F5151416E57A94BF0795441FCA9CE8E2551514140F05C70EB7954411F6E78EF2A51514181C78426E8795441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000A92AD6F71D5151410EC06697027A5441AE47E18A1C515141F6285C8F037A5441EC51B8EE1B51514185EB51A8057A5441E17A140E175151418FC2F548077A54411F85EBA11551514133333333067A5441AE47E13A1151514148E17A14077A5441713D0A670F515141CDCCCCAC067A544185EB51A80E51514133333393047A5441CDCCCC2C0B51514166666636FC7954413D0AD7C3095151417B14AE07FD7954417B14AE970A515141295C8FE2FE795441C3F528EC055151411F85EBE1017A544152B81ED50C515141B81E855B1B7A54413D0AD75314515141E17A14FE367A544148E17AD419515141C3F5287C357A5441AE47E11A27515141713D0A87317A54410AD7A3C02C51514114AE4791307A544148E17A042B5151410AD7A390257A54415C8FC2D52951514152B81ED51E7A5441DDF0A6EB28515141F6C4EB481B7A544189563DAC275151412D0A36B1167A5441CC5EB4D223515141F5CA2E5B0A7A5441A25691B12051514100376994017A5441A92AD6F71D5151410EC06697027A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596305 - 1240672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000003D00000085EB517881595141CDCCCC4CBB7A54413D0AD7C380595141B81E85EBBB7A5441E17A140E8059514152B81E75BC7A54415C8FC2857F59514166666676BC7A54419A9999197F59514152B81E85BC7A54411F85EBB17E59514166666626BD7A54411F85EB217E5951413D0AD793BD7A5441295C8FB27D59514152B81EB5BD7A5441D7A370FD7C595141333333B3BD7A5441666666567C595141D7A370FDBD7A5441666666667B5951411F85EB31BE7A544114AE47517B5951413D0AD7E3BE7A54410AD7A3907A5951410AD7A370BF7A5441A4703DCA79595141D7A3701DC07A544114AE4751785951411F85EB61C07A5441D7A3708D7759514114AE4731C07A5441A4703D9A7659514166666626C07A5441F6285CBF75595141E17A14BEC07A54413D0AD763745951417B14AE37C17A54415C8FC2A57359514166666666C17A544152B81E2573595141C3F528ECC17A544114AE474172595141E17A142EC27A5441666666B66F5951411F85EB51C37A5441A4703DBA6E595141666666B6C37A5441AE47E1CA6D595141000000E0C37A5441EC51B8FE6C595141CDCCCC3CC47A5441713D0A076C5951418FC2F588C57A5441A4703D5A6B59514148E17A14C67A54417B14AEC7715951413D0AD703D47A54413D0AD74373595141A4703D5AD37A54419A9999098C5951411F85EBF1C67A5441D7A3705D8F595141C3F528BCCB7A54415C8FC2C591595141CDCCCC5CC87A5441333333C39359514114AE4731C77A5441713D0A47975951419A999959C57A544114AE4731965951413D0AD773C37A5441295C8F3294595141CDCCCC9CBF7A54411F85EB81925951418FC2F5B8BC7A544114AE47C191595141E17A144EBB7A5441CDCCCCDC905951417B14AE67B97A54410000001090595141713D0AD7B77A5441333333238F5951411F85EBA1B67A5441A4703DEA8D59514100000040B77A5441B81E858B8C595141E17A14EEB77A544152B81EE58B5951411F85EBE1B77A544152B81E258B59514148E17AD4B77A54418FC2F5D8895951417B14AE17B87A5441D7A3706D89595141C3F5285CB87A5441C3F528DC8859514185EB5118B97A5441B81E857B885951411F85EB61B97A544152B81EA5875951411F85EB91B97A54415C8FC2D586595141AE47E1CAB97A5441AE47E16A865951418FC2F598B97A54415C8FC2C5855951411F85EB41B97A5441333333238559514100000020B97A54413D0AD763845951413D0AD783B97A5441AE47E1BA83595141713D0A47BA7A54410000005083595141EC51B8BEBA7A544148E17AE48259514185EB51F8BA7A544148E17A0482595141B81E851BBB7A544185EB517881595141CDCCCC4CBB7A5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000DFCBD93B8B595141261F19A4B77A544161BE87D98C5951414770A0BCB67A5441AE47E16A8B595141F6285C8FB47A544152B81EE5875951410AD7A320B07A5441F6285C9F86595141D7A3701DAE7A5441295C8F2286595141B81E859BAF7A544179AD30867A595141602E7DD2B67A5441BC008B54745951410B904649B97A5441E4D9D2826D595141B7C2629DBB7A54414294FFC5695951419CF2A97DBD7A5441666666F666595141E17A142EC17A54417B68CB04685951415BD33928C67A54410E71E2376B595141D444C2B1C47A5441F42D79236D59514118DB67ECC37A544111FD90DB6D595141B8EE7FA2C37A544119B4ADB873595141010CDD47C17A54419B40206674595141C3343B02C17A5441D9E68EC575595141CDB1FB70C07A5441507F85A076595141207C2012C07A544168761452795951418656A1EBBE7A544133D5C46A7B5951411010F012BE7A54419368FF977F595141375EE964BC7A54414D55E92B80595141AE516C29BC7A54413D0AD7C380595141B81E85EBBB7A544170028CEC82595141440F020CBB7A5441AE47E16A865951418FC2F598B97A54412B50D45789595141202D2678B87A54412331355C8959514126777A72B87A54417896CA7B8A595141BDBBBCF6B77A5441E71C7C9C8A595141117A1FF0B77A54418CAD34138B5951415C3BD7BAB77A5441DFCBD93B8B595141261F19A4B77A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596305 - 3573848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000003D00000085EB517881595141CDCCCC4CBB7A54413D0AD7C380595141B81E85EBBB7A5441E17A140E8059514152B81E75BC7A54415C8FC2857F59514166666676BC7A54419A9999197F59514152B81E85BC7A54411F85EBB17E59514166666626BD7A54411F85EB217E5951413D0AD793BD7A5441295C8FB27D59514152B81EB5BD7A5441D7A370FD7C595141333333B3BD7A5441666666567C595141D7A370FDBD7A5441666666667B5951411F85EB31BE7A544114AE47517B5951413D0AD7E3BE7A54410AD7A3907A5951410AD7A370BF7A5441A4703DCA79595141D7A3701DC07A544114AE4751785951411F85EB61C07A5441D7A3708D7759514114AE4731C07A5441A4703D9A7659514166666626C07A5441F6285CBF75595141E17A14BEC07A54413D0AD763745951417B14AE37C17A54415C8FC2A57359514166666666C17A544152B81E2573595141C3F528ECC17A544114AE474172595141E17A142EC27A5441666666B66F5951411F85EB51C37A5441A4703DBA6E595141666666B6C37A5441AE47E1CA6D595141000000E0C37A5441EC51B8FE6C595141CDCCCC3CC47A5441713D0A076C5951418FC2F588C57A5441A4703D5A6B59514148E17A14C67A54417B14AEC7715951413D0AD703D47A54413D0AD74373595141A4703D5AD37A54419A9999098C5951411F85EBF1C67A5441D7A3705D8F595141C3F528BCCB7A54415C8FC2C591595141CDCCCC5CC87A5441333333C39359514114AE4731C77A5441713D0A47975951419A999959C57A544114AE4731965951413D0AD773C37A5441295C8F3294595141CDCCCC9CBF7A54411F85EB81925951418FC2F5B8BC7A544114AE47C191595141E17A144EBB7A5441CDCCCCDC905951417B14AE67B97A54410000001090595141713D0AD7B77A5441333333238F5951411F85EBA1B67A5441A4703DEA8D59514100000040B77A5441B81E858B8C595141E17A14EEB77A544152B81EE58B5951411F85EBE1B77A544152B81E258B59514148E17AD4B77A54418FC2F5D8895951417B14AE17B87A5441D7A3706D89595141C3F5285CB87A5441C3F528DC8859514185EB5118B97A5441B81E857B885951411F85EB61B97A544152B81EA5875951411F85EB91B97A54415C8FC2D586595141AE47E1CAB97A5441AE47E16A865951418FC2F598B97A54415C8FC2C5855951411F85EB41B97A5441333333238559514100000020B97A54413D0AD763845951413D0AD783B97A5441AE47E1BA83595141713D0A47BA7A54410000005083595141EC51B8BEBA7A544148E17AE48259514185EB51F8BA7A544148E17A0482595141B81E851BBB7A544185EB517881595141CDCCCC4CBB7A5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000DFCBD93B8B595141261F19A4B77A544161BE87D98C5951414770A0BCB67A5441AE47E16A8B595141F6285C8FB47A544152B81EE5875951410AD7A320B07A5441F6285C9F86595141D7A3701DAE7A5441295C8F2286595141B81E859BAF7A544179AD30867A595141602E7DD2B67A5441BC008B54745951410B904649B97A5441E4D9D2826D595141B7C2629DBB7A54414294FFC5695951419CF2A97DBD7A5441666666F666595141E17A142EC17A54417B68CB04685951415BD33928C67A54410E71E2376B595141D444C2B1C47A5441F42D79236D59514118DB67ECC37A544111FD90DB6D595141B8EE7FA2C37A544119B4ADB873595141010CDD47C17A54419B40206674595141C3343B02C17A5441D9E68EC575595141CDB1FB70C07A5441507F85A076595141207C2012C07A544168761452795951418656A1EBBE7A544133D5C46A7B5951411010F012BE7A54419368FF977F595141375EE964BC7A54414D55E92B80595141AE516C29BC7A54413D0AD7C380595141B81E85EBBB7A544170028CEC82595141440F020CBB7A5441AE47E16A865951418FC2F598B97A54412B50D45789595141202D2678B87A54412331355C8959514126777A72B87A54417896CA7B8A595141BDBBBCF6B77A5441E71C7C9C8A595141117A1FF0B77A54418CAD34138B5951415C3BD7BAB77A5441DFCBD93B8B595141261F19A4B77A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596455 - 3998640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -157  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A3700D7E515141D7A370DDAF7A544114AE47617E515141F6285C2FAA7A54417B14AE477E515141C3F528FCA37A54410AD7A3907C51514166666656A37A5441C3F5282C6F515141295C8F22A47A54418FC2F51861515141295C8F02A47A544148E17A2463515141A4703D8AB17A54418FC2F5A86451514148E17A14BB7A5441D7A370BD6E51514185EB5138BA7A54418FC2F5A879515141D7A3703DB97A544114AE47D17A51514100000070B97A5441E17A144E7D515141B81E85DBB37A5441000000F07D51514166666606B27A5441D7A3700D7E515141D7A370DDAF7A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000038F009356551514173618708BB7A5441000000B065515141AE47E13ABE7A5441CDCCCCDC66515141713D0A47C57A54413D0AD76367515141295C8F62CC7A544161E3B97B67515141799914FACE7A54410F9C9AC768515141E93D651FD17A54411E5447D767515141883E995BD37A54417B14AEF767515141C3F528ACD57A5441529CC07E6E5151417E85F338D37A544100C696A86D515141EAC21934D07A5441C887EC5E735151413AD1EC85CC7A544162AB7C9F785151412D175AFDCA7A5441D8FEE3D77B51514196529F1BCA7A5441F44EC9797C515141A701289AC87A54411397FFA47B515141B707D264C67A5441C5618BC97A515141CBF05CAEC37A5441431C19657A5151410C75983FC17A544150643B837A51514151A04894BC7A544126CA8E327B515141A64198C9B97A544190B5E4ED7A515141CEA7B6E4B87A544126919127655151417EAD1669BA7A5441AB4BB63D6551514107F2C907BB7A544138F009356551514173618708BB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597524 - 1767955
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E0000000000000052D55041EC51B8CE097A54415C8FC2E54FD5504100000030057A544185EB51284CD5504152B81E85FB795441A4703D8A4AD55041AE47E18AF779544114AE473144D5504100000040F8795441A4703D2A23D55041F6285C0FF179544114AE472123D550415C8FC275EE795441F6285CDF21D550419A999909EE79544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441713D0A47BCD45041713D0A97DB79544114AE4701B9D4504148E17A84DD795441EC51B8EEACD45041E17A14BEE37954413D0AD773B4D4504185EB5168E57954417B14AEE7C1D450417B14AEE7E7795441E17A144ED7D45041C3F528FCEB7954418FC2F598DCD45041000000A0ED795441D7A3707DFCD4504152B81E95F87954415C8FC2551ED55041295C8F22047A5441CDCCCCFC20D55041F6285CDF047A544148E17AA424D550419A9999E9057A5441AE47E10A33D5504185EB5158097A5441E17A14DE37D55041F6285C3F0A7A5441F6285CEF3CD550415C8FC2C50A7A5441A4703D3A51D550411F85EBF10A7A54410000000052D55041EC51B8CE097A5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008C50DE1809D55041A4840CADE579544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441713D0A47BCD45041713D0A97DB79544114AE4701B9D4504148E17A84DD795441EC51B8EEACD45041E17A14BEE37954413D0AD773B4D4504185EB5168E57954417B14AEE7C1D450417B14AEE7E7795441E17A144ED7D45041C3F528FCEB7954418FC2F598DCD45041000000A0ED795441D7A3707DFCD4504152B81E95F87954413C4583B702D55041AABDCAC6FA795441CA0B8E9C08D55041CAD60967E87954410E7661A208D5504192943B54E87954419080507A09D5504129B3EFCDE57954418C50DE1809D55041A4840CADE5795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597524 - 3288871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E0000000000000052D55041EC51B8CE097A54415C8FC2E54FD5504100000030057A544185EB51284CD5504152B81E85FB795441A4703D8A4AD55041AE47E18AF779544114AE473144D5504100000040F8795441A4703D2A23D55041F6285C0FF179544114AE472123D550415C8FC275EE795441F6285CDF21D550419A999909EE79544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441713D0A47BCD45041713D0A97DB79544114AE4701B9D4504148E17A84DD795441EC51B8EEACD45041E17A14BEE37954413D0AD773B4D4504185EB5168E57954417B14AEE7C1D450417B14AEE7E7795441E17A144ED7D45041C3F528FCEB7954418FC2F598DCD45041000000A0ED795441D7A3707DFCD4504152B81E95F87954415C8FC2551ED55041295C8F22047A5441CDCCCCFC20D55041F6285CDF047A544148E17AA424D550419A9999E9057A5441AE47E10A33D5504185EB5158097A5441E17A14DE37D55041F6285C3F0A7A5441F6285CEF3CD550415C8FC2C50A7A5441A4703D3A51D550411F85EBF10A7A54410000000052D55041EC51B8CE097A5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008C50DE1809D55041A4840CADE579544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441713D0A47BCD45041713D0A97DB79544114AE4701B9D4504148E17A84DD795441EC51B8EEACD45041E17A14BEE37954413D0AD773B4D4504185EB5168E57954417B14AEE7C1D450417B14AEE7E7795441E17A144ED7D45041C3F528FCEB7954418FC2F598DCD45041000000A0ED795441D7A3707DFCD4504152B81E95F87954413C4583B702D55041AABDCAC6FA795441CA0B8E9C08D55041CAD60967E87954410E7661A208D5504192943B54E87954419080507A09D5504129B3EFCDE57954418C50DE1809D55041A4840CADE5795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891792 - 405791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB5138A4EF5041B81E853B0BE2544114AE47C1A3EF5041B81E85CB0AE2544152B81E9598EF50411F85EBD119E2544148E17A348FEF5041EC51B88E26E254415C8FC28584EF50413D0AD74334E25441713D0A7789EF5041F6285CEF37E25441A4703DAA94EF504185EB51D82DE25441D7A3709DA1EF50419A99996921E25441C3F5284CAFEF50416666661614E2544133333343BBEF5041C3F5282C08E2544148E17A04C7EF5041E17A14AEFCE15441AE47E14AD3EF50418FC2F538F0E15441CDCCCC3CE2EF5041D7A370EDE0E154419A999909E3EF50411F85EB41E0E15441E17A140ECFEF504185EB5158D1E154411F85EBF1CEEF5041295C8F82D1E154415C8FC245CEEF5041E17A147ED2E15441E17A149EBBEF50413D0AD723EBE154417B14AE77AEEF5041C3F5281CFDE1544148E17AE4ADEF504152B81EE5FDE1544152B81E75A7EF5041C3F5285C06E2544185EB5138A4EF5041B81E853B0BE25441
+</a>
+
+<b>
+01060000000100000001030000000100000028000000E17A140ECFEF504185EB5158D1E154411F85EBF1CEEF5041295C8F82D1E154415C8FC245CEEF5041E17A147ED2E1544170A937FFCDEF5041CF6448DBD2E154414EA86DCCCCEF50411DF89E70D4E15441B68A1AFFCBEF504148CEE67FD5E154411E6ED169CBEF5041874E2445D6E15441EAEA894ECBEF5041AB1D2F69D6E15441A6EF4095C4EF504101B1644BDFE15441EF5815E5BAEF50417A2FA520ECE154417B14AE77AEEF5041C3F5281CFDE1544148E17AE4ADEF504152B81EE5FDE15441AB35D332AAEF50416AED17C102E2544152B81E75A7EF5041C3F5285C06E2544185EB5138A4EF5041B81E853B0BE2544114AE47C1A3EF5041B81E85CB0AE25441E85D1D5AA0EF50413894145F0FE254418B2EB50C9CEF5041073D462815E254415709A16199EF50411965E4BE18E254413DB1911895EF5041E49D468E1EE2544148E17A348FEF5041EC51B88E26E25441B5031BB688EF5041EBB0D5E32EE254415C8FC28584EF50413D0AD74334E25441713D0A7789EF5041F6285CEF37E25441BE0514558EEF5041A725D08C33E25441512CE2C392EF50419EA0798E2FE2544153F372E395EF5041FA92A0AB2CE25441EB872A999AEF5041909E172628E254414B9D0550A0EF504159B8B1A922E254415150994CACEF5041ABF4E70117E2544100271ED5B3EF5041602F4B920FE2544133333343BBEF5041C3F5282C08E25441E46ECBB4BEEF5041AB8D40CE04E2544194F58F41C6EF50419C1CA56CFDE15441BD622BB0CEEF5041C9F431E5F4E1544139A6D72FD7EF50413949A63CECE15441CDCCCC3CE2EF5041D7A370EDE0E154419A999909E3EF50411F85EB41E0E154414B8E4E98D8EF5041D7E43C72D8E15441E17A140ECFEF504185EB5158D1E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916942 - 293047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -34  </desc>
+<a>
+01060000000100000001030000000100000016000000AE47E15A7FE35041AE47E12AB7605441C3F5286C6BE35041B81E854BC060544148E17AE466E3504152B81EA5C16054415C8FC23556E35041EC51B8DEC3605441000000704CE3504114AE4761C56054419A99994945E35041C3F528ECC76054419A99997941E350417B14AEB7C86054411F85EB5135E35041713D0A27CF6054410AD7A35030E3504100000060D1605441295C8F122BE350413D0AD713D46054415C8FC29520E35041295C8F42DC6054417B14AE271FE3504100000090DE605441AE47E11A1BE35041E17A143EEA60544148E17A941BE35041EC51B84EEC605441E17A14FE2AE350411F85EB61F8605441CDCCCC0C34E35041295C8F52EA6054419A99991938E35041E17A14AEE46054410AD7A3803DE35041A4703D0ADF605441E17A143E46E35041AE47E19AD86054415C8FC26563E350415C8FC225CA605441E17A14FE80E35041E17A146EBB605441AE47E15A7FE35041AE47E12AB7605441
+</a>
+
+<b>
+0106000000010000000103000000020000001B000000E17A149E40E35041C3F528FCE0605441D7A370ED49E35041713D0A77DA60544114AE4771A6E35041666666B6AB605441C3F528FCA5E350415C8FC2C5AA60544152B81EA59AE35041295C8FA2AB605441666666F696E35041D7A370BDAC605441AE47E11A85E35041D7A3705DB36054413D0AD7E37BE35041AE47E17AB660544148E17A746AE3504100000010BF605441295C8F9266E35041D7A3700DC0605441D7A370CD55E3504185EB51F8C160544152B81EF54BE350418FC2F558C360544185EB514845E35041F6285C2FC56054410AD7A33040E350410AD7A3B0C6605441AE47E1AA38E35041EC51B86ECA6054411F85EBA134E350418FC2F598CD6054415C8FC26532E3504152B81EA5CE6054416666661629E35041713D0A07D1605441CDCCCC6C21E3504100000050D5605441E17A14EE1FE350411F85EBC1D7605441F6285CDF17E3504114AE4761EB605441CDCCCC3C17E35041D7A3706DEC605441666666A627E3504185EB51D8F960544148E17AB42AE3504148E17A94FC6054417B14AE0739E35041CDCCCC8CE8605441A4703DAA3CE35041E17A148EE4605441E17A149E40E35041C3F528FCE06054412A000000A8F930264EE35041852C03B8D46054411B8E9B0849E35041460B313AD7605441CB54FBEF46E35041434EA942D86054416ABC74533DE35041F0A7C67BDF6054416ABC74F338E3504193180406E460544129430FBB34E350414977046AEA605441DEE0F2E332E35041AF6337EDEC605441D74D29492FE35041A8BD4EBDF1605441EB44D82F2FE35041DA1D1CDFF1605441AA08FBF62CE35041F1FAA5D6F460544125170A902AE35041AE49B50BF860544177BE9F422AE35041986E1273F86054411160A4C926E35041D595CD69F56054412C13BC7A25E35041313FFB44F4605441D6F74AC723E350417D4A42C8F26054416B1DE63523E35041D1C12249F26054411ED72DA121E35041A44E46E7F0605441065D8CAE1EE35041B5477953EE6054413D175D611BE35041BD927F70EB6054419EEFA7F61AE3504133333313EB6054417CD45F2C1BE350412263228AEA6054415398168E1DE35041004D6976E4605441401A4CA71FE350413EDEB51BDF605441E4FCE88020E35041337F33F1DC6054419814E3D920E350412903680DDC6054410E2DB21521E35041CDCCCC74DB605441F23FFD8427E35041BC242B70D6605441AC1C5A642EE35041DF4F8D87D16054411A5504BE36E35041C82F536FCD605441053731A53AE35041FA7C5286CB605441D99DE8EF3FE35041CF54C0F0C860544183C0CA0946E35041508D9766C66054415A5778384CE3504151B00675C5605441000000704CE3504114AE4761C56054415C8FC23556E35041EC51B8DEC3605441EF9DC57359E3504125C10470C36054413981E53A5DE35041DBC167DCC26054413108ACA460E35041713D0A57C26054413BDF4F2D64E3504146B6F3D5CA60544106BC0ACB5EE35041BDDB4435CD605441C3F528B451E3504183C0CAF9D2605441A8F930264EE35041852C03B8D4605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>376994 - 377247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000001000000010300000001000000140000006C5FD7E406315141141EEB53B4E654411F85EBE106315141E17A144EB4E6544103484F55FB305141D6A6FE92C5E65441D7A3700DF230514114AE4771D0E654411F85EB91003151411F85EBA1EEE65441295C8F220F315141C3F528EC0CE754415C8FC27511315141295C8F1208E75441E17A140E16315141CDCCCC1CFFE65441333333931B31514148E17AD4F5E65441A53FDA5023315141E33444FFE4E654410BF7AA01103151410B0659D1BAE65441817AA9C50E31514100AF97FDB7E65441F7FDA7890D3151414CBFA41FB5E6544110AE01950C31514178B38173B3E65441396C73070B315141EF216B48B5E6544149D4750409315141FD6A98B8B7E65441A2D6CC1D08315141A95E3050B6E654414AD0290307315141CAAA8296B4E65441BCCBCFE00631514123320D5AB4E654416C5FD7E406315141141EEB53B4E65441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A03FA7EB0C3151413472230BB4E65441E46A7E4C0D315141EAFD9BB4B4E65441EEC73CA80D31514199BA9C52B5E65441D2E177BB0E315141ADB39FCAB7E65441ED98BEA4143151414A8167F2C4E654419DE5644523315141E7933CE6E4E654418FC2F5B82831514148E17AF4D8E654415C8FC2E5243151411F85EB01D2E65441000000401F315141A4703D5AC7E65441B81E859B1B315141C3F528ECBDE6544185EB517818315141B81E852BB4E65441333333F315315141666666D6A8E6544114AE47E114315141E17A14AEA2E65441AE47E14A103151417B14AE37A6E65441D7A3703D0A315141C3F5283CAFE654416C5FD7E406315141141EEB53B4E65441BCCBCFE00631514123320D5AB4E654414AD0290307315141CAAA8296B4E65441A2D6CC1D08315141A95E3050B6E65441E15174F8083151413A0FD6A5B7E654415C2AE57909315141C0F72213B7E6544146B0F64F0A315141D9A77C1EB6E65441D798CE4E0B3151414F2B7BE2B4E65441B446339F0C31514121821E5FB3E65441A03FA7EB0C3151413472230BB4E65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455593 - 1501657
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51A870B2504152B81EC5F7D054411F85EBB17CB25041CDCCCC6CFCD05441295C8FA284B25041295C8F3200D1544114AE47018AB25041295C8F6203D154417B14AE6790B25041AE47E1AA07D1544148E17AB4AEB25041666666A6C7D0544114AE47B1ABB25041C3F528BCC5D054415C8FC2E59CB2504148E17A34D7D054415C8FC20594B25041A4703D5ACFD05441249A545E8DB25041125FBA0DC9D0544100909A9E86B25041AEE3D54FCDD054416268DA9277B25041869FA46DD6D05441850FE50276B25041267C808ED7D0544129811EC271B25041C095FA81DAD054417B1B6CB86EB2504118E722F0DCD05441A75A1F986CB25041891D5AA8DED05441FCA8FC346AB2504134F9CFC1E0D0544192BF639A67B25041B72EA172E3D05441300A2A7A5DB250412CBB16AFEFD054414C4FD1E05FB250416F02096CF1D05441361D152962B250410AB39D6BF2D054419B58F49865B25041F1AE47C5F3D0544185EB51A870B2504152B81EC5F7D05441
+</a>
+
+<b>
+010600000001000000010300000001000000460000001DF21F399BB250417953C20C94D05441E5E1A8DA9CB250412DC69C6794D05441EC3BC0E29CB25041AAF1326894D05441A669FFEC9CB25041AB47886894D05441A769FFEC9CB25041C0F5CF6994D054414DA3A87995B25041474BB16FA2D0544184E4519D90B25041ECF8EDFBABD05441B2F143138EB25041D91A1BD5B2D05441A354960E88B2504122F34E1ABFD05441136353DC86B25041E6EA83B6C1D05441E64323BC86B25041AAA55ACCC1D05441E34AE6B886B250410ECBF4D2C1D05441EFCFBFF075B250413CBA570FCDD0544194803FB06EB25041C744ADA1D1D054410F5F497D68B2504198F1DF88D5D054416496187B62B25041D8FEE10ADBD05441532CADC961B25041707584ADDBD05441CBD37FD660B2504199066E8CDCD05441801321E95FB25041F0F70828DDD054419B70C5DD5FB25041B50A6430DDD0544131BB18D05FB250410F57FE3BDDD05441B298D8845FB250410EFD2280DDD05441467029635FB250410118EDCBDDD054411AF71B2E5CB250416B409C2DE4D05441AECE6C2C5AB250416B409C8DE8D054416670292359B2504130ACC4FCEAD05441EFB394E659B250412057210DECD054415BDC43085AB2504199640633ECD05441EF62443D5AB250419CD4735EECD0544132DC51525AB2504108FD2280ECD05441A03348E15AB25041750EF33DEDD05441C6B3A2C05BB25041E04D8153EED05441E17D0E695CB250419CD4732EEFD054414A8612715DB250411F61BDCDEFD0544108E607845DB2504105323BB6EFD05441350A2A7A5DB250412DBB16AFEFD05441A79777DF5FB250410E60F8C9ECD054418DBF639A67B25041B92EA172E3D05441FEA8FC346AB2504132F9CFC1E0D05441A45A1F986CB250418E1D5AA8DED054417C1B6CB86EB2504115E722F0DCD05441CF7DA0416FB2504136655F82DCD054412A811EC271B25041BE95FA81DAD054415AB1C5AA75B2504183ECA5CBD7D054419A5247697AB25041EFF5A04ED4D05441C076D1118DB25041A8B79003C9D054418281B3378DB2504116E31926C9D05441219A545E8DB25041175FBA0DC9D054415C8FC20594B25041A4703D5ACFD054415C8FC2E59CB2504148E17A34D7D0544114AE47B1ABB25041C3F528BCC5D0544148E17AB4AEB25041666666A6C7D05441EC51B83EC0B2504185EB5198A2D054411F9D1D79AEB250418F3D563C99D05441171122549EB25041950FA01391D05441E1945A0D8FB250416C21AD9C89D054410854B5C688B2504141A2906586D05441AF9A883385B25041B908F3808ED05441ACE23E2F84B2504159E9FDA690D054417510A82784B25041409B24C990D0544106F9157A86B250412E471BE390D054416656E92087B25041EBA764EA90D0544102F5C6D48AB25041171FEA4991D05441BD29D7608CB25041CEF0D37191D054417ED907838FB250413707809B91D054416CA760C98FB25041CC85F8A891D054418AB65D2193B250413977E22192D054412CD2A72C93B250412550EF2292D0544158A802BF96B250415650761193D054411DF21F399BB250417953C20C94D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455593 - 5235930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51A870B2504152B81EC5F7D054411F85EBB17CB25041CDCCCC6CFCD05441295C8FA284B25041295C8F3200D1544114AE47018AB25041295C8F6203D154417B14AE6790B25041AE47E1AA07D1544148E17AB4AEB25041666666A6C7D0544114AE47B1ABB25041C3F528BCC5D054415C8FC2E59CB2504148E17A34D7D054415C8FC20594B25041A4703D5ACFD05441249A545E8DB25041125FBA0DC9D0544100909A9E86B25041AEE3D54FCDD054416268DA9277B25041869FA46DD6D05441850FE50276B25041267C808ED7D0544129811EC271B25041C095FA81DAD054417B1B6CB86EB2504118E722F0DCD05441A75A1F986CB25041891D5AA8DED05441FCA8FC346AB2504134F9CFC1E0D0544192BF639A67B25041B72EA172E3D05441300A2A7A5DB250412CBB16AFEFD054414C4FD1E05FB250416F02096CF1D05441361D152962B250410AB39D6BF2D054419B58F49865B25041F1AE47C5F3D0544185EB51A870B2504152B81EC5F7D05441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000019F21F399BB250417753C20C94D05441E1E1A8DA9CB250412AC69C6794D05441F03BC0E29CB25041AFF1326894D05441A269FFEC9CB25041AD47886894D05441A269FFEC9CB25041C1F5CF6994D054414DA3A87995B25041474BB16FA2D0544184E4519D90B25041ECF8EDFBABD05441B2F143138EB25041D91A1BD5B2D05441A054960E88B2504122F34E1ABFD05441146353DC86B25041E6EA83B6C1D05441E74323BC86B25041A8A55ACCC1D05441E34AE6B886B250410ECBF4D2C1D05441EFCFBFF075B250413CBA570FCDD0544194803FB06EB25041C744ADA1D1D054410F5F497D68B2504198F1DF88D5D054416496187B62B25041D8FEE10ADBD05441532CADC961B25041707584ADDBD05441CBD37FD660B2504199066E8CDCD05441811321E95FB25041ECF70828DDD054419870C5DD5FB25041B70A6430DDD054412DBB18D05FB250411357FE3BDDD05441B398D8845FB2504110FD2280DDD05441477029635FB250410618EDCBDDD0544117F71B2E5CB2504168409C2DE4D05441ABCE6C2C5AB2504168409C8DE8D054416770292359B250412CACC4FCEAD05441ECB394E659B250411D57210DECD0544159DC43085AB250419E640633ECD05441F162443D5AB2504199D4735EECD0544136DC51525AB2504105FD2280ECD05441A03348E15AB25041750EF33DEDD05441CAB3A2C05BB25041DE4D8153EED05441DD7D0E695CB2504199D4732EEFD054414A8612715DB250411F61BDCDEFD0544108E607845DB2504105323BB6EFD05441350A2A7A5DB250412DBB16AFEFD05441A79777DF5FB250410E60F8C9ECD054418DBF639A67B25041B92EA172E3D05441FEA8FC346AB2504132F9CFC1E0D05441A45A1F986CB250418E1D5AA8DED054417C1B6CB86EB2504115E722F0DCD05441CF7DA0416FB2504136655F82DCD054412A811EC271B25041BE95FA81DAD054415AB1C5AA75B2504183ECA5CBD7D054419A5247697AB25041EFF5A04ED4D05441C076D1118DB25041A8B79003C9D054418281B3378DB2504116E31926C9D05441219A545E8DB25041175FBA0DC9D054415C8FC20594B25041A4703D5ACFD054415C8FC2E59CB2504148E17A34D7D0544114AE47B1ABB25041C3F528BCC5D0544148E17AB4AEB25041666666A6C7D05441EC51B83EC0B2504185EB5198A2D054411F9D1D79AEB250418F3D563C99D05441171122549EB25041950FA01391D05441E1945A0D8FB250416C21AD9C89D054410A54B5C688B2504144A2906586D05441AE9A883385B25041B608F3808ED05441A9E23E2F84B250415AE9FDA690D054417510A82784B25041409B24C990D0544106F9157A86B250412E471BE390D054416656E92087B25041EBA764EA90D0544107F5C6D48AB25041181FEA4991D05441BD29D7608CB25041CEF0D37191D054417ED907838FB250413707809B91D054416AA760C98FB25041CE85F8A891D054418AB65D2193B250413977E22192D054412CD2A72C93B250412550EF2292D054415CA802BF96B250415450761193D0544119F21F399BB250417753C20C94D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 112389
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB54418C56F809F13F5141446C515054EB54419EB998B3F13F514166088CBA57EB5441C27FD906F33F51419DF03ED05EEB54412EE9C3FEF33F51414A6CE2C664EB5441F6CC481AF63F51416F72C0A469EB5441B25DF8BAFD3F5141BFD182AB69EB54418D832549FD3F5141E6A70F0A67EB54415031F296FB3F51419EA07C115FEB54419D38989AFA3F51416CACCEED59EB5441E3E2E188FA3F51412E48389759EB544108532D29F73F5141958144984DEB54413AEC3530F63F514164CBF5EA4BEB54419FA88492F43F5141D71B5E4049EB544128CD259DF23F51413A2610C145EB5441CDCCCC0CF13F5141EC51B80E43EB54416BC60166EF3F5141524DF03741EB5441FEB7BD64E93F514106AE13AD3AEB5441BE45EB38E93F51411B5E5A133AEB544170F39059E93F51411DC3772437EB5441295C8F62E93F5141F02B996736EB5441295C8F62E93F5141F6285CDF34EB5441B0716414EA3F51417703082331EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000001F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 1365324
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB54418C56F809F13F5141446C515054EB54419EB998B3F13F514166088CBA57EB5441C27FD906F33F51419DF03ED05EEB54412EE9C3FEF33F51414A6CE2C664EB5441F6CC481AF63F51416F72C0A469EB5441B25DF8BAFD3F5141BFD182AB69EB54418D832549FD3F5141E6A70F0A67EB54415031F296FB3F51419EA07C115FEB54419D38989AFA3F51416CACCEED59EB5441E3E2E188FA3F51412E48389759EB544108532D29F73F5141958144984DEB54413AEC3530F63F514164CBF5EA4BEB54419FA88492F43F5141D71B5E4049EB544128CD259DF23F51413A2610C145EB5441CDCCCC0CF13F5141EC51B80E43EB54416BC60166EF3F5141524DF03741EB5441FEB7BD64E93F514106AE13AD3AEB5441BE45EB38E93F51411B5E5A133AEB544170F39059E93F51411DC3772437EB5441295C8F62E93F5141F02B996736EB5441295C8F62E93F5141F6285CDF34EB5441B0716414EA3F51417703082331EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000001F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 4085105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB54418C56F809F13F5141446C515054EB54419EB998B3F13F514166088CBA57EB5441C27FD906F33F51419DF03ED05EEB54412EE9C3FEF33F51414A6CE2C664EB5441F6CC481AF63F51416F72C0A469EB5441B25DF8BAFD3F5141BFD182AB69EB54418D832549FD3F5141E6A70F0A67EB54415031F296FB3F51419EA07C115FEB54419D38989AFA3F51416CACCEED59EB5441E3E2E188FA3F51412E48389759EB544108532D29F73F5141958144984DEB54413AEC3530F63F514164CBF5EA4BEB54419FA88492F43F5141D71B5E4049EB544128CD259DF23F51413A2610C145EB5441CDCCCC0CF13F5141EC51B80E43EB54416BC60166EF3F5141524DF03741EB5441FEB7BD64E93F514106AE13AD3AEB5441BE45EB38E93F51411B5E5A133AEB544170F39059E93F51411DC3772437EB5441295C8F62E93F5141F02B996736EB5441295C8F62E93F5141F6285CDF34EB5441B0716414EA3F51417703082331EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000001F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 8353
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB54418C56F809F13F5141446C515054EB54419EB998B3F13F514166088CBA57EB5441C27FD906F33F51419DF03ED05EEB54412EE9C3FEF33F51414A6CE2C664EB5441F6CC481AF63F51416F72C0A469EB5441B25DF8BAFD3F5141BFD182AB69EB54418D832549FD3F5141E6A70F0A67EB54415031F296FB3F51419EA07C115FEB54419D38989AFA3F51416CACCEED59EB5441E3E2E188FA3F51412E48389759EB544108532D29F73F5141958144984DEB54413AEC3530F63F514164CBF5EA4BEB54419FA88492F43F5141D71B5E4049EB544128CD259DF23F51413A2610C145EB5441CDCCCC0CF13F5141EC51B80E43EB54416BC60166EF3F5141524DF03741EB5441FEB7BD64E93F514106AE13AD3AEB5441BE45EB38E93F51411B5E5A133AEB544170F39059E93F51411DC3772437EB5441295C8F62E93F5141F02B996736EB5441295C8F62E93F5141F6285CDF34EB5441B0716414EA3F51417703082331EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 107747
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB54418C56F809F13F5141446C515054EB54419EB998B3F13F514166088CBA57EB5441C27FD906F33F51419DF03ED05EEB54412EE9C3FEF33F51414A6CE2C664EB5441F6CC481AF63F51416F72C0A469EB5441B25DF8BAFD3F5141BFD182AB69EB54418D832549FD3F5141E6A70F0A67EB54415031F296FB3F51419EA07C115FEB54419D38989AFA3F51416CACCEED59EB5441E3E2E188FA3F51412E48389759EB544108532D29F73F5141958144984DEB54413AEC3530F63F514164CBF5EA4BEB54419FA88492F43F5141D71B5E4049EB544128CD259DF23F51413A2610C145EB5441CDCCCC0CF13F5141EC51B80E43EB54416BC60166EF3F5141524DF03741EB5441FEB7BD64E93F514106AE13AD3AEB5441BE45EB38E93F51411B5E5A133AEB544170F39059E93F51411DC3772437EB5441295C8F62E93F5141F02B996736EB5441295C8F62E93F5141F6285CDF34EB5441B0716414EA3F51417703082331EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 308776
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB54418C56F809F13F5141446C515054EB54419EB998B3F13F514166088CBA57EB5441C27FD906F33F51419DF03ED05EEB54412EE9C3FEF33F51414A6CE2C664EB5441F6CC481AF63F51416F72C0A469EB5441B25DF8BAFD3F5141BFD182AB69EB54418D832549FD3F5141E6A70F0A67EB54415031F296FB3F51419EA07C115FEB54419D38989AFA3F51416CACCEED59EB5441E3E2E188FA3F51412E48389759EB544108532D29F73F5141958144984DEB54413AEC3530F63F514164CBF5EA4BEB54419FA88492F43F5141D71B5E4049EB544128CD259DF23F51413A2610C145EB5441CDCCCC0CF13F5141EC51B80E43EB54416BC60166EF3F5141524DF03741EB5441FEB7BD64E93F514106AE13AD3AEB5441BE45EB38E93F51411B5E5A133AEB544170F39059E93F51411DC3772437EB5441295C8F62E93F5141F02B996736EB5441295C8F62E93F5141F6285CDF34EB5441B0716414EA3F51417703082331EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918799 - 3237526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000300000001030000000200000026010000CDCCCCFCD59F5041A4703DEAAA1954415C8FC275D69F5041666666D6AB1954410AD7A360DA9F5041713D0AE7B4195441AE47E10ADD9F50418FC2F508BD195441E17A14BEDD9F5041C3F5288CC619544148E17AC4DD9F504166666666C7195441D7A3702DDC9F504114AE47E1CF195441F6285CAFD89F504148E17A34D5195441713D0AA7D69F504148E17A14D91954418FC2F548D39F504152B81EE5E1195441713D0AB7D29F504185EB51E8EA195441C3F528DCD19F50411F85EB21F0195441EC51B86ED09F5041AE47E1AAF2195441C3F5288CD09F50417B14AE07F81954417B14AE07D29F5041CDCCCC6CFA1954413D0AD713D89F50410AD7A3A0F91954413D0AD743DF9F5041E17A14AEFB195441B81E853BE29F5041666666C6F619544148E17A74E69F504152B81EE5F2195441666666A6E99F50410AD7A330ED19544185EB51C8EE9F5041CDCCCC6CE9195441AE47E15AEF9F5041B81E858BE519544185EB5128F89F504148E17A64E61954415C8FC295FB9F5041B81E851BE819544133333333FA9F5041713D0A77EB1954413D0AD723F69F50413D0AD783EF195441D7A370ADF79F5041CDCCCC8CF119544152B81E65FC9F504152B81EC5F5195441E17A141E00A05041C3F5281CF7195441B81E85DB03A0504148E17AA4F6195441713D0A1707A0504185EB51C8F21954419A99993906A05041EC51B83EF2195441AE47E12A07A05041A4703D1AF11954413D0AD78307A05041666666F6EF19544148E17A0407A0504148E17A04EF19544148E17AA403A05041C3F5280CEB195441C3F5285C01A05041666666B6E8195441EC51B82EFE9F50418FC2F5C8E5195441C3F528CCFB9F5041333333B3E31954411F85EB51FA9F5041713D0A47E319544166666626F79F5041EC51B86EE21954411F85EB51F49F504166666696E1195441F6285C8FF39F5041AE47E14AE119544148E17AD4F19F5041A4703D0AE1195441EC51B8BEEE9F504152B81E35E11954413D0AD703ED9F504148E17AF4E019544133333353EB9F5041AE47E1DADF195441D7A370ADE99F5041EC51B8DEDD195441D7A3703DE89F5041F6285C6FDC195441B81E859BE49F50418FC2F518D91954417B14AE77E39F504185EB5168D719544185EB5108E29F50413D0AD793D419544100000030E19F50411F85EB61D2195441295C8F62E09F504133333353D11954413D0AD733DF9F5041F6285C9FCE1954417B14AEC7DE9F50410AD7A3E0CB195441AE47E1AADF9F5041B81E855BC719544148E17AE4E09F504100000010C419544185EB5108E29F5041E17A146EC31954415C8FC2D5E29F5041B81E85ABC2195441CDCCCC4CE39F50410AD7A330C1195441CDCCCC6CE39F50413D0AD7D3BB195441F6285C0FE49F5041B81E85DBB7195441713D0AC7E49F504185EB51D8B3195441AE47E15AE49F504114AE47F1B1195441C3F5282CE39F504152B81E65B11954419A9999F9E09F504114AE4761B019544166666666DE9F504114AE47D1AE19544152B81E95DC9F5041CDCCCC8CAD195441B81E855BDB9F5041CDCCCCFCAB195441E17A148EDA9F5041000000E0A9195441666666D6D99F504166666616A719544166666646D89F5041B81E85EBA6195441666666B6D69F50419A9999F9A7195441CDCCCC0CD49F5041C3F5284CAA1954418FC2F558D19F5041D7A370ADAA195441333333B3CF9F5041C3F5284CAA1954417B14AE67CC9F5041666666A6A819544148E17AD4C99F50419A999989A6195441295C8F52C69F5041A4703D8AA31954417B14AE97C49F5041D7A370DDA2195441333333E3C19F50411F85EBB1A219544133333353C09F504100000030A219544152B81E25BC9F504133333383A1195441E17A14AEB89F5041295C8F62A1195441E17A14AEB89F504152B81E95A019544152B81E45BC9F504114AE47E1A0195441EC51B87EC09F504133333383A1195441EC51B80EC29F5041F6285CEFA11954419A9999A9C39F5041F6285CEFA11954418FC2F5F8C49F50415C8FC245A2195441EC51B8BEC69F5041295C8FF2A219544166666676CA9F5041EC51B85EA6195441EC51B8DECC9F504100000050A81954413D0AD7D3CF9F5041A4703DCAA9195441F6285C8FD19F504114AE4721AA1954410AD7A3A0D39F5041F6285C9FA919544152B81E75D69F504114AE4721A719544114AE4751D89F5041E17A141EA6195441AE47E18AD99F5041D7A370FDA5195441F6285CEFDA9F50410AD7A3E0A619544166666646DB9F50417B14AE07A9195441295C8FD2DB9F5041B81E859BAB1954411F85EB21DD9F5041AE47E10AAD195441C3F5289CDE9F5041F6285C4FAE19544152B81E25E19F504148E17AB4AF195441CDCCCC6CE39F50417B14AEB7B0195441CDCCCCDCE49F504100000090B11954413D0AD753E59F504166666676B31954410AD7A390E49F5041B81E85FBB7195441EC51B8EEE39F50413D0AD7D3BB1954418FC2F5D8E39F504114AE4751C1195441F6285C2FE49F50415C8FC295C2195441B81E850BE39F50413D0AD7A3C319544114AE4791E19F5041D7A370BDC41954418FC2F5B8E09F5041295C8F42C6195441666666F6DF9F5041B81E85EBC8195441AE47E1AADF9F50410AD7A3E0CB19544114AE4701E09F5041F6285C9FCE195441A4703D1AE19F5041CDCCCCDCD0195441CDCCCCDCE19F50410AD7A300D2195441EC51B8EEE39F504185EB5148D71954417B14AEE7E49F5041713D0A97D8195441333333E3E99F5041713D0A27DD195441EC51B89EEB9F504133333323DF195441E17A14EEEC9F5041CDCCCC3CE01954418FC2F5A8EE9F5041D7A3707DE01954419A9999C9F19F5041295C8F72E0195441CDCCCC3CF49F5041E17A14BEE0195441C3F5283CF79F50411F85EBC1E1195441713D0A67FA9F504152B81EA5E21954418FC2F558FC9F50410AD7A3F0E2195441F6285C5FFF9F5041295C8FA2E5195441A4703D1A02A050413D0AD783E8195441C3F528BC04A05041EC51B83EEB1954416666660606A05041C3F528BCEC19544148E17A4407A05041295C8F52EE195441666666F607A05041AE47E12AEF1954411F85EB8108A05041E17A141EEF195441AE47E1CA0AA05041F6285CAFEC195441A4703D1A10A05041A4703DBAE6195441713D0A1712A0504185EB5158E419544148E17A5413A050413D0AD733E3195441EC51B8DE14A0504152B81EB5E21954410AD7A39015A0504152B81E75E2195441B81E859B1DA05041666666F6E11954419A9999F921A05041CDCCCCDCE11954410AD7A30025A05041A4703D6AE11954419A99990927A050419A999939E0195441D7A3705D2AA05041333333B3DC195441D7A3700D2CA05041000000D0DA1954410AD7A3A02FA05041B81E859BD4195441D7A3705D31A0504185EB5108D119544152B81E7532A05041CDCCCC8CCE19544185EB516832A0504133333303CD1954410000009031A050413D0AD7D3CA195441B81E85DB2FA05041295C8FE2C6195441295C8FE22EA0504166666666C41954418FC2F5B82EA0504100000090C2195441333333432FA05041B81E857BC11954415C8FC26530A05041A4703DBAC01954413D0AD7A331A0504114AE47F1C0195441C3F5286C33A05041B81E857BC1195441C3F5286C35A05041C3F528DCC119544148E17A3437A050419A999989C119544114AE47E138A0504148E17A74C019544185EB51E839A05041F6285CFFBE19544152B81E953BA0504185EB51C8BC195441E17A14BE3DA0504133333353B91954419A9999A93EA05041D7A370DDB519544114AE47413FA05041666666A6B3195441A4703D3A40A0504114AE4731AE1954417B14AE1741A0504152B81E85AA1954416666668641A050419A999969A8195441000000B041A05041A4703DCAA6195441A4703D0A41A050415C8FC2B5A51954413D0AD7333FA05041C3F5285CA4195441A4703D0A3DA0504148E17A24A4195441295C8F7238A05041C3F5285CA41954419A99991931A050415C8FC285A41954417B14AE272DA050410AD7A340A41954410AD7A3F028A05041AE47E1CAA2195441AE47E1AA25A05041E17A140EA2195441EC51B81E24A050413D0AD7D3A1195441AE47E18A21A050413D0AD7D3A1195441000000401FA050418FC2F598A1195441713D0AE71CA05041B81E857BA1195441B81E85AB1AA05041E17A14AEA01954418FC2F55817A050413D0AD7139F1954417B14AEF713A05041295C8F129D1954413D0AD71312A0504152B81E959B195441B81E85BB11A05041AE47E1AA9A195441F6285CEF12A05041D7A3708D9A1954418FC2F5E813A05041AE47E19A981954417B14AE5715A05041295C8F9297195441B81E853B17A050410000000097195441F6285CCF19A050415C8FC27597195441E17A148E1AA05041000000F09419544148E17AB41DA0504185EB51F8951954410AD7A3901EA05041713D0A07961954415C8FC2F51CA05041C3F5281C951954411F85EB111BA0504185EB513893195441B81E85AB1AA05041333333C392195441F6285CCF19A05041E17A149E911954410AD7A3C019A050410AD7A320901954415C8FC2351AA05041B81E85FB8E19544185EB51781BA050411F85EB018E195441C3F5285C1DA050410AD7A3608D195441AE47E13A22A05041A4703DEA8A195441C3F5289C25A05041F6285C4F891954416666668626A05041295C8F82881954416666668626A05041295C8F2287195441EC51B87E25A05041A4703D6A85195441C3F5283C24A050413D0AD7A38319544185EB510823A050413D0AD74382195441D7A3706D21A0504185EB51B880195441C3F528CC20A050419A9999F97F19544185EB51981FA05041AE47E12A7D195441AE47E11A1EA0504148E17A047A1954410AD7A3301DA050413333335377195441AE47E1BA1CA050418FC2F508751954411F85EB211DA050416666661673195441AE47E11A1EA050411F85EBE171195441C3F5286C1FA050418FC2F53870195441C3F5287C21A050413D0AD7636E1954419A9999A923A050417B14AED76C19544114AE47B124A05041000000D06B195441AE47E1AA25A050417B14AE176A19544152B81EE525A05041295C8F4268195441AE47E1AA25A0504185EB519864195441C3F528EC24A050419A9999B95F195441295C8FA224A050415C8FC2755C19544185EB516824A050411F85EB3159195441AE47E14A24A05041000000E05519544185EB51B823A05041D7A3708D5219544185EB510823A05041295C8F924F19544148E17AD421A0504185EB51984C195441EC51B8AE20A0504185EB51884A1954415C8FC2051FA0504185EB517848195441C3F528AC1DA05041713D0A1747195441000000801CA05041713D0AF744195441000000801CA050413333335342195441CDCCCCFC1BA050419A9999193F195441F6285C6F1AA05041CDCCCC1C3D1954415C8FC2E519A05041AE47E10A3E1954413D0AD75319A05041F6285C0F3F1954415C8FC2B517A05041713D0A97401954413333330315A0504114AE47D141195441EC51B83E13A0504114AE47D141195441C3F5285C11A050417B14AE9741195441AE47E1FA0CA050418FC2F568401954411F85EB5109A05041295C8F023F195441E17A14DE05A05041333333C34319544185EB51B801A050411F85EBB1451954411F85EB81FE9F5041B81E85AB45195441295C8F52E49F5041295C8FB2441954410AD7A390D49F5041F6285CAF43195441C3F528ECEA9F504114AE47015A1954413D0AD7A3D19F504152B81E356F195441AE47E14AC29F5041A4703DBA7F1954418FC2F558BE9F50419A99997983195441A4703D6AB89F50411F85EBC1821954415C8FC2A5B79F5041B81E850B84195441AE47E1AAB69F504148E17A7486195441A4703DBAB59F504185EB51D8891954417B14AE47B59F5041666666A68C19544152B81ED5B59F5041D7A3704D8D1954418FC2F548B89F504185EB51D88F19544100000030BC9F50419A9999699419544185EB5198BC9F5041C3F5281C95195441713D0AB7BC9F5041A4703DEA95195441C3F528ACBC9F50417B14AE179719544148E17A74BC9F5041EC51B80E98195441666666F6BB9F5041295C8FE2981954413D0AD733BA9F5041EC51B8DE9A1954419A999969B69F5041AE47E1AA9A195441A4703D3AB29F50415C8FC245A4195441666666E6B19F50411F85EBE1A419544100000030B29F504148E17A14A51954419A9999E9B69F5041295C8FE2A6195441E17A145EB99F50411F85EBC1A8195441000000C0BB9F5041F6285C3FAA1954410AD7A370BC9F5041666666B6AA195441E17A147EC19F5041A4703D9AAE1954419A999929C39F5041000000B0AF19544114AE4791C49F504114AE4781B019544152B81E25C59F5041AE47E1AAB0195441713D0A27C89F504148E17A74B1195441666666B6CA9F5041C3F5285CB219544185EB5138CB9F504114AE4771B2195441295C8F52CC9F50411F85EB71B2195441AE47E12ACD9F50417B14AE77B2195441F6285CAFD19F5041295C8F22B1195441CDCCCCFCD59F5041A4703DEAAA1954410F000000C3F5289C01A050413D0AD7E36A195441295C8F4202A050413333334364195441A4703DFA07A05041666666965A195441EC51B86E11A05041CDCCCC8C5319544152B81E2514A05041B81E85AB52195441AE47E1DA16A050418FC2F5B8541954418FC2F57816A0504148E17A54581954413D0AD7030EA05041E17A14FE6519544148E17A0408A05041D7A3700D6E19544148E17A5407A050419A9999B972195441B81E857B05A0504114AE47917A19544152B81E3503A05041F6285C6F7B195441295C8F12FE9F50417B14AE5779195441A4703D0AFD9F5041AE47E12A6D195441C3F5289C01A050413D0AD7E36A195441010300000001000000210000000AD7A39039A05041EC51B83EC9195441295C8FE23AA05041CDCCCC4CC619544185EB51183EA0504185EB51A8BF1954419A9999D93EA05041C3F5284CBD195441EC51B80E40A0504148E17A94BA19544148E17AA441A05041AE47E1BAB619544148E17A7442A05041CDCCCC3CB1195441B81E85DB42A0504100000070AF195441AE47E19A43A05041AE47E11AAC195441B81E85FB44A050411F85EBA1A619544152B81ED543A05041333333A3A61954419A99990943A0504152B81E55A7195441AE47E14A42A05041295C8F92A81954418FC2F5D841A05041F6285C4FAA1954410AD7A30041A0504152B81E55AE1954415C8FC2F53FA0504148E17AE4B31954410AD7A3503FA0504133333353B61954415C8FC2453EA05041A4703D9AB91954419A9999093CA0504133333353BD1954417B14AEA739A05041CDCCCCCCC01954411F85EB9137A050413D0AD723C21954410000003035A050419A999989C2195441CDCCCC4C33A05041D7A3703DC2195441666666B631A050417B14AED7C1195441C3F5286C30A05041A4703D0AC2195441666666C62FA05041EC51B82EC31954416666660630A05041AE47E12AC519544185EB51B830A050417B14AEE7C6195441666666B631A0504166666656C91954417B14AEA732A0504100000020CB1954416666667634A050417B14AE87CD19544185EB514838A0504148E17AA4CB1954410AD7A39039A05041EC51B83EC9195441010300000001000000650000008FC2F5A81BA05041AE47E17A35195441A4703DCA1AA05041EC51B80E35195441295C8FB217A050410000001033195441713D0A2718A05041EC51B85E2F1954410AD7A3B017A050411F85EBD12B195441EC51B81E10A05041B81E853B351954416666669609A0504148E17AA43E19544152B81E350DA05041F6285CEF3F1954413D0AD76311A050416666660641195441A4703D2A13A050410AD7A3404119544152B81E7515A050418FC2F5E8401954410AD7A30017A05041CDCCCC0C401954418FC2F5B818A05041A4703DCA3E195441CDCCCCEC19A05041295C8F623C19544185EB51381AA05041C3F5285C3A195441295C8FC21AA050417B14AE8738195441E17A140E1DA05041333333D33819544148E17A041DA050413D0AD7F33A195441C3F5285C1DA050418FC2F5C83C195441AE47E16A1DA0504114AE47813E195441AE47E16A1DA05041666666B6411954411F85EBD11DA0504148E17A8444195441713D0A471EA05041713D0A774619544185EB51981FA050413333330348195441AE47E1DA20A050411F85EB71491954419A99994922A05041C3F528BC4B195441AE47E19A23A05041AE47E13A4F1954419A99995924A0504152B81E3552195441AE47E1FA24A05041EC51B83E551954413D0AD74325A05041E17A14AE58195441295C8F5225A05041713D0A175D195441D7A3703D26A0504133333373631954416666668626A0504100000050661954416666668626A050419A99995969195441666666D625A05041000000206B1954410000001024A05041EC51B83E6D19544148E17AD421A050417B14AEE76E195441713D0AA71FA05041295C8F3271195441713D0A971DA050418FC2F5A87319544185EB51881DA05041E17A147E75195441D7A370FD1DA050415C8FC235771954419A9999D91EA050410AD7A38079195441713D0A5720A050419A9999397D1954419A99999921A0504114AE47A17F1954419A99994922A050413D0AD7E380195441713D0A1723A05041295C8FA281195441EC51B8CE24A050410000002083195441EC51B82E26A0504114AE472185195441295C8F6227A0504100000040871954413D0AD75327A05041B81E85CB881954410000007025A05041A4703D3A8A1954419A99994922A050418FC2F5A88B1954415C8FC2A51DA050415C8FC2D58D195441333333031BA0504185EB51188F19544148E17A441AA05041E17A143E901954410AD7A3701AA050410AD7A380911954411F85EB111BA05041AE47E16A92195441F6285C3F1DA050415C8FC2B5941954419A9999D91EA050413333338395195441333333D31FA050415C8FC2C59619544185EB514820A050419A99995999195441D7A3700D20A05041AE47E15A9B195441333333231FA0504152B81E059F195441D7A3705D1FA0504166666656A0195441AE47E12A20A05041CDCCCCBCA019544114AE474121A050418FC2F5E8A0195441000000B022A0504152B81E15A11954416666663625A05041C3F5282CA1195441CDCCCC3C28A050411F85EBD1A1195441666666662AA050413D0AD793A2195441D7A3709D2CA05041713D0A47A31954413D0AD7732EA05041CDCCCC8CA31954415C8FC29531A050413D0AD7C3A319544185EB51B836A0504185EB51A8A3195441A4703DDA3BA0504133333363A3195441EC51B8EE3EA05041CDCCCC8CA3195441D7A3708D40A050418FC2F508A4195441B81E85CB41A050413D0AD7F3A41954410AD7A31043A050413D0AD7A3A519544185EB512845A0504148E17AD4A5195441C3F528DC45A05041000000A0A2195441EC51B81E46A05041F6285C6FA1195441EC51B8AE46A05041000000E09E195441D7A370BD49A05041AE47E16A921954410AD7A3504FA05041B81E85CB771954419A9999F953A0504152B81E255E19544152B81EE558A0504185EB511842195441333333234EA050415C8FC2953E19544185EB51E845A05041713D0AB73B195441F6285CAF42A0504133333343361954410AD7A3F041A05041A4703DAA32195441713D0A5741A05041333333C32F195441B81E859B43A050411F85EBF127195441C3F528AC3AA05041E17A146E24195441B81E85DB2FA05041C3F5284C1F19544148E17A942EA050411F85EBC11E195441000000D025A0504152B81EF524195441295C8F4221A0504152B81EE5341954411F85EBC11DA05041A4703DEA361954418FC2F5381DA05041C3F5288C361954418FC2F5A81BA05041AE47E17A35195441
+</a>
+
+<b>
+010600000001000000010300000002000000B5010000C879E75025A0504152280C985C195441295C8F5225A05041713D0A175D195441D7A3703D26A0504133333373631954416666668626A0504100000050661954416666668626A050419A99995969195441666666D625A05041000000206B1954410000001024A05041EC51B83E6D19544148E17AD421A050417B14AEE76E195441713D0AA71FA05041295C8F3271195441713D0A971DA050418FC2F5A87319544185EB51881DA05041E17A147E75195441D7A370FD1DA050415C8FC235771954419A9999D91EA050410AD7A38079195441713D0A5720A050419A9999397D1954419A99999921A0504114AE47A17F1954419A99994922A050413D0AD7E380195441713D0A1723A05041295C8FA281195441EC51B8CE24A050410000002083195441EC51B82E26A0504114AE472185195441295C8F6227A0504100000040871954413D0AD75327A05041B81E85CB881954410000007025A05041A4703D3A8A1954419A99994922A050418FC2F5A88B1954415C8FC2A51DA050415C8FC2D58D195441333333031BA0504185EB51188F19544148E17A441AA05041E17A143E901954410AD7A3701AA050410AD7A380911954411F85EB111BA05041AE47E16A92195441F6285C3F1DA050415C8FC2B5941954419A9999D91EA050413333338395195441333333D31FA050415C8FC2C59619544185EB514820A050419A99995999195441D7A3700D20A05041AE47E15A9B195441333333231FA0504152B81E059F195441D7A3705D1FA0504166666656A0195441AE47E12A20A05041CDCCCCBCA019544114AE474121A050418FC2F5E8A0195441000000B022A0504152B81E15A11954416666663625A05041C3F5282CA1195441CDCCCC3C28A050411F85EBD1A1195441666666662AA050413D0AD793A2195441D7A3709D2CA05041713D0A47A31954413D0AD7732EA05041CDCCCC8CA31954415C8FC29531A050413D0AD7C3A319544185EB51B836A0504185EB51A8A3195441A4703DDA3BA0504133333363A3195441EC51B8EE3EA05041CDCCCC8CA3195441D7A3708D40A050418FC2F508A4195441B81E85CB41A050413D0AD7F3A41954410AD7A31043A050413D0AD7A3A519544185EB512845A0504148E17AD4A5195441C3F528DC45A05041000000A0A2195441EC51B81E46A05041F6285C6FA1195441EC51B8AE46A05041000000E09E195441D7A370BD49A05041AE47E16A921954410AD7A3504FA05041B81E85CB771954419A9999F953A0504152B81E255E19544152B81EE558A0504185EB511842195441333333234EA050415C8FC2953E19544185EB51E845A05041713D0AB73B195441F6285CAF42A0504133333343361954410AD7A3F041A05041A4703DAA32195441713D0A5741A05041333333C32F195441B81E859B43A050411F85EBF127195441C3F528AC3AA05041E17A146E24195441B81E85DB2FA05041C3F5284C1F19544148E17A942EA050411F85EBC11E195441000000D025A0504152B81EF524195441295C8F4221A0504152B81EE5341954411F85EBC11DA05041A4703DEA361954418FC2F5381DA05041C3F5288C361954418FC2F5A81BA05041AE47E17A35195441A4703DCA1AA05041EC51B80E35195441295C8FB217A050410000001033195441713D0A2718A05041EC51B85E2F1954410AD7A3B017A050411F85EBD12B195441EC51B81E10A05041B81E853B351954416666669609A0504148E17AA43E19544152B81E350DA05041F6285CEF3F1954413D0AD76311A050416666660641195441A4703D2A13A050410AD7A3404119544152B81E7515A050418FC2F5E8401954410AD7A30017A05041CDCCCC0C401954418FC2F5B818A05041A4703DCA3E195441CDCCCCEC19A05041295C8F623C19544185EB51381AA05041C3F5285C3A195441295C8FC21AA050417B14AE8738195441E17A140E1DA05041333333D33819544148E17A041DA050413D0AD7F33A195441C3F5285C1DA050418FC2F5C83C195441AE47E16A1DA0504114AE47813E195441AE47E16A1DA05041666666B6411954411F85EBD11DA0504148E17A8444195441713D0A471EA05041713D0A774619544185EB51981FA050413333330348195441AE47E1DA20A050411F85EB71491954419A99994922A05041C3F528BC4B195441AE47E19A23A05041AE47E13A4F1954419A99995924A0504152B81E3552195441AE47E1FA24A05041EC51B83E551954413D0AD74325A05041E17A14AE58195441CEE43D5025A05041D3F53D655C195441295C8FA224A050415C8FC2755C19544185EB516824A050411F85EB3159195441AE47E14A24A05041000000E05519544185EB51B823A05041D7A3708D5219544185EB510823A05041295C8F924F19544148E17AD421A0504185EB51984C195441EC51B8AE20A0504185EB51884A1954415C8FC2051FA0504185EB517848195441C3F528AC1DA05041713D0A1747195441000000801CA05041713D0AF744195441000000801CA050413333335342195441CDCCCCFC1BA050419A9999193F195441F6285C6F1AA05041CDCCCC1C3D1954415C8FC2E519A05041AE47E10A3E1954413D0AD75319A05041F6285C0F3F1954415C8FC2B517A05041713D0A97401954413333330315A0504114AE47D141195441EC51B83E13A0504114AE47D141195441C3F5285C11A050417B14AE9741195441AE47E1FA0CA050418FC2F568401954411F85EB5109A05041295C8F023F195441E17A14DE05A05041333333C34319544185EB51B801A050411F85EBB1451954411F85EB81FE9F5041B81E85AB45195441295C8F52E49F5041295C8FB2441954410AD7A390D49F5041F6285CAF43195441C3F528ECEA9F504114AE47015A1954413D0AD7A3D19F504152B81E356F195441AE47E14AC29F5041A4703DBA7F1954418FC2F558BE9F50419A99997983195441A4703D6AB89F50411F85EBC1821954415C8FC2A5B79F5041B81E850B84195441AE47E1AAB69F504148E17A7486195441A4703DBAB59F504185EB51D8891954417B14AE47B59F5041666666A68C19544152B81ED5B59F5041D7A3704D8D1954418FC2F548B89F504185EB51D88F19544100000030BC9F50419A9999699419544185EB5198BC9F5041C3F5281C95195441713D0AB7BC9F5041A4703DEA95195441C3F528ACBC9F50417B14AE179719544148E17A74BC9F5041EC51B80E98195441666666F6BB9F5041295C8FE2981954413D0AD733BA9F5041EC51B8DE9A1954419A999969B69F5041AE47E1AA9A195441A4703D3AB29F50415C8FC245A4195441666666E6B19F50411F85EBE1A419544100000030B29F504148E17A14A51954419A9999E9B69F5041295C8FE2A6195441E17A145EB99F50411F85EBC1A8195441000000C0BB9F5041F6285C3FAA1954410AD7A370BC9F5041666666B6AA195441E17A147EC19F5041A4703D9AAE1954419A999929C39F5041000000B0AF19544114AE4791C49F504114AE4781B019544152B81E25C59F5041AE47E1AAB0195441713D0A27C89F504148E17A74B1195441666666B6CA9F5041C3F5285CB219544185EB5138CB9F504114AE4771B2195441295C8F52CC9F50411F85EB71B2195441AE47E12ACD9F50417B14AE77B2195441F6285CAFD19F5041295C8F22B1195441CDCCCCFCD59F5041A4703DEAAA1954415C8FC275D69F5041666666D6AB1954410AD7A360DA9F5041713D0AE7B4195441AE47E10ADD9F50418FC2F508BD195441E17A14BEDD9F5041C3F5288CC619544148E17AC4DD9F504166666666C7195441D7A3702DDC9F504114AE47E1CF195441F6285CAFD89F504148E17A34D5195441713D0AA7D69F504148E17A14D91954418FC2F548D39F504152B81EE5E1195441713D0AB7D29F504185EB51E8EA195441C3F528DCD19F50411F85EB21F0195441EC51B86ED09F5041AE47E1AAF2195441C3F5288CD09F50417B14AE07F81954417B14AE07D29F5041CDCCCC6CFA1954413D0AD713D89F50410AD7A3A0F91954413D0AD743DF9F5041E17A14AEFB195441B81E853BE29F5041666666C6F619544148E17A74E69F504152B81EE5F2195441666666A6E99F50410AD7A330ED19544185EB51C8EE9F5041CDCCCC6CE9195441AE47E15AEF9F5041B81E858BE519544185EB5128F89F504148E17A64E61954415C8FC295FB9F5041B81E851BE819544133333333FA9F5041713D0A77EB1954413D0AD723F69F50413D0AD783EF195441D7A370ADF79F5041CDCCCC8CF119544152B81E65FC9F504152B81EC5F5195441E17A141E00A05041C3F5281CF7195441B81E85DB03A0504148E17AA4F6195441713D0A1707A0504185EB51C8F21954419A99993906A05041EC51B83EF2195441AE47E12A07A05041A4703D1AF11954413D0AD78307A05041666666F6EF19544148E17A0407A0504148E17A04EF19544148E17AA403A05041C3F5280CEB195441C3F5285C01A05041666666B6E8195441EC51B82EFE9F50418FC2F5C8E5195441C3F528CCFB9F5041333333B3E31954411F85EB51FA9F5041713D0A47E319544166666626F79F5041EC51B86EE21954411F85EB51F49F504166666696E1195441F6285C8FF39F5041AE47E14AE119544148E17AD4F19F5041A4703D0AE1195441EC51B8BEEE9F504152B81E35E11954413D0AD703ED9F504148E17AF4E019544133333353EB9F5041AE47E1DADF195441D7A370ADE99F5041EC51B8DEDD195441D7A3703DE89F5041F6285C6FDC195441B81E859BE49F50418FC2F518D91954417B14AE77E39F504185EB5168D719544185EB5108E29F50413D0AD793D419544100000030E19F50411F85EB61D2195441295C8F62E09F504133333353D11954413D0AD733DF9F5041F6285C9FCE1954417B14AEC7DE9F50410AD7A3E0CB195441AE47E1AADF9F5041B81E855BC719544148E17AE4E09F504100000010C419544185EB5108E29F5041E17A146EC31954415C8FC2D5E29F5041B81E85ABC2195441CDCCCC4CE39F50410AD7A330C1195441CDCCCC6CE39F50413D0AD7D3BB195441F6285C0FE49F5041B81E85DBB7195441713D0AC7E49F504185EB51D8B3195441AE47E15AE49F504114AE47F1B1195441C3F5282CE39F504152B81E65B11954419A9999F9E09F504114AE4761B019544166666666DE9F504114AE47D1AE19544152B81E95DC9F5041CDCCCC8CAD195441B81E855BDB9F5041CDCCCCFCAB195441E17A148EDA9F5041000000E0A9195441666666D6D99F504166666616A719544166666646D89F5041B81E85EBA6195441666666B6D69F50419A9999F9A7195441CDCCCC0CD49F5041C3F5284CAA1954418FC2F558D19F5041D7A370ADAA195441333333B3CF9F5041C3F5284CAA1954417B14AE67CC9F5041666666A6A819544148E17AD4C99F50419A999989A6195441295C8F52C69F5041A4703D8AA31954417B14AE97C49F5041D7A370DDA2195441333333E3C19F50411F85EBB1A219544133333353C09F504100000030A219544152B81E25BC9F504133333383A1195441E17A14AEB89F5041295C8F62A1195441E17A14AEB89F504152B81E95A019544152B81E45BC9F504114AE47E1A0195441EC51B87EC09F504133333383A1195441EC51B80EC29F5041F6285CEFA11954419A9999A9C39F5041F6285CEFA11954418FC2F5F8C49F50415C8FC245A2195441EC51B8BEC69F5041295C8FF2A219544166666676CA9F5041EC51B85EA6195441EC51B8DECC9F504100000050A81954413D0AD7D3CF9F5041A4703DCAA9195441F6285C8FD19F504114AE4721AA1954410AD7A3A0D39F5041F6285C9FA919544152B81E75D69F504114AE4721A719544114AE4751D89F5041E17A141EA6195441AE47E18AD99F5041D7A370FDA5195441F6285CEFDA9F50410AD7A3E0A619544166666646DB9F50417B14AE07A9195441295C8FD2DB9F5041B81E859BAB1954411F85EB21DD9F5041AE47E10AAD195441C3F5289CDE9F5041F6285C4FAE19544152B81E25E19F504148E17AB4AF195441CDCCCC6CE39F50417B14AEB7B0195441CDCCCCDCE49F504100000090B11954413D0AD753E59F504166666676B31954410AD7A390E49F5041B81E85FBB7195441EC51B8EEE39F50413D0AD7D3BB1954418FC2F5D8E39F504114AE4751C1195441F6285C2FE49F50415C8FC295C2195441B81E850BE39F50413D0AD7A3C319544114AE4791E19F5041D7A370BDC41954418FC2F5B8E09F5041295C8F42C6195441666666F6DF9F5041B81E85EBC8195441AE47E1AADF9F50410AD7A3E0CB19544114AE4701E09F5041F6285C9FCE195441A4703D1AE19F5041CDCCCCDCD0195441CDCCCCDCE19F50410AD7A300D2195441EC51B8EEE39F504185EB5148D71954417B14AEE7E49F5041713D0A97D8195441333333E3E99F5041713D0A27DD195441EC51B89EEB9F504133333323DF195441E17A14EEEC9F5041CDCCCC3CE01954418FC2F5A8EE9F5041D7A3707DE01954419A9999C9F19F5041295C8F72E0195441CDCCCC3CF49F5041E17A14BEE0195441C3F5283CF79F50411F85EBC1E1195441713D0A67FA9F504152B81EA5E21954418FC2F558FC9F50410AD7A3F0E2195441F6285C5FFF9F5041295C8FA2E5195441A4703D1A02A050413D0AD783E8195441C3F528BC04A05041EC51B83EEB1954416666660606A05041C3F528BCEC19544148E17A4407A05041295C8F52EE195441666666F607A05041AE47E12AEF1954411F85EB8108A05041E17A141EEF195441AE47E1CA0AA05041F6285CAFEC195441A4703D1A10A05041A4703DBAE6195441713D0A1712A0504185EB5158E419544148E17A5413A050413D0AD733E3195441EC51B8DE14A0504152B81EB5E21954410AD7A39015A0504152B81E75E2195441B81E859B1DA05041666666F6E11954419A9999F921A05041CDCCCCDCE11954410AD7A30025A05041A4703D6AE11954419A99990927A050419A999939E0195441D7A3705D2AA05041333333B3DC195441D7A3700D2CA05041000000D0DA1954410AD7A3A02FA05041B81E859BD4195441D7A3705D31A0504185EB5108D119544152B81E7532A05041CDCCCC8CCE19544185EB516832A0504133333303CD1954410000009031A050413D0AD7D3CA195441B81E85DB2FA05041295C8FE2C6195441295C8FE22EA0504166666666C41954418FC2F5B82EA0504100000090C2195441333333432FA05041B81E857BC11954415C8FC26530A05041A4703DBAC01954413D0AD7A331A0504114AE47F1C0195441C3F5286C33A05041B81E857BC1195441C3F5286C35A05041C3F528DCC119544148E17A3437A050419A999989C119544114AE47E138A0504148E17A74C019544185EB51E839A05041F6285CFFBE19544152B81E953BA0504185EB51C8BC195441E17A14BE3DA0504133333353B91954419A9999A93EA05041D7A370DDB519544114AE47413FA05041666666A6B319544114E2EC1040A05041E8772119AF195441CEACA9D640A050419099FF34AF1954415C8FC2F53FA0504148E17AE4B31954410AD7A3503FA0504133333353B61954415C8FC2453EA05041A4703D9AB91954419A9999093CA0504133333353BD1954417B14AEA739A05041CDCCCCCCC01954411F85EB9137A050413D0AD723C21954410000003035A050419A999989C2195441CDCCCC4C33A05041D7A3703DC2195441666666B631A050417B14AED7C1195441C3F5286C30A05041A4703D0AC2195441666666C62FA05041EC51B82EC31954416666660630A05041AE47E12AC519544185EB51B830A050417B14AEE7C6195441666666B631A0504166666656C91954417B14AEA732A0504100000020CB1954416666667634A050417B14AE87CD19544185EB514838A0504148E17AA4CB1954410AD7A39039A05041EC51B83EC9195441295C8FE23AA05041CDCCCC4CC619544185EB51183EA0504185EB51A8BF1954419A9999D93EA05041C3F5284CBD195441EC51B80E40A0504148E17A94BA19544148E17AA441A05041AE47E1BAB619544148E17A7442A05041CDCCCC3CB1195441B81E85DB42A0504100000070AF195441AE47E19A43A05041AE47E11AAC195441B81E85FB44A050411F85EBA1A619544152B81ED543A05041333333A3A61954419A99990943A0504152B81E55A7195441AE47E14A42A05041295C8F92A81954418FC2F5D841A05041F6285C4FAA1954410AD7A30041A0504152B81E55AE1954418B887DDC40A05041A305EB15AF195441190991D840A050410558D82AAF195441336D111340A0504172231B0DAF195441EDD2912040A05041CF7056C1AE195441A4703D3A40A0504114AE4731AE1954417B14AE1741A0504152B81E85AA1954416666668641A050419A999969A8195441000000B041A05041A4703DCAA6195441A4703D0A41A050415C8FC2B5A51954413D0AD7333FA05041C3F5285CA4195441A4703D0A3DA0504148E17A24A4195441295C8F7238A05041C3F5285CA41954419A99991931A050415C8FC285A41954417B14AE272DA050410AD7A340A41954410AD7A3F028A05041AE47E1CAA2195441AE47E1AA25A05041E17A140EA2195441EC51B81E24A050413D0AD7D3A1195441AE47E18A21A050413D0AD7D3A1195441000000401FA050418FC2F598A1195441713D0AE71CA05041B81E857BA1195441B81E85AB1AA05041E17A14AEA01954418FC2F55817A050413D0AD7139F1954417B14AEF713A05041295C8F129D1954413D0AD71312A0504152B81E959B195441B81E85BB11A05041AE47E1AA9A195441F6285CEF12A05041D7A3708D9A1954418FC2F5E813A05041AE47E19A981954417B14AE5715A05041295C8F9297195441B81E853B17A050410000000097195441F6285CCF19A050415C8FC27597195441E17A148E1AA05041000000F09419544148E17AB41DA0504185EB51F8951954410AD7A3901EA05041713D0A07961954415C8FC2F51CA05041C3F5281C951954411F85EB111BA0504185EB513893195441B81E85AB1AA05041333333C392195441F6285CCF19A05041E17A149E911954410AD7A3C019A050410AD7A320901954415C8FC2351AA05041B81E85FB8E19544185EB51781BA050411F85EB018E195441C3F5285C1DA050410AD7A3608D195441AE47E13A22A05041A4703DEA8A195441C3F5289C25A05041F6285C4F891954416666668626A05041295C8F82881954416666668626A05041295C8F2287195441EC51B87E25A05041A4703D6A85195441C3F5283C24A050413D0AD7A38319544185EB510823A050413D0AD74382195441D7A3706D21A0504185EB51B880195441C3F528CC20A050419A9999F97F19544185EB51981FA05041AE47E12A7D195441AE47E11A1EA0504148E17A047A1954410AD7A3301DA050413333335377195441AE47E1BA1CA050418FC2F508751954411F85EB211DA050416666661673195441AE47E11A1EA050411F85EBE171195441C3F5286C1FA050418FC2F53870195441C3F5287C21A050413D0AD7636E1954419A9999A923A050417B14AED76C19544114AE47B124A05041000000D06B195441AE47E1AA25A050417B14AE176A19544152B81EE525A05041295C8F4268195441AE47E1AA25A0504185EB519864195441C3F528EC24A050419A9999B95F195441FED0D5A924A050411C9661C85C1954418F4359A324A050416D7CB77E5C1954413D955B5025A05041EEFD226E5C195441C879E75025A0504152280C985C1954410F000000C3F5289C01A050413D0AD7E36A195441295C8F4202A050413333334364195441A4703DFA07A05041666666965A195441EC51B86E11A05041CDCCCC8C5319544152B81E2514A05041B81E85AB52195441AE47E1DA16A050418FC2F5B8541954418FC2F57816A0504148E17A54581954413D0AD7030EA05041E17A14FE6519544148E17A0408A05041D7A3700D6E19544148E17A5407A050419A9999B972195441B81E857B05A0504114AE47917A19544152B81E3503A05041F6285C6F7B195441295C8F12FE9F50417B14AE5779195441A4703D0AFD9F5041AE47E12A6D195441C3F5289C01A050413D0AD7E36A195441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>599242 - 145994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001D00000000000070C63051415C8FC215196A5441713D0AA7C7305141EC51B8CE136A5441D7A370CDBD3051418FC2F548106A544133333343BD30514166666616F96954419A999949B7305141A4703D0AF769544152B81E35B8305141666666360A6A5441666666F6B73051419A9999590B6A54415C8FC255B73051417B14AE370B6A544185EB5188B7305141A4703D3A0A6A5441CDCCCCBCB6305141D7A3700DF7695441333333D3B63051419A9999C9F569544148E17AD4AD3051413D0AD7F3F269544114AE4791A83051419A9999E9F46954419A999929A9305141EC51B85E096A5441CDCCCC2CB23051413D0AD7730B6A544100000010B730514148E17A940C6A54413D0AD733B73051410AD7A3E00B6A54415C8FC2C5B7305141A4703D3A0C6A5441AE47E1AAB730514185EB51B80C6A54413D0AD723B830514148E17AD40C6A544166666626B830514148E17A040F6A54411F85EB81B5305141EC51B8DE136A544166666636B430514152B81EB5156A54411F85EBA1B130514185EB51881B6A54419A999949AF305141C3F528AC206A5441295C8F22B830514100000000266A5441713D0A47BF305141D7A3704D2A6A5441B81E851BC3305141666666E6216A544100000070C63051415C8FC215196A5441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A370CDBD3051418FC2F548106A54419BF44FCDBD30514126B07943106A54416A075CCCBD305141D8028B1A106A544119B48FC3BD305141E6DC96A00E6A5441239EC5B0BD3051413E986D790B6A5441273766A4BD3051419A45EB65096A544129103631BD3051415C523C10F9695441658519C1BA3051418BD05D3AF8695441EF50344DB730514166A2790BF7695441595F7951B7305141F77A55AEF76954417438FE61B7305141934B9506F96954411BD65884B7305141AF3882D2FB6954418902058BB73051414800905DFC6954411DD7BFC5B7305141ADF67825016A5441008965F0B7305141282A3A9E046A544152B81E35B8305141666666360A6A5441666666F6B73051419A9999590B6A5441365A06EDB73051412AD19E570B6A54418CBFC5EBB7305141BA9DFD8A0B6A54413D0AD723B830514148E17AD40C6A544166666626B830514148E17A040F6A54416D914616B83051413EF016220F6A54411F85EB81B5305141EC51B8DE136A5441B0EB33A1B4305141AF51931D156A5441943655F7B3305141FB8B8243166A54411F85EBA1B130514185EB51881B6A544134333B62AF305141EABA2B76206A5441D4C0137BB4305141898BB3CC236A5441D84226A5B7305141B7FE7BB4256A5441B6EBD8C9B83051410F65A244266A5441CE385659BC305141169DC7511D6A5441CD7410BDBF305141118193B6136A54413C5B3688C2305141A7074312146A5441551662C1C5305141A8C64BB7146A5441A2A20359C7305141D970A221156A5441713D0AA7C7305141EC51B8CE136A5441D7A370CDBD3051418FC2F548106A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>599242 - 341412
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001D00000000000070C63051415C8FC215196A5441713D0AA7C7305141EC51B8CE136A5441D7A370CDBD3051418FC2F548106A544133333343BD30514166666616F96954419A999949B7305141A4703D0AF769544152B81E35B8305141666666360A6A5441666666F6B73051419A9999590B6A54415C8FC255B73051417B14AE370B6A544185EB5188B7305141A4703D3A0A6A5441CDCCCCBCB6305141D7A3700DF7695441333333D3B63051419A9999C9F569544148E17AD4AD3051413D0AD7F3F269544114AE4791A83051419A9999E9F46954419A999929A9305141EC51B85E096A5441CDCCCC2CB23051413D0AD7730B6A544100000010B730514148E17A940C6A54413D0AD733B73051410AD7A3E00B6A54415C8FC2C5B7305141A4703D3A0C6A5441AE47E1AAB730514185EB51B80C6A54413D0AD723B830514148E17AD40C6A544166666626B830514148E17A040F6A54411F85EB81B5305141EC51B8DE136A544166666636B430514152B81EB5156A54411F85EBA1B130514185EB51881B6A54419A999949AF305141C3F528AC206A5441295C8F22B830514100000000266A5441713D0A47BF305141D7A3704D2A6A5441B81E851BC3305141666666E6216A544100000070C63051415C8FC215196A5441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A370CDBD3051418FC2F548106A54419BF44FCDBD30514126B07943106A54416A075CCCBD305141D8028B1A106A544119B48FC3BD305141E6DC96A00E6A5441239EC5B0BD3051413E986D790B6A5441273766A4BD3051419A45EB65096A544129103631BD3051415C523C10F9695441658519C1BA3051418BD05D3AF8695441EF50344DB730514166A2790BF7695441595F7951B7305141F77A55AEF76954417438FE61B7305141934B9506F96954411BD65884B7305141AF3882D2FB6954418902058BB73051414800905DFC6954411DD7BFC5B7305141ADF67825016A5441008965F0B7305141282A3A9E046A544152B81E35B8305141666666360A6A5441666666F6B73051419A9999590B6A5441365A06EDB73051412AD19E570B6A54418CBFC5EBB7305141BA9DFD8A0B6A54413D0AD723B830514148E17AD40C6A544166666626B830514148E17A040F6A54416D914616B83051413EF016220F6A54411F85EB81B5305141EC51B8DE136A5441B0EB33A1B4305141AF51931D156A5441943655F7B3305141FB8B8243166A54411F85EBA1B130514185EB51881B6A544134333B62AF305141EABA2B76206A5441D4C0137BB4305141898BB3CC236A5441D84226A5B7305141B7FE7BB4256A5441B6EBD8C9B83051410F65A244266A5441CE385659BC305141169DC7511D6A5441CD7410BDBF305141118193B6136A54413C5B3688C2305141A7074312146A5441551662C1C5305141A8C64BB7146A5441A2A20359C7305141D970A221156A5441713D0AA7C7305141EC51B8CE136A5441D7A370CDBD3051418FC2F548106A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600325 - 1040786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D8A7D2351417B14AE57446C5441F6285C0F7F2351411F85EB11406C544185EB512883235141E17A14AE366C5441C3F528BC8523514114AE4771316C54417B14AE077A235141B81E858B2F6C5441AE47E13A6A2351419A9999992D6C54410AD7A3C06923514185EB5148306C54410AD7A34068235141E17A14BE386C544148E17A0464235141713D0A17386C544114AE47F15E235141F6285C3F376C5441713D0AF75D2351411F85EB11376C5441713D0AC75C235141295C8FE2416C5441A4703D8A7D2351417B14AE57446C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C54417B14AEA750235141E17A146E4C6C544152B81E55532351410AD7A3104D6C5441A4703D0A5C235141713D0A274E6C5441F6285C0F5C235141666666764E6C544152B81E1568235141CDCCCC5C4F6C5441AE47E11A74235141295C8F42506C54411F85EBA173235141EC51B88E4D6C5441D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600325 - 3561284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D8A7D2351417B14AE57446C5441F6285C0F7F2351411F85EB11406C544185EB512883235141E17A14AE366C5441C3F528BC8523514114AE4771316C54417B14AE077A235141B81E858B2F6C5441AE47E13A6A2351419A9999992D6C54410AD7A3C06923514185EB5148306C54410AD7A34068235141E17A14BE386C544148E17A0464235141713D0A17386C544114AE47F15E235141F6285C3F376C5441713D0AF75D2351411F85EB11376C5441713D0AC75C235141295C8FE2416C5441A4703D8A7D2351417B14AE57446C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C54417B14AEA750235141E17A146E4C6C544152B81E55532351410AD7A3104D6C5441A4703D0A5C235141713D0A274E6C5441F6285C0F5C235141666666764E6C544152B81E1568235141CDCCCC5C4F6C5441AE47E11A74235141295C8F42506C54411F85EBA173235141EC51B88E4D6C5441D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962513 - 321884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000001B000000053362C557205141DDBFAFC4FB7F5441DC943B03622051414C97678DFD7F5441ED68A3B7672051416414CEC7FE7F54416E9CC9FD6E2051416AD44583008054417BCF729674205141EC6775D801805441BA04CB8E78205141D5D87FCA02805441809396A07820514199BA77C4F67F54418F24BCB178205141695DC1E0F17F5441809396A078205141CE7FA500F07F544162714B7E782051417C774576EE7F5441E75B004978205141333BDD33EA7F5441EEDD982578205141B067F1CCE17F5441D7BACB0078205141A0832511D97F54416D89DF6873205141C2D1861CD87F5441C1D419C76E20514139475F2FD77F54417AB4A85A68205141594F8139D67F5441D56CE08B642051418CF0C1B6D57F54419AFD161A602051414170251ED57F5441214F169C5D2051413F2A92C8D47F5441B42E96415920514106411533D47F5441F7CA8FC458205141E00B366BD47F54414A429F7B58205141C122D4ADDF7F54418B59624958205141648D306FE77F54415F265E1D5820514142663F8FEF7F544163582B2358205141AF1029A1F37F544142001D2A582051411A5D3E80F87F5441053362C557205141DDBFAFC4FB7F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A31038205141713D0A37D37F5441EC51B8DE2E2051418FC2F518D57F544148E17A942C205141AE47E13AD57F5441D7A3708D2B205141B81E853BE47F544114AE47312B20514185EB5138ED7F54413D0AD7232B2051415C8FC235F57F5441F6285C0F2B205141E17A142EF97F54413D0AD7F32A205141C3F528CC00805441CDCCCC6C362051418FC2F5F8008054415C8FC2B53C205141CDCCCCAC00805441A4703D0A43205141333333C3FF7F5441D7A3705D48205141713D0A67FE7F54417B14AE774D2051419A999919FD7F544185EB51685220514100000020FC7F544148E17AC45720514185EB51E8FB7F5441A4703D4A58205141D7A3704DE77F5441666666C658205141295C8F22D47F54418FC2F5784920514152B81E15D27F5441A4703D3A47205141000000D0D17F544148E17AF43F2051413D0AD7F3D17F54410AD7A31038205141713D0A37D37F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962513 - 1062375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000001B000000053362C557205141DDBFAFC4FB7F5441DC943B03622051414C97678DFD7F5441ED68A3B7672051416414CEC7FE7F54416E9CC9FD6E2051416AD44583008054417BCF729674205141EC6775D801805441BA04CB8E78205141D5D87FCA02805441809396A07820514199BA77C4F67F54418F24BCB178205141695DC1E0F17F5441809396A078205141CE7FA500F07F544162714B7E782051417C774576EE7F5441E75B004978205141333BDD33EA7F5441EEDD982578205141B067F1CCE17F5441D7BACB0078205141A0832511D97F54416D89DF6873205141C2D1861CD87F5441C1D419C76E20514139475F2FD77F54417AB4A85A68205141594F8139D67F5441D56CE08B642051418CF0C1B6D57F54419AFD161A602051414170251ED57F5441214F169C5D2051413F2A92C8D47F5441B42E96415920514106411533D47F5441F7CA8FC458205141E00B366BD47F54414A429F7B58205141C122D4ADDF7F54418B59624958205141648D306FE77F54415F265E1D5820514142663F8FEF7F544163582B2358205141AF1029A1F37F544142001D2A582051411A5D3E80F87F5441053362C557205141DDBFAFC4FB7F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A31038205141713D0A37D37F5441EC51B8DE2E2051418FC2F518D57F544148E17A942C205141AE47E13AD57F5441D7A3708D2B205141B81E853BE47F544114AE47312B20514185EB5138ED7F54413D0AD7232B2051415C8FC235F57F5441F6285C0F2B205141E17A142EF97F54413D0AD7F32A205141C3F528CC00805441CDCCCC6C362051418FC2F5F8008054415C8FC2B53C205141CDCCCCAC00805441A4703D0A43205141333333C3FF7F5441D7A3705D48205141713D0A67FE7F54417B14AE774D2051419A999919FD7F544185EB51685220514100000020FC7F544148E17AC45720514185EB51E8FB7F5441A4703D4A58205141D7A3704DE77F5441666666C658205141295C8F22D47F54418FC2F5784920514152B81E15D27F5441A4703D3A47205141000000D0D17F544148E17AF43F2051413D0AD7F3D17F54410AD7A31038205141713D0A37D37F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962513 - 3216792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000001B000000053362C557205141DDBFAFC4FB7F5441DC943B03622051414C97678DFD7F5441ED68A3B7672051416414CEC7FE7F54416E9CC9FD6E2051416AD44583008054417BCF729674205141EC6775D801805441BA04CB8E78205141D5D87FCA02805441809396A07820514199BA77C4F67F54418F24BCB178205141695DC1E0F17F5441809396A078205141CE7FA500F07F544162714B7E782051417C774576EE7F5441E75B004978205141333BDD33EA7F5441EEDD982578205141B067F1CCE17F5441D7BACB0078205141A0832511D97F54416D89DF6873205141C2D1861CD87F5441C1D419C76E20514139475F2FD77F54417AB4A85A68205141594F8139D67F5441D56CE08B642051418CF0C1B6D57F54419AFD161A602051414170251ED57F5441214F169C5D2051413F2A92C8D47F5441B42E96415920514106411533D47F5441F7CA8FC458205141E00B366BD47F54414A429F7B58205141C122D4ADDF7F54418B59624958205141648D306FE77F54415F265E1D5820514142663F8FEF7F544163582B2358205141AF1029A1F37F544142001D2A582051411A5D3E80F87F5441053362C557205141DDBFAFC4FB7F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A31038205141713D0A37D37F5441EC51B8DE2E2051418FC2F518D57F544148E17A942C205141AE47E13AD57F5441D7A3708D2B205141B81E853BE47F544114AE47312B20514185EB5138ED7F54413D0AD7232B2051415C8FC235F57F5441F6285C0F2B205141E17A142EF97F54413D0AD7F32A205141C3F528CC00805441CDCCCC6C362051418FC2F5F8008054415C8FC2B53C205141CDCCCCAC00805441A4703D0A43205141333333C3FF7F5441D7A3705D48205141713D0A67FE7F54417B14AE774D2051419A999919FD7F544185EB51685220514100000020FC7F544148E17AC45720514185EB51E8FB7F5441A4703D4A58205141D7A3704DE77F5441666666C658205141295C8F22D47F54418FC2F5784920514152B81E15D27F5441A4703D3A47205141000000D0D17F544148E17AF43F2051413D0AD7F3D17F54410AD7A31038205141713D0A37D37F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>954430 - 3566902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -28  </desc>
+<a>
+0106000000010000000103000000010000002C000000B1F8DD07105A51414C04569FA6865441FC6040C5125A514146C62615A3865441E891719D195A5141A32705629E865441E75950B31D5A51417F51E1939B865441AD66797D1D5A51416C1AE40399865441354C80071E5A514197DCD2AA978654411A559F74205A5141C29EC151968654414CB6C8B0235A5141D369CF6597865441980ED37F245A5141E334DD7998865441FB83BFD82C5A5141545ACBA994865441E7E0DEBA515A5141C32C702A8B86544101967877615A5141FBDEF12381865441023DF6A8685A51415B36E44C7686544186C25EC86C5A5141A5C0D8ED6E865441828DCDDB425A5141A528BE766F865441828DCDDB425A5141144AE49169865441B6722827435A5141CE5BDEF75C8654411762C4713F5A5141F3891FA95B8654417A04E0AB3D5A5141F824DE335B86544124D50E143B5A51417A0DFC835A8654410A1902EF375A51412FC32E12598654410AB5D68F375A51413C05B3E758865441C12F22DB325A5141AE33989258865441BE55832E305A5141B890346558865441CD4A2C902B5A51413BF8A01158865441472930C72B5A514188F50F6760865441FBD025F82A5A5141749D6969678654419EAD0D15295A51418A07B2126D865441C96FFCBB275A514123B8C6B06E865441C75D5A101B5A51417A3CA4FE6B865441A6C73EE8185A51413EAFA7436C86544198C76F1C165A51410B862CBD6A865441D8F6546E145A5141BD3402616A865441D031068D125A5141A233E3046D865441536081A1125A5141ADC8E256728654419B54B5D4125A514122F396197C865441E0EBF2DE125A51410B9D3B2E87865441F6ACE1A0115A5141BCFF86BC9186544140E1456E105A5141E22B36769B8654412ECA62F30F5A5141D941FA949E8654415EFCCC02105A51417858592EA28654412ECA62F30F5A5141C5052A1AA3865441EC3225E90F5A514173BF614DA4865441B1F8DD07105A51414C04569FA6865441
+</a>
+
+<b>
+010600000001000000010300000001000000510000000D62DEA7115A5141C524E6D1A3865441D32ACC08105A51416044331DA08654419266EA42115A5141B5E281529F86544180E901AC155A5141AD9341C89C865441453B422A185A5141465D4F3B9F865441E991719D195A5141A72705629E8654410139B8F01B5A5141AB9E42C99C865441A469B7251D5A5141FDB419F59B865441461522521D5A5141E1CDF2A99B865441BE608B341C5A5141CEB896F299865441DA9CDD2B1D5A5141A1D6962198865441EBA27F331E5A51419A26FA669786544132425920205A51419759C72E96865441514AA439225A5141C92F0B2B9686544162C31CF3225A51417017B212998654414EA1AB63245A5141234CD15F988654416B7F0ACE2B5A5141AFBACAE694865441667E5E17515A51419CE6B8798B865441FD6EB477585A51415386BF2E878654413AEFDA04615A514179C1B3A181865441EEDF48A4685A514100D9544F7686544148C3E59E6B5A514174DB724271865441E3659E2D635A5141A2F0BFE1708654411F63F66C595A5141604EB5497086544141256C01505A51412EBC76946F86544155A32CFC4A5A51413010ACE56E865441D8042351475A514120AF35696E8654416F3B57E7425A5141CFBF59D96D865441878DCDDB425A5141174AE49169865441BB722827435A5141CB5BDEF75C8654411A62C4713F5A5141F4891FA95B8654417804E0AB3D5A5141F924DE335B86544125D50E143B5A5141770DFC835A8654410A1902EF375A51412CC32E12598654410EB5D68F375A51413B05B3E758865441C02F22DB325A5141B333989258865441C055832E305A5141B69034655886544178869F3A2B5A5141A4B11E14588654411A9D5797295A5141784A80CE58865441F38D214E2A5A5141A6558EFA59865441DAAF6F0C2B5A5141C43BDC935B865441CD0F64B32B5A51417FE657675D8654415DB592142C5A5141CD726E1F6186544121204D7B2B5A5141E76DD1AE648654411695C09E2A5A514151098A4567865441336221D9285A514103691D3C6C86544105473785285A5141D2B543296D865441109AC5291F5A5141D36B4E0F6D865441015362991E5A51419DB918426C8654416FDDD5241A5A5141F751C7026C865441D28EC4F2185A51411CA65ABF6B865441971DE51B165A51415763BB866B865441532000D7145A51410825E8836B8654410A854C87135A5141FFD7FC806B865441D331068D125A5141A133E3046D865441526081A1125A5141ADC8E256728654419654B5D4125A514121F396197C865441254975C6125A5141B755E0857D8654412BA66BEF125A5141E2E09CA47E865441DD544193125A5141E9A5EB8580865441A4BA0614125A5141CAA81EF387865441D387F930115A514126A0719E918654415779340A115A514156F8814993865441D023B306105A51413934AF3B938654413EC0EAB80E5A5141990439D89986544125E482830D5A5141B1712B169C865441D8635CBE0B5A51415C33260D9E8654415EECB2FC0A5A5141562285D59E86544143277A050A5A51418E59E7F79F8654418123E7360A5A51416CC9416CA186544196546E58095A51419B264ABEA2865441E81C347C085A514135AE4209A48654411D11C20A085A5141548870AAA48654412E20CB79075A514105E42066A58654411204CF5B0A5A51417C60A31EA6865441ED01D0EE0C5A5141F5F964C3A68654414C6D03200F5A514174FBB24FA78654411898B7A70F5A5141B0388E6FA7865441AA4E5A62105A514148455F27A6865441FCD1C54B115A514122838174A48654410D62DEA7115A5141C524E6D1A3865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791514 - 1278198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000001000000010300000001000000170000009A99992953CA5041F6285C5FBB5554415C8FC2054ECA5041AE47E18ABB555441DCAE759F4ACA504194B892D0455554412C38A0AA4FCA50418CF2A1D945555441D7A3707D4ECA50418FC2F5581D5554413D0AD7334DCA50418FC2F5181C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF05554418FC2F5B819CA50413D0AD7831E5654415C8FC2B51DCA5041E17A142E20565441F6285C2F3ACA504185EB51D818565441EC51B88E47CA5041D7A3707D1556544152B81EC558CA5041295C8F3210565441AE47E13A5ECA5041000000200E5654415C8FC2355FCA504114AE47710C5654410AD7A34058CA50417B14AEF7DE5554419A99992953CA5041F6285C5FBB555441
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A99992953CA5041F6285C5FBB5554411685FE9E4CCA504139A541AFBB5554411ABFDADE47CA504191DB737643555441470F67A74FCA5041A9DDAA6A455554416F79D9B44ECA504185207B661C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF05554418FC2F5B819CA50413D0AD7831E5654415C8FC2B51DCA5041E17A142E20565441F6285C2F3ACA504185EB51D818565441EC51B88E47CA5041D7A3707D1556544152B81EC558CA5041295C8F3210565441AE47E13A5ECA5041000000200E5654415C8FC2355FCA504114AE47710C5654410AD7A34058CA50417B14AEF7DE5554419A99992953CA5041F6285C5FBB555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791514 - 5255342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000001000000010300000001000000170000009A99992953CA5041F6285C5FBB5554415C8FC2054ECA5041AE47E18ABB555441DCAE759F4ACA504194B892D0455554412C38A0AA4FCA50418CF2A1D945555441D7A3707D4ECA50418FC2F5581D5554413D0AD7334DCA50418FC2F5181C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF05554418FC2F5B819CA50413D0AD7831E5654415C8FC2B51DCA5041E17A142E20565441F6285C2F3ACA504185EB51D818565441EC51B88E47CA5041D7A3707D1556544152B81EC558CA5041295C8F3210565441AE47E13A5ECA5041000000200E5654415C8FC2355FCA504114AE47710C5654410AD7A34058CA50417B14AEF7DE5554419A99992953CA5041F6285C5FBB555441
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A99992953CA5041F6285C5FBB5554411685FE9E4CCA504139A541AFBB5554411ABFDADE47CA504191DB737643555441470F67A74FCA5041A9DDAA6A455554416F79D9B44ECA504185207B661C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF05554418FC2F5B819CA50413D0AD7831E5654415C8FC2B51DCA5041E17A142E20565441F6285C2F3ACA504185EB51D818565441EC51B88E47CA5041D7A3707D1556544152B81EC558CA5041295C8F3210565441AE47E13A5ECA5041000000200E5654415C8FC2355FCA504114AE47710C5654410AD7A34058CA50417B14AEF7DE5554419A99992953CA5041F6285C5FBB555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>604163 - 360352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5A869DD5041A4703DCA1D2155413D0AD7D369DD504185EB51481F215541333333B369DD50415C8FC225212155418FC2F52869DD50417B14AED723215541CDCCCC1C67DD5041EC51B8AE2A2155418FC2F56870DD5041B81E85DB2B215541E17A14FE6FDD50417B14AEC72F2155419A9999D96EDD5041295C8F323521554148E17A6472DD50410AD7A3D034215541295C8F0279DD5041000000B01921554152B81EA574DD5041666666261921554114AE476174DD504152B81EF51A2155418FC2F5A869DD5041A4703DCA1D215541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000295C8F0279DD5041000000B019215541560B05B574DD5041329D5B281921554175ACF57D74DD504139C880311A21554114AE476174DD504152B81EF51A215541C4CEA95474DD5041AB2274F81A215541C3A5991B74DD50417D5F1F531B2155415980DCA172DD50413F8CFBD123215541EC496C7C70DD504176EDE3042B21554168CBBD6C70DD504148F540002C215541FFD1874270DD504118A092442D215541E17A14FE6FDD50417B14AEC72F215541BCA2716A6FDD50413175BD83322155419B03F7DF6EDD5041B86CDF3135215541C1905F1771DD504151689BF434215541BCF5E42171DD5041DD9678F3342155418B792E5D72DD5041D538CFB83421554104C6D8B277DD5041C06835101F215541295C8F0279DD5041000000B019215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607926 - 401649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000003000000010300000001000000CF00000085EB51786CA7504148E17A34F05355411F85EB516CA75041713D0A37EF5355410000009073A750413D0AD7A3ED535541333333B378A7504148E17A64E75355418FC2F5D86AA750419A9999E9E7535541295C8F4262A7504148E17A34F25355410AD7A3905AA750411F85EBD1FC535541E17A14FE57A75041E17A145EFF535541C3F528CC54A7504152B81E250154554185EB519851A750417B14AE9701545541D7A3707D3EA75041713D0A17FD535541A4703D8A30A75041713D0AB7FF53554114AE47C130A7504166666626045455411F85EBD12FA7504148E17A2408545541000000902DA7504185EB51D80B54554114AE470129A750418FC2F5E80E545541E17A145E28A75041B81E85AB0D545541A4703DBA2BA750410AD7A3700A545541333333932DA750410AD7A33007545541B81E856B2EA750419A999909045455411F85EB212EA75041295C8FE200545541000000B02CA750418FC2F55801545541713D0AF72BA7504148E17A9401545541B81E852B2AA7504185EB5128025455418FC2F50829A750415C8FC28502545541713D0A0728A7504185EB51D8025455419A99995927A750410000001003545541295C8FE226A75041C3F5282C03545541F6285C1F26A750419A99995903545541E17A14EE23A75041CDCCCCDC03545541CDCCCC4C22A75041E17A143E045455418FC2F53821A75041E17A147E0454554152B81EF51FA750419A9999C9045455410AD7A3E01EA75041A4703D0A055455413D0AD7831DA75041B81E855B055455419A9999491CA7504152B81EA50554554185EB51B819A7504100000080065455417B14AE0718A750410AD7A31007545541D7A3707D15A750418FC2F5E8075455418FC2F58813A7504100000090085455417B14AE9711A750415C8FC23509545541B81E857B0FA75041A4703DEA09545541D7A370ED0CA750413D0AD70304545541333333730BA750413D0AD7830454554152B81E450AA750419A9999E90454554185EB519809A750413D0AD7230554554114AE47C108A75041CDCCCC6C0554554148E17AC406A750418FC2F51806545541C3F528FC05A750416666665606545541A4703DDA04A75041EC51B8AE06545541713D0AF702A75041295C8F42075455410AD7A37001A75041A4703DBA07545541C3F528FCFCA65041713D0A1709545541333333D3FAA65041000000C00954554148E17AA4F8A65041AE47E16A0A545541EC51B8FEF6A65041C3F528EC0A5455417B14AE87B6A65041A4703DAA0F5455415C8FC2F574A65041713D0AA737545541666666F657A65041000000F03F545541B81E85FB27A650415C8FC275455455411F85EB011FA65041AE47E14A4A545541AE47E15A02A650418FC2F5784F545541666666D6E5A55041C3F5280C4C54554185EB5178E6A55041295C8F7255545541B81E851BE8A55041333333F3555455417B14AE57EAA550418FC2F598565455415C8FC265EBA550413D0AD7E356545541AE47E13AEDA550416666663657545541C3F528BCF1A550415C8FC2055854554166666666F5A55041000000B0585455417B14AE27F8A55041C3F5281C59545541CDCCCC4CFBA5504148E17A94595455411F85EBE1FEA550418FC2F5085A545541B81E853B01A65041295C8F425A5455410AD7A36004A6504148E17A745A5455410AD7A39009A65041AE47E1BA5A54554148E17AC411A65041713D0A275B5455413333331315A650418FC2F5585B5455413D0AD7C317A650417B14AEA75B5455410AD7A3701AA65041333333035C54554185EB51281FA650418FC2F5A85C5455418FC2F59823A650413D0AD7635D545541666666A628A65041000000405E545541EC51B8DE2CA65041EC51B84E5D545541000000E030A65041AE47E17A5C54554185EB514835A650419A9999895B545541C3F5283C3BA65041D7A3703D5A545541D7A3707D3FA650410000005059545541D7A3708D40A65041AE47E12A5954554152B81E1545A65041E17A14DE58545541713D0A074AA65041A4703DAA58545541CDCCCC7C4CA65041AE47E18A58545541D7A3709D4EA6504185EB5148585455418FC2F5E853A6504166666676575455415C8FC2E556A650411F85EB0157545541713D0A4759A650417B14AEC756545541713D0A675DA65041713D0A87565455418FC2F5F861A6504166666636565455415C8FC2B56AA65041713D0AC7555455416666664671A6504148E17AC45554554148E17A4473A65041666666B65554554148E17A0475A6504166666696555455417B14AEE776A650415C8FC255555455410000009077A650410AD7A33055545541333333E378A6504148E17AD454545541C3F5289C79A650415C8FC285545455410AD7A3507AA65041000000205454554185EB51A87BA65041713D0A3753545541E17A14CE7CA65041D7A3705D52545541E17A14AE7EA65041B81E85AB5054554114AE478181A65041000000F04D545541CDCCCC4C84A65041F6285C3F4B545541A4703D7A87A6504185EB517848545541CDCCCC1C8BA6504148E17A44455455418FC2F5E88EA65041AE47E1CA41545541EC51B8DE91A65041F6285CFF3E54554148E17A3493A650410AD7A3E03D5455417B14AE3795A650411F85EB913C545541295C8FE296A650411F85EBA13B54554148E17A2499A6504185EB51B83A54554148E17A549EA65041CDCCCCFC3854554185EB51E89FA65041D7A3705D38545541CDCCCC7CA2A65041C3F528FC36545541295C8F72A5A650411F85EBB1355455411F85EBD1A7A65041333333833454554166666636ABA65041EC51B8AE325455413D0AD713ACA6504148E17A5432545541D7A3708DAFA65041EC51B81E31545541C3F528DCB0A650419A9999B9305455410AD7A3B0B2A65041CDCCCC4C30545541713D0AF7B4A650417B14AE07305455411F85EB31B8A65041000000C02F545541E17A140EBBA6504185EB51982F54554152B81ED5BCA65041666666862F545541A4703DBABFA65041B81E85DB2E5455413D0AD793C2A6504152B81E452E54554152B81EE5C3A650411F85EBE12D5455413D0AD7F3C4A650417B14AE872D545541CDCCCCCCC6A650415C8FC2C52C54554133333313C9A65041333333C32B545541C3F5284CCDA65041295C8FD2295455418FC2F538D2A650415C8FC28527545541666666E6D3A650415C8FC2D526545541B81E85BBD6A650417B14AEC725545541B81E854BD9A65041B81E855B25545541E17A14EEDBA650417B14AEF7245455415C8FC2B5DFA650413D0AD75324545541713D0AD7E2A65041B81E85AB2354554114AE4791E6A65041D7A3709D225455410AD7A310E8A65041333333332254554148E17A44EBA6504133333373215455415C8FC245EFA65041D7A370FD20545541D7A3704DF1A65041A4703D9A205455417B14AE37F4A65041AE47E10A20545541A4703D3AF6A65041333333A31F54554148E17A34F9A650415C8FC2E51E54554152B81ED5FCA650410AD7A3001E5455417B14AEB7FEA65041000000901D545541E17A14EE01A75041D7A3707D1D5455419A99997905A75041AE47E16A1D54554185EB51C806A75041D7A3707D1D54554185EB51080BA75041C3F528FC1D5455415C8FC2650EA7504148E17A641E545541333333C311A75041AE47E11A1F545541CDCCCCCC12A75041B81E854B1F545541000000A015A7504152B81EA51F545541EC51B89E18A75041713D0A3720545541AE47E16A1CA7504100000010215455415C8FC2D51EA750415C8FC295215455413333330322A750413333336322545541B81E857B23A75041B81E85BB22545541B81E854B25A75041295C8FE222545541AE47E16A28A750415C8FC235235455410AD7A3802BA75041AE47E17A23545541B81E853B2CA75041CDCCCC6C23545541E17A148E30A750419A9999E9225455417B14AE7732A750418FC2F5B822545541EC51B80E35A75041713D0AD722545541666666A639A7504133333343235455419A9999593EA75041E17A14DE23545541EC51B80E42A750416666664624545541B81E853B44A7504148E17A8424545541A4703D5A46A75041C3F528EC2454554185EB511849A750419A99997925545541E17A142E4CA750413D0AD713265455419A9999C94EA750415C8FC29526545541F6285CBF51A7504148E17A24275455410AD7A36053A7504152B81E85275455417B14AE8754A7504114AE4761275455419A9999F955A750418FC2F518275455415C8FC22557A750411F85EBC1265455411F85EBF159A75041E17A14CE255455413D0AD7E35CA75041333333D324545541AE47E16A61A750416666661623545541D7A3705D64A750410AD7A3D0215455411F85EB616BA75041CDCCCC2C1D545541F6285CDF6EA750415C8FC2251A545541295C8FC279A750410AD7A3700C545541F6285CCF7CA750417B14AE170A545541000000C07FA750413D0AD74309545541AE47E1DA82A75041C3F528DC08545541295C8FE27FA75041A4703D1A06545541CDCCCC1C7AA7504185EB51C8005455413D0AD79377A750419A9999F900545541295C8F726FA750417B14AEE703545541C3F5284C6FA75041A4703DEA0254554185EB51786CA7504148E17A34F05355410103000000010000001600000085EB51A802A65041666666266654554114AE47E106A65041E17A14DE645455417B14AE5708A65041B81E856B645455419A99992909A650410000004064545541F6285C0F0CA65041295C8FE2635455419A9999F90EA650413333338363545541A4703DFA12A65041C3F528CC62545541AE47E12A18A650410AD7A3D061545541E17A14DE1CA65041EC51B8CE60545541D7A370BD21A65041295C8FC25F545541D7A3701D27A650417B14AE975E545541CDCCCC8C23A6504152B81EF55D5455411F85EBC11FA650413D0AD7635D54554152B81E651BA6504114AE47B15C54554148E17AB418A65041666666665C545541AE47E10A15A65041713D0A075C545541295C8F0212A650418FC2F5C85B545541AE47E1CA09A6504114AE47615B545541295C8F9204A65041EC51B81E5B545541295C8FD2FFA55041AE47E1BA5A545541A4703D7AFBA55041F6285C4F5A54554185EB51A802A650416666662666545541010300000001000000AB000000A4703D2A8AA65041F6285C3F47545541D7A370FD8BA650411F85EBF146545541C3F528AC8DA65041A4703D9A465455415C8FC2C58FA65041EC51B80E46545541E17A143E92A650413D0AD763455455413333336394A6504152B81EC544545541EC51B8FE96A65041EC51B8FE435455413D0AD7A399A650410AD7A3304354554185EB51389CA65041295C8F624254554152B81EF59EA650418FC2F58841545541B81E857BA0A650419A9999194154554152B81E65A3A650415C8FC265405455411F85EB61A6A65041D7A370BD3F5455410AD7A390A7A65041B81E857B3F545541713D0AD7A9A65041EC51B8DE3E545541A4703D7AABA650411F85EB713E54554152B81EC5ADA65041D7A3706D3D545541D7A3706DAFA65041295C8FB23C545541F6285C3FB1A6504185EB51C83B54554185EB5188B3A65041B81E859B3A54554133333383B4A65041E17A141E3A54554133333393B5A650418FC2F5C839545541666666F6B6A65041CDCCCC6C395455419A999919B8A65041F6285C2F39545541713D0A17BAA65041D7A370FD385455417B14AEC7BCA650413D0AD7B338545541000000C0BEA65041CDCCCC6C385455418FC2F5C8BFA65041D7A3703D38545541A4703D7AC2A65041295C8F8237545541B81E85EBC3A65041F6285C1F3754554114AE4771C6A6504185EB51583654554185EB5108C9A650415C8FC28535545541B81E853BCBA65041EC51B8BE34545541EC51B86ECEA650410000009033545541713D0AB7D1A6504148E17A8432545541B81E85CBD5A6504148E17A743054554148E17A54D6A650419A99994930545541CDCCCC9CD9A65041666666662F5455413D0AD7E3DAA65041A4703D0A2F545541AE47E1FADBA65041EC51B8CE2E545541A4703DAADDA650415C8FC2852E545541713D0A67DFA65041713D0A272E545541B81E853BE1A650410AD7A3B02D545541A4703D5AE2A650418FC2F5582D54554185EB51B8E4A65041666666862C545541A4703D0AE8A65041D7A3708D2B545541295C8F12ECA6504152B81E552A5455419A999979EFA65041AE47E16A29545541AE47E12AF1A65041AE47E1EA28545541D7A3704DF4A65041A4703D9A28545541A4703DCAF6A650415C8FC25528545541295C8F82F8A650415C8FC2952854554152B81E65FAA65041E17A14FE28545541F6285C0FFCA65041EC51B85E29545541AE47E15AFDA65041B81E858B29545541A4703D9AFEA6504114AE47A129545541AE47E1CA01A750417B14AED72954554185EB511804A750413D0AD7F329545541CDCCCC9C06A7504152B81E152A545541333333E307A75041295C8F122A545541D7A3700D0AA750413D0AD7F329545541000000600BA750410AD7A3D029545541D7A3702D0DA7504152B81E9529545541713D0AD70FA7504185EB51282954554152B81EF512A75041F6285CAF2854554114AE47A115A750419A99994928545541CDCCCCBC18A7504152B81E052854554148E17AE419A75041D7A370ED27545541333333231DA75041000000F0275455411F85EB9120A750411F85EB21285455411F85EB7124A75041C3F5284C28545541666666C626A7504185EB516828545541666666E629A75041EC51B8CE28545541B81E850B2DA750415C8FC225295455413D0AD7532FA75041EC51B85E2954554185EB519830A750416666667629545541E17A144E32A750411F85EB31295455410000005034A75041AE47E1EA28545541A4703DBA35A75041F6285CAF285455419A9999B937A75041CDCCCC5C28545541AE47E1FA3AA75041295C8F4228545541000000D03BA750419A999949285455417B14AE473FA750417B14AE9728545541295C8F0241A75041AE47E1AA2854554185EB514844A75041EC51B8CE28545541C3F528FC45A75041D7A370ED285455415C8FC25547A750413D0AD7E328545541666666B648A75041333333D328545541295C8F524AA750411F85EBB128545541666666264DA750410AD7A3502854554148E17A4451A750419A9999C927545541295C8F224FA75041B81E855B275455418FC2F5884CA75041EC51B8DE26545541713D0A0749A75041EC51B82E265455411F85EBC145A7504185EB518825545541CDCCCC8C43A750419A99993925545541713D0A273FA750410AD7A3B0245455413D0AD7933BA750418FC2F53824545541A4703D2A38A750415C8FC2C523545541EC51B8DE35A7504152B81E95235455419A9999F932A750418FC2F56823545541295C8FD230A7504152B81E9523545541C3F528CC2EA750415C8FC2E5235455410AD7A3D02BA7504152B81E4524545541713D0A3727A750415C8FC2C52354554148E17AE424A7504166666686235455418FC2F5B822A750411F85EB4123545541F6285CEF20A7504114AE47D122545541713D0A871EA7504148E17A342254554185EB51D81AA75041713D0A87215455413333334317A75041295C8FE2205455415C8FC2E513A75041A4703D3A20545541A4703D8A10A750413D0AD7731F54554152B81E750EA75041CDCCCC0C1F5455415C8FC2550CA75041295C8FB21E54554148E17AF409A750410AD7A3701E5455415C8FC2C506A75041713D0A471E5455410AD7A38003A75041713D0A271E545541666666D601A7504185EB51381E545541C3F528BCFFA65041E17A144E1E5455413D0AD7D3FEA65041666666661E5455417B14AEB7FDA65041A4703D9A1E545541000000F0FAA65041B81E853B1F5455410AD7A380F9A65041D7A3709D1F5455417B14AE77F7A650417B14AE3720545541D7A370DDF6A650419A99995920545541713D0A87F5A65041C3F5289C205455419A999959F1A650411F85EB6121545541EC51B8AEEEA65041EC51B8DE21545541295C8F42EBA65041F6285C2F22545541D7A3706DEAA6504148E17A54225455411F85EB81E8A65041AE47E1FA22545541A4703D2AE6A6504114AE47A123545541AE47E16AE2A6504148E17AA4245455410AD7A320E1A650415C8FC2D524545541CDCCCCDCDCA65041CDCCCC8C25545541E17A148ED9A65041C3F5280C2654554152B81E85D7A650411F85EB6126545541295C8FD2D6A650410AD7A39026545541E17A142ED6A65041666666C626545541EC51B87ED3A650415C8FC2F52754554152B81E25CFA650418FC2F5E829545541F6285CCFCBA650417B14AE772B545541713D0A07C9A6504185EB51B82C5455411F85EBA1C7A650413D0AD7432D545541E17A14FEC4A65041666666362E5455418FC2F518C2A65041C3F5281C2F545541CDCCCCACBEA65041D7A370FD2F545541713D0AB7BCA6504148E17A6430545541295C8FE2B9A65041F6285C7F30545541E17A143EB6A6504152B81EB530545541000000A0B3A65041C3F528FC305455417B14AEC7B1A65041F6285C4F3154554185EB5178B0A65041713D0AA731545541CDCCCC4CAEA65041AE47E14A3254554114AE4781ADA650410AD7A3A032545541A4703D6AA9A65041000000C034545541CDCCCCDCA6A65041333333033654554133333333A3A65041333333C3375455418FC2F528A0A650411F85EB3139545541713D0A179FA65041000000A0395455419A9999599DA65041B81E852B3A545541A4703D7A9BA65041EC51B8BE3A54554114AE476198A650418FC2F5E83B545541EC51B8DE96A650417B14AEA73C5455418FC2F5B895A65041AE47E15A3D5455411F85EBD193A6504185EB51B83E545541713D0AF791A65041000000404054554152B81EF58FA650410000000042545541EC51B81E8DA650410AD7A3C044545541A4703D2A8AA65041F6285C3F47545541
+</a>
+
+<b>
+01060000000100000001030000000100000037000000E651BDF08CA65041C37776E744545541AC4B376A8AA650417DD157094754554110F34B688AA65041966F50344754554109D650638BA65041C7D0CA0A47545541DD6E18228FA65041F941727E455455411FF49DFA91A650414E99B14C445455416389507093A65041F844D1B3435455417D5ECCF2A4A650412FE95E343C545541143B9199A6A65041EF1C2F7F3B5455418865DCEFA8A650411720C2DE3A545541938A1FEFB2A6504141BB182A385455413C65D7F2BDA65041B33F9A2F35545541DA7CCAA0C4A6504171EE32613354554107BCC304D0A650411925484C30545541DA548BC3D3A650419D99B6492F54554178C355EBD6A65041CE82C76E2E5455417D146FFAD6A65041166CF2282E545541120BDFBFD7A6504135983F582654554152B81E85D7A650411F85EB6126545541295C8FD2D6A650410AD7A39026545541E17A142ED6A65041666666C626545541EC51B87ED3A650415C8FC2F52754554176054629D3A65041B447101C2854554152B81E25CFA650418FC2F5E829545541F6285CCFCBA650417B14AE772B545541713D0A07C9A6504185EB51B82C5455411F85EBA1C7A650413D0AD7432D545541E17A14FEC4A65041666666362E5455418FC2F518C2A65041C3F5281C2F545541CDCCCCACBEA65041D7A370FD2F545541713D0AB7BCA6504148E17A6430545541295C8FE2B9A65041F6285C7F30545541E17A143EB6A6504152B81EB530545541000000A0B3A65041C3F528FC3054554169FC6FECB2A65041814ECA1B315455417B14AEC7B1A65041F6285C4F31545541B39DE2BAB0A650418BF1A2953154554185EB5178B0A65041713D0AA731545541CDCCCC4CAEA65041AE47E14A3254554114AE4781ADA650410AD7A3A032545541A4703D6AA9A65041000000C034545541CDCCCCDCA6A65041333333033654554133333333A3A65041333333C3375455418FC2F528A0A650411F85EB3139545541713D0A179FA65041000000A0395455419A9999599DA65041B81E852B3A545541A4703D7A9BA65041EC51B8BE3A54554114AE476198A650418FC2F5E83B545541EC51B8DE96A650417B14AEA73C5455418FC2F5B895A65041AE47E15A3D5455411F85EBD193A6504185EB51B83E545541713D0AF791A65041000000404054554152B81EF58FA650410000000042545541EC51B81E8DA650410AD7A3C044545541E651BDF08CA65041C37776E744545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607926 - 419809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000003000000010300000001000000CF00000085EB51786CA7504148E17A34F05355411F85EB516CA75041713D0A37EF5355410000009073A750413D0AD7A3ED535541333333B378A7504148E17A64E75355418FC2F5D86AA750419A9999E9E7535541295C8F4262A7504148E17A34F25355410AD7A3905AA750411F85EBD1FC535541E17A14FE57A75041E17A145EFF535541C3F528CC54A7504152B81E250154554185EB519851A750417B14AE9701545541D7A3707D3EA75041713D0A17FD535541A4703D8A30A75041713D0AB7FF53554114AE47C130A7504166666626045455411F85EBD12FA7504148E17A2408545541000000902DA7504185EB51D80B54554114AE470129A750418FC2F5E80E545541E17A145E28A75041B81E85AB0D545541A4703DBA2BA750410AD7A3700A545541333333932DA750410AD7A33007545541B81E856B2EA750419A999909045455411F85EB212EA75041295C8FE200545541000000B02CA750418FC2F55801545541713D0AF72BA7504148E17A9401545541B81E852B2AA7504185EB5128025455418FC2F50829A750415C8FC28502545541713D0A0728A7504185EB51D8025455419A99995927A750410000001003545541295C8FE226A75041C3F5282C03545541F6285C1F26A750419A99995903545541E17A14EE23A75041CDCCCCDC03545541CDCCCC4C22A75041E17A143E045455418FC2F53821A75041E17A147E0454554152B81EF51FA750419A9999C9045455410AD7A3E01EA75041A4703D0A055455413D0AD7831DA75041B81E855B055455419A9999491CA7504152B81EA50554554185EB51B819A7504100000080065455417B14AE0718A750410AD7A31007545541D7A3707D15A750418FC2F5E8075455418FC2F58813A7504100000090085455417B14AE9711A750415C8FC23509545541B81E857B0FA75041A4703DEA09545541D7A370ED0CA750413D0AD70304545541333333730BA750413D0AD7830454554152B81E450AA750419A9999E90454554185EB519809A750413D0AD7230554554114AE47C108A75041CDCCCC6C0554554148E17AC406A750418FC2F51806545541C3F528FC05A750416666665606545541A4703DDA04A75041EC51B8AE06545541713D0AF702A75041295C8F42075455410AD7A37001A75041A4703DBA07545541C3F528FCFCA65041713D0A1709545541333333D3FAA65041000000C00954554148E17AA4F8A65041AE47E16A0A545541EC51B8FEF6A65041C3F528EC0A5455417B14AE87B6A65041A4703DAA0F5455415C8FC2F574A65041713D0AA737545541666666F657A65041000000F03F545541B81E85FB27A650415C8FC275455455411F85EB011FA65041AE47E14A4A545541AE47E15A02A650418FC2F5784F545541666666D6E5A55041C3F5280C4C54554185EB5178E6A55041295C8F7255545541B81E851BE8A55041333333F3555455417B14AE57EAA550418FC2F598565455415C8FC265EBA550413D0AD7E356545541AE47E13AEDA550416666663657545541C3F528BCF1A550415C8FC2055854554166666666F5A55041000000B0585455417B14AE27F8A55041C3F5281C59545541CDCCCC4CFBA5504148E17A94595455411F85EBE1FEA550418FC2F5085A545541B81E853B01A65041295C8F425A5455410AD7A36004A6504148E17A745A5455410AD7A39009A65041AE47E1BA5A54554148E17AC411A65041713D0A275B5455413333331315A650418FC2F5585B5455413D0AD7C317A650417B14AEA75B5455410AD7A3701AA65041333333035C54554185EB51281FA650418FC2F5A85C5455418FC2F59823A650413D0AD7635D545541666666A628A65041000000405E545541EC51B8DE2CA65041EC51B84E5D545541000000E030A65041AE47E17A5C54554185EB514835A650419A9999895B545541C3F5283C3BA65041D7A3703D5A545541D7A3707D3FA650410000005059545541D7A3708D40A65041AE47E12A5954554152B81E1545A65041E17A14DE58545541713D0A074AA65041A4703DAA58545541CDCCCC7C4CA65041AE47E18A58545541D7A3709D4EA6504185EB5148585455418FC2F5E853A6504166666676575455415C8FC2E556A650411F85EB0157545541713D0A4759A650417B14AEC756545541713D0A675DA65041713D0A87565455418FC2F5F861A6504166666636565455415C8FC2B56AA65041713D0AC7555455416666664671A6504148E17AC45554554148E17A4473A65041666666B65554554148E17A0475A6504166666696555455417B14AEE776A650415C8FC255555455410000009077A650410AD7A33055545541333333E378A6504148E17AD454545541C3F5289C79A650415C8FC285545455410AD7A3507AA65041000000205454554185EB51A87BA65041713D0A3753545541E17A14CE7CA65041D7A3705D52545541E17A14AE7EA65041B81E85AB5054554114AE478181A65041000000F04D545541CDCCCC4C84A65041F6285C3F4B545541A4703D7A87A6504185EB517848545541CDCCCC1C8BA6504148E17A44455455418FC2F5E88EA65041AE47E1CA41545541EC51B8DE91A65041F6285CFF3E54554148E17A3493A650410AD7A3E03D5455417B14AE3795A650411F85EB913C545541295C8FE296A650411F85EBA13B54554148E17A2499A6504185EB51B83A54554148E17A549EA65041CDCCCCFC3854554185EB51E89FA65041D7A3705D38545541CDCCCC7CA2A65041C3F528FC36545541295C8F72A5A650411F85EBB1355455411F85EBD1A7A65041333333833454554166666636ABA65041EC51B8AE325455413D0AD713ACA6504148E17A5432545541D7A3708DAFA65041EC51B81E31545541C3F528DCB0A650419A9999B9305455410AD7A3B0B2A65041CDCCCC4C30545541713D0AF7B4A650417B14AE07305455411F85EB31B8A65041000000C02F545541E17A140EBBA6504185EB51982F54554152B81ED5BCA65041666666862F545541A4703DBABFA65041B81E85DB2E5455413D0AD793C2A6504152B81E452E54554152B81EE5C3A650411F85EBE12D5455413D0AD7F3C4A650417B14AE872D545541CDCCCCCCC6A650415C8FC2C52C54554133333313C9A65041333333C32B545541C3F5284CCDA65041295C8FD2295455418FC2F538D2A650415C8FC28527545541666666E6D3A650415C8FC2D526545541B81E85BBD6A650417B14AEC725545541B81E854BD9A65041B81E855B25545541E17A14EEDBA650417B14AEF7245455415C8FC2B5DFA650413D0AD75324545541713D0AD7E2A65041B81E85AB2354554114AE4791E6A65041D7A3709D225455410AD7A310E8A65041333333332254554148E17A44EBA6504133333373215455415C8FC245EFA65041D7A370FD20545541D7A3704DF1A65041A4703D9A205455417B14AE37F4A65041AE47E10A20545541A4703D3AF6A65041333333A31F54554148E17A34F9A650415C8FC2E51E54554152B81ED5FCA650410AD7A3001E5455417B14AEB7FEA65041000000901D545541E17A14EE01A75041D7A3707D1D5455419A99997905A75041AE47E16A1D54554185EB51C806A75041D7A3707D1D54554185EB51080BA75041C3F528FC1D5455415C8FC2650EA7504148E17A641E545541333333C311A75041AE47E11A1F545541CDCCCCCC12A75041B81E854B1F545541000000A015A7504152B81EA51F545541EC51B89E18A75041713D0A3720545541AE47E16A1CA7504100000010215455415C8FC2D51EA750415C8FC295215455413333330322A750413333336322545541B81E857B23A75041B81E85BB22545541B81E854B25A75041295C8FE222545541AE47E16A28A750415C8FC235235455410AD7A3802BA75041AE47E17A23545541B81E853B2CA75041CDCCCC6C23545541E17A148E30A750419A9999E9225455417B14AE7732A750418FC2F5B822545541EC51B80E35A75041713D0AD722545541666666A639A7504133333343235455419A9999593EA75041E17A14DE23545541EC51B80E42A750416666664624545541B81E853B44A7504148E17A8424545541A4703D5A46A75041C3F528EC2454554185EB511849A750419A99997925545541E17A142E4CA750413D0AD713265455419A9999C94EA750415C8FC29526545541F6285CBF51A7504148E17A24275455410AD7A36053A7504152B81E85275455417B14AE8754A7504114AE4761275455419A9999F955A750418FC2F518275455415C8FC22557A750411F85EBC1265455411F85EBF159A75041E17A14CE255455413D0AD7E35CA75041333333D324545541AE47E16A61A750416666661623545541D7A3705D64A750410AD7A3D0215455411F85EB616BA75041CDCCCC2C1D545541F6285CDF6EA750415C8FC2251A545541295C8FC279A750410AD7A3700C545541F6285CCF7CA750417B14AE170A545541000000C07FA750413D0AD74309545541AE47E1DA82A75041C3F528DC08545541295C8FE27FA75041A4703D1A06545541CDCCCC1C7AA7504185EB51C8005455413D0AD79377A750419A9999F900545541295C8F726FA750417B14AEE703545541C3F5284C6FA75041A4703DEA0254554185EB51786CA7504148E17A34F05355410103000000010000001600000085EB51A802A65041666666266654554114AE47E106A65041E17A14DE645455417B14AE5708A65041B81E856B645455419A99992909A650410000004064545541F6285C0F0CA65041295C8FE2635455419A9999F90EA650413333338363545541A4703DFA12A65041C3F528CC62545541AE47E12A18A650410AD7A3D061545541E17A14DE1CA65041EC51B8CE60545541D7A370BD21A65041295C8FC25F545541D7A3701D27A650417B14AE975E545541CDCCCC8C23A6504152B81EF55D5455411F85EBC11FA650413D0AD7635D54554152B81E651BA6504114AE47B15C54554148E17AB418A65041666666665C545541AE47E10A15A65041713D0A075C545541295C8F0212A650418FC2F5C85B545541AE47E1CA09A6504114AE47615B545541295C8F9204A65041EC51B81E5B545541295C8FD2FFA55041AE47E1BA5A545541A4703D7AFBA55041F6285C4F5A54554185EB51A802A650416666662666545541010300000001000000AB000000A4703D2A8AA65041F6285C3F47545541D7A370FD8BA650411F85EBF146545541C3F528AC8DA65041A4703D9A465455415C8FC2C58FA65041EC51B80E46545541E17A143E92A650413D0AD763455455413333336394A6504152B81EC544545541EC51B8FE96A65041EC51B8FE435455413D0AD7A399A650410AD7A3304354554185EB51389CA65041295C8F624254554152B81EF59EA650418FC2F58841545541B81E857BA0A650419A9999194154554152B81E65A3A650415C8FC265405455411F85EB61A6A65041D7A370BD3F5455410AD7A390A7A65041B81E857B3F545541713D0AD7A9A65041EC51B8DE3E545541A4703D7AABA650411F85EB713E54554152B81EC5ADA65041D7A3706D3D545541D7A3706DAFA65041295C8FB23C545541F6285C3FB1A6504185EB51C83B54554185EB5188B3A65041B81E859B3A54554133333383B4A65041E17A141E3A54554133333393B5A650418FC2F5C839545541666666F6B6A65041CDCCCC6C395455419A999919B8A65041F6285C2F39545541713D0A17BAA65041D7A370FD385455417B14AEC7BCA650413D0AD7B338545541000000C0BEA65041CDCCCC6C385455418FC2F5C8BFA65041D7A3703D38545541A4703D7AC2A65041295C8F8237545541B81E85EBC3A65041F6285C1F3754554114AE4771C6A6504185EB51583654554185EB5108C9A650415C8FC28535545541B81E853BCBA65041EC51B8BE34545541EC51B86ECEA650410000009033545541713D0AB7D1A6504148E17A8432545541B81E85CBD5A6504148E17A743054554148E17A54D6A650419A99994930545541CDCCCC9CD9A65041666666662F5455413D0AD7E3DAA65041A4703D0A2F545541AE47E1FADBA65041EC51B8CE2E545541A4703DAADDA650415C8FC2852E545541713D0A67DFA65041713D0A272E545541B81E853BE1A650410AD7A3B02D545541A4703D5AE2A650418FC2F5582D54554185EB51B8E4A65041666666862C545541A4703D0AE8A65041D7A3708D2B545541295C8F12ECA6504152B81E552A5455419A999979EFA65041AE47E16A29545541AE47E12AF1A65041AE47E1EA28545541D7A3704DF4A65041A4703D9A28545541A4703DCAF6A650415C8FC25528545541295C8F82F8A650415C8FC2952854554152B81E65FAA65041E17A14FE28545541F6285C0FFCA65041EC51B85E29545541AE47E15AFDA65041B81E858B29545541A4703D9AFEA6504114AE47A129545541AE47E1CA01A750417B14AED72954554185EB511804A750413D0AD7F329545541CDCCCC9C06A7504152B81E152A545541333333E307A75041295C8F122A545541D7A3700D0AA750413D0AD7F329545541000000600BA750410AD7A3D029545541D7A3702D0DA7504152B81E9529545541713D0AD70FA7504185EB51282954554152B81EF512A75041F6285CAF2854554114AE47A115A750419A99994928545541CDCCCCBC18A7504152B81E052854554148E17AE419A75041D7A370ED27545541333333231DA75041000000F0275455411F85EB9120A750411F85EB21285455411F85EB7124A75041C3F5284C28545541666666C626A7504185EB516828545541666666E629A75041EC51B8CE28545541B81E850B2DA750415C8FC225295455413D0AD7532FA75041EC51B85E2954554185EB519830A750416666667629545541E17A144E32A750411F85EB31295455410000005034A75041AE47E1EA28545541A4703DBA35A75041F6285CAF285455419A9999B937A75041CDCCCC5C28545541AE47E1FA3AA75041295C8F4228545541000000D03BA750419A999949285455417B14AE473FA750417B14AE9728545541295C8F0241A75041AE47E1AA2854554185EB514844A75041EC51B8CE28545541C3F528FC45A75041D7A370ED285455415C8FC25547A750413D0AD7E328545541666666B648A75041333333D328545541295C8F524AA750411F85EBB128545541666666264DA750410AD7A3502854554148E17A4451A750419A9999C927545541295C8F224FA75041B81E855B275455418FC2F5884CA75041EC51B8DE26545541713D0A0749A75041EC51B82E265455411F85EBC145A7504185EB518825545541CDCCCC8C43A750419A99993925545541713D0A273FA750410AD7A3B0245455413D0AD7933BA750418FC2F53824545541A4703D2A38A750415C8FC2C523545541EC51B8DE35A7504152B81E95235455419A9999F932A750418FC2F56823545541295C8FD230A7504152B81E9523545541C3F528CC2EA750415C8FC2E5235455410AD7A3D02BA7504152B81E4524545541713D0A3727A750415C8FC2C52354554148E17AE424A7504166666686235455418FC2F5B822A750411F85EB4123545541F6285CEF20A7504114AE47D122545541713D0A871EA7504148E17A342254554185EB51D81AA75041713D0A87215455413333334317A75041295C8FE2205455415C8FC2E513A75041A4703D3A20545541A4703D8A10A750413D0AD7731F54554152B81E750EA75041CDCCCC0C1F5455415C8FC2550CA75041295C8FB21E54554148E17AF409A750410AD7A3701E5455415C8FC2C506A75041713D0A471E5455410AD7A38003A75041713D0A271E545541666666D601A7504185EB51381E545541C3F528BCFFA65041E17A144E1E5455413D0AD7D3FEA65041666666661E5455417B14AEB7FDA65041A4703D9A1E545541000000F0FAA65041B81E853B1F5455410AD7A380F9A65041D7A3709D1F5455417B14AE77F7A650417B14AE3720545541D7A370DDF6A650419A99995920545541713D0A87F5A65041C3F5289C205455419A999959F1A650411F85EB6121545541EC51B8AEEEA65041EC51B8DE21545541295C8F42EBA65041F6285C2F22545541D7A3706DEAA6504148E17A54225455411F85EB81E8A65041AE47E1FA22545541A4703D2AE6A6504114AE47A123545541AE47E16AE2A6504148E17AA4245455410AD7A320E1A650415C8FC2D524545541CDCCCCDCDCA65041CDCCCC8C25545541E17A148ED9A65041C3F5280C2654554152B81E85D7A650411F85EB6126545541295C8FD2D6A650410AD7A39026545541E17A142ED6A65041666666C626545541EC51B87ED3A650415C8FC2F52754554152B81E25CFA650418FC2F5E829545541F6285CCFCBA650417B14AE772B545541713D0A07C9A6504185EB51B82C5455411F85EBA1C7A650413D0AD7432D545541E17A14FEC4A65041666666362E5455418FC2F518C2A65041C3F5281C2F545541CDCCCCACBEA65041D7A370FD2F545541713D0AB7BCA6504148E17A6430545541295C8FE2B9A65041F6285C7F30545541E17A143EB6A6504152B81EB530545541000000A0B3A65041C3F528FC305455417B14AEC7B1A65041F6285C4F3154554185EB5178B0A65041713D0AA731545541CDCCCC4CAEA65041AE47E14A3254554114AE4781ADA650410AD7A3A032545541A4703D6AA9A65041000000C034545541CDCCCCDCA6A65041333333033654554133333333A3A65041333333C3375455418FC2F528A0A650411F85EB3139545541713D0A179FA65041000000A0395455419A9999599DA65041B81E852B3A545541A4703D7A9BA65041EC51B8BE3A54554114AE476198A650418FC2F5E83B545541EC51B8DE96A650417B14AEA73C5455418FC2F5B895A65041AE47E15A3D5455411F85EBD193A6504185EB51B83E545541713D0AF791A65041000000404054554152B81EF58FA650410000000042545541EC51B81E8DA650410AD7A3C044545541A4703D2A8AA65041F6285C3F47545541
+</a>
+
+<b>
+01060000000100000001030000000100000037000000E651BDF08CA65041C37776E744545541AC4B376A8AA650417DD157094754554110F34B688AA65041966F50344754554109D650638BA65041C7D0CA0A47545541DD6E18228FA65041F941727E455455411FF49DFA91A650414E99B14C445455416389507093A65041F844D1B3435455417D5ECCF2A4A650412FE95E343C545541143B9199A6A65041EF1C2F7F3B5455418865DCEFA8A650411720C2DE3A545541938A1FEFB2A6504141BB182A385455413C65D7F2BDA65041B33F9A2F35545541DA7CCAA0C4A6504171EE32613354554107BCC304D0A650411925484C30545541DA548BC3D3A650419D99B6492F54554178C355EBD6A65041CE82C76E2E5455417D146FFAD6A65041166CF2282E545541120BDFBFD7A6504135983F582654554152B81E85D7A650411F85EB6126545541295C8FD2D6A650410AD7A39026545541E17A142ED6A65041666666C626545541EC51B87ED3A650415C8FC2F52754554176054629D3A65041B447101C2854554152B81E25CFA650418FC2F5E829545541F6285CCFCBA650417B14AE772B545541713D0A07C9A6504185EB51B82C5455411F85EBA1C7A650413D0AD7432D545541E17A14FEC4A65041666666362E5455418FC2F518C2A65041C3F5281C2F545541CDCCCCACBEA65041D7A370FD2F545541713D0AB7BCA6504148E17A6430545541295C8FE2B9A65041F6285C7F30545541E17A143EB6A6504152B81EB530545541000000A0B3A65041C3F528FC3054554169FC6FECB2A65041814ECA1B315455417B14AEC7B1A65041F6285C4F31545541B39DE2BAB0A650418BF1A2953154554185EB5178B0A65041713D0AA731545541CDCCCC4CAEA65041AE47E14A3254554114AE4781ADA650410AD7A3A032545541A4703D6AA9A65041000000C034545541CDCCCCDCA6A65041333333033654554133333333A3A65041333333C3375455418FC2F528A0A650411F85EB3139545541713D0A179FA65041000000A0395455419A9999599DA65041B81E852B3A545541A4703D7A9BA65041EC51B8BE3A54554114AE476198A650418FC2F5E83B545541EC51B8DE96A650417B14AEA73C5455418FC2F5B895A65041AE47E15A3D5455411F85EBD193A6504185EB51B83E545541713D0AF791A65041000000404054554152B81EF58FA650410000000042545541EC51B81E8DA650410AD7A3C044545541E651BDF08CA65041C37776E744545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 2916194
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541D7A370CD98AE5041D7A3703DB44F554114AE47119BAE50418FC2F528B04F5541E17A142E9CAE5041EC51B84EAE4F55413D0AD7139EAE504148E17AC4AA4F5541713D0AE7A7AE5041B81E851BB04F55410AD7A3F0B4AE50419A9999D9B74F5541AE47E12AB4AE50411F85EBD1B84F5541C3F528ACB2AE50419A999959BA4F5541713D0A57AAAE5041B81E85FBC24F5541A4703D2AAEAE504152B81EE5C34F554100000020B9AE5041D7A3705DB94F5541A4703DBABEAE504152B81EA5B24F5541CDCCCC1CC2AE5041EC51B81EAD4F5541EC51B8BEC3AE504148E17A74AB4F5541CDCCCC7CCAAE504148E17AD4A24F554152B81E95D1AE5041B81E858BA44F5541E17A143ED4AE5041AE47E1CAA24F554100000040DCAE504114AE47D1A44F554166666636E2AE5041713D0A57A64F5541295C8F02E4AE50419A9999B9A64F5541B81E85CBE2AE5041B81E855B9F4F5541F6285C0FE1AE504114AE47A1934F554148E17A24E3AE504114AE4781924F55418FC2F558E5AE50411F85EB51914F554185EB5128EBAE5041666666868F4F554152B81E05F1AE5041B81E85CB8F4F5541666666D6F7AE5041AE47E12A8F4F5541295C8FD2F6AE5041C3F5282C874F554185EB5178EFAE5041333333F3824F5541295C8F22F3AE50415C8FC205794F554148E17A44F9AE5041AE47E1FA794F554133333323FAAE5041E17A143E7A4F55413D0AD7D3FBAE50410AD7A3C07A4F5541713D0A77FFAE50419A9999D97B4F554152B81E2501AF5041A4703D5A7C4F55418FC2F5A803AF5041CDCCCC1C7D4F5541F6285C8F06AF5041C3F528FC7D4F5541000000C006AF5041000000807A4F5541000000B006AF5041B81E852B7A4F55413333333306AF5041CDCCCC1C794F55418FC2F5C805AF50417B14AE37784F55411F85EB5105AF50410AD7A310774F55415C8FC26504AF5041C3F528AC744F5541C3F528AC03AF50419A9999E9724F5541000000000BAF5041A4703DAA6E4F5541EC51B8CE08AF50413D0AD7536B4F55419A99996901AF5041D7A370FD6C4F554166666666FCAE5041666666066F4F5541333333E3F7AE5041F6285C5F714F554166666686F5AE5041666666F6734F5541333333C3F1AE50415C8FC2B5744F5541C3F528BCEDAE5041E17A148E734F5541AE47E1DAE6AE504185EB5118714F55415C8FC275E6AE5041CDCCCC5C6E4F554152B81E05E6AE5041C3F5285C6B4F55415C8FC265E5AE50411F85EB01674F5541CDCCCCCCECAE50410AD7A390664F5541F6285CFFFAAE5041A4703DCA634F554152B81E0505AF5041EC51B8BE604F5541000000D006AF504152B81E75604F5541F6285C7F02AF5041AE47E11A554F5541B81E857BF2AE5041A4703D6A5B4F5541295C8F12DCAE50415C8FC295644F5541EC51B84EDBAE5041D7A3704D634F5541295C8FA2D7AE50419A9999D95C4F5541AE47E1EAD4AE5041EC51B82E584F5541E17A140ED2AE504152B81E05534F5541B81E85BBD1AE5041000000E0524F55410AD7A3C0CDAE504148E17A94554F5541EC51B8CEC4AE504148E17A24514F5541295C8F82BDAE50410AD7A3204C4F554148E17A94BEAE5041F6285CBF4A4F55419A9999A9BDAE50413D0AD7434A4F554185EB5148AEAE5041D7A3702D424F554114AE47D1A8AE50417B14AE273F4F5541AE47E15A9CAE504148E17A34384F5541E17A140E9AAE5041333333E3274F55418FC2F5C892AE5041B81E85AB1E4F5541AE47E1BA96AE504114AE47511B4F5541AE47E1FA9DAE50417B14AE27154F554148E17A6496AE50415C8FC2650C4F554114AE479190AE5041C3F528AC054F554152B81ED58BAE5041A4703DCA124F5541F6285C7F83AE5041D7A3701D1E4F55411F85EB517DAE5041295C8FA2274F5541EC51B81E7FAE5041295C8FB2284F5541B81E853B89AE50415C8FC235304F554114AE476188AE50410AD7A340324F5541713D0AB787AE5041713D0AD7334F554114AE47E184AE50411F85EB013B4F55415C8FC27584AE50417B14AE473C4F5541CDCCCCFC83AE5041EC51B86E3D4F55410000004083AE5041333333433F4F554185EB517882AE50415C8FC255414F554148E17A647FAE504133333383494F5541EC51B81E7FAE5041C3F5283C4A4F5541F6285C5F7EAE50417B14AE374C4F5541333333137EAE5041EC51B8EE4C4F55410AD7A3F07DAE5041A4703D2A4D4F5541A4703D4A7DAE5041B81E854B4E4F5541C3F5286C7CAE5041D7A370CD4F4F5541AE47E1AA7AAE50419A9999D9524F5541B81E85FB79AE5041AE47E10A544F55413333339377AE5041A4703D3A584F5541EC51B80E77AE50410AD7A320594F5541E17A145E76AE50413D0AD7535A4F55413333339375AE50413D0AD7B35B4F55410000006074AE5041AE47E1CA5D4F5541713D0AB773AE5041000000F05E4F55413333334372AE504166666676614F5541CDCCCC5C71AE50419A999909634F55419A9999E970AE5041F6285CCF634F554114AE47D16EAE50413D0AD773674F55411F85EB616DAE5041295C8FF2694F5541A4703D1A6DAE5041C3F5281C6B4F554148E17A646CAE50418FC2F5086E4F5541A4703D6A6AAE50411F85EB31764F554148E17A2464AE504148E17A84754F554152B81E3563AE5041713D0A87794F55418FC2F59862AE5041000000A07B4F5541D7A3704D62AE50417B14AEF77C4F5541666666A661AE504185EB51587F4F5541EC51B83E61AE50415C8FC265814F554148E17A0461AE5041A4703DAA824F55417B14AE175FAE504166666646824F55415C8FC20557AE5041333333C3804F5541E17A140E50AE5041B81E859B7E4F554185EB51F847AE50418FC2F5C8794F55418FC2F52847AE504148E17A047B4F55410000005045AE50411F85EB417E4F5541D7A3706D44AE5041666666E6804F55413333334344AE5041B81E85AB834F5541D7A3706D45AE5041000000C0884F5541AE47E1DA45AE5041A4703D3A8C4F5541AE47E16A46AE5041CDCCCCDC8F4F5541000000D045AE5041A4703D5A924F55413333331344AE5041E17A145E944F55417B14AE0742AE5041295C8FA2954F55413333330341AE5041C3F528FC954F55419A99998947AE5041F6285C6F984F55418FC2F5584AAE50415C8FC275964F55417B14AE074CAE50419A999979954F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007FABC6D792AE50411FDEED9E1E4F554170BB00C69DAE50414925A054154F554142A49CD997AE504127DF6D140E4F5541A5BD989690AE5041899C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E34BD4B78AAE5041F65FDF4D144F5541D42CC19A86AE50417B03B7E4194F554107E0DBDF82AE50416D503E131F4F554150E3EA887EAE50410BFD49C3254F554157AEDA5F8FAE5041E9B75DBD1F4F55411792B3D190AE5041CCBAF2F8214F554140D3C0A094AE5041F068128A284F5541EBBB6B5699AE5041298757FA264F554198A116DC92AE504100C6C5C31E4F55417FABC6D792AE50411FDEED9E1E4F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 5286268
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541D7A370CD98AE5041D7A3703DB44F554114AE47119BAE50418FC2F528B04F5541E17A142E9CAE5041EC51B84EAE4F55413D0AD7139EAE504148E17AC4AA4F5541713D0AE7A7AE5041B81E851BB04F55410AD7A3F0B4AE50419A9999D9B74F5541AE47E12AB4AE50411F85EBD1B84F5541C3F528ACB2AE50419A999959BA4F5541713D0A57AAAE5041B81E85FBC24F5541A4703D2AAEAE504152B81EE5C34F554100000020B9AE5041D7A3705DB94F5541A4703DBABEAE504152B81EA5B24F5541CDCCCC1CC2AE5041EC51B81EAD4F5541EC51B8BEC3AE504148E17A74AB4F5541CDCCCC7CCAAE504148E17AD4A24F554152B81E95D1AE5041B81E858BA44F5541E17A143ED4AE5041AE47E1CAA24F554100000040DCAE504114AE47D1A44F554166666636E2AE5041713D0A57A64F5541295C8F02E4AE50419A9999B9A64F5541B81E85CBE2AE5041B81E855B9F4F5541F6285C0FE1AE504114AE47A1934F554148E17A24E3AE504114AE4781924F55418FC2F558E5AE50411F85EB51914F554185EB5128EBAE5041666666868F4F554152B81E05F1AE5041B81E85CB8F4F5541666666D6F7AE5041AE47E12A8F4F5541295C8FD2F6AE5041C3F5282C874F554185EB5178EFAE5041333333F3824F5541295C8F22F3AE50415C8FC205794F554148E17A44F9AE5041AE47E1FA794F554133333323FAAE5041E17A143E7A4F55413D0AD7D3FBAE50410AD7A3C07A4F5541713D0A77FFAE50419A9999D97B4F554152B81E2501AF5041A4703D5A7C4F55418FC2F5A803AF5041CDCCCC1C7D4F5541F6285C8F06AF5041C3F528FC7D4F5541000000C006AF5041000000807A4F5541000000B006AF5041B81E852B7A4F55413333333306AF5041CDCCCC1C794F55418FC2F5C805AF50417B14AE37784F55411F85EB5105AF50410AD7A310774F55415C8FC26504AF5041C3F528AC744F5541C3F528AC03AF50419A9999E9724F5541000000000BAF5041A4703DAA6E4F5541EC51B8CE08AF50413D0AD7536B4F55419A99996901AF5041D7A370FD6C4F554166666666FCAE5041666666066F4F5541333333E3F7AE5041F6285C5F714F554166666686F5AE5041666666F6734F5541333333C3F1AE50415C8FC2B5744F5541C3F528BCEDAE5041E17A148E734F5541AE47E1DAE6AE504185EB5118714F55415C8FC275E6AE5041CDCCCC5C6E4F554152B81E05E6AE5041C3F5285C6B4F55415C8FC265E5AE50411F85EB01674F5541CDCCCCCCECAE50410AD7A390664F5541F6285CFFFAAE5041A4703DCA634F554152B81E0505AF5041EC51B8BE604F5541000000D006AF504152B81E75604F5541F6285C7F02AF5041AE47E11A554F5541B81E857BF2AE5041A4703D6A5B4F5541295C8F12DCAE50415C8FC295644F5541EC51B84EDBAE5041D7A3704D634F5541295C8FA2D7AE50419A9999D95C4F5541AE47E1EAD4AE5041EC51B82E584F5541E17A140ED2AE504152B81E05534F5541B81E85BBD1AE5041000000E0524F55410AD7A3C0CDAE504148E17A94554F5541EC51B8CEC4AE504148E17A24514F5541295C8F82BDAE50410AD7A3204C4F554148E17A94BEAE5041F6285CBF4A4F55419A9999A9BDAE50413D0AD7434A4F554185EB5148AEAE5041D7A3702D424F554114AE47D1A8AE50417B14AE273F4F5541AE47E15A9CAE504148E17A34384F5541E17A140E9AAE5041333333E3274F55418FC2F5C892AE5041B81E85AB1E4F5541AE47E1BA96AE504114AE47511B4F5541AE47E1FA9DAE50417B14AE27154F554148E17A6496AE50415C8FC2650C4F554114AE479190AE5041C3F528AC054F554152B81ED58BAE5041A4703DCA124F5541F6285C7F83AE5041D7A3701D1E4F55411F85EB517DAE5041295C8FA2274F5541EC51B81E7FAE5041295C8FB2284F5541B81E853B89AE50415C8FC235304F554114AE476188AE50410AD7A340324F5541713D0AB787AE5041713D0AD7334F554114AE47E184AE50411F85EB013B4F55415C8FC27584AE50417B14AE473C4F5541CDCCCCFC83AE5041EC51B86E3D4F55410000004083AE5041333333433F4F554185EB517882AE50415C8FC255414F554148E17A647FAE504133333383494F5541EC51B81E7FAE5041C3F5283C4A4F5541F6285C5F7EAE50417B14AE374C4F5541333333137EAE5041EC51B8EE4C4F55410AD7A3F07DAE5041A4703D2A4D4F5541A4703D4A7DAE5041B81E854B4E4F5541C3F5286C7CAE5041D7A370CD4F4F5541AE47E1AA7AAE50419A9999D9524F5541B81E85FB79AE5041AE47E10A544F55413333339377AE5041A4703D3A584F5541EC51B80E77AE50410AD7A320594F5541E17A145E76AE50413D0AD7535A4F55413333339375AE50413D0AD7B35B4F55410000006074AE5041AE47E1CA5D4F5541713D0AB773AE5041000000F05E4F55413333334372AE504166666676614F5541CDCCCC5C71AE50419A999909634F55419A9999E970AE5041F6285CCF634F554114AE47D16EAE50413D0AD773674F55411F85EB616DAE5041295C8FF2694F5541A4703D1A6DAE5041C3F5281C6B4F554148E17A646CAE50418FC2F5086E4F5541A4703D6A6AAE50411F85EB31764F554148E17A2464AE504148E17A84754F554152B81E3563AE5041713D0A87794F55418FC2F59862AE5041000000A07B4F5541D7A3704D62AE50417B14AEF77C4F5541666666A661AE504185EB51587F4F5541EC51B83E61AE50415C8FC265814F554148E17A0461AE5041A4703DAA824F55417B14AE175FAE504166666646824F55415C8FC20557AE5041333333C3804F5541E17A140E50AE5041B81E859B7E4F554185EB51F847AE50418FC2F5C8794F55418FC2F52847AE504148E17A047B4F55410000005045AE50411F85EB417E4F5541D7A3706D44AE5041666666E6804F55413333334344AE5041B81E85AB834F5541D7A3706D45AE5041000000C0884F5541AE47E1DA45AE5041A4703D3A8C4F5541AE47E16A46AE5041CDCCCCDC8F4F5541000000D045AE5041A4703D5A924F55413333331344AE5041E17A145E944F55417B14AE0742AE5041295C8FA2954F55413333330341AE5041C3F528FC954F55419A99998947AE5041F6285C6F984F55418FC2F5584AAE50415C8FC275964F55417B14AE074CAE50419A999979954F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007FABC6D792AE50411FDEED9E1E4F554170BB00C69DAE50414925A054154F554142A49CD997AE504127DF6D140E4F5541A5BD989690AE5041899C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E34BD4B78AAE5041F65FDF4D144F5541D42CC19A86AE50417B03B7E4194F554107E0DBDF82AE50416D503E131F4F554150E3EA887EAE50410BFD49C3254F554157AEDA5F8FAE5041E9B75DBD1F4F55411792B3D190AE5041CCBAF2F8214F554140D3C0A094AE5041F068128A284F5541EBBB6B5699AE5041298757FA264F554198A116DC92AE504100C6C5C31E4F55417FABC6D792AE50411FDEED9E1E4F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608044 - 1637677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000014000000F6285C1FA3A35041A4703D2A9D5755417B14AEB7A0A35041B81E854B9D575541AE47E16A9EA350410AD7A3809D57554185EB51F89CA35041666666D69D575541AE47E16A9BA35041000000909E575541F6285C7F95A35041C3F5284C975755419A99992992A3504114AE47B1985755417B14AEE78EA3504114AE47B19B575541AE47E15A8FA3504114AE47819C5755419A99998991A3504152B81E559B575541295C8F8298A3504185EB5178A55755411F85EB61A5A350410AD7A3E0BD575541333333A3B3A35041713D0A37D657554148E17A04B7A350419A9999E9D3575541E17A148EBDA350415C8FC275CE5755410AD7A310BEA350415C8FC215CE575541713D0AC7B3A35041C3F528DCBA5755413D0AD763AAA3504166666616A85755419A9999B9A4A350411F85EB219C575541F6285C1FA3A35041A4703D2A9D5755410700000066666606AFA350411F85EB41BD5755417B14AEE7B1A3504166666626BD575541295C8F92B4A3504114AE4731C45755418FC2F5F8B2A3504133333383C45755413D0AD743B1A350411F85EBA1C1575541E17A14EEABA350411F85EB71C357554166666606AFA350411F85EB41BD575541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DC6C7484C4A3504199680F0BC95755410F439B98C2A3504161FFF824C557554123D585CEC2A35041E7F11C96C45755418A731183BFA3504126155F27BE57554137CE7726BCA3504165C0C109B85755415CADE090B9A35041E09F91D2B35755419A999929B9A35041E17A14DEB3575541C96BA190B7A350419440B907B1575541AA93F929B3A35041CFBBB536A9575541A70D9ED7B0A350410E9F1717A5575541B179EADEAFA35041E8DB615DA35755410B40259FADA350414BCBC65E9F5755417F4465BAA7A35041513D19AA98575541377217BAA4A3504115B7DDF99B5755416707C3A5A8A35041630EFE14A45755419FBEA7B3ACA350419BF960F8AC575541182D3640AEA35041104AE1CEAF57554127BEDE80AFA35041BA8F1C50B2575541DF853190B0A35041C39FAF6EB4575541F15B115BB4A35041C653CAF0BB5755411F58E929B8A350418412B463C35755413435506ABBA35041F130A970C9575541DF5FA8F9BDA35041C78F25D7CD575541DC6C7484C4A3504199680F0BC9575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608044 - 5286050
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000014000000F6285C1FA3A35041A4703D2A9D5755417B14AEB7A0A35041B81E854B9D575541AE47E16A9EA350410AD7A3809D57554185EB51F89CA35041666666D69D575541AE47E16A9BA35041000000909E575541F6285C7F95A35041C3F5284C975755419A99992992A3504114AE47B1985755417B14AEE78EA3504114AE47B19B575541AE47E15A8FA3504114AE47819C5755419A99998991A3504152B81E559B575541295C8F8298A3504185EB5178A55755411F85EB61A5A350410AD7A3E0BD575541333333A3B3A35041713D0A37D657554148E17A04B7A350419A9999E9D3575541E17A148EBDA350415C8FC275CE5755410AD7A310BEA350415C8FC215CE575541713D0AC7B3A35041C3F528DCBA5755413D0AD763AAA3504166666616A85755419A9999B9A4A350411F85EB219C575541F6285C1FA3A35041A4703D2A9D5755410700000066666606AFA350411F85EB41BD5755417B14AEE7B1A3504166666626BD575541295C8F92B4A3504114AE4731C45755418FC2F5F8B2A3504133333383C45755413D0AD743B1A350411F85EBA1C1575541E17A14EEABA350411F85EB71C357554166666606AFA350411F85EB41BD575541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DC6C7484C4A3504199680F0BC95755410F439B98C2A3504161FFF824C557554123D585CEC2A35041E7F11C96C45755418A731183BFA3504126155F27BE57554137CE7726BCA3504165C0C109B85755415CADE090B9A35041E09F91D2B35755419A999929B9A35041E17A14DEB3575541C96BA190B7A350419440B907B1575541AA93F929B3A35041CFBBB536A9575541A70D9ED7B0A350410E9F1717A5575541B179EADEAFA35041E8DB615DA35755410B40259FADA350414BCBC65E9F5755417F4465BAA7A35041513D19AA98575541377217BAA4A3504115B7DDF99B5755416707C3A5A8A35041630EFE14A45755419FBEA7B3ACA350419BF960F8AC575541182D3640AEA35041104AE1CEAF57554127BEDE80AFA35041BA8F1C50B2575541DF853190B0A35041C39FAF6EB4575541F15B115BB4A35041C653CAF0BB5755411F58E929B8A350418412B463C35755413435506ABBA35041F130A970C9575541DF5FA8F9BDA35041C78F25D7CD575541DC6C7484C4A3504199680F0BC9575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 201118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000007242AD7CFA25041C6A764FCEF5655415DDF8981CFA250411C63C4A6EF56554156A864FECDA250416FFBB725EF5655413CB66BABCCA250415CFA40C6EE565541281670E5CBA25041BD4514EDEE56554189333373CAA2504127B81E65F95655418FC2F5F8C9A25041E5999919FC565541A2F528ECC7A25041F651B84E025755417DE17A74C5A250419947E13A095755417DE17AB4C3A25041AE47E11A0E5755415BC6327EC4A25041EAAF419A0E575541A7DA98FBC5A25041809C82980E57554111F26157C9A250417EB879560E5755415B3D0A07CBA25041B67A148E085755418CA3701DCDA25041831E85CB005755418051B83ECFA2504198F528ECF7565541345C8F42D0A250414514AE67F3565541EEC2D096D0A25041D68A3F23F15655417B14AE47D0A25041EC51B80EF156554107242AD7CFA25041C6A764FCEF565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -46  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000BF6B7BE49CA350415D6447B15357554133B69D6399A350417326B68155575541A884D76299A350415AC81C8255575541D351FE6199A35041B1418D8255575541782A313298A3504163E3EA22565755411F4BB45A98A350415645749C56575541BEA93AEA9BA35041F63039565D575541D584A9AA9CA35041D056D5C25E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413BEC1BD1A7A3504114F1A92F635755419B08D7D3A6A350412E65CDAC615755410B9E5BDFA4A35041B823B78E5E575541E9E0709DA3A3504114D8F5585C5755417628D673A0A350417CC73C6A58575541BF6B7BE49CA350415D6447B153575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419403
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000007242AD7CFA25041C6A764FCEF5655415DDF8981CFA250411C63C4A6EF56554156A864FECDA250416FFBB725EF5655413CB66BABCCA250415CFA40C6EE565541281670E5CBA25041BD4514EDEE56554189333373CAA2504127B81E65F95655418FC2F5F8C9A25041E5999919FC565541A2F528ECC7A25041F651B84E025755417DE17A74C5A250419947E13A095755417DE17AB4C3A25041AE47E11A0E5755415BC6327EC4A25041EAAF419A0E575541A7DA98FBC5A25041809C82980E57554111F26157C9A250417EB879560E5755415B3D0A07CBA25041B67A148E085755418CA3701DCDA25041831E85CB005755418051B83ECFA2504198F528ECF7565541345C8F42D0A250414514AE67F3565541EEC2D096D0A25041D68A3F23F15655417B14AE47D0A25041EC51B80EF156554107242AD7CFA25041C6A764FCEF565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608372 - 201065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E18A57A45041295C8F72825155415C8FC21557A4504148E17A7486515541C3F5284C58A4504185EB51288651554152B81E555BA4504114AE47216C5155418FC2F5F859A450419A9999796C515541AE47E18A57A45041295C8F7282515541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000098F2E08A57A450417945927282515541D3E8324257A450412B0837EF84515541DC8C0C6E58A45041E4F1B1058551554152B81E555BA4504117AE47216C515541B0C2F5F859A45041BA9999796C515541C447E18A57A45041295C8F728251554198F2E08A57A450417945927282515541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608372 - 419287
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E18A57A45041295C8F72825155415C8FC21557A4504148E17A7486515541C3F5284C58A4504185EB51288651554152B81E555BA4504114AE47216C5155418FC2F5F859A450419A9999796C515541AE47E18A57A45041295C8F7282515541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000098F2E08A57A450417945927282515541D3E8324257A450412B0837EF84515541DC8C0C6E58A45041E4F1B1058551554152B81E555BA4504117AE47216C515541B0C2F5F859A45041BA9999796C515541C447E18A57A45041295C8F728251554198F2E08A57A450417945927282515541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200533 - 1095564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -158  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47F178195141333333E3C33B54415C8FC2155619514114AE47D1C93B544148E17A9430195141295C8F32D03B5441EC694947341951414EC008CDDA3B5441449C567F78195141188CFCD6CE3B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200533 - 3217832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -158  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47F178195141333333E3C33B54415C8FC2155619514114AE47D1C93B544148E17A9430195141295C8F32D03B5441EC694947341951414EC008CDDA3B5441449C567F78195141188CFCD6CE3B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636082 - 181114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000002000000460000008FC2F5B8DAFD5041F6285C1FDDBE5441AE47E14ADCFD50411F85EB71DFBE5441D7A370ADE1FD5041666666D6D7BE54410AD7A3D0E9FD504100000040D1BE5441EC51B84EF1FD5041EC51B84ECCBE54416666666602FE5041C3F5283CD9BE5441AE47E19A05FE50413D0AD753E0BE5441295C8FF210FE50410AD7A300E0BE5441666666361AFE504100000040DEBE5441295C8F621AFE5041E17A143EDDBE54415C8FC2A50EFE5041713D0AD7D6BE5441E17A145E08FE5041C3F5282CD1BE5441D7A3700D04FE5041E17A141ECFBE54410AD7A31002FE5041E17A149ECDBE5441295C8F3201FE5041713D0AA7CCBE544114AE47A100FE50415C8FC205CCBE54416666663600FE50417B14AEF7C8BE54413D0AD73302FE504166666626BABE544114AE473102FE50418FC2F528B8BE5441F6285C2F02FE5041A4703D4AB7BE54413333338301FE50418FC2F5B8B4BE54411F85EBD1FFFD50413D0AD713B0BE5441EC51B85EFEFD5041EC51B8CEADBE5441EC51B89EFBFD5041B81E85BBAABE54419A999919F9FD5041EC51B82EAFBE5441333333E3FAFD50410AD7A380B5BE544166666616FAFD5041713D0A97BBBE54415C8FC205F8FD50418FC2F528C0BE54415C8FC2C5F4FD50413D0AD773C3BE54411F85EB01F0FD5041D7A370ADBBBE54419A999909EFFD504185EB5118BABE5441666666B6E8FD5041EC51B80EB2BE5441000000D0E2FD50418FC2F5A8ACBE544185EB5118DDFD5041713D0AE7AABE544152B81EE5D7FD504185EB5108A6BE54411F85EBA1D6FD504185EB5138A9BE54415C8FC295D8FD504185EB51E8ADBE54417B14AE57DAFD5041E17A142EB3BE54415C8FC245DDFD50413D0AD703BABE54413D0AD713DDFD504185EB5118BFBE5441C3F5280CD6FD504185EB5178C8BE5441000000C0D1FD5041E17A14BECDBE544100000010CDFD50411F85EBD1D2BE5441E17A149EC6FD5041E17A14AED8BE54417B14AEC7BFFD5041E17A14EEDEBE544100000070BDFD5041E17A145EDDBE544166666696BCFD50410AD7A300D8BE5441A4703D4AB3FD504100000000DBBE5441E17A14BEB2FD5041E17A143EDEBE5441F6285CDFB8FD5041AE47E15ADFBE544148E17AF4B7FD5041333333A3E4BE544148E17A04B7FD50411F85EB11EABE54411F85EB11B6FD50413D0AD773EFBE544152B81ED5B2FD5041295C8F32F6BE544185EB51E8ADFD5041E17A148EF4BE5441AE47E1AAACFD50418FC2F508F8BE544152B81EE5AAFD504148E17AD4FBBE54415C8FC2D5A8FD5041C3F5289CFFBE5441D7A3708DA5FD5041CDCCCC9C04BF54413D0AD71397FD5041D7A370BD18BF54410AD7A3C094FD5041D7A370FD1BBF54415C8FC25596FD5041CDCCCCEC1CBF5441CDCCCC2CB3FD504148E17AC408BF5441C3F528CCBCFD5041EC51B8FE01BF5441F6285C3FCBFD5041F6285C8FF5BE5441E17A142EC8FD5041C3F5287CF1BE5441A4703DCAC7FD504185EB51F8EDBE5441E17A144ECBFD5041C3F528ACE9BE54411F85EB61D0FD5041A4703DEAE7BE54418FC2F5B8DAFD5041F6285C1FDDBE54411000000000000000D8FD5041A4703DFADCBE5441A4703D6AD7FD5041E17A14AED8BE54411F85EBC1D9FD5041E17A14FED3BE54411F85EB71DEFD5041A4703D7AD0BE5441A4703D5AE2FD504185EB5198CBBE5441E17A14DEE5FD5041000000B0C7BE54411F85EB61E9FD5041E17A14CEC2BE54413D0AD7B3ECFD5041000000C0BCBE54415C8FC205F0FD5041C3F5287CBFBE54411F85EB31F1FD50411F85EBC1C4BE54413D0AD763F1FD504166666646C8BE5441E17A141EECFD504166666666CBBE544100000010E6FD5041E17A14DED0BE5441C3F5286CDFFD504185EB5188D6BE54418FC2F5B8DAFD5041F6285C1FDDBE544100000000D8FD5041A4703DFADCBE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000846B5CFEEEFD50419BBD090ABABE54415F284AFBEEFD5041D9982206BABE5441DC1AC5FAEEFD504127857905BABE544176FF35F7EEFD5041E3BAF300BABE54414CD886F6EEFD50417A271500BABE544168B922F6EEFD5041FCEC95FFB9BE5441EA10AEF3EEFD5041CA0E77FCB9BE5441A99BF4E7EEFD5041B8F390EDB9BE54413F078EBAEEFD5041228CDFB3B9BE54419C478F89EEFD504150D69C75B9BE5441E7D1A280EEFD50418CDB456AB9BE5441BC4BD87EEEFD50410C30FF67B9BE5441EB1CE2D1EDFD5041A2A4348CB8BE544131BB029FEDFD5041F62A8F4BB8BE544170762D29EDFD50417F9FD2B5B7BE54415736BBA4ECFD5041CA38840DB7BE5441A76CA0E9E9FD504191EA2095B3BE5441666666B6E8FD5041EC51B80EB2BE5441000000D0E2FD50418FC2F5A8ACBE5441F4015A2DE1FD50415D8624FBABBE544150D42503DFFD50413C5F1C8AAEBE5441A1A6F1D8DCFD50413333338EADBE5441D325CC41DCFD504186D91568AABE5441797291F5D5FD504153A5B584A3BE5441AAD2DAD4DDFD5041AFC2FBC5B8BE54410ED18FA6DCFD5041C772A0B5BCBE544136506A0FDCFD5041AF778140C0BE5441DC51B53DDDFD5041F17A179DC2BE5441B2493E56D7FD5041D97FF827C6BE54418ACA63EDD7FD504122DB607CCABE5441671ABFFDD3FD504133333374CCBE5441FCC33734D3FD5041961257BCD3BE5441D48FD750CCFD5041EA6DBF10D8BE544115DEE732C7FD5041F9F17A04DBBE5441A32F8E71C4FD5041BFB0C294E9BE5441043B9BB5CCFD50415CD19E4CE2BE5441FE974E38D2FD5041F17A1783E1BE5441A2C58262D4FD5041977C62B1E2BE54414F1FA088D7FD5041D9CA7293DDBE5441797291F5D5FD5041349D3E69DBBE5441E4C818BFD6FD50417E173847D7BE544159000FFFDFFD50416C0AE0D4CDBE54419B03A55BE2FD5041545A3BE5C9BE5441CB63EE3AEAFD5041C1CF5338C2BE5441316C0170EAFD5041CFBFDB69BFBE54413D0AD7B3ECFD5041000000C0BCBE5441846B5CFEEEFD50419BBD090ABABE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636082 - 391506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000002000000460000008FC2F5B8DAFD5041F6285C1FDDBE5441AE47E14ADCFD50411F85EB71DFBE5441D7A370ADE1FD5041666666D6D7BE54410AD7A3D0E9FD504100000040D1BE5441EC51B84EF1FD5041EC51B84ECCBE54416666666602FE5041C3F5283CD9BE5441AE47E19A05FE50413D0AD753E0BE5441295C8FF210FE50410AD7A300E0BE5441666666361AFE504100000040DEBE5441295C8F621AFE5041E17A143EDDBE54415C8FC2A50EFE5041713D0AD7D6BE5441E17A145E08FE5041C3F5282CD1BE5441D7A3700D04FE5041E17A141ECFBE54410AD7A31002FE5041E17A149ECDBE5441295C8F3201FE5041713D0AA7CCBE544114AE47A100FE50415C8FC205CCBE54416666663600FE50417B14AEF7C8BE54413D0AD73302FE504166666626BABE544114AE473102FE50418FC2F528B8BE5441F6285C2F02FE5041A4703D4AB7BE54413333338301FE50418FC2F5B8B4BE54411F85EBD1FFFD50413D0AD713B0BE5441EC51B85EFEFD5041EC51B8CEADBE5441EC51B89EFBFD5041B81E85BBAABE54419A999919F9FD5041EC51B82EAFBE5441333333E3FAFD50410AD7A380B5BE544166666616FAFD5041713D0A97BBBE54415C8FC205F8FD50418FC2F528C0BE54415C8FC2C5F4FD50413D0AD773C3BE54411F85EB01F0FD5041D7A370ADBBBE54419A999909EFFD504185EB5118BABE5441666666B6E8FD5041EC51B80EB2BE5441000000D0E2FD50418FC2F5A8ACBE544185EB5118DDFD5041713D0AE7AABE544152B81EE5D7FD504185EB5108A6BE54411F85EBA1D6FD504185EB5138A9BE54415C8FC295D8FD504185EB51E8ADBE54417B14AE57DAFD5041E17A142EB3BE54415C8FC245DDFD50413D0AD703BABE54413D0AD713DDFD504185EB5118BFBE5441C3F5280CD6FD504185EB5178C8BE5441000000C0D1FD5041E17A14BECDBE544100000010CDFD50411F85EBD1D2BE5441E17A149EC6FD5041E17A14AED8BE54417B14AEC7BFFD5041E17A14EEDEBE544100000070BDFD5041E17A145EDDBE544166666696BCFD50410AD7A300D8BE5441A4703D4AB3FD504100000000DBBE5441E17A14BEB2FD5041E17A143EDEBE5441F6285CDFB8FD5041AE47E15ADFBE544148E17AF4B7FD5041333333A3E4BE544148E17A04B7FD50411F85EB11EABE54411F85EB11B6FD50413D0AD773EFBE544152B81ED5B2FD5041295C8F32F6BE544185EB51E8ADFD5041E17A148EF4BE5441AE47E1AAACFD50418FC2F508F8BE544152B81EE5AAFD504148E17AD4FBBE54415C8FC2D5A8FD5041C3F5289CFFBE5441D7A3708DA5FD5041CDCCCC9C04BF54413D0AD71397FD5041D7A370BD18BF54410AD7A3C094FD5041D7A370FD1BBF54415C8FC25596FD5041CDCCCCEC1CBF5441CDCCCC2CB3FD504148E17AC408BF5441C3F528CCBCFD5041EC51B8FE01BF5441F6285C3FCBFD5041F6285C8FF5BE5441E17A142EC8FD5041C3F5287CF1BE5441A4703DCAC7FD504185EB51F8EDBE5441E17A144ECBFD5041C3F528ACE9BE54411F85EB61D0FD5041A4703DEAE7BE54418FC2F5B8DAFD5041F6285C1FDDBE54411000000000000000D8FD5041A4703DFADCBE5441A4703D6AD7FD5041E17A14AED8BE54411F85EBC1D9FD5041E17A14FED3BE54411F85EB71DEFD5041A4703D7AD0BE5441A4703D5AE2FD504185EB5198CBBE5441E17A14DEE5FD5041000000B0C7BE54411F85EB61E9FD5041E17A14CEC2BE54413D0AD7B3ECFD5041000000C0BCBE54415C8FC205F0FD5041C3F5287CBFBE54411F85EB31F1FD50411F85EBC1C4BE54413D0AD763F1FD504166666646C8BE5441E17A141EECFD504166666666CBBE544100000010E6FD5041E17A14DED0BE5441C3F5286CDFFD504185EB5188D6BE54418FC2F5B8DAFD5041F6285C1FDDBE544100000000D8FD5041A4703DFADCBE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000846B5CFEEEFD50419BBD090ABABE54415F284AFBEEFD5041D9982206BABE5441DC1AC5FAEEFD504127857905BABE544176FF35F7EEFD5041E3BAF300BABE54414CD886F6EEFD50417A271500BABE544168B922F6EEFD5041FCEC95FFB9BE5441EA10AEF3EEFD5041CA0E77FCB9BE5441A99BF4E7EEFD5041B8F390EDB9BE54413F078EBAEEFD5041228CDFB3B9BE54419C478F89EEFD504150D69C75B9BE5441E7D1A280EEFD50418CDB456AB9BE5441BC4BD87EEEFD50410C30FF67B9BE5441EB1CE2D1EDFD5041A2A4348CB8BE544131BB029FEDFD5041F62A8F4BB8BE544170762D29EDFD50417F9FD2B5B7BE54415736BBA4ECFD5041CA38840DB7BE5441A76CA0E9E9FD504191EA2095B3BE5441666666B6E8FD5041EC51B80EB2BE5441000000D0E2FD50418FC2F5A8ACBE5441F4015A2DE1FD50415D8624FBABBE544150D42503DFFD50413C5F1C8AAEBE5441A1A6F1D8DCFD50413333338EADBE5441D325CC41DCFD504186D91568AABE5441797291F5D5FD504153A5B584A3BE5441AAD2DAD4DDFD5041AFC2FBC5B8BE54410ED18FA6DCFD5041C772A0B5BCBE544136506A0FDCFD5041AF778140C0BE5441DC51B53DDDFD5041F17A179DC2BE5441B2493E56D7FD5041D97FF827C6BE54418ACA63EDD7FD504122DB607CCABE5441671ABFFDD3FD504133333374CCBE5441FCC33734D3FD5041961257BCD3BE5441D48FD750CCFD5041EA6DBF10D8BE544115DEE732C7FD5041F9F17A04DBBE5441A32F8E71C4FD5041BFB0C294E9BE5441043B9BB5CCFD50415CD19E4CE2BE5441FE974E38D2FD5041F17A1783E1BE5441A2C58262D4FD5041977C62B1E2BE54414F1FA088D7FD5041D9CA7293DDBE5441797291F5D5FD5041349D3E69DBBE5441E4C818BFD6FD50417E173847D7BE544159000FFFDFFD50416C0AE0D4CDBE54419B03A55BE2FD5041545A3BE5C9BE5441CB63EE3AEAFD5041C1CF5338C2BE5441316C0170EAFD5041CFBFDB69BFBE54413D0AD7B3ECFD5041000000C0BCBE5441846B5CFEEEFD50419BBD090ABABE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 3075842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD28727544166666616D9DC5041AE47E1BA862754411F85EBF1D3DC504152B81E558627544166666616D0DC50419A999909862754417B14AE47CCDC50410AD7A3B08527544148E17AF4C9DC5041E17A147E85275441E17A14DEC8DC5041B81E854B85275441F6285C2FC7DC5041666666E684275441AE47E1DAC6DC50418FC2F5E8852754419A999929C6DC5041EC51B8FE882754415C8FC275C7DC5041E17A148E9C27544101030000000100000028000000D7A3704DD1DC50413D0AD7730D285441713D0A07D5DC50415C8FC2351028544185EB5148D9DC504114AE47A112285441AE47E1CADADC50417B14AEE711285441A4703D0ADEDC5041B81E859B11285441713D0A07E0DC50411F85EB310E285441F6285CBFE1DC5041F6285CCF0828544185EB5188E2DC50413333337304285441AE47E1DAE4DC50413D0AD733EF2754419A9999A9E5DC5041AE47E18AE82754410AD7A310E6DC504114AE4781E4275441AE47E12AE6DC50417B14AE07E22754411F85EB91E6DC50410AD7A3D0DA275441AE47E12AE7DC5041E17A145ECF27544114AE47A1E7DC5041AE47E17ACD27544166666646E8DC5041B81E853BCB275441E17A140EE9DC5041E17A143ECB275441AE47E1AAEDDC5041E17A149EB92754417B14AE97F1DC5041EC51B83EA8275441E17A14AEF1DC5041D7A370ADA7275441D7A3705DE8DC50415C8FC295A6275441F6285C4FE4DC504133333383A62754417B14AEF7DFDC504166666666A62754410AD7A3B0DBDC5041F6285C4FA627544152B81E25D8DC50418FC2F538A62754418FC2F5C8D4DC50417B14AEA7A6275441CDCCCCBCD4DC5041D7A3702DA7275441E17A148ECCDC5041AE47E1DAFF275441295C8FE2B3DC504148E17A54FC275441D7A370DDB1DC504185EB5108072854411F85EBA1B3DC5041CDCCCC5C07285441295C8F52B8DC504148E17A14082854418FC2F5F8BBDC50418FC2F5D80928544185EB5168BDDC5041AE47E13A0B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E2854418FC2F5C8C8DC50419A99997910285441B81E859BCADC50410AD7A3600E2854410AD7A340CEDC50419A9999C90A285441D7A3704DD1DC50413D0AD7730D2854410103000000010000002A0000009A9999E9C3DC5041AE47E13A83275441295C8F72C9DC5041CDCCCC9C84275441F6285CFFCADC5041295C8FD284275441C3F5283CD6DC50413D0AD7B385275441AE47E15AE3DC50415C8FC2F5862754419A999979E3DC5041713D0A8786275441CDCCCC6CE4DC504148E17A247F275441E17A148EE4DC5041295C8F227E275441713D0A07E8DC5041E17A14AE64275441CDCCCC5CD0DC504185EB51E8662754410AD7A320D1DC5041D7A370ED6D27544114AE4721CEDC5041B81E85AB702754417B14AE57CFDC504114AE47C17127544148E17AD4D1DC5041A4703DCA79275441C3F5284CD0DC5041F6285CCF7A275441F6285CAFCDDC504114AE47C1712754415C8FC2B5C8DC5041EC51B85E7427544185EB5148C9DC5041C3F5289C6D275441D7A3701DC7DC50417B14AEC76C27544100000090C7DC5041D7A370BD67275441E17A14EEC2DC5041CDCCCC2C6827544114AE472190DC504152B81EF56C275441B81E856B89DC5041A4703D2A6F2754411F85EBF186DC50413D0AD713702754411F85EB7185DC5041A4703DAA702754419A9999A984DC50413D0AD7937127544185EB518884DC5041AE47E13A722754410AD7A36088DC504152B81E3573275441EC51B85E8DDC50419A999919752754418FC2F5689ADC5041B81E85CB7927544133333363A4DC50410AD7A3F07C27544114AE47E1A9DC5041333333B37E275441A4703D5AACDC504148E17A547F275441AE47E1BAAFDC5041295C8F228027544166666686B3DC5041295C8FC2802754411F85EBB1B6DC5041B81E854B8127544166666676B9DC50419A9999C9812754411F85EB01BCDC5041000000308227544185EB5148BEDC504152B81E7582275441AE47E19AC0DC5041E17A14AE82275441CDCCCC4CC2DC5041B81E85DB822754419A9999E9C3DC5041AE47E13A83275441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000049DAC7B4D4DC5041BF211EA8A6275441FBCFE8ECCEDC504112484BCEE627544107C44F8FCCDC5041586288CDFF275441EAEE48E3B3DC504156659554FC275441B32E5E28B2DC504103FB547B05285441EB2680FAB1DC5041D6E8BE0D0728544102920A94B5DC5041BA4F01A90728544102310E45B8DC50411DFC69120828544144201FACB9DC5041DF27D1BB08285441CC353365BBDC5041FD61689109285441A7B7E78DBCDC50410DB874680A285441CD73486CBDDC50411847FE270B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E2854418FC2F5C8C8DC50419A999979102854410AD7A340CEDC50419A9999C90A28544164AE1083D0DC5041A89385B40E2854416213B493D3DC5041F608917211285441D07DCF88D6DC5041E4E2483312285441D6F51639D9DC50419CE58425122854410F89B65FDBDC5041C4ED38FC112854411201FE0FDEDC5041B500DD9B11285441EC51B8EEDEDC5041D7A3701D10285441144A7519E0DC5041E49341F80D2854417B357B5EE1DC5041E152ABFE092854418C3AE1FCE1DC5041A7EF86D2072854413AE69CA7E3DC5041F19C9945FA2754410274C4E9E5DC5041DC8D9152E62754416053F48EE6DC50413E82B36DDC275441DAF8F1BBE6DC5041537A85FAD52754419B034B31E7DC5041AE62DFFDCE275441E7A5676AE8DC5041334AFB3BCB275441DED0B323E9DC504184E8B638CB27544157241236E9DC50416DF544A5CA27544187673AD2EADC504157055C7EC42754411D4FA6DBEDDC5041614F38C6B8275441895AB6A9F1DC50419612BBC8A7275441D229E6FBE7DC5041DB1B0494A62754410997D928E0DC5041582F4A63A62754410E240B9BD8DC5041E9E3DE3BA627544149DAC7B4D4DC5041BF211EA8A6275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 5260909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD28727544166666616D9DC5041AE47E1BA862754411F85EBF1D3DC504152B81E558627544166666616D0DC50419A999909862754417B14AE47CCDC50410AD7A3B08527544148E17AF4C9DC5041E17A147E85275441E17A14DEC8DC5041B81E854B85275441F6285C2FC7DC5041666666E684275441AE47E1DAC6DC50418FC2F5E8852754419A999929C6DC5041EC51B8FE882754415C8FC275C7DC5041E17A148E9C27544101030000000100000028000000D7A3704DD1DC50413D0AD7730D285441713D0A07D5DC50415C8FC2351028544185EB5148D9DC504114AE47A112285441AE47E1CADADC50417B14AEE711285441A4703D0ADEDC5041B81E859B11285441713D0A07E0DC50411F85EB310E285441F6285CBFE1DC5041F6285CCF0828544185EB5188E2DC50413333337304285441AE47E1DAE4DC50413D0AD733EF2754419A9999A9E5DC5041AE47E18AE82754410AD7A310E6DC504114AE4781E4275441AE47E12AE6DC50417B14AE07E22754411F85EB91E6DC50410AD7A3D0DA275441AE47E12AE7DC5041E17A145ECF27544114AE47A1E7DC5041AE47E17ACD27544166666646E8DC5041B81E853BCB275441E17A140EE9DC5041E17A143ECB275441AE47E1AAEDDC5041E17A149EB92754417B14AE97F1DC5041EC51B83EA8275441E17A14AEF1DC5041D7A370ADA7275441D7A3705DE8DC50415C8FC295A6275441F6285C4FE4DC504133333383A62754417B14AEF7DFDC504166666666A62754410AD7A3B0DBDC5041F6285C4FA627544152B81E25D8DC50418FC2F538A62754418FC2F5C8D4DC50417B14AEA7A6275441CDCCCCBCD4DC5041D7A3702DA7275441E17A148ECCDC5041AE47E1DAFF275441295C8FE2B3DC504148E17A54FC275441D7A370DDB1DC504185EB5108072854411F85EBA1B3DC5041CDCCCC5C07285441295C8F52B8DC504148E17A14082854418FC2F5F8BBDC50418FC2F5D80928544185EB5168BDDC5041AE47E13A0B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E2854418FC2F5C8C8DC50419A99997910285441B81E859BCADC50410AD7A3600E2854410AD7A340CEDC50419A9999C90A285441D7A3704DD1DC50413D0AD7730D2854410103000000010000002A0000009A9999E9C3DC5041AE47E13A83275441295C8F72C9DC5041CDCCCC9C84275441F6285CFFCADC5041295C8FD284275441C3F5283CD6DC50413D0AD7B385275441AE47E15AE3DC50415C8FC2F5862754419A999979E3DC5041713D0A8786275441CDCCCC6CE4DC504148E17A247F275441E17A148EE4DC5041295C8F227E275441713D0A07E8DC5041E17A14AE64275441CDCCCC5CD0DC504185EB51E8662754410AD7A320D1DC5041D7A370ED6D27544114AE4721CEDC5041B81E85AB702754417B14AE57CFDC504114AE47C17127544148E17AD4D1DC5041A4703DCA79275441C3F5284CD0DC5041F6285CCF7A275441F6285CAFCDDC504114AE47C1712754415C8FC2B5C8DC5041EC51B85E7427544185EB5148C9DC5041C3F5289C6D275441D7A3701DC7DC50417B14AEC76C27544100000090C7DC5041D7A370BD67275441E17A14EEC2DC5041CDCCCC2C6827544114AE472190DC504152B81EF56C275441B81E856B89DC5041A4703D2A6F2754411F85EBF186DC50413D0AD713702754411F85EB7185DC5041A4703DAA702754419A9999A984DC50413D0AD7937127544185EB518884DC5041AE47E13A722754410AD7A36088DC504152B81E3573275441EC51B85E8DDC50419A999919752754418FC2F5689ADC5041B81E85CB7927544133333363A4DC50410AD7A3F07C27544114AE47E1A9DC5041333333B37E275441A4703D5AACDC504148E17A547F275441AE47E1BAAFDC5041295C8F228027544166666686B3DC5041295C8FC2802754411F85EBB1B6DC5041B81E854B8127544166666676B9DC50419A9999C9812754411F85EB01BCDC5041000000308227544185EB5148BEDC504152B81E7582275441AE47E19AC0DC5041E17A14AE82275441CDCCCC4CC2DC5041B81E85DB822754419A9999E9C3DC5041AE47E13A83275441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000049DAC7B4D4DC5041BF211EA8A6275441FBCFE8ECCEDC504112484BCEE627544107C44F8FCCDC5041586288CDFF275441EAEE48E3B3DC504156659554FC275441B32E5E28B2DC504103FB547B05285441EB2680FAB1DC5041D6E8BE0D0728544102920A94B5DC5041BA4F01A90728544102310E45B8DC50411DFC69120828544144201FACB9DC5041DF27D1BB08285441CC353365BBDC5041FD61689109285441A7B7E78DBCDC50410DB874680A285441CD73486CBDDC50411847FE270B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E2854418FC2F5C8C8DC50419A999979102854410AD7A340CEDC50419A9999C90A28544164AE1083D0DC5041A89385B40E2854416213B493D3DC5041F608917211285441D07DCF88D6DC5041E4E2483312285441D6F51639D9DC50419CE58425122854410F89B65FDBDC5041C4ED38FC112854411201FE0FDEDC5041B500DD9B11285441EC51B8EEDEDC5041D7A3701D10285441144A7519E0DC5041E49341F80D2854417B357B5EE1DC5041E152ABFE092854418C3AE1FCE1DC5041A7EF86D2072854413AE69CA7E3DC5041F19C9945FA2754410274C4E9E5DC5041DC8D9152E62754416053F48EE6DC50413E82B36DDC275441DAF8F1BBE6DC5041537A85FAD52754419B034B31E7DC5041AE62DFFDCE275441E7A5676AE8DC5041334AFB3BCB275441DED0B323E9DC504184E8B638CB27544157241236E9DC50416DF544A5CA27544187673AD2EADC504157055C7EC42754411D4FA6DBEDDC5041614F38C6B8275441895AB6A9F1DC50419612BBC8A7275441D229E6FBE7DC5041DB1B0494A62754410997D928E0DC5041582F4A63A62754410E240B9BD8DC5041E9E3DE3BA627544149DAC7B4D4DC5041BF211EA8A6275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411592 - 291471
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000030000006E00000085EB51D899A15041A4703D3A9D565541295C8F028AA15041CDCCCC8C85565541CDCCCCEC8EA150415C8FC2E583565541666666B69DA150410AD7A3A098565541B81E855B9EA15041000000509956554166666686A0A15041C3F5286C985655418FC2F568A3A1504114AE47B1965655411C62379BB0A1504196412CF58E56554141CB6600A6A15041DF2301537E5655411CC2FE62A3A15041040D16EC7F565541AED68F22A1A150414D1F4D047D565541EC51B83E9CA15041A4703DFA7E565541333333839AA15041F6285C8F7B565541EC51B87EA6A15041EC51B82E75565541EC51B8AEF1A15041D7A3701D4956554133333313F5A150410AD7A3F04D56554185EB51D8F7A15041295C8F72525655419A999949EAA15041000000505E565541713D0A37DEA150413333332368565541D7A370FDDEA15041D7A370CD6B565541E17A14CEDFA1504152B81EA56F56554185EB5118E1A15041D7A370BD75565541AE47E13AE8A15041666666866E56554114AE47B1ECA150417B14AED769565541000000B0F1A15041713D0A97645655415C8FC215FCA15041B81E858B59565541A4703D7AFDA15041333333635B565541CDCCCC4CF4A1504152B81E2567565541E17A145EEDA15041A4703D7A6F56554133333383E2A15041000000707C56554148E17AF4E3A15041EC51B83E83565541000000E0EDA15041D7A3703D765655410AD7A3B0F2A15041713D0A37705655415C8FC2A5F8A150417B14AE1769565541713D0A97FDA15041D7A3702D63565541333333D3FEA15041713D0AF75F565541D7A3704DFEA15041E17A149E57565541D7A3703DFFA15041CDCCCC3C53565541EC51B81E01A25041B81E85BB5056554152B81E7504A2504152B81E554E565541B81E85DB06A2504148E17A244C56554114AE47B107A25041333333F3495655418FC2F508F8A15041333333131B5655417B14AE37F5A150410AD7A3B01B565541C3F528ACE7A15041713D0AA71E56554152B81E55E7A150417B14AE371F565541AE47E1EAE3A15041AE47E1BA17565541295C8FB2DDA15041F6285C3F18565541000000D0D9A15041D7A3703D1856554185EB5128D5A15041EC51B81E19565541C6B5C2B5D7A150412192B45A1E565541A62E35AFBDA1504140D846A22B565541AE47E11AB8A15041713D0A672E565541D7A3709D95A150419A9999D93F565541C3F5280C95A15041E17A146E3A56554148E17AD494A15041C3F5284C395655413D0AD7F394A1504114AE4711335655419A9999B992A150410AD7A350345655413333331386A15041C3F5282C3B5655411F85EB6166A150413D0AD7734E5655410AD7A36063A150410000008050565541708DE00743A150416282FB3066565541708DE00743A1504163F9F68968565541F0BF598D46A15041514BDB666D565541CFB60B045CA1504198683CFE605655411F85EBA161A15041333333235E565541C3F528FC6AA150419A9999C95856554185EB516878A15041B81E85AB51565541CDCCCCAC8BA1504185EB519847565541713D0A8795A150411F85EB91425655417B14AE7795A150418FC2F558435655419A99994995A15041CDCCCCBC4556554148E17A748DA15041E17A146E49565541EC51B8CE7DA15041B81E856B51565541295C8FF26FA15041E17A148E58565541F6285C1F62A1504148E17A446056554114AE478162A15041CDCCCCBC61565541EC51B8DE62A1504100000010635655410000002063A150415C8FC265645655411F85EBE163A15041295C8FE266565541F6285C6F66A150413D0AD78370565541A4703DCA92A15041AE47E16A625655411F85EB3194A150411F85EBF161565541D7A370BD93A15041A4703D6A5E5655410000004093A15041C3F528FC5B5655416666665693A150415C8FC2355B5655410AD7A3E093A15041713D0A975656554152B81E7594A1504148E17A3451565541F6285C9FA6A15041333333F34756554148E17AA4DEA150417B14AED72B56554114AE4711E0A15041713D0AA72E565541C3F5286CE1A150413333335331565541E17A14EEE2A15041C3F528CC335655418FC2F578E6A15041713D0AA739565541000000B0BAA1504185EB5148525655418FC2F558B8A150411F85EB014F565541CDCCCCAC93A15041A4703DBA64565541E17A148E94A15041713D0A1768565541295C8F2295A1504114AE47C16A565541CDCCCCAC95A15041E17A14CE6C56554148E17A8473A150410AD7A3F076565541B81E851B78A1504148E17A447E565541E17A148E7CA15041F6285CDF835655419A9999497EA15041295C8F92895655410000007080A150418FC2F5A88856554185EB51888BA1504114AE47D19A56554185EB514892A1504100000090A556554114AE471196A1504152B81E35A15655413D0AD77399A1504114AE47919D56554185EB51D899A15041A4703D3A9D56554105000000000000A0EDA15041F6285C1F435655413D0AD7C397A150416666666675565541000000A096A150417B14AE6770565541C3F5281CEBA1504152B81EA53F565541000000A0EDA15041F6285C1F4356554109000000713D0AA7BCA150415C8FC235385655413D0AD743A7A150413D0AD7C3425655415C8FC2D594A150411F85EBC14B5655413D0AD7E394A15041666666064B5655415C8FC21595A150419A999969485655410AD7A34095A1504114AE473146565541CDCCCCCCA6A15041F6285CDF3D5655417B14AE47BAA1504152B81E4534565541713D0AA7BCA150415C8FC23538565541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000004A94AEF2EBA150410385BDCD40565541C3F5281CEBA1504152B81EA53F565541000000A096A150417B14AE6770565541A0790E9397A1504175ACB11274565541754AD558A3A15041FB85A8526D565541183ABE4FADA15041CB515760675655417E0DD2EFBBA15041BD46DE045F565541902AF1A2C7A150419738B4C75756554111C1FC6FDBA15041F28157894C565541356F09E4ECA1504193AA4C83425655414A94AEF2EBA150410385BDCD40565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411592 - 432241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000030000006E00000085EB51D899A15041A4703D3A9D565541295C8F028AA15041CDCCCC8C85565541CDCCCCEC8EA150415C8FC2E583565541666666B69DA150410AD7A3A098565541B81E855B9EA15041000000509956554166666686A0A15041C3F5286C985655418FC2F568A3A1504114AE47B1965655411C62379BB0A1504196412CF58E56554141CB6600A6A15041DF2301537E5655411CC2FE62A3A15041040D16EC7F565541AED68F22A1A150414D1F4D047D565541EC51B83E9CA15041A4703DFA7E565541333333839AA15041F6285C8F7B565541EC51B87EA6A15041EC51B82E75565541EC51B8AEF1A15041D7A3701D4956554133333313F5A150410AD7A3F04D56554185EB51D8F7A15041295C8F72525655419A999949EAA15041000000505E565541713D0A37DEA150413333332368565541D7A370FDDEA15041D7A370CD6B565541E17A14CEDFA1504152B81EA56F56554185EB5118E1A15041D7A370BD75565541AE47E13AE8A15041666666866E56554114AE47B1ECA150417B14AED769565541000000B0F1A15041713D0A97645655415C8FC215FCA15041B81E858B59565541A4703D7AFDA15041333333635B565541CDCCCC4CF4A1504152B81E2567565541E17A145EEDA15041A4703D7A6F56554133333383E2A15041000000707C56554148E17AF4E3A15041EC51B83E83565541000000E0EDA15041D7A3703D765655410AD7A3B0F2A15041713D0A37705655415C8FC2A5F8A150417B14AE1769565541713D0A97FDA15041D7A3702D63565541333333D3FEA15041713D0AF75F565541D7A3704DFEA15041E17A149E57565541D7A3703DFFA15041CDCCCC3C53565541EC51B81E01A25041B81E85BB5056554152B81E7504A2504152B81E554E565541B81E85DB06A2504148E17A244C56554114AE47B107A25041333333F3495655418FC2F508F8A15041333333131B5655417B14AE37F5A150410AD7A3B01B565541C3F528ACE7A15041713D0AA71E56554152B81E55E7A150417B14AE371F565541AE47E1EAE3A15041AE47E1BA17565541295C8FB2DDA15041F6285C3F18565541000000D0D9A15041D7A3703D1856554185EB5128D5A15041EC51B81E19565541C6B5C2B5D7A150412192B45A1E565541A62E35AFBDA1504140D846A22B565541AE47E11AB8A15041713D0A672E565541D7A3709D95A150419A9999D93F565541C3F5280C95A15041E17A146E3A56554148E17AD494A15041C3F5284C395655413D0AD7F394A1504114AE4711335655419A9999B992A150410AD7A350345655413333331386A15041C3F5282C3B5655411F85EB6166A150413D0AD7734E5655410AD7A36063A150410000008050565541708DE00743A150416282FB3066565541708DE00743A1504163F9F68968565541F0BF598D46A15041514BDB666D565541CFB60B045CA1504198683CFE605655411F85EBA161A15041333333235E565541C3F528FC6AA150419A9999C95856554185EB516878A15041B81E85AB51565541CDCCCCAC8BA1504185EB519847565541713D0A8795A150411F85EB91425655417B14AE7795A150418FC2F558435655419A99994995A15041CDCCCCBC4556554148E17A748DA15041E17A146E49565541EC51B8CE7DA15041B81E856B51565541295C8FF26FA15041E17A148E58565541F6285C1F62A1504148E17A446056554114AE478162A15041CDCCCCBC61565541EC51B8DE62A1504100000010635655410000002063A150415C8FC265645655411F85EBE163A15041295C8FE266565541F6285C6F66A150413D0AD78370565541A4703DCA92A15041AE47E16A625655411F85EB3194A150411F85EBF161565541D7A370BD93A15041A4703D6A5E5655410000004093A15041C3F528FC5B5655416666665693A150415C8FC2355B5655410AD7A3E093A15041713D0A975656554152B81E7594A1504148E17A3451565541F6285C9FA6A15041333333F34756554148E17AA4DEA150417B14AED72B56554114AE4711E0A15041713D0AA72E565541C3F5286CE1A150413333335331565541E17A14EEE2A15041C3F528CC335655418FC2F578E6A15041713D0AA739565541000000B0BAA1504185EB5148525655418FC2F558B8A150411F85EB014F565541CDCCCCAC93A15041A4703DBA64565541E17A148E94A15041713D0A1768565541295C8F2295A1504114AE47C16A565541CDCCCCAC95A15041E17A14CE6C56554148E17A8473A150410AD7A3F076565541B81E851B78A1504148E17A447E565541E17A148E7CA15041F6285CDF835655419A9999497EA15041295C8F92895655410000007080A150418FC2F5A88856554185EB51888BA1504114AE47D19A56554185EB514892A1504100000090A556554114AE471196A1504152B81E35A15655413D0AD77399A1504114AE47919D56554185EB51D899A15041A4703D3A9D56554105000000000000A0EDA15041F6285C1F435655413D0AD7C397A150416666666675565541000000A096A150417B14AE6770565541C3F5281CEBA1504152B81EA53F565541000000A0EDA15041F6285C1F4356554109000000713D0AA7BCA150415C8FC235385655413D0AD743A7A150413D0AD7C3425655415C8FC2D594A150411F85EBC14B5655413D0AD7E394A15041666666064B5655415C8FC21595A150419A999969485655410AD7A34095A1504114AE473146565541CDCCCCCCA6A15041F6285CDF3D5655417B14AE47BAA1504152B81E4534565541713D0AA7BCA150415C8FC23538565541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000BF4BAE47BAA1504119141F45345655419EBDCCCCA6A15041228C5DDF3D5655417FBDA34095A15041DB004931465655419E927C3E95A150414107D24D46565541B114D33C95A150413B62D96346565541043FC31595A150414444986948565541F08956F394A15041E616C4364A5655413D0AD7E394A15041666666064B56554164A0C2D594A150416BA2EAC14B565541E8AEBC4FA0A15041D69B6628465655413D0AD743A7A150413D0AD7C3425655412A0717A9B1A150411DCE7AA23D565541A5BE09A7BCA150413A42C235385655417A330B09BCA150418558602F37565541E883E48CBBA15041C0FB326136565541BF4BAE47BAA1504119141F4534565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538333 - 91693
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000170000005D31CC661C5751411858392C1C6754413DE307EA1B5751411C2028391A67544156ABF6F61957514161C6B8DC14675441B0E94CF4175751412A32B6220F6754411F17F43C1457514172087079046754414BF595D31057514129B54527FB66544143C147800C575141988B617EFC66544146F17033075751414AB18287FD665441890C289202575141B8603CA0FE6654415B55E8390657514179155C8E0867544110FD1B130C575141F623EBD817675441858573ED0C5751415F48CBAC196754412CAB94F60D575141351C65991C675441D1E527540E575141FF8F4A1F1E67544114AE47D10F575141E17A141E1E675441A4703D0A1157514114AE47911D6754415006458812575141836B6A4B1C675441B92A255C14575141E0825E0A1A6754412428A3F115575141B222AAA3186754417A36D03B19575141E90D384F1967544168201DB21A575141550BB6E41A675441FC453EBB1B5751416A2E55831D6754415D31CC661C5751411858392C1C675441
+</a>
+
+<b>
+010600000001000000010300000001000000310000006D201DB21A575141550BB6E41A6754411EBE10121B5751413F8B69D71B6754413CCFC8B61B575141C609BE0F1D6754412BC49D201C575141463296B81C675441DB884A641C57514115B632221C675441C964A5601C575141D0259E131C67544196AD965A1C575141FB4863FB1B6754412514CD591C57514155E33CF81B675441D85A65C51A5751410E2969141767544150CC55B61A5751410F61FEEA16675441794D1D991A5751414704A39A16675441A3D7361C1A5751412B40294315675441A1636A001A5751413E01B7F61467544112358F061A575141D5004C3A156754410BDADE741557514179EEF94F086754415F6B675514575141ED1F95BF046754411E17F43C145751417108707904675441A9BA6AFA115751413007CB4CFE6654414AF595D310575141E53EDE36FB66544133558BE00F575141E8B79472FB6654413FC147800C575141968B617EFC665441E5466E3108575141D75FE155FD66544164A8501A05575141287FB906FE665441840C289202575141B9603CA0FE6654419069AD0005575141BDF26A3B0567544129B70AA2075751418EFAF53B0C6754414FA9962E08575141AF8B6EAB0D67544160229EAE0957514184158297116754414B4C21C50B57514146FEC9CF16675441BAFBDADD0C575141A897D05E19675441898573ED0C5751415E48CBAC196754412BCF8D050D5751417645D9F019675441B2499F5A0D575141CCF784C51A675441EC342D060E575141B72F96B81C675441676FC0630E5751412206B20F1E67544114AE47D10F575141E17A141E1E675441A4703D0A1157514114AE47911D67544161755EB5115751411F634FFF1C675441808A17B1135751416DB755DD1A675441BD2A255C14575141E2825E0A1A6754419872D7E91457514173B9058D19675441CB8AD9C215575141A922AAA318675441249760E915575141ABB6F8AA186754412328A3F115575141B422AAA31867544161E80BBF18575141A1706E20196754419FAC372C195751411F849F3F1967544161B8633A195751414FCEED4E196754417936D03B19575141EE0D384F196754416D201DB21A575141550BB6E41A675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538333 - 293741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000170000005D31CC661C5751411858392C1C6754413DE307EA1B5751411C2028391A67544156ABF6F61957514161C6B8DC14675441B0E94CF4175751412A32B6220F6754411F17F43C1457514172087079046754414BF595D31057514129B54527FB66544143C147800C575141988B617EFC66544146F17033075751414AB18287FD665441890C289202575141B8603CA0FE6654415B55E8390657514179155C8E0867544110FD1B130C575141F623EBD817675441858573ED0C5751415F48CBAC196754412CAB94F60D575141351C65991C675441D1E527540E575141FF8F4A1F1E67544114AE47D10F575141E17A141E1E675441A4703D0A1157514114AE47911D6754415006458812575141836B6A4B1C675441B92A255C14575141E0825E0A1A6754412428A3F115575141B222AAA3186754417A36D03B19575141E90D384F1967544168201DB21A575141550BB6E41A675441FC453EBB1B5751416A2E55831D6754415D31CC661C5751411858392C1C675441
+</a>
+
+<b>
+010600000001000000010300000001000000310000006D201DB21A575141550BB6E41A6754411EBE10121B5751413F8B69D71B6754413CCFC8B61B575141C609BE0F1D6754412BC49D201C575141463296B81C675441DB884A641C57514115B632221C675441C964A5601C575141D0259E131C67544196AD965A1C575141FB4863FB1B6754412514CD591C57514155E33CF81B675441D85A65C51A5751410E2969141767544150CC55B61A5751410F61FEEA16675441794D1D991A5751414704A39A16675441A3D7361C1A5751412B40294315675441A1636A001A5751413E01B7F61467544112358F061A575141D5004C3A156754410BDADE741557514179EEF94F086754415F6B675514575141ED1F95BF046754411E17F43C145751417108707904675441A9BA6AFA115751413007CB4CFE6654414AF595D310575141E53EDE36FB66544133558BE00F575141E8B79472FB6654413FC147800C575141968B617EFC665441E5466E3108575141D75FE155FD66544164A8501A05575141287FB906FE665441840C289202575141B9603CA0FE6654419069AD0005575141BDF26A3B0567544129B70AA2075751418EFAF53B0C6754414FA9962E08575141AF8B6EAB0D67544160229EAE0957514184158297116754414B4C21C50B57514146FEC9CF16675441BAFBDADD0C575141A897D05E19675441898573ED0C5751415E48CBAC196754412BCF8D050D5751417645D9F019675441B2499F5A0D575141CCF784C51A675441EC342D060E575141B72F96B81C675441676FC0630E5751412206B20F1E67544114AE47D10F575141E17A141E1E675441A4703D0A1157514114AE47911D67544161755EB5115751411F634FFF1C675441808A17B1135751416DB755DD1A675441BD2A255C14575141E2825E0A1A6754419872D7E91457514173B9058D19675441CB8AD9C215575141A922AAA318675441249760E915575141ABB6F8AA186754412328A3F115575141B422AAA31867544161E80BBF18575141A1706E20196754419FAC372C195751411F849F3F1967544161B8633A195751414FCEED4E196754417936D03B19575141EE0D384F196754416D201DB21A575141550BB6E41A675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499110 - 226669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000006000000010300000002000000CD0000000AD7A33081065141B81E85BBAF315441CDCCCCAC890651411F85EB01B3315441EC51B81E96065141B81E859BB831544114AE47F1A40651415C8FC225C0315441F6285C7FB0065141B81E852BC631544152B81EB5B5065141A4703DDAC1315441713D0AE7B60651415C8FC225C1315441295C8FF2B70651417B14AE17C03154417B14AE67BA06514166666606BE315441D7A370EDC0065141B81E85DBB831544100000010C40651410AD7A330B631544185EB5188CC065141E17A146EB0315441295C8FE2D0065141B81E85FBAB315441713D0AE7D10651418FC2F5C8AA315441B81E856BD70651418FC2F5F8A53154411F85EBE1D7065141713D0A97A0315441D7A370DDD6065141B81E852B9B31544148E17A04D6065141CDCCCC9C97315441B81E857BD6065141EC51B82E9431544148E17AB4D406514152B81E458F315441E17A145ED406514185EB51188C3154410AD7A3D0D30651419A9999D98931544185EB51E8D206514148E17A4485315441295C8FC2CD06514185EB5128833154418FC2F578CB0651410AD7A34081315441B81E85ABC5065141F6285C5F7E31544148E17A44C1065141AE47E10A7C31544166666626BF065141CDCCCC9C78315441295C8F12C20651415C8FC2D576315441D7A3707DC3065141A4703D8A76315441A4703DAAC3065141EC51B8CE7531544185EB51E8C30651419A99994975315441F6285C3FC4065141333333937431544185EB5128C40651410AD7A3D072315441713D0A97C3065141F6285CDF70315441295C8F02C306514114AE4771703154410AD7A320C1065141AE47E19A6F315441C3F5286CC0065141D7A3703D6F31544114AE47E1BF065141B81E85DB6E315441E17A149EBF0651411F85EB016E315441A4703D5ABF065141AE47E1FA6C3154415C8FC255BF065141000000106C315441AE47E17ABF0651418FC2F5786931544148E17A74BF065141A4703DFA67315441666666E6BE06514166666686653154410AD7A380BE0651419A9999296431544185EB51F8BD06514148E17AF46231544148E17AC4BD065141AE47E11A62315441C3F528ACBD065141295C8F7260315441C3F5288CBC065141A4703D7A5F315441C3F5284CBB065141C3F5288C5E3154417B14AE87BA0651415C8FC2255E31544185EB5158B90651413D0AD7335D315441EC51B8DEB70651410AD7A3405C315441A4703DBAB2065141F6285C3F5A3154417B14AEF7AE065141295C8F525831544148E17AF4A90651411F85EB6154315441295C8F22A70651413333335352315441EC51B8CEA10651413D0AD7434D315441000000709C06514185EB51484C3154418FC2F51898065141D7A3705D4A31544148E17A74950651413D0AD7534C3154415C8FC2E592065141A4703DFA4D3154415C8FC25590065141713D0A674F315441EC51B8DE8D0651416666668650315441F6285CAF8B065141EC51B8DE50315441C3F5289C8806514152B81EE550315441AE47E12A87065141F6285CAF50315441C3F528AC8706514152B81E4551315441EC51B8AE92065141333333D3593154413D0AD71399065141333333F35E315441666666D69E0651410AD7A39063315441666666C6A2065141D7A3709D663154418FC2F538A7065141666666166A31544148E17A54AB0651410AD7A3D06D315441F6285C9FB0065141EC51B8DE7331544166666616B606514152B81EA57A315441713D0A57B6065141D7A3705D7B31544166666636B60651411F85EB617C31544152B81ED5B506514148E17A047D315441295C8F32B5065141C3F5289C7D315441EC51B84EB40651419A9999497E31544166666646B2065141E17A144E7F31544114AE47B1AF0651413D0AD7B380315441E17A146EAC06514114AE47B182315441713D0A27A80651417B14AE878531544152B81E55A6065141295C8FE286315441E17A14AEA40651418FC2F56888315441000000C0A3065141D7A3708D89315441D7A3701DA30651417B14AEC78A3154415C8FC2A5A2065141E17A144E8C315441A4703D5AA20651417B14AE978E31544100000090A2065141A4703D0A93315441AE47E19AA20651413D0AD7739531544152B81E65A20651419A9999D9963154418FC2F518A20651417B14AEA797315441713D0AB7A1065141000000609831544148E17A14A1065141A4703D7A99315441EC51B88E9F065141B81E852B9B315441333333E39C0651419A9999499D31544152B81EC59A0651415C8FC2E59E3154418FC2F5589A0651418FC2F5789E3154419A9999699E065141CDCCCC6C9B31544166666626A00651410AD7A3D09931544148E17AF4A006514114AE47A1983154411F85EBC1A1065141F6285CEF9631544133333303A206514148E17A94953154417B14AED7A10651411F85EB21913154417B14AED7A1065141A4703DEA8D31544133333303A2065141EC51B86E8C315441A4703D5AA206514148E17A348B315441CDCCCCFCA2065141A4703DFA89315441000000E0A306514148E17A948831544152B81E05A50651413D0AD74387315441B81E85ABA60651418FC2F5E8853154417B14AEE7AA0651417B14AE078331544148E17A74B006514148E17AA47F315441E17A142EB4065141713D0AA77D3154417B14AE27B5065141E17A14CE7C315441E17A147EB506514152B81ED57B315441E17A145EB50651415C8FC2C57A31544185EB51C8B20651411F85EB417731544185EB5158AC065141D7A370AD6F315441713D0A57A90651415C8FC2956C3154418FC2F568A4065141CDCCCC9C68315441A4703DBAA206514133333323673154410AD7A39095065141A4703DCA5C315441333333138B0651410AD7A3E054315441AE47E14A850651419A99996950315441AE47E1BA83065141A4703D6A4F3154410AD7A3907F065141B81E85AB4D315441C3F528BC7A06514152B81EC54C31544152B81E757A0651419A9999294D3154413333330376065141CDCCCC9C4C315441B81E858B75065141A4703DEA4F315441F6285CAF7606514185EB516850315441AE47E19A76065141A4703D8A52315441A4703D8A72065141C3F5289C5131544148E17AD47206514185EB5188543154418FC2F5C8720651419A9999E9543154410AD7A3D076065141CDCCCCFC56315441713D0AB775065141713D0A8759315441A4703DBA72065141EC51B81E58315441713D0A97720651417B14AE9758315441F6285CFF71065141B81E85CB5A315441CDCCCC3C7106514185EB51185C3154419A99994970065141C3F5281C5D315441B81E85BB6E065141A4703D1A5E315441713D0AF76D06514152B81E255E315441666666366B065141AE47E18A5F315441EC51B81E68065141333333936131544152B81EB565065141A4703D5A633154417B14AE876206514185EB51A86631544148E17AA461065141295C8FE2673154417B14AED76306514148E17A9469315441666666666706514185EB51E86B3154418FC2F53869065141E17A144E6D315441295C8F826B065141B81E854B6F315441EC51B88E6E0651417B14AE37723154413D0AD753720651413D0AD723753154418FC2F538760651413D0AD7A377315441B81E853B740651411F85EB91783154418FC2F5D86B0651415C8FC2B571315441B81E85BB640651419A9999296C315441A4703D8A6006514185EB514869315441A4703D3A5F06514185EB51986A3154415C8FC2155E065141B81E85AB6C315441F6285C8F5C0651410AD7A3206F315441AE47E18A5B0651413D0AD73371315441CDCCCCBC5A0651411F85EB5173315441F6285C0F5A06514148E17A44753154410AD7A30059065141A4703DFA77315441EC51B84E57065141F6285C6F7A31544185EB51C8550651415C8FC2157C315441C3F5280C5406514114AE47917D315441F6285C2F52065141666666D67E315441D7A3707D500651411F85EB5180315441E17A144E4F06514114AE476181315441333333F34D065141295C8F128331544148E17A044D06514185EB517884315441CDCCCC6C4C0651410000004086315441295C8F824C065141AE47E19A87315441A4703D1A4D0651411F85EB4189315441B81E85AB4E065141B81E85AB8B315441E17A146E4F06514185EB51688D3154410AD7A3F04F0651418FC2F5F88E3154415C8FC2E54F065141AE47E1AA903154418FC2F5784F0651415C8FC205923154415C8FC2954E065141B81E856B9331544148E17AB44B065141AE47E11A973154415C8FC235510651415C8FC27598315441D7A3703D580651419A9999A99A315441CDCCCC8C5E0651417B14AEC79C315441B81E859B5F06514152B81EF59A315441E17A146E6106514148E17AB49A315441666666C6640651418FC2F5D89B3154410AD7A3E065065141000000809D31544185EB516865065141C3F5289C9E315441CDCCCC5C66065141000000109F3154419A9999696E065141F6285C2FA43154411F85EB11770651410AD7A310AA315441CDCCCC7C7B065141C3F5281CAD315441D7A370BD7E065141666666B6AE3154415C8FC27580065141CDCCCC5CAF3154410AD7A33081065141B81E85BBAF3154410B000000C3F5289C9806514148E17AE4A8315441A4703D6A99065141B81E852BAD315441B81E85AB99065141E17A141EAF3154419A999929990651417B14AE67B1315441666666E6950651418FC2F578B0315441B81E853B930651410AD7A3C0AF315441AE47E11A93065141E17A14EEAD315441E17A14DE93065141A4703D9AAB315441E17A147E96065141E17A144EAB315441C3F5284C97065141333333A3A8315441C3F5289C9806514148E17AE4A83154410103000000020000003C000000A4703DCA4B06514185EB51987C315441EC51B83E4E0651410AD7A3707D3154413333339350065141295C8FD27D315441666666A652065141CDCCCCBC7D31544152B81EB55306514152B81E257D3154415C8FC22555065141000000E07B3154411F85EBC1560651413D0AD7437A3154413333335358065141B81E853B783154411F85EB6159065141713D0AE775315441A4703D1A5A0651418FC2F5C8733154417B14AEC75A0651415C8FC2B571315441B81E85AB5B065141E17A14CE6F3154413D0AD7635C065141333333936E3154417B14AE475D065141CDCCCCEC6C315441C3F5286C5E065141A4703DFA6A315441B81E853B6006514114AE47D1673154415C8FC2F56206514185EB51D8643154417B14AEB7650651410AD7A3306231544114AE476168065141E17A143E60315441666666B66A065141F6285CCF5E315441B81E85BB6D065141D7A370ED5C3154418FC2F5186F0651419A9999E95B315441C3F5282C700651419A9999A95A3154417B14AE9770065141C3F5285C593154415C8FC20571065141C3F5286C57315441B81E859B71065141F6285C7F52315441F6285CFF6F065141C3F5288C55315441000000306C065141A4703DBA53315441C3F5284C6B065141713D0AF7523154417B14AE976A0651410AD7A3305231544152B81E6568065141713D0AF751315441F6285CEF66065141713D0AC7513154415C8FC2F5650651410AD7A370513154418FC2F5686506514114AE474150315441B81E850B66065141295C8F524F3154413333335365065141E17A144E4E31544148E17AE466065141D7A370BD4C31544114AE47D164065141713D0A074A3154417B14AE1764065141D7A3704D4A315441000000106306514114AE47A149315441CDCCCCAC60065141713D0A8746315441F6285CBF5E06514185EB51C84831544152B81E155D065141EC51B84E4B315441D7A3700D5C065141333333334D315441713D0A875706514152B81EE55131544148E17AA45106514152B81E15583154419A9999F94F065141C3F5283C5A315441B81E854B3C0651413D0AD7334C315441EC51B89E2D0651419A9999A95C31544152B81E65320651413D0AD7436031544185EB511835065141295C8F026331544148E17A6438065141B81E85DB66315441713D0A373B065141A4703D2A693154415C8FC285440651418FC2F518703154416666669649065141E17A146E723154418FC2F5884B065141D7A370ED743154413D0AD7934B06514114AE472177315441713D0A074B065141A4703D4A793154419A99990949065141295C8F527B315441A4703DCA4B06514185EB51987C31544105000000295C8F526A06514148E17AF4543154418FC2F5886A065141713D0A9755315441000000B069065141D7A370CD553154419A99997969065141AE47E12A55315441295C8F526A06514148E17AF4543154410103000000010000002200000085EB515860065141B81E850BA631544148E17AD460065141295C8FD2A4315441333333C35E065141000000C0A23154410AD7A3C06006514166666656A0315441D7A3705D5D065141666666B69D31544133333303570651417B14AE779B315441CDCCCCEC4906514185EB51C897315441A4703D2A44065141295C8F229E315441D7A3700D3D06514185EB51F8A53154419A9999A939065141F6285CEFA83154411F85EB71360651417B14AE17AB31544152B81E9534065141713D0A47B1315441AE47E17A330651418FC2F5B8B5315441A4703D5A330651413D0AD7F3B63154413D0AD7A33506514152B81EF5B9315441713D0AD73C065141295C8F12C13154419A9999093706514152B81E65D231544114AE47213A065141B81E850BD43154418FC2F5A83E065141F6285C3FD6315441D7A3709D43065141713D0A07D83154417B14AE7748065141E17A14EED83154415C8FC2A54A0651419A999909D4315441000000504D0651415C8FC2A5CE3154413333335350065141713D0A07C93154419A999999510651411F85EB71C63154410000001050065141333333C3C43154416666662651065141000000F0C1315441333333E35206514166666606C0315441666666D6530651419A9999E9C13154411F85EB3155065141A4703D2ABF3154418FC2F53858065141CDCCCCBCB8315441C3F528BC5B065141D7A3701DB23154415C8FC2655E0651417B14AED7AC31544185EB515860065141B81E850BA63154410103000000010000001D000000A4703D4A9406514152B81EF54B315441295C8FA2920651418FC2F5E8493154415C8FC20594065141C3F528FC47315441D7A3706D8E065141713D0A17443154411F85EB718706514152B81EF53D3154410AD7A3E084065141EC51B8DE3F3154415C8FC2E57E0651413D0AD793463154411F85EB417C065141CDCCCC0C493154411F85EB017A0651415C8FC2054B315441713D0AB7770651419A9999294B315441AE47E18A7A06514148E17AD44B315441295C8F927B065141C3F5282C4C3154411F85EB317D06514114AE47314C31544148E17AF4800651411F85EB714D315441EC51B8BE8206514148E17A344E31544148E17A348506514114AE47814F315441713D0A6786065141713D0A1750315441E17A147E8706514148E17A5450315441B81E85BB880651411F85EB5150315441EC51B89E890651410000005050315441B81E85BB8A065141D7A3704D503154417B14AE378C065141A4703D3A50315441D7A370DD8D065141CDCCCCBC4F3154418FC2F5F88E065141713D0A374F31544148E17A14900651410AD7A3904E3154418FC2F568910651413D0AD7A34D3154413D0AD7C392065141D7A370ED4C3154415C8FC2959306514185EB51584C315441A4703D4A9406514152B81EF54B315441010300000001000000210000009A9999594A06514133333353953154417B14AE474B0651418FC2F59896315441333333C34C065141C3F528DC9431544148E17A544E0651418FC2F5C892315441295C8F224F0651418FC2F578913154413D0AD7634F0651413D0AD733903154418FC2F5584F0651413D0AD7E38E31544114AE47E14E065141333333938D315441E17A14FE4D065141713D0AD78B315441E17A14CE4C065141F6285CEF89315441A4703DCA4B06514114AE47D18731544152B81EF54B0651419A9999098631544114AE47414C06514148E17AC48431544152B81E254D06514185EB5128833154419A9999494E0651417B14AEB781315441E17A146E4F0651417B14AE6780315441713D0A9751065141B81E85AB7E3154417B14AE174F0651419A9999497E3154415C8FC2454D065141D7A370DD7D315441AE47E1BA4A065141E17A14CE7C315441D7A370BD48065141AE47E1EA7B315441B81E850B470651411F85EBB17D31544100000090450651417B14AE67803154419A9999894606514152B81E458231544133333383470651410AD7A3E083315441EC51B8FE480651418FC2F538873154419A9999594A065141295C8FE286315441C3F528FC4A065141CDCCCC6C893154410AD7A3C048065141B81E853B8A3154413D0AD73349065141295C8FC28B31544114AE47A149065141A4703DEA8D315441F6285C6F4A065141F6285CFF923154419A9999594A06514133333353953154410103000000020000001F00000085EB51E8630651413D0AD793C73154410AD7A3C0640651417B14AEB7C13154419A999909640651415C8FC2F5BE315441C3F5289C6306514185EB5188BC3154410AD7A3C0630651411F85EBD1BA3154413D0AD7836406514133333303B9315441AE47E16A65065141666666C6B7315441F6285C8F66065141D7A3707DB6315441713D0A77670651413D0AD703B531544114AE47516B065141CDCCCC4CB53154418FC2F5687006514100000040B73154416666663677065141C3F5284CB93154418FC2F5687B065141CDCCCC9CBA315441E17A14BE7D0651415C8FC285B531544152B81EA57F0651415C8FC2A5B0315441F6285C5F7B065141A4703DAAAE315441F6285C6F78065141C3F5284CAD315441AE47E19A740651413D0AD7C3AB3154418FC2F56872065141E17A144EAB31544185EB51586E0651410AD7A370AB315441295C8FE26B06514185EB51A8AA315441EC51B84E690651410AD7A330A9315441B81E853B67065141D7A370FDA73154417B14AEB7630651417B14AE97A6315441295C8F82600651419A9999F9B231544152B81E755E0651410AD7A370BC315441AE47E1AA5A065141713D0AF7C7315441AE47E12A60065141AE47E12ACB315441CDCCCC1C60065141C3F528FCC731544152B81E85600651417B14AE57C731544185EB51E8630651413D0AD793C731544105000000713D0A776F0651411F85EB51B331544185EB51A86F06514152B81E35B2315441E17A149E700651415C8FC265B23154413333336370065141CDCCCC8CB3315441713D0A776F0651411F85EB51B3315441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B331544152B81EA57F0651415C8FC2A5B03154415C8FC27580065141CDCCCC5CAF315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499110 - 364997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000006000000010300000002000000CD0000000AD7A33081065141B81E85BBAF315441CDCCCCAC890651411F85EB01B3315441EC51B81E96065141B81E859BB831544114AE47F1A40651415C8FC225C0315441F6285C7FB0065141B81E852BC631544152B81EB5B5065141A4703DDAC1315441713D0AE7B60651415C8FC225C1315441295C8FF2B70651417B14AE17C03154417B14AE67BA06514166666606BE315441D7A370EDC0065141B81E85DBB831544100000010C40651410AD7A330B631544185EB5188CC065141E17A146EB0315441295C8FE2D0065141B81E85FBAB315441713D0AE7D10651418FC2F5C8AA315441B81E856BD70651418FC2F5F8A53154411F85EBE1D7065141713D0A97A0315441D7A370DDD6065141B81E852B9B31544148E17A04D6065141CDCCCC9C97315441B81E857BD6065141EC51B82E9431544148E17AB4D406514152B81E458F315441E17A145ED406514185EB51188C3154410AD7A3D0D30651419A9999D98931544185EB51E8D206514148E17A4485315441295C8FC2CD06514185EB5128833154418FC2F578CB0651410AD7A34081315441B81E85ABC5065141F6285C5F7E31544148E17A44C1065141AE47E10A7C31544166666626BF065141CDCCCC9C78315441295C8F12C20651415C8FC2D576315441D7A3707DC3065141A4703D8A76315441A4703DAAC3065141EC51B8CE7531544185EB51E8C30651419A99994975315441F6285C3FC4065141333333937431544185EB5128C40651410AD7A3D072315441713D0A97C3065141F6285CDF70315441295C8F02C306514114AE4771703154410AD7A320C1065141AE47E19A6F315441C3F5286CC0065141D7A3703D6F31544114AE47E1BF065141B81E85DB6E315441E17A149EBF0651411F85EB016E315441A4703D5ABF065141AE47E1FA6C3154415C8FC255BF065141000000106C315441AE47E17ABF0651418FC2F5786931544148E17A74BF065141A4703DFA67315441666666E6BE06514166666686653154410AD7A380BE0651419A9999296431544185EB51F8BD06514148E17AF46231544148E17AC4BD065141AE47E11A62315441C3F528ACBD065141295C8F7260315441C3F5288CBC065141A4703D7A5F315441C3F5284CBB065141C3F5288C5E3154417B14AE87BA0651415C8FC2255E31544185EB5158B90651413D0AD7335D315441EC51B8DEB70651410AD7A3405C315441A4703DBAB2065141F6285C3F5A3154417B14AEF7AE065141295C8F525831544148E17AF4A90651411F85EB6154315441295C8F22A70651413333335352315441EC51B8CEA10651413D0AD7434D315441000000709C06514185EB51484C3154418FC2F51898065141D7A3705D4A31544148E17A74950651413D0AD7534C3154415C8FC2E592065141A4703DFA4D3154415C8FC25590065141713D0A674F315441EC51B8DE8D0651416666668650315441F6285CAF8B065141EC51B8DE50315441C3F5289C8806514152B81EE550315441AE47E12A87065141F6285CAF50315441C3F528AC8706514152B81E4551315441EC51B8AE92065141333333D3593154413D0AD71399065141333333F35E315441666666D69E0651410AD7A39063315441666666C6A2065141D7A3709D663154418FC2F538A7065141666666166A31544148E17A54AB0651410AD7A3D06D315441F6285C9FB0065141EC51B8DE7331544166666616B606514152B81EA57A315441713D0A57B6065141D7A3705D7B31544166666636B60651411F85EB617C31544152B81ED5B506514148E17A047D315441295C8F32B5065141C3F5289C7D315441EC51B84EB40651419A9999497E31544166666646B2065141E17A144E7F31544114AE47B1AF0651413D0AD7B380315441E17A146EAC06514114AE47B182315441713D0A27A80651417B14AE878531544152B81E55A6065141295C8FE286315441E17A14AEA40651418FC2F56888315441000000C0A3065141D7A3708D89315441D7A3701DA30651417B14AEC78A3154415C8FC2A5A2065141E17A144E8C315441A4703D5AA20651417B14AE978E31544100000090A2065141A4703D0A93315441AE47E19AA20651413D0AD7739531544152B81E65A20651419A9999D9963154418FC2F518A20651417B14AEA797315441713D0AB7A1065141000000609831544148E17A14A1065141A4703D7A99315441EC51B88E9F065141B81E852B9B315441333333E39C0651419A9999499D31544152B81EC59A0651415C8FC2E59E3154418FC2F5589A0651418FC2F5789E3154419A9999699E065141CDCCCC6C9B31544166666626A00651410AD7A3D09931544148E17AF4A006514114AE47A1983154411F85EBC1A1065141F6285CEF9631544133333303A206514148E17A94953154417B14AED7A10651411F85EB21913154417B14AED7A1065141A4703DEA8D31544133333303A2065141EC51B86E8C315441A4703D5AA206514148E17A348B315441CDCCCCFCA2065141A4703DFA89315441000000E0A306514148E17A948831544152B81E05A50651413D0AD74387315441B81E85ABA60651418FC2F5E8853154417B14AEE7AA0651417B14AE078331544148E17A74B006514148E17AA47F315441E17A142EB4065141713D0AA77D3154417B14AE27B5065141E17A14CE7C315441E17A147EB506514152B81ED57B315441E17A145EB50651415C8FC2C57A31544185EB51C8B20651411F85EB417731544185EB5158AC065141D7A370AD6F315441713D0A57A90651415C8FC2956C3154418FC2F568A4065141CDCCCC9C68315441A4703DBAA206514133333323673154410AD7A39095065141A4703DCA5C315441333333138B0651410AD7A3E054315441AE47E14A850651419A99996950315441AE47E1BA83065141A4703D6A4F3154410AD7A3907F065141B81E85AB4D315441C3F528BC7A06514152B81EC54C31544152B81E757A0651419A9999294D3154413333330376065141CDCCCC9C4C315441B81E858B75065141A4703DEA4F315441F6285CAF7606514185EB516850315441AE47E19A76065141A4703D8A52315441A4703D8A72065141C3F5289C5131544148E17AD47206514185EB5188543154418FC2F5C8720651419A9999E9543154410AD7A3D076065141CDCCCCFC56315441713D0AB775065141713D0A8759315441A4703DBA72065141EC51B81E58315441713D0A97720651417B14AE9758315441F6285CFF71065141B81E85CB5A315441CDCCCC3C7106514185EB51185C3154419A99994970065141C3F5281C5D315441B81E85BB6E065141A4703D1A5E315441713D0AF76D06514152B81E255E315441666666366B065141AE47E18A5F315441EC51B81E68065141333333936131544152B81EB565065141A4703D5A633154417B14AE876206514185EB51A86631544148E17AA461065141295C8FE2673154417B14AED76306514148E17A9469315441666666666706514185EB51E86B3154418FC2F53869065141E17A144E6D315441295C8F826B065141B81E854B6F315441EC51B88E6E0651417B14AE37723154413D0AD753720651413D0AD723753154418FC2F538760651413D0AD7A377315441B81E853B740651411F85EB91783154418FC2F5D86B0651415C8FC2B571315441B81E85BB640651419A9999296C315441A4703D8A6006514185EB514869315441A4703D3A5F06514185EB51986A3154415C8FC2155E065141B81E85AB6C315441F6285C8F5C0651410AD7A3206F315441AE47E18A5B0651413D0AD73371315441CDCCCCBC5A0651411F85EB5173315441F6285C0F5A06514148E17A44753154410AD7A30059065141A4703DFA77315441EC51B84E57065141F6285C6F7A31544185EB51C8550651415C8FC2157C315441C3F5280C5406514114AE47917D315441F6285C2F52065141666666D67E315441D7A3707D500651411F85EB5180315441E17A144E4F06514114AE476181315441333333F34D065141295C8F128331544148E17A044D06514185EB517884315441CDCCCC6C4C0651410000004086315441295C8F824C065141AE47E19A87315441A4703D1A4D0651411F85EB4189315441B81E85AB4E065141B81E85AB8B315441E17A146E4F06514185EB51688D3154410AD7A3F04F0651418FC2F5F88E3154415C8FC2E54F065141AE47E1AA903154418FC2F5784F0651415C8FC205923154415C8FC2954E065141B81E856B9331544148E17AB44B065141AE47E11A973154415C8FC235510651415C8FC27598315441D7A3703D580651419A9999A99A315441CDCCCC8C5E0651417B14AEC79C315441B81E859B5F06514152B81EF59A315441E17A146E6106514148E17AB49A315441666666C6640651418FC2F5D89B3154410AD7A3E065065141000000809D31544185EB516865065141C3F5289C9E315441CDCCCC5C66065141000000109F3154419A9999696E065141F6285C2FA43154411F85EB11770651410AD7A310AA315441CDCCCC7C7B065141C3F5281CAD315441D7A370BD7E065141666666B6AE3154415C8FC27580065141CDCCCC5CAF3154410AD7A33081065141B81E85BBAF3154410B000000C3F5289C9806514148E17AE4A8315441A4703D6A99065141B81E852BAD315441B81E85AB99065141E17A141EAF3154419A999929990651417B14AE67B1315441666666E6950651418FC2F578B0315441B81E853B930651410AD7A3C0AF315441AE47E11A93065141E17A14EEAD315441E17A14DE93065141A4703D9AAB315441E17A147E96065141E17A144EAB315441C3F5284C97065141333333A3A8315441C3F5289C9806514148E17AE4A83154410103000000020000003C000000A4703DCA4B06514185EB51987C315441EC51B83E4E0651410AD7A3707D3154413333339350065141295C8FD27D315441666666A652065141CDCCCCBC7D31544152B81EB55306514152B81E257D3154415C8FC22555065141000000E07B3154411F85EBC1560651413D0AD7437A3154413333335358065141B81E853B783154411F85EB6159065141713D0AE775315441A4703D1A5A0651418FC2F5C8733154417B14AEC75A0651415C8FC2B571315441B81E85AB5B065141E17A14CE6F3154413D0AD7635C065141333333936E3154417B14AE475D065141CDCCCCEC6C315441C3F5286C5E065141A4703DFA6A315441B81E853B6006514114AE47D1673154415C8FC2F56206514185EB51D8643154417B14AEB7650651410AD7A3306231544114AE476168065141E17A143E60315441666666B66A065141F6285CCF5E315441B81E85BB6D065141D7A370ED5C3154418FC2F5186F0651419A9999E95B315441C3F5282C700651419A9999A95A3154417B14AE9770065141C3F5285C593154415C8FC20571065141C3F5286C57315441B81E859B71065141F6285C7F52315441F6285CFF6F065141C3F5288C55315441000000306C065141A4703DBA53315441C3F5284C6B065141713D0AF7523154417B14AE976A0651410AD7A3305231544152B81E6568065141713D0AF751315441F6285CEF66065141713D0AC7513154415C8FC2F5650651410AD7A370513154418FC2F5686506514114AE474150315441B81E850B66065141295C8F524F3154413333335365065141E17A144E4E31544148E17AE466065141D7A370BD4C31544114AE47D164065141713D0A074A3154417B14AE1764065141D7A3704D4A315441000000106306514114AE47A149315441CDCCCCAC60065141713D0A8746315441F6285CBF5E06514185EB51C84831544152B81E155D065141EC51B84E4B315441D7A3700D5C065141333333334D315441713D0A875706514152B81EE55131544148E17AA45106514152B81E15583154419A9999F94F065141C3F5283C5A315441B81E854B3C0651413D0AD7334C315441EC51B89E2D0651419A9999A95C31544152B81E65320651413D0AD7436031544185EB511835065141295C8F026331544148E17A6438065141B81E85DB66315441713D0A373B065141A4703D2A693154415C8FC285440651418FC2F518703154416666669649065141E17A146E723154418FC2F5884B065141D7A370ED743154413D0AD7934B06514114AE472177315441713D0A074B065141A4703D4A793154419A99990949065141295C8F527B315441A4703DCA4B06514185EB51987C31544105000000295C8F526A06514148E17AF4543154418FC2F5886A065141713D0A9755315441000000B069065141D7A370CD553154419A99997969065141AE47E12A55315441295C8F526A06514148E17AF4543154410103000000010000002200000085EB515860065141B81E850BA631544148E17AD460065141295C8FD2A4315441333333C35E065141000000C0A23154410AD7A3C06006514166666656A0315441D7A3705D5D065141666666B69D31544133333303570651417B14AE779B315441CDCCCCEC4906514185EB51C897315441A4703D2A44065141295C8F229E315441D7A3700D3D06514185EB51F8A53154419A9999A939065141F6285CEFA83154411F85EB71360651417B14AE17AB31544152B81E9534065141713D0A47B1315441AE47E17A330651418FC2F5B8B5315441A4703D5A330651413D0AD7F3B63154413D0AD7A33506514152B81EF5B9315441713D0AD73C065141295C8F12C13154419A9999093706514152B81E65D231544114AE47213A065141B81E850BD43154418FC2F5A83E065141F6285C3FD6315441D7A3709D43065141713D0A07D83154417B14AE7748065141E17A14EED83154415C8FC2A54A0651419A999909D4315441000000504D0651415C8FC2A5CE3154413333335350065141713D0A07C93154419A999999510651411F85EB71C63154410000001050065141333333C3C43154416666662651065141000000F0C1315441333333E35206514166666606C0315441666666D6530651419A9999E9C13154411F85EB3155065141A4703D2ABF3154418FC2F53858065141CDCCCCBCB8315441C3F528BC5B065141D7A3701DB23154415C8FC2655E0651417B14AED7AC31544185EB515860065141B81E850BA63154410103000000010000001D000000A4703D4A9406514152B81EF54B315441295C8FA2920651418FC2F5E8493154415C8FC20594065141C3F528FC47315441D7A3706D8E065141713D0A17443154411F85EB718706514152B81EF53D3154410AD7A3E084065141EC51B8DE3F3154415C8FC2E57E0651413D0AD793463154411F85EB417C065141CDCCCC0C493154411F85EB017A0651415C8FC2054B315441713D0AB7770651419A9999294B315441AE47E18A7A06514148E17AD44B315441295C8F927B065141C3F5282C4C3154411F85EB317D06514114AE47314C31544148E17AF4800651411F85EB714D315441EC51B8BE8206514148E17A344E31544148E17A348506514114AE47814F315441713D0A6786065141713D0A1750315441E17A147E8706514148E17A5450315441B81E85BB880651411F85EB5150315441EC51B89E890651410000005050315441B81E85BB8A065141D7A3704D503154417B14AE378C065141A4703D3A50315441D7A370DD8D065141CDCCCCBC4F3154418FC2F5F88E065141713D0A374F31544148E17A14900651410AD7A3904E3154418FC2F568910651413D0AD7A34D3154413D0AD7C392065141D7A370ED4C3154415C8FC2959306514185EB51584C315441A4703D4A9406514152B81EF54B315441010300000001000000210000009A9999594A06514133333353953154417B14AE474B0651418FC2F59896315441333333C34C065141C3F528DC9431544148E17A544E0651418FC2F5C892315441295C8F224F0651418FC2F578913154413D0AD7634F0651413D0AD733903154418FC2F5584F0651413D0AD7E38E31544114AE47E14E065141333333938D315441E17A14FE4D065141713D0AD78B315441E17A14CE4C065141F6285CEF89315441A4703DCA4B06514114AE47D18731544152B81EF54B0651419A9999098631544114AE47414C06514148E17AC48431544152B81E254D06514185EB5128833154419A9999494E0651417B14AEB781315441E17A146E4F0651417B14AE6780315441713D0A9751065141B81E85AB7E3154417B14AE174F0651419A9999497E3154415C8FC2454D065141D7A370DD7D315441AE47E1BA4A065141E17A14CE7C315441D7A370BD48065141AE47E1EA7B315441B81E850B470651411F85EBB17D31544100000090450651417B14AE67803154419A9999894606514152B81E458231544133333383470651410AD7A3E083315441EC51B8FE480651418FC2F538873154419A9999594A065141295C8FE286315441C3F528FC4A065141CDCCCC6C893154410AD7A3C048065141B81E853B8A3154413D0AD73349065141295C8FC28B31544114AE47A149065141A4703DEA8D315441F6285C6F4A065141F6285CFF923154419A9999594A06514133333353953154410103000000020000001F00000085EB51E8630651413D0AD793C73154410AD7A3C0640651417B14AEB7C13154419A999909640651415C8FC2F5BE315441C3F5289C6306514185EB5188BC3154410AD7A3C0630651411F85EBD1BA3154413D0AD7836406514133333303B9315441AE47E16A65065141666666C6B7315441F6285C8F66065141D7A3707DB6315441713D0A77670651413D0AD703B531544114AE47516B065141CDCCCC4CB53154418FC2F5687006514100000040B73154416666663677065141C3F5284CB93154418FC2F5687B065141CDCCCC9CBA315441E17A14BE7D0651415C8FC285B531544152B81EA57F0651415C8FC2A5B0315441F6285C5F7B065141A4703DAAAE315441F6285C6F78065141C3F5284CAD315441AE47E19A740651413D0AD7C3AB3154418FC2F56872065141E17A144EAB31544185EB51586E0651410AD7A370AB315441295C8FE26B06514185EB51A8AA315441EC51B84E690651410AD7A330A9315441B81E853B67065141D7A370FDA73154417B14AEB7630651417B14AE97A6315441295C8F82600651419A9999F9B231544152B81E755E0651410AD7A370BC315441AE47E1AA5A065141713D0AF7C7315441AE47E12A60065141AE47E12ACB315441CDCCCC1C60065141C3F528FCC731544152B81E85600651417B14AE57C731544185EB51E8630651413D0AD793C731544105000000713D0A776F0651411F85EB51B331544185EB51A86F06514152B81E35B2315441E17A149E700651415C8FC265B23154413333336370065141CDCCCC8CB3315441713D0A776F0651411F85EB51B3315441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B331544152B81EA57F0651415C8FC2A5B03154415C8FC27580065141CDCCCC5CAF315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>615477 - 43640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -715  </desc>
+<a>
+0106000000010000000103000000010000003C000000F6285C1F17FC50417B14AE4726F154418FC2F5A814FC5041295C8FA223F1544185EB512813FC50413333337322F15441C3F528DC11FC504152B81EE521F15441AE47E1AA10FC50413D0AD71321F1544114AE47C10BFC5041E17A145E24F154417B14AE0702FC5041EC51B88E27F1544114AE4721FEFB5041F6285C3F29F1544152B81EA5FAFB50411F85EBC12AF15441333333F3F9FB5041D7A370DD2FF1544152B81E35F6FB50410AD7A36035F15441E17A147EF3FB5041D7A3703D42F15441B81E85ABF9FB5041713D0AD744F15441EC51B83EFDFB50418FC2F55846F1544148E17A94FFFB5041000000204AF1544185EB51B8FFFB504114AE47914BF15441AE47E18A00FC50413D0AD70354F1544148E17A8400FC50410AD7A3905BF15441AE47E17A00FC5041000000705CF154413D0AD77300FC5041A4703D1A5DF154411F85EBF1FDFB5041D7A3705D5CF154418FC2F528FCFB5041E17A14FE5DF15441D7A3703DFBFB5041C3F528DC5DF1544148E17AA4F7FB5041E17A140E5BF154419A999919F4FB5041AE47E10A58F1544100000050F1FB504185EB513855F15441333333D3EFFB50410AD7A3A053F15441AE47E1CAECFB5041C3F5284C51F154418FC2F5D8EBFB5041666666E650F15441EC51B8DEE9FB5041000000B04DF1544114AE47F1E6FB5041713D0A474AF154413D0AD773E6FB504152B81EB549F1544152B81E35E5FB504185EB51C84CF1544114AE4791E2FB5041713D0AE753F15441C3F5281CE2FB50419A99996956F15441C3F5282CE2FB50410000001059F154415C8FC265E2FB5041CDCCCCBC5AF15441A4703D8AE2FB5041E17A146E5BF15441AE47E11AE4FB5041D7A370FD62F15441EC51B8CEE4FB50411F85EB6166F15441D7A3706DE5FB504152B81E7566F154417B14AE77F2FB5041713D0A0768F1544152B81EB500FC5041A4703DAA68F154417B14AE9700FC5041A4703D5A65F154419A99995911FC504148E17AB460F15441CDCCCCBC17FC5041A4703D5A59F154410AD7A3D01DFC5041C3F5286C54F15441E17A146E1EFC5041295C8F224AF15441F6285CAF1DFC5041D7A370AD43F15441F6285C2F1DFC50413D0AD71340F154417B14AE171DFC504114AE47913CF154415C8FC2C51CFC50417B14AE4737F154417B14AE171DFC504114AE475134F154413D0AD7A31DFC5041A4703D8A32F15441000000B01EFC504148E17A1430F1544185EB51181EFC5041AE47E17A2DF15441E17A142E1CFC50411F85EB912CF15441E17A14FE19FC5041AE47E14A2BF15441333333C318FC5041295C8F3229F15441F6285C1F17FC50417B14AE4726F15441
+</a>
+
+<b>
+0106000000010000000103000000010000004D0000000AD7A3D01DFC5041C3F5286C54F15441FF9502531AFC5041C52743945AF15441D4F136DB18FC5041D5B4E7215DF154411058392C17FC5041DF4F8D0F60F1544169A5F5A011FC5041E4A85C4F61F154413F8817A40EFC504154A1B6FB61F15441F09988F30CFC5041F1152F5D62F154411F5CC03208FC504147175E6F63F15441E436EDDF04FC5041AD90162F64F15441A0BCD7FA01FC5041165DBDF764F154418A93AE2501FC5041367EDB3265F1544152B81EB500FC5041A4703DAA68F154413D0AD76300FC50412DB29DBF69F15441B0D030A1FEFB5041DEE4297F69F15441A3223BCAFBFB5041506E311769F1544130FC0EDBF9FB50413F7C5FD068F15441437FAEE1F7FB50419FEB178868F154419490B837F5FB504125068F2668F154417B14AE77F2FB5041713D0A0768F154418D139A2FE8FB5041FE1924CA66F15441673F268EE6FB50419958E19766F154415A7CBA07E6FB50415136B28766F15441ABBDD69AE7FB5041951D80C86AF15441D1A8A6EBE8FB5041BF38F4AF6EF15441120054BCE9FB5041AD4B090171F1544180071081F4FB5041E8260E437FF15441DA2AE3FEF9FB5041B8DBAC1C86F1544177722CCCFBFB5041DFF38D1988F1544126E56BE701FC5041DF8BBB1090F1544183240D760FFC504129FA88A99AF15441AB7AF91118FC5041AE169380A5F1544133A846841BFC50413E1A6231AAF15441F481354C1DFC5041317F8257ACF154417B14AEC720FC50411F85EB11ABF1544148E17AB42AFC50413D0AD7B3A5F1544114AE472132FC504166666646A2F15441C3F528FC30FC50413D0AD7739FF15441713D0A5730FC50411F85EB719DF154415C8FC2A530FC50411F85EBE19AF154410000007030FC50415C8FC27599F154410000007030FC504114AE477197F154419A9999A930FC5041E17A141E96F15441713D0A1731FC504114AE471195F15441295C8FB231FC5041D7A370CD93F154413AEC305932FC50410A3844D892F15441EAB6FB0933FC50410B3B5C9C90F15441E17A14FE32FC50415C8FC2658DF154410000001033FC50416666668688F154416B40D4FC31FC50413D09953586F15441C976BE972DFC5041F853E3A583F15441BA490C0A2CFC50412FDD24BE7DF15441B29DEFF72CFC504179E926197CF15441E80E2FE22FFC50416F51704C79F154410000002030FC5041333333C378F154417B14AED730FC504185EB517876F154419C975A3D32FC504107BEF61D75F1544114D12F5532FC5041410E4DF174F154418EB040E233FC5041384B571372F15441370F6DB833FC50411236D61F72F154411356068633FC50414FEAE42E72F15441333333532DFC50418FC2F50874F15441A4703D1A2CFC5041713D0A176FF15441CDCCCC4C34FC5041C3F5281C6EF15441A08E318632FC50413037361867F1544178ED541232FC5041643EB84765F15441666666562FFC50419A9999F960F154412C81180B2FFC5041BA7FB22560F1544118C7E3872EFC50417FEFC6A95FF1544119E9547F2DFC50414F16548F5EF15441E3F91DC52CFC5041F6F7AB6E5DF154413C65F0CF2AFC50410C63995B5AF15441ED0F581529FC50417C2887A457F1544181081FA828FC504110E6FFF856F1544183C0CA5926FC50411F85EB5953F154415029345023FC5041843E96BE51F15441C3F5284C22FC504152B81E2552F154410AD7A3D01DFC5041C3F5286C54F15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616482 - 51566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000025000000A4703D5ACE055141F6285CFF484754415C8FC265D1055141D7A3702D4147544152B81E05D5055141713D0A673C47544114AE47A1D905514152B81E853947544100000040E4055141666666E635475441C3F5284CE705514166666616344754411F85EB41F1055141F6285C5F2A475441A4703DFAEC0551419A9999C9234754417B14AE57EA055141666666961F4754415C8FC245E9055141666666361C475441B81E851BE9055141295C8FE21447544148E17A94EA0551418FC2F50807475441CDCCCC9CE9055141B81E856B04475441713D0A97E8055141B81E858B02475441666666D6E4055141295C8F02014754413D0AD743DF055141F6285C9FFE4654410AD7A3C0B7055141B81E85FBEB465441E17A14FE99055141666666B63E47544148E17AC4970551411F85EB01464754411F85EB0197055141D7A3700D4947544148E17AC495055141AE47E1FA4F47544114AE47B194055141E17A149E594754413D0AD7D397055141A4703DFA58475441C3F528DC9A0551411F85EB01584754413D0AD7039D0551411F85EB515747544152B81E959F05514114AE47D1684754419A9999D9A1055141F6285C3F78475441EC51B8DEA3055141713D0AB77447544114AE4781A6055141E17A140E744754415C8FC295AD0551419A99995970475441B81E859BB2055141295C8FA26D475441AE47E16AB40551419A9999F96C475441B81E852BBB055141E17A141E6847544166666676BE055141A4703DFA654754419A999939C4055141C3F5281C5B475441B81E85ABC80551417B14AE7752475441A4703D5ACE055141F6285CFF48475441
+</a>
+
+<b>
+010600000001000000010300000001000000600000001553D43DF1055141F7FE10592A475441B0E6B500EB05514126A92E7930475441C542FF46E7055141F67A7819344754416FE74A63E405514186E468D135475441FD7D286BE20551412A5E368636475441A204FA68D9055141BD2A53A83947544157222CFED40551410BAF32703C475441C0A1F844D30551410D7CC4B53E47544191508F77D1055141D826FA154147544158AB8BBDCE0551419F335400484754417D0F972ECE055141B47C1A48494754410B7921D1C9055141702E5F8E50475441BF0F5D26C505514177EAD04F5947544166666676BE055141A4703DFA65475441ABDBEE80BB055141949490E667475441E56031A6B8055141D1F84DEE69475441D2F5249FB40551411CC000D46C47544152DE32FFB2055141B08B367E6D4754419CD74209AF0551412E52C7906F475441B8DDD748A9055141DE20B799724754417ACFB8AAA605514107AB64F873475441BF8E5C18A4055141352E9AA87447544135414D68A3055141CED0D71973475441B12B321F9C0551415ED0969D614754411B63F7149A0551410C72208C4F47544181D647F3A1055141DB172FF137475441D6CB25809C0551416C2A83BD37475441E17A14FE99055141666666B63E475441D80E8BFF98055141724EE4BC3D47544195DAD1869805514188286F273F47544121A4FE03980551414E0150B040475441E15CC284970551418637692E424754413B10B63D97055141780DD412434754415B4B1B14960551416E7BD31047475441D3EA526395055141C87BE96F494754419B8DB1A6940551414A90E6D04C4754416DEB1F4E940551418D06F6694E4754416D5BD82994055141DC2885114F475441325AAA1094055141960B7BA74F475441E323248493055141A47310FE524754419749B35F9305514137F781D454475441CD25E72C93055141E9772F78574754419F86E30293055141ED62CABC59475441B20C190093055141A6EE5BE359475441488B925393055141EC9227E559475441F6C88DA293055141F0015F895A475441208CF30194055141F63CB84F5B47544157C47416950551418A6C9F8E5D47544114D378E0950551419665A6325F4754411A31837B970551413EEA468962475441CAE0B98298055141BBE80A5C64475441D58B4C199A055141C0D70C27674754415DD1C5549B0551417488C850694754410CE83C399D0551410AB5C09B6C4754412C4B74339E0551419FD413506E475441B4EA429A9E055141A05CC12D6F4754415B1A58C99F0551416C0B47BB7147544176A84C88A0055141C1748E5973475441D59B1552A10551410B751A127547544104AF4E69A105514147AC394375475441D257EEC9A20551415A42751E7847544164CDFCE6A50551411B515DA477475441BB178643A8055141FDDCC9FD76475441EEC6E03AAB0551419A7A38F6754754410FF9F64FAC0551419C960B96754754412CB3F8F2AC055141DB4AE16175475441A53A3415AD055141C48B1B94754754418C163CB5AD0551419F42D53075475441715F28E8B00551417E188136734754416492AD2FB40551417EFB723671475441C01A6472B5055141DA31E884704754414D9BC6FEB80551415547AC0E6F47544145C9ADA4BB055141DEBB31096E475441CDB9E45AC0055141174B01D669475441193A3C93C205514159E65FBC66475441404F819DC5055141CE04F7AC614754413D98871DC8055141F7E41C605C475441D9BE9C74CC055141FAAFFD0854475441040FA8F4D00551417F690E654A475441A7F3D650D3055141E72D997E444754418BC03C29D4055141EEFE79EE42475441C5A0CF79D4055141D998C63142475441A535BD4BD5055141DF8366A240475441000901D6D7055141D2EE93553E4754414655B21DD90551417E839CAC3D4754412E1006D6D9055141E606BA313D475441CDC08E41DB05514187755CA23C47544162C85D37E005514169C143F43A4754415AD69D41E105514128A9389D3A475441DC4FBA6FE40551417BD969D039475441B334CE46E805514170783D7438475441E76F7937EB0551417B63DDE436475441045F585BEE055141A7B98F8334475441BC8F5384F005514113F4A68831475441946D47D6F30551417AF3F7172D4754411553D43DF1055141F7FE10592A475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616482 - 85289
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000025000000A4703D5ACE055141F6285CFF484754415C8FC265D1055141D7A3702D4147544152B81E05D5055141713D0A673C47544114AE47A1D905514152B81E853947544100000040E4055141666666E635475441C3F5284CE705514166666616344754411F85EB41F1055141F6285C5F2A475441A4703DFAEC0551419A9999C9234754417B14AE57EA055141666666961F4754415C8FC245E9055141666666361C475441B81E851BE9055141295C8FE21447544148E17A94EA0551418FC2F50807475441CDCCCC9CE9055141B81E856B04475441713D0A97E8055141B81E858B02475441666666D6E4055141295C8F02014754413D0AD743DF055141F6285C9FFE4654410AD7A3C0B7055141B81E85FBEB465441E17A14FE99055141666666B63E47544148E17AC4970551411F85EB01464754411F85EB0197055141D7A3700D4947544148E17AC495055141AE47E1FA4F47544114AE47B194055141E17A149E594754413D0AD7D397055141A4703DFA58475441C3F528DC9A0551411F85EB01584754413D0AD7039D0551411F85EB515747544152B81E959F05514114AE47D1684754419A9999D9A1055141F6285C3F78475441EC51B8DEA3055141713D0AB77447544114AE4781A6055141E17A140E744754415C8FC295AD0551419A99995970475441B81E859BB2055141295C8FA26D475441AE47E16AB40551419A9999F96C475441B81E852BBB055141E17A141E6847544166666676BE055141A4703DFA654754419A999939C4055141C3F5281C5B475441B81E85ABC80551417B14AE7752475441A4703D5ACE055141F6285CFF48475441
+</a>
+
+<b>
+010600000001000000010300000001000000600000001553D43DF1055141F7FE10592A475441B0E6B500EB05514126A92E7930475441C542FF46E7055141F67A7819344754416FE74A63E405514186E468D135475441FD7D286BE20551412A5E368636475441A204FA68D9055141BD2A53A83947544157222CFED40551410BAF32703C475441C0A1F844D30551410D7CC4B53E47544191508F77D1055141D826FA154147544158AB8BBDCE0551419F335400484754417D0F972ECE055141B47C1A48494754410B7921D1C9055141702E5F8E50475441BF0F5D26C505514177EAD04F5947544166666676BE055141A4703DFA65475441ABDBEE80BB055141949490E667475441E56031A6B8055141D1F84DEE69475441D2F5249FB40551411CC000D46C47544152DE32FFB2055141B08B367E6D4754419CD74209AF0551412E52C7906F475441B8DDD748A9055141DE20B799724754417ACFB8AAA605514107AB64F873475441BF8E5C18A4055141352E9AA87447544135414D68A3055141CED0D71973475441B12B321F9C0551415ED0969D614754411B63F7149A0551410C72208C4F47544181D647F3A1055141DB172FF137475441D6CB25809C0551416C2A83BD37475441E17A14FE99055141666666B63E475441D80E8BFF98055141724EE4BC3D47544195DAD1869805514188286F273F47544121A4FE03980551414E0150B040475441E15CC284970551418637692E424754413B10B63D97055141780DD412434754415B4B1B14960551416E7BD31047475441D3EA526395055141C87BE96F494754419B8DB1A6940551414A90E6D04C4754416DEB1F4E940551418D06F6694E4754416D5BD82994055141DC2885114F475441325AAA1094055141960B7BA74F475441E323248493055141A47310FE524754419749B35F9305514137F781D454475441CD25E72C93055141E9772F78574754419F86E30293055141ED62CABC59475441B20C190093055141A6EE5BE359475441488B925393055141EC9227E559475441F6C88DA293055141F0015F895A475441208CF30194055141F63CB84F5B47544157C47416950551418A6C9F8E5D47544114D378E0950551419665A6325F4754411A31837B970551413EEA468962475441CAE0B98298055141BBE80A5C64475441D58B4C199A055141C0D70C27674754415DD1C5549B0551417488C850694754410CE83C399D0551410AB5C09B6C4754412C4B74339E0551419FD413506E475441B4EA429A9E055141A05CC12D6F4754415B1A58C99F0551416C0B47BB7147544176A84C88A0055141C1748E5973475441D59B1552A10551410B751A127547544104AF4E69A105514147AC394375475441D257EEC9A20551415A42751E7847544164CDFCE6A50551411B515DA477475441BB178643A8055141FDDCC9FD76475441EEC6E03AAB0551419A7A38F6754754410FF9F64FAC0551419C960B96754754412CB3F8F2AC055141DB4AE16175475441A53A3415AD055141C48B1B94754754418C163CB5AD0551419F42D53075475441715F28E8B00551417E188136734754416492AD2FB40551417EFB723671475441C01A6472B5055141DA31E884704754414D9BC6FEB80551415547AC0E6F47544145C9ADA4BB055141DEBB31096E475441CDB9E45AC0055141174B01D669475441193A3C93C205514159E65FBC66475441404F819DC5055141CE04F7AC614754413D98871DC8055141F7E41C605C475441D9BE9C74CC055141FAAFFD0854475441040FA8F4D00551417F690E654A475441A7F3D650D3055141E72D997E444754418BC03C29D4055141EEFE79EE42475441C5A0CF79D4055141D998C63142475441A535BD4BD5055141DF8366A240475441000901D6D7055141D2EE93553E4754414655B21DD90551417E839CAC3D4754412E1006D6D9055141E606BA313D475441CDC08E41DB05514187755CA23C47544162C85D37E005514169C143F43A4754415AD69D41E105514128A9389D3A475441DC4FBA6FE40551417BD969D039475441B334CE46E805514170783D7438475441E76F7937EB0551417B63DDE436475441045F585BEE055141A7B98F8334475441BC8F5384F005514113F4A68831475441946D47D6F30551417AF3F7172D4754411553D43DF1055141F7FE10592A475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617303 - 234645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DFAB6FC50415C8FC295C133544133333303B7FC5041EC51B84EC333544152B81E05B9FC5041D7A3708DC33354419A999919BAFC50413D0AD773C4335441A4703DEABFFC504152B81E55C4335441E17A140EC1FC504114AE4721C63354411F85EBB1C0FC5041AE47E1AAC93354415C8FC2E5BEFC5041295C8FF2C833544166666656BDFC5041CDCCCC6CCC33544152B81EF5BBFC50418FC2F548CB335441295C8FC2BAFC504185EB5158CB335441AE47E17ABBFC5041AE47E11ACE33544166666666BAFC50419A9999A9CF3354413D0AD723B9FC5041295C8F52D03354415C8FC255B7FC5041F6285C9FD03354415C8FC2B5B7FC504133333303DC335441F6285C8FB9FC5041713D0A27DD33544148E17AF4C2FC5041A4703D1AE433544185EB51B8CCFC5041295C8FB2E7335441A4703DAACBFC504114AE4721DF33544148E17AD4C7FC5041D7A3708DDC335441295C8F92C3FC5041D7A3707DDF33544185EB5198C1FC50419A9999F9D933544114AE47C1C0FC504166666656D4335441EC51B86EC2FC504114AE47F1CE335441A4703DBAC8FC504166666676CE335441295C8FF2C6FC5041C3F5286CC13354418FC2F5F8C2FC50418FC2F508C133544185EB5198C1FC5041A4703DDAC3335441F6285CEFC0FC5041295C8F12C3335441F6285CEFC0FC50411F85EBB1C1335441D7A370EDBFFC50417B14AE57C1335441B81E85FBB6FC504185EB5118C1335441A4703DFAB6FC50415C8FC295C1335441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000406C867EC1FC5041A020AB7EC5335441979190C1C0FC5041DE1EF04ECA335441A49E5557C1FC504157B0F430D0335441AF367C6AC1FC5041A01F1973D0335441D5FCC08BC2FC5041A7B71A0ED0335441519F87ADC4FC50412EA301A4CF33544183691851C6FC50418CD20886CF335441CCD7FE5EC7FC50413C7E3581CF3354419ABD039DC8FC5041E0D3E20FCF3354414D35AB07C9FC5041D0E62374CE335441186532B4C8FC5041BCFD204ACE335441C439302CC8FC50415C8FC065CA3354410CC15A34C8FC5041E5480486C83354411E7B2CFCC6FC50417EBE96B2C1335441A0615EEFC3FC504139AE2FE7C13354416E4E6398C2FC50412E607CCEC133544185EB5198C1FC5041A4703DDAC3335441F6285CEFC0FC5041295C8F12C3335441F6285CEFC0FC50411F85EBB1C1335441DB9AB6F2BFFC504175668659C13354414813AC31C0FC5041C736DC42C4335441406C867EC1FC5041A020AB7EC5335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617303 - 387428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DFAB6FC50415C8FC295C133544133333303B7FC5041EC51B84EC333544152B81E05B9FC5041D7A3708DC33354419A999919BAFC50413D0AD773C4335441A4703DEABFFC504152B81E55C4335441E17A140EC1FC504114AE4721C63354411F85EBB1C0FC5041AE47E1AAC93354415C8FC2E5BEFC5041295C8FF2C833544166666656BDFC5041CDCCCC6CCC33544152B81EF5BBFC50418FC2F548CB335441295C8FC2BAFC504185EB5158CB335441AE47E17ABBFC5041AE47E11ACE33544166666666BAFC50419A9999A9CF3354413D0AD723B9FC5041295C8F52D03354415C8FC255B7FC5041F6285C9FD03354415C8FC2B5B7FC504133333303DC335441F6285C8FB9FC5041713D0A27DD33544148E17AF4C2FC5041A4703D1AE433544185EB51B8CCFC5041295C8FB2E7335441A4703DAACBFC504114AE4721DF33544148E17AD4C7FC5041D7A3708DDC335441295C8F92C3FC5041D7A3707DDF33544185EB5198C1FC50419A9999F9D933544114AE47C1C0FC504166666656D4335441EC51B86EC2FC504114AE47F1CE335441A4703DBAC8FC504166666676CE335441295C8FF2C6FC5041C3F5286CC13354418FC2F5F8C2FC50418FC2F508C133544185EB5198C1FC5041A4703DDAC3335441F6285CEFC0FC5041295C8F12C3335441F6285CEFC0FC50411F85EBB1C1335441D7A370EDBFFC50417B14AE57C1335441B81E85FBB6FC504185EB5118C1335441A4703DFAB6FC50415C8FC295C1335441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000406C867EC1FC5041A020AB7EC5335441979190C1C0FC5041DE1EF04ECA335441A49E5557C1FC504157B0F430D0335441AF367C6AC1FC5041A01F1973D0335441D5FCC08BC2FC5041A7B71A0ED0335441519F87ADC4FC50412EA301A4CF33544183691851C6FC50418CD20886CF335441CCD7FE5EC7FC50413C7E3581CF3354419ABD039DC8FC5041E0D3E20FCF3354414D35AB07C9FC5041D0E62374CE335441186532B4C8FC5041BCFD204ACE335441C439302CC8FC50415C8FC065CA3354410CC15A34C8FC5041E5480486C83354411E7B2CFCC6FC50417EBE96B2C1335441A0615EEFC3FC504139AE2FE7C13354416E4E6398C2FC50412E607CCEC133544185EB5198C1FC5041A4703DDAC3335441F6285CEFC0FC5041295C8F12C3335441F6285CEFC0FC50411F85EBB1C1335441DB9AB6F2BFFC504175668659C13354414813AC31C0FC5041C736DC42C4335441406C867EC1FC5041A020AB7EC5335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637748 - 57157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000F000000C3F5282C6CF2504148E17AD4D23455410AD7A3106BF25041A4703DCAD4345541E17A141E79F2504148E17A34F9345541B81E859BA6F250413D0AD7B3EB3455418FC2F5F8A5F250417B14AEF7E73455411F85EBD1A4F25041295C8FD2E4345541F6285C9FA3F2504100000000E434554148E17AA49EF25041713D0A07E234554114AE47E198F25041AE47E10AE0345541AE47E12A96F25041C3F528CCDE3455417B14AEC78CF2504148E17AA4D83455416666669684F250411F85EB81D33455411F85EB1181F25041000000E0D0345541D7A3700D7FF250415C8FC285CF345541C3F5282C6CF2504148E17AD4D2345541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3106BF25041A4703DCAD43455410CE9220079F2504132ADE2E6F8345541C56F361E79F2504107CD7034F93455414B11C7387BF2504193F79494F83455416C878C168BF2504158EBF3DEF334554191E928278FF2504182AC269CF23455416B98E51496F250412199969BF0345541B81E859BA6F250413D0AD7B3EB345541150CF908A6F25041ABA2DD55E834554182AAFCD5A4F25041AF509E14E534554160EE8D98A2F250410D067FD3E3345541CE80B7FF9FF250413A379390E2345541B98DF0269FF250411289B63AE2345541CDEAAEB09EF25041499FDF0BE23455414D5FD1809CF25041C9704051E1345541AD31134799F2504155F2E06BE0345541510F0C7897F25041B23F1465DF345541AE47E12A96F25041C3F528CCDE345541F3EC389D93F250415A5A951FDD3455412741585190F25041AAEE9322DB345541B28D6D1D8DF250415790B3DCD83455417B14AEC78CF2504148E17AA4D83455416666669684F250411F85EB81D3345541D2B6BCC781F2504187761268D1345541B86908F580F250410370A2CCD0345541D7A3700D7FF250415C8FC285CF345541C3F5282C6CF2504148E17AD4D23455410AD7A3106BF25041A4703DCAD4345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621105 - 1570990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000A0000000000007028C45041E17A145E0AEA544152B81E5511C450415C8FC24522EA544148E17AB41DC45041B81E859B2BEA54416666663627C45041C3F528EC24EA5441000000E029C4504152B81EB524EA5441EC51B80E34C4504152B81E451BEA54416666663633C450411F85EB5118EA54417B14AEB731C45041B81E85AB15EA5441713D0AA72EC450418FC2F5C811EA54410000007028C45041E17A145E0AEA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006317DDEE26C450419594751E25EA544190E7F98723C45041FF34CC2E27EA54410CE8FA6720C45041C45F4EB529EA54416E37230D1EC450411C568DDE2BEA54411F85EBD122C450417B14AE772FEA5441F6285C3F2AC45041F6285C0F28EA54418FC2F5182EC45041CDCCCC8C24EA54410AD7A37031C45041EC51B87E20EA5441333333D334C4504148E17AF41DEA5441C6070E1134C4504136D0FD1E1BEA5441000000E029C4504152B81EB524EA544115D2183D27C45041B56CFFEE24EA54416317DDEE26C450419594751E25EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621105 - 3288810
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000A0000000000007028C45041E17A145E0AEA544152B81E5511C450415C8FC24522EA544148E17AB41DC45041B81E859B2BEA54416666663627C45041C3F528EC24EA5441000000E029C4504152B81EB524EA5441EC51B80E34C4504152B81E451BEA54416666663633C450411F85EB5118EA54417B14AEB731C45041B81E85AB15EA5441713D0AA72EC450418FC2F5C811EA54410000007028C45041E17A145E0AEA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006317DDEE26C450419594751E25EA544190E7F98723C45041FF34CC2E27EA54410CE8FA6720C45041C45F4EB529EA54416E37230D1EC450411C568DDE2BEA54411F85EBD122C450417B14AE772FEA5441F6285C3F2AC45041F6285C0F28EA54418FC2F5182EC45041CDCCCC8C24EA54410AD7A37031C45041EC51B87E20EA5441333333D334C4504148E17AF41DEA5441C6070E1134C4504136D0FD1E1BEA5441000000E029C4504152B81EB524EA544115D2183D27C45041B56CFFEE24EA54416317DDEE26C450419594751E25EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652626 - 240834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000002000000010300000001000000140000009A999929E52B5141D7A3702D1530554133333313E72B5141CDCCCCFC15305541D7A3700DE92B5141A4703D6A13305541295C8F02EA2B51410AD7A320123055418FC2F568E42B51417B14AE770F3055417B14AE97E52B51418FC2F5480D30554152B81EE5D12B514114AE47A104305541AE47E11ABD2B514152B81EB5F82F55413D0AD733B92B5141AE47E1AAF52F5541295C8F92AD2B5141000000C0E82F554114AE47B1A92B5141EC51B80EE52F5541B81E857BA22B5141CDCCCC4CEC2F5541713D0A47A32B5141295C8F92ED2F5541B81E85EBAA2B5141000000D0F92F5541D7A3701DAD2B5141295C8F32FC2F5541713D0A77BF2B5141666666960D3055410AD7A360C32B51411F85EB1110305541B81E853BC62B5141C3F528EC103055419A999959C92B51419A999959113055419A999929E52B5141D7A3702D153055410103000000010000002300000014AE4711D62B5141000000B01D3055411F85EB11DB2B5141666666361E30554152B81E75E62B5141B81E857B213055410AD7A310E72B514185EB51982230554114AE47A1EB2B5141C3F5280C1F305541C3F5288CEC2B5141E17A14CE1E3055413D0AD753E72B514152B81E45183055413D0AD7C3E42B5141713D0A7716305541A4703D3AC92B5141A4703DEA1230554152B81ED5C52B51411F85EBE11230554152B81EB5C22B5141AE47E15A1130554114AE47A1BE2B5141EC51B8DE0E305541AE47E1FAAB2B514100000060FD2F55417B14AE87A92B51411F85EBD1FA2F55415C8FC245A12B5141F6285CDFEC2F55413D0AD7539F2B514152B81EA5E82F5541A4703DBA942B5141CDCCCCDCD62F5541D7A3703D942B514133333323D72F5541000000B0922B5141B81E850BD82F554100000060952B514133333393DE2F55411F85EB21972B514152B81ED5E12F554166666666992B5141C3F528FCE42F5541D7A370CD9C2B514148E17A04EB2F5541CDCCCCDCA12B514100000090F42F55410AD7A3D0A22B5141EC51B82EF82F5541C3F5283CA92B51419A9999D90430554133333323AA2B514100000010073055415C8FC265AD2B5141295C8F720A305541E17A144EB22B51410AD7A3800D305541CDCCCC0CB72B51419A9999B90F30554133333383BB2B514114AE47211230554185EB51E8C22B514100000060183055417B14AEC7C52B514185EB515819305541295C8FC2CA2B514114AE47211A30554114AE4711D62B5141000000B01D305541
+</a>
+
+<b>
+010600000001000000010300000001000000250000002783ECCF9D2B5141BAA65A1AE62F5541D24962129A2B51413A93FDD3DF2F5541F5DA46BA942B51415698DCDCD62F5541000000B0922B5141B81E850BD82F554100000060952B514133333393DE2F55411F85EB21972B514152B81ED5E12F554166666666992B5141C3F528FCE42F5541D7A370CD9C2B514148E17A04EB2F5541CDCCCCDCA12B514100000090F42F55410AD7A3D0A22B5141EC51B82EF82F5541C3F5283CA92B51419A9999D90430554133333323AA2B514100000010073055415C8FC265AD2B5141295C8F720A305541E17A144EB22B51410AD7A3800D305541CDCCCC0CB72B51419A9999B90F30554133333383BB2B514114AE47211230554185EB51E8C22B514100000060183055417B14AEC7C52B514185EB515819305541295C8FC2CA2B514114AE47211A30554114AE4711D62B5141000000B01D3055411F85EB11DB2B5141666666361E30554152B81E75E62B5141B81E857B213055410AD7A310E72B514185EB51982230554114AE47A1EB2B5141C3F5280C1F305541C3F5288CEC2B5141E17A14CE1E3055413D0AD753E72B514152B81E45183055413D0AD7C3E42B5141713D0A7716305541A4703D3AC92B5141A4703DEA1230554152B81ED5C52B51411F85EBE11230554152B81EB5C22B5141AE47E15A1130554114AE47A1BE2B5141EC51B8DE0E305541AE47E1FAAB2B514100000060FD2F55417B14AE87A92B51411F85EBD1FA2F55415C8FC245A12B5141F6285CDFEC2F554165CE51AA9F2B5141EACF1561E92F55413D0AD7539F2B514152B81EA5E82F55412783ECCF9D2B5141BAA65A1AE62F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915685 - 975678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000200000018000000C3F5289C1CE55041E17A14FEB8645441CDCCCC1C15E55041295C8FC2BC64544185EB51181FE5504166666676B9645441333333C323E55041B81E85ABB7645441F6285CEF26E55041333333E3B664544185EB516826E5504100000030BF645441F6285CEF26E5504148E17A64C464544148E17A0431E55041E17A14CEC4645441AE47E1BA42E55041F6285C6FC5645441AE47E1EA48E5504185EB51C8C8645441AE47E1BA58E55041A4703DDACB6454419A99999959E55041333333A3CB6454413D0AD7635BE5504166666666C86454411F85EB6160E55041C3F528BCC16454410AD7A33067E55041AE47E15AB764544185EB51686BE5504185EB51C8B06454411F85EBF16BE550419A9999D9AF64544152B81E256AE55041295C8F12AF645441EC51B85E57E5504114AE4781AD645441E17A148E45E55041295C8FD2AA6454413D0AD72340E55041C3F528ECAA64544148E17A443AE550417B14AE97AC64544114AE470135E5504148E17A84AE645441C3F5289C1CE55041E17A14FEB864544105000000CDCCCC0C5DE55041E17A14BEC06454411F85EBD15BE55041EC51B81EC3645441AE47E11A59E55041AE47E19AC1645441295C8F625AE55041E17A144EBF645441CDCCCC0C5DE55041E17A14BEC0645441
+</a>
+
+<b>
+0106000000020000000103000000010000000A00000035E49E3B43E550413C5C59A7C5645441BCA6E68549E55041BAD76AE6C8645441ED9C085C58E55041FD57D3C7CB6454410C7DD5C059E55041833A3D5CCB645441E62FACF75AE5504161B7092AC9645441DAC7345F5BE5504192D06164C8645441540645E24CE550411C703C15C26454414C5FBA4A46E550417E4C6F44BF6454416CC0EFC542E550418AE93693BE64544135E49E3B43E550413C5C59A7C564544101030000000100000005000000E92D5A0943E550410ACC678DC5645441F0355A2F43E5504119DC67D9C56454411A478A3C43E5504135E881B5C564544135E49E3B43E550413C5C59A7C5645441E92D5A0943E550410ACC678DC5645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63619 - 3996899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -58  </desc>
+<a>
+0106000000010000000103000000010000001E000000A12F5CFF44545141DF1BC3E5748054410AD7A32045545141713D0A9777805441AE47E1DA4A545141F6285C0F77805441C3F5280C4B54514152B81E1583805441000000204B54514148E17AE48A80544185EB51684A545141CDCCCCFC91805441F6285C9F67545141F6285C0F968054410AD7A3506954514114AE4711958054411F85EBA17554514152B81E8575805441295C8FF2775451415C8FC25571805441295C8FF26E54514148E17A246F8054417B14AE876B545141713D0AC76080544185EB511875545141295C8FB254805441CDCCCCEC86545141000000C0518054417B14AE67885451410000005044805441CDCCCC3C88545141EC51B8CE3F805441295C8FF28654514114AE47C13E80544148E17A9472545141B81E851B4280544185EB515860545141A4703DAA4C805441CDCCCC5C5954514148E17A1450805441EC51B8FE4C545141B81E85EB4E80544152B81E653D545141EC51B83E4E805441A4703DDA365451415C8FC2C54B8054418FC2F5C833545141D7A3708D49805441C3F528DC2F545141C3F5283C4880544114AE470130545141AE47E18A4E8054413D0AD75331545141CDCCCCFC5B805441713D0AE733545141000000707180544152B81E953F545141F6285C7F73805441A12F5CFF44545141DF1BC3E574805441
+</a>
+
+<b>
+0106000000010000000103000000020000002C00000097FAD14170545141AF3227766F8054416BA98F167354514183AC65F06E805441251FC53676545141AD54B6A66D805441E14E31177A545141A212D3A26B805441B81E85FB7954514148E17A346B80544169B0E42B785451412A1B9DFB6A805441EFC5BE7B775451415E84529C6A805441DBFA49B17654514174B40BCD698054410AD7A33077545141CDCCCC9C69805441B2FE4BCF77545141E9B01BFE698054410AD7A3F078545141CDCCCC9C6A8054410AD7A3307A545141CDCCCC3C6A8054410AD7A3707B545141CDCCCC6C698054410AD7A3D07C545141CDCCCC7C688054410AD7A3007F545141CDCCCC3C68805441713D0A27805451413D0AD75368805441CDCCCC6C81545141E17A14EE668054410AD7A3A0845451419A99990961805441B81E85DB81545141AE47E16A618054410AD7A3B081545141CDCCCCBC63805441666666067C545141CDCCCCCC65805441D7A3701D7B545141000000D06280544185EB51587A5451410000001063805441E17A14EE7754514148E17AB463805441295C8F4276545141000000D05D8054410AD7A3B074545141CDCCCC1C5E805441295C8F8274545141713D0AE75980544185EB51F8775451419A99992959805441713D0AD777545141D7A3702D5880544148E17AD47654514114AE47E1578054411F85EBD1755451411F85EBA156805441333333B37554514152B81E25558054410705C9EA745451416AD2BFF154805441C9FAF126745451414176304F56805441E09867737254514145D6DA3159805441C644E04070545141BF6918445D805441D6D195F76F5451418B57AB635D805441346027BA6E545141A5704DD15D8054416A31C9A16D545141387DCA2C5E8054412001E0066C545141644E4AAF5E8054412001E0266C545141AC2FC5036080544154AEF4AE6D54514116DC40D469805441C9B6C09E6E5451417FB27EC36F80544197FAD14170545141AF3227766F8054410600000082A178A46F5451413279815B68805441C3F5286C71545141A4703D6A68805441F6285C7F715451411F85EB116D805441FD6FB47D705451411697031C6D805441C1CF31BA6F545141EB22880D6D80544182A178A46F5451413279815B68805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242187 - 1419829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000E54343661B075141F8EB433A5CFE5441A2F5CB9C1E075141E3E0AEC05BFE54412D04B280240751416935E96C5BFE544128F80F282B075141F08923195BFE5441166C74072C075141F08923195BFE544145DB298036075141E7C3D5885BFE54418BE21C72390751416552C2A45BFE544175735A893A07514113A25A5A59FE5441E658D24C3B075141AB82302758FE5441332613CF3D075141A2BCE29658FE544104656735400751411785812259FE5441496C5A27430751418387D21D5AFE5441BA51D2EA43075141F46C4AE15AFE544155EC53EF48075141423A8B635DFE544166666666500751415C8FC21553FE5441C3F5288C540751413333332355FE5441AE47E1BA540751410000009055FE5441AE47E16A57075141AE47E19A51FE544114AE47215507514152B81EB54FFE5441CDCCCC3C520751410AD7A3F04DFE5441AE47E10A4C075141AE47E14A4CFE54411F85EBB1450751413D0AD7C34BFE54418FC2F5C83B0751413D0AD7C34BFE5441A4703D4A36075141D7A370BD4BFE544114AE4711310751415C8FC2A54CFE54411F85EB51260751410AD7A3D04DFE5441D7A3707D16075141D7A370ED4FFE5441E17A14EE0E075141E17A14CE51FE5441713D0AE71A07514114AE47115BFE5441E54343661B075141F8EB433A5CFE5441
+</a>
+
+<b>
+0106000000010000000103000000020000002900000025F80F282B075141F38923195BFE544149DC80BA2A075141A6E7861E5BFE5441959E0A3A290751415F903A335BFE5441687B703F260751417079EE575BFE54417062863423075141F95FB6805BFE54416511548320075141BB4774A75BFE54410016FF8D1E07514181EDDEC25BFE5441E24343661B075141F3EB433A5CFE5441DEF351651B075141A49B10385CFE5441264539641B07514141ED39385CFE5441D7A370AD220751415C8FC2756DFE54410AD7A3D0270751417B14AE076DFE544152B81E9534075141B81E85EB70FE5441C3F5289C34075141EC51B8FE71FE54418FC2F5E83B0751410000007074FE544114AE472148075141713D0A8778FE5441F6285C4F4C07514152B81EF56DFE54415C8FC2554B07514114AE47316EFE5441C3F528BC48075141CDCCCCEC69FE5441EC51B80E4A075141B81E850B67FE5441A4703D5A400751413D0AD79363FE54413AAC9101430751415C5BF2905CFE54410D7A639443075141DDC0700E5CFE5441667CA7DA44075141DDC0700E5CFE5441B0696F0E45075141EBF818735BFE5441BC51D2EA43075141F66C4AE15AFE5441E19E407E430751411BBAB8745AFE54417F79D242430751414F57FB555AFE54414E00305A3E0751411F9180B658FE5441382613CF3D075141A3BCE29658FE5441F52FC7543B07514153BE922858FE5441C975B07939075141C64774A75BFE5441E3A2A0FE35075141675DCA845BFE5441E3927A3434075141E32059705BFE54418A0EF91B33075141B010A9645BFE5441F2959F6C32075141B3AB5A5D5BFE5441F8B9483332075141320DF75A5BFE5441AA4AF82530075141A4839E475BFE544123C941C22D07514135941C2D5BFE544193D733912B075141F38923195BFE544125F80F282B075141F38923195BFE5441050000009A9999993F075141D7A3704D67FE5441F6285C8F40075141C3F528FC64FE54411F85EB314207514185EB51A865FE5441CDCCCC3C41075141B81E85FB67FE54419A9999993F075141D7A3704D67FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242187 - 4110570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000E54343661B075141F8EB433A5CFE5441A2F5CB9C1E075141E3E0AEC05BFE54412D04B280240751416935E96C5BFE544128F80F282B075141F08923195BFE5441166C74072C075141F08923195BFE544145DB298036075141E7C3D5885BFE54418BE21C72390751416552C2A45BFE544175735A893A07514113A25A5A59FE5441E658D24C3B075141AB82302758FE5441332613CF3D075141A2BCE29658FE544104656735400751411785812259FE5441496C5A27430751418387D21D5AFE5441BA51D2EA43075141F46C4AE15AFE544155EC53EF48075141423A8B635DFE544166666666500751415C8FC21553FE5441C3F5288C540751413333332355FE5441AE47E1BA540751410000009055FE5441AE47E16A57075141AE47E19A51FE544114AE47215507514152B81EB54FFE5441CDCCCC3C520751410AD7A3F04DFE5441AE47E10A4C075141AE47E14A4CFE54411F85EBB1450751413D0AD7C34BFE54418FC2F5C83B0751413D0AD7C34BFE5441A4703D4A36075141D7A370BD4BFE544114AE4711310751415C8FC2A54CFE54411F85EB51260751410AD7A3D04DFE5441D7A3707D16075141D7A370ED4FFE5441E17A14EE0E075141E17A14CE51FE5441713D0AE71A07514114AE47115BFE5441E54343661B075141F8EB433A5CFE5441
+</a>
+
+<b>
+0106000000010000000103000000020000002900000025F80F282B075141F38923195BFE544149DC80BA2A075141A6E7861E5BFE5441959E0A3A290751415F903A335BFE5441687B703F260751417079EE575BFE54417062863423075141F95FB6805BFE54416511548320075141BB4774A75BFE54410016FF8D1E07514181EDDEC25BFE5441E24343661B075141F3EB433A5CFE5441DEF351651B075141A49B10385CFE5441264539641B07514141ED39385CFE5441D7A370AD220751415C8FC2756DFE54410AD7A3D0270751417B14AE076DFE544152B81E9534075141B81E85EB70FE5441C3F5289C34075141EC51B8FE71FE54418FC2F5E83B0751410000007074FE544114AE472148075141713D0A8778FE5441F6285C4F4C07514152B81EF56DFE54415C8FC2554B07514114AE47316EFE5441C3F528BC48075141CDCCCCEC69FE5441EC51B80E4A075141B81E850B67FE5441A4703D5A400751413D0AD79363FE54413AAC9101430751415C5BF2905CFE54410D7A639443075141DDC0700E5CFE5441667CA7DA44075141DDC0700E5CFE5441B0696F0E45075141EBF818735BFE5441BC51D2EA43075141F66C4AE15AFE5441E19E407E430751411BBAB8745AFE54417F79D242430751414F57FB555AFE54414E00305A3E0751411F9180B658FE5441382613CF3D075141A3BCE29658FE5441F52FC7543B07514153BE922858FE5441C975B07939075141C64774A75BFE5441E3A2A0FE35075141675DCA845BFE5441E3927A3434075141E32059705BFE54418A0EF91B33075141B010A9645BFE5441F2959F6C32075141B3AB5A5D5BFE5441F8B9483332075141320DF75A5BFE5441AA4AF82530075141A4839E475BFE544123C941C22D07514135941C2D5BFE544193D733912B075141F38923195BFE544125F80F282B075141F38923195BFE5441050000009A9999993F075141D7A3704D67FE5441F6285C8F40075141C3F528FC64FE54411F85EB314207514185EB51A865FE5441CDCCCC3C41075141B81E85FB67FE54419A9999993F075141D7A3704D67FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 791530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441120E354D4CC35041C44414FA78475441133C2F6F4CC350413B268ADB79475441A4703DDA4CC350411F85EBA17C475441258902A94CC350416EAA041D8147544132D1BB8B4CC35041323E2DC78347544177892FFD4BC35041DDE2458289475441B0BEB7DE4BC35041825325C98C475441DDFCC1E34DC35041B3A38B968C47544170D4BF725CC35041F546CD298B4754414F9DB5DA7BC35041CEE99B04884754413A64660486C3504146A70DAC85475441E17A14BE9BC3504148E17A94804754418FC2F568ADC35041B81E85BB87475441465662B9AEC35041338ED7F184475441286748E6B5C35041918C1CB97547544148E17A54BEC3504114AE479166475441AE47E10ABFC350418FC2F53865475441B81E854BC0C35041A4703D6A634754417B14AEB7C1C35041CDCCCC5C61475441E17A14FEC3C35041333333135E475441A4703D6AC5C350415C8FC2055C4754418FC2F5A8C5C35041B81E85AB5B475441A4703D1AC6C35041F6285CBF5A475441B81E853BC7C35041295C8F6258475441CDCCCCFCC7C35041000000D056475441E17A143EC8C35041713D0A47564754413D0AD733C9C350410000000054475441713D0A77CAC35041295C8F0251475441C3F5280CCBC3504114AE47A14F475441295C8FF2CBC35041000000904D475441B81E858BCDC350413D0AD7E34947544152B81E65D0C35041D7A3709D434754418FC2F518D2C35041CDCCCCDC3F4754415C8FC285D2C35041E17A148E3E475441666666D6D4C35041295C8F7237475441EC51B88ED4C35041D7A3705D3647544166666646D4C350417B14AE4735475441333333C3D1C350419A9999992B4754415C8FC235D1C3504185EB51782947544114AE47B1CFC350415C8FC285244754417B14AE47CEC3504185EB51E81F475441A4703DCACDC35041F6285CEF1B4754415C8FC205CDC35041AE47E1BA15475441EC51B81ECCC35041333333130E475441F6285CFFCBC350417B14AE070D47544114AE47E1CBC350418FC2F5080C4754413D0AD773CBC3504148E17AE408475441295C8F52CBC35041295C8FF2074754411F85EBA1CAC35041EC51B8DE02475441713D0AB7CAC3504148E17A740147544114AE4701CBC3504114AE4761FC46544114AE4761CBC35041CDCCCCDCF54654411F85EBD1CAC35041EC51B8CEF5465441B81E853BC9C350419A9999C9F4465441295C8FE2C7C35041AE47E14AF346544166666696B8C35041EC51B8DEEB465441F6285CAFB5C350413D0AD7E3ED46544166666686B3C35041E17A149EF34654411F85EB21B3C35041666666F6F5465441B81E851BB3C35041AE47E1BAF746544152B81E05B3C3504166666676F946544114AE47F1B2C35041666666A6FB465441D7A370BDB2C35041F6285C2FFE465441713D0A77B2C350411F85EB6101475441333333C3B1C35041A4703DFA034754415C8FC2A5B0C3504185EB513807475441D7A370FDADC35041333333A30F475441EC51B86EAAC3504148E17A4415475441295C8FD2A6C350413D0AD7C31B475441333333C3A3C35041C3F5286C22475441EC51B80EA3C35041C3F5288C2547544133333393A2C35041E17A14AE2747544166666656A2C35041713D0AD728475441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C3F5280C4AC35041333333B39B475441B81E852B4AC3504152B81EA5A1475441AE47E18A9FC35041000000109947544152B81ED59DC35041C3F5280C9447544100000000A1C3504148E17A848D4754410AD7A350A7C350413D0AD74385475441E17A14BE9BC3504148E17A94804754411F85EB718DC3504152B81EF5834754410AD7A3507BC3504148E17A24884754415C8FC2A54BC35041EC51B8CE8C4754419A9999F94AC3504152B81E058F475441666666364AC3504114AE475196475441C3F5280C4AC35041333333B39B475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 943282
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -21  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441120E354D4CC35041C44414FA78475441133C2F6F4CC350413B268ADB79475441A4703DDA4CC350411F85EBA17C475441258902A94CC350416EAA041D8147544132D1BB8B4CC35041323E2DC78347544177892FFD4BC35041DDE2458289475441B0BEB7DE4BC35041825325C98C475441DDFCC1E34DC35041B3A38B968C47544170D4BF725CC35041F546CD298B4754414F9DB5DA7BC35041CEE99B04884754413A64660486C3504146A70DAC85475441E17A14BE9BC3504148E17A94804754418FC2F568ADC35041B81E85BB87475441465662B9AEC35041338ED7F184475441286748E6B5C35041918C1CB97547544148E17A54BEC3504114AE479166475441AE47E10ABFC350418FC2F53865475441B81E854BC0C35041A4703D6A634754417B14AEB7C1C35041CDCCCC5C61475441E17A14FEC3C35041333333135E475441A4703D6AC5C350415C8FC2055C4754418FC2F5A8C5C35041B81E85AB5B475441A4703D1AC6C35041F6285CBF5A475441B81E853BC7C35041295C8F6258475441CDCCCCFCC7C35041000000D056475441E17A143EC8C35041713D0A47564754413D0AD733C9C350410000000054475441713D0A77CAC35041295C8F0251475441C3F5280CCBC3504114AE47A14F475441295C8FF2CBC35041000000904D475441B81E858BCDC350413D0AD7E34947544152B81E65D0C35041D7A3709D434754418FC2F518D2C35041CDCCCCDC3F4754415C8FC285D2C35041E17A148E3E475441666666D6D4C35041295C8F7237475441EC51B88ED4C35041D7A3705D3647544166666646D4C350417B14AE4735475441333333C3D1C350419A9999992B4754415C8FC235D1C3504185EB51782947544114AE47B1CFC350415C8FC285244754417B14AE47CEC3504185EB51E81F475441A4703DCACDC35041F6285CEF1B4754415C8FC205CDC35041AE47E1BA15475441EC51B81ECCC35041333333130E475441F6285CFFCBC350417B14AE070D47544114AE47E1CBC350418FC2F5080C4754413D0AD773CBC3504148E17AE408475441295C8F52CBC35041295C8FF2074754411F85EBA1CAC35041EC51B8DE02475441713D0AB7CAC3504148E17A740147544114AE4701CBC3504114AE4761FC46544114AE4761CBC35041CDCCCCDCF54654411F85EBD1CAC35041EC51B8CEF5465441B81E853BC9C350419A9999C9F4465441295C8FE2C7C35041AE47E14AF346544166666696B8C35041EC51B8DEEB465441F6285CAFB5C350413D0AD7E3ED46544166666686B3C35041E17A149EF34654411F85EB21B3C35041666666F6F5465441B81E851BB3C35041AE47E1BAF746544152B81E05B3C3504166666676F946544114AE47F1B2C35041666666A6FB465441D7A370BDB2C35041F6285C2FFE465441713D0A77B2C350411F85EB6101475441333333C3B1C35041A4703DFA034754415C8FC2A5B0C3504185EB513807475441D7A370FDADC35041333333A30F475441EC51B86EAAC3504148E17A4415475441295C8FD2A6C350413D0AD7C31B475441333333C3A3C35041C3F5286C22475441EC51B80EA3C35041C3F5288C2547544133333393A2C35041E17A14AE2747544166666656A2C35041713D0AD728475441
+</a>
+
+<b>
+010600000001000000010300000001000000520000005C8FC205CDC35041AE47E1BA15475441EC51B81ECCC35041333333130E475441F6285CFFCBC350417B14AE070D47544114AE47E1CBC350418FC2F5080C4754413D0AD773CBC3504148E17AE408475441295C8F52CBC35041295C8FF2074754411F85EBA1CAC35041EC51B8DE02475441713D0AB7CAC3504148E17A740147544114AE4701CBC3504114AE4761FC46544114AE4761CBC35041CDCCCCDCF54654411F85EBD1CAC35041EC51B8CEF5465441B81E853BC9C350419A9999C9F4465441295C8FE2C7C35041AE47E14AF346544166666696B8C35041EC51B8DEEB465441F6285CAFB5C350413D0AD7E3ED46544166666686B3C35041E17A149EF34654411F85EB21B3C35041666666F6F5465441B81E851BB3C35041AE47E1BAF746544152B81E05B3C3504166666676F946544114AE47F1B2C35041666666A6FB465441D7A370BDB2C35041F6285C2FFE465441713D0A77B2C350411F85EB6101475441333333C3B1C35041A4703DFA034754415C8FC2A5B0C3504185EB513807475441D7A370FDADC35041333333A30F475441EC51B86EAAC3504148E17A4415475441295C8FD2A6C350413D0AD7C31B475441333333C3A3C35041C3F5286C22475441EC51B80EA3C35041C3F5288C2547544133333393A2C35041E17A14AE2747544166666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441A4703D2A9AC350418FC2F53851475441295C8F8242C35041713D0A674D4754413D0AD71344C3504152B81E254F4754419A99997944C3504152B81E45514754417B14AEF747C350413D0AD7F363475441EC51B8AE46C35041C3F528AC68475441C3F5281C48C350417B14AEA76A4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A147047544148E17AC449C350419A9999F971475441666666064BC3504148E17AF4744754411F85EB314CC350413333334378475441C3F5283C4CC350418FC2F58878475441A4703DDA4CC350411F85EBA17C47544152B81E854CC3504114AE4761844754415C8FC2A54BC35041EC51B8CE8C4754410AD7A3507BC3504148E17A24884754411F85EB718DC3504152B81EF583475441E17A14BE9BC3504148E17A94804754410AD7A350A7C350413D0AD743854754418FC2F568ADC35041B81E85BB8747544152B81EE5B7C35041D7A3707D7147544148E17A54BEC3504114AE479166475441AE47E10ABFC350418FC2F53865475441B81E854BC0C35041A4703D6A634754417B14AEB7C1C35041CDCCCC5C61475441E17A14FEC3C35041333333135E475441A4703D6AC5C350415C8FC2055C4754418FC2F5A8C5C35041B81E85AB5B475441A4703D1AC6C35041F6285CBF5A475441B81E853BC7C35041295C8F6258475441CDCCCCFCC7C35041000000D056475441E17A143EC8C35041713D0A47564754413D0AD733C9C350410000000054475441713D0A77CAC35041295C8F0251475441C3F5280CCBC3504114AE47A14F475441295C8FF2CBC35041000000904D475441B81E858BCDC350413D0AD7E34947544152B81E65D0C35041D7A3709D434754418FC2F518D2C35041CDCCCCDC3F4754415C8FC285D2C35041E17A148E3E475441666666D6D4C35041295C8F7237475441EC51B88ED4C35041D7A3705D3647544166666646D4C350417B14AE4735475441333333C3D1C350419A9999992B4754415C8FC235D1C3504185EB51782947544114AE47B1CFC350415C8FC285244754417B14AE47CEC3504185EB51E81F475441A4703DCACDC35041F6285CEF1B4754415C8FC205CDC35041AE47E1BA15475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 1824992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441120E354D4CC35041C44414FA78475441133C2F6F4CC350413B268ADB79475441A4703DDA4CC350411F85EBA17C475441258902A94CC350416EAA041D8147544132D1BB8B4CC35041323E2DC78347544177892FFD4BC35041DDE2458289475441B0BEB7DE4BC35041825325C98C475441DDFCC1E34DC35041B3A38B968C47544170D4BF725CC35041F546CD298B4754414F9DB5DA7BC35041CEE99B04884754413A64660486C3504146A70DAC85475441E17A14BE9BC3504148E17A94804754418FC2F568ADC35041B81E85BB87475441465662B9AEC35041338ED7F184475441286748E6B5C35041918C1CB97547544148E17A54BEC3504114AE479166475441AE47E10ABFC350418FC2F53865475441B81E854BC0C35041A4703D6A634754417B14AEB7C1C35041CDCCCC5C61475441E17A14FEC3C35041333333135E475441A4703D6AC5C350415C8FC2055C4754418FC2F5A8C5C35041B81E85AB5B475441A4703D1AC6C35041F6285CBF5A475441B81E853BC7C35041295C8F6258475441CDCCCCFCC7C35041000000D056475441E17A143EC8C35041713D0A47564754413D0AD733C9C350410000000054475441713D0A77CAC35041295C8F0251475441C3F5280CCBC3504114AE47A14F475441295C8FF2CBC35041000000904D475441B81E858BCDC350413D0AD7E34947544152B81E65D0C35041D7A3709D434754418FC2F518D2C35041CDCCCCDC3F4754415C8FC285D2C35041E17A148E3E475441666666D6D4C35041295C8F7237475441EC51B88ED4C35041D7A3705D3647544166666646D4C350417B14AE4735475441333333C3D1C350419A9999992B4754415C8FC235D1C3504185EB51782947544114AE47B1CFC350415C8FC285244754417B14AE47CEC3504185EB51E81F475441A4703DCACDC35041F6285CEF1B4754415C8FC205CDC35041AE47E1BA15475441EC51B81ECCC35041333333130E475441F6285CFFCBC350417B14AE070D47544114AE47E1CBC350418FC2F5080C4754413D0AD773CBC3504148E17AE408475441295C8F52CBC35041295C8FF2074754411F85EBA1CAC35041EC51B8DE02475441713D0AB7CAC3504148E17A740147544114AE4701CBC3504114AE4761FC46544114AE4761CBC35041CDCCCCDCF54654411F85EBD1CAC35041EC51B8CEF5465441B81E853BC9C350419A9999C9F4465441295C8FE2C7C35041AE47E14AF346544166666696B8C35041EC51B8DEEB465441F6285CAFB5C350413D0AD7E3ED46544166666686B3C35041E17A149EF34654411F85EB21B3C35041666666F6F5465441B81E851BB3C35041AE47E1BAF746544152B81E05B3C3504166666676F946544114AE47F1B2C35041666666A6FB465441D7A370BDB2C35041F6285C2FFE465441713D0A77B2C350411F85EB6101475441333333C3B1C35041A4703DFA034754415C8FC2A5B0C3504185EB513807475441D7A370FDADC35041333333A30F475441EC51B86EAAC3504148E17A4415475441295C8FD2A6C350413D0AD7C31B475441333333C3A3C35041C3F5286C22475441EC51B80EA3C35041C3F5288C2547544133333393A2C35041E17A14AE2747544166666656A2C35041713D0AD728475441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C3F5280C4AC35041333333B39B475441B81E852B4AC3504152B81EA5A1475441AE47E18A9FC35041000000109947544152B81ED59DC35041C3F5280C9447544100000000A1C3504148E17A848D4754410AD7A350A7C350413D0AD74385475441E17A14BE9BC3504148E17A94804754411F85EB718DC3504152B81EF5834754410AD7A3507BC3504148E17A24884754415C8FC2A54BC35041EC51B8CE8C4754419A9999F94AC3504152B81E058F475441666666364AC3504114AE475196475441C3F5280C4AC35041333333B39B475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 4454255
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441120E354D4CC35041C44414FA78475441133C2F6F4CC350413B268ADB79475441A4703DDA4CC350411F85EBA17C475441258902A94CC350416EAA041D8147544132D1BB8B4CC35041323E2DC78347544177892FFD4BC35041DDE2458289475441B0BEB7DE4BC35041825325C98C475441DDFCC1E34DC35041B3A38B968C47544170D4BF725CC35041F546CD298B4754414F9DB5DA7BC35041CEE99B04884754413A64660486C3504146A70DAC85475441E17A14BE9BC3504148E17A94804754418FC2F568ADC35041B81E85BB87475441465662B9AEC35041338ED7F184475441286748E6B5C35041918C1CB97547544148E17A54BEC3504114AE479166475441AE47E10ABFC350418FC2F53865475441B81E854BC0C35041A4703D6A634754417B14AEB7C1C35041CDCCCC5C61475441E17A14FEC3C35041333333135E475441A4703D6AC5C350415C8FC2055C4754418FC2F5A8C5C35041B81E85AB5B475441A4703D1AC6C35041F6285CBF5A475441B81E853BC7C35041295C8F6258475441CDCCCCFCC7C35041000000D056475441E17A143EC8C35041713D0A47564754413D0AD733C9C350410000000054475441713D0A77CAC35041295C8F0251475441C3F5280CCBC3504114AE47A14F475441295C8FF2CBC35041000000904D475441B81E858BCDC350413D0AD7E34947544152B81E65D0C35041D7A3709D434754418FC2F518D2C35041CDCCCCDC3F4754415C8FC285D2C35041E17A148E3E475441666666D6D4C35041295C8F7237475441EC51B88ED4C35041D7A3705D3647544166666646D4C350417B14AE4735475441333333C3D1C350419A9999992B4754415C8FC235D1C3504185EB51782947544114AE47B1CFC350415C8FC285244754417B14AE47CEC3504185EB51E81F475441A4703DCACDC35041F6285CEF1B4754415C8FC205CDC35041AE47E1BA15475441EC51B81ECCC35041333333130E475441F6285CFFCBC350417B14AE070D47544114AE47E1CBC350418FC2F5080C4754413D0AD773CBC3504148E17AE408475441295C8F52CBC35041295C8FF2074754411F85EBA1CAC35041EC51B8DE02475441713D0AB7CAC3504148E17A740147544114AE4701CBC3504114AE4761FC46544114AE4761CBC35041CDCCCCDCF54654411F85EBD1CAC35041EC51B8CEF5465441B81E853BC9C350419A9999C9F4465441295C8FE2C7C35041AE47E14AF346544166666696B8C35041EC51B8DEEB465441F6285CAFB5C350413D0AD7E3ED46544166666686B3C35041E17A149EF34654411F85EB21B3C35041666666F6F5465441B81E851BB3C35041AE47E1BAF746544152B81E05B3C3504166666676F946544114AE47F1B2C35041666666A6FB465441D7A370BDB2C35041F6285C2FFE465441713D0A77B2C350411F85EB6101475441333333C3B1C35041A4703DFA034754415C8FC2A5B0C3504185EB513807475441D7A370FDADC35041333333A30F475441EC51B86EAAC3504148E17A4415475441295C8FD2A6C350413D0AD7C31B475441333333C3A3C35041C3F5286C22475441EC51B80EA3C35041C3F5288C2547544133333393A2C35041E17A14AE2747544166666656A2C35041713D0AD728475441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C3F5280C4AC35041333333B39B475441B81E852B4AC3504152B81EA5A1475441AE47E18A9FC35041000000109947544152B81ED59DC35041C3F5280C9447544100000000A1C3504148E17A848D4754410AD7A350A7C350413D0AD74385475441E17A14BE9BC3504148E17A94804754411F85EB718DC3504152B81EF5834754410AD7A3507BC3504148E17A24884754415C8FC2A54BC35041EC51B8CE8C4754419A9999F94AC3504152B81E058F475441666666364AC3504114AE475196475441C3F5280C4AC35041333333B39B475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660093 - 407932
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000100000001030000000700000059000000B81E859BBFB7504148E17AE412D8544166666646ADB750415C8FC2350ED85441295C8F529AB750418FC2F5C809D85441CDCCCC2C94B750410AD7A36006D8544148E17AE492B75041AE47E19A05D854417B14AE378DB7504185EB517801D85441EC51B8DE88B7504100000080FED754413D0AD7B387B75041EC51B81EFDD75441333333C388B75041713D0A97FCD75441E17A14EE89B750410AD7A320FED7544114AE47518CB75041F6285C8FFFD75441666666A68EB75041E17A14FE00D854419A99990991B75041EC51B85E02D854410AD7A3A092B75041F6285C0F03D854413D0AD74393B75041B81E85CB02D85441666666E693B75041E17A14EEFFD75441EC51B81E95B75041B81E85FBF8D75441E17A147E95B7504148E17AA4F5D754410000007095B750413D0AD7F3F4D7544185EB513894B75041EC51B85EF4D754418FC2F55890B750418FC2F5C8F3D75441000000B08CB750410AD7A3A0F3D754410AD7A3E089B75041F6285C4FF3D75441AE47E19A88B75041E17A14AEF3D754418FC2F54888B7504152B81E45F5D75441E17A142E88B750411F85EB71F7D7544148E17A6488B75041AE47E15AF9D754418FC2F54888B7504185EB5128FBD754419A99993987B75041F6285C0FFCD754418FC2F58886B75041713D0A97FCD75441CDCCCC1C86B75041295C8FA2FBD754411F85EBB186B75041EC51B89EF9D754413333330387B75041CDCCCCDCF6D754419A99993987B7504185EB5128F4D754413D0AD7B387B75041EC51B89EF2D75441AE47E19A88B750411F85EB31F2D75441666666268BB75041713D0A17F2D75441B81E853B8FB7504185EB5168F2D754413D0AD73392B75041295C8FE2F2D7544114AE471195B750417B14AE77F3D7544114AE470197B750419A999919F4D754418FC2F5B89AB75041713D0A17DCD75441A4703D6A72B75041E17A148EDED754419A99992963B75041CDCCCC7CDFD754419A99991964B75041666666E6E0D75441F6285CEF65B750419A9999A9E2D754413333336369B75041D7A3708DE5D75441713D0A476CB750418FC2F528E8D75441D7A370CD6FB7504148E17A84EDD754413333333372B75041F6285CBFF1D75441F6285CCF74B7504185EB51E8F5D75441F6285CCF75B7504133333303FAD75441B81E85DB75B750411F85EB31FDD754418FC2F52875B75041666666B601D8544185EB51E873B7504185EB512804D8544185EB51E871B75041713D0AF705D85441CDCCCC2C6FB75041713D0A0707D85441F6285CBF6CB7504185EB517807D85441EC51B88E6AB75041295C8FA209D8544152B81EF568B75041E17A148E0BD8544114AE471166B75041CDCCCC3C0DD85441EC51B89E5FB75041F6285CFF15D85441295C8F025FB7504152B81E1518D8544185EB512861B750410000006028D85441E17A144E62B75041D7A370CD2CD854411F85EBC164B750417B14AE872FD8544185EB51486CB75041C3F528CC3BD8544114AE478172B75041713D0A9744D854410000004078B75041B81E85FB3FD85441C3F528BC79B750413D0AD75340D85441E17A146E7AB750417B14AEB73ED8544152B81E957EB750413333337340D85441C3F528CC7DB750418FC2F54842D85441713D0A9777B750419A99993949D85441A4703DCA7BB75041A4703DBA4CD85441AE47E1DA7DB750410AD7A3E04DD8544114AE47417FB750410AD7A3504DD8544114AE47E182B75041A4703DBA4BD8544185EB512885B75041C3F5286C49D85441666666368EB75041C3F5280C43D85441F6285C7F93B7504185EB51D83FD85441CDCCCCDCB8B750417B14AED726D85441CDCCCCCCBAB750418FC2F5F824D85441333333A3BCB750415C8FC20523D854413D0AD703BEB750415C8FC2E520D85441AE47E1FABEB750411F85EB811ED85441AE47E1AABFB7504148E17AD41BD85441E17A14FEC0B75041713D0AF711D85441B81E859BBFB7504148E17AE412D854410A000000A4703DBA82B75041EC51B8BEFCD7544185EB519880B750410AD7A380FCD754413D0AD7237FB75041F6285C4FFCD754411F85EB817EB75041F6285CDFFBD754411F85EB817EB750418FC2F518FBD75441A4703DEA7FB75041E17A143EFBD754413D0AD76382B75041E17A143EFBD7544185EB516883B75041F6285CDFFBD7544114AE478183B7504185EB5168FCD75441A4703DBA82B75041EC51B8BEFCD754410A0000000AD7A3C08AB75041B81E857B20D85441AE47E1BA87B7504114AE475120D8544185EB519884B75041CDCCCCFC1FD85441D7A370CD80B75041EC51B8EE1FD85441C3F528EC7FB75041666666B61FD854415C8FC2A57FB750419A9999291FD85441295C8F3280B750418FC2F5B81ED85441A4703D4A87B750419A9999291FD85441B81E855B8BB7504148E17AC41FD854410AD7A3C08AB75041B81E857B20D8544116000000A4703DFA94B75041333333E31ED85441F6285C8F92B750418FC2F5B81ED85441C3F5285C90B75041333333E31ED85441B81E851B8EB75041F6285CFF1ED85441A4703D3A8DB7504152B81ED51ED8544185EB51488DB75041C3F5282C1ED854413D0AD7538EB750419A9999C91DD85441CDCCCC1C98B75041D7A370AD1DD85441295C8FF297B75041666666B61FD85441C3F528AC97B750418FC2F58821D854416666666697B7504185EB517823D854418FC2F51897B7504114AE473125D85441E17A148E96B750417B14AE4727D85441295C8F0296B7504114AE47F128D85441EC51B87E95B7504152B81E7529D85441C3F528EC94B750417B14AE2729D854418FC2F53895B7504185EB511828D854413D0AD7E395B750415C8FC2A525D854415C8FC29596B75041B81E850B23D854411F85EB0197B750413D0AD73321D85441F6285C1F97B750417B14AE371FD85441A4703DFA94B75041333333E31ED85441100000003333338379B75041AE47E19AF7D7544152B81E4579B7504185EB5148F8D754411F85EB7178B75041E17A14FEF7D754415C8FC2F577B750413D0AD743F7D754410AD7A3F076B7504166666626F6D7544185EB51F875B750418FC2F598F4D75441E17A143E75B75041EC51B86EF3D754415C8FC2B574B75041C3F528BCF1D754417B14AE7774B75041AE47E1AAF0D75441EC51B8CE74B75041EC51B82EF0D754410000007075B75041CDCCCCFCEFD7544185EB51F875B75041A4703D8AF1D754419A99990977B75041713D0AF7F3D754418FC2F5E877B7504114AE4791F5D75441E17A14EE78B75041CDCCCCECF6D754413333338379B75041AE47E19AF7D75441250000001F85EB41B2B75041AE47E1FA21D85441333333A3B1B750418FC2F55823D8544152B81E95B0B7504185EB51A823D854415C8FC215B0B750416666669624D85441713D0A87AFB750413D0AD72326D85441F6285C6FAAB750410AD7A33028D85441295C8F62A8B75041E17A14CE29D85441713D0AE7A5B75041C3F528FC2AD85441B81E856BA3B75041EC51B85E29D85441B81E853BA3B75041295C8F3227D85441B81E855BA3B750415C8FC2F524D85441C3F528DCA2B75041AE47E12A22D8544100000080A0B750415C8FC2A51BD85441C3F528ACA8B750415C8FC26517D85441E17A141EA9B750419A99994918D85441CDCCCC5CA2B7504148E17A541CD85441D7A3701DA2B75041295C8FB21DD85441B81E852BA3B75041D7A3707D20D85441A4703D2AA4B750418FC2F54823D854418FC2F5E8A4B750415C8FC23525D854417B14AE67A5B7504152B81EB525D85441713D0AF7A5B7504148E17A0426D85441333333E3A7B750410AD7A3C025D8544166666636AAB7504148E17AD424D8544114AE4731ACB750413D0AD7B323D85441AE47E13AADB750419A9999C922D85441E17A147EADB75041F6285CAF21D8544166666626ADB750415C8FC22520D85441295C8FE2ABB750417B14AED71BD85441AE47E12AABB750415C8FC23519D854411F85EBC1AAB750417B14AED717D8544100000090A9B750411F85EBF117D854413D0AD763A9B750415C8FC20517D85441F6285CFFAAB75041713D0A5716D854415C8FC2F5AEB75041666666C621D8544133333393B1B75041E17A143E20D854411F85EB41B2B75041AE47E1FA21D85441160000000000003079B750417B14AEC72AD8544114AE478176B75041295C8F622BD8544185EB512874B7504148E17AC428D85441C3F528DC6EB750411F85EBC126D854419A9999F96EB75041CDCCCC6C24D8544114AE47816BB750410000004020D85441000000C067B7504148E17A941FD85441F6285CDF65B750411F85EB811ED85441B81E85AB65B75041EC51B8BE19D854417B14AE4767B750413333339313D85441D7A3700D6CB75041A4703DFA0BD85441CDCCCCDC75B750411F85EBB10AD854416666660679B7504185EB51F80AD854410AD7A3107BB75041295C8FD20BD8544185EB51987AB75041C3F5282C13D854418FC2F5B879B750410000001017D85441713D0AC777B750419A9999591AD85441AE47E1EA78B7504114AE47911DD85441000000707CB75041666666D61FD85441EC51B8CE7CB75041C3F5289C24D8544152B81E557BB75041F6285C8F27D854410000003079B750417B14AEC72AD85441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000002D41254B66B75041EFC5FC5A17D854411014AE4767B75041C832339313D85441ACA3700D6CB75041A4703DFA0BD85441478FC22576B750415E90C24509D85441330AD7A376B75041AC7A14EE05D8544160AE471166B7504118CDCC3C0DD854412B51721C63B750414580154111D85441EC51B89E5FB75041F6285CFF15D85441345C8F025FB750412BB81E1518D854411509A4C35FB750416CACF8CD1DD8544185EB512861B750410000006028D85441ACA11E3461B750418513878D28D85441E88859AA61B750413583B4552AD85441EE7B144E62B75041E0A270CD2CD85441745D3CB664B750418086AF7A2FD854411F85EBC164B750417B14AE872FD85441B31A1E1766B750415653E9B331D854415FEE51486CB75041CBF928CC3BD8544114AE478172B75041713D0A9744D854414B46441C76B750417595CDB241D854410000004078B75041B81E85FB3FD854414CF528BC79B750411D0AD75340D85441A168684C7AB75041D5E0AE053FD85441227B146E7AB750411014AEB73ED854413B8DCE827EB7504191358F6B40D8544133B81E957EB750412633337340D854413752B8AE7EB750413AEB513840D85441878FC2F583B7504179703D5A2CD8544196195F027AB7504179A9E08B29D854410000003079B750417B14AEC72AD8544114AE478176B75041295C8F622BD8544185EB512874B7504148E17AC428D85441C3F528DC6EB750411F85EBC126D854419A9999F96EB75041D8CCCC6C24D8544141D1027E6EB750410DF719D823D8544114AE47816BB750410000004020D85441000000C067B7504148E17A941FD854414EBB567666B7504173352AD81ED85441A0285CDF65B750413485EB811ED85441F01A17CC65B750414861B9BC1CD85441B81E85AB65B75041EC51B8BE19D854412D41254B66B75041EFC5FC5A17D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660093 - 430003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000700000059000000B81E859BBFB7504148E17AE412D8544166666646ADB750415C8FC2350ED85441295C8F529AB750418FC2F5C809D85441CDCCCC2C94B750410AD7A36006D8544148E17AE492B75041AE47E19A05D854417B14AE378DB7504185EB517801D85441EC51B8DE88B7504100000080FED754413D0AD7B387B75041EC51B81EFDD75441333333C388B75041713D0A97FCD75441E17A14EE89B750410AD7A320FED7544114AE47518CB75041F6285C8FFFD75441666666A68EB75041E17A14FE00D854419A99990991B75041EC51B85E02D854410AD7A3A092B75041F6285C0F03D854413D0AD74393B75041B81E85CB02D85441666666E693B75041E17A14EEFFD75441EC51B81E95B75041B81E85FBF8D75441E17A147E95B7504148E17AA4F5D754410000007095B750413D0AD7F3F4D7544185EB513894B75041EC51B85EF4D754418FC2F55890B750418FC2F5C8F3D75441000000B08CB750410AD7A3A0F3D754410AD7A3E089B75041F6285C4FF3D75441AE47E19A88B75041E17A14AEF3D754418FC2F54888B7504152B81E45F5D75441E17A142E88B750411F85EB71F7D7544148E17A6488B75041AE47E15AF9D754418FC2F54888B7504185EB5128FBD754419A99993987B75041F6285C0FFCD754418FC2F58886B75041713D0A97FCD75441CDCCCC1C86B75041295C8FA2FBD754411F85EBB186B75041EC51B89EF9D754413333330387B75041CDCCCCDCF6D754419A99993987B7504185EB5128F4D754413D0AD7B387B75041EC51B89EF2D75441AE47E19A88B750411F85EB31F2D75441666666268BB75041713D0A17F2D75441B81E853B8FB7504185EB5168F2D754413D0AD73392B75041295C8FE2F2D7544114AE471195B750417B14AE77F3D7544114AE470197B750419A999919F4D754418FC2F5B89AB75041713D0A17DCD75441A4703D6A72B75041E17A148EDED754419A99992963B75041CDCCCC7CDFD754419A99991964B75041666666E6E0D75441F6285CEF65B750419A9999A9E2D754413333336369B75041D7A3708DE5D75441713D0A476CB750418FC2F528E8D75441D7A370CD6FB7504148E17A84EDD754413333333372B75041F6285CBFF1D75441F6285CCF74B7504185EB51E8F5D75441F6285CCF75B7504133333303FAD75441B81E85DB75B750411F85EB31FDD754418FC2F52875B75041666666B601D8544185EB51E873B7504185EB512804D8544185EB51E871B75041713D0AF705D85441CDCCCC2C6FB75041713D0A0707D85441F6285CBF6CB7504185EB517807D85441EC51B88E6AB75041295C8FA209D8544152B81EF568B75041E17A148E0BD8544114AE471166B75041CDCCCC3C0DD85441EC51B89E5FB75041F6285CFF15D85441295C8F025FB7504152B81E1518D8544185EB512861B750410000006028D85441E17A144E62B75041D7A370CD2CD854411F85EBC164B750417B14AE872FD8544185EB51486CB75041C3F528CC3BD8544114AE478172B75041713D0A9744D854410000004078B75041B81E85FB3FD85441C3F528BC79B750413D0AD75340D85441E17A146E7AB750417B14AEB73ED8544152B81E957EB750413333337340D85441C3F528CC7DB750418FC2F54842D85441713D0A9777B750419A99993949D85441A4703DCA7BB75041A4703DBA4CD85441AE47E1DA7DB750410AD7A3E04DD8544114AE47417FB750410AD7A3504DD8544114AE47E182B75041A4703DBA4BD8544185EB512885B75041C3F5286C49D85441666666368EB75041C3F5280C43D85441F6285C7F93B7504185EB51D83FD85441CDCCCCDCB8B750417B14AED726D85441CDCCCCCCBAB750418FC2F5F824D85441333333A3BCB750415C8FC20523D854413D0AD703BEB750415C8FC2E520D85441AE47E1FABEB750411F85EB811ED85441AE47E1AABFB7504148E17AD41BD85441E17A14FEC0B75041713D0AF711D85441B81E859BBFB7504148E17AE412D854410A000000A4703DBA82B75041EC51B8BEFCD7544185EB519880B750410AD7A380FCD754413D0AD7237FB75041F6285C4FFCD754411F85EB817EB75041F6285CDFFBD754411F85EB817EB750418FC2F518FBD75441A4703DEA7FB75041E17A143EFBD754413D0AD76382B75041E17A143EFBD7544185EB516883B75041F6285CDFFBD7544114AE478183B7504185EB5168FCD75441A4703DBA82B75041EC51B8BEFCD754410A0000000AD7A3C08AB75041B81E857B20D85441AE47E1BA87B7504114AE475120D8544185EB519884B75041CDCCCCFC1FD85441D7A370CD80B75041EC51B8EE1FD85441C3F528EC7FB75041666666B61FD854415C8FC2A57FB750419A9999291FD85441295C8F3280B750418FC2F5B81ED85441A4703D4A87B750419A9999291FD85441B81E855B8BB7504148E17AC41FD854410AD7A3C08AB75041B81E857B20D8544116000000A4703DFA94B75041333333E31ED85441F6285C8F92B750418FC2F5B81ED85441C3F5285C90B75041333333E31ED85441B81E851B8EB75041F6285CFF1ED85441A4703D3A8DB7504152B81ED51ED8544185EB51488DB75041C3F5282C1ED854413D0AD7538EB750419A9999C91DD85441CDCCCC1C98B75041D7A370AD1DD85441295C8FF297B75041666666B61FD85441C3F528AC97B750418FC2F58821D854416666666697B7504185EB517823D854418FC2F51897B7504114AE473125D85441E17A148E96B750417B14AE4727D85441295C8F0296B7504114AE47F128D85441EC51B87E95B7504152B81E7529D85441C3F528EC94B750417B14AE2729D854418FC2F53895B7504185EB511828D854413D0AD7E395B750415C8FC2A525D854415C8FC29596B75041B81E850B23D854411F85EB0197B750413D0AD73321D85441F6285C1F97B750417B14AE371FD85441A4703DFA94B75041333333E31ED85441100000003333338379B75041AE47E19AF7D7544152B81E4579B7504185EB5148F8D754411F85EB7178B75041E17A14FEF7D754415C8FC2F577B750413D0AD743F7D754410AD7A3F076B7504166666626F6D7544185EB51F875B750418FC2F598F4D75441E17A143E75B75041EC51B86EF3D754415C8FC2B574B75041C3F528BCF1D754417B14AE7774B75041AE47E1AAF0D75441EC51B8CE74B75041EC51B82EF0D754410000007075B75041CDCCCCFCEFD7544185EB51F875B75041A4703D8AF1D754419A99990977B75041713D0AF7F3D754418FC2F5E877B7504114AE4791F5D75441E17A14EE78B75041CDCCCCECF6D754413333338379B75041AE47E19AF7D75441250000001F85EB41B2B75041AE47E1FA21D85441333333A3B1B750418FC2F55823D8544152B81E95B0B7504185EB51A823D854415C8FC215B0B750416666669624D85441713D0A87AFB750413D0AD72326D85441F6285C6FAAB750410AD7A33028D85441295C8F62A8B75041E17A14CE29D85441713D0AE7A5B75041C3F528FC2AD85441B81E856BA3B75041EC51B85E29D85441B81E853BA3B75041295C8F3227D85441B81E855BA3B750415C8FC2F524D85441C3F528DCA2B75041AE47E12A22D8544100000080A0B750415C8FC2A51BD85441C3F528ACA8B750415C8FC26517D85441E17A141EA9B750419A99994918D85441CDCCCC5CA2B7504148E17A541CD85441D7A3701DA2B75041295C8FB21DD85441B81E852BA3B75041D7A3707D20D85441A4703D2AA4B750418FC2F54823D854418FC2F5E8A4B750415C8FC23525D854417B14AE67A5B7504152B81EB525D85441713D0AF7A5B7504148E17A0426D85441333333E3A7B750410AD7A3C025D8544166666636AAB7504148E17AD424D8544114AE4731ACB750413D0AD7B323D85441AE47E13AADB750419A9999C922D85441E17A147EADB75041F6285CAF21D8544166666626ADB750415C8FC22520D85441295C8FE2ABB750417B14AED71BD85441AE47E12AABB750415C8FC23519D854411F85EBC1AAB750417B14AED717D8544100000090A9B750411F85EBF117D854413D0AD763A9B750415C8FC20517D85441F6285CFFAAB75041713D0A5716D854415C8FC2F5AEB75041666666C621D8544133333393B1B75041E17A143E20D854411F85EB41B2B75041AE47E1FA21D85441160000000000003079B750417B14AEC72AD8544114AE478176B75041295C8F622BD8544185EB512874B7504148E17AC428D85441C3F528DC6EB750411F85EBC126D854419A9999F96EB75041CDCCCC6C24D8544114AE47816BB750410000004020D85441000000C067B7504148E17A941FD85441F6285CDF65B750411F85EB811ED85441B81E85AB65B75041EC51B8BE19D854417B14AE4767B750413333339313D85441D7A3700D6CB75041A4703DFA0BD85441CDCCCCDC75B750411F85EBB10AD854416666660679B7504185EB51F80AD854410AD7A3107BB75041295C8FD20BD8544185EB51987AB75041C3F5282C13D854418FC2F5B879B750410000001017D85441713D0AC777B750419A9999591AD85441AE47E1EA78B7504114AE47911DD85441000000707CB75041666666D61FD85441EC51B8CE7CB75041C3F5289C24D8544152B81E557BB75041F6285C8F27D854410000003079B750417B14AEC72AD85441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D7A3700D6CB75041A4703DFA0BD85441B8E8C32576B75041DA77C34509D85441E245D7A376B75041FA0414EE05D8544114AE471166B75041CDCCCC3C0DD854411734C42A62B750417C54728912D85441A875B89E5FB7504142A25CFF15D85441871890025FB750413D791E1518D85441685F809060B7504174A231E023D8544185EB512861B750410000006028D85441F22C39B461B750412225CD7B2AD85441D6B9144E62B75041B73170CD2CD8544175A463BA63B750410C7299622ED854411F85EBC164B750417B14AE872FD8544185EB51486CB75041C3F528CC3BD85441DD5A478172B75041D5C7099744D8544149655C0875B750414579149042D854415503014078B75041653985FB3FD85441C3F528BC79B750413D0AD75340D85441E17A146E7AB750417B14AEB73ED8544152B81E957EB750413333337340D8544107E5C3F583B7504159CF3D5A2CD85441A1195F027AB7504163A9E08B29D85441C151B8CE78B7504192B81E3529D85441CDCCCC3C73B7504185EB51F826D854413C9E98F96EB75041B4F3CB6C24D85441AE47E15A6FB75041A4703D5A21D854419A1349E168B7504140B3B73E1CD85441F13FFF2F6AB75041000CB8EE14D85441D7A3700D6CB75041A4703DFA0BD85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660145 - 177208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000062000000713D0A07E7C050413D0AD72358DA5441F6285C2FE9C050415C8FC2755BDA54413D0AD793E8C050417B14AE975FDA5441CDCCCC6CE5C05041AE47E1AA6ADA5441CDCCCC1CE3C05041A4703DFA70DA544185EB5158DDC05041B81E85BB75DA544148E17AC4E0C05041A4703D2A78DA5441AE47E1CAE2C050413D0AD7337BDA544133333373E6C05041CDCCCCFC83DA544185EB51B8E7C0504152B81EB583DA544152B81EB5E6C05041A4703D3A7DDA54418FC2F5E8E6C05041B81E853B78DA5441EC51B80EE8C05041AE47E16A71DA54417B14AE37EAC0504114AE47016BDA544114AE4791EBC050410AD7A3C066DA54415C8FC2A5ECC05041333333A362DA5441AE47E1EAECC05041333333435FDA544133333313EDC05041713D0A575DDA5441295C8F72EDC050413D0AD7635ADA5441CDCCCC5CF2C05041713D0A3758DA5441713D0A67F9C050419A99997955DA54415C8FC2F5FDC050417B14AEB752DA5441295C8FA206C15041E17A14FE4CDA5441295C8F620DC150411F85EBF146DA54417B14AE970CC150411F85EBA145DA5441295C8FB223C15041713D0AC745DA544152B81EE52DC15041B81E859B46DA5441E17A141E32C15041CDCCCC5C47DA5441B81E85BB49C15041295C8F324DDA544148E17A8449C150413D0AD7734BDA54418FC2F5F841C15041B81E85DB49DA54417B14AE473EC15041A4703D5A48DA544185EB51383BC150415C8FC21546DA544185EB515838C150419A9999B945DA5441713D0A972EC15041E17A142E46DA5441CDCCCCBC27C1504114AE476145DA54418FC2F5A823C1504148E17A1444DA5441F6285CBF1FC15041E17A148E41DA54417B14AE471BC150419A99991941DA5441F6285C7F15C150416666662641DA54410AD7A3800BC150410AD7A30044DA5441AE47E1CA04C15041F6285C0F45DA544185EB51B800C150417B14AE8744DA54417B14AEA7FCC050413D0AD70342DA5441713D0AA7F9C050410AD7A37040DA544152B81E35F8C050417B14AE474ADA544114AE4741F7C05041713D0A974ADA544152B81E45F0C05041000000E04CDA5441AE47E1AAEDC05041F6285C0F4DDA54419A999949EBC05041A4703D7A4CDA5441A4703DDAE7C05041666666D649DA544148E17AD4DFC050410000001046DA54413D0AD7D3D5C0504114AE477143DA54411F85EB31CEC05041333333B33FDA54410AD7A3E0CAC05041713D0A173FDA5441AE47E10ACCC050419A99997940DA544114AE4751BFC05041295C8FB243DA54415C8FC245BEC050413D0AD78341DA5441000000C0BBC05041E17A14AE42DA544148E17AA4BFC0504114AE47A153DA544166666606B1C050418FC2F58856DA544148E17A94ACC050419A9999E952DA5441AE47E1DAA3C05041C3F528CC54DA5441C3F5286C9FC05041A4703D5A55DA5441666666C69AC0504185EB514855DA5441A4703DDA94C05041EC51B8AE58DA54410000005091C05041B81E85BB5ADA5441EC51B8DE8BC05041B81E85DB5DDA5441E17A14DE8BC05041CDCCCC4C5EDA544114AE47E18BC05041295C8F425FDA544185EB51088CC050418FC2F53876DA5441CDCCCC4C92C0504152B81EB578DA54411F85EB219AC050413D0AD7237BDA54419A9999F99DC05041333333937DDA544100000080A2C0504148E17AF484DA5441F6285C0FA6C05041295C8FE28CDA544100000030A7C050413333336391DA5441B81E850BA9C050413333330397DA5441F6285C0FAFC05041713D0A3796DA544148E17A34AEC0504114AE47518EDA54410AD7A3C0ABC050415C8FC2658ADA5441713D0A87AAC050415C8FC28585DA544114AE4751A8C050413333339380DA5441D7A370EDA7C050413D0AD7437BDA544114AE47C1A5C05041F6285CEF7ADA54413D0AD743A2C05041F6285CFF70DA544148E17AB49FC050415C8FC21568DA5441666666369FC05041EC51B8BE61DA5441713D0A87A3C05041333333435EDA5441CDCCCC7CABC050411F85EBB164DA544152B81E75B0C050413D0AD74364DA54419A9999A9BDC0504148E17AF45FDA5441EC51B82EC0C05041E17A143E62DA54417B14AEF7C5C05041AE47E15A5FDA54413D0AD713CCC050413D0AD7435DDA5441C3F5282CD3C050415C8FC2D55ADA5441295C8F92E0C05041AE47E17A57DA5441713D0A07E7C050413D0AD72358DA54411C0000003D0AD773A1C050419A9999E95ADA54415C8FC2B5A2C050410AD7A3705BDA54418FC2F538A2C05041F6285C5F5CDA5441AE47E1FAA1C05041C3F528DC5CDA54413D0AD743A2C050413D0AD7135EDA54413D0AD773A1C05041CDCCCC0C5FDA544114AE4751A0C050413D0AD7935FDA5441E17A142E9FC0504114AE47C160DA5441EC51B85E9EC05041C3F5284C62DA54418FC2F5689EC0504185EB519863DA544152B81E359EC05041AE47E18A65DA54410AD7A3509DC05041D7A3702D65DA5441C3F5281C9DC05041AE47E1BA64DA5441333333F39CC050410000000064DA5441C3F5286C9CC05041EC51B86E63DA54415C8FC2C59BC05041E17A14BE62DA54410AD7A3B09BC050418FC2F5F861DA5441E17A140E9CC0504114AE47C160DA5441713D0A579CC050416666660660DA5441A4703DDA9BC0504114AE47715EDA5441EC51B83E9BC05041AE47E14A5CDA5441E17A148E9AC0504152B81E855BDA5441000000509AC050418FC2F5385ADA5441EC51B83E9BC05041A4703D4A59DA544185EB51E89CC05041AE47E12A59DA544152B81E359EC05041295C8F9259DA5441713D0A779FC050413D0AD7235ADA54413D0AD773A1C050419A9999E95ADA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000228CEB950EC15041EA9D621F43DA5441C0D3A3800BC150418FD7A30044DA5441D2F214EF05C15041A80E4FE144DA54418D8D8A1809C15041031311F746DA54417B14AE970CC150411F85EBA145DA5441C927500D13C1504130364CAC45DA5441745C8FB223C150413B3D0AC745DA5441CAD0483428C15041ACCBF12446DA544152B81EE52DC15041B81E859B46DA5441E17A141E32C15041CDCCCC5C47DA5441AE1E85BB49C15041275C8F324DDA544123E17A8449C15041350AD7734BDA54418FC2F5F841C15041B81E85DB49DA5441F75046EA3FC15041BD1FDA0449DA54412514AE473EC15041B9703D5A48DA54412FEB51383BC15041518FC21546DA54413AEB515838C15041BA9999B945DA544112CEE78C35C15041B809F8DA45DA5441713D0A972EC15041E17A142E46DA5441C2CCCCBC27C1504114AE476145DA544139C2F5A823C1504173E17A1444DA5441467741A921C1504104243ECA42DA5441F6285CBF1FC15041E17A148E41DA5441A6274F5C1DC15041E9B4D84F41DA54418614AE471BC15041CF99991941DA544136295C7F15C150418766662641DA5441228CEB950EC15041EA9D621F43DA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660145 - 351464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000062000000713D0A07E7C050413D0AD72358DA5441F6285C2FE9C050415C8FC2755BDA54413D0AD793E8C050417B14AE975FDA5441CDCCCC6CE5C05041AE47E1AA6ADA5441CDCCCC1CE3C05041A4703DFA70DA544185EB5158DDC05041B81E85BB75DA544148E17AC4E0C05041A4703D2A78DA5441AE47E1CAE2C050413D0AD7337BDA544133333373E6C05041CDCCCCFC83DA544185EB51B8E7C0504152B81EB583DA544152B81EB5E6C05041A4703D3A7DDA54418FC2F5E8E6C05041B81E853B78DA5441EC51B80EE8C05041AE47E16A71DA54417B14AE37EAC0504114AE47016BDA544114AE4791EBC050410AD7A3C066DA54415C8FC2A5ECC05041333333A362DA5441AE47E1EAECC05041333333435FDA544133333313EDC05041713D0A575DDA5441295C8F72EDC050413D0AD7635ADA5441CDCCCC5CF2C05041713D0A3758DA5441713D0A67F9C050419A99997955DA54415C8FC2F5FDC050417B14AEB752DA5441295C8FA206C15041E17A14FE4CDA5441295C8F620DC150411F85EBF146DA54417B14AE970CC150411F85EBA145DA5441295C8FB223C15041713D0AC745DA544152B81EE52DC15041B81E859B46DA5441E17A141E32C15041CDCCCC5C47DA5441B81E85BB49C15041295C8F324DDA544148E17A8449C150413D0AD7734BDA54418FC2F5F841C15041B81E85DB49DA54417B14AE473EC15041A4703D5A48DA544185EB51383BC150415C8FC21546DA544185EB515838C150419A9999B945DA5441713D0A972EC15041E17A142E46DA5441CDCCCCBC27C1504114AE476145DA54418FC2F5A823C1504148E17A1444DA5441F6285CBF1FC15041E17A148E41DA54417B14AE471BC150419A99991941DA5441F6285C7F15C150416666662641DA54410AD7A3800BC150410AD7A30044DA5441AE47E1CA04C15041F6285C0F45DA544185EB51B800C150417B14AE8744DA54417B14AEA7FCC050413D0AD70342DA5441713D0AA7F9C050410AD7A37040DA544152B81E35F8C050417B14AE474ADA544114AE4741F7C05041713D0A974ADA544152B81E45F0C05041000000E04CDA5441AE47E1AAEDC05041F6285C0F4DDA54419A999949EBC05041A4703D7A4CDA5441A4703DDAE7C05041666666D649DA544148E17AD4DFC050410000001046DA54413D0AD7D3D5C0504114AE477143DA54411F85EB31CEC05041333333B33FDA54410AD7A3E0CAC05041713D0A173FDA5441AE47E10ACCC050419A99997940DA544114AE4751BFC05041295C8FB243DA54415C8FC245BEC050413D0AD78341DA5441000000C0BBC05041E17A14AE42DA544148E17AA4BFC0504114AE47A153DA544166666606B1C050418FC2F58856DA544148E17A94ACC050419A9999E952DA5441AE47E1DAA3C05041C3F528CC54DA5441C3F5286C9FC05041A4703D5A55DA5441666666C69AC0504185EB514855DA5441A4703DDA94C05041EC51B8AE58DA54410000005091C05041B81E85BB5ADA5441EC51B8DE8BC05041B81E85DB5DDA5441E17A14DE8BC05041CDCCCC4C5EDA544114AE47E18BC05041295C8F425FDA544185EB51088CC050418FC2F53876DA5441CDCCCC4C92C0504152B81EB578DA54411F85EB219AC050413D0AD7237BDA54419A9999F99DC05041333333937DDA544100000080A2C0504148E17AF484DA5441F6285C0FA6C05041295C8FE28CDA544100000030A7C050413333336391DA5441B81E850BA9C050413333330397DA5441F6285C0FAFC05041713D0A3796DA544148E17A34AEC0504114AE47518EDA54410AD7A3C0ABC050415C8FC2658ADA5441713D0A87AAC050415C8FC28585DA544114AE4751A8C050413333339380DA5441D7A370EDA7C050413D0AD7437BDA544114AE47C1A5C05041F6285CEF7ADA54413D0AD743A2C05041F6285CFF70DA544148E17AB49FC050415C8FC21568DA5441666666369FC05041EC51B8BE61DA5441713D0A87A3C05041333333435EDA5441CDCCCC7CABC050411F85EBB164DA544152B81E75B0C050413D0AD74364DA54419A9999A9BDC0504148E17AF45FDA5441EC51B82EC0C05041E17A143E62DA54417B14AEF7C5C05041AE47E15A5FDA54413D0AD713CCC050413D0AD7435DDA5441C3F5282CD3C050415C8FC2D55ADA5441295C8F92E0C05041AE47E17A57DA5441713D0A07E7C050413D0AD72358DA54411C0000003D0AD773A1C050419A9999E95ADA54415C8FC2B5A2C050410AD7A3705BDA54418FC2F538A2C05041F6285C5F5CDA5441AE47E1FAA1C05041C3F528DC5CDA54413D0AD743A2C050413D0AD7135EDA54413D0AD773A1C05041CDCCCC0C5FDA544114AE4751A0C050413D0AD7935FDA5441E17A142E9FC0504114AE47C160DA5441EC51B85E9EC05041C3F5284C62DA54418FC2F5689EC0504185EB519863DA544152B81E359EC05041AE47E18A65DA54410AD7A3509DC05041D7A3702D65DA5441C3F5281C9DC05041AE47E1BA64DA5441333333F39CC050410000000064DA5441C3F5286C9CC05041EC51B86E63DA54415C8FC2C59BC05041E17A14BE62DA54410AD7A3B09BC050418FC2F5F861DA5441E17A140E9CC0504114AE47C160DA5441713D0A579CC050416666660660DA5441A4703DDA9BC0504114AE47715EDA5441EC51B83E9BC05041AE47E14A5CDA5441E17A148E9AC0504152B81E855BDA5441000000509AC050418FC2F5385ADA5441EC51B83E9BC05041A4703D4A59DA544185EB51E89CC05041AE47E12A59DA544152B81E359EC05041295C8F9259DA5441713D0A779FC050413D0AD7235ADA54413D0AD773A1C050419A9999E95ADA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000228CEB950EC15041EA9D621F43DA5441C0D3A3800BC150418FD7A30044DA5441D2F214EF05C15041A80E4FE144DA54418D8D8A1809C15041031311F746DA54417B14AE970CC150411F85EBA145DA5441C927500D13C1504130364CAC45DA5441745C8FB223C150413B3D0AC745DA5441CAD0483428C15041ACCBF12446DA544152B81EE52DC15041B81E859B46DA5441E17A141E32C15041CDCCCC5C47DA5441AE1E85BB49C15041275C8F324DDA544123E17A8449C15041350AD7734BDA54418FC2F5F841C15041B81E85DB49DA5441F75046EA3FC15041BD1FDA0449DA54412514AE473EC15041B9703D5A48DA54412FEB51383BC15041518FC21546DA54413AEB515838C15041BA9999B945DA544112CEE78C35C15041B809F8DA45DA5441713D0A972EC15041E17A142E46DA5441C2CCCCBC27C1504114AE476145DA544139C2F5A823C1504173E17A1444DA5441467741A921C1504104243ECA42DA5441F6285CBF1FC15041E17A148E41DA5441A6274F5C1DC15041E9B4D84F41DA54418614AE471BC15041CF99991941DA544136295C7F15C150418766662641DA5441228CEB950EC15041EA9D621F43DA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660268 - 177308
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000028000000E17A147E88B65041000000C09DE254417B14AE7788B65041F6285CFFB7E254410000008089B65041A4703DAAB7E2544114AE4701CDB650419A9999E9A1E254417B14AE87CCB65041EC51B81EA1E25441713D0A37ADB650419A9999C96CE254413D0AD7E3AAB650410000003068E25441F6285C2FAAB65041713D0A3765E254418FC2F578AAB65041A4703D1A62E25441CDCCCCCCA7B650413D0AD7A35EE2544152B81E15A6B65041A4703DCA5DE25441F6285C0FA5B650411F85EBC15DE2544148E17A54A4B650417B14AEA75FE25441A4703D1AA5B6504148E17A0463E25441AE47E1CAA4B650411F85EB4164E25441D7A3707DA3B65041000000F065E25441AE47E13AA2B650411F85EB0169E25441A4703D1A9FB65041C3F528FC6CE25441B81E85BB9DB6504152B81EF56DE25441EC51B86E9CB65041000000C06DE2544148E17A749BB65041666666B66BE254418FC2F58899B650415C8FC2756AE25441D7A370CD98B650418FC2F5C868E254410AD7A3E096B65041E17A147E69E25441A4703D8A94B650413D0AD7036AE25441E17A143E97B65041E17A144E6BE25441EC51B80E98B6504185EB51786CE254418FC2F5D897B6504185EB51986DE2544114AE471197B6504152B81E956EE254418FC2F54895B65041AE47E11A6FE25441A4703DCA91B65041000000906FE2544185EB518893B65041AE47E18A71E254410AD7A35094B650417B14AEF772E25441A4703DCA93B65041333333F374E254418FC2F5C892B650418FC2F51875E2544114AE47618EB65041295C8F1276E2544152B81E058AB6504148E17A3479E25441E17A149E8AB65041B81E857B7DE2544148E17A8488B650413333332382E25441E17A147E88B65041000000C09DE25441
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000FE73607B88B650419D0B1FD6A8E25441C914AE7788B6504139E95AFFB7E25441534DFC1189B65041FE1AABCDB7E254410000008089B65041A4703DAAB7E2544114AE4701CDB650419A9999E9A1E254417B14AE87CCB65041EC51B81EA1E254412EC1084BBDB65041E8EA19A887E2544140A80937ADB65041F70F9AC96CE25441B5D8D6E3AAB650412AE0FF2F68E25441EBB65B2FAAB65041BEB00A3765E2544154A2F478AAB65041D6453E1A62E25441F2B9644BA8B65041C8DBDA475FE25441CDCCCCCCA7B650413D0AD7A35EE2544152B81E15A6B65041A4703DCA5DE254411C783DD5A5B650418FA735C85DE25441F4A55B0FA5B65041A6D9ECC15DE2544148E17A54A4B650417B14AEA75FE25441A4703D1AA5B6504148E17A0463E25441AE47E1CAA4B650411F85EB4164E25441C316C946A4B65041A0904CEC64E254414BBF717DA3B65041BF1501F065E25441F508D361A2B65041032208A368E25441C0A7E03AA2B65041D085EC0169E25441C2A5D86EA0B65041559DFB4A6BE25441BD753C1A9FB65041650D2AFC6CE254413924A9669EB65041A694A27B6DE25441DAB083BB9DB65041455B1FF56DE25441D5F8B76E9CB65041486D01C06DE25441A249CCA89BB65041EA9A73236CE25441F64C7B749BB65041DA4667B66BE254418FC2F58899B650415C8FC2756AE254412914AD5899B650415E8559076AE25441C39A6FCD98B65041C2D0F6C868E2544156BEA3E096B65041B26E157E69E25441930E3F8A94B65041D3CFD7036AE2544146D88A3296B65041D9EC5FCE6AE25441102B143E97B650415E43134E6BE254413A8B528297B650417706A1AF6BE25441EC51B80E98B6504185EB51786CE254411A90F5D897B65041B16A52986DE25441866C0DAB97B65041C7AD70D26DE254412669461197B65041AD7F1F956EE254416544F54895B650411A6BE21A6FE254410E74534293B650418715C55E6FE25441DCC63DCA91B65041B7F4FF8F6FE254411F2AB6B892B65041C091F99E70E2544185EB518893B65041AE47E18A71E254410AD7A35094B650417B14AEF772E25441A4703DCA93B65041333333F374E254418FC2F5C892B650418FC2F51875E254411A3F943490B65041AFD820AB75E25441610447618EB650415365901276E25441F9B81E058AB65041F3E57A3479E25441AED503918AB650417AD1FC1D7DE2544172BD149E8AB650418C4D867B7DE254411B1F7B8488B65041EFE4322382E254417B67157E88B650414292FEBF9DE25441FE73607B88B650419D0B1FD6A8E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956655 - 2836872
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000018000000FD533DCBFD5051414F75B2EAF59D544147D57AE724515141B3E6961BEF9D5441A03DBAFF28515141DFC0D16CEE9D544147AA6D602C515141109710D5ED9D5441110E868E2D51514145180CA0ED9D544118D655FD2D5151413B9B6060EC9D5441AE0CEF812E5151412045563FEB9D5441D687292A2F5151414E3EA1D0E99D5441228A540932515141E6259326E59D5441E707FFA828515141FB6F6FB7C69D5441E1781CBF275151414F2EFD37C69D5441882F573926515141EC328A5CC59D54417279D98C2351514115925323C39D5441D8F4BF8D21515141299E84EAC09D54413D0AD7C31E515141000000D0BD9D544178200F811B51514138F467F3B89D54410818810E185151419AE01135B09D5441A8D060B5155151414F981CF5A99D544113D3BC2B145151415A8BABDAA99D544177590D2D125151417E6288B7A99D54412398ACD210515141231317EBA99D5441264C1E460F515141E9614B39AA9D54416EC69E0BE6505141DD442A53B29D5441FD533DCBFD5051414F75B2EAF59D5441
+</a>
+
+<b>
+010600000001000000010300000001000000210000007FFE9AC032515141C4C8B5EFE39D544116031ADB32515141F99B923EE49D544114AE473135515141C3F528CCDF9D544185EB51D836515141713D0A37DB9D5441713D0AF73651514114AE47A1DA9D54410000008037515141E17A140ED89D54418FC2F538375151410AD7A300D49D5441000000A03551514185EB51D8CF9D5441E17A14FE3351514148E17A04CE9D54410AD7A3302C5151413D0AD7A3C89D5441C46AE2FA285151411092A4D9C69D5441DEE22AFF28515141C01364E6C69D544185EB51582651514148E17A74C59D54413333330324515141713D0AA7C39D54413D0AD7C31E515141000000D0BD9D54415C8FC2751B515141295C8FE2B89D5441EC51B8CE155151418FC2F578AA9D5441C3F528AC1551514152B81EF5A99D5441E17A14EE11515141333333B3A99D5441713D0A07ED505141A4703DFAB09D544146D642CCE5505141B0595267B29D5441D7A3708DC8505141C3F5282CB89D544185EB51E8C7505141EC51B84EB99D5441C3F528ECD2505141C3F5287CD89D5441E17A14EEDE505141C3F5286CFA9D5441F6285C3FE050514114AE4731FB9D54416F47C80AFE5051412792C4F6F59D5441C3F528FC00515141295C8F72F59D544185EB51A82D515141B81E859BED9D5441000000D02D515141333333C3EC9D5441CDCCCC2C2F515141AE47E1CAE99D5441713D0A2731515141666666A6E69D54417FFE9AC032515141C4C8B5EFE39D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956655 - 3490242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000018000000FD533DCBFD5051414F75B2EAF59D544147D57AE724515141B3E6961BEF9D5441A03DBAFF28515141DFC0D16CEE9D544147AA6D602C515141109710D5ED9D5441110E868E2D51514145180CA0ED9D544118D655FD2D5151413B9B6060EC9D5441AE0CEF812E5151412045563FEB9D5441D687292A2F5151414E3EA1D0E99D5441228A540932515141E6259326E59D5441E707FFA828515141FB6F6FB7C69D5441E1781CBF275151414F2EFD37C69D5441882F573926515141EC328A5CC59D54417279D98C2351514115925323C39D5441D8F4BF8D21515141299E84EAC09D54413D0AD7C31E515141000000D0BD9D544178200F811B51514138F467F3B89D54410818810E185151419AE01135B09D5441A8D060B5155151414F981CF5A99D544113D3BC2B145151415A8BABDAA99D544177590D2D125151417E6288B7A99D54412398ACD210515141231317EBA99D5441264C1E460F515141E9614B39AA9D54416EC69E0BE6505141DD442A53B29D5441FD533DCBFD5051414F75B2EAF59D5441
+</a>
+
+<b>
+010600000001000000010300000001000000210000007FFE9AC032515141C4C8B5EFE39D544116031ADB32515141F99B923EE49D544114AE473135515141C3F528CCDF9D544185EB51D836515141713D0A37DB9D5441713D0AF73651514114AE47A1DA9D54410000008037515141E17A140ED89D54418FC2F538375151410AD7A300D49D5441000000A03551514185EB51D8CF9D5441E17A14FE3351514148E17A04CE9D54410AD7A3302C5151413D0AD7A3C89D5441C46AE2FA285151411092A4D9C69D5441DEE22AFF28515141C01364E6C69D544185EB51582651514148E17A74C59D54413333330324515141713D0AA7C39D54413D0AD7C31E515141000000D0BD9D54415C8FC2751B515141295C8FE2B89D5441EC51B8CE155151418FC2F578AA9D5441C3F528AC1551514152B81EF5A99D5441E17A14EE11515141333333B3A99D5441713D0A07ED505141A4703DFAB09D544146D642CCE5505141B0595267B29D5441D7A3708DC8505141C3F5282CB89D544185EB51E8C7505141EC51B84EB99D5441C3F528ECD2505141C3F5287CD89D5441E17A14EEDE505141C3F5286CFA9D5441F6285C3FE050514114AE4731FB9D54416F47C80AFE5051412792C4F6F59D5441C3F528FC00515141295C8F72F59D544185EB51A82D515141B81E859BED9D5441000000D02D515141333333C3EC9D5441CDCCCC2C2F515141AE47E1CAE99D5441713D0A2731515141666666A6E69D54417FFE9AC032515141C4C8B5EFE39D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663919 - 2976404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC2B54CF45041C3F5284CDA4B5441666666564CF45041AE47E11AD34B54417B14AEA74BF45041295C8FD2CC4B5441EC51B87E49F4504114AE4731C04B5441713D0A4749F45041EC51B89EC04B544185EB519845F450411F85EB21BE4B54418FC2F5E840F45041CDCCCC1CBB4B5441713D0AC73DF4504166666626B94B5441333333D33BF4504166666626B84B5441A4703D5A33F4504185EB51D8B24B5441CDCCCCFC1EF450418FC2F5C8A44B54413D0AD7E30CF4504166666686984B5441EC51B89EF1F350418FC2F568874B5441D7A370FDE7F350419A9999A9804B5441AE47E18AD9F3504152B81EF5934B5441F6285CCFE4F35041295C8F829A4B544166666666F5F350410AD7A3D0A04B54410AD7A34001F45041A4703D0AA64B5441F6285CDF0AF4504152B81E35AB4B5441E17A146E18F45041F6285C5FB44B544148E17AC421F450419A999909BD4B544152B81E6531F45041666666D6C84B5441295C8FD23FF45041D7A370ADD24B54415C8FC2B54CF45041C3F5284CDA4B5441
+</a>
+
+<b>
+010600000001000000010300000001000000530000007FB11C390FF450419B58041B9A4B5441192AFF4710F450416E8886D29A4B544172E6E13C14F45041E54AB2809D4B5441E223901F15F45041AC64421A9E4B54413755512E16F450413009AED19E4B5441D78E53A71CF4504194DD3434A34B5441568515E21DF4504185BB6F09A44B5441CDCCCCFC1EF450418FC2F5C8A44B5441C2EDA1AC20F4504173E618F3A54B54416E31523621F450410E4F2852A64B544125CC471C24F450419F076852A84B54410AF9C88D25F45041372D8351A94B5441DA69628428F45041B0E33F5DAB4B5441721299852AF45041B08092BFAC4B5441A3BF9D852BF4504174CC5370AD4B5441055B113B2DF450418210589EAE4B54415A4FA44B33F450414FBEC7CDB24B5441350640A837F450413E1B568AB54B5441990DE3DB3BF450419460D92AB84B544141331F913DF45041E1128900B94B54417F0E24E53EF450410D2F9DD5B94B5441FD83596F40F45041898F9CD0BA4B54418FC2F5E840F45041CDCCCC1CBB4B5441BEE3408641F45041B5693182BB4B544121CB425743F450414CD844AABC4B544139A1D20144F45041183CE31BBD4B544185EB519845F450411F85EB21BE4B544186BEA44049F450415334669AC04B54416A8FEE5949F4504103739679C04B54418E4FAF7E49F4504148635931C04B5441FD8FC8D748F450418862A56EBC4B5441BA3BEC6648F4504101BF04FAB94B5441331CF32448F4504171333F8BB84B5441DDAC685947F45041ACEC7550B44B54412B7901C746F45041C271F5EDB04B54417288EE6446F45041121D37D4AE4B5441773664B945F4504158CC492BAB4B544157904C4E45F450417500B502A94B54415C8FC2D544F4504100000050A64B54410AD7A37044F4504185EB5128A44B54419A99995942F450410AD7A390984B5441713D0A7741F4504114AE47C1914B5441B035F92D41F450411A9DD7228D4B5441EAD413203FF45041332B9FB38B4B54413FABE9ED3CF45041F58BFF0D8A4B5441C3F5289C3BF45041C3F5281C894B54418EE3073137F450411BA88E2F874B5441B81E85CB2FF45041666666E6834B54418597A8212BF45041EBC75A55824B5441992570B229F450414AA9F196814B544132A621E626F450414000FE4B804B5441504AE6AA24F450416CEBE8327F4B5441820F691723F45041B46F5C1E7E4B54416B1F4FAA20F450413D9EAB6F7C4B5441E199E93C1CF45041BD230776794B5441176AA86918F45041396DFDCD764B54411568277816F450416CC6507A754B54414E6A7CF610F450418AC241B4714B5441037E5EA80AF450410F8A5FBF6D4B544168C0085D05F45041879858346A4B5441178694A2FBF35041384252FF634B5441D1B91047F9F350417BCF6ADB664B54410C8FAD70F5F3504198CF1C0B6B4B5441F94EDED2F2F35041AA0FECA86D4B5441B7F9549DF5F35041BC4FBB46704B54414AA44020F2F350418C3A01AF754B54416BB921A0EAF35041CE8F8AE4724B544114AE47D1E3F35041C3F528DC7D4B5441D7A370FDE7F350419A9999A9804B54414A7E10F9EDF350411FCFA6CD844B5441E4BB9FE5EFF3504158EEC928864B5441C9EF5F47F1F3504163D54920874B544164C5DD7CF1F3504191371844874B544171120A3EF2F35041739D66C5874B5441075210B1F4F35041462C3353894B544101912C61F7F35041A5A058068B4B544157FAFAF9F9F35041364D96A78C4B544106472793FCF35041ABE60E498E4B5441A641B97B03F450417413099F924B54410AF1F13D07F450412C1AF0FA944B5441F900578009F45041A022F265964B54413D0AD7E30CF4504166666686984B54417FB11C390FF450419B58041B9A4B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663919 - 5248536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC2B54CF45041C3F5284CDA4B5441666666564CF45041AE47E11AD34B54417B14AEA74BF45041295C8FD2CC4B5441EC51B87E49F4504114AE4731C04B5441713D0A4749F45041EC51B89EC04B544185EB519845F450411F85EB21BE4B54418FC2F5E840F45041CDCCCC1CBB4B5441713D0AC73DF4504166666626B94B5441333333D33BF4504166666626B84B5441A4703D5A33F4504185EB51D8B24B5441CDCCCCFC1EF450418FC2F5C8A44B54413D0AD7E30CF4504166666686984B5441EC51B89EF1F350418FC2F568874B5441D7A370FDE7F350419A9999A9804B5441AE47E18AD9F3504152B81EF5934B5441F6285CCFE4F35041295C8F829A4B544166666666F5F350410AD7A3D0A04B54410AD7A34001F45041A4703D0AA64B5441F6285CDF0AF4504152B81E35AB4B5441E17A146E18F45041F6285C5FB44B544148E17AC421F450419A999909BD4B544152B81E6531F45041666666D6C84B5441295C8FD23FF45041D7A370ADD24B54415C8FC2B54CF45041C3F5284CDA4B5441
+</a>
+
+<b>
+010600000001000000010300000001000000530000007FB11C390FF450419B58041B9A4B5441192AFF4710F450416E8886D29A4B544172E6E13C14F45041E54AB2809D4B5441E223901F15F45041AC64421A9E4B54413755512E16F450413009AED19E4B5441D78E53A71CF4504194DD3434A34B5441568515E21DF4504185BB6F09A44B5441CDCCCCFC1EF450418FC2F5C8A44B5441C2EDA1AC20F4504173E618F3A54B54416E31523621F450410E4F2852A64B544125CC471C24F450419F076852A84B54410AF9C88D25F45041372D8351A94B5441DA69628428F45041B0E33F5DAB4B5441721299852AF45041B08092BFAC4B5441A3BF9D852BF4504174CC5370AD4B5441055B113B2DF450418210589EAE4B54415A4FA44B33F450414FBEC7CDB24B5441350640A837F450413E1B568AB54B5441990DE3DB3BF450419460D92AB84B544141331F913DF45041E1128900B94B54417F0E24E53EF450410D2F9DD5B94B5441FD83596F40F45041898F9CD0BA4B54418FC2F5E840F45041CDCCCC1CBB4B5441BEE3408641F45041B5693182BB4B544121CB425743F450414CD844AABC4B544139A1D20144F45041183CE31BBD4B544185EB519845F450411F85EB21BE4B544186BEA44049F450415334669AC04B54416A8FEE5949F4504103739679C04B54418E4FAF7E49F4504148635931C04B5441FD8FC8D748F450418862A56EBC4B5441BA3BEC6648F4504101BF04FAB94B5441331CF32448F4504171333F8BB84B5441DDAC685947F45041ACEC7550B44B54412B7901C746F45041C271F5EDB04B54417288EE6446F45041121D37D4AE4B5441773664B945F4504158CC492BAB4B544157904C4E45F450417500B502A94B54415C8FC2D544F4504100000050A64B54410AD7A37044F4504185EB5128A44B54419A99995942F450410AD7A390984B5441713D0A7741F4504114AE47C1914B5441B035F92D41F450411A9DD7228D4B5441EAD413203FF45041332B9FB38B4B54413FABE9ED3CF45041F58BFF0D8A4B5441C3F5289C3BF45041C3F5281C894B54418EE3073137F450411BA88E2F874B5441B81E85CB2FF45041666666E6834B54418597A8212BF45041EBC75A55824B5441992570B229F450414AA9F196814B544132A621E626F450414000FE4B804B5441504AE6AA24F450416CEBE8327F4B5441820F691723F45041B46F5C1E7E4B54416B1F4FAA20F450413D9EAB6F7C4B5441E199E93C1CF45041BD230776794B5441176AA86918F45041396DFDCD764B54411568277816F450416CC6507A754B54414E6A7CF610F450418AC241B4714B5441037E5EA80AF450410F8A5FBF6D4B544168C0085D05F45041879858346A4B5441178694A2FBF35041384252FF634B5441D1B91047F9F350417BCF6ADB664B54410C8FAD70F5F3504198CF1C0B6B4B5441F94EDED2F2F35041AA0FECA86D4B5441B7F9549DF5F35041BC4FBB46704B54414AA44020F2F350418C3A01AF754B54416BB921A0EAF35041CE8F8AE4724B544114AE47D1E3F35041C3F528DC7D4B5441D7A370FDE7F350419A9999A9804B54414A7E10F9EDF350411FCFA6CD844B5441E4BB9FE5EFF3504158EEC928864B5441C9EF5F47F1F3504163D54920874B544164C5DD7CF1F3504191371844874B544171120A3EF2F35041739D66C5874B5441075210B1F4F35041462C3353894B544101912C61F7F35041A5A058068B4B544157FAFAF9F9F35041364D96A78C4B544106472793FCF35041ABE60E498E4B5441A641B97B03F450417413099F924B54410AF1F13D07F450412C1AF0FA944B5441F900578009F45041A022F265964B54413D0AD7E30CF4504166666686984B54417FB11C390FF450419B58041B9A4B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>434855 - 434987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+0106000000010000000103000000010000001A000000295C8FE21AB05041000000B0E4E35441A4703DCA1DB050419A999909E5E35441A4703DBA36B050419A9999D9CCE35441333333F302B05041AE47E14AB9E35441295C8FA2F4AF5041E17A14BEAFE3544133333323EEAF50417B14AEC7ADE35441EC51B82EECAF5041AE47E19AADE35441EC51B85EEAAF5041EC51B85EAEE35441295C8FE2E8AF5041713D0A97AFE354417B14AE67E8AF50413D0AD753B2E35441A4703D8AE8AF5041713D0A07B6E35441C3F528CCE8AF504185EB5108BDE3544114AE47E1E8AF5041E17A14FEC4E3544114AE4751EBAF5041713D0A67C5E354411F85EB51ECAF504114AE47D1BEE35441295C8F52EDAF504114AE47E1BEE35441DF83BAB9F0AF504136297D94BFE3544135EF95E0FCAF5041B6EBAF4BC4E35441178661D809B05041BEF05031C9E35441A46954B817B05041C6F5F116CEE35441E3E0100420B050416F771EDFD1E354418D179E0D24B05041F57F6F59D3E354413EFE5C0224B050411EBF3D83D3E354410480A5F42BB0504156116C5DD6E354411F85EB7120B050410AD7A3C0E0E35441295C8FE21AB05041000000B0E4E35441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE570C2424B05041F9FD548FD3E354413EFE5C0224B050411EBF3D83D3E354418D179E0D24B05041F57F6F59D3E35441E3E0100420B050416F771EDFD1E35441E41C2DD016B05041C6F5F116CEE3544135EF95E0FCAF5041B6EBAF4BC4E35441DF83BAB9F0AF504136297D94BFE35441295C8F52EDAF504114AE47E1BEE354411F85EB51ECAF504114AE47D1BEE3544114AE4751EBAF5041713D0A67C5E3544114AE47E1E8AF5041E17A14FEC4E35441A4703D5AE4AF5041333333D3E2E35441E17A147EE2AF504185EB51B8EBE354413D0AD773E0AF50419A999979F5E354411F85EBF1DEAF50417B14AE77FBE35441F6285CEFDBAF50413D0AD74301E4544148E17AD4E9AF504185EB51E8FEE35441713D0AD7F6AF504114AE4771FAE354413D0AD7B3FDAF5041EC51B85EF7E354417B14AEF70BB050418FC2F518EFE35441295C8FE21AB05041000000B0E4E3544129BA20B220B050414764B286E0E35441E034AF0322B0504165451356DFE3544172C1FED52BB0504149936B52D6E35441EE570C2424B05041F9FD548FD3E35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664016 - 208956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -648  </desc>
+<a>
+01060000000100000001030000000100000013000000E17A14CEED2A51411F85EBB1853354419A9999D9EB2A5141EC51B87E853354417B14AE17EA2A5141E17A140E863354419A9999F9E82A51410AD7A340873354418FC2F518E82A5141A4703DBA883354410AD7A360E72A51417B14AE678A3354419A999919E72A51410AD7A3008C33544185EB5138E72A5141F6285C8F8D3354413D0AD793E72A5141AE47E15A8F335441D7A3702DE82A5141713D0A279133544114AE4741E92A51413D0AD7D392335441295C8F52EA2A51416666662694335441000000F0F12A5141713D0A179E335441D7A3702DF42A5141000000E09B33544152B81ED5F42A5141EC51B83E8A335441A4703D5AF42A5141A4703DBA88335441D7A3701DF32A5141D7A3707D873354419A999999F02A5141E17A147E86335441E17A14CEED2A51411F85EBB185335441
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A999919E72A51410AD7A3008C335441306FFE3BE72A51417376CEA18D3354418B3A024FE72A51415B8E47018E3354410C0BE05CE72A51419B19E7468E33544135886A95E72A514131139A5F8F335441E43E5235E82A51413CA84A3391335441BD76219AEB2A5141B4AAC66C9333544147AB7B64F02A5141785726809933544174092625F22A514176811A309C335441BA0E5932F32A51418F7181089933544116A1B903F42A514162CF870F953354419767D0E5F32A5141670D5CC78A33544145D56F14F32A514168563A5388335441C6A427EBF02A5141AE226D9E863354412E2426A6F02A514197A30E8386335441E17A14CEED2A51411F85EBB1853354419A9999D9EB2A5141EC51B87E853354417B14AE17EA2A5141E17A140E863354419A9999F9E82A51410AD7A340873354418FC2F518E82A5141A4703DBA883354410AD7A360E72A51417B14AE678A3354419A999919E72A51410AD7A3008C335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664016 - 395330
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -648  </desc>
+<a>
+01060000000100000001030000000100000013000000E17A14CEED2A51411F85EBB1853354419A9999D9EB2A5141EC51B87E853354417B14AE17EA2A5141E17A140E863354419A9999F9E82A51410AD7A340873354418FC2F518E82A5141A4703DBA883354410AD7A360E72A51417B14AE678A3354419A999919E72A51410AD7A3008C33544185EB5138E72A5141F6285C8F8D3354413D0AD793E72A5141AE47E15A8F335441D7A3702DE82A5141713D0A279133544114AE4741E92A51413D0AD7D392335441295C8F52EA2A51416666662694335441000000F0F12A5141713D0A179E335441D7A3702DF42A5141000000E09B33544152B81ED5F42A5141EC51B83E8A335441A4703D5AF42A5141A4703DBA88335441D7A3701DF32A5141D7A3707D873354419A999999F02A5141E17A147E86335441E17A14CEED2A51411F85EBB185335441
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A999919E72A51410AD7A3008C335441306FFE3BE72A51417376CEA18D3354418B3A024FE72A51415B8E47018E3354410C0BE05CE72A51419B19E7468E33544135886A95E72A514131139A5F8F335441E43E5235E82A51413CA84A3391335441BD76219AEB2A5141B4AAC66C9333544147AB7B64F02A5141785726809933544174092625F22A514176811A309C335441BA0E5932F32A51418F7181089933544116A1B903F42A514162CF870F953354419767D0E5F32A5141670D5CC78A33544145D56F14F32A514168563A5388335441C6A427EBF02A5141AE226D9E863354412E2426A6F02A514197A30E8386335441E17A14CEED2A51411F85EBB1853354419A9999D9EB2A5141EC51B87E853354417B14AE17EA2A5141E17A140E863354419A9999F9E82A51410AD7A340873354418FC2F518E82A5141A4703DBA883354410AD7A360E72A51417B14AE678A3354419A999919E72A51410AD7A3008C335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664198 - 1735577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17A040D965041E17A144E47175541CDCCCC9CE0955041B81E856B54175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F9259175541F6285CBF0F965041F6285C9F4D17554148E17A040D965041E17A144E47175541
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000363EA4DEE495504155AC79ED65175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F92591755419E46D88013965041998EF39A5417554154B067A0109650414E71C3414F175541CCF3549EE2955041A14069AB5C175541363EA4DEE495504155AC79ED65175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664198 - 3428598
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17A040D965041E17A144E47175541CDCCCC9CE0955041B81E856B54175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F9259175541F6285CBF0F965041F6285C9F4D17554148E17A040D965041E17A144E47175541
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000363EA4DEE495504155AC79ED65175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F92591755419E46D88013965041998EF39A5417554154B067A0109650414E71C3414F175541CCF3549EE2955041A14069AB5C175541363EA4DEE495504155AC79ED65175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665959 - 1009120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001D00000085EB511847FE5041F6285C4F133B5441295C8F0255FE50410AD7A330173B544152B81E7554FE5041713D0AE7133B5441D7A3707D57FE504152B81E35123B5441CDCCCCDC5BFE50410AD7A330133B5441295C8FD25CFE50417B14AE77153B544148E17AB45CFE50415C8FC255193B54410000002067FE5041D7A3703D1C3B54419A9999A974FE5041EC51B8AE1A3B5441713D0AD774FE504185EB51A80D3B54410AD7A34072FE50418FC2F5680C3B5441D7A370BD72FE5041E17A148E0A3B54419A9999B954FE50417B14AEC7023B54419A99991954FE504114AE4761043B54410AD7A34056FE50413D0AD743053B5441E17A14FE54FE5041295C8F92083B5441B81E852B55FE5041000000400B3B5441D7A3706D56FE5041F6285C2F0C3B5441AE47E14A58FE504114AE47310E3B544148E17A6457FE5041333333F30F3B5441333333E353FE50413D0AD7B3113B5441295C8F124FFE50419A999979103B5441EC51B87E4DFE5041F6285C0F0D3B5441000000804DFE50418FC2F5880A3B54416666666646FE504148E17A94063B544114AE470146FE50415C8FC2A5043B54418FC2F5F842FE5041EC51B82E053B5441C3F5287C44FE50418FC2F5680A3B544185EB511847FE5041F6285C4F133B5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009B240F2347FE504174AE9773133B5441AF34A71854FE50417BF321EF163B5441BAAC2DA554FE504150ABD225163B54413373B58E54FE5041C6904C7F143B5441E86EAE4A56FE504120602623133B5441307F24A257FE50414BC277A5123B54414A7943B15BFE5041BDD05C8F133B544167AE19115DFE50419236E41D153B54410ED00A305DFE504162EBAF2F163B5441FC2EA3A55DFE50418BADDA69193B54417C36F98D65FE5041274C5F861B3B54414E61783267FE5041311461351B3B54412BA96FA068FE504116EB288B1A3B54419298958A69FE504160A8610C1B3B5441BDE9CE126FFE5041E1279B2A1B3B5441FBA70C1471FE5041E0EE18601A3B5441F547558571FE5041564A4EE21A3B54410DCD6BDA73FE5041F026601D1B3B54413BA653E275FE50413761286B1A3B54417DFDA24076FE504112DA649E193B54411F81542876FE50416B790374133B5441546DB53675FE5041762B4A08103B544160555A5975FE50419CDDBAF40D3B54417AF201E474FE5041228947330D3B544166AD172072FE5041F675C5FB0B3B5441B5979B6F72FE50411CC0EB9B0A3B544161B7529F55FE5041977BE902033B54410A2AE52555FE5041646DA00E043B54410381690057FE50417F9C55F6043B5441E4E3100F57FE50413B8CF08D053B5441B2DFDEF956FE50415541F52E063B544131DDD5D756FE5041473CFFE2063B5441E009C4FE55FE50412332169A073B54419E1C8A8655FE504154E5AAC3083B544126B18F6055FE5041632916B00A3B5441EB287FBA56FE5041F43924440C3B54419634029D58FE5041A6606E8D0D3B54416C87CC1459FE5041ED0CB8510E3B54418445EBE158FE5041DAA489790F3B544161F8EB0B57FE50412BC9B423113B54415BB8B2A155FE5041E2AF2EF2103B544106D0F04E54FE504174978F71123B54413638571451FE504165813610113B54410688911E50FE5041C49E6C6B103B544140EE081A4FFE504103E6A8BA0F3B5441F9F61EF14DFE5041F43F683D0D3B544140CA30D44DFE504131C8BAFA0C3B54416F662ECF4DFE5041538459A70C3B5441E15CBF5B4EFE5041FA0113500B3B544102F9CAA54DFE50418BFB05530A3B54417CC484C44CFE5041265149CA093B5441AEFA70EB4AFE50411D8E1A2E093B54413F3B99A447FE50411BE4BA45073B544114AE470146FE50415C8FC2A5043B54419ED7B9FB44FE50419E482F84043B54413A61BCF643FE5041DDC5F201053B544138AD2EB843FE5041222B3EA1053B5441FFE8A15943FE5041D610C686063B5441C3F5287C44FE50418FC2F5680A3B54419B240F2347FE504174AE9773133B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665959 - 3441985
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001D00000085EB511847FE5041F6285C4F133B5441295C8F0255FE50410AD7A330173B544152B81E7554FE5041713D0AE7133B5441D7A3707D57FE504152B81E35123B5441CDCCCCDC5BFE50410AD7A330133B5441295C8FD25CFE50417B14AE77153B544148E17AB45CFE50415C8FC255193B54410000002067FE5041D7A3703D1C3B54419A9999A974FE5041EC51B8AE1A3B5441713D0AD774FE504185EB51A80D3B54410AD7A34072FE50418FC2F5680C3B5441D7A370BD72FE5041E17A148E0A3B54419A9999B954FE50417B14AEC7023B54419A99991954FE504114AE4761043B54410AD7A34056FE50413D0AD743053B5441E17A14FE54FE5041295C8F92083B5441B81E852B55FE5041000000400B3B5441D7A3706D56FE5041F6285C2F0C3B5441AE47E14A58FE504114AE47310E3B544148E17A6457FE5041333333F30F3B5441333333E353FE50413D0AD7B3113B5441295C8F124FFE50419A999979103B5441EC51B87E4DFE5041F6285C0F0D3B5441000000804DFE50418FC2F5880A3B54416666666646FE504148E17A94063B544114AE470146FE50415C8FC2A5043B54418FC2F5F842FE5041EC51B82E053B5441C3F5287C44FE50418FC2F5680A3B544185EB511847FE5041F6285C4F133B5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009B240F2347FE504174AE9773133B5441AF34A71854FE50417BF321EF163B5441BAAC2DA554FE504150ABD225163B54413373B58E54FE5041C6904C7F143B5441E86EAE4A56FE504120602623133B5441307F24A257FE50414BC277A5123B54414A7943B15BFE5041BDD05C8F133B544167AE19115DFE50419236E41D153B54410ED00A305DFE504162EBAF2F163B5441FC2EA3A55DFE50418BADDA69193B54417C36F98D65FE5041274C5F861B3B54414E61783267FE5041311461351B3B54412BA96FA068FE504116EB288B1A3B54419298958A69FE504160A8610C1B3B5441BDE9CE126FFE5041E1279B2A1B3B5441FBA70C1471FE5041E0EE18601A3B5441F547558571FE5041564A4EE21A3B54410DCD6BDA73FE5041F026601D1B3B54413BA653E275FE50413761286B1A3B54417DFDA24076FE504112DA649E193B54411F81542876FE50416B790374133B5441546DB53675FE5041762B4A08103B544160555A5975FE50419CDDBAF40D3B54417AF201E474FE5041228947330D3B544166AD172072FE5041F675C5FB0B3B5441B5979B6F72FE50411CC0EB9B0A3B544161B7529F55FE5041977BE902033B54410A2AE52555FE5041646DA00E043B54410381690057FE50417F9C55F6043B5441E4E3100F57FE50413B8CF08D053B5441B2DFDEF956FE50415541F52E063B544131DDD5D756FE5041473CFFE2063B5441E009C4FE55FE50412332169A073B54419E1C8A8655FE504154E5AAC3083B544126B18F6055FE5041632916B00A3B5441EB287FBA56FE5041F43924440C3B54419634029D58FE5041A6606E8D0D3B54416C87CC1459FE5041ED0CB8510E3B54418445EBE158FE5041DAA489790F3B544161F8EB0B57FE50412BC9B423113B54415BB8B2A155FE5041E2AF2EF2103B544106D0F04E54FE504174978F71123B54413638571451FE504165813610113B54410688911E50FE5041C49E6C6B103B544140EE081A4FFE504103E6A8BA0F3B5441F9F61EF14DFE5041F43F683D0D3B544140CA30D44DFE504131C8BAFA0C3B54416F662ECF4DFE5041538459A70C3B5441E15CBF5B4EFE5041FA0113500B3B544102F9CAA54DFE50418BFB05530A3B54417CC484C44CFE5041265149CA093B5441AEFA70EB4AFE50411D8E1A2E093B54413F3B99A447FE50411BE4BA45073B544114AE470146FE50415C8FC2A5043B54419ED7B9FB44FE50419E482F84043B54413A61BCF643FE5041DDC5F201053B544138AD2EB843FE5041222B3EA1053B5441FFE8A15943FE5041D610C686063B5441C3F5287C44FE50418FC2F5680A3B54419B240F2347FE504174AE9773133B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665965 - 2909660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3709D7A655141E17A148EC6625441A4703D5A7465514185EB51D8C9625441E17A14AE6A6551417B14AEE7CE6254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA625441295C8F624A6551418FC2F5E8DF625441E17A146E39655141295C8FE2E86254415C8FC2D526655141A4703DBAF2625441E17A146E0F655141E17A141EFF625441C3F5283C0C6551419A9999C905635441EC51B83E0A655141EC51B87E0C635441295C8F5208655141F6285CCF14635441C3F5288C1A655141713D0A270B635441B81E85FB2D655141CDCCCCDC00635441E17A14BE406551419A9999E9F6625441B81E859B54655141295C8F62EC6254410AD7A3807565514148E17AF4DA625441E17A140E85655141713D0AB7D2625441C3F528FC8D655141B81E85FBCD6254413D0AD7F388655141E17A144EC76254418FC2F57884655141C3F5285CC1625441D7A3709D7A655141E17A148EC6625441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000069F87DF15D655141D1689F9CD56254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA6254416BBEA8BE4A65514124C0FAC2DF6254416A879C2840655141EB48C052E5625441D833AC7B3965514139655DDBE86254416AE5176735655141693D4504EB62544108228D1326655141768E0C21F3625441E17A146E0F655141E17A141EFF625441EDF45EDD0D65514128175D470263544132FE038C5E6551411480B706D862544169F87DF15D655141D1689F9CD5625441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665965 - 3634951
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3709D7A655141E17A148EC6625441A4703D5A7465514185EB51D8C9625441E17A14AE6A6551417B14AEE7CE6254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA625441295C8F624A6551418FC2F5E8DF625441E17A146E39655141295C8FE2E86254415C8FC2D526655141A4703DBAF2625441E17A146E0F655141E17A141EFF625441C3F5283C0C6551419A9999C905635441EC51B83E0A655141EC51B87E0C635441295C8F5208655141F6285CCF14635441C3F5288C1A655141713D0A270B635441B81E85FB2D655141CDCCCCDC00635441E17A14BE406551419A9999E9F6625441B81E859B54655141295C8F62EC6254410AD7A3807565514148E17AF4DA625441E17A140E85655141713D0AB7D2625441C3F528FC8D655141B81E85FBCD6254413D0AD7F388655141E17A144EC76254418FC2F57884655141C3F5285CC1625441D7A3709D7A655141E17A148EC6625441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000069F87DF15D655141D1689F9CD56254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA6254416BBEA8BE4A65514124C0FAC2DF6254416A879C2840655141EB48C052E5625441D833AC7B3965514139655DDBE86254416AE5176735655141693D4504EB62544108228D1326655141768E0C21F3625441E17A146E0F655141E17A141EFF625441EDF45EDD0D65514128175D470263544132FE038C5E6551411480B706D862544169F87DF15D655141D1689F9CD5625441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>667836 - 2951182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000001E0000003D0AD733D4FA5041F6285C0F6138554185EB51E8CEFA50415C8FC20568385541D7A3708DCDFA5041F6285CCF6A385541A4703D8ACCFA50419A9999896E3855417B14AED7CBFA5041A4703D8A7538554148E17A64CBFA5041713D0A478D38554133333363CBFA5041D7A370ED92385541E17A143ECBFA5041C3F528AC9838554166666616CBFA50410AD7A3C09E3855417B14AE27CBFA5041000000D0A0385541A4703DFACBFA5041C3F5287CA3385541CDCCCC7CE8FA50417B14AEA79F385541CDCCCC1CF1FA50419A9999799E385541713D0AC7F3FA5041F6285C5F9E38554152B81E05F5FA50413D0AD7039D38554166666626F6FA5041B81E851B9B385541B81E85BBF8FA50411F85EB0195385541295C8FE2F9FA504114AE47619238554185EB51C8FEFA50413D0AD73387385541C3F528CCDCFA504185EB518875385541E17A145ED7FA5041CDCCCCEC743855417B14AE77D7FA504152B81E75703855413D0AD7B3D9FA5041666666D66B38554185EB5168F7FA5041666666A64F385541000000F0F6FA5041333333534F385541AE47E19AEAFA50419A9999C94638554152B81EB5E8FA5041D7A370FD46385541AE47E1FAE4FA50415C8FC2C54B385541CDCCCC0CDCFA5041C3F528EC563855413D0AD733D4FA5041F6285C0F61385541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003D0AD7B3D9FA5041666666D66B38554185EB5168F7FA5041666666A64F385541C74D5F7CF7FA5041F0D048B44F385541EB410785F5FA50419393AC494E385541D3E89A09F1FA5041C2CF963D4B385541AE47E19AEAFA50419A9999C946385541476BA674E9FA50414F9676E645385541456F65E1E2FA504169C3DC644E385541E22161ABDAFA50411A93B6B458385541A2D0C359D2FA50414C0FBB7E63385541C3552767CFFA504160771CCA6638554177B801D3CDFA5041F8653F406A385541E076BB83CCFA5041440AEFCA6E385541D93320B5CBFA50418D110DB572385541DCEA1AD2CBFA50411E4450B0763855412B2D81A1CBFA50415D1AFEB38038554179B81B6FCBFA504107E665168B385541E17A143ECBFA5041C3F528AC98385541D4606CC8DFFA5041B833AAE695385541FE5017DCF1FA5041F2DD687693385541295C8FE2F9FA504114AE47619238554185EB51C8FEFA50413D0AD733873855418BCFEC15F6FA5041313D42AE823855410BAA0485EFFA504164C74B447F38554179BAEB44EAFA504180CE73897C385541C974239CE5FA50415464481D7A38554143E9AA16DCFA50415FD1037475385541E17A145ED7FA5041CDCCCCEC743855417B14AE77D7FA504152B81E75703855413D0AD7B3D9FA5041666666D66B385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>832664 - 803459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -340  </desc>
+<a>
+01060000000100000001030000000100000045000000B591E4FDB5A6504163C4F460F6345441AEE127ECB1A650416B46604BF4345441295C8F72B0A65041295C8F12F8345441C3F5283CAFA65041A4703DBA02355441A4703DBAADA65041AE47E16A0735544152B81EA5ACA650410AD7A3A009355441E17A146EAAA65041CDCCCC3C0C35544185EB5118A7A650419A9999F90F355441D7A370DDA4A65041F6285CFF0F35544148E17AC4A1A650417B14AE0710355441AE47E11AA0A65041D7A370BD123554418FC2F5589FA65041E17A141E14355441EC51B8DE98A650418FC2F548213554419A9999599BA650413D0AD7B322355441EC51B81E9DA65041C3F5280C25355441B81E85AB99A650418FC2F5F828355441F6285C1F9DA65041333333A32D35544141EE35879EA650414428A3172B3554419F615760A1A65041271567DF27355441ABAAAABAA3A65041B6D75C282435544121B07248ABA650413B0AD7C318355441DF96B5FAB0A65041424444F411355441D9152077B2A6504183A429951135544155555535B3A65041354219ED1435544155555535B3A650412940EEE5173554417421691AB1A65041B2C876FE1A355441BB02E43EAFA65041358941401A355441A938FB60AEA650412E08ACBC1B355441B0B990E4ACA650419F45B6731F35544174DA40C7ABA65041AB8E09CE21355441F1197685ACA650414B62104824355441048CDE88ACA65041A289238F2635544157EE9B83AEA650413F0E3B5B23355441EB019B95AFA650419F1EE79F2135544170AB8911B1A6504146862B391F35544107A94057B3A650414E6175611B35544136CA58AAB4A65041AC27F41B193554419B622339B6A6504159D7966B16355441B5AD7ABDB7A65041595074F613355441746C1C42B7A650416BB689F910355441BC4D9766B5A6504159D25F380A3554410D21A7EBB6A65041D6953A600935544179E566F2B8A65041F435178A0F355441F1A653E8BAA6504166684811133554413A1B2E1EBDA650415FAFA80412355441390877F9BFA650418785125E0E3554417B14AEE7C1A6504185EB51180A355441EC51B89EC3A65041000000400635544114AE4741C6A65041C3F5285C0235544167C8DB03C8A65041E18E7BB8FF3454417B14AEB7C1A65041295C8F32FB3454419A999999BCA650418FC2F5C8F73454419A9999A9BAA65041A4703D4AF9345441713D0A57BBA6504148E17A34FA345441F6285CBFBBA6504100000030FB34544100000030BCA650418FC2F508FC34544166666686BCA65041295C8F52FD345441CDCCCC6CBCA650418FC2F5D8FE345441E17A144EBBA6504152B81E45003554419A999979B9A65041C3F5289C0035544114AE4771B7A65041C3F5289C00355441F6285CBFB5A65041CDCCCC3C003554417B14AE87B4A65041EC51B8EEFF345441713D0AB7B3A650410AD7A3D0FE3454411F85EB41B4A6504185EB5168FA345441E17A14DEB4A650411F85EB41F9345441713D0AB7B5A6504133333323F834544133333323B7A65041E17A14DEF7345441B591E4FDB5A6504163C4F460F6345441
+</a>
+
+<b>
+0106000000010000000103000000010000008E0000007B14AE07A8A65041F6285C3F3D355441D7A3700DA2A65041AE47E11A45355441CDCCCC1CA1A65041E17A146E4635544185EB51C8A0A65041EC51B83E49355441E17A149EA0A65041000000A04A355441AE47E13AA0A6504114AE47014C3554417B14AEE79EA650419A9999A94D355441000000309EA650419A9999994F3554418FC2F5E89DA6504185EB519851355441E17A146EA1A65041666666565935544100000030A3A65041000000A05D355441A4703D3AA4A650419A999929603554417B14AE47A5A650419A999949623554415C8FC235A6A6504152B81EC56135544114AE4711A7A65041F6285CCF61355441713D0AF7A7A65041295C8F4262355441713D0A07A9A650410AD7A3B06335544185EB51D8A9A65041AE47E1CA64355441A4703D7AABA650419A99991966355441713D0A27ADA6504114AE47A166355441E17A14FEAEA65041AE47E1CA663554415C8FC295B0A650411F85EB8166355441E17A140EB2A65041000000D065355441C3F5287CB3A65041A4703DEA64355441D7A3705DB5A6504148E17AE46335544185EB5158B6A65041295C8F5263355441D7A3705DB7A6504148E17AF46235544114AE47D1B9A650418FC2F50863355441CDCCCCBCBBA6504185EB512863355441CDCCCCACBCA65041713D0A67633554410AD7A310BEA650413333333363355441CDCCCCCCBEA65041B81E859B63355441B81E850BBFA65041295C8F4264355441713D0AF7C0A65041AE47E1BA63355441D7A370DDC3A65041C3F5286C62355441C3F5284CC7A650410AD7A380603554415C8FC235CFA650415C8FC2D55A35544152B81EE5CEA650410AD7A3405A3554411F85EB81CFA650419A9999995935544148E17AF4D0A65041000000805935544133333333D6A65041D7A3707D553554419A9999D9D9A65041F6285C4F51355441295C8FB2D8A65041295C8FA25135544133333393D8A6504100000010513554410AD7A320DAA65041F6285C1F50355441C3F5284CDBA650413D0AD7334F35544114AE4721DAA650410AD7A3204E355441295C8F82DDA65041E17A145E4A355441713D0A07DFA65041EC51B8FE48355441CDCCCC0CE1A650410AD7A3D045355441713D0AE7E6A65041000000603E35544100000030EDA65041713D0A773335544166666686F0A65041713D0AF72E3554418FC2F558EFA65041666666162F35544148E17A24EEA650418FC2F5D82D355441295C8F62ECA65041666666062D355441D7A370EDE9A6504114AE47012C355441EC51B8CEE6A65041AE47E12A2B355441E17A14EEE3A65041CDCCCCFC2A3554410AD7A330E2A65041CDCCCCFC2A3554418FC2F568E1A65041C3F5280C2B355441CDCCCC9CDFA65041713D0A772B355441A4703D5ADEA650415C8FC2952B35544166666636DDA65041713D0A772B35544148E17AE4DBA65041B81E851B2B355441C3F528BCD9A650411F85EB812A3554411F85EB31D6A650410AD7A3202935544100000070D3A65041CDCCCCFC2735544166666656D1A650418FC2F5D8263554419A999999CFA650415C8FC2B5253554415C8FC275CEA6504114AE47A124355441C3F5285CCCA650417B14AE87223554410AD7A380CAA65041A4703DDA20355441C3F5286CC9A6504114AE4731203554417B14AED7C9A65041713D0AA71F355441C3F528ECCAA65041F6285C5F20355441713D0AD7CCA65041C3F5281C2235544100000000CFA650415C8FC235243554415C8FC2F5CFA65041B81E852B253554413D0AD793D1A65041EC51B84E26355441CDCCCCBCD3A650413333336327355441EC51B87ED6A65041713D0A872835544185EB5118DAA650418FC2F5D8293554411F85EB21DCA6504114AE47912A35544152B81E55DDA65041EC51B8CE2A355441AE47E14ADEA65041E17A14DE2A355441E17A147EDFA65041EC51B8CE2A355441295C8F82E0A650410AD7A3A02A355441EC51B87EE1A650413D0AD7632A355441A4703D2AE2A65041AE47E14A2A35544133333383E2A6504148E17A042A355441AE47E1EAE1A65041EC51B8DE29355441EC51B87EE1A6504152B81EC52935544185EB5158E1A65041295C8F722935544152B81E65E1A650410000000029355441E17A14BEE1A65041666666C628355441713D0A17E2A65041333333D3283554418FC2F5C8DEA65041C3F5286C25355441A4703D8AE2A650415C8FC2F521355441CDCCCC4CE4A65041F6285C8F233554418FC2F528E8A650417B14AE471F35544152B81E75E9A65041295C8F021D35544114AE4721ECA65041D7A3709D183554410AD7A300EBA650410AD7A3E017355441AE47E10AEDA65041F6285C0F14355441EC51B8FEEDA65041B81E855B11355441CDCCCCACEEA6504185EB51C80E355441CDCCCCFCF1A65041C3F5281C103554411F85EBC1F2A65041713D0AB70B355441713D0A07F2A6504148E17A540B3554415C8FC265F8A65041713D0A77FD34544114AE4761FFA65041A4703D6AF0345441295C8F32F8A65041C3F5283CED34544166666686F4A65041E17A14FEEB3454418FC2F5E8EEA65041B81E857BEA345441AE47E17AEBA65041EC51B85EE9345441EC51B8EEE6A65041EC51B88EE7345441713D0AF7E2A65041EC51B88EE5345441EC51B83EDAA650419A9999B9EF34544152B81E05D8A6504114AE4731EE34544133333323D2A65041F6285CEFF4345441D7A370CDCEA65041F6285CBFF73454417B14AEF7CBA6504185EB5178FA34544166666636C9A65041CDCCCCECFD34544114AE4741C6A65041C3F5285C02355441EC51B89EC3A6504100000040063554417B14AEE7C1A6504185EB51180A355441AE47E11AC0A6504114AE47310E355441CDCCCC6CBDA650418FC2F5C8113554413D0AD703BBA65041D7A3709D133554418FC2F5C8B8A6504152B81E451235544114AE4731B6A6504185EB5178163554413D0AD733B4A65041713D0A271A35544114AE47A1ACA650417B14AE672635544166666666ABA6504152B81E65283554415C8FC285A9A65041D7A3709D2A355441D7A370FDA5A65041E17A146E2F35544133333363ACA65041713D0AA731355441D7A3701DAFA650410AD7A34031355441CDCCCCDCAFA6504148E17AB431355441AE47E1CAAFA6504148E17A44323554417B14AE07A8A65041F6285C3F3D355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>832664 - 3104794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -340  </desc>
+<a>
+01060000000100000001030000000100000045000000B591E4FDB5A6504163C4F460F6345441AEE127ECB1A650416B46604BF4345441295C8F72B0A65041295C8F12F8345441C3F5283CAFA65041A4703DBA02355441A4703DBAADA65041AE47E16A0735544152B81EA5ACA650410AD7A3A009355441E17A146EAAA65041CDCCCC3C0C35544185EB5118A7A650419A9999F90F355441D7A370DDA4A65041F6285CFF0F35544148E17AC4A1A650417B14AE0710355441AE47E11AA0A65041D7A370BD123554418FC2F5589FA65041E17A141E14355441EC51B8DE98A650418FC2F548213554419A9999599BA650413D0AD7B322355441EC51B81E9DA65041C3F5280C25355441B81E85AB99A650418FC2F5F828355441F6285C1F9DA65041333333A32D35544141EE35879EA650414428A3172B3554419F615760A1A65041271567DF27355441ABAAAABAA3A65041B6D75C282435544121B07248ABA650413B0AD7C318355441DF96B5FAB0A65041424444F411355441D9152077B2A6504183A429951135544155555535B3A65041354219ED1435544155555535B3A650412940EEE5173554417421691AB1A65041B2C876FE1A355441BB02E43EAFA65041358941401A355441A938FB60AEA650412E08ACBC1B355441B0B990E4ACA650419F45B6731F35544174DA40C7ABA65041AB8E09CE21355441F1197685ACA650414B62104824355441048CDE88ACA65041A289238F2635544157EE9B83AEA650413F0E3B5B23355441EB019B95AFA650419F1EE79F2135544170AB8911B1A6504146862B391F35544107A94057B3A650414E6175611B35544136CA58AAB4A65041AC27F41B193554419B622339B6A6504159D7966B16355441B5AD7ABDB7A65041595074F613355441746C1C42B7A650416BB689F910355441BC4D9766B5A6504159D25F380A3554410D21A7EBB6A65041D6953A600935544179E566F2B8A65041F435178A0F355441F1A653E8BAA6504166684811133554413A1B2E1EBDA650415FAFA80412355441390877F9BFA650418785125E0E3554417B14AEE7C1A6504185EB51180A355441EC51B89EC3A65041000000400635544114AE4741C6A65041C3F5285C0235544167C8DB03C8A65041E18E7BB8FF3454417B14AEB7C1A65041295C8F32FB3454419A999999BCA650418FC2F5C8F73454419A9999A9BAA65041A4703D4AF9345441713D0A57BBA6504148E17A34FA345441F6285CBFBBA6504100000030FB34544100000030BCA650418FC2F508FC34544166666686BCA65041295C8F52FD345441CDCCCC6CBCA650418FC2F5D8FE345441E17A144EBBA6504152B81E45003554419A999979B9A65041C3F5289C0035544114AE4771B7A65041C3F5289C00355441F6285CBFB5A65041CDCCCC3C003554417B14AE87B4A65041EC51B8EEFF345441713D0AB7B3A650410AD7A3D0FE3454411F85EB41B4A6504185EB5168FA345441E17A14DEB4A650411F85EB41F9345441713D0AB7B5A6504133333323F834544133333323B7A65041E17A14DEF7345441B591E4FDB5A6504163C4F460F6345441
+</a>
+
+<b>
+010600000001000000010300000001000000320000005C8FC285A9A65041D7A3709D2A355441D7A370FDA5A65041E17A146E2F35544166666676ADA650416666660632355441295C8FD2AEA650411F85EBF131355441CDCCCCDCAFA6504148E17AB4313554411F85EBF1B3A6504133333363333554417B14AE77B7A650415C8FC22535355441333333F3BBA65041C3F5281C363554410C826A1FC5A650415D982CFD3C355441C5C7D07FD1A65041516C996926355441C5DD03FAD3A6504186B7D38127355441BDA779EFD5A6504126834F5028355441AC3B65DAD9A650412FB4C7CF2935544147EC9BA3DBA65041B2CC838F2A355441346A5414DDA65041FC525A3D26355441E297C0E1E0A6504197C1F797203554416BF7279BE5A65041378D7366213554415375E00BE7A6504197C1F79720355441B9DADCBCE7A65041D842BCBA1F3554410CEF095EEBA650410200A0DF183554410AD7A300EBA650410AD7A3E017355441AE47E10AEDA65041F6285C0F1435544166666636EEA65041D7A370CD11355441C3F5284CEFA65041713D0A970F3554410AD7A320EDA6504152B81EC50C3554417B14AE17E9A650418FC2F5980B35544133333313E2A650417B14AE370A35544148E17AD4DCA650416666663608355441C3F528ECD6A650413D0AD793053554419A999929CDA65041333333730135544133333363D4A65041C3F528ACF534544133333363D5A65041295C8F22F43454419A999909D7A65041E17A149EF2345441EC51B83EDAA650419A9999B9EF34544152B81E05D8A6504114AE4731EE34544133333323D2A65041F6285CEFF4345441D7A370CDCEA65041F6285CBFF73454417B14AEF7CBA6504185EB5178FA34544166666636C9A65041CDCCCCECFD34544114AE4741C6A65041C3F5285C02355441EC51B89EC3A6504100000040063554417B14AEE7C1A6504185EB51180A355441AE47E11AC0A6504114AE47310E355441CDCCCC6CBDA650418FC2F5C8113554413D0AD703BBA65041D7A3709D133554418FC2F5C8B8A6504152B81E451235544114AE4731B6A6504185EB5178163554413D0AD733B4A65041713D0A271A35544166666666ABA6504152B81E65283554415C8FC285A9A65041D7A3709D2A355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>832664 - 3426474
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -340  </desc>
+<a>
+01060000000100000001030000000100000045000000B591E4FDB5A6504163C4F460F6345441AEE127ECB1A650416B46604BF4345441295C8F72B0A65041295C8F12F8345441C3F5283CAFA65041A4703DBA02355441A4703DBAADA65041AE47E16A0735544152B81EA5ACA650410AD7A3A009355441E17A146EAAA65041CDCCCC3C0C35544185EB5118A7A650419A9999F90F355441D7A370DDA4A65041F6285CFF0F35544148E17AC4A1A650417B14AE0710355441AE47E11AA0A65041D7A370BD123554418FC2F5589FA65041E17A141E14355441EC51B8DE98A650418FC2F548213554419A9999599BA650413D0AD7B322355441EC51B81E9DA65041C3F5280C25355441B81E85AB99A650418FC2F5F828355441F6285C1F9DA65041333333A32D35544141EE35879EA650414428A3172B3554419F615760A1A65041271567DF27355441ABAAAABAA3A65041B6D75C282435544121B07248ABA650413B0AD7C318355441DF96B5FAB0A65041424444F411355441D9152077B2A6504183A429951135544155555535B3A65041354219ED1435544155555535B3A650412940EEE5173554417421691AB1A65041B2C876FE1A355441BB02E43EAFA65041358941401A355441A938FB60AEA650412E08ACBC1B355441B0B990E4ACA650419F45B6731F35544174DA40C7ABA65041AB8E09CE21355441F1197685ACA650414B62104824355441048CDE88ACA65041A289238F2635544157EE9B83AEA650413F0E3B5B23355441EB019B95AFA650419F1EE79F2135544170AB8911B1A6504146862B391F35544107A94057B3A650414E6175611B35544136CA58AAB4A65041AC27F41B193554419B622339B6A6504159D7966B16355441B5AD7ABDB7A65041595074F613355441746C1C42B7A650416BB689F910355441BC4D9766B5A6504159D25F380A3554410D21A7EBB6A65041D6953A600935544179E566F2B8A65041F435178A0F355441F1A653E8BAA6504166684811133554413A1B2E1EBDA650415FAFA80412355441390877F9BFA650418785125E0E3554417B14AEE7C1A6504185EB51180A355441EC51B89EC3A65041000000400635544114AE4741C6A65041C3F5285C0235544167C8DB03C8A65041E18E7BB8FF3454417B14AEB7C1A65041295C8F32FB3454419A999999BCA650418FC2F5C8F73454419A9999A9BAA65041A4703D4AF9345441713D0A57BBA6504148E17A34FA345441F6285CBFBBA6504100000030FB34544100000030BCA650418FC2F508FC34544166666686BCA65041295C8F52FD345441CDCCCC6CBCA650418FC2F5D8FE345441E17A144EBBA6504152B81E45003554419A999979B9A65041C3F5289C0035544114AE4771B7A65041C3F5289C00355441F6285CBFB5A65041CDCCCC3C003554417B14AE87B4A65041EC51B8EEFF345441713D0AB7B3A650410AD7A3D0FE3454411F85EB41B4A6504185EB5168FA345441E17A14DEB4A650411F85EB41F9345441713D0AB7B5A6504133333323F834544133333323B7A65041E17A14DEF7345441B591E4FDB5A6504163C4F460F6345441
+</a>
+
+<b>
+010600000001000000010300000001000000320000005C8FC285A9A65041D7A3709D2A355441D7A370FDA5A65041E17A146E2F35544166666676ADA650416666660632355441295C8FD2AEA650411F85EBF131355441CDCCCCDCAFA6504148E17AB4313554411F85EBF1B3A6504133333363333554417B14AE77B7A650415C8FC22535355441333333F3BBA65041C3F5281C363554410C826A1FC5A650415D982CFD3C355441C5C7D07FD1A65041516C996926355441C5DD03FAD3A6504186B7D38127355441BDA779EFD5A6504126834F5028355441AC3B65DAD9A650412FB4C7CF2935544147EC9BA3DBA65041B2CC838F2A355441346A5414DDA65041FC525A3D26355441E297C0E1E0A6504197C1F797203554416BF7279BE5A65041378D7366213554415375E00BE7A6504197C1F79720355441B9DADCBCE7A65041D842BCBA1F3554410CEF095EEBA650410200A0DF183554410AD7A300EBA650410AD7A3E017355441AE47E10AEDA65041F6285C0F1435544166666636EEA65041D7A370CD11355441C3F5284CEFA65041713D0A970F3554410AD7A320EDA6504152B81EC50C3554417B14AE17E9A650418FC2F5980B35544133333313E2A650417B14AE370A35544148E17AD4DCA650416666663608355441C3F528ECD6A650413D0AD793053554419A999929CDA65041333333730135544133333363D4A65041C3F528ACF534544133333363D5A65041295C8F22F43454419A999909D7A65041E17A149EF2345441EC51B83EDAA650419A9999B9EF34544152B81E05D8A6504114AE4731EE34544133333323D2A65041F6285CEFF4345441D7A370CDCEA65041F6285CBFF73454417B14AEF7CBA6504185EB5178FA34544166666636C9A65041CDCCCCECFD34544114AE4741C6A65041C3F5285C02355441EC51B89EC3A6504100000040063554417B14AEE7C1A6504185EB51180A355441AE47E11AC0A6504114AE47310E355441CDCCCC6CBDA650418FC2F5C8113554413D0AD703BBA65041D7A3709D133554418FC2F5C8B8A6504152B81E451235544114AE4731B6A6504185EB5178163554413D0AD733B4A65041713D0A271A35544166666666ABA6504152B81E65283554415C8FC285A9A65041D7A3709D2A355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>670862 - 216590
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -425  </desc>
+<a>
+0106000000010000000103000000010000000A000000713D0A577EE350415C8FC2952D235541666666467BE3504148E17A742B235541295C8F3278E35041AE47E1AA2A235541E17A14DE76E350418FC2F5482C235541C3F528CC75E35041EC51B8BE2C2355417B14AE276AE350419A99998932235541D7A3700D79E35041AE47E10A3A235541C3F5286C7AE35041713D0AA73A235541A4703D0A81E350411F85EB712F235541713D0A577EE350415C8FC2952D235541
+</a>
+
+<b>
+0106000000010000000103000000010000001900000099A6591D7AE3504158D377282B235541F68ABD6879E35041757D40FA2A23554150F4864078E35041A513C9C12A23554130C1A3D877E35041683700482B235541493347D777E35041AF41614A2B235541C3CCB1BF77E35041929C96732B2355417D87CD3777E350414770CA172C235541C395BAEA76E3504192705D7B2C2355412057CC4D76E35041757471792D2355411C57CC4D76E35041827471792D235541E455CC4D76E35041477571792D2355415E2DD4FD75E350416B5C6CAD2D23554173A982D874E3504191C45E282F235541E79C163673E3504151FA0D7C2F235541A1EF08AD6CE3504158118ABB33235541A200D95079E3504111C5E4283A2355411AE449DD79E3504184FD6C673A235541F68334127AE35041EEB2FC7E3A2355411A6F25C380E35041F3BCF1402F235541F4AB47EB7FE3504128863CAC2E235541C64793997EE35041AC6E98C32D2355417C30C2B77DE3504167B3CD352D2355417340DC207BE350416CBEDF6A2B2355418C962E307AE35041F273492D2B23554199A6591D7AE3504158D377282B235541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>677423 - 1198153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -30  </desc>
+<a>
+01060000000100000001030000000100000019000000B81E851B2F3551410AD7A3A0D49554411F85EB512E355141E17A148ED3955441CDCCCCDC183551410AD7A390D195544148E17A04F2345141D7A370FDCD9554417B14AE07EB345141295C8F12CE9554415C8FC275E2345141F6285C0FCF9554411F85EB61DE345141EC51B83ED1955441CDCCCC4CDD345141295C8FB2D2955441D7A3707DDA345141F6285C6FE0955441E17A14CED7345141295C8F82ED9554417B14AE07D834514152B81E65EF9554415C8FC2F5DC34514152B81EE5F995544100000000E5345141EC51B83E05965441E17A149EE23451418FC2F5E80D96544152B81E05DF345141333333731896544100000020D834514185EB51182496544133333333D63451417B14AED72B96544152B81EF5D63451411F85EBE12C965441AE47E1CAFA345141C3F5287C2F96544185EB51781A3551418FC2F5C8319654417B14AEA71B3551410AD7A3E030965441F6285CDF203551410AD7A320189654410000000025355141000000900496544185EB51282A355141AE47E11AEC955441B81E851B2F3551410AD7A3A0D4955441
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000007B4CE502E9345141F30820EB049654418BDB4552E7345141B90707F600965441EE94AC20E4345141997283F5FA955441557592A3E0345141C87B180CF595544122E206BEDD345141E6C88B44F0955441078F3695DD3451410A28F790EF955441136EA3DEDC34514171FDA26DEC9554412770DF58DD345141368BE6B4E9955441FAF5F3B9DD345141032A8B8BE79554419AFF39ADDE345141FBFFF60EE29554410535A88EDF3451414DE8850ADC955441DF477BA9DF3451417CE73853DB955441CB205A68E03451414391D12BD995544160B2943BE134514194259AC9D6955441A8215374E23451412ECE14D2D3955441AF26D49CE23451412DB194CDD3955441ABF68598E5345141F5D2B978D3955441CCB37F7BEA345141E65E5699D2955441C3E981E4EF34514182DC03C6D2955441E07B79BEF0345141C5C2A3D6D2955441F3CF797C0435514104471D58D4955441A14B58821735514185B136EAD59554411CC1A6A12135514194259AC9D69554418EA9E1A225355141DDC5FE57D795544175978C562E35514109D0DB46D8955441840776B32E355141CF292F8ED69554419517CB182F355141F75E62A0D39554418ED50C1F29355141AB36A712D3955441843F010421355141DA12F0F7D1955441620B93DC163551412AA67F61D1955441EF7D36DD083551411690B617D095544162804F59F934514184562BAACE955441DE69C874EF345141D0822E05CE95544152736D90E8345141E2334C5BCE9554415C8FC275E2345141F6285C0FCF9554416F88A02EDD345141E0723A5AD29554417A83DB73D83451413A48485BEA9554410597F7D9D7345141D1DB25E6ED955441FE2D1392DC3451413D19CF10F995544187003AB8DE34514176330A61FC955441657767D1E13451412B0FC3C0009654415B786875E4345141F32A127B04965441E2B44F82E33451414F29252A0B965441382B9DC1E1345141438A46E71096544152B81E05DF345141333333731896544100000020D834514185EB51182496544133333333D63451417B14AED72B96544152B81EF5D63451411F85EBE12C965441AE47E1CAFA345141C3F5287C2F96544185EB51781A3551418FC2F5C8319654417B14AEA71B3551410AD7A3E030965441F6285CDF203551410AD7A320189654412D350A812235514125A27F280F965441EC7E9D91E9345141BCF187C40A9654412E619F2AE73451413DE0E09E0A965441D904B52DE73451412C2C58950A965441C084F3F8E634514106B646910A9654417B4CE502E9345141F30820EB04965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>678878 - 58375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -36  </desc>
+<a>
+0106000000010000000103000000010000001800000066666666813F51419A99997906915441666666D67F3F514152B81E7503915441713D0A577A3F514114AE4721F89054415C8FC295743F5141A4703D8AF390544114AE4791673F514185EB5198E990544152B81E05603F514148E17AF4E0905441CDCCCCCC5C3F5141C3F528BCDE90544152B81E95573F514152B81E75DC90544185EB5108533F51410AD7A3A0DA905441000000D04F3F514148E17A84D9905441D7A3706D4C3F514185EB5168D89054415C8FC235483F5141000000B0D6905441F6285C6F453F51413D0AD793D59054413D0AD793403F51418FC2F518D4905441B81E85FB383F5141333333C3D2905441333333432F3F5141A4703DDAD2905441A4703DCA193F5141AE47E1EAD6905441295C8F420A3F5141EC51B8DED9905441713D0AA7093F5141C3F528FCDA90544166666606143F51419A999989F490544133333363153F5141000000A0F5905441F6285C6F303F5141D7A3700DFA905441AE47E17A583F5141AE47E19A0091544166666666813F51419A99997906915441
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000004A270153313F51410C595AD5D2905441823710FF2C3F5141A3393155D39054414B4F93C5253F5141555E4BD8D4905441E0FA372C0A3F51414B9EB907DA9054410717A9240A3F5141E1E59815DA9054418B75C8190A3F5141BCC88F29DA905441DA03B40C0A3F5141F57C9141DA905441DA03B40C0A3F5141393AAB63DA9054419634AEB6093F51411FF1B3E4DA905441F1E67BF2093F51415DE103B6DB905441B7B993160A3F5141530CEE0EDC90544155BB369C113F51415383A2E2D990544177B04A92213F5141AA6A6886D6905441792B30D82E3F5141118F4582D4905441CB5CA490353F51412BD83C01D49054412FA6D896383F5141118F4582D49054412DCB2FA13D3F5141555E4BD8D4905441911464A7403F5141DEFC5684D59054418C5E12BC4A3F51410FB49C8CD99054417946526E4E3F514163C0B93ADB905441CD526F1C503F5141EB5EC5E6DB905441CA77C626553F51419E83DF69DD90544184CD17DB593F5141AEC0F6C1DE905441462F49B65C3F514160E51045E0905441C5C1743B5F3F51417122289DE19054416EDAAE97623F514100F26A7AE590544117F3E8F3653F5141D390B3ADE990544151B60E23683F51416B6CD6B1EB905441141840FE6A3F51410448F9B5ED9054416F5594DD6F3F5141AD603312F19054410E62EE12753F5141DE17791AF59054419D3131F0783F51412918B6A1F8905441BEAB5FA07B3F51414086042BFD9054413D3E8B257E3F5141817A618B02915441CAEFE0EC7F3F514134BF714306915441457F3D5E813F514111F26D7806915441F4A2F11D803F5141D51A49FF03915441666666D67F3F514152B81E7503915441A5EC7CAF7F3F51414A47F12403915441AE6E48487A3F51418730B376F890544132B7C5B8723F51411BB6473FF2905441A4A94C42693F5141AD7222E3EA90544114AE4791673F514185EB5198E990544152B81E05603F514148E17AF4E0905441CDCCCCCC5C3F5141C3F528BCDE90544152B81E95573F514152B81E75DC9054417C390C76523F5141908A376EDA905441000000D04F3F514148E17A84D9905441D7A3706D4C3F514185EB5168D8905441DDFA2A2A4B3F5141B8507BE4D7905441EA760F914A3F514118C07CB3D7905441EC51B886453F514180E459AFD5905441DDEE1B47403F51418B05790BD49054414116AB08403F5141094F7F00D490544135F84F9E3F3F51418780CDEDD390544184B2F5443A3F514101522E2AD3905441AB5BBD74313F51410B620AD5D29054414A270153313F51410C595AD5D2905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>183455 - 334180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D0000003D0AD713B29B5041C3F5282C2EF054418FC2F508B29B504152B81E652CF05441713D0A27B39B5041295C8FF22AF05441A4703D3AB49B5041000000A029F05441295C8F42B59B5041D7A370ED27F054415C8FC295B69B5041295C8F7225F05441333333D3B79B5041C3F5282C23F05441666666C6B89B5041A4703D9A21F054417B14AED7BA9B504152B81EB51EF05441F90AAFCFBB9B50416ECF5ECC1EF05441D807D021BD9B5041343083241DF05441DE47893BBE9B50417E268FA11BF054411BA6D3EDBF9B5041249E196719F05441E88A4010C19B5041042C9DE917F05441EC51B8FEC19B50415C8FC24516F0544114AE47C1C09B50413D0AD7D314F05441E42424C6BF9B5041D20E549114F054410AD7A390BE9B5041F6285C3F14F0544164FF6B24BC9B50412E34B02217F054415547268FBB9B5041E33B677B18F05441B81E859BBA9B5041666666A61AF05441C3F5289CB79B504148E17AA41EF05441D7A3709DB09B5041C3F528CC28F054417B14AE97AE9B5041EC51B89E2CF05441F6285CAFAB9B5041A4703D9A32F05441000000A0AF9B50415C8FC28534F0544114AE4781B09B5041EC51B84E32F054410AD7A300B19B504185EB51E82FF054413D0AD713B29B5041C3F5282C2EF05441
+</a>
+
+<b>
+010600000001000000010300000001000000200000007B14AE97AE9B5041EC51B89E2CF05441F6285CAFAB9B5041A4703D9A32F05441000000A0AF9B50415C8FC28534F0544114AE4781B09B5041EC51B84E32F054410AD7A300B19B504185EB51E82FF054413D0AD713B29B5041C3F5282C2EF054418FC2F508B29B504152B81E652CF05441713D0A27B39B5041295C8FF22AF05441A4703D3AB49B5041000000A029F05441295C8F42B59B5041D7A370ED27F054415C8FC295B69B5041295C8F7225F05441333333D3B79B5041C3F5282C23F05441666666C6B89B5041A4703D9A21F054417B14AED7BA9B504152B81EB51EF05441CF965AD0BB9B5041DA2D15B51EF05441291B3F05BC9B5041582613B51EF05441B4C76C06BD9B504165879D4B1DF054413BFA4013BE9B504106CD78D61BF05441DD94F425BF9B5041B7BEA36D1AF054413CA02C39C09B504113B9200419F05441F3E0F2FBC09B50418286480418F054411D843028C19B5041E7B493D017F05441B767AFF6C19B5041E627EEBA16F05441EC51B8FEC19B50415C8FC24516F0544114AE47C1C09B50413D0AD7D314F054410AD7A390BE9B5041F6285C3F14F05441F6285C3FBC9B504148E17AE416F05441C3F5282CBB9B50410000006019F05441B81E859BBA9B5041666666A61AF05441C3F5289CB79B504148E17AA41EF05441D7A3709DB09B5041C3F528CC28F054417B14AE97AE9B5041EC51B89E2CF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>579059 - 1201706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000666666A65A3F5141A4703D7A486C5441713D0AF75E3F51415C8FC2953E6C544100000050603F5141295C8F523B6C544148E17AE4623F514148E17A94316C5441E17A14CE663F5141C3F5284C266C54410AD7A320673F5141E17A148E246C5441333333B3543F514185EB51D8276C5441CDCCCC0C473F514148E17A642A6C5441666666862E3F5141A4703DDA326C5441295C8F122A3F514100000070336C5441E17A145E293F5141C3F528AC336C544114AE47B1233F5141C3F528CC356C544185EB5168203F51413D0AD773366C5441AE47E1CA1F3F514166666666366C544148E17A441E3F514133333363366C544185EB51881D3F514100000040366C5441E17A142E1D3F5141000000003A6C5441333333831E3F51410AD7A3903F6C54411F85EB611F3F51413D0AD743446C5441AE47E18A1F3F51411F85EBC1456C54411F85EB21233F5141713D0A77466C5441CDCCCC5C333F514152B81E454A6C5441295C8F92363F514185EB51184B6C544152B81E05443F51419A9999B94D6C54419A999929573F51411F85EBE1536C5441666666A65A3F5141A4703D7A486C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000085EB5148BD3E5141C3F5283C306C5441A4703D8ABB3E51418FC2F558376C5441A4703D0ABA3E5141AE47E1DA3E6C5441AE47E10AB93E5141295C8FE2446C54418FC2F568B83E5141D7A3705D4C6C54410AD7A3C0B63E5141E17A14AE526C5441E17A141EB53E514185EB51C8596C5441AE47E1BAB33E5141B81E858B5E6C5441D7A3705DB13E514100000010646C5441C3F5286CAC3E5141B81E851B6E6C5441295C8FC2A83E5141AE47E1AA756C54418FC2F558A73E5141E17A142E7B6C54413D0AD7C3A63E51410AD7A360816C54411F85EBB1A63E5141295C8F72866C54411F85EBA1A63E5141EC51B88E8A6C5441AE47E18AA73E51415C8FC2458F6C5441295C8FC2A83E5141EC51B83E926C5441AE47E1CAA93E514114AE4771946C5441D7A3704DAB3E51411F85EB51936C544100000060B03E5141295C8F02916C544114AE47F1B53E5141C3F5287C8F6C54413D0AD7B3BB3E514152B81E958E6C5441295C8F02CB3E5141713D0AD78B6C544100000060D93E51411F85EB31886C5441A4703DCAE33E5141E17A14FE846C5441EC51B8DEE03E51419A999959786C54411F85EB81DF3E514148E17A74726C544100000000DF3E514133333343706C5441A4703D2AEA3E5141A4703DEA6D6C544148E17AD4F33E51418FC2F5686C6C544133333393083F514152B81E856A6C544156F9FBED093F51410BCE1895726C5441B0D5FD67123F51419F86FC55736C544128A6F54E183F5141522D1947746C54411F85EBC11D3F5141E17A148E746C5441295C8F02233F51411F85EB11736C5441C3F5281C283F51415C8FC2E5716C54418FC2F568303F514152B81EA5706C5441E17A141E333F5141E17A146E706C54413D0AD7B3343F51415C8FC245706C5441E570B092363F51418A8CB992706C544180A635B5383F5141B9F79324726C5441AB172DEA3C3F5141BF7A5229766C5441A3236730423F5141284B1A5D796C5441BF1DDAA6473F51414ABCE1DE7A6C5441127D0A0C4C3F5141C3809F7F7B6C544158DC0ABE4D3F51410C5D11E07B6C5441CDA6E501513F51416D2DA9607C6C5441CDA6E501513F5141C5FD102E7A6C5441AB351E804F3F5141D76E7849766C54417B14AE274E3F5141295C8FE2726C5441C3F5284C4D3F5141000000A06F6C544148E17AF44C3F5141A4703DAA6C6C544148E17AF44C3F51415C8FC2D5696C54411F85EB614D3F514166666646666C544152B81E954E3F51415C8FC295626C5441D7A370CD523F5141666666A65C6C54419A999929573F51411F85EBE1536C544152B81E05443F51419A9999B94D6C5441713D0A773A3F5141A4703D2A4D6C54413D0AD753323F5141666666D64B6C54410AD7A3D01F3F51415C8FC2C5466C5441AE47E18A1F3F51411F85EBC1456C54411F85EB611F3F51413D0AD743446C5441AEE35A101E3F5141578D01B13D6C5441D4AF126B1D3F5141678DBAFE3A6C5441C3F5289C0E3F5141AE47E15A3B6C5441000000C0053F514152B81E85376C5441863B683D033F51410E140330346C54411F85EB71023F51415C8FC225346C54419CA2D207FE3E5141321B35B9346C5441596D6FBCFC3E5141E5A946E5346C54415C8FC285F43E51410AD7A370366C54415C8FC2A5E83E51410AD7A3C0376C5441A4703D9ADD3E5141713D0AA7376C5441713D0AD7D73E514185EB5188366C544185EB5148BD3E5141C3F5283C306C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>579059 - 3469938
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000666666A65A3F5141A4703D7A486C5441713D0AF75E3F51415C8FC2953E6C544100000050603F5141295C8F523B6C544148E17AE4623F514148E17A94316C5441E17A14CE663F5141C3F5284C266C54410AD7A320673F5141E17A148E246C5441333333B3543F514185EB51D8276C5441CDCCCC0C473F514148E17A642A6C5441666666862E3F5141A4703DDA326C5441295C8F122A3F514100000070336C5441E17A145E293F5141C3F528AC336C544114AE47B1233F5141C3F528CC356C544185EB5168203F51413D0AD773366C5441AE47E1CA1F3F514166666666366C544148E17A441E3F514133333363366C544185EB51881D3F514100000040366C5441E17A142E1D3F5141000000003A6C5441333333831E3F51410AD7A3903F6C54411F85EB611F3F51413D0AD743446C5441AE47E18A1F3F51411F85EBC1456C54411F85EB21233F5141713D0A77466C5441CDCCCC5C333F514152B81E454A6C5441295C8F92363F514185EB51184B6C544152B81E05443F51419A9999B94D6C54419A999929573F51411F85EBE1536C5441666666A65A3F5141A4703D7A486C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000085EB5148BD3E5141C3F5283C306C5441A4703D8ABB3E51418FC2F558376C5441A4703D0ABA3E5141AE47E1DA3E6C5441AE47E10AB93E5141295C8FE2446C54418FC2F568B83E5141D7A3705D4C6C54410AD7A3C0B63E5141E17A14AE526C5441E17A141EB53E514185EB51C8596C5441AE47E1BAB33E5141B81E858B5E6C5441D7A3705DB13E514100000010646C5441C3F5286CAC3E5141B81E851B6E6C5441295C8FC2A83E5141AE47E1AA756C54418FC2F558A73E5141E17A142E7B6C54413D0AD7C3A63E51410AD7A360816C54411F85EBB1A63E5141295C8F72866C54411F85EBA1A63E5141EC51B88E8A6C5441AE47E18AA73E51415C8FC2458F6C5441295C8FC2A83E5141EC51B83E926C5441AE47E1CAA93E514114AE4771946C5441D7A3704DAB3E51411F85EB51936C544100000060B03E5141295C8F02916C544114AE47F1B53E5141C3F5287C8F6C54413D0AD7B3BB3E514152B81E958E6C5441295C8F02CB3E5141713D0AD78B6C544100000060D93E51411F85EB31886C5441A4703DCAE33E5141E17A14FE846C5441EC51B8DEE03E51419A999959786C54411F85EB81DF3E514148E17A74726C544100000000DF3E514133333343706C5441A4703D2AEA3E5141A4703DEA6D6C544148E17AD4F33E51418FC2F5686C6C544133333393083F514152B81E856A6C544156F9FBED093F51410BCE1895726C5441B0D5FD67123F51419F86FC55736C544128A6F54E183F5141522D1947746C54411F85EBC11D3F5141E17A148E746C5441295C8F02233F51411F85EB11736C5441C3F5281C283F51415C8FC2E5716C54418FC2F568303F514152B81EA5706C5441E17A141E333F5141E17A146E706C54413D0AD7B3343F51415C8FC245706C5441E570B092363F51418A8CB992706C544180A635B5383F5141B9F79324726C5441AB172DEA3C3F5141BF7A5229766C5441A3236730423F5141284B1A5D796C5441BF1DDAA6473F51414ABCE1DE7A6C5441127D0A0C4C3F5141C3809F7F7B6C544158DC0ABE4D3F51410C5D11E07B6C5441CDA6E501513F51416D2DA9607C6C5441CDA6E501513F5141C5FD102E7A6C5441AB351E804F3F5141D76E7849766C54417B14AE274E3F5141295C8FE2726C5441C3F5284C4D3F5141000000A06F6C544148E17AF44C3F5141A4703DAA6C6C544148E17AF44C3F51415C8FC2D5696C54411F85EB614D3F514166666646666C544152B81E954E3F51415C8FC295626C5441D7A370CD523F5141666666A65C6C54419A999929573F51411F85EBE1536C544152B81E05443F51419A9999B94D6C5441713D0A773A3F5141A4703D2A4D6C54413D0AD753323F5141666666D64B6C54410AD7A3D01F3F51415C8FC2C5466C5441AE47E18A1F3F51411F85EBC1456C54411F85EB611F3F51413D0AD743446C5441AEE35A101E3F5141578D01B13D6C5441D4AF126B1D3F5141678DBAFE3A6C5441C3F5289C0E3F5141AE47E15A3B6C5441000000C0053F514152B81E85376C5441863B683D033F51410E140330346C54411F85EB71023F51415C8FC225346C54419CA2D207FE3E5141321B35B9346C5441596D6FBCFC3E5141E5A946E5346C54415C8FC285F43E51410AD7A370366C54415C8FC2A5E83E51410AD7A3C0376C5441A4703D9ADD3E5141713D0AA7376C5441713D0AD7D73E514185EB5188366C544185EB5148BD3E5141C3F5283C306C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979265 - 52900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000009ABA4B446BE650418B7EFA42DA0E554143CAF00D77E6504128B5FCBAAD0E5541295C8F3276E650410AD7A3F0AD0E554152B81E1574E6504114AE4751AD0E55416666667669E65041AE47E11AA70E55411F85EBC15DE650418FC2F5F89F0E5541A4703D6A51E65041B81E858B980E554114AE47914DE6504148E17AA4950E5541295C8F224AE650410AD7A320980E55411F85EB7146E65041D7A3704DA40E55418FC2F50843E6504114AE47C1AE0E55419A99997943E65041D7A3708DB40E5541EC51B8AE44E65041C3F5289CB60E5541C3F528CC48E650419A999909BA0E554185EB514852E65041CDCCCC7CC00E554152B81E955CE65041000000E0CA0E5541713D0AA75FE6504148E17A54CE0E55413D0AD71361E65041E17A14FED00E55418FC2F5B866E65041B81E858BD60E55419ABA4B446BE650418B7EFA42DA0E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003E00000052B81E1574E6504114AE4751AD0E5541E3A3C1CD71E65041F4F505FCAB0E5541C24E2F556EE6504197C239F4A90E55414352A4376CE6504169E76EB7A80E55416666667669E65041AE47E11AA70E55415D94E04F5EE65041905D764FA00E5541EDEDC4B259E6504102089E879D0E554108B5138856E6504177C5C19F9B0E5541809A9FAE54E650419044D7829A0E554188A1ABE852E65041F4F0A871990E5541ED995ADE52E65041AA9D736B990E5541A4703D6A51E65041B81E858B980E55414ACD871051E650413A2AD847980E55410B761EA250E6504145308DF4970E5541D08266F94FE65041A0C94575970E554188F4B0D34FE65041D547D358970E55410DCE52314FE65041355C56DE960E5541478A449D4EE65041736CA56E960E55418805C94F4EE650416EC93134960E554114AE47914DE6504148E17AA4950E5541C36636554CE650417D074D89960E55416F696D2D4AE65041A990CC1A980E5541D339BC054AE65041ACFBBE7F980E55412647EDFC49E65041D116CF9C980E55417155512247E6504195546C07A20E55411D57977646E65041CC14073EA40E55411F85EB7146E65041D7A3704DA40E55412DE2BCE244E65041E3690815A90E5541FE19201243E65041EF8E2FA5AE0E5541B06C441543E6504114447163AF0E5541AB2CDD5643E6504125D4C0C3B20E5541DF5D9F6143E65041CF708251B30E5541CA710B7D43E650412FA66B89B40E5541F3A7F7A643E65041D738BEDAB40E5541C422DCB643E6504159A4D2F5B40E55410593135B44E650415A0FA30DB60E554126FDFEB144E65041D17EF49DB60E554175059A8C46E65041B47E332AB80E5541A4C4276A49E650414A480A75BA0E55411BA914954FE65041DD21BEA6BE0E554185EB514852E65041CDCCCC7CC00E554104E67AFB55E650412C9F0138C40E5541F25096305AE65041687C4376C80E554152B81E955CE65041000000E0CA0E5541713D0AA75FE6504148E17A54CE0E554152C36E8E60E6504187A5D104D00E554149D208A861E65041249BD88FD10E5541F8586BB761E650413F98FA9ED10E55414EF66D5166E65041429EAF25D60E55417BA34D5A66E6504110126A2ED60E5541118A92F568E650418ED0D75FD80E55419ABA4B446BE650418B7EFA42DA0E55418A3A50136CE65041C77EE934D70E554139D0D0986EE650416A1059AECD0E55414B3C213670E65041B55BF094C70E5541C15F570B76E6504130F2EA8BB10E55418B606B0C76E650418944D887B10E55416450962976E65041E4D6A719B10E55413A7EC12B76E65041117F7611B10E554143CAF00D77E6504128B5FCBAAD0E5541295C8F3276E650410AD7A3F0AD0E554152B81E1574E6504114AE4751AD0E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724689 - 129951
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000AEB1C8B55EB150418BDD748EB54A55410DC8BB625EB1504176EC1657B54A554123B9199A5EB15041EBF3673BB54A5541FA4BCB9F4DB15041997C57F6B64A55418991E15350B150418563F3E2C94A5541813F668451B15041D51D4352D24A5541EDF43B9952B1504131777529DC4A5541868CCD1C54B150415EE4C323ED4A554151E3286A65B15041D4EB1408ED4A5541815A9FD26EB15041330208B5EC4A5541E170927F6EB1504179DA3592E94A5541C732CDAF6BB150412E25FA59DD4A554192B6421066B150418E68071AC64A55410E100FC464B150412E5728A4C24A554135A5639A62B1504191722F88BE4A55413DF7DE6961B15041D64A5D65BB4A554146495A3960B15041E7EE5304B94A55417A7D91775FB15041997C57F6B64A5541AEB1C8B55EB150418BDD748EB54A5541
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000853F668451B15041D71D4352D24A55414CE0988752B150419C3BF688DB4A5541EEF43B9952B1504130777529DC4A5541E468CEF553B15041EA1D726EEB4A5541041F3F2054B1504198687521ED4A55410AE6DA8D55B1504198687521ED4A55414EE3286A65B15041D5EB1408ED4A5541904BFF9C6EB15041D363E1B6EC4A554156FE0AB46EB1504167DC6D8DEB4A55416FB4CA9A6EB15041C0BC5599EA4A5541DB8441856EB150414F9B27C9E94A55415025585A6EB150416DB969F0E84A55411C9E5ACA6DB1504106DA9B7EE64A55411CEFCE9D6DB150414FB001BDE54A5541CAC596886DB15041EFADC860E54A5541DD1CD9536DB150416563907BE44A5541A113A3486CB150414B3B39F2DF4A5541B1D8AA726BB15041BBF5355DDC4A554172C4DAAE69B15041837A2311D54A5541A24B0FDA68B15041B65A50A1D14A55418894F06B66B1504110BC4EDBC74A554124BA823866B15041028B72C0C64A554194B6421066B150418A68071AC64A5541A38C3EC564B150414BA351A7C24A5541AEF32DBB64B15041136E4993C24A5541EEB2DD2164B15041D4BFFD6FC14A554146491F6F63B15041DAC3601CC04A5541EBE535BC62B1504148E85DFBBE4A55417852D15C62B15041553BDCE5BD4A55413CF7DE6961B15041D44A5D65BB4A554142495A3960B15041EBEE5304B94A55415538DDA15FB15041100A2569B74A55414E377B0C5FB150410D08613EB64A5541AAB1C8B55EB150418DDD748EB54A55410DC8BB625EB1504176EC1657B54A5541041C42725EB1504175C2534FB54A55411F338EDA59B15041088448B7B54A55417537B2BA4DB1504189A299F3B64A5541C642808D4EB15041243C4A76BD4A554114F0068E4EB150415BF9F879BD4A5541C878942B50B1504140B6D7C8C84A5541E57C904D50B150419819B2A1C94A554102C0A96750B15041380A396FCA4A5541853F668451B15041D71D4352D24A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724689 - 329208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000AEB1C8B55EB150418BDD748EB54A55410DC8BB625EB1504176EC1657B54A554123B9199A5EB15041EBF3673BB54A5541FA4BCB9F4DB15041997C57F6B64A55418991E15350B150418563F3E2C94A5541813F668451B15041D51D4352D24A5541EDF43B9952B1504131777529DC4A5541868CCD1C54B150415EE4C323ED4A554151E3286A65B15041D4EB1408ED4A5541815A9FD26EB15041330208B5EC4A5541E170927F6EB1504179DA3592E94A5541C732CDAF6BB150412E25FA59DD4A554192B6421066B150418E68071AC64A55410E100FC464B150412E5728A4C24A554135A5639A62B1504191722F88BE4A55413DF7DE6961B15041D64A5D65BB4A554146495A3960B15041E7EE5304B94A55417A7D91775FB15041997C57F6B64A5541AEB1C8B55EB150418BDD748EB54A5541
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000853F668451B15041D71D4352D24A55414CE0988752B150419C3BF688DB4A5541EEF43B9952B1504130777529DC4A5541E468CEF553B15041EA1D726EEB4A5541041F3F2054B1504198687521ED4A55410AE6DA8D55B1504198687521ED4A55414EE3286A65B15041D5EB1408ED4A5541904BFF9C6EB15041D363E1B6EC4A554156FE0AB46EB1504167DC6D8DEB4A55416FB4CA9A6EB15041C0BC5599EA4A5541DB8441856EB150414F9B27C9E94A55415025585A6EB150416DB969F0E84A55411C9E5ACA6DB1504106DA9B7EE64A55411CEFCE9D6DB150414FB001BDE54A5541CAC596886DB15041EFADC860E54A5541DD1CD9536DB150416563907BE44A5541A113A3486CB150414B3B39F2DF4A5541B1D8AA726BB15041BBF5355DDC4A554172C4DAAE69B15041837A2311D54A5541A24B0FDA68B15041B65A50A1D14A55418894F06B66B1504110BC4EDBC74A554124BA823866B15041028B72C0C64A554194B6421066B150418A68071AC64A5541A38C3EC564B150414BA351A7C24A5541AEF32DBB64B15041136E4993C24A5541EEB2DD2164B15041D4BFFD6FC14A554146491F6F63B15041DAC3601CC04A5541EBE535BC62B1504148E85DFBBE4A55417852D15C62B15041553BDCE5BD4A55413CF7DE6961B15041D44A5D65BB4A554142495A3960B15041EBEE5304B94A55415538DDA15FB15041100A2569B74A55414E377B0C5FB150410D08613EB64A5541AAB1C8B55EB150418DDD748EB54A55410DC8BB625EB1504176EC1657B54A5541041C42725EB1504175C2534FB54A55411F338EDA59B15041088448B7B54A55417537B2BA4DB1504189A299F3B64A5541C642808D4EB15041243C4A76BD4A554114F0068E4EB150415BF9F879BD4A5541C878942B50B1504140B6D7C8C84A5541E57C904D50B150419819B2A1C94A554102C0A96750B15041380A396FCA4A5541853F668451B15041D71D4352D24A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 685722
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441E17A14FEAC4251418FC2F5087A815441713D0AD7B24251415C8FC235788154416FB1C92AC64251419C2D4A91728154416BA98231B442514158CAD2EA2D815441713D0AD7B04251419A9999C92E8154412A25F2AC9B4251413E4CD03333815441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000333333B39442514185EB51A834815441713D0AD7B04251419A9999C92E815441D7A3702DC3425141C3F528CC29815441AE47E1EAC44251411F85EBC127815441B81E855BC542514152B81EB52581544185EB5148C342514152B81E15228154417B14AE07C2425141333333632181544166666646A0425141B81E85EB248154417B14AE8790425141CDCCCC6C22815441A4703DCA8D42514185EB518821815441666666F68C4251411F85EB51228154418FC2F5B890425141AE47E1DA318154419A999929924251410AD7A39033815441333333B39442514185EB51A834815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 1191562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441E17A14FEAC4251418FC2F5087A815441713D0AD7B24251415C8FC235788154416FB1C92AC64251419C2D4A91728154416BA98231B442514158CAD2EA2D815441713D0AD7B04251419A9999C92E8154412A25F2AC9B4251413E4CD03333815441
+</a>
+
+<b>
+010600000001000000010300000001000000400000000EE1B116B44251417D444AE72D815441713D0AD7B04251419A9999C92E815441333333B39442514185EB51A834815441C6662661954251418F0B1ACF34815441E58367829742514152DDFFA93581544103E61489984251419F77046D3681544112976B0C9942514150B8AC77378154418D69C78B99425141689FF8C9388154410C6BD59B9A425141F9586E883D8154410E3B848CBD425141E040127F368154411621486FC5425141D586B9814D815441C76AAF99BE42514152E60F9C4F815441DE00B758CA425141019B18567181544148E17AF4CC42514185EB51A870815441C3F5289CC64251415C8FC2655F81544148E17A94D0425141AE47E1FA5C81544152B81EF5D84251410AD7A3C059815441C3F5288CDA425141B81E85FB58815441CDCCCCDCE34251411F85EBF16A815441666666D6EC42514152B81EB568815441F6285C0FE6425141E17A143E59815441D7A3709DE04251411F85EBF15981544166666666DE42514148E17A145981544133333363DD4251413D0AD78355815441E17A14FEDB425141333333A35381544152B81E55D842514148E17A74548154417B14AE97D7425141D7A370BD548154418FC2F538D842514185EB5168588154410AD7A3E0CC4251410AD7A3505B815441295C8F22C9425141EC51B8EE58815441D7A370DDC6425141CDCCCCEC5281544148E17AA4C5425141000000705081544100000070C74251415C8FC2C54D8154413D0AD743CB4251418FC2F54849815441F6285C2FCD425141CDCCCC9C4A815441713D0A27D242514185EB51084C815441713D0A27D2425141CDCCCC6C4E8154419A999919D7425141EC51B85E4E815441F6285C5FD7425141000000605381544133333363DE425141000000B051815441F6285CFFE04251411F85EB615081544133333343E442514152B81E55508154411F85EB31E5425141B81E855B4E81544185EB5108ED425141000000004481544114AE4751EA425141E17A141E44815441A4703DAAE3425141E17A14DE3E815441F6285C4FDD42514114AE479138815441295C8F72D94251413D0AD77330815441A4703DCADD425141A4703D0A3C815441713D0A17E34251410000004049815441295C8F42E3425141000000104A81544100000040DC4251410AD7A3A04C8154419A999969DA425141333333034D8154417B14AE87D3425141000000C03D81544148E17AF4CE42514114AE473133815441295C8FB2C9425141333333532681544100000010D54251418FC2F5D8258154419A9999B9D442514185EB510825815441295C8F42D44251415C8FC26523815441C3F528DCC5425141C3F528BC23815441B81E855BC542514152B81EB525815441AE47E1EAC44251411F85EBC127815441D7A3702DC3425141C3F528CC298154410EE1B116B44251417D444AE72D815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 1191594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441E17A14FEAC4251418FC2F5087A815441713D0AD7B24251415C8FC235788154416FB1C92AC64251419C2D4A91728154416BA98231B442514158CAD2EA2D815441713D0AD7B04251419A9999C92E8154412A25F2AC9B4251413E4CD03333815441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000333333B39442514185EB51A834815441713D0AD7B04251419A9999C92E815441D7A3702DC3425141C3F528CC29815441AE47E1EAC44251411F85EBC127815441B81E855BC542514152B81EB52581544185EB5148C342514152B81E15228154417B14AE07C2425141333333632181544166666646A0425141B81E85EB248154417B14AE8790425141CDCCCC6C22815441A4703DCA8D42514185EB518821815441666666F68C4251411F85EB51228154418FC2F5B890425141AE47E1DA318154419A999929924251410AD7A39033815441333333B39442514185EB51A834815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 3958529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441E17A14FEAC4251418FC2F5087A815441713D0AD7B24251415C8FC235788154416FB1C92AC64251419C2D4A91728154416BA98231B442514158CAD2EA2D815441713D0AD7B04251419A9999C92E8154412A25F2AC9B4251413E4CD03333815441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000333333B39442514185EB51A834815441713D0AD7B04251419A9999C92E815441D7A3702DC3425141C3F528CC29815441AE47E1EAC44251411F85EBC127815441B81E855BC542514152B81EB52581544185EB5148C342514152B81E15228154417B14AE07C2425141333333632181544166666646A0425141B81E85EB248154417B14AE8790425141CDCCCC6C22815441A4703DCA8D42514185EB518821815441666666F68C4251411F85EB51228154418FC2F5B890425141AE47E1DA318154419A999929924251410AD7A39033815441333333B39442514185EB51A834815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 5307794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441E17A14FEAC4251418FC2F5087A815441713D0AD7B24251415C8FC235788154416FB1C92AC64251419C2D4A91728154416BA98231B442514158CAD2EA2D815441713D0AD7B04251419A9999C92E8154412A25F2AC9B4251413E4CD03333815441
+</a>
+
+<b>
+010600000001000000010300000001000000400000000EE1B116B44251417D444AE72D815441713D0AD7B04251419A9999C92E815441333333B39442514185EB51A834815441C7662661954251418F0B1ACF34815441E88367829742514150DDFFA93581544101E61489984251419E77046D3681544112976B0C9942514150B8AC77378154418C69C78B99425141649FF8C9388154410C6BD59B9A425141F9586E883D8154410E3B848CBD425141E040127F368154411621486FC5425141D586B9814D815441C76AAF99BE42514152E60F9C4F815441DE00B758CA425141019B18567181544148E17AF4CC42514185EB51A870815441C3F5289CC64251415C8FC2655F81544148E17A94D0425141AE47E1FA5C81544152B81EF5D84251410AD7A3C059815441C3F5288CDA425141B81E85FB58815441CDCCCCDCE34251411F85EBF16A815441666666D6EC42514152B81EB568815441F6285C0FE6425141E17A143E59815441D7A3709DE04251411F85EBF15981544166666666DE42514148E17A145981544133333363DD4251413D0AD78355815441E17A14FEDB425141333333A35381544152B81E55D842514148E17A74548154417B14AE97D7425141D7A370BD548154418FC2F538D842514185EB5168588154410AD7A3E0CC4251410AD7A3505B815441295C8F22C9425141EC51B8EE58815441D7A370DDC6425141CDCCCCEC5281544148E17AA4C5425141000000705081544100000070C74251415C8FC2C54D8154413D0AD743CB4251418FC2F54849815441F6285C2FCD425141CDCCCC9C4A815441713D0A27D242514185EB51084C815441713D0A27D2425141CDCCCC6C4E8154419A999919D7425141EC51B85E4E815441F6285C5FD7425141000000605381544133333363DE425141000000B051815441F6285CFFE04251411F85EB615081544133333343E442514152B81E55508154411F85EB31E5425141B81E855B4E81544185EB5108ED425141000000004481544114AE4751EA425141E17A141E44815441A4703DAAE3425141E17A14DE3E815441F6285C4FDD42514114AE479138815441295C8F72D94251413D0AD77330815441A4703DCADD425141A4703D0A3C815441713D0A17E34251410000004049815441295C8F42E3425141000000104A81544100000040DC4251410AD7A3A04C8154419A999969DA425141333333034D8154417B14AE87D3425141000000C03D81544148E17AF4CE42514114AE473133815441295C8FB2C9425141333333532681544100000010D54251418FC2F5D8258154419A9999B9D442514185EB510825815441295C8F42D44251415C8FC26523815441C3F528DCC5425141C3F528BC23815441B81E855BC542514152B81EB525815441AE47E1EAC44251411F85EBC127815441D7A3702DC3425141C3F528CC298154410EE1B116B44251417D444AE72D815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3168668 - 3108485
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD713CBCA5041E17A144ED1AD544185EB5158CCCA504114AE4781D0AD54419A9999C9CDCA5041D7A3704DBBAD544185EB518894CA5041333333B3A5AD54413333330391CA5041333333B3AFAD5441000000708ECA50410AD7A320B9AD5441295C8F528FCA5041A4703DCABAAD54413D0AD713CBCA5041E17A144ED1AD5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BF173B991CA504116A26FADADAD5441001D061591CA5041CE609080AFAD54411EBD6ED890CA5041DC52C74FB0AD54410FBB91E890CA504142E5455BB0AD5441E5247BBE91CA5041744B96A9B0AD5441C5E9C68B9BCA5041E2933D2CB4AD5441F5E2BEC5A8CA50416F43FAEAB8AD5441545F6345C8CA50412F5ECA45C4AD5441F991EE12CDCA50417CE22B01C6AD544101AD3A90CDCA50417284B398BEAD54418B795BC9CDCA5041ACC80151BBAD5441E7EFF84EABCA504173D51F4BAEAD5441419C63E696CA5041BC32DF97A6AD5441B1E9AEA094CA50411C7064BCA5AD54416B9AE18994CA50418448C3AEA5AD54418BF173B991CA504116A26FADADAD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3168668 - 3487010
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD713CBCA5041E17A144ED1AD544185EB5158CCCA504114AE4781D0AD54419A9999C9CDCA5041D7A3704DBBAD544185EB518894CA5041333333B3A5AD54413333330391CA5041333333B3AFAD5441000000708ECA50410AD7A320B9AD5441295C8F528FCA5041A4703DCABAAD54413D0AD713CBCA5041E17A144ED1AD5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BF173B991CA504116A26FADADAD5441001D061591CA5041CE609080AFAD54411EBD6ED890CA5041DC52C74FB0AD54410FBB91E890CA504142E5455BB0AD5441E5247BBE91CA5041744B96A9B0AD5441C5E9C68B9BCA5041E2933D2CB4AD5441F5E2BEC5A8CA50416F43FAEAB8AD5441545F6345C8CA50412F5ECA45C4AD5441F991EE12CDCA50417CE22B01C6AD544101AD3A90CDCA50417284B398BEAD54418B795BC9CDCA5041ACC80151BBAD5441E7EFF84EABCA504173D51F4BAEAD5441419C63E696CA5041BC32DF97A6AD5441B1E9AEA094CA50411C7064BCA5AD54416B9AE18994CA50418448C3AEA5AD54418BF173B991CA504116A26FADADAD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979214 - 1730667
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541295C8FA25E9650410000009004305541A4703DEA5B965041E17A14DE093055417B14AEE7589650413D0AD77316305541F6285C1F56965041C3F5283C2030554180387CB34E96504152233C4423305541EC8D56FA479650418FE2BB952530554195D4494847965041A8A7AE862930554195A2B09243965041FF9254EE2D305541012A248F40965041B79E3A2D31305541F6C2F06942965041D1632D1E3530554158AE96D14696504170DCB921383055415CD7BB2D5296504189A1AC123C3055417AF76C3065965041E0251F55423055414CC845606C965041BC2B92F443305541987E515876965041989838B94330554137F7DD5B7996504198FF6BDE413055411D991E90739650410487DFDA3E305541F9375E0A7796504128E89F603B30554113648420799650414C4960E6373055417F522B4274965041AD69A0BD363055415BF16ABC779650417A115491323055415B8A37977996504185DFBADB2E305541F2C4BFD5779650418DE13F28263055410B448DD178965041F039E8E0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541CB2DADFFBD9650418985F1CBFF2F554194B0440CBB9650419CE16395F82F5541B75DCB6CB896504123E792AEF22F554134354121B6965041F1BA3E52F42F55418DEBC0ABA996504164F08BD8E82F554133C1D157A99650414520AA45E32F554133C1D157A9965041E05392C3D92F554133C1D157A99650418A06483DD12F554197197A10A696504174641F0FC82F55411A42045CA8965041BABE2CD0C22F5541CE96E203A9965041C4ECE534BF2F5541379E7625A1965041D81A9F99BB2F55410600000042DC5E4D839650412E21CC7A16305541784F1C33839650415CE1E5F014305541A8A786338F965041F0D4D6C2113055412C8158EB8F9650417B614CEA13305541A0F4E2C38D965041172E758E1530554142DC5E4D839650412E21CC7A16305541070000005B8D9A269596504173AEA87A123055415B8D9A26959650410E553DBC10305541DF8C0041999650416448619B0F3055418ABF70C49D965041EFAE42600E305541D0987589A09650413D1557320F30554154724741A1965041B1AE756D103055415B8D9A269596504173AEA87A12305541
+</a>
+
+<b>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541295C8FA25E9650410000009004305541A4703DEA5B965041E17A14DE093055417B14AEE7589650413D0AD77316305541F6285C1F56965041C3F5283C2030554180387CB34E96504152233C4423305541EC8D56FA479650418FE2BB952530554195D4494847965041A8A7AE862930554195A2B09243965041FF9254EE2D305541012A248F40965041B79E3A2D31305541F6C2F06942965041D1632D1E3530554158AE96D14696504170DCB921383055415CD7BB2D5296504189A1AC123C3055417AF76C3065965041E0251F55423055414CC845606C965041BC2B92F443305541987E515876965041989838B94330554137F7DD5B7996504198FF6BDE413055411D991E90739650410487DFDA3E305541F9375E0A7796504128E89F603B30554113648420799650414C4960E6373055417F522B4274965041AD69A0BD363055415BF16ABC779650417A115491323055415B8A37977996504185DFBADB2E305541F2C4BFD5779650418DE13F28263055410B448DD178965041F039E8E0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541CB2DADFFBD9650418985F1CBFF2F554194B0440CBB9650419CE16395F82F5541B75DCB6CB896504123E792AEF22F554134354121B6965041F1BA3E52F42F55418DEBC0ABA996504164F08BD8E82F554133C1D157A99650414520AA45E32F554133C1D157A9965041E05392C3D92F554133C1D157A99650418A06483DD12F554197197A10A696504174641F0FC82F55411A42045CA8965041BABE2CD0C22F5541CE96E203A9965041C4ECE534BF2F5541379E7625A1965041D81A9F99BB2F55410600000044DC5E4D839650412B21CC7A16305541774F1C33839650415BE1E5F014305541A4A786338F965041EED4D6C2113055412B8158EB8F96504178614CEA13305541A2F4E2C38D965041152E758E1530554144DC5E4D839650412B21CC7A16305541070000005F8D9A269596504175AEA87A123055415F8D9A26959650410B553DBC10305541E38C0041999650416548619B0F30554186BF70C49D965041F1AE42600E305541D4987589A09650413B1557320F30554150724741A1965041AEAE756D103055415F8D9A269596504175AEA87A12305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979214 - 3485438
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541295C8FA25E9650410000009004305541A4703DEA5B965041E17A14DE093055417B14AEE7589650413D0AD77316305541F6285C1F56965041C3F5283C2030554180387CB34E96504152233C4423305541EC8D56FA479650418FE2BB952530554195D4494847965041A8A7AE862930554195A2B09243965041FF9254EE2D305541012A248F40965041B79E3A2D31305541F6C2F06942965041D1632D1E3530554158AE96D14696504170DCB921383055415CD7BB2D5296504189A1AC123C3055417AF76C3065965041E0251F55423055414CC845606C965041BC2B92F443305541987E515876965041989838B94330554137F7DD5B7996504198FF6BDE413055411D991E90739650410487DFDA3E305541F9375E0A7796504128E89F603B30554113648420799650414C4960E6373055417F522B4274965041AD69A0BD363055415BF16ABC779650417A115491323055415B8A37977996504185DFBADB2E305541F2C4BFD5779650418DE13F28263055410B448DD178965041F039E8E0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541CB2DADFFBD9650418985F1CBFF2F554194B0440CBB9650419CE16395F82F5541B75DCB6CB896504123E792AEF22F554134354121B6965041F1BA3E52F42F55418DEBC0ABA996504164F08BD8E82F554133C1D157A99650414520AA45E32F554133C1D157A9965041E05392C3D92F554133C1D157A99650418A06483DD12F554197197A10A696504174641F0FC82F55411A42045CA8965041BABE2CD0C22F5541CE96E203A9965041C4ECE534BF2F5541379E7625A1965041D81A9F99BB2F55410600000042DC5E4D839650412E21CC7A16305541784F1C33839650415CE1E5F014305541A8A786338F965041F0D4D6C2113055412C8158EB8F9650417B614CEA13305541A0F4E2C38D965041172E758E1530554142DC5E4D839650412E21CC7A16305541070000005B8D9A269596504173AEA87A123055415B8D9A26959650410E553DBC10305541DF8C0041999650416448619B0F3055418ABF70C49D965041EFAE42600E305541D0987589A09650413D1557320F30554154724741A1965041B1AE756D103055415B8D9A269596504173AEA87A12305541
+</a>
+
+<b>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541295C8FA25E9650410000009004305541A4703DEA5B965041E17A14DE093055417B14AEE7589650413D0AD77316305541F6285C1F56965041C3F5283C2030554180387CB34E96504152233C4423305541EC8D56FA479650418FE2BB952530554195D4494847965041A8A7AE862930554195A2B09243965041FF9254EE2D305541012A248F40965041B79E3A2D31305541F6C2F06942965041D1632D1E3530554158AE96D14696504170DCB921383055415CD7BB2D5296504189A1AC123C3055417AF76C3065965041E0251F55423055414CC845606C965041BC2B92F443305541987E515876965041989838B94330554137F7DD5B7996504198FF6BDE413055411D991E90739650410487DFDA3E305541F9375E0A7796504128E89F603B30554113648420799650414C4960E6373055417F522B4274965041AD69A0BD363055415BF16ABC779650417A115491323055415B8A37977996504185DFBADB2E305541F2C4BFD5779650418DE13F28263055410B448DD178965041F039E8E0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541CB2DADFFBD9650418985F1CBFF2F554194B0440CBB9650419CE16395F82F5541B75DCB6CB896504123E792AEF22F554134354121B6965041F1BA3E52F42F55418DEBC0ABA996504164F08BD8E82F554133C1D157A99650414520AA45E32F554133C1D157A9965041E05392C3D92F554133C1D157A99650418A06483DD12F554197197A10A696504174641F0FC82F55411A42045CA8965041BABE2CD0C22F5541CE96E203A9965041C4ECE534BF2F5541379E7625A1965041D81A9F99BB2F55410600000044DC5E4D839650412B21CC7A16305541774F1C33839650415BE1E5F014305541A4A786338F965041EED4D6C2113055412B8158EB8F96504178614CEA13305541A2F4E2C38D965041152E758E1530554144DC5E4D839650412B21CC7A16305541070000005F8D9A269596504175AEA87A123055415F8D9A26959650410B553DBC10305541E38C0041999650416548619B0F30554186BF70C49D965041F1AE42600E305541D4987589A09650413B1557320F30554150724741A1965041AEAE756D103055415F8D9A269596504175AEA87A12305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979214 - 406674
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541295C8FA25E9650410000009004305541A4703DEA5B965041E17A14DE093055417B14AEE7589650413D0AD77316305541F6285C1F56965041C3F5283C2030554180387CB34E96504152233C4423305541EC8D56FA479650418FE2BB952530554195D4494847965041A8A7AE862930554195A2B09243965041FF9254EE2D305541012A248F40965041B79E3A2D31305541F6C2F06942965041D1632D1E3530554158AE96D14696504170DCB921383055415CD7BB2D5296504189A1AC123C3055417AF76C3065965041E0251F55423055414CC845606C965041BC2B92F443305541987E515876965041989838B94330554137F7DD5B7996504198FF6BDE413055411D991E90739650410487DFDA3E305541F9375E0A7796504128E89F603B30554113648420799650414C4960E6373055417F522B4274965041AD69A0BD363055415BF16ABC779650417A115491323055415B8A37977996504185DFBADB2E305541F2C4BFD5779650418DE13F28263055410B448DD178965041F039E8E0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541CB2DADFFBD9650418985F1CBFF2F554194B0440CBB9650419CE16395F82F5541B75DCB6CB896504123E792AEF22F554134354121B6965041F1BA3E52F42F55418DEBC0ABA996504164F08BD8E82F554133C1D157A99650414520AA45E32F554133C1D157A9965041E05392C3D92F554133C1D157A99650418A06483DD12F554197197A10A696504174641F0FC82F55411A42045CA8965041BABE2CD0C22F5541CE96E203A9965041C4ECE534BF2F5541379E7625A1965041D81A9F99BB2F55410600000042DC5E4D839650412E21CC7A16305541784F1C33839650415CE1E5F014305541A8A786338F965041F0D4D6C2113055412C8158EB8F9650417B614CEA13305541A0F4E2C38D965041172E758E1530554142DC5E4D839650412E21CC7A16305541070000005B8D9A269596504173AEA87A123055415B8D9A26959650410E553DBC10305541DF8C0041999650416448619B0F3055418ABF70C49D965041EFAE42600E305541D0987589A09650413D1557320F30554154724741A1965041B1AE756D103055415B8D9A269596504173AEA87A12305541
+</a>
+
+<b>
+010600000001000000010300000003000000380000003ABE6AA77A9650417DC38AA0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541CB2DADFFBD9650418985F1CBFF2F554194B0440CBB9650419CE16395F82F5541B75DCB6CB896504123E792AEF22F554134354121B6965041F1BA3E52F42F55418DEBC0ABA996504164F08BD8E82F554133C1D157A99650414520AA45E32F554133C1D157A9965041E05392C3D92F554133C1D157A99650418A06483DD12F554197197A10A696504174641F0FC82F55411A42045CA8965041BABE2CD0C22F5541CE96E203A9965041C4ECE534BF2F5541379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541295C8FA25E9650410000009004305541A4703DEA5B965041E17A14DE093055417B14AEE7589650413D0AD77316305541F6285C1F56965041C3F5283C2030554180387CB34E96504152233C4423305541EC8D56FA479650418FE2BB9525305541666666964F96504114AE4791233055413217FC3952965041ACC0B9DD223055410DC53A565696504189196D51223055419361C90E589650411502182E223055415E75320B5E965041AC5770E821305541E13BF6246B965041DCC4E1A3203055416240FE526C9650416435A786203055412CAEB9F277965041A75C1F921F305541BE5F941B7B965041C6F5565A1F305541D13E58257B965041C836BC50213055413ABE6AA77A9650417DC38AA0223055410600000044DC5E4D839650412B21CC7A16305541774F1C33839650415BE1E5F014305541A4A786338F965041EED4D6C2113055412B8158EB8F96504178614CEA13305541A2F4E2C38D965041152E758E1530554144DC5E4D839650412B21CC7A16305541070000005F8D9A269596504175AEA87A123055415F8D9A26959650410B553DBC10305541E38C0041999650416548619B0F30554186BF70C49D965041F1AE42600E305541D4987589A09650413B1557320F30554150724741A1965041AEAE756D103055415F8D9A269596504175AEA87A12305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979375 - 1749311
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000A9EDFF315BE0504101F5F104CA8354414BC4BF225AE050411F27ECA6E3835441529CEA9A64E0504128C1CE48E383544153A2210A66E05041EB5CC649CA83544108E6AE6067E0504106FE71E4B08354411F85EBE162E05041F6285CBFB1835441212F7B785FE0504175BC971BB28354419B45AD9F5CE050417F0D1343B2835441A9EDFF315BE0504101F5F104CA835441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000003D0AD7B35DE050410AD7A330C38354415C8FC2555DE05041F6285C8FCA835441713D0A275DE050418FC2F538CE835441346AAE155CE05041CAFE6695E3835441569CEA9A64E0504123C1CE48E38354417498A4A066E0504162D7D22AE3835441B81E85FB67E050415C8FC245C983544185EB514869E050417B14AE87B083544107E6AE6067E050410AFE71E4B08354411F85EBE162E05041F6285CBFB1835441202F7B785FE0504175BC971BB2835441CDCCCC8C5EE0504148E17A34B2835441000000005EE0504148E17A34BD8354413D0AD7B35DE050410AD7A330C3835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979375 - 3393860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000A9EDFF315BE0504101F5F104CA8354414BC4BF225AE050411F27ECA6E3835441529CEA9A64E0504128C1CE48E383544153A2210A66E05041EB5CC649CA83544108E6AE6067E0504106FE71E4B08354411F85EBE162E05041F6285CBFB1835441212F7B785FE0504175BC971BB28354419B45AD9F5CE050417F0D1343B2835441A9EDFF315BE0504101F5F104CA835441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000003D0AD7B35DE050410AD7A330C38354415C8FC2555DE05041F6285C8FCA835441713D0A275DE050418FC2F538CE835441346AAE155CE05041CAFE6695E3835441569CEA9A64E0504123C1CE48E38354417498A4A066E0504162D7D22AE3835441B81E85FB67E050415C8FC245C983544185EB514869E050417B14AE87B083544107E6AE6067E050410AFE71E4B08354411F85EBE162E05041F6285CBFB1835441202F7B785FE0504175BC971BB2835441CDCCCC8C5EE0504148E17A34B2835441000000005EE0504148E17A34BD8354413D0AD7B35DE050410AD7A330C3835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>970040 - 967065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>970040 - 2933475
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>970040 - 3788619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978656 - 393829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D544108FCEE02FFD95041E2C858D2407D5441195A8022F3D95041DB852A17417D5441A5A93ECFECD95041DF47D13B417D544186B0A52AE7D95041137F0841417D5441D87F0139E7D9504198A30010427D54417E441C72E5D950418B4C96CD4C7D5441295F3A72E5D95041C8A6C5D24C7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978656 - 1759464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D544108FCEE02FFD95041E2C858D2407D5441195A8022F3D95041DB852A17417D5441A5A93ECFECD95041DF47D13B417D544186B0A52AE7D95041137F0841417D5441D87F0139E7D9504198A30010427D54417E441C72E5D950418B4C96CD4C7D5441295F3A72E5D95041C8A6C5D24C7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978656 - 4398522
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D544108FCEE02FFD95041E2C858D2407D5441195A8022F3D95041DB852A17417D5441A5A93ECFECD95041DF47D13B417D544186B0A52AE7D95041137F0841417D5441D87F0139E7D9504198A30010427D54417E441C72E5D950418B4C96CD4C7D5441295F3A72E5D95041C8A6C5D24C7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16579 - 3185678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F558ADF85041A4703D4AF46F5441A4703D9AABF85041AE47E1AAF56F544148E17A64A7F85041E17A14BEF76F54415C8FC245A6F85041B81E854BF86F54419A999949A5F85041F6285C3FF96F54413D0AD793AAF850411F85EB21FB6F544114AE47A1A8F85041D7A3703DFF6F544148E17A84B6F8504100000030047054415C8FC2A5C4F850418FC2F538097054413D0AD793C5F85041F6285C3F097054413D0AD733C5F850410AD7A3E0057054418FC2F508C5F850411F85EB41037054413D0AD7F3C4F8504133333383007054413D0AD7B3C4F8504148E17A44FD6F54419A999929C4F85041713D0A67F76F544148E17A14C3F85041AE47E1EAEF6F5441F6285C1FC3F850411F85EB21EB6F54419A9999A9C3F8504148E17AE4E56F544148E17A64C5F850419A999999DD6F5441CDCCCCDCBDF85041295C8F72DB6F54419A9999D9B7F85041A4703DBAD96F544148E17A94B1F85041F6285CEFD76F544100000050B1F85041E17A149ED96F54418FC2F5F8B0F85041EC51B8DEDC6F544166666606B4F8504133333353DD6F544114AE47B1B3F85041CDCCCCDCDF6F5441B81E85ABB0F85041666666C6DF6F5441E17A148EB0F8504114AE4741E96F544100000040B0F85041AE47E1CAEC6F5441713D0A97AFF8504166666646F06F54413D0AD7C3AEF8504148E17A74F26F54418FC2F558ADF85041A4703D4AF46F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002700000048E17A64C5F850419A999999DD6F544148E17A94B1F85041F6285CEFD76F54418FC2F5F8B0F85041EC51B8DEDC6F544166666606B4F8504133333353DD6F544114AE47B1B3F85041CDCCCCDCDF6F5441B81E85ABB0F85041666666C6DF6F544175781790B0F85041DC8B729BE86F54415D277887B0F85041D9E3F38DE96F5441CE6DFF3DB0F8504177DE71D5EC6F5441AA1B64B8AFF85041B7356C96EF6F544182939397AFF8504154BE9143F06F5441479EC552AFF85041870CCBFAF06F5441E7F245E9AEF85041F5C49011F26F544123137BC3AEF8504198EEF174F26F5441FD081BEDADF8504117EF758AF36F5441D514145AADF85041A3C9CA48F46F5441EDB97835ADF8504166264166F46F54419A8C2198ABF85041D160EBABF56F5441F3D0A12AAAF85041C27D1060F66F54414941A4F3A7F85041B2F38477F76F544176169873A6F85041CAEDE834F86F54419A999949A5F85041F6285C3FF96F54413D0AD793AAF850411F85EB21FB6F544114AE47A1A8F85041D7A3703DFF6F54415C8FC2A5C4F850418FC2F538097054413D0AD793C5F85041F6285C3F097054414C7FF867C5F8504116041FB50770544183C9F434C5F8504124C1ABEA0570544145AB5A09C5F8504100EB154803705441B346ECF4C4F850419A9A3BA700705441AAC8C7BDC4F85041BDA781C5FD6F5441BD1186D3C3F85041FD77DC13F56F544198550E15C3F85041C6A707AAEF6F544149664F19C3F85041EBB90FCBED6F54418FCB4222C3F850410F189920EB6F544105B6896FC3F8504198A7E517E86F5441608BF4A8C3F85041C987BCEAE56F5441396ABEC4C3F8504187C25E62E56F544148E17A64C5F850419A999999DD6F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16579 - 3404185
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F558ADF85041A4703D4AF46F5441A4703D9AABF85041AE47E1AAF56F544148E17A64A7F85041E17A14BEF76F54415C8FC245A6F85041B81E854BF86F54419A999949A5F85041F6285C3FF96F54413D0AD793AAF850411F85EB21FB6F544114AE47A1A8F85041D7A3703DFF6F544148E17A84B6F8504100000030047054415C8FC2A5C4F850418FC2F538097054413D0AD793C5F85041F6285C3F097054413D0AD733C5F850410AD7A3E0057054418FC2F508C5F850411F85EB41037054413D0AD7F3C4F8504133333383007054413D0AD7B3C4F8504148E17A44FD6F54419A999929C4F85041713D0A67F76F544148E17A14C3F85041AE47E1EAEF6F5441F6285C1FC3F850411F85EB21EB6F54419A9999A9C3F8504148E17AE4E56F544148E17A64C5F850419A999999DD6F5441CDCCCCDCBDF85041295C8F72DB6F54419A9999D9B7F85041A4703DBAD96F544148E17A94B1F85041F6285CEFD76F544100000050B1F85041E17A149ED96F54418FC2F5F8B0F85041EC51B8DEDC6F544166666606B4F8504133333353DD6F544114AE47B1B3F85041CDCCCCDCDF6F5441B81E85ABB0F85041666666C6DF6F5441E17A148EB0F8504114AE4741E96F544100000040B0F85041AE47E1CAEC6F5441713D0A97AFF8504166666646F06F54413D0AD7C3AEF8504148E17A74F26F54418FC2F558ADF85041A4703D4AF46F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002700000048E17A64C5F850419A999999DD6F544148E17A94B1F85041F6285CEFD76F54418FC2F5F8B0F85041EC51B8DEDC6F544166666606B4F8504133333353DD6F544114AE47B1B3F85041CDCCCCDCDF6F5441B81E85ABB0F85041666666C6DF6F544175781790B0F85041DC8B729BE86F54415D277887B0F85041D9E3F38DE96F5441CE6DFF3DB0F8504177DE71D5EC6F5441AA1B64B8AFF85041B7356C96EF6F544182939397AFF8504154BE9143F06F5441479EC552AFF85041870CCBFAF06F5441E7F245E9AEF85041F5C49011F26F544123137BC3AEF8504198EEF174F26F5441FD081BEDADF8504117EF758AF36F5441D514145AADF85041A3C9CA48F46F5441EDB97835ADF8504166264166F46F54419A8C2198ABF85041D160EBABF56F5441F3D0A12AAAF85041C27D1060F66F54414941A4F3A7F85041B2F38477F76F544176169873A6F85041CAEDE834F86F54419A999949A5F85041F6285C3FF96F54413D0AD793AAF850411F85EB21FB6F544114AE47A1A8F85041D7A3703DFF6F54415C8FC2A5C4F850418FC2F538097054413D0AD793C5F85041F6285C3F097054414C7FF867C5F8504116041FB50770544183C9F434C5F8504124C1ABEA0570544145AB5A09C5F8504100EB154803705441B346ECF4C4F850419A9A3BA700705441AAC8C7BDC4F85041BDA781C5FD6F5441BD1186D3C3F85041FD77DC13F56F544198550E15C3F85041C6A707AAEF6F544149664F19C3F85041EBB90FCBED6F54418FCB4222C3F850410F189920EB6F544105B6896FC3F8504198A7E517E86F5441608BF4A8C3F85041C987BCEAE56F5441396ABEC4C3F8504187C25E62E56F544148E17A64C5F850419A999999DD6F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263055 - 1096924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE571C075141000000E086455441000000001E0751419A9999598F455441EC51B82E1F07514152B81EC594455441E17A14FE200751419A9999F99C4554413D0AD7632207514100000050A3455441B81E850B23075141666666F6AA455441AE47E14A23075141295C8FD2AD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417D5A6C002A0751413B9841B3AC455441D7FFC7C72E075141ACFC5CE7AB455441809326FE300751412E9C04FEAB4554415CD829DC35075141ACFC5CE7AB4554410474A1213707514172114230AC455441321975B33807514172114230AC455441E17A144E3C075141E17A141EAC45544114AE47A13E07514100000040AC455441FA86DB5B43075141B218ED98AC4554418CF2314148075141B08780C6AC455441F6E1681A4B07514139612382AC4554413DA23A704C07514139612382AC455441000000304C07514100000010AC45544152B81E7548075141A4703DDA9F45544114AE47E13F0751418FC2F56885455441EC51B88E3C075141666666567A455441E17A144E3B0751411F85EB417645544185EB51C8310751419A9999A976455441000000D0290751415C8FC22575455441EC51B8EE28075141CDCCCCFC744554418FC2F58820075141A4703DDA724554417B14AE77180751418FC2F5B874455441A4703D2A19075141EC51B8BE774554417B14AEF7190751415C8FC2357B45544152B81E751A07514148E17A547D45544114AE47911A075141D7A370CD7D4554410AD7A3301B075141D7A370FD804554417B14AE571C075141000000E086455441
+</a>
+
+<b>
+010600000001000000010300000001000000290000006F679D0B230751411C1CCEF7AA45544111A2610D230751411DC6E80BAB45544106513D2E23075141DF729A87AC4554418F62746023075141FCAA4A28AD45544182EE4D2024075141333B30ACAD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417C5A6C002A0751413B9841B3AC455441AC6F60712D0751419E91AB81AC455441568B9F5E3307514175584449AC4554417B14AEC7360751417B14AE37AC455441E17A144E3C075141E17A141EAC45544114AE47A13E07514100000040AC45544193422E9D410751412B451D78AC45544164D003CF43075141591B1D9DAC4554419C9726D147075141C9B76E74AC455441763BB3104A0751410CBC7A38AC4554415D5366904B0751418E8A7F20AC45544169F669294C0751419810B910AC4554413E1ED52F4C075141C4A0730FAC45544152B81E7548075141A4703DDA9F45544114AE47E13F0751418FC2F56885455441EC51B88E3C075141666666567A455441E17A144E3B0751411F85EB417645544185EB51C8310751419A9999A976455441000000D0290751415C8FC22575455441EC51B8EE28075141CDCCCCFC744554418FC2F58820075141A4703DDA724554417B14AE77180751418FC2F5B874455441A4703D2A19075141EC51B8BE774554417B14AEF7190751415C8FC2357B45544152B81E751A07514148E17A547D45544114AE47911A075141D7A370CD7D4554410AD7A3301B075141D7A370FD804554417B14AE571C075141000000E086455441000000001E0751419A9999598F455441EC51B82E1F07514152B81EC594455441E17A14FE200751419A9999F99C4554413D0AD7632207514100000050A3455441B81E850B23075141666666F6AA4554416F679D0B230751411C1CCEF7AA455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263055 - 3555793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE571C075141000000E086455441000000001E0751419A9999598F455441EC51B82E1F07514152B81EC594455441E17A14FE200751419A9999F99C4554413D0AD7632207514100000050A3455441B81E850B23075141666666F6AA455441AE47E14A23075141295C8FD2AD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417D5A6C002A0751413B9841B3AC455441D7FFC7C72E075141ACFC5CE7AB455441809326FE300751412E9C04FEAB4554415CD829DC35075141ACFC5CE7AB4554410474A1213707514172114230AC455441321975B33807514172114230AC455441E17A144E3C075141E17A141EAC45544114AE47A13E07514100000040AC455441FA86DB5B43075141B218ED98AC4554418CF2314148075141B08780C6AC455441F6E1681A4B07514139612382AC4554413DA23A704C07514139612382AC455441000000304C07514100000010AC45544152B81E7548075141A4703DDA9F45544114AE47E13F0751418FC2F56885455441EC51B88E3C075141666666567A455441E17A144E3B0751411F85EB417645544185EB51C8310751419A9999A976455441000000D0290751415C8FC22575455441EC51B8EE28075141CDCCCCFC744554418FC2F58820075141A4703DDA724554417B14AE77180751418FC2F5B874455441A4703D2A19075141EC51B8BE774554417B14AEF7190751415C8FC2357B45544152B81E751A07514148E17A547D45544114AE47911A075141D7A370CD7D4554410AD7A3301B075141D7A370FD804554417B14AE571C075141000000E086455441
+</a>
+
+<b>
+010600000001000000010300000001000000290000006F679D0B230751411C1CCEF7AA45544111A2610D230751411DC6E80BAB45544106513D2E23075141DF729A87AC4554418F62746023075141FCAA4A28AD45544182EE4D2024075141333B30ACAD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417C5A6C002A0751413B9841B3AC455441AC6F60712D0751419E91AB81AC455441568B9F5E3307514175584449AC4554417B14AEC7360751417B14AE37AC455441E17A144E3C075141E17A141EAC45544114AE47A13E07514100000040AC45544193422E9D410751412B451D78AC45544164D003CF43075141591B1D9DAC4554419C9726D147075141C9B76E74AC455441763BB3104A0751410CBC7A38AC4554415D5366904B0751418E8A7F20AC45544169F669294C0751419810B910AC4554413E1ED52F4C075141C4A0730FAC45544152B81E7548075141A4703DDA9F45544114AE47E13F0751418FC2F56885455441EC51B88E3C075141666666567A455441E17A144E3B0751411F85EB417645544185EB51C8310751419A9999A976455441000000D0290751415C8FC22575455441EC51B8EE28075141CDCCCCFC744554418FC2F58820075141A4703DDA724554417B14AE77180751418FC2F5B874455441A4703D2A19075141EC51B8BE774554417B14AEF7190751415C8FC2357B45544152B81E751A07514148E17A547D45544114AE47911A075141D7A370CD7D4554410AD7A3301B075141D7A370FD804554417B14AE571C075141000000E086455441000000001E0751419A9999598F455441EC51B82E1F07514152B81EC594455441E17A14FE200751419A9999F99C4554413D0AD7632207514100000050A3455441B81E850B23075141666666F6AA4554416F679D0B230751411C1CCEF7AA455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132442 - 1215066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001F000000FCE9BFA82E8551414541D77C1D8554419E9D8EE52F855141C867DCD6208554419CE65A573185514140B35E732585544116CA4B10358551412ACBE3C832855441261ED00535855141B73D00BA338554416666661640855141CDCCCCEC3085544152B81EB549855141000000602F85544185EB51D84F855141E17A145E2F855441A4703D9A5B855141333333033085544185EB51885D855141666666D61C855441666666B65D855141F6285C0F1B8554413D0AD7435E855141713D0A6712855441A4703D9A5F8551413D0AD7F30A855441A4703D7A6585514185EB5148F2845441B81E850B698551418FC2F508E98454417B14AE976B8551419A999929E5845441666666365D8551419A9999C9D48454413D0AD703508551411F85EBC1C5845441295C8F524A855141A4703D5AC8845441AE47E1FA3D855141295C8FA2CC845441AE47E10A36855141CDCCCCDCCE84544114AE471138855141F6285CDFCF845441E17A14AE398551415C8FC2D5D084544185EB51583B855141D7A3701DD2845441000000503D85514114AE47C1D38454410000006042855141AE47E1DAD88454417B14AE3745855141A4703DEADB8454418FC2F51848855141AE47E12ADF845441E17A145E4F8551415C8FC2C5EA845441E17A149E468551417B14AE271D855441FCE9BFA82E8551414541D77C1D855441
+</a>
+
+<b>
+01060000000100000001030000000100000079000000AE47E10A36855141CDCCCCDCCE845441E17A149E3485514133333343CF8454417B14AE0737855141666666D6D78454410AD7A33033855141C3F5283CD984544114AE47E13085514100000050D0845441AE47E1EA2A855141CDCCCCFCD184544114AE47D1238551415C8FC225D4845441D7A3702D258551417B14AEF7D88454410AD7A3F02485514148E17A74DA8454413333331324855141295C8FD2DB84544152B81E4523855141333333A3DC845441666666F621855141F6285CEFDD84544185EB51382185514166666646DF845441713D0A472085514152B81E15E184544148E17AF41F85514152B81E55E38454419A99993920855141EC51B8FEE48454419A9999C920855141EC51B8AEE6845441E17A149E21855141EC51B82EE8845441000000B0228551419A999929EA845441295C8FD21F8551411F85EB41EE84544185EB5198208551419A999929EF8454417B14AEE721855141E17A140EF084544148E17A6423855141F6285C2FF1845441295C8FC224855141EC51B87EF28454417B14AE372685514133333303F4845441AE47E17A28855141EC51B8DEF6845441713D0AA72A85514152B81E15FA845441CDCCCC4C2D8551419A999979FD84544152B81E65308551419A9999C9018554415C8FC23532855141A4703DDA04855441AE47E1AA33855141D7A370BD078554417B14AE87348551415C8FC2F508855441B81E857B35855141EC51B81E0A8554419A9999F93485514114AE47210B855441713D0A3735855141F6285C2F0D855441F6285C0F378551417B14AE7711855441D7A370ED3585514100000010128554417B14AE87348551419A99995911855441EC51B88E32855141E17A14DE0F85544114AE47A1318551417B14AE170E855441713D0A17318551410AD7A3C00B855441AE47E1BA30855141F6285C6F098554418FC2F5E830855141B81E852B07855441F6285CCF31855141E17A14AE05855441F6285C2F30855141666666A602855441A4703D1A2E85514166666696FF845441666666862C85514100000090FD845441C3F5283C2A855141EC51B88EFA845441C3F5285C2885514152B81E35F884544152B81E75268551411F85EBD1F7845441295C8F82238551413D0AD793F9845441C3F528CC22855141666666B6F88454419A9999F92285514152B81E95F7845441295C8FE22285514185EB5118F684544114AE476122855141F6285CEFF484544114AE472121855141713D0A57F484544185EB51581F855141A4703DBAF4845441713D0A971D855141F6285C0FF3845441CDCCCC4C1B855141AE47E12AF2845441295C8FF2188551418FC2F518F1845441333333A316855141A4703D1AF0845441C3F528DC1585514148E17A44EF845441CDCCCC1C168551415C8FC255EE845441A4703D8A14855141295C8FA2ED84544185EB51E814855141295C8F12EB8454418FC2F5081485514166666666E984544152B81E15138551411F85EBA1E98454418FC2F548128551417B14AE57E98454413D0AD7B3118551415C8FC295E88454413D0AD7B311855141713D0AA7E7845441B81E852B1285514152B81EE5E68454415C8FC29511855141EC51B85EE4845441295C8F32118551410AD7A3D0E4845441000000C010855141295C8F02E5845441B81E85DB0F85514148E17AE4E4845441C3F5283C0F855141F6285C4FE4845441F6285C0F0F85514114AE47A1E3845441295C8F320F85514114AE4711E38454419A9999A90F85514152B81E95E28454417B14AE5710855141F6285C4FE28454410000001011855141C3F5287CE2845441C3F5288C1185514148E17AE4E28454411F85EBD111855141E17A143EE38454413333330312855141713D0A07E18454413D0AD7931285514152B81EB5DF84544100000010138551410AD7A380DE845441C3F528FC128551419A999949DE8454419A999989128551419A999949DE845441AE47E19A118551411F85EB01DF845441D7A370BD0F8551413D0AD753E0845441B81E851B0E8551417B14AE47E1845441000000E00C855141A4703DEAE1845441D7A370FD0C85514100000020E28454413333335317855141A4703D7AF584544152B81E951B855141295C8F32FA8454413D0AD70327855141AE47E17A048554419A99998928855141000000D006855441E17A148E29855141E17A143E0B8554410AD7A360288551418FC2F56811855441F6285C4F29855141E17A144E158554413D0AD7D329855141F6285C5F1685544148E17A542C85514152B81E851D855441F6285C3F2E855141E17A149E22855441EC51B82E3385514114AE473134855441261ED00535855141B33D00BA338554410FB7A025358551417FBE4CD932855441A1E65A57318551413FB35E73258554412EFED7133085514144C91C3921855441F8D7AEB32E8551415C64B07C1D85544192544CB62E855141A418A77C1D855441F75DB4B42E855141D2C94A781D855441E17A149E468551417B14AE271D855441E17A145E4F8551415C8FC2C5EA8454418FC2F51848855141AE47E12ADF8454417B14AE3745855141A4703DEADB8454410000006042855141AE47E1DAD8845441000000503D85514114AE47C1D384544185EB51583B855141D7A3701DD2845441E17A14AE398551415C8FC2D5D084544114AE471138855141F6285CDFCF845441AE47E10A36855141CDCCCCDCCE845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132442 - 3978034
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001F000000FCE9BFA82E8551414541D77C1D8554419E9D8EE52F855141C867DCD6208554419CE65A573185514140B35E732585544116CA4B10358551412ACBE3C832855441261ED00535855141B73D00BA338554416666661640855141CDCCCCEC3085544152B81EB549855141000000602F85544185EB51D84F855141E17A145E2F855441A4703D9A5B855141333333033085544185EB51885D855141666666D61C855441666666B65D855141F6285C0F1B8554413D0AD7435E855141713D0A6712855441A4703D9A5F8551413D0AD7F30A855441A4703D7A6585514185EB5148F2845441B81E850B698551418FC2F508E98454417B14AE976B8551419A999929E5845441666666365D8551419A9999C9D48454413D0AD703508551411F85EBC1C5845441295C8F524A855141A4703D5AC8845441AE47E1FA3D855141295C8FA2CC845441AE47E10A36855141CDCCCCDCCE84544114AE471138855141F6285CDFCF845441E17A14AE398551415C8FC2D5D084544185EB51583B855141D7A3701DD2845441000000503D85514114AE47C1D38454410000006042855141AE47E1DAD88454417B14AE3745855141A4703DEADB8454418FC2F51848855141AE47E12ADF845441E17A145E4F8551415C8FC2C5EA845441E17A149E468551417B14AE271D855441FCE9BFA82E8551414541D77C1D855441
+</a>
+
+<b>
+010600000001000000010300000001000000770000003D0AD7D329855141F6285C5F1685544148E17A542C85514152B81E851D855441F6285C3F2E855141E17A149E22855441EC51B82E3385514114AE473134855441261ED00535855141B33D00BA338554410FB7A025358551417FBE4CD932855441A1E65A57318551413FB35E73258554412EFED7133085514144C91C3921855441F65DB4B42E855141D3C94A781D855441E17A149E468551417B14AE271D855441E17A145E4F8551415C8FC2C5EA8454418FC2F51848855141AE47E12ADF8454417B14AE3745855141A4703DEADB8454410000006042855141AE47E1DAD8845441000000503D85514114AE47C1D384544185EB51583B855141D7A3701DD2845441E17A14AE398551415C8FC2D5D084544114AE471138855141F6285CDFCF845441AE47E10A36855141CDCCCCDCCE845441E17A149E3485514133333343CF8454417B14AE0737855141666666D6D78454410AD7A33033855141C3F5283CD984544114AE47E13085514100000050D0845441AE47E1EA2A855141CDCCCCFCD184544114AE47D1238551415C8FC225D4845441D7A3702D258551417B14AEF7D88454410AD7A3F02485514148E17A74DA8454413333331324855141295C8FD2DB84544152B81E4523855141333333A3DC845441666666F621855141F6285CEFDD84544185EB51382185514166666646DF845441713D0A472085514152B81E15E184544148E17AF41F85514152B81E55E38454419A99993920855141EC51B8FEE48454419A9999C920855141EC51B8AEE6845441E17A149E21855141EC51B82EE8845441000000B0228551419A999929EA845441295C8FD21F8551411F85EB41EE84544185EB5198208551419A999929EF8454417B14AEE721855141E17A140EF084544148E17A6423855141F6285C2FF1845441295C8FC224855141EC51B87EF28454417B14AE372685514133333303F4845441AE47E17A28855141EC51B8DEF6845441713D0AA72A85514152B81E15FA845441CDCCCC4C2D8551419A999979FD84544152B81E65308551419A9999C9018554415C8FC23532855141A4703DDA04855441AE47E1AA33855141D7A370BD078554417B14AE87348551415C8FC2F508855441B81E857B35855141EC51B81E0A8554419A9999F93485514114AE47210B855441713D0A3735855141F6285C2F0D855441F6285C0F378551417B14AE7711855441D7A370ED3585514100000010128554417B14AE87348551419A99995911855441EC51B88E32855141E17A14DE0F85544114AE47A1318551417B14AE170E855441713D0A17318551410AD7A3C00B855441AE47E1BA30855141F6285C6F098554418FC2F5E830855141B81E852B07855441F6285CCF31855141E17A14AE05855441F6285C2F30855141666666A602855441A4703D1A2E85514166666696FF845441666666862C85514100000090FD845441C3F5283C2A855141EC51B88EFA845441C3F5285C2885514152B81E35F884544152B81E75268551411F85EBD1F7845441295C8F82238551413D0AD793F9845441C3F528CC22855141666666B6F88454419A9999F92285514152B81E95F7845441295C8FE22285514185EB5118F684544114AE476122855141F6285CEFF484544114AE472121855141713D0A57F484544185EB51581F855141A4703DBAF4845441713D0A971D855141F6285C0FF3845441CDCCCC4C1B855141AE47E12AF2845441295C8FF2188551418FC2F518F1845441333333A316855141A4703D1AF0845441C3F528DC1585514148E17A44EF845441CDCCCC1C168551415C8FC255EE845441A4703D8A14855141295C8FA2ED84544185EB51E814855141295C8F12EB8454418FC2F5081485514166666666E984544152B81E15138551411F85EBA1E98454418FC2F548128551417B14AE57E98454413D0AD7B3118551415C8FC295E88454413D0AD7B311855141713D0AA7E7845441B81E852B1285514152B81EE5E68454415C8FC29511855141EC51B85EE4845441295C8F32118551410AD7A3D0E4845441000000C010855141295C8F02E5845441B81E85DB0F85514148E17AE4E4845441C3F5283C0F855141F6285C4FE4845441F6285C0F0F85514114AE47A1E3845441295C8F320F85514114AE4711E38454419A9999A90F85514152B81E95E28454417B14AE5710855141F6285C4FE28454410000001011855141C3F5287CE2845441C3F5288C1185514148E17AE4E28454411F85EBD111855141E17A143EE38454413333330312855141713D0A07E18454413D0AD7931285514152B81EB5DF84544100000010138551410AD7A380DE845441C3F528FC128551419A999949DE8454419A999989128551419A999949DE845441AE47E19A118551411F85EB01DF845441D7A370BD0F8551413D0AD753E0845441B81E851B0E8551417B14AE47E1845441000000E00C855141A4703DEAE1845441D7A370FD0C85514100000020E28454413333335317855141A4703D7AF584544152B81E951B855141295C8F32FA8454413D0AD70327855141AE47E17A048554419A99998928855141000000D006855441E17A148E29855141E17A143E0B8554410AD7A360288551418FC2F56811855441F6285C4F29855141E17A144E158554413D0AD7D329855141F6285C5F16855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132442 - 399756
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001F000000FCE9BFA82E8551414541D77C1D8554419E9D8EE52F855141C867DCD6208554419CE65A573185514140B35E732585544116CA4B10358551412ACBE3C832855441261ED00535855141B73D00BA338554416666661640855141CDCCCCEC3085544152B81EB549855141000000602F85544185EB51D84F855141E17A145E2F855441A4703D9A5B855141333333033085544185EB51885D855141666666D61C855441666666B65D855141F6285C0F1B8554413D0AD7435E855141713D0A6712855441A4703D9A5F8551413D0AD7F30A855441A4703D7A6585514185EB5148F2845441B81E850B698551418FC2F508E98454417B14AE976B8551419A999929E5845441666666365D8551419A9999C9D48454413D0AD703508551411F85EBC1C5845441295C8F524A855141A4703D5AC8845441AE47E1FA3D855141295C8FA2CC845441AE47E10A36855141CDCCCCDCCE84544114AE471138855141F6285CDFCF845441E17A14AE398551415C8FC2D5D084544185EB51583B855141D7A3701DD2845441000000503D85514114AE47C1D38454410000006042855141AE47E1DAD88454417B14AE3745855141A4703DEADB8454418FC2F51848855141AE47E12ADF845441E17A145E4F8551415C8FC2C5EA845441E17A149E468551417B14AE271D855441FCE9BFA82E8551414541D77C1D855441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000A04077A6298551414B17C301168554413D0AD7D329855141F6285C5F1685544148E17A542C85514152B81E851D855441F6285C3F2E855141E17A149E22855441EC51B82E3385514114AE473134855441261ED00535855141B33D00BA338554410FB7A025358551417FBE4CD932855441A1E65A57318551413FB35E732585544143F8D8C1308551411B891896238554412EFED7133085514144C91C3921855441F8D7AEB32E8551415C64B07C1D85544192544CB62E855141A418A77C1D855441F75DB4B42E855141D2C94A781D85544182F1C22A2D85514105D5D0C51885544125FB0E3F2C855141E9E2654516855441A04077A6298551414B17C30116855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254956 - 965992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000C70000001F85EBF15DA0504100000070643254419A9999B960A050415C8FC275633254417B14AE8762A050418FC2F528633254411F85EBE163A050415C8FC27563325441B81E856B64A05041C3F5280C64325441B81E85DB64A050419A9999A9643254418FC2F58865A0504114AE47B16632544114AE47C165A050419A9999196932544152B81E1566A05041666666266D325441C3F528CC67A05041D7A3708D6D325441CDCCCC3C68A05041C3F5282C6E3254417B14AEF768A05041000000506E3254413D0AD7A368A05041A4703D9A6F3254413D0AD76368A050410AD7A33072325441C3F5280C67A05041F6285C1F72325441D7A370AD66A050417B14AE1775325441713D0A3766A05041B81E85BB77325441EC51B8BE67A050410AD7A3007732544152B81E0569A05041A4703D7A7632544114AE47616AA05041CDCCCCBC75325441AE47E16A6BA050418FC2F5F8743254410AD7A3A06CA050415C8FC2F5733254419A9999C96DA050419A9999B972325441D7A3708D6EA05041000000707132544114AE47E170A050411F85EB016E32544148E17AF473A05041333333636932544185EB517876A050419A9999F969325441C3F5282C77A05041CDCCCCAC6B3254411F85EB5178A05041CDCCCC0C6B325441E17A14AE7CA050418FC2F578693254415C8FC22586A05041AE47E18A66325441713D0A8797A050411F85EB6161325441F6285C9F9FA05041CDCCCC6C5E32544114AE47B1A9A05041295C8F525C32544100000040BBA050411F85EB4158325441A4703DEABDA050413D0AD7A357325441A4703DCACAA0504185EB5148533254413D0AD7E3D3A05041C3F5285C50325441D7A3704DD3A050416666664648325441D7A370EDD2A05041AE47E19A403254415C8FC225D3A05041C3F5285C3C325441D7A3703DD3A0504185EB51983A32544185EB5108D2A050418FC2F5A83932544152B81EF5CFA05041CDCCCC8C3832544100000030CEA05041B81E851B38325441B81E85ABCCA05041A4703D9A373254417B14AE37CBA050418FC2F538373254413D0AD7E3C9A050418FC2F5283732544100000070C8A050417B14AED7363254413D0AD723C4A05041E17A141E3932544114AE4711C3A05041EC51B85E39325441EC51B81EC2A05041EC51B83E39325441AE47E1EAC0A05041E17A14FE383254418FC2F518C0A05041C3F5286C3832544166666636BFA05041B81E852B383254411F85EBA1BDA05041B81E853B38325441C3F5287CBBA05041CDCCCCAC383254413D0AD773B8A05041D7A370DD38325441E17A147EB6A05041D7A370BD38325441A4703D1AB5A05041C3F5285C383254417B14AE07B4A05041B81E850B3832544133333383B2A05041A4703D9A3732544148E17A74B1A050411F85EBA13632544114AE4771ADA050413D0AD77336325441A4703DBAAAA0504152B81E7537325441D7A3705DA8A05041CDCCCCDC37325441713D0A57A6A050418FC2F5183832544166666696A4A05041E17A145E383254410AD7A300A3A050411F85EB9138325441AE47E16AA1A05041EC51B8CE38325441EC51B8EE9FA05041C3F528AC38325441A4703DDA9EA05041F6285C6F3832544185EB51E89DA05041666666F637325441A4703DBA9CA0504114AE474137325441666666269CA050413D0AD79336325441295C8F629AA050419A999949363254417B14AE3799A0504152B81E553632544152B81E1598A05041D7A3701D363254416666666696A050410AD7A3E035325441AE47E1EA94A050410000008035325441AE47E12A94A0504185EB51D83532544152B81ED593A0504185EB51D8353254415C8FC26593A0504114AE47E1353254410AD7A3A092A050419A9999E9353254411F85EB4192A050419A9999E9353254416666669691A050419A9999E935325441A4703DDA90A0504114AE47E135325441EC51B82E90A0504133333303363254417B14AEC78FA05041713D0A3736325441AE47E10A8FA05041B81E857B36325441C3F5282C8EA0504185EB51C836325441713D0A678DA05041E17A141E373254418FC2F5988CA050411F85EB5137325441A4703DBA8BA05041D7A3708D373254413D0AD7E38AA05041000000B03732544185EB51B889A050413D0AD7F337325441A4703D3A89A05041E17A14BE37325441C3F5289C88A05041713D0AC7373254419A99991988A0504148E17AB43732544185EB51D887A05041C3F528EC373254410AD7A33087A05041C3F528EC37325441666666E686A050419A9999D937325441C3F5289C86A050411F85EBA13732544185EB514886A05041713D0AC7373254415C8FC2C585A050415C8FC2F537325441E17A141E85A05041AE47E11A383254410000008084A05041713D0A373832544185EB51E883A05041E17A143E3832544185EB512883A0504114AE475138325441AE47E1EA81A0504185EB517838325441B81E850B81A050410000008038325441E17A14AE80A05041295C8F52383254413333336380A050410000004038325441F6285C0F80A05041295C8F5238325441295C8FB27FA050413D0AD7933832544152B81E557FA05041666666A638325441AE47E10A7FA05041C3F528CC38325441D7A370AD7EA05041EC51B8DE38325441CDCCCC6C7EA05041D7A3700D39325441F6285C0F7EA05041666666163932544152B81EC57DA05041EC51B8DE3832544152B81E557DA05041EC51B8DE38325441F6285CDF7CA050419A9999F93832544114AE47517CA05041D7A3706D39325441E17A147E7BA05041A4703D2A39325441F6285CDF7AA050418FC2F568393254418FC2F5D878A05041295C8FC23932544114AE473177A05041C3F5280C3A325441EC51B87E73A050415C8FC2A53A3254411F85EB1172A05041E17A14EE3A325441295C8FE270A050415C8FC2353B3254417B14AE2770A050415C8FC2053B325441A4703DAA6FA050415C8FC2653B325441A4703D5A6EA050415C8FC2653B325441000000606DA050415C8FC2653B325441AE47E16A6CA05041666666963B32544152B81E856BA05041EC51B8EE3B325441F6285C1F6BA05041AE47E12A3C325441AE47E15A6AA0504148E17A643C325441D7A3704D69A05041000000903C32544148E17AF466A05041666666463D3254415C8FC2E563A050410AD7A3703E3254413333332361A050410AD7A3003F325441AE47E1BA5BA05041000000D04332544185EB511859A050411F85EBA146325441EC51B89E58A05041E17A144E4732544185EB51D856A05041295C8F8247325441000000B04FA050419A9999B9473254419A9999694BA05041713D0A474832544185EB51E848A050417B14AEE74732544185EB51E846A0504148E17A644732544114AE478145A05041AE47E18A46325441A4703D3A44A05041CDCCCCDC433254418FC2F5E842A05041B81E858B423254418FC2F5D841A05041CDCCCCDC413254410AD7A35040A0504185EB51F840325441F6285CFF3CA05041F6285C2F3F3254411F85EB713CA05041EC51B81E403254418FC2F5D83BA05041C3F528BC41325441713D0A773BA050417B14AED742325441D7A3709D3AA05041EC51B83E44325441713D0A4738A05041713D0A774532544148E17A3435A0504166666656473254418FC2F5E832A05041A4703D1A4932544185EB51B830A0504148E17A144B32544152B81E752BA050413D0AD7F34F325441A4703D8A27A050419A99993954325441C3F5285C1FA05041AE47E17A5E3254411F85EBD115A05041D7A3703D6C3254410AD7A38014A05041EC51B8FE6E3254419A99992914A050417B14AEB76F325441333333F313A050411F85EBB170325441713D0AF713A050410000002071325441713D0A1714A05041B81E85BB71325441F6285C4F14A0504133333333723254411F85EBC114A050416666668672325441F6285C4F15A05041CDCCCCBC723254410000006016A05041CDCCCCBC723254413333331318A05041C3F5289C72325441295C8FB222A0504148E17A8471325441CDCCCCEC2AA050418FC2F5C870325441333333D335A0504185EB517871325441666666A639A050415C8FC2D5713254410AD7A3D03AA05041713D0AA771325441295C8F923DA05041E17A14BE71325441EC51B8CE40A0504152B81E0572325441A4703D3A44A05041F6285C6F723254416666667647A05041E17A14CE72325441CDCCCC1C4BA050410000005073325441EC51B8DE4CA05041713D0A977332544148E17A244FA050413D0AD7936B3254411F85EB5151A050419A999949643254416666664653A05041C3F5283C63325441EC51B87E54A050413D0AD7F3623254413D0AD75357A0504114AE4721633254419A99993959A05041E17A144E633254413D0AD7135BA05041713D0A876332544148E17A245CA05041F6285CAF633254411F85EBF15DA050410000007064325441
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000EC51B80E80A0504100000010133254414DB4A28D80A050415862B6C313325441EC51B8FE80A050413D0AD763143254413D0AD74381A05041713D0A571532544114AE471181A05041D7A370ED17325441A3673ADF80A05041BFE518B1183254418F84B18781A050412B696ADA18325441E393350F7FA05041768B8F401C325441D7A370ED7DA05041666666561E32544148E17A047DA050417B14AE771F325441C3F528EC7BA0504185EB5128213254411F85EB617AA0504152B81E65233254414F2C709279A05041A55F4184243254416666662677A0504114AE471128325441711E0A8D77A0504145AAD4372D325441EC51B8FE77A050417B14AEF7303254418FC2F5D878A05041295C8FC2393254416BAB180E7BA0504154D97D5639325441E94BB8277CA05041E71C3FD93832544152B81EC57DA05041EC51B8DE38325441582AD33D7FA0504156963FB23832544152B81E557FA05041666666A638325441DCD223637FA05041EF7E9DA338325441FBB9EEE37FA0504142E61B7138325441F6285C0F80A05041295C8F52383254418636855E80A0504107340941383254413333336380A050410000004038325441940BC37680A05041C342D94438325441E54311C681A0504174F4957938325441315ABB4682A050418011066D3832544185EB512883A0504114AE47513832544185EB51E883A05041E17A143E38325441BB51D56084A05041FB8E7C3838325441C3F5289C86A050411F85EBA1373254419A99991988A0504148E17AB437325441FEDC96488BA050411783C29F37325441837421248EA05041B732D0CB36325441C3F5282C8EA0504185EB51C83632544162A9AE368EA05041AF0EB1C436325441EC51B82E90A050413333330336325441A4703DDA90A0504114AE47E1353254416666669691A050419A9999E9353254411F85EB4192A050419A9999E935325441FE7B169692A050419A9999E93532544164BFFA6D93A05041A6609EE035325441AE47E1EA94A0504100000080353254417B14AE3799A0504152B81E5536325441AA6898989AA05041A122D8733532544182D681EA9AA05041B738D02F34325441BF23463F9BA05041E1157DE032325441E939B6E39BA0504182AC504431325441445097D69EA050416AB836FB2C32544163307568A1A050419EF11A3F29325441DB4B8F9D9CA050417B2535C72532544195C9747B95A050413B46AB9D20325441BB62FD0888A05041F43A61E216325441713D0A9779A050410AD7A3400C325441A4703D9A78A0504152B81E550B3254413333334378A05041713D0A170A325441B81E852B76A050411F85EB310B325441EC51B80E80A050410000001013325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294747 - 2877325
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000009A999929B3C750418FC2F5987B3E5541B81E85DBCAC75041F6285CCF763E55417B14AED7CBC75041295C8F92763E5541A4703D3AD6C7504152B81EE5733E5541000000D0E8C7504152B81E45703E5541F6285CEF01C850415C8FC2056A3E5541AE47E11AFAC7504100000060583E5541035374A8F5C750416EE2081C503E5541F6285C9F87C750411F85EBE17A3E5541295C8FE28CC75041333333D3833E55419A999929B3C750418FC2F5987B3E5541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528FCD3C7504152B81ED5313E5541713D0A27D1C75041CDCCCC9C2E3E5541713D0AE7CEC750419A9999392B3E5541F6285CCFCEC75041666666162B3E554100000060C7C75041F6285CEF1D3E554133333353C0C75041F6285C9F113E5541AE47E17ABFC7504148E17AE4103E554152B81E55BEC75041EC51B8AE103E55419A9999D9B9C750419A999989123E5541C3F5289C95C7504152B81E15223E5541713D0A8770C750419A9999F9313E5541000000606AC750410AD7A3A0343E55412BFCDC876AC75041CCD2A68A353E554173B9BC8D6BC750415CA6C0EF363E5541295C8FE275C75041B81E85CB473E5541A4703D1A7AC75041713D0A974F3E55416156FC327EC750415C013470573E5541295C8FA27EC75041EC51B86E5B3E5541D7A3709D7FC75041AE47E19A653E554148E17AA480C75041713D0A076A3E5541E17A144E83C75041C3F5287C753E55410AD7A31087C75041D7A3701D7B3E5541F6285C9F87C750411F85EBE17A3E5541FCF7617B88C75041D28F648C7A3E5541D78DE6D88DC75041D6AB7A76783E5541CA81F58393C75041A38C6C42763E5541C20A63D799C750417C99EBCC733E5541CFC254A9A1C750412094B9C2703E55415527FBD4ACC75041BA4E1F6B6C3E5541169D2BA0BAC7504195A17A0E673E5541B18A5F50CBC75041890BF38F603E55418FC2F5B8F5C750419A9999F94F3E55418FC2F588F5C75041D7A3709D4F3E5541713D0A77F4C75041EC51B8DE4D3E554152B81E35EEC75041295C8FA2473E55411F85EBD1E7C75041F6285C5F423E5541713D0A27E4C7504114AE47613F3E5541713D0AB7D7C75041AE47E13A353E5541AE47E1FAD6C7504114AE47A1343E5541C3F528FCD3C7504152B81ED5313E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294747 - 5268669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000009A999929B3C750418FC2F5987B3E5541B81E85DBCAC75041F6285CCF763E55417B14AED7CBC75041295C8F92763E5541A4703D3AD6C7504152B81EE5733E5541000000D0E8C7504152B81E45703E5541F6285CEF01C850415C8FC2056A3E5541AE47E11AFAC7504100000060583E5541035374A8F5C750416EE2081C503E5541F6285C9F87C750411F85EBE17A3E5541295C8FE28CC75041333333D3833E55419A999929B3C750418FC2F5987B3E5541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528FCD3C7504152B81ED5313E5541713D0A27D1C75041CDCCCC9C2E3E5541713D0AE7CEC750419A9999392B3E5541F6285CCFCEC75041666666162B3E554100000060C7C75041F6285CEF1D3E554133333353C0C75041F6285C9F113E5541AE47E17ABFC7504148E17AE4103E554152B81E55BEC75041EC51B8AE103E55419A9999D9B9C750419A999989123E5541C3F5289C95C7504152B81E15223E5541713D0A8770C750419A9999F9313E5541000000606AC750410AD7A3A0343E55412BFCDC876AC75041CCD2A68A353E554173B9BC8D6BC750415CA6C0EF363E5541295C8FE275C75041B81E85CB473E5541A4703D1A7AC75041713D0A974F3E55416156FC327EC750415C013470573E5541295C8FA27EC75041EC51B86E5B3E5541D7A3709D7FC75041AE47E19A653E554148E17AA480C75041713D0A076A3E5541E17A144E83C75041C3F5287C753E55410AD7A31087C75041D7A3701D7B3E5541F6285C9F87C750411F85EBE17A3E5541FCF7617B88C75041D28F648C7A3E5541D78DE6D88DC75041D6AB7A76783E5541CA81F58393C75041A38C6C42763E5541C20A63D799C750417C99EBCC733E5541CFC254A9A1C750412094B9C2703E55415527FBD4ACC75041BA4E1F6B6C3E5541169D2BA0BAC7504195A17A0E673E5541B18A5F50CBC75041890BF38F603E55418FC2F5B8F5C750419A9999F94F3E55418FC2F588F5C75041D7A3709D4F3E5541713D0A77F4C75041EC51B8DE4D3E554152B81E35EEC75041295C8FA2473E55411F85EBD1E7C75041F6285C5F423E5541713D0A27E4C7504114AE47613F3E5541713D0AB7D7C75041AE47E13A353E5541AE47E1FAD6C7504114AE47A1343E5541C3F528FCD3C7504152B81ED5313E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>23777 - 98870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4781465951410AD7A320777E544166666686455951417B14AE87727E544185EB5158445951418FC2F5C8717E54411F85EB513E595141B81E853B737E544185EB51183E59514114AE4721727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441B81E85DBF1585141CDCCCC0C787E5441713D0A67EE585141A4703D3A787E54419A999989EF585141D7A3709D7D7E54413D0AD7F3195951415C8FC2657B7E544114AE4781465951410AD7A320777E5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000F4B9834D4559514181D9C363727E5441E47572A84459514161798CFB717E5441D4CB98A241595141E752A06F727E54411F85EB513E595141B81E853B737E5441BD40812D3E595141E1021689727E5441DB905AC63D5951410EDCE05C727E5441F956F9833A5951416B0661CD727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441B81E85DBF1585141CDCCCC0C787E5441713D0A67EE585141A4703D3A787E5441195CCE83EF5851412326F0817D7E54410B60ABA1EF585141F97E2E9C7D7E54418F46300F04595141ABE4C68A7C7E544161A73B8A18595141A049AA787B7E54416880E4792B59514138CDCEB7797E544114AE4781465951410AD7A320777E5441C32A3F8945595141D4F60895727E5441086270854559514179C11287727E5441F4B9834D4559514181D9C363727E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>23777 - 300582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4781465951410AD7A320777E544166666686455951417B14AE87727E544185EB5158445951418FC2F5C8717E54411F85EB513E595141B81E853B737E544185EB51183E59514114AE4721727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441B81E85DBF1585141CDCCCC0C787E5441713D0A67EE585141A4703D3A787E54419A999989EF585141D7A3709D7D7E54413D0AD7F3195951415C8FC2657B7E544114AE4781465951410AD7A320777E5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000F4B9834D4559514181D9C363727E5441E47572A84459514161798CFB717E5441D4CB98A241595141E752A06F727E54411F85EB513E595141B81E853B737E5441BD40812D3E595141E1021689727E5441DB905AC63D5951410EDCE05C727E5441F956F9833A5951416B0661CD727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441B81E85DBF1585141CDCCCC0C787E5441713D0A67EE585141A4703D3A787E5441195CCE83EF5851412326F0817D7E54410B60ABA1EF585141F97E2E9C7D7E54418F46300F04595141ABE4C68A7C7E544161A73B8A18595141A049AA787B7E54416880E4792B59514138CDCEB7797E544114AE4781465951410AD7A320777E5441C32A3F8945595141D4F60895727E5441086270854559514179C11287727E5441F4B9834D4559514181D9C363727E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2626704 - 3165582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002A0000008FC2F5B8FED15041AE47E16AA62A54416666665600D25041CDCCCCDCA62A54419A99994902D250418FC2F578A62A544148E17A9406D250411F85EB11A42A544185EB51B80AD25041295C8F429E2A5441EC51B8BE11D2504148E17A84922A54410AD7A32016D25041CDCCCC5C8D2A54418FC2F5F819D25041D7A3706D8B2A5441EC51B83E22D25041C3F528AC872A54417B14AE3722D25041D7A3707D862A5441295C8F321ED250415C8FC245862A5441F6285CAF1BD25041CDCCCCFC842A5441CDCCCC5C16D25041D7A3700D7B2A5441D7A3701D0AD25041CDCCCC1C7D2A54418FC2F5F800D25041EC51B88E7D2A5441295C8FC2FAD150411F85EB417D2A5441295C8F02F0D15041295C8FD27C2A5441AE47E15AE0D1504148E17AE4772A5441AE47E16AD9D150417B14AEF7752A54417B14AE67D7D150411F85EBE17B2A5441F6285C9FD6D15041AE47E15A7D2A544152B81E35D8D150411F85EB118C2A54417B14AE77D9D1504148E17A848F2A5441EC51B88ED9D15041C3F5285C922A54418FC2F548DAD15041666666E6972A544100000090D8D15041EC51B8FEA32A54417B14AE07D9D1504148E17AC4A82A54419A9999F9D8D1504114AE47F1AC2A54410AD7A3C0D8D1504114AE47F1B02A54418FC2F5C8D8D15041295C8F32B82A5441713D0A77DFD1504148E17A84B52A5441A4703DAAE1D150411F85EB31B62A5441000000D0E4D15041E17A142EB42A5441A4703D3AE8D15041AE47E1DAB02A5441333333D3ECD150413D0AD7E3AE2A544166666676F1D1504114AE4741AA2A5441AE47E12AF4D150419A999949A72A5441D7A370CDF7D150417B14AED7A52A54413D0AD7F3F8D150413D0AD7C3A32A54417B14AED7FAD15041B81E855BA32A5441EC51B8FEFCD1504185EB5178A52A54418FC2F5B8FED15041AE47E16AA62A5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000008FC2F5B8FED15041AE47E16AA62A54416666665600D25041CDCCCCDCA62A54419A99994902D250418FC2F578A62A544148E17A9406D250411F85EB11A42A544185EB51B80AD25041295C8F429E2A5441EC51B8BE11D2504148E17A84922A54410AD7A32016D25041CDCCCC5C8D2A54418FC2F5F819D25041D7A3706D8B2A5441EC51B83E22D25041C3F528AC872A54417B14AE3722D25041D7A3707D862A5441295C8F321ED250415C8FC245862A5441F6285CAF1BD25041CDCCCCFC842A5441CDCCCC5C16D25041D7A3700D7B2A5441D7A3701D0AD25041CDCCCC1C7D2A54418FC2F5F800D25041EC51B88E7D2A5441295C8FC2FAD150411F85EB417D2A5441295C8F02F0D15041295C8FD27C2A5441000000F0E4D150415C8FC2C57A2A5441AE47E16AD9D150417B14AEF7752A54419B1A2F8FD8D15041839AD0387B2A54418F8945A4D6D150413729A3517D2A5441AEAAA811D8D15041DAACB3C88A2A54416EA20959D9D15041029BA3308F2A54413C7C36A3D9D15041BD2337F8922A54418FC2F548DAD15041666666E6972A5441BDAF2C49D9D15041787B77EA9E2A544144AA95EAD8D1504136CFA782A12A54419A08E282D8D15041F3B1A7C7A32A54417B14AE07D9D1504148E17AC4A82A54419A9999F9D8D1504114AE47F1AC2A54410AD7A3C0D8D1504114AE47F1B02A54418FC2F5C8D8D15041295C8F32B82A5441713D0A77DFD1504148E17A84B52A54415B6BF374E1D15041E0E6817BB52A544143679DDEE4D15041F4D7DAADB22A54412B2C7B67E8D150410CA56463AF2A54410DA78FABECD1504115CB5E2BAE2A5441E9D7DAAAF1D150413863474BA92A5441D31D4E59F4D150414D8B6C5EA62A5441BEF52846F7D150415AC4638AA42A5441B4F3FDFAF8D150416558F613A32A5441ABA260FEFAD15041DB947F81A32A54415586C151FDD15041DD14DDA5A52A54418FC2F5B8FED15041AE47E16AA62A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905028 - 991912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000000000104E33514152B81E05D53C5441A4703D6A51335141AE47E18AD93C5441F48DF30152335141D70B188AD93C54415C8FC2754E335141AE47E1BAD43C544114AE47D148335141CDCCCCFCCD3C544185EB51D842335141B81E85CBC73C5441D7A3709D3C335141EC51B8EEC13C5441F6285CBF33335141F6285C4FBA3C54417B14AEB72F33514133333303B73C54411F85EB612C33514114AE47A1B43C54415C8FC2852F3351418FC2F548B73C54413D0AD77333335141295C8FA2BA3C544152B81E553C3351413D0AD733C23C5441713D0A9742335141A4703D1AC83C5441EC51B86E4833514148E17A54CE3C5441000000104E33514152B81E05D53C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004F0000000262764F423351418473C0D6C73C5441FDB92BF74033514191482192C63C544122076C773F33514115294E28C53C5441D43813EC3D335141448F8BB3C33C54415BD593E23C335141FB3E37B9C23C544187AD4A533C335141262D4832C23C54410B038BE93B335141F8CF29D8C13C54416FF489C73A33514171E205E1C03C544178A7FD453A335141E8669F72C03C544153CD22023A3351413F08CC38C03C5441442CA52939335141CEF14D80BF3C54417BB2141B38335141050ABB99BE3C54414E2D7093373351411CC55325BE3C544178EA6B2437335141015087C7BD3C5441FAFA8DBA36335141E248866DBD3C54411D56B3633633514125E14A23BD3C5441F8CDB31E36335141DA167EE8BC3C544137879FE135335141FDEA70B4BC3C544120B2426E353351416B282152BC3C5441708D1E2935335141E32A3517BC3C5441F17A61DF34335141FD335ED8BB3C5441ED852769343351415AAD9D73BB3C544156DB36133433514168CC602ABB3C54417ED356BF33335141C76BE6E2BA3C54414A38E79033335141E4D953BBBA3C5441EE0F282D333351414BE34E66BA3C54418D4269A232335141D60B0AF0B93C54415B091742323351412FF3EE9DB93C5441C9421AB131335141D7F75722B93C5441C8FF2C4E31335141DE4604CEB83C544185DC072A31335141FBBD34AFB83C54412C6B7AEA30335141D554167BB83C5441DFDBB794303351414C922032B83C544140CD651A30335141FF4BA9C7B73C5441954CF5BE2F335141EA54167BB73C5441A14CF55E2F335141D5CF2A29B73C5441D03DD71B2F335141288CFBEEB63C544142F27AE32E33514118D81ABFB63C5441F99E948A2E33514169DB9573B63C5441713FEB512E33514137AD7343B63C54412FAEB7FD2D335141DB6BECFBB53C5441477C4CE82C33514185454210B53C54410AC5B8592C335141AF192497B43C5441D7A3708D2A335141F6285CEFB33C5441713D0AD7273351411F85EB01B43C5441D7A370AD2533514114AE47A1B43C5441000000A02333514100000080B63C5441333333832033514114AE4791BA3C544152B81E051E33514114AE47B1BC3C54419A99996918335141713D0A37C33C54417B14AEA71633514148E17A44C53C54413333330311335141295C8FF2CA3C5441F6285C2F0B335141A4703D0AD03C54410AD7A3E001335141E17A145ED73C544148E17A04FF325141000000D0D93C54418FC2F5D800335141666666D6D93C5441295C8F22303351418FC2F578DA3C544114AE477152335141E17A14EEDA3C54411F1E6D6751335141EB911587D93C5441E129772A51335141213ED934D93C5441242C54425033514164A1B2FBD73C54410261E0A94F33514123660A2ED73C5441451A4EF44E335141C31E1A39D63C5441FB8DE7B74E335141273F9FE7D53C5441ACCE3D1E4E335141BDE35418D53C5441953A32DB4D335141BDDC5FC6D43C54410B47909B4C3351418CF58F4AD33C5441770634004B3351417093C061D13C5441F99A9C2A49335141D458BF33CF3C5441FA08609C48335141BE1FBB8ACE3C5441B5127073483351417A06165ACE3C5441C2BF3E5B4833514112C7B83FCE3C5441F4BFF0314833514149FDB113CE3C5441FB84F4F54733514187D6C1D3CD3C54410180BF5045335141F3ADEC01CB3C54418E71F4B2433351418524DD48C93C54412256170443335141892C7A8EC83C5441706BA8B3423351418F63BE38C83C54410262764F423351418473C0D6C73C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905028 - 3586923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000000000104E33514152B81E05D53C5441A4703D6A51335141AE47E18AD93C5441F48DF30152335141D70B188AD93C54415C8FC2754E335141AE47E1BAD43C544114AE47D148335141CDCCCCFCCD3C544185EB51D842335141B81E85CBC73C5441D7A3709D3C335141EC51B8EEC13C5441F6285CBF33335141F6285C4FBA3C54417B14AEB72F33514133333303B73C54411F85EB612C33514114AE47A1B43C54415C8FC2852F3351418FC2F548B73C54413D0AD77333335141295C8FA2BA3C544152B81E553C3351413D0AD733C23C5441713D0A9742335141A4703D1AC83C5441EC51B86E4833514148E17A54CE3C5441000000104E33514152B81E05D53C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004F0000000262764F423351418473C0D6C73C5441FDB92BF74033514191482192C63C544122076C773F33514115294E28C53C5441D43813EC3D335141448F8BB3C33C54415BD593E23C335141FB3E37B9C23C544187AD4A533C335141262D4832C23C54410B038BE93B335141F8CF29D8C13C54416FF489C73A33514171E205E1C03C544178A7FD453A335141E8669F72C03C544153CD22023A3351413F08CC38C03C5441442CA52939335141CEF14D80BF3C54417BB2141B38335141050ABB99BE3C54414E2D7093373351411CC55325BE3C544178EA6B2437335141015087C7BD3C5441FAFA8DBA36335141E248866DBD3C54411D56B3633633514125E14A23BD3C5441F8CDB31E36335141DA167EE8BC3C544137879FE135335141FDEA70B4BC3C544120B2426E353351416B282152BC3C5441708D1E2935335141E32A3517BC3C5441F17A61DF34335141FD335ED8BB3C5441ED852769343351415AAD9D73BB3C544156DB36133433514168CC602ABB3C54417ED356BF33335141C76BE6E2BA3C54414A38E79033335141E4D953BBBA3C5441EE0F282D333351414BE34E66BA3C54418D4269A232335141D60B0AF0B93C54415B091742323351412FF3EE9DB93C5441C9421AB131335141D7F75722B93C5441C8FF2C4E31335141DE4604CEB83C544185DC072A31335141FBBD34AFB83C54412C6B7AEA30335141D554167BB83C5441DFDBB794303351414C922032B83C544140CD651A30335141FF4BA9C7B73C5441954CF5BE2F335141EA54167BB73C5441A14CF55E2F335141D5CF2A29B73C5441D03DD71B2F335141288CFBEEB63C544142F27AE32E33514118D81ABFB63C5441F99E948A2E33514169DB9573B63C5441713FEB512E33514137AD7343B63C54412FAEB7FD2D335141DB6BECFBB53C5441477C4CE82C33514185454210B53C54410AC5B8592C335141AF192497B43C5441D7A3708D2A335141F6285CEFB33C5441713D0AD7273351411F85EB01B43C5441D7A370AD2533514114AE47A1B43C5441000000A02333514100000080B63C5441333333832033514114AE4791BA3C544152B81E051E33514114AE47B1BC3C54419A99996918335141713D0A37C33C54417B14AEA71633514148E17A44C53C54413333330311335141295C8FF2CA3C5441F6285C2F0B335141A4703D0AD03C54410AD7A3E001335141E17A145ED73C544148E17A04FF325141000000D0D93C54418FC2F5D800335141666666D6D93C5441295C8F22303351418FC2F578DA3C544114AE477152335141E17A14EEDA3C54411F1E6D6751335141EB911587D93C5441E129772A51335141213ED934D93C5441242C54425033514164A1B2FBD73C54410261E0A94F33514123660A2ED73C5441451A4EF44E335141C31E1A39D63C5441FB8DE7B74E335141273F9FE7D53C5441ACCE3D1E4E335141BDE35418D53C5441953A32DB4D335141BDDC5FC6D43C54410B47909B4C3351418CF58F4AD33C5441770634004B3351417093C061D13C5441F99A9C2A49335141D458BF33CF3C5441FA08609C48335141BE1FBB8ACE3C5441B5127073483351417A06165ACE3C5441C2BF3E5B4833514112C7B83FCE3C5441F4BFF0314833514149FDB113CE3C5441FB84F4F54733514187D6C1D3CD3C54410180BF5045335141F3ADEC01CB3C54418E71F4B2433351418524DD48C93C54412256170443335141892C7A8EC83C5441706BA8B3423351418F63BE38C83C54410262764F423351418473C0D6C73C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3014593 - 247477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AE2706AE50411F85EBF170D45441295C8FC205AE5041713D0A976ED45441AE47E1AA04AE5041E17A146E6BD454417B14AE0702AE50410AD7A32065D45441A4703D2A00AE50415C8FC2C560D45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D454417B14AEE7E3AD5041EC51B8AE59D45441295C8F52E3AD5041713D0A475CD4544114AE4771E9AD50415C8FC2657AD454410AD7A3D0ECAD5041000000B079D454410AD7A3F0F6AD50415C8FC22578D45441D7A3704D01AE504185EB51D876D4544185EB51D805AE50410000006076D454410000003006AE5041C3F528FC72D454417B14AE2706AE50411F85EBF170D45441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000003B634005AE50413DE9851E6DD454414FF7629EFFAD5041BBD393B55FD45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D454417B14AEE7E3AD5041EC51B8AE59D454417BDE28AEE3AD5041D22FF8AE5AD45441295C8F52E3AD5041713D0A475CD454418214A57FE3AD50416FBBEF245DD454410F18D8EDE5AD5041B9573F1B69D4544160D01D4DE8AD50410A7D17C874D4544114AE4771E9AD50415C8FC2657AD454410AD7A3D0ECAD5041000000B079D45441C2F7FEEEEFAD50415B83D02879D454419BF72AE9F6AD5041DBB0DA1B78D45441FEC6494801AE5041D50AEEC976D454412D09EDC104AE5041ABC4467076D4544185EB51D805AE50410000006076D454410000003006AE5041C3F528FC72D454417B14AE2706AE50411F85EBF170D45441295C8FC205AE5041713D0A976ED45441003B634005AE50413DE9851E6DD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3014593 - 275081
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AE2706AE50411F85EBF170D45441295C8FC205AE5041713D0A976ED45441AE47E1AA04AE5041E17A146E6BD454417B14AE0702AE50410AD7A32065D45441A4703D2A00AE50415C8FC2C560D45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D454417B14AEE7E3AD5041EC51B8AE59D45441295C8F52E3AD5041713D0A475CD4544114AE4771E9AD50415C8FC2657AD454410AD7A3D0ECAD5041000000B079D454410AD7A3F0F6AD50415C8FC22578D45441D7A3704D01AE504185EB51D876D4544185EB51D805AE50410000006076D454410000003006AE5041C3F528FC72D454417B14AE2706AE50411F85EBF170D45441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000003B634005AE50413DE9851E6DD454414FF7629EFFAD5041BBD393B55FD45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D454417B14AEE7E3AD5041EC51B8AE59D454417BDE28AEE3AD5041D22FF8AE5AD45441295C8F52E3AD5041713D0A475CD454418214A57FE3AD50416FBBEF245DD454410F18D8EDE5AD5041B9573F1B69D4544160D01D4DE8AD50410A7D17C874D4544114AE4771E9AD50415C8FC2657AD454410AD7A3D0ECAD5041000000B079D45441C2F7FEEEEFAD50415B83D02879D454419BF72AE9F6AD5041DBB0DA1B78D45441FEC6494801AE5041D50AEEC976D454412D09EDC104AE5041ABC4467076D4544185EB51D805AE50410000006076D454410000003006AE5041C3F528FC72D454417B14AE2706AE50411F85EBF170D45441295C8FC205AE5041713D0A976ED45441003B634005AE50413DE9851E6DD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986361 - 408826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000040000006B0000007B14AE1789FA50417B14AE271EC454413D0AD76386FA5041A4703DDA1EC454411F85EBD183FA5041713D0A6721C454413D0AD7337BFA50413D0AD7F329C4544114AE47517AFA504148E17AD42AC454417B14AE1779FA50418FC2F5582AC454413333334377FA504148E17AA429C45441EC51B87E6AFA5041295C8F7219C45441713D0AE767FA5041A4703D2A16C4544114AE479166FA5041C3F5281C16C454418FC2F5B861FA50410000006018C4544114AE47515BFA50417B14AE871DC45441D7A370FD59FA50417B14AEC71EC45441D7A3705D59FA50413D0AD7E320C4544152B81E755AFA50417B14AEC723C4544114AE47415CFA50413D0AD7E325C45441D7A3700D5EFA50417B14AE1729C45441D7A3703D60FA50413D0AD7032EC45441D7A3708D60FA5041000000D02FC45441CDCCCCCC5FFA50415C8FC20531C45441C3F5288C5DFA5041E17A149E31C45441295C8F925BFA5041333333F330C454410000007050FA504148E17AD422C4544148E17A444EFA50413D0AD71320C45441C3F5283C3EFA504152B81E650DC454410AD7A3502EFA50418FC2F558F9C35441EC51B80E26FA5041666666F6EEC35441A4703DDA25FA504133333333EEC354410AD7A39025FA504100000020EDC354413333330322FA5041B81E85DBDFC35441CDCCCCEC1DFA50415C8FC295D0C35441295C8F420FFA50413D0AD753DAC35441E17A143E0FFA504166666656DCC35441E17A140E0FFA50410AD7A3B0DFC35441333333A310FA504133333323E3C35441000000E012FA504152B81E95E6C35441F6285C3F13FA50410AD7A390E9C354415C8FC21514FA5041A4703D1AEDC3544185EB512817FA504133333363F1C35441000000301CFA5041A4703D9AF6C35441D7A370AD1DFA5041666666D6F8C354413D0AD7831EFA50417B14AE07FDC35441295C8F721FFA5041B81E854B04C45441E17A14EE1FFA5041A4703D1A0CC45441713D0A9720FA5041333333C30CC454410AD7A30022FA5041B81E850B0DC45441A4703D0A23FA5041333333930CC45441713D0AE726FA5041000000200AC4544114AE475128FA5041F6285C8F09C45441295C8F7229FA50417B14AED709C45441666666462CFA5041666666360FC45441713D0AD72CFA504114AE470111C45441713D0AA72CFA5041B81E85FB12C45441CDCCCC0C2BFA504185EB51A816C45441F6285CBF29FA504185EB51681BC45441295C8F4229FA504114AE47711DC4544148E17AC42AFA5041000000A022C45441A4703D7A2FFA5041F6285CEF2DC45441E17A14EE31FA50416666663633C454410AD7A30034FA504114AE47C135C45441333333C336FA50419A9999F936C45441AE47E10A37FA50416666667638C454413D0AD7B337FA50418FC2F5983BC45441B81E85DB37FA50415C8FC2953CC454418FC2F51839FA50417B14AEB73DC4544152B81E953AFA5041C3F5286C43C45441E17A147E3CFA50419A99991947C454418FC2F5783DFA50417B14AED74AC45441CDCCCC2C3EFA50413D0AD7C34FC45441CDCCCCAC40FA5041C3F5288C55C45441CDCCCC8C42FA50413D0AD7C359C45441CDCCCC7C43FA50413D0AD7135AC45441CDCCCCCC48FA50410000006059C454418FC2F5F849FA50410000002058C4544152B81ED54AFA50417B14AEC755C4544152B81E154CFA5041000000C053C454418FC2F5084EFA5041C3F5280C53C4544152B81E7550FA50417B14AE4753C454418FC2F5A853FA5041000000B054C4544152B81E6556FA5041C3F5283C55C454418FC2F59859FA5041C3F528EC54C4544114AE473167FA50410000009051C454418FC2F5F867FA50410000005050C4544152B81EE567FA50417B14AEA74DC4544114AE473167FA5041C3F528BC48C4544114AE47A165FA5041C3F528EC45C4544152B81E4562FA50417B14AEF743C454418FC2F52860FA50413D0AD74343C4544114AE47C15EFA5041000000F041C45441D7A370AD5EFA50413D0AD77340C4544114AE47B15FFA50413D0AD7E33EC4544114AE479161FA50413D0AD7933EC454418FC2F5186BFA5041C3F528BC3EC45441D7A3705D6DFA50417B14AE9744C45441D7A370ED6EFA5041C3F5287C47C4544152B81EA570FA50417B14AEE749C4544114AE478171FA50417B14AEB74CC4544152B81E8572FA5041C3F528BC4DC454418FC2F5D873FA50413D0AD7334EC45441CDCCCC2C78FA50415C8FC2154DC454411F85EB7179FA50411F85EB114DC45441E17A144E79FA5041CDCCCCBC52C4544148E17A847AFA5041B81E851B54C454416666668682FA5041D7A370BD54C45441666666F68AFA50417B14AE6755C45441295C8F528CFA50410AD7A3701FC454417B14AE1789FA50417B14AE271EC454410C000000333333434CFA5041666666362DC45441EC51B87E48FA5041CDCCCC5C2EC454417B14AE2743FA50413D0AD7532CC454411F85EB3141FA5041AE47E1BA2AC45441F6285C4F3FFA5041E17A140E27C45441F6285C1F3FFA50419A9999A923C454413333339341FA504152B81E8522C45441C3F528CC44FA50413D0AD73323C4544114AE471146FA5041A4703DAA24C4544114AE47D147FA50411F85EB7129C45441713D0A374CFA5041C3F5289C2BC45441333333434CFA5041666666362DC45441070000000AD7A3905BFA50415C8FC26534C45441E17A14CE5CFA50413D0AD7D332C45441B81E85DB77FA5041C3F528AC2BC4544185EB510879FA5041A4703D9A2CC454410AD7A3F078FA5041B81E851B30C454419A9999795BFA5041E17A14CE37C454410AD7A3905BFA50415C8FC26534C4544115000000D7A3707D36FA5041C3F5281C14C45441713D0AE736FA504114AE47E114C45441EC51B84E38FA50413D0AD75317C454410000008038FA50418FC2F52818C45441295C8F3238FA5041A4703D2A19C45441000000E037FA50413D0AD7931AC4544114AE471138FA50417B14AE671DC45441333333333AFA504148E17A9425C454411F85EBC138FA5041333333632AC45441CDCCCCBC37FA5041713D0A872AC45441713D0A7734FA5041D7A3704D23C454417B14AED734FA50411F85EB711FC45441C3F528DC33FA5041CDCCCC2C1DC454410AD7A37031FA50411F85EB211BC4544185EB51E82DFA504185EB519818C45441333333732DFA5041CDCCCC3C18C454418FC2F5482EFA5041EC51B83E17C45441AE47E11A30FA504114AE478115C454419A99999934FA504152B81EC513C454410AD7A3F034FA5041666666D613C45441D7A3707D36FA5041C3F5281C14C45441
+</a>
+
+<b>
+0106000000010000000103000000020000008600000018CDCC2C78FA50415B8FC2154DC454416D29375378FA504182231A6747C4544136DA5C8F78FA50414000846B3EC45441010EA5F078FA50415F32861B30C45441C45098795BFA50410C0615CE37C454413AFB52185BFA5041C7576F1D46C4544165D724DC5AFA50416B20E5184FC454419A777FD459FA50414B736F5D4FC4544132E17A045AFA5041B7CCCC3C48C454414ED8382A5AFA504130E148B142C45441E7B71E455AFA50417AC2F5A83EC454412E5E246C5AFA504105E148E138C454418FC2F5885AFA50411652B8AE34C45441C3F5285C59FA50410AD7A3C033C4544114AE47115AFA50418FC2F58832C45441874FB8BE44FA5041DC14AE2738C45441EC51B87E56FA5041466666262CC454417AEB519850FA5041C31E85AB24C45441ADCCCC5C4AFA504167B81EC51CC4544116295CDF44FA5041F6285CCF15C454419947E17A41FA50413E5C8F8211C45441AFF5283C3EFA504160B81E650DC454419A9999F936FA50415C8FC27512C454415FFCCF6E36FA504149B4B4D312C45441148D1AF934FA50416052E3D713C45441D7A3707D36FA5041C3F5281C14C45441713D0AE736FA504114AE47E114C45441EC51B84E38FA50413D0AD75317C454410000008038FA50418FC2F52818C45441295C8F3238FA5041A4703D2A19C45441000000E037FA50413D0AD7931AC4544114AE471138FA50417B14AE671DC45441C4ED0E4E38FA504136E8AC501EC45441B0C18A4E38FA5041B49A87521EC45441333333333AFA504148E17A9425C454418DA51D4239FA50414667F4B728C454411F85EBC138FA5041333333632AC45441CDCCCCBC37FA5041713D0A872AC45441713D0A7734FA5041D7A3704D23C454412A6610B134FA5041AEC684FC20C454417B14AED734FA50411F85EB711FC45441C3F528DC33FA5041CDCCCC2C1DC454419763473F32FA5041392D53D01BC454410AD7A37031FA50411F85EB211BC4544186E855322FFA5041E29804A419C4544190C602242FFA50414913177B19C454419C4CB5E82DFA50419D4E999818C45441F21428BA2AFA504131C6CDBF1AC45441666EFAC62BFA5041B44673561DC454411298588F2CFA5041DF38674E1FC454418F32C7AB2CFA5041CCEBE9951FC454412A7630DD2CFA5041F293301220C4544165FFDD232DFA5041A82D1EC520C45441D35FB9782EFA5041250A082424C45441520480BB2EFA5041BB7D18CB24C454413E1BFF7630FA504169B7A92029C45441BA496D0531FA5041482BE5862AC45441BD85DEEB31FA50419D597DCA2CC454413960F6F432FA5041C05E3C652FC454419665022034FA50414C66615532C454414A08F55235FA50416F008B5535C45441C1719B9735FA5041CA5EC4FF35C4544189F38BFE35FA5041C7E3F70837C4544129EFFC5836FA50418BFB0D0638C454411532FCEF36FA5041AF6AFBC839C454417008389B37FA50411E91E7BE3BC454412A81C1E337FA5041D0A186933CC454418098E70A38FA5041A18247063DC454415260A26E38FA5041ACFA221A3EC454419BFB2F9838FA5041792F8A943EC4544111493EC938FA5041B18B41263FC45441DC59C5E838FA504125F4E7833FC4544195BFD45339FA5041AB46EBC140C45441560D23A139FA50414E4808AD41C45441279CC4B839FA50414BD24CF241C45441A56759683BFA504161131DB946C45441A741EEC03BFA504131E401E747C45441AE4F50713CFA5041710406EC49C45441D86D0AA23CFA5041604EDA7A4AC4544140945AC03CFA504106985C834AC45441A3D9277A3DFA5041DEDD54F44CC45441CEB87CE13DFA50414CDA37234EC4544193F9C9503EFA50416B3E57634FC45441B5CBB1573EFA5041278D6A774FC454415353D8703EFA5041014788C04FC454417CD86A973EFA50416C8ED83050C454413D41A4A63EFA50411BE52C5D50C454413B19BFD23EFA5041ED2C99DD50C45441EA8189F93EFA5041F28BFB3B51C4544101FBE6223FFA50413E17559651C454415482CDF13FFA504120632C7353C454414DA85A4840FA50413D2DDC3A54C4544157C5E56240FA504160E4277954C45441E04A952A41FA5041BDEA5C4A56C4544151A49AAE42FA50414F6E02CC59C454418F728A4D43FA5041E07360035AC45441E7E9587E43FA50414C7838105AC45441CDCCCCCC48FA50410000006059C454418FC2F5F849FA50410000002058C4544152B81ED54AFA50417B14AEC755C45441A8171D8D4BFA5041C5D3DF9C54C4544152B81E154CFA5041000000C053C454418FC2F5084EFA5041C3F5280C53C4544152B81E7550FA50417B14AE4753C45441D5854A9A53FA50415A928DA954C4544152B81E6556FA5041C3F5283C55C454413EC1D16557FA5041627C1C2355C454418FC2F59859FA5041C3F528EC54C4544114AE473167FA50410000009051C454418FC2F5F867FA50410000005050C4544152B81EE567FA50417B14AEA74DC45441695622A967FA5041F7C090034CC454412019FC9F67FA5041F4718AC34BC4544114AE473167FA5041C3F528BC48C4544114AE47A165FA5041C3F528EC45C4544152B81E4562FA50417B14AEF743C454418FC2F52860FA50413D0AD74343C4544114AE47C15EFA5041000000F041C45441D7A370AD5EFA50413D0AD77340C4544114AE47B15FFA50413D0AD7E33EC4544114AE479161FA50413D0AD7933EC454418FC2F5186BFA5041C3F528BC3EC454411FBB09396CFA504191C655A441C45441D7A3705D6DFA50417B14AE9744C45441D7A370ED6EFA5041C3F5287C47C45441E889025970FA5041EA62707C49C4544152B81EA570FA50417B14AEE749C454410B1C58C370FA5041F10A864A4AC4544114AE478171FA50417B14AEB74CC4544152B81E8572FA5041C3F528BC4DC45441DC13BFD573FA5041C651B5324EC4544132F30FD973FA5041E046D0334EC454417508A80874FA504132F485274EC4544118CDCC2C78FA50415B8FC2154DC4544113000000F6285C4F3FFA5041E17A140E27C45441BCC5B22B3FFA50414E6DD78824C454411A841E293FFA504170302D5A24C45441F6285C1F3FFA50419A9999A923C454413333339341FA504152B81E8522C4544113CA2BCD41FA5041DFD6659122C45441C3F528CC44FA50413D0AD73323C4544103C814D944FA5041603EB84223C4544114AE471146FA5041A4703DAA24C4544119ED3FCF47FA50417CD95F6C29C454413904F5D148FA504180F48DEF29C45441C7169B3149FA5041C7FD601F2AC45441713D0A374CFA5041C3F5289C2BC45441333333434CFA5041666666362DC45441EC51B87E48FA5041CDCCCC5C2EC454417B14AE2743FA50413D0AD7532CC454411F85EB3141FA5041AE47E1BA2AC454417A824AC340FA5041079432E329C45441F6285C4F3FFA5041E17A140E27C45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7921 - 57904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4BBA2D485B050415820D3BDE3E05441666666A689B05041EC51B89EDEE054415C8FC2B591B05041C3F528ACD7E054416666660694B05041B81E856BD6E05441666666A684B0504152B81E25C6E054415C8FC2457DB050415C8FC255BEE054413D0AD7E36FB05041C3F5282CB0E05441000000B06EB05041713D0AA7B0E05441C3F5289C60B05041AE47E19AB5E0544134DF19A668B05041FBC7757AC2E05441A4BBA2D485B050415820D3BDE3E05441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000043E9A94093B05041C0A980D6D6E05441035B37D193B05041E55B4B88D6E05441A66B68DF93B05041C7BC9D80D6E05441DF274CFB93B05041E5E08671D6E054411B7BAC9888B05041691F8852CAE05441666666A684B0504152B81E25C6E054415C8FC2457DB050415C8FC255BEE05441FD83F2E36FB050417A09462CB0E05441000000B06EB05041713D0AA7B0E05441FD8DEE9E60B050415E9F519FB5E0544134DF19A668B05041FBC7757AC2E054418E186EC685B0504164DEA1ADE3E05441906439B589B05041F2C86C55DEE0544104DCEE6E91B05041E20BF6E8D7E054414960D96F91B0504111D86BE8D7E054415C8FC2B591B05041C3F528ACD7E0544143E9A94093B05041C0A980D6D6E05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987365 - 60215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE177DDC504185EB51F8ABC25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C25441D7A370ED8EDC504166666676ABC25441713D0AB790DC504133333343ABC2544148E17AC490DC5041333333639CC25441F6285C4F6FDC50417B14AEE798C254411F85EBC165DC50418FC2F53898C25441C3F528BC65DC504148E17A44A5C2544185EB51A866DC5041295C8F52A6C2544148E17A046BDC504100000040ADC25441B81E852B6CDC5041C3F528BCAEC2544152B81E156EDC50415C8FC265AFC25441333333B379DC504133333353B0C2544114AE47F17ADC5041000000D0AFC25441666666D67BDC5041713D0A07AFC254417B14AE177DDC504185EB51F8ABC25441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007C4E36657EDC5041ABF582F0A9C25441CC169E667EDC50417959CED6A9C254414E7BD9CD7EDC5041DBF85F2EA9C25441987ADCE17EDC5041E5163F2EA9C25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C254419B6F994384DC50413B54899BA9C254417755ED0C8FDC50411281E072ABC25441EE1197AF90DC5041F3960844ABC25441F3F135B790DC50417816D412ABC2544160B441B790DC5041DA3BD005ABC254413A2242B790DC5041FDA65605ABC254411459B8B790DC5041469C8082AAC254410E7B06B890DC50410402072CAAC2544142469DBA90DC5041BB70774EA7C254412C543DC290DC5041D15FFDDD9EC25441BEFFDFC390DC5041BE269E0E9DC25441867359C490DC5041B8AC32889CC2544153956AC490DC50415E993C759CC25441C41175C490DC5041A689A1699CC25441102E78C490DC5041023830669CC25441709279C490DC5041BCCBA5649CC254415D056D3C7FDC5041FAB323909AC254415BCBB3267EDC50419DB9163FAAC25441CDCBA0537EDC5041C8EEC9F5A9C254417C4E36657EDC5041ABF582F0A9C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987365 - 127702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE177DDC504185EB51F8ABC25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C25441D7A370ED8EDC504166666676ABC25441713D0AB790DC504133333343ABC2544148E17AC490DC5041333333639CC25441F6285C4F6FDC50417B14AEE798C254411F85EBC165DC50418FC2F53898C25441C3F528BC65DC504148E17A44A5C2544185EB51A866DC5041295C8F52A6C2544148E17A046BDC504100000040ADC25441B81E852B6CDC5041C3F528BCAEC2544152B81E156EDC50415C8FC265AFC25441333333B379DC504133333353B0C2544114AE47F17ADC5041000000D0AFC25441666666D67BDC5041713D0A07AFC254417B14AE177DDC504185EB51F8ABC25441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007B4E36657EDC5041A9F582F0A9C25441CC169E667EDC50417559CED6A9C25441517BD9CD7EDC5041D9F85F2EA9C25441957ADCE17EDC5041E1163F2EA9C25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C254419D6F994384DC50413D54899BA9C254417955ED0C8FDC50411481E072ABC25441EA1197AF90DC5041F3960844ABC25441F5F135B790DC50417816D412ABC2544160B441B790DC5041D83BD005ABC25441392242B790DC504101A75605ABC254411859B8B790DC5041489C8082AAC254410F7B06B890DC50410802072CAAC2544142469DBA90DC5041BA70774EA7C2544129543DC290DC5041D25FFDDD9EC25441BAFFDFC390DC5041BC269E0E9DC25441847359C490DC5041BBAC32889CC2544155956AC490DC504159993C759CC25441C51175C490DC5041A889A1699CC254410F2E78C490DC5041013830669CC25441739279C490DC5041B7CBA5649CC254415C056D3C7FDC5041FAB323909AC254415FCBB3267EDC5041A0B9163FAAC25441C8CBA0537EDC5041CCEEC9F5A9C254417B4E36657EDC5041A9F582F0A9C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987365 - 327229
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE177DDC504185EB51F8ABC25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C25441D7A370ED8EDC504166666676ABC25441713D0AB790DC504133333343ABC2544148E17AC490DC5041333333639CC25441F6285C4F6FDC50417B14AEE798C254411F85EBC165DC50418FC2F53898C25441C3F528BC65DC504148E17A44A5C2544185EB51A866DC5041295C8F52A6C2544148E17A046BDC504100000040ADC25441B81E852B6CDC5041C3F528BCAEC2544152B81E156EDC50415C8FC265AFC25441333333B379DC504133333353B0C2544114AE47F17ADC5041000000D0AFC25441666666D67BDC5041713D0A07AFC254417B14AE177DDC504185EB51F8ABC25441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007B4E36657EDC5041A9F582F0A9C25441CC169E667EDC50417559CED6A9C25441517BD9CD7EDC5041D9F85F2EA9C25441957ADCE17EDC5041E1163F2EA9C25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C254419D6F994384DC50413D54899BA9C254417955ED0C8FDC50411481E072ABC25441EA1197AF90DC5041F3960844ABC25441F5F135B790DC50417816D412ABC2544160B441B790DC5041D83BD005ABC25441392242B790DC504101A75605ABC254411859B8B790DC5041489C8082AAC254410F7B06B890DC50410802072CAAC2544142469DBA90DC5041BA70774EA7C2544129543DC290DC5041D25FFDDD9EC25441BAFFDFC390DC5041BC269E0E9DC25441847359C490DC5041BBAC32889CC2544155956AC490DC504159993C759CC25441C51175C490DC5041A889A1699CC254410F2E78C490DC5041013830669CC25441739279C490DC5041B7CBA5649CC254415C056D3C7FDC5041FAB323909AC254415FCBB3267EDC5041A0B9163FAAC25441C8CBA0537EDC5041CCEEC9F5A9C254417B4E36657EDC5041A9F582F0A9C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979561 - 44638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000AE47E1EA8DA4504133333333077A54419A9999A98DA45041C3F528FC057A54415C8FC24593A4504114AE4751067A5441295C8F5292A45041C3F5281C037A54413D0AD7A386A45041C3F5285C027A544185EB517888A4504114AE47F1067A5441F6285C0F89A45041D7A370BD0A7A54419A99992989A450415C8FC2650B7A5441000000E089A450413D0AD7F30B7A5441E17A144E8BA45041CDCCCC3C0D7A544114AE47818EA450415C8FC2B5117A5441295C8F3290A45041F6285CDF157A54415C8FC29592A45041000000101A7A54416666660695A45041EC51B85E1E7A5441E17A14CE96A4504114AE47D1207A54415C8FC25597A45041B81E858B217A54417B14AEF798A4504148E17A54237A5441295C8FC29AA4504148E17AA4257A5441AE47E15A9DA4504166666666287A5441C3F528DC9CA450418FC2F5B8267A54413333338393A45041AE47E18A077A5441AE47E1EA8DA4504133333333077A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000033BF8FFF97A4504136FB2E45227A54417B14AEF798A4504148E17A54237A544199D9279F9AA450413011CE76257A5441295C8FC29AA4504148E17AA4257A5441AE47E15A9DA4504166666666287A54411EE9C59D9BA450415AABEE92227A544100E8C59D9BA450419DA7EE92227A5441E17A14CE96A4504114AE47D1207A544133BF8FFF97A4504136FB2E45227A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979561 - 82473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000AE47E1EA8DA4504133333333077A54419A9999A98DA45041C3F528FC057A54415C8FC24593A4504114AE4751067A5441295C8F5292A45041C3F5281C037A54413D0AD7A386A45041C3F5285C027A544185EB517888A4504114AE47F1067A5441F6285C0F89A45041D7A370BD0A7A54419A99992989A450415C8FC2650B7A5441000000E089A450413D0AD7F30B7A5441E17A144E8BA45041CDCCCC3C0D7A544114AE47818EA450415C8FC2B5117A5441295C8F3290A45041F6285CDF157A54415C8FC29592A45041000000101A7A54416666660695A45041EC51B85E1E7A5441E17A14CE96A4504114AE47D1207A54415C8FC25597A45041B81E858B217A54417B14AEF798A4504148E17A54237A5441295C8FC29AA4504148E17AA4257A5441AE47E15A9DA4504166666666287A5441C3F528DC9CA450418FC2F5B8267A54413333338393A45041AE47E18A077A5441AE47E1EA8DA4504133333333077A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000033BF8FFF97A4504136FB2E45227A54417B14AEF798A4504148E17A54237A544199D9279F9AA450413011CE76257A5441295C8FC29AA4504148E17AA4257A5441AE47E15A9DA4504166666666287A54411EE9C59D9BA450415AABEE92227A544100E8C59D9BA450419DA7EE92227A5441E17A14CE96A4504114AE47D1207A544133BF8FFF97A4504136FB2E45227A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>735324 - 3097528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000007B14AE97617C50419A999959741555410AD7A3005D7C50415C8FC2957315554100000090537C5041A4703D8A7C155541E17A149E727C50410AD7A340B1155541713D0AE7757C50418FC2F538B01555418FC2F548767C50411F85EB91AE155541713D0A97757C5041E17A14DEAA15554148E17A346F7C50411F85EB719F15554114AE47D16C7C5041C3F528BC9A15554185EB51C86C7C5041333333D3991555411F85EBA16F7C504114AE479197155541F6285C3F6D7C504114AE474192155541B81E859B697C504152B81E258A155541A4703D4A667C5041EC51B86E821555417B14AE97617C50419A99995974155541
+</a>
+
+<b>
+0106000000010000000103000000010000001700000058D6D65E6D7C504171F02354921555414A13A1D26C7C5041E77F064F911555411A762AE06B7C5041B3CECF328F155541FC00B7FD6A7C50414420463A8D1555416521B23B6A7C5041D5C8FE898B1555411F30C23C697C5041F8BAD14889155541CCA582AA687C5041CD8ED2F4871555418BFBB3A2677C50410375868F851555417E863DA9667C50417F7A934B8315554126EB8620667C5041ED7CABF181155541447CCC3D657C5041B4BFF7497F155541DBC3D7BB647C5041F56860C47D15554159CDA86B647C50410838FFD37C15554141C0C3F4637C50410ADC906F7B155541801C5678637C504115C08BFA79155541846F61C7627C5041AE280EE8771555417420E43F627C5041F711E051761555417B14AE97617C50419A99995974155541B195FFD55F7C5041232FA70E74155541CF975F615E7C504142542D0C7415554113548B996D7C50414256AB5098155541B2B5A9536F7C5041593FFA579715554158D6D65E6D7C504171F0235492155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>735324 - 3381157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000007B14AE97617C50419A999959741555410AD7A3005D7C50415C8FC2957315554100000090537C5041A4703D8A7C155541E17A149E727C50410AD7A340B1155541713D0AE7757C50418FC2F538B01555418FC2F548767C50411F85EB91AE155541713D0A97757C5041E17A14DEAA15554148E17A346F7C50411F85EB719F15554114AE47D16C7C5041C3F528BC9A15554185EB51C86C7C5041333333D3991555411F85EBA16F7C504114AE479197155541F6285C3F6D7C504114AE474192155541B81E859B697C504152B81E258A155541A4703D4A667C5041EC51B86E821555417B14AE97617C50419A99995974155541
+</a>
+
+<b>
+0106000000010000000103000000010000001700000058D6D65E6D7C504171F02354921555414A13A1D26C7C5041E77F064F911555411A762AE06B7C5041B3CECF328F155541FC00B7FD6A7C50414420463A8D1555416521B23B6A7C5041D5C8FE898B1555411F30C23C697C5041F8BAD14889155541CCA582AA687C5041CD8ED2F4871555418BFBB3A2677C50410375868F851555417E863DA9667C50417F7A934B8315554126EB8620667C5041ED7CABF181155541447CCC3D657C5041B4BFF7497F155541DBC3D7BB647C5041F56860C47D15554159CDA86B647C50410838FFD37C15554141C0C3F4637C50410ADC906F7B155541801C5678637C504115C08BFA79155541846F61C7627C5041AE280EE8771555417420E43F627C5041F711E051761555417B14AE97617C50419A99995974155541B195FFD55F7C5041232FA70E74155541CF975F615E7C504142542D0C7415554113548B996D7C50414256AB5098155541B2B5A9536F7C5041593FFA579715554158D6D65E6D7C504171F0235492155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873359 - 233688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000004E000000D47CD5904D9450417A571A1F4F2C554126A840EB4494504165DDA46E512C5541E0CFF5A836945041A646AB8A5E2C554102B25F352B94504133EE38D4692C55419DA6870B1A945041AF36901D7A2C5541EDABDDC00F945041CE049CE1832C5541D8D41C78F8935041BEBB76FC932C5541D1385A46EB9350410170EAF4A12C5541A46D9D1CDA935041DB5B2157BB2C5541546FAE3ACC935041E9712DF5C82C5541CCB8E5B0A99350419AAC197BE52C55413C7C9F55E9935041CE4C743E2E2D55414AA9769E0D9450415500C414612D5541DDD96E8B209450411D57C46C502D5541308DD3F422945041CF341F464F2D554156DC135E32945041EFE349EB472D554198E15C503B9450414585689C522D55418E9DA4613C9450414E6401E3532D554188273F562C9450412498CD185E2D5541F5DAAAA027945041C66BFD17612D55411247A6FE24945041B90FE9C4622D55418902434621945041BAAFF922652D5541E2DB07AD1F94504169256527662D55418170CD181894504160F515FA6A2D554141FA1C2C2A9450417897CD8B822D55415FBE0A903A945041BE13960B912D5541A907F9DB3B945041E3F5074B8F2D5541F0DA694B3E9450416D2B8B008C2D55410B1E112342945041554648CF862D5541EBB7C41C45945041B3B4F4C9822D5541762F9E3F479450415658F8E67F2D5541259A9B6F4A945041B1F147987B2D5541419A962C4E945041176E108B762D55414CDF2BE351945041C7107E86712D554170BA4098A2945041F82E2B13662D55418AAA6379D39450411895968F6E2D5541ABFB8FE1D394504172F849B16E2D55411626C050D8945041FD708A19682D5541569EDFB5DB94504167A6A8C0612D55411DA74B54EF945041CB9ADE38092D554133737D1DF5945041F85C7B1BF52C5541FCF4E51BF6945041CE237730F12C55413B51751EF8945041F8D1BEB1E92C554164AD0481F894504154618147E82C5541D748DAA4F8945041C7116BC4E72C5541CC7136D4F89450414CFDBCDCE62C55413C86E43BF9945041F09656D6E42C55410232F032FA945041F09E8BFEDF2C5541A148DA64FB9450411A1C42A8DA2C55419A822BE6FB9450417F71E346D92C5541AFA70A5BFD9450413D87C92FD52C5541355DB04AFD9450417770CBD3D42C55413352AF90FC9450416F856CBDD02C5541FCE33973FB94504131879177CA2C5541BC34ECBAFA945041EBBAC36AC62C5541970B4908FA9450412DE4D57DC22C55411A1C802EF99450410E4CAEB4BD2C554107CF84B3F8945041592AD800BB2C55418F675F40F7945041A0594CBFB22C55414E9B9213ED945041306EFA86792C55417849DAF4EB945041083BC733732C554184D6C12BE89450413882F5025E2C5541C8659415E194504134106AD9612C554135849DF7DF945041063C9930622C5541FFC8598EDD9450418EE06DE9622C55419B7D5428D7945041CC96AE52642C5541B98275A3BC94504113D55D765D2C554110C2AFCBB29450414B2A4B0F5F2C55410BF9D8C1B19450410D3F2ED85E2C5541C716FE22B19450418CD100BB5E2C5541FD418FDC97945041786F56D3442C5541410A24E493945041BB3E7B1A422C55416A8E47E08D945041014C7EC64C2C55410A2D6D0278945041F5F1D007602C55412E0948F95B9450412A1DAA69402C55414425BFED52945041A927DC98492C554187A0CF56509450417685A5A44B2C5541D47CD5904D9450417A571A1F4F2C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F5DAAAA027945041C66BFD17612D5541669E6944289450416892D318622D55413B6EF5702594504115121695652D554134B2D87032945041DA893D9E732D5541BE12258026945041E1F824C27D2D554141FA1C2C2A9450417897CD8B822D55415FBE0A903A945041BE13960B912D5541A907F9DB3B945041E3F5074B8F2D5541AD41E9173E945041E33124468C2D5541B876597C4094504100A5850A892D554144D0EBCC419450416309B243872D554118DE01073E94504167960C5F812D5541D437C54940945041F520BF7C7F2D554105A672C04594504148A17C007C2D55411122E5064B94504199829D32772D554135E6CE874C945041BF98AFC3782D55410432010A50945041BB65A2E6732D55414CDF2BE351945041C7107E86712D55414E8C5E6C5B94504157C3242C702D554106691D355D94504137E47BE86E2D55418B57882F5F9450418D03D6BD6C2D5541482F2FCF51945041EA6069366D2D55417376DD1252945041F378B91F6C2D55416E2B05E34E945041EDFA9C1D682D5541F6DCD7DD3E9450412C725DA2522D55418E9DA4613C9450414E6401E3532D554188273F562C9450412498CD185E2D5541F5DAAAA027945041C66BFD17612D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905854 - 249924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000001245081C167A5141B73C6F12A289544152B81EE50D7A514185EB51E89F895441AE47E17A067A5141E17A141E9F8954413D0AD7D3027A5141E17A145E9F8954413D0AD793017A51417B14AE97A1895441295C8F42017A5141F6285C6FA289544185EB51080E7A514100000030A5895441C3F5280C197A51411F85EB41A7895441713D0A071C7A51411F85EB81A7895441295C8F021F7A5141295C8F02A7895441F6285C9F277A5141D7A3705DA389544133333343397A51418FC2F548B089544152B81EE53E7A51411F85EBC1B48954419A999919467A5141EC51B89EBD8954413D0AD7D34B7A51418FC2F548C48954417B14AE17537A5141CDCCCCFCCE8954413D0AD7335A7A5141CDCCCC5CD8895441C3F5284C667A514148E17A94E889544148E17A04697A514152B81EC5E5895441E17A14EE667A5141B81E85ABE2895441AE47E15A587A514166666696CE895441CDCCCCAC4D7A514166666636BF895441B81E85EB447A51419A999909B4895441AE47E19A3F7A51410AD7A3E0AE895441E17A144E2B7A514148E17A84A0895441AE47E1BA277A5141000000C09E89544185EB5158257A51417B14AE079F895441B81E85CB227A5141713D0AC79F89544114AE47E1207A5141C3F5280CA189544114AE47911D7A5141295C8F62A289544133333353197A5141CDCCCCDCA28954411245081C167A5141B73C6F12A2895441
+</a>
+
+<b>
+010600000001000000010300000001000000720000009945D43D1A7A5141CEB93B17A789544123A117321D7A51414474CFEDA689544131216942207A51417969580EA68954411EA95430257A514196E629FCA3895441FD17D514287A5141278D97D6A2895441B7DC6AD42B7A5141E7EA468FA5895441A8AE5A3B307A5141DDFBFAE8A8895441ABCCF541307A51413579AFEDA8895441E0FACB9B307A5141B8F9312BA9895441CBF5F678317A5141CB6332CBA9895441FC7CCAB2327A51410FCFB7AAAA8954413067E51C357A51412F68CB6CAC895441DDAD3A7D397A514141E7E297AF895441F28C49533A7A51413A94BE32B0895441110A9D623A7A514170A69540B089544113A33E733A7A5141D9BF9F4CB089544115996D193F7A5141693E6382B48954415B9D621C3F7A5141E41A7385B4895441F3A6356A407A5141D39A1CDFB589544162EB0472407A5141A3C432E7B5895441C6DA85AC417A5141CC74043EB78954418923136A437A514172ECAE23B989544170CF7395467A5141453F032BBD895441C54EC36E477A514106C1F451BE8954414B6568DE497A514163EC64A0C18954413D0AD7D34B7A51418FC2F548C489544119E0D5B94D7A51419897E814C7895441F610BED54D7A5141011F053EC789544102909FC74E7A51415A5459A2C8895441617F8441517A5141C80D2D48CC8954413E932E34537A5141C1B46122CF8954414CAA8D47557A5141499807DFD1895441E8999315577A5141F6C93C40D4895441B714B728597A5141DD1394FCD68954413D0AD7335A7A5141CDCCCC5CD8895441906E88535B7A51416D188DDED9895441489DDAB1617A514130648E68E2895441B25E2615637A514114CFF344E48954416173ECC5637A5141E670FA31E589544133DC6EC5647A5141458D9388E68954419E034ED9647A5141D6A038A3E6895441EBF3B301667A5141DA69B92CE889544175F7304C667A5141D2AA8091E8895441279452E1687A5141737870E9E589544148E17A04697A514152B81EC5E5895441BA3E7D8D697A5141AA831752E5895441E65FDFDE667A51416C8BE195E1895441BE9578F0637A51418415C08CDD895441729280E1627A51419F8B0915DC89544103436559617A5141BFF9A5F6D989544120CFD1B55F7A51410FB185B7D7895441334C91355F7A51410194A503D7895441E4791A4E5D7A5141C3B08562D4895441B266A4EE5C7A5141002E12E1D3895441CA1B3F105C7A51418DD3B1AAD2895441107D14125B7A51415695C54AD18954410743D24E5A7A5141FAD26036D0895441E351D384577A51413D177B4ACC895441828B950C567A51415B32B93CCA89544116E951D1547A5141A40C2876C8895441EDA7A0F4537A51418BA7DB1FC7895441CC54634B537A514115D7702AC6895441D723FFA8527A5141B5D00041C58954412BE162A8517A514194CE15CBC3895441FA713F9A517A5141682B56B6C389544169209AFA4E7A5141064428E4BF8954418E432A1F4E7A5141EE2CBBACBE8954417895848A4D7A5141455A3BEEBD8954414441BE4C4B7A5141C9ADE80EBB8954411E005013497A514178252E34B8895441E310F675477A514136C2C61CB689544143356B69457A514129BAD187B3895441C3EC5886447A5141F7BC53A2B2895441C0194617437A514125EED645B18954412BBB58B9427A51413F0CABECB08954413AADFC3D3D7A5141F8F1F0E7AC895441C82BBF1C3A7A5141D60C06BEAA895441C146F146387A5141C7713C79A9895441CCC86F01357A5141C14B3F36A78954416E8D5F17317A514124DF7E81A48954416F38E564307A5141B6FE1B06A48954412FA3B73A2F7A5141E1AAF837A38954419C85162F2B7A5141DAD6A76CA089544109664F4F287A51415BEE76CB9E8954414D32553C257A5141C2CD37229F895441F9D30AFC227A5141DE9750E29F895441DA2725C8207A5141AF4CC10BA1895441D0E893A21D7A514133719260A289544111778E2A1B7A5141491564A3A2895441AEF8271E1B7A5141D6932CA4A289544168C1365A197A51411EC5B7C0A2895441906FBF39177A5141D5932B7DA2895441DA104B0D167A5141112BE557A289544166666606167A5141713D0A57A2895441D2F368E6147A51418CC0D7FEA18954412A657BC00D7A5141E41238D69F8954417F89D386067A5141A4A1EB249F8954416962EEAD027A51418F7995339F895441749C197F017A514157A3F3CCA18954414B958322017A51417A97C3BAA2895441C4AF1C3A047A514107870B13A389544108F0EF8C047A51419B78241BA3895441ACF7C0D1087A51411136DF9DA38954417E2C2D94097A5141FF4421B5A389544180A56DA8097A5141D8778DB7A3895441E167DDC2097A5141A4D4C0BCA3895441893F0E510E7A5141B9F62AA2A4895441E452FAA2127A5141818B2DA3A5895441F9034F50157A5141259FA53FA68954419125B85B157A514165BABA41A689544185C485E4167A51416E7E6A89A689544135093C05187A51412E1E1BBEA6895441DF185B29187A5141E1B4B2C4A68954419945D43D1A7A5141CEB93B17A7895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905854 - 337552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000001245081C167A5141B73C6F12A289544152B81EE50D7A514185EB51E89F895441AE47E17A067A5141E17A141E9F8954413D0AD7D3027A5141E17A145E9F8954413D0AD793017A51417B14AE97A1895441295C8F42017A5141F6285C6FA289544185EB51080E7A514100000030A5895441C3F5280C197A51411F85EB41A7895441713D0A071C7A51411F85EB81A7895441295C8F021F7A5141295C8F02A7895441F6285C9F277A5141D7A3705DA389544133333343397A51418FC2F548B089544152B81EE53E7A51411F85EBC1B48954419A999919467A5141EC51B89EBD8954413D0AD7D34B7A51418FC2F548C48954417B14AE17537A5141CDCCCCFCCE8954413D0AD7335A7A5141CDCCCC5CD8895441C3F5284C667A514148E17A94E889544148E17A04697A514152B81EC5E5895441E17A14EE667A5141B81E85ABE2895441AE47E15A587A514166666696CE895441CDCCCCAC4D7A514166666636BF895441B81E85EB447A51419A999909B4895441AE47E19A3F7A51410AD7A3E0AE895441E17A144E2B7A514148E17A84A0895441AE47E1BA277A5141000000C09E89544185EB5158257A51417B14AE079F895441B81E85CB227A5141713D0AC79F89544114AE47E1207A5141C3F5280CA189544114AE47911D7A5141295C8F62A289544133333353197A5141CDCCCCDCA28954411245081C167A5141B73C6F12A2895441
+</a>
+
+<b>
+010600000001000000010300000001000000720000009945D43D1A7A5141CEB93B17A789544123A117321D7A51414474CFEDA689544131216942207A51417969580EA68954411EA95430257A514196E629FCA3895441FD17D514287A5141278D97D6A2895441B7DC6AD42B7A5141E7EA468FA5895441A8AE5A3B307A5141DDFBFAE8A8895441ABCCF541307A51413579AFEDA8895441E0FACB9B307A5141B8F9312BA9895441CBF5F678317A5141CB6332CBA9895441FC7CCAB2327A51410FCFB7AAAA8954413067E51C357A51412F68CB6CAC895441DDAD3A7D397A514141E7E297AF895441F28C49533A7A51413A94BE32B0895441110A9D623A7A514170A69540B089544113A33E733A7A5141D9BF9F4CB089544115996D193F7A5141693E6382B48954415B9D621C3F7A5141E41A7385B4895441F3A6356A407A5141D39A1CDFB589544162EB0472407A5141A3C432E7B5895441C6DA85AC417A5141CC74043EB78954418923136A437A514172ECAE23B989544170CF7395467A5141453F032BBD895441C54EC36E477A514106C1F451BE8954414B6568DE497A514163EC64A0C18954413D0AD7D34B7A51418FC2F548C489544119E0D5B94D7A51419897E814C7895441F610BED54D7A5141011F053EC789544102909FC74E7A51415A5459A2C8895441617F8441517A5141C80D2D48CC8954413E932E34537A5141C1B46122CF8954414CAA8D47557A5141499807DFD1895441E8999315577A5141F6C93C40D4895441B714B728597A5141DD1394FCD68954413D0AD7335A7A5141CDCCCC5CD8895441906E88535B7A51416D188DDED9895441489DDAB1617A514130648E68E2895441B25E2615637A514114CFF344E48954416173ECC5637A5141E670FA31E589544133DC6EC5647A5141458D9388E68954419E034ED9647A5141D6A038A3E6895441EBF3B301667A5141DA69B92CE889544175F7304C667A5141D2AA8091E8895441279452E1687A5141737870E9E589544148E17A04697A514152B81EC5E5895441BA3E7D8D697A5141AA831752E5895441E65FDFDE667A51416C8BE195E1895441BE9578F0637A51418415C08CDD895441729280E1627A51419F8B0915DC89544103436559617A5141BFF9A5F6D989544120CFD1B55F7A51410FB185B7D7895441334C91355F7A51410194A503D7895441E4791A4E5D7A5141C3B08562D4895441B266A4EE5C7A5141002E12E1D3895441CA1B3F105C7A51418DD3B1AAD2895441107D14125B7A51415695C54AD18954410743D24E5A7A5141FAD26036D0895441E351D384577A51413D177B4ACC895441828B950C567A51415B32B93CCA89544116E951D1547A5141A40C2876C8895441EDA7A0F4537A51418BA7DB1FC7895441CC54634B537A514115D7702AC6895441D723FFA8527A5141B5D00041C58954412BE162A8517A514194CE15CBC3895441FA713F9A517A5141682B56B6C389544169209AFA4E7A5141064428E4BF8954418E432A1F4E7A5141EE2CBBACBE8954417895848A4D7A5141455A3BEEBD8954414441BE4C4B7A5141C9ADE80EBB8954411E005013497A514178252E34B8895441E310F675477A514136C2C61CB689544143356B69457A514129BAD187B3895441C3EC5886447A5141F7BC53A2B2895441C0194617437A514125EED645B18954412BBB58B9427A51413F0CABECB08954413AADFC3D3D7A5141F8F1F0E7AC895441C82BBF1C3A7A5141D60C06BEAA895441C146F146387A5141C7713C79A9895441CCC86F01357A5141C14B3F36A78954416E8D5F17317A514124DF7E81A48954416F38E564307A5141B6FE1B06A48954412FA3B73A2F7A5141E1AAF837A38954419C85162F2B7A5141DAD6A76CA089544109664F4F287A51415BEE76CB9E8954414D32553C257A5141C2CD37229F895441F9D30AFC227A5141DE9750E29F895441DA2725C8207A5141AF4CC10BA1895441D0E893A21D7A514133719260A289544111778E2A1B7A5141491564A3A2895441AEF8271E1B7A5141D6932CA4A289544168C1365A197A51411EC5B7C0A2895441906FBF39177A5141D5932B7DA2895441DA104B0D167A5141112BE557A289544166666606167A5141713D0A57A2895441D2F368E6147A51418CC0D7FEA18954412A657BC00D7A5141E41238D69F8954417F89D386067A5141A4A1EB249F8954416962EEAD027A51418F7995339F895441749C197F017A514157A3F3CCA18954414B958322017A51417A97C3BAA2895441C4AF1C3A047A514107870B13A389544108F0EF8C047A51419B78241BA3895441ACF7C0D1087A51411136DF9DA38954417E2C2D94097A5141FF4421B5A389544180A56DA8097A5141D8778DB7A3895441E167DDC2097A5141A4D4C0BCA3895441893F0E510E7A5141B9F62AA2A4895441E452FAA2127A5141818B2DA3A5895441F9034F50157A5141259FA53FA68954419125B85B157A514165BABA41A689544185C485E4167A51416E7E6A89A689544135093C05187A51412E1E1BBEA6895441DF185B29187A5141E1B4B2C4A68954419945D43D1A7A5141CEB93B17A7895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3170132 - 1132600
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000050000003201000033333303CC4251410AD7A310FC295441F6285C0FC642514114AE47D1F72954417B14AE37C34251417B14AE07F6295441000000D0C04251417B14AEF7F5295441E17A148EBF4251418FC2F538F6295441C3F5285CBD425141666666C6F62954415C8FC215B9425141F6285C0FFF2954419A999949B042514148E17A24FE295441713D0AE7AE425141EC51B8BE102A54415C8FC215B8425141333333C31A2A5441333333F3B542514185EB5138212A544133333303B4425141C3F528AC272A5441666666D6B5425141713D0A57292A5441AE47E18AB6425141333333332A2A54417B14AEF7B74251411F85EB812A2A5441E17A141EBA42514148E17A24252A544114AE4761BC4251413D0AD7831F2A5441EC51B85EBE425141000000601E2A5441B81E859BBF425141F6285C4F1E2A5441F6285C5FC0425141F6285C8F1E2A544133333343C14251411F85EBF11E2A54419A9999C9C1425141295C8F721D2A5441AE47E10AC3425141333333F31A2A54413D0AD783C7425141E17A149E1A2A54417B14AE67DC42514152B81E75062A54410AD7A3A0EE425141A4703D6AF8295441E17A142E1E4351419A999989CF295441666666B60943514100000060B92954419A999929FE42514100000000B8295441EC51B8CEF7425141713D0A27B3295441F6285C2FF94251410AD7A340AE2954411F85EB51F7425141295C8F62AC29544100000000F442514114AE47A1AD295441F6285C0FF0425141A4703D1AAA295441D7A370BDEC4251411F85EB01AD295441E17A14FEE24251417B14AED7A229544114AE47E1DF42514114AE47C19A295441AE47E10ACE425141C3F5283C8C295441AE47E17AC4425141000000908029544148E17A74B2425141A4703DEA75295441AE47E1BAB242514185EB51D871295441A4703D8AB34251417B14AE076E295441C3F5281C9B425141F6285CAF62295441C3F5286C96425141333333B35E2954413D0AD7D397425141D7A3703D5C29544166666616844251419A9999D9412954415C8FC265834251411F85EB4141295441E17A14FE824251417B14AED73F295441E17A146E82425141333333A33D295441CDCCCC3C8242514185EB51B83B295441A4703D9A8242514114AE47F13A295441C3F528DC82425141B81E854B3A2954411F85EB61834251410AD7A36039295441713D0A578442514148E17A8438295441295C8F1287425141000000503729544114AE4781884251411F85EB7136295441AE47E1DA894251413D0AD7733529544148E17A948B4251415C8FC2A5342954417B14AEA78C425141AE47E1FA33295441EC51B88E8D4251413D0AD773322954410AD7A3B08E425141F6285C1F312954411F85EB718F42514148E17A2430295441B81E85BB8F42514152B81EC52E2954411F85EB0190425141295C8F522D295441F6285C7F90425141A4703D9A2C2954417B14AE7791425141713D0A072C295441713D0A7792425141000000402B295441713D0AE7924251415C8FC2452A295441B81E85BB924251419A99990929295441EC51B80E92425141EC51B82E27295441AE47E1CA90425141E17A147E232954413D0AD7A38F425141D7A3703D21295441B81E85EB8E4251419A9999B92029544148E17A548E4251419A99995920295441333333538C425141713D0A172029544152B81E9589425141A4703DAA1F2954415C8FC2458942514152B81EF51E2954410000007088425141295C8F221C295441295C8F62884251418FC2F5D81A29544185EB51E887425141C3F528FC192954419A999969864251417B14AE2719295441B81E853B854251417B14AE37172954411F85EB81844251413333331316295441713D0A57844251419A9999C91829544148E17A04834251411F85EBC11929544185EB51A8824251415C8FC2F51A295441EC51B8BE81425141B81E850B1C29544100000060754251418FC2F598232954415C8FC2E567425141713D0AE716295441CDCCCC0C5B425141EC51B8AE112954413D0AD7D35A42514114AE472113295441666666C65942514148E17A34172954418FC2F52859425141D7A3708D1929544185EB51B8584251419A9999491B29544185EB515858425141000000601F295441B81E85BB57425141CDCCCCDC202954410000009057425141E17A14EE222954410AD7A310564251413D0AD77327295441333333835542514185EB51B827295441A4703DFA544251410AD7A35028295441295C8F9254425141C3F528BC29295441AE47E13A544251413D0AD7532A2954411F85EBD1534251415C8FC2752A2954415C8FC2E5524251417B14AE972F2954415C8FC235524251410AD7A3B033295441CDCCCCDC514251410AD7A3D03429544114AE471151425141B81E85DB34295441666666564B425141AE47E1AA3C2954411F85EBD14B425141295C8F62422954417B14AE574C425141AE47E1CA45295441333333B34C4251415C8FC2154729544148E17A2450425141CDCCCC5C462954413D0AD7E351425141000000D046295441CDCCCCDC53425141C3F528AC482954413D0AD7C3544251413D0AD7234A2954415C8FC24555425141E17A140E4C29544148E17A54554251418FC2F5F84D295441CDCCCC9C5542514148E17A04512954417B14AEC75542514148E17A5453295441CDCCCC2C564251418FC2F5785529544185EB51E8564251417B14AEA756295441713D0A8757425141713D0AD7572954410000006058425141295C8F925829544185EB5138594251415C8FC27558295441666666B65842514100000080572954410AD7A330574251415C8FC2955529544185EB51E856425141333333F3532954410AD7A3305742514114AE472151295441F6285CCF57425141713D0AE74C295441F6285CCF57425141D7A3700D482954411F85EBE1584251419A999999432954417B14AEA758425141B81E85CB412954415C8FC29557425141B81E857B3F295441A4703D8A5442514185EB51B83C295441EC51B8CE53425141CDCCCC6C3B29544114AE47915242514152B81EF5392954417B14AE97504251413D0AD7B337295441B81E850B514251410AD7A34037295441E17A143E5342514133333373392954417B14AE37554251413D0AD7533C29544114AE47515842514185EB51083F2954419A99992959425141F6285C7F4029544152B81EE5594251413D0AD7A3422954419A999929594251415C8FC2054629544148E17AC45842514114AE471149295441666666B65842514152B81EF54C29544148E17A34584251413333331351295441AE47E1FA5742514114AE477153295441295C8F42584251411F85EB21552954410AD7A38059425141666666B65629544148E17A845A4251411F85EB7157295441000000D05B425141CDCCCC9C5729544114AE47815D425141CDCCCC9C57295441D7A3705D5F425141EC51B81E58295441CDCCCC1C614251415C8FC205592954413D0AD79362425141EC51B8DE59295441713D0A57654251410AD7A3605A2954419A9999F966425141F6285CFF5A295441713D0AF769425141000000B05C295441A4703DBA6C4251418FC2F5185E295441AE47E16A6E4251419A9999395F295441C3F5281C70425141B81E854B60295441CDCCCCCC71425141295C8FA26029544114AE47F173425141D7A370CD602954410AD7A3B075425141F6285CBF60295441B81E850B774251417B14AE475F2954410AD7A34078425141AE47E16A602954415C8FC2A57A425141D7A3707D62295441E17A144E78425141F6285C3F6429544100000060754251418FC2F518622954417B14AEE76F425141F6285C1F612954415C8FC2056E425141B81E85BB5F295441666666466C425141E17A147E5E295441B81E85CB6942514185EB51885D295441C3F5289C68425141000000B05C295441B81E85EB66425141C3F528AC5B295441713D0A5765425141C3F5281C5B295441CDCCCC6C6342514152B81EC55A29544185EB51D861425141333333435A295441CDCCCCCC5E425141295C8F92582954410AD7A3F05C425141D7A3702D58295441333333035E425141CDCCCC5C59295441A4703DEA5E4251418FC2F5385B2954411F85EB315F425141D7A3705D5D295441A4703DBA5F42514152B81ED55E29544152B81E4560425141D7A3700D612954411F85EBF160425141CDCCCCCC61295441B81E851B63425141AE47E15A642954415C8FC2F5634251410AD7A32066295441C3F5287C644251415C8FC2E567295441CDCCCC8C64425141C3F528CC6929544185EB512864425141C3F5287C6C295441333333C36342514114AE47916F29544148E17AD46342514152B81E9572295441CDCCCC8C64425141B81E851B772954413D0AD77362425141666666067C2954413D0AD7C35F425141295C8F627E295441F6285C0F5E425141295C8F1281295441B81E85BB5D425141666666B682295441295C8F525E42514185EB5138842954411F85EBA15F4251410AD7A3F0842954413D0AD77362425141000000E08429544152B81E5564425141E17A149E852954410AD7A390654251415C8FC2158629544185EB515867425141333333C386295441C3F5287C68425141C3F5283C87295441A4703D5A6842514114AE470189295441F6285C1F6A425141000000408A295441CDCCCC8C6C425141B81E852B8B295441713D0AC76A42514148E17A448D29544114AE47F168425141295C8F728E295441CDCCCC3C674251413D0AD7938E29544185EB51D8624251417B14AE378C2954417B14AE1760425141C3F5283C87295441666666A65E4251417B14AE878529544152B81E355D42514185EB5138842954410AD7A3D05C42514152B81EA5822954411F85EBF15C4251413333332381295441295C8F525E425141295C8F627E295441000000D0604251417B14AE277C2954410AD7A33062425141666666B67A295441F6285C6F63425141C3F5282C772954410AD7A38063425141AE47E1BA7529544185EB51D8624251413D0AD773722954418FC2F5E862425141EC51B85E6F2954411F85EBA163425141333333636A295441295C8FB263425141295C8FA2672954413D0AD7736242514148E17A2465295441C3F5287C604251415C8FC2956229544148E17AC45F425141713D0A67612954417B14AE875E425141C3F5285C5F29544152B81E855E4251410AD7A3D05D295441CDCCCC3C5E4251413D0AD7635B2954415C8FC2555D42514114AE47C159295441EC51B8DE5B425141F6285CAF582954413D0AD7F35942514114AE473159295441EC51B8FE584251416666669659295441713D0A87574251417B14AEF75829544114AE47015642514114AE47E1562954413D0AD7C354425141E17A148E53295441EC51B85E54425141EC51B87E4F2954410AD7A35054425141333333E34B295441AE47E1CA524251413333330349295441CDCCCC6C5042514185EB511847295441A4703D5A4F42514185EB5118472954413D0AD7F34C42514114AE4701482954418FC2F5084E425141E17A14DE4A2954410AD7A3904E425141D7A370CD4C29544152B81EA54E42514148E17A744F295441333333734E4251410AD7A3D051295441AE47E12A4D425141E17A14DE532954411F85EBC14A425141666666A655295441E17A147E47425141333333735729544114AE47114542514152B81E9558295441E17A141E43425141EC51B81E5F2954410AD7A3F043425141000000C060295441A4703DCA44425141E17A14BE61295441666666D6454251418FC2F56862295441000000E046425141713D0AC76229544152B81E6547425141F6285CDF63295441E17A14AE47425141CDCCCC4C6529544152B81E4548425141713D0AD766295441CDCCCCFC474251411F85EBD168295441F6285C6F4642514185EB51F867295441EC51B8AE45425141B81E85DB672954415C8FC215444251417B14AE87662954415C8FC205434251415C8FC205662954415C8FC2E541425141AE47E10A662954410AD7A3303F425141AE47E11A672954418FC2F5E83D425141EC51B8FE67295441D7A3703D3C425141E17A148E69295441A4703DEA3A4251413D0AD7736B29544166666676394251415C8FC2956E2954418FC2F5F837425141C3F5285C72295441EC51B82E374251418FC2F528752954413D0AD7A338425141CDCCCC9C76295441C3F528CC38425141295C8F42782954411F85EBC13842514152B81EA57929544114AE4741384251410AD7A3007B295441D7A3708D374251410AD7A3607C295441E17A14EE35425141EC51B85E7D295441666666F63442514152B81E057E29544148E17A4434425141F6285C8F7E295441EC51B89E334251410AD7A3607F295441666666463342514185EB51188029544100000040334251410AD7A330812954417B14AE073342514148E17A74842954410AD7A36032425141CDCCCC0C8829544148E17AE4314251417B14AEA78A29544152B81E65314251417B14AE278F2954419A999919324251411F85EBA1902954419A9999A93242514185EB51589229544148E17A143342514185EB515894295441CDCCCC3C33425141295C8FC29529544148E17AB433425141F6285CFF96295441F6285C3F34425141295C8F9298295441EC51B8DE344251410AD7A36099295441713D0A0733425141295C8FD29B295441A4703D4A314251418FC2F5989D295441A4703DCA2F4251418FC2F5589D2954417CAC924ED542514145AAC115DF295441A4703D0AD642514185EB5128EE29544148E17A94D74251418FC2F5B8F1295441F6285C7FD3425141C3F5280CF5295441E17A146ECE42514152B81E25FC29544133333303CC4251410AD7A310FC29544107000000436E72E2AE425141C55EEF9682295441467A5920B2425141D42500DA7D2954418A23DD9ABA425141D42500DA7D2954416C95BB14C4425141C55EEF9682295441EAC30D50CB4251416B3F18128A2954418A23DD9ABA425141C4C77A4B94295441436E72E2AE425141C55EEF96822954410700000028E9B2F035425141FD4C490C932954415B864F2D3B42514134DB6A928929544119523EA54742514161309D5B7B29544176E6871C554251416E60395388295441AC5F6F9F5042514151D217CD912954417A5947AE39425141A22D72879A29544128E9B2F035425141FD4C490C9329544109000000AA773D1B574251416DA43D053B295441C66EEA555F425141E85D1D4E2D295441E265979067425141437DF4D225295441A13186087442514192E1A152262954411B54F10578425141F281D20737295441088A4C4A714251412AD145843C295441EC929F0F69425141F3575E01412954413A7987D75C42514100B26EFF43295441AA773D1B574251416DA43D053B29544108000000526DA099594251414125973553295441FEE7D1D85A4251411F9D34FC48295441A63D6D46774251411B914DBE452954412060D8437B42514129C1E9B5522954416AC1F14A70425141A66823745529544138EB655166425141208B8E71592954410615DA575C42514145317E7356295441526DA099594251414125973553295441
+</a>
+
+<b>
+01060000000100000001030000000500000064010000C7E5834C9D425141910F95B3632954411B1561EFA6425141DF172A2D68295441A4703D8AB34251417B14AE076E295441C4E7B78FB6425141ED28C63B71295441105C15FFB94251415B4E79AE712954413617953CBC4251410ED879336D2954413515F330BB4251417AF746836A295441ECA81DF0BB4251410ACCADED66295441EFB0A51EC042514176EB7A3D64295441F2B82D4DC4425141BB4D26445E2954415FDA9CA8C24251412363C95956295441D413A48FCD4251418D7E529251295441B770BCDDD74251411D555B084F29544100DD911ED74251418870E4404A2954413F2F2DC8C8425141876E42354929544161E082CBC5425141153F658843295441713D0AE7C1425141333333A34029544100000030C2425141D7A3705D40295441713D0AC7BB4251416666664630295441EC51B89EBB425141D7A370AD2C295441AE47E11ABF425141D7A3706D262954411F85EBD1C3425141D7A3706D262954413D0AD7A3C642514148E17A6429295441713D0A37C742514152B81E752D2954411F85EBC1CD4251413D0AD7F32D295441CDCCCC9CD742514148E17A442A29544114AE4791EF4251413D0AD72331295441EC51B8CEFE4251417B14AEA73229544166666656FF425141AE47E15A2B295441666666960043514185EB51D8202954417B14AEC700435141713D0A771F29544185EB5128E3425141000000E01B295441CDCCCCBCDF425141713D0A871A295441713D0A07DC425141B81E857B17295441C3F5282CD74251413D0AD7D314295441A4703D1AD2425141295C8F3213295441CDCCCCCCCE425141000000F012295441EC51B8DEC742514148E17A441129544185EB5128C5425141666666B60F2954419A9999F9C342514114AE47410C2954417B14AEE7BE4251411F85EBF108295441713D0A37BD425141666666C608295441E17A14CEB9425141D7A370FD032954415C8FC295B6425141D7A370EDFA28544148E17A24B9425141D7A370ADFB28544148E17A74BE42514114AE4781FE285441AE47E11AC342514114AE47D1FF2854419A9999A9C5425141AE47E1CA00295441EC51B86EC642514152B81ED5FF2854411F85EB71C6425141713D0A07FE2854413D0AD723CB4251419A9999190329544114AE4701CC425141C3F5286C072954419A999949CC4251413D0AD7930C2954417B14AE07CF4251418FC2F5B80E295441B81E851BD64251410AD7A3300F295441CDCCCC4CE2425141B81E850B142954418FC2F578E74251411F85EBF113295441CDCCCCECEE425141713D0A7715295441AE47E1CAF44251419A9999B90D295441666666F6EC4251417B14AE17072954411F85EBC1EC4251415C8FC27506295441295C8F52ED4251411F85EBE105295441295C8FB2EF425141295C8F82062954419A999989F6425141B81E854B0B29544185EB51E8FC425141295C8F02032954415C8FC215E74251415C8FC235F728544185EB5168CC4251410AD7A340E728544152B81E45CF425141EC51B89EDF28544114AE4781CF4251413D0AD7A3DB2854417B14AEC7D342514148E17A84D82854419A9999A9D6425141E17A142ED9285441C3F5282CDB42514100000060D6285441295C8FD2E242514133333353DA285441000000B0E8425141000000B0D8285441F6285CDFF7425141666666C6DD285441AE47E15AFA425141713D0A17E3285441F6285CCFFC425141295C8F52E42854417B14AE37164351418FC2F558E5285441295C8FD2184351410AD7A320DE2854411F85EB611B435141A4703D4AD928544148E17A341C435141B81E856BD72854418FC2F5381D435141666666A6D42854410AD7A3001E435141666666C6D22854415C8FC255204351410AD7A350CE2854419A9999292143514148E17AA4CC285441AE47E1EA21435141B81E855BCA28544185EB511822435141AE47E17AC82854419A9999591743514148E17AE4C4285441A4703DFA0F435141713D0AE7C4285441EC51B8FE0643514152B81ED5C12854417B14AEB70243514114AE4701BE285441B81E857BE8425141F6285C3FB528544185EB51D8B0425141EC51B81E98285441CDCCCCEC9C4251417B14AE57AA28544114AE47F190425141D7A3704DB5285441D7A370BD814251415C8FC235C3285441E17A147E804251419A999959C42854413333333382425141EC51B8EEC9285441B81E857B81425141C3F5283CCD2854418FC2F518804251418FC2F578CE2854411F85EBA17E4251411F85EB61CE28544114AE47717C425141EC51B80EC8285441C3F5286C77425141666666A6CC285441CDCCCCBC62425141295C8F92DF285441B81E852B6A42514152B81EB5E9285441B81E85EB794251410AD7A330FF2854415C8FC2457B42514100000040002954418FC2F5887F425141713D0A97032954415C8FC2E580425141B81E85EB032954418FC2F50882425141333333A30329544148E17A248442514185EB511802295441C3F5285C88425141E17A148EFD285441AE47E19A8E425141EC51B89EF928544152B81E7592425141A4703D0AF8285441295C8F2295425141A4703D0AF82854413D0AD75399425141F6285C9FF928544185EB51C89B425141E17A148EF9285441000000609D42514148E17AE4F82854410AD7A3809E425141333333C3F7285441F6285C7F9F425141A4703DEAF328544148E17AD49F425141A4703D9AEF2854413D0AD7E3A0425141713D0A37ED285441EC51B8BEA3425141F6285C5FE8285441C3F528ACA44251417B14AEB7E528544152B81E45A5425141295C8F92DA285441713D0A57A4425141EC51B83ED9285441A4703DCAA642514152B81E15D62854417B14AED7AA425141F6285CDFD328544114AE47A1AD42514152B81E35D3285441000000E0B14251410AD7A3E0D2285441295C8F32B4425141C3F528ACD32854415C8FC2A5B74251419A9999A9D528544100000080BA4251415C8FC265D528544148E17AE4BB42514133333363D72854419A999939BC4251410AD7A360D9285441295C8FD2BC4251419A9999F9D9285441C3F5287CBD4251417B14AED7D9285441CDCCCCACBF425141F6285C2FD82854415C8FC245C0425141E17A140ED7285441CDCCCCECC2425141EC51B86ECE285441A4703DEAC24251410AD7A370C9285441EC51B80EC34251417B14AE97C8285441713D0A97C342514152B81E55C7285441713D0AE7C7425141C3F5286CC2285441D7A3706DC94251417B14AEF7BF285441000000B0CA42514133333353BB2854417B14AE37CB425141B81E856BB5285441333333E3CA42514114AE47C1B428544185EB5128CA42514166666616B52854410AD7A390C8425141F6285CBFB62854411F85EB81C64251417B14AE77B9285441295C8F72C542514114AE4721BA2854410AD7A340C442514152B81E65BA2854415C8FC245C04251417B14AE77B92854411F85EBB1BB425141295C8F12B8285441EC51B86EBA425141295C8F12B8285441A4703D0AB94251418FC2F578B8285441C3F528DCB4425141E17A14FEBA285441713D0A07AE425141295C8FB2C028544185EB5108AD425141AE47E13AC128544185EB51F8AB425141B81E854BC12854418FC2F5E8AA4251413D0AD7C3C0285441295C8F82AA42514114AE4781BF285441713D0AC7AA425141AE47E1DABB285441CDCCCC1CAA4251410AD7A300B92854411F85EB71AA4251418FC2F568B72854415C8FC2C5AB425141A4703D5AB5285441295C8FA2AC425141D7A3707DB4285441000000A0AE425141C3F5284CB3285441F6285CAFAF425141A4703D1AB2285441C3F5288CB0425141666666C6B0285441E17A14BEB1425141713D0A97AD28544148E17A44B34251417B14AE77AB285441EC51B8BEB6425141A4703DEAA82854415C8FC2A5B7425141EC51B84EA728544185EB5188B84251415C8FC2E5A028544100000090B642514185EB51A8A0285441295C8FE2B6425141C3F5285C9D285441AE47E12AB9425141F6285C7F9D28544114AE4741B9425141666666D6A02854410AD7A360B8425141CDCCCC7CA72854411F85EB61B7425141713D0A47A928544114AE4731B5425141295C8F22AB285441D7A370DDB3425141295C8F32AC285441AE47E19AB2425141E17A140EAE2854418FC2F568B1425141B81E851BB1285441E17A14AEB0425141F6285C6FB2285441D7A3708DAF425141295C8FC2B3285441D7A3705DAD42514148E17AF4B4285441666666D6AB425141CDCCCC9CB6285441D7A3703DAB425141B81E859BB7285441AE47E10AAB425141B81E85ABB8285441295C8F92AB4251419A9999C9BB285441D7A3703DAB425141CDCCCC3CBF2854413D0AD7A3AB4251417B14AEF7BF285441EC51B85EAC425141EC51B86EC0285441D7A3705DAD425141AE47E12AC02854413D0AD7F3AF425141A4703DFABD28544148E17A94B7425141295C8F12B82854418FC2F508BA4251413D0AD713B7285441295C8FC2BB42514152B81E25B728544166666676C242514166666666B928544148E17A84C4425141A4703DAAB9285441295C8F72C542514152B81E55B928544152B81EB5C64251411F85EB01B82854419A999919C8425141000000C0B5285441713D0A17CA42514148E17AE4B3285441713D0A27CB425141295C8FC2B328544152B81E15CC425141B81E855BB4285441AE47E17ACC42514152B81E15B6285441C3F5287CCB4251417B14AEA7BB28544185EB5128CA425141CDCCCC4CC02854411F85EBA1C842514114AE47C1C22854419A999959C4425141C3F5282CC82854419A9999C9C3425141D7A3700DCA28544148E17AF4C342514185EB5198CE28544133333323C1425141B81E850BD8285441295C8FB2BF425141C3F528CCD92854411F85EBA1BD425141C3F528CCDA2854410AD7A3D0B8425141CDCCCC1CDD28544100000000B7425141D7A370DDDE285441000000C0B6425141E17A142EE028544100000040B7425141EC51B80EE328544114AE47D1BB42514133333393EF28544114AE47B1BB4251413D0AD763F128544114AE4701BB42514148E17A34F32854410AD7A3E0B942514152B81EA5F42854410AD7A370B842514152B81EA5F5285441CDCCCC0CB44251417B14AE87F72854411F85EB11B342514166666646F8285441A4703D6AB24251418FC2F548F92854417B14AE07B2425141E17A14BEFA28544100000000B2425141333333D3FD285441295C8F92B142514185EB51E80429544133333303B34251419A9999C90529544114AE47D1B24251415C8FC26507295441B81E85ABB24251418FC2F57808295441713D0A67B1425141C3F5286C08295441A4703D5AB1425141333333730C295441EC51B8BEB2425141C3F5281C11295441666666F6B242514185EB514813295441CDCCCCFCB34251410AD7A310172954417B14AED7B3425141333333431B295441EC51B82EB3425141AE47E1BA20295441EC51B82EB342514114AE47C12229544114AE4761B44251416666669626295441295C8FB2B54251419A999919292954417B14AED7B54251411F85EBE129295441EC51B8BEB54251417B14AE772A29544185EB5148B542514114AE47712B295441EC51B82EB442514114AE47912C295441D7A3706DB2425141295C8F522E295441E17A147EAF425141AE47E10A33295441666666D6AD425141A4703D5A3529544152B81EF5AB425141CDCCCC2C3929544100000070AB42514148E17A543A295441713D0A47AB425141C3F5283C3B295441CDCCCC4CAB4251415C8FC2453D295441EC51B81EAB425141713D0AC73E2954411F85EB91AA425141295C8F4241295441B81E85CBA9425141A4703D8A43295441AE47E14AA8425141713D0AF7462954418FC2F5F8A74251415C8FC20549295441AE47E12AA84251411F85EB614D29544166666616A84251411F85EBD14E29544148E17AC4A7425141B81E85DB4F2954418FC2F568A6425141C3F5282C52295441AE47E14AA5425141295C8FE25429544152B81EE5A44251417B14AE4757295441E17A140EA44251413333332357295441295C8F82A44251410AD7A3B05429544148E17AA4A54251415C8FC2D551295441F6285C0FA742514148E17AA44F2954415C8FC265A7425141666666B64E2954413D0AD783A7425141333333434D29544166666636A742514152B81EF54829544114AE4761A74251415C8FC2E546295441666666E6A8425141295C8F92432954413D0AD7D3A9425141EC51B80E412954415C8FC265AA425141CDCCCCAC3E295441B81E858BAA425141F6285C2F3D295441EC51B87EAA425141000000103B295441713D0AB7AA425141666666163A295441A4703D3AAD42514148E17A34352954418FC2F508AF425141D7A370BD32295441A4703DEAB1425141B81E85FB2D29544100000080B2425141333333332D29544148E17A54B4425141E17A147E2B29544114AE47D1B44251418FC2F5C82A295441C3F5281CB5425141713D0A072A29544100000010B54251415C8FC24529295441AE47E1CAB34251418FC2F538272954419A999909B3425141A4703D6A25295441E17A144EB24251419A9999F922295441EC51B82EB24251413D0AD7D32129544152B81E35B2425141E17A143E2029544114AE47D1B2425141D7A3703D1B2954417B14AED7B2425141E17A14FE1629544133333303B2425141666666A613295441713D0A67B1425141000000A01229544133333373AF4251413D0AD77312295441CDCCCC6CAF425141713D0AF70F2954413D0AD753AF42514148E17AC40E2954415C8FC235AE425141C3F5284C0B295441AE47E15AA6425141C3F528BC0D2954415C8FC255A3425141F6285CDF032954410AD7A330AD4251415C8FC2D500295441295C8F02AF425141AE47E1BA06295441AE47E1EAAF42514114AE472106295441F6285C2FB0425141713D0A17052954417B14AEC7B0425141B81E854B0229544148E17A04B14251417B14AE67F928544148E17AA4B14251417B14AE27F8285441F6285C9FB2425141E17A140EF72854410AD7A370B74251413D0AD7C3F42854410AD7A370B942514148E17A74F328544114AE4771BA4251413D0AD7B3F128544114AE47C1BA42514133333313F0285441000000C0B7425141000000E0E6285441000000F0B6425141000000C0E5285441EC51B89EB4425141F6285C0FE4285441E17A14DEB1425141F6285C3FE3285441C3F528DCAC425141EC51B83EE2285441B81E85ABAA425141EC51B85EE2285441A4703D0AA7425141F6285C3FE4285441A4703DFAA542514100000020E62854419A999949A54251410AD7A3A0E82854418FC2F508A2425141295C8FB2ED28544185EB5108A1425141333333D3EF28544185EB51E8A042514148E17AF4F32854417B14AE479F42514166666676F92854417B14AE579E425141713D0A77FA285441713D0A479C425141713D0AF7FA2854415C8FC21599425141713D0AD7FA28544152B81EC594425141295C8F22F928544148E17A949242514114AE4741F9285441000000608F42514133333383FA285441295C8F0289425141CDCCCC7CFE28544152B81ED5844251410AD7A33003295441333333B3814251418FC2F54805295441CDCCCC2C8C425141D7A3707D0D295441A4703D9A95425141000000E014295441AE47E1AA984251416666664617295441D7A370CD9942514185EB51082A29544166666616844251419A9999D94129544171EAE5D197425141B40CD7405C295441B52D748896425141CAE640CB5E295441128EFA989A4251412BFB344162295441ABAD5D3E98425141FBB9FB845D29544101E18F649E425141373710B65B29544155ACC07B9F425141201916C25C295441A877F192A042514174E446D95D295441BE95EB869F4251410AECD1CF5F2954416549102C9D4251416CE9D83163295441CFA349ED9C42514136092F8463295441C7E5834C9D425141910F95B36329544126000000C3F5281C7B425141EC51B8BEFB285441C3F5281C7B425141EC51B84EFA285441EC51B89E7A42514152B81E75F9285441AE47E1CA774251410AD7A380F828544152B81E2576425141AE47E1DAF728544148E17A6475425141000000E0F6285441666666D674425141713D0A07F1285441D7A3708D72425141000000D0EC2854413D0AD7936F425141A4703D1AEA285441D7A370DD6E42514100000080E728544148E17AA46F42514133333373E4285441CDCCCC5C70425141CDCCCC2CE3285441713D0A077242514148E17AB4E12854410AD7A320724251413D0AD7F3E028544152B81EF56E425141295C8F12DB285441CDCCCC5C7042514148E17AA4D7285441CDCCCC1C714251417B14AE37D72854411F85EB4172425141E17A140ED7285441C3F528EC73425141CDCCCC3CD62854411F85EB017842514152B81E45D1285441295C8FF27A425141B81E85FBD3285441AE47E18A79425141A4703D7AD7285441333333B37942514185EB51D8D82854419A9999297A4251413D0AD7C3D92854413333336372425141A4703DAAE32854415C8FC275704251418FC2F528E7285441666666867042514133333383E92854413D0AD72373425141295C8F52EC2854417B14AEA775425141D7A370DDF0285441CDCCCC1C7642514100000020F62854413D0AD7C376425141A4703D0AF7285441CDCCCC6C7A42514100000050F82854410AD7A3807B425141A4703D3AF9285441C3F528CC7B42514152B81E35FA285441C3F528CC7B425141F6285CCFFB28544114AE47D17A42514152B81E85FE28544114AE47217A425141AE47E14AFE285441C3F5281C7B425141EC51B8BEFB2854410500000085EB51A8C1425141E17A144EDD285441C3F5280CC1425141AE47E16ADF285441B81E85CBBF425141AE47E10ADF285441C3F5286CC0425141713D0AF7DC28544185EB51A8C1425141E17A144EDD2854410A00000048E17AE4A8425141295C8F82232954410AD7A380A64251413D0AD71328295441F6285C7FA242514148E17A142A2954410AD7A300A04251410AD7A39026295441666666F69B425141EC51B8EE25295441C3F528BC9C4251413D0AD7C31E295441C3F528ACA24251419A9999691C29544166666676AF42514148E17A74222954418FC2F5D8AD42514152B81E052529544148E17AE4A8425141295C8F82232954410A0000000AD7A3D09C42514166666676E3285441AE47E18A9B425141713D0AA7E4285441D7A370BD9842514185EB5158E328544152B81E258A4251413D0AD7F3D42854417B14AE17894251413D0AD743D328544185EB5198894251419A999979D2285441C3F528AC8B42514152B81EF5D2285441B81E859B934251413D0AD763D8285441AE47E18A9B425141D7A3705DE02854410AD7A3D09C42514166666676E3285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974276 - 974251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000310BED16EE8E50416A98EB27CB2754413421B78AF28E5041BD94F469CA27544119C42C32F58E5041F14EB6F8C927544125AC9104F98E50413AD25345C9275441CC908FB3F98E504174B4EA75C6275441D34216A7F68E50415E12E22CC3275441EF074A5AF18E5041E87813AFBE275441A5DC1014F08E50412841B99EBD27544144602762EA8E504182BCB80BBA275441D6B8295FE38E5041C8493C38B52754415B3067F9DE8E5041CBEE0FA4B52754419F40D4CDDC8E5041FF4D1E28C727544122DBE0C3D78E5041E806F736C92754416C00DD80A68E5041A037937CC82754417988AFD3928E50419BF70923C8275441353F2128968E504172830419D3275441ECECF72DA58E50415E8B1051D0275441F3616C8CA78E5041C50906E2CF275441AF8E6DA6AE8E504113D324FBCF275441A6B56BA4C28E5041CA0F6242D0275441BF835D54CF8E50410FA6976FD02754411C9712DBD08E5041DFE00775D02754418FBF9B63CE8E5041E34BEE75C92754411532FA90CF8E50413D05A77FC92754413DB260B8D18E504142144027D0275441628B3694D68E50410E030A13CF27544124897503E28E5041112E2A2BCD275441281F4A53E58E50411415DC9DCC2754413CD0162FE88E504141A2E423CC275441A57C920AEB8E50412AB0FAA9CB2754415DFAF866EC8E50413A9BE96FCB2754419A16082CED8E504133C1114FCB275441310BED16EE8E50416A98EB27CB275441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000DA53960BD38E50410587CEA9D3275441295C8FC2D38E5041AE47E13AD5275441CDCCCC3CD78E504185EB5158D4275441F6285CFFDE8E504148E17AE4D227544114AE4731E08E50415C8FC2A5D22754413D0AD7B3E58E504152B81E85D127544100000000F18E504185EB5138D12754418FC2F508F88E504114AE4791D0275441E17A143EF98E5041CDCCCC4CD02754419A9999A9F58E5041B81E852BCD275441EE660D4BF58E504178DE90F4C9275441254DB8D1D48E50416F0D1F5ECF27544140B260B8D18E504140144027D027544185EB5108D28E504166666636D127544100000030D58E504166666676D02754419A999979D58E5041C3F528CCD127544133333393D28E50411F85EBA1D227544160DACBF2D28E504194297773D327544161364A33D28E5041ADB0496DD32754415C8FC225D18E504152B81E15D12754410DCC650DD18E5041354AD3C8D0275441CF2B6CFAD08E5041E7967775D0275441E7095D8DA78E504171F9D9E1CF27544154C31FEF968E504155F4CBECD2275441353F2128968E504172830419D3275441A4703D1A988E50410AD7A380D9275441C3F528FC9C8E5041D7A370ADD8275441A4703DAA9D8E50418FC2F5E8DA275441EC51B83EA28E5041000000A0D92754413D0AD7D3A18E50410AD7A320D72754417B14AE17A28E504100000080D5275441295C8FF2A38E504185EB5188D3275441CDCCCC9CA58E50415C8FC265D227544133333373A88E5041D7A370ADD1275441E17A147EAA8E5041D7A3705DDB2754411F85EBA1A68E50418FC2F558DC2754411F85EB71A68E504148E17AF4DC275441713D0A97A48E504185EB5168DD27544100000070A48E50413D0AD733DE2754411F85EB31A58E5041F6285CDFE12754411F85EB31A58E5041E17A14BEE2275441CDCCCC8CA68E5041F6285C1FE3275441B81E85FBAA8E504152B81E15E2275441F6285CFFAC8E50417B14AE97E1275441AE47E10AB68E5041333333F3DE2754418FC2F5C8C18E5041B81E85FBDA2754411F85EB71C48E5041AE47E1CAD9275441E17A149EC48E5041B81E850BDA2754411F85EB31CA8E5041C3F528FCD7275441B81E85EBD08E50413D0AD7F3D527544184B7CF54D28E50413C43CE90D52754412337A349D28E504138B55FF3D3275441DA53960BD38E50410587CEA9D3275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974276 - 1822773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000310BED16EE8E50416A98EB27CB2754413421B78AF28E5041BD94F469CA27544119C42C32F58E5041F14EB6F8C927544125AC9104F98E50413AD25345C9275441CC908FB3F98E504174B4EA75C6275441D34216A7F68E50415E12E22CC3275441EF074A5AF18E5041E87813AFBE275441A5DC1014F08E50412841B99EBD27544144602762EA8E504182BCB80BBA275441D6B8295FE38E5041C8493C38B52754415B3067F9DE8E5041CBEE0FA4B52754419F40D4CDDC8E5041FF4D1E28C727544122DBE0C3D78E5041E806F736C92754416C00DD80A68E5041A037937CC82754417988AFD3928E50419BF70923C8275441353F2128968E504172830419D3275441ECECF72DA58E50415E8B1051D0275441F3616C8CA78E5041C50906E2CF275441AF8E6DA6AE8E504113D324FBCF275441A6B56BA4C28E5041CA0F6242D0275441BF835D54CF8E50410FA6976FD02754411C9712DBD08E5041DFE00775D02754418FBF9B63CE8E5041E34BEE75C92754411532FA90CF8E50413D05A77FC92754413DB260B8D18E504142144027D0275441628B3694D68E50410E030A13CF27544124897503E28E5041112E2A2BCD275441281F4A53E58E50411415DC9DCC2754413CD0162FE88E504141A2E423CC275441A57C920AEB8E50412AB0FAA9CB2754415DFAF866EC8E50413A9BE96FCB2754419A16082CED8E504133C1114FCB275441310BED16EE8E50416A98EB27CB275441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000DF53960BD38E50410187CEA9D3275441295C8FC2D38E5041AE47E13AD5275441CDCCCC3CD78E504185EB5158D4275441F6285CFFDE8E504148E17AE4D227544114AE4731E08E50415C8FC2A5D22754413D0AD7B3E58E504152B81E85D127544100000000F18E504185EB5138D12754418FC2F508F88E504114AE4791D0275441E17A143EF98E5041CDCCCC4CD02754419A9999A9F58E5041B81E852BCD275441F1660D4BF58E504175DE90F4C9275441234DB8D1D48E50416C0D1F5ECF2754413DB260B8D18E504142144027D027544185EB5108D28E504166666636D127544100000030D58E504166666676D02754419A999979D58E5041C3F528CCD127544133333393D28E50411F85EBA1D22754415FDACBF2D28E504198297773D327544165364A33D28E5041AEB0496DD32754415C8FC225D18E504152B81E15D12754410DCC650DD18E5041354AD3C8D0275441CD2B6CFAD08E5041E5967775D0275441E7095D8DA78E504171F9D9E1CF27544154C31FEF968E504155F4CBECD2275441353F2128968E504172830419D3275441A4703D1A988E50410AD7A380D9275441C3F528FC9C8E5041D7A370ADD8275441A4703DAA9D8E50418FC2F5E8DA275441EC51B83EA28E5041000000A0D92754413D0AD7D3A18E50410AD7A320D72754417B14AE17A28E504100000080D5275441295C8FF2A38E504185EB5188D3275441CDCCCC9CA58E50415C8FC265D227544133333373A88E5041D7A370ADD1275441E17A147EAA8E5041D7A3705DDB2754411F85EBA1A68E50418FC2F558DC2754411F85EB71A68E504148E17AF4DC275441713D0A97A48E504185EB5168DD27544100000070A48E50413D0AD733DE2754411F85EB31A58E5041F6285CDFE12754411F85EB31A58E5041E17A14BEE2275441CDCCCC8CA68E5041F6285C1FE3275441B81E85FBAA8E504152B81E15E2275441F6285CFFAC8E50417B14AE97E1275441AE47E10AB68E5041333333F3DE2754418FC2F5C8C18E5041B81E85FBDA2754411F85EB71C48E5041AE47E1CAD9275441E17A149EC48E5041B81E850BDA2754411F85EB31CA8E5041C3F528FCD7275441B81E85EBD08E50413D0AD7F3D527544183B7CF54D28E50413A43CE90D52754412737A349D28E50413DB55FF3D3275441DF53960BD38E50410187CEA9D3275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974276 - 4452545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000310BED16EE8E50416A98EB27CB2754413421B78AF28E5041BD94F469CA27544119C42C32F58E5041F14EB6F8C927544125AC9104F98E50413AD25345C9275441CC908FB3F98E504174B4EA75C6275441D34216A7F68E50415E12E22CC3275441EF074A5AF18E5041E87813AFBE275441A5DC1014F08E50412841B99EBD27544144602762EA8E504182BCB80BBA275441D6B8295FE38E5041C8493C38B52754415B3067F9DE8E5041CBEE0FA4B52754419F40D4CDDC8E5041FF4D1E28C727544122DBE0C3D78E5041E806F736C92754416C00DD80A68E5041A037937CC82754417988AFD3928E50419BF70923C8275441353F2128968E504172830419D3275441ECECF72DA58E50415E8B1051D0275441F3616C8CA78E5041C50906E2CF275441AF8E6DA6AE8E504113D324FBCF275441A6B56BA4C28E5041CA0F6242D0275441BF835D54CF8E50410FA6976FD02754411C9712DBD08E5041DFE00775D02754418FBF9B63CE8E5041E34BEE75C92754411532FA90CF8E50413D05A77FC92754413DB260B8D18E504142144027D0275441628B3694D68E50410E030A13CF27544124897503E28E5041112E2A2BCD275441281F4A53E58E50411415DC9DCC2754413CD0162FE88E504141A2E423CC275441A57C920AEB8E50412AB0FAA9CB2754415DFAF866EC8E50413A9BE96FCB2754419A16082CED8E504133C1114FCB275441310BED16EE8E50416A98EB27CB275441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000DF53960BD38E50410187CEA9D3275441295C8FC2D38E5041AE47E13AD5275441CDCCCC3CD78E504185EB5158D4275441F6285CFFDE8E504148E17AE4D227544114AE4731E08E50415C8FC2A5D22754413D0AD7B3E58E504152B81E85D127544100000000F18E504185EB5138D12754418FC2F508F88E504114AE4791D0275441E17A143EF98E5041CDCCCC4CD02754419A9999A9F58E5041B81E852BCD275441F1660D4BF58E504175DE90F4C9275441234DB8D1D48E50416C0D1F5ECF2754413DB260B8D18E504142144027D027544185EB5108D28E504166666636D127544100000030D58E504166666676D02754419A999979D58E5041C3F528CCD127544133333393D28E50411F85EBA1D22754415FDACBF2D28E504198297773D327544165364A33D28E5041AEB0496DD32754415C8FC225D18E504152B81E15D12754410DCC650DD18E5041354AD3C8D0275441CD2B6CFAD08E5041E5967775D0275441E7095D8DA78E504171F9D9E1CF27544154C31FEF968E504155F4CBECD2275441353F2128968E504172830419D3275441A4703D1A988E50410AD7A380D9275441C3F528FC9C8E5041D7A370ADD8275441A4703DAA9D8E50418FC2F5E8DA275441EC51B83EA28E5041000000A0D92754413D0AD7D3A18E50410AD7A320D72754417B14AE17A28E504100000080D5275441295C8FF2A38E504185EB5188D3275441CDCCCC9CA58E50415C8FC265D227544133333373A88E5041D7A370ADD1275441E17A147EAA8E5041D7A3705DDB2754411F85EBA1A68E50418FC2F558DC2754411F85EB71A68E504148E17AF4DC275441713D0A97A48E504185EB5168DD27544100000070A48E50413D0AD733DE2754411F85EB31A58E5041F6285CDFE12754411F85EB31A58E5041E17A14BEE2275441CDCCCC8CA68E5041F6285C1FE3275441B81E85FBAA8E504152B81E15E2275441F6285CFFAC8E50417B14AE97E1275441AE47E10AB68E5041333333F3DE2754418FC2F5C8C18E5041B81E85FBDA2754411F85EB71C48E5041AE47E1CAD9275441E17A149EC48E5041B81E850BDA2754411F85EB31CA8E5041C3F528FCD7275441B81E85EBD08E50413D0AD7F3D527544183B7CF54D28E50413A43CE90D52754412737A349D28E50413DB55FF3D3275441DF53960BD38E50410187CEA9D3275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282489 - 180364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000020000002E0000003D0AD753CDB35041EC51B87EACE254418FC2F558E7B3504148E17A04A9E25441A4703DEAE8B350417B14AE17A8E25441C3F5280CF9B350419A99997991E2544148E17A94F2B35041D7A3705D97E25441D7A3709DEDB35041EC51B84E96E2544152B81E25EEB35041EC51B8CE92E2544133333333F6B350415C8FC21589E25441666666B6F5B35041A4703D9A86E254415C8FC205EEB350417B14AEB788E25441713D0AF7ECB350413D0AD79387E2544148E17A94F2B3504114AE473184E254410AD7A390E6B35041713D0A577FE25441AE47E14ADFB350411F85EB6185E25441A4703D5AD9B35041EC51B8DE85E25441EC51B8CED7B35041D7A3701D7FE25441A4703D4ADAB350415C8FC2A578E2544114AE4771E3B350410AD7A38072E25441E17A142EE9B350417B14AEF773E25441E17A14FEF0B350413D0AD76369E254418FC2F548FBB35041333333236BE25441AE47E1AA01B45041333333E363E2544152B81E2504B4504114AE47F151E254419A9999C901B450411F85EBF14FE25441AE47E17AFCB35041A4703D0A52E2544114AE4791F9B35041F6285C8F54E254418FC2F5C8E4B3504148E17AE46AE254419A999939D0B350418FC2F52881E25441E17A145ED1B350410000006082E25441295C8F12D0B35041666666D683E254413D0AD703CFB350417B14AEA784E25441AE47E1DACCB35041F6285C8F84E254415C8FC2B5CCB350411F85EB6183E25441A4703D1ACBB35041EC51B88E81E254413D0AD7C3CDB35041CDCCCC8C80E254417B14AED7CCB35041666666C67FE25441CDCCCC2CCBB35041CDCCCCEC7FE25441B81E855BC7B350411F85EB817BE25441C3F528DCC7B35041C3F5289C7AE2544114AE4731C7B350419A99998979E25441333333C3B9B35041666666B66AE25441EC51B80EBBB35041666666167EE254413D0AD773B5B35041000000C08FE25441AE47E12AB3B35041713D0A0799E2544133333313B0B35041EC51B80EAFE254413D0AD753CDB35041EC51B87EACE254411B0000001F85EB91BEB35041C3F528CC7BE254415C8FC285C1B35041B81E856B79E2544166666646C3B35041000000D07AE254413D0AD773C4B350419A9999C97AE2544166666636C7B350410AD7A3307DE25441F6285C0FC6B35041EC51B88E7EE25441AE47E14AC5B3504185EB51887EE25441CDCCCCECC3B35041CDCCCCFC7BE25441B81E851BC3B35041B81E851B7CE25441CDCCCCFCC2B3504114AE47617DE2544152B81EB5C0B35041666666867DE25441A4703D8AC0B35041295C8F827EE254413D0AD773C1B350411F85EBD17EE25441713D0A67C1B35041CDCCCC2C81E25441E17A142EC3B350413D0AD7B381E254417B14AEC7C3B3504185EB516883E254411F85EB21C3B3504114AE47A184E254417B14AED7C2B35041AE47E1DA85E25441EC51B8FEC0B3504185EB517885E2544185EB5148C1B350410AD7A38083E25441F6285CBFBFB35041CDCCCC8C83E25441EC51B8FEBDB35041EC51B8CE82E25441295C8FA2BDB35041A4703DCA80E25441C3F528FCBCB35041B81E855B80E25441295C8F62BCB35041333333B37EE25441666666F6BCB350418FC2F5987DE254411F85EB91BEB35041C3F528CC7BE25441
+</a>
+
+<b>
+01060000000100000001030000000100000050000000C3F528DCC7B35041C3F5289C7AE254416EE2A24CC7B3504199F08DB579E25441D4925648C2B3504190E2181E74E25441C21234B7C1B350414013E37D73E25441D6D47412BCB35041864112436DE25441BFEE6F39BAB350414834EB386BE254415009C0DAB9B350419D7665D06AE2544101FD1B1ABBB3504193569D017EE25441743246A0B5B3504125D7015C8FE25441CDA478CCB3B350417680F37696E25441AE47E12AB3B35041713D0A0799E25441D1D5AD15B0B35041C6600FFDAEE25441DE87AC50B7B35041DD5C5B6CAEE254413D0AD753CDB35041EC51B87EACE254416DBA90EAE3B35041C3FEDF79A9E254414F230E15E7B35041D45EA705A9E254415876A2ACE7B3504131461AD3A8E25441A4703DEAE8B350417B14AE17A8E25441A72EECA8EBB350417DD2873EA4E254415C4E7072F5B35041848FD68596E2544118A0E347F3B3504115FE0CBA96E2544148E17A94F2B35041D7A3705D97E25441D7A3709DEDB35041EC51B84E96E25441BE075822EEB35041DD8D0DE192E2544152B81E25EEB35041EC51B8CE92E25441C7EC53D3EEB350415FDB72FC91E2544133333333F6B350415C8FC21589E25441666666B6F5B35041A4703D9A86E25441DC11CAC3F4B35041FD3FF7DC86E25441F2340B8DF2B35041A2DAD67887E254415C8FC205EEB350417B14AEB788E25441713D0AF7ECB350413D0AD79387E2544148E17A94F2B3504114AE473184E25441CD93A9DBEDB35041A309507682E254410AD7A390E6B35041713D0A577FE25441E6B26E94E0B350413FD91A5084E25441AE47E14ADFB350411F85EB6185E2544197084231DCB350417E990DA385E25441222BC700DBB3504104C10ABC85E25441A4703D5AD9B35041EC51B8DE85E25441CABEF149D9B35041F9F7789785E25441EC51B8CED7B35041D7A3701D7FE25441515131DBD9B35041D48B10C779E25441A4703D4ADAB350415C8FC2A578E25441A6FFB80EDBB35041835FD72178E25441E1404ACDDBB35041854AD21C77E25441B3687FA5E0B350419496376174E2544114AE4771E3B350410AD7A38072E2544130992E16E5B35041EEB51CEC72E2544146BA99C6E5B35041AFB041D072E25441D29F070BE9B35041FA6464D873E2544187560070F0B35041275A098769E25441A017CFD7F0B350414CEBA79769E25441E17A14FEF0B350413D0AD76369E254410B6C0663FAB350414D2829FC6AE254415F517C94FFB3504182282F8265E254412666459601B45041BA2B9CFA63E25441C280EB9601B45041897DDFF963E25441FB0FC29801B4504123F9C8F763E25441CA784C9B01B450413D29E6F463E2544171D0561A04B450412A3925E851E254419A9999C901B450411F85EBF14FE25441CEF4B7A3FDB35041F80F129551E254412F903B75FCB350418853200F52E2544114AE4791F9B35041F6285C8F54E254412185DDA7F5B350414B5176C358E2544141E73D27E5B35041172ECA9E6AE254418625858BDAB350414324A1FB75E254419A999939D0B350418FC2F52881E25441E17A145ED1B350410000006082E25441295C8F12D0B35041666666D683E254413D0AD703CFB350417B14AEA784E25441AE47E1DACCB35041F6285C8F84E254415C8FC2B5CCB350411F85EB6183E25441A4703D1ACBB35041EC51B88E81E254413D0AD7C3CDB35041CDCCCC8C80E254417B14AED7CCB35041666666C67FE25441CDCCCC2CCBB35041CDCCCCEC7FE25441B81E855BC7B350411F85EB817BE25441C3F528DCC7B35041C3F5289C7AE25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952374 - 1315095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A37E2035141F6285C5FF3DD5441C3F5284CEC035141EC51B80E13DE5441CDCCCCBCF4035141333333932DDE5441713D0AE71004514148E17A3424DE5441000000400F04514185EB51981DDE5441A4703D5A0C0451413333337315DE544114AE47210104514152B81E25F2DD5441E17A14CEFC03514152B81E95E4DD5441295C8F12EC03514114AE4761FBDD544133333323E7035141F6285C8FFDDD5441EC51B82EE303514152B81E05F2DD5441713D0A37E2035141F6285C5FF3DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000050E8F992E90351414DBBC47F0ADE54414A1D4B97E90351410EED558D0ADE5441C3F5284CEC035141EC51B80E13DE5441A284ABB5EF03514146DD2FC71DDE544112F61D1EF903514136E6BCDB1ADE54417232C1BE06045141CD4F5DA616DE5441B19705300C04514117A962EE14DE5441BF41FE1806045141AB6DD1C501DE544150E8F992E90351414DBBC47F0ADE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952374 - 3187436
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A37E2035141F6285C5FF3DD5441C3F5284CEC035141EC51B80E13DE5441CDCCCCBCF4035141333333932DDE5441713D0AE71004514148E17A3424DE5441000000400F04514185EB51981DDE5441A4703D5A0C0451413333337315DE544114AE47210104514152B81E25F2DD5441E17A14CEFC03514152B81E95E4DD5441295C8F12EC03514114AE4761FBDD544133333323E7035141F6285C8FFDDD5441EC51B82EE303514152B81E05F2DD5441713D0A37E2035141F6285C5FF3DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000050E8F992E90351414DBBC47F0ADE54414A1D4B97E90351410EED558D0ADE5441C3F5284CEC035141EC51B80E13DE5441A284ABB5EF03514146DD2FC71DDE544112F61D1EF903514136E6BCDB1ADE54417232C1BE06045141CD4F5DA616DE5441B19705300C04514117A962EE14DE5441BF41FE1806045141AB6DD1C501DE544150E8F992E90351414DBBC47F0ADE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985344 - 277260
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000026000000A7228B9603AA50410A1D75F15AD15441947C217503AA50414E2392B55AD154412CD32F2803AA50411765A92B5AD1544110B3CD2503AA504106D963275AD154413B827E6D00AA5041696C5F4755D15441AD2FFAE9FFA95041965DB66054D154413818C8F5FEA9504141B3CDA752D154411E7AA2CCFEA950415891BC6552D154414EEA7BBCFEA95041C2F9CD4B52D15441ACFF8DB9FEA9504160E2194752D154416EFACC5CFCA950416471167C4ED15441675275D7FAA950412643F20A4CD1544160BD5E5BF9A950418AE361294AD15441BE440135F8A9504174BFA99648D15441D520DCD4F7A95041ED85785947D1544100073345F7A95041F408234E46D15441217B3E3CF2A9504140A2F8763DD15441835AC047F1A950416ED0EE2F3CD154418E592CDEF0A950413ECFF5AB3BD15441BBDFAE77EEA950418DAF8D3B3BD15441A5D69AE4EBA95041C5D7BDF53AD15441B3077F0BE6A95041A951626B3AD15441C2C36022E4A95041AB3642443AD15441E6921AB4DFA95041A2AA2D6139D15441C577997BD9A950410539BC2A38D1544198D9D43AD6A95041BAD6D78337D15441EEE86FBBD5A95041BAD6D78337D154413A11C343DBA95041B62F938065D1544116EE8D56DCA950411CFAE53E6DD1544188A9E7FADDA950412DDCF4AA6CD15441011AAE5BE0A95041095E3BD36BD154412C33285DE3A95041AF6A5A486AD15441AD81D1C4E6A95041663C6F8468D154418BE4F1CBEEA95041B97ADA1865D154416D65001DF4A95041CBA6BAB462D15441237551D0FCA95041459E9AAC5ED15441075F89B903AA5041463E2D305BD15441A7228B9603AA50410A1D75F15AD15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000E17A14BE03AA504185EB51385BD1544152B81E5507AA5041E17A146E59D15441C3F5282C0AAA504185EB51D856D1544152B81EF509AA5041AE47E19A56D15441F6285CFF06AA5041D7A370DD52D15441713D0A0706AA50415C8FC2E553D15441B81E857B04AA50411F85EB7152D15441B81E854B06AA5041713D0A8750D1544152B81E6506AA50417B14AE6750D15441EC51B80E06AA50417B14AE3750D154416666661605AA504148E17A444FD15441AE47E15A03AA5041EC51B87E4FD15441F6285C6F02AA50418FC2F5584FD15441295C8F4201AA504185EB51984ED15441B81E853B00AA5041EC51B84E4DD15441D7A3709DFEA9504114AE47A14ED15441344AC942F9A95041C0329AE148D154410AD7A320FCA95041333333F345D154417B14AEF7F4A95041713D0A273ED154417B14AE37F3A95041EC51B85E3CD1544185EB51D8F0A95041AE47E19A3BD15441217B3E3CF2A9504140A2F8763DD1544100073345F7A95041F408234E46D1544159EB2FDDF7A950419C83F76847D15441BE440135F8A9504174BFA99648D15441648E5B6AF9A9504190B45E384AD15441675275D7FAA950412643F20A4CD15441638498FFFEA9504112BB8FB752D15441E17A14BE03AA504185EB51385BD15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963990 - 334073
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000054000000FDF97286D45C51419BF8B213428C544126FC54E4D25C5141B9D17437418C544162BE5BA1C65C51415C72FBD93A8C5441217A4C65C05C51416571FDB0378C5441C7FFDC4FBF5C5141B3806E26378C5441F05B6CF2BD5C5141396CC09E368C5441060AB473BC5C5141C92EB607368C544150EB2E08BA5C5141ACA9CA15358C5441F5F8DA70B75C51419530B012348C5441AC7AF1FDB65C5141A4D226E5338C5441106E5966B15C5141B2F61205328C544139664336B05C5141747697A2318C54414BFF3328AD5C514141440FBE308C54418047BE2AA95C51416AC84F912F8C54416D9976A9A85C514130BE786D2F8C5441A418A419A75C51414326932C2F8C54418F8D9F5EA55C51410CD45856318C544154E1F0D3A25C51412BEA61CC348C54413EE963EFA05C5141D96E0A0B388C544140CBE75D9F5C5141208841BF3A8C54410FAA3D8E9E5C51419B112FDB3C8C54410FAA3D8E9E5C5141F1E6FA503E8C5441DB3987269F5C514164526CDB3E8C5441FE0B255EA15C5141EF0477E23F8C5441A02BB88EA25C514114B99888408C544173591A57A05C5141E1534A3D478C5441423870879F5C514182FEE1284A8C5441591281DA9F5C5141CD6625754B8C5441591281DA9F5C51416319307C4C8C54418E8237429F5C5141BDAA90B34C8C544145877C1F9E5C5141B0D07F604C8C5441D5FD8E039C5C5141BF8C14224B8C54410CBD51039A5C514185E06597488C5441C2540EB7985C5141CB5BBD58458C5441FA13D1B6965C5141A8891F21438C544131D393B6945C51419C1C97F7428C544133B51725935C51411C6219D5438C5441504BBD39925C5141E4A256D5458C5441C498B232915C5141213189CE468C54417D7F7B7E8E5C51413EC72EE3458C5441C8BEDA1C885C514186EBCDB34E8C5441EA4B279D775C514121F2EFA0658C5441695B87656B5C51415D1F6FC6768C54418484A4506A5C5141663DEB57788C5441A11A4A65695C51413D3ABD19798C54415C45B72C5F5C5141A5430E977F8C5441A8F19EF4585C514136C58897838C544189A749B4475C5141AD284EC98E8C5441B10F1B865A5C51416BE10995A88C5441F995DA635D5C51419A825003A58C5441C8121087625C51415BE9B5ED9D8C54415A0113B1665C51418BFFF7A0988C5441DBC6F8EF6B5C5141CB3E573F928C5441C66C4BFE6F5C5141FCC1211C8D8C54413BC5A813755C51413194F890868C54418F56D00D7E5C514147C5C1D47A8C5441D3E43B44765C5141B64347D4768C5441C715930D7C5C51412DD5E0486E8C54415CF181C2845C51412C2C9939628C5441B082A9BC8D5C5141FBA8CE5C678C544148A23CED8E5C5141D4122948688C5441CB49A69A925C5141FEF7DAF4658C54410AE340B0995C51416F58E462608C54419F2050729C5C5141C240C44D5D8C5441CDF2EDA99E5C51412203B58B5A8C544196A0B3D3A05C51415D118423578C5441B0852C43A75C51410A29A4385A8C544162CEDC5EA75C514161736BF3598C5441B8A3A8D4A85C51419C813A8B568C5441B5549C3CAA5C5141F2B8260E528C5441A698077BAB5C51416137AC0D4E8C5441B0230C36AD5C5141A1760BAC478C5441541DB0B9AE5C514144654713438C54415B59A8DCB15C51418D600236448C5441CA750DCFB35C5141B381AC05458C544124A54DF9B95C5141949CFA58478C54418E9022E5BE5C5141EBDE4EF8488C5441350A2ACAC45C51415B683C144B8C5441D6B4C1B5C75C5141F387CF444C8C5441B20B082CCD5C5141BBC80C454E8C5441F9243FE0CF5C514153E89F754F8C5441853F4355D45C5141A5025F7F518C544174C226CFDA5C514189481470458C5441FDF97286D45C51419BF8B213428C5441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000D5FD8E039C5C5141BF8C14224B8C54410CBD51039A5C514185E06597488C5441C2540EB7985C5141CB5BBD58458C5441FA13D1B6965C5141A8891F21438C544131D393B6945C51419C1C97F7428C544133B51725935C51411C6219D5438C5441504BBD39925C5141E4A256D5458C5441C498B232915C5141213189CE468C54417D7F7B7E8E5C51413EC72EE3458C5441C8BEDA1C885C514186EBCDB34E8C5441EA4B279D775C514121F2EFA0658C5441695B87656B5C51415D1F6FC6768C54418484A4506A5C5141663DEB57788C5441A11A4A65695C51413D3ABD19798C54415C45B72C5F5C5141A5430E977F8C54412047F10B5B5C5141F001113F828C54413ECDC7E9515C5141F9086729888C544189A749B4475C5141AD284EC98E8C54416FD27A60525C514186EE4A6A9D8C54419F99376A525C51413B5A11619D8C544116374B31545C5141FC9268E79F8C544174F7F3CC585C514127EA5A38A68C5441E49D6493595C5141709ADB33A58C5441AAF8F9065B5C5141C61E124CA38C54419EF5615E5C5C5141C1CE4589A18C54417E037057615C5141DDDA19029B8C5441B718AE48645C5141908EE352978C54413C55D957655C5141D39E54FF958C544185DF5B7B675C51414EBFBC51938C544100B653F5685C5141E9D77178918C5441C7A884E8695C51419D8AEB47908C5441E5496F9C6D5C514147C5017A8B8C54412A042EDA705C51415A40B043878C54418275F9D8735C51419CBB6355838C5441FCBC522B745C5141F6922BE9828C5441FBA704CD775C5141512467237E8C5441805AF10B785C51416ABFB5D07D8C54412071F84A785C5141B277D0887D8C5441C75D8C487B5C5141B8152DDD798C5441B53988E7755C51417A747E1E768C544127B7D4E6755C5141CA7A011E768C5441A398B8A57C5C5141AB46A7746C8C5441A69E60127F5C5141799FB6FB688C5441246053D5815C51412B572E07658C54410F66D187845C514142C7372A618C5441CC36E48F845C5141CFE34530618C54411657CFA78A5C5141073C36C2658C54417010A5138D5C51410B871693678C54416BD163B08D5C5141C597A508688C5441923987BC8E5C514131E8EB1F678C5441D7A370ED905C5141E17A14FE648C54419A999959935C5141F6285CAF618C5441C3F528BC945C514185EB51C85F8C54410AD7A320975C5141F6285CCF5B8C544185EB5148995C514133333343568C544185EB51089A5C5141A4703D2A548C5441AE47E1EA9A5C514185EB5118528C5441486D76A19C5C5141FD02347F4B8C5441D5FD8E039C5C5141BF8C14224B8C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>817699 - 59860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006D0000000AD7A3C05C4E51419A9999C9D3685441A4703D7A5E4E5141C3F5282CD5685441A4703D3A5F4E514185EB51A8D568544114AE47415E4E5141A4703D0ADC68544114AE47215E4E5141C3F528ECDF685441EC51B8AE5F4E514148E17AE4E368544152B81E85654E5141AE47E16ADD685441713D0A87694E51417B14AEE7D66854417B14AE476B4E51413D0AD783CF685441CDCCCCDC6D4E5141C3F5289CA76854417B14AE076F4E5141295C8F82956854418FC2F5A86D4E5141E17A143E9468544152B81EF56C4E5141EC51B8CE936854413D0AD7F36A4E5141713D0A67936854411F85EBA15D4E51411F85EBF192685441000000905B4E5141E17A14FE9968544114AE4711534E5141A4703DDA9A685441CDCCCC5C514E5141CDCCCCDC98685441666666B6494E5141000000E09D685441AE47E14A464E5141666666A69E6854411F85EB81444E51413D0AD703A268544152B81E853E4E51418FC2F508A4685441D7A3701D3E4E5141E17A14BEA0685441F6285CEF3D4E5141D7A3701D9C685441F6285C2F3E4E5141D7A3707D9A685441000000B03E4E5141000000B09A685441333333033F4E5141E17A14DE97685441666666A63D4E51413333336390685441333333933B4E51410AD7A3E0876854418FC2F5483A4E51415C8FC2C5816854415C8FC2453A4E5141D7A3700D80685441CDCCCCCC3A4E51413D0AD7037F68544114AE47313C4E5141666666C67D685441D02549F2454E5141F935FF597B6854414C987CC64A4E5141B8DFE7187A685441C16673084D4E51411A2C6A887968544164734E9D524E514191454058796854413B43E8C0564E5141EDA2A6A7786854418FC2F598584E5141D7A3702D78685441B81E852B5B4E5141CDCCCC5C77685441E17A14CE5D4E51415C8FC2D576685441B81E85BB604E514114AE47C17668544114AE47A1674E5141A4703DEA76685441333333136C4E51413D0AD75377685441666666566F4E5141CDCCCC3C786854417B14AEE7704E5141666666A679685441EC51B89E714E5141E17A142E7A685441CDCCCC8C714E51410AD7A3A076685441B81E85BB724E5141EC51B80E6468544148E17A94734E51419A9999095A6854410AD7A340684E514152B81EC559685441295C8F22634E5141295C8FD2596854418FC2F5F8624E51410AD7A3005D685441AE47E10A634E5141F6285C7F5E685441EC51B8AE634E51415C8FC2056068544152B81E25644E51413D0AD7736168544133333333644E514114AE47D16368544152B81E85644E51410000003065685441CDCCCCEC644E5141333333136768544100000010654E514185EB5168686854411F85EB01654E5141EC51B8BE696854411F85EB31644E5141295C8FC26B685441C3F528CC624E51418FC2F5986D685441EC51B82E614E514114AE47B16F685441F6285C6F5E4E5141333333D3726854411F85EBD15C4E5141713D0AA774685441D7A3707D5A4E5141E17A147E766854415C8FC2555A4E5141B81E854B766854411F85EB015A4E5141C3F5283C766854417B14AE07594E5141D7A3700D76685441A4703D9A574E51415C8FC2F57568544152B81EE5544E5141713D0A4775685441666666D6514E5141C3F528CC746854410AD7A3E04E4E51413D0AD7F373685441F6285CCF4C4E51417B14AEA773685441EC51B83E484E514185EB51B872685441EC51B8CE454E5141EC51B8EE7268544185EB5168444E51410AD7A3507368544100000040424E51415C8FC22574685441E17A14DE3F4E51418FC2F5F873685441EC51B85E3E4E514148E17A7474685441F6285C5F3C4E51419A999919756854418FC2F5E8384E5141000000E075685441F6285CDF354E5141CDCCCC7C76685441F6285C2F324E51413333334377685441CDCCCCBC2F4E514185EB51087868544114AE47D12D4E5141000000B0786854413D0AD7E32D4E5141EC51B8DE87685441A4703D9A2A4E51415C8FC2058968544100000050274E5141CDCCCC7C8B68544152B81ED5254E514148E17AD48A6854419A999909234E51417B14AEF78C68544100000010214E5141F6285C4F8C685441EC51B86E1E4E5141CDCCCC9C8E6854418FC2F5781B4E514152B81E458F685441713D0AD7184E514114AE471192685441C3F5283C144E5141333333E3926854413D0AD773104E5141D7A3700D9368544148E17A840E4E5141B81E850B93685441CDCCCCDC0E4E514148E17A149C685441E17A149E104E5141713D0AB79F6854418FC2F5881D4E51413D0AD723A768544152B81EC5244E5141F6285C6FAA6854410AD7A340274E5141D7A3700DAC6854411F85EBA1344E5141666666B6B868544148E17AC43B4E51419A9999C9BE68544114AE4741444E5141C3F5280CC5685441666666264C4E51410AD7A3D0C96854410AD7A3C05C4E51419A9999C9D3685441
+</a>
+
+<b>
+010600000001000000010300000001000000980000008FC2F5881D4E51413D0AD723A76854415E9710D2214E5141972D7D17A968544152B81EC5244E5141F6285C6FAA6854410AD7A340274E5141D7A3700DAC6854411F85EBA1344E5141666666B6B868544148E17AC43B4E51419A9999C9BE68544114AE4741444E5141C3F5280CC5685441666666264C4E51410AD7A3D0C96854410AD7A3C05C4E51419A9999C9D3685441A4703D7A5E4E5141C3F5282CD5685441A4703D3A5F4E514185EB51A8D568544114AE47415E4E5141A4703D0ADC68544114AE47215E4E5141C3F528ECDF685441EC51B8AE5F4E514148E17AE4E368544152B81E85654E5141AE47E16ADD68544150FDEE45694E514169A97B51D7685441C134C8F0694E5141714028E6D46854417B14AE476B4E51413D0AD783CF685441CDCCCCDC6D4E5141C3F5289CA76854417B14AE076F4E5141295C8F82956854418FC2F5A86D4E5141E17A143E94685441211D073F6D4E5141AA267CFC9368544105154A1B6C4E51412B24B8A293685441FC615B7D6B4E51417757D18293685441E9FB0C68694E5141992572599368544197C0CFF3654E51410537133B93685441E54CDC81654E51417DA5514993685441A909FF1C634E51418A7A1C22936854411F85EBA15D4E51411F85EBF192685441000000905B4E5141E17A14FE9968544114AE4711534E5141A4703DDA9A685441CDCCCC5C514E5141CDCCCCDC98685441F00D497D504E5141A5D2406F99685441666666B6494E5141000000E09D6854414FD7BF18494E51417394B9039E685441AE47E14A464E5141666666A69E685441FE718A39454E51416FBEAFA9A06854411F85EB81444E51413D0AD703A2685441303C949C404E51410BFC4F54A368544152B81E853E4E51418FC2F508A4685441D7A3701D3E4E5141E17A14BEA0685441F6285CEF3D4E5141D7A3701D9C685441C47E8CFB3D4E51411C7636CE9B685441F6285C2F3E4E5141D7A3707D9A6854417795AE663E4E51413EF72E939A685441000000B03E4E5141000000B09A6854415AC15EC03E4E51418523F5219A685441333333033F4E5141E17A14DE97685441666666A63D4E51413333336390685441F435405E3C4E5141A19C64218B685441333333933B4E51410AD7A3E0876854418FC2F5483A4E51415C8FC2C5816854415C8FC2453A4E5141D7A3700D80685441CDCCCCCC3A4E51413D0AD7037F68544114AE47313C4E5141666666C67D6854410C121F4F424E514125BFC23A7C685441D02549F2454E5141F935FF597B6854414C987CC64A4E5141B8DFE7187A685441C16673084D4E51411A2C6A88796854411ABE4DE44F4E51417FDBBE6F79685441E8A4575B504E5141123D4E6879685441C7AEEC2C524E51418F45405879685441FB280B05534E51414D27F6467968544158A68F1B544E514113BD8A18796854413B43E8C0564E5141EDA2A6A77868544170DACBE1564E514108DE229F786854414A103C21574E514160BC7C77786854416FAAE3E1574E5141D8D55247786854418FC2F598584E5141D7A3702D78685441B81E852B5B4E5141CDCCCC5C77685441E17A14CE5D4E51415C8FC2D576685441B81E85BB604E514114AE47C176685441DCDB2E23624E51413F7F9FC9766854410DE704AD644E5141079911D67668544139C783E3644E5141C116F6D97668544114AE47A1674E5141A4703DEA7668544130135A8D6A4E5141E167A92F77685441D78D87026B4E51411A666536776854418B2FBA2E6B4E5141F334A33E77685441333333136C4E51413D0AD753776854414256A7FA6C4E5141A512669477685441302D3A206F4E51414193B02D78685441666666566F4E5141CDCCCC3C786854414E819CE4704E51416B81A2A37968544169C80BEA704E5141ED6127A879685441967D0F98714E5141A1C224297A685441CDCCCC8C714E51410AD7A3A076685441B81E85BB724E5141EC51B80E6468544148E17A94734E51419A9999095A6854410AD7A340684E514152B81EC5596854418D936966664E5141F22CFCC9596854410EFCEF21634E5141DB36BEDE596854418FC2F5F8624E51410AD7A3005D68544184F409FB624E5141F2010A2D5D68544164E53425634E5141C16617BE5E685441EC51B8AE634E51415C8FC2056068544152B81E25644E51413D0AD7736168544133333333644E514114AE47D16368544152B81E85644E51410000003065685441CDCCCCEC644E5141333333136768544100000010654E514185EB5168686854411F85EB01654E5141EC51B8BE696854411F85EB31644E5141295C8FC26B685441C3F528CC624E51418FC2F5986D685441EC51B82E614E514114AE47B16F685441F6285C6F5E4E5141333333D3726854411F85EBD15C4E5141713D0AA774685441D7A3707D5A4E5141E17A147E766854415C8FC2555A4E5141B81E854B766854411F85EB015A4E5141C3F5283C766854417B14AE07594E5141D7A3700D766854415094FADA574E5141E979F4F975685441A4703D9A574E51415C8FC2F575685441B1912B03574E5141B2BEADCF7568544152B81EE5544E5141713D0A4775685441666666D6514E5141C3F528CC746854410AD7A3E04E4E51413D0AD7F373685441F6285CCF4C4E51417B14AEA773685441EC51B83E484E514185EB51B8726854417A025E6C464E514113F5F9E072685441432E3BE2454E514141A7AFF272685441BFD9D840444E5141DE03DF5F7368544100000040424E51415C8FC22574685441E17A14DE3F4E51418FC2F5F873685441EC51B85E3E4E514148E17A7474685441F6285C5F3C4E51419A999919756854418FC2F5E8384E5141000000E075685441F6285CDF354E5141CDCCCC7C76685441F6285C2F324E5141333333437768544114AE47D12D4E5141000000B0786854418D2FA9DA2D4E5141A06D7C5C806854413D0AD7E32D4E5141EC51B8DE876854412C7D9CD52D4E5141564AB5E387685441A4703D9A2A4E51415C8FC20589685441ADC67D0C284E51418C2293EF8A68544100000050274E5141CDCCCC7C8B68544120B25CE2254E514150E65CDA8A6854412B6A43A3244E514166F062BE8B6854419A999909234E51417B14AEF78C685441F3581212214E5141FEB70C508C68544146A83455204E51410CD0E4F28C685441EC51B86E1E4E5141CDCCCC9C8E6854418DB692A91C4E5141F6EF74018F68544153C5B0861B4E5141B5EF11428F685441B749E0C51A4E51418BB26D0390685441713D0AD7184E514114AE471192685441C3F5283C144E5141333333E3926854413D0AD773104E5141D7A3700D9368544148E17A840E4E5141B81E850B93685441CDCCCCDC0E4E514148E17A149C685441E17A149E104E5141713D0AB79F6854418FC2F5881D4E51413D0AD723A7685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608311 - 252435
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000019000000295C8F820BB15041295C8F92D3495541D7A3708D09B15041F6285C5FDC4955410781F27004B1504159C48F69E54955415CDA47A3FCB05041406F2517F149554116E1D7A6F8B05041CB855CAFFB4955415A59573AF4B05041099729D4F849554179B55363F0B05041FF198EED014A5541F79C3283F6B050418C3A556D054A5541B1BB9A83FFB050412437467DF74955414788415FFDB050411FAA1E20F6495541A91A2556FDB05041BB7CAC5AF5495541CF4D4DD3FDB05041CA574800F5495541CC77C427FFB05041D9B0AE23F249554109922E93FFB050414B067D69EF4955419760B7EC04B15041C8AAF4C2E549554114AE473109B15041C3F528CCE749554159D9062F15B15041989428FCD24955412E92C18C16B1504106C7D6D3D0495541713D0AA71CB1504152B81E55C6495541A99327B92DB15041276DD904B8495541FD8A001E23B150419B1584D9AF495541BDD517451CB15041EBA919ACAD495541295C8FA212B15041A4703DFABF4955411F85EBF109B15041713D0A77CF495541295C8F820BB15041295C8F92D3495541
+</a>
+
+<b>
+0106000000010000000103000000010000002900000012E1D7A6F8B05041C8855CAFFB495541C4C43604F6B05041464A323EFB4955416EF7FCCCF4B0504117039D96FA495541CFBC1E3CF4B05041759C4FD5F8495541012D8468F0B05041901985F0014A5541F69C3283F6B050418F3A556D054A5541AEBB9A83FFB050412737467DF74955414B88415FFDB050411AAA1E20F6495541AC1A2556FDB05041B67CAC5AF5495541D14D4DD3FDB05041C8574800F5495541C977C427FFB05041D8B0AE23F249554104922E93FFB0504146067D69EF4955419460B7EC04B15041CDAAF4C2E549554114AE473109B15041C3F528CCE749554158D9062F15B15041949428FCD24955413192C18C16B1504101C7D6D3D0495541713D0AA71CB1504152B81E55C64955415642EC4A2AB150415DC73ACFBA495541E03A7B692BB15041D4A51D3DB6495541A659FC372BB1504164F6FD16B6495541DEAFFE9B28B150418CFF6543B449554152DA3EA526B1504132D9E899B6495541098FE69D25B15041CB308AC0B8495541EB22769821B150414DDDABF9B6495541A2D71D9120B15041F04E81AAB54955415633821723B15041002AA64CB2495541F9A457C821B15041460D51AEAF495541BFD517451CB15041EAA919ACAD495541295C8FA212B15041A4703DFABF4955416BC5A3BF10B15041381EE956C349554116A57A4B10B15041BE8D6D0FC74955417D4DD9240EB150415DA6FF4DC949554105BBEB750CB15041D538EDFCCA495541B5AEA2560BB150416E908E23CD495541EBB628160CB1504100273F32CF4955413402811D0DB15041A03FD170D1495541295C8F820BB15041295C8F92D3495541D7A3708D09B15041F6285C5FDC4955410781F27004B1504159C48F69E54955415FDA47A3FCB050413B6F2517F149554112E1D7A6F8B05041C8855CAFFB495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608311 - 419087
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000295C8F820BB15041295C8F92D3495541D7A3708D09B15041F6285C5FDC4955410781F27004B1504159C48F69E54955415CDA47A3FCB05041406F2517F149554116E1D7A6F8B05041CB855CAFFB4955415A59573AF4B05041099729D4F849554179B55363F0B05041FF198EED014A5541F79C3283F6B050418C3A556D054A5541B1BB9A83FFB050412437467DF74955414788415FFDB050411FAA1E20F6495541A91A2556FDB05041BB7CAC5AF5495541CF4D4DD3FDB05041CA574800F5495541CC77C427FFB05041D9B0AE23F249554109922E93FFB050414B067D69EF4955419760B7EC04B15041C8AAF4C2E549554114AE473109B15041C3F528CCE749554159D9062F15B15041989428FCD24955412E92C18C16B1504106C7D6D3D0495541713D0AA71CB1504152B81E55C6495541A99327B92DB15041276DD904B8495541FD8A001E23B150419B1584D9AF495541BDD517451CB15041EBA919ACAD495541295C8FA212B15041A4703DFABF4955411F85EBF109B15041713D0A77CF495541295C8F820BB15041295C8F92D3495541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000D0BC1E3CF4B05041769C4FD5F8495541012D8468F0B05041931985F0014A5541F69C3283F6B050418F3A556D054A5541AEBB9A83FFB050412737467DF74955414B88415FFDB050411AAA1E20F6495541AC1A2556FDB05041B67CAC5AF5495541D14D4DD3FDB05041C8574800F5495541C977C427FFB05041D8B0AE23F249554104922E93FFB0504146067D69EF4955419460B7EC04B15041CDAAF4C2E549554114AE473109B15041C3F528CCE749554158D9062F15B15041949428FCD24955413192C18C16B1504101C7D6D3D0495541713D0AA71CB1504152B81E55C6495541AD9327B92DB15041246DD904B8495541008B001E23B15041991584D9AF495541BFD517451CB15041EAA919ACAD495541295C8FA212B15041A4703DFABF4955411F85EBF109B15041713D0A77CF495541295C8F820BB15041295C8F92D3495541D7A3708D09B15041F6285C5FDC4955410781F27004B1504159C48F69E54955415FDA47A3FCB050413B6F2517F149554112E1D7A6F8B05041C8855CAFFB495541D0BC1E3CF4B05041769C4FD5F8495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986152 - 1322085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000000B000000F6285C7FA4FF50411F85EBE1BBC7544152B81EE5B4FF5041713D0A07BDC7544114AE4761B4FF5041666666C6ADC75441713D0A17B3FF5041D7A3707DACC7544100000070B0FF5041A4703D6AACC7544166666696AEFF5041CDCCCC3CADC75441F6285C3FA9FF5041A4703D3AB2C754411F85EB11A2FF5041713D0A77B8C75441333333539DFF50411F85EB31BCC7544166666646A0FF504185EB51C8BBC75441F6285C7FA4FF50411F85EBE1BBC754411100000048E17A84A9FF5041B81E850BBAC75441295C8F82AAFF504152B81EF5B7C754411F85EBD1B0FF50417B14AE67B8C7544152B81EC5B0FF50419A999909B3C754419A9999E9B1FF5041D7A370BDB2C754419A9999E9B1FF50417B14AE67B0C75441AE47E16AB1FF50411F85EB11AEC754411F85EBC1B2FF5041B81E85EBADC754417B14AE27B3FF5041AE47E15AB0C75441D7A3708DB3FF504100000030BBC754413D0AD7B3ABFF5041000000F0BAC754417B14AE57A5FF50417B14AE57BAC754417B14AE77A1FF5041713D0A97BAC75441295C8FA2A6FF50418FC2F578B5C754413D0AD7D3A7FF504114AE4751B6C7544152B81EE5A4FF50415C8FC2A5B9C7544148E17A84A9FF5041B81E850BBAC75441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000334E4ABCB1FF50414CDD79DDAFC75441775B5AF7B0FF5041A51B31E6ADC75441778E3B89B1FF50412F213172ACC754413A1535C6AEFF504155605D79ADC754418EDC4215AEFF5041C88379B5ADC75441785A6C19ABFF504100913F7FB0C75441F6285C3FA9FF5041A4703D3AB2C75441F1F8C5B5A8FF504196C2CEB1B2C7544118422F17A7FF5041FEA41416B4C75441E5EE9556A7FF50413DD5D539B4C75441A5697472A8FF50411FE6EBD9B4C7544154E0D27BA8FF5041DCC065FFB4C75441CC3683A5A8FF5041BB1A27A6B5C754413F3FD80CA8FF50414EFEC41FB6C75441CDBB1DD1A7FF50416892594FB6C754413D0AD7D3A7FF504114AE4751B6C75441F0072BF7A6FF50410B33F8FCB6C75441413788C5A4FF5041D9C14F27B9C754416E5C942EA5FF504114D15752B9C754414BC4D643A6FF5041E64EEBC3B9C754413693EE22A7FF5041BC814E1FBAC75441E97684ADA7FF5041FAFDB710BAC7544173906DECA7FF5041E03C6EE8B9C7544112C246D1A8FF5041E1D0A961B9C75441EE5A3817AAFF5041D6862954B7C75441245EAE36AAFF5041707C7021B7C7544156B377C4ACFF50414F15F979B7C754418712E7F2ACFF5041DED44280B7C75441F401423BADFF50414CDE699AB7C754419B1894F1ADFF5041540550DCB7C754418B248A1DAFFF50419875BB48B8C754417C6E4D50AFFF50413C8D145BB8C75441319BBE65AFFF5041BD5CDA4DB8C75441AB4AB6BDAFFF5041533C6F19B8C754413724E90DB0FF50417E77C2B4B7C75441A8B56E38B0FF5041CA9A617FB7C7544191C901CEB0FF5041DC149EC3B6C75441FB628714B1FF5041770D176BB6C7544105EEDBCBB0FF50415FDE0ADDB5C75441ED8AA8B9B0FF5041BAA0E532B5C75441FA2025AAB0FF504153C0DFA1B4C75441A5B90F74B0FF5041701549A8B2C7544139DFF005B1FF5041EC0D1C8BB2C7544157A7BF25B1FF5041F6318313B2C75441AAEBE048B1FF5041FD826C8FB1C75441334E4ABCB1FF50414CDD79DDAFC75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986152 - 5308140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000000B000000F6285C7FA4FF50411F85EBE1BBC7544152B81EE5B4FF5041713D0A07BDC7544114AE4761B4FF5041666666C6ADC75441713D0A17B3FF5041D7A3707DACC7544100000070B0FF5041A4703D6AACC7544166666696AEFF5041CDCCCC3CADC75441F6285C3FA9FF5041A4703D3AB2C754411F85EB11A2FF5041713D0A77B8C75441333333539DFF50411F85EB31BCC7544166666646A0FF504185EB51C8BBC75441F6285C7FA4FF50411F85EBE1BBC754411100000048E17A84A9FF5041B81E850BBAC75441295C8F82AAFF504152B81EF5B7C754411F85EBD1B0FF50417B14AE67B8C7544152B81EC5B0FF50419A999909B3C754419A9999E9B1FF5041D7A370BDB2C754419A9999E9B1FF50417B14AE67B0C75441AE47E16AB1FF50411F85EB11AEC754411F85EBC1B2FF5041B81E85EBADC754417B14AE27B3FF5041AE47E15AB0C75441D7A3708DB3FF504100000030BBC754413D0AD7B3ABFF5041000000F0BAC754417B14AE57A5FF50417B14AE57BAC754417B14AE77A1FF5041713D0A97BAC75441295C8FA2A6FF50418FC2F578B5C754413D0AD7D3A7FF504114AE4751B6C7544152B81EE5A4FF50415C8FC2A5B9C7544148E17A84A9FF5041B81E850BBAC75441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000334E4ABCB1FF50414CDD79DDAFC75441775B5AF7B0FF5041A51B31E6ADC75441778E3B89B1FF50412F213172ACC754413A1535C6AEFF504155605D79ADC754418EDC4215AEFF5041C88379B5ADC75441785A6C19ABFF504100913F7FB0C75441F6285C3FA9FF5041A4703D3AB2C75441F1F8C5B5A8FF504196C2CEB1B2C7544118422F17A7FF5041FEA41416B4C75441E5EE9556A7FF50413DD5D539B4C75441A5697472A8FF50411FE6EBD9B4C7544154E0D27BA8FF5041DCC065FFB4C75441CC3683A5A8FF5041BB1A27A6B5C754413F3FD80CA8FF50414EFEC41FB6C75441CDBB1DD1A7FF50416892594FB6C754413D0AD7D3A7FF504114AE4751B6C75441F0072BF7A6FF50410B33F8FCB6C75441413788C5A4FF5041D9C14F27B9C754416E5C942EA5FF504114D15752B9C754414BC4D643A6FF5041E64EEBC3B9C754413693EE22A7FF5041BC814E1FBAC75441E97684ADA7FF5041FAFDB710BAC7544173906DECA7FF5041E03C6EE8B9C7544112C246D1A8FF5041E1D0A961B9C75441EE5A3817AAFF5041D6862954B7C75441245EAE36AAFF5041707C7021B7C7544156B377C4ACFF50414F15F979B7C754418712E7F2ACFF5041DED44280B7C75441F401423BADFF50414CDE699AB7C754419B1894F1ADFF5041540550DCB7C754418B248A1DAFFF50419875BB48B8C754417C6E4D50AFFF50413C8D145BB8C75441319BBE65AFFF5041BD5CDA4DB8C75441AB4AB6BDAFFF5041533C6F19B8C754413724E90DB0FF50417E77C2B4B7C75441A8B56E38B0FF5041CA9A617FB7C7544191C901CEB0FF5041DC149EC3B6C75441FB628714B1FF5041770D176BB6C7544105EEDBCBB0FF50415FDE0ADDB5C75441ED8AA8B9B0FF5041BAA0E532B5C75441FA2025AAB0FF504153C0DFA1B4C75441A5B90F74B0FF5041701549A8B2C7544139DFF005B1FF5041EC0D1C8BB2C7544157A7BF25B1FF5041F6318313B2C75441AAEBE048B1FF5041FD826C8FB1C75441334E4ABCB1FF50414CDD79DDAFC75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981118 - 130702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000004AA58A1B2BA95041366C54AF044855416D1FCF0A2BA95041EC7E13A104485541E92018CE1BA950415BF0B2B2024855411ECF963EEFA85041220EA7BBFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541295C8F6208A950413D0AD7B308485541E17A14AE1AA950418FC2F58809485541A4703DBA1FA95041B81E857B0A48554114AE471128A9504185EB51D80D4855414AA58A1B2BA95041366C54AF04485541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8F6208A950413D0AD7B3084855418510C4C809A950417DCF23C4084855411EC7EED70AA95041DDB7543001485541404029B908A95041A7E80800014855413DAEF66E08A95041CCC26EF9004855418A07336106A95041560B4FCB00485541CB1FC21802A950418764F16C00485541CB0F6090FAA85041CC397EC2FF475541945EA32CF4A850416A27B132FF4755410667EE85F0A85041E6FBD0D8FE4755418BF1ED3DEFA85041FB64DEBDFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541295C8F6208A950413D0AD7B308485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981118 - 418126
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000004AA58A1B2BA95041366C54AF044855416D1FCF0A2BA95041EC7E13A104485541E92018CE1BA950415BF0B2B2024855411ECF963EEFA85041220EA7BBFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541295C8F6208A950413D0AD7B308485541E17A14AE1AA950418FC2F58809485541A4703DBA1FA95041B81E857B0A48554114AE471128A9504185EB51D80D4855414AA58A1B2BA95041366C54AF04485541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8F6208A950413D0AD7B3084855418510C4C809A950417DCF23C4084855411EC7EED70AA95041DDB7543001485541404029B908A95041A7E80800014855413DAEF66E08A95041CCC26EF9004855418A07336106A95041560B4FCB00485541CB1FC21802A950418764F16C00485541CB0F6090FAA85041CC397EC2FF475541945EA32CF4A850416A27B132FF4755410667EE85F0A85041E6FBD0D8FE4755418BF1ED3DEFA85041FB64DEBDFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541295C8F6208A950413D0AD7B308485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>787671 - 1803165
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E669544192D2ADCE09A950416B0DFC2BE56954417B14AEB7F0A85041000000100F6A5441333333C3F5A8504152B81E350F6A5441D7A3707DFFA850415C8FC235FF6954411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E6695441568B72F9F3A8504168ADF6270F6A5441C653F2ADF6A850410E9AFD3B0F6A54411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>787671 - 3502083
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E669544192D2ADCE09A950416B0DFC2BE56954417B14AEB7F0A85041000000100F6A5441333333C3F5A8504152B81E350F6A5441D7A3707DFFA850415C8FC235FF6954411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E6695441568B72F9F3A8504168ADF6270F6A5441C653F2ADF6A850410E9AFD3B0F6A54411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399440 - 13616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000B0000000666666B6B58250419A9999B9F6105541A4703D4AB68250413D0AD713F51055418FC2F5B8B68250418FC2F5D8F3105541295C8F22B7825041B81E85ABF2105541A4703D7AB78250410AD7A3B0F1105541000000E0B78250419A999999F010554185EB5178B88250415C8FC2F5EE10554166666626B9825041713D0A17ED105541AE47E1AAB9825041AE47E1AAEB10554152B81ED5B98250415C8FC215E910554100000050BA8250413D0AD703E7105541A4703D8ABB825041295C8FE2E3105541C3F5280CBC825041295C8FD2E2105541A4703DCABD8250418FC2F548E010554100000070BE82504100000090DE10554152B81EB5BE825041E17A14BEDA1055417B14AE57B9825041295C8FA2D71055410AD7A390B58250418FC2F558D510554185EB5158AD82504166666606D0105541E17A142EAB82504185EB5148CE105541295C8FF2AB82504100000030CD1055411F85EB71AE825041C3F5286CCE105541666666F6B3825041666666D6D110554185EB5128B48250415C8FC295D1105541713D0AB7B8825041A4703D4AD410554185EB5138BA825041CDCCCC3CD5105541E17A14DEBD825041EC51B83ED7105541C3F5286CBF82504148E17AD4D21055410AD7A380C1825041295C8F02CD105541295C8F82C28250413D0AD7F3C91055418FC2F5D8C3825041B81E859BC71055410AD7A3D0C682504185EB51A8C310554133333333C88250411F85EB51C1105541B81E851BC9825041B81E850BC010554133333353CA8250417B14AE37BE10554100000050CC82504133333343BC105541CDCCCC9CCE825041713D0AA7B81055417B14AE87D0825041713D0A97B6105541000000E0D1825041713D0A47B510554114AE4721D4825041A4703DEAB3105541B81E850BDA825041000000E0AF105541E17A149EDF825041C3F5284CAC1055417B14AEF7E682504133333393A710554114AE47A1E5825041CDCCCC7CA41055410AD7A350E68250417B14AE47A1105541AE47E15AE4825041AE47E1AAA11055415C8FC255E28250410AD7A300A3105541F6285C0FE182504133333303A410554185EB51C8DF8250417B14AE47A41055410AD7A3D0DC825041000000A0A6105541D7A3703DDB825041B81E85EBA61055410AD7A3E0D8825041C3F5289CA810554148E17A04D8825041F6285C1FA9105541295C8FF2D482504148E17A04AB1055417B14AEE7D38250419A999999AA1055411F85EB31D38250417B14AE67AB105541295C8F92D2825041EC51B83EAD1055417B14AE67D08250411F85EB31AE10554100000000CE825041CDCCCC5CB01055410AD7A3C0CC825041AE47E17AB0105541B81E858BCC8250411F85EBF1AF105541EC51B8AECE825041CDCCCCFCAD105541CDCCCCCCD18250411F85EB31AB105541D7A370BDD48250415C8FC2F5A81055418FC2F508D8825041666666B6A610554114AE47F1DA825041E17A14FEA4105541D7A3703DDE8250418FC2F5F8A21055413D0AD753DE825041AE47E1AAA1105541C3F5281CDD825041A4703DEA9F105541C3F528ECD9825041333333B39E105541713D0A57D98250413D0AD7339F10554152B81EB5D7825041E17A140E9F105541B81E850BD6825041E17A140E9F1055417B14AE57D3825041B81E859B9E1055415C8FC225D182504152B81E859E105541F6285CCFCF825041AE47E1AA9E10554152B81EB5CE8250410AD7A3C09F10554166666666CD82504133333343A2105541F6285CFFCB82504100000090A4105541AE47E1DACA8250419A9999D9A610554148E17A64CA82504166666626A610554148E17A94C982504166666676A71055418FC2F508C982504166666626A810554114AE4771C8825041E17A14BEA81055410AD7A3E0C7825041AE47E13AA910554185EB5188C782504114AE4781A91055413D0AD723C78250410AD7A3D0A9105541713D0A37C68250410AD7A390AA105541A4703DAAC48250411F85EBD1AB1055410AD7A340C28250417B14AEC7AD105541E17A14AEC1825041E17A143EAE1055418FC2F578C282504100000040AF1055419A9999F9BF825041B81E859BB1105541B81E854BBF825041F6285CBFB0105541B81E856BBE825041A4703DAAB110554152B81E95BD8250413D0AD793B2105541CDCCCC5CBC82504185EB51E8B310554148E17AE4BC8250417B14AE67B4105541A4703D6ABC8250418FC2F568B510554185EB5158BB8250418FC2F5A8B61055417B14AEA7BA8250411F85EB11B6105541295C8F82BA82504133333343B6105541D7A3705DBA82504152B81E75B6105541B81E857BB9825041AE47E16AB710554114AE4791B8825041AE47E16AB8105541CDCCCCECB782504100000020B9105541E17A148EB58250413D0AD783BB10554152B81E65B4825041295C8FB2BC105541D7A3703DB5825041B81E857BBD105541713D0AF7B382504185EB51E8BE105541B81E856BB28250415C8FC2B5BF105541A4703DAAB1825041C3F5287CBF1055413D0AD773B182504148E17AB4BF105541CDCCCC5CB0825041CDCCCCFCC01055418FC2F528AF825041713D0A67C210554166666656AE82504100000060C31055417B14AE87AD825041295C8F52C41055410AD7A300AD825041C3F5285CC510554114AE4711AC8250413D0AD733C710554100000060AB82504148E17A34C8105541D7A3704DAA825041295C8FC2C910554185EB5158A98250415C8FC225CB1055411F85EB71A88250413D0AD773CC105541E17A143EA8825041000000C0CC10554148E17AF4A6825041A4703D9ACE1055418FC2F578A5825041CDCCCCBCD0105541CDCCCC8CA48250410AD7A310D210554152B81E35A48250413D0AD793D210554114AE47A1A382504100000070D3105541D7A370ADA2825041B81E85DBD41055417B14AE27A2825041333333A3D51055410AD7A3F0A182504152B81EF5D510554133333393A18250413D0AD773D6105541666666D6A082504148E17A74D71055419A9999A99F825041C3F5280CD91055413D0AD7639E8250415C8FC2C5DA1055419A9999499D82504152B81E45DC105541F6285C6F9C825041D7A3706DDD1055411F85EB819B825041F6285CAFDE10554114AE47B19882504114AE4781E210554152B81ED595825041A4703DFAE51055419A9999699582504100000030E6105541B81E85DB93825041EC51B87EE7105541713D0A9792825041F6285C8FE810554152B81E2591825041666666C6E9105541CDCCCC5C90825041EC51B86EEA105541B81E859B8F8250410AD7A310EB105541E17A148E8D8250418FC2F5C8EC105541666666A68D8250417B14AEF7EC105541000000608F825041B81E855BF01055418FC2F59890825041713D0AD7F0105541AE47E10A9282504166666696F31055419A99998993825041F6285CBFF5105541E17A144E97825041C3F5284CF91055413D0AD7A39882504148E17A04F81055413D0AD7539A8250410AD7A370F71055418FC2F5C89D825041AE47E14AF7105541B81E853B9F82504185EB5138F71055411F85EB71A082504185EB51F8F7105541D7A3709D9E825041333333D3FB105541295C8F729C825041C3F528DCFE105541D7A3704D9F8250417B14AE87011155419A9999E9A5825041666666F6051155413D0AD7A3A8825041C3F528BC08115541AE47E11AAB8250419A999989061155413D0AD773AE825041F6285C9F03115541E17A141EB1825041D7A3705D0111554133333373B2825041333333F3FF105541B81E850BB38250413D0AD743FE1055411F85EB51B3825041CDCCCC7CFD10554148E17A64B3825041713D0A47FD1055410AD7A3D0B38250415C8FC215FC1055411F85EB71B4825041F6285C4FFA105541AE47E1EAB48250419A9999F9F810554114AE4791B58250413D0AD723F7105541666666B6B58250419A9999B9F61055410C0000009A999919B9825041666666D6C31055415C8FC265B6825041F6285C8FC2105541295C8FA2B68250417B14AEC7C01055411F85EBE1B7825041B81E857BC0105541CDCCCCDCB88250411F85EB31C1105541713D0A07B98250411F85EB21C210554166666626BA8250419A9999E9C21055415C8FC255BC8250419A999999C31055415C8FC255BC825041F6285CEFC4105541713D0AA7BB825041CDCCCCBCC51055418FC2F5B8BA82504185EB5158C51055419A999919B9825041666666D6C3105541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000910F884FE68250412F2FE647A110554150D8B750E6825041A0502E47A11055410AD7A380E682504152B81E15A0105541D7A370FDE0825041713D0A879F105541476CC4A6DE825041669606419F1055410AD7A390DC825041295C8F029F105541D6E6BDEFD9825041F2C49EB39E1055412AAB9DEFD98250411B6E84B49E105541C3F5281CDD825041A4703DEA9F1055413D0AD753DE825041AE47E1AAA1105541D7A3703DDE8250418FC2F5F8A210554114AE47F1DA825041E17A14FEA41055418FC2F508D8825041666666B6A6105541D7A370BDD48250415C8FC2F5A8105541CDCCCCCCD18250411F85EB31AB105541EC51B8AECE825041CDCCCCFCAD105541B81E858BCC8250411F85EBF1AF1055410AD7A3C0CC825041AE47E17AB010554100000000CE825041CDCCCC5CB01055417B14AE67D08250411F85EB31AE105541295C8F92D2825041EC51B83EAD1055411F85EB31D38250417B14AE67AB1055417B14AEE7D38250419A999999AA105541295C8FF2D482504148E17A04AB10554148E17A04D8825041F6285C1FA91055410AD7A3E0D8825041C3F5289CA8105541D7A3703DDB825041B81E85EBA61055410AD7A3D0DC825041000000A0A610554185EB51C8DF8250417B14AE47A4105541F6285C0FE182504133333303A41055415C8FC255E28250410AD7A300A3105541AE47E15AE4825041AE47E1AAA1105541910F884FE68250412F2FE647A1105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399440 - 61862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000B0000000666666B6B58250419A9999B9F6105541A4703D4AB68250413D0AD713F51055418FC2F5B8B68250418FC2F5D8F3105541295C8F22B7825041B81E85ABF2105541A4703D7AB78250410AD7A3B0F1105541000000E0B78250419A999999F010554185EB5178B88250415C8FC2F5EE10554166666626B9825041713D0A17ED105541AE47E1AAB9825041AE47E1AAEB10554152B81ED5B98250415C8FC215E910554100000050BA8250413D0AD703E7105541A4703D8ABB825041295C8FE2E3105541C3F5280CBC825041295C8FD2E2105541A4703DCABD8250418FC2F548E010554100000070BE82504100000090DE10554152B81EB5BE825041E17A14BEDA1055417B14AE57B9825041295C8FA2D71055410AD7A390B58250418FC2F558D510554185EB5158AD82504166666606D0105541E17A142EAB82504185EB5148CE105541295C8FF2AB82504100000030CD1055411F85EB71AE825041C3F5286CCE105541666666F6B3825041666666D6D110554185EB5128B48250415C8FC295D1105541713D0AB7B8825041A4703D4AD410554185EB5138BA825041CDCCCC3CD5105541E17A14DEBD825041EC51B83ED7105541C3F5286CBF82504148E17AD4D21055410AD7A380C1825041295C8F02CD105541295C8F82C28250413D0AD7F3C91055418FC2F5D8C3825041B81E859BC71055410AD7A3D0C682504185EB51A8C310554133333333C88250411F85EB51C1105541B81E851BC9825041B81E850BC010554133333353CA8250417B14AE37BE10554100000050CC82504133333343BC105541CDCCCC9CCE825041713D0AA7B81055417B14AE87D0825041713D0A97B6105541000000E0D1825041713D0A47B510554114AE4721D4825041A4703DEAB3105541B81E850BDA825041000000E0AF105541E17A149EDF825041C3F5284CAC1055417B14AEF7E682504133333393A710554114AE47A1E5825041CDCCCC7CA41055410AD7A350E68250417B14AE47A1105541AE47E15AE4825041AE47E1AAA11055415C8FC255E28250410AD7A300A3105541F6285C0FE182504133333303A410554185EB51C8DF8250417B14AE47A41055410AD7A3D0DC825041000000A0A6105541D7A3703DDB825041B81E85EBA61055410AD7A3E0D8825041C3F5289CA810554148E17A04D8825041F6285C1FA9105541295C8FF2D482504148E17A04AB1055417B14AEE7D38250419A999999AA1055411F85EB31D38250417B14AE67AB105541295C8F92D2825041EC51B83EAD1055417B14AE67D08250411F85EB31AE10554100000000CE825041CDCCCC5CB01055410AD7A3C0CC825041AE47E17AB0105541B81E858BCC8250411F85EBF1AF105541EC51B8AECE825041CDCCCCFCAD105541CDCCCCCCD18250411F85EB31AB105541D7A370BDD48250415C8FC2F5A81055418FC2F508D8825041666666B6A610554114AE47F1DA825041E17A14FEA4105541D7A3703DDE8250418FC2F5F8A21055413D0AD753DE825041AE47E1AAA1105541C3F5281CDD825041A4703DEA9F105541C3F528ECD9825041333333B39E105541713D0A57D98250413D0AD7339F10554152B81EB5D7825041E17A140E9F105541B81E850BD6825041E17A140E9F1055417B14AE57D3825041B81E859B9E1055415C8FC225D182504152B81E859E105541F6285CCFCF825041AE47E1AA9E10554152B81EB5CE8250410AD7A3C09F10554166666666CD82504133333343A2105541F6285CFFCB82504100000090A4105541AE47E1DACA8250419A9999D9A610554148E17A64CA82504166666626A610554148E17A94C982504166666676A71055418FC2F508C982504166666626A810554114AE4771C8825041E17A14BEA81055410AD7A3E0C7825041AE47E13AA910554185EB5188C782504114AE4781A91055413D0AD723C78250410AD7A3D0A9105541713D0A37C68250410AD7A390AA105541A4703DAAC48250411F85EBD1AB1055410AD7A340C28250417B14AEC7AD105541E17A14AEC1825041E17A143EAE1055418FC2F578C282504100000040AF1055419A9999F9BF825041B81E859BB1105541B81E854BBF825041F6285CBFB0105541B81E856BBE825041A4703DAAB110554152B81E95BD8250413D0AD793B2105541CDCCCC5CBC82504185EB51E8B310554148E17AE4BC8250417B14AE67B4105541A4703D6ABC8250418FC2F568B510554185EB5158BB8250418FC2F5A8B61055417B14AEA7BA8250411F85EB11B6105541295C8F82BA82504133333343B6105541D7A3705DBA82504152B81E75B6105541B81E857BB9825041AE47E16AB710554114AE4791B8825041AE47E16AB8105541CDCCCCECB782504100000020B9105541E17A148EB58250413D0AD783BB10554152B81E65B4825041295C8FB2BC105541D7A3703DB5825041B81E857BBD105541713D0AF7B382504185EB51E8BE105541B81E856BB28250415C8FC2B5BF105541A4703DAAB1825041C3F5287CBF1055413D0AD773B182504148E17AB4BF105541CDCCCC5CB0825041CDCCCCFCC01055418FC2F528AF825041713D0A67C210554166666656AE82504100000060C31055417B14AE87AD825041295C8F52C41055410AD7A300AD825041C3F5285CC510554114AE4711AC8250413D0AD733C710554100000060AB82504148E17A34C8105541D7A3704DAA825041295C8FC2C910554185EB5158A98250415C8FC225CB1055411F85EB71A88250413D0AD773CC105541E17A143EA8825041000000C0CC10554148E17AF4A6825041A4703D9ACE1055418FC2F578A5825041CDCCCCBCD0105541CDCCCC8CA48250410AD7A310D210554152B81E35A48250413D0AD793D210554114AE47A1A382504100000070D3105541D7A370ADA2825041B81E85DBD41055417B14AE27A2825041333333A3D51055410AD7A3F0A182504152B81EF5D510554133333393A18250413D0AD773D6105541666666D6A082504148E17A74D71055419A9999A99F825041C3F5280CD91055413D0AD7639E8250415C8FC2C5DA1055419A9999499D82504152B81E45DC105541F6285C6F9C825041D7A3706DDD1055411F85EB819B825041F6285CAFDE10554114AE47B19882504114AE4781E210554152B81ED595825041A4703DFAE51055419A9999699582504100000030E6105541B81E85DB93825041EC51B87EE7105541713D0A9792825041F6285C8FE810554152B81E2591825041666666C6E9105541CDCCCC5C90825041EC51B86EEA105541B81E859B8F8250410AD7A310EB105541E17A148E8D8250418FC2F5C8EC105541666666A68D8250417B14AEF7EC105541000000608F825041B81E855BF01055418FC2F59890825041713D0AD7F0105541AE47E10A9282504166666696F31055419A99998993825041F6285CBFF5105541E17A144E97825041C3F5284CF91055413D0AD7A39882504148E17A04F81055413D0AD7539A8250410AD7A370F71055418FC2F5C89D825041AE47E14AF7105541B81E853B9F82504185EB5138F71055411F85EB71A082504185EB51F8F7105541D7A3709D9E825041333333D3FB105541295C8F729C825041C3F528DCFE105541D7A3704D9F8250417B14AE87011155419A9999E9A5825041666666F6051155413D0AD7A3A8825041C3F528BC08115541AE47E11AAB8250419A999989061155413D0AD773AE825041F6285C9F03115541E17A141EB1825041D7A3705D0111554133333373B2825041333333F3FF105541B81E850BB38250413D0AD743FE1055411F85EB51B3825041CDCCCC7CFD10554148E17A64B3825041713D0A47FD1055410AD7A3D0B38250415C8FC215FC1055411F85EB71B4825041F6285C4FFA105541AE47E1EAB48250419A9999F9F810554114AE4791B58250413D0AD723F7105541666666B6B58250419A9999B9F61055410C0000009A999919B9825041666666D6C31055415C8FC265B6825041F6285C8FC2105541295C8FA2B68250417B14AEC7C01055411F85EBE1B7825041B81E857BC0105541CDCCCCDCB88250411F85EB31C1105541713D0A07B98250411F85EB21C210554166666626BA8250419A9999E9C21055415C8FC255BC8250419A999999C31055415C8FC255BC825041F6285CEFC4105541713D0AA7BB825041CDCCCCBCC51055418FC2F5B8BA82504185EB5158C51055419A999919B9825041666666D6C3105541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000910F884FE68250412F2FE647A110554150D8B750E6825041A0502E47A11055410AD7A380E682504152B81E15A0105541D7A370FDE0825041713D0A879F105541476CC4A6DE825041669606419F1055410AD7A390DC825041295C8F029F105541D6E6BDEFD9825041F2C49EB39E1055412AAB9DEFD98250411B6E84B49E105541C3F5281CDD825041A4703DEA9F1055413D0AD753DE825041AE47E1AAA1105541D7A3703DDE8250418FC2F5F8A210554114AE47F1DA825041E17A14FEA41055418FC2F508D8825041666666B6A6105541D7A370BDD48250415C8FC2F5A8105541CDCCCCCCD18250411F85EB31AB105541EC51B8AECE825041CDCCCCFCAD105541B81E858BCC8250411F85EBF1AF1055410AD7A3C0CC825041AE47E17AB010554100000000CE825041CDCCCC5CB01055417B14AE67D08250411F85EB31AE105541295C8F92D2825041EC51B83EAD1055411F85EB31D38250417B14AE67AB1055417B14AEE7D38250419A999999AA105541295C8FF2D482504148E17A04AB10554148E17A04D8825041F6285C1FA91055410AD7A3E0D8825041C3F5289CA8105541D7A3703DDB825041B81E85EBA61055410AD7A3D0DC825041000000A0A610554185EB51C8DF8250417B14AE47A4105541F6285C0FE182504133333303A41055415C8FC255E28250410AD7A300A3105541AE47E15AE4825041AE47E1AAA1105541910F884FE68250412F2FE647A1105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978599 - 133496
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000500000000AD7A39024AD5041AE47E15A6B085541B93315771FAD5041B30911086A0855418536E1EEF8AC50418A43F8A5600855416AAA4231E3AC5041D59318AD570855416A1927FFD4AC50414980FDB75408554165A4FB06C5AC50415A258F7A4D085541B916C83FB7AC5041D9670E98470855418F223225A7AC504195B36BCE3F08554176B1E144A6AC50416F3E1E213F0855415148C9E589AC5041451FE6BA25085541F7D0A1FF8CAC5041FE65E84313085541EA185F948EAC50412937B674050855413E8B34A48FAC504130EF69EAFA075541DDB976C191AC50418C6D16D9E2075541092D12F191AC5041074CDA5FDB075541395B71B891AC50410D597767D9075541CFD8FE498FAC5041712DADB7D4075541DC3BFD8E88AC50412E2564CCC607554171529E3387AC5041E180145AC507554139E06FF385AC5041F84EC10CC4075541BE4F3A8F80AC504151999D74C0075541A71468AD71AC504107C50149B6075541FCB1609262AC5041156D7153AA07554141975B7558AC50411C76D99BA2075541D0A1066B56AC50414991AB33A1075541F7AF7D5255AC5041EACC815AA007554190BD7FDE52AC504109AD24A79D07554103AA64E94FAC50413BD88950A007554110F571C54BAC5041AFC46E5B9D0755411257F2534AAC5041AE232A199E075541BA8E9CB944AC5041701A4C00A00755413EFE66553FAC504179A12D7BA1075541DE845C2F35AC50411EFDBA16A40755412A6FB2BF35AC504103BCBCC7A50755415C180A0138AC5041AB71E05FA9075541F843D4B03CAC5041C95DA35FB1075541A8538E4541AC5041224ADC2FBF0755417901559342AC5041022DC116C90755411D605A9C42AC5041A8DF6C41CF0755419C77718840AC504189B9A088DD0755415D01FF0242AC50416FB571C9E00755413C3B0C8350AC5041A2B06F16E60755411EADC3E15FAC5041FC834E2FBE0755411039E08D84AC5041D4E904B8C907554191DEE67B82AC5041C99D2715E1075541508C4BE879AC5041621E874AFC075541BAE531094DAC5041E86357A1EC0755411622629D4CAC5041DEA94DACED07554112BA74FB47AC5041DA275307EC075541A364BB5248AC5041A09B3AF7EA0755419DE5858F45AC50416ED878F4E9075541EB75A20C47AC5041F3356485E5075541F761107A42AC504155D1BC13E407554177C2C93A3FAC504162A9E8FAE30755417A9B0A483CAC504101CFE802E8075541A7F0D8663CAC5041739F1AECEB075541BB3D2D0543AC5041439363ABF5075541D0B5B37642AC5041923FDA99FA07554144DAC8183CAC5041896CF31E0808554183503B9E3AAC50417D21E6420C0855416B26CDF63AAC5041763A1E940E0855414EB883293CAC50415F266BC3100855415DB451996CAC5041BCB98F2C270855411152D85004AD50411677CF726E0855413C2C6EA80AAD50419A45DBE56D0855416A5D95C70DAD5041BD8E19276E0855411BE57F7E11AD5041E459048771085541903DED9414AD50413D572740750855413B7A24EF15AD5041210B2FE37B085541616F4F3716AD50413A7388D57F085541BC3D95AC16AD5041F4366F63860855418AE8E38C1AAD5041696D0ECB8A085541034DD9CA1AAD5041EFDBB5348D0855415D358F161BAD5041A16114F091085541D18F88281DAD504162EBA16A930855416AEEB0F91BAD5041FCB7DE42970855412100FE2A23AD504143F263239A085541C3F5288C27AD50417B14AE978A0855419A9999D91CAD5041295C8FD2860855410AD7A39024AD5041AE47E15A6B085541
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000005DB451996CAC5041BCB98F2C27085541834678976FAC5041EEEA7C9428085541E2AE5C3C76AC504110E78AB32B085541DE8D47BEAAAC5041328C5C5E440855411152D85004AD50411677CF726E085541382C6EA80AAD50419645DBE56D0855416A5D95C70DAD5041BD8E19276E0855411DE57F7E11AD5041E259048771085541903DED9414AD50413D572740750855413E7A24EF15AD5041260B2FE37B0855415F6F4F3716AD5041367388D57F085541BF3D95AC16AD5041F0366F638608554188E8E38C1AAD50416C6D0ECB8A085541034DD9CA1AAD5041EFDBB5348D0855415D358F161BAD5041A16114F091085541D18F88281DAD504162EBA16A930855410908A9671BAD50413875D7F59708554117B70DF722AD5041D398C0DB9A085541C3F5288C27AD50417B14AE978A0855419A9999D91CAD5041295C8FD2860855410AD7A39024AD5041AE47E15A6B085541D5703AC51FAD504180B9581C6A085541A616E82A1EAD5041BF172DB7690855418636E1EEF8AC50418943F8A5600855416AAA4231E3AC5041D59318AD570855416A1927FFD4AC50414980FDB75408554166A4FB06C5AC504157258F7A4D085541BA16C83FB7AC5041D7670E984708554192223225A7AC504198B36BCE3F08554176B1E144A6AC50416F3E1E213F0855415348C9E589AC5041441FE6BA25085541F6D0A1FF8CAC5041FB65E84313085541EA185F948EAC50412937B67405085541119F26628FAC50413E8C167AFD075541428B34A48FAC504132EF69EAFA075541DBB976C191AC50418A6D16D9E2075541092D12F191AC5041074CDA5FDB075541375B71B891AC504108597767D9075541CED8FE498FAC5041752DADB7D4075541E03BFD8E88AC50412E2564CCC607554138E06FF385AC5041F54EC10CC4075541BD4F3A8F80AC50414E999D74C0075541A71468AD71AC504107C50149B6075541FCB1609262AC5041156D7153AA07554181785DCA56AC5041618D6975A1075541D0A1066B56AC50414991AB33A1075541F9AF7D5255AC5041E9CC815AA007554190BD7FDE52AC504109AD24A79D07554103AA64E94FAC50413BD88950A007554110F571C54BAC5041AFC46E5B9D0755411557F2534AAC5041AA232A199E075541B78E9CB944AC5041751A4C00A00755413CFE66553FAC504179A12D7BA1075541DB845C2F35AC504121FDBA16A4075541296FB2BF35AC5041FEBBBCC7A50755415D180A0138AC5041B071E05FA90755418E78F20439AC504170877A1BAB075541EA6037823AAC504127B58088AD075541FC9041753AAC5041C99F1890AD075541FA43D4B03CAC5041C85DA35FB10755415A3905B73EAC50413B1E2F7AB7075541AB538E4541AC5041234ADC2FBF0755417A01559342AC5041062DC116C90755411E605A9C42AC5041A7DF6C41CF0755419C77718840AC504189B9A088DD0755415D01FF0242AC50416FB571C9E0075541373B0C8350AC50419DB06F16E60755411EADC3E15FAC5041FC834E2FBE0755411039E08D84AC5041D4E904B8C907554191DEE67B82AC5041C99D2715E1075541508C4BE879AC5041621E874AFC075541B6E531094DAC5041EA6357A1EC0755411422629D4CAC5041E2A94DACED07554111BA74FB47AC5041DB275307EC075541A564BB5248AC50419D9B3AF7EA0755419DE5858F45AC50416ED878F4E9075541EC75A20C47AC5041F5356485E5075541F861107A42AC504157D1BC13E407554177C2C93A3FAC504162A9E8FAE30755417A9B0A483CAC504101CFE802E8075541A7F0D8663CAC5041739F1AECEB075541BB3D2D0543AC5041439363ABF5075541D0B5B37642AC5041923FDA99FA07554144DAC8183CAC5041896CF31E0808554183503B9E3AAC50417D21E6420C0855416F26CDF63AAC5041733A1E940E08554151B883293CAC50415F266BC31008554181F1887141AC5041C6B3F834130855410F8914BC56AC50413C91D40E1D0855415DB451996CAC5041BCB98F2C27085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967165 - 3517568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C0000008A490B105A4B5141D5DD29B85C0155415E4A1B03544B51415584BC635C015541123A22B8424B51418127E93D5B01554103B21505424B5141381D98315B015541883B68B53C4B514122A5195F5A015541446CEE3D3B4B51411366B7F85C01554152642BD43A4B51413164710A5E015541F3746E5B384B514142DBE0F8630155418B1CFD08364B514132DCA9566A01554111A06CC6344B51418CC671ED6D015541B7F88EE8344B514120306ADC73015541307D5615444B5141F0E16D2A7301554179350A10454B5141ECD9B71E73015541D567BF6F524B5141774AC97E72015541ABE272DD5F4B51413D6217E2710155411A81BCC6664B5141792011877101554165A7FE2F6A4B514103ADE3CB64015541B5A7C1B76B4B51416B96EEEC5E015541A0C3FA736C4B51412E1502045C015541B79D15AC784B5141A63E353645015541633E644F7A4B5141409CAE1A42015541DD2DE28D6C4B514115ACB175400155411BE975696C4B51419DF694E740015541729FFFA76B4B5141C26D6D26440155411347E060694B51417320B7EE4D015541500D07D6684B5141E246044350015541101258C9654B514196FDC05B5D0155418A490B105A4B5141D5DD29B85C015541
+</a>
+
+<b>
+010600000001000000010300000001000000110000005E4A1B03544B51415584BC635C0155418A490B105A4B5141D5DD29B85C015541101258C9654B514196FDC05B5D015541020797DE664B514115D808575D015541A001163C684B51411AE71F88590155418FF8B5886A4B5141B7149BF64D0155410FF08BB06C4B5141FB381BC444015541950925D96D4B5141C82B98984001554181B693876C4B51412A9B097040015541B81E856B4D4B5141333333B33C0155410AD7A320434B5141AE47E10A4F01554185EB51C8414B51410AD7A37051015541666666563F4B5141CDCCCCCC5501554128E793C73C4B5141C570565B5A015541D08FB18D424B51417AC9FD3A5B015541FD3322B8424B51411627E93D5B0155415E4A1B03544B51415584BC635C015541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967165 - 3517987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C0000008A490B105A4B5141D5DD29B85C0155415E4A1B03544B51415584BC635C015541123A22B8424B51418127E93D5B01554103B21505424B5141381D98315B015541883B68B53C4B514122A5195F5A015541446CEE3D3B4B51411366B7F85C01554152642BD43A4B51413164710A5E015541F3746E5B384B514142DBE0F8630155418B1CFD08364B514132DCA9566A01554111A06CC6344B51418CC671ED6D015541B7F88EE8344B514120306ADC73015541307D5615444B5141F0E16D2A7301554179350A10454B5141ECD9B71E73015541D567BF6F524B5141774AC97E72015541ABE272DD5F4B51413D6217E2710155411A81BCC6664B5141792011877101554165A7FE2F6A4B514103ADE3CB64015541B5A7C1B76B4B51416B96EEEC5E015541A0C3FA736C4B51412E1502045C015541B79D15AC784B5141A63E353645015541633E644F7A4B5141409CAE1A42015541DD2DE28D6C4B514115ACB175400155411BE975696C4B51419DF694E740015541729FFFA76B4B5141C26D6D26440155411347E060694B51417320B7EE4D015541500D07D6684B5141E246044350015541101258C9654B514196FDC05B5D0155418A490B105A4B5141D5DD29B85C015541
+</a>
+
+<b>
+010600000001000000010300000001000000190000008A490B105A4B5141D5DD29B85C0155415E4A1B03544B51415584BC635C015541FD3322B8424B51411627E93D5B015541D08FB18D424B51417AC9FD3A5B01554128E793C73C4B5141C570565B5A015541F6285C2F3B4B5141295C8F325D015541EC51B88E384B5141CDCCCC6C63015541F3746E5B384B514142DBE0F8630155418B1CFD08364B514132DCA9566A015541A4703DBA344B5141C3F528EC6D015541666666E6344B5141000000E073015541307D5615444B5141F0E16D2A7301554179350A10454B5141ECD9B71E73015541D567BF6F524B5141774AC97E7201554152B81ED5664B5141AE47E18A7101554165A7FE2F6A4B514103ADE3CB64015541713D0A876C4B5141713D0AE75B01554185EB51687A4B5141AE47E11A42015541950925D96D4B5141C82B9898400155410FF08BB06C4B5141FB381BC4440155418FF8B5886A4B5141B7149BF64D015541A001163C684B51411AE71F8859015541020797DE664B514115D808575D015541101258C9654B514196FDC05B5D0155418A490B105A4B5141D5DD29B85C015541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2848831 - 3068718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000014AE4741F73B5141000000C0B46B54413D0AD773F83B51415C8FC2A5B16B5441F6285CBFF93B51418FC2F558AF6B5441F6285C7FFD3B51410AD7A310A96B5441C3F5289C033C5141CDCCCC1CA26B5441B81E855B063C51411F85EBB19F6B5441000000700C3C5141E17A143E9A6B544114AE47F1063C5141E17A140E9E6B544114AE4731013C5141333333B3A16B5441AE47E13AFA3B51413D0AD7C3A56B54417B14AE17F43B5141E17A149EA86B5441B81E853BEE3B51411F85EB01AB6B544185EB5138E63B514133333343AE6B5441EC51B86EE53B5141D7A3708DAE6B5441B81E85ABDF3B5141F6285CAFC56B544148E17A24E23B51411F85EB01C46B54411F85EB01E63B5141F6285CEFC06B54413D0AD743EB3B5141A4703DFABB6B544100000030ED3B5141666666C6BC6B5441CDCCCCDCEE3B51411F85EB61BD6B54419A999909F03B51410AD7A360BD6B54419A999979F13B5141F6285CEFBC6B54413D0AD713F53B51417B14AE57B86B544114AE4741F73B5141000000C0B46B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2848831 - 3316765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000014AE4741F73B5141000000C0B46B54413D0AD773F83B51415C8FC2A5B16B5441F6285CBFF93B51418FC2F558AF6B5441F6285C7FFD3B51410AD7A310A96B5441C3F5289C033C5141CDCCCC1CA26B5441B81E855B063C51411F85EBB19F6B5441000000700C3C5141E17A143E9A6B544114AE47F1063C5141E17A140E9E6B544114AE4731013C5141333333B3A16B5441AE47E13AFA3B51413D0AD7C3A56B54417B14AE17F43B5141E17A149EA86B5441B81E853BEE3B51411F85EB01AB6B544185EB5138E63B514133333343AE6B5441EC51B86EE53B5141D7A3708DAE6B5441B81E85ABDF3B5141F6285CAFC56B544148E17A24E23B51411F85EB01C46B54411F85EB01E63B5141F6285CEFC06B54413D0AD743EB3B5141A4703DFABB6B544100000030ED3B5141666666C6BC6B5441CDCCCCDCEE3B51411F85EB61BD6B54419A999909F03B51410AD7A360BD6B54419A999979F13B5141F6285CEFBC6B54413D0AD713F53B51417B14AE57B86B544114AE4741F73B5141000000C0B46B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990468 - 398615
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003C000000CDCCCC1C42AA50417B14AE472FD9544185EB51983DAA5041B81E854B34D95441CDCCCC6C39AA50415C8FC2952FD95441EC51B8BE33AA50415C8FC2252CD95441E17A143E34AA5041EC51B83E2BD95441CDCCCCEC30AA50410AD7A3D029D95441295C8FE22CAA5041295C8F1228D954415C8FC2652AAA50410AD7A30027D954413D0AD74327AA5041713D0AA725D95441A4703DCA22AA50418FC2F5B823D95441F6285CAF1FAA50410000008023D95441C3F5281C1DAA5041F6285C8F27D954410AD7A3B011AA504114AE473129D9544152B81EE50BAA504185EB51882BD9544152B81E450FAA504148E17A342ED954410AD7A3D011AA504148E17AE42ED9544152B81E2511AA50413D0AD72330D95441AE47E13A0AAA504148E17A442ED95441A4703DEA0BAA50415C8FC2B531D95441E17A141E0AAA5041EC51B8DE32D9544185EB51D80CAA50411F85EBF13BD954417B14AE1706AA5041E17A141E43D9544148E17A3409AA5041000000C045D9544152B81EA511AA50418FC2F5183BD95441E17A146E12AA50418FC2F5A839D95441F6285CDF16AA504114AE47B131D954416666663617AA50419A99995930D95441333333D31DAA50413D0AD78332D954415C8FC25520AA504152B81E3534D954413D0AD72328AA5041C3F5284C3DD954411F85EB912EAA504152B81E1542D954410000000030AA50410000007044D95441295C8FC231AA504152B81E6545D954416666664638AA5041000000004BD95441D7A3708D3DAA50413D0AD72349D954410000008031AA504152B81EC55BD9544185EB51383AAA50418FC2F56854D954417B14AE373DAA50410000007052D9544114AE47013FAA504148E17A8451D95441000000B041AA504185EB511853D95441713D0A3748AA5041B81E85DB5DD95441AE47E17A4BAA5041D7A370ED68D95441713D0AA74FAA504152B81EA566D954410000008050AA5041D7A3707D5BD954418FC2F5F854AA5041AE47E1DA5AD95441EC51B88E55AA5041E17A140E57D95441B81E851B50AA50415C8FC2654ED954413333330356AA5041A4703D4A4AD95441EC51B8CE53AA5041D7A3707D49D954410AD7A34050AA504185EB512849D95441EC51B84E4EAA504114AE47A149D95441333333E34CAA50419A99997947D95441713D0A7744AA50415C8FC27541D95441295C8FA243AA50418FC2F54840D95441295C8F7247AA504152B81E653BD95441AE47E16A47AA5041F6285C6F39D9544148E17A6447AA5041713D0A7738D954419A99991946AA5041E17A149E36D954410AD7A34045AA50411F85EB2135D95441CDCCCC1C42AA50417B14AE472FD95441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000045C8FA243AA504146C2F54840D95441ADA46F8D43AA5041A3D6061F40D9544149AE0B8443AA504160B4620C40D95441427B147243AA5041C8C7B8E83FD954414914586D43AA5041C80652DF3FD954415A7E434D43AA50418120A39F3FD95441B3A0CB9C40AA50411B64F5483AD954417E658EED3EAA5041AC53E7F036D954414FEB51983DAA5041E31E854B34D954413FD4CBFF39AA50410BACCA3B30D95441CDCCCC6C39AA50415C8FC2952FD954414051B8BE33AA5041728FC2252CD95441C17A143E34AA50410C52B83E2BD954416EF1155732AA50415A66CD6C2AD95441CDCCCCEC30AA50410AD7A3D029D95441295C8FE22CAA5041295C8F1228D95441A6FBB1F72AAA504123066A3F27D95441518FC2652AAA504115D7A30027D954416071BEB329AA50414CD2EBB326D954413D0AD74327AA5041713D0AA725D95441D36535CA22AA50410C2FF5B823D95441F6285CAF1FAA50410000008023D95441A0B250A01DAA504126B1FDBE26D954415C491F511DAA5041D64FC74B27D954414994C9441DAA50418C834D4F27D95441C3F5281C1DAA5041F6285C8F27D95441B085C7AE19AA5041A94BC80C28D95441701D4CBB13AA5041EE5E4FFE28D954414466467A13AA5041A852DCEF28D954415AB31B7913AA5041AA0507F028D95441EA217D7213AA50412D43F9F028D95441DD42744713AA5041802220F728D9544115D7A3B011AA504175AE473129D9544145FE8DE70BAA5041113F56872BD954410E06FCE50BAA50414937E8882BD95441565E4A790DAA504177D8CE9A2CD95441726CFB2D0EAA5041FCD185152DD95441AE57A25A0FAA50416E10B5E12DD954410AD7A3D011AA504148E17AE42ED954414666663617AA50417999995930D95441743333D31DAA5041FD09D78332D95441318FC25520AA504152B81E3534D95441080AD72328AA504198F5284C3DD954413F85EB912EAA504132B81E1542D95441ADCCCC1C34AA50416D1E858B43D954413E5C8F323AAA5041A78FC26543D95441045C8FA243AA504146C2F54840D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 170790
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441295C8FD26E1551413D0AD793D6DB54413333338375155141333333F3CFDB5441F6285C2F7B155141D7A3709DCBDB5441D7A3703D8115514148E17A94C6DB544100000010851551415C8FC285C3DB54410AD7A3A08B1551418FC2F5A8BDDB5441333333638F155141EC51B85EB8DB544114AE4791951551419A9999E9B0DB544152B81E2597155141CDCCCC7CB1DB54411F85EBB19A155141F6285C2FB6DB544148E17A34A01551415C8FC2C5ADDB5441010300000001000000630000005C8FC205E1155141333333E38BDB5441EC51B8CEE2155141666666768CDB5441666666A6E7155141A4703D5A8DDB5441713D0A07EB15514114AE47C18EDB54411F85EB31ED1551415C8FC2A58FDB544152B81E55F41551415C8FC22589DB5441E17A141EF6155141713D0A2786DB544152B81EA5F7155141C3F528EC83DB54415C8FC285F4155141AE47E1AA83DB544152B81E15F11551411F85EB1185DB54415C8FC2F5ED1551413333335385DB5441AE47E1DAEB1551413D0AD78385DB54419A999949E8155141295C8F7288DB54417B14AEB7E4155141000000308BDB54410AD7A330E315514114AE47818BDB54418FC2F5B8E1155141EC51B8EE8ADB544152B81E25E4155141295C8F7288DB5441295C8FE2E61551418FC2F59886DB5441AE47E19AE81551413D0AD79385DB5441A4703D6AE8155141713D0AE782DB5441D7A3701DE9155141D7A370FD80DB54415C8FC2C5EA155141B81E858B80DB54410AD7A3F0EC155141295C8F0282DB5441D7A3709DEF15514148E17A6482DB5441CDCCCCBCF21551415C8FC2A582DB5441C3F528BCF51551413333333382DB54418FC2F568F8155141F6285C5F81DB544114AE4711FA15514148E17A247FDB5441B81E851BFC155141713D0A777CDB54413D0AD7E3FD155141D7A3706D7ADB5441F6285C2F00165141E17A149E7ADB5441D7A370CDFF1551417B14AE977CDB544166666656FE155141000000307EDB544185EB51C8FE155141713D0AA77FDB544114AE4791001651418FC2F50880DB54415C8FC2B504165141333333E37EDB5441A4703DEA0816514152B81E157CDB54413D0AD7D30A16514114AE47517BDB5441000000500D165141CDCCCC5C7ADB5441B81E859B0F1651413D0AD79378DB5441B81E85DB12165141B81E85CB76DB5441F6285CEF161651419A99993973DB5441713D0AB71B1651415C8FC2356FDB54419A9999991D165141AE47E17A6BDB54418FC2F52820165141713D0A4766DB544185EB51581E1651411F85EBA162DB544148E17A64101651417B14AEB76DDB5441D7A3704D0A1651410AD7A3E070DB544152B81EB5011651415C8FC29573DB54413D0AD7E3FA155141000000C076DB54419A9999C9F415514152B81E257BDB544152B81EA5E91551415C8FC2D57DDB54415C8FC285E41551419A9999F97DDB54419A999909E5155141713D0AB77FDB5441C3F5285CE21551417B14AED77FDB54418FC2F568DE155141A4703D4A80DB5441A4703D6ADB155141CDCCCCCC80DB54419A999909D8155141CDCCCCCC80DB54410AD7A3D0D5155141A4703DBA7FDB5441AE47E1CAD4155141E17A146E80DB5441F6285C0FCE155141EC51B80E85DB54410AD7A380CF15514185EB519886DB5441E17A146ED215514148E17AA485DB54419A9999D9D4155141295C8F3285DB544185EB51D8D7155141C3F528FC83DB54411F85EBD1D9155141AE47E1BA83DB5441A4703D6ADB155141000000C084DB5441295C8F12DD15514185EB516886DB544100000090DC1551415C8FC23589DB5441666666B6DA155141C3F5287C8ADB5441E17A14FED8155141A4703D0A8ADB5441F6285C0FD615514185EB51A889DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB5441333333E3C1155141EC51B82E93DB5441A4703DCABF155141F6285CBF90DB5441AE47E12ABF1551411F85EB0190DB5441CDCCCCACB91551413D0AD7B394DB544185EB51D8B21551419A9999299BDB54419A9999C9AE1551419A9999C99EDB54411F85EB11AC15514152B81E15A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544133333323B215514185EB5158A3DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB5441C3F5280CD215514185EB51A896DB5441E17A14BED5155141333333A395DB5441EC51B80ED915514114AE473195DB5441CDCCCCECDB155141D7A3706D94DB54419A999999DE1551415C8FC2E592DB54410AD7A3F0DF155141AE47E1BA90DB544133333383E015514114AE47B18EDB544185EB5148DE155141666666968CDB54419A999989DE155141F6285C0F8BDB54415C8FC205E1155141333333E38BDB5441010300000001000000630000008FC2F51851165141666666F622DB5441666666464416514152B81EA52ADB5441000000503E165141D7A3700D30DB544148E17AE4371651415C8FC28534DB54415C8FC27531165141E17A146E3ADB5441C3F5288C2C1651417B14AEB73FDB5441A4703D0A241651411F85EB214ADB5441E17A148E1D1651415C8FC24551DB5441E17A145E0F165141AE47E18A61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB544148E17A9418165141F6285C7F62DB54417B14AEA7191651418FC2F57860DB5441F6285C2F1C165141295C8F325EDB54415C8FC2551E165141EC51B80E5DDB54410AD7A3E021165141A4703D7A5BDB54419A9999E92416514148E17A7459DB5441D7A370BD281651418FC2F5E858DB54418FC2F5782D16514152B81E8556DB5441C3F5289C30165141295C8FF254DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54419A9999F95416514152B81E6534DB544185EB519854165141D7A370CD31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB5441713D0AF75E165141713D0A272ADB5441000000E0611651413333330329DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54410AD7A31096165141A4703D2A17DB5441CDCCCC5C981651415C8FC2A51ADB54410AD7A380991651417B14AE071DDB5441E17A14DEA2165141CDCCCC2C1ADB5441D7A3702DA1165141EC51B86E17DB54411F85EB619D1651415C8FC28514DB5441295C8F2298165141A4703D8A10DB54419A99993995165141295C8F020EDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB54410AD7A3A0A716514152B81E3504DB54415C8FC235AA165141EC51B82E08DB5441B81E856BB3165141EC51B87E01DB5441B81E85BBBC165141A4703D0AFCDA5441B81E859BC516514133333313F8DA5441C3F5280CC5165141C3F5280CF7DA5441AE47E1BAD01651415C8FC265EBDA54419A999979DD1651410AD7A360E2DA5441295C8F12EB16514148E17A74E1DA54411F85EB31ED165141E17A149ED3DA54410AD7A340ED1651417B14AE17D2DA54411F85EBF1E2165141CDCCCC2CD3DA54413D0AD7B3D6165141666666D6D4DA544166666676D2165141EC51B86ED6DA54415C8FC2F5CA1651415C8FC2B5D9DA5441E17A14EEC216514114AE4731DFDA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441713D0AD767165141CDCCCC7C17DB5441AE47E17A5F165141666666A61BDB54418FC2F51851165141666666F622DB54410103000000010000001500000014AE47112F1551417B14AE1710DC5441F6285C4F311551410AD7A3A00EDC5441713D0AC73A1551416666661607DC54417B14AE97481551411F85EBC1FCDB54418FC2F5584F155141333333A3F8DB5441000000A058155141CDCCCCBCF5DB5441B81E85BB5C15514100000090EADB5441713D0AF75E155141CDCCCCFCE4DB54415C8FC23562155141E17A141EDFDB544152B81E0567155141F6285CFFD6DB544185EB516869155141295C8FE2D0DB54413D0AD71368155141CDCCCCFCCFDB5441CDCCCC3C64155141EC51B8EED6DB544114AE47715C1551417B14AE37DEDB5441B81E853B55155141D7A3702DE6DB54415C8FC2054C15514148E17A44EFDB5441295C8FE2391551410AD7A330FFDB5441CDCCCC0C331551419A9999C904DC544185EB51282B155141A4703DCA0CDC5441CDCCCC9C2B15514152B81E1510DC544114AE47112F1551417B14AE1710DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000007500000014AE4791A2165141D7A3709D01DB5441BC3A2C60A816514178F19B9BFEDA5441F3D15A92B11651411804F9F3FADA544145532CD4BB1651413CB5E1C2F3DA5441287ECC22C2165141C4B0437DEDDA544165EF5AEAC816514174BC3E07E7DA54419E3C72CFCE1651414A59CA31E2DA544170EBCD1EDA165141D2D97004DEDA5441DED66BD8DC165141723CD567DDDA5441084CEF03E016514145DA4692DCDA5441F20F3621E316514184B5F348D4DA544160EC793AD71651419B52A49ED5DA5441010CB280D3165141B68F8B0AD6DA544166666676D2165141EC51B86ED6DA5441A71F372BD11651410C4466FFD6DA54411E04B661CA16514107028975DBDA5441027C3DE0C416514136ED3BE8DEDA5441F30E2647B416514123B9DFAEE9DA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441EAB8B1F56716514153452B7017DB54417641B17060165141B123022C1BDB5441D2F3BAE85016514185E44B1323DB544169A9BA674A165141D768DEF826DB544135423FCC4416514149FC44272BDB5441544033043F165141EE5D036A2FDB5441000000503E165141D7A3700D30DB54414BA8685739165141F40C0CB834DB544111BDB5E435165141E8D052D537DB544127F96EC732165141F8CFA6B93ADB544152218738301651418DF6513A3DDB544130FBB1452C1651416AF5BAD740DB54416523CAB62916514185F40EBC43DB5441C6270F312416514165A165F249DB5441A4703D0A241651411F85EB214ADB544178D8A17A1D165141B2C846DC51DB5441A62BD6AF0F165141C7C314C461DB544187D997A70F1651418FD1A2CD61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB5441205EEF5518165141CDDC1A9262DB5441B241AEA218165141FC1F9C6462DB54417B14AEA7191651418FC2F57860DB544162FFCEAC191651410B2C597460DB5441F6285C2F1C165141295C8F325EDB544129BAA46C1C16514155C510125EDB54415C8FC2551E165141EC51B80E5DDB54418A6EE4B9211651413C9F858B5BDB5441AD902CCA2316514123B304345ADB54419A9999E92416514148E17A7459DB544196A1BFF22416514194652D7359DB544189AD85B6281651411A9FACC158DB544133E8BCEF291651418F50D41658DB5441806033E82A16514106ACCBD057DB544107419D452B165141D3B89EA157DB5441575201BB2B16514147DF556657DB5441210619202C165141DD24483357DB5441D3A82A9C30165141B58512EE54DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54416C99EB944F165141921E693337DB5441B91862F954165141320EA46334DB5441E54246E154165141808529BF33DB5441C28B59BB5416514199166DBC32DB5441BFFA70B754165141E6DAC2A132DB54415C49DDB054165141E814E47432DB5441B8D0D37D541651414AE91F4C31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB544149F7B36A5D1651412F63AF0D2ADB54412AEB6FE15E165141EC86EB6D29DB54418B11301B62165141029B772628DB5441344F6627621651413FF7AB2028DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54418A2B7AD6941651413967DF6F0DDB544148AF21099516514112D1584D0DDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 251771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441295C8FD26E1551413D0AD793D6DB54413333338375155141333333F3CFDB5441F6285C2F7B155141D7A3709DCBDB5441D7A3703D8115514148E17A94C6DB544100000010851551415C8FC285C3DB54410AD7A3A08B1551418FC2F5A8BDDB5441333333638F155141EC51B85EB8DB544114AE4791951551419A9999E9B0DB544152B81E2597155141CDCCCC7CB1DB54411F85EBB19A155141F6285C2FB6DB544148E17A34A01551415C8FC2C5ADDB5441010300000001000000630000005C8FC205E1155141333333E38BDB5441EC51B8CEE2155141666666768CDB5441666666A6E7155141A4703D5A8DDB5441713D0A07EB15514114AE47C18EDB54411F85EB31ED1551415C8FC2A58FDB544152B81E55F41551415C8FC22589DB5441E17A141EF6155141713D0A2786DB544152B81EA5F7155141C3F528EC83DB54415C8FC285F4155141AE47E1AA83DB544152B81E15F11551411F85EB1185DB54415C8FC2F5ED1551413333335385DB5441AE47E1DAEB1551413D0AD78385DB54419A999949E8155141295C8F7288DB54417B14AEB7E4155141000000308BDB54410AD7A330E315514114AE47818BDB54418FC2F5B8E1155141EC51B8EE8ADB544152B81E25E4155141295C8F7288DB5441295C8FE2E61551418FC2F59886DB5441AE47E19AE81551413D0AD79385DB5441A4703D6AE8155141713D0AE782DB5441D7A3701DE9155141D7A370FD80DB54415C8FC2C5EA155141B81E858B80DB54410AD7A3F0EC155141295C8F0282DB5441D7A3709DEF15514148E17A6482DB5441CDCCCCBCF21551415C8FC2A582DB5441C3F528BCF51551413333333382DB54418FC2F568F8155141F6285C5F81DB544114AE4711FA15514148E17A247FDB5441B81E851BFC155141713D0A777CDB54413D0AD7E3FD155141D7A3706D7ADB5441F6285C2F00165141E17A149E7ADB5441D7A370CDFF1551417B14AE977CDB544166666656FE155141000000307EDB544185EB51C8FE155141713D0AA77FDB544114AE4791001651418FC2F50880DB54415C8FC2B504165141333333E37EDB5441A4703DEA0816514152B81E157CDB54413D0AD7D30A16514114AE47517BDB5441000000500D165141CDCCCC5C7ADB5441B81E859B0F1651413D0AD79378DB5441B81E85DB12165141B81E85CB76DB5441F6285CEF161651419A99993973DB5441713D0AB71B1651415C8FC2356FDB54419A9999991D165141AE47E17A6BDB54418FC2F52820165141713D0A4766DB544185EB51581E1651411F85EBA162DB544148E17A64101651417B14AEB76DDB5441D7A3704D0A1651410AD7A3E070DB544152B81EB5011651415C8FC29573DB54413D0AD7E3FA155141000000C076DB54419A9999C9F415514152B81E257BDB544152B81EA5E91551415C8FC2D57DDB54415C8FC285E41551419A9999F97DDB54419A999909E5155141713D0AB77FDB5441C3F5285CE21551417B14AED77FDB54418FC2F568DE155141A4703D4A80DB5441A4703D6ADB155141CDCCCCCC80DB54419A999909D8155141CDCCCCCC80DB54410AD7A3D0D5155141A4703DBA7FDB5441AE47E1CAD4155141E17A146E80DB5441F6285C0FCE155141EC51B80E85DB54410AD7A380CF15514185EB519886DB5441E17A146ED215514148E17AA485DB54419A9999D9D4155141295C8F3285DB544185EB51D8D7155141C3F528FC83DB54411F85EBD1D9155141AE47E1BA83DB5441A4703D6ADB155141000000C084DB5441295C8F12DD15514185EB516886DB544100000090DC1551415C8FC23589DB5441666666B6DA155141C3F5287C8ADB5441E17A14FED8155141A4703D0A8ADB5441F6285C0FD615514185EB51A889DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB5441333333E3C1155141EC51B82E93DB5441A4703DCABF155141F6285CBF90DB5441AE47E12ABF1551411F85EB0190DB5441CDCCCCACB91551413D0AD7B394DB544185EB51D8B21551419A9999299BDB54419A9999C9AE1551419A9999C99EDB54411F85EB11AC15514152B81E15A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544133333323B215514185EB5158A3DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB5441C3F5280CD215514185EB51A896DB5441E17A14BED5155141333333A395DB5441EC51B80ED915514114AE473195DB5441CDCCCCECDB155141D7A3706D94DB54419A999999DE1551415C8FC2E592DB54410AD7A3F0DF155141AE47E1BA90DB544133333383E015514114AE47B18EDB544185EB5148DE155141666666968CDB54419A999989DE155141F6285C0F8BDB54415C8FC205E1155141333333E38BDB5441010300000001000000630000008FC2F51851165141666666F622DB5441666666464416514152B81EA52ADB5441000000503E165141D7A3700D30DB544148E17AE4371651415C8FC28534DB54415C8FC27531165141E17A146E3ADB5441C3F5288C2C1651417B14AEB73FDB5441A4703D0A241651411F85EB214ADB5441E17A148E1D1651415C8FC24551DB5441E17A145E0F165141AE47E18A61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB544148E17A9418165141F6285C7F62DB54417B14AEA7191651418FC2F57860DB5441F6285C2F1C165141295C8F325EDB54415C8FC2551E165141EC51B80E5DDB54410AD7A3E021165141A4703D7A5BDB54419A9999E92416514148E17A7459DB5441D7A370BD281651418FC2F5E858DB54418FC2F5782D16514152B81E8556DB5441C3F5289C30165141295C8FF254DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54419A9999F95416514152B81E6534DB544185EB519854165141D7A370CD31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB5441713D0AF75E165141713D0A272ADB5441000000E0611651413333330329DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54410AD7A31096165141A4703D2A17DB5441CDCCCC5C981651415C8FC2A51ADB54410AD7A380991651417B14AE071DDB5441E17A14DEA2165141CDCCCC2C1ADB5441D7A3702DA1165141EC51B86E17DB54411F85EB619D1651415C8FC28514DB5441295C8F2298165141A4703D8A10DB54419A99993995165141295C8F020EDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB54410AD7A3A0A716514152B81E3504DB54415C8FC235AA165141EC51B82E08DB5441B81E856BB3165141EC51B87E01DB5441B81E85BBBC165141A4703D0AFCDA5441B81E859BC516514133333313F8DA5441C3F5280CC5165141C3F5280CF7DA5441AE47E1BAD01651415C8FC265EBDA54419A999979DD1651410AD7A360E2DA5441295C8F12EB16514148E17A74E1DA54411F85EB31ED165141E17A149ED3DA54410AD7A340ED1651417B14AE17D2DA54411F85EBF1E2165141CDCCCC2CD3DA54413D0AD7B3D6165141666666D6D4DA544166666676D2165141EC51B86ED6DA54415C8FC2F5CA1651415C8FC2B5D9DA5441E17A14EEC216514114AE4731DFDA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441713D0AD767165141CDCCCC7C17DB5441AE47E17A5F165141666666A61BDB54418FC2F51851165141666666F622DB54410103000000010000001500000014AE47112F1551417B14AE1710DC5441F6285C4F311551410AD7A3A00EDC5441713D0AC73A1551416666661607DC54417B14AE97481551411F85EBC1FCDB54418FC2F5584F155141333333A3F8DB5441000000A058155141CDCCCCBCF5DB5441B81E85BB5C15514100000090EADB5441713D0AF75E155141CDCCCCFCE4DB54415C8FC23562155141E17A141EDFDB544152B81E0567155141F6285CFFD6DB544185EB516869155141295C8FE2D0DB54413D0AD71368155141CDCCCCFCCFDB5441CDCCCC3C64155141EC51B8EED6DB544114AE47715C1551417B14AE37DEDB5441B81E853B55155141D7A3702DE6DB54415C8FC2054C15514148E17A44EFDB5441295C8FE2391551410AD7A330FFDB5441CDCCCC0C331551419A9999C904DC544185EB51282B155141A4703DCA0CDC5441CDCCCC9C2B15514152B81E1510DC544114AE47112F1551417B14AE1710DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000005B00000049D70C3A1E165141A904F8B962DB544148E17A64101651417B14AEB76DDB544122C570F60E1651415BA09C756EDB54417C8388840D1651417154F2916FDB5441E19A9C1A06165141706159C172DB544189DBFA3A0416514177574B9973DB5441DE0BE35AFC155141EE3AA1B277DB54416933AE7CF5155141AE9725A47ADB54419A9999C9F415514152B81E257BDB5441C1DF8DB2F3155141F5967C687BDB5441D860A758F1155141C5A8716A7CDB5441E0CA1BECEC155141578B360B7DDB544152B81EA5E91551415C8FC2D57DDB544186D9E359E41551413A5522FB7DDB5441DC160054E21551419D936A097EDB54414F3A93E6DF15514110C58D1A7EDB54411644AA34DD155141AAC4A93A7EDB54410B23C1FDDB155141EEF5B1797EDB5441440F800CD9155141BBAE67127FDB5441D43AFBD5D5155141703928B97FDB54411527EDA9D51551416769611E81DB54413B116BF4CE155141A332EE8B85DB54413BBEB63ECF1551414B550D5286DB54410AD7A380CF15514185EB519886DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB544119629BEBD1155141540A6F748DDB5441F8C47A2ED2155141A9BCC2268EDB5441308CAC65C2155141E4B3865993DB54410E9DBF11C21551412D38171E93DB5441333333E3C1155141EC51B82E93DB5441CFC72B77C1155141DCB79EB092DB5441F6A77F3FBF1551410A2B991E91DB54414B037DC3BD1551411C21A64692DB5441B4F5BE8DBB155141C8535E0294DB54410D82B949B8155141CF49129296DB54419EB23DA3B5155141802837A698DB5441B39CC261B41551418FB1CBF899DB544170641615B01551413BD2CFA39EDB54410B37B245AC155141533AC885A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB54417B14AEB7D21551413D0AD7B397DB544100B7FE5AD8155141C6481BBB96DB5441EDCA5752DB155141C2800A3596DB54412D5B7058DD1551416C1672B895DB5441FE7C35C1DE155141376C775F95DB54413D9ED6FDDE15514172E9AF4895DB54418156264BE0155141491157B494DB5441EC6D4E97E11551417ECC812094DB5441BE8BB151E315514163948E5C93DB5441C5B18B18E7155141ECB100FF91DB5441F0B6851BE7155141E4D6B1FE91DB5441CDCCCC2CE71551417B14AEF791DB544190669C5FEB1551414DD0AE8D91DB5441C80720CCEE15514198ABFA3291DB5441A98C9A3CF11551412505949E8EDB5441C8F13FACF215514146A2C8198DDB5441D5E1CF50F4155141D474075D8BDB54417B14AE57F5155141713D0A478ADB5441E2E385F4F515514138E79FC789DB5441AB3D3099F615514180C0DA4189DB54415BD5EF97F7155141FD37E77288DB54418FC2F5D8F7155141E17A143E88DB54415F106C95F9155141DF91A92887DB5441E030B0B3FA1551414B32FC7586DB544166666656FC1551410AD7A37085DB5441604D928CFC155141E647345585DB54413DE2A157FE1551410122B56C84DB544166666666001651411F85EB6183DB544165D5310F02165141565CC3D682DB5441B788DCE604165141A04A53DB81DB54418F66F4BA09165141957A1AD681DB5441CEEBBED50A165141F6B84C6480DB5441473AA2EE0B1651417E17FCF47EDB5441B46BCCD90C1651410AC5ADE07DDB5441ED783CD70D16514124B6BBC57CDB54417C2EAEE60E165141A64AAF967BDB5441D71830351016514182FD3A217ADB5441319F647E11165141F71EB2B178DB544194E6A4C8121651412D53FE4077DB544151A755FF1916514125DEC9DF72DB5441DE3998DF1C165141E7651E4B6BDB544145B7C12020165141D5CB903666DB54416ECF9B581E16514147E97FA262DB544149D70C3A1E165141A904F8B962DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 287571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441295C8FD26E1551413D0AD793D6DB54413333338375155141333333F3CFDB5441F6285C2F7B155141D7A3709DCBDB5441D7A3703D8115514148E17A94C6DB544100000010851551415C8FC285C3DB54410AD7A3A08B1551418FC2F5A8BDDB5441333333638F155141EC51B85EB8DB544114AE4791951551419A9999E9B0DB544152B81E2597155141CDCCCC7CB1DB54411F85EBB19A155141F6285C2FB6DB544148E17A34A01551415C8FC2C5ADDB5441010300000001000000630000005C8FC205E1155141333333E38BDB5441EC51B8CEE2155141666666768CDB5441666666A6E7155141A4703D5A8DDB5441713D0A07EB15514114AE47C18EDB54411F85EB31ED1551415C8FC2A58FDB544152B81E55F41551415C8FC22589DB5441E17A141EF6155141713D0A2786DB544152B81EA5F7155141C3F528EC83DB54415C8FC285F4155141AE47E1AA83DB544152B81E15F11551411F85EB1185DB54415C8FC2F5ED1551413333335385DB5441AE47E1DAEB1551413D0AD78385DB54419A999949E8155141295C8F7288DB54417B14AEB7E4155141000000308BDB54410AD7A330E315514114AE47818BDB54418FC2F5B8E1155141EC51B8EE8ADB544152B81E25E4155141295C8F7288DB5441295C8FE2E61551418FC2F59886DB5441AE47E19AE81551413D0AD79385DB5441A4703D6AE8155141713D0AE782DB5441D7A3701DE9155141D7A370FD80DB54415C8FC2C5EA155141B81E858B80DB54410AD7A3F0EC155141295C8F0282DB5441D7A3709DEF15514148E17A6482DB5441CDCCCCBCF21551415C8FC2A582DB5441C3F528BCF51551413333333382DB54418FC2F568F8155141F6285C5F81DB544114AE4711FA15514148E17A247FDB5441B81E851BFC155141713D0A777CDB54413D0AD7E3FD155141D7A3706D7ADB5441F6285C2F00165141E17A149E7ADB5441D7A370CDFF1551417B14AE977CDB544166666656FE155141000000307EDB544185EB51C8FE155141713D0AA77FDB544114AE4791001651418FC2F50880DB54415C8FC2B504165141333333E37EDB5441A4703DEA0816514152B81E157CDB54413D0AD7D30A16514114AE47517BDB5441000000500D165141CDCCCC5C7ADB5441B81E859B0F1651413D0AD79378DB5441B81E85DB12165141B81E85CB76DB5441F6285CEF161651419A99993973DB5441713D0AB71B1651415C8FC2356FDB54419A9999991D165141AE47E17A6BDB54418FC2F52820165141713D0A4766DB544185EB51581E1651411F85EBA162DB544148E17A64101651417B14AEB76DDB5441D7A3704D0A1651410AD7A3E070DB544152B81EB5011651415C8FC29573DB54413D0AD7E3FA155141000000C076DB54419A9999C9F415514152B81E257BDB544152B81EA5E91551415C8FC2D57DDB54415C8FC285E41551419A9999F97DDB54419A999909E5155141713D0AB77FDB5441C3F5285CE21551417B14AED77FDB54418FC2F568DE155141A4703D4A80DB5441A4703D6ADB155141CDCCCCCC80DB54419A999909D8155141CDCCCCCC80DB54410AD7A3D0D5155141A4703DBA7FDB5441AE47E1CAD4155141E17A146E80DB5441F6285C0FCE155141EC51B80E85DB54410AD7A380CF15514185EB519886DB5441E17A146ED215514148E17AA485DB54419A9999D9D4155141295C8F3285DB544185EB51D8D7155141C3F528FC83DB54411F85EBD1D9155141AE47E1BA83DB5441A4703D6ADB155141000000C084DB5441295C8F12DD15514185EB516886DB544100000090DC1551415C8FC23589DB5441666666B6DA155141C3F5287C8ADB5441E17A14FED8155141A4703D0A8ADB5441F6285C0FD615514185EB51A889DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB5441333333E3C1155141EC51B82E93DB5441A4703DCABF155141F6285CBF90DB5441AE47E12ABF1551411F85EB0190DB5441CDCCCCACB91551413D0AD7B394DB544185EB51D8B21551419A9999299BDB54419A9999C9AE1551419A9999C99EDB54411F85EB11AC15514152B81E15A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544133333323B215514185EB5158A3DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB5441C3F5280CD215514185EB51A896DB5441E17A14BED5155141333333A395DB5441EC51B80ED915514114AE473195DB5441CDCCCCECDB155141D7A3706D94DB54419A999999DE1551415C8FC2E592DB54410AD7A3F0DF155141AE47E1BA90DB544133333383E015514114AE47B18EDB544185EB5148DE155141666666968CDB54419A999989DE155141F6285C0F8BDB54415C8FC205E1155141333333E38BDB5441010300000001000000630000008FC2F51851165141666666F622DB5441666666464416514152B81EA52ADB5441000000503E165141D7A3700D30DB544148E17AE4371651415C8FC28534DB54415C8FC27531165141E17A146E3ADB5441C3F5288C2C1651417B14AEB73FDB5441A4703D0A241651411F85EB214ADB5441E17A148E1D1651415C8FC24551DB5441E17A145E0F165141AE47E18A61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB544148E17A9418165141F6285C7F62DB54417B14AEA7191651418FC2F57860DB5441F6285C2F1C165141295C8F325EDB54415C8FC2551E165141EC51B80E5DDB54410AD7A3E021165141A4703D7A5BDB54419A9999E92416514148E17A7459DB5441D7A370BD281651418FC2F5E858DB54418FC2F5782D16514152B81E8556DB5441C3F5289C30165141295C8FF254DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54419A9999F95416514152B81E6534DB544185EB519854165141D7A370CD31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB5441713D0AF75E165141713D0A272ADB5441000000E0611651413333330329DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54410AD7A31096165141A4703D2A17DB5441CDCCCC5C981651415C8FC2A51ADB54410AD7A380991651417B14AE071DDB5441E17A14DEA2165141CDCCCC2C1ADB5441D7A3702DA1165141EC51B86E17DB54411F85EB619D1651415C8FC28514DB5441295C8F2298165141A4703D8A10DB54419A99993995165141295C8F020EDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB54410AD7A3A0A716514152B81E3504DB54415C8FC235AA165141EC51B82E08DB5441B81E856BB3165141EC51B87E01DB5441B81E85BBBC165141A4703D0AFCDA5441B81E859BC516514133333313F8DA5441C3F5280CC5165141C3F5280CF7DA5441AE47E1BAD01651415C8FC265EBDA54419A999979DD1651410AD7A360E2DA5441295C8F12EB16514148E17A74E1DA54411F85EB31ED165141E17A149ED3DA54410AD7A340ED1651417B14AE17D2DA54411F85EBF1E2165141CDCCCC2CD3DA54413D0AD7B3D6165141666666D6D4DA544166666676D2165141EC51B86ED6DA54415C8FC2F5CA1651415C8FC2B5D9DA5441E17A14EEC216514114AE4731DFDA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441713D0AD767165141CDCCCC7C17DB5441AE47E17A5F165141666666A61BDB54418FC2F51851165141666666F622DB54410103000000010000001500000014AE47112F1551417B14AE1710DC5441F6285C4F311551410AD7A3A00EDC5441713D0AC73A1551416666661607DC54417B14AE97481551411F85EBC1FCDB54418FC2F5584F155141333333A3F8DB5441000000A058155141CDCCCCBCF5DB5441B81E85BB5C15514100000090EADB5441713D0AF75E155141CDCCCCFCE4DB54415C8FC23562155141E17A141EDFDB544152B81E0567155141F6285CFFD6DB544185EB516869155141295C8FE2D0DB54413D0AD71368155141CDCCCCFCCFDB5441CDCCCC3C64155141EC51B8EED6DB544114AE47715C1551417B14AE37DEDB5441B81E853B55155141D7A3702DE6DB54415C8FC2054C15514148E17A44EFDB5441295C8FE2391551410AD7A330FFDB5441CDCCCC0C331551419A9999C904DC544185EB51282B155141A4703DCA0CDC5441CDCCCC9C2B15514152B81E1510DC544114AE47112F1551417B14AE1710DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000005B00000049D70C3A1E165141A904F8B962DB544148E17A64101651417B14AEB76DDB544122C570F60E1651415BA09C756EDB54417C8388840D1651417154F2916FDB5441E19A9C1A06165141706159C172DB544189DBFA3A0416514177574B9973DB5441DE0BE35AFC155141EE3AA1B277DB54416933AE7CF5155141AE9725A47ADB54419A9999C9F415514152B81E257BDB5441C1DF8DB2F3155141F5967C687BDB5441D860A758F1155141C5A8716A7CDB5441E0CA1BECEC155141578B360B7DDB544152B81EA5E91551415C8FC2D57DDB544186D9E359E41551413A5522FB7DDB5441DC160054E21551419D936A097EDB54414F3A93E6DF15514110C58D1A7EDB54411644AA34DD155141AAC4A93A7EDB54410B23C1FDDB155141EEF5B1797EDB5441440F800CD9155141BBAE67127FDB5441D43AFBD5D5155141703928B97FDB54411527EDA9D51551416769611E81DB54413B116BF4CE155141A332EE8B85DB54413BBEB63ECF1551414B550D5286DB54410AD7A380CF15514185EB519886DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB544119629BEBD1155141540A6F748DDB5441F8C47A2ED2155141A9BCC2268EDB5441308CAC65C2155141E4B3865993DB54410E9DBF11C21551412D38171E93DB5441333333E3C1155141EC51B82E93DB5441CFC72B77C1155141DCB79EB092DB5441F6A77F3FBF1551410A2B991E91DB54414B037DC3BD1551411C21A64692DB5441B4F5BE8DBB155141C8535E0294DB54410D82B949B8155141CF49129296DB54419EB23DA3B5155141802837A698DB5441B39CC261B41551418FB1CBF899DB544170641615B01551413BD2CFA39EDB54410B37B245AC155141533AC885A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB54417B14AEB7D21551413D0AD7B397DB544100B7FE5AD8155141C6481BBB96DB5441EDCA5752DB155141C2800A3596DB54412D5B7058DD1551416C1672B895DB5441FE7C35C1DE155141376C775F95DB54413D9ED6FDDE15514172E9AF4895DB54418156264BE0155141491157B494DB5441EC6D4E97E11551417ECC812094DB5441BE8BB151E315514163948E5C93DB5441C5B18B18E7155141ECB100FF91DB5441F0B6851BE7155141E4D6B1FE91DB5441CDCCCC2CE71551417B14AEF791DB544190669C5FEB1551414DD0AE8D91DB5441C80720CCEE15514198ABFA3291DB5441A98C9A3CF11551412505949E8EDB5441C8F13FACF215514146A2C8198DDB5441D5E1CF50F4155141D474075D8BDB54417B14AE57F5155141713D0A478ADB5441E2E385F4F515514138E79FC789DB5441AB3D3099F615514180C0DA4189DB54415BD5EF97F7155141FD37E77288DB54418FC2F5D8F7155141E17A143E88DB54415F106C95F9155141DF91A92887DB5441E030B0B3FA1551414B32FC7586DB544166666656FC1551410AD7A37085DB5441604D928CFC155141E647345585DB54413DE2A157FE1551410122B56C84DB544166666666001651411F85EB6183DB544165D5310F02165141565CC3D682DB5441B788DCE604165141A04A53DB81DB54418F66F4BA09165141957A1AD681DB5441CEEBBED50A165141F6B84C6480DB5441473AA2EE0B1651417E17FCF47EDB5441B46BCCD90C1651410AC5ADE07DDB5441ED783CD70D16514124B6BBC57CDB54417C2EAEE60E165141A64AAF967BDB5441D71830351016514182FD3A217ADB5441319F647E11165141F71EB2B178DB544194E6A4C8121651412D53FE4077DB544151A755FF1916514125DEC9DF72DB5441DE3998DF1C165141E7651E4B6BDB544145B7C12020165141D5CB903666DB54416ECF9B581E16514147E97FA262DB544149D70C3A1E165141A904F8B962DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 391000
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441295C8FD26E1551413D0AD793D6DB54413333338375155141333333F3CFDB5441F6285C2F7B155141D7A3709DCBDB5441D7A3703D8115514148E17A94C6DB544100000010851551415C8FC285C3DB54410AD7A3A08B1551418FC2F5A8BDDB5441333333638F155141EC51B85EB8DB544114AE4791951551419A9999E9B0DB544152B81E2597155141CDCCCC7CB1DB54411F85EBB19A155141F6285C2FB6DB544148E17A34A01551415C8FC2C5ADDB5441010300000001000000630000005C8FC205E1155141333333E38BDB5441EC51B8CEE2155141666666768CDB5441666666A6E7155141A4703D5A8DDB5441713D0A07EB15514114AE47C18EDB54411F85EB31ED1551415C8FC2A58FDB544152B81E55F41551415C8FC22589DB5441E17A141EF6155141713D0A2786DB544152B81EA5F7155141C3F528EC83DB54415C8FC285F4155141AE47E1AA83DB544152B81E15F11551411F85EB1185DB54415C8FC2F5ED1551413333335385DB5441AE47E1DAEB1551413D0AD78385DB54419A999949E8155141295C8F7288DB54417B14AEB7E4155141000000308BDB54410AD7A330E315514114AE47818BDB54418FC2F5B8E1155141EC51B8EE8ADB544152B81E25E4155141295C8F7288DB5441295C8FE2E61551418FC2F59886DB5441AE47E19AE81551413D0AD79385DB5441A4703D6AE8155141713D0AE782DB5441D7A3701DE9155141D7A370FD80DB54415C8FC2C5EA155141B81E858B80DB54410AD7A3F0EC155141295C8F0282DB5441D7A3709DEF15514148E17A6482DB5441CDCCCCBCF21551415C8FC2A582DB5441C3F528BCF51551413333333382DB54418FC2F568F8155141F6285C5F81DB544114AE4711FA15514148E17A247FDB5441B81E851BFC155141713D0A777CDB54413D0AD7E3FD155141D7A3706D7ADB5441F6285C2F00165141E17A149E7ADB5441D7A370CDFF1551417B14AE977CDB544166666656FE155141000000307EDB544185EB51C8FE155141713D0AA77FDB544114AE4791001651418FC2F50880DB54415C8FC2B504165141333333E37EDB5441A4703DEA0816514152B81E157CDB54413D0AD7D30A16514114AE47517BDB5441000000500D165141CDCCCC5C7ADB5441B81E859B0F1651413D0AD79378DB5441B81E85DB12165141B81E85CB76DB5441F6285CEF161651419A99993973DB5441713D0AB71B1651415C8FC2356FDB54419A9999991D165141AE47E17A6BDB54418FC2F52820165141713D0A4766DB544185EB51581E1651411F85EBA162DB544148E17A64101651417B14AEB76DDB5441D7A3704D0A1651410AD7A3E070DB544152B81EB5011651415C8FC29573DB54413D0AD7E3FA155141000000C076DB54419A9999C9F415514152B81E257BDB544152B81EA5E91551415C8FC2D57DDB54415C8FC285E41551419A9999F97DDB54419A999909E5155141713D0AB77FDB5441C3F5285CE21551417B14AED77FDB54418FC2F568DE155141A4703D4A80DB5441A4703D6ADB155141CDCCCCCC80DB54419A999909D8155141CDCCCCCC80DB54410AD7A3D0D5155141A4703DBA7FDB5441AE47E1CAD4155141E17A146E80DB5441F6285C0FCE155141EC51B80E85DB54410AD7A380CF15514185EB519886DB5441E17A146ED215514148E17AA485DB54419A9999D9D4155141295C8F3285DB544185EB51D8D7155141C3F528FC83DB54411F85EBD1D9155141AE47E1BA83DB5441A4703D6ADB155141000000C084DB5441295C8F12DD15514185EB516886DB544100000090DC1551415C8FC23589DB5441666666B6DA155141C3F5287C8ADB5441E17A14FED8155141A4703D0A8ADB5441F6285C0FD615514185EB51A889DB5441A4703D9AD11551415C8FC21588DB544114AE4711D3155141B81E850B8DDB5441333333E3C1155141EC51B82E93DB5441A4703DCABF155141F6285CBF90DB5441AE47E12ABF1551411F85EB0190DB5441CDCCCCACB91551413D0AD7B394DB544185EB51D8B21551419A9999299BDB54419A9999C9AE1551419A9999C99EDB54411F85EB11AC15514152B81E15A2DB544114AE4731AD15514166666686A4DB54417B14AED7AE155141C3F528BCA4DB544133333323B215514185EB5158A3DB544166666616B5155141D7A3703DA2DB5441E17A145EB8155141A4703DAAA2DB544114AE4701BB1551418FC2F598A1DB54413D0AD763C21551410AD7A3E09DDB54415C8FC2B5CC155141D7A3708D99DB5441C3F5280CD215514185EB51A896DB5441E17A14BED5155141333333A395DB5441EC51B80ED915514114AE473195DB5441CDCCCCECDB155141D7A3706D94DB54419A999999DE1551415C8FC2E592DB54410AD7A3F0DF155141AE47E1BA90DB544133333383E015514114AE47B18EDB544185EB5148DE155141666666968CDB54419A999989DE155141F6285C0F8BDB54415C8FC205E1155141333333E38BDB5441010300000001000000630000008FC2F51851165141666666F622DB5441666666464416514152B81EA52ADB5441000000503E165141D7A3700D30DB544148E17AE4371651415C8FC28534DB54415C8FC27531165141E17A146E3ADB5441C3F5288C2C1651417B14AEB73FDB5441A4703D0A241651411F85EB214ADB5441E17A148E1D1651415C8FC24551DB5441E17A145E0F165141AE47E18A61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB544148E17A9418165141F6285C7F62DB54417B14AEA7191651418FC2F57860DB5441F6285C2F1C165141295C8F325EDB54415C8FC2551E165141EC51B80E5DDB54410AD7A3E021165141A4703D7A5BDB54419A9999E92416514148E17A7459DB5441D7A370BD281651418FC2F5E858DB54418FC2F5782D16514152B81E8556DB5441C3F5289C30165141295C8FF254DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54419A9999F95416514152B81E6534DB544185EB519854165141D7A370CD31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB5441713D0AF75E165141713D0A272ADB5441000000E0611651413333330329DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54410AD7A31096165141A4703D2A17DB5441CDCCCC5C981651415C8FC2A51ADB54410AD7A380991651417B14AE071DDB5441E17A14DEA2165141CDCCCC2C1ADB5441D7A3702DA1165141EC51B86E17DB54411F85EB619D1651415C8FC28514DB5441295C8F2298165141A4703D8A10DB54419A99993995165141295C8F020EDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB54410AD7A3A0A716514152B81E3504DB54415C8FC235AA165141EC51B82E08DB5441B81E856BB3165141EC51B87E01DB5441B81E85BBBC165141A4703D0AFCDA5441B81E859BC516514133333313F8DA5441C3F5280CC5165141C3F5280CF7DA5441AE47E1BAD01651415C8FC265EBDA54419A999979DD1651410AD7A360E2DA5441295C8F12EB16514148E17A74E1DA54411F85EB31ED165141E17A149ED3DA54410AD7A340ED1651417B14AE17D2DA54411F85EBF1E2165141CDCCCC2CD3DA54413D0AD7B3D6165141666666D6D4DA544166666676D2165141EC51B86ED6DA54415C8FC2F5CA1651415C8FC2B5D9DA5441E17A14EEC216514114AE4731DFDA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441713D0AD767165141CDCCCC7C17DB5441AE47E17A5F165141666666A61BDB54418FC2F51851165141666666F622DB54410103000000010000001500000014AE47112F1551417B14AE1710DC5441F6285C4F311551410AD7A3A00EDC5441713D0AC73A1551416666661607DC54417B14AE97481551411F85EBC1FCDB54418FC2F5584F155141333333A3F8DB5441000000A058155141CDCCCCBCF5DB5441B81E85BB5C15514100000090EADB5441713D0AF75E155141CDCCCCFCE4DB54415C8FC23562155141E17A141EDFDB544152B81E0567155141F6285CFFD6DB544185EB516869155141295C8FE2D0DB54413D0AD71368155141CDCCCCFCCFDB5441CDCCCC3C64155141EC51B8EED6DB544114AE47715C1551417B14AE37DEDB5441B81E853B55155141D7A3702DE6DB54415C8FC2054C15514148E17A44EFDB5441295C8FE2391551410AD7A330FFDB5441CDCCCC0C331551419A9999C904DC544185EB51282B155141A4703DCA0CDC5441CDCCCC9C2B15514152B81E1510DC544114AE47112F1551417B14AE1710DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000007500000014AE4791A2165141D7A3709D01DB5441BC3A2C60A816514178F19B9BFEDA5441F3D15A92B11651411804F9F3FADA544145532CD4BB1651413CB5E1C2F3DA5441287ECC22C2165141C4B0437DEDDA544165EF5AEAC816514174BC3E07E7DA54419E3C72CFCE1651414A59CA31E2DA544170EBCD1EDA165141D2D97004DEDA5441DED66BD8DC165141723CD567DDDA5441084CEF03E016514145DA4692DCDA5441F20F3621E316514184B5F348D4DA544160EC793AD71651419B52A49ED5DA5441010CB280D3165141B68F8B0AD6DA544166666676D2165141EC51B86ED6DA5441A71F372BD11651410C4466FFD6DA54411E04B661CA16514107028975DBDA5441027C3DE0C416514136ED3BE8DEDA5441F30E2647B416514123B9DFAEE9DA54410AD7A370B1165141713D0AB7EBDA544185EB51A8A2165141B81E85ABF5DA5441F6285CFF9416514152B81EC5FFDA5441295C8F9287165141713D0A0709DB5441D7A3702D7C165141B81E851B0FDB5441EAB8B1F56716514153452B7017DB54417641B17060165141B123022C1BDB5441D2F3BAE85016514185E44B1323DB544169A9BA674A165141D768DEF826DB544135423FCC4416514149FC44272BDB5441544033043F165141EE5D036A2FDB5441000000503E165141D7A3700D30DB54414BA8685739165141F40C0CB834DB544111BDB5E435165141E8D052D537DB544127F96EC732165141F8CFA6B93ADB544152218738301651418DF6513A3DDB544130FBB1452C1651416AF5BAD740DB54416523CAB62916514185F40EBC43DB5441C6270F312416514165A165F249DB5441A4703D0A241651411F85EB214ADB544178D8A17A1D165141B2C846DC51DB5441A62BD6AF0F165141C7C314C461DB544187D997A70F1651418FD1A2CD61DB54411F85EBF1101651419A9999F962DB544133333303141651415C8FC22562DB5441D7A3700D1616514114AE474163DB5441205EEF5518165141CDDC1A9262DB5441B241AEA218165141FC1F9C6462DB54417B14AEA7191651418FC2F57860DB544162FFCEAC191651410B2C597460DB5441F6285C2F1C165141295C8F325EDB544129BAA46C1C16514155C510125EDB54415C8FC2551E165141EC51B80E5DDB54418A6EE4B9211651413C9F858B5BDB5441AD902CCA2316514123B304345ADB54419A9999E92416514148E17A7459DB544196A1BFF22416514194652D7359DB544189AD85B6281651411A9FACC158DB544133E8BCEF291651418F50D41658DB5441806033E82A16514106ACCBD057DB544107419D452B165141D3B89EA157DB5441575201BB2B16514147DF556657DB5441210619202C165141DD24483357DB5441D3A82A9C30165141B58512EE54DB5441CDCCCC9C301651411F85EB4153DB5441333333832D165141295C8FA253DB5441F6285C1F2C1651410AD7A3F052DB5441D7A3708D2B165141AE47E10A51DB5441295C8F222D1651411F85EB014EDB5441CDCCCCBC30165141666666364ADB544152B81E65331651413333330349DB5441CDCCCC1C361651411F85EBB148DB544148E17A94381651413333332349DB5441EC51B80E3C1651415C8FC28544DB5441666666A63E165141D7A370DD41DB5441B81E853B401651417B14AEF73FDB5441713D0A1744165141000000503DDB54413D0AD7734816514185EB51C83ADB54411F85EB314D16514114AE477138DB54416C99EB944F165141921E693337DB5441B91862F954165141320EA46334DB5441E54246E154165141808529BF33DB5441C28B59BB5416514199166DBC32DB5441BFFA70B754165141E6DAC2A132DB54415C49DDB054165141E814E47432DB5441B8D0D37D541651414AE91F4C31DB5441713D0A1754165141666666562FDB5441713D0A4754165141F6285C0F2DDB5441D7A3703D561651419A9999292BDB5441713D0A8759165141713D0A272ADB5441EC51B8FE5B165141666666F629DB544149F7B36A5D1651412F63AF0D2ADB54412AEB6FE15E165141EC86EB6D29DB54418B11301B62165141029B772628DB5441344F6627621651413FF7AB2028DB54418FC2F5C8641651417B14AEC71FDB54418FC2F5386A1651411F85EBF11DDB5441713D0AF76E165141713D0A771FDB54410AD7A31072165141D7A3709D21DB544152B81E957316514152B81E3524DB544185EB51C874165141666666C624DB54411F85EBF1771651411F85EB4123DB544148E17AD478165141B81E850B21DB54417B14AED779165141713D0AA71FDB5441333333A37D1651410AD7A3601DDB5441AE47E14A80165141A4703D4A1BDB54413333331383165141AE47E18A1BDB5441AE47E19A851651419A9999291BDB54413D0AD78388165141AE47E17A1BDB5441000000C08C165141666666E619DB54419A9999E98F165141EC51B87E17DB544148E17A74931651417B14AE2715DB54418A2B7AD6941651413967DF6F0DDB544148AF21099516514112D1584D0DDB5441713D0A47941651417B14AE770ADB5441C3F5282C96165141B81E855B06DB5441295C8F329816514148E17AE403DB5441EC51B84E9C165141F6285C3F02DB544114AE4791A2165141D7A3709D01DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979949 - 3185798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002000000085EB5108B49F514133333313D4A55441EC51B84EB59F51419A9999C9D7A55441D7A370CDB69F514166666606DCA55441333333E3B79F51419A999959DFA55441EC51B87EBA9F5141EC51B80EE4A5544185EB5108BC9F514152B81EC5E6A5544152B81E35BD9F51411F85EBC1EAA554418FC2F538C19F5141EC51B8AEEBA554419A9999B9CD9F514114AE4721E8A554415C8FC205D49F5141E17A14DEE4A55441B81E854BE39F51418FC2F5D8DDA55441CDCCCC7CF09F514114AE4741D8A55441CDCCCC2CF89F5141AE47E1FAD5A55441CDCCCC1C17A05141F6285CDFBDA554413D0AD7131DA0514185EB5108B9A554410AD7A3302AA051415C8FC295AEA55441B81E85EB29A0514166666636AEA554418FC2F5082BA0514100000050ADA554419A99999928A05141C3F5285CAAA554415C8FC23526A051415C8FC2F5A6A5544185EB51681FA05141A4703DCA9BA55441D7A3706D1EA05141F6285CBF9AA55441AE47E15A1DA05141295C8F229BA55441B81E855B07A0514148E17AA4ACA55441713D0AC700A0514166666636B2A554419A9999C9F69F51413D0AD733BAA55441EC51B88EF09F5141E17A14AEBEA55441295C8FE2E79F5141713D0AA7C3A5544133333383DE9F5141EC51B8AEC7A554411F85EBE1D79F51419A999939CAA55441713D0A87D19F51415C8FC255CCA5544185EB5108B49F514133333313D4A5544101030000000200000021000000D7A370ED689F514148E17AF4F9A5544100000090699F5141F6285CBFFEA55441295C8F726C9F5141E17A14EE01A65441AE47E16A7D9F514148E17AB4FEA55441E17A147E889F51419A999949FCA554411F85EBD1949F5141B81E85DBF8A5544100000080A19F514152B81EE5F2A55441AE47E1BAA99F5141EC51B8BEEFA55441366C44D9AB9F5141944C8E05E6A55441F4582B5DAC9F51415317B829E5A55441358E0139AD9F5141DCCEC8D1E4A55441AD91D73DB19F514150FD4567E5A554416F315AD1B39F5141CCD6136FE6A55441FED735ABB69F51418AE5B752E8A55441BCE6D98EB89F5141C291FA1BEAA55441713D0A77B79F5141333333C3ECA55441B81E858BB99F51411F85EBB1EBA55441AE47E17ABC9F514114AE47D1EAA554419A999959BB9F51417B14AE37E7A5544185EB5118BA9F51419A999919E4A554417B14AE87B79F5141295C8F82DFA55441E17A146EB69F514100000040DCA55441E17A149EB49F51415C8FC2C5D7A5544152B81E15B39F51418FC2F548D4A55441000000509A9F5141713D0A77DAA5544148E17AF48C9F514152B81EF5DEA554411F85EB117E9F5141A4703DBAE3A55441C3F528CC7B9F514152B81E45E5A55441A4703D7A6E9F5141295C8FE2E8A554417B14AE27659F51411F85EB51EAA5544133333363649F51418FC2F5E8EBA55441AE47E10A669F5141A4703D6AF5A55441D7A370ED689F514148E17AF4F9A5544107000000D7A370FD999F51415C8FC275EFA554419A9999F9939F5141E17A142EECA554419A9999899F9F51419A999959E8A55441D7A370EDA49F51419A999959E8A5544152B81E15A59F5141E17A14EEEAA554419A999969A19F5141E17A142EECA55441D7A370FD999F51415C8FC275EFA55441
+</a>
+
+<b>
+0106000000010000000103000000020000002800000025C96F41BC9F51415551461AEAA554419A999959BB9F51417B14AE37E7A5544185EB5118BA9F51419A999919E4A554417B14AE87B79F5141295C8F82DFA55441E17A146EB69F514100000040DCA55441E17A149EB49F51415C8FC2C5D7A5544152B81E15B39F51418FC2F548D4A55441000000509A9F5141713D0A77DAA5544148E17AF48C9F514152B81EF5DEA554411F85EB117E9F5141A4703DBAE3A55441C3F528CC7B9F514152B81E45E5A55441A4703D7A6E9F5141295C8FE2E8A554417B14AE27659F51411F85EB51EAA5544133333363649F51418FC2F5E8EBA55441AE47E10A669F5141A4703D6AF5A55441D7A370ED689F514148E17AF4F9A5544100000090699F5141F6285CBFFEA55441295C8F726C9F5141E17A14EE01A65441AE47E16A7D9F514148E17AB4FEA55441E17A147E889F51419A999949FCA554411F85EBD1949F5141B81E85DBF8A5544100000080A19F514152B81EE5F2A55441AE47E1BAA99F5141EC51B8BEEFA554410F6D5417AC9F51418E0BF540EAA55441A0FC74B7AC9F514184856270E7A55441C7370C5FAD9F51410BD8F5D9E5A554416BEAE6F5AD9F5141336A6D50E4A554413B20088AAE9F5141619C08E9E3A55441FCD38551AF9F51418FB792B9E3A55441B3113423B19F51419C1E3136E4A55441BA3569E1B19F51410CF729DAE4A554416F315AD1B39F5141CCD6136FE6A55441FED735ABB69F51418AE5B752E8A55441BCE6D98EB89F5141C291FA1BEAA55441713D0A77B79F5141333333C3ECA55441B81E858BB99F51411F85EBB1EBA55441AE47E17ABC9F514114AE47D1EAA55441CD99A271BC9F514126D1D3B3EAA5544146393163BC9F51410A90D085EAA5544125C96F41BC9F51415551461AEAA5544107000000D7A370FD999F51415C8FC275EFA554419A9999F9939F5141E17A142EECA554419A9999899F9F51419A999959E8A55441D7A370EDA49F51419A999959E8A5544152B81E15A59F5141E17A14EEEAA554419A999969A19F5141E17A142EECA55441D7A370FD999F51415C8FC275EFA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979949 - 3407978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002000000085EB5108B49F514133333313D4A55441EC51B84EB59F51419A9999C9D7A55441D7A370CDB69F514166666606DCA55441333333E3B79F51419A999959DFA55441EC51B87EBA9F5141EC51B80EE4A5544185EB5108BC9F514152B81EC5E6A5544152B81E35BD9F51411F85EBC1EAA554418FC2F538C19F5141EC51B8AEEBA554419A9999B9CD9F514114AE4721E8A554415C8FC205D49F5141E17A14DEE4A55441B81E854BE39F51418FC2F5D8DDA55441CDCCCC7CF09F514114AE4741D8A55441CDCCCC2CF89F5141AE47E1FAD5A55441CDCCCC1C17A05141F6285CDFBDA554413D0AD7131DA0514185EB5108B9A554410AD7A3302AA051415C8FC295AEA55441B81E85EB29A0514166666636AEA554418FC2F5082BA0514100000050ADA554419A99999928A05141C3F5285CAAA554415C8FC23526A051415C8FC2F5A6A5544185EB51681FA05141A4703DCA9BA55441D7A3706D1EA05141F6285CBF9AA55441AE47E15A1DA05141295C8F229BA55441B81E855B07A0514148E17AA4ACA55441713D0AC700A0514166666636B2A554419A9999C9F69F51413D0AD733BAA55441EC51B88EF09F5141E17A14AEBEA55441295C8FE2E79F5141713D0AA7C3A5544133333383DE9F5141EC51B8AEC7A554411F85EBE1D79F51419A999939CAA55441713D0A87D19F51415C8FC255CCA5544185EB5108B49F514133333313D4A5544101030000000200000021000000D7A370ED689F514148E17AF4F9A5544100000090699F5141F6285CBFFEA55441295C8F726C9F5141E17A14EE01A65441AE47E16A7D9F514148E17AB4FEA55441E17A147E889F51419A999949FCA554411F85EBD1949F5141B81E85DBF8A5544100000080A19F514152B81EE5F2A55441AE47E1BAA99F5141EC51B8BEEFA55441366C44D9AB9F5141944C8E05E6A55441F4582B5DAC9F51415317B829E5A55441358E0139AD9F5141DCCEC8D1E4A55441AD91D73DB19F514150FD4567E5A554416F315AD1B39F5141CCD6136FE6A55441FED735ABB69F51418AE5B752E8A55441BCE6D98EB89F5141C291FA1BEAA55441713D0A77B79F5141333333C3ECA55441B81E858BB99F51411F85EBB1EBA55441AE47E17ABC9F514114AE47D1EAA554419A999959BB9F51417B14AE37E7A5544185EB5118BA9F51419A999919E4A554417B14AE87B79F5141295C8F82DFA55441E17A146EB69F514100000040DCA55441E17A149EB49F51415C8FC2C5D7A5544152B81E15B39F51418FC2F548D4A55441000000509A9F5141713D0A77DAA5544148E17AF48C9F514152B81EF5DEA554411F85EB117E9F5141A4703DBAE3A55441C3F528CC7B9F514152B81E45E5A55441A4703D7A6E9F5141295C8FE2E8A554417B14AE27659F51411F85EB51EAA5544133333363649F51418FC2F5E8EBA55441AE47E10A669F5141A4703D6AF5A55441D7A370ED689F514148E17AF4F9A5544107000000D7A370FD999F51415C8FC275EFA554419A9999F9939F5141E17A142EECA554419A9999899F9F51419A999959E8A55441D7A370EDA49F51419A999959E8A5544152B81E15A59F5141E17A14EEEAA554419A999969A19F5141E17A142EECA55441D7A370FD999F51415C8FC275EFA55441
+</a>
+
+<b>
+0106000000010000000103000000020000002800000025C96F41BC9F51415551461AEAA554419A999959BB9F51417B14AE37E7A5544185EB5118BA9F51419A999919E4A554417B14AE87B79F5141295C8F82DFA55441E17A146EB69F514100000040DCA55441E17A149EB49F51415C8FC2C5D7A5544152B81E15B39F51418FC2F548D4A55441000000509A9F5141713D0A77DAA5544148E17AF48C9F514152B81EF5DEA554411F85EB117E9F5141A4703DBAE3A55441C3F528CC7B9F514152B81E45E5A55441A4703D7A6E9F5141295C8FE2E8A554417B14AE27659F51411F85EB51EAA5544133333363649F51418FC2F5E8EBA55441AE47E10A669F5141A4703D6AF5A55441D7A370ED689F514148E17AF4F9A5544100000090699F5141F6285CBFFEA55441295C8F726C9F5141E17A14EE01A65441AE47E16A7D9F514148E17AB4FEA55441E17A147E889F51419A999949FCA554411F85EBD1949F5141B81E85DBF8A5544100000080A19F514152B81EE5F2A55441AE47E1BAA99F5141EC51B8BEEFA554410F6D5417AC9F51418E0BF540EAA55441A0FC74B7AC9F514184856270E7A55441C7370C5FAD9F51410BD8F5D9E5A554416BEAE6F5AD9F5141336A6D50E4A554413B20088AAE9F5141619C08E9E3A55441FCD38551AF9F51418FB792B9E3A55441B3113423B19F51419C1E3136E4A55441BA3569E1B19F51410CF729DAE4A554416F315AD1B39F5141CCD6136FE6A55441FED735ABB69F51418AE5B752E8A55441BCE6D98EB89F5141C291FA1BEAA55441713D0A77B79F5141333333C3ECA55441B81E858BB99F51411F85EBB1EBA55441AE47E17ABC9F514114AE47D1EAA55441CD99A271BC9F514126D1D3B3EAA5544146393163BC9F51410A90D085EAA5544125C96F41BC9F51415551461AEAA5544107000000D7A370FD999F51415C8FC275EFA554419A9999F9939F5141E17A142EECA554419A9999899F9F51419A999959E8A55441D7A370EDA49F51419A999959E8A5544152B81E15A59F5141E17A14EEEAA554419A999969A19F5141E17A142EECA55441D7A370FD999F51415C8FC275EFA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>475530 - 42288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB5128CB3A514152B81E758CB554410AD7A370D53A51411F85EB518DB5544133333333EF3A51418FC2F5988FB55441713D0A17103B51410AD7A3E092B554418FC2F5C81F3B51410000002095B55441A4703DBA213B51413333336395B55441000000D0213B51415C8FC29594B5544133333373243B51418FC2F5B87BB55441713D0AB7253B5141A4703DCA6FB55441A4703DDA223B5141C3F5287C6FB5544104EA0909243B51416575E9EC63B554412BD6B895253B51415D5C7AB655B554414375121F263B51411D85F5A650B55441B81E855B263B5141CDCCCC6C4EB55441CDCCCCDC253B51411F85EBB148B55441EB4B40F6253B5141B399225A44B554413EEACE0B263B51417D6274AC40B55441FF115BE51E3B5141C2AC27D540B5544182F8276E1F3B51414D96C17E42B55441708F8E70203B5141616CC2F246B55441642AD493203B5141A680B4B749B5544160DB8B06203B5141E9E90A754FB55441528C43791F3B5141FC1640FD52B554419461C16B1E3B51417950F9995AB55441F2A2A57C1D3B51412E8FF3E85EB55441FC41F4B21C3B5141BDCB605C60B554412917F4CE1B3B5141D304618C61B5544149B6C0DB1A3B51418BC3FA5162B554415B1F5AD9193B51414382941763B554417BBE26E6183B5141AE322E9163B55441080BC04B173B5141A0FCFA8163B55441C3C928350D3B5141E1118D6963B5544152AAAD7F083B5141893DF6FB62B55441C3F5282CE83A51410AD7A3A05EB554415F8B860CE53A5141EC11F0FA5EB5544115B54B42E03A5141D9F840FC61B55441ABC677F0DB3A514138C9A66763B554410BF9D8B4CF3A51418124AA8E61B5544131FF4F23CD3A5141B85CB9D761B55441CDCCCC8CCC3A51410000005067B55441D7A3705DCA3A5141AE47E14A7DB554413D0AD733CA3A5141B81E857B84B5544185EB5128CB3A514152B81E758CB55441
+</a>
+
+<b>
+010600000001000000010300000001000000190000007BBE26E6183B5141AE322E9163B55441988968BE183B51412160B58F63B55441080BC04B173B5141A0FCFA8163B55441525005DA113B514140FACB7463B55441B58E51F9233B5141C1718B8664B5544104EA0909243B51416575E9EC63B554412BD6B895253B51415D5C7AB655B554414375121F263B51411D85F5A650B55441B81E855B263B5141CDCCCC6C4EB55441CDCCCCDC253B51411F85EBB148B55441EB4B40F6253B5141B399225A44B554413EEACE0B263B51417D6274AC40B55441FF115BE51E3B5141C2AC27D540B5544182F8276E1F3B51414D96C17E42B55441708F8E70203B5141616CC2F246B55441642AD493203B5141A680B4B749B5544160DB8B06203B5141E9E90A754FB55441528C43791F3B5141FC1640FD52B554419461C16B1E3B51417950F9995AB55441F2A2A57C1D3B51412E8FF3E85EB55441FC41F4B21C3B5141BDCB605C60B554412917F4CE1B3B5141D304618C61B5544149B6C0DB1A3B51418BC3FA5162B554415B1F5AD9193B51414382941763B554417BBE26E6183B5141AE322E9163B55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>977672 - 3933956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE3708315141000000D018565441A4703D8A09315141D7A3701D115654413D0AD753DE305141EC51B8AE0E565441F67D1568D130514105CEC6C014565441A9FB00A6D13051411DC04B341656544175A94D1BDB3051417A03468416565441451A87BDE2305141C7A0E9091756544160548DBDEB305141FF6E064217565441500C2AE4F230514122C174AC175654411E5BAA48FC3051411C61151818565441D38D7E4D03315141AEFA2A8A185654417B14AE3708315141000000D018565441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007B14AE3708315141000000D018565441A4703D8A09315141D7A3701D115654413D0AD753DE305141EC51B8AE0E565441A4703DEAD43051417B14AE571656544176A94D1BDB3051417A03468416565441461A87BDE2305141C3A0E909175654415C548DBDEB305141FA6E0642175654414E0C2AE4F23051411DC174AC175654411D5BAA48FC3051411B61151818565441D08D7E4D03315141ABFA2A8A185654417B14AE3708315141000000D018565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>794076 - 990136
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000018000000D96CBC334C02514151BA1152FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D6154415A4085DF76025141A7A72CD20761544181B11F2F6C025141151CBC0B05615441E51BE9006C025141B6E298130561544135E3DAE06B0251413E3BACF9046154414B5EE9AA6902514163153D7B0461544126787BE766025141BEC3B8E403615441191CCCFC64025141AFC95E7E0361544116BA76786302514163FB193003615441ECF0FECC610251410B78DAE702615441F9EF94C75C025141F038211502615441DC5999185302514151FEE8810061544110808EF64D025141B930F096FF6054418053A0E74C02514128D9C566FF605441D96CBC334C02514151BA1152FF605441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000DA5E69724C025141D4574859FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D615441F3694ED076025141387439CE076154411432C17874025141DAB49032076154413FEFF8A071025141D2349D7506615441FE6A4B8B6F025141ADB60EEB05615441C49110466C02514157DCB011056154410EC81AB76B0251418A7658F00461544146DA1E80670251410DAD3205046154411B0E684662025141689D5FFC02615441D27EC9BA60025141DEB0E6BA026154412E4E9FCD5E02514141F00D6A02615441E9C676645D0251416F21D92E0261544191B3388E5B0251412BFA28E201615441C1B5FD065A025141183D86A2016154415D170B2C59025141314FE97E016154415B0CA1EE5702514165B9764B01615441DD124E4656025141AD15D307016154416FEE06055502514104839CD40061544117DE247454025141639772BD006154417FA435CA530251411A740E9F006154418042AA8B53025141B750A09400615441A674D9F652025141960AE07B0061544161F2AC7A52025141CDBEAB6500615441B5B1DDDA51025141F9271849006154419962E911510251415916292500615441704A4AE14F0251411275B0EEFF60544187330DBA4E0251412958E5B9FF60544190508BB84D02514161EFE98BFF605441B7BB06CA4C025141EFBD5D63FF605441DA5E69724C025141D4574859FF605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>794076 - 3375182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000018000000D96CBC334C02514151BA1152FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D6154415A4085DF76025141A7A72CD20761544181B11F2F6C025141151CBC0B05615441E51BE9006C025141B6E298130561544135E3DAE06B0251413E3BACF9046154414B5EE9AA6902514163153D7B0461544126787BE766025141BEC3B8E403615441191CCCFC64025141AFC95E7E0361544116BA76786302514163FB193003615441ECF0FECC610251410B78DAE702615441F9EF94C75C025141F038211502615441DC5999185302514151FEE8810061544110808EF64D025141B930F096FF6054418053A0E74C02514128D9C566FF605441D96CBC334C02514151BA1152FF605441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000DA5E69724C025141D4574859FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D615441F3694ED076025141387439CE076154411432C17874025141DAB49032076154413FEFF8A071025141D2349D7506615441FE6A4B8B6F025141ADB60EEB05615441C49110466C02514157DCB011056154410EC81AB76B0251418A7658F00461544146DA1E80670251410DAD3205046154411B0E684662025141689D5FFC02615441D27EC9BA60025141DEB0E6BA026154412E4E9FCD5E02514141F00D6A02615441E9C676645D0251416F21D92E0261544191B3388E5B0251412BFA28E201615441C1B5FD065A025141183D86A2016154415D170B2C59025141314FE97E016154415B0CA1EE5702514165B9764B01615441DD124E4656025141AD15D307016154416FEE06055502514104839CD40061544117DE247454025141639772BD006154417FA435CA530251411A740E9F006154418042AA8B53025141B750A09400615441A674D9F652025141960AE07B0061544161F2AC7A52025141CDBEAB6500615441B5B1DDDA51025141F9271849006154419962E911510251415916292500615441704A4AE14F0251411275B0EEFF60544187330DBA4E0251412958E5B9FF60544190508BB84D02514161EFE98BFF605441B7BB06CA4C025141EFBD5D63FF605441DA5E69724C025141D4574859FF605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979957 - 1878607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000020000000103000000010000006E0000006109A1F417B45041AFE2D4B7BF255441369A133C18B45041A7EE02EFBF2554413211E0C317B450418CD17FCCBF255441D108A1F417B450419DE2D4B7BF255441EE56424816B45041D1F2FE6CBE2554411CF3764C14B450412974CE96BC255441EF4AB45112B45041C8513A9BBA255441A3D48F160FB450414668F6F4B6255441DFE8AF3E0CB450410D34D2BEB3255441D529862709B45041FFE13141B02554417EDBE2E806B450413EC622B8AD255441FEE0EBD003B450413D498264AA2554419D351E48FBB35041B224B123A82554415CC94EDCF8B35041626E7C99A72554417F4F982AF2B350412F5944EEA6255441492F530EEEB35041D207865FA7255441E8EFE6A4E2B350411458F599A8255441B66F93D9DEB3504134BE8002A9255441A2B3FA5DD5B35041A3CD3295A7255441358FA6F8D2B35041B4FB3620A7255441116922AFCDB350417B35101BA625544189694367C4B350410B0B8932A4255441B81ADD16BDB350413FBFE2B2A2255441B2003111BCB3504124845F17A32554412600A2F5BBB35041A2C07047A3255441E7760A05BFB35041279FE194A62554419709E959BFB35041B118DCD8A6255441AFDBDE47C1B3504128A38264A8255441762EEA55C5B350415298F5A3AB255441CC5B4EBAC6B350414833F330AD2554416DD8EA52C7B35041A5C80269AE2554418F48794CC8B35041AE544E67B02554418560E0DCCAB350415147FA30B2255441E23EFDECCCB35041CFE2982AB32554410FB734E7D2B3504186E4DFFDB5255441FD7578A0D5B35041122F7247B725544174F3A294DCB35041E0AE42A7BA255441C2C13C6BDEB35041E668A1BFBB255441F03EC2AADFB3504191EEFD7DBC255441882D8AEBE1B3504169A3DE23BF2554418308C1DCE1B3504100FA70DFC0255441D45853C9E2B350417E971551C2255441749965B0E1B35041F70FF1B3C32554410046535CE0B350416B630308C5255441D3F840D7DFB35041DA914C4DC6255441BE641C9CDFB35041BD13A8E6C82554414DA362F5DFB35041A29DA088C92554417753E93CE1B3504125842588CD25544109C527E1DDB350414F34ACCFCE25544157582B71D8B35041648C6F73CF25544147D658F6D7B350416F3851C5CF255441E8C96915D5B35041D8F021F8D2255441C0099CE2D3B350413487F110D32554417E286522D3B35041C293F1AED4255441B46D017CD3B350414B55D47CD62554419F153ED8D2B35041A48BD234D9255441656F77D8D2B35041A150962BDA255441ACD0F760DFB350412673169EDE2554416DB94756E2B3504100F93158DC2554414B2F1E12E3B3504103092223DA25544102CE611BE4B35041484D6E04D7255441F66F1C68E5B3504140F65055D4255441752BDEBDE6B35041345B09A4D1255441A9F30E03E8B3504191342B14CF2554418DD2AC1CE8B350410DE9C51ACF25544130CF3DB4EEB350413B276A92D2255441D2C82044FDB35041C6163E3BDA255441E115D66C04B4504148263AFFDD2554413F21FA5009B450417BF0D691E02554419D01E8790DB45041DC15FBC1E2255441E42F0E3910B4504174362301E4255441E6C8B50615B45041E317D1E8E5255441A45F6B1E18B450416FB9CE22E7255441181451841CB450410E506CE4E8255441652CDB0817B45041CF5F3589E42554416354A62114B45041EE6DC207E225544109FCE60A0FB45041F9117E72DC255441769FCD540DB4504102738CFAD8255441ED1184B80CB45041C729C78BD62554412F9CFC3D0CB45041D78891C1D425544166CDDEC80BB4504121E35A11D4255441C50FEE290BB45041426E85DED3255441269FBFE408B450411317927FD32554418BDCE63506B45041691EBA2DD3255441708D5A7EFFB350418EA5B7ACD0255441E17A148EFDB350411F85EBB1CF2554411F85EB21FEB3504148E17AA4CE2554415CAA337BFEB3504110F0AFD2CE255441079CF0E2FFB350415013DE8CCF2554415853FB4D04B45041B263376AD1255441C568F5E905B450414D72B6DBD12554415F8C2EEF07B45041AD800A37D225544104445EEB08B45041F629D85AD22554416F0E07B409B45041CF155577D22554412E2B014E0BB45041DD825B7CD2255441596E5F1E0CB4504184143535D22554419653517E0DB45041946FAC35D02554415F14ED0B0EB45041A2572C0ECF25544193E1FCE10EB4504133CBCBA4CD255441D98A410710B45041C0E5DCC7CB2554411671EDE812B4504138087240C9255441FE4459E213B450410E9B7378C8255441C33E5AA315B4504173116D10C72554413F7B9DEA18B45041FF409C24C4255441FDC8AE331BB45041635638EEC12554415206FAE01DB450419CED7101BF255441A05938901DB45041883EADD8BE2554415B1508061CB45041CCAA1774BE25544191C1A9581BB4504125B8DA47BE2554416109A1F417B45041AFE2D4B7BF255441010300000001000000040000005206FAE01DB450419CED7101BF255441132A403D1FB45041C49943B1BF255441F950BFFF1DB450419BEFD2DFBE2554415206FAE01DB450419CED7101BF255441
+</a>
+
+<b>
+0106000000010000000103000000010000006F0000008ED2AC1CE8B350410DE9C51ACF255441195D671AEBB35041F0BD89ADD0255441D355F6D408B45041B9F19B50E02554414421FA5009B450417DF0D691E0255441643AC5BC09B450414CA989CAE0255441D401E8790DB45041F915FBC1E2255441E42F0E3910B4504171362301E4255441E5C8B50615B45041E017D1E8E52554419F5F6B1E18B450416CB9CE22E72554411A1451841CB450410A506CE4E8255441612CDB0817B45041D35F3589E42554416854A62114B45041EE6DC207E22554410EFCE60A0FB45041F4117E72DC2554417B9FCD540DB4504100738CFAD8255441E81184B80CB45041CB29C78BD6255441E17A149E0CB45041A4703D5AD52554416BCDDEC80BB4504125E35A11D4255441C80FEE290BB450413E6E85DED3255441279FBFE408B450410F17927FD32554418EDCE63506B450416A1EBA2DD3255441758D5A7EFFB3504189A5B7ACD0255441E17A148EFDB350411F85EBB1CF2554411F85EB21FEB3504148E17AA4CE2554415CAA337BFEB3504112F0AFD2CE2554410A9CF0E2FFB350415113DE8CCF255441D7A3708D01B450419A999969D02554415353FB4D04B45041AF63376AD1255441C368F5E905B450414D72B6DBD12554410000007006B450410AD7A300D22554415A8C2EEF07B45041AD800A37D225544103445EEB08B45041F829D85AD2255441720E07B409B45041D1155577D2255441000000E00AB450411F85EBA1D22554415A6E5F1E0CB450417F143535D2255441E17A149E0CB450419A999909D22554419A53517E0DB45041956FAC35D02554416014ED0B0EB45041A2572C0ECF25544193E1FCE10EB4504130CBCBA4CD255441DA8A410710B45041BFE5DCC7CB2554411271EDE812B450413B087240C9255441004559E213B450410D9B7378C8255441C63E5AA315B4504171116D10C72554413B7B9DEA18B45041FE409C24C425544101C9AE331BB450415E5638EEC1255441AE47E12A1CB45041E17A14FEC02554410AD7A3F01DB4504114AE47F1BE255441A35938901DB45041873EADD8BE255441581508061CB45041CCAA1774BE25544190C1A9581BB4504128B8DA47BE2554411F85EB111AB4504148E17AF4BD2554415C8FC21518B4504185EB5118C0255441F256424816B45041CFF2FE6CBE2554411CF3764C14B450412C74CE96BC255441EB4AB45112B45041CB513A9BBA2554419FD48F160FB450414768F6F4B6255441DCE8AF3E0CB450410A34D2BEB3255441D029862709B45041FAE13141B025544182DBE2E806B450413EC622B8AD255441FAE0EBD003B450413B498264AA255441A0351E48FBB35041B024B123A82554415CC94EDCF8B35041666E7C99A7255441954F982AF2B350412D5944EEA6255441C484DE5BF0B35041760B1220A7255441472F530EEEB35041D707865FA72554410724B5E8E6B35041B5527224A8255441E7467B7DE0B35041A2E34ED5A8255441B46F93D9DEB3504136BE8002A92554413D0AD7A3DDB350413D0AD723A9255441B81E85BBD5B35041713D0AA7A72554410FB4FA5DD5B35041B8CD3295A7255441368FA6F8D2B35041B5FB3620A725544148E17A64CEB350410AD7A340A6255441E05D22AFCDB350412A33101BA62554418C694367C4B350410C0B8932A42554418FC2F518C0B350413D0AD753A3255441B41ADD16BDB350413EBFE2B2A2255441B6003111BCB350411E845F17A32554412800A2F5BBB35041A0C07047A3255441E7760A05BFB350412C9FE194A62554419909E959BFB35041B018DCD8A6255441AEDBDE47C1B3504128A38264A8255441722EEA55C5B350415398F5A3AB255441CE5B4EBAC6B350414933F330AD25544171D8EA52C7B35041A7C80269AE2554418C48794CC8B35041AC544E67B02554418860E0DCCAB350414F47FA30B2255441E53EFDECCCB35041D0E2982AB32554410CB734E7D2B3504182E4DFFDB5255441FE7578A0D5B35041122F7247B725544175F3A294DCB35041DCAE42A7BA255441BDC13C6BDEB35041E668A1BFBB2554411F85EB01E0B350411F85EBB1BC255441451B207EE0B3504131669142BD2554410346535CE0B350416D630308C5255441CEF840D7DFB35041DF914C4DC6255441BB641C9CDFB35041BB13A8E6C8255441C3F5286CDFB35041F6285CAFC9255441666666E6DEB35041AE47E1FACA255441D7A3702DDCB35041A4703D3ACC255441FC3ADB12D6B3504121BEAC72CE255441C1099CE2D3B350413787F110D325544179286522D3B35041C193F1AED425544102EC7D0FD1B350415C1B329BD9255441D80C23C5D2B35041D880F634DA255441E17A144EE1B35041295C8F72DF25544172B94756E2B3504101F93158DC2554414B2F1E12E3B35041FF082223DA255441F220D76AE3B350411D11FE17D9255441B81E852BE4B350413D0AD7D3D62554415C8FC205E8B35041EC51B80ECF2554418ED2AC1CE8B350410DE9C51ACF255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979957 - 3452139
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000020000000103000000010000006E0000006109A1F417B45041AFE2D4B7BF255441369A133C18B45041A7EE02EFBF2554413211E0C317B450418CD17FCCBF255441D108A1F417B450419DE2D4B7BF255441EE56424816B45041D1F2FE6CBE2554411CF3764C14B450412974CE96BC255441EF4AB45112B45041C8513A9BBA255441A3D48F160FB450414668F6F4B6255441DFE8AF3E0CB450410D34D2BEB3255441D529862709B45041FFE13141B02554417EDBE2E806B450413EC622B8AD255441FEE0EBD003B450413D498264AA2554419D351E48FBB35041B224B123A82554415CC94EDCF8B35041626E7C99A72554417F4F982AF2B350412F5944EEA6255441492F530EEEB35041D207865FA7255441E8EFE6A4E2B350411458F599A8255441B66F93D9DEB3504134BE8002A9255441A2B3FA5DD5B35041A3CD3295A7255441358FA6F8D2B35041B4FB3620A7255441116922AFCDB350417B35101BA625544189694367C4B350410B0B8932A4255441B81ADD16BDB350413FBFE2B2A2255441B2003111BCB3504124845F17A32554412600A2F5BBB35041A2C07047A3255441E7760A05BFB35041279FE194A62554419709E959BFB35041B118DCD8A6255441AFDBDE47C1B3504128A38264A8255441762EEA55C5B350415298F5A3AB255441CC5B4EBAC6B350414833F330AD2554416DD8EA52C7B35041A5C80269AE2554418F48794CC8B35041AE544E67B02554418560E0DCCAB350415147FA30B2255441E23EFDECCCB35041CFE2982AB32554410FB734E7D2B3504186E4DFFDB5255441FD7578A0D5B35041122F7247B725544174F3A294DCB35041E0AE42A7BA255441C2C13C6BDEB35041E668A1BFBB255441F03EC2AADFB3504191EEFD7DBC255441882D8AEBE1B3504169A3DE23BF2554418308C1DCE1B3504100FA70DFC0255441D45853C9E2B350417E971551C2255441749965B0E1B35041F70FF1B3C32554410046535CE0B350416B630308C5255441D3F840D7DFB35041DA914C4DC6255441BE641C9CDFB35041BD13A8E6C82554414DA362F5DFB35041A29DA088C92554417753E93CE1B3504125842588CD25544109C527E1DDB350414F34ACCFCE25544157582B71D8B35041648C6F73CF25544147D658F6D7B350416F3851C5CF255441E8C96915D5B35041D8F021F8D2255441C0099CE2D3B350413487F110D32554417E286522D3B35041C293F1AED4255441B46D017CD3B350414B55D47CD62554419F153ED8D2B35041A48BD234D9255441656F77D8D2B35041A150962BDA255441ACD0F760DFB350412673169EDE2554416DB94756E2B3504100F93158DC2554414B2F1E12E3B3504103092223DA25544102CE611BE4B35041484D6E04D7255441F66F1C68E5B3504140F65055D4255441752BDEBDE6B35041345B09A4D1255441A9F30E03E8B3504191342B14CF2554418DD2AC1CE8B350410DE9C51ACF25544130CF3DB4EEB350413B276A92D2255441D2C82044FDB35041C6163E3BDA255441E115D66C04B4504148263AFFDD2554413F21FA5009B450417BF0D691E02554419D01E8790DB45041DC15FBC1E2255441E42F0E3910B4504174362301E4255441E6C8B50615B45041E317D1E8E5255441A45F6B1E18B450416FB9CE22E7255441181451841CB450410E506CE4E8255441652CDB0817B45041CF5F3589E42554416354A62114B45041EE6DC207E225544109FCE60A0FB45041F9117E72DC255441769FCD540DB4504102738CFAD8255441ED1184B80CB45041C729C78BD62554412F9CFC3D0CB45041D78891C1D425544166CDDEC80BB4504121E35A11D4255441C50FEE290BB45041426E85DED3255441269FBFE408B450411317927FD32554418BDCE63506B45041691EBA2DD3255441708D5A7EFFB350418EA5B7ACD0255441E17A148EFDB350411F85EBB1CF2554411F85EB21FEB3504148E17AA4CE2554415CAA337BFEB3504110F0AFD2CE255441079CF0E2FFB350415013DE8CCF2554415853FB4D04B45041B263376AD1255441C568F5E905B450414D72B6DBD12554415F8C2EEF07B45041AD800A37D225544104445EEB08B45041F629D85AD22554416F0E07B409B45041CF155577D22554412E2B014E0BB45041DD825B7CD2255441596E5F1E0CB4504184143535D22554419653517E0DB45041946FAC35D02554415F14ED0B0EB45041A2572C0ECF25544193E1FCE10EB4504133CBCBA4CD255441D98A410710B45041C0E5DCC7CB2554411671EDE812B4504138087240C9255441FE4459E213B450410E9B7378C8255441C33E5AA315B4504173116D10C72554413F7B9DEA18B45041FF409C24C4255441FDC8AE331BB45041635638EEC12554415206FAE01DB450419CED7101BF255441A05938901DB45041883EADD8BE2554415B1508061CB45041CCAA1774BE25544191C1A9581BB4504125B8DA47BE2554416109A1F417B45041AFE2D4B7BF255441010300000001000000040000005206FAE01DB450419CED7101BF255441132A403D1FB45041C49943B1BF255441F950BFFF1DB450419BEFD2DFBE2554415206FAE01DB450419CED7101BF255441
+</a>
+
+<b>
+0106000000010000000103000000010000006F0000008ED2AC1CE8B350410DE9C51ACF255441195D671AEBB35041F0BD89ADD0255441D355F6D408B45041B9F19B50E02554414421FA5009B450417DF0D691E0255441643AC5BC09B450414CA989CAE0255441D401E8790DB45041F915FBC1E2255441E42F0E3910B4504171362301E4255441E5C8B50615B45041E017D1E8E52554419F5F6B1E18B450416CB9CE22E72554411A1451841CB450410A506CE4E8255441612CDB0817B45041D35F3589E42554416854A62114B45041EE6DC207E22554410EFCE60A0FB45041F4117E72DC2554417B9FCD540DB4504100738CFAD8255441E81184B80CB45041CB29C78BD6255441E17A149E0CB45041A4703D5AD52554416BCDDEC80BB4504125E35A11D4255441C80FEE290BB450413E6E85DED3255441279FBFE408B450410F17927FD32554418EDCE63506B450416A1EBA2DD3255441758D5A7EFFB3504189A5B7ACD0255441E17A148EFDB350411F85EBB1CF2554411F85EB21FEB3504148E17AA4CE2554415CAA337BFEB3504112F0AFD2CE2554410A9CF0E2FFB350415113DE8CCF255441D7A3708D01B450419A999969D02554415353FB4D04B45041AF63376AD1255441C368F5E905B450414D72B6DBD12554410000007006B450410AD7A300D22554415A8C2EEF07B45041AD800A37D225544103445EEB08B45041F829D85AD2255441720E07B409B45041D1155577D2255441000000E00AB450411F85EBA1D22554415A6E5F1E0CB450417F143535D2255441E17A149E0CB450419A999909D22554419A53517E0DB45041956FAC35D02554416014ED0B0EB45041A2572C0ECF25544193E1FCE10EB4504130CBCBA4CD255441DA8A410710B45041BFE5DCC7CB2554411271EDE812B450413B087240C9255441004559E213B450410D9B7378C8255441C63E5AA315B4504171116D10C72554413B7B9DEA18B45041FE409C24C425544101C9AE331BB450415E5638EEC1255441AE47E12A1CB45041E17A14FEC02554410AD7A3F01DB4504114AE47F1BE255441A35938901DB45041873EADD8BE255441581508061CB45041CCAA1774BE25544190C1A9581BB4504128B8DA47BE2554411F85EB111AB4504148E17AF4BD2554415C8FC21518B4504185EB5118C0255441F256424816B45041CFF2FE6CBE2554411CF3764C14B450412C74CE96BC255441EB4AB45112B45041CB513A9BBA2554419FD48F160FB450414768F6F4B6255441DCE8AF3E0CB450410A34D2BEB3255441D029862709B45041FAE13141B025544182DBE2E806B450413EC622B8AD255441FAE0EBD003B450413B498264AA255441A0351E48FBB35041B024B123A82554415CC94EDCF8B35041666E7C99A7255441954F982AF2B350412D5944EEA6255441C484DE5BF0B35041760B1220A7255441472F530EEEB35041D707865FA72554410724B5E8E6B35041B5527224A8255441E7467B7DE0B35041A2E34ED5A8255441B46F93D9DEB3504136BE8002A92554413D0AD7A3DDB350413D0AD723A9255441B81E85BBD5B35041713D0AA7A72554410FB4FA5DD5B35041B8CD3295A7255441368FA6F8D2B35041B5FB3620A725544148E17A64CEB350410AD7A340A6255441E05D22AFCDB350412A33101BA62554418C694367C4B350410C0B8932A42554418FC2F518C0B350413D0AD753A3255441B41ADD16BDB350413EBFE2B2A2255441B6003111BCB350411E845F17A32554412800A2F5BBB35041A0C07047A3255441E7760A05BFB350412C9FE194A62554419909E959BFB35041B018DCD8A6255441AEDBDE47C1B3504128A38264A8255441722EEA55C5B350415398F5A3AB255441CE5B4EBAC6B350414933F330AD25544171D8EA52C7B35041A7C80269AE2554418C48794CC8B35041AC544E67B02554418860E0DCCAB350414F47FA30B2255441E53EFDECCCB35041D0E2982AB32554410CB734E7D2B3504182E4DFFDB5255441FE7578A0D5B35041122F7247B725544175F3A294DCB35041DCAE42A7BA255441BDC13C6BDEB35041E668A1BFBB2554411F85EB01E0B350411F85EBB1BC255441451B207EE0B3504131669142BD2554410346535CE0B350416D630308C5255441CEF840D7DFB35041DF914C4DC6255441BB641C9CDFB35041BB13A8E6C8255441C3F5286CDFB35041F6285CAFC9255441666666E6DEB35041AE47E1FACA255441D7A3702DDCB35041A4703D3ACC255441FC3ADB12D6B3504121BEAC72CE255441C1099CE2D3B350413787F110D325544179286522D3B35041C193F1AED425544102EC7D0FD1B350415C1B329BD9255441D80C23C5D2B35041D880F634DA255441E17A144EE1B35041295C8F72DF25544172B94756E2B3504101F93158DC2554414B2F1E12E3B35041FF082223DA255441F220D76AE3B350411D11FE17D9255441B81E852BE4B350413D0AD7D3D62554415C8FC205E8B35041EC51B80ECF2554418ED2AC1CE8B350410DE9C51ACF255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980026 - 379399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000048E17A3470AD5041713D0A6773DD5441AE47E1EA6DAD504148E17A5475DD5441E17A145E6DAD504114AE47217CDD5441C3F528FC6AAD5041E17A14CE87DD5441E17A147E6CAD5041F6285C9F89DD544185EB51D87CAD504185EB51388EDD5441D7A3704D80AD50410AD7A3F08DDD54418610797C80AD5041655ECDCF83DD544152B81E0583AD5041CDCCCCFC7CDD5441E205F4AC82AD5041440EA4F579DD54410AD7A3308BAD5041A4703DCA6EDD5441EC51B80E91AD504148E17A646BDD5441AE47E12A98AD5041713D0AA762DD54413D0AD7F39FAD50418FC2F5F860DD54418FC2F528ADAD50417B14AE375FDD54417B14AEB7B8AD504152B81EC55FDD54410AD7A3D0BBAD5041AE47E10A5BDD5441CDCCCC8CAEAD504185EB51A859DD54415C8FC2E599AD504148E17A145BDD5441D7A3700D93AD50410AD7A3605CDD5441D7A3702D81AD5041D7A3701D65DD5441A4703D8A77AD5041A4703D3A6DDD54411F85EBF178AD50417B14AED771DD5441295C8FD274AD5041713D0AF775DD544148E17A3470AD5041713D0A6773DD5441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000EBE51426AEAD50411D2065AF59DD5441548806D299AD5041BDA15A4D5BDD5441DB2447D292AD5041091CB4B35CDD54412BACE85281AD5041CDF9CC1965DD5441BE9072AC77AD50416276AE396DDD544101C27ADD78AD50412B74E7EA70DD5441069F0AE978AD50417F4B84BA71DD54411F85EBF178AD50417B14AED771DD544114308CC578AD504186690D0472DD544143E49AE374AD504157B5FEE575DD5441295C8FD274AD5041713D0AF775DD54417D660F5D73AD50416D3D7B6775DD5441387BE31C71AD50412AD7622774DD544148E17A3470AD5041713D0A6773DD5441652AF2F36DAD5041A03FD74C75DD5441A9674A7E6DAD504149C7D7F67BDD5441140DE2FC6AAD504107A2F3CE87DD5441E17A147E6CAD5041F6285C9F89DD5441F5F23DDF70AD5041EF0693DA8ADD5441851469A87CAD5041BC68A9ED8DDD5441A45A026480AD5041D844F7CB81DD5441772642B982AD50419441315D7DDD5441D08EC20E7EAD50419BB8C4547ADD5441FE7728A883AD504184E9BE9073DD544159954EEC86AD5041B11D7F3B71DD54417F527B9F87AD504165A325D56FDD544161C187D28BAD504192D7E57F6DDD544188CDBDA98DAD50418F9BA65B6DDD544193BC45A98EAD50416D5BB0C76CDD5441712DFBFA8FAD5041339C24046CDD5441CB817AF490AD50415D77ECEE6ADD544100E2738593AD5041025AC6AA67DD54415BFF99C996AD5041E4132DEF63DD5441E35080B897AD5041D570601162DD5441D46259C99DAD5041AFB3335E61DD5441828DCEEA9EAD5041F96F273261DD54413D0AD7F39FAD50418FC2F5F860DD54413983CC5DA3AD50410445D48460DD54416C0CB284A8AD504101A520BC5FDD54415372F1F8A9AD5041EA8D1CA45FDD54418FC2F528ADAD50417B14AE375FDD544112109F19AFAD504129316C4F5FDD544147042BC0AFAD50413E7CAD445FDD5441EF907C57B0AD504145359E5E5FDD5441ECDA123BB6AD504121F8AFA65FDD544172CE8841B8AD504174DC78BF5FDD54414AFCC16BB8AD50418C967DC15FDD5441D5B7C68EB8AD50416A242AC35FDD5441F2793FC1BAAD50418C3F16A95CDD5441D9F5E35EBBAD504129F07CB85BDD5441A88A97CDBBAD50410732880F5BDD5441D26D055DAEAD504102649CAB59DD5441EBE51426AEAD50411D2065AF59DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980027 - 379516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000D23689FCE5AD5041C5CD8FEEE5DC54416F90E45EE6AD50411AD43CC4E4DC54415BC6B81BE5AD5041AC24CB87E4DC5441C3F528ECD2AD50415C8FC2A5E0DC544185EB51B8C6AD50418FC2F578DDDC5441AE47E1CABFAD50419A9999D9DDDC54411F85EB51B8AD5041D7A3700DE2DC54417B14AE07BAAD50417B14AE77E4DC5441713D0AF7B7AD5041F6285CAFE6DC5441CDCCCCBCBCAD5041E17A14AEE8DC5441AFFBAE07BEAD5041B1519C08EDDC5441295C8F02C1AD5041713D0A17EFDC5441831855E4BEAD50414AFF4C4EF3DC544185EB5168BFAD5041F6285C9FF4DC54415C8FC215C3AD504148E17A84F7DC54415C8FC235C6AD50410AD7A390F7DC54411220FD91C7AD5041F5E7BFFDF5DC5441CDCCCC7CC8AD5041E17A14EEF4DC5441F120217CC6AD5041ABB4625EF1DC5441BC0D28E9C5AD50414583ED4BF0DC5441F6285C7FC5AD50417B14AE17EEDC54411F85EBA1C7AD50411F85EBE1ECDC5441CDCCCC5CC2AD5041295C8FD2E8DC54415C8FC225C3AD504114AE47A1E1DC544185EB51C8C5AD504152B81EB5DFDC5441C6BF35FFCCAD50413A6C10FAE1DC54410D4EA658CFAD5041E8FA7C7CE1DC5441634861D9D2AD5041111631AEE2DC5441B80F394FD6AD5041501DCA25E4DC5441B8BA8CE4DCAD50418C1701D8E5DC544114AE47B1E3AD5041CDCCCC9CE7DC54413B3F25E6E5AD5041D445A228E6DC544111FE66F0E5AD50416A0067ECE5DC5441D23689FCE5AD5041C5CD8FEEE5DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F9373003C3AD50415E2BDC75F7DC544152B81EC5CAAD50411F85EB51FDDC5441AE47E10ACCAD5041A4703D0AFCDC5441BFCBFEAECCAD5041380DF168FBDC5441F9CB1DD2CDAD50413F805A46FADC544189BCFE6DCEAD5041AE8F79AAF9DC544122739F43C6AD5041F535A4A6EDDC544149049310C2AD5041E1FCBA55E9DC5441DB62296AC2AD50418849789EE3DC544149049310C2AD50416999FB55E2DC54419C8B9CE1C2AD504193C00B96E0DC5441DEF845DDC4AD5041363902C5DFDC5441A54DF23ACAAD504185B35B2BE1DC5441A5D65E43CDAD504147DCCEA2E1DC54416A95EE2DD0AD504185B35B2BE1DC54412EFE0EC4D3AD50417E2CC7C4E2DC544154303447D9AD5041DBD0816FE4DC5441E0CCDC97E4AD5041AD9CC1C4E6DC5441631EC386E5AD50413C653BABE4DC5441CEBFC4DCD2AD5041C38AE8B3E0DC5441257ECDE8C7AD5041ED232FC8DDDC5441484A30C1C6AD50418B8D5A79DDDC5441CF83ED58C3AD504180E374A8DDDC5441AE47E1CABFAD50419A9999D9DDDC544136AC2044B8AD50410A05421AE2DC5441A3C037DDB9AD50415120B63BE4DC544113851004BAAD5041DBD0816FE4DC54417B0FBC82BEAD5041E2276543EADC5441A70230D9BFAD504122F3D059EEDC54413861C632C0AD5041892A5773F0DC5441F7F31C37BEAD5041B97DA099F3DC54417F34449BBEAD504141BEC7FDF3DC544185EB5168BFAD5041F6285C9FF4DC5441F9373003C3AD50415E2BDC75F7DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980712 - 3087565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000CF2E9EF4121A5141D98E92AFAB6D5441AB40448F131A51413FF79999AD6D54418FC2F578321A51419A9999D9B26D5441C3F5285C461A5141AE47E1CAB56D5441F6285CAF481A51410AD7A3C0A56D5441D7A3708D4B1A51418FC2F5F8916D54415C8FC2E54A1A51410AD7A3D08F6D54417B14AEA7471A514114AE47018E6D5441000000D03E1A51410AD7A3D0896D54419A999909361A51411F85EB01876D5441000000702F1A5141B81E858B856D5441EC51B85E281A5141EC51B8CE846D54413D0AD753241A514152B81EE5846D5441AE47E11A211A51419A999949856D544114AE47E10A1A51411F85EB218B6D544152B81E85091A5141D7A3707D8B6D5441E17A141E0A1A514152B81E358E6D5441000000A00B1A5141C3F5289C946D5441D7A3703D0D1A51417B14AE779B6D54417B14AE870E1A514166666696A16D544185EB51180F1A514114AE47A1A16D5441CF2E9EF4121A5141D98E92AFAB6D5441
+</a>
+
+<b>
+010600000001000000010300000001000000240000007B14AEA7471A514114AE47018E6D54415C8FC2E54A1A51410AD7A3D08F6D544152B81E65361A5141A4703D6A4C6D5441CE523D9F2F1A514125FFAC25366D5441CC9D77FE2A1A5141790671EE266D5441DE4B8DC0281A514141729ACE246D544141B3E1A5261A5141A7F2D5D3226D54411E73C4BA221A5141E12014291F6D544124C582C8201A5141226F9B71216D5441B0A3453F1D1A51419790D8FA246D5441A001305F151A51418AACFCDE2C6D54415B5AEA9F121A5141BB3611B82F6D54419E0112800C1A51415672B8F1356D5441C48A4CF7041A5141918C4BE83C6D5441F46F176DFF19514162A78072426D544136DF78A8FD1951414543DE64456D54414660A110FB195141B5C66C2B4B6D5441A83E151AFA195141D1F6DDE04F6D544132DD34C6F9195141E6D3F2E2506D54412F1D51AAF8195141D4368934536D5441E615E194F7195141AAAC03CB546D5441E17A143EFD195141000000305E6D54410AD7A390FF195141CDCCCCEC626D5441AE47E17A001A5141AE47E1CA646D5441F6285CDF011A5141295C8F72696D544185EB5118051A514100000050776D544166666636091A51417B14AE178A6D5441D65F3B86091A514107487F828B6D544114AE47E10A1A51411F85EB218B6D5441AE47E11A211A51419A999949856D54413D0AD753241A514152B81EE5846D5441EC51B85E281A5141EC51B8CE846D5441000000702F1A5141B81E858B856D54419A999909361A51411F85EB01876D5441000000D03E1A51410AD7A3D0896D54417B14AEA7471A514114AE47018E6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980712 - 3428827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000CF2E9EF4121A5141D98E92AFAB6D5441AB40448F131A51413FF79999AD6D54418FC2F578321A51419A9999D9B26D5441C3F5285C461A5141AE47E1CAB56D5441F6285CAF481A51410AD7A3C0A56D5441D7A3708D4B1A51418FC2F5F8916D54415C8FC2E54A1A51410AD7A3D08F6D54417B14AEA7471A514114AE47018E6D5441000000D03E1A51410AD7A3D0896D54419A999909361A51411F85EB01876D5441000000702F1A5141B81E858B856D5441EC51B85E281A5141EC51B8CE846D54413D0AD753241A514152B81EE5846D5441AE47E11A211A51419A999949856D544114AE47E10A1A51411F85EB218B6D544152B81E85091A5141D7A3707D8B6D5441E17A141E0A1A514152B81E358E6D5441000000A00B1A5141C3F5289C946D5441D7A3703D0D1A51417B14AE779B6D54417B14AE870E1A514166666696A16D544185EB51180F1A514114AE47A1A16D5441CF2E9EF4121A5141D98E92AFAB6D5441
+</a>
+
+<b>
+010600000001000000010300000001000000240000007B14AEA7471A514114AE47018E6D54415C8FC2E54A1A51410AD7A3D08F6D544152B81E65361A5141A4703D6A4C6D5441CE523D9F2F1A514125FFAC25366D5441CC9D77FE2A1A5141790671EE266D5441DE4B8DC0281A514141729ACE246D544141B3E1A5261A5141A7F2D5D3226D54411E73C4BA221A5141E12014291F6D544124C582C8201A5141226F9B71216D5441B0A3453F1D1A51419790D8FA246D5441A001305F151A51418AACFCDE2C6D54415B5AEA9F121A5141BB3611B82F6D54419E0112800C1A51415672B8F1356D5441C48A4CF7041A5141918C4BE83C6D5441F46F176DFF19514162A78072426D544136DF78A8FD1951414543DE64456D54414660A110FB195141B5C66C2B4B6D5441A83E151AFA195141D1F6DDE04F6D544132DD34C6F9195141E6D3F2E2506D54412F1D51AAF8195141D4368934536D5441E615E194F7195141AAAC03CB546D5441E17A143EFD195141000000305E6D54410AD7A390FF195141CDCCCCEC626D5441AE47E17A001A5141AE47E1CA646D5441F6285CDF011A5141295C8F72696D544185EB5118051A514100000050776D544166666636091A51417B14AE178A6D5441D65F3B86091A514107487F828B6D544114AE47E10A1A51411F85EB218B6D5441AE47E11A211A51419A999949856D54413D0AD753241A514152B81EE5846D5441EC51B85E281A5141EC51B8CE846D5441000000702F1A5141B81E858B856D54419A999909361A51411F85EB01876D5441000000D03E1A51410AD7A3D0896D54417B14AEA7471A514114AE47018E6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980087 - 1509515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000280000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041B0CE9C13C5D954412A0CF2E301B150416EA29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441CDCCCC2CFEB05041EC51B88EC8D954411F85EB91FDB050419A999969CDD95441000000D0FFB050415C8FC285CCD95441C3F528DC05B15041000000E0CAD95441000000400BB15041CDCCCCECC7D954418FC2F50810B1504185EB51E8C4D95441EC51B87E17B1504148E17A24BED9544114AE47211BB15041EC51B85EBBD95441000000E01FB15041CDCCCC2CB9D95441D7A3707D2DB1504152B81EE5B5D95441CDCCCC8C35B1504152B81E75B2D954411F85EBB142B150411F85EB61ABD9544114AE478134B1504185EB5158A8D954417B14AEF730B15041B81E852BACD954419A9999892CB150413D0AD793AED95441A4703D3A2BB150418FC2F5C8ADD9544148E17AC428B15041D7A3702DAFD9544185EB513828B15041EC51B8AEB0D9544148E17A9426B150417B14AE87B1D95441E17A14DE25B15041F6285CBFB1D954419A99995925B15041B81E85BBB2D954416666660623B15041713D0A47B3D95441FFC088B321B15041C1CC898CB4D954413BA6DE141EB1504142B6765AB5D954417F35BB261DB15041C31F1054B5D95441A55518F418B15041B584F144B8D95441E13A6E5515B150413841B8AEBAD954414F905B6C13B150418A60C1FEBCD95441BDE5488311B15041CCBEA433BED954413956A87D0DB15041BEA33250C0D95441770ED87A0BB150418FD94ED2C1D9544134DD1AAA08B1504120B1871FC2D95441026D83F406B1504110C33BA0C2D954411F85EB6104B15041713D0A17C4D95441
+</a>
+
+<b>
+010600000001000000010300000001000000280000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041ADCE9C13C5D954412C0CF2E301B1504173A29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441CDCCCC2CFEB05041EC51B88EC8D954411F85EB91FDB050419A999969CDD95441000000D0FFB050415C8FC285CCD95441C3F528DC05B15041000000E0CAD95441000000400BB15041CDCCCCECC7D954418FC2F50810B1504185EB51E8C4D95441EC51B87E17B1504148E17A24BED9544114AE47211BB15041EC51B85EBBD95441000000E01FB15041CDCCCC2CB9D95441D7A3707D2DB1504152B81EE5B5D95441CDCCCC8C35B1504152B81E75B2D954411F85EBB142B150411F85EB61ABD9544114AE478134B1504185EB5158A8D954417B14AEF730B15041B81E852BACD954419A9999892CB150413D0AD793AED95441A4703D3A2BB150418FC2F5C8ADD9544148E17AC428B15041D7A3702DAFD9544185EB513828B15041EC51B8AEB0D9544148E17A9426B150417B14AE87B1D95441E17A14DE25B15041F6285CBFB1D954419A99995925B15041B81E85BBB2D954416666660623B15041713D0A47B3D9544104C188B321B15041BDCC898CB4D954413EA6DE141EB1504140B6765AB5D954418035BB261DB15041C81F1054B5D95441A25518F418B15041B284F144B8D95441E63A6E5515B150413A41B8AEBAD9544154905B6C13B150418860C1FEBCD95441C2E5488311B15041D1BEA433BED954413556A87D0DB15041C1A33250C0D95441740ED87A0BB150418DD94ED2C1D9544131DD1AAA08B1504124B1871FC2D95441FD6C83F406B150410FC33BA0C2D954411F85EB6104B15041713D0A17C4D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980087 - 253903
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000280000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041B0CE9C13C5D954412A0CF2E301B150416EA29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441CDCCCC2CFEB05041EC51B88EC8D954411F85EB91FDB050419A999969CDD95441000000D0FFB050415C8FC285CCD95441C3F528DC05B15041000000E0CAD95441000000400BB15041CDCCCCECC7D954418FC2F50810B1504185EB51E8C4D95441EC51B87E17B1504148E17A24BED9544114AE47211BB15041EC51B85EBBD95441000000E01FB15041CDCCCC2CB9D95441D7A3707D2DB1504152B81EE5B5D95441CDCCCC8C35B1504152B81E75B2D954411F85EBB142B150411F85EB61ABD9544114AE478134B1504185EB5158A8D954417B14AEF730B15041B81E852BACD954419A9999892CB150413D0AD793AED95441A4703D3A2BB150418FC2F5C8ADD9544148E17AC428B15041D7A3702DAFD9544185EB513828B15041EC51B8AEB0D9544148E17A9426B150417B14AE87B1D95441E17A14DE25B15041F6285CBFB1D954419A99995925B15041B81E85BBB2D954416666660623B15041713D0A47B3D95441FFC088B321B15041C1CC898CB4D954413BA6DE141EB1504142B6765AB5D954417F35BB261DB15041C31F1054B5D95441A55518F418B15041B584F144B8D95441E13A6E5515B150413841B8AEBAD954414F905B6C13B150418A60C1FEBCD95441BDE5488311B15041CCBEA433BED954413956A87D0DB15041BEA33250C0D95441770ED87A0BB150418FD94ED2C1D9544134DD1AAA08B1504120B1871FC2D95441026D83F406B1504110C33BA0C2D954411F85EB6104B15041713D0A17C4D95441
+</a>
+
+<b>
+010600000001000000010300000001000000320000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041ADCE9C13C5D954412C0CF2E301B1504173A29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441B087FE2DFEB050418B822685C8D95441D4C7EC91FDB0504182199969CDD95441000000D0FFB050415C8FC285CCD9544111A458D401B15041D9F117F9CBD95441DAA428DC05B15041990BFFDFCAD9544129ECFF3F0BB15041B117CCECC7D95441379E38040EB150414F1D2F2EC6D954418FC2F50810B1504185EB51E8C4D9544125408BED13B15041ABD29460C1D95441FC25B77E17B15041C86C7B24BED95441FDE36A0419B15041F29E3FFBBCD9544114AE47211BB15041EC51B85EBBD95441000000E01FB15041CDCCCC2CB9D95441E6BC717D2DB15041A79B1DE5B5D954412881CD8C35B15041B6421E75B2D954412694388036B150410CA81AF2B1D954419409328136B15041176494F1B1D95441654CA29439B15041AD34C249B0D9544149F7509539B15041D9316449B0D95441EE6786A93FB15041A10ECC03ADD954418A00EBB142B1504177CCEB61ABD95441C502B8F63EB15041364D7395AAD9544114AE478134B1504185EB5158A8D954417B14AEF730B15041B81E852BACD954419A9999892CB150413D0AD793AED95441A4703D3A2BB150418FC2F5C8ADD9544148E17AC428B15041D7A3702DAFD9544185EB513828B15041EC51B8AEB0D9544148E17A9426B150417B14AE87B1D95441E17A14DE25B15041F6285CBFB1D954419A99995925B15041B81E85BBB2D954416666660623B15041713D0A47B3D9544104C188B321B15041BDCC898CB4D954413EA6DE141EB1504140B6765AB5D954418035BB261DB15041C81F1054B5D95441A25518F418B15041B284F144B8D95441E63A6E5515B150413A41B8AEBAD9544154905B6C13B150418860C1FEBCD95441C2E5488311B15041D1BEA433BED954413556A87D0DB15041C1A33250C0D95441740ED87A0BB150418DD94ED2C1D9544131DD1AAA08B1504124B1871FC2D95441FD6C83F406B150410FC33BA0C2D954411F85EB6104B15041713D0A17C4D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980099 - 418075
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000067000000D7A3703D0CAE5041CDCCCCCCE1DB5441713D0AC711AE5041E17A143EE4DB54419A99996922AE50411F85EBB1EFDB5441C3F5289C28AE5041E17A140EF0DB5441E17A14FE2DAE5041CDCCCC8CEEDB5441EC51B8FE34AE50418FC2F5A8EBDB5441666666E63BAE5041713D0AD7E6DB54418FC2F5B842AE504148E17A44DFDB54410AD7A36051AE5041A4703D8AD2DB54416666669658AE504152B81EB5CCDB5441D7A3703D64AE504152B81E35C4DB54410000009064AE5041C3F5286CC5DB54415C8FC2E565AE5041333333F3C3DB54418FC2F55869AE50419A9999A9C1DB5441AE47E1FA70AE5041EC51B8BEC4DB5441D7A3702D70AE504148E17AA4C2DB54417B14AEF76FAE50410AD7A380B1DB5441333333F35EAE504148E17A548CDB5441333333B35CAE50410000005083DB5441AE47E13A5BAE50418FC2F5C884DB54411F85EBE15BAE50417B14AE7788DB54413D0AD7A35DAE504114AE476192DB5441713D0A075EAE50417B14AE97A5DB54413D0AD7635FAE504152B81EC5B2DB5441000000205DAE5041D7A3708DB9DB54415C8FC22559AE5041713D0A27BDDB544114AE476141AE504166666616BADB5441C3F528DC33AE504152B81EB5ADDB54413D0AD7432EAE5041713D0A07ACDB544152B81EA52FAE5041A4703D7AAEDB544152B81E2533AE50410AD7A3D0AFDB54415C8FC2F532AE504152B81E85B1DB5441E17A143E30AE50415C8FC215B3DB544185EB51C82FAE504133333383B4DB5441295C8F1231AE504185EB5128B5DB54416666660631AE504185EB5118B7DB544148E17AC42EAE5041333333D3BADB54413D0AD7B330AE5041A4703DBABDDB5441666666B634AE504133333363BFDB5441AE47E14A37AE5041C3F528FCBFDB544152B81EB537AE5041B81E85EBC1DB54419A99993932AE5041A4703DCAC5DB544148E17AC42EAE504114AE47F1C6DB54417B14AE472CAE50410AD7A3E0C8DB5441AE47E1AA2AAE5041F6285C3FC9DB544132B660AF2AAE50415E60E1F0C1DB54411678E2F12EAE50412A8BFC39B6DB54412FD8B62826AE5041E2119759BCDB5441D2A594D520AE5041121A7D46C1DB544169325D2A22AE50417F5AB3BBC6DB54414A27E0A21FAE5041BC815887C9DB54413D0AD7131DAE50417B14AEB7C3DB5441F6285C7F1AAE5041666666B6C6DB5441E17A140E18AE504166666646CBDB54419A99997915AE5041D7A3702DCEDB5441666666060FAE5041000000B0CBDB54417B14AEE70CAE5041F6285CBFCCDB5441000000900EAE50410AD7A330CFDB5441F6285C1F0CAE504152B81EC5D1DB5441D7A370DD09AE50418FC2F5D8D0DB544152B81E4506AE504148E17A94D4DB5441A4703D2A05AE50417B14AE87D7DB5441E17A145E03AE5041333333B3D6DB54417B14AE4700AE504152B81E15D8DB5441D7A370FDFEAD5041C3F5283CD9DB5441CDCCCC2CFFAD50419A9999A9DADB5441A4703D1AFDAD504166666666DBDB54410AD7A3C0FAAD5041713D0AF7DCDB544114AE47D1F8AD5041333333A3DFDB54419A9999F9F6AD5041AE47E19AE0DB54413D0AD773F5AD5041CDCCCC1CE1DB544166666626F3AD5041713D0AA7E0DB5441E17A145EF2AD50410AD7A3E0E3DB5441295C8F82EFAD50417B14AE37E2DB5441666666B6EDAD5041A4703DEADFDB5441CDCCCCECECAD5041E17A144EDEDB5441295C8F92E5AD50418FC2F548E2DB54417B14AE17DCAD50411F85EB01E7DB5441295C8F72D6AD50419A9999E9E6DB5441CDCCCC8CD6AD5041B81E85EBE5DB54413D0AD753D4AD504166666696E2DB54410AD7A340D2AD5041C3F5284CE1DB54413D0AD7A3D0AD5041A4703DEADFDB5441F6285CAFC9AD504185EB51A8DDDB544114AE4721C9AD50415C8FC295DBDB544152B81ED5C3AD504185EB5188DEDB544184749747BFAD50413CA19666DBDB5441B37DB9EBC1AD50414FABB50AD6DB5441E60C9DF6BCAD504114837AE5CDDB54412B2AD7AEC2AD5041B90D0557C8DB54414531D48BB9AD5041EB16E8C7C8DB5441523618BEB6AD50410020FB48CBDB5441A56DAED9B6AD5041BC2EDAD2CEDB5441CC3FF7B1BCAD5041F8151E8CD7DB5441AE47E15ACBAD50417B14AE97EDDB54417B14AE67D0AD504152B81E85F5DB544152B81E95E3AD504114AE4741F2DB54417B14AEC7E8AD5041713D0A97F0DB5441713D0AB7F3AD5041F6285CEFE9DB5441C3F5287CFBAD504148E17A34E5DB5441F6285C3F01AE50419A999919E2DB54411F85EBF106AE50415C8FC205E1DB5441D7A3703D0CAE5041CDCCCCCCE1DB54410B00000014AE47613AAE5041EC51B81EB9DB5441295C8F4238AE5041D7A3707DB9DB5441713D0A4736AE5041E17A144EB9DB5441AE47E18A35AE5041713D0A27B8DB54410AD7A32035AE5041CDCCCCDCB6DB5441B81E855B35AE50411F85EBE1B4DB5441C3F528EC36AE504100000060B4DB544185EB51783AAE50417B14AE57B5DB544185EB51783AAE504114AE47D1B6DB54411F85EBF13BAE50410AD7A3C0B8DB544114AE47613AAE5041EC51B81EB9DB5441230000003333338358AE50418FC2F5A8C4DB54410AD7A32056AE50410AD7A3B0C5DB5441713D0A1753AE504152B81E65C6DB54410AD7A36050AE5041D7A3705DC5DB5441295C8F824FAE50415C8FC255C4DB54417B14AEF74EAE5041713D0AA7C2DB5441C3F5280C4EAE5041C3F5284CC1DB544148E17AA44EAE5041EC51B8FEBFDB54411F85EBC150AE50413D0AD7A3BEDB5441713D0A1753AE5041F6285CEFBDDB54417B14AEB754AE50417B14AEC7BFDB54413D0AD74357AE5041E17A143EC1DB5441AE47E1BA58AE504100000090BFDB544185EB51D85AAE504152B81E35BEDB544148E17A645DAE504114AE4741BCDB5441666666665FAE5041EC51B8AEBADB5441AE47E11A60AE504100000060B7DB544114AE47C160AE504185EB5148B4DB5441A4703D2A62AE5041CDCCCCFCB4DB5441EC51B80E62AE5041A4703D4AB6DB5441A4703DFA62AE5041E17A143EB8DB544148E17AC464AE50417B14AE37B9DB5441D7A3702D66AE50419A999929B9DB544185EB51B866AE50413D0AD723BADB54413D0AD7D366AE504133333333BCDB5441CDCCCC9C66AE50413D0AD7A3BEDB54413D0AD70366AE50418FC2F5F8C0DB54415C8FC25564AE504100000070C2DB54410AD7A3D062AE5041C3F5281CC2DB54416666663660AE5041E17A146EC0DB54415C8FC2955EAE5041B81E85BBC1DB544148E17A645DAE50410AD7A300C2DB54417B14AE175CAE5041713D0AD7C1DB544114AE47315AAE5041A4703DFAC2DB54413333338358AE50418FC2F5A8C4DB5441
+</a>
+
+<b>
+010600000001000000010300000001000000680000009A3C0AB7F3AD504179295CEFE9DB5441C3F5287CFBAD504148E17A34E5DB54414A295C3F01AE50417C999919E2DB54419C84EBF106AE5041AB8EC205E1DB54417FA4703D0CAE504188CCCCCCE1DB544113A4C41B0EAE50411A5CC89FE2DB5441713D0AC711AE5041E17A143EE4DB54419A99996922AE50411F85EBB1EFDB5441C3F5289C28AE5041E17A140EF0DB54419828364C29AE504134B0DADCEFDB5441307914FE2DAE504197CCCC8CEEDB5441E3E4E86533AE50410513AE51ECDB5441EC51B8FE34AE50418FC2F5A8EBDB5441666666E63BAE5041713D0AD7E6DB54418FC2F5B842AE504148E17A44DFDB54410AD7A36051AE5041A4703D8AD2DB54411619131A54AE50411A9A0D56D0DB54410F67669658AE504187B71EB5CCDB5441E5E5FC045DAE504181987C79C9DB5441C4A4703D64AE504127B81E35C4DB544191BACB4764AE504190DC8233C4DB54415C8FC2E565AE5041333333F3C3DB544170C3F55869AE50412D9999A9C1DB54416FB687486DAE50416FB98540C3DB54419303B8A66FAE5041763D5735C4DB5441C26E481270AE50414F56F2FBB9DB5441E38628FC6FAE504169BE27EEB2DB5441860EE9CC5EAE5041A52838788CDB5441B2322B005FAE50411BFBCE708CDB5441833233F35EAE504158E17A548CDB5441203233B35CAE50411401005083DB5441F647E13A5BAE504147C2F5C884DB5441C60AD7A35DAE5041C2AD476192DB54414B3E0A075EAE5041EB13AE97A5DB54412C0BD7635FAE504190B71EC5B2DB5441273BD4E95FAE5041EAC7E9DDB2DB544101D3A85561AE5041FB7D8292B4DB5441A4703D2A62AE5041CDCCCCFCB4DB5441D8B2101F62AE50414F573284B5DB544166911A3165AE50410B627133B9DB5441FC28745865AE50410371E831B9DB5441CA1D6C7A65AE504148D76C8BB9DB54417CBDBBA464AE5041BA3243C5BBDB54419796AA2362AE5041C9507AAABFDB5441FF30D4E95FAE50410EE7159DC1DB54418AE7D74B5CAE5041413CECD6C3DB5441C49AB54957AE504101F972E6C6DB54414363790350AE504157F24AF1C6DB5441EE9FC06F4CAE5041880E01BAC2DB544163FA96A94EAE5041EEB9041CBFDB5441B548C1CF50AE5041CA7E0850BEDB544114D5D21A51AE5041EE649743BEDB5441D4E2E71453AE50413841C79CBDDB54410D6896A055AE504115B3D3B2BCDB54417BAD476141AE5041D3666616BADB5441CFCCEBB83DAE50413393FEBCB6DB54414E3578E233AE504171C5E5BAADDB544100F628DC33AE504194B81EB5ADDB544143DC630532AE5041A847C327ADDB5441690AD7432EAE50417E3D0A07ACDB54419BB81EA52FAE5041C0703D7AAEDB544169A4E0BD30AE5041C68B87E5AEDB54418BB81E2533AE5041B5D6A3D0AFDB54411D4EC10E33AE50415780C29EB0DB54415C8FC2F532AE504152B81E85B1DB54410A3EF47431AE50414C83BA62B2DB5441DE7A143E30AE5041648FC215B3DB5441E10D333130AE50411855BB3DB3DB5441B5EB51C82FAE50414B333383B4DB54413968166E30AE50418D7115D6B4DB5441295C8F1231AE504185EB5128B5DB54415566660631AE5041BBEB5118B7DB544165E17AC42EAE50415A3333D3BADB5441047DD8F330AE50414A71BCD4BDDB5441666666B634AE504133333363BFDB5441A5DF3AFE36AE50411DA0A45FC0DB54417CC2051F37AE5041600E9B03C1DB54416237AD5537AE5041CD75E014C2DB54417DC830E233AE504185B31596C4DB54415B85C53A34AE5041D9FF4C82C5DB5441BE6B107E2DAE5041010932EFC7DB5441E4F197742DAE50416C0290F6C7DB544191F194B729AE5041FE0B214BC9DB5441FAF08B5C1FAE504182728005CDDB54413935054D1CAE5041BC255E03C8DB54414AF0BCE615AE50411936E1B0CEDB54415DAA74800FAE5041AA6BA669CEDB54414849048F0EAE5041D5E9302FCFDB5441000000900EAE50410AD7A330CFDB5441D53B834A0EAE504141693D67CFDB54419BEEED700CAE50418D91B7EAD0DB5441E8CBFD900BAE504195AF518BD1DB544102DB5AEE05AE504174EAEF95D5DB5441D5A8BD0104AE504127DD39F7D6DB5441FDC06A34FFAD504150C1DC68DADB54419F1F8626FFAD5041F4222C79DADB5441996AE2C8F9AD5041B920F64BDEDB5441AB3DB038F6AD504178A029DAE0DB54416AB9787BF2AD50414CC6A688E3DB544147959B7AF2AD5041FE11618CE3DB544105AD9731F2AD504191C5CBC6E3DB5441AF1D892AF2AD5041A84AB2C2E3DB5441DD4931E5F0AD50415CF705ACE4DB54419A3C0AB7F3AD504179295CEFE9DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3017977 - 3015188
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004600000028C944ADC69C50410DE588185F235441915922A8C89C50412557140459235441291B9C36C79C50417B4B18F5572354410775B4ECC69C5041A24D650856235441E428E558C69C5041439085A053235441D603A418C59C50418DDEA1475223544188904631C59C504144C7A9295023544117D119B6C49C5041C68823B84E2354419111ED3AC49C504197966CDA4D235441856B05F1C39C50419F1713E44C23544151C3D093C59C50412033A5284B235441B6DC15C5C59C50417FA84F23492354417CEA5EE7C49C50410C6AC9B147235441856B05F1C39C5041992B434046235441F205F12BC39C50415F398C6245235441E0BB6EABC09C50419E87A80944235441AE4A5ED7BE9C504187E1C0BF43235441608FCB82BA9C50419A6267C942235441D2851C87B79C5041F1566BBA41235441AFF11786B29C5041107EF90D4123544142461B67AB9C50419318E548402354418827C160A49C5041AC64B4DC4023544104D6DCF79C9C50412724E15741235441B61A4AA3989C5041C30A9C2641235441EE1EE4C9949C5041AC64B4DC40235441F37A4993929C5041BCC019A63E235441C52E7AFF919C5041DF0CE9393F2354410A2131DD929C5041ED312A7A40235441A92C2DEC939C5041E8D5C4B0422354416ADE1045959C5041ACACE949452354411F6FCB89969C5041D1BD3980452354418A2E5E1BA99C50418FD6C1C449235441ABEA88EFA79C50419D022E994F235441D808675A9D9C504110D73F5F4D235441771463699E9C504136A268E94E2354418F028020A39C50414B112CAA52235441120C2F1CA69C50413A0FDF965423544178C51DA7C39C5041B7A6AB5962235441AF929344C39C5041DBF27AED622354419F15DE17A99C50419826D7B456235441FD9D5214AD9C5041EE4B2E635D2354417B14AE17AE9C504185EB51C85E235441CD1F7657AE9C5041148EC7805F235441001BF3ECAF9C50413D8D6628622354412E67C280B09C5041190A730B652354415CB39114B19C504117D34E8268235441A926EFFBB09C5041CF038CD16A235441CD72BE8FB19C5041049ADDE56D2354415FD8D254B29C5041F7BCD11271235441A4CA8932B39C5041BB93F6AB7323544143D68541B49C50419610038F76235441AAF96096B49C50416CB4BBF07823544108C40EC6B59C5041B4262D6379235441391EBBAEB89C5041D0A407907B235441905AF40CBC9C50418556EBE87C235441C1DC15C5C59C504145D1AAB881235441017367D9C89C504198E8A2D68323544160304741CB9C50412E73F8DB852354410E618490CD9C50419C0DE416852354413FD29464CF9C5041B3B3CB608523544125D21106D59C5041A0B9D88A88235441A1A16F80D99C5041E10D9FBF89235441D8413698D99C50418168396D8723544106BD69E4D99C504120179D8C8423544160B3D07CDA9C5041C84D002D81235441431BD2F9DB9C5041A02C61527B235441A5DCEA99DE9C5041BDFC586771235441DE9BCA09D49C5041E93D51746A235441F568E6D4C49C50418CE847116323544128C944ADC69C50410DE588185F235441
+</a>
+
+<b>
+01060000000100000001030000000100000046000000CE1F7657AE9C5041178EC7805F235441021BF3ECAF9C50413C8D6628622354412D67C280B09C5041160A730B6523544159B39114B19C50411BD34E8268235441A726EFFBB09C5041CA038CD16A235441D272BE8FB19C5041079ADDE56D23544162D8D254B29C5041F7BCD11271235441A3CA8932B39C5041BB93F6AB7323544148D68541B49C50419510038F76235441A8F96096B49C50416FB4BBF0782354410CC40EC6B59C5041B0262D63792354413A1EBBAEB89C5041CEA407907B2354418D5AF40CBC9C50418956EBE87C235441BFDC15C5C59C504149D1AAB881235441FD7267D9C89C504194E8A2D6832354415D304741CB9C50412C73F8DB852354410B618490CD9C50419D0DE4168523544140D29464CF9C5041B3B3CB608523544126D21106D59C50419EB9D88A88235441DD1EE5F4D49C5041F9FD2EAE87235441BF5BD00CD59C50413F026F6487235441F9EC53FDD59C50413D4F0E998223544124EFA30DD69C50414D1CB6198123544190F6A84DD69C50412BBB36657F23544186D55C26D89C50414CE8F98C6C235441CA48BA0DD89C5041FB749CA56C235441F168E6D4C49C504188E84711632354416EC944ADC69C504167E488185F235441955922A8C89C50412657140459235441281B9C36C79C5041804B18F5572354410C75B4ECC69C5041A54D650856235441E128E558C69C5041459085A053235441D803A418C59C50418ADEA147522354418A904631C59C504140C7A9295023544116D119B6C49C5041C78823B84E2354419611ED3AC49C504192966CDA4D235441816B05F1C39C50419E1713E44C23544151C3D093C59C50411C33A5284B235441B5DC15C5C59C504183A84F23492354417AEA5EE7C49C50410B6AC9B147235441876B05F1C39C50419E2B434046235441F705F12BC39C50415D398C6245235441E5BB6EABC09C5041A287A80944235441B14A5ED7BE9C50418CE1C0BF432354415F8FCB82BA9C5041986267C942235441D3851C87B79C5041F3566BBA41235441AFF11786B29C5041157EF90D412354413F461B67AB9C50419118E548402354418427C160A49C5041B164B4DC4023544100D6DCF79C9C50412B24E15741235441B91A4AA3989C5041C70A9C2641235441EC1EE4C9949C5041B164B4DC40235441EF7A4993929C5041BFC019A63E235441C42E7AFF919C5041E00CE9393F235441062131DD929C5041E9312A7A40235441AB2C2DEC939C5041E6D5C4B04223544166DE1045959C5041AAACE949452354411C6FCB89969C5041D5BD398045235441872E5E1BA99C50418ED6C1C449235441A6EA88EFA79C504199022E994F235441D608675A9D9C504114D73F5F4D2354417C1463699E9C504134A268E94E2354418A028020A39C50414F112CAA52235441160C2F1CA69C5041350FDF965423544175C51DA7C39C5041B4A6AB5962235441AD929344C39C5041E0F27AED62235441A215DE17A99C50419B26D7B456235441F89D5214AD9C5041F04B2E635D2354417B14AE17AE9C504185EB51C85E235441CE1F7657AE9C5041178EC7805F235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3017977 - 3416187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004600000028C944ADC69C50410DE588185F235441915922A8C89C50412557140459235441291B9C36C79C50417B4B18F5572354410775B4ECC69C5041A24D650856235441E428E558C69C5041439085A053235441D603A418C59C50418DDEA1475223544188904631C59C504144C7A9295023544117D119B6C49C5041C68823B84E2354419111ED3AC49C504197966CDA4D235441856B05F1C39C50419F1713E44C23544151C3D093C59C50412033A5284B235441B6DC15C5C59C50417FA84F23492354417CEA5EE7C49C50410C6AC9B147235441856B05F1C39C5041992B434046235441F205F12BC39C50415F398C6245235441E0BB6EABC09C50419E87A80944235441AE4A5ED7BE9C504187E1C0BF43235441608FCB82BA9C50419A6267C942235441D2851C87B79C5041F1566BBA41235441AFF11786B29C5041107EF90D4123544142461B67AB9C50419318E548402354418827C160A49C5041AC64B4DC4023544104D6DCF79C9C50412724E15741235441B61A4AA3989C5041C30A9C2641235441EE1EE4C9949C5041AC64B4DC40235441F37A4993929C5041BCC019A63E235441C52E7AFF919C5041DF0CE9393F2354410A2131DD929C5041ED312A7A40235441A92C2DEC939C5041E8D5C4B0422354416ADE1045959C5041ACACE949452354411F6FCB89969C5041D1BD3980452354418A2E5E1BA99C50418FD6C1C449235441ABEA88EFA79C50419D022E994F235441D808675A9D9C504110D73F5F4D235441771463699E9C504136A268E94E2354418F028020A39C50414B112CAA52235441120C2F1CA69C50413A0FDF965423544178C51DA7C39C5041B7A6AB5962235441AF929344C39C5041DBF27AED622354419F15DE17A99C50419826D7B456235441FD9D5214AD9C5041EE4B2E635D2354417B14AE17AE9C504185EB51C85E235441CD1F7657AE9C5041148EC7805F235441001BF3ECAF9C50413D8D6628622354412E67C280B09C5041190A730B652354415CB39114B19C504117D34E8268235441A926EFFBB09C5041CF038CD16A235441CD72BE8FB19C5041049ADDE56D2354415FD8D254B29C5041F7BCD11271235441A4CA8932B39C5041BB93F6AB7323544143D68541B49C50419610038F76235441AAF96096B49C50416CB4BBF07823544108C40EC6B59C5041B4262D6379235441391EBBAEB89C5041D0A407907B235441905AF40CBC9C50418556EBE87C235441C1DC15C5C59C504145D1AAB881235441017367D9C89C504198E8A2D68323544160304741CB9C50412E73F8DB852354410E618490CD9C50419C0DE416852354413FD29464CF9C5041B3B3CB608523544125D21106D59C5041A0B9D88A88235441A1A16F80D99C5041E10D9FBF89235441D8413698D99C50418168396D8723544106BD69E4D99C504120179D8C8423544160B3D07CDA9C5041C84D002D81235441431BD2F9DB9C5041A02C61527B235441A5DCEA99DE9C5041BDFC586771235441DE9BCA09D49C5041E93D51746A235441F568E6D4C49C50418CE847116323544128C944ADC69C50410DE588185F235441
+</a>
+
+<b>
+01060000000100000001030000000100000046000000CE1F7657AE9C5041178EC7805F235441021BF3ECAF9C50413C8D6628622354412D67C280B09C5041160A730B6523544159B39114B19C50411BD34E8268235441A726EFFBB09C5041CA038CD16A235441D272BE8FB19C5041079ADDE56D23544162D8D254B29C5041F7BCD11271235441A3CA8932B39C5041BB93F6AB7323544148D68541B49C50419510038F76235441A8F96096B49C50416FB4BBF0782354410CC40EC6B59C5041B0262D63792354413A1EBBAEB89C5041CEA407907B2354418D5AF40CBC9C50418956EBE87C235441BFDC15C5C59C504149D1AAB881235441FD7267D9C89C504194E8A2D6832354415D304741CB9C50412C73F8DB852354410B618490CD9C50419D0DE4168523544140D29464CF9C5041B3B3CB608523544126D21106D59C50419EB9D88A88235441DD1EE5F4D49C5041F9FD2EAE87235441BF5BD00CD59C50413F026F6487235441F9EC53FDD59C50413D4F0E998223544124EFA30DD69C50414D1CB6198123544190F6A84DD69C50412BBB36657F23544186D55C26D89C50414CE8F98C6C235441CA48BA0DD89C5041FB749CA56C235441F168E6D4C49C504188E84711632354416EC944ADC69C504167E488185F235441955922A8C89C50412657140459235441281B9C36C79C5041804B18F5572354410C75B4ECC69C5041A54D650856235441E128E558C69C5041459085A053235441D803A418C59C50418ADEA147522354418A904631C59C504140C7A9295023544116D119B6C49C5041C78823B84E2354419611ED3AC49C504192966CDA4D235441816B05F1C39C50419E1713E44C23544151C3D093C59C50411C33A5284B235441B5DC15C5C59C504183A84F23492354417AEA5EE7C49C50410B6AC9B147235441876B05F1C39C50419E2B434046235441F705F12BC39C50415D398C6245235441E5BB6EABC09C5041A287A80944235441B14A5ED7BE9C50418CE1C0BF432354415F8FCB82BA9C5041986267C942235441D3851C87B79C5041F3566BBA41235441AFF11786B29C5041157EF90D412354413F461B67AB9C50419118E548402354418427C160A49C5041B164B4DC4023544100D6DCF79C9C50412B24E15741235441B91A4AA3989C5041C70A9C2641235441EC1EE4C9949C5041B164B4DC40235441EF7A4993929C5041BFC019A63E235441C42E7AFF919C5041E00CE9393F235441062131DD929C5041E9312A7A40235441AB2C2DEC939C5041E6D5C4B04223544166DE1045959C5041AAACE949452354411C6FCB89969C5041D5BD398045235441872E5E1BA99C50418ED6C1C449235441A6EA88EFA79C504199022E994F235441D608675A9D9C504114D73F5F4D2354417C1463699E9C504134A268E94E2354418A028020A39C50414F112CAA52235441160C2F1CA69C5041350FDF965423544175C51DA7C39C5041B4A6AB5962235441AD929344C39C5041E0F27AED62235441A215DE17A99C50419B26D7B456235441F89D5214AD9C5041F04B2E635D2354417B14AE17AE9C504185EB51C85E235441CE1F7657AE9C5041178EC7805F235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980579 - 376523
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000700000001030000000100000024000000AE47E13AE8FD50410AD7A36005295441713D0A77E8FD50413D0AD7A30429544152B81E75E9FD5041C3F5289C04295441C3F5289CE9FD504148E17A840029544152B81EF5E9FD5041C3F528CCFB28544148E17A64EAFD5041EC51B8DEF428544100000050EBFD504152B81EA5E7285441F6285C0FECFD5041666666E6DD2854411F85EBE1ECFD504185EB51A8CF2854419A999949EDFD50411F85EBB1CC285441C3F5289CEBFD50413D0AD783CC28544166666616E8FD50411F85EB11CC28544185EB5138E5FD504152B81EF5CB2854418FC2F5A8E3FD5041B81E859BDA2854413D0AD763E2FD5041713D0AA7E5285441713D0AC7E1FD5041295C8F82EC28544148E17A74E1FD50411F85EB11EF28544152B81E25E1FD5041E17A14EEF22854415C8FC255E0FD50418FC2F5D8F9285441F6285C7FDFFD5041D7A3706D00295441D7A3705DDFFD5041D7A3705D012954411F85EB81E0FD5041F6285C0F012954415C8FC215E1FD50417B14AE67012954417B14AE97E1FD50410AD7A3000229544152B81E75E2FD5041F6285CEF01295441666666E6E2FD5041B81E852B02295441AE47E15AE3FD5041AE47E1CA022954415C8FC255E3FD5041D7A370CD03295441A4703D6AE3FD50413D0AD753042954417B14AE87E3FD5041CDCCCCEC042954415C8FC2E5E3FD5041F6285C5F05295441A4703DBAE4FD504148E17AB405295441B81E852BE5FD5041D7A370ED0529544114AE4761E7FD504148E17A2406295441EC51B80EE8FD5041713D0AF705295441AE47E13AE8FD50410AD7A360052954410103000000010000000F00000052B81E05DFFD5041AE47E19ABC2854415C8FC275DDFD5041295C8F22CB285441C3F5289CE3FD5041E17A141ECB2854410AD7A350E5FD5041EC51B82ECB2854415C8FC255E7FD504133333363CB285441295C8F82E9FD5041CDCCCCACCB285441EC51B84EEDFD504152B81E25CC285441713D0A57EDFD504152B81E65CB285441A4703DFAEDFD5041295C8F02C12854415C8FC2A5EFFD5041B81E853BAD285441000000F0E9FD5041713D0AD7A92854415C8FC2F5E6FD5041D7A3702DA928544152B81E85E3FD504114AE4701A828544185EB5138E1FD5041D7A3702DA728544152B81E05DFFD5041AE47E19ABC2854410103000000010000001A000000295C8F32BFFD504152B81EB5C9285441295C8F72C6FD504100000010CA2854411F85EBE1C9FD50417B14AE37CA2854415C8FC2F5C9FD5041E17A144EC9285441AE47E15ACAFD5041D7A3707DC4285441E17A14FECAFD5041000000D0BF2854415C8FC275CEFD5041CDCCCCECA4285441EC51B89ECEFD5041F6285C5FA4285441CDCCCC5CCDFD50411F85EB51A42854410AD7A330CCFD50410AD7A3B0A32854417B14AEB7CBFD5041EC51B86EA32854417B14AEE7CAFD5041713D0A47A32854419A999939CAFD5041D7A370FDA228544148E17A94C9FD5041713D0A77A2285441295C8FB2C8FD50418FC2F5C8A12854415C8FC2D5C7FD5041C3F5288CA12854417B14AE87C6FD5041E17A14DEA0285441A4703D8AC3FD5041C3F5287CA1285441295C8FD2C0FD5041295C8F52A1285441713D0AD7BDFD5041D7A3705DA1285441713D0A87BBFD504133333383A128544148E17A74BBFD50419A9999D9A1285441333333B3B9FD5041A4703D9AAE2854418FC2F5C8B8FD5041B81E857BB8285441F6285C1FB7FD504114AE4771C9285441295C8F32BFFD504152B81EB5C928544101030000000100000006000000D7A3704DC5FD50413D0AD773D32854410AD7A3C0C8FD504152B81EF5D3285441000000D0C9FD504148E17AE4CA28544114AE47B1C8FD5041CDCCCCCCCA2854417B14AE57C6FD5041CDCCCCDCCA285441D7A3704DC5FD50413D0AD773D32854410103000000010000000F0000005C8FC265CDFD50418FC2F578C928544185EB5168CDFD5041295C8F52CA285441A4703D3AD1FD504133333393CA285441EC51B8CED5FD50419A9999D9CA285441F6285CCFD5FD5041CDCCCCCCC928544100000010D7FD5041B81E85DBBC28544133333393D8FD5041333333D3AD2854410AD7A370D9FD504185EB5108A628544166666676D9FD50415C8FC2C5A5285441CDCCCCDCD6FD5041713D0A67A52854413D0AD773D5FD50417B14AE17A5285441CDCCCC9CD1FD5041EC51B87EA42854417B14AEA7D1FD50411F85EB81A5285441C3F5289CCEFD504148E17A34BF2854415C8FC265CDFD50418FC2F578C92854410103000000010000001A00000085EB51A8B6FD5041EC51B8DECE2854417B14AED7B5FD5041B81E854BD7285441E17A14FEB4FD5041A4703D8AE0285441D7A3706DB4FD5041E17A141EE82854410AD7A3C0B3FD5041295C8FE2ED28544185EB5138B2FD50410AD7A350FF285441F6285C0FB2FD50415C8FC265012954410AD7A3B0B2FD504148E17A04022954411F85EB81B3FD5041CDCCCC3C022954418FC2F5F8B4FD5041AE47E15A0229544133333383B6FD5041295C8F3202295441D7A370ADB7FD5041713D0A270229544185EB5158B9FD504185EB5128022954413D0AD783B9FD5041B81E854B01295441A4703D1ABAFD504185EB5188FA2854411F85EB71BAFD5041713D0A87F6285441D7A370CDBAFD5041F6285C0FF2285441000000A0BBFD50411F85EB51EA28544133333383BCFD5041713D0A37E22854419A999999BCFD50413D0AD763E1285441D7A3705DBDFD50417B14AE07DA285441E17A142EBEFD50411F85EB71D3285441E17A141EBFFD50411F85EB61CA285441666666A6BAFD5041EC51B82ECA285441AE47E12AB7FD5041AE47E11ACA28544185EB51A8B6FD5041EC51B8DECE2854410103000000010000001700000048E17A74C7FD5041C3F528BCFF28544114AE47D1C8FD50413D0AD7530029544185EB51D8CDFD5041B81E858BFE2854419A9999E9CFFD5041EC51B87EFD285441666666F6CFFD50415C8FC2E5FC2854410AD7A350D1FD50419A9999F9F028544114AE4751D2FD50418FC2F5E8E6285441C3F5286CD5FD5041A4703DBACC2854413D0AD7C3D5FD50419A999979CB28544114AE4781D3FD50419A999969CB28544100000010D0FD50411F85EB31CB28544166666646CDFD5041F6285CFFCA2854419A999999CCFD5041CDCCCC3CD028544114AE4731CCFD5041AE47E12AD4285441EC51B82ECDFD5041A4703D6AD828544185EB51F8CCFD50410AD7A3B0D928544114AE4751CBFD5041B81E854BDC2854419A999959CAFD5041B81E85FBE4285441713D0AC7C9FD5041713D0A87EA28544148E17A44C9FD50418FC2F5A8EE28544114AE4761C8FD5041F6285CCFF72854417B14AEC7C7FD5041D7A3702DFD28544148E17A74C7FD5041C3F528BCFF285441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F8145ADCD3FD5041517846D8A428544187D9CD9CD1FD50411DA8B87EA42854417B14AEA7D1FD50411F85EB81A528544167F17D70D1FD50413353AA53A72854415CF889ABD0FD5041AED7D1D1AD28544194D0698ECFFD5041281C0F38B72854414CB2E785CEFD5041D2FCF1F0BF285441A80A59E8CDFD50419D632527C5285441B73D6877CDFD5041C9D985E3C8285441B3D15168CDFD504169C98652CA285441EC51B8CED5FD50419A9999D9CA285441F6285CCFD5FD5041CDCCCCCCC9285441DB07AE06D6FD504134782991C728544182715107D6FD5041F43C9387C7285441FE83C220D6FD5041E91FAB83C628544100000010D7FD5041B81E85DBBC28544199909605D8FD5041C372A852B3285441F8746F23D8FD50412DD2022AB228544133333393D8FD5041333333D3AD285441548E2366D9FD504134141E37A62854413C68D372D9FD50417CCF0FEFA528544104B93D6ED9FD50415B7009C7A52854414798D12FD9FD5041E33AB7BBA52854414D127E00D9FD5041B228ECA1A5285441CDCCCCDCD6FD5041713D0A67A52854413D0AD773D5FD50417B14AE17A5285441F8145ADCD3FD5041517846D8A4285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>776242 - 992706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000003F000000E17A143E04605141F6285C2FB86C544119FF42B006605141E55DA71FB86C54411987A72105605141E7E344BAB06C54411943F5E805605141E90C9FDCAB6C544117D6E88D0B605141EA79AB37A66C5441713D0A170F605141666666B6A46C5441000000B00F605141295C8FB29F6C544152B81E8509605141666666869F6C54411F85EB41086051410AD7A3909F6C5441D7A370AD0A605141333333739A6C5441EC51B8FE0B6051418FC2F5688E6C544114AE473102605141666666168C6C54418FC2F578FA5F51415C8FC2D5896C5441666666B6DF5F5141D7A370ED826C544148E17AF4DD5F5141713D0AF7856C5441F6285CFFD95F51417B14AE478C6C5441C3F5281CD75F5141D7A3702D916C54413D0AD733D35F5141E17A14BE986C54415C8FC2E5D15F5141B81E852B9B6C5441C3F5283CD25F51410AD7A3709C6C54419A999919D35F5141E17A144E9D6C544148E17A84D45F51413D0AD7039E6C544128776F6BD65F5141EDFF48D29E6C544127454DECD95F5141EF6C552D996C544127019BB3DA5F5141F0386CD7966C5441333333F3E05F51419A9999499A6C54418FC2F528E25F514133333313976C5441AE47E10AE35F51410AD7A330966C544133333333E45F51415C8FC2A5956C5441713D0A27E55F5141713D0AB7956C5441CDCCCCFCE65F5141AE47E1AA966C5441226DFB0CEB5F5141EFF4B99E976C544121321131ED5F5141EF413434986C5441713D0AC7E95F51413D0AD7439D6C5441C3F5286CEF5F5141295C8F829F6C5441B81E859BEE5F51415C8FC2F5A16C54411F85EBB1E55F5141000000A09E6C54413D0AD713E85F5141F6285C6F986C5441B81E85EBE65F514114AE47C1976C54418FC2F508E65F5141F6285CDF966C5441295C8FF2E45F514185EB5188966C5441D7A370EDE35F5141C3F528BC966C544185EB51E8E25F5141000000B0976C544152B81E35E15F51417B14AEE79B6C544114AE4781DF5F5141E17A140EA06C5441AE47E16ADE5F51415C8FC2F5A16C5441713D0A77DD5F51410AD7A380A26C54410AD7A3F0DA5F5141B81E851BA36C54415C8FC285E35F514148E17AE4A76C54413D0AD783E75F5141333333C3A86C5441333333B3F65F51418FC2F5A8AC6C544114AE47F1FA5F5141713D0A77AD6C5441CDCCCC2CFF5F51411F85EB91AE6C54411B5ABF51FE5F5141E8591972AC6C54411BEBEB1FFE5F5141EACFED29A86C54411B1FD57500605141EB2C31A2A56C5441AE47E1AA03605141C3F5287CA86C54410000001003605141B81E855BA96C54415C8FC2E5016051417B14AE77AB6C5441666666A60060514148E17AF4AE6C54410AD7A340FF5F514133333363B36C544114AE47C1FD5F514152B81EC5B76C5441E17A143E04605141F6285C2FB86C544105000000D7A3708DE35F51417B14AED7996C54413D0AD7E3E45F51410AD7A330986C54411F85EB11E65F5141E17A140E996C5441B81E85BBE45F51419A9999C99A6C5441D7A3708DE35F51417B14AED7996C544105000000AE47E15AE05F5141D7A3706DA46C5441B81E85EBDD5F51413D0AD753A36C5441AE47E16ADF5F514152B81EC5A06C54413D0AD723E15F51410AD7A3A0A16C5441AE47E15AE05F5141D7A3706DA46C5441
+</a>
+
+<b>
+0106000000010000000103000000030000003D0000001C3A7C26DC5F51418D3C3FD8886C5441F6285CFFD95F51417B14AE478C6C5441C3F5281CD75F5141D7A3702D916C54413D0AD733D35F5141E17A14BE986C54415C8FC2E5D15F5141B81E852B9B6C5441C3F5283CD25F51410AD7A3709C6C54419A999919D35F5141E17A144E9D6C544148E17A84D45F51413D0AD7039E6C544126776F6BD65F5141EEFF48D29E6C544122454DECD95F5141EF6C552D996C544123019BB3DA5F5141EE386CD7966C5441333333F3E05F51419A9999499A6C54418FC2F528E25F514133333313976C5441AE47E10AE35F51410AD7A330966C544133333333E45F51415C8FC2A5956C5441713D0A27E55F5141713D0AB7956C5441CDCCCCFCE65F5141AE47E1AA966C54411E6DFB0CEB5F5141EEF4B99E976C544122321131ED5F5141F1413434986C5441713D0AC7E95F51413D0AD7439D6C5441C3F5286CEF5F5141295C8F829F6C5441B81E859BEE5F51415C8FC2F5A16C54411F85EBB1E55F5141000000A09E6C54413D0AD713E85F5141F6285C6F986C5441B81E85EBE65F514114AE47C1976C54418FC2F508E65F5141F6285CDF966C5441295C8FF2E45F514185EB5188966C5441D7A370EDE35F5141C3F528BC966C544185EB51E8E25F5141000000B0976C544152B81E35E15F51417B14AEE79B6C544114AE4781DF5F5141E17A140EA06C5441AE47E16ADE5F51415C8FC2F5A16C5441713D0A77DD5F51410AD7A380A26C54410AD7A3F0DA5F5141B81E851BA36C54415C8FC285E35F514148E17AE4A76C54413D0AD783E75F5141333333C3A86C5441333333B3F65F51418FC2F5A8AC6C544114AE47F1FA5F5141713D0A77AD6C5441CDCCCC2CFF5F51411F85EB91AE6C54411E5ABF51FE5F5141E3591972AC6C544120EBEB1FFE5F5141E7CFED29A86C5441161FD57500605141E92C31A2A56C5441AE47E1AA03605141C3F5287CA86C54410000001003605141B81E855BA96C54415C8FC2E5016051417B14AE77AB6C5441666666A60060514148E17AF4AE6C54410AD7A340FF5F514133333363B36C544114AE47C1FD5F514152B81EC5B76C5441E17A143E04605141F6285C2FB86C544119FF42B006605141E85DA71FB86C54411887A72105605141EAE344BAB06C54411843F5E805605141EB0C9FDCAB6C544118D6E88D0B605141EC79AB37A66C5441713D0A170F605141666666B6A46C5441000000B00F605141295C8FB29F6C544152B81E8509605141666666869F6C54411F85EB41086051410AD7A3909F6C5441D7A370AD0A605141333333739A6C544137AFB0380B60514147E6E923946C5441968DE93A01605141FA118986926C54411C3A7C26DC5F51418D3C3FD8886C544105000000D7A3708DE35F51417B14AED7996C54413D0AD7E3E45F51410AD7A330986C54411F85EB11E65F5141E17A140E996C5441B81E85BBE45F51419A9999C99A6C5441D7A3708DE35F51417B14AED7996C544105000000AE47E15AE05F5141D7A3706DA46C5441B81E85EBDD5F51413D0AD753A36C5441AE47E16ADF5F514152B81EC5A06C54413D0AD723E15F51410AD7A3A0A16C5441AE47E15AE05F5141D7A3706DA46C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>776242 - 3696473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000003F000000E17A143E04605141F6285C2FB86C544119FF42B006605141E55DA71FB86C54411987A72105605141E7E344BAB06C54411943F5E805605141E90C9FDCAB6C544117D6E88D0B605141EA79AB37A66C5441713D0A170F605141666666B6A46C5441000000B00F605141295C8FB29F6C544152B81E8509605141666666869F6C54411F85EB41086051410AD7A3909F6C5441D7A370AD0A605141333333739A6C5441EC51B8FE0B6051418FC2F5688E6C544114AE473102605141666666168C6C54418FC2F578FA5F51415C8FC2D5896C5441666666B6DF5F5141D7A370ED826C544148E17AF4DD5F5141713D0AF7856C5441F6285CFFD95F51417B14AE478C6C5441C3F5281CD75F5141D7A3702D916C54413D0AD733D35F5141E17A14BE986C54415C8FC2E5D15F5141B81E852B9B6C5441C3F5283CD25F51410AD7A3709C6C54419A999919D35F5141E17A144E9D6C544148E17A84D45F51413D0AD7039E6C544128776F6BD65F5141EDFF48D29E6C544127454DECD95F5141EF6C552D996C544127019BB3DA5F5141F0386CD7966C5441333333F3E05F51419A9999499A6C54418FC2F528E25F514133333313976C5441AE47E10AE35F51410AD7A330966C544133333333E45F51415C8FC2A5956C5441713D0A27E55F5141713D0AB7956C5441CDCCCCFCE65F5141AE47E1AA966C5441226DFB0CEB5F5141EFF4B99E976C544121321131ED5F5141EF413434986C5441713D0AC7E95F51413D0AD7439D6C5441C3F5286CEF5F5141295C8F829F6C5441B81E859BEE5F51415C8FC2F5A16C54411F85EBB1E55F5141000000A09E6C54413D0AD713E85F5141F6285C6F986C5441B81E85EBE65F514114AE47C1976C54418FC2F508E65F5141F6285CDF966C5441295C8FF2E45F514185EB5188966C5441D7A370EDE35F5141C3F528BC966C544185EB51E8E25F5141000000B0976C544152B81E35E15F51417B14AEE79B6C544114AE4781DF5F5141E17A140EA06C5441AE47E16ADE5F51415C8FC2F5A16C5441713D0A77DD5F51410AD7A380A26C54410AD7A3F0DA5F5141B81E851BA36C54415C8FC285E35F514148E17AE4A76C54413D0AD783E75F5141333333C3A86C5441333333B3F65F51418FC2F5A8AC6C544114AE47F1FA5F5141713D0A77AD6C5441CDCCCC2CFF5F51411F85EB91AE6C54411B5ABF51FE5F5141E8591972AC6C54411BEBEB1FFE5F5141EACFED29A86C54411B1FD57500605141EB2C31A2A56C5441AE47E1AA03605141C3F5287CA86C54410000001003605141B81E855BA96C54415C8FC2E5016051417B14AE77AB6C5441666666A60060514148E17AF4AE6C54410AD7A340FF5F514133333363B36C544114AE47C1FD5F514152B81EC5B76C5441E17A143E04605141F6285C2FB86C544105000000D7A3708DE35F51417B14AED7996C54413D0AD7E3E45F51410AD7A330986C54411F85EB11E65F5141E17A140E996C5441B81E85BBE45F51419A9999C99A6C5441D7A3708DE35F51417B14AED7996C544105000000AE47E15AE05F5141D7A3706DA46C5441B81E85EBDD5F51413D0AD753A36C5441AE47E16ADF5F514152B81EC5A06C54413D0AD723E15F51410AD7A3A0A16C5441AE47E15AE05F5141D7A3706DA46C5441
+</a>
+
+<b>
+0106000000010000000103000000030000003D0000001C3A7C26DC5F51418D3C3FD8886C5441F6285CFFD95F51417B14AE478C6C5441C3F5281CD75F5141D7A3702D916C54413D0AD733D35F5141E17A14BE986C54415C8FC2E5D15F5141B81E852B9B6C5441C3F5283CD25F51410AD7A3709C6C54419A999919D35F5141E17A144E9D6C544148E17A84D45F51413D0AD7039E6C544126776F6BD65F5141EEFF48D29E6C544122454DECD95F5141EF6C552D996C544123019BB3DA5F5141EE386CD7966C5441333333F3E05F51419A9999499A6C54418FC2F528E25F514133333313976C5441AE47E10AE35F51410AD7A330966C544133333333E45F51415C8FC2A5956C5441713D0A27E55F5141713D0AB7956C5441CDCCCCFCE65F5141AE47E1AA966C54411E6DFB0CEB5F5141EEF4B99E976C544122321131ED5F5141F1413434986C5441713D0AC7E95F51413D0AD7439D6C5441C3F5286CEF5F5141295C8F829F6C5441B81E859BEE5F51415C8FC2F5A16C54411F85EBB1E55F5141000000A09E6C54413D0AD713E85F5141F6285C6F986C5441B81E85EBE65F514114AE47C1976C54418FC2F508E65F5141F6285CDF966C5441295C8FF2E45F514185EB5188966C5441D7A370EDE35F5141C3F528BC966C544185EB51E8E25F5141000000B0976C544152B81E35E15F51417B14AEE79B6C544114AE4781DF5F5141E17A140EA06C5441AE47E16ADE5F51415C8FC2F5A16C5441713D0A77DD5F51410AD7A380A26C54410AD7A3F0DA5F5141B81E851BA36C54415C8FC285E35F514148E17AE4A76C54413D0AD783E75F5141333333C3A86C5441333333B3F65F51418FC2F5A8AC6C544114AE47F1FA5F5141713D0A77AD6C5441CDCCCC2CFF5F51411F85EB91AE6C54411E5ABF51FE5F5141E3591972AC6C544120EBEB1FFE5F5141E7CFED29A86C5441161FD57500605141E92C31A2A56C5441AE47E1AA03605141C3F5287CA86C54410000001003605141B81E855BA96C54415C8FC2E5016051417B14AE77AB6C5441666666A60060514148E17AF4AE6C54410AD7A340FF5F514133333363B36C544114AE47C1FD5F514152B81EC5B76C5441E17A143E04605141F6285C2FB86C544119FF42B006605141E85DA71FB86C54411887A72105605141EAE344BAB06C54411843F5E805605141EB0C9FDCAB6C544118D6E88D0B605141EC79AB37A66C5441713D0A170F605141666666B6A46C5441000000B00F605141295C8FB29F6C544152B81E8509605141666666869F6C54411F85EB41086051410AD7A3909F6C5441D7A370AD0A605141333333739A6C544137AFB0380B60514147E6E923946C5441968DE93A01605141FA118986926C54411C3A7C26DC5F51418D3C3FD8886C544105000000D7A3708DE35F51417B14AED7996C54413D0AD7E3E45F51410AD7A330986C54411F85EB11E65F5141E17A140E996C5441B81E85BBE45F51419A9999C99A6C5441D7A3708DE35F51417B14AED7996C544105000000AE47E15AE05F5141D7A3706DA46C5441B81E85EBDD5F51413D0AD753A36C5441AE47E16ADF5F514152B81EC5A06C54413D0AD723E15F51410AD7A3A0A16C5441AE47E15AE05F5141D7A3706DA46C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980726 - 1087062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000B30CD92EEF4B51418F663667D0695441E9E093DAF04B5141963C6B62D1695441C9C08660F34B5141337ACC2BD06954411002138DF84B5141A0C7C862CD695441D57186BF004C514122274916CA6954415D4411F2074C5141B74332B0C669544170A827BE0F4C5141AE1127CAC269544180A68F3D164C51412C0BF930BE695441601F2639164C51419102E90BBE6954418D483137164C514101C41205BE6954411F85EB31164C5141AE47E10ABE695441EFB79496134C51418B888CD6B469544171BA68B2124C5141509C2CB9B1695441EF8C2FEA104C5141E1CB0485B2695441E5C84059FF4B5141AB04CB97B9695441AD3CC6D4EC4B5141ADAC14F2C0695441295C8F22EE4B514114AE4781C9695441B30CD92EEF4B51418F663667D0695441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B70CD92EEF4B51418F663667D0695441E8E093DAF04B51419A3C6B62D1695441C4C08660F34B5141377ACC2BD06954411002138DF84B5141A5C7C862CD695441D47186BF004C514126274916CA695441614411F2074C5141B54332B0C669544170A827BE0F4C5141B21127CAC26954417CA68F3D164C51412F0BF930BE695441641F2639164C51418D02E90BBE6954418D483137164C5141FDC31205BE6954411F85EB31164C5141AE47E10ABE695441F3B79496134C51418F888CD6B469544174BA68B2124C51414B9C2CB9B1695441EB8C2FEA104C5141E2CB0485B2695441E8C84059FF4B5141AB04CB97B9695441B03CC6D4EC4B5141ABAC14F2C0695441295C8F22EE4B514114AE4781C9695441B70CD92EEF4B51418F663667D0695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980726 - 3892316
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000B30CD92EEF4B51418F663667D0695441E9E093DAF04B5141963C6B62D1695441C9C08660F34B5141337ACC2BD06954411002138DF84B5141A0C7C862CD695441D57186BF004C514122274916CA6954415D4411F2074C5141B74332B0C669544170A827BE0F4C5141AE1127CAC269544180A68F3D164C51412C0BF930BE695441601F2639164C51419102E90BBE6954418D483137164C514101C41205BE6954411F85EB31164C5141AE47E10ABE695441EFB79496134C51418B888CD6B469544171BA68B2124C5141509C2CB9B1695441EF8C2FEA104C5141E1CB0485B2695441E5C84059FF4B5141AB04CB97B9695441AD3CC6D4EC4B5141ADAC14F2C0695441295C8F22EE4B514114AE4781C9695441B30CD92EEF4B51418F663667D0695441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B70CD92EEF4B51418F663667D0695441E8E093DAF04B51419A3C6B62D1695441C4C08660F34B5141377ACC2BD06954411002138DF84B5141A5C7C862CD695441D47186BF004C514126274916CA695441614411F2074C5141B54332B0C669544170A827BE0F4C5141B21127CAC26954417CA68F3D164C51412F0BF930BE695441641F2639164C51418D02E90BBE6954418D483137164C5141FDC31205BE6954411F85EB31164C5141AE47E10ABE695441F3B79496134C51418F888CD6B469544174BA68B2124C51414B9C2CB9B1695441EB8C2FEA104C5141E2CB0485B2695441E8C84059FF4B5141AB04CB97B9695441B03CC6D4EC4B5141ABAC14F2C0695441295C8F22EE4B514114AE4781C9695441B70CD92EEF4B51418F663667D0695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>333693 - 982444
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002200000058F51AAFF20C51417CE6A99FB18854416B000E9DF40C51418E329E3FB1885441213695C6F70C5141A07E92DFB08854416BE463E2FA0C514104ADA448B0885441267391B0FE0C5141818051F6AF885441702160CC010D51413FEA27CDAF885441F6285C1F040D5141AE47E1BAAF885441CDCCCC0C030D5141EC51B8AEAB885441B81E85BB000D51417B14AE07A488544114AE4701FF0C5141EC51B83E9F8854413D0AD7A3FE0C5141CDCCCC5C9E8854418FC2F588F80C51419A9999F99E8854415C8FC2D5F20C51418FC2F5A89F885441D7A3709DEA0C5141EC51B83EA08854410AD7A380E80C5141B81E85DBA08854410AD7A3B0E70C5141CDCCCC3CA1885441D7A3700DE70C5141295C8FD2A18854413D0AD7A3E60C5141A4703D9AA2885441EC51B8DEE60C5141EC51B8CEA3885441713D0A17E70C51417B14AEC7A488544185EB51A8E70C5141295C8F92A6885441CDCCCCFCE70C514148E17A94A78854415C8FC2A5E80C51419A999989A8885441713D0A97E90C5141713D0A47A988544158D560A7EA0C514177FE6EEEA9885441B0165A81EC0C51419E3FAD21AB88544196EAE7A8ED0C51416EE90FECAB8854415A94AFA3EE0C514110ACC997AC885441A7787182EF0C51417F135330AD885441ADAC24C4EF0C5141DBAE696EAD885441B2E9CF01F00C51414E4F145BAE88544149D2D750F00C51412B3B608AAF88544175345D4AF10C51417CE6A99FB188544158F51AAFF20C51417CE6A99FB1885441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F6285CAFE70C5141C3F5285CAA8854411F85EB91E70C51413D0AD793A98854415C8FC2C5EA0C51411F85EBF1A9885441713D0A97E90C5141713D0A47A98854415C8FC2A5E80C51419A999989A8885441CDCCCCFCE70C514148E17A94A788544185EB51A8E70C5141295C8F92A6885441713D0A17E70C51417B14AEC7A4885441EC51B8DEE60C5141EC51B8CEA38854413D0AD7A3E60C5141A4703D9AA2885441713D0A47E10C5141295C8FD2A388544152B81E05DE0C5141C3F528BCA5885441B81E850BDD0C514114AE4751A788544133333393DD0C5141713D0AF7A8885441C3F528ECDD0C5141F6285CBFAB885441F6285CAFE70C5141C3F5285CAA885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>217700 - 4291468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000006C80CAD070B350413DD68631AF4855416AF031BF70B35041E8E0413DAF4855416EE498C870B35041E1F8732AAF4855416BF031BF70B350411B0D5622AF48554105BBA47B71B3504119A4848EAD4855419FA0BF5771B350417C80260CAE485541755D427671B35041D10621CFAD485541A257BA5F75B35041479524B8A84855410DC8BB5E79B35041427D4B83A448554164A6EE547BB35041C95ACFE0A0485541DE90E5277DB350416C9C48859C4855415A56E7F082B3504170E363F0904855410467D6E282B35041D1C1DFEA90485541E4CB59E381B3504191A36C52904855413F0770D281B3504198F10C80904855410EC8BB5E79B35041F429F2F48C485541601B983279B35041717EF21C8D485541A64CF80D79B35041C1FDDD0F8D4855413F459B3179B3504180A0D71D8D485541D3D4C6A372B350416226600E934855417B14AEE769B35041A4703DDA9C48554159F99E7F61B35041AB847BEEA64855411F85EB916EB350417B14AE57B3485541E8B8B3EA70B35041A54AE547AF4855416C80CAD070B350413DD68631AF485541010300000001000000050000006C80CAD070B350413DD68631AF485541D16BF50F71B350414E396A07AF4855419FA0BF5771B350417C80260CAE4855416EE498C870B35041E1F8732AAF4855416C80CAD070B350413DD68631AF485541
+</a>
+
+<b>
+010600000002000000010300000001000000190000006C80CAD070B350413ED68631AF48554168F031BF70B35041EBE0413DAF48554173E498C870B35041E1F8732AAF48554168F031BF70B350411D0D5622AF48554100BBA47B71B3504114A4848EAD4855419FA0BF5771B350417D80260CAE485541735D427671B35041D60621CFAD4855419F57BA5F75B350414B9524B8A84855410DC8BB5E79B35041417D4B83A448554166A6EE547BB35041C75ACFE0A0485541DE90E5277DB35041719C48859C4855415B56E7F082B3504175E363F090485541FF66D6E282B35041D2C1DFEA90485541E4CB59E381B350418DA36C5290485541440770D281B3504196F10C80904855410DC8BB5E79B35041F429F2F48C485541601B983279B350416D7EF21C8D485541A34CF80D79B35041C2FDDD0F8D48554140459B3179B350417BA0D71D8D485541D1D4C6A372B350416626600E934855417B14AEE769B35041A4703DDA9C48554155F99E7F61B35041A6847BEEA64855411F85EB916EB350417B14AE57B3485541EAB8B3EA70B35041A84AE547AF4855416C80CAD070B350413ED68631AF485541010300000001000000050000006C80CAD070B350413ED68631AF485541D26BF50F71B350414F396A07AF4855419FA0BF5771B350417D80260CAE48554173E498C870B35041E1F8732AAF4855416C80CAD070B350413ED68631AF485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980629 - 2940168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000190000005D776D121B425141EF72B2CCF4A454410523E73D1A425141BAB7E689F5A454413F6F6A871242514193084725F1A454415BEBAA980C4251416145173DEEA4544117B30A99004251416DA8FD7FE9A4544119A937BBF941514187105FF8E6A4544185DB6F52F741514197887F20E6A45441A933121BF3415141A178C070E4A45441655F681EEC4151410DABF807E2A45441C1ADB9F9EB4151416E0755F4E1A45441C1C84B41EB415141DB147298E2A45441DD959D60E74151416808C70BE6A45441B844C96DD3415141B93E05CCF7A45441917AF022C54151410951A18304A5544116FFD4B8BA41514185B1E8C70DA5544164712630C4415141EC8BFEFA12A55441BBF18F02CE41514131CC6E3018A5544174A1AAE5DC415141FE772D1E20A55441FC095D9BE24151411572042923A55441FD472862E54151415769BFA324A554416387A928EB41514105D2EE791FA55441807E21EFF84151410C5FDB3413A55441ED9D9359054251414653C72508A55441E864CE5616425141BF25E503F9A454415D776D121B425141EF72B2CCF4A45441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000050EF415141C3F528FCDEA454419A999979DF415141295C8FB2D9A4544185EB5178DA415141E17A14BED7A45441F6285C6FD44151413D0AD7E3D4A4544148E17A24D341514133333323D4A45441E17A144EBD4151411F85EB91E7A45441AE47E14AA14151410000008000A55441295C8F32A9415141D7A370AD04A55441AE47E19ABA415141295C8FE20DA55441EC51B89ED641514152B81EF5F4A4544100000050EF415141C3F528FCDEA45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980629 - 3390909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000190000005D776D121B425141EF72B2CCF4A454410523E73D1A425141BAB7E689F5A454413F6F6A871242514193084725F1A454415BEBAA980C4251416145173DEEA4544117B30A99004251416DA8FD7FE9A4544119A937BBF941514187105FF8E6A4544185DB6F52F741514197887F20E6A45441A933121BF3415141A178C070E4A45441655F681EEC4151410DABF807E2A45441C1ADB9F9EB4151416E0755F4E1A45441C1C84B41EB415141DB147298E2A45441DD959D60E74151416808C70BE6A45441B844C96DD3415141B93E05CCF7A45441917AF022C54151410951A18304A5544116FFD4B8BA41514185B1E8C70DA5544164712630C4415141EC8BFEFA12A55441BBF18F02CE41514131CC6E3018A5544174A1AAE5DC415141FE772D1E20A55441FC095D9BE24151411572042923A55441FD472862E54151415769BFA324A554416387A928EB41514105D2EE791FA55441807E21EFF84151410C5FDB3413A55441ED9D9359054251414653C72508A55441E864CE5616425141BF25E503F9A454415D776D121B425141EF72B2CCF4A45441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000050EF415141C3F528FCDEA454419A999979DF415141295C8FB2D9A4544185EB5178DA415141E17A14BED7A45441F6285C6FD44151413D0AD7E3D4A4544148E17A24D341514133333323D4A45441E17A144EBD4151411F85EB91E7A45441AE47E14AA14151410000008000A55441295C8F32A9415141D7A370AD04A55441AE47E19ABA415141295C8FE20DA55441EC51B89ED641514152B81EF5F4A4544100000050EF415141C3F528FCDEA45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980630 - 2176946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE97A94B5141B81E85EB9F4454415C8FC205AA4B514148E17AB48C44544152B81E45A34B5141295C8F628D445441295C8F52824B5141000000009144544152B81E75814B51411F85EB019F44544152B81E05804B5141C3F5288CAE44544152B81E45874B5141AE47E1AAAE4454417B14AE37864B5141C3F5282CC3445441E17A144E894B5141AE47E17AC8445441D7A3707DA44B514114AE47E1B64454418FC2F528A94B5141E17A142EB34454417B14AE97A94B5141B81E85EB9F445441
+</a>
+
+<b>
+0106000000010000000103000000010000003800000008878724814B514170AE2369A244544158CFC368814B5141ECF37B879F445441A9CCA07D814B5141757B24789E44544110F668E0834B5141CBCF303C7A445441E7440E2D754B5141809335BF79445441441260DD734B5141C98596D5794454410AD7A3305E4B5141666666567B445441F6285CAF5C4B514114AE47417B445441713D0A275C4B5141A4703D3A7B445441B81E85CB524B51413D0AD7237B445441E17A149E514B514114AE47217B445441666666A64F4B5141CDCCCC4C7B445441B81E851B4F4B51411F85EB01824454413D0AD7334A4B51415C8FC24582445441B81E853B3D4B514185EB515884445441F6285C2F394B5141000000D0854454411F85EBE1374B51418FC2F548864454419A9999A9304B5141A4703D4A8844544185EB51C82B4B51419A999939894454418FC2F508274B5141AE47E14A89445441B81E858B1F4B5141C3F5286C8844544148E17A14204B51410AD7A3908B445441A4703D6A214B5141EC51B80E91445441000000A0234B51411F85EB3195445441CDCCCC5C254B5141295C8F2298445441B81E85BB274B514148E17AB49B44544185EB51C82B4B5141F6285C8FA04454411F85EBD12E4B5141D7A3700DA4445441E17A14FE324B514166666666A8445441AE47E12A374B5141AE47E1EAAC4454415C8FC2853A4B5141EC51B8AEB0445441295C8FF23D4B5141F6285CFFB4445441295C8FD2404B51410AD7A370BA44544185EB5198434B51415C8FC265C044544166666606464B5141333333F3C4445441CDCCCCBC474B514100000050C7445441CDCCCC9C494B5141B81E859BC844544114AE47E14B4B5141AE47E12AC9445441B81E85EB4F4B5141295C8F92C9445441E17A14FE594B5141F6285C9FCA44544148E17AC45D4B5141B81E852BCB44544133333303604B51417B14AE47CB445441F6285C6F614B5141D7A3701DCB4454419A9999E9624B5141F6285C9FCA445441D7A3708D644B514152B81E95C9445441E17A14DE654B514133333353C8445441E17A14BE664B51410AD7A3A0C644544185EB51C8674B51410AD7A3E0C44454413D0AD7E3674B5141713D0AB7B944544100000090724B5141CDCCCCFCB94454417B14AEC7794B5141CDCCCC3CBA445441D509C32C804B5141387AA321BB445441FCEF16FF7F4B514130353C49AE445441EE0ABD53804B514173A9423AAB44544152C4D4A6804B51410B13FEB7A744544108878724814B514170AE2369A2445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980630 - 3289468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE97A94B5141B81E85EB9F4454415C8FC205AA4B514148E17AB48C44544152B81E45A34B5141295C8F628D445441295C8F52824B5141000000009144544152B81E75814B51411F85EB019F44544152B81E05804B5141C3F5288CAE44544152B81E45874B5141AE47E1AAAE4454417B14AE37864B5141C3F5282CC3445441E17A144E894B5141AE47E17AC8445441D7A3707DA44B514114AE47E1B64454418FC2F528A94B5141E17A142EB34454417B14AE97A94B5141B81E85EB9F445441
+</a>
+
+<b>
+0106000000010000000103000000010000003800000008878724814B514170AE2369A244544158CFC368814B5141ECF37B879F445441A9CCA07D814B5141757B24789E44544110F668E0834B5141CBCF303C7A445441E7440E2D754B5141809335BF79445441441260DD734B5141C98596D5794454410AD7A3305E4B5141666666567B445441F6285CAF5C4B514114AE47417B445441713D0A275C4B5141A4703D3A7B445441B81E85CB524B51413D0AD7237B445441E17A149E514B514114AE47217B445441666666A64F4B5141CDCCCC4C7B445441B81E851B4F4B51411F85EB01824454413D0AD7334A4B51415C8FC24582445441B81E853B3D4B514185EB515884445441F6285C2F394B5141000000D0854454411F85EBE1374B51418FC2F548864454419A9999A9304B5141A4703D4A8844544185EB51C82B4B51419A999939894454418FC2F508274B5141AE47E14A89445441B81E858B1F4B5141C3F5286C8844544148E17A14204B51410AD7A3908B445441A4703D6A214B5141EC51B80E91445441000000A0234B51411F85EB3195445441CDCCCC5C254B5141295C8F2298445441B81E85BB274B514148E17AB49B44544185EB51C82B4B5141F6285C8FA04454411F85EBD12E4B5141D7A3700DA4445441E17A14FE324B514166666666A8445441AE47E12A374B5141AE47E1EAAC4454415C8FC2853A4B5141EC51B8AEB0445441295C8FF23D4B5141F6285CFFB4445441295C8FD2404B51410AD7A370BA44544185EB5198434B51415C8FC265C044544166666606464B5141333333F3C4445441CDCCCCBC474B514100000050C7445441CDCCCC9C494B5141B81E859BC844544114AE47E14B4B5141AE47E12AC9445441B81E85EB4F4B5141295C8F92C9445441E17A14FE594B5141F6285C9FCA44544148E17AC45D4B5141B81E852BCB44544133333303604B51417B14AE47CB445441F6285C6F614B5141D7A3701DCB4454419A9999E9624B5141F6285C9FCA445441D7A3708D644B514152B81E95C9445441E17A14DE654B514133333353C8445441E17A14BE664B51410AD7A3A0C644544185EB51C8674B51410AD7A3E0C44454413D0AD7E3674B5141713D0AB7B944544100000090724B5141CDCCCCFCB94454417B14AEC7794B5141CDCCCC3CBA445441D509C32C804B5141387AA321BB445441FCEF16FF7F4B514130353C49AE445441EE0ABD53804B514173A9423AAB44544152C4D4A6804B51410B13FEB7A744544108878724814B514170AE2369A2445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444409 - 2984765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CDF99D55041F6285C6F864E54415C8FC25596D55041295C8F62854E5441D7A3704D82D5504114AE4761C24E5441F6285C5F89D55041E17A14AEC44E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441D7A3709DABD550418FC2F5688A4E54417B14AEA7A1D55041B81E855B884E5441F6285CDF99D55041F6285C6F864E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B6BA7D7FAED550412D2C34E88A4E5441B190B026A5D550419280C612894E544117D3D64A90D55041D8B556EEC64E54410D1C107E99D550413E087DECC94E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441B6BA7D7FAED550412D2C34E88A4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444409 - 5172297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CDF99D55041F6285C6F864E54415C8FC25596D55041295C8F62854E5441D7A3704D82D5504114AE4761C24E5441F6285C5F89D55041E17A14AEC44E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441D7A3709DABD550418FC2F5688A4E54417B14AEA7A1D55041B81E855B884E5441F6285CDF99D55041F6285C6F864E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B6BA7D7FAED550412D2C34E88A4E5441B190B026A5D550419280C612894E544117D3D64A90D55041D8B556EEC64E54410D1C107E99D550413E087DECC94E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441B6BA7D7FAED550412D2C34E88A4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980905 - 1281814
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004400000098B55645FB1751414EAAF9A8F3F2544180AA8506FE1751417AF80CB2F0F254411E376288FF175141107AC812EFF2544114AE47A10018514148E17AE4EDF254411F85EB510418514166666696F0F25441B81E858B09185141AE47E1BAF5F25441CCCE925B0A185141E609D0BBF6F25441F2F247A30B1851410DAC8250F8F25441CDCCCC3C0D185141A4703D4AFAF2544148E17A640F18514100000050FEF2544110426A53111851412C4F6D1D04F3544194D9CE1E131851416EF3125202F35441BDEC744812185141D97A3DBBFFF2544143578CC3111851414B0BE026FEF254414072A50911185141D86E0877FCF25441A91D798F1018514128DB3A5BFBF2544147E0E18B0F18514157DDFCA8F9F25441A498EC770E185141291C45E4F7F25441DEB0528E0D185141D6ABE5FAF6F2544159F99DCD0B1851415A02E543F5F2544140A43BD109185141CE1C8152F3F254410709964D071851412DC3C6DCF0F254419521D444051851415159A32BEFF25441F8E16E4303185141F21BB598EDF254416FECC14E0018514118099F92EBF254418FC2F54800185141EC51B88EEBF25441643D3179FA175141DB46DDB4E0F254415C47E042F9175141DECFBCC2DFF2544135570DA4F8175141D0507280DFF25441624B1A22F617514101668174DEF25441FEE7112EF2175141B7B618CEDCF25441688235F4F01751416C5E184BDCF25441F88CC1BDEA1751415FA750C7D9F25441666122CEE91751417BCE5766D9F2544185EB51A8E9175141713D0A57D9F2544100000040E917514185EB51E8D2F25441F1B6A6F9E8175141CA438F49CEF25441D0B0359EE8175141DA0CE5CDC9F2544148E17A24E7175141A4703D0AC3F25441A1452BE0E51751410E2D24FDBCF2544135654AF9E4175141C5BF54AEB8F254410AD7A3D0E4175141C3F528ECB7F2544191F32BCFE4175141EE96EA54B7F254416876279EE11751412A92A404B8F2544131C59137E2175141F65AE86DBDF254419A52A97EE317514107195F5AC7F2544120CD2CBAE31751416FB535DDC8F254410B4BE8B3E4175141E1677834CFF254415BA5FC8FE5175141561491D0D4F25441C89DCF47E6175141493E47A2D7F25441CF7D16D1E6175141710A1805D9F25441B1998A7EE7175141506274E2DAF254413A170D8DE8175141636F8120DCF254412949B2BDEB175141F13E24DCDFF2544182FBF6B3EE1751411412771CE1F2544154AE5FC6F4175141C9691CADE3F254418FC2F5A8F717514152B81EE5E4F25441F31388BAF717514137D82428E6F25441E45D8119F817514117AA1111E9F2544111473470F71751417B1183ECEDF2544134093E63F61751411F709864F1F25441BF3925BFF1175141052C219800F35441D6563974F31751412C73C1A7FEF25441B2E24A36F41751412CFB61C5FDF25441E77AF170F5175141BF1A45BBFBF2544100000020F7175141000000F0F8F25441295C8FD2F8175141B81E854BF6F2544198B55645FB1751414EAAF9A8F3F25441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AE47E12AF417514185EB51D8FDF25441C3F5281CF117514148E17AD403F35441295C8FC2F0175141E17A14AE09F354411F85EB71F1175141CDCCCC9C0EF35441D7A370FDF3175141A4703DBA14F3544148E17A94F5175141EC51B85E19F3544185EB51B8F6175141295C8F521FF3544114AE4761F71751415C8FC23526F354419A9999A9F8175141C3F5282C26F354413D0AD703F9175141F6285C5F25F3544133333323FA17514148E17A1422F354415C8FC255FB1751413D0AD7431FF35441CDCCCCCCFC175141C3F5284C1CF3544166666646FE175141000000001AF354410000000002185141666666E614F35441C3F5284C04185141713D0A2712F354410AD7A3500718514148E17AB40EF354410AD7A3200B185141295C8F120BF35441713D0A770E18514114AE472108F354413333333315185141AE47E17A01F35441295C8F121F18514148E17AA4F4F25441A4703DDA2C1851415C8FC205E1F25441AE47E10A2F1851410AD7A390DDF25441CDCCCCAC2C185141AE47E1EAD8F25441D7A3709D291851411F85EB21D5F2544152B81E5528185141EC51B88ED2F2544148E17A5427185141713D0A47C8F25441EC51B8FE26185141A4703DDAC4F25441713D0A0726185141EC51B8CEBFF25441C3F528BC24185141EC51B80EBCF25441295C8F52231851415C8FC2F5B7F25441D7A370ED201851411F85EB01B1F25441C3F5283C1F1851419A999919ACF254419A9999E90A18514185EB5108B0F25441713D0A97F61751417B14AEF7B3F25441713D0AC7E517514185EB5138B7F254410AD7A3D0E4175141C3F528ECB7F2544148E17A24E7175141A4703D0AC3F25441E17A14BEE817514100000060CAF2544100000040E917514185EB51E8D2F2544185EB51A8E9175141713D0A57D9F254418FC2F5E8F017514166666646DCF25441B81E852BFA1751413D0AD723E0F25441842AD4CAF81751412EB775CAE6F254418FC2F54800185141EC51B88EEBF254413D0AD7F302185141A4703D5AEDF25441F6285CCF0618514114AE4761F0F254410AD7A3700E18514185EB51D8F7F254413333338310185141EC51B83EFBF25441C3F528CC11185141AE47E13AFEF2544100000020131851415C8FC25502F354411F85EB61111851418FC2F54804F3544148E17A640F18514100000050FEF25441CDCCCC3C0D185141A4703D4AFAF25441B81E858B09185141AE47E1BAF5F254411F85EB510418514166666696F0F2544114AE47A10018514148E17AE4EDF25441295C8FD2F8175141B81E854BF6F2544100000020F7175141000000F0F8F25441AE47E12AF417514185EB51D8FDF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980905 - 3366171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004400000098B55645FB1751414EAAF9A8F3F2544180AA8506FE1751417AF80CB2F0F254411E376288FF175141107AC812EFF2544114AE47A10018514148E17AE4EDF254411F85EB510418514166666696F0F25441B81E858B09185141AE47E1BAF5F25441CCCE925B0A185141E609D0BBF6F25441F2F247A30B1851410DAC8250F8F25441CDCCCC3C0D185141A4703D4AFAF2544148E17A640F18514100000050FEF2544110426A53111851412C4F6D1D04F3544194D9CE1E131851416EF3125202F35441BDEC744812185141D97A3DBBFFF2544143578CC3111851414B0BE026FEF254414072A50911185141D86E0877FCF25441A91D798F1018514128DB3A5BFBF2544147E0E18B0F18514157DDFCA8F9F25441A498EC770E185141291C45E4F7F25441DEB0528E0D185141D6ABE5FAF6F2544159F99DCD0B1851415A02E543F5F2544140A43BD109185141CE1C8152F3F254410709964D071851412DC3C6DCF0F254419521D444051851415159A32BEFF25441F8E16E4303185141F21BB598EDF254416FECC14E0018514118099F92EBF254418FC2F54800185141EC51B88EEBF25441643D3179FA175141DB46DDB4E0F254415C47E042F9175141DECFBCC2DFF2544135570DA4F8175141D0507280DFF25441624B1A22F617514101668174DEF25441FEE7112EF2175141B7B618CEDCF25441688235F4F01751416C5E184BDCF25441F88CC1BDEA1751415FA750C7D9F25441666122CEE91751417BCE5766D9F2544185EB51A8E9175141713D0A57D9F2544100000040E917514185EB51E8D2F25441F1B6A6F9E8175141CA438F49CEF25441D0B0359EE8175141DA0CE5CDC9F2544148E17A24E7175141A4703D0AC3F25441A1452BE0E51751410E2D24FDBCF2544135654AF9E4175141C5BF54AEB8F254410AD7A3D0E4175141C3F528ECB7F2544191F32BCFE4175141EE96EA54B7F254416876279EE11751412A92A404B8F2544131C59137E2175141F65AE86DBDF254419A52A97EE317514107195F5AC7F2544120CD2CBAE31751416FB535DDC8F254410B4BE8B3E4175141E1677834CFF254415BA5FC8FE5175141561491D0D4F25441C89DCF47E6175141493E47A2D7F25441CF7D16D1E6175141710A1805D9F25441B1998A7EE7175141506274E2DAF254413A170D8DE8175141636F8120DCF254412949B2BDEB175141F13E24DCDFF2544182FBF6B3EE1751411412771CE1F2544154AE5FC6F4175141C9691CADE3F254418FC2F5A8F717514152B81EE5E4F25441F31388BAF717514137D82428E6F25441E45D8119F817514117AA1111E9F2544111473470F71751417B1183ECEDF2544134093E63F61751411F709864F1F25441BF3925BFF1175141052C219800F35441D6563974F31751412C73C1A7FEF25441B2E24A36F41751412CFB61C5FDF25441E77AF170F5175141BF1A45BBFBF2544100000020F7175141000000F0F8F25441295C8FD2F8175141B81E854BF6F2544198B55645FB1751414EAAF9A8F3F25441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AE47E12AF417514185EB51D8FDF25441C3F5281CF117514148E17AD403F35441295C8FC2F0175141E17A14AE09F354411F85EB71F1175141CDCCCC9C0EF35441D7A370FDF3175141A4703DBA14F3544148E17A94F5175141EC51B85E19F3544185EB51B8F6175141295C8F521FF3544114AE4761F71751415C8FC23526F354419A9999A9F8175141C3F5282C26F354413D0AD703F9175141F6285C5F25F3544133333323FA17514148E17A1422F354415C8FC255FB1751413D0AD7431FF35441CDCCCCCCFC175141C3F5284C1CF3544166666646FE175141000000001AF354410000000002185141666666E614F35441C3F5284C04185141713D0A2712F354410AD7A3500718514148E17AB40EF354410AD7A3200B185141295C8F120BF35441713D0A770E18514114AE472108F354413333333315185141AE47E17A01F35441295C8F121F18514148E17AA4F4F25441A4703DDA2C1851415C8FC205E1F25441AE47E10A2F1851410AD7A390DDF25441CDCCCCAC2C185141AE47E1EAD8F25441D7A3709D291851411F85EB21D5F2544152B81E5528185141EC51B88ED2F2544148E17A5427185141713D0A47C8F25441EC51B8FE26185141A4703DDAC4F25441713D0A0726185141EC51B8CEBFF25441C3F528BC24185141EC51B80EBCF25441295C8F52231851415C8FC2F5B7F25441D7A370ED201851411F85EB01B1F25441C3F5283C1F1851419A999919ACF254419A9999E90A18514185EB5108B0F25441713D0A97F61751417B14AEF7B3F25441713D0AC7E517514185EB5138B7F254410AD7A3D0E4175141C3F528ECB7F2544148E17A24E7175141A4703D0AC3F25441E17A14BEE817514100000060CAF2544100000040E917514185EB51E8D2F2544185EB51A8E9175141713D0A57D9F254418FC2F5E8F017514166666646DCF25441B81E852BFA1751413D0AD723E0F25441842AD4CAF81751412EB775CAE6F254418FC2F54800185141EC51B88EEBF254413D0AD7F302185141A4703D5AEDF25441F6285CCF0618514114AE4761F0F254410AD7A3700E18514185EB51D8F7F254413333338310185141EC51B83EFBF25441C3F528CC11185141AE47E13AFEF2544100000020131851415C8FC25502F354411F85EB61111851418FC2F54804F3544148E17A640F18514100000050FEF25441CDCCCC3C0D185141A4703D4AFAF25441B81E858B09185141AE47E1BAF5F254411F85EB510418514166666696F0F2544114AE47A10018514148E17AE4EDF25441295C8FD2F8175141B81E854BF6F2544100000020F7175141000000F0F8F25441AE47E12AF417514185EB51D8FDF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>410773 - 53139
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000001ECF963EEFA85041220EA7BBFE47554197EF07FA1BA950419BCDA19E024855416D1FCF0A2BA95041EC7E13A1044855414AA58A1B2BA95041366C54AF04485541713D0A372DA950415C8FC255FE4755411F85EBE135A950410AD7A330E9475541D7A3706D3CA950417B14AE37D9475541666666D63BA95041713D0A07D8475541713D0A1729A9504185EB51E8D2475541E17A14AE14A95041A4703DBACC475541F6285C9F09A9504114AE4761C9475541000000D000A95041EC51B8EEC6475541CDCCCCACFFA850419A999989C7475541E17A142EFBA85041295C8FA2D6475541295C8FC2F4A850413D0AD733EC4755411ECF963EEFA85041220EA7BBFE475541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000713D0A372DA950415C8FC255FE4755416F48A1402DA95041994D5D3EFE475541F84F5C462DA950410B372C2DFE4755411945859030A950411398DF29F64755411F85EBE135A950410AD7A330E9475541D7A3706D3CA950417B14AE37D9475541666666D63BA95041713D0A07D8475541C1B7810430A95041BEC2A8CCD44755419280681429A95041D970A2E8D247554124055E2827A95041E4509856D247554106E8F9D41AA95041116E1B97CE47554137ABD2D619A95041E0C0264ACE475541A92A7C1919A95041A33CD210CE4755410F0F8C1519A9504136FDA00FCE4755414D88241019A950413D11FE0DCE475541FD06F70C0EA95041926AC8B9CA4755416EBBD44809A95041F9CF604CC947554192FADDCE00A95041B49252EFC647554195E0939C00A95041BAE5110AC7475541854F02AFFFA85041ACD26C88C74755416DC8E06DF8A8504130DEA8E9DF475541A76CA23EEFA850417B07A8BBFE475541489C7E59F1A85041C6F2D7E8FE4755413B71987CF1A850411B79C9EBFE4755415AB0BD061CA950419BCDA19E0248554154C7A86E24A9504102A9E2AF034855416361E71F2BA95041D3028BA004485541FF3F2F9D2BA95041EA66B32803485541713D0A372DA950415C8FC255FE475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983166 - 210192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000000000A0407F514148E17A04C1A55441713D0A973F7F51411F85EBA1C0A55441E17A14BE3E7F5141CDCCCC5CC0A5544185EB51583B7F5141713D0AA7BFA55441666666663C7F51411F85EBD1CBA55441713D0A273D7F5141CDCCCCBCD3A55441EC51B8DE3D7F5141EC51B8DED3A55441333333A33E7F5141713D0A27D4A5544148E17AA43F7F5141666666A6D4A55441C3F5283C407F51417B14AEE7D4A554413D0AD7E3407F51410AD7A310D5A5544100000070417F5141295C8F32D5A554418FC2F588477F51413D0AD773D6A554410AD7A3B04C7F514148E17A34D8A554419A9999694D7F5141A4703D6AD8A55441713D0AA7507F51418FC2F528D9A55441AE47E1BA517F5141CDCCCC5CD9A55441CDCCCC4C517F514100000030CAA554417B14AE77517F514100000040C2A55441E17A141E4F7F5141CDCCCC7CC1A55441EC51B84E4D7F51413D0AD7E3C0A55441C3F5289C4C7F51415C8FC205C1A55441F6285C6F4C7F51413D0AD713C1A55441E17A144E4B7F514114AE4771C1A554419A9999794A7F5141B81E853BC1A55441B81E855B4A7F5141295C8F22C1A554417B14AE57497F5141D7A3704DC0A55441AE47E1CA477F5141F6285C0FC0A55441C3F5282C467F514152B81E45C1A55441B81E85BB457F51415C8FC265C1A55441C3F5286C437F5141F6285C4FC1A55441B81E85EB417F5141713D0A57C1A55441D7A3700D417F5141CDCCCC3CC1A55441000000A0407F514148E17A04C1A55441
+</a>
+
+<b>
+010600000001000000010300000001000000190000008FC2F588477F51413D0AD773D6A55441AE9813A6477F51411E0EBD7DD6A5544172309DD74C7F514119B4860CD8A55441EA252166517F5141E7474F41D9A5544173F36E85517F5141D32B2942D3A55441BA77A2954E7F5141ACBE027ED3A5544113B78A3E4D7F5141EF646439D3A55441187D604E4C7F514116381517D3A55441B72BF2E24A7F5141622B4D5DD2A5544176434922477F514189FEFD3AD2A5544193A4F147447F51413DA965C5D2A55441C5102913437F51413DA965C5D2A55441A11813B7417F51415D18C8B1D2A55441AD8D6964417F51419A6D5BB8D2A55441E2031A0A417F51415D18C8B1D2A55441A456B3603D7F5141D9729554D2A55441B0FC7BC83D7F5141619C87AED3A5544175645929417F5141868EE1E5D4A554416CA2E478417F5141B72894EBD4A554411F5011BC417F5141F3A3A70CD5A55441B2949554467F514174DCFE2CD6A55441D3C53E7E467F5141E3B7F13CD6A554411E48D2D4467F51411475C34ED6A55441A4ABF21E477F51417737055ED6A554418FC2F588477F51413D0AD773D6A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980955 - 1675754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000DB894D97B7AB5041FC6E675B1F02554101140D6CC1AB504152F905EA28025541D25650FED2AB50413992A5073902554106CCE5AAD7AB50415251017E3C0255414BF713A3D8AB5041A217A4D63C0255415A9BAA43DAAB504118C147E63A02554154FD0215DCAB5041A02CA9103602554133333333AFAB5041EC51B86E0A025541967D1480A6AB50416C68554B0D02554151FB0928A6AB50411A07014E0E02554126E6DEBDADAB5041C3343BC815025541F8E974FEB5AB5041E246F3CD1D025541DB894D97B7AB5041FC6E675B1F025541
+</a>
+
+<b>
+010600000001000000010300000001000000090000008FC2F508C2AB5041295C8F82290255411F85EB71D7AB5041B81E851B3D025541713D0AF7D8AB5041AE47E1EA3C025541E17A145EDAAB5041AE47E1FA3A0255410AD7A330DCAB5041B81E852B3602554133333333AFAB5041EC51B86E0A0255413D0AD773A6AB5041F6285C4F0D0255411F85EB21A6AB5041295C8F620E0255418FC2F508C2AB5041295C8F8229025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980955 - 3554960
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000DB894D97B7AB5041FC6E675B1F02554101140D6CC1AB504152F905EA28025541D25650FED2AB50413992A5073902554106CCE5AAD7AB50415251017E3C0255414BF713A3D8AB5041A217A4D63C0255415A9BAA43DAAB504118C147E63A02554154FD0215DCAB5041A02CA9103602554133333333AFAB5041EC51B86E0A025541967D1480A6AB50416C68554B0D02554151FB0928A6AB50411A07014E0E02554126E6DEBDADAB5041C3343BC815025541F8E974FEB5AB5041E246F3CD1D025541DB894D97B7AB5041FC6E675B1F025541
+</a>
+
+<b>
+010600000001000000010300000001000000090000008FC2F508C2AB5041295C8F82290255411F85EB71D7AB5041B81E851B3D025541713D0AF7D8AB5041AE47E1EA3C025541E17A145EDAAB5041AE47E1FA3A0255410AD7A330DCAB5041B81E852B3602554133333333AFAB5041EC51B86E0A0255413D0AD773A6AB5041F6285C4F0D0255411F85EB21A6AB5041295C8F620E0255418FC2F508C2AB5041295C8F8229025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287727 - 219991
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B86EF3A8514185EB510808A654418FC2F5A8EBA851411F85EB0103A65441AE47E1DAE8A85141E17A14AEFFA55441CDCCCCCCDFA85141F6285CBF0CA65441000000A0DBA851410000001012A65441E17A14FEDFA85141C3F528CC13A65441666666F6E8A85141F6285C0F19A65441CDCCCC8CF4A851410AD7A3B01FA6544148E17AE4F4A85141000000B01DA654410AD7A3E0F5A8514185EB518812A65441F6285CAFF6A85141295C8F0207A6544148E17A74F5A851416666662606A65441EC51B86EF3A8514185EB510808A65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FFF932B4F4A85141CA38F4390AA65441EA16DC45F3A8514140C7C88209A65441BA6CA900F2A8514128722FE008A65441CBCAC8E4EEA851414D6FDDDA06A65441F225C0A5EBA851411F9908C904A65441060ED031E7A8514156D9701302A65441D8CCCCCCDFA8514116295CBF0CA65441140000A0DBA851410800001012A65441E17A14FEDFA85141C3F528CC13A654419FC0DA35E1A851411339128314A65441696666F6E8A85141D8285C0F19A65441CFCCCC8CF4A85141FCD6A3B01FA65441027FDDA5F4A85141943E171E1FA65441A9DD0CB1F4A85141CEEFB1DC1EA6544128E17AE4F4A85141E1FFFFAF1DA65441AFC901D0F5A851410AD2AF4413A654410AD7A3E0F5A8514185EB518812A6544161D91A4FF6A851417C2868070BA65441FFF932B4F4A85141CA38F4390AA65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287727 - 274994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B86EF3A8514185EB510808A654418FC2F5A8EBA851411F85EB0103A65441AE47E1DAE8A85141E17A14AEFFA55441CDCCCCCCDFA85141F6285CBF0CA65441000000A0DBA851410000001012A65441E17A14FEDFA85141C3F528CC13A65441666666F6E8A85141F6285C0F19A65441CDCCCC8CF4A851410AD7A3B01FA6544148E17AE4F4A85141000000B01DA654410AD7A3E0F5A8514185EB518812A65441F6285CAFF6A85141295C8F0207A6544148E17A74F5A851416666662606A65441EC51B86EF3A8514185EB510808A65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FFF932B4F4A85141CA38F4390AA65441EA16DC45F3A8514140C7C88209A65441BA6CA900F2A8514128722FE008A65441CBCAC8E4EEA851414D6FDDDA06A65441F225C0A5EBA851411F9908C904A65441060ED031E7A8514156D9701302A65441D8CCCCCCDFA8514116295CBF0CA65441140000A0DBA851410800001012A65441E17A14FEDFA85141C3F528CC13A654419FC0DA35E1A851411339128314A65441696666F6E8A85141D8285C0F19A65441CFCCCC8CF4A85141FCD6A3B01FA65441027FDDA5F4A85141943E171E1FA65441A9DD0CB1F4A85141CEEFB1DC1EA6544128E17AE4F4A85141E1FFFFAF1DA65441AFC901D0F5A851410AD2AF4413A654410AD7A3E0F5A8514185EB518812A6544161D91A4FF6A851417C2868070BA65441FFF932B4F4A85141CA38F4390AA65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 333394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441B81E858B19105141B81E853B75885441F6285C4F1410514148E17AC4738854412FCBD5E210105141BE4281C072885441C0C8FD7B0F105141C4E373FE72885441
+</a>
+
+<b>
+01060000000100000001030000000200000036000000B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441C3F5287CE10F5141AE47E1AA65885441E17A14BEE60F514148E17A94688854413D0AD7B3F10F5141D7A370ED6F88544152B81E55F70F5141CDCCCC8C73885441B81E85CB0310514185EB511873885441A4703DDA0B10514152B81E05738854415C8FC2850E1051418FC2F528738854415C8FC2E510105141000000C072885441F6285C4F1410514148E17AC473885441B81E858B19105141B81E853B75885441B81E85AB1D105141E17A141E76885441C3F5287C21105141B81E854B76885441AE47E10A2410514152B81E5576885441A4703D9A241051418FC2F52874885441D7A3704D1C105141666666367288544185EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F5141333333236688544152B81E05D90F51415C8FC24569885441713D0A27D80F51410AD7A3F06A885441F6285CAFD50F5141000000E06F885441000000C0D10F5141D7A370AD7788544152B81ED5D00F514148E17A547B8854410AD7A390CE0F514114AE47818488544114AE4731CD0F5141000000208A885441666666E6CC0F514166666616948854411F85EB41CC0F5141CDCCCC0C99885441666666C6CD0F5141EC51B8BE9B885441B81E85ABD10F5141D7A370DDA28854410A0000003D0AD733D20F51415C8FC29593885441CDCCCCACD10F51417B14AE8791885441EC51B89ECF0F5141E17A140E9188544133333383CF0F5141333333438F885441EC51B89ED00F5141EC51B8FE8D885441C3F528ACD00F514185EB51B8878854415C8FC235D60F51417B14AEC78A885441713D0A87D70F51415C8FC2D58C885441C3F5286CD60F5141333333F3918854413D0AD733D20F51415C8FC29593885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 1118071
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441B81E858B19105141B81E853B75885441F6285C4F1410514148E17AC4738854412FCBD5E210105141BE4281C072885441C0C8FD7B0F105141C4E373FE72885441
+</a>
+
+<b>
+01060000000100000001030000000200000036000000B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441C3F5287CE10F5141AE47E1AA65885441E17A14BEE60F514148E17A94688854413D0AD7B3F10F5141D7A370ED6F88544152B81E55F70F5141CDCCCC8C73885441B81E85CB0310514185EB511873885441A4703DDA0B10514152B81E05738854415C8FC2850E1051418FC2F528738854415C8FC2E510105141000000C072885441F6285C4F1410514148E17AC473885441B81E858B19105141B81E853B75885441B81E85AB1D105141E17A141E76885441C3F5287C21105141B81E854B76885441AE47E10A2410514152B81E5576885441A4703D9A241051418FC2F52874885441D7A3704D1C105141666666367288544185EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F5141333333236688544152B81E05D90F51415C8FC24569885441713D0A27D80F51410AD7A3F06A885441F6285CAFD50F5141000000E06F885441000000C0D10F5141D7A370AD7788544152B81ED5D00F514148E17A547B8854410AD7A390CE0F514114AE47818488544114AE4731CD0F5141000000208A885441666666E6CC0F514166666616948854411F85EB41CC0F5141CDCCCC0C99885441666666C6CD0F5141EC51B8BE9B885441B81E85ABD10F5141D7A370DDA28854410A0000003D0AD733D20F51415C8FC29593885441CDCCCCACD10F51417B14AE8791885441EC51B89ECF0F5141E17A140E9188544133333383CF0F5141333333438F885441EC51B89ED00F5141EC51B8FE8D885441C3F528ACD00F514185EB51B8878854415C8FC235D60F51417B14AEC78A885441713D0A87D70F51415C8FC2D58C885441C3F5286CD60F5141333333F3918854413D0AD733D20F51415C8FC29593885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 3918057
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441B81E858B19105141B81E853B75885441F6285C4F1410514148E17AC4738854412FCBD5E210105141BE4281C072885441C0C8FD7B0F105141C4E373FE72885441
+</a>
+
+<b>
+01060000000100000001030000000200000036000000B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441C3F5287CE10F5141AE47E1AA65885441E17A14BEE60F514148E17A94688854413D0AD7B3F10F5141D7A370ED6F88544152B81E55F70F5141CDCCCC8C73885441B81E85CB0310514185EB511873885441A4703DDA0B10514152B81E05738854415C8FC2850E1051418FC2F528738854415C8FC2E510105141000000C072885441F6285C4F1410514148E17AC473885441B81E858B19105141B81E853B75885441B81E85AB1D105141E17A141E76885441C3F5287C21105141B81E854B76885441AE47E10A2410514152B81E5576885441A4703D9A241051418FC2F52874885441D7A3704D1C105141666666367288544185EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F5141333333236688544152B81E05D90F51415C8FC24569885441713D0A27D80F51410AD7A3F06A885441F6285CAFD50F5141000000E06F885441000000C0D10F5141D7A370AD7788544152B81ED5D00F514148E17A547B8854410AD7A390CE0F514114AE47818488544114AE4731CD0F5141000000208A885441666666E6CC0F514166666616948854411F85EB41CC0F5141CDCCCC0C99885441666666C6CD0F5141EC51B8BE9B885441B81E85ABD10F5141D7A370DDA28854410A0000003D0AD733D20F51415C8FC29593885441CDCCCCACD10F51417B14AE8791885441EC51B89ECF0F5141E17A140E9188544133333383CF0F5141333333438F885441EC51B89ED00F5141EC51B8FE8D885441C3F528ACD00F514185EB51B8878854415C8FC235D60F51417B14AEC78A885441713D0A87D70F51415C8FC2D58C885441C3F5286CD60F5141333333F3918854413D0AD733D20F51415C8FC29593885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 33520
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441B81E858B19105141B81E853B75885441F6285C4F1410514148E17AC4738854412FCBD5E210105141BE4281C072885441C0C8FD7B0F105141C4E373FE72885441
+</a>
+
+<b>
+0106000000010000000103000000020000003600000085EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F5141333333236688544152B81E05D90F51415C8FC24569885441713D0A27D80F51410AD7A3F06A885441F6285CAFD50F5141000000E06F885441000000C0D10F5141D7A370AD7788544152B81ED5D00F514148E17A547B8854410AD7A390CE0F514114AE47818488544114AE4731CD0F5141000000208A885441666666E6CC0F514166666616948854411F85EB41CC0F5141CDCCCC0C99885441666666C6CD0F5141EC51B8BE9B885441B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441C3F5287CE10F5141AE47E1AA65885441E17A14BEE60F514148E17A94688854413D0AD7B3F10F5141D7A370ED6F88544152B81E55F70F5141CDCCCC8C73885441B81E85CB0310514185EB511873885441A4703DDA0B10514152B81E05738854415C8FC2850E1051418FC2F528738854415C8FC2E510105141000000C072885441F6285C4F1410514148E17AC473885441B81E858B19105141B81E853B75885441B81E85AB1D105141E17A141E76885441C3F5287C21105141B81E854B76885441AE47E10A2410514152B81E5576885441A4703D9A241051418FC2F52874885441D7A3704D1C105141666666367288544185EB51E813105141CDCCCCAC6F8854410A0000005C8FC235D60F51417B14AEC78A885441713D0A87D70F51415C8FC2D58C885441C3F5286CD60F5141333333F3918854413D0AD733D20F51415C8FC29593885441CDCCCCACD10F51417B14AE8791885441EC51B89ECF0F5141E17A140E9188544133333383CF0F5141333333438F885441EC51B89ED00F5141EC51B8FE8D885441C3F528ACD00F514185EB51B8878854415C8FC235D60F51417B14AEC78A885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 92862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441B81E858B19105141B81E853B75885441F6285C4F1410514148E17AC4738854412FCBD5E210105141BE4281C072885441C0C8FD7B0F105141C4E373FE72885441
+</a>
+
+<b>
+0106000000010000000103000000020000003600000085EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F5141333333236688544152B81E05D90F51415C8FC24569885441713D0A27D80F51410AD7A3F06A885441F6285CAFD50F5141000000E06F885441000000C0D10F5141D7A370AD7788544152B81ED5D00F514148E17A547B8854410AD7A390CE0F514114AE47818488544114AE4731CD0F5141000000208A885441666666E6CC0F514166666616948854411F85EB41CC0F5141CDCCCC0C99885441666666C6CD0F5141EC51B8BE9B885441B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441C3F5287CE10F5141AE47E1AA65885441E17A14BEE60F514148E17A94688854413D0AD7B3F10F5141D7A370ED6F88544152B81E55F70F5141CDCCCC8C73885441B81E85CB0310514185EB511873885441A4703DDA0B10514152B81E05738854415C8FC2850E1051418FC2F528738854415C8FC2E510105141000000C072885441F6285C4F1410514148E17AC473885441B81E858B19105141B81E853B75885441B81E85AB1D105141E17A141E76885441C3F5287C21105141B81E854B76885441AE47E10A2410514152B81E5576885441A4703D9A241051418FC2F52874885441D7A3704D1C105141666666367288544185EB51E813105141CDCCCCAC6F8854410A0000005C8FC235D60F51417B14AEC78A885441713D0A87D70F51415C8FC2D58C885441C3F5286CD60F5141333333F3918854413D0AD733D20F51415C8FC29593885441CDCCCCACD10F51417B14AE8791885441EC51B89ECF0F5141E17A140E9188544133333383CF0F5141333333438F885441EC51B89ED00F5141EC51B8FE8D885441C3F528ACD00F514185EB51B8878854415C8FC235D60F51417B14AEC78A885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 294842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441B81E858B19105141B81E853B75885441F6285C4F1410514148E17AC4738854412FCBD5E210105141BE4281C072885441C0C8FD7B0F105141C4E373FE72885441
+</a>
+
+<b>
+0106000000010000000103000000020000003600000085EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F5141333333236688544152B81E05D90F51415C8FC24569885441713D0A27D80F51410AD7A3F06A885441F6285CAFD50F5141000000E06F885441000000C0D10F5141D7A370AD7788544152B81ED5D00F514148E17A547B8854410AD7A390CE0F514114AE47818488544114AE4731CD0F5141000000208A885441666666E6CC0F514166666616948854411F85EB41CC0F5141CDCCCC0C99885441666666C6CD0F5141EC51B8BE9B885441B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441C3F5287CE10F5141AE47E1AA65885441E17A14BEE60F514148E17A94688854413D0AD7B3F10F5141D7A370ED6F88544152B81E55F70F5141CDCCCC8C73885441B81E85CB0310514185EB511873885441A4703DDA0B10514152B81E05738854415C8FC2850E1051418FC2F528738854415C8FC2E510105141000000C072885441F6285C4F1410514148E17AC473885441B81E858B19105141B81E853B75885441B81E85AB1D105141E17A141E76885441C3F5287C21105141B81E854B76885441AE47E10A2410514152B81E5576885441A4703D9A241051418FC2F52874885441D7A3704D1C105141666666367288544185EB51E813105141CDCCCCAC6F8854410A0000005C8FC235D60F51417B14AEC78A885441713D0A87D70F51415C8FC2D58C885441C3F5286CD60F5141333333F3918854413D0AD733D20F51415C8FC29593885441CDCCCCACD10F51417B14AE8791885441EC51B89ECF0F5141E17A140E9188544133333383CF0F5141333333438F885441EC51B89ED00F5141EC51B8FE8D885441C3F528ACD00F514185EB51B8878854415C8FC235D60F51417B14AEC78A885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232789 - 1850755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E544114AE471150AD50410AD7A3207C5E5441713D0A970CAD5041666666D6715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441E216957B16AD5041BDCA9958735E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232789 - 3604301
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E544114AE471150AD50410AD7A3207C5E5441713D0A970CAD5041666666D6715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441E216957B16AD5041BDCA9958735E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232838 - 1850755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000014AE471144AD5041D7A370DD5F5E5441000000400AAD504148E17AC4575E5441A4703DCA07AD5041E17A147E5E5E54419A9999B905AD504100000060665E5441C3F5285C03AD5041E17A146E705E5441713D0A970CAD5041666666D6715E544114AE471150AD50410AD7A3207C5E544148E17A9450AD50418FC2F528755E5441713D0A4752AD5041AE47E1DA615E544114AE471144AD5041D7A370DD5F5E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441E216957B16AD5041BDCA9958735E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232838 - 3604301
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000014AE471144AD5041D7A370DD5F5E5441000000400AAD504148E17AC4575E5441A4703DCA07AD5041E17A147E5E5E54419A9999B905AD504100000060665E5441C3F5285C03AD5041E17A146E705E5441713D0A970CAD5041666666D6715E544114AE471150AD50410AD7A3207C5E544148E17A9450AD50418FC2F528755E5441713D0A4752AD5041AE47E1DA615E544114AE471144AD5041D7A370DD5F5E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441E216957B16AD5041BDCA9958735E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499541 - 1083509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000400000001030000000100000012000000E17A142EA51F51415C8FC2356C2454415C8FC2B5A01F5141AE47E1BA7124544148E17A34A11F51418FC2F58872245441AE47E12AA31F514133333393782454410AD7A370A51F51419A9999997F24544185EB5128A81F5141713D0AE784245441D7A370FDAD1F51417B14AE778224544185EB5168B41F5141A4703DAA7D2454415C8FC2C5B81F5141D7A3701D7A2454418FC2F5A8BC1F5141F6285CCF762454410AD7A3D0A91F5141CDCCCC7C66245441AE47E14AA51F5141333333136C245441333333D3A51F5141333333936D245441E17A140EA61F5141713D0A876E245441E17A14BEA51F51411F85EBB16D245441713D0A87A51F5141666666166D24544152B81E45A51F5141000000706C245441E17A142EA51F51415C8FC2356C24544101030000000100000030000000A4703D4A511F51411F85EBB140245441333333B3541F51411F85EBC137245441713D0AE7511F514114AE47713724544114AE47D14F1F51413D0AD753372454411F85EBF1491F5141AE47E16A372454410AD7A3A0461F51411F85EB81372454411F85EBD1421F5141CDCCCC3C37245441333333933D1F514114AE47E136245441B81E858B3C1F51415C8FC23539245441D7A3705D3C1F51417B14AE173B245441666666E6391F5141A4703D3A3B24544114AE4751391F514114AE47114024544166666676381F5141F6285C1F44245441CDCCCC9C371F51413D0AD703472454410AD7A390361F5141EC51B84E492454418FC2F508361F51417B14AE974A245441F6285CAF331F5141E17A144E50245441A4703D6A301F5141F6285CDF572454410AD7A3302D1F514114AE47215F24544152B81E452F1F5141C3F5285C612454417B14AE37331F514114AE477164245441F6285C1F331F5141713D0AB7662454419A9999D9321F5141000000506D24544185EB51F8311F5141713D0AC76F2454418FC2F5F82F1F51416666666675245441A4703D2A2F1F5141A4703D7A782454413D0AD7D32F1F5141CDCCCC3C86245441A4703DCA3F1F5141C3F5289C8C2454418FC2F5383A1F5141E17A147E9C24544114AE47E1451F514185EB5188A12454419A999939471F51419A9999B99E245441AE47E12A4A1F5141F6285C3F9924544185EB51084C1F5141A4703DDA9424544114AE47514D1F5141713D0A4791245441C3F5288C4F1F5141713D0AB78A2454413D0AD733511F5141AE47E17A84245441713D0A974F1F5141A4703D6A802454419A9999894D1F51413D0AD7337B245441713D0A474F1F514148E17A44712454418FC2F508531F5141B81E851B67245441C3F528BC531F5141666666F66424544152B81E15541F5141666666E66324544185EB5138551F5141B81E850B61245441CDCCCCAC551F5141EC51B8AE5A2454411F85EBA1561F5141713D0AD756245441E17A145E571F5141713D0AD75324544166666676581F51410AD7A3B04D245441A4703D4A511F51411F85EBB14024544101030000000100000005000000295C8F22EA1F51410000005080245441AE47E1AAD71F51419A99999993245441C3F5289CD31F5141713D0A77A024544100000060032051418FC2F55896245441295C8F22EA1F51410000005080245441010300000001000000A000000052B81EC53F1F51411F85EBD12724544114AE4771401F5141713D0A772A245441CDCCCC7C401F514152B81E7531245441D7A3706D3E1F5141E17A14CE352454418FC2F5A8471F51410AD7A39036245441713D0A07511F51413333336336245441B81E852B541F51419A9999A936245441EC51B81E551F51417B14AEA7362454419A9999D9561F514148E17A14322454417B14AEA7561F51413D0AD7C3312454417B14AE57561F514114AE47413124544148E17A04561F514148E17AB43024544148E17AA4551F514148E17A5430245441F6285C3F551F5141AE47E1FA2F245441295C8FB2541F514114AE47812F24544133333363541F5141CDCCCC1C2F24544152B81E25541F5141B81E85BB2E24544185EB51F8531F514152B81E652E2454413D0AD7E3531F514185EB51182E2454413D0AD7E3531F51411F85EBC12D245441C3F528EC531F514148E17A542D245441A4703D1A541F5141B81E859B2C245441D7A3706D541F5141E17A148E2B245441A4703D7A541F51410AD7A3402B2454411F85EB71541F5141666666062B245441A4703D5A541F514148E17AE42A2454413D0AD723541F51411F85EBB12A24544114AE47D1531F5141A4703D8A2A245441F6285C4F531F5141A4703D3A2A24544185EB51D8521F5141AE47E1DA29245441EC51B87E521F51419A99996929245441EC51B82E521F5141C3F5280C292454417B14AEB7511F5141F6285CBF28245441A4703D4A511F5141D7A3708D28245441C3F528DC501F5141A4703D7A28245441CDCCCC5C501F5141CDCCCC5C282454410AD7A3E04F1F51413333332328245441A4703D5A4F1F5141000000C027245441666666E64E1F51419A99995927245441713D0A974E1F5141A4703DFA26245441333333634E1F5141B81E85DB26245441CDCCCC0C4E1F5141AE47E1CA26245441333333934D1F5141EC51B8AE26245441C3F5282C4D1F5141B81E857B2624544148E17AA44C1F514148E17A2426245441E17A143E4C1F5141A4703DCA25245441713D0AA74B1F514114AE47C124245441295C8F324B1F5141000000D0232454418FC2F5484A1F514185EB511822245441F6285CCF491F514166666656212454411F85EB71491F51411F85EBE1202454413D0AD703491F51419A99997920245441C3F528AC481F5141CDCCCC3C202454419A9999C9471F5141D7A370ED1F24544185EB5128471F51418FC2F5A81F245441AE47E1AA461F5141A4703D5A1F24544166666666461F5141333333231F2454410AD7A320461F51418FC2F5B81E245441C3F528DC451F51410AD7A3001E24544133333383451F5141C3F5280C1D245441295C8F02451F5141666666361C245441295C8F42441F5141EC51B86E1B24544166666676431F51419A9999791A245441EC51B8CE421F51411F85EBD119245441D7A3704D421F51417B14AE27192454411F85EB31421F5141D7A370DD182454410AD7A300421F5141EC51B85E1824544114AE4711421F51419A9999691724544114AE4731421F514185EB5168162454417B14AE17421F51410AD7A3201524544166666696411F51415C8FC2551324544185EB5138411F514185EB5118122454415C8FC2C5401F5141D7A3703D112454417B14AE77401F51415C8FC2E5102454418FC2F5F83F1F5141E17A148E102454419A9999793F1F5141B81E855B10245441E17A14EE3E1F51419A99991910245441E17A145E3E1F5141CDCCCC9C0F2454410AD7A3203E1F5141EC51B80E0F245441F6285C0F3E1F5141AE47E17A0E245441F6285CFF3D1F5141AE47E10A0E24544152B81ED53D1F51417B14AE970D245441B81E854B3D1F5141E17A14BE0C2454419A9999C93C1F5141CDCCCCDC0B245441713D0A273C1F5141A4703DEA0A245441CDCCCCDC3B1F5141713D0A570A245441A4703DCA3B1F51417B14AEF709245441D7A370CD3B1F51411F85EB9109245441D7A370DD3B1F514114AE474109245441EC51B81E3C1F5141F6285CBF0824544148E17A643C1F5141E17A142E08245441C3F5288C3C1F5141000000A007245441000000903C1F51410AD7A340072454419A9999893C1F5141EC51B8CE062454415C8FC2653C1F514185EB5158062454415C8FC2153C1F514114AE47F105245441CDCCCC5C3B1F514166666646052454417B14AEE73A1F514185EB51B8042454418FC2F5883A1F5141F6285C1F04245441666666563A1F51418FC2F58803245441F6285C2F3A1F514152B81EB502245441AE47E1EA331F51418FC2F5C807245441C3F5288C331F5141A4703D5A0824544152B81EE52F1F5141000000500D2454418FC2F5C82C1F5141AE47E1DA102454419A9999B9281F5141666666F6142454411F85EB21271F51417B14AE9716245441D7A370DD221F51417B14AE971924544148E17AC41F1F51415C8FC2C51B2454411F85EBE11B1F514185EB51681E245441D7A3700D1A1F51418FC2F5581F24544133333343171F5141D7A370BD212454417B14AEB7151F51413333331323245441EC51B8DE131F514148E17AA42424544185EB51E8101F51411F85EBE126245441E17A14AE131F5141D7A3703D2A245441F6285CCF151F514114AE47112D245441CDCCCC7C171F5141B81E854B2F245441AE47E1BA171F5141AE47E1AA2F24544152B81EB5181F514185EB512831245441B81E850B1A1F514114AE47613324544148E17A941B1F514152B81E65362454419A9999C9201F51418FC2F5C83F2454419A999989211F514133333323412454417B14AE77241F5141666666764124544100000040251F514152B81E9541245441E17A14BE261F51413D0AD72342245441713D0A57281F5141AE47E1FA42245441F6285C3F291F5141F6285C5F43245441EC51B85E2A1F5141666666B643245441D7A3701D2B1F51419A9999C943245441EC51B89E2B1F5141CDCCCCCC4324544185EB51A82C1F5141D7A3709D43245441EC51B89E2D1F51411F85EB3143245441B81E852B2E1F514114AE47114324544148E17A642F1F51415C8FC2F5422454411F85EB01301F51419A9999C942245441666666A6301F51411F85EB41422454417B14AE57311F5141D7A370ED41245441F6285C4F321F5141713D0AC74124544114AE4791331F5141F6285CDF4124544114AE47F1341F5141B81E852B4224544185EB5188341F5141713D0A5742245441AE47E1DA331F51418FC2F53842245441C3F528AC321F514152B81E05422454410AD7A3B0311F51417B14AE1742245441C3F5280C311F51413D0AD763422454413D0AD743301F51413D0AD7F34224544185EB51682F1F51418FC2F5684324544185EB51782E1F5141CDCCCC8C4324544114AE47912D1F5141F6285CFF43245441666666F6351F514114AE47814724544185EB5158371F5141D7A370DD44245441D7A3703D381F5141D7A3706D40245441295C8F82381F51418FC2F5583C2454418FC2F5E8351F5141B81E851B3A245441B81E850B361F51419A9999193424544148E17A54381F5141333333932F245441D7A3704D3A1F5141666666662524544152B81EC53F1F51411F85EBD127245441
+</a>
+
+<b>
+010600000001000000010300000001000000EC000000F38BA35E4A1F5141D3EE7E8336245441713D0A07511F51413333336336245441B81E852B541F51419A9999A936245441EC51B81E551F51417B14AEA7362454419A9999D9561F514148E17A14322454417B14AEA7561F51413D0AD7C3312454417B14AE57561F514114AE47413124544148E17A04561F514148E17AB43024544148E17AA4551F514148E17A5430245441F6285C3F551F5141AE47E1FA2F245441295C8FB2541F514114AE47812F24544133333363541F5141CDCCCC1C2F24544152B81E25541F5141B81E85BB2E24544185EB51F8531F514152B81E652E2454413D0AD7E3531F514185EB51182E2454413D0AD7E3531F51411F85EBC12D245441C3F528EC531F514148E17A542D245441A4703D1A541F5141B81E859B2C245441D7A3706D541F5141E17A148E2B245441A4703D7A541F51410AD7A3402B2454411F85EB71541F5141666666062B245441A4703D5A541F514148E17AE42A2454413D0AD723541F51411F85EBB12A24544114AE47D1531F5141A4703D8A2A245441F6285C4F531F5141A4703D3A2A24544185EB51D8521F5141AE47E1DA29245441EC51B87E521F51419A99996929245441EC51B82E521F5141C3F5280C292454417B14AEB7511F5141F6285CBF28245441A4703D4A511F5141D7A3708D28245441C3F528DC501F5141A4703D7A28245441CDCCCC5C501F5141CDCCCC5C282454410AD7A3E04F1F51413333332328245441A4703D5A4F1F5141000000C027245441666666E64E1F51419A99995927245441713D0A974E1F5141A4703DFA26245441333333634E1F5141B81E85DB26245441CDCCCC0C4E1F5141AE47E1CA26245441333333934D1F5141EC51B8AE26245441C3F5282C4D1F5141B81E857B2624544148E17AA44C1F514148E17A2426245441E17A143E4C1F5141A4703DCA25245441713D0AA74B1F514114AE47C124245441295C8F324B1F5141000000D0232454418FC2F5484A1F514185EB511822245441F6285CCF491F514166666656212454411F85EB71491F51411F85EBE1202454413D0AD703491F51419A99997920245441C3F528AC481F5141CDCCCC3C202454419A9999C9471F5141D7A370ED1F24544185EB5128471F51418FC2F5A81F245441AE47E1AA461F5141A4703D5A1F24544166666666461F5141333333231F2454410AD7A320461F51418FC2F5B81E245441C3F528DC451F51410AD7A3001E24544133333383451F5141C3F5280C1D245441295C8F02451F5141666666361C245441295C8F42441F5141EC51B86E1B24544166666676431F51419A9999791A245441EC51B8CE421F51411F85EBD119245441D7A3704D421F51417B14AE27192454411F85EB31421F5141D7A370DD182454410AD7A300421F5141EC51B85E1824544114AE4711421F51419A9999691724544114AE4731421F514185EB5168162454417B14AE17421F51410AD7A3201524544166666696411F51415C8FC2551324544185EB5138411F514185EB5118122454415C8FC2C5401F5141D7A3703D112454417B14AE77401F51415C8FC2E5102454418FC2F5F83F1F5141E17A148E102454419A9999793F1F5141B81E855B10245441E17A14EE3E1F51419A99991910245441E17A145E3E1F5141CDCCCC9C0F2454410AD7A3203E1F5141EC51B80E0F245441F6285C0F3E1F5141AE47E17A0E245441F6285CFF3D1F5141AE47E10A0E24544152B81ED53D1F51417B14AE970D245441B81E854B3D1F5141E17A14BE0C2454419A9999C93C1F5141CDCCCCDC0B245441713D0A273C1F5141A4703DEA0A245441CDCCCCDC3B1F5141713D0A570A245441A4703DCA3B1F51417B14AEF709245441D7A370CD3B1F51411F85EB9109245441D7A370DD3B1F514114AE474109245441EC51B81E3C1F5141F6285CBF0824544148E17A643C1F5141E17A142E08245441C3F5288C3C1F5141000000A007245441000000903C1F51410AD7A340072454419A9999893C1F5141EC51B8CE062454415C8FC2653C1F514185EB5158062454415C8FC2153C1F514114AE47F105245441CDCCCC5C3B1F514166666646052454417B14AEE73A1F514185EB51B8042454418FC2F5883A1F5141F6285C1F04245441666666563A1F51418FC2F58803245441F6285C2F3A1F514152B81EB502245441AE47E1EA331F51418FC2F5C807245441C3F5288C331F5141A4703D5A0824544152B81EE52F1F5141000000500D2454418FC2F5C82C1F5141AE47E1DA102454419A9999B9281F5141666666F6142454411F85EB21271F51417B14AE9716245441D7A370DD221F51417B14AE971924544148E17AC41F1F51415C8FC2C51B2454411F85EBE11B1F514185EB51681E245441D7A3700D1A1F51418FC2F5581F24544133333343171F5141D7A370BD212454417B14AEB7151F51413333331323245441EC51B8DE131F514148E17AA42424544185EB51E8101F51411F85EBE126245441E17A14AE131F5141D7A3703D2A245441F6285CCF151F514114AE47112D245441CDCCCC7C171F5141B81E854B2F245441AE47E1BA171F5141AE47E1AA2F24544152B81EB5181F514185EB512831245441B81E850B1A1F514114AE47613324544148E17A941B1F514152B81E65362454419A9999C9201F51418FC2F5C83F2454419A999989211F514133333323412454417B14AE77241F5141666666764124544100000040251F514152B81E9541245441E17A14BE261F51413D0AD72342245441713D0A57281F5141AE47E1FA42245441F6285C3F291F5141F6285C5F43245441EC51B85E2A1F5141666666B643245441D7A3701D2B1F51419A9999C943245441EC51B89E2B1F5141CDCCCCCC4324544185EB51A82C1F5141D7A3709D43245441EC51B89E2D1F51411F85EB3143245441B81E852B2E1F514114AE47114324544148E17A642F1F51415C8FC2F5422454411F85EB01301F51419A9999C942245441666666A6301F51411F85EB41422454417B14AE57311F5141D7A370ED41245441F6285C4F321F5141713D0AC74124544114AE4791331F5141F6285CDF4124544114AE47F1341F5141B81E852B4224544185EB5188341F5141713D0A5742245441AE47E1DA331F51418FC2F53842245441C3F528AC321F514152B81E05422454410AD7A3B0311F51417B14AE1742245441C3F5280C311F51413D0AD763422454413D0AD743301F51413D0AD7F34224544185EB51682F1F51418FC2F5684324544185EB51782E1F5141CDCCCC8C4324544114AE47912D1F5141F6285CFF43245441666666F6351F514114AE47814724544185EB5158371F5141D7A370DD44245441D7A3703D381F5141D7A3706D40245441295C8F82381F51418FC2F5583C2454418FC2F5E8351F5141B81E851B3A245441B81E850B361F51419A9999193424544148E17A54381F5141333333932F245441D7A3704D3A1F5141666666662524544152B81EC53F1F51411F85EBD12724544114AE4771401F5141713D0A772A245441CDCCCC7C401F514152B81E7531245441D7A3706D3E1F5141E17A14CE352454418FC2F5A8471F51410AD7A39036245441A947EDE1491F514135E3DB8536245441E2B6D0034A1F5141F4119B6A372454411F85EBF1491F5141AE47E16A372454410AD7A3A0461F51411F85EB81372454411F85EBD1421F5141CDCCCC3C37245441333333933D1F514114AE47E136245441B81E858B3C1F51415C8FC23539245441D7A3705D3C1F51417B14AE173B245441666666E6391F5141A4703D3A3B24544114AE4751391F514114AE47114024544166666676381F5141F6285C1F44245441CDCCCC9C371F51413D0AD703472454410AD7A390361F5141EC51B84E492454418FC2F508361F51417B14AE974A245441F6285CAF331F5141E17A144E50245441A4703D6A301F5141F6285CDF572454410AD7A3302D1F514114AE47215F24544152B81E452F1F5141C3F5285C612454417B14AE37331F514114AE477164245441F6285C1F331F5141713D0AB7662454419A9999D9321F5141000000506D24544185EB51F8311F5141713D0AC76F2454418FC2F5F82F1F51416666666675245441A4703D2A2F1F5141A4703D7A782454413D0AD7D32F1F5141CDCCCC3C86245441A4703DCA3F1F5141C3F5289C8C2454418FC2F5383A1F5141E17A147E9C24544114AE47E1451F514185EB5188A12454419A999939471F51419A9999B99E245441AE47E12A4A1F5141F6285C3F9924544185EB51084C1F5141A4703DDA9424544114AE47514D1F5141713D0A4791245441C3F5288C4F1F5141713D0AB78A2454413D0AD733511F5141AE47E17A84245441713D0A974F1F5141A4703D6A802454419A9999894D1F51413D0AD7337B245441713D0A474F1F514148E17A44712454418FC2F508531F5141B81E851B67245441C3F528BC531F5141666666F66424544152B81E15541F5141666666E66324544185EB5138551F5141B81E850B61245441CDCCCCAC551F5141EC51B8AE5A2454411F85EBA1561F5141713D0AD756245441E17A145E571F5141713D0AD75324544166666676581F51410AD7A3B04D245441D5FC67B4521F5141580297434324544165D595AF771F514126E48D995724544175F1D9C9901F514187955D7065245441308F5D16A21F5141885CE7786F2454415C8FC2B5A01F5141AE47E1BA7124544148E17A34A11F51418FC2F58872245441AE47E12AA31F514133333393782454410AD7A370A51F51419A9999997F24544185EB5128A81F5141713D0AE784245441D7A370FDAD1F51417B14AE778224544185EB5168B41F5141A4703DAA7D2454414AAA1BD4BB1F5141C2BCAA597724544162E4BF92E01F514127B87F4C8A245441AE47E1AAD71F51419A99999993245441C3F5289CD31F5141713D0A77A024544100000060032051418FC2F55896245441295C8F22EA1F514100000050802454418B6986E7E01F5141878EF5F38924544158AA1BD4BB1F51418EB48DE0762454416DBAE2E1A91F51416F50894169245441767FEDDAA41F51417318746F6C245441A6E3BA3DA21F51417F5E55206F245441107023D68D1F5141E82B47AE632454419FCFF47F881F514157154BC260245441A06CCE70521F5141DB179CC742245441A4703D4A511F51411F85EBB140245441333333B3541F51411F85EBC137245441713D0AE7511F514114AE47713724544114AE47D14F1F51413D0AD75337245441004E2F914A1F5141D16C706837245441F38BA35E4A1F5141D3EE7E8336245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499541 - 3889469
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000400000001030000000100000012000000E17A142EA51F51415C8FC2356C2454415C8FC2B5A01F5141AE47E1BA7124544148E17A34A11F51418FC2F58872245441AE47E12AA31F514133333393782454410AD7A370A51F51419A9999997F24544185EB5128A81F5141713D0AE784245441D7A370FDAD1F51417B14AE778224544185EB5168B41F5141A4703DAA7D2454415C8FC2C5B81F5141D7A3701D7A2454418FC2F5A8BC1F5141F6285CCF762454410AD7A3D0A91F5141CDCCCC7C66245441AE47E14AA51F5141333333136C245441333333D3A51F5141333333936D245441E17A140EA61F5141713D0A876E245441E17A14BEA51F51411F85EBB16D245441713D0A87A51F5141666666166D24544152B81E45A51F5141000000706C245441E17A142EA51F51415C8FC2356C24544101030000000100000030000000A4703D4A511F51411F85EBB140245441333333B3541F51411F85EBC137245441713D0AE7511F514114AE47713724544114AE47D14F1F51413D0AD753372454411F85EBF1491F5141AE47E16A372454410AD7A3A0461F51411F85EB81372454411F85EBD1421F5141CDCCCC3C37245441333333933D1F514114AE47E136245441B81E858B3C1F51415C8FC23539245441D7A3705D3C1F51417B14AE173B245441666666E6391F5141A4703D3A3B24544114AE4751391F514114AE47114024544166666676381F5141F6285C1F44245441CDCCCC9C371F51413D0AD703472454410AD7A390361F5141EC51B84E492454418FC2F508361F51417B14AE974A245441F6285CAF331F5141E17A144E50245441A4703D6A301F5141F6285CDF572454410AD7A3302D1F514114AE47215F24544152B81E452F1F5141C3F5285C612454417B14AE37331F514114AE477164245441F6285C1F331F5141713D0AB7662454419A9999D9321F5141000000506D24544185EB51F8311F5141713D0AC76F2454418FC2F5F82F1F51416666666675245441A4703D2A2F1F5141A4703D7A782454413D0AD7D32F1F5141CDCCCC3C86245441A4703DCA3F1F5141C3F5289C8C2454418FC2F5383A1F5141E17A147E9C24544114AE47E1451F514185EB5188A12454419A999939471F51419A9999B99E245441AE47E12A4A1F5141F6285C3F9924544185EB51084C1F5141A4703DDA9424544114AE47514D1F5141713D0A4791245441C3F5288C4F1F5141713D0AB78A2454413D0AD733511F5141AE47E17A84245441713D0A974F1F5141A4703D6A802454419A9999894D1F51413D0AD7337B245441713D0A474F1F514148E17A44712454418FC2F508531F5141B81E851B67245441C3F528BC531F5141666666F66424544152B81E15541F5141666666E66324544185EB5138551F5141B81E850B61245441CDCCCCAC551F5141EC51B8AE5A2454411F85EBA1561F5141713D0AD756245441E17A145E571F5141713D0AD75324544166666676581F51410AD7A3B04D245441A4703D4A511F51411F85EBB14024544101030000000100000005000000295C8F22EA1F51410000005080245441AE47E1AAD71F51419A99999993245441C3F5289CD31F5141713D0A77A024544100000060032051418FC2F55896245441295C8F22EA1F51410000005080245441010300000001000000A000000052B81EC53F1F51411F85EBD12724544114AE4771401F5141713D0A772A245441CDCCCC7C401F514152B81E7531245441D7A3706D3E1F5141E17A14CE352454418FC2F5A8471F51410AD7A39036245441713D0A07511F51413333336336245441B81E852B541F51419A9999A936245441EC51B81E551F51417B14AEA7362454419A9999D9561F514148E17A14322454417B14AEA7561F51413D0AD7C3312454417B14AE57561F514114AE47413124544148E17A04561F514148E17AB43024544148E17AA4551F514148E17A5430245441F6285C3F551F5141AE47E1FA2F245441295C8FB2541F514114AE47812F24544133333363541F5141CDCCCC1C2F24544152B81E25541F5141B81E85BB2E24544185EB51F8531F514152B81E652E2454413D0AD7E3531F514185EB51182E2454413D0AD7E3531F51411F85EBC12D245441C3F528EC531F514148E17A542D245441A4703D1A541F5141B81E859B2C245441D7A3706D541F5141E17A148E2B245441A4703D7A541F51410AD7A3402B2454411F85EB71541F5141666666062B245441A4703D5A541F514148E17AE42A2454413D0AD723541F51411F85EBB12A24544114AE47D1531F5141A4703D8A2A245441F6285C4F531F5141A4703D3A2A24544185EB51D8521F5141AE47E1DA29245441EC51B87E521F51419A99996929245441EC51B82E521F5141C3F5280C292454417B14AEB7511F5141F6285CBF28245441A4703D4A511F5141D7A3708D28245441C3F528DC501F5141A4703D7A28245441CDCCCC5C501F5141CDCCCC5C282454410AD7A3E04F1F51413333332328245441A4703D5A4F1F5141000000C027245441666666E64E1F51419A99995927245441713D0A974E1F5141A4703DFA26245441333333634E1F5141B81E85DB26245441CDCCCC0C4E1F5141AE47E1CA26245441333333934D1F5141EC51B8AE26245441C3F5282C4D1F5141B81E857B2624544148E17AA44C1F514148E17A2426245441E17A143E4C1F5141A4703DCA25245441713D0AA74B1F514114AE47C124245441295C8F324B1F5141000000D0232454418FC2F5484A1F514185EB511822245441F6285CCF491F514166666656212454411F85EB71491F51411F85EBE1202454413D0AD703491F51419A99997920245441C3F528AC481F5141CDCCCC3C202454419A9999C9471F5141D7A370ED1F24544185EB5128471F51418FC2F5A81F245441AE47E1AA461F5141A4703D5A1F24544166666666461F5141333333231F2454410AD7A320461F51418FC2F5B81E245441C3F528DC451F51410AD7A3001E24544133333383451F5141C3F5280C1D245441295C8F02451F5141666666361C245441295C8F42441F5141EC51B86E1B24544166666676431F51419A9999791A245441EC51B8CE421F51411F85EBD119245441D7A3704D421F51417B14AE27192454411F85EB31421F5141D7A370DD182454410AD7A300421F5141EC51B85E1824544114AE4711421F51419A9999691724544114AE4731421F514185EB5168162454417B14AE17421F51410AD7A3201524544166666696411F51415C8FC2551324544185EB5138411F514185EB5118122454415C8FC2C5401F5141D7A3703D112454417B14AE77401F51415C8FC2E5102454418FC2F5F83F1F5141E17A148E102454419A9999793F1F5141B81E855B10245441E17A14EE3E1F51419A99991910245441E17A145E3E1F5141CDCCCC9C0F2454410AD7A3203E1F5141EC51B80E0F245441F6285C0F3E1F5141AE47E17A0E245441F6285CFF3D1F5141AE47E10A0E24544152B81ED53D1F51417B14AE970D245441B81E854B3D1F5141E17A14BE0C2454419A9999C93C1F5141CDCCCCDC0B245441713D0A273C1F5141A4703DEA0A245441CDCCCCDC3B1F5141713D0A570A245441A4703DCA3B1F51417B14AEF709245441D7A370CD3B1F51411F85EB9109245441D7A370DD3B1F514114AE474109245441EC51B81E3C1F5141F6285CBF0824544148E17A643C1F5141E17A142E08245441C3F5288C3C1F5141000000A007245441000000903C1F51410AD7A340072454419A9999893C1F5141EC51B8CE062454415C8FC2653C1F514185EB5158062454415C8FC2153C1F514114AE47F105245441CDCCCC5C3B1F514166666646052454417B14AEE73A1F514185EB51B8042454418FC2F5883A1F5141F6285C1F04245441666666563A1F51418FC2F58803245441F6285C2F3A1F514152B81EB502245441AE47E1EA331F51418FC2F5C807245441C3F5288C331F5141A4703D5A0824544152B81EE52F1F5141000000500D2454418FC2F5C82C1F5141AE47E1DA102454419A9999B9281F5141666666F6142454411F85EB21271F51417B14AE9716245441D7A370DD221F51417B14AE971924544148E17AC41F1F51415C8FC2C51B2454411F85EBE11B1F514185EB51681E245441D7A3700D1A1F51418FC2F5581F24544133333343171F5141D7A370BD212454417B14AEB7151F51413333331323245441EC51B8DE131F514148E17AA42424544185EB51E8101F51411F85EBE126245441E17A14AE131F5141D7A3703D2A245441F6285CCF151F514114AE47112D245441CDCCCC7C171F5141B81E854B2F245441AE47E1BA171F5141AE47E1AA2F24544152B81EB5181F514185EB512831245441B81E850B1A1F514114AE47613324544148E17A941B1F514152B81E65362454419A9999C9201F51418FC2F5C83F2454419A999989211F514133333323412454417B14AE77241F5141666666764124544100000040251F514152B81E9541245441E17A14BE261F51413D0AD72342245441713D0A57281F5141AE47E1FA42245441F6285C3F291F5141F6285C5F43245441EC51B85E2A1F5141666666B643245441D7A3701D2B1F51419A9999C943245441EC51B89E2B1F5141CDCCCCCC4324544185EB51A82C1F5141D7A3709D43245441EC51B89E2D1F51411F85EB3143245441B81E852B2E1F514114AE47114324544148E17A642F1F51415C8FC2F5422454411F85EB01301F51419A9999C942245441666666A6301F51411F85EB41422454417B14AE57311F5141D7A370ED41245441F6285C4F321F5141713D0AC74124544114AE4791331F5141F6285CDF4124544114AE47F1341F5141B81E852B4224544185EB5188341F5141713D0A5742245441AE47E1DA331F51418FC2F53842245441C3F528AC321F514152B81E05422454410AD7A3B0311F51417B14AE1742245441C3F5280C311F51413D0AD763422454413D0AD743301F51413D0AD7F34224544185EB51682F1F51418FC2F5684324544185EB51782E1F5141CDCCCC8C4324544114AE47912D1F5141F6285CFF43245441666666F6351F514114AE47814724544185EB5158371F5141D7A370DD44245441D7A3703D381F5141D7A3706D40245441295C8F82381F51418FC2F5583C2454418FC2F5E8351F5141B81E851B3A245441B81E850B361F51419A9999193424544148E17A54381F5141333333932F245441D7A3704D3A1F5141666666662524544152B81EC53F1F51411F85EBD127245441
+</a>
+
+<b>
+010600000001000000010300000001000000EC000000F38BA35E4A1F5141D3EE7E8336245441713D0A07511F51413333336336245441B81E852B541F51419A9999A936245441EC51B81E551F51417B14AEA7362454419A9999D9561F514148E17A14322454417B14AEA7561F51413D0AD7C3312454417B14AE57561F514114AE47413124544148E17A04561F514148E17AB43024544148E17AA4551F514148E17A5430245441F6285C3F551F5141AE47E1FA2F245441295C8FB2541F514114AE47812F24544133333363541F5141CDCCCC1C2F24544152B81E25541F5141B81E85BB2E24544185EB51F8531F514152B81E652E2454413D0AD7E3531F514185EB51182E2454413D0AD7E3531F51411F85EBC12D245441C3F528EC531F514148E17A542D245441A4703D1A541F5141B81E859B2C245441D7A3706D541F5141E17A148E2B245441A4703D7A541F51410AD7A3402B2454411F85EB71541F5141666666062B245441A4703D5A541F514148E17AE42A2454413D0AD723541F51411F85EBB12A24544114AE47D1531F5141A4703D8A2A245441F6285C4F531F5141A4703D3A2A24544185EB51D8521F5141AE47E1DA29245441EC51B87E521F51419A99996929245441EC51B82E521F5141C3F5280C292454417B14AEB7511F5141F6285CBF28245441A4703D4A511F5141D7A3708D28245441C3F528DC501F5141A4703D7A28245441CDCCCC5C501F5141CDCCCC5C282454410AD7A3E04F1F51413333332328245441A4703D5A4F1F5141000000C027245441666666E64E1F51419A99995927245441713D0A974E1F5141A4703DFA26245441333333634E1F5141B81E85DB26245441CDCCCC0C4E1F5141AE47E1CA26245441333333934D1F5141EC51B8AE26245441C3F5282C4D1F5141B81E857B2624544148E17AA44C1F514148E17A2426245441E17A143E4C1F5141A4703DCA25245441713D0AA74B1F514114AE47C124245441295C8F324B1F5141000000D0232454418FC2F5484A1F514185EB511822245441F6285CCF491F514166666656212454411F85EB71491F51411F85EBE1202454413D0AD703491F51419A99997920245441C3F528AC481F5141CDCCCC3C202454419A9999C9471F5141D7A370ED1F24544185EB5128471F51418FC2F5A81F245441AE47E1AA461F5141A4703D5A1F24544166666666461F5141333333231F2454410AD7A320461F51418FC2F5B81E245441C3F528DC451F51410AD7A3001E24544133333383451F5141C3F5280C1D245441295C8F02451F5141666666361C245441295C8F42441F5141EC51B86E1B24544166666676431F51419A9999791A245441EC51B8CE421F51411F85EBD119245441D7A3704D421F51417B14AE27192454411F85EB31421F5141D7A370DD182454410AD7A300421F5141EC51B85E1824544114AE4711421F51419A9999691724544114AE4731421F514185EB5168162454417B14AE17421F51410AD7A3201524544166666696411F51415C8FC2551324544185EB5138411F514185EB5118122454415C8FC2C5401F5141D7A3703D112454417B14AE77401F51415C8FC2E5102454418FC2F5F83F1F5141E17A148E102454419A9999793F1F5141B81E855B10245441E17A14EE3E1F51419A99991910245441E17A145E3E1F5141CDCCCC9C0F2454410AD7A3203E1F5141EC51B80E0F245441F6285C0F3E1F5141AE47E17A0E245441F6285CFF3D1F5141AE47E10A0E24544152B81ED53D1F51417B14AE970D245441B81E854B3D1F5141E17A14BE0C2454419A9999C93C1F5141CDCCCCDC0B245441713D0A273C1F5141A4703DEA0A245441CDCCCCDC3B1F5141713D0A570A245441A4703DCA3B1F51417B14AEF709245441D7A370CD3B1F51411F85EB9109245441D7A370DD3B1F514114AE474109245441EC51B81E3C1F5141F6285CBF0824544148E17A643C1F5141E17A142E08245441C3F5288C3C1F5141000000A007245441000000903C1F51410AD7A340072454419A9999893C1F5141EC51B8CE062454415C8FC2653C1F514185EB5158062454415C8FC2153C1F514114AE47F105245441CDCCCC5C3B1F514166666646052454417B14AEE73A1F514185EB51B8042454418FC2F5883A1F5141F6285C1F04245441666666563A1F51418FC2F58803245441F6285C2F3A1F514152B81EB502245441AE47E1EA331F51418FC2F5C807245441C3F5288C331F5141A4703D5A0824544152B81EE52F1F5141000000500D2454418FC2F5C82C1F5141AE47E1DA102454419A9999B9281F5141666666F6142454411F85EB21271F51417B14AE9716245441D7A370DD221F51417B14AE971924544148E17AC41F1F51415C8FC2C51B2454411F85EBE11B1F514185EB51681E245441D7A3700D1A1F51418FC2F5581F24544133333343171F5141D7A370BD212454417B14AEB7151F51413333331323245441EC51B8DE131F514148E17AA42424544185EB51E8101F51411F85EBE126245441E17A14AE131F5141D7A3703D2A245441F6285CCF151F514114AE47112D245441CDCCCC7C171F5141B81E854B2F245441AE47E1BA171F5141AE47E1AA2F24544152B81EB5181F514185EB512831245441B81E850B1A1F514114AE47613324544148E17A941B1F514152B81E65362454419A9999C9201F51418FC2F5C83F2454419A999989211F514133333323412454417B14AE77241F5141666666764124544100000040251F514152B81E9541245441E17A14BE261F51413D0AD72342245441713D0A57281F5141AE47E1FA42245441F6285C3F291F5141F6285C5F43245441EC51B85E2A1F5141666666B643245441D7A3701D2B1F51419A9999C943245441EC51B89E2B1F5141CDCCCCCC4324544185EB51A82C1F5141D7A3709D43245441EC51B89E2D1F51411F85EB3143245441B81E852B2E1F514114AE47114324544148E17A642F1F51415C8FC2F5422454411F85EB01301F51419A9999C942245441666666A6301F51411F85EB41422454417B14AE57311F5141D7A370ED41245441F6285C4F321F5141713D0AC74124544114AE4791331F5141F6285CDF4124544114AE47F1341F5141B81E852B4224544185EB5188341F5141713D0A5742245441AE47E1DA331F51418FC2F53842245441C3F528AC321F514152B81E05422454410AD7A3B0311F51417B14AE1742245441C3F5280C311F51413D0AD763422454413D0AD743301F51413D0AD7F34224544185EB51682F1F51418FC2F5684324544185EB51782E1F5141CDCCCC8C4324544114AE47912D1F5141F6285CFF43245441666666F6351F514114AE47814724544185EB5158371F5141D7A370DD44245441D7A3703D381F5141D7A3706D40245441295C8F82381F51418FC2F5583C2454418FC2F5E8351F5141B81E851B3A245441B81E850B361F51419A9999193424544148E17A54381F5141333333932F245441D7A3704D3A1F5141666666662524544152B81EC53F1F51411F85EBD12724544114AE4771401F5141713D0A772A245441CDCCCC7C401F514152B81E7531245441D7A3706D3E1F5141E17A14CE352454418FC2F5A8471F51410AD7A39036245441A947EDE1491F514135E3DB8536245441E2B6D0034A1F5141F4119B6A372454411F85EBF1491F5141AE47E16A372454410AD7A3A0461F51411F85EB81372454411F85EBD1421F5141CDCCCC3C37245441333333933D1F514114AE47E136245441B81E858B3C1F51415C8FC23539245441D7A3705D3C1F51417B14AE173B245441666666E6391F5141A4703D3A3B24544114AE4751391F514114AE47114024544166666676381F5141F6285C1F44245441CDCCCC9C371F51413D0AD703472454410AD7A390361F5141EC51B84E492454418FC2F508361F51417B14AE974A245441F6285CAF331F5141E17A144E50245441A4703D6A301F5141F6285CDF572454410AD7A3302D1F514114AE47215F24544152B81E452F1F5141C3F5285C612454417B14AE37331F514114AE477164245441F6285C1F331F5141713D0AB7662454419A9999D9321F5141000000506D24544185EB51F8311F5141713D0AC76F2454418FC2F5F82F1F51416666666675245441A4703D2A2F1F5141A4703D7A782454413D0AD7D32F1F5141CDCCCC3C86245441A4703DCA3F1F5141C3F5289C8C2454418FC2F5383A1F5141E17A147E9C24544114AE47E1451F514185EB5188A12454419A999939471F51419A9999B99E245441AE47E12A4A1F5141F6285C3F9924544185EB51084C1F5141A4703DDA9424544114AE47514D1F5141713D0A4791245441C3F5288C4F1F5141713D0AB78A2454413D0AD733511F5141AE47E17A84245441713D0A974F1F5141A4703D6A802454419A9999894D1F51413D0AD7337B245441713D0A474F1F514148E17A44712454418FC2F508531F5141B81E851B67245441C3F528BC531F5141666666F66424544152B81E15541F5141666666E66324544185EB5138551F5141B81E850B61245441CDCCCCAC551F5141EC51B8AE5A2454411F85EBA1561F5141713D0AD756245441E17A145E571F5141713D0AD75324544166666676581F51410AD7A3B04D245441D5FC67B4521F5141580297434324544165D595AF771F514126E48D995724544175F1D9C9901F514187955D7065245441308F5D16A21F5141885CE7786F2454415C8FC2B5A01F5141AE47E1BA7124544148E17A34A11F51418FC2F58872245441AE47E12AA31F514133333393782454410AD7A370A51F51419A9999997F24544185EB5128A81F5141713D0AE784245441D7A370FDAD1F51417B14AE778224544185EB5168B41F5141A4703DAA7D2454414AAA1BD4BB1F5141C2BCAA597724544162E4BF92E01F514127B87F4C8A245441AE47E1AAD71F51419A99999993245441C3F5289CD31F5141713D0A77A024544100000060032051418FC2F55896245441295C8F22EA1F514100000050802454418B6986E7E01F5141878EF5F38924544158AA1BD4BB1F51418EB48DE0762454416DBAE2E1A91F51416F50894169245441767FEDDAA41F51417318746F6C245441A6E3BA3DA21F51417F5E55206F245441107023D68D1F5141E82B47AE632454419FCFF47F881F514157154BC260245441A06CCE70521F5141DB179CC742245441A4703D4A511F51411F85EBB140245441333333B3541F51411F85EBC137245441713D0AE7511F514114AE47713724544114AE47D14F1F51413D0AD75337245441004E2F914A1F5141D16C706837245441F38BA35E4A1F5141D3EE7E8336245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981592 - 53562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000009000000579988FE31B1504190EA58E69B295541042ACA0145B150412488DCE69E295541DC48F8AE53B15041331CBB886B295541AABCB15748B15041D4AFF50767295541F43466AC44B15041023D8F886A295541E89194D641B1504165FBE6886C295541FCD88AAB3FB1504196DA12896D295541256777553BB15041E9A306346F295541579988FE31B1504190EA58E69B295541010300000001000000040000003814199B45B150417C28B7C99D295541151F2E5745B150419C8D2ABC9E295541F140539E45B1504147B306CA9D2955413814199B45B150417C28B7C99D295541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000F7D88AAB3FB1504198DA12896D295541C289E1033FB15041238ECCF16D2955412ECB169D35B150414743A5789C295541052ACA0145B150412188DCE69E295541DC48F8AE53B15041361CBB886B29554131B4D31E48B15041B4FD3D3E672955414EBCDDD046B15041B2DE057D682955416BF3EE6745B15041BBB58CD569295541333333E344B1504185EB51686A295541E89194D641B1504162FBE6886C295541F7D88AAB3FB1504198DA12896D295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981592 - 246306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000009000000579988FE31B1504190EA58E69B295541042ACA0145B150412488DCE69E295541DC48F8AE53B15041331CBB886B295541AABCB15748B15041D4AFF50767295541F43466AC44B15041023D8F886A295541E89194D641B1504165FBE6886C295541FCD88AAB3FB1504196DA12896D295541256777553BB15041E9A306346F295541579988FE31B1504190EA58E69B295541010300000001000000040000003814199B45B150417C28B7C99D295541151F2E5745B150419C8D2ABC9E295541F140539E45B1504147B306CA9D2955413814199B45B150417C28B7C99D295541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000014D6A12B42B150411B93AF226C29554110E413EB41B15041B07DD4466C2955410000002041B1504148E17AC46C295541F7D88AAB3FB1504198DA12896D29554134F38C5B3FB1504128C67DC16D2955410AC0E80A36B15041DC7470BA9C29554152B81E3545B15041B81E853B9F2955417CA0A53650B1504167FB67E2772955414B8AD1D353B15041987F137E6B2955412351B42B49B150412BB219A46629554187EF11C947B1504137B7FE336729554140567A0545B15041ADE04F5B6A29554114D6A12B42B150411B93AF226C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981592 - 389461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000009000000579988FE31B1504190EA58E69B295541042ACA0145B150412488DCE69E295541DC48F8AE53B15041331CBB886B295541AABCB15748B15041D4AFF50767295541F43466AC44B15041023D8F886A295541E89194D641B1504165FBE6886C295541FCD88AAB3FB1504196DA12896D295541256777553BB15041E9A306346F295541579988FE31B1504190EA58E69B295541010300000001000000040000003814199B45B150417C28B7C99D295541151F2E5745B150419C8D2ABC9E295541F140539E45B1504147B306CA9D2955413814199B45B150417C28B7C99D295541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000014D6A12B42B150411B93AF226C29554110E413EB41B15041B07DD4466C2955410000002041B1504148E17AC46C295541F7D88AAB3FB1504198DA12896D29554134F38C5B3FB1504128C67DC16D2955410AC0E80A36B15041DC7470BA9C29554152B81E3545B15041B81E853B9F2955417CA0A53650B1504167FB67E2772955414B8AD1D353B15041987F137E6B2955412351B42B49B150412BB219A46629554187EF11C947B1504137B7FE336729554140567A0545B15041ADE04F5B6A29554114D6A12B42B150411B93AF226C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981071 - 53162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000004B5A5091614451417E401684DC565441C28D2D9261445141640FA18ADC565441CAA4C6F061445141213EAE43DC56544179D29D61624451419917FB6BDC5654415B8A16A4624451411EDBF673DC5654411066A873634451419917FB6BDC565441722E8B1F64445141FF7D806ADC565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D05654414861E64425445141C1E1E6E5D156544111D334461244514135027BFAD5565441C560F89B1444514161BE219BDD5654414B1E72F613445141B065835DEB5654418569AFA6154451414C1FD59DED565441BE3E060B1844514187E0F899EE565441EBFDC8B719445141AF97644FF5565441CBE488E618445141990AD65D015754412B2301E717445141006C67CD065754410F93783E16445141D12B37C40A57544153BCBE121644514153918AD20E5754418569AFA615445141323466DF145754411AE767AE1344514142FA18CC19575441AE78531E1344514153C0CBB81E575441F3597DA63044514149A61ED719575441507D140A3D445141ADEA5B3D17575441900047053D4451414397879116575441B80761CC3C445141A91244A0165754417B8F2DC03C44514159AE4EE90C5754411ABD1CEC3B4451418E92781EF2565441EA8512A43B445141D97427D5E8565441FDE6763C3C44514121BF6967E75654417F3929443C44514111F9F054E7565441E90F2C583C44514164F2DFDCE656544155A5AB9A3C445141CA8F5185E6565441F399450C3D44514165DEAC74E5565441622F338E3E445141C33701BEE2565441F13792283F44514123F522A8E1565441A00517D1424451417E9D844BDD5654411CC4F701494451419F84C2F2D7565441C01B965E4D44514103558A66D6565441CDD9B17B594451416CE9325AD756544164185CED604451416F4DB8AAD756544176340E9061445141AB332984DC5654414B5A5091614451417E401684DC565441
+</a>
+
+<b>
+010600000002000000010300000001000000400000003E5BF6BA20445141ADD780DFD25654415DFD53781944514153F5C36ED4565441D9C82B70194451411C4420B9D5565441B3E6A767194451417737C305D6565441B9A84E3019445141D72B4F51D85654414AAD8F3F1944514156D04EAAD85654411C385C6E19445141D429143DDE56544193D1C16419445141CFEBF47DE1565441A45A0E6E19445141FB0D86A7E2565441061009281A44514123234988EE565441A2E1B97B1A44514129590C5DF3565441CD0F09C91A445141A6033198FA565441AF5E7BD21A445141DBFD4EDEFA5654415762D3EC1A4451415ED597F0005754419260E9FD1A445141EA55533802575441CB034BA51B4451417BED77CC1557544158DFA7C63C445141C3D6AE111257544194A13BC63C445141A2DB7FBB11575441878604C63C445141A1969F8F1157544189C19AC53C445141E76F683B11575441473E85C43C445141DE9C725E10575441A5409BFB3B44514128709913F45654411ABD1CEC3B4451418E92781EF2565441EA8512A43B445141D97427D5E8565441FDE6763C3C44514121BF6967E75654417F3929443C44514111F9F054E7565441E90F2C583C44514164F2DFDCE656544155A5AB9A3C445141CA8F5185E6565441F0D00ABD3C445141908DD332E6565441F399450C3D44514165DEAC74E5565441DF66DB733D445141EBD338BAE4565441D39FB4023E445141F80AF393E35654418D9D67113F4451410B0BD6D1E1565441F13792283F44514123F522A8E1565441A00517D1424451417E9D844BDD5654411CC4F701494451419F84C2F2D7565441C01B965E4D44514103558A66D6565441CDD9B17B594451416CE9325AD756544164185CED604451416F4DB8AAD7565441226AB58E614451413E4CE279DC56544166A433E5614451416B7E5C4CDC565441CAA4C6F061445141213EAE43DC565441B8D9B4F361445141762CBA44DC565441F2F0E4FE61445141ECC1D63EDC565441B40E453862445141ADD1365DDC56544179D29D61624451419917FB6BDC565441AA140691624451415AB2AC71DC5654419563E91E644451417E132657DC565441A665C4EC6344514188149F57D6565441F7F1D68F634451414FAD1F69CC565441A48567C85F4451414FAD1F69CC5654413EBF51774B445141C6D73FA6CC5654410D742B61434451414E37391DCD5654410442828643445141D1B58CEECC56544103B6054741445141B17AA30ACD56544194F3AB3638445141D1810D8CCE565441AA74220735445141B9B98015CF5654411F8FC0BC32445141197B925FCF5654413945BC3628445141E03B54E4D05654410007F5A1254451416B391CBAD15654414861E64425445141C1E1E6E5D1565441285B05C7244451415E4BF100D25654414DA83D82244451411DE73117D25654413E5BF6BA20445141ADD780DFD2565441010300000001000000040000000442828643445141D1B58CEECC5654418484E5A443445141BDA290C8CC565441034DA96B4344514137BB8BC9CC5654410442828643445141D1B58CEECC565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981071 - 57852
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000004B5A5091614451417E401684DC565441C28D2D9261445141640FA18ADC565441CAA4C6F061445141213EAE43DC56544179D29D61624451419917FB6BDC5654415B8A16A4624451411EDBF673DC5654411066A873634451419917FB6BDC565441722E8B1F64445141FF7D806ADC565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D05654414861E64425445141C1E1E6E5D156544111D334461244514135027BFAD5565441C560F89B1444514161BE219BDD5654414B1E72F613445141B065835DEB5654418569AFA6154451414C1FD59DED565441BE3E060B1844514187E0F899EE565441EBFDC8B719445141AF97644FF5565441CBE488E618445141990AD65D015754412B2301E717445141006C67CD065754410F93783E16445141D12B37C40A57544153BCBE121644514153918AD20E5754418569AFA615445141323466DF145754411AE767AE1344514142FA18CC19575441AE78531E1344514153C0CBB81E575441F3597DA63044514149A61ED719575441507D140A3D445141ADEA5B3D17575441900047053D4451414397879116575441B80761CC3C445141A91244A0165754417B8F2DC03C44514159AE4EE90C5754411ABD1CEC3B4451418E92781EF2565441EA8512A43B445141D97427D5E8565441FDE6763C3C44514121BF6967E75654417F3929443C44514111F9F054E7565441E90F2C583C44514164F2DFDCE656544155A5AB9A3C445141CA8F5185E6565441F399450C3D44514165DEAC74E5565441622F338E3E445141C33701BEE2565441F13792283F44514123F522A8E1565441A00517D1424451417E9D844BDD5654411CC4F701494451419F84C2F2D7565441C01B965E4D44514103558A66D6565441CDD9B17B594451416CE9325AD756544164185CED604451416F4DB8AAD756544176340E9061445141AB332984DC5654414B5A5091614451417E401684DC565441
+</a>
+
+<b>
+0106000000010000000103000000010000004B000000D742A5C63C4451413D8F9A0F125754412D766C6A36445141410168C7125754412D327FC0344451411149E9F4125754410D24B57532445141D557703A13575441F19EC983304451414943C27213575441950F074E2B4451419BD284081457544128FB58A61B445141F438EBCE155754416B6D703F1B4451416221599B095754415CA8E0301B44514135998241085754414BE350221B44514153DFB4B406575441F82C1D101B4451416632F666045754410A9FC9031B4451411FBED6C0025754412C5931051B445141389F599102575441BE8C73F81A445141521EB33202575441AC6BDEF71A44514173B85C1802575441997A9CF31A4451412BB6FBCF0157544121D410DA1A44514148126049FE56544134C552DE1A44514152EB5F30FD56544121D410DA1A445141D52C92F9FB565441924B01B81A445141CC595B37F856544159783BAB1A4451418B19A1B7F75654417E9009791A445141F60EEEA2F3565441DD9737771A44514147BA5B39F35654417A16585B1A4451411ED968ABF15654418861B5691944514165C74036E2565441B853426B19445141531E0F27E0565441BA53426B194451415A660BE0DD5654415491984719445141544A1582D95654412EE44A3E194451414D07E486D85654417A75E936194451414902E789D856544139298A3619445141B452AD61D8565441CCFF303B194451410514F84BD8565441B49926FF1A445141DA9ACF1AD45654418753D8C615445141E685DE39D556544180600068134451415C6C3ABCD55654413036BF4612445141F0475DFAD556544104114DF91344514164FEC187DB565441C560F89B1444514161BE219BDD5654412390139614445141DB848D18DE56544116C1A827144451413BD13E46E7565441BD18362114445141940575CFE75654416729680414445141394C6B34EA56544117B24B0414445141D0302A37EA565441E1BB2A0414445141617D8639EA5654414B1E72F613445141B065835DEB565441639ABA4C14445141CEB58ED0EB565441AA00A9AB15445141B58AE19FED565441489C36FD174451410B074994EE565441BE3E060B1844514187E0F899EE5654419095813E194451410AC79A69F3565441311A26AF194451419E0C661BF5565441578FE7AD194451413DD6D027F5565441EBFDC8B719445141AF97644FF5565441CBE488E618445141990AD65D015754412B2301E717445141006C67CD065754410F93783E16445141D12B37C40A575441F0CD542416445141BF6FEF300D57544153BCBE121644514153918AD20E575441110525AD15445141B17ED08214575441A5ABF6A615445141E68AFEE31457544181D30D72154451413D2BFA62155754411AE767AE1344514142FA18CC195754418AF32720134451410D507EB81E575441F3597DA63044514149A61ED719575441ADEDC3AA3C4451418EEE5D51175754412F110B073D44514132CF20371757544100254E093D445141F392A32117575441900047053D4451414397879116575441B80761CC3C445141A91244A016575441D6654BCC3C445141F5B70A8F16575441B551F3C53C445141F92BBF8F16575441D2A6E5C93C4451419EF15DA6145754417F90B8C73C445141580BCEEA12575441576FCBC63C4451414596FF2D12575441D742A5C63C4451413D8F9A0F12575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981071 - 248015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000310000004B5A5091614451417E401684DC565441C28D2D9261445141640FA18ADC565441CAA4C6F061445141213EAE43DC56544179D29D61624451419917FB6BDC5654415B8A16A4624451411EDBF673DC5654411066A873634451419917FB6BDC565441722E8B1F64445141FF7D806ADC565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D05654414861E64425445141C1E1E6E5D156544111D334461244514135027BFAD5565441C560F89B1444514161BE219BDD5654414B1E72F613445141B065835DEB5654418569AFA6154451414C1FD59DED565441BE3E060B1844514187E0F899EE565441EBFDC8B719445141AF97644FF5565441CBE488E618445141990AD65D015754412B2301E717445141006C67CD065754410F93783E16445141D12B37C40A57544153BCBE121644514153918AD20E5754418569AFA615445141323466DF145754411AE767AE1344514142FA18CC19575441AE78531E1344514153C0CBB81E575441F3597DA63044514149A61ED719575441507D140A3D445141ADEA5B3D17575441900047053D4451414397879116575441B80761CC3C445141A91244A0165754417B8F2DC03C44514159AE4EE90C5754411ABD1CEC3B4451418E92781EF2565441EA8512A43B445141D97427D5E8565441FDE6763C3C44514121BF6967E75654417F3929443C44514111F9F054E7565441E90F2C583C44514164F2DFDCE656544155A5AB9A3C445141CA8F5185E6565441F399450C3D44514165DEAC74E5565441622F338E3E445141C33701BEE2565441F13792283F44514123F522A8E1565441A00517D1424451417E9D844BDD5654411CC4F701494451419F84C2F2D7565441C01B965E4D44514103558A66D6565441CDD9B17B594451416CE9325AD756544164185CED604451416F4DB8AAD756544176340E9061445141AB332984DC5654414B5A5091614451417E401684DC565441
+</a>
+
+<b>
+0106000000010000000103000000010000003E0000001AE767AE1344514142FA18CC195754416A47A0201344514166AFABA41E5754418214B98013445141C8F887A81E5754414670ED551C445141FB79C2321D5754419A756D8730445141D11341DC195754419483BE2B31445141AFBAE9A619575441BA37B9453144514117C0B1B519575441507D140A3D445141ADEA5B3D17575441B328A8083D4451414BFB700A17575441900047053D4451414397879116575441B94F33ED3C44514146F1C39716575441B80761CC3C445141A91244A0165754410FD7F3C93C4451418BFDA9B1145754416E0D114A33445141B439AFF416575441F7D396F82B445141BC75C097185754419CDCC1D7274451417A649EB018575441C7F8DCE826445141709D57EC1857544143D5DAD215445141E39FA1621B5754415508D409184451415EAB502015575441BC9BDFCD184451418013E5950F5754412B23014B19445141848744000C5754412ED74F371B445141637D858C0757544187299D681B445141490E7BB203575441211C79461C4451419A87E1D2F05654414DC51F5F1C445141BC39A057F0565441F579753516445141B50432BCE85654419C27280416445141D7100367D75654414E72B04027445141BAE6219CD4565441AF000F152944514120F445BED3565441B525C23C374451410EC14C87D1565441EC72E1CA42445141AE32EEB2CF565441DC9E626344445141FD9A72B7CF565441865E1AA149445141332EE2FCCF565441F9F62E90524451418313513ACF565441BC9DF31F6144514140E9B8EDCE565441C694DBB361445141DAD4F1C3D55654415459922662445141C046CCB1DA565441A6F7E44E62445141C046CCB1DA565441FC6E5B6462445141054C81B8DA565441ECAFCB7562445141C046CCB1DA5654413E961B1863445141DBE9DEBDDA56544187932A24644451419E4EEAC6DA565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D05654414861E64425445141C1E1E6E5D156544111D334461244514135027BFAD5565441C560F89B1444514161BE219BDD5654414B1E72F613445141B065835DEB5654418569AFA6154451414C1FD59DED565441BE3E060B1844514187E0F899EE565441EBFDC8B719445141AF97644FF5565441CBE488E618445141990AD65D015754412B2301E717445141006C67CD065754410F93783E16445141D12B37C40A57544153BCBE121644514153918AD20E5754418569AFA615445141323466DF145754411AE767AE1344514142FA18CC19575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334707 - 245921
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000003200000052B81EC592115141F6285CCF0A8E54415C8FC2458B115141713D0A97FD8D5441EC51B84E841151415C8FC245F18D5441000000308211514133333383ED8D5441AE47E16A8111514152B81E25EC8D544185EB51E87F1151417B14AE77E98D54413D0AD7237E11514148E17A54E68D5441F6285C1F7D1151418FC2F5C8E68D5441EC51B83E7C115141295C8FD2E48D544148E17A247A115141666666E6E08D5441A4703D1A78115141AE47E15ADD8D54418FC2F5F87411514148E17AF4D78D5441C3F528DC75115141713D0A47D78D544114AE47416B1151417B14AE87C48D54413333335368115141B81E85EBBF8D5441A4703D4A5F115141D7A3706DB58D5441AE47E17A5A115141713D0AF7B08D54417B14AE57571151413D0AD7F3AE8D54410AD7A3A055115141A4703DDAAD8D54418FC2F538521151415C8FC295B28D544133333313511151417B14AE67B48D544185EB5108501151419A9999C9B68D5441713D0A074F11514100000050B98D54418FC2F5784E115141CDCCCCFCBB8D544185EB51B84E115141B81E85DBBE8D54413D0AD7F350115141713D0A17C28D54411F85EB11541151415C8FC235C68D5441CDCCCC9C591151410AD7A340CE8D5441666666C65D115141000000F0D68D5441A4703DFA5811514185EB5168DA8D5441295C8FB2591151413D0AD743DB8D5441EC51B8CE5A1151417B14AE27DD8D5441C3F5284C5C1151411F85EB41E08D5441713D0AA75D115141C3F5287CE38D5441000000306011514185EB5128E98D5441E17A14DE621151415C8FC255EF8D5441295C8FE26411514166666646F48D5441F6285C6F6611514185EB5168F88D54415C8FC275681151410AD7A310FF8D5441CDCCCCFC6C1151410AD7A3A00B8E544185EB51686F115141D7A3701D138E5441295C8F5272115141713D0A371C8E5441AE47E15A7511514133333353268E5441666666E6761151419A9999792B8E54410AD7A3F07E115141C3F5280C2A8E5441295C8F2280115141A4703D9A288E5441A4703DAA9011514114AE4741118E54411F85EB8192115141AE47E16A0E8E5441EC51B85E93115141F6285C7F0C8E544152B81EC592115141F6285CCF0A8E54410103000000010000000B00000066666656831151415C8FC255298E5441C3F5280C921151418FC2F588268E5441F6285C9F9A11514148E17A44258E5441AE47E1BA98115141666666A61D8E54413333332397115141B81E85FB158E544133333333941151415C8FC2C50C8E54413D0AD773931151410AD7A3900E8E54410AD7A3D0901151418FC2F598128E5441EC51B8EE801151410AD7A300298E54411F85EBA180115141F6285CBF298E544166666656831151415C8FC255298E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000075695A5B88115141B64278871E8E54412EFBE2FD8511514101A395DD218E5441E8A89CED801151414C436403298E5441B16D6DF0801151415C818604298E544142CAAEA6801151411A3AA2BE298E544166666656831151415C8FC255298E5441D23D0592901151415507F0D0268E5441499C640C911151419DF7A4B9268E5441C3F5280C921151418FC2F588268E5441F6285C9F9A11514148E17A44258E5441EEF208BD99115141AED07FB5218E5441AE47E1BA98115141666666A61D8E5441AD555D50971151412DFCF9D4168E54414BC10C1797115141E6E16CD5158E54414D3B3EA796115141FD22E076148E54410D5ECDCE95115141DFA943D0118E5441793A2A8095115141371EB6D9108E54412B38113394115141423F31C80C8E54417C134CE893115141FA6060790D8E54413D0AD773931151410AD7A3900E8E54410AD7A3D0901151418FC2F598128E54416DF63BF688115141A9BEFBAC1D8E544175695A5B88115141B64278871E8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334707 - 368687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000003200000052B81EC592115141F6285CCF0A8E54415C8FC2458B115141713D0A97FD8D5441EC51B84E841151415C8FC245F18D5441000000308211514133333383ED8D5441AE47E16A8111514152B81E25EC8D544185EB51E87F1151417B14AE77E98D54413D0AD7237E11514148E17A54E68D5441F6285C1F7D1151418FC2F5C8E68D5441EC51B83E7C115141295C8FD2E48D544148E17A247A115141666666E6E08D5441A4703D1A78115141AE47E15ADD8D54418FC2F5F87411514148E17AF4D78D5441C3F528DC75115141713D0A47D78D544114AE47416B1151417B14AE87C48D54413333335368115141B81E85EBBF8D5441A4703D4A5F115141D7A3706DB58D5441AE47E17A5A115141713D0AF7B08D54417B14AE57571151413D0AD7F3AE8D54410AD7A3A055115141A4703DDAAD8D54418FC2F538521151415C8FC295B28D544133333313511151417B14AE67B48D544185EB5108501151419A9999C9B68D5441713D0A074F11514100000050B98D54418FC2F5784E115141CDCCCCFCBB8D544185EB51B84E115141B81E85DBBE8D54413D0AD7F350115141713D0A17C28D54411F85EB11541151415C8FC235C68D5441CDCCCC9C591151410AD7A340CE8D5441666666C65D115141000000F0D68D5441A4703DFA5811514185EB5168DA8D5441295C8FB2591151413D0AD743DB8D5441EC51B8CE5A1151417B14AE27DD8D5441C3F5284C5C1151411F85EB41E08D5441713D0AA75D115141C3F5287CE38D5441000000306011514185EB5128E98D5441E17A14DE621151415C8FC255EF8D5441295C8FE26411514166666646F48D5441F6285C6F6611514185EB5168F88D54415C8FC275681151410AD7A310FF8D5441CDCCCCFC6C1151410AD7A3A00B8E544185EB51686F115141D7A3701D138E5441295C8F5272115141713D0A371C8E5441AE47E15A7511514133333353268E5441666666E6761151419A9999792B8E54410AD7A3F07E115141C3F5280C2A8E5441295C8F2280115141A4703D9A288E5441A4703DAA9011514114AE4741118E54411F85EB8192115141AE47E16A0E8E5441EC51B85E93115141F6285C7F0C8E544152B81EC592115141F6285CCF0A8E54410103000000010000000B00000066666656831151415C8FC255298E5441C3F5280C921151418FC2F588268E5441F6285C9F9A11514148E17A44258E5441AE47E1BA98115141666666A61D8E54413333332397115141B81E85FB158E544133333333941151415C8FC2C50C8E54413D0AD773931151410AD7A3900E8E54410AD7A3D0901151418FC2F598128E5441EC51B8EE801151410AD7A300298E54411F85EBA180115141F6285CBF298E544166666656831151415C8FC255298E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000075695A5B88115141B64278871E8E54412EFBE2FD8511514101A395DD218E5441E8A89CED801151414C436403298E5441B16D6DF0801151415C818604298E544142CAAEA6801151411A3AA2BE298E544166666656831151415C8FC255298E5441D23D0592901151415507F0D0268E5441499C640C911151419DF7A4B9268E5441C3F5280C921151418FC2F588268E5441F6285C9F9A11514148E17A44258E5441EEF208BD99115141AED07FB5218E5441AE47E1BA98115141666666A61D8E5441AD555D50971151412DFCF9D4168E54414BC10C1797115141E6E16CD5158E54414D3B3EA796115141FD22E076148E54410D5ECDCE95115141DFA943D0118E5441793A2A8095115141371EB6D9108E54412B38113394115141423F31C80C8E54417C134CE893115141FA6060790D8E54413D0AD773931151410AD7A3900E8E54410AD7A3D0901151418FC2F598128E54416DF63BF688115141A9BEFBAC1D8E544175695A5B88115141B64278871E8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981501 - 3186204
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004A00000022FAB55EBD9B5041EFB51AEC5C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D771354413D0AD7A3899B5041295C8F6278135441B81E858B899B5041D7A370CD78135441CDCCCCCC8A9B5041666666C6791354419A9999E98B9B50411F85EBF17A1354418FC2F5888C9B504152B81EF57B135441A4703DCA8C9B5041295C8FE27C1354418FC2F5E88C9B50417B14AE177E135441CDCCCCCC8C9B50413D0AD7037F1354417B14AE978C9B5041E17A145E7F13544114AE47918B9B5041295C8FE27F1354417B14AEE78A9B5041AE47E15A80135441F6285C2F8A9B504152B81E758413544133333363939B50418FC2F5288A13544185EB51E8989B50415C8FC2C58D135441D7A3705DB09B50413D0AD7139F135441D7A3706DB29B5041C3F528BCA013544114AE4731BC9B504114AE47F1A91354415C8FC245C39B5041000000F0B01354418FC2F558C99B5041AE47E1AAB6135441E17A14DECF9B5041D7A3707DBD13544152B81E65D39B50418FC2F548C113544185EB5118D89B5041E17A141EC6135441E17A147EDD9B504152B81EE5CB1354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441B81E852BED9B504114AE4741C5135441713D0AD7ED9B5041713D0A17C1135441D7A3709DF19B50410AD7A3E0BB1354419A999989ED9B50419A999989B8135441EC51B86EEA9B50415C8FC255B71354419A9999B9E79B504100000000B71354415C8FC215E59B50411F85EB21B6135441A4703DEAE29B504152B81EE5B4135441CC518113E19B504126212019B2135441CDCCCC3CDE9B50410AD7A340B0135441AE47E1AADC9B50413D0AD713AD135441A7E91013DA9B50415A8E8278A4135441F3FDD666D09B5041F8E5C68F9D135441F8D13E51BF9B50419673905C8E135441F219BDB4C09B5041FA7442065E135441ACF3FDB2C09B50410C7431DA591354417872B44EBD9B504114D8F559401354417410CF1FAB9B504158A4CFD53C1354418E71AC6DA99B5041FAB78BD43B1354414F4B031CA89B504128AFFC0039135441F58F9597A49B50414210DA4E37135441AB39E574A29B504176067CCF371354411EBCBC54A29B504134DD657A40135441FAF452F9A59B504199C8DACF4413544173765B2DA99B50414B0BCFF347135441F1C2ADD0AB9B50410CE525A2461354416F0F0074AE9B5041470A00484B1354411C53C343AE9B50416CCFCB4B4E135441D9C5BE38B29B5041496C50A656135441A6CD7E60B89B5041EC19809757135441487BAE51B99B50410114022C5B135441447ADFA5BC9B5041FCAE44CA5913544122FAB55EBD9B5041EFB51AEC5C135441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441E59B024BDE9B504123D85D51B0135441F9AD8717DE9B504127E644F5AF13544158E3B8A3DC9B5041C7ACD2F4AC1354411BC93F8FDB9B5041619F0724A8135441DA7A8466DB9B5041647F0B7AA31354417ADFB801D49B50412A2AD1BA9F1354417A873B4DD39B504199CDF2E39E1354415F9BCD63D09B504117612F9D9B135441A9FB552ACB9B5041080BC2309E135441F31E55DAC69B5041E4BB6962A0135441FDB21D9CC29B504160DF9127A31354416AAF3553BE9B50412902B12CA713544136CC654EBC9B5041BD0F470EAA1354416E8EF9B5C29B504192E9F061B0135441B7BF1612C89B504107699276B513544178C238C4CD9B50417A9DA04ABB135441BA4959FDD09B5041C93F7EB2BE135441D486F4A6D59B5041C3D0159BC3135441C49E9DE4D89B5041EE3BC2F8C61354413A9556ACDA9B50418CC190E0C81354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981501 - 3591106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004A00000022FAB55EBD9B5041EFB51AEC5C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D771354413D0AD7A3899B5041295C8F6278135441B81E858B899B5041D7A370CD78135441CDCCCCCC8A9B5041666666C6791354419A9999E98B9B50411F85EBF17A1354418FC2F5888C9B504152B81EF57B135441A4703DCA8C9B5041295C8FE27C1354418FC2F5E88C9B50417B14AE177E135441CDCCCCCC8C9B50413D0AD7037F1354417B14AE978C9B5041E17A145E7F13544114AE47918B9B5041295C8FE27F1354417B14AEE78A9B5041AE47E15A80135441F6285C2F8A9B504152B81E758413544133333363939B50418FC2F5288A13544185EB51E8989B50415C8FC2C58D135441D7A3705DB09B50413D0AD7139F135441D7A3706DB29B5041C3F528BCA013544114AE4731BC9B504114AE47F1A91354415C8FC245C39B5041000000F0B01354418FC2F558C99B5041AE47E1AAB6135441E17A14DECF9B5041D7A3707DBD13544152B81E65D39B50418FC2F548C113544185EB5118D89B5041E17A141EC6135441E17A147EDD9B504152B81EE5CB1354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441B81E852BED9B504114AE4741C5135441713D0AD7ED9B5041713D0A17C1135441D7A3709DF19B50410AD7A3E0BB1354419A999989ED9B50419A999989B8135441EC51B86EEA9B50415C8FC255B71354419A9999B9E79B504100000000B71354415C8FC215E59B50411F85EB21B6135441A4703DEAE29B504152B81EE5B4135441CC518113E19B504126212019B2135441CDCCCC3CDE9B50410AD7A340B0135441AE47E1AADC9B50413D0AD713AD135441A7E91013DA9B50415A8E8278A4135441F3FDD666D09B5041F8E5C68F9D135441F8D13E51BF9B50419673905C8E135441F219BDB4C09B5041FA7442065E135441ACF3FDB2C09B50410C7431DA591354417872B44EBD9B504114D8F559401354417410CF1FAB9B504158A4CFD53C1354418E71AC6DA99B5041FAB78BD43B1354414F4B031CA89B504128AFFC0039135441F58F9597A49B50414210DA4E37135441AB39E574A29B504176067CCF371354411EBCBC54A29B504134DD657A40135441FAF452F9A59B504199C8DACF4413544173765B2DA99B50414B0BCFF347135441F1C2ADD0AB9B50410CE525A2461354416F0F0074AE9B5041470A00484B1354411C53C343AE9B50416CCFCB4B4E135441D9C5BE38B29B5041496C50A656135441A6CD7E60B89B5041EC19809757135441487BAE51B99B50410114022C5B135441447ADFA5BC9B5041FCAE44CA5913544122FAB55EBD9B5041EFB51AEC5C135441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441E59B024BDE9B504123D85D51B0135441F9AD8717DE9B504127E644F5AF13544158E3B8A3DC9B5041C7ACD2F4AC1354411BC93F8FDB9B5041619F0724A8135441DA7A8466DB9B5041647F0B7AA31354417ADFB801D49B50412A2AD1BA9F1354417A873B4DD39B504199CDF2E39E1354415F9BCD63D09B504117612F9D9B135441A9FB552ACB9B5041080BC2309E135441F31E55DAC69B5041E4BB6962A0135441FDB21D9CC29B504160DF9127A31354416AAF3553BE9B50412902B12CA713544136CC654EBC9B5041BD0F470EAA1354416E8EF9B5C29B504192E9F061B0135441B7BF1612C89B504107699276B513544178C238C4CD9B50417A9DA04ABB135441BA4959FDD09B5041C93F7EB2BE135441D486F4A6D59B5041C3D0159BC3135441C49E9DE4D89B5041EE3BC2F8C61354413A9556ACDA9B50418CC190E0C81354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981501 - 302576
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004A00000022FAB55EBD9B5041EFB51AEC5C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D771354413D0AD7A3899B5041295C8F6278135441B81E858B899B5041D7A370CD78135441CDCCCCCC8A9B5041666666C6791354419A9999E98B9B50411F85EBF17A1354418FC2F5888C9B504152B81EF57B135441A4703DCA8C9B5041295C8FE27C1354418FC2F5E88C9B50417B14AE177E135441CDCCCCCC8C9B50413D0AD7037F1354417B14AE978C9B5041E17A145E7F13544114AE47918B9B5041295C8FE27F1354417B14AEE78A9B5041AE47E15A80135441F6285C2F8A9B504152B81E758413544133333363939B50418FC2F5288A13544185EB51E8989B50415C8FC2C58D135441D7A3705DB09B50413D0AD7139F135441D7A3706DB29B5041C3F528BCA013544114AE4731BC9B504114AE47F1A91354415C8FC245C39B5041000000F0B01354418FC2F558C99B5041AE47E1AAB6135441E17A14DECF9B5041D7A3707DBD13544152B81E65D39B50418FC2F548C113544185EB5118D89B5041E17A141EC6135441E17A147EDD9B504152B81EE5CB1354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441B81E852BED9B504114AE4741C5135441713D0AD7ED9B5041713D0A17C1135441D7A3709DF19B50410AD7A3E0BB1354419A999989ED9B50419A999989B8135441EC51B86EEA9B50415C8FC255B71354419A9999B9E79B504100000000B71354415C8FC215E59B50411F85EB21B6135441A4703DEAE29B504152B81EE5B4135441CC518113E19B504126212019B2135441CDCCCC3CDE9B50410AD7A340B0135441AE47E1AADC9B50413D0AD713AD135441A7E91013DA9B50415A8E8278A4135441F3FDD666D09B5041F8E5C68F9D135441F8D13E51BF9B50419673905C8E135441F219BDB4C09B5041FA7442065E135441ACF3FDB2C09B50410C7431DA591354417872B44EBD9B504114D8F559401354417410CF1FAB9B504158A4CFD53C1354418E71AC6DA99B5041FAB78BD43B1354414F4B031CA89B504128AFFC0039135441F58F9597A49B50414210DA4E37135441AB39E574A29B504176067CCF371354411EBCBC54A29B504134DD657A40135441FAF452F9A59B504199C8DACF4413544173765B2DA99B50414B0BCFF347135441F1C2ADD0AB9B50410CE525A2461354416F0F0074AE9B5041470A00484B1354411C53C343AE9B50416CCFCB4B4E135441D9C5BE38B29B5041496C50A656135441A6CD7E60B89B5041EC19809757135441487BAE51B99B50410114022C5B135441447ADFA5BC9B5041FCAE44CA5913544122FAB55EBD9B5041EFB51AEC5C135441
+</a>
+
+<b>
+010600000001000000010300000001000000330000000AD7A390DE9B5041AE47E1DACD135441B045BDE8DF9B504134442CE3CD1354419D047E12E09B50413427A6E5CD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C51354414F29C33DED9B50419E98C2D1C41354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B5135441C4569DFBE99B504178280D97B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB413544123118E6FE29B5041F4C31714B3135441597E3912E19B504141ABD936B2135441E59B024BDE9B504123D85D51B0135441F9AD8717DE9B504127E644F5AF13544158E3B8A3DC9B5041C7ACD2F4AC1354411BC93F8FDB9B5041619F0724A8135441FBDB2B80DB9B5041DFEE0B6AA6135441DA7A8466DB9B5041647F0B7AA31354417ADFB801D49B50412A2AD1BA9F1354415F9BCD63D09B504117612F9D9B135441E5C4EB45CE9B50410A266AA89C1354410C038618CA9B5041E2F10EBC9E135441EFBE3E53C69B50414E7C9BBAA0135441FDB21D9CC29B504160DF9127A31354416AAF3553BE9B50412902B12CA713544136CC654EBC9B5041BD0F470EAA135441470443EEBD9B50419B63EBA8AB13544176400836C29B504120D588E3AF135441C732890AC49B5041C689C2A4B1135441B7BF1612C89B504107699276B51354413DD26CC1C89B50414BBBFC29B61354415BC15E14CA9B5041AD33FC6EB7135441993CEAF4CC9B50410DD9B371BA13544144E79990CD9B5041A052CE15BB13544178C238C4CD9B50417A9DA04ABB1354411C51BC2CD09B5041B03110D6BD135441FB03A2E4D09B50418C29E797BE135441D402980FD79B50415009E40DC51354411AB7B816D89B50419C85EB22C6135441C49E9DE4D89B5041EE3BC2F8C613544158E18B8BD99B5041DE1C71ABC71354413A9556ACDA9B50418CC190E0C81354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608167 - 201838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002500000085D6F9F636A15041022AF6F425555541A2FCE15B37A15041E7AEAB9925555541EC51B84E38A15041AE47E1BA24555541AE47E18A3AA15041E17A14AE22555541956E12533DA150415382EB2020555541C1C789A439A15041B9E567671F555541C85216121AA150410603DD7119555541316492F6F4A0504163D1977A11555541CE4AC1EBF1A05041791D14B811555541DA9D62C2EFA0504179BBD4AD11555541404ED846ECA050414D499A511155554171EDFE77E1A050417A4AF76F0F5555410ED42D6DDEA0504159FE7A320F555541EC51B8CEDEA05041EC51B86E0D5555419A9999E9DBA050418FC2F5E80C5555416C1D3F60D6A05041741A967A37555541B85B9286D8A05041619BA0883A555541333333B3D8A05041295C8F1239555541CDCCCC2CD9A050418FC2F5183555554185EB5168D9A050413D0AD72333555541D7A3709DD9A050416666666631555541ACAB0542F8A050416362DF073A555541A4703D5AF8A050411F85EB013A555541F8D5F5ECFAA050411E59486939555541D2CB019A00A15041873812C837555541F6285C2FDAA05041D7A3709D2C555541713D0A57DAA050411F85EB512B55554133333383DAA05041E17A14DE29555541E17A14DEDAA0504114AE47E126555541CDCCCC2CDBA05041EC51B84E245555413D0AD753DBA0504152B81E052355554152B81E85DBA0504185EB51682155554152B81EE5DCA0504185EB51F815555541D7A3702DDDA05041AE47E1EA1355554112D0EF9BEFA05041B0645C4918555541F4B3628034A150417E60CDFC2655554185D6F9F636A15041022AF6F425555541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000A73B59EED8A05041BF739423375555415C3970BCD8A05041C2D73FC538555541EF1D0A60E9A050413BB385693D55554157393CBAF0A05041789F8FD23B55554168A8CC2CD9A0504123F3F61835555541A73B59EED8A05041BF73942337555541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660763 - 660762
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D854411B112822E6DA5041E7C631E421D85441A76E1CE5E9DA5041070E4B6D1FD8544167E0E9D2EEDA5041275564F61CD85441B0C1829FF3DA5041587B143D1AD85441F9A21B6CF8DA50410032F9A417D85441B914E959FDDA504174D404E213D854417A86B64702DB504170E6DBFD0FD854418E5376E905DB5041F5677EF80BD85441A1A9219907DB504115AF978109D854411AB16AAC09DB5041EC14183E02D854411C287F9E0BDB5041086E08E3FBD75441289F93900DDB50413B94B829F9D75441A12FC8B10DDB5041FB1AA228F2D754415EB36CBB0EDB50415979D9D1E8D754412A16A8820FDB5041E4FA7BCCE4D754414DD4D5FD0EDB50410E212C13E2D7544187DC498AF0DA50410CF56D09DAD754411F85EBB1EADA5041713D0A97D8D75441F6285C8FE5DA50415C8FC265D7D7544161AEC910E5DA5041CAB452ACDDD75441A8A24974EADA50410124EFD9DED754412012F76EEBDA50414AE4BD10DFD75441E17A142EF6DA5041A4703D6AE1D7544173AFDCD5F6DA5041983049A3E1D75441641D9B88FFDA5041E78A3682E4D75441E17A143E06DB5041A4703D9AE6D7544172BB1A7008DB504196374D69E7D75441E17A149E08DB5041A4703D7AE7D75441A88B90F506DB50418E36B9EBEBD75441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441BE548EB6E4DA50412B605254E9D75441F93165B0E9DA5041CA3A2A7EEBD75441CEA54ECDF1DA50410FA08B85EED75441A6F11044F9DA50415405ED8CF1D754418F750F7CFDDA5041A01A0048F3D7544124C85C9801DB504197FE61E7F4D754417CD1E60D01DB5041E7EB4DFCF5D75441AE0DAFA4F7DA5041A55EC54EF2D75441340F3CAAEEDA5041B802EEBCEED75441BCE8A109E5DA50412244B4F3EAD75441E17A142EE5DA5041A4703DFAF1D75441E17A144EE5DA5041A4703D9AF8D75441E17A147EE4DA5041A4703DCAFDD75441E17A14CEE3DA5041A4703DDA02D85441E17A148EE1DA5041A4703D9A0DD85441E17A14BEDFDA5041A4703D1A16D854415C8FC2C5DEDA5041EC51B88E19D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660763 - 1506278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D854411B112822E6DA5041E7C631E421D85441A76E1CE5E9DA5041070E4B6D1FD8544167E0E9D2EEDA5041275564F61CD85441B0C1829FF3DA5041587B143D1AD85441F9A21B6CF8DA50410032F9A417D85441B914E959FDDA504174D404E213D854417A86B64702DB504170E6DBFD0FD854418E5376E905DB5041F5677EF80BD85441A1A9219907DB504115AF978109D854411AB16AAC09DB5041EC14183E02D854411C287F9E0BDB5041086E08E3FBD75441289F93900DDB50413B94B829F9D75441A12FC8B10DDB5041FB1AA228F2D754415EB36CBB0EDB50415979D9D1E8D754412A16A8820FDB5041E4FA7BCCE4D754414DD4D5FD0EDB50410E212C13E2D7544187DC498AF0DA50410CF56D09DAD754411F85EBB1EADA5041713D0A97D8D75441F6285C8FE5DA50415C8FC265D7D7544161AEC910E5DA5041CAB452ACDDD75441A8A24974EADA50410124EFD9DED754412012F76EEBDA50414AE4BD10DFD75441E17A142EF6DA5041A4703D6AE1D7544173AFDCD5F6DA5041983049A3E1D75441641D9B88FFDA5041E78A3682E4D75441E17A143E06DB5041A4703D9AE6D7544172BB1A7008DB504196374D69E7D75441E17A149E08DB5041A4703D7AE7D75441A88B90F506DB50418E36B9EBEBD75441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441C2548EB6E4DA50412A605254E9D75441FE3165B0E9DA5041C73A2A7EEBD75441CBA54ECDF1DA504112A08B85EED75441AAF11044F9DA50415105ED8CF1D7544194750F7CFDDA5041A21A0048F3D7544122C85C9801DB504198FE61E7F4D754417BD1E60D01DB5041E6EB4DFCF5D75441AA0DAFA4F7DA5041A45EC54EF2D75441300F3CAAEEDA5041BD02EEBCEED75441BEE8A109E5DA50412044B4F3EAD75441E17A142EE5DA5041A4703DFAF1D75441E17A144EE5DA5041A4703D9AF8D75441E17A147EE4DA5041A4703DCAFDD75441E17A14CEE3DA5041A4703DDA02D85441E17A148EE1DA5041A4703D9A0DD85441E17A14BEDFDA5041A4703D1A16D854415C8FC2C5DEDA5041EC51B88E19D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660763 - 4182829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D854411B112822E6DA5041E7C631E421D85441A76E1CE5E9DA5041070E4B6D1FD8544167E0E9D2EEDA5041275564F61CD85441B0C1829FF3DA5041587B143D1AD85441F9A21B6CF8DA50410032F9A417D85441B914E959FDDA504174D404E213D854417A86B64702DB504170E6DBFD0FD854418E5376E905DB5041F5677EF80BD85441A1A9219907DB504115AF978109D854411AB16AAC09DB5041EC14183E02D854411C287F9E0BDB5041086E08E3FBD75441289F93900DDB50413B94B829F9D75441A12FC8B10DDB5041FB1AA228F2D754415EB36CBB0EDB50415979D9D1E8D754412A16A8820FDB5041E4FA7BCCE4D754414DD4D5FD0EDB50410E212C13E2D7544187DC498AF0DA50410CF56D09DAD754411F85EBB1EADA5041713D0A97D8D75441F6285C8FE5DA50415C8FC265D7D7544161AEC910E5DA5041CAB452ACDDD75441A8A24974EADA50410124EFD9DED754412012F76EEBDA50414AE4BD10DFD75441E17A142EF6DA5041A4703D6AE1D7544173AFDCD5F6DA5041983049A3E1D75441641D9B88FFDA5041E78A3682E4D75441E17A143E06DB5041A4703D9AE6D7544172BB1A7008DB504196374D69E7D75441E17A149E08DB5041A4703D7AE7D75441A88B90F506DB50418E36B9EBEBD75441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441C2548EB6E4DA50412A605254E9D75441FE3165B0E9DA5041C73A2A7EEBD75441CBA54ECDF1DA504112A08B85EED75441AAF11044F9DA50415105ED8CF1D7544194750F7CFDDA5041A21A0048F3D7544122C85C9801DB504198FE61E7F4D754417BD1E60D01DB5041E6EB4DFCF5D75441AA0DAFA4F7DA5041A45EC54EF2D75441300F3CAAEEDA5041BD02EEBCEED75441BEE8A109E5DA50412044B4F3EAD75441E17A142EE5DA5041A4703DFAF1D75441E17A144EE5DA5041A4703D9AF8D75441E17A147EE4DA5041A4703DCAFDD75441E17A14CEE3DA5041A4703DDA02D85441E17A148EE1DA5041A4703D9A0DD85441E17A14BEDFDA5041A4703D1A16D854415C8FC2C5DEDA5041EC51B88E19D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608155 - 53169
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000E17A14AE52A450413D0AD7D3F452554152B81E3549A4504114AE4711F452554114AE473142A45041F6285C2F18535541000000E048A450415C8FC2B51953554185EB51384BA45041CDCCCC3C1B535541EC51B80E52A450410AD7A3B01F535541D7A370BD5CA45041713D0AE721535541CDCCCC2C63A4504133333363255355418FC2F5C865A4504185EB5148255355419A99996966A450415C8FC2E5215355410AD7A3B065A4504152B81EC5195355418FC2F5F863A450410AD7A3400F535541666666B662A450413D0AD7E30C535541295C8FA262A450419A9999D90453554152B81E1563A45041C3F528ECFB52554148E17AA462A45041EC51B8CEF2525541EC51B85E61A450415C8FC2B5F2525541EC51B87E5FA45041F6285C3FF452554152B81E355DA45041EC51B80EF5525541AE47E17A5AA4504185EB5118F55255413D0AD7A356A4504152B81E25F5525541E17A14AE52A450413D0AD7D3F4525541
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085EB51384BA45041CDCCCC3C1B5355414B78C8AC4DA45041C72AF9980E53554117776FA052A45041164318E8F452554161B730524CA4504111123B51F452554119E093804BA4504191BD6940F452554177CFB50A4BA45041ADCEF436F45255410FEB8F3549A450416C8DB719F45255411EB3DB1748A450410356FBCDF952554114AE473142A45041F6285C2F18535541000000E048A450415C8FC2B51953554185EB51384BA45041CDCCCC3C1B535541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981627 - 3014303
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002C0000003D0AD7D3B5A650415C8FC225FB19554185EB5158B5A65041B81E855BFB195541295C8FB2B4A650410AD7A3B0FC195541CDCCCC0CB5A65041AE47E1CAFC19554185EB5158B2A65041000000D0041A5541EC51B8FEB0A65041295C8FE20C1A5541C3F5280CB2A650417B14AE07131A5541295C8F32B7A65041295C8F42221A55413D0AD733B9A650417B14AE87301A554133333313BAA6504148E17A74301A55417B14AE27B8A6504185EB51F8211A5541666666D6B2A65041E17A14CE121A5541D7A370DDB1A65041CDCCCCDC0C1A5541F6285C1FB3A6504100000000051A55413D0AD7E3B5A650418FC2F508FD1955418FC2F518B7A65041E17A149EFB195541AE47E10ABAA650418FC2F508FA1955419A999989C2A6504148E17AC4F61955413D0AD7E3C3A650410AD7A350F719554185EB5128C8A65041CDCCCC8C001A5541295C8FC2C9A650410AD7A350FE195541295C8FE2D8A650413D0AD713F51955411F85EB31DEA650411F85EB61F2195541EC51B85EE1A65041295C8F22F019554185EB5168E2A650419A999969ED195541C3F528BCE1A6504133333333EC19554133333333E1A6504148E17A24EB195541295C8F22E3A6504133333383EA195541333333D3FFA650417B14AE778919554148E17AF4FEA6504148E17A04881955419A9999C9E4A65041333333A38219554133333353D9A650419A999969A9195541E17A14CECCA65041AE47E1DAA5195541CDCCCC3CB3A6504148E17A14AD195541EC51B87EA0A6504152B81E85B5195541D7A3702D9DA650410AD7A3C0B71955415C8FC2F59BA65041B81E859BBB19554185EB51589AA6504148E17A04C61955419A9999699BA6504152B81E45C7195541A4703D9AA2A650417B14AE57C7195541E17A14AEA2A65041B81E855BC8195541C3F528FCACA6504114AE47D1D019554185EB5128BEA65041E17A14DEE91955413D0AD7D3B5A650415C8FC225FB195541
+</a>
+
+<b>
+0106000000010000000103000000010000005000000048E17A24D9A6504100000020A9195541F39660E6D4A65041747B70F4A7195541DC0CE67FD1A65041D4BD5904A7195541CDCCCCFCCCA650415C8FC2C5A5195541414F06A4C9A65041C82CCABFA6195541890091E9BFA65041A8818E7FA919554120D8B228BAA650414D79C41FAB195541F9E72687B5A650415519C96EAC1955414B6B4F36B3A65041AD056717AD195541B28B2AC7B1A65041535FF0C2AD195541936D650BAAA65041E8D83F38B1195541FBA1804CA5A650414818555BB31955416E577CD7A1A65041610BDEE9B419554145EE6337A0A6504127FC1EB5B5195541BE3B17909EA65041DAA0FAD1B61955415BEE27569DA65041D6853DA5B7195541AE428BBA9CA650417124702CB919554163F1361B9CA650415930ED24BB195541B78764A49BA6504189C0FFA7BD19554130A9E4359BA650411A474270C0195541277BE89B9AA65041A8ADD150C41955416046211D9AA650415B5BB57EC7195541A72623E399A65041AD720E1FC9195541F04EF18B9EA65041F7A0846BC919554180005E33A3A65041C2FAC2A8C919554109C556D1A5A6504118B85D6CCD1955416458935AAAA65041B8920631D0195541BB294837ACA6504109DA270CD2195541ECB169ECADA650417A365C4CD3195541A13A41DBAFA65041CEEC453DD619554190ACDC58B3A6504137BE4A67DB195541DCE1FD7CB5A6504136F7227CDE1955415C9347A7B8A650411894440AE3195541EF19B15BBAA650418A5F557EE5195541E9CAE0C0BCA650413802CEF0E819554133333343BDA650413BDF4F6DEA1955419BC1A051BBA65041FEF6EA60EE1955413C47E361B9A65041639CCC50F2195541303B542FB7A65041685187C8F6195541D7A3701DB5A6504152B81E75FB1955416891ED4CB4A650415C8FC2A5FC195541C7B53A97B4A65041A221B998FC1955415CE0F5AAB6A65041522DBB20FD195541E672BCE5B8A650413CD4E5EEFB1955418E55FAA8BCA650412A784DF2F9195541E7E0589BC0A65041E9DC2506F81955419B8A0EE4C2A650415E8191D8F6195541C0068C02C5A65041BD7A4115F719554172CA66A2C8A6504145A1553EF6195541F3756FE4CAA6504185B10AA8F519554122251E83D0A65041206A56E4F31955419A6483EBD5A65041F79E86D6F11955417C99C767D9A65041F6F49D25F1195541509B3FE1DAA65041A72244F0F01955413F315715DDA650412391E1C0F0195541022B87D6E1A650417593188CF01955418B10188BE2A650416790D312EE1955415DF31107E3A650416E44E339EC19554173B6E693E3A650418965ACF9E9195541C6BA2618E6A65041AD886E53E11955419CEE63A0E8A65041CBED7A9FD819554138B2D3B9EAA6504166515968D1195541346B2E59ECA650410F30CED4CB1955418C633C34EEA65041759F1374C5195541513C339AF0A65041B8DAEC35BD195541E9799134F2A65041E5E684B3B71955412C553DA7F3A6504140578CB9B21955416378C065F5A650413B3D30BDAC195541333333D3FFA650417B14AE778919554148E17AF4FEA6504148E17A048819554185AE12F8F3A65041B5D140C2851955414A089B4CE9A65041F9F5BE8F83195541292A028EE4A65041C9F7E6A38219554144698915E3A65041AE7D46D98719554119810501E1A650410F16B1CF8E1955416E3F5E1BDEA6504177B6208298195541DE73C340DDA65041816AD55D9B19554199EECBB9DBA65041E1D9767AA01955415C2DF187DAA65041C6B1357AA419554148E17A24D9A6504100000020A9195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981627 - 3381307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002C0000003D0AD7D3B5A650415C8FC225FB19554185EB5158B5A65041B81E855BFB195541295C8FB2B4A650410AD7A3B0FC195541CDCCCC0CB5A65041AE47E1CAFC19554185EB5158B2A65041000000D0041A5541EC51B8FEB0A65041295C8FE20C1A5541C3F5280CB2A650417B14AE07131A5541295C8F32B7A65041295C8F42221A55413D0AD733B9A650417B14AE87301A554133333313BAA6504148E17A74301A55417B14AE27B8A6504185EB51F8211A5541666666D6B2A65041E17A14CE121A5541D7A370DDB1A65041CDCCCCDC0C1A5541F6285C1FB3A6504100000000051A55413D0AD7E3B5A650418FC2F508FD1955418FC2F518B7A65041E17A149EFB195541AE47E10ABAA650418FC2F508FA1955419A999989C2A6504148E17AC4F61955413D0AD7E3C3A650410AD7A350F719554185EB5128C8A65041CDCCCC8C001A5541295C8FC2C9A650410AD7A350FE195541295C8FE2D8A650413D0AD713F51955411F85EB31DEA650411F85EB61F2195541EC51B85EE1A65041295C8F22F019554185EB5168E2A650419A999969ED195541C3F528BCE1A6504133333333EC19554133333333E1A6504148E17A24EB195541295C8F22E3A6504133333383EA195541333333D3FFA650417B14AE778919554148E17AF4FEA6504148E17A04881955419A9999C9E4A65041333333A38219554133333353D9A650419A999969A9195541E17A14CECCA65041AE47E1DAA5195541CDCCCC3CB3A6504148E17A14AD195541EC51B87EA0A6504152B81E85B5195541D7A3702D9DA650410AD7A3C0B71955415C8FC2F59BA65041B81E859BBB19554185EB51589AA6504148E17A04C61955419A9999699BA6504152B81E45C7195541A4703D9AA2A650417B14AE57C7195541E17A14AEA2A65041B81E855BC8195541C3F528FCACA6504114AE47D1D019554185EB5128BEA65041E17A14DEE91955413D0AD7D3B5A650415C8FC225FB195541
+</a>
+
+<b>
+0106000000010000000103000000010000005000000048E17A24D9A6504100000020A9195541F39660E6D4A65041747B70F4A7195541DC0CE67FD1A65041D4BD5904A7195541CDCCCCFCCCA650415C8FC2C5A5195541414F06A4C9A65041C82CCABFA6195541890091E9BFA65041A8818E7FA919554120D8B228BAA650414D79C41FAB195541F9E72687B5A650415519C96EAC1955414B6B4F36B3A65041AD056717AD195541B28B2AC7B1A65041535FF0C2AD195541936D650BAAA65041E8D83F38B1195541FBA1804CA5A650414818555BB31955416E577CD7A1A65041610BDEE9B419554145EE6337A0A6504127FC1EB5B5195541BE3B17909EA65041DAA0FAD1B61955415BEE27569DA65041D6853DA5B7195541AE428BBA9CA650417124702CB919554163F1361B9CA650415930ED24BB195541B78764A49BA6504189C0FFA7BD19554130A9E4359BA650411A474270C0195541277BE89B9AA65041A8ADD150C41955416046211D9AA650415B5BB57EC7195541A72623E399A65041AD720E1FC9195541F04EF18B9EA65041F7A0846BC919554180005E33A3A65041C2FAC2A8C919554109C556D1A5A6504118B85D6CCD1955416458935AAAA65041B8920631D0195541BB294837ACA6504109DA270CD2195541ECB169ECADA650417A365C4CD3195541A13A41DBAFA65041CEEC453DD619554190ACDC58B3A6504137BE4A67DB195541DCE1FD7CB5A6504136F7227CDE1955415C9347A7B8A650411894440AE3195541EF19B15BBAA650418A5F557EE5195541E9CAE0C0BCA650413802CEF0E819554133333343BDA650413BDF4F6DEA1955419BC1A051BBA65041FEF6EA60EE1955413C47E361B9A65041639CCC50F2195541303B542FB7A65041685187C8F6195541D7A3701DB5A6504152B81E75FB1955416891ED4CB4A650415C8FC2A5FC195541C7B53A97B4A65041A221B998FC1955415CE0F5AAB6A65041522DBB20FD195541E672BCE5B8A650413CD4E5EEFB1955418E55FAA8BCA650412A784DF2F9195541E7E0589BC0A65041E9DC2506F81955419B8A0EE4C2A650415E8191D8F6195541C0068C02C5A65041BD7A4115F719554172CA66A2C8A6504145A1553EF6195541F3756FE4CAA6504185B10AA8F519554122251E83D0A65041206A56E4F31955419A6483EBD5A65041F79E86D6F11955417C99C767D9A65041F6F49D25F1195541509B3FE1DAA65041A72244F0F01955413F315715DDA650412391E1C0F0195541022B87D6E1A650417593188CF01955418B10188BE2A650416790D312EE1955415DF31107E3A650416E44E339EC19554173B6E693E3A650418965ACF9E9195541C6BA2618E6A65041AD886E53E11955419CEE63A0E8A65041CBED7A9FD819554138B2D3B9EAA6504166515968D1195541346B2E59ECA650410F30CED4CB1955418C633C34EEA65041759F1374C5195541513C339AF0A65041B8DAEC35BD195541E9799134F2A65041E5E684B3B71955412C553DA7F3A6504140578CB9B21955416378C065F5A650413B3D30BDAC195541333333D3FFA650417B14AE778919554148E17AF4FEA6504148E17A048819554185AE12F8F3A65041B5D140C2851955414A089B4CE9A65041F9F5BE8F83195541292A028EE4A65041C9F7E6A38219554144698915E3A65041AE7D46D98719554119810501E1A650410F16B1CF8E1955416E3F5E1BDEA6504177B6208298195541DE73C340DDA65041816AD55D9B19554199EECBB9DBA65041E1D9767AA01955415C2DF187DAA65041C6B1357AA419554148E17A24D9A6504100000020A9195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712161 - 431187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000003A000000333333E340A4504152B81E15455655415C8FC25542A450417B14AE1745565541B81E858B46A450411F85EBE1435655415C8FC2F54AA450410000009042565541666666D64EA45041D7A3703D415655419A9999E94FA4504185EB51D8405655411F85EB0151A45041000000D04056554152B81EC553A45041000000B04056554185EB510857A45041A4703D8A405655411F85EB1158A45041AE47E1BA40565541000000005BA450413D0AD74341565541AE47E17A5EA45041713D0AE741565541A4703D9A5FA450419A99997942565541C3F5280C64A45041EC51B8BE44565541EC51B8EE64A45041F6285CEF425655419A99995966A450415C8FC205405655419A9999A965A45041B81E85BB3F565541B81E85AB62A45041A4703D2A3E565541295C8FB25DA45041AE47E15A3B565541E17A14CE5BA4504148E17A943A56554152B81ED556A45041F6285C5F39565541EC51B8EE51A4504114AE475139565541333333134CA450413D0AD783395655410AD7A3E043A45041E17A14EE395655418FC2F5B83EA4504114AE475139565541295C8F0239A45041EC51B80E38565541E17A14DE32A45041D7A3709D36565541D7A370AD29A450419A9999F932565541C3F5285C22A45041713D0A07315655410AD7A3A021A45041AE47E18A3456554185EB51181DA45041295C8F823256554152B81E051CA450415C8FC29533565541333333331CA45041295C8FC23456554148E17AF41CA450416666666635565541666666B61FA45041CDCCCCBC37565541EC51B8CE20A45041AE47E1AA38565541AE47E1BA27A45041EC51B85E3D565541B81E85DB28A45041295C8F223E565541713D0A072BA4504185EB51183F56554185EB51E82DA45041EC51B85E40565541C3F5284C2FA450419A9999E9405655413D0AD7B32AA45041713D0AD74E56554148E17A8423A45041F6285CFF6256554152B81EC522A450410000003065565541E17A146E24A45041333333A365565541D7A3705D25A450418FC2F5D865565541C3F5285C29A45041000000C066565541713D0A172AA45041EC51B8CE6656554148E17AC42BA4504114AE47F16656554185EB51F82CA450419A999909675655419A9999592FA45041A4703D3A6756554152B81E8530A45041CDCCCCFC63565541EC51B89E33A450413D0AD793645655411F85EBA135A450411F85EBF15E565541A4703DAA38A45041333333F356565541666666463BA45041E17A144E51565541000000B03FA450413333339347565541333333E340A4504152B81E154556554105000000D7A370FD2FA450413D0AD73358565541C3F5289C2FA450413D0AD72358565541C3F5283C32A45041713D0AB75056554148E17A9432A45041713D0AE750565541D7A370FD2FA450413D0AD73358565541
+</a>
+
+<b>
+010600000001000000010300000001000000310000002EA8F6083FA45041F926C95A39565541D7A3707D3DA45041000000B03E565541C151B81E36A450414B0000303D5655415FF29CF631A450419439D0BE3B5655416C6C02B12EA450412E01369C3A565541D0BABFBF21A45041EF7FF028345655410AD7A3A021A45041AE47E18A3456554108920EBF20A45041B0E3B825345655417A94E41320A4504173DD0D8F34565541F805034F1FA45041C36133553556554118DE783720A4504155C360FF36565541A76C2C9D20A4504171E0C7CA37565541412C0C5A21A45041C0A974CB38565541E9B3DFF623A45041153FDDCF3A5655415A65DFAD26A450411245FBA73C565541F78D73D928A45041E59B5DFE3D56554195FDD6B82DA4504121FF8A2A4056554146AB192D33A450411AA4DB4C42565541D6E179D338A450410CA5723144565541132787CE3BA45041BD0BD4DA445655416BCDFD4F3FA450417F01F20A4556554162A3424342A45041BCA274104556554114DD599A4CA45041C5848C0042565541D1883E074FA45041FB187E2B415655419A9999E94FA4504185EB51D840565541972425FB4FA45041FF9BCCD740565541FF57847656A45041DCF4D4904056554185EB510857A45041A4703D8A405655411F85EB1158A45041AE47E1BA4056554161FD67AA5AA45041A20A3634415655416E7EF9AF5AA45041F6820E35415655410D1604FD5AA45041D48D4B4341565541000000005BA450413D0AD74341565541AE47E17A5EA45041713D0AE741565541A4703D9A5FA450419A99997942565541E428EAF460A45041E057A42A43565541C3F5280C64A45041EC51B8BE44565541EC51B8EE64A45041F6285CEF425655418499995966A45041538FC205405655419A9999A965A45041B81E85BB3F565541B81E85AB62A45041A4703D2A3E5655419C588FB25DA450413A46E15A3B565541459A995159A450414A85EBF9395655416666661657A450411F85EB713956554163F6B7EE51A450412AB14751395655417B14AE874CA450416666668639565541DBB9D04449A450411E5735A8395655410AD7A3E043A45041E17A14EE395655412EA8F6083FA45041F926C95A39565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905773 - 103082
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000E4000000C99AD3BBEC39514105D3BEB336EA5441FADB5222EE3951410357BC483DEA5441F6285CFFED395141E17A149E35EA54411F85EB21FB395141B81E851B38EA5441F8808A2FFB3951412C4EE5F336EA54414A2ACF32FB39514135CFF6AC36EA544114AE47A1FB395141F6285C4F2DEA5441A7CCCB0DF5395141DBC6DBF52BEA5441CC6E4AE6F4395141C035C0ED2BEA54413D0AD713F4395141295C8FC22BEA54415C8FC2C5ED395141000000D02CEA544166666606EE3951411F85EBD127EA5441A4703D1AEF395141A4703D8A19EA544151759019EF395141D8D7794619EA54414BDE6718EF395141B81B4AD218EA54415C8FC215EF3951418FC2F5C817EA54411F85EB91EE39514148E17A5416EA544152B81EA5ED395141A4703DBA14EA5441A4703D4AE5395141AE47E10A0BEA544133333353E139514114AE470109EA54410AD7A3A0DC39514148E17A5407EA5441CDCCCCDCD9395141AE47E1EA07EA5441C3F528ACD33951413D0AD7D308EA54418FC2F5D8CD395141E17A148E09EA5441666666C6C53951419A99999909EA54417B14AEC7BE395141000000A009EA5441F6285CFFB639514185EB514809EA5441F6285C2FAF395141A4703D2A08EA54419A9999F9A7395141CDCCCC8C06EA54415C8FC225A13951411F85EBD104EA544148E17A349A395141CDCCCC5C02EA544100000000953951419A99998900EA5441F6285C3F90395141000000D0FFE954413D0AD79390395141713D0AE7FDE9544114AE4721943951417B14AE67FEE9544114AE47B198395141C3F5289CFFE95441000000209F395141F6285C2F02EA5441295C8F82A6395141AE47E16A04EA5441C3F528DCA93951416666664605EA5441A4703D9AA9395141CDCCCCFC03EA5441C3F5283CAB395141713D0AD701EA544148E17A84A939514100000010FEE95441EC51B89EA43951411F85EBA1FDE9544185EB51B89C395141295C8FD2F8E95441B81E855B93395141333333A3F2E95441E17A142E903951415C8FC2C5EEE954410AD7A3508C39514185EB51F8ECE95441C3F528FC8339514100000050EDE954410AD7A3C081395141CDCCCC0CEAE954418FC2F50880395141F6285C2FE6E954411607E41F813951414EB9238DE2E954415BB7204581395141ECB1421CE2E954410AD7A3B071395141B81E85ABD5E95441E17A14AE6C395141000000D0D3E9544101EE722D6C395141C3664EF1D3E954413D0AD7A367395141E17A141ED5E95441666666A668395141713D0A17D8E9544152B81EA56A395141D7A3705DE6E95441A4703D4A6B395141CDCCCC2CECE95441A4703D7A6B395141713D0AC7EDE954415C8FC2656D395141C3F5282CEEE95441333333437139514100000060EFE9544166666636753951413D0AD7F3F1E954413D0AD76378395141AE47E16AF6E95441E17A144E78395141B81E853BFEE9544185EB512876395141713D0A3703EA54413D0AD70377395141A4703D2A07EA54410000004079395141000000000AEA5441CDCCCCCC7D395141333333F30DEA5441000000D0833951410AD7A3E013EA54410AD7A3A08B395141A4703D6A20EA5441C3F528EC8F395141EC51B8DE2CEA54415C8FC245933951411F85EBC12EEA54413D0AD7B393395141713D0AB735EA5441D7A3704D94395141A4703DBA3BEA544152B81EB596395141CDCCCCCC43EA544148E17A74993951417B14AED74AEA5441AE47E1CA96395141EC51B8BE52EA5441CDCCCC6C9839514185EB51B854EA544185EB51589B395141AE47E12A50EA544185EB51189E3951410000007056EA544185EB51189E3951418FC2F5A852EA5441E17A147E9D3951418FC2F5E84FEA5441666666769C3951417B14AE374CEA5441295C8FE299395141EC51B87E47EA544152B81EB59639514152B81E6541EA544152B81E5595395141000000303DEA54415C8FC2A5943951413D0AD72333EA5441666666569339514152B81E4528EA5441F6285C9F88395141E17A144E14EA544100000020833951411F85EB9109EA5441AE47E19A7F3951413333330302EA54417B14AE37783951417B14AE77F2E95441A4703DBA7539514100000060EFE95441AE47E1BA72395141CDCCCC4CEDE95441333333836E395141A4703D8AECE954415C8FC2056C395141295C8F32ECE954413D0AD7C36B3951410AD7A3E0E9E95441B81E85CB6C395141713D0AF7E9E95441333333737139514185EB5148EAE95441C3F5285C7739514148E17A24EDE954413D0AD7C3793951413D0AD7E3EFE954418FC2F5587F395141000000A0FAE95441666666A681395141EC51B8BEFEE954410000007082395141B81E85EBFEE9544100000080843951417B14AEB7FDE954417B14AE97873951419A9999F9FDE9544114AE473188395141F6285C1F00EA54413D0AD7F3883951413333335300EA5441295C8F428D3951413D0AD793FEE954415C8FC265903951410AD7A3F0FDE95441AE47E10A90395141E17A14DEFFE95441D7A3702D8C395141713D0AE700EA5441333333C38839514152B81E6502EA5441295C8F1287395141E17A148E03EA5441295C8F72853951417B14AE4705EA54419A99996985395141AE47E1AA07EA5441A4703D8A86395141295C8FD209EA54413D0AD7B3873951419A9999D90AEA5441B81E85CB883951419A9999D90AEA544148E17A048B395141295C8F4209EA5441713D0A17913951413333336303EA5441E17A141E9339514185EB518805EA54418FC2F5E88E395141000000900CEA5441000000E08C395141AE47E17A0BEA5441F6285C8F8B3951413D0AD7230BEA54410AD7A3C08A3951413D0AD7830BEA5441A4703DDA8A39514185EB51E80CEA544114AE47E18B395141B81E85AB0DEA54411F85EB918D395141295C8FB20EEA544114AE47918C3951410AD7A3E00FEA5441C3F5288C8B395141C3F5285C0FEA54419A9999A98A39514148E17AB40EEA54419A9999B9893951418FC2F5A80FEA5441C3F528EC89395141B81E85EB10EA54410AD7A3F08C395141F6285C9F16EA5441A4703D3A923951411F85EBD121EA5441EC51B82E953951413D0AD72329EA5441E17A14CE95395141F6285C0F31EA54413D0AD7E3953951413D0AD7B337EA544185EB51C8963951411F85EBB13BEA5441AE47E1AA97395141CDCCCCFC3EEA5441A4703D0A9B395141295C8F9245EA5441D7A3709D9D3951415C8FC2E54AEA544185EB51389E395141CDCCCC2C4CEA5441AE47E1AA9F3951417B14AEE74DEA544133333313A1395141CDCCCC6C4EEA54411F85EB61A2395141B81E857B4EEA5441AE47E1BAA43951419A9999E951EA5441D7A3704DAA3951417B14AED756EA5441E17A145EA93951417B14AE7758EA5441CDCCCC5CA739514148E17A2457EA5441A4703D6AA43951418FC2F5C854EA54411F85EBA1A2395141D7A3705D53EA5441F6285C6FA03951410000005053EA5441000000A09F3951418FC2F5B859EA5441333333239F3951415C8FC2555CEA54411F85EBC19D3951418FC2F5885FEA544185EB51E89A3951419A99990964EA54411F85EB7197395141AE47E15A67EA5441295C8F9296395141AE47E14A68EA5441713D0A479B39514148E17AF465EA5441AE47E1AA9E3951410AD7A38060EA54418FC2F518A13951410AD7A3A05DEA5441CDCCCC7CA4395141E17A149E5FEA5441000000B0A8395141666666B662EA544114AE4721B0395141333333A362EA5441C3F5284CB3395141F6285C1F69EA544114AE4701BA3951413D0AD7C36DEA5441AE47E1BABC39514114AE47B16DEA544185EB51B8C5395141713D0A076DEA5441713D0A37D1395141666666A66EEA544152B81E55D739514114AE47B16DEA5441333333C3D9395141A4703D3A63EA5441B81E85BBDF3951410000004066EA544152B81E55E5395141C3F528DC69EA5441F6285C1FEA39514148E17AF46CEA5441EC51B8FEEC39514114AE47B16DEA5441EC51B8FEF33951413D0AD7B36BEA5441E17A14BEF9395141E17A14AE68EA54413D0AD7D3FE39514148E17A0461EA5441F6285C3F033A514152B81E4554EA54413D0AD7E3073A5141CDCCCC3C4CEA54410AD7A3C00C3A5141713D0A4745EA5441AE47E1DA0C3A514114AE472145EA5441333333330F3A51415C8FC2C541EA54410AD7A3B00A3A514148E17A3444EA54410AD7A340053A5141666666964BEA5441295C8F72003A5141E17A14AE53EA544152B81E35FD3951411F85EB015CEA5441666666C6FA3951413D0AD7D361EA5441713D0A27F9395141AE47E17A64EA54419A9999E9F5395141F6285C0F67EA54411F85EB31F13951417B14AE5769EA5441295C8F82ED395141000000606AEA5441C3F5282CEA395141F6285C9F6AEA544100000080E53951418FC2F5D868EA5441D7A3704DE13951410000003066EA5441CDCCCC0CDE395141295C8FD263EA5441C3F5282CD9395141CDCCCC3C61EA54418FC2F5F8D43951419A9999E95FEA5441D7A3707DCE3951411F85EB115EEA544114AE4701C83951413D0AD7B35DEA5441A4703D5ABE395141713D0AF75CEA5441713D0AB7B4395141AE47E17A5BEA544152B81E25B2395141CDCCCC4C5CEA54413D0AD713B33951417B14AE375EEA5441EC51B81EB23951411F85EB115EEA54417B14AE47B039514185EB51485BEA54411F85EB21AE395141E17A14AE5AEA5441EC51B82EAB395141AE47E1AA59EA5441713D0A87A9395141295C8F9258EA54411F85EB81AA395141C3F528EC56EA5441333333A3AE3951417B14AE8758EA54417B14AEE7B4395141E17A147E59EA5441CDCCCC6CBF395141C3F528DC5AEA5441E17A14CECD395141B81E85FB5BEA5441A4703D0AD7395141E17A14FE5DEA54419A9999E9DE3951418FC2F54861EA5441295C8F32E03951418FC2F5785EEA5441A4703D4AD9395141EC51B8DE53EA5441295C8F12DF395141CDCCCCBC50EA5441333333D3DC3951415C8FC26541EA5441333333D3DC395141A4703D7A2DEA5441713D0A87E239514148E17AF422EA54415C8FC2F5EA3951417B14AE472EEA5441FF840843EC395141CB907A7634EA5441C99AD3BBEC39514105D3BEB336EA5441
+</a>
+
+<b>
+010600000001000000010300000001000000E90000008FC2F50880395141F6285C2FE6E95441EA9064428139514109A3131AE2E9544148E17A948139514185EB5108E1E95441333333E37D39514133333323DCE954411F85EBD1783951413D0AD7A3D6E95441666666E67539514166666616D2E95441A4703DAA73395141EC51B8FECEE95441AE47E1FA72395141D7A3709DCAE954413D0AD7C36B3951415C8FC2F5CAE95441AE47E18A6F395141EC51B8AECFE95441D7A370CD6F395141295C8FE2D0E95441E17A14AE6C395141000000D0D3E954413D0AD7A367395141E17A141ED5E95441666666A668395141713D0A17D8E9544152B81EA56A395141D7A3705DE6E95441A4703D4A6B395141CDCCCC2CECE95441A4703D7A6B395141713D0AC7EDE954415C8FC2656D395141C3F5282CEEE95441333333437139514100000060EFE9544166666636753951413D0AD7F3F1E954413D0AD76378395141AE47E16AF6E95441E17A144E78395141B81E853BFEE9544185EB512876395141713D0A3703EA54413D0AD70377395141A4703D2A07EA54410000004079395141000000000AEA5441CDCCCCCC7D395141333333F30DEA5441000000D0833951410AD7A3E013EA54410AD7A3A08B395141A4703D6A20EA5441C3F528EC8F395141EC51B8DE2CEA54415C8FC245933951411F85EBC12EEA54413D0AD7B393395141713D0AB735EA5441D7A3704D94395141A4703DBA3BEA544152B81EB596395141CDCCCCCC43EA544148E17A74993951417B14AED74AEA5441AE47E1CA96395141EC51B8BE52EA5441CDCCCC6C9839514185EB51B854EA544185EB51589B395141AE47E12A50EA544185EB51189E3951410000007056EA544185EB51189E3951418FC2F5A852EA5441E17A147E9D3951418FC2F5E84FEA5441666666769C3951417B14AE374CEA5441295C8FE299395141EC51B87E47EA544152B81EB59639514152B81E6541EA544152B81E5595395141000000303DEA54415C8FC2A5943951413D0AD72333EA5441666666569339514152B81E4528EA5441F6285C9F88395141E17A144E14EA544100000020833951411F85EB9109EA5441AE47E19A7F3951413333330302EA54417B14AE37783951417B14AE77F2E95441A4703DBA7539514100000060EFE95441AE47E1BA72395141CDCCCC4CEDE95441333333836E395141A4703D8AECE954415C8FC2056C395141295C8F32ECE954413D0AD7C36B3951410AD7A3E0E9E95441B81E85CB6C395141713D0AF7E9E95441333333737139514185EB5148EAE95441C3F5285C7739514148E17A24EDE954413D0AD7C3793951413D0AD7E3EFE954418FC2F5587F395141000000A0FAE95441666666A681395141EC51B8BEFEE954410000007082395141B81E85EBFEE9544100000080843951417B14AEB7FDE954417B14AE97873951419A9999F9FDE9544114AE473188395141F6285C1F00EA54413D0AD7F3883951413333335300EA5441295C8F428D3951413D0AD793FEE954415C8FC265903951410AD7A3F0FDE95441AE47E10A90395141E17A14DEFFE95441D7A3702D8C395141713D0AE700EA5441333333C38839514152B81E6502EA5441295C8F1287395141E17A148E03EA5441295C8F72853951417B14AE4705EA54419A99996985395141AE47E1AA07EA5441A4703D8A86395141295C8FD209EA54413D0AD7B3873951419A9999D90AEA5441B81E85CB883951419A9999D90AEA544148E17A048B395141295C8F4209EA5441713D0A17913951413333336303EA5441E17A141E9339514185EB518805EA54418FC2F5E88E395141000000900CEA5441000000E08C395141AE47E17A0BEA5441F6285C8F8B3951413D0AD7230BEA54410AD7A3C08A3951413D0AD7830BEA5441A4703DDA8A39514185EB51E80CEA544114AE47E18B395141B81E85AB0DEA54411F85EB918D395141295C8FB20EEA544114AE47918C3951410AD7A3E00FEA5441C3F5288C8B395141C3F5285C0FEA54419A9999A98A39514148E17AB40EEA54419A9999B9893951418FC2F5A80FEA5441C3F528EC89395141B81E85EB10EA54410AD7A3F08C395141F6285C9F16EA5441A4703D3A923951411F85EBD121EA5441EC51B82E953951413D0AD72329EA5441E17A14CE95395141F6285C0F31EA54413D0AD7E3953951413D0AD7B337EA544185EB51C8963951411F85EBB13BEA5441AE47E1AA97395141CDCCCCFC3EEA5441A4703D0A9B395141295C8F9245EA5441D7A3709D9D3951415C8FC2E54AEA544185EB51389E395141CDCCCC2C4CEA5441AE47E1AA9F3951417B14AEE74DEA544133333313A1395141CDCCCC6C4EEA54411F85EB61A2395141B81E857B4EEA5441AE47E1BAA43951419A9999E951EA5441D7A3704DAA3951417B14AED756EA5441E17A145EA93951417B14AE7758EA5441CDCCCC5CA739514148E17A2457EA5441A4703D6AA43951418FC2F5C854EA54411F85EBA1A2395141D7A3705D53EA5441F6285C6FA03951410000005053EA5441000000A09F3951418FC2F5B859EA5441333333239F3951415C8FC2555CEA54411F85EBC19D3951418FC2F5885FEA544185EB51E89A3951419A99990964EA54411F85EB7197395141AE47E15A67EA5441295C8F9296395141AE47E14A68EA5441713D0A479B39514148E17AF465EA5441AE47E1AA9E3951410AD7A38060EA54418FC2F518A13951410AD7A3A05DEA5441CDCCCC7CA4395141E17A149E5FEA5441000000B0A8395141666666B662EA544114AE4721B0395141333333A362EA5441C3F5284CB3395141F6285C1F69EA544114AE4701BA3951413D0AD7C36DEA5441AE47E1BABC39514114AE47B16DEA544185EB51B8C5395141713D0A076DEA5441713D0A37D1395141666666A66EEA544152B81E55D739514114AE47B16DEA5441333333C3D9395141A4703D3A63EA5441B81E85BBDF3951410000004066EA544152B81E55E5395141C3F528DC69EA5441F6285C1FEA39514148E17AF46CEA5441EC51B8FEEC39514114AE47B16DEA5441EC51B8FEF33951413D0AD7B36BEA5441E17A14BEF9395141E17A14AE68EA54413D0AD7D3FE39514148E17A0461EA5441F6285C3F033A514152B81E4554EA54413D0AD7E3073A5141CDCCCC3C4CEA54410AD7A3C00C3A5141713D0A4745EA5441AE47E1DA0C3A514114AE472145EA5441333333330F3A51415C8FC2C541EA54410AD7A3B00A3A514148E17A3444EA54410AD7A340053A5141666666964BEA5441295C8F72003A5141E17A14AE53EA544152B81E35FD3951411F85EB015CEA5441666666C6FA3951413D0AD7D361EA5441713D0A27F9395141AE47E17A64EA54419A9999E9F5395141F6285C0F67EA54411F85EB31F13951417B14AE5769EA5441295C8F82ED395141000000606AEA5441C3F5282CEA395141F6285C9F6AEA544100000080E53951418FC2F5D868EA5441D7A3704DE13951410000003066EA5441CDCCCC0CDE395141295C8FD263EA5441C3F5282CD9395141CDCCCC3C61EA54418FC2F5F8D43951419A9999E95FEA5441D7A3707DCE3951411F85EB115EEA544114AE4701C83951413D0AD7B35DEA5441A4703D5ABE395141713D0AF75CEA5441713D0AB7B4395141AE47E17A5BEA544152B81E25B2395141CDCCCC4C5CEA54413D0AD713B33951417B14AE375EEA5441EC51B81EB23951411F85EB115EEA54417B14AE47B039514185EB51485BEA54411F85EB21AE395141E17A14AE5AEA5441EC51B82EAB395141AE47E1AA59EA5441713D0A87A9395141295C8F9258EA54411F85EB81AA395141C3F528EC56EA5441333333A3AE3951417B14AE8758EA54417B14AEE7B4395141E17A147E59EA5441CDCCCC6CBF395141C3F528DC5AEA5441E17A14CECD395141B81E85FB5BEA5441A4703D0AD7395141E17A14FE5DEA54419A9999E9DE3951418FC2F54861EA5441295C8F32E03951418FC2F5785EEA5441A4703D4AD9395141EC51B8DE53EA5441295C8F12DF395141CDCCCCBC50EA5441333333D3DC3951415C8FC26541EA5441333333D3DC395141A4703D7A2DEA5441713D0A87E239514148E17AF422EA54415C8FC2F5EA3951417B14AE472EEA5441F3A30843EC395141B2237B7634EA5441C79AD3BBEC39514104D3BEB336EA5441FBDB5222EE395141FE56BC483DEA544181F83521EE395141E9E276553DEA544133333323EF395141EC51B81E42EA5441295C8F12F3395141C3F528CC41EA54411F85EB21FB395141B81E851B38EA54414A2ACF32FB39514135CFF6AC36EA544114AE47A1FB395141F6285C4F2DEA5441B1CCCB0DF5395141D8C6DBF52BEA54413D0AD713F4395141295C8FC22BEA54419A999929F5395141CDCCCCBC28EA544152B81E15F53951411F85EBC123EA5441A4703D1AEF395141A4703D8A19EA54414ADE6718EF395141B81B4AD218EA54415C8FC215EF3951418FC2F5C817EA54411F85EB91EE39514148E17A5416EA544152B81EA5ED395141A4703DBA14EA5441A4703D4AE5395141AE47E10A0BEA544133333353E139514114AE470109EA54410AD7A3A0DC39514148E17A5407EA5441CDCCCCDCD9395141AE47E1EA07EA5441C3F528ACD33951413D0AD7D308EA54418FC2F5D8CD395141E17A148E09EA5441666666C6C53951419A99999909EA54417B14AEC7BE395141000000A009EA5441F6285CFFB639514185EB514809EA5441F6285C2FAF395141A4703D2A08EA54419A9999F9A7395141CDCCCC8C06EA54415C8FC225A13951411F85EBD104EA544148E17A349A395141CDCCCC5C02EA544100000000953951419A99998900EA5441F6285C3F90395141000000D0FFE954413D0AD79390395141713D0AE7FDE9544114AE4721943951417B14AE67FEE9544114AE47B198395141C3F5289CFFE95441000000209F395141F6285C2F02EA5441295C8F82A6395141AE47E16A04EA5441C3F528DCA93951416666664605EA5441A4703D9AA9395141CDCCCCFC03EA5441C3F5283CAB395141713D0AD701EA544148E17A84A939514100000010FEE95441EC51B89EA43951411F85EBA1FDE9544185EB51B89C395141295C8FD2F8E95441B81E855B93395141333333A3F2E95441E17A142E903951415C8FC2C5EEE954410AD7A3508C39514185EB51F8ECE95441C3F528FC8339514100000050EDE954410AD7A3C081395141CDCCCC0CEAE954418FC2F50880395141F6285C2FE6E95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538894 - 2912145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000006000000E5000000661FDAE9A42E5141D24D87AADE2554418FC2F588A52E514166666636DD255441B81E85AB9B2E5141AE47E14AD0255441D7A370CD922E5141D7A370ADC42554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF255441A4703DDA612E51419A9999299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE19425544152B81E153F2E514114AE474192255441CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441B81E859B152E514100000060BF2554419A999929142E5141B81E853BBE255441333333A3112E5141A4703D5ABE2554410AD7A340102E514148E17AE4BE255441333333630E2E51415C8FC2C5BE255441F6285C1F0D2E51411F85EB91BD2554417B14AEE70D2E51419A999929BB255441E17A14DE0E2E51417B14AE27B825544114AE47910E2E514152B81E25B5255441666666760C2E5141666666D6B1255441000000800B2E514185EB51F8AF255441B81E85EB0B2E51411F85EB71AD25544148E17A040B2E5141F6285C0FAC255441000000E0092E514152B81E45A82554419A9999E9082E5141295C8F42A5255441AE47E12A082E514100000090A325544133333313022E5141CDCCCCECA4255441E17A145E002E5141713D0A97A125544100000090FE2D5141CDCCCC2C9C255441B81E85CBFB2D5141713D0A179325544166666616F92D51410AD7A37088255441A4703DEAF62D51415C8FC2A57A25544166666696F42D5141666666D671255441F6285C0FEE2D5141A4703D3A7425544133333353F22D5141B81E854B86255441EC51B88EF52D514114AE47F19425544152B81E35F92D5141713D0AD7A425544100000050FB2D514100000030A72554413D0AD793FC2D5141AE47E1EAAA2554417B14AEC7FD2D5141EC51B85EAF2554411F85EB61FE2D5141CDCCCC2CB125544100000030002E5141AE47E19AB42554411F85EBA1012E51411F85EB11B72554413D0AD7C3FF2D51413D0AD783B8255441A4703D8AFD2D514152B81E05BA255441B81E85CBFB2D51410AD7A3E0BA2554410AD7A320FD2D5141EC51B81EBE255441EC51B85E032E5141295C8F32CD2554419A999909052E5141F6285C1FCD255441E17A144E082E51418FC2F5A8CC255441F6285C6F072E5141C3F528CCC9255441B81E85BB092E51418FC2F518C9255441D7A370DD082E5141D7A3707DC725544114AE47A1092E51419A999929C7255441D7A3709D0A2E514152B81E95C82554419A9999090C2E51417B14AE17C82554415C8FC2A50C2E5141D7A370EDC8255441713D0A470E2E514114AE4741C82554419A9999190F2E51417B14AE27CB255441F6285C4F0C2E5141D7A3704DCC255441B81E856B0C2E51419A9999D9CC25544133333393102E51417B14AE77CC2554419A9999D9102E51419A999919CB255441D7A3700D122E5141B81E850BCB255441F6285CBF132E514152B81EA5CB25544133333313142E5141D7A370BDCC255441713D0A27162E51419A999949CD25544152B81E85172E514114AE47F1CD255441F6285CDF192E514152B81E25CF25544152B81EF51E2E514152B81E35D225544152B81E95212E51419A999959D3255441E17A147E252E5141A4703DEAD42554411F85EB51282E5141666666E6D625544185EB51882C2E514185EB51F8D9255441477A6EDB2D2E51418E1391E8DA25544181CF8FF22C2E5141A51928CEDB25544185EB51E82A2E51413D0AD763DA2554413D0AD783262E5141666666E6D6255441295C8F72232E5141713D0A37D5255441A4703D0A212E5141F6285C5FD425544152B81EF51E2E5141B81E855BD32554419A9999E91A2E5141D7A3701DD125544114AE4711182E5141F6285C4FCF25544152B81E35162E5141B81E858BCE25544152B81E75142E51419A999929CE255441713D0A970F2E514114AE47F1CD2554419A9999D9092E5141B81E851BCE25544152B81EE5062E5141F6285C6FCE25544152B81E95052E514152B81EB5CE2554419A999999042E5141D7A3707DCE255441D7A370ED032E5141AE47E18ACE2554417B14AE87042E514100000000D0255441E17A14EE052E5141295C8F72D32554418FC2F5C8082E51419A999979DA2554417B14AE47052E51419A9999D9DC255441EC51B83E062E5141AE47E1CAE02554411F85EB61072E51417B14AEC7E0255441C3F528DC0F2E51413D0AD7A3E02554419A9999E9202E5141F6285C5FDC255441CDCCCCAC2D2E5141295C8F42DC25544165F42DFB2C2E51416C5333D4DB255441CB5A94E12D2E5141F13E85ECDA2554417B14AED72F2E51410AD7A350DC25544133333383332E514148E17A34DF25544166666666362E514100000040E1255441B81E85BB3A2E514185EB51A8E325544185EB51283F2E5141A4703D1AE625544166666616402E5141B81E852BE82554411F85EB21422E51413D0AD793EA2554410AD7A3E0432E514185EB51B8EB255441CDCCCCDC452E5141E17A14BEEC25544185EB5198492E51415C8FC295ED255441A4703D3A4E2E5141F6285C3FEE2554410AD7A300542E5141CDCCCC7CEE2554410AD7A340572E5141295C8FE2ED255441CDCCCC3C592E51411F85EBF1ED255441333333D35B2E5141E17A145EEE2554418FC2F5785E2E51411F85EBF1ED255441713D0A27652E5141E17A14BEEC255441B81E852B6B2E514152B81E05EC255441F6285C2F712E5141713D0AD7EB255441D7A3703D762E5141666666E6EB2554419A9999D9792E514185EB51B8EB25544148E17A947D2E5141E17A14BEEC255441B81E85FB842E5141AE47E1AAEE2554418FC2F5088A2E5141EC51B8EEEF255441D7A370AD912E5141295C8FC2F22554419A9999E9962E5141A4703D2AF5255441EC51B83E9B2E5141713D0A27F7255441BA136EC39B2E51419B351F6CF7255441F31B28AE9B2E51416DB0CD9BF725544157EEC1A49B2E5141E2A49BACF7255441F3CA94569B2E5141FDFBE94FF8255441295C8FA2972E5141D7A3707DF62554419A999979902E5141C3F5285CF3255441295C8F12892E514152B81EE5F025544166666646822E514166666626EF255441AE47E15A7B2E51417B14AE67ED25544100000000762E5141A4703D1AED2554418FC2F538702E5141CDCCCCDCEC255441B81E858B692E514185EB5158ED2554418FC2F5F8642E514152B81EA5ED255441333333B3602E5141AE47E1AAEE255441333333D35B2E5141295C8F82EF2554415C8FC255582E51410AD7A3B0EF25544185EB5148532E514114AE47A1EF2554418FC2F5B84C2E51413D0AD763EF255441D7A3700D492E514185EB51E8EE255441666666E6442E5141333333D3ED255441B81E85CB422E5141F6285C9FEC255441240F2CFC402E5141B103B208EB2554411F85EB21422E514185EB5168EE25544166666696482E514114AE47A1FF2554415C8FC2A55C2E5141AE47E1DA03265441F6285C6F742E5141D7A3703D0826544166666626892E5141C3F5286C0526544166666656892E5141AE47E14A04265441295C8F82872E51419A9999C9032654417B14AEF7862E5141EC51B8AE0126544148E17A44872E51417B14AEC700265441295C8F12892E51418FC2F53802265441AE47E17A8A2E514185EB510803265441295C8FF28A2E5141D7A3702D052654418FC2F5A88E2E5141C3F528AC0426544185EB51389D2E514114AE47B10226544152B81E759E2E5141D7A370ADFE2554410AD7A3E09C2E514152B81EC5FE255441AE47E10A9A2E51417B14AE77FF255441666666D6982E51415C8FC275FA25544114AE47F19A2E5141A4703D0AFA2554411F85EBE19A2E51415C8FC2E5F8255441B81E858B9B2E5141A4703D6AF8255441F6D7E75A9B2E5141818F6656F8255441E294EBA79B2E514116752AB4F7255441F74233C99B2E5141B00EC46DF7255441F6285C6F9D2E5141AE47E14AF8255441F42996619E2E5141B5CA48A7F82554416A0AA2B09F2E51418701EF8BF8255441B81E856BA02E5141000000D0F7255441C3F528ECA02E514133333313F72554413D0AD7F3A12E514152B81E55F0255441EC51B83EA32E51418FC2F5A8EA255441713D0AD7A32E5141713D0A27E725544133333353A42E5141AE47E10AE0255441B606CCE6A42E514145AE74AFDE255441DD516D8EA62E5141852D8F4DDF2554417B14AE07A62E5141F6285C1FE1255441295C8F92A52E5141D7A3702DE7255441C3F528DCA42E51418FC2F5E8EA255441D7A3708DA32E5141AE47E19AF02554411F85EB01A32E5141C3F5289CF625544100000060A22E514114AE4731FA2554419A9999C9A32E5141F6285C7FF92554410AD7A3B0A42E5141C3F5283CF8255441D7A3700DA52E5141A4703DCAF62554413D0AD703A62E51419A999949F52554415C8FC275A72E5141295C8F62F4255441B81E850BAA2E5141666666F6F3255441333333E3AA2E5141666666C6F0255441000000A0A82E5141F6285C4FEE25544148E17A34A92E51413D0AD723EC2554417B14AE77AA2E51410AD7A3E0EA255441B81E850BAB2E514148E17AF4E825544166666696AA2E51415C8FC225E72554414A44360FA82E51417228DBF2E72554413E8AB299A72E514108C043DAE3255441713D0A47A72E5141C3F5280CE0255441713D0AB7A62E5141295C8FC2DE255441BF893695A62E5141B7596143DF255441661FDAE9A42E5141D24D87AADE25544105000000295C8FA23B2E5141CDCCCCFC98255441AE47E16A3C2E51411F85EB71982554413D0AD7233D2E51418FC2F55899255441C3F5284C3C2E51411F85EB119A255441295C8FA23B2E5141CDCCCCFC9825544114000000E17A14FE332E5141CDCCCC2C9C2554418FC2F588342E51413D0AD7B39E25544152B81E55332E51411F85EB81A025544185EB5158312E514166666646A325544133333343302E5141F6285C9FA5255441E17A148E2D2E51417B14AEF7A7255441D7A3705D2A2E5141F6285C3FA72554411F85EB51282E5141AE47E10AA6255441EC51B80E272E5141AE47E16AA4255441713D0AD7272E5141B81E852BA1255441F6285C8F282E51419A9999199E25544166666686292E5141AE47E15A9C25544114AE47012A2E514152B81EB59925544114AE47A12B2E5141E17A14CE98255441AE47E14A2C2E5141000000409A255441A4703DEA2D2E51410AD7A3309A255441E17A142E2F2E5141A4703D3A99255441D7A370DD302E5141000000A098255441A4703DCA322E514148E17AC499255441E17A14FE332E5141CDCCCC2C9C25544105000000713D0AC7952E5141AE47E12AE22554410AD7A3D09A2E514185EB51B8E1255441D7A3706D9B2E514148E17A34E825544114AE4761962E514114AE4721E8255441713D0AC7952E5141AE47E12AE225544106000000333333F3392E51418FC2F5E892255441333333933B2E5141EC51B88E952554415C8FC2E53C2E5141666666669625544148E17A743B2E5141B81E857B97255441B81E851B392E51411F85EB9193255441333333F3392E51418FC2F5E8922554410500000052B81E351D2E5141F6285CBFD6255441333333431D2E5141D7A3708DD8255441333333131B2E51419A9999A9D8255441713D0AF71A2E51419A999959D725544152B81E351D2E5141F6285CBFD6255441
+</a>
+
+<b>
+010600000002000000010300000006000000EE000000CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441B81E859B152E514100000060BF2554419A999929142E5141B81E853BBE255441333333A3112E5141A4703D5ABE2554410AD7A340102E514148E17AE4BE255441333333630E2E51415C8FC2C5BE255441F6285C1F0D2E51411F85EB91BD2554417B14AEE70D2E51419A999929BB255441E17A14DE0E2E51417B14AE27B825544114AE47910E2E514152B81E25B5255441666666760C2E5141666666D6B1255441000000800B2E514185EB51F8AF255441B81E85EB0B2E51411F85EB71AD25544148E17A040B2E5141F6285C0FAC255441000000E0092E514152B81E45A82554419A9999E9082E5141295C8F42A5255441AE47E12A082E514100000090A325544133333313022E5141CDCCCCECA4255441E17A145E002E5141713D0A97A125544100000090FE2D5141CDCCCC2C9C255441B81E85CBFB2D5141713D0A179325544166666616F92D51410AD7A37088255441A4703DEAF62D51415C8FC2A57A25544166666696F42D5141666666D671255441F6285C0FEE2D5141A4703D3A7425544133333353F22D5141B81E854B86255441EC51B88EF52D514114AE47F19425544152B81E35F92D5141713D0AD7A425544100000050FB2D514100000030A72554413D0AD793FC2D5141AE47E1EAAA2554417B14AEC7FD2D5141EC51B85EAF2554411F85EB61FE2D5141CDCCCC2CB125544100000030002E5141AE47E19AB42554411F85EBA1012E51411F85EB11B72554413D0AD7C3FF2D51413D0AD783B8255441A4703D8AFD2D514152B81E05BA255441B81E85CBFB2D51410AD7A3E0BA2554410AD7A320FD2D5141EC51B81EBE255441EC51B85E032E5141295C8F32CD2554419A999909052E5141F6285C1FCD255441E17A144E082E51418FC2F5A8CC255441F6285C6F072E5141C3F528CCC9255441B81E85BB092E51418FC2F518C9255441D7A370DD082E5141D7A3707DC725544114AE47A1092E51419A999929C7255441D7A3709D0A2E514152B81E95C82554419A9999090C2E51417B14AE17C82554415C8FC2A50C2E5141D7A370EDC8255441713D0A470E2E514114AE4741C82554419A9999190F2E51417B14AE27CB255441F6285C4F0C2E5141D7A3704DCC255441B81E856B0C2E51419A9999D9CC25544133333393102E51417B14AE77CC255441278007C9102E51415967006CCB2554410351BF12122E51411276E180CB255441F6285CBF132E514152B81EA5CB25544133333313142E5141D7A370BDCC255441713D0A27162E51419A999949CD25544152B81E85172E514114AE47F1CD255441F6285CDF192E514152B81E25CF25544152B81EF51E2E514152B81E35D225544152B81E95212E51419A999959D3255441E17A147E252E5141A4703DEAD42554411F85EB51282E5141666666E6D625544185EB51882C2E514185EB51F8D9255441CFCF5C5A2D2E5141C5A9398ADA2554416969F6932C2E51414A958B82DB25544185EB51E82A2E51413D0AD763DA2554413D0AD783262E5141666666E6D6255441295C8F72232E5141713D0A37D5255441A4703D0A212E5141F6285C5FD425544152B81EF51E2E5141B81E855BD32554419A9999E91A2E5141D7A3701DD125544114AE4711182E5141F6285C4FCF25544152B81E35162E5141B81E858BCE25544152B81E75142E51419A999929CE255441713D0A970F2E514114AE47F1CD2554419A9999D9092E5141B81E851BCE25544152B81EE5062E5141F6285C6FCE25544152B81E95052E514152B81EB5CE2554419A999999042E5141D7A3707DCE255441D7A370ED032E5141AE47E18ACE2554417B14AE87042E514100000000D0255441E17A14EE052E5141295C8F72D32554418FC2F5C8082E51419A999979DA2554417B14AE47052E51419A9999D9DC255441EC51B83E062E5141AE47E1CAE02554411F85EB61072E51417B14AEC7E0255441C3F528DC0F2E51413D0AD7A3E02554419A9999E9202E5141F6285C5FDC255441CDCCCCAC2D2E5141295C8F42DC255441B97766972C2E51411EF81E87DB2554418C73085B2D2E5141DD009A8DDA2554417B14AED72F2E51410AD7A350DC25544133333383332E514148E17A34DF25544166666666362E514100000040E1255441B81E85BB3A2E514185EB51A8E325544185EB51283F2E5141A4703D1AE625544166666616402E5141B81E852BE82554411F85EB21422E51413D0AD793EA2554410AD7A3E0432E514185EB51B8EB255441CDCCCCDC452E5141E17A14BEEC25544185EB5198492E51415C8FC295ED255441A4703D3A4E2E5141F6285C3FEE2554410AD7A300542E5141CDCCCC7CEE2554410AD7A340572E5141295C8FE2ED255441CDCCCC3C592E51411F85EBF1ED255441333333D35B2E5141E17A145EEE2554418FC2F5785E2E51411F85EBF1ED255441713D0A27652E5141E17A14BEEC255441B81E852B6B2E514152B81E05EC255441F6285C2F712E5141713D0AD7EB255441D7A3703D762E5141666666E6EB2554419A9999D9792E514185EB51B8EB25544148E17A947D2E5141E17A14BEEC255441B81E85FB842E5141AE47E1AAEE2554418FC2F5088A2E5141EC51B8EEEF255441D7A370AD912E5141295C8FC2F2255441B3ED136E932E514105F1AA90F325544158D689ED922E514168EFA96EF42554419A999979902E5141C3F5285CF3255441295C8F12892E514152B81EE5F025544166666646822E514166666626EF255441AE47E15A7B2E51417B14AE67ED25544100000000762E5141A4703D1AED2554418FC2F538702E5141CDCCCCDCEC255441B81E858B692E514185EB5158ED2554418FC2F5F8642E514152B81EA5ED255441333333B3602E5141AE47E1AAEE255441333333D35B2E5141295C8F82EF2554415C8FC255582E51410AD7A3B0EF25544185EB5148532E514114AE47A1EF2554418FC2F5B84C2E51413D0AD763EF255441D7A3700D492E514185EB51E8EE255441666666E6442E5141333333D3ED255441B81E85CB422E5141F6285C9FEC25544185EB51F8402E51419A999929EB2554411F85EB21422E514185EB5168EE25544166666696482E514114AE47A1FF2554415C8FC2A55C2E5141AE47E1DA03265441F6285C6F742E5141D7A3703D0826544166666626892E5141C3F5286C0526544166666656892E5141AE47E14A04265441295C8F82872E51419A9999C9032654417B14AEF7862E5141EC51B8AE0126544148E17A44872E51417B14AEC700265441295C8F12892E51418FC2F53802265441AE47E17A8A2E514185EB510803265441295C8FF28A2E5141D7A3702D052654418FC2F5A88E2E5141C3F528AC0426544185EB51389D2E514114AE47B10226544152B81E759E2E5141D7A370ADFE2554410AD7A3E09C2E514152B81EC5FE255441AE47E10A9A2E51417B14AE77FF255441666666D6982E51415C8FC275FA25544114AE47F19A2E5141A4703D0AFA2554411F85EBE19A2E51415C8FC2E5F8255441B81E858B9B2E5141A4703D6AF8255441295C8FA2972E5141D7A3707DF62554418B37EEEF922E514111069872F4255441B4937D72932E5141FC575091F32554419A9999E9962E5141A4703D2AF5255441EC51B83E9B2E5141713D0A27F7255441F6285C6F9D2E5141AE47E14AF825544159A65D669E2E5141A351E89CF82554416AE768439F2E51413635D4BDF82554419371CCCB9F2E5141EC61188AF8255441040C6041A02E5141C59A4048F82554410CCB9F8CA02E5141F7E7E4EEF7255441C3F528ECA02E514133333313F72554413D0AD7F3A12E514152B81E55F0255441EC51B83EA32E51418FC2F5A8EA255441713D0AD7A32E5141713D0A27E725544102833F4BA42E51410D0D747FE025544153D30B0AA62E514168003317E1255441295C8F92A52E5141D7A3702DE7255441C3F528DCA42E51418FC2F5E8EA255441D7A3708DA32E5141AE47E19AF02554411F85EB01A32E5141C3F5289CF625544100000060A22E514114AE4731FA2554419A9999C9A32E5141F6285C7FF92554410AD7A3B0A42E5141C3F5283CF8255441D7A3700DA52E5141A4703DCAF62554413D0AD703A62E51419A999949F52554415C8FC275A72E5141295C8F62F4255441B81E850BAA2E5141666666F6F3255441333333E3AA2E5141666666C6F02554416204208DA92E514145592851EF255441CF20346CA92E51413759DD28EE25544148E17A34A92E51413D0AD723EC2554417B14AE77AA2E51410AD7A3E0EA255441B81E850BAB2E514148E17AF4E825544166666696AA2E51415C8FC225E72554411F85EBD1A72E5141713D0A97E82554415C8FC275A72E51415C8FC2E5E3255441713D0A47A72E5141C3F5280CE0255441713D0AB7A62E5141295C8FC2DE2554417E82B60CA62E5141F37C000EE1255441ECF95C4CA42E5141EC321B6FE025544133333353A42E5141AE47E10AE02554412F498A88A52E5141142DCE34DD2554416DCE7DC9A62E514162C198DDDB2554417B14AEC7A72E5141C3F528CCDA25544152B81E35A92E514148E17A34DA2554416D5C5C64A92E5141BBA7FE54D925544185EB5188A92E5141AE47E1AAD8255441A4EE963AA72E51416D4AA666D62554417AA03C83A32E5141B0489FBED225544155D63E8DA02E51410963D7D4CF2554412585E84F9E2E5141CE76BDA0CD25544156C6B16A992E51415BC971D9C82554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF2554416AA33CDA612E514168E49A299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE1942554412177CFF54C2E5141D57B470294255441B33ADEEF4C2E5141C552280C9425544152B81E153F2E514114AE474192255441CDCCCC3C262E5141333333238F25544105000000295C8FA23B2E5141CDCCCCFC98255441AE47E16A3C2E51411F85EB71982554413D0AD7233D2E51418FC2F55899255441C3F5284C3C2E51411F85EB119A255441295C8FA23B2E5141CDCCCCFC9825544114000000E17A14FE332E5141CDCCCC2C9C2554418FC2F588342E51413D0AD7B39E25544152B81E55332E51411F85EB81A025544185EB5158312E514166666646A325544133333343302E5141F6285C9FA5255441E17A148E2D2E51417B14AEF7A7255441D7A3705D2A2E5141F6285C3FA72554411F85EB51282E5141AE47E10AA6255441EC51B80E272E5141AE47E16AA4255441713D0AD7272E5141B81E852BA1255441F6285C8F282E51419A9999199E25544166666686292E5141AE47E15A9C25544114AE47012A2E514152B81EB59925544114AE47A12B2E5141E17A14CE98255441AE47E14A2C2E5141000000409A255441A4703DEA2D2E51410AD7A3309A255441E17A142E2F2E5141A4703D3A99255441D7A370DD302E5141000000A098255441A4703DCA322E514148E17AC499255441E17A14FE332E5141CDCCCC2C9C25544105000000713D0AC7952E5141AE47E12AE22554410AD7A3D09A2E514185EB51B8E1255441D7A3706D9B2E514148E17A34E825544114AE4761962E514114AE4721E8255441713D0AC7952E5141AE47E12AE225544106000000333333F3392E51418FC2F5E892255441333333933B2E5141EC51B88E952554415C8FC2E53C2E5141666666669625544148E17A743B2E5141B81E857B97255441B81E851B392E51411F85EB9193255441333333F3392E51418FC2F5E8922554410500000052B81E351D2E5141F6285CBFD6255441333333431D2E5141D7A3708DD8255441333333131B2E51419A9999A9D8255441713D0AF71A2E51419A999959D725544152B81E351D2E5141F6285CBFD625544101030000000100000010000000EC51B87E7A2E5141333333B34E255441F656CF3D7C2E5141F00EF62E4B2554413D0AD783882E514185EB517832255441AE47E10A882E5141000000602F25544114AE47118C2E514152B81EE52A2554410AD7A3208D2E5141F6285CFF28255441666666C6872E51417B14AED727255441E17A14FE862E5141F6285CFF2825544166666606832E51417B14AEC729255441666666267C2E5141666666062B255441435BCC15772E514123060B333E255441E130C99E742E5141A909EA87472554415C8FC265732E51418FC2F5284C255441EBF57655772E514146FC96914D2554410E32A88C772E51412E7357A54D255441EC51B87E7A2E5141333333B34E255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538894 - 2955511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000006000000E5000000661FDAE9A42E5141D24D87AADE2554418FC2F588A52E514166666636DD255441B81E85AB9B2E5141AE47E14AD0255441D7A370CD922E5141D7A370ADC42554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF255441A4703DDA612E51419A9999299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE19425544152B81E153F2E514114AE474192255441CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441B81E859B152E514100000060BF2554419A999929142E5141B81E853BBE255441333333A3112E5141A4703D5ABE2554410AD7A340102E514148E17AE4BE255441333333630E2E51415C8FC2C5BE255441F6285C1F0D2E51411F85EB91BD2554417B14AEE70D2E51419A999929BB255441E17A14DE0E2E51417B14AE27B825544114AE47910E2E514152B81E25B5255441666666760C2E5141666666D6B1255441000000800B2E514185EB51F8AF255441B81E85EB0B2E51411F85EB71AD25544148E17A040B2E5141F6285C0FAC255441000000E0092E514152B81E45A82554419A9999E9082E5141295C8F42A5255441AE47E12A082E514100000090A325544133333313022E5141CDCCCCECA4255441E17A145E002E5141713D0A97A125544100000090FE2D5141CDCCCC2C9C255441B81E85CBFB2D5141713D0A179325544166666616F92D51410AD7A37088255441A4703DEAF62D51415C8FC2A57A25544166666696F42D5141666666D671255441F6285C0FEE2D5141A4703D3A7425544133333353F22D5141B81E854B86255441EC51B88EF52D514114AE47F19425544152B81E35F92D5141713D0AD7A425544100000050FB2D514100000030A72554413D0AD793FC2D5141AE47E1EAAA2554417B14AEC7FD2D5141EC51B85EAF2554411F85EB61FE2D5141CDCCCC2CB125544100000030002E5141AE47E19AB42554411F85EBA1012E51411F85EB11B72554413D0AD7C3FF2D51413D0AD783B8255441A4703D8AFD2D514152B81E05BA255441B81E85CBFB2D51410AD7A3E0BA2554410AD7A320FD2D5141EC51B81EBE255441EC51B85E032E5141295C8F32CD2554419A999909052E5141F6285C1FCD255441E17A144E082E51418FC2F5A8CC255441F6285C6F072E5141C3F528CCC9255441B81E85BB092E51418FC2F518C9255441D7A370DD082E5141D7A3707DC725544114AE47A1092E51419A999929C7255441D7A3709D0A2E514152B81E95C82554419A9999090C2E51417B14AE17C82554415C8FC2A50C2E5141D7A370EDC8255441713D0A470E2E514114AE4741C82554419A9999190F2E51417B14AE27CB255441F6285C4F0C2E5141D7A3704DCC255441B81E856B0C2E51419A9999D9CC25544133333393102E51417B14AE77CC2554419A9999D9102E51419A999919CB255441D7A3700D122E5141B81E850BCB255441F6285CBF132E514152B81EA5CB25544133333313142E5141D7A370BDCC255441713D0A27162E51419A999949CD25544152B81E85172E514114AE47F1CD255441F6285CDF192E514152B81E25CF25544152B81EF51E2E514152B81E35D225544152B81E95212E51419A999959D3255441E17A147E252E5141A4703DEAD42554411F85EB51282E5141666666E6D625544185EB51882C2E514185EB51F8D9255441477A6EDB2D2E51418E1391E8DA25544181CF8FF22C2E5141A51928CEDB25544185EB51E82A2E51413D0AD763DA2554413D0AD783262E5141666666E6D6255441295C8F72232E5141713D0A37D5255441A4703D0A212E5141F6285C5FD425544152B81EF51E2E5141B81E855BD32554419A9999E91A2E5141D7A3701DD125544114AE4711182E5141F6285C4FCF25544152B81E35162E5141B81E858BCE25544152B81E75142E51419A999929CE255441713D0A970F2E514114AE47F1CD2554419A9999D9092E5141B81E851BCE25544152B81EE5062E5141F6285C6FCE25544152B81E95052E514152B81EB5CE2554419A999999042E5141D7A3707DCE255441D7A370ED032E5141AE47E18ACE2554417B14AE87042E514100000000D0255441E17A14EE052E5141295C8F72D32554418FC2F5C8082E51419A999979DA2554417B14AE47052E51419A9999D9DC255441EC51B83E062E5141AE47E1CAE02554411F85EB61072E51417B14AEC7E0255441C3F528DC0F2E51413D0AD7A3E02554419A9999E9202E5141F6285C5FDC255441CDCCCCAC2D2E5141295C8F42DC25544165F42DFB2C2E51416C5333D4DB255441CB5A94E12D2E5141F13E85ECDA2554417B14AED72F2E51410AD7A350DC25544133333383332E514148E17A34DF25544166666666362E514100000040E1255441B81E85BB3A2E514185EB51A8E325544185EB51283F2E5141A4703D1AE625544166666616402E5141B81E852BE82554411F85EB21422E51413D0AD793EA2554410AD7A3E0432E514185EB51B8EB255441CDCCCCDC452E5141E17A14BEEC25544185EB5198492E51415C8FC295ED255441A4703D3A4E2E5141F6285C3FEE2554410AD7A300542E5141CDCCCC7CEE2554410AD7A340572E5141295C8FE2ED255441CDCCCC3C592E51411F85EBF1ED255441333333D35B2E5141E17A145EEE2554418FC2F5785E2E51411F85EBF1ED255441713D0A27652E5141E17A14BEEC255441B81E852B6B2E514152B81E05EC255441F6285C2F712E5141713D0AD7EB255441D7A3703D762E5141666666E6EB2554419A9999D9792E514185EB51B8EB25544148E17A947D2E5141E17A14BEEC255441B81E85FB842E5141AE47E1AAEE2554418FC2F5088A2E5141EC51B8EEEF255441D7A370AD912E5141295C8FC2F22554419A9999E9962E5141A4703D2AF5255441EC51B83E9B2E5141713D0A27F7255441BA136EC39B2E51419B351F6CF7255441F31B28AE9B2E51416DB0CD9BF725544157EEC1A49B2E5141E2A49BACF7255441F3CA94569B2E5141FDFBE94FF8255441295C8FA2972E5141D7A3707DF62554419A999979902E5141C3F5285CF3255441295C8F12892E514152B81EE5F025544166666646822E514166666626EF255441AE47E15A7B2E51417B14AE67ED25544100000000762E5141A4703D1AED2554418FC2F538702E5141CDCCCCDCEC255441B81E858B692E514185EB5158ED2554418FC2F5F8642E514152B81EA5ED255441333333B3602E5141AE47E1AAEE255441333333D35B2E5141295C8F82EF2554415C8FC255582E51410AD7A3B0EF25544185EB5148532E514114AE47A1EF2554418FC2F5B84C2E51413D0AD763EF255441D7A3700D492E514185EB51E8EE255441666666E6442E5141333333D3ED255441B81E85CB422E5141F6285C9FEC255441240F2CFC402E5141B103B208EB2554411F85EB21422E514185EB5168EE25544166666696482E514114AE47A1FF2554415C8FC2A55C2E5141AE47E1DA03265441F6285C6F742E5141D7A3703D0826544166666626892E5141C3F5286C0526544166666656892E5141AE47E14A04265441295C8F82872E51419A9999C9032654417B14AEF7862E5141EC51B8AE0126544148E17A44872E51417B14AEC700265441295C8F12892E51418FC2F53802265441AE47E17A8A2E514185EB510803265441295C8FF28A2E5141D7A3702D052654418FC2F5A88E2E5141C3F528AC0426544185EB51389D2E514114AE47B10226544152B81E759E2E5141D7A370ADFE2554410AD7A3E09C2E514152B81EC5FE255441AE47E10A9A2E51417B14AE77FF255441666666D6982E51415C8FC275FA25544114AE47F19A2E5141A4703D0AFA2554411F85EBE19A2E51415C8FC2E5F8255441B81E858B9B2E5141A4703D6AF8255441F6D7E75A9B2E5141818F6656F8255441E294EBA79B2E514116752AB4F7255441F74233C99B2E5141B00EC46DF7255441F6285C6F9D2E5141AE47E14AF8255441F42996619E2E5141B5CA48A7F82554416A0AA2B09F2E51418701EF8BF8255441B81E856BA02E5141000000D0F7255441C3F528ECA02E514133333313F72554413D0AD7F3A12E514152B81E55F0255441EC51B83EA32E51418FC2F5A8EA255441713D0AD7A32E5141713D0A27E725544133333353A42E5141AE47E10AE0255441B606CCE6A42E514145AE74AFDE255441DD516D8EA62E5141852D8F4DDF2554417B14AE07A62E5141F6285C1FE1255441295C8F92A52E5141D7A3702DE7255441C3F528DCA42E51418FC2F5E8EA255441D7A3708DA32E5141AE47E19AF02554411F85EB01A32E5141C3F5289CF625544100000060A22E514114AE4731FA2554419A9999C9A32E5141F6285C7FF92554410AD7A3B0A42E5141C3F5283CF8255441D7A3700DA52E5141A4703DCAF62554413D0AD703A62E51419A999949F52554415C8FC275A72E5141295C8F62F4255441B81E850BAA2E5141666666F6F3255441333333E3AA2E5141666666C6F0255441000000A0A82E5141F6285C4FEE25544148E17A34A92E51413D0AD723EC2554417B14AE77AA2E51410AD7A3E0EA255441B81E850BAB2E514148E17AF4E825544166666696AA2E51415C8FC225E72554414A44360FA82E51417228DBF2E72554413E8AB299A72E514108C043DAE3255441713D0A47A72E5141C3F5280CE0255441713D0AB7A62E5141295C8FC2DE255441BF893695A62E5141B7596143DF255441661FDAE9A42E5141D24D87AADE25544105000000295C8FA23B2E5141CDCCCCFC98255441AE47E16A3C2E51411F85EB71982554413D0AD7233D2E51418FC2F55899255441C3F5284C3C2E51411F85EB119A255441295C8FA23B2E5141CDCCCCFC9825544114000000E17A14FE332E5141CDCCCC2C9C2554418FC2F588342E51413D0AD7B39E25544152B81E55332E51411F85EB81A025544185EB5158312E514166666646A325544133333343302E5141F6285C9FA5255441E17A148E2D2E51417B14AEF7A7255441D7A3705D2A2E5141F6285C3FA72554411F85EB51282E5141AE47E10AA6255441EC51B80E272E5141AE47E16AA4255441713D0AD7272E5141B81E852BA1255441F6285C8F282E51419A9999199E25544166666686292E5141AE47E15A9C25544114AE47012A2E514152B81EB59925544114AE47A12B2E5141E17A14CE98255441AE47E14A2C2E5141000000409A255441A4703DEA2D2E51410AD7A3309A255441E17A142E2F2E5141A4703D3A99255441D7A370DD302E5141000000A098255441A4703DCA322E514148E17AC499255441E17A14FE332E5141CDCCCC2C9C25544105000000713D0AC7952E5141AE47E12AE22554410AD7A3D09A2E514185EB51B8E1255441D7A3706D9B2E514148E17A34E825544114AE4761962E514114AE4721E8255441713D0AC7952E5141AE47E12AE225544106000000333333F3392E51418FC2F5E892255441333333933B2E5141EC51B88E952554415C8FC2E53C2E5141666666669625544148E17A743B2E5141B81E857B97255441B81E851B392E51411F85EB9193255441333333F3392E51418FC2F5E8922554410500000052B81E351D2E5141F6285CBFD6255441333333431D2E5141D7A3708DD8255441333333131B2E51419A9999A9D8255441713D0AF71A2E51419A999959D725544152B81E351D2E5141F6285CBFD6255441
+</a>
+
+<b>
+010600000001000000010300000037000000BD08000066EC9D7EB52C51410DA928308727544148E17A74AE2C514114AE47A1862754411F85EBB1A52C51419A9999D9872754418FC2F598A02C5141AE47E1EA862754413D0AD7D3952C5141E17A146E89275441E17A144E912C51410AD7A310882754417B14AE378E2C5141666666B6882754410AD7A340872C5141CDCCCCBC8D275441D7A3700D7C2C5141F6285CBF8F275441CDCCCC8C7B2C51415C8FC2E5902754418FC2F5787D2C51418FC2F5C891275441AE47E1AA792C5141713D0A67A427544114AE47C16D2C5141EC51B81EA727544185EB51C8722C5141C3F528FCA8275441B81E856B722C5141713D0A47AB275441666666266C2C514152B81E95B0275441E17A143E662C5141EC51B8FEB2275441AE47E13A5E2C5141E17A146EA92754418FC2F558552C5141C3F5284CA82754417B14AE27542C514148E17A84AB275441EC51B83E4E2C5141CDCCCC0CAE27544166666656482C5141B81E851BBA2754410AD7A3C0472C5141713D0A17BC275441EC51B83E522C5141C3F5282CC2275441000000B0562C5141000000D0BE275441000000105A2C514133333323C027544166666636602C51419A9999B9BD2754410AD7A3106B2C514166666616BE27544114AE47716E2C514148E17A04C02754418FC2F5986D2C5141B81E85ABC22754410AD7A360692C514148E17A64C3275441666666266C2C5141D7A3704DC9275441A4703DDA702C514166666656C82754419A999979722C51411F85EB41C8275441A4703D4A732C5141F6285C1FCD2754413D0AD7B37A2C51415C8FC235CE27544114AE47117C2C5141F6285C9FD12754419A9999397B2C5141CDCCCC6CDA275441B81E854B792C514185EB51E8DA275441E17A14DE732C5141CDCCCC6CDA275441EC51B88E752C514166666646D4275441A4703D2A6F2C5141C3F528FCD12754411F85EB41692C51411F85EBC1D4275441EC51B85E612C514148E17A14D7275441A4703DCA5D2C5141B81E85ABCC27544114AE47E1522C51415C8FC295CC275441713D0A77502C514114AE47C1C8275441295C8FA2492C514166666656CA27544185EB5138462C5141AE47E1AAD0275441D7A3700D492C5141A4703D6AD2275441CDCCCC8C4D2C5141AE47E16ACF275441B81E858B542C5141AE47E1EAD02754411F85EB214E2C5141295C8F92E12754418FC2F548662C5141666666E6ED275441F6285C7F692C5141A4703D0AF62754419A999959742C514148E17A54F8275441333333C3762C514152B81E65FD2754419A9999F9702C51417B14AE8700285441666666266C2C514148E17A34FF2754419A9999196A2C51419A9999E9FC275441666666766A2C514152B81E05FA275441CDCCCC5C662C51413D0AD723FA275441CDCCCCAC642C5141F6285C4FFC275441000000F0602C5141E17A14BEFA275441295C8F12642C5141666666B6F42754415C8FC275592C5141B81E859BF72754419A9999E9532C51410AD7A350F527544152B81E75482C5141666666D6DC27544152B81EB5432C5141F6285CFFDC275441D7A370ED3D2C5141AE47E1DACF27544152B81E75362C5141F6285CDFB727544133333313342C51417B14AEB7BA275441713D0A67372C5141CDCCCC0CC927544100000070312C5141295C8FF2DA27544152B81E95332C5141333333E3DF275441E17A143E382C514114AE4701E1275441713D0AE73C2C5141A4703D0ADB2754419A999989402C5141000000F0E1275441B81E856B3F2C51410AD7A360EC275441EC51B85E3D2C5141CDCCCC7CF427544148E17AD42D2C5141000000E0F727544114AE4741302C514114AE4741FB2754411F85EBD1302C51411F85EBD1FB27544185EB5138332C5141713D0A07FE27544185EB5178332C51411F85EBB1FE275441CDCCCCCC332C514166666676FF27544166666616342C5141713D0AD7FF2754417B14AEB7342C5141B81E858B00285441F6285CAF352C5141B81E857B0128544100000010362C51410AD7A330022854410AD7A360372C514148E17AF40428544166666626392C5141A4703D0A0928544185EB5148392C51417B14AE470A2854419A999969392C5141AE47E15A0B285441D7A370BD392C5141E17A14BE0B285441EC51B81E3A2C51415C8FC2550C2854419A9999893A2C514152B81E250D285441000000303B2C51418FC2F5B80F2854411F85EBA1402C514114AE4791112854415C8FC275482C5141B81E85FB1A28544152B81EB54E2C5141295C8F721B2854413D0AD7734F2C5141A4703D3A21285441CDCCCC3C4B2C5141295C8F6223285441AE47E17A4C2C5141000000302528544185EB51E84C2C51410AD7A3B0252854413D0AD7B34E2C5141EC51B84E2628544152B81E05542C514148E17A242528544166666666582C514114AE47612728544148E17AF4542C514148E17A742C285441A4703DBA552C5141000000802D285441AE47E1CA562C5141000000002F285441B81E856B572C514152B81EB52F285441C3F5282C592C514148E17A44312854410AD7A3D05A2C51418FC2F578322854417B14AE275B2C5141AE47E1EA34285441713D0A875B2C5141295C8F4237285441333333735B2C51417B14AEC739285441CDCCCC6C5C2C514114AE47313B285441A4703DCA5D2C51418FC2F5283D285441F6285C6F5F2C51411F85EB013F285441A4703D1A612C514152B81E7540285441EC51B8FE642C5141E17A144E43285441C3F528AC652C51418FC2F5C843285441A4703D4A662C514148E17A6445285441295C8FD2662C5141D7A3708D46285441EC51B88E672C5141C3F528CC4728544114AE4761682C51413D0AD79348285441C3F528AC692C5141EC51B88E492854410AD7A3206B2C51418FC2F5F849285441F6285C6F6C2C514114AE47014A285441F6285CDF6D2C51411F85EB414A28544152B81E656E2C5141EC51B88E4A2854417B14AE476E2C5141333333634B2854415C8FC295722C5141E17A14BE55285441B81E85EB742C5141A4703D8A5F285441CDCCCCEC752C5141AE47E16A602854410AD7A320772C51418FC2F53860285441000000D0782C5141F6285CAF5C2854413D0AD733792C5141CDCCCC3C52285441A4703D7A762C51413D0AD74346285441A4703D2A782C51413D0AD7B343285441713D0A677A2C5141B81E85AB43285441F6285C7F7F2C51417B14AE073928544100000040812C514100000010392854413D0AD7F3812C5141F6285C6F3628544152B81EB5832C51418FC2F5583A28544114AE47D1842C514185EB51083D28544166666666852C51413D0AD76342285441E17A145E852C51418FC2F56844285441B81E858B842C51413D0AD7A3492854411F85EB81802C5141EC51B80E592854410AD7A3E07E2C514185EB51D85C285441C3F528CC7C2C5141666666565E285441CDCCCCCC792C5141B81E85CB5F28544185EB51F8772C5141CDCCCC0C62285441D7A3705D772C514148E17A34652854410AD7A310792C5141CDCCCCDC66285441666666167A2C51417B14AE27672854411F85EB417A2C5141333333C3682854417B14AE477A2C51415C8FC29569285441D7A3701D7A2C51413D0AD7636A2854410AD7A390792C5141B81E855B6B2854418FC2F5B8782C5141EC51B8FE6C285441F6285C2F792C5141E17A146E6D2854418FC2F5287A2C5141295C8F526E2854418FC2F5C87A2C51410AD7A3306F2854410AD7A3507B2C514152B81ED56F285441666666D67B2C51413D0AD7A370285441000000507C2C5141C3F5288C7128544152B81E757C2C5141E17A144E722854419A9999497C2C5141295C8FF272285441CDCCCCEC7B2C5141F6285CCF732854419A9999A97C2C514185EB515874285441713D0AA77D2C51410AD7A3A07128544133333333812C51419A9999397128544166666646862C5141CDCCCC5C6D285441A4703D0A8E2C51413D0AD7036C2854417B14AE27902C51411F85EBE16728544152B81E25932C514148E17AA4662854410AD7A3C0992C514185EB513867285441AE47E15A9B2C51411F85EB7167285441666666569C2C5141295C8F526528544152B81EF5A52C5141666666E66228544148E17A94A52C51416666666660285441D7A370FD9E2C5141C3F5282C60285441CDCCCC9C992C5141CDCCCC8C6028544152B81E15942C5141000000305A28544114AE4711952C5141E17A14FE52285441EC51B89E972C5141F6285CAF50285441295C8F52A22C514148E17A344F285441295C8FC2AD2C51413333336352285441295C8FE2BF2C5141000000F04B285441EC51B80EC32C5141E17A142E51285441C3F528ECC62C5141AE47E15A52285441B81E858BC92C5141A4703D5A4E285441B81E85DBCC2C514152B81E2550285441F6285CAFCD2C5141F6285CDF53285441E17A149ED12C5141B81E850B55285441295C8F72D42C5141333333634F28544185EB5158D72C5141A4703D5A4E285441B81E856BDF2C51415C8FC2D55028544166666636E12C5141333333035A285441C3F5286CE32C514114AE47915C2854417B14AEE7E32C5141E17A14BE61285441F6285CDFE62C5141A4703DEA62285441AE47E15AE72C51416666666667285441EC51B80EE32C5141CDCCCC3C6A2854415C8FC285E02C51418FC2F5286A2854411F85EBB1DD2C5141713D0AB76E285441C3F5281CE22C514185EB51187028544185EB5198E42C51415C8FC2556D28544100000040E62C5141B81E853B6E285441713D0AE7E12C5141B81E85DB742854413D0AD773DE2C5141C3F5283C7428544185EB5118D92C5141B81E858B7A285441000000C0D82C5141713D0AA77A285441B81E853BD82C51419A9999F97A28544114AE47B1D72C51413D0AD7837B285441713D0A27D72C5141F6285CBF7C28544185EB51B8D62C5141EC51B84E7D285441295C8F12D62C5141F6285CEF7D285441F6285C1FD52C514148E17A847E285441713D0AA7D32C51415C8FC2357F2854419A9999F9D02C5141A4703D4A8028544114AE4711CD2C5141E17A14EE812854413D0AD7A3C82C514185EB51388428544148E17A34C52C514152B81E4586285441A4703DAAC42C5141EC51B8AE86285441F6285C3FC22C5141000000408B2854413D0AD7F3BF2C51419A9999C98C285441CDCCCC0CB92C5141000000508E285441D7A3709DAE2C5141B81E85FB8B285441295C8FF2A52C5141F6285C6F8F2854418FC2F588962C514185EB51B890285441295C8F828E2C5141CDCCCC5C91285441A4703DAA892C514148E17A2493285441F6285C6F892C514148E17A8496285441E17A14AE8B2C5141E17A14AE962854417B14AE178D2C5141A4703D2A9528544148E17AF48F2C51418FC2F5F894285441333333C3972C5141D7A3705D9E2854419A9999C9992C5141713D0A679E285441F6285C4F9C2C5141713D0A57A2285441AE47E15A952C5141713D0A57A22854417B14AEC7942C514152B81E05A428544114AE4711982C514152B81E45A72854413D0AD7F3972C5141E17A146EAC28544166666626972C5141E17A146EAC285441C3F5280C952C51419A999999A928544166666626912C514166666696AB28544185EB51488E2C5141B81E85ABB0285441333333338F2C5141D7A370BDB1285441EC51B82E922C5141E17A147EAE2854411F85EBB1932C5141295C8FF2AF285441B81E858B8F2C514100000090B52854413D0AD7938E2C514100000070B7285441295C8FF28C2C51411F85EB91B7285441C3F528AC8B2C5141CDCCCC8CB92854411F85EB218A2C51417B14AE27B92854410AD7A3A08B2C5141713D0A67B4285441713D0A878A2C5141F6285C2FAD28544185EB51688B2C5141AE47E14AAB285441B81E853B8B2C5141E17A142EA928544185EB5148882C514148E17A44A9285441CDCCCCCC872C5141A4703D9AA42854418FC2F558862C5141B81E857BA52854413D0AD743832C514148E17AF4A4285441A4703D2A822C514114AE4711A728544148E17A347E2C514114AE4751A6285441E17A14CE792C514166666676A72854418FC2F5A8782C5141F6285CEFA6285441000000D0762C5141A4703DCAA5285441D7A3706D772C51413D0AD783A4285441295C8FC2792C51419A999929A42854419A9999097B2C5141C3F528CCA2285441333333537D2C5141F6285C9FA2285441E17A143E812C5141C3F528CCA228544185EB5128852C5141B81E858BA3285441AE47E1BA852C51415C8FC2B5A2285441EC51B80E842C5141E17A14BEA1285441F6285C5F812C514148E17AD4A12854415C8FC205812C5141CDCCCC1CA028544152B81EF5822C5141A4703D8A9F2854413D0AD703842C5141EC51B80E9F285441000000C0832C51417B14AE979C285441CDCCCCAC812C5141B81E858B9B285441D7A3708D7E2C51417B14AE879728544152B81E957D2C5141000000E095285441295C8FA27F2C514148E17A6494285441333333E3822C51413D0AD7C393285441F6285CAF832C5141AE47E12A92285441E17A14DE7D2C5141E17A14AE92285441666666467A2C51413D0AD72391285441EC51B8EE792C51413D0AD7338F2854417B14AE877B2C5141A4703D4A8E285441295C8FB27D2C5141295C8F428F285441713D0AC7802C514185EB51B88D28544166666606862C514148E17AD48F285441295C8FD2862C514148E17A848E2854410AD7A300892C5141713D0A678E2854418FC2F5788A2C51418FC2F5B88B28544148E17AF48B2C514152B81E958A285441295C8FE2932C5141000000D088285441F6285C4F952C5141AE47E1BA872854411F85EB31952C51415C8FC25585285441B81E854B8E2C5141713D0A47852854413D0AD763882C5141AE47E1DA87285441A4703D3A862C514166666646882854411F85EB617A2C51410AD7A3407C28544133333303782C5141EC51B8DE7B28544100000070732C5141B81E858B7A285441AE47E1FA6E2C5141F6285C6F7D285441E17A144E702C51415C8FC21580285441AE47E1FA6E2C514114AE4741822854419A9999296A2C51415C8FC2C58128544148E17A64672C51416666665683285441333333D3652C5141333333A3882854417B14AE17622C5141EC51B81E89285441AE47E10A602C5141A4703DAA872854415C8FC2855D2C51410AD7A3F087285441333333335C2C5141AE47E14A88285441B81E854B5A2C5141295C8FC2882854411F85EB91592C514185EB512889285441333333C3582C514114AE47B1892854415C8FC275582C5141713D0A178A285441B81E857B582C51410AD7A3F08A2854410AD7A380582C51413D0AD7B38B2854415C8FC275582C514114AE47818C285441713D0A47582C5141295C8F228D285441A4703DFA572C51417B14AE978D2854415C8FC255572C5141666666568E2854410AD7A3B05A2C5141295C8F928E285441333333035D2C5141295C8FD28E285441295C8F325F2C514114AE47418F28544185EB51A8612C51417B14AE079028544148E17AB4622C51411F85EB819028544166666686632C5141F6285C1F912854413D0AD763642C5141B81E85EB91285441713D0A07652C5141713D0A7791285441713D0AF7672C51418FC2F5D88F2854410AD7A320692C5141333333538F2854417B14AE676B2C514185EB51D88E28544152B81E056C2C5141CDCCCCCC8E2854419A9999B96C2C5141295C8FD28E2854413D0AD7336D2C51415C8FC2F58E285441CDCCCC9C6D2C5141000000308F2854411F85EB916E2C51410AD7A37090285441000000F06F2C5141B81E856B9228544148E17A64702C51418FC2F5C8922854419A999999712C5141AE47E11A93285441C3F5282C742C5141666666269328544152B81E15752C51418FC2F54893285441A4703DCA752C51417B14AE77932854415C8FC255762C5141F6285CCF93285441333333F3762C514185EB51789428544185EB51E8772C5141333333F3952854411F85EBC17B2C51413D0AD71395285441B81E85AB7C2C5141666666969728544152B81E95802C514114AE47819C285441F6285C2F802C514114AE47D1A02854419A9999597F2C5141C3F528DCA0285441000000407E2C514114AE47E19E28544185EB51787E2C51417B14AE979C28544148E17A447C2C5141B81E851B9C2854410AD7A3C07C2C51419A9999199F28544114AE47D17A2C514100000020A1285441D7A3705D792C5141333333F3A028544152B81E65782C51417B14AE17A2285441C3F5287C782C5141CDCCCC3CA328544100000000782C5141F6285CCFA328544152B81E45752C51419A999929A4285441E17A145E722C51411F85EB81A7285441F6285C9F712C5141F6285C5FA72854418FC2F518712C5141E17A144EA82854418FC2F548742C5141E17A144EA8285441B81E851B762C51419A999959A828544100000080782C5141000000A0A8285441C3F528CC792C514148E17A94A82854418FC2F5D87B2C514148E17AD4A82854419A9999197E2C5141A4703DDAA82854411F85EB31802C5141B81E852BA9285441B81E855B812C51418FC2F588A92854411F85EBE1822C5141C3F5282CAA285441F6285CBF832C51419A9999C9AA2854415C8FC245842C514114AE4761AB285441A4703D7A842C5141713D0AE7AB2854415C8FC285842C514133333373AC285441CDCCCCDC832C5141EC51B8BEAC285441C3F528DC822C5141F6285C3FAD285441A4703DCA812C5141295C8FE2AD2854415C8FC2C57E2C51411F85EB71AE285441F6285C5F7B2C51411F85EBB1B42854415C8FC2C5702C514152B81EE5B3285441000000206C2C514185EB5198B1285441000000206B2C5141F6285C3FAA285441CDCCCC2C682C5141F6285C7FAA2854419A9999B9642C514185EB51D8B02854419A9999F95D2C5141B81E854BAF2854410AD7A340582C51417B14AE27B328544148E17A54582C51419A9999E9B3285441A4703D7A582C514148E17AE4B4285441295C8FB2582C5141EC51B84EB6285441295C8FF2582C51411F85EB81B7285441A4703D7A592C51417B14AE37B828544152B81E455A2C5141713D0A87B92854418FC2F5485B2C5141B81E853BBB285441666666365C2C5141333333F3BC285441EC51B8FE5C2C5141A4703DBABD285441F6285CCF5D2C51413D0AD753BE28544148E17A745E2C5141295C8FA2BE28544114AE47315F2C5141CDCCCC2CBF28544166666636602C514185EB5158BF285441A4703D9A642C51417B14AE37BF2854413D0AD723682C5141A4703D7ABE2854413D0AD713692C51415C8FC2F5BE28544185EB51C86A2C514152B81E95BE28544148E17AE46B2C5141CDCCCC6CBE285441000000306D2C5141295C8F42BE28544185EB51386E2C51419A999989BE2854417B14AEC76F2C5141F6285CEFBE285441F6285CCF702C514100000090BF285441B81E853B712C5141F6285C0FC0285441333333E3712C5141C3F528BCC0285441A4703D8A722C5141F6285C5FC1285441E17A14DE722C5141F6285CFFC12854410AD7A3F0722C5141E17A146EC228544148E17A94722C5141D7A3700DC3285441295C8F32722C51410AD7A340C328544152B81E05722C51411F85EBA1C3285441713D0AF7712C514152B81E05C4285441A4703DEA712C514152B81E75C4285441D7A3702D722C514152B81E05C528544148E17A84722C5141B81E859BC528544185EB51A8722C5141CDCCCC4CC6285441E17A14CE722C51417B14AE27C728544152B81EE5722C51418FC2F558C8285441AE47E12A732C5141295C8F42C9285441AE47E13A742C51419A999959CC28544114AE4741752C5141AE47E15ACF2854410AD7A320762C5141713D0A47D22854418FC2F5F8762C514185EB5118D3285441A4703DAA772C514185EB5148D42854411F85EB01782C5141E17A14EED428544152B81E15782C51410AD7A370D5285441EC51B88E782C514185EB51F8D6285441CDCCCC1C792C51418FC2F598D8285441B81E85BB792C514100000060D92854413D0AD7537A2C5141D7A3702DDA285441CDCCCC0C7B2C51410AD7A300DB285441F6285C5F7B2C51410AD7A370DB285441D7A3708D7B2C5141295C8F22DC28544114AE47D17B2C51419A9999B9DC285441D7A3702D7C2C5141CDCCCCFCDD285441295C8F927C2C5141333333D3DE285441000000707D2C5141B81E855BE02854419A9999C97D2C5141EC51B8EEE0285441F6285C2F7E2C514185EB5138E1285441A4703D4A7F2C514148E17A84E1285441A4703D9A7F2C5141C3F528ACE128544152B81EF57F2C514152B81E05E2285441713D0A47802C514152B81EC5E22854410AD7A3B0802C514133333313E3285441AE47E14A812C5141EC51B82EE3285441713D0AE7812C514185EB5128E328544185EB51E8822C51418FC2F5E8E2285441CDCCCC5C832C5141713D0AE7E22854418FC2F5F8832C5141D7A370EDE22854417B14AE37852C51413D0AD7F3E22854411F85EB91852C5141C3F528DCE22854419A9999D9852C5141666666B6E2285441B81E85BB862C5141A4703DFAE1285441CDCCCC8C872C514133333373E1285441EC51B86E882C514152B81E45E12854411F85EBB1882C51413D0AD733E1285441E17A14FE882C51413D0AD7E3E028544133333313892C5141F6285CAFE0285441D7A3708D892C51415C8FC225E028544114AE47D1892C51415C8FC225E0285441F6285C1F8A2C51410AD7A330E0285441295C8F428B2C5141E17A147EDF285441CDCCCC8C8C2C51413D0AD793DE285441713D0AB78D2C514148E17AE4DD28544152B81E55922C514185EB5198DD285441295C8F42982C5141295C8FF2DB285441333333B3982C5141AE47E15ADA2854419A9999099D2C5141D7A370BDDA285441A4703DBA9F2C5141D7A370EDD82854411F85EB819F2C5141EC51B82ED628544185EB51C89F2C51418FC2F588D4285441E17A14BE992C514185EB5108D0285441B81E85BB9A2C51413D0AD773CD28544114AE47C1982C5141E17A14FEC9285441A4703DDA992C5141666666F6C72854418FC2F5989C2C51418FC2F5C8C8285441F6285CAF9E2C5141CDCCCC4CCC285441A4703D8AA12C51418FC2F568CC285441C3F5287CA12C5141CDCCCC3CC828544152B81EB59C2C5141F6285CCFC628544152B81EB59C2C514100000070C52854417B14AED79A2C514148E17AF4C32854418FC2F588982C51418FC2F5B8C4285441295C8FD2972C51419A999969C728544166666616942C51419A999999C5285441295C8F32942C5141713D0A67C3285441F6285CFF962C514185EB51B8BF2854418FC2F5B8972C5141B81E85DBBE285441AE47E14A9A2C51419A999949BF28544148E17AD49B2C5141B81E857BC1285441000000909F2C5141C3F528BCC3285441EC51B8AEA32C5141EC51B8AEC32854415C8FC275A42C514148E17AB4C2285441C3F5285CA52C5141A4703D5AC1285441713D0AF7A72C5141B81E850BC1285441295C8FE2A92C5141E17A149EBF285441713D0A47AE2C51415C8FC2D5BF285441E17A146EAF2C51418FC2F508BD285441B81E853BB22C514133333333BD285441713D0A27B42C514100000000C0285441666666F6BA2C51413D0AD7B3C1285441B81E856BBE2C51411F85EBD1C5285441C3F528BCC42C5141333333B3C628544114AE47B1C32C514114AE47E1C028544148E17AB4C62C51418FC2F5D8BE2854410AD7A3E0C92C514148E17A64BF28544148E17A24CA2C514148E17A94BF285441C3F5284CCA2C5141000000D0BF285441AE47E12ACB2C514152B81EE5C12854411F85EBC1CB2C51413D0AD713C3285441CDCCCCCCCC2C51415C8FC285C4285441EC51B82ECE2C5141B81E856BC8285441C3F528FCCD2C5141EC51B84ECC2854419A9999F9CE2C514100000010CD28544148E17A44D22C514114AE4781CC285441666666C6D32C5141F6285CEFCD285441AE47E1DAD42C5141713D0A27CE2854419A9999C9D52C5141000000A0CF285441CDCCCCECD52C51419A999909D0285441CDCCCCECD52C514185EB5178D02854419A9999C9D52C51418FC2F5F8D0285441D7A3709DD52C514114AE4751D12854413D0AD743D42C514133333323D1285441B81E857BD32C51413D0AD7B3CF2854418FC2F588D22C514152B81ED5CF285441295C8FA2D22C5141A4703D0AD1285441713D0AD7D32C5141295C8F92D2285441B81E857BD32C514166666666D42854418FC2F588CF2C51418FC2F558D5285441E17A148ECE2C5141E17A145ED42854419A999959CD2C51417B14AEC7D3285441713D0A67CC2C51418FC2F5E8D02854411F85EB31CB2C514133333323D12854410AD7A3D0C82C5141A4703D4AD0285441AE47E10AC92C51411F85EBC1D12854410AD7A310CB2C51413D0AD723D42854418FC2F508CE2C51410AD7A3A0D4285441CDCCCCACCD2C5141E17A14DED528544133333343CB2C51415C8FC2D5D528544148E17A24CC2C51415C8FC2C5D828544114AE47E1CB2C514148E17A24DA2854413D0AD7E3C92C51418FC2F508DC2854418FC2F508CE2C51413D0AD753DC285441AE47E1FACE2C514133333303DD285441CDCCCC2CCF2C5141C3F528DCDD2854410AD7A340D02C51410AD7A340DE285441D7A370ADD02C5141D7A3706DDF2854410AD7A3C0D12C5141713D0A97DF2854417B14AE67D22C514114AE4711DF2854418FC2F5F8D32C51419A999959DB2854415C8FC235D52C51419A999959DB28544148E17AD4D52C5141333333C3DD2854415C8FC265D72C514152B81EF5DD285441713D0AC7D92C51410AD7A310DB2854411F85EBE1DA2C5141C3F5281CDB285441A4703D8ADC2C514185EB5148DB2854410AD7A370DD2C51418FC2F578DB28544148E17A94DE2C5141666666D6DB285441AE47E1DAE42C51411F85EB11DB2854418FC2F5E8E42C51410AD7A340DE285441E17A145EE82C5141CDCCCCECDD2854418FC2F5F8E82C5141B81E85DBDE285441295C8F82EA2C5141CDCCCCECDD2854410AD7A3D0EC2C5141713D0A17DE2854410AD7A370F02C5141666666A6DD285441295C8F32F22C5141B81E859BDC28544185EB5108F22C5141C3F5283CDB285441C3F5281CF02C5141A4703DEAD9285441333333F3EA2C514100000050D928544133333363EB2C5141B81E852BD728544133333323E92C514152B81EE5D628544148E17AA4E82C5141E17A145ED9285441F6285CCFE32C514148E17A14DA2854410AD7A3A0E02C51411F85EB41D9285441F6285C8FE12C51417B14AE47D728544100000040E42C514152B81EE5D62854413D0AD7B3E32C51411F85EB31D528544148E17AF4E02C5141000000B0D5285441295C8F92E02C5141713D0A67D6285441E17A142EDC2C514133333383D6285441F6285C7FDD2C514114AE47D1D8285441EC51B80EDD2C5141C3F528DCD9285441EC51B8CEDA2C51410AD7A3C0D9285441D7A3707DD92C51410AD7A320D62854410AD7A3C0DA2C514133333373D2285441C3F5288CE22C5141000000A0D1285441A4703D9AE22C514152B81EC5CE285441D7A3701DE12C514148E17A84CD285441E17A149EE62C514133333393CB285441B81E857BED2C5141EC51B8AECE285441AE47E13AEF2C51418FC2F538CC28544114AE4751EC2C514148E17AF4C928544152B81EC5EC2C5141000000A0C7285441295C8F42EE2C51419A9999E9C62854415C8FC2A5EE2C5141AE47E14AC5285441B81E85ABEB2C51418FC2F5A8BF285441AE47E18AEA2C5141D7A3706DBA285441CDCCCCCCEB2C51419A999989B82854417B14AE77E92C51415C8FC285B4285441F6285C8FE92C51415C8FC2B5B22854410AD7A3B0DF2C51415C8FC255B628544114AE47C1DF2C5141AE47E18AB12854410AD7A380E12C51417B14AE97AD2854415C8FC245E02C5141AE47E18AA828544148E17A54DE2C51413D0AD793A9285441713D0AD7DC2C5141EC51B88EAC285441333333C3D82C5141EC51B85EAE28544166666696D82C5141EC51B8BEAD285441D7A3701DDB2C514133333393AC285441295C8F02DD2C51415C8FC295AA28544148E17AC4DD2C5141713D0A47A828544148E17A94DD2C51410AD7A300A6285441CDCCCC9CE02C5141A4703DBAA3285441C3F528DCE22C51419A9999299F285441295C8FF2E32C51417B14AE279B285441F6285CDFE52C5141CDCCCC1C9A285441F6285C6FE72C5141295C8F5295285441F6285C8FEA2C514152B81EC59228544148E17AE4ED2C5141000000108B285441CDCCCC8CEB2C51415C8FC21589285441A4703D1AE92C5141AE47E18A8A285441F6285C9FE42C5141000000009628544100000020E22C5141295C8FA295285441CDCCCCECE52C51415C8FC25585285441295C8FE2EB2C5141CDCCCCBC822854411F85EB31EF2C5141333333937D285441F6285C4FF32C51418FC2F5C87D285441713D0AF7F52C5141E17A149E83285441713D0AD7F72C51415C8FC205852854418FC2F548F92C5141AE47E1AA882854418FC2F5A8F62C51418FC2F5D88B28544152B81E65F62C51413D0AD7F38E2854417B14AE07F22C5141A4703D7A8F28544133333373F02C5141EC51B85E93285441D7A370EDEB2C5141EC51B85E942854410AD7A330EA2C5141666666369628544148E17A64EB2C5141A4703D7A9A285441A4703DBAE92C5141713D0A67A128544185EB51C8EC2C5141C3F5284CA2285441B81E85FBEC2C5141C3F528DCA1285441A4703D2AEE2C51417B14AE67A02854417B14AE87F02C5141295C8F629E28544185EB5188F22C5141EC51B8EE9F2854410AD7A330F62C5141CDCCCC1C9F28544148E17A84F62C51411F85EB419E2854419A9999A9F62C51410AD7A3709D285441CDCCCCDCF62C5141B81E856B9B28544185EB51D8F62C51418FC2F5789A2854417B14AEB7F62C51411F85EBF199285441333333B3F62C51418FC2F50898285441CDCCCCDCF62C514148E17A94972854419A999919F72C5141A4703D6A97285441D7A370DDF82C51417B14AEC79728544100000060FA2C5141713D0A379528544166666636FB2C51418FC2F5B8932854410AD7A360FD2C51413D0AD7438F285441713D0AA7FF2C5141666666268A285441CDCCCCCC012D51417B14AEA785285441EC51B84E022D514185EB51C8842854419A999999022D514148E17A748428544100000000032D5141295C8F128428544185EB51C8032D5141295C8FA283285441333333A3042D5141EC51B82E83285441295C8F52082D51417B14AE0786285441000000C00A2D514152B81E958F2854418FC2F548092D5141CDCCCC0C962854411F85EB910C2D51418FC2F5B89C285441E17A146E122D5141CDCCCCDC9B285441EC51B8BE132D5141AE47E1BA98285441E17A147E132D5141F6285C6F94285441713D0AB7152D5141E17A14BE8B2854410AD7A3501A2D5141EC51B8BE822854410AD7A3F0172D5141666666C6802854410AD7A320122D514148E17A8489285441E17A144E0B2D514185EB515887285441CDCCCCCC0A2D5141295C8F0284285441B81E854B092D5141CDCCCCEC81285441D7A370AD092D5141A4703D6A812854413D0AD7130A2D5141B81E853B8028544185EB51880A2D514185EB51987E285441666666060B2D51410AD7A3F07B28544185EB51680B2D5141A4703D3A79285441EC51B8CE0B2D5141B81E857B7828544148E17A140E2D5141CDCCCCFC75285441E17A148E102D51413D0AD71373285441E17A144E142D5141E17A140E6F2854410AD7A370102D51419A9999F96C2854417B14AEE7102D5141713D0AE7692854418FC2F598152D514100000020652854411F85EBF1202D5141AE47E1DA67285441295C8F62212D5141CDCCCC4C572854417B14AEB71F2D514114AE47A15328544114AE47411E2D5141B81E85DB4F28544114AE4781172D514152B81EB54E285441EC51B8FE0C2D5141000000705328544185EB51980B2D51418FC2F54850285441E17A149E082D51418FC2F5B8502854413D0AD733052D514148E17AF458285441295C8F22022D51411F85EB315C2854418FC2F598FF2C514152B81E255B285441EC51B8CEFE2C5141AE47E1BA572854415C8FC2F5012D5141A4703D8A55285441000000C0022D514133333363522854415C8FC2A5002D5141EC51B80E4F285441333333E3032D514148E17AA44B2854418FC2F5E8002D514148E17AE449285441E17A144EFB2C5141D7A370ED482854413D0AD7A3F92C514114AE47F14A28544133333343F52C51410AD7A33049285441295C8F02FC2C5141AE47E1EA3F28544152B81E05FE2C5141713D0A873B285441A4703DBA052D5141A4703D9A392854410AD7A3D0052D51411F85EB8132285441D7A370CD022D514114AE47712D28544152B81EA5FB2C5141E17A146E2F2854410AD7A320F92C51411F85EB0128285441B81E85DBEC2C5141AE47E13A26285441F6285C9FEA2C51415C8FC2A521285441CDCCCC7CF02C51410AD7A3501A28544133333353F02C51411F85EB61172854419A999939E62C5141F6285CDF172854417B14AEF7E22C51418FC2F5981C2854415C8FC225DB2C5141CDCCCCBC1D2854411F85EB41DB2C51413D0AD7231B28544185EB51F8E12C5141D7A3704D1A28544114AE4701E42C5141B81E858B17285441E17A140EDD2C5141EC51B86E1128544114AE47C1DC2C5141CDCCCC2C102854418FC2F558E32C514152B81E850C285441295C8FA2EC2C5141295C8FC20C28544152B81E25F72C5141B81E85AB0A285441A4703DBAFA2C5141AE47E14A0C28544152B81ED5FD2C51415C8FC2250B285441E17A14AEFA2C5141D7A3708D04285441EC51B8CEF52C5141A4703DFA02285441E17A14BEF02C5141D7A3700DFD275441D7A3704DF42C514152B81E65F82754418FC2F5B8F22C51410AD7A380F5275441295C8FD2F02C514152B81E55F3275441713D0A67EF2C514152B81E65F2275441713D0A47EB2C51419A999969F02754418FC2F558E92C51417B14AE07EE27544148E17AE4E82C51419A9999D9EC275441000000C0E92C5141E17A143EEB275441713D0A97E92C51410AD7A330E8275441B81E85DBE32C5141E17A141EE1275441295C8F32E22C5141C3F5285CE1275441B81E85EBDC2C5141E17A14FEE2275441A4703D7AD32C5141AE47E1DADF2754410AD7A310D22C5141A4703D6ADD275441CDCCCC1CD62C514152B81E65DA2754419A9999F9D02C5141AE47E1DAD8275441D7A3703DCF2C514133333323D3275441CDCCCCCCD32C5141A4703DCAD1275441E17A14DEDC2C51419A9999E9D3275441713D0A97E02C5141C3F528FCD1275441E17A144EE82C5141C3F5282CCF275441B81E85FBEA2C51417B14AE47D5275441000000E0ED2C514152B81E05D72754418FC2F548F32C5141EC51B83ED9275441713D0A47FD2C514152B81E15E227544148E17A34022D514133333373E9275441D7A3700D012D5141E17A148EEC275441666666C6042D5141E17A145EF2275441666666C6072D51410AD7A3E0F5275441D7A3704D092D51417B14AE37F72754411F85EB91092D5141713D0AE7FE27544152B81EA50D2D5141AE47E1DA0428544148E17A24112D514185EB51E804285441EC51B87E172D514185EB5138FD2754411F85EB41192D5141EC51B8FEEB27544166666646192D5141D7A3703DE92754411F85EBB1162D514133333303E8275441EC51B82E132D5141E17A14EEE6275441CDCCCC1C102D5141A4703D3AE6275441AE47E10A0D2D5141E17A14DEE42754411F85EBD10A2D514148E17A94E3275441333333B3092D51417B14AE97E227544148E17AF4072D5141F6285C8FDF2754419A9999B9062D514133333333DE2754418FC2F568052D514148E17A74DD27544152B81ED5032D51415C8FC2B5DC275441E17A143E012D5141CDCCCC9CDB275441A4703DFAFF2C5141A4703D9ADA27544185EB5168FD2C514114AE4781D9275441AE47E18AFB2C5141000000F0D8275441295C8FD2F82C51413D0AD703D8275441EC51B82EF52C514185EB5198D427544185EB5188E62C51415C8FC225C92754415C8FC205E32C51410AD7A3B0C627544152B81EA5DF2C51415C8FC295C4275441F6285C7FDD2C514152B81EB5C32754418FC2F558DB2C514114AE4791C227544185EB5168D82C51419A999949C02754415C8FC205D42C514152B81E35BC2754410AD7A300CF2C5141000000C0B62754419A9999B9C82C514185EB5118B02754411F85EBA1C62C5141A4703DEAAE275441CDCCCC7CC42C514133333353AE27544152B81E65C22C5141EC51B80EAE275441AE47E1FABF2C514133333353AE275441C3F5284CBD2C5141333333B3AE2754418FC2F5B8BA2C514185EB5158AF2754418FC2F528B62C5141AE47E16AB0275441F6285C5FB32C514166666686B02754418FC2F558AF2C5141CDCCCCFCAF2754415C8FC265AC2C51411F85EBE1AF275441333333C3A62C5141666666C6AF275441666666E6A22C5141333333F3AD275441EC51B80EA02C5141295C8F72AC2754411F85EB519D2C51418FC2F5E8AB275441C3F5280C9A2C5141295C8FB2AB27544133333393942C514100000020AC2754418FC2F528922C5141295C8FB2AB275441F6285CBF8F2C5141B81E85DBAB275441B81E852B8D2C51410AD7A380AC275441AE47E12A8A2C514133333393AD27544152B81E05882C5141333333B3AE275441000000A0862C514166666686B027544148E17A84862C5141713D0A67B2275441295C8F52872C5141A4703D3AB42754415C8FC285892C51418FC2F588B6275441E17A14DE8D2C51410AD7A3C0B92754419A999909942C51410AD7A310BF275441B81E85AB9C2C5141333333D3C52754417B14AE179F2C514100000040C7275441EC51B85EA32C5141F6285CBFC82754418FC2F548A92C51411F85EBE1CB2754419A9999E9AF2C5141D7A3704DD0275441F6285CAFB62C51417B14AEB7D52754419A999999BC2C5141295C8FA2DB275441A4703DAABF2C514133333323DF2754413D0AD7D3C02C5141E17A14EEDF275441295C8F82C02C51415C8FC275E0275441AE47E1BAC22C5141E17A146EE5275441C3F5280CC32C51418FC2F598E7275441EC51B8FEC22C5141D7A3708DE927544114AE4741C22C5141C3F5284CEB27544152B81E25C12C5141713D0A17EC275441A4703DAABF2C514133333383EC275441000000F0B52C51419A999959EB27544152B81E15B32C514100000090EB275441D7A3707DB02C51419A999909EC2754417B14AED7AC2C5141C3F528ACEC27544148E17A84AA2C5141000000F0EC2754415C8FC265A72C514148E17AD4EC275441713D0A97A32C5141AE47E15AEC2754418FC2F5089D2C514114AE4781EA2754413D0AD7739C2C51419A9999A9EA275441A4703DAA9C2C5141C3F5284CEB2754415C8FC205A62C5141B81E858BF3275441B81E856BAC2C5141AE47E15AF8275441B81E85BBB22C51411F85EBF1FD2754415C8FC2A5B42C5141333333030028544152B81E55BA2C5141713D0A470828544114AE47F1BB2C51419A9999890A2854415C8FC2B5BD2C5141F6285CFF0D28544166666686BE2C51415C8FC2F50F2854419A9999C9BE2C5141C3F5287C1228544166666606BF2C51413D0AD79314285441D7A3707DBF2C5141666666F616285441B81E852BC02C514185EB51C81828544148E17A64C12C514148E17A141B285441000000E0C32C5141666666161E285441000000B0C52C5141333333032128544100000010CA2C5141713D0A471C285441C3F5282CD02C51418FC2F5281C285441A4703D4AD32C51415C8FC2C52028544114AE4771D72C5141F6285C8F1F285441333333F3D72C51411F85EB4121285441E17A144ED42C51419A999959272854411F85EB51D02C51418FC2F5182728544114AE47F1CB2C5141666666F623285441EC51B8CEC82C5141D7A370ED242854415C8FC275C92C51419A9999C92528544114AE4771CC2C514114AE47312A2854417B14AE07CE2C5141666666662C2854410AD7A310CF2C5141C3F5289C2E28544148E17A34D12C5141713D0A573A285441000000B0D32C5141C3F528DC3F2854413D0AD7D3D52C51413D0AD7D3422854415C8FC2D5D62C51411F85EBC143285441AE47E10ADC2C51413D0AD7733F28544148E17A04DF2C5141D7A370BD42285441B81E850BDA2C5141000000D046285441D7A3702DDD2C5141713D0A47492854410AD7A3E0DF2C5141713D0A874C285441333333B3E02C51419A9999494E2854411F85EB11E22C5141AE47E12A502854413D0AD783E32C514148E17AE450285441C3F5285CE52C5141713D0AB7502854418FC2F578E72C5141D7A370AD50285441A4703D0AE92C5141333333435128544114AE4751F32C5141B81E857B58285441295C8F22F42C51410AD7A3405928544114AE4701F52C514114AE47A15A285441295C8FC2F52C5141EC51B8EE5B285441666666F6F52C5141AE47E12A5F285441A4703D6AF22C514152B81E6563285441A4703D4AF02C5141713D0AD761285441F6285C1FF42C5141EC51B8EE5C285441C3F5281CF52C5141C3F528FC5D285441A4703DFAF42C5141333333035C285441AE47E1BAF32C5141CDCCCCCC592854418FC2F518EB2C5141E17A14EE53285441E17A14CEE82C5141AE47E15A522854418FC2F548E72C51410AD7A3F051285441713D0A37E52C51410AD7A3F051285441D7A3707DE32C51410AD7A3F05128544152B81E25E12C51418FC2F5F85028544148E17A24DF2C514148E17A744D28544148E17AD4DB2C5141713D0A9749285441A4703D6AD92C5141D7A370DD472854419A999969D52C5141CDCCCCDC43285441AE47E1CAD22C514148E17A3440285441CDCCCC3CD02C5141A4703D7A3A28544133333383CE2C514148E17AF4302854413D0AD733CD2C5141333333932F2854410AD7A300CB2C514133333313312854410AD7A370C82C514185EB51782E28544185EB5168C92C5141B81E859B2C285441295C8FD2CB2C5141000000D02A285441CDCCCC9CC82C5141EC51B80E2628544152B81E95C62C5141A4703DEA232854413D0AD7E3C42C5141EC51B83E21285441C3F5286CC32C5141A4703DBA1E285441E17A14DEC02C5141EC51B87E1B28544100000070BF2C5141CDCCCCDC18285441000000B0BE2C51411F85EBC1162854415C8FC245BE2C51419A99998914285441C3F5280CBE2C514152B81E3512285441F6285CBFBD2C51410AD7A31010285441B81E85EBBC2C5141F6285CFF0D285441713D0A27BB2C51413D0AD7C30A285441295C8F32B42C5141666666760028544114AE4751B22C514185EB5178FE2754411F85EB41AB2C51418FC2F568F827544185EB51F8A52C51413D0AD763F42754410AD7A3909D2C5141AE47E10AED2754410AD7A3D09A2C51415C8FC215EB275441333333139A2C514166666606E9275441333333F3952C5141295C8F12E82754410AD7A380932C5141713D0A87E627544152B81E35932C5141B81E85ABE327544166666646952C5141D7A3707DE227544148E17A04992C514100000080D4275441A4703D5A9D2C514114AE47A1D227544152B81E859F2C5141EC51B8AED52754419A999969992C5141D7A3706DD927544148E17A149B2C5141B81E85ABE027544185EB5148992C5141F6285CFFE2275441CDCCCCAC9E2C51419A9999F9E92754419A999989A32C514100000090EB2754415C8FC265A72C51411F85EB31EC2754411F85EB91AA2C514100000040EC275441295C8FF2AC2C51419A999909EC27544152B81E15B32C514152B81EC5EA2754415C8FC225B62C51419A9999A9EA275441F6285CCFBC2C514114AE4731EB275441A4703DFABE2C51419A999959EB2754417B14AE67C02C514114AE4731EB27544166666676C12C51415C8FC265EA275441D7A370FDC12C514166666606E927544185EB5118C22C51418FC2F598E727544152B81ED5C12C514100000060E527544114AE4731C02C51417B14AEC7E127544114AE47D1BE2C51411F85EB81DF2754410AD7A3D0BB2C5141D7A370FDDB275441AE47E10AB62C5141C3F5285CD62754418FC2F5E8B12C5141C3F528CCD227544100000080A82C5141D7A3703DCC27544133333303A32C514133333363C9275441EC51B8CE9E2C5141666666F6C7275441E17A143E9C2C5141E17A14AEC6275441295C8F72932C5141A4703D9ABF27544152B81E558D2C5141A4703D4ABA275441E17A14CE872C51413D0AD743B6275441B81E855B862C5141333333C3B4275441F6285C7F852C51410AD7A3F0B2275441AE47E13A852C51411F85EB61B12754418FC2F5A8852C51413D0AD7D3AF275441295C8F92862C5141EC51B86EAE2754410AD7A320882C514133333393AD275441295C8F428C2C5141000000C0AB2754415C8FC2958F2C514100000000AB275441C3F5285C942C514100000000AB27544185EB51B8962C5141B81E851BAB275441A4703DDA9A2C514148E17AE4AA275441000000E09E2C514166666636AB2754413D0AD773A12C5141295C8F12AC2754415C8FC255A62C51417B14AE97AE275441F6285CBFA82C514114AE4721AF2754413D0AD7B3AE2C514114AE4721AF2754415C8FC235B32C5141666666C6AF275441D7A3704DB52C5141666666C6AF275441CDCCCC7CB92C5141CDCCCCDCAE275441AE47E1EAB92C5141CDCCCC7CAE27544114AE47C1B92C5141A4703DCAAD27544148E17A84AA2C5141A4703D7AA827544185EB5188A82C514152B81EB5A627544152B81EE5AA2C5141CDCCCCBCA2275441E17A141EB12C5141713D0A87A5275441295C8FA2B02C5141A4703D1AA82754410AD7A310B12C5141AE47E19AA9275441713D0A47BC2C514152B81EE5AD275441C3F5280CBE2C514152B81EE5AD27544148E17A44C12C51410AD7A340AD275441EC51B80EC42C5141C3F5285CAD2754411F85EB41C62C514152B81EE5AD2754410AD7A390C82C5141CDCCCCDCAE27544133333383CB2C5141333333A3B1275441C3F5289CD12C514114AE4791B8275441EC51B88ED52C5141C3F528BCBC2754418FC2F548D92C514114AE4711C0275441C3F5289CDB2C5141295C8FD2C12754410AD7A3A0DD2C5141AE47E1EAC2275441713D0A37E02C51415C8FC225C42754417B14AE97E32C5141EC51B81EC627544152B81E25E72C51413D0AD793C82754413D0AD793F52C5141AE47E1FAD3275441295C8F42F92C514152B81E45D7275441EC51B89EFA2C5141D7A370EDD7275441000000F0FB2C5141C3F5283CD8275441D7A3706DFD2C51418FC2F568D8275441333333B3FE2C5141000000F0D827544148E17A74002D5141713D0AE7D9275441EC51B8AE012D5141E17A14DEDA275441E17A144E032D5141333333B3DB2754415C8FC225052D51410AD7A350DC27544185EB5108072D5141F6285C7FDD27544133333343082D5141EC51B8AEDE2754418FC2F5680A2D514148E17A04E22754411F85EB810B2D514166666606E32754415C8FC2150D2D5141D7A370FDE3275441CDCCCC1C102D514100000070E5275441713D0A67132D5141A4703D3AE6275441EC51B8AE192D514185EB51A8E7275441E17A14BE1A2D514114AE4711E5275441AE47E1DA1A2D5141B81E856BE3275441E17A14BE1A2D514152B81EB5E1275441AE47E11A1A2D51418FC2F5C8DF2754417B14AEE7172D5141B81E858BDB275441295C8FD2152D514100000050D8275441C3F5285C112D514152B81E15C527544185EB5138062D51415C8FC215B827544100000080DB2C5141295C8F62A0275441BB600F5DD22C514128F2A0809A27544102DBBF6CCF2C514176C1816697275441A06BC466CE2C514173FD92F397275441E17A14AEC62C5141AE47E1FA92275441333333C3B62C5141A4703DAA8827544152B81EB5B52C514148E17A348727544121C1C78CEB2C5141D95EB792F8265441495374DB1A2D51414C1B40A5B62654417EFCF8C2772D51418E6B6510F9255441F6A548BE8F2D5141271DDFB8E1255441F6285C1F902D5141B81E85EBE1255441713D0AD7912D5141000000A0E3255441D7A3707D932D51413D0AD763E5255441713D0A37942D5141295C8FF2E525544133333333952D5141A4703D1AE6255441F6285C5F972D5141AE47E1EAE525544148E17AF4992D514166666666E5255441A4703D8A9A2D5141A4703D8AE525544114AE47D19B2D5141B81E855BE6255441D7A3700D9D2D5141666666A6E62554418FC2F5A89D2D5141B81E85CBE625544114AE47319E2D514152B81EA5E7255441333333A39F2D51410AD7A320EA255441CDCCCCACA02D514100000060EC255441EC51B82EA12D5141713D0A47ED255441AE47E1EAA12D51419A9999D9ED255441B81E850BA32D514152B81EC5EE2554417B14AEA7A32D5141CDCCCC2CF025544185EB51A8A42D51411F85EB11F22554410AD7A3F0A52D5141CDCCCCACF3255441713D0A97A72D5141F6285CCFF52554413D0AD753A92D514133333313F8255441713D0A67AA2D51419A9999A9F92554415C8FC265AB2D514148E17AB4FA255441CDCCCC7CAC2D51417B14AEB7FC255441E17A142EAE2D5141B81E85DBFF2554410AD7A3E0AE2D5141F6285C2F0126544185EB5178AF2D514185EB51B802265441D7A370BDB02D5141C3F528BC032654413D0AD743B12D514152B81E7504265441A4703DCAB12D51416666665605265441E17A147EB22D5141713D0AA7072654413D0AD7D3B22D5141D7A370ED0826544185EB51A8B32D514148E17AA40B2654415C8FC2D5B32D51417B14AEA70C265441295C8FF2B32D514114AE47910D26544114AE4791B42D514152B81EA50E26544100000040B52D5141713D0AF70E265441EC51B8BEB72D514152B81E151026544152B81EA5BA2D5141CDCCCC9C112654410AD7A3C0BD2D5141F6285C9F132654411F85EB41BE2D51410AD7A3A01426544100000040BF2D51411F85EBD1152654419A999999C12D514185EB51681726544152B81EB5C32D51411F85EB2119265441AE47E16AC72D51413D0AD7331E265441F6285CFFC72D51419A9999991E2654418FC2F528C92D514114AE47B11E2654417B14AEA7CA2D51415C8FC2451F265441CDCCCC8CCC2D51419A9999A9202654410AD7A390CE2D51413333336324265441295C8F82CF2D514152B81EC5262654410AD7A330CF2D51418FC2F57829265441295C8F32D02D5141295C8F2229265441713D0A77D12D514152B81E152A26544152B81ED5D52D5141AE47E12A2D265441C3F528BCD82D5141E17A14AE3026544185EB5158DB2D51411F85EB1136265441333333E3DC2D5141CDCCCCEC36265441C3F5280CE02D5141AE47E1FA39265441333333E3E72D5141AE47E11A3D265441713D0A57EC2D5141666666E63E265441D7A3706DEE2D5141CDCCCC7C3E2654410AD7A3B0EE2D514148E17AA43D2654413D0AD703F12D5141000000503D265441EC51B8BEF32D514185EB51B83B265441E17A146EFB2D5141333333D3392654417B14AE37002E5141AE47E19A3B265441A4703DBA082E51419A9999693D26544114AE47A10E2E51413D0AD7F34326544148E17AB4102E51411F85EB114A2654419A999939102E5141B81E856B4D265441333333330E2E514152B81EA54E265441B81E852B102E5141295C8FC25026544100000060122E51419A9999695126544114AE4721142E51413D0AD743552654419756B004142E5141EDFCC912582654412CD1DD08142E514140EFB82358265441C3F5286C142E51413D0AD7135A265441333333D3142E514148E17A245B2654411F85EB11182E514114AE474160265441EC51B86E182E5141EC51B8AE61265441C3F528CC182E51410AD7A3E06426544100000090182E5141EC51B8BE66265441A4703D4A192E51419A9999D966265441E17A14AE172E514100000030692654410AD7A3A0172E51418FC2F5D86A265441000000D0172E5141A4703D8A6C26544114AE47E1172E5141295C8FD26D265441A4703DEA172E5141333333D36E265441C3F5286C182E514166666636702654411F85EB71192E514114AE475172265441F6285CCF192E514185EB51787626544185EB51381C2E5141295C8F927E265441B81E853B1C2E51413D0AD7B37F2654413D0AD7831B2E514185EB51C8812654411F85EBA11C2E51419A99991986265441AE47E1AA1C2E5141C3F5288C87265441F6285C2F1D2E514185EB51C889265441EC51B8EE1F2E5141B81E857B8626544114AE4771242E5141B81E855B83265441333333F3282E5141AE47E14A81265441000000C02D2E5141295C8F2280265441CDCCCC1C332E514152B81E657F265441EC51B8EE332E5141713D0A177F265441C3F528AC352E5141666666767F26544152B81E153C2E5141F6285C5F80265441C3F5281C402E5141E17A149E80265441CDCCCC7C422E51417B14AE278026544133333313452E5141CDCCCCFC7E26544185EB5178512E5141B81E85CB7626544114AE47D15C2E514152B81EE56E265441295C8FF25F2E5141666666466C265441295C8FD2622E5141EC51B8BE6826544114AE4741672E51411F85EBD161265441713D0AD76A2E51413D0AD7E35A265441666666A66C2E5141B81E855B57265441EC51B8BE6C2E5141E17A142E572654413D0AD733702E51419A9999A9502654419A999959732E5141000000304B2654419A999949772E514185EB51684426544152B81E057B2E514152B81EC53F265441B5055016812E51418CC95DAF382654415381281C822E5141EFEF8BE1392654410AD7A3C0802E5141000000403C26544148E17A247C2E5141AE47E13A41265441C3F528EC782E5141F6285C7F45265441E17A14AE742E5141D7A370FD4B265441D7A370ED712E51419A99998951265441E17A145E6C2E514152B81E855B2654417B14AED7682E5141C3F528AC62265441F6285C9F662E5141EC51B86E66265441D7A3703D642E51413D0AD7D36926544185EB51B8602E5141A4703D2A6E265441B81E85DB5D2E51419A999979702654415C8FC295522E51411F85EB717826544148E17A14462E5141EC51B8EE8026544100000060432E5141AE47E18A82265441C3F5284C402E51419A9999F9822654417B14AE87352E51413D0AD753812654418FC2F5F8322E514185EB515881265441AE47E1FA2D2E514114AE4711822654415C8FC285292E51419A9999198326544152B81E45252E5141F6285C0F852654411F85EB71212E5141AE47E1FA8726544148E17A441D2E5141F6285CDF8B265441295C8F621D2E5141C3F528CC8D265441713D0A771C2E5141F6285C6F91265441000000101B2E51410AD7A3D09226544148E17A441A2E51419A9999E99526544114AE47D1182E5141713D0A279C265441666666261B2E5141E17A14FE9B265441000000001D2E51413D0AD703992654410AD7A360202E514114AE47219826544185EB51781B2E51411F85EB61A126544114AE47811A2E51411F85EBA1AA2654418FC2F5981C2E51411F85EB51AC26544114AE4711222E5141713D0AF7AC2654418FC2F5D8252E5141F6285CBFA9265441295C8F422F2E51419A999949A626544133333333342E51417B14AE47A62654411F85EB41362E5141CDCCCC9C9F265441CDCCCCBC3D2E5141713D0A979B265441C3F5280C432E5141B81E851B9B26544133333373432E51417B14AE479D265441000000C03F2E5141EC51B85E9F2654410AD7A3003B2E5141EC51B83E9E2654418FC2F558382E51413D0AD703A0265441000000C0382E5141AE47E18AA12654411F85EB813F2E514148E17A44A22654418FC2F578402E514152B81E35A6265441EC51B87E442E51419A999949A62654417B14AE37452E5141CDCCCC9C9F26544152B81EE54B2E514152B81E159E26544185EB51984F2E5141CDCCCC2CA02654415C8FC2255C2E51413D0AD7739E265441F6285C9F5D2E514152B81E159B265441666666F65F2E5141E17A144E99265441EC51B85E6B2E51411F85EB8192265441713D0A07762E51417B14AE5790265441EC51B83E7C2E5141666666668C265441000000107C2E51413D0AD73390265441295C8FB2872E514148E17A54882654413D0AD703862E51417B14AE67842654413D0AD7A3762E514114AE47118B265441F6285C4F712E51419A9999C98C2654418FC2F5886E2E5141713D0AE787265441000000506E2E5141D7A370BD822654410AD7A340742E5141C3F5284C81265441AE47E16A762E51410AD7A3307C265441A4703D2A7B2E51413D0AD7E37526544152B81E857C2E5141EC51B85E6F265441E17A140E842E5141AE47E1DA6D265441D7A3706D832E5141666666466C26544152B81EC5812E5141D7A3702D692654410AD7A3707F2E5141F6285C3F632654410AD7A3507D2E51415C8FC2C559265441C3F5283C7D2E514148E17AC457265441000000607D2E51418FC2F5B8502654417B14AED77D2E5141A4703DDA4F2654415C8FC2757F2E5141E17A142E4D265441F6285C4F802E5141666666164C265441F6285C6F852E51417B14AE87452654419A999969852E51415C8FC2653C2654417B14AE27822E5141D7A370CD39265441C33C6028812E51414BD2459A382654413D0AD7E3812E5141F6285CBF3726544133333373822E5141295C8F123726544114AE4711832E514148E17A743626544185EB5128822E514148E17A9435265441F6285C6F802E5141333333133326544114AE47C17F2E51418FC2F53831265441D7A370AD7F2E514152B81E652F265441CDCCCCEC7F2E5141333333C32D265441AE47E1CA7E2E5141EC51B8BE292654419A9999F97F2E51410AD7A380252654413EB9B3D57D2E5141D91E98621F265441A4703D1A7A2E514114AE47A12126544185EB5178782E5141CDCCCC6C21265441EC51B81E762E51411F85EBB11D26544166666646742E5141EC51B8CE1C265441D7A3702D732E5141CDCCCC8C1C265441E17A14DE6F2E51415C8FC2A51C265441F6285C0F702E5141713D0A071C265441C3F5280C732E5141F6285C4F1B265441B81E85FB752E5141EC51B85E1C265441295C8FA2782E514148E17A341C265441AE47E18A7B2E5141AE47E1DA192654411F85EBA17B2E51419A99995916265441E17A148E7E2E5141C3F5287C162654417B14AEC77E2E5141000000001526544166666626822E51410AD7A350152654418FC2F548822E514148E17A1416265441CDCCCC7C802E5141295C8FB21B26544114AE47E17D2E5141CDCCCC5C1D265441792CCBD57D2E51410E9E78621F265441333333C3802E5141A4703DEA2326544152B81E95812E5141295C8F4225265441333333B3812E514152B81EE525265441333333E37F2E514152B81E052A26544152B81ED57F2E514185EB51082B265441D7A3707D802E5141E17A148E2C26544166666696802E5141F6285C6F2D265441C3F5284C802E51418FC2F5482F265441A4703D4A802E5141CDCCCC9C3026544185EB5188802E51419A9999F9312654413D0AD7F3802E5141F6285CDF3226544152B81EC5812E5141CDCCCC5C342654418FC2F5C8822E5141C3F5287C35265441C3F5285C832E51419A9999E9352654411F85EBC1832E5141B81E85EB35265441295C8F42842E514152B81E9535265441666666D6842E51418FC2F5483526544133333373842E5141333333733426544148E17A74852E5141D7A370FD332654413D0AD7D3852E514114AE47D134265441CDCCCCAC862E5141A4703D9A3426544114AE4741872E514114AE47D1352654415C8FC2558B2E514114AE47A13A2654418FC2F5488B2E51411F85EBC13E26544152B81EA5892E5141295C8F7240265441A4703DAA892E5141E17A14BE41265441AE47E12A882E51418FC2F58844265441E17A146E882E51419A9999E945265441F6285C3F882E51417B14AEE7462654418FC2F5A8872E514114AE47C147265441B81E859B862E5141AE47E19A48265441A4703D6A822E5141EC51B8BE4D2654419A999939802E514100000090562654413D0AD7B3812E5141F6285CAF572654413D0AD7A3832E5141E17A14DE5626544114AE4781862E5141E17A147E5A265441C3F528CC882E514114AE47F15726544148E17AB4892E5141AE47E14A502654411F85EB118D2E5141000000604F2654410AD7A3008D2E514152B81E4553265441C3F5283C8B2E5141666666B659265441F6285C1F8E2E5141713D0AC75A265441D7A3707D8F2E51410AD7A36062265441CDCCCCDC962E5141000000705D265441A4703DBA9B2E5141000000805E2654418FC2F5689C2E514133333323632654411B903E269B2E5141D99A9BEC67265441484DDD9A9C2E51418E8F16BF6D2654414E132719A02E51413FA16CD2712654414E132719A02E5141F495E7A477265441722757509C2E5141A2C418F9792654413D0AD7D3972E5141EC51B86E7C2654419A999999972E514185EB51087F265441A4703DCA912E5141713D0AB78026544133333303932E514152B81E6582265441713D0AE7992E5141EC51B80E832654418FC2F5289E2E51415C8FC24584265441CDCCCCCCA82E514152B81E857C2654418FC2F578AF2E51415C8FC25579265441E17A14AEDE2E5141F6285C8F662654415C8FC2D5DE2E5141AE47E1EA6426544114AE4721E22E5141EC51B83E5F2654411F85EB21EC2E5141C3F528AC5526544148E17AB4ED2E5141000000D056265441CDCCCCACF12E514185EB519854265441F6285CBFF22E5141F6285CFF4E26544152B81EB5EF2E5141A4703DBA4B265441AE47E14AF22E5141C3F5288C47265441C3F5288CF62E5141713D0AD748265441CDCCCCBCF82E5141C3F528BC442654413D0AD753F42E5141F6285C3F4226544152B81E25F72E5141B81E854B3D265441333333B3FB2E5141666666F63B26544185EB5108FD2E514114AE47E138265441E17A143EFD2E51413D0AD7E330265441295C8FC2032F5141295C8F2224265441E17A141E002F514185EB51082226544163BE120DFA2E5141AE2D5D3C1C26544160DBED4DF82E51412130376014265441D9A311F0F32E51411B6AEDE110265441CD177EF3EC2E5141695897CE0C2654411640DE61E52E5141E220BB70082654410AB44A65DE2E5141310F655D0426544166666666DB2E5141EC51B8FEFE2554413D0AD733D62E51419A999999FC2554411F85EB01D42E5141713D0AC7FF2554413D0AD733D22E5141D7A3707D00265441F6285C3FD12E514185EB510800265441E17A14FECE2E5141EC51B80EFF25544185EB5168CD2E514152B81EC5FE2554415C8FC215C72E51417B14AE97FC2554413C7DDC33C52E51415A2B5FB1FA255441818BA46CC52E51411DEF6038FA255441D7A3706DC72E51417B14AEE7FB255441C3F5288CC92E5141295C8FE2FB255441E17A144ECB2E514185EB5158FC255441C3F5287CCD2E514152B81E15FE255441C3F528DCCE2E5141C3F528CCFD255441295C8FE2D02E5141E17A14EEFD255441F6285CEFD12E51417B14AE97FF25544166666676D32E5141E17A147EFE255441713D0AD7D42E5141F6285C7FFC2554418FC2F5A8D52E51413D0AD763FB255441000000A0D92E5141333333F3FB255441E17A14DEDD2E5141295C8FD2FD255441D7A3701DDF2E514114AE479100265441C3F5281CE22E51410AD7A3F00126544185EB5128E92E5141000000600226544133333343F42E5141000000C002265441C3F5282C032F514100000050022654417B14AE970C2F514100000040032654418FC2F5E8092F5141AE47E13A0D265441713D0AD70D2F5141AE47E12A0E26544152B81E95122F514148E17AF403265441AE47E15A172F514100000070F9255441295C8F02182F51417B14AE57F22554417B14AEE71C2F51413D0AD7E3E4255441C3F5285C222F514152B81E55E32554410AD7A380222F51411F85EB91DE255441A4703DDA262F514100000000DD255441713D0A37282F5141F6285C1FDC25544148E17A94302F5141E17A14FED22554415C8FC265372F514114AE47D1CD2554415C8FC2253D2F514114AE4701C82554417B14AE373B2F5141B81E854BBF255441E17A142E2C2F5141E17A140EBE255441EC51B83E2A2F5141333333B3BC25544185EB51D8282F5141A4703DAAC02554417B14AEB7262F5141713D0A47C3255441F6285C6F192F51415C8FC285C02554415C8FC2D5082F5141713D0A77C0255441EC51B8BE032F5141D7A3706DBE255441F6285C8F002F514148E17AC4C12554417B14AE87FC2E5141713D0A77C2255441EC51B85EF82E514133333313C3255441F6285CCFF72E5141666666C6BF255441EC51B85EF82E514100000010BE255441F6285C2FF72E514148E17A44BA25544185EB5168F82E51410AD7A350B72554413D0AD703F62E514100000020B825544114AE4731EC2E51419A9999B9BA255441295C8FD2E72E5141CDCCCC3CBC255441AE47E13AE42E5141333333F3BD255441295C8FE2E02E5141F6285C0FC02554415C8FC2B5DC2E5141295C8FA2C3255441C3F5289CD22E5141AE47E1FACB2554419A999929CE2E5141A4703D6ACF255441295C8F82CA2E5141A4703DEAD12554413D0AD7B3C62E514152B81E25D425544152B81E05C22E51415C8FC265D6255441713D0A87BD2E51415C8FC225D8255441C3F528ACBC2E514100000060D825544148E17A14BD2E51419A9999C9D9255441F6285C7FBA2E5141666666A6DA2554413D0AD783B92E5141A4703DFADA2554418FC2F518BC2E51418FC2F558E32554413D0AD733BB2E514133333383E72554417B14AE97C02E5141333333B3E8255441F6285C2FCA2E51411F85EB21E62554413D0AD763CD2E514114AE4711EA25544133333373CE2E51410AD7A3D0EA25544166666656D22E5141D7A3704DE7255441D7A3707DD62E5141B81E859BEB25544166666656D72E514148E17A74EC25544148E17A84D72E51410AD7A3B0EC255441AE47E1AAD22E5141B81E853BF125544185EB5158D22E5141AE47E1DAF0255441C3F528ACCD2E51415C8FC2B5EB255441D7A370EDCB2E51413D0AD743ED2554411F85EBE1C42E5141000000E0F22554417B14AE67C32E5141D7A3709DF3255441CDCCCC4CC32E5141AE47E13AF6255441000000E0C32E5141333333F3F72554413D0AD713C52E5141EC51B80EF92554411F85EB61C52E5141F6285C2FFA255441C3F5282CC52E51419A9999A9FA255441333333F3C32E514152B81E45F9255441295C8F12C32E5141A4703D5AF8255441C3F5286CBC2E5141E17A141EF625544185EB5188BA2E5141D7A3706DF5255441D7A3709DB92E5141713D0AA7F3255441A4703D5AB82E5141CDCCCC3CF2255441D7A370ADAF2E5141295C8FF2F2255441A4703D6AAF2E5141AE47E10AF3255441C3F528FCA92E514148E17A04F52554418FC2F558AA2E5141713D0AF7F625544152B81E25AD2E5141AE47E1BAF6255441295C8F52AD2E51410AD7A390F8255441000000B0AA2E51419A9999C9F8255441CDCCCCDCAA2E51419A9999B9F9255441AE47E12AAE2E51411F85EB51F9255441333333C3AE2E514166666646F9255441C3F528CCAF2E514114AE4711FA2554417B14AE57B32E5141AE47E1FAF925544185EB5128B42E5141B81E850BFD2554419A999939B22E51413D0AD763FD2554419A999999B22E5141333333C3FF2554419A9999B9B02E514133333333002654419A9999C9B02E5141295C8F5202265441A4703D7AAF2E5141295C8F62022654415C8FC225AF2E5141D7A3707D00265441713D0AD7AB2E51415C8FC20501265441E17A149EAA2E5141D7A3704D01265441B81E85CBA92E5141666666D6FE2554418FC2F578A62E514100000070FF255441E17A149EA82E5141000000B00426544185EB5178A12E5141713D0A970726544148E17A049E2E5141E17A14FE08265441713D0A579E2E514185EB51180E265441C3F5286C9F2E514185EB5158132654418FC2F5A89F2E5141D7A370ED1526544185EB51A89F2E5141CDCCCCAC18265441B81E85AB9F2E5141000000B01C265441A4703D7A9F2E51410AD7A3801F26544152B81EC5A02E514185EB512822265441295C8F12A12E51410AD7A3D0212654413D0AD7E3A12E5141C3F5281C1E26544152B81E05A42E5141333333A31C26544148E17A94AC2E5141295C8FB217265441CDCCCC5CAF2E5141A4703D9A1D26544100000040A72E5141E17A144E232654415C8FC2F5A32E51411F85EBC12426544100000000A22E5141AE47E1AA23265441B81E858BA12E51410AD7A3C0232654413D0AD7239F2E514114AE471125265441333333439E2E5141713D0AC7252654419A9999F99C2E514114AE47412A26544148E17AA49B2E514152B81E652D26544148E17A84992E5141CDCCCC2C30265441C3F5284C962E5141333333A3322654417B14AEF7922E5141AE47E14A342654415C8FC2058F2E51417B14AE7735265441EC51B82E8F2E51413D0AD703372654419A9999799B2E5141000000403F2654413D0AD7D39D2E5141713D0A37402654415C8FC265A02E5141D7A370AD402654415C8FC2A5A32E5141CDCCCC4C40265441EC51B89EA72E51413D0AD7F33E2654417B14AED7A52E5141C3F528BC392654418FC2F528A92E5141F6285C9F38265441713D0A77AA2E5141B81E856B3C26544148E17AB4AA2E5141666666563C2654415C8FC285B62E5141AE47E13A38265441AE47E1EABE2E51419A99993935265441CDCCCC2CBC2E5141A4703D5A2C265441EC51B85EBC2E5141B81E859B28265441F6285C6FC32E5141AE47E19A26265441C3F528ACC82E5141A4703DCA2426544185EB5128CD2E5141B81E856B2326544148E17AD4CF2E5141C3F5280C2C26544152B81E05D22E5141295C8F22332654419A999959CA2E51413D0AD7B3352654419A999919C02E5141E17A14FE38265441713D0AB7BF2E5141D7A370BD37265441295C8F62B42E514148E17AB43B2654418FC2F5D8A32E51411F85EB41412654418FC2F558A02E5141B81E85AB41265441AE47E18A9D2E5141C3F5283C412654411F85EBF19A2E514114AE4731402654415C8FC2858E2E514185EB51F8372654411F85EBA18A2E5141A4703D1A362654417B14AE37892E5141D7A370AD35265441EC51B81E882E514185EB51B8352654419D0D635F872E51410AEEE2CD352654419B8785CF862E51417FB00195342654419A999989872E51418FC2F578342654417B14AE67882E514152B81E65342654411F85EB41892E5141333333633426544148E17AD48E2E514152B81ED5332654419A999959922E5141000000D03226544148E17A94952E5141A4703D2A3126544185EB5158982E51417B14AE072F265441AE47E10A9A2E5141666666B62C265441D7A3708D9B2E5141713D0A97292654418FC2F5D8912E51419A9999E928265441F6285C8F8F2E5141EC51B80E232654419A999909962E51413D0AD7931E26544152B81EF5962E51418FC2F5181D2654419A9999D9992E514114AE477118265441295C8FF29B2E5141B81E856B12265441F6285C5F9C2E5141CDCCCC7C10265441C3F5286C9A2E51418FC2F57810265441000000C0982E5141E17A14CE11265441EC51B80E992E5141A4703DBA12265441CDCCCCAC952E51410AD7A300152654415C8FC245952E51413D0AD7531426544152B81ED5932E5141B81E85EB112654418FC2F5D8912E5141A4703D5A0E265441C3F5281C932E5141E17A146E0D2654411F85EBD1942E5141295C8FE20C26544166666636972E514185EB51280D265441AE47E15A9A2E514114AE47610F265441EC51B8CE9C2E5141333333830E265441333333239C2E514152B81E250926544185E92F279D2E51412AAF9BB302265441AE47E1CA9B2E5141333333E302265441713D0AF79B2E5141D7A3708D032654417B14AE379B2E514152B81EC503265441AE47E1FA9A2E5141F6285CFF02265441D9E92F279D2E514117AD9BB30226544152B81E759E2E5141D7A370ADFE2554410AD7A3E09C2E514152B81EC5FE255441AE47E10A9A2E51417B14AE77FF255441666666D6982E51415C8FC275FA25544114AE47F19A2E5141A4703D0AFA2554411F85EBE19A2E51415C8FC2E5F8255441B81E858B9B2E5141A4703D6AF8255441295C8FA2972E5141D7A3707DF62554418B37EEEF922E514111069872F4255441B4937D72932E5141FC575091F32554419A9999E9962E5141A4703D2AF5255441EC51B83E9B2E5141713D0A27F7255441F6285C6F9D2E5141AE47E14AF825544159A65D669E2E5141A351E89CF82554416AE768439F2E51413635D4BDF82554419371CCCB9F2E5141EC61188AF8255441040C6041A02E5141C59A4048F82554410CCB9F8CA02E5141F7E7E4EEF7255441C3F528ECA02E514133333313F72554413D0AD7F3A12E514152B81E55F0255441EC51B83EA32E51418FC2F5A8EA255441713D0AD7A32E5141713D0A27E725544102833F4BA42E51410D0D747FE025544153D30B0AA62E514168003317E1255441295C8F92A52E5141D7A3702DE7255441C3F528DCA42E51418FC2F5E8EA255441D7A3708DA32E5141AE47E19AF02554411F85EB01A32E5141C3F5289CF625544100000060A22E514114AE4731FA2554419A9999C9A32E5141F6285C7FF92554410AD7A3B0A42E5141C3F5283CF8255441D7A3700DA52E5141A4703DCAF62554413D0AD703A62E51419A999949F52554415C8FC275A72E5141295C8F62F4255441B81E850BAA2E5141666666F6F3255441333333E3AA2E5141666666C6F02554416204208DA92E514145592851EF255441CF20346CA92E51413759DD28EE25544148E17A34A92E51413D0AD723EC2554417B14AE77AA2E51410AD7A3E0EA255441B81E850BAB2E514148E17AF4E825544166666696AA2E51415C8FC225E72554411F85EBD1A72E5141713D0A97E82554415C8FC275A72E51415C8FC2E5E3255441713D0A47A72E5141C3F5280CE0255441713D0AB7A62E5141295C8FC2DE2554417E82B60CA62E5141F37C000EE1255441ECF95C4CA42E5141EC321B6FE025544133333353A42E5141AE47E10AE02554412F498A88A52E5141142DCE34DD2554416DCE7DC9A62E514162C198DDDB2554417B14AEC7A72E5141C3F528CCDA25544152B81E35A92E514148E17A34DA2554416D5C5C64A92E5141BBA7FE54D925544185EB5188A92E5141AE47E1AAD8255441A4EE963AA72E51416D4AA666D62554417AA03C83A32E5141B0489FBED225544155D63E8DA02E51410963D7D4CF2554412585E84F9E2E5141CE76BDA0CD255441B1C9B16A992E5141A1CC71D9C8255441D7A3706D9D2E51411F85EBC1CC2554418FC2F5F8A82E5141EC51B80ED8255441D7A3701DA92E5141295C8FA2D725544166666636AA2E5141EC51B8DECD2554419A999989AA2E5141713D0A17CB2554410AD7A360AB2E514185EB5178C7255441EC51B8FEAC2E51418FC2F538BE2554413D0AD7A3AD2E5141E17A140EBB255441F6285CEFAE2E51417B14AE77B82554410AD7A3C0B42E51411F85EB31B2255441D7A3701DB82E51418FC2F548AF255441EC51B89EB22E514152B81E15AB25544166666666B32E5141AE47E13AAA25544133333373AF2E5141000000E0A4255441A4703D1AB22E5141295C8F72A12554418FC2F548BB2E51410AD7A3B0A8255441B81E859BBB2E51418FC2F5C8A72554419A999959BB2E5141000000C0A6255441333333A3BA2E51418FC2F5E8A52554417B14AED7B12E51419A9999899E255441AE47E14AB02E51413D0AD7D39D255441D7A370BDAE2E51413D0AD7D39D2554411F85EB61AD2E514185EB51589E255441B81E85CBAA2E51417B14AE27A0255441A4703DCAA82E5141B81E859BA0255441D7A3703DA72E51419A999959A0255441D7A3706DA52E5141333333A39F25544133333333A42E51419A9999899E25544114AE4701A42E5141EC51B83E9D255441295C8F22A42E514148E17A049C255441A4703DEAA52E5141B81E85FB9725544100000050A62E51411F85EB8196255441AE47E1FAA52E51415C8FC245952554415C8FC235A52E51413D0AD763942554419A999999A32E5141666666D693255441EC51B80EA22E51415C8FC225942554410AD7A3509D2E5141AE47E16A96255441C3F528CC9B2E51410AD7A3A09625544152B81E759A2E5141D7A3703D962554417B14AE27992E514152B81E6595255441CDCCCC3C982E51418FC2F52894255441CDCCCCAC972E5141CDCCCC5C92255441295C8F52972E5141F6285C1F8F25544152B81E25972E5141000000F08C255441713D0AA7962E5141D7A3705D8A2554417B14AED7952E51411F85EB5188255441713D0AB7942E5141AE47E16A862554410AD7A3D08F2E51417B14AE5781255441295C8FC28A2E5141EC51B88E7B255441295C8F82892E5141AE47E16A7A2554410AD7A380872E5141E17A144E79255441D7A370AD832E514185EB513878255441CDCCCCCC802E514152B81E45772554413D0AD7C37E2E514114AE472176255441A4703DFA7D2E5141713D0A277525544148E17A547E2E51418FC2F548742554411F85EBB1812E5141F6285C0F72255441295C8FA2862E514152B81E9574255441713D0A47852E51418FC2F5287725544148E17A148A2E514148E17AF479255441B81E855B8B2E5141666666267B25544185EB5158902E5141295C8FE28025544148E17A74952E514148E17A348625544133333383962E51410AD7A3008825544148E17A64972E5141666666668A25544152B81EF5972E5141AE47E19A8D25544185EB5158982E5141B81E857B91255441666666D6982E5141D7A3707D93255441A4703DCA992E514185EB51F894255441000000609B2E5141F6285CBF952554417B14AEA79C2E51411F85EBC195255441000000009E2E514100000040952554415C8FC2D5A12E5141F6285C4F93255441E17A148EA32E5141C3F5281C932554413D0AD773A52E5141295C8F9293255441CDCCCCDCA62E5141C3F528FC94255441713D0A37A72E5141295C8F92962554410AD7A3C0A62E514152B81E45982554418FC2F5E8A42E514148E17A149C2554418FC2F5E8A42E5141E17A142E9D255441C3F5283CA52E5141713D0A379E2554411F85EBF1A52E5141D7A370FD9E255441EC51B86EA72E5141295C8F929F255441B81E85EBA82E51413D0AD7B39F255441713D0A47AA2E514114AE47719F255441CDCCCCCCAC2E51410AD7A3809D255441C3F5289CAE2E5141CDCCCCFC9C255441B81E856BB02E5141CDCCCCFC9C2554419A999909B22E5141333333C39D2554418FC2F548BB2E5141C3F5285CA525544148E17A54BC2E514148E17AB4A6255441A4703DFABC2E51415C8FC2E5A8255441E17A14AEBC2E5141000000B0AB2554419A999989BA2E51413D0AD793AE25544133333333B72E514148E17A44B125544114AE4711B22E5141CDCCCC4CB6255441C3F5282CAF2E5141713D0AB7B925544133333353AE2E5141B81E85CBBB25544152B81E35AC2E514148E17AC4C72554417B14AE97AB2E5141D7A3701DCA255441666666E6AA2E5141AE47E10ACE25544152B81EB5AA2E51418FC2F528D0255441E17A140EAD2E51417B14AEA7CC2554410AD7A340B12E51413D0AD763CF255441C3F5282CAF2E514185EB5178D22554415C8FC2F5AE2E5141EC51B8DED6255441A4703D6AAF2E5141666666A6D825544152B81EC5B32E514114AE47C1D7255441295C8F22B62E51417B14AED7D725544148E17A84B82E5141E17A14EED72554417B14AEF7B92E5141D7A3707DD72554410AD7A300BA2E5141EC51B80ED62554419A999979B62E51418FC2F5C8D42554413D0AD7A3B62E514100000060D42554415C8FC235B72E5141666666F6D2255441F6285C6FB72E514185EB5168D225544114AE4721BA2E514152B81E55D3255441F6285CCFBA2E51415C8FC275D32554413D0AD7A3BA2E5141AE47E13AD62554410AD7A310BB2E514185EB5128D7255441CDCCCC2CBD2E514148E17A84D62554418FC2F558C12E514114AE47F1D4255441E17A14EEC52E51410AD7A3B0D22554415C8FC285C92E514166666696D02554419A999949CD2E5141F6285C0FCE2554418FC2F5A8D12E51413D0AD7B3CA255441D7A3709DDB2E5141AE47E15AC2255441295C8FF2DF2E51411F85EBC1BE2554411F85EB81E32E5141CDCCCC7CBC255441EC51B84EE72E51418FC2F5A8BA255441666666E6EB2E514114AE4711B92554418FC2F558F22E5141713D0A77B725544100000030EC2E51411F85EBD1B02554413D0AD723F02E5141295C8F92AF2554417B14AEE7F32E5141AE47E12AA92554410AD7A3D0F82E514152B81E65A92554415C8FC205FC2E514148E17A64AD255441DCE22889FD2E5141A267F0D6AD255441713D0A57FD2E5141D7A3703DB0255441295C8F22032F5141713D0A57B125544166666666022F51417B14AE27B4255441CDCCCCEC062F514152B81E85B4255441D7A370CD062F5141000000F0AC2554416CF46090092F51411849B333AD255441F154D3C20C2F5141637109D6AD255441DD088B950E2F5141235DDE84AD2554416DF392F0112F5141583654EAAD255441CA4970A0122F514110A2293FAB2554411572C642132F5141EFC51BCAA8255441C3E033A7122F5141CEAE5869A6255441DB39AAB2102F5141348C3332A5255441044B3DF40E2F5141F7BFEBAAA42554417B14AE870D2F5141CDCCCCFCA42554414C1BEB2A092F5141D5DCDF76A6255441E17A14AE062F514114AE47E1A92554419A9999C9012F514152B81E55A62554419A9999B9042F5141333333E3A325544166666666022F5141C3F5284CA2255441F6285C9F032F51410AD7A370A12554419A999989072F5141CDCCCC2CA2255441713D0AD70A2F514148E17AD4A02554414117857B0F2F514177F9D48EA3255441A4703DCA122F51411F85EB21A4255441245B0296152F514125A3F7DEA2255441333333D3162F514148E17AD4A02554415596B6351A2F5141E7D31748A025544139E1310F1C2F51411916CAA6A0255441A4703DCA232F5141EC51B8FE9E255441333333F3272F514166666676A02554415C8FC2452A2F51415C8FC2C59D2554418FC2F508352F5141F6285CDF9E2554410AD7A3603F2F5141295C8F4298255441C3F528BC3E2F5141D7A3704D93255441295C8F023F2F51419A999919912554411F85EBC14A2F514114AE471197255441F6285C4F4B2F5141C3F5284C9C2554417B14AE67422F514185EB51089D255441E17A14AE422F51415C8FC2E5A1255441713D0AC74C2F5141295C8F829F2554415C8FC2B54C2F5141B81E857B9B255441295C8F224C2F5141C3F5286C96255441713D0AC7402F5141333333F38F255441E17A141E3F2F51415C8FC2E58C2554417B14AE173C2F514114AE47C18A255441AE47E1BA3A2F5141AE47E19A8A255441295C8F42362F51415C8FC2A58C255441295C8F82302F5141E17A142E8B255441D7A3704D232F51413D0AD76398255441A4703D5A1B2F51410AD7A310962554413D0AD753142F51415C8FC2B597255441295C8F22132F5141A4703DBA99255441C3F5289C0F2F51413D0AD76398255441AE47E1DA0F2F5141D7A370DD93255441AE47E11A0A2F5141CDCCCC4C9425544148E17A74062F5141D7A3708D982554418FC2F5B8012F5141F6285C7F9F255441AE47E1EAFF2E5141B81E85CBA22554411F85EBA1FE2E5141F6285C1FA6255441E17A14DEFD2E51415C8FC2C5A9255441BBCCB28AFD2E51415BC312C4AD255441B0B5B407FC2E5141608D4B52AD25544114AE4771FC2E51417B14AE77A9255441CDCCCC3CFD2E51418FC2F5C8A52554411F85EBB1FE2E5141A4703D3AA22554419A999969002F514148E17AC49E2554411F85EBD1042F5141F6285C4F9725544114AE47910D2F5141333333038E25544185EB51B80E2F5141C3F528BC8B25544185EB51580F2F51419A99994989255441A4703D4A0E2F51415C8FC2458925544148E17A54092F5141CDCCCC2C8A255441B81E85CBFD2E514114AE4781892554415C8FC2E5F82E5141CDCCCC2C882554413D0AD743F12E5141EC51B83E87255441E17A146EEA2E51413333332385255441295C8FD2E62E51417B14AE07832554410AD7A320E12E5141A4703D5A7D25544133333393DD2E5141A4703D5A77255441F6285C4FDA2E514166666696752554413D0AD7B3D92E5141000000207425544152B81E15D12E51417B14AE776E2554415C8FC225C92E5141EC51B81E6A25544166666656C32E5141C3F5285C66255441AE47E1DABE2E5141713D0AC76325544152B81E75BB2E51415C8FC2B5612554418FC2F5B8B02E514148E17A9461255441B81E857BAE2E514185EB511865255441000000A0A82E5141CDCCCCFC6725544148E17A14A32E51410AD7A300692554411F85EB81A02E5141000000406C255441CDCCCCAC9D2E51417B14AE376A255441713D0A77992E51410AD7A3D06B2554417B14AED79A2E514152B81E5571255441713D0AE7932E51419A9999797225544148E17AA4932E51411F85EBA1722554419A9999E9922E51411F85EB6171255441000000B0912E5141713D0A676F25544166666616912E5141333333136E2554410AD7A3208F2E5141AE47E12A6B255441EC51B80E8E2E5141713D0A17652554419A9999C9902E514185EB51B862255441F6285C3F8D2E51413D0AD7A35E25544100000070882E51419A9999E959255441C3F528BC872E5141666666E6582554413D0AD7A3862E514152B81E3554255441EC51B82E862E5141295C8FC252255441EC51B87E7A2E5141333333B34E255441F656CF3D7C2E5141F00EF62E4B2554413D0AD783882E514185EB517832255441AE47E10A882E5141000000602F25544114AE47118C2E514152B81EE52A2554410AD7A3208D2E5141F6285CFF28255441666666C6872E51417B14AED727255441E17A14FE862E5141F6285CFF2825544166666606832E51417B14AEC729255441666666267C2E5141666666062B255441435BCC15772E514123060B333E255441E130C99E742E5141A909EA87472554415C8FC265732E51418FC2F5284C2554410AD7A390652E51410AD7A3E0462554415C8FC2B5572E514148E17A144625544166666656532E514148E17AD44525544114AE4731502E514152B81EB54525544152B81EF5412E51413D0AD7B353255441A4703D9A382E514114AE47215C255441A4703D6A302E514152B81ED563255441E17A14FE282E5141E17A146E69255441713D0A471A2E5141000000105D255441B81E858B112E5141EC51B8AE52255441333333830D2E5141EC51B86E572554417B14AE27072E5141B81E851B5C255441A4703D8AFE2D5141D7A3708D5E2554413D0AD7D3FA2D51411F85EB2161255441EC0835DDFA2D514124EDA751662554415A35FE59F92D514193C55C5E64255441B8F91265F92D5141BCAF4A48642554413D0AD7D3FA2D5141B81E852B61255441D7A370ADF82D5141D7A370DD62255441713D0AC7F52D514152B81E4565255441D7A370FDF22D514114AE470168255441F6285C6FEF2D51417B14AE376C255441F6285C3FED2D5141D7A370AD6E25544114AE4701EB2D5141D7A370DD702554419A999929E82D51419A99994972255441F6285C7FE42D5141D7A3707D732554419A9999B9E02D5141333333A374255441713D0A47DD2D51417B14AED77525544133333353DA2D514114AE47517725544114AE4701D62D5141F6285CFF79255441B81E853BD22D5141333333F37C255441F6285C7FCF2D5141333333237F255441B81E858BCC2D514152B81E458125544114AE47C1C92D5141333333A382255441F6285CDFC52D5141333333F383255441713D0A97C22D51419A9999198525544152B81E75C02D514152B81E8586255441D7A3709DBD2D5141333333C388255441D7A3701DBA2D5141F6285C7F8B255441F6285C8FB62D51419A9999698D255441F6285C1FAF2D514114AE470192255441713D0A87AA2D5141F6285CAF9425544114AE47A1A72D5141B81E858B9625544133333313A42D51417B14AED798255441F6285C8FA12D514152B81EC599255441F6285C5F9F2D5141B81E850B9A255441B81E851B9B2D5141333333439A25544152B81EA5982D51419A9999899A25544152B81EE5962D5141333333239B255441B81E854B962D51417B14AE579C255441713D0A67962D51417B14AEA79D255441D7A3708D972D51417B14AEF79E255441D7A370BD992D514152B81EC5A0255441D7A370FD9E2D51419A999929A4255441713D0AE7A02D51419A999979A5255441713D0A37A22D514133333383A6255441F6285CFFA12D5141F6285CEFA72554419A999949A12D51419A9999F9A825544114AE4731A02D5141F6285C1FAA2554419A9999399E2D5141F6285CFFAA255441B81E85FB9B2D5141B81E858BAB255441F6285CAF992D5141B81E85FBAB2554419A999989982D5141D7A370CDAC255441D7A3701D972D514114AE4701AE2554410B920226952D5141A34725CCAF2554412D124944942D514192DFEA09AF255441333333C3942D51419A9999A9AE255441F6285C0F972D5141B81E856BAC255441713D0A97982D514133333353AB25544114AE47F19A2D5141D7A3709DAA255441B81E854B9D2D51419A999949AA255441713D0A279F2D5141D7A3704DA9255441333333B39F2D51417B14AE97A825544133333323A02D514152B81E55A725544114AE47C19F2D514133333313A6255441713D0AD79D2D514152B81EB5A4255441D7A3702D9A2D5141F6285C3FA22554419A999939972D51419A999939A0255441F6285C4F952D514114AE47B19E25544114AE4761942D5141333333539D255441F6285C6F942D514152B81E859B255441713D0A87952D5141D7A3706D9A255441F6285C7F972D51419A9999A999255441B81E85CB992D51417B14AE47992554419A9999599D2D5141D7A3701D992554419A999969A02D5141333333F398255441D7A3707DA22D51419A99995998255441333333D3A52D5141D7A3707D96255441713D0A87AA2D514114AE47519325544152B81E45B02D514152B81E2590255441713D0A27B42D51419A9999698D255441D7A3707DB72D5141B81E859B8B2554419A999939BA2D51417B14AEF78925544133333373BD2D51417B14AE578725544114AE4791C02D51419A99991985255441F6285C3FC32D5141B81E85BB83255441713D0AF7C62D5141B81E856B82255441713D0A97C92D5141B81E858B81255441713D0A87CD2D5141B81E855B7F25544152B81EC5CF2D514114AE47717D255441D7A370DDD02D5141D7A3703D7C2554419A999989D02D5141D7A3700D7A255441D7A3702DD22D51413333337379255441F6285C8FD22D51417B14AE177B255441B81E850BD72D514152B81E1578255441B81E858BDA2D514152B81EE57525544133333363DD2D514114AE47B174255441333333C3E12D51419A99992973255441F6285C3FE62D5141D7A370BD712554419A999999E82D51419A9999F97025544133333363EB2D514114AE47016F255441713D0AC7EE2D51419A9999496B255441D7A370ADF12D51419A9999C96725544152B81EC5F22D5141333333C36525544133333343F32D51419A9999B964255441F6285C1FF52D51417B14AEE763255441713D0AF7F72D5141D7A370FD6125544114AE47D1FA2D5141B81E859B5F25544185EB5118E12D5141C3F528DC6925544148E17A24CF2D5141B81E851B712554419A999929BC2D5141C3F528CC782554419A9999F9BB2D514114AE47917C2554419A9999A9BA2D5141F6285C3F7F25544133333383B22D5141D7A3707D81255441D7A3701DAC2D514114AE47D181255441C3F5284CAA2D5141666666A67F25544133333323A22D5141713D0A678025544148E17AA4A02D5141E17A149E7F255441D7A3700D9E2D514148E17AC47F255441EC51B87E9C2D514185EB51588025544114AE47D1972D5141333333F381255441AE47E16A942D5141EC51B82E82255441000000F0922D51413333337382255441295C8F82922D5141666666F68225544133333393912D51418FC2F588832554411F85EBE18E2D514148E17A3483255441000000808C2D514166666636832554413D0AD7538A2D51418FC2F558832554415C8FC225882D51410AD7A3B08325544148E17AC4852D51410AD7A35084255441E17A140E822D514152B81E5584255441295C8F82852D514148E17AB48E255441D7A3705D872D51417B14AE378F2554419A9999C9882D51419A99997990255441F6285C7F892D514152B81E559225544133333363892D5141F6285C3F94255441D7A3708D892D514114AE4761962554419A9999C9882D51417B14AE679825544152B81E75882D5141F6285CEF99255441F6285CEF892D5141D7A3702D9C2554419A9999698B2D51417B14AEC79C255441B81E853B8C2D51417B14AED79F255441B81E851B8D2D51417B14AE77A2255441D7A3700D8D2D514133333333A52554419A9999498C2D5141F6285C9FA625544152B81E858B2D514133333363A7255441AE47E19A892D5141E17A140EA825544148E17A148A2D5141666666C6A9255441B81E85AB8C2D51419A999929AB2554419A9999E98E2D514114AE4791AD2554410AD7A3C0902D5141713D0AA7AF255441295C8F02932D5141E17A14FEAF255441BA183D42942D51419A86780BAF255441D891F40E952D5141C4C76FDDAF2554415C8FC2A5942D5141D7A3703DB0255441D7A3700DA32D514185EB5168B225544148E17A94B02D51415C8FC2B5B425544152B81E25AA2D514185EB51C8C525544152B81EE5AB2D5141D7A3709DC6255441D7A3706DAD2D5141F6285C6FC72554419A999949AF2D5141F6285CBFC82554419A9999E9B12D5141D7A370FDCA25544152B81E05B22D5141F6285C7FCA255441B81E85BBB22D5141333333D3CA255441F6285C9FB22D5141F6285C5FCB25544152B81E85B52D514114AE4781CD25544114AE47F1B62D5141D7A3707DCE255441B81E858BB72D514133333353CE255441B81E85FBB72D5141D7A3702DCD255441333333A3B82D5141D7A370FDCA255441CDCCCC1CB72D5141CDCCCC5CCA25544185EB5148B72D5141B81E855BC825544114AE47E1B82D5141E17A147EC8255441D7A370ADB92D5141F6285C6FC725544133333343BB2D5141B81E858BC7255441EC51B81EBC2D5141E17A140EC8255441333333E3BD2D514133333333C825544133333373BD2D514152B81EA5CB255441F6285CCFBB2D514114AE47C1CB2554419A999989BB2D5141D7A3704DCC25544133333383B92D514133333323CC255441713D0AF7B82D514114AE4781CD25544114AE47B1B82D514152B81EB5CE2554419A9999E9B82D5141B81E856BCF25544133333383B92D5141B81E85DBCF255441713D0A27BB2D5141D7A370ADD0255441F6285C1FBD2D514152B81EC5D1255441713D0AA7BE2D5141333333D3D1255441091F27E6BE2D5141A24A68A9D1255441E02B1F99BF2D51416F1DEDFCD125544114AE47B1BF2D51419A999989D22554419A999919C22D514152B81ED5D425544114AE47F1C42D5141B81E854BD725544133333383C72D514133333343D925544114AE47C1C92D514114AE4731DA25544133333353CC2D514133333393DA255441D7A3701DCF2D51417B14AE07DA255441D7A370BDD12D5141333333D3D82554419A999959D52D5141D7A3703DD7255441D7A3704DD82D51417B14AE87D6255441D7A370EDDA2D5141D7A3705DD62554419A9999A9DD2D514152B81E25D6255441D7A3702DE02D51419A999999D52554419A999979E22D5141D7A3702DD425544152B81EA5E52D514152B81E35D225544152B81EB5E82D514152B81E75D0255441333333F3EA2D5141333333C3CE25544133333303EE2D51417B14AE77CC2554413D0AD7D3F02D5141295C8F62CB25544133333333F52D514133333393CA2554411F85EBF1F72D514185EB51B8CA25544152B81E35FA2D5141F6285C5FCB255441B81E851BFD2D51417B14AE77CC255441A9CDC9A7FE2D51411F7867C2CC2554416CC3F2C3FE2D51419AB571C9CC255441BE7B11A9FE2D5141011CD8EFCD255441769A9674FE2D51413326AFE3CD25544152B81EF5FB2D51417B14AE57CD25544152B81EE5F82D5141D7A3704DCC255441713D0AA7F62D5141333333B3CB25544152B81EF5F42D5141333333B3CB255441D7A3701DF22D514152B81E15CC255441B81E858BEF2D514133333303CD25544133333393ED2D51419A999929CE25544114AE4701EB2D5141F6285C9FD025544152B81EB5E82D51417B14AE27D2255441F6285C5FE52D514152B81EF5D32554419A999979E22D514152B81EB5D52554419A999949E02D514152B81E95D625544152B81EC5DD2D514114AE4721D7255441D7A370EDDA2D5141B81E854BD725544114AE47C1D72D5141D7A370ADD7255441B81E85BBD52D514152B81E55D825544114AE4761D32D514114AE4751D9255441333333A3D42D51417B14AE77DA2554419A999999D32D5141D7A3709DDB255441D7A3709DD22D514133333333DD25544114AE47C1D02D514114AE4741DD255441713D0A77D12D5141F6285C8FDB255441713D0A57D22D5141D7A370DDD925544152B81E35D02D51417B14AEE7DA2554419A999909CD2D5141F6285C8FDB25544152B81E85CA2D5141F6285C8FDB255441333333F3C72D5141D7A370BDDA25544133333353C52D5141B81E850BD925544152B81E35C22D514114AE4741D6255441D7A370CDBF2D5141D7A3702DD4255441B81E853BBD2D514114AE47C1D225544152B81E55BA2D51419A9999A9D1255441D7A370ADB92D514152B81E35D2255441B868F19DB92D5141462AE5AFD2255441F5CD689FB82D514120448F3CD225544152B81E95B82D5141333333D3D125544133333333B82D514152B81EE5D0255441F6285C6FB72D514114AE4721D025544152B81E15B52D5141D7A3707DCE255441333333F3B22D5141F6285C1FCD2554419A9999B9AF2D5141F6285C7FCA255441B81E85EBAD2D514152B81E05C925544133333383AB2D514152B81EB5C725544114AE47B1A92D5141C3F528FCC6255441E17A14BEA12D5141A4703DDAC425544185EB51889B2D51410AD7A310C3255441333333A39C2D51419A9999F9C425544152B81EC59E2D514133333373C6255441B81E859B9E2D5141333333C3C7255441F6285CEF9E2D51419A9999C9C9255441D7A3704DA02D51417B14AED7C925544114AE4761A22D514114AE4701CA255441B81E858BA22D5141F6285C5FCB25544152B81ED5A12D51419A999949CD255441713D0AE7A02D514114AE4741CF255441B81E859B9E2D51419A999979CF255441D7A370AD9D2D51419A999939D12554419A9999C99D2D51417B14AE07D3255441D7A370AD9D2D514152B81E65D425544152B81E959C2D5141F6285CDFD525544152B81EB59B2D51419A999959D7255441D7A3709D9A2D5141B81E859BD8255441B81E855B992D5141D7A370FDD8255441713D0AB7972D5141B81E859BD82554410AD7A3A0962D5141A4703D5AD82554418FC2F528962D5141295C8FB2D92554411F85EB01962D51417B14AEE7DA255441B81E85CB952D514185EB51B8DB255441A4703D5A952D514133333343DC2554419A9999B9942D514148E17AE4DC2554413D0AD723942D514114AE4791DD255441F6285C6F932D5141CDCCCC8CDE2554411F85EB91922D514152B81E65DF25544148E17AB4912D514148E17A04E02554411F85EBB1902D5141666666C6E0255441B208E30A902D51411489CE58E12554419A9999A98F2D5141E17A14AEE1255441A5495AB5772D51410DE89BFDF825544117F378871A2D5141E232AE92B62654419285DE70EB2C5141C87A406CF826544166EC9D7EB52C51410DA928308727544108000000CDCCCCCCB62E51410AD7A38084255441666666B6B42E5141333333C3842554418FC2F5B8AD2E5141B81E85AB8125544148E17AB4AC2E5141F6285C2F7E2554419A999979B42E5141000000807B255441333333E3B72E5141295C8F12802554410AD7A3D0B72E51415C8FC26582255441CDCCCCCCB62E51410AD7A3808425544108000000AE47E10AAF2E514148E17A348F2554418FC2F5A8AD2E5141D7A370ED8D2554413D0AD7E3AB2E5141713D0AF78C2554418FC2F588AA2E5141D7A3705D8C2554411F85EBB1AB2E5141B81E854B8925544148E17AE4AD2E5141666666F689255441EC51B89EB12E5141C3F5284C90255441AE47E10AAF2E514148E17A348F2554410D000000295C8FB26C2E51419A9999E99A25544152B81EE5632E514148E17A248A255441713D0AD75C2E5141B81E858B81255441CDCCCC2C532E514185EB51587B25544152B81EB57B2E5141A4703DEA7C255441CDCCCC6C832E5141666666168325544114AE47A1852E5141C3F528EC892554418FC2F5A8812E5141CDCCCC5C8A25544166666616842E514185EB511890255441CDCCCC6C832E514185EB510898255441AE47E15A7E2E51413D0AD7C39D255441F6285CBF742E51419A9999599E255441295C8FB26C2E51419A9999E99A2554410700000048E17AB4A82E5141EC51B8BE8725544148E17A84A42E514152B81E058725544114AE4761A32E51411F85EBE18325544148E17A84A42E5141AE47E1FA80255441A4703DDAA52E5141713D0AE780255441CDCCCC5CA82E51410AD7A3508425544148E17AB4A82E5141EC51B8BE8725544107000000B81E859BA62E514152B81E357B25544148E17A44A32E514185EB5128782554417B14AE77A22E5141AE47E1BA732554410AD7A310A42E51413D0AD7A3722554410AD7A3B0AB2E514185EB5198782554415C8FC2D5AB2E51415C8FC2C57A255441B81E859BA62E514152B81E357B25544105000000295C8FA23B2E5141CDCCCCFC98255441AE47E16A3C2E51411F85EB71982554413D0AD7233D2E51418FC2F55899255441C3F5284C3C2E51411F85EB119A255441295C8FA23B2E5141CDCCCCFC9825544114000000E17A14FE332E5141CDCCCC2C9C2554418FC2F588342E51413D0AD7B39E25544152B81E55332E51411F85EB81A025544185EB5158312E514166666646A325544133333343302E5141F6285C9FA5255441E17A148E2D2E51417B14AEF7A7255441D7A3705D2A2E5141F6285C3FA72554411F85EB51282E5141AE47E10AA6255441EC51B80E272E5141AE47E16AA4255441713D0AD7272E5141B81E852BA1255441F6285C8F282E51419A9999199E25544166666686292E5141AE47E15A9C25544114AE47012A2E514152B81EB59925544114AE47A12B2E5141E17A14CE98255441AE47E14A2C2E5141000000409A255441A4703DEA2D2E51410AD7A3309A255441E17A142E2F2E5141A4703D3A99255441D7A370DD302E5141000000A098255441A4703DCA322E514148E17AC499255441E17A14FE332E5141CDCCCC2C9C25544105000000713D0AC7952E5141AE47E12AE22554410AD7A3D09A2E514185EB51B8E1255441D7A3706D9B2E514148E17A34E825544114AE4761962E514114AE4721E8255441713D0AC7952E5141AE47E12AE225544106000000333333F3392E51418FC2F5E892255441333333933B2E5141EC51B88E952554415C8FC2E53C2E5141666666669625544148E17A743B2E5141B81E857B97255441B81E851B392E51411F85EB9193255441333333F3392E51418FC2F5E8922554410500000052B81E351D2E5141F6285CBFD6255441333333431D2E5141D7A3708DD8255441333333131B2E51419A9999A9D8255441713D0AF71A2E51419A999959D725544152B81E351D2E5141F6285CBFD6255441040000002177CFF54C2E5141D57B470294255441B33ADEEF4C2E5141C552280C9425544152B81E153F2E514114AE4741922554412177CFF54C2E5141D57B470294255441090000006AA33CDA612E514168E49A299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285C4F5E2E5141EC51B8AE992554416AA33CDA612E514168E49A299C25544116000000713D0A27DE2D514133333383E5255441D7A3701DDD2D5141B81E856BE42554419A999939DD2D514152B81ED5E2255441D7A370FDDD2D514152B81EA5E0255441B81E859BDD2D514133333383DE25544133333383DC2D5141333333C3DC255441333333F3DC2D5141D7A3702DDB2554419A999919DE2D514152B81E15DA255441F6285C3FDF2D51417B14AEE7DA255441F6285C1FE02D5141333333E3DB25544152B81E25E22D5141D7A3709DDB255441D7A370ADE32D514114AE47F1DB255441B81E850BE52D5141D7A3705DDD255441B81E85EBE52D514152B81E55DF255441713D0AE7E62D51417B14AEE7E1255441713D0A07E62D5141D7A3700DE3255441B81E859BE42D514152B81E25E425544133333313E32D514114AE4701E6255441B81E85FBE12D51419A9999F9E72554419A9999B9E02D514152B81E15E82554419A9999D9DF2D5141D7A3708DE6255441713D0A27DE2D514133333383E5255441070000009A999929DA2D514152B81E75D0255441B81E851BDA2D5141F6285C6FCE255441333333A3DB2D51417B14AE37CE255441B81E85BBDC2D5141B81E85ABCD255441F6285C5FDE2D514152B81E65CD255441F6285C5FDE2D5141B81E854BD02554419A999929DA2D514152B81E75D02554413700000066666696F42D5141666666D6712554419A9999B9F52D51415C8FC2C56F255441F6285C8FF52D5141F6285C4F6D255441D7A3705DF72D514114AE47F16B25544152B81E05F82D51417B14AE776A255441B81E854BF82D51419A9999A96825544133333313F82D51415C8FC22566255441713D0A57F92D514148E17A6464255441E83A83C7FF2D514172FA38A96C25544100000020FF2D514185EB51F86C2554417B14AE87012E5141713D0AF772255441D7A3705D042E514148E17AC47825544152B81E55072E51419A9999797D255441666666960B2E5141CDCCCCEC81255441D7A3700D112E51418FC2F578852554418FC2F558072E5141A4703D9A692554418FC2F5E80D2E5141CDCCCCFC66255441CDCCCC7C142E5141B81E856B63255441CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441B81E859B152E514100000060BF2554419A999929142E5141B81E853BBE255441333333A3112E5141A4703D5ABE2554410AD7A340102E514148E17AE4BE255441333333630E2E51415C8FC2C5BE255441F6285C1F0D2E51411F85EB91BD2554417B14AEE70D2E51419A999929BB255441E17A14DE0E2E51417B14AE27B825544114AE47910E2E514152B81E25B5255441666666760C2E5141666666D6B1255441000000800B2E514185EB51F8AF255441B81E85EB0B2E51411F85EB71AD25544148E17A040B2E5141F6285C0FAC255441000000E0092E514152B81E45A82554419A9999E9082E5141295C8F42A5255441AE47E12A082E514100000090A325544133333313022E5141CDCCCCECA4255441E17A145E002E5141713D0A97A125544100000090FE2D5141CDCCCC2C9C255441B81E85CBFB2D5141713D0A179325544166666616F92D51410AD7A37088255441A4703DEAF62D51415C8FC2A57A25544166666696F42D5141666666D67125544121000000F6285C0FEE2D5141A4703D3A7425544133333353F22D5141B81E854B86255441EC51B88EF52D514114AE47F19425544152B81E35F92D5141713D0AD7A425544100000050FB2D514100000030A72554413D0AD793FC2D5141AE47E1EAAA2554417B14AEC7FD2D5141EC51B85EAF2554411F85EB61FE2D5141CDCCCC2CB125544100000030002E5141AE47E19AB42554411F85EBA1012E51411F85EB11B72554413D0AD7C3FF2D51413D0AD783B8255441A4703D8AFD2D514152B81E05BA255441B81E85CBFB2D51410AD7A3E0BA255441333333B3FA2D51415C8FC275BB2554419A9999A9F92D5141B81E854BBB25544114AE4791F82D514114AE47F1B825544114AE47D1F62D5141F6285CAFB7255441F6285C8FF52D5141F6285CAFB725544133333343F32D5141B81E85FBB9255441F6285CFFEE2D5141B81E854BBB25544152B81E75EA2D5141F6285C2FBB255441F6285CAFE62D514114AE4761B92554417B14AE07E62D5141D7A370FDB5255441B81E857BE52D51417B14AE37B22554417B14AE87E22D5141D7A3702DAA2554417B14AE37E12D51419A999989A125544114AE4711E02D5141D7A370DD9A25544133333303E02D51417B14AEE794255441B81E851BE12D51415C8FC2858D2554415C8FC2E5E32D5141713D0A778A255441B81E857BE12D51415C8FC2B57925544152B81ED5E72D51416666669676255441F6285C0FEE2D5141A4703D3A742554410A000000E17A14EE052E5141295C8F72D32554418FC2F5C8082E51419A999979DA2554417B14AE47052E51419A9999D9DC255441D7A3700D042E5141F6285CFFDB25544152B81E35012E5141F6285C3FDA255441F6285C0F002E51417B14AEB7D8255441333333F3FF2D514114AE47B1D62554419A999989012E51415C8FC2D5D425544133333373032E514114AE4781D4255441E17A14EE052E5141295C8F72D32554410500000066666636EA2E51419A9999D9A92554410AD7A3A0E72E514166666656A92554415C8FC215E82E51413D0AD773A725544185EB5118EB2E5141D7A370BDA525544166666636EA2E51419A9999D9A92554410500000052B81EB5C02E51410AD7A320C725544152B81EE5C12E51410AD7A350C1255441F6285C7FC92E5141713D0AA7C225544152B81E95C82E5141CDCCCC3CC825544152B81EB5C02E51410AD7A320C72554410500000033333383B52E5141F6285C3FCF25544133333363B62E5141AE47E1FACA25544100000000B82E5141C3F5283CCB25544100000010B72E514152B81E95CF25544133333383B52E5141F6285C3FCF2554410E0000005C8FC265B52E5141333333E3BC255441CDCCCC9CB12E514148E17AD4C3255441D7A3708DB02E514166666666C3255441AE47E1EAAF2E51410AD7A3E0BE25544114AE47C1B32E514166666636B92554411F85EB51BA2E51411F85EB81B125544148E17A34BB2E5141713D0AC7B0255441CDCCCCECBC2E5141AE47E15AAE255441713D0A57BD2E5141F6285C6FAE255441A4703DEABD2E5141C3F5280CAF2554411F85EBF1BD2E5141E17A14FEB0255441CDCCCC0CB82E51419A9999E9B925544148E17A84B62E51418FC2F538BB2554415C8FC265B52E5141333333E3BC2554411B000000E17A14AEBD2E5141295C8F72A5255441F6285C2FBD2E5141EC51B80EA5255441C3F5283CB62E514185EB51089F255441D7A370DDB42E5141CDCCCCEC9A25544148E17A64B12E5141666666169925544148E17AE4B12E514152B81E15962554419A9999D9B42E51419A9999D9922554415C8FC2D5B32E5141D7A370FD91255441713D0AB7B22E5141713D0A579125544152B81E05B22E514148E17A049125544185EB5138B22E5141333333A390255441EC51B8CEB32E514185EB517891255441AE47E14AB72E514148E17A348D255441295C8FF2B82E5141F6285CEF8D255441CDCCCC5CB82E5141333333A38F25544133333323BB2E5141F6285CBF9425544185EB5198BB2E51418FC2F5D89A255441F6285C5FBF2E5141A4703D1A9A25544133333383C12E5141B81E85EB9E255441CDCCCC7CC22E5141B81E85FBA325544133333383C12E514148E17A94A92554418FC2F538C12E514114AE4781AA255441F6285C3FC02E5141B81E855BAA255441333333A3C02E5141CDCCCC4CA3255441713D0A37BF2E5141A4703DCAA225544185EB51C8BD2E5141D7A3704DA4255441E17A14AEBD2E5141295C8F72A52554410600000048E17AF4322E51419A9999090D26544185EB5188302E5141D7A370DD0C26544100000010222E5141E17A143E00265441C3F5288C232E514148E17AD4FE2554417B14AEF7312E514114AE47B10B26544148E17AF4322E51419A9999090D26544107000000713D0A97E52D5141333333E334265441D7A3707DE62D5141295C8F222F265441EC51B84EEB2D5141000000102F2654418FC2F548ED2D5141CDCCCC8C37265441F6285C5FEA2D5141295C8F723826544114AE4721E62D51410AD7A33037265441713D0A97E52D5141333333E3342654410600000048E17A74252E5141F6285CDFF32554418FC2F5B8232E514166666676F2255441C3F5282C252E514114AE4761EC2554410AD7A3F0262E5141295C8FF2EC255441333333A3282E51418FC2F508F225544148E17A74252E5141F6285CDFF3255441050000003D0AD7E3622E5141EC51B8EE1E265441E17A14EE622E5141CDCCCCBC1F26544152B81ED5612E5141C3F528CC1F2654413D0AD7C3612E5141CDCCCCFC1E2654413D0AD7E3622E5141EC51B8EE1E265441390000001F85EB21422E514185EB5168EE255441AE47E10A412E5141E17A145EEB255441E17A147E3D2E514148E17A54E7255441E17A149E3A2E514166666656E5255441333333433B2E5141A4703DDAE9255441D7A370CD372E514114AE4741ED25544152B81E85332E51413D0AD733EB255441713D0A57352E51413D0AD7A3E225544173842B992D2E514142A8BB42DC255441CDCCCCAC2D2E5141295C8F42DC255441B97766972C2E51411EF81E87DB2554418C73085B2D2E5141DD009A8DDA2554417B14AED72F2E51410AD7A350DC25544133333383332E514148E17A34DF25544166666666362E514100000040E1255441B81E85BB3A2E514185EB51A8E325544185EB51283F2E5141A4703D1AE625544166666616402E5141B81E852BE82554411F85EB21422E51413D0AD793EA2554410AD7A3E0432E514185EB51B8EB255441CDCCCCDC452E5141E17A14BEEC25544185EB5198492E51415C8FC295ED255441A4703D3A4E2E5141F6285C3FEE2554410AD7A300542E5141CDCCCC7CEE2554410AD7A340572E5141295C8FE2ED255441CDCCCC3C592E51411F85EBF1ED255441333333D35B2E5141E17A145EEE2554418FC2F5785E2E51411F85EBF1ED255441713D0A27652E5141E17A14BEEC255441B81E852B6B2E514152B81E05EC255441F6285C2F712E5141713D0AD7EB255441D7A3703D762E5141666666E6EB2554419A9999D9792E514185EB51B8EB25544148E17A947D2E5141E17A14BEEC255441B81E85FB842E5141AE47E1AAEE2554418FC2F5088A2E5141EC51B8EEEF255441D7A370AD912E5141295C8FC2F2255441B3ED136E932E514105F1AA90F325544158D689ED922E514168EFA96EF42554419A999979902E5141C3F5285CF3255441295C8F12892E514152B81EE5F025544166666646822E514166666626EF255441AE47E15A7B2E51417B14AE67ED25544100000000762E5141A4703D1AED2554418FC2F538702E5141CDCCCCDCEC255441B81E858B692E514185EB5158ED2554418FC2F5F8642E514152B81EA5ED255441333333B3602E5141AE47E1AAEE255441333333D35B2E5141295C8F82EF2554415C8FC255582E51410AD7A3B0EF25544185EB5148532E514114AE47A1EF2554418FC2F5B84C2E51413D0AD763EF255441D7A3700D492E514185EB51E8EE255441666666E6442E5141333333D3ED255441B81E85CB422E5141F6285C9FEC25544185EB51F8402E51419A999929EB2554411F85EB21422E514185EB5168EE25544109000000295C8FF28A2E5141D7A3702D052654419D6A6B26892E514123BA0A6C0526544166666656892E5141AE47E14A04265441295C8F82872E51419A9999C9032654417B14AEF7862E5141EC51B8AE0126544148E17A44872E51417B14AEC700265441295C8F12892E51418FC2F53802265441AE47E17A8A2E514185EB510803265441295C8FF28A2E5141D7A3702D05265441070000005C8FC245342E5141AE47E1DA4B2654410AD7A3702E2E51415C8FC2B547265441C3F528BC392E51410AD7A33041265441E17A14FE442E514114AE478143265441295C8F92432E51413D0AD7C347265441EC51B83E3A2E51413D0AD713472654415C8FC245342E5141AE47E1DA4B2654410B0000005C8FC2E5292E5141295C8FC2552654413D0AD7F3252E5141295C8FC2552654413D0AD7F3222E5141AE47E1EA53265441CDCCCC6C272E51415C8FC2B54C265441713D0A272A2E51410AD7A3804B265441713D0A672C2E514148E17A744E26544148E17A942E2E5141CDCCCC0C4D2654417B14AE37332E5141A4703DCA4F26544100000000322E514148E17A64532654411F85EBA12C2E5141AE47E19A512654415C8FC2E5292E5141295C8FC2552654411A000000CDCCCCFC632E514152B81EA53B265441E17A14BE652E5141C3F528CC3A26544185EB51E8642E5141F6285C3F3126544148E17A14632E5141666666462E26544148E17A94722E5141000000C021265441E17A14AE742E5141713D0A272426544152B81E35772E5141A4703DEA21265441D7A3707D792E5141295C8F5222265441EC51B82E7A2E514152B81ED523265441E17A146E782E5141B81E856B272654410AD7A360792E51413D0AD7532B265441CDCCCC6C7B2E5141EC51B8FE2F2654418FC2F5587E2E5141F6285C4F39265441CDCCCCDC7C2E5141C3F528BC3B26544152B81E056A2E51411F85EBB13D2654410AD7A360652E5141B81E85DB3E265441B81E858B642E514114AE472142265441E17A14EE662E5141CDCCCC3C44265441F6285C5F662E51417B14AE574726544152B81EA5622E5141666666064A26544133333353632E514166666646502654415C8FC245612E5141B81E859B50265441F6285C7F5F2E5141A4703D3A4B2654411F85EB61622E51413333330347265441F6285CFF5E2E51410000002045265441CDCCCCFC632E514152B81EA53B26544131000000EC51B85E032E5141295C8F32CD2554419A999909052E5141F6285C1FCD255441E17A144E082E51418FC2F5A8CC255441F6285C6F072E5141C3F528CCC9255441B81E85BB092E51418FC2F518C9255441D7A370DD082E5141D7A3707DC725544114AE47A1092E51419A999929C7255441D7A3709D0A2E514152B81E95C82554419A9999090C2E51417B14AE17C82554415C8FC2A50C2E5141D7A370EDC8255441713D0A470E2E514114AE4741C82554419A9999190F2E51417B14AE27CB255441F6285C4F0C2E5141D7A3704DCC255441B81E856B0C2E51419A9999D9CC25544133333393102E51417B14AE77CC25544157E370AA102E514187A908BACB25544127FEC541122E514169E9829ECB255441AB72A50A142E5141FA292B5FCC25544133333313142E5141D7A370BDCC255441713D0A27162E51419A999949CD25544152B81E85172E514114AE47F1CD255441F6285CDF192E514152B81E25CF25544152B81EF51E2E514152B81E35D225544152B81E95212E51419A999959D3255441E17A147E252E5141A4703DEAD42554411F85EB51282E5141666666E6D625544185EB51882C2E514185EB51F8D9255441CFCF5C5A2D2E5141C5A9398ADA2554416969F6932C2E51414A958B82DB25544185EB51E82A2E51413D0AD763DA2554413D0AD783262E5141666666E6D6255441295C8F72232E5141713D0A37D5255441A4703D0A212E5141F6285C5FD425544152B81EF51E2E5141B81E855BD32554419A9999E91A2E5141D7A3701DD125544114AE4711182E5141F6285C4FCF25544152B81E35162E5141B81E858BCE25544152B81E75142E51419A999929CE255441713D0A970F2E514114AE47F1CD2554419A9999D9092E5141B81E851BCE25544152B81EE5062E5141F6285C6FCE25544152B81E95052E514152B81EB5CE2554419A999999042E5141D7A3707DCE255441D7A370ED032E5141AE47E18ACE255441D7A370FD002E514152B81E45CE25544197E616AEFE2D51419D4D22EECD25544183C646C7FE2D5141D4B3A4C8CC255441713D0A47002E514114AE4711CD255441EC51B85E032E5141295C8F32CD2554411700000048E17A84412E51413D0AD7E397265441C3F5280C3C2E51410AD7A350952654410AD7A3003B2E5141E17A14BE922654415C8FC2A53B2E51411F85EB91902654411F85EB11402E5141F6285C3F90265441713D0A47412E5141C3F528FC8B26544152B81EC5432E514152B81E058B2654415C8FC275452E514152B81E258C265441666666D6482E514152B81E958B265441713D0A874A2E5141000000D089265441A4703D1A4D2E5141B81E854B8A265441F6285C1F512E51418FC2F5B887265441E17A140E532E5141295C8F928926544185EB5148582E51418FC2F5688926544148E17A045B2E5141333333F38C2654417B14AE275E2E5141CDCCCC5C8F2654413D0AD703622E514185EB51488F2654418FC2F558642E51411F85EB2191265441666666365A2E514152B81ED594265441713D0AA7522E5141C3F528CC95265441F6285C6F4F2E5141713D0A57922654410AD7A3404B2E5141A4703D7A9526544148E17A84412E51413D0AD7E397265441050000007B14AE47F32E5141D7A3707D45265441A4703DEAF12E5141AE47E19A432654410AD7A340F32E51415C8FC2A542265441A4703D9AF42E514166666676442654417B14AE47F32E5141D7A3707D452654410700000052B81E05D62E5141AE47E1FA52265441713D0AA7D12E51419A9999494D2654419A999939D92E5141CDCCCC0C482654415C8FC2C5DA2E5141CDCCCCDC48265441B81E856BE72E51413333338354265441F6285CBFE12E5141333333E35726544152B81E05D62E5141AE47E1FA5226544108000000295C8FB2B82E5141333333236E265441A4703DDAB82E5141295C8F92722654413D0AD7D3AB2E5141666666F67726544100000070AA2E51418FC2F5B8742654410AD7A3B0AD2E51417B14AE5772265441295C8FC2AE2E51417B14AE4770265441AE47E11AB52E5141CDCCCC0C70265441295C8FB2B82E5141333333236E2654410D000000A4703DDAF32E5141D7A370CD222654418FC2F5F8F42E51418FC2F5882526544114AE4701F72E5141EC51B8BE25265441713D0A87F92E5141295C8F22242654411F85EB61FD2E5141AE47E19A25265441F6285C4FF62E5141AE47E12A3126544100000080F32E51415C8FC2F5302654410AD7A310EA2E51415C8FC2F52F265441D7A3701DE62E51411F85EB312C265441D7A370CDE32E514185EB51F82826544185EB51C8E42E5141D7A3706D27265441C3F5286CEC2E5141B81E85EB27265441A4703DDAF32E5141D7A370CD222654411200000085EB5198B02E51418FC2F5F86326544114AE47C1AF2E514114AE47C1612654410AD7A340B62E5141EC51B83E5D26544100000080C12E51417B14AEE75C26544152B81E65C42E5141A4703DAA63265441AE47E13AC62E51417B14AE0767265441295C8F22C92E51411F85EB9166265441E17A147ECD2E5141295C8FF267265441EC51B89ED12E5141AE47E1BA6526544148E17A24D42E5141B81E85EB5F265441D7A370EDD92E51413D0AD7E35A26544166666606DD2E514148E17A545E265441E17A14DECE2E5141D7A3703D6A2654413D0AD7D3C82E514152B81E256D2654411F85EB11C72E514152B81EC56B265441D7A3707DC12E51413333337361265441C3F5289CBA2E514185EB51386126544185EB5198B02E51418FC2F5F8632654410B000000B81E857B2C2F5141F6285CEF9625544148E17AD42C2F5141AE47E1CA95255441295C8F422E2F5141666666A6942554418FC2F5E82F2F5141E17A149E94255441EC51B84E312F5141AE47E1EA91255441AE47E14A382F5141D7A3707D8E255441EC51B82E392F5141713D0AD790255441AE47E15A322F514100000010952554411F85EB11322F5141E17A147E98255441AE47E16A2E2F5141A4703D9A99255441B81E857B2C2F5141F6285CEF96255441080000000AD7A3600B2F5141E17A141EE0255441EC51B8EE072F51410AD7A330DF255441666666B60B2F51418FC2F528D9255441B81E858B0F2F5141D7A3709DD725544166666606142F5141EC51B84ED9255441713D0A77162F514148E17AE4DC2554415C8FC2C5142F51413D0AD7B3DE2554410AD7A3600B2F5141E17A141EE02554410800000000000090E42C5141C3F528BC4A285441D7A3702DE32C51417B14AEE7482854410AD7A390E22C514185EB5118482854417B14AE47E52C5141AE47E1CA45285441F6285C6FE72C5141E17A14DE47285441B81E85FBE72C514152B81E6549285441CDCCCC3CE72C51413D0AD7234A28544100000090E42C5141C3F528BC4A28544105000000F6285CAFCD2C5141713D0A9749285441CDCCCC3CCE2C5141EC51B83E47285441AE47E17AD12C5141EC51B83E47285441295C8F22D12C514114AE47014A285441F6285CAFCD2C5141713D0A97492854410500000066666696DA2C51411F85EBC1CF285441D7A370ADD72C51419A999919CF2854417B14AED7D72C51415C8FC265CD285441C3F5286CDA2C5141A4703DBACD28544166666696DA2C51411F85EBC1CF28544108000000295C8FC2932C5141A4703DBACD28544185EB51D88F2C5141295C8FF2C9285441C3F528DC8F2C5141EC51B82EC8285441B81E853B912C51418FC2F588C628544185EB5198932C51410AD7A350C62854415C8FC245972C5141A4703DAAC928544114AE4781962C5141295C8F22CC285441295C8FC2932C5141A4703DBACD285441060000008FC2F5F8DA2C5141EC51B83ECC285441E17A148ED82C514185EB51F8CB2854413D0AD763D82C51411F85EBA1C7285441A4703D7ADA2C5141713D0A07C728544152B81E85DB2C5141A4703DAAC92854418FC2F5F8DA2C5141EC51B83ECC2854410A0000003D0AD7738B2C5141B81E853BC32854415C8FC2D58A2C5141713D0A47C3285441C3F528BC892C51419A9999E9C1285441C3F528BC892C5141F6285C9FBF285441C3F528EC8A2C5141D7A3704DBE2854410AD7A3708A2C5141D7A3701DBD2854413D0AD7A38C2C5141A4703D4ABD28544152B81E858D2C51417B14AEA7BE285441C3F528AC8B2C5141F6285C5FC02854413D0AD7738B2C5141B81E853BC3285441070000000AD7A300FE2C5141AE47E15A7C285441AE47E11AFF2C51415C8FC2357B285441713D0A97012D5141666666467D28544114AE4751012D5141000000907D2854410AD7A380FF2C5141713D0AB77F2854410AD7A390FD2C51413D0AD7137E2854410AD7A300FE2C5141AE47E15A7C2854410D00000085EB5158CE2C5141D7A370DDB928544114AE4741CC2C51419A9999D9B8285441F6285CBFCB2C5141D7A3704DB5285441F6285C2FCD2C51415C8FC265AF285441B81E85BBCE2C514114AE4741AE285441EC51B8BED42C514166666636B3285441295C8FF2D42C5141C3F5286CB42854413D0AD7C3D42C51419A9999C9B5285441AE47E19AD32C514185EB5168B8285441713D0A77D22C51418FC2F598B8285441295C8F42D12C514185EB5168B8285441E17A14DECF2C5141B81E855BB928544185EB5158CE2C5141D7A370DDB9285441450000003D0AD7A3D12C5141D7A370CD9928544166666636D22C51413D0AD7939B28544100000020D52C51413D0AD7A39B285441295C8FB2D52C514185EB51E89C285441EC51B8AED42C5141EC51B8CE9E2854411F85EB91D52C5141666666E6A02854411F85EB91D52C5141F6285C6FA3285441C3F5289CD82C51411F85EB31A4285441000000B0D92C5141E17A14AEA72854417B14AE47D72C5141F6285CAFAC285441333333E3D52C514114AE4751AD28544133333343D42C5141D7A370ADA92854410AD7A3C0CF2C5141D7A370ADA92854411F85EBC1CE2C5141F6285C6FAB2854415C8FC275CD2C5141D7A370BDAB28544185EB51C8CA2C51417B14AE77A628544152B81E65CB2C5141F6285CCFA0285441295C8F22CA2C514185EB51F89F285441666666B6C92C5141EC51B8FEA1285441EC51B8BEC42C514185EB5158A728544148E17A44C12C5141D7A370BDA5285441EC51B80EBE2C51410AD7A3B0A728544152B81E25BC2C51411F85EB01A628544152B81EC5BA2C5141EC51B8FEA728544152B81E65B92C5141EC51B84EA728544185EB5178B92C5141713D0A17A52854418FC2F598B72C51413D0AD753A4285441295C8F42B62C514166666696A5285441AE47E14AB72C51419A9999D9A62854411F85EB71B72C51413D0AD7C3A7285441713D0A87B62C51418FC2F5B8A828544185EB5178B32C51410AD7A300A728544148E17A54B12C5141E17A143EA52854411F85EBD1AC2C5141666666E6A42854415C8FC2E5AC2C51419A9999D9A6285441000000C0AB2C51410AD7A360A828544166666606AB2C5141E17A147EA8285441295C8F42AA2C514152B81EB5A4285441C3F528ECA22C51410AD7A370A4285441F6285C9FA12C514185EB5148A52854418FC2F5989F2C51410AD7A370A42854417B14AE679F2C514152B81E45A1285441F6285C4F9C2C5141E17A148E9E285441D7A370ED9B2C51413D0AD7139B285441333333839A2C5141000000509A285441F6285CAF972C5141000000509A2854413D0AD7C3952C5141F6285C3F96285441F6285C2F9B2C5141AE47E1BA96285441D7A370AD9E2C51413333333394285441AE47E1EA9E2C5141333333E395285441C3F5281C9D2C5141F6285CEF97285441295C8FC29F2C5141CDCCCC2C98285441AE47E1DAA32C5141713D0AD79328544100000050A82C51415C8FC2F5932854417B14AE27A92C51411F85EB01962854410AD7A390AB2C51410AD7A320962854413D0AD7E3AC2C5141000000E0922854413D0AD793BA2C5141AE47E1DA8F28544100000010BE2C51411F85EBF191285441AE47E19AC02C5141EC51B8EE9428544148E17A64BF2C5141AE47E10A99285441CDCCCCBCC12C51418FC2F5289D285441F6285CAFCB2C51419A9999B9982854410AD7A300CC2C5141333333D39628544152B81ED5C82C5141AE47E18A942854418FC2F5C8C92C5141713D0A5793285441AE47E1FACE2C5141EC51B89E952854419A9999A9CE2C5141C3F5285C992854413D0AD7A3D12C5141D7A370CD992854410C00000052B81EC5C42C5141C3F5287C9A2754413D0AD7F3C32C5141333333439B275441000000A0C22C5141B81E858B9C27544114AE4761C22C51417B14AEC79C2754415C8FC2B5BE2C5141B81E85FB9827544100000030C12C5141F6285CAF95275441AE47E16AC22C51413D0AD79395275441EC51B8AEC32C514114AE47619627544133333333C42C5141B81E851B98275441EC51B8EEC32C514100000000992754417B14AE17C52C5141E17A142E9A27544152B81EC5C42C5141C3F5287C9A27544107000000E17A14DEBD2C5141CDCCCC7CAA2754411F85EB61BD2C51418FC2F578AA275441713D0A77BD2C514152B81E05A72754419A9999A9C12C5141295C8F32A72754410AD7A3A0C12C514185EB5198AA275441713D0A17C12C514148E17A94AA275441E17A14DEBD2C5141CDCCCC7CAA275441130000008FC2F5688C2C51415C8FC2E5E1275441713D0A47812C5141EC51B80EDE275441295C8FE2802C51410AD7A330D5275441B81E853B842C51417B14AE17D5275441333333D3842C51419A999989CB275441F6285CCF852C5141D7A370FDC727544152B81E258A2C5141295C8FA2CB275441666666368C2C5141AE47E16AD327544185EB51488E2C5141CDCCCCECD2275441A4703DCA8D2C5141666666E6CD275441AE47E16A922C5141D7A3705DD0275441E17A144E932C51419A999999D4275441666666C68E2C5141E17A144ED4275441B81E85DB8F2C51413D0AD753D9275441AE47E16A922C514166666686D9275441713D0A67932C514114AE47F1DE275441713D0A27902C514148E17AA4E5275441A4703D7A8E2C5141B81E853BE62754418FC2F5688C2C51415C8FC2E5E1275441070000003D0AD7D3CE2C51413D0AD743EE2754418FC2F528D02C51413D0AD793F12754413D0AD7E3CF2C5141EC51B8EEF2275441CDCCCC4CCE2C51411F85EB51F3275441A4703D1ACD2C51413D0AD713F22754415C8FC215CC2C51410AD7A350EF2754413D0AD7D3CE2C51413D0AD743EE2754410B000000EC51B8CED82C51415C8FC275EF2754415C8FC235D72C51418FC2F518EF275441E17A141ED72C514114AE4761ED2754411F85EB91D42C51418FC2F518EE2754417B14AE87D32C51419A999969EA275441295C8FA2D42C514185EB5128E9275441713D0AB7D52C514152B81EE5E8275441CDCCCC0CD82C5141D7A370BDE927544152B81EE5D82C51419A999929EC2754411F85EB11D92C5141713D0A17EE275441EC51B8CED82C51415C8FC275EF275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538894 - 3205067
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000006000000E5000000661FDAE9A42E5141D24D87AADE2554418FC2F588A52E514166666636DD255441B81E85AB9B2E5141AE47E14AD0255441D7A370CD922E5141D7A370ADC42554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF255441A4703DDA612E51419A9999299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE19425544152B81E153F2E514114AE474192255441CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441B81E859B152E514100000060BF2554419A999929142E5141B81E853BBE255441333333A3112E5141A4703D5ABE2554410AD7A340102E514148E17AE4BE255441333333630E2E51415C8FC2C5BE255441F6285C1F0D2E51411F85EB91BD2554417B14AEE70D2E51419A999929BB255441E17A14DE0E2E51417B14AE27B825544114AE47910E2E514152B81E25B5255441666666760C2E5141666666D6B1255441000000800B2E514185EB51F8AF255441B81E85EB0B2E51411F85EB71AD25544148E17A040B2E5141F6285C0FAC255441000000E0092E514152B81E45A82554419A9999E9082E5141295C8F42A5255441AE47E12A082E514100000090A325544133333313022E5141CDCCCCECA4255441E17A145E002E5141713D0A97A125544100000090FE2D5141CDCCCC2C9C255441B81E85CBFB2D5141713D0A179325544166666616F92D51410AD7A37088255441A4703DEAF62D51415C8FC2A57A25544166666696F42D5141666666D671255441F6285C0FEE2D5141A4703D3A7425544133333353F22D5141B81E854B86255441EC51B88EF52D514114AE47F19425544152B81E35F92D5141713D0AD7A425544100000050FB2D514100000030A72554413D0AD793FC2D5141AE47E1EAAA2554417B14AEC7FD2D5141EC51B85EAF2554411F85EB61FE2D5141CDCCCC2CB125544100000030002E5141AE47E19AB42554411F85EBA1012E51411F85EB11B72554413D0AD7C3FF2D51413D0AD783B8255441A4703D8AFD2D514152B81E05BA255441B81E85CBFB2D51410AD7A3E0BA2554410AD7A320FD2D5141EC51B81EBE255441EC51B85E032E5141295C8F32CD2554419A999909052E5141F6285C1FCD255441E17A144E082E51418FC2F5A8CC255441F6285C6F072E5141C3F528CCC9255441B81E85BB092E51418FC2F518C9255441D7A370DD082E5141D7A3707DC725544114AE47A1092E51419A999929C7255441D7A3709D0A2E514152B81E95C82554419A9999090C2E51417B14AE17C82554415C8FC2A50C2E5141D7A370EDC8255441713D0A470E2E514114AE4741C82554419A9999190F2E51417B14AE27CB255441F6285C4F0C2E5141D7A3704DCC255441B81E856B0C2E51419A9999D9CC25544133333393102E51417B14AE77CC2554419A9999D9102E51419A999919CB255441D7A3700D122E5141B81E850BCB255441F6285CBF132E514152B81EA5CB25544133333313142E5141D7A370BDCC255441713D0A27162E51419A999949CD25544152B81E85172E514114AE47F1CD255441F6285CDF192E514152B81E25CF25544152B81EF51E2E514152B81E35D225544152B81E95212E51419A999959D3255441E17A147E252E5141A4703DEAD42554411F85EB51282E5141666666E6D625544185EB51882C2E514185EB51F8D9255441477A6EDB2D2E51418E1391E8DA25544181CF8FF22C2E5141A51928CEDB25544185EB51E82A2E51413D0AD763DA2554413D0AD783262E5141666666E6D6255441295C8F72232E5141713D0A37D5255441A4703D0A212E5141F6285C5FD425544152B81EF51E2E5141B81E855BD32554419A9999E91A2E5141D7A3701DD125544114AE4711182E5141F6285C4FCF25544152B81E35162E5141B81E858BCE25544152B81E75142E51419A999929CE255441713D0A970F2E514114AE47F1CD2554419A9999D9092E5141B81E851BCE25544152B81EE5062E5141F6285C6FCE25544152B81E95052E514152B81EB5CE2554419A999999042E5141D7A3707DCE255441D7A370ED032E5141AE47E18ACE2554417B14AE87042E514100000000D0255441E17A14EE052E5141295C8F72D32554418FC2F5C8082E51419A999979DA2554417B14AE47052E51419A9999D9DC255441EC51B83E062E5141AE47E1CAE02554411F85EB61072E51417B14AEC7E0255441C3F528DC0F2E51413D0AD7A3E02554419A9999E9202E5141F6285C5FDC255441CDCCCCAC2D2E5141295C8F42DC25544165F42DFB2C2E51416C5333D4DB255441CB5A94E12D2E5141F13E85ECDA2554417B14AED72F2E51410AD7A350DC25544133333383332E514148E17A34DF25544166666666362E514100000040E1255441B81E85BB3A2E514185EB51A8E325544185EB51283F2E5141A4703D1AE625544166666616402E5141B81E852BE82554411F85EB21422E51413D0AD793EA2554410AD7A3E0432E514185EB51B8EB255441CDCCCCDC452E5141E17A14BEEC25544185EB5198492E51415C8FC295ED255441A4703D3A4E2E5141F6285C3FEE2554410AD7A300542E5141CDCCCC7CEE2554410AD7A340572E5141295C8FE2ED255441CDCCCC3C592E51411F85EBF1ED255441333333D35B2E5141E17A145EEE2554418FC2F5785E2E51411F85EBF1ED255441713D0A27652E5141E17A14BEEC255441B81E852B6B2E514152B81E05EC255441F6285C2F712E5141713D0AD7EB255441D7A3703D762E5141666666E6EB2554419A9999D9792E514185EB51B8EB25544148E17A947D2E5141E17A14BEEC255441B81E85FB842E5141AE47E1AAEE2554418FC2F5088A2E5141EC51B8EEEF255441D7A370AD912E5141295C8FC2F22554419A9999E9962E5141A4703D2AF5255441EC51B83E9B2E5141713D0A27F7255441BA136EC39B2E51419B351F6CF7255441F31B28AE9B2E51416DB0CD9BF725544157EEC1A49B2E5141E2A49BACF7255441F3CA94569B2E5141FDFBE94FF8255441295C8FA2972E5141D7A3707DF62554419A999979902E5141C3F5285CF3255441295C8F12892E514152B81EE5F025544166666646822E514166666626EF255441AE47E15A7B2E51417B14AE67ED25544100000000762E5141A4703D1AED2554418FC2F538702E5141CDCCCCDCEC255441B81E858B692E514185EB5158ED2554418FC2F5F8642E514152B81EA5ED255441333333B3602E5141AE47E1AAEE255441333333D35B2E5141295C8F82EF2554415C8FC255582E51410AD7A3B0EF25544185EB5148532E514114AE47A1EF2554418FC2F5B84C2E51413D0AD763EF255441D7A3700D492E514185EB51E8EE255441666666E6442E5141333333D3ED255441B81E85CB422E5141F6285C9FEC255441240F2CFC402E5141B103B208EB2554411F85EB21422E514185EB5168EE25544166666696482E514114AE47A1FF2554415C8FC2A55C2E5141AE47E1DA03265441F6285C6F742E5141D7A3703D0826544166666626892E5141C3F5286C0526544166666656892E5141AE47E14A04265441295C8F82872E51419A9999C9032654417B14AEF7862E5141EC51B8AE0126544148E17A44872E51417B14AEC700265441295C8F12892E51418FC2F53802265441AE47E17A8A2E514185EB510803265441295C8FF28A2E5141D7A3702D052654418FC2F5A88E2E5141C3F528AC0426544185EB51389D2E514114AE47B10226544152B81E759E2E5141D7A370ADFE2554410AD7A3E09C2E514152B81EC5FE255441AE47E10A9A2E51417B14AE77FF255441666666D6982E51415C8FC275FA25544114AE47F19A2E5141A4703D0AFA2554411F85EBE19A2E51415C8FC2E5F8255441B81E858B9B2E5141A4703D6AF8255441F6D7E75A9B2E5141818F6656F8255441E294EBA79B2E514116752AB4F7255441F74233C99B2E5141B00EC46DF7255441F6285C6F9D2E5141AE47E14AF8255441F42996619E2E5141B5CA48A7F82554416A0AA2B09F2E51418701EF8BF8255441B81E856BA02E5141000000D0F7255441C3F528ECA02E514133333313F72554413D0AD7F3A12E514152B81E55F0255441EC51B83EA32E51418FC2F5A8EA255441713D0AD7A32E5141713D0A27E725544133333353A42E5141AE47E10AE0255441B606CCE6A42E514145AE74AFDE255441DD516D8EA62E5141852D8F4DDF2554417B14AE07A62E5141F6285C1FE1255441295C8F92A52E5141D7A3702DE7255441C3F528DCA42E51418FC2F5E8EA255441D7A3708DA32E5141AE47E19AF02554411F85EB01A32E5141C3F5289CF625544100000060A22E514114AE4731FA2554419A9999C9A32E5141F6285C7FF92554410AD7A3B0A42E5141C3F5283CF8255441D7A3700DA52E5141A4703DCAF62554413D0AD703A62E51419A999949F52554415C8FC275A72E5141295C8F62F4255441B81E850BAA2E5141666666F6F3255441333333E3AA2E5141666666C6F0255441000000A0A82E5141F6285C4FEE25544148E17A34A92E51413D0AD723EC2554417B14AE77AA2E51410AD7A3E0EA255441B81E850BAB2E514148E17AF4E825544166666696AA2E51415C8FC225E72554414A44360FA82E51417228DBF2E72554413E8AB299A72E514108C043DAE3255441713D0A47A72E5141C3F5280CE0255441713D0AB7A62E5141295C8FC2DE255441BF893695A62E5141B7596143DF255441661FDAE9A42E5141D24D87AADE25544105000000295C8FA23B2E5141CDCCCCFC98255441AE47E16A3C2E51411F85EB71982554413D0AD7233D2E51418FC2F55899255441C3F5284C3C2E51411F85EB119A255441295C8FA23B2E5141CDCCCCFC9825544114000000E17A14FE332E5141CDCCCC2C9C2554418FC2F588342E51413D0AD7B39E25544152B81E55332E51411F85EB81A025544185EB5158312E514166666646A325544133333343302E5141F6285C9FA5255441E17A148E2D2E51417B14AEF7A7255441D7A3705D2A2E5141F6285C3FA72554411F85EB51282E5141AE47E10AA6255441EC51B80E272E5141AE47E16AA4255441713D0AD7272E5141B81E852BA1255441F6285C8F282E51419A9999199E25544166666686292E5141AE47E15A9C25544114AE47012A2E514152B81EB59925544114AE47A12B2E5141E17A14CE98255441AE47E14A2C2E5141000000409A255441A4703DEA2D2E51410AD7A3309A255441E17A142E2F2E5141A4703D3A99255441D7A370DD302E5141000000A098255441A4703DCA322E514148E17AC499255441E17A14FE332E5141CDCCCC2C9C25544105000000713D0AC7952E5141AE47E12AE22554410AD7A3D09A2E514185EB51B8E1255441D7A3706D9B2E514148E17A34E825544114AE4761962E514114AE4721E8255441713D0AC7952E5141AE47E12AE225544106000000333333F3392E51418FC2F5E892255441333333933B2E5141EC51B88E952554415C8FC2E53C2E5141666666669625544148E17A743B2E5141B81E857B97255441B81E851B392E51411F85EB9193255441333333F3392E51418FC2F5E8922554410500000052B81E351D2E5141F6285CBFD6255441333333431D2E5141D7A3708DD8255441333333131B2E51419A9999A9D8255441713D0AF71A2E51419A999959D725544152B81E351D2E5141F6285CBFD6255441
+</a>
+
+<b>
+010600000001000000010300000037000000BD08000066EC9D7EB52C51410DA928308727544148E17A74AE2C514114AE47A1862754411F85EBB1A52C51419A9999D9872754418FC2F598A02C5141AE47E1EA862754413D0AD7D3952C5141E17A146E89275441E17A144E912C51410AD7A310882754417B14AE378E2C5141666666B6882754410AD7A340872C5141CDCCCCBC8D275441D7A3700D7C2C5141F6285CBF8F275441CDCCCC8C7B2C51415C8FC2E5902754418FC2F5787D2C51418FC2F5C891275441AE47E1AA792C5141713D0A67A427544114AE47C16D2C5141EC51B81EA727544185EB51C8722C5141C3F528FCA8275441B81E856B722C5141713D0A47AB275441666666266C2C514152B81E95B0275441E17A143E662C5141EC51B8FEB2275441AE47E13A5E2C5141E17A146EA92754418FC2F558552C5141C3F5284CA82754417B14AE27542C514148E17A84AB275441EC51B83E4E2C5141CDCCCC0CAE27544166666656482C5141B81E851BBA2754410AD7A3C0472C5141713D0A17BC275441EC51B83E522C5141C3F5282CC2275441000000B0562C5141000000D0BE275441000000105A2C514133333323C027544166666636602C51419A9999B9BD2754410AD7A3106B2C514166666616BE27544114AE47716E2C514148E17A04C02754418FC2F5986D2C5141B81E85ABC22754410AD7A360692C514148E17A64C3275441666666266C2C5141D7A3704DC9275441A4703DDA702C514166666656C82754419A999979722C51411F85EB41C8275441A4703D4A732C5141F6285C1FCD2754413D0AD7B37A2C51415C8FC235CE27544114AE47117C2C5141F6285C9FD12754419A9999397B2C5141CDCCCC6CDA275441B81E854B792C514185EB51E8DA275441E17A14DE732C5141CDCCCC6CDA275441EC51B88E752C514166666646D4275441A4703D2A6F2C5141C3F528FCD12754411F85EB41692C51411F85EBC1D4275441EC51B85E612C514148E17A14D7275441A4703DCA5D2C5141B81E85ABCC27544114AE47E1522C51415C8FC295CC275441713D0A77502C514114AE47C1C8275441295C8FA2492C514166666656CA27544185EB5138462C5141AE47E1AAD0275441D7A3700D492C5141A4703D6AD2275441CDCCCC8C4D2C5141AE47E16ACF275441B81E858B542C5141AE47E1EAD02754411F85EB214E2C5141295C8F92E12754418FC2F548662C5141666666E6ED275441F6285C7F692C5141A4703D0AF62754419A999959742C514148E17A54F8275441333333C3762C514152B81E65FD2754419A9999F9702C51417B14AE8700285441666666266C2C514148E17A34FF2754419A9999196A2C51419A9999E9FC275441666666766A2C514152B81E05FA275441CDCCCC5C662C51413D0AD723FA275441CDCCCCAC642C5141F6285C4FFC275441000000F0602C5141E17A14BEFA275441295C8F12642C5141666666B6F42754415C8FC275592C5141B81E859BF72754419A9999E9532C51410AD7A350F527544152B81E75482C5141666666D6DC27544152B81EB5432C5141F6285CFFDC275441D7A370ED3D2C5141AE47E1DACF27544152B81E75362C5141F6285CDFB727544133333313342C51417B14AEB7BA275441713D0A67372C5141CDCCCC0CC927544100000070312C5141295C8FF2DA27544152B81E95332C5141333333E3DF275441E17A143E382C514114AE4701E1275441713D0AE73C2C5141A4703D0ADB2754419A999989402C5141000000F0E1275441B81E856B3F2C51410AD7A360EC275441EC51B85E3D2C5141CDCCCC7CF427544148E17AD42D2C5141000000E0F727544114AE4741302C514114AE4741FB2754411F85EBD1302C51411F85EBD1FB27544185EB5138332C5141713D0A07FE27544185EB5178332C51411F85EBB1FE275441CDCCCCCC332C514166666676FF27544166666616342C5141713D0AD7FF2754417B14AEB7342C5141B81E858B00285441F6285CAF352C5141B81E857B0128544100000010362C51410AD7A330022854410AD7A360372C514148E17AF40428544166666626392C5141A4703D0A0928544185EB5148392C51417B14AE470A2854419A999969392C5141AE47E15A0B285441D7A370BD392C5141E17A14BE0B285441EC51B81E3A2C51415C8FC2550C2854419A9999893A2C514152B81E250D285441000000303B2C51418FC2F5B80F2854411F85EBA1402C514114AE4791112854415C8FC275482C5141B81E85FB1A28544152B81EB54E2C5141295C8F721B2854413D0AD7734F2C5141A4703D3A21285441CDCCCC3C4B2C5141295C8F6223285441AE47E17A4C2C5141000000302528544185EB51E84C2C51410AD7A3B0252854413D0AD7B34E2C5141EC51B84E2628544152B81E05542C514148E17A242528544166666666582C514114AE47612728544148E17AF4542C514148E17A742C285441A4703DBA552C5141000000802D285441AE47E1CA562C5141000000002F285441B81E856B572C514152B81EB52F285441C3F5282C592C514148E17A44312854410AD7A3D05A2C51418FC2F578322854417B14AE275B2C5141AE47E1EA34285441713D0A875B2C5141295C8F4237285441333333735B2C51417B14AEC739285441CDCCCC6C5C2C514114AE47313B285441A4703DCA5D2C51418FC2F5283D285441F6285C6F5F2C51411F85EB013F285441A4703D1A612C514152B81E7540285441EC51B8FE642C5141E17A144E43285441C3F528AC652C51418FC2F5C843285441A4703D4A662C514148E17A6445285441295C8FD2662C5141D7A3708D46285441EC51B88E672C5141C3F528CC4728544114AE4761682C51413D0AD79348285441C3F528AC692C5141EC51B88E492854410AD7A3206B2C51418FC2F5F849285441F6285C6F6C2C514114AE47014A285441F6285CDF6D2C51411F85EB414A28544152B81E656E2C5141EC51B88E4A2854417B14AE476E2C5141333333634B2854415C8FC295722C5141E17A14BE55285441B81E85EB742C5141A4703D8A5F285441CDCCCCEC752C5141AE47E16A602854410AD7A320772C51418FC2F53860285441000000D0782C5141F6285CAF5C2854413D0AD733792C5141CDCCCC3C52285441A4703D7A762C51413D0AD74346285441A4703D2A782C51413D0AD7B343285441713D0A677A2C5141B81E85AB43285441F6285C7F7F2C51417B14AE073928544100000040812C514100000010392854413D0AD7F3812C5141F6285C6F3628544152B81EB5832C51418FC2F5583A28544114AE47D1842C514185EB51083D28544166666666852C51413D0AD76342285441E17A145E852C51418FC2F56844285441B81E858B842C51413D0AD7A3492854411F85EB81802C5141EC51B80E592854410AD7A3E07E2C514185EB51D85C285441C3F528CC7C2C5141666666565E285441CDCCCCCC792C5141B81E85CB5F28544185EB51F8772C5141CDCCCC0C62285441D7A3705D772C514148E17A34652854410AD7A310792C5141CDCCCCDC66285441666666167A2C51417B14AE27672854411F85EB417A2C5141333333C3682854417B14AE477A2C51415C8FC29569285441D7A3701D7A2C51413D0AD7636A2854410AD7A390792C5141B81E855B6B2854418FC2F5B8782C5141EC51B8FE6C285441F6285C2F792C5141E17A146E6D2854418FC2F5287A2C5141295C8F526E2854418FC2F5C87A2C51410AD7A3306F2854410AD7A3507B2C514152B81ED56F285441666666D67B2C51413D0AD7A370285441000000507C2C5141C3F5288C7128544152B81E757C2C5141E17A144E722854419A9999497C2C5141295C8FF272285441CDCCCCEC7B2C5141F6285CCF732854419A9999A97C2C514185EB515874285441713D0AA77D2C51410AD7A3A07128544133333333812C51419A9999397128544166666646862C5141CDCCCC5C6D285441A4703D0A8E2C51413D0AD7036C2854417B14AE27902C51411F85EBE16728544152B81E25932C514148E17AA4662854410AD7A3C0992C514185EB513867285441AE47E15A9B2C51411F85EB7167285441666666569C2C5141295C8F526528544152B81EF5A52C5141666666E66228544148E17A94A52C51416666666660285441D7A370FD9E2C5141C3F5282C60285441CDCCCC9C992C5141CDCCCC8C6028544152B81E15942C5141000000305A28544114AE4711952C5141E17A14FE52285441EC51B89E972C5141F6285CAF50285441295C8F52A22C514148E17A344F285441295C8FC2AD2C51413333336352285441295C8FE2BF2C5141000000F04B285441EC51B80EC32C5141E17A142E51285441C3F528ECC62C5141AE47E15A52285441B81E858BC92C5141A4703D5A4E285441B81E85DBCC2C514152B81E2550285441F6285CAFCD2C5141F6285CDF53285441E17A149ED12C5141B81E850B55285441295C8F72D42C5141333333634F28544185EB5158D72C5141A4703D5A4E285441B81E856BDF2C51415C8FC2D55028544166666636E12C5141333333035A285441C3F5286CE32C514114AE47915C2854417B14AEE7E32C5141E17A14BE61285441F6285CDFE62C5141A4703DEA62285441AE47E15AE72C51416666666667285441EC51B80EE32C5141CDCCCC3C6A2854415C8FC285E02C51418FC2F5286A2854411F85EBB1DD2C5141713D0AB76E285441C3F5281CE22C514185EB51187028544185EB5198E42C51415C8FC2556D28544100000040E62C5141B81E853B6E285441713D0AE7E12C5141B81E85DB742854413D0AD773DE2C5141C3F5283C7428544185EB5118D92C5141B81E858B7A285441000000C0D82C5141713D0AA77A285441B81E853BD82C51419A9999F97A28544114AE47B1D72C51413D0AD7837B285441713D0A27D72C5141F6285CBF7C28544185EB51B8D62C5141EC51B84E7D285441295C8F12D62C5141F6285CEF7D285441F6285C1FD52C514148E17A847E285441713D0AA7D32C51415C8FC2357F2854419A9999F9D02C5141A4703D4A8028544114AE4711CD2C5141E17A14EE812854413D0AD7A3C82C514185EB51388428544148E17A34C52C514152B81E4586285441A4703DAAC42C5141EC51B8AE86285441F6285C3FC22C5141000000408B2854413D0AD7F3BF2C51419A9999C98C285441CDCCCC0CB92C5141000000508E285441D7A3709DAE2C5141B81E85FB8B285441295C8FF2A52C5141F6285C6F8F2854418FC2F588962C514185EB51B890285441295C8F828E2C5141CDCCCC5C91285441A4703DAA892C514148E17A2493285441F6285C6F892C514148E17A8496285441E17A14AE8B2C5141E17A14AE962854417B14AE178D2C5141A4703D2A9528544148E17AF48F2C51418FC2F5F894285441333333C3972C5141D7A3705D9E2854419A9999C9992C5141713D0A679E285441F6285C4F9C2C5141713D0A57A2285441AE47E15A952C5141713D0A57A22854417B14AEC7942C514152B81E05A428544114AE4711982C514152B81E45A72854413D0AD7F3972C5141E17A146EAC28544166666626972C5141E17A146EAC285441C3F5280C952C51419A999999A928544166666626912C514166666696AB28544185EB51488E2C5141B81E85ABB0285441333333338F2C5141D7A370BDB1285441EC51B82E922C5141E17A147EAE2854411F85EBB1932C5141295C8FF2AF285441B81E858B8F2C514100000090B52854413D0AD7938E2C514100000070B7285441295C8FF28C2C51411F85EB91B7285441C3F528AC8B2C5141CDCCCC8CB92854411F85EB218A2C51417B14AE27B92854410AD7A3A08B2C5141713D0A67B4285441713D0A878A2C5141F6285C2FAD28544185EB51688B2C5141AE47E14AAB285441B81E853B8B2C5141E17A142EA928544185EB5148882C514148E17A44A9285441CDCCCCCC872C5141A4703D9AA42854418FC2F558862C5141B81E857BA52854413D0AD743832C514148E17AF4A4285441A4703D2A822C514114AE4711A728544148E17A347E2C514114AE4751A6285441E17A14CE792C514166666676A72854418FC2F5A8782C5141F6285CEFA6285441000000D0762C5141A4703DCAA5285441D7A3706D772C51413D0AD783A4285441295C8FC2792C51419A999929A42854419A9999097B2C5141C3F528CCA2285441333333537D2C5141F6285C9FA2285441E17A143E812C5141C3F528CCA228544185EB5128852C5141B81E858BA3285441AE47E1BA852C51415C8FC2B5A2285441EC51B80E842C5141E17A14BEA1285441F6285C5F812C514148E17AD4A12854415C8FC205812C5141CDCCCC1CA028544152B81EF5822C5141A4703D8A9F2854413D0AD703842C5141EC51B80E9F285441000000C0832C51417B14AE979C285441CDCCCCAC812C5141B81E858B9B285441D7A3708D7E2C51417B14AE879728544152B81E957D2C5141000000E095285441295C8FA27F2C514148E17A6494285441333333E3822C51413D0AD7C393285441F6285CAF832C5141AE47E12A92285441E17A14DE7D2C5141E17A14AE92285441666666467A2C51413D0AD72391285441EC51B8EE792C51413D0AD7338F2854417B14AE877B2C5141A4703D4A8E285441295C8FB27D2C5141295C8F428F285441713D0AC7802C514185EB51B88D28544166666606862C514148E17AD48F285441295C8FD2862C514148E17A848E2854410AD7A300892C5141713D0A678E2854418FC2F5788A2C51418FC2F5B88B28544148E17AF48B2C514152B81E958A285441295C8FE2932C5141000000D088285441F6285C4F952C5141AE47E1BA872854411F85EB31952C51415C8FC25585285441B81E854B8E2C5141713D0A47852854413D0AD763882C5141AE47E1DA87285441A4703D3A862C514166666646882854411F85EB617A2C51410AD7A3407C28544133333303782C5141EC51B8DE7B28544100000070732C5141B81E858B7A285441AE47E1FA6E2C5141F6285C6F7D285441E17A144E702C51415C8FC21580285441AE47E1FA6E2C514114AE4741822854419A9999296A2C51415C8FC2C58128544148E17A64672C51416666665683285441333333D3652C5141333333A3882854417B14AE17622C5141EC51B81E89285441AE47E10A602C5141A4703DAA872854415C8FC2855D2C51410AD7A3F087285441333333335C2C5141AE47E14A88285441B81E854B5A2C5141295C8FC2882854411F85EB91592C514185EB512889285441333333C3582C514114AE47B1892854415C8FC275582C5141713D0A178A285441B81E857B582C51410AD7A3F08A2854410AD7A380582C51413D0AD7B38B2854415C8FC275582C514114AE47818C285441713D0A47582C5141295C8F228D285441A4703DFA572C51417B14AE978D2854415C8FC255572C5141666666568E2854410AD7A3B05A2C5141295C8F928E285441333333035D2C5141295C8FD28E285441295C8F325F2C514114AE47418F28544185EB51A8612C51417B14AE079028544148E17AB4622C51411F85EB819028544166666686632C5141F6285C1F912854413D0AD763642C5141B81E85EB91285441713D0A07652C5141713D0A7791285441713D0AF7672C51418FC2F5D88F2854410AD7A320692C5141333333538F2854417B14AE676B2C514185EB51D88E28544152B81E056C2C5141CDCCCCCC8E2854419A9999B96C2C5141295C8FD28E2854413D0AD7336D2C51415C8FC2F58E285441CDCCCC9C6D2C5141000000308F2854411F85EB916E2C51410AD7A37090285441000000F06F2C5141B81E856B9228544148E17A64702C51418FC2F5C8922854419A999999712C5141AE47E11A93285441C3F5282C742C5141666666269328544152B81E15752C51418FC2F54893285441A4703DCA752C51417B14AE77932854415C8FC255762C5141F6285CCF93285441333333F3762C514185EB51789428544185EB51E8772C5141333333F3952854411F85EBC17B2C51413D0AD71395285441B81E85AB7C2C5141666666969728544152B81E95802C514114AE47819C285441F6285C2F802C514114AE47D1A02854419A9999597F2C5141C3F528DCA0285441000000407E2C514114AE47E19E28544185EB51787E2C51417B14AE979C28544148E17A447C2C5141B81E851B9C2854410AD7A3C07C2C51419A9999199F28544114AE47D17A2C514100000020A1285441D7A3705D792C5141333333F3A028544152B81E65782C51417B14AE17A2285441C3F5287C782C5141CDCCCC3CA328544100000000782C5141F6285CCFA328544152B81E45752C51419A999929A4285441E17A145E722C51411F85EB81A7285441F6285C9F712C5141F6285C5FA72854418FC2F518712C5141E17A144EA82854418FC2F548742C5141E17A144EA8285441B81E851B762C51419A999959A828544100000080782C5141000000A0A8285441C3F528CC792C514148E17A94A82854418FC2F5D87B2C514148E17AD4A82854419A9999197E2C5141A4703DDAA82854411F85EB31802C5141B81E852BA9285441B81E855B812C51418FC2F588A92854411F85EBE1822C5141C3F5282CAA285441F6285CBF832C51419A9999C9AA2854415C8FC245842C514114AE4761AB285441A4703D7A842C5141713D0AE7AB2854415C8FC285842C514133333373AC285441CDCCCCDC832C5141EC51B8BEAC285441C3F528DC822C5141F6285C3FAD285441A4703DCA812C5141295C8FE2AD2854415C8FC2C57E2C51411F85EB71AE285441F6285C5F7B2C51411F85EBB1B42854415C8FC2C5702C514152B81EE5B3285441000000206C2C514185EB5198B1285441000000206B2C5141F6285C3FAA285441CDCCCC2C682C5141F6285C7FAA2854419A9999B9642C514185EB51D8B02854419A9999F95D2C5141B81E854BAF2854410AD7A340582C51417B14AE27B328544148E17A54582C51419A9999E9B3285441A4703D7A582C514148E17AE4B4285441295C8FB2582C5141EC51B84EB6285441295C8FF2582C51411F85EB81B7285441A4703D7A592C51417B14AE37B828544152B81E455A2C5141713D0A87B92854418FC2F5485B2C5141B81E853BBB285441666666365C2C5141333333F3BC285441EC51B8FE5C2C5141A4703DBABD285441F6285CCF5D2C51413D0AD753BE28544148E17A745E2C5141295C8FA2BE28544114AE47315F2C5141CDCCCC2CBF28544166666636602C514185EB5158BF285441A4703D9A642C51417B14AE37BF2854413D0AD723682C5141A4703D7ABE2854413D0AD713692C51415C8FC2F5BE28544185EB51C86A2C514152B81E95BE28544148E17AE46B2C5141CDCCCC6CBE285441000000306D2C5141295C8F42BE28544185EB51386E2C51419A999989BE2854417B14AEC76F2C5141F6285CEFBE285441F6285CCF702C514100000090BF285441B81E853B712C5141F6285C0FC0285441333333E3712C5141C3F528BCC0285441A4703D8A722C5141F6285C5FC1285441E17A14DE722C5141F6285CFFC12854410AD7A3F0722C5141E17A146EC228544148E17A94722C5141D7A3700DC3285441295C8F32722C51410AD7A340C328544152B81E05722C51411F85EBA1C3285441713D0AF7712C514152B81E05C4285441A4703DEA712C514152B81E75C4285441D7A3702D722C514152B81E05C528544148E17A84722C5141B81E859BC528544185EB51A8722C5141CDCCCC4CC6285441E17A14CE722C51417B14AE27C728544152B81EE5722C51418FC2F558C8285441AE47E12A732C5141295C8F42C9285441AE47E13A742C51419A999959CC28544114AE4741752C5141AE47E15ACF2854410AD7A320762C5141713D0A47D22854418FC2F5F8762C514185EB5118D3285441A4703DAA772C514185EB5148D42854411F85EB01782C5141E17A14EED428544152B81E15782C51410AD7A370D5285441EC51B88E782C514185EB51F8D6285441CDCCCC1C792C51418FC2F598D8285441B81E85BB792C514100000060D92854413D0AD7537A2C5141D7A3702DDA285441CDCCCC0C7B2C51410AD7A300DB285441F6285C5F7B2C51410AD7A370DB285441D7A3708D7B2C5141295C8F22DC28544114AE47D17B2C51419A9999B9DC285441D7A3702D7C2C5141CDCCCCFCDD285441295C8F927C2C5141333333D3DE285441000000707D2C5141B81E855BE02854419A9999C97D2C5141EC51B8EEE0285441F6285C2F7E2C514185EB5138E1285441A4703D4A7F2C514148E17A84E1285441A4703D9A7F2C5141C3F528ACE128544152B81EF57F2C514152B81E05E2285441713D0A47802C514152B81EC5E22854410AD7A3B0802C514133333313E3285441AE47E14A812C5141EC51B82EE3285441713D0AE7812C514185EB5128E328544185EB51E8822C51418FC2F5E8E2285441CDCCCC5C832C5141713D0AE7E22854418FC2F5F8832C5141D7A370EDE22854417B14AE37852C51413D0AD7F3E22854411F85EB91852C5141C3F528DCE22854419A9999D9852C5141666666B6E2285441B81E85BB862C5141A4703DFAE1285441CDCCCC8C872C514133333373E1285441EC51B86E882C514152B81E45E12854411F85EBB1882C51413D0AD733E1285441E17A14FE882C51413D0AD7E3E028544133333313892C5141F6285CAFE0285441D7A3708D892C51415C8FC225E028544114AE47D1892C51415C8FC225E0285441F6285C1F8A2C51410AD7A330E0285441295C8F428B2C5141E17A147EDF285441CDCCCC8C8C2C51413D0AD793DE285441713D0AB78D2C514148E17AE4DD28544152B81E55922C514185EB5198DD285441295C8F42982C5141295C8FF2DB285441333333B3982C5141AE47E15ADA2854419A9999099D2C5141D7A370BDDA285441A4703DBA9F2C5141D7A370EDD82854411F85EB819F2C5141EC51B82ED628544185EB51C89F2C51418FC2F588D4285441E17A14BE992C514185EB5108D0285441B81E85BB9A2C51413D0AD773CD28544114AE47C1982C5141E17A14FEC9285441A4703DDA992C5141666666F6C72854418FC2F5989C2C51418FC2F5C8C8285441F6285CAF9E2C5141CDCCCC4CCC285441A4703D8AA12C51418FC2F568CC285441C3F5287CA12C5141CDCCCC3CC828544152B81EB59C2C5141F6285CCFC628544152B81EB59C2C514100000070C52854417B14AED79A2C514148E17AF4C32854418FC2F588982C51418FC2F5B8C4285441295C8FD2972C51419A999969C728544166666616942C51419A999999C5285441295C8F32942C5141713D0A67C3285441F6285CFF962C514185EB51B8BF2854418FC2F5B8972C5141B81E85DBBE285441AE47E14A9A2C51419A999949BF28544148E17AD49B2C5141B81E857BC1285441000000909F2C5141C3F528BCC3285441EC51B8AEA32C5141EC51B8AEC32854415C8FC275A42C514148E17AB4C2285441C3F5285CA52C5141A4703D5AC1285441713D0AF7A72C5141B81E850BC1285441295C8FE2A92C5141E17A149EBF285441713D0A47AE2C51415C8FC2D5BF285441E17A146EAF2C51418FC2F508BD285441B81E853BB22C514133333333BD285441713D0A27B42C514100000000C0285441666666F6BA2C51413D0AD7B3C1285441B81E856BBE2C51411F85EBD1C5285441C3F528BCC42C5141333333B3C628544114AE47B1C32C514114AE47E1C028544148E17AB4C62C51418FC2F5D8BE2854410AD7A3E0C92C514148E17A64BF28544148E17A24CA2C514148E17A94BF285441C3F5284CCA2C5141000000D0BF285441AE47E12ACB2C514152B81EE5C12854411F85EBC1CB2C51413D0AD713C3285441CDCCCCCCCC2C51415C8FC285C4285441EC51B82ECE2C5141B81E856BC8285441C3F528FCCD2C5141EC51B84ECC2854419A9999F9CE2C514100000010CD28544148E17A44D22C514114AE4781CC285441666666C6D32C5141F6285CEFCD285441AE47E1DAD42C5141713D0A27CE2854419A9999C9D52C5141000000A0CF285441CDCCCCECD52C51419A999909D0285441CDCCCCECD52C514185EB5178D02854419A9999C9D52C51418FC2F5F8D0285441D7A3709DD52C514114AE4751D12854413D0AD743D42C514133333323D1285441B81E857BD32C51413D0AD7B3CF2854418FC2F588D22C514152B81ED5CF285441295C8FA2D22C5141A4703D0AD1285441713D0AD7D32C5141295C8F92D2285441B81E857BD32C514166666666D42854418FC2F588CF2C51418FC2F558D5285441E17A148ECE2C5141E17A145ED42854419A999959CD2C51417B14AEC7D3285441713D0A67CC2C51418FC2F5E8D02854411F85EB31CB2C514133333323D12854410AD7A3D0C82C5141A4703D4AD0285441AE47E10AC92C51411F85EBC1D12854410AD7A310CB2C51413D0AD723D42854418FC2F508CE2C51410AD7A3A0D4285441CDCCCCACCD2C5141E17A14DED528544133333343CB2C51415C8FC2D5D528544148E17A24CC2C51415C8FC2C5D828544114AE47E1CB2C514148E17A24DA2854413D0AD7E3C92C51418FC2F508DC2854418FC2F508CE2C51413D0AD753DC285441AE47E1FACE2C514133333303DD285441CDCCCC2CCF2C5141C3F528DCDD2854410AD7A340D02C51410AD7A340DE285441D7A370ADD02C5141D7A3706DDF2854410AD7A3C0D12C5141713D0A97DF2854417B14AE67D22C514114AE4711DF2854418FC2F5F8D32C51419A999959DB2854415C8FC235D52C51419A999959DB28544148E17AD4D52C5141333333C3DD2854415C8FC265D72C514152B81EF5DD285441713D0AC7D92C51410AD7A310DB2854411F85EBE1DA2C5141C3F5281CDB285441A4703D8ADC2C514185EB5148DB2854410AD7A370DD2C51418FC2F578DB28544148E17A94DE2C5141666666D6DB285441AE47E1DAE42C51411F85EB11DB2854418FC2F5E8E42C51410AD7A340DE285441E17A145EE82C5141CDCCCCECDD2854418FC2F5F8E82C5141B81E85DBDE285441295C8F82EA2C5141CDCCCCECDD2854410AD7A3D0EC2C5141713D0A17DE2854410AD7A370F02C5141666666A6DD285441295C8F32F22C5141B81E859BDC28544185EB5108F22C5141C3F5283CDB285441C3F5281CF02C5141A4703DEAD9285441333333F3EA2C514100000050D928544133333363EB2C5141B81E852BD728544133333323E92C514152B81EE5D628544148E17AA4E82C5141E17A145ED9285441F6285CCFE32C514148E17A14DA2854410AD7A3A0E02C51411F85EB41D9285441F6285C8FE12C51417B14AE47D728544100000040E42C514152B81EE5D62854413D0AD7B3E32C51411F85EB31D528544148E17AF4E02C5141000000B0D5285441295C8F92E02C5141713D0A67D6285441E17A142EDC2C514133333383D6285441F6285C7FDD2C514114AE47D1D8285441EC51B80EDD2C5141C3F528DCD9285441EC51B8CEDA2C51410AD7A3C0D9285441D7A3707DD92C51410AD7A320D62854410AD7A3C0DA2C514133333373D2285441C3F5288CE22C5141000000A0D1285441A4703D9AE22C514152B81EC5CE285441D7A3701DE12C514148E17A84CD285441E17A149EE62C514133333393CB285441B81E857BED2C5141EC51B8AECE285441AE47E13AEF2C51418FC2F538CC28544114AE4751EC2C514148E17AF4C928544152B81EC5EC2C5141000000A0C7285441295C8F42EE2C51419A9999E9C62854415C8FC2A5EE2C5141AE47E14AC5285441B81E85ABEB2C51418FC2F5A8BF285441AE47E18AEA2C5141D7A3706DBA285441CDCCCCCCEB2C51419A999989B82854417B14AE77E92C51415C8FC285B4285441F6285C8FE92C51415C8FC2B5B22854410AD7A3B0DF2C51415C8FC255B628544114AE47C1DF2C5141AE47E18AB12854410AD7A380E12C51417B14AE97AD2854415C8FC245E02C5141AE47E18AA828544148E17A54DE2C51413D0AD793A9285441713D0AD7DC2C5141EC51B88EAC285441333333C3D82C5141EC51B85EAE28544166666696D82C5141EC51B8BEAD285441D7A3701DDB2C514133333393AC285441295C8F02DD2C51415C8FC295AA28544148E17AC4DD2C5141713D0A47A828544148E17A94DD2C51410AD7A300A6285441CDCCCC9CE02C5141A4703DBAA3285441C3F528DCE22C51419A9999299F285441295C8FF2E32C51417B14AE279B285441F6285CDFE52C5141CDCCCC1C9A285441F6285C6FE72C5141295C8F5295285441F6285C8FEA2C514152B81EC59228544148E17AE4ED2C5141000000108B285441CDCCCC8CEB2C51415C8FC21589285441A4703D1AE92C5141AE47E18A8A285441F6285C9FE42C5141000000009628544100000020E22C5141295C8FA295285441CDCCCCECE52C51415C8FC25585285441295C8FE2EB2C5141CDCCCCBC822854411F85EB31EF2C5141333333937D285441F6285C4FF32C51418FC2F5C87D285441713D0AF7F52C5141E17A149E83285441713D0AD7F72C51415C8FC205852854418FC2F548F92C5141AE47E1AA882854418FC2F5A8F62C51418FC2F5D88B28544152B81E65F62C51413D0AD7F38E2854417B14AE07F22C5141A4703D7A8F28544133333373F02C5141EC51B85E93285441D7A370EDEB2C5141EC51B85E942854410AD7A330EA2C5141666666369628544148E17A64EB2C5141A4703D7A9A285441A4703DBAE92C5141713D0A67A128544185EB51C8EC2C5141C3F5284CA2285441B81E85FBEC2C5141C3F528DCA1285441A4703D2AEE2C51417B14AE67A02854417B14AE87F02C5141295C8F629E28544185EB5188F22C5141EC51B8EE9F2854410AD7A330F62C5141CDCCCC1C9F28544148E17A84F62C51411F85EB419E2854419A9999A9F62C51410AD7A3709D285441CDCCCCDCF62C5141B81E856B9B28544185EB51D8F62C51418FC2F5789A2854417B14AEB7F62C51411F85EBF199285441333333B3F62C51418FC2F50898285441CDCCCCDCF62C514148E17A94972854419A999919F72C5141A4703D6A97285441D7A370DDF82C51417B14AEC79728544100000060FA2C5141713D0A379528544166666636FB2C51418FC2F5B8932854410AD7A360FD2C51413D0AD7438F285441713D0AA7FF2C5141666666268A285441CDCCCCCC012D51417B14AEA785285441EC51B84E022D514185EB51C8842854419A999999022D514148E17A748428544100000000032D5141295C8F128428544185EB51C8032D5141295C8FA283285441333333A3042D5141EC51B82E83285441295C8F52082D51417B14AE0786285441000000C00A2D514152B81E958F2854418FC2F548092D5141CDCCCC0C962854411F85EB910C2D51418FC2F5B89C285441E17A146E122D5141CDCCCCDC9B285441EC51B8BE132D5141AE47E1BA98285441E17A147E132D5141F6285C6F94285441713D0AB7152D5141E17A14BE8B2854410AD7A3501A2D5141EC51B8BE822854410AD7A3F0172D5141666666C6802854410AD7A320122D514148E17A8489285441E17A144E0B2D514185EB515887285441CDCCCCCC0A2D5141295C8F0284285441B81E854B092D5141CDCCCCEC81285441D7A370AD092D5141A4703D6A812854413D0AD7130A2D5141B81E853B8028544185EB51880A2D514185EB51987E285441666666060B2D51410AD7A3F07B28544185EB51680B2D5141A4703D3A79285441EC51B8CE0B2D5141B81E857B7828544148E17A140E2D5141CDCCCCFC75285441E17A148E102D51413D0AD71373285441E17A144E142D5141E17A140E6F2854410AD7A370102D51419A9999F96C2854417B14AEE7102D5141713D0AE7692854418FC2F598152D514100000020652854411F85EBF1202D5141AE47E1DA67285441295C8F62212D5141CDCCCC4C572854417B14AEB71F2D514114AE47A15328544114AE47411E2D5141B81E85DB4F28544114AE4781172D514152B81EB54E285441EC51B8FE0C2D5141000000705328544185EB51980B2D51418FC2F54850285441E17A149E082D51418FC2F5B8502854413D0AD733052D514148E17AF458285441295C8F22022D51411F85EB315C2854418FC2F598FF2C514152B81E255B285441EC51B8CEFE2C5141AE47E1BA572854415C8FC2F5012D5141A4703D8A55285441000000C0022D514133333363522854415C8FC2A5002D5141EC51B80E4F285441333333E3032D514148E17AA44B2854418FC2F5E8002D514148E17AE449285441E17A144EFB2C5141D7A370ED482854413D0AD7A3F92C514114AE47F14A28544133333343F52C51410AD7A33049285441295C8F02FC2C5141AE47E1EA3F28544152B81E05FE2C5141713D0A873B285441A4703DBA052D5141A4703D9A392854410AD7A3D0052D51411F85EB8132285441D7A370CD022D514114AE47712D28544152B81EA5FB2C5141E17A146E2F2854410AD7A320F92C51411F85EB0128285441B81E85DBEC2C5141AE47E13A26285441F6285C9FEA2C51415C8FC2A521285441CDCCCC7CF02C51410AD7A3501A28544133333353F02C51411F85EB61172854419A999939E62C5141F6285CDF172854417B14AEF7E22C51418FC2F5981C2854415C8FC225DB2C5141CDCCCCBC1D2854411F85EB41DB2C51413D0AD7231B28544185EB51F8E12C5141D7A3704D1A28544114AE4701E42C5141B81E858B17285441E17A140EDD2C5141EC51B86E1128544114AE47C1DC2C5141CDCCCC2C102854418FC2F558E32C514152B81E850C285441295C8FA2EC2C5141295C8FC20C28544152B81E25F72C5141B81E85AB0A285441A4703DBAFA2C5141AE47E14A0C28544152B81ED5FD2C51415C8FC2250B285441E17A14AEFA2C5141D7A3708D04285441EC51B8CEF52C5141A4703DFA02285441E17A14BEF02C5141D7A3700DFD275441D7A3704DF42C514152B81E65F82754418FC2F5B8F22C51410AD7A380F5275441295C8FD2F02C514152B81E55F3275441713D0A67EF2C514152B81E65F2275441713D0A47EB2C51419A999969F02754418FC2F558E92C51417B14AE07EE27544148E17AE4E82C51419A9999D9EC275441000000C0E92C5141E17A143EEB275441713D0A97E92C51410AD7A330E8275441B81E85DBE32C5141E17A141EE1275441295C8F32E22C5141C3F5285CE1275441B81E85EBDC2C5141E17A14FEE2275441A4703D7AD32C5141AE47E1DADF2754410AD7A310D22C5141A4703D6ADD275441CDCCCC1CD62C514152B81E65DA2754419A9999F9D02C5141AE47E1DAD8275441D7A3703DCF2C514133333323D3275441CDCCCCCCD32C5141A4703DCAD1275441E17A14DEDC2C51419A9999E9D3275441713D0A97E02C5141C3F528FCD1275441E17A144EE82C5141C3F5282CCF275441B81E85FBEA2C51417B14AE47D5275441000000E0ED2C514152B81E05D72754418FC2F548F32C5141EC51B83ED9275441713D0A47FD2C514152B81E15E227544148E17A34022D514133333373E9275441D7A3700D012D5141E17A148EEC275441666666C6042D5141E17A145EF2275441666666C6072D51410AD7A3E0F5275441D7A3704D092D51417B14AE37F72754411F85EB91092D5141713D0AE7FE27544152B81EA50D2D5141AE47E1DA0428544148E17A24112D514185EB51E804285441EC51B87E172D514185EB5138FD2754411F85EB41192D5141EC51B8FEEB27544166666646192D5141D7A3703DE92754411F85EBB1162D514133333303E8275441EC51B82E132D5141E17A14EEE6275441CDCCCC1C102D5141A4703D3AE6275441AE47E10A0D2D5141E17A14DEE42754411F85EBD10A2D514148E17A94E3275441333333B3092D51417B14AE97E227544148E17AF4072D5141F6285C8FDF2754419A9999B9062D514133333333DE2754418FC2F568052D514148E17A74DD27544152B81ED5032D51415C8FC2B5DC275441E17A143E012D5141CDCCCC9CDB275441A4703DFAFF2C5141A4703D9ADA27544185EB5168FD2C514114AE4781D9275441AE47E18AFB2C5141000000F0D8275441295C8FD2F82C51413D0AD703D8275441EC51B82EF52C514185EB5198D427544185EB5188E62C51415C8FC225C92754415C8FC205E32C51410AD7A3B0C627544152B81EA5DF2C51415C8FC295C4275441F6285C7FDD2C514152B81EB5C32754418FC2F558DB2C514114AE4791C227544185EB5168D82C51419A999949C02754415C8FC205D42C514152B81E35BC2754410AD7A300CF2C5141000000C0B62754419A9999B9C82C514185EB5118B02754411F85EBA1C62C5141A4703DEAAE275441CDCCCC7CC42C514133333353AE27544152B81E65C22C5141EC51B80EAE275441AE47E1FABF2C514133333353AE275441C3F5284CBD2C5141333333B3AE2754418FC2F5B8BA2C514185EB5158AF2754418FC2F528B62C5141AE47E16AB0275441F6285C5FB32C514166666686B02754418FC2F558AF2C5141CDCCCCFCAF2754415C8FC265AC2C51411F85EBE1AF275441333333C3A62C5141666666C6AF275441666666E6A22C5141333333F3AD275441EC51B80EA02C5141295C8F72AC2754411F85EB519D2C51418FC2F5E8AB275441C3F5280C9A2C5141295C8FB2AB27544133333393942C514100000020AC2754418FC2F528922C5141295C8FB2AB275441F6285CBF8F2C5141B81E85DBAB275441B81E852B8D2C51410AD7A380AC275441AE47E12A8A2C514133333393AD27544152B81E05882C5141333333B3AE275441000000A0862C514166666686B027544148E17A84862C5141713D0A67B2275441295C8F52872C5141A4703D3AB42754415C8FC285892C51418FC2F588B6275441E17A14DE8D2C51410AD7A3C0B92754419A999909942C51410AD7A310BF275441B81E85AB9C2C5141333333D3C52754417B14AE179F2C514100000040C7275441EC51B85EA32C5141F6285CBFC82754418FC2F548A92C51411F85EBE1CB2754419A9999E9AF2C5141D7A3704DD0275441F6285CAFB62C51417B14AEB7D52754419A999999BC2C5141295C8FA2DB275441A4703DAABF2C514133333323DF2754413D0AD7D3C02C5141E17A14EEDF275441295C8F82C02C51415C8FC275E0275441AE47E1BAC22C5141E17A146EE5275441C3F5280CC32C51418FC2F598E7275441EC51B8FEC22C5141D7A3708DE927544114AE4741C22C5141C3F5284CEB27544152B81E25C12C5141713D0A17EC275441A4703DAABF2C514133333383EC275441000000F0B52C51419A999959EB27544152B81E15B32C514100000090EB275441D7A3707DB02C51419A999909EC2754417B14AED7AC2C5141C3F528ACEC27544148E17A84AA2C5141000000F0EC2754415C8FC265A72C514148E17AD4EC275441713D0A97A32C5141AE47E15AEC2754418FC2F5089D2C514114AE4781EA2754413D0AD7739C2C51419A9999A9EA275441A4703DAA9C2C5141C3F5284CEB2754415C8FC205A62C5141B81E858BF3275441B81E856BAC2C5141AE47E15AF8275441B81E85BBB22C51411F85EBF1FD2754415C8FC2A5B42C5141333333030028544152B81E55BA2C5141713D0A470828544114AE47F1BB2C51419A9999890A2854415C8FC2B5BD2C5141F6285CFF0D28544166666686BE2C51415C8FC2F50F2854419A9999C9BE2C5141C3F5287C1228544166666606BF2C51413D0AD79314285441D7A3707DBF2C5141666666F616285441B81E852BC02C514185EB51C81828544148E17A64C12C514148E17A141B285441000000E0C32C5141666666161E285441000000B0C52C5141333333032128544100000010CA2C5141713D0A471C285441C3F5282CD02C51418FC2F5281C285441A4703D4AD32C51415C8FC2C52028544114AE4771D72C5141F6285C8F1F285441333333F3D72C51411F85EB4121285441E17A144ED42C51419A999959272854411F85EB51D02C51418FC2F5182728544114AE47F1CB2C5141666666F623285441EC51B8CEC82C5141D7A370ED242854415C8FC275C92C51419A9999C92528544114AE4771CC2C514114AE47312A2854417B14AE07CE2C5141666666662C2854410AD7A310CF2C5141C3F5289C2E28544148E17A34D12C5141713D0A573A285441000000B0D32C5141C3F528DC3F2854413D0AD7D3D52C51413D0AD7D3422854415C8FC2D5D62C51411F85EBC143285441AE47E10ADC2C51413D0AD7733F28544148E17A04DF2C5141D7A370BD42285441B81E850BDA2C5141000000D046285441D7A3702DDD2C5141713D0A47492854410AD7A3E0DF2C5141713D0A874C285441333333B3E02C51419A9999494E2854411F85EB11E22C5141AE47E12A502854413D0AD783E32C514148E17AE450285441C3F5285CE52C5141713D0AB7502854418FC2F578E72C5141D7A370AD50285441A4703D0AE92C5141333333435128544114AE4751F32C5141B81E857B58285441295C8F22F42C51410AD7A3405928544114AE4701F52C514114AE47A15A285441295C8FC2F52C5141EC51B8EE5B285441666666F6F52C5141AE47E12A5F285441A4703D6AF22C514152B81E6563285441A4703D4AF02C5141713D0AD761285441F6285C1FF42C5141EC51B8EE5C285441C3F5281CF52C5141C3F528FC5D285441A4703DFAF42C5141333333035C285441AE47E1BAF32C5141CDCCCCCC592854418FC2F518EB2C5141E17A14EE53285441E17A14CEE82C5141AE47E15A522854418FC2F548E72C51410AD7A3F051285441713D0A37E52C51410AD7A3F051285441D7A3707DE32C51410AD7A3F05128544152B81E25E12C51418FC2F5F85028544148E17A24DF2C514148E17A744D28544148E17AD4DB2C5141713D0A9749285441A4703D6AD92C5141D7A370DD472854419A999969D52C5141CDCCCCDC43285441AE47E1CAD22C514148E17A3440285441CDCCCC3CD02C5141A4703D7A3A28544133333383CE2C514148E17AF4302854413D0AD733CD2C5141333333932F2854410AD7A300CB2C514133333313312854410AD7A370C82C514185EB51782E28544185EB5168C92C5141B81E859B2C285441295C8FD2CB2C5141000000D02A285441CDCCCC9CC82C5141EC51B80E2628544152B81E95C62C5141A4703DEA232854413D0AD7E3C42C5141EC51B83E21285441C3F5286CC32C5141A4703DBA1E285441E17A14DEC02C5141EC51B87E1B28544100000070BF2C5141CDCCCCDC18285441000000B0BE2C51411F85EBC1162854415C8FC245BE2C51419A99998914285441C3F5280CBE2C514152B81E3512285441F6285CBFBD2C51410AD7A31010285441B81E85EBBC2C5141F6285CFF0D285441713D0A27BB2C51413D0AD7C30A285441295C8F32B42C5141666666760028544114AE4751B22C514185EB5178FE2754411F85EB41AB2C51418FC2F568F827544185EB51F8A52C51413D0AD763F42754410AD7A3909D2C5141AE47E10AED2754410AD7A3D09A2C51415C8FC215EB275441333333139A2C514166666606E9275441333333F3952C5141295C8F12E82754410AD7A380932C5141713D0A87E627544152B81E35932C5141B81E85ABE327544166666646952C5141D7A3707DE227544148E17A04992C514100000080D4275441A4703D5A9D2C514114AE47A1D227544152B81E859F2C5141EC51B8AED52754419A999969992C5141D7A3706DD927544148E17A149B2C5141B81E85ABE027544185EB5148992C5141F6285CFFE2275441CDCCCCAC9E2C51419A9999F9E92754419A999989A32C514100000090EB2754415C8FC265A72C51411F85EB31EC2754411F85EB91AA2C514100000040EC275441295C8FF2AC2C51419A999909EC27544152B81E15B32C514152B81EC5EA2754415C8FC225B62C51419A9999A9EA275441F6285CCFBC2C514114AE4731EB275441A4703DFABE2C51419A999959EB2754417B14AE67C02C514114AE4731EB27544166666676C12C51415C8FC265EA275441D7A370FDC12C514166666606E927544185EB5118C22C51418FC2F598E727544152B81ED5C12C514100000060E527544114AE4731C02C51417B14AEC7E127544114AE47D1BE2C51411F85EB81DF2754410AD7A3D0BB2C5141D7A370FDDB275441AE47E10AB62C5141C3F5285CD62754418FC2F5E8B12C5141C3F528CCD227544100000080A82C5141D7A3703DCC27544133333303A32C514133333363C9275441EC51B8CE9E2C5141666666F6C7275441E17A143E9C2C5141E17A14AEC6275441295C8F72932C5141A4703D9ABF27544152B81E558D2C5141A4703D4ABA275441E17A14CE872C51413D0AD743B6275441B81E855B862C5141333333C3B4275441F6285C7F852C51410AD7A3F0B2275441AE47E13A852C51411F85EB61B12754418FC2F5A8852C51413D0AD7D3AF275441295C8F92862C5141EC51B86EAE2754410AD7A320882C514133333393AD275441295C8F428C2C5141000000C0AB2754415C8FC2958F2C514100000000AB275441C3F5285C942C514100000000AB27544185EB51B8962C5141B81E851BAB275441A4703DDA9A2C514148E17AE4AA275441000000E09E2C514166666636AB2754413D0AD773A12C5141295C8F12AC2754415C8FC255A62C51417B14AE97AE275441F6285CBFA82C514114AE4721AF2754413D0AD7B3AE2C514114AE4721AF2754415C8FC235B32C5141666666C6AF275441D7A3704DB52C5141666666C6AF275441CDCCCC7CB92C5141CDCCCCDCAE275441AE47E1EAB92C5141CDCCCC7CAE27544114AE47C1B92C5141A4703DCAAD27544148E17A84AA2C5141A4703D7AA827544185EB5188A82C514152B81EB5A627544152B81EE5AA2C5141CDCCCCBCA2275441E17A141EB12C5141713D0A87A5275441295C8FA2B02C5141A4703D1AA82754410AD7A310B12C5141AE47E19AA9275441713D0A47BC2C514152B81EE5AD275441C3F5280CBE2C514152B81EE5AD27544148E17A44C12C51410AD7A340AD275441EC51B80EC42C5141C3F5285CAD2754411F85EB41C62C514152B81EE5AD2754410AD7A390C82C5141CDCCCCDCAE27544133333383CB2C5141333333A3B1275441C3F5289CD12C514114AE4791B8275441EC51B88ED52C5141C3F528BCBC2754418FC2F548D92C514114AE4711C0275441C3F5289CDB2C5141295C8FD2C12754410AD7A3A0DD2C5141AE47E1EAC2275441713D0A37E02C51415C8FC225C42754417B14AE97E32C5141EC51B81EC627544152B81E25E72C51413D0AD793C82754413D0AD793F52C5141AE47E1FAD3275441295C8F42F92C514152B81E45D7275441EC51B89EFA2C5141D7A370EDD7275441000000F0FB2C5141C3F5283CD8275441D7A3706DFD2C51418FC2F568D8275441333333B3FE2C5141000000F0D827544148E17A74002D5141713D0AE7D9275441EC51B8AE012D5141E17A14DEDA275441E17A144E032D5141333333B3DB2754415C8FC225052D51410AD7A350DC27544185EB5108072D5141F6285C7FDD27544133333343082D5141EC51B8AEDE2754418FC2F5680A2D514148E17A04E22754411F85EB810B2D514166666606E32754415C8FC2150D2D5141D7A370FDE3275441CDCCCC1C102D514100000070E5275441713D0A67132D5141A4703D3AE6275441EC51B8AE192D514185EB51A8E7275441E17A14BE1A2D514114AE4711E5275441AE47E1DA1A2D5141B81E856BE3275441E17A14BE1A2D514152B81EB5E1275441AE47E11A1A2D51418FC2F5C8DF2754417B14AEE7172D5141B81E858BDB275441295C8FD2152D514100000050D8275441C3F5285C112D514152B81E15C527544185EB5138062D51415C8FC215B827544100000080DB2C5141295C8F62A0275441BB600F5DD22C514128F2A0809A27544102DBBF6CCF2C514176C1816697275441A06BC466CE2C514173FD92F397275441E17A14AEC62C5141AE47E1FA92275441333333C3B62C5141A4703DAA8827544152B81EB5B52C514148E17A348727544121C1C78CEB2C5141D95EB792F8265441495374DB1A2D51414C1B40A5B62654417EFCF8C2772D51418E6B6510F9255441F6A548BE8F2D5141271DDFB8E1255441F6285C1F902D5141B81E85EBE1255441713D0AD7912D5141000000A0E3255441D7A3707D932D51413D0AD763E5255441713D0A37942D5141295C8FF2E525544133333333952D5141A4703D1AE6255441F6285C5F972D5141AE47E1EAE525544148E17AF4992D514166666666E5255441A4703D8A9A2D5141A4703D8AE525544114AE47D19B2D5141B81E855BE6255441D7A3700D9D2D5141666666A6E62554418FC2F5A89D2D5141B81E85CBE625544114AE47319E2D514152B81EA5E7255441333333A39F2D51410AD7A320EA255441CDCCCCACA02D514100000060EC255441EC51B82EA12D5141713D0A47ED255441AE47E1EAA12D51419A9999D9ED255441B81E850BA32D514152B81EC5EE2554417B14AEA7A32D5141CDCCCC2CF025544185EB51A8A42D51411F85EB11F22554410AD7A3F0A52D5141CDCCCCACF3255441713D0A97A72D5141F6285CCFF52554413D0AD753A92D514133333313F8255441713D0A67AA2D51419A9999A9F92554415C8FC265AB2D514148E17AB4FA255441CDCCCC7CAC2D51417B14AEB7FC255441E17A142EAE2D5141B81E85DBFF2554410AD7A3E0AE2D5141F6285C2F0126544185EB5178AF2D514185EB51B802265441D7A370BDB02D5141C3F528BC032654413D0AD743B12D514152B81E7504265441A4703DCAB12D51416666665605265441E17A147EB22D5141713D0AA7072654413D0AD7D3B22D5141D7A370ED0826544185EB51A8B32D514148E17AA40B2654415C8FC2D5B32D51417B14AEA70C265441295C8FF2B32D514114AE47910D26544114AE4791B42D514152B81EA50E26544100000040B52D5141713D0AF70E265441EC51B8BEB72D514152B81E151026544152B81EA5BA2D5141CDCCCC9C112654410AD7A3C0BD2D5141F6285C9F132654411F85EB41BE2D51410AD7A3A01426544100000040BF2D51411F85EBD1152654419A999999C12D514185EB51681726544152B81EB5C32D51411F85EB2119265441AE47E16AC72D51413D0AD7331E265441F6285CFFC72D51419A9999991E2654418FC2F528C92D514114AE47B11E2654417B14AEA7CA2D51415C8FC2451F265441CDCCCC8CCC2D51419A9999A9202654410AD7A390CE2D51413333336324265441295C8F82CF2D514152B81EC5262654410AD7A330CF2D51418FC2F57829265441295C8F32D02D5141295C8F2229265441713D0A77D12D514152B81E152A26544152B81ED5D52D5141AE47E12A2D265441C3F528BCD82D5141E17A14AE3026544185EB5158DB2D51411F85EB1136265441333333E3DC2D5141CDCCCCEC36265441C3F5280CE02D5141AE47E1FA39265441333333E3E72D5141AE47E11A3D265441713D0A57EC2D5141666666E63E265441D7A3706DEE2D5141CDCCCC7C3E2654410AD7A3B0EE2D514148E17AA43D2654413D0AD703F12D5141000000503D265441EC51B8BEF32D514185EB51B83B265441E17A146EFB2D5141333333D3392654417B14AE37002E5141AE47E19A3B265441A4703DBA082E51419A9999693D26544114AE47A10E2E51413D0AD7F34326544148E17AB4102E51411F85EB114A2654419A999939102E5141B81E856B4D265441333333330E2E514152B81EA54E265441B81E852B102E5141295C8FC25026544100000060122E51419A9999695126544114AE4721142E51413D0AD743552654419756B004142E5141EDFCC912582654412CD1DD08142E514140EFB82358265441C3F5286C142E51413D0AD7135A265441333333D3142E514148E17A245B2654411F85EB11182E514114AE474160265441EC51B86E182E5141EC51B8AE61265441C3F528CC182E51410AD7A3E06426544100000090182E5141EC51B8BE66265441A4703D4A192E51419A9999D966265441E17A14AE172E514100000030692654410AD7A3A0172E51418FC2F5D86A265441000000D0172E5141A4703D8A6C26544114AE47E1172E5141295C8FD26D265441A4703DEA172E5141333333D36E265441C3F5286C182E514166666636702654411F85EB71192E514114AE475172265441F6285CCF192E514185EB51787626544185EB51381C2E5141295C8F927E265441B81E853B1C2E51413D0AD7B37F2654413D0AD7831B2E514185EB51C8812654411F85EBA11C2E51419A99991986265441AE47E1AA1C2E5141C3F5288C87265441F6285C2F1D2E514185EB51C889265441EC51B8EE1F2E5141B81E857B8626544114AE4771242E5141B81E855B83265441333333F3282E5141AE47E14A81265441000000C02D2E5141295C8F2280265441CDCCCC1C332E514152B81E657F265441EC51B8EE332E5141713D0A177F265441C3F528AC352E5141666666767F26544152B81E153C2E5141F6285C5F80265441C3F5281C402E5141E17A149E80265441CDCCCC7C422E51417B14AE278026544133333313452E5141CDCCCCFC7E26544185EB5178512E5141B81E85CB7626544114AE47D15C2E514152B81EE56E265441295C8FF25F2E5141666666466C265441295C8FD2622E5141EC51B8BE6826544114AE4741672E51411F85EBD161265441713D0AD76A2E51413D0AD7E35A265441666666A66C2E5141B81E855B57265441EC51B8BE6C2E5141E17A142E572654413D0AD733702E51419A9999A9502654419A999959732E5141000000304B2654419A999949772E514185EB51684426544152B81E057B2E514152B81EC53F265441B5055016812E51418CC95DAF382654415381281C822E5141EFEF8BE1392654410AD7A3C0802E5141000000403C26544148E17A247C2E5141AE47E13A41265441C3F528EC782E5141F6285C7F45265441E17A14AE742E5141D7A370FD4B265441D7A370ED712E51419A99998951265441E17A145E6C2E514152B81E855B2654417B14AED7682E5141C3F528AC62265441F6285C9F662E5141EC51B86E66265441D7A3703D642E51413D0AD7D36926544185EB51B8602E5141A4703D2A6E265441B81E85DB5D2E51419A999979702654415C8FC295522E51411F85EB717826544148E17A14462E5141EC51B8EE8026544100000060432E5141AE47E18A82265441C3F5284C402E51419A9999F9822654417B14AE87352E51413D0AD753812654418FC2F5F8322E514185EB515881265441AE47E1FA2D2E514114AE4711822654415C8FC285292E51419A9999198326544152B81E45252E5141F6285C0F852654411F85EB71212E5141AE47E1FA8726544148E17A441D2E5141F6285CDF8B265441295C8F621D2E5141C3F528CC8D265441713D0A771C2E5141F6285C6F91265441000000101B2E51410AD7A3D09226544148E17A441A2E51419A9999E99526544114AE47D1182E5141713D0A279C265441666666261B2E5141E17A14FE9B265441000000001D2E51413D0AD703992654410AD7A360202E514114AE47219826544185EB51781B2E51411F85EB61A126544114AE47811A2E51411F85EBA1AA2654418FC2F5981C2E51411F85EB51AC26544114AE4711222E5141713D0AF7AC2654418FC2F5D8252E5141F6285CBFA9265441295C8F422F2E51419A999949A626544133333333342E51417B14AE47A62654411F85EB41362E5141CDCCCC9C9F265441CDCCCCBC3D2E5141713D0A979B265441C3F5280C432E5141B81E851B9B26544133333373432E51417B14AE479D265441000000C03F2E5141EC51B85E9F2654410AD7A3003B2E5141EC51B83E9E2654418FC2F558382E51413D0AD703A0265441000000C0382E5141AE47E18AA12654411F85EB813F2E514148E17A44A22654418FC2F578402E514152B81E35A6265441EC51B87E442E51419A999949A62654417B14AE37452E5141CDCCCC9C9F26544152B81EE54B2E514152B81E159E26544185EB51984F2E5141CDCCCC2CA02654415C8FC2255C2E51413D0AD7739E265441F6285C9F5D2E514152B81E159B265441666666F65F2E5141E17A144E99265441EC51B85E6B2E51411F85EB8192265441713D0A07762E51417B14AE5790265441EC51B83E7C2E5141666666668C265441000000107C2E51413D0AD73390265441295C8FB2872E514148E17A54882654413D0AD703862E51417B14AE67842654413D0AD7A3762E514114AE47118B265441F6285C4F712E51419A9999C98C2654418FC2F5886E2E5141713D0AE787265441000000506E2E5141D7A370BD822654410AD7A340742E5141C3F5284C81265441AE47E16A762E51410AD7A3307C265441A4703D2A7B2E51413D0AD7E37526544152B81E857C2E5141EC51B85E6F265441E17A140E842E5141AE47E1DA6D265441D7A3706D832E5141666666466C26544152B81EC5812E5141D7A3702D692654410AD7A3707F2E5141F6285C3F632654410AD7A3507D2E51415C8FC2C559265441C3F5283C7D2E514148E17AC457265441000000607D2E51418FC2F5B8502654417B14AED77D2E5141A4703DDA4F2654415C8FC2757F2E5141E17A142E4D265441F6285C4F802E5141666666164C265441F6285C6F852E51417B14AE87452654419A999969852E51415C8FC2653C2654417B14AE27822E5141D7A370CD39265441C33C6028812E51414BD2459A382654413D0AD7E3812E5141F6285CBF3726544133333373822E5141295C8F123726544114AE4711832E514148E17A743626544185EB5128822E514148E17A9435265441F6285C6F802E5141333333133326544114AE47C17F2E51418FC2F53831265441D7A370AD7F2E514152B81E652F265441CDCCCCEC7F2E5141333333C32D265441AE47E1CA7E2E5141EC51B8BE292654419A9999F97F2E51410AD7A380252654413EB9B3D57D2E5141D91E98621F265441A4703D1A7A2E514114AE47A12126544185EB5178782E5141CDCCCC6C21265441EC51B81E762E51411F85EBB11D26544166666646742E5141EC51B8CE1C265441D7A3702D732E5141CDCCCC8C1C265441E17A14DE6F2E51415C8FC2A51C265441F6285C0F702E5141713D0A071C265441C3F5280C732E5141F6285C4F1B265441B81E85FB752E5141EC51B85E1C265441295C8FA2782E514148E17A341C265441AE47E18A7B2E5141AE47E1DA192654411F85EBA17B2E51419A99995916265441E17A148E7E2E5141C3F5287C162654417B14AEC77E2E5141000000001526544166666626822E51410AD7A350152654418FC2F548822E514148E17A1416265441CDCCCC7C802E5141295C8FB21B26544114AE47E17D2E5141CDCCCC5C1D265441792CCBD57D2E51410E9E78621F265441333333C3802E5141A4703DEA2326544152B81E95812E5141295C8F4225265441333333B3812E514152B81EE525265441333333E37F2E514152B81E052A26544152B81ED57F2E514185EB51082B265441D7A3707D802E5141E17A148E2C26544166666696802E5141F6285C6F2D265441C3F5284C802E51418FC2F5482F265441A4703D4A802E5141CDCCCC9C3026544185EB5188802E51419A9999F9312654413D0AD7F3802E5141F6285CDF3226544152B81EC5812E5141CDCCCC5C342654418FC2F5C8822E5141C3F5287C35265441C3F5285C832E51419A9999E9352654411F85EBC1832E5141B81E85EB35265441295C8F42842E514152B81E9535265441666666D6842E51418FC2F5483526544133333373842E5141333333733426544148E17A74852E5141D7A370FD332654413D0AD7D3852E514114AE47D134265441CDCCCCAC862E5141A4703D9A3426544114AE4741872E514114AE47D1352654415C8FC2558B2E514114AE47A13A2654418FC2F5488B2E51411F85EBC13E26544152B81EA5892E5141295C8F7240265441A4703DAA892E5141E17A14BE41265441AE47E12A882E51418FC2F58844265441E17A146E882E51419A9999E945265441F6285C3F882E51417B14AEE7462654418FC2F5A8872E514114AE47C147265441B81E859B862E5141AE47E19A48265441A4703D6A822E5141EC51B8BE4D2654419A999939802E514100000090562654413D0AD7B3812E5141F6285CAF572654413D0AD7A3832E5141E17A14DE5626544114AE4781862E5141E17A147E5A265441C3F528CC882E514114AE47F15726544148E17AB4892E5141AE47E14A502654411F85EB118D2E5141000000604F2654410AD7A3008D2E514152B81E4553265441C3F5283C8B2E5141666666B659265441F6285C1F8E2E5141713D0AC75A265441D7A3707D8F2E51410AD7A36062265441CDCCCCDC962E5141000000705D265441A4703DBA9B2E5141000000805E2654418FC2F5689C2E514133333323632654411B903E269B2E5141D99A9BEC67265441484DDD9A9C2E51418E8F16BF6D2654414E132719A02E51413FA16CD2712654414E132719A02E5141F495E7A477265441722757509C2E5141A2C418F9792654413D0AD7D3972E5141EC51B86E7C2654419A999999972E514185EB51087F265441A4703DCA912E5141713D0AB78026544133333303932E514152B81E6582265441713D0AE7992E5141EC51B80E832654418FC2F5289E2E51415C8FC24584265441CDCCCCCCA82E514152B81E857C2654418FC2F578AF2E51415C8FC25579265441E17A14AEDE2E5141F6285C8F662654415C8FC2D5DE2E5141AE47E1EA6426544114AE4721E22E5141EC51B83E5F2654411F85EB21EC2E5141C3F528AC5526544148E17AB4ED2E5141000000D056265441CDCCCCACF12E514185EB519854265441F6285CBFF22E5141F6285CFF4E26544152B81EB5EF2E5141A4703DBA4B265441AE47E14AF22E5141C3F5288C47265441C3F5288CF62E5141713D0AD748265441CDCCCCBCF82E5141C3F528BC442654413D0AD753F42E5141F6285C3F4226544152B81E25F72E5141B81E854B3D265441333333B3FB2E5141666666F63B26544185EB5108FD2E514114AE47E138265441E17A143EFD2E51413D0AD7E330265441295C8FC2032F5141295C8F2224265441E17A141E002F514185EB51082226544163BE120DFA2E5141AE2D5D3C1C26544160DBED4DF82E51412130376014265441D9A311F0F32E51411B6AEDE110265441CD177EF3EC2E5141695897CE0C2654411640DE61E52E5141E220BB70082654410AB44A65DE2E5141310F655D0426544166666666DB2E5141EC51B8FEFE2554413D0AD733D62E51419A999999FC2554411F85EB01D42E5141713D0AC7FF2554413D0AD733D22E5141D7A3707D00265441F6285C3FD12E514185EB510800265441E17A14FECE2E5141EC51B80EFF25544185EB5168CD2E514152B81EC5FE2554415C8FC215C72E51417B14AE97FC2554413C7DDC33C52E51415A2B5FB1FA255441818BA46CC52E51411DEF6038FA255441D7A3706DC72E51417B14AEE7FB255441C3F5288CC92E5141295C8FE2FB255441E17A144ECB2E514185EB5158FC255441C3F5287CCD2E514152B81E15FE255441C3F528DCCE2E5141C3F528CCFD255441295C8FE2D02E5141E17A14EEFD255441F6285CEFD12E51417B14AE97FF25544166666676D32E5141E17A147EFE255441713D0AD7D42E5141F6285C7FFC2554418FC2F5A8D52E51413D0AD763FB255441000000A0D92E5141333333F3FB255441E17A14DEDD2E5141295C8FD2FD255441D7A3701DDF2E514114AE479100265441C3F5281CE22E51410AD7A3F00126544185EB5128E92E5141000000600226544133333343F42E5141000000C002265441C3F5282C032F514100000050022654417B14AE970C2F514100000040032654418FC2F5E8092F5141AE47E13A0D265441713D0AD70D2F5141AE47E12A0E26544152B81E95122F514148E17AF403265441AE47E15A172F514100000070F9255441295C8F02182F51417B14AE57F22554417B14AEE71C2F51413D0AD7E3E4255441C3F5285C222F514152B81E55E32554410AD7A380222F51411F85EB91DE255441A4703DDA262F514100000000DD255441713D0A37282F5141F6285C1FDC25544148E17A94302F5141E17A14FED22554415C8FC265372F514114AE47D1CD2554415C8FC2253D2F514114AE4701C82554417B14AE373B2F5141B81E854BBF255441E17A142E2C2F5141E17A140EBE255441EC51B83E2A2F5141333333B3BC25544185EB51D8282F5141A4703DAAC02554417B14AEB7262F5141713D0A47C3255441F6285C6F192F51415C8FC285C02554415C8FC2D5082F5141713D0A77C0255441EC51B8BE032F5141D7A3706DBE255441F6285C8F002F514148E17AC4C12554417B14AE87FC2E5141713D0A77C2255441EC51B85EF82E514133333313C3255441F6285CCFF72E5141666666C6BF255441EC51B85EF82E514100000010BE255441F6285C2FF72E514148E17A44BA25544185EB5168F82E51410AD7A350B72554413D0AD703F62E514100000020B825544114AE4731EC2E51419A9999B9BA255441295C8FD2E72E5141CDCCCC3CBC255441AE47E13AE42E5141333333F3BD255441295C8FE2E02E5141F6285C0FC02554415C8FC2B5DC2E5141295C8FA2C3255441C3F5289CD22E5141AE47E1FACB2554419A999929CE2E5141A4703D6ACF255441295C8F82CA2E5141A4703DEAD12554413D0AD7B3C62E514152B81E25D425544152B81E05C22E51415C8FC265D6255441713D0A87BD2E51415C8FC225D8255441C3F528ACBC2E514100000060D825544148E17A14BD2E51419A9999C9D9255441F6285C7FBA2E5141666666A6DA2554413D0AD783B92E5141A4703DFADA2554418FC2F518BC2E51418FC2F558E32554413D0AD733BB2E514133333383E72554417B14AE97C02E5141333333B3E8255441F6285C2FCA2E51411F85EB21E62554413D0AD763CD2E514114AE4711EA25544133333373CE2E51410AD7A3D0EA25544166666656D22E5141D7A3704DE7255441D7A3707DD62E5141B81E859BEB25544166666656D72E514148E17A74EC25544148E17A84D72E51410AD7A3B0EC255441AE47E1AAD22E5141B81E853BF125544185EB5158D22E5141AE47E1DAF0255441C3F528ACCD2E51415C8FC2B5EB255441D7A370EDCB2E51413D0AD743ED2554411F85EBE1C42E5141000000E0F22554417B14AE67C32E5141D7A3709DF3255441CDCCCC4CC32E5141AE47E13AF6255441000000E0C32E5141333333F3F72554413D0AD713C52E5141EC51B80EF92554411F85EB61C52E5141F6285C2FFA255441C3F5282CC52E51419A9999A9FA255441333333F3C32E514152B81E45F9255441295C8F12C32E5141A4703D5AF8255441C3F5286CBC2E5141E17A141EF625544185EB5188BA2E5141D7A3706DF5255441D7A3709DB92E5141713D0AA7F3255441A4703D5AB82E5141CDCCCC3CF2255441D7A370ADAF2E5141295C8FF2F2255441A4703D6AAF2E5141AE47E10AF3255441C3F528FCA92E514148E17A04F52554418FC2F558AA2E5141713D0AF7F625544152B81E25AD2E5141AE47E1BAF6255441295C8F52AD2E51410AD7A390F8255441000000B0AA2E51419A9999C9F8255441CDCCCCDCAA2E51419A9999B9F9255441AE47E12AAE2E51411F85EB51F9255441333333C3AE2E514166666646F9255441C3F528CCAF2E514114AE4711FA2554417B14AE57B32E5141AE47E1FAF925544185EB5128B42E5141B81E850BFD2554419A999939B22E51413D0AD763FD2554419A999999B22E5141333333C3FF2554419A9999B9B02E514133333333002654419A9999C9B02E5141295C8F5202265441A4703D7AAF2E5141295C8F62022654415C8FC225AF2E5141D7A3707D00265441713D0AD7AB2E51415C8FC20501265441E17A149EAA2E5141D7A3704D01265441B81E85CBA92E5141666666D6FE2554418FC2F578A62E514100000070FF255441E17A149EA82E5141000000B00426544185EB5178A12E5141713D0A970726544148E17A049E2E5141E17A14FE08265441713D0A579E2E514185EB51180E265441C3F5286C9F2E514185EB5158132654418FC2F5A89F2E5141D7A370ED1526544185EB51A89F2E5141CDCCCCAC18265441B81E85AB9F2E5141000000B01C265441A4703D7A9F2E51410AD7A3801F26544152B81EC5A02E514185EB512822265441295C8F12A12E51410AD7A3D0212654413D0AD7E3A12E5141C3F5281C1E26544152B81E05A42E5141333333A31C26544148E17A94AC2E5141295C8FB217265441CDCCCC5CAF2E5141A4703D9A1D26544100000040A72E5141E17A144E232654415C8FC2F5A32E51411F85EBC12426544100000000A22E5141AE47E1AA23265441B81E858BA12E51410AD7A3C0232654413D0AD7239F2E514114AE471125265441333333439E2E5141713D0AC7252654419A9999F99C2E514114AE47412A26544148E17AA49B2E514152B81E652D26544148E17A84992E5141CDCCCC2C30265441C3F5284C962E5141333333A3322654417B14AEF7922E5141AE47E14A342654415C8FC2058F2E51417B14AE7735265441EC51B82E8F2E51413D0AD703372654419A9999799B2E5141000000403F2654413D0AD7D39D2E5141713D0A37402654415C8FC265A02E5141D7A370AD402654415C8FC2A5A32E5141CDCCCC4C40265441EC51B89EA72E51413D0AD7F33E2654417B14AED7A52E5141C3F528BC392654418FC2F528A92E5141F6285C9F38265441713D0A77AA2E5141B81E856B3C26544148E17AB4AA2E5141666666563C2654415C8FC285B62E5141AE47E13A38265441AE47E1EABE2E51419A99993935265441CDCCCC2CBC2E5141A4703D5A2C265441EC51B85EBC2E5141B81E859B28265441F6285C6FC32E5141AE47E19A26265441C3F528ACC82E5141A4703DCA2426544185EB5128CD2E5141B81E856B2326544148E17AD4CF2E5141C3F5280C2C26544152B81E05D22E5141295C8F22332654419A999959CA2E51413D0AD7B3352654419A999919C02E5141E17A14FE38265441713D0AB7BF2E5141D7A370BD37265441295C8F62B42E514148E17AB43B2654418FC2F5D8A32E51411F85EB41412654418FC2F558A02E5141B81E85AB41265441AE47E18A9D2E5141C3F5283C412654411F85EBF19A2E514114AE4731402654415C8FC2858E2E514185EB51F8372654411F85EBA18A2E5141A4703D1A362654417B14AE37892E5141D7A370AD35265441EC51B81E882E514185EB51B8352654419D0D635F872E51410AEEE2CD352654419B8785CF862E51417FB00195342654419A999989872E51418FC2F578342654417B14AE67882E514152B81E65342654411F85EB41892E5141333333633426544148E17AD48E2E514152B81ED5332654419A999959922E5141000000D03226544148E17A94952E5141A4703D2A3126544185EB5158982E51417B14AE072F265441AE47E10A9A2E5141666666B62C265441D7A3708D9B2E5141713D0A97292654418FC2F5D8912E51419A9999E928265441F6285C8F8F2E5141EC51B80E232654419A999909962E51413D0AD7931E26544152B81EF5962E51418FC2F5181D2654419A9999D9992E514114AE477118265441295C8FF29B2E5141B81E856B12265441F6285C5F9C2E5141CDCCCC7C10265441C3F5286C9A2E51418FC2F57810265441000000C0982E5141E17A14CE11265441EC51B80E992E5141A4703DBA12265441CDCCCCAC952E51410AD7A300152654415C8FC245952E51413D0AD7531426544152B81ED5932E5141B81E85EB112654418FC2F5D8912E5141A4703D5A0E265441C3F5281C932E5141E17A146E0D2654411F85EBD1942E5141295C8FE20C26544166666636972E514185EB51280D265441AE47E15A9A2E514114AE47610F265441EC51B8CE9C2E5141333333830E265441333333239C2E514152B81E250926544185E92F279D2E51412AAF9BB302265441AE47E1CA9B2E5141333333E302265441713D0AF79B2E5141D7A3708D032654417B14AE379B2E514152B81EC503265441AE47E1FA9A2E5141F6285CFF02265441D9E92F279D2E514117AD9BB30226544152B81E759E2E5141D7A370ADFE2554410AD7A3E09C2E514152B81EC5FE255441AE47E10A9A2E51417B14AE77FF255441666666D6982E51415C8FC275FA25544114AE47F19A2E5141A4703D0AFA2554411F85EBE19A2E51415C8FC2E5F8255441B81E858B9B2E5141A4703D6AF8255441295C8FA2972E5141D7A3707DF62554418B37EEEF922E514111069872F4255441B4937D72932E5141FC575091F32554419A9999E9962E5141A4703D2AF5255441EC51B83E9B2E5141713D0A27F7255441F6285C6F9D2E5141AE47E14AF825544159A65D669E2E5141A351E89CF82554416AE768439F2E51413635D4BDF82554419371CCCB9F2E5141EC61188AF8255441040C6041A02E5141C59A4048F82554410CCB9F8CA02E5141F7E7E4EEF7255441C3F528ECA02E514133333313F72554413D0AD7F3A12E514152B81E55F0255441EC51B83EA32E51418FC2F5A8EA255441713D0AD7A32E5141713D0A27E725544102833F4BA42E51410D0D747FE025544153D30B0AA62E514168003317E1255441295C8F92A52E5141D7A3702DE7255441C3F528DCA42E51418FC2F5E8EA255441D7A3708DA32E5141AE47E19AF02554411F85EB01A32E5141C3F5289CF625544100000060A22E514114AE4731FA2554419A9999C9A32E5141F6285C7FF92554410AD7A3B0A42E5141C3F5283CF8255441D7A3700DA52E5141A4703DCAF62554413D0AD703A62E51419A999949F52554415C8FC275A72E5141295C8F62F4255441B81E850BAA2E5141666666F6F3255441333333E3AA2E5141666666C6F02554416204208DA92E514145592851EF255441CF20346CA92E51413759DD28EE25544148E17A34A92E51413D0AD723EC2554417B14AE77AA2E51410AD7A3E0EA255441B81E850BAB2E514148E17AF4E825544166666696AA2E51415C8FC225E72554411F85EBD1A72E5141713D0A97E82554415C8FC275A72E51415C8FC2E5E3255441713D0A47A72E5141C3F5280CE0255441713D0AB7A62E5141295C8FC2DE2554417E82B60CA62E5141F37C000EE1255441ECF95C4CA42E5141EC321B6FE025544133333353A42E5141AE47E10AE02554412F498A88A52E5141142DCE34DD2554416DCE7DC9A62E514162C198DDDB2554417B14AEC7A72E5141C3F528CCDA25544152B81E35A92E514148E17A34DA2554416D5C5C64A92E5141BBA7FE54D925544185EB5188A92E5141AE47E1AAD8255441A4EE963AA72E51416D4AA666D62554417AA03C83A32E5141B0489FBED225544155D63E8DA02E51410963D7D4CF2554412585E84F9E2E5141CE76BDA0CD255441B1C9B16A992E5141A1CC71D9C8255441D7A3706D9D2E51411F85EBC1CC2554418FC2F5F8A82E5141EC51B80ED8255441D7A3701DA92E5141295C8FA2D725544166666636AA2E5141EC51B8DECD2554419A999989AA2E5141713D0A17CB2554410AD7A360AB2E514185EB5178C7255441EC51B8FEAC2E51418FC2F538BE2554413D0AD7A3AD2E5141E17A140EBB255441F6285CEFAE2E51417B14AE77B82554410AD7A3C0B42E51411F85EB31B2255441D7A3701DB82E51418FC2F548AF255441EC51B89EB22E514152B81E15AB25544166666666B32E5141AE47E13AAA25544133333373AF2E5141000000E0A4255441A4703D1AB22E5141295C8F72A12554418FC2F548BB2E51410AD7A3B0A8255441B81E859BBB2E51418FC2F5C8A72554419A999959BB2E5141000000C0A6255441333333A3BA2E51418FC2F5E8A52554417B14AED7B12E51419A9999899E255441AE47E14AB02E51413D0AD7D39D255441D7A370BDAE2E51413D0AD7D39D2554411F85EB61AD2E514185EB51589E255441B81E85CBAA2E51417B14AE27A0255441A4703DCAA82E5141B81E859BA0255441D7A3703DA72E51419A999959A0255441D7A3706DA52E5141333333A39F25544133333333A42E51419A9999899E25544114AE4701A42E5141EC51B83E9D255441295C8F22A42E514148E17A049C255441A4703DEAA52E5141B81E85FB9725544100000050A62E51411F85EB8196255441AE47E1FAA52E51415C8FC245952554415C8FC235A52E51413D0AD763942554419A999999A32E5141666666D693255441EC51B80EA22E51415C8FC225942554410AD7A3509D2E5141AE47E16A96255441C3F528CC9B2E51410AD7A3A09625544152B81E759A2E5141D7A3703D962554417B14AE27992E514152B81E6595255441CDCCCC3C982E51418FC2F52894255441CDCCCCAC972E5141CDCCCC5C92255441295C8F52972E5141F6285C1F8F25544152B81E25972E5141000000F08C255441713D0AA7962E5141D7A3705D8A2554417B14AED7952E51411F85EB5188255441713D0AB7942E5141AE47E16A862554410AD7A3D08F2E51417B14AE5781255441295C8FC28A2E5141EC51B88E7B255441295C8F82892E5141AE47E16A7A2554410AD7A380872E5141E17A144E79255441D7A370AD832E514185EB513878255441CDCCCCCC802E514152B81E45772554413D0AD7C37E2E514114AE472176255441A4703DFA7D2E5141713D0A277525544148E17A547E2E51418FC2F548742554411F85EBB1812E5141F6285C0F72255441295C8FA2862E514152B81E9574255441713D0A47852E51418FC2F5287725544148E17A148A2E514148E17AF479255441B81E855B8B2E5141666666267B25544185EB5158902E5141295C8FE28025544148E17A74952E514148E17A348625544133333383962E51410AD7A3008825544148E17A64972E5141666666668A25544152B81EF5972E5141AE47E19A8D25544185EB5158982E5141B81E857B91255441666666D6982E5141D7A3707D93255441A4703DCA992E514185EB51F894255441000000609B2E5141F6285CBF952554417B14AEA79C2E51411F85EBC195255441000000009E2E514100000040952554415C8FC2D5A12E5141F6285C4F93255441E17A148EA32E5141C3F5281C932554413D0AD773A52E5141295C8F9293255441CDCCCCDCA62E5141C3F528FC94255441713D0A37A72E5141295C8F92962554410AD7A3C0A62E514152B81E45982554418FC2F5E8A42E514148E17A149C2554418FC2F5E8A42E5141E17A142E9D255441C3F5283CA52E5141713D0A379E2554411F85EBF1A52E5141D7A370FD9E255441EC51B86EA72E5141295C8F929F255441B81E85EBA82E51413D0AD7B39F255441713D0A47AA2E514114AE47719F255441CDCCCCCCAC2E51410AD7A3809D255441C3F5289CAE2E5141CDCCCCFC9C255441B81E856BB02E5141CDCCCCFC9C2554419A999909B22E5141333333C39D2554418FC2F548BB2E5141C3F5285CA525544148E17A54BC2E514148E17AB4A6255441A4703DFABC2E51415C8FC2E5A8255441E17A14AEBC2E5141000000B0AB2554419A999989BA2E51413D0AD793AE25544133333333B72E514148E17A44B125544114AE4711B22E5141CDCCCC4CB6255441C3F5282CAF2E5141713D0AB7B925544133333353AE2E5141B81E85CBBB25544152B81E35AC2E514148E17AC4C72554417B14AE97AB2E5141D7A3701DCA255441666666E6AA2E5141AE47E10ACE25544152B81EB5AA2E51418FC2F528D0255441E17A140EAD2E51417B14AEA7CC2554410AD7A340B12E51413D0AD763CF255441C3F5282CAF2E514185EB5178D22554415C8FC2F5AE2E5141EC51B8DED6255441A4703D6AAF2E5141666666A6D825544152B81EC5B32E514114AE47C1D7255441295C8F22B62E51417B14AED7D725544148E17A84B82E5141E17A14EED72554417B14AEF7B92E5141D7A3707DD72554410AD7A300BA2E5141EC51B80ED62554419A999979B62E51418FC2F5C8D42554413D0AD7A3B62E514100000060D42554415C8FC235B72E5141666666F6D2255441F6285C6FB72E514185EB5168D225544114AE4721BA2E514152B81E55D3255441F6285CCFBA2E51415C8FC275D32554413D0AD7A3BA2E5141AE47E13AD62554410AD7A310BB2E514185EB5128D7255441CDCCCC2CBD2E514148E17A84D62554418FC2F558C12E514114AE47F1D4255441E17A14EEC52E51410AD7A3B0D22554415C8FC285C92E514166666696D02554419A999949CD2E5141F6285C0FCE2554418FC2F5A8D12E51413D0AD7B3CA255441D7A3709DDB2E5141AE47E15AC2255441295C8FF2DF2E51411F85EBC1BE2554411F85EB81E32E5141CDCCCC7CBC255441EC51B84EE72E51418FC2F5A8BA255441666666E6EB2E514114AE4711B92554418FC2F558F22E5141713D0A77B725544100000030EC2E51411F85EBD1B02554413D0AD723F02E5141295C8F92AF2554417B14AEE7F32E5141AE47E12AA92554410AD7A3D0F82E514152B81E65A92554415C8FC205FC2E514148E17A64AD255441DCE22889FD2E5141A267F0D6AD255441713D0A57FD2E5141D7A3703DB0255441295C8F22032F5141713D0A57B125544166666666022F51417B14AE27B4255441CDCCCCEC062F514152B81E85B4255441D7A370CD062F5141000000F0AC2554416CF46090092F51411849B333AD255441F154D3C20C2F5141637109D6AD255441DD088B950E2F5141235DDE84AD2554416DF392F0112F5141583654EAAD255441CA4970A0122F514110A2293FAB2554411572C642132F5141EFC51BCAA8255441C3E033A7122F5141CEAE5869A6255441DB39AAB2102F5141348C3332A5255441044B3DF40E2F5141F7BFEBAAA42554417B14AE870D2F5141CDCCCCFCA42554414C1BEB2A092F5141D5DCDF76A6255441E17A14AE062F514114AE47E1A92554419A9999C9012F514152B81E55A62554419A9999B9042F5141333333E3A325544166666666022F5141C3F5284CA2255441F6285C9F032F51410AD7A370A12554419A999989072F5141CDCCCC2CA2255441713D0AD70A2F514148E17AD4A02554414117857B0F2F514177F9D48EA3255441A4703DCA122F51411F85EB21A4255441245B0296152F514125A3F7DEA2255441333333D3162F514148E17AD4A02554415596B6351A2F5141E7D31748A025544139E1310F1C2F51411916CAA6A0255441A4703DCA232F5141EC51B8FE9E255441333333F3272F514166666676A02554415C8FC2452A2F51415C8FC2C59D2554418FC2F508352F5141F6285CDF9E2554410AD7A3603F2F5141295C8F4298255441C3F528BC3E2F5141D7A3704D93255441295C8F023F2F51419A999919912554411F85EBC14A2F514114AE471197255441F6285C4F4B2F5141C3F5284C9C2554417B14AE67422F514185EB51089D255441E17A14AE422F51415C8FC2E5A1255441713D0AC74C2F5141295C8F829F2554415C8FC2B54C2F5141B81E857B9B255441295C8F224C2F5141C3F5286C96255441713D0AC7402F5141333333F38F255441E17A141E3F2F51415C8FC2E58C2554417B14AE173C2F514114AE47C18A255441AE47E1BA3A2F5141AE47E19A8A255441295C8F42362F51415C8FC2A58C255441295C8F82302F5141E17A142E8B255441D7A3704D232F51413D0AD76398255441A4703D5A1B2F51410AD7A310962554413D0AD753142F51415C8FC2B597255441295C8F22132F5141A4703DBA99255441C3F5289C0F2F51413D0AD76398255441AE47E1DA0F2F5141D7A370DD93255441AE47E11A0A2F5141CDCCCC4C9425544148E17A74062F5141D7A3708D982554418FC2F5B8012F5141F6285C7F9F255441AE47E1EAFF2E5141B81E85CBA22554411F85EBA1FE2E5141F6285C1FA6255441E17A14DEFD2E51415C8FC2C5A9255441BBCCB28AFD2E51415BC312C4AD255441B0B5B407FC2E5141608D4B52AD25544114AE4771FC2E51417B14AE77A9255441CDCCCC3CFD2E51418FC2F5C8A52554411F85EBB1FE2E5141A4703D3AA22554419A999969002F514148E17AC49E2554411F85EBD1042F5141F6285C4F9725544114AE47910D2F5141333333038E25544185EB51B80E2F5141C3F528BC8B25544185EB51580F2F51419A99994989255441A4703D4A0E2F51415C8FC2458925544148E17A54092F5141CDCCCC2C8A255441B81E85CBFD2E514114AE4781892554415C8FC2E5F82E5141CDCCCC2C882554413D0AD743F12E5141EC51B83E87255441E17A146EEA2E51413333332385255441295C8FD2E62E51417B14AE07832554410AD7A320E12E5141A4703D5A7D25544133333393DD2E5141A4703D5A77255441F6285C4FDA2E514166666696752554413D0AD7B3D92E5141000000207425544152B81E15D12E51417B14AE776E2554415C8FC225C92E5141EC51B81E6A25544166666656C32E5141C3F5285C66255441AE47E1DABE2E5141713D0AC76325544152B81E75BB2E51415C8FC2B5612554418FC2F5B8B02E514148E17A9461255441B81E857BAE2E514185EB511865255441000000A0A82E5141CDCCCCFC6725544148E17A14A32E51410AD7A300692554411F85EB81A02E5141000000406C255441CDCCCCAC9D2E51417B14AE376A255441713D0A77992E51410AD7A3D06B2554417B14AED79A2E514152B81E5571255441713D0AE7932E51419A9999797225544148E17AA4932E51411F85EBA1722554419A9999E9922E51411F85EB6171255441000000B0912E5141713D0A676F25544166666616912E5141333333136E2554410AD7A3208F2E5141AE47E12A6B255441EC51B80E8E2E5141713D0A17652554419A9999C9902E514185EB51B862255441F6285C3F8D2E51413D0AD7A35E25544100000070882E51419A9999E959255441C3F528BC872E5141666666E6582554413D0AD7A3862E514152B81E3554255441EC51B82E862E5141295C8FC252255441EC51B87E7A2E5141333333B34E255441F656CF3D7C2E5141F00EF62E4B2554413D0AD783882E514185EB517832255441AE47E10A882E5141000000602F25544114AE47118C2E514152B81EE52A2554410AD7A3208D2E5141F6285CFF28255441666666C6872E51417B14AED727255441E17A14FE862E5141F6285CFF2825544166666606832E51417B14AEC729255441666666267C2E5141666666062B255441435BCC15772E514123060B333E255441E130C99E742E5141A909EA87472554415C8FC265732E51418FC2F5284C2554410AD7A390652E51410AD7A3E0462554415C8FC2B5572E514148E17A144625544166666656532E514148E17AD44525544114AE4731502E514152B81EB54525544152B81EF5412E51413D0AD7B353255441A4703D9A382E514114AE47215C255441A4703D6A302E514152B81ED563255441E17A14FE282E5141E17A146E69255441713D0A471A2E5141000000105D255441B81E858B112E5141EC51B8AE52255441333333830D2E5141EC51B86E572554417B14AE27072E5141B81E851B5C255441A4703D8AFE2D5141D7A3708D5E2554413D0AD7D3FA2D51411F85EB2161255441EC0835DDFA2D514124EDA751662554415A35FE59F92D514193C55C5E64255441B8F91265F92D5141BCAF4A48642554413D0AD7D3FA2D5141B81E852B61255441D7A370ADF82D5141D7A370DD62255441713D0AC7F52D514152B81E4565255441D7A370FDF22D514114AE470168255441F6285C6FEF2D51417B14AE376C255441F6285C3FED2D5141D7A370AD6E25544114AE4701EB2D5141D7A370DD702554419A999929E82D51419A99994972255441F6285C7FE42D5141D7A3707D732554419A9999B9E02D5141333333A374255441713D0A47DD2D51417B14AED77525544133333353DA2D514114AE47517725544114AE4701D62D5141F6285CFF79255441B81E853BD22D5141333333F37C255441F6285C7FCF2D5141333333237F255441B81E858BCC2D514152B81E458125544114AE47C1C92D5141333333A382255441F6285CDFC52D5141333333F383255441713D0A97C22D51419A9999198525544152B81E75C02D514152B81E8586255441D7A3709DBD2D5141333333C388255441D7A3701DBA2D5141F6285C7F8B255441F6285C8FB62D51419A9999698D255441F6285C1FAF2D514114AE470192255441713D0A87AA2D5141F6285CAF9425544114AE47A1A72D5141B81E858B9625544133333313A42D51417B14AED798255441F6285C8FA12D514152B81EC599255441F6285C5F9F2D5141B81E850B9A255441B81E851B9B2D5141333333439A25544152B81EA5982D51419A9999899A25544152B81EE5962D5141333333239B255441B81E854B962D51417B14AE579C255441713D0A67962D51417B14AEA79D255441D7A3708D972D51417B14AEF79E255441D7A370BD992D514152B81EC5A0255441D7A370FD9E2D51419A999929A4255441713D0AE7A02D51419A999979A5255441713D0A37A22D514133333383A6255441F6285CFFA12D5141F6285CEFA72554419A999949A12D51419A9999F9A825544114AE4731A02D5141F6285C1FAA2554419A9999399E2D5141F6285CFFAA255441B81E85FB9B2D5141B81E858BAB255441F6285CAF992D5141B81E85FBAB2554419A999989982D5141D7A370CDAC255441D7A3701D972D514114AE4701AE2554410B920226952D5141A34725CCAF2554412D124944942D514192DFEA09AF255441333333C3942D51419A9999A9AE255441F6285C0F972D5141B81E856BAC255441713D0A97982D514133333353AB25544114AE47F19A2D5141D7A3709DAA255441B81E854B9D2D51419A999949AA255441713D0A279F2D5141D7A3704DA9255441333333B39F2D51417B14AE97A825544133333323A02D514152B81E55A725544114AE47C19F2D514133333313A6255441713D0AD79D2D514152B81EB5A4255441D7A3702D9A2D5141F6285C3FA22554419A999939972D51419A999939A0255441F6285C4F952D514114AE47B19E25544114AE4761942D5141333333539D255441F6285C6F942D514152B81E859B255441713D0A87952D5141D7A3706D9A255441F6285C7F972D51419A9999A999255441B81E85CB992D51417B14AE47992554419A9999599D2D5141D7A3701D992554419A999969A02D5141333333F398255441D7A3707DA22D51419A99995998255441333333D3A52D5141D7A3707D96255441713D0A87AA2D514114AE47519325544152B81E45B02D514152B81E2590255441713D0A27B42D51419A9999698D255441D7A3707DB72D5141B81E859B8B2554419A999939BA2D51417B14AEF78925544133333373BD2D51417B14AE578725544114AE4791C02D51419A99991985255441F6285C3FC32D5141B81E85BB83255441713D0AF7C62D5141B81E856B82255441713D0A97C92D5141B81E858B81255441713D0A87CD2D5141B81E855B7F25544152B81EC5CF2D514114AE47717D255441D7A370DDD02D5141D7A3703D7C2554419A999989D02D5141D7A3700D7A255441D7A3702DD22D51413333337379255441F6285C8FD22D51417B14AE177B255441B81E850BD72D514152B81E1578255441B81E858BDA2D514152B81EE57525544133333363DD2D514114AE47B174255441333333C3E12D51419A99992973255441F6285C3FE62D5141D7A370BD712554419A999999E82D51419A9999F97025544133333363EB2D514114AE47016F255441713D0AC7EE2D51419A9999496B255441D7A370ADF12D51419A9999C96725544152B81EC5F22D5141333333C36525544133333343F32D51419A9999B964255441F6285C1FF52D51417B14AEE763255441713D0AF7F72D5141D7A370FD6125544114AE47D1FA2D5141B81E859B5F25544185EB5118E12D5141C3F528DC6925544148E17A24CF2D5141B81E851B712554419A999929BC2D5141C3F528CC782554419A9999F9BB2D514114AE47917C2554419A9999A9BA2D5141F6285C3F7F25544133333383B22D5141D7A3707D81255441D7A3701DAC2D514114AE47D181255441C3F5284CAA2D5141666666A67F25544133333323A22D5141713D0A678025544148E17AA4A02D5141E17A149E7F255441D7A3700D9E2D514148E17AC47F255441EC51B87E9C2D514185EB51588025544114AE47D1972D5141333333F381255441AE47E16A942D5141EC51B82E82255441000000F0922D51413333337382255441295C8F82922D5141666666F68225544133333393912D51418FC2F588832554411F85EBE18E2D514148E17A3483255441000000808C2D514166666636832554413D0AD7538A2D51418FC2F558832554415C8FC225882D51410AD7A3B08325544148E17AC4852D51410AD7A35084255441E17A140E822D514152B81E5584255441295C8F82852D514148E17AB48E255441D7A3705D872D51417B14AE378F2554419A9999C9882D51419A99997990255441F6285C7F892D514152B81E559225544133333363892D5141F6285C3F94255441D7A3708D892D514114AE4761962554419A9999C9882D51417B14AE679825544152B81E75882D5141F6285CEF99255441F6285CEF892D5141D7A3702D9C2554419A9999698B2D51417B14AEC79C255441B81E853B8C2D51417B14AED79F255441B81E851B8D2D51417B14AE77A2255441D7A3700D8D2D514133333333A52554419A9999498C2D5141F6285C9FA625544152B81E858B2D514133333363A7255441AE47E19A892D5141E17A140EA825544148E17A148A2D5141666666C6A9255441B81E85AB8C2D51419A999929AB2554419A9999E98E2D514114AE4791AD2554410AD7A3C0902D5141713D0AA7AF255441295C8F02932D5141E17A14FEAF255441BA183D42942D51419A86780BAF255441D891F40E952D5141C4C76FDDAF2554415C8FC2A5942D5141D7A3703DB0255441D7A3700DA32D514185EB5168B225544148E17A94B02D51415C8FC2B5B425544152B81E25AA2D514185EB51C8C525544152B81EE5AB2D5141D7A3709DC6255441D7A3706DAD2D5141F6285C6FC72554419A999949AF2D5141F6285CBFC82554419A9999E9B12D5141D7A370FDCA25544152B81E05B22D5141F6285C7FCA255441B81E85BBB22D5141333333D3CA255441F6285C9FB22D5141F6285C5FCB25544152B81E85B52D514114AE4781CD25544114AE47F1B62D5141D7A3707DCE255441B81E858BB72D514133333353CE255441B81E85FBB72D5141D7A3702DCD255441333333A3B82D5141D7A370FDCA255441CDCCCC1CB72D5141CDCCCC5CCA25544185EB5148B72D5141B81E855BC825544114AE47E1B82D5141E17A147EC8255441D7A370ADB92D5141F6285C6FC725544133333343BB2D5141B81E858BC7255441EC51B81EBC2D5141E17A140EC8255441333333E3BD2D514133333333C825544133333373BD2D514152B81EA5CB255441F6285CCFBB2D514114AE47C1CB2554419A999989BB2D5141D7A3704DCC25544133333383B92D514133333323CC255441713D0AF7B82D514114AE4781CD25544114AE47B1B82D514152B81EB5CE2554419A9999E9B82D5141B81E856BCF25544133333383B92D5141B81E85DBCF255441713D0A27BB2D5141D7A370ADD0255441F6285C1FBD2D514152B81EC5D1255441713D0AA7BE2D5141333333D3D1255441091F27E6BE2D5141A24A68A9D1255441E02B1F99BF2D51416F1DEDFCD125544114AE47B1BF2D51419A999989D22554419A999919C22D514152B81ED5D425544114AE47F1C42D5141B81E854BD725544133333383C72D514133333343D925544114AE47C1C92D514114AE4731DA25544133333353CC2D514133333393DA255441D7A3701DCF2D51417B14AE07DA255441D7A370BDD12D5141333333D3D82554419A999959D52D5141D7A3703DD7255441D7A3704DD82D51417B14AE87D6255441D7A370EDDA2D5141D7A3705DD62554419A9999A9DD2D514152B81E25D6255441D7A3702DE02D51419A999999D52554419A999979E22D5141D7A3702DD425544152B81EA5E52D514152B81E35D225544152B81EB5E82D514152B81E75D0255441333333F3EA2D5141333333C3CE25544133333303EE2D51417B14AE77CC2554413D0AD7D3F02D5141295C8F62CB25544133333333F52D514133333393CA2554411F85EBF1F72D514185EB51B8CA25544152B81E35FA2D5141F6285C5FCB255441B81E851BFD2D51417B14AE77CC255441A9CDC9A7FE2D51411F7867C2CC2554416CC3F2C3FE2D51419AB571C9CC255441BE7B11A9FE2D5141011CD8EFCD255441769A9674FE2D51413326AFE3CD25544152B81EF5FB2D51417B14AE57CD25544152B81EE5F82D5141D7A3704DCC255441713D0AA7F62D5141333333B3CB25544152B81EF5F42D5141333333B3CB255441D7A3701DF22D514152B81E15CC255441B81E858BEF2D514133333303CD25544133333393ED2D51419A999929CE25544114AE4701EB2D5141F6285C9FD025544152B81EB5E82D51417B14AE27D2255441F6285C5FE52D514152B81EF5D32554419A999979E22D514152B81EB5D52554419A999949E02D514152B81E95D625544152B81EC5DD2D514114AE4721D7255441D7A370EDDA2D5141B81E854BD725544114AE47C1D72D5141D7A370ADD7255441B81E85BBD52D514152B81E55D825544114AE4761D32D514114AE4751D9255441333333A3D42D51417B14AE77DA2554419A999999D32D5141D7A3709DDB255441D7A3709DD22D514133333333DD25544114AE47C1D02D514114AE4741DD255441713D0A77D12D5141F6285C8FDB255441713D0A57D22D5141D7A370DDD925544152B81E35D02D51417B14AEE7DA2554419A999909CD2D5141F6285C8FDB25544152B81E85CA2D5141F6285C8FDB255441333333F3C72D5141D7A370BDDA25544133333353C52D5141B81E850BD925544152B81E35C22D514114AE4741D6255441D7A370CDBF2D5141D7A3702DD4255441B81E853BBD2D514114AE47C1D225544152B81E55BA2D51419A9999A9D1255441D7A370ADB92D514152B81E35D2255441B868F19DB92D5141462AE5AFD2255441F5CD689FB82D514120448F3CD225544152B81E95B82D5141333333D3D125544133333333B82D514152B81EE5D0255441F6285C6FB72D514114AE4721D025544152B81E15B52D5141D7A3707DCE255441333333F3B22D5141F6285C1FCD2554419A9999B9AF2D5141F6285C7FCA255441B81E85EBAD2D514152B81E05C925544133333383AB2D514152B81EB5C725544114AE47B1A92D5141C3F528FCC6255441E17A14BEA12D5141A4703DDAC425544185EB51889B2D51410AD7A310C3255441333333A39C2D51419A9999F9C425544152B81EC59E2D514133333373C6255441B81E859B9E2D5141333333C3C7255441F6285CEF9E2D51419A9999C9C9255441D7A3704DA02D51417B14AED7C925544114AE4761A22D514114AE4701CA255441B81E858BA22D5141F6285C5FCB25544152B81ED5A12D51419A999949CD255441713D0AE7A02D514114AE4741CF255441B81E859B9E2D51419A999979CF255441D7A370AD9D2D51419A999939D12554419A9999C99D2D51417B14AE07D3255441D7A370AD9D2D514152B81E65D425544152B81E959C2D5141F6285CDFD525544152B81EB59B2D51419A999959D7255441D7A3709D9A2D5141B81E859BD8255441B81E855B992D5141D7A370FDD8255441713D0AB7972D5141B81E859BD82554410AD7A3A0962D5141A4703D5AD82554418FC2F528962D5141295C8FB2D92554411F85EB01962D51417B14AEE7DA255441B81E85CB952D514185EB51B8DB255441A4703D5A952D514133333343DC2554419A9999B9942D514148E17AE4DC2554413D0AD723942D514114AE4791DD255441F6285C6F932D5141CDCCCC8CDE2554411F85EB91922D514152B81E65DF25544148E17AB4912D514148E17A04E02554411F85EBB1902D5141666666C6E0255441B208E30A902D51411489CE58E12554419A9999A98F2D5141E17A14AEE1255441A5495AB5772D51410DE89BFDF825544117F378871A2D5141E232AE92B62654419285DE70EB2C5141C87A406CF826544166EC9D7EB52C51410DA928308727544108000000CDCCCCCCB62E51410AD7A38084255441666666B6B42E5141333333C3842554418FC2F5B8AD2E5141B81E85AB8125544148E17AB4AC2E5141F6285C2F7E2554419A999979B42E5141000000807B255441333333E3B72E5141295C8F12802554410AD7A3D0B72E51415C8FC26582255441CDCCCCCCB62E51410AD7A3808425544108000000AE47E10AAF2E514148E17A348F2554418FC2F5A8AD2E5141D7A370ED8D2554413D0AD7E3AB2E5141713D0AF78C2554418FC2F588AA2E5141D7A3705D8C2554411F85EBB1AB2E5141B81E854B8925544148E17AE4AD2E5141666666F689255441EC51B89EB12E5141C3F5284C90255441AE47E10AAF2E514148E17A348F2554410D000000295C8FB26C2E51419A9999E99A25544152B81EE5632E514148E17A248A255441713D0AD75C2E5141B81E858B81255441CDCCCC2C532E514185EB51587B25544152B81EB57B2E5141A4703DEA7C255441CDCCCC6C832E5141666666168325544114AE47A1852E5141C3F528EC892554418FC2F5A8812E5141CDCCCC5C8A25544166666616842E514185EB511890255441CDCCCC6C832E514185EB510898255441AE47E15A7E2E51413D0AD7C39D255441F6285CBF742E51419A9999599E255441295C8FB26C2E51419A9999E99A2554410700000048E17AB4A82E5141EC51B8BE8725544148E17A84A42E514152B81E058725544114AE4761A32E51411F85EBE18325544148E17A84A42E5141AE47E1FA80255441A4703DDAA52E5141713D0AE780255441CDCCCC5CA82E51410AD7A3508425544148E17AB4A82E5141EC51B8BE8725544107000000B81E859BA62E514152B81E357B25544148E17A44A32E514185EB5128782554417B14AE77A22E5141AE47E1BA732554410AD7A310A42E51413D0AD7A3722554410AD7A3B0AB2E514185EB5198782554415C8FC2D5AB2E51415C8FC2C57A255441B81E859BA62E514152B81E357B25544105000000295C8FA23B2E5141CDCCCCFC98255441AE47E16A3C2E51411F85EB71982554413D0AD7233D2E51418FC2F55899255441C3F5284C3C2E51411F85EB119A255441295C8FA23B2E5141CDCCCCFC9825544114000000E17A14FE332E5141CDCCCC2C9C2554418FC2F588342E51413D0AD7B39E25544152B81E55332E51411F85EB81A025544185EB5158312E514166666646A325544133333343302E5141F6285C9FA5255441E17A148E2D2E51417B14AEF7A7255441D7A3705D2A2E5141F6285C3FA72554411F85EB51282E5141AE47E10AA6255441EC51B80E272E5141AE47E16AA4255441713D0AD7272E5141B81E852BA1255441F6285C8F282E51419A9999199E25544166666686292E5141AE47E15A9C25544114AE47012A2E514152B81EB59925544114AE47A12B2E5141E17A14CE98255441AE47E14A2C2E5141000000409A255441A4703DEA2D2E51410AD7A3309A255441E17A142E2F2E5141A4703D3A99255441D7A370DD302E5141000000A098255441A4703DCA322E514148E17AC499255441E17A14FE332E5141CDCCCC2C9C25544105000000713D0AC7952E5141AE47E12AE22554410AD7A3D09A2E514185EB51B8E1255441D7A3706D9B2E514148E17A34E825544114AE4761962E514114AE4721E8255441713D0AC7952E5141AE47E12AE225544106000000333333F3392E51418FC2F5E892255441333333933B2E5141EC51B88E952554415C8FC2E53C2E5141666666669625544148E17A743B2E5141B81E857B97255441B81E851B392E51411F85EB9193255441333333F3392E51418FC2F5E8922554410500000052B81E351D2E5141F6285CBFD6255441333333431D2E5141D7A3708DD8255441333333131B2E51419A9999A9D8255441713D0AF71A2E51419A999959D725544152B81E351D2E5141F6285CBFD6255441040000002177CFF54C2E5141D57B470294255441B33ADEEF4C2E5141C552280C9425544152B81E153F2E514114AE4741922554412177CFF54C2E5141D57B470294255441090000006AA33CDA612E514168E49A299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285C4F5E2E5141EC51B8AE992554416AA33CDA612E514168E49A299C25544116000000713D0A27DE2D514133333383E5255441D7A3701DDD2D5141B81E856BE42554419A999939DD2D514152B81ED5E2255441D7A370FDDD2D514152B81EA5E0255441B81E859BDD2D514133333383DE25544133333383DC2D5141333333C3DC255441333333F3DC2D5141D7A3702DDB2554419A999919DE2D514152B81E15DA255441F6285C3FDF2D51417B14AEE7DA255441F6285C1FE02D5141333333E3DB25544152B81E25E22D5141D7A3709DDB255441D7A370ADE32D514114AE47F1DB255441B81E850BE52D5141D7A3705DDD255441B81E85EBE52D514152B81E55DF255441713D0AE7E62D51417B14AEE7E1255441713D0A07E62D5141D7A3700DE3255441B81E859BE42D514152B81E25E425544133333313E32D514114AE4701E6255441B81E85FBE12D51419A9999F9E72554419A9999B9E02D514152B81E15E82554419A9999D9DF2D5141D7A3708DE6255441713D0A27DE2D514133333383E5255441070000009A999929DA2D514152B81E75D0255441B81E851BDA2D5141F6285C6FCE255441333333A3DB2D51417B14AE37CE255441B81E85BBDC2D5141B81E85ABCD255441F6285C5FDE2D514152B81E65CD255441F6285C5FDE2D5141B81E854BD02554419A999929DA2D514152B81E75D02554413700000066666696F42D5141666666D6712554419A9999B9F52D51415C8FC2C56F255441F6285C8FF52D5141F6285C4F6D255441D7A3705DF72D514114AE47F16B25544152B81E05F82D51417B14AE776A255441B81E854BF82D51419A9999A96825544133333313F82D51415C8FC22566255441713D0A57F92D514148E17A6464255441E83A83C7FF2D514172FA38A96C25544100000020FF2D514185EB51F86C2554417B14AE87012E5141713D0AF772255441D7A3705D042E514148E17AC47825544152B81E55072E51419A9999797D255441666666960B2E5141CDCCCCEC81255441D7A3700D112E51418FC2F578852554418FC2F558072E5141A4703D9A692554418FC2F5E80D2E5141CDCCCCFC66255441CDCCCC7C142E5141B81E856B63255441CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441B81E859B152E514100000060BF2554419A999929142E5141B81E853BBE255441333333A3112E5141A4703D5ABE2554410AD7A340102E514148E17AE4BE255441333333630E2E51415C8FC2C5BE255441F6285C1F0D2E51411F85EB91BD2554417B14AEE70D2E51419A999929BB255441E17A14DE0E2E51417B14AE27B825544114AE47910E2E514152B81E25B5255441666666760C2E5141666666D6B1255441000000800B2E514185EB51F8AF255441B81E85EB0B2E51411F85EB71AD25544148E17A040B2E5141F6285C0FAC255441000000E0092E514152B81E45A82554419A9999E9082E5141295C8F42A5255441AE47E12A082E514100000090A325544133333313022E5141CDCCCCECA4255441E17A145E002E5141713D0A97A125544100000090FE2D5141CDCCCC2C9C255441B81E85CBFB2D5141713D0A179325544166666616F92D51410AD7A37088255441A4703DEAF62D51415C8FC2A57A25544166666696F42D5141666666D67125544121000000F6285C0FEE2D5141A4703D3A7425544133333353F22D5141B81E854B86255441EC51B88EF52D514114AE47F19425544152B81E35F92D5141713D0AD7A425544100000050FB2D514100000030A72554413D0AD793FC2D5141AE47E1EAAA2554417B14AEC7FD2D5141EC51B85EAF2554411F85EB61FE2D5141CDCCCC2CB125544100000030002E5141AE47E19AB42554411F85EBA1012E51411F85EB11B72554413D0AD7C3FF2D51413D0AD783B8255441A4703D8AFD2D514152B81E05BA255441B81E85CBFB2D51410AD7A3E0BA255441333333B3FA2D51415C8FC275BB2554419A9999A9F92D5141B81E854BBB25544114AE4791F82D514114AE47F1B825544114AE47D1F62D5141F6285CAFB7255441F6285C8FF52D5141F6285CAFB725544133333343F32D5141B81E85FBB9255441F6285CFFEE2D5141B81E854BBB25544152B81E75EA2D5141F6285C2FBB255441F6285CAFE62D514114AE4761B92554417B14AE07E62D5141D7A370FDB5255441B81E857BE52D51417B14AE37B22554417B14AE87E22D5141D7A3702DAA2554417B14AE37E12D51419A999989A125544114AE4711E02D5141D7A370DD9A25544133333303E02D51417B14AEE794255441B81E851BE12D51415C8FC2858D2554415C8FC2E5E32D5141713D0A778A255441B81E857BE12D51415C8FC2B57925544152B81ED5E72D51416666669676255441F6285C0FEE2D5141A4703D3A742554410A000000E17A14EE052E5141295C8F72D32554418FC2F5C8082E51419A999979DA2554417B14AE47052E51419A9999D9DC255441D7A3700D042E5141F6285CFFDB25544152B81E35012E5141F6285C3FDA255441F6285C0F002E51417B14AEB7D8255441333333F3FF2D514114AE47B1D62554419A999989012E51415C8FC2D5D425544133333373032E514114AE4781D4255441E17A14EE052E5141295C8F72D32554410500000066666636EA2E51419A9999D9A92554410AD7A3A0E72E514166666656A92554415C8FC215E82E51413D0AD773A725544185EB5118EB2E5141D7A370BDA525544166666636EA2E51419A9999D9A92554410500000052B81EB5C02E51410AD7A320C725544152B81EE5C12E51410AD7A350C1255441F6285C7FC92E5141713D0AA7C225544152B81E95C82E5141CDCCCC3CC825544152B81EB5C02E51410AD7A320C72554410500000033333383B52E5141F6285C3FCF25544133333363B62E5141AE47E1FACA25544100000000B82E5141C3F5283CCB25544100000010B72E514152B81E95CF25544133333383B52E5141F6285C3FCF2554410E0000005C8FC265B52E5141333333E3BC255441CDCCCC9CB12E514148E17AD4C3255441D7A3708DB02E514166666666C3255441AE47E1EAAF2E51410AD7A3E0BE25544114AE47C1B32E514166666636B92554411F85EB51BA2E51411F85EB81B125544148E17A34BB2E5141713D0AC7B0255441CDCCCCECBC2E5141AE47E15AAE255441713D0A57BD2E5141F6285C6FAE255441A4703DEABD2E5141C3F5280CAF2554411F85EBF1BD2E5141E17A14FEB0255441CDCCCC0CB82E51419A9999E9B925544148E17A84B62E51418FC2F538BB2554415C8FC265B52E5141333333E3BC2554411B000000E17A14AEBD2E5141295C8F72A5255441F6285C2FBD2E5141EC51B80EA5255441C3F5283CB62E514185EB51089F255441D7A370DDB42E5141CDCCCCEC9A25544148E17A64B12E5141666666169925544148E17AE4B12E514152B81E15962554419A9999D9B42E51419A9999D9922554415C8FC2D5B32E5141D7A370FD91255441713D0AB7B22E5141713D0A579125544152B81E05B22E514148E17A049125544185EB5138B22E5141333333A390255441EC51B8CEB32E514185EB517891255441AE47E14AB72E514148E17A348D255441295C8FF2B82E5141F6285CEF8D255441CDCCCC5CB82E5141333333A38F25544133333323BB2E5141F6285CBF9425544185EB5198BB2E51418FC2F5D89A255441F6285C5FBF2E5141A4703D1A9A25544133333383C12E5141B81E85EB9E255441CDCCCC7CC22E5141B81E85FBA325544133333383C12E514148E17A94A92554418FC2F538C12E514114AE4781AA255441F6285C3FC02E5141B81E855BAA255441333333A3C02E5141CDCCCC4CA3255441713D0A37BF2E5141A4703DCAA225544185EB51C8BD2E5141D7A3704DA4255441E17A14AEBD2E5141295C8F72A52554410600000048E17AF4322E51419A9999090D26544185EB5188302E5141D7A370DD0C26544100000010222E5141E17A143E00265441C3F5288C232E514148E17AD4FE2554417B14AEF7312E514114AE47B10B26544148E17AF4322E51419A9999090D26544107000000713D0A97E52D5141333333E334265441D7A3707DE62D5141295C8F222F265441EC51B84EEB2D5141000000102F2654418FC2F548ED2D5141CDCCCC8C37265441F6285C5FEA2D5141295C8F723826544114AE4721E62D51410AD7A33037265441713D0A97E52D5141333333E3342654410600000048E17A74252E5141F6285CDFF32554418FC2F5B8232E514166666676F2255441C3F5282C252E514114AE4761EC2554410AD7A3F0262E5141295C8FF2EC255441333333A3282E51418FC2F508F225544148E17A74252E5141F6285CDFF3255441050000003D0AD7E3622E5141EC51B8EE1E265441E17A14EE622E5141CDCCCCBC1F26544152B81ED5612E5141C3F528CC1F2654413D0AD7C3612E5141CDCCCCFC1E2654413D0AD7E3622E5141EC51B8EE1E265441390000001F85EB21422E514185EB5168EE255441AE47E10A412E5141E17A145EEB255441E17A147E3D2E514148E17A54E7255441E17A149E3A2E514166666656E5255441333333433B2E5141A4703DDAE9255441D7A370CD372E514114AE4741ED25544152B81E85332E51413D0AD733EB255441713D0A57352E51413D0AD7A3E225544173842B992D2E514142A8BB42DC255441CDCCCCAC2D2E5141295C8F42DC255441B97766972C2E51411EF81E87DB2554418C73085B2D2E5141DD009A8DDA2554417B14AED72F2E51410AD7A350DC25544133333383332E514148E17A34DF25544166666666362E514100000040E1255441B81E85BB3A2E514185EB51A8E325544185EB51283F2E5141A4703D1AE625544166666616402E5141B81E852BE82554411F85EB21422E51413D0AD793EA2554410AD7A3E0432E514185EB51B8EB255441CDCCCCDC452E5141E17A14BEEC25544185EB5198492E51415C8FC295ED255441A4703D3A4E2E5141F6285C3FEE2554410AD7A300542E5141CDCCCC7CEE2554410AD7A340572E5141295C8FE2ED255441CDCCCC3C592E51411F85EBF1ED255441333333D35B2E5141E17A145EEE2554418FC2F5785E2E51411F85EBF1ED255441713D0A27652E5141E17A14BEEC255441B81E852B6B2E514152B81E05EC255441F6285C2F712E5141713D0AD7EB255441D7A3703D762E5141666666E6EB2554419A9999D9792E514185EB51B8EB25544148E17A947D2E5141E17A14BEEC255441B81E85FB842E5141AE47E1AAEE2554418FC2F5088A2E5141EC51B8EEEF255441D7A370AD912E5141295C8FC2F2255441B3ED136E932E514105F1AA90F325544158D689ED922E514168EFA96EF42554419A999979902E5141C3F5285CF3255441295C8F12892E514152B81EE5F025544166666646822E514166666626EF255441AE47E15A7B2E51417B14AE67ED25544100000000762E5141A4703D1AED2554418FC2F538702E5141CDCCCCDCEC255441B81E858B692E514185EB5158ED2554418FC2F5F8642E514152B81EA5ED255441333333B3602E5141AE47E1AAEE255441333333D35B2E5141295C8F82EF2554415C8FC255582E51410AD7A3B0EF25544185EB5148532E514114AE47A1EF2554418FC2F5B84C2E51413D0AD763EF255441D7A3700D492E514185EB51E8EE255441666666E6442E5141333333D3ED255441B81E85CB422E5141F6285C9FEC25544185EB51F8402E51419A999929EB2554411F85EB21422E514185EB5168EE25544109000000295C8FF28A2E5141D7A3702D052654419D6A6B26892E514123BA0A6C0526544166666656892E5141AE47E14A04265441295C8F82872E51419A9999C9032654417B14AEF7862E5141EC51B8AE0126544148E17A44872E51417B14AEC700265441295C8F12892E51418FC2F53802265441AE47E17A8A2E514185EB510803265441295C8FF28A2E5141D7A3702D05265441070000005C8FC245342E5141AE47E1DA4B2654410AD7A3702E2E51415C8FC2B547265441C3F528BC392E51410AD7A33041265441E17A14FE442E514114AE478143265441295C8F92432E51413D0AD7C347265441EC51B83E3A2E51413D0AD713472654415C8FC245342E5141AE47E1DA4B2654410B0000005C8FC2E5292E5141295C8FC2552654413D0AD7F3252E5141295C8FC2552654413D0AD7F3222E5141AE47E1EA53265441CDCCCC6C272E51415C8FC2B54C265441713D0A272A2E51410AD7A3804B265441713D0A672C2E514148E17A744E26544148E17A942E2E5141CDCCCC0C4D2654417B14AE37332E5141A4703DCA4F26544100000000322E514148E17A64532654411F85EBA12C2E5141AE47E19A512654415C8FC2E5292E5141295C8FC2552654411A000000CDCCCCFC632E514152B81EA53B265441E17A14BE652E5141C3F528CC3A26544185EB51E8642E5141F6285C3F3126544148E17A14632E5141666666462E26544148E17A94722E5141000000C021265441E17A14AE742E5141713D0A272426544152B81E35772E5141A4703DEA21265441D7A3707D792E5141295C8F5222265441EC51B82E7A2E514152B81ED523265441E17A146E782E5141B81E856B272654410AD7A360792E51413D0AD7532B265441CDCCCC6C7B2E5141EC51B8FE2F2654418FC2F5587E2E5141F6285C4F39265441CDCCCCDC7C2E5141C3F528BC3B26544152B81E056A2E51411F85EBB13D2654410AD7A360652E5141B81E85DB3E265441B81E858B642E514114AE472142265441E17A14EE662E5141CDCCCC3C44265441F6285C5F662E51417B14AE574726544152B81EA5622E5141666666064A26544133333353632E514166666646502654415C8FC245612E5141B81E859B50265441F6285C7F5F2E5141A4703D3A4B2654411F85EB61622E51413333330347265441F6285CFF5E2E51410000002045265441CDCCCCFC632E514152B81EA53B26544131000000EC51B85E032E5141295C8F32CD2554419A999909052E5141F6285C1FCD255441E17A144E082E51418FC2F5A8CC255441F6285C6F072E5141C3F528CCC9255441B81E85BB092E51418FC2F518C9255441D7A370DD082E5141D7A3707DC725544114AE47A1092E51419A999929C7255441D7A3709D0A2E514152B81E95C82554419A9999090C2E51417B14AE17C82554415C8FC2A50C2E5141D7A370EDC8255441713D0A470E2E514114AE4741C82554419A9999190F2E51417B14AE27CB255441F6285C4F0C2E5141D7A3704DCC255441B81E856B0C2E51419A9999D9CC25544133333393102E51417B14AE77CC25544157E370AA102E514187A908BACB25544127FEC541122E514169E9829ECB255441AB72A50A142E5141FA292B5FCC25544133333313142E5141D7A370BDCC255441713D0A27162E51419A999949CD25544152B81E85172E514114AE47F1CD255441F6285CDF192E514152B81E25CF25544152B81EF51E2E514152B81E35D225544152B81E95212E51419A999959D3255441E17A147E252E5141A4703DEAD42554411F85EB51282E5141666666E6D625544185EB51882C2E514185EB51F8D9255441CFCF5C5A2D2E5141C5A9398ADA2554416969F6932C2E51414A958B82DB25544185EB51E82A2E51413D0AD763DA2554413D0AD783262E5141666666E6D6255441295C8F72232E5141713D0A37D5255441A4703D0A212E5141F6285C5FD425544152B81EF51E2E5141B81E855BD32554419A9999E91A2E5141D7A3701DD125544114AE4711182E5141F6285C4FCF25544152B81E35162E5141B81E858BCE25544152B81E75142E51419A999929CE255441713D0A970F2E514114AE47F1CD2554419A9999D9092E5141B81E851BCE25544152B81EE5062E5141F6285C6FCE25544152B81E95052E514152B81EB5CE2554419A999999042E5141D7A3707DCE255441D7A370ED032E5141AE47E18ACE255441D7A370FD002E514152B81E45CE25544197E616AEFE2D51419D4D22EECD25544183C646C7FE2D5141D4B3A4C8CC255441713D0A47002E514114AE4711CD255441EC51B85E032E5141295C8F32CD2554411700000048E17A84412E51413D0AD7E397265441C3F5280C3C2E51410AD7A350952654410AD7A3003B2E5141E17A14BE922654415C8FC2A53B2E51411F85EB91902654411F85EB11402E5141F6285C3F90265441713D0A47412E5141C3F528FC8B26544152B81EC5432E514152B81E058B2654415C8FC275452E514152B81E258C265441666666D6482E514152B81E958B265441713D0A874A2E5141000000D089265441A4703D1A4D2E5141B81E854B8A265441F6285C1F512E51418FC2F5B887265441E17A140E532E5141295C8F928926544185EB5148582E51418FC2F5688926544148E17A045B2E5141333333F38C2654417B14AE275E2E5141CDCCCC5C8F2654413D0AD703622E514185EB51488F2654418FC2F558642E51411F85EB2191265441666666365A2E514152B81ED594265441713D0AA7522E5141C3F528CC95265441F6285C6F4F2E5141713D0A57922654410AD7A3404B2E5141A4703D7A9526544148E17A84412E51413D0AD7E397265441050000007B14AE47F32E5141D7A3707D45265441A4703DEAF12E5141AE47E19A432654410AD7A340F32E51415C8FC2A542265441A4703D9AF42E514166666676442654417B14AE47F32E5141D7A3707D452654410700000052B81E05D62E5141AE47E1FA52265441713D0AA7D12E51419A9999494D2654419A999939D92E5141CDCCCC0C482654415C8FC2C5DA2E5141CDCCCCDC48265441B81E856BE72E51413333338354265441F6285CBFE12E5141333333E35726544152B81E05D62E5141AE47E1FA5226544108000000295C8FB2B82E5141333333236E265441A4703DDAB82E5141295C8F92722654413D0AD7D3AB2E5141666666F67726544100000070AA2E51418FC2F5B8742654410AD7A3B0AD2E51417B14AE5772265441295C8FC2AE2E51417B14AE4770265441AE47E11AB52E5141CDCCCC0C70265441295C8FB2B82E5141333333236E2654410D000000A4703DDAF32E5141D7A370CD222654418FC2F5F8F42E51418FC2F5882526544114AE4701F72E5141EC51B8BE25265441713D0A87F92E5141295C8F22242654411F85EB61FD2E5141AE47E19A25265441F6285C4FF62E5141AE47E12A3126544100000080F32E51415C8FC2F5302654410AD7A310EA2E51415C8FC2F52F265441D7A3701DE62E51411F85EB312C265441D7A370CDE32E514185EB51F82826544185EB51C8E42E5141D7A3706D27265441C3F5286CEC2E5141B81E85EB27265441A4703DDAF32E5141D7A370CD222654411200000085EB5198B02E51418FC2F5F86326544114AE47C1AF2E514114AE47C1612654410AD7A340B62E5141EC51B83E5D26544100000080C12E51417B14AEE75C26544152B81E65C42E5141A4703DAA63265441AE47E13AC62E51417B14AE0767265441295C8F22C92E51411F85EB9166265441E17A147ECD2E5141295C8FF267265441EC51B89ED12E5141AE47E1BA6526544148E17A24D42E5141B81E85EB5F265441D7A370EDD92E51413D0AD7E35A26544166666606DD2E514148E17A545E265441E17A14DECE2E5141D7A3703D6A2654413D0AD7D3C82E514152B81E256D2654411F85EB11C72E514152B81EC56B265441D7A3707DC12E51413333337361265441C3F5289CBA2E514185EB51386126544185EB5198B02E51418FC2F5F8632654410B000000B81E857B2C2F5141F6285CEF9625544148E17AD42C2F5141AE47E1CA95255441295C8F422E2F5141666666A6942554418FC2F5E82F2F5141E17A149E94255441EC51B84E312F5141AE47E1EA91255441AE47E14A382F5141D7A3707D8E255441EC51B82E392F5141713D0AD790255441AE47E15A322F514100000010952554411F85EB11322F5141E17A147E98255441AE47E16A2E2F5141A4703D9A99255441B81E857B2C2F5141F6285CEF96255441080000000AD7A3600B2F5141E17A141EE0255441EC51B8EE072F51410AD7A330DF255441666666B60B2F51418FC2F528D9255441B81E858B0F2F5141D7A3709DD725544166666606142F5141EC51B84ED9255441713D0A77162F514148E17AE4DC2554415C8FC2C5142F51413D0AD7B3DE2554410AD7A3600B2F5141E17A141EE02554410800000000000090E42C5141C3F528BC4A285441D7A3702DE32C51417B14AEE7482854410AD7A390E22C514185EB5118482854417B14AE47E52C5141AE47E1CA45285441F6285C6FE72C5141E17A14DE47285441B81E85FBE72C514152B81E6549285441CDCCCC3CE72C51413D0AD7234A28544100000090E42C5141C3F528BC4A28544105000000F6285CAFCD2C5141713D0A9749285441CDCCCC3CCE2C5141EC51B83E47285441AE47E17AD12C5141EC51B83E47285441295C8F22D12C514114AE47014A285441F6285CAFCD2C5141713D0A97492854410500000066666696DA2C51411F85EBC1CF285441D7A370ADD72C51419A999919CF2854417B14AED7D72C51415C8FC265CD285441C3F5286CDA2C5141A4703DBACD28544166666696DA2C51411F85EBC1CF28544108000000295C8FC2932C5141A4703DBACD28544185EB51D88F2C5141295C8FF2C9285441C3F528DC8F2C5141EC51B82EC8285441B81E853B912C51418FC2F588C628544185EB5198932C51410AD7A350C62854415C8FC245972C5141A4703DAAC928544114AE4781962C5141295C8F22CC285441295C8FC2932C5141A4703DBACD285441060000008FC2F5F8DA2C5141EC51B83ECC285441E17A148ED82C514185EB51F8CB2854413D0AD763D82C51411F85EBA1C7285441A4703D7ADA2C5141713D0A07C728544152B81E85DB2C5141A4703DAAC92854418FC2F5F8DA2C5141EC51B83ECC2854410A0000003D0AD7738B2C5141B81E853BC32854415C8FC2D58A2C5141713D0A47C3285441C3F528BC892C51419A9999E9C1285441C3F528BC892C5141F6285C9FBF285441C3F528EC8A2C5141D7A3704DBE2854410AD7A3708A2C5141D7A3701DBD2854413D0AD7A38C2C5141A4703D4ABD28544152B81E858D2C51417B14AEA7BE285441C3F528AC8B2C5141F6285C5FC02854413D0AD7738B2C5141B81E853BC3285441070000000AD7A300FE2C5141AE47E15A7C285441AE47E11AFF2C51415C8FC2357B285441713D0A97012D5141666666467D28544114AE4751012D5141000000907D2854410AD7A380FF2C5141713D0AB77F2854410AD7A390FD2C51413D0AD7137E2854410AD7A300FE2C5141AE47E15A7C2854410D00000085EB5158CE2C5141D7A370DDB928544114AE4741CC2C51419A9999D9B8285441F6285CBFCB2C5141D7A3704DB5285441F6285C2FCD2C51415C8FC265AF285441B81E85BBCE2C514114AE4741AE285441EC51B8BED42C514166666636B3285441295C8FF2D42C5141C3F5286CB42854413D0AD7C3D42C51419A9999C9B5285441AE47E19AD32C514185EB5168B8285441713D0A77D22C51418FC2F598B8285441295C8F42D12C514185EB5168B8285441E17A14DECF2C5141B81E855BB928544185EB5158CE2C5141D7A370DDB9285441450000003D0AD7A3D12C5141D7A370CD9928544166666636D22C51413D0AD7939B28544100000020D52C51413D0AD7A39B285441295C8FB2D52C514185EB51E89C285441EC51B8AED42C5141EC51B8CE9E2854411F85EB91D52C5141666666E6A02854411F85EB91D52C5141F6285C6FA3285441C3F5289CD82C51411F85EB31A4285441000000B0D92C5141E17A14AEA72854417B14AE47D72C5141F6285CAFAC285441333333E3D52C514114AE4751AD28544133333343D42C5141D7A370ADA92854410AD7A3C0CF2C5141D7A370ADA92854411F85EBC1CE2C5141F6285C6FAB2854415C8FC275CD2C5141D7A370BDAB28544185EB51C8CA2C51417B14AE77A628544152B81E65CB2C5141F6285CCFA0285441295C8F22CA2C514185EB51F89F285441666666B6C92C5141EC51B8FEA1285441EC51B8BEC42C514185EB5158A728544148E17A44C12C5141D7A370BDA5285441EC51B80EBE2C51410AD7A3B0A728544152B81E25BC2C51411F85EB01A628544152B81EC5BA2C5141EC51B8FEA728544152B81E65B92C5141EC51B84EA728544185EB5178B92C5141713D0A17A52854418FC2F598B72C51413D0AD753A4285441295C8F42B62C514166666696A5285441AE47E14AB72C51419A9999D9A62854411F85EB71B72C51413D0AD7C3A7285441713D0A87B62C51418FC2F5B8A828544185EB5178B32C51410AD7A300A728544148E17A54B12C5141E17A143EA52854411F85EBD1AC2C5141666666E6A42854415C8FC2E5AC2C51419A9999D9A6285441000000C0AB2C51410AD7A360A828544166666606AB2C5141E17A147EA8285441295C8F42AA2C514152B81EB5A4285441C3F528ECA22C51410AD7A370A4285441F6285C9FA12C514185EB5148A52854418FC2F5989F2C51410AD7A370A42854417B14AE679F2C514152B81E45A1285441F6285C4F9C2C5141E17A148E9E285441D7A370ED9B2C51413D0AD7139B285441333333839A2C5141000000509A285441F6285CAF972C5141000000509A2854413D0AD7C3952C5141F6285C3F96285441F6285C2F9B2C5141AE47E1BA96285441D7A370AD9E2C51413333333394285441AE47E1EA9E2C5141333333E395285441C3F5281C9D2C5141F6285CEF97285441295C8FC29F2C5141CDCCCC2C98285441AE47E1DAA32C5141713D0AD79328544100000050A82C51415C8FC2F5932854417B14AE27A92C51411F85EB01962854410AD7A390AB2C51410AD7A320962854413D0AD7E3AC2C5141000000E0922854413D0AD793BA2C5141AE47E1DA8F28544100000010BE2C51411F85EBF191285441AE47E19AC02C5141EC51B8EE9428544148E17A64BF2C5141AE47E10A99285441CDCCCCBCC12C51418FC2F5289D285441F6285CAFCB2C51419A9999B9982854410AD7A300CC2C5141333333D39628544152B81ED5C82C5141AE47E18A942854418FC2F5C8C92C5141713D0A5793285441AE47E1FACE2C5141EC51B89E952854419A9999A9CE2C5141C3F5285C992854413D0AD7A3D12C5141D7A370CD992854410C00000052B81EC5C42C5141C3F5287C9A2754413D0AD7F3C32C5141333333439B275441000000A0C22C5141B81E858B9C27544114AE4761C22C51417B14AEC79C2754415C8FC2B5BE2C5141B81E85FB9827544100000030C12C5141F6285CAF95275441AE47E16AC22C51413D0AD79395275441EC51B8AEC32C514114AE47619627544133333333C42C5141B81E851B98275441EC51B8EEC32C514100000000992754417B14AE17C52C5141E17A142E9A27544152B81EC5C42C5141C3F5287C9A27544107000000E17A14DEBD2C5141CDCCCC7CAA2754411F85EB61BD2C51418FC2F578AA275441713D0A77BD2C514152B81E05A72754419A9999A9C12C5141295C8F32A72754410AD7A3A0C12C514185EB5198AA275441713D0A17C12C514148E17A94AA275441E17A14DEBD2C5141CDCCCC7CAA275441130000008FC2F5688C2C51415C8FC2E5E1275441713D0A47812C5141EC51B80EDE275441295C8FE2802C51410AD7A330D5275441B81E853B842C51417B14AE17D5275441333333D3842C51419A999989CB275441F6285CCF852C5141D7A370FDC727544152B81E258A2C5141295C8FA2CB275441666666368C2C5141AE47E16AD327544185EB51488E2C5141CDCCCCECD2275441A4703DCA8D2C5141666666E6CD275441AE47E16A922C5141D7A3705DD0275441E17A144E932C51419A999999D4275441666666C68E2C5141E17A144ED4275441B81E85DB8F2C51413D0AD753D9275441AE47E16A922C514166666686D9275441713D0A67932C514114AE47F1DE275441713D0A27902C514148E17AA4E5275441A4703D7A8E2C5141B81E853BE62754418FC2F5688C2C51415C8FC2E5E1275441070000003D0AD7D3CE2C51413D0AD743EE2754418FC2F528D02C51413D0AD793F12754413D0AD7E3CF2C5141EC51B8EEF2275441CDCCCC4CCE2C51411F85EB51F3275441A4703D1ACD2C51413D0AD713F22754415C8FC215CC2C51410AD7A350EF2754413D0AD7D3CE2C51413D0AD743EE2754410B000000EC51B8CED82C51415C8FC275EF2754415C8FC235D72C51418FC2F518EF275441E17A141ED72C514114AE4761ED2754411F85EB91D42C51418FC2F518EE2754417B14AE87D32C51419A999969EA275441295C8FA2D42C514185EB5128E9275441713D0AB7D52C514152B81EE5E8275441CDCCCC0CD82C5141D7A370BDE927544152B81EE5D82C51419A999929EC2754411F85EB11D92C5141713D0A17EE275441EC51B8CED82C51415C8FC275EF275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984559 - 984543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD820655411578213AB9A55041AAC14B0E82065541AA83191AB8A550410BB6532E8306554197883DA0B7A550417F9D9F8F850655419F4586A9B7A55041D11DA9AD85065541ACD69341BAA550414D1315128E0655417915A591C8A55041E010AC5D8F065541E656C3E3C9A55041FFFA78848F0655411B560F21CDA5504138A7ACAD8F06554168947DA7C9A5504177CD06F1AF065541E1849B42CDA55041E7CD7CE78F06554185EC5B65CDA550410CB479EB8F06554128F43A6CC9A55041B31E8409B2065541BEA3C40FA1A550419D76610AAE065541E223DE3BA1A550419C41D30AAC065541A8ABFFB1A4A55041740C03188A06554152EADBB8A4A5504112DAEE118A065541C6D01C2AA4A550410139FC0B8A0655411A3C862AA4A55041ED5B35078A065541DB6C0960AAA55041F034990F85065541044C9B65AAA550416A8FC70F85065541C79BE1C3B5A55041D69E636E85065541955A96C2B5A550419B7F4764850655412102AF3DB5A55041B717E45581065541F8DC4F578BA5504119C4682C760655410F37753389A55041B532A59977065541F3712F4F88A550419AE21A4EB50655410F37753389A55041F5A5D2FFB60655415A80D7DBACA55041E30B07E8B80655414EDFA328AEA5504100EF3261BA065541AA3CB11DAEA5504154153F57BA065541F79AE02CB1A550416679D4D4BD065541DC600B79A9A550414230DC400E075541BF6A7E10AEA550410BDA1C74110755413756C137B4A55041FC92284907075541E4EFA437B4A5504106BA974507075541BDC6AEEDB3A5504155B441FCFD065541AD85B2EBB3A550419FF670BCFD0655419F3CCD23B3A550418F5D39A3E4065541E247A97DB3A55041DAD2D922CD065541FB24D4EAB8A55041615C8329CC0655416D81503FB7A55041589E91C0E70655410AE44A8BBDA55041AE2015D1E30655410CD2E5A5BDA550417622F7DFC60655414DA59D7BBEA55041FE2EA8DDC1065541F4F4BA38B8A550415592ABC9C40655418CAE7DF1B7A55041D885FACBC90655414A8EE6C4B3A550413FCC3713CA065541EBC84FFDB3A5504112E22710B806554167F8C7FFB3A55041BB3FA65AB70655415B5FE60AB4A550416DFC595BB706554112DA570FC0A55041D2589D1DB80655410400000059BA0671B1A5504148F8A219BE065541E9E4F983B1A550414EF51C2FBE06554143FAF580AFA550413A35404AD006554159BA0671B1A5504148F8A219BE065541
+</a>
+
+<b>
+01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541E63773E88BA550416EC6A504110755417CFBABD7A5A55041BF94266713075541737C3C55A7A550410AFA459D11075541B60343AAAFA550419FCF5BAEBE065541B35CD980ACA55041842EFC4EBB065541B0B56F57A9A55041FD5D4C9FB906554182233B258AA55041CB6F6AFDB80655411F4777E188A55041FD5D4C9FB9065541FA528B7588A5504178340619BB0655417F7CD1FB86A55041842EFC4EBB065541299A03EE85A55041D8696033B906554140E7853083A55041D8696033B906554158E17B6683A55041389FBA4DB706554104A6178285A550411EABCEE1B60655418C76C73187A550418CDA1E32B5065541C964A9D387A55041849E8DA5770655418C76C73187A55041B3E5051E75065541D1C50FFD5FA55041241A0F286A065541FC2DCBFC41A55041C6C1254964065541DBF7ACEC3EA55041C826B9417C0655413D1392533DA550417352D275B00655414D29D2CB3AA5504106BA1565AF0655417DF207FE3DA550418359369C6B065541DF8AC40E3FA5504176CC6F26660655418B02F7C940A55041B72E0E2764065541EFFBF91B3CA5504103E6C805630655417B14AE173CA550418FC2F5F8640655419A9999A939A55041E17A14EE6A065541B81E853B39A550410AD7A37075065541AE47E1AA36A55041CDCCCC0CB406554152B81E9536A55041CDCCCC2CB6065541E17A141E33A55041EC51B82E0A0755410000005034A5504148E17A840B0755416666666644A550410AD7A3A00C0755418FC2F5385AA550411F85EB210E075541713D0A375DA5504148E17A340F075541E7608D2561A55041ADC66F500F0755410103000000010000000400000008C55C1D3CA550417844C5646206554183150A483CA55041E5AA66CF61065541EC51B81E3CA55041713D0AC76106554108C55C1D3CA550417844C56462065541010300000001000000040000005D8D8B6A85A55041BED241F372065541E47D41AC6AA55041DE43FAAE6B0655417EDE984D71A55041C74E34966D0655415D8D8B6A85A55041BED241F37206554101030000000100000005000000EAFF24B4A9A5504124CF7BA07C0655410B3AAB5FB4A55041A2DEE3787F0655418FAA4712B6A55041AB55FF007F06554100000090B4A550410AD7A3407F065541EAFF24B4A9A5504124CF7BA07C0655410103000000010000000500000001DF2966B8A55041789F9D5C7E0655410B412FB2B8A5504130F7A4477E065541CC7EBC1FB9A55041E4B857F480065541713D0AD7B8A55041CDCCCC2C7E06554101DF2966B8A55041789F9D5C7E06554101030000000100000005000000CFD9570FC0A55041CB589D1DB806554109100BF6C5A550419C44AFB4B8065541F863EE9CCAA55041D51735C8B8065541FA1C3BAEC4A55041ADFA4E68B8065541CFD9570FC0A55041CB589D1DB806554101030000000100000005000000BCC6AEEDB3A5504156B441FCFD065541DFEFA437B4A5504105BA974507075541E17A147EB4A550411F85EBD106075541E897B6E7B3A55041F089613CFD065541BCC6AEEDB3A5504156B441FCFD065541010300000001000000040000005980D7DBACA55041E50B07E8B8065541FECA9E84ACA5504183DC5CE3B806554152DFA328AEA55041FFEE3261BA0655415980D7DBACA55041E50B07E8B806554101030000000100000006000000B84DF564B4A55041D525FB62850655410E6C91F0B5A550417DA1368285065541AEC766EAB5A5504167A26F6585065541935A96C2B5A550419C7F476485065541C59BE1C3B5A55041DB9E636E85065541B84DF564B4A55041D525FB6285065541010300000001000000070000009A4586A9B7A55041D31DA9AD850655418D3618A7B7A55041CB1D6EBB8506554164E2BD2FBAA55041057226148E06554170930B7BCBA5504199BA35B38F0655417715A591C8A55041DD10AC5D8F065541B0D69341BAA550414A1315128E0655419A4586A9B7A55041D31DA9AD8506554101030000000100000004000000BFA3C40FA1A550419B76610AAE0655419BB2CE27A1A55041D8D8C20CAE065541E723DE3BA1A550419D41D30AAC065541BFA3C40FA1A550419B76610AAE0655410103000000010000000400000065F8C7FFB3A55041B63FA65AB7065541E8C84FFDB3A5504115E22710B80655415F5FE60AB4A5504169FC595BB706554165F8C7FFB3A55041B63FA65AB7065541010300000001000000060000001BAC79F6C3A550418B0BF252830655416A1791F2C3A550412E6FF07D830655418DEB2500C4A55041BC721A7F83065541ECD70406C4A55041F471C832830655417871A807BFA550410D4AC6BD820655411BAC79F6C3A550418B0BF25283065541010300000001000000040000005BBA0671B1A550414DF8A219BE0655413FFAF580AFA550413935404AD0065541E7E4F983B1A5504152F51C2FBE0655415BBA0671B1A550414DF8A219BE065541010300000001000000050000002CF43A6CC9A55041B21E8409B206554180EC5B65CDA5504107B479EB8F065541DF849B42CDA55041E8CD7CE78F065541BA6B1E6BC9A55041EEF16709B20655412CF43A6CC9A55041B21E8409B20655410103000000010000000B000000E6FB5D2BD4A55041BFD4E67B87065541F43CDF21D4A550411CF16BD687065541D4F53E49D4A55041DE0AE1DA87065541AA4D8A52D2A5504109968417990655412EB6A1FDCEA55041555C94DAB8065541E5B48A0DCFA550418F21D7DAB8065541FCDEE639D3A550414C050BCE9106554179C6256BD4A550410C9C245F87065541A3302AF0C3A55041919C022585065541321AD0ECC3A550411D50D33F85065541E6FB5D2BD4A55041BFD4E67B8706554101030000000100000006000000699DAFEAA7A55041C178B99214075541A8DF075984A55041C20F520812075541865B5BADABA550414AC4253E1507554195DE56C4ABA5504112C02019150755415C593BE4A7A5504135DDCFCC14075541699DAFEAA7A55041C178B9921407554101030000000100000006000000C8D01C2AA4A550410339FC0B8A065541B94ABDB7A9A550411F3E38478A06554129D4688AAAA55041D8D7F91085065541DA6C0960AAA55041F034990F850655411E3C862AA4A55041ED5B35078A065541C8D01C2AA4A550410339FC0B8A065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905824 - 2963546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000039000000FE36CF70195751415B8B12A1743B5441B59576481E5751413245C91C763B544106B7DFB324575141EF5A2C14783B54418D01CFAD26575141BCFD4D9E783B5441B284FF38325751419633368D7A3B5441E744DD223D5751417C7DDEA47B3B5441E15F3AEE43575141414781AF7B3B54411CBB31384B575141D1BF175D7B3B54415C6BC14A535751415962D0867A3B5441CB9DAF0C5C575141A8B79112793B54419305337764575141B2BFEAAA763B54414CABEE246A575141BD07539A743B54419C985C617257514199648103713B5441BFEF1C6F7857514189A348116E3B5441153D78907E5751418B9F470A6B3B54414BE369FD82575141BC32AA18693B5441683F625881575141D272D2D3613B5441E824378F80575141BF1F2A865E3B54418FFF996F8057514195A3838D5E3B54419C2F1BCF845751412E92F4B95C3B54418CA0B0EA8F575141491F524C593B5441542F850896575141E754B94D573B5441293BD05A9A575141353144C6553B544197883C6D985751417B1FE6DC4D3B5441D5EDAD9096575141FF72F916443B5441E4E775D5955751410B731E3B413B54410359576F9557514163552BB73A3B5441F3E13D1A95575141DDA2BCED353B5441940C4B0F95575141E5559CCB313B5441819A2EE7945751418D67D6E5283B54419111483C95575141F14908861F3B5441821780F7955751419C1ADC3C0E3B5441F25E8F2A9657514186AF7CA6093B5441F25E8F2A96575141E485CF63073B54414C3CF0DF8E575141BA4738BE063B544194525A1588575141D6752C9F063B5441BD9B3A8182575141665CF103063B544176CBDF517C5751412F9F9E2A053B54412ABD595178575141323E3413043B5441F83D32497557514134DDC9FB023B54419B1CA4F26B57514134DDC9FB023B54412A1EBEAC6E5751411750D4D1143B5441348F55FE73575141DDC0B26E283B5441A37709A265575141B0D25AA02A3B5441C7FA26FE5B57514162F6CF272C3B5441F689233D4B57514174678C9D2E3B54419AB0A63347575141411EA43F2F3B54414884A4363C575141437934CF303B5441E8B3AE583C575141ED137963383B54418C600A8B3D5751413A4F5F6B453B5441917A5F973E57514181C34A7A503B5441BE42A89A3F57514120A291CF603B54410081235626575141EB584B3E603B5441F278CB4D1B575141EF3C45D05F3B5441FF279D731A575141BB32AA18693B544155B279161A575141E873A64F6E3B5441FE36CF70195751415B8B12A1743B5441
+</a>
+
+<b>
+01060000000100000001030000000100000052000000E17A14AE3E5751410AD7A340503B54418FC2F5983F575141EC51B89E603B54416EC2A0973F57514102BAB79E603B5441BF42A89A3F5751411FA291CF603B5441D9080E65365751412CC49E9A603B5441B81E85CB2F5751417B14AE97603B5441849235A42657514168350C40603B54410481235626575141EF584B3E603B54413CF8F56923575141B20D2621603B54413DAB7F4D1B575141EAE07ED35F3B544104289D731A575141B932AA18693B544153B279161A575141E873A64F6E3B54410037CF70195751415D8B12A1743B5441B49576481E5751412E45C91C763B54410AB7DFB324575141F25A2C14783B54419001CFAD26575141BAFD4D9E783B5441B084FF38325751419933368D7A3B5441EA44DD223D575141797DDEA47B3B5441E35F3AEE435751413D4781AF7B3B544119BB31384B575141D0BF175D7B3B54415A6BC14A535751415962D0867A3B5441C89DAF0C5C575141A3B79112793B54419105337764575141B2BFEAAA763B54414FABEE246A575141BA07539A743B54419D985C61725751419A648103713B5441BAEF1C6F7857514188A348116E3B5441133D78907E575141879F470A6B3B544149E369FD82575141B932AA18693B5441653F625881575141D472D2D3613B5441E524378F80575141C41F2A865E3B544190FF996F8057514199A3838D5E3B544170334D3381575141D2CEC73B5E3B5441CDCCCC2C81575141C3F5281C5E3B5441EF92B2A4825751412AC580A15D3B54419C2F1BCF845751412E92F4B95C3B544187A0B0EA8F575141471F524C593B5441542F850896575141EB54B94D573B5441EDB03B599A5751414C56D3C6553B54414F28BA0A9A5751414CFEA27D543B544192883C6D98575141791FE6DC4D3B5441A70B224A98575141A10F9B244D3B54410AD7A34098575141CDCCCCFC4C3B54415B97F23696575141BA6634B8423B5441E4E775D59557514108731E3B413B54410259576F9557514164552BB73A3B5441570B684B95575141375DB5B1383B54415C8FC205955751411F85EB61353B544191EC49FA9457514105C8D7222D3B54417D9A2EE7945751418B67D6E5283B5441A13CA3F294575141CD24CAA2273B54411F85EBF194575141EC51B81E273B5441978B702B95575141563FF960213B54419211483C95575141F14908861F3B5441E8798F53955751418690CD5F1D3B5441A4703DAA955751418FC2F5B8143B5441EE5E8F2A965751417CC5917F083B5441EE5E8F2A96575141E585CF63073B5441483CF0DF8E575141BA4738BE063B544192525A1588575141D5752C9F063B5441BD9B3A8182575141645CF103063B544177CBDF517C575141329F9E2A053B54412BBD595178575141363E3413043B5441F63D32497557514139DDC9FB023B5441A01CA4F26B57514139DDC9FB023B54413121A8FC6B5751419C374C3D033B5441333333036C575141CDCCCC3C033B5441E17A143E6D57514114AE47010A3B544114AE47B16D575141333333630E3B5441333333936E57514114AE4791133B5441D8DEDB956F5751419C06722D183B5441A707778470575141142D4E9D1B3B54418FC2F528745751419A999959283B5441E92A94FA735751410D9FD960283B5441338F55FE73575141DDC0B26E283B5441A37709A265575141B4D25AA02A3B5441CBFA26FE5B57514162F6CF272C3B5441F389233D4B57514177678C9D2E3B544199B0A63347575141421EA43F2F3B54413970FA5F3C575141E16655C9303B5441602D995B3C575141035B3983383B544114AE47713D57514133333313443B5441E17A14AE3E5751410AD7A340503B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905824 - 3502003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000039000000FE36CF70195751415B8B12A1743B5441B59576481E5751413245C91C763B544106B7DFB324575141EF5A2C14783B54418D01CFAD26575141BCFD4D9E783B5441B284FF38325751419633368D7A3B5441E744DD223D5751417C7DDEA47B3B5441E15F3AEE43575141414781AF7B3B54411CBB31384B575141D1BF175D7B3B54415C6BC14A535751415962D0867A3B5441CB9DAF0C5C575141A8B79112793B54419305337764575141B2BFEAAA763B54414CABEE246A575141BD07539A743B54419C985C617257514199648103713B5441BFEF1C6F7857514189A348116E3B5441153D78907E5751418B9F470A6B3B54414BE369FD82575141BC32AA18693B5441683F625881575141D272D2D3613B5441E824378F80575141BF1F2A865E3B54418FFF996F8057514195A3838D5E3B54419C2F1BCF845751412E92F4B95C3B54418CA0B0EA8F575141491F524C593B5441542F850896575141E754B94D573B5441293BD05A9A575141353144C6553B544197883C6D985751417B1FE6DC4D3B5441D5EDAD9096575141FF72F916443B5441E4E775D5955751410B731E3B413B54410359576F9557514163552BB73A3B5441F3E13D1A95575141DDA2BCED353B5441940C4B0F95575141E5559CCB313B5441819A2EE7945751418D67D6E5283B54419111483C95575141F14908861F3B5441821780F7955751419C1ADC3C0E3B5441F25E8F2A9657514186AF7CA6093B5441F25E8F2A96575141E485CF63073B54414C3CF0DF8E575141BA4738BE063B544194525A1588575141D6752C9F063B5441BD9B3A8182575141665CF103063B544176CBDF517C5751412F9F9E2A053B54412ABD595178575141323E3413043B5441F83D32497557514134DDC9FB023B54419B1CA4F26B57514134DDC9FB023B54412A1EBEAC6E5751411750D4D1143B5441348F55FE73575141DDC0B26E283B5441A37709A265575141B0D25AA02A3B5441C7FA26FE5B57514162F6CF272C3B5441F689233D4B57514174678C9D2E3B54419AB0A63347575141411EA43F2F3B54414884A4363C575141437934CF303B5441E8B3AE583C575141ED137963383B54418C600A8B3D5751413A4F5F6B453B5441917A5F973E57514181C34A7A503B5441BE42A89A3F57514120A291CF603B54410081235626575141EB584B3E603B5441F278CB4D1B575141EF3C45D05F3B5441FF279D731A575141BB32AA18693B544155B279161A575141E873A64F6E3B5441FE36CF70195751415B8B12A1743B5441
+</a>
+
+<b>
+01060000000100000001030000000100000052000000E17A14AE3E5751410AD7A340503B54418FC2F5983F575141EC51B89E603B54416EC2A0973F57514102BAB79E603B5441BF42A89A3F5751411FA291CF603B5441D9080E65365751412CC49E9A603B5441B81E85CB2F5751417B14AE97603B5441849235A42657514168350C40603B54410481235626575141EF584B3E603B54413CF8F56923575141B20D2621603B54413DAB7F4D1B575141EAE07ED35F3B544104289D731A575141B932AA18693B544153B279161A575141E873A64F6E3B54410037CF70195751415D8B12A1743B5441B49576481E5751412E45C91C763B54410AB7DFB324575141F25A2C14783B54419001CFAD26575141BAFD4D9E783B5441B084FF38325751419933368D7A3B5441EA44DD223D575141797DDEA47B3B5441E35F3AEE435751413D4781AF7B3B544119BB31384B575141D0BF175D7B3B54415A6BC14A535751415962D0867A3B5441C89DAF0C5C575141A3B79112793B54419105337764575141B2BFEAAA763B54414FABEE246A575141BA07539A743B54419D985C61725751419A648103713B5441BAEF1C6F7857514188A348116E3B5441133D78907E575141879F470A6B3B544149E369FD82575141B932AA18693B5441653F625881575141D472D2D3613B5441E524378F80575141C41F2A865E3B544190FF996F8057514199A3838D5E3B544170334D3381575141D2CEC73B5E3B5441CDCCCC2C81575141C3F5281C5E3B5441EF92B2A4825751412AC580A15D3B54419C2F1BCF845751412E92F4B95C3B544187A0B0EA8F575141471F524C593B5441542F850896575141EB54B94D573B5441EDB03B599A5751414C56D3C6553B54414F28BA0A9A5751414CFEA27D543B544192883C6D98575141791FE6DC4D3B5441A70B224A98575141A10F9B244D3B54410AD7A34098575141CDCCCCFC4C3B54415B97F23696575141BA6634B8423B5441E4E775D59557514108731E3B413B54410259576F9557514164552BB73A3B5441570B684B95575141375DB5B1383B54415C8FC205955751411F85EB61353B544191EC49FA9457514105C8D7222D3B54417D9A2EE7945751418B67D6E5283B5441A13CA3F294575141CD24CAA2273B54411F85EBF194575141EC51B81E273B5441978B702B95575141563FF960213B54419211483C95575141F14908861F3B5441E8798F53955751418690CD5F1D3B5441A4703DAA955751418FC2F5B8143B5441EE5E8F2A965751417CC5917F083B5441EE5E8F2A96575141E585CF63073B5441483CF0DF8E575141BA4738BE063B544192525A1588575141D5752C9F063B5441BD9B3A8182575141645CF103063B544177CBDF517C575141329F9E2A053B54412BBD595178575141363E3413043B5441F63D32497557514139DDC9FB023B5441A01CA4F26B57514139DDC9FB023B54413121A8FC6B5751419C374C3D033B5441333333036C575141CDCCCC3C033B5441E17A143E6D57514114AE47010A3B544114AE47B16D575141333333630E3B5441333333936E57514114AE4791133B5441D8DEDB956F5751419C06722D183B5441A707778470575141142D4E9D1B3B54418FC2F528745751419A999959283B5441E92A94FA735751410D9FD960283B5441338F55FE73575141DDC0B26E283B5441A37709A265575141B4D25AA02A3B5441CBFA26FE5B57514162F6CF272C3B5441F389233D4B57514177678C9D2E3B544199B0A63347575141421EA43F2F3B54413970FA5F3C575141E16655C9303B5441602D995B3C575141035B3983383B544114AE47713D57514133333313443B5441E17A14AE3E5751410AD7A340503B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453701 - 39094
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001900000041813CB948B050410B4011B3D2D154418FC2F5C84BB05041C3F5285CD4D15441666666366CB05041B81E855BE7D1544152B81E557BB050417B14AE37F0D15441F6285C4F94B0504133333333FFD15441A4703DFA95B050417B14AE0700D254419A99996998B05041F6285CFFFAD154417B14AE779DB05041EC51B84EF3D1544148E17A14A2B05041F6285CFFEBD154410AD7A3B09CB050411F85EB61E9D1544185EB514897B05041E17A143EE6D15441EC51B8CE91B05041C3F528ECE2D154418FC2F5888DB050410AD7A3E0DFD15441E17A142E8AB050415C8FC245DDD154410AD7A34086B05041A4703D0ADAD15441AE47E12A81B05041B81E858BD5D15441000000607BB05041AE47E14AD0D154417B14AEA779B05041B81E85BBCED15441713D0A276EB05041CDCCCCDCC3D154417B14AE5768B05041333333A3BED15441A4703D6A64B05041713D0A77BBD15441666666C660B05041EC51B8BEB8D15441EC51B80E5CB05041000000B0B5D154414216A8C958B050411D2699C8B3D1544141813CB948B050410B4011B3D2D15441
+</a>
+
+<b>
+01060000000100000001030000000100000004000000CE18456F4CB050417E6EB38ECBD154416F3A1BBB48B05041FCEE77AFD2D154411F85EBC148B05041333333B3D2D15441CE18456F4CB050417E6EB38ECBD15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587267 - 2974623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000003C0000002730A45B6D4651418D43C35C0B6054413D0AD7236D465141B81E85AB0A6054414C54B2146D46514132480BB90A6054413BE42EC36C46514109A8EFFC096054415C8FC2456F465141295C8FC207605441F6285C0F7546514152B81EA500605441A4703D3A76465141E17A14BEFF5F54410AD7A3807C465141AE47E1DAFB5F5441EC51B89E7A4651413D0AD7D3F65F5441F6285CFF77465141B81E857BF45F544114AE477173465141713D0A57F05F544114AE476169465141D7A370CDEA5F5441000000C0714651415C8FC2E5D55F5441CDCCCC8C6B465141713D0A87D45F5441E17A14EE4C465141295C8F62CE5F5441C3F5282C4E465141666666F6C55F5441CDCCCC4C4246514148E17A44C45F5441713D0A472646514148E17A44C05F5441EC51B81E264651419A999929C15F5441D7A370DD2546514185EB51F8C25F54418FC2F518264651419A999979C65F5441E17A14DE26465141295C8F42D25F5441F6285CFF26465141C3F5282CD75F544185EB51D8264651410AD7A370DC5F544148E17A7426465141000000C0E05F544114AE47C125465141F6285CFFE55F544166666656224651413D0AD733FC5F54413D0AD7F3214651418FC2F578006054418FC2F5582246514185EB51680160544148E17A54234651410AD7A34002605441333333F33146514114AE47610760544114AE47914D465141295C8FE21060544114AE47D15246514185EB51C81260544100000060574651410AD7A3C0146054413D0AD77359465141713D0AD715605441D7A3701D5A4651410AD7A34016605441E8F87C9B5B4651414449892217605441333333935B4651418FC2F528176054419A9999D95D465141B81E85BB18605441AE47E1DA5F465141CDCCCC6C1A6054417B14AE4763465141B81E858B1D6054417B14AE47684651418FC2F5F82260544114AE47B16C4651413D0AD7E327605441AE47E17A714651419A9999892C6054411F85EB11764651417B14AED72F605441666666667A465141A4703D2A25605441295C8FC27A4651413D0AD753216054410AD7A3C079465141C3F5281C1E6054413D0AD703794651415C8FC2E51B605441713D0A6776465141E17A14AE186054410AD7A320754651419A9999A91560544185EB517876465141F6285C1F146054410AD7A3207546514114AE47611260544114AE475173465141AE47E10A126054415C8FC2B5714651410AD7A37011605441333333B36F46514114AE47A10F605441713D0A176E465141000000B00D60544170DDC97F6D46514189DC93CF0B60544108D6B8876D4651415AC27CC20B6054412730A45B6D4651418D43C35C0B605441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000001562A2266D4651419D4665B40A605441D2BC471E6B465141461EE55C0C60544172D021ED68465141001613050F605441D97C0000674651410E382B6A106054410FE278295F46514161837AFF146054413205A32A5C465141C0D75FAC16605441E6F8599B5B465141C327982E176054419A9999D95D465141B81E85BB18605441AE47E1DA5F465141CDCCCC6C1A6054417B14AE4763465141B81E858B1D6054417B14AE47684651418FC2F5F82260544114AE47B16C4651413D0AD7E327605441AE47E17A714651419A9999892C6054411F85EB11764651417B14AED72F605441666666667A465141A4703D2A25605441295C8FC27A4651413D0AD753216054410AD7A3C079465141C3F5281C1E6054413D0AD703794651415C8FC2E51B605441713D0A6776465141E17A14AE186054410AD7A320754651419A9999A91560544185EB517876465141F6285C1F146054410AD7A3207546514114AE47611260544114AE475173465141AE47E10A126054415C8FC2B5714651410AD7A37011605441333333B36F46514114AE47A10F605441713D0A176E465141000000B00D6054416FDDC97F6D4651418CDC93CF0B6054410AD6B8876D4651415EC27CC20B6054412B30A45B6D4651418C43C35C0B6054411562A2266D4651419D4665B40A605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587267 - 3653714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000003C0000002730A45B6D4651418D43C35C0B6054413D0AD7236D465141B81E85AB0A6054414C54B2146D46514132480BB90A6054413BE42EC36C46514109A8EFFC096054415C8FC2456F465141295C8FC207605441F6285C0F7546514152B81EA500605441A4703D3A76465141E17A14BEFF5F54410AD7A3807C465141AE47E1DAFB5F5441EC51B89E7A4651413D0AD7D3F65F5441F6285CFF77465141B81E857BF45F544114AE477173465141713D0A57F05F544114AE476169465141D7A370CDEA5F5441000000C0714651415C8FC2E5D55F5441CDCCCC8C6B465141713D0A87D45F5441E17A14EE4C465141295C8F62CE5F5441C3F5282C4E465141666666F6C55F5441CDCCCC4C4246514148E17A44C45F5441713D0A472646514148E17A44C05F5441EC51B81E264651419A999929C15F5441D7A370DD2546514185EB51F8C25F54418FC2F518264651419A999979C65F5441E17A14DE26465141295C8F42D25F5441F6285CFF26465141C3F5282CD75F544185EB51D8264651410AD7A370DC5F544148E17A7426465141000000C0E05F544114AE47C125465141F6285CFFE55F544166666656224651413D0AD733FC5F54413D0AD7F3214651418FC2F578006054418FC2F5582246514185EB51680160544148E17A54234651410AD7A34002605441333333F33146514114AE47610760544114AE47914D465141295C8FE21060544114AE47D15246514185EB51C81260544100000060574651410AD7A3C0146054413D0AD77359465141713D0AD715605441D7A3701D5A4651410AD7A34016605441E8F87C9B5B4651414449892217605441333333935B4651418FC2F528176054419A9999D95D465141B81E85BB18605441AE47E1DA5F465141CDCCCC6C1A6054417B14AE4763465141B81E858B1D6054417B14AE47684651418FC2F5F82260544114AE47B16C4651413D0AD7E327605441AE47E17A714651419A9999892C6054411F85EB11764651417B14AED72F605441666666667A465141A4703D2A25605441295C8FC27A4651413D0AD753216054410AD7A3C079465141C3F5281C1E6054413D0AD703794651415C8FC2E51B605441713D0A6776465141E17A14AE186054410AD7A320754651419A9999A91560544185EB517876465141F6285C1F146054410AD7A3207546514114AE47611260544114AE475173465141AE47E10A126054415C8FC2B5714651410AD7A37011605441333333B36F46514114AE47A10F605441713D0A176E465141000000B00D60544170DDC97F6D46514189DC93CF0B60544108D6B8876D4651415AC27CC20B6054412730A45B6D4651418D43C35C0B605441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000001562A2266D4651419D4665B40A605441D2BC471E6B465141461EE55C0C60544172D021ED68465141001613050F605441D97C0000674651410E382B6A106054410FE278295F46514161837AFF146054413205A32A5C465141C0D75FAC16605441E6F8599B5B465141C327982E176054419A9999D95D465141B81E85BB18605441AE47E1DA5F465141CDCCCC6C1A6054417B14AE4763465141B81E858B1D6054417B14AE47684651418FC2F5F82260544114AE47B16C4651413D0AD7E327605441AE47E17A714651419A9999892C6054411F85EB11764651417B14AED72F605441666666667A465141A4703D2A25605441295C8FC27A4651413D0AD753216054410AD7A3C079465141C3F5281C1E6054413D0AD703794651415C8FC2E51B605441713D0A6776465141E17A14AE186054410AD7A320754651419A9999A91560544185EB517876465141F6285C1F146054410AD7A3207546514114AE47611260544114AE475173465141AE47E10A126054415C8FC2B5714651410AD7A37011605441333333B36F46514114AE47A10F605441713D0A176E465141000000B00D6054416FDDC97F6D4651418CDC93CF0B6054410AD6B8876D4651415EC27CC20B6054412B30A45B6D4651418C43C35C0B6054411562A2266D4651419D4665B40A605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 1226634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D544114AE47F1B7895141295C8F12758D54413D0AD763BB89514100000020778D54417EB1531EC38951418092F3CE7A8D5441D7A3704DC6895141333333537D8D544166666606C7895141713D0A177E8D54413D0AD723DA895141EC51B89E778D54417B14AE87DC895141000000D0768D5441CDCCCCBCE2895141A4703DBA768D5441AE47E1BAEC895141713D0A97768D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000007A44ABCFD9895141FF1E8AA2358D544131AD79E6D8895141F0BD8AFD358D544121B82458CA895141ABBEAB16388D54416FC79560C889514168BFCC2F3A8D5441B3045A82C08951416E66AA614E8D54414C13AA71BC895141CC09E315588D5441536121CEB6895141689C688F5F8D5441709BC8B0B5895141AACEC0615F8D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D544114AE47F1B7895141295C8F12758D54413D0AD763BB89514100000020778D5441EC51B83EC38951419A9999197B8D5441D7A3704DC6895141333333537D8D544166666606C7895141713D0A177E8D54413D0AD723DA895141EC51B89E778D54417B14AE87DC895141000000D0768D5441CDCCCCBCE2895141A4703DBA768D5441AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D54417A44ABCFD9895141FF1E8AA2358D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 3169640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D544114AE47F1B7895141295C8F12758D54413D0AD763BB89514100000020778D54417EB1531EC38951418092F3CE7A8D5441D7A3704DC6895141333333537D8D544166666606C7895141713D0A177E8D54413D0AD723DA895141EC51B89E778D54417B14AE87DC895141000000D0768D5441CDCCCCBCE2895141A4703DBA768D5441AE47E1BAEC895141713D0A97768D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007A44ABCFD9895141FF1E8AA2358D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D5441A022E03EB9895141E9FB6ACC598D5441709BC8B0B5895141AACEC0615F8D5441536121CEB6895141689C688F5F8D54414C13AA71BC895141CC09E315588D5441B3045A82C08951416E66AA614E8D54416FC79560C889514168BFCC2F3A8D544121B82458CA895141ABBEAB16388D544131AD79E6D8895141F0BD8AFD358D54417A44ABCFD9895141FF1E8AA2358D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 3419373
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D544114AE47F1B7895141295C8F12758D54413D0AD763BB89514100000020778D54417EB1531EC38951418092F3CE7A8D5441D7A3704DC6895141333333537D8D544166666606C7895141713D0A177E8D54413D0AD723DA895141EC51B89E778D54417B14AE87DC895141000000D0768D5441CDCCCCBCE2895141A4703DBA768D5441AE47E1BAEC895141713D0A97768D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000007A44ABCFD9895141FF1E8AA2358D544131AD79E6D8895141F0BD8AFD358D544121B82458CA895141ABBEAB16388D54416FC79560C889514168BFCC2F3A8D5441B3045A82C08951416E66AA614E8D54414C13AA71BC895141CC09E315588D5441536121CEB6895141689C688F5F8D5441709BC8B0B5895141AACEC0615F8D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D544114AE47F1B7895141295C8F12758D54413D0AD763BB89514100000020778D5441EC51B83EC38951419A9999197B8D5441D7A3704DC6895141333333537D8D544166666606C7895141713D0A177E8D54413D0AD723DA895141EC51B89E778D54417B14AE87DC895141000000D0768D5441CDCCCCBCE2895141A4703DBA768D5441AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D54417A44ABCFD9895141FF1E8AA2358D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 3430097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D544114AE47F1B7895141295C8F12758D54413D0AD763BB89514100000020778D54417EB1531EC38951418092F3CE7A8D5441D7A3704DC6895141333333537D8D544166666606C7895141713D0A177E8D54413D0AD723DA895141EC51B89E778D54417B14AE87DC895141000000D0768D5441CDCCCCBCE2895141A4703DBA768D5441AE47E1BAEC895141713D0A97768D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007A44ABCFD9895141FF1E8AA2358D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D5441A022E03EB9895141E9FB6ACC598D5441709BC8B0B5895141AACEC0615F8D5441536121CEB6895141689C688F5F8D54414C13AA71BC895141CC09E315588D5441B3045A82C08951416E66AA614E8D54416FC79560C889514168BFCC2F3A8D544121B82458CA895141ABBEAB16388D544131AD79E6D8895141F0BD8AFD358D54417A44ABCFD9895141FF1E8AA2358D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662142 - 59061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E15EEB550417B14AEF70BD05441AE47E14AE8B5504185EB5158FACF5441295C8F52E6B5504114AE47A1F4CF544185EB51E8E4B5504185EB51D8F0CF544166666636B8B55041E17A145EFCCF54417B14AEB7A2B55041713D0A4706D05441333333838DB55041E17A14EE0DD0544185EB51B8A3B55041AE47E15A2FD05441EC51B81EF1B5504114AE47C115D0544152B81E15EEB550417B14AEF70BD05441
+</a>
+
+<b>
+010600000001000000010300000001000000350000007B14AEB7A2B55041713D0A4706D05441350F4B55A2B550416FC78B6A06D05441E0B4B1789EB55041D5B75ED307D05441289566CF93B550414C1844A80BD05441333333838DB55041E17A14EE0DD05441E643C0778EB55041FEBF285E0FD054414B56DAB8A3B5504128D60A592FD054412174C41DA4B55041F38A53392FD05441F708A717A7B55041C155553D2ED0544185CD2CCAA9B550416C4BAC582DD0544129DF1FA4ABB55041525A2FBC2CD05441BBEFD21CF1B550416538E8C115D054413B16F878EFB55041300A4E7210D0544107BC9C41EFB5504117CBEEBF0FD0544140BFE7F3EDB550416F5996920BD05441BFF65B00EDB55041890854AD08D054418FFDA6D7ECB550416FA86E3108D05441F5E8CD61ECB55041890614CB06D054415F3FEFD2EAB55041CE5D7F1102D05441C6BED933E9B5504181C42A1FFDCF5441DA3CE929E8B55041903AADF8F9CF54417987EDB5E7B55041562135A8F8CF54411A92CB87E7B55041A7BFBA24F8CF544130503ED1E6B55041835ECA10F6CF5441E33BB9B8E6B550416F77A8C9F5CF5441D31CCF88E6B550410343A83EF5CF5441F8FA5E35E6B550417BB93353F4CF5441C9F8F13BE5B55041449102B8F1CF5441813D160FE5B5504197990440F1CF5441E4F684E8E4B550419575DAD8F0CF54411A2F0B39E2B55041B7249689F1CF5441F720BAB1DDB55041ACAE8CB5F2CF54416777E13DD9B55041DB8F3BDAF3CF5441907B6BDBD7B55041751B9D35F4CF5441256EBE97D4B5504187C2790DF5CF5441BEDDA5C7D0B5504172C7CB08F6CF54416FFD6F2BCDB55041542025F7F6CF5441476E649AC8B55041CDBFBA24F8CF54410785F2DBC3B55041CEF5A95DF9CF544161244577C2B55041B28361B9F9CF544156513ED0BDB55041B3576EECFACF5441B8A0B419BCB550419880085EFBCF5441D3FC715BB8B55041775A1C56FCCF5441BD23C637B8B5504113C6375EFCCF5441A1E1188AB6B550415B050824FDCF5441CFEB43ECB2B55041771C77CEFECF54413AEA5A70AFB55041853E976900D0544127AC162CAEB5504132FF16FF00D054418088C033ABB55041C950B45D02D05441ACBBB485A7B550416BD33E1004D054416D5188BDA2B55041370E804406D05441F90DE2BBA2B55041E92C1A4506D054417B14AEB7A2B55041713D0A4706D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982008 - 2629167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000004A000000EC51B8DEAABA50417B14AEC72A4054411429A850A9BA5041C39681172B40544148E17A24A7BA5041713D0A872B405441CDCCCC8CA7BA5041295C8F822E405441C7F762CAA7BA5041449EEC2130405441927BF634A8BA5041570D7C1233405441B60FFBFFA8BA5041A7802A7939405441591D75BCA9BA50412D98740F3F4054418FA0A133ACBA504142E2A89F5140544133333353ADBA5041666666165A405441E17A143EAEBA5041CDCCCCBC684054418FC2F518BBBA50418FC2F54869405441D7A3705DBCBA5041295C8F026C4054413D0AD713BDBA5041295C8F926A405441B81E855BBEBA50419A9999E968405441AED4F3ECBFBA5041B562EAED66405441E2FD7C82C0BA5041AF6E86CD65405441081A796DC1BA50411EF3EA0C644054412929E8ADC2BA50410EFE952162405441E17A14CEC3BA504185EB517860405441D7BF8E8EC4BA504108226AC05E405441E0C07F59C5BA5041AEDCE43F5D4054417A5544A4C5BA5041FD38B1B45B405441F8CEFDCEC5BA5041186CF493594054413412A1B9C5BA50411B91B9FD56405441B698E78EC5BA5041DE663F9D55405441421F2E64C5BA5041D872DB7C544054416247C62EC5BA50415504CD6652405441C4A57439C5BA50414F1069465140544118F79599C5BA504181521B6650405441E6B4E379C6BA5041A6864F104F405441B87FBE04C7BA5041B8A069654E4054415F2201C5C7BA5041C7ADF60F4E405441E38F1E10C9BA5041685CD5AF4D40544147BE5C9CCDBA5041150BB44F4D4054412AF21859D2BA5041448D5FAE4C405441E8D3CF7BD7BA504134BFD6484C4054418F67DFF2D9BA50418C416DE84B4054415760E70DDCBA5041B95E0BE44B40544134119580DEBA50418C416DE84B405441CDCCCCCCDEBA5041CDCCCCAC4B4054416D4A2467DDBA504130EEC8364940544148E17A44DBBA50413D0AD77345405441D6C20D7DD4BA5041C466D9D93B4054417B14AE07D1BA50413D0AD7F336405441FC33070ECEBA5041AF89562334405441377066BECABA50410265932B3440544154A488EDC5BA5041F5D7CA5F35405441FE288B6CC0BA5041A7751FC53C405441DB149398C0BA5041ABC82C9E4240544143C4B248C1BA5041BE35CB0E46405441875FDA24C2BA504114B1C88F4B4054413AE2B740C2BA5041D72E52654C4054411FA48236C2BA50414B943BF44C40544102C83FE8C1BA5041E7D781534D405441D2A7D56FC1BA5041ABD0BCCA4D40544159DB39E1C0BA50414AE48A1D4E40544158080437C0BA504157F1BE544E4054415811FFF4BEBA5041B9DDF0014E405441305714D8BDBA50419EE717484D405441F848B5C7BBBA504169F349CF48405441360407FFB7BA5041754796593F405441ACCDB746B6BA504190EEEFBC3B405441996019D6B2BA5041E53071FC38405441307C2703B0BA504197DA5AF535405441D6B674CDAFBA50416B7AF5D035405441964F8186AFBA50413A238A82354054411819EC40AFBA50419EA30620354054417386DCF4ABBA504157A7146B3140544149B12B8BA9BA5041AD89018B2B405441D4D7905DA9BA5041A49E6C362B40544196029450A9BA5041CA39EF202B405441613FD9DEAABA50413459AFCC2A405441EC51B8DEAABA50417B14AEC72A4054410103000000010000000C000000EC51B8DEAABA50417B14AEC72A405441938B908CB2BA50418869FE1727405441A090D9F3BCBA5041A09B28F32C4054410D7C9845C6BA5041AA5CCDDE2F405441BAC6DFD1C7BA504165C1A5022F405441CDCCCC7CC9BA504114AE47D12F405441BDA28005C9BA50419358ADF92B405441EC51B89EC8BA5041A4703DAA284054411F85EB81BFBA5041E17A14BE2040544148E17A54BEBA50410AD7A350214054416D9E9580B2BA50419B09401127405441EC51B8DEAABA50417B14AEC72A405441
+</a>
+
+<b>
+01060000000100000001030000000300000013000000E17A14AE87BA5041EC51B84E4B405441B81E853B88BA5041C3F5280C5F405441C3F528BC88BA5041B81E85FB5E405441000000C088BA5041666666D662405441C3F5280C89BA504152B81E55644054410AD7A3D089BA5041333333A365405441C3F528DC8ABA50417B14AE676640544185EB51E8ADBA5041EC51B8BE69405441E17A143EAEBA5041CDCCCCBC6840544133333353ADBA5041666666165A405441C3F5283CABBA5041713D0A574A4054415C8FC215A9BA50418FC2F5283A405441B81E851BA8BA504152B81E4532405441CDCCCC8CA7BA5041295C8F822E405441295C8F5298BA5041F6285C8F3140544185EB511889BA5041D7A3709D34405441333333B388BA50415C8FC2A5324054416666669682BA5041D7A370DD33405441E17A14AE87BA5041EC51B84E4B4054410500000048E17A3486BA5041295C8FC23F4054413D0AD71385BA5041B81E858B3A405441D7A3705D86BA504114AE47413A405441E17A147E87BA50410AD7A3803F40544148E17A3486BA5041295C8FC23F4054410500000052B81E9585BA50415C8FC2D5344054410AD7A30086BA50411F85EB51374054413D0AD70384BA504185EB51A8374054419A99999983BA5041B81E852B3540544152B81E9585BA50415C8FC2D534405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982008 - 5000374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000004A000000EC51B8DEAABA50417B14AEC72A4054411429A850A9BA5041C39681172B40544148E17A24A7BA5041713D0A872B405441CDCCCC8CA7BA5041295C8F822E405441C7F762CAA7BA5041449EEC2130405441927BF634A8BA5041570D7C1233405441B60FFBFFA8BA5041A7802A7939405441591D75BCA9BA50412D98740F3F4054418FA0A133ACBA504142E2A89F5140544133333353ADBA5041666666165A405441E17A143EAEBA5041CDCCCCBC684054418FC2F518BBBA50418FC2F54869405441D7A3705DBCBA5041295C8F026C4054413D0AD713BDBA5041295C8F926A405441B81E855BBEBA50419A9999E968405441AED4F3ECBFBA5041B562EAED66405441E2FD7C82C0BA5041AF6E86CD65405441081A796DC1BA50411EF3EA0C644054412929E8ADC2BA50410EFE952162405441E17A14CEC3BA504185EB517860405441D7BF8E8EC4BA504108226AC05E405441E0C07F59C5BA5041AEDCE43F5D4054417A5544A4C5BA5041FD38B1B45B405441F8CEFDCEC5BA5041186CF493594054413412A1B9C5BA50411B91B9FD56405441B698E78EC5BA5041DE663F9D55405441421F2E64C5BA5041D872DB7C544054416247C62EC5BA50415504CD6652405441C4A57439C5BA50414F1069465140544118F79599C5BA504181521B6650405441E6B4E379C6BA5041A6864F104F405441B87FBE04C7BA5041B8A069654E4054415F2201C5C7BA5041C7ADF60F4E405441E38F1E10C9BA5041685CD5AF4D40544147BE5C9CCDBA5041150BB44F4D4054412AF21859D2BA5041448D5FAE4C405441E8D3CF7BD7BA504134BFD6484C4054418F67DFF2D9BA50418C416DE84B4054415760E70DDCBA5041B95E0BE44B40544134119580DEBA50418C416DE84B405441CDCCCCCCDEBA5041CDCCCCAC4B4054416D4A2467DDBA504130EEC8364940544148E17A44DBBA50413D0AD77345405441D6C20D7DD4BA5041C466D9D93B4054417B14AE07D1BA50413D0AD7F336405441FC33070ECEBA5041AF89562334405441377066BECABA50410265932B3440544154A488EDC5BA5041F5D7CA5F35405441FE288B6CC0BA5041A7751FC53C405441DB149398C0BA5041ABC82C9E4240544143C4B248C1BA5041BE35CB0E46405441875FDA24C2BA504114B1C88F4B4054413AE2B740C2BA5041D72E52654C4054411FA48236C2BA50414B943BF44C40544102C83FE8C1BA5041E7D781534D405441D2A7D56FC1BA5041ABD0BCCA4D40544159DB39E1C0BA50414AE48A1D4E40544158080437C0BA504157F1BE544E4054415811FFF4BEBA5041B9DDF0014E405441305714D8BDBA50419EE717484D405441F848B5C7BBBA504169F349CF48405441360407FFB7BA5041754796593F405441ACCDB746B6BA504190EEEFBC3B405441996019D6B2BA5041E53071FC38405441307C2703B0BA504197DA5AF535405441D6B674CDAFBA50416B7AF5D035405441964F8186AFBA50413A238A82354054411819EC40AFBA50419EA30620354054417386DCF4ABBA504157A7146B3140544149B12B8BA9BA5041AD89018B2B405441D4D7905DA9BA5041A49E6C362B40544196029450A9BA5041CA39EF202B405441613FD9DEAABA50413459AFCC2A405441EC51B8DEAABA50417B14AEC72A4054410103000000010000000C000000EC51B8DEAABA50417B14AEC72A405441938B908CB2BA50418869FE1727405441A090D9F3BCBA5041A09B28F32C4054410D7C9845C6BA5041AA5CCDDE2F405441BAC6DFD1C7BA504165C1A5022F405441CDCCCC7CC9BA504114AE47D12F405441BDA28005C9BA50419358ADF92B405441EC51B89EC8BA5041A4703DAA284054411F85EB81BFBA5041E17A14BE2040544148E17A54BEBA50410AD7A350214054416D9E9580B2BA50419B09401127405441EC51B8DEAABA50417B14AEC72A405441
+</a>
+
+<b>
+01060000000100000001030000000300000013000000E17A14AE87BA5041EC51B84E4B405441B81E853B88BA5041C3F5280C5F405441C3F528BC88BA5041B81E85FB5E405441000000C088BA5041666666D662405441C3F5280C89BA504152B81E55644054410AD7A3D089BA5041333333A365405441C3F528DC8ABA50417B14AE676640544185EB51E8ADBA5041EC51B8BE69405441E17A143EAEBA5041CDCCCCBC6840544133333353ADBA5041666666165A405441C3F5283CABBA5041713D0A574A4054415C8FC215A9BA50418FC2F5283A405441B81E851BA8BA504152B81E4532405441CDCCCC8CA7BA5041295C8F822E405441295C8F5298BA5041F6285C8F3140544185EB511889BA5041D7A3709D34405441333333B388BA50415C8FC2A5324054416666669682BA5041D7A370DD33405441E17A14AE87BA5041EC51B84E4B4054410500000048E17A3486BA5041295C8FC23F4054413D0AD71385BA5041B81E858B3A405441D7A3705D86BA504114AE47413A405441E17A147E87BA50410AD7A3803F40544148E17A3486BA5041295C8FC23F4054410500000052B81E9585BA50415C8FC2D5344054410AD7A30086BA50411F85EB51374054413D0AD70384BA504185EB51A8374054419A99999983BA5041B81E852B3540544152B81E9585BA50415C8FC2D534405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944447 - 52814
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F000000713D0A570C875141AE47E12AA7955441B81E85DB0B8751415C8FC235A99554417B14AE970B87514133333383AA955441AE47E10A0B87514166666646AB955441A4703D2A0C875141EC51B8DEAD955441C3F5283C0C875141A4703D4AB0955441295C8F921E8751418FC2F5C8BC9554419A9999691F8751418FC2F5B8BA955441E17A148E1F87514100000030B895544185EB51682087514114AE47F1B4955441295C8FA220875141666666B6AE9554418FC2F5A81E875141713D0A77AE955441000000E01D875141713D0A37AE955441F6285C3F21875141333333E3A29554411F85EB312387514148E17A049C95544114AE479123875141E17A148E9A9554418FC2F57824875141A4703D8A93955441C3F5288C1B875141666666A6969554417B14AEE7168751419A9999299795544185EB5168108751417B14AE57979554419A999919108751419A99995997955441666666F60E87514148E17AF49795544114AE47D10D875141D7A3709D989554413D0AD7830D87514185EB518899955441D7A3706D0D875141A4703D3A9B955441A4703D4A0D875141000000609D955441666666660C875141A4703DBA9E9554417B14AE370C875141EC51B89EA0955441A4703D5A0C875141CDCCCC3CA2955441E17A14CE0C875141D7A370FDA4955441713D0A570C875141AE47E12AA7955441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000713D0A570C875141AE47E12AA7955441F91762510C8751412384D342A7955441D3FE01A40B8751411B949B46AA9554417B14AE970B87514133333383AA955441570ADE120B8751415630C73FAB955441F6F812260C875141017BD8C7AD955441D95444260C875141DFF688D5AD955441A4703D2A0C875141EC51B8DEAD9554415B9A123C0C8751415C863847B09554411F8C42790D8751419A154F22B19554415DED41D311875141515B6019B4955441F064FD411387514147472610B5955441E8E672DE138751415AC0DF7DB5955441295C8F921E8751418FC2F5C8BC955441A1E8115E1F875141603745D5BA955441E320FC821F875141A05B60F5B895544172F92E861F875141F18479BCB8955441D06CAC881F8751418F9B2D90B8955441DB6CAC881F87514168B90338B89554417027D91D2087514103CAC00CB69554414FEBD82E20875141B0010CCCB59554415E371F3A208751418F7421A1B59554414F4E9D6620875141B74084F5B49554417A5BE19B208751417B8A3760AF95544140D1469D2087514127421547AF955441C64BBDA020875141006241E8AE9554417E5B3DA120875141CE788EDAAE955441C89D36A220875141769CE4BFAE955441ED07512D20875141541CB5A7AE955441E4B8A24A1F87514143F54C8BAE955441858076491F875141E555278BAE955441B3EB1ED71E875141E555278BAE9554417778173A1E8751415B4BBB53AE955441000000E01D875141713D0A37AE955441372FD6E01D87514121D73A34AE95544184F647A91D8751419A3B9F20AE955441D0F64105158751416E2C8F29A8955441AC7E1BD410875141D8B4184CA5955441E9A558640D875141D18246F6A2955441FFB237640C87514127A1973BA295544177C3B2C60C8751410CBC89D0A4955441E17A14CE0C875141D7A370FDA4955441713D0A570C875141AE47E12AA7955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+010600000001000000010300000001000000150000004DC91B90DB7A5041F2D499ED492B5541F7D40A90DB7A5041AC39ABED492B5541163D0590DB7A5041A3F6B0ED492B5541910AA3D0DB7A5041C80B0AA74A2B5541B9FDF418DC7A5041D6F97B544B2B55410B05720DDB7A5041CFD5B7BE4B2B55413FE3E13ADA7A50417D04E12A4C2B5541844F6DEEDA7A5041CA5401CF4D2B55417B14AEF7DC7A50415C8FC2C54C2B554152689513DE7A5041E8D90FE24C2B554129A0FD20DF7A50410430EBFC4C2B5541D7A3702DE07A50417B14AE174D2B554114076F6FE07A50415A3542CC4C2B5541A1445118E07A50417516C3F54B2B5541FEF8A400DE7A5041B8BFA3D0462B554187A800E0DC7A50412B0214EE432B5541DD9D71CDDB7A50416333D763442B5541BC1EAD74DB7A50412916EA89442B554185EB51C8DC7A50410AD7A350472B55413839F678DC7A50417C5BB8FE482B55414DC91B90DB7A5041F2D499ED492B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+010600000001000000010300000001000000310000005D563CDAE77A5041980867C6512B5541161DC3B5E67A5041B034F628522B554135DA83BBE77A504114FF1EA5542B554135DDC265E97A5041553ED7C3582B5541559E4651E67A5041559100D0592B5541854D5108E47A504108DAAC975A2B554129A0FFAFE37A5041EF5D1EB55A2B55412B9DD523E27A504147CE00D0552B55416A8D7B94E17A504184203413542B55418C808E82E17A5041DB56ADE7532B554137D051F8DF7A50417BFC5A5F542B554191F76606E27A50416E46F6085A2B554124E83363E27A5041A9CA8E125B2B5541BE948FF2DF7A5041D1348FA25B2B554115EFF698DF7A5041A477A4605A2B5541C1A33213DE7A50416E113D7A552B5541D7A370DDDD7A504133333303552B5541AC72F548DE7A5041E2AC75045C2B5541D8465B9FDE7A50417263A3F05B2B5541A139F548DE7A504138497B045C2B5541905A26F1DD7A5041A61722475C2B554123AC43E2DC7A5041DE5DC0145D2B55415D6327F5DB7A50414D82BBC85D2B5541B81E85BBDB7A504148E17AF45D2B5541447B4977DB7A5041A53CC2D45C2B5541B24514AEDA7A504123803E0A5D2B5541C1F051E8DB7A5041CA18856B612B5541C3F528BCDC7A5041B81E857B602B554113DA40BCDC7A50415A6F7F7B602B55411BDA8A08DE7A5041DC166E2C602B5541FC272A2CDF7A5041B32A09E75F2B554150C925DADF7A5041D54603CC5F2B554166BB91BEE07A504178A287A85F2B5541D7A3707DE17A5041AE47E18A5F2B55410A1F283CE47A504180CBA3B05F2B55411A39740FE57A504138FF18795F2B554195175398E57A50415B451E555F2B5541F703AE9AE57A5041B73A6E545F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541AFE9282CED7A50412446B81E5D2B5541CD855B0FEB7A5041110DFF2F582B5541D9EA51C8EB7A50416E556FED572B5541A2755CDFE87A504162D7B86E512B55415D563CDAE77A5041980867C6512B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F7B57809BE7A50415FF3DB095D2B55418C8C0B7EBD7A50414F1B670C5E2B5541D7A370FDBC7A5041AE47E1FA5E2B554114679AB9BE7A50415B485DFF602B554137D49A99C07A5041E17C47B1632B55419046D151C47A504131DEFC3A692B554109285CBFC47A5041807914DE692B5541F6189999C57A504199833D1A692B55417930D663C67A50415A645C6F682B5541E209B71EC77A50418B30EAD1672B5541AF6A3DDAC77A50412BF6FF3F672B55410A38580CC67A50413CAAC245642B55416613FF3FC47A504121F3144E612B5541DF75700DC57A50418A021EB5602B5541C857EB71C87A5041F2FEEA51662B5541DC719809C97A5041B2F1C135652B5541FDAF4891C97A504126AE1F45642B554120085238CA7A50412B22B91E632B55410C1DE0DACA7A50410E9109C7612B55418FBD837BCB7A50411C8EF458602B5541CA12E14ACB7A504132F014FE5F2B5541B8F50927C97A5041888F1D355C2B5541F25C1F85C87A5041918C47215B2B554153D4F4B8C97A504159A3E29A592B5541D09CF598C57A5041D5BE8ED2552B5541C7484204C67A5041B229154F552B5541D7A370BDC57A504133333313552B554157E466D4C57A504162CD9F43542B5541E17A14FEC37A5041713D0A77522B5541CF5B523FC37A50410C112FB5532B554177905E2AC27A50415BB21483552B55415C1696B1C17A50416269854C562B554133333303C17A5041F6285C6F572B55418E5D4720C77A5041DC60C0CE5C2B5541FC47132EC77A50415FEFDFDA5C2B5541CB7B85CBC77A5041A71DA3005C2B5541E17A142EC77A5041AE47E1DA5C2B554154DA7AE4C67A504155440A375D2B554152B81E55C67A504152B81EC55D2B554154EB6526C67A5041C847A4005E2B554176A78D9AC57A504123BABF805E2B5541ACBB851BC57A50411DE81FF55E2B5541D9AD650BC07A50415D24DE50592B55417FE49AAABF7A5041D15D5A045A2B55410A460709BF7A50413F76F82F5B2B55417A5EA97DBE7A5041685367325C2B5541F7B57809BE7A50415FF3DB095D2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000008486EC57DC7A5041383A82F9542B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B5541FB975DA4DB7A50415E940A88522B55412A5022C7D97A5041A01B0E25522B554145CBF698D77A504104C151B1512B55413D0AD703D87A5041295C8FC2552B5541385316DED67A5041E197279C562B5541DCD05ACFD87A50412F6CCB0C562B554145BF32C3DA7A5041EA20AF77552B5541F766244EDC7A504157C8BF02552B55418486EC57DC7A5041383A82F9542B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256841
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000454F6DE6CD7A5041AF6DEEB86A2B554167129022CA7A5041CB824751662B554151813443C97A50418C546F0D672B5541918B1EB5C87A5041B3BE5A7F672B55410C74CCCCC77A5041E1B10040682B5541844A9819C77A5041DA04D6D3682B5541E6B6B74EC67A5041767E5D7F692B554192F4C235C57A5041D57E846B6A2B5541203F7CD4C37A5041F9C4D5836B2B5541B6D98A3DC47A50411F7EA2D66B2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B55419B7D4587C77A5041CE83FD146D2B5541BB98ACF3C87A50417EC5FC9C6C2B55414954A6E3C97A50419EC9F54D6C2B5541D5327BD7CA7A5041CFB9A9FD6B2B554185EB51F8CC7A5041A4703D4A6B2B5541AD2E9FF8CC7A5041174A0E4A6B2B5541454F6DE6CD7A5041AF6DEEB86A2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 295884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000008486EC57DC7A5041383A82F9542B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B5541FB975DA4DB7A50415E940A88522B55412A5022C7D97A5041A01B0E25522B554145CBF698D77A504104C151B1512B55413D0AD703D87A5041295C8FC2552B5541385316DED67A5041E197279C562B5541DCD05ACFD87A50412F6CCB0C562B554145BF32C3DA7A5041EA20AF77552B5541F766244EDC7A504157C8BF02552B55418486EC57DC7A5041383A82F9542B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 297593
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F7B57809BE7A50415FF3DB095D2B55418C8C0B7EBD7A50414F1B670C5E2B5541D7A370FDBC7A5041AE47E1FA5E2B554114679AB9BE7A50415B485DFF602B554137D49A99C07A5041E17C47B1632B55419046D151C47A504131DEFC3A692B554109285CBFC47A5041807914DE692B5541F6189999C57A504199833D1A692B55417930D663C67A50415A645C6F682B5541E209B71EC77A50418B30EAD1672B5541AF6A3DDAC77A50412BF6FF3F672B55410A38580CC67A50413CAAC245642B55416613FF3FC47A504121F3144E612B5541DF75700DC57A50418A021EB5602B5541C857EB71C87A5041F2FEEA51662B5541DC719809C97A5041B2F1C135652B5541FDAF4891C97A504126AE1F45642B554120085238CA7A50412B22B91E632B55410C1DE0DACA7A50410E9109C7612B55418FBD837BCB7A50411C8EF458602B5541CA12E14ACB7A504132F014FE5F2B5541B8F50927C97A5041888F1D355C2B5541F25C1F85C87A5041918C47215B2B554153D4F4B8C97A504159A3E29A592B5541D09CF598C57A5041D5BE8ED2552B5541C7484204C67A5041B229154F552B5541D7A370BDC57A504133333313552B554157E466D4C57A504162CD9F43542B5541E17A14FEC37A5041713D0A77522B5541CF5B523FC37A50410C112FB5532B554177905E2AC27A50415BB21483552B55415C1696B1C17A50416269854C562B554133333303C17A5041F6285C6F572B55418E5D4720C77A5041DC60C0CE5C2B5541FC47132EC77A50415FEFDFDA5C2B5541CB7B85CBC77A5041A71DA3005C2B5541E17A142EC77A5041AE47E1DA5C2B554154DA7AE4C67A504155440A375D2B554152B81E55C67A504152B81EC55D2B554154EB6526C67A5041C847A4005E2B554176A78D9AC57A504123BABF805E2B5541ACBB851BC57A50411DE81FF55E2B5541D9AD650BC07A50415D24DE50592B55417FE49AAABF7A5041D15D5A045A2B55410A460709BF7A50413F76F82F5B2B55417A5EA97DBE7A5041685367325C2B5541F7B57809BE7A50415FF3DB095D2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 297643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000454F6DE6CD7A5041AF6DEEB86A2B554167129022CA7A5041CB824751662B554151813443C97A50418C546F0D672B5541918B1EB5C87A5041B3BE5A7F672B55410C74CCCCC77A5041E1B10040682B5541844A9819C77A5041DA04D6D3682B5541E6B6B74EC67A5041767E5D7F692B554192F4C235C57A5041D57E846B6A2B5541203F7CD4C37A5041F9C4D5836B2B5541B6D98A3DC47A50411F7EA2D66B2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B55419B7D4587C77A5041CE83FD146D2B5541BB98ACF3C87A50417EC5FC9C6C2B55414954A6E3C97A50419EC9F54D6C2B5541D5327BD7CA7A5041CFB9A9FD6B2B554185EB51F8CC7A5041A4703D4A6B2B5541AD2E9FF8CC7A5041174A0E4A6B2B5541454F6DE6CD7A5041AF6DEEB86A2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 345895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+010600000001000000010300000001000000150000004DC91B90DB7A5041F2D499ED492B5541F7D40A90DB7A5041AC39ABED492B5541163D0590DB7A5041A3F6B0ED492B5541910AA3D0DB7A5041C80B0AA74A2B5541B9FDF418DC7A5041D6F97B544B2B55410B05720DDB7A5041CFD5B7BE4B2B55413FE3E13ADA7A50417D04E12A4C2B5541844F6DEEDA7A5041CA5401CF4D2B55417B14AEF7DC7A50415C8FC2C54C2B554152689513DE7A5041E8D90FE24C2B554129A0FD20DF7A50410430EBFC4C2B5541D7A3702DE07A50417B14AE174D2B554114076F6FE07A50415A3542CC4C2B5541A1445118E07A50417516C3F54B2B5541FEF8A400DE7A5041B8BFA3D0462B554187A800E0DC7A50412B0214EE432B5541DD9D71CDDB7A50416333D763442B5541BC1EAD74DB7A50412916EA89442B554185EB51C8DC7A50410AD7A350472B55413839F678DC7A50417C5BB8FE482B55414DC91B90DB7A5041F2D499ED492B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 346245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541C3F5282CDF7A5041713D0AE75F2B5541D7A3707DE17A5041AE47E18A5F2B5541C3F5283CE47A50410AD7A3B05F2B554185EB5198E57A504152B81E555F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541C3F5282CED7A5041EC51B81E5D2B55410AD7A380EE7A5041AE47E1BA5C2B5541333333A3EF7A5041666666665C2B5541D7A3708DF07A50411F85EB215C2B5541AE47E14AED7A5041666666B6542B554148E17A14EC7A5041EC51B80E532B554152B81EA5EA7A50419A999979502B5541713D0AC7E77A5041CDCCCCAC502B55419A999979E67A5041A4703D9A4C2B5541713D0AB7E57A5041666666F64C2B5541295C8F72E57A5041CDCCCC0C4D2B5541D7A3702DE27A5041C3F5287C462B554114AE4791E27A504152B81E45462B5541A4703D2AE37A5041E17A14FE452B55418FC2F558E47A50410AD7A340482B5541D7A370ADE57A50418FC2F5F84A2B5541A4703D2AE77A5041F6285C6F472B554152B81EE5E67A5041CDCCCC8C462B5541295C8F92E87A50413D0AD733452B5541D7A370BDE87A504152B81ED53E2B5541B81E85BBE77A5041AE47E18A3B2B5541000000E0E47A50411F85EBF13D2B55418FC2F5D8E27A5041F6285CBF3A2B5541713D0AE7DE7A504166666696342B5541AE47E17ADE7A5041E17A147E372B5541B81E858BDB7A5041CDCCCCEC392B5541A4703DEAD17A5041CDCCCCAC3C2B5541A4703DFACE7A5041713D0A973C2B5541D7A3704DC57A5041666666663C2B5541E17A14AEC17A5041AE47E1AA3B2B5541F6285C1FC07A504185EB51F8392B5541000000B0BB7A50413D0AD7D33C2B5541E17A149EBA7A50415C8FC2A53E2B5541CDCCCC7CC47A504114AE47F1482B5541A4703D5AC87A5041C3F5284C4D2B554100000010C67A5041000000504F2B5541E17A14FEC37A5041713D0A77522B554133333303C17A5041F6285C6F572B5541E17A142EC77A5041AE47E1DA5C2B554148E17AE4C67A5041713D0A375D2B554152B81E55C67A504152B81EC55D2B554166666626C67A50410AD7A3005E2B5541B81E851BC57A504152B81EF55E2B5541B81E850BC07A50410AD7A350592B5541D7A370FDBC7A5041AE47E1FA5E2B55419A9999B9BE7A5041F6285CFF602B55419A999999C07A504114AE47B1632B5541F6285CBFC47A5041E17A14DE692B55418FC2F5E8C37A5041C3F5288C6A2B5541CDCCCC3CBF7A5041666666D6632B5541D7A3702DBE7A5041713D0A37652B5541C3F5281CBD7A5041AE47E1FA642B55419A9999D9BA7A5041295C8FE2672B5541A4703DDABF7A5041A4703DDA6D2B5541000000D0C17A50413D0AD7036F2B5541A4703DBAC37A50410AD7A3B06D2B554109000000D7A370BDC57A504133333313552B5541D7A370DDC57A50411F85EBF1532B5541CDCCCCECC67A5041A4703D1A532B5541C3F5289CC87A50413D0AD7C3532B55413D0AD733CA7A504100000080552B5541713D0AD7CB7A5041B81E85FB572B55410AD7A380CA7A50410AD7A3105A2B554152B81E65C87A50411F85EB51572B5541D7A370BDC57A504133333313552B554105000000D7A3700DC57A504152B81EB5602B55411F85EB71C87A50411F85EB51662B5541A4703DDAC77A504100000040672B554100000040C47A5041E17A144E612B5541D7A3700DC57A504152B81EB5602B5541080000008FC2F5D8D97A5041E17A14DE3D2B554185EB5118DC7A5041D7A3702D422B5541295C8F42DA7A5041666666C6422B5541295C8F32D87A5041D7A3701D402B5541333333A3D67A5041A4703DAA402B554114AE47A1D57A5041B81E85CB3F2B5541CDCCCC0CD77A5041295C8FD23D2B55418FC2F5D8D97A5041E17A14DE3D2B55411A0000000AD7A3B0D47A50415C8FC225582B5541F6285C8FD37A5041295C8FC2592B5541F6285CAFD17A504114AE47415A2B554185EB51E8CE7A50413D0AD7135B2B55411F85EB61CE7A504114AE4791592B554133333343D17A50410AD7A3D0582B55411F85EB01D27A50419A9999C9532B55410AD7A320D07A50411F85EB914F2B5541F6285CFFCD7A5041B81E852B502B5541F6285C2FCC7A5041666666C6502B55417B14AEA7CA7A504148E17A044F2B5541713D0AE7CA7A5041295C8F624C2B55415C8FC225CA7A50413D0AD7C3462B554166666626CA7A5041AE47E18A3E2B554148E17A04CE7A5041CDCCCC5C3D2B55410AD7A320D07A50417B14AEF73E2B55411F85EB11D47A5041A4703D4A3F2B5541666666A6D57A5041C3F5287C412B5541713D0A47D67A5041F6285C2F432B55415C8FC275D47A504166666696462B5541D7A370BDD27A5041E17A14EE492B55418FC2F578D27A50417B14AEC74D2B554166666606D47A5041713D0AB7502B55413D0AD7B3D37A5041666666A6532B5541B81E852BD57A50415C8FC295562B55410AD7A3B0D47A50415C8FC225582B554109000000295C8F92D97A504114AE47C14A2B55417B14AEF7D77A50417B14AE57452B55410AD7A3E0D77A5041C3F5289C442B5541000000D0DA7A50411F85EB81432B554152B81E45DB7A504166666626442B554185EB51C8DC7A50410AD7A350472B55418FC2F578DC7A5041EC51B8FE482B55411F85EB71DA7A5041333333134B2B5541295C8F92D97A504114AE47C14A2B55412100000087B3D12CDE7A5041F441A469422B5541C3F5288CDE7A50418FC2F538432B55418FC2F5A8DF7A504152B81EA5452B554152B81EE5E37A5041295C8F324F2B55410AD7A370E27A5041D7A3701D512B5541CDCCCC4CE07A504148E17A74502B554114AE4751DD7A50417B14AE27512B554100000060DD7A50415C8FC265512B554133333343DF7A5041EC51B86E532B5541D7A370DDDD7A504133333303552B55418FC2F548DE7A504148E17A045C2B5541B81E85BBDB7A504148E17AF45D2B55419A999939DB7A50410AD7A3D05B2B55415C8FC255DD7A504148E17A645A2B55417B14AEA7DB7A5041000000A0552B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B55418FC2F598D77A504114AE47B1512B55413D0AD703D87A5041295C8FC2552B5541E17A14DED67A5041C3F5289C562B5541295C8F82D57A5041F6285C3F522B554166666656D57A5041B81E85BB512B5541AE47E10AD77A50419A9999C94F2B55417B14AEF7DC7A50415C8FC2C54C2B5541D7A3702DE07A50417B14AE174D2B55413D0AD723E17A5041E17A14FE4B2B55413D0AD723DD7A5041B81E85DB422B554120391C26DE7A5041C4824869422B554185EB5148DC7A50413D0AD7433E2B5541A4703D9ADE7A5041C3F5280C3D2B554166666696E07A504152B81EF5402B554148E17A64DE7A50411F85EB51422B554187B3D12CDE7A5041F441A469422B5541
+</a>
+
+<b>
+010600000001000000010300000001000000310000005D563CDAE77A5041980867C6512B5541161DC3B5E67A5041B034F628522B554135DA83BBE77A504114FF1EA5542B554135DDC265E97A5041553ED7C3582B5541559E4651E67A5041559100D0592B5541854D5108E47A504108DAAC975A2B554129A0FFAFE37A5041EF5D1EB55A2B55412B9DD523E27A504147CE00D0552B55416A8D7B94E17A504184203413542B55418C808E82E17A5041DB56ADE7532B554137D051F8DF7A50417BFC5A5F542B554191F76606E27A50416E46F6085A2B554124E83363E27A5041A9CA8E125B2B5541BE948FF2DF7A5041D1348FA25B2B554115EFF698DF7A5041A477A4605A2B5541C1A33213DE7A50416E113D7A552B5541D7A370DDDD7A504133333303552B5541AC72F548DE7A5041E2AC75045C2B5541D8465B9FDE7A50417263A3F05B2B5541A139F548DE7A504138497B045C2B5541905A26F1DD7A5041A61722475C2B554123AC43E2DC7A5041DE5DC0145D2B55415D6327F5DB7A50414D82BBC85D2B5541B81E85BBDB7A504148E17AF45D2B5541447B4977DB7A5041A53CC2D45C2B5541B24514AEDA7A504123803E0A5D2B5541C1F051E8DB7A5041CA18856B612B5541C3F528BCDC7A5041B81E857B602B554113DA40BCDC7A50415A6F7F7B602B55411BDA8A08DE7A5041DC166E2C602B5541FC272A2CDF7A5041B32A09E75F2B554150C925DADF7A5041D54603CC5F2B554166BB91BEE07A504178A287A85F2B5541D7A3707DE17A5041AE47E18A5F2B55410A1F283CE47A504180CBA3B05F2B55411A39740FE57A504138FF18795F2B554195175398E57A50415B451E555F2B5541F703AE9AE57A5041B73A6E545F2B55411F85EBB1EA7A50417B14AED75D2B5541B81E85DBE87A5041C3F5289C5C2B554148E17A54E87A50418FC2F5485B2B55410AD7A330E97A504148E17A945A2B55417B14AE77EA7A50418FC2F5E85A2B5541B81E85DBEB7A5041666666D65B2B5541AFE9282CED7A50412446B81E5D2B5541CD855B0FEB7A5041110DFF2F582B5541D9EA51C8EB7A50416E556FED572B5541A2755CDFE87A504162D7B86E512B55415D563CDAE77A5041980867C6512B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586946 - 55750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A14AEB94E514133333363E77554419A9999E9B54E5141E17A14EEEC755441CDCCCCFCBF4E514166666606EF755441A5A8D1A0C04E5141054FB583EE75544139B9F487C04E514176E7599FE8755441EDF264B1C04E5141219136A1E1755441D78676D3C14E5141A895C99ADA75544154664504C14E5141AC11C660DA755441E17A14FEBF4E5141C3F5286CDC7554411F85EBD1BC4E5141295C8F62E2755441E17A14AEB94E514133333363E7755441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E17A14FEBF4E5141C3F5286CDC755441BBFF8609BF4E514159BEC737DE755441949CEC70BD4E5141DA67825EE1755441DD2CEEEDBC4E5141BA98EA2DE27554411F85EBD1BC4E5141295C8F62E2755441E17A14AEB94E514133333363E77554419A9999E9B54E5141E17A14EEEC755441D27B8AF0BF4E51412DD1D903EF7554410CB6C0A0C04E51418125B17FEE7554413AB9F487C04E514172E7599FE8755441AA1C048DC04E5141941FC1C4E7755441C6771E86C04E5141D2919DD7E57554416C1BBCA7C04E5141C3548142E3755441E9F264B1C04E5141219136A1E1755441F7CF8AB4C04E51419736B28DE1755441F7CF8AB4C04E5141EF9C9C20E17554416E2E5E27C14E5141FDECC6C5DE755441DA8676D3C14E5141AB95C99ADA75544151664504C14E5141A711C660DA755441E17A14FEBF4E5141C3F5286CDC755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982286 - 1085174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D544124F81461F44251412CD108930E5D5441B8DA25D2F9425141A8289DC80E5D5441105B43A200435141A8289DC80E5D54417C4FE7EF08435141A53C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417C87A3CD2543514107D42E2FE85C5441295C8FD22543514152B81EF5E65C5441D7A370DD25435141EC51B81EE45C5441295C8FE2254351410AD7A3C0E25C54417B14AEF725435141EC51B8AEDF5C5441750293002643514138B75464DE5C544194DF78BC254351414D7D69FFDB5C5441AC18219E20435141ACD22C18DB5C5441C9DF0C5120435141159AD104D45C5441E9A6F80320435141DD7DDB72CE5C5441C6186BE81D435141859AF92DC95C5441295C8F02194351410AD7A330C35C5441CDCCCCEC1443514148E17AA4BF5C5441A4703D4A0E4351419A999959BE5C5441D7A370CD0843514185EB51E8BE5C54414A6F378D004351418A7E9730BE5C5441736FA67CFC42514159F0E46FBD5C54415EFA004EF14251415CEC31E6BA5C5441A249C2D3E2425141360425EBB75C54411E09969BD84251411DB89C00B65C544174C6BFEFD24251415F62C643B75C544174199C65CF4251414B5D9CC7B95C544114AE47C1CF4251413D0AD723BA5C544152B81EE5D0425141713D0AC7BB5C544133333333D6425141F6285C4FC35C544166666666DB425141E17A140ECB5C5441B81E858BE042514185EB5118D25C5441CDCCCCFCE4425141EC51B86ED85C544185EB5188E7425141D7A370EDDC5C54419A999959EA425141713D0AF7E15C54415C8FC2D5EA425141EC51B88EE35C544152B81E95EA4251415C8FC2A5E35C544166666676EB42514114AE4721E85C5441A4703DFAEC425141F6285C6FF25C5441050000001E834135004351416A026290E35C544108233A81FE4251412ACECCAADE5C544181B362DF074351410CAA4253DC5C544197136A93094351414CDED738E15C54411E834135004351416A026290E35C5441
+</a>
+
+<b>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D54411FF81461F44251412AD108930E5D5441BBDA25D2F9425141A5289DC80E5D5441145B43A200435141A5289DC80E5D54417A4FE7EF08435141A23C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417987A3CD2543514109D42E2FE85C5441295C8FD22543514152B81EF5E65C5441D7A370DD25435141EC51B81EE45C5441295C8FE2254351410AD7A3C0E25C54417B14AEF725435141EC51B8AEDF5C544171029300264351413CB75464DE5C544190DF78BC25435141527D69FFDB5C5441A918219E20435141A7D22C18DB5C5441CDDF0C5120435141119AD104D45C5441E6A6F80320435141E07DDB72CE5C5441C8186BE81D435141809AF92DC95C5441295C8F02194351410AD7A330C35C5441CDCCCCEC1443514148E17AA4BF5C5441A4703D4A0E4351419A999959BE5C5441D7A370CD0843514185EB51E8BE5C54414D6F378D004351418C7E9730BE5C5441766FA67CFC4251415AF0E46FBD5C54415CFA004EF142514161EC31E6BA5C5441A749C2D3E2425141310425EBB75C54412109969BD84251411DB89C00B65C544174C6BFEFD24251415A62C643B75C544171199C65CF4251414E5D9CC7B95C544114AE47C1CF4251413D0AD723BA5C544152B81EE5D0425141713D0AC7BB5C544133333333D6425141F6285C4FC35C544166666666DB425141E17A140ECB5C5441B81E858BE042514185EB5118D25C5441CDCCCCFCE4425141EC51B86ED85C544185EB5188E7425141D7A370EDDC5C54419A999959EA425141713D0AF7E15C54415C8FC2D5EA425141EC51B88EE35C544152B81E95EA4251415C8FC2A5E35C544166666676EB42514114AE4721E85C5441A4703DFAEC425141F6285C6FF25C544105000000228341350043514169026290E35C544107233A81FE4251412FCECCAADE5C54417EB362DF0743514109AA4253DC5C54419A136A93094351414EDED738E15C5441228341350043514169026290E35C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982286 - 3890774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D544124F81461F44251412CD108930E5D5441B8DA25D2F9425141A8289DC80E5D5441105B43A200435141A8289DC80E5D54417C4FE7EF08435141A53C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417C87A3CD2543514107D42E2FE85C5441295C8FD22543514152B81EF5E65C5441D7A370DD25435141EC51B81EE45C5441295C8FE2254351410AD7A3C0E25C54417B14AEF725435141EC51B8AEDF5C5441750293002643514138B75464DE5C544194DF78BC254351414D7D69FFDB5C5441AC18219E20435141ACD22C18DB5C5441C9DF0C5120435141159AD104D45C5441E9A6F80320435141DD7DDB72CE5C5441C6186BE81D435141859AF92DC95C5441295C8F02194351410AD7A330C35C5441CDCCCCEC1443514148E17AA4BF5C5441A4703D4A0E4351419A999959BE5C5441D7A370CD0843514185EB51E8BE5C54414A6F378D004351418A7E9730BE5C5441736FA67CFC42514159F0E46FBD5C54415EFA004EF14251415CEC31E6BA5C5441A249C2D3E2425141360425EBB75C54411E09969BD84251411DB89C00B65C544174C6BFEFD24251415F62C643B75C544174199C65CF4251414B5D9CC7B95C544114AE47C1CF4251413D0AD723BA5C544152B81EE5D0425141713D0AC7BB5C544133333333D6425141F6285C4FC35C544166666666DB425141E17A140ECB5C5441B81E858BE042514185EB5118D25C5441CDCCCCFCE4425141EC51B86ED85C544185EB5188E7425141D7A370EDDC5C54419A999959EA425141713D0AF7E15C54415C8FC2D5EA425141EC51B88EE35C544152B81E95EA4251415C8FC2A5E35C544166666676EB42514114AE4721E85C5441A4703DFAEC425141F6285C6FF25C5441050000001E834135004351416A026290E35C544108233A81FE4251412ACECCAADE5C544181B362DF074351410CAA4253DC5C544197136A93094351414CDED738E15C54411E834135004351416A026290E35C5441
+</a>
+
+<b>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D54411FF81461F44251412AD108930E5D5441BBDA25D2F9425141A5289DC80E5D5441145B43A200435141A5289DC80E5D54417A4FE7EF08435141A23C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417987A3CD2543514109D42E2FE85C5441295C8FD22543514152B81EF5E65C5441D7A370DD25435141EC51B81EE45C5441295C8FE2254351410AD7A3C0E25C54417B14AEF725435141EC51B8AEDF5C544171029300264351413CB75464DE5C544190DF78BC25435141527D69FFDB5C5441A918219E20435141A7D22C18DB5C5441CDDF0C5120435141119AD104D45C5441E6A6F80320435141E07DDB72CE5C5441C8186BE81D435141809AF92DC95C5441295C8F02194351410AD7A330C35C5441CDCCCCEC1443514148E17AA4BF5C5441A4703D4A0E4351419A999959BE5C5441D7A370CD0843514185EB51E8BE5C54414D6F378D004351418C7E9730BE5C5441766FA67CFC4251415AF0E46FBD5C54415CFA004EF142514161EC31E6BA5C5441A749C2D3E2425141310425EBB75C54412109969BD84251411DB89C00B65C544174C6BFEFD24251415A62C643B75C544171199C65CF4251414E5D9CC7B95C544114AE47C1CF4251413D0AD723BA5C544152B81EE5D0425141713D0AC7BB5C544133333333D6425141F6285C4FC35C544166666666DB425141E17A140ECB5C5441B81E858BE042514185EB5118D25C5441CDCCCCFCE4425141EC51B86ED85C544185EB5188E7425141D7A370EDDC5C54419A999959EA425141713D0AF7E15C54415C8FC2D5EA425141EC51B88EE35C544152B81E95EA4251415C8FC2A5E35C544166666676EB42514114AE4721E85C5441A4703DFAEC425141F6285C6FF25C544105000000228341350043514169026290E35C544107233A81FE4251412FCECCAADE5C54417EB362DF0743514109AA4253DC5C54419A136A93094351414EDED738E15C5441228341350043514169026290E35C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986557 - 213501
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000037000000A4703DBA8F055141C3F5285CBCD954413D0AD7938A05514166666636C1D954410000002089055141D7A3707DC1D95441F6285C5F88055141AE47E12AC5D95441E17A14DE84055141EC51B83EC8D9544152B81EA582055141F6285C8FC7D954411F85EBD181055141295C8FE2CAD95441295C8FC27F0551419A999979D6D95441666666F681055141A4703DEAD7D95441F6285C3F840551411F85EBE1D7D954416666666686055141666666F6D6D954417B14AE278805514185EB5118D5D954418FC2F5A889055141EC51B80ED3D9544148E17A448F0551415C8FC2D5CAD95441D7A3701D900551417B14AE97C9D95441F6285C2F9B05514166666696B9D95441A4703DEA9D05514185EB5168B5D95441D7A3705DA005514100000020B1D95441EC51B89EA2055141B81E85DBACD95441E17A14EEB5055141C3F5289C83D954411F85EB81C80551418FC2F5985AD954413D0AD783CA055141CDCCCC5C56D95441295C8F92C4055141B81E857B58D95441C3F528ACBE0551419A9999D959D954410AD7A3E0BC055141AE47E1BA5BD9544114AE4731BC0551410AD7A3105FD95441C3F5286CBB055141AE47E13A62D95441EC51B85EB9055141E17A145E64D9544133333393B7055141000000A064D95441D7A3703DB40551415C8FC2B564D954415C8FC245B2055141AE47E11A67D95441666666A6B0055141713D0A776BD95441713D0A97B1055141000000B06DD95441295C8FC2B1055141713D0AB76ED954417B14AEA7AD0551419A99998971D95441E17A141EAC0551415C8FC24574D9544114AE4761A90551411F85EBA178D95441A4703D2AA4055141666666F67ED95441EC51B81E9F05514152B81EE582D95441CDCCCC3C9D055141295C8FB281D95441F6285C2F9B05514152B81E4581D95441B81E85BB9905514185EB51C881D95441E17A144E990551415C8FC21587D95441AE47E1CA980551415C8FC2F58BD95441B81E855B9B0551413D0AD73392D95441E17A14EE9A0551413333337395D95441EC51B83E9A055141E17A142E9BD95441CDCCCC5C98055141D7A3701D9FD954411F85EB2199055141CDCCCC5CA2D95441666666F6970551419A999909A5D954419A99990995055141295C8F92A6D95441F6285C0F940551417B14AEF7ADD954418FC2F5489205514148E17A04B4D95441AE47E1EA93055141666666C6B5D95441A4703DBA8F055141C3F5285CBCD95441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009157CBC98D0551410C72ED2FBED95441A90AD7938A055141B2666636C1D95441A1A3701D900551414514AE97C9D95441CB285C2F9B0551419C666696B9D954418E703DEA9D055141A5EB5168B5D954418CA3705DA00551410B000020B1D9544190170A2FA1055141A45A5793AFD95441EC51B89EA2055141B81E85DBACD954414CEFA268AC055141B362B5F297D95441767A14EEB5055141A2F5289C83D95441E4329EF7C30551418AA1E89E64D954411F85EB81C80551418FC2F5985AD954417E713DD5C9055141305C22CD57D95441240AD783CA055141D6CCCC5C56D95441295C8F92C4055141B81E857B58D9544161934A7BC10551415D84EB3259D95441C3F528ACBE055141CF9999D959D95441F73FDBD1BD0551413AE4A8915CD9544144A8D2FDBC05514156D1C4425FD954419BEAC7F4BB0551410F7CEBFC62D95441536FB2E2B9055141510A822965D95441F7199F05B805514105A28AFD65D954410CCEFDCFB4055141158F09E365D954418D8FC245B20551417247E11A67D95441DD6666A6B0055141123E0A776BD95441572BC9DFB00551414688B8FE6BD95441713D0A97B1055141000000B06DD95441BE5B8FC2B10551413D3E0AB76ED95441034D0D42AF0551416023706F70D954417B14AEA7AD0551419A99998971D95441A34C4132AD055141F4927B5A72D95441577B141EAC055141BD8FC24574D95441A0029ACBA9055141060C95F877D9544114AE4761A90551411F85EBA178D95441C429B152A7055141F08518217BD95441EF703D2AA4055141666666F67ED954415065C721A2055141A268178C80D954418B51B81E9F05514147B81EE582D9544104FD894F9D0551412473381583D95441BD81743D9B0551415FEEB05B82D954410ED7EA4E9A0551412473381583D95441F9FCEC839A055141A78F656E87D95441DE5B0FD49D0551417C0109D98AD95441A7CD15739E0551410F0BB5178FD95441D621548A9C055141FF4F8D8A92D954415065817B9C05514116440FCA97D95441EC51B83E9A055141E17A142E9BD95441D1CCCC5C98055141CFA3701D9FD95441FEF4FDC098055141DCCA00C4A0D954411F85EB2199055141CDCCCC5CA2D954417FF740B39805514162A5D159A3D954419C6666F6970551416F999909A5D954416619E04599055141497D40DFA8D95441E32252ED970551411315834AAFD95441443FA8E393055141DD8689E9AFD95441D0C2F548920551411DE17A04B4D954418C93BE099305514129A006D4B4D95441AE47E1EA93055141666666C6B5D95441A4703DBA8F055141C3F5285CBCD954419157CBC98D0551410C72ED2FBED95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986590 - 59434
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000005000000095192E66109250411DF3E12A2F2654415465156D109250415CD6973F2F26544195192E6610925041DE0832442F26544181A13A9D1092504190689C382F265441260DFC691192504136D45D0530265441DEFCC90D1292504180BEC5DF3026544183688BDA1292504112B95F1631265441E4FD698A1392504144C91E7830265441D3760EE31392504144C91E78302654413E1FAABB15925041580241352E265441F5434861169250419015C8BA2C2654410C22C40A1892504185260AE62B2654419119237518925041ABCC5E072A265441DA8CB11419925041D272B328282654416B73CE531A9250410FF783F3272654418E84CECF1B925041631E761328265441CBEA29D31C925041038A37E0282654413ACAC51A1E925041A708DEED2826544184B42DF51E9250414AAD4E7D272654411989FDA920925041C949A65E2626544157D2DA38229250417221A9DF252654416EB056E223925041E13A8CA0242654416EB056E22392504199C7FD0024265441666666E61492504133333333082654419A99996910925041B81E85DB09265441AE47E12A0E925041295C8FC209265441D7A3701D0C925041333333A3092654419871DB770D925041156C6ADE0B265441F2051AAB0C925041CE356E000E265441C4E904670B925041EFFA7DCB102654411534FDDA0A92504140DC5A851126544194BD6F7B0A925041AECEDB0D12265441384FFBC9099250413032842C1326544122427E9306925041546D687815265441404566260592504114DED67A1626544151DC573E04925041945464DA16265441373DC6E303925041B1410CBF17265441FA04300D0292504119969C7C18265441EC7BD07CFF9150410D6B0D171926544103D2EE47FE9150413E751AD8192654415A1E579EFC915041E2F237B11A265441CBDEA616FB9150416C1D746A1B26544101C49491FA915041502D50411C265441F5A747BDF0915041F5CB7D3C35265441A42E295EF09150415B55BE90382654417A364466F191504130282B5D38265441D9874EAFF3915041194AAFB3362654419C037EE4F391504188639274352654416A6E6BEEF4915041026C330A35265441814CE797F69150413FF003D5342654418B1CDBA8F791504197BD8EF035265441B1FE29D5F8915041BDB2C25D36265441D7E07801FA9150414DD3261635265441C43E82F6FA915041CBCFD57B33265441F5488FB7FB915041205B906D32265441E91D0052FC915041836FAAEF33265441E91D0052FC91504191F8098036265441C69C5221FE9150410B6342CD3626544123ADAB6DFF91504155E4652533265441248979750192504199112774312654416A661C1602925041CFB1097E302654410A1344B403925041D04D87242F265441BD34254E049250415F80B5C42D26544188BEA66A05925041B41A8C3F2D265441C823E322059250410B1E69502C2654415A0A0062069250413CB37B462B26544113BF782B0A92504188A8952C2A265441241B7AC00B9250412E20CEB72A2654416BB3AA710C9250413F7CCF4C2C265441546CD3480D9250418FC280C82D26544159C313AE0D9250411A9CA1C52E265441DE45F4450E925041413F7A832F26544145D37CEA0E925041E7B6B20E30265441492ABD4F0F9250412AF8A25A30265441492ABD4F0F925041CC189B8030265441AC60058F0F925041CC189B8030265441EFA1F5DA0F9250412AF8A25A302654416EB0D5EB0F92504154F302553026544113EE8D331092504126A162F52F26544195192E66109250411DF3E12A2F265441090000009C33190214925041980497C12B265441822997A21192504129C98D522A2654411B9C0EFE109250412EB463E627265441C11347891192504141A4FAA926265441B37AF02A13925041349F397A2526544185EC41D914925041B6CAD9AC2526544110C662D615925041E71B333527265441F1D00AE315925041635CFDD3292654419C33190214925041980497C12B265441010300000001000000040000006EB0D5EB0F92504154F30255302654412E8CA5C10F925041AC23438D3026544132E3E5261092504169E25241302654416EB0D5EB0F92504154F3025530265441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000050463A901F925041CEE98AFC1B265441B8D1911A1F92504100C838221B265441AC0E362B07925041E5E82FA025265441AE52B4FA099250418CF243C229265441FF47CA9D12925041E509E1E025265441B37AF02A13925041349F397A25265441A05327701392504132315E82252654411FE44BCB20925041C4363B821F265441BBB840B61F92504197B419431C26544150463A901F925041CEE98AFC1B265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>631946 - 631989
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000B1965DF71CC25041FF4152C60B005541290B4D2328C250410AC886E10A005541D7A3707D45C2504152B81EE5080055411F85EBF145C250418FC2F5E8000055418FC2F53842C25041CDCCCCCC000055413D0AD7233CC250410000005001005541295C8F0234C250418FC2F58802005541AE47E11A31C25041E17A141E03005541CDCCCC5C28C25041E17A14DE0400554152B81EF521C25041713D0A4705005541B81E858B0CC25041713D0A7703005541D7A370CD05C250411F85EBD1030055415C8FC25505C250411F85EB110C005541B1965DF71CC25041FF4152C60B005541
+</a>
+
+<b>
+010600000001000000010300000001000000120000005C8FC25505C250411F85EB110C0055417B14AE2705C25041713D0A370F0055417B14AE4702C2504148E17AD441005541666666A629C25041713D0A773E0055411F85EBD12DC2504148E17A043D005541B81E858B41C250419A999929360055410000001043C25041295C8F72330055410AD7A34044C25041D7A370AD1E0055415C8FC24545C25041000000C00C005541D7A3707D45C2504152B81EE5080055418DEE5FBF30C25041951E664C0A005541447416E71EC25041565830A00B00554187BBEFC81EC25041C55D13A10B005541B1965DF71CC25041FF4152C60B0055410614FE8617C250416697B8D70B005541696314C614C25041A72B74EC0B0055415E9DE70B11C25041A72B74EC0B0055415C8FC25505C250411F85EB110C005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>833803 - 833766
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000069000000A4703D7AFDFF5041C3F528DC0F3A54410AD7A350FBFF5041295C8F620F3A5441A4703D7AF7FF5041EC51B8CE0E3A54418FC2F518F4FF5041000000700E3A544152B81E35F2FF5041F6285CEF0D3A5441D7A370FDF0FF50419A9999490D3A5441C3F528ECEFFF50410AD7A3600C3A5441295C8F12EFFF5041333333530B3A54415C8FC205EEFF5041000000100B3A544133333383EBFF50415C8FC245153A5441EC51B8EEE5FF50413D0AD743133A5441B81E857BDCFF50418FC2F5680F3A5441713D0AB7D5FF50413D0AD7430D3A544133333363D8FF5041713D0A07113A5441A4703D3AD4FF5041AE47E17A143A5441713D0A27CBFF504166666676173A54417B14AEE7C6FF504114AE4731183A54417B14AEA7C2FF5041295C8F221A3A544148E17A44BFFF50410AD7A3A01C3A5441D7A3707DBDFF50419A999909213A5441B81E85CBBCFF50410AD7A390243A5441E17A14AEBCFF50411F85EB71273A5441CDCCCCCCBCFF5041B81E856B2A3A5441E17A140EBDFF504185EB51C82C3A5441BFADD0BEBDFF504159A0E9FB2F3A54412BA7A961BEFF504119212F48313A5441E17A14EEBEFF5041295C8F72323A5441051D07B6BFFF50417BE29311343A544124A4C8BCC0FF50410DD186E6353A54415FCB57F0C1FF5041948FDEBD373A5441B4A079BDC2FF5041FA76A2E2383A54415AD6C426C3FF5041B594A957393A5441916725C8C4FF5041B8F7BE033B3A54418E6A93FFC6FF50413815C9C63C3A5441F8994566C9FF5041C10A63553E3A544182927C90CCFF5041983ACD02403A5441A97A5123CDFF5041D866A64A403A54413C99097BCEFF5041A52DCBB0403A5441AE290A80D0FF504109424433413A5441592E15AFD1FF504197CBCD7D413A5441FD62FC29D2FF50413477329A413A5441280D4F58D3FF504141F4CAA9413A5441922204B7D2FF5041F1D097C1443A5441295C8F22D2FF50415C8FC265473A54413D0AD7E3D2FF5041F6285CDF5C3A54410AD7A3E0D3FF5041666666865C3A54413D0AD753E0FF504114AE4721583A544114AE47A1E2FF5041B81E85AB573A54415C8FC2F5E4FF504148E17A34573A544114AE47C1EEFF5041295C8FC2563A54415C8FC235F1FF5041B81E854B563A54417B14AE47F5FF504166666686553A5441295C8F22FCFF504185EB5178563A54413D0AD7730800514114AE4731593A5441AE47E1BA0C005141295C8F92593A5441666666E60F005141A4703D6A5A3A5441295C8F3215005141E17A145E5C3A5441CDCCCC5C1600514114AE47015E3A544185EB51E8290051415C8FC285633A54417B14AE5728005141713D0AC75F3A5441E17A143E250051413D0AD773593A5441CDCCCCCC210051419A999929543A54415C8FC2A51B005141F6285C2F4D3A54413D0AD7931700514133333303473A5441A4703D4A160051413D0AD7C3443A54413BA71A3816005141ADF731A4443A54416FC97E4815005141F78A6158433A54413C468DDB13005141C8A41C52413A54419269828413005141406356D5403A54415B56E8C71200514130DCEDCC3F3A5441225EFEE811005141F7CC87C73E3A54415C8C98C1100051417156226D3D3A544144C726C20F0051419A4F333E3C3A5441966522040F0051417FB855493B3A54415438F0E60D005141FA24D1D9393A544139F1800E0D005141028CE8C2383A54410F55BD330C005141577CFFA8373A54414D4966540B00514179DA3089363A5441EBE18F180A005141D8DC3EE6343A544163078174090051410939C900343A54412AF29A6509005141F5F6EAE4333A5441F5F20E30090051418D5DD029333A54410D429DC5080051417A43E0B5313A54410E99EEBA08005141B816E870313A5441051C136508005141A7BD820D2F3A54417244D2F8070051414A582D432C3A5441DA7F3B7B07005141294E0C50283A54410B05BC3C0700514167CBB9A0263A54410AD7A3F006005141D7A3700D253A544102F161B20600514146AD389E233A54414841B746060051411708D20E223A5441CDCCCC0C060051418FC2F538213A54419DF160B805005141891E1EA2203A5441D9274606050051418AEE93601F3A5441D7A3701D0300514114AE4741203A5441EC51B8EE01005141B81E852B1E3A544125E82CA103005141691B92491D3A5441AB3148A9020051415C383AD91A3A54419A9999590200514152B81EC5193A5441713D0A1702005141333333B3173A5441D7A370ED01005141AE47E1DA143A5441E17A141E01005141000000C0123A544148E17AE4FFFF5041B81E854B113A5441D7A370CDFEFF5041B81E857B103A5441A4703D7AFDFF5041C3F528DC0F3A54410103000000010000000500000096F5F1D8130051412BAEC780403A5441AEDB544C13005141599899813F3A544144172B3A13005141FECCBC6B3F3A5441E17A143E13005141295C8F723F3A544196F5F1D8130051412BAEC780403A54410103000000020000002400000044172B3A13005141FECCBC6B3F3A54415C8FC2E510005141B81E855B3B3A54419A9999190E0051418FC2F508353A544114AE47810C0051419A9999B92F3A5441713D0AB70B0051417B14AE172D3A5441F6285C7F090051411F85EB011F3A54411F85EB41090051413D0AD7731C3A54411F85EB01090051410AD7A3D0193A54416666667607005141EC51B8CE193A5441B81E854B060051410AD7A380193A5441CDCCCC1C0300514166666686193A5441C3F5289C0400514185EB51981B3A54411F85EB1106005141CDCCCCEC1D3A5441CDCCCC7C060051419A9999591F3A5441B8D68739070051416B97390C233A54412B8DF0D3070051414C73EA29273A54411850F40508005141013575CB283A5441F252FB74080051419C07EDEF2B3A54411072D8C808005141781172342E3A54415B04CAF308005141D7AFE27A2F3A54418A74480A09005141E421F8E52F3A54417C77FD5709005141AF2FF751313A54413279FA84090051411C351CE1313A5441AD7B6AC6090051418C3C6CA5323A5441B416B1F0090051419973B52A333A544114AE47110A005141E17A148E333A54413DEAA6A40A00514159432281343A5441F56A52AE0A005141CEFE1491343A544107B673160B00514112975D3B353A5441E5DA361B0C00514180D90E88363A544103A125650D005141BE4F002D383A54411628F3E00E005141352E92113A3A5441510D19FD0F005141559C197C3B3A544126356CBE100051415A97BF6B3C3A5441649DA0281200514171E57B223E3A544144172B3A13005141FECCBC6B3F3A54410500000048E17AD4080051411F85EB411F3A54413D0AD71307005141000000701F3A54410AD7A3D006005141000000F01C3A54411F85EB9108005141000000C01C3A544148E17AD4080051411F85EB411F3A5441
+</a>
+
+<b>
+01060000000100000001030000000100000032000000000000A0B7FF5041C3F528DC233A5441F6285C3FB7FF5041F6285CAF263A5441666666F6B7FF50415C8FC2D5273A544166666656B8FF5041C3F528AC2A3A5441713D0A57B8FF5041A4703D8A2E3A5441EC51B8EEB8FF504185EB5108323A5441CDCCCCCCB9FF50411F85EBD1343A5441B81E858BBBFF50410AD7A330393A54411F85EB71BDFF50415C8FC2F53B3A5441D7A3700DC1FF5041AE47E1AA3F3A54417B14AEA7C3FF50410AD7A390413A54418FC2F598C8FF504185EB5148443A5441C3F5289CCBFF5041B81E859B453A544166666676CFFF5041A4703DEA463A5441295C8F22D2FF50415C8FC265473A5441666666E6D1FF50413D0AD793443A5441000000A0D1FF5041B81E852B413A544152B81E85D0FF50413D0AD733413A5441D7A3709DCEFF5041CDCCCCFC403A5441CDCCCC1CCDFF5041E17A14AE403A5441A4703D2ACAFF50411F85EBD13F3A5441CDCCCCDCC7FF5041F6285CAF3E3A54411F85EB01C6FF5041295C8F923D3A544166666606C4FF5041AE47E11A3C3A5441CDCCCC7CC1FF5041713D0A073A3A544148E17AA4BFFF5041000000F0373A5441B81E85ABBEFF50413D0AD723363A544185EB51D8BDFF50417B14AE77333A5441F6285C4FBDFF5041A4703D2A303A5441E17A140EBDFF504185EB51C82C3A5441CDCCCCCCBCFF5041B81E856B2A3A5441E17A14AEBCFF50411F85EB71273A5441B81E85CBBCFF50410AD7A390243A5441D7A3707DBDFF50419A999909213A544148E17A44BFFF50410AD7A3A01C3A5441CDCCCC6CC0FF5041F6285C9F1A3A544133333393C3FF50418FC2F508173A5441B81E857BC8FF50413D0AD7E3143A5441295C8FB2C5FF50411F85EB410D3A5441AE47E14AC3FF5041E17A142E0E3A544100000040C0FF504166666626103A54415C8FC2B5BDFF50410AD7A3F0123A54419A999919BBFF5041295C8F92163A54418FC2F548BAFF50419A9999E9183A544100000090B9FF5041666666D6193A5441C3F5286CB8FF5041713D0A871C3A54410AD7A3E0B7FF50418FC2F5E81E3A544100000070B8FF5041713D0AE7203A5441D7A3703DB8FF50413D0AD7A3223A5441000000A0B7FF5041C3F528DC233A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>833803 - 1006407
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000069000000A4703D7AFDFF5041C3F528DC0F3A54410AD7A350FBFF5041295C8F620F3A5441A4703D7AF7FF5041EC51B8CE0E3A54418FC2F518F4FF5041000000700E3A544152B81E35F2FF5041F6285CEF0D3A5441D7A370FDF0FF50419A9999490D3A5441C3F528ECEFFF50410AD7A3600C3A5441295C8F12EFFF5041333333530B3A54415C8FC205EEFF5041000000100B3A544133333383EBFF50415C8FC245153A5441EC51B8EEE5FF50413D0AD743133A5441B81E857BDCFF50418FC2F5680F3A5441713D0AB7D5FF50413D0AD7430D3A544133333363D8FF5041713D0A07113A5441A4703D3AD4FF5041AE47E17A143A5441713D0A27CBFF504166666676173A54417B14AEE7C6FF504114AE4731183A54417B14AEA7C2FF5041295C8F221A3A544148E17A44BFFF50410AD7A3A01C3A5441D7A3707DBDFF50419A999909213A5441B81E85CBBCFF50410AD7A390243A5441E17A14AEBCFF50411F85EB71273A5441CDCCCCCCBCFF5041B81E856B2A3A5441E17A140EBDFF504185EB51C82C3A5441BFADD0BEBDFF504159A0E9FB2F3A54412BA7A961BEFF504119212F48313A5441E17A14EEBEFF5041295C8F72323A5441051D07B6BFFF50417BE29311343A544124A4C8BCC0FF50410DD186E6353A54415FCB57F0C1FF5041948FDEBD373A5441B4A079BDC2FF5041FA76A2E2383A54415AD6C426C3FF5041B594A957393A5441916725C8C4FF5041B8F7BE033B3A54418E6A93FFC6FF50413815C9C63C3A5441F8994566C9FF5041C10A63553E3A544182927C90CCFF5041983ACD02403A5441A97A5123CDFF5041D866A64A403A54413C99097BCEFF5041A52DCBB0403A5441AE290A80D0FF504109424433413A5441592E15AFD1FF504197CBCD7D413A5441FD62FC29D2FF50413477329A413A5441280D4F58D3FF504141F4CAA9413A5441922204B7D2FF5041F1D097C1443A5441295C8F22D2FF50415C8FC265473A54413D0AD7E3D2FF5041F6285CDF5C3A54410AD7A3E0D3FF5041666666865C3A54413D0AD753E0FF504114AE4721583A544114AE47A1E2FF5041B81E85AB573A54415C8FC2F5E4FF504148E17A34573A544114AE47C1EEFF5041295C8FC2563A54415C8FC235F1FF5041B81E854B563A54417B14AE47F5FF504166666686553A5441295C8F22FCFF504185EB5178563A54413D0AD7730800514114AE4731593A5441AE47E1BA0C005141295C8F92593A5441666666E60F005141A4703D6A5A3A5441295C8F3215005141E17A145E5C3A5441CDCCCC5C1600514114AE47015E3A544185EB51E8290051415C8FC285633A54417B14AE5728005141713D0AC75F3A5441E17A143E250051413D0AD773593A5441CDCCCCCC210051419A999929543A54415C8FC2A51B005141F6285C2F4D3A54413D0AD7931700514133333303473A5441A4703D4A160051413D0AD7C3443A54413BA71A3816005141ADF731A4443A54416FC97E4815005141F78A6158433A54413C468DDB13005141C8A41C52413A54419269828413005141406356D5403A54415B56E8C71200514130DCEDCC3F3A5441225EFEE811005141F7CC87C73E3A54415C8C98C1100051417156226D3D3A544144C726C20F0051419A4F333E3C3A5441966522040F0051417FB855493B3A54415438F0E60D005141FA24D1D9393A544139F1800E0D005141028CE8C2383A54410F55BD330C005141577CFFA8373A54414D4966540B00514179DA3089363A5441EBE18F180A005141D8DC3EE6343A544163078174090051410939C900343A54412AF29A6509005141F5F6EAE4333A5441F5F20E30090051418D5DD029333A54410D429DC5080051417A43E0B5313A54410E99EEBA08005141B816E870313A5441051C136508005141A7BD820D2F3A54417244D2F8070051414A582D432C3A5441DA7F3B7B07005141294E0C50283A54410B05BC3C0700514167CBB9A0263A54410AD7A3F006005141D7A3700D253A544102F161B20600514146AD389E233A54414841B746060051411708D20E223A5441CDCCCC0C060051418FC2F538213A54419DF160B805005141891E1EA2203A5441D9274606050051418AEE93601F3A5441D7A3701D0300514114AE4741203A5441EC51B8EE01005141B81E852B1E3A544125E82CA103005141691B92491D3A5441AB3148A9020051415C383AD91A3A54419A9999590200514152B81EC5193A5441713D0A1702005141333333B3173A5441D7A370ED01005141AE47E1DA143A5441E17A141E01005141000000C0123A544148E17AE4FFFF5041B81E854B113A5441D7A370CDFEFF5041B81E857B103A5441A4703D7AFDFF5041C3F528DC0F3A54410103000000010000000500000096F5F1D8130051412BAEC780403A5441AEDB544C13005141599899813F3A544144172B3A13005141FECCBC6B3F3A5441E17A143E13005141295C8F723F3A544196F5F1D8130051412BAEC780403A54410103000000020000002400000044172B3A13005141FECCBC6B3F3A54415C8FC2E510005141B81E855B3B3A54419A9999190E0051418FC2F508353A544114AE47810C0051419A9999B92F3A5441713D0AB70B0051417B14AE172D3A5441F6285C7F090051411F85EB011F3A54411F85EB41090051413D0AD7731C3A54411F85EB01090051410AD7A3D0193A54416666667607005141EC51B8CE193A5441B81E854B060051410AD7A380193A5441CDCCCC1C0300514166666686193A5441C3F5289C0400514185EB51981B3A54411F85EB1106005141CDCCCCEC1D3A5441CDCCCC7C060051419A9999591F3A5441B8D68739070051416B97390C233A54412B8DF0D3070051414C73EA29273A54411850F40508005141013575CB283A5441F252FB74080051419C07EDEF2B3A54411072D8C808005141781172342E3A54415B04CAF308005141D7AFE27A2F3A54418A74480A09005141E421F8E52F3A54417C77FD5709005141AF2FF751313A54413279FA84090051411C351CE1313A5441AD7B6AC6090051418C3C6CA5323A5441B416B1F0090051419973B52A333A544114AE47110A005141E17A148E333A54413DEAA6A40A00514159432281343A5441F56A52AE0A005141CEFE1491343A544107B673160B00514112975D3B353A5441E5DA361B0C00514180D90E88363A544103A125650D005141BE4F002D383A54411628F3E00E005141352E92113A3A5441510D19FD0F005141559C197C3B3A544126356CBE100051415A97BF6B3C3A5441649DA0281200514171E57B223E3A544144172B3A13005141FECCBC6B3F3A54410500000048E17AD4080051411F85EB411F3A54413D0AD71307005141000000701F3A54410AD7A3D006005141000000F01C3A54411F85EB9108005141000000C01C3A544148E17AD4080051411F85EB411F3A5441
+</a>
+
+<b>
+01060000000100000001030000000100000032000000000000A0B7FF5041C3F528DC233A5441F6285C3FB7FF5041F6285CAF263A5441666666F6B7FF50415C8FC2D5273A544166666656B8FF5041C3F528AC2A3A5441713D0A57B8FF5041A4703D8A2E3A5441EC51B8EEB8FF504185EB5108323A5441CDCCCCCCB9FF50411F85EBD1343A5441B81E858BBBFF50410AD7A330393A54411F85EB71BDFF50415C8FC2F53B3A5441D7A3700DC1FF5041AE47E1AA3F3A54417B14AEA7C3FF50410AD7A390413A54418FC2F598C8FF504185EB5148443A5441C3F5289CCBFF5041B81E859B453A544166666676CFFF5041A4703DEA463A5441295C8F22D2FF50415C8FC265473A5441666666E6D1FF50413D0AD793443A5441000000A0D1FF5041B81E852B413A544152B81E85D0FF50413D0AD733413A5441D7A3709DCEFF5041CDCCCCFC403A5441CDCCCC1CCDFF5041E17A14AE403A5441A4703D2ACAFF50411F85EBD13F3A5441CDCCCCDCC7FF5041F6285CAF3E3A54411F85EB01C6FF5041295C8F923D3A544166666606C4FF5041AE47E11A3C3A5441CDCCCC7CC1FF5041713D0A073A3A544148E17AA4BFFF5041000000F0373A5441B81E85ABBEFF50413D0AD723363A544185EB51D8BDFF50417B14AE77333A5441F6285C4FBDFF5041A4703D2A303A5441E17A140EBDFF504185EB51C82C3A5441CDCCCCCCBCFF5041B81E856B2A3A5441E17A14AEBCFF50411F85EB71273A5441B81E85CBBCFF50410AD7A390243A5441D7A3707DBDFF50419A999909213A544148E17A44BFFF50410AD7A3A01C3A5441CDCCCC6CC0FF5041F6285C9F1A3A544133333393C3FF50418FC2F508173A5441B81E857BC8FF50413D0AD7E3143A5441295C8FB2C5FF50411F85EB410D3A5441AE47E14AC3FF5041E17A142E0E3A544100000040C0FF504166666626103A54415C8FC2B5BDFF50410AD7A3F0123A54419A999919BBFF5041295C8F92163A54418FC2F548BAFF50419A9999E9183A544100000090B9FF5041666666D6193A5441C3F5286CB8FF5041713D0A871C3A54410AD7A3E0B7FF50418FC2F5E81E3A544100000070B8FF5041713D0AE7203A5441D7A3703DB8FF50413D0AD7A3223A5441000000A0B7FF5041C3F528DC233A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>833803 - 3671487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000069000000A4703D7AFDFF5041C3F528DC0F3A54410AD7A350FBFF5041295C8F620F3A5441A4703D7AF7FF5041EC51B8CE0E3A54418FC2F518F4FF5041000000700E3A544152B81E35F2FF5041F6285CEF0D3A5441D7A370FDF0FF50419A9999490D3A5441C3F528ECEFFF50410AD7A3600C3A5441295C8F12EFFF5041333333530B3A54415C8FC205EEFF5041000000100B3A544133333383EBFF50415C8FC245153A5441EC51B8EEE5FF50413D0AD743133A5441B81E857BDCFF50418FC2F5680F3A5441713D0AB7D5FF50413D0AD7430D3A544133333363D8FF5041713D0A07113A5441A4703D3AD4FF5041AE47E17A143A5441713D0A27CBFF504166666676173A54417B14AEE7C6FF504114AE4731183A54417B14AEA7C2FF5041295C8F221A3A544148E17A44BFFF50410AD7A3A01C3A5441D7A3707DBDFF50419A999909213A5441B81E85CBBCFF50410AD7A390243A5441E17A14AEBCFF50411F85EB71273A5441CDCCCCCCBCFF5041B81E856B2A3A5441E17A140EBDFF504185EB51C82C3A5441BFADD0BEBDFF504159A0E9FB2F3A54412BA7A961BEFF504119212F48313A5441E17A14EEBEFF5041295C8F72323A5441051D07B6BFFF50417BE29311343A544124A4C8BCC0FF50410DD186E6353A54415FCB57F0C1FF5041948FDEBD373A5441B4A079BDC2FF5041FA76A2E2383A54415AD6C426C3FF5041B594A957393A5441916725C8C4FF5041B8F7BE033B3A54418E6A93FFC6FF50413815C9C63C3A5441F8994566C9FF5041C10A63553E3A544182927C90CCFF5041983ACD02403A5441A97A5123CDFF5041D866A64A403A54413C99097BCEFF5041A52DCBB0403A5441AE290A80D0FF504109424433413A5441592E15AFD1FF504197CBCD7D413A5441FD62FC29D2FF50413477329A413A5441280D4F58D3FF504141F4CAA9413A5441922204B7D2FF5041F1D097C1443A5441295C8F22D2FF50415C8FC265473A54413D0AD7E3D2FF5041F6285CDF5C3A54410AD7A3E0D3FF5041666666865C3A54413D0AD753E0FF504114AE4721583A544114AE47A1E2FF5041B81E85AB573A54415C8FC2F5E4FF504148E17A34573A544114AE47C1EEFF5041295C8FC2563A54415C8FC235F1FF5041B81E854B563A54417B14AE47F5FF504166666686553A5441295C8F22FCFF504185EB5178563A54413D0AD7730800514114AE4731593A5441AE47E1BA0C005141295C8F92593A5441666666E60F005141A4703D6A5A3A5441295C8F3215005141E17A145E5C3A5441CDCCCC5C1600514114AE47015E3A544185EB51E8290051415C8FC285633A54417B14AE5728005141713D0AC75F3A5441E17A143E250051413D0AD773593A5441CDCCCCCC210051419A999929543A54415C8FC2A51B005141F6285C2F4D3A54413D0AD7931700514133333303473A5441A4703D4A160051413D0AD7C3443A54413BA71A3816005141ADF731A4443A54416FC97E4815005141F78A6158433A54413C468DDB13005141C8A41C52413A54419269828413005141406356D5403A54415B56E8C71200514130DCEDCC3F3A5441225EFEE811005141F7CC87C73E3A54415C8C98C1100051417156226D3D3A544144C726C20F0051419A4F333E3C3A5441966522040F0051417FB855493B3A54415438F0E60D005141FA24D1D9393A544139F1800E0D005141028CE8C2383A54410F55BD330C005141577CFFA8373A54414D4966540B00514179DA3089363A5441EBE18F180A005141D8DC3EE6343A544163078174090051410939C900343A54412AF29A6509005141F5F6EAE4333A5441F5F20E30090051418D5DD029333A54410D429DC5080051417A43E0B5313A54410E99EEBA08005141B816E870313A5441051C136508005141A7BD820D2F3A54417244D2F8070051414A582D432C3A5441DA7F3B7B07005141294E0C50283A54410B05BC3C0700514167CBB9A0263A54410AD7A3F006005141D7A3700D253A544102F161B20600514146AD389E233A54414841B746060051411708D20E223A5441CDCCCC0C060051418FC2F538213A54419DF160B805005141891E1EA2203A5441D9274606050051418AEE93601F3A5441D7A3701D0300514114AE4741203A5441EC51B8EE01005141B81E852B1E3A544125E82CA103005141691B92491D3A5441AB3148A9020051415C383AD91A3A54419A9999590200514152B81EC5193A5441713D0A1702005141333333B3173A5441D7A370ED01005141AE47E1DA143A5441E17A141E01005141000000C0123A544148E17AE4FFFF5041B81E854B113A5441D7A370CDFEFF5041B81E857B103A5441A4703D7AFDFF5041C3F528DC0F3A54410103000000010000000500000096F5F1D8130051412BAEC780403A5441AEDB544C13005141599899813F3A544144172B3A13005141FECCBC6B3F3A5441E17A143E13005141295C8F723F3A544196F5F1D8130051412BAEC780403A54410103000000020000002400000044172B3A13005141FECCBC6B3F3A54415C8FC2E510005141B81E855B3B3A54419A9999190E0051418FC2F508353A544114AE47810C0051419A9999B92F3A5441713D0AB70B0051417B14AE172D3A5441F6285C7F090051411F85EB011F3A54411F85EB41090051413D0AD7731C3A54411F85EB01090051410AD7A3D0193A54416666667607005141EC51B8CE193A5441B81E854B060051410AD7A380193A5441CDCCCC1C0300514166666686193A5441C3F5289C0400514185EB51981B3A54411F85EB1106005141CDCCCCEC1D3A5441CDCCCC7C060051419A9999591F3A5441B8D68739070051416B97390C233A54412B8DF0D3070051414C73EA29273A54411850F40508005141013575CB283A5441F252FB74080051419C07EDEF2B3A54411072D8C808005141781172342E3A54415B04CAF308005141D7AFE27A2F3A54418A74480A09005141E421F8E52F3A54417C77FD5709005141AF2FF751313A54413279FA84090051411C351CE1313A5441AD7B6AC6090051418C3C6CA5323A5441B416B1F0090051419973B52A333A544114AE47110A005141E17A148E333A54413DEAA6A40A00514159432281343A5441F56A52AE0A005141CEFE1491343A544107B673160B00514112975D3B353A5441E5DA361B0C00514180D90E88363A544103A125650D005141BE4F002D383A54411628F3E00E005141352E92113A3A5441510D19FD0F005141559C197C3B3A544126356CBE100051415A97BF6B3C3A5441649DA0281200514171E57B223E3A544144172B3A13005141FECCBC6B3F3A54410500000048E17AD4080051411F85EB411F3A54413D0AD71307005141000000701F3A54410AD7A3D006005141000000F01C3A54411F85EB9108005141000000C01C3A544148E17AD4080051411F85EB411F3A5441
+</a>
+
+<b>
+01060000000100000001030000000100000032000000000000A0B7FF5041C3F528DC233A5441F6285C3FB7FF5041F6285CAF263A5441666666F6B7FF50415C8FC2D5273A544166666656B8FF5041C3F528AC2A3A5441713D0A57B8FF5041A4703D8A2E3A5441EC51B8EEB8FF504185EB5108323A5441CDCCCCCCB9FF50411F85EBD1343A5441B81E858BBBFF50410AD7A330393A54411F85EB71BDFF50415C8FC2F53B3A5441D7A3700DC1FF5041AE47E1AA3F3A54417B14AEA7C3FF50410AD7A390413A54418FC2F598C8FF504185EB5148443A5441C3F5289CCBFF5041B81E859B453A544166666676CFFF5041A4703DEA463A5441295C8F22D2FF50415C8FC265473A5441666666E6D1FF50413D0AD793443A5441000000A0D1FF5041B81E852B413A544152B81E85D0FF50413D0AD733413A5441D7A3709DCEFF5041CDCCCCFC403A5441CDCCCC1CCDFF5041E17A14AE403A5441A4703D2ACAFF50411F85EBD13F3A5441CDCCCCDCC7FF5041F6285CAF3E3A54411F85EB01C6FF5041295C8F923D3A544166666606C4FF5041AE47E11A3C3A5441CDCCCC7CC1FF5041713D0A073A3A544148E17AA4BFFF5041000000F0373A5441B81E85ABBEFF50413D0AD723363A544185EB51D8BDFF50417B14AE77333A5441F6285C4FBDFF5041A4703D2A303A5441E17A140EBDFF504185EB51C82C3A5441CDCCCCCCBCFF5041B81E856B2A3A5441E17A14AEBCFF50411F85EB71273A5441B81E85CBBCFF50410AD7A390243A5441D7A3707DBDFF50419A999909213A544148E17A44BFFF50410AD7A3A01C3A5441CDCCCC6CC0FF5041F6285C9F1A3A544133333393C3FF50418FC2F508173A5441B81E857BC8FF50413D0AD7E3143A5441295C8FB2C5FF50411F85EB410D3A5441AE47E14AC3FF5041E17A142E0E3A544100000040C0FF504166666626103A54415C8FC2B5BDFF50410AD7A3F0123A54419A999919BBFF5041295C8F92163A54418FC2F548BAFF50419A9999E9183A544100000090B9FF5041666666D6193A5441C3F5286CB8FF5041713D0A871C3A54410AD7A3E0B7FF50418FC2F5E81E3A544100000070B8FF5041713D0AE7203A5441D7A3703DB8FF50413D0AD7A3223A5441000000A0B7FF5041C3F528DC233A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981794 - 797414
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000000832A78802475141F5D95AA35343544185EB373C11475141ED99533E5343544120FE12B01247514182E6F71653435441FF3FA1411B4751416A5765DA2F4354411745E77E1A4751414BF4D9E92E435441314A2DBC1947514170F91F272E43544112E7A1CB184751416C4A7D4D2D435441273D452F17475141C56266EA2B4354417AA68BF214475141DA127E592A435441B7A8751D10475141C2AB21C127435441CF4BA5FF0B47514159280BE4244354410FB0A5850A475141CF490B66244354415A6E1A1709475141DDA37F71244354413B0B8F26084751412166C5AA2443544197D21A9D07475141E052224B2543544101F41A1F07475141036550152743544103EC78CF034751419FA08FEA3F4354410832A78802475141F5D95AA353435441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B83EFB4651418FC2F5C86B43544114AE4711FC4651411F85EB416C43544100000020FE4651418FC2F5986D435441EC51B8AE01475141A4703D8A704354411F85EB3104475141F6285C4F73435441A4703DCA06475141D7A370DD764354413D0AD7B30847514148E17A447A4354415C8FC2A50947514185EB51987C4354419A999979194751415C8FC2C579435441CDCCCC1C1B4751418FC2F5786F435441E17A149E17475141000000C07043544185EB518812475141EC51B8FE67435441D7A370ED0F475141295C8F125C4354415C8FC275144751417B14AE675943544114AE473113475141F6285CDF544354411F85EB511347514100000030534354410AD7A34001475141C3F528AC5343544152B81EE5F3465141C3F528FC534354413D0AD723F24651413D0AD7D355435441295C8F72EC46514148E17AE45B435441CDCCCCCCED465141295C8FB261435441E17A146EE7465141E17A14BE61435441F6285C2FE7465141B81E85FB66435441B81E859BE846514148E17AF466435441295C8FA2ED46514148E17A7467435441A4703DBAF24651419A99995968435441F6285C0FF7465141000000D0694354419A9999A9F9465141CDCCCCFC6A435441713D0A17FA4651413D0AD7B36A43544166666666FA465141CDCCCC4C6A43544152B81E35FB465141AE47E15A6A435441EC51B83EFB4651418FC2F5C86B435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981794 - 1146274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000000832A78802475141F5D95AA35343544185EB373C11475141ED99533E5343544120FE12B01247514182E6F71653435441FF3FA1411B4751416A5765DA2F4354411745E77E1A4751414BF4D9E92E435441314A2DBC1947514170F91F272E43544112E7A1CB184751416C4A7D4D2D435441273D452F17475141C56266EA2B4354417AA68BF214475141DA127E592A435441B7A8751D10475141C2AB21C127435441CF4BA5FF0B47514159280BE4244354410FB0A5850A475141CF490B66244354415A6E1A1709475141DDA37F71244354413B0B8F26084751412166C5AA2443544197D21A9D07475141E052224B2543544101F41A1F07475141036550152743544103EC78CF034751419FA08FEA3F4354410832A78802475141F5D95AA353435441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B83EFB4651418FC2F5C86B43544114AE4711FC4651411F85EB416C43544100000020FE4651418FC2F5986D435441EC51B8AE01475141A4703D8A704354411F85EB3104475141F6285C4F73435441A4703DCA06475141D7A370DD764354413D0AD7B30847514148E17A447A4354415C8FC2A50947514185EB51987C4354419A999979194751415C8FC2C579435441CDCCCC1C1B4751418FC2F5786F435441E17A149E17475141000000C07043544185EB518812475141EC51B8FE67435441D7A370ED0F475141295C8F125C4354415C8FC275144751417B14AE675943544114AE473113475141F6285CDF544354411F85EB511347514100000030534354410AD7A34001475141C3F528AC5343544152B81EE5F3465141C3F528FC534354413D0AD723F24651413D0AD7D355435441295C8F72EC46514148E17AE45B435441CDCCCCCCED465141295C8FB261435441E17A146EE7465141E17A14BE61435441F6285C2FE7465141B81E85FB66435441B81E859BE846514148E17AF466435441295C8FA2ED46514148E17A7467435441A4703DBAF24651419A99995968435441F6285C0FF7465141000000D0694354419A9999A9F9465141CDCCCCFC6A435441713D0A17FA4651413D0AD7B36A43544166666666FA465141CDCCCC4C6A43544152B81E35FB465141AE47E15A6A435441EC51B83EFB4651418FC2F5C86B435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981794 - 3941302
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000000832A78802475141F5D95AA35343544185EB373C11475141ED99533E5343544120FE12B01247514182E6F71653435441FF3FA1411B4751416A5765DA2F4354411745E77E1A4751414BF4D9E92E435441314A2DBC1947514170F91F272E43544112E7A1CB184751416C4A7D4D2D435441273D452F17475141C56266EA2B4354417AA68BF214475141DA127E592A435441B7A8751D10475141C2AB21C127435441CF4BA5FF0B47514159280BE4244354410FB0A5850A475141CF490B66244354415A6E1A1709475141DDA37F71244354413B0B8F26084751412166C5AA2443544197D21A9D07475141E052224B2543544101F41A1F07475141036550152743544103EC78CF034751419FA08FEA3F4354410832A78802475141F5D95AA353435441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B83EFB4651418FC2F5C86B43544114AE4711FC4651411F85EB416C43544100000020FE4651418FC2F5986D435441EC51B8AE01475141A4703D8A704354411F85EB3104475141F6285C4F73435441A4703DCA06475141D7A370DD764354413D0AD7B30847514148E17A447A4354415C8FC2A50947514185EB51987C4354419A999979194751415C8FC2C579435441CDCCCC1C1B4751418FC2F5786F435441E17A149E17475141000000C07043544185EB518812475141EC51B8FE67435441D7A370ED0F475141295C8F125C4354415C8FC275144751417B14AE675943544114AE473113475141F6285CDF544354411F85EB511347514100000030534354410AD7A34001475141C3F528AC5343544152B81EE5F3465141C3F528FC534354413D0AD723F24651413D0AD7D355435441295C8F72EC46514148E17AE45B435441CDCCCCCCED465141295C8FB261435441E17A146EE7465141E17A14BE61435441F6285C2FE7465141B81E85FB66435441B81E859BE846514148E17AF466435441295C8FA2ED46514148E17A7467435441A4703DBAF24651419A99995968435441F6285C0FF7465141000000D0694354419A9999A9F9465141CDCCCCFC6A435441713D0A17FA4651413D0AD7B36A43544166666666FA465141CDCCCC4C6A43544152B81E35FB465141AE47E15A6A435441EC51B83EFB4651418FC2F5C86B435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>836761 - 836875
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000022000000BF84C44D68445141065187C4066054419A9999796F445141F6285C7F056054419A9999D979445141AE47E15A0360544114AE4791804451417B14AEF70160544185EB512883445141EC51B86E016054419A9999A992445141A4703D3AFE5F5441713D0AE7974451415C8FC205FD5F5441D03D10499A445141E2691CA0FA5F5441F1F55FE0A0445141D781AC6DF85F5441E17A14DEA3445141713D0A77F75F5441B17482E7A444514117038A66F45F5441B17482E7A4445141759FA67EF05F5441C99B89EDA3445141B9208477EC5F54411BF90E32A3445141C55F1B4BE95F54411BF90E32A344514140177782E55F5441A58C12B5A24451411177B7B8DC5F5441552F8D70A34451414F045D98D75F5441FAE997F9A144514138347D33D35F54411368C6A09B44514189910278D25F544109D77D0F9444514167828B3FD15F5441A4703D8A88445141CDCCCCDCD05F5441000000B086445141CDCCCC1CD25F5441E17A142E8744514148E17AB4D35F54417B14AED785445141D7A3709DD35F54419A9999798544514133333373D25F5441A4703D1A85445141F6285C7FD15F544152B81E358244514152B81E25D25F54410AD7A3D07944514114AE4731D45F544185EB51D87944514152B81E15DB5F54415C8FC29570445141E17A144EDE5F5441061714C96A4451416CDA8210E15F5441061714C96A4451417F044B03EB5F544134C69A7F69445141A9C0117806605441BF84C44D68445141065187C40660544105000000008C1E55984451410A27E21AF15F5441E370DF359844514162CFC619EC5F5441F44C87819B44514145B487FAEB5F5441BA1609439B445141EC0BA3FBF05F5441008C1E55984451410A27E21AF15F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000051FC05CA52445141A5665938096054416132E6C2524451413E7DD77809605441121E888D584451412F98AAE609605441291769A2624451416C2C5E2F0860544134C69A7F69445141A9C0117806605441061714C96A4451417F044B03EB5F5441061714C96A4451410222ADC9E05F54410AD7A3706744514185EB5138E25F5441B81E853B5844514114AE4731E95F544152B81E3558445141A4703D7AEC5F5441295C8F5257445141A4703D3AF65F5441EC51B8DE5644514114AE47E1F85F544114AE47A153445141CDCCCC5C0960544151FC05CA52445141A566593809605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158823 - 3159542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000F0000007A5C010AA73F514152976766C50E5541210EE504A73F51415EFFFE65C50E5541CEDD49D19B3F514153BE7205C80E5541B81E858B8F3F514114AE47F1CA0E554155871C618F3F5141AD9106EFCA0E5541D8A710488F3F5141F5E9E3F4CA0E55419A9999097F3F51410AD7A310CA0E55419472AF6B773F5141A21762C7C90E5541B1FA84B5773F5141C6C424ACCD0E5541C120E5EC773F51417867460DD00E554178942FE1773F5141B9607C66D20E5541C3F528FC8C3F5141713D0A67D10E55418D3E2E6A8E3F5141A5C8EFE6CF0E554152337BB08F3F514100EAE3F4CA0E55417A5C010AA73F514152976766C50E554101030000000100000013000000AE47E15AB03F5141C3F5286CC00E5541838FB944B03F5141B8B9CAF5C50E55411C5F5C34B03F5141B8B9CAF5C50E55413D0AD733B03F51418FC2F508C60E5541713D0A37AF3F514114AE4701C60E5541B1AE345EAE3F5141B80A05FBC50E5541713D0A37AF3F5141C3F5289CD00E55415AE0A132AF3F51411EECC1AFD10E55419A999999BA3F51410AD7A330CC0E5541A4703D1AC33F514133333313C80E55416745B5C5C73F514147C5A2CEC50E5541EE21E3FCC53F514123391347C40E5541E17A14FEC33F5141E17A142EC30E5541713D0A17C03F514148E17AA4C10E5541D7A3705DBD3F5141666666F6C00E5541E17A14AEB83F5141D7A3706DBF0E5541F6285CBFB43F51413D0AD703BE0E5541A4703D7AAF3F51410AD7A3E0BB0E5541AE47E15AB03F5141C3F5286CC00E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001100000038DECD95773F51418DC4FCFFCB0E5541B75FFE74783F5141E033EB77DB0E5541B742B9F6813F5141F422AA1FDB0E5541BD65DA0A963F5141F5FCA16FDA0E55410FB4A53C9A3F5141BC92075EDA0E5541F1E12BEB9C3F51418D286D4CDA0E55413098620FA03F5141D50A3051DA0E55410E8E2B37A23F514101336127D90E5541A4703D2AA73F5141B81E857BD60E554152B81EF5A73F514185EB5118D50E5541D6DA0383A83F5141431FECC6D40E55417CB5E7DEAA3F514158A89A94C70E554163EAF03CAB3F51412D2DBC9EC50E554102B08BE1A63F51417277EF48C50E554198EA99908F3F514125C405F1CA0E5541CD4977498F3F514192180913CC0E554138DECD95773F51418DC4FCFFCB0E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158823 - 3568646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000F0000007A5C010AA73F514152976766C50E5541210EE504A73F51415EFFFE65C50E5541CEDD49D19B3F514153BE7205C80E5541B81E858B8F3F514114AE47F1CA0E554155871C618F3F5141AD9106EFCA0E5541D8A710488F3F5141F5E9E3F4CA0E55419A9999097F3F51410AD7A310CA0E55419472AF6B773F5141A21762C7C90E5541B1FA84B5773F5141C6C424ACCD0E5541C120E5EC773F51417867460DD00E554178942FE1773F5141B9607C66D20E5541C3F528FC8C3F5141713D0A67D10E55418D3E2E6A8E3F5141A5C8EFE6CF0E554152337BB08F3F514100EAE3F4CA0E55417A5C010AA73F514152976766C50E554101030000000100000013000000AE47E15AB03F5141C3F5286CC00E5541838FB944B03F5141B8B9CAF5C50E55411C5F5C34B03F5141B8B9CAF5C50E55413D0AD733B03F51418FC2F508C60E5541713D0A37AF3F514114AE4701C60E5541B1AE345EAE3F5141B80A05FBC50E5541713D0A37AF3F5141C3F5289CD00E55415AE0A132AF3F51411EECC1AFD10E55419A999999BA3F51410AD7A330CC0E5541A4703D1AC33F514133333313C80E55416745B5C5C73F514147C5A2CEC50E5541EE21E3FCC53F514123391347C40E5541E17A14FEC33F5141E17A142EC30E5541713D0A17C03F514148E17AA4C10E5541D7A3705DBD3F5141666666F6C00E5541E17A14AEB83F5141D7A3706DBF0E5541F6285CBFB43F51413D0AD703BE0E5541A4703D7AAF3F51410AD7A3E0BB0E5541AE47E15AB03F5141C3F5286CC00E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001100000038DECD95773F51418DC4FCFFCB0E5541B75FFE74783F5141E033EB77DB0E5541B742B9F6813F5141F422AA1FDB0E5541BD65DA0A963F5141F5FCA16FDA0E55410FB4A53C9A3F5141BC92075EDA0E5541F1E12BEB9C3F51418D286D4CDA0E55413098620FA03F5141D50A3051DA0E55410E8E2B37A23F514101336127D90E5541A4703D2AA73F5141B81E857BD60E554152B81EF5A73F514185EB5118D50E5541D6DA0383A83F5141431FECC6D40E55417CB5E7DEAA3F514158A89A94C70E554163EAF03CAB3F51412D2DBC9EC50E554102B08BE1A63F51417277EF48C50E554198EA99908F3F514125C405F1CA0E5541CD4977498F3F514192180913CC0E554138DECD95773F51418DC4FCFFCB0E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982102 - 275558
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285CFF97275141666666E640375441333333F3932751410AD7A3303E375441AE47E12A8527514133333383433754417B14AE9773275141713D0AD7493754411F85EB816E2751419A9999E956375441D7A3707D87275141AE47E1EA4D37544148E17AB49F2751413D0AD73345375441F6285CFF97275141666666E640375441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000003B368117712751410EC190A14A37544181DF318475275141CC7CB825493754412782A2749127514115DB8E163F375441D64B0CF593275141E599E0313E37544175A900B7952751413ED39D343D375441CDCCCC5C912751416666669639375441295C8F628B2751417B14AEF731375441713D0A378B275141CDCCCCFC30375441D7A3700D8B275141000000B0303754410AD7A3908127514114AE470134375441666666467127514114AE47C139375441D7A3700D72275141CDCCCCDC3B375441666666666F275141CDCCCC1C3D3754413D0AD713562751415C8FC215403754413D0AD7A34527514114AE4701423754417B14AE373527514185EB51E843375441B81E85AB2827514152B81ED54537544152B81E7528275141A4703D5A4A3754410AD7A3202B275141D7A3705D4B375441D0E1EDF12A275141251680204E3754417266BF863327514128B6C2D54D375441BF788C413F275141BE1F6BB44D3754410EC4EC254D275141BE4D5E4F4B375441B36CDCF364275141E798FF8E47375441A685A42C722751415A144F8845375441AE98B68D712751416935876F493754413B368117712751410EC190A14A375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982104 - 1320680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982104 - 4047321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 1350714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD54410AD7A35043445141F6285C1F23BD54417EA915A14244514112B439B225BD5441A65CDEF03D4451417E5A550A28BD54415C8FC25539445141EC51B8EE28BD5441A4703D5A29445141EC51B85E28BD5441333333E31D4451413D0AD7F327BD54411F85EB11144451411F85EB9127BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544171F6610A06445141427879A327BD544186B6883603445141FBA2E8C025BD54418FB096A2FE435141049DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FB6D5F35EE43514106CEF28E18BD5441A8D2B592EA435141EA44BA5817BD544104686DA1E94351418AB2FB931ABD54418FC2F538F3435141295C8F221DBD5441E17A14CEF4435141A4703D8A1EBD5441D8B623E7F7435141F4D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C4F6FCBAFA435141934718F224BD5441208CB4C9F943514173C1D80526BD5441666666F6FB435141713D0A472CBD5441EC51B84EFD435141B81E85AB2FBD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441666666E6F9435141B81E85FB37BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD544110570EFC1C4451417E4590DD30BD54415636B7CF1F445141F820B63E30BD54410C7F62652544514172FCDB9F2FBD544114AE47412B4451411F85EB812FBD54415349460C31445141F19AE86A2FBD544137DF31FA36445141EDD701012FBD54410F2C69AA3B445141B704F4D42DBD5441340786633F445141285A4C622CBD54418FC2F5E844445141AE47E11A29BD5441713D0A47474451410000002028BD544143FE5BDE49445141ADA7956228BD54411F85EBD14C44514152B81E9527BD5441
+</a>
+
+<b>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419511F4C256445141D297774823BD5441700D68A857445141BF4EC30A22BD5441AFA35C3E59445141853201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415B8FA96159445141C4A0A1CD18BD5441C4211B8557445141092F87D617BD5441C25E341B57445141F99C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD54410AD7A35043445141F6285C1F23BD544180A915A14244514116B439B225BD5441A25CDEF03D4451417A5A550A28BD54415C8FC25539445141EC51B8EE28BD5441A4703D5A29445141EC51B85E28BD5441333333E31D4451413D0AD7F327BD54411F85EB11144451411F85EB9127BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544175F6610A06445141477879A327BD544188B6883603445141F7A2E8C025BD544191B096A2FE435141009DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FA6D5F35EE43514109CEF28E18BD5441ABD2B592EA435141EB44BA5817BD544103686DA1E943514189B2FB931ABD54418FC2F538F3435141295C8F221DBD5441E17A14CEF4435141A4703D8A1EBD5441D4B623E7F7435141F7D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C1F6FCBAFA435141954718F224BD5441248CB4C9F943514178C1D80526BD5441666666F6FB435141713D0A472CBD5441EC51B84EFD435141B81E85AB2FBD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441666666E6F9435141B81E85FB37BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD544111570EFC1C4451417D4590DD30BD54415836B7CF1F445141F920B63E30BD5441117F62652544514175FCDB9F2FBD544114AE47412B4451411F85EB812FBD54415049460C31445141F49AE86A2FBD544136DF31FA36445141F1D701012FBD5441142C69AA3B445141B504F4D42DBD5441360786633F4451412B5A4C622CBD54418FC2F5E844445141AE47E11A29BD5441713D0A47474451410000002028BD544143FE5BDE49445141B2A7956228BD54411F85EBD14C44514152B81E9527BD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 5243741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD54410AD7A35043445141F6285C1F23BD54417EA915A14244514112B439B225BD5441A65CDEF03D4451417E5A550A28BD54415C8FC25539445141EC51B8EE28BD5441A4703D5A29445141EC51B85E28BD5441333333E31D4451413D0AD7F327BD54411F85EB11144451411F85EB9127BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544171F6610A06445141427879A327BD544186B6883603445141FBA2E8C025BD54418FB096A2FE435141049DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FB6D5F35EE43514106CEF28E18BD5441A8D2B592EA435141EA44BA5817BD544104686DA1E94351418AB2FB931ABD54418FC2F538F3435141295C8F221DBD5441E17A14CEF4435141A4703D8A1EBD5441D8B623E7F7435141F4D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C4F6FCBAFA435141934718F224BD5441208CB4C9F943514173C1D80526BD5441666666F6FB435141713D0A472CBD5441EC51B84EFD435141B81E85AB2FBD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441666666E6F9435141B81E85FB37BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD544110570EFC1C4451417E4590DD30BD54415636B7CF1F445141F820B63E30BD54410C7F62652544514172FCDB9F2FBD544114AE47412B4451411F85EB812FBD54415349460C31445141F19AE86A2FBD544137DF31FA36445141EDD701012FBD54410F2C69AA3B445141B704F4D42DBD5441340786633F445141285A4C622CBD54418FC2F5E844445141AE47E11A29BD5441713D0A47474451410000002028BD544143FE5BDE49445141ADA7956228BD54411F85EBD14C44514152B81E9527BD5441
+</a>
+
+<b>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419511F4C256445141D297774823BD5441700D68A857445141BF4EC30A22BD5441AFA35C3E59445141853201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415B8FA96159445141C4A0A1CD18BD5441C4211B8557445141092F87D617BD5441C25E341B57445141F99C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD54410AD7A35043445141F6285C1F23BD544180A915A14244514116B439B225BD5441A25CDEF03D4451417A5A550A28BD54415C8FC25539445141EC51B8EE28BD5441A4703D5A29445141EC51B85E28BD5441333333E31D4451413D0AD7F327BD54411F85EB11144451411F85EB9127BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544175F6610A06445141477879A327BD544188B6883603445141F7A2E8C025BD544191B096A2FE435141009DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FA6D5F35EE43514109CEF28E18BD5441ABD2B592EA435141EB44BA5817BD544103686DA1E943514189B2FB931ABD54418FC2F538F3435141295C8F221DBD5441E17A14CEF4435141A4703D8A1EBD5441D4B623E7F7435141F7D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C1F6FCBAFA435141954718F224BD5441248CB4C9F943514178C1D80526BD5441666666F6FB435141713D0A472CBD5441EC51B84EFD435141B81E85AB2FBD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441666666E6F9435141B81E85FB37BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD544111570EFC1C4451417D4590DD30BD54415836B7CF1F445141F920B63E30BD5441117F62652544514175FCDB9F2FBD544114AE47412B4451411F85EB812FBD54415049460C31445141F49AE86A2FBD544136DF31FA36445141F1D701012FBD5441142C69AA3B445141B504F4D42DBD5441360786633F4451412B5A4C622CBD54418FC2F5E844445141AE47E11A29BD5441713D0A47474451410000002028BD544143FE5BDE49445141B2A7956228BD54411F85EBD14C44514152B81E9527BD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 171065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD54410AD7A35043445141F6285C1F23BD54417EA915A14244514112B439B225BD5441A65CDEF03D4451417E5A550A28BD54415C8FC25539445141EC51B8EE28BD5441A4703D5A29445141EC51B85E28BD5441333333E31D4451413D0AD7F327BD54411F85EB11144451411F85EB9127BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544171F6610A06445141427879A327BD544186B6883603445141FBA2E8C025BD54418FB096A2FE435141049DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FB6D5F35EE43514106CEF28E18BD5441A8D2B592EA435141EA44BA5817BD544104686DA1E94351418AB2FB931ABD54418FC2F538F3435141295C8F221DBD5441E17A14CEF4435141A4703D8A1EBD5441D8B623E7F7435141F4D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C4F6FCBAFA435141934718F224BD5441208CB4C9F943514173C1D80526BD5441666666F6FB435141713D0A472CBD5441EC51B84EFD435141B81E85AB2FBD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441666666E6F9435141B81E85FB37BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD544110570EFC1C4451417E4590DD30BD54415636B7CF1F445141F820B63E30BD54410C7F62652544514172FCDB9F2FBD544114AE47412B4451411F85EB812FBD54415349460C31445141F19AE86A2FBD544137DF31FA36445141EDD701012FBD54410F2C69AA3B445141B704F4D42DBD5441340786633F445141285A4C622CBD54418FC2F5E844445141AE47E11A29BD5441713D0A47474451410000002028BD544143FE5BDE49445141ADA7956228BD54411F85EBD14C44514152B81E9527BD5441
+</a>
+
+<b>
+010600000001000000010300000001000000250000008FC2F538F3435141295C8F221DBD54411A0596C4F44351413797CF811EBD5441430D9717F5435141C9DAEEA51EBD54411AB09431F54351415A3E31F01EBD5441D4B623E7F7435141F7D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C1F6FCBAFA435141954718F224BD5441248CB4C9F943514178C1D80526BD54419EC89DDDFA435141FA9B6F1F29BD5441666666F6FB435141713D0A472CBD54419A9999E9FD4351418FC2F5782FBD5441EC51B83EFE43514148E17AC431BD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441852DAFBCFB4351416973665037BD5441EF317B3CFA4351417378B9B138BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544175F6610A06445141477879A327BD544188B6883603445141F7A2E8C025BD544191B096A2FE435141009DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FA6D5F35EE43514109CEF28E18BD5441ABD2B592EA435141EB44BA5817BD544103686DA1E943514189B2FB931ABD54418FC2F538F3435141295C8F221DBD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 410677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD54410AD7A35043445141F6285C1F23BD54417EA915A14244514112B439B225BD5441A65CDEF03D4451417E5A550A28BD54415C8FC25539445141EC51B8EE28BD5441A4703D5A29445141EC51B85E28BD5441333333E31D4451413D0AD7F327BD54411F85EB11144451411F85EB9127BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544171F6610A06445141427879A327BD544186B6883603445141FBA2E8C025BD54418FB096A2FE435141049DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FB6D5F35EE43514106CEF28E18BD5441A8D2B592EA435141EA44BA5817BD544104686DA1E94351418AB2FB931ABD54418FC2F538F3435141295C8F221DBD5441E17A14CEF4435141A4703D8A1EBD5441D8B623E7F7435141F4D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C4F6FCBAFA435141934718F224BD5441208CB4C9F943514173C1D80526BD5441666666F6FB435141713D0A472CBD5441EC51B84EFD435141B81E85AB2FBD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441666666E6F9435141B81E85FB37BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD544110570EFC1C4451417E4590DD30BD54415636B7CF1F445141F820B63E30BD54410C7F62652544514172FCDB9F2FBD544114AE47412B4451411F85EB812FBD54415349460C31445141F19AE86A2FBD544137DF31FA36445141EDD701012FBD54410F2C69AA3B445141B704F4D42DBD5441340786633F445141285A4C622CBD54418FC2F5E844445141AE47E11A29BD5441713D0A47474451410000002028BD544143FE5BDE49445141ADA7956228BD54411F85EBD14C44514152B81E9527BD5441
+</a>
+
+<b>
+010600000001000000010300000001000000250000008FC2F538F3435141295C8F221DBD54411A0596C4F44351413797CF811EBD5441430D9717F5435141C9DAEEA51EBD54411AB09431F54351415A3E31F01EBD5441D4B623E7F7435141F7D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C1F6FCBAFA435141954718F224BD5441248CB4C9F943514178C1D80526BD54419EC89DDDFA435141FA9B6F1F29BD5441666666F6FB435141713D0A472CBD54419A9999E9FD4351418FC2F5782FBD5441EC51B83EFE43514148E17AC431BD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441852DAFBCFB4351416973665037BD5441EF317B3CFA4351417378B9B138BD5441EC51B86EFA4351419A9999C939BD5441713D0A47FC435141295C8F623DBD544100000070FF435141C3F5287C3CBD5441F6285C0F0244514152B81EE53ABD544114AE47F10A4451410AD7A3A035BD5441295C8FA20D445141D7A3704D34BD54413333335311445141AE47E13A33BD5441CDCCCCFC14445141EC51B86E32BD5441295C8F9213445141333333132CBD5441EC51B87E0D4451410AD7A3302ABD544185EB51880A445141AE47E1DA28BD544175F6610A06445141477879A327BD544188B6883603445141F7A2E8C025BD544191B096A2FE435141009DF62C21BD5441B81E85CBFB43514148E17A141DBD5441713D0A47F743514114AE473118BD5441D7A370ADF24351419A99996917BD5441FA6D5F35EE43514109CEF28E18BD5441ABD2B592EA435141EB44BA5817BD544103686DA1E943514189B2FB931ABD54418FC2F538F3435141295C8F221DBD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 3182105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441CDCCCC9C6DEE5041F6285CFF04BA5441D7A370FD66EE5041D7A3702DFBB954415C8FC2B55FEE50410AD7A3E0FDB954410AD7A3905DEE5041295C8FC2F9B9544114AE47B162EE504185EB5188F1B95441CDCCCCCC5FEE5041F6285CAFEEB95441295C8F725BEE504152B81E75ECB954410AD7A37058EE50413D0AD7C3EBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB95441295C8F5249EE504100000000F0B95441CDCCCC2C45EE5041E17A146EE9B9544152B81E553CEE5041CDCCCCCCF1B95441AE47E1AA37EE5041C3F5289CF5B95441000000902DEE5041F6285C9FFCB95441333333130EEE50410AD7A3F00FBA5441E17A146EFCED5041D7A370DD1BBA5441B81E857BEAED50411F85EB712ABA5441CDCCCC4CE6ED50417B14AEB72EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA5441713D0A5718EE5041C3F528BC1EBA5441E17A14CE21EE50410AD7A3801FBA5441EC51B8AE2EEE50417B14AED717BA54416666662631EE5041D7A3704D17BA54413D0AD7733AEE504185EB51D811BA54419A99998938EE50413D0AD7430EBA54419A9999F941EE50418FC2F53809BA5441EC51B80E4AEE50410000007004BA5441A4703DFA52EE5041E17A146E00BA544101030000000100000051000000295C8FC2F6EE50419A9999598CBA5441B81E853BF8EE5041B81E85EB88BA5441713D0A87F8EE50413333335386BA5441A4703D5AEDEE50410AD7A39086BA544185EB51C8DEEE50413333330385BA5441295C8FE2DCEE5041F6285C3F84BA544148E17A34DCEE50415C8FC2958BBA5441295C8F22DCEE5041713D0A978CBA54419A9999E9D3EE50419A9999D98CBA54415C8FC225CDEE50417B14AE778EBA5441F6285C1FCBEE5041CDCCCCEC8FBA54410AD7A380C9EE5041CDCCCC2C92BA54410AD7A3F0C8EE50411F85EB1195BA544114AE4771CAEE5041713D0AD79DBA5441E17A14EECAEE5041F6285CAFA0BA5441A4703D1ACDEE5041AE47E1BAA5BA54417B14AE77D0EE50415C8FC225AABA5441C3F528BCD2EE504100000020B0BA544166666636D3EE504100000040B6BA5441A4703D7ACEEE5041295C8F82C0BA544148E17AF4CDEE504152B81EA5C1BA5441F6285CFFC8EE5041333333B3C0BA54415C8FC245C6EE50415C8FC2D5C0BA54415C8FC245C0EE50410AD7A370C6BA54410AD7A3B0B0EE50410AD7A320D5BA544114AE47F1A7EE504185EB5188DFBA544152B81E05A6EE50413D0AD723E3BA544152B81EF5A3EE5041AE47E1BAE7BA54413D0AD773A2EE5041A4703D4AEEBA5441C3F5283CA0EE50419A999919F4BA54417B14AE07A0EE504185EB51F8F7BA54415C8FC295A1EE504114AE4701FBBA5441F6285CEFA5EE5041EC51B84E00BB5441666666E6A9EE5041EC51B89E07BB54417B14AE47AEEE50419A9999890CBB54418FC2F558BBEE50419A9999D915BB544133333353C0EE5041AE47E1FA1BBB54411F85EB31BFEE50413D0AD7231CBB54410AD7A3C0C5EE504114AE47D128BB5441295C8F02CCEE50416666667627BB54417B14AEA7CBEE504148E17A8426BB5441713D0AA7C7EE50417B14AED71BBB54411F85EB41C3EE504152B81EB514BB5441E17A141EBAEE5041A4703D3A0BBB5441B81E852BAFEE50415C8FC20502BB544133333323B0EE504152B81E6501BB5441E17A14BEAFEE504185EB512800BB54418FC2F538B0EE504114AE47F1FEBA5441C3F5280CA6EE504148E17AC4F6BA5441AE47E15AA9EE5041D7A3704DF0BA5441A4703D9AA9EE50410AD7A370EDBA54410AD7A380A9EE50415C8FC205EBBA5441A4703D8AAAEE504114AE4791E7BA5441AE47E11AADEE50417B14AEC7E2BA5441CDCCCC6CAFEE504100000050E0BA544152B81E85B3EE5041EC51B8EEDEBA54411F85EB61B6EE504152B81E35D9BA54410AD7A3B0BEEE504133333343DFBA544133333333C4EE5041A4703D9AD4BA5441C3F5283CC5EE504152B81EF5CEBA54410AD7A350C8EE5041000000B0CBBA544185EB5158DDEE504114AE4741D3BA5441A4703DCADEEE50417B14AE77D1BA544166666606E5EE5041AE47E12AD4BA5441D7A370EDF0EE504185EB5148D7BA5441E17A143EF9EE5041295C8FF2D5BA54413D0AD77308EF5041B81E850BD9BA5441333333D309EF5041295C8F52D8BA5441EC51B8DE0BEF504133333383D3BA5441CDCCCC8CF2EE5041D7A370CDCEBA54419A9999E9E4EE504100000040CBBA5441C3F5287CD6EE5041713D0AB7C3BA5441713D0A37DBEE504148E17A84BCBA544148E17A74DCEE50419A999909B6BA54410AD7A350DBEE5041E17A144EACBA544100000060D9EE5041AE47E1CAA6BA544185EB51A8D5EE504114AE47B1A1BA5441AE47E16AD2EE50416666666697BA5441333333C3DCEE5041D7A3706D95BA544114AE4791E4EE5041333333E392BA5441295C8FC2F6EE50419A9999598CBA54410103000000010000001500000066666646B8EE5041295C8F12A0BA54418FC2F5E8C0EE5041C3F5289CA7BA54418FC2F5E8C4EE50410AD7A320ADBA5441B81E850BC9EE5041D7A3702DABBA5441713D0AF7C0EE5041295C8FC2A0BA5441666666F6BAEE5041666666E69CBA544152B81E65B8EE50416666664698BA5441E17A143EB7EE504152B81E1589BA5441F6285CDFB7EE5041CDCCCC0C83BA544148E17A34B8EE504152B81ED57FBA5441A4703D0AB5EE50419A99997971BA54411F85EB91B2EE5041000000606BBA5441E17A142EAFEE50415C8FC29564BA5441666666C6ABEE5041AE47E13A5FBA5441D7A3701DA8EE5041CDCCCCEC60BA544114AE47A1AAEE50410AD7A36065BA54418FC2F5B8B1EE50411F85EB6179BA5441295C8FE2B2EE50411F85EBF17DBA5441C3F5289CB4EE5041713D0A1798BA5441CDCCCCFCB4EE5041CDCCCCBC9BBA544166666646B8EE5041295C8F12A0BA544101030000000100000013000000295C8F72C6ED504185EB51985DBA5441C3F528BCC7ED50417B14AE775FBA54417B14AE67C9ED50410AD7A3F061BA544148E17AD4DCED504148E17A0451BA5441295C8F82DBED5041E17A14CE50BA5441AE47E1BADAED50419A9999D94FBA544148E17AA4E2ED50417B14AE5749BA5441333333C3E1ED5041713D0AF746BA5441EC51B8CEE0ED50410AD7A36044BA54418FC2F558F0ED50410000008039BA5441B81E852BFBED50410AD7A3A032BA54413333334312EE5041F6285CFF22BA5441A4703D9A02EE5041D7A370ED28BA5441AE47E1CAECED5041B81E854B2FBA544185EB5108E1ED50419A99991934BA54418FC2F518D7ED50410AD7A3C03DBA54419A999989CDED50410000000049BA5441E17A14CEC1ED504152B81ED556BA5441295C8F72C6ED504185EB51985DBA54410103000000010000002B000000AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA5441010300000001000000100000005C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544185EB5108A9EE5041D7A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000008FEB5108A9EE5041C9A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA5441CD22CE13A9EE504124ABE4BC77BA5441E3EFF322A8EE50410F36C2A276BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA54418FEB5108A9EE5041C9A370CD77BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 3570481
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441CDCCCC9C6DEE5041F6285CFF04BA5441D7A370FD66EE5041D7A3702DFBB954415C8FC2B55FEE50410AD7A3E0FDB954410AD7A3905DEE5041295C8FC2F9B9544114AE47B162EE504185EB5188F1B95441CDCCCCCC5FEE5041F6285CAFEEB95441295C8F725BEE504152B81E75ECB954410AD7A37058EE50413D0AD7C3EBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB95441295C8F5249EE504100000000F0B95441CDCCCC2C45EE5041E17A146EE9B9544152B81E553CEE5041CDCCCCCCF1B95441AE47E1AA37EE5041C3F5289CF5B95441000000902DEE5041F6285C9FFCB95441333333130EEE50410AD7A3F00FBA5441E17A146EFCED5041D7A370DD1BBA5441B81E857BEAED50411F85EB712ABA5441CDCCCC4CE6ED50417B14AEB72EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA5441713D0A5718EE5041C3F528BC1EBA5441E17A14CE21EE50410AD7A3801FBA5441EC51B8AE2EEE50417B14AED717BA54416666662631EE5041D7A3704D17BA54413D0AD7733AEE504185EB51D811BA54419A99998938EE50413D0AD7430EBA54419A9999F941EE50418FC2F53809BA5441EC51B80E4AEE50410000007004BA5441A4703DFA52EE5041E17A146E00BA544101030000000100000051000000295C8FC2F6EE50419A9999598CBA5441B81E853BF8EE5041B81E85EB88BA5441713D0A87F8EE50413333335386BA5441A4703D5AEDEE50410AD7A39086BA544185EB51C8DEEE50413333330385BA5441295C8FE2DCEE5041F6285C3F84BA544148E17A34DCEE50415C8FC2958BBA5441295C8F22DCEE5041713D0A978CBA54419A9999E9D3EE50419A9999D98CBA54415C8FC225CDEE50417B14AE778EBA5441F6285C1FCBEE5041CDCCCCEC8FBA54410AD7A380C9EE5041CDCCCC2C92BA54410AD7A3F0C8EE50411F85EB1195BA544114AE4771CAEE5041713D0AD79DBA5441E17A14EECAEE5041F6285CAFA0BA5441A4703D1ACDEE5041AE47E1BAA5BA54417B14AE77D0EE50415C8FC225AABA5441C3F528BCD2EE504100000020B0BA544166666636D3EE504100000040B6BA5441A4703D7ACEEE5041295C8F82C0BA544148E17AF4CDEE504152B81EA5C1BA5441F6285CFFC8EE5041333333B3C0BA54415C8FC245C6EE50415C8FC2D5C0BA54415C8FC245C0EE50410AD7A370C6BA54410AD7A3B0B0EE50410AD7A320D5BA544114AE47F1A7EE504185EB5188DFBA544152B81E05A6EE50413D0AD723E3BA544152B81EF5A3EE5041AE47E1BAE7BA54413D0AD773A2EE5041A4703D4AEEBA5441C3F5283CA0EE50419A999919F4BA54417B14AE07A0EE504185EB51F8F7BA54415C8FC295A1EE504114AE4701FBBA5441F6285CEFA5EE5041EC51B84E00BB5441666666E6A9EE5041EC51B89E07BB54417B14AE47AEEE50419A9999890CBB54418FC2F558BBEE50419A9999D915BB544133333353C0EE5041AE47E1FA1BBB54411F85EB31BFEE50413D0AD7231CBB54410AD7A3C0C5EE504114AE47D128BB5441295C8F02CCEE50416666667627BB54417B14AEA7CBEE504148E17A8426BB5441713D0AA7C7EE50417B14AED71BBB54411F85EB41C3EE504152B81EB514BB5441E17A141EBAEE5041A4703D3A0BBB5441B81E852BAFEE50415C8FC20502BB544133333323B0EE504152B81E6501BB5441E17A14BEAFEE504185EB512800BB54418FC2F538B0EE504114AE47F1FEBA5441C3F5280CA6EE504148E17AC4F6BA5441AE47E15AA9EE5041D7A3704DF0BA5441A4703D9AA9EE50410AD7A370EDBA54410AD7A380A9EE50415C8FC205EBBA5441A4703D8AAAEE504114AE4791E7BA5441AE47E11AADEE50417B14AEC7E2BA5441CDCCCC6CAFEE504100000050E0BA544152B81E85B3EE5041EC51B8EEDEBA54411F85EB61B6EE504152B81E35D9BA54410AD7A3B0BEEE504133333343DFBA544133333333C4EE5041A4703D9AD4BA5441C3F5283CC5EE504152B81EF5CEBA54410AD7A350C8EE5041000000B0CBBA544185EB5158DDEE504114AE4741D3BA5441A4703DCADEEE50417B14AE77D1BA544166666606E5EE5041AE47E12AD4BA5441D7A370EDF0EE504185EB5148D7BA5441E17A143EF9EE5041295C8FF2D5BA54413D0AD77308EF5041B81E850BD9BA5441333333D309EF5041295C8F52D8BA5441EC51B8DE0BEF504133333383D3BA5441CDCCCC8CF2EE5041D7A370CDCEBA54419A9999E9E4EE504100000040CBBA5441C3F5287CD6EE5041713D0AB7C3BA5441713D0A37DBEE504148E17A84BCBA544148E17A74DCEE50419A999909B6BA54410AD7A350DBEE5041E17A144EACBA544100000060D9EE5041AE47E1CAA6BA544185EB51A8D5EE504114AE47B1A1BA5441AE47E16AD2EE50416666666697BA5441333333C3DCEE5041D7A3706D95BA544114AE4791E4EE5041333333E392BA5441295C8FC2F6EE50419A9999598CBA54410103000000010000001500000066666646B8EE5041295C8F12A0BA54418FC2F5E8C0EE5041C3F5289CA7BA54418FC2F5E8C4EE50410AD7A320ADBA5441B81E850BC9EE5041D7A3702DABBA5441713D0AF7C0EE5041295C8FC2A0BA5441666666F6BAEE5041666666E69CBA544152B81E65B8EE50416666664698BA5441E17A143EB7EE504152B81E1589BA5441F6285CDFB7EE5041CDCCCC0C83BA544148E17A34B8EE504152B81ED57FBA5441A4703D0AB5EE50419A99997971BA54411F85EB91B2EE5041000000606BBA5441E17A142EAFEE50415C8FC29564BA5441666666C6ABEE5041AE47E13A5FBA5441D7A3701DA8EE5041CDCCCCEC60BA544114AE47A1AAEE50410AD7A36065BA54418FC2F5B8B1EE50411F85EB6179BA5441295C8FE2B2EE50411F85EBF17DBA5441C3F5289CB4EE5041713D0A1798BA5441CDCCCCFCB4EE5041CDCCCCBC9BBA544166666646B8EE5041295C8F12A0BA544101030000000100000013000000295C8F72C6ED504185EB51985DBA5441C3F528BCC7ED50417B14AE775FBA54417B14AE67C9ED50410AD7A3F061BA544148E17AD4DCED504148E17A0451BA5441295C8F82DBED5041E17A14CE50BA5441AE47E1BADAED50419A9999D94FBA544148E17AA4E2ED50417B14AE5749BA5441333333C3E1ED5041713D0AF746BA5441EC51B8CEE0ED50410AD7A36044BA54418FC2F558F0ED50410000008039BA5441B81E852BFBED50410AD7A3A032BA54413333334312EE5041F6285CFF22BA5441A4703D9A02EE5041D7A370ED28BA5441AE47E1CAECED5041B81E854B2FBA544185EB5108E1ED50419A99991934BA54418FC2F518D7ED50410AD7A3C03DBA54419A999989CDED50410000000049BA5441E17A14CEC1ED504152B81ED556BA5441295C8F72C6ED504185EB51985DBA54410103000000010000002B000000AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA5441010300000001000000100000005C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544185EB5108A9EE5041D7A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000008FEB5108A9EE5041C9A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA5441CD22CE13A9EE504124ABE4BC77BA5441E3EFF322A8EE50410F36C2A276BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA54418FEB5108A9EE5041C9A370CD77BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 249290
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441CDCCCC9C6DEE5041F6285CFF04BA5441D7A370FD66EE5041D7A3702DFBB954415C8FC2B55FEE50410AD7A3E0FDB954410AD7A3905DEE5041295C8FC2F9B9544114AE47B162EE504185EB5188F1B95441CDCCCCCC5FEE5041F6285CAFEEB95441295C8F725BEE504152B81E75ECB954410AD7A37058EE50413D0AD7C3EBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB95441295C8F5249EE504100000000F0B95441CDCCCC2C45EE5041E17A146EE9B9544152B81E553CEE5041CDCCCCCCF1B95441AE47E1AA37EE5041C3F5289CF5B95441000000902DEE5041F6285C9FFCB95441333333130EEE50410AD7A3F00FBA5441E17A146EFCED5041D7A370DD1BBA5441B81E857BEAED50411F85EB712ABA5441CDCCCC4CE6ED50417B14AEB72EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA5441713D0A5718EE5041C3F528BC1EBA5441E17A14CE21EE50410AD7A3801FBA5441EC51B8AE2EEE50417B14AED717BA54416666662631EE5041D7A3704D17BA54413D0AD7733AEE504185EB51D811BA54419A99998938EE50413D0AD7430EBA54419A9999F941EE50418FC2F53809BA5441EC51B80E4AEE50410000007004BA5441A4703DFA52EE5041E17A146E00BA544101030000000100000051000000295C8FC2F6EE50419A9999598CBA5441B81E853BF8EE5041B81E85EB88BA5441713D0A87F8EE50413333335386BA5441A4703D5AEDEE50410AD7A39086BA544185EB51C8DEEE50413333330385BA5441295C8FE2DCEE5041F6285C3F84BA544148E17A34DCEE50415C8FC2958BBA5441295C8F22DCEE5041713D0A978CBA54419A9999E9D3EE50419A9999D98CBA54415C8FC225CDEE50417B14AE778EBA5441F6285C1FCBEE5041CDCCCCEC8FBA54410AD7A380C9EE5041CDCCCC2C92BA54410AD7A3F0C8EE50411F85EB1195BA544114AE4771CAEE5041713D0AD79DBA5441E17A14EECAEE5041F6285CAFA0BA5441A4703D1ACDEE5041AE47E1BAA5BA54417B14AE77D0EE50415C8FC225AABA5441C3F528BCD2EE504100000020B0BA544166666636D3EE504100000040B6BA5441A4703D7ACEEE5041295C8F82C0BA544148E17AF4CDEE504152B81EA5C1BA5441F6285CFFC8EE5041333333B3C0BA54415C8FC245C6EE50415C8FC2D5C0BA54415C8FC245C0EE50410AD7A370C6BA54410AD7A3B0B0EE50410AD7A320D5BA544114AE47F1A7EE504185EB5188DFBA544152B81E05A6EE50413D0AD723E3BA544152B81EF5A3EE5041AE47E1BAE7BA54413D0AD773A2EE5041A4703D4AEEBA5441C3F5283CA0EE50419A999919F4BA54417B14AE07A0EE504185EB51F8F7BA54415C8FC295A1EE504114AE4701FBBA5441F6285CEFA5EE5041EC51B84E00BB5441666666E6A9EE5041EC51B89E07BB54417B14AE47AEEE50419A9999890CBB54418FC2F558BBEE50419A9999D915BB544133333353C0EE5041AE47E1FA1BBB54411F85EB31BFEE50413D0AD7231CBB54410AD7A3C0C5EE504114AE47D128BB5441295C8F02CCEE50416666667627BB54417B14AEA7CBEE504148E17A8426BB5441713D0AA7C7EE50417B14AED71BBB54411F85EB41C3EE504152B81EB514BB5441E17A141EBAEE5041A4703D3A0BBB5441B81E852BAFEE50415C8FC20502BB544133333323B0EE504152B81E6501BB5441E17A14BEAFEE504185EB512800BB54418FC2F538B0EE504114AE47F1FEBA5441C3F5280CA6EE504148E17AC4F6BA5441AE47E15AA9EE5041D7A3704DF0BA5441A4703D9AA9EE50410AD7A370EDBA54410AD7A380A9EE50415C8FC205EBBA5441A4703D8AAAEE504114AE4791E7BA5441AE47E11AADEE50417B14AEC7E2BA5441CDCCCC6CAFEE504100000050E0BA544152B81E85B3EE5041EC51B8EEDEBA54411F85EB61B6EE504152B81E35D9BA54410AD7A3B0BEEE504133333343DFBA544133333333C4EE5041A4703D9AD4BA5441C3F5283CC5EE504152B81EF5CEBA54410AD7A350C8EE5041000000B0CBBA544185EB5158DDEE504114AE4741D3BA5441A4703DCADEEE50417B14AE77D1BA544166666606E5EE5041AE47E12AD4BA5441D7A370EDF0EE504185EB5148D7BA5441E17A143EF9EE5041295C8FF2D5BA54413D0AD77308EF5041B81E850BD9BA5441333333D309EF5041295C8F52D8BA5441EC51B8DE0BEF504133333383D3BA5441CDCCCC8CF2EE5041D7A370CDCEBA54419A9999E9E4EE504100000040CBBA5441C3F5287CD6EE5041713D0AB7C3BA5441713D0A37DBEE504148E17A84BCBA544148E17A74DCEE50419A999909B6BA54410AD7A350DBEE5041E17A144EACBA544100000060D9EE5041AE47E1CAA6BA544185EB51A8D5EE504114AE47B1A1BA5441AE47E16AD2EE50416666666697BA5441333333C3DCEE5041D7A3706D95BA544114AE4791E4EE5041333333E392BA5441295C8FC2F6EE50419A9999598CBA54410103000000010000001500000066666646B8EE5041295C8F12A0BA54418FC2F5E8C0EE5041C3F5289CA7BA54418FC2F5E8C4EE50410AD7A320ADBA5441B81E850BC9EE5041D7A3702DABBA5441713D0AF7C0EE5041295C8FC2A0BA5441666666F6BAEE5041666666E69CBA544152B81E65B8EE50416666664698BA5441E17A143EB7EE504152B81E1589BA5441F6285CDFB7EE5041CDCCCC0C83BA544148E17A34B8EE504152B81ED57FBA5441A4703D0AB5EE50419A99997971BA54411F85EB91B2EE5041000000606BBA5441E17A142EAFEE50415C8FC29564BA5441666666C6ABEE5041AE47E13A5FBA5441D7A3701DA8EE5041CDCCCCEC60BA544114AE47A1AAEE50410AD7A36065BA54418FC2F5B8B1EE50411F85EB6179BA5441295C8FE2B2EE50411F85EBF17DBA5441C3F5289CB4EE5041713D0A1798BA5441CDCCCCFCB4EE5041CDCCCCBC9BBA544166666646B8EE5041295C8F12A0BA544101030000000100000013000000295C8F72C6ED504185EB51985DBA5441C3F528BCC7ED50417B14AE775FBA54417B14AE67C9ED50410AD7A3F061BA544148E17AD4DCED504148E17A0451BA5441295C8F82DBED5041E17A14CE50BA5441AE47E1BADAED50419A9999D94FBA544148E17AA4E2ED50417B14AE5749BA5441333333C3E1ED5041713D0AF746BA5441EC51B8CEE0ED50410AD7A36044BA54418FC2F558F0ED50410000008039BA5441B81E852BFBED50410AD7A3A032BA54413333334312EE5041F6285CFF22BA5441A4703D9A02EE5041D7A370ED28BA5441AE47E1CAECED5041B81E854B2FBA544185EB5108E1ED50419A99991934BA54418FC2F518D7ED50410AD7A3C03DBA54419A999989CDED50410000000049BA5441E17A14CEC1ED504152B81ED556BA5441295C8F72C6ED504185EB51985DBA54410103000000010000002B000000AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA5441010300000001000000100000005C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544185EB5108A9EE5041D7A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441
+</a>
+
+<b>
+01060000000100000001030000000100000061000000241F85EB71EE504123F628AC09BA5441339BA70671EE504122CEC4B308BA544150B87A0371EE5041059152B008BA544118CDCC9C6DEE504197295CFF04BA5441254F24226DEE50418DC47A4904BA544166619EB66BEE50416C55702E02BA5441C978DFCB6AEE5041AF2D5AD200BA5441784A41AF69EE5041F208F04C00BA5441EA59525768EE504108E2A11600BA54416A9BCB4767EE504170313519FFB95441DCAADCEF65EE50417AF1B2BEFEB9544163939F6164EE5041FC8BE22DFEB95441D9149BAC63EE5041F819F88AFDB954414F9696F762EE50416182BFB1FCB9544175C762F662EE50412B22D6ABFCB9544167B90B1E60EE5041516BF6B9FDB954415C8FC2B55FEE50410AD7A3E0FDB95441AF3300995FEE504198336FA9FDB9544174D6A3905DEE5041BE5B8FC2F9B954418661553E61EE5041EAD088DBF3B954414F590B3361EE5041223DE0BFF3B95441534EE8B65FEE50418F179289F3B95441359161A75EEE504190DA06C5F1B954414B6A13715EEE50410E034C91F0B95441B060F0F45CEE504175125D39EFB95441A87C1BAF5BEE50410C6D0A4EEEB9544111BB40C05AEE504167BF89C1EDB954410B5C8F725BEE50414BB81E75ECB954418485031E5AEE504151E4B426ECB95441A1D7A37058EE5041930AD7C3EBB954410DAF9E2557EE5041D2A8C2D0EBB954415436522056EE5041CE9AF5DAEBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB954419965924B4DEE50415AC2FFA0EEB95441AA5C8F5249EE504196000000F0B95441D9CCCC2C45EE5041F47A146EE9B954414385382F44EE50415CF31B5EEAB9544152B81E553CEE5041CDCCCCCCF1B95441B67D92E839EE5041C42A9DC7F3B954414F48E1AA37EE50410EF6289CF5B95441F5FFFF8F2DEE504197295C9FFCB95441923233130EEE504180D7A3F00FBA5441427B146EFCED504163A470DD1BBA5441A5347146EBED5041FA7B12CD29BA5441B81E857BEAED50411F85EB712ABA5441DFCCCC4CE6ED50416914AEB72EBA54415330B417E8ED5041E79A38062EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA544163D8B21317EE5041AD5397211EBA5441303D0A5718EE50414CF528BC1EBA54413A2B8ADF1CEE5041904A431A1FBA5441E17A14CE21EE50410AD7A3801FBA54416F75CE1327EE5041762FC65D1CBA5441970A229725EE5041D1CCD18015BA5441462BF1222EEE50411C24654E10BA544167E2A9F836EE504197BFABCC08BA54410BE8D39739EE50410CC074B30DBA5441FA9D0CCF3BEE50411B1063840CBA5441690177DD49EE504100F5F07804BA5441111B3D9F4FEE5041AD2F01F001BA54410EA3457B50EE5041CE64268D01BA54417657D5FE51EE504105A007DF00BA5441A6B22AFF51EE5041186DC0DD00BA544198BD4D7B53EE504108E2A11600BA5441F4CCB99254EE50416F1AA80704BA54419A9999B954EE5041F6285C5F04BA5441894B72AC54EE5041D771896404BA5441A0A122C154EE5041921A3FAF04BA5441F443597953EE50417D4F78D005BA54418A85EBE161EE504121295C2F0BBA54419AE7ABE96BEE50414B1E705E14BA54410678BBCB6CEE5041519AD1AC13BA5441FCB73D266DEE5041C71BCDF712BA54410678BBCB6CEE5041D510AA7B11BA54410AEAA56E6DEE5041BBC50D0F11BA5441195C90116EEE5041BDDE413311BA544197C160A26EEE5041475D46E811BA5441FE4D7F696FEE5041CD6960FA11BA54411F64BCF770EE5041475D46E811BA544188090FE371EE50415B5A4F5213BA54410FD99D3070EE50415FCC39F513BA544180253A9D70EE50415DF0909515BA54418201E3FC6EEE5041543013F015BA54415573B1F16EEE50412E6F2F1816BA54411D5B8F827DEE5041F09999A91ABA5441A2F0CEB782EE504188C824F718BA5441CBD4BC1984EE5041EAACCF8318BA5441BB9ADB2C84EE504149B8F16318BA5441E63AF24F84EE5041698B257218BA54417B14AE578BEE50417B14AE2716BA544115A95B3586EE50417E841E3714BA5441545C8FE283EE50419C66665613BA54415E0AD70379EE5041B43333430EBA5441241F85EB71EE504123F628AC09BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 249293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441CDCCCC9C6DEE5041F6285CFF04BA5441D7A370FD66EE5041D7A3702DFBB954415C8FC2B55FEE50410AD7A3E0FDB954410AD7A3905DEE5041295C8FC2F9B9544114AE47B162EE504185EB5188F1B95441CDCCCCCC5FEE5041F6285CAFEEB95441295C8F725BEE504152B81E75ECB954410AD7A37058EE50413D0AD7C3EBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB95441295C8F5249EE504100000000F0B95441CDCCCC2C45EE5041E17A146EE9B9544152B81E553CEE5041CDCCCCCCF1B95441AE47E1AA37EE5041C3F5289CF5B95441000000902DEE5041F6285C9FFCB95441333333130EEE50410AD7A3F00FBA5441E17A146EFCED5041D7A370DD1BBA5441B81E857BEAED50411F85EB712ABA5441CDCCCC4CE6ED50417B14AEB72EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA5441713D0A5718EE5041C3F528BC1EBA5441E17A14CE21EE50410AD7A3801FBA5441EC51B8AE2EEE50417B14AED717BA54416666662631EE5041D7A3704D17BA54413D0AD7733AEE504185EB51D811BA54419A99998938EE50413D0AD7430EBA54419A9999F941EE50418FC2F53809BA5441EC51B80E4AEE50410000007004BA5441A4703DFA52EE5041E17A146E00BA544101030000000100000051000000295C8FC2F6EE50419A9999598CBA5441B81E853BF8EE5041B81E85EB88BA5441713D0A87F8EE50413333335386BA5441A4703D5AEDEE50410AD7A39086BA544185EB51C8DEEE50413333330385BA5441295C8FE2DCEE5041F6285C3F84BA544148E17A34DCEE50415C8FC2958BBA5441295C8F22DCEE5041713D0A978CBA54419A9999E9D3EE50419A9999D98CBA54415C8FC225CDEE50417B14AE778EBA5441F6285C1FCBEE5041CDCCCCEC8FBA54410AD7A380C9EE5041CDCCCC2C92BA54410AD7A3F0C8EE50411F85EB1195BA544114AE4771CAEE5041713D0AD79DBA5441E17A14EECAEE5041F6285CAFA0BA5441A4703D1ACDEE5041AE47E1BAA5BA54417B14AE77D0EE50415C8FC225AABA5441C3F528BCD2EE504100000020B0BA544166666636D3EE504100000040B6BA5441A4703D7ACEEE5041295C8F82C0BA544148E17AF4CDEE504152B81EA5C1BA5441F6285CFFC8EE5041333333B3C0BA54415C8FC245C6EE50415C8FC2D5C0BA54415C8FC245C0EE50410AD7A370C6BA54410AD7A3B0B0EE50410AD7A320D5BA544114AE47F1A7EE504185EB5188DFBA544152B81E05A6EE50413D0AD723E3BA544152B81EF5A3EE5041AE47E1BAE7BA54413D0AD773A2EE5041A4703D4AEEBA5441C3F5283CA0EE50419A999919F4BA54417B14AE07A0EE504185EB51F8F7BA54415C8FC295A1EE504114AE4701FBBA5441F6285CEFA5EE5041EC51B84E00BB5441666666E6A9EE5041EC51B89E07BB54417B14AE47AEEE50419A9999890CBB54418FC2F558BBEE50419A9999D915BB544133333353C0EE5041AE47E1FA1BBB54411F85EB31BFEE50413D0AD7231CBB54410AD7A3C0C5EE504114AE47D128BB5441295C8F02CCEE50416666667627BB54417B14AEA7CBEE504148E17A8426BB5441713D0AA7C7EE50417B14AED71BBB54411F85EB41C3EE504152B81EB514BB5441E17A141EBAEE5041A4703D3A0BBB5441B81E852BAFEE50415C8FC20502BB544133333323B0EE504152B81E6501BB5441E17A14BEAFEE504185EB512800BB54418FC2F538B0EE504114AE47F1FEBA5441C3F5280CA6EE504148E17AC4F6BA5441AE47E15AA9EE5041D7A3704DF0BA5441A4703D9AA9EE50410AD7A370EDBA54410AD7A380A9EE50415C8FC205EBBA5441A4703D8AAAEE504114AE4791E7BA5441AE47E11AADEE50417B14AEC7E2BA5441CDCCCC6CAFEE504100000050E0BA544152B81E85B3EE5041EC51B8EEDEBA54411F85EB61B6EE504152B81E35D9BA54410AD7A3B0BEEE504133333343DFBA544133333333C4EE5041A4703D9AD4BA5441C3F5283CC5EE504152B81EF5CEBA54410AD7A350C8EE5041000000B0CBBA544185EB5158DDEE504114AE4741D3BA5441A4703DCADEEE50417B14AE77D1BA544166666606E5EE5041AE47E12AD4BA5441D7A370EDF0EE504185EB5148D7BA5441E17A143EF9EE5041295C8FF2D5BA54413D0AD77308EF5041B81E850BD9BA5441333333D309EF5041295C8F52D8BA5441EC51B8DE0BEF504133333383D3BA5441CDCCCC8CF2EE5041D7A370CDCEBA54419A9999E9E4EE504100000040CBBA5441C3F5287CD6EE5041713D0AB7C3BA5441713D0A37DBEE504148E17A84BCBA544148E17A74DCEE50419A999909B6BA54410AD7A350DBEE5041E17A144EACBA544100000060D9EE5041AE47E1CAA6BA544185EB51A8D5EE504114AE47B1A1BA5441AE47E16AD2EE50416666666697BA5441333333C3DCEE5041D7A3706D95BA544114AE4791E4EE5041333333E392BA5441295C8FC2F6EE50419A9999598CBA54410103000000010000001500000066666646B8EE5041295C8F12A0BA54418FC2F5E8C0EE5041C3F5289CA7BA54418FC2F5E8C4EE50410AD7A320ADBA5441B81E850BC9EE5041D7A3702DABBA5441713D0AF7C0EE5041295C8FC2A0BA5441666666F6BAEE5041666666E69CBA544152B81E65B8EE50416666664698BA5441E17A143EB7EE504152B81E1589BA5441F6285CDFB7EE5041CDCCCC0C83BA544148E17A34B8EE504152B81ED57FBA5441A4703D0AB5EE50419A99997971BA54411F85EB91B2EE5041000000606BBA5441E17A142EAFEE50415C8FC29564BA5441666666C6ABEE5041AE47E13A5FBA5441D7A3701DA8EE5041CDCCCCEC60BA544114AE47A1AAEE50410AD7A36065BA54418FC2F5B8B1EE50411F85EB6179BA5441295C8FE2B2EE50411F85EBF17DBA5441C3F5289CB4EE5041713D0A1798BA5441CDCCCCFCB4EE5041CDCCCCBC9BBA544166666646B8EE5041295C8F12A0BA544101030000000100000013000000295C8F72C6ED504185EB51985DBA5441C3F528BCC7ED50417B14AE775FBA54417B14AE67C9ED50410AD7A3F061BA544148E17AD4DCED504148E17A0451BA5441295C8F82DBED5041E17A14CE50BA5441AE47E1BADAED50419A9999D94FBA544148E17AA4E2ED50417B14AE5749BA5441333333C3E1ED5041713D0AF746BA5441EC51B8CEE0ED50410AD7A36044BA54418FC2F558F0ED50410000008039BA5441B81E852BFBED50410AD7A3A032BA54413333334312EE5041F6285CFF22BA5441A4703D9A02EE5041D7A370ED28BA5441AE47E1CAECED5041B81E854B2FBA544185EB5108E1ED50419A99991934BA54418FC2F518D7ED50410AD7A3C03DBA54419A999989CDED50410000000049BA5441E17A14CEC1ED504152B81ED556BA5441295C8F72C6ED504185EB51985DBA54410103000000010000002B000000AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA5441010300000001000000100000005C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544185EB5108A9EE5041D7A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000EA535108A9EE5041A4F06FCD77BA5441C87C6D58A7EE5041F61777E278BA54413A1E29CCA5EE5041EC3FA4E079BA5441B81E852BABEE5041D7A370CD87BA54413B912AC7ABEE50417860028D8BBA54414B9BE2BAACEE50412984866B91BA5441343CECA1AEEE504183FA980998BA5441F6B37B94B1EE5041EBC03DFA9EBA54413BF01E45B4EE5041A8FA5BBFA1BA54412164FF0FB7EE5041328EC125A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA5441F5463002AFEE50417CB71EA675BA54418B90C2B5ABEE50418A4501206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544143FCAFE0AAEE50411B5CE62475BA5441CD22CE13A9EE504124ABE4BC77BA5441EA535108A9EE5041A4F06FCD77BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 357275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441CDCCCC9C6DEE5041F6285CFF04BA5441D7A370FD66EE5041D7A3702DFBB954415C8FC2B55FEE50410AD7A3E0FDB954410AD7A3905DEE5041295C8FC2F9B9544114AE47B162EE504185EB5188F1B95441CDCCCCCC5FEE5041F6285CAFEEB95441295C8F725BEE504152B81E75ECB954410AD7A37058EE50413D0AD7C3EBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB95441295C8F5249EE504100000000F0B95441CDCCCC2C45EE5041E17A146EE9B9544152B81E553CEE5041CDCCCCCCF1B95441AE47E1AA37EE5041C3F5289CF5B95441000000902DEE5041F6285C9FFCB95441333333130EEE50410AD7A3F00FBA5441E17A146EFCED5041D7A370DD1BBA5441B81E857BEAED50411F85EB712ABA5441CDCCCC4CE6ED50417B14AEB72EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA5441713D0A5718EE5041C3F528BC1EBA5441E17A14CE21EE50410AD7A3801FBA5441EC51B8AE2EEE50417B14AED717BA54416666662631EE5041D7A3704D17BA54413D0AD7733AEE504185EB51D811BA54419A99998938EE50413D0AD7430EBA54419A9999F941EE50418FC2F53809BA5441EC51B80E4AEE50410000007004BA5441A4703DFA52EE5041E17A146E00BA544101030000000100000051000000295C8FC2F6EE50419A9999598CBA5441B81E853BF8EE5041B81E85EB88BA5441713D0A87F8EE50413333335386BA5441A4703D5AEDEE50410AD7A39086BA544185EB51C8DEEE50413333330385BA5441295C8FE2DCEE5041F6285C3F84BA544148E17A34DCEE50415C8FC2958BBA5441295C8F22DCEE5041713D0A978CBA54419A9999E9D3EE50419A9999D98CBA54415C8FC225CDEE50417B14AE778EBA5441F6285C1FCBEE5041CDCCCCEC8FBA54410AD7A380C9EE5041CDCCCC2C92BA54410AD7A3F0C8EE50411F85EB1195BA544114AE4771CAEE5041713D0AD79DBA5441E17A14EECAEE5041F6285CAFA0BA5441A4703D1ACDEE5041AE47E1BAA5BA54417B14AE77D0EE50415C8FC225AABA5441C3F528BCD2EE504100000020B0BA544166666636D3EE504100000040B6BA5441A4703D7ACEEE5041295C8F82C0BA544148E17AF4CDEE504152B81EA5C1BA5441F6285CFFC8EE5041333333B3C0BA54415C8FC245C6EE50415C8FC2D5C0BA54415C8FC245C0EE50410AD7A370C6BA54410AD7A3B0B0EE50410AD7A320D5BA544114AE47F1A7EE504185EB5188DFBA544152B81E05A6EE50413D0AD723E3BA544152B81EF5A3EE5041AE47E1BAE7BA54413D0AD773A2EE5041A4703D4AEEBA5441C3F5283CA0EE50419A999919F4BA54417B14AE07A0EE504185EB51F8F7BA54415C8FC295A1EE504114AE4701FBBA5441F6285CEFA5EE5041EC51B84E00BB5441666666E6A9EE5041EC51B89E07BB54417B14AE47AEEE50419A9999890CBB54418FC2F558BBEE50419A9999D915BB544133333353C0EE5041AE47E1FA1BBB54411F85EB31BFEE50413D0AD7231CBB54410AD7A3C0C5EE504114AE47D128BB5441295C8F02CCEE50416666667627BB54417B14AEA7CBEE504148E17A8426BB5441713D0AA7C7EE50417B14AED71BBB54411F85EB41C3EE504152B81EB514BB5441E17A141EBAEE5041A4703D3A0BBB5441B81E852BAFEE50415C8FC20502BB544133333323B0EE504152B81E6501BB5441E17A14BEAFEE504185EB512800BB54418FC2F538B0EE504114AE47F1FEBA5441C3F5280CA6EE504148E17AC4F6BA5441AE47E15AA9EE5041D7A3704DF0BA5441A4703D9AA9EE50410AD7A370EDBA54410AD7A380A9EE50415C8FC205EBBA5441A4703D8AAAEE504114AE4791E7BA5441AE47E11AADEE50417B14AEC7E2BA5441CDCCCC6CAFEE504100000050E0BA544152B81E85B3EE5041EC51B8EEDEBA54411F85EB61B6EE504152B81E35D9BA54410AD7A3B0BEEE504133333343DFBA544133333333C4EE5041A4703D9AD4BA5441C3F5283CC5EE504152B81EF5CEBA54410AD7A350C8EE5041000000B0CBBA544185EB5158DDEE504114AE4741D3BA5441A4703DCADEEE50417B14AE77D1BA544166666606E5EE5041AE47E12AD4BA5441D7A370EDF0EE504185EB5148D7BA5441E17A143EF9EE5041295C8FF2D5BA54413D0AD77308EF5041B81E850BD9BA5441333333D309EF5041295C8F52D8BA5441EC51B8DE0BEF504133333383D3BA5441CDCCCC8CF2EE5041D7A370CDCEBA54419A9999E9E4EE504100000040CBBA5441C3F5287CD6EE5041713D0AB7C3BA5441713D0A37DBEE504148E17A84BCBA544148E17A74DCEE50419A999909B6BA54410AD7A350DBEE5041E17A144EACBA544100000060D9EE5041AE47E1CAA6BA544185EB51A8D5EE504114AE47B1A1BA5441AE47E16AD2EE50416666666697BA5441333333C3DCEE5041D7A3706D95BA544114AE4791E4EE5041333333E392BA5441295C8FC2F6EE50419A9999598CBA54410103000000010000001500000066666646B8EE5041295C8F12A0BA54418FC2F5E8C0EE5041C3F5289CA7BA54418FC2F5E8C4EE50410AD7A320ADBA5441B81E850BC9EE5041D7A3702DABBA5441713D0AF7C0EE5041295C8FC2A0BA5441666666F6BAEE5041666666E69CBA544152B81E65B8EE50416666664698BA5441E17A143EB7EE504152B81E1589BA5441F6285CDFB7EE5041CDCCCC0C83BA544148E17A34B8EE504152B81ED57FBA5441A4703D0AB5EE50419A99997971BA54411F85EB91B2EE5041000000606BBA5441E17A142EAFEE50415C8FC29564BA5441666666C6ABEE5041AE47E13A5FBA5441D7A3701DA8EE5041CDCCCCEC60BA544114AE47A1AAEE50410AD7A36065BA54418FC2F5B8B1EE50411F85EB6179BA5441295C8FE2B2EE50411F85EBF17DBA5441C3F5289CB4EE5041713D0A1798BA5441CDCCCCFCB4EE5041CDCCCCBC9BBA544166666646B8EE5041295C8F12A0BA544101030000000100000013000000295C8F72C6ED504185EB51985DBA5441C3F528BCC7ED50417B14AE775FBA54417B14AE67C9ED50410AD7A3F061BA544148E17AD4DCED504148E17A0451BA5441295C8F82DBED5041E17A14CE50BA5441AE47E1BADAED50419A9999D94FBA544148E17AA4E2ED50417B14AE5749BA5441333333C3E1ED5041713D0AF746BA5441EC51B8CEE0ED50410AD7A36044BA54418FC2F558F0ED50410000008039BA5441B81E852BFBED50410AD7A3A032BA54413333334312EE5041F6285CFF22BA5441A4703D9A02EE5041D7A370ED28BA5441AE47E1CAECED5041B81E854B2FBA544185EB5108E1ED50419A99991934BA54418FC2F518D7ED50410AD7A3C03DBA54419A999989CDED50410000000049BA5441E17A14CEC1ED504152B81ED556BA5441295C8F72C6ED504185EB51985DBA54410103000000010000002B000000AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA5441010300000001000000100000005C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544185EB5108A9EE5041D7A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000EA535108A9EE5041A4F06FCD77BA5441C87C6D58A7EE5041F61777E278BA54413A1E29CCA5EE5041EC3FA4E079BA5441B81E852BABEE5041D7A370CD87BA54413B912AC7ABEE50417860028D8BBA54414B9BE2BAACEE50412984866B91BA5441343CECA1AEEE504183FA980998BA5441F6B37B94B1EE5041EBC03DFA9EBA54413BF01E45B4EE5041A8FA5BBFA1BA54412164FF0FB7EE5041328EC125A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA5441F5463002AFEE50417CB71EA675BA54418B90C2B5ABEE50418A4501206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544143FCAFE0AAEE50411B5CE62475BA5441CD22CE13A9EE504124ABE4BC77BA5441EA535108A9EE5041A4F06FCD77BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 357887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441CDCCCC9C6DEE5041F6285CFF04BA5441D7A370FD66EE5041D7A3702DFBB954415C8FC2B55FEE50410AD7A3E0FDB954410AD7A3905DEE5041295C8FC2F9B9544114AE47B162EE504185EB5188F1B95441CDCCCCCC5FEE5041F6285CAFEEB95441295C8F725BEE504152B81E75ECB954410AD7A37058EE50413D0AD7C3EBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB95441295C8F5249EE504100000000F0B95441CDCCCC2C45EE5041E17A146EE9B9544152B81E553CEE5041CDCCCCCCF1B95441AE47E1AA37EE5041C3F5289CF5B95441000000902DEE5041F6285C9FFCB95441333333130EEE50410AD7A3F00FBA5441E17A146EFCED5041D7A370DD1BBA5441B81E857BEAED50411F85EB712ABA5441CDCCCC4CE6ED50417B14AEB72EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA5441713D0A5718EE5041C3F528BC1EBA5441E17A14CE21EE50410AD7A3801FBA5441EC51B8AE2EEE50417B14AED717BA54416666662631EE5041D7A3704D17BA54413D0AD7733AEE504185EB51D811BA54419A99998938EE50413D0AD7430EBA54419A9999F941EE50418FC2F53809BA5441EC51B80E4AEE50410000007004BA5441A4703DFA52EE5041E17A146E00BA544101030000000100000051000000295C8FC2F6EE50419A9999598CBA5441B81E853BF8EE5041B81E85EB88BA5441713D0A87F8EE50413333335386BA5441A4703D5AEDEE50410AD7A39086BA544185EB51C8DEEE50413333330385BA5441295C8FE2DCEE5041F6285C3F84BA544148E17A34DCEE50415C8FC2958BBA5441295C8F22DCEE5041713D0A978CBA54419A9999E9D3EE50419A9999D98CBA54415C8FC225CDEE50417B14AE778EBA5441F6285C1FCBEE5041CDCCCCEC8FBA54410AD7A380C9EE5041CDCCCC2C92BA54410AD7A3F0C8EE50411F85EB1195BA544114AE4771CAEE5041713D0AD79DBA5441E17A14EECAEE5041F6285CAFA0BA5441A4703D1ACDEE5041AE47E1BAA5BA54417B14AE77D0EE50415C8FC225AABA5441C3F528BCD2EE504100000020B0BA544166666636D3EE504100000040B6BA5441A4703D7ACEEE5041295C8F82C0BA544148E17AF4CDEE504152B81EA5C1BA5441F6285CFFC8EE5041333333B3C0BA54415C8FC245C6EE50415C8FC2D5C0BA54415C8FC245C0EE50410AD7A370C6BA54410AD7A3B0B0EE50410AD7A320D5BA544114AE47F1A7EE504185EB5188DFBA544152B81E05A6EE50413D0AD723E3BA544152B81EF5A3EE5041AE47E1BAE7BA54413D0AD773A2EE5041A4703D4AEEBA5441C3F5283CA0EE50419A999919F4BA54417B14AE07A0EE504185EB51F8F7BA54415C8FC295A1EE504114AE4701FBBA5441F6285CEFA5EE5041EC51B84E00BB5441666666E6A9EE5041EC51B89E07BB54417B14AE47AEEE50419A9999890CBB54418FC2F558BBEE50419A9999D915BB544133333353C0EE5041AE47E1FA1BBB54411F85EB31BFEE50413D0AD7231CBB54410AD7A3C0C5EE504114AE47D128BB5441295C8F02CCEE50416666667627BB54417B14AEA7CBEE504148E17A8426BB5441713D0AA7C7EE50417B14AED71BBB54411F85EB41C3EE504152B81EB514BB5441E17A141EBAEE5041A4703D3A0BBB5441B81E852BAFEE50415C8FC20502BB544133333323B0EE504152B81E6501BB5441E17A14BEAFEE504185EB512800BB54418FC2F538B0EE504114AE47F1FEBA5441C3F5280CA6EE504148E17AC4F6BA5441AE47E15AA9EE5041D7A3704DF0BA5441A4703D9AA9EE50410AD7A370EDBA54410AD7A380A9EE50415C8FC205EBBA5441A4703D8AAAEE504114AE4791E7BA5441AE47E11AADEE50417B14AEC7E2BA5441CDCCCC6CAFEE504100000050E0BA544152B81E85B3EE5041EC51B8EEDEBA54411F85EB61B6EE504152B81E35D9BA54410AD7A3B0BEEE504133333343DFBA544133333333C4EE5041A4703D9AD4BA5441C3F5283CC5EE504152B81EF5CEBA54410AD7A350C8EE5041000000B0CBBA544185EB5158DDEE504114AE4741D3BA5441A4703DCADEEE50417B14AE77D1BA544166666606E5EE5041AE47E12AD4BA5441D7A370EDF0EE504185EB5148D7BA5441E17A143EF9EE5041295C8FF2D5BA54413D0AD77308EF5041B81E850BD9BA5441333333D309EF5041295C8F52D8BA5441EC51B8DE0BEF504133333383D3BA5441CDCCCC8CF2EE5041D7A370CDCEBA54419A9999E9E4EE504100000040CBBA5441C3F5287CD6EE5041713D0AB7C3BA5441713D0A37DBEE504148E17A84BCBA544148E17A74DCEE50419A999909B6BA54410AD7A350DBEE5041E17A144EACBA544100000060D9EE5041AE47E1CAA6BA544185EB51A8D5EE504114AE47B1A1BA5441AE47E16AD2EE50416666666697BA5441333333C3DCEE5041D7A3706D95BA544114AE4791E4EE5041333333E392BA5441295C8FC2F6EE50419A9999598CBA54410103000000010000001500000066666646B8EE5041295C8F12A0BA54418FC2F5E8C0EE5041C3F5289CA7BA54418FC2F5E8C4EE50410AD7A320ADBA5441B81E850BC9EE5041D7A3702DABBA5441713D0AF7C0EE5041295C8FC2A0BA5441666666F6BAEE5041666666E69CBA544152B81E65B8EE50416666664698BA5441E17A143EB7EE504152B81E1589BA5441F6285CDFB7EE5041CDCCCC0C83BA544148E17A34B8EE504152B81ED57FBA5441A4703D0AB5EE50419A99997971BA54411F85EB91B2EE5041000000606BBA5441E17A142EAFEE50415C8FC29564BA5441666666C6ABEE5041AE47E13A5FBA5441D7A3701DA8EE5041CDCCCCEC60BA544114AE47A1AAEE50410AD7A36065BA54418FC2F5B8B1EE50411F85EB6179BA5441295C8FE2B2EE50411F85EBF17DBA5441C3F5289CB4EE5041713D0A1798BA5441CDCCCCFCB4EE5041CDCCCCBC9BBA544166666646B8EE5041295C8F12A0BA544101030000000100000013000000295C8F72C6ED504185EB51985DBA5441C3F528BCC7ED50417B14AE775FBA54417B14AE67C9ED50410AD7A3F061BA544148E17AD4DCED504148E17A0451BA5441295C8F82DBED5041E17A14CE50BA5441AE47E1BADAED50419A9999D94FBA544148E17AA4E2ED50417B14AE5749BA5441333333C3E1ED5041713D0AF746BA5441EC51B8CEE0ED50410AD7A36044BA54418FC2F558F0ED50410000008039BA5441B81E852BFBED50410AD7A3A032BA54413333334312EE5041F6285CFF22BA5441A4703D9A02EE5041D7A370ED28BA5441AE47E1CAECED5041B81E854B2FBA544185EB5108E1ED50419A99991934BA54418FC2F518D7ED50410AD7A3C03DBA54419A999989CDED50410000000049BA5441E17A14CEC1ED504152B81ED556BA5441295C8F72C6ED504185EB51985DBA54410103000000010000002B000000AE47E16AA4EE50416666666671BA54418FC2F598A3EE5041EC51B82E74BA544114AE4711A5EE504114AE47F177BA544185EB5118A8EE50411F85EBB176BA544100000090A9EE5041A4703D9A74BA5441E17A144EAAEE50413333332372BA5441EC51B87EA9EE5041CDCCCCCC65BA5441B81E85EBA6EE5041F6285CDF61BA5441C3F528DCA2EE5041666666965EBA5441AE47E12A98EE5041A4703D5A56BA54411F85EB3191EE5041E17A14AE4EBA5441666666468DEE5041E17A146E46BA5441333333C38CEE50413D0AD78340BA544152B81EA58DEE50419A9999093BBA5441F6285C3F90EE5041A4703D3A35BA5441666666B695EE50418FC2F5782CBA5441CDCCCC9C99EE5041B81E85BB21BA5441CDCCCCEC99EE504185EB51A81DBA54419A9999E997EE5041A4703DAA18BA5441666666A694EE5041B81E85CB14BA5441713D0AB78DEE504148E17A3411BA5441D7A370FD80EE5041666666060DBA544185EB513880EE5041F6285CCF0FBA5441A4703DCA8BEE5041AE47E13A15BA54410000000091EE50415C8FC21518BA5441713D0AF793EE5041666666961ABA5441A4703DDA94EE5041713D0A171DBA544152B81E0595EE5041E17A14FE1FBA5441B81E857B94EE5041666666B622BA544148E17A4493EE5041713D0A0725BA5441D7A370CD90EE5041CDCCCC8C28BA5441B81E85EB7FEE5041B81E857B39BA5441E17A141E80EE504114AE47813EBA5441B81E85CB82EE504185EB51D844BA54416666666684EE504152B81E5545BA5441CDCCCC3C88EE5041713D0AE749BA54415C8FC24588EE5041333333434EBA544114AE47018CEE5041000000D051BA54410000002092EE50413D0AD7C356BA54417B14AEB799EE5041713D0AF75DBA54410AD7A3509FEE5041F6285C5F65BA5441AE47E10AA4EE504114AE47A16EBA5441AE47E16AA4EE50416666666671BA5441010300000001000000100000005C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441333333E3AAEE504114AE472175BA544185EB5108A9EE5041D7A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441
+</a>
+
+<b>
+01060000000100000001030000000100000061000000241F85EB71EE504123F628AC09BA5441339BA70671EE504122CEC4B308BA544150B87A0371EE5041059152B008BA544118CDCC9C6DEE504197295CFF04BA5441254F24226DEE50418DC47A4904BA544166619EB66BEE50416C55702E02BA5441C978DFCB6AEE5041AF2D5AD200BA5441784A41AF69EE5041F208F04C00BA5441EA59525768EE504108E2A11600BA54416A9BCB4767EE504170313519FFB95441DCAADCEF65EE50417AF1B2BEFEB9544163939F6164EE5041FC8BE22DFEB95441D9149BAC63EE5041F819F88AFDB954414F9696F762EE50416182BFB1FCB9544175C762F662EE50412B22D6ABFCB9544167B90B1E60EE5041516BF6B9FDB954415C8FC2B55FEE50410AD7A3E0FDB95441AF3300995FEE504198336FA9FDB9544174D6A3905DEE5041BE5B8FC2F9B954418661553E61EE5041EAD088DBF3B954414F590B3361EE5041223DE0BFF3B95441534EE8B65FEE50418F179289F3B95441359161A75EEE504190DA06C5F1B954414B6A13715EEE50410E034C91F0B95441B060F0F45CEE504175125D39EFB95441A87C1BAF5BEE50410C6D0A4EEEB9544111BB40C05AEE504167BF89C1EDB954410B5C8F725BEE50414BB81E75ECB954418485031E5AEE504151E4B426ECB95441A1D7A37058EE5041930AD7C3EBB954410DAF9E2557EE5041D2A8C2D0EBB954415436522056EE5041CE9AF5DAEBB95441CDCCCC3C55EE50413D0AD7E3EBB9544152B81E7550EE50419A999989EDB954419965924B4DEE50415AC2FFA0EEB95441AA5C8F5249EE504196000000F0B95441D9CCCC2C45EE5041F47A146EE9B954414385382F44EE50415CF31B5EEAB9544152B81E553CEE5041CDCCCCCCF1B95441B67D92E839EE5041C42A9DC7F3B954414F48E1AA37EE50410EF6289CF5B95441F5FFFF8F2DEE504197295C9FFCB95441923233130EEE504180D7A3F00FBA5441427B146EFCED504163A470DD1BBA5441A5347146EBED5041FA7B12CD29BA5441B81E857BEAED50411F85EB712ABA5441DFCCCC4CE6ED50416914AEB72EBA54415330B417E8ED5041E79A38062EBA54413D0AD703ECED50411F85EB812CBA5441E17A149E01EE5041666666F625BA54417B14AE6716EE5041F6285CCF1DBA544163D8B21317EE5041AD5397211EBA5441303D0A5718EE50414CF528BC1EBA54413A2B8ADF1CEE5041904A431A1FBA5441E17A14CE21EE50410AD7A3801FBA54416F75CE1327EE5041762FC65D1CBA5441970A229725EE5041D1CCD18015BA5441462BF1222EEE50411C24654E10BA544167E2A9F836EE504197BFABCC08BA54410BE8D39739EE50410CC074B30DBA5441FA9D0CCF3BEE50411B1063840CBA5441690177DD49EE504100F5F07804BA5441111B3D9F4FEE5041AD2F01F001BA54410EA3457B50EE5041CE64268D01BA54417657D5FE51EE504105A007DF00BA5441A6B22AFF51EE5041186DC0DD00BA544198BD4D7B53EE504108E2A11600BA5441F4CCB99254EE50416F1AA80704BA54419A9999B954EE5041F6285C5F04BA5441894B72AC54EE5041D771896404BA5441A0A122C154EE5041921A3FAF04BA5441F443597953EE50417D4F78D005BA54418A85EBE161EE504121295C2F0BBA54419AE7ABE96BEE50414B1E705E14BA54410678BBCB6CEE5041519AD1AC13BA5441FCB73D266DEE5041C71BCDF712BA54410678BBCB6CEE5041D510AA7B11BA54410AEAA56E6DEE5041BBC50D0F11BA5441195C90116EEE5041BDDE413311BA544197C160A26EEE5041475D46E811BA5441FE4D7F696FEE5041CD6960FA11BA54411F64BCF770EE5041475D46E811BA544188090FE371EE50415B5A4F5213BA54410FD99D3070EE50415FCC39F513BA544180253A9D70EE50415DF0909515BA54418201E3FC6EEE5041543013F015BA54415573B1F16EEE50412E6F2F1816BA54411D5B8F827DEE5041F09999A91ABA5441A2F0CEB782EE504188C824F718BA5441CBD4BC1984EE5041EAACCF8318BA5441BB9ADB2C84EE504149B8F16318BA5441E63AF24F84EE5041698B257218BA54417B14AE578BEE50417B14AE2716BA544115A95B3586EE50417E841E3714BA5441545C8FE283EE50419C66665613BA54415E0AD70379EE5041B43333430EBA5441241F85EB71EE504123F628AC09BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712165 - 54011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000032FCA0B07FAC50419E0B4F473A5955414A4B2D377FAC5041FB20DED83759554105A17B207FAC504157988F6437595541A58BA61B7FAC5041CC8ACB4B37595541327903047FAC50414BCBAB7E325955415BC3CC027FAC504199DB8E3F3259554196FA9D347FAC50415991329E2C5955415FE8F2027FAC5041B05BCC9D2B595541A1A7A5FE7EAC50418A61BF8A2B595541D723B84D7FAC50414A7185C526595541184E81567FAC5041A95329B52559554184295A5B7BAC5041C3B428BF245955412F9234C779AC504145C3CE0B27595541B2D5CF4978AC5041749B7D83295955416D08931476AC5041BF0DEC452D5955418F207F4B74AC50416CEB282530595541B1DBB61774AC5041A041FF1A3059554165D4AEE370AC50411B86E6852F595541F6285C0F6EAC50411F85EBB13B595541EC51B8BE6CAC50410AD7A3F041595541F6285C5F6AAC50417B14AE374D595541CDCCCCBC63AC5041295C8FE2685955410AD7A38066AC5041EC51B8EE6859554114AE470169AC504152B81E156859554148E17AC46AAC50418FC2F598665955413D0AD7536FAC504114AE47C162595541666666767AAC50413333336356595541666666067DAC504185EB51F8515955418FC2F5E87DAC50410AD7A370505955413B1C5A4D7FAC5041D0CE3893485955411B75E7977FAC504118D0A75746595541FCCD74E27FAC5041B24C7A8E42595541FCCD74E27FAC50419DE490C23D5955418246A6F47FAC5041D0F35B773B59554132FCA0B07FAC50419E0B4F473A595541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E2B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B413465955411A75E7977FAC504113D0A7574659554119D594837FAC5041E79A76F346595541B1EC177F7FAC50416484C362475955419E3952577FAC50415598CA4648595541361C5A4D7FAC5041D4CE38934859554140A9B0277FAC5041EAACFD6749595541B13B781A7FAC5041DEF3EEC7495955414F7FCE1D7EAC5041035E464C4F595541F5A505107EAC50415E6F4E9B4F5955418ACF632E7EAC50417AB4E8624F59554132B36B227FAC5041713A75084D5955416E9F1BAD7FAC504134EB12B24B59554150D6082581AC5041B333C80148595541066905F980AC5041E3A01014435955415AE324D680AC50417D75991140595541CF69126280AC5041736B4CB03B595541FC9991E27FAC5041FEB2FF7037595541B412655280AC504186A971292B59554160FF987C81AC5041C787B47B25595541434FF14583AC50414BAA592A2259554197D5077F83AC5041CB457EBF21595541C73129BC84AC50416D8D3B451F5955414DCA0FF97CAC5041EFF609C91E595541423EE8207BAC50415996FD761F595541368118FE78AC50419FB0E1F1205955419D8B187876AC5041E99F7B9926595541A4DC83D174AC5041A752989529595541F7D848CF71AC5041DC9F8BBE2B5955410FB8A3EF70AC504124C93F7B2F59554192207F4B74AC504171EB2825305955410B26021978AC5041F1A396D6295955413BFB0CAC79AC504156C3532827595541344883527BAC504105340FBB2459554188A8FE567BAC5041566320BC2459554190F2D55C7BAC504139C10EB32459554141E1ED977DAC5041BDEA7D45255955417E243E667FAC5041EE0691B3255955411F5717067FAC5041D9C2E06D2B595541A96D81047FAC5041930266872B595541F6A26E297FAC50416D42F5642C59554192FA9D347FAC50415891329E2C595541C4A555347FAC50414E535FA62C5955414599D3347FAC5041450853A92C595541221EA62D7FAC504178F3CE672D5955415DC3CC027FAC50419BDB8E3F32595541317903047FAC50414ACBAB7E3259554185CBB01B7FAC5041944DDC833259554185CBB01B7FAC50413412004C37595541474B2D377FAC5041FD20DED837595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712165 - 130851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000032FCA0B07FAC50419E0B4F473A5955414A4B2D377FAC5041FB20DED83759554105A17B207FAC504157988F6437595541A58BA61B7FAC5041CC8ACB4B37595541327903047FAC50414BCBAB7E325955415BC3CC027FAC504199DB8E3F3259554196FA9D347FAC50415991329E2C5955415FE8F2027FAC5041B05BCC9D2B595541A1A7A5FE7EAC50418A61BF8A2B595541D723B84D7FAC50414A7185C526595541184E81567FAC5041A95329B52559554184295A5B7BAC5041C3B428BF245955412F9234C779AC504145C3CE0B27595541B2D5CF4978AC5041749B7D83295955416D08931476AC5041BF0DEC452D5955418F207F4B74AC50416CEB282530595541B1DBB61774AC5041A041FF1A3059554165D4AEE370AC50411B86E6852F595541F6285C0F6EAC50411F85EBB13B595541EC51B8BE6CAC50410AD7A3F041595541F6285C5F6AAC50417B14AE374D595541CDCCCCBC63AC5041295C8FE2685955410AD7A38066AC5041EC51B8EE6859554114AE470169AC504152B81E156859554148E17AC46AAC50418FC2F598665955413D0AD7536FAC504114AE47C162595541666666767AAC50413333336356595541666666067DAC504185EB51F8515955418FC2F5E87DAC50410AD7A370505955413B1C5A4D7FAC5041D0CE3893485955411B75E7977FAC504118D0A75746595541FCCD74E27FAC5041B24C7A8E42595541FCCD74E27FAC50419DE490C23D5955418246A6F47FAC5041D0F35B773B59554132FCA0B07FAC50419E0B4F473A595541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B413465955411A75E7977FAC504113D0A7574659554119D594837FAC5041E79A76F346595541B1EC177F7FAC50416484C362475955419E3952577FAC50415598CA4648595541361C5A4D7FAC5041D4CE38934859554140A9B0277FAC5041EAACFD6749595541B13B781A7FAC5041DEF3EEC7495955414A7FCE1D7EAC5041085E464C4F595541F2A505107EAC5041596F4E9B4F59554188CF632E7EAC50417FB4E8624F59554137B36B227FAC5041743A75084D5955416E9F1BAD7FAC504134EB12B24B59554153D6082581AC5041B633C801485955410B6905F980AC5041E2A01014435955415AE324D680AC50417D75991140595541CF69126280AC5041736B4CB03B595541FC9991E27FAC5041FEB2FF7037595541B412655280AC504186A971292B59554160FF987C81AC5041C787B47B25595541434FF14583AC50414BAA592A2259554197D5077F83AC5041CB457EBF21595541C83129BC84AC50416A8D3B451F5955414DCA0FF97CAC5041EFF609C91E595541423EE8207BAC50415996FD761F595541368118FE78AC50419FB0E1F1205955419D8B187876AC5041E99F7B9926595541A4DC83D174AC5041A752989529595541F7D848CF71AC5041DC9F8BBE2B5955410BB8A3EF70AC504123C93F7B2F59554192207F4B74AC504171EB2825305955410B26021978AC5041F1A396D6295955413BFB0CAC79AC504156C3532827595541344883527BAC504105340FBB2459554187A8FE567BAC5041586320BC2459554190F2D55C7BAC504139C10EB32459554144E1ED977DAC5041BCEA7D45255955417E243E667FAC5041EE0691B3255955411F5717067FAC5041D9C2E06D2B595541A96D81047FAC5041930266872B595541F6A26E297FAC50416D42F5642C59554192FA9D347FAC50415891329E2C595541C4A555347FAC50414D535FA62C5955414599D3347FAC5041450853A92C595541221EA62D7FAC504178F3CE672D5955415DC3CC027FAC50419BDB8E3F32595541317903047FAC50414ACBAB7E3259554185CBB01B7FAC5041944DDC833259554185CBB01B7FAC50413412004C37595541474B2D377FAC5041FD20DED837595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712165 - 329977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000032FCA0B07FAC50419E0B4F473A5955414A4B2D377FAC5041FB20DED83759554105A17B207FAC504157988F6437595541A58BA61B7FAC5041CC8ACB4B37595541327903047FAC50414BCBAB7E325955415BC3CC027FAC504199DB8E3F3259554196FA9D347FAC50415991329E2C5955415FE8F2027FAC5041B05BCC9D2B595541A1A7A5FE7EAC50418A61BF8A2B595541D723B84D7FAC50414A7185C526595541184E81567FAC5041A95329B52559554184295A5B7BAC5041C3B428BF245955412F9234C779AC504145C3CE0B27595541B2D5CF4978AC5041749B7D83295955416D08931476AC5041BF0DEC452D5955418F207F4B74AC50416CEB282530595541B1DBB61774AC5041A041FF1A3059554165D4AEE370AC50411B86E6852F595541F6285C0F6EAC50411F85EBB13B595541EC51B8BE6CAC50410AD7A3F041595541F6285C5F6AAC50417B14AE374D595541CDCCCCBC63AC5041295C8FE2685955410AD7A38066AC5041EC51B8EE6859554114AE470169AC504152B81E156859554148E17AC46AAC50418FC2F598665955413D0AD7536FAC504114AE47C162595541666666767AAC50413333336356595541666666067DAC504185EB51F8515955418FC2F5E87DAC50410AD7A370505955413B1C5A4D7FAC5041D0CE3893485955411B75E7977FAC504118D0A75746595541FCCD74E27FAC5041B24C7A8E42595541FCCD74E27FAC50419DE490C23D5955418246A6F47FAC5041D0F35B773B59554132FCA0B07FAC50419E0B4F473A595541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B413465955411A75E7977FAC504113D0A7574659554119D594837FAC5041E79A76F346595541B1EC177F7FAC50416484C362475955419E3952577FAC50415598CA4648595541361C5A4D7FAC5041D4CE38934859554140A9B0277FAC5041EAACFD6749595541B13B781A7FAC5041DEF3EEC7495955414A7FCE1D7EAC5041085E464C4F595541F2A505107EAC5041596F4E9B4F59554188CF632E7EAC50417FB4E8624F59554137B36B227FAC5041743A75084D5955416E9F1BAD7FAC504134EB12B24B59554153D6082581AC5041B633C801485955410B6905F980AC5041E2A01014435955415AE324D680AC50417D75991140595541CF69126280AC5041736B4CB03B595541FC9991E27FAC5041FEB2FF7037595541B412655280AC504186A971292B59554160FF987C81AC5041C787B47B25595541434FF14583AC50414BAA592A2259554197D5077F83AC5041CB457EBF21595541C83129BC84AC50416A8D3B451F5955414DCA0FF97CAC5041EFF609C91E595541423EE8207BAC50415996FD761F595541368118FE78AC50419FB0E1F1205955419D8B187876AC5041E99F7B9926595541A4DC83D174AC5041A752989529595541F7D848CF71AC5041DC9F8BBE2B5955410BB8A3EF70AC504123C93F7B2F59554192207F4B74AC504171EB2825305955410B26021978AC5041F1A396D6295955413BFB0CAC79AC504156C3532827595541344883527BAC504105340FBB2459554187A8FE567BAC5041586320BC2459554190F2D55C7BAC504139C10EB32459554144E1ED977DAC5041BCEA7D45255955417E243E667FAC5041EE0691B3255955411F5717067FAC5041D9C2E06D2B595541A96D81047FAC5041930266872B595541F6A26E297FAC50416D42F5642C59554192FA9D347FAC50415891329E2C595541C4A555347FAC50414D535FA62C5955414599D3347FAC5041450853A92C595541221EA62D7FAC504178F3CE672D5955415DC3CC027FAC50419BDB8E3F32595541317903047FAC50414ACBAB7E3259554185CBB01B7FAC5041944DDC833259554185CBB01B7FAC50413412004C37595541474B2D377FAC5041FD20DED837595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982641 - 200901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000020000000035194D797B05041A4825A4779495541B81E859B90B05041333333837B4955415C8FC20589B0504185EB5108864955410AD7A34089B050418FC2F588874955417B14AE478FB05041295C8FC28C4955418FC2F5C89AB05041F6285CFF95495541C3F5282CA1B05041A4703DEA994955413D0AD7E3B9B0504152B81EA5A74955418FC2F5A8C1B05041CDCCCCCC9849554148E17A14C9B05041EC51B89E8A49554152B81E55D1B05041A4703DDA7A495541EF27B2F8CCB050412E8E58317A495541EBE61759CAB0504157A60F6984495541704B9EF7C8B0504157A60F6984495541B37DE146C8B05041B2F2DECF784955414EB51BFFC3B05041E81A7B4278495541CB976D5EBDB05041C0FC85AC78495541AD428505BBB05041DA10D46578495541487ABFBDB6B05041526BB327774955415F4D73D7B3B05041022FC9FB774955414E02325BB1B05041F965BCBE7A495541AB48C363B0B0504156AC4DC77949554160898CB4AAB05041FBF307A076495541D0C14FF0A4B05041A57DA06175495541232A1B96A3B050410DDBEC91784955415D42FFAEADB050418ECA2FD37A4955411C31B445ADB050414CADEEDE7B495541F3958D0FADB050414C2A313C7C4955414D2378F1ACB05041E2F486B47C495541C045933EA4B05041D6DCDC5D7C495541C8E9205C9DB050417CD5C2407B495541035194D797B05041A4825A47794955410C000000B89B006CBAB05041000DE9A07B49554118DAF36CB7B05041E2128C587B495541EBD86C7BB7B0504130365EA679495541409F9540BAB05041123C015E794955416750400ABEB050418B386C8979495541F7F62B56C2B05041C62C261A7A495541599C90B0C6B050413C159A3B7B495541DF8B2E7BC7B0504149F4D5D07C4955411DA8D61FC6B0504117B769C17F49554103D667EBC3B050412396A556814955413B63B022BDB0504165DA3B0F7E495541B89B006CBAB05041000DE9A07B4955410B0000000FE422A6AAB050417FACAA4380495541BB31F1EAA6B0504146CCE7BC7E495541D1C77A01ACB05041BEC852E87E495541DA7EC882AFB0504192DBC2007E495541F45037B7B1B0504173CD6EAE7E495541F33C40ADB2B0504151972C48814955416D4DA2E2B1B050411E5AC0388449554115738213B0B050417748D71185495541DA7EC882AFB050413E68148B83495541739D7E0AAEB05041069C480E814955410FE422A6AAB050417FACAA43804955410800000034C059ABB8B050413189D8F581495541DDE539DCB6B0504109C436227F495541BCC3EE7FB8B0504146CCE7BC7E4955413F8B9E36BBB05041AEC1283F7F4955418222AF3EC0B05041AB993A2B8149554129349865BFB05041C77FA069824955413F8B9E36BBB05041A65D550D8449554134C059ABB8B050413189D8F581495541
+</a>
+
+<b>
+0106000000010000000103000000040000005B000000282A1B96A3B050410ADBEC917849554137F65DCBABB05041AB862E677A495541441153E6ACB050411B485FA67A4955416042FFAEADB0504193CA2FD37A4955415C00559DADB050413E3F1B007B4955412031B445ADB0504147ADEEDE7B4955418C0A2538ADB050410FC548F67B495541CD1E3E0FADB050412662CB597C495541ED19F5FFACB05041761A937A7C495541522378F1ACB05041E7F486B47C4955415D6828E5ACB05041DA4C0CB47C4955410470ECDCACB0504125FAB4C57C49554168C22F27AAB05041D7B3BA987C4955412319A9D3A7B05041EE988D817C495541C345933EA4B05041DBDCDC5D7C4955418B3DCD04A3B050411DF21A2B7C4955414FA591B6A1B050412C2233057C495541B326FAE9A0B050410045F1D37B49554180638B18A0B05041124B10B27B49554149ADD46B9EB050416A80B66C7B4955415FE57D379EB05041400D3F647B495541E22EDD319EB05041CAFE55637B4955418D1500319EB05041B13A32637B495541C5E9205C9DB050417DD5C2407B4955412F7AAB309CB0504149839DD57A495541055194D797B05041A3825A4779495541B81E859B90B05041333333837B4955413BA1033689B0504101DB64C585495541B534BB0889B0504107ECBA1B86495541A256F43A89B05041A589D16387495541315B8A3E89B05041BC963E7B874955410C2A55338AB050412F33575B884955417B870BFC8CB05041B1A129C58A4955419810090B8EB050414CCA12B08B4955417B14AE478FB05041295C8FC28C4955413715E28B90B0504104D4DDC68D495541D3E3564795B05041901C8F939149554135413E4496B0504158529E5E924955411BB6D48E9AB05041579F25D095495541AC042ED09CB05041E81DCD3D97495541C3F5282CA1B05041A4703DEA99495541468BA743B9B05041F400244CA74955419A8D9BDFB9B05041346F9897A7495541FB69E89BBCB05041F6C23E73A2495541926D4191C1B0504120AC16FA984955412D711603C2B0504110B98F20984955413A37F6E9C2B050417562596796495541919C11A8C4B05041AFD8D0129349554148E17A14C9B05041EC51B89E8A4955413E60084FC9B050416DE4D82E8A49554152B81E55D1B05041A4703DDA7A495541D3E40C2ECEB05041E63C25607A4955411F048F29CEB05041D1DD01647A49554196DF63DBCDB05041A7F8A3537A495541DCD7EE0ECDB05041A1C0B5347A4955413372F1ABCBB05041579554417F495541705E5278CBB05041D4D4610A80495541C3F5152ACBB050419B36173B81495541E7E61759CAB050415BA60F6984495541E4E8A117CAB050415BA60F6984495541343CBD37C9B050415BA60F6984495541704B9EF7C8B050415BA60F6984495541B43333F0C8B050416DE46EEC834955412273EDEDC8B05041707441C683495541A32076ECC8B05041800AA0AD834955411DBB685FC8B05041A42DF26B7A49554130EE015DC8B05041AF8799437A495541392E5047C8B05041E9DDB5F478495541A2AE2457C4B050410C1AD74D78495541E34DCF50C4B0504146E4054D78495541742E7642C4B05041BCF02B4B78495541B06C57E3BEB05041755F379478495541C9976D5EBDB05041C4FC85AC78495541AA428505BBB05041D910D46578495541497ABFBDB6B05041526BB3277749554159B93B57B5B05041B934228E77495541C352D7D4B3B0504188A941057849554144764EB8B1B050415A7347577A4955415102325BB1B05041F765BCBE7A495541AA48C363B0B050415BAC4DC779495541DFCF60C2AEB0504186EDC2DF7849554135E0F7A5AEB05041DF4D00D078495541C83BEC69AEB050411EF7B0AE784955419844F843AEB050417115A399784955412EC0FD3DAEB05041890952967849554103E24A51ADB0504130590313784955410F58EA7AACB0504166A7169C7749554131BC42C0AAB05041313087A67649554191819F39AAB05041E383848576495541D4C14FF0A4B05041A47DA06175495541282A1B96A3B050410ADBEC91784955410C000000BC9B006CBAB05041FF0CE9A07B49554117DAF36CB7B05041DE128C587B495541E7D86C7BB7B050412C365EA679495541449F9540BAB05041153C015E794955416850400ABEB050418D386C8979495541F4F62B56C2B05041C52C261A7A4955415A9C90B0C6B0504140159A3B7B495541E48B2E7BC7B0504149F4D5D07C49554118A8D61FC6B0504113B769C17F49554108D667EBC3B050412796A556814955413F63B022BDB0504161DA3B0F7E495541BC9B006CBAB05041FF0CE9A07B4955410B00000010E422A6AAB050417CACAA4380495541BC31F1EAA6B0504142CCE7BC7E495541D2C77A01ACB05041BAC852E87E495541DF7EC882AFB0504192DBC2007E495541EF5037B7B1B0504173CD6EAE7E495541F13C40ADB2B050414D972C4881495541724DA2E2B1B05041235AC0388449554117738213B0B050417C48D71185495541DF7EC882AFB050414268148B83495541759D7E0AAEB05041069C480E8149554110E422A6AAB050417CACAA43804955410800000030C059ABB8B050412E89D8F581495541E0E539DCB6B050410CC436227F495541B8C3EE7FB8B0504142CCE7BC7E4955413B8B9E36BBB05041ABC1283F7F4955418222AF3EC0B05041AF993A2B8149554129349865BFB05041C87FA069824955413B8B9E36BBB05041AB5D550D8449554130C059ABB8B050412E89D8F581495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982641 - 419093
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000020000000035194D797B05041A4825A4779495541B81E859B90B05041333333837B4955415C8FC20589B0504185EB5108864955410AD7A34089B050418FC2F588874955417B14AE478FB05041295C8FC28C4955418FC2F5C89AB05041F6285CFF95495541C3F5282CA1B05041A4703DEA994955413D0AD7E3B9B0504152B81EA5A74955418FC2F5A8C1B05041CDCCCCCC9849554148E17A14C9B05041EC51B89E8A49554152B81E55D1B05041A4703DDA7A495541EF27B2F8CCB050412E8E58317A495541EBE61759CAB0504157A60F6984495541704B9EF7C8B0504157A60F6984495541B37DE146C8B05041B2F2DECF784955414EB51BFFC3B05041E81A7B4278495541CB976D5EBDB05041C0FC85AC78495541AD428505BBB05041DA10D46578495541487ABFBDB6B05041526BB327774955415F4D73D7B3B05041022FC9FB774955414E02325BB1B05041F965BCBE7A495541AB48C363B0B0504156AC4DC77949554160898CB4AAB05041FBF307A076495541D0C14FF0A4B05041A57DA06175495541232A1B96A3B050410DDBEC91784955415D42FFAEADB050418ECA2FD37A4955411C31B445ADB050414CADEEDE7B495541F3958D0FADB050414C2A313C7C4955414D2378F1ACB05041E2F486B47C495541C045933EA4B05041D6DCDC5D7C495541C8E9205C9DB050417CD5C2407B495541035194D797B05041A4825A47794955410C000000B89B006CBAB05041000DE9A07B49554118DAF36CB7B05041E2128C587B495541EBD86C7BB7B0504130365EA679495541409F9540BAB05041123C015E794955416750400ABEB050418B386C8979495541F7F62B56C2B05041C62C261A7A495541599C90B0C6B050413C159A3B7B495541DF8B2E7BC7B0504149F4D5D07C4955411DA8D61FC6B0504117B769C17F49554103D667EBC3B050412396A556814955413B63B022BDB0504165DA3B0F7E495541B89B006CBAB05041000DE9A07B4955410B0000000FE422A6AAB050417FACAA4380495541BB31F1EAA6B0504146CCE7BC7E495541D1C77A01ACB05041BEC852E87E495541DA7EC882AFB0504192DBC2007E495541F45037B7B1B0504173CD6EAE7E495541F33C40ADB2B0504151972C48814955416D4DA2E2B1B050411E5AC0388449554115738213B0B050417748D71185495541DA7EC882AFB050413E68148B83495541739D7E0AAEB05041069C480E814955410FE422A6AAB050417FACAA43804955410800000034C059ABB8B050413189D8F581495541DDE539DCB6B0504109C436227F495541BCC3EE7FB8B0504146CCE7BC7E4955413F8B9E36BBB05041AEC1283F7F4955418222AF3EC0B05041AB993A2B8149554129349865BFB05041C77FA069824955413F8B9E36BBB05041A65D550D8449554134C059ABB8B050413189D8F581495541
+</a>
+
+<b>
+0106000000010000000103000000040000005B000000282A1B96A3B050410ADBEC917849554137F65DCBABB05041AB862E677A495541441153E6ACB050411B485FA67A4955416042FFAEADB0504193CA2FD37A4955415C00559DADB050413E3F1B007B4955412031B445ADB0504147ADEEDE7B4955418C0A2538ADB050410FC548F67B495541CD1E3E0FADB050412662CB597C495541ED19F5FFACB05041761A937A7C495541522378F1ACB05041E7F486B47C4955415D6828E5ACB05041DA4C0CB47C4955410470ECDCACB0504125FAB4C57C49554168C22F27AAB05041D7B3BA987C4955412319A9D3A7B05041EE988D817C495541C345933EA4B05041DBDCDC5D7C4955418B3DCD04A3B050411DF21A2B7C4955414FA591B6A1B050412C2233057C495541B326FAE9A0B050410045F1D37B49554180638B18A0B05041124B10B27B49554149ADD46B9EB050416A80B66C7B4955415FE57D379EB05041400D3F647B495541E22EDD319EB05041CAFE55637B4955418D1500319EB05041B13A32637B495541C5E9205C9DB050417DD5C2407B4955412F7AAB309CB0504149839DD57A495541055194D797B05041A3825A4779495541B81E859B90B05041333333837B4955413BA1033689B0504101DB64C585495541B534BB0889B0504107ECBA1B86495541A256F43A89B05041A589D16387495541315B8A3E89B05041BC963E7B874955410C2A55338AB050412F33575B884955417B870BFC8CB05041B1A129C58A4955419810090B8EB050414CCA12B08B4955417B14AE478FB05041295C8FC28C4955413715E28B90B0504104D4DDC68D495541D3E3564795B05041901C8F939149554135413E4496B0504158529E5E924955411BB6D48E9AB05041579F25D095495541AC042ED09CB05041E81DCD3D97495541C3F5282CA1B05041A4703DEA99495541468BA743B9B05041F400244CA74955419A8D9BDFB9B05041346F9897A7495541FB69E89BBCB05041F6C23E73A2495541926D4191C1B0504120AC16FA984955412D711603C2B0504110B98F20984955413A37F6E9C2B050417562596796495541919C11A8C4B05041AFD8D0129349554148E17A14C9B05041EC51B89E8A4955413E60084FC9B050416DE4D82E8A49554152B81E55D1B05041A4703DDA7A495541D3E40C2ECEB05041E63C25607A4955411F048F29CEB05041D1DD01647A49554196DF63DBCDB05041A7F8A3537A495541DCD7EE0ECDB05041A1C0B5347A4955413372F1ABCBB05041579554417F495541705E5278CBB05041D4D4610A80495541C3F5152ACBB050419B36173B81495541E7E61759CAB050415BA60F6984495541E4E8A117CAB050415BA60F6984495541343CBD37C9B050415BA60F6984495541704B9EF7C8B050415BA60F6984495541B43333F0C8B050416DE46EEC834955412273EDEDC8B05041707441C683495541A32076ECC8B05041800AA0AD834955411DBB685FC8B05041A42DF26B7A49554130EE015DC8B05041AF8799437A495541392E5047C8B05041E9DDB5F478495541A2AE2457C4B050410C1AD74D78495541E34DCF50C4B0504146E4054D78495541742E7642C4B05041BCF02B4B78495541B06C57E3BEB05041755F379478495541C9976D5EBDB05041C4FC85AC78495541AA428505BBB05041D910D46578495541497ABFBDB6B05041526BB3277749554159B93B57B5B05041B934228E77495541C352D7D4B3B0504188A941057849554144764EB8B1B050415A7347577A4955415102325BB1B05041F765BCBE7A495541AA48C363B0B050415BAC4DC779495541DFCF60C2AEB0504186EDC2DF7849554135E0F7A5AEB05041DF4D00D078495541C83BEC69AEB050411EF7B0AE784955419844F843AEB050417115A399784955412EC0FD3DAEB05041890952967849554103E24A51ADB0504130590313784955410F58EA7AACB0504166A7169C7749554131BC42C0AAB05041313087A67649554191819F39AAB05041E383848576495541D4C14FF0A4B05041A47DA06175495541282A1B96A3B050410ADBEC91784955410C000000BC9B006CBAB05041FF0CE9A07B49554117DAF36CB7B05041DE128C587B495541E7D86C7BB7B050412C365EA679495541449F9540BAB05041153C015E794955416850400ABEB050418D386C8979495541F4F62B56C2B05041C52C261A7A4955415A9C90B0C6B0504140159A3B7B495541E48B2E7BC7B0504149F4D5D07C49554118A8D61FC6B0504113B769C17F49554108D667EBC3B050412796A556814955413F63B022BDB0504161DA3B0F7E495541BC9B006CBAB05041FF0CE9A07B4955410B00000010E422A6AAB050417CACAA4380495541BC31F1EAA6B0504142CCE7BC7E495541D2C77A01ACB05041BAC852E87E495541DF7EC882AFB0504192DBC2007E495541EF5037B7B1B0504173CD6EAE7E495541F13C40ADB2B050414D972C4881495541724DA2E2B1B05041235AC0388449554117738213B0B050417C48D71185495541DF7EC882AFB050414268148B83495541759D7E0AAEB05041069C480E8149554110E422A6AAB050417CACAA43804955410800000030C059ABB8B050412E89D8F581495541E0E539DCB6B050410CC436227F495541B8C3EE7FB8B0504142CCE7BC7E4955413B8B9E36BBB05041ABC1283F7F4955418222AF3EC0B05041AF993A2B8149554129349865BFB05041C87FA069824955413B8B9E36BBB05041AB5D550D8449554130C059ABB8B050412E89D8F581495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982142 - 5319077
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B000000D7A3703D73EB50411F85EBE13056544114AE471174EB5041C3F5286C3C565441D7A370CD7AEB50419A9999693C565441AE47E17A87EB50415C8FC2253C565441295C8F9292EB50411F85EBE13B565441E17A144E99EB50417B14AE173B565441295C8F429FEB5041AE47E15A3A565441D7A370FD82EB50413D0AD763E55554410AD7A3106BEB504100000080E7555441713D0A576FEB5041000000600B565441D7A3703D73EB50411F85EBE130565441
+</a>
+
+<b>
+010600000001000000010300000001000000070000006A4619266DEB50412D93AFFCF8555441713D0A576FEB5041000000600B565441D7A3703D73EB50411F85EBE13056544114AE471174EB5041C3F5286C3C565441D7A370CD7AEB50419A9999693C5654413FBD4C3883EB5041A67C8E3C3C5654416A4619266DEB50412D93AFFCF8555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389384 - 186454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001200000000000050939C50410AD7A3803A225441CDCCCC0C929C50410AD7A3F03D225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A22544166666696939C5041EC51B8FE2E225441CDCCCC5C969C50415C8FC2B52C2254410AD7A390969C5041CDCCCCBC282254410AD7A320879C50415C8FC2E520225441295C8FE2769C5041666666D6392254415C8FC245789C504152B81E753B225441000000A0799C504148E17AF43C22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441CDCCCC0C8B9C5041D7A370CD4B225441000000708F9C5041A4703D4A4D225441A4703D5A919C5041EC51B88E4A22544100000080929C50415C8FC2454422544100000050939C50410AD7A3803A225441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000D7A3705D859C504185EB51C847225441B50DEBC3879C504110DFB25949225441CDCCCC0C8B9C5041D7A370CD4B225441000000708F9C5041A4703D4A4D225441A4703D5A919C5041EC51B88E4A22544157D62A85929C504162F39F074422544144CB4888929C5041EAD324E24322544107031389929C5041653CA5D84322544168655889929C5041B7EA62D5432254413D88F789929C5041E75DE9CD4322544105973BCE929C504159F1BD2E3E225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A225441FE5D657E8E9C5041D7B1C00739225441FD38D0AC8E9C504174264EAC3822544159422EB58E9C5041B519D29B38225441991C70D98E9C50410BD2635438225441BE812E3C849C5041B0BA1F4D352254410AD7A3A0839C5041B81E853B362254410AD7A390819C50418FC2F538392254410AD7A300809C5041713D0A173B225441E08C71AF7D9C5041A4AF77F23D22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389384 - 233496
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001200000000000050939C50410AD7A3803A225441CDCCCC0C929C50410AD7A3F03D225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A22544166666696939C5041EC51B8FE2E225441CDCCCC5C969C50415C8FC2B52C2254410AD7A390969C5041CDCCCCBC282254410AD7A320879C50415C8FC2E520225441295C8FE2769C5041666666D6392254415C8FC245789C504152B81E753B225441000000A0799C504148E17AF43C22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441CDCCCC0C8B9C5041D7A370CD4B225441000000708F9C5041A4703D4A4D225441A4703D5A919C5041EC51B88E4A22544100000080929C50415C8FC2454422544100000050939C50410AD7A3803A225441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000DDB71085879C504150ECC21821225441F1D35909819C504158F564EA2F22544198F90C04869C504172C28456322254411F85EBA18A9C5041333333A32B2254410D98F47D959C504171581C8D2C22544138FE3E5D969C50410E6702AD2C225441A5F46364969C5041BB1FDB202C2254419140EA64969C5041119790162C2254410A51362A969C5041FF8D05A6282254411D995EE6879C504103B219842122544170464BC9879C50416663693B212254410F112B96879C5041677C7221212254411E1EDB94879C504172DFC720212254415E5D9D91879C5041B27A221F21225441DDB71085879C504150ECC21821225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389384 - 261608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001200000000000050939C50410AD7A3803A225441CDCCCC0C929C50410AD7A3F03D225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A22544166666696939C5041EC51B8FE2E225441CDCCCC5C969C50415C8FC2B52C2254410AD7A390969C5041CDCCCCBC282254410AD7A320879C50415C8FC2E520225441295C8FE2769C5041666666D6392254415C8FC245789C504152B81E753B225441000000A0799C504148E17AF43C22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441CDCCCC0C8B9C5041D7A370CD4B225441000000708F9C5041A4703D4A4D225441A4703D5A919C5041EC51B88E4A22544100000080929C50415C8FC2454422544100000050939C50410AD7A3803A225441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000DDB71085879C504150ECC21821225441F1D35909819C504158F564EA2F22544198F90C04869C504172C28456322254411F85EBA18A9C5041333333A32B2254410D98F47D959C504171581C8D2C22544138FE3E5D969C50410E6702AD2C225441A5F46364969C5041BB1FDB202C2254419140EA64969C5041119790162C2254410A51362A969C5041FF8D05A6282254411D995EE6879C504103B219842122544170464BC9879C50416663693B212254410F112B96879C5041677C7221212254411E1EDB94879C504172DFC720212254415E5D9D91879C5041B27A221F21225441DDB71085879C504150ECC21821225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982150 - 587529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441E796FE8CC443514142248F630C6C5441909381F8C34351417C268DC60C6C5441996C2434BD435141A8457130126C5441AC59B5EAB94351415B56E216156C5441334B4267B7435141EC5B5D0E166C5441334B4267B7435141D464559A176C54415A7372C5B5435141175F0B99196C5441EC6FB3B3B143514124CF827B1A6C5441CCD7887DAF435141E569F59B126C544176184E63AF43514143D509A1126C5441EC51B87EAF43514148E17AF4126C5441920F814BA743514140B24632146C5441A6D9A7AEA34351413E5563E5146C5441C7A9525E9B435141EC5B5D0E166C5441B297DDC79C435141B57F3B421D6C5441713D0AF79C435141EC51B81E1E6C5441D75056029D435141BDFC6F6C1E6C5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441A4703D5A94435141F6285CAF1F6C5441B81E85AB9443514148E17AC4226C5441B81E853B95435141295C8FA2276C54419A99992996435141333333732E6C544152B81E55984351418FC2F5B8356C5441F6285C0F9A435141C3F5288C3B6C5441E17A149E9B435141C3F5287C406C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982150 - 1089297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441E796FE8CC443514142248F630C6C5441909381F8C34351417C268DC60C6C5441996C2434BD435141A8457130126C5441AC59B5EAB94351415B56E216156C5441334B4267B7435141EC5B5D0E166C5441334B4267B7435141D464559A176C54415A7372C5B5435141175F0B99196C5441EC6FB3B3B143514124CF827B1A6C5441CCD7887DAF435141E569F59B126C544176184E63AF43514143D509A1126C5441EC51B87EAF43514148E17AF4126C5441920F814BA743514140B24632146C5441A6D9A7AEA34351413E5563E5146C5441C7A9525E9B435141EC5B5D0E166C5441B297DDC79C435141B57F3B421D6C5441713D0AF79C435141EC51B81E1E6C5441D75056029D435141BDFC6F6C1E6C5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441A4703D5A94435141F6285CAF1F6C5441B81E85AB9443514148E17AC4226C5441B81E853B95435141295C8FA2276C54419A99992996435141333333732E6C544152B81E55984351418FC2F5B8356C5441F6285C0F9A435141C3F5288C3B6C5441E17A149E9B435141C3F5287C406C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982150 - 3894107
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441E796FE8CC443514142248F630C6C5441909381F8C34351417C268DC60C6C5441996C2434BD435141A8457130126C5441AC59B5EAB94351415B56E216156C5441334B4267B7435141EC5B5D0E166C5441334B4267B7435141D464559A176C54415A7372C5B5435141175F0B99196C5441EC6FB3B3B143514124CF827B1A6C5441CCD7887DAF435141E569F59B126C544176184E63AF43514143D509A1126C5441EC51B87EAF43514148E17AF4126C5441920F814BA743514140B24632146C5441A6D9A7AEA34351413E5563E5146C5441C7A9525E9B435141EC5B5D0E166C5441B297DDC79C435141B57F3B421D6C5441713D0AF79C435141EC51B81E1E6C5441D75056029D435141BDFC6F6C1E6C5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441A4703D5A94435141F6285CAF1F6C5441B81E85AB9443514148E17AC4226C5441B81E853B95435141295C8FA2276C54419A99992996435141333333732E6C544152B81E55984351418FC2F5B8356C5441F6285C0F9A435141C3F5288C3B6C5441E17A149E9B435141C3F5287C406C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5285098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541EA0F689288A25041646B49C6CF535541F37B93C786A250415F59AFCFD153554108EA319A83A2504150917FBED4535541187D85DF80A250414441BC00D853554126781E1F7FA250413136FC67DA535541408E9E507AA250410A864E93E15355415D5167A175A25041E97D821DE75355416D65743572A25041C795045AEB535541712B31A970A25041C69391BCEC535541B7FF126B65A250418BF6FE63F6535541BE7218FE63A250417D45D009F9535541D261701F60A250415A1175C3FD535541EC2B13CE5BA2504140C618C6025455411FA9577453A250410904D1FA0B54554144C14A434DA25041E39F00A9125455415705CDE247A25041C0B50F48185455418D465B5F3FA250418E03EFD520545541ABD447E43AA250417140268525545541B9D153C137A250416096D18828545541DFE9469031A250414A5929472E545541032288112AA2504119749FA6355455412246BCFE25A250410ADFD8C3395455413C5C3C3021A25041EEFD345E3E5455415AEC9B521BA25041C9E5418F445455416786C9F518A25041B2957ED14754554182B1D74015A250419668FDE84C545541867794B413A250418DFCD1B34E545541B16AD2100DA2504160276F6C55545541DAC7C80406A25041465DCCBD59545541EFEBFCF101A250413C70E7395C5455410753C166FEA15041255500485F545541107582B6FBA150411A511A0D6254554121EAFAE6F8A150410ABEC6C7645455415068C012F5A15041D911FF2D695455415A20C9CAF2A15041C2C13B706C545541673BB0BCEFA15041B6A6547E6F5455417FEE51B4EBA150419DF3B286735455418C887F57E9A150419270869A7554554196F4AA8CE7A15041779155D27854554198D84215E6A15041770E29E67A545541A3A5D9E6E4A150416F84229C7C545541A47270B8E3A1504164B78BCA7D545541AE5DE29EE2A150415E5B87EE7E545541B95F553CE1A150415570150880545541C827854DDEA150414D3079A382545541D99CFD7DDBA150413DD2012A85545541E00F0311DAA150412EC0673387545541F0389EBED7A1504123BC81F889545541F8C2A408D6A150410F1B7AF78B5455410F1368C6D2A15041FC8C8D729054554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541666666E6C7A15041AE47E1CAAA545541C22E0E6BB7A15041984B8F68A35455418AE3008CA3A15041DCD4A5939A545541B153681794A15041ED8ACF5993545541DFA2F80480A150419DAA6F528B5455419C3A288766A1504134D237498154554128452DDF56A15041C41AD7DD7B545541CC2A479A43A15041952E3BD976545541A4703DAA43A150410AD7A3F0785455416666660647A150418FC2F5388854554114AE470148A15041C3F5280C9154554152B81EC548A1504185EB512898545541AE47E1EA4EA15041D7A3704D97545541333333C35FA1504185EB51C895545541CDCCCC4C66A1504166666686965455413333334380A1504152B81E859A54554185EB51888EA15041E17A140E9D545541CDCCCCCC99A1504148E17A44A0545541CDCCCC4CAAA150419A999929A5545541AE47E1BAB5A15041EC51B85EA85455413D0AD7D3B3A150415C8FC2E5A954554185EB51A8B2A150415C8FC2D5AA545541CDCCCCBCB1A1504133333393AB545541000000A0B0A150417B14AE77AC54554114AE47A1ACA15041CDCCCCACAF5455413D0AD723ABA15041EC51B8DEB0545541C3F528ECA7A150413D0AD773B35455411F85EB21A5A1504114AE47B1B5545541B81E852BA3A1504148E17A44B7545541D7A3705D9FA15041295C8F52BA545541666666F69BA15041D7A3700DBD54554148E17A149AA150410AD7A390BE5455419A99998998A15041CDCCCCCCBF5455419A99997995A15041295C8F42C254554152B81E2594A150413D0AD753C354554114AE471192A15041EC51B8FEC454554114AE47818AA150410AD7A310CB54554148E17AD487A150415C8FC235CD5455410000008085A1504152B81E15CF54554152B81E0582A15041000000E0D1545541D7A370DD80A15041B81E85DBD2545541AE47E18A7CA15041B81E858BD6545541CDCCCCFC7AA15041EC51B8DED75455418FC2F55879A1504148E17A44D954554148E17AE476A15041CDCCCC5CDB5455418FC2F58875A1504152B81E85DC5455416666665674A15041AE47E18ADD545541A4703D3A72A15041713D0A57DF5455413D0AD77371A150410AD7A350E0545541EC51B82E6FA15041CDCCCC2CE3545541000000406DA15041B81E859BE55455419A9999296CA15041A4703DFAE6545541CDCCCCCC6AA1504114AE47B1E85455417B14AEB768A1504114AE4751EB545541D7A370ED64A15041713D0A17F0545541295C8FD263A15041B81E857BF15455419A99994962A15041AE47E16AF3545541295C8FF25EA1504114AE4791F754554152B81E855CA150418FC2F598FA5455417B14AEA759A15041A4703D2AFE5455417B14AEC758A150413D0AD733FF5455410AD7A35056A1504114AE472102555541295C8F2255A1504185EB5188035555413333337353A1504185EB518805555541B81E859B52A1504185EB51880655554152B81E9551A15041B81E85EB07555541B81E850B50A150413D0AD7230A555541F6285C4F4DA1504185EB51B80D555541EC51B82E4CA1504114AE47310F5555417B14AE774BA150410000001010555541D7A3702D48A150413D0AD71314555541C3F5284C44A15041F6285CCF185555411F85EBB142A15041295C8FC21A555541CDCCCC3C41A15041A4703D8A1C555541295C8FF23FA150418FC2F5B81D5555418FC2F5583DA15041B81E851B20555541AE47E18A3AA15041E17A14AE22555541EC51B84E38A15041AE47E1BA245555419A9999F936A150413D0AD7F325555541EC51B87E34A150413333330327555541713D0A3732A15041CDCCCCFC275555410AD7A3902EA15041A4703D3A29555541295C8F1228A150411F85EB7127555541E17A149E1EA15041AE47E13A255555419A9999C916A15041CDCCCC3C2355554152B81ED509A15041000000102055554114AE47B1FEA05041D7A3708D1D555541C3F5281CF8A050418FC2F5081C55554152B81EE5DCA0504185EB51F81555554152B81E85DBA0504185EB516821555541000000B0DEA05041AE47E1BA2255554148E17A64E0A050411F85EB4123555541295C8F42E3A0504148E17AF423555541E17A143EEAA050417B14AEB725555541B81E85CBF1A050413D0AD7C32755554185EB51F8F6A050418FC2F5182955554152B81E75FBA05041B81E854B2A5555411F85EB6106A15041713D0AC72C555541AE47E14A0DA1504152B81E552E555541A4703DAA14A1504100000030305555418FC2F50817A15041E17A146E305555418FC2F5B814A150415C8FC21531555541F6285CCF12A15041295C8FB231555541000000100DA1504185EB51A833555541CDCCCCEC04A15041F6285C2F36555541333333F302A1504152B81EF536555541EC51B8CE00A15041713D0AD73755554148E17A14FEA050410AD7A3A0385555410AD7A330FBA050419A99995939555541A4703D5AF8A050411F85EB013A555541F6285CEFF4A050418FC2F5D83A555541A4703DBAF0A05041295C8FD23B55554148E17A24E9A05041666666763D5555415C8FC2F5E4A05041333333733E5555410AD7A340E1A050411F85EB613F55554148E17A44DCA050418FC2F5E83F555541AE47E10ADEA0504133333373425555411F85EB71E2A0504114AE47C148555541666666A6E1A0504152B81E65495555415C8FC2F5E2A0504148E17A444B55554100000060E3A05041D7A370DD4B555541D7A3705D04A150418FC2F5087B5555410000002008A15041CDCCCC2C805555419A9999190CA1504152B81E2585555541E17A146E10A15041A4703D0A8A555541AE47E18A14A1504185EB51488E5555413D0AD75319A15041666666D692555541295C8F421FA1504185EB51E89755554185EB516827A150411F85EB219E55554114AE479130A15041A4703D0AA45555411F85EB013AA15041AE47E13AA95555418FC2F56841A15041333333F3AA555541B81E851B41A150418FC2F5D8A0555541666666C643A150411F85EB419C555541AE47E18A45A1504148E17A349555554185EB51B84CA150417B14AEC7925555413333331355A15041D7A370CD66555541295C8FF249A1504114AE478163555541666666563FA1504148E17A5460555541E17A145E34A15041666666465D555541C3F528FC33A150410000000058555541713D0A1726A15041C3F528BC545555417B14AE2713A15041D7A3705D5055554185EB5168EBA05041CDCCCC8C475555417B14AEC7ECA05041713D0A9746555541295C8F72F7A05041713D0A8743555541E17A147EF9A0504114AE47F1425555418FC2F588FFA0504152B81E35415555415C8FC2E502A15041EC51B83E40555541AE47E12A06A15041E17A144E3F555541AE47E11A09A15041666666763E555541E17A149E0FA1504185EB51983C555541CDCCCCFC11A15041A4703DEA3B555541C3F5286C14A15041713D0A373B555541CDCCCC1C1CA15041295C8F0239555541666666761CA1504148E17AE4385555413D0AD73328A150415C8FC2F53455554185EB511829A150411F85EBA1345555415C8FC2A53CA15041000000302E555541F6285C7F3DA1504148E17A542D5555411F85EB2141A150419A9999A9295555410AD7A31043A15041666666B62755554152B81E2545A15041D7A3709D25555541CDCCCC4C47A150410AD7A37023555541EC51B87E49A15041A4703D3A2155554185EB51884BA15041E17A14AE1E55554114AE47F14DA1504114AE47B11B555541C3F5281C4FA15041D7A3703D1A555541A4703D6A51A15041000000601755554148E17A0454A15041333333231455554148E17AA454A15041713D0A47135555411F85EBD155A150417B14AEA711555541666666F656A1504148E17A1410555541B81E855B5AA15041713D0A670B5555417B14AED75CA15041A4703DFA075555418FC2F5E85DA1504114AE47810655554185EB51E85EA150411F85EB21055555410AD7A3905FA15041A4703D3A04555541AE47E19A60A15041AE47E1CA025555419A99991961A15041C3F5281C025555419A99995968A15041C3F5282CFA545541AE47E11A69A1504185EB5158F9545541F5F4325E6CA15041538AA7EBF554554153556EE367A150419B8F8A7AFA54554177D7194A61A150417497E55DFF54554183256A6A5FA15041727E710901555541951B9CE95BA15041593588A90455554161C2474259A15041F80163E8075555418913CE1656A1504165B8AC350C555541074D7F6753A150414A8EE40A1055554179C1520A50A1504108FEB9A214555541295C8F624BA1504185EB51081A555541388237EB46A1504168A2BC3E1F555541EE699E7441A15041DEC2E3BC23555541E528428B3FA15041CD365A322555554184A216F838A150416891D06629555541163FBAD333A150413C3C7A7D2C555541CFEFA0B82CA15041FD602A9E2F555541C9E7D14821A150410A8F6E803155554132EF2BF71BA15041B1E9D69832555541FA0986DA14A15041B0B35B4B345555412369B75A09A15041B526A7C3375555418993FD6002A1504108EFE31C3A5555416A94629EFDA0504183B7CDF43B555541353B1830F8A05041DE1E464B3E555541FE04E12DF2A050417CBE81314055554174D60210EEA0504130760ED642555541915A6E04EBA05041639F1D404555554175A97668E9A050412C4BB0CF46555541B564005DE5A05041398210334A555541D04CC75BE3A0504146DB4AD14B55554143EBD9E7E2A050411099AE2B4B55554132723719E5A0504123068F6A49555541D68289B1E8A050415927F64846555541BEC85DA7EAA05041954D965D445555417F98CCD1EAA050414255D23B4455554133FB5D7CEDA05041D953BC3942555541D6FA4755EEA05041294C6D9A41555541DAF838CAF1A0504189D9E49A3F555541B75E343AF7A05041E1B1A19B3D55554179209349FEA0504156583AE93A555541D4EDB0B104A1504137A735543855554180E31F3709A15041F0777BC5365555412B240BA710A15041635107A034555541ED9A312416A15041D7E54AE932555541FC890A6319A1504178BBFB403255554104E7ABFA21A15041779BB9E630555541E8B495312CA15041D8C60A142F5555416732125D34A150410984A1402B5555414ACF17BB38A15041B913CFA728555541B54499503EA15041E9B51BF02455554172F8871244A150414B6714AB20555541A306703648A15041A2180D661C5555414C55777B4CA15041A808A8BD1755554148B3057650A15041CD94B5E7125555413AFA886753A150414CFF2F270F5555417DA1327155A150415FFFDEE20B5555412DB3A7FE56A15041E7B586A709555541A36212AC59A150414EFE384006555541828F22025FA150417A87BE04005555417A051CB860A1504181C5E7CBFE54554169115DD662A15041858BA43FFD545541579CE4A565A15041977F6321FB5455414B4C21E868A15041A8F4DB51F854554142AB19E76AA15041AED1997CF6545541433FEEB16CA15041B2E33373F45455412E87E5F96EA15041C605F5C2F15455411A63B10C73A15041DEA308A1EC545541060C14F175A15041F53FA9E1E8545541E501D5DD7CA15041288811BCE0545541A0C33A8488A15041777EB4CDD25455415D1D5B3093A15041A637AF9DCA5455415D1975F595A15041AD2B6E7FC854554147131C1D9AA15041BA1179A5C5545541C89ACDA4AEA150410C014259B7545541AE0507C2B2A150411F8DBB40B45455419BC3F7BFB6A1504137BFA3E9B05455418F29CA1CB9A150414ACA6382AE5455416BF3FB38BFA15041747337F9A65455416501B0F4BFA15041717A1157A754554167648E2EBFA15041728F9F70A854554187A13670B9A1504147508491AF545541A85D2563B4A1504120A4BCF7B3545541C3BF8217AFA150410D4BAC3EB8545541DC72240FABA15041FB0A10DABA545541119DB1D4A2A15041DE91B16EC05455413E3FABED9AA15041B5362E18C654554154FD0C7E94A15041AAC61CA8CA5455416708CD1692A150419CCB8368CC54554191325ADC89A150417EEF46C3D2545541BCF0BB6C83A150414DD5E056DA545541D85219217EA1504128BDED87E0545541F59428237AA15041116BB72CE5545541118DCD3F75A15041EF160E34EB54554128DF039B70A15041CDF74007F1545541D9A5FA856CA150414FC7E7C1F5545541713D0A976CA15041000000B0F5545541333333536EA15041E17A14DEF3545541F6285C5F70A150417B14AEB7F15455418FC2F55874A15041B81E858BED54554185EB51A875A15041B81E852BEC545541E17A142E77A15041295C8F92EA5455413D0AD76378A15041D7A3704DE9545541F6285C5F79A1504152B81E45E854554148E17A047CA15041EC51B87EE55455418FC2F5387EA15041EC51B82EE3545541713D0AB780A150410AD7A390E05455415C8FC21582A150410AD7A320DF545541C3F5283C83A15041B81E85EBDD5455410000005085A15041D7A370BDDB54554114AE47F186A150417B14AE07DA545541D7A370DD87A15041F6285C0FD9545541F6285C4F8AA15041EC51B87ED65455418FC2F5388CA150415C8FC235D55455419A99992991A15041333333E3D1545541F6285CCF94A15041F6285C6FCF545541CDCCCC4C97A15041295C8FC2CD545541CDCCCC6C9DA1504148E17AA4C954554152B81E159FA15041713D0A87C854554166666656A1A15041295C8F02C754554114AE4701A3A15041333333E3C55455411F85EB61A7A150411F85EBF1C25455415C8FC2A5A8A1504185EB5118C2545541D7A370BDABA150413D0AD703C054554114AE47C1AEA15041CDCCCCFCBD545541E17A14BEB2A15041E17A144EBB545541713D0AC7BEA1504166666636B35455413D0AD793BFA15041C3F528ACB25455419A9999F9C0A15041C3F528BCB1545541A4703DAAC1A1504152B81E45B15455410AD7A350C3A150418FC2F528B0545541CDCCCCDCCAA15041D7A3706DB45455419A9999B9CBA15041A4703D6AB35455419A9999C9CEA15041B81E857BB054554152B81EE5D1A150411F85EB81AD5455410AD7A340DAA1504114AE4781A5545541D7A3700DE7A15041C3F528FC9A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C145455414ECE523E68A250413CD01414105455410DAD676268A2504151E6F4870F5455413C618F9D68A250412A8A5DAB0E54554148B5782769A25041764E16C60D545541988AACCF6AA2504136D8480C0B545541027AA99A6BA2504169CF5FBE09545541B50BFA406CA25041DA81464E0A5455415BF4E9A069A25041E0D16BE60E5455417B457B1E69A25041AB0B57CA0F545541A97ECAC968A25041D12EB42413545541BEE159F568A250415F9A3FFA12545541666666466DA25041B81E854B0E545541713D0A676EA250415C8FC2450C545541785745D56BA250414417F5E909545541699958916BA25041C38AACA8095455410D20F4BB6BA25041C439B0840954554114AE47317BA25041D7A370FDEC53554152B81E8587A250415C8FC295DF535541666666669BA25041A4703D7ACC535541EC51B87EA6A2504114AE47B1C3535541823A42D0A7A2504116FB2C2CC25355418DF8A5A4A9A250414F5F49C6BF53554185EB5168ABA25041713D0A77BD535541D7A3702DACA25041295C8FF2BC5355417B14AE17B1A2504152B81E15BA535541A6C0BCE5D2A2504169CF7CA9AF535541364D2B13CEA250418BE14B0FA0535541756D1663CAA25041E3B0EAD895535541D254AC32CAA25041794E4217955355418B26A5F8C1A2504104A1E71C7E535541A3BD6CE0BFA2504145D09C9C78535541CD07008CB8A25041DA6F5054645355419A4E4071B7A25041DC9EE26A61535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541DBAAE23797A2504110CD1B355F535541A69DB9C594A2504197B7F62C605355413D0AD73390A250417B14AEE761535541FFFF47C78BA250411EAFFA96635355413D0AD7E385A2504114AE47D1675355410AD7A3907EA2504148E17AD46C5355412C3BAF9978A25041418AB0ED6F535541D7A3702D76A25041D7A3702D7153554114AE470172A2504152B81E95735355418B685EE26DA25041F63A924C77535541C370A22F6AA25041419B7F7D7A535541BBCFB5F665A250417DA172457D5355414620649D5FA250412640471781535541C8A06C635CA25041AC6A2EF4825355412989F84859A25041C1D657B9845355411A21743657A25041B6ED0365865355416120426855A25041418580D88753554115C1A40B54A25041F835D42189535541B086F41951A25041D98294E58B5355416DD2428850A250411C50E3648C5355419811A0374DA250416738D0F38E5355415B0CDAC14AA25041933E2782905355419A8B0B2A43A25041E39EF66695535541B1A0558D3EA2504194CBD2C098535541EF1777F73CA250414CBFA7B099535541E73ACD2639A2504152AC47F99B535541D811A22C38A25041749A26809C535541692AF84C36A2504187D2EA3A9E53554190489D6334A250417CFDA06FA0535541BBF215AE32A25041E1A05644A25355413B20E65431A25041D2516F98A35355418517501B30A25041304FC06EA4535541E147D2DD2DA250411AF6E058A6535541684DE26E29A25041A20A2223AB535541311BF03D27A25041E91888D6AD535541FF4569E524A25041086938B8AF53554172D4BC4220A2504164D59A6CB25355410861499A16A25041925E502FB75355414A6F0D5B15A25041F02F44ACB7535541DF21BD4814A2504119492B27B85355417C785A9511A25041C5C42846B9535541A98893300FA250412574FC9BB9535541548CF33B0CA2504128F841EAB95355415E05215607A250413AE6407FBB535541D152C1E102A25041785DA09DBD53554153EC4314FFA1504148B194FABF535541EFA0C0DFFBA150410BD4A049C25355418EB70DC7F8A15041AE5EE84AC3535541BF63196AF6A15041BD79E2E3C35355412195A0C8EFA15041E1547575C5535541662066FBEAA15041F35C7861C65355416FC91E43E2A15041A04DB1B8CA5355413AF8B26CDBA15041E3ABBC2DCE53554132F94DA9D6A150410FA14499D05355419C07037ED3A1504110751F24D2535541CEEBBC79D1A150413FF74C22D3535541F3AA2F29CFA15041B5650ABFD3535541133180FBCBA15041AD0D7C7AD4535541EA07B7B3C6A15041637D411FD553554168AFE1A9C0A15041537E4A4BD6535541C4352B1DBFA15041D6A183C8D653554140632CE6BBA15041EAABAFDFD7535541B8D5453CBAA15041A304DE51D85355418BE0BDD0B7A15041569D34B4D85355410F468D02B6A150414FFEB4D1D8535541789B565CB2A15041F7500983D8535541791561EAACA15041739D677ED753554126A1BA98A7A150417BD05EE7D65355412A15BB0CA0A150411C78F7A4D6535541E14627E999A15041BB9F8F99D6535541C69F0BB78CA1504190F0E0C2D6535541DB00C55587A1504198ADAD26D75355414C7308F685A15041A82BAB49D7535541950FBDF282A15041629009DCD7535541206D90DF7BA15041A8A4F36AD95355416D639E9A79A150417A5A190ADA5355413DB0E71475A15041B97C1A79DB53554147EABB8C70A15041F6EDA634DD53554129A4E74D70A15041F4838053DD535541D615F7766EA15041FD800D00DE535541726B16C46CA15041A8B413ABDE535541954502A169A15041C6B2EE13E053554117C04C0C68A15041DC5EB7CDE0535541EFFB3DD965A15041762AECF0E1535541C013693763A150413E84C85CE353554177FCB2C460A150418AD10EA9E453554196F7C4A05DA150416DC32E4FE65355419C92E6B35AA15041466607F3E7535541A2B7578659A150419907B69AE8535541713D0A7759A1504114AE47B1E8535541D7A370CD56A1504185EB5158ED535541713D0A2756A15041A4703D7AEE535541B81E85CB52A15041EC51B89EF35355411F85EB114DA150418FC2F5F8FC5355418FC2F5484AA15041CDCCCC2C035455411F85EB9145A150417B14AE870D5455419A9999293EA150413D0AD7E31D545541AE47E11A3DA15041CDCCCC4C205455416666667666A15041C3F5287C655455411F85EB51D0A150418FC2F5389254554114DEAD56D0A15041CB24D13A925455410A03416DD3A150410645962A8E545541F841EBB9D6A1504123085F7B89545541E3876F64DAA15041372C936885545541D32B6B88DBA150413DD474C783545541C2CB8071DFA1504158E8815B80545541AEDE9BEDE1A1504160F341F47D545541A062495FE4A150416E6F94827B54554193C6A81EE8A150418BB3162276545541815130EEEAA150419D746CD5725455417AC729A4ECA15041A31C4E347154554165571834F1A15041C604CCF76C5455413951BF5BF5A15041FFB9E08C675455411D243E73FAA1504117A4D1ED61545541FB852A95FFA150413649BF295D545541E286AB1A04A2504149D538115A545541B2028D160CA25041635571DA545455417EA3238514A2504195D2B5804C5455417EED8D6A15A250419D5CBCCA4A545541612AC5191AA25041C40AF7014554554156A7982D1CA25041D28649904254554145FD43311FA25041E9D60C4E3F5455412D4AA23923A25041FFA7895A3B54554105508A7F29A250412066EBEA34545541E88A4E912FA2504142BA94E32E545541D75F404633A250414D0A58A12B545541CA79352036A250415F7FD0D1285455419731CD453EA2504191FC14782054554169C4AFF845A25041C4F89FCF1854554129E2197B50A25041FCD35BEF0D545541171F512A55A250411801DDD708545541F90FAB565AA250413EAF170F03545541C7DE433362A250417935A9B0F9535541C0A01A6C63A250417CAF88A1F8535541BA2D15D964A250418D59DD9DF5535541AFAAE8EC66A25041997251F2F3535541813DCB9F6EA25041C1B8462FED5355417685C2E770A25041D1CAE025EB5355415943B3E574A25041EB9483D4E6535541408E9E507AA250410D6AE61BE0535541219DD3917FA250413D844C88D85355411BF5F13281A2504143ADE735D65355410B64118B82A250414FFB3756D4535541F8D5240687A2504165CCB462D0535541E7AC895889A2504171D09A9DCD535541DCDD7FE98BA2504197B3B1A0C7535541CCCBE5F28DA25041BE2C100CC2535541D386E2CD8EA25041BEAF3CF8BF535541BBA0D7A791A25041E80AC04EBA535541AA2B5F7794A25041FF5CF6A9B55355419DC60DA096A250411C6C9C7DB0535541E394713298A25041EFD8DBAFAB5355419BAD994B98A2504147DE208BAA535541C7A7B89A98A25041A4D27CCBA853554150E468E899A25041C250A49EA45355412E9BD0169BA25041749C551DA25355418D58B4749BA25041B750C7F7A15355418FC2F5987DA250418FC2F548AD53554114AE47016DA25041B81E85DBB05355418FC2F5A84CA250417B14AE87CB535541B81E850B2FA25041B81E853BDA535541B81E858B24A25041E17A142EC453554114AE47412FA250415C8FC225BB535541295C8FB23CA25041333333A3B45355413333333347A2504100000020AE535541C3F5282C53A250419A9999B9A5535541E17A148E63A250417B14AED79F5355410AD7A3E076A25041666666F6995355417B14AEC789A2504185EB51B8905355411F85EB119DA25041E17A140E88535541713D0AF7A4A25041B81E85BB85535541E17A14FEA9A25041CDCCCC8C84535541713D0AF7C0A250419A9999397F53554114AE47E1C6A25041AE47E10A93535541713D0AF7B2A25041666666569A535541C3F528DCA3A2504185EB51C89E5355416D82FB7E9CA250410A28DA92A1535541010300000001000000040000001AAC74A8B2A25041089D234F5353554192C13EF3B2A25041425CD8E253535541D4DDEF03B3A25041532D98DE535355411AAC74A8B2A25041089D234F53535541010300000001000000040000001D91EF1258A2504105DCD4131A5355413C2510D05AA25041E758D8AD17535541426B4F1C58A250413D3182081A5355411D91EF1258A2504105DCD4131A53554101030000000100000031000000B6C3DB68B9A25041CD678CAA3E53554114AE4771BBA25041000000A03953554114AE4751B6A2504114AE472139535541295C8F42ACA25041B81E857B35535541D7A370BDA6A250417B14AEE7335355417B14AE179CA250415C8FC2D531535541F6285CCF9AA25041E17A14AE355355413D0AD76395A25041C3F5289C3353554185EB51A890A25041295C8F6235535541544807108BA2504153AE70CE345355418FC2F5C887A250413D0AD7C32F53554114AE47318EA25041E17A141E3353554148E17AA491A250410AD7A3E02E535541E17A14DE88A25041F6285CEF2A53554114AE473180A250410AD7A3502C535541D7A3700D7CA25041666666F6285355418FC2F53877A25041AE47E11A26535541EC51B86E76A25041713D0AA7225355419A9999E969A25041666666D61C5355413333330363A25041295C8F6220535541B81E85DB5FA25041E17A14FE1F535541CDCCCC3C61A25041295C8F421B5355415C8FC2C565A2504133333383175355411F85EBA169A250416666666617535541713D0A5766A25041666666160B535541666666665DA2504133333383155355416C4814A75AA25041A9E00BDE17535541FE12ADEF56A25041AD0F6FCF1C535541C15FA13454A25041356D94C420535541AE9FBE0353A25041923CD9D822535541657E642852A250410B95207226535541605F886152A250414C15127729535541BFD8D8E454A25041627F1B552E53554163371C1758A25041DAEDCE4C305355419DA4F58D60A250419E6976913153554107612AD867A250419D026CD331535541777687F173A25041F0401166325355414D563D1A7AA250419B95485233535541CB7CAE6188A250417D46DAAD34535541CAE7F06C90A250418AEC1ECB35535541D117692296A25041424424AB36535541D25BD7379AA2504134B07E8037535541432D99029EA25041AA8E85A038535541D6D5F2B79EA25041881587E0385355413C85FD77A0A250416C4B344B395355412E35C662A5A25041E4C491A03A5355418851A74DAEA25041F21CF6153D5355410A741C83B3A25041A9D9A4C03D535541B6C3DB68B9A25041CD678CAA3E53554101030000000100000005000000C574E116B9A250411B8AD6753F535541B3E09318B9A25041499D04763F535541133FEB6DB9A25041331D55AB3E535541B6C3DB68B9A25041CD678CAA3E535541C574E116B9A250411B8AD6753F5355410103000000010000000400000091376FF667A25041270C33EE1354554186A4DC3268A25041B06A5AC7135455417D2DE04F68A25041545CEE981354554191376FF667A25041270C33EE1354554101030000000100000097000000D0E5578659A150417CC3B59AE8535541C952CEBB5AA150410B24CBEEE6535541884C98535DA1504188FC6D7EE553554128E908E75EA150410B636A96E45355411A4DD32163A1504149B18C6EE253554134CA048268A15041B74818B2DF535541B348AC7C6EA15041BDFA7C07DD5355419AE4B01471A150414C608811DC5355411AA702D273A1504164FC62EEDA535541B256A10179A1504186FD6057D95355415F90FA027AA1504110ADB80BD95355413D5489357BA15041E042E2A9D8535541F0AE4A327DA1504104168641D8535541A54BBD937FA1504113F175D6D75355419375F4E881A15041FA733C5DD753554103F9461786A150417DAEFA9FD6535541C453D5FF87A150411E7E4A4BD65355415FD61D5989A1504192DDF741D6535541B4BFBDB98AA1504165ED2724D6535541AC90B2338DA150419E39350CD653554161F3585693A15041FA085DCFD553554174577E3796A1504114F27BDED5535541E1389B5AA1A1504144C91ED0D55355412608F08DA5A15041965C05FDD5535541F63157D7A8A1504112B0AD2AD6535541AAC3822AAAA15041A5C6DB5ED65355412667917DACA15041CA2A38BDD65355417781732CAEA150412AEEAEF9D65355419288DBDBB3A150419480DCDBD7535541051C7E99B6A15041C33CD206D85355410CFFEF14BAA150418DBEDBA0D7535541F0073230C1A15041688B5470D5535541CC571139C4A1504159E4D1A1D453554118391167C5A1504139B4AB75D45355417DE62E36CDA1504193437853D35355417A93F8C8CDA150412AA88B2FD3535541AA364BD9CFA15041FA3DB5CDD253554193D59F9ED3A15041D1C7BE25D15355418E45AC08DBA1504124A35E53CD53554119963B05EBA1504189CA4A7FC55355411AD39F8DEFA150412A381D9DC45355415D6DA2BAF6A150416104E428C3535541BE13734CFAA150410741E81FC25355415D478586FEA150416E658F63BF5355414F09E5CC02A25041D13FA072BC535541C8314AFC06A2504145C2EFADBA5355419934A16709A25041CA07B3E2B953554120DE46590AA250412574FC9BB95355414CFC534A0FA25041024424B0B85355410423CACE12A25041F4499507B85355413C6C60B416A25041CA9AC1FCB553554109D341F719A25041A3F26775B453554139E385ED1FA25041791CA959B15355419503E87425A25041C7ED3A99AE53554179556D0B2AA2504162305E26A95355416F3C8A882DA250415BCABD8DA55355413B20E65431A25041B2998793A25355412467FAFD31A25041054DAE16A25355416041B76433A25041E4133268A05355414F69D26D35A25041C270075E9E535541567CC76F37A25041BF3E04639C535541D9FE5B593AA25041FC40686B9A535541FCCE88013DA250419C3812E798535541414B51FB3FA2504182DE800A9753554182C8209442A2504199BC3F2595535541C318C9FC45A25041589386C4925355413FF9A0AC47A250417FAE0D8791535541279F01F648A250411D2D5CC890535541576DAB614DA25041126361EF8D5355416E4BEA5050A25041B6849B628B5355412B1BB35F51A250413E9A03788A535541DFF0ABE553A250415B9D75278853554149A1891958A250410367829384535541E743C4C159A25041E1504D9A83535541A4036F8E5DA250419F29EC5E81535541C7AF08D860A25041824A89707F535541A640689367A2504180223B777B5355417D9BB8496CA25041705F478B775355416B451D966DA25041994FAD7E765355411C3D210071A250416EAB514273535541FB43CEEC74A2504155B4C33971535541074AA3B779A250412D609DA16E53554114ADBD6D7DA25041EC8561816C53554145B24F8981A25041F34C5A176A535541F757D3AB84A25041322F72DB67535541F3C6CB188AA250413BEC7490635355417B14AE478CA250416666667662535541EE6B30818EA25041079DCAAD61535541D6D1089890A250414F4312DD605355414E520D2E91A250414D7575BC6053554108B2FB0699A250415E19AB935D535541943F290F9CA250410A93965A5C53554118C45155A1A250418A856DE859535541FEFDD62FA4A25041A3DD1361585355416C80ED1DA7A250418CA497B25653554193F1DC4EA9A2504192A38E86555355418021543BADA25041BFB8B38E545355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541D0E5578659A150417CC3B59AE8535541
+</a>
+
+<b>
+010600000001000000010300000003000000FE000000EE565A8659A150415992B49AE85355419C92E6B35AA15041466607F3E75355411AC165235DA15041CDA47895E6535541B1A4BD4A5DA15041F5724E7DE65355417E69F6215FA15041ADF46026E553554141FCD59260A1504113D7F1C2E45355417D1D7A0F63A15041F29AF471E3535541C013693763A150413E84C85CE3535541EFFB3DD965A15041762AECF0E153554117C04C0C68A15041DC5EB7CDE0535541F137331468A1504115F216CAE0535541D8827B3668A15041DA98F2B7E0535541BFC70D426BA150412FEEF150DF5355411DB53C676CA15041D163CCD4DE535541726B16C46CA15041A8B413ABDE535541FB62C6136DA15041CC03BD8BDE535541661B117A6DA1504155696C60DE535541E87B592970A15041E126865ADD535541E89DAFCC73A1504139FE95F6DB5355413DB0E71475A15041B97C1A79DB535541254FC4B876A150413E0201F4DA535541CF5FF0E476A15041FB41BCE4DA535541C144323379A1504123F49229DA5355410B0445FC79A15041CC1ED1E9D9535541B5CAC64D7BA15041FB0BF98CD95355412D6E90DF7BA1504167A4F36AD953554180A8094A7DA15041F7585D16D9535541127F79557FA15041F5C594A0D8535541B1FBCE0F82A15041EC308706D853554144A8D2A984A150415054B688D75355414C7308F685A15041A82BAB49D75355418125151086A1504168C71347D7535541979C852086A1504169C41044D7535541DB00C55587A1504198ADAD26D7535541A85B4D8087A15041CEFBA222D7535541D4D328AA88A15041D2FC5406D753554102B1B4438AA15041A3EC69DFD65355419A8FF1B28CA1504175072DC3D6535541C69F0BB78CA1504190F0E0C2D653554158A069BA8CA150418865D6C2D653554122D0ECC38CA15041F40F68C2D65355412EC3459D8DA15041CD3870BAD65355417F4C6FD092A150413B97F797D6535541C1CD9AF295A150411B238290D653554121A11A929AA150416E9D268CD65355417D7BB23D9FA15041981FB0A0D65355412A15BB0CA0A150411C78F7A4D6535541FCC50979A1A15041E4E57EACD65355410FFFFA90A5A150410C978FD1D65355415B296387A7A15041FE86A4E6D6535541F969B989A7A150413BCADAE6D653554126A1BA98A7A150417BD05EE7D6535541F61089C2A7A1504101EE01ECD6535541A50C81B0A8A15041F97F9701D7535541F16199C0A9A15041723C551CD7535541EF09EB44AAA15041B3BC4233D7535541791561EAACA15041739D677ED75355417F0905FBADA15041418561B1D753554125BFD3E7AFA1504151B2850DD8535541658A1A9FB1A150415BB01859D853554148EB5CEDB2A1504165330D8BD85355412A434BE6B3A150418ED242A1D8535541568E7D89B6A150410D0A18C9D85355417A364A0CB8A15041FCE0C0AAD8535541B3098FD5B8A15041C455CE8AD853554172D0D429BAA15041F05E0150D8535541EA552AE8BFA150417811437DD6535541530C8C7BC0A15041AFA4EA59D653554168AFE1A9C0A15041537E4A4BD653554183F7B6F6C0A15041B5D3603CD653554195ACF7E1C1A15041F699F503D6535541F1B8CB90C3A15041488382AAD55355413E136F81C4A1504183488C78D55355411FE67D8EC5A15041A00D8A4AD55355414B7AD295C6A15041A0CB0E25D5535541EA07B7B3C6A15041637D411FD5535541E3AC63FFC6A15041EC200816D5535541B5850ECDCCA150412A3D9142D453554116B90CF3CDA150415236DB01D4535541B3A17447CFA1504133F3EEB3D3535541EEB967F8D0A15041AAF9853ED35355412B1DA48CD1A15041EEB0CB0FD3535541478F1F04D4A150419ADFD9E2D15355418EEA8FB2DAA150410ACDC180CE535541B6455BBDDBA1504114CFB8FBCD53554147544B09E1A1504193605E57CB5355416FC91E43E2A15041A04DB1B8CA535541DB739584EAA15041FBB39D9CC6535541662066FBEAA15041F35C7861C6535541913F7B2DEBA150412DB5DA57C653554130FB0E14ECA150410762952BC65355417DBAD3C4EFA15041DFDC6371C55355414B118FDEF5A15041BA2263FFC3535541E60E3075F6A150416102B1DAC3535541CB170F84FAA150415BE379BAC25355419E526FAAFBA15041B9DDEE5AC25355414DEE3F6DFCA15041A4013AE3C1535541441B3CB6FDA150412EB2B8F6C0535541273DE1F1FEA15041F39B5913C053554153EC4314FFA1504148B194FABF535541D152C1E102A25041785DA09DBD53554189B48D3003A25041FE2E2678BD5355417F573E8A06A25041A73239E0BB5355415E05215607A250413AE6407FBB5355413D976F8F08A2504115760D1ABB535541F38E155D09A25041E04841CBBA535541FA3FCB880AA25041F23C7E6DBA535541DB2F65440BA250413074383ABA535541548CF33B0CA2504128F841EAB9535541D5C363840CA25041299AC3E2B95355419266A48E0DA250417E1BA4C3B95355413550AE7110A250413B39A05BB953554123526EB711A250413F4FC72DB95355418C1CBB1613A25041849B4EA1B85355411042DDD816A2504159414205B75355419A7569101AA2504193F0F16EB5535541319EDCC01FA25041735A60A0B2535541FF59D29520A2504108F04E37B25355415E44DD7F25A250410AF8543CAF535541BADF1F6026A2504195E67D84AE53554133C3E76C29A25041A2619225AB535541684DE26E29A25041A20A2223AB5355415FB5117929A250411DD82018AB535541E4D386142AA25041D403516CAA5355414FEF5C9F2AA25041C12C7CD7A95355418AB99A0E2BA2504141393C60A9535541DB7ABADA2BA250414E7E6A85A8535541E147D2DD2DA250411AF6E058A653554120BEE3F12DA250419F4ABA47A6535541CDCCCC0C2EA25041AE47E12AA6535541E67E3F812EA250415A4A35CDA55355418517501B30A25041304FC06EA453554151B393C530A2504147EB62FAA35355416312A85131A250412C84B489A3535541F39D8C4232A2504113CD8BABA25355418D665FDF33A25041FA3071F9A05355412BF443C435A25041165FA1D69E535541EE1058D035A2504105E3BBCA9E535541692AF84C36A2504187D2EA3A9E5355413553ADA137A25041A1FB6A009D535541D811A22C38A25041749A26809C535541A21FB4563AA2504155BD5D439B535541EF1777F73CA250414CBFA7B099535541E4B770593DA250417EC9C27699535541DECDAE2E40A25041BD00989197535541674554FC42A25041E4C72D88955355419A8B0B2A43A25041E39EF6669553554104A86D8F43A2504106D79E2595535541313F5C5B46A2504126C9EF4593535541DEEF27C947A25041C1C9D1519253554122F7FC6A49A25041A213784E9153554189969B8A4DA25041E4C3C5B38E535541AE9A8C8750A25041FDEF6F658C53554183458F0752A25041122675068B535541C674197E54A2504147A1B4B5885355416120426855A25041418580D8875355411A21743657A25041B6ED0365865355413AF3448F58A25041457F0B4F855355412989F84859A25041C1D657B984535541FCA013DD59A2504137CEDC648453554135A4DD775DA25041D543915482535541A599746461A25041C43480058053554167493CBD67A250414748131A7C535541D5FF1E686AA250412FBDC14C7A5355418A83BA1C6DA250414EE81CF777535541F901FEFD6EA25041C597C34C76535541D66796EA71A25041894096A97353554114AE470172A2504152B81E95735355413E2B443E75A25041224E4CB771535541D7A3702D76A25041D7A3702D715355412C3BAF9978A25041418AB0ED6F53554133A238F679A250415E80A2386F5355412FE680B77DA25041C4B346456D535541F7F1E7F081A250412EFD0F856A535541986CBE4585A25041D41A773D6853554133ED2C8A8AA250414126FE6D6453554182A8DE948BA250418D67ADAB63535541CB8E64C48BA2504134950D9963535541FFFF47C78BA250411EAFFA9663535541C9EF441C8CA25041E93D9D766353554164F89BBF8EA2504115BCF26D62535541F45ECAB290A250417873A3B761535541A7F1E48191A25041ADC8436961535541990BE02498A25041788258C35E5355415C193B8799A25041C889A1215E53554143B5F94B9CA250413A2ED9DD5C535541A078A5BD9DA25041300274335C535541D89C83899EA250418FEF9ED75B535541F4786F4CA1A250413ED368945A535541AD5DE873A4A250416196ECE8585355416B7C8BA3A4A25041C0F9E2CF58535541F662A61AA5A250413E31BC8E58535541D7391F50A5A25041859F2E755853554185575A5FA7A25041C0631360575355413F73F58FA9A25041D238334856535541897D61C9AAA25041FCD28DD7555355419D5CBCDCAAA250416C024ECE555355413FF112E5AAA250413BD399CD555355415FA9D7FAAAA2504159F3C6C555535541D461076CB2A25041F452F12A555355414AEE0D95B2A2504190AC93485353554185EB51C8B1A2504148E17A9451535541C574E116B9A250411B8AD6753F535541A24B7298B3A250412AB8ABE03E535541B9220A83B0A2504199AAA8603E535541485148B8ACA2504111024FAB3D535541F7FF35B8A9A2504159AA49CB3C5355410E935F8DA2A250411DD9E6953A535541C4E9E8179DA250413C9C882039535541DA9EC9F797A25041CC87D4953753554148D04A908DA250410CC7984A36535541E659490784A250411703770A35535541308F0C1978A2504161762ADE335355411E8B4CBD6FA25041C901FDE03253554197F615336EA2504158CC86D632535541BB75A50268A250417CBBC4B432535541613382E061A2504167721A5C32535541257D962F5CA250413779C2F43153554185EB51A857A25041713D0A073153554188F5659854A250417BAABB072F53554124A09B1252A25041E47EAA9E2B53554196A8051E51A250416A7D976F275355410E9E0DAC51A250415217C02625535541BAAD002E52A250416145974F2353554188A8974153A25041AA4824C2205355417B86CDE353A25041494C0CAC1F535541B1A45E5155A250410B911B5B1D535541018CE36256A25041A131AE1D1C535541F8E1201058A250417E384A161A5355415C8FC2A54EA2504185EB5128225355419A9999194CA25041E17A140E2553554185EB51D831A25041B81E850B2D5355417B14AEF730A2504185EB51781E535541333333A332A25041295C8FA214535541A4703D5A30A25041A4703DCA12535541CDCCCCBC2FA25041295C8FB20D535541E17A140E0DA250411F85EB8110535541333333E3F2A1504152B81E5510535541295C8F12EBA15041333333D3115355415C8FC2B5E0A15041AE47E1FA0F535541B81E85EBDDA150413D0AD7631053554182F3B5ADC8A15041802E569945535541F5004C9FC5A150411FD5D5524F535541670399C9BFA15041C32422F05C535541CDFA9C2CB7A1504187BBBE8D6F535541A53B3EBAADA1504130A98E477E5355412518163AABA15041C408BE00835355416350BB2A99A1504197C035F49D535541776646FF8BA15041FC0F38F1AC5355417AC5130183A15041D90AB98AB753554169A3808376A15041DA4EC4D9C5535541250874A266A15041087E2D88D8535541CDCCCC9C5AA1504100000000E7535541EE565A8659A150415992B49AE85355411E000000B02144928AA25041A1CD000B465355418952D15189A250414008778A4453554136CCFEEF8CA25041E7F611C845535541E7F217908EA25041C903C55246535541DFD018CE90A2504146204731475355419DCA975093A2504118BDF436485355419369864796A250412FC77ABE48535541C5D7D16F99A25041C4A6221F495355415B31DD2D9EA250417F605453495355415B906825A1A250417F605453495355417EA63CA9A5A250417F6054534953554140451634AAA25041CA0FACEB48535541EC5CD0D0ACA2504133C383B948535541FEC53BA2B3A25041C487A65D48535541D99042C0B4A25041F8583D7E48535541CCA68259B4A2504177CF9D34495355410F2E0AF2B0A2504174BE7A5A49535541E8ABDA63AEA25041EF849D9A495355416E3976D2ABA250415FC710DB495355418B9F69FEA8A250419DA7A6084A535541A7566147A6A25041ACF6D3244A535541B5BA13579FA250415043CA584A535541660F6ABA9BA250415043CA584A53554171EDF64699A250415043CA584A53554152FD7A8596A2504173B611F849535541FB8CFABF94A25041AB35CAB849535541E93DEE4392A25041FDFC02D8485355418729DC358FA25041E9BE03594753554160A4C1EB8BA250412E3D504046535541B02144928AA25041A1CD000B465355411900000054B4773070A2504170843F8B34535541A2ECD05172A250411E75B0FB335355411A29D36A72A250413CDED24334535541BF6811C074A2504157993E4A355355414937226B77A2504112E23E5537535541E1710A7B78A250415D94F695385355412EE1672979A25041C128737E39535541EEAE0AF77AA25041BB07D4193B53554110154FAD7CA25041501FB3B73C53554124FDAD377EA250417F5562273E535541F94CB1B07FA25041659C942A3F5355416E3E7E4981A25041D59E3243405355412AE6B12D83A250416E627E8E415355411DC042B785A25041B86491D842535541C2FC925D87A25041830ACD7C435355412F31F97387A2504102A8B75345535541043BDEEA86A25041848576E144535541BB2BE24184A250411E685FCD43535541666F043282A25041D79C9C6E42535541528C507B7FA250419C0D271A4053554196B25ECB7BA250413B8A94F03C535541B554CC2378A25041E538288939535541A488A8D274A2504147E8AEA9365355417D2F1CC871A250419C9924033553554154B4773070A2504170843F8B34535541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608321 - 200925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003B000000ED737BE208B15041B6616BC89C49554166C52CAD09B150411056C3549B495541A8708F8B0EB150414758219F9C4955417FD8896E10B15041BAB5CDA59949554127899D1614B150418DB449869A4955413C3A56E114B1504139114E299E49554114AE477115B150415C8FC2859E4955413D0AD75316B150417B14AEE7944955417F89CF6C0FB150412C8FC95486495541806E31410DB150416B70688A8F495541D43B82D90AB15041652935D68E495541136A75AC0AB150411326A8E68C495541420A021709B15041269970238C495541B20EBEAB0BB150417A15E738834955410A8B34C102B15041368522868049554152B81E1500B150410AD7A3D0894955417F38F5E908B150411AB40E4F8E495541B80417DD05B1504157FD9F4D90495541E17A141EFCB05041AE47E10A8A4955415C8FC2B5FEB0504152B81E857F495541F6285C2FFDB05041713D0A377F49554122F4552FFCB05041C89B041D804955415ADB154EFBB050412E598DFD81495541A77CD15DFAB05041C6B6A248824955410AD7A3D0F2B050411F85EB81924955418FC2F538F0B0504152B81E459349554185EB5118F6B05041713D0A377F4955418FC2F508F4B05041B81E853B7D495541EC51B84EEFB05041EC51B8FE7D495541EC51B82EECB05041AE47E1BA8A49554114AE4721E9B0504152B81E9592495541C3F5288CE5B05041CDCCCC5C91495541295C8F32EAB050419A9999397E495541022BFEE4E5B05041C89B041D80495541CC28A09AE4B050415D2F56BF84495541C5E16CE6E3B0504116F06B8F884955413CF71FD8E2B05041229970238C49554152B81E15DDB050417B14AEF78949554133333373D6B0504114AE47C187495541E17A14FED5B050410AD7A32089495541A4703D4ACEB05041EC51B84E8649554188E55754CEB05041A53BF18385495541781AC5A9CEB050419F475CDD84495541800AE187CFB050412B900E1083495541E17A144ED5B0504185EB514880495541295C8FC2D6B0504152B81E157B4955410AD7A370D2B05041713D0AE77A4955410AD7A370CAB0504114AE47318A49554148E17AA4CEB050415C8FC2D58B4955419A999959D0B050410AD7A3D08949554152B81E75D5B05041AE47E1BA8A495541AE47E1BAD4B05041666666368E495541EC51B82EE5B0504152B81EA594495541B81E856BEEB05041A4703D6A98495541B81E853BEFB0504166666656944955419A9999A9F2B0504185EB5108944955419A999919F2B05041D7A3709D9949554152B81E25FEB05041B81E858B9D495541ED737BE208B15041B6616BC89C495541
+</a>
+
+<b>
+0106000000010000000103000000010000008B000000BAAA9D5DE7B050410215BD777F4955413E691526E7B05041672F74A47F4955414E674CD8E6B05041F28F3EB27F495541FE2AFEE4E5B05041C69B041D80495541CA28A09AE4B05041622F56BF84495541C0E16CE6E3B0504113F06B8F8849554141F71FD8E2B05041259970238C495541BE87C98FE1B05041F323BAA78B495541E0821A57E1B0504115E2D0E98B4955419BE21C7EDCB05041C49D916A8A49554132647D75DBB05041EBCE31068A495541E9D35D91DAB050411300D2A18949554193C95DB9DAB050410AEE462E8949554143218872D9B05041D30440C188495541C874DE48D9B05041C32C9246894955413D97BFF7D6B050410298926B884955419CF9FF2ED6B05041F6D7F1F389495541BB76802FD5B050412D00D2A18949554138DC8155D2B05041453A322B89495541376B8231D1B050413B15136C87495541A4703D4ACEB05041EC51B84E8649554185E55754CEB05041A23BF18385495541E92E8BEACEB050415493D456844955417C0AE187CFB0504126900E10834955417FD5558FCFB050413F80770C834955415A6B0352D5B05041803C433A8049554109673FA1D5B0504180A6161F7F495541047A7916D6B05041EA26227C7D495541C655AE64D6B0504174F1A1647C4955411DB2FFC0D6B050415E1FD9167B495541CB72CDA4D6B05041994EE1137B4955410CAA6C56D4B05041E6F047FB7A4955414FA05D5DD2B0504197C1E00B7B49554173232F07D0B05041B90B27837F495541CE4124DCCDB050412E3EFAA7834955416AF4EE7ECAB050417732F6158A4955411FF7969BCEB05041550B49D28B4955417E384652D0B050419D714ED98949554156E80232D0B05041A504B298894955412EB76296D0B050413C861290884955414190A1F0D2B05041F6D7F1F38949554152B81E75D5B05041AE47E1BA8A4955413CAD93ECD4B050415C15F2A18D4955416F8BAAE6D4B050418E601F6A8D4955415D268BE5D4B050410D0C2C6A8D495541AE47E1BAD4B05041666666368E495541A8D81EFFD4B05041E78B14518E49554154888BFED4B05041CB3FA54B8E4955418DCA5E3DD5B050413D166B698E495541086B4534DEB050417838AAEA914955416B75450DDFB0504145C05D0492495541273E2DDCE1B05041DD52DA3F934955412AA45375E2B05041E314759493495541EC51B82EE5B0504152B81EA594495541B81E856BEEB05041A4703D6A98495541B81E853BEFB0504166666656944955419A9999A9F2B0504185EB5108944955419A999919F2B05041D7A3709D9949554152B81E25FEB05041B81E858B9D4955411B2865CA08B1504181F420CA9C495541DD533CEA08B1504159EC33BA9C49554166C52CAD09B150410B56C3549B495541AC708F8B0EB150414A58219F9C4955417CD8896E10B15041B6B5CDA59949554128899D1614B150418AB449869A4955413F3A56E114B150413B114E299E495541963A347315B15041E1EAD9709E49554106D8028715B15041AF5E9A999D495541C0F91E9815B150418176AADF9C495541A787B44E16B1504118A2D6DC94495541611168730FB15041F5B5B6628649554167CC4DA10EB15041DDEF50B4894955415B159E9C0EB15041989E33C889495541ECC2B2870EB15041AD8DF7208A4955413F1645750EB150414BCB296F8A495541826E31410DB150416C70688A8F495541B560D60A0CB15041DE78922F8F495541450A48E40BB15041C49749248F495541CF3B82D90AB15041622935D68E4955410F6A75AC0AB150410F26A8E68C495541A2C0EF3D0AB15041494671B18C495541460A021709B15041259970238C495541EA00EDA60AB15041B4D0E7BD86495541239705A709B1504196005C9386495541ACCF0F9209B15041859C94FD8349554112B6064006B1504100C56B9E814955419E24FE2E06B15041B5F3C78F814955410D8B34C102B150413B85228680495541342A952D02B15041B7DE678782495541B46C25E501B1504136D942838349554117B38AB001B15041307C293A84495541B1BE053501B1504157CEA0E78549554190AE842401B15041F3FB022186495541482374A300B150411E18C2E18749554110116D6000B15041CBB2CECA8849554156043A2100B150415DDA8BA6894955417A796AEC01B1504158FE9F1E8A495541B69F0B4A03B15041EEEAB9E98A4955415C7C343905B15041F576BF7A8A495541719AAF9F07B150417529E0448C4955419833259909B1504127B1253B8E495541DAA16EF007B150417CBE9E2F8F4955410637A9A606B150418417D4C98F49554127E8209F06B150419FE8C0CE8F495541B40417DD05B1504156FD9F4D904955417F27414905B15041B41A067190495541F7FDD98802B150414EB2E6218F495541B871A42000B150413233362A8E495541A8574C08FEB050413E06858E8B4955414CDE21BFFDB050418728535A8B4955415AF7F52CFCB050414FB80C7F8A495541EE8E87A4FBB05041FFBEBE338A49554113D2F4CCFBB050411C80C08D884955415A1524E8FBB050415897FC718749554101B86516FCB0504117D1B0CD864955419AC9BE00FDB050413403E60484495541A05E0755FDB05041C55D195983495541C53EDEB0FDB0504187F3E59D824955419F526BAEFEB050415F36EAA27F4955415C8FC2B5FEB0504152B81E857F495541F6285C2FFDB05041713D0A377F4955411EF4552FFCB05041C69B041D804955415FDB154EFBB050412F598DFD81495541AA7CD15DFAB05041C4B6A248824955410AD7A3D0F2B050411F85EB81924955415A44F321F0B0504139332D6F93495541E74D9F2FEFB0504123F9A4AC934955411D2C6340ECB050418A2F2B6194495541B218EBD8E9B05041A1AA86DD94495541BB83DD3EE9B0504113D16CE69449554175AA7726E7B050413AA42C93944955418DC38B25E8B0504102B6643F924955413A9E450DE8B050410347DB73924955414180AF1CE8B050419944603C92495541C3F5288CE5B05041CDCCCC5C91495541913C802CEAB05041CC6389527E49554174E51823EAB050418B23C7527E4955419E2D390FEAB050415A7A1B497E495541BAAA9D5DE7B050410215BD777F495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466331 - 1717110
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E5541F6274E80FFBA50411C3CC138CA1E5541F6274E80FFBA504172BF50B4C21E5541C1A5A42C00BB5041B2211445B81E5541C1A5A42C00BB5041343C0631B01E5541C3F528CCFBBA504185EB5118B11E5541ECB1A73FFABA5041D51EC8FFC91E5541C745969BFABA5041D9F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E5541
+</a>
+
+<b>
+010600000001000000010300000001000000130000002346CDF9FEBA5041C9437414CA1E55419A9999F9FEBA504114AE4711CA1E5541713D0AE7FEBA50415C8FC2B5C21E5541D4CEE307FFBA50414770AC30C11E55415AF45447FFBA5041C71E3E41BE1E5541C797E45CFFBA5041716CDD41BD1E55416985EEC9FFBA5041FBC2D327B81E55410000005000BB5041EC51B85EB01E55411BDE3F5E00BB5041E704C15BB01E5541A35B6C6C00BB50415BD48EC4AF1E5541A94C4CF1FBBA50413F038697B01E5541F06BC294FABA504150425D15C01E5541E2251DF3F9BA5041D7E724DDC71E5541F6285CAFF9BA504100000020CB1E5541C745969BFABA5041D7F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E55412346CDF9FEBA5041C9437414CA1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466331 - 3569489
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E5541F6274E80FFBA50411C3CC138CA1E5541F6274E80FFBA504172BF50B4C21E5541C1A5A42C00BB5041B2211445B81E5541C1A5A42C00BB5041343C0631B01E5541C3F528CCFBBA504185EB5118B11E5541ECB1A73FFABA5041D51EC8FFC91E5541C745969BFABA5041D9F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000014AE4731EFBA5041D7A370ADF41E5541000000B0FCBA5041713D0A87F01E5541FB9B06AEFABA5041D03EE611D81E5541C745969BFABA5041D7F44731D71E5541F6285CAFF9BA504100000020CB1E5541E0251DF3F9BA5041D6E724DDC71E5541EB6BC294FABA504150425D15C01E5541795D59E1FABA5041E3F5E3ADBC1E5541002E5584FBBA50419331626FB51E55413A1BB8D6FBBA5041CC4B6818B11E55417B14AE57F9BA5041713D0A57B11E5541ECD58005F9BA50418AD5C751B51E55413D0AD703F9BA504166666666B51E5541D943C9FAF8BA50419321D998B51E5541C3F528ACF6BA50413D0AD773C21E5541C92C68A3F6BA5041C5F3FA96C21E55419E70150BF4BA50413F28FD01CD1E55416E38B139F0BA5041C1AFDB85DC1E5541A675F668EFBA50413A081AA1E71E554114AE4731EFBA5041D7A370ADF41E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466331 - 3569876
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E5541F6274E80FFBA50411C3CC138CA1E5541F6274E80FFBA504172BF50B4C21E5541C1A5A42C00BB5041B2211445B81E5541C1A5A42C00BB5041343C0631B01E5541C3F528CCFBBA504185EB5118B11E5541ECB1A73FFABA5041D51EC8FFC91E5541C745969BFABA5041D9F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E5541
+</a>
+
+<b>
+010600000001000000010300000001000000130000002346CDF9FEBA5041C9437414CA1E55419A9999F9FEBA504114AE4711CA1E5541713D0AE7FEBA50415C8FC2B5C21E5541D4CEE307FFBA50414770AC30C11E55415AF45447FFBA5041C71E3E41BE1E5541C797E45CFFBA5041716CDD41BD1E55416985EEC9FFBA5041FBC2D327B81E55410000005000BB5041EC51B85EB01E55411BDE3F5E00BB5041E704C15BB01E5541A35B6C6C00BB50415BD48EC4AF1E5541A94C4CF1FBBA50413F038697B01E5541F06BC294FABA504150425D15C01E5541E2251DF3F9BA5041D7E724DDC71E5541F6285CAFF9BA504100000020CB1E5541C745969BFABA5041D7F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E55412346CDF9FEBA5041C9437414CA1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897581 - 1167278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000036000000A6B48C1057715141FDB72B8115A054415C36532857715141A7CEB43716A05441CF04F98657715141B0E15C0E19A0544167968F7557715141C23C513F17A05441D6FA277757715141C436A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A0544152B81ED55971514148E17A5429A05441CDCCCCAC5B715141D7A3706D28A0544185EB51385C715141295C8FC228A054411F85EB216571514114AE47C124A05441D7A370CD6B71514185EB51081CA0544148E17A94727151410AD7A3A012A054419A9999297F715141CDCCCCAC03A0544133333353837151418FC2F5B8FE9F5441000000F08A71514185EB51B8F59F5441C3F528AC8B7151417B14AE87F49F54410AD7A3D091715141000000E0E99F5441295C8F429871514148E17A84DF9F544185EB51389C7151410AD7A390D89F54418FC2F5C89E715141D7A3708DD59F5441295C8F42A471514185EB51C8D09F54415C8FC2C5A871514133333343CE9F54415C8FC215A5715141713D0A07CB9F544114AE47D1A1715141295C8F12C59F5441666666D69E7151419A999919C09F5441000000309B7151419A999929C79F5441B81E85CB987151415C8FC2D5CA9F54415C8FC235957151411F85EB81CE9F5441A04866CC91715141AEDC021DD19F54418C17A27892715141F281242DD19F54419BAABB2C8D715141E6BEC2E5D79F5441BEB5D23D8B715141B88A1103DA9F5441CF22DB598771514109F8E685DE9F54418343AA7484715141294EB409E39F54419597960082715141B719FF41E79F5441062CB4097F71514173FDA797EB9F5441F069C8027E71514119B5D60AED9F54412AC713B77B715141BEDCBCE1EF9F544159E408FE777151412C057D68F49F5441E12D38F374715141E940ACBEF79F5441AEFCC53372715141DEF33D97FA9F54418E1F40006D7151414356221600A05441F245F9FE6771514125B5C76205A054417CB1E4D762715141A39180AF0AA0544145E17AF45C71514181DC6B2E10A05441A6B48C1057715141FDB72B8115A0544101030000000100000004000000124666CC91715141A1DE021DD19F544108B13B8F8C715141823A99F4D69F544168083FCF8E715141B2770A1AD59F5441124666CC91715141A1DE021DD19F544101030000000100000025000000458B9BEB56715141A9768C6514A05441B2FAF3E06471514139A9DCB706A05441D9CEF1196B715141B81C568E00A05441A101EF016C715141FC12F377FF9F544103C3808B6E715141B0A39591FC9F5441155CD2C06F7151413729219AFB9F54415632DE71717151414F0B9ED9F99F54419558104E7771514180EF2891F39F5441E2E747307871514180DEC73FF29F54417D76930E79715141BA4C7445F19F54412A2E341D7C715141298ADF89ED9F54415D5FA6DC7E715141E84A7101EA9F5441DA67BA8A82715141F2006A0AE49F5441DE7A141E897151413C0535CBDA9F544108B13B8F8C715141823A99F4D69F5441C3F5282C867151417B14AE37DC9F54410AD7A3808471514185EB5198DA9F544166666626807151418FC2F548DE9F5441F6285C5F7C7151413D0AD7C3E19F54411F85EB5177715141C3F5284CE69F54419A9999A975715141000000E0E79F5441C3F5281C63715141F6285CAFF59F5441B81E853B5071514148E17A7404A05441CDCCCC4C3D715141EC51B8EE11A05441C3F528DC3D715141000000A012A05441CDCCCC1C3F715141AE47E1BA12A054418FC2F58840715141F6285C5F13A0544185EB51884171514152B81E1514A05441B81E85AB42715141D7A3705D15A05441EC51B85E4671514114AE47A11AA0544185EB51B8487151410AD7A3B01DA05441000000A04E7151415C8FC2B518A054419A99997950715141666666A615A05441D7A3709D517151413D0AD70313A05441B81E859B53715141E17A14CE11A05441333333B35671514148E17AB412A05441458B9BEB56715141A9768C6514A05441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000A4B48C1057715141FFB72B8115A054415E36532857715141A9CEB43716A05441CF04F98657715141ADE15C0E19A054416B968F7557715141BE3C513F17A05441DBFA277757715141C236A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A0544152B81ED55971514148E17A5429A05441CDCCCCAC5B715141D7A3706D28A0544185EB51385C715141295C8FC228A054411F85EB216571514114AE47C124A05441D7A370CD6B71514185EB51081CA0544148E17A94727151410AD7A3A012A054419A9999297F715141CDCCCCAC03A0544133333353837151418FC2F5B8FE9F5441000000F08A71514185EB51B8F59F5441C3F528AC8B7151417B14AE87F49F54410AD7A3D091715141000000E0E99F5441295C8F429871514148E17A84DF9F544185EB51389C7151410AD7A390D89F54418FC2F5C89E715141D7A3708DD59F5441295C8F42A471514185EB51C8D09F54415C8FC2C5A871514133333343CE9F54415C8FC215A5715141713D0A07CB9F544114AE47D1A1715141295C8F12C59F5441666666D69E7151419A999919C09F5441000000309B7151419A999929C79F5441B81E85CB987151415C8FC2D5CA9F54415C8FC235957151411F85EB81CE9F54419F4866CC91715141A9DC021DD19F54418D17A27892715141F581242DD19F54419BAABB2C8D715141E2BEC2E5D79F5441BAB5D23D8B715141B78A1103DA9F5441D122DB598771514107F8E685DE9F54418043AA7484715141264EB409E39F54419197960082715141BC19FF41E79F5441022CB4097F71514175FDA797EB9F5441F169C8027E71514118B5D60AED9F544127C713B77B715141C0DCBCE1EF9F544155E408FE777151412F057D68F49F5441E42D38F374715141E640ACBEF79F5441AFFCC53372715141E1F33D97FA9F54418B1F40006D7151414156221600A05441F245F9FE6771514120B5C76205A054417BB1E4D762715141A09180AF0AA0544148E17AF45C7151417DDC6B2E10A05441A4B48C1057715141FFB72B8115A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897581 - 3406634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000036000000A6B48C1057715141FDB72B8115A054415C36532857715141A7CEB43716A05441CF04F98657715141B0E15C0E19A0544167968F7557715141C23C513F17A05441D6FA277757715141C436A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A0544152B81ED55971514148E17A5429A05441CDCCCCAC5B715141D7A3706D28A0544185EB51385C715141295C8FC228A054411F85EB216571514114AE47C124A05441D7A370CD6B71514185EB51081CA0544148E17A94727151410AD7A3A012A054419A9999297F715141CDCCCCAC03A0544133333353837151418FC2F5B8FE9F5441000000F08A71514185EB51B8F59F5441C3F528AC8B7151417B14AE87F49F54410AD7A3D091715141000000E0E99F5441295C8F429871514148E17A84DF9F544185EB51389C7151410AD7A390D89F54418FC2F5C89E715141D7A3708DD59F5441295C8F42A471514185EB51C8D09F54415C8FC2C5A871514133333343CE9F54415C8FC215A5715141713D0A07CB9F544114AE47D1A1715141295C8F12C59F5441666666D69E7151419A999919C09F5441000000309B7151419A999929C79F5441B81E85CB987151415C8FC2D5CA9F54415C8FC235957151411F85EB81CE9F5441A04866CC91715141AEDC021DD19F54418C17A27892715141F281242DD19F54419BAABB2C8D715141E6BEC2E5D79F5441BEB5D23D8B715141B88A1103DA9F5441CF22DB598771514109F8E685DE9F54418343AA7484715141294EB409E39F54419597960082715141B719FF41E79F5441062CB4097F71514173FDA797EB9F5441F069C8027E71514119B5D60AED9F54412AC713B77B715141BEDCBCE1EF9F544159E408FE777151412C057D68F49F5441E12D38F374715141E940ACBEF79F5441AEFCC53372715141DEF33D97FA9F54418E1F40006D7151414356221600A05441F245F9FE6771514125B5C76205A054417CB1E4D762715141A39180AF0AA0544145E17AF45C71514181DC6B2E10A05441A6B48C1057715141FDB72B8115A0544101030000000100000004000000124666CC91715141A1DE021DD19F544108B13B8F8C715141823A99F4D69F544168083FCF8E715141B2770A1AD59F5441124666CC91715141A1DE021DD19F544101030000000100000025000000458B9BEB56715141A9768C6514A05441B2FAF3E06471514139A9DCB706A05441D9CEF1196B715141B81C568E00A05441A101EF016C715141FC12F377FF9F544103C3808B6E715141B0A39591FC9F5441155CD2C06F7151413729219AFB9F54415632DE71717151414F0B9ED9F99F54419558104E7771514180EF2891F39F5441E2E747307871514180DEC73FF29F54417D76930E79715141BA4C7445F19F54412A2E341D7C715141298ADF89ED9F54415D5FA6DC7E715141E84A7101EA9F5441DA67BA8A82715141F2006A0AE49F5441DE7A141E897151413C0535CBDA9F544108B13B8F8C715141823A99F4D69F5441C3F5282C867151417B14AE37DC9F54410AD7A3808471514185EB5198DA9F544166666626807151418FC2F548DE9F5441F6285C5F7C7151413D0AD7C3E19F54411F85EB5177715141C3F5284CE69F54419A9999A975715141000000E0E79F5441C3F5281C63715141F6285CAFF59F5441B81E853B5071514148E17A7404A05441CDCCCC4C3D715141EC51B8EE11A05441C3F528DC3D715141000000A012A05441CDCCCC1C3F715141AE47E1BA12A054418FC2F58840715141F6285C5F13A0544185EB51884171514152B81E1514A05441B81E85AB42715141D7A3705D15A05441EC51B85E4671514114AE47A11AA0544185EB51B8487151410AD7A3B01DA05441000000A04E7151415C8FC2B518A054419A99997950715141666666A615A05441D7A3709D517151413D0AD70313A05441B81E859B53715141E17A14CE11A05441333333B35671514148E17AB412A05441458B9BEB56715141A9768C6514A05441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000A4B48C1057715141FFB72B8115A054415E36532857715141A9CEB43716A05441CF04F98657715141ADE15C0E19A054416B968F7557715141BE3C513F17A05441DBFA277757715141C236A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A0544152B81ED55971514148E17A5429A05441CDCCCCAC5B715141D7A3706D28A0544185EB51385C715141295C8FC228A054411F85EB216571514114AE47C124A05441D7A370CD6B71514185EB51081CA0544148E17A94727151410AD7A3A012A054419A9999297F715141CDCCCCAC03A0544133333353837151418FC2F5B8FE9F5441000000F08A71514185EB51B8F59F5441C3F528AC8B7151417B14AE87F49F54410AD7A3D091715141000000E0E99F5441295C8F429871514148E17A84DF9F544185EB51389C7151410AD7A390D89F54418FC2F5C89E715141D7A3708DD59F5441295C8F42A471514185EB51C8D09F54415C8FC2C5A871514133333343CE9F54415C8FC215A5715141713D0A07CB9F544114AE47D1A1715141295C8F12C59F5441666666D69E7151419A999919C09F5441000000309B7151419A999929C79F5441B81E85CB987151415C8FC2D5CA9F54415C8FC235957151411F85EB81CE9F54419F4866CC91715141A9DC021DD19F54418D17A27892715141F581242DD19F54419BAABB2C8D715141E2BEC2E5D79F5441BAB5D23D8B715141B78A1103DA9F5441D122DB598771514107F8E685DE9F54418043AA7484715141264EB409E39F54419197960082715141BC19FF41E79F5441022CB4097F71514175FDA797EB9F5441F169C8027E71514118B5D60AED9F544127C713B77B715141C0DCBCE1EF9F544155E408FE777151412F057D68F49F5441E42D38F374715141E640ACBEF79F5441AFFCC53372715141E1F33D97FA9F54418B1F40006D7151414156221600A05441F245F9FE6771514120B5C76205A054417BB1E4D762715141A09180AF0AA0544148E17AF45C7151417DDC6B2E10A05441A4B48C1057715141FFB72B8115A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586115 - 1085345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000047000000A4703D6A0A425141000000A0876C54415C8FC2850C4251411F85EB81806C544114AE47510E4251415C8FC2A57B6C5441CDCCCC2C10425141D7A3700D786C54415C8FC21512425141EC51B88E756C5441333333831442514148E17A24736C5441C3F528EC154251419A999919726C54413C7264C7164251418A013277716C54418650CF691242514153D6DDB86D6C54417A013B300F4251416A41F1496C6C5441E2FC1CAE0C42514144C069A96B6C5441734066A209425141A72D8C7B6B6C5441C95EF43A0642514190C278EA6C6C544128D22155FF415141D736C87F706C5441BBDC4A1FFB415141AB278133726C5441C331EAA0F74151410CCEC32F736C54411EDE37E5F1415141CFE128FE736C5441D869E84FEE41514158D0D270746C5441E17A14FEEA415141C3F528CC736C5441E17A14DEDD415141E17A14DE756C5441E17A146EDF4151419A9999C97F6C54415C8FC275E1415141C3F528DC866C5441CDCCCC5CE141514152B81E85886C54415C8FC27500425141C3F5281C7F6C54410000004000425141E17A142E806C54415C8FC255004251411F85EBA1816C5441F6285C6F00425141AE47E19A826C544148E17A94004251413D0AD7A3846C5441EC51B8CE00425141B81E853B876C54419A9999C900425141C3F528CC896C5441B81E85BB0042514114AE47818C6C54411F85EBA100425141000000408E6C5441E17A146E00425141295C8F228F6C54417B14AE270042514133333363906C5441E17A14AEFF41514133333313916C5441333333C3FE41514133333333926C54410AD7A3B0FD415141A4703D5A936C544100000000FD41514100000070946C5441713D0AD7E4415141000000F0A06C5441EC51B81EE341514148E17AA4A06C54413D0AD7F3E0415141E17A149EA06C5441713D0AF7DF41514148E17A84A06C5441713D0AC7D941514185EB51389F6C5441D7A3707DDD415141C3F5280CA56C54419A999969DE41514185EB5118AA6C5441F6285CBFDE41514185EB5128AC6C54418FC2F568DF415141CDCCCCACB06C544185EB5128D5415141D7A3706DB26C544152B81EC5CA41514114AE4721B46C5441000000F0CE4151419A999969B56C54411F85EB21F24151410AD7A310B96C544114AE47D103425141333333F3BB6C5441295C8F6204425141C3F528ACBA6C54418FC2F5480442514152B81E45B96C5441CDCCCCBC0342514152B81E55B86C54410AD7A3E0024251418FC2F5C8B76C54410AD7A3D0FE415141CDCCCC3CB76C5441CDCCCC8CF74151418FC2F578B76C54418FC2F5E8F54151418FC2F528B76C54417B14AE07F641514152B81E45B56C544152B81E55F8415141CDCCCC3CAD6C54410AD7A390F84151410AD7A320AB6C54410AD7A330F941514152B81E05A96C544114AE4711FB4151418FC2F5C8A56C5441AE47E11A084251410AD7A3B0A56C54415C8FC235084251411F85EBF1A26C5441713D0A87074251415C8FC275986C54413D0AD7B3004251418FC2F598976C54411F85EBD1014251413D0AD713936C5441EC51B80E0742514114AE47A18B6C5441A4703D6A0A425141000000A0876C5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000D5CCCC5CE141514150B81E85886C54419A9999A9E04151419A9999498B6C5441EC51B85EDA415141EC51B81E8A6C544133333353D7415141295C8FF2886C5441AE47E10AD44151410AD7A320886C544152B81EC5CE415141295C8F02886C544133333313CC415141CDCCCC6C876C5441A4703D3ACB4151415C8FC2A5876C544152B81E45CB415141713D0A178A6C5441713D0A67CB415141CDCCCC6C8E6C544185EB51C8CB415141E17A147E906C5441E17A147ECC415141A4703D1A956C544133333363CC415141713D0A17986C54419A999979CB415141B81E85AB9E6C5441AE47E17ACB415141295C8F929F6C54411F85EB91CB41514185EB5128A06C5441713D0AC7D941514185EB51389F6C5441713D0AF7DF41514148E17A84A06C54413D0AD7F3E0415141E17A149EA06C5441EC51B81EE341514148E17AA4A06C5441713D0AD7E4415141000000F0A06C544100000000FD41514100000070946C54410AD7A3B0FD415141A4703D5A936C5441333333C3FE41514133333333926C5441E17A14AEFF41514133333313916C54417B14AE270042514133333363906C5441E17A146E00425141295C8F228F6C54411F85EBA100425141000000408E6C5441B81E85BB0042514114AE47818C6C54419A9999C900425141C3F528CC896C5441EC51B8CE00425141B81E853B876C544148E17A94004251413D0AD7A3846C5441F6285C6F00425141AE47E19A826C54415C8FC255004251411F85EBA1816C54410000004000425141E17A142E806C54415C8FC27500425141C3F5281C7F6C5441DD8ADD2B00425141C22F85327F6C5441E048C7F6FF4151417781E9CB756C5441992987E4FF4151418B73A603746C54417EEF4AF7DE415141E87B71D77C6C5441A1E7FD40DF415141411958AB7E6C5441E17A146EDF4151419A9999C97F6C54415C8FC275E1415141C3F528DC866C5441D5CCCC5CE141514150B81E85886C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586115 - 3386085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000047000000A4703D6A0A425141000000A0876C54415C8FC2850C4251411F85EB81806C544114AE47510E4251415C8FC2A57B6C5441CDCCCC2C10425141D7A3700D786C54415C8FC21512425141EC51B88E756C5441333333831442514148E17A24736C5441C3F528EC154251419A999919726C54413C7264C7164251418A013277716C54418650CF691242514153D6DDB86D6C54417A013B300F4251416A41F1496C6C5441E2FC1CAE0C42514144C069A96B6C5441734066A209425141A72D8C7B6B6C5441C95EF43A0642514190C278EA6C6C544128D22155FF415141D736C87F706C5441BBDC4A1FFB415141AB278133726C5441C331EAA0F74151410CCEC32F736C54411EDE37E5F1415141CFE128FE736C5441D869E84FEE41514158D0D270746C5441E17A14FEEA415141C3F528CC736C5441E17A14DEDD415141E17A14DE756C5441E17A146EDF4151419A9999C97F6C54415C8FC275E1415141C3F528DC866C5441CDCCCC5CE141514152B81E85886C54415C8FC27500425141C3F5281C7F6C54410000004000425141E17A142E806C54415C8FC255004251411F85EBA1816C5441F6285C6F00425141AE47E19A826C544148E17A94004251413D0AD7A3846C5441EC51B8CE00425141B81E853B876C54419A9999C900425141C3F528CC896C5441B81E85BB0042514114AE47818C6C54411F85EBA100425141000000408E6C5441E17A146E00425141295C8F228F6C54417B14AE270042514133333363906C5441E17A14AEFF41514133333313916C5441333333C3FE41514133333333926C54410AD7A3B0FD415141A4703D5A936C544100000000FD41514100000070946C5441713D0AD7E4415141000000F0A06C5441EC51B81EE341514148E17AA4A06C54413D0AD7F3E0415141E17A149EA06C5441713D0AF7DF41514148E17A84A06C5441713D0AC7D941514185EB51389F6C5441D7A3707DDD415141C3F5280CA56C54419A999969DE41514185EB5118AA6C5441F6285CBFDE41514185EB5128AC6C54418FC2F568DF415141CDCCCCACB06C544185EB5128D5415141D7A3706DB26C544152B81EC5CA41514114AE4721B46C5441000000F0CE4151419A999969B56C54411F85EB21F24151410AD7A310B96C544114AE47D103425141333333F3BB6C5441295C8F6204425141C3F528ACBA6C54418FC2F5480442514152B81E45B96C5441CDCCCCBC0342514152B81E55B86C54410AD7A3E0024251418FC2F5C8B76C54410AD7A3D0FE415141CDCCCC3CB76C5441CDCCCC8CF74151418FC2F578B76C54418FC2F5E8F54151418FC2F528B76C54417B14AE07F641514152B81E45B56C544152B81E55F8415141CDCCCC3CAD6C54410AD7A390F84151410AD7A320AB6C54410AD7A330F941514152B81E05A96C544114AE4711FB4151418FC2F5C8A56C5441AE47E11A084251410AD7A3B0A56C54415C8FC235084251411F85EBF1A26C5441713D0A87074251415C8FC275986C54413D0AD7B3004251418FC2F598976C54411F85EBD1014251413D0AD713936C5441EC51B80E0742514114AE47A18B6C5441A4703D6A0A425141000000A0876C5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000D5CCCC5CE141514150B81E85886C54419A9999A9E04151419A9999498B6C5441EC51B85EDA415141EC51B81E8A6C544133333353D7415141295C8FF2886C5441AE47E10AD44151410AD7A320886C544152B81EC5CE415141295C8F02886C544133333313CC415141CDCCCC6C876C5441A4703D3ACB4151415C8FC2A5876C544152B81E45CB415141713D0A178A6C5441713D0A67CB415141CDCCCC6C8E6C544185EB51C8CB415141E17A147E906C5441E17A147ECC415141A4703D1A956C544133333363CC415141713D0A17986C54419A999979CB415141B81E85AB9E6C5441AE47E17ACB415141295C8F929F6C54411F85EB91CB41514185EB5128A06C5441713D0AC7D941514185EB51389F6C5441713D0AF7DF41514148E17A84A06C54413D0AD7F3E0415141E17A149EA06C5441EC51B81EE341514148E17AA4A06C5441713D0AD7E4415141000000F0A06C544100000000FD41514100000070946C54410AD7A3B0FD415141A4703D5A936C5441333333C3FE41514133333333926C5441E17A14AEFF41514133333313916C54417B14AE270042514133333363906C5441E17A146E00425141295C8F228F6C54411F85EBA100425141000000408E6C5441B81E85BB0042514114AE47818C6C54419A9999C900425141C3F528CC896C5441EC51B8CE00425141B81E853B876C544148E17A94004251413D0AD7A3846C5441F6285C6F00425141AE47E19A826C54415C8FC255004251411F85EBA1816C54410000004000425141E17A142E806C54415C8FC27500425141C3F5281C7F6C5441DD8ADD2B00425141C22F85327F6C5441E048C7F6FF4151417781E9CB756C5441992987E4FF4151418B73A603746C54417EEF4AF7DE415141E87B71D77C6C5441A1E7FD40DF415141411958AB7E6C5441E17A146EDF4151419A9999C97F6C54415C8FC275E1415141C3F528DC866C5441D5CCCC5CE141514150B81E85886C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983083 - 1085726
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C88715441A4703DEA264A514114AE4731A071544114AE47A1284A514152B81EC5A8715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441AE47E15A3B4A514148E17A046E715441000000603A4A5141333333736E715441E17A144E394A5141333333237D7154415C8FC275364A5141D7A3706D867154419A999939334A5141B81E85AB86715441
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C887154415A8E9C84264A514182029E329D71544115555E83274A51413049252FA3715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441AE47E15A3B4A514148E17A046E715441000000603A4A5141333333736E715441E17A144E394A5141333333237D7154415C8FC275364A5141D7A3706D867154419A999939334A5141B81E85AB86715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983083 - 3187429
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C88715441A4703DEA264A514114AE4731A071544114AE47A1284A514152B81EC5A8715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441AE47E15A3B4A514148E17A046E715441000000603A4A5141333333736E715441E17A144E394A5141333333237D7154415C8FC275364A5141D7A3706D867154419A999939334A5141B81E85AB86715441
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C887154415A8E9C84264A514182029E329D71544115555E83274A51413049252FA3715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441AE47E15A3B4A514148E17A046E715441000000603A4A5141333333736E715441E17A144E394A5141333333237D7154415C8FC275364A5141D7A3706D867154419A999939334A5141B81E85AB86715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630579 - 423438
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000F70000003D0AD7135F1C514152B81EE5A32C55411F85EBE15F1C5141713D0AC7A32C5541B81E852B611C5141A4703DCAA32C554114AE4761621C514114AE47E1A32C554133333343631C5141B81E85EBA32C55415C8FC285641C5141B81E85EBA22C55418FC2F518661C514133333373A12C554185EB5108671C5141D7A3708DA02C554185EB5158681C5141F6285C1F9F2C5541C3F5280C691C51411F85EB619E2C55411F85EBA1691C5141295C8F729D2C5541E17A148E6A1C5141CDCCCCEC9B2C55415C8FC2056B1C514152B81E259B2C5541295C8F526B1C51413D0AD7539A2C5541AE47E18A6B1C51413D0AD763992C5541B81E85EB6B1C514148E17AD4972C55418FC2F5486C1C5141AE47E12A962C554148E17A246D1C5141333333C3932C5541AE47E17A6E1C51418FC2F5C8902C554152B81E256F1C5141A4703D4A8F2C5541333333A36F1C51418FC2F5D88D2C55411F85EB21701C5141713D0A578C2C5541CDCCCC9C701C5141D7A370BD8A2C554133333343711C51411F85EBE1882C55411F85EB11721C5141F6285CFF862C5541F6285C1F731C5141666666C6842C5541A4703D8A741C51418FC2F528822C554100000030771C51413D0AD753802C554185EB5188791C5141B81E85AB7F2C55417B14AE677B1C5141C3F528FC812C554114AE47017C1C5141B81E851B842C55413D0AD7537D1C5141AE47E1AA842C554114AE47517E1C51418FC2F578832C5541AE47E1AA7F1C5141F6285C9F812C55419A9999D9801C5141713D0A577E2C5541AE47E14A811C51413D0AD7937C2C55417B14AE27811C51411F85EBA17B2C5541C3F5282C7D1C514185EB51287A2C55410AD7A3C0791C51413D0AD7F3772C554114AE4781771C5141AE47E18A772C55419A999909751C51418FC2F588792C5541AE47E1CA711C51413D0AD7037B2C5541EC51B84E6D1C514185EB51C8802C5541E17A143E6B1C5141C3F5289C812C55418FC2F5E8651C5141A4703D3A7C2C5541295C8FD2621C5141AE47E1CA7D2C5541A4703DDA5F1C514114AE47E1772C5541CDCCCC6C5E1C51419A9999D9772C5541666666E65D1C5141295C8F42782C5541295C8F825D1C51413D0AD773782C5541333333235D1C5141F6285C9F782C5541E17A14CE5C1C5141CDCCCCDC782C554114AE47715C1C5141D7A3700D792C5541E17A141E5C1C51418FC2F538792C554152B81ED55B1C5141EC51B86E792C554114AE47515B1C5141F6285CDF792C5541AE47E1AA5A1C51418FC2F5587A2C55410AD7A3705A1C514152B81EA57A2C5541B81E856B5A1C51415C8FC2D57A2C5541295C8F925A1C514114AE47217B2C5541CDCCCC9C5A1C5141C3F5285C7B2C5541CDCCCC9C5A1C5141295C8FC27B2C5541666666865A1C514148E17A047C2C5541713D0A675A1C5141E17A142E7C2C554185EB51385A1C5141C3F5285C7C2C55413D0AD7035A1C5141F6285C7F7C2C5541AE47E19A591C5141D7A3709D7C2C5541EC51B80E571C5141CDCCCCAC7E2C554166666606561C5141C3F528AC7F2C5541CDCCCCEC541C5141EC51B8DE802C5541EC51B87E531C5141713D0AE7812C55413D0AD7E3511C5141713D0A27852C5541E17A149E501C514166666676872C55410AD7A3804E1C5141B81E855B8B2C55418FC2F5984D1C51417B14AE278D2C5541EC51B8FE4E1C51419A999909912C55417B14AEB74D1C514152B81EE5922C55419A9999294D1C5141C3F528DC932C5541000000804D1C5141D7A370BD952C55419A9999894E1C51419A9999D9962C55410AD7A3704E1C5141713D0A27982C55415C8FC2E54C1C514185EB5158982C5541D7A370BD4B1C51415C8FC235972C5541D7A3707D481C514133333363932C554185EB51D8471C5141295C8F72932C5541E17A145E471C5141A4703D8A932C5541A4703D9A461C5141333333F3932C55417B14AE77451C5141AE47E18A942C554100000070441C51418FC2F518952C5541CDCCCCFC431C514148E17A74952C5541F6285CAF431C5141666666D6952C554114AE4761431C5141A4703D5A962C554100000010431C5141EC51B81E972C554185EB51B8421C5141F6285C1F982C55410AD7A360421C514114AE4771992C55413D0AD7B3411C5141B81E854B9C2C55417B14AE07411C5141C3F528AC9E2C5541C3F528AC401C51413D0AD7F39F2C5541C3F5287C3F1C514185EB51189F2C5541295C8F123E1C5141B81E85EB9D2C5541CDCCCC7C3C1C5141713D0AA79C2C5541AE47E1BA3A1C5141B81E851B9B2C5541333333B3391C5141B81E852B9A2C5541CDCCCCFC381C51418FC2F588992C55418FC2F578381C5141D7A370ED982C55418FC2F558371C5141D7A370FD982C5541EC51B88E361C5141333333D3992C55411F85EB51361C5141AE47E15A9A2C5541713D0A37361C51413D0AD7C39A2C5541CDCCCC2C361C51419A9999399B2C5541CDCCCC2C361C514185EB51089C2C5541713D0A37361C5141AE47E1EA9C2C5541D7A3703D361C51418FC2F5B89D2C55419A999929361C5141666666769E2C55417B14AE07361C5141713D0A379F2C554114AE47D1351C51411F85EB41A02C5541A4703D8A351C5141D7A3708DA12C5541CDCCCC3C351C5141E17A148EA22C5541295C8FF2341C514166666666A32C554148E17AA4341C51413D0AD723A42C5541B81E853B341C5141A4703DDAA42C5541CDCCCCDC331C514133333343A52C5541EC51B84E331C5141000000C0A52C554148E17AC4321C51410AD7A340A62C5541CDCCCC6C321C5141CDCCCCACA62C55418FC2F528321C514133333323A72C5541A4703D0A321C514185EB5188A72C554185EB51E8311C5141E17A142EA82C5541A4703DCA311C51410AD7A310A92C5541295C8FB2311C5141666666B6A92C55417B14AE97311C5141713D0A37AA2C5541EC51B86E311C5141666666A6AA2C554166666646311C51415C8FC215AB2C5541C3F528FC301C5141D7A370DDAB2C5541B81E857B301C5141C3F528ECAC2C55415C8FC215301C51415C8FC2A5AD2C55418FC2F5582F1C5141C3F528CCAE2C554185EB51982E1C5141B81E85EBAF2C55413D0AD7D32D1C514152B81EE5B02C55419A9999492D1C514114AE47C1B12C554185EB51F82C1C51415C8FC255B22C554114AE47B12C1C5141EC51B8FEB22C55411F85EB812C1C51411F85EBB1B32C5541EC51B80E2C1C51411F85EB11B52C55411F85EBD12B1C5141000000E0B52C554152B81E952B1C5141C3F5288CB62C554152B81E552B1C5141E17A141EB72C5541E17A140E2B1C51415C8FC275B72C5541F6285CCF2A1C5141666666B6B72C5541EC51B89E2A1C514185EB51E8B72C55415C8FC2352A1C51415C8FC265B82C5541713D0AD7291C5141295C8FE2B82C554100000090291C5141295C8F52B92C55413D0AD7532A1C514114AE47F1B92C554152B81EA52A1C514185EB5138BA2C5541EC51B8DE2A1C5141F6285C7FBA2C5541713D0A072B1C514185EB51E8BA2C554148E17A142B1C5141EC51B82EBB2C5541295C8F222B1C514100000080BB2C5541295C8F222B1C51418FC2F5E8BB2C5541295C8F222B1C51419A999969BC2C55415C8FC2252B1C514114AE4701BD2C5541333333332B1C514185EB51B8BD2C5541AE47E14A2B1C5141C3F5283CBE2C5541000000702B1C51418FC2F5B8BE2C5541295C8FA22B1C51411F85EB21BF2C55418FC2F5D82B1C51410AD7A380BF2C55415C8FC2152C1C5141F6285CDFBF2C5541295C8F522C1C514166666626C02C5541AE47E17A2C1C51419A999969C02C55418FC2F5882C1C5141C3F5289CC02C554152B81E852C1C5141CDCCCCDCC02C55419A9999592C1C514166666616C12C5541713D0AF72B1C51413D0AD763C12C55417B14AEC72B1C5141D7A3709DC12C554148E17AC42B1C51415C8FC2C5C12C5541EC51B8CE2B1C514152B81EF5C12C5541D7A370ED2B1C51419A999949C22C554185EB51082C1C5141AE47E19AC22C5541EC51B80E2C1C514166666636C32C5541333333232C1C514166666676C32C5541E17A143E2C1C5141CDCCCCACC32C5541D7A3706D2C1C51413D0AD7F3C32C55411F85EB812C1C51410AD7A330C42C55419A9999992C1C514185EB5188C42C5541E17A14AE2C1C51413D0AD7E3C42C55418FC2F5C82C1C514152B81E35C52C5541333333132D1C5141A4703D9AC52C55417B14AE972D1C5141000000D0C22C554185EB51C82E1C514148E17A24BD2C5541CDCCCC1C2E1C51410AD7A3C0BC2C554114AE47C12D1C5141CDCCCC5CBC2C554185EB51582D1C514152B81ED5BB2C5541000000F02C1C5141713D0A57BB2C55413D0AD7932C1C514185EB51D8BA2C5541295C8F522C1C5141295C8F62BA2C554114AE47112C1C514185EB51B8B92C55415C8FC2E52B1C5141EC51B80EB92C554114AE47B12B1C5141EC51B81EB82C554114AE47E12B1C5141A4703D8AB72C5541295C8FB22C1C514133333313B62C554185EB51582D1C51411F85EBE1B42C55410AD7A3802E1C51413D0AD7B3B22C5541F6285CBF2F1C5141A4703D5AB02C55410AD7A3C0301C514148E17A64AE2C554148E17AB4311C5141F6285C6FAC2C5541A4703DEA321C514114AE4711AA2C55418FC2F598331C5141E17A14CEA82C5541295C8FD2341C514114AE4781A92C5541B81E850B351C514114AE47B1A92C5541CDCCCCAC361C514152B81E55A72C554148E17AC4371C51411F85EBB1A52C554148E17AD4381C5141000000E0A52C554114AE4731371C5141EC51B83EAA2C554152B81E75361C5141C3F5283CAD2C5541CDCCCC9C361C5141E17A141EB12C5541AE47E1BA361C5141C3F5285CB52C55419A9999A9361C5141A4703D8AB72C5541F6285C8F361C51418FC2F5F8B82C55413D0AD763361C514148E17AE4B92C554152B81E45361C514114AE4781BA2C554152B81E15361C514100000000BB2C554185EB51D8351C5141295C8F82BB2C5541B81E85EB361C5141EC51B81EBC2C554152B81EB5371C51417B14AEF7BB2C5541B81E859B381C51413D0AD773BB2C5541AE47E1AA381C51411F85EB41BA2C5541A4703DBA381C51411F85EB61B92C5541D7A370ED381C5141E17A145EB82C55419A999939391C5141F6285CEFB62C5541D7A3705D391C5141CDCCCC3CB62C55415C8FC2B5391C5141713D0A77AF2C55413D0AD7F3391C5141C3F528BCAD2C5541C3F528FC3A1C514152B81E85AB2C5541C3F5280C3C1C51411F85EBE1AA2C5541CDCCCC0C3D1C5141713D0A47AB2C554152B81EF53B1C514100000050AF2C5541F6285C3F3C1C5141A4703DAAB02C554133333333471C5141C3F528ACAE2C55417B14AE77561C514152B81E75AC2C5541333333C3561C51418FC2F5B8AA2C554148E17AA4571C5141B81E859BA92C5541B81E85BB581C5141C3F5281CA92C554114AE47C1581C5141CDCCCCBCA52C554185EB51A85A1C514114AE4721A52C5541E17A148E5D1C5141295C8F52A42C55413D0AD7135F1C514152B81EE5A32C554120000000EC51B83E691C5141A4703D8A8C2C55411F85EB616A1C5141CDCCCC5C8C2C5541EC51B8CE6A1C514148E17A648D2C554148E17A346A1C514152B81EC58F2C55413D0AD7E3681C5141F6285C6F922C5541713D0A77681C514133333323942C5541AE47E1DA681C514185EB5158952C5541B81E859B681C5141713D0A57962C55415C8FC255661C514185EB5128972C55419A9999E9641C514114AE47C1982C5541333333F3641C514114AE47119A2C554185EB5128661C5141333333A39A2C55419A9999B9661C51411F85EB619B2C55415C8FC255661C5141C3F5283C9C2C5541A4703DAA641C5141EC51B80E9C2C5541EC51B83E631C51411F85EB219B2C5541B81E853B5F1C51410AD7A3B0972C5541AE47E17A5F1C5141B81E857B962C55410AD7A3A05E1C514166666606952C55411F85EB215E1C51418FC2F588932C5541E17A145E601C5141F6285C9F902C5541333333D3611C5141AE47E12A8F2C5541E17A143E641C5141295C8FD28B2C55418FC2F568651C5141713D0A178A2C5541C3F5284C661C5141AE47E19A872C5541C3F5281C681C5141EC51B8DE842C5541000000106A1C5141000000E0832C554114AE47E16A1C514100000070852C55415C8FC235691C51413D0AD7A3872C554185EB5178671C5141F6285C9F8A2C5541C3F528DC671C5141000000B08B2C5541EC51B83E691C5141A4703D8A8C2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000260000000778F990331C5141500BDADCA82C5541A1DE5A83331C51414B9D0BF6A82C55418DEB2379331C5141B9CAF008A92C55414CD072AA311C5141FCD6F983AC2C55410AD7A3C0301C514148E17A64AE2C5541F6285CBF2F1C5141A4703D5AB02C55410AD7A3802E1C51413D0AD7B3B22C554185EB51582D1C51411F85EBE1B42C55415CA2EFCB2C1C5141F10477E4B52C5541F9377CC72B1C5141A82508DAB72C554114AE47B12B1C5141EC51B81EB82C55415C8FC2E52B1C5141EC51B80EB92C5541B50DE8102C1C51411342DDB6B92C5541EF52B2D52C1C51417A6FDF32BB2C5541000000F02C1C5141713D0A57BB2C554185EB51582D1C514152B81ED5BB2C554151F6B1842D1C514110A77B0EBC2C5541859DBD3F2E1C51414168B9CEBC2C5541DFAAA5C4301C514187476CE9BD2C5541308A58DF311C5141B6A95399BA2C554130E6385B331C5141425B6F53BE2C55411463F014351C51415F0C63ABBC2C554177B8A1FA351C514154B0822FBB2C554115BFD090361C5141030CC5A1B82C55410BED7BA2361C5141096E22F9B32C554150BDFD93361C514108DA6E41B02C55411DBCC692361C514195AF0023B02C554159E82775361C514143180F3DAD2C55414D0057AA311C5141C3328F62B12C55417E48AA63311C514155460874B02C5541F5CB90B3331C5141BFC297CBAC2C554113703A90331C5141489B91F7AB2C55410035BBAA331C5141BECFE146AB2C554193D2BF49341C51410C8E33CBAA2C554128079AF1341C514165B5AF46AA2C554114CC1A0C351C5141B37301CBA92C554176C5EB75341C51410132534FA92C55410778F990331C5141500BDADCA82C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>352586 - 982796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000713D0A3787B25041F6285C7F58755441C3F528FC86B25041333333A359755441F62D9C7E89B250418D6CDF145A755441AB1FFA4B91B25041A18D47765B75544190B14B1F94B250415FC642F65B755441620B57CC94B2504159F0E0145C755441295C8F8295B2504152B81E355C755441D1E9150898B25041599BDDC95C7554412E525D9799B250416FA8DE255D75544165F3D33A9DB2504131B880FC5D755441F71C788E9DB25041C50B22775C755441C3F528FCA3B25041295C8F525E7554418FC2F5D8A9B25041713D0A275F755441713D0A37B7B250410AD7A3B060755441AE47E17AB7B25041000000B05F75544152B81E05ACB250417B14AE075E755441EC51B86EA4B250417B14AEE75C755441713D0A579EB250410AD7A3605B75544114AE473197B250411F85EB515A755441E17A147E92B250411F85EBC15975544185EB516887B2504185EB5188577554417B14AE4787B25041AE47E12A58755441713D0A3787B25041F6285C7F58755441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000FE1C4D129EB25041174778565B755441713D0A579EB250410AD7A3605B755441522371889EB250416CA5066D5B755441DB7BF6D5A0B25041145BD4005C755441E8927354A1B250418BE18A205C755441065269D1A1B25041C6610EAC587554410346F41B9EB2504115604C42587554418EFD51929AB25041F326B7DA577554410E63587A97B250410DE5218057755441722F53B894B250416552641B5775544173B1924391B250413C0A5F88567554411F1D0B798EB25041C100A311567554417FFAECCB8BB250413D25CA9F55755441353176EE88B25041EEA3E82555755441287E8A2088B25041F7C9B00355755441B81E85EB87B25041AE47E1FA54755441E69D1AA587B2504199E5DD5B567554417B6F697087B25041E17B01645775544185EB516887B2504185EB518857755441678AE3F78FB25041E4FC803F59755441F75F639E91B25041C52B059559755441956BA1B392B25041B73754C859755441A3E4DB0A93B2504165BFC4D25975544114AE473197B250411F85EB515A755441E59D279998B250417B332A875A755441D613CA0199B250414D5CA5965A755441895C33669BB25041012941F15A7554414A8B7B349CB250414355C60F5B7554411A1853919DB25041A42263435B755441FE1C4D129EB25041174778565B755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230702 - 150328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000001C0000003D0AD71336FE5041D7A3709D91295441432F2A5935FE504137F85E8A8E295441A2BE2E7634FE5041DEDE08C98A295441E6D55AB233FE504197CFF6768729544107FDD52C33FE504178157B2B85295441E17A14AE2EFE504185EB511871295441713D0A972AFE5041EC51B86E5E29544148E17A2428FE5041AE47E1FA532954411F85EB2126FE5041A4703D9A4B295441D7A3707D24FE50419A9999C943295441EC51B81E24FE5041AE47E18A42295441C3F5288C23FE504185EB510841295441713D0A0723FE5041000000903F2954417B14AE3722FE5041A4703DFA3D295441B81E854B21FE504152B81E953C29544114AE478120FE5041666666F63B295441AE47E12A1EFE504152B81EB53B2954410AD7A3C024FE50411F85EBB15729544152B81EB529FE5041713D0A976C29544114AE473129FE5041333333A36C2954419A99997935FE50415C8FC2959C2954410000003037FE50419A9999A99C2954413D0AD72338FE5041E17A14AE9B295441EC51B89E38FE5041713D0AF79A2954410AD7A32038FE5041D7A370FD992954413D0AD79337FE5041000000E09729544112F5BB4237FE5041C3039092962954413D0AD71336FE5041D7A3709D912954410103000000010000000E000000333333E31AFE5041333333C3142954415C8FC25519FE5041666666960D295441E17A14AE18FE504148E17AE40C2954419A99998917FE5041D7A3701D0C295441C3F5286C1CFE50417B14AEB7222954413D0AD7D31EFE5041666666862D2954418FC2F52820FE50417B14AE872C29544114AE47811FFE5041295C8FB229295441666666D61EFE5041713D0AD7262954411F85EB311EFE50411F85EB01242954410AD7A3901DFE50410000001021295441295C8FE21CFE5041EC51B83E1E295441E17A144E1CFE50410AD7A3701B295441333333E31AFE5041333333C314295441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000001599525E22FE50417F05DB453E295441FB2E590C20FE504131DFAAF93B29544165A03C301EFE5041EC33E3CB3B2954410AD7A3C024FE50411F85EBB15729544152B81EB529FE5041713D0A976C29544159B0685229FE504195F824A06C29544105AAD2B42DFE5041B01B1F427E29544194BE237031FE5041EB436AD38C29544154A4A57735FE504163DC228E9C2954414962EFF736FE504193848B399C295441D6E3F37437FE5041050387BC9B2954416365F8F137FE5041E06BAC2A9B2954417E47DE1738FE504161001BF3992954412F9A6FD737FE504160E8EFE3982954413D0AD79337FE5041000000E0972954410EF5BB4237FE5041C4039092962954413D0AD71336FE5041D7A3709D912954413E2F2A5935FE504133F85E8A8E295441A5BE2E7634FE5041E1DE08C98A295441E4D55AB233FE504195CFF67687295441367BF99933FE504148DAB00B872954412AFD087B31FE5041E673B01E7E295441F1680A0430FE5041EA6D7B0F77295441E17A14AE2EFE504185EB5118712954419AC8C97D2EFE50414173F73B70295441F447DE272EFE50411E0712D06E29544103CB47BB2DFE5041748A6FC46C295441736027302DFE504158509B496A295441550FD0972CFE50414E0D7B9267295441DEE06E452BFE504121F3778A61295441D7F407FF28FE50410695A1B857295441269614E828FE50419F463A3E5729544140785FE428FE5041C7E5642E572954410394B8DB28FE50417CCB710957295441F28F639628FE5041AE5959E1552954413BD3F67A28FE50416BFF396C5529544140834FD727FE5041A0AD3EB9522954411F85EB2126FE5041A4703D9A4B295441DE22ECEB25FE50410AE851994A2954417FFE737C24FE504105F37CE043295441887BF09F23FE504187E9124A412954415CEDF07A22FE5041301CDB7D3E2954411599525E22FE50417F05DB453E295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230702 - 357461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000001C0000003D0AD71336FE5041D7A3709D91295441432F2A5935FE504137F85E8A8E295441A2BE2E7634FE5041DEDE08C98A295441E6D55AB233FE504197CFF6768729544107FDD52C33FE504178157B2B85295441E17A14AE2EFE504185EB511871295441713D0A972AFE5041EC51B86E5E29544148E17A2428FE5041AE47E1FA532954411F85EB2126FE5041A4703D9A4B295441D7A3707D24FE50419A9999C943295441EC51B81E24FE5041AE47E18A42295441C3F5288C23FE504185EB510841295441713D0A0723FE5041000000903F2954417B14AE3722FE5041A4703DFA3D295441B81E854B21FE504152B81E953C29544114AE478120FE5041666666F63B295441AE47E12A1EFE504152B81EB53B2954410AD7A3C024FE50411F85EBB15729544152B81EB529FE5041713D0A976C29544114AE473129FE5041333333A36C2954419A99997935FE50415C8FC2959C2954410000003037FE50419A9999A99C2954413D0AD72338FE5041E17A14AE9B295441EC51B89E38FE5041713D0AF79A2954410AD7A32038FE5041D7A370FD992954413D0AD79337FE5041000000E09729544112F5BB4237FE5041C3039092962954413D0AD71336FE5041D7A3709D912954410103000000010000000E000000333333E31AFE5041333333C3142954415C8FC25519FE5041666666960D295441E17A14AE18FE504148E17AE40C2954419A99998917FE5041D7A3701D0C295441C3F5286C1CFE50417B14AEB7222954413D0AD7D31EFE5041666666862D2954418FC2F52820FE50417B14AE872C29544114AE47811FFE5041295C8FB229295441666666D61EFE5041713D0AD7262954411F85EB311EFE50411F85EB01242954410AD7A3901DFE50410000001021295441295C8FE21CFE5041EC51B83E1E295441E17A144E1CFE50410AD7A3701B295441333333E31AFE5041333333C314295441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000001599525E22FE50417F05DB453E295441FB2E590C20FE504131DFAAF93B29544165A03C301EFE5041EC33E3CB3B2954410AD7A3C024FE50411F85EBB15729544152B81EB529FE5041713D0A976C29544159B0685229FE504195F824A06C29544105AAD2B42DFE5041B01B1F427E29544194BE237031FE5041EB436AD38C29544154A4A57735FE504163DC228E9C2954414962EFF736FE504193848B399C295441D6E3F37437FE5041050387BC9B2954416365F8F137FE5041E06BAC2A9B2954417E47DE1738FE504161001BF3992954412F9A6FD737FE504160E8EFE3982954413D0AD79337FE5041000000E0972954410EF5BB4237FE5041C4039092962954413D0AD71336FE5041D7A3709D912954413E2F2A5935FE504133F85E8A8E295441A5BE2E7634FE5041E1DE08C98A295441E4D55AB233FE504195CFF67687295441367BF99933FE504148DAB00B872954412AFD087B31FE5041E673B01E7E295441F1680A0430FE5041EA6D7B0F77295441E17A14AE2EFE504185EB5118712954419AC8C97D2EFE50414173F73B70295441F447DE272EFE50411E0712D06E29544103CB47BB2DFE5041748A6FC46C295441736027302DFE504158509B496A295441550FD0972CFE50414E0D7B9267295441DEE06E452BFE504121F3778A61295441D7F407FF28FE50410695A1B857295441269614E828FE50419F463A3E5729544140785FE428FE5041C7E5642E572954410394B8DB28FE50417CCB710957295441F28F639628FE5041AE5959E1552954413BD3F67A28FE50416BFF396C5529544140834FD727FE5041A0AD3EB9522954411F85EB2126FE5041A4703D9A4B295441DE22ECEB25FE50410AE851994A2954417FFE737C24FE504105F37CE043295441887BF09F23FE504187E9124A412954415CEDF07A22FE5041301CDB7D3E2954411599525E22FE50417F05DB453E295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 415454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441F6285C1F62625141E17A149EF43B5441666666765D6251417B14AEB7EE3B5441B81E85EB4E625141295C8FE2EE3B544148E17A843C62514148E17A14EE3B5441F6285CAF32625141713D0A67ED3B544185EB51E832625141000000E0EB3B5441295C8FC23362514100000040E83B5441AE47E14A3362514133333333E83B5441713D0A07326251411F85EB81E73B54410AD7A3F02E625141333333D3E63B544152B81E9529625141CDCCCCACE63B544185EB51D81C6251419A9999F9E83B54410AD7A3401B625141E17A143EF43B5441713D0AB71A6251411F85EB01F73B5441713D0AB7176251418FC2F5B8FE3B5441000000C015625141F6285CFF033C5441E17A149E156251411F85EB91043C54417B14AE471C625141E17A147E0C3C54418FC2F5E81D6251417B14AE570C3C5441666666361F6251418FC2F5280C3C54418FC2F5F820625141A4703D3A0C3C544114AE4781226251410AD7A3800C3C5441EC51B8CE2362514114AE47010D3C54417B14AED72562514114AE47F10D3C544148E17A9427625141295C8FB20E3C544114AE47C12A625141295C8FE20F3C544114AE47B12B625141EC51B82E103C54419A9999492C62514100000000103C544148E17AC42C62514152B81E850F3C5441B81E858B2D625141CDCCCCDC0F3C5441C3F5280C2E62514152B81E950E3C5441666666F62E625141E17A14AE0B3C54411F85EBF133625141C3F5288C0C3C54413D0AD7B33462514100000010143C5441F6285C1F37625141CDCCCC0C153C5441713D0A273B625141B81E852B163C5441AE47E16A4062514148E17AE4173C5441295C8F524162514114AE4741183C54411F85EBC142625141EC51B85E193C5441CDCCCC6C44625141B81E851B1B3C544185EB51F845625141000000D01C3C5441F6285C7F4762514114AE47D11F3C5441EB479A7348625141F1E82F32223C5441FBF0B6DB4962514186DEF39E263C5441345DB4174C6251418292A1FB2D3C544181DE98854E625141A7D0AD76353C5441F8F70BF74E625141BFFD85C6363C544187C54E14576251417FBE5D47343C54412C34A0C95862514172590FDD393C5441DD69FAA6566251412F8F9E633A3C5441B2C881BC57625141442D4EF83D3C5441420D3D5652625141267A96743F3C5441CEE2809B52625141D5640A45403C5441B88DBDD0526251414348EDDB403C5441EC8E69175462514180E1EC79403C544135C36A3D55625141C07D9A48433C54413C75E9FE53625141F84AF0BA433C5441A4D879AB54625141A74CE974453C54417269EDD856625141CE6380CE483C54410492D34659625141ACA3D8C44B3C54419448784B5A625141909E264F4D3C54413DC088DD5B625141599A92B94F3C5441488478765D625141481B5CAE543C5441C9E836925E6251411CFA415C583C544107C0761F60625141941C88005B3C54417E57DA8861625141F172B2415D3C5441AB8BA07362625141AA25B62E5E3C5441B83BA18663625141824A4D015E3C54412379705A64625141BEB1DA6A5D3C54413DA01912666251413761E6425B3C54419C27E0A06962514169E980CB563C544134F2F3686D62514188822B0C523C54417EE0AA596F625141E6F5969C4F3C544145DACA7571625141C3FC82F64C3C5441F3449D3E736251417746F2E24A3C5441C3A54BF774625141C1446A5A493C5441321513C776625141FA98AA25483C5441C289224A7D6251418E3BF954443C544186A1AA497D625141EC82A08A433C5441C32737DB7C6251411DDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C5441180000001F85EBF11F6251418FC2F5880A3C5441295C8F821F625141F6285CCF0A3C5441C3F528FC1E62514185EB51F80A3C5441C3F5284C1E625141713D0A270B3C544114AE47911D625141CDCCCC2C0B3C5441D7A370ED1C625141A4703D0A0B3C544152B81E551C625141AE47E19A0A3C5441B81E85AB176251415C8FC235053C54417B14AE4717625141D7A3709D043C5441AE47E12A17625141E17A14EE033C5441C3F5283C17625141EC51B83E033C5441295C8F82176251417B14AE77023C5441D7A370FD1762514185EB51C8013C5441CDCCCCAC18625141A4703D2A013C54419A99997919625141E17A14DE003C5441AE47E13A1A625141E17A14DE003C54417B14AE071B625141713D0A07013C544148E17AD41B6251417B14AE87013C544114AE47A12062514185EB51F8063C54417B14AEE720625141AE47E18A073C5441333333F3206251411F85EB91083C5441EC51B8BE20625141A4703D6A093C5441713D0A6720625141000000200A3C54411F85EBF11F6251418FC2F5880A3C5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000C3F528FC9462514148E17A44243C544185EB518894625141A4703DFA1F3C54411F85EB7192625141295C8F72133C5441A4703D2A83625141A4703D0A113C5441333333F37C625141CDCCCC6C133C54413D0AD7437162514114AE4741173C54415C8FC2356F62514100000030183C5441A4703D3A6D625141EC51B87E193C54410AD7A3806962514148E17AF41B3C54417B14AEA7686251410AD7A3001D3C54417B14AE97716251410AD7A320233C5441000000A07B6251410AD7A3002A3C54413D0AD7837C625141E17A14AE373C5441666666567D625141E17A144E443C5441A4703D0A846251410AD7A330413C5441713D0A5788625141CDCCCC5C3F3C54415C8FC2A591625141E17A14DE3B3C5441295C8F529362514152B81EF53A3C5441713D0A0796625141295C8FF2393C54418FC2F5F89562514152B81E15353C5441EC51B8EE956251411F85EBC1313C54419A9999E99562514152B81E05303C54413333336395625141F6285C1F283C5441EC51B83E95625141AE47E1BA263C5441C3F528FC9462514148E17A44243C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 1003895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441F6285C1F62625141E17A149EF43B5441666666765D6251417B14AEB7EE3B5441B81E85EB4E625141295C8FE2EE3B544148E17A843C62514148E17A14EE3B5441F6285CAF32625141713D0A67ED3B544185EB51E832625141000000E0EB3B5441295C8FC23362514100000040E83B5441AE47E14A3362514133333333E83B5441713D0A07326251411F85EB81E73B54410AD7A3F02E625141333333D3E63B544152B81E9529625141CDCCCCACE63B544185EB51D81C6251419A9999F9E83B54410AD7A3401B625141E17A143EF43B5441713D0AB71A6251411F85EB01F73B5441713D0AB7176251418FC2F5B8FE3B5441000000C015625141F6285CFF033C5441E17A149E156251411F85EB91043C54417B14AE471C625141E17A147E0C3C54418FC2F5E81D6251417B14AE570C3C5441666666361F6251418FC2F5280C3C54418FC2F5F820625141A4703D3A0C3C544114AE4781226251410AD7A3800C3C5441EC51B8CE2362514114AE47010D3C54417B14AED72562514114AE47F10D3C544148E17A9427625141295C8FB20E3C544114AE47C12A625141295C8FE20F3C544114AE47B12B625141EC51B82E103C54419A9999492C62514100000000103C544148E17AC42C62514152B81E850F3C5441B81E858B2D625141CDCCCCDC0F3C5441C3F5280C2E62514152B81E950E3C5441666666F62E625141E17A14AE0B3C54411F85EBF133625141C3F5288C0C3C54413D0AD7B33462514100000010143C5441F6285C1F37625141CDCCCC0C153C5441713D0A273B625141B81E852B163C5441AE47E16A4062514148E17AE4173C5441295C8F524162514114AE4741183C54411F85EBC142625141EC51B85E193C5441CDCCCC6C44625141B81E851B1B3C544185EB51F845625141000000D01C3C5441F6285C7F4762514114AE47D11F3C5441EB479A7348625141F1E82F32223C5441FBF0B6DB4962514186DEF39E263C5441345DB4174C6251418292A1FB2D3C544181DE98854E625141A7D0AD76353C5441F8F70BF74E625141BFFD85C6363C544187C54E14576251417FBE5D47343C54412C34A0C95862514172590FDD393C5441DD69FAA6566251412F8F9E633A3C5441B2C881BC57625141442D4EF83D3C5441420D3D5652625141267A96743F3C5441CEE2809B52625141D5640A45403C5441B88DBDD0526251414348EDDB403C5441EC8E69175462514180E1EC79403C544135C36A3D55625141C07D9A48433C54413C75E9FE53625141F84AF0BA433C5441A4D879AB54625141A74CE974453C54417269EDD856625141CE6380CE483C54410492D34659625141ACA3D8C44B3C54419448784B5A625141909E264F4D3C54413DC088DD5B625141599A92B94F3C5441488478765D625141481B5CAE543C5441C9E836925E6251411CFA415C583C544107C0761F60625141941C88005B3C54417E57DA8861625141F172B2415D3C5441AB8BA07362625141AA25B62E5E3C5441B83BA18663625141824A4D015E3C54412379705A64625141BEB1DA6A5D3C54413DA01912666251413761E6425B3C54419C27E0A06962514169E980CB563C544134F2F3686D62514188822B0C523C54417EE0AA596F625141E6F5969C4F3C544145DACA7571625141C3FC82F64C3C5441F3449D3E736251417746F2E24A3C5441C3A54BF774625141C1446A5A493C5441321513C776625141FA98AA25483C5441C289224A7D6251418E3BF954443C544186A1AA497D625141EC82A08A433C5441C32737DB7C6251411DDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C5441180000001F85EBF11F6251418FC2F5880A3C5441295C8F821F625141F6285CCF0A3C5441C3F528FC1E62514185EB51F80A3C5441C3F5284C1E625141713D0A270B3C544114AE47911D625141CDCCCC2C0B3C5441D7A370ED1C625141A4703D0A0B3C544152B81E551C625141AE47E19A0A3C5441B81E85AB176251415C8FC235053C54417B14AE4717625141D7A3709D043C5441AE47E12A17625141E17A14EE033C5441C3F5283C17625141EC51B83E033C5441295C8F82176251417B14AE77023C5441D7A370FD1762514185EB51C8013C5441CDCCCCAC18625141A4703D2A013C54419A99997919625141E17A14DE003C5441AE47E13A1A625141E17A14DE003C54417B14AE071B625141713D0A07013C544148E17AD41B6251417B14AE87013C544114AE47A12062514185EB51F8063C54417B14AEE720625141AE47E18A073C5441333333F3206251411F85EB91083C5441EC51B8BE20625141A4703D6A093C5441713D0A6720625141000000200A3C54411F85EBF11F6251418FC2F5880A3C5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000C3F528FC9462514148E17A44243C544185EB518894625141A4703DFA1F3C54411F85EB7192625141295C8F72133C5441A4703D2A83625141A4703D0A113C5441333333F37C625141CDCCCC6C133C54413D0AD7437162514114AE4741173C54415C8FC2356F62514100000030183C5441A4703D3A6D625141EC51B87E193C54410AD7A3806962514148E17AF41B3C54417B14AEA7686251410AD7A3001D3C54417B14AE97716251410AD7A320233C5441000000A07B6251410AD7A3002A3C54413D0AD7837C625141E17A14AE373C5441666666567D625141E17A144E443C5441A4703D0A846251410AD7A330413C5441713D0A5788625141CDCCCC5C3F3C54415C8FC2A591625141E17A14DE3B3C5441295C8F529362514152B81EF53A3C5441713D0A0796625141295C8FF2393C54418FC2F5F89562514152B81E15353C5441EC51B8EE956251411F85EBC1313C54419A9999E99562514152B81E05303C54413333336395625141F6285C1F283C5441EC51B83E95625141AE47E1BA263C5441C3F528FC9462514148E17A44243C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 3049063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441F6285C1F62625141E17A149EF43B5441666666765D6251417B14AEB7EE3B5441B81E85EB4E625141295C8FE2EE3B544148E17A843C62514148E17A14EE3B5441F6285CAF32625141713D0A67ED3B544185EB51E832625141000000E0EB3B5441295C8FC23362514100000040E83B5441AE47E14A3362514133333333E83B5441713D0A07326251411F85EB81E73B54410AD7A3F02E625141333333D3E63B544152B81E9529625141CDCCCCACE63B544185EB51D81C6251419A9999F9E83B54410AD7A3401B625141E17A143EF43B5441713D0AB71A6251411F85EB01F73B5441713D0AB7176251418FC2F5B8FE3B5441000000C015625141F6285CFF033C5441E17A149E156251411F85EB91043C54417B14AE471C625141E17A147E0C3C54418FC2F5E81D6251417B14AE570C3C5441666666361F6251418FC2F5280C3C54418FC2F5F820625141A4703D3A0C3C544114AE4781226251410AD7A3800C3C5441EC51B8CE2362514114AE47010D3C54417B14AED72562514114AE47F10D3C544148E17A9427625141295C8FB20E3C544114AE47C12A625141295C8FE20F3C544114AE47B12B625141EC51B82E103C54419A9999492C62514100000000103C544148E17AC42C62514152B81E850F3C5441B81E858B2D625141CDCCCCDC0F3C5441C3F5280C2E62514152B81E950E3C5441666666F62E625141E17A14AE0B3C54411F85EBF133625141C3F5288C0C3C54413D0AD7B33462514100000010143C5441F6285C1F37625141CDCCCC0C153C5441713D0A273B625141B81E852B163C5441AE47E16A4062514148E17AE4173C5441295C8F524162514114AE4741183C54411F85EBC142625141EC51B85E193C5441CDCCCC6C44625141B81E851B1B3C544185EB51F845625141000000D01C3C5441F6285C7F4762514114AE47D11F3C5441EB479A7348625141F1E82F32223C5441FBF0B6DB4962514186DEF39E263C5441345DB4174C6251418292A1FB2D3C544181DE98854E625141A7D0AD76353C5441F8F70BF74E625141BFFD85C6363C544187C54E14576251417FBE5D47343C54412C34A0C95862514172590FDD393C5441DD69FAA6566251412F8F9E633A3C5441B2C881BC57625141442D4EF83D3C5441420D3D5652625141267A96743F3C5441CEE2809B52625141D5640A45403C5441B88DBDD0526251414348EDDB403C5441EC8E69175462514180E1EC79403C544135C36A3D55625141C07D9A48433C54413C75E9FE53625141F84AF0BA433C5441A4D879AB54625141A74CE974453C54417269EDD856625141CE6380CE483C54410492D34659625141ACA3D8C44B3C54419448784B5A625141909E264F4D3C54413DC088DD5B625141599A92B94F3C5441488478765D625141481B5CAE543C5441C9E836925E6251411CFA415C583C544107C0761F60625141941C88005B3C54417E57DA8861625141F172B2415D3C5441AB8BA07362625141AA25B62E5E3C5441B83BA18663625141824A4D015E3C54412379705A64625141BEB1DA6A5D3C54413DA01912666251413761E6425B3C54419C27E0A06962514169E980CB563C544134F2F3686D62514188822B0C523C54417EE0AA596F625141E6F5969C4F3C544145DACA7571625141C3FC82F64C3C5441F3449D3E736251417746F2E24A3C5441C3A54BF774625141C1446A5A493C5441321513C776625141FA98AA25483C5441C289224A7D6251418E3BF954443C544186A1AA497D625141EC82A08A433C5441C32737DB7C6251411DDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C5441180000001F85EBF11F6251418FC2F5880A3C5441295C8F821F625141F6285CCF0A3C5441C3F528FC1E62514185EB51F80A3C5441C3F5284C1E625141713D0A270B3C544114AE47911D625141CDCCCC2C0B3C5441D7A370ED1C625141A4703D0A0B3C544152B81E551C625141AE47E19A0A3C5441B81E85AB176251415C8FC235053C54417B14AE4717625141D7A3709D043C5441AE47E12A17625141E17A14EE033C5441C3F5283C17625141EC51B83E033C5441295C8F82176251417B14AE77023C5441D7A370FD1762514185EB51C8013C5441CDCCCCAC18625141A4703D2A013C54419A99997919625141E17A14DE003C5441AE47E13A1A625141E17A14DE003C54417B14AE071B625141713D0A07013C544148E17AD41B6251417B14AE87013C544114AE47A12062514185EB51F8063C54417B14AEE720625141AE47E18A073C5441333333F3206251411F85EB91083C5441EC51B8BE20625141A4703D6A093C5441713D0A6720625141000000200A3C54411F85EBF11F6251418FC2F5880A3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000425757AD686251412C0A85041D3C5441DC4C946D68625141A969EC181D3C5441CB8C788C66625141C0796BA21F3C5441C66C23FC65625141D3C9B1CB213C5441B96C407B646251413A4A58122D3C5441B5AC071B64625141471A2D7B2E3C5441ADFC874263625141699A643D323C5441A0FCA4C161625141792A7206343C5441A25CC1F16162514189BA7FCF353C5441746CD1F65C625141F81AB406423C54416F4C7C665C625141FC0AFB7E423C54414EFC52BC58625141193BCF98453C54412C8E749D55625141BBE22CE9463C54417069EDD856625141D36380CE483C54410392D34659625141B0A3D8C44B3C54419148784B5A625141909E264F4D3C544138C088DD5B625141579A92B94F3C54414B8478765D625141491B5CAE543C5441CAE836925E62514120FA415C583C544106C0761F606251418F1C88005B3C54417A57DA8861625141EF72B2415D3C5441A68BA07362625141AC25B62E5E3C5441BA3BA18663625141814A4D015E3C54412479705A64625141BDB1DA6A5D3C54413AA01912666251413361E6425B3C54419D27E0A0696251416AE980CB563C544135F2F3686D62514185822B0C523C54417EE0AA596F625141E6F5969C4F3C544144DACA7571625141BFFC82F64C3C5441F5449D3E736251417946F2E24A3C5441C6A54BF774625141C2446A5A493C5441311513C776625141FB98AA25483C5441C389224A7D6251418B3BF954443C544189A1AA497D625141ED82A08A433C5441BF2737DB7C6251411BDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441CA2E3FB86E6251418107A328213C5441213DC3BD686251416208C60F1D3C5441425757AD686251412C0A85041D3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 3307658
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441F6285C1F62625141E17A149EF43B5441666666765D6251417B14AEB7EE3B5441B81E85EB4E625141295C8FE2EE3B544148E17A843C62514148E17A14EE3B5441F6285CAF32625141713D0A67ED3B544185EB51E832625141000000E0EB3B5441295C8FC23362514100000040E83B5441AE47E14A3362514133333333E83B5441713D0A07326251411F85EB81E73B54410AD7A3F02E625141333333D3E63B544152B81E9529625141CDCCCCACE63B544185EB51D81C6251419A9999F9E83B54410AD7A3401B625141E17A143EF43B5441713D0AB71A6251411F85EB01F73B5441713D0AB7176251418FC2F5B8FE3B5441000000C015625141F6285CFF033C5441E17A149E156251411F85EB91043C54417B14AE471C625141E17A147E0C3C54418FC2F5E81D6251417B14AE570C3C5441666666361F6251418FC2F5280C3C54418FC2F5F820625141A4703D3A0C3C544114AE4781226251410AD7A3800C3C5441EC51B8CE2362514114AE47010D3C54417B14AED72562514114AE47F10D3C544148E17A9427625141295C8FB20E3C544114AE47C12A625141295C8FE20F3C544114AE47B12B625141EC51B82E103C54419A9999492C62514100000000103C544148E17AC42C62514152B81E850F3C5441B81E858B2D625141CDCCCCDC0F3C5441C3F5280C2E62514152B81E950E3C5441666666F62E625141E17A14AE0B3C54411F85EBF133625141C3F5288C0C3C54413D0AD7B33462514100000010143C5441F6285C1F37625141CDCCCC0C153C5441713D0A273B625141B81E852B163C5441AE47E16A4062514148E17AE4173C5441295C8F524162514114AE4741183C54411F85EBC142625141EC51B85E193C5441CDCCCC6C44625141B81E851B1B3C544185EB51F845625141000000D01C3C5441F6285C7F4762514114AE47D11F3C5441EB479A7348625141F1E82F32223C5441FBF0B6DB4962514186DEF39E263C5441345DB4174C6251418292A1FB2D3C544181DE98854E625141A7D0AD76353C5441F8F70BF74E625141BFFD85C6363C544187C54E14576251417FBE5D47343C54412C34A0C95862514172590FDD393C5441DD69FAA6566251412F8F9E633A3C5441B2C881BC57625141442D4EF83D3C5441420D3D5652625141267A96743F3C5441CEE2809B52625141D5640A45403C5441B88DBDD0526251414348EDDB403C5441EC8E69175462514180E1EC79403C544135C36A3D55625141C07D9A48433C54413C75E9FE53625141F84AF0BA433C5441A4D879AB54625141A74CE974453C54417269EDD856625141CE6380CE483C54410492D34659625141ACA3D8C44B3C54419448784B5A625141909E264F4D3C54413DC088DD5B625141599A92B94F3C5441488478765D625141481B5CAE543C5441C9E836925E6251411CFA415C583C544107C0761F60625141941C88005B3C54417E57DA8861625141F172B2415D3C5441AB8BA07362625141AA25B62E5E3C5441B83BA18663625141824A4D015E3C54412379705A64625141BEB1DA6A5D3C54413DA01912666251413761E6425B3C54419C27E0A06962514169E980CB563C544134F2F3686D62514188822B0C523C54417EE0AA596F625141E6F5969C4F3C544145DACA7571625141C3FC82F64C3C5441F3449D3E736251417746F2E24A3C5441C3A54BF774625141C1446A5A493C5441321513C776625141FA98AA25483C5441C289224A7D6251418E3BF954443C544186A1AA497D625141EC82A08A433C5441C32737DB7C6251411DDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C5441180000001F85EBF11F6251418FC2F5880A3C5441295C8F821F625141F6285CCF0A3C5441C3F528FC1E62514185EB51F80A3C5441C3F5284C1E625141713D0A270B3C544114AE47911D625141CDCCCC2C0B3C5441D7A370ED1C625141A4703D0A0B3C544152B81E551C625141AE47E19A0A3C5441B81E85AB176251415C8FC235053C54417B14AE4717625141D7A3709D043C5441AE47E12A17625141E17A14EE033C5441C3F5283C17625141EC51B83E033C5441295C8F82176251417B14AE77023C5441D7A370FD1762514185EB51C8013C5441CDCCCCAC18625141A4703D2A013C54419A99997919625141E17A14DE003C5441AE47E13A1A625141E17A14DE003C54417B14AE071B625141713D0A07013C544148E17AD41B6251417B14AE87013C544114AE47A12062514185EB51F8063C54417B14AEE720625141AE47E18A073C5441333333F3206251411F85EB91083C5441EC51B8BE20625141A4703D6A093C5441713D0A6720625141000000200A3C54411F85EBF11F6251418FC2F5880A3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000425757AD686251412C0A85041D3C5441DC4C946D68625141A969EC181D3C5441CB8C788C66625141C0796BA21F3C5441C66C23FC65625141D3C9B1CB213C5441B96C407B646251413A4A58122D3C5441B5AC071B64625141471A2D7B2E3C5441ADFC874263625141699A643D323C5441A0FCA4C161625141792A7206343C5441A25CC1F16162514189BA7FCF353C5441746CD1F65C625141F81AB406423C54416F4C7C665C625141FC0AFB7E423C54414EFC52BC58625141193BCF98453C54412C8E749D55625141BBE22CE9463C54417069EDD856625141D36380CE483C54410392D34659625141B0A3D8C44B3C54419148784B5A625141909E264F4D3C544138C088DD5B625141579A92B94F3C54414B8478765D625141491B5CAE543C5441CAE836925E62514120FA415C583C544106C0761F606251418F1C88005B3C54417A57DA8861625141EF72B2415D3C5441A68BA07362625141AC25B62E5E3C5441BA3BA18663625141814A4D015E3C54412479705A64625141BDB1DA6A5D3C54413AA01912666251413361E6425B3C54419D27E0A0696251416AE980CB563C544135F2F3686D62514185822B0C523C54417EE0AA596F625141E6F5969C4F3C544144DACA7571625141BFFC82F64C3C5441F5449D3E736251417946F2E24A3C5441C6A54BF774625141C2446A5A493C5441311513C776625141FB98AA25483C5441C389224A7D6251418B3BF954443C544189A1AA497D625141ED82A08A433C5441BF2737DB7C6251411BDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441CA2E3FB86E6251418107A328213C5441213DC3BD686251416208C60F1D3C5441425757AD686251412C0A85041D3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 3666699
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441F6285C1F62625141E17A149EF43B5441666666765D6251417B14AEB7EE3B5441B81E85EB4E625141295C8FE2EE3B544148E17A843C62514148E17A14EE3B5441F6285CAF32625141713D0A67ED3B544185EB51E832625141000000E0EB3B5441295C8FC23362514100000040E83B5441AE47E14A3362514133333333E83B5441713D0A07326251411F85EB81E73B54410AD7A3F02E625141333333D3E63B544152B81E9529625141CDCCCCACE63B544185EB51D81C6251419A9999F9E83B54410AD7A3401B625141E17A143EF43B5441713D0AB71A6251411F85EB01F73B5441713D0AB7176251418FC2F5B8FE3B5441000000C015625141F6285CFF033C5441E17A149E156251411F85EB91043C54417B14AE471C625141E17A147E0C3C54418FC2F5E81D6251417B14AE570C3C5441666666361F6251418FC2F5280C3C54418FC2F5F820625141A4703D3A0C3C544114AE4781226251410AD7A3800C3C5441EC51B8CE2362514114AE47010D3C54417B14AED72562514114AE47F10D3C544148E17A9427625141295C8FB20E3C544114AE47C12A625141295C8FE20F3C544114AE47B12B625141EC51B82E103C54419A9999492C62514100000000103C544148E17AC42C62514152B81E850F3C5441B81E858B2D625141CDCCCCDC0F3C5441C3F5280C2E62514152B81E950E3C5441666666F62E625141E17A14AE0B3C54411F85EBF133625141C3F5288C0C3C54413D0AD7B33462514100000010143C5441F6285C1F37625141CDCCCC0C153C5441713D0A273B625141B81E852B163C5441AE47E16A4062514148E17AE4173C5441295C8F524162514114AE4741183C54411F85EBC142625141EC51B85E193C5441CDCCCC6C44625141B81E851B1B3C544185EB51F845625141000000D01C3C5441F6285C7F4762514114AE47D11F3C5441EB479A7348625141F1E82F32223C5441FBF0B6DB4962514186DEF39E263C5441345DB4174C6251418292A1FB2D3C544181DE98854E625141A7D0AD76353C5441F8F70BF74E625141BFFD85C6363C544187C54E14576251417FBE5D47343C54412C34A0C95862514172590FDD393C5441DD69FAA6566251412F8F9E633A3C5441B2C881BC57625141442D4EF83D3C5441420D3D5652625141267A96743F3C5441CEE2809B52625141D5640A45403C5441B88DBDD0526251414348EDDB403C5441EC8E69175462514180E1EC79403C544135C36A3D55625141C07D9A48433C54413C75E9FE53625141F84AF0BA433C5441A4D879AB54625141A74CE974453C54417269EDD856625141CE6380CE483C54410492D34659625141ACA3D8C44B3C54419448784B5A625141909E264F4D3C54413DC088DD5B625141599A92B94F3C5441488478765D625141481B5CAE543C5441C9E836925E6251411CFA415C583C544107C0761F60625141941C88005B3C54417E57DA8861625141F172B2415D3C5441AB8BA07362625141AA25B62E5E3C5441B83BA18663625141824A4D015E3C54412379705A64625141BEB1DA6A5D3C54413DA01912666251413761E6425B3C54419C27E0A06962514169E980CB563C544134F2F3686D62514188822B0C523C54417EE0AA596F625141E6F5969C4F3C544145DACA7571625141C3FC82F64C3C5441F3449D3E736251417746F2E24A3C5441C3A54BF774625141C1446A5A493C5441321513C776625141FA98AA25483C5441C289224A7D6251418E3BF954443C544186A1AA497D625141EC82A08A433C5441C32737DB7C6251411DDA40EB3C3C5441844D5BB87C625141D0C82FD43A3C5441180000001F85EBF11F6251418FC2F5880A3C5441295C8F821F625141F6285CCF0A3C5441C3F528FC1E62514185EB51F80A3C5441C3F5284C1E625141713D0A270B3C544114AE47911D625141CDCCCC2C0B3C5441D7A370ED1C625141A4703D0A0B3C544152B81E551C625141AE47E19A0A3C5441B81E85AB176251415C8FC235053C54417B14AE4717625141D7A3709D043C5441AE47E12A17625141E17A14EE033C5441C3F5283C17625141EC51B83E033C5441295C8F82176251417B14AE77023C5441D7A370FD1762514185EB51C8013C5441CDCCCCAC18625141A4703D2A013C54419A99997919625141E17A14DE003C5441AE47E13A1A625141E17A14DE003C54417B14AE071B625141713D0A07013C544148E17AD41B6251417B14AE87013C544114AE47A12062514185EB51F8063C54417B14AEE720625141AE47E18A073C5441333333F3206251411F85EB91083C5441EC51B8BE20625141A4703D6A093C5441713D0A6720625141000000200A3C54411F85EBF11F6251418FC2F5880A3C5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000C3F528FC9462514148E17A44243C544185EB518894625141A4703DFA1F3C54411F85EB7192625141295C8F72133C5441A4703D2A83625141A4703D0A113C5441333333F37C625141CDCCCC6C133C54413D0AD7437162514114AE4741173C54415C8FC2356F62514100000030183C5441A4703D3A6D625141EC51B87E193C54410AD7A3806962514148E17AF41B3C54417B14AEA7686251410AD7A3001D3C54417B14AE97716251410AD7A320233C5441000000A07B6251410AD7A3002A3C54413D0AD7837C625141E17A14AE373C5441666666567D625141E17A144E443C5441A4703D0A846251410AD7A330413C5441713D0A5788625141CDCCCC5C3F3C54415C8FC2A591625141E17A14DE3B3C5441295C8F529362514152B81EF53A3C5441713D0A0796625141295C8FF2393C54418FC2F5F89562514152B81E15353C5441EC51B8EE956251411F85EBC1313C54419A9999E99562514152B81E05303C54413333336395625141F6285C1F283C5441EC51B83E95625141AE47E1BA263C5441C3F528FC9462514148E17A44243C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586071 - 983095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002B0000002EFA778351405141A4BD0D31166B54418D6B689051405141FA6E4831166B5441E9AED54E524051410437A834166B54418FC2F5685240514152B81E35166B5441434C9F6852405141081D3138166B5441B81E853B54405141333333B30B6B544152B81E6555405141295C8F72056B54417B14AE874A405141EC51B81E066B5441D7A370FD414051417B14AE37066B54413D0AD79328405141CDCCCC6C066B544148E17A340F4051411F85EB21076B54411F85EBB10B4051410AD7A3D0066B5441D7A370DD0B4051413D0AD703096B544152B81E350C405141C3F528DC0C6B5441666666C60C405141EC51B83E126B5441A4703DCA0F4051418FC2F518206B5441666666161F405141F6285C5F246B54418FC2F5F8264051415C8FC235286B54410AD7A340304051417B14AEB7276B54419A9999792F4051419A9999B9256B54410C5F9E9C2F405141B55466CB226B544172C2AFA82F40514122B8DEC8216B54410C224AAC2F40514190D1AE7B216B5441E6C628DA2F405141348005A51D6B5441A4703DFA2F4051415C8FC2F51A6B54417D52DC1F3040514158AB15C9176B5441F6285C3F304051410AD7A320156B54412291679B3340514196F3344A156B5441A2BDD37A344051413A4D0155156B54410F2183A436405141F2E7C36F156B5441ABA23DC439405141E40B5998156B5441B505AEC23A405141ACA162A4156B54416A79F5423F405141515A73DD156B5441B203A443424051416B96FAE9156B5441A861493D43405141497F90EE156B54412EDAAFF943405141D52990F0156B54411873D76844405141001811F4156B54411E0E4DB64D405141B76CCF1F166B5441CBBE98AE4E4051416AB33524166B544193B04B844F405141AA0BFF27166B544161EE07CE4F405141D5824D29166B5441442192B9504051412CED792D166B54412EFA778351405141A4BD0D31166B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000003791679B3340514197F3344A156B5441F6285C3F304051410AD7A320156B54417E7B0A3C3040514130735668156B54417D52DC1F3040514158AB15C9176B5441A4703DFA2F4051415C8FC2F51A6B5441E6C628DA2F405141348005A51D6B54411D4B0DCF2F4051418E1FF9921E6B5441F94A81B62F405141548CD6A0206B54412D127DAE2F405141ED0F934C216B54410C224AAC2F40514190D1AE7B216B544172C2AFA82F40514122B8DEC8216B54410C5F9E9C2F405141B55466CB226B54417E1502912F405141584D21C4236B54411BA7C2892F40514114FE655F246B54419A9999792F4051419A9999B9256B54410AD7A340304051417B14AEB7276B54410AD7A3B035405141000000F0266B5441A4703D2A414051418FC2F5C8256B5441666666A64F405141F6285C4F246B5441000000F05140514114AE47811A6B54418FC2F5685240514152B81E35166B5441E9AED54E524051410437A834166B54418D6B689051405141FA6E4831166B5441EE51D53551405141A295AD2F166B5441CBBE98AE4E4051416AB33524166B54411E0E4DB64D405141B76CCF1F166B5441B6DC29E549405141F5197F0E166B54418952B7D844405141F48598F7156B5441AB866AF7434051415E8E9AF3156B5441B6543E40434051410BAE5BF0156B54412A74F9D042405141D5F562EE156B5441D97E464042405141EC99D2EB156B5441EFC43D87414051410A488BE8156B544164F48A734040514188316AE2156B54412349BA523F40514197A739DE156B54417779F5423F405141515A73DD156B5441505F561E3D4051418B1D80C2156B5441DC40CB423C405141523AB7B7156B5441669DBFB8394051414286C897156B5441DFCD507E394051412CA9CC94156B5441E018071737405141CF8E9375156B544120C5CBF7344051416E820B5B156B5441B27D4867344051414C7D0F54156B54413791679B3340514197F3344A156B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>439670 - 3335515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000067000000CDCCCCDC95095141F6285CDFD6245541CDCCCC9C9509514166666656D6245541AE47E19A900951419A999939CC2455418FC2F518900951417B14AE27CB24554114AE47F18A0951413D0AD743C0245541333333439009514148E17A84BD245541EC51B8AE8D095141666666D6B9245541333333E38A095141713D0A77B5245541A4703DBA85095141B81E856BAB2455411F85EB4185095141CDCCCC5CAA245541713D0AE78309514133333393A724554152B81E15800951419A9999B99B245541EC51B80E7D095141F6285C5F9A245541D7A3700D7909514152B81EF598245541CDCCCCDC750951415C8FC2759724554185EB518873095141F6285CFF952455415C8FC2157109514152B81E5593245541245D186E7009514161FA22AE9324554180ECDA43700951414C4CDBCC9324554104E581236F0951412B4EFBAB94245541B655BF2D6E095141FEF16B89952455414FEF58676C095141C0E7942597245541DDA4F9486A0951416AA86A0F99245541FB03070F6409514163E794C59E245541CEC9A43D6309514124E604C79F2455415E93C9A461095141A3C80FBAA1245541FDCD555860095141F8EF4B4AA324554171BC25B45F09514106DDBD41A42455416E0EDE725D09514126394DA4A72455419A36ECAF5A095141160B5898A5245541870EDEF257095141851AC878A32455413D0AD7B3580951417B14AEC7A22455411F85EB6154095141333333239E2455411F85EB114D095141C3F528BCA4245541000000F044095141EC51B80EAC2455418FC2F528420951418FC2F518AF245541A4703D1A3F095141C3F528FCB2245541666666363C095141713D0AB7B7245541D7A3706D3B095141F6285CFFB824554185EB51B83709514185EB5158B8245541D7A370AD32095141EC51B86EB624554114AE47113009514185EB51A8B4245541EC51B8FE2D09514152B81E75B3245541713D0A672C0951411F85EBC1B12455418FC2F5482A0951415C8FC285B124554152B81E652B095141C3F5288CB3245541F6285CCF2D095141D7A370BDB9245541B81E850B2F095141E17A14AEBC2455410AD7A3A02F095141A4703D7ABE24554185EB51D82F09514185EB5188BF2455416666660630095141CDCCCCACC0245541C3F5282C300951418FC2F5E8C224554148E17A1430095141F6285C8FC5245541EC51B8CE2F09514152B81EA5CA2455410AD7A3C02F09514148E17A34CD24554185EB51D82F095141E17A14CECD24554185EB511830095141D7A3708DCE2455416666669631095141AE47E12AD02455410000000034095141A4703D9AD1245541000000803809514152B81E25D424554185EB51D83D095141E17A147ED6245541C3F528BC4209514114AE4751D8245541666666364809514100000030D224554185EB51E84C09514148E17A94CC245541B81E85BB51095141000000A0C72455415C8FC2D5550951419A9999E9C3245541C3F528DC57095141295C8F72C724554152B81E8559095141F6285CDFCC24554133333323580951418FC2F588CE2455419A99992953095141295C8F22D42455410AD7A31051095141A4703D2AD6245541B81E853B4E0951415C8FC2D5D824554148E17AD4490951417B14AE07DD245541A4703D3A49095141D7A370CDDD245541E17A141E4B0951415C8FC295DF24554152B81E354D095141C3F528CCE1245541D7A3700D4F09514166666646E32455413D0AD76351095141F6285CEFE42455418FC2F5F85309514185EB51A8E62455415C8FC2E555095141333333C3E7245541519E948F58095141FF789A41E8245541A06164365B09514119BADF23E9245541EA17F3AF5D0951412EEEE3D8E92455412FC140FC5F09514133FB2406EA2455416E5D4D1B6209514133FB2406EA245541F2A2A786660951412EEEE3D8E92455418002844C6B0951414E3C6AE8EA245541F92D5C5D6F095141687DAFCAEB2455415D2530B97209514197F2F861ED24554197B4FBAA74095141CC748326EF245541CC36866F76095141111ED172F1245541EC840C7F770951416AFB2274F42455418A7A380178095141D3AB1E5AF8245541000000F07D09514148E17A94F5245541F6285C3F840951413D0AD723F224554133333323860951411F85EB21F12455410000008080095141D7A3707DEC24554152B81EF57E095141EC51B87EEB245541295C8FA27B095141E17A14BEE92455411F85EBC17809514114AE4791E7245541E17A140E8109514133333313E2245541CDCCCC4C8C09514148E17A94DC245541CDCCCCDC95095141F6285CDFD624554106000000295C8F0266095141F6285C8FB8245541A4703DDA6009514114AE4761BD24554185EB5128600951411F85EBA1BD2455418FC2F54860095141E17A141EBD245541D7A370AD650951410AD7A320B8245541295C8F0266095141F6285C8FB82455410103000000010000000A000000000000E033095141CDCCCC2CD724554114AE4711340951415C8FC205DA245541D7A370BD3409514148E17A14DD2455418FC2F55839095141B81E854BD924554185EB519841095141B81E851BD92455418FC2F52840095141EC51B86ED8245541C3F528FC32095141CDCCCC5CD2245541E17A14FE300951415C8FC295D0245541F6285CBF31095141D7A370ADD2245541000000E033095141CDCCCC2CD7245541
+</a>
+
+<b>
+0106000000010000000103000000010000006A000000A8BA313A3F095141210588D3B22455411CCEDD163F095141C452B004B32455413DD090453C09514183FA379EB7245541666666363C095141713D0AB7B7245541D7A3706D3B095141F6285CFFB824554185EB51B83709514185EB5158B8245541D7A370AD32095141EC51B86EB624554114AE47113009514185EB51A8B4245541EC51B8FE2D09514152B81E75B3245541713D0A672C0951411F85EBC1B12455418FC2F5482A0951415C8FC285B124554152B81E652B095141C3F5288CB3245541F6285CCF2D095141D7A370BDB9245541B81E850B2F095141E17A14AEBC2455410AD7A3A02F095141A4703D7ABE24554185EB51D82F09514185EB5188BF2455416666660630095141CDCCCCACC0245541C3F5282C300951418FC2F5E8C224554148E17A1430095141F6285C8FC5245541EC51B8CE2F09514152B81EA5CA2455410AD7A3C02F09514148E17A34CD24554185EB51D82F095141E17A14CECD24554185EB511830095141D7A3708DCE2455416666669631095141AE47E12AD02455410000000034095141A4703D9AD1245541000000803809514152B81E25D424554185EB51D83D095141E17A147ED6245541C3F528BC4209514114AE4751D8245541666666364809514100000030D224554185EB51E84C09514148E17A94CC245541B81E85BB51095141000000A0C7245541123B094356095141DFA6DC5DC4245541C3F528DC57095141295C8F72C724554152B81E8559095141F6285CDFCC24554133333323580951418FC2F588CE2455419A99992953095141295C8F22D42455410AD7A31051095141A4703D2AD6245541B81E853B4E0951415C8FC2D5D824554148E17AD4490951417B14AE07DD245541A4703D3A49095141D7A370CDDD245541E17A141E4B0951415C8FC295DF24554152B81E354D095141C3F528CCE1245541D7A3700D4F09514166666646E32455413D0AD76351095141F6285CEFE42455418FC2F5F85309514185EB51A8E62455415C8FC2E555095141333333C3E7245541529E948F58095141FD789A41E82455419F6164365B0951411ABADF23E9245541E517F3AF5D09514131EEE3D8E924554131C140FC5F09514137FB2406EA2455416B5D4D1B6209514137FB2406EA245541F2A2A7866609514131EEE3D8E92455418402844C6B095141493C6AE8EA245541FE2D5C5D6F095141667DAFCAEB245541622530B9720951419BF2F861ED24554197B4FBAA74095141CA748326EF245541D136866F76095141151ED172F1245541E9840C7F770951416DFB2274F4245541857A380178095141D2AB1E5AF8245541000000F07D09514148E17A94F5245541F6285C3F840951413D0AD723F224554133333323860951411F85EB21F12455410000008080095141D7A3707DEC24554152B81EF57E095141EC51B87EEB245541295C8FA27B095141E17A14BEE92455411F85EBC17809514114AE4791E7245541E17A140E8109514133333313E2245541CDCCCC4C8C09514148E17A94DC245541CDCCCCDC95095141F6285CDFD6245541CDCCCC9C9509514166666656D6245541AE47E19A900951419A999939CC2455418FC2F518900951417B14AE27CB24554114AE47F18A0951413D0AD743C0245541333333439009514148E17A84BD245541EC51B8AE8D095141666666D6B9245541333333E38A095141713D0A77B5245541A4703DBA85095141B81E856BAB2455411F85EB4185095141CDCCCC5CAA245541713D0AE78309514133333393A724554152B81E15800951419A9999B99B245541EC51B80E7D095141F6285C5F9A245541D7A3700D7909514152B81EF598245541CDCCCCDC750951415C8FC2759724554185EB518873095141F6285CFF952455415C8FC2157109514152B81E5593245541245D186E7009514161FA22AE9324554180ECDA43700951414C4CDBCC9324554108E581236F0951412A4EFBAB94245541B655BF2D6E09514101F26B899524554150EF58676C095141C4E7942597245541DDA4F9486A0951416AA86A0F992455410004070F6409514163E794C59E245541CEC9A43D6309514124E604C79F2455415C93C9A461095141A0C80FBAA1245541FDCD555860095141F8EF4B4AA324554172BC25B45F09514105DDBD41A4245541690EDE725D09514124394DA4A72455419536ECAF5A095141190B5898A5245541890EDEF257095141811AC878A32455413D0AD7B3580951417B14AEC7A22455412B17A26354095141D1820A259E2455413156A1B04C09514106316B18A5245541B4C25C9444095141E5AD0473AC245541C3861E734409514103366797AC24554168220BDB40095141DECE85C1B0245541A8BA313A3F095141210588D3B2245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918541 - 3132797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000400000001030000000100000046000000295C8FA212A1504148E17AD4A82154410AD7A3E014A15041A4703D0AAB21544152B81E9516A15041CDCCCCACAC215441B81E857B18A15041295C8F52AE2154411F85EBB11AA15041D7A3702DB0215441713D0A471DA15041295C8F72B22154419A9999991EA1504114AE47C1B3215441E17A14BE1FA15041EC51B81EB52154410000001021A15041666666A6B62154410000002022A150410AD7A390B72154410AD7A36023A15041295C8F52B8215441333333B324A1504114AE47C1B8215441CDCCCC4C26A15041EC51B80EB92154411F85EBD127A15041CDCCCC0CB92154419A99994928A1504114AE47A1B72154413D0AD78328A150410AD7A3F0B62154418FC2F5A82CA1504133333353AA215441295C8F722DA15041295C8FF2A72154418FC2F5A836A15041295C8F228C215441333333832EA1504185EB51588B2154413D0AD7C32DA1504152B81E458B215441295C8FB22CA15041AE47E12A8B215441295C8F8214A150417B14AE17892154415C8FC22506A150419A99992988215441F6285C8FF5A0504166666616872154411F85EBE1EEA050417B14AEA7862154410AD7A390EAA05041E17A140E84215441EC51B80EE6A050415C8FC2658121544185EB51E8D1A05041D7A370AD7521544185EB5178D2A050418FC2F58876215441AE47E13AD4A05041EC51B85E79215441E17A14FED5A050410AD7A3607C21544114AE47C1D7A05041EC51B8DE7E21544114AE4721D9A05041B81E858B80215441EC51B8EEDAA050419A999959822154411F85EB11DEA050419A999919852154413D0AD713E1A05041B81E856B87215441AE47E1BAE4A05041666666368A215441713D0A77EAA05041B81E856B8E21544185EB5148EDA050417B14AED78F215441713D0AF7EEA05041333333439021544152B81E95F0A05041EC51B81E8F2154413D0AD733F2A050410AD7A3608E2154418FC2F528F4A0504114AE47718D215441C3F5283CF4A0504185EB51188E215441A4703D9AF2A05041C3F528BC8E215441295C8F62F1A05041666666B68F215441AE47E17AF0A05041713D0A9790215441713D0AC7F0A05041AE47E17A91215441333333D3F2A05041713D0A57922154415C8FC2D5F3A050411F85EB41912154419A9999E9F5A05041C3F5286C8E215441B81E85CBFAA05041F6285CBF91215441E17A14EEFAA0504166666696932154415C8FC285FBA050418FC2F5E89421544185EB5138FCA0504148E17A8495215441333333D3FDA0504114AE4711962154411F85EB4100A15041666666269721544148E17A1403A15041C3F5287C98215441EC51B8DE05A15041666666D699215441D7A370BD08A150417B14AE479B215441000000F009A15041A4703D3A9C215441EC51B89E0AA15041E17A146E9D2154410AD7A3100BA15041B81E85CB9E215441D7A3709D0BA1504100000040A02154410AD7A3900CA15041E17A142EA2215441F6285C3F0DA15041295C8F52A3215441A4703DCA0EA150413D0AD703A5215441F6285C7F10A150413D0AD7C3A6215441295C8FA212A1504148E17AD4A821544101030000000100000026000000B81E852B9DA050418FC2F5886E215441333333939AA0504185EB51786C2154413333338398A050415C8FC2A56A2154415C8FC26596A0504185EB518868215441C3F5287C95A05041295C8F9267215441CDCCCCBC93A05041EC51B89E65215441EC51B88E92A0504152B81E6563215441295C8F4291A05041F6285CBF5F215441295C8FA290A05041D7A370DD5C2154410AD7A34090A0504148E17A7459215441F6285C0F90A05041AE47E1DA55215441E17A14DE8FA05041B81E85FB53215441D7A3700D8FA0504114AE476150215441A4703D3A8DA05041666666964C215441333333138CA050415C8FC2E549215441E17A144E8BA050411F85EB4147215441713D0A478BA050417B14AE174621544148E17A8489A0504152B81EB546215441713D0A778CA05041A4703D8A61215441F6285C4F8DA05041713D0AD7692154410AD7A3409FA05041713D0AF7782154410AD7A310A0A050415C8FC2B5792154419A999929A4A050411F85EB117D21544100000060A5A050413D0AD7837B2154415C8FC265A7A05041000000E07921544185EB5168AAA05041B81E85AB782154411F85EB31ADA050415C8FC28577215441000000E0AFA050417B14AEB775215441C3F5284CB1A050413D0AD753722154411F85EB81B4A05041CDCCCC5C7021544166666676B1A0504114AE474171215441EC51B81EAEA050418FC2F5D871215441295C8F72ABA0504152B81E257221544114AE4741A8A05041B81E854B72215441CDCCCCFCA4A05041295C8F127221544185EB51B8A1A0504185EB510871215441A4703DCA9FA050413D0AD72370215441B81E852B9DA050418FC2F5886E2154410103000000010000006F00000014AE47113FA150418FC2F548EB215441B81E85BB3FA150411F85EBB1EB215441E17A149E42A1504114AE4711E9215441D7A3700D48A1504114AE4771E52154418FC2F5B84EA15041CDCCCCACE12154415C8FC29551A1504185EB51E8E3215441F6285C7F58A15041333333E3D92154419A99995959A1504185EB5148D62154418FC2F55858A1504166666646D2215441C3F5280C58A15041B81E85ABCE2154415C8FC2E554A1504185EB5108CB2154413D0AD76351A15041A4703D1AC62154418FC2F5B84DA1504133333323C32154413D0AD7134AA15041A4703D1ABF2154415C8FC2453EA1504166666636CE2154418FC2F5583AA1504114AE4751D3215441000000B03DA15041F6285C9FD62154417B14AE273BA150417B14AE77D72154417B14AE2738A150417B14AE47D4215441000000D035A150417B14AE07D2215441713D0A4733A150417B14AED7CF21544152B81ED52DA15041C3F5281CCA21544114AE47C12DA150418FC2F598C92154419A9999C926A1504100000030BC215441000000A027A1504148E17AA4B9215441E17A142E26A1504185EB51A8B921544152B81E2525A15041CDCCCC8CB92154410000001024A15041295C8F42B92154411F85EBF122A1504152B81EB5B8215441713D0A1722A15041713D0A37B8215441295C8F3221A15041295C8F82B7215441EC51B8FE1FA15041E17A145EB6215441713D0A171FA1504166666626B5215441666666361EA150411F85EB01B4215441E17A145E1DA1504114AE4721B3215441D7A370ED1BA15041333333D3B1215441C3F5280C19A150413D0AD763AF21544152B81E3517A15041295C8F02AE2154417B14AE3715A1504100000020AC2154410000002013A150419A9999E9A921544185EB51B810A15041C3F528ACA72154418FC2F5780FA1504185EB5178A6215441EC51B8DE0DA15041295C8FD2A42154411F85EBC10CA150413D0AD783A32154413D0AD7030CA1504114AE4781A2215441EC51B87E0BA1504148E17A64A121544148E17A140BA150415C8FC265A0215441CDCCCCBC0AA15041CDCCCC4C9F215441666666560AA15041D7A3705D9E2154410AD7A3E009A150417B14AE479D215441E17A142E09A150413D0AD7639C215441E17A14FE07A150417B14AE879B21544148E17AB405A15041295C8F629A2154416666663603A1504148E17A149921544114AE470100A15041C3F5289C97215441EC51B88EFDA05041C3F528BC96215441713D0A07FCA050410000007096215441E17A144EFAA0504100000070962154411F85EB91F8A050410AD7A38095215441D7A370EDF5A05041D7A3708D94215441F6285CFFF3A05041AE47E1DA93215441CDCCCC4CF2A050411F85EB9193215441AE47E12AF3A0504166666696962154411F85EBB1F2A050418FC2F5E89821544152B81EB5F1A050419A9999699A21544114AE47D1EFA050413D0AD7B39B215441EC51B87EEDA05041D7A3709D9B2154415C8FC2D5EBA05041295C8F729B215441A4703DCAEAA050417B14AE1798215441C3F5280CEBA05041D7A3706D9521544100000090EBA050410000009091215441E17A144EEBA050418FC2F5F88F2154415C8FC2E5E8A05041B81E854B8E215441713D0A87E3A050417B14AE578A215441000000D0DDA050419A9999C985215441AE47E1CADBA050418FC2F54884215441C3F528DCD9A05041000000708221544152B81E45D8A050419A9999F9802154415C8FC255D6A050418FC2F5187E215441713D0A67D4A050410AD7A3007B21544185EB51C8D1A05041CDCCCC0C772154417B14AE17D0A05041F6285C9F74215441E17A14EEC7A05041000000E06F21544114AE4771C3A05041666666566D215441EC51B88EC0A0504152B81E856D2154413D0AD743C1A050419A9999896F215441C3F528CCC2A0504100000070722154411F85EB21C6A050415C8FC265782154411F85EB91BFA050413D0AD7037F215441CDCCCCECBCA05041EC51B8AE822154413D0AD7C3BDA05041000000D084215441A4703D5ABFA050419A99994986215441C3F5280CC8A050419A9999E98121544100000090CAA050415C8FC2858521544185EB5158C3A050415C8FC2258F215441A4703D0AC5A050411F85EB919021544148E17A64C7A050418FC2F548922154415C8FC2E5C6A050419A99992995215441CDCCCCDCC7A05041D7A3702D9621544185EB5108CAA05041B81E85FB9B2154411F85EB71D5A0504152B81E45A52154411F85EB81D8A05041E17A14CEA72154410AD7A360E4A050415C8FC205B121544100000090E5A05041333333C3B1215441000000F0E8A05041CDCCCCDCB321544114AE47B1F8A05041D7A3709DBD2154415C8FC25507A15041EC51B8AEC621544114AE474112A150410AD7A3B0CD215441EC51B81E1BA15041CDCCCC6CD3215441E17A14FE38A15041A4703D5AE721544114AE47113FA150418FC2F548EB21544101030000000100000020000000EC51B83E8CA0504185EB51F84721544148E17AF48CA05041E17A14EE492154417B14AEF78DA050410AD7A3204C215441666666268FA050411F85EBB14E215441EC51B86E90A05041000000F051215441F6285CAF90A05041CDCCCC2C542154416666663691A05041713D0A375921544114AE47B191A0504148E17A645D215441295C8F8292A0504114AE47C1602154419A9999A993A05041295C8FA2632154413D0AD76395A05041AE47E13A662154410AD7A32098A05041713D0AF768215441EC51B86E9AA050413D0AD7136B21544114AE47E19CA05041F6285C9F6D2154410AD7A3609FA05041CDCCCC1C6F215441A4703DEAA0A0504114AE47E16F2154419A999969A3A05041AE47E1CA7021544114AE4761A5A050419A999939712154410AD7A3E0A7A05041AE47E16A712154417B14AEB7ABA05041AE47E16A7121544185EB5118AFA05041B81E85DB70215441000000E0AAA0504100000000712154413D0AD733B1A050419A9999D96C2154411F85EBD1B2A050417B14AE876A215441E17A147EB4A050419A99999964215441B81E853BAFA05041295C8F826121544166666606A2A05041AE47E19A592154415C8FC2858FA05041CDCCCC7C4421544152B81EB58EA05041D7A370DD4421544148E17AA48DA05041EC51B82E4521544148E17AB48BA050411F85EBF145215441EC51B83E8CA0504185EB51F847215441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C4B874D6D0A05041ABE63D9E7321544185EB5178D2A050418FC2F58876215441F8D8F2AAD6A0504113AD1B557D2154410DFAD619D9A050415CD87482802154414AE514F1DBA05041576B0D3C832154413AD808D3DFA05041B3930C74862154413EA97071E6A05041EDA226788B21544174CFD57DEBA050416B3933F08E215441F9464196EBA0504139B155BD8C21544141040458EBA05041AEA1257C8821544150F297EDEBA050413E4E38E0842154414478940AECA05041F9E55127842154418395BFDAE2A05041BBEAC7917E215441430BA09BD4A050415A8F8E2E76215441C4B874D6D0A05041ABE63D9E73215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918541 - 3503603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000400000001030000000100000046000000295C8FA212A1504148E17AD4A82154410AD7A3E014A15041A4703D0AAB21544152B81E9516A15041CDCCCCACAC215441B81E857B18A15041295C8F52AE2154411F85EBB11AA15041D7A3702DB0215441713D0A471DA15041295C8F72B22154419A9999991EA1504114AE47C1B3215441E17A14BE1FA15041EC51B81EB52154410000001021A15041666666A6B62154410000002022A150410AD7A390B72154410AD7A36023A15041295C8F52B8215441333333B324A1504114AE47C1B8215441CDCCCC4C26A15041EC51B80EB92154411F85EBD127A15041CDCCCC0CB92154419A99994928A1504114AE47A1B72154413D0AD78328A150410AD7A3F0B62154418FC2F5A82CA1504133333353AA215441295C8F722DA15041295C8FF2A72154418FC2F5A836A15041295C8F228C215441333333832EA1504185EB51588B2154413D0AD7C32DA1504152B81E458B215441295C8FB22CA15041AE47E12A8B215441295C8F8214A150417B14AE17892154415C8FC22506A150419A99992988215441F6285C8FF5A0504166666616872154411F85EBE1EEA050417B14AEA7862154410AD7A390EAA05041E17A140E84215441EC51B80EE6A050415C8FC2658121544185EB51E8D1A05041D7A370AD7521544185EB5178D2A050418FC2F58876215441AE47E13AD4A05041EC51B85E79215441E17A14FED5A050410AD7A3607C21544114AE47C1D7A05041EC51B8DE7E21544114AE4721D9A05041B81E858B80215441EC51B8EEDAA050419A999959822154411F85EB11DEA050419A999919852154413D0AD713E1A05041B81E856B87215441AE47E1BAE4A05041666666368A215441713D0A77EAA05041B81E856B8E21544185EB5148EDA050417B14AED78F215441713D0AF7EEA05041333333439021544152B81E95F0A05041EC51B81E8F2154413D0AD733F2A050410AD7A3608E2154418FC2F528F4A0504114AE47718D215441C3F5283CF4A0504185EB51188E215441A4703D9AF2A05041C3F528BC8E215441295C8F62F1A05041666666B68F215441AE47E17AF0A05041713D0A9790215441713D0AC7F0A05041AE47E17A91215441333333D3F2A05041713D0A57922154415C8FC2D5F3A050411F85EB41912154419A9999E9F5A05041C3F5286C8E215441B81E85CBFAA05041F6285CBF91215441E17A14EEFAA0504166666696932154415C8FC285FBA050418FC2F5E89421544185EB5138FCA0504148E17A8495215441333333D3FDA0504114AE4711962154411F85EB4100A15041666666269721544148E17A1403A15041C3F5287C98215441EC51B8DE05A15041666666D699215441D7A370BD08A150417B14AE479B215441000000F009A15041A4703D3A9C215441EC51B89E0AA15041E17A146E9D2154410AD7A3100BA15041B81E85CB9E215441D7A3709D0BA1504100000040A02154410AD7A3900CA15041E17A142EA2215441F6285C3F0DA15041295C8F52A3215441A4703DCA0EA150413D0AD703A5215441F6285C7F10A150413D0AD7C3A6215441295C8FA212A1504148E17AD4A821544101030000000100000026000000B81E852B9DA050418FC2F5886E215441333333939AA0504185EB51786C2154413333338398A050415C8FC2A56A2154415C8FC26596A0504185EB518868215441C3F5287C95A05041295C8F9267215441CDCCCCBC93A05041EC51B89E65215441EC51B88E92A0504152B81E6563215441295C8F4291A05041F6285CBF5F215441295C8FA290A05041D7A370DD5C2154410AD7A34090A0504148E17A7459215441F6285C0F90A05041AE47E1DA55215441E17A14DE8FA05041B81E85FB53215441D7A3700D8FA0504114AE476150215441A4703D3A8DA05041666666964C215441333333138CA050415C8FC2E549215441E17A144E8BA050411F85EB4147215441713D0A478BA050417B14AE174621544148E17A8489A0504152B81EB546215441713D0A778CA05041A4703D8A61215441F6285C4F8DA05041713D0AD7692154410AD7A3409FA05041713D0AF7782154410AD7A310A0A050415C8FC2B5792154419A999929A4A050411F85EB117D21544100000060A5A050413D0AD7837B2154415C8FC265A7A05041000000E07921544185EB5168AAA05041B81E85AB782154411F85EB31ADA050415C8FC28577215441000000E0AFA050417B14AEB775215441C3F5284CB1A050413D0AD753722154411F85EB81B4A05041CDCCCC5C7021544166666676B1A0504114AE474171215441EC51B81EAEA050418FC2F5D871215441295C8F72ABA0504152B81E257221544114AE4741A8A05041B81E854B72215441CDCCCCFCA4A05041295C8F127221544185EB51B8A1A0504185EB510871215441A4703DCA9FA050413D0AD72370215441B81E852B9DA050418FC2F5886E2154410103000000010000006F00000014AE47113FA150418FC2F548EB215441B81E85BB3FA150411F85EBB1EB215441E17A149E42A1504114AE4711E9215441D7A3700D48A1504114AE4771E52154418FC2F5B84EA15041CDCCCCACE12154415C8FC29551A1504185EB51E8E3215441F6285C7F58A15041333333E3D92154419A99995959A1504185EB5148D62154418FC2F55858A1504166666646D2215441C3F5280C58A15041B81E85ABCE2154415C8FC2E554A1504185EB5108CB2154413D0AD76351A15041A4703D1AC62154418FC2F5B84DA1504133333323C32154413D0AD7134AA15041A4703D1ABF2154415C8FC2453EA1504166666636CE2154418FC2F5583AA1504114AE4751D3215441000000B03DA15041F6285C9FD62154417B14AE273BA150417B14AE77D72154417B14AE2738A150417B14AE47D4215441000000D035A150417B14AE07D2215441713D0A4733A150417B14AED7CF21544152B81ED52DA15041C3F5281CCA21544114AE47C12DA150418FC2F598C92154419A9999C926A1504100000030BC215441000000A027A1504148E17AA4B9215441E17A142E26A1504185EB51A8B921544152B81E2525A15041CDCCCC8CB92154410000001024A15041295C8F42B92154411F85EBF122A1504152B81EB5B8215441713D0A1722A15041713D0A37B8215441295C8F3221A15041295C8F82B7215441EC51B8FE1FA15041E17A145EB6215441713D0A171FA1504166666626B5215441666666361EA150411F85EB01B4215441E17A145E1DA1504114AE4721B3215441D7A370ED1BA15041333333D3B1215441C3F5280C19A150413D0AD763AF21544152B81E3517A15041295C8F02AE2154417B14AE3715A1504100000020AC2154410000002013A150419A9999E9A921544185EB51B810A15041C3F528ACA72154418FC2F5780FA1504185EB5178A6215441EC51B8DE0DA15041295C8FD2A42154411F85EBC10CA150413D0AD783A32154413D0AD7030CA1504114AE4781A2215441EC51B87E0BA1504148E17A64A121544148E17A140BA150415C8FC265A0215441CDCCCCBC0AA15041CDCCCC4C9F215441666666560AA15041D7A3705D9E2154410AD7A3E009A150417B14AE479D215441E17A142E09A150413D0AD7639C215441E17A14FE07A150417B14AE879B21544148E17AB405A15041295C8F629A2154416666663603A1504148E17A149921544114AE470100A15041C3F5289C97215441EC51B88EFDA05041C3F528BC96215441713D0A07FCA050410000007096215441E17A144EFAA0504100000070962154411F85EB91F8A050410AD7A38095215441D7A370EDF5A05041D7A3708D94215441F6285CFFF3A05041AE47E1DA93215441CDCCCC4CF2A050411F85EB9193215441AE47E12AF3A0504166666696962154411F85EBB1F2A050418FC2F5E89821544152B81EB5F1A050419A9999699A21544114AE47D1EFA050413D0AD7B39B215441EC51B87EEDA05041D7A3709D9B2154415C8FC2D5EBA05041295C8F729B215441A4703DCAEAA050417B14AE1798215441C3F5280CEBA05041D7A3706D9521544100000090EBA050410000009091215441E17A144EEBA050418FC2F5F88F2154415C8FC2E5E8A05041B81E854B8E215441713D0A87E3A050417B14AE578A215441000000D0DDA050419A9999C985215441AE47E1CADBA050418FC2F54884215441C3F528DCD9A05041000000708221544152B81E45D8A050419A9999F9802154415C8FC255D6A050418FC2F5187E215441713D0A67D4A050410AD7A3007B21544185EB51C8D1A05041CDCCCC0C772154417B14AE17D0A05041F6285C9F74215441E17A14EEC7A05041000000E06F21544114AE4771C3A05041666666566D215441EC51B88EC0A0504152B81E856D2154413D0AD743C1A050419A9999896F215441C3F528CCC2A0504100000070722154411F85EB21C6A050415C8FC265782154411F85EB91BFA050413D0AD7037F215441CDCCCCECBCA05041EC51B8AE822154413D0AD7C3BDA05041000000D084215441A4703D5ABFA050419A99994986215441C3F5280CC8A050419A9999E98121544100000090CAA050415C8FC2858521544185EB5158C3A050415C8FC2258F215441A4703D0AC5A050411F85EB919021544148E17A64C7A050418FC2F548922154415C8FC2E5C6A050419A99992995215441CDCCCCDCC7A05041D7A3702D9621544185EB5108CAA05041B81E85FB9B2154411F85EB71D5A0504152B81E45A52154411F85EB81D8A05041E17A14CEA72154410AD7A360E4A050415C8FC205B121544100000090E5A05041333333C3B1215441000000F0E8A05041CDCCCCDCB321544114AE47B1F8A05041D7A3709DBD2154415C8FC25507A15041EC51B8AEC621544114AE474112A150410AD7A3B0CD215441EC51B81E1BA15041CDCCCC6CD3215441E17A14FE38A15041A4703D5AE721544114AE47113FA150418FC2F548EB21544101030000000100000020000000EC51B83E8CA0504185EB51F84721544148E17AF48CA05041E17A14EE492154417B14AEF78DA050410AD7A3204C215441666666268FA050411F85EBB14E215441EC51B86E90A05041000000F051215441F6285CAF90A05041CDCCCC2C542154416666663691A05041713D0A375921544114AE47B191A0504148E17A645D215441295C8F8292A0504114AE47C1602154419A9999A993A05041295C8FA2632154413D0AD76395A05041AE47E13A662154410AD7A32098A05041713D0AF768215441EC51B86E9AA050413D0AD7136B21544114AE47E19CA05041F6285C9F6D2154410AD7A3609FA05041CDCCCC1C6F215441A4703DEAA0A0504114AE47E16F2154419A999969A3A05041AE47E1CA7021544114AE4761A5A050419A999939712154410AD7A3E0A7A05041AE47E16A712154417B14AEB7ABA05041AE47E16A7121544185EB5118AFA05041B81E85DB70215441000000E0AAA0504100000000712154413D0AD733B1A050419A9999D96C2154411F85EBD1B2A050417B14AE876A215441E17A147EB4A050419A99999964215441B81E853BAFA05041295C8F826121544166666606A2A05041AE47E19A592154415C8FC2858FA05041CDCCCC7C4421544152B81EB58EA05041D7A370DD4421544148E17AA48DA05041EC51B82E4521544148E17AB48BA050411F85EBF145215441EC51B83E8CA0504185EB51F847215441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C4B874D6D0A05041ABE63D9E7321544185EB5178D2A050418FC2F58876215441F8D8F2AAD6A0504113AD1B557D2154410DFAD619D9A050415CD87482802154414AE514F1DBA05041576B0D3C832154413AD808D3DFA05041B3930C74862154413EA97071E6A05041EDA226788B21544174CFD57DEBA050416B3933F08E215441F9464196EBA0504139B155BD8C21544141040458EBA05041AEA1257C8821544150F297EDEBA050413E4E38E0842154414478940AECA05041F9E55127842154418395BFDAE2A05041BBEAC7917E215441430BA09BD4A050415A8F8E2E76215441C4B874D6D0A05041ABE63D9E73215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872337 - 3109356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002D0000005F8F66DDFD6851414B7EFBC3C2945441000F4AF9FF685141A3B453F7C3945441B503A2B8016951418AE61FF6C494544145705866036951410048E1EAC59454413025EEA004695141D39C0F9EC694544114AE47D1046951419A9999B9C694544140AB868D06695141196D7BB6C794544168FF20CA076951411B6DB46AC89454411292555109695141C5E36449C99454414A3187840A69514109EE04F4C9945441E27912830C6951417328631ACB9454411EF8AFCC0D695141362195D6CB945441E02B933F0F69514184E9BAA9CC9454411A423BC410695141FE52EC90CD9454411D1BC81211695141BA8622BFCD945441512BD2CD106951414681BE67CD9454419160F0530F695141866EE78ACC94544112FD14AD0E6951410610F01ECC945441531EA3470C695141074939D1CA94544112514FB00A69514186E079EFC99454419235696C096951410726FD34C9945441520C908607695141460E421DC89454419337E69605695141474C6F0AC79454411369D9F003695141C78C0E15C694544113E533CB016951418772E1DFC4945441136672E0FF68514187596DB9C394544154B4048DFF68514147011397C394544181DF547EFD685141EF2B217EC29454415818F07BFD685141E5D67D8CC294544114AE4721ED685141CDCCCC3CB9945441C3F5280CE168514133333323AF945441AE47E1FAD4685141E17A14EEA19454413D0AD723C068514185EB51088E945441A4703D9ABD685141000000208B945441EC51B89EBB68514152B81EA58A945441295C8F22B568514148E17A048D945441295C8FA2AF685141EC51B8DE8E945441CDCCCCACAC6851419A99996991945441E17A14FE9E68514185EB51F8C2945441EC51B81E91685141F6285C2FF5945441D7A370CD91685141713D0A77F6945441E17A143EBE6851410AD7A330059554413D0AD7B3E7685141A4703DEA1295544158156DDBEF6851418DF35D6CF59454415F8F66DDFD6851414B7EFBC3C29454410103000000010000000F0000001D1BC81211695141BA8622BFCD94544151D914F5106951414634E5C9CD94544167DC98C010695141980CFE56CE945441E47DFF130B6951413EF60498E3945441C722D883026951414CAF35AB039554419943F9A0FD685141C8599EF815955441AE47E16A096951413D0AD7E315955441F6285C5F16695141CDCCCCCC15955441336AF4C117695141057ED95D14955441F3311D28186951412745F2EC12955441F0169C371F6951416075626DF994544148E17A942669514152B81ED5DE945441B81E850B266951415C8FC245DD94544185EB51481B695141AE47E14AD59454411D1BC81211695141BA8622BFCD945441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51481B695141AE47E14AD594544114AE47F1106951410AD7A3A0CD945441C3F5288C09695141AE47E16AC994544114AE47D1046951419A9999B9C6945441D7A370DDFD6851413D0AD7C3C294544146F9F2D9F0685141A60EB865BB945441039B1A5CDA68514117EE7C7F0E9554413D0AD7B3E7685141A4703DEA12955441295C8F12EF685141AE47E15A1595544114AE4731F1685141EC51B80E16955441D7A3701DF2685141E17A140E16955441CDCCCCDCF3685141AE47E10A16955441B81E855BF46851418FC2F50816955441AE47E16A096951413D0AD7E315955441F6285C5F16695141CDCCCCCC1595544114AE47A1176951413D0AD7D314955441B81E85EB1C6951419A9999B90195544148E17A942669514152B81ED5DE945441B81E850B266951415C8FC245DD94544185EB51481B695141AE47E14AD5945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872337 - 3491171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002D0000005F8F66DDFD6851414B7EFBC3C2945441000F4AF9FF685141A3B453F7C3945441B503A2B8016951418AE61FF6C494544145705866036951410048E1EAC59454413025EEA004695141D39C0F9EC694544114AE47D1046951419A9999B9C694544140AB868D06695141196D7BB6C794544168FF20CA076951411B6DB46AC89454411292555109695141C5E36449C99454414A3187840A69514109EE04F4C9945441E27912830C6951417328631ACB9454411EF8AFCC0D695141362195D6CB945441E02B933F0F69514184E9BAA9CC9454411A423BC410695141FE52EC90CD9454411D1BC81211695141BA8622BFCD945441512BD2CD106951414681BE67CD9454419160F0530F695141866EE78ACC94544112FD14AD0E6951410610F01ECC945441531EA3470C695141074939D1CA94544112514FB00A69514186E079EFC99454419235696C096951410726FD34C9945441520C908607695141460E421DC89454419337E69605695141474C6F0AC79454411369D9F003695141C78C0E15C694544113E533CB016951418772E1DFC4945441136672E0FF68514187596DB9C394544154B4048DFF68514147011397C394544181DF547EFD685141EF2B217EC29454415818F07BFD685141E5D67D8CC294544114AE4721ED685141CDCCCC3CB9945441C3F5280CE168514133333323AF945441AE47E1FAD4685141E17A14EEA19454413D0AD723C068514185EB51088E945441A4703D9ABD685141000000208B945441EC51B89EBB68514152B81EA58A945441295C8F22B568514148E17A048D945441295C8FA2AF685141EC51B8DE8E945441CDCCCCACAC6851419A99996991945441E17A14FE9E68514185EB51F8C2945441EC51B81E91685141F6285C2FF5945441D7A370CD91685141713D0A77F6945441E17A143EBE6851410AD7A330059554413D0AD7B3E7685141A4703DEA1295544158156DDBEF6851418DF35D6CF59454415F8F66DDFD6851414B7EFBC3C29454410103000000010000000F0000001D1BC81211695141BA8622BFCD94544151D914F5106951414634E5C9CD94544167DC98C010695141980CFE56CE945441E47DFF130B6951413EF60498E3945441C722D883026951414CAF35AB039554419943F9A0FD685141C8599EF815955441AE47E16A096951413D0AD7E315955441F6285C5F16695141CDCCCCCC15955441336AF4C117695141057ED95D14955441F3311D28186951412745F2EC12955441F0169C371F6951416075626DF994544148E17A942669514152B81ED5DE945441B81E850B266951415C8FC245DD94544185EB51481B695141AE47E14AD59454411D1BC81211695141BA8622BFCD945441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51481B695141AE47E14AD594544114AE47F1106951410AD7A3A0CD945441C3F5288C09695141AE47E16AC994544114AE47D1046951419A9999B9C6945441D7A370DDFD6851413D0AD7C3C294544146F9F2D9F0685141A60EB865BB945441039B1A5CDA68514117EE7C7F0E9554413D0AD7B3E7685141A4703DEA12955441295C8F12EF685141AE47E15A1595544114AE4731F1685141EC51B80E16955441D7A3701DF2685141E17A140E16955441CDCCCCDCF3685141AE47E10A16955441B81E855BF46851418FC2F50816955441AE47E16A096951413D0AD7E315955441F6285C5F16695141CDCCCCCC1595544114AE47A1176951413D0AD7D314955441B81E85EB1C6951419A9999B90195544148E17A942669514152B81ED5DE945441B81E850B266951415C8FC245DD94544185EB51481B695141AE47E14AD5945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>192772 - 14844
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000900000057000000AC2C1FA66FC350416515BA066126554155892E4F6FC35041522F919C562655418E56BB066FC3504151D2AA6250265541EC0FDA586EC350414458A84A42265541B4424DA16EC35041B859BABE33265541713D0AA76DC350419A9999E932265541AE47E1CA6AC3504185EB51C8322655416AEC7DB96AC35041B859BABE33265541098957BE68C35041F21BB0F8332655410E2F8ABB68C35041C9ED70E531265541BDC85FC86AC35041F09F72D031265541578BDBFC6AC3504130FEEA2E322655417B14AE876EC3504114AE47F1312655415F94C5CC6EC35041ABAFB21531265541AA37B6236FC35041D380E86727265541FC395FDE70C350410029061CFE255541ADE0F9B56BC3504135FEC2F2FD255541906B2FFE6BC35041649AF1FDF8255541731A1B7971C350417CFAE31CF925554148E17AA471C35041AE47E1AAF72555414310B1E974C3504140549480F3255541CFFED9AA79C35041C93038E1EF25554102A00A6C7BC35041230B1CACED25554183C3660B7FC35041FE7E9433D72555419EBA8F237EC350411876BD4BD6255541713D0A177EC35041EC51B8DED4255541D871EEDF7EC3504173450A99D42555419799CAAA7FC35041983C33B1D3255541B66497CC80C35041EFDF2308D4255541326666B480C35041A1A9F55ED52555411B2A2AC885C35041EFDEA454D52555413FB4CC1885C350418A6DB972DA255541A325B8FA7FC3504107634DA6DA255541F363ADCD7DC35041C7B7DEBEE72555416B5C8DDF81C35041F777C3FCE7255541243CB68281C35041399BE637EC255541E72D6BE07CC350419E30884CEC2555418FC2F5887CC3504185EB51E8ED25554110CDE5C97BC350413AB30AAFEF255541E17A148E7AC3504148E17A04F1255541F6285C4F76C350415C8FC245F42555410959522D74C35041AFA18C80F6255541493C0DE072C350414AC7A8B5F82555412B66A94072C35041E8CBFF71FC255541DADACAE371C35041B5F538F9072655419E94AC9A7EC350418F0FC67108265541EEF45C317FC35041E10C3EE7F62555410CBFC45F86C350417E39D48CF62555419678A14186C35041BEB81CDC0D2655418305E87D86C35041771253D1262655413E550DC87FC35041771253D1262655419E94AC9A7EC350410D19CD720E265541ED4D84A771C35041845FF0900E2655413B92053770C35041C790AD3231265541C0F7EBC770C35041F7470CEF3126554114AE47A18FC3504185EB51F82E265541A4703DCA8DC35041713D0A47E5255541F6285C3F99C35041666666B6E425554131EDF8A197C3504154A54716B42555416F50FB2380C35041A943CDC5BF2555410C587D546EC350419CF4ADA2E3255541E1AC70AF6DC35041BA750A16E525554134C7AF4F66C35041FDE099B6F3255541F6285C7F64C35041295C8FC20D2655419A99993961C35041713D0A87452655415C8FC22562C350410AD7A3405E2655417B14AED762C3504185EB51786F265541CDCCCC1C64C35041B81E854B7C265541AF6E27D164C3504141F7E10D802655411024AD0B66C3504147E5E8D27F265541496C127167C3504196713CEE82265541EBB2F31E68C35041AAA486C7892655411C5FBB5D69C350416BB634978B2655414F00EC1E6BC35041F926B2A58B2655417C75C0E96EC350418DC38BAA89265541E6E37D6270C35041558E813B84265541FAB9E10171C35041EB1FC4C2822655415C8FC2156EC35041C3F5280C832655416676C8A56DC35041FCD124AB80265541F139E65472C35041F2AD3235802655417B14AE9772C35041000000107E265541FC45F19972C35041947567337D2655415A9672276CC3504170EBC4E27D265541FB15A9AB6BC35041461C020B78265541BA3AF2D571C3504134D1E78477265541A600C3AF71C350413C1F16A175265541AC2C1FA66FC350416515BA0661265541050000003D6830316AC35041DB6EC2CB0C26554195D5D17F6AC350414B99ABE107265541CC3D471B6FC35041F24FFC080826554179E29E076FC35041812513F30C2655413D6830316AC35041DB6EC2CB0C265541110000003E441D0379C35041BCC3F71FD52555413F202B8D78C350415E445D96D42555413A0E325278C35041F87CDE20D32555413F202B8D78C350414390A248D225554148680F7979C35041E61008BFD125554151B0F3647AC35041E1FE0E84D1255541069D2F3D7BC3504189916D35D12555410AD31AEE7BC35041E7EC1549D125554114F70C647CC35041E61008BFD1255541131BFFD97CC3504148A29B83D22555417176A7ED7CC35041A4452883D3255541C5D14F017DC3504155206B20D4255541C0BF56C67CC35041B7B1FEE4D4255541BC896B157CC35041627A4847D525554155E6DE157BC350416C9E3ABDD5255541F43059DB79C35041C50BDC0BD62555413E441D0379C35041BCC3F71FD52555410E000000EEDFC6BD8FC35041D8B62A98D02555418C4E33F98EC3504128B8F584CF2555413E0584208FC3504178DDB2E7CE25554191602C348FC350416A83D5C0CD255541A09617E58FC3504103E048C1CC255541FC39A4E490C3504103E048C1CC255541B638D9F791C35041573BF1D4CC25554112DC65F792C35041B9CC8499CD255541BEA4AF5993C3504115701199CE2555411C00586D93C350417C139E98CF2555416B49074693C35041855B8284D02555415DEF291F92C350418F7F74FAD0255541FC39A4E490C350418F7F74FAD0255541EEDFC6BD8FC35041D8B62A98D02555410500000058A8FEE167C35041FC42BDB22D2655417008F10068C3504161B4A89428265541BE6156296DC35041AEE9578A2826554159CCB4146DC35041AF0D0EBD2D26554158A8FEE167C35041FC42BDB22D2655410500000087C3C6C168C35041EB12052B1E265541A45BDFF568C3504114D90EF4182655416523C3056EC3504122251B0E19265541621040FF6DC35041E8FF81241E26554187C3C6C168C35041EB12052B1E26554105000000B874144867C350419046F1B73C265541C7C0206267C3504139B9696B38265541410CC7EF6BC3504140DF6F78382655413EF943E96BC350418920EBAA3C265541B874144867C350419046F1B73C265541050000009DDCFB1367C350412173B73E4E26554192A3720067C35041C9E52FF249265541DFF770396BC35041BFACA6DE49265541EA30FA4C6BC35041163A2E2B4E2655419DDCFB1367C350412173B73E4E2655410500000021084EE069C35041705CC9565F265541047035AC69C350410A8335F05A2655416636460C6EC35041F823A6CF5A2655416D5C4C196EC350415BEAB62F5F26554121084EE069C35041705CC9565F265541
+</a>
+
+<b>
+0106000000010000000103000000090000008E00000080DA236875C35041A8BD34880E2655415EF71FAB71C35041334EB6970E2655417B06560971C35041A60BA96E1D2655413B92053770C35041C790AD32312655414B83D88C70C350412ACA3FA231265541B0EB6BC870C35041FCFCFFEE3126554114AE47A18FC3504185EB51F82E265541A4703DCA8DC35041713D0A47E5255541F6285C3F99C35041666666B6E425554167A07E9B97C3504176F2891CB425554157FBCADE93C35041553564F5B5255541C98704CE8EC35041204C717AB8255541BACE202B80C350418A393FC2BF255541FF8A154C70C350418D9201C5DF255541E919FDA26EC350416FF32F08E3255541ADECE3106EC350413A26C73AE4255541E6AC70AF6DC35041BA750A16E52555414D10FC2E6DC350415F97D814E6255541DC1CD7FE6CC3504129C6E079E6255541D35D455166C350412BCAE6B3F3255541F6285C7F64C35041295C8FC20D2655419A99993961C35041713D0A87452655415C8FC22562C350410AD7A3405E2655417B14AED762C3504185EB51786F265541CDCCCC1C64C35041B81E854B7C265541632858D264C350416FD4A80D80265541B46033B665C35041E6B9EFE27F2655411024AD0B66C3504147E5E8D27F2655414AA2490D66C350411AD57ED67F265541A8AE214D66C35041ABC9B062802655413A64584667C35041409E278F82265541496C127167C3504196713CEE822655416C3DEF8D67C350410D32550E84265541EBB2F31E68C35041AAA486C7892655411C5FBB5D69C350416BB634978B2655414F00EC1E6BC35041F926B2A58B2655417C75C0E96EC350418DC38BAA89265541B81FBD756FC3504125C5ABA5872655418CA5086370C3504118399E2E8426554169DCA30071C35041024FE3C2822655415C8FC2156EC35041C3F5280C832655416676C8A56DC35041FCD124AB802655413BE3F95072C350418677953580265541C9BF568F72C3504128C298547E265541E7ED1B9772C35041EEEDB1147E265541B3D4239972C35041A6C24C357D26554160AECC686EC3504178F26CA57D2655417DE231576CC35041525B39E57D265541559672276CC350416CEBC4E27D2655412F5BA5C96BC35041490B5575792655411D23B4A26BC350412AA3F108782655415A4F3AD271C350417E033F7F772655412B393E7371C350419A0AC26673265541494974C270C350414DE1A4416C2655416F9F615770C35041B39D04076826554129E995B66FC350411CC031AD612655415D43F69F6FC35041A1B6FDD06026554191F4B48E6FC35041F85CAB385E26554155892E4F6FC35041522F919C562655418E56BB066FC3504151D2AA6250265541B04E5A756EC35041BA6E0D9A44265541CCCEAA5E6EC35041E37057D442265541E954DC5E6EC35041C86F57C742265541EC0FDA586EC350414458A84A4226554165C54C7A6EC35041FA1B6D933B2655417F03D69E6EC350419EC4A0BC33265541713D0AA76DC350419A9999E932265541AE47E1CA6AC3504185EB51C8322655416AEC7DB96AC35041B859BABE33265541098957BE68C35041F21BB0F8332655417C7EC1BB68C3504141EF660E322655413C42D7B868C35041815856EE31265541E80996BB68C35041B07038EE312655410E2F8ABB68C35041C9ED70E531265541BDC85FC86AC35041F09F72D03126554182A969CC6AC35041EB9AB7D7312655419E3328D46AC35041E43D63D7312655414C500CE06AC35041ED930FFB31265541578BDBFC6AC3504130FEEA2E322655417B14AE876EC3504114AE47F1312655415F94C5CC6EC35041ABAFB21531265541AA37B6236FC35041D380E86727265541F7395FDE70C350410429061CFE255541ACE0F9B56BC3504137FEC2F2FD255541376A30FB6BC3504163FB9632F92555416FAA32FE6BC350412DD169FBF8255541781E647971C35041201B751AF925554148E17AA471C35041AE47E1AAF7255541DD4A0AD374C35041CE8BDF94F3255541C275ACE374C35041337E3E88F32555414310B1E974C3504140549480F3255541CFFED9AA79C35041C93038E1EF25554102A00A6C7BC35041230B1CACED255541BC6C010B7FC35041461D0936D72555412DF686207EC350416F79584AD6255541713D0A177EC35041EC51B8DED4255541D871EEDF7EC3504173450A99D42555419799CAAA7FC35041983C33B1D3255541B66497CC80C35041EFDF2308D4255541D2DB19C580C350411A874972D42555410480D4B680C35041E99B545CD5255541175B22B184C350413DCADB56D5255541202A2AC885C35041F2DEA454D52555418D58DFC685C35041E3474C5ED5255541AC24B11A85C3504103629664DA25554143B4CC1885C350418A6DB972DA2555412F8E9C8C82C3504180A9668CDA25554155B18EFC7FC3504193290DAADA2555415BF4E0D17DC350413304D2BEE72555416A5C8DDF81C35041FA77C3FCE7255541273CB68281C35041359BE637EC255541F168B2E17CC35041B87F824CEC2555418FC2F5887CC3504185EB51E8ED2555410ECDE5C97BC3504137B30AAFEF25554184F7DFE17AC350410827E3A9F02555416DD7DD787AC35041F62FC21DF1255541F6285C4F76C350415C8FC245F4255541E41DDE3D74C3504162DF4273F6255541F4AA1A0E73C3504182009267F82555411E3912E172C35041F83BEEB3F825554114C78D7E72C350417B86A5FEFA2555414717A53F72C3504189EE4F92FC255541EE516C1072C350414ECAEF6E02265541098D13E571C350418B74A1F8072655410A06CF3277C3504192728E2B082655419E94AC9A7EC350418F0FC6710826554125B386097FC350419C1B628AFB255541EEF45C317FC35041E10C3EE7F6255541AEC2A9337FC35041BE1721E7F625554143FDCB337FC35041A4A85CE3F625554192D4C50983C35041D82BD4B6F625554126038C5D86C35041F231F08CF62555410CBFC45F86C350417E39D48CF62555414AD30D5C86C3504135914E6CF9255541BD600F4F86C35041308FBF6C122655415F29CF7286C3504177EB0739222655418305E87D86C35041771253D1262655415D947ADC82C35041771253D12626554110CBBEC67FC35041B8B397D2262655412FD4427F7FC350413CD68CEE202655419E94AC9A7EC350410D19CD720E26554180DA236875C35041A8BD34880E265541050000003D6830316AC35041DB6EC2CB0C26554195D5D17F6AC350414B99ABE107265541CC3D471B6FC35041F24FFC080826554179E29E076FC35041812513F30C2655413D6830316AC35041DB6EC2CB0C265541110000003E441D0379C35041BCC3F71FD52555413F202B8D78C350415E445D96D42555413A0E325278C35041F87CDE20D32555413F202B8D78C350414390A248D225554148680F7979C35041E61008BFD125554151B0F3647AC35041E1FE0E84D1255541069D2F3D7BC3504189916D35D12555410AD31AEE7BC35041E7EC1549D125554114F70C647CC35041E61008BFD1255541131BFFD97CC3504148A29B83D22555417176A7ED7CC35041A4452883D3255541C5D14F017DC3504155206B20D4255541C0BF56C67CC35041B7B1FEE4D4255541BC896B157CC35041627A4847D525554155E6DE157BC350416C9E3ABDD5255541F43059DB79C35041C50BDC0BD62555413E441D0379C35041BCC3F71FD52555410E000000EEDFC6BD8FC35041D8B62A98D02555418C4E33F98EC3504128B8F584CF2555413E0584208FC3504178DDB2E7CE25554191602C348FC350416A83D5C0CD255541A09617E58FC3504103E048C1CC255541FC39A4E490C3504103E048C1CC255541B638D9F791C35041573BF1D4CC25554112DC65F792C35041B9CC8499CD255541BEA4AF5993C3504115701199CE2555411C00586D93C350417C139E98CF2555416B49074693C35041855B8284D02555415DEF291F92C350418F7F74FAD0255541FC39A4E490C350418F7F74FAD0255541EEDFC6BD8FC35041D8B62A98D0255541050000005CA8FEE167C35041F742BDB22D2655416B08F10068C350415FB4A89428265541C16156296DC35041ACE9578A282655415BCCB4146DC35041AA0D0EBD2D2655415CA8FEE167C35041F742BDB22D2655410500000089C3C6C168C35041EF12052B1E265541A55BDFF568C3504117D90EF4182655416123C3056EC350411F251B0E19265541661040FF6DC35041EAFF81241E26554189C3C6C168C35041EF12052B1E26554105000000B774144867C350419446F1B73C265541CBC0206267C3504137B9696B38265541440CC7EF6BC3504141DF6F78382655413FF943E96BC350418A20EBAA3C265541B774144867C350419446F1B73C265541050000009ADCFB1367C350411E73B73E4E26554196A3720067C35041CCE52FF249265541DAF770396BC35041BDACA6DE49265541E930FA4C6BC350411A3A2E2B4E2655419ADCFB1367C350411E73B73E4E2655410500000021084EE069C35041755CC9565F265541047035AC69C350410F8335F05A2655416536460C6EC35041F623A6CF5A2655416F5C4C196EC3504158EAB62F5F26554121084EE069C35041755CC9565F265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>958590 - 2986914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000000EDD0B6FE36D5141E29D533AB89A544100000010E56D5141000000B0B19A5441EC51B8FEE56D51417B14AE47AF9A5441A4703D6AE76D5141D7A370DDAD9A5441B81E853BEF6D51411F85EB21A99A5441000000B0F76D5141AE47E13AA49A5441CDCCCC3CFE6D5141EC51B89EA09A544185EB51C8096E5141713D0A179B9A54418FC2F5F8136E514100000000979A544114AE47911B6E514152B81EC5949A544114AE4701216E514114AE4751949A5441B81E851B2B6E5141F6285CDF949A5441CDCCCC3C366E5141A4703D9A959A5441713D0AB7386E5141A4703DEA949A54411F85EB013A6E5141295C8FC2939A54410AD7A3A03B6E5141713D0A77909A5441CDCCCC7C436E5141666666A6749A544114AE47F1446E5141EC51B83E709A544148E17A84446E51411F85EB716E9A5441713D0A07436E5141C3F5282C6D9A5441E17A142E366E51417B14AEB7669A5441C3F528EC1D6E5141F6285CEF599A5441B81E852B196E514114AE47A1579A544148E17A94166E51411F85EB91579A5441CDCCCC5C0C6E51417B14AE77599A5441AE47E1DA066E5141B81E858B5B9A5441B81E859BFB6D51411F85EB41619A54413D0AD7E3F36D5141EC51B8FE659A5441E17A14EEE66D5141C3F528CC6E9A544100000050D86D51417B14AED7799A54419A9999F9A56D5141B81E85CBA09A5441AB651FE69D6D5141EF7384FFA79A54410EDD0B6FE36D5141E29D533AB89A5441
+</a>
+
+<b>
+01060000000100000001030000000100000040000000FD4F7447E66D51418302104A6F9A54417BE98F6ADA6D514126E7BD40789A54410FB6B4DBC86D51418B772ACD859A544134EADA82AC6D51419AE6B5BC9B9A54418A0CBCF1A36D514172581E69A29A54415B7198249D6D514120EC58D2A79A5441E1F37D48986D5141C90824B0AB9A5441439043D1966D5141E0E7AADAAC9A5441A8F64EEB946D514167AC495DAE9A544195ADDE7D936D514140B80680AF9A5441AE47E1EA916D51410AD7A3C0B09A5441AE47E15A876D5141B81E85ABB99A54415C8FC2E5846D5141EC51B84EBC9A54413D0AD7F3826D51415C8FC2C5BF9A5441E17A14CE7E6D5141713D0A57C89A54417FC2F415806D5141DD1BACB0C89A54410E3EA2D5816D51410D95941BC99A5441B4584C0A876D51410C7BB74BCA9A54416F3C483F8C6D514136FF718ACB9A5441295C8F02976D514185EB5148CE9A54418FC2F5A8A16D51413D0AD7F3D09A5441713D0AA7B86D5141333333C3D79A5441333333B3BE6D5141C3F5284CD89A544100000080CF6D51410AD7A3C0DC9A54415C8FC265D96D51417B14AE97DF9A5441B81E85DBD96D5141EC51B8AEDE9A54411FA9185EE26D5141A1BD6382BC9A544109DD0B6FE36D5141E19D533AB89A544100000010E56D5141000000B0B19A5441EC51B8FEE56D51417B14AE47AF9A5441A4703D6AE76D5141D7A370DDAD9A5441B81E853BEF6D51411F85EB21A99A5441000000B0F76D5141AE47E13AA49A5441CDCCCC3CFE6D5141EC51B89EA09A544185EB51C8096E5141713D0A179B9A54418FC2F5F8136E514100000000979A544114AE47911B6E514152B81EC5949A544114AE4701216E514114AE4751949A544145D4D84F2E6E5141FAFC2915959A5441CDCCCC3C366E5141A4703D9A959A5441713D0AB7386E5141A4703DEA949A54411F85EB013A6E5141295C8FC2939A5441A9CC02C93B6E5141E9D72CE88F9A54414EF13DE03B6E5141AD11F7958F9A5441BA637F4F3F6E5141269E736E839A5441FB079829446E51411E9E449B729A544114AE47F1446E5141EC51B83E709A544148E17A84446E51411F85EB716E9A5441713D0A07436E5141C3F5282C6D9A5441895E5ED3346E5141A2F4FA00669A5441F5C887EE2A6E514125D44CCA609A5441B81E852B196E514114AE47A1579A544148E17A94166E51411F85EB91579A5441CDCCCC5C0C6E51417B14AE77599A5441AE47E1DA066E5141B81E858B5B9A54416BDA6776036E5141C8279C445D9A544137B18141006E5141A47489E55E9A54412549E3E7FD6D514177EE1717609A5441B80CB548FA6D5141F9B8E711629A5441CA13A21EF66D5141A58F54A0649A54410FD145BBF16D5141EFCE0676679A544173BE12DAEA6D5141FA163E226C9A5441F839728BE86D51414B4666B36D9A5441FD4F7447E66D51418302104A6F9A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>958590 - 3812684
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000000EDD0B6FE36D5141E29D533AB89A544100000010E56D5141000000B0B19A5441EC51B8FEE56D51417B14AE47AF9A5441A4703D6AE76D5141D7A370DDAD9A5441B81E853BEF6D51411F85EB21A99A5441000000B0F76D5141AE47E13AA49A5441CDCCCC3CFE6D5141EC51B89EA09A544185EB51C8096E5141713D0A179B9A54418FC2F5F8136E514100000000979A544114AE47911B6E514152B81EC5949A544114AE4701216E514114AE4751949A5441B81E851B2B6E5141F6285CDF949A5441CDCCCC3C366E5141A4703D9A959A5441713D0AB7386E5141A4703DEA949A54411F85EB013A6E5141295C8FC2939A54410AD7A3A03B6E5141713D0A77909A5441CDCCCC7C436E5141666666A6749A544114AE47F1446E5141EC51B83E709A544148E17A84446E51411F85EB716E9A5441713D0A07436E5141C3F5282C6D9A5441E17A142E366E51417B14AEB7669A5441C3F528EC1D6E5141F6285CEF599A5441B81E852B196E514114AE47A1579A544148E17A94166E51411F85EB91579A5441CDCCCC5C0C6E51417B14AE77599A5441AE47E1DA066E5141B81E858B5B9A5441B81E859BFB6D51411F85EB41619A54413D0AD7E3F36D5141EC51B8FE659A5441E17A14EEE66D5141C3F528CC6E9A544100000050D86D51417B14AED7799A54419A9999F9A56D5141B81E85CBA09A5441AB651FE69D6D5141EF7384FFA79A54410EDD0B6FE36D5141E29D533AB89A5441
+</a>
+
+<b>
+01060000000100000001030000000100000040000000FD4F7447E66D51418302104A6F9A54417BE98F6ADA6D514126E7BD40789A54410FB6B4DBC86D51418B772ACD859A544134EADA82AC6D51419AE6B5BC9B9A54418A0CBCF1A36D514172581E69A29A54415B7198249D6D514120EC58D2A79A5441E1F37D48986D5141C90824B0AB9A5441439043D1966D5141E0E7AADAAC9A5441A8F64EEB946D514167AC495DAE9A544195ADDE7D936D514140B80680AF9A5441AE47E1EA916D51410AD7A3C0B09A5441AE47E15A876D5141B81E85ABB99A54415C8FC2E5846D5141EC51B84EBC9A54413D0AD7F3826D51415C8FC2C5BF9A5441E17A14CE7E6D5141713D0A57C89A54417FC2F415806D5141DD1BACB0C89A54410E3EA2D5816D51410D95941BC99A5441B4584C0A876D51410C7BB74BCA9A54416F3C483F8C6D514136FF718ACB9A5441295C8F02976D514185EB5148CE9A54418FC2F5A8A16D51413D0AD7F3D09A5441713D0AA7B86D5141333333C3D79A5441333333B3BE6D5141C3F5284CD89A544100000080CF6D51410AD7A3C0DC9A54415C8FC265D96D51417B14AE97DF9A5441B81E85DBD96D5141EC51B8AEDE9A54411FA9185EE26D5141A1BD6382BC9A544109DD0B6FE36D5141E19D533AB89A544100000010E56D5141000000B0B19A5441EC51B8FEE56D51417B14AE47AF9A5441A4703D6AE76D5141D7A370DDAD9A5441B81E853BEF6D51411F85EB21A99A5441000000B0F76D5141AE47E13AA49A5441CDCCCC3CFE6D5141EC51B89EA09A544185EB51C8096E5141713D0A179B9A54418FC2F5F8136E514100000000979A544114AE47911B6E514152B81EC5949A544114AE4701216E514114AE4751949A544145D4D84F2E6E5141FAFC2915959A5441CDCCCC3C366E5141A4703D9A959A5441713D0AB7386E5141A4703DEA949A54411F85EB013A6E5141295C8FC2939A5441A9CC02C93B6E5141E9D72CE88F9A54414EF13DE03B6E5141AD11F7958F9A5441BA637F4F3F6E5141269E736E839A5441FB079829446E51411E9E449B729A544114AE47F1446E5141EC51B83E709A544148E17A84446E51411F85EB716E9A5441713D0A07436E5141C3F5282C6D9A5441895E5ED3346E5141A2F4FA00669A5441F5C887EE2A6E514125D44CCA609A5441B81E852B196E514114AE47A1579A544148E17A94166E51411F85EB91579A5441CDCCCC5C0C6E51417B14AE77599A5441AE47E1DA066E5141B81E858B5B9A54416BDA6776036E5141C8279C445D9A544137B18141006E5141A47489E55E9A54412549E3E7FD6D514177EE1717609A5441B80CB548FA6D5141F9B8E711629A5441CA13A21EF66D5141A58F54A0649A54410FD145BBF16D5141EFCE0676679A544173BE12DAEA6D5141FA163E226C9A5441F839728BE86D51414B4666B36D9A5441FD4F7447E66D51418302104A6F9A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46511 - 249793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000340000006CF353F1CED45041FBCB42F214085541B4EFF3ECCED45041BDE942151508554125F7B3F5CED45041D21D8352150855414CE61445CFD45041BC2DE82617085541FAC42C32D0D450418EF265211E085541C08760F0D9D4504124D2F8E63D0855412B29BF71DAD45041D77581DF3D0855419A9999F9D9D450419A9999093E085541FC34519BE2D450416A771DF63E0855412A8A1984E2D450412DB473002E085541B3112513E3D45041ACE0B08125085541D71C4520E3D450415FB0D048250855418A27961AE3D45041664980F524085541B81E85ABE2D450415C8FC25524085541713D0A47E2D45041F6285C6F2308554114AE4751E2D45041C3F528AC22085541333333A3E2D4504114AE47D1210855417B14AE27E3D450410000007021085541D7A3707DE3D4504152B81EA52008554114AE47F1E3D45041295C8F2220085541CDCCCC7CE4D450417B14AEB71F085541666666D6E4D45041A4703DDA1E085541713D0A07E5D45041D7A370FD1D085541EC51B85EE5D45041F6285C9F1D0855415C8FC225E6D45041CDCCCC3C1D085541000000B0E6D4504185EB51981C085541C3F528DCE6D45041CDCCCCCC1B085541EC51B8CEE6D4504148E17AD419085541AE47E18AE6D4504148E17A54190855419A999989E5D45041A4703D9A18085541CDCCCCCCE4D45041AE47E13A1708554114AE47F1E3D45041E17A142E160855417B14AE67E3D4504152B81E451508554148E17A04E3D45041B81E85DB14085541B81E853BE2D4504148E17A8414085541B81E85EBE0D45041B81E856B14085541295C8FE2DBD45041EC51B89E12085541F6285CAFD9D45041D7A3703D1108554152B81E45D8D45041B81E85CB0F0855417B14AE27D7D450413D0AD7730E085541A4703D6AD6D450417B14AE270E08554185EB51B8D5D45041000000800E0855411F85EB31D5D45041B81E851B0F085541666666F6D4D45041F6285C0F1008554148E17A44D5D4504185EB51C811085541E17A142ED5D45041C3F528AC120855419A9999C9D4D450418FC2F5E813085541D7A3703DD4D450417B14AE67140855418FC2F548D3D45041F6285C8F140855410AD7A320D2D4504185EB51A8140855416E0A7539D0D45041F0B1A2D3140855416CF353F1CED45041FBCB42F214085541
+</a>
+
+<b>
+0106000000010000000103000000010000004E00000055B401D5E6D450413E1D61C01A085541101FE7C5E6D45041BD03D8C319085541A095A47FE6D45041F57E584C190855419A999989E5D45041A4703D9A1808554197B0D3E4E4D45041B03098671708554181C1435AE4D45041EEF5A1AE1608554114AE47F1E3D45041E17A142E16085541F532EDD0E3D45041120C4EF715085541F590101AE3D45041584D7FF214085541D01EC625E2D45041DB54DD8214085541AA92D34AE1D450419593997214085541C0E3DAFDE0D45041CFCCE16C14085541B81E85EBE0D45041B81E856B14085541295C8FE2DBD45041EC51B89E120855417FEC29BBDBD450413E000286120855412B5E1584DAD450414A29E0C211085541BEDC0B66DAD4504181BE08B011085541F6285CAFD9D45041D7A3703D11085541F54E649BD9D45041F2680C291108554152B81E45D8D45041B81E85CB0F085541279819A9D7D450416492AA0F0F085541D719F3A7D7D45041C0FD470E0F085541B937151ED7D45041A050FB6F0E085541DA574062D6D450419F45A52B0E0855410E6B64BDD5D45041F96B7B7D0E0855412E843A47D5D45041F4E8DC020F085541F5F10BF9D4D45041C09F4E1E1008554148E17A44D5D4504185EB51C811085541D46B5E44D5D45041FE6273C911085541E17A142ED5D45041C3F528AC120855419A9999C9D4D450418FC2F5E813085541D7A3703DD4D450417B14AE67140855418FC2F548D3D45041F6285C8F14085541C0CCA89AD2D45041A0BA0A9E14085541EF87D507D1D45041DB5849C114085541D46483F0CED450419440C7F8140855411DF9D538CFD450419CB6A5DE160855414CE61445CFD45041BC2DE826170855413B755551CFD45041FB0F3A8317085541A57B06A0CFD45041B14A2AD41908554124BB7C31D0D45041AC80371C1E08554118AB9408D3D4504107B73362270855415551E685D7D45041393E1F0636085541788E375AD9D45041991B4DFD3B085541CEE9A5ACD9D4504131BA1B0A3D0855415415B6EDD9D45041E15D47DE3D0855412B29BF71DAD45041D77581DF3D085541CEE9FA14DAD45041E8D5870C3E085541CEE32398E2D45041EE69C6F53E085541A6E8088FE2D450416EB74DFD35085541B8813A8AE2D450411E88887A320855412A8A1984E2D450412DB473002E085541AE9C71EBE2D45041954747DD270855418264971AE3D45041DF6F92F524085541BB03F918E3D45041EA162EF324085541B81E85ABE2D450415C8FC25524085541713D0A47E2D45041F6285C6F2308554114AE4751E2D45041C3F528AC22085541333333A3E2D4504114AE47D121085541C7D2E5C4E2D45041962789B8210855416877E02FE3D4504120E89B5C21085541D7A3707DE3D4504152B81EA520085541016F7789E3D45041CFB290972008554114AE47F1E3D45041295C8F2220085541E724301AE4D4504141E038032008554130AF7C85E4D45041A3E835A21F085541E14E98DDE4D45041832594B91E085541EFE02C04E5D45041EEB6710A1E085541713D0A07E5D45041D7A370FD1D085541B27C772CE5D45041250848D51D085541D8F4E433E5D45041E4C44FCD1D085541EC51B85EE5D45041F6285C9F1D0855411417D0F6E5D450416A110C541D08554141E9E829E6D4504182CCDC371D085541991BA8B1E6D450411256AF901C08554103E677BCE6D450416B6EDB5E1C08554170BD5DD2E6D4504161D0EFF91B08554155B401D5E6D450413E1D61C01A085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 249283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB8544185EB5168FBF450410AD7A3C0EEB8544148E17AE4FAF45041CDCCCC6CEEB85441C3F528DCF9F45041CDCCCCFCEEB8544148E17A04F9F450410AD7A350EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441C3F5280CFAF4504148E17A34EDB85441C3F5282CF8F4504148E17AD4ECB8544185EB5108F8F450410AD7A360EBB854410AD7A3B0F8F45041CDCCCC8CE9B8544148E17A14FBF45041CDCCCCBCE9B854410AD7A380FBF450418FC2F5B8EAB854410AD7A330FDF450410AD7A370EAB8544148E17A04FFF450418FC2F5B8EAB854410AD7A310FFF450418FC2F538E9B85441C3F528BCFEF450418FC2F5E8E7B854410AD7A3A0FFF4504148E17A34E7B8544185EB517800F550410AD7A320E6B8544148E17A9402F550410AD7A360E5B85441C3F5280C03F550418FC2F578E5B854410AD7A39003F550410AD7A3D0E4B85441C3F5283C03F5504148E17AD4E3B85441C3F5285C04F550418FC2F598E3B854410AD7A34005F5504148E17AE4E2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854410AD7A33009F5504148E17A84E2B854410AD7A3E00AF5504148E17AC4E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544185EB51880BF550410AD7A390DFB854410AD7A3100BF550410AD7A390DCB854410AD7A3D00BF550418FC2F558DBB85441C3F528DC0BF55041CDCCCCCCD9B85441C3F528DC08F550410AD7A3A0D8B8544185EB51F807F55041CDCCCC2CD7B85441C3F528DC08F550418FC2F5C8D4B8544148E17A8409F55041CDCCCC8CD4B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441C3F528CC0CF550410AD7A3C0D6B8544185EB51380DF55041CDCCCC2CD7B8544148E17A840CF5504148E17A94D8B8544185EB51A80CF550418FC2F568DAB85441C3F528BC0DF5504148E17A34DBB854410AD7A3900FF550410AD7A350DDB854410AD7A31011F550418FC2F5C8DDB854410AD7A36012F55041CDCCCCECDDB8544185EB510813F550418FC2F5C8DDB85441C3F5284C14F550410AD7A3D0DEB85441C3F5286C16F55041C3F528ACDFB85441A4703DAA18F550417B14AE77DBB85441C3F528AC17F5504148E17AA4DAB854410AD7A32016F5504148E17A14DAB85441C3F528AC14F550418FC2F598DAB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB854410AD7A31011F550410AD7A3A0DBB8544148E17AA410F5504148E17AB4DCB8544185EB513810F550418FC2F528DBB8544148E17AA410F55041CDCCCCECDAB8544185EB51C810F550410AD7A390D9B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B8544185EB512814F550418FC2F588D5B854410AD7A36015F5504148E17A84D3B854410AD7A3F015F550410AD7A360D3B8544185EB513816F5504148E17A84D3B85441C3F528BC16F550418FC2F548D3B8544185EB51A818F550410AD7A350D1B8544148E17A7419F55041CDCCCCFCD0B85441C3F5285C19F5504148E17A74CEB8544185EB51C819F55041CDCCCC6CCDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB8544185EB51B81AF55041CDCCCCFCCAB8544148E17A441CF55041CDCCCCACC9B8544185EB51F81CF5504148E17AF4C9B8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF550418FC2F528CCB8544148E17A241EF5504148E17A64CCB854410AD7A3501FF550410AD7A3A0CCB854410AD7A3301EF550410AD7A3B0CEB854410AD7A3E01CF5504148E17A64D2B85441C3F5281C1DF5504148E17A24D3B85441AE47E1BA21F550415C8FC2C5CBB85441A4703D8A26F55041C3F528FCC4B8544185EB51D824F550418FC2F528C6B854410AD7A30024F550418FC2F538C5B854410AD7A3F024F550418FC2F518C4B8544148E17A4425F550410AD7A320C2B8544185EB51F825F55041CDCCCC0CC1B8544148E17AC426F550410AD7A3A0BDB85441C3F5281C26F550410AD7A310BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441C3F528AC26F55041CDCCCCFCBBB8544185EB51C825F550418FC2F528BAB85441C3F5284C26F550410AD7A3A0B7B8544148E17A2427F5504148E17A04B7B8544148E17AA428F55041CDCCCCECB6B854410AD7A3A029F5504148E17AD4B6B8544185EB51482AF5504148E17A54B8B85441CDCCCC5C2BF550418FC2F568BCB85441295C8F322BF550418FC2F568BEB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B8544148E17A642CF5504148E17AB4B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B8544185EB51282CF550410AD7A350B0B854410AD7A3502BF5504148E17A94AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB85441CDCCCCBC2EF55041CDCCCC8CADB85441CDCCCCEC2EF550410AD7A390ACB854410AD7A3502EF550418FC2F518ACB854410AD7A3002DF5504148E17A54ACB854410AD7A3B02BF550418FC2F5E8ABB8544148E17A542AF550410AD7A300ACB8544185EB518829F550418FC2F528ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB854410AD7A31029F5504148E17AE4A9B854410AD7A3602AF55041CDCCCC9CA6B8544148E17A542DF55041CDCCCC5CA7B8544185EB51782DF55041CDCCCCDCA5B85441CDCCCC7C2FF5504148E17AF4A5B854410AD7A39030F5504148E17A34A2B85441CDCCCCEC31F5504148E17A44A1B85441CDCCCCFC36F5504148E17A34A2B85441CDCCCCAC38F55041CDCCCC1CA2B85441CDCCCC6C39F55041CDCCCC5CA1B8544148E17A443AF55041CDCCCCFCA0B8544148E17A643BF550418FC2F538A1B854410AD7A3403BF550410AD7A3709FB85441CDCCCC3C3CF550410AD7A3109FB85441CDCCCC5C3DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB854410AD7A3603FF550418FC2F5C89EB85441CDCCCC2C40F550418FC2F5F89EB8544185EB519840F5504148E17A949FB85441CDCCCC3C42F55041CDCCCC6CA0B85441CDCCCC6C42F5504148E17AF49FB8544185EB515841F5504148E17A449EB85441CDCCCCCC42F550410AD7A3D09CB8544185EB51D842F550418FC2F5389BB854410AD7A39042F5504148E17A849AB854410AD7A3F042F5504148E17A849AB854410AD7A32043F5504148E17AB49AB854410AD7A3C045F550410AD7A3F09AB854410AD7A35046F55041CDCCCCBC9BB8544185EB519846F5504148E17A149BB854410AD7A3D047F550410AD7A3009AB854410AD7A3B049F550410AD7A3609AB85441CDCCCCAC4AF550410AD7A3209BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441CDCCCCCC4EF55041CDCCCCFC97B854410AD7A3504FF550418FC2F53898B8544185EB519852F55041CDCCCC1C99B8544148E17A8454F550418FC2F5789AB85441CDCCCCCC54F550418FC2F5E899B8544185EB51C855F550418FC2F5489AB8544148E17A3456F5504148E17A6499B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A4703D8A5BF55041C3F528FC9AB85441AE47E1AA5CF55041666666069BB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB85441333333E35EF55041F6285CFF9AB85441295C8F3263F550415C8FC2E59AB8544148E17A1464F55041CDCCCC0C9AB85441295C8FE264F55041C3F528DC9AB85441A4703D8A68F55041666666C69AB8544185EB512868F550410AD7A36097B85441CDCCCCFC66F550418FC2F58896B85441CDCCCCCC66F550418FC2F53895B854410AD7A3506AF5504148E17A6493B8544185EB51A869F550418FC2F5C892B85441CDCCCC1C62F5504148E17A4492B85441CDCCCCFC60F55041CDCCCCEC92B8544148E17A945FF550418FC2F55893B854410AD7A3205EF55041CDCCCC3C94B85441CDCCCC7C5CF55041CDCCCCDC93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B8544185EB516858F5504148E17AC490B85441CDCCCC1C56F5504148E17A2491B85441CDCCCC5C55F55041CDCCCC4C90B85441CDCCCC0C54F550418FC2F58890B85441CDCCCCDC53F550418FC2F50892B8544185EB512853F55041CDCCCC5C92B8544148E17A1452F5504148E17A9490B8544148E17AF450F5504148E17A748FB85441CDCCCC8C4FF550410AD7A3508FB85441CDCCCCFC4EF55041CDCCCC4C90B85441CDCCCCFC4EF550410AD7A39091B8544185EB51584DF550418FC2F54891B8544185EB51C849F55041CDCCCCAC90B8544185EB517845F55041CDCCCC1C90B8544148E17A9441F5504148E17AC490B854410AD7A3103EF550418FC2F5A891B8544185EB51183CF550418FC2F59892B8544148E17A043BF55041CDCCCC7C93B85441CDCCCC4C3BF550410AD7A3F094B85441CDCCCCDC38F550410AD7A3B095B85441CDCCCCFC36F550418FC2F53895B8544185EB518835F5504148E17A3496B854410AD7A37035F550410AD7A33097B8544185EB51F834F55041CDCCCC3C97B85441CDCCCC2C34F55041CDCCCC5C98B854410AD7A33033F550418FC2F55899B8544148E17A5430F550418FC2F5A89AB85441CDCCCC4C2FF5504148E17AA49BB8544148E17A942CF55041CDCCCC9C9AB854410AD7A3A029F5504148E17A149BB85441EC51B82E29F550413D0AD7139BB85441E17A14EE26F5504152B81E659CB854413333330321F550417B14AEE79FB854410000002018F5504152B81EF5A7B85441B81E85EB15F5504133333363AAB85441CDCCCCFC13F5504148E17A64ADB854410AD7A38013F550410AD7A340AEB854410AD7A38013F55041CDCCCCCCAFB85441C3F5287C11F5504148E17A74B3B85441C3F5286C0FF550418FC2F558B4B8544148E17AE40CF550418FC2F5A8B8B8544185EB51E80BF55041CDCCCCECB9B854410AD7A3400BF55041CDCCCC2CBFB854410AD7A3A008F550418FC2F5A8C1B8544185EB51F804F5504148E17AB4CAB85441C3F528DC05F550418FC2F568CBB8544185EB517806F550418FC2F5D8CDB85441C3F5284C05F5504148E17A84D0B854410AD7A31005F550418FC2F5F8D1B85441C3F528CC03F55041CDCCCC1CD2B85441C3F5283C03F550410AD7A350D4B854410AD7A35001F5504148E17A24D3B854417B14AE67FEF45041A4703D6AD8B85441CDCCCCECF8F450415C8FC285DFB8544185EB51E8F9F45041CDCCCC0CE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B8544148E17A34F6F450410AD7A310E4B85441C3F528FCF4F450418FC2F5B8E4B85441C3F5287CF3F450418FC2F5B8E4B8544185EB51F8EBF4504185EB51C8EBB854413D0AD7E3E9F45041CDCCCCDCEEB854418FC2F5B8E8F45041EC51B82EF2B854417B14AEA7E8F450417B14AE87F5B854410103000000010000001600000085EB51F891F5504148E17A74A7B85441CDCCCC0C93F550410AD7A300A9B8544185EB518895F550410AD7A330A9B8544148E17A1497F5504148E17AE4A9B8544185EB51A899F550410AD7A300ACB854410AD7A3E09AF5504148E17A24ACB8544185EB51E89BF550418FC2F5B8ABB85441EC51B83E9EF55041AE47E10AACB85441CDCCCC5C9DF5504148E17AD4AAB85441CDCCCCCC99F550418FC2F558A8B854410AD7A38097F550418FC2F568A4B85441A4703D0A96F55041F6285C4FA3B8544148E17A8493F550418FC2F518A3B85441CDCCCC8C8BF550418FC2F598A1B8544148E17AD48BF5504148E17A64A2B85441CDCCCC4C8CF550410AD7A330A3B8544185EB51588CF550410AD7A380A4B85441CDCCCCCC8DF550410AD7A3B0A7B85441CDCCCCEC8EF550410AD7A320A7B85441CDCCCCAC8FF5504148E17A44A7B85441CDCCCCFC90F550418FC2F5D8A6B8544185EB51F891F5504148E17A74A7B854410103000000010000001800000000000060FBF4504152B81E7564B854410AD7A370FFF450410AD7A3A063B8544148E17A64FFF45041CDCCCC2C62B854410AD7A3F0FDF4504148E17A1462B8544148E17A24FDF45041CDCCCC3C61B85441D7A370DDF9F450419A9999A962B8544185EB5188F6F4504148E17A6463B854410AD7A330F4F4504185EB51C862B854410AD7A3D0F0F45041CDCCCCEC62B8544148E17A44EFF450410AD7A30064B8544148E17AF4EDF45041CDCCCC0C64B854410AD7A310EDF4504185EB517864B85441CDCCCC1CEAF450410AD7A39064B8544185EB5198E9F4504148E17A5464B8544148E17A04E7F45041CDCCCCCC64B854410AD7A330E5F4504148E17A0466B8544148E17AA4E3F45041CDCCCC1C66B854410AD7A3C0E2F45041CDCCCCDC66B8544148E17AE4DFF450410AD7A33067B854418FC2F5E8DFF45041666666C667B85441B81E855BEAF4504185EB51B866B8544152B81E45F7F450419A99990967B85441A4703D4AF9F4504152B81E1567B8544100000060FBF4504152B81E7564B8544101030000000100000016000000CDCCCC5CA3F550410AD7A3F0BEB85441CDCCCCACA4F550418FC2F598BFB854410AD7A350A6F5504148E17A54C1B8544185EB5158A7F550410AD7A3C0C4B85441CDCCCC2CA6F55041CDCCCCCCBBB854410AD7A380A3F550410AD7A3E0B9B8544148E17A24A2F55041CDCCCCECB6B8544148E17AF4A1F5504148E17AB4B5B8544148E17A94A1F550418FC2F5C8B3B85441CDCCCC2CA0F5504148E17A24B2B85441CDCCCC9C9FF5504148E17A04B1B85441C3F5285C9FF550418FC2F578AFB85441CDCCCC3C9FF550410AD7A300AFB8544185EB51B89EF55041CDCCCC0CAFB8544148E17A549FF550410AD7A370B1B8544148E17A14A0F55041CDCCCC8CB6B85441CDCCCCCC9FF5504148E17A34BAB854410AD7A3C09FF5504148E17A94BDB8544148E17A14A0F5504148E17AB4BEB854410AD7A310A1F55041CDCCCCFCBEB854410AD7A390A2F550410AD7A3F0BEB85441CDCCCC5CA3F550410AD7A3F0BEB854410103000000010000002B0000000AD7A320EFF4504148E17AA47AB8544185EB5198EFF45041CDCCCCDC7BB85441CDCCCC5CEFF450410AD7A3C07CB85441CDCCCC5CEFF4504148E17AA47DB8544185EB51A8EEF45041CDCCCC1C81B8544148E17AE4EEF4504148E17A2482B8544148E17A34F0F450410AD7A36082B85441295C8F92F1F4504148E17AE484B854413D0AD703F4F45041CDCCCC6C81B854410AD7A3E0F4F45041AE47E10A7EB854413D0AD793F3F45041AE47E1AA77B85441713D0A17F0F450410000004070B85441C3F5284CEFF4504185EB51D86DB8544185EB51A8EEF45041CDCCCC4C6CB854410AD7A350ECF450410AD7A3606DB854410AD7A3E0E9F4504185EB51486DB8544185EB5128E4F4504148E17A746EB8544148E17AA4E3F450410AD7A3406FB8544185EB5178E2F450410AD7A33070B854410AD7A350DDF4504148E17A8470B8544148E17AB4DCF4504148E17AE470B8544185EB51E8DBF4504185EB515872B854410AD7A300DCF450410AD7A33073B85441CDCCCCECDDF4504148E17AF475B8544148E17A24DCF450410AD7A34078B85441CDCCCC2CDAF450410AD7A3C079B8544148E17A14DAF4504148E17AD47AB8544185EB51F8DAF4504148E17A547CB854410AD7A320E0F45041CDCCCC9C7CB8544148E17A24DFF4504148E17A747AB8544185EB5158E1F450410AD7A3D078B854410AD7A3C0E2F4504185EB514879B854410AD7A3E0E3F450410AD7A3807AB8544185EB51C8E3F45041CDCCCC7C7BB8544148E17A84E2F4504148E17AE47CB8544148E17A24E5F45041CDCCCCFC7CB85441CDCCCC1CE7F45041CDCCCC8C7DB8544148E17A24E8F45041CDCCCC2C7DB85441CDCCCCCCE8F450410AD7A3607CB8544185EB5198E9F4504185EB51487CB854410AD7A350ECF4504148E17A147AB8544148E17A64EDF450410AD7A3207AB854410AD7A320EFF4504148E17AA47AB854410103000000010000003000000085EB51A8E5F450410AD7A390ACB8544148E17AA4E6F45041CDCCCC6CACB8544185EB51E8E7F450410AD7A320ADB85441CDCCCC2CE9F45041CDCCCC7CABB854410AD7A3D0EAF450410AD7A380AAB8544185EB5148EBF45041CDCCCC6CA9B8544148E17A54EEF450410AD7A3D0A5B8544148E17A14EFF45041CDCCCC2CA4B8544185EB5178EEF4504148E17AA4A1B8544185EB5168EFF45041CDCCCC6CA0B8544185EB5138EFF45041CDCCCC9C9DB8544148E17AA4EFF4504148E17A049CB85441CDCCCCFCEEF45041CDCCCCAC9CB8544148E17A64EDF4504148E17AC49CB85441CDCCCC4CEDF45041CDCCCC2C9BB8544148E17A94EDF4504148E17AF499B8544185EB51D8EEF4504185EB51C898B85441CDCCCCFCEEF4504185EB51D897B8544185EB51C8EFF450410AD7A3D096B854410AD7A300F1F45041CDCCCC7C93B85441CDCCCCACF3F450410AD7A34090B854410AD7A330F4F450410AD7A3208FB85441CDCCCCACF3F45041CDCCCCDC8DB8544185EB5148F4F4504148E17AE48BB8544148E17A44F5F4504185EB51F88CB85441CDCCCC1CF6F4504185EB51488BB85441CDCCCC4CF6F4504148E17AD489B8544148E17A04F6F4504148E17A0487B8544148E17A54F7F4504185EB51C883B85441CDCCCC8CF8F4504148E17AC481B8544185EB5108F8F4504185EB513880B854410AD7A350F8F450410AD7A3007FB8544148E17AE4F7F45041CDCCCC7C7EB8544148E17A44F6F4504185EB51D87FB8544185EB5188F0F4504185EB51D888B854410AD7A390F1F45041CDCCCCEC89B8544148E17A54F1F4504148E17A848BB8544185EB5128F0F4504185EB51D88BB8544148E17AE4EEF4504185EB51988CB85441CDCCCCECECF4504185EB513892B85441CDCCCCFCEBF45041CDCCCC5C98B8544148E17A54EBF4504185EB51189AB854410AD7A360EBF4504185EB51289CB85441CDCCCCBCE9F4504148E17A649FB854410AD7A350E9F4504148E17A04A2B8544148E17A24E8F450410AD7A3F0A3B854410AD7A320E6F4504148E17AE4A9B8544185EB51A8E5F450410AD7A390ACB8544101030000000100000010000000CDCCCCFCDFF4504148E17A44BCB8544185EB5168E0F45041CDCCCC5CBCB85441CDCCCCBCE0F450410AD7A390BBB8544148E17A74E3F4504185EB5158B7B854410AD7A3E0E3F4504148E17A74B6B854410AD7A3E0E3F45041CDCCCC3CB5B85441CDCCCCDCE4F4504148E17A04B4B8544148E17A14E6F4504148E17A64B1B85441CDCCCC6CE5F450410AD7A310B1B8544185EB5178E5F4504185EB5198ADB8544185EB5158E4F450410AD7A360AFB854410AD7A3E0E3F450410AD7A370B1B854410AD7A3C0E2F45041CDCCCCFCB2B8544148E17A54E2F450410AD7A330B5B8544148E17A34E1F4504185EB5158B7B85441CDCCCCFCDFF4504148E17A44BCB854410103000000010000003D000000E17A141E55F650415C8FC2053AB9544114AE47B156F65041D7A370BD37B95441D7A3708D5AF650415C8FC2C538B954419A9999E95BF650415C8FC2C538B95441F6285CAF5EF65041AE47E1CA37B954418FC2F58860F65041D7A370BD37B9544185EB517863F65041AE47E18A36B954410AD7A3C065F65041713D0AA736B95441C3F528CC68F650417B14AE7737B95441295C8F626CF6504148E17A6438B95441AE47E1DA72F650410000004037B95441C3F5283C73F650410AD7A39035B954411F85EB7174F6504114AE478134B9544152B81E355FF650418FC2F51831B954410AD7A3804BF650410AD7A3002EB95441C3F5280C39F65041E17A143E29B954410000005035F650410AD7A37029B95441F6285C8F31F65041E17A14AE28B954418FC2F57830F650418FC2F5F827B954418FC2F5782BF65041B81E853B26B95441D7A370AD29F650413D0AD70326B95441A4703DAA27F6504148E17A9425B954410000003029F650418FC2F5F827B95441E17A143E29F65041E17A14AE28B95441713D0A172BF65041295C8F6229B954410AD7A3B02BF65041E17A14EE29B95441B81E853B2CF65041CDCCCC3C30B9544185EB51E82BF65041EC51B86E31B954413D0AD7032CF650417B14AE4733B95441EC51B8FE2CF650411F85EBB134B95441D7A3706D2DF650417B14AE7737B954419A9999492CF65041B81E854B3AB9544148E17A142EF65041AE47E1FA3BB954419A9999892DF650415C8FC2853CB9544152B81E652CF65041AE47E13A3DB95441713D0AD729F65041C3F5285C3CB95441EC51B8CE28F650418FC2F5C83FB9544148E17A2426F650415C8FC2753FB954415C8FC20524F65041F6285C9F3FB954411F85EBE122F65041AE47E17A3EB954417B14AE7721F6504114AE47513EB95441295C8F421EF65041EC51B8CE3EB95441C3F5282C1DF650418FC2F5C83FB95441A4703D3A1DF6504185EB517841B95441D7A3708D1DF65041713D0A9743B95441000000101EF65041AE47E1AA44B9544185EB511821F6504148E17A1444B954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB95441AE47E10A44F650419A9999E93CB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B954418FC2F5784CF65041D7A370BD37B954413D0AD7B34EF650413333334339B954417B14AE1751F65041F6285C2F3AB95441C3F5283C52F6504148E17AA439B954410AD7A36053F65041F6285C2F3AB95441E17A141E55F650415C8FC2053AB9544101030000000100000061000000C3F5280CB1F5504148E17A1419B954410AD7A3B0B2F5504185EB51781BB95441C3F528DCB3F5504185EB51981CB9544185EB5108B5F55041CDCCCC1C1DB9544148E17AA4B5F55041CDCCCC8C1FB9544185EB5158B9F55041CDCCCC5C1FB9544148E17AE4BAF5504185EB515820B9544148E17AA4BBF5504148E17A2421B9544148E17AF4BCF550410AD7A32022B95441C3F528CCBDF5504185EB51E823B9544185EB51A8BDF55041CDCCCC9C24B954410AD7A350BEF55041CDCCCC8C25B95441C3F5284CBFF55041CDCCCC7C26B95441C3F528ACC2F5504185EB51D827B9544148E17AE4C3F55041CDCCCCBC28B954410AD7A350C4F55041CDCCCC7C29B9544148E17A54C9F5504148E17AF42CB954410AD7A370CBF55041CDCCCCFC2DB9544148E17A84CCF55041CDCCCC2C2EB95441C3F5285CCDF5504148E17A642FB9544148E17AA4CDF550410AD7A3F030B9544148E17AC4CEF5504185EB51A833B9544185EB51A8CFF5504148E17AA434B95441C3F528ECD0F55041CDCCCC1C35B954410AD7A300D2F550410AD7A3C036B95441C3F5283CD2F55041CDCCCC4C38B954410AD7A320D3F5504185EB51D839B954410AD7A3B0D3F550410AD7A3D03BB9544185EB51A8D5F5504185EB51283EB9544148E17A44D9F55041CDCCCCEC40B9544148E17A94DAF5504148E17AC441B954410AD7A360DBF5504185EB51D842B95441C3F5282CDCF5504185EB51C843B9544148E17A84DEF55041CDCCCC0C45B9544185EB51D8E1F5504185EB51A845B9544148E17A34E3F550410AD7A36045B954410AD7A3E0E5F55041CDCCCCFC45B9544185EB5138E8F5504185EB51E844B95441C3F528CCEAF550410AD7A30045B9544185EB5158ECF5504148E17AB445B9544148E17A84EDF5504185EB51F846B954410AD7A3B0EEF55041CDCCCCAC47B954410AD7A300F0F5504185EB51A848B954410AD7A380F1F550410AD7A3F04BB95441C3F5282CF1F55041CDCCCCEC4CB9544148E17A44F1F550410AD7A3A04DB95441C3F528ECF1F550410AD7A3904EB95441C3F5286CF3F550410AD7A3804FB954410AD7A3B0F4F5504185EB51984FB9544148E17AF4F5F55041CDCCCC1C50B95441C3F5283CF6F55041CDCCCCAC50B9544148E17A74F7F55041CDCCCC3C51B9544148E17AF4F8F550410AD7A36051B9544185EB5188FBF5504148E17AA452B954410AD7A340FEF550410AD7A30054B9544148E17A64FEF550410AD7A3B055B9544185EB5198FDF5504185EB51B856B95441C3F528ACFBF550410AD7A36057B9544185EB5188FEF550410AD7A3F057B95441C3F528ACFEF5504185EB517857B9544185EB517802F6504185EB51D854B954410AD7A33005F6504148E17AF453B9544185EB512807F6504148E17A9453B954410AD7A36008F6504185EB51E853B9544148E17A040AF6504148E17A9453B95441C3F5288C0CF650410AD7A3F051B9544148E17AF410F650410AD7A37050B9544185EB51C812F6504185EB51F84FB95441C3F5288C15F65041CDCCCC9C4EB95441C3F528AC16F65041CDCCCC5C4CB954410AD7A36017F6504148E17A544BB954410AD7A3B018F650410AD7A3D04AB9544148E17A141BF650410AD7A3004BB954410AD7A3101CF6504185EB51E847B954410AD7A35015F65041CDCCCC9C45B9544148E17A840BF6504148E17A3447B954410AD7A31001F65041CDCCCC7C47B95441C3F5280CF9F550410AD7A38046B9544148E17AA4EEF5504185EB512844B95441C3F5280CE7F5504185EB515841B9544185EB5198DFF5504148E17AA43DB954410AD7A370D7F5504185EB510837B9544148E17AF4CEF5504148E17A842DB95441C3F5281CC8F5504185EB51E826B9544185EB5168C1F5504185EB519822B9544148E17A94BCF55041CDCCCC6C1EB9544185EB5158B9F550410AD7A3A01AB95441C3F528DCB6F550410AD7A34017B95441666666F6B3F55041295C8F7212B95441F6285C7FB1F55041AE47E14A0DB9544148E17AF4B0F550410AD7A3D00BB9544148E17AD4AFF55041CDCCCC1C0EB954410AD7A350AFF55041CDCCCC7C11B954410AD7A3E0AFF55041CDCCCC5C13B954410AD7A3B0AFF5504185EB518814B9544148E17AF4B0F5504185EB51E817B95441C3F5280CB1F5504148E17A1419B9544101030000000100000009000000EC51B8CE86F650418FC2F5D837B954410AD7A33087F65041C3F5289C38B95441F6285C3F90F65041666666E638B954417B14AE9795F650416666660639B9544185EB514895F65041295C8F5236B95441A4703D0A95F650410AD7A33033B954417B14AE4785F65041D7A370FD33B954410AD7A33087F650410AD7A3D036B95441EC51B8CE86F650418FC2F5D837B9544101030000000100000021000000EC51B83E99F45041295C8FD202B95441E17A147E9AF45041CDCCCCDC03B954413D0AD7739AF450411F85EB3105B95441E17A143E9BF45041CDCCCC7C05B9544185EB5188A1F45041D7A370BD02B9544114AE47F1A8F45041E17A14BEFEB8544114AE4751AAF450418FC2F508FDB85441B81E859BADF450418FC2F5E8FBB85441AE47E13AB2F45041EC51B83EF9B854415C8FC2C5B2F45041EC51B8BEF8B8544152B81EC5B5F45041A4703DEAF3B8544152B81EA5B5F45041A4703D8AF2B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB854413D0AD763BCF45041000000A0EFB854418FC2F5B8BDF45041000000A0EFB854413D0AD783BEF4504100000000EFB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB85441EC51B88EB0F450413D0AD753EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B85441713D0A47A7F45041F6285CFFF2B85441713D0A87A7F4504148E17A14F4B85441CDCCCCDCA6F450419A999989F5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854417B14AE07A3F45041F6285C5FF5B85441E17A14FE9CF45041EC51B8BEF9B854419A9999E997F450418FC2F5E8FCB85441EC51B8BE98F4504185EB512800B95441EC51B83E99F4504185EB512801B95441EC51B83E99F45041295C8FD202B954410103000000010000003100000014AE4741E6F45041E17A144ED0B85441EC51B83EE5F45041E17A14EECFB8544152B81E45E6F4504185EB5148C9B8544185EB51D8E5F4504148E17A24C7B8544148E17AC4E4F4504185EB5188C6B8544185EB51C8E3F4504185EB5108C5B8544148E17A04E4F45041CDCCCC7CC3B8544185EB51C8E3F4504185EB51A8C1B85441CDCCCC6CE2F450410AD7A310C0B8544148E17A94E1F4504148E17A44BFB8544185EB51F8E0F450410AD7A390BEB8544185EB5198E0F450410AD7A310BDB85441CDCCCC2CE0F4504148E17A04BDB8544148E17AF4DEF45041CDCCCC2CBFB854410AD7A3E0DDF4504185EB5188C6B85441CDCCCC6CDCF45041CDCCCC2CC8B854410AD7A3D0DBF450410AD7A330CAB8544148E17A44DAF4504185EB51C8CBB8544185EB51A8D9F45041CDCCCC9CCDB8544185EB5188D5F450410AD7A320D1B8544185EB51B8D2F450410AD7A300D3B8544185EB5198CEF4504148E17A34D5B854410AD7A3F0C7F45041CDCCCC5CDAB8544185EB51C8BFF450410AD7A390DFB8544185EB5158BDF45041CDCCCC9CE2B854410AD7A300BEF450410AD7A360E2B8544148E17A74BFF450410AD7A340E1B8544185EB51C8C2F450410AD7A3C0DFB8544185EB51F8C5F4504185EB51B8DEB854410AD7A3D0C9F4504148E17A74DDB85441CDCCCC0CCDF450410AD7A330DCB85441CDCCCC0CD0F4504148E17A34E1B8544148E17A24D0F4504185EB5118E2B854410AD7A3D0D2F450410AD7A370E4B8544185EB5178D3F450410AD7A380E3B8544148E17A64D5F4504185EB5108E3B8544185EB5158D8F45041CDCCCC7CE1B8544148E17A84D9F4504185EB51E8E1B8544148E17AC4D8F45041CDCCCC8CE0B8544185EB5118D9F4504148E17AC4DEB854410AD7A380DAF4504148E17A44DDB854410AD7A3A0DBF450410AD7A3F0DCB8544185EB5158DEF45041CDCCCCECDAB8544148E17AA4DDF450410AD7A360D9B8544185EB5198DDF4504148E17AA4D7B854410AD7A3D0E1F450410AD7A340D5B854410AD7A320E3F450410AD7A370D5B85441D7A370DDE3F450411F85EB91D4B8544114AE4741E6F45041E17A144ED0B854410103000000010000002F0000000AD7A3109EF550410AD7A350FEB85441C3F528BC9DF5504185EB51E8FCB854410AD7A3409EF55041CDCCCCBCFBB8544185EB51189FF55041CDCCCCCCFAB854410AD7A350A0F5504148E17AB4FAB8544148E17AA4A0F5504185EB5178FAB8544185EB5158A1F55041CDCCCC6CFAB8544185EB5198A3F5504148E17A34FCB8544185EB51E8A4F550410AD7A3A0FCB85441C3F5282CA6F5504185EB5148FDB85441C3F5286CA8F55041CDCCCCFCFDB85441C3F528ECA9F5504148E17A14FEB8544185EB5178ABF55041CDCCCC1CFFB85441C3F528FCABF5504185EB517800B95441C3F528ACADF550410AD7A39003B9544148E17AE4AEF55041CDCCCC4C05B9544185EB5148ACF55041713D0AA7F6B85441C3F528DCAAF5504133333303F0B8544152B81EA5AAF5504133333303EFB85441F6285CCFA8F5504152B81EA5E1B854417B14AEE7A8F55041CDCCCCBCDAB8544185EB5118A8F5504185EB51E8DBB854410AD7A3A0A7F55041CDCCCCBCDDB854410AD7A3A0A7F5504185EB5148DFB854410AD7A390A8F5504148E17AC4E4B85441C3F5280CA8F5504148E17A44E6B8544185EB5118A8F5504185EB5168E9B8544148E17AE4A8F55041CDCCCCDCEAB854410AD7A3C0A8F5504185EB5198ECB854410AD7A350A9F5504148E17AF4EDB854410AD7A350A9F550410AD7A3E0EFB85441C3F5287CA7F55041CDCCCC9CF7B85441C3F528FCA5F5504148E17AA4F8B8544185EB51E8A1F5504185EB5128F9B85441C3F528DC9EF5504185EB51A8F7B8544185EB51F89DF55041CDCCCCCCF7B8544148E17AD49AF5504148E17A24F7B85441C3F528FC96F5504148E17A54F7B8544185EB51B895F5504148E17A24F7B854413D0AD76394F55041295C8F62F7B85441EC51B83E9BF5504114AE471105B95441C3F5283C9CF5504148E17AD404B9544185EB51C89DF55041CDCCCC0C06B9544148E17A949EF5504185EB512805B954410AD7A3109EF5504185EB51E802B9544148E17AD49DF5504185EB5158FFB854410AD7A3109EF550410AD7A350FEB85441
+</a>
+
+<b>
+010600000001000000010300000001000000420000008245E2041EF65041B89D0AAD44B9544178BBC9E725F65041CE85B62743B9544105B92E7429F65041A0B60F7942B95441862E567F2DF6504184D809B241B95441E9BB2C6930F6504123FFA32241B95441E4DA9A4834F650419734066440B954411A9FBC5639F65041A08E356B3FB954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B954418FC2F5784CF65041D7A370BD37B954413D0AD7B34EF650413333334339B954417B14AE1751F65041F6285C2F3AB95441C3F5283C52F6504148E17AA439B954410AD7A36053F65041F6285C2F3AB95441E17A141E55F650415C8FC2053AB9544114AE47B156F65041D7A370BD37B95441D7A3708D5AF650415C8FC2C538B954419A9999E95BF650415C8FC2C538B95441F6285CAF5EF65041AE47E1CA37B954418FC2F58860F65041D7A370BD37B9544185EB517863F65041AE47E18A36B954410AD7A3C065F65041713D0AA736B95441C3F528CC68F650417B14AE7737B95441295C8F626CF6504148E17A6438B95441AE47E1DA72F650410000004037B95441C3F5283C73F650410AD7A39035B954411F85EB7174F6504114AE478134B9544152B81E355FF650418FC2F51831B954410AD7A3804BF650410AD7A3002EB95441C3F5280C39F65041E17A143E29B954410000005035F650410AD7A37029B95441F6285C8F31F65041E17A14AE28B954418FC2F57830F650418FC2F5F827B954418FC2F5782BF65041B81E853B26B95441D7A370AD29F650413D0AD70326B95441A4703DAA27F6504148E17A9425B954410000003029F650418FC2F5F827B95441E17A143E29F65041E17A14AE28B95441713D0A172BF65041295C8F6229B954410AD7A3B02BF65041E17A14EE29B95441B81E853B2CF65041CDCCCC3C30B9544185EB51E82BF65041EC51B86E31B954413D0AD7032CF650417B14AE4733B95441EC51B8FE2CF650411F85EBB134B95441D7A3706D2DF650417B14AE7737B954419A9999492CF65041B81E854B3AB9544148E17A142EF65041AE47E1FA3BB954419A9999892DF650415C8FC2853CB9544152B81E652CF65041AE47E13A3DB95441713D0AD729F65041C3F5285C3CB95441EC51B8CE28F650418FC2F5C83FB9544148E17A2426F650415C8FC2753FB954415C8FC20524F65041F6285C9F3FB954411F85EBE122F65041AE47E17A3EB954417B14AE7721F6504114AE47513EB95441295C8F421EF65041EC51B8CE3EB95441C3F5282C1DF650418FC2F5C83FB95441A4703D3A1DF6504185EB517841B95441D7A3708D1DF65041713D0A9743B95441000000101EF65041AE47E1AA44B954418245E2041EF65041B89D0AAD44B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 250006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB8544185EB5168FBF450410AD7A3C0EEB8544148E17AE4FAF45041CDCCCC6CEEB85441C3F528DCF9F45041CDCCCCFCEEB8544148E17A04F9F450410AD7A350EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441C3F5280CFAF4504148E17A34EDB85441C3F5282CF8F4504148E17AD4ECB8544185EB5108F8F450410AD7A360EBB854410AD7A3B0F8F45041CDCCCC8CE9B8544148E17A14FBF45041CDCCCCBCE9B854410AD7A380FBF450418FC2F5B8EAB854410AD7A330FDF450410AD7A370EAB8544148E17A04FFF450418FC2F5B8EAB854410AD7A310FFF450418FC2F538E9B85441C3F528BCFEF450418FC2F5E8E7B854410AD7A3A0FFF4504148E17A34E7B8544185EB517800F550410AD7A320E6B8544148E17A9402F550410AD7A360E5B85441C3F5280C03F550418FC2F578E5B854410AD7A39003F550410AD7A3D0E4B85441C3F5283C03F5504148E17AD4E3B85441C3F5285C04F550418FC2F598E3B854410AD7A34005F5504148E17AE4E2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854410AD7A33009F5504148E17A84E2B854410AD7A3E00AF5504148E17AC4E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544185EB51880BF550410AD7A390DFB854410AD7A3100BF550410AD7A390DCB854410AD7A3D00BF550418FC2F558DBB85441C3F528DC0BF55041CDCCCCCCD9B85441C3F528DC08F550410AD7A3A0D8B8544185EB51F807F55041CDCCCC2CD7B85441C3F528DC08F550418FC2F5C8D4B8544148E17A8409F55041CDCCCC8CD4B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441C3F528CC0CF550410AD7A3C0D6B8544185EB51380DF55041CDCCCC2CD7B8544148E17A840CF5504148E17A94D8B8544185EB51A80CF550418FC2F568DAB85441C3F528BC0DF5504148E17A34DBB854410AD7A3900FF550410AD7A350DDB854410AD7A31011F550418FC2F5C8DDB854410AD7A36012F55041CDCCCCECDDB8544185EB510813F550418FC2F5C8DDB85441C3F5284C14F550410AD7A3D0DEB85441C3F5286C16F55041C3F528ACDFB85441A4703DAA18F550417B14AE77DBB85441C3F528AC17F5504148E17AA4DAB854410AD7A32016F5504148E17A14DAB85441C3F528AC14F550418FC2F598DAB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB854410AD7A31011F550410AD7A3A0DBB8544148E17AA410F5504148E17AB4DCB8544185EB513810F550418FC2F528DBB8544148E17AA410F55041CDCCCCECDAB8544185EB51C810F550410AD7A390D9B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B8544185EB512814F550418FC2F588D5B854410AD7A36015F5504148E17A84D3B854410AD7A3F015F550410AD7A360D3B8544185EB513816F5504148E17A84D3B85441C3F528BC16F550418FC2F548D3B8544185EB51A818F550410AD7A350D1B8544148E17A7419F55041CDCCCCFCD0B85441C3F5285C19F5504148E17A74CEB8544185EB51C819F55041CDCCCC6CCDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB8544185EB51B81AF55041CDCCCCFCCAB8544148E17A441CF55041CDCCCCACC9B8544185EB51F81CF5504148E17AF4C9B8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF550418FC2F528CCB8544148E17A241EF5504148E17A64CCB854410AD7A3501FF550410AD7A3A0CCB854410AD7A3301EF550410AD7A3B0CEB854410AD7A3E01CF5504148E17A64D2B85441C3F5281C1DF5504148E17A24D3B85441AE47E1BA21F550415C8FC2C5CBB85441A4703D8A26F55041C3F528FCC4B8544185EB51D824F550418FC2F528C6B854410AD7A30024F550418FC2F538C5B854410AD7A3F024F550418FC2F518C4B8544148E17A4425F550410AD7A320C2B8544185EB51F825F55041CDCCCC0CC1B8544148E17AC426F550410AD7A3A0BDB85441C3F5281C26F550410AD7A310BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441C3F528AC26F55041CDCCCCFCBBB8544185EB51C825F550418FC2F528BAB85441C3F5284C26F550410AD7A3A0B7B8544148E17A2427F5504148E17A04B7B8544148E17AA428F55041CDCCCCECB6B854410AD7A3A029F5504148E17AD4B6B8544185EB51482AF5504148E17A54B8B85441CDCCCC5C2BF550418FC2F568BCB85441295C8F322BF550418FC2F568BEB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B8544148E17A642CF5504148E17AB4B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B8544185EB51282CF550410AD7A350B0B854410AD7A3502BF5504148E17A94AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB85441CDCCCCBC2EF55041CDCCCC8CADB85441CDCCCCEC2EF550410AD7A390ACB854410AD7A3502EF550418FC2F518ACB854410AD7A3002DF5504148E17A54ACB854410AD7A3B02BF550418FC2F5E8ABB8544148E17A542AF550410AD7A300ACB8544185EB518829F550418FC2F528ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB854410AD7A31029F5504148E17AE4A9B854410AD7A3602AF55041CDCCCC9CA6B8544148E17A542DF55041CDCCCC5CA7B8544185EB51782DF55041CDCCCCDCA5B85441CDCCCC7C2FF5504148E17AF4A5B854410AD7A39030F5504148E17A34A2B85441CDCCCCEC31F5504148E17A44A1B85441CDCCCCFC36F5504148E17A34A2B85441CDCCCCAC38F55041CDCCCC1CA2B85441CDCCCC6C39F55041CDCCCC5CA1B8544148E17A443AF55041CDCCCCFCA0B8544148E17A643BF550418FC2F538A1B854410AD7A3403BF550410AD7A3709FB85441CDCCCC3C3CF550410AD7A3109FB85441CDCCCC5C3DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB854410AD7A3603FF550418FC2F5C89EB85441CDCCCC2C40F550418FC2F5F89EB8544185EB519840F5504148E17A949FB85441CDCCCC3C42F55041CDCCCC6CA0B85441CDCCCC6C42F5504148E17AF49FB8544185EB515841F5504148E17A449EB85441CDCCCCCC42F550410AD7A3D09CB8544185EB51D842F550418FC2F5389BB854410AD7A39042F5504148E17A849AB854410AD7A3F042F5504148E17A849AB854410AD7A32043F5504148E17AB49AB854410AD7A3C045F550410AD7A3F09AB854410AD7A35046F55041CDCCCCBC9BB8544185EB519846F5504148E17A149BB854410AD7A3D047F550410AD7A3009AB854410AD7A3B049F550410AD7A3609AB85441CDCCCCAC4AF550410AD7A3209BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441CDCCCCCC4EF55041CDCCCCFC97B854410AD7A3504FF550418FC2F53898B8544185EB519852F55041CDCCCC1C99B8544148E17A8454F550418FC2F5789AB85441CDCCCCCC54F550418FC2F5E899B8544185EB51C855F550418FC2F5489AB8544148E17A3456F5504148E17A6499B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A4703D8A5BF55041C3F528FC9AB85441AE47E1AA5CF55041666666069BB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB85441333333E35EF55041F6285CFF9AB85441295C8F3263F550415C8FC2E59AB8544148E17A1464F55041CDCCCC0C9AB85441295C8FE264F55041C3F528DC9AB85441A4703D8A68F55041666666C69AB8544185EB512868F550410AD7A36097B85441CDCCCCFC66F550418FC2F58896B85441CDCCCCCC66F550418FC2F53895B854410AD7A3506AF5504148E17A6493B8544185EB51A869F550418FC2F5C892B85441CDCCCC1C62F5504148E17A4492B85441CDCCCCFC60F55041CDCCCCEC92B8544148E17A945FF550418FC2F55893B854410AD7A3205EF55041CDCCCC3C94B85441CDCCCC7C5CF55041CDCCCCDC93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B8544185EB516858F5504148E17AC490B85441CDCCCC1C56F5504148E17A2491B85441CDCCCC5C55F55041CDCCCC4C90B85441CDCCCC0C54F550418FC2F58890B85441CDCCCCDC53F550418FC2F50892B8544185EB512853F55041CDCCCC5C92B8544148E17A1452F5504148E17A9490B8544148E17AF450F5504148E17A748FB85441CDCCCC8C4FF550410AD7A3508FB85441CDCCCCFC4EF55041CDCCCC4C90B85441CDCCCCFC4EF550410AD7A39091B8544185EB51584DF550418FC2F54891B8544185EB51C849F55041CDCCCCAC90B8544185EB517845F55041CDCCCC1C90B8544148E17A9441F5504148E17AC490B854410AD7A3103EF550418FC2F5A891B8544185EB51183CF550418FC2F59892B8544148E17A043BF55041CDCCCC7C93B85441CDCCCC4C3BF550410AD7A3F094B85441CDCCCCDC38F550410AD7A3B095B85441CDCCCCFC36F550418FC2F53895B8544185EB518835F5504148E17A3496B854410AD7A37035F550410AD7A33097B8544185EB51F834F55041CDCCCC3C97B85441CDCCCC2C34F55041CDCCCC5C98B854410AD7A33033F550418FC2F55899B8544148E17A5430F550418FC2F5A89AB85441CDCCCC4C2FF5504148E17AA49BB8544148E17A942CF55041CDCCCC9C9AB854410AD7A3A029F5504148E17A149BB85441EC51B82E29F550413D0AD7139BB85441E17A14EE26F5504152B81E659CB854413333330321F550417B14AEE79FB854410000002018F5504152B81EF5A7B85441B81E85EB15F5504133333363AAB85441CDCCCCFC13F5504148E17A64ADB854410AD7A38013F550410AD7A340AEB854410AD7A38013F55041CDCCCCCCAFB85441C3F5287C11F5504148E17A74B3B85441C3F5286C0FF550418FC2F558B4B8544148E17AE40CF550418FC2F5A8B8B8544185EB51E80BF55041CDCCCCECB9B854410AD7A3400BF55041CDCCCC2CBFB854410AD7A3A008F550418FC2F5A8C1B8544185EB51F804F5504148E17AB4CAB85441C3F528DC05F550418FC2F568CBB8544185EB517806F550418FC2F5D8CDB85441C3F5284C05F5504148E17A84D0B854410AD7A31005F550418FC2F5F8D1B85441C3F528CC03F55041CDCCCC1CD2B85441C3F5283C03F550410AD7A350D4B854410AD7A35001F5504148E17A24D3B854417B14AE67FEF45041A4703D6AD8B85441CDCCCCECF8F450415C8FC285DFB8544185EB51E8F9F45041CDCCCC0CE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B8544148E17A34F6F450410AD7A310E4B85441C3F528FCF4F450418FC2F5B8E4B85441C3F5287CF3F450418FC2F5B8E4B8544185EB51F8EBF4504185EB51C8EBB854413D0AD7E3E9F45041CDCCCCDCEEB854418FC2F5B8E8F45041EC51B82EF2B854417B14AEA7E8F450417B14AE87F5B854410103000000010000001600000085EB51F891F5504148E17A74A7B85441CDCCCC0C93F550410AD7A300A9B8544185EB518895F550410AD7A330A9B8544148E17A1497F5504148E17AE4A9B8544185EB51A899F550410AD7A300ACB854410AD7A3E09AF5504148E17A24ACB8544185EB51E89BF550418FC2F5B8ABB85441EC51B83E9EF55041AE47E10AACB85441CDCCCC5C9DF5504148E17AD4AAB85441CDCCCCCC99F550418FC2F558A8B854410AD7A38097F550418FC2F568A4B85441A4703D0A96F55041F6285C4FA3B8544148E17A8493F550418FC2F518A3B85441CDCCCC8C8BF550418FC2F598A1B8544148E17AD48BF5504148E17A64A2B85441CDCCCC4C8CF550410AD7A330A3B8544185EB51588CF550410AD7A380A4B85441CDCCCCCC8DF550410AD7A3B0A7B85441CDCCCCEC8EF550410AD7A320A7B85441CDCCCCAC8FF5504148E17A44A7B85441CDCCCCFC90F550418FC2F5D8A6B8544185EB51F891F5504148E17A74A7B854410103000000010000001800000000000060FBF4504152B81E7564B854410AD7A370FFF450410AD7A3A063B8544148E17A64FFF45041CDCCCC2C62B854410AD7A3F0FDF4504148E17A1462B8544148E17A24FDF45041CDCCCC3C61B85441D7A370DDF9F450419A9999A962B8544185EB5188F6F4504148E17A6463B854410AD7A330F4F4504185EB51C862B854410AD7A3D0F0F45041CDCCCCEC62B8544148E17A44EFF450410AD7A30064B8544148E17AF4EDF45041CDCCCC0C64B854410AD7A310EDF4504185EB517864B85441CDCCCC1CEAF450410AD7A39064B8544185EB5198E9F4504148E17A5464B8544148E17A04E7F45041CDCCCCCC64B854410AD7A330E5F4504148E17A0466B8544148E17AA4E3F45041CDCCCC1C66B854410AD7A3C0E2F45041CDCCCCDC66B8544148E17AE4DFF450410AD7A33067B854418FC2F5E8DFF45041666666C667B85441B81E855BEAF4504185EB51B866B8544152B81E45F7F450419A99990967B85441A4703D4AF9F4504152B81E1567B8544100000060FBF4504152B81E7564B8544101030000000100000016000000CDCCCC5CA3F550410AD7A3F0BEB85441CDCCCCACA4F550418FC2F598BFB854410AD7A350A6F5504148E17A54C1B8544185EB5158A7F550410AD7A3C0C4B85441CDCCCC2CA6F55041CDCCCCCCBBB854410AD7A380A3F550410AD7A3E0B9B8544148E17A24A2F55041CDCCCCECB6B8544148E17AF4A1F5504148E17AB4B5B8544148E17A94A1F550418FC2F5C8B3B85441CDCCCC2CA0F5504148E17A24B2B85441CDCCCC9C9FF5504148E17A04B1B85441C3F5285C9FF550418FC2F578AFB85441CDCCCC3C9FF550410AD7A300AFB8544185EB51B89EF55041CDCCCC0CAFB8544148E17A549FF550410AD7A370B1B8544148E17A14A0F55041CDCCCC8CB6B85441CDCCCCCC9FF5504148E17A34BAB854410AD7A3C09FF5504148E17A94BDB8544148E17A14A0F5504148E17AB4BEB854410AD7A310A1F55041CDCCCCFCBEB854410AD7A390A2F550410AD7A3F0BEB85441CDCCCC5CA3F550410AD7A3F0BEB854410103000000010000002B0000000AD7A320EFF4504148E17AA47AB8544185EB5198EFF45041CDCCCCDC7BB85441CDCCCC5CEFF450410AD7A3C07CB85441CDCCCC5CEFF4504148E17AA47DB8544185EB51A8EEF45041CDCCCC1C81B8544148E17AE4EEF4504148E17A2482B8544148E17A34F0F450410AD7A36082B85441295C8F92F1F4504148E17AE484B854413D0AD703F4F45041CDCCCC6C81B854410AD7A3E0F4F45041AE47E10A7EB854413D0AD793F3F45041AE47E1AA77B85441713D0A17F0F450410000004070B85441C3F5284CEFF4504185EB51D86DB8544185EB51A8EEF45041CDCCCC4C6CB854410AD7A350ECF450410AD7A3606DB854410AD7A3E0E9F4504185EB51486DB8544185EB5128E4F4504148E17A746EB8544148E17AA4E3F450410AD7A3406FB8544185EB5178E2F450410AD7A33070B854410AD7A350DDF4504148E17A8470B8544148E17AB4DCF4504148E17AE470B8544185EB51E8DBF4504185EB515872B854410AD7A300DCF450410AD7A33073B85441CDCCCCECDDF4504148E17AF475B8544148E17A24DCF450410AD7A34078B85441CDCCCC2CDAF450410AD7A3C079B8544148E17A14DAF4504148E17AD47AB8544185EB51F8DAF4504148E17A547CB854410AD7A320E0F45041CDCCCC9C7CB8544148E17A24DFF4504148E17A747AB8544185EB5158E1F450410AD7A3D078B854410AD7A3C0E2F4504185EB514879B854410AD7A3E0E3F450410AD7A3807AB8544185EB51C8E3F45041CDCCCC7C7BB8544148E17A84E2F4504148E17AE47CB8544148E17A24E5F45041CDCCCCFC7CB85441CDCCCC1CE7F45041CDCCCC8C7DB8544148E17A24E8F45041CDCCCC2C7DB85441CDCCCCCCE8F450410AD7A3607CB8544185EB5198E9F4504185EB51487CB854410AD7A350ECF4504148E17A147AB8544148E17A64EDF450410AD7A3207AB854410AD7A320EFF4504148E17AA47AB854410103000000010000003000000085EB51A8E5F450410AD7A390ACB8544148E17AA4E6F45041CDCCCC6CACB8544185EB51E8E7F450410AD7A320ADB85441CDCCCC2CE9F45041CDCCCC7CABB854410AD7A3D0EAF450410AD7A380AAB8544185EB5148EBF45041CDCCCC6CA9B8544148E17A54EEF450410AD7A3D0A5B8544148E17A14EFF45041CDCCCC2CA4B8544185EB5178EEF4504148E17AA4A1B8544185EB5168EFF45041CDCCCC6CA0B8544185EB5138EFF45041CDCCCC9C9DB8544148E17AA4EFF4504148E17A049CB85441CDCCCCFCEEF45041CDCCCCAC9CB8544148E17A64EDF4504148E17AC49CB85441CDCCCC4CEDF45041CDCCCC2C9BB8544148E17A94EDF4504148E17AF499B8544185EB51D8EEF4504185EB51C898B85441CDCCCCFCEEF4504185EB51D897B8544185EB51C8EFF450410AD7A3D096B854410AD7A300F1F45041CDCCCC7C93B85441CDCCCCACF3F450410AD7A34090B854410AD7A330F4F450410AD7A3208FB85441CDCCCCACF3F45041CDCCCCDC8DB8544185EB5148F4F4504148E17AE48BB8544148E17A44F5F4504185EB51F88CB85441CDCCCC1CF6F4504185EB51488BB85441CDCCCC4CF6F4504148E17AD489B8544148E17A04F6F4504148E17A0487B8544148E17A54F7F4504185EB51C883B85441CDCCCC8CF8F4504148E17AC481B8544185EB5108F8F4504185EB513880B854410AD7A350F8F450410AD7A3007FB8544148E17AE4F7F45041CDCCCC7C7EB8544148E17A44F6F4504185EB51D87FB8544185EB5188F0F4504185EB51D888B854410AD7A390F1F45041CDCCCCEC89B8544148E17A54F1F4504148E17A848BB8544185EB5128F0F4504185EB51D88BB8544148E17AE4EEF4504185EB51988CB85441CDCCCCECECF4504185EB513892B85441CDCCCCFCEBF45041CDCCCC5C98B8544148E17A54EBF4504185EB51189AB854410AD7A360EBF4504185EB51289CB85441CDCCCCBCE9F4504148E17A649FB854410AD7A350E9F4504148E17A04A2B8544148E17A24E8F450410AD7A3F0A3B854410AD7A320E6F4504148E17AE4A9B8544185EB51A8E5F450410AD7A390ACB8544101030000000100000010000000CDCCCCFCDFF4504148E17A44BCB8544185EB5168E0F45041CDCCCC5CBCB85441CDCCCCBCE0F450410AD7A390BBB8544148E17A74E3F4504185EB5158B7B854410AD7A3E0E3F4504148E17A74B6B854410AD7A3E0E3F45041CDCCCC3CB5B85441CDCCCCDCE4F4504148E17A04B4B8544148E17A14E6F4504148E17A64B1B85441CDCCCC6CE5F450410AD7A310B1B8544185EB5178E5F4504185EB5198ADB8544185EB5158E4F450410AD7A360AFB854410AD7A3E0E3F450410AD7A370B1B854410AD7A3C0E2F45041CDCCCCFCB2B8544148E17A54E2F450410AD7A330B5B8544148E17A34E1F4504185EB5158B7B85441CDCCCCFCDFF4504148E17A44BCB854410103000000010000003D000000E17A141E55F650415C8FC2053AB9544114AE47B156F65041D7A370BD37B95441D7A3708D5AF650415C8FC2C538B954419A9999E95BF650415C8FC2C538B95441F6285CAF5EF65041AE47E1CA37B954418FC2F58860F65041D7A370BD37B9544185EB517863F65041AE47E18A36B954410AD7A3C065F65041713D0AA736B95441C3F528CC68F650417B14AE7737B95441295C8F626CF6504148E17A6438B95441AE47E1DA72F650410000004037B95441C3F5283C73F650410AD7A39035B954411F85EB7174F6504114AE478134B9544152B81E355FF650418FC2F51831B954410AD7A3804BF650410AD7A3002EB95441C3F5280C39F65041E17A143E29B954410000005035F650410AD7A37029B95441F6285C8F31F65041E17A14AE28B954418FC2F57830F650418FC2F5F827B954418FC2F5782BF65041B81E853B26B95441D7A370AD29F650413D0AD70326B95441A4703DAA27F6504148E17A9425B954410000003029F650418FC2F5F827B95441E17A143E29F65041E17A14AE28B95441713D0A172BF65041295C8F6229B954410AD7A3B02BF65041E17A14EE29B95441B81E853B2CF65041CDCCCC3C30B9544185EB51E82BF65041EC51B86E31B954413D0AD7032CF650417B14AE4733B95441EC51B8FE2CF650411F85EBB134B95441D7A3706D2DF650417B14AE7737B954419A9999492CF65041B81E854B3AB9544148E17A142EF65041AE47E1FA3BB954419A9999892DF650415C8FC2853CB9544152B81E652CF65041AE47E13A3DB95441713D0AD729F65041C3F5285C3CB95441EC51B8CE28F650418FC2F5C83FB9544148E17A2426F650415C8FC2753FB954415C8FC20524F65041F6285C9F3FB954411F85EBE122F65041AE47E17A3EB954417B14AE7721F6504114AE47513EB95441295C8F421EF65041EC51B8CE3EB95441C3F5282C1DF650418FC2F5C83FB95441A4703D3A1DF6504185EB517841B95441D7A3708D1DF65041713D0A9743B95441000000101EF65041AE47E1AA44B9544185EB511821F6504148E17A1444B954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB95441AE47E10A44F650419A9999E93CB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B954418FC2F5784CF65041D7A370BD37B954413D0AD7B34EF650413333334339B954417B14AE1751F65041F6285C2F3AB95441C3F5283C52F6504148E17AA439B954410AD7A36053F65041F6285C2F3AB95441E17A141E55F650415C8FC2053AB9544101030000000100000061000000C3F5280CB1F5504148E17A1419B954410AD7A3B0B2F5504185EB51781BB95441C3F528DCB3F5504185EB51981CB9544185EB5108B5F55041CDCCCC1C1DB9544148E17AA4B5F55041CDCCCC8C1FB9544185EB5158B9F55041CDCCCC5C1FB9544148E17AE4BAF5504185EB515820B9544148E17AA4BBF5504148E17A2421B9544148E17AF4BCF550410AD7A32022B95441C3F528CCBDF5504185EB51E823B9544185EB51A8BDF55041CDCCCC9C24B954410AD7A350BEF55041CDCCCC8C25B95441C3F5284CBFF55041CDCCCC7C26B95441C3F528ACC2F5504185EB51D827B9544148E17AE4C3F55041CDCCCCBC28B954410AD7A350C4F55041CDCCCC7C29B9544148E17A54C9F5504148E17AF42CB954410AD7A370CBF55041CDCCCCFC2DB9544148E17A84CCF55041CDCCCC2C2EB95441C3F5285CCDF5504148E17A642FB9544148E17AA4CDF550410AD7A3F030B9544148E17AC4CEF5504185EB51A833B9544185EB51A8CFF5504148E17AA434B95441C3F528ECD0F55041CDCCCC1C35B954410AD7A300D2F550410AD7A3C036B95441C3F5283CD2F55041CDCCCC4C38B954410AD7A320D3F5504185EB51D839B954410AD7A3B0D3F550410AD7A3D03BB9544185EB51A8D5F5504185EB51283EB9544148E17A44D9F55041CDCCCCEC40B9544148E17A94DAF5504148E17AC441B954410AD7A360DBF5504185EB51D842B95441C3F5282CDCF5504185EB51C843B9544148E17A84DEF55041CDCCCC0C45B9544185EB51D8E1F5504185EB51A845B9544148E17A34E3F550410AD7A36045B954410AD7A3E0E5F55041CDCCCCFC45B9544185EB5138E8F5504185EB51E844B95441C3F528CCEAF550410AD7A30045B9544185EB5158ECF5504148E17AB445B9544148E17A84EDF5504185EB51F846B954410AD7A3B0EEF55041CDCCCCAC47B954410AD7A300F0F5504185EB51A848B954410AD7A380F1F550410AD7A3F04BB95441C3F5282CF1F55041CDCCCCEC4CB9544148E17A44F1F550410AD7A3A04DB95441C3F528ECF1F550410AD7A3904EB95441C3F5286CF3F550410AD7A3804FB954410AD7A3B0F4F5504185EB51984FB9544148E17AF4F5F55041CDCCCC1C50B95441C3F5283CF6F55041CDCCCCAC50B9544148E17A74F7F55041CDCCCC3C51B9544148E17AF4F8F550410AD7A36051B9544185EB5188FBF5504148E17AA452B954410AD7A340FEF550410AD7A30054B9544148E17A64FEF550410AD7A3B055B9544185EB5198FDF5504185EB51B856B95441C3F528ACFBF550410AD7A36057B9544185EB5188FEF550410AD7A3F057B95441C3F528ACFEF5504185EB517857B9544185EB517802F6504185EB51D854B954410AD7A33005F6504148E17AF453B9544185EB512807F6504148E17A9453B954410AD7A36008F6504185EB51E853B9544148E17A040AF6504148E17A9453B95441C3F5288C0CF650410AD7A3F051B9544148E17AF410F650410AD7A37050B9544185EB51C812F6504185EB51F84FB95441C3F5288C15F65041CDCCCC9C4EB95441C3F528AC16F65041CDCCCC5C4CB954410AD7A36017F6504148E17A544BB954410AD7A3B018F650410AD7A3D04AB9544148E17A141BF650410AD7A3004BB954410AD7A3101CF6504185EB51E847B954410AD7A35015F65041CDCCCC9C45B9544148E17A840BF6504148E17A3447B954410AD7A31001F65041CDCCCC7C47B95441C3F5280CF9F550410AD7A38046B9544148E17AA4EEF5504185EB512844B95441C3F5280CE7F5504185EB515841B9544185EB5198DFF5504148E17AA43DB954410AD7A370D7F5504185EB510837B9544148E17AF4CEF5504148E17A842DB95441C3F5281CC8F5504185EB51E826B9544185EB5168C1F5504185EB519822B9544148E17A94BCF55041CDCCCC6C1EB9544185EB5158B9F550410AD7A3A01AB95441C3F528DCB6F550410AD7A34017B95441666666F6B3F55041295C8F7212B95441F6285C7FB1F55041AE47E14A0DB9544148E17AF4B0F550410AD7A3D00BB9544148E17AD4AFF55041CDCCCC1C0EB954410AD7A350AFF55041CDCCCC7C11B954410AD7A3E0AFF55041CDCCCC5C13B954410AD7A3B0AFF5504185EB518814B9544148E17AF4B0F5504185EB51E817B95441C3F5280CB1F5504148E17A1419B9544101030000000100000009000000EC51B8CE86F650418FC2F5D837B954410AD7A33087F65041C3F5289C38B95441F6285C3F90F65041666666E638B954417B14AE9795F650416666660639B9544185EB514895F65041295C8F5236B95441A4703D0A95F650410AD7A33033B954417B14AE4785F65041D7A370FD33B954410AD7A33087F650410AD7A3D036B95441EC51B8CE86F650418FC2F5D837B9544101030000000100000021000000EC51B83E99F45041295C8FD202B95441E17A147E9AF45041CDCCCCDC03B954413D0AD7739AF450411F85EB3105B95441E17A143E9BF45041CDCCCC7C05B9544185EB5188A1F45041D7A370BD02B9544114AE47F1A8F45041E17A14BEFEB8544114AE4751AAF450418FC2F508FDB85441B81E859BADF450418FC2F5E8FBB85441AE47E13AB2F45041EC51B83EF9B854415C8FC2C5B2F45041EC51B8BEF8B8544152B81EC5B5F45041A4703DEAF3B8544152B81EA5B5F45041A4703D8AF2B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB854413D0AD763BCF45041000000A0EFB854418FC2F5B8BDF45041000000A0EFB854413D0AD783BEF4504100000000EFB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB85441EC51B88EB0F450413D0AD753EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B85441713D0A47A7F45041F6285CFFF2B85441713D0A87A7F4504148E17A14F4B85441CDCCCCDCA6F450419A999989F5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854417B14AE07A3F45041F6285C5FF5B85441E17A14FE9CF45041EC51B8BEF9B854419A9999E997F450418FC2F5E8FCB85441EC51B8BE98F4504185EB512800B95441EC51B83E99F4504185EB512801B95441EC51B83E99F45041295C8FD202B954410103000000010000003100000014AE4741E6F45041E17A144ED0B85441EC51B83EE5F45041E17A14EECFB8544152B81E45E6F4504185EB5148C9B8544185EB51D8E5F4504148E17A24C7B8544148E17AC4E4F4504185EB5188C6B8544185EB51C8E3F4504185EB5108C5B8544148E17A04E4F45041CDCCCC7CC3B8544185EB51C8E3F4504185EB51A8C1B85441CDCCCC6CE2F450410AD7A310C0B8544148E17A94E1F4504148E17A44BFB8544185EB51F8E0F450410AD7A390BEB8544185EB5198E0F450410AD7A310BDB85441CDCCCC2CE0F4504148E17A04BDB8544148E17AF4DEF45041CDCCCC2CBFB854410AD7A3E0DDF4504185EB5188C6B85441CDCCCC6CDCF45041CDCCCC2CC8B854410AD7A3D0DBF450410AD7A330CAB8544148E17A44DAF4504185EB51C8CBB8544185EB51A8D9F45041CDCCCC9CCDB8544185EB5188D5F450410AD7A320D1B8544185EB51B8D2F450410AD7A300D3B8544185EB5198CEF4504148E17A34D5B854410AD7A3F0C7F45041CDCCCC5CDAB8544185EB51C8BFF450410AD7A390DFB8544185EB5158BDF45041CDCCCC9CE2B854410AD7A300BEF450410AD7A360E2B8544148E17A74BFF450410AD7A340E1B8544185EB51C8C2F450410AD7A3C0DFB8544185EB51F8C5F4504185EB51B8DEB854410AD7A3D0C9F4504148E17A74DDB85441CDCCCC0CCDF450410AD7A330DCB85441CDCCCC0CD0F4504148E17A34E1B8544148E17A24D0F4504185EB5118E2B854410AD7A3D0D2F450410AD7A370E4B8544185EB5178D3F450410AD7A380E3B8544148E17A64D5F4504185EB5108E3B8544185EB5158D8F45041CDCCCC7CE1B8544148E17A84D9F4504185EB51E8E1B8544148E17AC4D8F45041CDCCCC8CE0B8544185EB5118D9F4504148E17AC4DEB854410AD7A380DAF4504148E17A44DDB854410AD7A3A0DBF450410AD7A3F0DCB8544185EB5158DEF45041CDCCCCECDAB8544148E17AA4DDF450410AD7A360D9B8544185EB5198DDF4504148E17AA4D7B854410AD7A3D0E1F450410AD7A340D5B854410AD7A320E3F450410AD7A370D5B85441D7A370DDE3F450411F85EB91D4B8544114AE4741E6F45041E17A144ED0B854410103000000010000002F0000000AD7A3109EF550410AD7A350FEB85441C3F528BC9DF5504185EB51E8FCB854410AD7A3409EF55041CDCCCCBCFBB8544185EB51189FF55041CDCCCCCCFAB854410AD7A350A0F5504148E17AB4FAB8544148E17AA4A0F5504185EB5178FAB8544185EB5158A1F55041CDCCCC6CFAB8544185EB5198A3F5504148E17A34FCB8544185EB51E8A4F550410AD7A3A0FCB85441C3F5282CA6F5504185EB5148FDB85441C3F5286CA8F55041CDCCCCFCFDB85441C3F528ECA9F5504148E17A14FEB8544185EB5178ABF55041CDCCCC1CFFB85441C3F528FCABF5504185EB517800B95441C3F528ACADF550410AD7A39003B9544148E17AE4AEF55041CDCCCC4C05B9544185EB5148ACF55041713D0AA7F6B85441C3F528DCAAF5504133333303F0B8544152B81EA5AAF5504133333303EFB85441F6285CCFA8F5504152B81EA5E1B854417B14AEE7A8F55041CDCCCCBCDAB8544185EB5118A8F5504185EB51E8DBB854410AD7A3A0A7F55041CDCCCCBCDDB854410AD7A3A0A7F5504185EB5148DFB854410AD7A390A8F5504148E17AC4E4B85441C3F5280CA8F5504148E17A44E6B8544185EB5118A8F5504185EB5168E9B8544148E17AE4A8F55041CDCCCCDCEAB854410AD7A3C0A8F5504185EB5198ECB854410AD7A350A9F5504148E17AF4EDB854410AD7A350A9F550410AD7A3E0EFB85441C3F5287CA7F55041CDCCCC9CF7B85441C3F528FCA5F5504148E17AA4F8B8544185EB51E8A1F5504185EB5128F9B85441C3F528DC9EF5504185EB51A8F7B8544185EB51F89DF55041CDCCCCCCF7B8544148E17AD49AF5504148E17A24F7B85441C3F528FC96F5504148E17A54F7B8544185EB51B895F5504148E17A24F7B854413D0AD76394F55041295C8F62F7B85441EC51B83E9BF5504114AE471105B95441C3F5283C9CF5504148E17AD404B9544185EB51C89DF55041CDCCCC0C06B9544148E17A949EF5504185EB512805B954410AD7A3109EF5504185EB51E802B9544148E17AD49DF5504185EB5158FFB854410AD7A3109EF550410AD7A350FEB85441
+</a>
+
+<b>
+0106000000010000000103000000010000005002000099539FF808F55041608C0681E2B8544111BDFA4A09F550414509C678E2B85441D36F5AA90AF550410B480DDDE1B85441840D2EDB0AF55041971A3EA6E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544166156EF60AF550415BAAE066DFB85441F53C6CFF0AF5504162FABB59DFB8544137C0ED850BF55041547B4B81DFB85441C9E322700BF55041CB4D73F5DEB85441F53C6CFF0AF55041550CFEADDCB854418B815ECD0BF55041129FDC09DBB854417EB9E4BC0BF550417E3E2744DAB8544168334AD90BF55041325A802FDAB85441C3F528DC0BF55041CDCCCCCCD9B85441C9BB25900BF55041547C17AFD9B854416061778B0BF550411136DFAFD9B85441488F7CD708F550413BD105A0D8B8544197BA96E807F550411FD81425D7B85441D636CE4B08F5504106C99B4CD6B85441C3F528DC08F550418FC2F5C8D4B8544127EE6D4F09F55041E1D3C29FD4B85441C17B017409F550411FB2D089D4B854411EF455E709F550419978118BD2B85441FC47F2030AF55041DB67CD76D2B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441B626D5930AF55041150AE210D2B85441B2540BAD0AF550412D5406FFD1B85441A42D15E60BF5504139384307D2B854418EFBDF070CF55041F90FAA1CD2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854417057B9B50CF550412ACAC48AD2B8544161E637DD0CF55041B224C8A3D2B8544161A489970DF550416EA117D3D3B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441E375BDAF0DF55041250B50A3D6B85441847B3EE60CF55041CB5CB9DAD6B8544185EB51380DF55041CDCCCC2CD7B85441FC867B300DF55041DE95793CD7B85441A5B2D5370DF5504139680846D7B85441E0D09F860CF55041AE4182B0D8B854418877978E0CF55041AE68A718D9B85441F87649BA0CF5504140643776DAB854415A06E2450DF550416B8136DDDAB85441030F67B30DF550412C4B9322DBB85441B3E34CA20EF550410394A93ADCB854419710A0C20FF55041DBC0FC5ADDB85441AF8D20FA0FF550411F51B171DDB8544192292FB910F5504119A48EADDDB85441A5E29A7612F5504147E507E7DDB854412B97992313F550412B71D7BDDDB85441F6FB723314F55041CE7D439CDEB8544156337BC214F55041CBD76200DFB854411E91A87915F550410AB24D4ADFB854418AFDAB4216F550418B366693DFB854415403099C18F55041624FB76CDBB854418469099718F5504192B5B767DBB85441F5002F3318F55041145CB714DBB85441A26F438917F550412862C697DAB854411489112817F5504164706374DAB854418EEC972816F55041392C6017DAB8544133C6F61F16F55041306FB814DAB85441FB7590A015F55041DB5E0842DAB85441DB126C6F15F5504190D68253DAB8544162207EBF14F55041C0268896DAB85441CEA3050214F550418B8B61A6DBB85441F874DF4F13F5504168BA8758DCB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB85441C66DA52911F55041561782B5DBB8544147E585B110F550415428C1A5DCB85441A5D92EAE10F550416D05BC9BDCB8544148E17AA410F5504148E17AB4DCB8544194367C5210F55041391CA488DBB85441E988F43510F5504139130D33DBB85441867A313A10F550418569CF2FDBB8544185EB513810F550418FC2F528DBB85441CEEC0B6010F550412112DD12DBB85441220213A610F55041F01F50DDDAB854410B4C50BF10F55041F25121E8D9B8544153C9C2B910F55041DC15F86DD9B8544198799D1C11F55041DC747424D8B85441E90DB58711F5504139680846D7B85441D6240BAD11F55041162B78E2D6B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B85441EB88F96013F55041B14152F8D5B8544105A8294C14F55041B32E4947D5B8544152CAEB8514F550413F4A2CEED4B854410AD7A36015F5504148E17A84D3B85441C1C8F88F15F55041731BB378D3B8544147154BF015F550412CF58948D3B8544198A9625B16F550413BA14061D3B854414383E4DA16F5504106D27729D3B8544185EB51A818F550410AD7A350D1B85441CF8854CF18F55041FBC09E40D1B85441DECBEF7319F55041731F51EED0B85441F656096719F55041A2946C96CFB85441DC9B445119F550419605938DCEB8544109E64FBA19F5504196B6855ACDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB85441B5283E9219F550413B9ECB95CBB8544111BC2B9319F55041472F748FCBB854418E13E5E11AF55041EBE389D9CAB8544148E17A441CF55041CDCCCCACC9B854417EB4C88C1CF55041AB619EC9C9B85441C0D218151DF5504110A68FF3C9B854417713F0511DF55041C8E66630CAB8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF5504199B4F142CAB85441039FB66F1DF5504154722D4ECAB8544148E17A641DF5504143A9F4E3CAB8544148E17A641DF550413C868803CCB85441F7BA79671DF55041B3537F1BCCB85441E3CFB22B1EF550412341ED65CCB85441CDC8EB981EF55041605FD17BCCB854418BBCB2761FF5504110CCD38ECCB85441B38F5F561EF550418A215685CEB85441ADEA04EC1DF550414B4B3772CFB854410AD7A3E01CF5504148E17A64D2B85441A62055151DF55041F3B5740ED3B85441C1B6551D1DF550411081591FD3B8544155C20FD021F55041472F748FCBB85441E9E98C7A26F550415442680FC5B85441A67C6BD624F550413853F837C6B85441F68BC2EF23F5504170B69838C5B854410A7BD3B124F55041F5305664C4B854410AD7A3F024F550418FC2F518C4B854415FF0912B25F550411CD87AB6C2B85441F710834125F550411234C321C2B854418C71380726F5504104E788BFC0B854411E0A74BC26F55041B164B3A8BDB854418A8DFBFE25F550414640A81CBDB854412F84AAD625F550419C82BC26BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441DB9C521825F55041007DEAA4BCB85441DB9C521825F55041E7E316A1BCB85441DBAE9FA026F5504198A01CE5BBB854413A60C37326F550412816FF88BBB85441615151C525F5504111FA7C3FBAB85441372DF3C825F550412FE1402ABAB8544185EB51C825F550418FC2F528BAB85441019AADCD25F55041938C9C0EBAB85441B2E5683026F55041384869CDB7B854414538404726F5504158D4C7B8B7B85441C3F5284C26F550410AD7A3A0B7B854412016D6B826F550412EF32F52B7B854417082C82F27F550418957C0E6B6B85441759BC43328F550419625C0F3B6B8544148E17AA428F55041CDCCCCECB6B85441595DCEF628F550419923DCE4B6B854416FA80CCB29F550416EC7CCC5B6B85441C220613E2AF5504161841307B8B854411F99B5B12AF5504155415A48B9B854417C110A252BF55041CDCE622EBBB85441E24BB45A2BF55041FCF70A61BCB85441CDCCCC5C2BF550418FC2F568BCB854416F8C925C2BF550418AD6B76BBCB85441A54DB45E2BF55041C16FE677BCB854418ABDC03D2BF550412D19B255BEB85441624CE7D52BF550411D8F7982BDB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B854415548F0162DF550415340F137B6B85441F5824F132DF5504103A3C139B6B8544163EA135E2CF55041A62A6DC6B5B85441850AC04A2CF55041D63B2422B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B854411FC3FE342CF550418E42B792B0B854416B9ED7F52BF55041E255B0E8AFB85441915537762BF5504124C2DCE1AEB8544198853A4E2BF550412C896299AEB85441C61989572BF5504178382874AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB8544153AF8A9E2EF5504152CC5AB6ADB854412DF070B72EF5504161248989ADB8544162CB48E82EF550418BE22D8DACB85441E532C2DD2EF55041B6C31C85ACB85441CEAFA2332EF55041619FC837ACB854417BCB61602DF55041D81D8543ACB854410AD7A3002DF5504148E17A54ACB8544116EAAC4A2CF550410458401AACB85441CDA521902BF550412A9BA4EDABB854417DF5462D2BF550412C7FE1F5ABB85441B8F292C32AF55041447F15F9ABB8544148E17A542AF550410AD7A300ACB85441F6F39F502AF550416B3991FCABB85441B2906D1D2AF5504138631EFEABB85441FA0F9F7929F55041A7163126ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB8544143FAA59728F550413580CF0CAAB854418B977CA228F55041A54522F7A9B85441E80FD11529F5504189D1F1CDA9B85441CE049E462AF5504111BF2896A6B85441DCD698FA2CF55041968FEA3AA7B8544189E5384F2DF55041FEE3765BA7B8544148E17A542DF55041CDCCCC5CA7B854412D6BB0652DF55041A3996AA4A6B854412D6BB0652DF5504197EE66F1A5B8544143DADA762DF5504123617FECA5B8544185EB51782DF55041CDCCCCDCA5B85441DECB00BC2DF550418637E7DFA5B85441109803862EF550418842B0D8A5B85441CD50267D2FF5504197EE66F1A5B85441101DC4D72FF550412C29D81BA4B8544168A34C8230F550411CAF6366A2B854410AD7A39030F5504148E17A34A2B8544199702EED30F55041310BB0F4A1B854417EDC61EB31F55041AB807338A1B85441ECE9572434F55041B021D3A4A1B8544110B8430E37F55041B2CE8533A2B854418A88B56937F550414F9A822EA2B8544165DD59D637F5504131138E28A2B854411BE721B838F55041C0C23211A2B85441A41E74BB38F55041F67A250EA2B85441CDCCCC6C39F55041CDCCCC5CA1B854410AF1258B39F55041A2B94A4FA1B85441840BBFB239F550418C8CE72AA1B854411B77145C3AF5504104BCB7F4A0B854412223F6623BF550414A3BA025A1B85441E3A752443BF55041D8E7879F9FB854413AB3993B3BF55041381A17659FB85441355A33A13BF55041A64F21289FB8544145FB920D3CF55041536D43069FB854414AE4EB4B3DF55041CB541AFE9DB85441A0CC65F23DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB85441859C5F623EF55041FD4443109EB8544145D37E833EF55041FF426C129EB85441830390703FF55041ABA887C29EB85441F53902AC3FF55041C80EAEDA9EB85441CDCCCC2C40F550418FC2F5F89EB854415F70FD4140F55041DD1C9C179FB8544198454F4940F550417C5B951A9FB85441D3EFD75E40F55041812758419FB8544185EB519840F5504148E17A949FB854410ADF11A340F55041DEA5029A9FB85441BDDA3AC340F55041CBE40CA29FB8544147EB403D42F550416EBAA96BA0B854419836955F42F5504174679C15A0B85441B270676042F55041C58BA607A0B854412A583E5841F55041910D624F9EB854413BBA675B41F5504144F44C499EB8544185EB515841F5504148E17A449EB854416AFEF06341F5504102EBE0389EB85441FFC4506A41F5504141B19D2C9EB854410BACAB1C42F550415DD716699DB85441557DF0CC42F550415FD3B4CB9CB854416DD4DCD042F550417257DE409CB854412ABFEAD442F55041219D63B19BB85441CC0B8DD342F550418294166D9BB85441BCD74BAB42F5504176BE98C79AB854410AD7A39042F5504148E17A849AB854416C78F89A42F5504148E17A849AB854413A41979642F55041247079729AB854413FE2F60243F550410F76B36B9AB854413A89906843F55041B63A6FAF9AB854417E5A01C244F55041141713D89AB854412567B6D745F550413E0B9FE59AB854410284225646F55041C79FE5AF9BB8544185EB519846F5504148E17A149BB85441BC881CCA46F55041BA1C81E89AB8544179918DCB46F550413E0B9FE59AB8544105B9E6DD46F55041C8AB06D79AB854410AD7A3D047F550410AD7A3009AB85441332209E647F55041794CEB049AB85441548C94F547F55041F5DA8DF899B8544100F2AFA548F5504167B1F7279AB85441A25D054F49F55041B1990F439AB85441E6F13D7749F550419C0F29559AB854410AD7A3B049F550410AD7A3609AB85441E91BA2044AF55041452098A09AB8544163D937B34AF5504104A6D41B9BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441FC402E704EF55041CDCCCCFC97B8544106911AC94EF550410F9EC7F597B854418DFF0C6F4FF55041AC68BD3298B854412FC765AF4FF55041C05C494098B854413F68C51B50F550410A45615B98B8544178F7769C50F550413333B36F98B854413A57585351F550419C0F579898B8544105B1FF1052F550414DCED8E298B854410B525F7D52F55041A1B0B60499B85441D10AA7CE52F55041337BAC4199B854416CE34C1A54F5504108E3D82D9AB8544148E17A8454F550418FC2F5789AB85441CCDDBDC554F55041FBA203F799B85441AD4DA7CA54F55041D5E601EB99B85441DDA89BCB54F55041245755EB99B85441CDCCCCCC54F550418FC2F5E899B85441BC9AEF1155F55041630759039AB85441AC1C4FCB55F550413759A5429AB85441EBEFF10256F550410B6F1ECD99B85441AD94102456F55041CA5FAF5599B85441A2E3D36756F550415D6F384F99B85441F1A7080957F55041E963971F99B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A88D31215BF5504181FE292499B85441C18737615BF55041CBEC3BE499B85441495867975BF55041EA28C1C39AB85441AECA70C15CF55041C98B6FBD9AB854419E7A0BEC5CF550410E1DAEA39AB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB854414BBEFA795EF55041B5BB76469AB8544182BF048E5EF55041B1990F439AB854413D8BD4075FF550411B9716B19AB8544192C8421463F55041824C1D9B9AB854412800B71264F5504101C27E0E9AB8544148E17A1464F55041CDCCCC0C9AB854412A11F11464F550419BB8430D9AB8544105E7A51564F5504129C9DF0C9AB85441DB404DD364F55041247079729AB85441B194BA9765F550416258918D9AB85441EB41DF8068F5504186E530739AB854415B5C355F68F550413BB22D4899B85441FBDA3F4E68F55041C5E98AB198B854411A494A3668F550416821058498B85441BFE9861868F55041980D99F897B85441688AC8EB67F550416D32724C97B8544122C2DA6767F5504174640CD696B85441CDCCCCFC66F550418FC2F58896B854419D56B0F966F5504140872E7396B85441E0719FE366F550412E02615F96B85441FFEF31D566F55041EEB8B97395B85441CDCCCCCC66F550418FC2F53895B8544155F172D166F5504112248A3695B85441AC834DCF66F55041FF247C1395B85441688AC8EB67F55041E58956A094B85441F58B4A326AF55041F59AC36893B85441AF973B9F69F55041653356C892B854414ABBE98568F550411E9B0AB592B854412BAA9E0A62F55041A9F61A4F92B85441CDCCCCFC60F55041CDCCCCEC92B85441CBB6C3F660F55041A9999CEE92B85441E6D234C060F5504119E8B51093B85441F5DD678F5FF55041E0A0FD6193B85441520AC3565FF55041A9E6C67E93B854410AD7A3205EF55041CDCCCC3C94B85441445DA4F45DF55041654FBD3294B854410A483BF25DF55041E0E8F63394B85441E535CB535CF55041DA99A3DE93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B85441740BCEA158F550412521733791B8544101DC494758F55041D996E0C990B854410AD9836F56F55041A6E7F61691B854410519DE2A56F550417293072991B85441D3E1D22456F55041E43E2B2391B85441CDCCCC1C56F5504148E17A2491B85441A5939FE155F55041A74001E290B85441E6DC584B55F550415D51485090B8544134D6DD2E54F55041FA1B3E8D90B8544178175CE453F55041A6C9520F92B854410B9A584F53F550418C76266E92B85441246B413C53F550419F068A5392B8544185EB512853F55041CDCCCC5C92B854410F99039A52F55041A565627191B85441EB5DD36F52F550419287933691B85441079AC1E851F55041079AC16890B854418648B9FD50F550418648B97D8FB85441D1EAC1864FF55041341BFD698FB85441A255D60C4FF55041923F9A6490B85441CDCCCCFC4EF5504141E5071D91B85441CDCCCCFC4EF550410AD7A39091B85441F8D4E4F24EF550416287F38E91B85441646DBEF14EF550418C2E2D9C91B854415FBF0E264EF55041E14F086C91B8544185EB51584DF550418FC2F54891B85441DB6533294DF550414F51E44091B854417EE8FE1C4CF550419287933691B854416E479FB04BF550415D99412291B85441C3A967144AF55041B6EFD3B990B8544185EB51C849F55041CDCCCCAC90B85441CFEBF00D49F55041895D7D9490B854414F332E5B48F55041E521788690B8544140EA1C5F45F55041275C0B2190B85441DA3534A041F55041BE8381C290B854415FB69DC83FF55041045EFD6591B85441F64907FC3DF55041CB1645B791B854413AFB920D3CF55041144756A492B85441E7D0BB193BF550415377679193B854418E95775D3BF55041AB429EF194B8544189AC1E1F3AF5504119C0A18695B85441CAAA11DE38F5504181E13FB095B85441CDCCCCDC38F550410AD7A3B095B85441BD2734DC38F55041D3C77DB095B8544106ED5BB138F550418C960BB695B85441B365602C38F5504152D9A68495B85441CDCCCCFC36F550418FC2F53895B854417F8C477436F550411983259595B8544179A3E09835F550410F0ED55196B854416FABBD7F35F5504169FAD58F96B854410AD7A37035F550410AD7A33097B8544166FA683C35F550418826EB3597B854417EFC463335F550416D32724C97B854410901A4F434F5504130B3014297B85441FB7E678434F55041D0E8D4E097B8544103C1714834F55041173EAE3598B85441ECE9572434F550413333B36F98B85441439C963E33F5504156FD024B99B854410AD7A33033F550418FC2F55899B85441A75C5C2F33F55041820B8C5999B8544111EF50FA32F55041EF392E8C99B854412BFA83C931F5504148BD6B1A9AB8544193372C4630F5504182839BB69AB85441CDCCCC4C2FF5504148E17AA49BB85441F5EFA1342FF55041890F549B9BB85441B84B2E242FF550411E5F0CAA9BB854412BDA80772EF5504158A6B5539BB85441C65723402DF55041BB88CDDD9AB854415A91648C2CF550419746E3A19AB8544189E3635B2CF5504183F1D6A59AB85441849451952BF55041D1CC33C59AB8544115B18CFB29F55041FCD815069BB85441212AC79529F55041D0D594229BB85441FC4CE24928F5504143F4F7239CB854419EDA118426F55041EA00AD399DB85441C25325C424F550415F1732219EB854410CA83D2D22F5504114CD24BD9FB85441F2C41EE820F55041E5C72BE7A0B85441E3F331CE1FF55041717A91B9A1B85441A463BBEA1DF5504148DB5B19A3B85441A3EF68191DF550414190CDFDA3B854417486D69E1CF550418CACCC72A4B85441D2B9CB861BF550416D0E024FA5B85441AEF5A2D719F55041629666D4A6B8544126DD79CF18F55041B608379AA8B8544140E8AC9E17F550417C0978BDA9B8544194F29E4A15F550419B8DF66EABB854414B7A948B13F55041EAEE596CAEB854410AD7A38013F55041A5DD9F2DAFB854410AD7A38013F55041CDCCCCCCAFB8544153F08E4613F5504131040636B0B8544146EEC81A13F5504167EDB88EB0B85441D302CBEF12F5504148A92304B1B85441A46DDF7512F5504152EBE2DCB1B85441396354F011F55041CE8005A2B2B85441C3F5287C11F5504148E17A74B3B85441769E7E3511F550415E100F93B3B85441BEE81FA10FF550417CB75A60B4B85441C53E7BA60EF55041B4AFBCF6B5B854418A6ADBE80DF550410E5A3C13B7B85441BE096E770DF550412CB117E2B7B85441174C78E70CF5504142D880CBB8B85441C321A1F30BF5504128CD4DFCB9B85441992D15E60BF55041281547CEBAB854411C5DE5AF0BF55041762EB1F9BCB854410CBC85430BF55041E43BA732BFB854416D6ABEEA0AF550417A741D7EBFB8544132BCE3AD09F55041EF0412AAC0B854419A0D309E08F55041D4C06607C2B8544117BE7A8C05F5504108377C7DC9B85441460B6D3405F55041371461C9CAB85441FB302C9305F5504167E7242FCBB85441C3F528DC05F550418FC2F568CBB8544145EE33E305F55041F3401A85CBB85441FD6A4EEB05F550411868CE8DCBB854410D0CAE5706F550418B86318FCCB8544180E2178706F55041BA6316DBCDB854414653660606F550412D8279DCCEB85441A4E7105D05F550411818A679D0B85441B0E9632105F5504139B92290D1B854410AD7A31005F550418FC2F5F8D1B85441716C20A704F55041FE449D04D2B85441F839FCDA03F550412DA25E24D2B854412E15784B03F55041194CB214D4B85441C3F5283C03F550410AD7A350D4B854418894703A03F55041FFE8964FD4B854416BC86C3803F5504190B58E56D4B8544152522D4102F550413BD65EB7D3B854410AD7A35001F5504148E17A24D3B85441F598511200F550411D703B65D5B854413CCBA2A4FEF45041B46A5F18D8B854417DE43673FEF45041B15E5755D8B854417B14AE67FEF45041A4703D6AD8B8544143B07F0DF9F45041F79B595BDFB854414C6EF759F9F45041460B4C82E0B85441D9DF86FCF9F450413CA1781FE2B85441257384BCF9F45041F00D7B5FE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B854413929B907F7F4504185D53471E3B85441F312CE55F6F4504102EAB214E4B854419D0F3319F5F450415D444FA9E4B85441C3F528FCF4F450418FC2F5B8E4B854417EF81B25F4F450418FC2F5B8E4B854414C76269CF3F450419A5508BEE4B854418C593563F3F45041F1A066D0E4B85441E20EFA97EFF450414C27D460E8B8544108F99E2CEEF4504145582FB6E9B8544156781BE5EDF45041E335F196EAB8544108A7AA8BECF450412C660284EBB85441C74B5442EAF450410F18E250EEB85441A306262BEAF45041E8603573EEB85441D9AC9C1FEAF45041049C4A84EEB854416655C0D5E9F450414621DD04EFB85441981E157FE9F450410D8952FBEFB85441719A03D1E8F450417F5D51EAF1B85441F8E565D7E8F4504121CCEB54F5B854418BA6026DEBF45041055F2257F6B854416CB507B6EEF4504116621A4DF7B85441C3F528ECEFF4504148E17AC4F6B854412529F3DBF0F45041BC0156B7F6B854419759FEA3F1F4504121DCF0A5F6B85441CB95A8DDF1F4504156FCD7E7F6B854412FDF9406F2F450414ABC1EFEF7B8544187D5AD51F2F45041BBE5A107F8B8544138C4340DF5F45041985F78E8F5B854412D0E7128F6F4504194B4527AF5B8544148E17A34F6F4504148E17A74F5B8544111D5C435F6F450413BE72375F5B854417A611F7AF7F45041DAC79A08F7B854410AD7A3C0F7F4504148E17A64F6B85441A4BC68C1F7F450417BC05E64F6B85441477A6CC9F7F45041DD0F534BF6B854413A37B30AF9F45041C19B2222F6B854417C1F145DF9F45041CE591B8FF3B85441F7EFD501FAF4504162B04FB1F1B85441B3A8F8F8FAF45041C1E69C91EFB85441F690594BFBF450418AE27847EFB8544185EB5168FBF450416B2D880DEFB8544185EB5168FBF450411381AEEDEEB85441E04FEC5FFBF4504135DB4CBBEEB8544148E17AE4FAF45041CDCCCC6CEEB854419CB842EAF9F450411F391EF5EEB85441D99768D0F9F4504155C29105EFB854412B8BFCF1F8F4504197AAF257EFB85441ECD70DB7F8F45041AB72A817EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441A4F2C03CF8F450417D11A9F2EDB85441A4F2C03CF8F450417C953EE5EDB854416E2A68D8F9F45041041F212AEDB85441C3F5282CF8F4504148E17AD4ECB854418CB02C29F8F450412B9381B5ECB854418B460A24F8F450418CA071B4ECB854416FD2D9FAF7F450417E533752EBB85441F66A15B0F8F450411E8EA87CE9B85441C1707209FBF4504146E615AEE9B8544102C9E910FBF450417F2A85BCE9B8544148E17A14FBF45041CDCCCCBCE9B854419C111A25FBF45041522E8DE3E9B854411FCD0385FBF45041F7BAFB9CEAB85441AD70F576FBF4504122B763A2EAB854412F24FB7EFBF4504157A217B5EAB854418B76CF62FDF45041CE7E5163EAB85441464BB551FEF45041E80E4584EAB8544197DFCCBCFEF45041048375ADEAB854418DAA4D05FFF450416D5AF59EEAB854414E9E990EFFF4504107F86079E9B85441698FAAE3FEF45041644E1686E8B85441C3F528BCFEF450418FC2F5E8E7B85441A03A7FC6FEF450410B6ECBE0E7B8544198C309C5FEF45041DC2087D8E7B854410304D848FFF450418B8C6F6DE7B85441E9F8A47900F550417D3F350BE6B854417B16A18002F55041036F7366E5B854418E0E9B8502F55041E654ED65E5B8544148E17A9402F550410AD7A360E5B854417C3A8BA002F55041386B1763E5B85441E902261D03F55041F5A6F955E5B85441A16F178D03F5504152640CC6E4B85441C3F5283C03F5504148E17AD4E3B8544146BFCB5703F55041E0C1C4CEE3B854411D3FD05603F55041C1E58ECAE3B85441BF67FF2C04F5504198A9E490E3B85441A640096605F5504103492FCBE2B85441141C66B705F55041800E75DBE2B85441DD6615C405F55041AB577EDAE2B854412B11CB0A06F55041052D6CD3E2B85441D555FC5D06F550418CFECCCEE2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854419A64470008F550414E08B671E2B85441CCDA7D2A08F55041B4985468E2B8544110A71B8508F55041C07C9170E2B8544199539FF808F55041608C0681E2B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 354629
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB8544185EB5168FBF450410AD7A3C0EEB8544148E17AE4FAF45041CDCCCC6CEEB85441C3F528DCF9F45041CDCCCCFCEEB8544148E17A04F9F450410AD7A350EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441C3F5280CFAF4504148E17A34EDB85441C3F5282CF8F4504148E17AD4ECB8544185EB5108F8F450410AD7A360EBB854410AD7A3B0F8F45041CDCCCC8CE9B8544148E17A14FBF45041CDCCCCBCE9B854410AD7A380FBF450418FC2F5B8EAB854410AD7A330FDF450410AD7A370EAB8544148E17A04FFF450418FC2F5B8EAB854410AD7A310FFF450418FC2F538E9B85441C3F528BCFEF450418FC2F5E8E7B854410AD7A3A0FFF4504148E17A34E7B8544185EB517800F550410AD7A320E6B8544148E17A9402F550410AD7A360E5B85441C3F5280C03F550418FC2F578E5B854410AD7A39003F550410AD7A3D0E4B85441C3F5283C03F5504148E17AD4E3B85441C3F5285C04F550418FC2F598E3B854410AD7A34005F5504148E17AE4E2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854410AD7A33009F5504148E17A84E2B854410AD7A3E00AF5504148E17AC4E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544185EB51880BF550410AD7A390DFB854410AD7A3100BF550410AD7A390DCB854410AD7A3D00BF550418FC2F558DBB85441C3F528DC0BF55041CDCCCCCCD9B85441C3F528DC08F550410AD7A3A0D8B8544185EB51F807F55041CDCCCC2CD7B85441C3F528DC08F550418FC2F5C8D4B8544148E17A8409F55041CDCCCC8CD4B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441C3F528CC0CF550410AD7A3C0D6B8544185EB51380DF55041CDCCCC2CD7B8544148E17A840CF5504148E17A94D8B8544185EB51A80CF550418FC2F568DAB85441C3F528BC0DF5504148E17A34DBB854410AD7A3900FF550410AD7A350DDB854410AD7A31011F550418FC2F5C8DDB854410AD7A36012F55041CDCCCCECDDB8544185EB510813F550418FC2F5C8DDB85441C3F5284C14F550410AD7A3D0DEB85441C3F5286C16F55041C3F528ACDFB85441A4703DAA18F550417B14AE77DBB85441C3F528AC17F5504148E17AA4DAB854410AD7A32016F5504148E17A14DAB85441C3F528AC14F550418FC2F598DAB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB854410AD7A31011F550410AD7A3A0DBB8544148E17AA410F5504148E17AB4DCB8544185EB513810F550418FC2F528DBB8544148E17AA410F55041CDCCCCECDAB8544185EB51C810F550410AD7A390D9B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B8544185EB512814F550418FC2F588D5B854410AD7A36015F5504148E17A84D3B854410AD7A3F015F550410AD7A360D3B8544185EB513816F5504148E17A84D3B85441C3F528BC16F550418FC2F548D3B8544185EB51A818F550410AD7A350D1B8544148E17A7419F55041CDCCCCFCD0B85441C3F5285C19F5504148E17A74CEB8544185EB51C819F55041CDCCCC6CCDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB8544185EB51B81AF55041CDCCCCFCCAB8544148E17A441CF55041CDCCCCACC9B8544185EB51F81CF5504148E17AF4C9B8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF550418FC2F528CCB8544148E17A241EF5504148E17A64CCB854410AD7A3501FF550410AD7A3A0CCB854410AD7A3301EF550410AD7A3B0CEB854410AD7A3E01CF5504148E17A64D2B85441C3F5281C1DF5504148E17A24D3B85441AE47E1BA21F550415C8FC2C5CBB85441A4703D8A26F55041C3F528FCC4B8544185EB51D824F550418FC2F528C6B854410AD7A30024F550418FC2F538C5B854410AD7A3F024F550418FC2F518C4B8544148E17A4425F550410AD7A320C2B8544185EB51F825F55041CDCCCC0CC1B8544148E17AC426F550410AD7A3A0BDB85441C3F5281C26F550410AD7A310BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441C3F528AC26F55041CDCCCCFCBBB8544185EB51C825F550418FC2F528BAB85441C3F5284C26F550410AD7A3A0B7B8544148E17A2427F5504148E17A04B7B8544148E17AA428F55041CDCCCCECB6B854410AD7A3A029F5504148E17AD4B6B8544185EB51482AF5504148E17A54B8B85441CDCCCC5C2BF550418FC2F568BCB85441295C8F322BF550418FC2F568BEB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B8544148E17A642CF5504148E17AB4B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B8544185EB51282CF550410AD7A350B0B854410AD7A3502BF5504148E17A94AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB85441CDCCCCBC2EF55041CDCCCC8CADB85441CDCCCCEC2EF550410AD7A390ACB854410AD7A3502EF550418FC2F518ACB854410AD7A3002DF5504148E17A54ACB854410AD7A3B02BF550418FC2F5E8ABB8544148E17A542AF550410AD7A300ACB8544185EB518829F550418FC2F528ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB854410AD7A31029F5504148E17AE4A9B854410AD7A3602AF55041CDCCCC9CA6B8544148E17A542DF55041CDCCCC5CA7B8544185EB51782DF55041CDCCCCDCA5B85441CDCCCC7C2FF5504148E17AF4A5B854410AD7A39030F5504148E17A34A2B85441CDCCCCEC31F5504148E17A44A1B85441CDCCCCFC36F5504148E17A34A2B85441CDCCCCAC38F55041CDCCCC1CA2B85441CDCCCC6C39F55041CDCCCC5CA1B8544148E17A443AF55041CDCCCCFCA0B8544148E17A643BF550418FC2F538A1B854410AD7A3403BF550410AD7A3709FB85441CDCCCC3C3CF550410AD7A3109FB85441CDCCCC5C3DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB854410AD7A3603FF550418FC2F5C89EB85441CDCCCC2C40F550418FC2F5F89EB8544185EB519840F5504148E17A949FB85441CDCCCC3C42F55041CDCCCC6CA0B85441CDCCCC6C42F5504148E17AF49FB8544185EB515841F5504148E17A449EB85441CDCCCCCC42F550410AD7A3D09CB8544185EB51D842F550418FC2F5389BB854410AD7A39042F5504148E17A849AB854410AD7A3F042F5504148E17A849AB854410AD7A32043F5504148E17AB49AB854410AD7A3C045F550410AD7A3F09AB854410AD7A35046F55041CDCCCCBC9BB8544185EB519846F5504148E17A149BB854410AD7A3D047F550410AD7A3009AB854410AD7A3B049F550410AD7A3609AB85441CDCCCCAC4AF550410AD7A3209BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441CDCCCCCC4EF55041CDCCCCFC97B854410AD7A3504FF550418FC2F53898B8544185EB519852F55041CDCCCC1C99B8544148E17A8454F550418FC2F5789AB85441CDCCCCCC54F550418FC2F5E899B8544185EB51C855F550418FC2F5489AB8544148E17A3456F5504148E17A6499B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A4703D8A5BF55041C3F528FC9AB85441AE47E1AA5CF55041666666069BB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB85441333333E35EF55041F6285CFF9AB85441295C8F3263F550415C8FC2E59AB8544148E17A1464F55041CDCCCC0C9AB85441295C8FE264F55041C3F528DC9AB85441A4703D8A68F55041666666C69AB8544185EB512868F550410AD7A36097B85441CDCCCCFC66F550418FC2F58896B85441CDCCCCCC66F550418FC2F53895B854410AD7A3506AF5504148E17A6493B8544185EB51A869F550418FC2F5C892B85441CDCCCC1C62F5504148E17A4492B85441CDCCCCFC60F55041CDCCCCEC92B8544148E17A945FF550418FC2F55893B854410AD7A3205EF55041CDCCCC3C94B85441CDCCCC7C5CF55041CDCCCCDC93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B8544185EB516858F5504148E17AC490B85441CDCCCC1C56F5504148E17A2491B85441CDCCCC5C55F55041CDCCCC4C90B85441CDCCCC0C54F550418FC2F58890B85441CDCCCCDC53F550418FC2F50892B8544185EB512853F55041CDCCCC5C92B8544148E17A1452F5504148E17A9490B8544148E17AF450F5504148E17A748FB85441CDCCCC8C4FF550410AD7A3508FB85441CDCCCCFC4EF55041CDCCCC4C90B85441CDCCCCFC4EF550410AD7A39091B8544185EB51584DF550418FC2F54891B8544185EB51C849F55041CDCCCCAC90B8544185EB517845F55041CDCCCC1C90B8544148E17A9441F5504148E17AC490B854410AD7A3103EF550418FC2F5A891B8544185EB51183CF550418FC2F59892B8544148E17A043BF55041CDCCCC7C93B85441CDCCCC4C3BF550410AD7A3F094B85441CDCCCCDC38F550410AD7A3B095B85441CDCCCCFC36F550418FC2F53895B8544185EB518835F5504148E17A3496B854410AD7A37035F550410AD7A33097B8544185EB51F834F55041CDCCCC3C97B85441CDCCCC2C34F55041CDCCCC5C98B854410AD7A33033F550418FC2F55899B8544148E17A5430F550418FC2F5A89AB85441CDCCCC4C2FF5504148E17AA49BB8544148E17A942CF55041CDCCCC9C9AB854410AD7A3A029F5504148E17A149BB85441EC51B82E29F550413D0AD7139BB85441E17A14EE26F5504152B81E659CB854413333330321F550417B14AEE79FB854410000002018F5504152B81EF5A7B85441B81E85EB15F5504133333363AAB85441CDCCCCFC13F5504148E17A64ADB854410AD7A38013F550410AD7A340AEB854410AD7A38013F55041CDCCCCCCAFB85441C3F5287C11F5504148E17A74B3B85441C3F5286C0FF550418FC2F558B4B8544148E17AE40CF550418FC2F5A8B8B8544185EB51E80BF55041CDCCCCECB9B854410AD7A3400BF55041CDCCCC2CBFB854410AD7A3A008F550418FC2F5A8C1B8544185EB51F804F5504148E17AB4CAB85441C3F528DC05F550418FC2F568CBB8544185EB517806F550418FC2F5D8CDB85441C3F5284C05F5504148E17A84D0B854410AD7A31005F550418FC2F5F8D1B85441C3F528CC03F55041CDCCCC1CD2B85441C3F5283C03F550410AD7A350D4B854410AD7A35001F5504148E17A24D3B854417B14AE67FEF45041A4703D6AD8B85441CDCCCCECF8F450415C8FC285DFB8544185EB51E8F9F45041CDCCCC0CE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B8544148E17A34F6F450410AD7A310E4B85441C3F528FCF4F450418FC2F5B8E4B85441C3F5287CF3F450418FC2F5B8E4B8544185EB51F8EBF4504185EB51C8EBB854413D0AD7E3E9F45041CDCCCCDCEEB854418FC2F5B8E8F45041EC51B82EF2B854417B14AEA7E8F450417B14AE87F5B854410103000000010000001600000085EB51F891F5504148E17A74A7B85441CDCCCC0C93F550410AD7A300A9B8544185EB518895F550410AD7A330A9B8544148E17A1497F5504148E17AE4A9B8544185EB51A899F550410AD7A300ACB854410AD7A3E09AF5504148E17A24ACB8544185EB51E89BF550418FC2F5B8ABB85441EC51B83E9EF55041AE47E10AACB85441CDCCCC5C9DF5504148E17AD4AAB85441CDCCCCCC99F550418FC2F558A8B854410AD7A38097F550418FC2F568A4B85441A4703D0A96F55041F6285C4FA3B8544148E17A8493F550418FC2F518A3B85441CDCCCC8C8BF550418FC2F598A1B8544148E17AD48BF5504148E17A64A2B85441CDCCCC4C8CF550410AD7A330A3B8544185EB51588CF550410AD7A380A4B85441CDCCCCCC8DF550410AD7A3B0A7B85441CDCCCCEC8EF550410AD7A320A7B85441CDCCCCAC8FF5504148E17A44A7B85441CDCCCCFC90F550418FC2F5D8A6B8544185EB51F891F5504148E17A74A7B854410103000000010000001800000000000060FBF4504152B81E7564B854410AD7A370FFF450410AD7A3A063B8544148E17A64FFF45041CDCCCC2C62B854410AD7A3F0FDF4504148E17A1462B8544148E17A24FDF45041CDCCCC3C61B85441D7A370DDF9F450419A9999A962B8544185EB5188F6F4504148E17A6463B854410AD7A330F4F4504185EB51C862B854410AD7A3D0F0F45041CDCCCCEC62B8544148E17A44EFF450410AD7A30064B8544148E17AF4EDF45041CDCCCC0C64B854410AD7A310EDF4504185EB517864B85441CDCCCC1CEAF450410AD7A39064B8544185EB5198E9F4504148E17A5464B8544148E17A04E7F45041CDCCCCCC64B854410AD7A330E5F4504148E17A0466B8544148E17AA4E3F45041CDCCCC1C66B854410AD7A3C0E2F45041CDCCCCDC66B8544148E17AE4DFF450410AD7A33067B854418FC2F5E8DFF45041666666C667B85441B81E855BEAF4504185EB51B866B8544152B81E45F7F450419A99990967B85441A4703D4AF9F4504152B81E1567B8544100000060FBF4504152B81E7564B8544101030000000100000016000000CDCCCC5CA3F550410AD7A3F0BEB85441CDCCCCACA4F550418FC2F598BFB854410AD7A350A6F5504148E17A54C1B8544185EB5158A7F550410AD7A3C0C4B85441CDCCCC2CA6F55041CDCCCCCCBBB854410AD7A380A3F550410AD7A3E0B9B8544148E17A24A2F55041CDCCCCECB6B8544148E17AF4A1F5504148E17AB4B5B8544148E17A94A1F550418FC2F5C8B3B85441CDCCCC2CA0F5504148E17A24B2B85441CDCCCC9C9FF5504148E17A04B1B85441C3F5285C9FF550418FC2F578AFB85441CDCCCC3C9FF550410AD7A300AFB8544185EB51B89EF55041CDCCCC0CAFB8544148E17A549FF550410AD7A370B1B8544148E17A14A0F55041CDCCCC8CB6B85441CDCCCCCC9FF5504148E17A34BAB854410AD7A3C09FF5504148E17A94BDB8544148E17A14A0F5504148E17AB4BEB854410AD7A310A1F55041CDCCCCFCBEB854410AD7A390A2F550410AD7A3F0BEB85441CDCCCC5CA3F550410AD7A3F0BEB854410103000000010000002B0000000AD7A320EFF4504148E17AA47AB8544185EB5198EFF45041CDCCCCDC7BB85441CDCCCC5CEFF450410AD7A3C07CB85441CDCCCC5CEFF4504148E17AA47DB8544185EB51A8EEF45041CDCCCC1C81B8544148E17AE4EEF4504148E17A2482B8544148E17A34F0F450410AD7A36082B85441295C8F92F1F4504148E17AE484B854413D0AD703F4F45041CDCCCC6C81B854410AD7A3E0F4F45041AE47E10A7EB854413D0AD793F3F45041AE47E1AA77B85441713D0A17F0F450410000004070B85441C3F5284CEFF4504185EB51D86DB8544185EB51A8EEF45041CDCCCC4C6CB854410AD7A350ECF450410AD7A3606DB854410AD7A3E0E9F4504185EB51486DB8544185EB5128E4F4504148E17A746EB8544148E17AA4E3F450410AD7A3406FB8544185EB5178E2F450410AD7A33070B854410AD7A350DDF4504148E17A8470B8544148E17AB4DCF4504148E17AE470B8544185EB51E8DBF4504185EB515872B854410AD7A300DCF450410AD7A33073B85441CDCCCCECDDF4504148E17AF475B8544148E17A24DCF450410AD7A34078B85441CDCCCC2CDAF450410AD7A3C079B8544148E17A14DAF4504148E17AD47AB8544185EB51F8DAF4504148E17A547CB854410AD7A320E0F45041CDCCCC9C7CB8544148E17A24DFF4504148E17A747AB8544185EB5158E1F450410AD7A3D078B854410AD7A3C0E2F4504185EB514879B854410AD7A3E0E3F450410AD7A3807AB8544185EB51C8E3F45041CDCCCC7C7BB8544148E17A84E2F4504148E17AE47CB8544148E17A24E5F45041CDCCCCFC7CB85441CDCCCC1CE7F45041CDCCCC8C7DB8544148E17A24E8F45041CDCCCC2C7DB85441CDCCCCCCE8F450410AD7A3607CB8544185EB5198E9F4504185EB51487CB854410AD7A350ECF4504148E17A147AB8544148E17A64EDF450410AD7A3207AB854410AD7A320EFF4504148E17AA47AB854410103000000010000003000000085EB51A8E5F450410AD7A390ACB8544148E17AA4E6F45041CDCCCC6CACB8544185EB51E8E7F450410AD7A320ADB85441CDCCCC2CE9F45041CDCCCC7CABB854410AD7A3D0EAF450410AD7A380AAB8544185EB5148EBF45041CDCCCC6CA9B8544148E17A54EEF450410AD7A3D0A5B8544148E17A14EFF45041CDCCCC2CA4B8544185EB5178EEF4504148E17AA4A1B8544185EB5168EFF45041CDCCCC6CA0B8544185EB5138EFF45041CDCCCC9C9DB8544148E17AA4EFF4504148E17A049CB85441CDCCCCFCEEF45041CDCCCCAC9CB8544148E17A64EDF4504148E17AC49CB85441CDCCCC4CEDF45041CDCCCC2C9BB8544148E17A94EDF4504148E17AF499B8544185EB51D8EEF4504185EB51C898B85441CDCCCCFCEEF4504185EB51D897B8544185EB51C8EFF450410AD7A3D096B854410AD7A300F1F45041CDCCCC7C93B85441CDCCCCACF3F450410AD7A34090B854410AD7A330F4F450410AD7A3208FB85441CDCCCCACF3F45041CDCCCCDC8DB8544185EB5148F4F4504148E17AE48BB8544148E17A44F5F4504185EB51F88CB85441CDCCCC1CF6F4504185EB51488BB85441CDCCCC4CF6F4504148E17AD489B8544148E17A04F6F4504148E17A0487B8544148E17A54F7F4504185EB51C883B85441CDCCCC8CF8F4504148E17AC481B8544185EB5108F8F4504185EB513880B854410AD7A350F8F450410AD7A3007FB8544148E17AE4F7F45041CDCCCC7C7EB8544148E17A44F6F4504185EB51D87FB8544185EB5188F0F4504185EB51D888B854410AD7A390F1F45041CDCCCCEC89B8544148E17A54F1F4504148E17A848BB8544185EB5128F0F4504185EB51D88BB8544148E17AE4EEF4504185EB51988CB85441CDCCCCECECF4504185EB513892B85441CDCCCCFCEBF45041CDCCCC5C98B8544148E17A54EBF4504185EB51189AB854410AD7A360EBF4504185EB51289CB85441CDCCCCBCE9F4504148E17A649FB854410AD7A350E9F4504148E17A04A2B8544148E17A24E8F450410AD7A3F0A3B854410AD7A320E6F4504148E17AE4A9B8544185EB51A8E5F450410AD7A390ACB8544101030000000100000010000000CDCCCCFCDFF4504148E17A44BCB8544185EB5168E0F45041CDCCCC5CBCB85441CDCCCCBCE0F450410AD7A390BBB8544148E17A74E3F4504185EB5158B7B854410AD7A3E0E3F4504148E17A74B6B854410AD7A3E0E3F45041CDCCCC3CB5B85441CDCCCCDCE4F4504148E17A04B4B8544148E17A14E6F4504148E17A64B1B85441CDCCCC6CE5F450410AD7A310B1B8544185EB5178E5F4504185EB5198ADB8544185EB5158E4F450410AD7A360AFB854410AD7A3E0E3F450410AD7A370B1B854410AD7A3C0E2F45041CDCCCCFCB2B8544148E17A54E2F450410AD7A330B5B8544148E17A34E1F4504185EB5158B7B85441CDCCCCFCDFF4504148E17A44BCB854410103000000010000003D000000E17A141E55F650415C8FC2053AB9544114AE47B156F65041D7A370BD37B95441D7A3708D5AF650415C8FC2C538B954419A9999E95BF650415C8FC2C538B95441F6285CAF5EF65041AE47E1CA37B954418FC2F58860F65041D7A370BD37B9544185EB517863F65041AE47E18A36B954410AD7A3C065F65041713D0AA736B95441C3F528CC68F650417B14AE7737B95441295C8F626CF6504148E17A6438B95441AE47E1DA72F650410000004037B95441C3F5283C73F650410AD7A39035B954411F85EB7174F6504114AE478134B9544152B81E355FF650418FC2F51831B954410AD7A3804BF650410AD7A3002EB95441C3F5280C39F65041E17A143E29B954410000005035F650410AD7A37029B95441F6285C8F31F65041E17A14AE28B954418FC2F57830F650418FC2F5F827B954418FC2F5782BF65041B81E853B26B95441D7A370AD29F650413D0AD70326B95441A4703DAA27F6504148E17A9425B954410000003029F650418FC2F5F827B95441E17A143E29F65041E17A14AE28B95441713D0A172BF65041295C8F6229B954410AD7A3B02BF65041E17A14EE29B95441B81E853B2CF65041CDCCCC3C30B9544185EB51E82BF65041EC51B86E31B954413D0AD7032CF650417B14AE4733B95441EC51B8FE2CF650411F85EBB134B95441D7A3706D2DF650417B14AE7737B954419A9999492CF65041B81E854B3AB9544148E17A142EF65041AE47E1FA3BB954419A9999892DF650415C8FC2853CB9544152B81E652CF65041AE47E13A3DB95441713D0AD729F65041C3F5285C3CB95441EC51B8CE28F650418FC2F5C83FB9544148E17A2426F650415C8FC2753FB954415C8FC20524F65041F6285C9F3FB954411F85EBE122F65041AE47E17A3EB954417B14AE7721F6504114AE47513EB95441295C8F421EF65041EC51B8CE3EB95441C3F5282C1DF650418FC2F5C83FB95441A4703D3A1DF6504185EB517841B95441D7A3708D1DF65041713D0A9743B95441000000101EF65041AE47E1AA44B9544185EB511821F6504148E17A1444B954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB95441AE47E10A44F650419A9999E93CB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B954418FC2F5784CF65041D7A370BD37B954413D0AD7B34EF650413333334339B954417B14AE1751F65041F6285C2F3AB95441C3F5283C52F6504148E17AA439B954410AD7A36053F65041F6285C2F3AB95441E17A141E55F650415C8FC2053AB9544101030000000100000061000000C3F5280CB1F5504148E17A1419B954410AD7A3B0B2F5504185EB51781BB95441C3F528DCB3F5504185EB51981CB9544185EB5108B5F55041CDCCCC1C1DB9544148E17AA4B5F55041CDCCCC8C1FB9544185EB5158B9F55041CDCCCC5C1FB9544148E17AE4BAF5504185EB515820B9544148E17AA4BBF5504148E17A2421B9544148E17AF4BCF550410AD7A32022B95441C3F528CCBDF5504185EB51E823B9544185EB51A8BDF55041CDCCCC9C24B954410AD7A350BEF55041CDCCCC8C25B95441C3F5284CBFF55041CDCCCC7C26B95441C3F528ACC2F5504185EB51D827B9544148E17AE4C3F55041CDCCCCBC28B954410AD7A350C4F55041CDCCCC7C29B9544148E17A54C9F5504148E17AF42CB954410AD7A370CBF55041CDCCCCFC2DB9544148E17A84CCF55041CDCCCC2C2EB95441C3F5285CCDF5504148E17A642FB9544148E17AA4CDF550410AD7A3F030B9544148E17AC4CEF5504185EB51A833B9544185EB51A8CFF5504148E17AA434B95441C3F528ECD0F55041CDCCCC1C35B954410AD7A300D2F550410AD7A3C036B95441C3F5283CD2F55041CDCCCC4C38B954410AD7A320D3F5504185EB51D839B954410AD7A3B0D3F550410AD7A3D03BB9544185EB51A8D5F5504185EB51283EB9544148E17A44D9F55041CDCCCCEC40B9544148E17A94DAF5504148E17AC441B954410AD7A360DBF5504185EB51D842B95441C3F5282CDCF5504185EB51C843B9544148E17A84DEF55041CDCCCC0C45B9544185EB51D8E1F5504185EB51A845B9544148E17A34E3F550410AD7A36045B954410AD7A3E0E5F55041CDCCCCFC45B9544185EB5138E8F5504185EB51E844B95441C3F528CCEAF550410AD7A30045B9544185EB5158ECF5504148E17AB445B9544148E17A84EDF5504185EB51F846B954410AD7A3B0EEF55041CDCCCCAC47B954410AD7A300F0F5504185EB51A848B954410AD7A380F1F550410AD7A3F04BB95441C3F5282CF1F55041CDCCCCEC4CB9544148E17A44F1F550410AD7A3A04DB95441C3F528ECF1F550410AD7A3904EB95441C3F5286CF3F550410AD7A3804FB954410AD7A3B0F4F5504185EB51984FB9544148E17AF4F5F55041CDCCCC1C50B95441C3F5283CF6F55041CDCCCCAC50B9544148E17A74F7F55041CDCCCC3C51B9544148E17AF4F8F550410AD7A36051B9544185EB5188FBF5504148E17AA452B954410AD7A340FEF550410AD7A30054B9544148E17A64FEF550410AD7A3B055B9544185EB5198FDF5504185EB51B856B95441C3F528ACFBF550410AD7A36057B9544185EB5188FEF550410AD7A3F057B95441C3F528ACFEF5504185EB517857B9544185EB517802F6504185EB51D854B954410AD7A33005F6504148E17AF453B9544185EB512807F6504148E17A9453B954410AD7A36008F6504185EB51E853B9544148E17A040AF6504148E17A9453B95441C3F5288C0CF650410AD7A3F051B9544148E17AF410F650410AD7A37050B9544185EB51C812F6504185EB51F84FB95441C3F5288C15F65041CDCCCC9C4EB95441C3F528AC16F65041CDCCCC5C4CB954410AD7A36017F6504148E17A544BB954410AD7A3B018F650410AD7A3D04AB9544148E17A141BF650410AD7A3004BB954410AD7A3101CF6504185EB51E847B954410AD7A35015F65041CDCCCC9C45B9544148E17A840BF6504148E17A3447B954410AD7A31001F65041CDCCCC7C47B95441C3F5280CF9F550410AD7A38046B9544148E17AA4EEF5504185EB512844B95441C3F5280CE7F5504185EB515841B9544185EB5198DFF5504148E17AA43DB954410AD7A370D7F5504185EB510837B9544148E17AF4CEF5504148E17A842DB95441C3F5281CC8F5504185EB51E826B9544185EB5168C1F5504185EB519822B9544148E17A94BCF55041CDCCCC6C1EB9544185EB5158B9F550410AD7A3A01AB95441C3F528DCB6F550410AD7A34017B95441666666F6B3F55041295C8F7212B95441F6285C7FB1F55041AE47E14A0DB9544148E17AF4B0F550410AD7A3D00BB9544148E17AD4AFF55041CDCCCC1C0EB954410AD7A350AFF55041CDCCCC7C11B954410AD7A3E0AFF55041CDCCCC5C13B954410AD7A3B0AFF5504185EB518814B9544148E17AF4B0F5504185EB51E817B95441C3F5280CB1F5504148E17A1419B9544101030000000100000009000000EC51B8CE86F650418FC2F5D837B954410AD7A33087F65041C3F5289C38B95441F6285C3F90F65041666666E638B954417B14AE9795F650416666660639B9544185EB514895F65041295C8F5236B95441A4703D0A95F650410AD7A33033B954417B14AE4785F65041D7A370FD33B954410AD7A33087F650410AD7A3D036B95441EC51B8CE86F650418FC2F5D837B9544101030000000100000021000000EC51B83E99F45041295C8FD202B95441E17A147E9AF45041CDCCCCDC03B954413D0AD7739AF450411F85EB3105B95441E17A143E9BF45041CDCCCC7C05B9544185EB5188A1F45041D7A370BD02B9544114AE47F1A8F45041E17A14BEFEB8544114AE4751AAF450418FC2F508FDB85441B81E859BADF450418FC2F5E8FBB85441AE47E13AB2F45041EC51B83EF9B854415C8FC2C5B2F45041EC51B8BEF8B8544152B81EC5B5F45041A4703DEAF3B8544152B81EA5B5F45041A4703D8AF2B854419A999999B9F4504100000080EFB85441EC51B82EBBF4504100000000EFB854413D0AD763BCF45041000000A0EFB854418FC2F5B8BDF45041000000A0EFB854413D0AD783BEF4504100000000EFB854413D0AD703BFF45041AE47E1EAEDB8544100000020B7F450417B14AE27EEB85441EC51B88EB0F450413D0AD753EEB85441C3F5281CAAF45041AE47E1EAEFB85441713D0A07A9F45041A4703D8AF0B85441713D0A47A7F45041F6285CFFF2B85441713D0A87A7F4504148E17A14F4B85441CDCCCCDCA6F450419A999989F5B854417B14AE47A5F4504148E17AB4F6B85441295C8F72A3F4504148E17A14F6B854417B14AE07A3F45041F6285C5FF5B85441E17A14FE9CF45041EC51B8BEF9B854419A9999E997F450418FC2F5E8FCB85441EC51B8BE98F4504185EB512800B95441EC51B83E99F4504185EB512801B95441EC51B83E99F45041295C8FD202B954410103000000010000003100000014AE4741E6F45041E17A144ED0B85441EC51B83EE5F45041E17A14EECFB8544152B81E45E6F4504185EB5148C9B8544185EB51D8E5F4504148E17A24C7B8544148E17AC4E4F4504185EB5188C6B8544185EB51C8E3F4504185EB5108C5B8544148E17A04E4F45041CDCCCC7CC3B8544185EB51C8E3F4504185EB51A8C1B85441CDCCCC6CE2F450410AD7A310C0B8544148E17A94E1F4504148E17A44BFB8544185EB51F8E0F450410AD7A390BEB8544185EB5198E0F450410AD7A310BDB85441CDCCCC2CE0F4504148E17A04BDB8544148E17AF4DEF45041CDCCCC2CBFB854410AD7A3E0DDF4504185EB5188C6B85441CDCCCC6CDCF45041CDCCCC2CC8B854410AD7A3D0DBF450410AD7A330CAB8544148E17A44DAF4504185EB51C8CBB8544185EB51A8D9F45041CDCCCC9CCDB8544185EB5188D5F450410AD7A320D1B8544185EB51B8D2F450410AD7A300D3B8544185EB5198CEF4504148E17A34D5B854410AD7A3F0C7F45041CDCCCC5CDAB8544185EB51C8BFF450410AD7A390DFB8544185EB5158BDF45041CDCCCC9CE2B854410AD7A300BEF450410AD7A360E2B8544148E17A74BFF450410AD7A340E1B8544185EB51C8C2F450410AD7A3C0DFB8544185EB51F8C5F4504185EB51B8DEB854410AD7A3D0C9F4504148E17A74DDB85441CDCCCC0CCDF450410AD7A330DCB85441CDCCCC0CD0F4504148E17A34E1B8544148E17A24D0F4504185EB5118E2B854410AD7A3D0D2F450410AD7A370E4B8544185EB5178D3F450410AD7A380E3B8544148E17A64D5F4504185EB5108E3B8544185EB5158D8F45041CDCCCC7CE1B8544148E17A84D9F4504185EB51E8E1B8544148E17AC4D8F45041CDCCCC8CE0B8544185EB5118D9F4504148E17AC4DEB854410AD7A380DAF4504148E17A44DDB854410AD7A3A0DBF450410AD7A3F0DCB8544185EB5158DEF45041CDCCCCECDAB8544148E17AA4DDF450410AD7A360D9B8544185EB5198DDF4504148E17AA4D7B854410AD7A3D0E1F450410AD7A340D5B854410AD7A320E3F450410AD7A370D5B85441D7A370DDE3F450411F85EB91D4B8544114AE4741E6F45041E17A144ED0B854410103000000010000002F0000000AD7A3109EF550410AD7A350FEB85441C3F528BC9DF5504185EB51E8FCB854410AD7A3409EF55041CDCCCCBCFBB8544185EB51189FF55041CDCCCCCCFAB854410AD7A350A0F5504148E17AB4FAB8544148E17AA4A0F5504185EB5178FAB8544185EB5158A1F55041CDCCCC6CFAB8544185EB5198A3F5504148E17A34FCB8544185EB51E8A4F550410AD7A3A0FCB85441C3F5282CA6F5504185EB5148FDB85441C3F5286CA8F55041CDCCCCFCFDB85441C3F528ECA9F5504148E17A14FEB8544185EB5178ABF55041CDCCCC1CFFB85441C3F528FCABF5504185EB517800B95441C3F528ACADF550410AD7A39003B9544148E17AE4AEF55041CDCCCC4C05B9544185EB5148ACF55041713D0AA7F6B85441C3F528DCAAF5504133333303F0B8544152B81EA5AAF5504133333303EFB85441F6285CCFA8F5504152B81EA5E1B854417B14AEE7A8F55041CDCCCCBCDAB8544185EB5118A8F5504185EB51E8DBB854410AD7A3A0A7F55041CDCCCCBCDDB854410AD7A3A0A7F5504185EB5148DFB854410AD7A390A8F5504148E17AC4E4B85441C3F5280CA8F5504148E17A44E6B8544185EB5118A8F5504185EB5168E9B8544148E17AE4A8F55041CDCCCCDCEAB854410AD7A3C0A8F5504185EB5198ECB854410AD7A350A9F5504148E17AF4EDB854410AD7A350A9F550410AD7A3E0EFB85441C3F5287CA7F55041CDCCCC9CF7B85441C3F528FCA5F5504148E17AA4F8B8544185EB51E8A1F5504185EB5128F9B85441C3F528DC9EF5504185EB51A8F7B8544185EB51F89DF55041CDCCCCCCF7B8544148E17AD49AF5504148E17A24F7B85441C3F528FC96F5504148E17A54F7B8544185EB51B895F5504148E17A24F7B854413D0AD76394F55041295C8F62F7B85441EC51B83E9BF5504114AE471105B95441C3F5283C9CF5504148E17AD404B9544185EB51C89DF55041CDCCCC0C06B9544148E17A949EF5504185EB512805B954410AD7A3109EF5504185EB51E802B9544148E17AD49DF5504185EB5158FFB854410AD7A3109EF550410AD7A350FEB85441
+</a>
+
+<b>
+0106000000010000000103000000010000005002000099539FF808F55041608C0681E2B8544111BDFA4A09F550414509C678E2B85441D36F5AA90AF550410B480DDDE1B85441840D2EDB0AF55041971A3EA6E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544166156EF60AF550415BAAE066DFB85441F53C6CFF0AF5504162FABB59DFB8544137C0ED850BF55041547B4B81DFB85441C9E322700BF55041CB4D73F5DEB85441F53C6CFF0AF55041550CFEADDCB854418B815ECD0BF55041129FDC09DBB854417EB9E4BC0BF550417E3E2744DAB8544168334AD90BF55041325A802FDAB85441C3F528DC0BF55041CDCCCCCCD9B85441C9BB25900BF55041547C17AFD9B854416061778B0BF550411136DFAFD9B85441488F7CD708F550413BD105A0D8B8544197BA96E807F550411FD81425D7B85441D636CE4B08F5504106C99B4CD6B85441C3F528DC08F550418FC2F5C8D4B8544127EE6D4F09F55041E1D3C29FD4B85441C17B017409F550411FB2D089D4B854411EF455E709F550419978118BD2B85441FC47F2030AF55041DB67CD76D2B8544185EB51080AF5504148E17A64D2B85441C3F5288C0AF550410AD7A310D2B85441B626D5930AF55041150AE210D2B85441B2540BAD0AF550412D5406FFD1B85441A42D15E60BF5504139384307D2B854418EFBDF070CF55041F90FAA1CD2B85441C3F5280C0CF55041CDCCCC1CD2B8544148E17AB40CF550418FC2F588D2B854417057B9B50CF550412ACAC48AD2B8544161E637DD0CF55041B224C8A3D2B8544161A489970DF550416EA117D3D3B854410AD7A3400EF550418FC2F5C8D4B854410AD7A3400EF550410AD7A390D6B85441E375BDAF0DF55041250B50A3D6B85441847B3EE60CF55041CB5CB9DAD6B8544185EB51380DF55041CDCCCC2CD7B85441FC867B300DF55041DE95793CD7B85441A5B2D5370DF5504139680846D7B85441E0D09F860CF55041AE4182B0D8B854418877978E0CF55041AE68A718D9B85441F87649BA0CF5504140643776DAB854415A06E2450DF550416B8136DDDAB85441030F67B30DF550412C4B9322DBB85441B3E34CA20EF550410394A93ADCB854419710A0C20FF55041DBC0FC5ADDB85441AF8D20FA0FF550411F51B171DDB8544192292FB910F5504119A48EADDDB85441A5E29A7612F5504147E507E7DDB854412B97992313F550412B71D7BDDDB85441F6FB723314F55041CE7D439CDEB8544156337BC214F55041CBD76200DFB854411E91A87915F550410AB24D4ADFB854418AFDAB4216F550418B366693DFB854415403099C18F55041624FB76CDBB854418469099718F5504192B5B767DBB85441F5002F3318F55041145CB714DBB85441A26F438917F550412862C697DAB854411489112817F5504164706374DAB854418EEC972816F55041392C6017DAB8544133C6F61F16F55041306FB814DAB85441FB7590A015F55041DB5E0842DAB85441DB126C6F15F5504190D68253DAB8544162207EBF14F55041C0268896DAB85441CEA3050214F550418B8B61A6DBB85441F874DF4F13F5504168BA8758DCB8544185EB510813F5504148E17AB4DCB8544185EB517812F55041CDCCCCCCDCB85441C66DA52911F55041561782B5DBB8544147E585B110F550415428C1A5DCB85441A5D92EAE10F550416D05BC9BDCB8544148E17AA410F5504148E17AB4DCB8544194367C5210F55041391CA488DBB85441E988F43510F5504139130D33DBB85441867A313A10F550418569CF2FDBB8544185EB513810F550418FC2F528DBB85441CEEC0B6010F550412112DD12DBB85441220213A610F55041F01F50DDDAB854410B4C50BF10F55041F25121E8D9B8544153C9C2B910F55041DC15F86DD9B8544198799D1C11F55041DC747424D8B85441E90DB58711F5504139680846D7B85441D6240BAD11F55041162B78E2D6B8544185EB51B811F550410AD7A3C0D6B85441C3F528FC12F550410AD7A330D6B85441EB88F96013F55041B14152F8D5B8544105A8294C14F55041B32E4947D5B8544152CAEB8514F550413F4A2CEED4B854410AD7A36015F5504148E17A84D3B85441C1C8F88F15F55041731BB378D3B8544147154BF015F550412CF58948D3B8544198A9625B16F550413BA14061D3B854414383E4DA16F5504106D27729D3B8544185EB51A818F550410AD7A350D1B85441CF8854CF18F55041FBC09E40D1B85441DECBEF7319F55041731F51EED0B85441F656096719F55041A2946C96CFB85441DC9B445119F550419605938DCEB8544109E64FBA19F5504196B6855ACDB854410AD7A35019F550410AD7A3D0CCB85441C3F5288C19F550418FC2F598CBB85441B5283E9219F550413B9ECB95CBB8544111BC2B9319F55041472F748FCBB854418E13E5E11AF55041EBE389D9CAB8544148E17A441CF55041CDCCCCACC9B854417EB4C88C1CF55041AB619EC9C9B85441C0D218151DF5504110A68FF3C9B854417713F0511DF55041C8E66630CAB8544148E17A641DF55041CDCCCC3CCAB8544148E17A641DF5504199B4F142CAB85441039FB66F1DF5504154722D4ECAB8544148E17A641DF5504143A9F4E3CAB8544148E17A641DF550413C868803CCB85441F7BA79671DF55041B3537F1BCCB85441E3CFB22B1EF550412341ED65CCB85441CDC8EB981EF55041605FD17BCCB854418BBCB2761FF5504110CCD38ECCB85441B38F5F561EF550418A215685CEB85441ADEA04EC1DF550414B4B3772CFB854410AD7A3E01CF5504148E17A64D2B85441A62055151DF55041F3B5740ED3B85441C1B6551D1DF550411081591FD3B8544155C20FD021F55041472F748FCBB85441E9E98C7A26F550415442680FC5B85441A67C6BD624F550413853F837C6B85441F68BC2EF23F5504170B69838C5B854410A7BD3B124F55041F5305664C4B854410AD7A3F024F550418FC2F518C4B854415FF0912B25F550411CD87AB6C2B85441F710834125F550411234C321C2B854418C71380726F5504104E788BFC0B854411E0A74BC26F55041B164B3A8BDB854418A8DFBFE25F550414640A81CBDB854412F84AAD625F550419C82BC26BDB8544148E17A1425F5504148E17A64BDB85441C3F528FC24F550410AD7A3B0BCB85441DB9C521825F55041007DEAA4BCB85441DB9C521825F55041E7E316A1BCB85441DBAE9FA026F5504198A01CE5BBB854413A60C37326F550412816FF88BBB85441615151C525F5504111FA7C3FBAB85441372DF3C825F550412FE1402ABAB8544185EB51C825F550418FC2F528BAB85441019AADCD25F55041938C9C0EBAB85441B2E5683026F55041384869CDB7B854414538404726F5504158D4C7B8B7B85441C3F5284C26F550410AD7A3A0B7B854412016D6B826F550412EF32F52B7B854417082C82F27F550418957C0E6B6B85441759BC43328F550419625C0F3B6B8544148E17AA428F55041CDCCCCECB6B85441595DCEF628F550419923DCE4B6B854416FA80CCB29F550416EC7CCC5B6B85441C220613E2AF5504161841307B8B854411F99B5B12AF5504155415A48B9B854417C110A252BF55041CDCE622EBBB85441E24BB45A2BF55041FCF70A61BCB85441CDCCCC5C2BF550418FC2F568BCB854416F8C925C2BF550418AD6B76BBCB85441A54DB45E2BF55041C16FE677BCB854418ABDC03D2BF550412D19B255BEB85441624CE7D52BF550411D8F7982BDB8544185EB51B830F55041E17A149EB6B85441AE47E16A32F55041D7A3704DB5B8544148E17AA431F5504148E17AF4B4B8544185EB51B82FF5504148E17AF4B4B8544185EB51182DF550418FC2F538B6B854415548F0162DF550415340F137B6B85441F5824F132DF5504103A3C139B6B8544163EA135E2CF55041A62A6DC6B5B85441850AC04A2CF55041D63B2422B5B85441CDCCCC1C2CF55041CDCCCC1CB4B8544148E17A942CF5504148E17A84B2B854411FC3FE342CF550418E42B792B0B854416B9ED7F52BF55041E255B0E8AFB85441915537762BF5504124C2DCE1AEB8544198853A4E2BF550412C896299AEB85441C61989572BF5504178382874AEB8544185EB51982BF5504148E17A44ADB854410AD7A3A02CF550410AD7A350ADB85441CDCCCC5C2EF550410AD7A310AEB8544153AF8A9E2EF5504152CC5AB6ADB854412DF070B72EF5504161248989ADB8544162CB48E82EF550418BE22D8DACB85441E532C2DD2EF55041B6C31C85ACB85441CEAFA2332EF55041619FC837ACB854417BCB61602DF55041D81D8543ACB854410AD7A3002DF5504148E17A54ACB8544116EAAC4A2CF550410458401AACB85441CDA521902BF550412A9BA4EDABB854417DF5462D2BF550412C7FE1F5ABB85441B8F292C32AF55041447F15F9ABB8544148E17A542AF550410AD7A300ACB85441F6F39F502AF550416B3991FCABB85441B2906D1D2AF5504138631EFEABB85441FA0F9F7929F55041A7163126ABB8544185EB510828F550410AD7A3E0AAB854410AD7A38028F5504148E17A14AAB8544143FAA59728F550413580CF0CAAB854418B977CA228F55041A54522F7A9B85441E80FD11529F5504189D1F1CDA9B85441CE049E462AF5504111BF2896A6B85441DCD698FA2CF55041968FEA3AA7B8544189E5384F2DF55041FEE3765BA7B8544148E17A542DF55041CDCCCC5CA7B854412D6BB0652DF55041A3996AA4A6B854412D6BB0652DF5504197EE66F1A5B8544143DADA762DF5504123617FECA5B8544185EB51782DF55041CDCCCCDCA5B85441DECB00BC2DF550418637E7DFA5B85441109803862EF550418842B0D8A5B85441CD50267D2FF5504197EE66F1A5B85441101DC4D72FF550412C29D81BA4B8544168A34C8230F550411CAF6366A2B854410AD7A39030F5504148E17A34A2B8544199702EED30F55041310BB0F4A1B854417EDC61EB31F55041AB807338A1B85441ECE9572434F55041B021D3A4A1B8544110B8430E37F55041B2CE8533A2B854418A88B56937F550414F9A822EA2B8544165DD59D637F5504131138E28A2B854411BE721B838F55041C0C23211A2B85441A41E74BB38F55041F67A250EA2B85441CDCCCC6C39F55041CDCCCC5CA1B854410AF1258B39F55041A2B94A4FA1B85441840BBFB239F550418C8CE72AA1B854411B77145C3AF5504104BCB7F4A0B854412223F6623BF550414A3BA025A1B85441E3A752443BF55041D8E7879F9FB854413AB3993B3BF55041381A17659FB85441355A33A13BF55041A64F21289FB8544145FB920D3CF55041536D43069FB854414AE4EB4B3DF55041CB541AFE9DB85441A0CC65F23DF550418FC2F5089EB8544185EB51583EF550418FC2F5089EB85441859C5F623EF55041FD4443109EB8544145D37E833EF55041FF426C129EB85441830390703FF55041ABA887C29EB85441F53902AC3FF55041C80EAEDA9EB85441CDCCCC2C40F550418FC2F5F89EB854415F70FD4140F55041DD1C9C179FB8544198454F4940F550417C5B951A9FB85441D3EFD75E40F55041812758419FB8544185EB519840F5504148E17A949FB854410ADF11A340F55041DEA5029A9FB85441BDDA3AC340F55041CBE40CA29FB8544147EB403D42F550416EBAA96BA0B854419836955F42F5504174679C15A0B85441B270676042F55041C58BA607A0B854412A583E5841F55041910D624F9EB854413BBA675B41F5504144F44C499EB8544185EB515841F5504148E17A449EB854416AFEF06341F5504102EBE0389EB85441FFC4506A41F5504141B19D2C9EB854410BACAB1C42F550415DD716699DB85441557DF0CC42F550415FD3B4CB9CB854416DD4DCD042F550417257DE409CB854412ABFEAD442F55041219D63B19BB85441CC0B8DD342F550418294166D9BB85441BCD74BAB42F5504176BE98C79AB854410AD7A39042F5504148E17A849AB854416C78F89A42F5504148E17A849AB854413A41979642F55041247079729AB854413FE2F60243F550410F76B36B9AB854413A89906843F55041B63A6FAF9AB854417E5A01C244F55041141713D89AB854412567B6D745F550413E0B9FE59AB854410284225646F55041C79FE5AF9BB8544185EB519846F5504148E17A149BB85441BC881CCA46F55041BA1C81E89AB8544179918DCB46F550413E0B9FE59AB8544105B9E6DD46F55041C8AB06D79AB854410AD7A3D047F550410AD7A3009AB85441332209E647F55041794CEB049AB85441548C94F547F55041F5DA8DF899B8544100F2AFA548F5504167B1F7279AB85441A25D054F49F55041B1990F439AB85441E6F13D7749F550419C0F29559AB854410AD7A3B049F550410AD7A3609AB85441E91BA2044AF55041452098A09AB8544163D937B34AF5504104A6D41B9BB85441CDCCCC9C4BF55041CDCCCC6C9AB854410AD7A3D04DF55041CDCCCCFC97B85441FC402E704EF55041CDCCCCFC97B8544106911AC94EF550410F9EC7F597B854418DFF0C6F4FF55041AC68BD3298B854412FC765AF4FF55041C05C494098B854413F68C51B50F550410A45615B98B8544178F7769C50F550413333B36F98B854413A57585351F550419C0F579898B8544105B1FF1052F550414DCED8E298B854410B525F7D52F55041A1B0B60499B85441D10AA7CE52F55041337BAC4199B854416CE34C1A54F5504108E3D82D9AB8544148E17A8454F550418FC2F5789AB85441CCDDBDC554F55041FBA203F799B85441AD4DA7CA54F55041D5E601EB99B85441DDA89BCB54F55041245755EB99B85441CDCCCCCC54F550418FC2F5E899B85441BC9AEF1155F55041630759039AB85441AC1C4FCB55F550413759A5429AB85441EBEFF10256F550410B6F1ECD99B85441AD94102456F55041CA5FAF5599B85441A2E3D36756F550415D6F384F99B85441F1A7080957F55041E963971F99B854410AD7A3D059F550418FC2F53898B85441CDCCCCFC5AF550410AD7A38098B85441A88D31215BF5504181FE292499B85441C18737615BF55041CBEC3BE499B85441495867975BF55041EA28C1C39AB85441AECA70C15CF55041C98B6FBD9AB854419E7A0BEC5CF550410E1DAEA39AB854410AD7A3005DF5504148E17A849AB8544148E17A745EF55041CDCCCC3C9AB854414BBEFA795EF55041B5BB76469AB8544182BF048E5EF55041B1990F439AB854413D8BD4075FF550411B9716B19AB8544192C8421463F55041824C1D9B9AB854412800B71264F5504101C27E0E9AB8544148E17A1464F55041CDCCCC0C9AB854412A11F11464F550419BB8430D9AB8544105E7A51564F5504129C9DF0C9AB85441DB404DD364F55041247079729AB85441B194BA9765F550416258918D9AB85441EB41DF8068F5504186E530739AB854415B5C355F68F550413BB22D4899B85441FBDA3F4E68F55041C5E98AB198B854411A494A3668F550416821058498B85441BFE9861868F55041980D99F897B85441688AC8EB67F550416D32724C97B8544122C2DA6767F5504174640CD696B85441CDCCCCFC66F550418FC2F58896B854419D56B0F966F5504140872E7396B85441E0719FE366F550412E02615F96B85441FFEF31D566F55041EEB8B97395B85441CDCCCCCC66F550418FC2F53895B8544155F172D166F5504112248A3695B85441AC834DCF66F55041FF247C1395B85441688AC8EB67F55041E58956A094B85441F58B4A326AF55041F59AC36893B85441AF973B9F69F55041653356C892B854414ABBE98568F550411E9B0AB592B854412BAA9E0A62F55041A9F61A4F92B85441CDCCCCFC60F55041CDCCCCEC92B85441CBB6C3F660F55041A9999CEE92B85441E6D234C060F5504119E8B51093B85441F5DD678F5FF55041E0A0FD6193B85441520AC3565FF55041A9E6C67E93B854410AD7A3205EF55041CDCCCC3C94B85441445DA4F45DF55041654FBD3294B854410A483BF25DF55041E0E8F63394B85441E535CB535CF55041DA99A3DE93B85441CDCCCC6C5AF5504148E17AF493B8544185EB518859F5504148E17A0493B85441740BCEA158F550412521733791B8544101DC494758F55041D996E0C990B854410AD9836F56F55041A6E7F61691B854410519DE2A56F550417293072991B85441D3E1D22456F55041E43E2B2391B85441CDCCCC1C56F5504148E17A2491B85441A5939FE155F55041A74001E290B85441E6DC584B55F550415D51485090B8544134D6DD2E54F55041FA1B3E8D90B8544178175CE453F55041A6C9520F92B854410B9A584F53F550418C76266E92B85441246B413C53F550419F068A5392B8544185EB512853F55041CDCCCC5C92B854410F99039A52F55041A565627191B85441EB5DD36F52F550419287933691B85441079AC1E851F55041079AC16890B854418648B9FD50F550418648B97D8FB85441D1EAC1864FF55041341BFD698FB85441A255D60C4FF55041923F9A6490B85441CDCCCCFC4EF5504141E5071D91B85441CDCCCCFC4EF550410AD7A39091B85441F8D4E4F24EF550416287F38E91B85441646DBEF14EF550418C2E2D9C91B854415FBF0E264EF55041E14F086C91B8544185EB51584DF550418FC2F54891B85441DB6533294DF550414F51E44091B854417EE8FE1C4CF550419287933691B854416E479FB04BF550415D99412291B85441C3A967144AF55041B6EFD3B990B8544185EB51C849F55041CDCCCCAC90B85441CFEBF00D49F55041895D7D9490B854414F332E5B48F55041E521788690B8544140EA1C5F45F55041275C0B2190B85441DA3534A041F55041BE8381C290B854415FB69DC83FF55041045EFD6591B85441F64907FC3DF55041CB1645B791B854413AFB920D3CF55041144756A492B85441E7D0BB193BF550415377679193B854418E95775D3BF55041AB429EF194B8544189AC1E1F3AF5504119C0A18695B85441CAAA11DE38F5504181E13FB095B85441CDCCCCDC38F550410AD7A3B095B85441BD2734DC38F55041D3C77DB095B8544106ED5BB138F550418C960BB695B85441B365602C38F5504152D9A68495B85441CDCCCCFC36F550418FC2F53895B854417F8C477436F550411983259595B8544179A3E09835F550410F0ED55196B854416FABBD7F35F5504169FAD58F96B854410AD7A37035F550410AD7A33097B8544166FA683C35F550418826EB3597B854417EFC463335F550416D32724C97B854410901A4F434F5504130B3014297B85441FB7E678434F55041D0E8D4E097B8544103C1714834F55041173EAE3598B85441ECE9572434F550413333B36F98B85441439C963E33F5504156FD024B99B854410AD7A33033F550418FC2F55899B85441A75C5C2F33F55041820B8C5999B8544111EF50FA32F55041EF392E8C99B854412BFA83C931F5504148BD6B1A9AB8544193372C4630F5504182839BB69AB85441CDCCCC4C2FF5504148E17AA49BB85441F5EFA1342FF55041890F549B9BB85441B84B2E242FF550411E5F0CAA9BB854412BDA80772EF5504158A6B5539BB85441C65723402DF55041BB88CDDD9AB854415A91648C2CF550419746E3A19AB8544189E3635B2CF5504183F1D6A59AB85441849451952BF55041D1CC33C59AB8544115B18CFB29F55041FCD815069BB85441212AC79529F55041D0D594229BB85441FC4CE24928F5504143F4F7239CB854419EDA118426F55041EA00AD399DB85441C25325C424F550415F1732219EB854410CA83D2D22F5504114CD24BD9FB85441F2C41EE820F55041E5C72BE7A0B85441E3F331CE1FF55041717A91B9A1B85441A463BBEA1DF5504148DB5B19A3B85441A3EF68191DF550414190CDFDA3B854417486D69E1CF550418CACCC72A4B85441D2B9CB861BF550416D0E024FA5B85441AEF5A2D719F55041629666D4A6B8544126DD79CF18F55041B608379AA8B8544140E8AC9E17F550417C0978BDA9B8544194F29E4A15F550419B8DF66EABB854414B7A948B13F55041EAEE596CAEB854410AD7A38013F55041A5DD9F2DAFB854410AD7A38013F55041CDCCCCCCAFB8544153F08E4613F5504131040636B0B8544146EEC81A13F5504167EDB88EB0B85441D302CBEF12F5504148A92304B1B85441A46DDF7512F5504152EBE2DCB1B85441396354F011F55041CE8005A2B2B85441C3F5287C11F5504148E17A74B3B85441769E7E3511F550415E100F93B3B85441BEE81FA10FF550417CB75A60B4B85441C53E7BA60EF55041B4AFBCF6B5B854418A6ADBE80DF550410E5A3C13B7B85441BE096E770DF550412CB117E2B7B85441174C78E70CF5504142D880CBB8B85441C321A1F30BF5504128CD4DFCB9B85441992D15E60BF55041281547CEBAB854411C5DE5AF0BF55041762EB1F9BCB854410CBC85430BF55041E43BA732BFB854416D6ABEEA0AF550417A741D7EBFB8544132BCE3AD09F55041EF0412AAC0B854419A0D309E08F55041D4C06607C2B8544117BE7A8C05F5504108377C7DC9B85441460B6D3405F55041371461C9CAB85441FB302C9305F5504167E7242FCBB85441C3F528DC05F550418FC2F568CBB8544145EE33E305F55041F3401A85CBB85441FD6A4EEB05F550411868CE8DCBB854410D0CAE5706F550418B86318FCCB8544180E2178706F55041BA6316DBCDB854414653660606F550412D8279DCCEB85441A4E7105D05F550411818A679D0B85441B0E9632105F5504139B92290D1B854410AD7A31005F550418FC2F5F8D1B85441716C20A704F55041FE449D04D2B85441F839FCDA03F550412DA25E24D2B854412E15784B03F55041194CB214D4B85441C3F5283C03F550410AD7A350D4B854418894703A03F55041FFE8964FD4B854416BC86C3803F5504190B58E56D4B8544152522D4102F550413BD65EB7D3B854410AD7A35001F5504148E17A24D3B85441F598511200F550411D703B65D5B854413CCBA2A4FEF45041B46A5F18D8B854417DE43673FEF45041B15E5755D8B854417B14AE67FEF45041A4703D6AD8B8544143B07F0DF9F45041F79B595BDFB854414C6EF759F9F45041460B4C82E0B85441D9DF86FCF9F450413CA1781FE2B85441257384BCF9F45041F00D7B5FE2B85441C3F5287CF9F450418FC2F5D8E2B854410AD7A350F8F450418FC2F578E2B854413929B907F7F4504185D53471E3B85441F312CE55F6F4504102EAB214E4B854419D0F3319F5F450415D444FA9E4B85441C3F528FCF4F450418FC2F5B8E4B854417EF81B25F4F450418FC2F5B8E4B854414C76269CF3F450419A5508BEE4B854418C593563F3F45041F1A066D0E4B85441E20EFA97EFF450414C27D460E8B8544108F99E2CEEF4504145582FB6E9B8544156781BE5EDF45041E335F196EAB8544108A7AA8BECF450412C660284EBB85441C74B5442EAF450410F18E250EEB85441A306262BEAF45041E8603573EEB85441D9AC9C1FEAF45041049C4A84EEB854416655C0D5E9F450414621DD04EFB85441981E157FE9F450410D8952FBEFB85441719A03D1E8F450417F5D51EAF1B85441F8E565D7E8F4504121CCEB54F5B854418BA6026DEBF45041055F2257F6B854416CB507B6EEF4504116621A4DF7B85441C3F528ECEFF4504148E17AC4F6B854412529F3DBF0F45041BC0156B7F6B854419759FEA3F1F4504121DCF0A5F6B85441CB95A8DDF1F4504156FCD7E7F6B854412FDF9406F2F450414ABC1EFEF7B8544187D5AD51F2F45041BBE5A107F8B8544138C4340DF5F45041985F78E8F5B854412D0E7128F6F4504194B4527AF5B8544148E17A34F6F4504148E17A74F5B8544111D5C435F6F450413BE72375F5B854417A611F7AF7F45041DAC79A08F7B854410AD7A3C0F7F4504148E17A64F6B85441A4BC68C1F7F450417BC05E64F6B85441477A6CC9F7F45041DD0F534BF6B854413A37B30AF9F45041C19B2222F6B854417C1F145DF9F45041CE591B8FF3B85441F7EFD501FAF4504162B04FB1F1B85441B3A8F8F8FAF45041C1E69C91EFB85441F690594BFBF450418AE27847EFB8544185EB5168FBF450416B2D880DEFB8544185EB5168FBF450411381AEEDEEB85441E04FEC5FFBF4504135DB4CBBEEB8544148E17AE4FAF45041CDCCCC6CEEB854419CB842EAF9F450411F391EF5EEB85441D99768D0F9F4504155C29105EFB854412B8BFCF1F8F4504197AAF257EFB85441ECD70DB7F8F45041AB72A817EFB854410AD7A320F8F450418FC2F5A8EEB8544185EB5138F8F4504148E17AF4EDB85441A4F2C03CF8F450417D11A9F2EDB85441A4F2C03CF8F450417C953EE5EDB854416E2A68D8F9F45041041F212AEDB85441C3F5282CF8F4504148E17AD4ECB854418CB02C29F8F450412B9381B5ECB854418B460A24F8F450418CA071B4ECB854416FD2D9FAF7F450417E533752EBB85441F66A15B0F8F450411E8EA87CE9B85441C1707209FBF4504146E615AEE9B8544102C9E910FBF450417F2A85BCE9B8544148E17A14FBF45041CDCCCCBCE9B854419C111A25FBF45041522E8DE3E9B854411FCD0385FBF45041F7BAFB9CEAB85441AD70F576FBF4504122B763A2EAB854412F24FB7EFBF4504157A217B5EAB854418B76CF62FDF45041CE7E5163EAB85441464BB551FEF45041E80E4584EAB8544197DFCCBCFEF45041048375ADEAB854418DAA4D05FFF450416D5AF59EEAB854414E9E990EFFF4504107F86079E9B85441698FAAE3FEF45041644E1686E8B85441C3F528BCFEF450418FC2F5E8E7B85441A03A7FC6FEF450410B6ECBE0E7B8544198C309C5FEF45041DC2087D8E7B854410304D848FFF450418B8C6F6DE7B85441E9F8A47900F550417D3F350BE6B854417B16A18002F55041036F7366E5B854418E0E9B8502F55041E654ED65E5B8544148E17A9402F550410AD7A360E5B854417C3A8BA002F55041386B1763E5B85441E902261D03F55041F5A6F955E5B85441A16F178D03F5504152640CC6E4B85441C3F5283C03F5504148E17AD4E3B8544146BFCB5703F55041E0C1C4CEE3B854411D3FD05603F55041C1E58ECAE3B85441BF67FF2C04F5504198A9E490E3B85441A640096605F5504103492FCBE2B85441141C66B705F55041800E75DBE2B85441DD6615C405F55041AB577EDAE2B854412B11CB0A06F55041052D6CD3E2B85441D555FC5D06F550418CFECCCEE2B8544185EB517806F55041CDCCCCCCE2B854410AD7A3B007F55041CDCCCC6CE2B854419A64470008F550414E08B671E2B85441CCDA7D2A08F55041B4985468E2B8544110A71B8508F55041C07C9170E2B8544199539FF808F55041608C0681E2B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983695 - 117756
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000002FE3E79B9E2504173147F44602F5541B478C446A3E250410AE33FFC602F55417BD05ABD92E25041C489F90A622F5541BF458A0E84E25041DFAAE77A612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F5541423FB47363E2504165A0BAA5542F5541A11554B560E25041A0B91853542F5541FBC939AD61E2504119098695562F554126C1DD1065E250417F1988A6592F5541849274F068E250418236398E5C2F554100FF921A6EE250418653EA755F2F55413118F1C76DE25041AE2DDDF15F2F5541219F23C768E25041D2EA1E865D2F5541F6A77F6365E25041639BB1435B2F55410409A5DE60E2504106CA1A64572F5541BD932A185FE250415C614F74552F5541313C3C605EE25041DCA1BC65542F5541D60DC85456E250418EB18F7E562F5541FDCE420F5BE2504143FB2097602F5541C0B0DBFF61E250414E573DB0622F55412ADE8EF867E2504136F61735672F55419AEE90096BE25041F8BF08A0642F554128D985966EE2504173147F44602F5541828D6B8E6FE25041E8463B9F5F2F55419206398F74E25041277D4A34622F5541E798643D79E250410BFF73D1632F5541DA935BDB7FE2504149358366662F5541D254F0A980E250417A4EE113662F5541973B92FC80E25041AC28D48F662F5541973B92FC80E2504136F61735672F554157007A0585E25041D71F78F3692F5541263E2F0F8EE25041FBDCB987672F5541B3F77B4497E2504154A5F1AE682F5541DC15B63BA2E25041AF458577692F554182D43DFCACE25041D0A28E38692F5541DE5659F1AEE250419DE1003E682F5541821F9141B1E250414D165682682F5541680E418ABCE25041175B90EA652F55417DE719A5BCE2504133A8740F642F554165F18FA2B9E2504108E2C2E9602F554102FE3E79B9E2504173147F44602F5541
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000008D363BD8B9E250416B00E121612F554165F18FA2B9E2504108E2C2E9602F55410DDF447CB9E25041B3989650602F5541CB225C09A6E25041368F66E5602F5541BB1C42E898E25041F72301A6612F55417BD05ABD92E25041C489F90A622F55417175A14F92E250412AEAC406622F5541BF458A0E84E25041DFAAE77A612F5541882CF10784E25041A2016579612F554117712ECE83E2504180172C6C612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F55411E8D3F6F65E25041A12E12F3562F5541423FB47363E2504165A0BAA5542F5541A5D4485463E250419D5708A2542F5541EC24CDC260E25041EF878872542F55413B8D13E260E25041002682BB542F55411898743F61E25041AA946495552F55411B85209561E2504104134B5D562F5541F5C4CC3965E25041575C3BC5592F554198CA55C568E250419120E26D5C2F55410D8D087E6BE250416973DCFD5D2F5541202644816DE250418DF9AD1F5F2F554100FF921A6EE250418653EA755F2F55410F69EB176EE2504170B4E5795F2F5541EBE16E196EE2504163BDCD7A5F2F5541853C67D16DE2504139EDCC03602F5541A1B45C246DE25041DD68B6A25F2F5541219F23C768E25041D2EA1E865D2F5541F6A77F6365E25041639BB1435B2F55412FFCC10461E250419AE3C584572F55410409A5DE60E2504106CA1A64572F5541BD932A185FE250415C614F74552F55412A792D6A5EE2504160D35C74542F554105896F025CE25041D98DA503552F5541D60DC85456E250418EB18F7E562F5541CCA370475AE2504176A47AEC5E2F55419BD1A6125BE2504138672798602F554139671DD861E25041C66439A4622F5541C0B0DBFF61E250414E573DB0622F554144E837CE63E250410B43220E642F5541B5879EFB67E2504124098432672F5541C80338FD6AE2504131936EAA642F554166199C2B6BE25041DFDC4076642F554128D985966EE2504173147F44602F55418586515A6FE25041914BF7C15F2F5541828D6B8E6FE25041E8463B9F5F2F55414AC6983F74E25041C495310B622F55414E38C57476E25041EF9FB8DB622F5541E798643D79E250410BFF73D1632F5541D43B85657CE2504133E7D10C652F55419331C4D37FE250417ED08C63662F5541D8B85FEB7FE2504177261B60662F5541D254F0A980E250417A4EE113662F5541CF5D5CC780E25041005C0340662F5541973B92FC80E25041AC28D48F662F5541973B92FC80E25041132A3891662F5541973B92FC80E2504136F61735672F5541058B609F82E2504156B1E151682F5541A93CAE1685E250413ACAE0BB692F55414A1A31838CE2504192A6CBF1672F5541263E2F0F8EE25041FBDCB987672F55414B25FA2A8EE2504108E7348B672F5541FEA85D4A98E2504126C8A7C1682F55411E3D177E9EE25041DC21EC2B692F5541F77CE4ACA2E25041777DEE74692F5541024E481EA4E25041FA5D7B6C692F5541DDD14110ADE250411EA48C2E692F5541DE5659F1AEE250419DE1003E682F5541705B4000B0E25041F8EB425D682F5541EE448395B1E2504117020C6F682F5541311F187EBCE2504112A85BED652F554195B63893BCE25041947ADE4B652F55417DE719A5BCE2504133A8740F642F55418D363BD8B9E250416B00E121612F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983695 - 318015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000002FE3E79B9E2504173147F44602F5541B478C446A3E250410AE33FFC602F55417BD05ABD92E25041C489F90A622F5541BF458A0E84E25041DFAAE77A612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F5541423FB47363E2504165A0BAA5542F5541A11554B560E25041A0B91853542F5541FBC939AD61E2504119098695562F554126C1DD1065E250417F1988A6592F5541849274F068E250418236398E5C2F554100FF921A6EE250418653EA755F2F55413118F1C76DE25041AE2DDDF15F2F5541219F23C768E25041D2EA1E865D2F5541F6A77F6365E25041639BB1435B2F55410409A5DE60E2504106CA1A64572F5541BD932A185FE250415C614F74552F5541313C3C605EE25041DCA1BC65542F5541D60DC85456E250418EB18F7E562F5541FDCE420F5BE2504143FB2097602F5541C0B0DBFF61E250414E573DB0622F55412ADE8EF867E2504136F61735672F55419AEE90096BE25041F8BF08A0642F554128D985966EE2504173147F44602F5541828D6B8E6FE25041E8463B9F5F2F55419206398F74E25041277D4A34622F5541E798643D79E250410BFF73D1632F5541DA935BDB7FE2504149358366662F5541D254F0A980E250417A4EE113662F5541973B92FC80E25041AC28D48F662F5541973B92FC80E2504136F61735672F554157007A0585E25041D71F78F3692F5541263E2F0F8EE25041FBDCB987672F5541B3F77B4497E2504154A5F1AE682F5541DC15B63BA2E25041AF458577692F554182D43DFCACE25041D0A28E38692F5541DE5659F1AEE250419DE1003E682F5541821F9141B1E250414D165682682F5541680E418ABCE25041175B90EA652F55417DE719A5BCE2504133A8740F642F554165F18FA2B9E2504108E2C2E9602F554102FE3E79B9E2504173147F44602F5541
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000008D363BD8B9E250416B00E121612F554165F18FA2B9E2504108E2C2E9602F55410DDF447CB9E25041B3989650602F5541CB225C09A6E25041368F66E5602F5541BB1C42E898E25041F72301A6612F55417BD05ABD92E25041C489F90A622F55417175A14F92E250412AEAC406622F5541BF458A0E84E25041DFAAE77A612F5541882CF10784E25041A2016579612F554117712ECE83E2504180172C6C612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F55411E8D3F6F65E25041A12E12F3562F5541423FB47363E2504165A0BAA5542F5541A5D4485463E250419D5708A2542F5541EC24CDC260E25041EF878872542F55413B8D13E260E25041002682BB542F55411898743F61E25041AA946495552F55411B85209561E2504104134B5D562F5541F5C4CC3965E25041575C3BC5592F554198CA55C568E250419120E26D5C2F55410D8D087E6BE250416973DCFD5D2F5541202644816DE250418DF9AD1F5F2F554100FF921A6EE250418653EA755F2F55410F69EB176EE2504170B4E5795F2F5541EBE16E196EE2504163BDCD7A5F2F5541853C67D16DE2504139EDCC03602F5541A1B45C246DE25041DD68B6A25F2F5541219F23C768E25041D2EA1E865D2F5541F6A77F6365E25041639BB1435B2F55412FFCC10461E250419AE3C584572F55410409A5DE60E2504106CA1A64572F5541BD932A185FE250415C614F74552F55412A792D6A5EE2504160D35C74542F554105896F025CE25041D98DA503552F5541D60DC85456E250418EB18F7E562F5541CCA370475AE2504176A47AEC5E2F55419BD1A6125BE2504138672798602F554139671DD861E25041C66439A4622F5541C0B0DBFF61E250414E573DB0622F554144E837CE63E250410B43220E642F5541B5879EFB67E2504124098432672F5541C80338FD6AE2504131936EAA642F554166199C2B6BE25041DFDC4076642F554128D985966EE2504173147F44602F55418586515A6FE25041914BF7C15F2F5541828D6B8E6FE25041E8463B9F5F2F55414AC6983F74E25041C495310B622F55414E38C57476E25041EF9FB8DB622F5541E798643D79E250410BFF73D1632F5541D43B85657CE2504133E7D10C652F55419331C4D37FE250417ED08C63662F5541D8B85FEB7FE2504177261B60662F5541D254F0A980E250417A4EE113662F5541CF5D5CC780E25041005C0340662F5541973B92FC80E25041AC28D48F662F5541973B92FC80E25041132A3891662F5541973B92FC80E2504136F61735672F5541058B609F82E2504156B1E151682F5541A93CAE1685E250413ACAE0BB692F55414A1A31838CE2504192A6CBF1672F5541263E2F0F8EE25041FBDCB987672F55414B25FA2A8EE2504108E7348B672F5541FEA85D4A98E2504126C8A7C1682F55411E3D177E9EE25041DC21EC2B692F5541F77CE4ACA2E25041777DEE74692F5541024E481EA4E25041FA5D7B6C692F5541DDD14110ADE250411EA48C2E692F5541DE5659F1AEE250419DE1003E682F5541705B4000B0E25041F8EB425D682F5541EE448395B1E2504117020C6F682F5541311F187EBCE2504112A85BED652F554195B63893BCE25041947ADE4B652F55417DE719A5BCE2504133A8740F642F55418D363BD8B9E250416B00E121612F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539811 - 983725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D000000C3F528FCFF105141EC51B8EE533F5441A4703DAA0F11514152B81EF5453F54417B14AE871F1151410AD7A3D0373F54413DB53EA01A115141E39852FE353F544108820B6D1A115141B1651FEB353F544131DE9A8F18115141CFEA0A3D353F5441F5D3C36B161151410D1E3E70343F5441F0FC1FFB121151419A099028333F54414D8CE270111151417B84A496323F544134CDE2280D11514117F56801313F5441AE47E16A0A1151415C8FC2F52F3F5441B23FC470F3105141700BC002483F54413F3980BAF310514197785D3E483F5441756AADA8F5105141EAEBF1E5493F5441B81E851BF8105141EC51B8FE4B3F5441666666E6F81051418FC2F5C84C3F54410A821708F7105141D005A1524E3F54413B6D8C4AF5105141D2A929C04F3F54419B8B87AAF4105141DFD45F42503F5441073A062DF41051415549C7A6503F54412BEDE086F01051410DDA4E90533F544193934187EE1051419ABF7A23553F544173226862E910514122C30D27593F5441EC51B8BEE5105141AE47E1FA5B3F544170C5111EE51051418A773E825C3F5441E5362D22E510514184268D915C3F54419A40709AEC1051411075C22E653F5441AE47E1CAF7105141C3F5283C5B3F5441C3F528FCFF105141EC51B8EE533F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000666666E6F81051418FC2F5C84C3F54415B476E78F3105141D1A89A0E483F54417B5F1C7AE21051417F1C6EC1593F54415C8FC2D5E2105141666666265A3F5441B81E851BE510514148E17A945C3F5441F133A521E5105141C73D928F5C3F544171C5111EE510514187773E825C3F5441EC51B8BEE5105141AE47E1FA5B3F544171226862E91051411FC30D27593F54412DEDE086F01051410EDA4E90533F5441666666E6F81051418FC2F5C84C3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956391 - 628727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000004D000000963791B675F450412F83D4334A1555413574588474F45041D2AF08F449155541DD86C99E72F45041683F33AB49155541225D41746FF45041835701C948155541D9CFC3CF6CF4504169B4CB8148155541E20A20B269F45041ED8E77EA47155541A5B80FDC68F450418BA951C34715554116AA17D468F450418C2C5DAD47155541BB26A4D668F45041FDE653C24715554154F00AC968F45041474832B04715554193E3AD6D66F450412849728D461555412E3C0C365DF45041908B263144155541E97FF7E357F450412413873543155541C3F528BC57F45041713D0AE74415554185EB518857F45041A4703D0A461555417B14AE3757F45041A4703D4A47155541D7A3703D58F450411F85EB2147155541F6285C0F58F4504185EB51F8471555415C8FC2B557F450418FC2F55849155541B81E853B57F45041000000504A15554114AE478156F450417B14AE574B155541CDCCCCDC55F45041B81E851B4C155541666666C654F450413D0AD7534D155541713D0AA753F4504185EB51984E155541000000C052F45041713D0AA74F155541333333E351F450411F85EBD150155541C3F5284C51F45041F6285CDF511555418FC2F5D850F450418FC2F5385315554185EB51A850F450416666662654155541EC51B89E50F45041C3F528CC55155541000000A050F45041B81E858B571555419A99996950F45041B81E851B59155541AE47E11A50F45041EC51B8CE5A155541CDCCCC1C52F4504114AE47F15A155541295C8F9254F45041666666365B155541F6285CCF56F45041EC51B89E5B1555415C8FC23558F450418FC2F5F85B1555418FC2F5185AF45041F6285C6F5C155541C3F5284C5BF45041000000D05C155541333333835DF4504185EB51885D155541713D0A8760F450418FC2F5985E15554152B81E2564F450411F85EBF15F155541F6285CFF66F45041C3F528FC601555410000004069F45041AE47E1DA611555413D0AD7B36BF450419A9999B962155541713D0AB76DF45041F6285C6F63155541A4703DAA6FF450411F85EBF16315554148E17A8471F45041AE47E18A6415554148E17AD473F450413333334365155541AE47E14A76F4504148E17A046615554185EB516876F45041295C8FA2631555418FC2F52878F4504148E17A045B155541333333837CF4504148E17A045B15554114AE47A17EF450419A9999695B1555416666663680F450413D0AD7535B155541F6285C0F81F45041713D0A575A155541C3F5287C81F450411F85EB71581555418FC2F5F880F45041F6285C5F57155541A4703D7A81F45041B81E85DB531555416666668682F450410000008052155541A4703D2A84F450413D0AD7A351155541000000F086F45041AE47E1CA50155541617AB15688F45041C08FEC71501555414FC1C81E8AF45041C027122B5015554137FCD1E88AF45041D6DE69F84F155541DF1522388CF45041901C63B44F155541307C48A78DF450418FDDE6694F155541DDF01A6B90F450419C864DDA4E1555410243DCBE93F45041D8AB7A854E15554114AE475193F45041333333734E15554185779EE78DF450410082E28C4D1555410FDB710689F450414DDD70D24C1555416F68E96286F45041E83F796C4C155541C27C43117FF45041B3D08C7E4B155541086A42F979F45041E58443C44A15554124B959EE77F45041D6481EAA4A155541963791B675F450412F83D4334A15554105000000B12B94FE68F4504148B1D22C4815554141054D7472F45041445209A94B1555412002541F72F45041DFD385D34B155541ADCCCA7A6CF4504100D77E284C155541B12B94FE68F4504148B1D22C48155541
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000043779EE78DF45041F681E28C4D15554114AE475193F45041333333734E1555410243DCBE93F45041D8AB7A854E1555415C8FC23596F45041EC51B8EE4E1555418FC2F55899F4504152B81E854F1555411F85EB519BF4504148E17AB44F155541C3F5284C9DF4504148E17A044E155541F6285CAF9DF45041295C8F724A155541A4703D8A9DF450413D0AD753481555417B14AEC79CF450418FC2F50847155541AE47E17A9BF45041F6285C7F461555410AD7A3009AF450418FC2F5F8451555410AD7A3D098F450411F85EBA1451555413D0AD73397F4504185EB51484515554114AE471195F45041CDCCCCCC44155541EC51B8AE95F450415C8FC2D543155541000000A097F450410AD7A3704315554185EB514897F45041666666B640155541EC51B8EE94F45041A4703D8A3F1555417B14AEB790F45041CDCCCC1C3F15554185EB51D88CF45041E17A14CE3E155541AE47E12A8AF45041000000603E155541C3F5285C83F450418FC2F5B83C155541F6285C8F7EF450410AD7A3503B155541000000B07CF4504114AE47D13A15554148E17A3475F45041EC51B81E38155541E17A141E74F45041333333C338155541295C8F2272F45041333333733A155541B81E852B70F4504152B81E75421555411F85EB016FF4504148E17A2442155541D7A3707D6FF45041D7A3701D401555413D0AD7C370F45041F6285C8F3A1555410AD7A3A072F450415C8FC2253815554152B81E5573F45041AE47E19A371555415C8FC2256FF45041F6285C3F361555415C8FC2C565F45041CDCCCC7C331555417B14AE7761F45041AE47E16A32155541E17A142E5FF450413D0AD723321555415C8FC2255BF45041C3F528AC311555417B14AEF759F45041666666363615554148E17A1459F45041D7A3707D3A1555413333336358F45041AE47E1FA3D15554152B81E3558F450413D0AD74340155541AE47E1EA57F45041A4703DEA42155541E97FF7E357F4504124138735431555412E3C0C365DF45041908B26314415554193E3AD6D66F450412849728D4615554188A53D7E66F450413C596D954615554179C42C9F66F4504145CEE99D4615554106AAB57A69F4504128812ABC471555410EB42D466AF45041D9488E0648155541D9CFC3CF6CF4504169B4CB8148155541225D41746FF45041835701C948155541086A42F979F45041E58443C44A155541C27C43117FF45041B3D08C7E4B1555416F68E96286F45041E83F796C4C1555410FDB710689F450414DDD70D24C15554143779EE78DF45041F681E28C4D155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246563 - 3334068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000002400000053AE47114E6B5141981A858B05955441AE47E1BA4E6B514148E17AA4229554418FC2F508506B51418FC2F5A8549554418FC2F508506B5141D7A370ED5595544152A5FE60506B5141FC526A86589554416DFFA4E74E6B5141017CB42962955441277444514D6B514181E4AB706A955441E4131BA34C6B5141DC71577871955441C363064C4C6B51413B2A3A6879955441B81E859B566B5141D7A3708D79955441713D0A375F6B5141000000A079955441B81E850B696B51415C8FC2D579955441000000C06D6B5141CDCCCCDC79955441AE47E17A6F6B514148E17AC479955441F6285C1F766B51417B14AED75B955441000000507C6B5141333333F33F955441EC51B80E816B5141295C8F922A9554418FC2F5B8916B5141713D0A072D95544194F37476916B5141B3D1AA482B955441BACEC0B5926B5141CA02072C2095544125356D8B956B514189FE121D07955441821A74A8956B51415FF88FF50495544130E1492C996B51411A44E5BBF9945441BC2242419D6B514144797955EB94544106AEA2D79E6B514170D75792E6945441EB53FC50A06B5141FE1A3DECE19454411485B660A36B5141DA41DEF1D7945441EA510F0CA96B5141C8EF49ABC49454413D0AD7939F6B5141F6285C0FC19454416402C07A946B51418C9051C5BC94544148E17A04906B514133333313BB9454417B14AE27756B514133333333AF945441D7A370BD746B514148E17A34C594544152B81E05746B5141D7A3701DE194544133333383736B5141666666961595544153AE47114E6B5141981A858B059554410103000000010000000B000000A42909044E6B5141F3BC574C03955441402DFC034E6B5141B5B6D74403955441972311F25A6B5141B3FB5DC608955441B81E859B726B5141B81E85DB1295544110FE1ACB726B51414A647F3AFF945441C0166EE4726B51414A6838C8F4945441A4380215736B5141C4D350BEE09454411F85EBE14C6B5141C3F5289CD1945441666666664D6B5141EC51B84EE8945441BB0AD7034E6B5141E110D74303955441A42909044E6B5141F3BC574C03955441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000F6285CEFAC6B5141E17A144EB9945441AE47E18AA26B514185EB51B8B594544133333303976B5141D7A370ADB1945441D7A3701D946B514100000070B0945441333333C3916B5141713D0A47B69454419A9999C9806B5141D7A370FDAE94544100000040756B5141E17A143EAA9454417B14AE27756B514133333333AF945441D30C8A20766B51411A5536A1AF945441AE4F3378776B51415C182239B0945441AA96D99C7A6B5141B368D79CB19454418C23EF6F806B514100CAFF2FB49454411BAFB397826B514163BFEA23B5945441126CA716846B5141940535CDB5945441F562D27E846B5141079541FBB5945441A7365E28876B5141306D8B28B79454411C5E241E896B51418AA65C06B89454417E9F2E638C6B51410D916378B9945441852A25938D6B514186BCC2FEB99454418F1DD65D8F6B5141BB5288C9BA945441737E4EC28F6B5141136EF2F5BA9454411A8AF583906B5141ED4C4F41BB9454414B6D9134926B514180CD68E7BB94544163F45F66936B5141BA50485CBC9454412CAA81C2936B51419B0A4C7FBC94544183ADD4BC946B5141999EDBDEBC9454413E05A000956B514141370FF9BC945441CDC0FAD7956B514158784A4CBD945441C2F2301E966B5141833E6D67BD945441509932E8966B51411ED87FB5BD945441AE09A1B7986B514178EF9B68BE9454410C38A358996B51410F2FD6A6BE9454415EB0FB149A6B5141312CA1EFBE945441C0EB8C959A6B5141BCAC5121BF94544103B7AD289D6B5141B1131020C09454415909F1F19D6B5141111ED96DC0945441ABB2AA559F6B5141C9E090F5C0945441ED510F0CA96B5141C3EF49ABC494544157C0A47AA96B5141EC6FE6CFC4945441C3F528BCA96B51415C8FC2F5C3945441F6285CEFAC6B5141E17A144EB9945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978257 - 984038
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000005000000D5000000C4D8C356FE775041627A8678330F55414487048DFE775041F5884BDF320F5541D03CC8990C7850413B304422340F554154F324A4107850419AA5CF2E330F5541500961D11678504149C817D42E0F5541A9E7954A1678504103DFE1E12D0F5541EA7DDD1517785041749FF3332B0F55411D7C3A62187850418E20B80B2B0F55419AFFBC4C1B7850412D9E30592D0F5541893829421D7850419797151E2E0F5541EB7693551D7850419C45F7832F0F5541B342F02D21785041825278662F0F55419C68DD0C2478504112EA584E2F0F55418CAC2B89277850415E1DF4672E0F55416501EEEE27785041085F50C72E0F5541AEB1D1B12D78504190D39F912D0F554142E862872D785041E5961C7B2C0F55415077B59A2A78504129D837252A0F55418B679682287850411F41FBDD290F5541E02135D1287850415151AFF5270F5541C64EDB322C78504113166C70270F554182714FE92E7850418E59B6FF240F5541990A33692C7850415937981A210F5541DCB7DCB92778504153A04743210F5541D9DB79762778504199E9E651200F5541775AA75E2A78504150B58EB01F0F55417CCFEB5F2A7850413512BA921E0F5541B300562825785041F8F0D5EF1D0F554152A927852A785041432335F81C0F5541E5BBEDE7347850413B1A0727180F55417ED89EC33378504165AC93460F0F5541466B5A3132785041A8DB00AE080F554185A7C2D63178504108DB1B4A050F554125D6F92134785041D9ECCA36020F5541A4810A2C357850411774CCF3FD0E554175459FCE32785041264B928DFC0E554185FD2A55337850416303B122F90E55411B0ECFC32D7850418CE974E6F40E55416C410C502C785041FA230ED4F00E554149C853D22D7850414B195F57EE0E5541A4EAD1FB2B785041141D0D25EA0E5541EC5D6C822B785041BA9D7F2BE40E5541CAC9BC062C785041CCE9F8CFE20E55416B13C4CB2E785041C715950AE10E554143E32A0F31785041EB087BD1DA0E5541F3970EB42E7850416099F1FAD40E554100D54BE32D7850415160E6C6D00E554199EB1BDC2F7850413EF83FECCA0E5541C1F5F4AF2E785041F6E69EE6BD0E5541E57145992B78504137F37175BC0E554125EB706B27785041C60CFB65B10E554149292C941F78504177B2E502A90E5541392E401C24785041465606B2A60E5541582C533F247850416B5FA314A50E554131A62CF6207850419C1A26B19C0E55418B2194261B785041FD432106A00E554123DE171416785041D32CD21FA20E55414AD2B7CD14785041D1D1E601A50E55419115554E0F7850411AA84898A60E5541EE6A64930E785041CC229AF7A90E5541A7DC50AB0A78504139145500AE0E5541D58EC907037850413D9D8A68B10E5541E05BE076FF775041AAEEF621B40E55414562C6E9F677504188FC6DF7B50E55416C719175EF7750411994442BB40E55416F9D418FEE775041258B4556B40E5541BD78B758E6775041DDA7574FB50E55412B99EBD4E37750412D80464BB50E554147EE637DDD7750419299C768B40E5541A94A1F20D4775041AD446A25B40E5541FBEFDC14D17750414C159093B40E5541BCE405FACE7750412A5795EFB40E5541AEA6E1E8CA775041BE934125B40E5541B2176508C6775041F0015168B40E5541DC9B1F85BF775041C337A42BB50E554116FDBEDFB5775041C6B2EE30B70E554126AD5500AA775041CA8E0B88B70E5541D55DD521A2775041594D388BB70E5541B371ED29A07750414F387DC7B70E55419EE30AFCA1775041412D46AFBA0E5541080E1E13A4775041583BA78FBE0E55413C5B3654A777504167674DD7BD0E554115F78496AA77504108F68C4DBE0E554180E18B6DAB77504110D05865C10E5541535AFF2DAF7750416734E6DCC20E5541C7D41D20AF775041F775BF9AC40E5541D79C4B91AD7750415922A382C50E554174D5784DB07750416C5DCB70CC0E55416F90DC1CB5775041CC7CE6F4D60E55414CAFC70EB77750418B042E9EDA0E5541A719770FC37750413699CC31E80E554133A0C17FC6775041FCC2EDE2E60E5541130C4656CC775041CB2B19D0E20E5541B3944DA7D0775041B7FF14A0DD0E55410434D952C97750419B8331D8CC0E5541BD4DC37FC9775041191773BFCC0E554176860A4FC97750418DC9E84BCC0E554106E990D4C9775041C7CC4D3ECC0E5541C3F15D50C97750418E2248E4C90E554173431709CB7750413F4822FEC70E5541B50B57DCD077504105D67B9DC70E554133CA8E75D3775041B8AB389FC70E554173280586D57750417DBF26A7CA0E5541145FCAFBD77750416B394271CA0E5541861FFB28D8775041D0E6231DC80E5541DB5031FDD977504143784F15C80E5541715FC17EDA77504187C30E53CA0E5541F73278F4E9775041D3DAF2B9C80E55410590711AEC7750413BB120D7C70E5541C131D3F3EC7750410D2A5C6EC80E5541A298DBDFFC775041F3A64795C60E5541A1EB0AC0FC775041195226D8C40E55415B2005A000785041BD25901FC40E554157209FC9037850417B2537A8C70E5541147121C006785041DFEBBBA0C70E5541252C60B107785041D0AB28E9CC0E5541E1381B990A7850414F268B77CC0E5541E593FA460D785041EE7D45D2CD0E5541F1D639B81078504137EA199ECD0E5541BE85B57F1178504165C97992CE0E5541C67B82AA10785041284993B0D20E55417693F16613785041EFE13586D30E5541B533905614785041E424BDABD10E5541F40372D115785041D63A52E6D00E5541A00EB7E917785041269CCA0ED10E5541E7F01CF41A785041F973BE9DCF0E5541D036CA191E785041CC8CEB88D10E55412F0FA1611E78504191D95383D40E55412C518B631F7850419D310A44D20E5541002E50E920785041F06A39ECD10E5541B38BD2852178504113B76923D60E5541018629C320785041BCFD83DDD60E55410CF3D4851E785041A138BA22D60E5541F1FCF9551D7850411083B193D70E5541F52F078A1D7850411A65A459DB0E55412B8FA8F819785041200873B5E10E554164780BDB1778504195B33DF8E30E55418473597117785041820C702EE50E5541D1223AD71878504159475FD2E80E5541B70AC5741B7850417A7BE3DEE80E5541E70AC6001E785041170F8ED4EA0E5541BC5B17621F7850418EA83509EE0E5541672D81291F785041B6DE88E4EF0E5541063BF29C1C78504180FED2BDF10E554187E992201A7850418EB8FA48F20E55413DE263A71678504153B12F11F40E55414919485D107850411B39E015F40E5541F6FCFC4F0F785041ABE51464F70E5541E8823C1B0D78504175FB3680F80E55413D7341050C785041867497B0F60E5541F8D670A90A7850414126005BF50E5541DD597DFF0678504142152D4FF40E554132CE7A3905785041A61EB3A3F40E5541CDD79DAF047850419226BBEEF80E55416F3DF1FC04785041DE18864AFB0E55412B4C80C704785041DCBE6611FC0E5541DD6CFF8D05785041D4A5965EFD0E5541563005660678504131678F11FE0E5541893844F206785041B500299B000F5541F416F23C05785041DD06D667010F554122C00C3A04785041E79C4A1B010F55416765185703785041B553717FFF0E55412C90CBE303785041AC6177F3FD0E5541E1FEEF080578504114FD8854FD0E5541CD01C6C903785041611E3076FB0E5541D37833C702785041F04EFC1EFC0E5541991EDED200785041235CD46BFB0E55414E6F542D017850417C135C42010F5541968D374501785041E0F8B940070F55415ABCF5B80378504176440F69080F5541D9BACEA504785041BEA2593B060F5541301FDCAF087850413696CDCF060F55412ADF16B30978504162B7B217080F5541D04E9D6D0B785041FBB1C927080F554193AAAB660E78504133524CFD080F55410DAA2CE10F7850412232F2F5070F55417AA723570E7850417C8E1987050F55419DD11C1B0E785041AC659D25010F55412FC0FE7A0E785041C24A26E3FE0E55410F64F9C60F7850417C061881FE0E5541F6AF913A11785041E7425B29020F5541CF3C6D9713785041DD1F3552010F554128910C7415785041C6F9BCB1FF0E55418A6A9B6B177850412ED21B4DFF0E55410AAF70041C785041135996BA000F55416D8B55E71C78504196549648020F55412C058FC51D785041AF482711060F5541852DB0891D785041917A93B70A0F5541336399F21B78504159A2F7D30A0F55415625B4631A785041D7D20EB30C0F55418C2B0F35177850411A1411AC0D0F5541F5292AC0157850412AD4879A0D0F5541F49835C313785041AAD7C8B10C0F5541B99514F0127850418B8DF72F0E0F5541E42D59191178504191D9B4580E0F55413C022CDB0A785041A48D80010C0F5541CE4FD2FF077850412E0418CC0B0F5541F858553006785041559097FA0B0F5541D6636EAF0478504121AD353F0B0F55410D0FC8A603785041790A9617090F5541741F88530178504104EFBDDA070F5541CE9942000178504146A5229A0A0F5541FCF4E74D01785041B25E337C120F55419A4FA9B702785041E1FA64C3170F554152C4B5A9057850413BB45DC5200F5541A666CBAEFE775041EDE82AE4200F5541C49C3622FE775041C71FE1E5220F5541C449F8F8FD77504127C59E79230F554109A8D1F9FD775041620A7D79230F55414D518138FE7750417DFAADCF250F5541C3AE0C60FE7750418D3F3D5E2A0F55417E5DD273FE77504120A5C2EB2D0F5541C4D8C356FE775041627A8678330F55410600000051C41A1BE777504145BB6BA7C30E55414F840152E6775041FE024D7BC30E554153CCC10FE77750418A20D0F3C20E554113C641A5EF775041FF89BAD3C10E5541BC21B029F0775041B2B64C71C20E554151C41A1BE777504145BB6BA7C30E55410E000000E8FD98FC027850419D1ABFBBBD0E55411F33CC4A007850419A754808BC0E55411D3F9260FF775041E0752C7DBA0E5541F82DA36401785041EDAB7C0FBA0E5541EC6260BF017850415B2CBF6DB80E5541D3840EFB0B785041D2BCCEBDB30E55414FD8F66313785041111C15ECB20E55416BE56FAF16785041585467B5B30E5541A34169811C78504179A4E8EAB80E55411B6927AD1A7850414E5F4FD1BB0E554107CA105E0B7850410F7101A4BE0E5541078622B509785041F561E246BB0E5541234BA4AB0678504196732DF4BC0E5541E8FD98FC027850419D1ABFBBBD0E55410B000000D160F0A921785041D061BC20BC0E55411AF14FB82278504194F154D1B90E55410B3F3E9E247850410727A0FAB60E5541C3C7521527785041859EC5BAB50E55419D747081277850419ABB0E90B60E5541F3D179122578504118271BB3B80E55419AF5F76E28785041BD636127BB0E5541EF72F01E287850419D154BFFBC0E5541F69E67B323785041321973CCBC0E554130E07ECC23785041C4F7361DBE0E5541D160F0A921785041D061BC20BC0E554105000000DC252AF9E3775041BC7390D9BF0E55410C012382E4775041687BF040BF0E5541CDEA1D5EE77750410F500E40BD0E5541ADE1AD89E8775041F3F3A39DBF0E5541DC252AF9E3775041BC7390D9BF0E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000027B7154B0178504127DEDF32120F5541E6B5FD1401785041AF8294B6100F55414232BAEC007850410416AE060B0F5541BE59284C01785041CBBA0044070F5541968D374501785041E0F8B940070F55414E6F542D017850417C135C42010F554168405D2101785041BA11AD7C000F55414DC9628900785041E6D8913BFC0E5541B982701AFF775041F74B1531FC0E5541A2265DC7FD7750412E5F06D8FC0E5541E47A834EFC7750418EBBD66FFE0E5541B6FDCC35FB775041FA0404A3000F5541B4D02553FA775041E721BE42040F5541A0D0C5B3F977504158C56BBE0A0F55419C233167FA7750411040262A120F554110E1886CFC77504161EBC91B170F5541939207BCFE77504119F69A971B0F5541C62453A200785041830FD370200F5541B9EA1B66057850417BA2BB79200F554128B4C72E03785041B657C16F190F554179CC63A2017850415838A798140F554116B6235E01785041DB8BD5B8120F5541FCF4E74D01785041B25E337C120F554127B7154B0178504127DEDF32120F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983391 - 708836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000980000009A9999B9A6165141EC51B84E8B2C5541E17A14AEAD165141713D0A778C2C55418B808A82B2165141110D53568D2C55417916AD0FB41651411808A32D8B2C55419DC64B3EB6165141CAA4E9448B2C5541500F3AE1B6165141555B1CBF8B2C55410E2EFCC9B7165141E1E7227F8C2C554148E17AB4B7165141E17A144E8E2C55419A9999F9B9165141F6285C2F962C554148E17A54BC165141EC51B89E9D2C5541DB5E7FD1BE165141DB762F8C9D2C5541DF2845BFC116514116CEFF1A9E2C5541B81E856BC21651413D0AD793A12C5541B2F050C8C516514173DA166FA02C55416180353CCC16514194F9E0E59E2C5541B46977ABCB165141B71DB0209E2C5541FD6ED491CA1651414C70C48D9A2C554118C49CF4C91651417A91A251982C5541E8B8AA3BC91651414758D20A972C55413D095BDCC716514153845E05942C5541E09AE07AC7165141D3BF02B4922C55415302102CC7165141D6BB5A3D912C55411A439CEFC61651412A1D81D88F2C55411CDD95F3C6165141E660AE0A8F2C55414EB5A52FC61651417248A16A8E2C554157B1AF4AC51651417784FC078D2C5541F235EB5EC41651419EE4D1288B2C55412A0FA0BBC316514194B5505E8A2C5541BD7F7BECC21651419FA7D926892C55413BDC8469C2165141FCBB1FF3872C5541EEB0628EC1165141FF54206F852C5541729475ACC1165141F1991DEC842C5541E39123C1C1165141BF4A2C7A832C55415EFC93E9C116514139DC6DAB822C55414147F7D9C11651416DFDC45B812C5541FDBF2B9EC11651410C042B5D802C55419660D83BC11651415019AA9F7F2C554113A964A6C0165141CB70F9A47E2C55416FE6DAC4BE1651414EAAE6907B2C554113E24145BD165141450B1FDD782C554150480BABBB16514179737B2C752C5541C71AE84BB9165141DAD70A5E6F2C5541F8709C45B5165141A78B5DBF6B2C5541B7E7C857B4165141C617534E6A2C554199ABBFDBAB1651411770638E6B2C55415CAEDA1CA8165141B434C5D66A2C55415F7307C9A71651413F51468B682C5541E27EF413AB16514110BCDC52682C5541359C9B18AE165141A48240BE672C554153C56A10B016514187099F78672C55418DA6ACDCB1165141F36EAD59672C5541F06B8A09B3165141FAE13576672C55417BAB6627B416514147C47E65672C554189A934D3B516514162E1C79F672C554173E45052B716514136A60AF8672C5541787E1D81B9165141A6935DDB682C5541097139AABA165141A9B0FDA3692C5541B2981D3EBB16514116D9E50B6A2C554199CAE745BC1651416CB416246B2C5541CFF8EC79BD165141AFA5C4376C2C55419144000BBE165141E0398A896D2C5541B363189FBE165141D99CB9896E2C554160FBDE4DBF165141DBE169ED6F2C5541736FE3CEBF165141D8A97FD5702C55417FC6724AC0165141DEED7AE5712C55415E8664D7C0165141D9919EF3722C55414267778AC1165141AED2C011742C5541B3BE7713C2165141625F3395752C5541E2317582C2165141F439DB3C762C554170ABD1B2C3165141BA52597A782C554144C009E8C31651417E685F047A2C5541511A421FC416514113711A127B2C554170EC65D1C4165141B4265CA17C2C5541AE47E19AC5165141CDCCCCDC7C2C5541EC51B8AEC8165141CDCCCC7C7C2C554152B81E15C7165141EC51B83E792C5541CA2A3531C61651417465E11F762C554189F891B0C5165141AA32C47C752C5541792CB5BAC5165141A4995D1D742C5541BE1BE8B0C5165141D4417A1A732C554102F7F9D6C61651411CD55A39712C55413E8C5D03C51651414C2DB56C6F2C55411B16C6B2C4165141023A40D56E2C55410FF9830AC3165141EF2184DD6C2C5541E2675B0BC3165141FE0C35426C2C5541F6EDCF2EC316514108FAB3446B2C55418D1FA379C2165141136FBA96682C5541C6970416C21651414033F703682C554116EC44F3C0165141F8D2E22F672C5541DD82FDB9BD165141C1987922652C5541B7459D72BC16514181A19315652C5541C6B3D284B81651415B6EC9C8642C554128DBD2C8B6165141CD228B36642C5541BCCF00F2B316514186D0BFF4642C554102AC7CF1B2165141F8E607D2642C5541BA8B44A9B0165141EEF50F66652C5541BD7ED991AF16514128A8FB4E652C55413FEB73D0AD1651411FACB153652C5541B854179AAD165141CAFE32FB642C5541B1B07793AA165141BB348592642C554119B9A6CBA71651416A1C1225652C5541111507C5A41651414462A8F1662C554197B191CEA2165141F3493584672C5541ADA14D99A0165141E47F871B672C55413064EF679D1651415FF96CD0662C554114AE47219D1651419A9999E9662C5541B83D10E09A1651411654682C662C55413A88E8D29A1651413906D529662C5541B573F48198165141BDF81221652C5541DDE6584B98165141048B3A12652C55414CD3B01F97165141C595C733652C5541E7CEAAF695165141F031DE21652C5541EE6B7BE8941651412BD46515652C55414CFADBAA9316514127A8FB4E652C5541924A293590165141D732600D652C55412CD285458F1651415ABCAE39652C5541DF0E571E8D165141FBF4F782642C5541082F65588A165141489CBCAC632C554125BB5AE788165141097BB48D622C5541AE947B5F8616514167DC1723622C55411B58D62F86165141B07AEA3A622C5541B7A40B978516514119861A8B622C5541BEF61A55851651419097953B632C5541E5C128798516514197980CBA642C5541A2EC0E7D851651413119AE36682C5541A6BF30AD85165141F267D5C56A2C5541B3015CDA85165141509DF06B6D2C5541BB26ACDC861651418984FDC3732C55416D98762F87165141FEA06EB3732C5541295C8F228716514185EB51B8742C5541AE47E11A8716514152B81E85752C5541B81E85CB85165141B81E857B7B2C5541E17A14DE84165141713D0AB77F2C55413D0AD7138316514114AE4741862C55419A9999E9811651418FC2F5288A2C5541713D0A77811651419A9999A98B2C554152B81ED58D165141C3F5281C8C2C554148E17AE4941651415C8FC2058C2C554185EB51C89B165141333333E38B2C5541E17A14BEA0165141F6285C3F8B2C5541B81E851BA01651417B14AEE7882C5541C3F5283CA0165141CDCCCCCC862C554185EB5128A11651415C8FC255852C55410AD7A380A216514185EB5188842C554114AE47E1A31651417B14AE47842C5541C3F5284CA51651410AD7A380842C5541713D0A77A6165141B81E855B852C554114AE4731A7165141295C8F62862C5541000000A0A7165141CDCCCCAC872C55419A9999B9A71651417B14AED7882C554185EB5168A716514114AE47218A2C55419A9999B9A6165141EC51B84E8B2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000DF0000009A99997997165141000000D0572C55418FC2F52896165141AE47E1BA572C5541713D0A27941651418FC2F578572C55418FC2F56892165141AE47E1CA562C554152B81ED590165141D7A3709D592C55418FC2F5D88E1651410AD7A3E05B2C5541CDCCCC7C8D165141295C8F825B2C5541D7A3706D8C16514185EB51185C2C5541A4703D1A8A16514185EB51085E2C55417B14AE77871651413D0AD7035C2C55410AD7A35085165141666666A6582C5541C3F528BC82165141A4703DFA552C5541666666E67F165141713D0A074F2C5541F6285C2F8016514185EB51984B2C5541CDCCCCEC8116514114AE4711472C5541D7A3702D89165141B81E85FB482C5541F6285CEF8816514185EB5148462C5541EC51B8EE88165141666666E6422C5541D7A3702D89165141A4703DEA402C55415C8FC28589165141AE47E19A3F2C55410AD7A3408A16514185EB51D83D2C5541AE47E19A8B165141C3F528EC3A2C5541000000508D1651419A999969372C55417B14AE078F165141E17A148E342C55410AD7A390901651417B14AEA7322C5541B81E859B91165141B81E85BB312C5541A4703D8A93165141EC51B86E302C5541EC51B88E95165141AE47E13A2F2C55416666665699165141E17A147E2D2C5541CDCCCCEC9C1651418FC2F5782B2C55417B14AEE79B165141713D0AE72B2C5541EC51B83E96165141D7A3702D2E2C55417B14AE3794165141F6285C1F2F2C554114AE470192165141000000E02F2C554114AE47818E1651413D0AD7B3302C5541E17A14BE8C16514100000040312C55415C8FC2F58B165141D7A370AD312C5541B81E859B8A16514185EB5108332C5541B81E858B88165141EC51B8AE352C554133333303861651411F85EB21382C55411F85EB81841651411F85EBE1392C5541295C8F3284165141713D0A973B2C5541A4703DCA83165141333333933D2C5541A4703D6A82165141E17A141E412C554185EB51888116514166666696432C55410AD7A3A079165141713D0A37402C554152B81E057316514114AE47B13D2C5541713D0A4771165141666666063D2C5541E17A145E71165141E17A14CE3D2C5541F6285C9F711651419A9999C93E2C5541E17A145E711651410AD7A3A03F2C554100000040711651413D0AD7B3402C5541E17A145E71165141713D0A97412C5541333333F371165141000000B0422C5541A4703DFA7216514148E17A64442C55415C8FC2C573165141713D0A37462C554148E17AE474165141C3F5281C492C5541C3F5282C75165141333333534A2C5541EC51B80E75165141C3F528CC4B2C5541D7A3700D74165141CDCCCC2C4D2C5541CDCCCC4C721651415C8FC2754E2C55411F85EBF17016514114AE47414F2C5541EC51B83E70165141E17A141E502C55418FC2F5D86F165141F6285C7F512C5541713D0A976F165141CDCCCCBC532C5541333333D36F16514114AE47A1552C554148E17A4470165141C3F528CC562C55419A99996971165141CDCCCC5C582C5541EC51B88E7216514114AE47115A2C554185EB514873165141E17A147E5B2C55417B14AE7773165141295C8F325D2C5541C3F528DC72165141AE47E10A5F2C55410AD7A30072165141713D0A67612C55415C8FC2F570165141AE47E1BA622C55411F85EBE170165141A4703D7A632C554114AE47E1711651415C8FC275642C55417B14AE4773165141CDCCCC7C652C5541CDCCCC2C751651417B14AE47662C554152B81E35761651413D0AD783662C5541CDCCCC2C79165141D7A3707D662C554185EB51187C165141B81E856B662C55417B14AE677E1651415C8FC235662C5541B81E85CB7F165141CDCCCC7C652C554148E17A6481165141B81E851B642C5541A4703DEA8216514100000080622C5541295C8F528416514185EB5188612C5541F6285C5F861651417B14AED7602C55413D0AD7D3871651413D0AD7E3602C554152B81E5589165141295C8F62612C554148E17A648A165141CDCCCC0C622C55410AD7A3508C165141F6285C4F632C554148E17A648D165141B81E857B632C55417B14AED78E16514148E17AB4632C5541E17A14CE90165141E17A149E642C5541713D0A47921651413D0AD7E3642C55419A9999699416514148E17AA4642C55415C8FC2F595165141B81E858B642C5541D7A370CD97165141000000F0642C55413D0AD7E39916514114AE4781652C5541333333539C165141000000E0652C5541D7A3709D9E165141C3F5280C662C5541B81E856BA1165141713D0A97662C55410AD7A3A0A2165141666666B6662C5541666666D6A3165141D7A3707D662C554166666606A51651418FC2F5D8652C5541EC51B8EEA6165141333333A3642C5541E17A149EA8165141295C8FD2632C55418FC2F518AA165141C3F528CC632C5541713D0A47AD16514152B81E05642C554100000020AF16514114AE4731642C5541713D0AE7B016514152B81E25642C55417B14AEC7B21651419A9999B9632C5541F6285C9FB5165141D7A3705D622C554166666666B7165141EC51B8FE612C554148E17A94BA165141AE47E10A622C554152B81EC5BC1651413D0AD723622C5541E17A143EBE16514185EB51C8622C554185EB5108C01651418FC2F5B8632C554185EB5108C21651415C8FC285652C554114AE4791C31651410AD7A300672C554100000050C4165141EC51B8AE682C5541F6285CBFC4165141295C8F526B2C5541F6285C3FC5165141A4703DFA6C2C55418FC2F518C6165141F6285C2F6E2C554185EB5178C7165141C3F5282C6F2C554148E17AD4C71651415C8FC235702C5541000000C0C7165141A4703D2A722C55411F85EBA1C7165141713D0A07732C55411F85EBC1C7165141D7A370CD732C55418FC2F558C8165141EC51B8EE742C5541000000D0C916514152B81E25772C5541AE47E1EACA16514152B81E95782C554152B81EA5CC165141000000B07A2C5541C3F5282CCE165141F6285C7F7D2C554148E17A74CF165141C3F5281C802C55413D0AD7D3D016514100000080822C55415C8FC2A5D11651417B14AEB7832C554114AE47C1D21651418FC2F588842C554148E17AC4D41651419A9999F9852C554152B81E35D6165141C3F528DC862C554152B81E95D6165141A4703DCA872C5541D7A3701DD71651413D0AD7D3892C5541F6285C4FD81651415C8FC2258D2C5541EC51B87ED8165141B81E85AB8D2C554100000070D91651415C8FC255902C5541E17A145EDA165141333333F3912C554114AE47A1DB1651411F85EBF1922C554114AE47B1DC165141D7A3700D942C5541295C8F22DD1651410AD7A3B0952C55413D0AD793DD165141333333A3972C554166666616DE16514152B81E85992C55419A9999A9DE16514185EB51289B2C554152B81EC5DF1651418FC2F5E89B2C55418FC2F568E01651415C8FC2659C2C5541295C8FB2E01651417B14AEE79C2C55419A9999C9E0165141E17A14AE9D2C5541713D0A47E01651413D0AD7639E2C55410AD7A320DF1651410AD7A3409F2C5541F6285C9FDD16514152B81EE59F2C5541713D0A07DC1651415C8FC2F59F2C5541295C8FA2DA165141CDCCCC5C9F2C5541EC51B8AED9165141D7A370AD9E2C5541E17A144ED9165141D7A370AD9E2C55417B14AE37D9165141333333139F2C55419A999909DA16514152B81E05A22C5541295C8FE2DA165141B81E85FBA32C554185EB5178DB165141333333E3A32C5541CDCCCC2CDF1651418FC2F548A32C5541AE47E1AAE11651418FC2F5E8A02C55411F85EBB1EC165141713D0A67962C554114AE4741F4165141000000708F2C554185EB5118F216514114AE47C18D2C5541D7A370DDEB165141295C8F728C2C5541713D0A77EB165141CDCCCCEC8E2C5541EC51B84EE7165141C3F5283C912C55411F85EBB1E31651415C8FC215932C5541295C8FB2E0165141D7A3705D8F2C554148E17A64D9165141713D0A97852C5541CDCCCC5CDB165141333333A3822C554114AE47F1E2165141D7A370DD812C5541D7A3700DED16514100000090832C55411F85EBD1EE16514114AE47717F2C55418FC2F5F8F016514185EB51087D2C55413D0AD7A3F3165141C3F528DC7C2C55410AD7A350F51651411F85EBB1762C5541295C8FA2F416514166666606742C5541AE47E1EAF21651418FC2F588702C55418FC2F5C8F11651419A9999996F2C554152B81EF5EC16514185EB5168752C55418FC2F588E41651417B14AE476D2C5541A4703D6AD81651410AD7A360612C5541CDCCCC0CCD165141AE47E1CA582C5541C3F5284CBC165141F6285CBF502C55419A999949B3165141295C8F424E2C5541B81E853BAD165141CDCCCC0C4D2C5541E17A149EAE1651410AD7A330502C554133333373B6165141333333C3512C5541713D0AC7BC165141CDCCCC5C542C5541C3F5283CC4165141E17A146E582C554152B81E35C916514185EB51985B2C5541F6285C0FCB16514148E17A545D2C554148E17AE4C9165141000000A05F2C554100000070C8165141A4703DDA622C5541A4703DBAC8165141F6285C3F632C5541D7A3707DCB16514133333303672C5541F6285C8FCC1651410AD7A3B0682C55415C8FC265CD165141EC51B8FE692C5541C3F528ECCE1651411F85EB416D2C554114AE4711D01651419A999969702C55410AD7A300D11651411F85EBB1712C5541B81E854BD01651418FC2F588732C5541EC51B87ECC1651410AD7A3506E2C5541AE47E1AAC91651419A9999A96A2C55418FC2F5F8C7165141F6285CAF682C5541C3F528FCC5165141295C8FB2662C5541B81E85BBC11651418FC2F5F8622C5541A4703DAABD165141C3F528FC602C5541C3F5288CB916514148E17AF45F2C554114AE4791B1165141AE47E1AA602C554114AE4751A2165141B81E851B612C55415C8FC2559F1651417B14AE575F2C5541B81E853B961651413D0AD7C35F2C55419A99997997165141000000D0572C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983391 - 1414443
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000980000009A9999B9A6165141EC51B84E8B2C5541E17A14AEAD165141713D0A778C2C55418B808A82B2165141110D53568D2C55417916AD0FB41651411808A32D8B2C55419DC64B3EB6165141CAA4E9448B2C5541500F3AE1B6165141555B1CBF8B2C55410E2EFCC9B7165141E1E7227F8C2C554148E17AB4B7165141E17A144E8E2C55419A9999F9B9165141F6285C2F962C554148E17A54BC165141EC51B89E9D2C5541DB5E7FD1BE165141DB762F8C9D2C5541DF2845BFC116514116CEFF1A9E2C5541B81E856BC21651413D0AD793A12C5541B2F050C8C516514173DA166FA02C55416180353CCC16514194F9E0E59E2C5541B46977ABCB165141B71DB0209E2C5541FD6ED491CA1651414C70C48D9A2C554118C49CF4C91651417A91A251982C5541E8B8AA3BC91651414758D20A972C55413D095BDCC716514153845E05942C5541E09AE07AC7165141D3BF02B4922C55415302102CC7165141D6BB5A3D912C55411A439CEFC61651412A1D81D88F2C55411CDD95F3C6165141E660AE0A8F2C55414EB5A52FC61651417248A16A8E2C554157B1AF4AC51651417784FC078D2C5541F235EB5EC41651419EE4D1288B2C55412A0FA0BBC316514194B5505E8A2C5541BD7F7BECC21651419FA7D926892C55413BDC8469C2165141FCBB1FF3872C5541EEB0628EC1165141FF54206F852C5541729475ACC1165141F1991DEC842C5541E39123C1C1165141BF4A2C7A832C55415EFC93E9C116514139DC6DAB822C55414147F7D9C11651416DFDC45B812C5541FDBF2B9EC11651410C042B5D802C55419660D83BC11651415019AA9F7F2C554113A964A6C0165141CB70F9A47E2C55416FE6DAC4BE1651414EAAE6907B2C554113E24145BD165141450B1FDD782C554150480BABBB16514179737B2C752C5541C71AE84BB9165141DAD70A5E6F2C5541F8709C45B5165141A78B5DBF6B2C5541B7E7C857B4165141C617534E6A2C554199ABBFDBAB1651411770638E6B2C55415CAEDA1CA8165141B434C5D66A2C55415F7307C9A71651413F51468B682C5541E27EF413AB16514110BCDC52682C5541359C9B18AE165141A48240BE672C554153C56A10B016514187099F78672C55418DA6ACDCB1165141F36EAD59672C5541F06B8A09B3165141FAE13576672C55417BAB6627B416514147C47E65672C554189A934D3B516514162E1C79F672C554173E45052B716514136A60AF8672C5541787E1D81B9165141A6935DDB682C5541097139AABA165141A9B0FDA3692C5541B2981D3EBB16514116D9E50B6A2C554199CAE745BC1651416CB416246B2C5541CFF8EC79BD165141AFA5C4376C2C55419144000BBE165141E0398A896D2C5541B363189FBE165141D99CB9896E2C554160FBDE4DBF165141DBE169ED6F2C5541736FE3CEBF165141D8A97FD5702C55417FC6724AC0165141DEED7AE5712C55415E8664D7C0165141D9919EF3722C55414267778AC1165141AED2C011742C5541B3BE7713C2165141625F3395752C5541E2317582C2165141F439DB3C762C554170ABD1B2C3165141BA52597A782C554144C009E8C31651417E685F047A2C5541511A421FC416514113711A127B2C554170EC65D1C4165141B4265CA17C2C5541AE47E19AC5165141CDCCCCDC7C2C5541EC51B8AEC8165141CDCCCC7C7C2C554152B81E15C7165141EC51B83E792C5541CA2A3531C61651417465E11F762C554189F891B0C5165141AA32C47C752C5541792CB5BAC5165141A4995D1D742C5541BE1BE8B0C5165141D4417A1A732C554102F7F9D6C61651411CD55A39712C55413E8C5D03C51651414C2DB56C6F2C55411B16C6B2C4165141023A40D56E2C55410FF9830AC3165141EF2184DD6C2C5541E2675B0BC3165141FE0C35426C2C5541F6EDCF2EC316514108FAB3446B2C55418D1FA379C2165141136FBA96682C5541C6970416C21651414033F703682C554116EC44F3C0165141F8D2E22F672C5541DD82FDB9BD165141C1987922652C5541B7459D72BC16514181A19315652C5541C6B3D284B81651415B6EC9C8642C554128DBD2C8B6165141CD228B36642C5541BCCF00F2B316514186D0BFF4642C554102AC7CF1B2165141F8E607D2642C5541BA8B44A9B0165141EEF50F66652C5541BD7ED991AF16514128A8FB4E652C55413FEB73D0AD1651411FACB153652C5541B854179AAD165141CAFE32FB642C5541B1B07793AA165141BB348592642C554119B9A6CBA71651416A1C1225652C5541111507C5A41651414462A8F1662C554197B191CEA2165141F3493584672C5541ADA14D99A0165141E47F871B672C55413064EF679D1651415FF96CD0662C554114AE47219D1651419A9999E9662C5541B83D10E09A1651411654682C662C55413A88E8D29A1651413906D529662C5541B573F48198165141BDF81221652C5541DDE6584B98165141048B3A12652C55414CD3B01F97165141C595C733652C5541E7CEAAF695165141F031DE21652C5541EE6B7BE8941651412BD46515652C55414CFADBAA9316514127A8FB4E652C5541924A293590165141D732600D652C55412CD285458F1651415ABCAE39652C5541DF0E571E8D165141FBF4F782642C5541082F65588A165141489CBCAC632C554125BB5AE788165141097BB48D622C5541AE947B5F8616514167DC1723622C55411B58D62F86165141B07AEA3A622C5541B7A40B978516514119861A8B622C5541BEF61A55851651419097953B632C5541E5C128798516514197980CBA642C5541A2EC0E7D851651413119AE36682C5541A6BF30AD85165141F267D5C56A2C5541B3015CDA85165141509DF06B6D2C5541BB26ACDC861651418984FDC3732C55416D98762F87165141FEA06EB3732C5541295C8F228716514185EB51B8742C5541AE47E11A8716514152B81E85752C5541B81E85CB85165141B81E857B7B2C5541E17A14DE84165141713D0AB77F2C55413D0AD7138316514114AE4741862C55419A9999E9811651418FC2F5288A2C5541713D0A77811651419A9999A98B2C554152B81ED58D165141C3F5281C8C2C554148E17AE4941651415C8FC2058C2C554185EB51C89B165141333333E38B2C5541E17A14BEA0165141F6285C3F8B2C5541B81E851BA01651417B14AEE7882C5541C3F5283CA0165141CDCCCCCC862C554185EB5128A11651415C8FC255852C55410AD7A380A216514185EB5188842C554114AE47E1A31651417B14AE47842C5541C3F5284CA51651410AD7A380842C5541713D0A77A6165141B81E855B852C554114AE4731A7165141295C8F62862C5541000000A0A7165141CDCCCCAC872C55419A9999B9A71651417B14AED7882C554185EB5168A716514114AE47218A2C55419A9999B9A6165141EC51B84E8B2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000DF0000009A99997997165141000000D0572C55418FC2F52896165141AE47E1BA572C5541713D0A27941651418FC2F578572C55418FC2F56892165141AE47E1CA562C554152B81ED590165141D7A3709D592C55418FC2F5D88E1651410AD7A3E05B2C5541CDCCCC7C8D165141295C8F825B2C5541D7A3706D8C16514185EB51185C2C5541A4703D1A8A16514185EB51085E2C55417B14AE77871651413D0AD7035C2C55410AD7A35085165141666666A6582C5541C3F528BC82165141A4703DFA552C5541666666E67F165141713D0A074F2C5541F6285C2F8016514185EB51984B2C5541CDCCCCEC8116514114AE4711472C5541D7A3702D89165141B81E85FB482C5541F6285CEF8816514185EB5148462C5541EC51B8EE88165141666666E6422C5541D7A3702D89165141A4703DEA402C55415C8FC28589165141AE47E19A3F2C55410AD7A3408A16514185EB51D83D2C5541AE47E19A8B165141C3F528EC3A2C5541000000508D1651419A999969372C55417B14AE078F165141E17A148E342C55410AD7A390901651417B14AEA7322C5541B81E859B91165141B81E85BB312C5541A4703D8A93165141EC51B86E302C5541EC51B88E95165141AE47E13A2F2C55416666665699165141E17A147E2D2C5541CDCCCCEC9C1651418FC2F5782B2C55417B14AEE79B165141713D0AE72B2C5541EC51B83E96165141D7A3702D2E2C55417B14AE3794165141F6285C1F2F2C554114AE470192165141000000E02F2C554114AE47818E1651413D0AD7B3302C5541E17A14BE8C16514100000040312C55415C8FC2F58B165141D7A370AD312C5541B81E859B8A16514185EB5108332C5541B81E858B88165141EC51B8AE352C554133333303861651411F85EB21382C55411F85EB81841651411F85EBE1392C5541295C8F3284165141713D0A973B2C5541A4703DCA83165141333333933D2C5541A4703D6A82165141E17A141E412C554185EB51888116514166666696432C55410AD7A3A079165141713D0A37402C554152B81E057316514114AE47B13D2C5541713D0A4771165141666666063D2C5541E17A145E71165141E17A14CE3D2C5541F6285C9F711651419A9999C93E2C5541E17A145E711651410AD7A3A03F2C554100000040711651413D0AD7B3402C5541E17A145E71165141713D0A97412C5541333333F371165141000000B0422C5541A4703DFA7216514148E17A64442C55415C8FC2C573165141713D0A37462C554148E17AE474165141C3F5281C492C5541C3F5282C75165141333333534A2C5541EC51B80E75165141C3F528CC4B2C5541D7A3700D74165141CDCCCC2C4D2C5541CDCCCC4C721651415C8FC2754E2C55411F85EBF17016514114AE47414F2C5541EC51B83E70165141E17A141E502C55418FC2F5D86F165141F6285C7F512C5541713D0A976F165141CDCCCCBC532C5541333333D36F16514114AE47A1552C554148E17A4470165141C3F528CC562C55419A99996971165141CDCCCC5C582C5541EC51B88E7216514114AE47115A2C554185EB514873165141E17A147E5B2C55417B14AE7773165141295C8F325D2C5541C3F528DC72165141AE47E10A5F2C55410AD7A30072165141713D0A67612C55415C8FC2F570165141AE47E1BA622C55411F85EBE170165141A4703D7A632C554114AE47E1711651415C8FC275642C55417B14AE4773165141CDCCCC7C652C5541CDCCCC2C751651417B14AE47662C554152B81E35761651413D0AD783662C5541CDCCCC2C79165141D7A3707D662C554185EB51187C165141B81E856B662C55417B14AE677E1651415C8FC235662C5541B81E85CB7F165141CDCCCC7C652C554148E17A6481165141B81E851B642C5541A4703DEA8216514100000080622C5541295C8F528416514185EB5188612C5541F6285C5F861651417B14AED7602C55413D0AD7D3871651413D0AD7E3602C554152B81E5589165141295C8F62612C554148E17A648A165141CDCCCC0C622C55410AD7A3508C165141F6285C4F632C554148E17A648D165141B81E857B632C55417B14AED78E16514148E17AB4632C5541E17A14CE90165141E17A149E642C5541713D0A47921651413D0AD7E3642C55419A9999699416514148E17AA4642C55415C8FC2F595165141B81E858B642C5541D7A370CD97165141000000F0642C55413D0AD7E39916514114AE4781652C5541333333539C165141000000E0652C5541D7A3709D9E165141C3F5280C662C5541B81E856BA1165141713D0A97662C55410AD7A3A0A2165141666666B6662C5541666666D6A3165141D7A3707D662C554166666606A51651418FC2F5D8652C5541EC51B8EEA6165141333333A3642C5541E17A149EA8165141295C8FD2632C55418FC2F518AA165141C3F528CC632C5541713D0A47AD16514152B81E05642C554100000020AF16514114AE4731642C5541713D0AE7B016514152B81E25642C55417B14AEC7B21651419A9999B9632C5541F6285C9FB5165141D7A3705D622C554166666666B7165141EC51B8FE612C554148E17A94BA165141AE47E10A622C554152B81EC5BC1651413D0AD723622C5541E17A143EBE16514185EB51C8622C554185EB5108C01651418FC2F5B8632C554185EB5108C21651415C8FC285652C554114AE4791C31651410AD7A300672C554100000050C4165141EC51B8AE682C5541F6285CBFC4165141295C8F526B2C5541F6285C3FC5165141A4703DFA6C2C55418FC2F518C6165141F6285C2F6E2C554185EB5178C7165141C3F5282C6F2C554148E17AD4C71651415C8FC235702C5541000000C0C7165141A4703D2A722C55411F85EBA1C7165141713D0A07732C55411F85EBC1C7165141D7A370CD732C55418FC2F558C8165141EC51B8EE742C5541000000D0C916514152B81E25772C5541AE47E1EACA16514152B81E95782C554152B81EA5CC165141000000B07A2C5541C3F5282CCE165141F6285C7F7D2C554148E17A74CF165141C3F5281C802C55413D0AD7D3D016514100000080822C55415C8FC2A5D11651417B14AEB7832C554114AE47C1D21651418FC2F588842C554148E17AC4D41651419A9999F9852C554152B81E35D6165141C3F528DC862C554152B81E95D6165141A4703DCA872C5541D7A3701DD71651413D0AD7D3892C5541F6285C4FD81651415C8FC2258D2C5541EC51B87ED8165141B81E85AB8D2C554100000070D91651415C8FC255902C5541E17A145EDA165141333333F3912C554114AE47A1DB1651411F85EBF1922C554114AE47B1DC165141D7A3700D942C5541295C8F22DD1651410AD7A3B0952C55413D0AD793DD165141333333A3972C554166666616DE16514152B81E85992C55419A9999A9DE16514185EB51289B2C554152B81EC5DF1651418FC2F5E89B2C55418FC2F568E01651415C8FC2659C2C5541295C8FB2E01651417B14AEE79C2C55419A9999C9E0165141E17A14AE9D2C5541713D0A47E01651413D0AD7639E2C55410AD7A320DF1651410AD7A3409F2C5541F6285C9FDD16514152B81EE59F2C5541713D0A07DC1651415C8FC2F59F2C5541295C8FA2DA165141CDCCCC5C9F2C5541EC51B8AED9165141D7A370AD9E2C5541E17A144ED9165141D7A370AD9E2C55417B14AE37D9165141333333139F2C55419A999909DA16514152B81E05A22C5541295C8FE2DA165141B81E85FBA32C554185EB5178DB165141333333E3A32C5541CDCCCC2CDF1651418FC2F548A32C5541AE47E1AAE11651418FC2F5E8A02C55411F85EBB1EC165141713D0A67962C554114AE4741F4165141000000708F2C554185EB5118F216514114AE47C18D2C5541D7A370DDEB165141295C8F728C2C5541713D0A77EB165141CDCCCCEC8E2C5541EC51B84EE7165141C3F5283C912C55411F85EBB1E31651415C8FC215932C5541295C8FB2E0165141D7A3705D8F2C554148E17A64D9165141713D0A97852C5541CDCCCC5CDB165141333333A3822C554114AE47F1E2165141D7A370DD812C5541D7A3700DED16514100000090832C55411F85EBD1EE16514114AE47717F2C55418FC2F5F8F016514185EB51087D2C55413D0AD7A3F3165141C3F528DC7C2C55410AD7A350F51651411F85EBB1762C5541295C8FA2F416514166666606742C5541AE47E1EAF21651418FC2F588702C55418FC2F5C8F11651419A9999996F2C554152B81EF5EC16514185EB5168752C55418FC2F588E41651417B14AE476D2C5541A4703D6AD81651410AD7A360612C5541CDCCCC0CCD165141AE47E1CA582C5541C3F5284CBC165141F6285CBF502C55419A999949B3165141295C8F424E2C5541B81E853BAD165141CDCCCC0C4D2C5541E17A149EAE1651410AD7A330502C554133333373B6165141333333C3512C5541713D0AC7BC165141CDCCCC5C542C5541C3F5283CC4165141E17A146E582C554152B81E35C916514185EB51985B2C5541F6285C0FCB16514148E17A545D2C554148E17AE4C9165141000000A05F2C554100000070C8165141A4703DDA622C5541A4703DBAC8165141F6285C3F632C5541D7A3707DCB16514133333303672C5541F6285C8FCC1651410AD7A3B0682C55415C8FC265CD165141EC51B8FE692C5541C3F528ECCE1651411F85EB416D2C554114AE4711D01651419A999969702C55410AD7A300D11651411F85EBB1712C5541B81E854BD01651418FC2F588732C5541EC51B87ECC1651410AD7A3506E2C5541AE47E1AAC91651419A9999A96A2C55418FC2F5F8C7165141F6285CAF682C5541C3F528FCC5165141295C8FB2662C5541B81E85BBC11651418FC2F5F8622C5541A4703DAABD165141C3F528FC602C5541C3F5288CB916514148E17AF45F2C554114AE4791B1165141AE47E1AA602C554114AE4751A2165141B81E851B612C55415C8FC2559F1651417B14AE575F2C5541B81E853B961651413D0AD7C35F2C55419A99997997165141000000D0572C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983391 - 3210130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000980000009A9999B9A6165141EC51B84E8B2C5541E17A14AEAD165141713D0A778C2C55418B808A82B2165141110D53568D2C55417916AD0FB41651411808A32D8B2C55419DC64B3EB6165141CAA4E9448B2C5541500F3AE1B6165141555B1CBF8B2C55410E2EFCC9B7165141E1E7227F8C2C554148E17AB4B7165141E17A144E8E2C55419A9999F9B9165141F6285C2F962C554148E17A54BC165141EC51B89E9D2C5541DB5E7FD1BE165141DB762F8C9D2C5541DF2845BFC116514116CEFF1A9E2C5541B81E856BC21651413D0AD793A12C5541B2F050C8C516514173DA166FA02C55416180353CCC16514194F9E0E59E2C5541B46977ABCB165141B71DB0209E2C5541FD6ED491CA1651414C70C48D9A2C554118C49CF4C91651417A91A251982C5541E8B8AA3BC91651414758D20A972C55413D095BDCC716514153845E05942C5541E09AE07AC7165141D3BF02B4922C55415302102CC7165141D6BB5A3D912C55411A439CEFC61651412A1D81D88F2C55411CDD95F3C6165141E660AE0A8F2C55414EB5A52FC61651417248A16A8E2C554157B1AF4AC51651417784FC078D2C5541F235EB5EC41651419EE4D1288B2C55412A0FA0BBC316514194B5505E8A2C5541BD7F7BECC21651419FA7D926892C55413BDC8469C2165141FCBB1FF3872C5541EEB0628EC1165141FF54206F852C5541729475ACC1165141F1991DEC842C5541E39123C1C1165141BF4A2C7A832C55415EFC93E9C116514139DC6DAB822C55414147F7D9C11651416DFDC45B812C5541FDBF2B9EC11651410C042B5D802C55419660D83BC11651415019AA9F7F2C554113A964A6C0165141CB70F9A47E2C55416FE6DAC4BE1651414EAAE6907B2C554113E24145BD165141450B1FDD782C554150480BABBB16514179737B2C752C5541C71AE84BB9165141DAD70A5E6F2C5541F8709C45B5165141A78B5DBF6B2C5541B7E7C857B4165141C617534E6A2C554199ABBFDBAB1651411770638E6B2C55415CAEDA1CA8165141B434C5D66A2C55415F7307C9A71651413F51468B682C5541E27EF413AB16514110BCDC52682C5541359C9B18AE165141A48240BE672C554153C56A10B016514187099F78672C55418DA6ACDCB1165141F36EAD59672C5541F06B8A09B3165141FAE13576672C55417BAB6627B416514147C47E65672C554189A934D3B516514162E1C79F672C554173E45052B716514136A60AF8672C5541787E1D81B9165141A6935DDB682C5541097139AABA165141A9B0FDA3692C5541B2981D3EBB16514116D9E50B6A2C554199CAE745BC1651416CB416246B2C5541CFF8EC79BD165141AFA5C4376C2C55419144000BBE165141E0398A896D2C5541B363189FBE165141D99CB9896E2C554160FBDE4DBF165141DBE169ED6F2C5541736FE3CEBF165141D8A97FD5702C55417FC6724AC0165141DEED7AE5712C55415E8664D7C0165141D9919EF3722C55414267778AC1165141AED2C011742C5541B3BE7713C2165141625F3395752C5541E2317582C2165141F439DB3C762C554170ABD1B2C3165141BA52597A782C554144C009E8C31651417E685F047A2C5541511A421FC416514113711A127B2C554170EC65D1C4165141B4265CA17C2C5541AE47E19AC5165141CDCCCCDC7C2C5541EC51B8AEC8165141CDCCCC7C7C2C554152B81E15C7165141EC51B83E792C5541CA2A3531C61651417465E11F762C554189F891B0C5165141AA32C47C752C5541792CB5BAC5165141A4995D1D742C5541BE1BE8B0C5165141D4417A1A732C554102F7F9D6C61651411CD55A39712C55413E8C5D03C51651414C2DB56C6F2C55411B16C6B2C4165141023A40D56E2C55410FF9830AC3165141EF2184DD6C2C5541E2675B0BC3165141FE0C35426C2C5541F6EDCF2EC316514108FAB3446B2C55418D1FA379C2165141136FBA96682C5541C6970416C21651414033F703682C554116EC44F3C0165141F8D2E22F672C5541DD82FDB9BD165141C1987922652C5541B7459D72BC16514181A19315652C5541C6B3D284B81651415B6EC9C8642C554128DBD2C8B6165141CD228B36642C5541BCCF00F2B316514186D0BFF4642C554102AC7CF1B2165141F8E607D2642C5541BA8B44A9B0165141EEF50F66652C5541BD7ED991AF16514128A8FB4E652C55413FEB73D0AD1651411FACB153652C5541B854179AAD165141CAFE32FB642C5541B1B07793AA165141BB348592642C554119B9A6CBA71651416A1C1225652C5541111507C5A41651414462A8F1662C554197B191CEA2165141F3493584672C5541ADA14D99A0165141E47F871B672C55413064EF679D1651415FF96CD0662C554114AE47219D1651419A9999E9662C5541B83D10E09A1651411654682C662C55413A88E8D29A1651413906D529662C5541B573F48198165141BDF81221652C5541DDE6584B98165141048B3A12652C55414CD3B01F97165141C595C733652C5541E7CEAAF695165141F031DE21652C5541EE6B7BE8941651412BD46515652C55414CFADBAA9316514127A8FB4E652C5541924A293590165141D732600D652C55412CD285458F1651415ABCAE39652C5541DF0E571E8D165141FBF4F782642C5541082F65588A165141489CBCAC632C554125BB5AE788165141097BB48D622C5541AE947B5F8616514167DC1723622C55411B58D62F86165141B07AEA3A622C5541B7A40B978516514119861A8B622C5541BEF61A55851651419097953B632C5541E5C128798516514197980CBA642C5541A2EC0E7D851651413119AE36682C5541A6BF30AD85165141F267D5C56A2C5541B3015CDA85165141509DF06B6D2C5541BB26ACDC861651418984FDC3732C55416D98762F87165141FEA06EB3732C5541295C8F228716514185EB51B8742C5541AE47E11A8716514152B81E85752C5541B81E85CB85165141B81E857B7B2C5541E17A14DE84165141713D0AB77F2C55413D0AD7138316514114AE4741862C55419A9999E9811651418FC2F5288A2C5541713D0A77811651419A9999A98B2C554152B81ED58D165141C3F5281C8C2C554148E17AE4941651415C8FC2058C2C554185EB51C89B165141333333E38B2C5541E17A14BEA0165141F6285C3F8B2C5541B81E851BA01651417B14AEE7882C5541C3F5283CA0165141CDCCCCCC862C554185EB5128A11651415C8FC255852C55410AD7A380A216514185EB5188842C554114AE47E1A31651417B14AE47842C5541C3F5284CA51651410AD7A380842C5541713D0A77A6165141B81E855B852C554114AE4731A7165141295C8F62862C5541000000A0A7165141CDCCCCAC872C55419A9999B9A71651417B14AED7882C554185EB5168A716514114AE47218A2C55419A9999B9A6165141EC51B84E8B2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000DF0000009A99997997165141000000D0572C55418FC2F52896165141AE47E1BA572C5541713D0A27941651418FC2F578572C55418FC2F56892165141AE47E1CA562C554152B81ED590165141D7A3709D592C55418FC2F5D88E1651410AD7A3E05B2C5541CDCCCC7C8D165141295C8F825B2C5541D7A3706D8C16514185EB51185C2C5541A4703D1A8A16514185EB51085E2C55417B14AE77871651413D0AD7035C2C55410AD7A35085165141666666A6582C5541C3F528BC82165141A4703DFA552C5541666666E67F165141713D0A074F2C5541F6285C2F8016514185EB51984B2C5541CDCCCCEC8116514114AE4711472C5541D7A3702D89165141B81E85FB482C5541F6285CEF8816514185EB5148462C5541EC51B8EE88165141666666E6422C5541D7A3702D89165141A4703DEA402C55415C8FC28589165141AE47E19A3F2C55410AD7A3408A16514185EB51D83D2C5541AE47E19A8B165141C3F528EC3A2C5541000000508D1651419A999969372C55417B14AE078F165141E17A148E342C55410AD7A390901651417B14AEA7322C5541B81E859B91165141B81E85BB312C5541A4703D8A93165141EC51B86E302C5541EC51B88E95165141AE47E13A2F2C55416666665699165141E17A147E2D2C5541CDCCCCEC9C1651418FC2F5782B2C55417B14AEE79B165141713D0AE72B2C5541EC51B83E96165141D7A3702D2E2C55417B14AE3794165141F6285C1F2F2C554114AE470192165141000000E02F2C554114AE47818E1651413D0AD7B3302C5541E17A14BE8C16514100000040312C55415C8FC2F58B165141D7A370AD312C5541B81E859B8A16514185EB5108332C5541B81E858B88165141EC51B8AE352C554133333303861651411F85EB21382C55411F85EB81841651411F85EBE1392C5541295C8F3284165141713D0A973B2C5541A4703DCA83165141333333933D2C5541A4703D6A82165141E17A141E412C554185EB51888116514166666696432C55410AD7A3A079165141713D0A37402C554152B81E057316514114AE47B13D2C5541713D0A4771165141666666063D2C5541E17A145E71165141E17A14CE3D2C5541F6285C9F711651419A9999C93E2C5541E17A145E711651410AD7A3A03F2C554100000040711651413D0AD7B3402C5541E17A145E71165141713D0A97412C5541333333F371165141000000B0422C5541A4703DFA7216514148E17A64442C55415C8FC2C573165141713D0A37462C554148E17AE474165141C3F5281C492C5541C3F5282C75165141333333534A2C5541EC51B80E75165141C3F528CC4B2C5541D7A3700D74165141CDCCCC2C4D2C5541CDCCCC4C721651415C8FC2754E2C55411F85EBF17016514114AE47414F2C5541EC51B83E70165141E17A141E502C55418FC2F5D86F165141F6285C7F512C5541713D0A976F165141CDCCCCBC532C5541333333D36F16514114AE47A1552C554148E17A4470165141C3F528CC562C55419A99996971165141CDCCCC5C582C5541EC51B88E7216514114AE47115A2C554185EB514873165141E17A147E5B2C55417B14AE7773165141295C8F325D2C5541C3F528DC72165141AE47E10A5F2C55410AD7A30072165141713D0A67612C55415C8FC2F570165141AE47E1BA622C55411F85EBE170165141A4703D7A632C554114AE47E1711651415C8FC275642C55417B14AE4773165141CDCCCC7C652C5541CDCCCC2C751651417B14AE47662C554152B81E35761651413D0AD783662C5541CDCCCC2C79165141D7A3707D662C554185EB51187C165141B81E856B662C55417B14AE677E1651415C8FC235662C5541B81E85CB7F165141CDCCCC7C652C554148E17A6481165141B81E851B642C5541A4703DEA8216514100000080622C5541295C8F528416514185EB5188612C5541F6285C5F861651417B14AED7602C55413D0AD7D3871651413D0AD7E3602C554152B81E5589165141295C8F62612C554148E17A648A165141CDCCCC0C622C55410AD7A3508C165141F6285C4F632C554148E17A648D165141B81E857B632C55417B14AED78E16514148E17AB4632C5541E17A14CE90165141E17A149E642C5541713D0A47921651413D0AD7E3642C55419A9999699416514148E17AA4642C55415C8FC2F595165141B81E858B642C5541D7A370CD97165141000000F0642C55413D0AD7E39916514114AE4781652C5541333333539C165141000000E0652C5541D7A3709D9E165141C3F5280C662C5541B81E856BA1165141713D0A97662C55410AD7A3A0A2165141666666B6662C5541666666D6A3165141D7A3707D662C554166666606A51651418FC2F5D8652C5541EC51B8EEA6165141333333A3642C5541E17A149EA8165141295C8FD2632C55418FC2F518AA165141C3F528CC632C5541713D0A47AD16514152B81E05642C554100000020AF16514114AE4731642C5541713D0AE7B016514152B81E25642C55417B14AEC7B21651419A9999B9632C5541F6285C9FB5165141D7A3705D622C554166666666B7165141EC51B8FE612C554148E17A94BA165141AE47E10A622C554152B81EC5BC1651413D0AD723622C5541E17A143EBE16514185EB51C8622C554185EB5108C01651418FC2F5B8632C554185EB5108C21651415C8FC285652C554114AE4791C31651410AD7A300672C554100000050C4165141EC51B8AE682C5541F6285CBFC4165141295C8F526B2C5541F6285C3FC5165141A4703DFA6C2C55418FC2F518C6165141F6285C2F6E2C554185EB5178C7165141C3F5282C6F2C554148E17AD4C71651415C8FC235702C5541000000C0C7165141A4703D2A722C55411F85EBA1C7165141713D0A07732C55411F85EBC1C7165141D7A370CD732C55418FC2F558C8165141EC51B8EE742C5541000000D0C916514152B81E25772C5541AE47E1EACA16514152B81E95782C554152B81EA5CC165141000000B07A2C5541C3F5282CCE165141F6285C7F7D2C554148E17A74CF165141C3F5281C802C55413D0AD7D3D016514100000080822C55415C8FC2A5D11651417B14AEB7832C554114AE47C1D21651418FC2F588842C554148E17AC4D41651419A9999F9852C554152B81E35D6165141C3F528DC862C554152B81E95D6165141A4703DCA872C5541D7A3701DD71651413D0AD7D3892C5541F6285C4FD81651415C8FC2258D2C5541EC51B87ED8165141B81E85AB8D2C554100000070D91651415C8FC255902C5541E17A145EDA165141333333F3912C554114AE47A1DB1651411F85EBF1922C554114AE47B1DC165141D7A3700D942C5541295C8F22DD1651410AD7A3B0952C55413D0AD793DD165141333333A3972C554166666616DE16514152B81E85992C55419A9999A9DE16514185EB51289B2C554152B81EC5DF1651418FC2F5E89B2C55418FC2F568E01651415C8FC2659C2C5541295C8FB2E01651417B14AEE79C2C55419A9999C9E0165141E17A14AE9D2C5541713D0A47E01651413D0AD7639E2C55410AD7A320DF1651410AD7A3409F2C5541F6285C9FDD16514152B81EE59F2C5541713D0A07DC1651415C8FC2F59F2C5541295C8FA2DA165141CDCCCC5C9F2C5541EC51B8AED9165141D7A370AD9E2C5541E17A144ED9165141D7A370AD9E2C55417B14AE37D9165141333333139F2C55419A999909DA16514152B81E05A22C5541295C8FE2DA165141B81E85FBA32C554185EB5178DB165141333333E3A32C5541CDCCCC2CDF1651418FC2F548A32C5541AE47E1AAE11651418FC2F5E8A02C55411F85EBB1EC165141713D0A67962C554114AE4741F4165141000000708F2C554185EB5118F216514114AE47C18D2C5541D7A370DDEB165141295C8F728C2C5541713D0A77EB165141CDCCCCEC8E2C5541EC51B84EE7165141C3F5283C912C55411F85EBB1E31651415C8FC215932C5541295C8FB2E0165141D7A3705D8F2C554148E17A64D9165141713D0A97852C5541CDCCCC5CDB165141333333A3822C554114AE47F1E2165141D7A370DD812C5541D7A3700DED16514100000090832C55411F85EBD1EE16514114AE47717F2C55418FC2F5F8F016514185EB51087D2C55413D0AD7A3F3165141C3F528DC7C2C55410AD7A350F51651411F85EBB1762C5541295C8FA2F416514166666606742C5541AE47E1EAF21651418FC2F588702C55418FC2F5C8F11651419A9999996F2C554152B81EF5EC16514185EB5168752C55418FC2F588E41651417B14AE476D2C5541A4703D6AD81651410AD7A360612C5541CDCCCC0CCD165141AE47E1CA582C5541C3F5284CBC165141F6285CBF502C55419A999949B3165141295C8F424E2C5541B81E853BAD165141CDCCCC0C4D2C5541E17A149EAE1651410AD7A330502C554133333373B6165141333333C3512C5541713D0AC7BC165141CDCCCC5C542C5541C3F5283CC4165141E17A146E582C554152B81E35C916514185EB51985B2C5541F6285C0FCB16514148E17A545D2C554148E17AE4C9165141000000A05F2C554100000070C8165141A4703DDA622C5541A4703DBAC8165141F6285C3F632C5541D7A3707DCB16514133333303672C5541F6285C8FCC1651410AD7A3B0682C55415C8FC265CD165141EC51B8FE692C5541C3F528ECCE1651411F85EB416D2C554114AE4711D01651419A999969702C55410AD7A300D11651411F85EBB1712C5541B81E854BD01651418FC2F588732C5541EC51B87ECC1651410AD7A3506E2C5541AE47E1AAC91651419A9999A96A2C55418FC2F5F8C7165141F6285CAF682C5541C3F528FCC5165141295C8FB2662C5541B81E85BBC11651418FC2F5F8622C5541A4703DAABD165141C3F528FC602C5541C3F5288CB916514148E17AF45F2C554114AE4791B1165141AE47E1AA602C554114AE4751A2165141B81E851B612C55415C8FC2559F1651417B14AE575F2C5541B81E853B961651413D0AD7C35F2C55419A99997997165141000000D0572C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 54011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F59554152CA0FF97CAC5041F3F609C91E595541443EE8207BAC50415796FD761F595541328118FE78AC5041A0B0E1F1205955419E8B187876AC5041E89F7B9926595541A0DC83D174AC5041A452989529595541F6D848CF71AC5041D79F8BBE2B59554177E7A1EF70AC5041798C477B2F5955412219F49871AC5041BD6DA29D2F5955418F207F4B74AC50416CEB2825305955416D08931476AC5041BF0DEC452D59554138FB0CAC79AC504155C3532827595541364883527BAC504106340FBB245955417D243E667FAC5041F30691B3255955415103D7027FAC5041C7C0759F2B59554196FA9D347FAC50415991329E2C5955415BC3CC027FAC504199DB8E3F32595541327903047FAC50414BCBAB7E3259554188CBB01B7FAC50418F4DDC833259554188CBB01B7FAC50413712004C375955414A4B2D377FAC5041FB20DED83759554132FCA0B07FAC50419D0B4F473A5955412AD658FB7FAC5041288046593B595541FCCD74E27FAC50419DE490C23D595541FCCD74E27FAC5041B24C7A8E425955411B75E7977FAC504118D0A75746595541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E2B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B413465955411A75E7977FAC504113D0A7574659554119D594837FAC5041E79A76F346595541B1EC177F7FAC50416484C362475955419E3952577FAC50415598CA4648595541361C5A4D7FAC5041D4CE38934859554140A9B0277FAC5041EAACFD6749595541B13B781A7FAC5041DEF3EEC7495955414F7FCE1D7EAC5041035E464C4F595541F5A505107EAC50415E6F4E9B4F5955418ACF632E7EAC50417AB4E8624F59554132B36B227FAC5041713A75084D5955416E9F1BAD7FAC504134EB12B24B59554150D6082581AC5041B333C80148595541066905F980AC5041E3A01014435955415AE324D680AC50417D75991140595541CF69126280AC5041736B4CB03B595541FC9991E27FAC5041FEB2FF7037595541B412655280AC504186A971292B59554160FF987C81AC5041C787B47B25595541434FF14583AC50414BAA592A2259554197D5077F83AC5041CB457EBF21595541C73129BC84AC50416D8D3B451F5955414DCA0FF97CAC5041EFF609C91E595541423EE8207BAC50415996FD761F595541368118FE78AC50419FB0E1F1205955419D8B187876AC5041E99F7B9926595541A4DC83D174AC5041A752989529595541F7D848CF71AC5041DC9F8BBE2B5955410FB8A3EF70AC504124C93F7B2F59554192207F4B74AC504171EB2825305955410B26021978AC5041F1A396D6295955413BFB0CAC79AC504156C3532827595541344883527BAC504105340FBB2459554188A8FE567BAC5041566320BC2459554190F2D55C7BAC504139C10EB32459554141E1ED977DAC5041BDEA7D45255955417E243E667FAC5041EE0691B3255955411F5717067FAC5041D9C2E06D2B595541A96D81047FAC5041930266872B595541F6A26E297FAC50416D42F5642C59554192FA9D347FAC50415891329E2C595541C4A555347FAC50414E535FA62C5955414599D3347FAC5041450853A92C595541221EA62D7FAC504178F3CE672D5955415DC3CC027FAC50419BDB8E3F32595541317903047FAC50414ACBAB7E3259554185CBB01B7FAC5041944DDC833259554185CBB01B7FAC50413412004C37595541474B2D377FAC5041FD20DED837595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 130851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F59554152CA0FF97CAC5041F3F609C91E595541443EE8207BAC50415796FD761F595541328118FE78AC5041A0B0E1F1205955419E8B187876AC5041E89F7B9926595541A0DC83D174AC5041A452989529595541F6D848CF71AC5041D79F8BBE2B59554177E7A1EF70AC5041798C477B2F5955412219F49871AC5041BD6DA29D2F5955418F207F4B74AC50416CEB2825305955416D08931476AC5041BF0DEC452D59554138FB0CAC79AC504155C3532827595541364883527BAC504106340FBB245955417D243E667FAC5041F30691B3255955415103D7027FAC5041C7C0759F2B59554196FA9D347FAC50415991329E2C5955415BC3CC027FAC504199DB8E3F32595541327903047FAC50414BCBAB7E3259554188CBB01B7FAC50418F4DDC833259554188CBB01B7FAC50413712004C375955414A4B2D377FAC5041FB20DED83759554132FCA0B07FAC50419D0B4F473A5955412AD658FB7FAC5041288046593B595541FCCD74E27FAC50419DE490C23D595541FCCD74E27FAC5041B24C7A8E425955411B75E7977FAC504118D0A75746595541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B413465955411A75E7977FAC504113D0A7574659554119D594837FAC5041E79A76F346595541B1EC177F7FAC50416484C362475955419E3952577FAC50415598CA4648595541361C5A4D7FAC5041D4CE38934859554140A9B0277FAC5041EAACFD6749595541B13B781A7FAC5041DEF3EEC7495955414A7FCE1D7EAC5041085E464C4F595541F2A505107EAC5041596F4E9B4F59554188CF632E7EAC50417FB4E8624F59554137B36B227FAC5041743A75084D5955416E9F1BAD7FAC504134EB12B24B59554153D6082581AC5041B633C801485955410B6905F980AC5041E2A01014435955415AE324D680AC50417D75991140595541CF69126280AC5041736B4CB03B595541FC9991E27FAC5041FEB2FF7037595541B412655280AC504186A971292B59554160FF987C81AC5041C787B47B25595541434FF14583AC50414BAA592A2259554197D5077F83AC5041CB457EBF21595541C83129BC84AC50416A8D3B451F5955414DCA0FF97CAC5041EFF609C91E595541423EE8207BAC50415996FD761F595541368118FE78AC50419FB0E1F1205955419D8B187876AC5041E99F7B9926595541A4DC83D174AC5041A752989529595541F7D848CF71AC5041DC9F8BBE2B5955410BB8A3EF70AC504123C93F7B2F59554192207F4B74AC504171EB2825305955410B26021978AC5041F1A396D6295955413BFB0CAC79AC504156C3532827595541344883527BAC504105340FBB2459554187A8FE567BAC5041586320BC2459554190F2D55C7BAC504139C10EB32459554144E1ED977DAC5041BCEA7D45255955417E243E667FAC5041EE0691B3255955411F5717067FAC5041D9C2E06D2B595541A96D81047FAC5041930266872B595541F6A26E297FAC50416D42F5642C59554192FA9D347FAC50415891329E2C595541C4A555347FAC50414D535FA62C5955414599D3347FAC5041450853A92C595541221EA62D7FAC504178F3CE672D5955415DC3CC027FAC50419BDB8E3F32595541317903047FAC50414ACBAB7E3259554185CBB01B7FAC5041944DDC833259554185CBB01B7FAC50413412004C37595541474B2D377FAC5041FD20DED837595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 329977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F59554152CA0FF97CAC5041F3F609C91E595541443EE8207BAC50415796FD761F595541328118FE78AC5041A0B0E1F1205955419E8B187876AC5041E89F7B9926595541A0DC83D174AC5041A452989529595541F6D848CF71AC5041D79F8BBE2B59554177E7A1EF70AC5041798C477B2F5955412219F49871AC5041BD6DA29D2F5955418F207F4B74AC50416CEB2825305955416D08931476AC5041BF0DEC452D59554138FB0CAC79AC504155C3532827595541364883527BAC504106340FBB245955417D243E667FAC5041F30691B3255955415103D7027FAC5041C7C0759F2B59554196FA9D347FAC50415991329E2C5955415BC3CC027FAC504199DB8E3F32595541327903047FAC50414BCBAB7E3259554188CBB01B7FAC50418F4DDC833259554188CBB01B7FAC50413712004C375955414A4B2D377FAC5041FB20DED83759554132FCA0B07FAC50419D0B4F473A5955412AD658FB7FAC5041288046593B595541FCCD74E27FAC50419DE490C23D595541FCCD74E27FAC5041B24C7A8E425955411B75E7977FAC504118D0A75746595541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B413465955411A75E7977FAC504113D0A7574659554119D594837FAC5041E79A76F346595541B1EC177F7FAC50416484C362475955419E3952577FAC50415598CA4648595541361C5A4D7FAC5041D4CE38934859554140A9B0277FAC5041EAACFD6749595541B13B781A7FAC5041DEF3EEC7495955414A7FCE1D7EAC5041085E464C4F595541F2A505107EAC5041596F4E9B4F59554188CF632E7EAC50417FB4E8624F59554137B36B227FAC5041743A75084D5955416E9F1BAD7FAC504134EB12B24B59554153D6082581AC5041B633C801485955410B6905F980AC5041E2A01014435955415AE324D680AC50417D75991140595541CF69126280AC5041736B4CB03B595541FC9991E27FAC5041FEB2FF7037595541B412655280AC504186A971292B59554160FF987C81AC5041C787B47B25595541434FF14583AC50414BAA592A2259554197D5077F83AC5041CB457EBF21595541C83129BC84AC50416A8D3B451F5955414DCA0FF97CAC5041EFF609C91E595541423EE8207BAC50415996FD761F595541368118FE78AC50419FB0E1F1205955419D8B187876AC5041E99F7B9926595541A4DC83D174AC5041A752989529595541F7D848CF71AC5041DC9F8BBE2B5955410BB8A3EF70AC504123C93F7B2F59554192207F4B74AC504171EB2825305955410B26021978AC5041F1A396D6295955413BFB0CAC79AC504156C3532827595541344883527BAC504105340FBB2459554187A8FE567BAC5041586320BC2459554190F2D55C7BAC504139C10EB32459554144E1ED977DAC5041BCEA7D45255955417E243E667FAC5041EE0691B3255955411F5717067FAC5041D9C2E06D2B595541A96D81047FAC5041930266872B595541F6A26E297FAC50416D42F5642C59554192FA9D347FAC50415891329E2C595541C4A555347FAC50414D535FA62C5955414599D3347FAC5041450853A92C595541221EA62D7FAC504178F3CE672D5955415DC3CC027FAC50419BDB8E3F32595541317903047FAC50414ACBAB7E3259554185CBB01B7FAC5041944DDC833259554185CBB01B7FAC50413412004C37595541474B2D377FAC5041FD20DED837595541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628727 - 956391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A00000043779EE78DF45041F681E28C4D15554114AE475193F45041333333734E1555410243DCBE93F45041D8AB7A854E1555415C8FC23596F45041EC51B8EE4E1555418FC2F55899F4504152B81E854F1555411F85EB519BF4504148E17AB44F155541C3F5284C9DF4504148E17A044E155541F6285CAF9DF45041295C8F724A155541A4703D8A9DF450413D0AD753481555417B14AEC79CF450418FC2F50847155541AE47E17A9BF45041F6285C7F461555410AD7A3009AF450418FC2F5F8451555410AD7A3D098F450411F85EBA1451555413D0AD73397F4504185EB51484515554114AE471195F45041CDCCCCCC44155541EC51B8AE95F450415C8FC2D543155541000000A097F450410AD7A3704315554185EB514897F45041666666B640155541EC51B8EE94F45041A4703D8A3F1555417B14AEB790F45041CDCCCC1C3F15554185EB51D88CF45041E17A14CE3E155541AE47E12A8AF45041000000603E155541C3F5285C83F450418FC2F5B83C155541F6285C8F7EF450410AD7A3503B155541000000B07CF4504114AE47D13A15554148E17A3475F45041EC51B81E38155541E17A141E74F45041333333C338155541295C8F2272F45041333333733A155541B81E852B70F4504152B81E75421555411F85EB016FF4504148E17A2442155541D7A3707D6FF45041D7A3701D401555413D0AD7C370F45041F6285C8F3A1555410AD7A3A072F450415C8FC2253815554152B81E5573F45041AE47E19A371555415C8FC2256FF45041F6285C3F361555415C8FC2C565F45041CDCCCC7C331555417B14AE7761F45041AE47E16A32155541E17A142E5FF450413D0AD723321555415C8FC2255BF45041C3F528AC311555417B14AEF759F45041666666363615554148E17A1459F45041D7A3707D3A1555413333336358F45041AE47E1FA3D15554152B81E3558F450413D0AD74340155541AE47E1EA57F45041A4703DEA42155541E97FF7E357F4504124138735431555412E3C0C365DF45041908B26314415554193E3AD6D66F450412849728D4615554188A53D7E66F450413C596D954615554179C42C9F66F4504145CEE99D4615554106AAB57A69F4504128812ABC471555410EB42D466AF45041D9488E0648155541D9CFC3CF6CF4504169B4CB8148155541225D41746FF45041835701C948155541086A42F979F45041E58443C44A155541C27C43117FF45041B3D08C7E4B1555416F68E96286F45041E83F796C4C1555410FDB710689F450414DDD70D24C15554143779EE78DF45041F681E28C4D155541
+</a>
+
+<b>
+0106000000010000000103000000020000004D000000963791B675F450412F83D4334A1555413574588474F45041D2AF08F449155541DD86C99E72F45041683F33AB49155541225D41746FF45041835701C948155541D9CFC3CF6CF4504169B4CB8148155541E20A20B269F45041ED8E77EA47155541A5B80FDC68F450418BA951C34715554116AA17D468F450418C2C5DAD47155541BB26A4D668F45041FDE653C24715554154F00AC968F45041474832B04715554193E3AD6D66F450412849728D461555412E3C0C365DF45041908B263144155541E97FF7E357F450412413873543155541C3F528BC57F45041713D0AE74415554185EB518857F45041A4703D0A461555417B14AE3757F45041A4703D4A47155541D7A3703D58F450411F85EB2147155541F6285C0F58F4504185EB51F8471555415C8FC2B557F450418FC2F55849155541B81E853B57F45041000000504A15554114AE478156F450417B14AE574B155541CDCCCCDC55F45041B81E851B4C155541666666C654F450413D0AD7534D155541713D0AA753F4504185EB51984E155541000000C052F45041713D0AA74F155541333333E351F450411F85EBD150155541C3F5284C51F45041F6285CDF511555418FC2F5D850F450418FC2F5385315554185EB51A850F450416666662654155541EC51B89E50F45041C3F528CC55155541000000A050F45041B81E858B571555419A99996950F45041B81E851B59155541AE47E11A50F45041EC51B8CE5A155541CDCCCC1C52F4504114AE47F15A155541295C8F9254F45041666666365B155541F6285CCF56F45041EC51B89E5B1555415C8FC23558F450418FC2F5F85B1555418FC2F5185AF45041F6285C6F5C155541C3F5284C5BF45041000000D05C155541333333835DF4504185EB51885D155541713D0A8760F450418FC2F5985E15554152B81E2564F450411F85EBF15F155541F6285CFF66F45041C3F528FC601555410000004069F45041AE47E1DA611555413D0AD7B36BF450419A9999B962155541713D0AB76DF45041F6285C6F63155541A4703DAA6FF450411F85EBF16315554148E17A8471F45041AE47E18A6415554148E17AD473F450413333334365155541AE47E14A76F4504148E17A046615554185EB516876F45041295C8FA2631555418FC2F52878F4504148E17A045B155541333333837CF4504148E17A045B15554114AE47A17EF450419A9999695B1555416666663680F450413D0AD7535B155541F6285C0F81F45041713D0A575A155541C3F5287C81F450411F85EB71581555418FC2F5F880F45041F6285C5F57155541A4703D7A81F45041B81E85DB531555416666668682F450410000008052155541A4703D2A84F450413D0AD7A351155541000000F086F45041AE47E1CA50155541617AB15688F45041C08FEC71501555414FC1C81E8AF45041C027122B5015554137FCD1E88AF45041D6DE69F84F155541DF1522388CF45041901C63B44F155541307C48A78DF450418FDDE6694F155541DDF01A6B90F450419C864DDA4E1555410243DCBE93F45041D8AB7A854E15554114AE475193F45041333333734E15554185779EE78DF450410082E28C4D1555410FDB710689F450414DDD70D24C1555416F68E96286F45041E83F796C4C155541C27C43117FF45041B3D08C7E4B155541086A42F979F45041E58443C44A15554124B959EE77F45041D6481EAA4A155541963791B675F450412F83D4334A15554105000000B12B94FE68F4504148B1D22C4815554141054D7472F45041445209A94B1555412002541F72F45041DFD385D34B155541ADCCCA7A6CF4504100D77E284C155541B12B94FE68F4504148B1D22C48155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2735396 - 2951732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC255D84351417B14AE4783985441EC51B84ED94351419A9999C984985441D7A3700DDA435141D7A370ED85985441F6285CBFE54351411F85EB217E985441AE47E1CAF3435141713D0AC775985441AE47E17AFD43514148E17A5470985441F6285C7F08445141C3F5287C6B9854413D0AD783134451410AD7A3206798544114AE47912044514114AE4761629854418FC2F5682244514114AE470167985441C3F5284C3F445141713D0A675D985441B81E85CB42445141295C8FF25B985441CDCCCC9C414451415C8FC2455698544148E17A7440445141F6285CCF50985441CDCCCC5C3A445141E17A14EE52985441295C8F62364451410AD7A320549854417B14AE073344514152B81EE5549854411F85EBA130445141C3F5286C559854410AD7A3202B445141A4703D8A569854413D0AD753194451411F85EB515D9854417B14AEC71A445141AE47E10A6298544166666646134451413D0AD7D36498544133333303084451410AD7A31069985441D7A3701DFD435141713D0A076E985441E17A146EF34351418FC2F59873985441666666E6E4435141333333137C9854415C8FC255D84351417B14AE4783985441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441F84811D205445141F088A22B929854412E9438140844514111B66AF690985441BF08E87F0E445141CF3957848D985441FA009E6010445141FB59D67F8C9854410C19433414445141911B36678B98544194055DB81B445141326DEFF488985441590CA60420445141A6A8174287985441BE03498D21445141AFCC447D86985441027E5FC7244451413C56B559859854411C2B624F2A4451415230D66283985441CE464D0F3144514183271BF8809854418A1D682B3B4451410F04D4397D985441E63528F944445141D4F21BCC7A9854415BC5CE014744514190D07F487A9854417653FFE24844514194951BCC79985441BECD38034A4451411247D68D79985441C4C6ADBD4E4451417914937D78985441CF85C59154445141E566242F7798544126392AA854445141A34FA1CA74985441026093B354445141CEC0435773985441536834805444514175D999747298544138A21CFA52445141A7802F236C9854418C081A53524451410FE3158769985441E872E250514451410B5EFF9B659854419816B007504451419BA1082D6098544167E01C384D44514143582FC560985441C414806B44445141788CC0A962985441CEF53B9A4044514121146F7963985441867AB07B40445141700CA0FF629854410871E54B3F44514110AF20675D9854411CEEECBC304451414BC4023E62985441016D3BE727445141CC1ED22D659854418FC2F5682244514114AE47016798544114AE47912044514114AE476162985441A5DF4E5F1D4451418FA8CB8A63985441DAC81E571D4451411C0EC68D639854417D5108D9174451419761338D65985441F6A876711644514187FFFB0F669854410C64798F134451416337B71D679854414AA0FE2512445141B39F01AB67985441BC57F1DB0F4451411B47CB926898544127AE21040F4451419CBC6DE468985441095BEE370C44514133D0DBFF6998544159142FB10A445141C7A82E9B6A985441F8CC2B35094451413E2A3D326B985441F366E69F084451418AF3396E6B9854414E2E8288084451418CAC8A786B9854413CEA857F084451411472187C6B985441B3D54894064451410DE51C546C9854412D0A888EFD4351411E94D64B709854412E97C822F743514152234FE4739854413BB67B67F443514138FECA6E759854414650728CF24351411E241F8676985441689D7873EC435141B5FD0C257A98544188B2DCEAEA435141F47F9A0E7B98544148C6A1ACE74351415C4C7CFC7C985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2735396 - 3603347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC255D84351417B14AE4783985441EC51B84ED94351419A9999C984985441D7A3700DDA435141D7A370ED85985441F6285CBFE54351411F85EB217E985441AE47E1CAF3435141713D0AC775985441AE47E17AFD43514148E17A5470985441F6285C7F08445141C3F5287C6B9854413D0AD783134451410AD7A3206798544114AE47912044514114AE4761629854418FC2F5682244514114AE470167985441C3F5284C3F445141713D0A675D985441B81E85CB42445141295C8FF25B985441CDCCCC9C414451415C8FC2455698544148E17A7440445141F6285CCF50985441CDCCCC5C3A445141E17A14EE52985441295C8F62364451410AD7A320549854417B14AE073344514152B81EE5549854411F85EBA130445141C3F5286C559854410AD7A3202B445141A4703D8A569854413D0AD753194451411F85EB515D9854417B14AEC71A445141AE47E10A6298544166666646134451413D0AD7D36498544133333303084451410AD7A31069985441D7A3701DFD435141713D0A076E985441E17A146EF34351418FC2F59873985441666666E6E4435141333333137C9854415C8FC255D84351417B14AE4783985441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441F84811D205445141F088A22B929854412E9438140844514111B66AF690985441BF08E87F0E445141CF3957848D985441FA009E6010445141FB59D67F8C9854410C19433414445141911B36678B98544194055DB81B445141326DEFF488985441590CA60420445141A6A8174287985441BE03498D21445141AFCC447D86985441027E5FC7244451413C56B559859854411C2B624F2A4451415230D66283985441CE464D0F3144514183271BF8809854418A1D682B3B4451410F04D4397D985441E63528F944445141D4F21BCC7A9854415BC5CE014744514190D07F487A9854417653FFE24844514194951BCC79985441BECD38034A4451411247D68D79985441C4C6ADBD4E4451417914937D78985441CF85C59154445141E566242F7798544126392AA854445141A34FA1CA74985441026093B354445141CEC0435773985441536834805444514175D999747298544138A21CFA52445141A7802F236C9854418C081A53524451410FE3158769985441E872E250514451410B5EFF9B659854419816B007504451419BA1082D6098544167E01C384D44514143582FC560985441C414806B44445141788CC0A962985441CEF53B9A4044514121146F7963985441867AB07B40445141700CA0FF629854410871E54B3F44514110AF20675D9854411CEEECBC304451414BC4023E62985441016D3BE727445141CC1ED22D659854418FC2F5682244514114AE47016798544114AE47912044514114AE476162985441A5DF4E5F1D4451418FA8CB8A63985441DAC81E571D4451411C0EC68D639854417D5108D9174451419761338D65985441F6A876711644514187FFFB0F669854410C64798F134451416337B71D679854414AA0FE2512445141B39F01AB67985441BC57F1DB0F4451411B47CB926898544127AE21040F4451419CBC6DE468985441095BEE370C44514133D0DBFF6998544159142FB10A445141C7A82E9B6A985441F8CC2B35094451413E2A3D326B985441F366E69F084451418AF3396E6B9854414E2E8288084451418CAC8A786B9854413CEA857F084451411472187C6B985441B3D54894064451410DE51C546C9854412D0A888EFD4351411E94D64B709854412E97C822F743514152234FE4739854413BB67B67F443514138FECA6E759854414650728CF24351411E241F8676985441689D7873EC435141B5FD0C257A98544188B2DCEAEA435141F47F9A0E7B98544148C6A1ACE74351415C4C7CFC7C985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279077 - 162347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000230000000000001010F7504148E17A049C9454410AD7A3F007F75041E17A14DE97945441CDCCCC8C06F750418FC2F52897945441EC51B84E02F75041CDCCCCFC949454411F85EBE1FCF650418FC2F5389294544100000030FCF65041CDCCCCDC91945441AE47E12AF5F6504152B81E458E945441E17A14FEF3F65041F6285CAF8D945441B1CED7AAE4F650414F6DEBE28594544178E801CAE1F650410059B8528B945441F6285C1FF3F65041E17A145E94945441EC51B88E00F750418FC2F5589B945441EC51B85E0BF75041713D0AF7A094544152B81ED514F750411F85EBE1A5945441EC51B82E16F7504152B81E95A6945441EC51B8EE20F75041B81E852BAC9454413D0AD7031FF75041C3F5288CAF94544155A1ED001DF75041B3632D1CB394544194A450C121F7504114E66692B694544148E17AD413F7504166666626D09454410CBA14F112F7504172529EC8D1945441C58451DA14F75041B9EA92BED2945441EFEA0FD917F750413C81F64FD49454412130C37118F75041E4861BB0D4945441897F920F1AF75041C2D24889D59454415C8FC2F51BF7504148E17AF4D1945441C3F5286C2CF7504152B81E25B2945441000000002CF75041CDCCCCECB19454411F85EB012FF75041A4703DCAAB945441A4703D2A2CF750411F85EB51AA945441C3F5282C27F75041333333D3A79454413333336322F7504114AE4761A59454413D0AD71317F750415C8FC2959F945441295C8F9213F75041000000D09D9454410000001010F7504148E17A049C945441
+</a>
+
+<b>
+010600000001000000010300000001000000140000006937854D13F75041FE089C1ED1945441C6FEAE3313F7504130EFB753D19454415A16DB2E13F750419D830157D19454410CBA14F112F7504171529EC8D1945441C28451DA14F75041BEEA92BED2945441EFEA0FD917F750413C81F64FD49454412130C37118F75041E4861BB0D4945441897F920F1AF75041C2D24889D59454415C8FC2F51BF7504148E17AF4D194544177168B662CF75041EF13F92FB29454418ACA3CEA20F75041F6626A33AC945441481E83E920F75041AB6EB134AC9454418F50C5E520F75041EB83483BAC945441A57071E120F7504148EFE742AC945441D00365011FF750412C395BB9AF9454418FB7B5CD1EF750417D3309ECAF94544159A1ED001DF75041B1632D1CB394544193A450C121F7504113E66692B694544148E17AD413F7504166666626D09454416937854D13F75041FE089C1ED1945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279077 - 387839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000230000000000001010F7504148E17A049C9454410AD7A3F007F75041E17A14DE97945441CDCCCC8C06F750418FC2F52897945441EC51B84E02F75041CDCCCCFC949454411F85EBE1FCF650418FC2F5389294544100000030FCF65041CDCCCCDC91945441AE47E12AF5F6504152B81E458E945441E17A14FEF3F65041F6285CAF8D945441B1CED7AAE4F650414F6DEBE28594544178E801CAE1F650410059B8528B945441F6285C1FF3F65041E17A145E94945441EC51B88E00F750418FC2F5589B945441EC51B85E0BF75041713D0AF7A094544152B81ED514F750411F85EBE1A5945441EC51B82E16F7504152B81E95A6945441EC51B8EE20F75041B81E852BAC9454413D0AD7031FF75041C3F5288CAF94544155A1ED001DF75041B3632D1CB394544194A450C121F7504114E66692B694544148E17AD413F7504166666626D09454410CBA14F112F7504172529EC8D1945441C58451DA14F75041B9EA92BED2945441EFEA0FD917F750413C81F64FD49454412130C37118F75041E4861BB0D4945441897F920F1AF75041C2D24889D59454415C8FC2F51BF7504148E17AF4D1945441C3F5286C2CF7504152B81E25B2945441000000002CF75041CDCCCCECB19454411F85EB012FF75041A4703DCAAB945441A4703D2A2CF750411F85EB51AA945441C3F5282C27F75041333333D3A79454413333336322F7504114AE4761A59454413D0AD71317F750415C8FC2959F945441295C8F9213F75041000000D09D9454410000001010F7504148E17A049C945441
+</a>
+
+<b>
+010600000001000000010300000001000000140000006937854D13F75041FE089C1ED1945441C6FEAE3313F7504130EFB753D19454415A16DB2E13F750419D830157D19454410CBA14F112F7504171529EC8D1945441C28451DA14F75041BEEA92BED2945441EFEA0FD917F750413C81F64FD49454412130C37118F75041E4861BB0D4945441897F920F1AF75041C2D24889D59454415C8FC2F51BF7504148E17AF4D194544177168B662CF75041EF13F92FB29454418ACA3CEA20F75041F6626A33AC945441481E83E920F75041AB6EB134AC9454418F50C5E520F75041EB83483BAC945441A57071E120F7504148EFE742AC945441D00365011FF750412C395BB9AF9454418FB7B5CD1EF750417D3309ECAF94544159A1ED001DF75041B1632D1CB394544193A450C121F7504113E66692B694544148E17AD413F7504166666626D09454416937854D13F75041FE089C1ED1945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 1258391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441333333C3503F51418FC2F52874A75441AE47E1CA563F51418FC2F5C872A75441A4703D8A6C3F5141295C8FD26DA75441295C8F22863F5141C3F528FC67A75441295C8F129C3F5141AE47E1FA62A75441295C8F229E3F5141D7A370DD5EA7544114AE4771A13F51416666666657A75441A4703DBAA33F5141E17A149E4DA7544171C150FE9A3F5141737593CA4DA754411F85EBA1903F5141F6285CFF4DA754416B1A0A648A3F51415FDFBD1A4EA7544193B9F88C853F5141BD2F1B384EA75441E459F1737F3F51417C60D2344EA75441BBAC51D37C3F51417A2B163B4EA75441
+</a>
+
+<b>
+010600000001000000010300000002000000220000001F85EBA1903F5141F6285CFF4DA75441295C8F027D3F51413D0AD7634EA75441F94B6AAC7C3F5141E2DBC7FA4EA75441425FD92D7B3F5141668B5CCE50A75441CC1E2E5C773F5141D4682E6252A754416DB4F560723F5141B392BB8B53A75441B05C2B77713F51418B55BFE053A754419929E8F46D3F51415256EBB955A754419239B8946D3F5141447C1C9257A75441EAE04D926E3F51418E49E3675AA75441750C11006D3F5141D80049055BA75441E2718354673F5141C4364A7D5CA754418451E411623F51413D0B870F5EA75441FE9C47BF5F3F514129BE3F3B5EA7544149585BCB5A3F5141437EFFBB5FA75441BCADFD7F553F51413621E84760A75441A6E11BCE4E3F5141B8E5543A62A754417845AAFB463F514190CE0EDE63A754411AAEE49D453F514190CE0EDE63A75441F1900DA9443F5141FCBC5A1762A75441DDC07D88433F5141AB05F57961A75441C0E9D3E7413F5141C4D93BDF61A75441000000503F3F5141EC51B86E63A75441971FB43D433F5141C78FC83267A75441333333C3503F51418FC2F52874A75441AE47E1CA563F51418FC2F5C872A75441A4703D8A6C3F5141295C8FD26DA75441295C8F22863F5141C3F528FC67A75441295C8F129C3F5141AE47E1FA62A75441295C8F229E3F5141D7A370DD5EA7544114AE4771A13F51416666666657A75441A4703DBAA33F5141E17A149E4DA754417B14AE179B3F5141A4703DCA4DA754411F85EBA1903F5141F6285CFF4DA754410700000067357F02513F51416AC6374869A7544140FD28E24E3F5141DCAA48B566A7544109BCC2F1663F514181572B0061A75441B37F8CE7703F5141D9E656C15DA75441C062FD5B723F51414C3C646B5DA754411AD42197733F5141B390F91A60A7544167357F02513F51416AC6374869A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 2398161
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441333333C3503F51418FC2F52874A75441AE47E1CA563F51418FC2F5C872A75441A4703D8A6C3F5141295C8FD26DA75441295C8F22863F5141C3F528FC67A75441295C8F129C3F5141AE47E1FA62A75441295C8F229E3F5141D7A370DD5EA7544114AE4771A13F51416666666657A75441A4703DBAA33F5141E17A149E4DA7544171C150FE9A3F5141737593CA4DA754411F85EBA1903F5141F6285CFF4DA754416B1A0A648A3F51415FDFBD1A4EA7544193B9F88C853F5141BD2F1B384EA75441E459F1737F3F51417C60D2344EA75441BBAC51D37C3F51417A2B163B4EA75441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008FC2F5D8813F5141D7A370FD3AA75441D7A3706D813F51417B14AE473CA75441C3F528EC7F3F5141AE47E19A48A75441AE47E17A7E3F514114AE47214CA75441295C8FA27C3F51415C8FC2654EA75441295C8F027D3F51413D0AD7634EA754411F85EBA1903F5141F6285CFF4DA75441A1581A949A3F5141E9A3D9CC4DA754418A320C5A9E3F514134802B7F39A75441000000B0953F51413D0AD7E339A754418FC2F5D8813F5141D7A370FD3AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 3373570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441333333C3503F51418FC2F52874A75441AE47E1CA563F51418FC2F5C872A75441A4703D8A6C3F5141295C8FD26DA75441295C8F22863F5141C3F528FC67A75441295C8F129C3F5141AE47E1FA62A75441295C8F229E3F5141D7A370DD5EA7544114AE4771A13F51416666666657A75441A4703DBAA33F5141E17A149E4DA7544171C150FE9A3F5141737593CA4DA754411F85EBA1903F5141F6285CFF4DA754416B1A0A648A3F51415FDFBD1A4EA7544193B9F88C853F5141BD2F1B384EA75441E459F1737F3F51417C60D2344EA75441BBAC51D37C3F51417A2B163B4EA75441
+</a>
+
+<b>
+010600000001000000010300000002000000220000001F85EBA1903F5141F6285CFF4DA75441295C8F027D3F51413D0AD7634EA75441F94B6AAC7C3F5141E2DBC7FA4EA75441425FD92D7B3F5141668B5CCE50A75441CC1E2E5C773F5141D4682E6252A754416DB4F560723F5141B392BB8B53A75441B05C2B77713F51418B55BFE053A754419929E8F46D3F51415256EBB955A754419239B8946D3F5141447C1C9257A75441EAE04D926E3F51418E49E3675AA75441750C11006D3F5141D80049055BA75441E2718354673F5141C4364A7D5CA754418451E411623F51413D0B870F5EA75441FE9C47BF5F3F514129BE3F3B5EA7544149585BCB5A3F5141437EFFBB5FA75441BCADFD7F553F51413621E84760A75441A6E11BCE4E3F5141B8E5543A62A754417845AAFB463F514190CE0EDE63A754411AAEE49D453F514190CE0EDE63A75441F1900DA9443F5141FCBC5A1762A75441DDC07D88433F5141AB05F57961A75441C0E9D3E7413F5141C4D93BDF61A75441000000503F3F5141EC51B86E63A75441971FB43D433F5141C78FC83267A75441333333C3503F51418FC2F52874A75441AE47E1CA563F51418FC2F5C872A75441A4703D8A6C3F5141295C8FD26DA75441295C8F22863F5141C3F528FC67A75441295C8F129C3F5141AE47E1FA62A75441295C8F229E3F5141D7A370DD5EA7544114AE4771A13F51416666666657A75441A4703DBAA33F5141E17A149E4DA754417B14AE179B3F5141A4703DCA4DA754411F85EBA1903F5141F6285CFF4DA754410700000067357F02513F51416AC6374869A7544140FD28E24E3F5141DCAA48B566A7544109BCC2F1663F514181572B0061A75441B37F8CE7703F5141D9E656C15DA75441C062FD5B723F51414C3C646B5DA754411AD42197733F5141B390F91A60A7544167357F02513F51416AC6374869A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 5244993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441333333C3503F51418FC2F52874A75441AE47E1CA563F51418FC2F5C872A75441A4703D8A6C3F5141295C8FD26DA75441295C8F22863F5141C3F528FC67A75441295C8F129C3F5141AE47E1FA62A75441295C8F229E3F5141D7A370DD5EA7544114AE4771A13F51416666666657A75441A4703DBAA33F5141E17A149E4DA7544171C150FE9A3F5141737593CA4DA754411F85EBA1903F5141F6285CFF4DA754416B1A0A648A3F51415FDFBD1A4EA7544193B9F88C853F5141BD2F1B384EA75441E459F1737F3F51417C60D2344EA75441BBAC51D37C3F51417A2B163B4EA75441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008FC2F5D8813F5141D7A370FD3AA75441D7A3706D813F51417B14AE473CA75441C3F528EC7F3F5141AE47E19A48A75441AE47E17A7E3F514114AE47214CA75441295C8FA27C3F51415C8FC2654EA75441295C8F027D3F51413D0AD7634EA754411F85EBA1903F5141F6285CFF4DA75441A1581A949A3F5141E9A3D9CC4DA754418A320C5A9E3F514134802B7F39A75441000000B0953F51413D0AD7E339A754418FC2F5D8813F5141D7A370FD3AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984054 - 1953224
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000000BB702580077504125902060F00E5541417C2F8C0277504157BB3D29F20E5541255126FD0877504182A01D11F70E5541C1B08AE00E7750416ED24F16FB0E55413A159C4813775041F9EEEB1FFE0E5541C0B8ACFE14775041476A6E7DFE0E55416CF631A816775041CCF8A3A6FE0E5541391BC8231A775041244BEBE0000F55414B2F7A711C775041072C4FFC020F554125A940221E7750416F8FC9D9050F5541145E1B7B1F775041C4214FE1070F5541482579CA227750415CBC0EB80A0F55413B6405C3247750416BF840B90C0F554121FBAAA228775041017053F1100F55410A4CC0472C7750411CBF1921140F5541CCD330FB2D77504189CA8715160F55414BA6095637775041E5A8FCCC1C0F554110F34E8C3977504142CFA6241A0F5541BA7337043F7750413E0C21701E0F554143D2627142775041CB983B89200F5541B1464AF54577504153DB12FB210F5541E515553C4D7750412E8807CB250F5541405EFCEC557750417208F3912C0F55413996DCD7597750417E6F7D2B300F5541E3975A4F5D775041379E7926330F55411BFEEF795F7750414798E709350F5541E991640D61775041C04165D5350F554198F7111163775041F5967D3B340F55416CD14CB7657750414272D609370F55414F5A4653697750419C7B89813C0F5541D2B5B2466D77504142C61FDA420F5541C7A1E93170775041682000C9410F5541CE0099506C7750410586E3683B0F554163B1A8A9677750415EFB58FF340F5541337E7A0265775041B0DE0D01320F554105AC263F5A775041BD2F5AAD280F55417DEDDA4458775041FC7B2CEA2A0F554171756B0146775041997491C01C0F5541067DC4BF3D7750413F1DAE24160F5541B35C383D357750410A3B45E90E0F55419ECC8CC230775041FAC540D20A0F5541B2B7A30024775041E20F4250010F55414C8AE2AC15775041F6C4EFFBF60E55413443CBB80D7750414FA4CA9FF10E55412A8445A5027750410C4682E1E90E554130EAE9C7FE7650418DAE4E7FE70E5541E9359DB3F9765041F6D47FDFE40E55417F93621CF8765041A3407D0CE50E55413428A80BF7765041931DE3F4E60E5541777A1B49F7765041EB806020E70E5541D9A4FC22FA765041A74BA4F5E80E5541298264D2FA76504198AFF9ABE90E5541EEF8A5E2FB7650410C472B0FEC0E5541E67455EAFC765041BB01A769ED0E55410BB702580077504125902060F00E5541
+</a>
+
+<b>
+01060000000100000001030000000100000030000000F6285C7F4C7750410AD7A300160F554185EB51484C77504100000040160F5541000000B04B7750410AD7A3F0160F554148E17A644B7750418FC2F548170F5541B81E852B4B775041AE47E18A170F5541333333F34977504152B81EF5180F5541CDCCCCCC49775041E17A141E190F554114AE470149775041A4703DFA190F5541CDCCCC9C48775041666666661A0F554166666616487750417B14AEF71A0F5541295C8F62477750419A9999B91B0F5541AE47E13A4777504152B81EE51B0F5541F6285CAF46775041AE47E17A1C0F5541713D0A3746775041CDCCCCFC1C0F55413D0AD7D345775041000000701D0F5541CDCCCC4C47775041F6285C6F1E0F554152B81ED54D775041E17A141E230F5541C3F5283C5077504148E17AC4240F55413D0AD79356775041AE47E16A290F55417B14AE775777504185EB51082A0F554148E17A2458775041EC51B83E290F5541C3F5286C58775041B81E85EB280F554185EB513859775041D7A370FD270F554107AC263F5A775041C22F5AAD280F55411C26804D5B775041757DA197290F55413C3C49F85E775041E30429C52C0F55412F70DC1462775041061174772F0F5541367E7A0265775041B0DE0D01320F5541FEDBABD065775041A295B1E9320F554165B1A8A96777504159FB58FF340F55412C270C4169775041E10FE030370F5541CD0099506C7750410286E3683B0F55417880CCCC6D775041878298D93D0F55412EB0DF186F775041A50A3AFB3F0F5541920E5EBD6F7750416D6A8109410F5541BF6FE401707750414B3A197A410F5541C3F5282C7077504166666656410F5541AE47E14A71775041D7A3708D400F55411F85EB71717750411F85EB71400F554185EB51B8727750411F85EB813F0F554185EB51E872775041E17A145E3F0F55419A9999396F775041295C8F72390F5541C3F5280C6A7750410AD7A340320F55416666664663775041333333832A0F55415C8FC2B55C77504185EB5108240F55413D0AD7034D77504133333363150F5541713D0AB74C775041000000C0150F5541F6285C7F4C7750410AD7A300160F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984054 - 4515745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000000BB702580077504125902060F00E5541417C2F8C0277504157BB3D29F20E5541255126FD0877504182A01D11F70E5541C1B08AE00E7750416ED24F16FB0E55413A159C4813775041F9EEEB1FFE0E5541C0B8ACFE14775041476A6E7DFE0E55416CF631A816775041CCF8A3A6FE0E5541391BC8231A775041244BEBE0000F55414B2F7A711C775041072C4FFC020F554125A940221E7750416F8FC9D9050F5541145E1B7B1F775041C4214FE1070F5541482579CA227750415CBC0EB80A0F55413B6405C3247750416BF840B90C0F554121FBAAA228775041017053F1100F55410A4CC0472C7750411CBF1921140F5541CCD330FB2D77504189CA8715160F55414BA6095637775041E5A8FCCC1C0F554110F34E8C3977504142CFA6241A0F5541BA7337043F7750413E0C21701E0F554143D2627142775041CB983B89200F5541B1464AF54577504153DB12FB210F5541E515553C4D7750412E8807CB250F5541405EFCEC557750417208F3912C0F55413996DCD7597750417E6F7D2B300F5541E3975A4F5D775041379E7926330F55411BFEEF795F7750414798E709350F5541E991640D61775041C04165D5350F554198F7111163775041F5967D3B340F55416CD14CB7657750414272D609370F55414F5A4653697750419C7B89813C0F5541D2B5B2466D77504142C61FDA420F5541C7A1E93170775041682000C9410F5541CE0099506C7750410586E3683B0F554163B1A8A9677750415EFB58FF340F5541337E7A0265775041B0DE0D01320F554105AC263F5A775041BD2F5AAD280F55417DEDDA4458775041FC7B2CEA2A0F554171756B0146775041997491C01C0F5541067DC4BF3D7750413F1DAE24160F5541B35C383D357750410A3B45E90E0F55419ECC8CC230775041FAC540D20A0F5541B2B7A30024775041E20F4250010F55414C8AE2AC15775041F6C4EFFBF60E55413443CBB80D7750414FA4CA9FF10E55412A8445A5027750410C4682E1E90E554130EAE9C7FE7650418DAE4E7FE70E5541E9359DB3F9765041F6D47FDFE40E55417F93621CF8765041A3407D0CE50E55413428A80BF7765041931DE3F4E60E5541777A1B49F7765041EB806020E70E5541D9A4FC22FA765041A74BA4F5E80E5541298264D2FA76504198AFF9ABE90E5541EEF8A5E2FB7650410C472B0FEC0E5541E67455EAFC765041BB01A769ED0E55410BB702580077504125902060F00E5541
+</a>
+
+<b>
+01060000000100000001030000000100000030000000F6285C7F4C7750410AD7A300160F554185EB51484C77504100000040160F5541000000B04B7750410AD7A3F0160F554148E17A644B7750418FC2F548170F5541B81E852B4B775041AE47E18A170F5541333333F34977504152B81EF5180F5541CDCCCCCC49775041E17A141E190F554114AE470149775041A4703DFA190F5541CDCCCC9C48775041666666661A0F554166666616487750417B14AEF71A0F5541295C8F62477750419A9999B91B0F5541AE47E13A4777504152B81EE51B0F5541F6285CAF46775041AE47E17A1C0F5541713D0A3746775041CDCCCCFC1C0F55413D0AD7D345775041000000701D0F5541CDCCCC4C47775041F6285C6F1E0F554152B81ED54D775041E17A141E230F5541C3F5283C5077504148E17AC4240F55413D0AD79356775041AE47E16A290F55417B14AE775777504185EB51082A0F554148E17A2458775041EC51B83E290F5541C3F5286C58775041B81E85EB280F554185EB513859775041D7A370FD270F554107AC263F5A775041C22F5AAD280F55411C26804D5B775041757DA197290F55413C3C49F85E775041E30429C52C0F55412F70DC1462775041061174772F0F5541367E7A0265775041B0DE0D01320F5541FEDBABD065775041A295B1E9320F554165B1A8A96777504159FB58FF340F55412C270C4169775041E10FE030370F5541CD0099506C7750410286E3683B0F55417880CCCC6D775041878298D93D0F55412EB0DF186F775041A50A3AFB3F0F5541920E5EBD6F7750416D6A8109410F5541BF6FE401707750414B3A197A410F5541C3F5282C7077504166666656410F5541AE47E14A71775041D7A3708D400F55411F85EB71717750411F85EB71400F554185EB51B8727750411F85EB813F0F554185EB51E872775041E17A145E3F0F55419A9999396F775041295C8F72390F5541C3F5280C6A7750410AD7A340320F55416666664663775041333333832A0F55415C8FC2B55C77504185EB5108240F55413D0AD7034D77504133333363150F5541713D0AB74C775041000000C0150F5541F6285C7F4C7750410AD7A300160F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984052 - 54290
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000017000000018AB0195C3D5141AC3F9D0940AF544185EB5198413D5141000000803AAF54415D968268403D5141D4D474113BAF5441809E42DA3C3D51417719D79F42AF5441632140FA383D5141F393A8A04AAF5441E17A14CE313D51417B14AE3760AF544168633C1A2C3D5141661D04C075AF5441713D0A67283D5141C3F5287C85AF5441822570DE503D51417136DFDD7EAF5441F88A8D12513D51414BCC54AE7FAF54419DD4D703553D51412D667E6B9DAF54417026455A5D3D51415485109EA0AF5441EE0C0DD0613D514147FAD96AA3AF544116FE08C9703D514152B81E85B2AF5441513044017B3D5141E685C5CEB0AF5441AA189D00863D5141AAC93C61ACAF54416249DC2A883D51410B6DED28AAAF54411936AF278C3D5141A0E9FE3FAAAF5441D3CAF528903D5141EB7F6B86ACAF5441E17A142E9D3D5141B6EC9652ABAF54410CC49B42903D5141FA2E1F234CAF5441EC51B8DE8E3D514152B81EA54AAF5441018AB0195C3D5141AC3F9D0940AF54410E000000B509FD4F5B3D5141DE376E678EAF5441FE1019435A3D5141A91577E180AF5441CECDBCB85A3D51419720214E7FAF54414049CB605B3D514124A512A67EAF5441F741AF6D5C3D5141E0273D417EAF544197BBF6585D3D514182E6A7737EAF544121B6A1225E3D5141F461B61B7FAF54419331B0CA5E3D51417C173E9E80AF5441DAF3A8765E3D51416D3447AC85AF544167789ACE5D3D5141977575BB8EAF5441AE3A937A5D3D51410AF183638FAF54410EC14B8F5C3D514165EDF5E98FAF54419C453DE75B3D5141953052748FAF5441B509FD4F5B3D5141DE376E678EAF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000054E9388D9C3D5141228C7CB1A6AF544159FE2DA3993D5141F76A173991AF54416BA9537C993D5141B9CED81A90AF544106331E60963D51411A32202590AF54411B7F6237993D51419D171FCCA6AF544154E9388D9C3D5141228C7CB1A6AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2065756 - 1530305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000032000000EC51B86EF0D8504185EB51F8A31355411F85EB81F1D85041E17A141EA7135541AE47E11AF2D8504152B81E65A8135541A4703DDAF5D85041D7A3704DA7135541295C8FD2F8D850417B14AEE7A5135541D7A3700DFCD85041295C8FA2A3135541F6285C6FFAD8504185EB51A89F13554148E17AA4F9D85041E17A14CE9C135541713D0A07F9D85041C3F528BC99135541333333A3F8D85041B81E850B97135541F6285C6FF8D85041AE47E10A941355415C8FC255F8D8504152B81ED58E135541EC51B86EF8D85041666666368B13554185EB51D8F8D8504114AE4701871355419A999969F9D85041EC51B89E82135541E17A143EFAD8504148E17AC47D135541CDCCCC9CEFD850419A9999F978135541B81E85BBEED85041E17A144E7C1355415C8FC255EED85041713D0A877F135541713D0A87E6D85041B81E85EB7E135541295C8FC2E2D8504114AE47817E13554152B81EC5DFD85041000000107E1355418FC2F528D7D850415C8FC2857C1355413D0AD723D4D85041666666F67B135541E17A144ECED85041E17A14FE7A1355411F85EBB1CAD85041B81E854B7A135541B81E850BC6D850418FC2F5187913554185EB5178C3D85041F6285C2F78135541713D0AA7C2D8504185EB51E878135541713D0A47C1D85041333333037A13554148E17AD4BFD85041CDCCCC1C7B135541F6285C3FBED85041EC51B82E7C135541E17A149EBCD8504185EB51187D135541F6285CBFBAD8504185EB51F87D13554148E17A44B8D850410AD7A3107F1355411F85EB51BDD85041EC51B8BE8013554148E17A74C0D85041EC51B89E811355413D0AD723C4D8504114AE4781821355410AD7A380CAD850418FC2F5E8831355419A999949D1D8504166666626851355411F85EB51D7D850417B14AE87861355411F85EB61D9D85041CDCCCCDC861355411F85EB21DED8504185EB5188871355419A999949E5D85041000000C08813554114AE4731E8D85041295C8F1289135541F6285C9FEDD85041F6285C6F891355410AD7A3E0EDD850413D0AD7B391135541333333D3EED8504185EB51789C135541A4703D6AEFD850417B14AEE79F135541EC51B86EF0D8504185EB51F8A3135541
+</a>
+
+<b>
+01060000000100000001030000000900000050000000334E3B9CEFD85041311F54F978135541E9461B25EFD850419DE887BE7A135541AC148C34EFD85041B020E87D7A135541ED95DE74EFD850413B3AAE7F79135541DB4D3B9CEFD85041091F54F978135541AE47E11AE7D8504185EB51E874135541AE47E17AE2D85041F6285C2F731355413D0AD733DDD85041AE47E15A71135541E17A146ED4D850410AD7A3706E1355410AD7A300CCD850418FC2F5C86B13554185EB5108CBD8504148E17A246E135541EC51B80ECAD85041A4703D3A70135541CDCCCC3CC8D8504152B81E0573135541209913B0C6D850412E704230751355412BBEFB8DC3D8504151643B2978135541DDED721AC3D8504191C4608878135541EC5BAB35C0D850411E76A4D77A1355411F373556BED85041D07E1A1C7C135541F6DAA553BDD85041566A6CB47C1355413EBC20A8BCD85041576A6C147D135541E53853B2BBD85041EA870D867D135541B4C7FBEAB9D850417C88875F7E1355417D8ED95DB8D85041B6B871F97E135541D0BF4F47B8D850416EC9630F7F13554109CCF843B8D85041767B120E7F135541E60C5CA4B7D85041AD4BCFEA7E1355410EEC1FE3B6D850419C7B7CD77E135541C4B5B5F8B4D85041739538C97E1355412B45788EB0D85041E3D242A07E13554187ABDEB4AED85041D9FB9EAF7E13554187ABDEB4ADD850417D6CDCB97E13554154A10711ADD85041D9D242C07E13554135F3BF4FACD850414A39A9C67E135541C5DE11E8ABD850412B8B61C57E13554109A03FB7ABD850418BAB29C47E135541D7A370ADACD8504114AE478189135541666666D6B1D850413D0AD7138A135541F6285CEFB6D85041D7A370CD8A135541A4703DAABBD8504148E17A748B135541666666C6BDD85041333333F38B135541AE47E19ABFD85041A4703D9A8C135541C3F5281CC1D85041295C8F828D135541713D0A07C3D85041333333138F13554148E17AE4C7D85041295C8F829313554114AE47E1CAD850410AD7A34096135541C3F5282CCED85041C3F5284C99135541295C8F32D0D85041295C8F029B135541C3F5285CD2D850411F85EBA19C1355418FC2F528D4D850413D0AD7D39D1355417B14AE77D6D85041333333339F135541CDCCCCACD8D8504133333363A01355418FC2F5C8DAD850415C8FC235A1135541E17A14DEDCD8504148E17A04A2135541A4703D5AE1D85041E17A149EA313554133333363E2D85041E17A148EA71355413D0AD733ECD850418FC2F588A813554167BEBB7CF0D8504150BA40B9A81355413D0AD7B3F0D85041AE47E1BAA813554115069D17F1D85041DF7C36A2A8135541AE47E11AF2D8504152B81E65A8135541A4703DDAF5D85041D7A3704DA7135541295C8FD2F8D850417B14AEE7A5135541D7A3700DFCD85041295C8FA2A3135541E17A145EFED850418FC2F528A21355418FC2F5E803D95041666666B69E1355411F85EB1106D95041F6285C1F9E135541B81E851B09D9504185EB51789D1355410AD7A3A00DD95041000000D09C1355419A99990910D950411F85EBA19C135541C3F5285C11D950417B14AEB79C135541AE47E1AA15D95041A4703DFA9D135541E17A14BE17D95041295C8FB29E1355410AD7A31018D95041CDCCCCFC9C135541AE47E14A15D95041A4703D3A991355418FC2F5080ED9504114AE47A1901355415C8FC25503D95041666666B6841355413D0AD783FFD8504114AE47318113554100000050FCD850417B14AEE77E135541E17A143EFAD8504148E17AC47D135541334E3B9CEFD85041311F54F9781355410A00000062C417BEEED850417AAE74889B1355413969D4AEEED8504178BD8FFD9A135541B7928493EED85041118C64AF99135541A4DFA17EEED85041940196B998135541D99A8866EED85041B4535ABD9713554197304153EED85041C2A19CD796135541A834C33CEED850414E198FD695135541BA384526EED850419A2479CD9413554194943925EED85041813D3FBF9413554162C417BEEED850417AAE74889B1355410600000045FFE310EED8504156632AD893135541D33E8804EED8504144F7CF68931355412CA949F7EDD85041E869C0C2921355419AD601E6EDD850411D818B02921355413351DDE2EDD8504117A51ECD9113554145FFE310EED8504156632AD8931355410A0000009C223173F0D8504115D56905A41355411F85EB81F1D85041E17A141EA71355416A3094C7F1D85041D31104B3A713554188539C86F1D85041B91CEF2BA713554162EDD65CF1D850414C9F42B8A61355411E16AE43F1D8504115DDFE68A6135541CD63A42CF1D850418D02AB27A6135541C707A4CAF0D85041EA111708A51355414184B478F0D85041DDAAB518A41355419C223173F0D8504115D56905A4135541060000003FB6B2D4EED8504142BD0A819C13554127420C22EFD85041AA0360439E135541CE242213EFD8504112B069F59D1355412AB4E4E8EED850411C870D069D1355418E86FED6EED85041A2E0739A9C1355413FB6B2D4EED8504142BD0A819C13554109000000CDB8D3DFEDD8504127867B999113554136B394DFEDD8504120274C95911355414939D0DAEDD850413135553791135541F4066DD6EDD850410F5BE1BB9013554187231FD1EDD85041A2959EFB8F135541901A4BCFEDD85041DF7C36B28F135541901A4BCFEDD8504108D9C5A48F135541F81910D0EDD850411061629A8F135541CDB8D3DFEDD8504127867B99911355410600000042E614CEEDD850413518265A8F135541FE484DCCEDD8504132BA30318F135541015855C6EDD85041313555978E135541F780B1B5EDD85041979BBB4D8C135541D01E97B4EDD85041C119AE1F8C13554142E614CEEDD850413518265A8F1355410400000030994F38EFD85041CDC3FDC49E13554161715C60EFD850414C2C2AAE9F13554167BEBB4CEFD85041979BBB4D9F13554130994F38EFD85041CDC3FDC49E135541050000006F850685EED85041F9D7DC077E135541C69AFCA0EED85041440454FC7C13554152DBDFB1EED85041688A0A787C1355419BF008BAEED85041BB911E5A7C1355416F850685EED85041F9D7DC077E135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2065756 - 3698515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000032000000EC51B86EF0D8504185EB51F8A31355411F85EB81F1D85041E17A141EA7135541AE47E11AF2D8504152B81E65A8135541A4703DDAF5D85041D7A3704DA7135541295C8FD2F8D850417B14AEE7A5135541D7A3700DFCD85041295C8FA2A3135541F6285C6FFAD8504185EB51A89F13554148E17AA4F9D85041E17A14CE9C135541713D0A07F9D85041C3F528BC99135541333333A3F8D85041B81E850B97135541F6285C6FF8D85041AE47E10A941355415C8FC255F8D8504152B81ED58E135541EC51B86EF8D85041666666368B13554185EB51D8F8D8504114AE4701871355419A999969F9D85041EC51B89E82135541E17A143EFAD8504148E17AC47D135541CDCCCC9CEFD850419A9999F978135541B81E85BBEED85041E17A144E7C1355415C8FC255EED85041713D0A877F135541713D0A87E6D85041B81E85EB7E135541295C8FC2E2D8504114AE47817E13554152B81EC5DFD85041000000107E1355418FC2F528D7D850415C8FC2857C1355413D0AD723D4D85041666666F67B135541E17A144ECED85041E17A14FE7A1355411F85EBB1CAD85041B81E854B7A135541B81E850BC6D850418FC2F5187913554185EB5178C3D85041F6285C2F78135541713D0AA7C2D8504185EB51E878135541713D0A47C1D85041333333037A13554148E17AD4BFD85041CDCCCC1C7B135541F6285C3FBED85041EC51B82E7C135541E17A149EBCD8504185EB51187D135541F6285CBFBAD8504185EB51F87D13554148E17A44B8D850410AD7A3107F1355411F85EB51BDD85041EC51B8BE8013554148E17A74C0D85041EC51B89E811355413D0AD723C4D8504114AE4781821355410AD7A380CAD850418FC2F5E8831355419A999949D1D8504166666626851355411F85EB51D7D850417B14AE87861355411F85EB61D9D85041CDCCCCDC861355411F85EB21DED8504185EB5188871355419A999949E5D85041000000C08813554114AE4731E8D85041295C8F1289135541F6285C9FEDD85041F6285C6F891355410AD7A3E0EDD850413D0AD7B391135541333333D3EED8504185EB51789C135541A4703D6AEFD850417B14AEE79F135541EC51B86EF0D8504185EB51F8A3135541
+</a>
+
+<b>
+01060000000100000001030000000900000050000000334E3B9CEFD85041311F54F978135541E9461B25EFD850419DE887BE7A135541AC148C34EFD85041B020E87D7A135541ED95DE74EFD850413B3AAE7F79135541DB4D3B9CEFD85041091F54F978135541AE47E11AE7D8504185EB51E874135541AE47E17AE2D85041F6285C2F731355413D0AD733DDD85041AE47E15A71135541E17A146ED4D850410AD7A3706E1355410AD7A300CCD850418FC2F5C86B13554185EB5108CBD8504148E17A246E135541EC51B80ECAD85041A4703D3A70135541CDCCCC3CC8D8504152B81E0573135541209913B0C6D850412E704230751355412BBEFB8DC3D8504151643B2978135541DDED721AC3D8504191C4608878135541EC5BAB35C0D850411E76A4D77A1355411F373556BED85041D07E1A1C7C135541F6DAA553BDD85041566A6CB47C1355413EBC20A8BCD85041576A6C147D135541E53853B2BBD85041EA870D867D135541B4C7FBEAB9D850417C88875F7E1355417D8ED95DB8D85041B6B871F97E135541D0BF4F47B8D850416EC9630F7F13554109CCF843B8D85041767B120E7F135541E60C5CA4B7D85041AD4BCFEA7E1355410EEC1FE3B6D850419C7B7CD77E135541C4B5B5F8B4D85041739538C97E1355412B45788EB0D85041E3D242A07E13554187ABDEB4AED85041D9FB9EAF7E13554187ABDEB4ADD850417D6CDCB97E13554154A10711ADD85041D9D242C07E13554135F3BF4FACD850414A39A9C67E135541C5DE11E8ABD850412B8B61C57E13554109A03FB7ABD850418BAB29C47E135541D7A370ADACD8504114AE478189135541666666D6B1D850413D0AD7138A135541F6285CEFB6D85041D7A370CD8A135541A4703DAABBD8504148E17A748B135541666666C6BDD85041333333F38B135541AE47E19ABFD85041A4703D9A8C135541C3F5281CC1D85041295C8F828D135541713D0A07C3D85041333333138F13554148E17AE4C7D85041295C8F829313554114AE47E1CAD850410AD7A34096135541C3F5282CCED85041C3F5284C99135541295C8F32D0D85041295C8F029B135541C3F5285CD2D850411F85EBA19C1355418FC2F528D4D850413D0AD7D39D1355417B14AE77D6D85041333333339F135541CDCCCCACD8D8504133333363A01355418FC2F5C8DAD850415C8FC235A1135541E17A14DEDCD8504148E17A04A2135541A4703D5AE1D85041E17A149EA313554133333363E2D85041E17A148EA71355413D0AD733ECD850418FC2F588A813554167BEBB7CF0D8504150BA40B9A81355413D0AD7B3F0D85041AE47E1BAA813554115069D17F1D85041DF7C36A2A8135541AE47E11AF2D8504152B81E65A8135541A4703DDAF5D85041D7A3704DA7135541295C8FD2F8D850417B14AEE7A5135541D7A3700DFCD85041295C8FA2A3135541E17A145EFED850418FC2F528A21355418FC2F5E803D95041666666B69E1355411F85EB1106D95041F6285C1F9E135541B81E851B09D9504185EB51789D1355410AD7A3A00DD95041000000D09C1355419A99990910D950411F85EBA19C135541C3F5285C11D950417B14AEB79C135541AE47E1AA15D95041A4703DFA9D135541E17A14BE17D95041295C8FB29E1355410AD7A31018D95041CDCCCCFC9C135541AE47E14A15D95041A4703D3A991355418FC2F5080ED9504114AE47A1901355415C8FC25503D95041666666B6841355413D0AD783FFD8504114AE47318113554100000050FCD850417B14AEE77E135541E17A143EFAD8504148E17AC47D135541334E3B9CEFD85041311F54F9781355410A00000062C417BEEED850417AAE74889B1355413969D4AEEED8504178BD8FFD9A135541B7928493EED85041118C64AF99135541A4DFA17EEED85041940196B998135541D99A8866EED85041B4535ABD9713554197304153EED85041C2A19CD796135541A834C33CEED850414E198FD695135541BA384526EED850419A2479CD9413554194943925EED85041813D3FBF9413554162C417BEEED850417AAE74889B1355410600000045FFE310EED8504156632AD893135541D33E8804EED8504144F7CF68931355412CA949F7EDD85041E869C0C2921355419AD601E6EDD850411D818B02921355413351DDE2EDD8504117A51ECD9113554145FFE310EED8504156632AD8931355410A0000009C223173F0D8504115D56905A41355411F85EB81F1D85041E17A141EA71355416A3094C7F1D85041D31104B3A713554188539C86F1D85041B91CEF2BA713554162EDD65CF1D850414C9F42B8A61355411E16AE43F1D8504115DDFE68A6135541CD63A42CF1D850418D02AB27A6135541C707A4CAF0D85041EA111708A51355414184B478F0D85041DDAAB518A41355419C223173F0D8504115D56905A4135541060000003FB6B2D4EED8504142BD0A819C13554127420C22EFD85041AA0360439E135541CE242213EFD8504112B069F59D1355412AB4E4E8EED850411C870D069D1355418E86FED6EED85041A2E0739A9C1355413FB6B2D4EED8504142BD0A819C13554109000000CDB8D3DFEDD8504127867B999113554136B394DFEDD8504120274C95911355414939D0DAEDD850413135553791135541F4066DD6EDD850410F5BE1BB9013554187231FD1EDD85041A2959EFB8F135541901A4BCFEDD85041DF7C36B28F135541901A4BCFEDD8504108D9C5A48F135541F81910D0EDD850411061629A8F135541CDB8D3DFEDD8504127867B99911355410600000042E614CEEDD850413518265A8F135541FE484DCCEDD8504132BA30318F135541015855C6EDD85041313555978E135541F780B1B5EDD85041979BBB4D8C135541D01E97B4EDD85041C119AE1F8C13554142E614CEEDD850413518265A8F1355410400000030994F38EFD85041CDC3FDC49E13554161715C60EFD850414C2C2AAE9F13554167BEBB4CEFD85041979BBB4D9F13554130994F38EFD85041CDC3FDC49E135541050000006F850685EED85041F9D7DC077E135541C69AFCA0EED85041440454FC7C13554152DBDFB1EED85041688A0A787C1355419BF008BAEED85041BB911E5A7C1355416F850685EED85041F9D7DC077E135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 389154
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A2154418E380675F69750418DA24BEF4121544170260DF7F89750418DA24BEF41215441A7EBEEC6F79750412634D00646215441B9828F61F79750416931424548215441B9828F61F7975041AD2EB4834A215441577324A5F7975041F02B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A2E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D842266B1A985041393312BA4621544198C29C6F19985041E952A67F4521544159896640199850412CA703F2442154415DF100091898504133BFB60A432154413197E9FB1798504107659FFD42215441AB1901F417985041382BDAE94221544114AE479117985041F6285C4F422154417961FC0616985041BF451F9B3D2154418C8A0C0116985041562032943D215441DB02D722169850418CE513643C2154413D1242DF15985041629B8A773B2154414FA9E27915985041ABF70CE2392154414E36937314985041F7F8C6BF31215441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000AE47E11A1098504148E17AA465215441E17A142E139850411F85EBE162215441F6285C9F17985041D7A3709D5E2154419A9999A91A985041000000105C215441A4703DAA1C9850415C8FC2E559215441A4703DAA199850417B14AEF754215441666666A6159850419A9999794F215441D7A3707D11985041A4703DFA4921544152B81E150E985041F6285C3F45215441D7A3700D0B9850413333335345215441EC51B88E0B985041A4703D8A422154418FC2F5580C9850418FC2F5D83F2154417B14AE170D985041D7A3704D3E2154411F85EB610E985041A4703D8A3D2154411F85EB911198504185EB51083C2154417B14AE7715985041000000503A2154410AD7A37014985041713D0AA7312154419A9999A9109850413D0AD7D3312154413D0AD7630E985041AE47E1CA312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A21544114AE47D108985041000000302B215441E17A144E08985041EC51B8FE1C2154419A9999A9FA9750415C8FC2151F21544152B81E35FA9750416666663621215441E17A14DEF997504148E17A04242154410AD7A360F9975041B81E85EB262154418FC2F5D8F8975041A4703DFA292154419A999939F897504185EB51582F215441CDCCCC0CF89750415C8FC2F533215441B81E854BF897504152B81E5538215441B81E85EBF897504185EB51183B21544114AE4791FA975041B81E85FB3C2154411F85EB01FA975041295C8F2243215441B81E854BF89750419A9999F943215441E17A148EF7975041C3F5284C49215441CDCCCC0CF897504148E17A544C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A146821544152B81E250E9850410AD7A34067215441AE47E11A1098504148E17AA465215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 389215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A2154418E380675F69750418DA24BEF4121544170260DF7F89750418DA24BEF41215441A7EBEEC6F79750412634D00646215441B9828F61F79750416931424548215441B9828F61F7975041AD2EB4834A215441577324A5F7975041F02B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A2E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D842266B1A985041393312BA4621544198C29C6F19985041E952A67F4521544159896640199850412CA703F2442154415DF100091898504133BFB60A432154413197E9FB1798504107659FFD42215441AB1901F417985041382BDAE94221544114AE479117985041F6285C4F422154417961FC0616985041BF451F9B3D2154418C8A0C0116985041562032943D215441DB02D722169850418CE513643C2154413D1242DF15985041629B8A773B2154414FA9E27915985041ABF70CE2392154414E36937314985041F7F8C6BF31215441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441C3F528EC1A985041A4703D5A06215441EC51B81E1C985041C3F5287C022154419A9999291D9850418FC2F568FF205441000000D01F9850415C8FC295F920544114AE47D1249850411F85EB61F22054413D0AD743249850419A999989F1205441000000C01F985041EC51B87EEA205441E17A146E1B985041713D0A77E3205441B81E857B17985041295C8F52E6205441A4703DBA1398504185EB51C8E9205441713D0A97109850417B14AE57ED205441A4703DCA0C98504152B81E65F220544114AE478109985041B81E85DBF6205441CDCCCCDC05985041F6285C8FFC205441F6285C9F03985041C3F528AC00215441AE47E1AA0198504148E17A6405215441AE47E10A00985041713D0AF709215441AE47E1BAFD975041AE47E15A10215441AE47E13AFC97504152B81EB5162154411F85EB51FB97504114AE47911B2154419A9999A9FA9750415C8FC2151F215441E17A144E08985041EC51B8FE1C21544114AE47D108985041000000302B215441713D0A670D9850413D0AD7E32A2154418FC2F5F80D985041D7A3701D302154413D0AD7630E985041AE47E1CA312154419A9999A9109850413D0AD7D3312154410AD7A37014985041713D0AA7312154417B14AE7715985041000000503A215441CDCCCCAC159850417B14AE873C21544114AE479117985041F6285C4F42215441C3F528DC199850415C8FC2E545215441666666261D98504185EB51C84A2154416666665620985041A4703DAA4F215441713D0A87239850413D0AD77353215441CDCCCC6C2498504100000090542154417B14AE87259850416666668653215441E17A14CE2898504148E17A745021544148E17A942A985041AE47E1CA4E215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 1817284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A2154418E380675F69750418DA24BEF4121544170260DF7F89750418DA24BEF41215441A7EBEEC6F79750412634D00646215441B9828F61F79750416931424548215441B9828F61F7975041AD2EB4834A215441577324A5F7975041F02B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A2E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D842266B1A985041393312BA4621544198C29C6F19985041E952A67F4521544159896640199850412CA703F2442154415DF100091898504133BFB60A432154413197E9FB1798504107659FFD42215441AB1901F417985041382BDAE94221544114AE479117985041F6285C4F422154417961FC0616985041BF451F9B3D2154418C8A0C0116985041562032943D215441DB02D722169850418CE513643C2154413D1242DF15985041629B8A773B2154414FA9E27915985041ABF70CE2392154414E36937314985041F7F8C6BF31215441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B2154419AF7CCCC1E9850411BED79E71B215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441C3F528EC1A985041A4703D5A06215441EC51B81E1C985041C3F5287C022154419A9999291D9850418FC2F568FF205441000000D01F9850415C8FC295F920544114AE47D1249850411F85EB61F22054413D0AD743249850419A999989F1205441000000C01F985041EC51B87EEA205441E17A146E1B985041713D0A77E3205441B81E857B17985041295C8F52E6205441A4703DBA1398504185EB51C8E9205441713D0A97109850417B14AE57ED205441A4703DCA0C98504152B81E65F220544114AE478109985041B81E85DBF6205441CDCCCCDC05985041F6285C8FFC205441F6285C9F03985041C3F528AC00215441AE47E1AA0198504148E17A6405215441AE47E10A00985041713D0AF709215441AE47E1BAFD975041AE47E15A10215441AE47E13AFC97504152B81EB5162154411F85EB51FB97504114AE47911B2154419A9999A9FA9750415C8FC2151F215441E17A144E08985041EC51B8FE1C21544114AE47D108985041000000302B215441713D0A670D9850413D0AD7E32A2154418FC2F5F80D985041D7A3701D302154413D0AD7630E985041AE47E1CA312154419A9999A9109850413D0AD7D3312154410AD7A37014985041713D0AA7312154417B14AE7715985041000000503A215441CDCCCCAC159850417B14AE873C21544114AE479117985041F6285C4F42215441C3F528DC199850415C8FC2E545215441666666261D98504185EB51C84A2154416666665620985041A4703DAA4F215441713D0A87239850413D0AD77353215441CDCCCC6C2498504100000090542154417B14AE87259850416666668653215441E17A14CE2898504148E17A745021544148E17A942A985041AE47E1CA4E215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 3443061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A2154418E380675F69750418DA24BEF4121544170260DF7F89750418DA24BEF41215441A7EBEEC6F79750412634D00646215441B9828F61F79750416931424548215441B9828F61F7975041AD2EB4834A215441577324A5F7975041F02B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A2E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D842266B1A985041393312BA4621544198C29C6F19985041E952A67F4521544159896640199850412CA703F2442154415DF100091898504133BFB60A432154413197E9FB1798504107659FFD42215441AB1901F417985041382BDAE94221544114AE479117985041F6285C4F422154417961FC0616985041BF451F9B3D2154418C8A0C0116985041562032943D215441DB02D722169850418CE513643C2154413D1242DF15985041629B8A773B2154414FA9E27915985041ABF70CE2392154414E36937314985041F7F8C6BF31215441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B2154419AF7CCCC1E9850411BED79E71B215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441C3F528EC1A985041A4703D5A06215441EC51B81E1C985041C3F5287C022154419A9999291D9850418FC2F568FF205441000000D01F9850415C8FC295F920544114AE47D1249850411F85EB61F22054413D0AD743249850419A999989F1205441000000C01F985041EC51B87EEA205441E17A146E1B985041713D0A77E3205441B81E857B17985041295C8F52E6205441A4703DBA1398504185EB51C8E9205441713D0A97109850417B14AE57ED205441A4703DCA0C98504152B81E65F220544114AE478109985041B81E85DBF6205441CDCCCCDC05985041F6285C8FFC205441F6285C9F03985041C3F528AC00215441AE47E1AA0198504148E17A6405215441AE47E10A00985041713D0AF709215441AE47E1BAFD975041AE47E15A10215441AE47E13AFC97504152B81EB5162154411F85EB51FB97504114AE47911B2154419A9999A9FA9750415C8FC2151F215441E17A144E08985041EC51B8FE1C21544114AE47D108985041000000302B215441713D0A670D9850413D0AD7E32A2154418FC2F5F80D985041D7A3701D302154413D0AD7630E985041AE47E1CA312154419A9999A9109850413D0AD7D3312154410AD7A37014985041713D0AA7312154417B14AE7715985041000000503A215441CDCCCCAC159850417B14AE873C21544114AE479117985041F6285C4F42215441C3F528DC199850415C8FC2E545215441666666261D98504185EB51C84A2154416666665620985041A4703DAA4F215441713D0A87239850413D0AD77353215441CDCCCC6C2498504100000090542154417B14AE87259850416666668653215441E17A14CE2898504148E17A745021544148E17A942A985041AE47E1CA4E215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984266 - 1150821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000042000000961FF172605D51419F50EBE8314254417F2075AE615D51412E9F1BA0314254411DAB6EB9625D514189763DEB2F42544106ACF2F4635D51413662CE102F4254417FFBA6E7645D5141102789F82E425441ACD4D0A9655D5141A7139E592F42544142C1E50A665D5141459E976430425441483FD665665D5141F6EFBDB03142544131642FE0665D51414C111CD2314254410712FC38685D51414C111CD231425441A64146BE695D514131D25AE8314254417BEF12176B5D514155D9509A3242544167B28E956C5D5141F9023F6D334254419C299D016E5D5141DB65DEFE33425441C67AF64D6F5D5141A6AF71C63442544141A34A21705D5141AA138C2A35425441D70A60DE705D51418ED4CA40354254418E1551E9715D5141C1EE32B0344254417B9EC4C7725D5141F4089B1F344254410DA2BF20735D5141D8C9D93534425441DFB7A6FA735D51416AB40EB633425441ACD109A6745D51415DA185623342544142391F63755D514107802741334254414108DF28765D514118A09FDB32425441010C4536775D5141C3D5554132425441E630BDDD775D51417277C12631425441F75CEDDC785D51415F88A8F330425441C8A69FD1795D514192A21063304254410C47342F7B5D51413D00B3BA2F42544139205EF17B5D514181D858412F4254410B2266687E5D5141A09A87762B42544139FB8F2A7F5D514102108E6B2A42544165AFEB25835D514137F6062C2242544122D7459F835D51413058228221425441658A1D5F865D5141DD43B3A72042544165654F98895D514128BA3DD820425441B0B60B028D5D5141211C592E20425441C66BEB38925D5141F4422F6C1F425441B72F22E5905D5141C66905AA1E42544183DDE13F8C5D51415D561A0B1F42544192634721875D5141197E74841F425441B1257656835D5141B06A89E51F425441045FB3F7805D51418A5412941C425441961C4E03775D51411B377B660F4254412D53FFF1705D51417EF61DE9074254415B51F77A6E5D51417E1BECAF04425441729A0FCD665D5141C262FC8AFA41544154227D25645D51412C9BB5F0F64154416B46C7B05F5D5141C3D166DFF04154419944BF395D5D51419EBBEF8DED41544192F0761D565D5141E1939514ED415441363E2399545D51419F59D437EE415441B0B2A552525D5141E89D41A3FA4154412727280C505D51416A29BFE9FC415441A09BAAC54D5D514116F08148FF4154414EAC09B2495D5141D2F20DFB02425441C9208C6B475D51410B08011105425441856DB4AB445D51411A1FFC9D09425441F54352BB415D51414172C07E0F4254418C30671C425D5141C03A8B54144254414858C195425D5141FC4F7E6A16425441C1A77588435D51416DDC7FEC19425441ED3603BD4A5D5141B06A89E51F42544145C4887A4F5D5141B2E39FC823425441DE413387595D5141AA386C202C425441961FF172605D51419F50EBE83142544105000000BC3568C4635D51412429A82C174254410787242E675D51417762E5CD14425441CA4C6351685D51418D3C93CB164254415AC061CF645D51417EDBFBB018425441BC3568C4635D51412429A82C17425441
+</a>
+
+<b>
+01060000000100000001030000000200000042000000921FF172605D51419B50EBE8314254417E2075AE615D51412D9F1BA03142544119AB6EB9625D51418E763DEB2F42544105ACF2F4635D51413962CE102F42544182FBA6E7645D5141102789F82E425441AFD4D0A9655D5141A7139E592F42544145C1E50A665D5141429E976430425441473FD665665D5141FBEFBDB03142544131642FE0665D51414E111CD2314254410A12FC38685D51414E111CD231425441A34146BE695D514134D25AE8314254417CEF12176B5D514157D9509A324254416BB28E956C5D5141F5023F6D334254419C299D016E5D5141DC65DEFE33425441C67AF64D6F5D5141A5AF71C6344254413CA34A21705D5141AA138C2A35425441D80A60DE705D514190D4CA4035425441921551E9715D5141C0EE32B034425441809EC4C7725D5141F0089B1F344254410CA2BF20735D5141D6C9D93534425441DAB7A6FA735D51416EB40EB633425441B0D109A6745D51415FA185623342544141391F63755D51410C802741334254414308DF28765D514119A09FDB32425441030C4536775D5141C0D5554132425441E330BDDD775D51416F77C12631425441FB5CEDDC785D51415F88A8F330425441C4A69FD1795D514190A21063304254410F47342F7B5D51413D00B3BA2F4254413C205EF17B5D51417FD858412F425441082266687E5D51419E9A87762B42544135FB8F2A7F5D514103108E6B2A42544166AFEB25835D514134F6062C2242544125D7459F835D51412F582282214254416A8A1D5F865D5141DA43B3A72042544163654F98895D51412BBA3DD820425441ADB60B028D5D5141261C592E20425441C96BEB38925D5141F9422F6C1F425441B52F22E5905D5141C26905AA1E42544180DDE13F8C5D514158561A0B1F42544197634721875D5141177E74841F425441AC257656835D5141AD6A89E51F425441085FB3F7805D51418C5412941C425441991C4E03775D514118377B660F4254413253FFF1705D514180F61DE9074254415B51F77A6E5D51417C1BECAF04425441729A0FCD665D5141C762FC8AFA41544155227D25645D51412D9BB5F0F64154417046C7B05F5D5141C6D166DFF04154419944BF395D5D51419ABBEF8DED4154418DF0761D565D5141E6939514ED415441333E2399545D51419F59D437EE415441ADB2A552525D5141E59D41A3FA4154412627280C505D51416B29BFE9FC415441A09BAAC54D5D51411AF08148FF41544151AC09B2495D5141D2F20DFB02425441CB208C6B475D51410808011105425441856DB4AB445D5141151FFC9D09425441FA4352BB415D51414172C07E0F4254419130671C425D5141BC3A8B54144254414558C195425D5141FD4F7E6A16425441C2A77588435D51416FDC7FEC19425441EC3603BD4A5D5141AD6A89E51F4254414AC4887A4F5D5141B6E39FC823425441E1413387595D5141AE386C202C425441921FF172605D51419B50EBE83142544105000000BF3568C4635D51411F29A82C174254410887242E675D51417B62E5CD14425441CC4C6351685D5141883C93CB164254415AC061CF645D514183DBFBB018425441BF3568C4635D51411F29A82C17425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984266 - 3944990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000042000000961FF172605D51419F50EBE8314254417F2075AE615D51412E9F1BA0314254411DAB6EB9625D514189763DEB2F42544106ACF2F4635D51413662CE102F4254417FFBA6E7645D5141102789F82E425441ACD4D0A9655D5141A7139E592F42544142C1E50A665D5141459E976430425441483FD665665D5141F6EFBDB03142544131642FE0665D51414C111CD2314254410712FC38685D51414C111CD231425441A64146BE695D514131D25AE8314254417BEF12176B5D514155D9509A3242544167B28E956C5D5141F9023F6D334254419C299D016E5D5141DB65DEFE33425441C67AF64D6F5D5141A6AF71C63442544141A34A21705D5141AA138C2A35425441D70A60DE705D51418ED4CA40354254418E1551E9715D5141C1EE32B0344254417B9EC4C7725D5141F4089B1F344254410DA2BF20735D5141D8C9D93534425441DFB7A6FA735D51416AB40EB633425441ACD109A6745D51415DA185623342544142391F63755D514107802741334254414108DF28765D514118A09FDB32425441010C4536775D5141C3D5554132425441E630BDDD775D51417277C12631425441F75CEDDC785D51415F88A8F330425441C8A69FD1795D514192A21063304254410C47342F7B5D51413D00B3BA2F42544139205EF17B5D514181D858412F4254410B2266687E5D5141A09A87762B42544139FB8F2A7F5D514102108E6B2A42544165AFEB25835D514137F6062C2242544122D7459F835D51413058228221425441658A1D5F865D5141DD43B3A72042544165654F98895D514128BA3DD820425441B0B60B028D5D5141211C592E20425441C66BEB38925D5141F4422F6C1F425441B72F22E5905D5141C66905AA1E42544183DDE13F8C5D51415D561A0B1F42544192634721875D5141197E74841F425441B1257656835D5141B06A89E51F425441045FB3F7805D51418A5412941C425441961C4E03775D51411B377B660F4254412D53FFF1705D51417EF61DE9074254415B51F77A6E5D51417E1BECAF04425441729A0FCD665D5141C262FC8AFA41544154227D25645D51412C9BB5F0F64154416B46C7B05F5D5141C3D166DFF04154419944BF395D5D51419EBBEF8DED41544192F0761D565D5141E1939514ED415441363E2399545D51419F59D437EE415441B0B2A552525D5141E89D41A3FA4154412727280C505D51416A29BFE9FC415441A09BAAC54D5D514116F08148FF4154414EAC09B2495D5141D2F20DFB02425441C9208C6B475D51410B08011105425441856DB4AB445D51411A1FFC9D09425441F54352BB415D51414172C07E0F4254418C30671C425D5141C03A8B54144254414858C195425D5141FC4F7E6A16425441C1A77588435D51416DDC7FEC19425441ED3603BD4A5D5141B06A89E51F42544145C4887A4F5D5141B2E39FC823425441DE413387595D5141AA386C202C425441961FF172605D51419F50EBE83142544105000000BC3568C4635D51412429A82C174254410787242E675D51417762E5CD14425441CA4C6351685D51418D3C93CB164254415AC061CF645D51417EDBFBB018425441BC3568C4635D51412429A82C17425441
+</a>
+
+<b>
+01060000000100000001030000000200000042000000921FF172605D51419B50EBE8314254417E2075AE615D51412D9F1BA03142544119AB6EB9625D51418E763DEB2F42544105ACF2F4635D51413962CE102F42544182FBA6E7645D5141102789F82E425441AFD4D0A9655D5141A7139E592F42544145C1E50A665D5141429E976430425441473FD665665D5141FBEFBDB03142544131642FE0665D51414E111CD2314254410A12FC38685D51414E111CD231425441A34146BE695D514134D25AE8314254417CEF12176B5D514157D9509A324254416BB28E956C5D5141F5023F6D334254419C299D016E5D5141DC65DEFE33425441C67AF64D6F5D5141A5AF71C6344254413CA34A21705D5141AA138C2A35425441D80A60DE705D514190D4CA4035425441921551E9715D5141C0EE32B034425441809EC4C7725D5141F0089B1F344254410CA2BF20735D5141D6C9D93534425441DAB7A6FA735D51416EB40EB633425441B0D109A6745D51415FA185623342544141391F63755D51410C802741334254414308DF28765D514119A09FDB32425441030C4536775D5141C0D5554132425441E330BDDD775D51416F77C12631425441FB5CEDDC785D51415F88A8F330425441C4A69FD1795D514190A21063304254410F47342F7B5D51413D00B3BA2F4254413C205EF17B5D51417FD858412F425441082266687E5D51419E9A87762B42544135FB8F2A7F5D514103108E6B2A42544166AFEB25835D514134F6062C2242544125D7459F835D51412F582282214254416A8A1D5F865D5141DA43B3A72042544163654F98895D51412BBA3DD820425441ADB60B028D5D5141261C592E20425441C96BEB38925D5141F9422F6C1F425441B52F22E5905D5141C26905AA1E42544180DDE13F8C5D514158561A0B1F42544197634721875D5141177E74841F425441AC257656835D5141AD6A89E51F425441085FB3F7805D51418C5412941C425441991C4E03775D514118377B660F4254413253FFF1705D514180F61DE9074254415B51F77A6E5D51417C1BECAF04425441729A0FCD665D5141C762FC8AFA41544155227D25645D51412D9BB5F0F64154417046C7B05F5D5141C6D166DFF04154419944BF395D5D51419ABBEF8DED4154418DF0761D565D5141E6939514ED415441333E2399545D51419F59D437EE415441ADB2A552525D5141E59D41A3FA4154412627280C505D51416B29BFE9FC415441A09BAAC54D5D51411AF08148FF41544151AC09B2495D5141D2F20DFB02425441CB208C6B475D51410808011105425441856DB4AB445D5141151FFC9D09425441FA4352BB415D51414172C07E0F4254419130671C425D5141BC3A8B54144254414558C195425D5141FD4F7E6A16425441C2A77588435D51416FDC7FEC19425441EC3603BD4A5D5141AD6A89E51F4254414AC4887A4F5D5141B6E39FC823425441E1413387595D5141AE386C202C425441921FF172605D51419B50EBE83142544105000000BF3568C4635D51411F29A82C174254410887242E675D51417B62E5CD14425441CC4C6351685D5141883C93CB164254415AC061CF645D514183DBFBB018425441BF3568C4635D51411F29A82C17425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160669 - 160887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BAF3068E8B405141DB2278360B1B554174A6BB6E8C4051418170EE070D1B55414F2F27AC8D4051418A1AF1DE0E1B55418DCE1A108F4051410ACD20EF101B5541B2655A8F93405141F5A4A758151B554180F0256A99405141FE38CA2E1A1B5541152B190DA140514105834E1F201B5541F877B0AFA34051412086AB8F221B5541D7A370EDAF405141B81E858B1A1B554152B81EA5CC4051411F85EBA1071B5541B81E857BC84051417B14AE37FD1A55418FC2F5A8B7405141713D0AC7D31A55411F85EB21B140514114AE4781C31A55417B14AEE789405141AE47E1BAD81A5541B81E85CB754051410AD7A3E0E31A5541B81E85EB77405141713D0A77E61A55413333338379405141713D0A67E81A5541D7A3705D7A4051411F85EBD1E91A5541F6285C2F7F4051410AD7A3D0F11A55410AD7A3A0824051418FC2F578FB1A55415BBC702483405141AA7BD438001B5541A0CA7A8B83405141D906CAB1001B5541960BE363874051414D7DAACB031B55412D597F108840514155F60367041B5541E7EDBE81894051414EEA8DFC061B554122BFA3B789405141DCA1BE99071B55413E31A13E8B405141DAC600920A1B5541BAF3068E8B405141DB2278360B1B5541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F877B0AFA34051412086AB8F221B55419234EA6CA1405141DD33FD77201B5541BBC5EEFF994051414CFB49A31A1B554180F0256A99405141FE38CA2E1A1B5541B2655A8F93405141F5A4A758151B55418DCE1A108F4051410ACD20EF101B55414F2F27AC8D4051418A1AF1DE0E1B554174A6BB6E8C4051418170EE070D1B55415FF6068E8B405141502878360B1B5541D7896C398B4051415A81E1870A1B554122BFA3B789405141DCA1BE99071B5541E7EDBE81894051414EEA8DFC061B55412D597F108840514155F60367041B5541960BE363874051414D7DAACB031B5541EA90B3358340514157F99C6C001B554148E17AC4814051415C8FC265041B5541713D0A0785405141A4703D2A151B5541EC51B89E91405141F6285CDF1C1B55415C8FC245974051417B14AE07201B5541A4703DEA9E405141F6285CBF251B5541F877B0AFA34051412086AB8F221B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160669 - 1385160
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BAF3068E8B405141DB2278360B1B554174A6BB6E8C4051418170EE070D1B55414F2F27AC8D4051418A1AF1DE0E1B55418DCE1A108F4051410ACD20EF101B5541B2655A8F93405141F5A4A758151B554180F0256A99405141FE38CA2E1A1B5541152B190DA140514105834E1F201B5541F877B0AFA34051412086AB8F221B5541D7A370EDAF405141B81E858B1A1B554152B81EA5CC4051411F85EBA1071B5541B81E857BC84051417B14AE37FD1A55418FC2F5A8B7405141713D0AC7D31A55411F85EB21B140514114AE4781C31A55417B14AEE789405141AE47E1BAD81A5541B81E85CB754051410AD7A3E0E31A5541B81E85EB77405141713D0A77E61A55413333338379405141713D0A67E81A5541D7A3705D7A4051411F85EBD1E91A5541F6285C2F7F4051410AD7A3D0F11A55410AD7A3A0824051418FC2F578FB1A55415BBC702483405141AA7BD438001B5541A0CA7A8B83405141D906CAB1001B5541960BE363874051414D7DAACB031B55412D597F108840514155F60367041B5541E7EDBE81894051414EEA8DFC061B554122BFA3B789405141DCA1BE99071B55413E31A13E8B405141DAC600920A1B5541BAF3068E8B405141DB2278360B1B5541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F877B0AFA34051412086AB8F221B55419234EA6CA1405141DD33FD77201B5541BBC5EEFF994051414CFB49A31A1B554180F0256A99405141FE38CA2E1A1B5541B2655A8F93405141F5A4A758151B55418DCE1A108F4051410ACD20EF101B55414F2F27AC8D4051418A1AF1DE0E1B554174A6BB6E8C4051418170EE070D1B55415FF6068E8B405141502878360B1B5541D7896C398B4051415A81E1870A1B554122BFA3B789405141DCA1BE99071B5541E7EDBE81894051414EEA8DFC061B554131597F10884051415AF60367041B5541930BE363874051414C7DAACB031B5541E790B3358340514155F99C6C001B554148E17AC4814051415C8FC265041B5541713D0A0785405141A4703D2A151B5541EC51B89E91405141F6285CDF1C1B55415C8FC245974051417B14AE07201B5541A4703DEA9E405141F6285CBF251B5541F877B0AFA34051412086AB8F221B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160669 - 4101820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BAF3068E8B405141DB2278360B1B554174A6BB6E8C4051418170EE070D1B55414F2F27AC8D4051418A1AF1DE0E1B55418DCE1A108F4051410ACD20EF101B5541B2655A8F93405141F5A4A758151B554180F0256A99405141FE38CA2E1A1B5541152B190DA140514105834E1F201B5541F877B0AFA34051412086AB8F221B5541D7A370EDAF405141B81E858B1A1B554152B81EA5CC4051411F85EBA1071B5541B81E857BC84051417B14AE37FD1A55418FC2F5A8B7405141713D0AC7D31A55411F85EB21B140514114AE4781C31A55417B14AEE789405141AE47E1BAD81A5541B81E85CB754051410AD7A3E0E31A5541B81E85EB77405141713D0A77E61A55413333338379405141713D0A67E81A5541D7A3705D7A4051411F85EBD1E91A5541F6285C2F7F4051410AD7A3D0F11A55410AD7A3A0824051418FC2F578FB1A55415BBC702483405141AA7BD438001B5541A0CA7A8B83405141D906CAB1001B5541960BE363874051414D7DAACB031B55412D597F108840514155F60367041B5541E7EDBE81894051414EEA8DFC061B554122BFA3B789405141DCA1BE99071B55413E31A13E8B405141DAC600920A1B5541BAF3068E8B405141DB2278360B1B5541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F877B0AFA34051412086AB8F221B55419234EA6CA1405141DD33FD77201B5541BBC5EEFF994051414CFB49A31A1B554180F0256A99405141FE38CA2E1A1B5541B2655A8F93405141F5A4A758151B55418DCE1A108F4051410ACD20EF101B55414F2F27AC8D4051418A1AF1DE0E1B554174A6BB6E8C4051418170EE070D1B55415FF6068E8B405141502878360B1B5541D7896C398B4051415A81E1870A1B554122BFA3B789405141DCA1BE99071B5541E7EDBE81894051414EEA8DFC061B554131597F10884051415AF60367041B5541930BE363874051414C7DAACB031B5541E790B3358340514155F99C6C001B554148E17AC4814051415C8FC265041B5541713D0A0785405141A4703D2A151B5541EC51B89E91405141F6285CDF1C1B55415C8FC245974051417B14AE07201B5541A4703DEA9E405141F6285CBF251B5541F877B0AFA34051412086AB8F221B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>959841 - 130490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000438CE8C649B1504140DA3897AA4A55416F0200E049B150416C60E949AB4A5541000000C049B15041713D0A17AA4A5541AE7862BF49B15041140D9143AA4A554185EB516846B1504185EB5198924A55410AD7A32037B150415C8FC225904A5541AE47E1DA34B1504114AE4711A44A55410EEB198933B15041A46A6040AC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554167DCEFDC49B15041F997CFB5AB4A5541438CE8C649B1504140DA3897AA4A5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000392842F733B15041B9701E95A94A554140FA439633B15041AD62B9EEAB4A554140FA439633B15041C6860F37AC4A55414A596DA733B150415636A43FAC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554176E0B9AD3BB15041BB1BD70DAC4A5541633F30DC49B150416DBA12ACAB4A554159E85CC949B1504150BB27B7AA4A5541493E82C149B15041DC7AD57CAA4A5541FB42A34047B15041A5803695984A5541E34CBA3C47B1504137638179984A554144C67E6D46B15041273DFEBC924A55418B0D296446B15041625AA797924A5541C398191145B150413E1A5861924A5541AD56818944B15041E901A04B924A55415A909AED42B1504115E4A509924A5541BF4A59503FB15041C8977175914A55417D9C006337B1504139D0E830904A5541FB984D1E37B150411C8F3E3A904A5541AE47E1DA34B1504114AE4711A44A5541392842F733B15041B9701E95A94A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>959841 - 329661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000438CE8C649B1504140DA3897AA4A55416F0200E049B150416C60E949AB4A5541000000C049B15041713D0A17AA4A5541AE7862BF49B15041140D9143AA4A554185EB516846B1504185EB5198924A55410AD7A32037B150415C8FC225904A5541AE47E1DA34B1504114AE4711A44A55410EEB198933B15041A46A6040AC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554167DCEFDC49B15041F997CFB5AB4A5541438CE8C649B1504140DA3897AA4A5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000392842F733B15041B9701E95A94A554140FA439633B15041AD62B9EEAB4A554140FA439633B15041C6860F37AC4A55414A596DA733B150415636A43FAC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554176E0B9AD3BB15041BB1BD70DAC4A5541633F30DC49B150416DBA12ACAB4A554159E85CC949B1504150BB27B7AA4A5541493E82C149B15041DC7AD57CAA4A5541FB42A34047B15041A5803695984A5541E34CBA3C47B1504137638179984A554144C67E6D46B15041273DFEBC924A55418B0D296446B15041625AA797924A5541C398191145B150413E1A5861924A5541AD56818944B15041E901A04B924A55415A909AED42B1504115E4A509924A5541BF4A59503FB15041C8977175914A55417D9C006337B1504139D0E830904A5541FB984D1E37B150411C8F3E3A904A5541AE47E1DA34B1504114AE4711A44A5541392842F733B15041B9701E95A94A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8673 - 2002412
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000B000000C57C285BE95651419993F97DAA655441F2A7F66AF35651417E7F582AB1655441CDCCCCDCF7565141E17A14FEA46554410AD7A360FB565141D7A3705D9B6554417B14AE17F8565141E17A142E996554413D0AD7B3F3565141713D0A47956554415C8FC2A5F15651415C8FC25592655441295C8F72EC56514114AE47219D6554418FC2F528E856514185EB5108A6655441333333A3EA565141AE47E13AA7655441C57C285BE95651419993F97DAA65544101030000000100000004000000CC3B7576F35651415033662FB16554411C63E571F35651413C61EE2EB1655441D1072A74F356514117716E30B1655441CC3B7576F35651415033662FB1655441
+</a>
+
+<b>
+010600000001000000010300000001000000120000000AD7A3A00157514152B81E95B26554410AD7A33009575141EC51B84EB36554411F85EBB10B575141B81E85FBAF655441AE47E14A0E575141EC51B84EAD6554413D0AD7A314575141666666D6A76554417B14AEC715575141295C8F42A565544185EB51E80D57514152B81ED5A565544152B81EB502575141EC51B8FEA2655441333333030457514185EB51689F655441666666560357514185EB51289D65544114AE47D101575141333333A39B65544114AE47F1FD565141713D0AF799655441A4703DEAFB5651410AD7A3E0996554410AD7A360FB565141D7A3705D9B655441CDCCCCDCF7565141E17A14FEA46554419A999969F3565141E17A142EB1655441000000A0FA565141B81E85EBB16554410AD7A3A00157514152B81E95B2655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8673 - 4552771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000B000000C57C285BE95651419993F97DAA655441F2A7F66AF35651417E7F582AB1655441CDCCCCDCF7565141E17A14FEA46554410AD7A360FB565141D7A3705D9B6554417B14AE17F8565141E17A142E996554413D0AD7B3F3565141713D0A47956554415C8FC2A5F15651415C8FC25592655441295C8F72EC56514114AE47219D6554418FC2F528E856514185EB5108A6655441333333A3EA565141AE47E13AA7655441C57C285BE95651419993F97DAA65544101030000000100000004000000CC3B7576F35651415033662FB16554411C63E571F35651413C61EE2EB1655441D1072A74F356514117716E30B1655441CC3B7576F35651415033662FB1655441
+</a>
+
+<b>
+010600000001000000010300000001000000120000000AD7A3A00157514152B81E95B26554410AD7A33009575141EC51B84EB36554411F85EBB10B575141B81E85FBAF655441AE47E14A0E575141EC51B84EAD6554413D0AD7A314575141666666D6A76554417B14AEC715575141295C8F42A565544185EB51E80D57514152B81ED5A565544152B81EB502575141EC51B8FEA2655441333333030457514185EB51689F655441666666560357514185EB51289D65544114AE47D101575141333333A39B65544114AE47F1FD565141713D0AF799655441A4703DEAFB5651410AD7A3E0996554410AD7A360FB565141D7A3705D9B655441CDCCCCDCF7565141E17A14FEA46554419A999969F3565141E17A142EB1655441000000A0FA565141B81E85EBB16554410AD7A3A00157514152B81E95B2655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984467 - 553004
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441B81E85DB9AE150418FC2F51895F05441666666B681E150413D0AD7B394F054417B14AE7780E15041C3F5286CA0F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984467 - 2922594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441EC51B8CE97E15041C3F528CCA0F054417B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984467 - 3701122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441EC51B8CE97E15041C3F528CCA0F054417B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229996 - 501987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000333333B370E9504114AE4781FA3054415C8FC2256CE95041B81E856BFA305441AE47E10A6AE95041AE47E12AFA30544185EB515867E950419A9999A9F9305441D7A370FD64E9504166666686F9305441B452099B64E95041BB6D899CF73054417F87727462E9504119125F33F7305441EFAB30E860E95041CA896616F73054414F23AEFF5CE95041289883E7F73054418E8DEC495BE9504191DC9CACF8305441983052035AE95041BB3FA3C7F83054416F7011F557E950412379797AF8305441118D924757E950415AD98575F8305441DAD1DACB55E950410377B98FF9305441AA9FB04D53E95041FCF4A643FA305441713D0A2750E950411F85EB9103315441AD94EC1950E95041911E11BD03315441429F0FDB50E9504126F71F06043154413EFB305454E950413FE87456053154417A28C9305AE950417DE2C5D007315441B635A10C62E950413A4080230B31544148E17A6468E95041D7A370FD08315441AE47E17A69E9504185EB51480E315441AE47E10A70E95041C3F5280C1131544152B81E7571E9504185EB51E80F315441713D0A3772E95041EC51B84E0E31544185EB51B872E950415C8FC2350D3154413D0AD7D374E95041D7A3701D0C3154416666667679E950415C8FC2450B315441A4703DBA7AE95041A4703DDA0A3154415C8FC2257BE95041CDCCCCFC073154413D0AD7537CE95041CDCCCC5C04315441000000C07CE9504148E17A4403315441AE47E1EA7CE950419A999979FF305441D7A370FD7BE950411F85EBB1FC3054418FC2F5787AE950413D0AD783FB30544185EB514878E95041C3F528ACFA3054418FC2F5A874E9504166666696FA305441333333B370E9504114AE4781FA305441
+</a>
+
+<b>
+0106000000010000000103000000020000003E0000001F85EBC17AE95041295C8F22EE3054417B14AEC77AE95041000000A0ED305441B81E85CB7AE95041CDCCCC4CED305441CDCCCC3C7BE950410AD7A310EA305441C3F528BC7BE95041F6285C9FE53054413D0AD7E37BE950411F85EB61E03054415C8FC2457AE95041CDCCCC3CE03054413333332379E9504100000030E03054410AD7A3E077E95041CDCCCC1CE03054419A99990976E9504100000030E030544114AE472175E95041EC51B81EE13054419A99994970E95041B81E855BE2305441C3F5281C67E9504100000090E2305441A4703DDA66E95041EC51B82EDE305441713D0A6766E95041F6285CEFD7305441C3F528BC68E950415C8FC2D5D730544185EB517875E95041713D0AD7D63054415C8FC2B575E950413D0AD713DC305441713D0AF775E95041EC51B87EDD305441C3F528AC76E950413D0AD733DE3054411F85EB7177E950417B14AEC7DE305441713D0A2778E95041AE47E12ADF3054413D0AD74379E95041AE47E15ADF305441C3F5284C7AE95041EC51B86EDF305441713D0AE77BE95041EC51B85EDF30544148E17AD47BE95041C3F5284CDA3054419A9999D97BE9504100000000D930544148E17AA47BE95041CDCCCCDCD63054411F85EB217BE95041A4703DCAD430544185EB51D87AE950417B14AEC7D3305441713D0A677AE95041E17A143ED230544185EB514879E95041D7A3703DCE30544148E17A3479E9504185EB51F8CD3054413333339378E950419A9999C9CB305441295C8F1278E9504185EB51D8CB305441713D0A6765E95041A4703DFACD305441713D0A0754E95041666666F6CF30544185EB514853E950419A9999E9D5305441713D0AC74FE95041D7A370EDF1305441E17A14AE52E9504152B81E75F530544185EB514854E95041EC51B8DEF7305441333333F354E95041295C8FD2F930544185EB512856E9504133333373F9305441C3F528DC56E950411F85EBA1F8305441C3F5286C57E9504166666666F830544152B81ED55AE95041666666E6F8305441B81E85BB5CE950415C8FC2F5F73054410000001061E95041E17A140EF7305441713D0AE762E95041F6285C3FF7305441B81E856B64E9504100000090F7305441CDCCCC9C69E95041EC51B8EEF8305441B81E856B6BE9504100000000F930544148E17A546EE950417B14AEA7F8305441E17A140E71E95041EC51B8FEF830544185EB517873E9504148E17A94F93054417B14AEB776E950419A999969F93054419A9999497AE9504100000060F8305441AE47E11A7BE95041713D0AA7F830544185EB51887BE950415C8FC205F8305441666666E67AE95041EC51B8CEF13054410AD7A3B07AE95041AE47E1AAEF3054411F85EBC17AE95041295C8F22EE30544105000000A4703D0A62E95041E17A14FEDA305441D7A370FD61E95041666666A6DB30544148E17AB460E95041CDCCCCACDB305441AE47E1BA60E9504114AE47F1DA305441A4703D0A62E95041E17A14FEDA305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229996 - 1159093
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000333333B370E9504114AE4781FA3054415C8FC2256CE95041B81E856BFA305441AE47E10A6AE95041AE47E12AFA30544185EB515867E950419A9999A9F9305441D7A370FD64E9504166666686F9305441B452099B64E95041BB6D899CF73054417F87727462E9504119125F33F7305441EFAB30E860E95041CA896616F73054414F23AEFF5CE95041289883E7F73054418E8DEC495BE9504191DC9CACF8305441983052035AE95041BB3FA3C7F83054416F7011F557E950412379797AF8305441118D924757E950415AD98575F8305441DAD1DACB55E950410377B98FF9305441AA9FB04D53E95041FCF4A643FA305441713D0A2750E950411F85EB9103315441AD94EC1950E95041911E11BD03315441429F0FDB50E9504126F71F06043154413EFB305454E950413FE87456053154417A28C9305AE950417DE2C5D007315441B635A10C62E950413A4080230B31544148E17A6468E95041D7A370FD08315441AE47E17A69E9504185EB51480E315441AE47E10A70E95041C3F5280C1131544152B81E7571E9504185EB51E80F315441713D0A3772E95041EC51B84E0E31544185EB51B872E950415C8FC2350D3154413D0AD7D374E95041D7A3701D0C3154416666667679E950415C8FC2450B315441A4703DBA7AE95041A4703DDA0A3154415C8FC2257BE95041CDCCCCFC073154413D0AD7537CE95041CDCCCC5C04315441000000C07CE9504148E17A4403315441AE47E1EA7CE950419A999979FF305441D7A370FD7BE950411F85EBB1FC3054418FC2F5787AE950413D0AD783FB30544185EB514878E95041C3F528ACFA3054418FC2F5A874E9504166666696FA305441333333B370E9504114AE4781FA305441
+</a>
+
+<b>
+0106000000010000000103000000020000003E0000001F85EBC17AE95041295C8F22EE3054417B14AEC77AE95041000000A0ED305441B81E85CB7AE95041CDCCCC4CED305441CDCCCC3C7BE950410AD7A310EA305441C3F528BC7BE95041F6285C9FE53054413D0AD7E37BE950411F85EB61E03054415C8FC2457AE95041CDCCCC3CE03054413333332379E9504100000030E03054410AD7A3E077E95041CDCCCC1CE03054419A99990976E9504100000030E030544114AE472175E95041EC51B81EE13054419A99994970E95041B81E855BE2305441C3F5281C67E9504100000090E2305441A4703DDA66E95041EC51B82EDE305441713D0A6766E95041F6285CEFD7305441C3F528BC68E950415C8FC2D5D730544185EB517875E95041713D0AD7D63054415C8FC2B575E950413D0AD713DC305441713D0AF775E95041EC51B87EDD305441C3F528AC76E950413D0AD733DE3054411F85EB7177E950417B14AEC7DE305441713D0A2778E95041AE47E12ADF3054413D0AD74379E95041AE47E15ADF305441C3F5284C7AE95041EC51B86EDF305441713D0AE77BE95041EC51B85EDF30544148E17AD47BE95041C3F5284CDA3054419A9999D97BE9504100000000D930544148E17AA47BE95041CDCCCCDCD63054411F85EB217BE95041A4703DCAD430544185EB51D87AE950417B14AEC7D3305441713D0A677AE95041E17A143ED230544185EB514879E95041D7A3703DCE30544148E17A3479E9504185EB51F8CD3054413333339378E950419A9999C9CB305441295C8F1278E9504185EB51D8CB305441713D0A6765E95041A4703DFACD305441713D0A0754E95041666666F6CF30544185EB514853E950419A9999E9D5305441713D0AC74FE95041D7A370EDF1305441E17A14AE52E9504152B81E75F530544185EB514854E95041EC51B8DEF7305441333333F354E95041295C8FD2F930544185EB512856E9504133333373F9305441C3F528DC56E950411F85EBA1F8305441C3F5286C57E9504166666666F830544152B81ED55AE95041666666E6F8305441B81E85BB5CE950415C8FC2F5F73054410000001061E95041E17A140EF7305441713D0AE762E95041F6285C3FF7305441B81E856B64E9504100000090F7305441CDCCCC9C69E95041EC51B8EEF8305441B81E856B6BE9504100000000F930544148E17A546EE950417B14AEA7F8305441E17A140E71E95041EC51B8FEF830544185EB517873E9504148E17A94F93054417B14AEB776E950419A999969F93054419A9999497AE9504100000060F8305441AE47E11A7BE95041713D0AA7F830544185EB51887BE950415C8FC205F8305441666666E67AE95041EC51B8CEF13054410AD7A3B07AE95041AE47E1AAEF3054411F85EBC17AE95041295C8F22EE30544105000000A4703D0A62E95041E17A14FEDA305441D7A370FD61E95041666666A6DB30544148E17AB460E95041CDCCCCACDB305441AE47E1BA60E9504114AE47F1DA305441A4703D0A62E95041E17A14FEDA305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229996 - 3951689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000333333B370E9504114AE4781FA3054415C8FC2256CE95041B81E856BFA305441AE47E10A6AE95041AE47E12AFA30544185EB515867E950419A9999A9F9305441D7A370FD64E9504166666686F9305441B452099B64E95041BB6D899CF73054417F87727462E9504119125F33F7305441EFAB30E860E95041CA896616F73054414F23AEFF5CE95041289883E7F73054418E8DEC495BE9504191DC9CACF8305441983052035AE95041BB3FA3C7F83054416F7011F557E950412379797AF8305441118D924757E950415AD98575F8305441DAD1DACB55E950410377B98FF9305441AA9FB04D53E95041FCF4A643FA305441713D0A2750E950411F85EB9103315441AD94EC1950E95041911E11BD03315441429F0FDB50E9504126F71F06043154413EFB305454E950413FE87456053154417A28C9305AE950417DE2C5D007315441B635A10C62E950413A4080230B31544148E17A6468E95041D7A370FD08315441AE47E17A69E9504185EB51480E315441AE47E10A70E95041C3F5280C1131544152B81E7571E9504185EB51E80F315441713D0A3772E95041EC51B84E0E31544185EB51B872E950415C8FC2350D3154413D0AD7D374E95041D7A3701D0C3154416666667679E950415C8FC2450B315441A4703DBA7AE95041A4703DDA0A3154415C8FC2257BE95041CDCCCCFC073154413D0AD7537CE95041CDCCCC5C04315441000000C07CE9504148E17A4403315441AE47E1EA7CE950419A999979FF305441D7A370FD7BE950411F85EBB1FC3054418FC2F5787AE950413D0AD783FB30544185EB514878E95041C3F528ACFA3054418FC2F5A874E9504166666696FA305441333333B370E9504114AE4781FA305441
+</a>
+
+<b>
+0106000000010000000103000000020000003E0000001F85EBC17AE95041295C8F22EE3054417B14AEC77AE95041000000A0ED305441B81E85CB7AE95041CDCCCC4CED305441CDCCCC3C7BE950410AD7A310EA305441C3F528BC7BE95041F6285C9FE53054413D0AD7E37BE950411F85EB61E03054415C8FC2457AE95041CDCCCC3CE03054413333332379E9504100000030E03054410AD7A3E077E95041CDCCCC1CE03054419A99990976E9504100000030E030544114AE472175E95041EC51B81EE13054419A99994970E95041B81E855BE2305441C3F5281C67E9504100000090E2305441A4703DDA66E95041EC51B82EDE305441713D0A6766E95041F6285CEFD7305441C3F528BC68E950415C8FC2D5D730544185EB517875E95041713D0AD7D63054415C8FC2B575E950413D0AD713DC305441713D0AF775E95041EC51B87EDD305441C3F528AC76E950413D0AD733DE3054411F85EB7177E950417B14AEC7DE305441713D0A2778E95041AE47E12ADF3054413D0AD74379E95041AE47E15ADF305441C3F5284C7AE95041EC51B86EDF305441713D0AE77BE95041EC51B85EDF30544148E17AD47BE95041C3F5284CDA3054419A9999D97BE9504100000000D930544148E17AA47BE95041CDCCCCDCD63054411F85EB217BE95041A4703DCAD430544185EB51D87AE950417B14AEC7D3305441713D0A677AE95041E17A143ED230544185EB514879E95041D7A3703DCE30544148E17A3479E9504185EB51F8CD3054413333339378E950419A9999C9CB305441295C8F1278E9504185EB51D8CB305441713D0A6765E95041A4703DFACD305441713D0A0754E95041666666F6CF30544185EB514853E950419A9999E9D5305441713D0AC74FE95041D7A370EDF1305441E17A14AE52E9504152B81E75F530544185EB514854E95041EC51B8DEF7305441333333F354E95041295C8FD2F930544185EB512856E9504133333373F9305441C3F528DC56E950411F85EBA1F8305441C3F5286C57E9504166666666F830544152B81ED55AE95041666666E6F8305441B81E85BB5CE950415C8FC2F5F73054410000001061E95041E17A140EF7305441713D0AE762E95041F6285C3FF7305441B81E856B64E9504100000090F7305441CDCCCC9C69E95041EC51B8EEF8305441B81E856B6BE9504100000000F930544148E17A546EE950417B14AEA7F8305441E17A140E71E95041EC51B8FEF830544185EB517873E9504148E17A94F93054417B14AEB776E950419A999969F93054419A9999497AE9504100000060F8305441AE47E11A7BE95041713D0AA7F830544185EB51887BE950415C8FC205F8305441666666E67AE95041EC51B8CEF13054410AD7A3B07AE95041AE47E1AAEF3054411F85EBC17AE95041295C8F22EE30544105000000A4703D0A62E95041E17A14FEDA305441D7A370FD61E95041666666A6DB30544148E17AB460E95041CDCCCCACDB305441AE47E1BA60E9504114AE47F1DA305441A4703D0A62E95041E17A14FEDA305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987366 - 144003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000085EB510884DD504185EB51D8A2C25441F6285CBF82DD50418FC2F5B896C254411F85EB5179DD5041EC51B88E9AC25441CDCCCC0C74DD50418FC2F5489CC25441E17A149E6FDD5041B81E851B9DC25441B81E855B67DD5041E17A14DE9DC254413333332364DD5041E17A144E9EC25441295C8F725FDD50417B14AE579FC25441666666A65FDD50415C8FC2B5ABC254417B14AE776FDD504152B81EC5A8C25441A4703D7A83DD5041EC51B80EA3C2544185EB510884DD504185EB51D8A2C25441
+</a>
+
+<b>
+010600000001000000010300000001000000170000007F956CD265DD504100617D139EC2544114E0669063DD504127D38D6E9EC25441FCBDFB735FDD50415BFB6D5C9FC25441666666A65FDD50415C8FC2B5ABC254417B14AE776FDD504152B81EC5A8C2544181E2377573DD5041152B7DA1A7C254418CA6CEC873DD50414633A089A7C2544154DC596876DD50413175E9C9A6C254416B6F889E82DD50416145714DA3C254415041AA0584DD5041E50F46BFA2C254413EF5474983DD5041314E16CE9BC254413F35DE3883DD5041109E3F339BC254415FF74EC282DD5041B37DC6D496C25441C79B7EFD7CDD5041D100831099C254411F85EB5179DD5041EC51B88E9AC25441CDCCCC0C74DD50418FC2F5489CC25441A73216AE72DD504154ED098A9CC254417008F60970DD5041B75F80079DC25441E17A149E6FDD5041B81E851B9DC25441BD71B1016CDD50413E9292709DC25441372C4C056BDD5041359ECB879DC2544150070FCF68DD50414714E5BB9DC254417F956CD265DD504100617D139EC25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984551 - 55419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000064ACCC671FC5041688834479D945441690F7AB871FC5041FFB4694C9D945441446014B871FC5041A23B24529D9454419F67126074FC504157137AA29C945441BE55102A77FC50415AB77AC59B945441C3F528EC77FC5041666666869B9454411F85EB5179FC5041E17A14BE8494544173914C5279FC5041C797F9B7849454412A9C4F9473FC5041B6E9BA4B839454413FF2FB8873FC5041CBDCF63683945441EE50818773FC5041442A7336839454410746710272FC504152D7AA2A98945441064ACCC671FC504128A7104F9C945441064ACCC671FC504105617A5B9C945441064ACCC671FC50411C5B13739C945441B82025BC71FC504101E1750C9D945441D173DAB871FC5041E780FB469D945441064ACCC671FC50416BA50A439D945441064ACCC671FC5041688834479D945441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000003FF2FB8873FC5041CBDCF636839454419C97C06773FC50416393660085945441BCEBE74572FC50412515838894945441BEB272F771FC5041542B22EE989454418925D4CA71FC5041CDA067079C945441064ACCC671FC5041A00FB4699C945441064ACCC671FC50411C5B13739C945441A1E26DC071FC5041F36BC6CE9C9454419647DEB871FC5041534EC4469D945441B497C9B971FC5041CBEBB7469D9454413C33A5BC71FC5041142AE9459D945441064ACCC671FC50416BA50A439D945441064ACCC671FC5041688834479D945441CDE319C271FC5041DAC4E9489D945441D9D34FCA71FC504182796E4D9D9454411795450E73FC5041DBEBBDF99C94544177808E6C73FC5041EB8C62E19C945441584EBC7373FC5041CDC887DF9C94544149C191BC73FC50411C0BB7CC9C945441A80D31E173FC5041611741C39C9454410D52CF3374FC5041B645E9AD9C9454413A9E234474FC5041B35CB1A99C945441F5CA0FE577FC50414A9025879B94544118125F4079FC504100DA29DC85945441C54DB35179FC5041AA9DD3B784945441F323EF0E76FC5041EC5CFBE8839454412A9C4F9473FC5041B6E9BA4B839454413FF2FB8873FC5041CBDCF63683945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106289 - 3096391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000005100000014AE47E1A6185141333333D3648954418FC2F598A9185141A4703D9A6A895441E17A14BEAB1851410AD7A350708954418FC2F598AC185141CDCCCC5C728954418FC2F528AD185141D7A370BD7389544166666676B6185141CDCCCCBC6F89544114AE4741BB185141666666366E895441666666A6BB18514152B81E656F895441CDCCCC1CBE18514114AE47E170895441CDCCCC4CC018514152B81E357289544148E17AA4C218514114AE470174895441CDCCCC9CC518514152B81E95768954415C8FC2B5CF185141AE47E1DA71895441000000F0D018514185EB51B871895441C3F528FCD11851417B14AEA77189544114AE4761D318514152B81E8571895441CDCCCCCCD4185141F6285C7F7189544185EB5168D61851419A999979718954417B14AE47D8185141295C8F7271895441D7A3706DD9185141EC51B86E718954417B14AEE7DA1851413D0AD77371895441713D0AC7DB18514185EB515871895441713D0A57DC185141666666467189544185EB51E8DC185141EC51B80E7189544152B81ED5DD185141666666D67089544185EB51C8DE185141CDCCCC9C70895441666666B6DF18514148E17A64708954413D0AD7A3E01851419A9999297089544148E17A84E1185141713D0AD76F895441295C8F72E21851415C8FC2856F895441F6285C3FE3185141000000406F8954410AD7A3D0E3185141E17A140E6F8954410AD7A360E5185141333333436E89544114AE4711EB185141295C8FB26B895441314B2569F0185141E3D5499169895441F62FBDB2F51851414B3417CE67895441DC091095F8185141F1624FCA668954418EE8D688FC185141EA5C7E7465895441BA565D3EFE185141425967A764895441FD8E7D5DFF18514153BB4BB16389544159FE605701195141F74B68B76189544102A9B59F08195141353401D35A8954419EDA127303195141B75EF478548954418786F27EFD1851418A4925974A8954417BF63F4FF4185141D1F43F7D4E8954416204CBD1F11851415AA4A2B0498954415151F6BEF118514155AAAC5C49895441857D7432F01851415637B295468954415D438BDADF185141262D2F054D8954410E0D9BD7D7185141C9D368F14E895441F81BC317D7185141549ED6704E895441DA581BBBD5185141EC6396C94A89544198E6B42CD4185141A2A3DA86478954414C0FAF3BD3185141AE65480D45895441CA8C3E64D2185141D7967877428954412FC1DB25D2185141C78423384289544191B8D60BD2185141C156DB404289544148E17A44C4185141EC51B8DE4689544114AE47A1BB185141F6285C5F4B8954419A999969BC185141A4703DFA4D8954411F85EB91BE18514185EB518853895441B81E85FBBD185141CDCCCCEC53895441A4703D1ABB185141AE47E11A558954419A999999B71851419A99998956895441C3F5287CB31851419A99993958895441CDCCCC5CAF1851418FC2F5E85989544152B81E35AC1851413D0AD7335B895441F6285C5FAA1851413D0AD7F35B89544100000060A0185141AE47E10A608954410AD7A310951851417B14AEE76489544152B81EF58F1851418FC2F53867895441295C8F128D185141333333C368895441666666468B185141D7A370AD69895441C3F528AC89185141F6285CCF6A895441295C8F02861851410AD7A3906D8954417B14AE978818514114AE47C16E89544114AE47618B18514152B81ED570895441F6285C3F901851419A9999596E8954419A9999799518514148E17AB46B8954411F85EB2199185141AE47E11A6A89544114AE47E1A6185141333333D364895441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D1552B9EDF1851416199AC134D89544199438E86EE18514192BAA9516A895441334B2569F0185141E2D5499169895441F72FBDB2F51851414F3417CE67895441D9091095F8185141F4624FCA668954418FE8D688FC185141E85C7E7465895441BD565D3EFE185141405967A764895441028F7D5DFF18514155BB4BB1638954415DFE605701195141F94B68B76189544104A9B59F08195141333401D35A895441A3DA127303195141B75EF478548954418586F27EFD185141864925974A8954417BF63F4FF4185141CDF43F7D4E8954416004CBD1F11851415AA4A2B0498954415651F6BEF118514158AAAC5C49895441807D7432F01851415537B2954689544160438BDADF1851412A2D2F054D895441D1552B9EDF1851416199AC134D895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106289 - 3440494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000005100000014AE47E1A6185141333333D3648954418FC2F598A9185141A4703D9A6A895441E17A14BEAB1851410AD7A350708954418FC2F598AC185141CDCCCC5C728954418FC2F528AD185141D7A370BD7389544166666676B6185141CDCCCCBC6F89544114AE4741BB185141666666366E895441666666A6BB18514152B81E656F895441CDCCCC1CBE18514114AE47E170895441CDCCCC4CC018514152B81E357289544148E17AA4C218514114AE470174895441CDCCCC9CC518514152B81E95768954415C8FC2B5CF185141AE47E1DA71895441000000F0D018514185EB51B871895441C3F528FCD11851417B14AEA77189544114AE4761D318514152B81E8571895441CDCCCCCCD4185141F6285C7F7189544185EB5168D61851419A999979718954417B14AE47D8185141295C8F7271895441D7A3706DD9185141EC51B86E718954417B14AEE7DA1851413D0AD77371895441713D0AC7DB18514185EB515871895441713D0A57DC185141666666467189544185EB51E8DC185141EC51B80E7189544152B81ED5DD185141666666D67089544185EB51C8DE185141CDCCCC9C70895441666666B6DF18514148E17A64708954413D0AD7A3E01851419A9999297089544148E17A84E1185141713D0AD76F895441295C8F72E21851415C8FC2856F895441F6285C3FE3185141000000406F8954410AD7A3D0E3185141E17A140E6F8954410AD7A360E5185141333333436E89544114AE4711EB185141295C8FB26B895441314B2569F0185141E3D5499169895441F62FBDB2F51851414B3417CE67895441DC091095F8185141F1624FCA668954418EE8D688FC185141EA5C7E7465895441BA565D3EFE185141425967A764895441FD8E7D5DFF18514153BB4BB16389544159FE605701195141F74B68B76189544102A9B59F08195141353401D35A8954419EDA127303195141B75EF478548954418786F27EFD1851418A4925974A8954417BF63F4FF4185141D1F43F7D4E8954416204CBD1F11851415AA4A2B0498954415151F6BEF118514155AAAC5C49895441857D7432F01851415637B295468954415D438BDADF185141262D2F054D8954410E0D9BD7D7185141C9D368F14E895441F81BC317D7185141549ED6704E895441DA581BBBD5185141EC6396C94A89544198E6B42CD4185141A2A3DA86478954414C0FAF3BD3185141AE65480D45895441CA8C3E64D2185141D7967877428954412FC1DB25D2185141C78423384289544191B8D60BD2185141C156DB404289544148E17A44C4185141EC51B8DE4689544114AE47A1BB185141F6285C5F4B8954419A999969BC185141A4703DFA4D8954411F85EB91BE18514185EB518853895441B81E85FBBD185141CDCCCCEC53895441A4703D1ABB185141AE47E11A558954419A999999B71851419A99998956895441C3F5287CB31851419A99993958895441CDCCCC5CAF1851418FC2F5E85989544152B81E35AC1851413D0AD7335B895441F6285C5FAA1851413D0AD7F35B89544100000060A0185141AE47E10A608954410AD7A310951851417B14AEE76489544152B81EF58F1851418FC2F53867895441295C8F128D185141333333C368895441666666468B185141D7A370AD69895441C3F528AC89185141F6285CCF6A895441295C8F02861851410AD7A3906D8954417B14AE978818514114AE47C16E89544114AE47618B18514152B81ED570895441F6285C3F901851419A9999596E8954419A9999799518514148E17AB46B8954411F85EB2199185141AE47E11A6A89544114AE47E1A6185141333333D364895441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D1552B9EDF1851416199AC134D89544199438E86EE18514192BAA9516A895441334B2569F0185141E2D5499169895441F72FBDB2F51851414F3417CE67895441D9091095F8185141F4624FCA668954418FE8D688FC185141E85C7E7465895441BD565D3EFE185141405967A764895441028F7D5DFF18514155BB4BB1638954415DFE605701195141F94B68B76189544104A9B59F08195141333401D35A895441A3DA127303195141B75EF478548954418586F27EFD185141864925974A8954417BF63F4FF4185141CDF43F7D4E8954416004CBD1F11851415AA4A2B0498954415651F6BEF118514158AAAC5C49895441807D7432F01851415537B2954689544160438BDADF1851412A2D2F054D895441D1552B9EDF1851416199AC134D895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363394 - 363389
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000BB518E883EAF50410300EE336B3D5441DAA45E583BAF50414D2E7FB16B3D54414A0F824F3AAF5041958CBBE6733D544129E4C83D38AF5041F59A4E97743D5441CD6A671A36AF5041BA087474823D5441E61FC1EE44AF50418AF4C2A0873D5441E74600C078AF50414503F679803D54413547987D75AF5041D455C68E7D3D5441418E6D0C75AF5041335139CB7B3D54415330DC2254AF50414E25534D7B3D5441807218364FAF5041BAA152AE843D54410C0501D547AF504177A0DAFC7A3D5441FCAD7E6144AF5041D2DA63F8733D54417A74329F41AF5041F9E64ABA6A3D54414343D10941AF50419F2946D16A3D54413333339340AF504152B81EF56A3D5441B81E858B3EAF50418FC2F5386B3D5441BB518E883EAF50410300EE336B3D5441
+</a>
+
+<b>
+0106000000020000000103000000020000004E00000064AE37E969AF504178D83F86823D54413E6E544545AF50413617D094873D5441A2691EE048AF5041330B7310933D544177C6F84852AF50417CA19A9D953D54414FD8BD4A57AF5041E139000EA23D54411706E6645DAF50410ECD4B8CA83D5441D3C13F0B64AF504147D2657EAE3D5441F3196A196CAF5041775C3DAEAF3D54412171B98873AF50411E44690BA63D54410823EDF979AF50416E7B91AAA63D5441691978E575AF5041C033A9CAB63D5441F647F8057CAF5041A23E7574B93D544190255B177CAF50411B0347F7B83D5441FF6E9BA47BAF5041DA241331B83D5441FF6E9BA47BAF50415D6476A9B73D5441984CFEB57BAF50412855C22FB73D5441C28C32E37BAF5041457288B9B63D54415C6A95F47BAF5041C08A4893B63D544135D23D757CAF5041E722A012B63D5441D0038FDD7CAF5041019889EEB43D54417D435C307DAF50411A871DA3B13D544164E5A4247DAF5041D6CB365AB13D54417579742C7DAF5041A1A41F19B13D5441A635E3437DAF5041FF46ACF4B03D544152181ABC7DAF50414486E05FAC3D5441EED546A37DAF504116C37CECA83D54411B5234737DAF5041F8953FD5A83D5441816B815C7DAF50413DA896B8A83D54418AC1DA457DAF5041C6B1589EA83D544104D6884D7DAF5041604BF257A83D54410FAD2C7E7DAF504137EF6235A83D544168F9DDBA7DAF504163D30B2BA83D5441141D28D17DAF50410D762BE2A63D544189C1DA057DAF5041BBDAB48DA63D544160654B437CAF5041D088FCEEA53D5441A6DC51757CAF5041F90B9741A53D54410EAD2C9E7CAF50415F4BF2F7A43D5441D135B5F47CAF5041A613759CA43D5441FAFEE47C7DAF504140C60666A43D54410FEA21057FAF5041EADE7BBDA43D5441B0009A0080AF504133D0C972A43D5441FFD5884D80AF50413218BFE4A33D544190AFF0DC80AF5041D683722CA33D5441273218D080AF5041CBB1585EA23D5441286A8EDF80AF5041C6DCB16BA13D5441DF509DDB80AF50411E6A7703A13D54413BE05F9180AF5041654BF2D7A03D5441E927410C81AF5041F50DE8C09F3D5441956F220781AF5041E15FA0DF9E3D5441BDCBB16980AF50411F6A77839E3D54410F84D06E7FAF5041E25FA03F9E3D5441B2F40DD97EAF50411593D3D29D3D54411B5B74BF7EAF50418AD0DD499D3D5441DE509DBB7EAF5041DC88FCAE9C3D54419B6F22477FAF5041714BF2779B3D5441CFA2557A7EAF5041714BF237993D544180EA36B57EAF5041B82C6DEC973D54413709BCC080AF5041F93644F0943D5441313218D080AF5041C603111D943D5441C475832F7FAF5041DD7D8A98933D544117E560CF7DAF5041BA2D1D52933D5441B0BAA18A7CAF5041933EF36C913D5441659D5E967CAF5041665E723D8F3D5441ADC94A407CAF5041EDC5F3468E3D544163B4F8417CAF50419B10CD918D3D5441DBD0975F7CAF5041D0C720AC8C3D5441F476EECA7BAF50419C10CD518C3D5441121BD6747BAF50412A62CC078C3D544143AE34B17AAF50417ED1A9A78A3D54411BF9813D79AF50410160F7A0873D5441F59F4A3A79AF5041017733B8853D54419B10886479AF5041BD95B803853D54419139E4B379AF50410F4ED748843D54413D81C5AE79AF50416106F68D833D54411EFCD93C79AF50414D58AEEC823D544170B4F8C178AF5041A9E77082823D54410024ECBC78AF50418AC9627A803D544164AE37E969AF504178D83F86823D54410A0000006F01987B68AF5041B82966919B3D54419F18F31B69AF5041E352935B983D54410858656A6DAF50413E5EBB649A3D54417097D7B871AF5041209E38419B3D5441228B999376AF50410A24D28C9A3D544186DCDD0B77AF5041FDBA27E69C3D54413C288E7F76AF50415DE9DD269E3D5441A4D1C09071AF5041FE85C784A13D544170CC371A6DAF50411C464AA8A03D54416F01987B68AF5041B82966919B3D5441010300000001000000040000009A45EEB878AF5041DC34A173803D5441CA29E4BC78AF5041CA1D2D77803D544121FCD9BC78AF5041B5BE1473803D54419A45EEB878AF5041DC34A173803D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363389 - 363394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000004E00000064AE37E969AF504178D83F86823D54413E6E544545AF50413617D094873D5441A2691EE048AF5041330B7310933D544177C6F84852AF50417CA19A9D953D54414FD8BD4A57AF5041E139000EA23D54411706E6645DAF50410ECD4B8CA83D5441D3C13F0B64AF504147D2657EAE3D5441F3196A196CAF5041775C3DAEAF3D54412171B98873AF50411E44690BA63D54410823EDF979AF50416E7B91AAA63D5441691978E575AF5041C033A9CAB63D5441F647F8057CAF5041A23E7574B93D544190255B177CAF50411B0347F7B83D5441FF6E9BA47BAF5041DA241331B83D5441FF6E9BA47BAF50415D6476A9B73D5441984CFEB57BAF50412855C22FB73D5441C28C32E37BAF5041457288B9B63D54415C6A95F47BAF5041C08A4893B63D544135D23D757CAF5041E722A012B63D5441D0038FDD7CAF5041019889EEB43D54417D435C307DAF50411A871DA3B13D544164E5A4247DAF5041D6CB365AB13D54417579742C7DAF5041A1A41F19B13D5441A635E3437DAF5041FF46ACF4B03D544152181ABC7DAF50414486E05FAC3D5441EED546A37DAF504116C37CECA83D54411B5234737DAF5041F8953FD5A83D5441816B815C7DAF50413DA896B8A83D54418AC1DA457DAF5041C6B1589EA83D544104D6884D7DAF5041604BF257A83D54410FAD2C7E7DAF504137EF6235A83D544168F9DDBA7DAF504163D30B2BA83D5441141D28D17DAF50410D762BE2A63D544189C1DA057DAF5041BBDAB48DA63D544160654B437CAF5041D088FCEEA53D5441A6DC51757CAF5041F90B9741A53D54410EAD2C9E7CAF50415F4BF2F7A43D5441D135B5F47CAF5041A613759CA43D5441FAFEE47C7DAF504140C60666A43D54410FEA21057FAF5041EADE7BBDA43D5441B0009A0080AF504133D0C972A43D5441FFD5884D80AF50413218BFE4A33D544190AFF0DC80AF5041D683722CA33D5441273218D080AF5041CBB1585EA23D5441286A8EDF80AF5041C6DCB16BA13D5441DF509DDB80AF50411E6A7703A13D54413BE05F9180AF5041654BF2D7A03D5441E927410C81AF5041F50DE8C09F3D5441956F220781AF5041E15FA0DF9E3D5441BDCBB16980AF50411F6A77839E3D54410F84D06E7FAF5041E25FA03F9E3D5441B2F40DD97EAF50411593D3D29D3D54411B5B74BF7EAF50418AD0DD499D3D5441DE509DBB7EAF5041DC88FCAE9C3D54419B6F22477FAF5041714BF2779B3D5441CFA2557A7EAF5041714BF237993D544180EA36B57EAF5041B82C6DEC973D54413709BCC080AF5041F93644F0943D5441313218D080AF5041C603111D943D5441C475832F7FAF5041DD7D8A98933D544117E560CF7DAF5041BA2D1D52933D5441B0BAA18A7CAF5041933EF36C913D5441659D5E967CAF5041665E723D8F3D5441ADC94A407CAF5041EDC5F3468E3D544163B4F8417CAF50419B10CD918D3D5441DBD0975F7CAF5041D0C720AC8C3D5441F476EECA7BAF50419C10CD518C3D5441121BD6747BAF50412A62CC078C3D544143AE34B17AAF50417ED1A9A78A3D54411BF9813D79AF50410160F7A0873D5441F59F4A3A79AF5041017733B8853D54419B10886479AF5041BD95B803853D54419139E4B379AF50410F4ED748843D54413D81C5AE79AF50416106F68D833D54411EFCD93C79AF50414D58AEEC823D544170B4F8C178AF5041A9E77082823D54410024ECBC78AF50418AC9627A803D544164AE37E969AF504178D83F86823D54410A0000006F01987B68AF5041B82966919B3D54419F18F31B69AF5041E352935B983D54410858656A6DAF50413E5EBB649A3D54417097D7B871AF5041209E38419B3D5441228B999376AF50410A24D28C9A3D544186DCDD0B77AF5041FDBA27E69C3D54413C288E7F76AF50415DE9DD269E3D5441A4D1C09071AF5041FE85C784A13D544170CC371A6DAF50411C464AA8A03D54416F01987B68AF5041B82966919B3D5441010300000001000000040000009A45EEB878AF5041DC34A173803D5441CA29E4BC78AF5041CA1D2D77803D544121FCD9BC78AF5041B5BE1473803D54419A45EEB878AF5041DC34A173803D5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BB518E883EAF50410300EE336B3D5441DAA45E583BAF50414D2E7FB16B3D54414A0F824F3AAF5041958CBBE6733D544129E4C83D38AF5041F59A4E97743D5441CD6A671A36AF5041BA087474823D5441E61FC1EE44AF50418AF4C2A0873D5441E74600C078AF50414503F679803D54413547987D75AF5041D455C68E7D3D5441418E6D0C75AF5041335139CB7B3D54415330DC2254AF50414E25534D7B3D5441807218364FAF5041BAA152AE843D54410C0501D547AF504177A0DAFC7A3D5441FCAD7E6144AF5041D2DA63F8733D54417A74329F41AF5041F9E64ABA6A3D54414343D10941AF50419F2946D16A3D54413333339340AF504152B81EF56A3D5441B81E858B3EAF50418FC2F5386B3D5441BB518E883EAF50410300EE336B3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291854 - 1413171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000018000000EEBCA2459C0351419B0DE671001E5541F2521A2E9D035141CCFEAB35FE1D55419AF25D3B9E035141FCA655C1FE1D55412B8716449E03514105A312B2FE1D5541CDCCCCCC950351413D0AD703FA1D5541CDCCCC1C8B03514148E17AD4F31D5541C3F528BC860351411F85EB71F11D55413D0AD7B38303514114AE4711F01D5541666666368203514185EB5188EF1D5541666666267E03514100000080EE1D554148E17AB47A0351417B14AE47F41D554148E17AA47C035141713D0AA7F41D5541295C8F927E0351415C8FC2F5F41D5541295C8F6280035141CDCCCC6CF51D5541666666468203514185EB5128F61D5541A4703D2A840351417B14AEF7F61D55410000004086035141295C8F02F81D55419A999999870351417B14AEC7F81D5541CDCCCC9C8B03514166666636FB1D55410000007090035141CDCCCC4CFE1D5541B81E851B960351413D0AD793011E554147E5C50C9A03514108E3A9C7031E5541B20976C89B03514114743F6C011E5541EEBCA2459C0351419B0DE671001E5541010300000001000000040000000731843A9A0351411FE537E1031E5541CDCCCCD19A03514136CDBB35041E5541E6CA83DC9A0351419B3D6D26041E55410731843A9A0351411FE537E1031E5541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000DBCA83DC9A035141963D6D26041E554100000060A1035141CDCCCCAC071E5541D7A370BDA6035141CDCCCCCC0A1E554166666636AA0351419A9999890C1E554185EB5168AC0351410AD7A3A00D1E55410AD7A330B5035141AE47E1DA0B1E554114AE4761B00351417B14AEC7071E55417B14AEE7AA0351415C8FC2E5041E5541AE47E13AA40351411F85EBB1011E554122F25D3B9E035141BEA655C1FE1D554185467F2B9D03514100F6153CFE1D5541EEBCA2459C0351419B0DE671001E55411192E0279C0351414B636AAD001E5541C31DFBD69B035141E2CC4E70011E5541137252169A035141344F2CBB031E5541DBCA83DC9A035141963D6D26041E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291854 - 3586166
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000018000000EEBCA2459C0351419B0DE671001E5541F2521A2E9D035141CCFEAB35FE1D55419AF25D3B9E035141FCA655C1FE1D55412B8716449E03514105A312B2FE1D5541CDCCCCCC950351413D0AD703FA1D5541CDCCCC1C8B03514148E17AD4F31D5541C3F528BC860351411F85EB71F11D55413D0AD7B38303514114AE4711F01D5541666666368203514185EB5188EF1D5541666666267E03514100000080EE1D554148E17AB47A0351417B14AE47F41D554148E17AA47C035141713D0AA7F41D5541295C8F927E0351415C8FC2F5F41D5541295C8F6280035141CDCCCC6CF51D5541666666468203514185EB5128F61D5541A4703D2A840351417B14AEF7F61D55410000004086035141295C8F02F81D55419A999999870351417B14AEC7F81D5541CDCCCC9C8B03514166666636FB1D55410000007090035141CDCCCC4CFE1D5541B81E851B960351413D0AD793011E554147E5C50C9A03514108E3A9C7031E5541B20976C89B03514114743F6C011E5541EEBCA2459C0351419B0DE671001E5541010300000001000000040000000731843A9A0351411FE537E1031E5541CDCCCCD19A03514136CDBB35041E5541E6CA83DC9A0351419B3D6D26041E55410731843A9A0351411FE537E1031E5541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000DBCA83DC9A035141963D6D26041E554100000060A1035141CDCCCCAC071E5541D7A370BDA6035141CDCCCCCC0A1E554166666636AA0351419A9999890C1E554185EB5168AC0351410AD7A3A00D1E55410AD7A330B5035141AE47E1DA0B1E554114AE4761B00351417B14AEC7071E55417B14AEE7AA0351415C8FC2E5041E5541AE47E13AA40351411F85EBB1011E554122F25D3B9E035141BEA655C1FE1D554185467F2B9D03514100F6153CFE1D5541EEBCA2459C0351419B0DE671001E55411192E0279C0351414B636AAD001E5541C31DFBD69B035141E2CC4E70011E5541137252169A035141344F2CBB031E5541DBCA83DC9A035141963D6D26041E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>938628 - 2923536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000007000000510200002E11F7ABEC44514175169BCFD02F54414AE35D96ED44514148535409D22F544116C5A752EE445141DACD43FAD22F5441FD668810F04451416152F232D42F54414F3D5D41F344514177A5C46FD62F5441F467B60CF6445141EE226C65D82F5441C195C913F8445141597C6FD1D92F54411361478AFA4451419DF7948BDB2F54410E410A98FC4451411948F6D9DC2F54418047D258044551414C51CDBBCA2F5441BE67825B10455141DFBA5223B72F54414BE4E5F51C455141E9DCB3F6AF2F54418576DE6B25455141A3EA29D2AA2F5441666666062945514100000020A82F54410AD7A3D02F45514100000030A52F544185EB513833455141333333839F2F5441713D0A7737455141000000D09C2F54413D0AD7C33E455141A4703DBAA02F5441C3F5287C424551410AD7A3E09F2F5441EC51B8BE3A4551411F85EBE19A2F544185EB51884045514114AE4721942F5441AE47E10A43455141295C8F52942F544114AE4701444551418FC2F5888E2F54411F85EB314F455141295C8F02872F544152B81EA56E455141713D0A27832F54415C8FC2F570455141333333E3842F544114AE476170455141AE47E12A882F5441CDCCCC7C6D4551418FC2F5188A2F544148E17AE467455141000000108B2F54419A9999A9684551410AD7A3608D2F54419A99993964455141000000808F2F54411F85EB616545514152B81E45902F54415C8FC2A563455141C3F5283C912F54419A99993964455141666666E6942F54418FC2F5E861455141333333A3962F544114AE47A15E455141B81E85CB972F544148E17A24564551418FC2F568972F54410AD7A3004F45514100000060982F5441AE47E16A4C455141F6285CEF9D2F5441EC51B84E58455141CDCCCC8C9C2F5441AE47E10A62455141D7A370BD9B2F544100000040674551411F85EB419B2F54411F85EBA173455141713D0AB79A2F54418FC2F5E875455141713D0A979B2F54419A9999497F455141713D0A17A22F5441A4703D0A8445514148E17A04A62F54410AD7A34087455141B81E857BA82F5441713D0A978A455141000000E0AA2F5441E17A143E93455141A4703D9AB02F5441295C8FC298455141F6285CBFB32F5441EC51B83EA0455141AE47E1AAB82F5441295C8FE2A3455141AE47E1EABC2F5441EC51B89EA8455141713D0AD7C22F5441AE47E18AAA45514185EB5128C52F5441D7A3708DBD45514152B81E65CE2F5441E17A14DEBF455141C3F528ACDC2F5441333333C3C245514148E17AB4E62F5441D7A370FDC145514148E17A24EB2F5441C3F5283CC64551410AD7A350F12F54413D0AD783C945514148E17A04F42F54410AD7A360C9455141D7A3703DFF2F544185EB5168CC455141000000A00930544133333353BE455141E17A148E0B30544185EB5178BD4551418FC2F57816305441C3F528ACC64551413333336316305441B81E854BC9455141D7A3703D1630544148E17A64CC4551413D0AD793153054417B14AE77CE455141AE47E1AA14305441D7A3707DD04551419A9999291330544185EB5178D1455141CDCCCC9C10305441C3F528BCD1455141CDCCCC5C0E305441B81E851BD24551419A99991909305441F6285C4FD2455141333333E305305441AE47E1AAD2455141C3F5281C02305441C3F5281CD4455141295C8FE2F72F544148E17A24D4455141EC51B8DEF52F5441A4703DBAD3455141EC51B81EF32F5441CDCCCC1CD3455141D7A3708DF02F54413D0AD703D345514185EB5118EE2F5441EC51B80ED3455141AE47E1CAEC2F54419A999919D4455141713D0A47EA2F544114AE4731D545514148E17AD4E82F5441CDCCCC4CD5455141713D0A87E72F5441D7A3708DD445514133333313E42F54417B14AEF7D34551419A9999B9E02F544185EB51D8D34551419A9999E9DB2F544152B81E85D3455141666666B6D52F544114AE47E1D2455141713D0A37D02F54410AD7A350D2455141333333D3CB2F544166666626D24551411F85EB11C42F5441E17A142ED245514185EB51D8C12F5441EC51B8DED245514133333343BD2F5441EC51B86ED4455141E17A140EB62F5441EC51B88ED645514114AE47D1AB2F5441713D0AC7D6455141C3F5288CA92F5441D7A3702DCF455141C3F5280C9D2F5441C3F528BCC6455141AE47E1DA912F5441F6285C8FBD455141295C8F22842F5441C3F528FCB8455141D7A3708D7C2F5441D7A3704DB3455141B81E853B732F54417B14AEE7A64551417B14AE075F2F5441E17A14AE9B455141D7A3700D4E2F5441C3F5282CB8455141D7A3705D432F5441C564E0DDE0455141F8F5CB3A492F5441B038DE7ADC455141A331226E422F5441B9C57E84EA45514146E0D7972D2F5441EC51B85EEB4551410AD7A3202D2F5441B81E851BEE455141CDCCCC2C2C2F5441F6285C8FF0455141000000802B2F54413D0AD793E8455141F6285CAF222F5441AE47E1AAEB455141713D0A17212F5441AE47E15AEC4551417B14AEB71F2F5441CDCCCCFCF0455141A4703DEA1D2F54417B14AE37F3455141295C8F921D2F5441F6285CEFF4455141AE47E18A1C2F5441A4703DEAF6455141333333331D2F5441F6285C9FF8455141EC51B80E1D2F544133333333FE455141000000001E2F5441E17A141E0146514185EB51581E2F5441C3F528EC05465141EC51B85E1C2F5441333333D3064651413D0AD7331D2F5441713D0A370D46514185EB51A81D2F5441AE47E1CA12465141713D0A071C2F54419A9999D914465141666666661D2F5441CDCCCC6C17465141000000B01E2F54413333335325465141713D0A67202F54418FC2F5383046514148E17A641E2F54413D0AD73330465141CDCCCC0C1E2F5441D7A3706D304651417B14AEC71D2F54413D0AD7033146514152B81E851D2F5441D7A3704D32465141AE47E14A1D2F54415C8FC265334651417B14AE071D2F54413D0AD7333446514114AE47C11C2F544148E17A4438465141A4703DEA1A2F544148E17A6439465141EC51B87E1A2F5441CDCCCC5C3A465141D7A3705D1A2F544152B81E253B465141C3F5283C1A2F5441D7A370ED3E465141666666661A2F5441D7A370FD3F465141CDCCCC5C1A2F5441E17A14FE404651413D0AD7431A2F54418FC2F5B841465141C3F528DC192F5441713D0A374246514114AE4751192F5441E17A142E424651417B14AEF7182F54413D0AD7E3414651419A999979182F54418FC2F5684046514133333343162F54415C8FC2F53F46514114AE4701152F5441C3F5280C4046514114AE47F1132F54415C8FC2B540465141333333D3122F544114AE47E14146514114AE47D1112F54410AD7A3D043465141D7A3709D102F54417B14AED7484651417B14AE470E2F5441AE47E18A4B465141333333130D2F544114AE47014C465141E17A14BE0C2F544185EB51284C465141AE47E13A0C2F5441F6285C3F4C465141CDCCCC9C0B2F5441B81E85DB4B465141F6285CCF092F544148E17A644B465141EC51B89E082F5441713D0AC74A46514166666626072F54413D0AD7C34946514100000020052F54413333337348465141E17A14DE022F54415C8FC2F54646514100000090002F544133333303464651418FC2F528FF2E54418FC2F51845465141D7A370ADFD2E5441B81E853B404651417B14AE47FB2E54413D0AD7333E4651417B14AE37F72E54413D0AD7733A4651417B14AEB7F42E54413D0AD7C335465141F6285C9FF32E5441B81E858B314651417B14AE87ED2E5441B81E850B344651417B14AE07E62E54413D0AD7C330465141F6285C0FE32E54413D0AD7D32A4651417B14AE17E52E5441B81E850B2A465141F6285C0FE32E5441B81E85EB2B4651417B14AE17E02E5441B81E858B274651417B14AE07DC2E54413D0AD703234651417B14AE27DF2E5441B81E856B1F4651417B14AE27DF2E5441B81E85FB1B4651417B14AE97DD2E5441B81E856B1F465141F6285C3FDB2E54410AD7A3E019465141A4703D9AD82E54418FC2F5881546514114AE4771DC2E5441F6285CAF12465141295C8F72DD2E54413D0AD7031246514114AE4771DC2E5441AE47E1CA1146514114AE4751DA2E5441B81E85FB0B4651418FC2F548DA2E54415C8FC2250C46514114AE4771DC2E54418FC2F51804465141666666F6DF2E544148E17A1401465141713D0A77E02E5441E17A145EF94551418FC2F578E12E544100000080F3455141B81E85CBDF2E5441A4703D2AF3455141B81E851BDC2E5441295C8F02F5455141A4703DEAD72E5441C3F5288CFB45514100000060D12E54410AD7A390FE4551413D0AD733D02E54415C8FC2B505465141AE47E1FACE2E54413D0AD7A300465141F6285C8FCC2E5441B81E85EBFE455141F6285C1FC92E5441B81E85CBF14551417B14AE97C42E5441B81E855BF34551417B14AE97BF2E54413D0AD753F6455141F6285C8FB82E54413D0AD763F5455141F6285C5FB62E54413D0AD7B3F0455141F6285CAFB62E5441B81E855BEE455141F6285C2FB92E54413D0AD793E34551417B14AEB7B32E5441B81E856BD94551417B14AEE7B52E54413D0AD773D1455141F6285CFFBB2E54410AD7A380D34551413D0AD7D3C02E544133333323CF455141000000E0C12E544185EB51A8CA4551417B14AE77C22E54413D0AD733C64551417B14AE67C22E544100000010BE455141CDCCCC0CC22E54419A9999C9BB455141B81E85CBC42E5441333333C3B945514114AE47D1C52E54419A999909B8455141E17A14DEC62E5441D7A370FDB6455141AE47E16AC82E5441295C8FA2B545514166666656C92E544100000010B6455141AE47E1FACB2E544185EB51C8B445514185EB5138CF2E54417B14AE07B14551413D0AD783CD2E54418FC2F578AE4551418FC2F518D12E544114AE4711BA4551417B14AE87D52E5441F6285C8FBB455141AE47E16AD72E5441EC51B89EB845514166666606D92E54411F85EB01BB45514114AE47C1DB2E54417B14AEE7BD455141295C8FE2DD2E544133333313BE45514148E17A04E02E54419A999919BF4551417B14AE77E12E54410AD7A360C045514152B81EB5E42E544185EB51B8C0455141F6285C6FE72E5441AE47E12AC2455141E17A141EE82E5441295C8F62C4455141CDCCCCDCE72E5441295C8F52C54551413D0AD743E72E54415C8FC2F5C34551417B14AE27E62E5441000000E0C3455141EC51B8AEE32E5441CDCCCC4CC445514133333393E22E54419A999999C545514148E17A64E12E54411F85EB91CC455141C3F5282CE32E544152B81ED5D0455141D7A3705DE42E54415C8FC265D74551413D0AD743E72E5441C3F5282CDC45514185EB51F8E82E5441C3F5281CDD4551415C8FC245EB2E5441F6285CCFDA4551418FC2F598EE2E5441AE47E10ADA4551411F85EB21F02E544152B81EA5DE455141A4703DBAF02E5441295C8F12DF4551417B14AE37F02E5441295C8FF2E04551415C8FC225ED2E544148E17AD4E6455141713D0A57EE2E5441F6285C6FEB455141EC51B88EF02E544152B81E75EC455141F6285C5FF32E5441A4703DEAF14551410AD7A370F62E5441C3F528FCF4455141B81E853BF82E5441AE47E19AF645514114AE4731FA2E544185EB51C8FA455141713D0A47FA2E544185EB51B8FB455141000000E0FA2E5441295C8F72FE455141713D0A47FA2E5441CDCCCC4CFF455141000000E0FA2E54411F85EBF101465141EC51B89EFA2E54418FC2F5380346514133333363FB2E54419A99991905465141B81E85EBFC2E5441E17A14BE07465141C3F528BCFF2E5441F6285CDF09465141C3F5289C012F544114AE47110B4651419A9999F9022F5441B81E85DB0C465141E17A147E072F544148E17A740D46514114AE47D10A2F5441A4703D4A11465141EC51B80E0E2F5441D7A370CD114651411F85EB810F2F5441333333F310465141333333C30F2F5441333333130F465141AE47E12A0F2F5441713D0AF70D46514148E17A340D2F5441295C8F620A46514152B81E05102F544114AE47210A4651410AD7A300132F544185EB519808465141E17A145E142F5441295C8F720946514114AE47A1182F544152B81E250746514148E17A041B2F54411F85EBD103465141C3F5284C1C2F5441000000C000465141666666261D2F544114AE4731FE455141666666261D2F54411F85EBD1F84551410AD7A3201C2F5441C3F528DCF64551411F85EB611C2F54411F85EB11F54551418FC2F5C81B2F5441A4703DDAF24551418FC2F5B81C2F5441CDCCCC8CF045514152B81EE51C2F54410AD7A3B0EB4551417B14AE571E2F54413D0AD753EA4551413D0AD763202F544152B81EC5E74551413D0AD753212F5441A4703D1AE4455141D7A3709D1B2F54413D0AD753DF4551415C8FC2551A2F5441295C8F12DF455141AE47E1FA1C2F5441CDCCCCDCE0455141AE47E1DA1E2F5441F6285CAFDC4551413D0AD7731F2F5441AE47E1FADA455141F6285CAF1E2F54411F85EB71D9455141A4703D2A1A2F5441713D0AD7D4455141295C8F12162F54415C8FC2B5D2455141713D0AF7142F54410AD7A320CF4551413D0AD773142F5441B81E85CBC7455141333333C30F2F5441CDCCCC1CC7455141333333F30C2F544152B81E25C1455141666666760D2F5441C3F528ACBE45514185EB5188052F5441AE47E18ABC45514185EB5198042F54415C8FC2D5BA45514166666666032F54413D0AD713B3455141713D0A37062F544185EB51B8B54551411F85EB611C2F5441CDCCCC7CB64551411F85EB41292F5441666666A6B2455141CDCCCC9C312F5441D7A3705DA2455141B81E852B342F5441B81E859B9A45514185EB51C8312F54416666664693455141295C8FF22D2F54418FC2F5288E455141CDCCCCAC252F5441F6285CBF8A4551413D0AD743222F54415C8FC2C58B455141B81E858B182F5441E17A14AE7C45514148E17A44172F54411F85EBF175455141A4703D2A1A2F5441000000206F455141D7A3708D1C2F5441E17A140E6C4551417B14AE871B2F5441C3F528CC6B455141CDCCCCEC162F54410AD7A3A06B455141295C8F52122F544148E17AB467455141A4703D5A172F5441EC51B8CE6445514100000070172F54418FC2F5C863455141CDCCCC2C132F5441A4703DFA644551411F85EBA10D2F5441CDCCCC9C634551417B14AEE70A2F5441000000506145514148E17A440C2F5441E17A141E604551419A999989142F544152B81E955E45514114AE47D1152F5441333333A3594551413D0AD783132F54413D0AD78350455141C3F5284C112F5441666666564C455141E17A149E102F5441B81E85BB474551411F85EB61112F54417B14AEF73045514148E17A440C2F544114AE4751354551411F85EBE1FE2E5441E17A14CE3F4551417B14AE47EF2E54417B14AE173A455141A4703DBAF02E5441E17A14CE344551411F85EBD1F42E5441AE47E1AA2E455141AE47E14A022F54415C8FC2252A455141AE47E12A042F544185EB51C828455141EC51B84E0A2F5441C3F5280C22455141295C8F32092F5441EC51B8BE1F4551413D0AD7A3062F544114AE47711D455141000000B0082F5441A4703D4A1A45514114AE4701082F54413D0AD7731645514114AE4731052F5441A4703D1A12455141C3F5288C022F5441B81E85DB0A4551415C8FC2C5082F54410AD7A36004455141CDCCCC3C072F5441A4703D8A00455141AE47E15A012F5441EC51B82E034551415C8FC2E5FB2E544114AE47E100455141CDCCCC4CFB2E544114AE47F1FF4451413D0AD7D3F82E5441C3F5289CF8445141B81E852BF92E5441C3F5289CF8445141CDCCCC5C052F54417B14AE27F34451415C8FC2C5082F544185EB51C8EB445141713D0A87132F5441C3F5288CF0445141AE47E1DA1D2F5441EC51B86EF144514114AE47811F2F5441713D0A87F54451411F85EBC1262F5441666666F6FF4451418FC2F5C8392F54411F85EB810045514148E17AB43A2F5441D7A370AD064551411F85EBE1392F5441000000700E455141F6285C4F3A2F5441A4703D1A124551417B14AEE73A2F5441A4703D1A12455141F6285C2F3C2F54413D0AD763144551418FC2F5983B2F54410AD7A3E0154551418FC2F5183B2F544185EB518818455141EC51B8BE3B2F54415C8FC205184551413D0AD7C33C2F5441E17A141E1745514185EB51983C2F544100000040154551410AD7A3E03C2F544114AE476113455141EC51B88E3D2F54415C8FC235134551418FC2F5F83E2F544133333383144551411F85EBA1412F54418FC2F5181645514100000050452F5441333333831745514133333333482F5441F6285CDF18455141000000204A2F544152B81E752045514114AE47B1502F5441C3F528CC2345514152B81EF5522F54417B14AEF729455141E17A141E562F54417B14AE473D4551417B14AE374E2F5441295C8F92434551411F85EB11542F54411F85EB214945514166666656532F5441EC51B89E51455141C3F5287C532F544133333353574551415C8FC275582F5441E17A142E5D455141AE47E19A582F5441666666D660455141713D0A375A2F54410AD7A340604551410AD7A3305F2F544114AE47215B45514114AE4711602F544185EB510857455141E17A148E622F5441AE47E17A5B45514114AE4721632F5441D7A370AD68455141CDCCCC5C662F544114AE47816B45514152B81ED5662F5441295C8F126F4551417B14AEF7662F54410AD7A390714551413D0AD7A3672F54418FC2F5C87345514133333353692F54419A99998975455141A4703DBA692F54415C8FC215774551418FC2F5A8692F5441333333B378455141CDCCCCFC682F544114AE47517A45514148E17A84682F544185EB51787C455141666666A6682F5441295C8FE27D455141F6285CFF692F544114AE47917F45514148E17A046C2F544114AE477180455141D7A3705D6D2F544166666696814551415C8FC2D56D2F54417B14AE67834551410AD7A3906D2F5441CDCCCC8C8445514148E17AE46C2F5441CDCCCC6C85455141A4703D7A6B2F5441333333C3854551418FC2F5C8682F5441A4703D4A8545514166666606662F54410AD7A3E08345514114AE4741622F54416666667682455141EC51B85E602F5441D7A3707D7E4551419A9999595E2F544185EB51F8784551419A9999995C2F54411F85EB6173455141333333835A2F544152B81E15704551411F85EB91592F5441C3F5283C6B4551410AD7A380592F5441C3F528BC6745514185EB51E8592F5441F6285C2F664551415C8FC2C5592F54419A99991964455141713D0AF7582F54411F85EB11614551410AD7A3C0572F5441A4703D2A5D455141B81E859B562F54413D0AD7335A455141295C8F22562F54415C8FC29558455141E17A14DE552F54419A99990957455141F6285C0F552F544148E17A84514551419A999949512F544148E17AC44F4551419A9999894F2F544114AE47C147455141AE47E17A492F5441F6285C2F444551415C8FC295462F54416666664643455141EC51B82E472F54413D0AD7C342455141D7A3709D462F5441000000804345514185EB5138462F5441713D0AD74245514152B81ED5442F54410AD7A38042455141E17A14AE422F5441B81E853B42455141A4703DBA402F54411F85EBB141455141666666A63F2F5441B81E857B404551419A9999F93E2F5441AE47E12A42455141AE47E14A3D2F54410AD7A3804245514152B81ED53D2F54411F85EB9142455141D7A3702D3F2F5441713D0AD74245514114AE4741402F54419A9999D94345514100000030402F54413D0AD7C348455141D7A3706D3D2F544133333373514551410AD7A3203A2F54419A999929564551410AD7A340392F544152B81EC5554551419A999909332F54419A9999E95445514114AE47C1302F5441EC51B88E534551411F85EB412D2F5441A4703D6A52455141D7A3701D2B2F5441F6285C0F51455141000000302A2F54418FC2F5D84E4551417B14AE67282F5441295C8FA24C4551415C8FC255262F54419A9999594B45514114AE47B1242F54419A9999594A45514185EB51E8222F54417B14AEC747455141AE47E1FA212F5441D7A370ED4245514148E17A44202F5441295C8F923F455141E17A140E1F2F5441333333933C45514152B81E451E2F5441CDCCCCDC3A455141E17A148E1D2F544185EB51B838455141EC51B88E1B2F5441D7A3705D364551415C8FC2C5192F5441713D0AA733455141CDCCCC7C182F544152B81E1532455141F6285C8F172F544114AE4771304551411F85EB21172F5441F6285C5F2C4551418FC2F558152F5441D7A370CD2B45514100000090142F54411F85EBF12B4551419A9999D9132F5441F6285CDF2D45514100000010152F5441713D0AA735455141AE47E16A182F5441AE47E14A384551417B14AE571A2F5441CDCCCC5C3B4551417B14AED71C2F5441333333933C455141C3F5287C1D2F54416666663643455141000000A01F2F544114AE47114845514148E17A44212F544152B81E354A455141AE47E17A212F5441E17A14FE4A455141D7A3700D222F5441E17A14FE4A455141D7A3708D222F5441295C8F224C45514185EB5168242F5441000000104D4551415C8FC2D5252F54418FC2F5584F45514152B81ED5272F5441EC51B80E53455141713D0AE72A2F5441C3F528FC53455141000000302C2F544152B81E4554455141666666662D2F5441E17A140E554551415C8FC2652F2F544152B81E4556455141333333D3312F5441713D0AD756455141F6285CBF382F5441E17A148E57455141F6285C3F392F5441666666D6594551413D0AD7E3392F5441C3F5280C5F4551415C8FC2F53B2F5441E17A149E604551417B14AE873C2F5441713D0A67634551417B14AE873C2F5441295C8F32644551415C8FC2253C2F5441B81E85CB63455141A4703DDA3A2F5441CDCCCC1C6B455141A4703D3A392F544148E17AF46C45514114AE47D1382F544148E17A747245514114AE4741452F5441D7A3707D67455141666666B6462F54419A9999096745514133333343452F5441CDCCCC9C6645514185EB5118452F5441295C8F4263455141D7A3703D432F544152B81ED561455141B81E85AB422F5441C3F5280C614551418FC2F598422F544100000080604551418FC2F508412F5441AE47E1FA5E455141713D0A07412F54417B14AEF75E455141CDCCCCCC412F5441333333735E455141C3F528CC412F5441333333F35B455141AE47E1CA412F5441AE47E1EA5A4551415C8FC2954A2F54413D0AD7F350455141666666B6492F54419A9999294C455141C3F528AC472F54410AD7A37050455141EC51B81E402F544185EB5188594551418FC2F5C8412F5441295C8FD259455141666666C63C2F544185EB51E85D45514114AE47D13C2F54411F85EBB15945514114AE47D13A2F5441295C8F3257455141CDCCCC2C3A2F54417B14AED75245514114AE47D13A2F5441000000904F455141000000E03B2F5441C3F5281C4B455141CDCCCCAC3D2F54411F85EB3146455141295C8F32402F54417B14AE5744455141713D0A47412F544152B81E8543455141D7A3709D422F54418FC2F59843455141666666C6432F54417B14AE574445514185EB5158452F54417B14AEB748455141D7A370BD482F54415C8FC2D54C455141D7A3703D4C2F5441333333B34F455141D7A370FD4D2F5441CDCCCCFC514551419A999969502F5441333333D355455141295C8FA2522F5441295C8F4259455141CDCCCCEC542F5441295C8FC25C4551410AD7A320552F5441666666B65E455141CDCCCCCC552F54416666665661455141F6285CCF562F5441F6285CAF624551417B14AE47572F5441713D0AD764455141CDCCCC8C572F544148E17A7466455141E17A147E582F5441EC51B8DE67455141333333C3582F544185EB51086B455141A4703D4A582F54418FC2F5187045514100000060582F54417B14AEB773455141F6285C6F592F544114AE477179455141333333635B2F5441295C8FC27E4551410AD7A3005D2F544152B81E658245514185EB51485E2F5441B81E857B844551419A999919602F5441E17A147E8545514152B81E75622F54411F85EB9186455141295C8FB2662F54411F85EB618745514114AE4761692F5441713D0A9788455141F6285C7F6D2F5441713D0A078745514100000030712F54411F85EB5187455141713D0A17732F54410AD7A30086455141295C8F42742F54419A99991984455141D7A3708D742F54413D0AD7738145514114AE47F1712F5441295C8F6281455141D7A3701D6F2F5441000000807F455141713D0AE76D2F5441A4703D4A7E455141B81E856B6C2F544185EB51587D455141B81E858B6B2F5441666666567C455141A4703D9A6A2F5441D7A370FD7A455141F6285CFF692F544114AE477179455141333333336A2F544148E17A0477455141F6285CDF6A2F54418FC2F5A87445514148E17A246B2F544148E17A8473455141713D0A676A2F5441B81E854B71455141F6285C1F692F54413D0AD7236F4551411F85EB61682F54417B14AED76B4551418FC2F5E8672F5441C3F5289C684551411F85EB81672F5441713D0AF763455141CDCCCC5C662F54417B14AE975C45514100000050642F5441E17A142E5D455141713D0A176D2F544114AE47B15A455141EC51B8DE6F2F54410AD7A3D04D455141E17A14FE6E2F544185EB51984A45514114AE47116C2F54416666668641455141F6285C4F702F5441000000103A4551411F85EB616D2F5441F6285C2F394551415C8FC2E5642F54411F85EB413645514100000050642F5441000000103445514152B81E756A2F5441295C8FB236455141333333B36E2F54415C8FC2A53445514148E17A74702F5441F6285CBF26455141AE47E10A712F544185EB51681E455141000000306B2F5441713D0A171D45514148E17A94632F5441333333B31E455141B81E850B592F5441EC51B81E104551410AD7A3205A2F5441F6285CBF1145514152B81E555E2F5441B81E858B12455141D7A370FD5F2F544152B81EA51A455141AE47E11A712F5441EC51B83E19455141F6285C6F722F5441000000E00F4551410AD7A3107D2F54418FC2F56803455141D7A3705D8B2F544152B81EA5DF4451417B14AE37B42F5441326097D9DE4451410960EDA6BD2F54410B5980D2DE4451418D1010FBBD2F5441CDCCCCCCDE445141EC51B83EBE2F5441C43D0467EA4451412D3010C6CD2F54412E11F7ABEC44514175169BCFD02F54410500000014AE47F12E455141713D0A57412F5441B81E85CB2E455141A4703D6A3E2F5441EC51B84E32455141F6285C8F3E2F54413D0AD70332455141CDCCCC7C412F544114AE47F12E455141713D0A57412F5441050000008FC2F5C84C4551415C8FC2E53D2F54419A9999294F45514185EB51983C2F54410000002050455141295C8F023E2F5441C3F528DC4D455141EC51B85E3F2F54418FC2F5C84C4551415C8FC2E53D2F54411800000052B81E75C44551411F85EBF1D62E5441A4703D2AC44551419A9999A9D12E544114AE47F1C5455141A4703D5ACF2E544148E17A74C3455141A4703DAAC92E54419A9999C9C8455141D7A3708DCA2E5441EC51B8CECB455141333333E3C72E54417B14AE07D245514166666676CE2E5441E17A141ED645514185EB5138CD2E5441666666A6D6455141EC51B89ECB2E5441EC51B87ED9455141F6285CAFCC2E54419A9999D9D94551411F85EBD1CE2E54410AD7A3A0DB4551418FC2F548CE2E544185EB5118DB455141EC51B84ED12E54419A9999D9D94551413D0AD753D42E5441D7A3706DD8455141295C8F92D52E54413D0AD7D3D6455141F6285CAFD42E54418FC2F578D6455141000000C0D52E54418FC2F5C8D045514133333343D32E54417B14AEB7CF455141295C8F92D52E54415C8FC295CD455141AE47E11AD62E5441EC51B8CECB455141A4703D0AD52E5441CDCCCCACC945514185EB5148D62E54413D0AD703C84551411F85EB61D92E544152B81E75C44551411F85EBF1D62E5441240000008FC2F54806465141CDCCCC9CEB2E5441D7A3703D0046514100000080EC2E5441E17A143EF845514114AE4791ED2E54413D0AD743F345514148E17AC4E82E544100000000EF4551411F85EB41E32E544152B81EF5E845514100000020E12E5441295C8F72E34551417B14AE97E02E544185EB5178DE4551417B14AE97E02E54415C8FC2F5D84551410AD7A3D0DE2E5441333333C3D5455141E17A144ED92E544185EB51C8E0455141D7A3703DD82E54413D0AD783E44551413D0AD753D42E54419A9999E9EA455141F6285CAFD42E5441295C8FD2EE455141B81E852BDF2E5441B81E85BBF2455141A4703D6AE02E54419A999949F6455141D7A3709DE32E54418FC2F5E8F24551411F85EB91E52E5441333333E3F745514148E17AC4E82E5441D7A370DDFC455141EC51B80EE82E5441B81E851BFE4551411F85EBF1E82E544148E17A040A465141D7A3704DE92E5441F6285C0F10465141D7A3709DE32E54413D0AD7031246514133333353E42E54418FC2F50815465141D7A3704DE12E5441E17A14FE1646514100000020E12E54419A9999191E465141C3F5288CE22E5441D7A370AD2446514114AE4731E22E5441E17A145E22465141F6285CBFE52E544152B81E751E46514152B81E75E62E54418FC2F5081D46514114AE47E1E72E54419A99996918465141EC51B80EE82E544185EB51F813465141F6285C6FEB2E5441F6285C0F1046514100000080EC2E5441333333A30E4651417B14AEF7EB2E54415C8FC2C508465141D7A370ADEC2E54418FC2F54806465141CDCCCC9CEB2E544105000000A4703D1A54455141E17A145E3D2F544148E17A34564551419A9999993C2F5441295C8FB2564551410AD7A3003E2F54413D0AD7A354455141B81E85CB3E2F5441A4703D1A54455141E17A145E3D2F54410500000048E17AC47E455141EC51B89E432F5441E17A141E7F45514133333353402F54417B14AE1781455141D7A3707D402F544152B81EC580455141AE47E15A432F544148E17AC47E455141EC51B89E432F5441
+</a>
+
+<b>
+010600000001000000010300000006000000FD010000B8D1780FAF445141EF2DDA8F382F5441FF3093BEAE4451416494F2A7372F54419A9999F9B744514148E17A94372F54419A999979B9445141C3F5283C372F54410AD7A3E0B94451417B14AE27362F5441333333B3B24451415C8FC2D5302F54413D0AD703AA4451415C8FC2F52A2F54419A999969A944514148E17AB4292F5441A4703DAAA944514100000000282F544148E17A94AD445141E17A147E262F5441F6285CEFAE445141D7A370BD252F544152B81EB5B44451413D0AD793222F5441CDCCCC2CB94451418FC2F538212F5441C3F528CCBE44514152B81EC5202F54411F85EB91C44451418FC2F5F8202F544185EB5148C944514114AE4771212F54415C8FC205CE44514166666686222F5441AE47E12AD2445141CDCCCCEC232F5441F6285C2FD4445141C3F5280C252F5441A4703DFAD5445141F6285C9F272F544148E17A44D744514148E17A14292F544166666646D8445141295C8FB2292F5441AE47E15ADB445141EC51B85E2A2F5441D7A3700DDF445141D7A3707D2B2F544185EB5108E3445141333333D32B2F5441AE47E11AE544514185EB51482D2F5441D7A3706DEA44514185EB51F82F2F5441713D0A57ED445141333333B3302F544100000010F4445141713D0A57342F544133333333F74451419A9999F9362F5441333333D3F8445141A4703D1A392F5441B81E852BFA4451415C8FC2F53B2F54411F85EB91FB4451413D0AD7933C2F5441E17A14EEFE445141B81E854B3C2F54411F85EB9101455141EC51B87E3C2F54411F85EB810045514148E17AB43A2F5441666666F6FF4451418FC2F5C8392F5441713D0A87F54451411F85EBC1262F5441CDCCCCCCEA445141666666A6262F54413D0AD7F3E7445141A4703DAA202F544166666656DE4451417B14AED7212F5441E17A140ED3445141E17A14FE192F54419A9999A9D2445141333333330F2F5441F6285C2FB2445141D7A3706D1D2F544166666656AF445141EC51B85E202F5441295C8FD2AB4451413D0AD7A3252F5441EC51B80EA84451418FC2F558272F544166666626914451415C8FC2451B2F54411F85EBA18B445141D7A370ED1C2F54415C8FC2C5814451411F85EBE1272F5441295C8F5280445141AE47E1CA302F54419A99999977445141AE47E15A2A2F544114AE47417544514152B81E75232F5441E17A14CE6D44514152B81EC5262F5441E17A14CE65445141CDCCCC6C242F544114AE47F165445141B81E850B232F5441EC51B87E72445141D7A370CD1D2F54419A999999774451410AD7A3F0152F5441666666469544514148E17A44032F544185EB5198B34451417B14AE77F62E544148E17A64B544514185EB5198FB2E54418FC2F538BE445141713D0A37F62E5441EC51B8CEBD445141666666D6F02E544148E17A64AD445141E17A147EEA2E5441AE47E1FAA0445141EC51B8DEDF2E5441333333039C445141EC51B8DEDF2E5441000000E09F445141713D0A37E62E54413D0AD7B3944451418FC2F548EC2E544185EB512880445141C3F528FCF32E5441F6285C4F6C445141AE47E19AFD2E5441EC51B8FE6A445141C3F528FCFB2E5441A4703D9A6B44514185EB51A8F92E5441CDCCCCDC6A445141F6285CBFF72E54416666666666445141EC51B85EFB2E54411F85EB9165445141666666F6FB2E5441A4703DAA68445141C3F528ECFE2E544152B81E0565445141E17A148E012F5441666666F6624451417B14AEA7FD2E54413D0AD7F35C44514152B81E95012F54413D0AD79359445141AE47E18A082F544114AE47C14F445141E17A149E0E2F5441A4703D7A51445141A4703D8A102F5441C3F528CC5644514152B81E55112F544114AE4781654451413D0AD763162F5441000000B06744514114AE47C11A2F54419A99996964445141713D0A571F2F544185EB51B859445141B81E85CB242F5441F6285CDF3E445141A4703DEA422F544114AE47812F44514152B81E05632F5441713D0AD715445141B81E85DB6A2F5441D7A3701D1944514185EB51A86F2F5441F6285C9F1544514152B81E85832F544185EB51D821445141AE47E13A872F544148E17AF427445141D7A370DD822F544114AE47914944514166666656812F544148E17AC45144514133333353862F5441A4703D4A53445141333333D3892F544148E17A8453445141F6285CBF902F5441CDCCCC8C57445141713D0AC7942F544152B81E155844514152B81ED5962F54418FC2F578574451417B14AE57992F544185EB51A85B445141CDCCCCACA42F5441D7A3709D58445141295C8FF2A72F54419A999989584451417B14AE77A92F54417B14AE575C44514166666696AC2F5441CDCCCC1C5C44514114AE4761B12F54419A999989584451410AD7A3E0B42F544185EB5128584451418FC2F528B72F5441713D0A175E445141CDCCCC1CC22F5441A4703DDA5E445141295C8FF2C92F54417B14AE575C445141295C8F12E12F54419A9999C95644514185EB5128E72F544152B81E454E44514152B81EE5E92F544166666616434451411F85EB81E32F5441000000503944514166666616DB2F5441C3F5289C2E4451415C8FC265D42F54413D0AD763214451413D0AD703D12F544148E17A1410445141B81E855BC82F5441AE47E1DAFB4351413D0AD713C62F544166666636F743514185EB5198C82F54410AD7A3F0F143514133333353CA2F5441CDCCCC9CD5435141AE47E14ACC2F5441C3F5284CCF43514114AE4721D72F544114AE4751CF43514152B81E25E12F544152B81E35D1435141EC51B82EE62F5441E17A147EDA43514114AE4711E12F5441E17A140EDF43514114AE47F1DE2F54418FC2F558DE435141B81E85CBDB2F5441295C8F22DF435141D7A3709DDA2F54419A999939E3435141EC51B81ED92F544148E17AE4E8435141D7A3700DDD2F544152B81EE5EF4351418FC2F5F8D52F5441E17A14EEF4435141EC51B8DED42F5441D7A370AD03445141666666A6D42F5441A4703DDA0C44514152B81E35D62F544114AE47F121445141C3F5283CDE2F54413D0AD7332A445141A4703D6ADF2F5441AE47E15A344451419A9999A9E32F544185EB51E83B4451413D0AD703E92F544185EB5188464451411F85EB61F92F544114AE47914B445141E17A146E023054418FC2F55856445141A4703D0A093054413D0AD7C357445141295C8F520B3054415C8FC2255B4451419A9999B908305441AE47E1FA5D4451413D0AD79305305441F6285C2F604451415C8FC2F5013054411F85EBE16344514100000030F42F5441713D0A97644451411F85EB71EE2F5441D7A370AD6444514100000020EA2F544185EB5188644451417B14AE37E22F54411F85EBD16444514114AE47A1DF2F54413333335365445141F6285C2FDD2F5441333333A36944514148E17AE4D02F5441EC51B80E6C445141295C8FA2CB2F54417B14AEC769445141A4703DCACB2F544114AE4731674451418FC2F5F8C62F5441295C8F2269445141E17A145EC12F5441A4703DAA624451415C8FC295B62F54413D0AD78361445141D7A3703DAD2F5441666666766444514114AE47B1A52F5441E17A14EE754451415C8FC2C59B2F5441D7A3709D7C445141295C8F62A22F5441666666E687445141AE47E1DA9D2F5441B81E857B894451411F85EB71A02F544148E17A048F4451418FC2F5589C2F5441B81E85AB904451417B14AE679A2F54411F85EBD1914451411F85EB51982F5441713D0A67934451411F85EB71952F5441A4703DFA93445141EC51B86E932F5441B81E858B93445141295C8FA2912F54410AD7A3608E4451417B14AEE78A2F5441666666268E445141333333C3892F54417B14AE878E4451419A999929882F5441A4703DFA8F4451413D0AD7F3852F54411F85EB9192445141C3F5287C7E2F54411F85EB9192445141CDCCCC1C7D2F54415C8FC2F591445141A4703DAA7B2F544152B81E3590445141AE47E14A7A2F544185EB51D88D445141B81E859B792F54417B14AE678B44514148E17A74792F54411F85EB518444514148E17A74792F5441E17A145E7F44514148E17A24782F54417B14AE977D4451419A9999A9762F5441CDCCCC3C7D445141D7A3704D752F5441B81E855B7D445141F6285C0F742F5441000000207E445141B81E853B732F5441A4703DAA7F445141B81E851B722F5441C3F528CC82445141D7A370DD702F54413333337383445141B81E85EB6F2F54413D0AD763834451417B14AE176F2F54410AD7A380824451415C8FC2156E2F5441333333037F4451413D0AD7236D2F544114AE47117E445141E17A146E6C2F5441A4703D6A7D445141000000306B2F5441295C8FF27D445141EC51B83E602F5441333333537F44514148E17AA4572F54413D0AD7B37E445141B81E852B572F5441B81E859B7D44514133333333582F54413D0AD7937C44514114AE47C15A2F5441CDCCCCAC7B445141EC51B86E5A2F5441000000007A4451411F85EBA15D2F544148E17A447444514152B81E955A2F54419A99999975445141713D0AF7572F5441AE47E16A744451417B14AE57572F544100000010754451411F85EBF1552F5441B81E858B76445141CDCCCC9C562F5441A4703DEA79445141E17A141E562F54417B14AEC77D4451419A999939562F54419A9999C97E4451415C8FC2B5552F544152B81E957F445141C3F5282C552F544114AE47318144514185EB51D8512F54419A999979854451417B14AE17482F5441B81E859B8744514148E17A14442F5441CDCCCCBC894451411F85EBB1402F544152B81E358B44514152B81E753E2F544152B81E3580445141000000D03E2F5441E17A14AE77445141E17A140E3C2F54410AD7A3C07A44514185EB5188352F54415C8FC2E5804451417B14AEC7342F54418FC2F5A884445141AE47E14A382F54410AD7A3408E445141A4703D7A372F54411F85EB418F445141D7A3705D3B2F544152B81E3593445141B81E850B392F5441713D0AC795445141AE47E12A382F54419A99999998445141AE47E1FA372F5441CDCCCC7C9C445141AE47E13A382F544100000040A0445141AE47E13A382F544148E17A34A6445141A4703DBA372F54415C8FC295AE4451417B14AEA7372F5441E50971E5AE44514100AEAB6D382F5441000000E0AA445141A4703D7A382F5441713D0AC79F4451413D0AD763392F5441C3F528CCA24451419A9999493B2F54415C8FC245A44451419A9999B93A2F5441EC51B8FEA7445141F6285C7F3B2F5441713D0A27A74451411F85EB913F2F5441713D0A07A6445141AE47E12A422F54419A999999A344514133333333442F54411F85EB61A14451413D0AD743472F54417B14AEE79B445141A4703D5A432F54417B14AE679D445141AE47E16A402F54415C8FC2B598445141CDCCCC8C3A2F54415C8FC2359744514114AE4781392F5441EC51B80E954451411F85EB91392F5441666666C692445141CDCCCC8C3A2F544114AE47418F4451415C8FC2E53C2F54413D0AD7838C445141A4703DDA3E2F54410AD7A3B08A44514152B81E65412F54417B14AE57884451419A9999C9442F5441295C8F62864451411F85EB91482F5441C3F5283C81445141D7A3702D542F544148E17A8480445141295C8F32562F5441295C8FD27E44514100000070602F5441CDCCCC4C7E4451417B14AE376A2F54413D0AD7F37E44514152B81E756B2F5441F6285C0F80445141EC51B85E6C2F544152B81E1582445141295C8FB26C2F54417B14AED783445141AE47E17A6D2F5441295C8FE2844451417B14AEB76E2F544114AE47C1844451415C8FC205702F544185EB51E88344514133333343712F5441C3F528BC7F4451417B14AE37732F5441000000A07E44514114AE4721742F5441E17A146E7E445141C3F5281C752F5441000000A07E44514166666616762F544100000020804451411F85EB31772F5441E17A146E844451411F85EBB1782F54413D0AD7038B44514100000080782F5441B81E85BB8E4451411F85EBB1782F5441713D0A4791445141E17A14CE792F5441666666C692445141F6285C6F7B2F5441000000A093445141F6285CEF7C2F5441000000A0934451413D0AD7E37E2F5441295C8FE2904451411F85EB31862F54417B14AED78F4451419A999969882F5441295C8F628F44514185EB51D8892F54417B14AED78F4451415C8FC2158B2F544185EB516894445141EC51B86E902F544100000020954451410AD7A320922F544114AE4741954451410AD7A3A0932F544185EB5168944451417B14AEC7952F544185EB51E892445141666666A6982F544185EB51A893445141EC51B8DE982F54417B14AE7793445141295C8F329A2F544114AE474192445141CDCCCCCC9A2F544152B81E2591445141713D0AB79B2F5441D7A370ED91445141000000909C2F54416666669698445141EC51B8EE9A2F544133333393974451411F85EB91932F5441E17A140E984451417B14AEB7922F54417B14AEA799445141EC51B82E922F5441B81E854B9E445141295C8FD2922F5441F6285C1FA1445141E17A14BE942F544148E17A34A34451419A999909972F544152B81EA5A444514148E17AB4992F54413D0AD763A54451419A9999999D2F54417B14AE67A6445141295C8FF29F2F5441A4703DFAA54451418FC2F5F8A12F54411F85EB41A7445141E17A140EA42F5441F6285C7FA1445141EC51B8AEA72F54417B14AE37A0445141B81E85EBA52F5441000000909A445141D7A370CDA82F5441295C8F829E44514185EB51A8B12F544185EB5138AF44514148E17AE4B32F5441EC51B86EAF445141AE47E1CAB82F5441EC51B80EA6445141666666C6BB2F54410AD7A360A6445141CDCCCC7CC22F5441A4703D6AB24451419A999969C92F54411F85EB31B7445141295C8FA2CF2F54413D0AD7D3C14451418FC2F588DC2F544185EB5118BF445141B81E852BE12F5441B81E85ABB14451419A999909EC2F544114AE47C1A2445141CDCCCC9CEB2F54410AD7A3E0894451419A999939E22F54418FC2F5F88F445141CDCCCC5CF32F5441E17A14FE97445141666666F6F22F54418FC2F5B89B445141713D0A57FC2F5441A4703D8A934451415C8FC265FD2F5441A4703D9A94445141333333630030544152B81E95A14451418FC2F5080630544114AE4781B544514114AE47C104305441E17A14BEB744514148E17A8402305441EC51B81EB4445141000000F0FD2F5441C3F5286CB74451413D0AD7C3FC2F5441B81E85DBBC445141AE47E1BA02305441AE47E10AC8445141C3F528AC06305441B81E850BD14451417B14AEC708305441D7A3703DD444514148E17A240E305441A4703DFAD6445141CDCCCCCC0D30544133333393D84451410AD7A3600A3054418FC2F5C8E4445141E17A147E0A305441E17A14DEE7445141295C8F520830544114AE4791F14451418FC2F5080A305441713D0A27FB44514152B81E45063054419A99998905455141CDCCCCBCFE2F5441EC51B82E0D455141295C8F2201305441B81E852B15455141295C8FA2F62F5441F6285CCF1645514166666686F62F5441666666661745514100000060EA2F544148E17A14094551413D0AD7C3E22F544114AE4701FC445141295C8F92DC2F544114AE4741EE445141E17A14EED22F5441CDCCCCCCDE445141EC51B83EBE2F544152B81EA5DF4451417B14AE37B42F54418FC2F56803455141D7A3705D8B2F5441000000E00F4551410AD7A3107D2F5441EC51B83E19455141F6285C6F722F544152B81EA51A455141AE47E11A712F5441B81E858B12455141D7A370FD5F2F5441F6285CBF1145514152B81E555E2F5441EC51B81E104551410AD7A3205A2F5441E17A146E09455141AE47E13A5B2F5441C3F5280C02455141D7A3709D502F5441CDCCCC0CED445141B81E853B492F54417B14AE47ED4451410AD7A3803E2F5441A4703DFAF6445141C3F5284C382F5441333333B3F54451413D0AD7C3362F54411F85EB71F34451415C8FC225352F5441D7A3709DEF44514148E17AE4322F5441295C8F62ED4451418FC2F5E8312F54417B14AED7EA44514133333353312F54419A999989E6445141E17A145E2F2F5441C3F5287CE3445141666666662D2F54415C8FC255E24451413D0AD7E32C2F54413D0AD733DF4451410AD7A3A02C2F544100000010D844514152B81EC52A2F5441A4703DCAD644514114AE47612A2F54419A999939D5445141A4703D3A282F54413D0AD7F3D344514152B81E45262F5441CDCCCCCCD144514100000000252F54418FC2F528CF44514152B81E05242F54419A999959CA4451415C8FC295222F54413D0AD7E3C44451417B14AEF7212F5441A4703DBABE445141E17A14DE212F54417B14AE77B844514148E17A74222F544185EB5188B5445141CDCCCC3C232F544100000080B244514148E17AB4242F5441333333D3AD44514114AE47B1272F54417B14AE97AA445141EC51B84E292F54415C8FC215AB4451410AD7A3802A2F5441713D0AE7B94451419A999979342F5441AE47E12ABB4451410AD7A3E0352F544148E17A84BB445141CDCCCC6C372F544114AE4741BA445141A4703D7A382F54415F9104D7AF4451414EE51085382F5441AE47E10AB2445141EC51B89E3B2F54418FC2F5A8B24451413D0AD7333C2F5441666666E6B3445141E17A141E3D2F5441E17A141EB44451419A9999093E2F54415C8FC2C5B3445141E17A14FE3E2F5441F6285C0FB2445141F6285C4F402F5441333333B3B1445141EC51B8FE402F54419A9999D9B144514133333393412F5441E17A147EB2445141F6285CEF412F5441C3F5283CB4445141C3F5286C422F54419A999949B544514100000000442F5441A4703D2AB6445141713D0A97462F5441333333D3B64451417B14AEE7472F544152B81EE5B94451417B14AEF7492F544100000030BB445141D7A3705D4B2F5441B81E851BBC4451415C8FC2E54C2F54419A9999E9C24451418FC2F598522F5441C3F5289CC54451410AD7A340542F5441295C8F82C744514166666656562F54419A999969C9445141666666C65C2F5441666666F6C94451410AD7A3F05D2F54410AD7A320CB4451418FC2F5685F2F54410AD7A3F0CC445141F6285C4F602F5441E17A14CECF44514185EB5138612F54411F85EB91D4445141AE47E14A622F5441333333F3DD445141295C8F02642F544133333313E1445141C3F5283C652F544152B81EF5E3445141666666A6692F5441666666A6E1445141713D0A876B2F5441E17A14DEDE445141A4703D8A722F54417B14AEF7DC445141D7A3700D752F544166666636DD445141295C8F42772F5441A4703D8ADC445141333333437A2F544185EB51E8DC4451419A9999497C2F54411F85EB31DE44514148E17A447D2F5441D7A3701DDF445141C3F528EC7E2F54413D0AD7F3E04451419A9999797F2F5441C3F528CCE5445141B81E853B822F5441D7A370ADE8445141F6285CAF842F5441AE47E1AAEF445141CDCCCC2C852F544166666676F04451417B14AE47862F5441713D0A57F0445141F6285CDF872F5441D7A3701DEF44514148E17A148A2F54418FC2F5D8EC445141A4703D2A8C2F5441CDCCCC0CEC445141295C8FB28D2F544166666626EA445141713D0AF78F2F5441E17A149EE84451413D0AD7D3932F5441295C8FA2E7445141F6285CBF942F5441AE47E1FAE5445141CDCCCC3C952F54411F85EBA1E44451417B14AE57962F5441295C8F62E4445141295C8F52972F544185EB5148E3445141B81E85CB982F5441000000D0E14451418FC2F548992F54418FC2F5F8DF44514152B81E159A2F5441A4703D3AD944514100000070A12F5441000000B0D144514152B81E15AA2F544114AE4711CC445141CDCCCC7CB12F5441333333F3C744514148E17AD4B82F544152B81E55C74451410AD7A3D0BB2F5441713D0AD7C64451413D0AD713BC2F5441713D0AE7C5445141C3F528DCBB2F5441B81E859BC54451415C8FC2C5BA2F544185EB51A8C644514152B81EF5BA2F544166666656C7445141C3F5286CB82F5441C3F5287CCB445141EC51B82EB12F5441EC51B86ED0445141000000A0AA2F544152B81E95D544514166666676A42F5441E17A14FEDC4451415C8FC2159C2F5441666666F6DF445141CDCCCC6C992F5441EC51B82EE1445141A4703DDA982F5441B81E85ABE2445141F6285C0F982F5441D7A3704DE34451411F85EB81972F5441713D0AC7E3445141B81E85AB952F544100000080E8445141D7A3701D932F5441D7A3706DE9445141666666B68F2F54418FC2F548EB445141B81E85BB8D2F54415C8FC295EC44514114AE47918B2F5441F6285CEFEE44514166666676892F5441D7A3708DEF445141A4703D1A882F5441CDCCCCCCEF445141E17A14AE862F54417B14AEE7EE445141666666A6852F544100000070E844514114AE4751852F54411F85EBB1E5445141F6285C2F832F5441B81E85ABE344514152B81E65812F54418FC2F5F8DE4451418FC2F5887F2F54415C8FC205DD445141A4703DEA7C2F54411F85EB51DC445141B81E856B7C2F5441713D0AE7DB445141B81E856B7A2F544152B81EA5DC445141295C8F12772F54417B14AE67DC4451419A999999742F54419A999969DE445141C3F5283C722F5441D7A370BDE0445141000000606C2F544152B81EA5E0445141713D0AD7662F54417B14AE87DF445141EC51B81E652F5441713D0AB7DD44514100000090642F544185EB5158DB44514148E17A24642F54413D0AD763D5445141F6285CEF622F5441EC51B88ECF445141C3F528BC612F5441333333F3CB4451413D0AD783602F5441A4703D9ACA4451411F85EBA15F2F544148E17A34C944514114AE47D15D2F5441295C8F52C84451415C8FC2955B2F5441C3F5286CC7445141713D0A17582F5441713D0AA7C64451417B14AE27562F5441C3F5287CC5445141B81E85FB542F54419A9999F9C2445141EC51B84E532F54417B14AEE7BB445141666666964D2F5441E17A148EBA445141666666964B2F5441D7A3703DB9445141A4703D3A4A2F5441333333A3B5445141B81E85CB472F5441D7A370EDB44451411F85EB21442F5441AE47E1EAB34451419A9999B9422F5441A4703D9AB24451413D0AD753422F5441A4703DCAB1445141A4703DEA412F5441D7A3704DB144514114AE4751412F54418FC2F548B1445141E17A14DE402F54411F85EB01B24451411F85EBB13F2F5441EC51B82EB3445141295C8FE23E2F5441C3F5287CB3445141F6285C8F3E2F5441EC51B8AEB3445141D7A370ED3D2F5441E17A146EB3445141E17A143E3D2F54415C8FC2C5B14451418FC2F5083C2F544180C60F87AF445141F9522D49392F5441B8D1780FAF445141EF2DDA8F382F54410700000014AE479180445141AE47E14A9F2F54411F85EB217E445141333333F39E2F5441000000007F445141D7A370BD9A2F5441EC51B88E80445141000000109B2F5441B81E851B8044514185EB51589D2F5441AE47E1DA80445141F6285C7F9D2F544114AE479180445141AE47E14A9F2F544108000000EC51B8CEA94451415C8FC225F42E54411F85EBF1A1445141666666D6F82E544148E17A649944514148E17AC4FA2E5441AE47E1AA8D4451418FC2F548F82E54417B14AE878D4451413D0AD713F22E5441295C8FA2A2445141295C8FB2EC2E544100000030A744514133333363ED2E5441EC51B8CEA94451415C8FC225F42E544112000000F6285CCFA94451410AD7A3E09A2F5441EC51B8FEA7445141F6285C3F972F544166666686AF4451411F85EB41932F5441666666C6BA44514114AE4771912F5441A4703D1AC244514114AE4701892F5441000000F0C4445141F6285CBF802F544166666666C1445141295C8F927D2F54418FC2F5D8C3445141C3F528AC782F54415C8FC275D044514114AE4781712F544148E17AE4D14451411F85EBF1732F5441713D0A77CD4451410AD7A350762F544166666676CE445141C3F5281C812F5441AE47E17AC64451410AD7A3008A2F544152B81E95C044514148E17A448E2F5441B81E850BBD4451415C8FC2B5932F54418FC2F5C8B54451411F85EBE1972F54417B14AEF7B0445141E17A14FE952F5441F6285CCFA94451410AD7A3E09A2F544105000000713D0A579A445141CDCCCC3C812F5441713D0AD798445141713D0A277F2F5441A4703D1A9C445141CDCCCCBC7C2F544185EB51789D4451413D0AD7E37E2F5441713D0A579A445141CDCCCC3C812F54410B0000008FC2F5E8F14451411F85EB21F02F544148E17A84EB4451413D0AD703EC2F544114AE47B1DC4451415C8FC205DE2F5441CDCCCC0CD94451411F85EB81D42F5441EC51B85EDD44514185EB5108D32F5441E17A14FEDF44514133333313DD2F5441E17A143EE5445141D7A370EDDF2F5441D7A3702DEB445141295C8FC2DD2F5441666666F6F3445141713D0A77E32F5441B81E85CBF144514166666666E92F54418FC2F5E8F14451411F85EB21F02F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>938628 - 3201913
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000007000000510200002E11F7ABEC44514175169BCFD02F54414AE35D96ED44514148535409D22F544116C5A752EE445141DACD43FAD22F5441FD668810F04451416152F232D42F54414F3D5D41F344514177A5C46FD62F5441F467B60CF6445141EE226C65D82F5441C195C913F8445141597C6FD1D92F54411361478AFA4451419DF7948BDB2F54410E410A98FC4451411948F6D9DC2F54418047D258044551414C51CDBBCA2F5441BE67825B10455141DFBA5223B72F54414BE4E5F51C455141E9DCB3F6AF2F54418576DE6B25455141A3EA29D2AA2F5441666666062945514100000020A82F54410AD7A3D02F45514100000030A52F544185EB513833455141333333839F2F5441713D0A7737455141000000D09C2F54413D0AD7C33E455141A4703DBAA02F5441C3F5287C424551410AD7A3E09F2F5441EC51B8BE3A4551411F85EBE19A2F544185EB51884045514114AE4721942F5441AE47E10A43455141295C8F52942F544114AE4701444551418FC2F5888E2F54411F85EB314F455141295C8F02872F544152B81EA56E455141713D0A27832F54415C8FC2F570455141333333E3842F544114AE476170455141AE47E12A882F5441CDCCCC7C6D4551418FC2F5188A2F544148E17AE467455141000000108B2F54419A9999A9684551410AD7A3608D2F54419A99993964455141000000808F2F54411F85EB616545514152B81E45902F54415C8FC2A563455141C3F5283C912F54419A99993964455141666666E6942F54418FC2F5E861455141333333A3962F544114AE47A15E455141B81E85CB972F544148E17A24564551418FC2F568972F54410AD7A3004F45514100000060982F5441AE47E16A4C455141F6285CEF9D2F5441EC51B84E58455141CDCCCC8C9C2F5441AE47E10A62455141D7A370BD9B2F544100000040674551411F85EB419B2F54411F85EBA173455141713D0AB79A2F54418FC2F5E875455141713D0A979B2F54419A9999497F455141713D0A17A22F5441A4703D0A8445514148E17A04A62F54410AD7A34087455141B81E857BA82F5441713D0A978A455141000000E0AA2F5441E17A143E93455141A4703D9AB02F5441295C8FC298455141F6285CBFB32F5441EC51B83EA0455141AE47E1AAB82F5441295C8FE2A3455141AE47E1EABC2F5441EC51B89EA8455141713D0AD7C22F5441AE47E18AAA45514185EB5128C52F5441D7A3708DBD45514152B81E65CE2F5441E17A14DEBF455141C3F528ACDC2F5441333333C3C245514148E17AB4E62F5441D7A370FDC145514148E17A24EB2F5441C3F5283CC64551410AD7A350F12F54413D0AD783C945514148E17A04F42F54410AD7A360C9455141D7A3703DFF2F544185EB5168CC455141000000A00930544133333353BE455141E17A148E0B30544185EB5178BD4551418FC2F57816305441C3F528ACC64551413333336316305441B81E854BC9455141D7A3703D1630544148E17A64CC4551413D0AD793153054417B14AE77CE455141AE47E1AA14305441D7A3707DD04551419A9999291330544185EB5178D1455141CDCCCC9C10305441C3F528BCD1455141CDCCCC5C0E305441B81E851BD24551419A99991909305441F6285C4FD2455141333333E305305441AE47E1AAD2455141C3F5281C02305441C3F5281CD4455141295C8FE2F72F544148E17A24D4455141EC51B8DEF52F5441A4703DBAD3455141EC51B81EF32F5441CDCCCC1CD3455141D7A3708DF02F54413D0AD703D345514185EB5118EE2F5441EC51B80ED3455141AE47E1CAEC2F54419A999919D4455141713D0A47EA2F544114AE4731D545514148E17AD4E82F5441CDCCCC4CD5455141713D0A87E72F5441D7A3708DD445514133333313E42F54417B14AEF7D34551419A9999B9E02F544185EB51D8D34551419A9999E9DB2F544152B81E85D3455141666666B6D52F544114AE47E1D2455141713D0A37D02F54410AD7A350D2455141333333D3CB2F544166666626D24551411F85EB11C42F5441E17A142ED245514185EB51D8C12F5441EC51B8DED245514133333343BD2F5441EC51B86ED4455141E17A140EB62F5441EC51B88ED645514114AE47D1AB2F5441713D0AC7D6455141C3F5288CA92F5441D7A3702DCF455141C3F5280C9D2F5441C3F528BCC6455141AE47E1DA912F5441F6285C8FBD455141295C8F22842F5441C3F528FCB8455141D7A3708D7C2F5441D7A3704DB3455141B81E853B732F54417B14AEE7A64551417B14AE075F2F5441E17A14AE9B455141D7A3700D4E2F5441C3F5282CB8455141D7A3705D432F5441C564E0DDE0455141F8F5CB3A492F5441B038DE7ADC455141A331226E422F5441B9C57E84EA45514146E0D7972D2F5441EC51B85EEB4551410AD7A3202D2F5441B81E851BEE455141CDCCCC2C2C2F5441F6285C8FF0455141000000802B2F54413D0AD793E8455141F6285CAF222F5441AE47E1AAEB455141713D0A17212F5441AE47E15AEC4551417B14AEB71F2F5441CDCCCCFCF0455141A4703DEA1D2F54417B14AE37F3455141295C8F921D2F5441F6285CEFF4455141AE47E18A1C2F5441A4703DEAF6455141333333331D2F5441F6285C9FF8455141EC51B80E1D2F544133333333FE455141000000001E2F5441E17A141E0146514185EB51581E2F5441C3F528EC05465141EC51B85E1C2F5441333333D3064651413D0AD7331D2F5441713D0A370D46514185EB51A81D2F5441AE47E1CA12465141713D0A071C2F54419A9999D914465141666666661D2F5441CDCCCC6C17465141000000B01E2F54413333335325465141713D0A67202F54418FC2F5383046514148E17A641E2F54413D0AD73330465141CDCCCC0C1E2F5441D7A3706D304651417B14AEC71D2F54413D0AD7033146514152B81E851D2F5441D7A3704D32465141AE47E14A1D2F54415C8FC265334651417B14AE071D2F54413D0AD7333446514114AE47C11C2F544148E17A4438465141A4703DEA1A2F544148E17A6439465141EC51B87E1A2F5441CDCCCC5C3A465141D7A3705D1A2F544152B81E253B465141C3F5283C1A2F5441D7A370ED3E465141666666661A2F5441D7A370FD3F465141CDCCCC5C1A2F5441E17A14FE404651413D0AD7431A2F54418FC2F5B841465141C3F528DC192F5441713D0A374246514114AE4751192F5441E17A142E424651417B14AEF7182F54413D0AD7E3414651419A999979182F54418FC2F5684046514133333343162F54415C8FC2F53F46514114AE4701152F5441C3F5280C4046514114AE47F1132F54415C8FC2B540465141333333D3122F544114AE47E14146514114AE47D1112F54410AD7A3D043465141D7A3709D102F54417B14AED7484651417B14AE470E2F5441AE47E18A4B465141333333130D2F544114AE47014C465141E17A14BE0C2F544185EB51284C465141AE47E13A0C2F5441F6285C3F4C465141CDCCCC9C0B2F5441B81E85DB4B465141F6285CCF092F544148E17A644B465141EC51B89E082F5441713D0AC74A46514166666626072F54413D0AD7C34946514100000020052F54413333337348465141E17A14DE022F54415C8FC2F54646514100000090002F544133333303464651418FC2F528FF2E54418FC2F51845465141D7A370ADFD2E5441B81E853B404651417B14AE47FB2E54413D0AD7333E4651417B14AE37F72E54413D0AD7733A4651417B14AEB7F42E54413D0AD7C335465141F6285C9FF32E5441B81E858B314651417B14AE87ED2E5441B81E850B344651417B14AE07E62E54413D0AD7C330465141F6285C0FE32E54413D0AD7D32A4651417B14AE17E52E5441B81E850B2A465141F6285C0FE32E5441B81E85EB2B4651417B14AE17E02E5441B81E858B274651417B14AE07DC2E54413D0AD703234651417B14AE27DF2E5441B81E856B1F4651417B14AE27DF2E5441B81E85FB1B4651417B14AE97DD2E5441B81E856B1F465141F6285C3FDB2E54410AD7A3E019465141A4703D9AD82E54418FC2F5881546514114AE4771DC2E5441F6285CAF12465141295C8F72DD2E54413D0AD7031246514114AE4771DC2E5441AE47E1CA1146514114AE4751DA2E5441B81E85FB0B4651418FC2F548DA2E54415C8FC2250C46514114AE4771DC2E54418FC2F51804465141666666F6DF2E544148E17A1401465141713D0A77E02E5441E17A145EF94551418FC2F578E12E544100000080F3455141B81E85CBDF2E5441A4703D2AF3455141B81E851BDC2E5441295C8F02F5455141A4703DEAD72E5441C3F5288CFB45514100000060D12E54410AD7A390FE4551413D0AD733D02E54415C8FC2B505465141AE47E1FACE2E54413D0AD7A300465141F6285C8FCC2E5441B81E85EBFE455141F6285C1FC92E5441B81E85CBF14551417B14AE97C42E5441B81E855BF34551417B14AE97BF2E54413D0AD753F6455141F6285C8FB82E54413D0AD763F5455141F6285C5FB62E54413D0AD7B3F0455141F6285CAFB62E5441B81E855BEE455141F6285C2FB92E54413D0AD793E34551417B14AEB7B32E5441B81E856BD94551417B14AEE7B52E54413D0AD773D1455141F6285CFFBB2E54410AD7A380D34551413D0AD7D3C02E544133333323CF455141000000E0C12E544185EB51A8CA4551417B14AE77C22E54413D0AD733C64551417B14AE67C22E544100000010BE455141CDCCCC0CC22E54419A9999C9BB455141B81E85CBC42E5441333333C3B945514114AE47D1C52E54419A999909B8455141E17A14DEC62E5441D7A370FDB6455141AE47E16AC82E5441295C8FA2B545514166666656C92E544100000010B6455141AE47E1FACB2E544185EB51C8B445514185EB5138CF2E54417B14AE07B14551413D0AD783CD2E54418FC2F578AE4551418FC2F518D12E544114AE4711BA4551417B14AE87D52E5441F6285C8FBB455141AE47E16AD72E5441EC51B89EB845514166666606D92E54411F85EB01BB45514114AE47C1DB2E54417B14AEE7BD455141295C8FE2DD2E544133333313BE45514148E17A04E02E54419A999919BF4551417B14AE77E12E54410AD7A360C045514152B81EB5E42E544185EB51B8C0455141F6285C6FE72E5441AE47E12AC2455141E17A141EE82E5441295C8F62C4455141CDCCCCDCE72E5441295C8F52C54551413D0AD743E72E54415C8FC2F5C34551417B14AE27E62E5441000000E0C3455141EC51B8AEE32E5441CDCCCC4CC445514133333393E22E54419A999999C545514148E17A64E12E54411F85EB91CC455141C3F5282CE32E544152B81ED5D0455141D7A3705DE42E54415C8FC265D74551413D0AD743E72E5441C3F5282CDC45514185EB51F8E82E5441C3F5281CDD4551415C8FC245EB2E5441F6285CCFDA4551418FC2F598EE2E5441AE47E10ADA4551411F85EB21F02E544152B81EA5DE455141A4703DBAF02E5441295C8F12DF4551417B14AE37F02E5441295C8FF2E04551415C8FC225ED2E544148E17AD4E6455141713D0A57EE2E5441F6285C6FEB455141EC51B88EF02E544152B81E75EC455141F6285C5FF32E5441A4703DEAF14551410AD7A370F62E5441C3F528FCF4455141B81E853BF82E5441AE47E19AF645514114AE4731FA2E544185EB51C8FA455141713D0A47FA2E544185EB51B8FB455141000000E0FA2E5441295C8F72FE455141713D0A47FA2E5441CDCCCC4CFF455141000000E0FA2E54411F85EBF101465141EC51B89EFA2E54418FC2F5380346514133333363FB2E54419A99991905465141B81E85EBFC2E5441E17A14BE07465141C3F528BCFF2E5441F6285CDF09465141C3F5289C012F544114AE47110B4651419A9999F9022F5441B81E85DB0C465141E17A147E072F544148E17A740D46514114AE47D10A2F5441A4703D4A11465141EC51B80E0E2F5441D7A370CD114651411F85EB810F2F5441333333F310465141333333C30F2F5441333333130F465141AE47E12A0F2F5441713D0AF70D46514148E17A340D2F5441295C8F620A46514152B81E05102F544114AE47210A4651410AD7A300132F544185EB519808465141E17A145E142F5441295C8F720946514114AE47A1182F544152B81E250746514148E17A041B2F54411F85EBD103465141C3F5284C1C2F5441000000C000465141666666261D2F544114AE4731FE455141666666261D2F54411F85EBD1F84551410AD7A3201C2F5441C3F528DCF64551411F85EB611C2F54411F85EB11F54551418FC2F5C81B2F5441A4703DDAF24551418FC2F5B81C2F5441CDCCCC8CF045514152B81EE51C2F54410AD7A3B0EB4551417B14AE571E2F54413D0AD753EA4551413D0AD763202F544152B81EC5E74551413D0AD753212F5441A4703D1AE4455141D7A3709D1B2F54413D0AD753DF4551415C8FC2551A2F5441295C8F12DF455141AE47E1FA1C2F5441CDCCCCDCE0455141AE47E1DA1E2F5441F6285CAFDC4551413D0AD7731F2F5441AE47E1FADA455141F6285CAF1E2F54411F85EB71D9455141A4703D2A1A2F5441713D0AD7D4455141295C8F12162F54415C8FC2B5D2455141713D0AF7142F54410AD7A320CF4551413D0AD773142F5441B81E85CBC7455141333333C30F2F5441CDCCCC1CC7455141333333F30C2F544152B81E25C1455141666666760D2F5441C3F528ACBE45514185EB5188052F5441AE47E18ABC45514185EB5198042F54415C8FC2D5BA45514166666666032F54413D0AD713B3455141713D0A37062F544185EB51B8B54551411F85EB611C2F5441CDCCCC7CB64551411F85EB41292F5441666666A6B2455141CDCCCC9C312F5441D7A3705DA2455141B81E852B342F5441B81E859B9A45514185EB51C8312F54416666664693455141295C8FF22D2F54418FC2F5288E455141CDCCCCAC252F5441F6285CBF8A4551413D0AD743222F54415C8FC2C58B455141B81E858B182F5441E17A14AE7C45514148E17A44172F54411F85EBF175455141A4703D2A1A2F5441000000206F455141D7A3708D1C2F5441E17A140E6C4551417B14AE871B2F5441C3F528CC6B455141CDCCCCEC162F54410AD7A3A06B455141295C8F52122F544148E17AB467455141A4703D5A172F5441EC51B8CE6445514100000070172F54418FC2F5C863455141CDCCCC2C132F5441A4703DFA644551411F85EBA10D2F5441CDCCCC9C634551417B14AEE70A2F5441000000506145514148E17A440C2F5441E17A141E604551419A999989142F544152B81E955E45514114AE47D1152F5441333333A3594551413D0AD783132F54413D0AD78350455141C3F5284C112F5441666666564C455141E17A149E102F5441B81E85BB474551411F85EB61112F54417B14AEF73045514148E17A440C2F544114AE4751354551411F85EBE1FE2E5441E17A14CE3F4551417B14AE47EF2E54417B14AE173A455141A4703DBAF02E5441E17A14CE344551411F85EBD1F42E5441AE47E1AA2E455141AE47E14A022F54415C8FC2252A455141AE47E12A042F544185EB51C828455141EC51B84E0A2F5441C3F5280C22455141295C8F32092F5441EC51B8BE1F4551413D0AD7A3062F544114AE47711D455141000000B0082F5441A4703D4A1A45514114AE4701082F54413D0AD7731645514114AE4731052F5441A4703D1A12455141C3F5288C022F5441B81E85DB0A4551415C8FC2C5082F54410AD7A36004455141CDCCCC3C072F5441A4703D8A00455141AE47E15A012F5441EC51B82E034551415C8FC2E5FB2E544114AE47E100455141CDCCCC4CFB2E544114AE47F1FF4451413D0AD7D3F82E5441C3F5289CF8445141B81E852BF92E5441C3F5289CF8445141CDCCCC5C052F54417B14AE27F34451415C8FC2C5082F544185EB51C8EB445141713D0A87132F5441C3F5288CF0445141AE47E1DA1D2F5441EC51B86EF144514114AE47811F2F5441713D0A87F54451411F85EBC1262F5441666666F6FF4451418FC2F5C8392F54411F85EB810045514148E17AB43A2F5441D7A370AD064551411F85EBE1392F5441000000700E455141F6285C4F3A2F5441A4703D1A124551417B14AEE73A2F5441A4703D1A12455141F6285C2F3C2F54413D0AD763144551418FC2F5983B2F54410AD7A3E0154551418FC2F5183B2F544185EB518818455141EC51B8BE3B2F54415C8FC205184551413D0AD7C33C2F5441E17A141E1745514185EB51983C2F544100000040154551410AD7A3E03C2F544114AE476113455141EC51B88E3D2F54415C8FC235134551418FC2F5F83E2F544133333383144551411F85EBA1412F54418FC2F5181645514100000050452F5441333333831745514133333333482F5441F6285CDF18455141000000204A2F544152B81E752045514114AE47B1502F5441C3F528CC2345514152B81EF5522F54417B14AEF729455141E17A141E562F54417B14AE473D4551417B14AE374E2F5441295C8F92434551411F85EB11542F54411F85EB214945514166666656532F5441EC51B89E51455141C3F5287C532F544133333353574551415C8FC275582F5441E17A142E5D455141AE47E19A582F5441666666D660455141713D0A375A2F54410AD7A340604551410AD7A3305F2F544114AE47215B45514114AE4711602F544185EB510857455141E17A148E622F5441AE47E17A5B45514114AE4721632F5441D7A370AD68455141CDCCCC5C662F544114AE47816B45514152B81ED5662F5441295C8F126F4551417B14AEF7662F54410AD7A390714551413D0AD7A3672F54418FC2F5C87345514133333353692F54419A99998975455141A4703DBA692F54415C8FC215774551418FC2F5A8692F5441333333B378455141CDCCCCFC682F544114AE47517A45514148E17A84682F544185EB51787C455141666666A6682F5441295C8FE27D455141F6285CFF692F544114AE47917F45514148E17A046C2F544114AE477180455141D7A3705D6D2F544166666696814551415C8FC2D56D2F54417B14AE67834551410AD7A3906D2F5441CDCCCC8C8445514148E17AE46C2F5441CDCCCC6C85455141A4703D7A6B2F5441333333C3854551418FC2F5C8682F5441A4703D4A8545514166666606662F54410AD7A3E08345514114AE4741622F54416666667682455141EC51B85E602F5441D7A3707D7E4551419A9999595E2F544185EB51F8784551419A9999995C2F54411F85EB6173455141333333835A2F544152B81E15704551411F85EB91592F5441C3F5283C6B4551410AD7A380592F5441C3F528BC6745514185EB51E8592F5441F6285C2F664551415C8FC2C5592F54419A99991964455141713D0AF7582F54411F85EB11614551410AD7A3C0572F5441A4703D2A5D455141B81E859B562F54413D0AD7335A455141295C8F22562F54415C8FC29558455141E17A14DE552F54419A99990957455141F6285C0F552F544148E17A84514551419A999949512F544148E17AC44F4551419A9999894F2F544114AE47C147455141AE47E17A492F5441F6285C2F444551415C8FC295462F54416666664643455141EC51B82E472F54413D0AD7C342455141D7A3709D462F5441000000804345514185EB5138462F5441713D0AD74245514152B81ED5442F54410AD7A38042455141E17A14AE422F5441B81E853B42455141A4703DBA402F54411F85EBB141455141666666A63F2F5441B81E857B404551419A9999F93E2F5441AE47E12A42455141AE47E14A3D2F54410AD7A3804245514152B81ED53D2F54411F85EB9142455141D7A3702D3F2F5441713D0AD74245514114AE4741402F54419A9999D94345514100000030402F54413D0AD7C348455141D7A3706D3D2F544133333373514551410AD7A3203A2F54419A999929564551410AD7A340392F544152B81EC5554551419A999909332F54419A9999E95445514114AE47C1302F5441EC51B88E534551411F85EB412D2F5441A4703D6A52455141D7A3701D2B2F5441F6285C0F51455141000000302A2F54418FC2F5D84E4551417B14AE67282F5441295C8FA24C4551415C8FC255262F54419A9999594B45514114AE47B1242F54419A9999594A45514185EB51E8222F54417B14AEC747455141AE47E1FA212F5441D7A370ED4245514148E17A44202F5441295C8F923F455141E17A140E1F2F5441333333933C45514152B81E451E2F5441CDCCCCDC3A455141E17A148E1D2F544185EB51B838455141EC51B88E1B2F5441D7A3705D364551415C8FC2C5192F5441713D0AA733455141CDCCCC7C182F544152B81E1532455141F6285C8F172F544114AE4771304551411F85EB21172F5441F6285C5F2C4551418FC2F558152F5441D7A370CD2B45514100000090142F54411F85EBF12B4551419A9999D9132F5441F6285CDF2D45514100000010152F5441713D0AA735455141AE47E16A182F5441AE47E14A384551417B14AE571A2F5441CDCCCC5C3B4551417B14AED71C2F5441333333933C455141C3F5287C1D2F54416666663643455141000000A01F2F544114AE47114845514148E17A44212F544152B81E354A455141AE47E17A212F5441E17A14FE4A455141D7A3700D222F5441E17A14FE4A455141D7A3708D222F5441295C8F224C45514185EB5168242F5441000000104D4551415C8FC2D5252F54418FC2F5584F45514152B81ED5272F5441EC51B80E53455141713D0AE72A2F5441C3F528FC53455141000000302C2F544152B81E4554455141666666662D2F5441E17A140E554551415C8FC2652F2F544152B81E4556455141333333D3312F5441713D0AD756455141F6285CBF382F5441E17A148E57455141F6285C3F392F5441666666D6594551413D0AD7E3392F5441C3F5280C5F4551415C8FC2F53B2F5441E17A149E604551417B14AE873C2F5441713D0A67634551417B14AE873C2F5441295C8F32644551415C8FC2253C2F5441B81E85CB63455141A4703DDA3A2F5441CDCCCC1C6B455141A4703D3A392F544148E17AF46C45514114AE47D1382F544148E17A747245514114AE4741452F5441D7A3707D67455141666666B6462F54419A9999096745514133333343452F5441CDCCCC9C6645514185EB5118452F5441295C8F4263455141D7A3703D432F544152B81ED561455141B81E85AB422F5441C3F5280C614551418FC2F598422F544100000080604551418FC2F508412F5441AE47E1FA5E455141713D0A07412F54417B14AEF75E455141CDCCCCCC412F5441333333735E455141C3F528CC412F5441333333F35B455141AE47E1CA412F5441AE47E1EA5A4551415C8FC2954A2F54413D0AD7F350455141666666B6492F54419A9999294C455141C3F528AC472F54410AD7A37050455141EC51B81E402F544185EB5188594551418FC2F5C8412F5441295C8FD259455141666666C63C2F544185EB51E85D45514114AE47D13C2F54411F85EBB15945514114AE47D13A2F5441295C8F3257455141CDCCCC2C3A2F54417B14AED75245514114AE47D13A2F5441000000904F455141000000E03B2F5441C3F5281C4B455141CDCCCCAC3D2F54411F85EB3146455141295C8F32402F54417B14AE5744455141713D0A47412F544152B81E8543455141D7A3709D422F54418FC2F59843455141666666C6432F54417B14AE574445514185EB5158452F54417B14AEB748455141D7A370BD482F54415C8FC2D54C455141D7A3703D4C2F5441333333B34F455141D7A370FD4D2F5441CDCCCCFC514551419A999969502F5441333333D355455141295C8FA2522F5441295C8F4259455141CDCCCCEC542F5441295C8FC25C4551410AD7A320552F5441666666B65E455141CDCCCCCC552F54416666665661455141F6285CCF562F5441F6285CAF624551417B14AE47572F5441713D0AD764455141CDCCCC8C572F544148E17A7466455141E17A147E582F5441EC51B8DE67455141333333C3582F544185EB51086B455141A4703D4A582F54418FC2F5187045514100000060582F54417B14AEB773455141F6285C6F592F544114AE477179455141333333635B2F5441295C8FC27E4551410AD7A3005D2F544152B81E658245514185EB51485E2F5441B81E857B844551419A999919602F5441E17A147E8545514152B81E75622F54411F85EB9186455141295C8FB2662F54411F85EB618745514114AE4761692F5441713D0A9788455141F6285C7F6D2F5441713D0A078745514100000030712F54411F85EB5187455141713D0A17732F54410AD7A30086455141295C8F42742F54419A99991984455141D7A3708D742F54413D0AD7738145514114AE47F1712F5441295C8F6281455141D7A3701D6F2F5441000000807F455141713D0AE76D2F5441A4703D4A7E455141B81E856B6C2F544185EB51587D455141B81E858B6B2F5441666666567C455141A4703D9A6A2F5441D7A370FD7A455141F6285CFF692F544114AE477179455141333333336A2F544148E17A0477455141F6285CDF6A2F54418FC2F5A87445514148E17A246B2F544148E17A8473455141713D0A676A2F5441B81E854B71455141F6285C1F692F54413D0AD7236F4551411F85EB61682F54417B14AED76B4551418FC2F5E8672F5441C3F5289C684551411F85EB81672F5441713D0AF763455141CDCCCC5C662F54417B14AE975C45514100000050642F5441E17A142E5D455141713D0A176D2F544114AE47B15A455141EC51B8DE6F2F54410AD7A3D04D455141E17A14FE6E2F544185EB51984A45514114AE47116C2F54416666668641455141F6285C4F702F5441000000103A4551411F85EB616D2F5441F6285C2F394551415C8FC2E5642F54411F85EB413645514100000050642F5441000000103445514152B81E756A2F5441295C8FB236455141333333B36E2F54415C8FC2A53445514148E17A74702F5441F6285CBF26455141AE47E10A712F544185EB51681E455141000000306B2F5441713D0A171D45514148E17A94632F5441333333B31E455141B81E850B592F5441EC51B81E104551410AD7A3205A2F5441F6285CBF1145514152B81E555E2F5441B81E858B12455141D7A370FD5F2F544152B81EA51A455141AE47E11A712F5441EC51B83E19455141F6285C6F722F5441000000E00F4551410AD7A3107D2F54418FC2F56803455141D7A3705D8B2F544152B81EA5DF4451417B14AE37B42F5441326097D9DE4451410960EDA6BD2F54410B5980D2DE4451418D1010FBBD2F5441CDCCCCCCDE445141EC51B83EBE2F5441C43D0467EA4451412D3010C6CD2F54412E11F7ABEC44514175169BCFD02F54410500000014AE47F12E455141713D0A57412F5441B81E85CB2E455141A4703D6A3E2F5441EC51B84E32455141F6285C8F3E2F54413D0AD70332455141CDCCCC7C412F544114AE47F12E455141713D0A57412F5441050000008FC2F5C84C4551415C8FC2E53D2F54419A9999294F45514185EB51983C2F54410000002050455141295C8F023E2F5441C3F528DC4D455141EC51B85E3F2F54418FC2F5C84C4551415C8FC2E53D2F54411800000052B81E75C44551411F85EBF1D62E5441A4703D2AC44551419A9999A9D12E544114AE47F1C5455141A4703D5ACF2E544148E17A74C3455141A4703DAAC92E54419A9999C9C8455141D7A3708DCA2E5441EC51B8CECB455141333333E3C72E54417B14AE07D245514166666676CE2E5441E17A141ED645514185EB5138CD2E5441666666A6D6455141EC51B89ECB2E5441EC51B87ED9455141F6285CAFCC2E54419A9999D9D94551411F85EBD1CE2E54410AD7A3A0DB4551418FC2F548CE2E544185EB5118DB455141EC51B84ED12E54419A9999D9D94551413D0AD753D42E5441D7A3706DD8455141295C8F92D52E54413D0AD7D3D6455141F6285CAFD42E54418FC2F578D6455141000000C0D52E54418FC2F5C8D045514133333343D32E54417B14AEB7CF455141295C8F92D52E54415C8FC295CD455141AE47E11AD62E5441EC51B8CECB455141A4703D0AD52E5441CDCCCCACC945514185EB5148D62E54413D0AD703C84551411F85EB61D92E544152B81E75C44551411F85EBF1D62E5441240000008FC2F54806465141CDCCCC9CEB2E5441D7A3703D0046514100000080EC2E5441E17A143EF845514114AE4791ED2E54413D0AD743F345514148E17AC4E82E544100000000EF4551411F85EB41E32E544152B81EF5E845514100000020E12E5441295C8F72E34551417B14AE97E02E544185EB5178DE4551417B14AE97E02E54415C8FC2F5D84551410AD7A3D0DE2E5441333333C3D5455141E17A144ED92E544185EB51C8E0455141D7A3703DD82E54413D0AD783E44551413D0AD753D42E54419A9999E9EA455141F6285CAFD42E5441295C8FD2EE455141B81E852BDF2E5441B81E85BBF2455141A4703D6AE02E54419A999949F6455141D7A3709DE32E54418FC2F5E8F24551411F85EB91E52E5441333333E3F745514148E17AC4E82E5441D7A370DDFC455141EC51B80EE82E5441B81E851BFE4551411F85EBF1E82E544148E17A040A465141D7A3704DE92E5441F6285C0F10465141D7A3709DE32E54413D0AD7031246514133333353E42E54418FC2F50815465141D7A3704DE12E5441E17A14FE1646514100000020E12E54419A9999191E465141C3F5288CE22E5441D7A370AD2446514114AE4731E22E5441E17A145E22465141F6285CBFE52E544152B81E751E46514152B81E75E62E54418FC2F5081D46514114AE47E1E72E54419A99996918465141EC51B80EE82E544185EB51F813465141F6285C6FEB2E5441F6285C0F1046514100000080EC2E5441333333A30E4651417B14AEF7EB2E54415C8FC2C508465141D7A370ADEC2E54418FC2F54806465141CDCCCC9CEB2E544105000000A4703D1A54455141E17A145E3D2F544148E17A34564551419A9999993C2F5441295C8FB2564551410AD7A3003E2F54413D0AD7A354455141B81E85CB3E2F5441A4703D1A54455141E17A145E3D2F54410500000048E17AC47E455141EC51B89E432F5441E17A141E7F45514133333353402F54417B14AE1781455141D7A3707D402F544152B81EC580455141AE47E15A432F544148E17AC47E455141EC51B89E432F5441
+</a>
+
+<b>
+010600000001000000010300000006000000FD010000B8D1780FAF445141EF2DDA8F382F5441FF3093BEAE4451416494F2A7372F54419A9999F9B744514148E17A94372F54419A999979B9445141C3F5283C372F54410AD7A3E0B94451417B14AE27362F5441333333B3B24451415C8FC2D5302F54413D0AD703AA4451415C8FC2F52A2F54419A999969A944514148E17AB4292F5441A4703DAAA944514100000000282F544148E17A94AD445141E17A147E262F5441F6285CEFAE445141D7A370BD252F544152B81EB5B44451413D0AD793222F5441CDCCCC2CB94451418FC2F538212F5441C3F528CCBE44514152B81EC5202F54411F85EB91C44451418FC2F5F8202F544185EB5148C944514114AE4771212F54415C8FC205CE44514166666686222F5441AE47E12AD2445141CDCCCCEC232F5441F6285C2FD4445141C3F5280C252F5441A4703DFAD5445141F6285C9F272F544148E17A44D744514148E17A14292F544166666646D8445141295C8FB2292F5441AE47E15ADB445141EC51B85E2A2F5441D7A3700DDF445141D7A3707D2B2F544185EB5108E3445141333333D32B2F5441AE47E11AE544514185EB51482D2F5441D7A3706DEA44514185EB51F82F2F5441713D0A57ED445141333333B3302F544100000010F4445141713D0A57342F544133333333F74451419A9999F9362F5441333333D3F8445141A4703D1A392F5441B81E852BFA4451415C8FC2F53B2F54411F85EB91FB4451413D0AD7933C2F5441E17A14EEFE445141B81E854B3C2F54411F85EB9101455141EC51B87E3C2F54411F85EB810045514148E17AB43A2F5441666666F6FF4451418FC2F5C8392F5441713D0A87F54451411F85EBC1262F5441CDCCCCCCEA445141666666A6262F54413D0AD7F3E7445141A4703DAA202F544166666656DE4451417B14AED7212F5441E17A140ED3445141E17A14FE192F54419A9999A9D2445141333333330F2F5441F6285C2FB2445141D7A3706D1D2F544166666656AF445141EC51B85E202F5441295C8FD2AB4451413D0AD7A3252F5441EC51B80EA84451418FC2F558272F544166666626914451415C8FC2451B2F54411F85EBA18B445141D7A370ED1C2F54415C8FC2C5814451411F85EBE1272F5441295C8F5280445141AE47E1CA302F54419A99999977445141AE47E15A2A2F544114AE47417544514152B81E75232F5441E17A14CE6D44514152B81EC5262F5441E17A14CE65445141CDCCCC6C242F544114AE47F165445141B81E850B232F5441EC51B87E72445141D7A370CD1D2F54419A999999774451410AD7A3F0152F5441666666469544514148E17A44032F544185EB5198B34451417B14AE77F62E544148E17A64B544514185EB5198FB2E54418FC2F538BE445141713D0A37F62E5441EC51B8CEBD445141666666D6F02E544148E17A64AD445141E17A147EEA2E5441AE47E1FAA0445141EC51B8DEDF2E5441333333039C445141EC51B8DEDF2E5441000000E09F445141713D0A37E62E54413D0AD7B3944451418FC2F548EC2E544185EB512880445141C3F528FCF32E5441F6285C4F6C445141AE47E19AFD2E5441EC51B8FE6A445141C3F528FCFB2E5441A4703D9A6B44514185EB51A8F92E5441CDCCCCDC6A445141F6285CBFF72E54416666666666445141EC51B85EFB2E54411F85EB9165445141666666F6FB2E5441A4703DAA68445141C3F528ECFE2E544152B81E0565445141E17A148E012F5441666666F6624451417B14AEA7FD2E54413D0AD7F35C44514152B81E95012F54413D0AD79359445141AE47E18A082F544114AE47C14F445141E17A149E0E2F5441A4703D7A51445141A4703D8A102F5441C3F528CC5644514152B81E55112F544114AE4781654451413D0AD763162F5441000000B06744514114AE47C11A2F54419A99996964445141713D0A571F2F544185EB51B859445141B81E85CB242F5441F6285CDF3E445141A4703DEA422F544114AE47812F44514152B81E05632F5441713D0AD715445141B81E85DB6A2F5441D7A3701D1944514185EB51A86F2F5441F6285C9F1544514152B81E85832F544185EB51D821445141AE47E13A872F544148E17AF427445141D7A370DD822F544114AE47914944514166666656812F544148E17AC45144514133333353862F5441A4703D4A53445141333333D3892F544148E17A8453445141F6285CBF902F5441CDCCCC8C57445141713D0AC7942F544152B81E155844514152B81ED5962F54418FC2F578574451417B14AE57992F544185EB51A85B445141CDCCCCACA42F5441D7A3709D58445141295C8FF2A72F54419A999989584451417B14AE77A92F54417B14AE575C44514166666696AC2F5441CDCCCC1C5C44514114AE4761B12F54419A999989584451410AD7A3E0B42F544185EB5128584451418FC2F528B72F5441713D0A175E445141CDCCCC1CC22F5441A4703DDA5E445141295C8FF2C92F54417B14AE575C445141295C8F12E12F54419A9999C95644514185EB5128E72F544152B81E454E44514152B81EE5E92F544166666616434451411F85EB81E32F5441000000503944514166666616DB2F5441C3F5289C2E4451415C8FC265D42F54413D0AD763214451413D0AD703D12F544148E17A1410445141B81E855BC82F5441AE47E1DAFB4351413D0AD713C62F544166666636F743514185EB5198C82F54410AD7A3F0F143514133333353CA2F5441CDCCCC9CD5435141AE47E14ACC2F5441C3F5284CCF43514114AE4721D72F544114AE4751CF43514152B81E25E12F544152B81E35D1435141EC51B82EE62F5441E17A147EDA43514114AE4711E12F5441E17A140EDF43514114AE47F1DE2F54418FC2F558DE435141B81E85CBDB2F5441295C8F22DF435141D7A3709DDA2F54419A999939E3435141EC51B81ED92F544148E17AE4E8435141D7A3700DDD2F544152B81EE5EF4351418FC2F5F8D52F5441E17A14EEF4435141EC51B8DED42F5441D7A370AD03445141666666A6D42F5441A4703DDA0C44514152B81E35D62F544114AE47F121445141C3F5283CDE2F54413D0AD7332A445141A4703D6ADF2F5441AE47E15A344451419A9999A9E32F544185EB51E83B4451413D0AD703E92F544185EB5188464451411F85EB61F92F544114AE47914B445141E17A146E023054418FC2F55856445141A4703D0A093054413D0AD7C357445141295C8F520B3054415C8FC2255B4451419A9999B908305441AE47E1FA5D4451413D0AD79305305441F6285C2F604451415C8FC2F5013054411F85EBE16344514100000030F42F5441713D0A97644451411F85EB71EE2F5441D7A370AD6444514100000020EA2F544185EB5188644451417B14AE37E22F54411F85EBD16444514114AE47A1DF2F54413333335365445141F6285C2FDD2F5441333333A36944514148E17AE4D02F5441EC51B80E6C445141295C8FA2CB2F54417B14AEC769445141A4703DCACB2F544114AE4731674451418FC2F5F8C62F5441295C8F2269445141E17A145EC12F5441A4703DAA624451415C8FC295B62F54413D0AD78361445141D7A3703DAD2F5441666666766444514114AE47B1A52F5441E17A14EE754451415C8FC2C59B2F5441D7A3709D7C445141295C8F62A22F5441666666E687445141AE47E1DA9D2F5441B81E857B894451411F85EB71A02F544148E17A048F4451418FC2F5589C2F5441B81E85AB904451417B14AE679A2F54411F85EBD1914451411F85EB51982F5441713D0A67934451411F85EB71952F5441A4703DFA93445141EC51B86E932F5441B81E858B93445141295C8FA2912F54410AD7A3608E4451417B14AEE78A2F5441666666268E445141333333C3892F54417B14AE878E4451419A999929882F5441A4703DFA8F4451413D0AD7F3852F54411F85EB9192445141C3F5287C7E2F54411F85EB9192445141CDCCCC1C7D2F54415C8FC2F591445141A4703DAA7B2F544152B81E3590445141AE47E14A7A2F544185EB51D88D445141B81E859B792F54417B14AE678B44514148E17A74792F54411F85EB518444514148E17A74792F5441E17A145E7F44514148E17A24782F54417B14AE977D4451419A9999A9762F5441CDCCCC3C7D445141D7A3704D752F5441B81E855B7D445141F6285C0F742F5441000000207E445141B81E853B732F5441A4703DAA7F445141B81E851B722F5441C3F528CC82445141D7A370DD702F54413333337383445141B81E85EB6F2F54413D0AD763834451417B14AE176F2F54410AD7A380824451415C8FC2156E2F5441333333037F4451413D0AD7236D2F544114AE47117E445141E17A146E6C2F5441A4703D6A7D445141000000306B2F5441295C8FF27D445141EC51B83E602F5441333333537F44514148E17AA4572F54413D0AD7B37E445141B81E852B572F5441B81E859B7D44514133333333582F54413D0AD7937C44514114AE47C15A2F5441CDCCCCAC7B445141EC51B86E5A2F5441000000007A4451411F85EBA15D2F544148E17A447444514152B81E955A2F54419A99999975445141713D0AF7572F5441AE47E16A744451417B14AE57572F544100000010754451411F85EBF1552F5441B81E858B76445141CDCCCC9C562F5441A4703DEA79445141E17A141E562F54417B14AEC77D4451419A999939562F54419A9999C97E4451415C8FC2B5552F544152B81E957F445141C3F5282C552F544114AE47318144514185EB51D8512F54419A999979854451417B14AE17482F5441B81E859B8744514148E17A14442F5441CDCCCCBC894451411F85EBB1402F544152B81E358B44514152B81E753E2F544152B81E3580445141000000D03E2F5441E17A14AE77445141E17A140E3C2F54410AD7A3C07A44514185EB5188352F54415C8FC2E5804451417B14AEC7342F54418FC2F5A884445141AE47E14A382F54410AD7A3408E445141A4703D7A372F54411F85EB418F445141D7A3705D3B2F544152B81E3593445141B81E850B392F5441713D0AC795445141AE47E12A382F54419A99999998445141AE47E1FA372F5441CDCCCC7C9C445141AE47E13A382F544100000040A0445141AE47E13A382F544148E17A34A6445141A4703DBA372F54415C8FC295AE4451417B14AEA7372F5441E50971E5AE44514100AEAB6D382F5441000000E0AA445141A4703D7A382F5441713D0AC79F4451413D0AD763392F5441C3F528CCA24451419A9999493B2F54415C8FC245A44451419A9999B93A2F5441EC51B8FEA7445141F6285C7F3B2F5441713D0A27A74451411F85EB913F2F5441713D0A07A6445141AE47E12A422F54419A999999A344514133333333442F54411F85EB61A14451413D0AD743472F54417B14AEE79B445141A4703D5A432F54417B14AE679D445141AE47E16A402F54415C8FC2B598445141CDCCCC8C3A2F54415C8FC2359744514114AE4781392F5441EC51B80E954451411F85EB91392F5441666666C692445141CDCCCC8C3A2F544114AE47418F4451415C8FC2E53C2F54413D0AD7838C445141A4703DDA3E2F54410AD7A3B08A44514152B81E65412F54417B14AE57884451419A9999C9442F5441295C8F62864451411F85EB91482F5441C3F5283C81445141D7A3702D542F544148E17A8480445141295C8F32562F5441295C8FD27E44514100000070602F5441CDCCCC4C7E4451417B14AE376A2F54413D0AD7F37E44514152B81E756B2F5441F6285C0F80445141EC51B85E6C2F544152B81E1582445141295C8FB26C2F54417B14AED783445141AE47E17A6D2F5441295C8FE2844451417B14AEB76E2F544114AE47C1844451415C8FC205702F544185EB51E88344514133333343712F5441C3F528BC7F4451417B14AE37732F5441000000A07E44514114AE4721742F5441E17A146E7E445141C3F5281C752F5441000000A07E44514166666616762F544100000020804451411F85EB31772F5441E17A146E844451411F85EBB1782F54413D0AD7038B44514100000080782F5441B81E85BB8E4451411F85EBB1782F5441713D0A4791445141E17A14CE792F5441666666C692445141F6285C6F7B2F5441000000A093445141F6285CEF7C2F5441000000A0934451413D0AD7E37E2F5441295C8FE2904451411F85EB31862F54417B14AED78F4451419A999969882F5441295C8F628F44514185EB51D8892F54417B14AED78F4451415C8FC2158B2F544185EB516894445141EC51B86E902F544100000020954451410AD7A320922F544114AE4741954451410AD7A3A0932F544185EB5168944451417B14AEC7952F544185EB51E892445141666666A6982F544185EB51A893445141EC51B8DE982F54417B14AE7793445141295C8F329A2F544114AE474192445141CDCCCCCC9A2F544152B81E2591445141713D0AB79B2F5441D7A370ED91445141000000909C2F54416666669698445141EC51B8EE9A2F544133333393974451411F85EB91932F5441E17A140E984451417B14AEB7922F54417B14AEA799445141EC51B82E922F5441B81E854B9E445141295C8FD2922F5441F6285C1FA1445141E17A14BE942F544148E17A34A34451419A999909972F544152B81EA5A444514148E17AB4992F54413D0AD763A54451419A9999999D2F54417B14AE67A6445141295C8FF29F2F5441A4703DFAA54451418FC2F5F8A12F54411F85EB41A7445141E17A140EA42F5441F6285C7FA1445141EC51B8AEA72F54417B14AE37A0445141B81E85EBA52F5441000000909A445141D7A370CDA82F5441295C8F829E44514185EB51A8B12F544185EB5138AF44514148E17AE4B32F5441EC51B86EAF445141AE47E1CAB82F5441EC51B80EA6445141666666C6BB2F54410AD7A360A6445141CDCCCC7CC22F5441A4703D6AB24451419A999969C92F54411F85EB31B7445141295C8FA2CF2F54413D0AD7D3C14451418FC2F588DC2F544185EB5118BF445141B81E852BE12F5441B81E85ABB14451419A999909EC2F544114AE47C1A2445141CDCCCC9CEB2F54410AD7A3E0894451419A999939E22F54418FC2F5F88F445141CDCCCC5CF32F5441E17A14FE97445141666666F6F22F54418FC2F5B89B445141713D0A57FC2F5441A4703D8A934451415C8FC265FD2F5441A4703D9A94445141333333630030544152B81E95A14451418FC2F5080630544114AE4781B544514114AE47C104305441E17A14BEB744514148E17A8402305441EC51B81EB4445141000000F0FD2F5441C3F5286CB74451413D0AD7C3FC2F5441B81E85DBBC445141AE47E1BA02305441AE47E10AC8445141C3F528AC06305441B81E850BD14451417B14AEC708305441D7A3703DD444514148E17A240E305441A4703DFAD6445141CDCCCCCC0D30544133333393D84451410AD7A3600A3054418FC2F5C8E4445141E17A147E0A305441E17A14DEE7445141295C8F520830544114AE4791F14451418FC2F5080A305441713D0A27FB44514152B81E45063054419A99998905455141CDCCCCBCFE2F5441EC51B82E0D455141295C8F2201305441B81E852B15455141295C8FA2F62F5441F6285CCF1645514166666686F62F5441666666661745514100000060EA2F544148E17A14094551413D0AD7C3E22F544114AE4701FC445141295C8F92DC2F544114AE4741EE445141E17A14EED22F5441CDCCCCCCDE445141EC51B83EBE2F544152B81EA5DF4451417B14AE37B42F54418FC2F56803455141D7A3705D8B2F5441000000E00F4551410AD7A3107D2F5441EC51B83E19455141F6285C6F722F544152B81EA51A455141AE47E11A712F5441B81E858B12455141D7A370FD5F2F5441F6285CBF1145514152B81E555E2F5441EC51B81E104551410AD7A3205A2F5441E17A146E09455141AE47E13A5B2F5441C3F5280C02455141D7A3709D502F5441CDCCCC0CED445141B81E853B492F54417B14AE47ED4451410AD7A3803E2F5441A4703DFAF6445141C3F5284C382F5441333333B3F54451413D0AD7C3362F54411F85EB71F34451415C8FC225352F5441D7A3709DEF44514148E17AE4322F5441295C8F62ED4451418FC2F5E8312F54417B14AED7EA44514133333353312F54419A999989E6445141E17A145E2F2F5441C3F5287CE3445141666666662D2F54415C8FC255E24451413D0AD7E32C2F54413D0AD733DF4451410AD7A3A02C2F544100000010D844514152B81EC52A2F5441A4703DCAD644514114AE47612A2F54419A999939D5445141A4703D3A282F54413D0AD7F3D344514152B81E45262F5441CDCCCCCCD144514100000000252F54418FC2F528CF44514152B81E05242F54419A999959CA4451415C8FC295222F54413D0AD7E3C44451417B14AEF7212F5441A4703DBABE445141E17A14DE212F54417B14AE77B844514148E17A74222F544185EB5188B5445141CDCCCC3C232F544100000080B244514148E17AB4242F5441333333D3AD44514114AE47B1272F54417B14AE97AA445141EC51B84E292F54415C8FC215AB4451410AD7A3802A2F5441713D0AE7B94451419A999979342F5441AE47E12ABB4451410AD7A3E0352F544148E17A84BB445141CDCCCC6C372F544114AE4741BA445141A4703D7A382F54415F9104D7AF4451414EE51085382F5441AE47E10AB2445141EC51B89E3B2F54418FC2F5A8B24451413D0AD7333C2F5441666666E6B3445141E17A141E3D2F5441E17A141EB44451419A9999093E2F54415C8FC2C5B3445141E17A14FE3E2F5441F6285C0FB2445141F6285C4F402F5441333333B3B1445141EC51B8FE402F54419A9999D9B144514133333393412F5441E17A147EB2445141F6285CEF412F5441C3F5283CB4445141C3F5286C422F54419A999949B544514100000000442F5441A4703D2AB6445141713D0A97462F5441333333D3B64451417B14AEE7472F544152B81EE5B94451417B14AEF7492F544100000030BB445141D7A3705D4B2F5441B81E851BBC4451415C8FC2E54C2F54419A9999E9C24451418FC2F598522F5441C3F5289CC54451410AD7A340542F5441295C8F82C744514166666656562F54419A999969C9445141666666C65C2F5441666666F6C94451410AD7A3F05D2F54410AD7A320CB4451418FC2F5685F2F54410AD7A3F0CC445141F6285C4F602F5441E17A14CECF44514185EB5138612F54411F85EB91D4445141AE47E14A622F5441333333F3DD445141295C8F02642F544133333313E1445141C3F5283C652F544152B81EF5E3445141666666A6692F5441666666A6E1445141713D0A876B2F5441E17A14DEDE445141A4703D8A722F54417B14AEF7DC445141D7A3700D752F544166666636DD445141295C8F42772F5441A4703D8ADC445141333333437A2F544185EB51E8DC4451419A9999497C2F54411F85EB31DE44514148E17A447D2F5441D7A3701DDF445141C3F528EC7E2F54413D0AD7F3E04451419A9999797F2F5441C3F528CCE5445141B81E853B822F5441D7A370ADE8445141F6285CAF842F5441AE47E1AAEF445141CDCCCC2C852F544166666676F04451417B14AE47862F5441713D0A57F0445141F6285CDF872F5441D7A3701DEF44514148E17A148A2F54418FC2F5D8EC445141A4703D2A8C2F5441CDCCCC0CEC445141295C8FB28D2F544166666626EA445141713D0AF78F2F5441E17A149EE84451413D0AD7D3932F5441295C8FA2E7445141F6285CBF942F5441AE47E1FAE5445141CDCCCC3C952F54411F85EBA1E44451417B14AE57962F5441295C8F62E4445141295C8F52972F544185EB5148E3445141B81E85CB982F5441000000D0E14451418FC2F548992F54418FC2F5F8DF44514152B81E159A2F5441A4703D3AD944514100000070A12F5441000000B0D144514152B81E15AA2F544114AE4711CC445141CDCCCC7CB12F5441333333F3C744514148E17AD4B82F544152B81E55C74451410AD7A3D0BB2F5441713D0AD7C64451413D0AD713BC2F5441713D0AE7C5445141C3F528DCBB2F5441B81E859BC54451415C8FC2C5BA2F544185EB51A8C644514152B81EF5BA2F544166666656C7445141C3F5286CB82F5441C3F5287CCB445141EC51B82EB12F5441EC51B86ED0445141000000A0AA2F544152B81E95D544514166666676A42F5441E17A14FEDC4451415C8FC2159C2F5441666666F6DF445141CDCCCC6C992F5441EC51B82EE1445141A4703DDA982F5441B81E85ABE2445141F6285C0F982F5441D7A3704DE34451411F85EB81972F5441713D0AC7E3445141B81E85AB952F544100000080E8445141D7A3701D932F5441D7A3706DE9445141666666B68F2F54418FC2F548EB445141B81E85BB8D2F54415C8FC295EC44514114AE47918B2F5441F6285CEFEE44514166666676892F5441D7A3708DEF445141A4703D1A882F5441CDCCCCCCEF445141E17A14AE862F54417B14AEE7EE445141666666A6852F544100000070E844514114AE4751852F54411F85EBB1E5445141F6285C2F832F5441B81E85ABE344514152B81E65812F54418FC2F5F8DE4451418FC2F5887F2F54415C8FC205DD445141A4703DEA7C2F54411F85EB51DC445141B81E856B7C2F5441713D0AE7DB445141B81E856B7A2F544152B81EA5DC445141295C8F12772F54417B14AE67DC4451419A999999742F54419A999969DE445141C3F5283C722F5441D7A370BDE0445141000000606C2F544152B81EA5E0445141713D0AD7662F54417B14AE87DF445141EC51B81E652F5441713D0AB7DD44514100000090642F544185EB5158DB44514148E17A24642F54413D0AD763D5445141F6285CEF622F5441EC51B88ECF445141C3F528BC612F5441333333F3CB4451413D0AD783602F5441A4703D9ACA4451411F85EBA15F2F544148E17A34C944514114AE47D15D2F5441295C8F52C84451415C8FC2955B2F5441C3F5286CC7445141713D0A17582F5441713D0AA7C64451417B14AE27562F5441C3F5287CC5445141B81E85FB542F54419A9999F9C2445141EC51B84E532F54417B14AEE7BB445141666666964D2F5441E17A148EBA445141666666964B2F5441D7A3703DB9445141A4703D3A4A2F5441333333A3B5445141B81E85CB472F5441D7A370EDB44451411F85EB21442F5441AE47E1EAB34451419A9999B9422F5441A4703D9AB24451413D0AD753422F5441A4703DCAB1445141A4703DEA412F5441D7A3704DB144514114AE4751412F54418FC2F548B1445141E17A14DE402F54411F85EB01B24451411F85EBB13F2F5441EC51B82EB3445141295C8FE23E2F5441C3F5287CB3445141F6285C8F3E2F5441EC51B8AEB3445141D7A370ED3D2F5441E17A146EB3445141E17A143E3D2F54415C8FC2C5B14451418FC2F5083C2F544180C60F87AF445141F9522D49392F5441B8D1780FAF445141EF2DDA8F382F54410700000014AE479180445141AE47E14A9F2F54411F85EB217E445141333333F39E2F5441000000007F445141D7A370BD9A2F5441EC51B88E80445141000000109B2F5441B81E851B8044514185EB51589D2F5441AE47E1DA80445141F6285C7F9D2F544114AE479180445141AE47E14A9F2F544108000000EC51B8CEA94451415C8FC225F42E54411F85EBF1A1445141666666D6F82E544148E17A649944514148E17AC4FA2E5441AE47E1AA8D4451418FC2F548F82E54417B14AE878D4451413D0AD713F22E5441295C8FA2A2445141295C8FB2EC2E544100000030A744514133333363ED2E5441EC51B8CEA94451415C8FC225F42E544112000000F6285CCFA94451410AD7A3E09A2F5441EC51B8FEA7445141F6285C3F972F544166666686AF4451411F85EB41932F5441666666C6BA44514114AE4771912F5441A4703D1AC244514114AE4701892F5441000000F0C4445141F6285CBF802F544166666666C1445141295C8F927D2F54418FC2F5D8C3445141C3F528AC782F54415C8FC275D044514114AE4781712F544148E17AE4D14451411F85EBF1732F5441713D0A77CD4451410AD7A350762F544166666676CE445141C3F5281C812F5441AE47E17AC64451410AD7A3008A2F544152B81E95C044514148E17A448E2F5441B81E850BBD4451415C8FC2B5932F54418FC2F5C8B54451411F85EBE1972F54417B14AEF7B0445141E17A14FE952F5441F6285CCFA94451410AD7A3E09A2F544105000000713D0A579A445141CDCCCC3C812F5441713D0AD798445141713D0A277F2F5441A4703D1A9C445141CDCCCCBC7C2F544185EB51789D4451413D0AD7E37E2F5441713D0A579A445141CDCCCC3C812F54410B0000008FC2F5E8F14451411F85EB21F02F544148E17A84EB4451413D0AD703EC2F544114AE47B1DC4451415C8FC205DE2F5441CDCCCC0CD94451411F85EB81D42F5441EC51B85EDD44514185EB5108D32F5441E17A14FEDF44514133333313DD2F5441E17A143EE5445141D7A370EDDF2F5441D7A3702DEB445141295C8FC2DD2F5441666666F6F3445141713D0A77E32F5441B81E85CBF144514166666666E92F54418FC2F5E8F14451411F85EB21F02F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985290 - 159967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000713D0AC7DF1D5141A4703D8A1C3C5441CDCCCC9CE01D514152B81E251D3C5441E17A14CEE21D5141B81E85BB1E3C5441AE47E1DAE41D51415C8FC2D51F3C54415C8FC295E81D5141D7A370AD213C544114AE47C1EB1D5141B81E85BB223C5441E17A14DEED1D51411F85EB81223C544166666626EF1D514114AE4721223C5441EC51B80EF01D514133333373213C5441D7A3700DF11D51410AD7A3F01E3C54413D0AD7F3F01D51415C8FC2551B3C5441F6285CBFF01D514185EB5158153C5441713D0A27E81D5141CDCCCC8C0E3C544100000010DE1D5141CDCCCCCC063C5441A4703DEADD1D5141AE47E1FA093C544114AE4781DD1D514148E17AD4123C5441E17A14FEDD1D514148E17A74153C54419A9999C9D01D5141F6285C2F0C3C544133333303C61D5141F6285C9F043C5441F6285C6FC51D5141295C8F62043C544185EB51A8C61D51418FC2F518013C54418FC2F538C91D51417B14AE37FB3B544166666616CA1D5141E17A145EF83B54418FC2F5B8CA1D5141B81E85CBF53B544114AE4701CB1D514152B81E45F33B5441AE47E1CACA1D514114AE47C1EF3B54419A999939C41D51410AD7A320EC3B5441A4703D4AC31D5141295C8F32EB3B54411F85EBE1B11D5141D7A370CDE93B54419A9999D9AF1D5141A4703DEAE83B544133333363B01D5141333333B3EA3B5441295C8F62B01D5141295C8FB2EB3B54418FC2F528B11D514166666686EE3B544185EB5168B11D51418FC2F578EF3B5441E17A140EB31D5141EC51B81EF13B5441C3F528ACB31D51419A9999B9F23B5441B81E85CBB31D51417B14AE27F53B544133333303B31D5141CDCCCC9CF83B54415C8FC225B21D51411F85EB81FA3B54411F85EBD1B11D5141AE47E1DAFC3B54413D0AD733B11D51413D0AD713FF3B54418FC2F578AF1D5141295C8F22013C54415C8FC2C5B51D5141D7A370AD043C544152B81E15BB1D5141E17A14EE073C5441B81E854BBE1D51417B14AEE7093C544148E17A14BF1D51417B14AED70A3C544148E17A14C11D51413D0AD7F30A3C54413D0AD7B3C41D5141666666360D3C544148E17AB4CD1D5141A4703D6A123C5441B81E85DBD21D51418FC2F558153C5441713D0AC7DF1D5141A4703D8A1C3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000048E17A14BF1D51417B14AED70A3C5441E03EDF44BF1D5141AA7057DA0A3C54415B2EF45CBF1D5141D7F84CCE0A3C54414A8E8E67BF1D51415BCD3FDC0A3C544148E17A14C11D51413D0AD7F30A3C5441641C1A5CC21D514136803CC00B3C54411B66EA6EC21D51410B2536CA0B3C5441B56CDB22C51D514125668E760D3C5441CDE39F4CC51D51418185B18E0D3C54417B3EB982C51D51418FFEF4AD0D3C544164650B15C71D51418DCD74960E3C5441851CF9E0C91D514166153034103C544119B9DB37CD1D514122B64902123C54413C3A6413D01D51412B89A8C3133C5441B81E85DBD21D51418FC2F558153C544152C2C04CD41D5141039A8226163C5441C0B2AFDAD41D5141A333D96A163C5441964C02FCD61D5141A0281AA5173C54415DFD165BD71D5141218008DA173C544121A2C195DB1D5141E77C081E1A3C544143117FA1DF1D5141A449A85F1C3C5441BCC77E06DE1D51410DDD51A1153C54415AE0E3D6D01D514189F220430C3C5441213CEBEFCD1D514133943A2F0A3C5441478E7298CB1D514147737C8A083C54411F950DE8C91D51410DE8015B073C54415B7C2890C91D5141935F511D073C5441A6A84BEBC71D5141BDCFEEF5053C544191DC12D2C61D5141E5DD8938053C544125738DD0C61D5141C0E97C2F053C544133333303C61D5141F6285C9F043C5441F6285C6FC51D5141295C8F62043C544148BCE34AC61D5141499F3514023C5441BAF3674AC61D514138205511023C5441AB3E5B55C61D514124FD0FF8013C544185EB51A8C61D51418FC2F518013C54413E03B123C91D5141259B6F68FB3B5441941863EAC91D51418EF717EFF83B544166666616CA1D5141E17A145EF83B5441D26AEF7FCA1D514172A689B2F63B544151B1FBEECA1D51419072A8E8F33B5441F5F34BEFCA1D5141A013DBE5F33B5441FAD76CEFCA1D51410D19B5E4F33B5441FAD76CEFCA1D5141A5B5C71DF23B544171B23CEFCA1D5141CA4EAB1AF23B5441105156EECA1D5141A08BC80BF23B54413B71F7B2CA1D5141F917DECDEF3B54412C52CA19C91D5141711811D2EE3B544134EA7533C81D5141D1A1D852EE3B5441C9B4F2FBC61D51412EF9C8A6ED3B5441EA2CA95CC41D514114352457EC3B54419FF0CA0FC41D5141DB690EF7EB3B5441A4703D4AC31D5141295C8F32EB3B54413B93B003BF1D5141AE56D8DAEA3B5441E7AB8397BD1D5141328815C4EA3B54414EE85AD8B71D51411FBB2A4BEA3B54414FE0E3F0B11D514196ED3FD2E93B544120C76CE7B11D51412E93E1CDE93B54411F85EBE1B11D5141D7A370CDE93B5441CA1204EBAF1D51417E40D8F1E83B5441D155FC71B01D51417BFF7873EA3B5441D155FC71B01D5141016839DEEB3B54418FEB7879B01D5141A7312706EC3B54418FC2F528B11D514166666686EE3B544185EB5168B11D51418FC2F578EF3B5441E17A140EB31D5141EC51B81EF13B5441C3F528ACB31D51419A9999B9F23B5441B81E85CBB31D51417B14AE27F53B544133333303B31D5141CDCCCC9CF83B54415C8FC225B21D51411F85EB81FA3B54411F85EBD1B11D5141AE47E1DAFC3B54413D0AD733B11D51413D0AD713FF3B54418FC2F578AF1D5141295C8F22013C54415C8FC2C5B51D5141D7A370AD043C544152B81E15BB1D5141E17A14EE073C5441B81E854BBE1D51417B14AEE7093C544148E17A14BF1D51417B14AED70A3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985290 - 397559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000713D0AC7DF1D5141A4703D8A1C3C5441CDCCCC9CE01D514152B81E251D3C5441E17A14CEE21D5141B81E85BB1E3C5441AE47E1DAE41D51415C8FC2D51F3C54415C8FC295E81D5141D7A370AD213C544114AE47C1EB1D5141B81E85BB223C5441E17A14DEED1D51411F85EB81223C544166666626EF1D514114AE4721223C5441EC51B80EF01D514133333373213C5441D7A3700DF11D51410AD7A3F01E3C54413D0AD7F3F01D51415C8FC2551B3C5441F6285CBFF01D514185EB5158153C5441713D0A27E81D5141CDCCCC8C0E3C544100000010DE1D5141CDCCCCCC063C5441A4703DEADD1D5141AE47E1FA093C544114AE4781DD1D514148E17AD4123C5441E17A14FEDD1D514148E17A74153C54419A9999C9D01D5141F6285C2F0C3C544133333303C61D5141F6285C9F043C5441F6285C6FC51D5141295C8F62043C544185EB51A8C61D51418FC2F518013C54418FC2F538C91D51417B14AE37FB3B544166666616CA1D5141E17A145EF83B54418FC2F5B8CA1D5141B81E85CBF53B544114AE4701CB1D514152B81E45F33B5441AE47E1CACA1D514114AE47C1EF3B54419A999939C41D51410AD7A320EC3B5441A4703D4AC31D5141295C8F32EB3B54411F85EBE1B11D5141D7A370CDE93B54419A9999D9AF1D5141A4703DEAE83B544133333363B01D5141333333B3EA3B5441295C8F62B01D5141295C8FB2EB3B54418FC2F528B11D514166666686EE3B544185EB5168B11D51418FC2F578EF3B5441E17A140EB31D5141EC51B81EF13B5441C3F528ACB31D51419A9999B9F23B5441B81E85CBB31D51417B14AE27F53B544133333303B31D5141CDCCCC9CF83B54415C8FC225B21D51411F85EB81FA3B54411F85EBD1B11D5141AE47E1DAFC3B54413D0AD733B11D51413D0AD713FF3B54418FC2F578AF1D5141295C8F22013C54415C8FC2C5B51D5141D7A370AD043C544152B81E15BB1D5141E17A14EE073C5441B81E854BBE1D51417B14AEE7093C544148E17A14BF1D51417B14AED70A3C544148E17A14C11D51413D0AD7F30A3C54413D0AD7B3C41D5141666666360D3C544148E17AB4CD1D5141A4703D6A123C5441B81E85DBD21D51418FC2F558153C5441713D0AC7DF1D5141A4703D8A1C3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000048E17A14BF1D51417B14AED70A3C5441E03EDF44BF1D5141AA7057DA0A3C54415B2EF45CBF1D5141D7F84CCE0A3C54414A8E8E67BF1D51415BCD3FDC0A3C544148E17A14C11D51413D0AD7F30A3C5441641C1A5CC21D514136803CC00B3C54411B66EA6EC21D51410B2536CA0B3C5441B56CDB22C51D514125668E760D3C5441CDE39F4CC51D51418185B18E0D3C54417B3EB982C51D51418FFEF4AD0D3C544164650B15C71D51418DCD74960E3C5441851CF9E0C91D514166153034103C544119B9DB37CD1D514122B64902123C54413C3A6413D01D51412B89A8C3133C5441B81E85DBD21D51418FC2F558153C544152C2C04CD41D5141039A8226163C5441C0B2AFDAD41D5141A333D96A163C5441964C02FCD61D5141A0281AA5173C54415DFD165BD71D5141218008DA173C544121A2C195DB1D5141E77C081E1A3C544143117FA1DF1D5141A449A85F1C3C5441BCC77E06DE1D51410DDD51A1153C54415AE0E3D6D01D514189F220430C3C5441213CEBEFCD1D514133943A2F0A3C5441478E7298CB1D514147737C8A083C54411F950DE8C91D51410DE8015B073C54415B7C2890C91D5141935F511D073C5441A6A84BEBC71D5141BDCFEEF5053C544191DC12D2C61D5141E5DD8938053C544125738DD0C61D5141C0E97C2F053C544133333303C61D5141F6285C9F043C5441F6285C6FC51D5141295C8F62043C544148BCE34AC61D5141499F3514023C5441BAF3674AC61D514138205511023C5441AB3E5B55C61D514124FD0FF8013C544185EB51A8C61D51418FC2F518013C54413E03B123C91D5141259B6F68FB3B5441941863EAC91D51418EF717EFF83B544166666616CA1D5141E17A145EF83B5441D26AEF7FCA1D514172A689B2F63B544151B1FBEECA1D51419072A8E8F33B5441F5F34BEFCA1D5141A013DBE5F33B5441FAD76CEFCA1D51410D19B5E4F33B5441FAD76CEFCA1D5141A5B5C71DF23B544171B23CEFCA1D5141CA4EAB1AF23B5441105156EECA1D5141A08BC80BF23B54413B71F7B2CA1D5141F917DECDEF3B54412C52CA19C91D5141711811D2EE3B544134EA7533C81D5141D1A1D852EE3B5441C9B4F2FBC61D51412EF9C8A6ED3B5441EA2CA95CC41D514114352457EC3B54419FF0CA0FC41D5141DB690EF7EB3B5441A4703D4AC31D5141295C8F32EB3B54413B93B003BF1D5141AE56D8DAEA3B5441E7AB8397BD1D5141328815C4EA3B54414EE85AD8B71D51411FBB2A4BEA3B54414FE0E3F0B11D514196ED3FD2E93B544120C76CE7B11D51412E93E1CDE93B54411F85EBE1B11D5141D7A370CDE93B5441CA1204EBAF1D51417E40D8F1E83B5441D155FC71B01D51417BFF7873EA3B5441D155FC71B01D5141016839DEEB3B54418FEB7879B01D5141A7312706EC3B54418FC2F528B11D514166666686EE3B544185EB5168B11D51418FC2F578EF3B5441E17A140EB31D5141EC51B81EF13B5441C3F528ACB31D51419A9999B9F23B5441B81E85CBB31D51417B14AE27F53B544133333303B31D5141CDCCCC9CF83B54415C8FC225B21D51411F85EB81FA3B54411F85EBD1B11D5141AE47E1DAFC3B54413D0AD733B11D51413D0AD713FF3B54418FC2F578AF1D5141295C8F22013C54415C8FC2C5B51D5141D7A370AD043C544152B81E15BB1D5141E17A14EE073C5441B81E854BBE1D51417B14AEE7093C544148E17A14BF1D51417B14AED70A3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>813136 - 814146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD743E6645141F6285C7F3D3A5441AE47E1EAD2645141A4703D0A403A54418FC2F518CD645141D7A3709D423A5441CDCCCCCCC7645141F6285CCF443A5441D43F6A46C464514101623FB3463A5441C642B6E7C36451412889E01F463A54413817978EC0645141274899D0473A5441A4703DBAC0645141A4703D9A483A5441666666D6C1645141000000504D3A54415C8FC205C8645141666666D64C3A5441295C8F22CC64514114AE47014D3A54419A9999D9CC645141EC51B81E4D3A5441713D0AE7CD645141713D0A674D3A544185EB5138D06451418FC2F5184E3A5441CDCCCC9CD0645141E17A144E4C3A5441AE47E15AD5645141295C8FD24B3A5441333333C3EA6451411F85EB214A3A54413D0AD703F2645141E17A146E483A5441000000D0FD64514185EB5108473A5441000000F0066551413D0AD7F3453A5441333333230F6551419A999959453A5441713D0A1716655141295C8FB2453A54413D0AD7E31A655141D7A3709D463A54419A9999391B655141E17A14AE463A5441F6285C4F24655141295C8F92483A54410AD7A3602A65514133333363493A544185EB51682D6551411F85EBF1483A544152B81EB52D655141295C8F92473A5441CDCCCC4C2865514148E17A44473A54415C8FC20523655141000000A0463A54410AD7A30020655141B81E85BB453A54415C8FC20520655141B81E855B463A5441713D0AA71B655141666666F6443A5441D7A370CD1B655141B81E855B443A5441D7A3705D1765514114AE4741403A5441333333D30F655141333333A33D3A544114AE47710A6551413D0AD703393A5441B81E852B05655141B81E859B393A5441CDCCCCECF4645141000000703B3A54413D0AD743E6645141F6285C7F3D3A5441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000014AE47F1106551419A999999383A54410AD7A30015655141AE47E16A383A5441C3F5280C14655141EC51B8AE2F3A54418FC2F5F812655141EC51B82E283A544114AE472118655141713D0AA7273A5441EC51B80E1E65514166666696273A5441CDCCCCAC236551417B14AED7273A5441713D0A57296551418FC2F598283A5441A4703D8A3365514148E17A842A3A54411F85EB513265514152B81EC5243A54413D0AD78331655141B81E851B233A54415C8FC24530655141AE47E13A223A5441EC51B84E2F655141B81E85CB213A5441AE47E19A2D65514133333383213A5441CDCCCCBC2A65514133333383213A5441D7A370ED1C655141C3F528EC213A544114AE47911065514148E17A14223A5441C3F528BC0A655141D7A370AD223A5441AE47E19A06655141000000A0233A5441F6285CDF066551415C8FC225243A544114AE474109655141713D0AE72B3A544185EB5108006551413D0AD7C32E3A5441CDCCCC5C00655141B81E85FB2F3A54410AD7A3B0FF645141F6285CAF303A54417B14AE57FB64514148E17A14313A54411F85EBF1F6645141B81E85CB2F3A54418FC2F5F8EF645141CDCCCCDC2D3A5441F6285C4FEF6451413D0AD7832E3A544185EB5118EB645141EC51B89E2F3A54418FC2F548E4645141000000E0313A544185EB5128E0645141E17A149E333A5441A4703DEAD36451418FC2F558393A544166666686C8645141F6285C7F3E3A54413D0AD733CA645141E17A14DE413A54411C7AE701CB6451416C29BE08423A5441173A9022CC6451416615FF38423A54413C725C68CF645141106F632B413A544119998192D264514121DEAD26403A5441FF418BFFD26451418F458607403A544139D99EBAD4645141F17C4CCD3F3A544161B716A7DA6451412E2304063F3A5441AFA86A52E56451417E04169F3D3A54410E04EE75EE645141F92C8A583C3A544124A1F711F56451418D69C86B3B3A5441E2A68636FB6451415AC35AB93A3A5441C7449A67FF6451410F6C993F3A3A54410BCEAA5B04655141B252B8AF393A5441B81E852B05655141B81E859B393A544148E17AC406655141CDCCCCDC363A5441295C8F220A65514114AE4791363A5441E17A14BE0C6551419A9999C9383A544114AE47F1106551419A999999383A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985164 - 397343
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000007A373EB390A450410AF5A0309F665441B1A64D3DB1A45041D5893A50A366544148E17AE4B1A4504114AE4781A2665441CFAE50BFAAA4504181FF08C98B665441805CCB3E7CA4504199471D2F80665441AE47E11A76A4504114AE47118C6654417A373EB390A450410AF5A0309F665441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000EC51B8AE90A45041E17A143E9F66544148E17AA495A45041E17A14DE9F6654413D0AD733B1A4504152B81E55A366544148E17AE4B1A4504114AE4781A2665441B30654BAACA45041CDC4BC2292665441250554BAACA45041E4BFBC2292665441B9FA53BAACA45041DB9EBC22926654416BCFCFB7AAA450412BC829C78B665441A8E03B6B7FA4504171ECCCF980665441F4FE5C4E7CA45041029CFF32806654414A362AAC7BA4504199DFE34A816654410275351B76A4504127C5A4108C665441159BE21A76A45041857546118C66544152E7571E76A45041122EC5138C665441EC51B8AE90A45041E17A143E9F665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>818801 - 239112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000040000009800000048E17AB49F935041CDCCCCFCAA4A55415C8FC2F59E935041B81E854BB44A5541EC51B87E9E9350418FC2F5E8C24A554114AE47F1A59350415C8FC2C5C44A5541CDCCCC5CA893504152B81E85C94A55418FC2F568AA935041D7A3706DCD4A55411F85EB51AE9350418FC2F5A8CB4A5541AE47E13AB293504100000020CC4A55417B14AE17B8935041713D0A27D14A5541C3F5283CBA93504100000010D54A5541713D0AD7BC9350417B14AE27D54A5541AE47E12ABF9350413D0AD7D3D24A55413D0AD7E3C2935041E17A146ED14A5541C3F5282CC793504100000010D54A55413D0AD743C79350411F85EB51D84A55413D0AD743C7935041333333F3DB4A55410AD7A3C0C493504114AE4711DD4A554133333373C3935041AE47E16AE04A5541713D0AC7C593504100000000E24A55419A9999D9CC935041666666D6E24A554152B81E75CF935041295C8FE2E44A55418FC2F5C8D1935041AE47E1CAE44A5541D7A370BDD3935041F6285C5FE24A5541AE47E10AD5935041333333B3E44A554100000070D6935041CDCCCC0CE84A5541EC51B85ED793504133333373ED4A5541D7A3701DD8935041333333D3F14A554185EB5188D693504100000080F34A55415C8FC275D39350418FC2F5D8F24A55411F85EB21D19350415C8FC2B5F44A5541F6285C3FCE935041F6285CDFF34A5541295C8F62CC93504114AE47F1F64A5541F6285CAFC99350417B14AEF7F74A5541F6285CDFC9935041A4703D0AFB4A5541295C8F02C8935041EC51B8FEFC4A5541F6285CDFC9935041333333C3FE4A5541F6285CDFC99350418FC2F588044B5541CDCCCCFCC6935041B81E853B074B554114AE47F1C8935041666666060A4B554166666686CA9350410AD7A3600D4B5541666666E6CE93504185EB51A8114B554152B81ED5D3935041D7A370CD174B5541EC51B82ED7935041666666B61B4B5541F6285CFFD69350410AD7A3E01E4B5541295C8F22D5935041295C8F122F4B554100000070D6935041D7A3700D324B554185EB5128D29350411F85EB31384B554185EB5198CD93504152B81EE53A4B5541A4703D4AC89350418FC2F5083D4B5541F6285C8FB893504114AE47414E4B5541295C8FB2B693504114AE47F15F4B5541C3F528ACB5935041CDCCCCEC6A4B5541B81E853BB6935041F6285C8F764B554114AE47F1C89350413D0AD7B3784B5541A4703D7ACC9350418FC2F5E8754B5541F6285C9FD293504100000060764B554114AE47E1D5935041295C8F42794B5541F6285CFFD6935041333333437D4B554148E17A64D8935041A4703D1A824B55415C8FC275D393504148E17A44854B55413D0AD733D093504185EB51C8874B5541295C8FC2D093504185EB51F88B4B554148E17A04D4935041C3F5281C8E4B55417B14AEE7D693504114AE47B18F4B5541EC51B82ED793504185EB5158904B55418FC2F558DA935041713D0AE7904B5541713D0A77DB93504114AE4741944B5541F6285C2FDB935041EC51B81E9A4B5541295C8FB2D99350417B14AED79D4B5541F6285C0FCE935041F6285C4FA24B5541F6285C4FC59350413D0AD743A44B554148E17A54BE93504166666656A74B5541F6285C5FB8935041AE47E14AA94B55419A999999AE93504148E17AA4AC4B5541333333F3B193504152B81EA5B04B5541EC51B82EB0935041C3F5287CB54B5541AE47E1AAAD9350413D0AD723BA4B5541CDCCCC5CA8935041F6285C9FB34B554148E17A74A89350418FC2F5C8B24B5541C3F5282CA4935041E17A145EB44B55418FC2F5A8A193504152B81ED5B44B554185EB51A89D935041000000E0AA4B5541713D0AA79593504152B81E45AC4B5541295C8FA29C935041E17A14EEB84B554148E17AE49F935041C3F5289CC24B5541CDCCCCCCA3935041B81E85BBCB4B5541F6285C3FAB935041CDCCCCECD74B5541CDCCCC1CB193504100000030DF4B5541666666D6B8935041CDCCCC9CE94B5541666666C6C19350413D0AD733F74B5541713D0A97C5935041A4703D3AFC4B554148E17AF4CB935041333333E3FC4B5541CDCCCC9CD2935041333333C3FD4B554114AE4771D7935041CDCCCC8CFF4B55418FC2F5A8D893504100000050004C554152B81E35DB935041A4703D6A014C5541E17A148EDE935041B81E85AB024C554185EB5148E293504148E17A44044C554148E17A04E29350415C8FC2A5044C554100000000E09350419A9999D9034C5541A4703D6ADD9350418FC2F5C8024C55417B14AE07DA93504166666656014C5541AE47E15AD893504114AE47B1004C5541713D0A37D7935041E17A14EEFF4B5541333333C3D2935041B81E854BFE4B55418FC2F528CE935041F6285C7FFD4B55417B14AE47CA935041EC51B84EFD4B5541D7A3708DC693504114AE4731FD4B55411F85EBF1C5935041E17A142EFE4B5541295C8F22CD93504166666656084C55419A999989DF935041F6285C1F224C5541CDCCCCFCE1935041B81E85CB254C5541C3F5280CE5935041CDCCCC9C264C55415C8FC255E993504100000000264C55411F85EBF1E9935041AE47E10A1E4C5541AE47E15AEA935041E17A146E134C55411F85EBF1E993504133333383034C5541666666C6E8935041D7A3705DFA4B5541000000F0E79350417B14AE67F04B554148E17A84E5935041666666E6D64B5541713D0AD7E3935041EC51B81EC14B554114AE47A1E2935041E17A14FEAF4B5541295C8F42E2935041713D0A67A24B554148E17AF4E0935041CDCCCCBC8D4B554100000030DF935041E17A147E7B4B554114AE4771DE9350413D0AD7C36F4B5541B81E850BDD935041B81E850B704B5541D7A3701DDC935041EC51B8CE694B5541A4703DFADD935041666666E6694B5541A4703DCADD9350411F85EB21684B5541C3F528DCDC9350410AD7A360574B5541EC51B88EDB935041333333C3484B554185EB5188DA935041B81E859B324B5541000000D0DA935041CDCCCC1C254B5541295C8F52D9935041713D0AE7234B5541295C8F82D99350411F85EB21224B55417B14AEE7DA93504185EB51C81E4B55417B14AE17DB9350410AD7A3201A4B5541EC51B88EDB935041713D0A47054B5541F6285C2FDB93504185EB5108F34A55418FC2F558DA9350413D0AD7B3EC4A5541295C8F52D9935041295C8FE2E44A5541B81E85ABD8935041713D0AE7DD4A5541F6285CCFD69350418FC2F598D84A55415C8FC245D3935041C3F528ECD64A5541EC51B80ECA935041B81E852BCA4A554100000060BC9350418FC2F598B54A55418FC2F5C8B293504114AE4761A84A55418FC2F568AE9350410AD7A360A44A554100000050A693504148E17A24A24A5541F6285C1F9E935041A4703DBAA34A554148E17AB49F935041CDCCCCFCAA4A55410B0000005C8FC2D5DB9350419A9999C9B64B554148E17AC4DC93504185EB5158B74B5541CDCCCCACDC93504152B81E35B94B5541E17A14BEDB935041AE47E19ABA4B5541000000D0DA9350419A999929BB4B5541295C8F52D9935041AE47E19ABA4B55418FC2F528DA935041CDCCCC7CB94B5541666666A6DB93504166666676B84B554185EB5188DA935041EC51B85EB84B55417B14AE17DB9350411F85EBB1B64B55415C8FC2D5DB9350419A9999C9B64B55410D00000033333303A8935041D7A3708DA44A5541D7A3701DAA935041A4703DBAA54A5541C3F5289CAA93504148E17AB4A74A5541295C8F42A893504100000060A94A554114AE47C1A8935041A4703D6AAB4A5541F6285C4FA993504148E17A54AD4A5541713D0A97A6935041295C8FF2AD4A5541B81E851BA59350417B14AE27AC4A55410AD7A350A39350410AD7A300A94A554148E17AE4A193504166666606A74A55413D0AD723A29350419A9999E9A54A5541C3F528DCA4935041C3F5280CA54A554133333303A8935041D7A3708DA44A554110000000B81E855BCC935041AE47E17AD24A554100000070D0935041B81E85ABD74A5541713D0A97D393504114AE4761DB4A554185EB5138D3935041AE47E1BADD4A554100000060D0935041B81E855BDD4A55419A999909CD9350417B14AE07D94A55411F85EB41CA93504133333323D54A5541B81E85DBC6935041CDCCCCACD14A5541CDCCCCACC0935041C3F5284CCC4A5541F6285CEFBF9350411F85EB51CA4A5541D7A3706DC09350418FC2F5E8C74A5541A4703D9AC193504185EB51F8C74A554152B81E55C3935041000000F0CA4A5541AE47E1FAC69350415C8FC2A5CE4A55413D0AD783C993504133333373CF4A5541B81E855BCC935041AE47E17AD24A5541
+</a>
+
+<b>
+0106000000010000000103000000020000003E00000000000060BC9350418FC2F598B54A5541500CF01ABA935041813018AFB24A5541305DB119B69350410D1DE939AD4A5541ED47E36FB59350416CA20409AC4A554162D85DCDB293504123795A67A84A55416303C1A1B2935041937D693DA84A55415B0590D8AE9350411A8CBDC6A44A55412AC86FE2AB935041193F31AEA34A55415AEBB676A79350417C11D375A24A5541C2BA13C0A49350416666E071A24A554189FC2D7E9F93504160A95876A34A5541F8769ACC9E935041EF1FA0D9A34A5541C71B46809E935041F47CD976A54A554148E17AB49F935041CDCCCCFCAA4A55415C8FC2F59E935041B81E854BB44A554189E0A7879E93504155981BD0C14A554134145E8B9F93504195C908C1C24A55414C59FFDCA2935041E7B69CA0C34A5541701A7430A393504105867E15C44A554114AE47F1A59350415C8FC2C5C44A5541CDCCCC5CA893504152B81E85C94A5541653CFDA6A993504180E442FBCB4A5541B54F031FAA935041CFA8277ECC4A55410F892E8EAC935041EA9D2A75CC4A55411F85EB51AE9350418FC2F5A8CB4A5541AE47E13AB293504100000020CC4A554185DF6792B393504122DE9846CD4A554198C9B6F6B3935041F676FE60CD4A55419EFF1D9CB6935041BA0E577ECF4A55412A153CC1B693504186925E01D04A55417B14AE17B8935041713D0A27D14A55418F489C17BA93504195564CCDD44A5541E2908FD0BC9350416C67923AD44A554158A7B771C0935041382F4B55D14A5541BD7CA222C39350419A5773A2CF4A554174BDF38FC39350411AE511CFCE4A5541CDCCCCACC0935041C3F5284CCC4A5541F6285CEFBF9350411F85EB51CA4A5541D7A3706DC09350418FC2F5E8C74A5541A4703D9AC193504185EB51F8C74A554152B81E55C3935041000000F0CA4A55416752D939C5935041B7E508DDCC4A5541C316C485C5935041AA014D9DCC4A5541C42CAA7CC6935041A2CD7EFECC4A5541B439A04EC793504168A4A010CE4A554107F05917C89350410885D0FFCE4A55413D0AD783C993504133333373CF4A5541B81E855BCC935041AE47E17AD24A5541109D0E5FCE935041476AAC0AD54A55412C2F070FCF9350416293C2C2D54A5541E306178DD1935041A3DF7BABD84A554146FB19DCD2935041CAB01221D94A554110B8E305D49350418F89AAD2D84A5541704CC33AD4935041711E2B60D74A55415C8FC245D3935041C3F528ECD64A55411965B5D8CE93504158AC25CCD04A554196610EC3CD9350419C52EF80CF4A5541EC51B80ECA935041B81E852BCA4A5541C061829AC5935041E9352479C34A5541D85AB4CDC393504132A68702C14A5541C46DCB1CC2935041809C6239BE4A554100000060BC9350418FC2F598B54A55410D00000033333303A8935041D7A3708DA44A5541D7A3701DAA935041A4703DBAA54A5541C3F5289CAA93504148E17AB4A74A5541295C8F42A893504100000060A94A554114AE47C1A8935041A4703D6AAB4A5541F6285C4FA993504148E17A54AD4A5541713D0A97A6935041295C8FF2AD4A5541B81E851BA59350417B14AE27AC4A55410AD7A350A39350410AD7A300A94A554148E17AE4A193504166666606A74A55413D0AD723A29350419A9999E9A54A5541C3F528DCA4935041C3F5280CA54A554133333303A8935041D7A3708DA44A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>818801 - 372512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000040000009800000048E17AB49F935041CDCCCCFCAA4A55415C8FC2F59E935041B81E854BB44A5541EC51B87E9E9350418FC2F5E8C24A554114AE47F1A59350415C8FC2C5C44A5541CDCCCC5CA893504152B81E85C94A55418FC2F568AA935041D7A3706DCD4A55411F85EB51AE9350418FC2F5A8CB4A5541AE47E13AB293504100000020CC4A55417B14AE17B8935041713D0A27D14A5541C3F5283CBA93504100000010D54A5541713D0AD7BC9350417B14AE27D54A5541AE47E12ABF9350413D0AD7D3D24A55413D0AD7E3C2935041E17A146ED14A5541C3F5282CC793504100000010D54A55413D0AD743C79350411F85EB51D84A55413D0AD743C7935041333333F3DB4A55410AD7A3C0C493504114AE4711DD4A554133333373C3935041AE47E16AE04A5541713D0AC7C593504100000000E24A55419A9999D9CC935041666666D6E24A554152B81E75CF935041295C8FE2E44A55418FC2F5C8D1935041AE47E1CAE44A5541D7A370BDD3935041F6285C5FE24A5541AE47E10AD5935041333333B3E44A554100000070D6935041CDCCCC0CE84A5541EC51B85ED793504133333373ED4A5541D7A3701DD8935041333333D3F14A554185EB5188D693504100000080F34A55415C8FC275D39350418FC2F5D8F24A55411F85EB21D19350415C8FC2B5F44A5541F6285C3FCE935041F6285CDFF34A5541295C8F62CC93504114AE47F1F64A5541F6285CAFC99350417B14AEF7F74A5541F6285CDFC9935041A4703D0AFB4A5541295C8F02C8935041EC51B8FEFC4A5541F6285CDFC9935041333333C3FE4A5541F6285CDFC99350418FC2F588044B5541CDCCCCFCC6935041B81E853B074B554114AE47F1C8935041666666060A4B554166666686CA9350410AD7A3600D4B5541666666E6CE93504185EB51A8114B554152B81ED5D3935041D7A370CD174B5541EC51B82ED7935041666666B61B4B5541F6285CFFD69350410AD7A3E01E4B5541295C8F22D5935041295C8F122F4B554100000070D6935041D7A3700D324B554185EB5128D29350411F85EB31384B554185EB5198CD93504152B81EE53A4B5541A4703D4AC89350418FC2F5083D4B5541F6285C8FB893504114AE47414E4B5541295C8FB2B693504114AE47F15F4B5541C3F528ACB5935041CDCCCCEC6A4B5541B81E853BB6935041F6285C8F764B554114AE47F1C89350413D0AD7B3784B5541A4703D7ACC9350418FC2F5E8754B5541F6285C9FD293504100000060764B554114AE47E1D5935041295C8F42794B5541F6285CFFD6935041333333437D4B554148E17A64D8935041A4703D1A824B55415C8FC275D393504148E17A44854B55413D0AD733D093504185EB51C8874B5541295C8FC2D093504185EB51F88B4B554148E17A04D4935041C3F5281C8E4B55417B14AEE7D693504114AE47B18F4B5541EC51B82ED793504185EB5158904B55418FC2F558DA935041713D0AE7904B5541713D0A77DB93504114AE4741944B5541F6285C2FDB935041EC51B81E9A4B5541295C8FB2D99350417B14AED79D4B5541F6285C0FCE935041F6285C4FA24B5541F6285C4FC59350413D0AD743A44B554148E17A54BE93504166666656A74B5541F6285C5FB8935041AE47E14AA94B55419A999999AE93504148E17AA4AC4B5541333333F3B193504152B81EA5B04B5541EC51B82EB0935041C3F5287CB54B5541AE47E1AAAD9350413D0AD723BA4B5541CDCCCC5CA8935041F6285C9FB34B554148E17A74A89350418FC2F5C8B24B5541C3F5282CA4935041E17A145EB44B55418FC2F5A8A193504152B81ED5B44B554185EB51A89D935041000000E0AA4B5541713D0AA79593504152B81E45AC4B5541295C8FA29C935041E17A14EEB84B554148E17AE49F935041C3F5289CC24B5541CDCCCCCCA3935041B81E85BBCB4B5541F6285C3FAB935041CDCCCCECD74B5541CDCCCC1CB193504100000030DF4B5541666666D6B8935041CDCCCC9CE94B5541666666C6C19350413D0AD733F74B5541713D0A97C5935041A4703D3AFC4B554148E17AF4CB935041333333E3FC4B5541CDCCCC9CD2935041333333C3FD4B554114AE4771D7935041CDCCCC8CFF4B55418FC2F5A8D893504100000050004C554152B81E35DB935041A4703D6A014C5541E17A148EDE935041B81E85AB024C554185EB5148E293504148E17A44044C554148E17A04E29350415C8FC2A5044C554100000000E09350419A9999D9034C5541A4703D6ADD9350418FC2F5C8024C55417B14AE07DA93504166666656014C5541AE47E15AD893504114AE47B1004C5541713D0A37D7935041E17A14EEFF4B5541333333C3D2935041B81E854BFE4B55418FC2F528CE935041F6285C7FFD4B55417B14AE47CA935041EC51B84EFD4B5541D7A3708DC693504114AE4731FD4B55411F85EBF1C5935041E17A142EFE4B5541295C8F22CD93504166666656084C55419A999989DF935041F6285C1F224C5541CDCCCCFCE1935041B81E85CB254C5541C3F5280CE5935041CDCCCC9C264C55415C8FC255E993504100000000264C55411F85EBF1E9935041AE47E10A1E4C5541AE47E15AEA935041E17A146E134C55411F85EBF1E993504133333383034C5541666666C6E8935041D7A3705DFA4B5541000000F0E79350417B14AE67F04B554148E17A84E5935041666666E6D64B5541713D0AD7E3935041EC51B81EC14B554114AE47A1E2935041E17A14FEAF4B5541295C8F42E2935041713D0A67A24B554148E17AF4E0935041CDCCCCBC8D4B554100000030DF935041E17A147E7B4B554114AE4771DE9350413D0AD7C36F4B5541B81E850BDD935041B81E850B704B5541D7A3701DDC935041EC51B8CE694B5541A4703DFADD935041666666E6694B5541A4703DCADD9350411F85EB21684B5541C3F528DCDC9350410AD7A360574B5541EC51B88EDB935041333333C3484B554185EB5188DA935041B81E859B324B5541000000D0DA935041CDCCCC1C254B5541295C8F52D9935041713D0AE7234B5541295C8F82D99350411F85EB21224B55417B14AEE7DA93504185EB51C81E4B55417B14AE17DB9350410AD7A3201A4B5541EC51B88EDB935041713D0A47054B5541F6285C2FDB93504185EB5108F34A55418FC2F558DA9350413D0AD7B3EC4A5541295C8F52D9935041295C8FE2E44A5541B81E85ABD8935041713D0AE7DD4A5541F6285CCFD69350418FC2F598D84A55415C8FC245D3935041C3F528ECD64A5541EC51B80ECA935041B81E852BCA4A554100000060BC9350418FC2F598B54A55418FC2F5C8B293504114AE4761A84A55418FC2F568AE9350410AD7A360A44A554100000050A693504148E17A24A24A5541F6285C1F9E935041A4703DBAA34A554148E17AB49F935041CDCCCCFCAA4A55410B0000005C8FC2D5DB9350419A9999C9B64B554148E17AC4DC93504185EB5158B74B5541CDCCCCACDC93504152B81E35B94B5541E17A14BEDB935041AE47E19ABA4B5541000000D0DA9350419A999929BB4B5541295C8F52D9935041AE47E19ABA4B55418FC2F528DA935041CDCCCC7CB94B5541666666A6DB93504166666676B84B554185EB5188DA935041EC51B85EB84B55417B14AE17DB9350411F85EBB1B64B55415C8FC2D5DB9350419A9999C9B64B55410D00000033333303A8935041D7A3708DA44A5541D7A3701DAA935041A4703DBAA54A5541C3F5289CAA93504148E17AB4A74A5541295C8F42A893504100000060A94A554114AE47C1A8935041A4703D6AAB4A5541F6285C4FA993504148E17A54AD4A5541713D0A97A6935041295C8FF2AD4A5541B81E851BA59350417B14AE27AC4A55410AD7A350A39350410AD7A300A94A554148E17AE4A193504166666606A74A55413D0AD723A29350419A9999E9A54A5541C3F528DCA4935041C3F5280CA54A554133333303A8935041D7A3708DA44A554110000000B81E855BCC935041AE47E17AD24A554100000070D0935041B81E85ABD74A5541713D0A97D393504114AE4761DB4A554185EB5138D3935041AE47E1BADD4A554100000060D0935041B81E855BDD4A55419A999909CD9350417B14AE07D94A55411F85EB41CA93504133333323D54A5541B81E85DBC6935041CDCCCCACD14A5541CDCCCCACC0935041C3F5284CCC4A5541F6285CEFBF9350411F85EB51CA4A5541D7A3706DC09350418FC2F5E8C74A5541A4703D9AC193504185EB51F8C74A554152B81E55C3935041000000F0CA4A5541AE47E1FAC69350415C8FC2A5CE4A55413D0AD783C993504133333373CF4A5541B81E855BCC935041AE47E17AD24A5541
+</a>
+
+<b>
+0106000000010000000103000000020000003E00000000000060BC9350418FC2F598B54A5541500CF01ABA935041813018AFB24A5541305DB119B69350410D1DE939AD4A5541ED47E36FB59350416CA20409AC4A554162D85DCDB293504123795A67A84A55416303C1A1B2935041937D693DA84A55415B0590D8AE9350411A8CBDC6A44A55412AC86FE2AB935041193F31AEA34A55415AEBB676A79350417C11D375A24A5541C2BA13C0A49350416666E071A24A554189FC2D7E9F93504160A95876A34A5541F8769ACC9E935041EF1FA0D9A34A5541C71B46809E935041F47CD976A54A554148E17AB49F935041CDCCCCFCAA4A55415C8FC2F59E935041B81E854BB44A554189E0A7879E93504155981BD0C14A554134145E8B9F93504195C908C1C24A55414C59FFDCA2935041E7B69CA0C34A5541701A7430A393504105867E15C44A554114AE47F1A59350415C8FC2C5C44A5541CDCCCC5CA893504152B81E85C94A5541653CFDA6A993504180E442FBCB4A5541B54F031FAA935041CFA8277ECC4A55410F892E8EAC935041EA9D2A75CC4A55411F85EB51AE9350418FC2F5A8CB4A5541AE47E13AB293504100000020CC4A554185DF6792B393504122DE9846CD4A554198C9B6F6B3935041F676FE60CD4A55419EFF1D9CB6935041BA0E577ECF4A55412A153CC1B693504186925E01D04A55417B14AE17B8935041713D0A27D14A55418F489C17BA93504195564CCDD44A5541E2908FD0BC9350416C67923AD44A554158A7B771C0935041382F4B55D14A5541BD7CA222C39350419A5773A2CF4A554174BDF38FC39350411AE511CFCE4A5541CDCCCCACC0935041C3F5284CCC4A5541F6285CEFBF9350411F85EB51CA4A5541D7A3706DC09350418FC2F5E8C74A5541A4703D9AC193504185EB51F8C74A554152B81E55C3935041000000F0CA4A55416752D939C5935041B7E508DDCC4A5541C316C485C5935041AA014D9DCC4A5541C42CAA7CC6935041A2CD7EFECC4A5541B439A04EC793504168A4A010CE4A554107F05917C89350410885D0FFCE4A55413D0AD783C993504133333373CF4A5541B81E855BCC935041AE47E17AD24A5541109D0E5FCE935041476AAC0AD54A55412C2F070FCF9350416293C2C2D54A5541E306178DD1935041A3DF7BABD84A554146FB19DCD2935041CAB01221D94A554110B8E305D49350418F89AAD2D84A5541704CC33AD4935041711E2B60D74A55415C8FC245D3935041C3F528ECD64A55411965B5D8CE93504158AC25CCD04A554196610EC3CD9350419C52EF80CF4A5541EC51B80ECA935041B81E852BCA4A5541C061829AC5935041E9352479C34A5541D85AB4CDC393504132A68702C14A5541C46DCB1CC2935041809C6239BE4A554100000060BC9350418FC2F598B54A55410D00000033333303A8935041D7A3708DA44A5541D7A3701DAA935041A4703DBAA54A5541C3F5289CAA93504148E17AB4A74A5541295C8F42A893504100000060A94A554114AE47C1A8935041A4703D6AAB4A5541F6285C4FA993504148E17A54AD4A5541713D0A97A6935041295C8FF2AD4A5541B81E851BA59350417B14AE27AC4A55410AD7A350A39350410AD7A300A94A554148E17AE4A193504166666606A74A55413D0AD723A29350419A9999E9A54A5541C3F528DCA4935041C3F5280CA54A554133333303A8935041D7A3708DA44A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>766891 - 306493
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004D0000001F85EBD1D2145141F6285C7F2CAF5441000000B0DC145141295C8F0227AF5441A4703D2AE81451413D0AD70323AF5441B81E85FBEF145141CDCCCC4C21AF54417B14AE47F81451418FC2F58820AF5441D7A3706D0115514185EB51881FAF544152B81E9510155141000000D01AAF5441666666F61E1551413333332315AF54415C8FC2A5251551410AD7A38013AF5441EC51B86E2D155141C3F5286C14AF5441E17A144E351551416666664614AF5441333333F33C155141333333F314AF5441713D0AA744155141B81E850B15AF5441AE47E16A5415514185EB513813AF544152B81ED56315514152B81EA510AF544148E17AA46B15514185EB51A80EAF54410AD7A300761551411F85EB310BAF54416666664674155141D7A370AD06AF5441EC51B86E6C15514148E17AF407AF54419A9999895F1551411F85EB510BAF54410AD7A3505F15514148E17AF408AF5441C3F528EC5C155141713D0A07FCAE54411F85EBC15C155141A4703D9AFAAE54410AD7A3704F155141295C8FA2FBAE5441D7A370ED4715514185EB51B8FCAE5441E17A141E45155141EC51B83EFEAE5441A4703D7A3A15514152B81E55FFAE544114AE47212D155141AE47E12A00AF5441D7A370AD211551410AD7A31001AF5441713D0A67101551410000009003AF54418FC2F538F7145141CDCCCCBC07AF5441CDCCCCACF614514114AE47C10CAF5441D7A3708DEA14514185EB511813AF5441E17A140EDB1451416666661619AF5441C3F5289CE914514114AE47D11AAF544148E17AF4F514514114AE47B118AF54419A44BD5AF614514104C553C519AF54412D663AC7F71451416AFB53AA19AF544178C4B492FA14514104D5543E19AF5441BD9AAEA1FD1451414288566618AF54414114A95F00155141E1E9D7B617AF54415357A33803155141814B590717AF5441A8C51E7D05155141F2915A6516AF5441C0A09A8B0715514125355B1416AF5441E80397560915514163D85BC315AF54413372129B0B1551415E60DC7F15AF54413F0D8AC50F15514163F85DB514AF5441958B0683111551416980DE7114AF54417F3B012614155141DAC6DFCF13AF5441DA51FF1815155141A2AB5FDD13AF5441B876830A13155141D52E5E9A14AF5441179A8C810E155141C496DC6415AF5441D74B132F0B1551415E50DB0616AF54418775192008155141F2915A6516AF5441B4F521E803155141E771587317AF5441D565293700155141751B569C18AF5441076EB2BBFB1451413768547419AF544128DEB90AF81451416563D2741AAF54413D0AD733E91451417B14AE271FAF544100000090DE145141F6285C1F22AF544133333323D0145141CDCCCCBC24AF5441F6285C6FC61451419A9999C928AF5441EC51B8BEBC145141CDCCCCBC2BAF5441E17A14DEB51451418FC2F5382CAF544152B81E25AA1451419A9999692BAF5441E17A146EA01451418FC2F5882AAF5441713D0AC7941451415C8FC21529AF5441D7A3706D8E14514114AE47612AAF5441333333438B145141C3F528EC2CAF5441D7A3701DA414514152B81EC52FAF5441E17A14FEAB145141333333F32CAF5441B81E857BB3145141EC51B82E2DAF54411F85EBF1B8145141EC51B8AE2DAF5441CDCCCC1CBC14514185EB51182FAF544148E17A84C11451415C8FC2D52FAF54413D0AD773C914514114AE471130AF54411F85EBD1D2145141F6285C7F2CAF5441
+</a>
+
+<b>
+0106000000010000000103000000010000005400000005B19270AF145141D603980E2DAF544176FA857BB3145141138CB72E2DAF54411F85EBF1B8145141EC51B8AE2DAF5441CDCCCC1CBC14514185EB51182FAF544148E17A84C11451415C8FC2D52FAF54413D916D32C7145141518B5C0030AF54417FFBD773C9145141A049471130AF54416ECAECD1D2145141A7295B7F2CAF5441C5C31669D5145141CE378F0E2BAF5441000000B0DC145141295C8F0227AF5441A4703D2AE81451413D0AD70323AF5441B81E85FBEF145141CDCCCC4C21AF54417B14AE47F81451418FC2F58820AF5441D12ED589FA145141D83F994920AF544142CD716D01155141EE0651881FAF5441070DB93606155141EC28B50A1EAF544152B81E9510155141000000D01AAF5441666666F61E1551413333332315AF54415C8FC2A5251551410AD7A38013AF544150E765592B1551412458222D14AF5441B005B96E2D155141FA91286C14AF5441854F53CC301551418251045C14AF5441E17A144E351551416666664614AF5441E238740838155141D3C00F8414AF54414FA532F33C155141B47532F314AF544123266EC643155141F9EEBF0815AF5441713D0AA744155141B81E850B15AF5441AE47E16A5415514185EB513813AF54414D86A11463155141B93B46C510AF5441D7521FD563155141FA901EA510AF544148E17AA46B15514185EB51A80EAF54411A6715836F1551414D073E5D0DAF5441FD79A2007615514191FEEA310BAF54416E3D39F074155141718C896908AF54416666664674155141D7A370AD06AF544172DE7DBB6F155141FD10DF6A07AF5441A093B96E6C15514119A37BF407AF5441745EA1EC6515514157A540A709AF54419A9999895F1551411F85EB510BAF54410AD7A3505F15514148E17AF408AF54410C00EFFE5E155141F000FE3A07AF5441288A27EC5C1551419B040A07FCAE54410D97EAC15C1551412DD83E9AFAAE54419052A4704F1551411C6490A2FBAE5441FE54AF784B1551415C504A35FCAE5441D7A370ED4715514185EB51B8FCAE54419EF15A9A46155141E5C55770FDAE5441F978151E45155141F4A2B83EFEAE5441D5253E7A3A155141B0741F55FFAE5441E81A0324301551416B04AAFAFFAE544114AE47212D155141AE47E12A00AF544137333A992B1551417AA39A4900AF544101AD71AD21155141262AA51001AF5441087FB7E815155141D7DC32C402AF5441713D0A67101551410000009003AF54418FC2F538F7145141CDCCCCBC07AF5441CDCCCCACF614514114AE47C10CAF5441D7A3708DEA14514185EB511813AF5441BE16150EDB145141212A661619AF54411022BA38E01451417AF29BB319AF5441C3F5289CE914514114AE47D11AAF544148E17AF4F514514114AE47B118AF54419A44BD5AF614514104C553C519AF5441333333B3F6145141C3F5280C1BAF544114A0DAA9F014514188D36EE21CAF5441552BD733E9145141802DAF271FAF544127D8FF8FDE145141AA645D1F22AF5441A4F57DA7D01451416F59D1A424AF5441B38C7C72D0145141ED3E6DAE24AF544106D23323D014514102B0CCBC24AF5441DF765B6FC61451415EAC9AC928AF54410D36B7BEBC14514147A0CDBC2BAF54411A0815DEB51451412989F6382CAF544173DB1D25AA14514148B29A692BAF5441866E1BF7A2145141F53795C32AAF5441E17A146EA01451418FC2F5882AAF5441713D0AC7941451415C8FC21529AF5441D7A3706D8E14514114AE47612AAF5441333333438B145141C3F528EC2CAF5441935F141BA4145141487CD9C42FAF5441EB86711DA4145141688F1DC52FAF54410826B3E3A7145141BE7E376B2EAF5441E17A14FEAB145141333333F32CAF544105B19270AF145141D603980E2DAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 528843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE857754410ADC9BE3F2065141E3587D487E77544160019617F70651412106A9D77777544179742F1AF80651410B5E95497677544122081505FA065141510AEB557377544114AE474100075141CDCCCCBC697754416A155842010751412801C33D6877544152B81E050007514133333383677754410ED497EBFC0651413B93C4FC65775441388F7A42FC06514113A4C5BA657754417961B33DF9065141AE56C2666B775441D7A370CDF8065141C3F5283C6C775441C9187A52F70651418EC33F716E77544148E17AC4EF06514152B81EB5797754419ABE997BED0651410701C4EB7C7754414EF36572ED065141D38F1CF97C775441F6285CDFEB065141EC51B84E7F77544136FFDF8FE9065141EF85729B8277544172525776E60651418521FB89877754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C7754418EA66D0DE1065141D86D45878F775441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000295C8F4201075141D7A3703D6877544152B81E05000751413333338367775441295C8F42FC0651419A9999A965775441D7A370CDF8065141C3F5283C6C77544148E17AC4EF06514152B81EB5797754417B14AE77ED06514114AE47F17C775441F6285CDFEB065141EC51B84E7F7754419A999959E90651418FC2F5E8827754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C775441C3F5286CE00651418FC2F56890775441713D0A47DC065141295C8FE2957754419A999939D80651411F85EBC19A775441D7A370BDD7065141713D0A579B7754413D0AD7B3D60651415C8FC2959C775441D7A3703DD50651419A9999299E7754410AD7A330D4065141CDCCCC9C9F77544152B81EB5D306514114AE4761A07754410AD7A350D3065141D7A3708DA2775441A4703DCAD3065141333333D3A3775441F6285C9FD4065141F6285CAFA4775441AE47E12AD80651418FC2F518A6775441F6285CCFD806514185EB51C8A777544152B81EF5D90651411F85EB11A677544114AE4711DF065141713D0A979D775441EC51B81EE6065141D7A3706D927754417B14AEC7ED065141EC51B8EE8577544152B81E95F3065141EC51B83E7D77544114AE474100075141CDCCCCBC69775441295C8F4201075141D7A3703D68775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 529243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE857754410ADC9BE3F2065141E3587D487E77544160019617F70651412106A9D77777544179742F1AF80651410B5E95497677544122081505FA065141510AEB557377544114AE474100075141CDCCCCBC697754416A155842010751412801C33D6877544152B81E050007514133333383677754410ED497EBFC0651413B93C4FC65775441388F7A42FC06514113A4C5BA657754417961B33DF9065141AE56C2666B775441D7A370CDF8065141C3F5283C6C775441C9187A52F70651418EC33F716E77544148E17AC4EF06514152B81EB5797754419ABE997BED0651410701C4EB7C7754414EF36572ED065141D38F1CF97C775441F6285CDFEB065141EC51B84E7F77544136FFDF8FE9065141EF85729B8277544172525776E60651418521FB89877754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C7754418EA66D0DE1065141D86D45878F775441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000295C8FE2FD065141666666D678775441295C8F42010751415C8FC21573775441000000A005075141AE47E1DA6B7754419A99991906075141666666666B775441295C8F4201075141D7A3703D6877544114AE474100075141CDCCCCBC6977544152B81E95F3065141EC51B83E7D7754417B14AEC7ED065141EC51B8EE85775441EC51B81EE6065141D7A3706D9277544114AE4711DF065141713D0A979D7754417B14AE27E7065141D7A370FDA07754417B14AEE7F306514100000090A67754411F85EB81FF0651415C8FC2458F77544152B81EC5FB065141666666E686775441F6285C0FF906514114AE477181775441295C8FE2FD065141666666D678775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 1015427
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE857754410ADC9BE3F2065141E3587D487E77544160019617F70651412106A9D77777544179742F1AF80651410B5E95497677544122081505FA065141510AEB557377544114AE474100075141CDCCCCBC697754416A155842010751412801C33D6877544152B81E050007514133333383677754410ED497EBFC0651413B93C4FC65775441388F7A42FC06514113A4C5BA657754417961B33DF9065141AE56C2666B775441D7A370CDF8065141C3F5283C6C775441C9187A52F70651418EC33F716E77544148E17AC4EF06514152B81EB5797754419ABE997BED0651410701C4EB7C7754414EF36572ED065141D38F1CF97C775441F6285CDFEB065141EC51B84E7F77544136FFDF8FE9065141EF85729B8277544172525776E60651418521FB89877754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C7754418EA66D0DE1065141D86D45878F775441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000295C8FE2FD065141666666D678775441295C8F42010751415C8FC21573775441000000A005075141AE47E1DA6B7754419A99991906075141666666666B775441295C8F4201075141D7A3703D6877544114AE474100075141CDCCCCBC6977544152B81E95F3065141EC51B83E7D7754417B14AEC7ED065141EC51B8EE85775441EC51B81EE6065141D7A3706D9277544114AE4711DF065141713D0A979D7754417B14AE27E7065141D7A370FDA07754417B14AEE7F306514100000090A67754411F85EB81FF0651415C8FC2458F77544152B81EC5FB065141666666E686775441F6285C0FF906514114AE477181775441295C8FE2FD065141666666D678775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 3833269
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE857754410ADC9BE3F2065141E3587D487E77544160019617F70651412106A9D77777544179742F1AF80651410B5E95497677544122081505FA065141510AEB557377544114AE474100075141CDCCCCBC697754416A155842010751412801C33D6877544152B81E050007514133333383677754410ED497EBFC0651413B93C4FC65775441388F7A42FC06514113A4C5BA657754417961B33DF9065141AE56C2666B775441D7A370CDF8065141C3F5283C6C775441C9187A52F70651418EC33F716E77544148E17AC4EF06514152B81EB5797754419ABE997BED0651410701C4EB7C7754414EF36572ED065141D38F1CF97C775441F6285CDFEB065141EC51B84E7F77544136FFDF8FE9065141EF85729B8277544172525776E60651418521FB89877754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C7754418EA66D0DE1065141D86D45878F775441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000295C8FE2FD065141666666D678775441295C8F42010751415C8FC21573775441000000A005075141AE47E1DA6B7754419A99991906075141666666666B775441295C8F4201075141D7A3703D6877544114AE474100075141CDCCCCBC6977544152B81E95F3065141EC51B83E7D7754417B14AEC7ED065141EC51B8EE85775441EC51B81EE6065141D7A3706D9277544114AE4711DF065141713D0A979D7754417B14AE27E7065141D7A370FDA07754417B14AEE7F306514100000090A67754411F85EB81FF0651415C8FC2458F77544152B81EC5FB065141666666E686775441F6285C0FF906514114AE477181775441295C8FE2FD065141666666D678775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>821736 - 3311374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000500000001030000000100000010000000E17A149E31DE50418FC2F5F8CC29544185EB511846DE5041C3F528BCD12954410AD7A3004CDE504148E17A24F7295441AE47E1DA5BDE5041B81E85EBF32954419A9999B95BDE5041F6285C9FE42954411F85EB015DDE5041EC51B82ED8295441000000F05CDE504185EB51B8D129544152B81E555CDE504114AE4751CB295441AE47E1DA5BDE5041000000F0C7295441333333F35BDE5041F6285C0FC329544152B81E6549DE5041C3F5289CBB295441713D0AD74CDE5041E17A146EB529544148E17A9430DE5041666666B6AB295441000000802EDE5041AE47E17AC5295441713D0AF72DDE5041F6285C1FCC295441E17A149E31DE50418FC2F5F8CC2954410103000000030000007A00000048E17A446EDE50413D0AD7B3B529544152B81EB571DE504148E17A14BD295441EC51B8EE75DE5041AE47E1FABF2954417B14AE9778DE5041EC51B84EC1295441AE47E15A7FDE5041EC51B82EC42954416666669685DE5041B81E858BC629544114AE47018BDE5041F6285CAFC82954417B14AE8791DE5041A4703DCACA295441AE47E1CA93DE5041333333A3CB295441713D0AD795DE5041EC51B83ECE29544148E17AE496DE5041D7A370FDCE2954417B14AE979FDE504148E17A74D2295441D7A3708DA0DE50410AD7A300D329544166666616A1DE50417B14AEA7D3295441CDCCCC5CA1DE50411F85EBA1D4295441A4703D0AA2DE504185EB5148D8295441D7A3705DA2DE504185EB5128DA29544133333393A2DE5041295C8F32DE29544185EB5198A2DE50413D0AD7F3E02954413D0AD7A3A2DE5041F6285CAFE2295441713D0AD7A2DE5041AE47E1DAE829544148E17AE4A2DE50410AD7A3E0EB2954413D0AD7E3A2DE5041B81E85EBEE29544152B81E15ABDE5041AE47E14AEB295441F6285CAFB7DE504166666636E5295441E17A149EBEDE504148E17AB4E22954413D0AD7B3BDDE5041295C8F82E029544114AE47F1BCDE5041AE47E1BADE295441666666A6BCDE50413D0AD793DD295441C3F5281CBCDE504114AE47D1DB295441F6285C5FBCDE5041EC51B8FED929544152B81E85BDDE5041C3F528FCD52954411F85EB71BEDE50418FC2F508D2295441A4703D0ABFDE5041D7A3708DCE295441AE47E16ABFDE5041000000F0CA2954415C8FC255BFDE5041EC51B86EC9295441A4703DEABFDE50413D0AD753C529544152B81E65C0DE5041F6285C3FC1295441713D0A27BCDE504148E17A54C32954413D0AD703BADE5041713D0A67C4295441EC51B86EB6DE5041B81E853BC62954411F85EB11B3DE50418FC2F5D8C7295441EC51B86EB0DE50419A9999C9C8295441713D0A87AEDE5041EC51B88EC929544185EB5198ACDE50418FC2F558CA295441B81E859BABDE50419A9999A9CA295441000000F0A8DE504133333383CB295441B81E856BA1DE50418FC2F578CE29544166666626A1DE50418FC2F528CE29544166666676A3DE504133333333CD2954410AD7A340A5DE50410AD7A3A0CC295441CDCCCC0CA7DE50417B14AEE7CB295441AE47E1FAA8DE504114AE4731CB295441EC51B86EABDE5041D7A3701DCA295441AE47E16AACDE5041E17A14CEC9295441713D0A87AEDE5041D7A370FDC829544114AE4741B0DE50419A999949C8295441D7A370DDB2DE5041E17A144EC7295441CDCCCC4CB6DE5041C3F528BCC5295441713D0AD7B9DE50410AD7A300C4295441C3F528ECBBDE5041000000E0C22954411F85EB71C0DE5041F6285C5FC029544185EB51C8C0DE5041713D0AE7BD2954415C8FC2A5C0DE5041000000F0BC2954417B14AE57C0DE5041EC51B81EBC29544148E17AE4BFDE50415C8FC255BB29544152B81E85BEDE504148E17A14BA29544148E17A24BDDE504133333363B92954411F85EB91B8DE5041C3F5280CB8295441E17A14CEB4DE5041D7A370FDB62954410AD7A3E0B3DE5041713D0A87B62954411F85EBA1B2DE5041B81E858BB52954413D0AD753B2DE504166666676B42954415C8FC205B2DE504133333363B229544148E17AB4B1DE50415C8FC2C5AF29544152B81E35B1DE5041295C8F82AA29544185EB51F8B0DE504100000070A9295441E17A14AEB0DE5041D7A3707DA8295441AE47E12AB0DE5041000000D0A6295441B81E856BAEDE5041713D0A77A32954418FC2F548ADDE5041295C8FE2A1295441A4703DEAABDE504148E17A74A0295441713D0AF7AADE504185EB51E89F29544133333313A8DE50419A9999B99E295441C3F5285CA6DE5041295C8FF29D295441EC51B81EA4DE504185EB51E89C295441AE47E17AA2DE5041B81E85FB9B2954419A999949A1DE50418FC2F5E89A295441B81E85BBA0DE5041000000309A2954418FC2F528A0DE5041E17A14AE98295441B81E852B9FDE5041EC51B84E9A2954419A9999099EDE504185EB51D89B295441F6285C4F9DDE50417B14AE679C295441EC51B82E9CDE50411F85EBB19D295441A4703DFA9ADE5041D7A370BD9E2954411F85EBE199DE50418FC2F5789F295441E17A14CE98DE504133333353A02954413D0AD7D397DE5041AE47E1EAA0295441333333C396DE50419A9999B9A129544148E17AE495DE5041D7A3705DA22954413333338395DE50418FC2F518A22954410AD7A39093DE504148E17AA4A4295441295C8FF291DE50411F85EBA1A6295441295C8F5290DE5041713D0A67A82954419A9999298CDE5041713D0AC7AC29544148E17AE489DE50411F85EB91AE295441D7A3703D88DE50417B14AEC7AF295441D7A370FD85DE504166666626B12954410AD7A35083DE5041B81E851BB22954418FC2F5C880DE50410AD7A3C0B22954419A9999D97FDE5041295C8F02B42954413D0AD7037EDE50418FC2F5C8B4295441000000A07BDE504148E17AA4B529544148E17AE479DE50419A9999A9B52954418FC2F5D877DE5041CDCCCCACB5295441000000C076DE504166666686B5295441A4703DBA75DE5041666666C6B52954415C8FC2B574DE50415C8FC235B6295441E17A145E73DE5041C3F5284CB72954419A99996972DE50415C8FC275B7295441C3F528BC71DE504185EB51F8B529544148E17A446EDE50413D0AD7B3B5295441100000001F85EB6184DE50419A9999F9B9295441CDCCCC8C84DE5041C3F5280CB92954411F85EBE184DE5041713D0AB7B72954417B14AEA784DE50410AD7A3E0B6295441E17A147E86DE5041CDCCCC9CB6295441EC51B8AE85DE5041C3F5285CB92954411F85EBC185DE5041295C8FC2BB295441EC51B84E85DE5041713D0A27BE295441CDCCCC2C88DE504185EB51F8BD295441D7A3707D88DE5041666666F6C22954418FC2F5E87FDE5041E17A146EC3295441000000A07FDE5041295C8F82BE295441E17A149E83DE5041295C8F42BE2954419A99998983DE50415C8FC205BD295441000000B083DE5041E17A148EBC2954411F85EB6184DE50419A9999F9B929544105000000E17A147E8EDE504152B81E35BF2954418FC2F51894DE50411F85EBE1BE2954416666667694DE5041F6285C0FC52954418FC2F5D88EDE50413D0AD763C5295441E17A147E8EDE504152B81E35BF29544101030000000100000010000000CDCCCC2C63DE504133333363B1295441AE47E12A62DE50413D0AD7C3B4295441C3F528FC5FDE504148E17AC4BC295441F6285CEF5DDE5041C3F5285CC32954413D0AD7C35DDE5041000000D0C7295441D7A3708D5EDE504133333323C7295441E17A148E60DE5041AE47E1AAC32954418FC2F5F861DE5041CDCCCC5CC229544148E17AD46BDE50419A999979BC295441000000E06DDE50415C8FC2E5BB295441713D0AF76FDE50411F85EB21BC295441295C8FF26CDE50419A999999B5295441666666566BDE5041A4703DEAB2295441295C8F6269DE504148E17A94B1295441295C8F6263DE5041AE47E1AAB0295441CDCCCC2C63DE504133333363B129544101030000000100000025000000D7A3703D6CDE5041CDCCCC5CBD2954411F85EB9162DE50410AD7A330C329544152B81E6561DE50418FC2F558C4295441AE47E18A5FDE5041B81E858BC729544185EB51485EDE5041B81E850BCB295441295C8FD25EDE50413D0AD7A3D1295441A4703DEA5EDE504166666636D8295441A4703DCA5DDE5041D7A370BDE32954410000009087DE5041C3F528CCDB2954411F85EB718DDE504166666696E92954417B14AE978DDE50419A999999EC295441E17A146E8FDE5041EC51B8FEF1295441CDCCCCBC91DE50418FC2F528F6295441000000D0A2DE5041E17A144EF2295441D7A3702DA2DE504114AE47D1EF2954410AD7A3E0A1DE5041EC51B8DEEB295441B81E85BBA1DE5041AE47E11AE729544152B81E85A1DE504100000080E2295441713D0A57A1DE504148E17AC4DC29544185EB5128A1DE5041A4703D1ADA295441E17A142EA1DE50418FC2F568D82954419A999979A0DE50411F85EBC1D4295441EC51B80EA0DE50410AD7A3E0D32954415C8FC2359FDE5041E17A143ED32954415C8FC27596DE504114AE47E1CF2954413333338395DE504148E17A34CF2954410000006093DE5041713D0AA7CC29544114AE478192DE504185EB5128CC295441C3F528AC8ADE5041EC51B88EC9295441F6285C1F85DE5041D7A3707DC7295441EC51B8CE7EDE5041B81E853BC5295441333333C379DE5041666666C6C22954417B14AE7775DE50411F85EBD1C02954419A99993971DE5041EC51B8DEBD29544185EB51A86FDE5041A4703D1ABD295441D7A370FD6DDE5041D7A370EDBC295441D7A3703D6CDE5041CDCCCC5CBD295441010300000001000000670000009A9999C9B3DE50413D0AD7238B295441B81E858BB2DE50417B14AEE78B295441EC51B8FEB0DE5041EC51B8FE8C2954417B14AE47AFDE5041295C8FD28D295441CDCCCCFCADDE504152B81E258F295441D7A3702DADDE5041EC51B8AE8F295441E17A14DEAADE5041A4703DDA90295441F6285CCFA8DE50418FC2F50892295441295C8F42A7DE5041D7A3701D932954411F85EBA1A5DE5041E17A14EE94295441A4703DAAA4DE50418FC2F5D8952954411F85EBC1A3DE5041295C8F72962954411F85EBD1A2DE504114AE47C196295441EC51B8FEA1DE504152B81E359729544100000020A1DE5041666666069829544152B81EC5A0DE5041CDCCCC2C9829544152B81E65A1DE504114AE47D199295441713D0AD7A1DE50415C8FC2659A295441B81E85EBA2DE5041EC51B85E9B29544166666676A4DE5041D7A3703D9C295441C3F528ACA6DE50413D0AD7439D295441F6285C5FA8DE50418FC2F5089E2954410AD7A340ABDE5041295C8F429F29544166666676ABDE5041000000609F2954413D0AD763ACDE5041000000E09F295441CDCCCCDCADDE50417B14AE67A1295441F6285C0FAFDE50411F85EB11A3295441D7A370DDB0DE5041713D0A87A62954411F85EBB1B1DE5041F6285C3FA9295441333333F3B1DE504148E17A64AA29544133333373B2DE504114AE47B1AF2954413D0AD7C3B2DE50419A999949B229544100000010B3DE5041E17A144EB42954419A999949B3DE5041B81E851BB529544185EB5148B4DE50413D0AD7E3B529544133333313B5DE50419A999949B6295441713D0AC7B8DE50413D0AD753B7295441AE47E16ABDDE5041000000B0B8295441333333F3BEDE504152B81E75B9295441C3F5287CC0DE5041C3F528DCBA2954415C8FC205C1DE5041CDCCCCCCBB29544114AE4761C1DE50410AD7A3C0BC295441A4703D8AC1DE5041713D0AE7BD29544114AE4731C1DE50411F85EB71C029544148E17A24C1DE504100000050C129544166666616C0DE50415C8FC275C9295441B81E852BC0DE504148E17AF4CA29544185EB51C8BFDE50417B14AEA7CE295441E17A142EBFDE5041F6285C2FD2295441EC51B83EBEDE5041CDCCCC2CD6295441B81E851BBDDE5041713D0A27DA295441000000E0BCDE50413D0AD7C3DB295441D7A3704DBDDE5041295C8F42DD295441666666A6BDDE5041A4703D7ADE29544148E17A64BEDE50417B14AE37E02954411F85EB61BFDE50413D0AD793E22954413D0AD733C6DE50418FC2F538E02954411F85EB71C6DE5041AE47E12AE02954419A9999B9D5DE504185EB51A8DC295441D7A370CDD4DE5041295C8FA2CF295441EC51B89EC9DE5041E17A14CECA295441295C8F32C2DE5041A4703D4ABF29544152B81EF5C3DE50413D0AD713BC295441E17A14DEC9DE50413D0AD783BA2954417B14AEE7D2DE5041713D0AF7B72954419A999969DDDE5041713D0A07B52954417B14AE07E0DE5041F6285CAFAF2954417B14AEF7E1DE5041D7A370DDAD2954418FC2F518E4DE5041D7A3706DAC295441F6285CBFE7DE50415C8FC265AB2954413D0AD713ECDE504100000080A929544148E17A24EEDE504100000050A8295441B81E85CBF4DE50418FC2F5F8A6295441295C8F72F6DE50417B14AE27A9295441B81E854BF9DE504133333323A9295441713D0A97FCDE5041CDCCCCCCA62954413D0AD793FCDE50415C8FC2E5A52954417B14AE97FADE5041713D0A87A3295441B81E852BF9DE5041713D0AE79F2954419A9999B9F6DE5041C3F5284C9C295441666666A6F2DE5041000000E0942954410AD7A380EFDE5041295C8FA29329544185EB5188EDDE50415C8FC22592295441666666E6E8DE5041E17A149E8F29544100000070E5DE50417B14AE578E2954415C8FC2D5E2DE5041F6285C1F8D295441713D0A37DEDE50410AD7A3B08B29544100000070DADE5041713D0A378A295441A4703D0AD5DE50416666669685295441A4703D6AD2DE5041295C8F52822954418FC2F528D2DE50419A9999F981295441AE47E1BAD0DE504148E17A1482295441A4703D1ACCDE5041AE47E11A8129544114AE4731C6DE5041AE47E1FA822954411F85EBF1C1DE5041295C8F8284295441713D0A37BFDE50410AD7A3108629544148E17A94BDDE504152B81ED58629544133333313BCDE5041F6285C9F87295441E17A145EBADE5041EC51B84E882954419A999919B8DE5041CDCCCC3C89295441A4703D4AB6DE5041D7A3709D8929544148E17A14B5DE5041B81E858B8A2954419A9999C9B3DE50413D0AD7238B295441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000BFAFCFA6B2DE5041F666755AB129544148E17AB4B1DE50415C8FC2C5AF29544152B81E35B1DE5041295C8F82AA29544185EB51F8B0DE504100000070A9295441E17A14AEB0DE5041D7A3707DA8295441AE47E12AB0DE5041000000D0A6295441B81E856BAEDE5041713D0A77A32954418FC2F548ADDE5041295C8FE2A1295441A4703DEAABDE504148E17A74A0295441713D0AF7AADE504185EB51E89F295441D3476CC89DDE50411B342389A0295441EC8EDC1898DE5041A1B14D25A4295441A7E429C496DE5041E381FBA0A6295441029B65EC93DE50413D34A6B0AA29544100D74D938BDE504104E6F673B8295441EB7FD4A48EDE5041CB696EF3BE2954411AA3AE3797DE50414BDD53DCBE295441E243ECFD96DE5041C14A4C93C029544179721F8E94DE5041BD7CB6EFC0295441F349D92F95DE5041127A008AC5295441F430A40195DE50417F9C59B6C629544165A22DD18FDE504139BAA063C7295441128CAE088BDE5041F9731358C729544114AE47018BDE5041F6285CAFC82954413FC8BDC993DE5041513FF395CB295441713D0AD795DE5041EC51B83ECE29544148E17AE496DE5041D7A370FDCE2954417B14AE979FDE504148E17A74D2295441D7A3708DA0DE50410AD7A300D329544166666616A1DE50417B14AEA7D3295441CDCCCC5CA1DE50411F85EBA1D4295441A4703D0AA2DE504185EB5148D8295441D7A3705DA2DE504185EB5128DA29544133333393A2DE5041295C8F32DE29544185EB5198A2DE50413D0AD7F3E02954413D0AD7A3A2DE5041F6285CAFE2295441713D0AD7A2DE5041AE47E1DAE829544148E17AE4A2DE50410AD7A3E0EB2954413D0AD7E3A2DE5041B81E85EBEE29544154524995A9DE5041308D96BAE9295441AB1998BAB4DE5041ED953952E3295441F8484CB1B9DE5041D15B86AADF295441A9E39C45BBDE5041E9FD9E23DD29544120EDC043BCDE5041BABDFE49DB295441056453E2BCDE5041A8B7B5B3DB295441B81E851BBDDE5041713D0A27DA295441EC51B83EBEDE5041CDCCCC2CD6295441E17A142EBFDE5041F6285C2FD229544185EB51C8BFDE50417B14AEA7CE295441B81E852BC0DE504148E17AF4CA29544166666616C0DE50415C8FC275C929544148E17A24C1DE504100000050C129544114AE4731C1DE50411F85EB71C029544170C18061C1DE50416C321811BF29544185EB51C8C0DE5041713D0AE7BD295441D6024F2BC0DE50419AA591BBBD29544161100F16BFDE50419B09378FBC295441D9CA99D2BDDE504112C4C14BBB295441158C8404BCDE50419DD18136BA295441C8A3541FBADE50414F85AC7DB92954411F85EB91B8DE5041C3F5280CB829544183263FC9B6DE50413DBCA4C4B629544133333313B5DE50419A999949B629544185EB5148B4DE50413D0AD7E3B52954419A999949B3DE5041B81E851BB529544100000010B3DE5041E17A144EB42954413D0AD7C3B2DE50419A999949B2295441BFAFCFA6B2DE5041F666755AB1295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985412 - 2506896
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000D074C32448EF504190C8DEF9A9785441F4B01E4B50EF5041B6128054A6785441CAC7333157EF50416ED81626A3785441DBDEDC7557EF5041909D50D8A278544109B283B75EEF50418A5BD7F89B7854417250B3ED65EF50419DF3088897785441FE5C0A3F75EF50419EDD8EA790785441CE2DAE107CEF50419553BFF78D7854411BC197878BEF5041D0595686897854411F1C9D1E92EF50412F27219486785441968C54A0A1EF504135DF11A58178544123C1E93DA4EF5041D58943877F785441B64BBF7A91EF5041F389F09F7C7854418CE0F44B91EF50411A6A97867C785441CE89860290EF504168D7E6198178544119D85E9389EF5041254CF6747F785441FEAF638474EF50411652AC028278544111C7B5D469EF50412AB8268083785441E0FCFB2561EF5041A95846F4847854419AB545495CEF50412864E21887785441154F51B358EF5041BD9179AD887854414B0D997157EF5041285DF83489785441A8F95DBF52EF5041AA31CA3C8A78544142DD95F64FEF50411506F3478A785441B1746D7C4DEF5041E58917178A785441679AADE948EF50413AC723688978544167D0F0F145EF50414B5B17F78878544108A5394D45EF504106EF9D549278544113EBD18A45EF50416D27F4909878544100D4BCF045EF5041FC7B2D389D785441F1A44CB346EF5041B6EBD6E4A1785441AA0BFE1648EF50417B716435AA785441D074C32448EF504190C8DEF9A9785441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A775CEF50413D0AD793657854413333335342EF5041EC51B86E60785441295C8FE23FEF5041CDCCCC4C607854415C8FC2653EEF5041295C8FA261785441000000C03AEF5041EC51B8FE65785441E17A146E36EF5041295C8F226D785441C3F528EC30EF5041C3F528CC777854415C8FC23530EF504185EB51C87A78544152B81EB531EF5041F6285C3F847854410000002039EF50418FC2F5C886785441A4703D5A3FEF5041F6285C5F87785441F6285C3F44EF50410000003088785441C3F5282C46EF50418FC2F5E888785441B81E855B4BEF50419A9999D9897854418FC2F5084FEF50413D0AD7438A785441C3F5285C52EF5041295C8F528A785441E17A148E57EF5041EC51B82E89785441295C8F4261EF50417B14AEE784785441E17A144E5CEF5041AE47E14A75785441666666365AEF5041295C8F3270785441713D0A775CEF50413D0AD79365785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985412 - 5239180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000D074C32448EF504190C8DEF9A9785441F4B01E4B50EF5041B6128054A6785441CAC7333157EF50416ED81626A3785441DBDEDC7557EF5041909D50D8A278544109B283B75EEF50418A5BD7F89B7854417250B3ED65EF50419DF3088897785441FE5C0A3F75EF50419EDD8EA790785441CE2DAE107CEF50419553BFF78D7854411BC197878BEF5041D0595686897854411F1C9D1E92EF50412F27219486785441968C54A0A1EF504135DF11A58178544123C1E93DA4EF5041D58943877F785441B64BBF7A91EF5041F389F09F7C7854418CE0F44B91EF50411A6A97867C785441CE89860290EF504168D7E6198178544119D85E9389EF5041254CF6747F785441FEAF638474EF50411652AC028278544111C7B5D469EF50412AB8268083785441E0FCFB2561EF5041A95846F4847854419AB545495CEF50412864E21887785441154F51B358EF5041BD9179AD887854414B0D997157EF5041285DF83489785441A8F95DBF52EF5041AA31CA3C8A78544142DD95F64FEF50411506F3478A785441B1746D7C4DEF5041E58917178A785441679AADE948EF50413AC723688978544167D0F0F145EF50414B5B17F78878544108A5394D45EF504106EF9D549278544113EBD18A45EF50416D27F4909878544100D4BCF045EF5041FC7B2D389D785441F1A44CB346EF5041B6EBD6E4A1785441AA0BFE1648EF50417B716435AA785441D074C32448EF504190C8DEF9A9785441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A775CEF50413D0AD793657854413333335342EF5041EC51B86E60785441295C8FE23FEF5041CDCCCC4C607854415C8FC2653EEF5041295C8FA261785441000000C03AEF5041EC51B8FE65785441E17A146E36EF5041295C8F226D785441C3F528EC30EF5041C3F528CC777854415C8FC23530EF504185EB51C87A78544152B81EB531EF5041F6285C3F847854410000002039EF50418FC2F5C886785441A4703D5A3FEF5041F6285C5F87785441F6285C3F44EF50410000003088785441C3F5282C46EF50418FC2F5E888785441B81E855B4BEF50419A9999D9897854418FC2F5084FEF50413D0AD7438A785441C3F5285C52EF5041295C8F528A785441E17A148E57EF5041EC51B82E89785441295C8F4261EF50417B14AEE784785441E17A144E5CEF5041AE47E14A75785441666666365AEF5041295C8F3270785441713D0A775CEF50413D0AD79365785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985468 - 26757
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000390000003610C2ADD0AB50416081A5CD63D4544151898580D1AB5041BAC7454265D454410822F989D8AB50416AC2AD4A6FD45441316F077ADCAB5041D0E54CA974D45441FA813F31DEAB5041562E79F876D4544195ED3B16DFAB5041F19975DD77D454415DB967D8E1AB50415CA3EF727AD45441BA2BD5EDE3AB50415E359A667CD454419C0C938BE4AB50415D40DCEA7CD4544196381947EAAB504131A7CE7981D45441BC630189ECAB5041A9A709FD82D454411004D668EEAB50411BE5F2DA83D45441AEA887B7F0AB5041163F99AF84D45441577B0A16F1AB5041386FADD084D4544174866614F3AB504171CFD51285D45441AB297086F8AB50417E3295D485D454418FC2F568FBAB5041D7A3703D86D454414E79E7B002AC5041379642F787D45441A94EB63504AC5041B779B56088D4544197B64F8807AC5041081FBB1D89D454410140B60F0AAC5041D221529D89D45441AE7112AA19AC5041DF1D910964D454417627BA6617AC504197B791AC62D45441F0330AE414AC50414B4801D460D45441B317250F12AC50416038419C5ED45441432429EA10AC5041B929FAAF5DD454411E53529D0EAC50418952BABB5BD4544189D7DA5E0DAC5041CCDF42A45AD4544115918E0F09AC50412FB6CCC156D45441E340FA2806AC50413AD3680454D454414FA53C6604AC504183E04F4C52D454414A21956D03AC5041A0B3034951D45441554B4FCBFCAB50412B9C7F7949D4544145D1839EF9AB504142F8219945D454413EACFC9DF6AB50419A9792B441D45441C5341AF2F4AB5041CF218B5D3FD454417BD704F1F4AB50413010D56A3FD454419F2F43E2F4AB504148315E473FD4544139A36BC8F4AB5041BA9130233FD45441847982A4EEAB504156BE5CF83FD454412FB5DBB9EBAB5041248F536040D45441FB38DE61E3AB50412CE4697241D45441AD6BBC81E1AB5041C73F9A9F41D454415B5F9EDCDDAB50416253940342D45441D6965C07DDAB5041E785E61B42D4544143FC1287D8AB5041918894D242D4544145C3D7B2D6AB504166FA812543D4544152093EC4D5AB5041B5B8754343D45441C7ED6335D4AB5041917FAF8343D4544148FDED60D2AB504189E35F3E44D45441417DD993CEAB5041CA6A4BD245D45441A5DFE671CEAB5041AFD762E045D454412876DB22C8AB5041E945675348D4544157B7D92BC7AB5041D76B698349D45441D79B728BCCAB5041250CFBEA58D454410F8FE9EDCFAB5041D7FE952762D454413610C2ADD0AB50416081A5CD63D45441
+</a>
+
+<b>
+01060000000100000001030000000100000033000000C3F5284C0AAC5041E17A14AE8AD4544152B81E150AAC504148E17AA489D45441F6285C4F07AC50415C8FC22589D454418FC2F568FBAB5041D7A3703D86D45441D7A3700DF1AB5041B81E85CB84D45441F6285C6FEEAB504148E17AE483D45441B81E855BECAB5041B81E85DB82D4544148E17A54E5AB50410AD7A3A07DD45441A4703D4ADFAB50419A99992978D454419A9999F9DAAB5041AE47E1CA72D45441E17A142ED6AB5041B81E85FB6BD4544148E17AC4D1AB5041000000C065D454419A9999D9CFAB50413D0AD73362D454417B14AE57CBAB5041A4703D5A55D4544185EB51A8C8AB5041713D0AC74DD454411F85EB81C7AB504152B81EB54AD454410AD7A350C7AB5041D7A3705D49D4544152B81E15C8AB5041F6285C4F48D45441EC51B87ECCAB50415C8FC29546D45441F6285C5FCFAB50417B14AE8745D45441000000B0D3AB504152B81EB543D45441CDCCCC8CDBAB504152B81E4542D454415C8FC2A5E9AB5041C3F528BC40D45441CDCCCCDCF4AB5041A4703D3A3FD4544114AE4701F3AB504114AE47B13CD45441F6285C5FE9AB504114AE47313ED45441F6285C6FD7AB50415C8FC2753FD454415C8FC265D7AB5041F6285C2F3ED4544152B81EC5D4AB504152B81E853AD45441713D0A07D2AB50410AD7A3803BD45441D7A3706DC6AB5041000000F041D45441666666D6C6AB5041D7A3707D46D4544152B81EB5BFAB5041AE47E13A4CD454418FC2F588C0AB5041E17A14FE4CD454419A999909BFAB504152B81EC54FD45441EC51B8BEBDAB504114AE47B154D45441713D0AF7BDAB50419A99997957D454410AD7A360BFAB5041295C8FC258D45441D7A370DDC0AB50410AD7A3305CD45441713D0AA7C1AB5041D7A370CD5FD454418FC2F548C2AB5041295C8F326AD45441333333F3C2AB504185EB511873D45441CDCCCCFCC3AB50417B14AE7773D45441000000B0C9AB50413333338375D45441A4703DAAD6AB50413D0AD7E37AD454418FC2F538DCAB5041333333F37CD45441713D0AA7ECAB50410000005084D45441333333D3F0AB5041295C8FC285D45441295C8F32FBAB504148E17A3487D454419A99991907AC5041AE47E11A8AD45441C3F5284C0AAC5041E17A14AE8AD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985550 - 546758
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000091D41257D00251417588A6BE5B3B55414C2E6DF4C9025141C61F1ECC623B5541AD31FEABCD025141BE745D4C6C3B5541B6DA906CCE025141E284B3A46D3B55416D1DC9C1CF0251412502A37C703B554124600117D1025141BE8F94F9723B55411B2F843CD302514153B4916F763B55412C73633ED60251412D0633C0783B55412C73633ED6025141EB797104793B5541EBE6A182D60251415A0EB492783B5541006BE26BD6025141D6F5301B793B5541BCD61645D80251415E7770107A3B554110FFB151DC025141737049CF7A3B554140CF0341E3025141544964B97B3B5541D0F5121BE4025141708322987B3B55417D04F127E802514113AE5B84793B5541A0C6D4F1EA0251415A9C4D1D763B55410FA6C415EB025141EF2DB6E0743B554128E3652CEC02514192016406743B554162231039F0025141A96DFDB2743B5541DB1D303EF50251415E3E65A3743B554171DD7C54F9025141C8C62837733B5541154EC9A6FB0251417D790CE9713B55411F5DBF26F8025141A40B36F16D3B5541BD2D76B0F3025141952334E2683B554113B13328F202514182E17F25673B5541DD572279EF025141493D88F1623B5541FA20F070EA025141A0C22A30623B5541252ABE00E30251413A2EB9D4603B55415DF67083D7025141C701EFE85E3B55410FBE1C66D7025141EE2208125F3B554191D41257D00251417588A6BE5B3B5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3700DFF025141B81E859B743B5541C3F528BCFB02514114AE4701723B5541713D0A37F70251417B14AE47743B554100000030F402514148E17AD4743B5541AE47E1BAF2025141B81E85DB743B55418FC2F568E302514185EB5198823B5541C3F5281CEB02514114AE47118B3B5541D7A370EDED0251415C8FC2658E3B5541D7A370ADF30251419A9999D98F3B5541A4703D9AF80251417B14AEA78C3B5541713D0AF7FC025141A4703DEA883B55419A999969FE025141333333F3873B5541713D0A27FF0251419A9999F9873B5541713D0AA705035141A4703DDA823B55419A9999A906035141295C8FC2803B55415C8FC255060351417B14AE077E3B55419A9999C904035141B81E854B7B3B5541D7A3700DFF025141B81E859B743B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985550 - 1462170
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000091D41257D00251417588A6BE5B3B55414C2E6DF4C9025141C61F1ECC623B5541AD31FEABCD025141BE745D4C6C3B5541B6DA906CCE025141E284B3A46D3B55416D1DC9C1CF0251412502A37C703B554124600117D1025141BE8F94F9723B55411B2F843CD302514153B4916F763B55412C73633ED60251412D0633C0783B55412C73633ED6025141EB797104793B5541EBE6A182D60251415A0EB492783B5541006BE26BD6025141D6F5301B793B5541BCD61645D80251415E7770107A3B554110FFB151DC025141737049CF7A3B554140CF0341E3025141544964B97B3B5541D0F5121BE4025141708322987B3B55417D04F127E802514113AE5B84793B5541A0C6D4F1EA0251415A9C4D1D763B55410FA6C415EB025141EF2DB6E0743B554128E3652CEC02514192016406743B554162231039F0025141A96DFDB2743B5541DB1D303EF50251415E3E65A3743B554171DD7C54F9025141C8C62837733B5541154EC9A6FB0251417D790CE9713B55411F5DBF26F8025141A40B36F16D3B5541BD2D76B0F3025141952334E2683B554113B13328F202514182E17F25673B5541DD572279EF025141493D88F1623B5541FA20F070EA025141A0C22A30623B5541252ABE00E30251413A2EB9D4603B55415DF67083D7025141C701EFE85E3B55410FBE1C66D7025141EE2208125F3B554191D41257D00251417588A6BE5B3B5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3700DFF025141B81E859B743B5541C3F528BCFB02514114AE4701723B5541713D0A37F70251417B14AE47743B554100000030F402514148E17AD4743B5541AE47E1BAF2025141B81E85DB743B55418FC2F568E302514185EB5198823B5541C3F5281CEB02514114AE47118B3B5541D7A370EDED0251415C8FC2658E3B554166666666EF02514133333323903B554185EB5168F30251419A9999F9933B5541666666F6F7025141AE47E19A8E3B55411F85EB61FB0251411F85EBF18A3B5541713D0A27FF0251419A9999F9873B5541713D0AA705035141A4703DDA823B55419A9999A906035141295C8FC2803B55415C8FC255060351417B14AE077E3B55419A9999C904035141B81E854B7B3B5541D7A3700DFF025141B81E859B743B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985550 - 3499292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000091D41257D00251417588A6BE5B3B55414C2E6DF4C9025141C61F1ECC623B5541AD31FEABCD025141BE745D4C6C3B5541B6DA906CCE025141E284B3A46D3B55416D1DC9C1CF0251412502A37C703B554124600117D1025141BE8F94F9723B55411B2F843CD302514153B4916F763B55412C73633ED60251412D0633C0783B55412C73633ED6025141EB797104793B5541EBE6A182D60251415A0EB492783B5541006BE26BD6025141D6F5301B793B5541BCD61645D80251415E7770107A3B554110FFB151DC025141737049CF7A3B554140CF0341E3025141544964B97B3B5541D0F5121BE4025141708322987B3B55417D04F127E802514113AE5B84793B5541A0C6D4F1EA0251415A9C4D1D763B55410FA6C415EB025141EF2DB6E0743B554128E3652CEC02514192016406743B554162231039F0025141A96DFDB2743B5541DB1D303EF50251415E3E65A3743B554171DD7C54F9025141C8C62837733B5541154EC9A6FB0251417D790CE9713B55411F5DBF26F8025141A40B36F16D3B5541BD2D76B0F3025141952334E2683B554113B13328F202514182E17F25673B5541DD572279EF025141493D88F1623B5541FA20F070EA025141A0C22A30623B5541252ABE00E30251413A2EB9D4603B55415DF67083D7025141C701EFE85E3B55410FBE1C66D7025141EE2208125F3B554191D41257D00251417588A6BE5B3B5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3700DFF025141B81E859B743B5541C3F528BCFB02514114AE4701723B5541713D0A37F70251417B14AE47743B554100000030F402514148E17AD4743B5541AE47E1BAF2025141B81E85DB743B55418FC2F568E302514185EB5198823B5541C3F5281CEB02514114AE47118B3B5541D7A370EDED0251415C8FC2658E3B554166666666EF02514133333323903B554185EB5168F30251419A9999F9933B5541666666F6F7025141AE47E19A8E3B55411F85EB61FB0251411F85EBF18A3B5541713D0A27FF0251419A9999F9873B5541713D0AA705035141A4703DDA823B55419A9999A906035141295C8FC2803B55415C8FC255060351417B14AE077E3B55419A9999C904035141B81E854B7B3B5541D7A3700DFF025141B81E859B743B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243506 - 243419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000019000000B8444971C00A5141DB0EF99A5118554123A855E7C00A5141700DE41D55185541F4063EE9C20A5141C3A450C358185541D5F2F9CFC30A5141F339A2605918554199B8488CC90A5141F23F051158185541452A8C69CB0A51417C5B8B6A57185541F3793BD1CB0A51411FBC2C9B56185541ACB8F86FCD0A51417A928059541855410A7ACCC7D30A5141A1CBB7F34B18554169043C66D60A5141E4C8983E4C185541E8C8D5FED60A514181A681F24B1855419A58FDFFD70A5141D07D6B9F4A1855413D603200DA0A514147B504FC47185541F17D7A41DB0A5141FF04654B4618554152044F92DA0A5141BAB476D345185541E0663639DA0A5141ECAB7696451855419A999919D90A514114AE47D144185541EC51B81ED10A5141AE47E15A3F185541A4703D9AC60A51417B14AE2738185541AE47E1BAC40A51410000006038185541B81E851BB70A5141AE47E15A471855419A999969B60A51411F85EB2148185541F6285CFFB50A51418FC2F59848185541C1152D47C00A5141E665228451185541B8444971C00A5141DB0EF99A511855410400000071B1155EC90A514178D5FCEB4E185541856DF74CD30A5141E0CBFFE54B185541324CC563D30A51414ECF8BE84B18554171B1155EC90A514178D5FCEB4E185541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001C44E604D50A5141EEF24EEC4C18554130B92D28D90A51415D1BCE5250185541C36C5C9FDD0A514100D99E5654185541A4D5E62DDF0A5141115AACDA551855418BCA3CDCE00A51412A76DD1154185541E3AF92D1E10A5141C03114045318554103A51543E30A5141E6B2BD6D51185541E17A146EE60A51411F85EBF14D1855410018162ADB0A51418AE0377346185541BB968BFDD60A5141D80C35F44B1855411C44E604D50A5141EEF24EEC4C185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243506 - 3346869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000019000000B8444971C00A5141DB0EF99A5118554123A855E7C00A5141700DE41D55185541F4063EE9C20A5141C3A450C358185541D5F2F9CFC30A5141F339A2605918554199B8488CC90A5141F23F051158185541452A8C69CB0A51417C5B8B6A57185541F3793BD1CB0A51411FBC2C9B56185541ACB8F86FCD0A51417A928059541855410A7ACCC7D30A5141A1CBB7F34B18554169043C66D60A5141E4C8983E4C185541E8C8D5FED60A514181A681F24B1855419A58FDFFD70A5141D07D6B9F4A1855413D603200DA0A514147B504FC47185541F17D7A41DB0A5141FF04654B4618554152044F92DA0A5141BAB476D345185541E0663639DA0A5141ECAB7696451855419A999919D90A514114AE47D144185541EC51B81ED10A5141AE47E15A3F185541A4703D9AC60A51417B14AE2738185541AE47E1BAC40A51410000006038185541B81E851BB70A5141AE47E15A471855419A999969B60A51411F85EB2148185541F6285CFFB50A51418FC2F59848185541C1152D47C00A5141E665228451185541B8444971C00A5141DB0EF99A511855410400000071B1155EC90A514178D5FCEB4E185541856DF74CD30A5141E0CBFFE54B185541324CC563D30A51414ECF8BE84B18554171B1155EC90A514178D5FCEB4E185541
+</a>
+
+<b>
+010600000001000000010300000001000000170000000B8A76E1C90A5141183A7CC44E185541C3F528ACCE0A5141EC51B84E4D1855418FC2F5B8D30A514152B81EC54B18554168043C66D60A5141E4C8983E4C185541EAC8D5FED60A51417EA681F24B1855419B58FDFFD70A5141D27D6B9F4A1855413A603200DA0A514146B504FC47185541F57D7A41DB0A5141FD04654B4618554155044F92DA0A5141BDB476D345185541E5663639DA0A5141EEAB7696451855419A999919D90A514114AE47D144185541EC51B81ED10A5141AE47E15A3F185541A4703D9AC60A51417B14AE2738185541AE47E1BAC40A51410000006038185541B81E851BB70A5141AE47E15A471855419A999969B60A51411F85EB2148185541F6285CFFB50A51418FC2F59848185541C3152D47C00A5141E665228451185541AD7ACA80C00A514159A3E2A351185541CDCCCC7CC40A514185EB5168501855417CBD7751C80A51412D639E3D4F18554114AE47E1C90A51413D0AD7C34E1855410B8A76E1C90A5141183A7CC44E185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985981 - 1411252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000002000000010300000003000000B40000009BD06964E60B51414079C2FBE52155419A999959E60B5141666666C6E521554114AE47E1E50B514148E17A64E3215541B81E857BE40B514133333313DD21554152B81E25EA0B51419A9999B9DC21554185EB51B8EB0B5141A4703DAADC2155415C8FC215F30B5141713D0A17DD215541A205CA4AFC0B5141157C4515DE215541C3D1D110000C5141071D45E7DD2155410092AE6B080C51410A59BFC7DC215541283EB07C0A0C51413121BF82DC215541C618B43F0F0C514159DBBF68DD2155419A9999A9140C5141D7A370EDDC2155417B14AE871B0C514166666686DC21554105BD1863220C5141978342A5DC2155415C8FC215230C51411F85EBA1DE215541CDCCCC3C250C5141EC51B84EE22155419A999969270C5141AE47E10AE5215541E17A142E2B0C514100000060E72155419A9999092F0C514148E17A34E82155413D6758B1310C5141B1A9D560E8215541C2DFD382360C51419582C819E8215541C3F528AC3A0C5141CDCCCC7CE7215541AF2ED9113D0C5141F77DC7D7E6215541C3F528FC3F0C5141CDCCCC0CE8215541AE47E18A400C51415C8FC2F5E62155411F85EBC1430C5141B81E85CBE02155413D0AD733440C51410AD7A310E0215541D1A0B98B490C51412C697980D7215541E90779D8470C51412610FE3FD7215541AD8DA753450C514120B782FFD6215541AC934BE93F0C5141A363C01FD7215541AE47E13A3F0C5141EC51B8EED52155410AD7A3903D0C514152B81EB5D0215541A4703DFA390C5141E17A14BECA215541A4703D1A370C51415C8FC2B5C521554114AE4781360C514133333313C5215541F12036CC3C0C514163F35751C02155411B1246D73F0C5141F89186FBBD2155413D0AD7A3480C514166666606B7215541E17A14DE4A0C5141A4703D5AB2215541713D0AD7480C51413D0AD7F3AE215541A4703D7A450C514114AE4791AA21554114AE47A1440C5141295C8FB2A9215541295C8F62430C5141CDCCCCCCA82155410AD7A3F0410C51413D0AD713A8215541EC51B8EE3C0C514152B81E35A62155417B14AE27360C514148E17AC4A3215541240154AB260C5141249A35249D2155413C66F46C240C5141238BE9B99B2155413D0AD753210C5141666666669A215541AA7FE81C220C5141EF752C2399215541FB44C288290C5141AD45AED49C215541871D1F782D0C51415183AB859E2155419CA1F417310C5141A3295013A0215541420CD607370C514135105C63A22155419F0BA6093E0C51419B1C3EBCA4215541BBBBC2DE420C5141383D40A2A6215541541FCDD1460C5141BC4D7877A921554114AE47814A0C5141D7A3705DAE215541C3F528BC4D0C514152B81E55B3215541E17A148E4F0C5141A4703DEAB621554120C7DDFB510C51416E1839DEB42155412620593C520C5141EB682973B7215541629DFC0B520C514157AEA746B921554168F6774C520C51417BC48BC9BA21554106558085540C5141A1E004D1BE215541AE47E18A560C514133333383BF2155418FC2F5C8570C51410AD7A3B0B82155418FC2F5C8570C514148E17A74B12155410AD7A320580C5141A4703D4AAC2155419377F91D580C5141EBA1D2F7A9215541FBD138E9550C5141532D2101A521554182A61143560C51415BE884E29D21554185B00E44560C5141688FE80A9A2155418AF31406470C5141E40133A58F215541B7BD41BD3A0C5141A7427DC0872155412B80F3BE380C5141BD2394FC832155415C8FC2453A0C5141333333F37F21554185EB51583E0C51415C8FC2757F2155413D0AD7B33F0C514114AE47217E215541713D0AF7430C51419A99992979215541E97AA8F7470C51418ACDA2DF732155413E714831480C5141C7035B7D732155418FC2F508480C51418FC2F56873215541DB20CD05480C51413F549A6D732155419A999929470C51415C8FC21573215541AE47E15A420C5141C3F528EC71215541D7A3700D400C51416666669671215541CDCCCCAC3D0C51417B14AE6771215541F6285CAF3B0C51410000009071215541CDCCCC3C3A0C5141333333F371215541D7A3706D380C51411F85EB917221554114AE4791360C51415C8FC26573215541EC51B85E340C5141333333A374215541E17A143E310C5141713D0A67772155419A9999C92E0C5141B81E856B79215541713D0AA72A0C514148E17A64792155415C8FC245280C5141295C8F62782155417B14AE37270C51418FC2F5C8772155415C8FC235270C51417B14AEE77321554114AE4731270C5141CDCCCC3C692155419A999949270C5141AE47E13A5E2155419A999959270C514152B81E355A2155413D0AD773270C5141A4703D0A58215541059B9892230C51417FE20F30562155417A0981A4180C51416B1A016C50215541CB6AA26D130C51415521E3694D21554185EB51D8100C51418FC2F5084E21554128A0FFB70A0C51415FEDF3A45C215541333333B3070C5141A4703DAA63215541108A6FE2050C5141BDC1F498682155419DCE72AA0B0C51411B8490256E215541BBE17CB2100C51410065723572215541A23FC313110C51411642A27D752155413383FD4E0D0C51419D9B41867421554157B21E500A0C51413187284C752155412FDB50C4080C514101C6BF8D76215541905D2241060C5141F8DB245B792155410979DBBC040C5141B51F7B267C21554140F5DC74050C514168F37F7C7E215541CAABE040070C51415243868A81215541A0C200E5070C51416CBD7A7E84215541090BB3D6F20B514145CE2E1D84215541B54E71F5E70B5141177AD49C8321554102FD7870DF0B5141A3A40BD4822155413369E639D40B51410B599B078421554152B81E75CC0B51410AD7A3008521554133333363CA0B5141666666B6862155415C8FC225C90B514152B81ED58721554114AE47F1C70B5141F6285C0F89215541295C8F82C70B514185EB51C889215541C3F528DCC60B5141A4703D3A8B215541E17A14FEC50B5141D7A3707D8D215541713D0A17C50B51413333333390215541CDCCCC2CC40B51410AD7A3109321554166666686C30B51410AD7A360952155413D0AD723C30B5141AE47E1EA96215541EC51B8AEC20B5141CDCCCCFC98215541A4703D2AC20B5141A4703DEA9B215541D7A3707DC10B514148E17A749F21554152B81E05C10B51419A999929A2215541D7A3707DC00B5141000000D0A42155410AD7A330C00B51413D0AD7B3A62155418FC2F5F8BF0B5141B81E857BA8215541713D0AD7BF0B5141CDCCCCFCA9215541713D0A87BF0B5141CDCCCC9CAE21554185EB5168BF0B51415C8FC245B021554100000040BF0B51413D0AD773B2215541EC51B80EBF0B5141333333D3B321554155B17AE2BE0B514140FCB0C5B821554127DFF00BBE0B51412BFB177ABB21554100000050BD0B5141E17A147EBD21554148E17AE4BC0B5141A4703DDABE215541B81E852BBC0B5141AE47E1BAC021554185EB5178BB0B5141713D0A27C2215541E17A148EBA0B514152B81EA5C32155418FC2F5C8B90B51411F85EBA1C42155416FE962D0B70B5141F752AC37C72155419C2B242EB00B5141AA3E07EACF21554136E0ECF8AE0B51411F17B93BD22155410794CC52AE0B514147DE7CD9D3215541295372DCAD0B51418258BDE7D5215541295372DCAD0B51419B72B220D8215541C5BDAD42AE0B5141CB841664D9215541E9D391C5AF0B5141D2DABF59DC21554149671918B10B5141C625F78DDE21554169CB061AB20B51414C76E722E12155417FBE67E9B00B51419B41C650E52155412DD73BA6B10B5141310F9DC3E6215541E0D58261B20B51416A94BE5DE7215541773CD45DB40B514142421800E921554116E412B6B60B5141F01F6265EA215541FAFC5B72B90B5141F2A4C13BEB215541BD032632BD0B5141355DB51AEC215541E21FBB99BF0B5141B3901462EC215541FED7493CC40B5141E210B08EEC215541A37769F3C90B5141B62956D3EB215541346D11A2D70B5141717535B9E92155419BD06964E60B51414079C2FBE521554108000000983CE6ED390C51417B721B53DB2155411A690CD43A0C51419675ACBCD9215541A6E5C8CD3B0C514185FD4A9FD9215541E362EA003E0C5141EEF55E59DA2155411D87BF673E0C51416766D430DB215541A7AA2F953D0C5141DC73E5C5DD215541300939FB3A0C5141CE8F69ADDD215541983CE6ED390C51417B721B53DB2155410A0000004673098F280C5141BB0F2A16812155416E4AD71A2A0C5141EBD092D47F215541F84B23AE2D0C51412EEDE62E8121554117395607320C514170093B8982215541C46A31BA310C51417E5CD33488215541BB48C476310C5141F7E6968F892155418C9EA225300C5141543BDA318C215541966081452C0C51410502D7EB882155416E4AD71A2A0C5141671FA056852155414673098F280C5141BB0F2A168121554101030000000100000018000000E17A141EA80B514152B81ED5CA215541C3F528CCA70B51415C8FC245CD2155419A9999A9A70B5141AE47E13AD12155419A999989A70B5141EC51B81ED7215541B81E854BAC0B5141EC51B8FED9215541541FB42EAC0B51412F77BD8CD5215541B3B23B81AD0B5141050B3014D1215541D7C81F04AF0B51410A677D9FCE215541AE531CABB20B5141A47D4C57CA2155419193E11DB40B514145EAC404C921554136FD89A7B60B5141EAC5311BC6215541E71D8C7DB80B5141A34CDED5C3215541681B0C7ABA0B51417F70DEB4C02155413FA9DA6BBB0B5141C6A24A50BE215541F6285C1FBB0B5141A4703DFABC215541F6285C3FB80B514152B81EE5BC21554166666666B10B5141AE47E1BABC21554114AE4791AC0B5141295C8FA2BC215541C3F5289CA90B51419A9999A9BC215541E17A148EA90B514148E17A04BF215541CDCCCC5CA90B5141EC51B80EC2215541000000F0A80B514152B81EB5C5215541AE47E1BAA80B5141295C8F02C7215541E17A141EA80B514152B81ED5CA215541
+</a>
+
+<b>
+010600000001000000010300000005000000B90000005C9A0DDABE0B514101CAE2E0B821554126DFF00BBE0B514129FB177ABB21554100000050BD0B5141E17A147EBD21554148E17AE4BC0B5141A4703DDABE215541B81E852BBC0B5141AE47E1BAC021554185EB5178BB0B5141713D0A27C2215541E17A148EBA0B514152B81EA5C32155418FC2F5C8B90B51411F85EBA1C42155416FE962D0B70B5141FA52AC37C7215541992B242EB00B5141AE3E07EACF21554133E0ECF8AE0B51412317B93BD22155410294CC52AE0B514142DE7CD9D3215541245372DCAD0B51418658BDE7D5215541245372DCAD0B51419972B220D8215541C9BDAD42AE0B5141C7841664D9215541E8D391C5AF0B5141D7DABF59DC21554145671918B10B5141C725F78DDE2155416BCB061AB20B51415176E722E121554180BE67E9B00B51419841C650E5215541A89D5543B20B5141DF549B8BE6215541624CECFEB40B5141A4579968E8215541FB4F036BB70B5141BAAEB196E921554123548036BA0B5141B05A4A75EA21554103584AD2BC0B51413D5BB0D4EA21554125B2130DC00B5141CB5B1634EB21554167B75C97C30B5141EC069683EB21554194658DF3C50B5141A506E353EB21554113CA03D4C80B514102031084EA21554191A75314CC0B5141D8D2F9DEE921554197541E1CD00B51410C42485CE921554197EE38BED20B5141B82E2963E9215541ADA0DEB2D50B51410C42485CE92155413F5BE0DFD90B5141A5A4CD27E92155419ED06964E60B51414279C2FBE52155419A999959E60B5141666666C6E521554114AE47E1E50B514148E17A64E3215541B81E857BE40B514133333313DD21554152B81E25EA0B51419A9999B9DC21554185EB51B8EB0B5141A4703DAADC2155415C8FC215F30B5141713D0A17DD2155419D05CA4AFC0B5141167C4515DE215541C4D1D110000C51410B1D45E7DD2155410492AE6B080C51410659BFC7DC2155412C3EB07C0A0C51413321BF82DC215541C118B43F0F0C514157DBBF68DD2155419A9999A9140C5141D7A370EDDC2155417B14AE871B0C514166666686DC21554106BD1863220C5141938342A5DC2155410AC12B72220C51418A402DD0DC2155419D269861360C514141E8B5E1D521554197FCB9B6390C51413F6ACD3FDC2155410424B2573D0C5141737D22DAE6215541AE47E18A400C51415C8FC2F5E62155411F85EBC1430C5141B81E85CBE02155413D0AD733440C51410AD7A310E0215541D6A0B98B490C51412D697980D7215541E90779D8470C51412610FE3FD7215541AE8DA753450C51411FB782FFD6215541A7934BE93F0C5141A863C01FD7215541AE47E13A3F0C5141EC51B8EED52155410AD7A3903D0C514152B81EB5D0215541A4703DFA390C5141E17A14BECA215541A4703D1A370C51415C8FC2B5C521554114AE4781360C514133333313C5215541EF2036CC3C0C514167F35751C02155411E1246D73F0C5141F59186FBBD2155413D0AD7A3480C514166666606B7215541E17A14DE4A0C5141A4703D5AB2215541713D0AD7480C51413D0AD7F3AE215541A4703D7A450C514114AE4791AA21554114AE47A1440C5141295C8FB2A9215541295C8F62430C5141CDCCCCCCA82155410AD7A3F0410C51413D0AD713A8215541EC51B8EE3C0C514152B81E35A62155417B14AE27360C514148E17AC4A3215541290154AB260C5141209A35249D2155413966F46C240C51411F8BE9B99B2155413D0AD753210C5141666666669A215541A67FE81C220C5141EA752C2399215541FF44C288290C5141AE45AED49C215541871D1F782D0C51415183AB859E2155419DA1F417310C5141A4295013A0215541460CD607370C514137105C63A2215541A30BA6093E0C51419B1C3EBCA4215541BCBBC2DE420C51413D3D40A2A6215541581FCDD1460C5141BA4D7877A921554114AE47814A0C5141D7A3705DAE215541C3F528BC4D0C514152B81E55B3215541E17A148E4F0C5141A4703DEAB62155411BC7DDFB510C5141701839DEB42155412220593C520C5141F0682973B72155415F9DFC0B520C51415AAEA746B921554166F6774C520C51417AC48BC9BA21554105558085540C5141A5E004D1BE215541AE47E18A560C514133333383BF2155418FC2F5C8570C51410AD7A3B0B82155418FC2F5C8570C514148E17A74B12155410AD7A320580C5141A4703D4AAC2155419077F91D580C5141EEA1D2F7A9215541F9D138E9550C5141572D2101A521554186A61143560C51415DE884E29D21554187B00E44560C51416B8FE80A9A2155418DF31406470C5141E00133A58F215541BBBD41BD3A0C5141AC427DC0872155412A80F3BE380C5141B92394FC83215541CC8B21F23A0C51411B7E451D83215541AF3351BA3D0C51412033A33D81215541F1D01C03420C5141284694F87B2155416AE048C0450C5141ECBE19E37621554110E11587460C514166E8C9D475215541E97AA8F7470C51418ACDA2DF732155413E714831480C5141C7035B7D73215541DB20CD05480C51413F549A6D732155419A999929470C51415C8FC21573215541AE47E15A420C5141C3F528EC71215541D7A3700D400C51416666669671215541CDCCCCAC3D0C51417B14AE6771215541F6285CAF3B0C51410000009071215541CDCCCC3C3A0C5141333333F371215541D7A3706D380C51411F85EB917221554114AE4791360C51415C8FC26573215541EC51B85E340C5141333333A374215541E17A143E310C5141713D0A67772155419A9999C92E0C5141B81E856B79215541713D0AA72A0C514148E17A64792155415C8FC245280C5141295C8F62782155417B14AE37270C51418FC2F5C8772155415C8FC235270C51417B14AEE77321554114AE4731270C5141CDCCCC3C692155419A999949270C5141AE47E13A5E2155419A999959270C514152B81E355A2155413D0AD773270C5141A4703D0A58215541019B9892230C514181E20F3056215541750981A4180C5141671A016C50215541CF6AA26D130C51415821E3694D21554185EB51D8100C51418FC2F5084E21554129A0FFB70A0C514163EDF3A45C215541333333B3070C5141A4703DAA63215541118A6FE2050C5141BEC1F498682155419FCE72AA0B0C51411C8490256E215541BDE17CB2100C51410265723572215541A63FC313110C51411442A27D752155412E83FD4E0D0C5141A19B41867421554152B21E500A0C51413387284C752155412FDB50C4080C5141FEC5BF8D762155418D5D2241060C5141F8DB245B792155410D79DBBC040C5141B11F7B267C21554144F5DC74050C51416BF37F7C7E215541C7ABE040070C51415143868A812155419EC200E5070C51416BBD7A7E84215541050BB3D6F20B51414ACE2E1D84215541B74E71F5E70B5141157AD49C8321554101FD7870DF0B5141A4A40BD4822155413669E639D40B51410C599B078421554152B81E75CC0B51410AD7A3008521554133333363CA0B5141666666B6862155415C8FC225C90B514152B81ED58721554114AE47F1C70B5141F6285C0F89215541295C8F82C70B514185EB51C889215541C3F528DCC60B5141A4703D3A8B215541E17A14FEC50B5141D7A3707D8D21554108ABB4EFC50B5141E4449AA88D215541ADCFD2B7E20B51415A2D0035912155414CA648D9E70B51418564B85D8A2155417D0A235DEA0B514118B91859872155416D603CC7EC0B514161E3C8D6852155415CEF5998EF0B5141249C0356852155414229849EF30B5141E58D423C852155412246EDF7FD0B51413424394D852155416EC3E526080C5141EC607242852155417DE7A2D8080C5141C24AA807952155415211C086050C514141672A3B95215541B8CC5A0DFF0B514158B96CC0972155417C6F8855FC0B5141F44910B699215541A85E9F52FB0B51410B30E2099B215541AB9A2A1FFA0B514168C82959A021554137BD125AF80B5141C46071A8A5215541B4621BD5F50B5141F87ACF0FAB2155413D9B8C6CF40B5141A7FB2BC7AD215541D844E032F00B5141B80B391FB52155413F85088AD50B51412351B261AE21554147DAFB54D40B514150EE904CB1215541594BDE83D10B5141DF53243FB9215541E93918BDC40B51419F456325B92155415C9A0DDABE0B514101CAE2E0B821554108000000953CE6ED390C514177721B53DB2155411A690CD43A0C51419475ACBCD9215541A2E5C8CD3B0C51418AFD4A9FD9215541E062EA003E0C5141EFF55E59DA2155411F87BF673E0C51416966D430DB215541A8AA2F953D0C5141D873E5C5DD2155412B0939FB3A0C5141D18F69ADDD215541953CE6ED390C514177721B53DB2155410A0000004673098F280C5141BE0F2A16812155416A4AD71A2A0C5141E8D092D47F215541F54B23AE2D0C51412AEDE62E8121554112395607320C51416B093B8982215541C76A31BA310C51417E5CD33488215541BA48C476310C5141F7E6968F89215541909EA225300C5141553BDA318C215541936081452C0C51410502D7EB882155416A4AD71A2A0C5141651FA056852155414673098F280C5141BE0F2A168121554111000000927F663E0C0C5141CFA4D744B62155410A938DC40F0C5141350624F3AE2155418F3F847A120C5141D3249CCCA9215541E7A72D53150C5141E0DD5CDEA5215541FC29E35F180C51417D6CDC46A2215541EE50316C1F0C51416A9A108D9A2155410DBCCC55260C514146AFB01BA0215541DE379DB42C0C5141F67F03CDA5215541223E8262290C514159F18364A921554167D45F81240C5141D174B279AE21554131A72CC7200C5141AF194B79B2215541C20CE48E1F0C5141B99229C7B4215541F070224E1C0C5141F9383BCFBA21554198087975190C51410392283BC0215541C6FCAFA5140C51410F4BE94CBC215541D3B570B7100C5141106BDA2EB9215541927F663E0C0C5141CFA4D744B621554105000000AE72F63E160C5141B730113B9321554138EC1F2F200C514114C8C326822155418B76C13D2A0C5141B81773298821554101FD974D200C514177023C5998215541AE72F63E160C5141B730113B93215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985981 - 3198370
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000002000000010300000003000000B40000009BD06964E60B51414079C2FBE52155419A999959E60B5141666666C6E521554114AE47E1E50B514148E17A64E3215541B81E857BE40B514133333313DD21554152B81E25EA0B51419A9999B9DC21554185EB51B8EB0B5141A4703DAADC2155415C8FC215F30B5141713D0A17DD215541A205CA4AFC0B5141157C4515DE215541C3D1D110000C5141071D45E7DD2155410092AE6B080C51410A59BFC7DC215541283EB07C0A0C51413121BF82DC215541C618B43F0F0C514159DBBF68DD2155419A9999A9140C5141D7A370EDDC2155417B14AE871B0C514166666686DC21554105BD1863220C5141978342A5DC2155415C8FC215230C51411F85EBA1DE215541CDCCCC3C250C5141EC51B84EE22155419A999969270C5141AE47E10AE5215541E17A142E2B0C514100000060E72155419A9999092F0C514148E17A34E82155413D6758B1310C5141B1A9D560E8215541C2DFD382360C51419582C819E8215541C3F528AC3A0C5141CDCCCC7CE7215541AF2ED9113D0C5141F77DC7D7E6215541C3F528FC3F0C5141CDCCCC0CE8215541AE47E18A400C51415C8FC2F5E62155411F85EBC1430C5141B81E85CBE02155413D0AD733440C51410AD7A310E0215541D1A0B98B490C51412C697980D7215541E90779D8470C51412610FE3FD7215541AD8DA753450C514120B782FFD6215541AC934BE93F0C5141A363C01FD7215541AE47E13A3F0C5141EC51B8EED52155410AD7A3903D0C514152B81EB5D0215541A4703DFA390C5141E17A14BECA215541A4703D1A370C51415C8FC2B5C521554114AE4781360C514133333313C5215541F12036CC3C0C514163F35751C02155411B1246D73F0C5141F89186FBBD2155413D0AD7A3480C514166666606B7215541E17A14DE4A0C5141A4703D5AB2215541713D0AD7480C51413D0AD7F3AE215541A4703D7A450C514114AE4791AA21554114AE47A1440C5141295C8FB2A9215541295C8F62430C5141CDCCCCCCA82155410AD7A3F0410C51413D0AD713A8215541EC51B8EE3C0C514152B81E35A62155417B14AE27360C514148E17AC4A3215541240154AB260C5141249A35249D2155413C66F46C240C5141238BE9B99B2155413D0AD753210C5141666666669A215541AA7FE81C220C5141EF752C2399215541FB44C288290C5141AD45AED49C215541871D1F782D0C51415183AB859E2155419CA1F417310C5141A3295013A0215541420CD607370C514135105C63A22155419F0BA6093E0C51419B1C3EBCA4215541BBBBC2DE420C5141383D40A2A6215541541FCDD1460C5141BC4D7877A921554114AE47814A0C5141D7A3705DAE215541C3F528BC4D0C514152B81E55B3215541E17A148E4F0C5141A4703DEAB621554120C7DDFB510C51416E1839DEB42155412620593C520C5141EB682973B7215541629DFC0B520C514157AEA746B921554168F6774C520C51417BC48BC9BA21554106558085540C5141A1E004D1BE215541AE47E18A560C514133333383BF2155418FC2F5C8570C51410AD7A3B0B82155418FC2F5C8570C514148E17A74B12155410AD7A320580C5141A4703D4AAC2155419377F91D580C5141EBA1D2F7A9215541FBD138E9550C5141532D2101A521554182A61143560C51415BE884E29D21554185B00E44560C5141688FE80A9A2155418AF31406470C5141E40133A58F215541B7BD41BD3A0C5141A7427DC0872155412B80F3BE380C5141BD2394FC832155415C8FC2453A0C5141333333F37F21554185EB51583E0C51415C8FC2757F2155413D0AD7B33F0C514114AE47217E215541713D0AF7430C51419A99992979215541E97AA8F7470C51418ACDA2DF732155413E714831480C5141C7035B7D732155418FC2F508480C51418FC2F56873215541DB20CD05480C51413F549A6D732155419A999929470C51415C8FC21573215541AE47E15A420C5141C3F528EC71215541D7A3700D400C51416666669671215541CDCCCCAC3D0C51417B14AE6771215541F6285CAF3B0C51410000009071215541CDCCCC3C3A0C5141333333F371215541D7A3706D380C51411F85EB917221554114AE4791360C51415C8FC26573215541EC51B85E340C5141333333A374215541E17A143E310C5141713D0A67772155419A9999C92E0C5141B81E856B79215541713D0AA72A0C514148E17A64792155415C8FC245280C5141295C8F62782155417B14AE37270C51418FC2F5C8772155415C8FC235270C51417B14AEE77321554114AE4731270C5141CDCCCC3C692155419A999949270C5141AE47E13A5E2155419A999959270C514152B81E355A2155413D0AD773270C5141A4703D0A58215541059B9892230C51417FE20F30562155417A0981A4180C51416B1A016C50215541CB6AA26D130C51415521E3694D21554185EB51D8100C51418FC2F5084E21554128A0FFB70A0C51415FEDF3A45C215541333333B3070C5141A4703DAA63215541108A6FE2050C5141BDC1F498682155419DCE72AA0B0C51411B8490256E215541BBE17CB2100C51410065723572215541A23FC313110C51411642A27D752155413383FD4E0D0C51419D9B41867421554157B21E500A0C51413187284C752155412FDB50C4080C514101C6BF8D76215541905D2241060C5141F8DB245B792155410979DBBC040C5141B51F7B267C21554140F5DC74050C514168F37F7C7E215541CAABE040070C51415243868A81215541A0C200E5070C51416CBD7A7E84215541090BB3D6F20B514145CE2E1D84215541B54E71F5E70B5141177AD49C8321554102FD7870DF0B5141A3A40BD4822155413369E639D40B51410B599B078421554152B81E75CC0B51410AD7A3008521554133333363CA0B5141666666B6862155415C8FC225C90B514152B81ED58721554114AE47F1C70B5141F6285C0F89215541295C8F82C70B514185EB51C889215541C3F528DCC60B5141A4703D3A8B215541E17A14FEC50B5141D7A3707D8D215541713D0A17C50B51413333333390215541CDCCCC2CC40B51410AD7A3109321554166666686C30B51410AD7A360952155413D0AD723C30B5141AE47E1EA96215541EC51B8AEC20B5141CDCCCCFC98215541A4703D2AC20B5141A4703DEA9B215541D7A3707DC10B514148E17A749F21554152B81E05C10B51419A999929A2215541D7A3707DC00B5141000000D0A42155410AD7A330C00B51413D0AD7B3A62155418FC2F5F8BF0B5141B81E857BA8215541713D0AD7BF0B5141CDCCCCFCA9215541713D0A87BF0B5141CDCCCC9CAE21554185EB5168BF0B51415C8FC245B021554100000040BF0B51413D0AD773B2215541EC51B80EBF0B5141333333D3B321554155B17AE2BE0B514140FCB0C5B821554127DFF00BBE0B51412BFB177ABB21554100000050BD0B5141E17A147EBD21554148E17AE4BC0B5141A4703DDABE215541B81E852BBC0B5141AE47E1BAC021554185EB5178BB0B5141713D0A27C2215541E17A148EBA0B514152B81EA5C32155418FC2F5C8B90B51411F85EBA1C42155416FE962D0B70B5141F752AC37C72155419C2B242EB00B5141AA3E07EACF21554136E0ECF8AE0B51411F17B93BD22155410794CC52AE0B514147DE7CD9D3215541295372DCAD0B51418258BDE7D5215541295372DCAD0B51419B72B220D8215541C5BDAD42AE0B5141CB841664D9215541E9D391C5AF0B5141D2DABF59DC21554149671918B10B5141C625F78DDE21554169CB061AB20B51414C76E722E12155417FBE67E9B00B51419B41C650E52155412DD73BA6B10B5141310F9DC3E6215541E0D58261B20B51416A94BE5DE7215541773CD45DB40B514142421800E921554116E412B6B60B5141F01F6265EA215541FAFC5B72B90B5141F2A4C13BEB215541BD032632BD0B5141355DB51AEC215541E21FBB99BF0B5141B3901462EC215541FED7493CC40B5141E210B08EEC215541A37769F3C90B5141B62956D3EB215541346D11A2D70B5141717535B9E92155419BD06964E60B51414079C2FBE521554108000000983CE6ED390C51417B721B53DB2155411A690CD43A0C51419675ACBCD9215541A6E5C8CD3B0C514185FD4A9FD9215541E362EA003E0C5141EEF55E59DA2155411D87BF673E0C51416766D430DB215541A7AA2F953D0C5141DC73E5C5DD215541300939FB3A0C5141CE8F69ADDD215541983CE6ED390C51417B721B53DB2155410A0000004673098F280C5141BB0F2A16812155416E4AD71A2A0C5141EBD092D47F215541F84B23AE2D0C51412EEDE62E8121554117395607320C514170093B8982215541C46A31BA310C51417E5CD33488215541BB48C476310C5141F7E6968F892155418C9EA225300C5141543BDA318C215541966081452C0C51410502D7EB882155416E4AD71A2A0C5141671FA056852155414673098F280C5141BB0F2A168121554101030000000100000018000000E17A141EA80B514152B81ED5CA215541C3F528CCA70B51415C8FC245CD2155419A9999A9A70B5141AE47E13AD12155419A999989A70B5141EC51B81ED7215541B81E854BAC0B5141EC51B8FED9215541541FB42EAC0B51412F77BD8CD5215541B3B23B81AD0B5141050B3014D1215541D7C81F04AF0B51410A677D9FCE215541AE531CABB20B5141A47D4C57CA2155419193E11DB40B514145EAC404C921554136FD89A7B60B5141EAC5311BC6215541E71D8C7DB80B5141A34CDED5C3215541681B0C7ABA0B51417F70DEB4C02155413FA9DA6BBB0B5141C6A24A50BE215541F6285C1FBB0B5141A4703DFABC215541F6285C3FB80B514152B81EE5BC21554166666666B10B5141AE47E1BABC21554114AE4791AC0B5141295C8FA2BC215541C3F5289CA90B51419A9999A9BC215541E17A148EA90B514148E17A04BF215541CDCCCC5CA90B5141EC51B80EC2215541000000F0A80B514152B81EB5C5215541AE47E1BAA80B5141295C8F02C7215541E17A141EA80B514152B81ED5CA215541
+</a>
+
+<b>
+010600000001000000010300000005000000B90000005C9A0DDABE0B514101CAE2E0B821554126DFF00BBE0B514129FB177ABB21554100000050BD0B5141E17A147EBD21554148E17AE4BC0B5141A4703DDABE215541B81E852BBC0B5141AE47E1BAC021554185EB5178BB0B5141713D0A27C2215541E17A148EBA0B514152B81EA5C32155418FC2F5C8B90B51411F85EBA1C42155416FE962D0B70B5141FA52AC37C7215541992B242EB00B5141AE3E07EACF21554133E0ECF8AE0B51412317B93BD22155410294CC52AE0B514142DE7CD9D3215541245372DCAD0B51418658BDE7D5215541245372DCAD0B51419972B220D8215541C9BDAD42AE0B5141C7841664D9215541E8D391C5AF0B5141D7DABF59DC21554145671918B10B5141C725F78DDE2155416BCB061AB20B51415176E722E121554180BE67E9B00B51419841C650E5215541A89D5543B20B5141DF549B8BE6215541624CECFEB40B5141A4579968E8215541FB4F036BB70B5141BAAEB196E921554123548036BA0B5141B05A4A75EA21554103584AD2BC0B51413D5BB0D4EA21554125B2130DC00B5141CB5B1634EB21554167B75C97C30B5141EC069683EB21554194658DF3C50B5141A506E353EB21554113CA03D4C80B514102031084EA21554191A75314CC0B5141D8D2F9DEE921554197541E1CD00B51410C42485CE921554197EE38BED20B5141B82E2963E9215541ADA0DEB2D50B51410C42485CE92155413F5BE0DFD90B5141A5A4CD27E92155419ED06964E60B51414279C2FBE52155419A999959E60B5141666666C6E521554114AE47E1E50B514148E17A64E3215541B81E857BE40B514133333313DD21554152B81E25EA0B51419A9999B9DC21554185EB51B8EB0B5141A4703DAADC2155415C8FC215F30B5141713D0A17DD2155419D05CA4AFC0B5141167C4515DE215541C4D1D110000C51410B1D45E7DD2155410492AE6B080C51410659BFC7DC2155412C3EB07C0A0C51413321BF82DC215541C118B43F0F0C514157DBBF68DD2155419A9999A9140C5141D7A370EDDC2155417B14AE871B0C514166666686DC21554106BD1863220C5141938342A5DC2155410AC12B72220C51418A402DD0DC2155419D269861360C514141E8B5E1D521554197FCB9B6390C51413F6ACD3FDC2155410424B2573D0C5141737D22DAE6215541AE47E18A400C51415C8FC2F5E62155411F85EBC1430C5141B81E85CBE02155413D0AD733440C51410AD7A310E0215541D6A0B98B490C51412D697980D7215541E90779D8470C51412610FE3FD7215541AE8DA753450C51411FB782FFD6215541A7934BE93F0C5141A863C01FD7215541AE47E13A3F0C5141EC51B8EED52155410AD7A3903D0C514152B81EB5D0215541A4703DFA390C5141E17A14BECA215541A4703D1A370C51415C8FC2B5C521554114AE4781360C514133333313C5215541EF2036CC3C0C514167F35751C02155411E1246D73F0C5141F59186FBBD2155413D0AD7A3480C514166666606B7215541E17A14DE4A0C5141A4703D5AB2215541713D0AD7480C51413D0AD7F3AE215541A4703D7A450C514114AE4791AA21554114AE47A1440C5141295C8FB2A9215541295C8F62430C5141CDCCCCCCA82155410AD7A3F0410C51413D0AD713A8215541EC51B8EE3C0C514152B81E35A62155417B14AE27360C514148E17AC4A3215541290154AB260C5141209A35249D2155413966F46C240C51411F8BE9B99B2155413D0AD753210C5141666666669A215541A67FE81C220C5141EA752C2399215541FF44C288290C5141AE45AED49C215541871D1F782D0C51415183AB859E2155419DA1F417310C5141A4295013A0215541460CD607370C514137105C63A2215541A30BA6093E0C51419B1C3EBCA4215541BCBBC2DE420C51413D3D40A2A6215541581FCDD1460C5141BA4D7877A921554114AE47814A0C5141D7A3705DAE215541C3F528BC4D0C514152B81E55B3215541E17A148E4F0C5141A4703DEAB62155411BC7DDFB510C5141701839DEB42155412220593C520C5141F0682973B72155415F9DFC0B520C51415AAEA746B921554166F6774C520C51417AC48BC9BA21554105558085540C5141A5E004D1BE215541AE47E18A560C514133333383BF2155418FC2F5C8570C51410AD7A3B0B82155418FC2F5C8570C514148E17A74B12155410AD7A320580C5141A4703D4AAC2155419077F91D580C5141EEA1D2F7A9215541F9D138E9550C5141572D2101A521554186A61143560C51415DE884E29D21554187B00E44560C51416B8FE80A9A2155418DF31406470C5141E00133A58F215541BBBD41BD3A0C5141AC427DC0872155412A80F3BE380C5141B92394FC83215541CC8B21F23A0C51411B7E451D83215541AF3351BA3D0C51412033A33D81215541F1D01C03420C5141284694F87B2155416AE048C0450C5141ECBE19E37621554110E11587460C514166E8C9D475215541E97AA8F7470C51418ACDA2DF732155413E714831480C5141C7035B7D73215541DB20CD05480C51413F549A6D732155419A999929470C51415C8FC21573215541AE47E15A420C5141C3F528EC71215541D7A3700D400C51416666669671215541CDCCCCAC3D0C51417B14AE6771215541F6285CAF3B0C51410000009071215541CDCCCC3C3A0C5141333333F371215541D7A3706D380C51411F85EB917221554114AE4791360C51415C8FC26573215541EC51B85E340C5141333333A374215541E17A143E310C5141713D0A67772155419A9999C92E0C5141B81E856B79215541713D0AA72A0C514148E17A64792155415C8FC245280C5141295C8F62782155417B14AE37270C51418FC2F5C8772155415C8FC235270C51417B14AEE77321554114AE4731270C5141CDCCCC3C692155419A999949270C5141AE47E13A5E2155419A999959270C514152B81E355A2155413D0AD773270C5141A4703D0A58215541019B9892230C514181E20F3056215541750981A4180C5141671A016C50215541CF6AA26D130C51415821E3694D21554185EB51D8100C51418FC2F5084E21554129A0FFB70A0C514163EDF3A45C215541333333B3070C5141A4703DAA63215541118A6FE2050C5141BEC1F498682155419FCE72AA0B0C51411C8490256E215541BDE17CB2100C51410265723572215541A63FC313110C51411442A27D752155412E83FD4E0D0C5141A19B41867421554152B21E500A0C51413387284C752155412FDB50C4080C5141FEC5BF8D762155418D5D2241060C5141F8DB245B792155410D79DBBC040C5141B11F7B267C21554144F5DC74050C51416BF37F7C7E215541C7ABE040070C51415143868A812155419EC200E5070C51416BBD7A7E84215541050BB3D6F20B51414ACE2E1D84215541B74E71F5E70B5141157AD49C8321554101FD7870DF0B5141A4A40BD4822155413669E639D40B51410C599B078421554152B81E75CC0B51410AD7A3008521554133333363CA0B5141666666B6862155415C8FC225C90B514152B81ED58721554114AE47F1C70B5141F6285C0F89215541295C8F82C70B514185EB51C889215541C3F528DCC60B5141A4703D3A8B215541E17A14FEC50B5141D7A3707D8D21554108ABB4EFC50B5141E4449AA88D215541ADCFD2B7E20B51415A2D0035912155414CA648D9E70B51418564B85D8A2155417D0A235DEA0B514118B91859872155416D603CC7EC0B514161E3C8D6852155415CEF5998EF0B5141249C0356852155414229849EF30B5141E58D423C852155412246EDF7FD0B51413424394D852155416EC3E526080C5141EC607242852155417DE7A2D8080C5141C24AA807952155415211C086050C514141672A3B95215541B8CC5A0DFF0B514158B96CC0972155417C6F8855FC0B5141F44910B699215541A85E9F52FB0B51410B30E2099B215541AB9A2A1FFA0B514168C82959A021554137BD125AF80B5141C46071A8A5215541B4621BD5F50B5141F87ACF0FAB2155413D9B8C6CF40B5141A7FB2BC7AD215541D844E032F00B5141B80B391FB52155413F85088AD50B51412351B261AE21554147DAFB54D40B514150EE904CB1215541594BDE83D10B5141DF53243FB9215541E93918BDC40B51419F456325B92155415C9A0DDABE0B514101CAE2E0B821554108000000953CE6ED390C514177721B53DB2155411A690CD43A0C51419475ACBCD9215541A2E5C8CD3B0C51418AFD4A9FD9215541E062EA003E0C5141EFF55E59DA2155411F87BF673E0C51416966D430DB215541A8AA2F953D0C5141D873E5C5DD2155412B0939FB3A0C5141D18F69ADDD215541953CE6ED390C514177721B53DB2155410A0000004673098F280C5141BE0F2A16812155416A4AD71A2A0C5141E8D092D47F215541F54B23AE2D0C51412AEDE62E8121554112395607320C51416B093B8982215541C76A31BA310C51417E5CD33488215541BA48C476310C5141F7E6968F89215541909EA225300C5141553BDA318C215541936081452C0C51410502D7EB882155416A4AD71A2A0C5141651FA056852155414673098F280C5141BE0F2A168121554111000000927F663E0C0C5141CFA4D744B62155410A938DC40F0C5141350624F3AE2155418F3F847A120C5141D3249CCCA9215541E7A72D53150C5141E0DD5CDEA5215541FC29E35F180C51417D6CDC46A2215541EE50316C1F0C51416A9A108D9A2155410DBCCC55260C514146AFB01BA0215541DE379DB42C0C5141F67F03CDA5215541223E8262290C514159F18364A921554167D45F81240C5141D174B279AE21554131A72CC7200C5141AF194B79B2215541C20CE48E1F0C5141B99229C7B4215541F070224E1C0C5141F9383BCFBA21554198087975190C51410392283BC0215541C6FCAFA5140C51410F4BE94CBC215541D3B570B7100C5141106BDA2EB9215541927F663E0C0C5141CFA4D744B621554105000000AE72F63E160C5141B730113B9321554138EC1F2F200C514114C8C326822155418B76C13D2A0C5141B81773298821554101FD974D200C514177023C5998215541AE72F63E160C5141B730113B93215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>518429 - 1189913
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AEB7C923514148E17A54C58A544185EB51C8C5235141713D0AC7C48A5441295C8FF2C1235141C3F5287CC48A54419A9999B9BD235141713D0AC7C48A54418FC2F548B4235141F6285C7FC68A54415C8FC2F5AC235141295C8FE2C88A54413D0AD7A3A82351417B14AE27CA8A54410AD7A3A0A9235141295C8FF2CD8A54413D0AD793AB23514152B81E45D68A544114AE47F1AC2351411F85EB61DC8A544148E17A04AE2351410AD7A350E08A5441C3F5286CB0235141EC51B82EEC8A54417B14AEC7B0235141CDCCCC5CEE8A5441295C8FE2B023514185EB5148EF8A544148E17A24C2235141B81E852BE88A5441295C8FA2D32351415C8FC2F5E08A5441A4703D3AD1235141C3F528CCD78A54417B14AE57CF235141D7A370ADD08A5441000000C0CD235141333333D3CA8A54418FC2F508CD23514152B81E05C78A5441C3F528CCCC235141C3F5289CC68A54413D0AD783CC235141EC51B81EC68A54417B14AEB7C923514148E17A54C58A5441
+</a>
+
+<b>
+010600000001000000010300000001000000290000000579A12F86235141611B30BFE58A5441BE05E1BA82235141F99F6AF6D68A5441402AA03F9A23514113E2615CD08A5441F43F1E5E9E235141B46B6234CF8A544177B7193CA1235141F2B55A66CE8A54413EAEE008A92351416500DB35CC8A54413D0AD7A3A82351417B14AE27CA8A5441AE47E1FAA623514148E17AA4CA8A54419A9999D9A0235141713D0AC7CC8A5441CDCCCC0C98235141C3F5285CCF8A5441B81E85DB8B235141AE47E10AD28A5441333333D382235141E17A149ED38A5441AE47E19A7C235141A4703D0AD58A5441666666167123514133333373D28A5441F6285C2F71235141D7A370BDD88A5441F6285C2F7123514114AE4761E08A544185EB517872235141E17A147EE08A5441713D0AD772235141F6285C3FE58A54411F85EBB17423514152B81E95ED8A5441B81E85AB7723514152B81E15F18A54411F85EB11792351418FC2F518F68A54417B14AEB77D235141EC51B89EF58A5441C3F5285C7F2351419A9999E9F68A544114AE47B180235141A4703D9AF88A544133333313842351411F85EBC1F78A5441295C8F22882351415C8FC205F78A54413333339392235141E17A14EEF48A5441295C8FC29923514185EB5188F38A5441CDCCCCFC9D235141F6285CAFF28A5441333333A3A2235141000000F0F18A544114AE47B1A9235141333333A3F08A544114AE4751AB2351411F85EB81F08A544114AE47A1AB23514114AE4701F18A5441000000B0AB235141C3F5286CF18A54410AD7A390AC23514100000010F18A5441295C8FE2B023514185EB5148EF8A54417B14AEC7B0235141CDCCCC5CEE8A5441C3F5286CB0235141EC51B82EEC8A5441D62D3506AE235141DD320C3EE08A544107CEB1DFAC23514120062C13DC8A54410579A12F86235141611B30BFE58A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939375 - 3178216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000003F0000001E111CE9E0B15041FD10D6EF9D35544185EB51E8E0B15041A4703DFA9D35544114AE4761D6B15041C3F5282C9D355441F6285CBFD5B1504185EB5148A03554419A9999E9D4B15041B81E850BA33554417B14AE37CFB150415C8FC2B5B03554417B14AEF7CBB1504148E17AA4B7355441713D0A27C4B15041CDCCCCCCC9355441C3F528BCB1B15041295C8FB2C635544152B81E85A0B15041CDCCCCCCC33554415C8FC2659EB15041D7A3705DC335544185EB51289BB15041C3F5283CD93554418FC2F59897B15041E17A142EEF35544152B81E8598B1504100000040EF355441B81E856BA8B150415C8FC2F5EF3554419A999929BBB150413D0AD7F3F03554411F85EB71BAB1504133333393FC355441A4703DBAB9B15041295C8F3208365441AE47E1DABBB150413D0AD75308365441A4703D3AC3B15041B81E85FB0736544152B81EE5C8B15041D7A3709D06365441EC51B8FECCB15041E17A14CE053654417B14AEE7D1B15041EC51B80E06365441EC51B83ED5B15041000000600736544185EB5178D7B1504133333373093654411F85EB71D9B150411F85EB2108365441D7A3700DDAB1504185EB51E805365441EC51B88EDAB150413D0AD7A30436544166666606DCB15041CDCCCC3C04365441D7A3701DDBB15041AE47E18A00365441EC51B89EDBB15041A4703D4A003654418FC2F5C8DCB15041A4703D7A033654418FC2F5D8DDB15041CDCCCC4C053654417B14AE77DFB15041713D0A87033654416181D1A6E0B150414A13707402365441DCBC06E4E0B150418A390EC90136544184260CEEE3B150416D8ADEE5FF3554416726A8AEE4B15041976132A0FE3554410AD7A3F0E6B150418FC2F568F93554412BA0A99FEAB15041B696EFF3F2355441F71AB619F0B15041899FB3A8E9355441D7A3709DF3B15041713D0AA7E3355441489FE9F0F6B15041AB9BECB6E1355441666666A6FBB150415C8FC2D5CF355441FFDBBDBFFEB15041AAC884E7B935544185EB5148F3B15041295C8F62B7355441D83F01CBEEB15041799B306EB9355441E81F79E6EAB150419BCC9C31BA355441A408E41BEFB15041C48B0979A63554413C973807F4B150410D5FB6C6A6355441FA3A6837F3B15041A831F894AD3554417E907796F8B150410782D751AF3554416E5E8A89FCB150417A0E6D51AC35544199774C97FEB15041AE458A00AC355441EA811EFB02B25041AF513DE3A135544114130766F8B1504108E8FD509D35544122D7A083F7B15041BFBE94329D355441B81E855BF7B15041295C8F929D355441295C8F82F3B1504152B81EF59D35544114AE4761EEB150417B14AE579E355441B7BBA858ECB150412202789C9D355441EC51B8AEEBB15041F6285C5F9D3554411E111CE9E0B15041FD10D6EF9D35544101030000000100000006000000BEE3B024E1B15041C255199E8A355441C3F5281CE1B15041CDCCCC9C8A3554417B14AEE7E1B150415C8FC2D590355441749FFD52E1B150414F7ACE7C983554410BE09127E2B150414DD15AD490355441BEE3B024E1B15041C255199E8A355441010300000001000000330000001AA18C06DFB15041A036D059243654411F85EB31DFB15041333333E31E365441D7A370DDE2B15041E17A14EE1F365441333333B3E3B1504148E17A8419365441F6285C5FE4B15041333333831936544177304FDCE4B15041C620B0F2133654415D88FC80E4B15041DDC244E4133654413417925EE3B150414560E5C013365441AB3CEFC0E2B150419EC4A753123654418D4D3F83E3B15041B03401671136544100000010E3B15041D7A3703D0F365441522ACE86E2B150413AFBF0C90D365441EC51B84EE1B150415C8FC2C50D365441804E1B10E0B15041629EA8EF0A365441754A71C5DFB1504167D8350C0E36544111422D96E1B150419CCDB961103654411B133CD0E1B150417384324A11365441496AB91DE2B15041EA9E5654143654413ADF866EE1B15041E9B21F3518365441010AE461E0B150411F4564721B365441ECE42B33E0B15041ACAEE7391D365441F08B2517DFB15041C1E642521E36544137B4C82EDEB150411D7605282436544152B81E85DBB15041E17A14DE23365441B81E859BDAB15041E17A14CE1E3654419A9999C9D8B15041295C8F221D3654419A9999B9D7B15041E17A149E1B3654419A9999B9D7B15041A4703D5A1A36544185EB5168D6B150413D0AD7731A365441295C8F72D5B150419A9999191A365441EC51B83ED5B15041EC51B8AE18365441AE47E11AD6B150417B14AE7717365441AE47E12AD7B15041EC51B89E1736544114AE4721D8B15041B81E85AB173654415C8FC295D8B150411F85EB510F3654410AD7A3E0D3B1504185EB51580D365441F6285C7FD5B150410AD7A3B008365441D7A370CDD1B1504185EB51F806365441F6285C5FCFB15041D7A3709D0636544114AE47B1CCB15041E17A14DE063654418FC2F508C9B15041F6285CCF07365441C3F5289CC7B15041A4703D5A163654417B14AE37C6B15041A4703D6A243654417B14AEE7C5B150417B14AE9727365441E17A14DEC4B15041AE47E12A323654411F85EBF1D0B15041EC51B84E32365441000000C0DBB1504185EB51483236544152B81EB5DCB150417B14AE4732365441E259D4A2DCB1504112F807D93236544150536519DDB150412E3B9820323654411AA18C06DFB15041A036D05924365441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000D5630099C6B1504154386A932036544156B4FFF6C4B15041C1E4FC393236544136A47C0AD5B15041093C4B4C32365441000000C0DBB1504185EB51483236544173BA8BBEDBB150414A53ED53323654416466B6C8DBB15041C31DDA1C32365441C93827EEDBB150413429075231365441E4A38155DEB15041076A884C24365441A208EB28DFB1504137ED561C1F3654415ADCB934DFB1504108F06BE01E365441AB3DCDD2DFB150418B5E5D0D1F365441C1B8E7FFDFB15041229363091F365441A622DB63E2B15041229D2CC81F3654412E1D35D7E2B150416064F8E81F365441333333B3E3B1504148E17A8419365441C7E10261E4B1504173AA2973193654414FC6DBE3E4B1504184185EDC133654412F17925EE3B150414260E5C0133654417919CDC7E2B15041B5E44A4B12365441B8288E83E3B150412B8B5F5F11365441E266653AE5B15041F7B3B55411365441524F3824E5B1504175BAA0F710365441C294B789E3B15041DA5CD0101136544133333343E3B15041AE47E11A11365441B2B77942E3B1504102552F151136544161AA341CE3B15041058E5FE80F3654410A88C5ECE2B15041FB0B5AE10E3654419A999959E2B150410AD7A3600D365441507F8948E1B15041E65C27B60D3654417E2C0E0CE0B150417B3CE11A0B365441D44936C7DFB150411A0E55F90D3654413DF0D494E1B15041541BFF5F103654416C391FB0E1B150413622F52411365441358D1A15E2B15041A792C5FD133654417F23EC8CE1B15041D1DAE18817365441FB37F76AE0B1504145B760561B365441EBE42B33E0B15041B0AEE7391D36544197E7FDFDDEB15041E900528E1E365441D31F52ECDDB15041EC992FC223365441E062689BDBB150414B627FE0233654418A48209DDAB150417B97FDD61E365441568841CBD7B15041D6014CB71B3654419A9999B9D7B1504185C704B41A365441295C8F72D5B150419A9999191A3654416658FD69D5B150412D7F9BDD19365441EC51B83ED5B15041EC51B8AE18365441A550908BD5B1504192E8274218365441AE47E11AD6B150417B14AE7717365441795FD126D8B150416D1EE445173654415C8FC295D8B150411F85EB510F3654415BBA5DE3D3B15041D6B676590D36544157233D00D4B15041F1AB85FD0C365441DAFF826AD5B150419F6CEFA60836544153BAC929D1B15041497869E00636544137A909DACCB150417F6D3DDA06365441C17929FBC8B15041440D2C5C08365441A7936DEFC8B1504142A1EBD308365441C3F5289CC7B15041A4703D5A16365441D5630099C6B1504154386A9320365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939375 - 3574156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000003F0000001E111CE9E0B15041FD10D6EF9D35544185EB51E8E0B15041A4703DFA9D35544114AE4761D6B15041C3F5282C9D355441F6285CBFD5B1504185EB5148A03554419A9999E9D4B15041B81E850BA33554417B14AE37CFB150415C8FC2B5B03554417B14AEF7CBB1504148E17AA4B7355441713D0A27C4B15041CDCCCCCCC9355441C3F528BCB1B15041295C8FB2C635544152B81E85A0B15041CDCCCCCCC33554415C8FC2659EB15041D7A3705DC335544185EB51289BB15041C3F5283CD93554418FC2F59897B15041E17A142EEF35544152B81E8598B1504100000040EF355441B81E856BA8B150415C8FC2F5EF3554419A999929BBB150413D0AD7F3F03554411F85EB71BAB1504133333393FC355441A4703DBAB9B15041295C8F3208365441AE47E1DABBB150413D0AD75308365441A4703D3AC3B15041B81E85FB0736544152B81EE5C8B15041D7A3709D06365441EC51B8FECCB15041E17A14CE053654417B14AEE7D1B15041EC51B80E06365441EC51B83ED5B15041000000600736544185EB5178D7B1504133333373093654411F85EB71D9B150411F85EB2108365441D7A3700DDAB1504185EB51E805365441EC51B88EDAB150413D0AD7A30436544166666606DCB15041CDCCCC3C04365441D7A3701DDBB15041AE47E18A00365441EC51B89EDBB15041A4703D4A003654418FC2F5C8DCB15041A4703D7A033654418FC2F5D8DDB15041CDCCCC4C053654417B14AE77DFB15041713D0A87033654416181D1A6E0B150414A13707402365441DCBC06E4E0B150418A390EC90136544184260CEEE3B150416D8ADEE5FF3554416726A8AEE4B15041976132A0FE3554410AD7A3F0E6B150418FC2F568F93554412BA0A99FEAB15041B696EFF3F2355441F71AB619F0B15041899FB3A8E9355441D7A3709DF3B15041713D0AA7E3355441489FE9F0F6B15041AB9BECB6E1355441666666A6FBB150415C8FC2D5CF355441FFDBBDBFFEB15041AAC884E7B935544185EB5148F3B15041295C8F62B7355441D83F01CBEEB15041799B306EB9355441E81F79E6EAB150419BCC9C31BA355441A408E41BEFB15041C48B0979A63554413C973807F4B150410D5FB6C6A6355441FA3A6837F3B15041A831F894AD3554417E907796F8B150410782D751AF3554416E5E8A89FCB150417A0E6D51AC35544199774C97FEB15041AE458A00AC355441EA811EFB02B25041AF513DE3A135544114130766F8B1504108E8FD509D35544122D7A083F7B15041BFBE94329D355441B81E855BF7B15041295C8F929D355441295C8F82F3B1504152B81EF59D35544114AE4761EEB150417B14AE579E355441B7BBA858ECB150412202789C9D355441EC51B8AEEBB15041F6285C5F9D3554411E111CE9E0B15041FD10D6EF9D35544101030000000100000006000000BEE3B024E1B15041C255199E8A355441C3F5281CE1B15041CDCCCC9C8A3554417B14AEE7E1B150415C8FC2D590355441749FFD52E1B150414F7ACE7C983554410BE09127E2B150414DD15AD490355441BEE3B024E1B15041C255199E8A355441010300000001000000330000001AA18C06DFB15041A036D059243654411F85EB31DFB15041333333E31E365441D7A370DDE2B15041E17A14EE1F365441333333B3E3B1504148E17A8419365441F6285C5FE4B15041333333831936544177304FDCE4B15041C620B0F2133654415D88FC80E4B15041DDC244E4133654413417925EE3B150414560E5C013365441AB3CEFC0E2B150419EC4A753123654418D4D3F83E3B15041B03401671136544100000010E3B15041D7A3703D0F365441522ACE86E2B150413AFBF0C90D365441EC51B84EE1B150415C8FC2C50D365441804E1B10E0B15041629EA8EF0A365441754A71C5DFB1504167D8350C0E36544111422D96E1B150419CCDB961103654411B133CD0E1B150417384324A11365441496AB91DE2B15041EA9E5654143654413ADF866EE1B15041E9B21F3518365441010AE461E0B150411F4564721B365441ECE42B33E0B15041ACAEE7391D365441F08B2517DFB15041C1E642521E36544137B4C82EDEB150411D7605282436544152B81E85DBB15041E17A14DE23365441B81E859BDAB15041E17A14CE1E3654419A9999C9D8B15041295C8F221D3654419A9999B9D7B15041E17A149E1B3654419A9999B9D7B15041A4703D5A1A36544185EB5168D6B150413D0AD7731A365441295C8F72D5B150419A9999191A365441EC51B83ED5B15041EC51B8AE18365441AE47E11AD6B150417B14AE7717365441AE47E12AD7B15041EC51B89E1736544114AE4721D8B15041B81E85AB173654415C8FC295D8B150411F85EB510F3654410AD7A3E0D3B1504185EB51580D365441F6285C7FD5B150410AD7A3B008365441D7A370CDD1B1504185EB51F806365441F6285C5FCFB15041D7A3709D0636544114AE47B1CCB15041E17A14DE063654418FC2F508C9B15041F6285CCF07365441C3F5289CC7B15041A4703D5A163654417B14AE37C6B15041A4703D6A243654417B14AEE7C5B150417B14AE9727365441E17A14DEC4B15041AE47E12A323654411F85EBF1D0B15041EC51B84E32365441000000C0DBB1504185EB51483236544152B81EB5DCB150417B14AE4732365441E259D4A2DCB1504112F807D93236544150536519DDB150412E3B9820323654411AA18C06DFB15041A036D05924365441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000D5630099C6B1504154386A932036544156B4FFF6C4B15041C1E4FC393236544136A47C0AD5B15041093C4B4C32365441000000C0DBB1504185EB51483236544173BA8BBEDBB150414A53ED53323654416466B6C8DBB15041C31DDA1C32365441C93827EEDBB150413429075231365441E4A38155DEB15041076A884C24365441A208EB28DFB1504137ED561C1F3654415ADCB934DFB1504108F06BE01E365441AB3DCDD2DFB150418B5E5D0D1F365441C1B8E7FFDFB15041229363091F365441A622DB63E2B15041229D2CC81F3654412E1D35D7E2B150416064F8E81F365441333333B3E3B1504148E17A8419365441C7E10261E4B1504173AA2973193654414FC6DBE3E4B1504184185EDC133654412F17925EE3B150414260E5C0133654417919CDC7E2B15041B5E44A4B12365441B8288E83E3B150412B8B5F5F11365441E266653AE5B15041F7B3B55411365441524F3824E5B1504175BAA0F710365441C294B789E3B15041DA5CD0101136544133333343E3B15041AE47E11A11365441B2B77942E3B1504102552F151136544161AA341CE3B15041058E5FE80F3654410A88C5ECE2B15041FB0B5AE10E3654419A999959E2B150410AD7A3600D365441507F8948E1B15041E65C27B60D3654417E2C0E0CE0B150417B3CE11A0B365441D44936C7DFB150411A0E55F90D3654413DF0D494E1B15041541BFF5F103654416C391FB0E1B150413622F52411365441358D1A15E2B15041A792C5FD133654417F23EC8CE1B15041D1DAE18817365441FB37F76AE0B1504145B760561B365441EBE42B33E0B15041B0AEE7391D36544197E7FDFDDEB15041E900528E1E365441D31F52ECDDB15041EC992FC223365441E062689BDBB150414B627FE0233654418A48209DDAB150417B97FDD61E365441568841CBD7B15041D6014CB71B3654419A9999B9D7B1504185C704B41A365441295C8F72D5B150419A9999191A3654416658FD69D5B150412D7F9BDD19365441EC51B83ED5B15041EC51B8AE18365441A550908BD5B1504192E8274218365441AE47E11AD6B150417B14AE7717365441795FD126D8B150416D1EE445173654415C8FC295D8B150411F85EB510F3654415BBA5DE3D3B15041D6B676590D36544157233D00D4B15041F1AB85FD0C365441DAFF826AD5B150419F6CEFA60836544153BAC929D1B15041497869E00636544137A909DACCB150417F6D3DDA06365441C17929FBC8B15041440D2C5C08365441A7936DEFC8B1504142A1EBD308365441C3F5289CC7B15041A4703D5A16365441D5630099C6B1504154386A9320365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647479 - 991791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441713D0AA78732514100000010FB345441E17A144E89325141EC51B8FEF9345441E5449FB6A13251418B5ACB6BEB345441AC002E2687325141523EC027CA345441CDCCCCEC6F3251415C8FC215D8345441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441E7E3284F6D3251413CDE5474DB345441DEA944946F325141EB9A932DDE345441E08F841271325141715938F8DF3454415C4EAF5173325141FD1256AAE23454418F70040075325141F618ACAEE434544131FFC7337632514113A0F11FE63454417388798077325141D49720AFE7345441C5E6D2367932514163FF14BDE93454411562D29E7A3251414AE0066DEB34544114CA0D3B7C325141F91AA55BED345441190CBF877D32514140BDD3EAEE345441C099E4EB7E325141EEA52696F0345441A6B01B52803251413FECF443F2345441D0CC53778132514106DCC6A3F334544102695E758232514189DD96D4F4345441AD205061833251412414B0EFF53454413C30DF8B84325141EE27EA55F7345441D98B191485325141EC465EF9F7345441E5137850863251411F0DF774F9345441BD0B890287325141F4559E4AFA345441902D73AA873251410A17CC0DFB345441E17A144E89325141EC51B8FEF93454417B66ACFFA0325141D9DC07D9EB345441CC5C03B99F325141B17EBB4DEA34544151F696319E325141261AA472E8345441667A91CF9C325141014BF2C4E6345441CC0871149B325141D49C19ABE4345441FBABA38B9A32514149405505E4345441406C025B9A325141282668CAE3345441CC255E2B9A3251411195AD90E33454419E12A9BA99325141C4811B08E33454410EF24056993251416719718EE2345441193140DE98325141C4E707FDE1345441A1AA3A5B983251412FB4445EE1345441CDFAC20D9832514192186600E1345441B1D64ABE9732514174881AA0E034544187C0654E973251419E7B8418E0345441412BCDF8963251411365CCB0DF345441336722C696325141395B6773DF3454416BC46380963251417065E41EDF3454415425020796325141659FCF8BDE345441FAAD65C1953251411F117637DE3454415ADA449295325141A2C75AFEDD345441374BCF569532514167644EB6DD3454416090740695325141F543F054DD3454417C6CACBA943251411A931CF9DC345441E96C166C94325141F908E399DC3454410468DA1F9432514135EE823DDC345441406AA4E093325141ACC2EAF0DB3454412558B27793325141B664C071DB3454418B48632C93325141ED6A7F16DB34544152EDF2DC92325141A4493DB6DA345441296BC07C9232514122A9AC41DA345441EBEF0026923251417A3C8FD8D93454412AEAD4C7913251418DDF7266D93454416A72687E913251414FAB7A0DD93454415246BA1D9132514103325498D8345441C7A55BC5903251412DBA3F2DD83454415624494A903251416F6A1E98D734544122DFABDA8F3251413163DF10D7345441660D78878F32514178CD0DACD63454419B970B328F325141032E8B44D6345441A59F05D98E32514174F0ABD8D5345441E01A406C8E32514174BFDE54D5345441D28571EA8D325141235394B7D4345441EF32B1758D32514139CF1B2AD434544196930FFC8C325141F07BB996D334544181E4F0A18C3251413538F729D33454414D53420B8C32514167D62074D23454412D24CCBD8B325141757EA616D23454413C7DADED8A3251410DC27F1BD1345441558FACEB89325141185126E4CF34544154B14CD3853251410B7202F3CA345441CDCCCCEC6F3251415C8FC215D8345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647479 - 3570376
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441713D0AA78732514100000010FB345441E17A144E89325141EC51B8FEF9345441E5449FB6A13251418B5ACB6BEB345441AC002E2687325141523EC027CA345441CDCCCCEC6F3251415C8FC215D8345441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441E7E3284F6D3251413CDE5474DB345441DEA944946F325141EB9A932DDE345441E08F841271325141715938F8DF3454415C4EAF5173325141FD1256AAE23454418F70040075325141F618ACAEE434544131FFC7337632514113A0F11FE63454417388798077325141D49720AFE7345441C5E6D2367932514163FF14BDE93454411562D29E7A3251414AE0066DEB34544114CA0D3B7C325141F91AA55BED345441190CBF877D32514140BDD3EAEE345441C099E4EB7E325141EEA52696F0345441A6B01B52803251413FECF443F2345441D0CC53778132514106DCC6A3F334544102695E758232514189DD96D4F4345441AD205061833251412414B0EFF53454413C30DF8B84325141EE27EA55F7345441D98B191485325141EC465EF9F7345441E5137850863251411F0DF774F9345441BD0B890287325141F4559E4AFA345441902D73AA873251410A17CC0DFB345441E17A144E89325141EC51B8FEF93454417B66ACFFA0325141D9DC07D9EB345441CC5C03B99F325141B17EBB4DEA34544151F696319E325141261AA472E8345441667A91CF9C325141014BF2C4E6345441CC0871149B325141D49C19ABE4345441FBABA38B9A32514149405505E4345441406C025B9A325141282668CAE3345441CC255E2B9A3251411195AD90E33454419E12A9BA99325141C4811B08E33454410EF24056993251416719718EE2345441193140DE98325141C4E707FDE1345441A1AA3A5B983251412FB4445EE1345441CDFAC20D9832514192186600E1345441B1D64ABE9732514174881AA0E034544187C0654E973251419E7B8418E0345441412BCDF8963251411365CCB0DF345441336722C696325141395B6773DF3454416BC46380963251417065E41EDF3454415425020796325141659FCF8BDE345441FAAD65C1953251411F117637DE3454415ADA449295325141A2C75AFEDD345441374BCF569532514167644EB6DD3454416090740695325141F543F054DD3454417C6CACBA943251411A931CF9DC345441E96C166C94325141F908E399DC3454410468DA1F9432514135EE823DDC345441406AA4E093325141ACC2EAF0DB3454412558B27793325141B664C071DB3454418B48632C93325141ED6A7F16DB34544152EDF2DC92325141A4493DB6DA345441296BC07C9232514122A9AC41DA345441EBEF0026923251417A3C8FD8D93454412AEAD4C7913251418DDF7266D93454416A72687E913251414FAB7A0DD93454415246BA1D9132514103325498D8345441C7A55BC5903251412DBA3F2DD83454415624494A903251416F6A1E98D734544122DFABDA8F3251413163DF10D7345441660D78878F32514178CD0DACD63454419B970B328F325141032E8B44D6345441A59F05D98E32514174F0ABD8D5345441E01A406C8E32514174BFDE54D5345441D28571EA8D325141235394B7D4345441EF32B1758D32514139CF1B2AD434544196930FFC8C325141F07BB996D334544181E4F0A18C3251413538F729D33454414D53420B8C32514167D62074D23454412D24CCBD8B325141757EA616D23454413C7DADED8A3251410DC27F1BD1345441558FACEB89325141185126E4CF34544154B14CD3853251410B7202F3CA345441CDCCCCEC6F3251415C8FC215D8345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>964241 - 262849
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000014000000D73749AD186B5141440904A0A3405441736D81F1346B514173DBFED6794054410515D73E276B51411A2E34FE6D405441BD57F8C0236B5141B3F17CEF7240544107333BAB1F6B5141E092BEB77840544170BC2D97186B5141A57B22C9824054416395FB9E156B514188AC8D02874054417F9362FA106B51417D8C99988D405441D0B52D500E6B5141735CB05391405441DA9D94350A6B5141F6108B30974054412C78DD2B076B51410EDA12749B4054419296E868036B5141187899EAA0405441F225E0A0016B5141B2A76757A3405441B33B6EF3FD6A5141EDB1E282A8405441ADCAA8E9FA6A5141DF8B0101AD405441AE818C9AFC6A51413F6C10D4AD405441034804350D6B5141F0769694B44054413B5E9A3C0D6B5141BA8D5F89B4405441A4703D2A0D6B51411F85EB81B4405441D73749AD186B5141440904A0A3405441
+</a>
+
+<b>
+0106000000010000000103000000020000001A000000713D0A87E56A51418FC2F5E8AA405441E17A14BEE56A51411F85EB91AF4054419A9999F9E66A51413D0AD7E3B5405441A4703DBAE76A5141713D0AE7B6405441C3F5287CF16A51415C8FC245AA40544114AE4711F26A514148E17A84A9405441B81E85DBFA6A514152B81E15AD405441E17A143E276B514114AE47F16D405441F6285C0F1B6B5141AE47E16A6340544166666606176B514152B81EE56940544185EB51D80D6B514152B81EE5744054415C8FC2050A6B514148E17A347640544148E17AD4056B5141B81E858B794054411F85EB41056B5141F6285C3F7E405441295C8F92FD6A514114AE47218440544185EB51B8F86A514152B81EC5864054419A9999E9F66A51411F85EBC189405441D7A3707DF66A514148E17A648D40544152B81E55F36A514185EB519892405441EC51B88EF06A5141C3F5287C92405441B81E857BEB6A5141A4703D3A9A405441C3F5284CEB6A5141C3F5282C9B40544100000000EB6A514152B81E059F4054419A9999B9E86A51411F85EBE1A14054418FC2F528E86A514100000080A5405441713D0A87E56A51418FC2F5E8AA4054410500000048E17AE4196B51418FC2F5B86840544185EB51181B6B5141666666366740544152B81E251D6B51413D0AD7E36840544185EB51F81B6B5141EC51B85E6A40544148E17AE4196B51418FC2F5B868405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>964241 - 1000876
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000014000000D73749AD186B5141440904A0A3405441736D81F1346B514173DBFED6794054410515D73E276B51411A2E34FE6D405441BD57F8C0236B5141B3F17CEF7240544107333BAB1F6B5141E092BEB77840544170BC2D97186B5141A57B22C9824054416395FB9E156B514188AC8D02874054417F9362FA106B51417D8C99988D405441D0B52D500E6B5141735CB05391405441DA9D94350A6B5141F6108B30974054412C78DD2B076B51410EDA12749B4054419296E868036B5141187899EAA0405441F225E0A0016B5141B2A76757A3405441B33B6EF3FD6A5141EDB1E282A8405441ADCAA8E9FA6A5141DF8B0101AD405441AE818C9AFC6A51413F6C10D4AD405441034804350D6B5141F0769694B44054413B5E9A3C0D6B5141BA8D5F89B4405441A4703D2A0D6B51411F85EB81B4405441D73749AD186B5141440904A0A3405441
+</a>
+
+<b>
+0106000000010000000103000000020000001A000000713D0A87E56A51418FC2F5E8AA405441E17A14BEE56A51411F85EB91AF4054419A9999F9E66A51413D0AD7E3B5405441A4703DBAE76A5141713D0AE7B6405441C3F5287CF16A51415C8FC245AA40544114AE4711F26A514148E17A84A9405441B81E85DBFA6A514152B81E15AD405441E17A143E276B514114AE47F16D405441F6285C0F1B6B5141AE47E16A6340544166666606176B514152B81EE56940544185EB51D80D6B514152B81EE5744054415C8FC2050A6B514148E17A347640544148E17AD4056B5141B81E858B794054411F85EB41056B5141F6285C3F7E405441295C8F92FD6A514114AE47218440544185EB51B8F86A514152B81EC5864054419A9999E9F66A51411F85EBC189405441D7A3707DF66A514148E17A648D40544152B81E55F36A514185EB519892405441EC51B88EF06A5141C3F5287C92405441B81E857BEB6A5141A4703D3A9A405441C3F5284CEB6A5141C3F5282C9B40544100000000EB6A514152B81E059F4054419A9999B9E86A51411F85EBE1A14054418FC2F528E86A514100000080A5405441713D0A87E56A51418FC2F5E8AA4054410500000048E17AE4196B51418FC2F5B86840544185EB51181B6B5141666666366740544152B81E251D6B51413D0AD7E36840544185EB51F81B6B5141EC51B85E6A40544148E17AE4196B51418FC2F5B868405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>964241 - 3660562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000014000000D73749AD186B5141440904A0A3405441736D81F1346B514173DBFED6794054410515D73E276B51411A2E34FE6D405441BD57F8C0236B5141B3F17CEF7240544107333BAB1F6B5141E092BEB77840544170BC2D97186B5141A57B22C9824054416395FB9E156B514188AC8D02874054417F9362FA106B51417D8C99988D405441D0B52D500E6B5141735CB05391405441DA9D94350A6B5141F6108B30974054412C78DD2B076B51410EDA12749B4054419296E868036B5141187899EAA0405441F225E0A0016B5141B2A76757A3405441B33B6EF3FD6A5141EDB1E282A8405441ADCAA8E9FA6A5141DF8B0101AD405441AE818C9AFC6A51413F6C10D4AD405441034804350D6B5141F0769694B44054413B5E9A3C0D6B5141BA8D5F89B4405441A4703D2A0D6B51411F85EB81B4405441D73749AD186B5141440904A0A3405441
+</a>
+
+<b>
+0106000000010000000103000000020000001A000000713D0A87E56A51418FC2F5E8AA405441E17A14BEE56A51411F85EB91AF4054419A9999F9E66A51413D0AD7E3B5405441A4703DBAE76A5141713D0AE7B6405441C3F5287CF16A51415C8FC245AA40544114AE4711F26A514148E17A84A9405441B81E85DBFA6A514152B81E15AD405441E17A143E276B514114AE47F16D405441F6285C0F1B6B5141AE47E16A6340544166666606176B514152B81EE56940544185EB51D80D6B514152B81EE5744054415C8FC2050A6B514148E17A347640544148E17AD4056B5141B81E858B794054411F85EB41056B5141F6285C3F7E405441295C8F92FD6A514114AE47218440544185EB51B8F86A514152B81EC5864054419A9999E9F66A51411F85EBC189405441D7A3707DF66A514148E17A648D40544152B81E55F36A514185EB519892405441EC51B88EF06A5141C3F5287C92405441B81E857BEB6A5141A4703D3A9A405441C3F5284CEB6A5141C3F5282C9B40544100000000EB6A514152B81E059F4054419A9999B9E86A51411F85EBE1A14054418FC2F528E86A514100000080A5405441713D0A87E56A51418FC2F5E8AA4054410500000048E17AE4196B51418FC2F5B86840544185EB51181B6B5141666666366740544152B81E251D6B51413D0AD7E36840544185EB51F81B6B5141EC51B85E6A40544148E17AE4196B51418FC2F5B868405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532034 - 1053047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81E75FA16514185EB51B8B0855441713D0AF703175141EC51B8DEA98554411F85EBA10F17514133333353A0855441000000000517514185EB51989B8554419A9999B90217514185EB51C89A855441B81E85DBF7165141EC51B84EA485544114AE4751F716514166666696A385544166666656EE16514185EB5148AA855441E17A144EE616514166666646B0855441713D0A87E516514100000090AF85544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441EC51B81EDC165141295C8FB2A7855441EC51B88EDA1651415C8FC2D5A485544114AE4781D81651411F85EB81A18554417B14AE57C11651413D0AD773B2855441C3F528ACC2165141AE47E11AB985544187B92DD8C4165141A6CB6AE5BF8554411D0B8E91C2165141E080BBDAC085544146FB9421C116514124F20D74C1855441E17A14FEBE165141F6285C5FC2855441295C8F42BA165141713D0A37C4855441F6285C4FBD165141B81E85BBCD8554412EA0E394BD1651416AA74154CF855441E17A14CECD165141E17A14CEC9855441295C8FD2D416514133333383C78554413D0AD753E31651418FC2F578C0855441C3F528BCEF1651413D0AD7B3B8855441A4703DCAEF1651415C8FC295B785544152B81E75FA16514185EB51B8B0855441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F42BA165141713D0A37C4855441F6285C4FBD165141B81E85BBCD8554412EA0E394BD1651416AA74154CF855441E17A14CECD165141E17A14CEC9855441295C8FD2D416514133333383C78554411F2A105FE316514137657291C08554413D0AD753E31651418FC2F578C08554410BD8DE6BE3165141584AE969C0855441DF1F5AA5DE165141FD83E652B585544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441EC51B81EDC165141295C8FB2A7855441EC51B88EDA1651415C8FC2D5A485544114AE4781D81651411F85EB81A18554417B14AE57C11651413D0AD773B2855441C3F528ACC2165141AE47E11AB98554418CB92DD8C4165141A6CB6AE5BF8554411B0B8E91C2165141E080BBDAC08554418C252AD4C11651418720A529C1855441E17A14FEBE165141F6285C5FC2855441295C8F42BA165141713D0A37C4855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532034 - 3340751
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81E75FA16514185EB51B8B0855441713D0AF703175141EC51B8DEA98554411F85EBA10F17514133333353A0855441000000000517514185EB51989B8554419A9999B90217514185EB51C89A855441B81E85DBF7165141EC51B84EA485544114AE4751F716514166666696A385544166666656EE16514185EB5148AA855441E17A144EE616514166666646B0855441713D0A87E516514100000090AF85544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441EC51B81EDC165141295C8FB2A7855441EC51B88EDA1651415C8FC2D5A485544114AE4781D81651411F85EB81A18554417B14AE57C11651413D0AD773B2855441C3F528ACC2165141AE47E11AB985544187B92DD8C4165141A6CB6AE5BF8554411D0B8E91C2165141E080BBDAC085544146FB9421C116514124F20D74C1855441E17A14FEBE165141F6285C5FC2855441295C8F42BA165141713D0A37C4855441F6285C4FBD165141B81E85BBCD8554412EA0E394BD1651416AA74154CF855441E17A14CECD165141E17A14CEC9855441295C8FD2D416514133333383C78554413D0AD753E31651418FC2F578C0855441C3F528BCEF1651413D0AD7B3B8855441A4703DCAEF1651415C8FC295B785544152B81E75FA16514185EB51B8B0855441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F42BA165141713D0A37C4855441F6285C4FBD165141B81E85BBCD8554412EA0E394BD1651416AA74154CF855441E17A14CECD165141E17A14CEC9855441295C8FD2D416514133333383C78554411F2A105FE316514137657291C08554413D0AD753E31651418FC2F578C08554410BD8DE6BE3165141584AE969C0855441DF1F5AA5DE165141FD83E652B585544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441EC51B81EDC165141295C8FB2A7855441EC51B88EDA1651415C8FC2D5A485544114AE4781D81651411F85EB81A18554417B14AE57C11651413D0AD773B2855441C3F528ACC2165141AE47E11AB98554418CB92DD8C4165141A6CB6AE5BF8554411B0B8E91C2165141E080BBDAC08554418C252AD4C11651418720A529C1855441E17A14FEBE165141F6285C5FC2855441295C8F42BA165141713D0A37C4855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>912429 - 912681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000020000000B64B10F7EBE350413E079B0F39A45441CDCCCCCCEDE35041B81E854B3BA45441E5AA5EFFEFE35041032D91B43DA4544182AEFC6CF8E350411D440E3445A454415C3F1C20FCE35041260EEAB147A454410B51D53EFFE350415296A58C49A454418C22B77F02E45041541C2C6D4BA45441AE87A9480DE450415DCA14A651A45441F8C19C7614E45041FBFD68C056A4544155BC931A15E4504164BECF3357A45441458ADC0919E45041D088E9C159A45441CBD67C7124E450411E1DB09960A454415BC26BC72CE45041DB89947264A45441A81A3FF638E4504185ED65F967A45441E7197D4F42E450419F8C37CA68A454419FAF789642E45041864BFBCE68A45441E1ADDC6150E45041BD9F05BC69A454410AD7A3B052E450413D0AD73369A454418FC2F52842E4504148E17A7466A4544114AE47A13AE450413D0AD7A364A45441E17A144E2EE450418FC2F59860A45441F6285C3F25E450417B14AE175CA454413D0AD7331EE45041333333E357A45441F6285C9F1FE45041EC51B80E55A454413D0AD7E31DE45041AE47E18A53A4544152B81E0519E450417B14AED754A45441E17A14AE08E45041713D0AC74AA45441F7DF61B8FBE3504159E2E34E42A454411EDFB876F1E35041FD0608F73AA4544114AE4741EEE350417B14AE4738A45441F6285C1FECE35041295C8F0239A45441B64B10F7EBE350413E079B0F39A45441
+</a>
+
+<b>
+010600000001000000010300000001000000210000009AAF789642E45041884BFBCE68A45441EB197D4F42E450419D8C37CA68A45441A51A3FF638E4504184ED65F967A454415DC26BC72CE45041DB89947264A45441CED67C7124E45041231DB09960A45441408ADC0919E45041CD88E9C159A45441D4B996F916E450418CD8F28458A45441FDC19C7614E45041FEFD68C056A45441AE87A9480DE450415FCA14A651A454415D7344B0FCE350410BE8FF1248A454410A9FAFFCF4E35041402F33E342A454418BF6136CF1E3504125A497443FA45441CDCCCCCCEDE35041B81E854B3BA4544195F40FBCEBE35041AA28C5C738A45441BC46C8F0E9E35041CDFD64B739A45441996F2676E8E350410115F17C3AA454412B9DFF0FEAE35041364B21313DA4544166666646EDE3504185EB517840A45441FCD009AEF0E350411BEA0FC643A4544166666626F4E35041D7A3707D46A4544148E17A14FDE35041AE47E15A4CA45441C3F5286C09E45041666666E652A45441CDCCCCDC0FE450417B14AEC757A4544148E17AC41BE45041CDCCCC3C61A454419A9999791CE450419A99991962A454419A9999D926E4504185EB510867A454413D0AD7C32EE45041F6285C2F6AA4544185EB517833E450413D0AD7636BA45441E17A142E40E45041EC51B8AE6BA454415C8FC2B545E450413D0AD7C36BA454411F85EB114BE4504148E17AF46AA45441DDADDC6150E45041BF9F05BC69A454419AAF789642E45041884BFBCE68A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986009 - 3104470
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000066666656D71051413D0AD793014A55411F85EBF1D3105141A4703DBA004A5541E17A141ECB105141CDCCCC6CFF495541666666B6BB105141AE47E16AFE49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A55417B14AE17BA105141000000A00E4A55418FC2F568BD10514114AE4731144A554148E17A24E51051413D0AD7030A4A5541B81E858BE210514114AE4781064A5541CDCCCC6CE1105141C3F5284C044A55417B14AEE7DF105141E17A144E014A55415C8FC285DF105141D7A3704D004A554166666656D71051413D0AD793014A5541
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AF594277D01051412CA0D236004A5541BE1C952CCB1051419399F06EFF495541D51A54CCC6105141B7A07B24FF495541C29C6F8DC1105141ED17A8CCFE495541D0D74601BE105141BB214391FE495541666666B6BB105141AE47E16AFE495541F712328DB8105141754466F2FD49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A5541DB6BAE06B6105141EAE29C4D074A5541F5309F6FB8105141C68474A40B4A55417657128EBA10514158FAAF660F4A55412E2E73D9BC10514133347040134A5541820F2E6FBD1051410F909E31144A55410D7AFFCDC2105141FCC386CF124A55414D61121AD0105141783992670F4A5541FC218256D7105141EE91118D0D4A5541EA74B260E1105141476E77000B4A554148E17A24E51051413D0AD7030A4A55413B018C54E41051415014D9E3084A5541DDA0869EE21051412D70F69A064A5541B81E858BE210514114AE4781064A5541140ED2E6E11051412308A93C054A5541EB97E6B5E0105141A5BD13E4024A5541DA7C9315E01051415D2070A8014A554162E9A4D7DF10514136850324014A55415C8FC285DF105141D7A3704D004A5541930DE8C5DB1051410B83F5E2004A554166666656D71051413D0AD793014A5541CB203C62D3105141670A0AA5004A5541D1305349D1105141B669D155004A5541AF594277D01051412CA0D236004A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986009 - 3391341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000066666656D71051413D0AD793014A55411F85EBF1D3105141A4703DBA004A5541E17A141ECB105141CDCCCC6CFF495541666666B6BB105141AE47E16AFE49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A55417B14AE17BA105141000000A00E4A55418FC2F568BD10514114AE4731144A554148E17A24E51051413D0AD7030A4A5541B81E858BE210514114AE4781064A5541CDCCCC6CE1105141C3F5284C044A55417B14AEE7DF105141E17A144E014A55415C8FC285DF105141D7A3704D004A554166666656D71051413D0AD793014A5541
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AF594277D01051412CA0D236004A5541BE1C952CCB1051419399F06EFF495541D51A54CCC6105141B7A07B24FF495541C29C6F8DC1105141ED17A8CCFE495541D0D74601BE105141BB214391FE495541666666B6BB105141AE47E16AFE495541F712328DB8105141754466F2FD49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A5541DB6BAE06B6105141EAE29C4D074A5541F5309F6FB8105141C68474A40B4A55417657128EBA10514158FAAF660F4A55412E2E73D9BC10514133347040134A5541820F2E6FBD1051410F909E31144A55410D7AFFCDC2105141FCC386CF124A55414D61121AD0105141783992670F4A5541FC218256D7105141EE91118D0D4A5541EA74B260E1105141476E77000B4A554148E17A24E51051413D0AD7030A4A55413B018C54E41051415014D9E3084A5541DDA0869EE21051412D70F69A064A5541B81E858BE210514114AE4781064A5541140ED2E6E11051412308A93C054A5541EB97E6B5E0105141A5BD13E4024A5541DA7C9315E01051415D2070A8014A554162E9A4D7DF10514136850324014A55415C8FC285DF105141D7A3704D004A5541930DE8C5DB1051410B83F5E2004A554166666656D71051413D0AD793014A5541CB203C62D3105141670A0AA5004A5541D1305349D1105141B669D155004A5541AF594277D01051412CA0D236004A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986079 - 57260
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000B4B4433708D15041EF3E15BE03BC5441A21ADA0F03D15041E169C9D4BCBB5441813280DFF3D050411C3E87A7BDBB5441EC51B89EF8D0504152B81E15F7BB5441B4B4433708D15041EF3E15BE03BC5441
+</a>
+
+<b>
+0106000000020000000103000000010000000B0000008E1247FC04D150413776E24BD7BB5441E32E14BE08D150411593812B04BC54411F85EB810DD150419A99990908BC5441B81E85EB04D15041F6285C1FA0BB54417B14AEA7F1D05041C3F528CCA2BB5441E94130A5F3D05041FFA276E5BABB5441D51329AB02D150411E92B131BABB5441E0CB99E102D15041F8224BD7BCBB54419E1ADA0F03D15041E169C9D4BCBB5441BACA8CC804D1504178F22E84D4BB54418E1247FC04D150413776E24BD7BB5441010300000001000000040000009BD82E6C05D15041FA4F8C4FDDBB5441B6B4433708D15041EC3E15BE03BC54410FFA2CB708D150411435E72504BC54419BD82E6C05D15041FA4F8C4FDDBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>865868 - 197196
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000004010000295C8F92DE325141AE47E19A9639554133333313E03251410AD7A3A0A0395541295C8FC2DD325141C3F5282CA8395541F6285CFFDB325141A4703D8AAD3955418FC2F5A8DA325141295C8F12B1395541D7A370CDD832514100000010B53955410AD7A360DA3251411F85EB61B539554185EB5158D93251418FC2F5D8BC3955413D0AD713D93251415C8FC2F5C2395541666666C6D83251410AD7A360C53955410AD7A320D9325141713D0A47C83955413D0AD7D3D8325141AE47E10ACD395541C3F5281CD83251411F85EBF1D039554152B81E85D7325141D7A370FDD3395541A4703D0AD83251419A9999D9D4395541000000C0D83251410AD7A3F0D439554100000020DA3251415C8FC215D53955419A9999C9DB32514152B81EE5CF395541D7A3704DDD325141F6285C3FCA395541713D0AF7DE325141713D0A77C53955417B14AEB7E23251413D0AD733BD3955413D0AD7D3E13251419A9999E9B539554152B81EA5E5325141295C8F32B6395541AE47E13AF032514148E17AE4B6395541713D0A77F2325141666666A6B7395541D7A3707DF3325141EC51B8CEBA39554152B81ED5F4325141B81E857BBD395541CDCCCC9CF532514100000020BD395541B81E854BF5325141295C8F42BC39554100000030F5325141B81E855BBB395541A4703D4AF53251413D0AD783BA3955415C8FC285F5325141C3F528FCB939554166666686F5325141B81E850BB939554152B81E55F532514148E17A64B83955417B14AE17F5325141E17A14EEB73955417B14AE77F432514185EB5178B7395541A4703D9AF3325141666666E6B6395541E17A14DEF132514133333323B6395541713D0A47F1325141713D0AA7B53955415C8FC2C5F0325141D7A370CDB4395541AE47E1DAF032514166666636B43955419A9999B9F1325141C3F528DCB2395541B81E85BBF1325141EC51B81EB2395541B81E857BF132514114AE47C1B03955417B14AE67F1325141C3F5280CAF39554100000080F132514148E17A54AE3955419A999919F2325141295C8F52AD39554185EB5128F2325141B81E85CBAC395541B81E85DBF132514152B81E85AC39554133333323F13251410AD7A3C0AC395541B81E850BEF32514166666656AE395541EC51B83EEE3251411F85EB01AE395541C3F5282CED325141D7A370CDAD395541E17A142EEC32514185EB5118AD395541A4703D9AEB3251418FC2F568AC3955410AD7A360EB325141EC51B81EAB39554152B81E55EB3251417B14AE67AA39554148E17AB4EB325141EC51B80EA939554166666646EC3251418FC2F548A739554100000070EC325141D7A3700DA63955413D0AD793EC3251419A999939A5395541F6285CEFEC32514185EB51B8A4395541A4703D8AEF3251419A999979A43955415C8FC205F03251411F85EB41A43955417B14AE17F0325141AE47E1DAA3395541295C8F12F0325141713D0AE7A2395541713D0A57F032514100000040A2395541A4703DFAF0325141B81E856BA23955413D0AD7F3F1325141713D0AE7A23955413D0AD7A3F23251415C8FC205A33955418FC2F548F33251417B14AED7A2395541713D0AF7F3325141295C8F42A2395541E17A140EF4325141B81E853BA1395541A4703D7AF3325141C3F528CCA039554148E17A74F2325141E17A148EA039554133333363F13251419A9999C99F3955411F85EB01F1325141CDCCCC1C9F395541CDCCCC8CF03251419A9999F99C39554148E17AD4F0325141295C8F629C395541F6285C1FF1325141EC51B8DE9B395541D7A3706DF2325141C3F5284C9B395541F6285CEFF2325141AE47E1FA9A395541A4703D7AF3325141D7A3707D9A3955417B14AEE7F33251415C8FC2C599395541C3F5286CF432514185EB5138993955411F85EB91F53251418FC2F53898395541000000F0F532514185EB51B89739554114AE4711F6325141EC51B8DE9639554114AE47F1F532514152B81ED595395541A4703D4AF5325141666666F693395541EC51B8FEF4325141A4703D1A93395541295C8F22F53251416666666692395541713D0A77F5325141333333C391395541EC51B8EEF5325141EC51B82E91395541333333A3F6325141D7A370DD903955413D0AD783F7325141F6285C7F9039554185EB5148F832514114AE475190395541666666E6F83251413333330390395541D7A3704DF9325141C3F5285C8F3955415C8FC275F932514185EB51D88E395541AE47E15AF9325141295C8F728E3955419A9999C9F8325141D7A370BD8E395541F6285C1FF8325141E17A143E8F39554152B81E15F7325141333333A38F395541295C8FA2F632514148E17A748F39554114AE4721F63251411F85EBF18E39554185EB51F8F53251415C8FC2258E395541AE47E10AF63251413D0AD7E38D395541713D0A27F63251418FC2F5A88D3955411F85EB51F6325141B81E856B8D395541B81E85ABF63251417B14AE178D39554148E17A34F7325141F6285CBF8C39554114AE47C1F7325141713D0A778C3955417B14AE57F8325141F6285CFF8B395541A4703D7AF83251413D0AD7E38B395541A4703D8AF8325141F6285C9F8B395541295C8FA2F832514152B81E458B395541B81E858BF8325141000000E08A395541CDCCCC8CF8325141CDCCCCAC8A395541713D0A47F83251419A9999798A395541C3F528ECF73251419A9999498A39554100000080F732514152B81E258A395541E17A141EF73251413D0AD7338A39554114AE47D1F6325141666666468A395541F6285C5FF63251419A9999998A395541E17A14EEF53251413D0AD7E38A39554100000070F532514114AE47218B395541D7A3701DF53251410AD7A3608B3955413D0AD7C3F432514185EB51A88B395541EC51B88EF432514152B81EC58B39554185EB5138F43251417B14AEC78B395541E17A14DEF33251411F85EBB18B395541295C8F82F3325141C3F5287C8B395541C3F528FCF232514148E17A348B3955419A999969F23251410AD7A3E08A395541F6285C2FF2325141333333B38A395541EC51B80EF23251417B14AE778A39554152B81EF5F1325141F6285C3F8A3955410AD7A3F0F1325141666666068A395541CDCCCCFCF132514133333393893955418FC2F508F2325141EC51B83E8939554148E17A24F232514166666606893955411F85EB41F232514185EB51D888395541C3F5286CF2325141E17A14AE883955418FC2F588F232514185EB519888395541E17A14BEF2325141CDCCCC7C883955415C8FC2F5F2325141EC51B86E88395541A4703D2AF3325141E17A146E88395541B81E855BF33251410AD7A37088395541B81E858BF3325141295C8F8288395541CDCCCCACF332514148E17A8488395541C3F528DCF332514152B81E7588395541000000F0F33251410AD7A350883955418FC2F5E8F3325141EC51B82E88395541295C8FC2F332514114AE47018839554148E17A94F33251415C8FC2E587395541A4703D3AF3325141CDCCCCAC87395541713D0AF7F23251413D0AD79387395541AE47E1BAF2325141D7A3707D87395541E17A148EF232514148E17A54873955418FC2F578F2325141713D0A17873955411F85EB71F23251415C8FC2D58639554133333363F2325141295C8F6286395541295C8F82F2325141333333F385395541333333B3F232514185EB518885395541B81E85DBF2325141A4703D3A853955415C8FC215F332514114AE4711853955417B14AE57F33251413D0AD7F384395541A4703DAAF3325141000000E084395541AE47E12AF4325141713D0AD784395541333333C3F43251413D0AD7D3843955413D0AD713F5325141CDCCCCBC843955419A999949F5325141CDCCCC8C84395541F6285C6FF5325141C3F5284C843955419A999989F53251416666660684395541713D0A97F5325141295C8FA283395541333333A3F53251411F85EB318339554148E17AE4F5325141AE47E18A823955415C8FC2F5F5325141713D0A578239554148E17A24F63251410AD7A31082395541B81E854BF63251413D0AD7E381395541AE47E17AF632514148E17AB481395541D7A370CDF6325141AE47E17A813955410AD7A330F73251413333330381395541E17A143EF73251411F85EBB1803955417B14AE37F7325141CDCCCC5C80395541A4703D1AF7325141C3F528EC7E395541CDCCCC2CF7325141295C8FD27D3955418FC2F538F73251419A9999797D39554185EB5158F7325141B81E851B7D3955417B14AE67F7325141C3F528BC7C3955415C8FC255F732514148E17A547C395541F6285C2FF73251411F85EB017C39554114AE4701F7325141CDCCCC7C7B395541666666B6F6325141666666267B395541C3F5285CF6325141CDCCCCEC7A395541E17A14FEF5325141B81E85AB7A3955415C8FC2B5F53251413D0AD7837A395541713D0A77F5325141C3F5286C7A395541B81E853BF5325141295C8F227A39554133333333F53251413D0AD7D3793955418FC2F548F5325141713D0A377939554185EB5158F532514185EB516878395541F6285C5FF53251415C8FC2B57739554152B81E85F5325141D7A3704D77395541D7A370ADF53251415C8FC2057739554152B81EE5F5325141AE47E1DA76395541713D0A37F6325141C3F528CC76395541B81E858BF6325141F6285CBF76395541EC51B8DEF6325141333333C376395541D7A3703DF732514114AE47D176395541CDCCCC7CF7325141B81E85FB763955410AD7A3B0F73251419A99992977395541AE47E1EAF73251413333336377395541EC51B81EF8325141CDCCCC7C773955419A999959F8325141F6285C7F77395541F6285C7FF83251415C8FC26577395541AE47E18AF832514152B81E457739554148E17A84F8325141CDCCCC0C773955415C8FC275F8325141AE47E1CA7639554166666666F8325141B81E856B763955417B14AEA7F8325141CDCCCCDC75395541CDCCCC8CF832514152B81E35753955419A999989F83251410AD7A3D07439554133333373F8325141EC51B87E743955410AD7A350F8325141E17A140E74395541C3F5282CF8325141D7A3708D733955419A999909F8325141C3F528DC72395541333333F3F7325141A4703D5A72395541000000F0F7325141333333E3713955419A999909F8325141AE47E18A71395541E17A141EF832514114AE47317139554185EB51F8F73251417B14AEE770395541333333D3F7325141666666567039554152B81EE5F7325141333333B36F3955419A9999E9F732514185EB51E86E3955417B14AE17F83251417B14AE476E3955415C8FC275F8325141E17A14CE6D395541666666C6F8325141295C8F226D395541EC51B88EF932514148E17A146C395541D7A370BDF932514152B81E656B395541000000E0F9325141A4703D8A6A395541713D0A27FA325141EC51B84E6939554114AE4761FA3251413333335368395541295C8F62FA325141C3F5281C68395541AE47E11AF9325141B81E85BB673955413D0AD7F3F7325141B81E854B693955413D0AD7F3F4325141D7A370ED6B395541CDCCCCDCF03251417B14AE976E3955413D0AD7B3EF3251418FC2F5586F3955411F85EBB1EA32514185EB51E8723955410AD7A380E8325141666666E674395541F6285C1FE7325141A4703D6A763955413D0AD7D3E532514114AE47F1773955411F85EB21E53251410AD7A30079395541AE47E1AAE2325141A4703D5A7D395541AE47E12AE13251410AD7A320813955415C8FC205DF325141F6285CFF88395541295C8F52DE325141666666D68F395541295C8F92DE325141AE47E19A96395541
+</a>
+
+<b>
+010600000001000000010300000001000000700100000496B98EF432514118831EC58B39554165B46184F432514163236DC58B3955410F5D5238F4325141E851AFC78B3955412F384502F43251411792A5BA8B395541E17A14DEF33251411F85EBB18B395541295C8F82F3325141C3F5287C8B395541C3F528FCF232514148E17A348B395541972681B8F2325141A10AC70D8B3955416EA29869F2325141AF32A4E08A3955418B779033F2325141BBF47AB68A395541F6285C2FF2325141333333B38A395541382C2C17F2325141D8ED17878A395541EC51B80EF23251417B14AE778A39554152B81EF5F1325141F6285C3F8A3955410AD7A3F0F1325141666666068A395541248E6CF3F13251415F5C06EC89395541A5F7CBFCF13251414320329389395541DA2DCE02F2325141FF757A69893955418FC2F508F2325141EC51B83E893955418AA60622F232514132146C0B893955413CFA7A24F2325141110166068939554119C9DC2AF23251418EFB68FC883955411F85EB41F232514185EB51D888395541C3F5286CF2325141E17A14AE88395541897BB675F232514179C0DCA688395541BC9AF488F2325141FC5D529888395541ADEBF88CF2325141CCC63D9688395541E17A14BEF2325141CDCCCC7C883955415C8FC2F5F2325141EC51B86E88395541A4703D2AF3325141E17A146E8839554163A7804AF3325141B287C16F8839554188BC845BF3325141645BA370883955415B6E6764F332514188EAF47388395541B81E858BF3325141295C8F8288395541841F9BABF3325141AB3E698488395541A7E8CCACF332514140D87A84883955417CB753C4F33251416980D97C88395541A2E828DCF33251419C9E1E758839554116E3F4DFF3325141DAA0236E88395541000000F0F33251410AD7A3508839554183B533EEF33251410B13FA4788395541E157F4E8F3325141E71FB72E88395541D72B8FC2F33251410DC0480188395541679126A4F3325141E06D1EEF8739554148E17A94F33251415C8FC2E587395541A4703D3AF3325141CDCCCCAC87395541713D0AF7F23251413D0AD79387395541AE47E1BAF2325141D7A3707D873955415A754AADF2325141CC000471873955411A5A138EF2325141254E7A548739554187E0F478F2325141DF55091787395541BAF06772F23251419F4644DA863955411F85EB71F23251415C8FC2D586395541369C886EF2325141670C42BB86395541CEEA3263F23251410B348E62863955411DE38E82F2325141B49833F385395541A809C08DF232514199729CDA85395541333333B3F232514185EB5188853955419DD705C5F2325141BC53CE6585395541950C84DBF2325141B2333D3A853955411E3F5009F33251418E9A081A853955415C8FC215F332514114AE4711853955411F93E715F33251412F2637118539554177F5AC57F3325141F3B4D5F384395541C7DD448EF33251410DC2B8E684395541A4703DAAF3325141000000E084395541AE47E12AF4325141713D0AD78439554172FC8654F43251412C412AD684395541DA0734C3F43251418940D6D384395541F4D05FF9F432514106945CC4843955418398D613F53251414BEDCCBC84395541776AFE19F5325141E3364EB7843955419A999949F5325141CDCCCC8C84395541E833766DF532514158DA684F843955415B1F5C6FF5325141AAE0284C84395541E8930D75F5325141925C063D84395541977B9989F532514130B6660684395541AD14BF8AF5325141DC41E2FD83395541713D0A97F5325141295C8FA283395541749D5BA0F532514113413F4C83395541161533A3F5325141DD47EA318339554133FCEBBEF53251416319FCEA8239554148E17AE4F5325141AE47E18A823955413EA894F3F5325141CBF2935D82395541F986C2F5F5325141FFF909578239554156BD7A24F6325141407BA2108239554111C00136F6325141F5F886FC81395541B81E854BF63251413D0AD7E381395541AE47E17AF632514148E17AB481395541D7A370CDF6325141AE47E17A813955417AECCC18F7325141BB12F61F8139554150FEA330F7325141B345320381395541E17A143EF73251411F85EBB1803955412C2D163AF732514103E2CE7C803955411B44AD37F7325141F653CC5C80395541975DCA2BF7325141BB33ECC77F395541A4703D1AF7325141C3F528EC7E395541D79EBB26F7325141B1D79C2E7E3955414449CC2CF7325141BB438ED27D395541D3D5F530F73251414BC91FB47D3955418FC2F538F73251419A9999797D39554185EB5158F7325141B81E851B7D3955417B14AE67F7325141C3F528BC7C3955412FCBC456F732514141F2505A7C395541FF76C255F7325141E6AC7A547C395541F6285C2FF73251411F85EB017C39554114AE4701F7325141CDCCCC7C7B395541C540A7FAF63251415E6227757B395541E69B65B6F6325141AD4A66267B3955411B789D62F6325141D497EBF07A395541C3F5285CF6325141CDCCCCEC7A395541E17A14FEF5325141B81E85AB7A3955410ADD95CBF5325141DEA3D08F7A3955411A9EC3B5F5325141C135D8837A39554147CF0877F53251415FED286C7A395541AB29853BF5325141F60190227A395541571F3233F53251412F57D8D3793955413062F33CF5325141C4D5938D793955418FC2F548F5325141713D0A377939554185EB5158F532514185EB516878395541F6285C5FF53251415C8FC2B5773955416217367EF5325141F5D986607739554114151E85F53251410F0E724D77395541D7A370ADF53251415C8FC20577395541F8397DD1F5325141D97CFFE9763955419D501FE5F53251418149E0DA763955415A460B37F6325141998727CC763955419A2C858BF63251414F185CBF76395541A14E0393F632514114B1B4BF76395541EC51B8DEF6325141333333C37639554172002901F7325141AFC951C8763955419F7F6F3DF7325141EC4646D176395541C50BFB67F73251415DF3A3ED76395541CDCCCC7CF7325141B81E85FB763955410AD7A3B0F73251419A99992977395541AE47E1EAF73251413333336377395541EC51B81EF8325141CDCCCC7C7739554139C27647F83251411E4C927E77395541DF8C9859F832514121B15B7F773955411CD5427EF8325141614A816677395541F6285C7FF83251415C8FC26577395541AE47E18AF832514152B81E457739554148E17A84F8325141CDCCCC0C773955415C8FC275F8325141AE47E1CA7639554166666666F8325141B81E856B76395541E998667AF832514191F6CA3F7639554180BBACA7F83251414E3CCCDC753955417406CC8CF832514105681F3575395541618D678BF832514119244D09753955419A999989F83251410AD7A3D07439554111F3EB79F8325141BE584D9774395541A9493273F832514187F3B67E7439554125F9CF65F832514173191653743955410AD7A350F8325141E17A140E74395541C3F5282CF8325141D7A3708D733955419A999909F8325141C3F528DC72395541333333F3F7325141A4703D5A72395541000000F0F7325141333333E3713955415D3561FEF7325141E50797B1713955419A999909F8325141AE47E18A71395541E17A141EF832514114AE47317139554185EB51F8F73251417B14AEE770395541AD57E1E7F73251410D9456A770395541412532D3F7325141FC8F67567039554153751BDFF7325141E579F5E96F39554152B81EE5F7325141333333B36F3955419A9999E9F732514185EB51E86E3955417B14AE17F83251417B14AE476E3955415C8FC275F8325141E17A14CE6D395541A5C87D85F832514193A39EAC6D395541A83765C6F8325141CE588F226D39554166017787F9325141B2FD421E6C39554131E1B78EF932514146797B146C395541151170BDF9325141EF2E1F656B395541DEE80EDAF93251412403DFAF6A395541000000E0F9325141A4703D8A6A395541713D0A27FA325141EC51B84E6939554114AE4761FA3251413333335368395541E63BD661FA325141EC60413B68395541C3F28E62FA325141ADD6281C68395541AE47E11AF9325141B81E85BB67395541653689E3F832514159748D066839554113F4D7F3F73251419890854B693955413D0AD7F3F4325141D7A370ED6B395541E37BCEDCF032514197FBAC976E395541D6A6D6B3EF325141E5FEF6586F395541AA2FEBB1EA3251412E3952E8723955415FC731ACEA325141C9F485ED72395541F606A580E832514133BD67E67439554143735B1FE7325141E9B53E6A76395541E61D30B9E6325141CD73C1E2763955413D0AD7D3E532514114AE47F17739554180E0BA98E532514143F36E4B783955418660EC21E53251413DB9A400793955418055E2AAE2325141F4213D5A7D395541975D78F7E13251413B35C11D7F395541AE47E12AE13251410AD7A320813955415C8FC205DF325141F6285CFF88395541295C8F52DE325141666666D68F3955414C4F2E83DE325141755491FA94395541E9CD8F92DE3251418E57E29A96395541AE75BFFDDE325141D9CFE1659939554133333313E03251410AD7A3A0A039554184AB205ADF32514171F6D2FBA2395541E27A90C2DD32514139262A2CA83955419C13E2D0DC325141B60F290CAB395541F6285CFFDB325141A4703D8AAD3955418FC2F5A8DA325141295C8F12B1395541D7A370CDD832514100000010B53955410AD7A360DA3251411F85EB61B539554172F0D6D3E1325141599999E9B5395541FF5B11E8E13251418F311CEBB53955412E7D1EA5E5325141A7088F32B639554138A34293E732514141360153B6395541AE47E13AF032514148E17AE4B6395541967CEB3BF232514100D65C92B7395541156C0A77F23251411C4766A6B7395541A683717DF33251410C29B7CEBA395541F97F8966F4325141988C2D9FBC39554152B81ED5F4325141B81E857BBD395541C9369B1FF5325141C1646159BD395541B8BACC9CF5325141BCCEFF1FBD395541B81E854BF5325141295C8F42BC395541BE86E646F5325141DE12C71BBC39554100000030F5325141B81E855BBB395541A4703D4AF53251413D0AD783BA395541BDA2FC67F53251414FAB0740BA3955413A91C185F532514177E529FCB9395541600D6586F5325141A9C3840BB93955419217F055F5325141DB914067B839554106DA1E55F532514185537B64B839554125EEAD17F53251411DBE14EEB7395541F672A1A6F4325141F62CE09AB73955417B14AE77F432514185EB5178B7395541BF0DD84EF4325141C123695DB73955411AAD3C9AF332514155AE66E6B63955417D7B13DEF132514198CA3223B639554173DB8757F13251416E8D98B4B5395541713D0A47F1325141713D0AA7B53955415A35C2C5F0325141248C70CDB4395541ECAEE0DAF032514136EE6636B4395541DCC398B9F13251418B6C29DCB2395541993E7DBAF1325141C6086C84B2395541B81E85BBF1325141EC51B81EB2395541CD31C99AF132514150EDFD6BB1395541704F847BF1325141E7D548C1B03955411FCEAC67F132514110D8280CAF395541A892FF7FF132514192497C54AE3955419A999919F2325141295C8F52AD39554185EB5128F2325141B81E85CBAC395541ED8385DBF132514118151F85AC39554159D221A9F1325141501E6495AC39554133333323F13251410AD7A3C0AC395541471344FCEF325141ECF90AA0AD3955416656860BEF325141FABD6656AE395541D3FEA8F4EE3251410B66F84CAE3955411470B83EEE325141BAD7EC01AE39554193AE94AFED325141EE5F8FE6AD395541C3F5282CED325141D7A370CDAD395541E17A142EEC32514185EB5118AD395541A4703D9AEB3251418FC2F568AC395541BEF5A360EB325141069EB91EAB39554152B81E55EB3251417B14AE67AA395541E2D6747FEB32514189BA87CEA9395541E35F7AB4EB3251410424B70EA9395541733E6546EC32514113CEF648A739554172B5FE6FEC3251418FC8710DA6395541F8F0D593EC32514177AE9A39A5395541D94E0AB7EC3251417165E007A5395541F6285CEFEC32514185EB51B8A439554182AB0911EE325141CF69139DA4395541D72F3D8AEF32514164379879A439554189EA07D9EF3251418E351556A43955415C8FC205F03251411F85EB41A4395541BC954F08F032514175A04033A43955412FCBAC17F032514195E9E1DAA3395541D20B8E12F0325141085B0BE7A23955412E89F43DF03251412828307DA2395541713D0A57F032514100000040A2395541FAD608ABF0325141CF066656A2395541A4703DFAF0325141B81E856BA23955413D0AD7F3F1325141713D0AE7A23955413D0AD7A3F23251415C8FC205A33955418FC2F548F33251417B14AED7A23955410C9F09F7F3325141D8E38F42A23955414CEEAAFFF332514110790FE0A1395541E17A140EF4325141B81E853BA1395541A4703D7AF3325141C3F528CCA039554148E17A74F2325141E17A148EA039554133333363F13251419A9999C99F3955411F85EB01F1325141CDCCCC1C9F39554157DABAADF0325141A6E973939D3955414180CC8CF0325141306199F99C39554108284CB7F0325141EF3D0DA09C39554148E17AD4F0325141295C8F629C395541904731DFF032514196DCB24F9C395541F8DA5A1FF13251413D4CB7DE9B3955418A69706DF232514186F1284C9B395541E68D5BEFF2325141F077E0FA9A395541B0383D7AF3325141CC96707D9A3955419F5FADE7F33251410C2AC1C5993955412C8B9D6AF43251415A14F83999395541C3F5286CF432514185EB5138993955414B5EDF74F43251417D11BF30993955411F85EB91F53251418FC2F53898395541000000F0F532514185EB51B8973955419228EFF9F53251417C935D77973955412BB84611F63251417E07B9DE96395541C14347F1F53251410CA51DD5953955418F0045DAF5325141CD9F2C9395395541A4703D4AF5325141666666F693395541559F5F2FF532514123D013A89339554181ADB7FEF43251410BEA3C1A9339554107E98E22F5325141684465669239554147CF0877F532514156B333C3913955419C0E98BBF5325141392A266E91395541EC51B8EEF5325141EC51B82E9139554105280218F63251413F25201C91395541FD7434A3F6325141608C6FDD9039554154FED683F73251417FA35B7F903955415EDA5148F832514149E94651903955411EC019D6F83251414E2F400B90395541666666E6F83251413333330390395541D7A3704DF9325141C3F5285C8F3955413CC51563F9325141CC5762158F395541149AC175F932514175EB50D88E39554108E5E05AF9325141B45290728E3955410BC63001F93251413CA1C9A08E3955419A9999C9F8325141D7A370BD8E395541F6285C1FF8325141E17A143E8F395541BA613F01F8325141525584498F39554123DF1F15F7325141605D34A38F395541951A8EA2F632514102277C748F39554160724621F63251413FA8EAF18E395541FED0EA0EF632514125A764968E39554185EB51F8F53251415C8FC2258E3955415BB0B507F6325141749619EF8D3955418B00E10AF6325141CDE0D6E38D3955418389990FF632514122AFF8D98D395541713D0A27F63251418FC2F5A88D3955411F85EB51F6325141B81E856B8D395541B81E85ABF63251417B14AE178D3955416CA45AF7F63251416514C7E68C39554172D77B34F732514145C95ABF8C395541A4F647C1F73251411DD608778C3955416C18AE57F83251417D305BFF8B3955418F73CC6BF832514136F056EF8B395541A4703D7AF83251413D0AD7E38B395541A4703D8AF8325141F6285C9F8B39554179E87492F8325141B02FDF808B39554122FC8DA2F83251412FD31D458B395541270E858BF832514189B600E08A3955417406CC8CF8325141F53CCDAC8A395541AA6C6A57F8325141C26E9E858A395541713D0A47F83251419A9999798A3955412893033CF832514177C1C6738A395541F06528ECF7325141C1949A498A3955414337FF7FF732514115DD1F258A395541E1AE1857F7325141EBD6442B8A395541E17A141EF73251413D0AD7338A39554114AE47D1F6325141666666468A395541F6285C5FF63251419A9999998A395541E17A14EEF53251413D0AD7E38A39554100000070F532514114AE47218B39554192738C38F53251412DF0D54B8B395541A929701DF5325141A3E2A4608B3955410084D7C3F4325141A45953A88B3955410496B98EF432514118831EC58B395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>865868 - 363766
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000004010000295C8F92DE325141AE47E19A9639554133333313E03251410AD7A3A0A0395541295C8FC2DD325141C3F5282CA8395541F6285CFFDB325141A4703D8AAD3955418FC2F5A8DA325141295C8F12B1395541D7A370CDD832514100000010B53955410AD7A360DA3251411F85EB61B539554185EB5158D93251418FC2F5D8BC3955413D0AD713D93251415C8FC2F5C2395541666666C6D83251410AD7A360C53955410AD7A320D9325141713D0A47C83955413D0AD7D3D8325141AE47E10ACD395541C3F5281CD83251411F85EBF1D039554152B81E85D7325141D7A370FDD3395541A4703D0AD83251419A9999D9D4395541000000C0D83251410AD7A3F0D439554100000020DA3251415C8FC215D53955419A9999C9DB32514152B81EE5CF395541D7A3704DDD325141F6285C3FCA395541713D0AF7DE325141713D0A77C53955417B14AEB7E23251413D0AD733BD3955413D0AD7D3E13251419A9999E9B539554152B81EA5E5325141295C8F32B6395541AE47E13AF032514148E17AE4B6395541713D0A77F2325141666666A6B7395541D7A3707DF3325141EC51B8CEBA39554152B81ED5F4325141B81E857BBD395541CDCCCC9CF532514100000020BD395541B81E854BF5325141295C8F42BC39554100000030F5325141B81E855BBB395541A4703D4AF53251413D0AD783BA3955415C8FC285F5325141C3F528FCB939554166666686F5325141B81E850BB939554152B81E55F532514148E17A64B83955417B14AE17F5325141E17A14EEB73955417B14AE77F432514185EB5178B7395541A4703D9AF3325141666666E6B6395541E17A14DEF132514133333323B6395541713D0A47F1325141713D0AA7B53955415C8FC2C5F0325141D7A370CDB4395541AE47E1DAF032514166666636B43955419A9999B9F1325141C3F528DCB2395541B81E85BBF1325141EC51B81EB2395541B81E857BF132514114AE47C1B03955417B14AE67F1325141C3F5280CAF39554100000080F132514148E17A54AE3955419A999919F2325141295C8F52AD39554185EB5128F2325141B81E85CBAC395541B81E85DBF132514152B81E85AC39554133333323F13251410AD7A3C0AC395541B81E850BEF32514166666656AE395541EC51B83EEE3251411F85EB01AE395541C3F5282CED325141D7A370CDAD395541E17A142EEC32514185EB5118AD395541A4703D9AEB3251418FC2F568AC3955410AD7A360EB325141EC51B81EAB39554152B81E55EB3251417B14AE67AA39554148E17AB4EB325141EC51B80EA939554166666646EC3251418FC2F548A739554100000070EC325141D7A3700DA63955413D0AD793EC3251419A999939A5395541F6285CEFEC32514185EB51B8A4395541A4703D8AEF3251419A999979A43955415C8FC205F03251411F85EB41A43955417B14AE17F0325141AE47E1DAA3395541295C8F12F0325141713D0AE7A2395541713D0A57F032514100000040A2395541A4703DFAF0325141B81E856BA23955413D0AD7F3F1325141713D0AE7A23955413D0AD7A3F23251415C8FC205A33955418FC2F548F33251417B14AED7A2395541713D0AF7F3325141295C8F42A2395541E17A140EF4325141B81E853BA1395541A4703D7AF3325141C3F528CCA039554148E17A74F2325141E17A148EA039554133333363F13251419A9999C99F3955411F85EB01F1325141CDCCCC1C9F395541CDCCCC8CF03251419A9999F99C39554148E17AD4F0325141295C8F629C395541F6285C1FF1325141EC51B8DE9B395541D7A3706DF2325141C3F5284C9B395541F6285CEFF2325141AE47E1FA9A395541A4703D7AF3325141D7A3707D9A3955417B14AEE7F33251415C8FC2C599395541C3F5286CF432514185EB5138993955411F85EB91F53251418FC2F53898395541000000F0F532514185EB51B89739554114AE4711F6325141EC51B8DE9639554114AE47F1F532514152B81ED595395541A4703D4AF5325141666666F693395541EC51B8FEF4325141A4703D1A93395541295C8F22F53251416666666692395541713D0A77F5325141333333C391395541EC51B8EEF5325141EC51B82E91395541333333A3F6325141D7A370DD903955413D0AD783F7325141F6285C7F9039554185EB5148F832514114AE475190395541666666E6F83251413333330390395541D7A3704DF9325141C3F5285C8F3955415C8FC275F932514185EB51D88E395541AE47E15AF9325141295C8F728E3955419A9999C9F8325141D7A370BD8E395541F6285C1FF8325141E17A143E8F39554152B81E15F7325141333333A38F395541295C8FA2F632514148E17A748F39554114AE4721F63251411F85EBF18E39554185EB51F8F53251415C8FC2258E395541AE47E10AF63251413D0AD7E38D395541713D0A27F63251418FC2F5A88D3955411F85EB51F6325141B81E856B8D395541B81E85ABF63251417B14AE178D39554148E17A34F7325141F6285CBF8C39554114AE47C1F7325141713D0A778C3955417B14AE57F8325141F6285CFF8B395541A4703D7AF83251413D0AD7E38B395541A4703D8AF8325141F6285C9F8B395541295C8FA2F832514152B81E458B395541B81E858BF8325141000000E08A395541CDCCCC8CF8325141CDCCCCAC8A395541713D0A47F83251419A9999798A395541C3F528ECF73251419A9999498A39554100000080F732514152B81E258A395541E17A141EF73251413D0AD7338A39554114AE47D1F6325141666666468A395541F6285C5FF63251419A9999998A395541E17A14EEF53251413D0AD7E38A39554100000070F532514114AE47218B395541D7A3701DF53251410AD7A3608B3955413D0AD7C3F432514185EB51A88B395541EC51B88EF432514152B81EC58B39554185EB5138F43251417B14AEC78B395541E17A14DEF33251411F85EBB18B395541295C8F82F3325141C3F5287C8B395541C3F528FCF232514148E17A348B3955419A999969F23251410AD7A3E08A395541F6285C2FF2325141333333B38A395541EC51B80EF23251417B14AE778A39554152B81EF5F1325141F6285C3F8A3955410AD7A3F0F1325141666666068A395541CDCCCCFCF132514133333393893955418FC2F508F2325141EC51B83E8939554148E17A24F232514166666606893955411F85EB41F232514185EB51D888395541C3F5286CF2325141E17A14AE883955418FC2F588F232514185EB519888395541E17A14BEF2325141CDCCCC7C883955415C8FC2F5F2325141EC51B86E88395541A4703D2AF3325141E17A146E88395541B81E855BF33251410AD7A37088395541B81E858BF3325141295C8F8288395541CDCCCCACF332514148E17A8488395541C3F528DCF332514152B81E7588395541000000F0F33251410AD7A350883955418FC2F5E8F3325141EC51B82E88395541295C8FC2F332514114AE47018839554148E17A94F33251415C8FC2E587395541A4703D3AF3325141CDCCCCAC87395541713D0AF7F23251413D0AD79387395541AE47E1BAF2325141D7A3707D87395541E17A148EF232514148E17A54873955418FC2F578F2325141713D0A17873955411F85EB71F23251415C8FC2D58639554133333363F2325141295C8F6286395541295C8F82F2325141333333F385395541333333B3F232514185EB518885395541B81E85DBF2325141A4703D3A853955415C8FC215F332514114AE4711853955417B14AE57F33251413D0AD7F384395541A4703DAAF3325141000000E084395541AE47E12AF4325141713D0AD784395541333333C3F43251413D0AD7D3843955413D0AD713F5325141CDCCCCBC843955419A999949F5325141CDCCCC8C84395541F6285C6FF5325141C3F5284C843955419A999989F53251416666660684395541713D0A97F5325141295C8FA283395541333333A3F53251411F85EB318339554148E17AE4F5325141AE47E18A823955415C8FC2F5F5325141713D0A578239554148E17A24F63251410AD7A31082395541B81E854BF63251413D0AD7E381395541AE47E17AF632514148E17AB481395541D7A370CDF6325141AE47E17A813955410AD7A330F73251413333330381395541E17A143EF73251411F85EBB1803955417B14AE37F7325141CDCCCC5C80395541A4703D1AF7325141C3F528EC7E395541CDCCCC2CF7325141295C8FD27D3955418FC2F538F73251419A9999797D39554185EB5158F7325141B81E851B7D3955417B14AE67F7325141C3F528BC7C3955415C8FC255F732514148E17A547C395541F6285C2FF73251411F85EB017C39554114AE4701F7325141CDCCCC7C7B395541666666B6F6325141666666267B395541C3F5285CF6325141CDCCCCEC7A395541E17A14FEF5325141B81E85AB7A3955415C8FC2B5F53251413D0AD7837A395541713D0A77F5325141C3F5286C7A395541B81E853BF5325141295C8F227A39554133333333F53251413D0AD7D3793955418FC2F548F5325141713D0A377939554185EB5158F532514185EB516878395541F6285C5FF53251415C8FC2B57739554152B81E85F5325141D7A3704D77395541D7A370ADF53251415C8FC2057739554152B81EE5F5325141AE47E1DA76395541713D0A37F6325141C3F528CC76395541B81E858BF6325141F6285CBF76395541EC51B8DEF6325141333333C376395541D7A3703DF732514114AE47D176395541CDCCCC7CF7325141B81E85FB763955410AD7A3B0F73251419A99992977395541AE47E1EAF73251413333336377395541EC51B81EF8325141CDCCCC7C773955419A999959F8325141F6285C7F77395541F6285C7FF83251415C8FC26577395541AE47E18AF832514152B81E457739554148E17A84F8325141CDCCCC0C773955415C8FC275F8325141AE47E1CA7639554166666666F8325141B81E856B763955417B14AEA7F8325141CDCCCCDC75395541CDCCCC8CF832514152B81E35753955419A999989F83251410AD7A3D07439554133333373F8325141EC51B87E743955410AD7A350F8325141E17A140E74395541C3F5282CF8325141D7A3708D733955419A999909F8325141C3F528DC72395541333333F3F7325141A4703D5A72395541000000F0F7325141333333E3713955419A999909F8325141AE47E18A71395541E17A141EF832514114AE47317139554185EB51F8F73251417B14AEE770395541333333D3F7325141666666567039554152B81EE5F7325141333333B36F3955419A9999E9F732514185EB51E86E3955417B14AE17F83251417B14AE476E3955415C8FC275F8325141E17A14CE6D395541666666C6F8325141295C8F226D395541EC51B88EF932514148E17A146C395541D7A370BDF932514152B81E656B395541000000E0F9325141A4703D8A6A395541713D0A27FA325141EC51B84E6939554114AE4761FA3251413333335368395541295C8F62FA325141C3F5281C68395541AE47E11AF9325141B81E85BB673955413D0AD7F3F7325141B81E854B693955413D0AD7F3F4325141D7A370ED6B395541CDCCCCDCF03251417B14AE976E3955413D0AD7B3EF3251418FC2F5586F3955411F85EBB1EA32514185EB51E8723955410AD7A380E8325141666666E674395541F6285C1FE7325141A4703D6A763955413D0AD7D3E532514114AE47F1773955411F85EB21E53251410AD7A30079395541AE47E1AAE2325141A4703D5A7D395541AE47E12AE13251410AD7A320813955415C8FC205DF325141F6285CFF88395541295C8F52DE325141666666D68F395541295C8F92DE325141AE47E19A96395541
+</a>
+
+<b>
+010600000001000000010300000001000000700100000496B98EF432514118831EC58B39554165B46184F432514163236DC58B3955410F5D5238F4325141E851AFC78B3955412F384502F43251411792A5BA8B395541E17A14DEF33251411F85EBB18B395541295C8F82F3325141C3F5287C8B395541C3F528FCF232514148E17A348B395541972681B8F2325141A10AC70D8B3955416EA29869F2325141AF32A4E08A3955418B779033F2325141BBF47AB68A395541F6285C2FF2325141333333B38A395541382C2C17F2325141D8ED17878A395541EC51B80EF23251417B14AE778A39554152B81EF5F1325141F6285C3F8A3955410AD7A3F0F1325141666666068A395541248E6CF3F13251415F5C06EC89395541A5F7CBFCF13251414320329389395541DA2DCE02F2325141FF757A69893955418FC2F508F2325141EC51B83E893955418AA60622F232514132146C0B893955413CFA7A24F2325141110166068939554119C9DC2AF23251418EFB68FC883955411F85EB41F232514185EB51D888395541C3F5286CF2325141E17A14AE88395541897BB675F232514179C0DCA688395541BC9AF488F2325141FC5D529888395541ADEBF88CF2325141CCC63D9688395541E17A14BEF2325141CDCCCC7C883955415C8FC2F5F2325141EC51B86E88395541A4703D2AF3325141E17A146E8839554163A7804AF3325141B287C16F8839554188BC845BF3325141645BA370883955415B6E6764F332514188EAF47388395541B81E858BF3325141295C8F8288395541841F9BABF3325141AB3E698488395541A7E8CCACF332514140D87A84883955417CB753C4F33251416980D97C88395541A2E828DCF33251419C9E1E758839554116E3F4DFF3325141DAA0236E88395541000000F0F33251410AD7A3508839554183B533EEF33251410B13FA4788395541E157F4E8F3325141E71FB72E88395541D72B8FC2F33251410DC0480188395541679126A4F3325141E06D1EEF8739554148E17A94F33251415C8FC2E587395541A4703D3AF3325141CDCCCCAC87395541713D0AF7F23251413D0AD79387395541AE47E1BAF2325141D7A3707D873955415A754AADF2325141CC000471873955411A5A138EF2325141254E7A548739554187E0F478F2325141DF55091787395541BAF06772F23251419F4644DA863955411F85EB71F23251415C8FC2D586395541369C886EF2325141670C42BB86395541CEEA3263F23251410B348E62863955411DE38E82F2325141B49833F385395541A809C08DF232514199729CDA85395541333333B3F232514185EB5188853955419DD705C5F2325141BC53CE6585395541950C84DBF2325141B2333D3A853955411E3F5009F33251418E9A081A853955415C8FC215F332514114AE4711853955411F93E715F33251412F2637118539554177F5AC57F3325141F3B4D5F384395541C7DD448EF33251410DC2B8E684395541A4703DAAF3325141000000E084395541AE47E12AF4325141713D0AD78439554172FC8654F43251412C412AD684395541DA0734C3F43251418940D6D384395541F4D05FF9F432514106945CC4843955418398D613F53251414BEDCCBC84395541776AFE19F5325141E3364EB7843955419A999949F5325141CDCCCC8C84395541E833766DF532514158DA684F843955415B1F5C6FF5325141AAE0284C84395541E8930D75F5325141925C063D84395541977B9989F532514130B6660684395541AD14BF8AF5325141DC41E2FD83395541713D0A97F5325141295C8FA283395541749D5BA0F532514113413F4C83395541161533A3F5325141DD47EA318339554133FCEBBEF53251416319FCEA8239554148E17AE4F5325141AE47E18A823955413EA894F3F5325141CBF2935D82395541F986C2F5F5325141FFF909578239554156BD7A24F6325141407BA2108239554111C00136F6325141F5F886FC81395541B81E854BF63251413D0AD7E381395541AE47E17AF632514148E17AB481395541D7A370CDF6325141AE47E17A813955417AECCC18F7325141BB12F61F8139554150FEA330F7325141B345320381395541E17A143EF73251411F85EBB1803955412C2D163AF732514103E2CE7C803955411B44AD37F7325141F653CC5C80395541975DCA2BF7325141BB33ECC77F395541A4703D1AF7325141C3F528EC7E395541D79EBB26F7325141B1D79C2E7E3955414449CC2CF7325141BB438ED27D395541D3D5F530F73251414BC91FB47D3955418FC2F538F73251419A9999797D39554185EB5158F7325141B81E851B7D3955417B14AE67F7325141C3F528BC7C3955412FCBC456F732514141F2505A7C395541FF76C255F7325141E6AC7A547C395541F6285C2FF73251411F85EB017C39554114AE4701F7325141CDCCCC7C7B395541C540A7FAF63251415E6227757B395541E69B65B6F6325141AD4A66267B3955411B789D62F6325141D497EBF07A395541C3F5285CF6325141CDCCCCEC7A395541E17A14FEF5325141B81E85AB7A3955410ADD95CBF5325141DEA3D08F7A3955411A9EC3B5F5325141C135D8837A39554147CF0877F53251415FED286C7A395541AB29853BF5325141F60190227A395541571F3233F53251412F57D8D3793955413062F33CF5325141C4D5938D793955418FC2F548F5325141713D0A377939554185EB5158F532514185EB516878395541F6285C5FF53251415C8FC2B5773955416217367EF5325141F5D986607739554114151E85F53251410F0E724D77395541D7A370ADF53251415C8FC20577395541F8397DD1F5325141D97CFFE9763955419D501FE5F53251418149E0DA763955415A460B37F6325141998727CC763955419A2C858BF63251414F185CBF76395541A14E0393F632514114B1B4BF76395541EC51B8DEF6325141333333C37639554172002901F7325141AFC951C8763955419F7F6F3DF7325141EC4646D176395541C50BFB67F73251415DF3A3ED76395541CDCCCC7CF7325141B81E85FB763955410AD7A3B0F73251419A99992977395541AE47E1EAF73251413333336377395541EC51B81EF8325141CDCCCC7C7739554139C27647F83251411E4C927E77395541DF8C9859F832514121B15B7F773955411CD5427EF8325141614A816677395541F6285C7FF83251415C8FC26577395541AE47E18AF832514152B81E457739554148E17A84F8325141CDCCCC0C773955415C8FC275F8325141AE47E1CA7639554166666666F8325141B81E856B76395541E998667AF832514191F6CA3F7639554180BBACA7F83251414E3CCCDC753955417406CC8CF832514105681F3575395541618D678BF832514119244D09753955419A999989F83251410AD7A3D07439554111F3EB79F8325141BE584D9774395541A9493273F832514187F3B67E7439554125F9CF65F832514173191653743955410AD7A350F8325141E17A140E74395541C3F5282CF8325141D7A3708D733955419A999909F8325141C3F528DC72395541333333F3F7325141A4703D5A72395541000000F0F7325141333333E3713955415D3561FEF7325141E50797B1713955419A999909F8325141AE47E18A71395541E17A141EF832514114AE47317139554185EB51F8F73251417B14AEE770395541AD57E1E7F73251410D9456A770395541412532D3F7325141FC8F67567039554153751BDFF7325141E579F5E96F39554152B81EE5F7325141333333B36F3955419A9999E9F732514185EB51E86E3955417B14AE17F83251417B14AE476E3955415C8FC275F8325141E17A14CE6D395541A5C87D85F832514193A39EAC6D395541A83765C6F8325141CE588F226D39554166017787F9325141B2FD421E6C39554131E1B78EF932514146797B146C395541151170BDF9325141EF2E1F656B395541DEE80EDAF93251412403DFAF6A395541000000E0F9325141A4703D8A6A395541713D0A27FA325141EC51B84E6939554114AE4761FA3251413333335368395541E63BD661FA325141EC60413B68395541C3F28E62FA325141ADD6281C68395541AE47E11AF9325141B81E85BB67395541653689E3F832514159748D066839554113F4D7F3F73251419890854B693955413D0AD7F3F4325141D7A370ED6B395541E37BCEDCF032514197FBAC976E395541D6A6D6B3EF325141E5FEF6586F395541AA2FEBB1EA3251412E3952E8723955415FC731ACEA325141C9F485ED72395541F606A580E832514133BD67E67439554143735B1FE7325141E9B53E6A76395541E61D30B9E6325141CD73C1E2763955413D0AD7D3E532514114AE47F17739554180E0BA98E532514143F36E4B783955418660EC21E53251413DB9A400793955418055E2AAE2325141F4213D5A7D395541975D78F7E13251413B35C11D7F395541AE47E12AE13251410AD7A320813955415C8FC205DF325141F6285CFF88395541295C8F52DE325141666666D68F3955414C4F2E83DE325141755491FA94395541E9CD8F92DE3251418E57E29A96395541AE75BFFDDE325141D9CFE1659939554133333313E03251410AD7A3A0A039554184AB205ADF32514171F6D2FBA2395541E27A90C2DD32514139262A2CA83955419C13E2D0DC325141B60F290CAB395541F6285CFFDB325141A4703D8AAD3955418FC2F5A8DA325141295C8F12B1395541D7A370CDD832514100000010B53955410AD7A360DA3251411F85EB61B539554172F0D6D3E1325141599999E9B5395541FF5B11E8E13251418F311CEBB53955412E7D1EA5E5325141A7088F32B639554138A34293E732514141360153B6395541AE47E13AF032514148E17AE4B6395541967CEB3BF232514100D65C92B7395541156C0A77F23251411C4766A6B7395541A683717DF33251410C29B7CEBA395541F97F8966F4325141988C2D9FBC39554152B81ED5F4325141B81E857BBD395541C9369B1FF5325141C1646159BD395541B8BACC9CF5325141BCCEFF1FBD395541B81E854BF5325141295C8F42BC395541BE86E646F5325141DE12C71BBC39554100000030F5325141B81E855BBB395541A4703D4AF53251413D0AD783BA395541BDA2FC67F53251414FAB0740BA3955413A91C185F532514177E529FCB9395541600D6586F5325141A9C3840BB93955419217F055F5325141DB914067B839554106DA1E55F532514185537B64B839554125EEAD17F53251411DBE14EEB7395541F672A1A6F4325141F62CE09AB73955417B14AE77F432514185EB5178B7395541BF0DD84EF4325141C123695DB73955411AAD3C9AF332514155AE66E6B63955417D7B13DEF132514198CA3223B639554173DB8757F13251416E8D98B4B5395541713D0A47F1325141713D0AA7B53955415A35C2C5F0325141248C70CDB4395541ECAEE0DAF032514136EE6636B4395541DCC398B9F13251418B6C29DCB2395541993E7DBAF1325141C6086C84B2395541B81E85BBF1325141EC51B81EB2395541CD31C99AF132514150EDFD6BB1395541704F847BF1325141E7D548C1B03955411FCEAC67F132514110D8280CAF395541A892FF7FF132514192497C54AE3955419A999919F2325141295C8F52AD39554185EB5128F2325141B81E85CBAC395541ED8385DBF132514118151F85AC39554159D221A9F1325141501E6495AC39554133333323F13251410AD7A3C0AC395541471344FCEF325141ECF90AA0AD3955416656860BEF325141FABD6656AE395541D3FEA8F4EE3251410B66F84CAE3955411470B83EEE325141BAD7EC01AE39554193AE94AFED325141EE5F8FE6AD395541C3F5282CED325141D7A370CDAD395541E17A142EEC32514185EB5118AD395541A4703D9AEB3251418FC2F568AC395541BEF5A360EB325141069EB91EAB39554152B81E55EB3251417B14AE67AA395541E2D6747FEB32514189BA87CEA9395541E35F7AB4EB3251410424B70EA9395541733E6546EC32514113CEF648A739554172B5FE6FEC3251418FC8710DA6395541F8F0D593EC32514177AE9A39A5395541D94E0AB7EC3251417165E007A5395541F6285CEFEC32514185EB51B8A439554182AB0911EE325141CF69139DA4395541D72F3D8AEF32514164379879A439554189EA07D9EF3251418E351556A43955415C8FC205F03251411F85EB41A4395541BC954F08F032514175A04033A43955412FCBAC17F032514195E9E1DAA3395541D20B8E12F0325141085B0BE7A23955412E89F43DF03251412828307DA2395541713D0A57F032514100000040A2395541FAD608ABF0325141CF066656A2395541A4703DFAF0325141B81E856BA23955413D0AD7F3F1325141713D0AE7A23955413D0AD7A3F23251415C8FC205A33955418FC2F548F33251417B14AED7A23955410C9F09F7F3325141D8E38F42A23955414CEEAAFFF332514110790FE0A1395541E17A140EF4325141B81E853BA1395541A4703D7AF3325141C3F528CCA039554148E17A74F2325141E17A148EA039554133333363F13251419A9999C99F3955411F85EB01F1325141CDCCCC1C9F39554157DABAADF0325141A6E973939D3955414180CC8CF0325141306199F99C39554108284CB7F0325141EF3D0DA09C39554148E17AD4F0325141295C8F629C395541904731DFF032514196DCB24F9C395541F8DA5A1FF13251413D4CB7DE9B3955418A69706DF232514186F1284C9B395541E68D5BEFF2325141F077E0FA9A395541B0383D7AF3325141CC96707D9A3955419F5FADE7F33251410C2AC1C5993955412C8B9D6AF43251415A14F83999395541C3F5286CF432514185EB5138993955414B5EDF74F43251417D11BF30993955411F85EB91F53251418FC2F53898395541000000F0F532514185EB51B8973955419228EFF9F53251417C935D77973955412BB84611F63251417E07B9DE96395541C14347F1F53251410CA51DD5953955418F0045DAF5325141CD9F2C9395395541A4703D4AF5325141666666F693395541559F5F2FF532514123D013A89339554181ADB7FEF43251410BEA3C1A9339554107E98E22F5325141684465669239554147CF0877F532514156B333C3913955419C0E98BBF5325141392A266E91395541EC51B8EEF5325141EC51B82E9139554105280218F63251413F25201C91395541FD7434A3F6325141608C6FDD9039554154FED683F73251417FA35B7F903955415EDA5148F832514149E94651903955411EC019D6F83251414E2F400B90395541666666E6F83251413333330390395541D7A3704DF9325141C3F5285C8F3955413CC51563F9325141CC5762158F395541149AC175F932514175EB50D88E39554108E5E05AF9325141B45290728E3955410BC63001F93251413CA1C9A08E3955419A9999C9F8325141D7A370BD8E395541F6285C1FF8325141E17A143E8F395541BA613F01F8325141525584498F39554123DF1F15F7325141605D34A38F395541951A8EA2F632514102277C748F39554160724621F63251413FA8EAF18E395541FED0EA0EF632514125A764968E39554185EB51F8F53251415C8FC2258E3955415BB0B507F6325141749619EF8D3955418B00E10AF6325141CDE0D6E38D3955418389990FF632514122AFF8D98D395541713D0A27F63251418FC2F5A88D3955411F85EB51F6325141B81E856B8D395541B81E85ABF63251417B14AE178D3955416CA45AF7F63251416514C7E68C39554172D77B34F732514145C95ABF8C395541A4F647C1F73251411DD608778C3955416C18AE57F83251417D305BFF8B3955418F73CC6BF832514136F056EF8B395541A4703D7AF83251413D0AD7E38B395541A4703D8AF8325141F6285C9F8B39554179E87492F8325141B02FDF808B39554122FC8DA2F83251412FD31D458B395541270E858BF832514189B600E08A3955417406CC8CF8325141F53CCDAC8A395541AA6C6A57F8325141C26E9E858A395541713D0A47F83251419A9999798A3955412893033CF832514177C1C6738A395541F06528ECF7325141C1949A498A3955414337FF7FF732514115DD1F258A395541E1AE1857F7325141EBD6442B8A395541E17A141EF73251413D0AD7338A39554114AE47D1F6325141666666468A395541F6285C5FF63251419A9999998A395541E17A14EEF53251413D0AD7E38A39554100000070F532514114AE47218B39554192738C38F53251412DF0D54B8B395541A929701DF5325141A3E2A4608B3955410084D7C3F4325141A45953A88B3955410496B98EF432514118831EC58B395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261945 - 2942672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D000000AE47E1DAD06B5141F6285CDFDB3E5441B81E856BD06B5141F6285C6FDA3E54419A9999D9C16B514166666636D53E544114AE4741C16B51410AD7A380E13E5441EC51B82EC76B5141F6285C9FE53E54415C8FC2C5C76B5141A4703D0AE63E5441713D0A770C6C5141B81E85AB163F5441000000E00D6C5141295C8FC2133F5441C3F5289C106C5141F6285C3F113F5441295C8FB2146C51410AD7A3500E3F544152B81E95166C51413D0AD7030D3F5441B81E857BDE6B514148E17A84E53E5441AE47E1DAD06B5141F6285CDFDB3E5441050000008FC2F5E8066C51415C8FC275073F5441C3F5287C046C51415C8FC275073F54415C8FC265046C51411F85EBC1033F544152B81EA5066C51413D0AD7E3033F54418FC2F5E8066C51415C8FC275073F5441
+</a>
+
+<b>
+01060000000100000001030000000200000020000000B81E857BDE6B514148E17A84E53E5441C2DDBADAD06B5141DF37DDDEDB3E54419EB20967CA6B51419BF25E4CD83E5441A889ADD7C96B514168BF2B19D83E54419977476EC76B514106D3B439D93E54419C8CE61DC36B5141494D3993DC3E544114AB2D30C16B5141AA77DF02DF3E54413C3360D1BF6B51411F52A788E03E5441C55F89B3BE6B5141E464C3C5DF3E5441F890EC02BC6B51415C830AD8DD3E5441403CA023B76B5141C06B80A5DA3E54414C3041C6B26B5141C2B6F099D73E54413D8A08FBB06B5141776D0A93D73E544149E87A54AE6B5141BCCFEF81D83E5441D38238DEAD6B514137B6CD38DA3E544135CDFD30E66B5141F08F1218023F54417DAE7805EA6B5141411FD5CD043F5441CF66974AEE6B5141B2853BD4073F5441BAB84F89F06B5141FA66B668093F54419C336417F26B5141BD5CDF840A3F5441D5547F560B6C5141F2C2085F1C3F544158991FAD0C6C514161346BAE163F5441F636070C0E6C51410E9F1728133F54414B26DF5A126C51414B20E5D30F3F5441574048C9166C51416B21E32A0D3F5441B8E13D07066C514155B7235C013F54417BF6FB73016C5141B16F8223FE3E5441014BB4CAFF6B5141C7C316F8FC3E544135C4231CEB6B51410384A670EE3E5441C163AC67E76B514105F705DAEB3E54414D8A2AB3DE6B51416E71A8ABE53E5441B81E857BDE6B514148E17A84E53E544105000000C9C55ABB066C5141DC9CCAD1033F54412BEFD5DB066C5141C1F14838073F5441BF2FA8B3046C5141DA124552073F5441D7F52E86046C5141F5BDC6EB033F5441C9C55ABB066C5141DC9CCAD1033F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261945 - 3350772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D000000AE47E1DAD06B5141F6285CDFDB3E5441B81E856BD06B5141F6285C6FDA3E54419A9999D9C16B514166666636D53E544114AE4741C16B51410AD7A380E13E5441EC51B82EC76B5141F6285C9FE53E54415C8FC2C5C76B5141A4703D0AE63E5441713D0A770C6C5141B81E85AB163F5441000000E00D6C5141295C8FC2133F5441C3F5289C106C5141F6285C3F113F5441295C8FB2146C51410AD7A3500E3F544152B81E95166C51413D0AD7030D3F5441B81E857BDE6B514148E17A84E53E5441AE47E1DAD06B5141F6285CDFDB3E5441050000008FC2F5E8066C51415C8FC275073F5441C3F5287C046C51415C8FC275073F54415C8FC265046C51411F85EBC1033F544152B81EA5066C51413D0AD7E3033F54418FC2F5E8066C51415C8FC275073F5441
+</a>
+
+<b>
+01060000000100000001030000000200000020000000B81E857BDE6B514148E17A84E53E5441C2DDBADAD06B5141DF37DDDEDB3E54419EB20967CA6B51419BF25E4CD83E5441A889ADD7C96B514168BF2B19D83E54419977476EC76B514106D3B439D93E54419C8CE61DC36B5141494D3993DC3E544114AB2D30C16B5141AA77DF02DF3E54413C3360D1BF6B51411F52A788E03E5441C55F89B3BE6B5141E464C3C5DF3E5441F890EC02BC6B51415C830AD8DD3E5441403CA023B76B5141C06B80A5DA3E54414C3041C6B26B5141C2B6F099D73E54413D8A08FBB06B5141776D0A93D73E544149E87A54AE6B5141BCCFEF81D83E5441D38238DEAD6B514137B6CD38DA3E544135CDFD30E66B5141F08F1218023F54417DAE7805EA6B5141411FD5CD043F5441CF66974AEE6B5141B2853BD4073F5441BAB84F89F06B5141FA66B668093F54419C336417F26B5141BD5CDF840A3F5441D5547F560B6C5141F2C2085F1C3F544158991FAD0C6C514161346BAE163F5441F636070C0E6C51410E9F1728133F54414B26DF5A126C51414B20E5D30F3F5441574048C9166C51416B21E32A0D3F5441B8E13D07066C514155B7235C013F54417BF6FB73016C5141B16F8223FE3E5441014BB4CAFF6B5141C7C316F8FC3E544135C4231CEB6B51410384A670EE3E5441C163AC67E76B514105F705DAEB3E54414D8A2AB3DE6B51416E71A8ABE53E5441B81E857BDE6B514148E17A84E53E544105000000C9C55ABB066C5141DC9CCAD1033F54412BEFD5DB066C5141C1F14838073F5441BF2FA8B3046C5141DA124552073F5441D7F52E86046C5141F5BDC6EB033F5441C9C55ABB066C5141DC9CCAD1033F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>77068 - 3132553
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E85FBD8085141713D0A27679F5441713D0A57CE085141E17A14CE659F54411F85EBC1B8085141E17A146E7C9F5441EC51B8DEBA085141666666E6809F544100000010BE085141666666F67D9F5441713D0A37C5085141B81E85FB789F5441D7A3707DD2085141295C8F026E9F5441000000F0D9085141D7A3708D679F5441B81E85FBD8085141713D0A27679F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000C5C3AF8AC70851414AA62F0F779F5441713D0A37C5085141B81E85FB789F544100000010BE085141666666F67D9F5441ED9E9BA3BB085141500C3D31809F5441EC51B8DEBA085141666666E6809F54412A1D4BF6BA085141A5368A56819F5441162F5A0EBE0851417D5AA886879F544116B8619ABF085141A6645820869F5441C3F528ECC5085141AE47E1EA829F5441713D0A57CA085141713D0AC77F9F5441666666E6D6085141F6285CFF739F5441D7A3707DD2085141295C8F026E9F544136CE071ACB0851417F56E91D749F5441C5C3AF8AC70851414AA62F0F779F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>77068 - 3490705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E85FBD8085141713D0A27679F5441713D0A57CE085141E17A14CE659F54411F85EBC1B8085141E17A146E7C9F5441EC51B8DEBA085141666666E6809F544100000010BE085141666666F67D9F5441713D0A37C5085141B81E85FB789F5441D7A3707DD2085141295C8F026E9F5441000000F0D9085141D7A3708D679F5441B81E85FBD8085141713D0A27679F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000C5C3AF8AC70851414AA62F0F779F5441713D0A37C5085141B81E85FB789F544100000010BE085141666666F67D9F5441ED9E9BA3BB085141500C3D31809F5441EC51B8DEBA085141666666E6809F54412A1D4BF6BA085141A5368A56819F5441162F5A0EBE0851417D5AA886879F544116B8619ABF085141A6645820869F5441C3F528ECC5085141AE47E1EA829F5441713D0A57CA085141713D0AC77F9F5441666666E6D6085141F6285CFF739F5441D7A3707DD2085141295C8F026E9F544136CE071ACB0851417F56E91D749F5441C5C3AF8AC70851414AA62F0F779F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 58234
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF254411F85EB816BE75041F6285CFFB1F25441295C8F823AE75041CDCCCCCCA3F254419A99994930E7504100000010A1F25441C3F5280C2FE750418FC2F5A89AF254410AD7A35034E750413333335396F254418A69F2E034E75041147915EC8FF254419A9999892BE75041713D0A9788F254410CAACF0125E75041B4756EC190F254419D6A673527E75041F877CD8F99F2544195485EEF15E750418CEB8689A2F254417DD0D27B0EE750415D3F960BA3F25441C26C029BF6E65041E1436885A1F25441D097C3B1F1E6504196F42A7D9FF25441026F7546ECE6504196F42A7D9FF25441B7A5441AECE650415802084C98F2544114AE4781DEE650419A9999E99DF25441A4703DDADCE65041D7A3707DA3F2544114AE4761D7E6504152B81E15B3F254419A999919E3E650410AD7A3F0B6F254415C8FC24507E75041000000F0C2F254417B14AE6731E7504148E17A14D1F25441AE47E17A87E75041CDCCCC9CEDF254416E9062AD8FE7504159E76D9EE0F25441F94B0DEF99E750418EB643C2CFF25441C5FA54CC9FE75041ECDF01E1C4F254413D0AD773A2E750411F85EBA1BFF254411F85EB81A3E75041C3F5284CC0F254419A999989A0E75041E17A146EC6F254417B14AE479CE75041A4703D2ACEF254413D0AD7E388E7504148E17A14EEF254416666660693E7504100000070F1F254411F85EB619DE7504166666696F2F2544114AE4771A2E75041CDCCCC5CF3F254417B14AEF7A7E750415C8FC245F5F25441E17A148EAFE75041713D0A37F8F254413D0AD7D3B1E750417B14AE17F9F25441E17A141EB3E7504114AE47B1FAF25441EC51B8CEB2E7504148E17AD4FBF2544114AE47B1B5E75041CDCCCCBCFCF254419A9999A9BBE750413D0AD713FFF254413D0AD7F3BAE750410AD7A310FDF25441C3F5286CBBE7504185EB5128FAF2544148E17AD4BFE7504100000070F7F254415C8FC265C9E75041F6285C8FF2F254417B14AEF7DBE75041E17A14FEE8F2544100000000E0E75041666666E6E8F2544185EB5168E4E7504166666656E8F254410AD7A340E8E750415C8FC275E6F2544114AE4711EEE750415C8FC2D5E3F254411F85EB11F4E750415C8FC265E1F25441A4703D3AF6E75041D7A3704DE1F25441295C8F02FBE75041D7A3701DE1F25441AE47E1CAFFE7504152B81E15E0F25441B81E853B05E8504152B81EF5DEF2544148E17A640AE8504152B81EE5DCF25441CDCCCCBC0FE8504152B81E85DCF2544152B81EE514E8504152B81ED5DAF254415C8FC2C519E8504148E17A04D8F25441666666761EE8504148E17AF4D5F254410103000000010000002500000052B81E6566E75041295C8FF2F2F25441000000E068E750413D0AD703F5F25441333333136CE75041D7A3703DF4F25441295C8F626CE750418FC2F558F1F25441AE47E13A6CE750411F85EBB1EFF25441713D0AE76CE750419A999979EDF25441F6285C4F70E75041F6285C2FECF25441000000C074E750418FC2F598ECF254411F85EB6177E7504148E17A94EDF25441A4703DFA7BE75041EC51B8DEEEF25441E17A14DE7EE75041713D0AE7EFF25441000000707FE750415C8FC2B5F1F254417B14AE977FE75041295C8F22F4F254410AD7A3207FE75041F6285CAFF5F254415C8FC2D57DE75041D7A3709DF6F2544152B81EF57CE750417B14AEE7F7F2544148E17A747EE75041A4703DDAF7F2544185EB517880E750411F85EB01F8F25441713D0A7783E750419A999929F8F254415C8FC22586E750415C8FC2D5F8F25441713D0A3788E75041C3F5289CF9F2544152B81EA587E7504185EB5198F7F2544152B81EA587E75041A4703D7AF5F2544185EB51C888E75041D7A3703DF4F25441D7A3700D8BE75041D7A3700DF3F254411F85EBF18DE75041E17A14BEF2F2544185EB515892E75041713D0AA7F2F25441EC51B86E6FE750418FC2F528E7F25441D7A3702D6CE750419A999919EAF25441E17A140E6AE7504133333393E7F254411F85EB416AE7504152B81E75E5F25441CDCCCCBC33E750419A999959D3F25441C3F5285C37E7504148E17A04D7F254417B14AE3757E750419A9999F9E3F25441000000005DE750419A9999E9E9F25441B81E856B62E75041E17A142EEFF2544152B81E6566E75041295C8FF2F2F25441
+</a>
+
+<b>
+010600000001000000010300000001000000430000007B14AE3757E750419A9999F9E3F254412A9815CC5BE750415B406EADE8F254418FB632EE5CE75041AD2752D7E9F254415FABA63D5EE750417F3E501EEBF25441F1ED71835EE750410DC82462EBF2544121CBF9A260E75041A99E6172EDF25441E91507C562E75041C94EEA82EFF25441957EB7E562E750410BE0E5A1EFF254415267C13F63E75041D08C3CF7EFF25441CA058D1064E7504165ED21BDF0F2544128C4092965E750417D5FFAC6F1F25441AF6A10CB65E7504128C98B60F2F25441212CEA8C66E75041AC53BC13F3F25441000000E068E750413D0AD703F5F25441333333136CE75041D7A3703DF4F2544130A5C9616CE75041D2DDB950F1F25441AE47E13A6CE750411F85EBB1EFF25441713D0AE76CE750419A999979EDF25441F6285C4F70E75041F6285C2FECF25441000000C074E750418FC2F598ECF2544142B17AF676E75041A58B616CEDF254410CB5834D77E750417840DD8CEDF25441D1099E7378E750418C5951E1EDF25441A19E8CF179E7504151948A4CEEF25441A4703DFA7BE75041EC51B8DEEEF25441E17A14DE7EE75041713D0AE7EFF25441000000707FE750415C8FC2B5F1F254417B14AE977FE75041295C8F22F4F254410AD7A3207FE75041F6285CAFF5F254415C8FC2D57DE75041D7A3709DF6F2544152B81EF57CE750417B14AEE7F7F2544148E17A747EE75041A4703DDAF7F2544185EB517880E750411F85EB01F8F25441713D0A7783E750419A999929F8F254415C8FC22586E750415C8FC2D5F8F25441713D0A3788E75041C3F5289CF9F2544152B81EA587E7504185EB5198F7F2544152B81EA587E75041A4703D7AF5F2544185EB51C888E75041D7A3703DF4F25441D7A3700D8BE75041D7A3700DF3F254411F85EBF18DE75041E17A14BEF2F2544185EB515892E75041713D0AA7F2F25441A45EEEBA84E750417E28B82BEEF25441B345058783E7504159815CC6EDF25441D8AF0B3A81E7504192867B04EDF25441E4EAA50B7EE75041242966F8EBF254419ABDF4C679E750415CE2B490EAF25441EC51B86E6FE750418FC2F528E7F25441D7A3702D6CE750419A999919EAF25441E17A140E6AE7504133333393E7F254411F85EB416AE7504152B81E75E5F25441F0E982F95FE75041E240D40AE2F254410D0E4BDE5DE75041C0A6BD57E1F25441A9DE316F5CE75041B566D1DDE0F2544152A0F00C59E75041E1C31CBEDFF254413109BE0658E75041939E0767DFF25441698320B356E7504130183CF6DEF2544144434BF952E75041F23171B9DDF254413C6971664EE7504182839234DCF2544133B0080E4BE75041F8012318DBF2544155C4EFA248E750416EBE844ADAF2544147CD4FDE3FE7504102490561D7F25441AE47E12A38E75041333333D3D4F25441F106093936E750415A00E92CD4F25441CDCCCCBC33E750419A999959D3F25441C3F5285C37E7504148E17A04D7F254417B14AE3757E750419A9999F9E3F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986168 - 986181
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441CDCCCCDC11F550418FC2F5F8A26F54413D0AD75310F55041D7A3700DA16F54415C8FC2E505F55041EC51B8DE9B6F5441A4703DEAFBF45041713D0AE7976F54417B14AEC7F0F450418FC2F588956F5441E17A141EE5F45041CDCCCC9C946F5441EC51B8DEE2F45041EC51B80E966F5441F6285CEFDCF4504152B81EA59B6F54415C8FC2F5D8F4504185EB5198A16F5441D7A3709DD4F4504114AE4771AA6F5441CDCCCC0CD3F450410AD7A370B06F54418FC2F5B8D3F45041C3F5283CB76F5441CDCCCC9CCFF45041713D0A47BE6F5441295C8F12CBF45041B81E857BC36F5441
+</a>
+
+<b>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F544108E7FA021CF5504181FB2FDAAC6F5441D0B274FC1BF55041C6C35A73AB6F54418A596A441CF550413B69113DAB6F544193B2557B1DF5504139ED326EA96F5441488344621DF55041D9DCB846A76F5441230CEBF419F55041AC1AE729A36F544160A07EF614F550418AA38DBC9F6F5441B9A6DEAC0FF55041D7188ACC9C6F54419875703609F550411E430E2D996F54410EA8B1AA06F55041A30B4000986F5441F17BD0EC03F5504143FBC5D8956F5441AA92AACA00F550419170C2E8926F54416C7B468DF4F4504139F1AB678E6F5441997E76E8F1F450417CD544D18D6F5441BE362E94EEF450417CD544D18D6F54416026B46CECF450413BF1AB678E6F5441FF153A45EAF45041BD73F243906F5441C5C20482E8F45041F2C62707926F54416CFD020AE7F45041BE787FFC936F5441ED050D35E8F4504123945DDB946F5441DC5BB5E5EBF450414B701626956F544100CCC7F5EEF45041DA841B64956F5441D872F7D0F3F45041059B392E966F54415B3D6F27F9F45041CAB1C250976F5441B14D21F2FCF450411504EC4F986F54416C3009D6FFF450415183FE75996F5441A1E6652904F550418F3E1C2E9B6F5441B5B7575B07F550416FE458989C6F54410AEEE2F109F55041EBFC8DE19D6F5441850F051F0DF55041F26A96759F6F5441608F8E5B10F5504119A61717A16F54417563E9E311F550418385F70CA36F5441EA17FBF212F5504169048D07A66F54412D73A8A416F55041DEABD8ADAF6F54411F85EBD11AF5504185EB5158B86F5441713D0A471AF5504133333393BA6F544109E596EF1AF55041E3AF8EEABC6F5441E872CA3A1BF55041AC166E30BE6F544110300F9F1BF55041E069A3F3BF6F5441C600FE851BF55041DC23B8FCC26F544196F840721AF550418B63433DC56F54418EADC8C219F55041E02845B5C66F544136E8C64A18F550419F44AC4BC76F54412E9D4E9B17F550413DEE462DC86F54419A3E2C6917F5504194B348A5C96F544192F3B3B916F55041D351F617CC6F5441CA46E97C18F550413DF3D3E5CB6F54414FCEBC111EF550410CEB16D2CA6F54415B1EC27922F55041BB708D09CA6F54412E1B921E25F550411FC7F227C96F544191C9EA1425F5504182754B1EC96F544122F0D30125F550417442EA21C96F5441F05860EF24F55041E204C1F8C86F5441DDA0085624F55041D24C695FC86F5441846B8DDE23F550411F9A3456C76F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986375 - 58537
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000006666661652AC504148E17A64EEFB544185EB51D850AC5041EC51B8AEE6FB5441295C8FC252AC5041CDCCCC8CD9FB544185EB511856AC504148E17A74CFFB54417B14AEA756AC50418FC2F538BDFB5441AE47E18A57AC50411F85EB01B7FB54410000004059AC504133333383B0FB5441AE47E1BA50AC50417B14AE47B6FB54415C8FC2654FAC50415C8FC2B5BAFB5441D7A3701D4FAC504152B81EA5BBFB5441D7A3704D4DAC504166666646C6FB54411F85EB414BAC504148E17AE4CBFB5441EC51B83E4DAC504114AE4771D5FB5441AE47E13A4DAC5041EC51B84EE5FB54419A9999094DAC5041AE47E12AEEFB54416666661652AC504148E17A64EEFB5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000EC51B83E4DAC504114AE4771D5FB5441F7C78A3C4DAC50416BFBC170DEFB5441AE47E13A4DAC5041EC51B84EE5FB54419A9999094DAC5041AE47E12AEEFB5441DF1293E14EAC5041DB97E83FEEFB5441D9BAFE1052AC504101E3F042EEFB5441D393CE0952AC5041A9505616EEFB5441FF9306E151AC504120B44719EDFB5441CB55D70751AC50412F8999D5E7FB544185EB51D850AC5041EC51B8AEE6FB54411B9B10DC50AC504105F00995E6FB5441FC178EC751AC504194011E46E0FB54419C0BB40752AC50415026358EDEFB544170B063A952AC504189936939DAFB5441295C8FC252AC5041CDCCCC8CD9FB5441AFF6351053AC5041FD88C0A1D8FB54411EEBF18D53AC5041BA072825D7FB5441A5A73DA254AC5041B704D0E0D3FB54412412310555AC5041FB294AB5D2FB54410D683E9355AC5041A9C84C07D1FB54417C5DEECC55AC50413D5FAE58D0FB54411876B01E56AC504168A81BA5CEFB54415D71252556AC504198D3E1D2CDFB54415AE2326456AC5041C53304CEC5FB54416F686E7656AC504104CC667CC3FB54412716D59556AC50415D360B7EBFFB54417B14AEA756AC50418FC2F538BDFB5441AE47E18A57AC50411F85EB01B7FB5441BB15E2DC57AC504187F2FEC9B5FB5441DAF614B658AC50411E57D08FB2FB54410084F10459AC504121FED663B1FB54418D90213659AC50419545BDA8B0FB5441DE6C0DB950AC5041E17FC14DB6FB5441F46C341B50AC50417B5D885AB8FB5441FE98E9984FAC50417C16B30BBAFB544181BC90174FAC50410CDB92C7BBFB5441D7A3704D4DAC504166666646C6FB5441778AC2FE4BAC5041F851BFDDC9FB544147C4F64A4BAC504197B6EF0FCCFB54410157F2F24CAC50417FC62F05D4FB54419C9FA8234DAC50415BE13FEFD4FB5441EC51B83E4DAC504114AE4771D5FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986402 - 1381924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000001FEF5E314C0D51411C78A6A24B19554192E4213B4E0D5141E98BA42F4D19554166368BC6510D51410D5FC6664F195541308C5AA1550D51410AA197B451195541F74C7343590D51413601A48553195541BE6071D05A0D51417B2B11F753195541ED2F2DB85C0D5141A3BC61E053195541DE09A44C5F0D5141C10743D64F195541E8CCB7B5600D514129C7C8974C195541FB2BA83F630D514193AD85A1491955415A673AA8690D5141E962B31D47195541C78F4779730D51417A110CED42195541C422EA337B0D5141E80323AC3F195541EEF1A51B7D0D514118F8F0BD3E195541564AE64D7E0D5141CF3467C43D195541937453BF7E0D5141CC937E9D3C1955414252B2EC7E0D5141474770593C195541CBE0917E810D5141282AB135371955417B5FD9D2820D5141C08F9FB5331955416A1E538C830D5141CF5A451D2F1955419CF029BC820D5141023EBD912719554164A9ADB3820D514176CD01FC22195541E315928F820D51412F9FAE6419195541B4DCDACF640D5141E1A5C3E819195541D894FE735E0D51410E0E7C3A2619554114AE4731590D51413D0AD7B33119554166666646530D5141D7A3707D3C1955416B7C49CB4B0D514138FDC49D4A1955411FEF5E314C0D51411C78A6A24B195541
+</a>
+
+<b>
+010600000001000000010300000001000000230000005770CA64640D5141FB3F78EF1A195541DB94FE735E0D51410E0E7C3A2619554114AE4731590D51413D0AD7B33119554166666646530D5141D7A3707D3C1955416B7C49CB4B0D514135FDC49D4A19554124EF5E314C0D51411A78A6A24B19554197E4213B4E0D5141E68BA42F4D1955416A368BC6510D51410A5FC6664F195541338C5AA1550D514106A197B451195541F44C7343590D51413101A48553195541C06071D05A0D5141762B11F753195541EF2F2DB85C0D51419EBC61E053195541BBD3D0745E0D51411C733028511955413D0AD7A35E0D51415C8FC2C550195541B396CBCC5F0D51413EAA81AF4E195541EBCCB7B5600D514124C7C8974C195541A8D3316E610D514148BF8FC04B195541C3F5288C620D5141E17A14BE4919554100000090680D51419A9999794719554117E568F86A0D51416910358E46195541CC8F4779730D51417B110CED42195541C922EA337B0D5141E60323AC3F195541EDF1A51B7D0D51411BF8F0BD3E195541574AE64D7E0D5141CD3467C43D195541917453BF7E0D5141CF937E9D3C1955414252B2EC7E0D5141464770593C195541C8E0917E810D5141242AB13537195541785FD9D2820D5141BD8F9FB533195541D2418D7A830D51414D34FE8D2F195541F17F4189830D51419C91CB002F1955419FF029BC820D5141043EBD912719554166A9ADB3820D514175CD01FC22195541A92E8DA8820D51417333610720195541295C8F52820D51413D0AD7031B1955415770CA64640D5141FB3F78EF1A195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986402 - 3305095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000001FEF5E314C0D51411C78A6A24B19554192E4213B4E0D5141E98BA42F4D19554166368BC6510D51410D5FC6664F195541308C5AA1550D51410AA197B451195541F74C7343590D51413601A48553195541BE6071D05A0D51417B2B11F753195541ED2F2DB85C0D5141A3BC61E053195541DE09A44C5F0D5141C10743D64F195541E8CCB7B5600D514129C7C8974C195541FB2BA83F630D514193AD85A1491955415A673AA8690D5141E962B31D47195541C78F4779730D51417A110CED42195541C422EA337B0D5141E80323AC3F195541EEF1A51B7D0D514118F8F0BD3E195541564AE64D7E0D5141CF3467C43D195541937453BF7E0D5141CC937E9D3C1955414252B2EC7E0D5141474770593C195541CBE0917E810D5141282AB135371955417B5FD9D2820D5141C08F9FB5331955416A1E538C830D5141CF5A451D2F1955419CF029BC820D5141023EBD912719554164A9ADB3820D514176CD01FC22195541E315928F820D51412F9FAE6419195541B4DCDACF640D5141E1A5C3E819195541D894FE735E0D51410E0E7C3A2619554114AE4731590D51413D0AD7B33119554166666646530D5141D7A3707D3C1955416B7C49CB4B0D514138FDC49D4A1955411FEF5E314C0D51411C78A6A24B195541
+</a>
+
+<b>
+010600000001000000010300000001000000230000005770CA64640D5141FB3F78EF1A195541DB94FE735E0D51410E0E7C3A2619554114AE4731590D51413D0AD7B33119554166666646530D5141D7A3707D3C1955416B7C49CB4B0D514135FDC49D4A19554124EF5E314C0D51411A78A6A24B19554197E4213B4E0D5141E68BA42F4D1955416A368BC6510D51410A5FC6664F195541338C5AA1550D514106A197B451195541F44C7343590D51413101A48553195541C06071D05A0D5141762B11F753195541EF2F2DB85C0D51419EBC61E053195541BBD3D0745E0D51411C733028511955413D0AD7A35E0D51415C8FC2C550195541B396CBCC5F0D51413EAA81AF4E195541EBCCB7B5600D514124C7C8974C195541A8D3316E610D514148BF8FC04B195541C3F5288C620D5141E17A14BE4919554100000090680D51419A9999794719554117E568F86A0D51416910358E46195541CC8F4779730D51417B110CED42195541C922EA337B0D5141E60323AC3F195541EDF1A51B7D0D51411BF8F0BD3E195541574AE64D7E0D5141CD3467C43D195541917453BF7E0D5141CF937E9D3C1955414252B2EC7E0D5141464770593C195541C8E0917E810D5141242AB13537195541785FD9D2820D5141BD8F9FB533195541D2418D7A830D51414D34FE8D2F195541F17F4189830D51419C91CB002F1955419FF029BC820D5141043EBD912719554166A9ADB3820D514175CD01FC22195541A92E8DA8820D51417333610720195541295C8F52820D51413D0AD7031B1955415770CA64640D5141FB3F78EF1A195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>727298 - 421421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000078000000D7F8BF2DBAC35041538CFCF2943E5541713D0AE7B9C35041A4703D8A943E5541713D0A97B9C35041A4703D6A903E5541713D0A27B9C35041A4703DDA8F3E5541713D0AC7B6C35041A4703D4A8E3E5541713D0A17B3C35041A4703D1A8B3E5541713D0A47B0C35041A4703D5A8A3E5541713D0A07ACC35041A4703D9A893E5541713D0A87AAC35041A4703DEA883E5541B81E855BA8C350410AD7A3A0873E5541713D0A57A7C35041A4703DCA863E5541713D0A47A4C35041A4703D3A863E5541713D0AE7A2C35041A4703D2A853E5541713D0A97A0C35041A4703DFA813E5541713D0AC79AC35041A4703D4A7E3E5541F6285CFF97C3504185EB51B87D3E554114AE47B195C35041F6285CDF7E3E5541E17A14EE8FC35041AE47E17A833E5541D7A3700D85C350419A999989813E55419A9999C97EC3504100000050803E55411F85EB417BC3504152B81E857F3E55417B14AE9778C350419A9999497D3E5541D7A370DD76C35041333333437A3E5541AE47E1CA76C350413D0AD763783E55410AD7A37077C350410AD7A3F0753E554114AE47E178C3504100000080743E554152B81E3575C35041713D0A57723E55419A9999B96EC35041C3F5281C793E5541333333A36CC3504148E17AD4793E5541B0F737DB6AC35041498D521C783E5541EC51B85E66C350417B14AEC7733E55413D0AD79365C350413D0AD7E36F3E5541EC51B80E5DC35041D7A3702D6C3E5541295C8FE25BC35041713D0A676E3E55419A9999F957C3504148E17A74893E55417B14AEE756C35041C3F528EC8E3E5541295C8F8257C3504114AE47F18E3E55417B14AE0757C3504148E17AA4913E55417B14AE7756C350417B14AE97953E55418FC2F53856C35041AE47E10A973E554148E17A3455C35041666666C69B3E5541CDCCCC1C54C350415C8FC275A13E5541B81E855B53C35041E17A14AEA53E55419A99998952C350419A9999E9AB3E55415C8FC21552C350419A999999B03E5541F6285CFF50C35041AE47E16AB83E5541713D0AF753C35041A4703D3ABB3E5541EC51B88E56C35041E17A148EBD3E5541CDCCCC6C58C3504133333343BF3E55419A9999D959C3504133333393C03E5541A4703DBA5BC3504166666686C23E5541A4703DFA62C350417B14AEA7C93E5541713D0AC76DC350418FC2F548D13E5541F6285C8F7FC350419A999909D73E5541D7A370ED92C35041E17A148EDC3E55418FC2F5A8B7C35041C3F5280CE83E5541F6285CBFC0C35041A4703DCAE93E5541B81E857BC6C35041713D0AC7EA3E5541EC51B86EC8C3504133333363EA3E5541C3F528CCC9C3504152B81EF5E83E5541666666D6CAC350413D0AD793E53E55411F85EB01CCC35041666666F6E03E554148E17A44CCC35041CDCCCCBCDC3E554166666676CBC350411F85EBD1D73E5541A4703D6ACAC3504152B81ED5D53E55415C8FC2B5C9C35041A4703DBAD33E554133333343C9C35041333333C3D13E5541E17A14DEC8C350417B14AED7CF3E554148E17A74C8C35041295C8FF2CE3E5541B81E857BC7C350411F85EB71CD3E554185EB51E8C6C350413D0AD743CC3E5541C3F528CCC6C35041C3F5287CCB3E5541F6285CBFC6C350411F85EB21C93E5541F6285CBFC6C350415C8FC2B5C63E554185EB51F8C6C35041CDCCCC3CC43E55411F85EB71C7C35041B81E85DBC13E5541AE47E10AC8C35041713D0AE7BF3E554185EB5148C8C3504133333393BE3E5541295C8F82C8C350417B14AE27BD3E55410AD7A360C9C35041C3F528BCBA3E5541EC51B87ECAC35041AE47E19AB73E55418FC2F5D8CBC350410AD7A390B43E5541C3F5288CCCC35041B81E85CBB23E55413D0AD7D3CCC35041F6285C9FB13E5541CDCCCC2CCDC35041333333C3B03E5541295C8F92CDC3504185EB5128B03E5541F6285C8FCEC35041C3F528FCAE3E5541666666C6CEC350418FC2F598AE3E554185EB5108CFC35041A4703DEAAD3E55418FC2F548CFC350411F85EBD1AC3E554148E17A84CFC350419A999959AC3E554148E17A34D0C350417B14AE97AB3E55410AD7A380D0C35041F6285CCFAA3E5541B81E85BBD0C350413D0AD783A93E554133333323D1C350410AD7A300A93E55419A9999C9D1C35041B81E85FBA73E5541713D0A67D2C35041C3F5287CA63E55419A999909D3C350410AD7A370A43E5541F6285C5FD3C35041D7A370EDA23E5541295C8FD2D3C35041B81E850BA13E55411F85EB31D4C3504152B81E859F3E5541666666B6D4C35041295C8F829D3E5541E17A140ED5C350417B14AE079C3E5541295C8FA2D4C35041A4703DEA9A3E554185EB51B8D4C3504114AE47E1993E5541666666B6D4C35041295C8F12993E554148E17A64D4C35041713D0AE7973E5541F6285CFFD3C3504148E17AB4963E5541666666D6D2C35041C3F528FC953E5541B81E85EBD1C35041295C8F62953E554100000030D1C350415C8FC2B5943E5541666666B6D0C35041A4703D0A943E554166666616D0C35041C3F5286C923E5541713D0AC7CCC35041A4703D9A8E3E554152B81E45CAC350413D0AD7138F3E5541713D0A57C1C3504114AE4781973E554100000040BFC35041E17A145E983E5541C3F5283CBDC350411F85EB01983E55413D0AD7A3BAC350411F85EBA1953E5541D7F8BF2DBAC35041538CFCF2943E55410D0000007B14AEF7BDC3504185EB5158C23E55411F85EB61BDC35041E17A142EC63E55411F85EB61BDC35041AE47E1AACA3E5541EC51B89EB6C35041CDCCCC3CC93E5541CDCCCCCCB4C3504148E17A64C83E55418FC2F5C8B2C350410AD7A370C63E5541AE47E15AB1C3504152B81EA5C33E5541295C8F82B0C3504166666646BD3E554133333393B0C35041D7A3707DB73E5541CDCCCC2CB3C35041EC51B81EB13E554152B81EF5C0C35041D7A3707DB73E554114AE47F1BEC35041F6285C2FBE3E55417B14AEF7BDC3504185EB5158C23E554105000000D7A3706DB5C350411F85EB118E3E5541713D0A67B5C35041A4703D8A8E3E5541713D0A77AEC35041A4703D6A8B3E5541713D0A97AEC35041A4703DFA8A3E5541D7A3706DB5C350411F85EB118E3E5541
+</a>
+
+<b>
+0106000000010000000103000000020000005200000082A1F723BCC35041434A7B01973E55415E482A8BB9C35041C1504BA9943E554118EC554EB9C350416ADD415D943E5541CABC7A13B7C350417FBC7CFB923E55415670CBD9ABC35041829F236B8D3E5541E182E47AA2C350418FBC9883893E5541AF3BE3FC99C35041F635FF18863E5541AA262B0E8FC35041A713DC44873E554130759DE379C35041C7E21345833E554173B5AE9876C350410159810B813E5541A197F60D74C35041965D6E49803E5541927BB60B68C350414148B764783E55414B974D0763C35041347591FB723E55416FA01D4C5CC350417DD497F06F3E55416387FDB15BC35041D26715B76F3E55416708EC3659C35041C340FEE0803E55419A9999F957C3504148E17A74893E55417B14AEE756C35041C3F528EC8E3E5541295C8F8257C3504114AE47F18E3E55417B14AE0757C3504148E17AA4913E55417B14AE7756C350417B14AE97953E55418FC2F53856C35041AE47E10A973E554148E17A3455C35041666666C69B3E5541CDCCCC1C54C350415C8FC275A13E5541B81E855B53C35041E17A14AEA53E55419A99998952C350419A9999E9AB3E55415C8FC21552C350419A999999B03E554175F6E3A551C350413F52C6BDB33E5541C879E01866C350417D24C46FC73E55414D22AF996FC35041C750E5E8CD3E5541743DB89396C35041D90DD59DD93E554162EA7698B8C35041F751F65BE43E55414A54FBADC5C3504108899BD6E63E5541AE231455C7C35041CE0CEECEE33E5541AD9CE24BC8C35041CBF10E79DD3E55418F57DABEC7C35041BBC8CC10D93E5541381D5633C3C3504162FA9A38CD3E55414B980222C7C35041CC14E96BC33E55411F85EB71C7C35041B81E85DBC13E5541AE47E10AC8C35041713D0AE7BF3E554185EB5148C8C3504133333393BE3E5541295C8F82C8C350417B14AE27BD3E55410AD7A360C9C35041C3F528BCBA3E5541EC51B87ECAC35041AE47E19AB73E55418FC2F5D8CBC350410AD7A390B43E5541C3F5288CCCC35041B81E85CBB23E55413D0AD7D3CCC35041F6285C9FB13E5541CDCCCC2CCDC35041333333C3B03E5541295C8F92CDC3504185EB5128B03E5541F6285C8FCEC35041C3F528FCAE3E5541666666C6CEC350418FC2F598AE3E554185EB5108CFC35041A4703DEAAD3E55418FC2F548CFC350411F85EBD1AC3E554148E17A84CFC350419A999959AC3E554148E17A34D0C350417B14AE97AB3E55410AD7A380D0C35041F6285CCFAA3E5541B81E85BBD0C350413D0AD783A93E554133333323D1C350410AD7A300A93E55419A9999C9D1C35041B81E85FBA73E5541713D0A67D2C35041C3F5287CA63E55419A999909D3C350410AD7A370A43E5541F6285C5FD3C35041D7A370EDA23E5541295C8FD2D3C35041B81E850BA13E55411F85EB31D4C3504152B81E859F3E5541666666B6D4C35041295C8F829D3E5541E17A140ED5C350417B14AE079C3E5541295C8FA2D4C35041A4703DEA9A3E554185EB51B8D4C3504114AE47E1993E5541666666B6D4C35041295C8F12993E554148E17A64D4C35041713D0AE7973E5541F6285CFFD3C3504148E17AB4963E5541666666D6D2C35041C3F528FC953E5541B81E85EBD1C35041295C8F62953E554100000030D1C350415C8FC2B5943E5541666666B6D0C35041A4703D0A943E554166666616D0C35041C3F5286C923E5541713D0AC7CCC35041A4703D9A8E3E554152B81E45CAC350413D0AD7138F3E5541713D0A57C1C3504114AE4781973E554100000040BFC35041E17A145E983E5541C3F5283CBDC350411F85EB01983E554182A1F723BCC35041434A7B01973E55410D0000007B14AEF7BDC3504185EB5158C23E55411F85EB61BDC35041E17A142EC63E55411F85EB61BDC35041AE47E1AACA3E5541EC51B89EB6C35041CDCCCC3CC93E5541CDCCCCCCB4C3504148E17A64C83E55418FC2F5C8B2C350410AD7A370C63E5541AE47E15AB1C3504152B81EA5C33E5541295C8F82B0C3504166666646BD3E554133333393B0C35041D7A3707DB73E5541CDCCCC2CB3C35041EC51B81EB13E554152B81EF5C0C35041D7A3707DB73E554114AE47F1BEC35041F6285C2FBE3E55417B14AEF7BDC3504185EB5158C23E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>727298 - 421731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000078000000D7F8BF2DBAC35041538CFCF2943E5541713D0AE7B9C35041A4703D8A943E5541713D0A97B9C35041A4703D6A903E5541713D0A27B9C35041A4703DDA8F3E5541713D0AC7B6C35041A4703D4A8E3E5541713D0A17B3C35041A4703D1A8B3E5541713D0A47B0C35041A4703D5A8A3E5541713D0A07ACC35041A4703D9A893E5541713D0A87AAC35041A4703DEA883E5541B81E855BA8C350410AD7A3A0873E5541713D0A57A7C35041A4703DCA863E5541713D0A47A4C35041A4703D3A863E5541713D0AE7A2C35041A4703D2A853E5541713D0A97A0C35041A4703DFA813E5541713D0AC79AC35041A4703D4A7E3E5541F6285CFF97C3504185EB51B87D3E554114AE47B195C35041F6285CDF7E3E5541E17A14EE8FC35041AE47E17A833E5541D7A3700D85C350419A999989813E55419A9999C97EC3504100000050803E55411F85EB417BC3504152B81E857F3E55417B14AE9778C350419A9999497D3E5541D7A370DD76C35041333333437A3E5541AE47E1CA76C350413D0AD763783E55410AD7A37077C350410AD7A3F0753E554114AE47E178C3504100000080743E554152B81E3575C35041713D0A57723E55419A9999B96EC35041C3F5281C793E5541333333A36CC3504148E17AD4793E5541B0F737DB6AC35041498D521C783E5541EC51B85E66C350417B14AEC7733E55413D0AD79365C350413D0AD7E36F3E5541EC51B80E5DC35041D7A3702D6C3E5541295C8FE25BC35041713D0A676E3E55419A9999F957C3504148E17A74893E55417B14AEE756C35041C3F528EC8E3E5541295C8F8257C3504114AE47F18E3E55417B14AE0757C3504148E17AA4913E55417B14AE7756C350417B14AE97953E55418FC2F53856C35041AE47E10A973E554148E17A3455C35041666666C69B3E5541CDCCCC1C54C350415C8FC275A13E5541B81E855B53C35041E17A14AEA53E55419A99998952C350419A9999E9AB3E55415C8FC21552C350419A999999B03E5541F6285CFF50C35041AE47E16AB83E5541713D0AF753C35041A4703D3ABB3E5541EC51B88E56C35041E17A148EBD3E5541CDCCCC6C58C3504133333343BF3E55419A9999D959C3504133333393C03E5541A4703DBA5BC3504166666686C23E5541A4703DFA62C350417B14AEA7C93E5541713D0AC76DC350418FC2F548D13E5541F6285C8F7FC350419A999909D73E5541D7A370ED92C35041E17A148EDC3E55418FC2F5A8B7C35041C3F5280CE83E5541F6285CBFC0C35041A4703DCAE93E5541B81E857BC6C35041713D0AC7EA3E5541EC51B86EC8C3504133333363EA3E5541C3F528CCC9C3504152B81EF5E83E5541666666D6CAC350413D0AD793E53E55411F85EB01CCC35041666666F6E03E554148E17A44CCC35041CDCCCCBCDC3E554166666676CBC350411F85EBD1D73E5541A4703D6ACAC3504152B81ED5D53E55415C8FC2B5C9C35041A4703DBAD33E554133333343C9C35041333333C3D13E5541E17A14DEC8C350417B14AED7CF3E554148E17A74C8C35041295C8FF2CE3E5541B81E857BC7C350411F85EB71CD3E554185EB51E8C6C350413D0AD743CC3E5541C3F528CCC6C35041C3F5287CCB3E5541F6285CBFC6C350411F85EB21C93E5541F6285CBFC6C350415C8FC2B5C63E554185EB51F8C6C35041CDCCCC3CC43E55411F85EB71C7C35041B81E85DBC13E5541AE47E10AC8C35041713D0AE7BF3E554185EB5148C8C3504133333393BE3E5541295C8F82C8C350417B14AE27BD3E55410AD7A360C9C35041C3F528BCBA3E5541EC51B87ECAC35041AE47E19AB73E55418FC2F5D8CBC350410AD7A390B43E5541C3F5288CCCC35041B81E85CBB23E55413D0AD7D3CCC35041F6285C9FB13E5541CDCCCC2CCDC35041333333C3B03E5541295C8F92CDC3504185EB5128B03E5541F6285C8FCEC35041C3F528FCAE3E5541666666C6CEC350418FC2F598AE3E554185EB5108CFC35041A4703DEAAD3E55418FC2F548CFC350411F85EBD1AC3E554148E17A84CFC350419A999959AC3E554148E17A34D0C350417B14AE97AB3E55410AD7A380D0C35041F6285CCFAA3E5541B81E85BBD0C350413D0AD783A93E554133333323D1C350410AD7A300A93E55419A9999C9D1C35041B81E85FBA73E5541713D0A67D2C35041C3F5287CA63E55419A999909D3C350410AD7A370A43E5541F6285C5FD3C35041D7A370EDA23E5541295C8FD2D3C35041B81E850BA13E55411F85EB31D4C3504152B81E859F3E5541666666B6D4C35041295C8F829D3E5541E17A140ED5C350417B14AE079C3E5541295C8FA2D4C35041A4703DEA9A3E554185EB51B8D4C3504114AE47E1993E5541666666B6D4C35041295C8F12993E554148E17A64D4C35041713D0AE7973E5541F6285CFFD3C3504148E17AB4963E5541666666D6D2C35041C3F528FC953E5541B81E85EBD1C35041295C8F62953E554100000030D1C350415C8FC2B5943E5541666666B6D0C35041A4703D0A943E554166666616D0C35041C3F5286C923E5541713D0AC7CCC35041A4703D9A8E3E554152B81E45CAC350413D0AD7138F3E5541713D0A57C1C3504114AE4781973E554100000040BFC35041E17A145E983E5541C3F5283CBDC350411F85EB01983E55413D0AD7A3BAC350411F85EBA1953E5541D7F8BF2DBAC35041538CFCF2943E55410D0000007B14AEF7BDC3504185EB5158C23E55411F85EB61BDC35041E17A142EC63E55411F85EB61BDC35041AE47E1AACA3E5541EC51B89EB6C35041CDCCCC3CC93E5541CDCCCCCCB4C3504148E17A64C83E55418FC2F5C8B2C350410AD7A370C63E5541AE47E15AB1C3504152B81EA5C33E5541295C8F82B0C3504166666646BD3E554133333393B0C35041D7A3707DB73E5541CDCCCC2CB3C35041EC51B81EB13E554152B81EF5C0C35041D7A3707DB73E554114AE47F1BEC35041F6285C2FBE3E55417B14AEF7BDC3504185EB5158C23E554105000000D7A3706DB5C350411F85EB118E3E5541713D0A67B5C35041A4703D8A8E3E5541713D0A77AEC35041A4703D6A8B3E5541713D0A97AEC35041A4703DFA8A3E5541D7A3706DB5C350411F85EB118E3E5541
+</a>
+
+<b>
+0106000000010000000103000000020000003A000000DEDD71FB8FC35041683BAC91833E55415598E5A890C350410717A152833E55415DA605AA96C3504134F81A72823E55416FE303A59AC350412B55BBD9823E5541837DA2079FC3504129C93C78843E5541701625DEA7C350413B063B73883E5541C07A5C29AAC350415EB8D698893E5541214B7069AEC350417D8153F58B3E5541D37FBBF4B4C3504114D640ED8E3E554118EC554EB9C350416ADD415D943E55415E482A8BB9C35041C1504BA9943E554182A1F723BCC35041434A7B01973E55413D0AD7A3BAC350411F85EBA1953E5541D4F8BF2DBAC35041588CFCF2943E5541713D0AE7B9C35041A4703D8A943E5541713D0A97B9C35041A4703D6A903E5541713D0A27B9C35041A4703DDA8F3E5541713D0AC7B6C35041A4703D4A8E3E5541713D0A17B3C35041A4703D1A8B3E5541713D0A47B0C35041A4703D5A8A3E5541713D0A07ACC35041A4703D9A893E5541713D0A87AAC35041A4703DEA883E5541B81E855BA8C350410AD7A3A0873E5541713D0A57A7C35041A4703DCA863E5541713D0A47A4C35041A4703D3A863E5541713D0AE7A2C35041A4703D2A853E5541713D0A97A0C35041A4703DFA813E5541713D0AC79AC35041A4703D4A7E3E5541F6285CFF97C3504185EB51B87D3E554114AE47B195C35041F6285CDF7E3E554181949A2793C3504160AFD1E6803E5541E17A14EE8FC35041AE47E17A833E5541D7A3700D85C350419A999989813E55419A9999C97EC3504100000050803E55411F85EB417BC3504152B81E857F3E55417B14AE9778C350419A9999497D3E5541D7A370DD76C35041333333437A3E5541AE47E1CA76C350413D0AD763783E55410AD7A37077C350410AD7A3F0753E554114AE47E178C3504100000080743E554152B81E3575C35041713D0A57723E55419A9999B96EC35041C3F5281C793E5541333333A36CC3504148E17AD4793E5541B3F737DB6AC350414B8D521C783E5541EC51B85E66C350417B14AEC7733E55413D0AD79365C350413D0AD7E36F3E5541EC51B80E5DC35041D7A3702D6C3E554188420FCD5CC35041B1C403B46D3E554181D3F7A75DC35041A6CEC8346E3E5541B74E102A61C35041BCF4E5F8703E5541927BB60B68C350414148B764783E5541A197F60D74C35041965D6E49803E554173B5AE9876C350410159810B813E55410C0B6AE677C35041B90F0A6F813E5541D9C434A380C35041A956B8D0823E5541B735D8AF87C350417FA211EE833E554187627E918EC3504156AAB697833E5541DEDD71FB8FC35041683BAC91833E554105000000D7A3706DB5C350411F85EB118E3E5541713D0A67B5C35041A4703D8A8E3E5541713D0A77AEC35041A4703D6A8B3E5541713D0A97AEC35041A4703DFA8A3E5541D7A3706DB5C350411F85EB118E3E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287601 - 3104366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000003D0000003D0AD753C1A75141D7A3709DE0A65441713D0A07C0A7514148E17A14E1A654411F85EB61BBA751417B14AEB7D5A65441F6285CCFBAA75141295C8FC2D2A65441CDCCCC9CBBA75141D7A370CDCCA654419A9999E9BAA751410AD7A390C9A65441A4703DCAB9A75141EC51B85EC6A6544114AE4741B8A7514166666696C3A6544100000030B6A7514133333323C1A65441C3F528ACB2A75141AE47E15ABEA654410AD7A3D0AFA751419A999909BDA65441D7A370FDADA75141E17A14AEBCA65441E17A14BE9DA751418FC2F5E8C0A65441D7A3704D94A751410AD7A370C3A65441C3F5280C8AA75141713D0A37C6A65441D7A3704D8EA751419A999959D0A654419A9999E996A7514148E17A34CBA654416666666698A751417B14AE77CCA65441AE47E1CA9BA7514148E17AD4D5A654413D0AD7939DA75141AE47E12AD5A65441B81E855BA1A751419A9999C9D6A65441B81E858BABA75141D7A3705DCFA65441713D0AC7AEA75141F6285CAFD2A6544185EB51A8AEA751417B14AEF7D3A654417B14AE07ADA751415C8FC245D8A654415C8FC285A9A7514114AE47C1D9A65441AC00BC69ABA75141A51BFC69DCA65441EF24DC90ADA75141B671FA71DBA654411F85EBC1ADA751418FC2F5B8DEA654411F85EBC1ADA75141333333B3E3A65441E17A143EABA751410AD7A300EDA654415C8FC225AAA751417B14AE57F7A654413D0AD7E3A8A75141295C8FD2FFA65441CDCCCC0C9EA75141D7A370DDFEA65441713D0A5799A751413D0AD72306A75441C3F5284C8DA751415C8FC28508A75441B81E85CB86A751415C8FC29510A75441C3F5284C81A7514185EB517812A75441000000607CA751418FC2F5E80DA75441D7A3700D75A75141D7A3702D0FA75441B81E852B75A75141D7A370AD10A7544148E17A8475A7514152B81EC512A7544152B81E057BA7514114AE47D116A754413D0AD7F37DA75141E17A140E18A75441E17A143E82A75141A4703D4A19A754410000008090A75141F6285C8F22A7544114AE47419CA751411F85EBF116A75441C3F5288CAAA75141F6285C2F09A75441B81E852BABA751411F85EB5108A754419B874231ABA75141667A985308A7544145626031ABA751417252525108A754419A9999F9ABA75141E17A148E08A754417B14AED7C8A75141333333F310A75441B81E859BCAA75141D7A370CD10A75441A4703D4ACBA75141D7A3700D10A75441A4703DAACAA751419A9999090AA75441A4703D8AC8A75141F6285CAFFFA654413D0AD703C7A7514185EB51C8F7A65441A4703DDAC5A7514114AE47F1F0A65441F66B4C55C3A75141BC1E5AC2E6A654413D0AD753C1A75141D7A3709DE0A654410F000000D0324C83B1A7514106A47C11DAA65441CECDA382B1A751419AB70411DAA65441F8E20C81B1A75141B42C9A16DAA654416026B77EB1A75141075FF114DAA654415622C62FB1A7514111171E34DBA654412A426CD8AEA751412907936DE3A65441B81E85EBAEA75141295C8FE2DEA654419A9999F9ADA751418FC2F5D8DBA654415C8FC255B0A75141F6285CEFD7A65441A4703D6AB1A75141A4703D4AD4A65441D7A370DDAFA75141B81E85ABD2A65441E17A144EB3A75141B81E85CBD1A654418FC2F5B8B4A751418FC2F538D4A6544100000090B2A7514185EB51B8D6A65441D0324C83B1A7514106A47C11DAA65441
+</a>
+
+<b>
+010600000001000000010300000001000000890000007B14AED7C8A75141333333F310A75441B81E859BCAA75141D7A370CD10A75441A4703D4ACBA75141D7A3700D10A75441A4703DAACAA751419A9999090AA75441A4703D8AC8A75141F6285CAFFFA654413D0AD703C7A7514185EB51C8F7A65441A4703DDAC5A7514114AE47F1F0A65441CDCCCC4CC3A75141000000A0E6A654416A9C7295BFA75141CB7B2AE5E3A6544121CB0650C0A75141DD2BA24AE3A65441AE47E1AABFA7514133333393E1A65441B066EE15BDA7514121DF8A86DBA654411E918A3EBBA75141646B0936D7A6544185EB5148BAA7514152B81EF5D4A654419433D020BAA751411220962FD4A65441295C8FE2B9A7514185EB51F8D2A6544110E63880BAA751413AA26FC5D0A65441994A5E1ABBA7514191091B9FCEA65441CDCCCC9CBBA75141D7A370CDCCA654413D9AD2EABAA75141FB794B96C9A65441E90A9ED3B9A7514134376979C6A65441170CC338B8A7514144564E8CC3A654419483552CB6A751419B494C20C1A65441B8502233B4A7514100C16090BFA654417D0374B2B2A751411F9ADC5FBEA65441062CE1C3AFA7514159B050FEBCA65441748570F6ADA75141D70DE7AFBCA654412E0C05CAAAA751418B0A6A83BDA654419586D429A5A7514149445DFABEA65441E4B5B9789EA75141DBBBCCBDC0A65441014C3E6499A7514110487A13C2A6544165D996A495A75141BD4FAC14C3A654419E13759B97A751412CA94958C8A65441B4BF9A229AA75141E918E7F0CEA65441275C596F9CA751412401F671D6A65441FB1D4C489EA7514141EEC7DBD5A654419D0E43369FA75141F62434DED5A65441A07A7911A2A75141E7A9AB33D6A65441C1311328A4A75141E7A9AB33D6A6544134CD878BA5A75141D1A92F22D6A65441053E585BA6A75141F1072878D5A6544117FEC0F9A6A75141A329F3F2D4A65441EE01E10AA8A75141DC608FA1D3A654410DED735DA9A75141A23F7AF5D1A65441C1255B04AAA75141122EE4F7D0A65441E3EA7884AAA751416E914959D0A654418154D2A1ABA751414BA3708FCFA65441423A8452ADA751412D27DFC0D0A65441EED7B6AEAEA7514125FA65B2D1A65441FB124159AFA7514142EAB818D2A6544186BCD2ACB0A75141578E14EBD1A65441BF2DF56CB1A751419D9733CCD1A654419CD9954AB2A75141ED3295A8D1A6544144ADE1A8B2A7514112480FB2D1A654410A15BBFCB2A7514196D74434D3A65441C14F2427B3A75141648A416AD4A6544160EAA3B9B2A75141F39F6297D5A654414FFDC99CB2A75141BA739763D6A6544173F92A41B2A75141EFDBB7C4D7A654418E3616FEB1A751413663C989D8A65441CD692289B1A751412E1EDC9ED9A65441CAA87084B0A7514118E2BF5FD9A65441F550F82FB1A7514143DA7172D7A654419537136DB1A7514107C02E18D6A65441535BAA92B1A7514198A02B43D5A65441B6091EAFB0A751412CEBA310D4A6544103CA09D3AEA75141CB2BDB6FD4A65441892523D6ADA7514198ACA523D6A654417915A1AEACA75141297EE7BCD6A6544168DE9AFCABA7514153DB1760D7A6544196EB0EF3AAA751413DCF8253D8A654418CE6771AAAA751414C27864BD9A65441670817A7ABA75141660C680EDCA654416A49F698ADA751417D5ADB61DBA654411F85EBC1ADA75141B46BCC48E0A654411F85EBC1ADA7514147B137EBE2A6544158C55FBAADA751410F5E1CCFE3A65441CC645554ADA75141B5008A48E5A65441D3710C1CADA7514141EDB918E6A65441138D4158ACA751413BD8ECECE8A654412159DF9DABA75141E27A529EEBA6544169479A3BABA75141228D0818EDA654412B336105ABA75141B7800E18EFA654416FD42BCAAAA751415A5F2847F1A65441C44F318EAAA751415CE5877DF3A65441E59CD667AAA75141EA1AB5E7F4A65441DAB709C9A9A75141C164F4C8F9A65441C53B1DEBA8A751415B25168700A75441F950DC2DA7A75141BCBFCD9200A754418952AD4BA4A751416E21804C00A7544130D97632A3A751416E21804C00A75441FC7C2BD1A0A75141751DEA1100A75441F679AFAA9DA75141150D449AFFA654411C367C219CA75141786551D401A7544192644C6199A7514198B8FE1306A754417E271E8793A75141D644364A07A7544129B65BFE90A75141A12E90CA07A75441C3F5284C8DA751415C8FC28508A75441692690FC88A75141A54B1EDE0DA75441D3CC28BD86A75141AC1BAF9A10A7544172ACE65381A75141856CAA7512A75441B601AD687CA751416035FFF00DA754413E3EC22076A751413C83C8FD0EA75441D8A4B40D75A75141ACC6D4300FA7544140AB084C75A751410B94397111A754416D175E8E75A75141849D64CC12A754410442631B7AA75141BD395A2516A754416FC723FD7AA75141B9F168CB16A75441AAE645F77DA75141497C110F18A7544199A5B80480A75141706D55A618A75441E934034482A751415DE4184E19A75441CCCDFBE684A75141BFE4F3041BA754418CD6B27989A75141990B22FE1DA75441402E54588DA75141039C398220A754410000008090A75141F6285C8F22A754413AFD26F493A751415BE0BC251FA754414D7E70669AA75141AE568DC518A7544114AE47419CA751411F85EBF116A75441E138E530A3A751414CA40F4210A7544154A2EB47AAA75141B6F9C16C09A75441CF18671FABA75141480B105D08A75441639F7586ABA75141BF122DD9FEA65441906DD3C8ABA7514118D261CEF6A65441C7CAD8E4ABA75141F76ED8AFF3A654419CBC2F0DACA75141DD536030EFA654412AE44C22ACA751418F4072FBECA654411BE71F8AADA751419EC29B0AE8A6544142CCE7D8AEA7514111EFCC71E3A65441D50B380DAFA75141457CA9EEDEA6544175718001AFA751410924F4C7DCA65441487D42B1AFA75141D5A29139DBA65441C8A04B85B1A75141B704C315DAA6544188540CA3B1A75141201CDD17DBA65441D20F05DBAEA75141AA898012E6A65441FF5B8997ACA7514169D37BFCECA654419147DB2FABA75141DA10865308A754417B14AED7C8A75141333333F310A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287601 - 3204490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000003D0000003D0AD753C1A75141D7A3709DE0A65441713D0A07C0A7514148E17A14E1A654411F85EB61BBA751417B14AEB7D5A65441F6285CCFBAA75141295C8FC2D2A65441CDCCCC9CBBA75141D7A370CDCCA654419A9999E9BAA751410AD7A390C9A65441A4703DCAB9A75141EC51B85EC6A6544114AE4741B8A7514166666696C3A6544100000030B6A7514133333323C1A65441C3F528ACB2A75141AE47E15ABEA654410AD7A3D0AFA751419A999909BDA65441D7A370FDADA75141E17A14AEBCA65441E17A14BE9DA751418FC2F5E8C0A65441D7A3704D94A751410AD7A370C3A65441C3F5280C8AA75141713D0A37C6A65441D7A3704D8EA751419A999959D0A654419A9999E996A7514148E17A34CBA654416666666698A751417B14AE77CCA65441AE47E1CA9BA7514148E17AD4D5A654413D0AD7939DA75141AE47E12AD5A65441B81E855BA1A751419A9999C9D6A65441B81E858BABA75141D7A3705DCFA65441713D0AC7AEA75141F6285CAFD2A6544185EB51A8AEA751417B14AEF7D3A654417B14AE07ADA751415C8FC245D8A654415C8FC285A9A7514114AE47C1D9A65441AC00BC69ABA75141A51BFC69DCA65441EF24DC90ADA75141B671FA71DBA654411F85EBC1ADA751418FC2F5B8DEA654411F85EBC1ADA75141333333B3E3A65441E17A143EABA751410AD7A300EDA654415C8FC225AAA751417B14AE57F7A654413D0AD7E3A8A75141295C8FD2FFA65441CDCCCC0C9EA75141D7A370DDFEA65441713D0A5799A751413D0AD72306A75441C3F5284C8DA751415C8FC28508A75441B81E85CB86A751415C8FC29510A75441C3F5284C81A7514185EB517812A75441000000607CA751418FC2F5E80DA75441D7A3700D75A75141D7A3702D0FA75441B81E852B75A75141D7A370AD10A7544148E17A8475A7514152B81EC512A7544152B81E057BA7514114AE47D116A754413D0AD7F37DA75141E17A140E18A75441E17A143E82A75141A4703D4A19A754410000008090A75141F6285C8F22A7544114AE47419CA751411F85EBF116A75441C3F5288CAAA75141F6285C2F09A75441B81E852BABA751411F85EB5108A754419B874231ABA75141667A985308A7544145626031ABA751417252525108A754419A9999F9ABA75141E17A148E08A754417B14AED7C8A75141333333F310A75441B81E859BCAA75141D7A370CD10A75441A4703D4ACBA75141D7A3700D10A75441A4703DAACAA751419A9999090AA75441A4703D8AC8A75141F6285CAFFFA654413D0AD703C7A7514185EB51C8F7A65441A4703DDAC5A7514114AE47F1F0A65441F66B4C55C3A75141BC1E5AC2E6A654413D0AD753C1A75141D7A3709DE0A654410F000000D0324C83B1A7514106A47C11DAA65441CECDA382B1A751419AB70411DAA65441F8E20C81B1A75141B42C9A16DAA654416026B77EB1A75141075FF114DAA654415622C62FB1A7514111171E34DBA654412A426CD8AEA751412907936DE3A65441B81E85EBAEA75141295C8FE2DEA654419A9999F9ADA751418FC2F5D8DBA654415C8FC255B0A75141F6285CEFD7A65441A4703D6AB1A75141A4703D4AD4A65441D7A370DDAFA75141B81E85ABD2A65441E17A144EB3A75141B81E85CBD1A654418FC2F5B8B4A751418FC2F538D4A6544100000090B2A7514185EB51B8D6A65441D0324C83B1A7514106A47C11DAA65441
+</a>
+
+<b>
+010600000001000000010300000001000000890000007B14AED7C8A75141333333F310A75441B81E859BCAA75141D7A370CD10A75441A4703D4ACBA75141D7A3700D10A75441A4703DAACAA751419A9999090AA75441A4703D8AC8A75141F6285CAFFFA654413D0AD703C7A7514185EB51C8F7A65441A4703DDAC5A7514114AE47F1F0A65441CDCCCC4CC3A75141000000A0E6A654416A9C7295BFA75141CB7B2AE5E3A6544121CB0650C0A75141DD2BA24AE3A65441AE47E1AABFA7514133333393E1A65441B066EE15BDA7514121DF8A86DBA654411E918A3EBBA75141646B0936D7A6544185EB5148BAA7514152B81EF5D4A654419433D020BAA751411220962FD4A65441295C8FE2B9A7514185EB51F8D2A6544110E63880BAA751413AA26FC5D0A65441994A5E1ABBA7514191091B9FCEA65441CDCCCC9CBBA75141D7A370CDCCA654413D9AD2EABAA75141FB794B96C9A65441E90A9ED3B9A7514134376979C6A65441170CC338B8A7514144564E8CC3A654419483552CB6A751419B494C20C1A65441B8502233B4A7514100C16090BFA654417D0374B2B2A751411F9ADC5FBEA65441062CE1C3AFA7514159B050FEBCA65441748570F6ADA75141D70DE7AFBCA654412E0C05CAAAA751418B0A6A83BDA654419586D429A5A7514149445DFABEA65441E4B5B9789EA75141DBBBCCBDC0A65441014C3E6499A7514110487A13C2A6544165D996A495A75141BD4FAC14C3A654419E13759B97A751412CA94958C8A65441B4BF9A229AA75141E918E7F0CEA65441275C596F9CA751412401F671D6A65441FB1D4C489EA7514141EEC7DBD5A654419D0E43369FA75141F62434DED5A65441A07A7911A2A75141E7A9AB33D6A65441C1311328A4A75141E7A9AB33D6A6544134CD878BA5A75141D1A92F22D6A65441053E585BA6A75141F1072878D5A6544117FEC0F9A6A75141A329F3F2D4A65441EE01E10AA8A75141DC608FA1D3A654410DED735DA9A75141A23F7AF5D1A65441C1255B04AAA75141122EE4F7D0A65441E3EA7884AAA751416E914959D0A654418154D2A1ABA751414BA3708FCFA65441423A8452ADA751412D27DFC0D0A65441EED7B6AEAEA7514125FA65B2D1A65441FB124159AFA7514142EAB818D2A6544186BCD2ACB0A75141578E14EBD1A65441BF2DF56CB1A751419D9733CCD1A654419CD9954AB2A75141ED3295A8D1A6544144ADE1A8B2A7514112480FB2D1A654410A15BBFCB2A7514196D74434D3A65441C14F2427B3A75141648A416AD4A6544160EAA3B9B2A75141F39F6297D5A654414FFDC99CB2A75141BA739763D6A6544173F92A41B2A75141EFDBB7C4D7A654418E3616FEB1A751413663C989D8A65441CD692289B1A751412E1EDC9ED9A65441CAA87084B0A7514118E2BF5FD9A65441F550F82FB1A7514143DA7172D7A654419537136DB1A7514107C02E18D6A65441535BAA92B1A7514198A02B43D5A65441B6091EAFB0A751412CEBA310D4A6544103CA09D3AEA75141CB2BDB6FD4A65441892523D6ADA7514198ACA523D6A654417915A1AEACA75141297EE7BCD6A6544168DE9AFCABA7514153DB1760D7A6544196EB0EF3AAA751413DCF8253D8A654418CE6771AAAA751414C27864BD9A65441670817A7ABA75141660C680EDCA654416A49F698ADA751417D5ADB61DBA654411F85EBC1ADA75141B46BCC48E0A654411F85EBC1ADA7514147B137EBE2A6544158C55FBAADA751410F5E1CCFE3A65441CC645554ADA75141B5008A48E5A65441D3710C1CADA7514141EDB918E6A65441138D4158ACA751413BD8ECECE8A654412159DF9DABA75141E27A529EEBA6544169479A3BABA75141228D0818EDA654412B336105ABA75141B7800E18EFA654416FD42BCAAAA751415A5F2847F1A65441C44F318EAAA751415CE5877DF3A65441E59CD667AAA75141EA1AB5E7F4A65441DAB709C9A9A75141C164F4C8F9A65441C53B1DEBA8A751415B25168700A75441F950DC2DA7A75141BCBFCD9200A754418952AD4BA4A751416E21804C00A7544130D97632A3A751416E21804C00A75441FC7C2BD1A0A75141751DEA1100A75441F679AFAA9DA75141150D449AFFA654411C367C219CA75141786551D401A7544192644C6199A7514198B8FE1306A754417E271E8793A75141D644364A07A7544129B65BFE90A75141A12E90CA07A75441C3F5284C8DA751415C8FC28508A75441692690FC88A75141A54B1EDE0DA75441D3CC28BD86A75141AC1BAF9A10A7544172ACE65381A75141856CAA7512A75441B601AD687CA751416035FFF00DA754413E3EC22076A751413C83C8FD0EA75441D8A4B40D75A75141ACC6D4300FA7544140AB084C75A751410B94397111A754416D175E8E75A75141849D64CC12A754410442631B7AA75141BD395A2516A754416FC723FD7AA75141B9F168CB16A75441AAE645F77DA75141497C110F18A7544199A5B80480A75141706D55A618A75441E934034482A751415DE4184E19A75441CCCDFBE684A75141BFE4F3041BA754418CD6B27989A75141990B22FE1DA75441402E54588DA75141039C398220A754410000008090A75141F6285C8F22A754413AFD26F493A751415BE0BC251FA754414D7E70669AA75141AE568DC518A7544114AE47419CA751411F85EBF116A75441E138E530A3A751414CA40F4210A7544154A2EB47AAA75141B6F9C16C09A75441CF18671FABA75141480B105D08A75441639F7586ABA75141BF122DD9FEA65441906DD3C8ABA7514118D261CEF6A65441C7CAD8E4ABA75141F76ED8AFF3A654419CBC2F0DACA75141DD536030EFA654412AE44C22ACA751418F4072FBECA654411BE71F8AADA751419EC29B0AE8A6544142CCE7D8AEA7514111EFCC71E3A65441D50B380DAFA75141457CA9EEDEA6544175718001AFA751410924F4C7DCA65441487D42B1AFA75141D5A29139DBA65441C8A04B85B1A75141B704C315DAA6544188540CA3B1A75141201CDD17DBA65441D20F05DBAEA75141AA898012E6A65441FF5B8997ACA7514169D37BFCECA654419147DB2FABA75141DA10865308A754417B14AED7C8A75141333333F310A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986487 - 59054
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000130000005C8FC2656DAB5041C3F5286C4B025541333333E370AB504114AE47014F02554152B81E2572AB504148E17AE44E02554185EB51A882AB5041B81E857B3602554185EB510884AB5041333333432A025541AE47E14A93AB5041E17A14EE0B02554185EB519882AB504114AE4751FD0155415C8FC2557AAB50415C8FC2F506025541F6285CAF77AB50410AD7A3E0170255410AD7A38078AB50415C8FC2F52602554173C00BCE7CAB504104A2CA6E2A025541E816E5FC7EAB5041152542A92E025541A59578217DAB5041E214D1CD33025541124FC3B37AAB50419AE8F0163B02554195BC778578AB5041AC96A15241025541E4E9C5B376AB5041F6B2EB164302554199189F1A74AB50419A98EB764302554117FA368F71AB504199A9C6CD430255415C8FC2656DAB5041C3F5286C4B025541
+</a>
+
+<b>
+010600000001000000010300000001000000150000005BF97CFA72AB50412AB7569D43025541F700519771AB504171756BCF430255412B08628371AB50412B7D8BF5430255415C8FC2656DAB5041C3F5286C4B025541333333E370AB504114AE47014F02554152B81E2572AB504148E17AE44E02554185EB51A882AB5041B81E857B3602554185EB510884AB5041333333432A025541AE47E14A93AB5041E17A14EE0B02554185EB519882AB504114AE4751FD0155415C8FC2557AAB50415C8FC2F506025541F6285CAF77AB50410AD7A3E0170255410AD7A38078AB50415C8FC2F52602554173C00BCE7CAB504104A2CA6E2A025541E816E5FC7EAB5041152542A92E025541E2E48FA67CAB50412A278B3E35025541124FC3B37AAB50419AE8F0163B02554195BC778578AB5041AC96A15241025541E4E9C5B376AB5041F6B2EB164302554199189F1A74AB50419A98EB76430255415BF97CFA72AB50412AB7569D43025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>720830 - 32827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>720830 - 88372
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660762 - 660763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441BE548EB6E4DA50412B605254E9D75441F93165B0E9DA5041CA3A2A7EEBD75441CEA54ECDF1DA50410FA08B85EED75441A6F11044F9DA50415405ED8CF1D754418F750F7CFDDA5041A01A0048F3D7544124C85C9801DB504197FE61E7F4D754417CD1E60D01DB5041E7EB4DFCF5D75441AE0DAFA4F7DA5041A55EC54EF2D75441340F3CAAEEDA5041B802EEBCEED75441BCE8A109E5DA50412244B4F3EAD75441E17A142EE5DA5041A4703DFAF1D75441E17A144EE5DA5041A4703D9AF8D75441E17A147EE4DA5041A4703DCAFDD75441E17A14CEE3DA5041A4703DDA02D85441E17A148EE1DA5041A4703D9A0DD85441E17A14BEDFDA5041A4703D1A16D854415C8FC2C5DEDA5041EC51B88E19D85441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D854411B112822E6DA5041E7C631E421D85441A76E1CE5E9DA5041070E4B6D1FD8544167E0E9D2EEDA5041275564F61CD85441B0C1829FF3DA5041587B143D1AD85441F9A21B6CF8DA50410032F9A417D85441B914E959FDDA504174D404E213D854417A86B64702DB504170E6DBFD0FD854418E5376E905DB5041F5677EF80BD85441A1A9219907DB504115AF978109D854411AB16AAC09DB5041EC14183E02D854411C287F9E0BDB5041086E08E3FBD75441289F93900DDB50413B94B829F9D75441A12FC8B10DDB5041FB1AA228F2D754415EB36CBB0EDB50415979D9D1E8D754412A16A8820FDB5041E4FA7BCCE4D754414DD4D5FD0EDB50410E212C13E2D7544187DC498AF0DA50410CF56D09DAD754411F85EBB1EADA5041713D0A97D8D75441F6285C8FE5DA50415C8FC265D7D7544161AEC910E5DA5041CAB452ACDDD75441A8A24974EADA50410124EFD9DED754412012F76EEBDA50414AE4BD10DFD75441E17A142EF6DA5041A4703D6AE1D7544173AFDCD5F6DA5041983049A3E1D75441641D9B88FFDA5041E78A3682E4D75441E17A143E06DB5041A4703D9AE6D7544172BB1A7008DB504196374D69E7D75441E17A149E08DB5041A4703D7AE7D75441A88B90F506DB50418E36B9EBEBD75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125010 - 226978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000009A5372CCB1BC5041D7E0DAF7C305554185EB5108B4BC5041C3F5281CC5055541295C8F52B5BC50411F85EB21C7055541F6285CCFB1BC50417B14AEF7CD05554166666606B3BC50417B14AE07D4055541EC51B85EB1BC50411F85EB51D805554166666686B1BC5041000000D0DC055541EC51B82EB6BC50419A9999E9E1055541EC51B84EBABC5041AE47E1FAE4055541EC51B8AEBFBC50410AD7A3E0EE0555413D0AD783CBBC5041F6285CBFFC05554152B81E65D0BC5041B81E85AB05065541A4703D9AD1BC504114AE476105065541AE47E19AE1BC50413333330323065541295C8F22E3BC504152B81E45230655415C8FC2C5EDBC5041F6285CEF19065541B81E85DBEDBC5041CDCCCC6C18065541295C8F72E7BC5041EC51B8DE100655418FC2F5D8E0BC5041D7A3705D09065541B81E858BDCBC5041E17A14FE030655410AD7A3E0D9BC50417B14AE97FF055541F6285C3FD5BC5041713D0AA7F605554133333343D2BC50417B14AE77EF0555419A9999C9D0BC5041CDCCCC4CEA055541666666B6CFBC5041CDCCCC4CE2055541A4703D7ACDBC5041CDCCCC6CDB05554133333333CDBC5041CDCCCCECD2055541BF1F0859CDBC5041285CF2E2D20555410AF3BF3ACDBC50414D1508C2D20555411ADD64C8C9BC50411B8F27EFCC055541DAA35CDBBFBC50419025DABEBC0555416FC0BFD0BFBC5041446763BDBC055541F12982E7BFBC50412BAA59B1BC05554133333313BBBC504152B81EB5B705554166666656B3BC5041A4703DBAB0055541AE47E14AAEBC5041333333E3A70555410C5728D7ABBC5041C64B5823990555411F85EBD1ABBC50413D0AD703990555413D0AD743ABBC5041A4703D9A96055541000000F0ABBC5041713D0A27870555411F85EBE1ABBC5041EC51B86E82055541CDCCCC0CAABC5041CDCCCC0C7C055541F6285C2FA2BC5041AE47E19A75055541666666569CBC5041C3F528FC75055541295C8F329BBC5041C3F5280C76055541B81E855B9BBC50417B14AE377B0555411F85EBC198BC504114AE47D17C0555419A99998994BC5041295C8F327D055541713D0A9796BC50410AD7A3C07F055541E17A14BE97BC5041000000E0830555415C8FC22597BC50410AD7A3E085055541295C8F5295BC5041295C8F5287055541AE47E1AA94BC5041A4703D6A8A055541E17A148E93BC504152B81E158E055541F6285C4F94BC5041B81E857B910555411F85EBB194BC5041AE47E19A980555410AD7A35096BC50415C8FC2359C0555417B14AE079ABC50411F85EBD1A70555418FC2F5C89BBC5041AE47E11AAB055541FD5A0D3C9CBC5041D58D1EF8AB05554148E17A449CBC504185EB5108AC055541AE47E13A9FBC5041C3F528DCB205554148E17A44A1BC5041D7A3700DB505554133333333A5BC50411F85EB81C2055541C3F5288CA7BC5041A4703D2AC70555411F85EBB1ADBC5041EC51B84EC50555419A9999C9B1BC5041666666F6C30555419A5372CCB1BC5041D7E0DAF7C3055541
+</a>
+
+<b>
+01060000000100000001030000000100000032000000D460BD709CBC504189E02C3FAC055541F20AE2C39CBC5041326951DAAC05554136202339A1BC50415311DD2BB5055541918FC678A2BC50417A6CEE5FB7055541918FC678A2BC50416BC71E9BB70555417EAB3D98A2BC5041C315E603BA0555418CBC8DC2A3BC504184020160BE055541B93933A4A5BC5041BA6E9D47C305554194C16EEDA6BC5041192452EFC50555415A97CDFBA6BC5041360BD50BC6055541683B4805A7BC50410A16B0EFC5055541384FD9A8A7BC5041AA3DD236C7055541A50905D5AABC5041D65EAB54C60555419C62DD99B1BC50414DD9C830C405554185EB5108B4BC5041C3F5281CC50555417A9A5B7BC6BC504155AD021FC00555411FF25A37C5BC5041908950C4BD0555410CB197EDBFBC50412A1AAD84BC0555419BD37FE1BDBC50419B470423BA055541D4A761CEB7BC5041F4759C96B3055541265F5EACB2BC5041D80140F9AF05554119A37F65B0BC504170C996FDAD055541E352539EADBC504136E1E455A70555414427226AAABC504136FDD8A9990555417F0CE607A5BC504178F9D0519F055541928325A99CBC50413A47B630AA0555412A4B7CAD9ABC5041CF522EEEA5055541B53CA68099BC5041B204442FA20555413E9BAE8298BC504157B7157A9E0555416885BC2598BC5041C471A2B69C055541F0F410FF97BC504196D8CEFA9B0555415CF6631897BC50419D4435CE840555412F3D121397BC5041056E5655840555410C7A27C496BC50416EF267C484055541B58462FD94BC504188D34DFF87055541CDB8619494BC5041108A54748B055541CE2C7A7894BC5041658BA5DA8B055541C86DCB3093BC504179419AB9900555411B980FFA93BC504163BC79159605554127118A9894BC5041DAA915BC9705554156C492F794BC5041583282B9980555417503162195BC50410E0F0F24990555413BDFCF3B96BC5041C81634D59B055541F536E77E96BC5041057DEEA59C055541624708E596BC504117B0AAE39D0555415571DBB397BC50415A73F4C0A005554155B8B3DA97BC5041649D9D56A10555413FCC124399BC5041A9BA8841A6055541C7E0CFFB99BC5041E33BDC62A8055541D460BD709CBC504189E02C3FAC055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125010 - 354589
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000009A5372CCB1BC5041D7E0DAF7C305554185EB5108B4BC5041C3F5281CC5055541295C8F52B5BC50411F85EB21C7055541F6285CCFB1BC50417B14AEF7CD05554166666606B3BC50417B14AE07D4055541EC51B85EB1BC50411F85EB51D805554166666686B1BC5041000000D0DC055541EC51B82EB6BC50419A9999E9E1055541EC51B84EBABC5041AE47E1FAE4055541EC51B8AEBFBC50410AD7A3E0EE0555413D0AD783CBBC5041F6285CBFFC05554152B81E65D0BC5041B81E85AB05065541A4703D9AD1BC504114AE476105065541AE47E19AE1BC50413333330323065541295C8F22E3BC504152B81E45230655415C8FC2C5EDBC5041F6285CEF19065541B81E85DBEDBC5041CDCCCC6C18065541295C8F72E7BC5041EC51B8DE100655418FC2F5D8E0BC5041D7A3705D09065541B81E858BDCBC5041E17A14FE030655410AD7A3E0D9BC50417B14AE97FF055541F6285C3FD5BC5041713D0AA7F605554133333343D2BC50417B14AE77EF0555419A9999C9D0BC5041CDCCCC4CEA055541666666B6CFBC5041CDCCCC4CE2055541A4703D7ACDBC5041CDCCCC6CDB05554133333333CDBC5041CDCCCCECD2055541BF1F0859CDBC5041285CF2E2D20555410AF3BF3ACDBC50414D1508C2D20555411ADD64C8C9BC50411B8F27EFCC055541DAA35CDBBFBC50419025DABEBC0555416FC0BFD0BFBC5041446763BDBC055541F12982E7BFBC50412BAA59B1BC05554133333313BBBC504152B81EB5B705554166666656B3BC5041A4703DBAB0055541AE47E14AAEBC5041333333E3A70555410C5728D7ABBC5041C64B5823990555411F85EBD1ABBC50413D0AD703990555413D0AD743ABBC5041A4703D9A96055541000000F0ABBC5041713D0A27870555411F85EBE1ABBC5041EC51B86E82055541CDCCCC0CAABC5041CDCCCC0C7C055541F6285C2FA2BC5041AE47E19A75055541666666569CBC5041C3F528FC75055541295C8F329BBC5041C3F5280C76055541B81E855B9BBC50417B14AE377B0555411F85EBC198BC504114AE47D17C0555419A99998994BC5041295C8F327D055541713D0A9796BC50410AD7A3C07F055541E17A14BE97BC5041000000E0830555415C8FC22597BC50410AD7A3E085055541295C8F5295BC5041295C8F5287055541AE47E1AA94BC5041A4703D6A8A055541E17A148E93BC504152B81E158E055541F6285C4F94BC5041B81E857B910555411F85EBB194BC5041AE47E19A980555410AD7A35096BC50415C8FC2359C0555417B14AE079ABC50411F85EBD1A70555418FC2F5C89BBC5041AE47E11AAB055541FD5A0D3C9CBC5041D58D1EF8AB05554148E17A449CBC504185EB5108AC055541AE47E13A9FBC5041C3F528DCB205554148E17A44A1BC5041D7A3700DB505554133333333A5BC50411F85EB81C2055541C3F5288CA7BC5041A4703D2AC70555411F85EBB1ADBC5041EC51B84EC50555419A9999C9B1BC5041666666F6C30555419A5372CCB1BC5041D7E0DAF7C3055541
+</a>
+
+<b>
+01060000000100000001030000000100000032000000D460BD709CBC504189E02C3FAC055541F20AE2C39CBC5041326951DAAC05554136202339A1BC50415311DD2BB5055541918FC678A2BC50417A6CEE5FB7055541918FC678A2BC50416BC71E9BB70555417EAB3D98A2BC5041C315E603BA0555418CBC8DC2A3BC504184020160BE055541B93933A4A5BC5041BA6E9D47C305554194C16EEDA6BC5041192452EFC50555415A97CDFBA6BC5041360BD50BC6055541683B4805A7BC50410A16B0EFC5055541384FD9A8A7BC5041AA3DD236C7055541A50905D5AABC5041D65EAB54C60555419C62DD99B1BC50414DD9C830C405554185EB5108B4BC5041C3F5281CC50555417A9A5B7BC6BC504155AD021FC00555411FF25A37C5BC5041908950C4BD0555410CB197EDBFBC50412A1AAD84BC0555419BD37FE1BDBC50419B470423BA055541D4A761CEB7BC5041F4759C96B3055541265F5EACB2BC5041D80140F9AF05554119A37F65B0BC504170C996FDAD055541E352539EADBC504136E1E455A70555414427226AAABC504136FDD8A9990555417F0CE607A5BC504178F9D0519F055541928325A99CBC50413A47B630AA0555412A4B7CAD9ABC5041CF522EEEA5055541B53CA68099BC5041B204442FA20555413E9BAE8298BC504157B7157A9E0555416885BC2598BC5041C471A2B69C055541F0F410FF97BC504196D8CEFA9B0555415CF6631897BC50419D4435CE840555412F3D121397BC5041056E5655840555410C7A27C496BC50416EF267C484055541B58462FD94BC504188D34DFF87055541CDB8619494BC5041108A54748B055541CE2C7A7894BC5041658BA5DA8B055541C86DCB3093BC504179419AB9900555411B980FFA93BC504163BC79159605554127118A9894BC5041DAA915BC9705554156C492F794BC5041583282B9980555417503162195BC50410E0F0F24990555413BDFCF3B96BC5041C81634D59B055541F536E77E96BC5041057DEEA59C055541624708E596BC504117B0AAE39D0555415571DBB397BC50415A73F4C0A005554155B8B3DA97BC5041649D9D56A10555413FCC124399BC5041A9BA8841A6055541C7E0CFFB99BC5041E33BDC62A8055541D460BD709CBC504189E02C3FAC055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628819 - 628857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000A70000008379EDE435095141A6ED2FCCF50555418017B6093609514147B98C6CF5055541B101980D3609514138D9DB45F5055541AFA7C21536095141C5F8BB0EF5055541EECC3C143609514122383CEEF40555412EA4E21B36095141547271CFF4055541ABF31726360951415B2DDCB2F4055541C9374A293609514147D77F8FF40555413802D8793609514181239E08F2055541E887CC9D360951413544DD42F10555412314349A36095141871BAF92F0055541D2B86A8F36095141883AF163F0055541835DA18436095141ECC1E2F0EF055541BEE9088136095141EF1EA964EF055541C0E90881360951411B3975C6EE0555419B89C90636095141AB37F928ED055541D63473D4350951414B6A9483EC055541004F3F36350951411479779DEB055541DD6A080134095141793EEDCCEA05554152CD1FA73209514196A44DFEE90555418FC2F50832095141B81E858BE90555417B14AE672F095141F6285C5FF4055541EC51B87E2E0951418FC2F5E8F9055541AE47E1DA2D09514152B81EF5FE055541D7A370BD2D095141CDCCCCCC00065541862A2CDB2D095141A89D7EA90406554143830CFD2C09514162A351720A0655410137340F27095141D75C4C4D0A06554185EB5178200951415C8FC2050B065541EC51B8BE20095141713D0AC70C065541295C8F0221095141C3F528EC0F06554114AE47F120095141295C8F821306554114AE479120095141C3F528DC1A065541FFECC2EF1C095141460DABEE1A06554132FF9DEC1B09514188B4CACC1B06554106E588581B095141B4CEDF601C065541C53D697A1A09514181BC04641D065541D700E19B160951414ED7EE79220655417B14AE57150951413D0AD7232606554114AE470115095141F6285C1F290655419CD5A782140951417906C9272E06554185EB51F816095141333333B32E065541C8ADCF0E1A0951419E2FAC432F0655413C48F48F1C095141EC9EA3922F065541511EEF6D1F09514118AA68FB2F065541DDF3341F23095141ADFCB02F30065541E8D266B926095141A1B7DD6C3006554179F22155280951418CE56B8130065541407B3F2029095141F6BA7FAE300655417D7A2CC12A095141F006070B3106554183DAB3052C095141B4DD0C53310655411ACE61022E0951414ECBEE8031065541CCA40B0A2E0951414A85BD56310655411FC887782E0951416BDA71F62E065541BC75AC6F2E095141594797AF2E0655414ED45A712E095141F00F81A52E065541092411762E095141BE205E972E065541A6FA617F2E095141A05012742E065541AA11F59B2E095141A9D774FE2D06554160342FBD2E0951419C6507752D065541513418122F09514174FF67102C0655411D6507222F0951418540BA652B0655412D8A85322F0951413E4511B52A0655417A78A9672F095141814214BD29065541A06F3B822F0951414C8984E82806554129B9A8A52F09514118D0F41328065541C395F00F30095141E7E741CC26065541EBD4E91330095141BF181EAF26065541EA8C822A3009514177D36809260655414D67C543300951413F9A385D25065541A2CDA9A930095141FB00BE70230655412F6797ED300951415234F5A42206554193CD92FE300951411ACE3E95210655415D9A89203109514148CE83962006554188CD7B5331095141AD01D2751F0655411532345831095141094B2D3D1F0655414D9A7275310951415A6840DE1D0655413E9A5BCA31095141A468B3351C0655412F9A441F32095141D068F8361B065541F6663B41320951415CCF38491A0655418846494D3209514164AF4BB219065541B280A04F320951415BF9FC9419065541D877326A32095141629BB6AE180655419D1CE97B32095141DD22261818065541C3137B9632095141F557BA781706554188B831A832095141D23105EB160655414C5DE8B932095141115E2B661606554173547AD4320951418CE59ACF15065541139218E332095141A1E0137815065541D8660DEB32095141D769963E15065541FB9DE7F7320951416D90C2CE14065541DE89330D33095141E2E0927914065541E739302433095141C120A01D14065541498C0B2D330951413CA80F87130655413428545933095141B72F7FF0120655413428545933095141A59CA4A912065541342854593309514196C4A47F120655413428545933095141F65BA56B120655415B1FE67333095141AD3E5EC3110655415B1FE673330951412D08C7C0110655415B1FE67333095141D706CD6A110655419033ED6133095141C19DB321110655419033ED61330951419B6AC1EE100655418F8DB46133095141DC559AE310065541493FBE6033095141AA11E8D71006554160343051330951416A63033E0F06554156D7ED5333095141F8F2FD130F0655416034305133095141E8C3C7F20E065541A0C79F5433095141572DA9540E0655411116EA0F330951416740D0EA0D065541FA7FD673330951418CFC885E0D065541FA7FD67333095141D2AFC42A0D0655416245D57933095141FBB0D9CE0C065541B2E9F97E330951416E3896530C06554194CB7C963309514165CC960F0C065541C0B140AD33095141B8BF6DEB0B0655412DDE15BC33095141194FDED30B06554127A3F45933095141B7D77B9A0B065541A60919C6330951417F8F6E800B065541D3A5C2C23309514141A90E5F0B06554100426CBF33095141D62605410B065541786D6FC933095141C03B92E30A065541D2A5C2C233095141825532C20A065541C87604C93309514175305CBC0A065541C4C4AEDE33095141FC80107E0A06554105B504E7330951411DF78B3F0A0655413BFDF6ED330951417C9C05E809065541659D85F33309514171334AC5090655418595B0F733095141F0D0EE71090655418595B0F7330951415ADF233D0906554108CDC3FA330951410B6CE9F808065541D186441E34095141FEDC63D20706554129090E2434095141CD39957B070655413300B62D340951419D9F7CD906065541DA0DA12F340951414F5EE29906065541828BD72934095141284270540606554129090E24340951413C13B2E005065541828BD72934095141A966BD7205065541F88E50283409514199968DFA0406554115685723340951415B8209CF04065541CDEEC12234095141249DEDC9040655410337B4293409514123DC95A8040655418EBFC33B340951410D0A1F63040655419967273D34095141B708AA3604065541EEA7444834095141176F7B0004065541EEA744483409514186D8D5E703065541EEA7444834095141618585C703065541EEA7444834095141EACA8D75030655417209494F34095141F6A737AD020655415633A86034095141F706E89B010655411D009F8234095141F9D33A6A00065541866422A034095141DE6460A7FF055541B1998CC6340951412BD49616FF055541AB998CC634095141D16D9B05FF055541674254CA340951412522B5F2FE05554139337A0A350951410C6EF7B1FD05554173666C3D3509514177A173E7FB055541ECC1823635095141AD8F699BFB0555410F00712C35095141313BA62CFB0555415A7F8F3F3509514130B2C60AFB0555419A6FE54735095141EF7E699EFA055541C9371670350951410D96A73AF9055541054BA9A735095141284EFAD6F7055541802107C035095141DBDBC188F60555417406A0CE350951412C999322F60555415B8C14D535095141DAEF63F5F50555418379EDE435095141A6ED2FCCF5055541
+</a>
+
+<b>
+01060000000100000001030000000200000098000000EC51B82E47095141295C8F6217065541D7A3709D4C09514114AE47410F065541D7A3701D51095141A4703D0A0A0655411F85EBF154095141AE47E11A060655418FC2F57854095141713D0A570106554185EB519854095141E17A140E0006554152B81EE5540951413D0AD7D3FE0555419A9999795509514148E17A34FD0555417B14AE0756095141333333B3FB0555419A9999B95609514152B81E55FA0555411F85EB71570951418FC2F508F9055541EC51B85E580951419A999999F7055541F6285C6F59095141F6285C5FF6055541CDCCCC5C5A095141E17A147EF50555410AD7A3C05B095141F6285C4FF405554185EB51185D095141295C8F62F30555417B14AEC75E09514100000040F2055541EC51B86E45095141E17A142EE8055541D7A3707D42095141D7A370ADEF05554174F3513F360951411D6696DEF3055541793F17293609514185B6B391F4055541ABF31726360951415B2DDCB2F40555418C8E57223609514180485DBDF40555414E1AA8153609514117336F0FF5055541B101980D3609514138D9DB45F50555418017B6093609514147B98C6CF50555418479EDE435095141A1ED2FCCF50555417406A0CE350951412C999322F6055541A8A436BC35095141D0B713BDF6055541054BA9A735095141284EFAD6F7055541880EB570350951417B04AF36F9055541A209676D35095141B8586A52F9055541ECC1823635095141AD8F699BFB05554173666C3D3509514177A173E7FB05554139337A0A350951410C6EF7B1FD055541674254CA340951412522B5F2FE055541AD998CC6340951414FABDF0AFF055541B1998CC6340951412BD49616FF05554153BD15C23409514169526A27FF055541A4AECE62340951413DB18D8801065541EEA744483409514186D8D5E703065541EEA7444834095141176F7B00040655419967273D34095141B708AA36040655418EBFC33B340951410D0A1F63040655410337B4293409514123DC95A804065541F29BC128340951410F5E22AD0406554115685723340951415C8209CF04065541F88E50283409514199968DFA04065541828BD72934095141A966BD720506554129090E24340951413C13B2E005065541828BD729340951412842705406065541DA0DA12F340951414F5EE299060655413300B62D340951419D9F7CD90606554129090E2434095141CD39957B07065541D186441E34095141FEDC63D20706554108CDC3FA330951410B6CE9F8080655418595B0F7330951415ADF233D090655418595B0F733095141F0D0EE7109065541659D85F33309514171334AC5090655413BFDF6ED330951417C9C05E80906554105B504E7330951411DF78B3F0A065541C4C4AEDE33095141FC80107E0A065541F19872D33309514190FE2BAE0A065541DAFDC5D233095141121FFBAE0A065541CD2215C533095141028B47760B065541A60919C6330951417F8F6E800B065541D3A5C2C233095141BD75CEA10B065541D2F661C133095141419623AC0B0655412DDE15BC33095141194FDED30B065541C0B140AD33095141B8BF6DEB0B065541CB6E3A7F33095141BAD2217C0C065541FA7FD67333095141D2AFC42A0D065541FA7FD673330951418CFC885E0D065541C8EEFB6E3309514120A22F750D06554160343051330951416A63033E0F065541493FBE6033095141AA11E8D710065541CD45456933095141E276923F110655415B1FE67333095141D706CD6A110655415B1FE673330951412D08C7C011065541A4B01476330951417DE48FC011065541342854593309514196C4A47F120655413428545933095141A59CA4A9120655413428545933095141B72F7FF012065541E4628F363309514194CEB5661306554191F50F2A330951417AAAC4B913065541E739302433095141C120A01D14065541DE89330D33095141E2E0927914065541284060E432095141DEEAEA7B150655412069BCB332095141AF8E5B9916065541934C16A2320951417591E01B17065541C3137B9632095141F557BA78170655413A8C7391320951412D85E79617065541B12BB27C320951411FCC6530180655418846494D3209514164AF4BB219065541F6663B41320951415CCF38491A0655412F9A441F32095141D068F8361B065541D206A11A32095141E822E3441B0655419B34FB18320951412081FB511B065541AA540ECC31095141CAEAEA3B1C065541FBB396B531095141714DC7A01C0655417C21DB78310951410ECC65D01D0655411DBB7472310951414AD63C141E065541794A376831095141695B28861E065541B591A85C31095141C29BC0191F0655411532345831095141094B2D3D1F06554188CD7B5331095141AD01D2751F065541CEF01F4B3109514178E42FA51F0655419FA6C62A31095141FDF4C15F2006554124E323203109514171AC7E9920065541EF5EE50F31095141F58B531321065541EC5EE50F3109514136FF98432106554110E4D001310951419E65FF8921065541D3D9F9FD3009514138FF98C321065541248591F0300951410B555375220655412F6797ED300951415234F5A422065541D66498DE300951415F3BF2D122065541C8A917AE30095141D843E56D23065541CD7C5D8530095141327CB92224065541D24FA35C300951414C9981F6240655415ABF16493009514188475D5325065541EC3A2B3730095141105641BD25065541EBD4E91330095141BF181EAF26065541C395F00F30095141E7E741CC260655410B6E0C0B30095141B5B756DB2606554198F35CAC2F095141ED1B49FF270655416F0B2EA62F09514191BC041828065541159F84972F095141B7529E7128065541930257822F09514135829B0229065541065A886B2F0951418FBA6FB7290655415181354E2F0951410CEA6C482A065541AFC024342F09514148D1A3CF2A0655411D6507222F0951418540BA652B065541513418122F09514174FF67102C06554160342FBD2E0951419C6507752D065541F37BBBA02E09514163ECB4EA2D065541AA11F59B2E095141A9D774FE2D065541A6FA617F2E095141A05012742E0655412958CC782E0951415D842C8F2E065541092411762E095141BE205E972E0655414ED45A712E095141F00F81A52E065541BC75AC6F2E095141594797AF2E0655411FC887782E0951416BDA71F62E065541CCA40B0A2E0951414A85BD5631065541EE2683FD2D09514172CF70A23106554166666636310951417B14AE4732065541D7A3709D35095141EC51B8BE32065541713D0A4739095141295C8F1233065541EC51B89E3B095141295C8F4233065541666666763D095141EC51B8FE2B06554114AE47814209514133333383230655415C8FC2B54909514185EB510818065541EC51B82E47095141295C8F6217065541040000000AAFAAD33309514198DC52B711065541D7A370FD33095141333333B3110655412CFF9D0F3409514198DC52B7110655410AAFAAD33309514198DC52B711065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541002 - 540538
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441666666C651655141E17A14EE124B5441713D0AD74F6551417B14AE67164B54418FC2F5A84D65514185EB51D81B4B54415C8FC2A54B6551419A999979204B54410AD7A330496551419A999969254B5441A4703D6A44655141A4703D5A2C4B5441666666563D6551418FC2F548344B54410AD7A3902B655141713D0A27464B544148E17AF4276551413D0AD7E3494B54416666662625655141295C8FA24D4B5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B544162499E5A986551418AB7768E554B54418D05A3B7766551414D9E64AF314B54413FC7DD33756551417A736612304B54412CC7BCFE6C655141CEEA0E95364B5441639C1D435E6551415AFB5B46424B5441C3F5281C45655141C3F5283C564B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100654 - 235141
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000004000000A20000007B14AEE758885041C3F528BC01235441F6285CAF578850413D0AD78300235441B81E85BB56885041333333F3FF225441CDCCCCFC558850411F85EB110023544133333383558850413333339300235441E17A143E55885041AE47E13A012354418FC2F508558850415C8FC24502235441C3F528CC548850418FC2F5480323544148E17A8453885041333333530423544114AE474151885041D7A3706D05235441E17A146E4F885041CDCCCCCC05235441713D0AB74D885041A4703D4A05235441666666364C8850413D0AD7030323544152B81E854A885041A4703DDA012354417B14AEC748885041295C8F02022354411F85EB413F885041295C8FE208235441A4703D1A3E8850419A9999C907235441C3F5283C3E885041C3F5283C0623544114AE47C1458850419A9999B900235441333333D348885041CDCCCC2CFE225441000000604A885041713D0AF7FC225441D7A3700D4B885041F6285CFFFB22544114AE47C14A885041000000E0FA22544185EB51B84A8850415C8FC225FA225441000000904B8850417B14AEB7F922544185EB51684C88504133333313F8225441C3F5288C4C885041F6285C0FF6225441000000504C885041B81E85CBF42254419A9999794B885041666666C6F3225441000000304A8850417B14AE77F222544114AE47F1488850418FC2F548F1225441C3F528CC47885041EC51B81EF0225441F6285C1F468850411F85EB81EF2254410000000044885041E17A142EEF225441A4703D0A42885041F6285CEFEE225441295C8F524088504148E17AE4ED225441A4703DDA3E885041EC51B8FEED225441C3F5286C3D88504185EB5148EE22544148E17AD43C88504185EB5138EF22544185EB51083A8850410AD7A3A0EE225441000000B03A885041B81E859BEB22544185EB51D8398850417B14AE07E922544185EB51F837885041F6285CCFE722544185EB51D8368850417B14AE87E722544148E17A9435885041F6285CCFE72254410AD7A380348850417B14AEA7E8225441C3F5283C33885041F6285C2FE8225441AE47E13A328850411F85EB11E6225441E17A149E31885041D7A370EDE4225441F6285C4F3088504100000060E42254410AD7A3202E8850417B14AEE7E42254417B14AE972B8850418FC2F5B8E52254410AD7A3902A8850413D0AD723E522544185EB51182A885041B81E851BE4225441C3F5283C2A885041B81E85FBE22254410AD7A3D0298850413D0AD7F3E1225441713D0A17298850413D0AD733E1225441C3F528FC278850417B14AE97E0225441000000F02188504114AE4791DD225441713D0A771F88504148E17A24DC22544185EB51481D8850419A999909DB2254418FC2F5981B88504148E17AB4DB225441A4703D1A1B8850417B14AEF7DB2254419A9999891B88504133333333DC225441CDCCCC3C1C885041B81E859BDC225441D7A3709D1C88504148E17A64DD225441000000501C885041C3F5285CDE225441713D0A071A8850418FC2F508E022544114AE478117885041713D0A37E2225441333333D3158850415C8FC2D5E32254413D0AD7C314885041C3F5288CE5225441CDCCCC8C13885041B81E854BE62254415C8FC29512885041B81E85CBE522544185EB5108138850415C8FC255E4225441AE47E1EA1588504185EB5108E1225441EC51B86E1888504100000040DF22544185EB513819885041713D0A77DE225441713D0A27198850418FC2F558DD2254419A9999891888504114AE4761DB2254415C8FC285178850413D0AD763DB225441AE47E13A17885041295C8FA2DC22544114AE47F1138850419A999959DE225441713D0AC711885041B81E851BE02254413D0AD7330F8850419A999999E2225441713D0AC70D88504114AE4731E42254419A9999F90C885041295C8F02E42254410AD7A3500C88504100000070E3225441D7A3701D0C8850419A999959E22254417B14AE970C885041B81E854BE1225441000000F00C885041E17A148EE022544152B81EC50D885041F6285CEFDE2254411F85EBA10F885041F6285CDFDB225441295C8FB20D885041A4703DEADB2254413D0AD7030C885041E17A148EDB225441713D0A370A885041D7A370CDDA22544114AE476101885041A4703D0AE42254415C8FC255008850411F85EB21E52254419A99994901885041C3F528FCE5225441D7A3704D02885041A4703D7AE4225441713D0AC703885041F6285C1FE3225441D7A3709D05885041EC51B8EEE12254417B14AEF706885041D7A3706DE1225441C3F528CC07885041713D0A87E1225441CDCCCC5C088850410AD7A350E22254411F85EB61088850410AD7A300E3225441295C8F42088850415C8FC2B5E322544114AE47C107885041F6285C1FE5225441D7A370ED06885041333333A3E6225441A4703D0A06885041C3F5288CE722544152B81EA50488504100000060E822544148E17AB4038850419A9999D9E8225441713D0A370488504100000080EA2254415C8FC2C50688504148E17A64E82254410AD7A3A008885041D7A370DDE6225441EC51B86E0A885041F6285C0FE5225441D7A3703D0F885041295C8FE2E6225441E17A141E158850411F85EBB1F12254418FC2F5C81F885041295C8F72052354418FC2F518248850413D0AD7930D235441B81E851B258850418FC2F5F80C23544152B81E252A885041333333831823544185EB51482E885041D7A3708D2423544114AE47F1308850416666668625235441AE47E16A3188504185EB51B824235441AE47E11A328850415C8FC21523235441C3F5281C34885041F6285CDF222354415C8FC265358850418FC2F51822235441000000C036885041333333B32123544185EB518838885041713D0A972223544142CC819D3A885041C95EDB792323544185EB51B83B885041F6285C3F23235441B81E859B3D885041B81E855B21235441666666263F885041000000E01F23544185EB51B84088504185EB51B81E2354416666662643885041F6285C9F1D23544185EB517846885041B81E852B1C2354410F2FF29748885041326D4DB91A235441AC9222C74A8850418CE2CA8E1723544134DE0C8D4B885041B140B0E615235441EC51B84E4C885041CDCCCC1C14235441C3F528CC4C885041713D0AC712235441671F88AC4D8850418AA2843E122354410AD7A3404D8850417B14AE5710235441B81E85FB4C885041A4703D1A0F2354415C8FC2D5508850415C8FC2D50E23544148E17A245788504114AE47B10E23544152B81EC5558850417B14AEB712235441EC51B8AE5288504152B81E3516235441D7A3707D56885041666666561B235441CDCCCC7C58885041AE47E16A1A235441EC51B83E5A885041D7A3708D19235441333333C35B885041000000C018235441E17A148E5B88504114AE47C1162354417B14AE275A885041EC51B82E13235441295C8F5259885041713D0A4711235441C3F5288C588850419A9999C90F2354410AD7A33058885041D7A3703D0E235441A4703D2A578850415C8FC2150D235441713D0A6759885041D7A3703D09235441E17A144E5A885041A4703D4A06235441A4703DFA59885041AE47E1BA032354417B14AEE758885041C3F528BC01235441110000009A99997942885041D7A370DD0E235441D7A3703D438850419A99993910235441EC51B8EE42885041B81E854B112354416666663642885041F6285C6F122354415C8FC20541885041295C8FE21223544114AE47513F885041D7A3702D13235441295C8F323E885041AE47E18A12235441D7A3708D3C88504185EB51981023544152B81E853B88504114AE47610F235441D7A370BD3A885041666666B60E23544185EB51583A885041E17A145E0D23544152B81E353B885041666666760C235441B81E859B3D885041C3F5289C0C235441713D0A173F8850411F85EBC10C235441333333F33F885041333333D30D23544114AE47814188504114AE47610E2354419A99997942885041D7A370DD0E23544115000000AE47E10A2A885041295C8FA2F82254415C8FC2052A8850419A9999D9F7225441D7A3702D2A8850413D0AD743F72254417B14AEB72A885041AE47E17AF6225441000000102C885041295C8F02F62254417B14AE572D8850415C8FC235F622544114AE47712E88504185EB5108F62254411F85EBF12F88504148E17A44F52254418FC2F5E8308850419A9999A9F4225441D7A370BD3188504100000070F422544152B81E2532885041B81E850BF52254411F85EB4132885041000000E0F522544148E17AD431885041EC51B8AEF622544148E17AF43088504133333383F722544152B81ED52F88504166666646F8225441CDCCCCCC2E885041D7A370EDF8225441295C8FA22D885041E17A148EF9225441333333832C885041EC51B8DEF92254413D0AD7632B8850419A9999E9F92254419A9999892A8850415C8FC265F9225441AE47E10A2A885041295C8FA2F8225441130000007B14AE4720885041713D0A47F52254410AD7A370238850413D0AD753F3225441CDCCCCCC25885041B81E858BF12254419A9999C92888504185EB51A8EF225441D7A370AD29885041B81E854BEE22544152B81E252B885041E17A143EEE225441333333932B8850411F85EB91EF2254413D0AD7D32A885041D7A3703DF0225441A4703DFA2888504152B81E25F12254416666661627885041666666D6F22254418FC2F52825885041295C8F32F5225441AE47E10A258850413D0AD7E3F62254415C8FC255248850419A9999A9F82254410AD7A3E022885041295C8F82FA22544148E17A94218850418FC2F578FA225441EC51B8DE20885041333333C3F9225441295C8F921F885041AE47E18AF822544114AE47F11E885041EC51B82EF62254417B14AE4720885041713D0A47F5225441
+</a>
+
+<b>
+010600000001000000010300000001000000C30000009F4C3E2A578850413E87C3150D235441713D0A6759885041D7A3703D092354419A9999E95988504149333353072354419A9999E9598850415AC2F5B804235441E45BD2A4598850417C2F582303235441F3E1FE945988504179B3440703235441ED9894525988504173FA543E01235441DB00DC09598850416FCF7691FF225441F6285CAF578850413D0AD783002354410B43809D57885041B6193F7900235441A94BE72551885041F7E733B104235441E7ED3EC950885041CD7BF9EE042354417234896550885041C06DAF2E052354410BB7592F4E88504177F102A0062354418ADF54294F8850415786C1BC052354412B949C1A4F8850412B1B52B905235441777C1CBA4F8850412B2FBE320523544114CC38A74D885041218B800605235441CC1CBB804D885041355EBA0305235441AB3AAF4E4D88504102BF1FFF04235441CB50AB454D88504174BD729704235441B37578424D8850411C8195910423544172A2B6DB4C8850410CC25B5000235441E2B98F724B8850418FAC236C002354412F1307334A88504174BA498E00235441447EE6AD4888504169FE96C501235441FADE15B5478850412F9DB775022354418AA199D94588504138DB52E10323544192743260458850411B30C24304235441311E990D448850416D03174105235441AA4565DC3F8850418630C675082354410D30D6D23D885041EA1A376C06235441EA87F6984488504138AA53AE01235441291927CD45885041459ABCD10023544138AFE72148885041B70EDE34FF225441B3CD4F0E4A8850412DC62EDCFD2254416D24275D4A885041249707A4FD22544172E14E664A885041224F829DFD2254413BC54E354B8850414EE2130AFD2254413C95429B4B88504114CF76C1FC22544156E5B4BE4B8850411FCF37A8FC2254419999B4124C885041A238646CFC2254415C2A7DAF4B885041AFFFF7E3FB2254415FC8B4744B8850413FC8539CFB2254415E260ED94A88504178612BD7FA225441017E9DD24A885041B37244B4FA225441D28280744A8850415399DC32FA225441B9DE97E14B8850411A6EBE1FF6225441C5E7CA754A885041BC3E5010F222544100943B25498850413D75557FF1225441C82E881A4988504164326674F1225441CACC9A5C45885041BD44E9CEEF225441F55E866A3D8850415DD1F995EE22544118132A4C3C885041A8EA6DF5EE2254411D17FCFD3B88504151EDBA10EF2254415C82C1FB3B8850413C703B10EF225441DF04B8BF39885041BD44E9CEEF2254415E821F3E328850417CB8FCC3F52254411F85EB4132885041000000E0F522544148E17AD431885041EC51B8AEF622544148E17AF43088504133333383F722544152B81ED52F88504166666646F8225441CDCCCCCC2E885041D7A370EDF8225441295C8FA22D885041E17A148EF922544130836B602D885041C6F4A3A0F922544188C9E5E92C885041C1B0B4FEF92254412D608FB22C88504176FD6DD1F9225441333333832C885041EC51B8DEF92254413D0AD7632B8850419A9999E9F92254419A9999892A8850415C8FC265F9225441AE47E10A2A885041295C8FA2F82254415C8FC2052A8850419A9999D9F7225441D7A3702D2A8850413D0AD743F72254417B14AEB72A885041AE47E17AF6225441000000102C885041295C8F02F6225441CE449DFF2C885041E9EEFF27F6225441E27B397D36885041B21782F9ED22544109C40AA33388504152A492C0EC225441B47D823F348850410BD58B1AEA2254411F1ED94D3788504124A6DB82EA225441B006018237885041B21782F9ED225441986218EF388850414400AA2DEE225441490A93753A885041F6D4AF83EC2254412782DB783A88504108686E73EC22544187FDEEE23A8850419BCB620CEC22544194DEBF2B3B885041754AF3BCEB225441F853E3B8398850418F12837AE822544160432AE43888504160A12270E8225441E42444DB38885041C5A3116AE8225441B86EE3AE3488504103FED722E8225441C2BF462B34885041C8171F1DE82254413311E099338850414472271AE822544170F895812C885041088B7132EF225441BD8838CD268850410F41574AF42254415D1549942588504101CAD58CF7225441B326A4522488504176552368F8225441546EE64724885041FE96C67EF8225441B77E59C42288504124F8577AF9225441EA95D49522885041A4096B97F92254410B19DB18218850416C6A2C9BFA225441D157520820885041290887A7F82254411E833EDF1F885041246F2D71F8225441A21C2BBC1F88504153C6E91BF82254415632FCA61E8850411A6EBE1FF62254417E9C7E142B885041E48CBAF4EC2254413E835D862D8850411602F3EFEB2254416ACD03DA3288504115645266E722544155C63F5232885041C08AE843E622544186D8613D3188504105714BC0E422544179CE35263188504121F379B5E42254415C34B21831885041CB24EF8CE4225441D5840C003188504174956D6AE42254414AD61F9A3088504121BD9781E4225441AC914796308850411F7EDD7FE42254410F85A6482B8850414BC145D3E5225441DED1371C2B88504197E2F675E5225441B67AB3112B885041AEE84170E52254413309EFFD2A885041FD095E36E5225441736F173F298850417FADFF8BE1225441BD8838CD26885041D5F387EFE0225441B91C6D9D1C885041FC3B5915DE225441CADBC7501C88504135BEA959DE225441000000501C885041C3F5285CDE2254417D9A9E441C885041CE998064DE225441BC5D25BF13885041E6F6DBFCE52254415F92D284138850417F4F6A35E62254411A6271811388504124FEDA33E6225441F152413E13885041F57ABD6FE6225441FAF3B10D13885041B6F26EFEE5225441C7D2ECFD1288504150A827F7E52254415EF02BE9128850417FC8B4B3E52254416C8492E1128850416AEE7A97E522544191DF5105128850411CC38E95E3225441ACB9093219885041515A84EBDD2254412B7A9031198850413A71FFE0DD22544186425477198850411E3FD0B4DD225441047300C01988504185BA707BDD225441713D0A27198850418FC2F558DD225441C8164F2119885041CE11A046DD225441BDEA330014885041F80C1CAFDB225441258D36E2138850414E1F47A6DB225441730A381611885041D24BD681DE22544168176DAB108850411355C5EFDE2254414EEC79A20E8850415C993F0BE1225441910AF3570E885041C45B645AE122544111674EBD0C8850418A24790EE32254417DB0AECB0C885041F11A2C24E322544184001BBF0E885041AEFB99B2E6225441D7A3703D0F885041295C8FE2E6225441E17A141E158850411F85EBB1F12254418FC2F5C81F885041295C8F72052354416EA3C1FB23885041F0ECC85C0D2354411C9A3D46248850417069B7780D235441B81E851B258850418FC2F5F80C23544139BBF38725885041DAB55BF10D2354415D15499425885041A7B7FBF50D2354414E323E0526885041018060100F23544152B81E252A885041333333831823544127AFDD3F2C8850411338EFA21E2354410C0E258B2E8850414CA5215F2423544157160E6D2F8850412800BDF5242354419A8CD3ED308850410FFED37E2523544185C18EE8308850414772BDF225235441D4D316F4308850417C7E6DFA25235441ECD88CBE31885041E82C54002523544165EEF9F931885041887904B9242354414666AA733488504173EDF28421235441DB0B01FC35885041CFA0CDEC21235441000000C036885041333333B32123544185EB518838885041713D0A9722235441934779973888504170837C9D222354419BA60A4E3B8850412EB3575523235441111BDD713B8850410FE3EE4D23235441F97D39C842885041747873E91D2354416666662643885041F6285C9F1D235441009DCC364388504112712F981D2354418961911D4A8850410881B7851823544198DAD62D4A8850414E2C2E6E18235441B237DA494C885041C8E974EC16235441B9C111344C885041FADDB64C162354411B14EC1F4C8850419CDF11D61523544183C0CA004C8850413D0AD7D714235441A5DA1D014C885041D3940FD71423544127F66FAD4B885041F9B36971122354411952871A4D8850413529A26C11235441F68037B24C885041D82C34F10C235441A00D48794B885041FCFD83590D23544134AB3D754B885041934DB4080D2354417B14AE574C885041FD09D7F30C235441C45BE0FA4C88504169CD1EE50C235441E6D783FB4C885041FE8F3C1A0F23544107EBC1D550885041E863C2D50E235441FAFF0983568850416A63EDB40E23544148E17A245788504114AE47B10E2354419F4C3E2A578850413E87C3150D235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100654 - 353898
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000004000000A20000007B14AEE758885041C3F528BC01235441F6285CAF578850413D0AD78300235441B81E85BB56885041333333F3FF225441CDCCCCFC558850411F85EB110023544133333383558850413333339300235441E17A143E55885041AE47E13A012354418FC2F508558850415C8FC24502235441C3F528CC548850418FC2F5480323544148E17A8453885041333333530423544114AE474151885041D7A3706D05235441E17A146E4F885041CDCCCCCC05235441713D0AB74D885041A4703D4A05235441666666364C8850413D0AD7030323544152B81E854A885041A4703DDA012354417B14AEC748885041295C8F02022354411F85EB413F885041295C8FE208235441A4703D1A3E8850419A9999C907235441C3F5283C3E885041C3F5283C0623544114AE47C1458850419A9999B900235441333333D348885041CDCCCC2CFE225441000000604A885041713D0AF7FC225441D7A3700D4B885041F6285CFFFB22544114AE47C14A885041000000E0FA22544185EB51B84A8850415C8FC225FA225441000000904B8850417B14AEB7F922544185EB51684C88504133333313F8225441C3F5288C4C885041F6285C0FF6225441000000504C885041B81E85CBF42254419A9999794B885041666666C6F3225441000000304A8850417B14AE77F222544114AE47F1488850418FC2F548F1225441C3F528CC47885041EC51B81EF0225441F6285C1F468850411F85EB81EF2254410000000044885041E17A142EEF225441A4703D0A42885041F6285CEFEE225441295C8F524088504148E17AE4ED225441A4703DDA3E885041EC51B8FEED225441C3F5286C3D88504185EB5148EE22544148E17AD43C88504185EB5138EF22544185EB51083A8850410AD7A3A0EE225441000000B03A885041B81E859BEB22544185EB51D8398850417B14AE07E922544185EB51F837885041F6285CCFE722544185EB51D8368850417B14AE87E722544148E17A9435885041F6285CCFE72254410AD7A380348850417B14AEA7E8225441C3F5283C33885041F6285C2FE8225441AE47E13A328850411F85EB11E6225441E17A149E31885041D7A370EDE4225441F6285C4F3088504100000060E42254410AD7A3202E8850417B14AEE7E42254417B14AE972B8850418FC2F5B8E52254410AD7A3902A8850413D0AD723E522544185EB51182A885041B81E851BE4225441C3F5283C2A885041B81E85FBE22254410AD7A3D0298850413D0AD7F3E1225441713D0A17298850413D0AD733E1225441C3F528FC278850417B14AE97E0225441000000F02188504114AE4791DD225441713D0A771F88504148E17A24DC22544185EB51481D8850419A999909DB2254418FC2F5981B88504148E17AB4DB225441A4703D1A1B8850417B14AEF7DB2254419A9999891B88504133333333DC225441CDCCCC3C1C885041B81E859BDC225441D7A3709D1C88504148E17A64DD225441000000501C885041C3F5285CDE225441713D0A071A8850418FC2F508E022544114AE478117885041713D0A37E2225441333333D3158850415C8FC2D5E32254413D0AD7C314885041C3F5288CE5225441CDCCCC8C13885041B81E854BE62254415C8FC29512885041B81E85CBE522544185EB5108138850415C8FC255E4225441AE47E1EA1588504185EB5108E1225441EC51B86E1888504100000040DF22544185EB513819885041713D0A77DE225441713D0A27198850418FC2F558DD2254419A9999891888504114AE4761DB2254415C8FC285178850413D0AD763DB225441AE47E13A17885041295C8FA2DC22544114AE47F1138850419A999959DE225441713D0AC711885041B81E851BE02254413D0AD7330F8850419A999999E2225441713D0AC70D88504114AE4731E42254419A9999F90C885041295C8F02E42254410AD7A3500C88504100000070E3225441D7A3701D0C8850419A999959E22254417B14AE970C885041B81E854BE1225441000000F00C885041E17A148EE022544152B81EC50D885041F6285CEFDE2254411F85EBA10F885041F6285CDFDB225441295C8FB20D885041A4703DEADB2254413D0AD7030C885041E17A148EDB225441713D0A370A885041D7A370CDDA22544114AE476101885041A4703D0AE42254415C8FC255008850411F85EB21E52254419A99994901885041C3F528FCE5225441D7A3704D02885041A4703D7AE4225441713D0AC703885041F6285C1FE3225441D7A3709D05885041EC51B8EEE12254417B14AEF706885041D7A3706DE1225441C3F528CC07885041713D0A87E1225441CDCCCC5C088850410AD7A350E22254411F85EB61088850410AD7A300E3225441295C8F42088850415C8FC2B5E322544114AE47C107885041F6285C1FE5225441D7A370ED06885041333333A3E6225441A4703D0A06885041C3F5288CE722544152B81EA50488504100000060E822544148E17AB4038850419A9999D9E8225441713D0A370488504100000080EA2254415C8FC2C50688504148E17A64E82254410AD7A3A008885041D7A370DDE6225441EC51B86E0A885041F6285C0FE5225441D7A3703D0F885041295C8FE2E6225441E17A141E158850411F85EBB1F12254418FC2F5C81F885041295C8F72052354418FC2F518248850413D0AD7930D235441B81E851B258850418FC2F5F80C23544152B81E252A885041333333831823544185EB51482E885041D7A3708D2423544114AE47F1308850416666668625235441AE47E16A3188504185EB51B824235441AE47E11A328850415C8FC21523235441C3F5281C34885041F6285CDF222354415C8FC265358850418FC2F51822235441000000C036885041333333B32123544185EB518838885041713D0A972223544142CC819D3A885041C95EDB792323544185EB51B83B885041F6285C3F23235441B81E859B3D885041B81E855B21235441666666263F885041000000E01F23544185EB51B84088504185EB51B81E2354416666662643885041F6285C9F1D23544185EB517846885041B81E852B1C2354410F2FF29748885041326D4DB91A235441AC9222C74A8850418CE2CA8E1723544134DE0C8D4B885041B140B0E615235441EC51B84E4C885041CDCCCC1C14235441C3F528CC4C885041713D0AC712235441671F88AC4D8850418AA2843E122354410AD7A3404D8850417B14AE5710235441B81E85FB4C885041A4703D1A0F2354415C8FC2D5508850415C8FC2D50E23544148E17A245788504114AE47B10E23544152B81EC5558850417B14AEB712235441EC51B8AE5288504152B81E3516235441D7A3707D56885041666666561B235441CDCCCC7C58885041AE47E16A1A235441EC51B83E5A885041D7A3708D19235441333333C35B885041000000C018235441E17A148E5B88504114AE47C1162354417B14AE275A885041EC51B82E13235441295C8F5259885041713D0A4711235441C3F5288C588850419A9999C90F2354410AD7A33058885041D7A3703D0E235441A4703D2A578850415C8FC2150D235441713D0A6759885041D7A3703D09235441E17A144E5A885041A4703D4A06235441A4703DFA59885041AE47E1BA032354417B14AEE758885041C3F528BC01235441110000009A99997942885041D7A370DD0E235441D7A3703D438850419A99993910235441EC51B8EE42885041B81E854B112354416666663642885041F6285C6F122354415C8FC20541885041295C8FE21223544114AE47513F885041D7A3702D13235441295C8F323E885041AE47E18A12235441D7A3708D3C88504185EB51981023544152B81E853B88504114AE47610F235441D7A370BD3A885041666666B60E23544185EB51583A885041E17A145E0D23544152B81E353B885041666666760C235441B81E859B3D885041C3F5289C0C235441713D0A173F8850411F85EBC10C235441333333F33F885041333333D30D23544114AE47814188504114AE47610E2354419A99997942885041D7A370DD0E23544115000000AE47E10A2A885041295C8FA2F82254415C8FC2052A8850419A9999D9F7225441D7A3702D2A8850413D0AD743F72254417B14AEB72A885041AE47E17AF6225441000000102C885041295C8F02F62254417B14AE572D8850415C8FC235F622544114AE47712E88504185EB5108F62254411F85EBF12F88504148E17A44F52254418FC2F5E8308850419A9999A9F4225441D7A370BD3188504100000070F422544152B81E2532885041B81E850BF52254411F85EB4132885041000000E0F522544148E17AD431885041EC51B8AEF622544148E17AF43088504133333383F722544152B81ED52F88504166666646F8225441CDCCCCCC2E885041D7A370EDF8225441295C8FA22D885041E17A148EF9225441333333832C885041EC51B8DEF92254413D0AD7632B8850419A9999E9F92254419A9999892A8850415C8FC265F9225441AE47E10A2A885041295C8FA2F8225441130000007B14AE4720885041713D0A47F52254410AD7A370238850413D0AD753F3225441CDCCCCCC25885041B81E858BF12254419A9999C92888504185EB51A8EF225441D7A370AD29885041B81E854BEE22544152B81E252B885041E17A143EEE225441333333932B8850411F85EB91EF2254413D0AD7D32A885041D7A3703DF0225441A4703DFA2888504152B81E25F12254416666661627885041666666D6F22254418FC2F52825885041295C8F32F5225441AE47E10A258850413D0AD7E3F62254415C8FC255248850419A9999A9F82254410AD7A3E022885041295C8F82FA22544148E17A94218850418FC2F578FA225441EC51B8DE20885041333333C3F9225441295C8F921F885041AE47E18AF822544114AE47F11E885041EC51B82EF62254417B14AE4720885041713D0A47F5225441
+</a>
+
+<b>
+010600000001000000010300000001000000C30000009F4C3E2A578850413E87C3150D235441713D0A6759885041D7A3703D092354419A9999E95988504149333353072354419A9999E9598850415AC2F5B804235441E45BD2A4598850417C2F582303235441F3E1FE945988504179B3440703235441ED9894525988504173FA543E01235441DB00DC09598850416FCF7691FF225441F6285CAF578850413D0AD783002354410B43809D57885041B6193F7900235441A94BE72551885041F7E733B104235441E7ED3EC950885041CD7BF9EE042354417234896550885041C06DAF2E052354410BB7592F4E88504177F102A0062354418ADF54294F8850415786C1BC052354412B949C1A4F8850412B1B52B905235441777C1CBA4F8850412B2FBE320523544114CC38A74D885041218B800605235441CC1CBB804D885041355EBA0305235441AB3AAF4E4D88504102BF1FFF04235441CB50AB454D88504174BD729704235441B37578424D8850411C8195910423544172A2B6DB4C8850410CC25B5000235441E2B98F724B8850418FAC236C002354412F1307334A88504174BA498E00235441447EE6AD4888504169FE96C501235441FADE15B5478850412F9DB775022354418AA199D94588504138DB52E10323544192743260458850411B30C24304235441311E990D448850416D03174105235441AA4565DC3F8850418630C675082354410D30D6D23D885041EA1A376C06235441EA87F6984488504138AA53AE01235441291927CD45885041459ABCD10023544138AFE72148885041B70EDE34FF225441B3CD4F0E4A8850412DC62EDCFD2254416D24275D4A885041249707A4FD22544172E14E664A885041224F829DFD2254413BC54E354B8850414EE2130AFD2254413C95429B4B88504114CF76C1FC22544156E5B4BE4B8850411FCF37A8FC2254419999B4124C885041A238646CFC2254415C2A7DAF4B885041AFFFF7E3FB2254415FC8B4744B8850413FC8539CFB2254415E260ED94A88504178612BD7FA225441017E9DD24A885041B37244B4FA225441D28280744A8850415399DC32FA225441B9DE97E14B8850411A6EBE1FF6225441C5E7CA754A885041BC3E5010F222544100943B25498850413D75557FF1225441C82E881A4988504164326674F1225441CACC9A5C45885041BD44E9CEEF225441F55E866A3D8850415DD1F995EE22544118132A4C3C885041A8EA6DF5EE2254411D17FCFD3B88504151EDBA10EF2254415C82C1FB3B8850413C703B10EF225441DF04B8BF39885041BD44E9CEEF2254415E821F3E328850417CB8FCC3F52254411F85EB4132885041000000E0F522544148E17AD431885041EC51B8AEF622544148E17AF43088504133333383F722544152B81ED52F88504166666646F8225441CDCCCCCC2E885041D7A370EDF8225441295C8FA22D885041E17A148EF922544130836B602D885041C6F4A3A0F922544188C9E5E92C885041C1B0B4FEF92254412D608FB22C88504176FD6DD1F9225441333333832C885041EC51B8DEF92254413D0AD7632B8850419A9999E9F92254419A9999892A8850415C8FC265F9225441AE47E10A2A885041295C8FA2F82254415C8FC2052A8850419A9999D9F7225441D7A3702D2A8850413D0AD743F72254417B14AEB72A885041AE47E17AF6225441000000102C885041295C8F02F6225441CE449DFF2C885041E9EEFF27F6225441E27B397D36885041B21782F9ED22544109C40AA33388504152A492C0EC225441B47D823F348850410BD58B1AEA2254411F1ED94D3788504124A6DB82EA225441B006018237885041B21782F9ED225441986218EF388850414400AA2DEE225441490A93753A885041F6D4AF83EC2254412782DB783A88504108686E73EC22544187FDEEE23A8850419BCB620CEC22544194DEBF2B3B885041754AF3BCEB225441F853E3B8398850418F12837AE822544160432AE43888504160A12270E8225441E42444DB38885041C5A3116AE8225441B86EE3AE3488504103FED722E8225441C2BF462B34885041C8171F1DE82254413311E099338850414472271AE822544170F895812C885041088B7132EF225441BD8838CD268850410F41574AF42254415D1549942588504101CAD58CF7225441B326A4522488504176552368F8225441546EE64724885041FE96C67EF8225441B77E59C42288504124F8577AF9225441EA95D49522885041A4096B97F92254410B19DB18218850416C6A2C9BFA225441D157520820885041290887A7F82254411E833EDF1F885041246F2D71F8225441A21C2BBC1F88504153C6E91BF82254415632FCA61E8850411A6EBE1FF62254417E9C7E142B885041E48CBAF4EC2254413E835D862D8850411602F3EFEB2254416ACD03DA3288504115645266E722544155C63F5232885041C08AE843E622544186D8613D3188504105714BC0E422544179CE35263188504121F379B5E42254415C34B21831885041CB24EF8CE4225441D5840C003188504174956D6AE42254414AD61F9A3088504121BD9781E4225441AC914796308850411F7EDD7FE42254410F85A6482B8850414BC145D3E5225441DED1371C2B88504197E2F675E5225441B67AB3112B885041AEE84170E52254413309EFFD2A885041FD095E36E5225441736F173F298850417FADFF8BE1225441BD8838CD26885041D5F387EFE0225441B91C6D9D1C885041FC3B5915DE225441CADBC7501C88504135BEA959DE225441000000501C885041C3F5285CDE2254417D9A9E441C885041CE998064DE225441BC5D25BF13885041E6F6DBFCE52254415F92D284138850417F4F6A35E62254411A6271811388504124FEDA33E6225441F152413E13885041F57ABD6FE6225441FAF3B10D13885041B6F26EFEE5225441C7D2ECFD1288504150A827F7E52254415EF02BE9128850417FC8B4B3E52254416C8492E1128850416AEE7A97E522544191DF5105128850411CC38E95E3225441ACB9093219885041515A84EBDD2254412B7A9031198850413A71FFE0DD22544186425477198850411E3FD0B4DD225441047300C01988504185BA707BDD225441713D0A27198850418FC2F558DD225441C8164F2119885041CE11A046DD225441BDEA330014885041F80C1CAFDB225441258D36E2138850414E1F47A6DB225441730A381611885041D24BD681DE22544168176DAB108850411355C5EFDE2254414EEC79A20E8850415C993F0BE1225441910AF3570E885041C45B645AE122544111674EBD0C8850418A24790EE32254417DB0AECB0C885041F11A2C24E322544184001BBF0E885041AEFB99B2E6225441D7A3703D0F885041295C8FE2E6225441E17A141E158850411F85EBB1F12254418FC2F5C81F885041295C8F72052354416EA3C1FB23885041F0ECC85C0D2354411C9A3D46248850417069B7780D235441B81E851B258850418FC2F5F80C23544139BBF38725885041DAB55BF10D2354415D15499425885041A7B7FBF50D2354414E323E0526885041018060100F23544152B81E252A885041333333831823544127AFDD3F2C8850411338EFA21E2354410C0E258B2E8850414CA5215F2423544157160E6D2F8850412800BDF5242354419A8CD3ED308850410FFED37E2523544185C18EE8308850414772BDF225235441D4D316F4308850417C7E6DFA25235441ECD88CBE31885041E82C54002523544165EEF9F931885041887904B9242354414666AA733488504173EDF28421235441DB0B01FC35885041CFA0CDEC21235441000000C036885041333333B32123544185EB518838885041713D0A9722235441934779973888504170837C9D222354419BA60A4E3B8850412EB3575523235441111BDD713B8850410FE3EE4D23235441F97D39C842885041747873E91D2354416666662643885041F6285C9F1D235441009DCC364388504112712F981D2354418961911D4A8850410881B7851823544198DAD62D4A8850414E2C2E6E18235441B237DA494C885041C8E974EC16235441B9C111344C885041FADDB64C162354411B14EC1F4C8850419CDF11D61523544183C0CA004C8850413D0AD7D714235441A5DA1D014C885041D3940FD71423544127F66FAD4B885041F9B36971122354411952871A4D8850413529A26C11235441F68037B24C885041D82C34F10C235441A00D48794B885041FCFD83590D23544134AB3D754B885041934DB4080D2354417B14AE574C885041FD09D7F30C235441C45BE0FA4C88504169CD1EE50C235441E6D783FB4C885041FE8F3C1A0F23544107EBC1D550885041E863C2D50E235441FAFF0983568850416A63EDB40E23544148E17A245788504114AE47B10E2354419F4C3E2A578850413E87C3150D235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>751857 - 2351622
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000001B00000099FB701356BC5041FFF11B028E1E5541BF86DDCA56BC5041B56977BA8E1E5541713D0A9757BC50417B14AE878F1E5541F961F5E95ABC50410F2CFB72921E554113D3EBF15DBC5041DE31741C951E5541AE47E10A5FBC504133333313961E5541AF90D28967BC5041EF7568E59C1E5541D121185D69BC50415231F5CC9C1E5541CDCCCC4C6CBC5041C3F5285C911E5541E51D1F8D6DBC5041A29CCCC78D1E5541333333F370BC5041EC51B80E841E554152B81E5574BC50411F85EBA17D1E55418FC2F59871BC50410AD7A3F0771E55415DA4C1576DBC50414C1F1D157C1E5541DB4DE3D96ABC5041357F301E7E1E55417573B70669BC5041ABB4A1587F1E55419D6EE96466BC504109792F54801E5541BD24743365BC504148B63B39801E554172C6FA0A64BC5041EEFC7CA97F1E5541F16F1C8D61BC5041C2548E4F7D1E5541CDCCCC6C5CBC504152B81E15771E55415C8FC2F559BC5041B81E85EB7C1E55410AD7A33057BC504100000020821E554114AE47E14FBC504114AE4711881E5541AFFD828A55BC504195C9D17E8D1E5541C46189F854BC5041C7D6C3E58C1E554199FB701356BC5041FFF11B028E1E554101030000000100000008000000A312CB146DBC5041F2C6DF688F1E5541ABC5F7126DBC5041B3FC466E8F1E55414AE111366EBC504175B1C7988C1E55416146B7136EBC50418C166D768C1E5541416054F06DBC50416FEB0BDF8C1E5541B51EE3D96DBC5041A7E079218D1E5541D9689D446DBC5041D77552DB8E1E5541A312CB146DBC5041F2C6DF688F1E5541010300000001000000060000006B51AF136EBC5041962165768C1E5541EAD834306EBC5041927B31228C1E554176339A436EBC50413A6F82EC8B1E55413258AD426EBC5041F69395EB8B1E5541C2CCDC426EBC5041FAC8BFEA8B1E55416B51AF136EBC5041962165768C1E5541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000BADD85F273BC5041B365B4D47C1E55418FC2F59871BC50410AD7A3F0771E55415C8FC27569BC5041D7A370DD6D1E5541B81E85AB63BC50413D0AD7B3661E55415C8FC2155EBC504114AE47715E1E5541A4703DFA58BC504114AE4751601E554152B81EC554BC504114AE47C1571E5541D7A370AD50BC5041713D0AE74E1E5541B81E857B55BC504114AE4771401E554148E17A445ABC5041E17A14FE311E55418FC2F5C856BC5041A4703DAA261E554152B81E154BBC50410AD7A3A0111E554152B81E4545BC504114AE4731211E5541333333133DBC504148E17AB43C1E5541B81E858B3BBC504152B81E15431E5541333333D339BC5041CDCCCC6C431E5541D7A370DD35BC50417B14AEE7421E55417620C2DE33BC5041029F8F86421E5541998CFB5333BC504106F85ECA431E554128D384BA32BC5041DBA0F748451E5541E7053F113FBC5041BF4CF6FF541E55418D252DEA6CBC504173F71C1A8E1E55412910940A70BC5041186531A8861E5541BADD85F273BC5041B365B4D47C1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>751857 - 3456708
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000001B00000099FB701356BC5041FFF11B028E1E5541BF86DDCA56BC5041B56977BA8E1E5541713D0A9757BC50417B14AE878F1E5541F961F5E95ABC50410F2CFB72921E554113D3EBF15DBC5041DE31741C951E5541AE47E10A5FBC504133333313961E5541AF90D28967BC5041EF7568E59C1E5541D121185D69BC50415231F5CC9C1E5541CDCCCC4C6CBC5041C3F5285C911E5541E51D1F8D6DBC5041A29CCCC78D1E5541333333F370BC5041EC51B80E841E554152B81E5574BC50411F85EBA17D1E55418FC2F59871BC50410AD7A3F0771E55415DA4C1576DBC50414C1F1D157C1E5541DB4DE3D96ABC5041357F301E7E1E55417573B70669BC5041ABB4A1587F1E55419D6EE96466BC504109792F54801E5541BD24743365BC504148B63B39801E554172C6FA0A64BC5041EEFC7CA97F1E5541F16F1C8D61BC5041C2548E4F7D1E5541CDCCCC6C5CBC504152B81E15771E55415C8FC2F559BC5041B81E85EB7C1E55410AD7A33057BC504100000020821E554114AE47E14FBC504114AE4711881E5541AFFD828A55BC504195C9D17E8D1E5541C46189F854BC5041C7D6C3E58C1E554199FB701356BC5041FFF11B028E1E554101030000000100000008000000A312CB146DBC5041F2C6DF688F1E5541ABC5F7126DBC5041B3FC466E8F1E55414AE111366EBC504175B1C7988C1E55416146B7136EBC50418C166D768C1E5541416054F06DBC50416FEB0BDF8C1E5541B51EE3D96DBC5041A7E079218D1E5541D9689D446DBC5041D77552DB8E1E5541A312CB146DBC5041F2C6DF688F1E5541010300000001000000060000006B51AF136EBC5041962165768C1E5541EAD834306EBC5041927B31228C1E554176339A436EBC50413A6F82EC8B1E55413258AD426EBC5041F69395EB8B1E5541C2CCDC426EBC5041FAC8BFEA8B1E55416B51AF136EBC5041962165768C1E5541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000BADD85F273BC5041B365B4D47C1E55418FC2F59871BC50410AD7A3F0771E55415C8FC27569BC5041D7A370DD6D1E5541B81E85AB63BC50413D0AD7B3661E55415C8FC2155EBC504114AE47715E1E5541A4703DFA58BC504114AE4751601E554152B81EC554BC504114AE47C1571E5541D7A370AD50BC5041713D0AE74E1E5541B81E857B55BC504114AE4771401E554148E17A445ABC5041E17A14FE311E55418FC2F5C856BC5041A4703DAA261E554152B81E154BBC50410AD7A3A0111E554152B81E4545BC504114AE4731211E5541333333133DBC504148E17AB43C1E5541B81E858B3BBC504152B81E15431E5541333333D339BC5041CDCCCC6C431E5541D7A370DD35BC50417B14AEE7421E55417620C2DE33BC5041029F8F86421E5541998CFB5333BC504106F85ECA431E554128D384BA32BC5041DBA0F748451E5541E7053F113FBC5041BF4CF6FF541E55418D252DEA6CBC504173F71C1A8E1E55412910940A70BC5041186531A8861E5541BADD85F273BC5041B365B4D47C1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987163 - 570783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000310000001F85EBD1A146514152B81E056599544152B81EE5AA465141C3F5280C6A995441EC51B8CEB44651419A9999896F995441831910B4BC465141A6DD8D3C889954419A568AFCBE465141002D5F618F995441952E2713C1465141EA22DEEB959954413576088EC6465141870E3084959954418F6BCF9BC7465141A82C7F6A959954416780DF31CB465141452DB5EF94995441E5F06F41CE465141CBE2B485949954414B82F8A1CF465141D175F15594995441064733C5CF465141E934A53E94995441D6BDDF6ED24651415503D87B92995441DA439E61D54651413835B8889099544181F81621DD46514192C504698B995441A3E4EBC0E146514177D0215A88995441311B3578E4465141EE19548E86995441D10BFB03E94651416A2D098D8399544148E17A84E24651417B14AEA778995441E6FA256FE046514169FAC0B777995441288BF0F6DD465141CDB3589B769954417E02BBC8D7465141C060DE386A995441AF0630CCDA46514169C97B6D68995441CF905726DE4651410E6B6E6B66995441EA73F49ADC465141D31D590E64995441DA3C1804DB4651418900B59F61995441C785FF3FD9465141DA98D6EB5E995441DDCA13A0D8465141D88EDDF95D995441FD22FCB0D7465141CB71BA905C995441176329EFD6465141D3CBF76B5B9954415B346365D64651417AF1DD9B5A995441F4553B0ED64651410D4578185A99544149D2FF0BD54651414D762D845A9954410A2F7B98D446514119CA0CB45A995441479B241ED4465141C6A8BFE65A99544195B123C5D3465141E0896C2E5B995441A6398930D34651414FBA5EA65B9954417DFCA157D2465141115950555C995441471CC1F4D146514199C83AA75C99544131AC6A94D1465141BC68F41A5D99544159EFD4C5D04651418F201D135E995441225F8A2BD04651415BBB24365F99544175C41E93CF465141634A3F5A60995441C8E3EE85CF465141EF7128916099544152B81E55CE4651416666668665995441295C8F92BD465141F6285C3F5D99544185EB5168BA465141666666965B995441A4703D5AAB465141000000B0539954411F85EBD1A146514152B81E0565995441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000000000C0AA465141A4703D5ABB995441E17A140EAD4651410AD7A310CA995441AE47E1AAAD46514152B81EF5CD995441CDCCCC0CAE465141AE47E14AD09954418FC2F5A8AE465141D7A3708DD299544114AE4741B0465141333333E3D3995441A4703DBAB24651415C8FC225D499544148E17AD4BB465141666666C6D3995441C3F5280CBF465141EC51B8DED3995441AE47E1BAC446514114AE47A1D59954419A999949C546514166666696D099544148E17AD4CC465141C3F5286CD1995441333333F3CD465141CDCCCC7CD1995441295C8FB2CD4651411F85EB11CD995441F6285C1FCE465141D7A370DDC699544114AE4701CF465141E17A143EC09954417B14AE57CF465141AE47E13AB999544148E17A44CF4651415C8FC255B0995441000000F0CE4651419A999939A5995441A4703D7ACF46514185EB51489B99544114AE47A1CF4651416666665694995441CDCCCC4CC746514152B81E759599544133333313C1465141A4703DEA9599544152B81EC5C046514152B81EF5949954418FC2F5889B4651417B14AE6793995441295C8FF29C465141C3F5281C979954410AD7A3E09F465141000000609C9954411F85EBF1A4465141C3F5282CA5995441AE47E1DAA846514185EB5188AC995441E17A14FEA94651413D0AD733B0995441295C8F82AA46514114AE47B1B4995441000000C0AA465141A4703D5ABB995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987163 - 1272456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000310000001F85EBD1A146514152B81E056599544152B81EE5AA465141C3F5280C6A995441EC51B8CEB44651419A9999896F995441831910B4BC465141A6DD8D3C889954419A568AFCBE465141002D5F618F995441952E2713C1465141EA22DEEB959954413576088EC6465141870E3084959954418F6BCF9BC7465141A82C7F6A959954416780DF31CB465141452DB5EF94995441E5F06F41CE465141CBE2B485949954414B82F8A1CF465141D175F15594995441064733C5CF465141E934A53E94995441D6BDDF6ED24651415503D87B92995441DA439E61D54651413835B8889099544181F81621DD46514192C504698B995441A3E4EBC0E146514177D0215A88995441311B3578E4465141EE19548E86995441D10BFB03E94651416A2D098D8399544148E17A84E24651417B14AEA778995441E6FA256FE046514169FAC0B777995441288BF0F6DD465141CDB3589B769954417E02BBC8D7465141C060DE386A995441AF0630CCDA46514169C97B6D68995441CF905726DE4651410E6B6E6B66995441EA73F49ADC465141D31D590E64995441DA3C1804DB4651418900B59F61995441C785FF3FD9465141DA98D6EB5E995441DDCA13A0D8465141D88EDDF95D995441FD22FCB0D7465141CB71BA905C995441176329EFD6465141D3CBF76B5B9954415B346365D64651417AF1DD9B5A995441F4553B0ED64651410D4578185A99544149D2FF0BD54651414D762D845A9954410A2F7B98D446514119CA0CB45A995441479B241ED4465141C6A8BFE65A99544195B123C5D3465141E0896C2E5B995441A6398930D34651414FBA5EA65B9954417DFCA157D2465141115950555C995441471CC1F4D146514199C83AA75C99544131AC6A94D1465141BC68F41A5D99544159EFD4C5D04651418F201D135E995441225F8A2BD04651415BBB24365F99544175C41E93CF465141634A3F5A60995441C8E3EE85CF465141EF7128916099544152B81E55CE4651416666668665995441295C8F92BD465141F6285C3F5D99544185EB5168BA465141666666965B995441A4703D5AAB465141000000B0539954411F85EBD1A146514152B81E0565995441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000000000C0AA465141A4703D5ABB995441E17A140EAD4651410AD7A310CA995441AE47E1AAAD46514152B81EF5CD995441CDCCCC0CAE465141AE47E14AD09954418FC2F5A8AE465141D7A3708DD299544114AE4741B0465141333333E3D3995441A4703DBAB24651415C8FC225D499544148E17AD4BB465141666666C6D3995441C3F5280CBF465141EC51B8DED3995441AE47E1BAC446514114AE47A1D59954419A999949C546514166666696D099544148E17AD4CC465141C3F5286CD1995441333333F3CD465141CDCCCC7CD1995441295C8FB2CD4651411F85EB11CD995441F6285C1FCE465141D7A370DDC699544114AE4701CF465141E17A143EC09954417B14AE57CF465141AE47E13AB999544148E17A44CF4651415C8FC255B0995441000000F0CE4651419A999939A5995441A4703D7ACF46514185EB51489B99544114AE47A1CF4651416666665694995441CDCCCC4CC746514152B81E759599544133333313C1465141A4703DEA9599544152B81EC5C046514152B81EF5949954418FC2F5889B4651417B14AE6793995441295C8FF29C465141C3F5281C979954410AD7A3E09F465141000000609C9954411F85EBF1A4465141C3F5282CA5995441AE47E1DAA846514185EB5188AC995441E17A14FEA94651413D0AD733B0995441295C8F82AA46514114AE47B1B4995441000000C0AA465141A4703D5ABB995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987163 - 4025044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000310000001F85EBD1A146514152B81E056599544152B81EE5AA465141C3F5280C6A995441EC51B8CEB44651419A9999896F995441831910B4BC465141A6DD8D3C889954419A568AFCBE465141002D5F618F995441952E2713C1465141EA22DEEB959954413576088EC6465141870E3084959954418F6BCF9BC7465141A82C7F6A959954416780DF31CB465141452DB5EF94995441E5F06F41CE465141CBE2B485949954414B82F8A1CF465141D175F15594995441064733C5CF465141E934A53E94995441D6BDDF6ED24651415503D87B92995441DA439E61D54651413835B8889099544181F81621DD46514192C504698B995441A3E4EBC0E146514177D0215A88995441311B3578E4465141EE19548E86995441D10BFB03E94651416A2D098D8399544148E17A84E24651417B14AEA778995441E6FA256FE046514169FAC0B777995441288BF0F6DD465141CDB3589B769954417E02BBC8D7465141C060DE386A995441AF0630CCDA46514169C97B6D68995441CF905726DE4651410E6B6E6B66995441EA73F49ADC465141D31D590E64995441DA3C1804DB4651418900B59F61995441C785FF3FD9465141DA98D6EB5E995441DDCA13A0D8465141D88EDDF95D995441FD22FCB0D7465141CB71BA905C995441176329EFD6465141D3CBF76B5B9954415B346365D64651417AF1DD9B5A995441F4553B0ED64651410D4578185A99544149D2FF0BD54651414D762D845A9954410A2F7B98D446514119CA0CB45A995441479B241ED4465141C6A8BFE65A99544195B123C5D3465141E0896C2E5B995441A6398930D34651414FBA5EA65B9954417DFCA157D2465141115950555C995441471CC1F4D146514199C83AA75C99544131AC6A94D1465141BC68F41A5D99544159EFD4C5D04651418F201D135E995441225F8A2BD04651415BBB24365F99544175C41E93CF465141634A3F5A60995441C8E3EE85CF465141EF7128916099544152B81E55CE4651416666668665995441295C8F92BD465141F6285C3F5D99544185EB5168BA465141666666965B995441A4703D5AAB465141000000B0539954411F85EBD1A146514152B81E0565995441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000000000C0AA465141A4703D5ABB995441E17A140EAD4651410AD7A310CA995441AE47E1AAAD46514152B81EF5CD995441CDCCCC0CAE465141AE47E14AD09954418FC2F5A8AE465141D7A3708DD299544114AE4741B0465141333333E3D3995441A4703DBAB24651415C8FC225D499544148E17AD4BB465141666666C6D3995441C3F5280CBF465141EC51B8DED3995441AE47E1BAC446514114AE47A1D59954419A999949C546514166666696D099544148E17AD4CC465141C3F5286CD1995441333333F3CD465141CDCCCC7CD1995441295C8FB2CD4651411F85EB11CD995441F6285C1FCE465141D7A370DDC699544114AE4701CF465141E17A143EC09954417B14AE57CF465141AE47E13AB999544148E17A44CF4651415C8FC255B0995441000000F0CE4651419A999939A5995441A4703D7ACF46514185EB51489B99544114AE47A1CF4651416666665694995441CDCCCC4CC746514152B81E759599544133333313C1465141A4703DEA9599544152B81EC5C046514152B81EF5949954418FC2F5889B4651417B14AE6793995441295C8FF29C465141C3F5281C979954410AD7A3E09F465141000000609C9954411F85EBF1A4465141C3F5282CA5995441AE47E1DAA846514185EB5188AC995441E17A14FEA94651413D0AD733B0995441295C8F82AA46514114AE47B1B4995441000000C0AA465141A4703D5ABB995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987242 - 916837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441EBB6A71CBDE650411B21CD0853755441D858A453B5E6504151A8BC635475544154282FEDB0E65041857ED32755755441CADAC86BABE65041A6312B1D567554413B319794A3E6504123AF58F95775544137689A389DE65041A765EAE95875544165616A6294E65041320DB93F5A755441AB35315F8BE65041B589B9245C755441669D872E83E650415E50B2EB5E7554418B828EE183E6504121BD9A6C60755441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987242 - 1757847
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441EBB6A71CBDE650411B21CD0853755441D858A453B5E6504151A8BC635475544154282FEDB0E65041857ED32755755441CADAC86BABE65041A6312B1D567554413B319794A3E6504123AF58F95775544137689A389DE65041A765EAE95875544165616A6294E65041320DB93F5A755441AB35315F8BE65041B589B9245C755441669D872E83E650415E50B2EB5E7554418B828EE183E6504121BD9A6C60755441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987242 - 4397157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441EBB6A71CBDE650411B21CD0853755441D858A453B5E6504151A8BC635475544154282FEDB0E65041857ED32755755441CADAC86BABE65041A6312B1D567554413B319794A3E6504123AF58F95775544137689A389DE65041A765EAE95875544165616A6294E65041320DB93F5A755441AB35315F8BE65041B589B9245C755441669D872E83E650415E50B2EB5E7554418B828EE183E6504121BD9A6C60755441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>646202 - 307650
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000B81E852B40625141F6285C7FCF3954410AD7A360406251413D0AD7A3D0395441295C8F924262514152B81E05DE395441AE47E1EA4462514185EB5128EB395441AE47E12A4562514152B81E95EC39544152B81E5547625141A4703D2AF93954418FC2F5B84962514133333353073A544185EB51184B62514100000030073A54418FC2F5E856625141CDCCCCFC063A54410AD7A32059625141A4703DCA063A5441295C8F1256625141AE47E16AF53954419A99993954625141CDCCCCBCEA3954418FC2F55853625141C3F528BCE539544114AE47615262514114AE4771E039544114AE47515162514114AE4721DA3954413333330350625141E17A14BED2395441295C8FF24E6251411F85EBB1CE39544152B81ED54E62514133333333CE39544114AE47C14C62514114AE4711CF395441C3F5289C47625141EC51B8FECF395441CDCCCCFC436251415C8FC285CF395441B81E852B40625141F6285C7FCF395441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000142290125662514128ADE56AF5395441727A0CCA556251413841B5C7F3395441272804CA55625141792685C7F33954419A99993954625141CDCCCCBCEA39544133853BB953625141C7DBFEE0E7395441F634F55853625141684B29BCE539544162DF466152625141BD444871E0395441F4A173E351625141DB38B685DD39544114AE47515162514114AE4721DA3954413333330350625141E17A14BED2395441EFDD23DC4F625141E051A229D2395441BE7E8EF24E625141DBBBEBB1CE3954411821F1E64E6251417E65E97FCE39544152B81ED54E62514133333333CE39544114AE47C14C62514114AE4711CF395441C3F5289C47625141EC51B8FECF395441B8EA1D624462514186A9F992CF3954411514CEFC43625141F3D5C285CF3954415987862B40625141541E5D7FCF3954416075A460406251419B57D6A3D0395441DE222D1C4162514131F6FF1AD5395441295C8F924262514152B81E05DE395441747E79CD436251416B5A61E9E43954411E67E2EA44625141CABE5028EB395441F14FE12A456251417AC91E95EC395441926218244A6251413F653B6CF2395441D64864904F62514132DB16CCF8395441170AB08B536251410690DCDAF8395441BE20548F55625141E316B2CBF83954416EFA795B56625141A80E8DE8FA395441E70779F5566251419D8E08C4FD3954414FB367BE58625141B93C763E063A544154E88CF44D6251410D1A2CC7063A5441EA98DDC949625141C1A08151073A544185EB51184B62514100000030073A54418FC2F5E856625141CDCCCCFC063A54410AD7A32059625141A4703DCA063A5441142290125662514128ADE56AF5395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662143 - 119735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000001ED78BB885B550412CC824E601D05441161E6F2F9BB5504152220739FACF54410AD7A3D0B0B55041EC51B81EF3CF544185EB5118C4B5504148E17A84EDCF544133333353D5B550411F85EB21ECCF54411F85EBD1E1B55041C3F5288CE8CF54413D0AD763DEB55041E17A144EDFCF5441EC51B8FEDBB55041CDCCCC0CDACF5441C8F846167DB5504174BA667AF9CF5441D3E4458383B55041AB5D8BC502D054410AD1FCC684B5504189FD073C02D054411ED78BB885B550412CC824E601D05441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000030B71E78B4B55041E5ECE10EF2CF54413C0AA1EEB8B55041D72661BFF0CF5441D9B1F01BC4B550413C1E2980EDCF5441DF55CB57D5B550411CB87D20ECCF5441D12E76CFE1B5504189DC048CE8CF544142E49975DEB55041A975327EDFCF544131A9CC7BDDB55041BE7BF250DDCF54416C8F64F8DCB55041C2E79E30DCCF54414997C400DCB55041A7214B11DACF5441E9C98400C6B550418EE73355E1CF5441E8293A32A4B5504135290387ECCF5441BE0883227DB5504136915976F9CF5441588D082583B5504103183F3D02D05441D1E4458383B55041AC5D8BC502D054415551D95884B550416E5FD16A02D0544190D84DB884B55041EA62AC4102D05441D03540C184B55041D6D9773E02D054410CD1FCC684B5504185FD073C02D054410169605485B550412B72C20902D05441A0C7E26386B5504102697DA801D0544105B56D3788B55041A66FA70001D05441B9AA2C3B89B550414D73BEA400D0544192B544C389B550417395197400D05441ADD498088DB550414E38A648FFCF54415A852A5B8FB55041340C0474FECF5441E6662CE48FB550418F8BAC42FECF5441E1453E5290B550417D90A71BFECF544131DFECF795B55041A10AA416FCCF54415F1687CB97B550415AA80C6EFBCF54415F0A91F898B550418EAC7C03FBCF5441A6A3D67F99B5504142B560D3FACF54411B1E6F2F9BB5504153220739FACF54417D9345CA9BB55041DEA72E06FACF544199DA0EAA9DB55041E9BCE367F9CF544183EB1D859EB550419F0AB220F9CF54411D8F7A839FB5504199092BCDF8CF544145CB8D64A0B5504103084283F8CF544164B3C283A1B55041CCC93424F8CF54411EEB354DA2B550413EF6CAE2F7CF544113CA8ED5A5B5504104C2D2B9F6CF544119844329A6B5504157D9EB9DF6CF544112501FF2A6B55041E2C1605CF6CF5441BBCEAB39A9B55041078FC09CF5CF5441BB551FB8AAB5504197E84B1EF5CF5441684F7602ACB550416193AFB2F4CF54410AD7A3D0B0B55041EC51B81EF3CF544130B71E78B4B55041E5ECE10EF2CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662143 - 319931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000001ED78BB885B550412CC824E601D05441161E6F2F9BB5504152220739FACF54410AD7A3D0B0B55041EC51B81EF3CF544185EB5118C4B5504148E17A84EDCF544133333353D5B550411F85EB21ECCF54411F85EBD1E1B55041C3F5288CE8CF54413D0AD763DEB55041E17A144EDFCF5441EC51B8FEDBB55041CDCCCC0CDACF5441C8F846167DB5504174BA667AF9CF5441D3E4458383B55041AB5D8BC502D054410AD1FCC684B5504189FD073C02D054411ED78BB885B550412CC824E601D05441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000030B71E78B4B55041E5ECE10EF2CF54413C0AA1EEB8B55041D72661BFF0CF5441D9B1F01BC4B550413C1E2980EDCF5441DF55CB57D5B550411CB87D20ECCF5441D12E76CFE1B5504189DC048CE8CF544142E49975DEB55041A975327EDFCF544131A9CC7BDDB55041BE7BF250DDCF54416C8F64F8DCB55041C2E79E30DCCF54414997C400DCB55041A7214B11DACF5441E9C98400C6B550418EE73355E1CF5441E8293A32A4B5504135290387ECCF5441BE0883227DB5504136915976F9CF5441588D082583B5504103183F3D02D05441D1E4458383B55041AC5D8BC502D054415551D95884B550416E5FD16A02D0544190D84DB884B55041EA62AC4102D05441D03540C184B55041D6D9773E02D054410CD1FCC684B5504185FD073C02D054410169605485B550412B72C20902D05441A0C7E26386B5504102697DA801D0544105B56D3788B55041A66FA70001D05441B9AA2C3B89B550414D73BEA400D0544192B544C389B550417395197400D05441ADD498088DB550414E38A648FFCF54415A852A5B8FB55041340C0474FECF5441E6662CE48FB550418F8BAC42FECF5441E1453E5290B550417D90A71BFECF544131DFECF795B55041A10AA416FCCF54415F1687CB97B550415AA80C6EFBCF54415F0A91F898B550418EAC7C03FBCF5441A6A3D67F99B5504142B560D3FACF54411B1E6F2F9BB5504153220739FACF54417D9345CA9BB55041DEA72E06FACF544199DA0EAA9DB55041E9BCE367F9CF544183EB1D859EB550419F0AB220F9CF54411D8F7A839FB5504199092BCDF8CF544145CB8D64A0B5504103084283F8CF544164B3C283A1B55041CCC93424F8CF54411EEB354DA2B550413EF6CAE2F7CF544113CA8ED5A5B5504104C2D2B9F6CF544119844329A6B5504157D9EB9DF6CF544112501FF2A6B55041E2C1605CF6CF5441BBCEAB39A9B55041078FC09CF5CF5441BB551FB8AAB5504197E84B1EF5CF5441684F7602ACB550416193AFB2F4CF54410AD7A3D0B0B55041EC51B81EF3CF544130B71E78B4B55041E5ECE10EF2CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>727355 - 55675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000713D0AD76EB850410AD7A3D0B34055417B14AE5773B85041295C8FB2BB405541F6285C9F74B85041D7A3707DBD4055418FC2F51878B85041A4703DEABF40554148E17AA480B85041713D0A17B4405541A4703D6A80B85041B81E854BB3405541333333337CB85041B81E857BB2405541F6285CFF6FB85041CDCCCC1CB040554148E17A746DB8504114AE4771AF405541713D0AD76EB850410AD7A3D0B3405541
+</a>
+
+<b>
+01060000000100000001030000000100000023000000333333337CB85041B81E857BB2405541DA278DBD79B850412A633A01B24055416CC4748C76B8504192A08762B14055411406743E71B85041B66BC65AB0405541AB7564A770B8504177886F3DB0405541F6285CFF6FB85041CDCCCC1CB0405541D82352856FB85041E2E5A3FCAF405541C89728C56EB850411E6800CAAF4055410E308D5C6EB850415F7E6FAEAF4055414D9A98876DB850414B465176AF405541ECF63FC26DB850415273CD66B0405541205457FE6DB850417C578324B14055417F1E75606EB850413034455AB24055419FBA18BC6EB85041B11F947BB3405541D482A0CF6EB8504162A23CB9B34055413EDBEDDC6FB8504170B3209BB54055412B6C1B4A70B850411CD7435AB6405541BF9B89A672B85041670F707CBA405541FD2688C072B850417221F2A9BA40554191DF267873B850418F8408E0BB405541F3E48D9273B8504199C90105BC405541BAC949BB73B8504179E90C3EBC405541E0BC0BDA73B850417A841F69BC405541665C4E4074B85041DFD053F8BC40554121A3A76B74B850416C560835BD4055410F91A8B574B850414F34008DBD405541D35E2E5775B85041A3D2B7FDBD4055410E1B88AD75B850419520FA39BE405541BBFC1CE275B850412DB1AB5EBE4055415254371B77B8504193BC2A39BF405541B92BF1AE77B85041B89A41A0BF4055418295321C78B85041D0A379DFBF40554192E784A180B850411A2A231BB4405541992CD06780B85041C35C0D4BB3405541333333337CB85041B81E857BB2405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107288 - 45238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000040000000103000000030000002C000000C3F528BCB627514114AE47F15E425541C3F5280CB72751418FC2F5285E425541B81E853BB727514152B81E655D425541B81E853BB72751419A9999695C425541666666A6B6275141F6285C5F5B425541295C8FC2B52751413D0AD7735A425541295C8F32B4275141AE47E10A59425541C3F5284CB22751410AD7A3D0574255419A9999F9B02751418FC2F558574255419A999999AF27514185EB5128574255418FC2F528AE2751419A99990957425541713D0A07AD2751413333334357425541F6285C2FAC27514152B81E6558425541F6285C2FAB2751410AD7A340584255418FC2F578A927514152B81E65584255415C8FC245A8275141C3F5281C5842554152B81E95A5275141CDCCCC4C58425541E17A149EA527514148E17A14594255410AD7A390A6275141000000505A42554100000030A7275141333333735B4255413D0AD703A82751419A9999895D425541E17A144EA9275141CDCCCC7C5F425541333333B3A9275141E17A149E60425541000000B0AB275141E17A14AE634255418FC2F5F8AB275141AE47E1FA624255419A999959AC275141EC51B81E624255417B14AE47AD275141295C8FC260425541C3F528ECAC27514148E17A546042554133333383AC27514185EB51486042554148E17AD4AB2751413D0AD72361425541E17A148EAA2751416666663660425541A4703D8AAC275141AE47E17A5D4255411F85EBF1AB2751418FC2F5E85C42554152B81EA5AE2751413D0AD7335A425541713D0A07B02751410AD7A3D058425541AE47E17AB1275141333333435A425541D7A370FDB1275141000000C05942554100000060B2275141CDCCCC5C594255419A999949B6275141000000A05D425541333333A3B5275141F6285C5F5E425541E17A141EB527514152B81EE55E42554148E17AA4B5275141D7A3705D5F4255413D0AD733B627514148E17A645F425541C3F528BCB627514114AE47F15E4255410D0000007B14AE37AD27514114AE479159425541713D0A07AD2751410AD7A3605942554185EB51F8AC27514166666626594255415C8FC205AD2751417B14AEE75842554133333333AD2751417B14AEB758425541295C8F72AD2751415C8FC2A558425541CDCCCCACAD275141000000B0584255410AD7A3E0AD275141EC51B8DE58425541333333F3AD2751410000002059425541713D0AE7AD275141EC51B85E594255410AD7A3B0AD275141295C8F92594255418FC2F578AD2751410AD7A3A0594255417B14AE37AD27514114AE47915942554107000000D7A370FDAA275141D7A3702D5C42554148E17A84AA2751410AD7A3B05B42554185EB51A8AA2751419A9999095B425541F6285C4FAB275141E17A14CE5A425541333333D3AB27514148E17A445B425541F6285CCFAB275141B81E85DB5B425541D7A370FDAA275141D7A3702D5C425541010300000001000000170000003D0AD763AE2751410AD7A350614255413D0AD7C3AD2751410AD7A39061425541A4703D7AAD275141A4703DFA614255410AD7A3F0AC2751413D0AD7A362425541713D0A67AC27514148E17A84634255413D0AD713AC275141C3F5282C64425541713D0AF7AB275141F6285C5F654255419A9999D9AB2751418FC2F55866425541B81E856BAB275141EC51B8AE6742554100000000AB2751411F85EBA1684255419A999989AA2751410AD7A350694255415C8FC215AA2751415C8FC2156A42554148E17A74AA275141666666466A42554185EB51C8AA2751418FC2F5C869425541CDCCCC7CAB275141EC51B83E69425541D7A3708DAC275141CDCCCC9C6842554148E17A34AE275141AE47E17A674255417B14AEF7AE2751416666660667425541E17A148EAC275141E17A140E644255418FC2F598AE2751410AD7A36062425541713D0A97AF2751419A999979614255418FC2F508AF2751419A999939614255413D0AD763AE2751410AD7A3506142554101030000000200000062000000AE47E15AD3275141C3F5283C564255418FC2F5B8D327514148E17A3455425541B81E851BD527514114AE4771544255419A999969D62751413D0AD74353425541AE47E18AD7275141A4703D2A52425541AE47E17AD82751415C8FC2D5504255415C8FC2E5D9275141D7A3708D4F4255419A9999E9DA275141E17A14FE4D425541EC51B86EDB275141F6285C5F4C4255411F85EBF1DB2751417B14AE174B425541AE47E17ADC275141EC51B85E4A4255410AD7A390DD275141D7A370ED494255413D0AD743DF2751415C8FC29549425541295C8F22E12751419A9999F948425541A4703D1AE2275141B81E854B48425541AE47E1BAE32751411F85EB9146425541F6285C0FE427514152B81E454542554114AE4701E4275141C3F5286C44425541AE47E11AE42751418FC2F5A8434255419A9999E9E42751415C8FC27543425541C3F5282CE6275141713D0A074342554114AE47A1E8275141D7A3703D44425541EC51B86EE9275141F6285CEF444255415C8FC295EA27514114AE47F14442554148E17A94EE2751419A999989434255415C8FC275EF2751417B14AEB742425541D7A370CDEF275141AE47E18A4142554166666696EF275141295C8F823F42554100000080EF275141F6285CEF3E425541F6285CFFEF275141B81E858B3E425541E17A14BEF127514152B81E753D4255418FC2F5F8F2275141C3F5286C3C4255418FC2F5C8F327514148E17A543B425541D7A370ADF4275141295C8F423842554133333323F527514114AE479134425541713D0A87F5275141F6285C4F3342554114AE4751F627514185EB515832425541295C8F82F7275141295C8FA23142554133333343F9275141AE47E17A3142554148E17A54FC2751419A999999314255415C8FC2C5FD2751419A999949314255411F85EBD1FE27514114AE478130425541F6285CCFFF27514185EB51582F42554114AE476100285141E17A147E2D4255415C8FC21501285141D7A370ED2842554114AE47710128514152B81ED527425541A4703D2A02285141713D0AC72642554114AE4701032851411F85EBC125425541713D0AD700285141000000902342554148E17A64FE275141CDCCCC9C2642554114AE4791F8275141B81E851B2D4255410AD7A370F4275141333333332F4255410AD7A3F0E92751410AD7A350354255417B14AEE7DF275141333333133D425541295C8FB2D527514152B81E3532425541295C8F12C3275141713D0A1742425541F6285C5FC2275141666666A6424255413D0AD7A3C3275141B81E850B474255419A999969C52751419A9999594B42554185EB51E8C6275141CDCCCCCC4C42554114AE4781C82751413D0AD7B34A4255413D0AD743C92751417B14AE174C4255415C8FC245C7275141F6285C4F4E4255411F85EB91C52751411F85EBF14F4255417B14AE27C42751419A99993952425541666666E6C1275141CDCCCC6C5442554185EB51E8C02751417B14AEA7544255410AD7A3E0BF275141CDCCCC1C53425541C3F5283CBE2751418FC2F5E8544255417B14AE37BD27514148E17AF45742554185EB5178B4275141295C8F72624255411F85EB31B827514114AE4741654255415C8FC2F5B7275141333333836542554114AE4731BC2751415C8FC2C5684255419A9999B9BE2751418FC2F5B86A42554100000040C127514114AE477169425541EC51B83EC227514114AE47F16842554114AE4701C7275141E17A14DE66425541AE47E17AC7275141F6285C9F664255411F85EB01C8275141295C8F0266425541295C8F42C82751410AD7A33065425541B81E855BC8275141CDCCCC7C64425541A4703D5AC8275141F6285CBF6342554166666636C8275141CDCCCC1C6342554100000000C8275141B81E856B62425541000000A0C7275141E17A144E614255418FC2F548C727514152B81E15604255418FC2F508C727514185EB51385F425541E17A14EEC6275141EC51B86E5E425541E17A14EEC627514185EB51C85D4255418FC2F518C72751417B14AE075D425541295C8F72C727514148E17A345C42554133333333C8275141AE47E1CA5A4255415C8FC2C5C92751413D0AD7E358425541AE47E1DACB275141713D0AA758425541AE47E1FACD275141D7A3706D5842554148E17AE4D0275141D7A3709D57425541AE47E15AD3275141C3F5283C5642554107000000C3F528CCEC2751416666660635425541E17A149EEC275141A4703DFA35425541C3F528FCEA275141000000103742554100000020EA27514152B81E853642554114AE4771EA275141713D0AD735425541B81E85FBEB2751413D0AD7E334425541C3F528CCEC2751416666660635425541010300000001000000110000003D0AD723B7275141A4703DCA5A425541000000E0B7275141CDCCCCDC5B425541F6285C0FB827514185EB51B85C42554185EB51E8B7275141D7A3704D5D425541F6285CAFB9275141EC51B86E5B42554185EB5108BB275141713D0AC7594255413D0AD703BC27514148E17AA458425541EC51B8FEBC275141B81E853B57425541E17A142EBD275141F6285C6F56425541EC51B8FEBC2751411F85EB0156425541295C8F32BC2751418FC2F5385642554148E17AE4BB275141F6285CBF56425541AE47E14ABC275141CDCCCC1C5742554166666676BA275141F6285C7F5942554152B81EE5B8275141F6285CCF5A425541D7A3703DB82751415C8FC2055A4255413D0AD723B7275141A4703DCA5A425541
+</a>
+
+<b>
+01060000000100000001030000000100000020000000ADFBFB7000285141EC8A850F244255415B7F5872FF2751414394AD4C25425541F66A63A9FE275141931EB915274255417B05D490FB27514159F1AFC3294255412FB29DD4FA275141E17A57072B425541570366B0F8275141D97CD2F82C42554114AE4791F8275141B81E851B2D4255416AC02681F82751411958B2232D425541F9233B61FA2751415A5E092F2E425541560764970128514104BB42F525425541B25C3C3D00285141C8F343D12B42554146407756FF275141CE7ACE152F4255416158D451FD275141CA05B762314255413585F0E6FD2751414078D030314255419B9D657CFE275141D5CA2AC130425541C744FB83FE275141575880BB30425541BAF5FD32FF2751412DFE890F30425541C79699D7FF2751419E468A3D2F4255411B6D2A30002851410B8EB31D2E425541CBAB0B8F00285141495CBD552C425541BFF1A08F002851412DCAF6512C4255415C8FC21501285141D7A370ED2842554114AE47710128514152B81ED527425541A4703D2A02285141713D0AC72642554114AE4701032851411F85EBC125425541B95DEFB9042851418586379C254255417B14AE5705285141EC51B88E25425541333333F3082851410AD7A370254255416BA2A31E062851413A8ED86723425541AFDD9D780428514192C7873822425541A4703DDA02285141EC51B80E21425541ADFBFB7000285141EC8A850F24425541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107288 - 82820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000040000000103000000030000002C000000C3F528BCB627514114AE47F15E425541C3F5280CB72751418FC2F5285E425541B81E853BB727514152B81E655D425541B81E853BB72751419A9999695C425541666666A6B6275141F6285C5F5B425541295C8FC2B52751413D0AD7735A425541295C8F32B4275141AE47E10A59425541C3F5284CB22751410AD7A3D0574255419A9999F9B02751418FC2F558574255419A999999AF27514185EB5128574255418FC2F528AE2751419A99990957425541713D0A07AD2751413333334357425541F6285C2FAC27514152B81E6558425541F6285C2FAB2751410AD7A340584255418FC2F578A927514152B81E65584255415C8FC245A8275141C3F5281C5842554152B81E95A5275141CDCCCC4C58425541E17A149EA527514148E17A14594255410AD7A390A6275141000000505A42554100000030A7275141333333735B4255413D0AD703A82751419A9999895D425541E17A144EA9275141CDCCCC7C5F425541333333B3A9275141E17A149E60425541000000B0AB275141E17A14AE634255418FC2F5F8AB275141AE47E1FA624255419A999959AC275141EC51B81E624255417B14AE47AD275141295C8FC260425541C3F528ECAC27514148E17A546042554133333383AC27514185EB51486042554148E17AD4AB2751413D0AD72361425541E17A148EAA2751416666663660425541A4703D8AAC275141AE47E17A5D4255411F85EBF1AB2751418FC2F5E85C42554152B81EA5AE2751413D0AD7335A425541713D0A07B02751410AD7A3D058425541AE47E17AB1275141333333435A425541D7A370FDB1275141000000C05942554100000060B2275141CDCCCC5C594255419A999949B6275141000000A05D425541333333A3B5275141F6285C5F5E425541E17A141EB527514152B81EE55E42554148E17AA4B5275141D7A3705D5F4255413D0AD733B627514148E17A645F425541C3F528BCB627514114AE47F15E4255410D0000007B14AE37AD27514114AE479159425541713D0A07AD2751410AD7A3605942554185EB51F8AC27514166666626594255415C8FC205AD2751417B14AEE75842554133333333AD2751417B14AEB758425541295C8F72AD2751415C8FC2A558425541CDCCCCACAD275141000000B0584255410AD7A3E0AD275141EC51B8DE58425541333333F3AD2751410000002059425541713D0AE7AD275141EC51B85E594255410AD7A3B0AD275141295C8F92594255418FC2F578AD2751410AD7A3A0594255417B14AE37AD27514114AE47915942554107000000D7A370FDAA275141D7A3702D5C42554148E17A84AA2751410AD7A3B05B42554185EB51A8AA2751419A9999095B425541F6285C4FAB275141E17A14CE5A425541333333D3AB27514148E17A445B425541F6285CCFAB275141B81E85DB5B425541D7A370FDAA275141D7A3702D5C425541010300000001000000170000003D0AD763AE2751410AD7A350614255413D0AD7C3AD2751410AD7A39061425541A4703D7AAD275141A4703DFA614255410AD7A3F0AC2751413D0AD7A362425541713D0A67AC27514148E17A84634255413D0AD713AC275141C3F5282C64425541713D0AF7AB275141F6285C5F654255419A9999D9AB2751418FC2F55866425541B81E856BAB275141EC51B8AE6742554100000000AB2751411F85EBA1684255419A999989AA2751410AD7A350694255415C8FC215AA2751415C8FC2156A42554148E17A74AA275141666666466A42554185EB51C8AA2751418FC2F5C869425541CDCCCC7CAB275141EC51B83E69425541D7A3708DAC275141CDCCCC9C6842554148E17A34AE275141AE47E17A674255417B14AEF7AE2751416666660667425541E17A148EAC275141E17A140E644255418FC2F598AE2751410AD7A36062425541713D0A97AF2751419A999979614255418FC2F508AF2751419A999939614255413D0AD763AE2751410AD7A3506142554101030000000200000062000000AE47E15AD3275141C3F5283C564255418FC2F5B8D327514148E17A3455425541B81E851BD527514114AE4771544255419A999969D62751413D0AD74353425541AE47E18AD7275141A4703D2A52425541AE47E17AD82751415C8FC2D5504255415C8FC2E5D9275141D7A3708D4F4255419A9999E9DA275141E17A14FE4D425541EC51B86EDB275141F6285C5F4C4255411F85EBF1DB2751417B14AE174B425541AE47E17ADC275141EC51B85E4A4255410AD7A390DD275141D7A370ED494255413D0AD743DF2751415C8FC29549425541295C8F22E12751419A9999F948425541A4703D1AE2275141B81E854B48425541AE47E1BAE32751411F85EB9146425541F6285C0FE427514152B81E454542554114AE4701E4275141C3F5286C44425541AE47E11AE42751418FC2F5A8434255419A9999E9E42751415C8FC27543425541C3F5282CE6275141713D0A074342554114AE47A1E8275141D7A3703D44425541EC51B86EE9275141F6285CEF444255415C8FC295EA27514114AE47F14442554148E17A94EE2751419A999989434255415C8FC275EF2751417B14AEB742425541D7A370CDEF275141AE47E18A4142554166666696EF275141295C8F823F42554100000080EF275141F6285CEF3E425541F6285CFFEF275141B81E858B3E425541E17A14BEF127514152B81E753D4255418FC2F5F8F2275141C3F5286C3C4255418FC2F5C8F327514148E17A543B425541D7A370ADF4275141295C8F423842554133333323F527514114AE479134425541713D0A87F5275141F6285C4F3342554114AE4751F627514185EB515832425541295C8F82F7275141295C8FA23142554133333343F9275141AE47E17A3142554148E17A54FC2751419A999999314255415C8FC2C5FD2751419A999949314255411F85EBD1FE27514114AE478130425541F6285CCFFF27514185EB51582F42554114AE476100285141E17A147E2D4255415C8FC21501285141D7A370ED2842554114AE47710128514152B81ED527425541A4703D2A02285141713D0AC72642554114AE4701032851411F85EBC125425541713D0AD700285141000000902342554148E17A64FE275141CDCCCC9C2642554114AE4791F8275141B81E851B2D4255410AD7A370F4275141333333332F4255410AD7A3F0E92751410AD7A350354255417B14AEE7DF275141333333133D425541295C8FB2D527514152B81E3532425541295C8F12C3275141713D0A1742425541F6285C5FC2275141666666A6424255413D0AD7A3C3275141B81E850B474255419A999969C52751419A9999594B42554185EB51E8C6275141CDCCCCCC4C42554114AE4781C82751413D0AD7B34A4255413D0AD743C92751417B14AE174C4255415C8FC245C7275141F6285C4F4E4255411F85EB91C52751411F85EBF14F4255417B14AE27C42751419A99993952425541666666E6C1275141CDCCCC6C5442554185EB51E8C02751417B14AEA7544255410AD7A3E0BF275141CDCCCC1C53425541C3F5283CBE2751418FC2F5E8544255417B14AE37BD27514148E17AF45742554185EB5178B4275141295C8F72624255411F85EB31B827514114AE4741654255415C8FC2F5B7275141333333836542554114AE4731BC2751415C8FC2C5684255419A9999B9BE2751418FC2F5B86A42554100000040C127514114AE477169425541EC51B83EC227514114AE47F16842554114AE4701C7275141E17A14DE66425541AE47E17AC7275141F6285C9F664255411F85EB01C8275141295C8F0266425541295C8F42C82751410AD7A33065425541B81E855BC8275141CDCCCC7C64425541A4703D5AC8275141F6285CBF6342554166666636C8275141CDCCCC1C6342554100000000C8275141B81E856B62425541000000A0C7275141E17A144E614255418FC2F548C727514152B81E15604255418FC2F508C727514185EB51385F425541E17A14EEC6275141EC51B86E5E425541E17A14EEC627514185EB51C85D4255418FC2F518C72751417B14AE075D425541295C8F72C727514148E17A345C42554133333333C8275141AE47E1CA5A4255415C8FC2C5C92751413D0AD7E358425541AE47E1DACB275141713D0AA758425541AE47E1FACD275141D7A3706D5842554148E17AE4D0275141D7A3709D57425541AE47E15AD3275141C3F5283C5642554107000000C3F528CCEC2751416666660635425541E17A149EEC275141A4703DFA35425541C3F528FCEA275141000000103742554100000020EA27514152B81E853642554114AE4771EA275141713D0AD735425541B81E85FBEB2751413D0AD7E334425541C3F528CCEC2751416666660635425541010300000001000000110000003D0AD723B7275141A4703DCA5A425541000000E0B7275141CDCCCCDC5B425541F6285C0FB827514185EB51B85C42554185EB51E8B7275141D7A3704D5D425541F6285CAFB9275141EC51B86E5B42554185EB5108BB275141713D0AC7594255413D0AD703BC27514148E17AA458425541EC51B8FEBC275141B81E853B57425541E17A142EBD275141F6285C6F56425541EC51B8FEBC2751411F85EB0156425541295C8F32BC2751418FC2F5385642554148E17AE4BB275141F6285CBF56425541AE47E14ABC275141CDCCCC1C5742554166666676BA275141F6285C7F5942554152B81EE5B8275141F6285CCF5A425541D7A3703DB82751415C8FC2055A4255413D0AD723B7275141A4703DCA5A425541
+</a>
+
+<b>
+01060000000100000001030000000100000020000000ADFBFB7000285141EC8A850F244255415B7F5872FF2751414394AD4C25425541F66A63A9FE275141931EB915274255417B05D490FB27514159F1AFC3294255412FB29DD4FA275141E17A57072B425541570366B0F8275141D97CD2F82C42554114AE4791F8275141B81E851B2D4255416AC02681F82751411958B2232D425541F9233B61FA2751415A5E092F2E425541560764970128514104BB42F525425541B25C3C3D00285141C8F343D12B42554146407756FF275141CE7ACE152F4255416158D451FD275141CA05B762314255413585F0E6FD2751414078D030314255419B9D657CFE275141D5CA2AC130425541C744FB83FE275141575880BB30425541BAF5FD32FF2751412DFE890F30425541C79699D7FF2751419E468A3D2F4255411B6D2A30002851410B8EB31D2E425541CBAB0B8F00285141495CBD552C425541BFF1A08F002851412DCAF6512C4255415C8FC21501285141D7A370ED2842554114AE47710128514152B81ED527425541A4703D2A02285141713D0AC72642554114AE4701032851411F85EBC125425541B95DEFB9042851418586379C254255417B14AE5705285141EC51B88E25425541333333F3082851410AD7A370254255416BA2A31E062851413A8ED86723425541AFDD9D780428514192C7873822425541A4703DDA02285141EC51B80E21425541ADFBFB7000285141EC8A850F24425541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641473 - 2908680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC235330A5141B81E854BC1E2544133333303380A51417B14AE47ABE25441F6285C5F380A514185EB5118A8E254419A999989330A51410AD7A310A9E254411F85EB81300A5141A4703D7AA9E2544114AE47E12B0A514185EB5148A9E254413D0AD7A3270A51413D0AD7C3A8E25441BD853D93270A514166DC71C3A8E25441F002E2B2240A5141CF4AC4B1A8E25441B8E8B6F6220A51417EF44CADA8E25441C339FBDC220A5141F162AE68B0E254417AEE33CB220A5141786949BDB5E2544161E46EC5220A5141BEDEDBDFB9E254411E4E38C2220A5141AB1840DDBBE254415932FEC1220A514117DEEE0DBCE25441593E4FE7220A514100507F51BEE254411A8AC45F230A51412E9855A0C5E254414FF13B67230A51415A76A712C6E25441D3A0EF70230A51415C5A5257C6E2544104F17E93240A51411265D45FCEE25441AE47E10A250A5141CDCCCCACD1E25441F6285C1F260A514114AE47F1D1E25441FE3D8C97260A5141B82935CFD3E2544188DB19B1270A51417347CE2ED8E25441EE70F58D290A51412415D47DDFE2544110F039FB290A51415D7D6725E1E25441C81262202A0A5141719FD9D6E1E2544114AE47112B0A5141A4703DBAE6E2544110E9875C2D0A514137C3F73DDCE254419ACFAEDF2E0A5141EB549B55D5E254415C8FC235330A5141B81E854BC1E25441
+</a>
+
+<b>
+010600000001000000010300000001000000250000004C7601A4270A514181E393C4A8E2544134A2DE5E270A5141B8DD29C2A8E254415D27CA70250A5141E9105DB5A8E25441868359B3240A5141D56215B4A8E25441CA8D30F7220A51418B819A9FA8E25441658D14F6220A5141A61FC7F3A8E25441EF0C06ED220A5141B173F3A2ABE25441290204E8220A514181812987ADE25441DAB1EFDD220A514167D76627B0E25441F615CBD4220A514150FCE4E3B2E2544128E419CD220A51414668A338B5E254411AC8B6CB220A5141282DEA84B6E254410B26EFC7220A5141852C90CAB8E25441B53A1CC4220A51410798B17BBBE25441644092C4220A5141338CECE8BBE254415618B42E230A514161D6C7A4C2E25441FE53F34D230A5141A9629D8BC4E254418FD7AD70230A514132BC8055C6E2544184B4E490230A514193EB8139C7E25441D6AB5230240A514150B8E8A1CBE254419B2CD779240A51419C6B3FAACDE25441296D6AF7240A514136700923D1E25441AE47E10A250A5141CDCCCCACD1E25441F6285C1F260A514114AE47F1D1E25441BFDA1979260A514187BA2256D3E25441E08711BA270A5141F5097752D8E254410528EE8B280A514158884D8FDBE254411B3CBF1F290A5141FFAF97D2DDE25441713D0A072A0A514133333353E1E2544114AE47112B0A5141A4703DBAE6E25441000000202C0A514148E17AE4E1E254418AAE84ED2D0A5141C11B64A7D9E25441B8E27DF72E0A5141ABD130E7D4E254412820D3E32F0A5141879526A2D0E25441A2E9BF39300A5141434E670CCFE25441D84F52B42E0A5141BC9B9436C8E254414C7601A4270A514181E393C4A8E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641473 - 3624617
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC235330A5141B81E854BC1E2544133333303380A51417B14AE47ABE25441F6285C5F380A514185EB5118A8E254419A999989330A51410AD7A310A9E254411F85EB81300A5141A4703D7AA9E2544114AE47E12B0A514185EB5148A9E254413D0AD7A3270A51413D0AD7C3A8E25441BD853D93270A514166DC71C3A8E25441F002E2B2240A5141CF4AC4B1A8E25441B8E8B6F6220A51417EF44CADA8E25441C339FBDC220A5141F162AE68B0E254417AEE33CB220A5141786949BDB5E2544161E46EC5220A5141BEDEDBDFB9E254411E4E38C2220A5141AB1840DDBBE254415932FEC1220A514117DEEE0DBCE25441593E4FE7220A514100507F51BEE254411A8AC45F230A51412E9855A0C5E254414FF13B67230A51415A76A712C6E25441D3A0EF70230A51415C5A5257C6E2544104F17E93240A51411265D45FCEE25441AE47E10A250A5141CDCCCCACD1E25441F6285C1F260A514114AE47F1D1E25441FE3D8C97260A5141B82935CFD3E2544188DB19B1270A51417347CE2ED8E25441EE70F58D290A51412415D47DDFE2544110F039FB290A51415D7D6725E1E25441C81262202A0A5141719FD9D6E1E2544114AE47112B0A5141A4703DBAE6E2544110E9875C2D0A514137C3F73DDCE254419ACFAEDF2E0A5141EB549B55D5E254415C8FC235330A5141B81E854BC1E25441
+</a>
+
+<b>
+010600000001000000010300000001000000250000004C7601A4270A514181E393C4A8E2544134A2DE5E270A5141B8DD29C2A8E254415D27CA70250A5141E9105DB5A8E25441868359B3240A5141D56215B4A8E25441CA8D30F7220A51418B819A9FA8E25441658D14F6220A5141A61FC7F3A8E25441EF0C06ED220A5141B173F3A2ABE25441290204E8220A514181812987ADE25441DAB1EFDD220A514167D76627B0E25441F615CBD4220A514150FCE4E3B2E2544128E419CD220A51414668A338B5E254411AC8B6CB220A5141282DEA84B6E254410B26EFC7220A5141852C90CAB8E25441B53A1CC4220A51410798B17BBBE25441644092C4220A5141338CECE8BBE254415618B42E230A514161D6C7A4C2E25441FE53F34D230A5141A9629D8BC4E254418FD7AD70230A514132BC8055C6E2544184B4E490230A514193EB8139C7E25441D6AB5230240A514150B8E8A1CBE254419B2CD779240A51419C6B3FAACDE25441296D6AF7240A514136700923D1E25441AE47E10A250A5141CDCCCCACD1E25441F6285C1F260A514114AE47F1D1E25441BFDA1979260A514187BA2256D3E25441E08711BA270A5141F5097752D8E254410528EE8B280A514158884D8FDBE254411B3CBF1F290A5141FFAF97D2DDE25441713D0A072A0A514133333353E1E2544114AE47112B0A5141A4703DBAE6E25441000000202C0A514148E17AE4E1E254418AAE84ED2D0A5141C11B64A7D9E25441B8E27DF72E0A5141ABD130E7D4E254412820D3E32F0A5141879526A2D0E25441A2E9BF39300A5141434E670CCFE25441D84F52B42E0A5141BC9B9436C8E254414C7601A4270A514181E393C4A8E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971727 - 403942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000C000000010300000001000000EB0000001508528B1EA35041EDB842CB93475541F3AE5BB21BA35041A01A4E5299475541037484C61AA35041D3386D3F9B47554181E8CBAF19A350419D4830AD9D47554153B2185B17A35041987AA719A24755412685E09B15A35041CA43D5AEA5475541E18504A013A3504153428DA6A94755418D6BD17012A350410417922CAD47554194CFDB9A10A35041BA5930C5B2475541B3EEDB1F0FA350419D76C43DB7475541046D19790EA3504192E0B4FEB9475541EBC8D1FF0DA350412E2CC93EBC4755414BB5A86B0FA3504180FD4877BE475541688BF5F90EA35041939DE79EBF475541EBC8D1FF0DA35041A1C2CDBAC2475541BF6D3D7D0CA3504187116748C6475541DDA3EBE30AA35041010C76EECA475541E2BE42170AA3504152DDF526CD475541B15F054309A350412EA39E6ECF475541A9A8B83908A35041E47B4C46D24755416F922E5C06A3504141A00E5ED74755413765F69C04A3504108E75548DC475541C2EF2EEB01A3504143A364E4E34755416DECA99D00A3504129F2FD71E74755410D00D331FFA2504172762162EB475541DD89E77BFEA25041F7EF9165ED475541E62986A3FFA250411762D4C9EE4755417ABE4DDA00A35041C8CCE88EEF475541CB7CCFA901A3504135B20E2BF04755418039C41A02A35041CEB8B88BF04755410342C89202A35041625B1073F14755411C785ADF02A350416D6EEF34F2475541B40EFBC303A35041B96532DCF24755413D9B34EF04A350416B56CB22F3475541CE669DF005A35041AE57E60AF347554194D470D106A35041AA1498D4F24755419C5924AE06A35041A3936708F247554181DBC50107A35041BE546612F1475541AA620D3E07A350411E2FCB66F0475541DF656BCD07A35041C73788BFEF4755415538DDF807A35041C507F2FAEE4755411A123D6607A350415B6E7A44EE4755415128533206A350415FA7A299EC47554171836FDB05A35041A6E678C7EB475541E0A5CCC605A350418614AEF3EA4755411401357606A35041542DF165EA475541BA86197107A350410998ED3FEA475541BDEF2B8108A35041188748C6E947554123D2DB6C09A35041A44F1091E9475541B7D20C8B0AA350414FC40BFCE94755410075C3700BA35041DDBC698BEA475541484423130CA35041FAF7F278EA475541BF8B0A5B0BA35041E5E97F57E947554191808D6B0AA350416C4962B8E847554151C3B3E209A35041D6CFD35CE74755417426EFEB09A35041B710C1FAE5475541D7A7F72D0BA35041F32446B4E2475541C3C773AE0CA35041B93D3B86DF4755410ECC9B6D0DA3504100DABD44DE4755410211A24A0EA3504164413E9EDC4755415C3235060EA350413A257FABDB47554119CD659D0DA350415CF28F3EDA475541A44078780DA35041BE54A4F7D84755413103F8E90DA35041D626487BD8475541B40BFC610EA3504105E3DAE4D747554158E00E1D11A35041F72CBE49D44755413526E75B15A35041D9674409D64755414D85F86A19A3504176CD9E02D647554133946CFB19A3504147604508D54755411077B5F819A350414B9E004ED4475541D5B03EE619A35041E379808AD3475541BD9451131AA35041E0984A85D247554196E12A4A1AA35041CDA222C6D14755415323D3971AA35041A1116CE0D0475541FEDEFDD81AA3504115441125D0475541A1CFF0361BA350411C5E6F7FCF47554121E9B0981BA35041C7CDD7F9CE4755419F8724D71BA350411CA83C4ECE4755414C32932E1CA3504161BC0FA8CD475541B227475D1CA3504193544526CD475541E75684791CA350416C638907CC475541679DED971CA350415F8C5293CB475541A76DCB631CA35041BABCBD8FCA475541AFF27E401CA35041183077C2C9475541DE83E12F1BA350419E8F5923C94755418DFB83BD19A3504188BD8E4FC8475541EF76B78B18A3504122D04D1BC8475541585A04B916A35041EC541669C8475541B289C6A815A350413B84D858C747554183D5C13115A350417B3FC30BC647554183D5C13115A350410298F644C447554101F8460415A35041F1400B14C24755413F29281516A3504181508B56C1475541E3F2E73817A35041D2E8CA1AC14755413B6C851417A35041A37B7120C04755414EC5596417A35041B2C77837BF4755416C657CEA17A35041DE8F1D2ABE47554144CCFA9A18A35041EE42D062BD4755414A09E21719A35041C1FB0D9CBC4755414761EC3719A35041E2B566BDBB4755412F3139DB17A3504139840391B9475541C22320A318A350411820F21EB8475541A0594E3A1BA350419FA33C12B5475541C31C52D91EA35041CE509CB2B3475541970B899E23A350417B522273B3475541F1BF11A425A35041F2169DFDB34755413A1C448326A350418FAFF553B44755414D7518D326A3504140884338B44755419A94633527A35041525341D3B34755418B17CFB827A350413902807BB2475541580A567628A350417F786B06B14755410EC74AE728A350418B996F49B04755416962AC9C29A35041B0F3C231AF4755412F2908C729A3504141FFB1E2AD475541AF9C1AA229A35041335F90CBAC4755412455E75329A35041212DC0BEAB4755415185A29928A35041E4CB784DAA475541AA5846E826A350418F3BE1C7A9475541A9B1CE3126A35041FFDBD716A9475541FEAE55BA25A3504180D2D40DA8475541281D76A624A35041E55FEC9AA6475541507073EF23A35041E9EC07A0A5475541C5E2BB9A23A350411955A759A4475541EFF7533D23A350413B22B8ECA2475541CA4C4CD423A35041FEC0707BA1475541950A0B7524A35041068C47C69F475541C64A508125A350419B29E56C9E475541CF767B1426A3504120221CAC9D4755419CDC2F9526A3504112E439169D475541E1CF4F6426A35041B07C6B1C9C475541FFC8FA3326A35041FED59FA49A475541C77E9A7426A350415C310E759947554192AF86D826A35041629ACC8E984755418278766227A3504150BCEF3198475541050E4D1728A35041079CE3FE97475541BA17B3CB2AA3504197C1BB199247554110BCB10A2BA350416CE1A47491475541B8E98BE52BA35041B0F0E4DD8F475541260B6BA72CA35041D54A38C68E4755417F7104402DA3504133BEF1F88D47554182DA16502EA350413633C29B8C475541AEB0CB222FA3504123EE391D8C475541DE1CF0BB2FA350418555E1C68B47554189AC3B7030A35041CB329FC38B475541FA02E34E31A350410221023A8C4755418040AFE331A3504121DB81AB8C4755415E71E74D33A3504185A441868B475541D19B639933A35041B0549B168A47554162C7F51A35A35041B1B12057884755413E7DE16136A35041FF59B59E86475541B7B8659D37A35041D4DBB62A854755412567179C38A350417714E3F78347554165B1C36139A3504121BB60CF82475541D0568CD039A35041B110449F8147554123803EEC39A35041F40CCC968047554193A29BD739A350410CF2278C7F4755412843576F39A35041470B67867E475541BB65A4113BA35041BA1198A17C4755415623FF703DA350414EF4D4C17B4755418F81843B3FA35041F15DF1AD7C4755410D3A9DF33FA3504158BE19BF7D4755419941234241A35041C58700EA7D4755412738EDA642A3504128EFA7937D4755416D19D36243A35041D1A8042D7D47554136E84DED43A35041F14A12EC7B475541B313946844A3504185DEB0017A475541994FB1B544A350413868508677475541D4BC9F7E45A3504101131B9E754755413D47454A46A35041DB3417F1734755419392BB3F47A3504105E5708172475541A64C833F48A350414948A49A7147554141FE46C748A35041D2832910714755414F07305749A35041A58BC708704755411F15DAB749A35041BFD7CE1F6F475541BDCF86CF4AA35041407545766C4755417B57B3234BA35041D687DA0F6B4755416BDA1EA74BA350410087945F69475541F117EB3B4CA3504102E9AC9068475541B28E5BA64CA35041598CD53767475541AFE665C64CA35041F4F497C9664755418A68071A4DA3504127EF0CC9664755413DA9E5374DA35041D0E4EA5F65475541ADCB42234DA3504130BABCC3634755411A46AA2E4DA3504124DEF25E624755413F51DB174DA35041FFB5FA9260475541AF000B404DA35041855FAAC25E475541A211C7294DA350414ACCB9945D4755411C2D83DE4BA350411B0B6DEA5B475541605F867D4AA350413B5E1AEA5A475541EAE59C9B49A35041E62A2FF55947554127C7365149A35041B4E132E658475541B23A492C49A350414C0C13E25747554181A17BD648A35041648AC3B556475541F46BCEA148A35041D80BC9B9554755411EC7EA4A48A350417BF594C7544755415E97C81648A350419D24E5DB534755413B606C9A47A3504141755C0B53475541A2569EF246A35041E1D1E5C351475541D4D644F845A35041E5596ED84F4755410F83169145A350415E2C0EE44E475541FFEBDC9A45A350411900C9D74D475541472E6A0046A35041EFD5BD134D475541B57B284F46A35041D96532C14C475541A8A689B246A35041A50412A04C4755419D79E0F546A35041D13389044D4755416575043D47A35041972D027C4D475541394549F747A350418324224B4D4755413EC97EAA48A350417597DFF54C475541ECB9710849A35041F8CBBE824C475541EFC25A9849A350411C62BAB84B475541CF673EEF49A3504111007B374B4755416D7B73504AA35041E6860FB44A47554128E87C014BA35041C77D2F834A475541DE6A047248A350413A98896549475541F8F4BFF942A35041EC08147E46475541C5D6A00C41A3504186EDC26D4A475541B92B621A3BA3504134AE0B9F4F475541BFF08A2E3AA35041B2434052564755415DCBBD8138A350410E807E2C5A475541D69E421537A35041E73004F05C47554164B44C5436A3504159F793F25E475541F1E4451335A35041AF03CC286247554132BA932533A350414A77BE6666475541CACF9D6432A35041C519E8AA69475541DF3589CE31A35041ED3707986B475541A65241CD30A35041290E5A08704755411F26C6602FA35041B768B7CF75475541DD66E41D2DA350419823B92F7E4755418CA68CB52CA3504160CFF2007F4755419AA702DB2AA350418B75014981475541AB5562F725A3504160D8CEDE86475541AB4B3E2522A3504155824BC28C47554187CEE18D20A35041D0247506904755413F4AD7361FA35041518CC75E924755411508528B1EA35041EDB842CB9347554101030000000100000041000000131093FC54A35041F847E76D4847554122D475AF54A350412EC152F148475541B20AA10D54A35041FFBACB68494755416679A61153A35041A20B6AE849475541529606D958A35041EFF08B0B4D475541115E12E259A350418B592BB14A475541C07D36035BA350410CCA139F484755413F0D4E155DA35041897B2EC942475541DA8CD3965EA35041ABFC9D443E47554120FCD7B05FA35041697935D13C475541BDB34B0363A350417D367C35374755414FE301B564A350412797D29234475541DC6AD07E66A35041E93FAF7731475541320A7A2169A35041B240A4742E475541C9E117BB6AA350412A61BD922C4755414C1917B56CA35041A729BE982A4755417AC852E86FA35041A612D8BC26475541B66F45D372A35041B04BC1B022475541D526CA4E76A3504109B555531D475541585EC94878A35041D1B54A501A4755415D06B13078A350418566707D174755410CF8089A71A35041CFD74D681247554132F3305C70A35041957B872412475541642C892B6FA35041506C47BB13475541C645FD866EA35041CF67FEF21447554116AD14496EA3504110A0558815475541FE2F34C66DA350410D7552B4154755411B5688526DA3504118343EC6154755410AA5A9E26CA350411051F5C81547554172FB04BB6CA35041C9607F5A1647554177A478C46BA35041419F84C817475541F3DA571C6AA35041A9C8977C1947554157821CDE68A35041B26113AB1A475541FF8CB78767A35041614C5FC81B475541D6FC992466A3504190DC77221D475541EDD94E1665A35041D70188931E4755417697999C63A350417CE1006E2047554118FC289762A35041775EB2A721475541D16988A060A350418D19570D244755419BD8B0955FA35041B88D6D602547554122FD55DA5EA350419AFE17132647554177B4585C5EA350416E28274F27475541DED669415DA3504120E2D188294755417E5E4A8F5CA35041E4582E8C2B475541E36538D15BA35041FC5A8F242D4755419A5054285BA35041B3F0B5222E4755413AAB8BB95AA35041631DF7B62E47554116A1D8F959A350418B1CFFA62F475541D1666AF459A35041CB5E7C1D32475541C6D997B759A350418C56E29C33475541C16F077E59A350413D47A233354755418185843859A350415812C71E36475541068F06DA58A35041C2FA9E94364755418427570B57A35041408FAAAA374755415E87E87E55A3504159E06B02394755414551563255A35041C6BC31EF39475541D3F9302A55A35041210AA28E3B4755412858AB6255A35041105C82463D475541938A460E56A350414AE14DF33F475541964CE16756A35041F95C169741475541698F53E556A35041BEF909CE4347554166CDB88B56A350415D0CED0745475541A3DBFBFD55A350419C318C2B46475541E3AA0F9A55A35041E2C47C5947475541131093FC54A35041F847E76D48475541010300000001000000250000000D3C14F747A3504167D9CF9A3D4755419E39949646A3504109CCB90640475541C80A9D1145A35041C6B658F842475541B0E1EFF650A35041A3BCE2D848475541000A24E951A350413F9F2F4E4947554186D4C2BA52A35041AC9F2BD648475541CA40335A54A35041CE7F1B2B484755419F58447454A35041368C293C47475541002AEC6F54A35041793951744647554115B888DC54A3504123420ECD4547554130DD5E3F55A350417E2D189B454755415E14BBBB55A35041BA6CEEC8444755416B03FFD155A35041EA288132444755415E14BBBB55A350413EEB9A24434755416DBEF8F454A350412587FA0A4147554122BAD03554A35041D10488063F4755410A57952C54A35041F2B94D373D4755418A8359D153A350410D190DC03B4755414F4AB5FB53A35041387573A0394755415803B3CB54A35041ACF678A4384755417B54B4C155A350416663887637475541A7FDBFD756A350411B6C45CF36475541D8CAD72058A35041669A7683354755413D4D5E8C58A3504118243D5834475541F08D3CAA58A35041CAAD032D33475541F0006A6D58A35041C5EB97223147554178CC866858A350411964BDF52F475541BB39E8935AA350411751CB762C475541C3D4796853A350416288D8CE284755414B67F56951A35041057BC23A2B47554196525FB44FA3504196E0FBBE2D4755417CA64D3C4DA35041301C3E7F31475541C0BBAE4A4AA3504120F7467C354755414802873E4AA350414B3009DC37475541741CE80D4AA35041A1832C0B3A475541309FCD1A49A35041883FD4773B4755410D3C14F747A3504167D9CF9A3D4755410103000000010000001C00000056BFAFFD4AA3504187B13D504C475541852433604AA35041585C56084D475541CF4D997549A350418CD055EB4D47554189262FB348A350414696EB5D4E47554196FBCD4F48A35041E3C798924E47554168379F9647A350412B3299E44E475541B14F428C47A3504180A6562C4F4755418D10795947A350417EE4D6A24F47554103B5182B47A350414DCD4E5B5047554143FFC4F047A350417408FF9851475541B43BC75548A35041488FBA6552475541E17223D248A35041401344DA53475541EA58CA5E49A35041082A9BA4554755412A16A4E749A3504108420D5757475541B8D823594AA35041057EDCF458475541538AE7E04AA35041A09CD1B75947554107D330654CA35041484809D05A47554136D8693A4DA35041FD2E8BA15B47554144BB50794DA350416381CAC35C475541052ED3C84DA35041A0BEAB325E475541286938384EA3504104BDA07B60475541DBF97EB24EA350414260E568624755411F85EBA150A350418FC2F5C85F47554185C0404E54A350416E36D00556475541713D0A0757A35041CDCCCC1C51475541333333534DA35041CDCCCCBC4B4755419E8E0FA04BA3504133473DFE4B47554156BFAFFD4AA3504187B13D504C47554101030000000100000018000000C856401F43A35041BDAC89157E4755417CEFEF2842A350418D99C4C37E475541FB4E5FB740A35041A692C9617F47554171F6567B3FA350418DCF050C804755415839B4303CA350411F85EBD1814755411B2FDDCC33A350414E6210C88D475541C976BE3F2EA35041D9CEF7BB8E4755419A6182552BA3504152CEBE03964755416FDC1CE82AA35041FD2BAD0D994755411BEFB17E29A3504197E4E1DB9A47554121B0722828A350417F6ABC449E47554158EDF30729A3504169D57C95A347554123DBF93E2AA35041986E12FBAA475541D6D5F0E82BA350414C459500AB4755416F9079DA2CA350412B055500AB4755410C65B63630A35041F4624F60A347554138DE9B6332A35041B1BA7C589E475541DDFFB26D34A35041D61F80219A4755411379989A36A35041E73A8B989647554184D007E83BA3504137A0ED368D475541AF49ED143EA35041AC632A8B894755412257C3E53EA35041A399E1A38747554148C70FD741A350410327594F82475541C856401F43A35041BDAC89157E475541010300000001000000D1000000AC05132CDDA2504130FB8C8940485541074DA4B6DFA2504103633732414855413BDF4F8DE0A250412FDD24E641485541E3A59B4CE2A25041DBF97E5243485541D14ED964E5A250413781EFF23D485541F9FB9E8CE7A250410088E00C3A4855414443D26FE8A250411F460C6F38485541D86131D1E8A25041198E88BC374855419F428905EAA250418123E09C35485541D8BC058BEBA25041110B29EB324855419B55E171EDA250413BDE87F82F485541F77A9220EFA250417E0A59722D48554172B79485EFA250410646DEE72C4855419CB0B52BF0A25041010937B92B4855410E4ADA7CF0A25041D022803F2B48554109ED2A84F2A25041D40F28D32748554160E5D04AF3A250418D976E52264855413532401EF5A25041047E052124485541220D76A2F6A250410156C34E224855419E676292F8A2504108F222FB1F48554173D1547CFAA250413C15B0AE1D485541BE9F1AB7FDA250410E2DB2CD194855410014EB17FFA25041E9045D921748554135F37F5FFFA25041767D721E1748554173E7765900A35041CE38AA8915485541596F501C02A3504156E993AF1248554108AC1C3204A350410C022B4F0F4855412961602205A35041C94A9D050D485541EE463C6505A3504110C8AB620C4855417E25468806A3504190F95F9D0948554152B81EC508A3504114AE4729044855410EA301DE0FA35041BEB21C0EFA475541246093EF10A35041511D82EDF7475541A0C5F34412A35041B3E90A44F5475541CDCCCC4413A350413BDF4F45F347554108D029D713A350412697B7BAF0475541992E217314A35041867B8065EC475541E5D9C0E815A35041E019C87BE74755410B46E58116A350419DB1DA21E647554183F3EFDA17A350415C33FD16E44755418941606518A3504154E3A5DBE2475541A47E874D1CA3504168E6CB55DD4755416CE1C1511FA35041551D6CC2D847554162E8628820A35041B9E198ACD6475541EAA7687D23A3504125A88AEED04755413C9F45A823A35041F4A08304D04755414A741A6624A35041B143A7BFCD475541A78EBC8E25A35041A2F4FD33CA475541C49CBD8E26A3504121C5A54BC547554164E114BF26A350414631AD27BD47554122BFC4C126A35041D766A768B94755415C6130AE26A35041E1218E7EB74755411EC10F8C26A350416AACB375B7475541CAC045F425A350415EED6C8EB6475541DF4F8DFF21A35041B29DEFB7B54755415419084E21A350418D1CF5A5B64755413674775321A3504182661F42B747554131BAF6EF1FA350418720A0A5B847554107FF2CD01EA350418D9CA092B9475541F175C2A71EA35041DC926433BA4755414119595A1DA35041F318AB38BC475541A4F494541CA350413399DADABD475541F28E7C8A1BA350412D46B61DBF4755419EEFA79E1AA35041B4C87696C0475541D08BEA3618A35041B5E1CD3FC1475541A67909AB15A35041E557B9F5C1475541B34BADE715A35041A63067CDC44755418AA3BC1C16A35041F71895E7C647554147E0741E17A350410FD48A42C74755410334DB0118A35041C370A41CC747554118BDCB4719A350416B3B1ABAC647554160EEAC581AA350412AC185B2C6475541C1DA83C41BA35041A783A9ACC7475541B1BF2C911CA350410C8BD74BC847554121C75A301DA35041B02348D4C8475541550536781DA350419AA0FE9CC94755414D80829B1DA3504149173450CA4755411E015ABF1DA35041F6541A5ECB475541C0D7A7A31DA35041FEED958CCC4755417B57B5971DA35041E1768BA1CD475541DB9B8A561DA35041E0147370CE47554155D1EB841CA350416A6DD638CF475541544419481CA350411BFC564ED0475541D13B15D01BA35041BCD7FDDAD0475541DCDBEB4F1BA3504170422105D2475541D9A623331BA3504139BB9000D3475541D91951F61AA350413D11BEF8D34755411E54BFFB1AA35041EAB0E387D547554100FA207C1AA350416FB340A8D64755411AD1077219A3504192124ED1D7475541AF571E9018A350419D252D93D84755415C4170B717A35041B622FB3AD94755414BE9199116A3504186B5C890D9475541FF571F9515A35041D3621719DA4755415770C9C014A35041ACDD990CDA475541A6A3968F13A350410875B02AD94755413F1A6FED11A3504196063C48D8475541CC012DB510A35041F642E01DD8475541ADBA92780FA350417F83F883D8475541356C0AFA0EA35041165F9F10D9475541ADA0EDFE0EA35041955A5648DA475541B39750750FA350417DD739D4DB4755411A01B0900EA35041A936959DDF47554114362CA70DA35041A33482A5E0475541EEF6B0CA0CA3504191D0567CE247554132B686A60BA35041C485919DE4475541FD6CA4100BA35041A93E44C7E747554175A8284C0CA3504151EA7BDFE847554153EC64F90CA350418FF7CFA0E9475541D99C5E510DA35041111E8AACEA475541E07A9A770CA35041D8C8A264EB475541B054FAE40BA350418893A477EB475541E5963B440BA35041DC5A515AEB4755414E1BBE020AA3504144C99EECEA47554190329EFE08A35041EFE9A6A7EA475541E8D71A6708A35041357804E5EA4755419DD3F2A707A350415875D28CEB47554169A533B506A35041EBABEB61EB4755410CDCAA1907A35041AF1DB574EC475541A23D83E107A350416C212D7DED4755416ECF62F508A350411EC8F8F4EE475541DA5B041408A35041916197FBF0475541EA1FE7C607A3504104946390F1475541DDBD75ED07A350419AC3FDCCF2475541058B413008A3504191CDFC5DF3475541773BEF8107A35041945A3FB3F34755415B9C4A2506A35041B91B650DF4475541802DAD1405A35041E9EAD638F44755412FEBD3A803A35041EE40DDE0F34755417699ED9A02A350414E1B4235F34755416A1E557101A350417E34812FF2475541728963D400A35041DB32436FF14755416FAD230100A350416D695C44F1475541C9B41143FFA250410CCB9F3DF247554112C4D2DEFDA2504107DC6B07F44755412FB6DC77FCA250414719568DF5475541A64348C6FBA25041B268D924F6475541F314A4BBFAA25041287748CEF64755417CC79966F9A25041EAD0C67EF7475541497F35FAF7A25041948FB608F8475541D89BBBDEF6A25041149E25B2F847554197C43CDCF5A250416F356320F94755415BF72493F4A25041DB4DD15AFA4755414FA86BF6F2A25041C98766B0FB47554109F42EF7F1A25041B2BA551DFD475541C8D62BEEF0A2504161857E80FE475541F8C8818DF0A2504189D3E62FFF4755415A287AEFEFA25041792034F7FF475541E2069B2DEFA25041E42057CF0048554199F0EC54EEA250414C4A6A830248554168507EC8ECA25041980F2BBE04485541244437A9EBA25041F8B2A10506485541C49E6E3AEBA250411153C31C0748554176D8AB21EAA25041FED64C9108485541F2E2ABECE8A2504140DD21BA0A4855414C89A67EE7A250418DA2E2F40C4855413104A79BE6A25041AFEE37AC0E485541CBAEC9ECE5A250412A5840EE0F4855412F29E5F1E4A2504177B62EB710485541344586BEE3A25041FEE38EAB114855416BE938F7E2A250417E3CF27312485541D325EF55E2A2504176BBE8F7124855412561DB84E1A25041397C12CA134855412C13381EE1A25041C26DCA7014485541395B047EE0A250414B10225815485541D68073F2DFA250414BC65489164855412803AE57DFA25041F1F2951D1748554142934617DEA250415A7EC102184855419C808FDFDCA25041E7140761194855411EAED1ADDBA25041C1F65BC61A4855412F0005C7DAA25041EC745A3A1C485541570CB4D9D9A25041825594B71D485541FC705224D9A25041DF1C68EA1E4855417ED2DEE5D8A25041116664F91F485541D5A4040BD8A25041715DCEF021485541CEEF87FDD7A2504171D720D922485541466F631FD8A25041E4D2FCE7234855418FAF750ED8A2504111504691244855419E2DFB8ED8A250417F1AF5AA25485541C11D09D5D8A25041FA349D2D27485541BEE840B8D8A25041F6A7812828485541E655E37AD8A25041EC6220FA28485541F0F5B9FAD7A25041A1834F052A48554128FA95B3D7A25041E8DA97E52A485541DDA90861D9A250419633252E2B48554122661B3DDAA250419DAF251B2C48554127EA1A50D9A2504180EC5CD52C48554167ECACC8D8A25041A169A67E2D48554167ECACC8D8A25041EF6339D12E485541206E1A63D8A25041AC9F27CF2F485541702A2D3FD9A250418FDC5E8930485541BE24C091DAA25041FA99BA21314855410C1F53E4DBA250414C184D87314855410A5DD35ADCA250414F104E61334855419F9F77C2DBA250410A8ABCD534485541BC624008DBA250411006BDC235485541B7B17C48DAA250414D43BDC036485541F15D4EE1D9A250415A819F5637485541CE26F264D9A250415086324738485541FE184804D9A25041EAF387C93848554176A6B352D8A250412CE2EA3F39485541D0E1EB87D8A25041705D900B3A4855418B3450BFD8A25041AFDFDBBF3A4855417E5FB122D9A25041E55847433B485541193E1E67D9A25041C37857EE3B48554159C7ADFCD8A25041C7CE84E63C485541EC262147D8A25041DA5BE3E63D485541BAE6E307D9A25041A81BA6A73E485541AC05132CDDA2504130FB8C894048554101030000000100000023000000665470E3CBA25041A4C27BD1374855419A371642D7A25041D6D5511F3E48554155D1C8AFD7A2504171DCD42F3D48554135E9D9C9D7A2504189C130253C4855417572695FD7A25041C048C1293B48554167832549D7A25041733933203A485541CAD0E397D7A2504119FFA142394855413DFB5FE3D7A250412068605C38485541863DED48D8A25041FD209E953748554146278B76D8A25041838080F636485541C3C5FEB4D8A250414397892036485541F19C31B1D8A250418E27FA5535485541DB81C207D8A25041F45765523448554155B72336D7A25041829A90B033485541E19EE1FDD5A250417EA6A239334855414E72D152D5A25041BA396C17334855419DBF439BD4A250412C410E883248554163137202D5A250415E727194304855410EE941BDD5A250413D39D44E2E485541DE6919E1D5A25041DBB9BAF22C4855413C67EC6FD6A25041FEFBC2782B485541D23BF2FAD6A25041704D32B829485541A0A1A67BD7A250412D96E49E2848554135E9D9C9D7A25041EF8890DD274855415A234C11D7A250417A64FBFC27485541CDD88433D6A25041755E407E27485541BCC653B7D4A250417A64FBFC27485541A331C5FBD2A250417A64FBFC2748554108526F62D0A25041A7885DF52A4855411964A0DED1A25041B294D3F22B48554100CF1123D0A250413C62F80F2D485541F1398367CEA2504163809F892F485541CD987EAECBA250412301FADB344855415160E84CCCA250413F132B5836485541665470E3CBA25041A4C27BD1374855410103000000010000002000000065C3B9C5CBA25041161FF63A38485541C515216FCBA25041DFF83B7039485541404EB7D0CAA250418BDE4C883C48554138CB5991CAA2504147D68E1C41485541AEFD3474C9A25041E5328776434855415B6CE630C8A25041DA20D3EA454855418E6B6A00C8A25041D96FD68E474855418EEC2537CBA25041028729E14848554151D2CBBECEA25041B8BFA34E4A4855418BE5B314D1A25041381807174B48554157D7BCA8D2A250413FE897A24B48554192FD5C3BD3A2504100C88B6F4B485541426A66ECD3A250412E1D73B74A48554153A81799D4A250418622DBDF4948554160975BAFD4A250410D38C92149485541DE35CFEDD4A25041BACDC8CF484855414DCB599CD4A2504186BB086E48485541159333F0D3A2504188356C0148485541E8757CEDD3A250411171F1764748554128A68339D4A250415EB76D8D46485541E5E72B87D4A25041D8A158FB454855411BA43BE0D4A25041BC2A27C04548554139FED95FD5A25041CDDDD9F844485541BFC87831D6A25041E7DA8050444855413731A629D7A25041A8B5E12C4348554150673876D7A250410122F5764248554142EB2123D7A250411A1F9CCE41485541FAA894BDD6A250414DB7D14C414855417FCCBBD8D6A25041E42BA667404855417D24C6F8D6A25041585E4BAC3F4855410838C830D7A25041C86D057D3E48554165C3B9C5CBA25041161FF63A38485541010300000001000000310000009F32E5F2DFA2504169030FA442485541B9674451D8A25041C54A98E73E4855416AAE2C52D8A25041CBDAE6CF3F485541FC2E5130D8A25041AE171E8A404855415879BE8FD7A25041F8D7D90741485541D72D0874D8A2504162158C1141485541D56B88EAD8A25041FED33066414855414A29E482D9A25041B2D19EED4148554192A776E8D9A2504171CF0C7542485541FD64D280DAA25041DACAE88343485541D925094EDAA250410486B2A344485541F8AA511DD9A25041C483202B45485541F4F0D0B9D7A250419CC057E54548554137B5E2BBD6A250417D3B0F16474855413CDA1933D6A2504162618E354848554194993B15D6A250413C3E50AA484855416997A7B5D5A25041E382DCA049485541E09740C7D4A25041404AB0D34A485541128B1490D3A25041E67B84584C4855419F194A0ED3A250418314DDAE4C48554193F7392ED1A250412B5942554C4855410D39B262CDA25041D10BD2B54A4855411F490D15C8A25041E157B27C48485541E0D3FFEBC6A2504188E60B4248485541781CB163C6A2504105B22CB548485541CDD3B3E5C5A2504148697ACE49485541620142BAC5A25041F5654CEE4A48554151C3900DC5A25041E074DE6F4C48554133C27AD7C3A25041BB6E7E374E48554150CE29EAC2A25041524FB8B44F48554148BCA3D0C2A25041783B083351485541D22FB6ABC2A250417B1C3E38524855413898979DC2A25041A0DD6392524855416CDAD8FCC1A25041D77C664953485541FC83311EC1A2504134443A7C54485541936CB915C0A25041086E49B855485541E88C6064CCA25041316412BE5B485541AA220398CDA2504186BFEEB2564855413108AC1CD0A25041295C8FEA4C4855418D976E3AD1A2504183C0CA494D485541EE7C3FE5D0A25041560E2DBA554855414B777481D7A250418FE97F7C59485541596E25B3D9A250418140E9C354485541002854A1DBA2504183E7148350485541B7A56542DDA250416DA9E44C4D4855418275BBB4DEA250413F398A984A485541A3FAF5C4DEA25041398106E649485541643BDF9FE0A250410E2DB2D5444855419F32E5F2DFA2504169030FA4424855410103000000010000002B0000006E02E7A0AEA25041B555877974485541B0C03E53AEA2504131D2472D7548554120292045AEA250411E43F2DF75485541501B76E4ADA25041FC62028B76485541BD7B3876ADA250410AA1E420774855417B0BD030AFA25041BDA9C8C977485541141EB67CB7A250417DA155997A485541D37E1065BCA250414FFFDD777C4855416B879A47BDA250419429AEF87A48554144A7C28BC0A25041E452CF4F76485541BE17BEDAC2A25041479AAE0373485541C6F1EC4DC5A250413FCCD8836F485541B0CFB775C6A25041408EE0BF6C485541035E473EC7A250414A055BB26A485541880BA356C8A250419F77BED3674855414C270649C9A25041BB58A058654855418CCAFA62CAA25041BD96656D624855411656A244C4A25041ADF1C0855F485541A7781C22BEA250413BBA3AB05C4855416B915F5FBCA2504163A1D0ED5B4855410AEC96F0BBA250413840D71C5D48554190F51892BBA250417ED3C74A5E485541CF0B7B64BBA25041C79F071E5F4855411A0902EDBAA25041112253D25F4855412E49AFECB9A250414D1CEF2161485541DB320114B9A25041CFA4E8AE62485541081C6E23B8A25041A9863D14644855417FA9D971B7A25041F7FC763F654855419B28B647B6A25041CAD2B91B67485541A32097E7B5A25041F3258E6B6748554158A94165B5A25041B1ED5D2668485541FBF2BC0CB5A250415E88F0C468485541BDF77DDDB4A250410C8A2E8569485541A2D2A77AB4A25041BB4FC4F769485541222C15DCB3A25041ACB45C216B485541894E26C1B2A250419480A06C6C485541CB392730B2A25041A9F5BEAF6D485541C0D83380B1A250413461013A6F4855413CFC0E95B0A25041A3A4724870485541EEEFC775AFA25041C5F0C7FF7148554181E88D2DAFA250417ABD035B72485541034A1AEFAEA2504152D66D1D734855416E02E7A0AEA25041B5558779744855410103000000010000006F000000CD446CAF91A25041374831CC964855419AE9030091A250419C900E7B97485541074AC69190A250419B7D560998485541A94CF30290A2504120DD5FBA9848554149EE78CA8FA25041F1D6D83199485541610A669D8FA2504182FA39959948554173763E308FA250411E80DA799A4855414D97ECD38EA250416294D4239B485541FA27B6B18EA25041F7FA83BD9B4855416049496D8EA25041D745973C9C485541FA0D11388EA250413068DDB79C485541AA46D0F58DA25041256D70A89D485541A4DC3FBC8DA25041D20703479E485541EF1F4B4B8DA250412F6D97F89E485541145825F18CA25041061F56999F485541CE0312728CA25041E1C402B1A0485541B1F0C1288CA25041DD86476BA1485541D8D091AE8BA25041841A3421A2485541C86537458BA2504123CBD7D9A2485541087C99178BA250413EF3A855A3485541400D480D8BA25041938340DBA348554172C138068BA25041D635FB03A4485541CA805AE88AA2504171A35086A44855411DAA0C048BA25041C07BA2E2A44855415B321E708BA250414806AF67A5485541635E49038CA250414E12E840A64855413FCDE6138DA2504140D9989BA64855419A0FC07F8EA2504148BCE198A64855412E3CD02A8FA25041C5D662CBA64855417B1597868FA2504156FAC32EA748554156DDBCE08FA25041912B75DBA748554124D0439E90A2504184671D29A848554172EF8E0091A25041F3921C85A7485541A2A201D091A250414BEC775DA74855418824A32392A25041FA62AD10A848554139DD07F691A250416D13D59DA9485541EEDA757D92A25041E5C83110AC485541CA9BAC4A92A25041A204200EAD485541F456766A93A2504166BC0EF9AE4855411F12408A94A250413EF945B3AF48554114AE47E193A25041C1CAA195B048554117D9CE5F9CA25041508D972EB5485541AE7AC4179EA250417A7E8524B34855417D14C38B9FA25041830DB421B14855417BBABC18A1A25041771E0BFBAE4855417A60B6A5A2A25041B621128BAC48554187163AF9A5A25041C6EEAD2DA7485541EEE6AFD1A7A25041836E4E21A448554109C537FEA7A25041FD09D9CFA3485541AFF193AFA9A250417C81B8F2A04855415330767AABA25041BCE6D7B39D4855415A2E7A27ADA25041E0C10DC89A48554160AB84CAAEA25041DA748277974855411473B735B0A25041327E502C95485541EA9A45C9B2A2504128AAADA59048554108324C11B6A250414ADD02E28A48554120F918DAB7A250412ED78DBF874855413299E29CB9A250416BA2A8A78448554174D40FA8BAA250410B3297DE824855418CB738D1B3A25041C369BD1C804855418ACCBD4CA9A25041344FC7F97B485541F813598EA7A250412B71383D7E4855419FECA2C5A5A25041F3382F488048554167CE2193A5A25041EC6D31AD80485541CC62E211A5A25041B154F2B281485541466C64B3A4A250416951C4D28248554153CED58CA4A25041CF0E99748348554198C1F55BA4A25041AE95544184485541DD0D9E74A3A25041629E38EA84485541DCD95381A2A25041A120849E85485541C631129BA1A25041EF347E4886485541D6DB4FD4A0A25041CBEDE2D1864855419591A30EA0A250413DABB77387485541CDC15E549FA2504129B5B60488485541898938A89EA250413317F685884855418C17890E9EA25041BBA1020B8948554151C43FBF9DA25041089EB15289485541B91A9B979DA250414E2C0F90894855414B5AAF859DA250416C7FE3DF89485541F9BDCFA69DA25041D44124228A485541E3D6AAF09DA25041734F746B8A4855416E6462459EA250412BAE5EBC8A485541879AF4919EA250412C5FFEFC8A485541FA7EECD69EA250416CE6B5518B485541029172F09EA25041779755928B4855418A5C8FEB9EA25041DC3CDFD18B485541043968D09EA2504192BF260E8C485541A70FB6B49EA25041E030CD488C4855418C312E889EA25041DC90D2818C485541D936D4709EA25041843777A98C485541E1BB874D9EA2504125FBD2D38C485541044C6C139EA250418324BF378D48554156142B7F9DA25041F6568BCC8D485541DB1DAD209DA25041E81D3C278E485541A258B4379CA250410282B5F08E4855418DCA17CB9BA25041A3F6B05B8F485541B987A54D9BA25041912BB3C08F485541265B95A29AA250412692625A904855415E45CCE199A25041A35D83CD90485541A86E32F798A25041DE8E347A91485541ECBADA0F98A2504191971823924855416663690197A250416B257AD8924855417580D4FD95A250410CB2C0A5934855416D0D5B3495A25041D8A4933494485541CAD6E3CF94A25041E3141F8794485541F45EA93594A250412A0A28E694485541C6E0FE8293A2504129F76F74954855414E92760493A250412C84B2C995485541E8C96B9292A250410FFAC81C9648554102017C0892A25041D03BFC6A96485541CD446CAF91A25041374831CC964855410103000000010000005B0000004C201D3C83A250419A85EE9DB94855411475C9CC82A250414C7687E4B9485541713E526882A25041B438C826BA4855412BA4BAE281A25041C6650543BA48554173B2FD5481A25041D5B69F4ABA48554115B52AC680A250412377A644BA4855412A56CB7580A2504187F69850BA485541542415E27FA2504114D7AB7DBA485541CF731B8A7FA250416D4852B8BA485541CCB180307FA250411C0EE82ABB4855415F7E675B7FA25041C33F955FBB4855411179C1727FA25041DA2418A5BB4855415CD6717B7FA250414E5C50DABB485541BCA719777FA25041489F9E10BC485541E97E4C737FA25041A2853C3EBC4855410778F7427FA25041D74D0881BC48554164CE521B7FA25041F3C439BCBC485541C67499B37EA25041BCE9B507BD485541C3B2FE597EA25041900E3253BD485541F8C796FC7DA25041670F51B3BD48554180C05CB47DA25041CBF08240BE48554143C51D857DA250414B9846C8BE485541DDCF69567DA25041923EEF67BF485541BA6C2E4D7DA25041890C46ABBF485541DDCF69567DA250415CCA16D5BF48554123505C627DA2504151BCCA03C0485541ADDD13B77DA25041974A2841C0485541E01ED7EC7DA2504101826076C0485541C036E8067EA250416AB998ABC048554120C20BFC7DA2504166CA3D25C1485541BE0120EA7DA25041013893A7C1485541109EFFC87DA2504188C29F2CC2485541CDC5029D7DA25041713F5C68C248554110845A4F7DA2504154B572BBC2485541DF5DBABC7CA25041131B03F5C2485541322679287CA250418ECED805C3485541A9FA32AD7BA25041F24DCB11C34855414478AC417BA250412724E325C34855411137E90B7BA25041E8651674C34855412EEA0FD57AA25041A83252CFC3485541C16FA8C97AA250412A05192BC44855418EBBB7D07AA2504154CDE46DC44855418B13C2F07AA250415EC878CDC4485541F43D3E3C7BA25041A0B6DB43C54855416668BA877BA25041E31936ADC5485541DF2970C97BA2504110BEA404C648554192B19C1D7CA250419C29C03EC64855418F96797A7CA25041CCF8316AC6485541FFD27BDF7CA25041FA52ACA2C64855411A3ED6487DA250416DD4D8F6C6485541007AF3957DA250415AA22F3AC748554173A46FE17DA25041F73A8890C7485541A6E532177EA25041840D4FECC7485541E0ABA9297EA250412D659354C848554186FD43317EA2504182448B99C8485541025C567680A25041EB8056BFC94855418E716A3885A25041B94FF3B2CB485541524060DD8DA25041655B7EA4CF4855410D818A018FA25041DCB393CCCD485541B73CBB888FA2504156F07AF8CB485541CBCB8EC590A250412C49BBC0C84855415D1C112292A2504194F27DE5C648554160A529E092A2504102A2FB88C5485541F8FB66BB94A2504151B62FF2C14855418A4CE91796A25041AE537C19BF4855411D9D6B7497A250418FB832DFBC4855419636A4579AA2504124D9BE75B9485541F80C930E8FA25041EBECF906B4485541EABC5B488EA25041A4F7F0A7B3485541396356DA8CA2504112727713B44855412DCE18378BA25041F536EE25B4485541376EEFB68AA250411E980E47B44855415FDB91798AA25041A6C0DB4AB4485541294B61AD89A250417A34B855B44855417113201989A250411DD4B694B4485541269CCA9688A2504111105FE2B4485541A870841B88A25041B8410C17B5485541E5C44B9487A250410FFDA670B54855414FA9F7D286A250410D8343DDB5485541A93DB85186A25041D70E6B4AB648554136CCEDCF85A250414ED3E5D4B64855419E4FF26485A25041B2037821B7485541BEF0921485A25041939DEB5FB74855410E58AAD684A25041711AA89BB74855418357C5BE84A25041001872CBB7485541C890699484A2504166BDFB0AB8485541902C645B84A25041007AB14CB84855414065231984A25041FB23ABA4B8485541B51DF0CA83A25041C3D32FFDB8485541E40F466A83A250418B83B455B94855414C201D3C83A250419A85EE9DB9485541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007EE999B471A35041D7E4643E24475541EE64EDBA72A35041BEBD85D222475541B47AE2E669A35041007967AA1C4755418032210069A35041E173CCAA1D47554168024B6668A3504116BC8D911E475541A1AB46D967A350413778D9511F47554122A29E3267A35041065B530520475541BF8AE3CB66A35041876AAD94204755413D0AD7A367A3504114AE472121475541B0EDC68B6FA3504193CBF9A9264755417EE999B471A35041D7E4643E24475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971727 - 420792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000C000000010300000001000000EB0000001508528B1EA35041EDB842CB93475541F3AE5BB21BA35041A01A4E5299475541037484C61AA35041D3386D3F9B47554181E8CBAF19A350419D4830AD9D47554153B2185B17A35041987AA719A24755412685E09B15A35041CA43D5AEA5475541E18504A013A3504153428DA6A94755418D6BD17012A350410417922CAD47554194CFDB9A10A35041BA5930C5B2475541B3EEDB1F0FA350419D76C43DB7475541046D19790EA3504192E0B4FEB9475541EBC8D1FF0DA350412E2CC93EBC4755414BB5A86B0FA3504180FD4877BE475541688BF5F90EA35041939DE79EBF475541EBC8D1FF0DA35041A1C2CDBAC2475541BF6D3D7D0CA3504187116748C6475541DDA3EBE30AA35041010C76EECA475541E2BE42170AA3504152DDF526CD475541B15F054309A350412EA39E6ECF475541A9A8B83908A35041E47B4C46D24755416F922E5C06A3504141A00E5ED74755413765F69C04A3504108E75548DC475541C2EF2EEB01A3504143A364E4E34755416DECA99D00A3504129F2FD71E74755410D00D331FFA2504172762162EB475541DD89E77BFEA25041F7EF9165ED475541E62986A3FFA250411762D4C9EE4755417ABE4DDA00A35041C8CCE88EEF475541CB7CCFA901A3504135B20E2BF04755418039C41A02A35041CEB8B88BF04755410342C89202A35041625B1073F14755411C785ADF02A350416D6EEF34F2475541B40EFBC303A35041B96532DCF24755413D9B34EF04A350416B56CB22F3475541CE669DF005A35041AE57E60AF347554194D470D106A35041AA1498D4F24755419C5924AE06A35041A3936708F247554181DBC50107A35041BE546612F1475541AA620D3E07A350411E2FCB66F0475541DF656BCD07A35041C73788BFEF4755415538DDF807A35041C507F2FAEE4755411A123D6607A350415B6E7A44EE4755415128533206A350415FA7A299EC47554171836FDB05A35041A6E678C7EB475541E0A5CCC605A350418614AEF3EA4755411401357606A35041542DF165EA475541BA86197107A350410998ED3FEA475541BDEF2B8108A35041188748C6E947554123D2DB6C09A35041A44F1091E9475541B7D20C8B0AA350414FC40BFCE94755410075C3700BA35041DDBC698BEA475541484423130CA35041FAF7F278EA475541BF8B0A5B0BA35041E5E97F57E947554191808D6B0AA350416C4962B8E847554151C3B3E209A35041D6CFD35CE74755417426EFEB09A35041B710C1FAE5475541D7A7F72D0BA35041F32446B4E2475541C3C773AE0CA35041B93D3B86DF4755410ECC9B6D0DA3504100DABD44DE4755410211A24A0EA3504164413E9EDC4755415C3235060EA350413A257FABDB47554119CD659D0DA350415CF28F3EDA475541A44078780DA35041BE54A4F7D84755413103F8E90DA35041D626487BD8475541B40BFC610EA3504105E3DAE4D747554158E00E1D11A35041F72CBE49D44755413526E75B15A35041D9674409D64755414D85F86A19A3504176CD9E02D647554133946CFB19A3504147604508D54755411077B5F819A350414B9E004ED4475541D5B03EE619A35041E379808AD3475541BD9451131AA35041E0984A85D247554196E12A4A1AA35041CDA222C6D14755415323D3971AA35041A1116CE0D0475541FEDEFDD81AA3504115441125D0475541A1CFF0361BA350411C5E6F7FCF47554121E9B0981BA35041C7CDD7F9CE4755419F8724D71BA350411CA83C4ECE4755414C32932E1CA3504161BC0FA8CD475541B227475D1CA3504193544526CD475541E75684791CA350416C638907CC475541679DED971CA350415F8C5293CB475541A76DCB631CA35041BABCBD8FCA475541AFF27E401CA35041183077C2C9475541DE83E12F1BA350419E8F5923C94755418DFB83BD19A3504188BD8E4FC8475541EF76B78B18A3504122D04D1BC8475541585A04B916A35041EC541669C8475541B289C6A815A350413B84D858C747554183D5C13115A350417B3FC30BC647554183D5C13115A350410298F644C447554101F8460415A35041F1400B14C24755413F29281516A3504181508B56C1475541E3F2E73817A35041D2E8CA1AC14755413B6C851417A35041A37B7120C04755414EC5596417A35041B2C77837BF4755416C657CEA17A35041DE8F1D2ABE47554144CCFA9A18A35041EE42D062BD4755414A09E21719A35041C1FB0D9CBC4755414761EC3719A35041E2B566BDBB4755412F3139DB17A3504139840391B9475541C22320A318A350411820F21EB8475541A0594E3A1BA350419FA33C12B5475541C31C52D91EA35041CE509CB2B3475541970B899E23A350417B522273B3475541F1BF11A425A35041F2169DFDB34755413A1C448326A350418FAFF553B44755414D7518D326A3504140884338B44755419A94633527A35041525341D3B34755418B17CFB827A350413902807BB2475541580A567628A350417F786B06B14755410EC74AE728A350418B996F49B04755416962AC9C29A35041B0F3C231AF4755412F2908C729A3504141FFB1E2AD475541AF9C1AA229A35041335F90CBAC4755412455E75329A35041212DC0BEAB4755415185A29928A35041E4CB784DAA475541AA5846E826A350418F3BE1C7A9475541A9B1CE3126A35041FFDBD716A9475541FEAE55BA25A3504180D2D40DA8475541281D76A624A35041E55FEC9AA6475541507073EF23A35041E9EC07A0A5475541C5E2BB9A23A350411955A759A4475541EFF7533D23A350413B22B8ECA2475541CA4C4CD423A35041FEC0707BA1475541950A0B7524A35041068C47C69F475541C64A508125A350419B29E56C9E475541CF767B1426A3504120221CAC9D4755419CDC2F9526A3504112E439169D475541E1CF4F6426A35041B07C6B1C9C475541FFC8FA3326A35041FED59FA49A475541C77E9A7426A350415C310E759947554192AF86D826A35041629ACC8E984755418278766227A3504150BCEF3198475541050E4D1728A35041079CE3FE97475541BA17B3CB2AA3504197C1BB199247554110BCB10A2BA350416CE1A47491475541B8E98BE52BA35041B0F0E4DD8F475541260B6BA72CA35041D54A38C68E4755417F7104402DA3504133BEF1F88D47554182DA16502EA350413633C29B8C475541AEB0CB222FA3504123EE391D8C475541DE1CF0BB2FA350418555E1C68B47554189AC3B7030A35041CB329FC38B475541FA02E34E31A350410221023A8C4755418040AFE331A3504121DB81AB8C4755415E71E74D33A3504185A441868B475541D19B639933A35041B0549B168A47554162C7F51A35A35041B1B12057884755413E7DE16136A35041FF59B59E86475541B7B8659D37A35041D4DBB62A854755412567179C38A350417714E3F78347554165B1C36139A3504121BB60CF82475541D0568CD039A35041B110449F8147554123803EEC39A35041F40CCC968047554193A29BD739A350410CF2278C7F4755412843576F39A35041470B67867E475541BB65A4113BA35041BA1198A17C4755415623FF703DA350414EF4D4C17B4755418F81843B3FA35041F15DF1AD7C4755410D3A9DF33FA3504158BE19BF7D4755419941234241A35041C58700EA7D4755412738EDA642A3504128EFA7937D4755416D19D36243A35041D1A8042D7D47554136E84DED43A35041F14A12EC7B475541B313946844A3504185DEB0017A475541994FB1B544A350413868508677475541D4BC9F7E45A3504101131B9E754755413D47454A46A35041DB3417F1734755419392BB3F47A3504105E5708172475541A64C833F48A350414948A49A7147554141FE46C748A35041D2832910714755414F07305749A35041A58BC708704755411F15DAB749A35041BFD7CE1F6F475541BDCF86CF4AA35041407545766C4755417B57B3234BA35041D687DA0F6B4755416BDA1EA74BA350410087945F69475541F117EB3B4CA3504102E9AC9068475541B28E5BA64CA35041598CD53767475541AFE665C64CA35041F4F497C9664755418A68071A4DA3504127EF0CC9664755413DA9E5374DA35041D0E4EA5F65475541ADCB42234DA3504130BABCC3634755411A46AA2E4DA3504124DEF25E624755413F51DB174DA35041FFB5FA9260475541AF000B404DA35041855FAAC25E475541A211C7294DA350414ACCB9945D4755411C2D83DE4BA350411B0B6DEA5B475541605F867D4AA350413B5E1AEA5A475541EAE59C9B49A35041E62A2FF55947554127C7365149A35041B4E132E658475541B23A492C49A350414C0C13E25747554181A17BD648A35041648AC3B556475541F46BCEA148A35041D80BC9B9554755411EC7EA4A48A350417BF594C7544755415E97C81648A350419D24E5DB534755413B606C9A47A3504141755C0B53475541A2569EF246A35041E1D1E5C351475541D4D644F845A35041E5596ED84F4755410F83169145A350415E2C0EE44E475541FFEBDC9A45A350411900C9D74D475541472E6A0046A35041EFD5BD134D475541B57B284F46A35041D96532C14C475541A8A689B246A35041A50412A04C4755419D79E0F546A35041D13389044D4755416575043D47A35041972D027C4D475541394549F747A350418324224B4D4755413EC97EAA48A350417597DFF54C475541ECB9710849A35041F8CBBE824C475541EFC25A9849A350411C62BAB84B475541CF673EEF49A3504111007B374B4755416D7B73504AA35041E6860FB44A47554128E87C014BA35041C77D2F834A475541DE6A047248A350413A98896549475541F8F4BFF942A35041EC08147E46475541C5D6A00C41A3504186EDC26D4A475541B92B621A3BA3504134AE0B9F4F475541BFF08A2E3AA35041B2434052564755415DCBBD8138A350410E807E2C5A475541D69E421537A35041E73004F05C47554164B44C5436A3504159F793F25E475541F1E4451335A35041AF03CC286247554132BA932533A350414A77BE6666475541CACF9D6432A35041C519E8AA69475541DF3589CE31A35041ED3707986B475541A65241CD30A35041290E5A08704755411F26C6602FA35041B768B7CF75475541DD66E41D2DA350419823B92F7E4755418CA68CB52CA3504160CFF2007F4755419AA702DB2AA350418B75014981475541AB5562F725A3504160D8CEDE86475541AB4B3E2522A3504155824BC28C47554187CEE18D20A35041D0247506904755413F4AD7361FA35041518CC75E924755411508528B1EA35041EDB842CB9347554101030000000100000041000000131093FC54A35041F847E76D4847554122D475AF54A350412EC152F148475541B20AA10D54A35041FFBACB68494755416679A61153A35041A20B6AE849475541529606D958A35041EFF08B0B4D475541115E12E259A350418B592BB14A475541C07D36035BA350410CCA139F484755413F0D4E155DA35041897B2EC942475541DA8CD3965EA35041ABFC9D443E47554120FCD7B05FA35041697935D13C475541BDB34B0363A350417D367C35374755414FE301B564A350412797D29234475541DC6AD07E66A35041E93FAF7731475541320A7A2169A35041B240A4742E475541C9E117BB6AA350412A61BD922C4755414C1917B56CA35041A729BE982A4755417AC852E86FA35041A612D8BC26475541B66F45D372A35041B04BC1B022475541D526CA4E76A3504109B555531D475541585EC94878A35041D1B54A501A4755415D06B13078A350418566707D174755410CF8089A71A35041CFD74D681247554132F3305C70A35041957B872412475541642C892B6FA35041506C47BB13475541C645FD866EA35041CF67FEF21447554116AD14496EA3504110A0558815475541FE2F34C66DA350410D7552B4154755411B5688526DA3504118343EC6154755410AA5A9E26CA350411051F5C81547554172FB04BB6CA35041C9607F5A1647554177A478C46BA35041419F84C817475541F3DA571C6AA35041A9C8977C1947554157821CDE68A35041B26113AB1A475541FF8CB78767A35041614C5FC81B475541D6FC992466A3504190DC77221D475541EDD94E1665A35041D70188931E4755417697999C63A350417CE1006E2047554118FC289762A35041775EB2A721475541D16988A060A350418D19570D244755419BD8B0955FA35041B88D6D602547554122FD55DA5EA350419AFE17132647554177B4585C5EA350416E28274F27475541DED669415DA3504120E2D188294755417E5E4A8F5CA35041E4582E8C2B475541E36538D15BA35041FC5A8F242D4755419A5054285BA35041B3F0B5222E4755413AAB8BB95AA35041631DF7B62E47554116A1D8F959A350418B1CFFA62F475541D1666AF459A35041CB5E7C1D32475541C6D997B759A350418C56E29C33475541C16F077E59A350413D47A233354755418185843859A350415812C71E36475541068F06DA58A35041C2FA9E94364755418427570B57A35041408FAAAA374755415E87E87E55A3504159E06B02394755414551563255A35041C6BC31EF39475541D3F9302A55A35041210AA28E3B4755412858AB6255A35041105C82463D475541938A460E56A350414AE14DF33F475541964CE16756A35041F95C169741475541698F53E556A35041BEF909CE4347554166CDB88B56A350415D0CED0745475541A3DBFBFD55A350419C318C2B46475541E3AA0F9A55A35041E2C47C5947475541131093FC54A35041F847E76D48475541010300000001000000250000000D3C14F747A3504167D9CF9A3D4755419E39949646A3504109CCB90640475541C80A9D1145A35041C6B658F842475541B0E1EFF650A35041A3BCE2D848475541000A24E951A350413F9F2F4E4947554186D4C2BA52A35041AC9F2BD648475541CA40335A54A35041CE7F1B2B484755419F58447454A35041368C293C47475541002AEC6F54A35041793951744647554115B888DC54A3504123420ECD4547554130DD5E3F55A350417E2D189B454755415E14BBBB55A35041BA6CEEC8444755416B03FFD155A35041EA288132444755415E14BBBB55A350413EEB9A24434755416DBEF8F454A350412587FA0A4147554122BAD03554A35041D10488063F4755410A57952C54A35041F2B94D373D4755418A8359D153A350410D190DC03B4755414F4AB5FB53A35041387573A0394755415803B3CB54A35041ACF678A4384755417B54B4C155A350416663887637475541A7FDBFD756A350411B6C45CF36475541D8CAD72058A35041669A7683354755413D4D5E8C58A3504118243D5834475541F08D3CAA58A35041CAAD032D33475541F0006A6D58A35041C5EB97223147554178CC866858A350411964BDF52F475541BB39E8935AA350411751CB762C475541C3D4796853A350416288D8CE284755414B67F56951A35041057BC23A2B47554196525FB44FA3504196E0FBBE2D4755417CA64D3C4DA35041301C3E7F31475541C0BBAE4A4AA3504120F7467C354755414802873E4AA350414B3009DC37475541741CE80D4AA35041A1832C0B3A475541309FCD1A49A35041883FD4773B4755410D3C14F747A3504167D9CF9A3D4755410103000000010000001C00000056BFAFFD4AA3504187B13D504C475541852433604AA35041585C56084D475541CF4D997549A350418CD055EB4D47554189262FB348A350414696EB5D4E47554196FBCD4F48A35041E3C798924E47554168379F9647A350412B3299E44E475541B14F428C47A3504180A6562C4F4755418D10795947A350417EE4D6A24F47554103B5182B47A350414DCD4E5B5047554143FFC4F047A350417408FF9851475541B43BC75548A35041488FBA6552475541E17223D248A35041401344DA53475541EA58CA5E49A35041082A9BA4554755412A16A4E749A3504108420D5757475541B8D823594AA35041057EDCF458475541538AE7E04AA35041A09CD1B75947554107D330654CA35041484809D05A47554136D8693A4DA35041FD2E8BA15B47554144BB50794DA350416381CAC35C475541052ED3C84DA35041A0BEAB325E475541286938384EA3504104BDA07B60475541DBF97EB24EA350414260E568624755411F85EBA150A350418FC2F5C85F47554185C0404E54A350416E36D00556475541713D0A0757A35041CDCCCC1C51475541333333534DA35041CDCCCCBC4B4755419E8E0FA04BA3504133473DFE4B47554156BFAFFD4AA3504187B13D504C47554101030000000100000018000000C856401F43A35041BDAC89157E4755417CEFEF2842A350418D99C4C37E475541FB4E5FB740A35041A692C9617F47554171F6567B3FA350418DCF050C804755415839B4303CA350411F85EBD1814755411B2FDDCC33A350414E6210C88D475541C976BE3F2EA35041D9CEF7BB8E4755419A6182552BA3504152CEBE03964755416FDC1CE82AA35041FD2BAD0D994755411BEFB17E29A3504197E4E1DB9A47554121B0722828A350417F6ABC449E47554158EDF30729A3504169D57C95A347554123DBF93E2AA35041986E12FBAA475541D6D5F0E82BA350414C459500AB4755416F9079DA2CA350412B055500AB4755410C65B63630A35041F4624F60A347554138DE9B6332A35041B1BA7C589E475541DDFFB26D34A35041D61F80219A4755411379989A36A35041E73A8B989647554184D007E83BA3504137A0ED368D475541AF49ED143EA35041AC632A8B894755412257C3E53EA35041A399E1A38747554148C70FD741A350410327594F82475541C856401F43A35041BDAC89157E475541010300000001000000D1000000AC05132CDDA2504130FB8C8940485541074DA4B6DFA2504103633732414855413BDF4F8DE0A250412FDD24E641485541E3A59B4CE2A25041DBF97E5243485541D14ED964E5A250413781EFF23D485541F9FB9E8CE7A250410088E00C3A4855414443D26FE8A250411F460C6F38485541D86131D1E8A25041198E88BC374855419F428905EAA250418123E09C35485541D8BC058BEBA25041110B29EB324855419B55E171EDA250413BDE87F82F485541F77A9220EFA250417E0A59722D48554172B79485EFA250410646DEE72C4855419CB0B52BF0A25041010937B92B4855410E4ADA7CF0A25041D022803F2B48554109ED2A84F2A25041D40F28D32748554160E5D04AF3A250418D976E52264855413532401EF5A25041047E052124485541220D76A2F6A250410156C34E224855419E676292F8A2504108F222FB1F48554173D1547CFAA250413C15B0AE1D485541BE9F1AB7FDA250410E2DB2CD194855410014EB17FFA25041E9045D921748554135F37F5FFFA25041767D721E1748554173E7765900A35041CE38AA8915485541596F501C02A3504156E993AF1248554108AC1C3204A350410C022B4F0F4855412961602205A35041C94A9D050D485541EE463C6505A3504110C8AB620C4855417E25468806A3504190F95F9D0948554152B81EC508A3504114AE4729044855410EA301DE0FA35041BEB21C0EFA475541246093EF10A35041511D82EDF7475541A0C5F34412A35041B3E90A44F5475541CDCCCC4413A350413BDF4F45F347554108D029D713A350412697B7BAF0475541992E217314A35041867B8065EC475541E5D9C0E815A35041E019C87BE74755410B46E58116A350419DB1DA21E647554183F3EFDA17A350415C33FD16E44755418941606518A3504154E3A5DBE2475541A47E874D1CA3504168E6CB55DD4755416CE1C1511FA35041551D6CC2D847554162E8628820A35041B9E198ACD6475541EAA7687D23A3504125A88AEED04755413C9F45A823A35041F4A08304D04755414A741A6624A35041B143A7BFCD475541A78EBC8E25A35041A2F4FD33CA475541C49CBD8E26A3504121C5A54BC547554164E114BF26A350414631AD27BD47554122BFC4C126A35041D766A768B94755415C6130AE26A35041E1218E7EB74755411EC10F8C26A350416AACB375B7475541CAC045F425A350415EED6C8EB6475541DF4F8DFF21A35041B29DEFB7B54755415419084E21A350418D1CF5A5B64755413674775321A3504182661F42B747554131BAF6EF1FA350418720A0A5B847554107FF2CD01EA350418D9CA092B9475541F175C2A71EA35041DC926433BA4755414119595A1DA35041F318AB38BC475541A4F494541CA350413399DADABD475541F28E7C8A1BA350412D46B61DBF4755419EEFA79E1AA35041B4C87696C0475541D08BEA3618A35041B5E1CD3FC1475541A67909AB15A35041E557B9F5C1475541B34BADE715A35041A63067CDC44755418AA3BC1C16A35041F71895E7C647554147E0741E17A350410FD48A42C74755410334DB0118A35041C370A41CC747554118BDCB4719A350416B3B1ABAC647554160EEAC581AA350412AC185B2C6475541C1DA83C41BA35041A783A9ACC7475541B1BF2C911CA350410C8BD74BC847554121C75A301DA35041B02348D4C8475541550536781DA350419AA0FE9CC94755414D80829B1DA3504149173450CA4755411E015ABF1DA35041F6541A5ECB475541C0D7A7A31DA35041FEED958CCC4755417B57B5971DA35041E1768BA1CD475541DB9B8A561DA35041E0147370CE47554155D1EB841CA350416A6DD638CF475541544419481CA350411BFC564ED0475541D13B15D01BA35041BCD7FDDAD0475541DCDBEB4F1BA3504170422105D2475541D9A623331BA3504139BB9000D3475541D91951F61AA350413D11BEF8D34755411E54BFFB1AA35041EAB0E387D547554100FA207C1AA350416FB340A8D64755411AD1077219A3504192124ED1D7475541AF571E9018A350419D252D93D84755415C4170B717A35041B622FB3AD94755414BE9199116A3504186B5C890D9475541FF571F9515A35041D3621719DA4755415770C9C014A35041ACDD990CDA475541A6A3968F13A350410875B02AD94755413F1A6FED11A3504196063C48D8475541CC012DB510A35041F642E01DD8475541ADBA92780FA350417F83F883D8475541356C0AFA0EA35041165F9F10D9475541ADA0EDFE0EA35041955A5648DA475541B39750750FA350417DD739D4DB4755411A01B0900EA35041A936959DDF47554114362CA70DA35041A33482A5E0475541EEF6B0CA0CA3504191D0567CE247554132B686A60BA35041C485919DE4475541FD6CA4100BA35041A93E44C7E747554175A8284C0CA3504151EA7BDFE847554153EC64F90CA350418FF7CFA0E9475541D99C5E510DA35041111E8AACEA475541E07A9A770CA35041D8C8A264EB475541B054FAE40BA350418893A477EB475541E5963B440BA35041DC5A515AEB4755414E1BBE020AA3504144C99EECEA47554190329EFE08A35041EFE9A6A7EA475541E8D71A6708A35041357804E5EA4755419DD3F2A707A350415875D28CEB47554169A533B506A35041EBABEB61EB4755410CDCAA1907A35041AF1DB574EC475541A23D83E107A350416C212D7DED4755416ECF62F508A350411EC8F8F4EE475541DA5B041408A35041916197FBF0475541EA1FE7C607A3504104946390F1475541DDBD75ED07A350419AC3FDCCF2475541058B413008A3504191CDFC5DF3475541773BEF8107A35041945A3FB3F34755415B9C4A2506A35041B91B650DF4475541802DAD1405A35041E9EAD638F44755412FEBD3A803A35041EE40DDE0F34755417699ED9A02A350414E1B4235F34755416A1E557101A350417E34812FF2475541728963D400A35041DB32436FF14755416FAD230100A350416D695C44F1475541C9B41143FFA250410CCB9F3DF247554112C4D2DEFDA2504107DC6B07F44755412FB6DC77FCA250414719568DF5475541A64348C6FBA25041B268D924F6475541F314A4BBFAA25041287748CEF64755417CC79966F9A25041EAD0C67EF7475541497F35FAF7A25041948FB608F8475541D89BBBDEF6A25041149E25B2F847554197C43CDCF5A250416F356320F94755415BF72493F4A25041DB4DD15AFA4755414FA86BF6F2A25041C98766B0FB47554109F42EF7F1A25041B2BA551DFD475541C8D62BEEF0A2504161857E80FE475541F8C8818DF0A2504189D3E62FFF4755415A287AEFEFA25041792034F7FF475541E2069B2DEFA25041E42057CF0048554199F0EC54EEA250414C4A6A830248554168507EC8ECA25041980F2BBE04485541244437A9EBA25041F8B2A10506485541C49E6E3AEBA250411153C31C0748554176D8AB21EAA25041FED64C9108485541F2E2ABECE8A2504140DD21BA0A4855414C89A67EE7A250418DA2E2F40C4855413104A79BE6A25041AFEE37AC0E485541CBAEC9ECE5A250412A5840EE0F4855412F29E5F1E4A2504177B62EB710485541344586BEE3A25041FEE38EAB114855416BE938F7E2A250417E3CF27312485541D325EF55E2A2504176BBE8F7124855412561DB84E1A25041397C12CA134855412C13381EE1A25041C26DCA7014485541395B047EE0A250414B10225815485541D68073F2DFA250414BC65489164855412803AE57DFA25041F1F2951D1748554142934617DEA250415A7EC102184855419C808FDFDCA25041E7140761194855411EAED1ADDBA25041C1F65BC61A4855412F0005C7DAA25041EC745A3A1C485541570CB4D9D9A25041825594B71D485541FC705224D9A25041DF1C68EA1E4855417ED2DEE5D8A25041116664F91F485541D5A4040BD8A25041715DCEF021485541CEEF87FDD7A2504171D720D922485541466F631FD8A25041E4D2FCE7234855418FAF750ED8A2504111504691244855419E2DFB8ED8A250417F1AF5AA25485541C11D09D5D8A25041FA349D2D27485541BEE840B8D8A25041F6A7812828485541E655E37AD8A25041EC6220FA28485541F0F5B9FAD7A25041A1834F052A48554128FA95B3D7A25041E8DA97E52A485541DDA90861D9A250419633252E2B48554122661B3DDAA250419DAF251B2C48554127EA1A50D9A2504180EC5CD52C48554167ECACC8D8A25041A169A67E2D48554167ECACC8D8A25041EF6339D12E485541206E1A63D8A25041AC9F27CF2F485541702A2D3FD9A250418FDC5E8930485541BE24C091DAA25041FA99BA21314855410C1F53E4DBA250414C184D87314855410A5DD35ADCA250414F104E61334855419F9F77C2DBA250410A8ABCD534485541BC624008DBA250411006BDC235485541B7B17C48DAA250414D43BDC036485541F15D4EE1D9A250415A819F5637485541CE26F264D9A250415086324738485541FE184804D9A25041EAF387C93848554176A6B352D8A250412CE2EA3F39485541D0E1EB87D8A25041705D900B3A4855418B3450BFD8A25041AFDFDBBF3A4855417E5FB122D9A25041E55847433B485541193E1E67D9A25041C37857EE3B48554159C7ADFCD8A25041C7CE84E63C485541EC262147D8A25041DA5BE3E63D485541BAE6E307D9A25041A81BA6A73E485541AC05132CDDA2504130FB8C894048554101030000000100000023000000665470E3CBA25041A4C27BD1374855419A371642D7A25041D6D5511F3E48554155D1C8AFD7A2504171DCD42F3D48554135E9D9C9D7A2504189C130253C4855417572695FD7A25041C048C1293B48554167832549D7A25041733933203A485541CAD0E397D7A2504119FFA142394855413DFB5FE3D7A250412068605C38485541863DED48D8A25041FD209E953748554146278B76D8A25041838080F636485541C3C5FEB4D8A250414397892036485541F19C31B1D8A250418E27FA5535485541DB81C207D8A25041F45765523448554155B72336D7A25041829A90B033485541E19EE1FDD5A250417EA6A239334855414E72D152D5A25041BA396C17334855419DBF439BD4A250412C410E883248554163137202D5A250415E727194304855410EE941BDD5A250413D39D44E2E485541DE6919E1D5A25041DBB9BAF22C4855413C67EC6FD6A25041FEFBC2782B485541D23BF2FAD6A25041704D32B829485541A0A1A67BD7A250412D96E49E2848554135E9D9C9D7A25041EF8890DD274855415A234C11D7A250417A64FBFC27485541CDD88433D6A25041755E407E27485541BCC653B7D4A250417A64FBFC27485541A331C5FBD2A250417A64FBFC2748554108526F62D0A25041A7885DF52A4855411964A0DED1A25041B294D3F22B48554100CF1123D0A250413C62F80F2D485541F1398367CEA2504163809F892F485541CD987EAECBA250412301FADB344855415160E84CCCA250413F132B5836485541665470E3CBA25041A4C27BD1374855410103000000010000002000000065C3B9C5CBA25041161FF63A38485541C515216FCBA25041DFF83B7039485541404EB7D0CAA250418BDE4C883C48554138CB5991CAA2504147D68E1C41485541AEFD3474C9A25041E5328776434855415B6CE630C8A25041DA20D3EA454855418E6B6A00C8A25041D96FD68E474855418EEC2537CBA25041028729E14848554151D2CBBECEA25041B8BFA34E4A4855418BE5B314D1A25041381807174B48554157D7BCA8D2A250413FE897A24B48554192FD5C3BD3A2504100C88B6F4B485541426A66ECD3A250412E1D73B74A48554153A81799D4A250418622DBDF4948554160975BAFD4A250410D38C92149485541DE35CFEDD4A25041BACDC8CF484855414DCB599CD4A2504186BB086E48485541159333F0D3A2504188356C0148485541E8757CEDD3A250411171F1764748554128A68339D4A250415EB76D8D46485541E5E72B87D4A25041D8A158FB454855411BA43BE0D4A25041BC2A27C04548554139FED95FD5A25041CDDDD9F844485541BFC87831D6A25041E7DA8050444855413731A629D7A25041A8B5E12C4348554150673876D7A250410122F5764248554142EB2123D7A250411A1F9CCE41485541FAA894BDD6A250414DB7D14C414855417FCCBBD8D6A25041E42BA667404855417D24C6F8D6A25041585E4BAC3F4855410838C830D7A25041C86D057D3E48554165C3B9C5CBA25041161FF63A38485541010300000001000000310000009F32E5F2DFA2504169030FA442485541B9674451D8A25041C54A98E73E4855416AAE2C52D8A25041CBDAE6CF3F485541FC2E5130D8A25041AE171E8A404855415879BE8FD7A25041F8D7D90741485541D72D0874D8A2504162158C1141485541D56B88EAD8A25041FED33066414855414A29E482D9A25041B2D19EED4148554192A776E8D9A2504171CF0C7542485541FD64D280DAA25041DACAE88343485541D925094EDAA250410486B2A344485541F8AA511DD9A25041C483202B45485541F4F0D0B9D7A250419CC057E54548554137B5E2BBD6A250417D3B0F16474855413CDA1933D6A2504162618E354848554194993B15D6A250413C3E50AA484855416997A7B5D5A25041E382DCA049485541E09740C7D4A25041404AB0D34A485541128B1490D3A25041E67B84584C4855419F194A0ED3A250418314DDAE4C48554193F7392ED1A250412B5942554C4855410D39B262CDA25041D10BD2B54A4855411F490D15C8A25041E157B27C48485541E0D3FFEBC6A2504188E60B4248485541781CB163C6A2504105B22CB548485541CDD3B3E5C5A2504148697ACE49485541620142BAC5A25041F5654CEE4A48554151C3900DC5A25041E074DE6F4C48554133C27AD7C3A25041BB6E7E374E48554150CE29EAC2A25041524FB8B44F48554148BCA3D0C2A25041783B083351485541D22FB6ABC2A250417B1C3E38524855413898979DC2A25041A0DD6392524855416CDAD8FCC1A25041D77C664953485541FC83311EC1A2504134443A7C54485541936CB915C0A25041086E49B855485541E88C6064CCA25041316412BE5B485541AA220398CDA2504186BFEEB2564855413108AC1CD0A25041295C8FEA4C4855418D976E3AD1A2504183C0CA494D485541EE7C3FE5D0A25041560E2DBA554855414B777481D7A250418FE97F7C59485541596E25B3D9A250418140E9C354485541002854A1DBA2504183E7148350485541B7A56542DDA250416DA9E44C4D4855418275BBB4DEA250413F398A984A485541A3FAF5C4DEA25041398106E649485541643BDF9FE0A250410E2DB2D5444855419F32E5F2DFA2504169030FA4424855410103000000010000002B0000006E02E7A0AEA25041B555877974485541B0C03E53AEA2504131D2472D7548554120292045AEA250411E43F2DF75485541501B76E4ADA25041FC62028B76485541BD7B3876ADA250410AA1E420774855417B0BD030AFA25041BDA9C8C977485541141EB67CB7A250417DA155997A485541D37E1065BCA250414FFFDD777C4855416B879A47BDA250419429AEF87A48554144A7C28BC0A25041E452CF4F76485541BE17BEDAC2A25041479AAE0373485541C6F1EC4DC5A250413FCCD8836F485541B0CFB775C6A25041408EE0BF6C485541035E473EC7A250414A055BB26A485541880BA356C8A250419F77BED3674855414C270649C9A25041BB58A058654855418CCAFA62CAA25041BD96656D624855411656A244C4A25041ADF1C0855F485541A7781C22BEA250413BBA3AB05C4855416B915F5FBCA2504163A1D0ED5B4855410AEC96F0BBA250413840D71C5D48554190F51892BBA250417ED3C74A5E485541CF0B7B64BBA25041C79F071E5F4855411A0902EDBAA25041112253D25F4855412E49AFECB9A250414D1CEF2161485541DB320114B9A25041CFA4E8AE62485541081C6E23B8A25041A9863D14644855417FA9D971B7A25041F7FC763F654855419B28B647B6A25041CAD2B91B67485541A32097E7B5A25041F3258E6B6748554158A94165B5A25041B1ED5D2668485541FBF2BC0CB5A250415E88F0C468485541BDF77DDDB4A250410C8A2E8569485541A2D2A77AB4A25041BB4FC4F769485541222C15DCB3A25041ACB45C216B485541894E26C1B2A250419480A06C6C485541CB392730B2A25041A9F5BEAF6D485541C0D83380B1A250413461013A6F4855413CFC0E95B0A25041A3A4724870485541EEEFC775AFA25041C5F0C7FF7148554181E88D2DAFA250417ABD035B72485541034A1AEFAEA2504152D66D1D734855416E02E7A0AEA25041B5558779744855410103000000010000006F000000CD446CAF91A25041374831CC964855419AE9030091A250419C900E7B97485541074AC69190A250419B7D560998485541A94CF30290A2504120DD5FBA9848554149EE78CA8FA25041F1D6D83199485541610A669D8FA2504182FA39959948554173763E308FA250411E80DA799A4855414D97ECD38EA250416294D4239B485541FA27B6B18EA25041F7FA83BD9B4855416049496D8EA25041D745973C9C485541FA0D11388EA250413068DDB79C485541AA46D0F58DA25041256D70A89D485541A4DC3FBC8DA25041D20703479E485541EF1F4B4B8DA250412F6D97F89E485541145825F18CA25041061F56999F485541CE0312728CA25041E1C402B1A0485541B1F0C1288CA25041DD86476BA1485541D8D091AE8BA25041841A3421A2485541C86537458BA2504123CBD7D9A2485541087C99178BA250413EF3A855A3485541400D480D8BA25041938340DBA348554172C138068BA25041D635FB03A4485541CA805AE88AA2504171A35086A44855411DAA0C048BA25041C07BA2E2A44855415B321E708BA250414806AF67A5485541635E49038CA250414E12E840A64855413FCDE6138DA2504140D9989BA64855419A0FC07F8EA2504148BCE198A64855412E3CD02A8FA25041C5D662CBA64855417B1597868FA2504156FAC32EA748554156DDBCE08FA25041912B75DBA748554124D0439E90A2504184671D29A848554172EF8E0091A25041F3921C85A7485541A2A201D091A250414BEC775DA74855418824A32392A25041FA62AD10A848554139DD07F691A250416D13D59DA9485541EEDA757D92A25041E5C83110AC485541CA9BAC4A92A25041A204200EAD485541F456766A93A2504166BC0EF9AE4855411F12408A94A250413EF945B3AF48554114AE47E193A25041C1CAA195B048554117D9CE5F9CA25041508D972EB5485541AE7AC4179EA250417A7E8524B34855417D14C38B9FA25041830DB421B14855417BBABC18A1A25041771E0BFBAE4855417A60B6A5A2A25041B621128BAC48554187163AF9A5A25041C6EEAD2DA7485541EEE6AFD1A7A25041836E4E21A448554109C537FEA7A25041FD09D9CFA3485541AFF193AFA9A250417C81B8F2A04855415330767AABA25041BCE6D7B39D4855415A2E7A27ADA25041E0C10DC89A48554160AB84CAAEA25041DA748277974855411473B735B0A25041327E502C95485541EA9A45C9B2A2504128AAADA59048554108324C11B6A250414ADD02E28A48554120F918DAB7A250412ED78DBF874855413299E29CB9A250416BA2A8A78448554174D40FA8BAA250410B3297DE824855418CB738D1B3A25041C369BD1C804855418ACCBD4CA9A25041344FC7F97B485541F813598EA7A250412B71383D7E4855419FECA2C5A5A25041F3382F488048554167CE2193A5A25041EC6D31AD80485541CC62E211A5A25041B154F2B281485541466C64B3A4A250416951C4D28248554153CED58CA4A25041CF0E99748348554198C1F55BA4A25041AE95544184485541DD0D9E74A3A25041629E38EA84485541DCD95381A2A25041A120849E85485541C631129BA1A25041EF347E4886485541D6DB4FD4A0A25041CBEDE2D1864855419591A30EA0A250413DABB77387485541CDC15E549FA2504129B5B60488485541898938A89EA250413317F685884855418C17890E9EA25041BBA1020B8948554151C43FBF9DA25041089EB15289485541B91A9B979DA250414E2C0F90894855414B5AAF859DA250416C7FE3DF89485541F9BDCFA69DA25041D44124228A485541E3D6AAF09DA25041734F746B8A4855416E6462459EA250412BAE5EBC8A485541879AF4919EA250412C5FFEFC8A485541FA7EECD69EA250416CE6B5518B485541029172F09EA25041779755928B4855418A5C8FEB9EA25041DC3CDFD18B485541043968D09EA2504192BF260E8C485541A70FB6B49EA25041E030CD488C4855418C312E889EA25041DC90D2818C485541D936D4709EA25041843777A98C485541E1BB874D9EA2504125FBD2D38C485541044C6C139EA250418324BF378D48554156142B7F9DA25041F6568BCC8D485541DB1DAD209DA25041E81D3C278E485541A258B4379CA250410282B5F08E4855418DCA17CB9BA25041A3F6B05B8F485541B987A54D9BA25041912BB3C08F485541265B95A29AA250412692625A904855415E45CCE199A25041A35D83CD90485541A86E32F798A25041DE8E347A91485541ECBADA0F98A2504191971823924855416663690197A250416B257AD8924855417580D4FD95A250410CB2C0A5934855416D0D5B3495A25041D8A4933494485541CAD6E3CF94A25041E3141F8794485541F45EA93594A250412A0A28E694485541C6E0FE8293A2504129F76F74954855414E92760493A250412C84B2C995485541E8C96B9292A250410FFAC81C9648554102017C0892A25041D03BFC6A96485541CD446CAF91A25041374831CC964855410103000000010000005B0000004C201D3C83A250419A85EE9DB94855411475C9CC82A250414C7687E4B9485541713E526882A25041B438C826BA4855412BA4BAE281A25041C6650543BA48554173B2FD5481A25041D5B69F4ABA48554115B52AC680A250412377A644BA4855412A56CB7580A2504187F69850BA485541542415E27FA2504114D7AB7DBA485541CF731B8A7FA250416D4852B8BA485541CCB180307FA250411C0EE82ABB4855415F7E675B7FA25041C33F955FBB4855411179C1727FA25041DA2418A5BB4855415CD6717B7FA250414E5C50DABB485541BCA719777FA25041489F9E10BC485541E97E4C737FA25041A2853C3EBC4855410778F7427FA25041D74D0881BC48554164CE521B7FA25041F3C439BCBC485541C67499B37EA25041BCE9B507BD485541C3B2FE597EA25041900E3253BD485541F8C796FC7DA25041670F51B3BD48554180C05CB47DA25041CBF08240BE48554143C51D857DA250414B9846C8BE485541DDCF69567DA25041923EEF67BF485541BA6C2E4D7DA25041890C46ABBF485541DDCF69567DA250415CCA16D5BF48554123505C627DA2504151BCCA03C0485541ADDD13B77DA25041974A2841C0485541E01ED7EC7DA2504101826076C0485541C036E8067EA250416AB998ABC048554120C20BFC7DA2504166CA3D25C1485541BE0120EA7DA25041013893A7C1485541109EFFC87DA2504188C29F2CC2485541CDC5029D7DA25041713F5C68C248554110845A4F7DA2504154B572BBC2485541DF5DBABC7CA25041131B03F5C2485541322679287CA250418ECED805C3485541A9FA32AD7BA25041F24DCB11C34855414478AC417BA250412724E325C34855411137E90B7BA25041E8651674C34855412EEA0FD57AA25041A83252CFC3485541C16FA8C97AA250412A05192BC44855418EBBB7D07AA2504154CDE46DC44855418B13C2F07AA250415EC878CDC4485541F43D3E3C7BA25041A0B6DB43C54855416668BA877BA25041E31936ADC5485541DF2970C97BA2504110BEA404C648554192B19C1D7CA250419C29C03EC64855418F96797A7CA25041CCF8316AC6485541FFD27BDF7CA25041FA52ACA2C64855411A3ED6487DA250416DD4D8F6C6485541007AF3957DA250415AA22F3AC748554173A46FE17DA25041F73A8890C7485541A6E532177EA25041840D4FECC7485541E0ABA9297EA250412D659354C848554186FD43317EA2504182448B99C8485541025C567680A25041EB8056BFC94855418E716A3885A25041B94FF3B2CB485541524060DD8DA25041655B7EA4CF4855410D818A018FA25041DCB393CCCD485541B73CBB888FA2504156F07AF8CB485541CBCB8EC590A250412C49BBC0C84855415D1C112292A2504194F27DE5C648554160A529E092A2504102A2FB88C5485541F8FB66BB94A2504151B62FF2C14855418A4CE91796A25041AE537C19BF4855411D9D6B7497A250418FB832DFBC4855419636A4579AA2504124D9BE75B9485541F80C930E8FA25041EBECF906B4485541EABC5B488EA25041A4F7F0A7B3485541396356DA8CA2504112727713B44855412DCE18378BA25041F536EE25B4485541376EEFB68AA250411E980E47B44855415FDB91798AA25041A6C0DB4AB4485541294B61AD89A250417A34B855B44855417113201989A250411DD4B694B4485541269CCA9688A2504111105FE2B4485541A870841B88A25041B8410C17B5485541E5C44B9487A250410FFDA670B54855414FA9F7D286A250410D8343DDB5485541A93DB85186A25041D70E6B4AB648554136CCEDCF85A250414ED3E5D4B64855419E4FF26485A25041B2037821B7485541BEF0921485A25041939DEB5FB74855410E58AAD684A25041711AA89BB74855418357C5BE84A25041001872CBB7485541C890699484A2504166BDFB0AB8485541902C645B84A25041007AB14CB84855414065231984A25041FB23ABA4B8485541B51DF0CA83A25041C3D32FFDB8485541E40F466A83A250418B83B455B94855414C201D3C83A250419A85EE9DB9485541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007EE999B471A35041D7E4643E24475541EE64EDBA72A35041BEBD85D222475541B47AE2E669A35041007967AA1C4755418032210069A35041E173CCAA1D47554168024B6668A3504116BC8D911E475541A1AB46D967A350413778D9511F47554122A29E3267A35041065B530520475541BF8AE3CB66A35041876AAD94204755413D0AD7A367A3504114AE472121475541B0EDC68B6FA3504193CBF9A9264755417EE999B471A35041D7E4643E24475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>162513 - 2908582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000058000000FA4B87EEB95051411E9CD7E544565441E17A141EBD50514185EB51C844565441666666F6C3505141333333E34656544152B81EE5C9505141000000D048565441C3F5287CC950514114AE47D146565441A10713D6C85051410DFD95BD43565441D1080E1EC850514149F0C5E73B56544119EF7430C8505141BDC27A74385654417052E80ECA505141B5F99D273656544130355E49CC5051410A486438355654414E4424AFD2505141B5F99D27365654411C052404DA505141A4DD0EAA37565441767D44B0DE505141BDC27A7438565441EB733724DF50514109458E42325654419162B07ADF505141A906673F2E565441BC00F032E1505141D2580D662E5654410E7D07BCE1505141AC707FD92E565441DF09C0CAE3505141169E6F1A2F56544149261A8AE5505141F92F05712F5654412D22B587E750514127B7A5E62F5654411F70648AE7505141C34384942B565441ABD2F32EE950514138BE87962B5654410136670DEB5051411171BCCD2B5654413620534AED505141C60016862B565441C813A514F0505141BD86F2A22B56544182EF846BF250514112C09B1D2C56544198413C9BF3505141C2D6253C2C565441ED0BDF2AF4505141A3D519EB2B56544143F3758AF450514138BE87962B5654415ED8E154F55051411BC46EFE27565441C3F528ECF5505141666666262456544103DC2C30ED505141B8EF709F235654419C2BA9E3E450514140DD351F235654411068F0EAD450514167A4031D22565441AD911DFDC5505141EA571B2921565441B81E85CBBD50514148E17A94205654415B81270CBD50514154036FA9205654417F1DD95ABC50514104BE42991F56544191AF74D8BA50514174A255C71D5654413D0AD763B9505141F6285CDF1B5654415ABCA638B65051416D7385DB1B565441460400C2A65051418F6BE25F1C565441C68D988B92505141FBA9B64F1E5654413D685F148D505141EEF51C081F565441E803D5E588505141C82E66651F565441A088F6B581505141CCFE7712205654411F85EB717A505141F6285C9F20565441FE3FFF1F7B505141FD3BA5E222565441A0DA5B507C5051413B6D7CD72656544112E51F7A7D505141827F60B62A5654412F4495187F505141CC883BF72F5654416993F23A80505141AFA3C88A335654410A7B2964825051417828E4E238565441D011CF1D84505141BC6FC8433C56544190F444588650514150F0C5E73B5654416BBC265D89505141FA8C52093A565441E01F52438B50514190BDD2313B5654413848653C8D505141B1F9644E395654418139C3608F50514107553ACC36565441C0C1932390505141978CE49C33565441BB1598B38E505141C231041B3356544164DCEE388E505141A0179E0132565441032922DB8D505141340CDAC32E5654417213A40D8E5051419E5BF6072C565441E119B3D38E50514151DA16142A56544111305BE99050514164F6A59128565441CED83E30925051419F3A35152656544109E8951492505141AEEC486026565441333333639250514185EB518828565441A4703DCA915051417B14AEF72B565441295C8F72915051410AD7A3002E5654410000001091505141AE47E13A30565441E17A147E92505141295C8F6231565441295C8F229350514152B81ED5335654411F85EB4193505141D7A3707D355654418FC2F51893505141AE47E1FA365654417B14AE57925051415C8FC24538565441F6285C9F90505141000000103B565441EC51B82E8F5051411F85EB613D5654418FC2F5C88D5051413D0AD7133F565441295C8F828B505141F6285C8F4156544152B81E4589505141666666D6435654415C8FC255865051411F85EBE145565441713D0A479C505141333333A345565441E17A143EA35051417B14AEC745565441D7A3709DAC50514114AE47614556544100000040B9505141C3F528EC44565441FA4B87EEB95051411E9CD7E544565441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E3F1DFE19150514169CBB77026565441A5B512E991505141F19D561A26565441E5710184915051414742174F21565441C9320A3E99505141BDBAF4842056544133F5FEB5A950514194ABAFF01E565441CC1516EEB05051410DDD4D601E5654418C5558A0B6505141C5F51C181E565441C6BA218FB9505141D8205FC51E565441F43BE896BB5051416F6142C91F56544135E8F04BBE50514121F8A92722565441B47B2A49C150514173FA363726565441E95E8CDEC6505141BEB1B5CD2F56544121E42199C3505141BEB1B5CD2F565441A409A9D5C05051414A0E96EA2F565441D29A55C3BF505141986748A630565441282F3012BE5051415E190CCC36565441F7F4A8D0BB50514142DA14863E565441CD3DA6EDB9505141BCC1DFE544565441E17A141EBD50514185EB51C844565441666666F6C3505141333333E34656544152B81EE5C9505141000000D048565441C3F5287CC950514114AE47D1465654413D0AD743C9505141713D0A0745565441AE47E1EAC8505141AE47E15A42565441E17A147EC8505141C3F5283C3D56544133333363C85051415C8FC275395654419A9999F9C8505141000000803756544166666646CA505141CDCCCC1C36565441A4703DAACB50514148E17A543556544166666666CD50514148E17A543556544152B81E15D4505141B81E858B36565441F6285C9FDB50514152B81E05385654417B14AE47DD505141E17A145E3856544185EB5168DE505141F6285CEF37565441295C8F72DF505141713D0A372E56544148E17A84E7505141AE47E19A2F565441713D0AC7E7505141333333B32B565441B81E85BBE8505141666666862B565441000000B0E95051411F85EB212C565441000000D0EC505141CDCCCC9C2B565441CDCCCC3CF15051418FC2F5C82B5654411F85EBF1F350514114AE47512C565441C3F5285CF45051415C8FC2F52B565441C3F528ECF55051416666662624565441AE47E1CAE1505141F6285CEF2256544166666616BD5051417B14AE97205654411F85EBC1BA505141C3F528AC1D5654413D0AD763B9505141F6285CDF1B56544148E17AC4AD50514114AE47D11B565441CDCCCC8CA4505141CDCCCC8C1C565441F6285C7F99505141D7A3709D1D565441295C8F0292505141D7A3705D1E5654411F85EB718C505141E17A141E1F56544148E17AB48B5051417B14AE371F565441CDCCCCAC865051419A9999891F5654410000005086505141F6285C8F1F565441EC51B85E84505141666666E61F5654410AD7A350805051419A999929205654411F85EB717A505141F6285C9F205654413D0AD7537E505141AE47E18A2D5654416666667681505141D7A3706D375654410000004084505141F6285C2F3C56544152B81EC584505141F6285C2F3C565441713D0A7785505141333333033C565441E17A14AE865051413D0AD7933B565441EC51B80E88505141A4703D5A3A56544152B81E75895051410AD7A3303A5654410AD7A3108A505141713D0A473A565441666666B68B505141295C8FE23A565441B81E85CB8D505141D7A370CD38565441666666D68E5051410000008037565441713D0AF78F5051415C8FC25533565441295C8F628E505141666666C6325654411F85EBE18D505141EC51B88E30565441000000308D505141295C8F422D565441F6285C9F8D505141F6285C4F2A565441A4703DCA8F505141E17A149E295654410AD7A3F0905051410000002028565441E3F1DFE19150514169CBB77026565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>162513 - 3625064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000058000000FA4B87EEB95051411E9CD7E544565441E17A141EBD50514185EB51C844565441666666F6C3505141333333E34656544152B81EE5C9505141000000D048565441C3F5287CC950514114AE47D146565441A10713D6C85051410DFD95BD43565441D1080E1EC850514149F0C5E73B56544119EF7430C8505141BDC27A74385654417052E80ECA505141B5F99D273656544130355E49CC5051410A486438355654414E4424AFD2505141B5F99D27365654411C052404DA505141A4DD0EAA37565441767D44B0DE505141BDC27A7438565441EB733724DF50514109458E42325654419162B07ADF505141A906673F2E565441BC00F032E1505141D2580D662E5654410E7D07BCE1505141AC707FD92E565441DF09C0CAE3505141169E6F1A2F56544149261A8AE5505141F92F05712F5654412D22B587E750514127B7A5E62F5654411F70648AE7505141C34384942B565441ABD2F32EE950514138BE87962B5654410136670DEB5051411171BCCD2B5654413620534AED505141C60016862B565441C813A514F0505141BD86F2A22B56544182EF846BF250514112C09B1D2C56544198413C9BF3505141C2D6253C2C565441ED0BDF2AF4505141A3D519EB2B56544143F3758AF450514138BE87962B5654415ED8E154F55051411BC46EFE27565441C3F528ECF5505141666666262456544103DC2C30ED505141B8EF709F235654419C2BA9E3E450514140DD351F235654411068F0EAD450514167A4031D22565441AD911DFDC5505141EA571B2921565441B81E85CBBD50514148E17A94205654415B81270CBD50514154036FA9205654417F1DD95ABC50514104BE42991F56544191AF74D8BA50514174A255C71D5654413D0AD763B9505141F6285CDF1B5654415ABCA638B65051416D7385DB1B565441460400C2A65051418F6BE25F1C565441C68D988B92505141FBA9B64F1E5654413D685F148D505141EEF51C081F565441E803D5E588505141C82E66651F565441A088F6B581505141CCFE7712205654411F85EB717A505141F6285C9F20565441FE3FFF1F7B505141FD3BA5E222565441A0DA5B507C5051413B6D7CD72656544112E51F7A7D505141827F60B62A5654412F4495187F505141CC883BF72F5654416993F23A80505141AFA3C88A335654410A7B2964825051417828E4E238565441D011CF1D84505141BC6FC8433C56544190F444588650514150F0C5E73B5654416BBC265D89505141FA8C52093A565441E01F52438B50514190BDD2313B5654413848653C8D505141B1F9644E395654418139C3608F50514107553ACC36565441C0C1932390505141978CE49C33565441BB1598B38E505141C231041B3356544164DCEE388E505141A0179E0132565441032922DB8D505141340CDAC32E5654417213A40D8E5051419E5BF6072C565441E119B3D38E50514151DA16142A56544111305BE99050514164F6A59128565441CED83E30925051419F3A35152656544109E8951492505141AEEC486026565441333333639250514185EB518828565441A4703DCA915051417B14AEF72B565441295C8F72915051410AD7A3002E5654410000001091505141AE47E13A30565441E17A147E92505141295C8F6231565441295C8F229350514152B81ED5335654411F85EB4193505141D7A3707D355654418FC2F51893505141AE47E1FA365654417B14AE57925051415C8FC24538565441F6285C9F90505141000000103B565441EC51B82E8F5051411F85EB613D5654418FC2F5C88D5051413D0AD7133F565441295C8F828B505141F6285C8F4156544152B81E4589505141666666D6435654415C8FC255865051411F85EBE145565441713D0A479C505141333333A345565441E17A143EA35051417B14AEC745565441D7A3709DAC50514114AE47614556544100000040B9505141C3F528EC44565441FA4B87EEB95051411E9CD7E544565441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E3F1DFE19150514169CBB77026565441A5B512E991505141F19D561A26565441E5710184915051414742174F21565441C9320A3E99505141BDBAF4842056544133F5FEB5A950514194ABAFF01E565441CC1516EEB05051410DDD4D601E5654418C5558A0B6505141C5F51C181E565441C6BA218FB9505141D8205FC51E565441F43BE896BB5051416F6142C91F56544135E8F04BBE50514121F8A92722565441B47B2A49C150514173FA363726565441E95E8CDEC6505141BEB1B5CD2F56544121E42199C3505141BEB1B5CD2F565441A409A9D5C05051414A0E96EA2F565441D29A55C3BF505141986748A630565441282F3012BE5051415E190CCC36565441F7F4A8D0BB50514142DA14863E565441CD3DA6EDB9505141BCC1DFE544565441E17A141EBD50514185EB51C844565441666666F6C3505141333333E34656544152B81EE5C9505141000000D048565441C3F5287CC950514114AE47D1465654413D0AD743C9505141713D0A0745565441AE47E1EAC8505141AE47E15A42565441E17A147EC8505141C3F5283C3D56544133333363C85051415C8FC275395654419A9999F9C8505141000000803756544166666646CA505141CDCCCC1C36565441A4703DAACB50514148E17A543556544166666666CD50514148E17A543556544152B81E15D4505141B81E858B36565441F6285C9FDB50514152B81E05385654417B14AE47DD505141E17A145E3856544185EB5168DE505141F6285CEF37565441295C8F72DF505141713D0A372E56544148E17A84E7505141AE47E19A2F565441713D0AC7E7505141333333B32B565441B81E85BBE8505141666666862B565441000000B0E95051411F85EB212C565441000000D0EC505141CDCCCC9C2B565441CDCCCC3CF15051418FC2F5C82B5654411F85EBF1F350514114AE47512C565441C3F5285CF45051415C8FC2F52B565441C3F528ECF55051416666662624565441AE47E1CAE1505141F6285CEF2256544166666616BD5051417B14AE97205654411F85EBC1BA505141C3F528AC1D5654413D0AD763B9505141F6285CDF1B56544148E17AC4AD50514114AE47D11B565441CDCCCC8CA4505141CDCCCC8C1C565441F6285C7F99505141D7A3709D1D565441295C8F0292505141D7A3705D1E5654411F85EB718C505141E17A141E1F56544148E17AB48B5051417B14AE371F565441CDCCCCAC865051419A9999891F5654410000005086505141F6285C8F1F565441EC51B85E84505141666666E61F5654410AD7A350805051419A999929205654411F85EB717A505141F6285C9F205654413D0AD7537E505141AE47E18A2D5654416666667681505141D7A3706D375654410000004084505141F6285C2F3C56544152B81EC584505141F6285C2F3C565441713D0A7785505141333333033C565441E17A14AE865051413D0AD7933B565441EC51B80E88505141A4703D5A3A56544152B81E75895051410AD7A3303A5654410AD7A3108A505141713D0A473A565441666666B68B505141295C8FE23A565441B81E85CB8D505141D7A370CD38565441666666D68E5051410000008037565441713D0AF78F5051415C8FC25533565441295C8F628E505141666666C6325654411F85EBE18D505141EC51B88E30565441000000308D505141295C8F422D565441F6285C9F8D505141F6285C4F2A565441A4703DCA8F505141E17A149E295654410AD7A3F0905051410000002028565441E3F1DFE19150514169CBB77026565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>575777 - 2930867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000110000006A89F2B544355141B1CD5D218E705441A4703D3A5C355141000000508B70544185EB51F85D355141EC51B8BE80705441295C8F225E3551410AD7A3C07F705441AE47E11A5F35514114AE47F17C705441C3F5282C53355141AE47E14A7D705441D7A370FD42355141CDCCCC5C7F705441E17A146E2E355141B81E85BB81705441390D2E862C3551410F8A9ECB91705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB37054415C8FC2E5443551413D0AD753A170544114AE4791443551415C8FC2258E7054416A89F2B544355141B1CD5D218E705441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000001A818F2D453551411AB908138E705441BA937EDE4435514179192EE48D7054413879540D403551417DF2738F8E7054410774C85A373551411D79BEC38F70544166916F2F2D355141F381CC5E91705441A98C0F8B2C355141F6927BA291705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB37054415C8FC2E5443551413D0AD753A170544114AE4791443551415C8FC2258E7054411A818F2D453551411AB908138E705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>575777 - 3759163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000110000006A89F2B544355141B1CD5D218E705441A4703D3A5C355141000000508B70544185EB51F85D355141EC51B8BE80705441295C8F225E3551410AD7A3C07F705441AE47E11A5F35514114AE47F17C705441C3F5282C53355141AE47E14A7D705441D7A370FD42355141CDCCCC5C7F705441E17A146E2E355141B81E85BB81705441390D2E862C3551410F8A9ECB91705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB37054415C8FC2E5443551413D0AD753A170544114AE4791443551415C8FC2258E7054416A89F2B544355141B1CD5D218E705441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000001A818F2D453551411AB908138E705441BA937EDE4435514179192EE48D7054413879540D403551417DF2738F8E7054410774C85A373551411D79BEC38F70544166916F2F2D355141F381CC5E91705441A98C0F8B2C355141F6927BA291705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB37054415C8FC2E5443551413D0AD753A170544114AE4791443551415C8FC2258E7054411A818F2D453551411AB908138E705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2919891 - 204779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000075000000E17A14CEA4165141EC51B82EC0D35441AE47E1FAA9165141D7A3703DB7D35441E17A14DEC316514185EB51A8E0D35441B81E852BFF16514100000020C9D354417B14AEB7861751418FC2F588C2D354418FC2F57817185141A4703D1AACD354416666665675185141C3F5282C80D35441F6285CFFD21851411F85EBB147D3544152B81EE5341951418FC2F52828D35441000000707F195141A4703DCA17D3544152B81E95C31951411F85EBB1EBD25441713D0A17F6195141C3F5288C04D35441295C8F22AD1951413D0AD753B7D35441713D0AD7851951417B14AEF7CAD3544152B81E655B195141D7A370ADD9D35441AE47E11A4D1951417B14AE87EFD3544148E17A743B195141333333B320D4544185EB517833195141E17A14BE25D454419A9999392A1951419A9999F919D45441D7A3700D16195141666666561DD45441CDCCCC4C021951417B14AE772CD454410AD7A320EE185141F6285C6F59D45441AE47E12A9A185141EC51B89EBED45441C3F5285CC51851411F85EB91D6D454417B14AE47DA18514152B81EE5FAD45441C3F5287CF318514152B81E75EAD45441F6285C0FFA185141B81E859BCFD4544114AE47B10C195141295C8FF2B6D45441333333A328195141E17A142EAED45441EC51B8DE1F195141666666668ED454417B14AE87601951410AD7A35054D454410AD7A31072195141AE47E15A49D45441CDCCCC2C8A1951413D0AD75343D4544148E17A849919514185EB51A83BD45441EC51B83ED5195141AE47E1CA09D454418FC2F568F9195141295C8F22F1D3544185EB51A8071A5141EC51B88EEAD354418FC2F5C81A1A514185EB5158DCD3544100000020461A5141666666E6F9D35441E17A144E591A51410AD7A3A0E5D354417B14AE076D1A51415C8FC225E0D3544100000040751A5141295C8F72D2D35441C3F5280C651A5141EC51B8BE9ED354418FC2F5784B1A51415C8FC2B58ED354418FC2F5784B1A51410AD7A38080D354410AD7A3E0741A51417B14AE4748D35441000000907A1A514114AE47E12CD354410AD7A3308A1A51411F85EB8113D3544166666676811A5141000000E0CCD2544148E17A54781A51419A9999F9C5D25441CDCCCC2C601A51418FC2F568C8D25441AE47E1BA411A5141EC51B8DEBED25441E17A14AE301A514148E17A54B5D25441EC51B88E1A1A51419A999979B1D25441AE47E1AA061A5141D7A370DDB0D254411F85EB71F7195141EC51B8FEABD2544100000030861951417B14AE6791D2544148E17AD46D1951410000000091D25441CDCCCCEC58195141D7A3704D8AD2544185EB511849195141EC51B8CE83D2544114AE473119195141C3F528CC67D25441713D0AE7AB185141EC51B8FE79D254419A9999699F18514114AE47B189D25441666666765E18514185EB5148A4D25441666666862F185141C3F5285CACD25441C3F528DCC7175141EC51B88EA9D254415C8FC2D5AA175141CDCCCC3CA1D254413D0AD76363175141E17A14DE5ED254410AD7A3D049175141AE47E19A5AD254415C8FC2C51D1751413D0AD75355D25441CDCCCC9CF7165141EC51B89E5BD25441A4703D1AF0165141B81E855B57D25441E17A146EDD165141F6285C0F6CD254411F85EB21C9165141333333736BD25441333333A3C2165141E17A14BEC3D254413D0AD733E91651417B14AE07BCD254417B14AE97111751417B14AE87A7D25441EC51B8DE6817514100000080CED25441E17A14EE95175141666666E6E9D25441EC51B83EB91751417B14AE17F7D25441333333B3451851411F85EBC1C4D25441CDCCCC0C79185141D7A3707DDBD2544114AE47717818514148E17A2408D3544185EB51086A1851418FC2F5F817D35441B81E85CB5918514185EB512832D3544114AE47714F185141E17A141E3DD35441EC51B80E35185141B81E851B4AD3544148E17A3416185141A4703DFA4ED354410AD7A3D072175141E17A14EE3DD3544148E17A74D11651419A9999D92AD3544148E17A14D31651413D0AD7E31FD354418FC2F568A51651416666664611D3544185EB51E882165141333333B349D35441CDCCCCAC2E16514114AE479169D35441D7A3706DFA155141E17A14CE15D35441295C8F2207165141295C8F8212D3544148E17A1428165141E17A14BEF6D254411F85EB514C165141B81E85BBB6D25441713D0AE7221651419A9999E9C3D25441A4703DAA06165141295C8F62DCD25441D7A3705DE31551418FC2F5F8D2D25441333333F3C115514100000070B3D25441E17A142EA61551413333332378D25441F6285C1FAF155141295C8F1259D25441E17A143EC51551419A9999A957D25441CDCCCC4CB4155141F6285C2F2FD2544148E17AB485155141F6285C2F2FD25441713D0A877815514114AE47417ED25441E17A14FE58155141E17A147E92D25441A4703D2A3E155141A4703DDABCD254417B14AE675A155141D7A370ADCFD2544152B81E955715514166666636F7D25441A4703D5A83155141EC51B8CE25D35441EC51B82EBE155141A4703D1A31D35441B81E858BF81551418FC2F55875D3544114AE4721E71551417B14AE97B9D35441E17A14CEA4165141EC51B82EC0D35441
+</a>
+
+<b>
+010600000001000000010300000001000000570000009A5F61AD00165141EF67D5C9DAD25441ED4E03CBF6155141E9E1D652E0D25441EA546D11D015514159AC4ACFCAD254417396CD2198155141FC64977370D25441EFD502C7AA155141F86A01BA49D25441D3648079A615514185A6F78338D25441432FF4F5901551416835753634D25441094DEF5A88155141324D065552D25441E260419E821551416F29A1A981D25441A0031194781551419F907AD588D25441A684A649531551415F2DE084A5D25441A684A64953155141D3F1E9BAB6D25441253E611357155141CF4A4A75CDD254417B14AE675A155141D7A370ADCFD25441775A7A8459155141BBF4E01BDCD25441E9E1D6535D15514166210CF8F2D2544140355E3C6A155141D06AEABE02D35441F656987C85155141AD78D2BB23D354419D7C1198C4155141CAE9540928D3544127310866FF155141BDE7299E72D35441BCE7299FEF1551415B92774AB0D354412223096E971651419EEFA754BAD35441FF30F16AB81651415B92774AB0D35441687ACF31C816514168073973D8D35441DF386F2100175141EBC703CEC5D3544136FF8CC77F175141BB602AA2BED354411EFB36F11418514117354740A6D35441BE9F1A5779185141E4D3D75A78D3544109F176D4D01851418A86BAB844D35441DC833362F0185141333333D037D35441B08986AD8219514113C81AC90CD354411DCDFA2DB919514110CE840FE6D25441EBDE2106FE195141C6EFBE4F01D35441F7E04C71B3195141B1E5FE32BDD354414640A8E6721951415E8C0D04D7D3544139CBE6BD4A1951414E904CDFFAD35441D9FC33663C19514195E712A32BD45441D6029EAC151951416FFB64E625D45441CB14DC7FA118514169ED65EEBDD454418FABD7E8E418514189587EF5E8D45441DF7DC91B171951418CDF7DF19CD45441D6029EAC1519514122969F2A8DD454418A9DD8F07C195141122748483ED45441B4F6B2241C1A51412E2534D8CFD35441B8F048DE421A514115AE4744F2D35441ED5DD78B741A51417480AB33D0D3544189BA071E651A5141707FBEF79ED3544102E716345C1A514155BA313399D354418FC2F5784B1A51415C8FC2B58ED354418FC2F5784B1A51410AD7A38080D354418A6928334F1A51415240F7707BD3544118BFFB35511A5141840525036AD35441D85B61E56D1A51419401E62746D354419AB118BB861A514102722183F7D2544130C63CEC851A5141771300F9F0D25441123E6680761A5141938E4F6AD3D25441EA6B8B488B195141F6E301BE95D25441D08108F73A195141A90BA6448AD25441B9911B5F11195141D578E9B66AD254416E40BFE1B9185141821FF88784D25441997D77A99F185141680C036189D254419A9999699F18514114AE47B189D25441A5282EC39B185141EC68D64E94D2544181C37F024A185141AC053CFEB0D25441576AA5CEAA175141990FE51FAED2544193D3A96567175141F2E96B046FD2544156F70E113817514175AA365F5CD254414F03E39DEA165141A511108B63D254415FFFA3C2C6165141164F1AC5C0D2544166F3CF35141751415F2DE084A5D25441B7385826B9175141709C3767F4D254416ECD2824471851411FCA4534C2D25441EE06F48280185141C3F52896DAD25441EE06F4828018514100D2C3EA09D35441EB0C5EC959185141639A0CFC3ED354416BD3926A2018514110411BCD58D3544108AC1CDAB9165141D364807829D354419E623E13AA1651417396CD201BD354416B01CF2D7C16514110411BCD58D35441640DA3BA2E165141AAF1D2BF6FD35441DA58ACECF31551414DAA1F6415D354413E21F5FD2816514149B089AAEED254413D21F5FD281651418098F88BD0D25441DE5242A61A1651416327763ECCD2544125AC2DCE1616514164F58B65CED25441A4703DAA06165141295C8F62DCD254419A5F61AD00165141EF67D5C9DAD25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2979014 - 59292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000001F85EB11E8E85041333333338DFD54415C8FC205EAE85041333333139FFD544114AE4741F0E85041D7A3707D9EFD544148E17AD4F1E85041713D0AC79DFD5441C3F5283CF2E8504114AE47019CFD544185EB5158F1E85041CDCCCC4C90FD5441CDCCCC4CF1E8504152B81E458BFD5441EC51B8CEF1E850411F85EB4186FD54417B14AE87F3E85041295C8F227FFD544133333333EAE8504185EB51C87FFD54413D0AD773EAE85041295C8F628DFD54411F85EB11E8E85041333333338DFD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000027AE1B13E3E85041A974B3688CFD544100440FE5DDE85041C89060588CFD5441320907B6DDE850417543925A8CFD54417B14AE87D6E850418FC2F5C88CFD54417DC0A0B0D9E8504126625D7DA0FD54413E804F05EAE85041F5053E139FFD54414DC3D818E8E85041221D9D728DFD5441F2516C17E8E8504164AA94658DFD54412867B213E8E85041119F77438DFD54417003A013E8E850413D44CF428DFD544127AE1B13E3E85041A974B3688CFD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193231 - 3039273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000C3F528FC4FAF50410000005038C454410AD7A38046AF5041CDCCCCEC19C45441B81E856B40AF5041AE47E1AA1DC45441D7A3707D32AF50419A99994924C45441AE47E17A1AAF50410AD7A30029C45441713D0AC71FAF5041AE47E15A3BC45441713D0A47FCAE5041A4703D4A42C45441295C8FC2F6AE5041C3F5280C30C45441EC51B81EF3AE50413D0AD7B330C454418FC2F558FCAE50413D0AD7434EC454417B14AE27FFAE5041CDCCCC6C50C45441D7A370FD00AF50417B14AEA74EC4544185EB51E805AF5041E17A14BE4DC45441F6285C4F0BAF5041333333A34CC45441333333A30CAF5041CDCCCC3C4CC4544185EB51E811AF5041AE47E11A4CC4544152B81E8514AF5041C3F5289C4DC454416666668619AF5041713D0AD74BC45441B81E852B19AF504148E17AA44AC45441B81E854B1BAF5041666666B649C45441713D0A771DAF5041CDCCCCDC4BC454418FC2F5381FAF5041EC51B80E4AC45441000000B027AF504152B81EB544C454413D0AD7B328AF50411F85EB0144C45441000000A028AF5041EC51B8BE42C454419A99999926AF5041000000203FC454415C8FC2B526AF5041E17A142E3EC4544148E17A9428AF5041D7A370BD3CC45441D7A3708D2BAF50413D0AD7533CC454413333334331AF5041333333E33CC45441CDCCCC7C34AF504148E17A843DC45441295C8F1235AF504185EB51483EC45441B81E85EB35AF5041A4703DCA40C45441D7A3703D39AF50410AD7A3D041C45441F6285C9F3AAF5041CDCCCC8C43C454418FC2F5683AAF504148E17AE444C45441F6285CEF37AF50416666662648C45441A4703D8A37AF50415C8FC2E549C454411F85EB0138AF5041C3F5280C4DC45441C3F5281C39AF5041EC51B88E4EC454419A9999993AAF5041295C8FD24EC454413D0AD7933DAF5041E17A14DE4DC454411F85EBB141AF5041C3F528FC47C454411F85EBD145AF50415C8FC23543C4544114AE474147AF5041A4703D8A41C45441333333E348AF504185EB514840C454415C8FC2454DAF5041EC51B81E3CC454419A9999894FAF5041666666363BC45441B81E855B51AF50410AD7A3E039C45441C3F528FC4FAF50410000005038C45441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000061B5C57FF7AE50410A1666BB3EC45441147C70C9F8AE50413AE890DB42C4544183431C40FAAE50411403EA8B47C454410D3569A1FBAE5041E6E39E044CC454418FC2F558FCAE50413D0AD7434EC45441000000A01EAF50410000003046C454414CA0D0F427AF504190C5B0853AC4544114AE47C135AF50415C8FC2E53BC45441DAE72FC73EAF50410B0EEBE244C45441C3F528FC4FAF50410000005038C45441F87579B34FAF504188A4126737C45441BF758FCC4DAF50410FD2B64E31C454410AD7A38046AF5041CDCCCCEC19C4544158A1D0B940AF504196B6B47A1DC45441D7A3707D32AF50419A99994924C45441DFC6E05623AF5041D0D5754127C454413F7ADE7A1DAF50411BD6546728C45441AE47E17A1AAF50410AD7A30029C454410BD56CED1AAF50415E79778D2AC45441713D0AC71FAF5041AE47E15A3BC454415AB5AD411FAF50417EB4EE743BC4544152BA0F6018AF5041C56C11CD3CC45441713D0A47FCAE5041A4703D4A42C45441D447E0D9F9AE5041FCA77C443AC45441295C8FC2F6AE5041C3F5280C30C45441EC51B81EF3AE50413D0AD7B330C4544161B5C57FF7AE50410A1666BB3EC45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193231 - 3279195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000C3F528FC4FAF50410000005038C454410AD7A38046AF5041CDCCCCEC19C45441B81E856B40AF5041AE47E1AA1DC45441D7A3707D32AF50419A99994924C45441AE47E17A1AAF50410AD7A30029C45441713D0AC71FAF5041AE47E15A3BC45441713D0A47FCAE5041A4703D4A42C45441295C8FC2F6AE5041C3F5280C30C45441EC51B81EF3AE50413D0AD7B330C454418FC2F558FCAE50413D0AD7434EC454417B14AE27FFAE5041CDCCCC6C50C45441D7A370FD00AF50417B14AEA74EC4544185EB51E805AF5041E17A14BE4DC45441F6285C4F0BAF5041333333A34CC45441333333A30CAF5041CDCCCC3C4CC4544185EB51E811AF5041AE47E11A4CC4544152B81E8514AF5041C3F5289C4DC454416666668619AF5041713D0AD74BC45441B81E852B19AF504148E17AA44AC45441B81E854B1BAF5041666666B649C45441713D0A771DAF5041CDCCCCDC4BC454418FC2F5381FAF5041EC51B80E4AC45441000000B027AF504152B81EB544C454413D0AD7B328AF50411F85EB0144C45441000000A028AF5041EC51B8BE42C454419A99999926AF5041000000203FC454415C8FC2B526AF5041E17A142E3EC4544148E17A9428AF5041D7A370BD3CC45441D7A3708D2BAF50413D0AD7533CC454413333334331AF5041333333E33CC45441CDCCCC7C34AF504148E17A843DC45441295C8F1235AF504185EB51483EC45441B81E85EB35AF5041A4703DCA40C45441D7A3703D39AF50410AD7A3D041C45441F6285C9F3AAF5041CDCCCC8C43C454418FC2F5683AAF504148E17AE444C45441F6285CEF37AF50416666662648C45441A4703D8A37AF50415C8FC2E549C454411F85EB0138AF5041C3F5280C4DC45441C3F5281C39AF5041EC51B88E4EC454419A9999993AAF5041295C8FD24EC454413D0AD7933DAF5041E17A14DE4DC454411F85EBB141AF5041C3F528FC47C454411F85EBD145AF50415C8FC23543C4544114AE474147AF5041A4703D8A41C45441333333E348AF504185EB514840C454415C8FC2454DAF5041EC51B81E3CC454419A9999894FAF5041666666363BC45441B81E855B51AF50410AD7A3E039C45441C3F528FC4FAF50410000005038C45441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000061B5C57FF7AE50410A1666BB3EC45441147C70C9F8AE50413AE890DB42C4544183431C40FAAE50411403EA8B47C454410D3569A1FBAE5041E6E39E044CC454418FC2F558FCAE50413D0AD7434EC45441000000A01EAF50410000003046C454414CA0D0F427AF504190C5B0853AC4544114AE47C135AF50415C8FC2E53BC45441DAE72FC73EAF50410B0EEBE244C45441C3F528FC4FAF50410000005038C45441F87579B34FAF504188A4126737C45441BF758FCC4DAF50410FD2B64E31C454410AD7A38046AF5041CDCCCCEC19C4544158A1D0B940AF504196B6B47A1DC45441D7A3707D32AF50419A99994924C45441DFC6E05623AF5041D0D5754127C454413F7ADE7A1DAF50411BD6546728C45441AE47E17A1AAF50410AD7A30029C454410BD56CED1AAF50415E79778D2AC45441713D0AC71FAF5041AE47E15A3BC454415AB5AD411FAF50417EB4EE743BC4544152BA0F6018AF5041C56C11CD3CC45441713D0A47FCAE5041A4703D4A42C45441D447E0D9F9AE5041FCA77C443AC45441295C8FC2F6AE5041C3F5280C30C45441EC51B81EF3AE50413D0AD7B330C4544161B5C57FF7AE50410A1666BB3EC45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>194230 - 194456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D0A0E16514114AE47F182F25441A4703D9A12165141000000607EF25441000000D018165141295C8F4279F2544152B81EF51A16514152B81E8577F25441B81E85FB1D165141E17A140E75F254418FC2F57820165141713D0AC772F25441CDCCCC0C22165141C3F5282C71F2544152B81E15271651411F85EB516CF2544185EB512828165141000000D06AF254411F85EB012A165141CDCCCCCC67F254413D0AD75324165141D7A3707D68F254418FC2F52822165141000000F06BF25441D7A3706D2016514152B81E256EF254415C8FC2451E1651418FC2F58870F254410AD7A370191651411F85EB8175F25441D7A3703D121651410AD7A3907BF25441EC51B89E0C16514152B81E9580F254411F85EB61FF155141713D0AB78CF25441666666F6F81551415C8FC28592F2544148E17AF4F31551419A99993997F25441AE47E15AF61551413D0AD75399F25441666666E6FD1551413D0AD77392F25441666666E6001651418FC2F5B88FF25441EC51B89E0C165141B81E855B84F25441A4703D0A0E16514114AE47F182F25441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000CD01BC9E0C1651412A72815B84F25441A4703D0A0E16514114AE47F182F254419E67C39D0C165141E330FF9580F254415BC4437B08165141D324236084F254413891EC61FF155141F29C0AB78CF25441946C94E9FA155141555734C290F25441666666F6F81551415C8FC28592F2544149C57BF4F31551417CC3983997F254416477E25AF6155141A5BFD55399F2544195C465E6FD155141C30DD77392F25441B69420E5FE1551417DC6098C91F25441666666E6001651418FC2F5B88FF254419CE18A4D0916514174CFF99287F25441CD01BC9E0C1651412A72815B84F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>194230 - 384280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D0A0E16514114AE47F182F25441A4703D9A12165141000000607EF25441000000D018165141295C8F4279F2544152B81EF51A16514152B81E8577F25441B81E85FB1D165141E17A140E75F254418FC2F57820165141713D0AC772F25441CDCCCC0C22165141C3F5282C71F2544152B81E15271651411F85EB516CF2544185EB512828165141000000D06AF254411F85EB012A165141CDCCCCCC67F254413D0AD75324165141D7A3707D68F254418FC2F52822165141000000F06BF25441D7A3706D2016514152B81E256EF254415C8FC2451E1651418FC2F58870F254410AD7A370191651411F85EB8175F25441D7A3703D121651410AD7A3907BF25441EC51B89E0C16514152B81E9580F254411F85EB61FF155141713D0AB78CF25441666666F6F81551415C8FC28592F2544148E17AF4F31551419A99993997F25441AE47E15AF61551413D0AD75399F25441666666E6FD1551413D0AD77392F25441666666E6001651418FC2F5B88FF25441EC51B89E0C165141B81E855B84F25441A4703D0A0E16514114AE47F182F25441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000D802BC9E0C1651412071815B84F254415454FA090E165141E58D8AF182F254419B67C39D0C165141E530FF9580F2544157C4437B08165141CF24236084F254413891EC61FF155141F29C0AB78CF25441946C94E9FA155141555734C290F25441666666F6F81551415C8FC28592F2544149C57BF4F31551417CC3983997F254416477E25AF6155141A5BFD55399F2544195C465E6FD155141C30DD77392F25441B89420E5FE1551417DC6098C91F25441666666E6001651418FC2F5B88FF254410064D34C091651413ABEAB9387F2544149D8B79E0C165141781E855B84F25441D802BC9E0C1651412071815B84F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1608 - 59450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000500000014AE47418E6C5041295C8F52292D5541C3F5286C916C5041CDCCCCAC2D2D554152B81E45BA6C5041713D0A27142D5541C3F528ECB76C504185EB51480F2D554114AE47418E6C5041295C8F52292D5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000B83BBCC5AB6C5041D89C00361D2D5541465F0738BA6C5041C9B5E10B142D554193DAFC95B96C50418542B8BB122D55413986D282B86C50411A4FE080102D5541D2B270C9B76C5041E79D045E0F2D554114AE47418E6C5041295C8F52292D5541C3F5286C916C5041CDCCCCAC2D2D5541B83BBCC5AB6C5041D89C00361D2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537931 - 1242461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003C000000AE77A3AD316151417580797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C54419A999929396151419A999979E06C54418FC2F5E838615141295C8FF2DF6C54410000003037615141000000C0DF6C5441CDCCCC6C356151413D0AD783DF6C5441295C8F5232615141333333C3DE6C5441E17A14EE3061514185EB51F8DD6C5441333333932F615141E17A14EEDC6C544152B81E252461514185EB5168D26C544133333323236151417B14AEB7D16C5441EC51B8BE2261514133333373D16C54419A99998920615141E17A141ED06C5441000000101F615141E17A140ECF6C5441000000601B61514166666666CC6C5441B81E854B1961514100000070CB6C5441666666D618615141295C8FE2CA6C5441E17A14CE17615141E17A144EC96C54419A99990916615141B81E856BC76C54419A999969146151411F85EBC1C66C544148E17AB4116151417B14AE67C56C544148E17AB410615141295C8F42C56C5441E17A140E10615141E17A149EC46C5441000000100F61514114AE4711C36C5441A4703DEA0D615141EC51B8FEC16C5441AE47E13A0B615141EC51B85EC06C54411F85EB81076151419A999929BE6C5441AE47E13A036151413D0AD773BB6C54418FC2F57801615141B81E855BBA6C54418FC2F598FA6051411F85EB11B66C54413D0AD7D3F260514152B81ED5B16C5441F6285CBFF2605141CDCCCC0CB26C544114AE4711EF6051411F85EBA1B66C544185EB5128CF6051419A999949DE6C5441A4703DFAD0605141666666F6DE6C5441A4703DCAD46051419A999959DD6C5441333333F3DD6051415C8FC255E26C544133333343E2605141666666F6E46C5441D7A370DDE560514185EB51A8E66C5441138A818AE560514133F898E6E56C5441EC51B80EE3605141F6285C9FE26C54416282F8FEE3605141CD1F8FC3E06C5441333333E3E36051415C8FC235E06C5441B8068DF9E460514195F6FD78DD6C544107DA3C40E6605141F74F9EEBDA6C5441D7A370ADE9605141713D0AE7D66C54419A999939F1605141333333E3CD6C544185EB5168F860514152B81E05C56C54417A3036B6F9605141C48AE94FC36C54414E25E207FA605141B3A6BB83C26C544114AE476100615141F6285C5FC56C544185EB51E8066151419A999969C86C544138142CA10A615141DF89EEFAC96C54411F85EB61156151418FC2F518CE6C5441A4703D0A1E615141AE47E19AD16C5441A4703D4A256151411F85EBB1D66C54410AD7A3C030615141CDCCCCFCE06C5441AE77A3AD316151417580797AE26C5441
+</a>
+
+<b>
+01060000000100000001030000000100000042000000E254458DF660514156BE76C4C66C54414C86C9B5F96051418F0D317BC26C54418703AEFEF96051412AFBBD9AC26C54414F25E207FA605141B5A6BB83C26C54413D09652100615141A7929A42C56C54415B971DD3086151410FBDF905C96C54411F85EB61156151418FC2F518CE6C5441A4703D0A1E615141AE47E19AD16C5441A4703D4A256151411F85EBB1D66C54410AD7A3C030615141CDCCCCFCE06C5441B377A3AD316151417D80797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C54419A999929396151419A999979E06C54418FC2F5E838615141295C8FF2DF6C54410000003037615141000000C0DF6C5441CDCCCC6C356151413D0AD783DF6C5441295C8F5232615141333333C3DE6C5441E17A14EE3061514185EB51F8DD6C5441333333932F615141E17A14EEDC6C544152B81E252461514185EB5168D26C544133333323236151417B14AEB7D16C5441EC51B8BE2261514133333373D16C54419A99998920615141E17A141ED06C5441000000101F615141E17A140ECF6C5441000000601B61514166666666CC6C5441B81E854B1961514100000070CB6C5441666666D618615141295C8FE2CA6C5441E17A14CE17615141E17A144EC96C54419A99990916615141B81E856BC76C54419A999969146151411F85EBC1C66C544148E17AB4116151417B14AE67C56C544148E17AB410615141295C8F42C56C5441E17A140E10615141E17A149EC46C5441000000100F61514114AE4711C36C5441A4703DEA0D615141EC51B8FEC16C5441AE47E13A0B615141EC51B85EC06C54411F85EB81076151419A999929BE6C5441AE47E13A036151413D0AD773BB6C54418FC2F57801615141B81E855BBA6C54418FC2F598FA6051411F85EB11B66C5441CAD6002BF36051412097DA8FB16C54416D573F0AF2605141D0C9DB76B26C5441B78C3A6EEE605141E32D6186B66C5441996A9233D06051419C63575BDF6C5441A4703DFAD0605141666666F6DE6C5441A4703DCAD46051419A999959DD6C5441333333F3DD6051415C8FC255E26C544133333343E2605141666666F6E46C5441D7A370DDE560514185EB51A8E66C54410E8A818AE560514134F898E6E56C5441135F2D81E46051410F95DB83E26C54415D82F8FEE3605141CE1F8FC3E06C5441135F2D81E460514155965842E06C5441B9068DF9E460514190F6FD78DD6C5441FDE09A50E56051410842E2CADC6C5441C6912E68E5605141E57E936CDC6C54417EC7A0B3E56051410875D604DC6C544106DA3C40E6605141F74F9EEBDA6C54410F762123E8605141A0DF64B5D86C5441398F34EBE9605141BD684B55D66C544170414D34EC6051415DCE67E2D36C5441D3A7A258F06051418FDAE7EFCE6C54416F573F0AF26051417ED4BEDBCC6C5441E254458DF660514156BE76C4C66C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537931 - 3314665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003C000000AE77A3AD316151417580797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C54419A999929396151419A999979E06C54418FC2F5E838615141295C8FF2DF6C54410000003037615141000000C0DF6C5441CDCCCC6C356151413D0AD783DF6C5441295C8F5232615141333333C3DE6C5441E17A14EE3061514185EB51F8DD6C5441333333932F615141E17A14EEDC6C544152B81E252461514185EB5168D26C544133333323236151417B14AEB7D16C5441EC51B8BE2261514133333373D16C54419A99998920615141E17A141ED06C5441000000101F615141E17A140ECF6C5441000000601B61514166666666CC6C5441B81E854B1961514100000070CB6C5441666666D618615141295C8FE2CA6C5441E17A14CE17615141E17A144EC96C54419A99990916615141B81E856BC76C54419A999969146151411F85EBC1C66C544148E17AB4116151417B14AE67C56C544148E17AB410615141295C8F42C56C5441E17A140E10615141E17A149EC46C5441000000100F61514114AE4711C36C5441A4703DEA0D615141EC51B8FEC16C5441AE47E13A0B615141EC51B85EC06C54411F85EB81076151419A999929BE6C5441AE47E13A036151413D0AD773BB6C54418FC2F57801615141B81E855BBA6C54418FC2F598FA6051411F85EB11B66C54413D0AD7D3F260514152B81ED5B16C5441F6285CBFF2605141CDCCCC0CB26C544114AE4711EF6051411F85EBA1B66C544185EB5128CF6051419A999949DE6C5441A4703DFAD0605141666666F6DE6C5441A4703DCAD46051419A999959DD6C5441333333F3DD6051415C8FC255E26C544133333343E2605141666666F6E46C5441D7A370DDE560514185EB51A8E66C5441138A818AE560514133F898E6E56C5441EC51B80EE3605141F6285C9FE26C54416282F8FEE3605141CD1F8FC3E06C5441333333E3E36051415C8FC235E06C5441B8068DF9E460514195F6FD78DD6C544107DA3C40E6605141F74F9EEBDA6C5441D7A370ADE9605141713D0AE7D66C54419A999939F1605141333333E3CD6C544185EB5168F860514152B81E05C56C54417A3036B6F9605141C48AE94FC36C54414E25E207FA605141B3A6BB83C26C544114AE476100615141F6285C5FC56C544185EB51E8066151419A999969C86C544138142CA10A615141DF89EEFAC96C54411F85EB61156151418FC2F518CE6C5441A4703D0A1E615141AE47E19AD16C5441A4703D4A256151411F85EBB1D66C54410AD7A3C030615141CDCCCCFCE06C5441AE77A3AD316151417580797AE26C5441
+</a>
+
+<b>
+01060000000100000001030000000100000042000000E254458DF660514156BE76C4C66C54414C86C9B5F96051418F0D317BC26C54418703AEFEF96051412AFBBD9AC26C54414F25E207FA605141B5A6BB83C26C54413D09652100615141A7929A42C56C54415B971DD3086151410FBDF905C96C54411F85EB61156151418FC2F518CE6C5441A4703D0A1E615141AE47E19AD16C5441A4703D4A256151411F85EBB1D66C54410AD7A3C030615141CDCCCCFCE06C5441B377A3AD316151417D80797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C54419A999929396151419A999979E06C54418FC2F5E838615141295C8FF2DF6C54410000003037615141000000C0DF6C5441CDCCCC6C356151413D0AD783DF6C5441295C8F5232615141333333C3DE6C5441E17A14EE3061514185EB51F8DD6C5441333333932F615141E17A14EEDC6C544152B81E252461514185EB5168D26C544133333323236151417B14AEB7D16C5441EC51B8BE2261514133333373D16C54419A99998920615141E17A141ED06C5441000000101F615141E17A140ECF6C5441000000601B61514166666666CC6C5441B81E854B1961514100000070CB6C5441666666D618615141295C8FE2CA6C5441E17A14CE17615141E17A144EC96C54419A99990916615141B81E856BC76C54419A999969146151411F85EBC1C66C544148E17AB4116151417B14AE67C56C544148E17AB410615141295C8F42C56C5441E17A140E10615141E17A149EC46C5441000000100F61514114AE4711C36C5441A4703DEA0D615141EC51B8FEC16C5441AE47E13A0B615141EC51B85EC06C54411F85EB81076151419A999929BE6C5441AE47E13A036151413D0AD773BB6C54418FC2F57801615141B81E855BBA6C54418FC2F598FA6051411F85EB11B66C5441CAD6002BF36051412097DA8FB16C54416D573F0AF2605141D0C9DB76B26C5441B78C3A6EEE605141E32D6186B66C5441996A9233D06051419C63575BDF6C5441A4703DFAD0605141666666F6DE6C5441A4703DCAD46051419A999959DD6C5441333333F3DD6051415C8FC255E26C544133333343E2605141666666F6E46C5441D7A370DDE560514185EB51A8E66C54410E8A818AE560514134F898E6E56C5441135F2D81E46051410F95DB83E26C54415D82F8FEE3605141CE1F8FC3E06C5441135F2D81E460514155965842E06C5441B9068DF9E460514190F6FD78DD6C5441FDE09A50E56051410842E2CADC6C5441C6912E68E5605141E57E936CDC6C54417EC7A0B3E56051410875D604DC6C544106DA3C40E6605141F74F9EEBDA6C54410F762123E8605141A0DF64B5D86C5441398F34EBE9605141BD684B55D66C544170414D34EC6051415DCE67E2D36C5441D3A7A258F06051418FDAE7EFCE6C54416F573F0AF26051417ED4BEDBCC6C5441E254458DF660514156BE76C4C66C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447285 - 447447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF373354411F85EB61B24651411F85EB8137335441CDCCCC3CB1465141C3F5284C403354411F85EBF1B046514166666686463354413D0AD773B0465141000000604D335441666666D6AF465141E17A14BE52335441AE47E11AAF4651410AD7A3E057335441D7A3708DB0465141000000A05D335441AE47E19AB146514114AE472161335441A4703DAAB1465141EC51B8BE613354413D0AD7C3B0465141333333E362335441EC51B81EAE465141295C8F8264335441295C8F92AA4651411F85EB2166335441000000D0AA465141C3F528BC663354419A999909AD4651413D0AD7F3653354415C8FC265AD4651415C8FC25567335441C3F528BCAC465141F6285C8F693354413D0AD703AC465141C3F528DC693354410AD7A350AC4651413D0AD7B36A33544114AE4771AF4651410AD7A37069335441E17A14BEAF465141295C8FD26A335441D7A3703DAE4651417B14AE076F335441D7A370EDA746514152B81EE570335441F6285CAFA746514148E17A646F335441CDCCCCCCA4465141AE47E14A70335441A4703D7AA34651417B14AEE76B335441000000F0A24651415C8FC2156C335441713D0A37A24651417B14AEB768335441B81E85CBA1465141F6285CFF6733544114AE4731A14651410AD7A3E067335441E17A145E9E46514185EB51A86833544148E17A349C465141295C8F4269335441E17A142E98465141333333136B335441713D0AC798465141CDCCCC0C703354417B14AE379B4651411F85EBB17B3354413D0AD7839B465141EC51B81E7D3354418FC2F5389C4651415C8FC2757E335441B81E850B9D465141000000D07F335441B81E85AB9D4651417B14AE67803354415C8FC2A59E465141AE47E11A813354415C8FC2959F465141666666A681335441C3F5281CA34651417B14AE57833354411F85EBF1A4465141B81E852B84335441E17A144EA74651413D0AD73385335441C3F528ECAB465141AE47E1BA833354419A9999B9AB465141F6285C3F8333544152B81E95AA465141000000A07F3354411F85EB91B0465141000000407D33544133333303B74651413D0AD7037A3354417B14AE77BC465141666666B67733544114AE47D1BD4651410AD7A33077335441AE47E14AC14651410AD7A3D0753354411E6C7D48C746514191C70FD872335441A4703D0AC54651413D0AD7336D335441C3F5289CBE465141D7A3709D5E33544148E17AD4BD465141666666165D335441CDCCCC7CB7465141AE47E18A5E335441333333B3B1465141CDCCCCFC5F3354419A9999F9B0465141C3F528BC5D335441713D0A87AF46514114AE47015833544148E17A64B04651419A9999D95233544152B81EE5B0465141A4703D8A4D335441CDCCCC5CB1465141F6285C7F46335441CDCCCC7CB1465141A4703DEA42335441B81E85ABB14651416666665640335441295C8FF2B2465141E17A145E373354416799DC85B346514163F7F56F3033544110AD7EE7AB465141919CF48D3033544105000000333333B3B1465141713D0A17683354418FC2F568B1465141B81E852B673354410AD7A300B3465141B81E859B66335441A4703D4AB34651413D0AD78367335441333333B3B1465141713D0A176833544101030000000100000005000000AE47E12A904651417B14AE67A13354417B14AE67964651410AD7A3709E3354410AD7A3908E465141713D0A477C3354416666662689465141A4703D6A7E335441AE47E12A904651417B14AE67A13354410103000000020000000D0000000AD7A39089465141D7A3701DA5335441E17A14CE83465141A4703DCAA73354411F85EB617F4651418FC2F5A8A93354413D0AD7A37B4651415C8FC2A5AA335441EC51B85E7846514166666676AA3354413333332378465141D7A3704DAB335441CDCCCC1C774651417B14AE67B13354417B14AEC778465141D7A370BDB3335441D7A3703D7A46514166666666B53354419A9999697F465141B81E85DBB0335441C3F5289C82465141CDCCCC0CAE335441AE47E1CA86465141C3F528ACA83354410AD7A39089465141D7A3701DA533544105000000B81E853B80465141F6285CBFAA335441B81E853B80465141D7A370DDA9335441E17A141E814651415C8FC2E5A933544152B81E1581465141F6285CBFAA335441B81E853B80465141F6285CBFAA3354410103000000010000000A000000666666965E46514148E17AF478365441AE47E10A6146514114AE47617136544148E17A145E4651415C8FC275703654415C8FC29544465141D7A3706D73365441E17A149E44465141295C8F2278365441E17A14FE43465141A4703D9A7A3654413D0AD7F33F465141F6285CFF7F3654411F85EBE14D4651415C8FC2557E365441295C8F725D465141A4703D7A7C365441666666965E46514148E17AF478365441
+</a>
+
+<b>
+01060000000100000001030000000200000078000000AE47E1EA864651415C8FC2653B33544185EB5148884651417B14AEF73C335441666666E688465141EC51B8EE3D335441E17A145E89465141295C8F123F3354415C8FC295894651413D0AD7933F335441AE47E11A8A46514114AE4751403354411F85EB018B4651410AD7A32041335441B81E857B8B46514185EB5168433354411F85EB118C465141D7A3700D453354419A9999798C4651417B14AEF7453354411F85EB318D465141CDCCCC2C463354413333334391465141A4703D5A47335441666666E69446514185EB51D84A33544152B81EE595465141E17A14FE4B335441F6285C9F964651419A9999B94A33544166666676954651413D0AD7A34933544166666646974651418FC2F5F8473354411F85EBB1964651418FC2F598463354413333330399465141000000704533544148E17AF49946514114AE47C14733544148E17A549B4651413D0AD77346335441F6285CFF9C4651419A99998947335441F6285CFF9C465141713D0A4749335441AE47E11A9F4651410AD7A320493354411F85EB41A0465141AE47E1DA493354413D0AD7A3A0465141333333E34E335441F6285CFF974651411F85EB814F33544152B81EB597465141333333734B335441D7A370BD9646514148E17A944C335441666666F694465141333333334F3354418FC2F56893465141EC51B8CE51335441EC51B87E9246514100000070543354417B14AE17924651418FC2F5D855335441CDCCCCAC91465141C3F5280C58335441CDCCCC7C91465141000000605A335441B81E858B914651419A9999795E335441A4703D4A934651410000008061335441333333D39446514114AE4751643354419A9999E997465141295C8F026A335441B81E85DB9846514185EB51A869335441295C8F229C4651411F85EB9168335441B81E85FBA04651411F85EBE1663354418FC2F508A4465141295C8FB2653354410AD7A390A6465141295C8FC264335441AE47E14AA9465141E17A149E63335441713D0AE7AB46514114AE47B162335441D7A3704DAF465141333333B361335441AE47E19AB146514114AE472161335441D7A3708DB0465141000000A05D335441AE47E11AAF4651410AD7A3E057335441666666D6AF465141E17A14BE523354413D0AD773B0465141000000604D3354411F85EBF1B04651416666668646335441CDCCCC3CB1465141C3F5284C403354411F85EB61B24651411F85EB81373354418FC2F508AF465141F6285CFF37335441C3F5283CAD4651410000005038335441C3F528FCAA4651410AD7A3B03833544100000080AB465141F6285C6F32335441713D0AE7AA465141F6285C0F3133544185EB51C8AA46514185EB5118303354419A9999B9AA465141AE47E1AA2E33544152B81E75AA465141295C8F722D3354411F85EBF1A9465141EC51B8FE2B335441C3F5284CA9465141E17A148E2B33544148E17A54A846514185EB51082B335441B81E85FBA6465141E17A146E2A3354413D0AD703A1465141B81E858B2A33544148E17A849C465141000000B02A33544152B81EB598465141A4703DFA2A33544185EB51B893465141000000302B33544166666656924651415C8FC2F5243354418FC2F5C88F465141A4703DBA193354415C8FC26591465141F6285C0F213354413D0AD7A38D4651419A9999591B33544114AE47618A465141E17A14BE18335441E17A14EE88465141666666C610335441CDCCCC6C8846514185EB51B807335441295C8FA27C4651410000004008335441D7A3702D83465141A4703D1A13335441713D0A577D465141EC51B88E10335441EC51B85E7A46514185EB51E80A335441000000D076465141E17A148E0A33544185EB51A8734651419A99991909335441F6285C9F7046514148E17AC40B335441D7A3707D6E4651413333332311335441EC51B88E6A465141E17A149E0C3354413D0AD763654651410AD7A3300D335441EC51B85E614651419A9999C907335441CDCCCC9C5F465141B81E854B0933544148E17AF463465141666666B60F33544152B81EF564465141E17A141E1233544148E17AC465465141E17A146E14335441AE47E17A6646514152B81E851533544114AE4791674651410AD7A3901633544114AE47E168465141EC51B8AE173354417B14AED76946514148E17AB418335441B81E85CB6A4651413D0AD7531A3354418FC2F5486B465141A4703D1A1B33544148E17A446D465141E17A143E1C335441D7A370FD6D4651413D0AD7131D335441C3F5285C6F4651413D0AD7D31E33544114AE47E170465141713D0A771E33544185EB51087346514114AE47111C33544148E17A4478465141B81E857B1D335441EC51B82E7F465141B81E859B21335441AE47E18A86465141CDCCCC4C1D33544114AE47918846514185EB51C820335441B81E854B844651411F85EBB124335441A4703D5A83465141713D0A372633544114AE47418546514114AE47E12933544185EB510886465141EC51B85E2D335441E17A148E87465141295C8F322F335441A4703D1A8A465141666666B62E33544148E17AE48C4651418FC2F5482C3354413D0AD7038F46514148E17A842C3354413D0AD7A38D46514148E17AB42F3354417B14AEA789465141B81E858B3333544114AE4701844651413333335338335441AE47E1EA864651415C8FC2653B335441050000008FC2F5A8A1465141A4703D7A4F335441D7A3700DA3465141295C8F724F335441D7A3700DA34651417B14AEC75033544114AE47A1A14651417B14AEC7503354418FC2F5A8A1465141A4703D7A4F335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447285 - 1123046
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF373354411F85EB61B24651411F85EB8137335441CDCCCC3CB1465141C3F5284C403354411F85EBF1B046514166666686463354413D0AD773B0465141000000604D335441666666D6AF465141E17A14BE52335441AE47E11AAF4651410AD7A3E057335441D7A3708DB0465141000000A05D335441AE47E19AB146514114AE472161335441A4703DAAB1465141EC51B8BE613354413D0AD7C3B0465141333333E362335441EC51B81EAE465141295C8F8264335441295C8F92AA4651411F85EB2166335441000000D0AA465141C3F528BC663354419A999909AD4651413D0AD7F3653354415C8FC265AD4651415C8FC25567335441C3F528BCAC465141F6285C8F693354413D0AD703AC465141C3F528DC693354410AD7A350AC4651413D0AD7B36A33544114AE4771AF4651410AD7A37069335441E17A14BEAF465141295C8FD26A335441D7A3703DAE4651417B14AE076F335441D7A370EDA746514152B81EE570335441F6285CAFA746514148E17A646F335441CDCCCCCCA4465141AE47E14A70335441A4703D7AA34651417B14AEE76B335441000000F0A24651415C8FC2156C335441713D0A37A24651417B14AEB768335441B81E85CBA1465141F6285CFF6733544114AE4731A14651410AD7A3E067335441E17A145E9E46514185EB51A86833544148E17A349C465141295C8F4269335441E17A142E98465141333333136B335441713D0AC798465141CDCCCC0C703354417B14AE379B4651411F85EBB17B3354413D0AD7839B465141EC51B81E7D3354418FC2F5389C4651415C8FC2757E335441B81E850B9D465141000000D07F335441B81E85AB9D4651417B14AE67803354415C8FC2A59E465141AE47E11A813354415C8FC2959F465141666666A681335441C3F5281CA34651417B14AE57833354411F85EBF1A4465141B81E852B84335441E17A144EA74651413D0AD73385335441C3F528ECAB465141AE47E1BA833354419A9999B9AB465141F6285C3F8333544152B81E95AA465141000000A07F3354411F85EB91B0465141000000407D33544133333303B74651413D0AD7037A3354417B14AE77BC465141666666B67733544114AE47D1BD4651410AD7A33077335441AE47E14AC14651410AD7A3D0753354411E6C7D48C746514191C70FD872335441A4703D0AC54651413D0AD7336D335441C3F5289CBE465141D7A3709D5E33544148E17AD4BD465141666666165D335441CDCCCC7CB7465141AE47E18A5E335441333333B3B1465141CDCCCCFC5F3354419A9999F9B0465141C3F528BC5D335441713D0A87AF46514114AE47015833544148E17A64B04651419A9999D95233544152B81EE5B0465141A4703D8A4D335441CDCCCC5CB1465141F6285C7F46335441CDCCCC7CB1465141A4703DEA42335441B81E85ABB14651416666665640335441295C8FF2B2465141E17A145E373354416799DC85B346514163F7F56F3033544110AD7EE7AB465141919CF48D3033544105000000333333B3B1465141713D0A17683354418FC2F568B1465141B81E852B673354410AD7A300B3465141B81E859B66335441A4703D4AB34651413D0AD78367335441333333B3B1465141713D0A176833544101030000000100000005000000AE47E12A904651417B14AE67A13354417B14AE67964651410AD7A3709E3354410AD7A3908E465141713D0A477C3354416666662689465141A4703D6A7E335441AE47E12A904651417B14AE67A13354410103000000020000000D0000000AD7A39089465141D7A3701DA5335441E17A14CE83465141A4703DCAA73354411F85EB617F4651418FC2F5A8A93354413D0AD7A37B4651415C8FC2A5AA335441EC51B85E7846514166666676AA3354413333332378465141D7A3704DAB335441CDCCCC1C774651417B14AE67B13354417B14AEC778465141D7A370BDB3335441D7A3703D7A46514166666666B53354419A9999697F465141B81E85DBB0335441C3F5289C82465141CDCCCC0CAE335441AE47E1CA86465141C3F528ACA83354410AD7A39089465141D7A3701DA533544105000000B81E853B80465141F6285CBFAA335441B81E853B80465141D7A370DDA9335441E17A141E814651415C8FC2E5A933544152B81E1581465141F6285CBFAA335441B81E853B80465141F6285CBFAA3354410103000000010000000A000000666666965E46514148E17AF478365441AE47E10A6146514114AE47617136544148E17A145E4651415C8FC275703654415C8FC29544465141D7A3706D73365441E17A149E44465141295C8F2278365441E17A14FE43465141A4703D9A7A3654413D0AD7F33F465141F6285CFF7F3654411F85EBE14D4651415C8FC2557E365441295C8F725D465141A4703D7A7C365441666666965E46514148E17AF478365441
+</a>
+
+<b>
+01060000000100000001030000000200000079000000B81E858B914651419A9999795E33544148E17AB4914651413D0AD7536333544114AE470192465141B81E856B6B3354417B14AE7792465141AE47E11A6C3354413D0AD76393465141F6285CEF6B3354419A9999E997465141295C8F026A335441B81E85DB9846514185EB51A869335441295C8F229C4651411F85EB9168335441B81E85FBA04651411F85EBE1663354418FC2F508A4465141295C8FB2653354410AD7A390A6465141295C8FC264335441AE47E14AA9465141E17A149E63335441713D0AE7AB46514114AE47B162335441D7A3704DAF465141333333B361335441AE47E19AB146514114AE472161335441D7A3708DB0465141000000A05D335441AE47E11AAF4651410AD7A3E057335441666666D6AF465141E17A14BE523354413D0AD773B0465141000000604D3354411F85EBF1B04651416666668646335441CDCCCC3CB1465141C3F5284C403354411F85EB61B24651411F85EB81373354418FC2F508AF465141F6285CFF37335441C3F5283CAD4651410000005038335441C3F528FCAA4651410AD7A3B03833544100000080AB465141F6285C6F32335441713D0AE7AA465141F6285C0F3133544185EB51C8AA46514185EB5118303354419A9999B9AA465141AE47E1AA2E33544152B81E75AA465141295C8F722D3354411F85EBF1A9465141EC51B8FE2B335441C3F5284CA9465141E17A148E2B33544148E17A54A846514185EB51082B335441B81E85FBA6465141E17A146E2A3354413D0AD703A1465141B81E858B2A33544148E17A849C465141000000B02A33544152B81EB598465141A4703DFA2A33544185EB51B893465141000000302B33544166666656924651415C8FC2F5243354415C8FC26591465141F6285C0F213354413D0AD7A38D4651419A9999591B33544114AE47618A465141E17A14BE18335441E17A14EE88465141666666C610335441CDCCCC6C8846514185EB51B807335441295C8FA27C4651410000004008335441D7A3702D83465141A4703D1A13335441713D0A577D465141EC51B88E10335441EC51B85E7A46514185EB51E80A335441000000D076465141E17A148E0A33544185EB51A8734651419A99991909335441F6285C9F7046514148E17AC40B335441D7A3707D6E4651413333332311335441EC51B88E6A465141E17A149E0C3354413D0AD763654651410AD7A3300D335441EC51B85E614651419A9999C907335441CDCCCC9C5F465141B81E854B0933544148E17AF463465141666666B60F33544152B81EF564465141E17A141E1233544148E17AC465465141E17A146E14335441AE47E17A6646514152B81E851533544114AE4791674651410AD7A3901633544114AE47E168465141EC51B8AE173354417B14AED76946514148E17AB418335441B81E85CB6A4651413D0AD7531A3354418FC2F5486B465141A4703D1A1B33544148E17A446D465141E17A143E1C335441D7A370FD6D4651413D0AD7131D335441C3F5285C6F4651413D0AD7D31E33544114AE47E170465141713D0A771E33544185EB51087346514114AE47111C33544148E17A4478465141B81E857B1D335441EC51B82E7F465141B81E859B21335441AE47E18A86465141CDCCCC4C1D33544114AE47918846514185EB51C820335441B81E854B844651411F85EBB124335441A4703D5A83465141713D0A372633544114AE47418546514114AE47E12933544185EB510886465141EC51B85E2D335441E17A148E87465141295C8F322F335441A4703D1A8A465141666666B62E33544148E17AE48C4651418FC2F5482C3354413D0AD7038F46514148E17A842C3354413D0AD7A38D46514148E17AB42F3354417B14AEA789465141B81E858B3333544114AE4701844651413333335338335441AE47E1EA864651415C8FC2653B33544185EB5148884651417B14AEF73C335441666666E688465141EC51B8EE3D335441E17A145E89465141295C8F123F3354415C8FC295894651413D0AD7933F335441AE47E11A8A46514114AE4751403354411F85EB018B4651410AD7A32041335441B81E857B8B46514185EB5168433354411F85EB118C465141D7A3700D453354419A9999798C4651417B14AEF7453354411F85EB318D465141CDCCCC2C463354413333334391465141A4703D5A47335441666666E69446514185EB51D84A33544152B81EE595465141E17A14FE4B335441F6285C9F964651419A9999B94A33544166666676954651413D0AD7A34933544166666646974651418FC2F5F8473354411F85EBB1964651418FC2F598463354413333330399465141000000704533544148E17AF49946514114AE47C14733544148E17A549B4651413D0AD77346335441F6285CFF9C4651419A99998947335441F6285CFF9C465141713D0A4749335441AE47E11A9F4651410AD7A320493354411F85EB41A0465141AE47E1DA493354413D0AD7A3A0465141333333E34E335441F6285CFF974651411F85EB814F33544152B81EB597465141333333734B335441D7A370BD9646514148E17A944C335441666666F694465141333333334F3354418FC2F56893465141EC51B8CE51335441EC51B87E9246514100000070543354417B14AE17924651418FC2F5D855335441CDCCCCAC91465141C3F5280C58335441CDCCCC7C91465141000000605A335441B81E858B914651419A9999795E335441050000008FC2F5A8A1465141A4703D7A4F335441D7A3700DA3465141295C8F724F335441D7A3700DA34651417B14AEC75033544114AE47A1A14651417B14AEC7503354418FC2F5A8A1465141A4703D7A4F335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447285 - 3280652
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF373354411F85EB61B24651411F85EB8137335441CDCCCC3CB1465141C3F5284C403354411F85EBF1B046514166666686463354413D0AD773B0465141000000604D335441666666D6AF465141E17A14BE52335441AE47E11AAF4651410AD7A3E057335441D7A3708DB0465141000000A05D335441AE47E19AB146514114AE472161335441A4703DAAB1465141EC51B8BE613354413D0AD7C3B0465141333333E362335441EC51B81EAE465141295C8F8264335441295C8F92AA4651411F85EB2166335441000000D0AA465141C3F528BC663354419A999909AD4651413D0AD7F3653354415C8FC265AD4651415C8FC25567335441C3F528BCAC465141F6285C8F693354413D0AD703AC465141C3F528DC693354410AD7A350AC4651413D0AD7B36A33544114AE4771AF4651410AD7A37069335441E17A14BEAF465141295C8FD26A335441D7A3703DAE4651417B14AE076F335441D7A370EDA746514152B81EE570335441F6285CAFA746514148E17A646F335441CDCCCCCCA4465141AE47E14A70335441A4703D7AA34651417B14AEE76B335441000000F0A24651415C8FC2156C335441713D0A37A24651417B14AEB768335441B81E85CBA1465141F6285CFF6733544114AE4731A14651410AD7A3E067335441E17A145E9E46514185EB51A86833544148E17A349C465141295C8F4269335441E17A142E98465141333333136B335441713D0AC798465141CDCCCC0C703354417B14AE379B4651411F85EBB17B3354413D0AD7839B465141EC51B81E7D3354418FC2F5389C4651415C8FC2757E335441B81E850B9D465141000000D07F335441B81E85AB9D4651417B14AE67803354415C8FC2A59E465141AE47E11A813354415C8FC2959F465141666666A681335441C3F5281CA34651417B14AE57833354411F85EBF1A4465141B81E852B84335441E17A144EA74651413D0AD73385335441C3F528ECAB465141AE47E1BA833354419A9999B9AB465141F6285C3F8333544152B81E95AA465141000000A07F3354411F85EB91B0465141000000407D33544133333303B74651413D0AD7037A3354417B14AE77BC465141666666B67733544114AE47D1BD4651410AD7A33077335441AE47E14AC14651410AD7A3D0753354411E6C7D48C746514191C70FD872335441A4703D0AC54651413D0AD7336D335441C3F5289CBE465141D7A3709D5E33544148E17AD4BD465141666666165D335441CDCCCC7CB7465141AE47E18A5E335441333333B3B1465141CDCCCCFC5F3354419A9999F9B0465141C3F528BC5D335441713D0A87AF46514114AE47015833544148E17A64B04651419A9999D95233544152B81EE5B0465141A4703D8A4D335441CDCCCC5CB1465141F6285C7F46335441CDCCCC7CB1465141A4703DEA42335441B81E85ABB14651416666665640335441295C8FF2B2465141E17A145E373354416799DC85B346514163F7F56F3033544110AD7EE7AB465141919CF48D3033544105000000333333B3B1465141713D0A17683354418FC2F568B1465141B81E852B673354410AD7A300B3465141B81E859B66335441A4703D4AB34651413D0AD78367335441333333B3B1465141713D0A176833544101030000000100000005000000AE47E12A904651417B14AE67A13354417B14AE67964651410AD7A3709E3354410AD7A3908E465141713D0A477C3354416666662689465141A4703D6A7E335441AE47E12A904651417B14AE67A13354410103000000020000000D0000000AD7A39089465141D7A3701DA5335441E17A14CE83465141A4703DCAA73354411F85EB617F4651418FC2F5A8A93354413D0AD7A37B4651415C8FC2A5AA335441EC51B85E7846514166666676AA3354413333332378465141D7A3704DAB335441CDCCCC1C774651417B14AE67B13354417B14AEC778465141D7A370BDB3335441D7A3703D7A46514166666666B53354419A9999697F465141B81E85DBB0335441C3F5289C82465141CDCCCC0CAE335441AE47E1CA86465141C3F528ACA83354410AD7A39089465141D7A3701DA533544105000000B81E853B80465141F6285CBFAA335441B81E853B80465141D7A370DDA9335441E17A141E814651415C8FC2E5A933544152B81E1581465141F6285CBFAA335441B81E853B80465141F6285CBFAA3354410103000000010000000A000000666666965E46514148E17AF478365441AE47E10A6146514114AE47617136544148E17A145E4651415C8FC275703654415C8FC29544465141D7A3706D73365441E17A149E44465141295C8F2278365441E17A14FE43465141A4703D9A7A3654413D0AD7F33F465141F6285CFF7F3654411F85EBE14D4651415C8FC2557E365441295C8F725D465141A4703D7A7C365441666666965E46514148E17AF478365441
+</a>
+
+<b>
+01060000000100000001030000000200000079000000B81E858B914651419A9999795E33544148E17AB4914651413D0AD7536333544114AE470192465141B81E856B6B3354417B14AE7792465141AE47E11A6C3354413D0AD76393465141F6285CEF6B3354419A9999E997465141295C8F026A335441B81E85DB9846514185EB51A869335441295C8F229C4651411F85EB9168335441B81E85FBA04651411F85EBE1663354418FC2F508A4465141295C8FB2653354410AD7A390A6465141295C8FC264335441AE47E14AA9465141E17A149E63335441713D0AE7AB46514114AE47B162335441D7A3704DAF465141333333B361335441AE47E19AB146514114AE472161335441D7A3708DB0465141000000A05D335441AE47E11AAF4651410AD7A3E057335441666666D6AF465141E17A14BE523354413D0AD773B0465141000000604D3354411F85EBF1B04651416666668646335441CDCCCC3CB1465141C3F5284C403354411F85EB61B24651411F85EB81373354418FC2F508AF465141F6285CFF37335441C3F5283CAD4651410000005038335441C3F528FCAA4651410AD7A3B03833544100000080AB465141F6285C6F32335441713D0AE7AA465141F6285C0F3133544185EB51C8AA46514185EB5118303354419A9999B9AA465141AE47E1AA2E33544152B81E75AA465141295C8F722D3354411F85EBF1A9465141EC51B8FE2B335441C3F5284CA9465141E17A148E2B33544148E17A54A846514185EB51082B335441B81E85FBA6465141E17A146E2A3354413D0AD703A1465141B81E858B2A33544148E17A849C465141000000B02A33544152B81EB598465141A4703DFA2A33544185EB51B893465141000000302B33544166666656924651415C8FC2F5243354415C8FC26591465141F6285C0F213354413D0AD7A38D4651419A9999591B33544114AE47618A465141E17A14BE18335441E17A14EE88465141666666C610335441CDCCCC6C8846514185EB51B807335441295C8FA27C4651410000004008335441D7A3702D83465141A4703D1A13335441713D0A577D465141EC51B88E10335441EC51B85E7A46514185EB51E80A335441000000D076465141E17A148E0A33544185EB51A8734651419A99991909335441F6285C9F7046514148E17AC40B335441D7A3707D6E4651413333332311335441EC51B88E6A465141E17A149E0C3354413D0AD763654651410AD7A3300D335441EC51B85E614651419A9999C907335441CDCCCC9C5F465141B81E854B0933544148E17AF463465141666666B60F33544152B81EF564465141E17A141E1233544148E17AC465465141E17A146E14335441AE47E17A6646514152B81E851533544114AE4791674651410AD7A3901633544114AE47E168465141EC51B8AE173354417B14AED76946514148E17AB418335441B81E85CB6A4651413D0AD7531A3354418FC2F5486B465141A4703D1A1B33544148E17A446D465141E17A143E1C335441D7A370FD6D4651413D0AD7131D335441C3F5285C6F4651413D0AD7D31E33544114AE47E170465141713D0A771E33544185EB51087346514114AE47111C33544148E17A4478465141B81E857B1D335441EC51B82E7F465141B81E859B21335441AE47E18A86465141CDCCCC4C1D33544114AE47918846514185EB51C820335441B81E854B844651411F85EBB124335441A4703D5A83465141713D0A372633544114AE47418546514114AE47E12933544185EB510886465141EC51B85E2D335441E17A148E87465141295C8F322F335441A4703D1A8A465141666666B62E33544148E17AE48C4651418FC2F5482C3354413D0AD7038F46514148E17A842C3354413D0AD7A38D46514148E17AB42F3354417B14AEA789465141B81E858B3333544114AE4701844651413333335338335441AE47E1EA864651415C8FC2653B33544185EB5148884651417B14AEF73C335441666666E688465141EC51B8EE3D335441E17A145E89465141295C8F123F3354415C8FC295894651413D0AD7933F335441AE47E11A8A46514114AE4751403354411F85EB018B4651410AD7A32041335441B81E857B8B46514185EB5168433354411F85EB118C465141D7A3700D453354419A9999798C4651417B14AEF7453354411F85EB318D465141CDCCCC2C463354413333334391465141A4703D5A47335441666666E69446514185EB51D84A33544152B81EE595465141E17A14FE4B335441F6285C9F964651419A9999B94A33544166666676954651413D0AD7A34933544166666646974651418FC2F5F8473354411F85EBB1964651418FC2F598463354413333330399465141000000704533544148E17AF49946514114AE47C14733544148E17A549B4651413D0AD77346335441F6285CFF9C4651419A99998947335441F6285CFF9C465141713D0A4749335441AE47E11A9F4651410AD7A320493354411F85EB41A0465141AE47E1DA493354413D0AD7A3A0465141333333E34E335441F6285CFF974651411F85EB814F33544152B81EB597465141333333734B335441D7A370BD9646514148E17A944C335441666666F694465141333333334F3354418FC2F56893465141EC51B8CE51335441EC51B87E9246514100000070543354417B14AE17924651418FC2F5D855335441CDCCCCAC91465141C3F5280C58335441CDCCCC7C91465141000000605A335441B81E858B914651419A9999795E335441050000008FC2F5A8A1465141A4703D7A4F335441D7A3700DA3465141295C8F724F335441D7A3700DA34651417B14AEC75033544114AE47A1A14651417B14AEC7503354418FC2F5A8A1465141A4703D7A4F335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302886 - 302892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000C3F528EC54DF504114AE475115365541CDCCCCDC57DF50415C8FC2151236554148E17AD45ADF5041333333D30E3655410AD7A3B04FDF5041713D0AE7FE3555415C8FC23543DF50415C8FC255ED3555417B14AEA740DF50418FC2F5E8F1355541713D0A473EDF5041AE47E12AF6355541713D0A773ADF50417B14AEA7FE3555419A9999393ADF5041F6285CAFFF3555411F85EBC14EDF50417B14AE171C365541C3F528EC54DF504114AE475115365541
+</a>
+
+<b>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541BDDFBBCF47DF50414C4E79F8E43555410AD7A32055DF50415C8FC2C5F7355541F4B790B560DF5041359431530836554101030000000100000004000000966D01CA5ADF5041C0933AC40E36554185D655F050DF504149BAFBAF00365541F7331D9F5ADF5041C9D4E5F20E365541966D01CA5ADF5041C0933AC40E3655410103000000010000000400000024965FDA4CDF5041238CB5E8FA355541892A5F4C43DF504189E79675ED3555413C6DA0FD42DF5041C463B309EE35554124965FDA4CDF5041238CB5E8FA355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>755124 - 121134
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000000000050CCD05041D7A370DDB2D1544183E6C078CED05041C713EF27ADD1544172156C7FDAD05041E89074DDABD15441B51F51ABE6D050410E32E70CADD15441E17A14CEE9D0504185EB5108A5D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED154418FC2F538CDD05041D7A3708DA1D1544152B81E95C9D05041AE47E17AABD15441B01BC115C8D0504197277702B0D1544133333303C7D0504114AE4721B3D154417B14AEA7C6D050413D0AD723B4D15441EC51B87EC5D0504185EB5108B9D1544133333303C5D050413D0AD793BCD15441A4703DEACAD05041AE47E13ABCD15441AE47E13ACBD050418FC2F5B8B7D1544185EB51B8CBD0504185EB5108B5D1544100000050CCD05041D7A370DDB2D15441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81F51ABE6D050411332E70CADD154413A9D9A30E9D050414359F89AA6D15441E17A14CEE9D0504185EB5108A5D1544134FF5E46EAD05041195F4F69A3D154411ADEEE69EAD05041AD959EEEA2D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD154410D03D255DAD0504102EBBEEC9BD154419AFFFC49DAD050413C9968EF9BD15441AD0FF1C9D5D0504170EB308F9BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED154418FC2F538CDD05041D7A3708DA1D15441B08954DDCAD05041289FBDFBA7D1544133333303C7D0504114AE4721B3D154417B14AEA7C6D050413D0AD723B4D15441EC51B87EC5D0504185EB5108B9D1544133333303C5D050413D0AD793BCD15441514CDED2CAD050411487413CBCD15441AE47E13ACBD050418FC2F5B8B7D1544185EB51B8CBD0504185EB5108B5D1544100000050CCD05041D7A370DDB2D154411BC49E27CDD050418A8654A3B0D15441D67F8AB2CDD05041C35A0434AFD1544185E6C078CED05041CA13EF27ADD15441144B7E6CD9D050416AACF7FAABD15441128F9F29DAD050410C57AAE6ABD1544172156C7FDAD05041EC9074DDABD15441B81F51ABE6D050411332E70CADD15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>755124 - 321218
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000000000050CCD05041D7A370DDB2D1544183E6C078CED05041C713EF27ADD1544172156C7FDAD05041E89074DDABD15441B51F51ABE6D050410E32E70CADD15441E17A14CEE9D0504185EB5108A5D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED154418FC2F538CDD05041D7A3708DA1D1544152B81E95C9D05041AE47E17AABD15441B01BC115C8D0504197277702B0D1544133333303C7D0504114AE4721B3D154417B14AEA7C6D050413D0AD723B4D15441EC51B87EC5D0504185EB5108B9D1544133333303C5D050413D0AD793BCD15441A4703DEACAD05041AE47E13ABCD15441AE47E13ACBD050418FC2F5B8B7D1544185EB51B8CBD0504185EB5108B5D1544100000050CCD05041D7A370DDB2D15441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81F51ABE6D050411332E70CADD154413A9D9A30E9D050414359F89AA6D15441E17A14CEE9D0504185EB5108A5D1544134FF5E46EAD05041195F4F69A3D154411ADEEE69EAD05041AD959EEEA2D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD154410D03D255DAD0504102EBBEEC9BD154419AFFFC49DAD050413C9968EF9BD15441AD0FF1C9D5D0504170EB308F9BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED154418FC2F538CDD05041D7A3708DA1D15441B08954DDCAD05041289FBDFBA7D1544133333303C7D0504114AE4721B3D154417B14AEA7C6D050413D0AD723B4D15441EC51B87EC5D0504185EB5108B9D1544133333303C5D050413D0AD793BCD15441514CDED2CAD050411487413CBCD15441AE47E13ACBD050418FC2F5B8B7D1544185EB51B8CBD0504185EB5108B5D1544100000050CCD05041D7A370DDB2D154411BC49E27CDD050418A8654A3B0D15441D67F8AB2CDD05041C35A0434AFD1544185E6C078CED05041CA13EF27ADD15441144B7E6CD9D050416AACF7FAABD15441128F9F29DAD050410C57AAE6ABD1544172156C7FDAD05041EC9074DDABD15441B81F51ABE6D050411332E70CADD15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4764 - 58777
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15A3C1551410AD7A3B0CEF854410AD7A3E03B155141EC51B82ED3F854418FC2F5583A155141D7A3704DD9F854411F85EB213415514152B81E15DEF85441295C8F8232155141F6285C6FDFF8544148E17AA42D155141A4703DCAE3F85441B81E855B29155141666666E6E7F854411F85EB412815514185EB5168E7F85441AE47E14A2C15514148E17AC4E9F85441295C8F8230155141D7A370CDEBF85441D7A3703D341551411F85EB11EDF854413D0AD77335155141EC51B8AEE7F854419A9999793915514152B81E45E9F85441000000F03D15514100000080EAF854413333334342155141C3F5286CEBF854413333335346155141E17A14BEEBF85441E17A143E491551419A9999D9EBF8544148E17AB44815514114AE4771F0F85441000000C04815514152B81E85F5F8544152B81E25521551411F85EB61F5F8544148E17AA45215514100000060F5F854410000005053155141C3F5285CF5F85441EC51B8BE561551417B14AE47F5F85441D7A370BD5A15514100000030F5F85441E17A144E5A155141B81E855BF0F85441A4703DBA5B15514114AE4741E9F85441EC51B85E52155141D7A3701DE8F854410AD7A3E05215514152B81EC5E4F85441F6285C1F54155141333333A3DCF85441000000A0541551415C8FC265D6F8544152B81E254B1551417B14AE97D5F85441333333234B155141AE47E16AD5F8544185EB51284B155141AE47E1EAD2F85441C3F5281C4C15514114AE47D1CBF854413D0AD7E3491551415C8FC2D5CBF85441C3F5284C4615514133333303CBF854411F85EBC14215514133333373CAF85441295C8FC2401551417B14AE57CAF854411F85EBE13D155141D7A3700DCBF854411F85EB413C1551410AD7A3A0CBF85441AE47E15A3C1551410AD7A3B0CEF85441
+</a>
+
+<b>
+010600000001000000010300000001000000320000006FBDE0595A1551415A0D9D20F0F85441A15D92575A155141ECB69CAFEFF854415984FA6F5B155141DE383639E9F85441C40F9A58521551416B7CD83CE8F854418389A780521551414B09C63DE7F854410AD7A3E05215514152B81EC5E4F85441F6285C1F54155141333333A3DCF85441000000A0541551415C8FC265D6F8544198DDCA9C53155141A7CDBF4FD6F854411414F5394B1551416F54F8B9D5F8544189A7543D4B155141A361BC99D5F8544152B81E254B1551417B14AE97D5F85441333333234B155141AE47E16AD5F8544185EB51284B155141AE47E1EAD2F85441A0D15C0C4C155141F6FB0847CCF8544108051C8F4315514139D1E6C5CAF854410BE33626411551416892C771CAF8544193BF55223D155141344C3B51CBF854411F85EB413C1551410AD7A3A0CBF85441AE47E15A3C1551410AD7A3B0CEF854413E96C0483C155141EE3A315BCFF85441129F6C543C15514119FDF95BD0F854414DC343013C155141F547C6FBD1F854410AD7A3E03B155141EC51B82ED3F854415F6AD1503B1551419604026ED5F854415A78043C3B155141B4BE02D6D5F8544136376ADE3A1551413DD19E37D7F854418FC2F5583A155141D7A3704DD9F85441565A1A4F3A155141FB680555D9F85441E7BBA63F3A155141F4DB648FD9F854419542C37832155141A6469779DFF854411BCA2F4E3615514144E6BA8AE2F8544134E2E689351551410F69A4B0E7F854415E3E0B7F3D155141CAAADD60EAF854411AA291813D155141E9D48F61EAF854414DAC35843D155141302B4A62EAF854417BDEA7C23D155141AC728073EAF85441DD2570004315514169EE107BEBF85441C1E6778545155141DBEADFADEBF85441B1DB602246155141C7FE3BBAEBF85441B5D56FAB48155141B35A32D4EBF85441E17A143E491551419A9999D9EBF854412E9B394149155141662F30DAEBF85441B40CB7B7481551418CD14CDEF1F85441268D27B9481551412519B880F2F8544117F20FD14815514157B7C47DF5F85441E6C79C735A155141410E9B0DF5F854418795E35E5A155141EC692816F1F85441E17A144E5A155141B81E855BF0F854416FBDE0595A1551415A0D9D20F0F85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6360 - 3044105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000006666660669BA50415C8FC22535DB544152B81ED578BA50413D0AD74346DB54413333331388BA5041C3F5284C54DB54410AD7A3508CBA5041713D0A9758DB5441EC51B82EA6BA50418FC2F5C825DB54419A9999D97BBA5041F6285C0F1BDB54418FC2F58879BA50411F85EB111BDB54415C8FC2E574BA50413D0AD71323DB5441A4703D0A70BA5041333333B32ADB544114AE47916ABA50410AD7A37032DB54416666660669BA50415C8FC22535DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6360 - 3291223
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000006666660669BA50415C8FC22535DB544152B81ED578BA50413D0AD74346DB54413333331388BA5041C3F5284C54DB54410AD7A3508CBA5041713D0A9758DB5441EC51B82EA6BA50418FC2F5C825DB54419A9999D97BBA5041F6285C0F1BDB54418FC2F58879BA50411F85EB111BDB54415C8FC2E574BA50413D0AD71323DB5441A4703D0A70BA5041333333B32ADB544114AE47916ABA50410AD7A37032DB54416666660669BA50415C8FC22535DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6422 - 3269393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000008000000B81E857B29BA50413D0AD7731EE0544148E17A8429BA504114AE474131E054415C8FC2152DBA50411F85EB5139E054413D0AD7A330BA5041B81E85BB3FE054416666662632BA50413D0AD74342E0544185EB511832BA50417B14AE2723E05441E17A14EE30BA50410000007021E05441B81E857B29BA50413D0AD7731EE05441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000048E17A0431BA504185EB513867E054417B14AE3732BA50411F85EB5166E054416666662632BA50413D0AD74342E0544124AE522C30BA5041D67BEFE33EE0544156D0CA462EBA504120EA22783BE0544130B040752CBA5041EE3010E737E05441F43FF3ED29BA5041F50EB72F32E0544106EC268429BA5041EE38189130E05441693C0D7F29BA504131101FDD25E05441B81E857B29BA50413D0AD7731EE054413D0AD72320BA504148E17AB41AE0544152B81ED51DBA5041C3F528BC1AE05441EC51B83E0EBA504148E17A7421E05441E17A14AE03BA50418FC2F57826E054415C8FC25501BA50411F85EB112AE054410AD7A3D0FEB95041D7A3706D30E054417B14AE57FDB950411F85EB6137E054411F85EB0121BA50418FC2F5683BE0544152B81EC527BA5041333333E33EE05441AE47E1EA28BA50410000007041E054410AD7A35028BA504185EB51D84DE05441CDCCCC5C0FBA504185EB51A852E05441A4703D8A0EBA504185EB518861E054411F85EB2124BA504148E17A1464E054411F85EB312CBA50410AD7A3D065E0544148E17A0431BA504185EB513867E05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6433 - 142552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000295C8F82A0BA50413D0AD77392DB5441713D0A179EBA5041295C8F0296DB5441C3F5287CA3BA5041B81E85DB98DB544148E17AA4E0BA5041B81E856B5DDB54419A999909E1BA5041EC51B89E5BDB5441D7A3705DDABA5041295C8F125CDB5441E17A140ECEBA5041A4703D7A5CDB54410AD7A340C3BA50411F85EBA15CDB5441F6285C9FB4BA5041B81E85AB5CDB544100000000B1BA5041000000B05CDB5441D7A3704DA9BA5041E17A145E5DDB5441AE47E10AA3BA5041EC51B8CE5EDB5441EC51B8CE9CBA5041F6285CEF60DB54410AD7A33096BA5041E17A14EE63DB544114AE473190BA504114AE47A167DB5441000000908ABA504152B81E856CDB5441D7A3705D87BA5041B81E857B6FDB54418FC2F5D882BA5041B81E85EB73DB5441000000807DBA50417B14AE4779DB54413D0AD76377BA5041EC51B8CE7FDB5441D7A3705D76BA50411F85EB9181DB5441AE47E10A77BA5041E17A14BE84DB54419A9999A979BA50418FC2F55887DB5441666666567DBA5041295C8FD289DB544148E17A1482BA5041CDCCCCEC8BDB54416666665687BA504114AE47018DDB54417B14AE079ABA504114AE47017ADB54411F85EB51A1BA5041C3F5286C7EDB5441C3F528DCA9BA50413D0AD79383DB5441D7A3703DA8BA50417B14AE3788DB544148E17AB4A4BA5041A4703DAA8DDB5441295C8F82A0BA50413D0AD77392DB5441
+</a>
+
+<b>
+0106000000010000000103000000010000003200000082227755AFBA5041F8FDCF1B9FDB5441996E2BAFB5BA5041D204F44EA2DB5441CB51168DB9BA50414200EF3CA4DB544139641FA5BCBA504191C93CBAA5DB544170A202D5C2BA50411CFADAB69FDB54417C28DA98C4BA5041F0B3B5FF9DDB54411D2F16ADC5BA50414AB93CF39CDB5441BB607FA5CABA50410668941E98DB54418D1E974DCCBA5041344E678296DB5441530A0DDECCBA5041BB8900F695DB5441FA96D312CDBA5041F89EB5C295DB54419530A68FD7BA5041AFD853918BDB54411D7CB5E6D9BA5041BFC9194B89DB5441774B2C37DFBA50411E40DD2084DB54418FC2F558E3BA5041CDCCCC1C80DB5441E4288ABCE3BA5041ED4C2BBC7FDB5441F7CEBEF9E8BA50419E1CD3A47ADB5441B966720BF5BA5041AAA7ACE96EDB5441DA32AC8BFCBA5041EC583D9F67DB5441B0A6CEEEFCBA504140D1E13E67DB5441B2BD944705BB50412F25F7215FDB5441713D0AB706BB5041CDCCCCBC5DDB5441D82A6BEC04BB5041B29FE2E45BDB5441B05A231504BB5041E95D5D075BDB54417E9CD07202BB50415D8BEA5859DB5441AC3595AA01BB5041538333CE58DB54413333339300BB5041EC51B8FE58DB5441E17A14EEF7BA5041000000105ADB54417D3A7A82F4BA50413F8C415A5ADB54418F1C45F6F0BA504101F546A75ADB54410AD7A370EFBA504185EB51C85ADB5441E37A5B2BEBBA5041825006135BDB544148E17A54E9BA5041333333335BDB544145A24A58E8BA5041DD10AF3D5BDB544188D6D53AE4BA504105447A695BDB5441480CAF6BE2BA50415BD212B15BDB544148E17AA4E0BA5041B81E856B5DDB54417E0C0A5BDDBA50413CC54B9D60DB544169711CB0DBBA50416097373C62DB54419A5597CAD6BA5041A9A47BFE66DB544171EBE632D6BA504153EEE79167DB544109DED7C3D2BA504112F63DE86ADB54416736E929CFBA504137EA3E686EDB5441F0353A79C8BA5041A2FCC2E874DB54413F3BDABCABBA50412DC03ED690DB5441B586454FAABA5041775B8B3992DB544189541562A5BA50415649430397DB5441AF8A2338A4BA50415EF1D32498DB5441FEFA438FA3BA5041B7A7F3C898DB544182227755AFBA5041F8FDCF1B9FDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6480 - 3044105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3508CBA5041713D0A9758DB54418FC2F5B894BA50419A99991961DB5441D7A3707D9BBA5041C3F528CC5DDB5441CDCCCC2CA2BA50411F85EB915BDB5441B81E853BA7BA50415C8FC2855ADB544166666606A9BA5041713D0A2759DB5441CDCCCC4CBFBA50417B14AE672DDB54417B14AEA7BEBA5041C3F528FC2BDB5441EC51B82EA6BA50418FC2F5C825DB54410AD7A3508CBA5041713D0A9758DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6480 - 3291223
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3508CBA5041713D0A9758DB54418FC2F5B894BA50419A99991961DB5441D7A3707D9BBA5041C3F528CC5DDB5441CDCCCC2CA2BA50411F85EB915BDB5441B81E853BA7BA50415C8FC2855ADB544166666606A9BA5041713D0A2759DB5441CDCCCC4CBFBA50417B14AE672DDB54417B14AEA7BEBA5041C3F528FC2BDB5441EC51B82EA6BA50418FC2F5C825DB54410AD7A3508CBA5041713D0A9758DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6500 - 4175798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001600000048E17A0447BB504114AE47F134DA544148E17A5443BB50417B14AE7730DA5441E17A14CE3EBB5041666666762ADA54417B14AE172FBB504114AE47F12FDA54415C8FC2252EBB50415C8FC24530DA54413D0AD7A319BB5041CDCCCC6C37DA54416666668612BB5041713D0A5744DA54413D0AD7530EBB5041C3F5286C4BDA5441CDCCCCBC10BB5041CDCCCC4C4FDA54417B14AE8711BB504114AE47E151DA5441B81E858B11BB5041EC51B89E54DA54415C8FC22511BB5041713D0AA758DA5441CDCCCC0C18BB5041C3F528CC55DA544152B81E8523BB5041C3F528BC51DA544148E17A742DBB504114AE47F14DDA5441D7A370FD2EBB5041295C8FC24DDA544148E17AB430BB5041E17A149E55DA5441C3F5285C49BB50415C8FC2254ADA5441713D0A274DBB50410AD7A37047DA54410AD7A39057BB5041EC51B87E42DA5441666666E64CBB504148E17A143ADA544148E17A0447BB504114AE47F134DA5441
+</a>
+
+<b>
+01060000000100000001030000000100000038000000EC51B8EE09BB5041F6285CCF97DA5441A4703D2A0CBB50418FC2F5989ADA54411F85EBC10EBB5041295C8F129DDA54415C8FC2D510BB5041D7A3705D9BDA5441D7A370BD12BB5041B81E851B99DA544148E17AB415BB50410AD7A3B094DA54419A99994917BB5041AE47E1AA91DA54410AD7A34019BB5041B81E85CB8CDA5441000000D01EBB50413333331382DA54417B14AEB721BB504114AE47417DDA5441EC51B84E25BB5041A4703D8A78DA54417B14AE972ABB5041A4703DEA71DA5441A4703DFA2EBB5041000000206DDA54415C8FC23533BB50411F85EB0169DA54416666660637BB50419A9999E965DA5441A4703DFA3CBB5041EC51B87E61DA54411F85EB613FBB504185EB515860DA5441F6285CDF41BB5041AE47E1AA5FDA54415C8FC25545BB504148E17A645FDA544114AE47A147BB504185EB51D85EDA5441F6285C9F49BB5041CDCCCC8C5DDA5441AE47E15A4DBB5041C3F5282C5ADA544185EB514850BB5041EC51B8DE58DA54419A9999B954BB5041A4703DCA57DA5441AE47E1BA59BB5041F6285C8F57DA54411F85EB415CBB50417B14AE0757DA54419A9999895EBB5041CDCCCCDC55DA54411F85EB3162BB504114AE47A154DA54413333330366BB5041000000E053DA54410000002063BB5041295C8F424ADA5441AE47E1DA60BB5041CDCCCC5C49DA54411F85EB415DBB5041C3F528FC46DA5441C32CC04B57BB504163425D4842DA5441B35CC9004DBB504122DCAC3647DA5441B5BEECA448BB5041F3E7612B49DA544129B8128F30BB5041154ACA9154DA54416E3FB5F12FBB5041A8EB66AE54DA5441F9B9726F2EBB5041490CB1F94DDA544148E17A742DBB504114AE47F14DDA5441678D2E6D23BB5041625A6F3751DA5441107C141518BB504194A7FD8455DA544199A7A32F11BB50410973D14258DA5441E17A142E10BB5041D7A370ED5DDA544148E17AE40EBB50411F85EB1162DA544114AE47610CBB5041F6285CEF66DA5441AE47E19A07BB50418FC2F5F86DDA54415C8FC2F505BB50411F85EBE170DA5441713D0AA704BB5041F6285CFF73DA5441AE47E1AA03BB5041D7A370BD77DA5441B81E850B03BB50415C8FC2357CDA5441AE47E12A03BB5041CDCCCC9C82DA54411F85EBB103BB504148E17A3487DA5441E17A14BE04BB504152B81EE58BDA54419A99993906BB504114AE475190DA5441713D0A3708BB504148E17AA494DA5441EC51B8EE09BB5041F6285CCF97DA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6520 - 244779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000052B81EF59DBB50415C8FC2D549DA5441C3F528EC9DBB50419A99991945DA544152B81EE59DBB5041333333D342DA5441EC51B88E97BB50419A9999D942DA54415C8FC2B58EBB5041666666D643DA5441EC51B89E7EBB504148E17A0446DA5441EC51B83E7CBB50410AD7A33046DA54418FC2F5D879BB5041AE47E1EA45DA54410000008079BB5041AE47E1DA46DA54417B14AEF777BB50410000005047DA5441713D0A1777BB504152B81EE549DA5441A4703DDA75BB50415C8FC2654DDA5441CDCCCCCC72BB5041C3F528BC51DA5441EC51B89E6FBB5041295C8F7254DA5441C3F528EC6BBB50410000001056DA54413D0AD76366BB5041F6285C9F56DA5441295C8F0265BB50417B14AE5758DA5441000000A066BB50413D0AD7935CDA5441713D0A576BBB50411F85EBA165DA54413D0AD77382BB50413D0AD78362DA544185EB51289DBB5041A4703DEA5EDA5441E17A14AE9DBB5041666666D653DA544152B81EF59DBB50415C8FC2D549DA5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD77382BB50413D0AD78362DA54413735F90589BB5041ADF413A161DA5441AA94B7EB89BB504148491FB14BDA544164424AED85BB5041BC7B7C4A4CDA5441947376AA81BB5041338A3EAD4CDA5441D2BC0FE07DBB50415C589C224DDA544160977B3B75BB5041B41B8BC44EDA54417B20A6CF74BB504166B393E04EDA5441DBCCCCCC72BB5041FFF528BC51DA54410A52B89E6FBB50412D5C8F7254DA54410DA83FDC6EBB5041AE6280C754DA5441C3F528EC6BBB50410000001056DA5441DDD3AE8A68BB504177889A6756DA5441240AD76366BB504115295C9F56DA54410F6D946366BB5041A52FAF9F56DA544155CF276366BB5041109036A056DA5441733A925F66BB50411437AEA456DA54415D97BC5366BB5041D6486EB356DA54419EF0D70E66BB5041A3324C0957DA544115BCA53B65BB5041F10F871058DA54412A5C8F0265BB50417C14AE5758DA5441000000A066BB50413D0AD7935CDA5441713D0A576BBB50411F85EBA165DA54413D0AD77382BB50413D0AD78362DA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6520 - 353348
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000052B81EF59DBB50415C8FC2D549DA5441C3F528EC9DBB50419A99991945DA544152B81EE59DBB5041333333D342DA5441EC51B88E97BB50419A9999D942DA54415C8FC2B58EBB5041666666D643DA5441EC51B89E7EBB504148E17A0446DA5441EC51B83E7CBB50410AD7A33046DA54418FC2F5D879BB5041AE47E1EA45DA54410000008079BB5041AE47E1DA46DA54417B14AEF777BB50410000005047DA5441713D0A1777BB504152B81EE549DA5441A4703DDA75BB50415C8FC2654DDA5441CDCCCCCC72BB5041C3F528BC51DA5441EC51B89E6FBB5041295C8F7254DA5441C3F528EC6BBB50410000001056DA54413D0AD76366BB5041F6285C9F56DA5441295C8F0265BB50417B14AE5758DA5441000000A066BB50413D0AD7935CDA5441713D0A576BBB50411F85EBA165DA54413D0AD77382BB50413D0AD78362DA544185EB51289DBB5041A4703DEA5EDA5441E17A14AE9DBB5041666666D653DA544152B81EF59DBB50415C8FC2D549DA5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD77382BB50413D0AD78362DA54413735F90589BB5041ADF413A161DA5441AA94B7EB89BB504148491FB14BDA544164424AED85BB5041BC7B7C4A4CDA5441947376AA81BB5041338A3EAD4CDA5441D2BC0FE07DBB50415C589C224DDA544160977B3B75BB5041B41B8BC44EDA54417B20A6CF74BB504166B393E04EDA5441DBCCCCCC72BB5041FFF528BC51DA54410A52B89E6FBB50412D5C8F7254DA54410DA83FDC6EBB5041AE6280C754DA5441C3F528EC6BBB50410000001056DA5441DDD3AE8A68BB504177889A6756DA5441240AD76366BB504115295C9F56DA54410F6D946366BB5041A52FAF9F56DA544155CF276366BB5041109036A056DA5441733A925F66BB50411437AEA456DA54415D97BC5366BB5041D6486EB356DA54419EF0D70E66BB5041A3324C0957DA544115BCA53B65BB5041F10F871058DA54412A5C8F0265BB50417C14AE5758DA5441000000A066BB50413D0AD7935CDA5441713D0A576BBB50411F85EBA165DA54413D0AD77382BB50413D0AD78362DA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6756 - 58715
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441713D0A5765BA50410AD7A3D076DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC544114AE47217CBA50410AD7A3A082DC5441295C8FC283BA50418FC2F52859DC544185EB516882BA5041D7A3708D58DC5441B81E859B5FBA5041666666A64BDC544114AE478158BA50410000004072DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000713D0AB75FBA5041A4703DAA74DC5441AF5927CC5FBA5041AE644FB274DC5441244F025D61BA5041C7A3864B75DC5441713D0A5765BA50410AD7A3D076DC544177C16A8468BA5041227CE55078DC5441C09235A868BA50415B31CE6178DC5441167C6AEC68BA50415018078278DC544108F4C00869BA504136426A8F78DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC5441A6FED8097ABA5041D576287781DC54418608FF297ABA5041FC01058981DC544130178D497ABA50419B1C8D9A81DC544195642F0F7BBA5041B6E65A0882DC5441F495694D7BBA5041C196ED2A82DC5441B23A21227CBA5041F880059C82DC544188E01DA97CBA5041A02465BE7FDC5441411617727DBA5041A123257A7BDC54414B29802E7EBA5041A42D2C7A77DC5441E57727327FBA5041C02002F771DC5441DAC5479E7FBA5041C64B5DAB6FDC5441FDF595A27FBA5041C220F7936FDC5441A60A552683BA504180C1067A5CDC5441D598BD4883BA5041F10B06BF5BDC5441251A245283BA5041212EEF8B5BDC5441828194B983BA5041AA90C35959DC5441EEEED2A983BA50416D6FD91D59DC544129B27AE681BA5041CDD04C5D58DC544113436A7480BA50419E3118D457DC5441622A3D6880BA5041967E94CF57DC5441ED853DB87FBA5041E098538E57DC5441BB7693317FBA504184F1655C57DC5441BE01F16C7DBA5041172894B456DC54414EF7188578BA5041DBCDF5E254DC5441AE9BC69872BA50415337C4B052DC54410FCDD6B671BA50415B71FF5C52DC54413C9906C26EBA5041848D664451DC5441F64376DB6ABA504150ED2BD24FDC54410A10289A6ABA50410D76F5B94FDC5441DFD9C1326ABA504170539F934FDC5441CB5DAD5C60BA5041DDE703EE4BDC54415701859B5FBA5041100667A64BDC5441137E28985EBA50414E8EF42751DC54411F6F2C3B5DBA5041EF83959058DC54410BB427B75CBA50415AD0105E5BDC544114AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6756 - 119479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441713D0A5765BA50410AD7A3D076DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC544114AE47217CBA50410AD7A3A082DC5441295C8FC283BA50418FC2F52859DC544185EB516882BA5041D7A3708D58DC5441B81E859B5FBA5041666666A64BDC544114AE478158BA50410000004072DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000713D0AB75FBA5041A4703DAA74DC5441AB5927CC5FBA5041AD644FB274DC5441254F025D61BA5041C9A3864B75DC5441713D0A5765BA50410AD7A3D076DC544175C16A8468BA5041267CE55078DC5441BF9235A868BA50415C31CE6178DC5441157C6AEC68BA50414D18078278DC544106F4C00869BA504133426A8F78DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC5441AAFED8097ABA5041D776287781DC54418908FF297ABA5041FD01058981DC544135178D497ABA50419E1C8D9A81DC544192642F0F7BBA5041B6E65A0882DC5441F195694D7BBA5041BC96ED2A82DC5441AD3A21227CBA5041F380059C82DC544186E01DA97CBA50419D2465BE7FDC54413C1617727DBA5041A623257A7BDC54415029802E7EBA5041A62D2C7A77DC5441E97727327FBA5041C22002F771DC5441DDC5479E7FBA5041CB4B5DAB6FDC544101F695A27FBA5041BE20F7936FDC5441A90A552683BA50417BC1067A5CDC5441D298BD4883BA5041F30B06BF5BDC5441261A245283BA5041212EEF8B5BDC5441828194B983BA5041AE90C35959DC5441F0EED2A983BA5041686FD91D59DC54412EB27AE681BA5041C9D04C5D58DC544115436A7480BA50419A3118D457DC5441632A3D6880BA5041927E94CF57DC5441E8853DB87FBA5041E498538E57DC5441C07693317FBA504181F1655C57DC5441C001F16C7DBA5041162894B456DC544153F7188578BA5041D8CDF5E254DC5441B09BC69872BA50415237C4B052DC54410CCDD6B671BA50415A71FF5C52DC5441379906C26EBA5041888D664451DC5441F44376DB6ABA50414EED2BD24FDC54410A10289A6ABA50410E76F5B94FDC5441DFD9C1326ABA50416D539F934FDC5441C75DAD5C60BA5041E1E703EE4BDC54415C01859B5FBA5041140667A64BDC54410E7E28985EBA5041528EF42751DC54411F6F2C3B5DBA5041EB83959058DC54410FB427B75CBA50415DD0105E5BDC544114AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6756 - 319686
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441713D0A5765BA50410AD7A3D076DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC544114AE47217CBA50410AD7A3A082DC5441295C8FC283BA50418FC2F52859DC544185EB516882BA5041D7A3708D58DC5441B81E859B5FBA5041666666A64BDC544114AE478158BA50410000004072DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000713D0AB75FBA5041A4703DAA74DC5441AB5927CC5FBA5041AD644FB274DC5441254F025D61BA5041C9A3864B75DC5441713D0A5765BA50410AD7A3D076DC544175C16A8468BA5041267CE55078DC5441BF9235A868BA50415C31CE6178DC5441157C6AEC68BA50414D18078278DC544106F4C00869BA504133426A8F78DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC5441AAFED8097ABA5041D776287781DC54418908FF297ABA5041FD01058981DC544135178D497ABA50419E1C8D9A81DC544192642F0F7BBA5041B6E65A0882DC5441F195694D7BBA5041BC96ED2A82DC5441AD3A21227CBA5041F380059C82DC544186E01DA97CBA50419D2465BE7FDC54413C1617727DBA5041A623257A7BDC54415029802E7EBA5041A62D2C7A77DC5441E97727327FBA5041C22002F771DC5441DDC5479E7FBA5041CB4B5DAB6FDC544101F695A27FBA5041BE20F7936FDC5441A90A552683BA50417BC1067A5CDC5441D298BD4883BA5041F30B06BF5BDC5441261A245283BA5041212EEF8B5BDC5441828194B983BA5041AE90C35959DC5441F0EED2A983BA5041686FD91D59DC54412EB27AE681BA5041C9D04C5D58DC544115436A7480BA50419A3118D457DC5441632A3D6880BA5041927E94CF57DC5441E8853DB87FBA5041E498538E57DC5441C07693317FBA504181F1655C57DC5441C001F16C7DBA5041162894B456DC544153F7188578BA5041D8CDF5E254DC5441B09BC69872BA50415237C4B052DC54410CCDD6B671BA50415A71FF5C52DC5441379906C26EBA5041888D664451DC5441F44376DB6ABA50414EED2BD24FDC54410A10289A6ABA50410E76F5B94FDC5441DFD9C1326ABA50416D539F934FDC5441C75DAD5C60BA5041E1E703EE4BDC54415C01859B5FBA5041140667A64BDC54410E7E28985EBA5041528EF42751DC54411F6F2C3B5DBA5041EB83959058DC54410FB427B75CBA50415DD0105E5BDC544114AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6850 - 58839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F00000048E17AF434BC50417B14AE17CDDA5441AE47E12A35BC50417B14AE17D4DA54410AD7A3103CBC5041B81E850BD4DA5441C3F528AC4ABC504152B81EF5D3DA544114AE47D151BC50417B14AE47D4DA5441A4703DFA5ABC50419A999949D6DA54413D0AD72362BC50417B14AE67D7DA5441AE47E1BA69BC5041D7A3706DD6DA54410000000079BC504185EB51E8CEDA5441E17A141E78BC50410AD7A370C9DA544148E17AE477BC5041A4703D5AC8DA54410AD7A3205FBC5041B81E85EBC9DA54419A9999694BBC504114AE4761CADA5441EC51B89E34BC5041295C8FD2CBDA544148E17AF434BC50417B14AE17CDDA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000048E17AF434BC50417B14AE17CDDA54417FDDB20335BC50419A6A000DCFDA54415B30C61335BC504110058C1ED1DA5441AE47E12A35BC50417B14AE17D4DA544140F2071A38BC504123D58112D4DA54417A7DB9AC3ABC50417495F80DD4DA54410AD7A3103CBC5041B81E850BD4DA54410B8B08D843BC5041756697FFD3DA544153BCE37345BC5041EED51FFDD3DA54415486C90C48BC5041173E24F9D3DA54413948E9454CBC5041D10DDAC2D3DA54410191823B4FBC5041375FCF29D4DA544114AE47D151BC50417B14AE47D4DA5441F8EF075152BC50416A86AD63D4DA5441051B7C5252BC5041D616FF63D4DA5441876EAB3255BC5041B8985605D5DA544123E380A455BC50415A38491ED5DA5441582F2BE85BBC5041BACBB86ED6DA5441743535885DBC50414DF7A1AFD6DA544174112BEF5FBC50413052940FD7DA54413A971F4462BC5041BFB48563D7DA54410D400DE663BC504118BCB22DD7DA5441508BA54A66BC5041A5AACDDED6DA544171063B9867BC50419381D7B3D6DA544191380B336ABC50414A574332D6DA544139F347436ABC5041FC47442AD6DA544174200A7B6FBC50417B7C7298D3DA5441F569ADDB72BC50412ED5A3EED1DA54417E42A62673BC504104F4B7C9D1DA5441DBDDE09B73BC5041AFA9FC8FD1DA5441705BB04274BC5041A885D63DD1DA5441E443B77A75BC504109A52CA4D0DA54416C407DB476BC50415398A609D0DA544110AD0CFF78BC5041096A6EE2CEDA5441208FCF9B78BC504100D7997BCCDA54418A249A7278BC50414C464B7CCBDA5441D26C41EB77BC50411613FD7AC8DA54414E3EA1AE76BC5041D019DA6DC8DA544116F206F670BC504167CF8DCAC8DA5441D69214146EBC5041E42343F9C8DA5441C83503DA68BC5041268AF44DC9DA5441E71FDB2E68BC5041A9E0C958C9DA54410AD7A3205FBC5041B81E85EBC9DA5441BA0670EE4FBC5041F5C04946CADA5441557F5E653FBC5041A138F823CBDA5441EC51B89E34BC5041295C8FD2CBDA544148E17AF434BC50417B14AE17CDDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6997 - 359254
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000005000000052B81ED54CB750417B14AEB79AE1544114AE474144B75041713D0AC798E154415C8FC2453BB75041D7A3705D96E154419A99990939B75041B81E859B95E154419A99991937B75041333333C393E15441E17A148E35B75041E17A14CE91E1544114AE474134B7504152B81EA58FE154410AD7A30033B75041B81E854B8DE15441E17A14EE31B75041AE47E1EA8DE15441B81E852B2AB75041E17A140E8DE15441000000D024B75041E17A142E8BE15441F6285C9F23B75041666666D68BE15441E17A148E23B750417B14AE8790E15441D7A3706D24B75041E17A147E91E1544148E17AB426B75041CDCCCC7C91E1544152B81EE528B75041333333C390E15441666666062CB75041A4703DEA90E15441EC51B85E2DB750419A9999A991E154415C8FC2A52DB750419A99990995E154418FC2F5B82FB750415C8FC25599E15441AE47E1FA2FB750415C8FC2F59AE15441333333332FB75041D7A3706D9CE15441333333C327B75041713D0AA7A1E15441B81E85DB29B7504114AE4721A5E15441295C8F622DB750411F85EBD1A5E154411F85EB012FB75041E17A14AEA6E154417B14AEB72FB7504166666606A8E1544185EB51582FB75041AE47E14AA9E154417B14AE472DB75041666666C6ABE15441C3F5281C2FB7504148E17A84AEE154419A9999692FB75041CDCCCCFCAFE154411F85EBC12CB750415C8FC295B3E15441333333532BB75041E17A142EB4E154410AD7A39028B75041E17A14BEB2E15441B81E85CB27B75041000000F0B4E154419A99995926B7504114AE4751B6E1544185EB519824B7504114AE4711B7E154419A99991922B75041AE47E1FAB7E15441F6285CFF24B75041666666B6BBE154411F85EBA125B75041CDCCCC7CBDE154415C8FC2D524B75041713D0AE7BEE15441713D0AD721B750410AD7A3B0BFE1544148E17AF421B75041AE47E13AC3E1544185EB51981FB75041C3F528CCC8E15441F6285C4F1EB75041295C8F62C9E154415C8FC2E51CB750418FC2F5C8C8E154413D0AD7A31AB7504114AE4741C6E154419A99998919B75041295C8F32C4E15441AE47E11A18B75041A4703DCAC3E15441C3F5288C18B75041AE47E19AC5E1544148E17A0418B750411F85EB31C7E15441AE47E1FA15B750413D0AD763C9E15441B81E85AB15B75041666666B6CCE15441AE47E15A12B75041295C8FB2D0E154417B14AE970FB7504148E17AA4D2E154411F85EB310EB75041AE47E13AD2E15441295C8F320BB750417B14AED7CEE15441B81E857B05B750418FC2F5D8D3E154417B14AED704B75041C3F5289CD7E15441D7A3709D03B75041B81E856BD9E154410000001002B7504152B81E95D9E1544152B81E25FFB6504114AE4721D8E15441713D0A47FEB65041295C8F82DBE15441CDCCCC5CFDB65041000000E0DCE1544166666666F9B65041F6285C6FE0E154417B14AE87F9B6504114AE47C1E4E154413D0AD713FCB65041333333F3E3E15441713D0A17FEB65041713D0AB7E4E15441000000F000B7504185EB5148E7E154413333339304B75041AE47E17AE7E15441000000D005B7504152B81E35E8E15441000000A006B750418FC2F568EBE154413D0AD7330BB750419A9999F9F0E15441CDCCCC5C0DB750419A9999A9F2E154417B14AEC710B75041A4703D7AF4E15441AE47E18A16B750410AD7A3C0F6E1544114AE47E117B75041C3F5283CF6E15441713D0AB72CB7504100000000C7E1544185EB51883AB750415C8FC265B8E1544152B81ED54CB750417B14AEB79AE15441
+</a>
+
+<b>
+01060000000100000001030000000100000071000000E31E852B2AB75041EC7A140E8DE15441000000D024B75041E17A142E8BE15441F6285C9F23B75041666666D68BE15441428B779C23B75041E3ED849F8CE154414D7B148E23B75041A614AE8790E15441F5BF286424B750412883D77391E15441BAA3706D24B75041C17A147E91E15441912D4E0B25B75041ACC1BB7D91E1544148E17AB426B75041CDCCCC7C91E154414A7E9EBD27B750410E90062591E154411CB81EE528B75041DD3233C390E15441BC6666062CB7504179703DEA90E154418E68C3AD2CB750413212414791E15441EC51B85E2DB750419A9999A991E1544148E5AD742DB75041431DACB492E15441718FC2A52DB75041C599990995E15441880D3EE92DB750414A9A5C9595E154417AC2F5B82FB75041FC8EC25599E15441AE47E1FA2FB750415C8FC2F59AE1544169C9D1F92FB75041A559C1F79AE15441333333332FB75041D7A3706D9CE15441333333C327B75041713D0AA7A1E1544111AD521129B75041ECF6A6D1A3E15441201F85DB29B7504128AE4721A5E15441295C8F622DB750411F85EBD1A5E154410C5BAA942EB75041AF872B74A6E154415485EB012FB75041CC7A14AEA6E15441DC14AEB72FB75041FB656606A8E154418CC0BE992FB750419649426CA8E1544185EB51582FB75041AE47E14AA9E154417B14AE472DB75041666666C6ABE15441518BCC582EB750414B94B45FADE154410EF6281C2FB7504168E17A84AEE154418F9999692FB7504177CCCCFCAFE154417F1EB40A2EB7504197E642D8B1E154417585EBC12CB75041478FC295B3E15441693333532BB75041177B142EB4E15441BC0888A52AB7504119AAA0D3B3E154410AD7A39028B75041E17A14BEB2E1544133C8442D28B7504168505AD9B3E15441241F85CB27B75041CAFFFFEFB4E15441C0B9D95B27B75041CD74A55AB5E154419A99995926B7504114AE4751B6E15441C4B5055C25B750416983A5BDB6E154412FEB519824B7504160AE4711B7E154417C343CBF23B7504170BCAC60B7E154419A99991922B75041AE47E1FAB7E15441F6285CFF24B75041666666B6BBE1544187F97F8D25B75041C85EB843BDE154412985EBA125B75041C2CCCC7CBDE15441B28FC2D524B750413B3D0AE7BEE154416E68630E24B750416362761BBFE15441960A370C24B75041A4AC081CBFE15441743D0AD721B7504161D7A3B0BFE1544148E17AF421B75041AE47E13AC3E1544163D6B16120B75041AB4E18F1C6E15441DBEB51981FB7504157F528CCC8E15441F6285C4F1EB75041295C8F62C9E154415C8FC2E51CB750418FC2F5C8C8E15441B298448A1CB75041818F6C62C8E15441F209D7A31AB7504114AE4741C6E154412E99998919B750419F5C8F32C4E15441CAD1CA6A18B7504112F3F8E0C3E154412448E11A18B75041C6703DCAC3E1544134E3645018B75041EB0CBDA5C4E15441C3F5288C18B75041AE47E19AC5E1544148E17A0418B750411F85EB31C7E154415ECF076C17B750410B6827D6C7E154411948E1FA15B75041530AD763C9E154412E1F85AB15B75041666666B6CCE154411C8E3FEB13B7504131CD45D1CEE15441AE47E15A12B75041295C8FB2D0E154417B14AE970FB7504148E17AA4D2E154413F85EB310EB75041CE47E13AD2E15441295C8F320BB750417B14AED7CEE15441C9E0060C06B75041E1E6675AD3E15441B41E857B05B75041A7C2F5D8D3E154417B14AED704B75041C3F5289CD7E15441D7A3709D03B75041B81E856BD9E154414000001002B75041B3B81E95D9E1544167B81E25FFB650413FAE4721D8E154419C3D0A47FEB65041B35B8F82DBE15441558A3375FDB650419E1799BBDCE15441ADCCCC5CFDB65041360000E0DCE1544167666666F9B650410A295C6FE0E1544149DE9E66F9B650412FA5B076E0E15441D914AE87F9B65041F6AD47C1E4E154413D0AD713FCB65041333333F3E3E15441713D0A17FEB65041713D0AB7E4E15441000000F000B7504185EB5148E7E154413333339304B75041AE47E17AE7E1544122D6AD5505B7504199C935EDE7E15441C0FFFFCF05B75041FCB71E35E8E15441000000A006B750418FC2F568EBE15441DCF8607208B750414445F39FEDE1544139ABEE9B08B75041B7CCAB45ECE154419AABEE9B08B750412822EAFFE8E154417667D44C07B75041E099B561E6E15441E9505F9703B75041929FC1DAE4E1544149EBB7A001B75041E9E9E7A2E4E154419F185D3AFFB650418F5BA78BE3E154418DF6CF92FEB650413FB1E545E0E15441CCC82AF900B75041EE72D76FDDE154414AAD1CD90FB7504104234A34D4E1544161D71DD819B750416D85B609CFE15441030A14BC1FB7504103038EE4CAE15441ADA8BD0F26B75041C9537B54BFE15441CB7F69C030B750413644CD46B0E15441F6BF1FB833B75041750CC8A38EE154410AD7A30033B75041B81E854B8DE15441053FB48F32B75041A4F9118D8DE15441CC7A14EE31B750410F48E1EA8DE15441E31E852B2AB75041EC7A140E8DE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7009 - 59001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000007F000000A4703D0AA2B75041C3F5288C03DE5441C3F528FCA1B750415C8FC23505DE5441B81E851BA0B7504185EB513808DE5441D7A370CD9EB75041A4703DFA08DE5441F6285C2F9DB75041B81E859B08DE54411F85EB819BB750417B14AE5707DE5441F6285C4F96B75041A4703DDA00DE5441EC51B86E94B75041000000D000DE5441295C8F6295B75041AE47E17A03DE544114AE470195B75041AE47E12A09DE5441F6285C0F94B75041A4703DCA0ADE54413D0AD73392B75041E17A14BE0BDE54411F85EB318FB750410AD7A3200CDE54413D0AD7338CB75041CDCCCCFC08DE5441AE47E1AA89B75041D7A3708D07DE544114AE477182B7504114AE47B106DE5441F6285C0F81B75041295C8F0207DE5441666666F682B750417B14AE2708DE5441295C8F2284B75041C3F528FC09DE5441AE47E12A85B75041E17A14EE0CDE54415C8FC28584B7504148E17AC40EDE5441B81E850B83B75041D7A3705D0FDE5441A4703D0A81B75041CDCCCCEC0EDE5441666666867EB75041F6285CAF0DDE54410AD7A3707DB7504148E17AB40DDE54410AD7A3D07CB75041D7A370DD0EDE5441666666667EB750416666669610DE5441E17A14AE7FB75041AE47E11A15DE544185EB51D87DB75041F6285C7F18DE5441CDCCCC7C7CB75041D7A3706D19DE54416666662679B7504185EB51C81ADE544114AE47F177B75041D7A3709D1ADE5441B81E85AB74B7504148E17AB418DE54410AD7A30074B750410AD7A34017DE54418FC2F5C874B75041295C8FA214DE5441B81E859B76B750410AD7A3D011DE5441E17A144E75B7504152B81E450EDE54417B14AE1774B75041A4703D6A0CDE544185EB511873B75041000000200ADE5441713D0AB771B75041A4703D3A0ADE54411F85EB8171B750418FC2F5C80DDE54413D0AD7F370B75041C3F528DC0EDE5441C3F528EC6FB7504148E17A840FDE5441713D0AA76EB75041EC51B88E0FDE54415C8FC2756AB750417B14AE970EDE544152B81E5569B75041AE47E1AA0EDE544148E17AB467B75041B81E855B0FDE54410AD7A34066B750419A9999590FDE5441B81E859B62B7504148E17A040EDE5441295C8FF25EB7504152B81E850DDE5441C3F5289C5CB75041333333930DDE5441CDCCCCAC5AB75041C3F528FC0DDE5441E17A147E59B75041713D0A8710DE5441295C8F2259B750411F85EBB111DE5441000000C059B75041713D0A7712DE5441D7A370FD5AB75041295C8FB213DE544185EB51D85BB750413D0AD7D313DE544185EB51785DB75041A4703DBA13DE5441B81E857B5EB7504152B81E2514DE544152B81E255FB75041CDCCCC1C15DE5441EC51B88E5FB750413333338316DE5441B81E852B61B750411F85EB6118DE54416666665661B75041CDCCCCAC19DE5441713D0A6760B75041B81E85EB1ADE54417B14AEF75EB75041EC51B82E1CDE5441666666B65DB75041E17A144E20DE5441295C8FA25BB75041713D0A8722DE5441CDCCCC6C5AB75041EC51B85E23DE54413D0AD7B35AB750415C8FC22527DE544152B81EE55CB75041666666A642DE5441A4703D2A5DB7504152B81E1546DE54419A9999595DB750410000007048DE5441CDCCCCCC5FB750413D0AD76367DE5441295C8F2261B7504185EB513878DE544114AE475163B750415C8FC25578DE54418FC2F54868B750417B14AE4778DE5441AE47E19A71B750415C8FC25578DE544152B81EB573B75041D7A3703D78DE5441CDCCCC8C71B75041CDCCCC1C60DE54415C8FC24571B750410000003058DE5441C3F528EC6FB75041713D0AC73CDE544152B81E7575B750411F85EBF13ADE5441D7A3704D78B75041CDCCCC0C3ADE54417B14AEF777B7504185EB510836DE5441B81E85DB77B75041EC51B89E30DE54410AD7A3B077B75041295C8F9226DE5441F6285C5F7BB75041EC51B89E24DE5441C3F5289C7EB75041E17A148E22DE544148E17A1484B750417B14AE971EDE5441C3F5280C89B75041333333231CDE5441666666668DB75041C3F528CC1ADE544114AE476195B75041D7A370AD18DE5441C3F528BC99B7504185EB51C817DE54417B14AE179CB75041EC51B89E17DE5441666666869DB75041A4703D1A2EDE54417B14AEF79DB75041F6285CCF36DE544148E17A749DB75041AE47E15A3ADE54418FC2F5D896B7504148E17A743BDE5441EC51B8BE95B75041EC51B88E3CDE5441295C8FE29AB750418FC2F55880DE544148E17AE48EB7504185EB517880DE5441D7A370CD91B75041666666F693DE5441C3F5281C93B750410000009093DE5441AE47E16AA4B750419A99998990DE54417B14AE07A5B7504152B81E658FDE5441295C8F22A1B75041F6285C6F5DDE544114AE47219FB75041000000C045DE544148E17AC49EB75041C3F5288C3FDE54419A9999E99EB7504152B81E553CDE5441EC51B85E9FB75041295C8F5237DE54410AD7A3F0A0B750410AD7A39031DE54413D0AD7F3A2B75041EC51B88E2BDE5441E17A142EA4B75041AE47E11A27DE5441CDCCCCBCABB750418FC2F50812DE5441B81E853BB3B750411F85EB21FDDD5441A4703DBAADB75041C3F5287CFFDD5441E17A14EEA9B75041295C8F5204DE54411F85EBC1A7B75041295C8F1204DE5441AE47E13AA6B75041B81E85EB01DE5441AE47E1BAA5B75041D7A370DDFDDD54417B14AE97A4B7504152B81E55FCDD54417B14AE37A1B75041F6285C5FF9DD544148E17A449FB7504114AE47C1F8DD5441666666469DB75041AE47E1DAF9DD5441D7A370DD9FB7504166666616FEDD5441CDCCCCEC9FB75041EC51B85E00DE5441A4703D0AA2B75041C3F5288C03DE5441
+</a>
+
+<b>
+01060000000100000001030000000100000067000000D22CFAF59DB75041A45823DB36DE5441B4D4BEC19DB750416F9409AA32DE54412C5D88859DB75041E6ACA00C2EDE54412DDDC9629DB750415D2555EB2BDE54416CDD013E9DB750411AE710AA29DE54417B14AE179CB75041EC51B89E17DE5441AFBE824E9BB75041781D96AC17DE54414BA401DB99B750412A9C31C617DE54411D4932B697B75041D364C43218DE54419852805695B75041CEB34DB018DE5441E87BCD9593B7504161B4812719DE54418F1C99CB91B75041A6353CA119DE54413AF230C58DB750415935FAB21ADE5441544A195B8BB7504179AB446D1BDE5441F2F104FB88B75041B1CFAB2B1CDE5441829CBD6B87B750410BE5FFF01CDE5441237E333884B75041FEB206861EDE544177799DE183B75041C3DC86BC1EDE544160B80D8183B7504138FF79021FDE54415D035CA582B750418ED19FA11FDE54415795CA0E82B75041785AB20E20DE5441C3F5289C7EB75041E17A148E22DE5441414E89CA7BB75041CEDE5B5A24DE5441F6285C5F7BB75041EC51B89E24DE54410AD7A3B077B75041295C8F9226DE5441F62E80C577B750417942E4752BDE5441A81928E877B75041240D800C33DE5441ED96E9F777B750412C971B0B36DE5441D8216B2578B75041572AD72C38DE5441D7A3704D78B75041CDCCCC0C3ADE5441E6F76E4E74B75041EDBB7B533BDE54418C93E60872B750416CA803143CDE5441C3F528EC6FB75041713D0AC73CDE5441AF79474170B750411568468743DE544165E0985D70B75041D4193CC645DE54418E3A228570B750417209F9E848DE5441B81F4FAA70B75041AB41C5DB4BDE5441CF6741E970B750410EDBD0D950DE544144C2910271B75041A407C8DB52DE54415C8FC24571B750410000003058DE54418FA32B6071B75041E8AA3E225BDE54412331077171B750414AA4AC035DDE5441E7D5318771B75041A148B87C5FDE544176CEADA871B75041D987925461DE5441D349B49A72B75041BB5429E76BDE544152B81EB573B75041D7A3703D78DE5441AE47E19A71B750415C8FC25578DE5441245F53FD6BB75041DACD464D78DE5441B52C9FEB68B7504166D1A34878DE54413E4110FF67B75041B5887F4878DE5441DA2D8BA465B750419D542B4F78DE544114AE475163B750415C8FC25578DE5441DC2EE43063B7504161AA0D5478DE5441418E8E2062B75041141DB44578DE544120FD322361B75041ECD95F4078DE544131262ED561B75041A012250281DE544113C10DA862B75041C67EC3638BDE544171A4716F63B7504184EFA83495DE5441DC31442964B75041993E905A9EDE544152B81E4564B750419A9999B99FDE54413AF7CF9164B7504133DFFFBBA3DE544116F8F1C864B750417A1A1CDCA3DE5441DB4CF50665B750410EA6ACFEA3DE544108E1350467B75041E97DADFFA2DE5441000000D067B750419A999999A2DE5441C1E8502269B750414497C311A2DE54417085E2956AB75041E4AD937CA1DE544144E0CCC16FB750418B4504699FDE544167A4DF6B72B75041F0F928579EDE5441E550142073B75041A46CCE0E9EDE5441C3F528BC7AB750410AD7A3009BDE5441E879BDFC7FB75041EB2D496699DE544103BCC9FF7FB750411A6E4D6599DE5441BCEAE7F382B750414713837E98DE54417014335F87B7504157D6342597DE54411AA89E3F8BB7504186094AF695DE54419E44C7DD8EB750412CDB98DB94DE5441CE00C40E90B75041296F817E94DE54415A75D33B91B75041CADA9C2294DE5441ED67D6CC91B750418B7895F693DE54413729087790B75041BC8ACB008BDE544148E17AE48EB7504185EB517880DE5441B1BB9F7992B75041419EF36E80DE5441261CDD6193B750419851946C80DE54410DBB059493B75041C927116C80DE5441F934C1CA94B75041B599E46880DE5441911D31E795B7504175CEFC6580DE54412069975396B750415558E16480DE54410E9D84AD97B750411CC2586180DE544177BA076A98B7504115CE6B5F80DE5441513887C298B75041B462845E80DE5441295C8FE29AB750418FC2F55880DE544166ABCF739AB750411B5E53A47ADE54415880DD9899B75041C69EB55C6FDE5441E8342B2A97B750410F8624484FDE5441FFEAC35696B75041E798006444DE54411A6C3C4896B75041A53961A443DE5441EC51B8BE95B75041EC51B88E3CDE54418FC2F5D896B7504148E17A743BDE54417939CE949BB75041A128BCAA3ADE544148E17A749DB75041AE47E15A3ADE5441872749EA9DB750410D4A022C37DE5441D22CFAF59DB75041A45823DB36DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7447 - 399072
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000003000000170000007B14AEB7FDBC5041E17A14CE30E254419A999969FBBC50419A99990931E25441C3F5286CF6BC5041713D0A372FE25441CDCCCCDCF3BC5041000000C036E254419A999919DABC504185EB51282DE2544185EB5198D1BC5041CDCCCC7C2AE2544148E17A54D1BC5041C3F5289C21E25441D7A3707DCEBC504114AE479120E25441F6285CDFCCBC50410000005021E25441713D0A37C5BC50411F85EBF136E254419A9999F9C3BC50411F85EBE13EE254413D0AD7030FBD5041EC51B88E51E254411F85EBC10DBD5041CDCCCCFC59E25441295C8FC215BD50411F85EB715AE25441E17A14CE1BBD5041713D0AB737E2544114AE47111CBD50415C8FC2352FE25441CDCCCCDC1ABD5041000000E02DE254411F85EBE119BD50418FC2F5F82DE2544148E17A4415BD504152B81EB536E254411F85EBC10BBD50413D0AD72337E25441C3F528CC04BD5041000000E037E2544185EB5138FFBC5041713D0AA738E254417B14AEB7FDBC5041E17A14CE30E254410A00000085EB518803BD50418FC2F5983DE254417B14AE8702BD5041C3F5281C41E25441295C8F6204BD504148E17A4443E2544148E17A340FBD504114AE47E145E254413D0AD7830EBD504152B81EF547E25441C3F5282C07BD504114AE472146E2544148E17A3402BD5041EC51B8DE45E254419A9999E9FDBC5041295C8FE244E254415C8FC2A500BD504185EB51D83CE2544185EB518803BD50418FC2F5983DE25441050000000AD7A330CEBC5041CDCCCC3C34E25441E17A14FED2BC5041D7A3701D36E2544152B81E55D3BC50411F85EB313BE25441B81E85ABCCBC5041C3F5281C39E254410AD7A330CEBC5041CDCCCC3C34E25441
+</a>
+
+<b>
+01060000000100000001030000000200000015000000EC0E02CF11BD50419DCF63DD36E25441796C526809BD5041AE4CF96D37E254411A0E2239FFBC5041A2C2D2D338E25441E6750A6DFDBC5041B71EF8D630E254418531B86BFDBC504180E7E6D530E2544174999969FBBC5041B999990931E2544166F5286CF6BC5041843E0A372FE2544185B81EB5F4BC50413BAE471139E2544198C8A816F2BC504117696A1D48E254414ACDB09810BD5041C74AA8974FE25441AA883F870EBD504134C814085AE254412B5C8FC215BD50411185EB715AE25441209933E918BD5041DC43915748E25441947A14CE1BBD5041AF3D0AB737E254413A40670E1CBD5041ECDCF6922FE2544113AE47111CBD5041848FC2352FE25441C3CCCCDC1ABD5041080000E02DE254419129370E1ABD504101FEC5F42DE2544102C830C715BD50416601B8BD35E2544148E17A4415BD504152B81EB536E25441EC0E02CF11BD50419DCF63DD36E254411200000055EDE32AFFBC5041DE76123241E254415C8FC2A500BD504185EB51D83CE25441AC3092A201BD504107DD421A3DE2544185EB518803BD50418FC2F5983DE25441A3E1693503BD50416B4971BB3EE254417B14AE8702BD5041C3F5281C41E25441295C8F6204BD504148E17A4443E2544163894BAA0CBD5041BBCC4A4445E2544148E17A340FBD504114AE47E145E25441D773F0300FBD5041A4D0F0EB45E254416644FEEB0EBD5041853887BB46E254413D0AD7830EBD504152B81EF547E2544172CC7B700EBD50419B644DF047E25441C3F5282C07BD504114AE472146E25441D3B92A1304BD5041724AC6F745E2544148E17A3402BD5041EC51B8DE45E254419A9999E9FDBC5041295C8FE244E2544155EDE32AFFBC5041DE76123241E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7546 - 121272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B8DE83BD5041D7A3702DDEE154410000005076BD5041D7A3701DEBE15441EC51B84E7CBD5041D7A3701DEEE154410000000083BD50415C8FC205F2E15441E17A147E92BD504185EB5188FBE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154417B14AE77A5BD50418FC2F578EAE154411F85EBE192BD5041EC51B82EE4E15441EC51B8DE83BD5041D7A3702DDEE15441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000EC51B84E7CBD5041D7A3701DEEE15441D20109557CBD504123902021EEE154412C25116E7CBD5041B0BEC92DEEE1544183D4949C7DBD504133805EE0EEE154410000000083BD50415C8FC205F2E1544164611FCF8DBD5041277258A8F8E154412189268692BD50416179258BFBE15441D86E714793BD5041CA3DD51FFCE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154415E881170A3BD5041D637CF62EDE1544174230F71A5BD5041B580187CEAE15441CA85712698BD504180F91EF7E5E154411F85EBE192BD5041EC51B82EE4E15441723A64BE92BD50410D348220E4E1544123AE50B092BD504113E8B81BE4E15441A0E577388FBD50415045BDB7E2E15441EC51B8DE83BD5041D7A3702DDEE1544149E6624D77BD5041922DA42BEAE15441F4CBF95576BD5041230AB518EBE1544196F9FBF27BBD504197AC88EFEDE15441EC51B84E7CBD5041D7A3701DEEE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7546 - 321348
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B8DE83BD5041D7A3702DDEE154410000005076BD5041D7A3701DEBE15441EC51B84E7CBD5041D7A3701DEEE154410000000083BD50415C8FC205F2E15441E17A147E92BD504185EB5188FBE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154417B14AE77A5BD50418FC2F578EAE154411F85EBE192BD5041EC51B82EE4E15441EC51B8DE83BD5041D7A3702DDEE15441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000EC51B84E7CBD5041D7A3701DEEE15441D20109557CBD504123902021EEE154412C25116E7CBD5041B0BEC92DEEE1544183D4949C7DBD504133805EE0EEE154410000000083BD50415C8FC205F2E1544164611FCF8DBD5041277258A8F8E154412189268692BD50416179258BFBE15441D86E714793BD5041CA3DD51FFCE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154415E881170A3BD5041D637CF62EDE1544174230F71A5BD5041B580187CEAE15441CA85712698BD504180F91EF7E5E154411F85EBE192BD5041EC51B82EE4E15441723A64BE92BD50410D348220E4E1544123AE50B092BD504113E8B81BE4E15441A0E577388FBD50415045BDB7E2E15441EC51B8DE83BD5041D7A3702DDEE1544149E6624D77BD5041922DA42BEAE15441F4CBF95576BD5041230AB518EBE1544196F9FBF27BBD504197AC88EFEDE15441EC51B84E7CBD5041D7A3701DEEE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7548 - 58189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000060000009A99996953BD50418FC2F5C84AE1544185EB513850BD504148E17A143BE15441B81E858B40BD504148E17A3437E154417B14AEE73ABD5041295C8F7236E154419A99999952BD5041B81E85AB4CE154419A99996953BD50418FC2F5C84AE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E858B40BD504148E17A3437E154419766FDA23CBD50414CAC19AE36E15441EB3326EA3ABD50414133E07436E15441353A529552BD50416FD181A74CE154413851079852BD50416DD181A74CE154411D87A02753BD5041556804624BE1544192A3086153BD5041FF6DD5DC4AE154410A1A096753BD504106D6E8CE4AE154419E1E6E3750BD504198842D183BE15441BC0C980B46BD50414786919038E15441B81E858B40BD504148E17A3437E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7548 - 121273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000060000009A99996953BD50418FC2F5C84AE1544185EB513850BD504148E17A143BE15441B81E858B40BD504148E17A3437E154417B14AEE73ABD5041295C8F7236E154419A99999952BD5041B81E85AB4CE154419A99996953BD50418FC2F5C84AE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E858B40BD504148E17A3437E154419366FDA23CBD50414EAC19AE36E15441E73326EA3ABD50413C33E07436E15441353A529552BD504171D181A74CE154413851079852BD504171D181A74CE154411F87A02753BD50415A6804624BE1544193A3086153BD5041FB6DD5DC4AE15441051A096753BD504102D6E8CE4AE15441A11E6E3750BD504193842D183BE15441BC0C980B46BD50414586919038E15441B81E858B40BD504148E17A3437E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7548 - 321349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000060000009A99996953BD50418FC2F5C84AE1544185EB513850BD504148E17A143BE15441B81E858B40BD504148E17A3437E154417B14AEE73ABD5041295C8F7236E154419A99999952BD5041B81E85AB4CE154419A99996953BD50418FC2F5C84AE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E858B40BD504148E17A3437E154419366FDA23CBD50414EAC19AE36E15441E73326EA3ABD50413C33E07436E15441353A529552BD504171D181A74CE154413851079852BD504171D181A74CE154411F87A02753BD50415A6804624BE1544193A3086153BD5041FB6DD5DC4AE15441051A096753BD504102D6E8CE4AE15441A11E6E3750BD504193842D183BE15441BC0C980B46BD50414586919038E15441B81E858B40BD504148E17A3437E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7695 - 399164
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000008000000270000008FC2F5382CBC50418FC2F5D8D2E354418FC2F5D82FBC5041333333E3CFE354417B14AE2730BC5041EC51B8DECAE35441C3F5285C2FBC504148E17A04C6E3544152B81E752EBC50413D0AD7C3C6E35441CDCCCC9C2DBC5041AE47E1EAC5E354417B14AE572CBC504114AE4701C7E35441D7A370BD2BBC5041713D0A97C4E35441A4703D1A2CBC5041EC51B8AEC3E354413D0AD7032DBC5041EC51B82EC3E35441666666262BBC5041CDCCCCECC0E354418FC2F5A829BC504100000010C2E3544185EB518821BC5041E17A144EB8E35441B81E856B1FBC504152B81E85B7E3544148E17A241BBC50410AD7A390B8E35441EC51B83E14BC5041CDCCCC0CBBE354419A9999D904BC50415C8FC2C5C4E35441666666E6F8BB5041B81E855BCBE35441B81E851BF8BB5041F6285CAFCBE35441666666E600BC5041666666B6D0E354411F85EBD104BC50415C8FC255D3E35441C3F5282C04BC504133333323D4E35441AE47E1AAFFBB5041C3F5285CD1E354419A999999F6BB504100000050CCE35441AE47E13AEFBB504100000060CFE35441CDCCCC6CE9BB50415C8FC205D4E354419A9999D9E7BB50417B14AE97D4E35441713D0A87EFBB5041EC51B8AEE0E35441295C8F12FBBB5041E17A14AEE9E354413333337300BC5041000000F0E5E354417B14AE3702BC50411F85EB31E2E354410AD7A33004BC50413D0AD763DFE354417B14AE4709BC5041B81E85CBDCE35441A4703DEA0EBC50419A999909DCE3544185EB515818BC50419A999939D8E35441713D0A471ABC50415C8FC2B5D8E35441333333631EBC5041295C8F42D7E35441EC51B81E26BC5041F6285CCFD5E354418FC2F5382CBC50418FC2F5D8D2E35441090000005C8FC20515BC5041C3F5287CD2E354417B14AEC714BC504166666626D3E35441EC51B84E10BC5041A4703D8AD4E3544185EB51780DBC5041EC51B8DED5E35441C3F5282C0BBC50417B14AEA7D6E3544114AE47A10ABC50411F85EB81D5E35441AE47E14A0BBC5041C3F5284CD4E35441C3F5283C14BC50417B14AE37D1E354415C8FC20515BC5041C3F5287CD2E3544108000000A4703DCAF3BB50418FC2F528DAE35441E17A149EFABB50419A9999B9DDE35441B81E851BF9BB504114AE47A1DEE35441C3F528BCF1BB5041333333C3DAE354418FC2F5A8ECBB5041C3F528ECD7E3544148E17A34EDBB5041666666C6D6E3544166666696F0BB50418FC2F548D8E35441A4703DCAF3BB50418FC2F528DAE35441050000005C8FC295FBBB504133333333E0E35441CDCCCC9CFCBB5041F6285CDFDEE3544114AE47B1FFBB5041EC51B8BEE0E35441AE47E19AFEBB504133333303E2E354415C8FC295FBBB504133333333E0E3544113000000000000201BBC504185EB5118D1E3544148E17AC418BC50410AD7A300D2E354413333331317BC5041EC51B82ED2E35441F6285CBF15BC5041333333B3D1E354419A99995916BC5041B81E85BBD0E354418FC2F5B81DBC504148E17AF4CDE35441A4703DFA22BC504114AE4781CCE35441F6285CDF27BC504152B81E35CAE35441C3F5283C28BC5041EC51B8EECAE35441AE47E13A2ABC504133333373CAE35441666666B62ABC50419A999989CBE3544152B81E0529BC5041F6285CAFCCE35441EC51B8EE27BC5041AE47E13ACDE35441333333A325BC50417B14AE97CDE35441B81E85DB22BC5041CDCCCCCCCEE354410AD7A37020BC504185EB5148CFE35441713D0AE71DBC50413D0AD7D3CFE354418FC2F5E81BBC5041D7A3708DD0E35441000000201BBC504185EB5118D1E35441050000008FC2F51800BC5041AE47E11AD4E354410AD7A370FBBB5041AE47E1AAD1E35441E17A141EFCBB50417B14AE47D0E35441EC51B8CE00BC5041F6285CCFD2E354418FC2F51800BC5041AE47E11AD4E3544107000000F6285C2FF1BB504148E17AD4D3E3544114AE4791F0BB5041D7A3703DD4E35441A4703D8AEFBB5041E17A14DED3E35441A4703DFAEEBB5041B81E850BD3E35441A4703D8AEFBB50418FC2F508D2E35441A4703DFAF0BB50413D0AD793D2E35441F6285C2FF1BB504148E17AD4D3E3544106000000E17A147EF4BB50410AD7A380D6E3544148E17A74F4BB50417B14AEB7D5E3544100000040F6BB5041AE47E19AD5E3544114AE4731F6BB504133333323D7E354417B14AEE7F4BB50411F85EB31D7E35441E17A147EF4BB50410AD7A380D6E35441
+</a>
+
+<b>
+01060000000100000001030000000800000036000000998B5BBE0EBC5041CDBE7F0FDCE35441341176E30EBC50412CA497F5DBE35441C5B7640A14BC50414ADB0D7CDAE35441713D0A471ABC50415C8FC2B5D8E35441E3B06E6E1EBC5041BE5DA182D7E354414D4CF6931EBC5041BA3BE377D7E35441B9B7CB4628BC50419ADF59C3D4E354417290627628BC5041C7A03FACD4E3544147C2F5382CBC504143C2F5D8D2E354417AC2F5D82FBC50411E3333E3CFE354416F14AE2730BC5041C951B8DECAE35441B01EB91030BC50419EAF9852CAE35441D0F5285C2FBC504195E17A04C6E3544175B81E752EBC5041FE0AD7C3C6E35441DCCCCC9C2DBC50414848E1EAC5E354415BAB459F2CBC504198C7F9C3C6E354415914AE572CBC504102AE4701C7E3544196299B432CBC5041F65CD1B0C6E35441D7A370BD2BBC5041713D0A97C4E35441A4703D1A2CBC5041EC51B8AEC3E35441230AD7032DBC5041FA51B82EC3E35441236666262BBC504100CDCCECC0E354415CC2F5A829BC5041D4FFFF0FC2E3544193EB518821BC5041727B144EB8E35441A21E856B1FBC504157B81E85B7E3544148E17A241BBC50410AD7A390B8E354414D2BE01C18BC5041EF3A12A8B9E35441ED51B83E14BC504105CDCC0CBBE35441839999D904BC5041818FC2C5C4E35441306666E6F8BB5041D91E855BCBE35441BA1E851BF8BB5041F7285CAFCBE354412EFB7C36FEBB50415F5A0E2DCFE35441B06666E600BC50415F6666B6D0E354414685EBD104BC5041538FC255D3E35441C3F5282C04BC504133333323D4E35441AE47E1AAFFBB5041C3F5285CD1E35441C8999999F6BB50411A000050CCE35441B7D90357F1BB5041B0F18D7FCEE35441AE47E13AEFBB504100000060CFE3544192C5BF7CEABB50414768092CD3E35441CDCCCC6CE9BB50415C8FC205D4E35441B69999D9E7BB50417114AE97D4E35441DCD25B14EEBB50415E1BFF66DEE35441713D0A87EFBB5041EC51B8AEE0E35441295C8F12FBBB5041E17A14AEE9E354418AE4DE34FDBB50416245DF31E8E354413433337300BC5041CEFFFFEFE5E354411A14AE3702BC50413685EB31E2E3544177FB4ED803BC504136BA73E1DFE354413FD7A33004BC50410A0AD763DFE35441B134956A06BC50411E1A4541DEE354417B14AE4709BC5041B81E85CBDCE35441024F41560ABC5041D6AF25A7DCE35441998B5BBE0EBC5041CDBE7F0FDCE354411B000000C14B41BB1BBC50417BCC0B33D1E35441342B3EE01ABC5041C4194D8ED1E354413CF1DFBA1ABC504198873796D1E354416CE17AC418BC50413BD7A300D2E3544114EAAED117BC50412D39761AD2E354413333331317BC5041EC51B82ED2E35441AD285CBF15BC5041F03233B3D1E354419599995916BC5041271E85BBD0E354419BC2F5B81DBC50413BE17AF4CDE354411534DF9220BC5041D7BC132BCDE3544191703DFA22BC504119AE4781CCE354416C8ACB6123BC504106FEAC50CCE354411D295CDF27BC504168B81E35CAE35441DCF5283C28BC5041E651B8EECAE3544172B00F5B28BC5041CE123FE7CAE35441EA47E13A2ABC504189323373CAE35441C06666B62ABC504164999989CBE3544180BD0A772ABC5041B5628EB4CBE3544152B81E0529BC5041F6285CAFCCE35441EC51B8EE27BC5041AE47E13ACDE35441A2BEDB4725BC504139A82F20CEE35441E407B81B23BC5041526514EDCEE354417D537F7A20BC504170E2B39CCFE35441CB8CB6A31EBC5041C6277A41D0E35441BD5C16311EBC5041F39E9869D0E3544169257D3F1CBC5041A2DCF2FBD0E35441C14B41BB1BBC50417BCC0B33D1E354410C000000B0AC5050F2BB5041A348B14BD9E35441A4703DCAF3BB50418FC2F528DAE3544152B8FE81F7BB5041FDF9EB19DCE35441E17A149EFABB50419A9999B9DDE35441CF984310FABB5041A47C980EDEE35441B81E851BF9BB504114AE47A1DEE35441C3F528BCF1BB5041333333C3DAE354418FC2F5A8ECBB5041C3F528ECD7E35441649EB70AEDBB504152E6541ED7E3544120E17A34EDBB5041316666C6D6E35441A2666696F0BB504148C2F548D8E35441B0AC5050F2BB5041A348B14BD9E354410C000000E8F5283C14BC5041B614AE37D1E354415C8FC20515BC5041C3F5287CD2E35441563079DB14BC504189071FF0D2E354417514AEC714BC50411F676626D3E354416E63975B10BC50412E5F3D86D4E354410F52B84E10BC504199703D8AD4E3544196EB51780DBC50411F52B8DED5E3544141F5282C0BBC5041AF14AEA7D6E3544167457AD10ABC5041EB32DEE7D5E3544114AE47A10ABC50411F85EB81D5E35441AE47E14A0BBC5041C3F5284CD4E35441E8F5283C14BC5041B614AE37D1E35441070000006BC2F51800BC50419B47E11AD4E354416EEF539CFDBB504163EDB2CDD2E354410AD7A370FBBB5041AE47E1AAD1E35441E17A141EFCBB50417B14AE47D0E354412F0586A2FEBB5041337E52A3D1E35441EC51B8CE00BC5041F6285CCFD2E354416BC2F51800BC50419B47E11AD4E35441080000002DAD490EFCBB5041DB60897BE0E354414A8FC295FBBB50412C333333E0E354418BCCCC9CFCBB5041BD285CDFDEE3544122E947E5FCBB5041EAD26C0BDFE3544153AE47B1FFBB5041B952B8BEE0E3544119C7B9ECFEBB5041E1B3CEA3E1E35441AE47E19AFEBB504133333303E2E354412DAD490EFCBB5041DB60897BE0E354410B0000009A703D8AEFBB5041A1C2F508D2E35441A4703DFAF0BB50413D0AD793D2E35441F6285C2FF1BB504148E17AD4D3E3544155EB1FE0F0BB504179F51609D4E3544149AE4791F0BB5041F6A3703DD4E3544121FDBC2CF0BB5041E594FD18D4E3544178703D8AEFBB5041BE7A14DED3E3544125E77A68EFBB5041922BB7ACD3E35441A4703DFAEEBB5041B81E850BD3E35441B571DA34EFBB504128CD46A2D2E354419A703D8AEFBB5041A1C2F508D2E354410900000051A62A9CF4BB50412A2626B3D6E35441E17A147EF4BB50410AD7A380D6E3544148E17A74F4BB50417B14AEB7D5E35441E915404BF5BB5041C62E38AAD5E354411C000040F6BB50416847E19AD5E3544114AE4731F6BB504133333323D7E35441CAF62CACF5BB5041C2FB2429D7E354417214AEE7F4BB50417185EB31D7E3544151A62A9CF4BB50412A2626B3D6E35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8059 - 406863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000036000000295C8F7295B5504148E17A6429DE544148E17A7495B5504148E17AE429DE544152B81E4597B55041B81E852B28DE5441333333E39BB550417B14AE6726DE5441E17A140E9FB550419A99995925DE5441E17A144EA2B550411F85EBA124DE54415C8FC2A5A8B550410AD7A38022DE54415C8FC2B5AAB550419A99990921DE54410AD7A3E0ACB55041AE47E1CA20DE544114AE4721AFB550410000009021DE5441295C8F12B2B550410000008023DE5441C3F5287CB2B550410AD7A32023DE54413D0AD743B2B55041CDCCCCEC1EDE5441A4703D1AB3B55041D7A370ED1CDE5441EC51B8AEB4B55041F6285C6F1CDE544133333323B7B55041C3F5289C1BDE5441B81E850BB9B55041713D0A871ADE544185EB51A8BAB5504185EB51F819DE54417B14AE07BCB550411F85EBC119DE544185EB5168BCB55041CDCCCC7C18DE5441713D0A67BBB55041A4703D4A14DE5441E17A142EBDB55041B81E858B10DE5441E17A14AEBDB55041CDCCCC6C0EDE544152B81EA5BDB550413D0AD7430CDE544152B81E45BDB55041AE47E1FA0ADE5441C3F5285CBBB550418FC2F57808DE544100000010BBB55041A4703DCA05DE5441D7A3700DBEB55041CDCCCC7C00DE5441713D0A17BDB55041D7A3701DFFDD544148E17A14BCB5504166666686FEDD544185EB51C8B9B5504152B81EF5FDDD5441713D0A57B7B55041A4703D3AFEDD5441D7A3701DB6B550413D0AD7B3FDDD544148E17AB4B4B55041E17A14EEF9DD5441295C8FD2B3B55041E17A143EF9DD5441295C8F42B0B55041A4703DBAF8DD5441295C8F92AEB55041EC51B87EF7DD5441D7A370DDADB55041713D0A47F5DD54417B14AE37ADB5504114AE47A1F0DD544166666636ACB550419A999969EDDD544100000030ABB5504114AE47B1EBDD5441713D0AC7A7B550417B14AEA7E8DD5441F6285CDFA5B550415C8FC2C5E7DD544152B81E75A3B55041D7A370DDE6DD54413D0AD753A1B550418FC2F538E5DD54415C8FC2359DB550415C8FC2D5DFDD5441AE47E1EA9AB550410AD7A3D0DBDD5441A4703D5A98B550413D0AD7C3D9DD5441D7A3706D96B55041000000A0D8DD54415C8FC22594B550415C8FC2F5D7DD54417B14AE2794B550415C8FC275D8DD54413333330395B550417B14AE570DDE54419A99990995B55041000000B00FDE5441295C8F7295B5504148E17A6429DE5441
+</a>
+
+<b>
+01060000000100000001030000000100000052000000B647EF689EB5504126F5AD67E1DD5441518FC2359DB55041678FC2D5DFDD54416347E1EA9AB550412AD7A3D0DBDD5441DA703D5A98B55041680AD7C3D9DD54418CA3706D96B55041150000A0D8DD5441928FC22594B550419D8FC2F5D7DD5441AD18AE2794B550412692C375D8DD544183DC134094B550417C5B5F56DEDD5441E7A67004B5B55041ACF37D0C00DE54417D99A2A1B3B55041FDED3AC919DE5441BC369F6D95B5504175351EDE26DE54415F5C8F7295B5504188E17A6429DE544168E17A7495B550412AE17AE429DE544162CC83EA95B550413CF1757429DE544107B81E4597B550418D1E852B28DE5441693333E39BB550415B14AE6726DE5441B67A140E9FB550418499995925DE5441818968FDA1B550415ED5BAB324DE5441CC7A144EA2B550411F85EBA124DE54414890468BA2B550412B625E8D24DE54415C8FC2A5A8B550410AD7A38022DE54415C8FC2B5AAB550419A99990921DE54410AD7A3E0ACB55041AE47E1CA20DE54418E61A0C4AEB55041EDBC537021DE544114AE4721AFB55041F5FFFF8F21DE5441545C8F12B2B55041D5FFFF7F23DE5441C3F5287CB2B550410AD7A32023DE54413D0AD743B2B55041CDCCCCEC1EDE54413AB5ED0AB3B55041527EF5111DDE5441AF703D1AB3B55041B7A370ED1CDE544175E18D95B4B550414F5334771CDE5441EC51B8AEB4B55041F6285C6F1CDE544133333323B7B55041C3F5289C1BDE544169316219B8B55041339E73101BDE5441C31E850BB9B550413B3D0A871ADE54417AEB51A8BAB550415AEB51F819DE54417B14AE07BCB55041F484EBC119DE54415DDFA81DBCB55041F4A5F97719DE544185EB5168BCB55041CDCCCC7C18DE5441FD6E134FBCB550414B785D1318DE5441303D0A67BBB55041B9703D4A14DE5441A17A142EBDB55041981E858B10DE54414BD72773BDB550415FABA3660FDE5441E17A14AEBDB55041CDCCCC6C0EDE5441AE1A02ABBDB550414A2E3AAF0DDE544107B81EA5BDB55041530AD7430CDE544157E89857BDB550415D0E323A0BDE544152B81E45BDB55041AE47E1FA0ADE5441C3F5285CBBB550418FC2F57808DE544100000010BBB55041A4703DCA05DE5441D7A3700DBEB55041CDCCCC7C00DE5441713D0A17BDB55041D7A3701DFFDD544148E17A14BCB5504166666686FEDD5441289E33E9BAB55041BFD8793CFEDD544170EB51C8B9B5504188B81EF5FDDD544137B929ACB8B55041320B8814FEDD5441713D0A57B7B55041A4703D3AFEDD5441C2A3701DB6B55041120AD7B3FDDD5441027D47FDB5B55041DBFACA5DFDDD544148E17AB4B4B55041E17A14EEF9DD54412A108D34B4B55041A52A6B8AF9DD5441D35B8FD2B3B550410C7B143EF9DD54413123A220B1B5504141DE57DAF8DD5441F35B8F42B0B550418E703DBAF8DD5441BC83AAD3AFB5504187113F69F8DD5441295C8F92AEB55041EC51B87EF7DD544136FCB449AEB55041ACE7609AF6DD5441ACA370DDADB550417B3D0A47F5DD544123A7699EADB550413BA8A782F3DD54417B14AE37ADB5504114AE47A1F0DD544186E2AF51ACB55041EB93F5C0EDDD54415F666636ACB550418F999969EDDD54411AB3E728ACB55041BA71F452EDDD5441BA192624ACB55041E940F94AEDDD544100000030ABB5504114AE47B1EBDD5441319E5E68AAB5504191EC74FFEADD5441303D0AC7A7B550419B14AEA7E8DD5441D6285CDFA5B55041878FC2C5E7DD544147B81E75A3B55041EDA370DDE6DD5441C29EDDCDA2B550417F3A775CE6DD54413D0AD753A1B550418FC2F538E5DD5441B647EF689EB5504126F5AD67E1DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8074 - 387533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F5297B550416666666607E2544148E17A149FB550413333337307E2544152B81EE5A6B5504185EB512807E254417B14AE07AFB55041E17A144E06E2544166666696B7B550418FC2F5F804E25441D7A3703DC0B5504114AE472104E254419A999909CBB550411F85EBF103E25441CDCCCC7CD5B55041A4703DDA05E25441AE47E14AD0B5504166666666ECE1544185EB5138C4B55041713D0AD7EDE15441295C8F42AFB550419A999939F0E15441F6285C6F9DB5504133333373F2E1544148E17A8496B550417B14AEE7F2E154418FC2F52894B5504133333363F3E15441A4703D6A8FB550413D0AD7F3F3E15441F6285C1F88B5504185EB51C8F4E1544148E17A947CB5504185EB5158F6E15441AE47E12A7DB55041666666B6F7E1544114AE47817EB550415C8FC2A5FCE1544114AE47B17FB55041C3F5288C05E25441666666468BB550419A9999B906E25441295C8F5297B550416666666607E25441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000F6285C1F88B5504185EB51C8F4E1544113953DC684B550417CFF583CF5E15441747157977CB55041E213FB5EF6E15441AE47E12A7DB55041666666B6F7E154418B995C807EB550410D2E5FA2FCE15441825C61807EB55041B1BF70A2FCE154412AAE47817EB55041728FC2A5FCE154412BD16DB57EB55041FB529A2CFEE1544114AE47B17FB55041C3F5288C05E254412B7F213A85B550411F2B331C06E25441116666468BB550414E9999B906E25441F35B8F5297B55041F065666607E2544173E17A149FB550411E33337307E2544192B81EE5A6B5504165EB512807E25441D2CC0880A8B550417B3342FD06E254417B14AE07AFB55041E17A144E06E2544166666696B7B550418FC2F5F804E2544153D45B86BCB550412030E37D04E2544142A4703DC0B55041DFAD472104E2544144999909CBB55041F484EBF103E2544181263BD9CFB5504130A3BCD204E2544118B79A1FD3B55041CC23C56B05E25441238B7302D4B55041D4832D9505E25441C6CCCC7CD5B55041A3703DDA05E25441AE47E14AD0B5504166666666ECE1544185EB5138C4B55041713D0AD7EDE15441D46C2BA2C3B55041FF1520E8EDE15441C8CC9F22A9B55041C12C51FDF0E15441F6285C6F9DB5504133333373F2E15441AA1EA8C39AB55041AAB42BA0F2E15441FD07A85896B55041CBBB6DFAF2E154415B145B1395B5504158273A33F3E154418FC2F52894B5504133333363F3E154413F6710AA93B55041C4514F72F3E154413A2E061B91B5504138E24FD0F3E154416B68CE1C8BB55041DA463371F4E15441F6285C1F88B5504185EB51C8F4E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8264 - 58217
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000090000007B14AEC73CB55041F6285C6F5CDE5441A4703DCA38B55041295C8F625DDE544114AE477130B5504185EB513860DE54411F85EBE122B550418FC2F53865DE5441D7A370BD2BB55041666666A68ADE544114AE476138B5504133333313C0DE5441B81E85BB53B55041D7A3706DBDDE5441A4703D3A48B55041000000D08CDE54417B14AEC73CB55041F6285C6F5CDE5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000D7E9D1A13DB550410DFB390960DE5441DAC7112550B55041C4744D005CDE5441129572664FB5504118A3CDD958DE5441CC8E66564FB55041B7AB8B9858DE54413C210C6943B55041C8A888E15ADE544159BE65CE3CB550415283BF8B5CDE5441D7E9D1A13DB550410DFB390960DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8350 - 87046
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A5413B45041CDCCCCCC83DD5441666666A619B450417B14AE7789DD5441F6285C3F1DB45041F6285C7F8CDD5441C3F5289C20B45041A4703D0A8FDD5441A4703D1A26B45041A4703DDA92DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54417B14AE374DB45041295C8F82A8DD54419A99999950B45041A4703DFAA9DD5441B81E85EB54B45041D7A3705DABDD544185EB51D857B45041333333F3ABDD5441CDCCCC3C58B4504148E17AA462DD54419A99995950B45041EC51B8AE60DD5441EC51B8DE4DB450415C8FC2E55FDD54415C8FC29514B4504148E17A7451DD54417B14AE9713B45041295C8F3252DD544148E17A5413B45041CDCCCCCC83DD5441
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F5289C20B45041A4703D0A8FDD5441238497A624B4504194BB44D891DD544152A4E3E727B450410834C4EF93DD54414FC43ED12BB45041DD2E805596DD54418C78483F2CB4504132F75C9A96DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD54416C039ED439B450412ABDC92E9EDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54410738788A48B4504148B4E90CA6DD54411A0BF63C4DB4504107E9D984A8DD5441C03FA7594EB45041F6785D00A9DD54412D6FC6A34FB45041A6B5968FA9DD54412BBE7D4B50B450412C395AD8A9DD5441A6895F0552B450412FAE136FAADD5441AE78C46353B450414AE09DDFAADD5441806917EA54B45041862EFB5CABDD544185EB51D857B45041333333F3ABDD5441E07C550A58B45041B095BD0C84DD5441B90E420E58B45041FE50AF4080DD5441C3FEC03258B4504105BFAECD63DD5441377D8B7A57B4504162BCCA9F63DD5441AC11501E51B450411AB76A1762DD5441BDB478A048B450417BE8B10D60DD54411D1BC37B3BB45041766F47525CDD5441E3AD900E2EB45041D6590CA358DD5441986890BE2BB45041D332D01258DD544176E83C8E2AB45041820A75BC57DD54414399C8A821B450416DC66C8F55DD544176C236571CB45041CABEF94554DD544179BAE9E413B450419A44643D52DD544112A1D5AC13B4504145F16A3752DD54418583B79D13B45041A43DF23352DD5441F208757D13B45041B19E973566DD5441D6C5275D13B4504145E0FBC97EDD54416F0B325D13B450416C9C9DD483DD5441666666A619B450417B14AE7789DD5441F6285C3F1DB45041F6285C7F8CDD5441C3F5289C20B45041A4703D0A8FDD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8350 - 265283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A5413B45041CDCCCCCC83DD5441666666A619B450417B14AE7789DD5441F6285C3F1DB45041F6285C7F8CDD5441C3F5289C20B45041A4703D0A8FDD5441A4703D1A26B45041A4703DDA92DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54417B14AE374DB45041295C8F82A8DD54419A99999950B45041A4703DFAA9DD5441B81E85EB54B45041D7A3705DABDD544185EB51D857B45041333333F3ABDD5441CDCCCC3C58B4504148E17AA462DD54419A99995950B45041EC51B8AE60DD5441EC51B8DE4DB450415C8FC2E55FDD54415C8FC29514B4504148E17A7451DD54417B14AE9713B45041295C8F3252DD544148E17A5413B45041CDCCCCCC83DD5441
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F5289C20B45041A4703D0A8FDD5441238497A624B4504194BB44D891DD544152A4E3E727B450410834C4EF93DD54414FC43ED12BB45041DD2E805596DD54418C78483F2CB4504132F75C9A96DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD54416C039ED439B450412ABDC92E9EDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54410738788A48B4504148B4E90CA6DD54411A0BF63C4DB4504107E9D984A8DD5441C03FA7594EB45041F6785D00A9DD54412D6FC6A34FB45041A6B5968FA9DD54412BBE7D4B50B450412C395AD8A9DD5441A6895F0552B450412FAE136FAADD5441AE78C46353B450414AE09DDFAADD5441806917EA54B45041862EFB5CABDD544185EB51D857B45041333333F3ABDD5441E07C550A58B45041B095BD0C84DD5441B90E420E58B45041FE50AF4080DD5441C3FEC03258B4504105BFAECD63DD5441377D8B7A57B4504162BCCA9F63DD5441AC11501E51B450411AB76A1762DD5441BDB478A048B450417BE8B10D60DD54411D1BC37B3BB45041766F47525CDD5441E3AD900E2EB45041D6590CA358DD5441986890BE2BB45041D332D01258DD544176E83C8E2AB45041820A75BC57DD54414399C8A821B450416DC66C8F55DD544176C236571CB45041CABEF94554DD544179BAE9E413B450419A44643D52DD544112A1D5AC13B4504145F16A3752DD54418583B79D13B45041A43DF23352DD5441F208757D13B45041B19E973566DD5441D6C5275D13B4504145E0FBC97EDD54416F0B325D13B450416C9C9DD483DD5441666666A619B450417B14AE7789DD5441F6285C3F1DB45041F6285C7F8CDD5441C3F5289C20B45041A4703D0A8FDD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9181 - 3149958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000019000000CDCCCCDCE22B51417B14AE07F99B544114AE4751E22B514166666616F99B54413D0AD703E32B5141CDCCCCFCF99B5441C3F528BCE42B514100000090FD9B5441A4703D6AE72B51417B14AE17049C5441000000D0EB2B51413D0AD7630A9C5441A4703D2AEC2B5141CDCCCC6C0A9C5441F6285CFFEE2B5141000000600D9C5441AE47E11AF42B51415C8FC2E50E9C5441333333C3F72B5141B81E856B109C54413D0AD773FB2B5141B81E856B129C5441E17A14BEFE2B5141295C8F52149C54413D0AD7C3012C5141D7A3704D129C5441EC51B85E022C514185EB51180F9C54413D0AD763032C514133333393069C54418FC2F5C8052C514152B81E55F59B5441A4703DBA032C5141D7A3708DF59B5441713D0A57FF2B514148E17A04F69B5441AE47E19AFD2B5141E17A144EFF9B5441F6285C7FFE2B514152B81E150B9C5441CDCCCCECFA2B5141295C8F52039C5441E17A142EF62B5141EC51B8BEFE9B54413D0AD733F62B5141EC51B89EFB9B544148E17A24F82B5141713D0AC7F69B5441CDCCCCDCE22B51417B14AE07F99B5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009384CCFC082C514129E7AE97E69B5441D77C281C092C51416F7A3E3AE69B5441159846E10D2C51417DCF84DBDB9B5441A040AFA7062C5141DB8EA3E0DB9B5441F67BC315FD2B5141AB5D34E3DB9B5441C2A7B7EEE92B5141836AE29ADB9B54417572FBB6E32B514179828D81E79B5441FF11BFC2E32B5141A9B8C980E99B544181752609E32B5141EA172DB9EB9B54410E9D26ECE22B5141E88659AFF09B54410BD6575FE42B51416D452020F59B54416ABEC546E62B5141F9652BABF89B544131883EBA032C514122F3718DF59B5441A62BF7C8052C514130BA1F55F59B544104A3B7DE062C5141709652C8ED9B5441EA02A4C0072C5141833DFFDFE99B54419384CCFC082C514129E7AE97E69B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9181 - 3478606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000019000000CDCCCCDCE22B51417B14AE07F99B544114AE4751E22B514166666616F99B54413D0AD703E32B5141CDCCCCFCF99B5441C3F528BCE42B514100000090FD9B5441A4703D6AE72B51417B14AE17049C5441000000D0EB2B51413D0AD7630A9C5441A4703D2AEC2B5141CDCCCC6C0A9C5441F6285CFFEE2B5141000000600D9C5441AE47E11AF42B51415C8FC2E50E9C5441333333C3F72B5141B81E856B109C54413D0AD773FB2B5141B81E856B129C5441E17A14BEFE2B5141295C8F52149C54413D0AD7C3012C5141D7A3704D129C5441EC51B85E022C514185EB51180F9C54413D0AD763032C514133333393069C54418FC2F5C8052C514152B81E55F59B5441A4703DBA032C5141D7A3708DF59B5441713D0A57FF2B514148E17A04F69B5441AE47E19AFD2B5141E17A144EFF9B5441F6285C7FFE2B514152B81E150B9C5441CDCCCCECFA2B5141295C8F52039C5441E17A142EF62B5141EC51B8BEFE9B54413D0AD733F62B5141EC51B89EFB9B544148E17A24F82B5141713D0AC7F69B5441CDCCCCDCE22B51417B14AE07F99B5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009384CCFC082C514129E7AE97E69B5441D77C281C092C51416F7A3E3AE69B5441159846E10D2C51417DCF84DBDB9B5441A040AFA7062C5141DB8EA3E0DB9B5441F67BC315FD2B5141AB5D34E3DB9B5441C2A7B7EEE92B5141836AE29ADB9B54417572FBB6E32B514179828D81E79B5441FF11BFC2E32B5141A9B8C980E99B544181752609E32B5141EA172DB9EB9B54410E9D26ECE22B5141E88659AFF09B54410BD6575FE42B51416D452020F59B54416ABEC546E62B5141F9652BABF89B544131883EBA032C514122F3718DF59B5441A62BF7C8052C514130BA1F55F59B544104A3B7DE062C5141709652C8ED9B5441EA02A4C0072C5141833DFFDFE99B54419384CCFC082C514129E7AE97E69B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9324 - 3239700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F000000666666F6A9235141D7A3700D1EA25441EC51B87EAB235141713D0AB71EA25441000000D0B3235141A4703DFA20A25441C3F5283CB523514114AE47D11CA25441F6285CBFB72351419A99996915A254411F85EBF1BB23514148E17A1409A25441000000D0B9235141C3F528BC08A2544114AE4791B4235141B81E856B07A254417B14AEC7AD235141C3F5283C05A254418FC2F538A72351413D0AD76302A2544152B81EE5A32351417B14AEC708A2544152B81EB59D2351417B14AE2712A254413D0AD7339A235141B81E853B18A25441000000C0A1235141666666461BA25441666666F6A9235141D7A3700D1EA25441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000296159CFB3235141CE1D10FA20A25441F4628930B7235141FEBB890E17A25441138D5A93BA23514143D6761A0DA254411F85EBF1BB23514148E17A1409A254419A999919C223514114AE47B10AA25441D7A3707DC3235141D7A370BD0AA25441EC51B8FEC7235141295C8FA20AA2544185EB51E8CD2351417B14AE970AA2544152B81E05D4235141D7A3709D0AA25441B81E855BD8235141AE47E1AA0AA254417B14AED7DC2351411F85EB710AA2544114AE47A1DF23514152B81E350AA2544148E17A24E1235141F6285C0F0AA2544185EB51B8E7235141295C8F2209A25441CDCCCCECEC2351419A9999D907A25441A4703D9AE8235141F6285CAFEAA15441C3F528BCE023514166666686EBA1544166666686D8235141713D0A47ECA154413D0AD7A3D1235141713D0A47ECA154411F85EBD1C8235141B81E852BECA15441295C8FF2BF23514166666636EBA15441E17A145EB92351410AD7A360EAA1544166666696B3235141666666E6E8A15441D7A370BDB2235141666666F6EAA15441D7A3707DB1235141C3F528ECEDA15441295C8F12AF23514185EB5138F3A15441295C8F32AB235141E17A14BEFAA1544100000000A923514148E17AA4FEA154418FC2F538A72351413D0AD76302A254417789374BA52351411B36011806A254415ECB73C7A3235141038BA1F408A254415D5D2FEEA2235141DFEBD23D0AA25441076A1A31A0235141E5B111640EA25441175F31489D23514102EC8DE412A2544172B0E2339A235141E3D0893B18A25441C8F223B09F23514190D49C711AA254410020F8B5A12351412F415B421BA25441000000C0A1235141666666461BA2544152D0E43DA52351417FEAB7741CA2544185259816A92351412B7FBFC11DA25441666666F6A9235141D7A3700D1EA25441D5AEEE4BAB23514153A115A11EA25441D04CEC6FAD23514101A0493E1FA25441296159CFB3235141CE1D10FA20A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>10372 - 38047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000007B14AE5757225141C3F528AC3F965441C3F528CC56225141295C8F7240965441666666764F225141000000F03C965441AE47E19A47225141AE47E1BA38965441EC51B8CE44225141A4703D1A37965441AE47E11A3B2251410AD7A3C031965441C3F5285C34225141295C8FD22E965441AE47E19A33225141C3F5283C31965441E17A148E30225141A4703DEA39965441A4703DFA2D2251413D0AD7333F965441000000E025225141A4703D9A539654410000002026225141D7A370AD559654417B14AED72D225141C3F528AC59965441666666C63B225141E17A14CE629654411F85EB4149225141AE47E1DA6A965441713D0AF74B225141B81E851B689654419A99995952225141713D0A675E965441E17A146E5A2251418FC2F5185A965441295C8FE2662251410AD7A310559654418FC2F5A86D22514114AE47D14E9654419A9999996E22514185EB51384C96544152B81E756E225141E17A141E4C96544185EB519867225141EC51B82E479654417B14AE5757225141C3F528AC3F965441
+</a>
+
+<b>
+010600000001000000010300000001000000140000009A99995952225141713D0A675E965441B2C25E6A5222514159DB1A5E5E965441181FE301532251418988600D5E965441E17A146E5A2251418FC2F5185A965441295C8FE2662251410AD7A310559654416A11FBB766225141A2AAFDDE539654417D5475F75F2251413807AA8D56965441877420095C2251410437127358965441066136D25422514135165E1A5C9654411084050052225141A0C541DC5D965441DDE249924D225141D435CD3864965441179B44BD4A2251412D0ED3E968965441F3A34DE94A22514123E33D2D699654416DA8E5ED4A225141DC7E942869965441D39DE2054B225141D2CF3C10699654411D10F0824B225141E667569168965441CB783B664C225141F6DB827267965441F11D2B6D4D2251415F44DBE265965441156117114F225141583C9664639654419A99995952225141713D0A675E965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>10372 - 78485
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000007B14AE5757225141C3F528AC3F965441C3F528CC56225141295C8F7240965441666666764F225141000000F03C965441AE47E19A47225141AE47E1BA38965441EC51B8CE44225141A4703D1A37965441AE47E11A3B2251410AD7A3C031965441C3F5285C34225141295C8FD22E965441AE47E19A33225141C3F5283C31965441E17A148E30225141A4703DEA39965441A4703DFA2D2251413D0AD7333F965441000000E025225141A4703D9A539654410000002026225141D7A370AD559654417B14AED72D225141C3F528AC59965441666666C63B225141E17A14CE629654411F85EB4149225141AE47E1DA6A965441713D0AF74B225141B81E851B689654419A99995952225141713D0A675E965441E17A146E5A2251418FC2F5185A965441295C8FE2662251410AD7A310559654418FC2F5A86D22514114AE47D14E9654419A9999996E22514185EB51384C96544152B81E756E225141E17A141E4C96544185EB519867225141EC51B82E479654417B14AE5757225141C3F528AC3F965441
+</a>
+
+<b>
+010600000001000000010300000001000000140000009A99995952225141713D0A675E965441B2C25E6A5222514159DB1A5E5E965441181FE301532251418988600D5E965441E17A146E5A2251418FC2F5185A965441295C8FE2662251410AD7A310559654416A11FBB766225141A2AAFDDE539654417D5475F75F2251413807AA8D56965441877420095C2251410437127358965441066136D25422514135165E1A5C9654411084050052225141A0C541DC5D965441DDE249924D225141D435CD3864965441179B44BD4A2251412D0ED3E968965441F3A34DE94A22514123E33D2D699654416DA8E5ED4A225141DC7E942869965441D39DE2054B225141D2CF3C10699654411D10F0824B225141E667569168965441CB783B664C225141F6DB827267965441F11D2B6D4D2251415F44DBE265965441156117114F225141583C9664639654419A99995952225141713D0A675E965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11503 - 422581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11657 - 2989276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000900000000000000CBD95041AE47E1AAC38D54410AD7A390D0D95041295C8F02D78D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D54419A999939D1D950418FC2F548A58D5441A4703DAAC1D95041AE47E10AAB8D5441713D0AF7C5D950411F85EB21B58D544100000000CBD95041AE47E1AAC38D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000078EBDD3AC2D9504136825DD5AA8D544173B2DA4EC3D950410AD55311AE8D544152FA175BC5D95041A030CD12B38D544123A8D4DBC7D950410E5845FDB88D544181A35122CAD950414CE43C5CBF8D54419B860FBACBD95041868D7623C48D5441081C0D8CCDD95041B1FB2B1ACC8D5441D60AC7A4CED950415027F954D08D544187000E52CFD95041546B3DAFD28D544127E288BBD0D9504100B41E1DD68D5441873AA067D1D95041AFCE0A98D68D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D54419220A796D7D950417EE71BF4A18D5441D9120719D2D95041854EDF6BA58D5441426E500BCBD95041B2AEDB26A88D544178EBDD3AC2D9504136825DD5AA8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11657 - 3736759
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000900000000000000CBD95041AE47E1AAC38D54410AD7A390D0D95041295C8F02D78D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D54419A999939D1D950418FC2F548A58D5441A4703DAAC1D95041AE47E10AAB8D5441713D0AF7C5D950411F85EB21B58D544100000000CBD95041AE47E1AAC38D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000078EBDD3AC2D9504136825DD5AA8D544173B2DA4EC3D950410AD55311AE8D544152FA175BC5D95041A030CD12B38D544123A8D4DBC7D950410E5845FDB88D544181A35122CAD950414CE43C5CBF8D54419B860FBACBD95041868D7623C48D5441081C0D8CCDD95041B1FB2B1ACC8D5441D60AC7A4CED950415027F954D08D544187000E52CFD95041546B3DAFD28D544127E288BBD0D9504100B41E1DD68D5441873AA067D1D95041AFCE0A98D68D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D54419220A796D7D950417EE71BF4A18D5441D9120719D2D95041854EDF6BA58D5441426E500BCBD95041B2AEDB26A88D544178EBDD3AC2D9504136825DD5AA8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231581 - 101315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCCBCF65D51419A9999C9D9D954418FC2F568005E5141AE47E14ADCD95441D7A3702D0A5E5141A4703DFADDD9544152B81EB50D5E5141C3F528ACDED954415C8FC205135E514185EB51B8DFD95441B81E85CB1B5E5141666666D6E3D95441C3F5286C1D5E5141A4703D9AE4D95441EC51B88E285E5141A4703DAACCD95441713D0A37245E51413D0AD7E3CAD95441EC51B84E235E51410AD7A340CBD954417B14AE271D5E514148E17AB4CDD95441C3F528DC185E5141F6285C2FCDD95441C3F5288C145E514152B81E25CED9544152B81EF50C5E51411F85EB11CDD95441C3F528BC065E5141D7A3705DCBD95441EC51B89EFA5D514185EB5118C7D954417B14AE47FA5D5141B81E85BBCBD954418FC2F5B8FA5D5141E17A14CECFD9544133333343F95D5141D7A370BDD4D95441CDCCCCBCF65D51419A9999C9D9D95441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441B715F3FFFB5D5141B657D194C7D954414813D627045E5141E485B474CAD95441BBF041B5065E5141B07B045ACBD954411AD2F2BB085E5141016322E9CBD9544128EB3B940A5E514196F2146BCCD954419B792C440C5E5141C98B6FE1CCD954412C6A0DB70D5E5141CEBD702ACDD9544140D994E70E5E51410FDA8458CDD954413BD6944A105E51410086CC8ACDD9544121FB0502125E5141CEE909C9CDD954418AA69CE3135E5141CE763F0DCED95441C3F5288C145E514152B81E25CED9544172F0B549155E514141A3ECFACDD95441FEC2A35A155E514120E427F7CDD954415015D55B155E514184ECE3F6CDD9544173FC0A80155E5141E45CD4EECDD954417E78AD83155E51419D3A05EECDD954418D653827165E51417C499DC9CDD95441344EDE8B175E514135B0387ACDD95441B47DE105185E5141E1760F5FCDD95441C3F528DC185E5141F6285C2FCDD95441B63666671A5E5141E446365FCDD95441A6E763CD1A5E514151678F6BCDD954414D1BC6B41B5E5141CCF29287CDD95441362E6D321D5E5141953D32B0CDD954418BDB2E951E5E51419DA3C822CDD95441217A90F8215E5141839007C9CBD9544187E373BD225E5141ACD58B7ACBD95441EC51B84E235E51410AD7A340CBD95441A993FF96235E51415BBBC423CBD95441489D88A0235E514170A9F51FCBD954417FD9E2DC235E51418914DA07CBD954413ADC9AFC235E5141BB8C2EFBCAD9544194A6FDD4215E51412E78AAEAC9D95441C7EF31B91C5E5141BD6C7FD4C7D9544108B6C29A145E5141F8159083C4D954415086CD440E5E5141175213EDC1D95441B33C72DE0A5E5141FC8F8893C0D95441D02C6650035E51410F7B239FBDD9544146C0F647005E5141469B1F70BCD954410F982AA7FC5D51419591A505BBD95441DFA10F0DFA5D51419381B001BAD95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231581 - 302834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCCBCF65D51419A9999C9D9D954418FC2F568005E5141AE47E14ADCD95441D7A3702D0A5E5141A4703DFADDD9544152B81EB50D5E5141C3F528ACDED954415C8FC205135E514185EB51B8DFD95441B81E85CB1B5E5141666666D6E3D95441C3F5286C1D5E5141A4703D9AE4D95441EC51B88E285E5141A4703DAACCD95441713D0A37245E51413D0AD7E3CAD95441EC51B84E235E51410AD7A340CBD954417B14AE271D5E514148E17AB4CDD95441C3F528DC185E5141F6285C2FCDD95441C3F5288C145E514152B81E25CED9544152B81EF50C5E51411F85EB11CDD95441C3F528BC065E5141D7A3705DCBD95441EC51B89EFA5D514185EB5118C7D954417B14AE47FA5D5141B81E85BBCBD954418FC2F5B8FA5D5141E17A14CECFD9544133333343F95D5141D7A370BDD4D95441CDCCCCBCF65D51419A9999C9D9D95441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441B715F3FFFB5D5141B657D194C7D954414813D627045E5141E485B474CAD95441BBF041B5065E5141B07B045ACBD954411AD2F2BB085E5141016322E9CBD9544128EB3B940A5E514196F2146BCCD954419B792C440C5E5141C98B6FE1CCD954412C6A0DB70D5E5141CEBD702ACDD9544140D994E70E5E51410FDA8458CDD954413BD6944A105E51410086CC8ACDD9544121FB0502125E5141CEE909C9CDD954418AA69CE3135E5141CE763F0DCED95441C3F5288C145E514152B81E25CED9544172F0B549155E514141A3ECFACDD95441FEC2A35A155E514120E427F7CDD954415015D55B155E514184ECE3F6CDD9544173FC0A80155E5141E45CD4EECDD954417E78AD83155E51419D3A05EECDD954418D653827165E51417C499DC9CDD95441344EDE8B175E514135B0387ACDD95441B47DE105185E5141E1760F5FCDD95441C3F528DC185E5141F6285C2FCDD95441B63666671A5E5141E446365FCDD95441A6E763CD1A5E514151678F6BCDD954414D1BC6B41B5E5141CCF29287CDD95441362E6D321D5E5141953D32B0CDD954418BDB2E951E5E51419DA3C822CDD95441217A90F8215E5141839007C9CBD9544187E373BD225E5141ACD58B7ACBD95441EC51B84E235E51410AD7A340CBD95441A993FF96235E51415BBBC423CBD95441489D88A0235E514170A9F51FCBD954417FD9E2DC235E51418914DA07CBD954413ADC9AFC235E5141BB8C2EFBCAD9544194A6FDD4215E51412E78AAEAC9D95441C7EF31B91C5E5141BD6C7FD4C7D9544108B6C29A145E5141F8159083C4D954415086CD440E5E5141175213EDC1D95441B33C72DE0A5E5141FC8F8893C0D95441D02C6650035E51410F7B239FBDD9544146C0F647005E5141469B1F70BCD954410F982AA7FC5D51419591A505BBD95441DFA10F0DFA5D51419381B001BAD95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13598 - 407801
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000AC000000A4703DBAF31F514152B81EB589215541A4703DEAEF1F5141295C8F428B215541A4703D1AEF1F5141333333838B2155419A999999EE1F5141333333538B2155418FC2F558EE1F51413D0AD7D38A2155418FC2F538EE1F51413D0AD7A38A2155418FC2F5E8ED1F51413D0AD7D38A2155418FC2F518ED1F514148E17A748B2155419A9999A9EC1F514148E17AD48B215541A4703DBAEC1F514148E17A648C215541AE47E1CAEC1F514148E17A348D215541AE47E19AEC1F514152B81EA58D215541AE47E12AEC1F514152B81ED58D215541AE47E1CAEB1F514152B81EC58D215541AE47E1DAEA1F51415C8FC2158E215541AE47E16AEA1F5141666666968E215541B81E854BEA1F5141666666D68E215541C3F5284CEA1F5141666666868F215541CDCCCC2CEA1F51416666661690215541CDCCCC5CE91F5141713D0A0791215541D7A370ADE81F51417B14AEB791215541E17A14AEE81F51417B14AE5792215541EC51B8AEE81F51417B14AE0793215541F6285C4FE81F51417B14AE8793215541F6285CCFE71F514185EB51E893215541F6285C3FE71F514185EB51389421554100000020E71F514185EB51B8942155410AD7A320E71F514185EB51A89521554114AE47F1E61F51418FC2F5489621554114AE4741E61F51418FC2F5D89621554114AE4771E51F51419A9999299721554114AE4771E41F5141A4703D2A9721554114AE47D1E31F5141AE47E18A972155411F85EB81E31F5141AE47E18A98215541333333A3E21F5141B81E850B9A2155413D0AD763E21F5141B81E859B9A2155413D0AD733E21F5141C3F5283C9B2155415C8FC225E21F5141C3F5282C9D215541713D0A17E21F5141C3F5282C9E215541713D0AC7E11F5141C3F5287C9E215541713D0A47E11F5141CDCCCCCC9E215541C3F528CCE01F51411F85EB31A0215541C3F528CCE01F51419A999949A22155417B14AE27E01F51418FC2F5C8A22155419A9999F9DE1F514148E17A04A22155417B14AE47DE1F5141EC51B8AEA021554185EB51E8DD1F5141EC51B82EA121554185EB5148DD1F5141F6285C7FA12155418FC2F508DD1F5141F6285C5FA22155418FC2F578DC1F5141000000B0A22155418FC2F5C8DB1F51410AD7A3E0A22155419A9999A9DB1F51410AD7A350A3215541A4703D8ADB1F51410AD7A360A4215541B81E858BDB1F51410AD7A380A5215541B81E856BDB1F51410AD7A3E0A5215541CDCCCC2CDB1F51410AD7A340A7215541D7A370FDDA1F51410AD7A3C0A7215541D7A370DDDA1F514114AE4751A8215541E17A14EEDA1F514114AE47E1A8215541EC51B8FEDA1F514114AE4781A9215541F6285C0FDB1F51410AD7A320AA21554100000020DB1F51410AD7A3C0AA2155410AD7A310DB1F51410AD7A340AB21554114AE47C1DA1F514114AE4741AC2155411F85EB71DA1F514114AE4741AD215541295C8F52DA1F514114AE47D1AD21554133333303DA1F51411F85EBD1AE2155413D0AD7E3D91F51411F85EB61AF21554148E17A94D91F51411F85EBD1AF21554148E17A54D91F51411F85EB51B021554152B81E05D91F5141295C8FD2B021554152B81E95D81F5141295C8F42B121554152B81ED5D71F5141333333A3B12155415C8FC245D71F51413D0AD723B22155415C8FC215D71F51413D0AD793B2215541666666A6D61F51413D0AD753B3215541666666E6D51F514148E17A94B3215541713D0A97D51F514148E17A44B4215541713D0A17D51F514152B81EC5B42155417B14AE67D41F51415C8FC225B52155417B14AEC7D31F51415C8FC295B521554185EB51F8D31F51415C8FC255B62155418FC2F548D41F51415C8FC2C5B62155419A999939D41F51415C8FC255B72155419A9999C9D31F51415C8FC2B5B7215541A4703D7AD31F514166666636B8215541AE47E1AAD31F51415C8FC2F5B8215541B81E85FBD31F51415C8FC275B9215541C3F5283CD41F51415C8FC205BA215541CDCCCC5CD41F51415C8FC2A5BA215541D7A370FDD31F51415C8FC265BB215541D7A3704DD31F5141666666F6BB215541D7A3705DD21F5141713D0A27BC215541D7A370FDD11F5141713D0A97BC215541D7A3704DD11F51417B14AED7BC215541CDCCCC8CD01F514185EB51A8BC215541CDCCCC0CD01F514185EB5178BC215541CDCCCC0CD01F514185EB51B8BC215541D7A3702DD01F514185EB5128BD215541E17A146ED01F514185EB51B8BD215541EC51B87ED01F514185EB5158BE215541F6285C7FD01F514185EB51F8BE215541F6285C2FD01F514185EB5168BF215541000000D0CF1F51418FC2F5C8BF215541000000F0CF1F514185EB5148C021554114AE47F1CF1F514185EB5108C12155411F85EBB1CF1F51418FC2F5C8C12155411F85EB31CF1F51418FC2F538C22155411F85EB41CE1F51419A999959C221554114AE47B1CD1F5141A4703D2AC22155410AD7A330CD1F5141A4703DBAC1215541000000F0CC1F5141AE47E11AC1215541F6285CBFCC1F5141AE47E1CAC021554100000090CC1F5141AE47E1FAC021554100000080CC1F5141AE47E16AC12155410AD7A340CC1F5141AE47E16AC221554114AE47D1CB1F5141B81E85FBC221554114AE47F1CA1F5141C3F5283CC32155410AD7A3A0C91F5141CDCCCC1CC32155410AD7A310C91F5141D7A3708DC321554114AE47E1C81F5141D7A3703DC42155411F85EBC1C81F5141D7A3709DC4215541295C8FC2C81F5141D7A370ADC5215541F6285CBFC81F514152B81E45C7215541295C8FE2C81F5141CDCCCC7CC72155411F85EBE1CB1F5141B81E853BCC2155413D0AD723C11F5141713D0A77D8215541E17A148EC91F5141000000A0D821554114AE4751C91F5141E17A148ED6215541713D0A57D01F51415C8FC2E5D3215541F6285C1FD11F51417B14AEE7CF2155410AD7A3B0DD1F5141F6285C8FCC215541C3F5288CE51F514148E17AA4CA215541E17A14EEEA1F51411F85EB61C921554152B81E35EB1F5141CDCCCCBCCC21554114AE47B1EC1F514133333393C921554185EB5118ED1F51415C8FC275C92155417B14AE17EF1F5141C3F5289CC4215541CDCCCC3CEF1F5141E17A140EC4215541AE47E1EAEF1F514133333393C221554152B81EF5F21F5141000000D0BC2155417B14AEF7F31F514100000060BA21554148E17A74F41F5141F6285CDFB82155410AD7A390F41F5141E17A14CEB72155419A999979F41F5141C3F5287CB6215541EC51B8EEF31F51418FC2F518B42155417B14AE37F11F514148E17A34B3215541713D0A97EE1F514133333353B12155417B14AE77ED1F5141295C8F12AE2155418FC2F5D8EE1F5141B81E857BAA21554114AE4721F31F514148E17A44A4215541B81E854BF91F51419A9999099A2155410AD7A3C0FD1F514152B81E95932155415C8FC2E5FC1F51410AD7A3508F21554114AE47E1FE1F514185EB51F88C215541EC51B8EEFE1F514185EB51788A215541CDCCCC0CFF1F514185EB513888215541A4703D9AFF1F51417B14AE478521554185EB5168FF1F514185EB51488321554166666676FE1F51418FC2F5D881215541713D0A07FE1F51418FC2F55882215541713D0A77FD1F51419A9999B9822155417B14AEC7FC1F51419A9999D9832155417B14AEE7FB1F5141A4703D6A842155417B14AE17FB1F5141AE47E18A84215541713D0A37FA1F5141B81E854B84215541713D0A97F91F5141C3F5282C84215541713D0A87F81F5141CDCCCC9C84215541713D0A47F71F5141D7A3702D85215541713D0A17F61F5141E17A14DE85215541295C8F12F61F51413D0AD71388215541A4703DBAF31F514152B81EB589215541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000662FAE80FB1F5141F1E32DD796215541E17391C0FC1F5141176AF1079521554116DF9C8DFB1F5141052365D48E2155413C97ACE3FC1F514138ABB4B58A215541CF7A4501FF1F5141EC2B73248521554185EB5168FF1F514185EB514883215541A8C235ABFD1F51416D24E2B1832155413928181FFC1F514181BCC9B384215541BD3B3BDEFA1F51416836BF3B8521554160B0ABA3F81F5141991CBBBC85215541E550713FF71F5141AA91CD728621554134B1B469F61F5141F95B346887215541C21BDEB8F61F51415AE61B2E88215541969DE0E0F51F51411F6409FD892155413DF20BB7F41F514117D5FE8B8A2155413A5E7E14EE1F5141D27CD1288D2155413C4F5C2FEB1F5141822AF6469021554103AC2249E61F51418745E04B99215541D24F9B79E31F5141C65FB92AA021554153FEFD2AE31F5141A14BF4E0A5215541D2058F9DE41F5141C612261CAA2155417A4A18FCE41F514178A06B87AB215541D3ED9542E81F51418D34A763AE2155412A9394A0EB1F514110AB62F0B021554126827669ED1F51418B8D3000AB21554124A0BA33F31F51410E685BC3A3215541ABA4F1E0F71F51416B8A76309B215541662FAE80FB1F5141F1E32DD796215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231654 - 2286356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000713D0A87A76051419A9999F943D65441B81E85BBA360514148E17A3432D654415C8FC285916051413D0AD71333D65441CDCCCCAC9160514114AE479133D65441F6285C7F9460514114AE477139D65441A4703D8A976051417B14AEE73ED65441E17A14FE98605141A4703D0A40D65441713D0A87A76051419A9999F943D65441
+</a>
+
+<b>
+0106000000010000000103000000020000001F000000F690D7D9F260514127199B1414D65441962CFE7EED605141C043A28419D65441455A2202EC60514109D538581AD6544165092D4EE66051419CF765FF1BD65441143751D1E4605141829082931CD65441A56060AFE0605141D3625E101ED65441CFF4C314D960514169299F271DD65441529C48A0D3605141404031691CD65441046E8093CF605141B55E496B1BD65441A6FE72DDCA6051415F4B284519D65441A16141A4C76051413762BA8618D65441EE96EBE7C5605141AB80D28817D6544100000040B66051413333334319D6544133333333B06051415C8FC29519D65441D1AA8AFAAD605141BB920E6A1CD65441CCED6723AC60514149CB23C21ED654416F6B4E99AA60514132321AB820D65441B0EE19FDA8605141E68D7C1F23D654412A327FCBA5605141BBE7BFFD2BD654415C1C3922A560514100F0B51F30D65441F4BAFB09A460514133F8E1A333D6544192102334A560514105F4FA1739D6544169C47478A76051413CDAA6F543D6544152B81EE5B960514152B81E3548D65441AE47E11ABB605141CDCCCC0C48D654418FC2F538B8605141D7A3708D32D654417B14AE67BE605141AE47E16A32D65441E17A14DED56051417B14AEE731D6544114AE4791F8605141B81E854B2FD654418FC2F5C8F56051418FC2F52822D65441F690D7D9F260514127199B1414D654411000000085EB5108B8605141E17A146E31D654411F85EBB1B6605141A4703D1A33D65441F6285CCFB7605141EC51B88E37D6544148E17A24B8605141666666763ED65441F6285CCFB8605141E17A14CE42D65441C3F528ECB8605141C3F528EC45D6544166666606B560514152B81E2545D6544100000040B660514114AE47B141D6544100000040B6605141E17A14AE3CD6544152B81E95B56051418FC2F53837D65441F6285C3FB56051417B14AE3735D65441B81E855BB46051410AD7A3E031D65441B81E855BB5605141F6285C4F2DD654415C8FC295B7605141295C8F322CD65441CDCCCCECB9605141B81E85FB2FD6544185EB5108B8605141E17A146E31D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13901 - 3153374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A47DE1B5141F6285C0FB9215541333333C3D71B5141C3F5288CBA215541C3F5287CD41B5141D7A3709DBC2155410AD7A370D21B5141EC51B8CEBE215541A4703D9AD11B51419A999989C0215541CDCCCC6CD11B514166666686C221554133333393D11B514185EB51B8C621554152B81E55D11B51417B14AED7CA215541CDCCCC6CD01B51417B14AE77CE21554133333323CF1B5141A4703DDAD121554114AE4721CC1B51417B14AED7D92155411F85EB51CF1B5141C3F528ACDA2155419A999999D21B5141AE47E14ADB215541713D0A17D41B514100000090DB2155415C8FC205D51B51418FC2F5E8D6215541AE47E14AD91B5141B81E85CBD721554152B81E75D81B514185EB5198DB2155410AD7A330E21B51415C8FC225DD215541E17A143EE31B5141AE47E10ADF215541F6285CAFE41B514148E17A24DA2155417B14AE07E51B5141E17A14DED8215541713D0AD7E61B514148E17AD4D3215541713D0AD7E71B5141C3F5280CD12155411F85EB51EC1B514133333343C621554114AE4781EE1B5141D7A3702DC0215541F6285C4FE81B51415C8FC2D5BC215541F6285CAFE21B51417B14AEA7BA215541713D0A47DE1B5141F6285C0FB9215541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000006E646A5AE71B5141D0E797E0C421554111958E51EC1B5141EEC10935C6215541A6F54350EC1B5141FB052A38C621554197A56255EC1B5141A3A48C39C62155414679EC76EC1B5141D6FF25DCC52155417661CE8CEC1B5141E943359FC5215541CD20F0ECEC1B514122A77D93C4215541C7813FC1ED1B5141E1A83A44C22155418B090A67EE1B51414F958476C02155418F245483EE1B51410354482EC021554180856B52EE1B5141EB222814C0215541F6285C4FE81B51415C8FC2D5BC215541F6285CAFE21B51417B14AEA7BA215541713D0A47DE1B5141F6285C0FB9215541E46EE24ADE1B5141CBC74208B92155417766201DDE1B514136FDED18B92155412283CC59DC1B5141A2F8F97FB92155414CFBA61AD91B51415844BE3DBA2155419EC243C0D71B5141FAFA028EBA215541345EF01CD71B514160480AF5BA215541C100AE55D61B51412472BC72BB2155417545AE32D51B5141DC8E4D2ABC215541C3F5287CD41B5141D7A3709DBC215541681FA021D41B5141032881FEBC2155419F7B7878D31B5141EB29DCB3BD2155415BCE36E2D21B51418242F454BE21554132D49B97D61B5141018DDF6FBF215541282DCB6EE01B51413F97D7C1C22155416E646A5AE71B5141D0E797E0C4215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13901 - 3535114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A47DE1B5141F6285C0FB9215541333333C3D71B5141C3F5288CBA215541C3F5287CD41B5141D7A3709DBC2155410AD7A370D21B5141EC51B8CEBE215541A4703D9AD11B51419A999989C0215541CDCCCC6CD11B514166666686C221554133333393D11B514185EB51B8C621554152B81E55D11B51417B14AED7CA215541CDCCCC6CD01B51417B14AE77CE21554133333323CF1B5141A4703DDAD121554114AE4721CC1B51417B14AED7D92155411F85EB51CF1B5141C3F528ACDA2155419A999999D21B5141AE47E14ADB215541713D0A17D41B514100000090DB2155415C8FC205D51B51418FC2F5E8D6215541AE47E14AD91B5141B81E85CBD721554152B81E75D81B514185EB5198DB2155410AD7A330E21B51415C8FC225DD215541E17A143EE31B5141AE47E10ADF215541F6285CAFE41B514148E17A24DA2155417B14AE07E51B5141E17A14DED8215541713D0AD7E61B514148E17AD4D3215541713D0AD7E71B5141C3F5280CD12155411F85EB51EC1B514133333343C621554114AE4781EE1B5141D7A3702DC0215541F6285C4FE81B51415C8FC2D5BC215541F6285CAFE21B51417B14AEA7BA215541713D0A47DE1B5141F6285C0FB9215541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000006E646A5AE71B5141D0E797E0C421554111958E51EC1B5141EEC10935C6215541A6F54350EC1B5141FB052A38C621554197A56255EC1B5141A3A48C39C62155414679EC76EC1B5141D6FF25DCC52155417661CE8CEC1B5141E943359FC5215541CD20F0ECEC1B514122A77D93C4215541C7813FC1ED1B5141E1A83A44C22155418B090A67EE1B51414F958476C02155418F245483EE1B51410354482EC021554180856B52EE1B5141EB222814C0215541F6285C4FE81B51415C8FC2D5BC215541F6285CAFE21B51417B14AEA7BA215541713D0A47DE1B5141F6285C0FB9215541E46EE24ADE1B5141CBC74208B92155417766201DDE1B514136FDED18B92155412283CC59DC1B5141A2F8F97FB92155414CFBA61AD91B51415844BE3DBA2155419EC243C0D71B5141FAFA028EBA215541345EF01CD71B514160480AF5BA215541C100AE55D61B51412472BC72BB2155417545AE32D51B5141DC8E4D2ABC215541C3F5287CD41B5141D7A3709DBC215541681FA021D41B5141032881FEBC2155419F7B7878D31B5141EB29DCB3BD2155415BCE36E2D21B51418242F454BE21554132D49B97D61B5141018DDF6FBF215541282DCB6EE01B51413F97D7C1C22155416E646A5AE71B5141D0E797E0C4215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14000 - 1302973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A14AE59535141666666C6ADDD5441CDCCCCBC54535141295C8F92C8DD54415C8FC2355A535141295C8F92C8DD5441E17A143E58535141EC51B83ED7DD5441295C8F025D535141CDCCCCBCD7DD544152B81E5562535141000000B0D2DD5441295C8F0266535141000000E0CDDD544148E17A146753514185EB5188CBDD54419A99992967535141D7A3707DC8DD544185EB51F865535141000000F0AADD5441E17A14AE59535141666666C6ADDD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441B81E851B73535141333333A3C3DD5441FFD209AD725351413B6DEBCEB8DD54415176B76D72535141B3F3019AB2DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14000 - 3277032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A14AE59535141666666C6ADDD5441CDCCCCBC54535141295C8F92C8DD54415C8FC2355A535141295C8F92C8DD5441E17A143E58535141EC51B83ED7DD5441295C8F025D535141CDCCCCBCD7DD544152B81E5562535141000000B0D2DD5441295C8F0266535141000000E0CDDD544148E17A146753514185EB5188CBDD54419A99992967535141D7A3707DC8DD544185EB51F865535141000000F0AADD5441E17A14AE59535141666666C6ADDD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441B81E851B73535141333333A3C3DD5441FFD209AD725351413B6DEBCEB8DD54415176B76D72535141B3F3019AB2DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14118 - 44853
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE47EC505141F6285CAFCEE15441F6285CBFF15051418FC2F5B8CDE15441B81E858BF3505141000000D0CFE15441F6285C3FF35051415C8FC295D3E154415C8FC265F25051418FC2F5E8D4E15441EC51B84EF450514166666616D6E15441A4703DFAF450514166666616D5E15441AE47E13AF9505141295C8FF2D7E1544152B81E65F85051411F85EB11D9E15441000000F0F85051417B14AE67D9E15441C3F5281CFB505141F6285CAFDBE15441F6285C8FFD50514185EB5108DEE15441EC51B88E0051514114AE4731DCE15441A4703DFA005151411F85EBC1D9E154415C8FC2E501515141C3F5286CD8E154410AD7A370FF50514133333323D4E15441B81E854BFE50514185EB5138CFE154417B14AE27FC505141B81E855BB8E15441EC51B8FEF9505141EC51B86EA1E15441F6285C6FF45051410AD7A370A0E154418FC2F5C8EE5051410AD7A3209EE154410AD7A350EA505141D7A370AD9BE15441E17A14FEE8505141F6285C8FA0E154415C8FC295E850514152B81E05A3E15441666666B6E85051413D0AD7F3A5E1544185EB5178E950514185EB5108A8E15441AE47E1BAEA5051411F85EB61AAE15441F6285CBFEB505141295C8FD2ABE154410AD7A3C0EC505141F6285C3FADE15441CDCCCCCCED50514148E17AE4AFE154413D0AD723E95051419A9999C9B6E15441333333E3E8505141713D0A27B7E15441B81E850BE4505141CDCCCC8CBDE15441EC51B80EE4505141B81E856BC1E154418FC2F528E5505141666666F6C3E154410AD7A3A0E8505141CDCCCC4CCAE15441CDCCCCCCEA505141295C8F12CDE154417B14AE47EC505141F6285CAFCEE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000087BF1190F2505141391A0B03D5E1544154CC8E16F35051416457F455D5E15441EF66F860F4505141A72429FBD5E15441A4703DFAF450514166666616D5E15441F0D65E7BF5505141DE013F6DD5E15441304E57FBF5505141833D3BADD5E154414858CC1AF65051419B47B0CCD5E1544117B3E935F7505141209CEAB5D3E15441CF948AD7F6505141212DE35BD2E154410BCB6562F4505141B3FA99BED1E15441E814E258F35051418D0A1C52D2E15441F6285C3FF35051415C8FC295D3E15441AD41A9EFF25051410016FF11D4E15441FE51E9E8F250514176C4BE33D4E1544187BF1190F2505141391A0B03D5E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14118 - 79420
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE47EC505141F6285CAFCEE15441F6285CBFF15051418FC2F5B8CDE15441B81E858BF3505141000000D0CFE15441F6285C3FF35051415C8FC295D3E154415C8FC265F25051418FC2F5E8D4E15441EC51B84EF450514166666616D6E15441A4703DFAF450514166666616D5E15441AE47E13AF9505141295C8FF2D7E1544152B81E65F85051411F85EB11D9E15441000000F0F85051417B14AE67D9E15441C3F5281CFB505141F6285CAFDBE15441F6285C8FFD50514185EB5108DEE15441EC51B88E0051514114AE4731DCE15441A4703DFA005151411F85EBC1D9E154415C8FC2E501515141C3F5286CD8E154410AD7A370FF50514133333323D4E15441B81E854BFE50514185EB5138CFE154417B14AE27FC505141B81E855BB8E15441EC51B8FEF9505141EC51B86EA1E15441F6285C6FF45051410AD7A370A0E154418FC2F5C8EE5051410AD7A3209EE154410AD7A350EA505141D7A370AD9BE15441E17A14FEE8505141F6285C8FA0E154415C8FC295E850514152B81E05A3E15441666666B6E85051413D0AD7F3A5E1544185EB5178E950514185EB5108A8E15441AE47E1BAEA5051411F85EB61AAE15441F6285CBFEB505141295C8FD2ABE154410AD7A3C0EC505141F6285C3FADE15441CDCCCCCCED50514148E17AE4AFE154413D0AD723E95051419A9999C9B6E15441333333E3E8505141713D0A27B7E15441B81E850BE4505141CDCCCC8CBDE15441EC51B80EE4505141B81E856BC1E154418FC2F528E5505141666666F6C3E154410AD7A3A0E8505141CDCCCC4CCAE15441CDCCCCCCEA505141295C8F12CDE154417B14AE47EC505141F6285CAFCEE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000087BF1190F2505141391A0B03D5E1544154CC8E16F35051416457F455D5E15441EF66F860F4505141A72429FBD5E15441A4703DFAF450514166666616D5E15441F0D65E7BF5505141DE013F6DD5E15441304E57FBF5505141833D3BADD5E154414858CC1AF65051419B47B0CCD5E1544117B3E935F7505141209CEAB5D3E15441CF948AD7F6505141212DE35BD2E154410BCB6562F4505141B3FA99BED1E15441E814E258F35051418D0A1C52D2E15441F6285C3FF35051415C8FC295D3E15441AD41A9EFF25051410016FF11D4E15441FE51E9E8F250514176C4BE33D4E1544187BF1190F2505141391A0B03D5E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14196 - 29890
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000014AE4731924C5141713D0A874CDF544152B81EF5934C51419A9999E953DF544114AE47A1904C51411F85EBA157DF5441666666268E4C51415C8FC27559DF5441333333E38A4C514114AE47815ADF544166666636814C51415C8FC2355BDF544152B81E157A4C5141CDCCCC5C5BDF5441EC51B8CE754C5141666666F65ADF54418FC2F5F8724C51413D0AD7135BDF54419A999939704C5141666666D65DDF5441295C8FC26F4C5141E17A146E5EDF5441F6285CDF714C51418FC2F58862DF544166666606734C5141B81E854B65DF5441AE47E13A744C51415C8FC27569DF5441F6285CAF754C5141333333936DDF544100000080794C5141333333936DDF5441000000A0804C5141295C8FD26CDF54415C8FC255834C514152B81E456CDF5441C3F5282C894C5141C3F528DC69DF5441713D0A878C4C51413D0AD7F367DF5441B81E858B8E4C5141F6285C9F66DF5441A4703DEA924C5141CDCCCC6C63DF5441D7A3708D954C514114AE472161DF5441AE47E14A984C51418FC2F5985EDF544114AE47319B4C5141EC51B89E5BDF5441F6285C6F9D4C5141EC51B8CE58DF54411F85EBB19E4C51410AD7A3D056DF5441295C8F42A04C51413D0AD74354DF5441713D0AF7A14C5141B81E851B51DF5441F6285CAFA54C5141333333734ADF5441D7A3701DA84C514152B81EA545DF544166666676A34C514148E17AD442DF5441CDCCCCBC974C514114AE47A13CDF5441E17A14BE8F4C514152B81EE538DF54410AD7A3F08F4C5141666666F639DF5441713D0A27904C5141D7A3701D3BDF544133333373914C51413D0AD74340DF54415C8FC265924C5141D7A3700D44DF54410AD7A390924C5141C3F5280C45DF5441CDCCCCAC924C5141C3F5282C46DF54418FC2F5B8924C5141C3F528EC48DF54417B14AE97924C51411F85EB814ADF544114AE4731924C5141713D0A874CDF5441
+</a>
+
+<b>
+010600000001000000010300000001000000350000003F96C4ED724C51419A3F151F5BDF5441A436B7E4724C5141A87CCA315BDF544113DF20957A4C5141A87CCA315BDF54410D5044D3824C5141258F8C025BDF5441E24C24608B4C51413A4DD8F659DF5441EACDEF0C904C5141339F347157DF54417669D1C1924C5141AFDECE1A55DF5441E498C3FC934C514106AA251353DF54417D444D20934C5141BC1B4F624FDF5441F27B9392924C514129A5F14E4CDF5441F27B9392924C51413F633D434BDF5441695F8156924C5141B74A0DCB4BDF544114AE4731924C5141713D0A874CDF54413D936DF9914C514189CE42904EDF5441B1B24F4B924C5141F14C062D50DF5441C384A00E934C5141DA1CAC1C53DF54413E994E36924C5141DA1CAC1C54DF54414870F286914C5141CF4508CC54DF5441EAE02F11914C51411427834055DF5441A3FFB49C904C514171B645B655DF5441A2FFB47C904C5141D6F34FCD55DF5441E0098C808F4C5141C245088C56DF544188F4E5708F4C5141399B299756DF5441ADD6586D8E4C5141FF4FDF2F57DF5441F4B7D3418E4C51415CDFA14557DF54412F6574818D4C5141C68D529757DF5441AD2790328C4C51414F94322A58DF54411F1463C48B4C5141C41CAC5C58DF54416414559A8B4C514175DA056758DF544134C2AAE58A4C51418712D59858DF54417BA3259A8A4C5141688DE9A658DF5441F7B7D3218A4C51415AB645B658DF5441D932E8CF894C5141D4CAF3BD58DF54415BBFE436894C5141A94841C758DF54418E09BBE0874C514113E56BDD58DF5441CB780C79854C51419050C0D958DF5441704DADDE834C5141CA86A1DC58DF5441FF2B6CA6824C5141E7154D0059DF5441A328118C814C5141508DE92659DF5441C3ADFCBD804C51418D97C04A59DF544129146344804C5141BCCAF35D59DF54415C4796777F4C5141C5A1976E59DF544100B8D3217F4C514140B6457659DF5441E232E80F7E4C5141AFF34F8D59DF5441026E7BDE7D4C51413BCDC58E59DF5441B8A4B76F794C5141B77DD0D759DF5441868E42E1774C5141191BD8E959DF5441B78FFDF2764C5141E031F0F759DF544149DD1832764C514182C518EE59DF5441321FDD4F744C51419B6CD3C059DF54414DBE0741744C5141407FEBC959DF54418FC2F5F8724C51413D0AD7135BDF54413F96C4ED724C51419A3F151F5BDF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14196 - 73013
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000014AE4731924C5141713D0A874CDF544152B81EF5934C51419A9999E953DF544114AE47A1904C51411F85EBA157DF5441666666268E4C51415C8FC27559DF5441333333E38A4C514114AE47815ADF544166666636814C51415C8FC2355BDF544152B81E157A4C5141CDCCCC5C5BDF5441EC51B8CE754C5141666666F65ADF54418FC2F5F8724C51413D0AD7135BDF54419A999939704C5141666666D65DDF5441295C8FC26F4C5141E17A146E5EDF5441F6285CDF714C51418FC2F58862DF544166666606734C5141B81E854B65DF5441AE47E13A744C51415C8FC27569DF5441F6285CAF754C5141333333936DDF544100000080794C5141333333936DDF5441000000A0804C5141295C8FD26CDF54415C8FC255834C514152B81E456CDF5441C3F5282C894C5141C3F528DC69DF5441713D0A878C4C51413D0AD7F367DF5441B81E858B8E4C5141F6285C9F66DF5441A4703DEA924C5141CDCCCC6C63DF5441D7A3708D954C514114AE472161DF5441AE47E14A984C51418FC2F5985EDF544114AE47319B4C5141EC51B89E5BDF5441F6285C6F9D4C5141EC51B8CE58DF54411F85EBB19E4C51410AD7A3D056DF5441295C8F42A04C51413D0AD74354DF5441713D0AF7A14C5141B81E851B51DF5441F6285CAFA54C5141333333734ADF5441D7A3701DA84C514152B81EA545DF544166666676A34C514148E17AD442DF5441CDCCCCBC974C514114AE47A13CDF5441E17A14BE8F4C514152B81EE538DF54410AD7A3F08F4C5141666666F639DF5441713D0A27904C5141D7A3701D3BDF544133333373914C51413D0AD74340DF54415C8FC265924C5141D7A3700D44DF54410AD7A390924C5141C3F5280C45DF5441CDCCCCAC924C5141C3F5282C46DF54418FC2F5B8924C5141C3F528EC48DF54417B14AE97924C51411F85EB814ADF544114AE4731924C5141713D0A874CDF5441
+</a>
+
+<b>
+010600000001000000010300000001000000350000003F96C4ED724C51419A3F151F5BDF5441A436B7E4724C5141A87CCA315BDF544113DF20957A4C5141A87CCA315BDF54410D5044D3824C5141258F8C025BDF5441E24C24608B4C51413A4DD8F659DF5441EACDEF0C904C5141339F347157DF54417669D1C1924C5141AFDECE1A55DF5441E498C3FC934C514106AA251353DF54417D444D20934C5141BC1B4F624FDF5441F27B9392924C514129A5F14E4CDF5441F27B9392924C51413F633D434BDF5441695F8156924C5141B74A0DCB4BDF544114AE4731924C5141713D0A874CDF54413D936DF9914C514189CE42904EDF5441B1B24F4B924C5141F14C062D50DF5441C384A00E934C5141DA1CAC1C53DF54413E994E36924C5141DA1CAC1C54DF54414870F286914C5141CF4508CC54DF5441EAE02F11914C51411427834055DF5441A3FFB49C904C514171B645B655DF5441A2FFB47C904C5141D6F34FCD55DF5441E0098C808F4C5141C245088C56DF544188F4E5708F4C5141399B299756DF5441ADD6586D8E4C5141FF4FDF2F57DF5441F4B7D3418E4C51415CDFA14557DF54412F6574818D4C5141C68D529757DF5441AD2790328C4C51414F94322A58DF54411F1463C48B4C5141C41CAC5C58DF54416414559A8B4C514175DA056758DF544134C2AAE58A4C51418712D59858DF54417BA3259A8A4C5141688DE9A658DF5441F7B7D3218A4C51415AB645B658DF5441D932E8CF894C5141D4CAF3BD58DF54415BBFE436894C5141A94841C758DF54418E09BBE0874C514113E56BDD58DF5441CB780C79854C51419050C0D958DF5441704DADDE834C5141CA86A1DC58DF5441FF2B6CA6824C5141E7154D0059DF5441A328118C814C5141508DE92659DF5441C3ADFCBD804C51418D97C04A59DF544129146344804C5141BCCAF35D59DF54415C4796777F4C5141C5A1976E59DF544100B8D3217F4C514140B6457659DF5441E232E80F7E4C5141AFF34F8D59DF5441026E7BDE7D4C51413BCDC58E59DF5441B8A4B76F794C5141B77DD0D759DF5441868E42E1774C5141191BD8E959DF5441B78FFDF2764C5141E031F0F759DF544149DD1832764C514182C518EE59DF5441321FDD4F744C51419B6CD3C059DF54414DBE0741744C5141407FEBC959DF54418FC2F5F8724C51413D0AD7135BDF54413F96C4ED724C51419A3F151F5BDF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14667 - 2978304
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FA213525141A4703DAA27DC544185EB517816525141666666D62EDC544148E17A74165251410AD7A38030DC54410AD7A3E0215251419A9999F934DC5441AE47E17A22525141AE47E12A33DC5441C3F528CC225251417B14AE3732DC5441295C8F2224525141D7A3700D2FDC54416666668628525141666666A624DC5441A4703D0A28525141EC51B83E23DC5441CDCCCC4C0F5251419A99998915DC5441F6285CDF0B52514148E17A541BDC5441EC51B8AE0952514114AE473120DC5441EC51B8AE0C52514148E17AD421DC5441295C8FA213525141A4703DAA27DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C7BC9A5B0D525141237C936522DC5441B22DF2AD0D5251416FCB8A1121DC5441682DBEFA0D52514189C467D41FDC544136A2EB240E525141C7163B261FDC544167A53E3D0E525141545F31AF1EDC544166690ED40E52514157C3DF6A1BDC54418730028C10525141DA1E763A16DC5441CDCCCC4C0F5251419A99998915DC5441F35620350C525141BAC688C31ADC54419CB70C520B52514107ED3B8E1CDC54413557D42F0A5251412CA19D121FDC54415DECDD540A5251415B2885E61FDC5441C7BC9A5B0D525141237C936522DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14667 - 3814126
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FA213525141A4703DAA27DC544185EB517816525141666666D62EDC544148E17A74165251410AD7A38030DC54410AD7A3E0215251419A9999F934DC5441AE47E17A22525141AE47E12A33DC5441C3F528CC225251417B14AE3732DC5441295C8F2224525141D7A3700D2FDC54416666668628525141666666A624DC5441A4703D0A28525141EC51B83E23DC5441CDCCCC4C0F5251419A99998915DC5441F6285CDF0B52514148E17A541BDC5441EC51B8AE0952514114AE473120DC5441EC51B8AE0C52514148E17AD421DC5441295C8FA213525141A4703DAA27DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C7BC9A5B0D525141237C936522DC5441B22DF2AD0D5251416FCB8A1121DC5441682DBEFA0D52514189C467D41FDC544136A2EB240E525141C7163B261FDC544167A53E3D0E525141545F31AF1EDC544166690ED40E52514157C3DF6A1BDC54418730028C10525141DA1E763A16DC5441CDCCCC4C0F5251419A99998915DC5441F35620350C525141BAC688C31ADC54419CB70C520B52514107ED3B8E1CDC54413557D42F0A5251412CA19D121FDC54415DECDD540A5251415B2885E61FDC5441C7BC9A5B0D525141237C936522DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14834 - 1302973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000007B14AE8772535141A4703DAAB2DD544148E17A04725351411F85EBF1A9DD5441666666666D53514148E17A84A9DD544185EB51F865535141000000F0AADD54419A99992967535141D7A3707DC8DD544148E17A146753514185EB5188CBDD5441295C8F0266535141000000E0CDDD544152B81E5562535141000000B0D2DD5441295C8F025D535141CDCCCCBCD7DD5441C3F5284C695351410AD7A340DADD54413D0AD7D36D53514114AE47E1CEDD544148E17AA473535141AE47E18AC1DD54417B14AE8772535141A4703DAAB2DD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441B81E851B73535141333333A3C3DD5441FFD209AD725351413B6DEBCEB8DD54415176B76D72535141B3F3019AB2DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14834 - 3277032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000007B14AE8772535141A4703DAAB2DD544148E17A04725351411F85EBF1A9DD5441666666666D53514148E17A84A9DD544185EB51F865535141000000F0AADD54419A99992967535141D7A3707DC8DD544148E17A146753514185EB5188CBDD5441295C8F0266535141000000E0CDDD544152B81E5562535141000000B0D2DD5441295C8F025D535141CDCCCCBCD7DD5441C3F5284C695351410AD7A340DADD54413D0AD7D36D53514114AE47E1CEDD544148E17AA473535141AE47E18AC1DD54417B14AE8772535141A4703DAAB2DD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441B81E851B73535141333333A3C3DD5441FFD209AD725351413B6DEBCEB8DD54415176B76D72535141B3F3019AB2DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>15114 - 56637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A370EDD4DF5041F6285CBF77305541B81E851BC2DF50415C8FC275713055419A999979A5DF504152B81EE567305541333333D3A3DF5041AE47E14A683055415C8FC2C591DF50410AD7A3B07A30554152B81E0589DF5041CDCCCC9C833055411F85EB2176DF5041CDCCCCDC963055418FC2F54876DF5041CDCCCCDC97305541D7A370CD87DF5041C3F528BC9D305541EC51B87E9FDF5041CDCCCCACA5305541EC51B8DEB3DF50410AD7A380AC3055418FC2F558B5DF50418FC2F5F8AB3055413D0AD733C2DF50415C8FC2759730554185EB51F8CADF50417B14AE778930554185EB5158D5DF50419A9999E978305541D7A370EDD4DF5041F6285CBF77305541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B81E851BC2DF50415C8FC27571305541734ADD89C0DF50416E2295EF70305541BDC1ED8FBFDF5041FBB81C9D70305541A0D6026AA5DF50417921E0E867305541A2CF0E3FA5DF5041782C39F36730554179C0B5C9A3DF5041B663C85668305541F2747F47A2DF504183F424DE69305541F6ABC5F99EDF5041C95D083C6D3055412A3389B89BDF5041595C318D7030554155DAC22DB2DF5041E88AEB7478305541529C9356B9DF5041EC9E0C0C7B305541F4C6BD79BDDF5041B554747C7C3055415E628767C2DF5041FF2CC03F7E305541D339B41ACFDF5041154504BF82305541F6FD7C0AD5DF50413810CB657930554185EB5158D5DF50419A9999E978305541D7A370EDD4DF5041F6285CBF77305541B81E851BC2DF50415C8FC27571305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16658 - 1013969
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000510000005C8FC2B5B2F750415C8FC215E36E54413D0AD753B2F7504100000090E16E5441D7A3703DB3F75041AE47E13AE16E544148E17AD4B3F75041333333C3E26E5441295C8F32B5F75041EC51B85EE26E544114AE4711B8F75041E17A148EE16E5441A4703DFAB7F7504114AE4751E16E54415C8FC245B5F7504166666626DA6E5441B81E855BB6F7504166666656D96E544100000080B8F75041EC51B85ED86E5441000000A0BAF7504152B81E25D86E5441CDCCCC9CBCF7504185EB5118D86E544166666666BEF75041AE47E18AD86E5441C3F5282CBFF75041B81E851BD96E544100000070BFF750411F85EB91E06E5441EC51B89EC2F7504100000050E16E54417B14AEA7C3F750418FC2F5B8E06E54411F85EB31C5F7504148E17A14DD6E5441EC51B8DEC5F750411F85EBD1DB6E54415C8FC2F5C6F7504185EB51C8D96E5441EC51B85EC8F75041C3F528ECD76E5441F6285C6FCAF75041A4703D0AD66E5441000000A0CAF75041AE47E18AD66E544114AE47A1CCF75041713D0AB7D46E544148E17AA4CFF750418FC2F528D26E54413D0AD713D4F75041B81E85EBCE6E5441F6285C9FD6F75041713D0A57CD6E5441EC51B82EDAF7504133333363CB6E5441333333D3DBF75041295C8FB2CA6E544100000000DEF750418FC2F5C8C96E544100000050E1F75041AE47E1BAC86E544185EB5108E4F750415C8FC2B5C76E5441C3F5280CE3F75041C3F5285CC56E5441295C8FD2E1F7504152B81E75C26E54410AD7A360DFF75041295C8F32B86E5441A4703DAADBF750415C8FC255A86E5441AE47E1CAD9F750411F85EB81A86E544148E17AB4D6F75041AE47E1CAA86E54418FC2F518D5F75041E17A146EAA6E544100000000D5F750417B14AE87AA6E54418FC2F568D4F75041713D0A77AC6E54417B14AEC7D3F750410AD7A350AE6E54419A9999B9D2F75041295C8F12B06E544166666606D1F75041AE47E1EAB06E544166666606CFF750418FC2F568B06E5441A4703DBACBF750411F85EB61B46E5441A4703D5AC9F75041F6285CAFB66E5441713D0AB7C6F75041EC51B87EB86E5441A4703DAAC0F7504185EB5128BC6E5441A4703DCABAF75041666666B6BF6E5441CDCCCC2CAEF750419A999959C76E544100000060A3F750413D0AD7E3CD6E5441C3F5282CA1F750419A999939CF6E54418FC2F5B887F7504148E17A14DF6E544185EB512883F75041666666A6E16E5441000000E07EF750417B14AE57E46E54413333336379F75041A4703D6AE76E54411F85EB8171F75041A4703D6AEA6E5441000000D060F750415C8FC265F06E54410AD7A3C060F750415C8FC2B5F26E5441EC51B8BE5FF750410AD7A3B0F46E54419A99994965F75041000000F0076F5441F6285C4F66F75041000000B0066F5441A4703DAA65F75041A4703DAA056F54410000003066F75041AE47E13A056F5441000000F066F75041B81E85EB056F5441E17A145E6CF75041AE47E14AFF6E5441CDCCCCBC6EF75041C3F528ACFC6E5441E17A146E74F7504166666616F76E5441E17A147E77F750410AD7A3A0F46E5441F6285CAF7AF7504148E17A64F26E54418FC2F5F87DF750418FC2F578F06E5441A4703DAA81F75041F6285CFFEE6E5441295C8F5286F75041E17A148EED6E5441F6285C1FA0F75041A4703D0AE86E544133333303A0F75041CDCCCC7CE76E54413D0AD713A1F75041E17A142EE76E54418FC2F548A1F75041A4703DCAE76E5441EC51B86EA2F75041B81E858BE76E5441D7A3702DACF750415C8FC2F5E46E54415C8FC2B5B2F750415C8FC215E36E544105000000A4703DDADDF75041295C8FB2C36E5441EC51B83EDEF75041AE47E1AAC56E544152B81E25DCF750415C8FC215C66E54410AD7A3C0DBF75041D7A3701DC46E5441A4703DDADDF75041295C8FB2C36E5441080000000AD7A360BAF7504185EB5118D16E544133333353B8F75041AE47E1BACC6E544133333333B7F7504148E17A54CC6E5441713D0A77B6F75041295C8FE2CA6E544148E17A54B9F75041E17A147EC86E5441D7A3706DBCF75041713D0AE7C66E5441AE47E1BABFF75041C3F5280CCF6E54410AD7A360BAF7504185EB5118D16E5441
+</a>
+
+<b>
+01060000000100000001030000000300000054000000A53D48A0D6F75041966A74DFA86E54418FC2F518D5F75041E17A146EAA6E544100000000D5F750417B14AE87AA6E54418FC2F568D4F75041713D0A77AC6E54417B14AEC7D3F750410AD7A350AE6E54419A9999B9D2F75041295C8F12B06E544166666606D1F75041AE47E1EAB06E544166666606CFF750418FC2F568B06E5441A4703DBACBF750411F85EB61B46E5441A4703D5AC9F75041F6285CAFB66E5441713D0AB7C6F75041EC51B87EB86E5441A4703DAAC0F7504185EB5128BC6E5441A4703DCABAF75041666666B6BF6E5441CDCCCC2CAEF750419A999959C76E544100000060A3F750413D0AD7E3CD6E5441C3F5282CA1F750419A999939CF6E54418FC2F5B887F7504148E17A14DF6E544185EB512883F75041666666A6E16E5441000000E07EF750417B14AE57E46E54413333336379F75041A4703D6AE76E54411F85EB8171F75041A4703D6AEA6E5441000000D060F750415C8FC265F06E54410AD7A3C060F750415C8FC2B5F26E5441EC51B8BE5FF750410AD7A3B0F46E54419A99994965F75041000000F0076F5441F6285C4F66F75041000000B0066F5441A4703DAA65F75041A4703DAA056F54410000003066F75041AE47E13A056F5441000000F066F75041B81E85EB056F5441E17A145E6CF75041AE47E14AFF6E5441CDCCCCBC6EF75041C3F528ACFC6E5441E17A146E74F7504166666616F76E5441E17A147E77F750410AD7A3A0F46E5441F6285CAF7AF7504148E17A64F26E54418FC2F5F87DF750418FC2F578F06E5441A4703DAA81F75041F6285CFFEE6E5441295C8F5286F75041E17A148EED6E5441F6285C1FA0F75041A4703D0AE86E544133333303A0F75041CDCCCC7CE76E54413D0AD713A1F75041E17A142EE76E54418FC2F548A1F75041A4703DCAE76E5441EC51B86EA2F75041B81E858BE76E5441D7A3702DACF750415C8FC2F5E46E54415C8FC2B5B2F750415C8FC215E36E54413D0AD753B2F7504100000090E16E5441D7A3703DB3F75041AE47E13AE16E544148E17AD4B3F75041333333C3E26E5441295C8F32B5F75041EC51B85EE26E544114AE4711B8F75041E17A148EE16E5441A4703DFAB7F7504114AE4751E16E54415C8FC245B5F7504166666626DA6E5441B81E855BB6F7504166666656D96E544100000080B8F75041EC51B85ED86E5441000000A0BAF7504152B81E25D86E5441CDCCCC9CBCF7504185EB5118D86E544166666666BEF75041AE47E18AD86E5441C3F5282CBFF75041B81E851BD96E544100000070BFF750411F85EB91E06E5441EC51B89EC2F7504100000050E16E54417B14AEA7C3F750418FC2F5B8E06E54411F85EB31C5F7504148E17A14DD6E5441EC51B8DEC5F750411F85EBD1DB6E54415C8FC2F5C6F7504185EB51C8D96E5441EC51B85EC8F75041C3F528ECD76E5441F6285C6FCAF75041A4703D0AD66E5441000000A0CAF75041AE47E18AD66E544114AE47A1CCF75041713D0AB7D46E544148E17AA4CFF750418FC2F528D26E54413D0AD713D4F75041B81E85EBCE6E5441F6285C9FD6F75041713D0A57CD6E5441EC51B82EDAF7504133333363CB6E5441333333D3DBF75041295C8FB2CA6E544100000000DEF750418FC2F5C8C96E544100000050E1F75041AE47E1BAC86E544185EB5108E4F750415C8FC2B5C76E5441C3F5280CE3F75041C3F5285CC56E5441295C8FD2E1F7504152B81E75C26E5441A8539FC7E0F7504195ECF614BE6E54410D902575E1F750418A598AF7C06E5441D670B57DDBF75041525172A2C06E5441116A067DDBF750413D9F0A9FC06E5441FA30DB6DDBF75041AD20349EC06E544149C5F7CBD6F75041D5785641A96E5441A53D48A0D6F75041966A74DFA86E544105000000A4703DDADDF75041295C8FB2C36E5441EC51B83EDEF75041AE47E1AAC56E544152B81E25DCF750415C8FC215C66E54410AD7A3C0DBF75041D7A3701DC46E5441A4703DDADDF75041295C8FB2C36E5441080000000AD7A360BAF7504185EB5118D16E544133333353B8F75041AE47E1BACC6E544133333333B7F7504148E17A54CC6E5441713D0A77B6F75041295C8FE2CA6E544148E17A54B9F75041E17A147EC86E5441D7A3706DBCF75041713D0AE7C66E5441AE47E1BABFF75041C3F5280CCF6E54410AD7A360BAF7504185EB5118D16E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16658 - 3807755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000510000005C8FC2B5B2F750415C8FC215E36E54413D0AD753B2F7504100000090E16E5441D7A3703DB3F75041AE47E13AE16E544148E17AD4B3F75041333333C3E26E5441295C8F32B5F75041EC51B85EE26E544114AE4711B8F75041E17A148EE16E5441A4703DFAB7F7504114AE4751E16E54415C8FC245B5F7504166666626DA6E5441B81E855BB6F7504166666656D96E544100000080B8F75041EC51B85ED86E5441000000A0BAF7504152B81E25D86E5441CDCCCC9CBCF7504185EB5118D86E544166666666BEF75041AE47E18AD86E5441C3F5282CBFF75041B81E851BD96E544100000070BFF750411F85EB91E06E5441EC51B89EC2F7504100000050E16E54417B14AEA7C3F750418FC2F5B8E06E54411F85EB31C5F7504148E17A14DD6E5441EC51B8DEC5F750411F85EBD1DB6E54415C8FC2F5C6F7504185EB51C8D96E5441EC51B85EC8F75041C3F528ECD76E5441F6285C6FCAF75041A4703D0AD66E5441000000A0CAF75041AE47E18AD66E544114AE47A1CCF75041713D0AB7D46E544148E17AA4CFF750418FC2F528D26E54413D0AD713D4F75041B81E85EBCE6E5441F6285C9FD6F75041713D0A57CD6E5441EC51B82EDAF7504133333363CB6E5441333333D3DBF75041295C8FB2CA6E544100000000DEF750418FC2F5C8C96E544100000050E1F75041AE47E1BAC86E544185EB5108E4F750415C8FC2B5C76E5441C3F5280CE3F75041C3F5285CC56E5441295C8FD2E1F7504152B81E75C26E54410AD7A360DFF75041295C8F32B86E5441A4703DAADBF750415C8FC255A86E5441AE47E1CAD9F750411F85EB81A86E544148E17AB4D6F75041AE47E1CAA86E54418FC2F518D5F75041E17A146EAA6E544100000000D5F750417B14AE87AA6E54418FC2F568D4F75041713D0A77AC6E54417B14AEC7D3F750410AD7A350AE6E54419A9999B9D2F75041295C8F12B06E544166666606D1F75041AE47E1EAB06E544166666606CFF750418FC2F568B06E5441A4703DBACBF750411F85EB61B46E5441A4703D5AC9F75041F6285CAFB66E5441713D0AB7C6F75041EC51B87EB86E5441A4703DAAC0F7504185EB5128BC6E5441A4703DCABAF75041666666B6BF6E5441CDCCCC2CAEF750419A999959C76E544100000060A3F750413D0AD7E3CD6E5441C3F5282CA1F750419A999939CF6E54418FC2F5B887F7504148E17A14DF6E544185EB512883F75041666666A6E16E5441000000E07EF750417B14AE57E46E54413333336379F75041A4703D6AE76E54411F85EB8171F75041A4703D6AEA6E5441000000D060F750415C8FC265F06E54410AD7A3C060F750415C8FC2B5F26E5441EC51B8BE5FF750410AD7A3B0F46E54419A99994965F75041000000F0076F5441F6285C4F66F75041000000B0066F5441A4703DAA65F75041A4703DAA056F54410000003066F75041AE47E13A056F5441000000F066F75041B81E85EB056F5441E17A145E6CF75041AE47E14AFF6E5441CDCCCCBC6EF75041C3F528ACFC6E5441E17A146E74F7504166666616F76E5441E17A147E77F750410AD7A3A0F46E5441F6285CAF7AF7504148E17A64F26E54418FC2F5F87DF750418FC2F578F06E5441A4703DAA81F75041F6285CFFEE6E5441295C8F5286F75041E17A148EED6E5441F6285C1FA0F75041A4703D0AE86E544133333303A0F75041CDCCCC7CE76E54413D0AD713A1F75041E17A142EE76E54418FC2F548A1F75041A4703DCAE76E5441EC51B86EA2F75041B81E858BE76E5441D7A3702DACF750415C8FC2F5E46E54415C8FC2B5B2F750415C8FC215E36E544105000000A4703DDADDF75041295C8FB2C36E5441EC51B83EDEF75041AE47E1AAC56E544152B81E25DCF750415C8FC215C66E54410AD7A3C0DBF75041D7A3701DC46E5441A4703DDADDF75041295C8FB2C36E5441080000000AD7A360BAF7504185EB5118D16E544133333353B8F75041AE47E1BACC6E544133333333B7F7504148E17A54CC6E5441713D0A77B6F75041295C8FE2CA6E544148E17A54B9F75041E17A147EC86E5441D7A3706DBCF75041713D0AE7C66E5441AE47E1BABFF75041C3F5280CCF6E54410AD7A360BAF7504185EB5118D16E5441
+</a>
+
+<b>
+01060000000100000001030000000300000054000000A53D48A0D6F75041966A74DFA86E54418FC2F518D5F75041E17A146EAA6E544100000000D5F750417B14AE87AA6E54418FC2F568D4F75041713D0A77AC6E54417B14AEC7D3F750410AD7A350AE6E54419A9999B9D2F75041295C8F12B06E544166666606D1F75041AE47E1EAB06E544166666606CFF750418FC2F568B06E5441A4703DBACBF750411F85EB61B46E5441A4703D5AC9F75041F6285CAFB66E5441713D0AB7C6F75041EC51B87EB86E5441A4703DAAC0F7504185EB5128BC6E5441A4703DCABAF75041666666B6BF6E5441CDCCCC2CAEF750419A999959C76E544100000060A3F750413D0AD7E3CD6E5441C3F5282CA1F750419A999939CF6E54418FC2F5B887F7504148E17A14DF6E544185EB512883F75041666666A6E16E5441000000E07EF750417B14AE57E46E54413333336379F75041A4703D6AE76E54411F85EB8171F75041A4703D6AEA6E5441000000D060F750415C8FC265F06E54410AD7A3C060F750415C8FC2B5F26E5441EC51B8BE5FF750410AD7A3B0F46E54419A99994965F75041000000F0076F5441F6285C4F66F75041000000B0066F5441A4703DAA65F75041A4703DAA056F54410000003066F75041AE47E13A056F5441000000F066F75041B81E85EB056F5441E17A145E6CF75041AE47E14AFF6E5441CDCCCCBC6EF75041C3F528ACFC6E5441E17A146E74F7504166666616F76E5441E17A147E77F750410AD7A3A0F46E5441F6285CAF7AF7504148E17A64F26E54418FC2F5F87DF750418FC2F578F06E5441A4703DAA81F75041F6285CFFEE6E5441295C8F5286F75041E17A148EED6E5441F6285C1FA0F75041A4703D0AE86E544133333303A0F75041CDCCCC7CE76E54413D0AD713A1F75041E17A142EE76E54418FC2F548A1F75041A4703DCAE76E5441EC51B86EA2F75041B81E858BE76E5441D7A3702DACF750415C8FC2F5E46E54415C8FC2B5B2F750415C8FC215E36E54413D0AD753B2F7504100000090E16E5441D7A3703DB3F75041AE47E13AE16E544148E17AD4B3F75041333333C3E26E5441295C8F32B5F75041EC51B85EE26E544114AE4711B8F75041E17A148EE16E5441A4703DFAB7F7504114AE4751E16E54415C8FC245B5F7504166666626DA6E5441B81E855BB6F7504166666656D96E544100000080B8F75041EC51B85ED86E5441000000A0BAF7504152B81E25D86E5441CDCCCC9CBCF7504185EB5118D86E544166666666BEF75041AE47E18AD86E5441C3F5282CBFF75041B81E851BD96E544100000070BFF750411F85EB91E06E5441EC51B89EC2F7504100000050E16E54417B14AEA7C3F750418FC2F5B8E06E54411F85EB31C5F7504148E17A14DD6E5441EC51B8DEC5F750411F85EBD1DB6E54415C8FC2F5C6F7504185EB51C8D96E5441EC51B85EC8F75041C3F528ECD76E5441F6285C6FCAF75041A4703D0AD66E5441000000A0CAF75041AE47E18AD66E544114AE47A1CCF75041713D0AB7D46E544148E17AA4CFF750418FC2F528D26E54413D0AD713D4F75041B81E85EBCE6E5441F6285C9FD6F75041713D0A57CD6E5441EC51B82EDAF7504133333363CB6E5441333333D3DBF75041295C8FB2CA6E544100000000DEF750418FC2F5C8C96E544100000050E1F75041AE47E1BAC86E544185EB5108E4F750415C8FC2B5C76E5441C3F5280CE3F75041C3F5285CC56E5441295C8FD2E1F7504152B81E75C26E5441A8539FC7E0F7504195ECF614BE6E54410D902575E1F750418A598AF7C06E5441D670B57DDBF75041525172A2C06E5441116A067DDBF750413D9F0A9FC06E5441FA30DB6DDBF75041AD20349EC06E544149C5F7CBD6F75041D5785641A96E5441A53D48A0D6F75041966A74DFA86E544105000000A4703DDADDF75041295C8FB2C36E5441EC51B83EDEF75041AE47E1AAC56E544152B81E25DCF750415C8FC215C66E54410AD7A3C0DBF75041D7A3701DC46E5441A4703DDADDF75041295C8FB2C36E5441080000000AD7A360BAF7504185EB5118D16E544133333353B8F75041AE47E1BACC6E544133333333B7F7504148E17A54CC6E5441713D0A77B6F75041295C8FE2CA6E544148E17A54B9F75041E17A147EC86E5441D7A3706DBCF75041713D0AE7C66E5441AE47E1BABFF75041C3F5280CCF6E54410AD7A360BAF7504185EB5118D16E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16816 - 8524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE17BCF6504152B81E25AE6D5441B81E854BBAF65041295C8F62AD6D54411F85EBB1BBF650410AD7A3E0AA6D544185EB5178BDF65041E17A14AEAB6D5441713D0A17C2F65041713D0A67A36D544133333303C0F650419A999999A16D54415C8FC285C2F650413D0AD7639E6D5441AE47E12AC4F65041E17A14AE9F6D54415C8FC225CCF65041295C8F62916D5441B81E859BC2F6504152B81EA5906D54411F85EB71AAF65041E17A14EE8D6D54410AD7A3B094F65041A4703D3AB56D5441CDCCCC3C9CF6504152B81E45B46D5441E17A146EA4F6504185EB51A8B36D54417B14AED7ACF650415C8FC2D5B46D544185EB5188B6F65041A4703D3AB76D54411F85EBF1B6F65041E17A145EB76D54417B14AE17BCF6504152B81E25AE6D5441
+</a>
+
+<b>
+010600000001000000010300000001000000070000004DF6659BBCF65041DAE06939AD6D5441FA66654FBDF65041DDE9939BAB6D54419390CBB6BBF65041CB18D8E2AA6D5441EC7EEE66BAF65041735F266EAD6D5441544DAD12BCF65041D66B152EAE6D54417B14AE17BCF6504152B81E25AE6D54414DF6659BBCF65041DAE06939AD6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16816 - 60274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE17BCF6504152B81E25AE6D5441B81E854BBAF65041295C8F62AD6D54411F85EBB1BBF650410AD7A3E0AA6D544185EB5178BDF65041E17A14AEAB6D5441713D0A17C2F65041713D0A67A36D544133333303C0F650419A999999A16D54415C8FC285C2F650413D0AD7639E6D5441AE47E12AC4F65041E17A14AE9F6D54415C8FC225CCF65041295C8F62916D5441B81E859BC2F6504152B81EA5906D54411F85EB71AAF65041E17A14EE8D6D54410AD7A3B094F65041A4703D3AB56D5441CDCCCC3C9CF6504152B81E45B46D5441E17A146EA4F6504185EB51A8B36D54417B14AED7ACF650415C8FC2D5B46D544185EB5188B6F65041A4703D3AB76D54411F85EBF1B6F65041E17A145EB76D54417B14AE17BCF6504152B81E25AE6D5441
+</a>
+
+<b>
+010600000001000000010300000001000000070000004DF6659BBCF65041DAE06939AD6D5441FA66654FBDF65041DDE9939BAB6D54419390CBB6BBF65041CB18D8E2AA6D5441EC7EEE66BAF65041735F266EAD6D5441544DAD12BCF65041D66B152EAE6D54417B14AE17BCF6504152B81E25AE6D54414DF6659BBCF65041DAE06939AD6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17076 - 2991254
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000600000033333303DCF65041D7A370FDC47554413D0AD7C3E3F65041666666A6F7755441D7A3700DE8F65041E17A14AE13765441666666D6FBF650417B14AE970A765441B81E85CBF0F65041295C8FD2C475544133333303DCF65041D7A370FDC4755441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F39C16D1FBF6504161841E760A765441A2CFB0870DF750414C95D17202765441F2E3FB6315F750410BEEBA3BFE755441814FAAD610F750414B9B3383F4755441A1A1978E0EF75041DE0CDFE9ED755441A97472870DF75041F7717B5FEA7554410EEE0E600DF750414C9322BFE975544131E7E9F50CF75041D3584A50E77554412B4002340CF750413A847ADEE27554412E5DD6C10BF75041A83580BEDA755441BF1A11650BF750418CFBC5F3D37554410A71FD820BF75041D2C7D18CC6755441EB68D00008F750411AB6B845C67554411F367B1900F750416DDAE140C5755441FAC5C56AFDF650415DCF5AE8C4755441EF00A4E4FAF65041E86886C9C47554412646F85BF5F650415CC5EAC8C47554415E65BB6CF2F65041A977FFCEC4755441B4842AD0F0F65041B65AEAEFC4755441AD1693C7F8F650411FB68A45F7755441F39C16D1FBF6504161841E760A765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17076 - 3397097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000600000033333303DCF65041D7A370FDC47554413D0AD7C3E3F65041666666A6F7755441D7A3700DE8F65041E17A14AE13765441666666D6FBF650417B14AE970A765441B81E85CBF0F65041295C8FD2C475544133333303DCF65041D7A370FDC4755441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F39C16D1FBF6504161841E760A765441A2CFB0870DF750414C95D17202765441F2E3FB6315F750410BEEBA3BFE755441814FAAD610F750414B9B3383F4755441A1A1978E0EF75041DE0CDFE9ED755441A97472870DF75041F7717B5FEA7554410EEE0E600DF750414C9322BFE975544131E7E9F50CF75041D3584A50E77554412B4002340CF750413A847ADEE27554412E5DD6C10BF75041A83580BEDA755441BF1A11650BF750418CFBC5F3D37554410A71FD820BF75041D2C7D18CC6755441EB68D00008F750411AB6B845C67554411F367B1900F750416DDAE140C5755441FAC5C56AFDF650415DCF5AE8C4755441EF00A4E4FAF65041E86886C9C47554412646F85BF5F650415CC5EAC8C47554415E65BB6CF2F65041A977FFCEC4755441B4842AD0F0F65041B65AEAEFC4755441AD1693C7F8F650411FB68A45F7755441F39C16D1FBF6504161841E760A765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17162 - 5217873
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000000000001014F650411F85EB81D57254419A9999F909F6504185EB5168DA725441A4703D4A05F650419A9999D9DB7254410AD7A3C0FBF550413D0AD713DE725441B81E852BFDF55041000000E0DF7254419A99997900F65041E17A14BEE672544152B81E4503F6504100000000ED72544114AE477105F650418FC2F568F2725441EC51B84E06F65041C3F5282CF47254419A9999E909F650417B14AE67F5725441C3F528DC0BF650411F85EB91F6725441333333B30DF6504100000090F87254417B14AEC711F6504114AE4741FF72544185EB51D815F65041F6285CEF0473544152B81EA519F65041F6285CBF09735441295C8FB21CF65041EC51B83E0C735441295C8F6220F650418FC2F5880E735441666666F623F65041295C8FD20E7354417B14AE7729F65041B81E856B0D735441A4703D6A32F650415C8FC2150B735441295C8FD238F65041F6285C1F09735441F6285CAF3DF650418FC2F558077354411F85EB513FF65041A4703DBA06735441295C8FC242F65041C3F5286C05735441333333E344F650413D0AD793047354411F85EB4147F65041C3F5280C0473544185EB51F848F650417B14AE6704735441E17A145E51F65041A4703D2A067354417B14AE5756F6504114AE477106735441666666A659F6504152B81EF505735441333333135DF650418FC2F588047354415C8FC2F561F65041F6285CDF00735441C3F528EC63F650418FC2F5F8F1725441EC51B88E65F65041EC51B81EDC725441C3F5288C59F6504152B81E25DB725441295C8F7258F65041EC51B80EDB7254410000001014F650411F85EB81D5725441
+</a>
+
+<b>
+010600000001000000010300000001000000160000003F20AF8746F65041B4982FC1FC7254411F85EB4147F65041C3F5280C04735441838AC74C4DF650418BC7245005735441CF68692D50F6504158AD6DEA05735441EF3AFC6551F650418E52AE2A0673544171C13E5653F650413A9D5C4606735441D1817A5456F6504117F719710673544163FA549257F65041D3FB2343067354411DCD6CAD59F65041F3CA33F2057354415D4E4BCE5CF650412C1C94A504735441191580195DF65041C8823C8404735441A63648215FF650413B7688FE027354417D4427A060F6504178407ADF017354415C8FC2F561F65041F6285CDF007354411EC6A2E462F650416BBDBAC9F972544113A339985FF65041356441EDF9725441982AA27F5EF65041DE2D1E1EFA7254416508741B5BF65041E7216EB6FA7254414F3D75EC55F65041DF54626BFB725441D63E193651F65041BC653B0CFC725441AD0FB17550F6504171FFF618FC7254413F20AF8746F65041B4982FC1FC725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 57934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441C3F528BC065E5141D7A3705DCBD95441
+</a>
+
+<b>
+010600000001000000010300000001000000360000004F98CD3CF85D51417F8D814CB9D95441713D0AF7F75D514114AE4731B9D954410DF73EB7F65D51416B0971E9B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D954411DE38C52FA5D5141BD8EB46BC6D95441422D0DC7FA5D514154F98826C7D954410D6198C8FA5D5141E5431427C7D9544187B2A4C9FA5D5141E0D57227C7D95441188D44D2FA5D514188017D2AC7D9544147C2A7D6FA5D514108E3082CC7D95441B7F802DDFA5D51413C68462EC7D9544188BA51F8FA5D5141C156E637C7D954419C023403FB5D51412561BC3BC7D95441F1D66942FB5D5141A7C10352C7D9544196E795F1055E5141B09F0A16CBD95441559C53A8065E51417D197356CBD954410FF768D5095E5141F682CB36CCD95441F35407070B5E5141A143898ACCD95441D86231160B5E514109F8B08ECCD95441958E1AC10B5E5141749585BDCCD95441204CE56B0C5E51414BDC51ECCCD954410AB52EF70D5E5141A7687836CDD95441F448440D105E5141BA5C1D82CDD95441F0568A8C115E5141293066B8CDD95441BA34ADC2135E514180499508CED954410CC96AFD135E5141911DE710CED954414753010A145E51413089AF12CED954419C001CBC145E51415430721ACED95441C3F528DC185E5141F6285C2FCDD95441038F84141D5E5141ACF628B2CDD954410F713C9C1D5E514134C20486CDD95441EC51B84E235E51410AD7A340CBD954415EC78D08245E5141EFAA68F6CAD95441353789B4235E5141822689AECAD95441BBA3DF59215E514172F660B8C9D9544172082A761F5E51419BDBCEF2C8D95441648DD4F21A5E51415CAEE91AC7D954416687A1C20D5E51412F29E8B7C1D954418A3E968B095E5141190DAF0DC0D954412748B645065E5141E6E2B0C6BED954415AB7744CFE5D514132A50FAABBD9544178E5A50BFE5D51413ED6C490BBD954414B92671CFB5D514138D1956BBAD954419FA46999F95D5141BB568ED4B9D954410DF8D305F95D5141D97DF59AB9D95441293AA8E6F85D51410E48CB8EB9D954410B804250F85D51415B6C1954B9D954414F98CD3CF85D51417F8D814CB9D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 58414
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441C3F528BC065E5141D7A3705DCBD95441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000E3A10F0DFA5D51419181B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A934D7DCB9D954413A9BF6A2F65D5141A586370BBAD95441BA216050F65D5141F1D6ECDEBAD95441E471E30CF65D51414C77EC8BBBD954418855930AF65D51415D4DDA91BBD95441862B3D0AF65D5141962DB792BBD9544143340E0AF65D514167922F93BBD9544192B4F509F65D5141775F6E93BBD954416FDA585AF65D514145531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414205BDE3F75D5141DEC5F7D7C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441B215F3FFFB5D5141B857D194C7D954414713D627045E5141E285B474CAD95441B7F041B5065E5141B37B045ACBD954411ED2F2BB085E5141006322E9CBD954412CEB3B940A5E514199F2146BCCD9544197792C440C5E5141C78B6FE1CCD954412C6A0DB70D5E5141CBBD702ACDD954413CD994E70E5E51410DDA8458CDD954413ED6944A105E5141FC85CC8ACDD954411EFB0502125E5141D1E909C9CDD9544185A69CE3135E5141C9763F0DCED95441C3F5288C145E514152B81E25CED9544177F0B549155E51413DA3ECFACDD95441FBC2A35A155E514120E427F7CDD954414F15D55B155E514183ECE3F6CDD9544172FC0A80155E5141E65CD4EECDD954417F78AD83155E51419B3A05EECDD954418C653827165E514180499DC9CDD954412F4EDE8B175E514135B0387ACDD95441B27DE105185E5141E3760F5FCDD95441C3F528DC185E5141F6285C2FCDD95441B83666671A5E5141E146365FCDD95441A2E763CD1A5E514153678F6BCDD954414B1BC6B41B5E5141CBF29287CDD95441372E6D321D5E5141973D32B0CDD954418CDB2E951E5E51419DA3C822CDD95441237A90F8215E5141809007C9CBD9544188E373BD225E5141B0D58B7ACBD95441EC51B84E235E51410AD7A340CBD95441A793FF96235E51415FBBC423CBD95441449D88A0235E51416DA9F51FCBD954417BD9E2DC235E51418A14DA07CBD954413DDC9AFC235E5141BF8C2EFBCAD9544195A6FDD4215E51412B78AAEAC9D95441C8EF31B91C5E5141BD6C7FD4C7D9544109B6C29A145E5141F9159083C4D954414F86CD440E5E5141125213EDC1D95441B13C72DE0A5E5141FB8F8893C0D95441D12C6650035E5141117B239FBDD954414BC0F647005E5141449B1F70BCD9544112982AA7FC5D51419391A505BBD95441E3A10F0DFA5D51419181B001BAD95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 101315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441C3F528BC065E5141D7A3705DCBD95441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441B715F3FFFB5D5141B657D194C7D954414813D627045E5141E485B474CAD95441BBF041B5065E5141B07B045ACBD954411AD2F2BB085E5141016322E9CBD9544128EB3B940A5E514196F2146BCCD954419B792C440C5E5141C98B6FE1CCD954412C6A0DB70D5E5141CEBD702ACDD9544140D994E70E5E51410FDA8458CDD954413BD6944A105E51410086CC8ACDD9544121FB0502125E5141CEE909C9CDD954418AA69CE3135E5141CE763F0DCED95441C3F5288C145E514152B81E25CED9544172F0B549155E514141A3ECFACDD95441FEC2A35A155E514120E427F7CDD954415015D55B155E514184ECE3F6CDD9544173FC0A80155E5141E45CD4EECDD954417E78AD83155E51419D3A05EECDD954418D653827165E51417C499DC9CDD95441344EDE8B175E514135B0387ACDD95441B47DE105185E5141E1760F5FCDD95441C3F528DC185E5141F6285C2FCDD95441B63666671A5E5141E446365FCDD95441A6E763CD1A5E514151678F6BCDD954414D1BC6B41B5E5141CCF29287CDD95441362E6D321D5E5141953D32B0CDD954418BDB2E951E5E51419DA3C822CDD95441217A90F8215E5141839007C9CBD9544187E373BD225E5141ACD58B7ACBD95441EC51B84E235E51410AD7A340CBD95441A993FF96235E51415BBBC423CBD95441489D88A0235E514170A9F51FCBD954417FD9E2DC235E51418914DA07CBD954413ADC9AFC235E5141BB8C2EFBCAD9544194A6FDD4215E51412E78AAEAC9D95441C7EF31B91C5E5141BD6C7FD4C7D9544108B6C29A145E5141F8159083C4D954415086CD440E5E5141175213EDC1D95441B33C72DE0A5E5141FC8F8893C0D95441D02C6650035E51410F7B239FBDD9544146C0F647005E5141469B1F70BCD954410F982AA7FC5D51419591A505BBD95441DFA10F0DFA5D51419381B001BAD95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 302834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441C3F528BC065E5141D7A3705DCBD95441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D95441EC51B89EFA5D514185EB5118C7D95441B715F3FFFB5D5141B657D194C7D954414813D627045E5141E485B474CAD95441BBF041B5065E5141B07B045ACBD954411AD2F2BB085E5141016322E9CBD9544128EB3B940A5E514196F2146BCCD954419B792C440C5E5141C98B6FE1CCD954412C6A0DB70D5E5141CEBD702ACDD9544140D994E70E5E51410FDA8458CDD954413BD6944A105E51410086CC8ACDD9544121FB0502125E5141CEE909C9CDD954418AA69CE3135E5141CE763F0DCED95441C3F5288C145E514152B81E25CED9544172F0B549155E514141A3ECFACDD95441FEC2A35A155E514120E427F7CDD954415015D55B155E514184ECE3F6CDD9544173FC0A80155E5141E45CD4EECDD954417E78AD83155E51419D3A05EECDD954418D653827165E51417C499DC9CDD95441344EDE8B175E514135B0387ACDD95441B47DE105185E5141E1760F5FCDD95441C3F528DC185E5141F6285C2FCDD95441B63666671A5E5141E446365FCDD95441A6E763CD1A5E514151678F6BCDD954414D1BC6B41B5E5141CCF29287CDD95441362E6D321D5E5141953D32B0CDD954418BDB2E951E5E51419DA3C822CDD95441217A90F8215E5141839007C9CBD9544187E373BD225E5141ACD58B7ACBD95441EC51B84E235E51410AD7A340CBD95441A993FF96235E51415BBBC423CBD95441489D88A0235E514170A9F51FCBD954417FD9E2DC235E51418914DA07CBD954413ADC9AFC235E5141BB8C2EFBCAD9544194A6FDD4215E51412E78AAEAC9D95441C7EF31B91C5E5141BD6C7FD4C7D9544108B6C29A145E5141F8159083C4D954415086CD440E5E5141175213EDC1D95441B33C72DE0A5E5141FC8F8893C0D95441D02C6650035E51410F7B239FBDD9544146C0F647005E5141469B1F70BCD954410F982AA7FC5D51419591A505BBD95441DFA10F0DFA5D51419381B001BAD95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17944 - 1011666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EB1105F45041EC51B84E8B715441A4703D4A01F4504148E17A948A71544152B81EC5F5F350418FC2F56889715441AE47E19AF0F35041D7A3703D897154413D0AD753EDF350413D0AD7B389715441AE47E18AE8F35041000000108C715441713D0A97E5F35041EC51B8FE8C715441AE47E15AE2F35041EC51B83E8D71544133333333DFF35041EC51B8EE8C715441EC51B80EDCF35041713D0A078C715441E17A149ED8F35041C3F528AC8A71544185EB51B8D4F3504114AE47A18871544152B81EF5CBF350413D0AD773827154419A999939C1F35041C3F528DC7A715441CDCCCC6CB8F35041295C8FD274715441000000A0B0F350410AD7A38070715441333333B3ABF35041CDCCCC6C777154410AD7A360BFF35041333333238771544114AE47B1C3F350417B14AEB78A715441AE47E18ACEF35041EC51B80E9671544152B81E95D0F350410AD7A33098715441EC51B85ED2F35041EC51B86E9C715441B81E85ABD9F3504114AE47C1AD71544152B81E55DBF35041CDCCCC7CAE7154415C8FC255EDF35041CDCCCC0CA871544148E17AD4FAF3504114AE47519E7154419A999989FFF350418FC2F5089C71544185EB51D810F450418FC2F56894715441F6285C3F0FF4504114AE47E191715441333333830CF45041D7A370BD8E715441A4703D4A0CF45041A4703DDA8D71544114AE47C109F45041E17A14AE8C7154411F85EB1105F45041EC51B84E8B715441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000066666656C5F35041EC51B89E9571544100000050C6F350419A999949967154410AD7A3B0CFF35041CDCCCC3C9D715441282DC2A0D0F35041A47643D89C7154411F85EB41D2F350419A9999299C71544152B81E95D0F350410AD7A33098715441AE47E18ACEF35041EC51B80E967154410AEDD609CCF3504114B6BA70937154416054AD3FC9F350419D79508690715441A03C8E00C7F35041753C382D8E7154413C2BC892C5F350412E5AEDAE8C71544114AE47B1C3F350417B14AEB78A715441C1F408E3C1F3504125062C38897154410AD7A360BFF350413333332387715441377D2BBFBBF350417870043D84715441CA50F725B7F35041DCE504918071544116F569A9B4F350411250BB947E715441D4DF8B92B1F350411A2C391D7C715441BEFFCEB3AEF3504122DB88D27971544114AE47F1AAF350411F85EBD1767154411E169F6FAEF3504166DACDBD7A715441ECE6EA7BB0F350414279510A7D715441333333A3B3F3504148E17A9480715441EC51B89EB8F35041E17A14EE8471544114AE4761BCF35041EC51B85E87715441D7A3706DB8F35041333333238C71544166666656C5F35041EC51B89E95715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17944 - 3380416
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EB1105F45041EC51B84E8B715441A4703D4A01F4504148E17A948A71544152B81EC5F5F350418FC2F56889715441AE47E19AF0F35041D7A3703D897154413D0AD753EDF350413D0AD7B389715441AE47E18AE8F35041000000108C715441713D0A97E5F35041EC51B8FE8C715441AE47E15AE2F35041EC51B83E8D71544133333333DFF35041EC51B8EE8C715441EC51B80EDCF35041713D0A078C715441E17A149ED8F35041C3F528AC8A71544185EB51B8D4F3504114AE47A18871544152B81EF5CBF350413D0AD773827154419A999939C1F35041C3F528DC7A715441CDCCCC6CB8F35041295C8FD274715441000000A0B0F350410AD7A38070715441333333B3ABF35041CDCCCC6C777154410AD7A360BFF35041333333238771544114AE47B1C3F350417B14AEB78A715441AE47E18ACEF35041EC51B80E9671544152B81E95D0F350410AD7A33098715441EC51B85ED2F35041EC51B86E9C715441B81E85ABD9F3504114AE47C1AD71544152B81E55DBF35041CDCCCC7CAE7154415C8FC255EDF35041CDCCCC0CA871544148E17AD4FAF3504114AE47519E7154419A999989FFF350418FC2F5089C71544185EB51D810F450418FC2F56894715441F6285C3F0FF4504114AE47E191715441333333830CF45041D7A370BD8E715441A4703D4A0CF45041A4703DDA8D71544114AE47C109F45041E17A14AE8C7154411F85EB1105F45041EC51B84E8B715441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000066666656C5F35041EC51B89E9571544100000050C6F350419A999949967154410AD7A3B0CFF35041CDCCCC3C9D715441282DC2A0D0F35041A47643D89C7154411F85EB41D2F350419A9999299C71544152B81E95D0F350410AD7A33098715441AE47E18ACEF35041EC51B80E967154410AEDD609CCF3504114B6BA70937154416054AD3FC9F350419D79508690715441A03C8E00C7F35041753C382D8E7154413C2BC892C5F350412E5AEDAE8C71544114AE47B1C3F350417B14AEB78A715441C1F408E3C1F3504125062C38897154410AD7A360BFF350413333332387715441377D2BBFBBF350417870043D84715441CA50F725B7F35041DCE504918071544116F569A9B4F350411250BB947E715441D4DF8B92B1F350411A2C391D7C715441BEFFCEB3AEF3504122DB88D27971544114AE47F1AAF350411F85EBD1767154411E169F6FAEF3504166DACDBD7A715441ECE6EA7BB0F350414279510A7D715441333333A3B3F3504148E17A9480715441EC51B89EB8F35041E17A14EE8471544114AE4761BCF35041EC51B85E87715441D7A3706DB8F35041333333238C71544166666656C5F35041EC51B89E95715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231802 - 57936
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000B30000005C8FC295415E5141666666F62CD854417B14AE17425E514114AE47A12BD85441A4703DCA425E51416666669629D8544100000050435E514148E17A1428D85441AE47E1DA475E514185EB518827D85441F6285CEF495E5141AE47E12A29D854419A9999C9495E51419A9999D92AD85441333333134B5E51419A9999092CD8544148E17AF44C5E5141666666162CD85441666666A64D5E5141000000602DD8544114AE47014D5E5141000000902ED85441000000204B5E5141713D0AA72FD85441295C8FE2495E5141CDCCCC3C31D8544133333373485E5141EC51B81E33D85441A4703DEA465E51410AD7A3C034D854411F85EB21455E5141A4703DDA34D85441A4703D1A435E5141C3F5281C34D854415C8FC205415E5141295C8FD232D854415C8FC2A53E5E5141B81E85BB31D85441F6285C4F3C5E514148E17AC435D854410AD7A3D03C5E51413333339337D854419A9999E93C5E514148E17AB439D854413D0AD7933B5E5141E17A142E3CD85441713D0A173A5E514148E17A843DD854413D0AD7F3385E5141A4703DDA3ED85441A4703DDA385E5141AE47E10A40D85441666666563A5E514114AE476141D85441666666C63B5E51413D0AD7C342D854415C8FC2653E5E51411F85EBF144D85441295C8FE23F5E5141B81E853B46D85441333333A3405E514185EB518847D85441A4703D9A415E51418FC2F52846D854419A9999F9425E5141F6285CEF45D854415C8FC2D5435E5141D7A3707D45D85441333333C3445E5141AE47E11A45D8544152B81E25455E514185EB519844D8544185EB51C8455E5141E17A142E44D8544114AE4791465E514152B81E7543D85441713D0AF7465E5141713D0AB742D85441A4703DDA475E5141AE47E1DA41D8544114AE47B1485E5141713D0AB740D854418FC2F598495E51411F85EBD13ED8544114AE47F1495E5141E17A14BE3DD854419A9999494A5E51413D0AD7233DD85441EC51B8EE4A5E51415C8FC2C53CD85441713D0AE74B5E5141713D0AE73CD85441333333634D5E514185EB51183DD8544185EB51384F5E5141666666763DD85441713D0A57505E5141295C8FA23DD85441CDCCCC6C525E5141333333633ED854417B14AEC7515E51417B14AEC739D85441C3F5281C515E514114AE479138D8544152B81E75505E51413333337337D854417B14AE874F5E51415C8FC26535D85441CDCCCC2C505E5141666666B633D8544185EB51E8515E51411F85EB1133D85441B81E857B545E51410AD7A39033D8544152B81EC5555E51413D0AD7B334D8544148E17A04565E51413333336336D85441E17A14DE555E514185EB513838D8544166666646555E514152B81E7539D85441EC51B86E545E514114AE47F13AD854418FC2F508555E5141AE47E1FA3BD85441E17A140E565E5141000000F03CD85441C3F5282C575E51411F85EB513DD854419A999939585E51411F85EBD13BD85441B81E858B585E51410AD7A3103AD8544133333323595E5141E17A147E39D85441A4703DDA595E5141713D0AB739D85441333333935B5E5141000000E039D854417B14AE575C5E51418FC2F5183AD85441333333235E5E514152B81EA53AD854411F85EBE15F5E5141E17A140E3BD85441295C8F82615E5141F6285C3F3BD854415C8FC2A5635E51410AD7A3803BD854411F85EBF1655E5141295C8FE23BD8544148E17AF4675E5141666666A63CD85441CDCCCC7C695E5141AE47E17A3DD85441CDCCCCDC6A5E5141666666F63DD85441B81E858B6C5E5141333333333FD854417B14AEF76E5E5141713D0A273FD8544114AE4741715E51410AD7A36040D85441B81E854B725E51417B14AE7741D854418FC2F568735E5141666666A642D854417B14AE77745E51418FC2F56843D854415C8FC2D5755E514185EB519844D85441000000C0775E514148E17AD443D85441295C8F42785E5141AE47E1FA41D854413D0AD773785E514185EB510840D85441D7A370BD785E514148E17AC43DD85441E17A14DE785E5141713D0A373BD85441EC51B80E795E5141D7A370ED37D85441EC51B80E795E51417B14AE4735D85441CDCCCCAC785E5141713D0A2732D85441C3F5287C785E51413D0AD70330D8544114AE4731775E5141666666462DD85441C3F5288C765E5141000000302CD8544185EB51A8755E5141CDCCCCCC2AD85441666666F6745E514152B81EF529D8544148E17A14745E51410AD7A35029D85441000000B0715E5141E17A14DE28D8544148E17A846F5E514114AE47F127D85441295C8FA26D5E514148E17A0427D85441000000A06B5E5141EC51B86E27D8544133333333695E5141D7A370AD22D85441CDCCCC7C665E51410AD7A35023D854418FC2F538645E51410000003023D8544166666646625E51417B14AE2723D85441EC51B8CE605E51417B14AE2723D854410AD7A3905F5E5141713D0A0723D85441D7A3700D5F5E5141E17A144E21D85441E17A149E5D5E51413D0AD7D320D85441D7A370FD5B5E5141B81E85CB20D8544148E17A545A5E514114AE475120D85441B81E851B575E5141333333331FD854410AD7A3E0545E5141E17A14DE1ED854413D0AD773525E51411F85EB911ED854410AD7A370515E5141EC51B81E1ED85441F6285C8F515E514185EB51481DD85441CDCCCC3C515E5141000000A01BD854411F85EBB1505E51417B14AEF719D85441E17A14FE4F5E5141CDCCCCFC17D85441713D0AA74E5E5141295C8F0216D854417B14AEC74E5E514148E17AD414D8544152B81E554E5E5141AE47E10A13D85441F6285CAF4E5E51410000007012D85441CDCCCCAC4F5E5141D7A370FD11D854413D0AD703515E5141A4703D5A11D85441E17A14FE525E5141666666B610D85441AE47E1BA545E51411F85EB510FD8544166666676565E5141AE47E13A0ED8544114AE4711565E5141E17A14FE0CD854417B14AEC7545E51415C8FC2050AD85441CDCCCCFC535E5141A4703D4A08D8544148E17AA4525E51410AD7A37006D854415C8FC245505E514148E17A4405D85441F6285CAF4E5E51415C8FC27504D8544114AE47014D5E514152B81ED503D8544114AE47014C5E51410000005003D854411F85EBA14A5E5141713D0A2703D85441E17A143E495E514114AE47F102D854417B14AEE7475E51411F85EBB102D85441F6285C1F465E514152B81EA502D8544152B81E15455E514152B81EA502D8544133333373435E51410AD7A33003D85441E17A149E415E51411F85EBE103D85441E17A142E405E51416666668604D854418FC2F5983E5E51413D0AD78305D854419A9999E93C5E51411F85EB8106D85441713D0A873B5E5141295C8F7207D85441EC51B8EE3A5E514152B81E7506D85441A4703D4A3A5E5141713D0AB705D854417B14AEA7385E514185EB513805D854413D0AD7C3375E5141CDCCCCAC04D854411F85EB11375E51413333336303D85441295C8FD2365E51418FC2F55802D854417B14AE07365E5141295C8FD204D85441295C8FD2365E514148E17AB406D8544114AE4751375E514152B81ED508D8544185EB5168385E514152B81E450AD85441B81E855B385E514152B81EA50CD854418FC2F5F8365E5141EC51B8EE0DD85441B81E85BB355E5141295C8F120FD8544166666626345E51418FC2F56810D85441A4703D6A325E5141F6285C7F11D8544185EB51C8305E51417B14AE1712D85441EC51B81E325E51411F85EB2113D8544166666626345E5141333333D313D85441B81E855B385E5141D7A370DD14D85441CDCCCC7C3A5E5141F6285C8F15D854415C8FC2053C5E514185EB51D816D854417B14AE773C5E51413333331319D8544152B81EA53D5E5141000000601AD85441E17A143E445E5141713D0AF71CD854410AD7A390425E51415C8FC22523D85441F6285CCF405E5141A4703DAA29D854419A999979405E5141F6285CFF2AD85441333333D3405E51413D0AD7432CD854415C8FC295415E5141666666F62CD85441
+</a>
+
+<b>
+01060000000100000001030000000100000001010000D939894E775E5141ED6BCE0144D85441D8C22317785E5141F291629842D854414780DA4B785E5141A9C9DB9C41D854413D0AD773785E514185EB510840D85441D7A370BD785E514148E17AC43DD85441E17A14DE785E5141713D0A373BD85441EC51B80E795E5141D7A370ED37D85441EC51B80E795E514141086EA035D85441B2D60407795E51411A52B60835D85441CDCCCCAC785E5141713D0A2732D85441C3F5287C785E51413D0AD70330D85441243BF134775E514186EF294E2DD85441F2493D18775E5141B02E2E1C2DD8544140A5697D755E5141A054C9982AD8544155737A02745E5141C2DD454D29D85441000000B0715E5141E17A14DE28D8544199803ECE6F5E51417D26B91028D8544148E17A846F5E514114AE47F127D85441A5A464A56D5E5141C642DF0527D8544189D90FA16D5E5141FE0FCA0427D85441000000A06B5E5141EC51B86E27D85441476922D1695E5141CD281FE323D85441BE588041695E5141C7817BC922D85441F5208D05685E5141279B55F422D85441CDCCCC7C665E51410AD7A35023D85441EA9565B1655E5141CEAD304523D85441706A3827635E5141838B6E2B23D8544166666646625E51417B14AE2723D85441EC51B8CE605E51417B14AE2723D854410AD7A3905F5E5141713D0A0723D854417A8D64275F5E514124824EA521D85441D5D19ACF5D5E514168CA51E420D854412752012B5D5E514109C38AD120D85441D7A370FD5B5E5141B81E85CB20D8544148E17A545A5E514114AE475120D85441B81E851B575E5141333333331FD854410AD7A3E0545E5141E17A14DE1ED85441974F5E68545E5141373553CF1ED854417361E801545E5141294FC1C21ED854417636E6AC535E51417A8453B81ED85441FCFF1454535E51415A1B6EAD1ED854413D0AD773525E51411F85EB911ED854410AD7A370515E5141EC51B81E1ED85441D879C388515E514106875B761DD85441DF170D4A515E514139CF1AE41BD85441283F201F515E5141144156451BD854411F85EBB1505E51417B14AEF719D85441E17A14FE4F5E5141CDCCCCFC17D85441713D0AA74E5E5141295C8F0216D854417B14AEC74E5E514148E17AD414D8544198611D584E5E514152A4D71613D8544152B81E554E5E5141AE47E10A13D85441F6285CAF4E5E51410000007012D85441CDCCCCAC4F5E5141D7A370FD11D854413D0AD703515E5141A4703D5A11D854418045E7FA525E51416B966DB710D85441B4901A85535E5141E2CB2F4A10D85441AE47E1BA545E51411F85EB510FD854417E7BF8CF545E5141859EA6440FD85441BEF5E657565E5141F951114E0ED8544102D8F856565E5141EA436BD80DD8544114AE4711565E5141E17A14FE0CD854417B14AEC7545E51415C8FC2050AD85441CDCCCCFC535E5141A4703D4A08D85441D1B605B7535E5141706543EA07D8544100FFA74E535E51415F1EB65A07D85441E7CC2844535E5141D3F9454C07D854412E04432A535E514128F1A62807D8544142668A27535E514125C5E82407D854417B3BA813535E5141CD6C8F0907D854416877CD69525E51412E5C9C5306D854415C8FC245505E514148E17A4405D85441F6285CAF4E5E51415C8FC27504D8544114AE47014D5E514152B81ED503D854410C66CB924C5E5141C9E4AA9B03D85441A2CB108B4A5E51414E51962303D85441E17A143E495E514114AE47F102D85441DE666C82485E51414B058ECE02D85441E80AD4CE475E5141CE0F39B102D85441F6285C1F465E514152B81EA502D8544152B81E15455E514152B81EA502D8544182381E70445E5141DE7234DC02D85441D85FA1CD405E51411182163F04D85441685E04233D5E5141D0A3196006D854414ED1318B3B5E51416F82BD6F07D85441713D0A873B5E5141295C8F7207D8544196063C0A3B5E5141D07FE6A206D85441EDCBDCFF395E51413CA485A005D85441C57D5CCA385E51411FE1D14205D854417B14AEA7385E514185EB513805D85441C06EDE02385E5141377665D304D854413D0AD7C3375E5141CDCCCCAC04D854411F85EB11375E51413333336303D85441AB1F9F0D375E51410250235103D85441D7A3DDC0365E51414534389002D8544135F2E510365E51415E6EC5B504D85441A574F369365E5141180CFEBB05D85441295C8FD2365E514148E17AB406D854413141DD01375E51416BF6CA7F07D854413D33D962375E514125154AEC08D8544185EB5168385E514152B81E450AD85441B81E855B385E514152B81EA50CD85441364468EE375E51416C2E8D0A0DD854418FC2F5F8365E5141EC51B8EE0DD85441F16750DE365E5141969037070ED85441B81E85BB355E5141295C8F120FD8544166666626345E51418FC2F56810D85441D1C8354A335E514158ACF9F210D85441A4703D6A325E5141F6285C7F11D8544185EB51C8305E51417B14AE1712D854410014B5F5315E51419E9F070213D854411AEDB23E335E5141F3BB288413D8544110785AC9345E5141F37A7AFB13D85441CA85DF29355E51419D01561314D8544108CF4E42365E51415535A75814D85441704FE1E4365E5141435FD68014D85441B81E855B385E5141D7A370DD14D85441CDCCCC7C3A5E5141F6285C8F15D854416A7DCFD33B5E5141426F81AE16D85441A8185DE63B5E51414F7D09BE16D854415C8FC2053C5E514185EB51D816D854411885A85B3C5E514132CCC68618D854418ED4189B3C5E514148334D3A19D85441586F0BC03D5E5141F1946F5A1AD854418CD5C45D3E5E5141C8F77CA81AD854417FF898773E5E5141BBB6A0B21AD8544179D725AF3E5E514168716FC81AD8544144836CA6425E5141245701571CD85441F5049EDE425E51417AB3106D1CD8544114C33426445E5141E4F1AAED1CD85441E17A143E445E5141713D0AF71CD854410AD7A390425E51415C8FC22523D85441D83F2E6F415E5141E4CCB75827D854418A547780405E514160970CE42AD854412EE008DB405E514177C6074B2CD854412057314B415E51417904F7B12CD854417FC2F1E3415E5141102D1E292CD854417B14AE17425E514114AE47A12BD85441A4703DCA425E51416666669629D85441004F0C04435E5141922F9DEF28D85441EFE8031D435E5141805894A728D8544181E2E312435E5141031F6B4428D8544100000050435E514148E17A1428D85441AE47E1DA475E514185EB518827D85441AB01B092495E514106BA08E228D85441F6285CEF495E5141AE47E12A29D854412321D6D8495E5141C11ECD2B2AD85441988AA05B4A5E5141100349602BD85441BA8664A44A5E5141C02966A32BD85441F126C4B34A5E5141F71B94B12BD85441B7BD75DB4A5E5141D57230D62BD8544154219DDF4A5E51418E3E05DA2BD85441E7DF860E4B5E51416F314A052CD85441F77777074C5E514137B118102CD8544148E17AF44C5E5141666666162CD85441BCEC113E4D5E5141B811BA9E2CD85441666666A64D5E5141000000602DD8544114AE47014D5E5141000000902ED8544162A5A6704B5E5141069447782FD854411D363C8B495E5141E6535BAF31D8544133333373485E5141EC51B81E33D854413C9F4F1E475E5141DFF3428934D85441A4703DEA465E51410AD7A3C034D854411F85EB21455E5141A4703DDA34D85441A4703D1A435E5141C3F5281C34D8544182DEB907425E5141B10E3D7233D85441B98015E6405E5141C4BA05C432D854413C1D53A73F5E51412D87BA3132D854411EFF22783E5E51417E6B460A32D85441F6285C4F3C5E514148E17AC435D854410AD7A3D03C5E51413333339337D854419A9999E93C5E514148E17AB439D854413D0AD7933B5E5141E17A142E3CD85441C67AE6673A5E51413E0FC63B3DD854413D0AD7F3385E5141A4703DDA3ED854412C7E03DE385E51414540F9DD3FD8544100F04423395E51413BD1A74C40D85441666666563A5E514114AE476141D85441666666C63B5E51413D0AD7C342D854415C8FC2653E5E51411F85EBF144D854414BE8CB263F5E5141A684009945D85441011DB4523F5E5141F04F186D45D85441DA306FC33F5E5141224D942046D85441295C8FE23F5E5141B81E853B46D8544186A48F89405E514153E2065C47D85441CB68DED7405E51411806693D47D85441A4703D9A415E51418FC2F52846D85441D30315F5425E51419DC319F045D85441CDC91DDF445E5141E17EA8F544D8544152B81E25455E514185EB519844D8544159702CB2455E514178337F3C44D85441E401AC3C465E514179E5FDC243D85441995441BA465E514138D8942843D85441713D0AF7465E5141713D0AB742D854419C5AEB8C475E5141C063D40942D85441C100087A485E5141F33A050241D85441E6BAC7D6495E5141A308D8103ED8544114AE47F1495E5141E17A14BE3DD854419A9999494A5E51413D0AD7233DD85441A41F27C44A5E51417F6D03DE3CD85441EC51B8EE4A5E51415C8FC2C53CD85441713D0AE74B5E5141713D0AE73CD85441333333634D5E514185EB51183DD8544185EB51384F5E5141666666763DD85441713D0A57505E5141295C8FA23DD854419BCF0B3B525E5141F0463E513ED854410BBECF58525E514171F469D43DD85441D0D3F2D0515E5141E496E3093AD85441EBA201A8515E5141AF375C8E39D85441C3F5281C515E514114AE479138D8544152B81E75505E51413333337337D854417B14AE874F5E51415C8FC26535D85441FE2D520E505E514154FD050634D854417368951F505E5141092FEDD833D85441CDCCCC2C505E5141666666B633D8544185EB51E8515E51411F85EB1133D854417D5E3216525E5141D830BD1A33D85441B81E857B545E51410AD7A39033D854413DF4A5C8545E5141174EC8D433D8544152B81EC5555E51413D0AD7B334D8544148E17A04565E51413333336336D85441E17A14DE555E514185EB513838D8544110E08468555E514123D4DB2D39D8544166666646555E514152B81E7539D85441331E1AA7545E51414581E68D3AD8544167621EA3545E51416896824B3BD854418FC2F508555E5141AE47E1FA3BD854416DB71BE1555E5141EAACC8C53CD85441D59CAFFE565E514110E1E4283DD85441C0A4153E585E5141FA3753B93BD854419A7B9B8A585E5141A131A5153AD85441B81E858B585E51410AD7A3103AD8544133333323595E5141E17A147E39D85441A4703DDA595E5141713D0AB739D85441333333935B5E5141000000E039D854417B14AE575C5E51418FC2F5183AD85441333333235E5E514152B81EA53AD854417600D76E5E5E51419461E4B63AD8544122B37AE0625E51416DD11A693BD854415C8FC2A5635E51410AD7A3803BD854411F85EBF1655E5141295C8FE23BD8544129119386665E51410630231B3CD8544148E17AF4675E5141666666A63CD854415EE1D26A695E5141E5E224713DD8544160A55681695E514179FB787C3DD85441CDCCCCDC6A5E5141666666F63DD85441C30F7AC06B5E51412EF2DB9D3ED85441AD0792B16C5E5141A73374323FD854417B14AEF76E5E5141713D0A273FD85441836D08756F5E5141283C2B6A3FD8544114AE4741715E51410AD7A36040D85441C3D17DD9715E5141FA592B0041D85441B81E854B725E51417B14AE7741D854418FC2F568735E5141666666A642D854417B14AE77745E51418FC2F56843D854415C8FC2D5755E514185EB519844D85441D939894E775E5141ED6BCE0144D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965418 - 218346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C0000001F85EBF1E0C95041666666E663B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB65441C8179FC2ECC95041FFF5025F5FB654410EABCDC2EFC95041752C210A5FB65441B80DBCCDEFC95041BDF5EB085FB65441DE2889B2F6C9504104B8B0D05EB65441C0ECDAC800CA5041D8746FA55EB654411155D54E07CA5041C4B490F95EB654412C71137E07CA504130FBF1FB5EB65441442A968807CA5041C93990D45EB6544187FDBD8B07CA50418D2BCBD45EB65441FE4705A807CA504190D4C85E5EB65441DF0A556908CA5041A81318D05BB654411CD7DA1500CA5041508FAD115CB6544106930D50F0C95041F4CFC2925CB65441BC7E7BC1EFC95041A7BA599E5CB65441CEA2DC0EEDC95041914113175DB654417CCEE198EDC9504130C038F75CB654418218AE47EBC950413F285C5F5DB65441E2FCB2AAEAC9504105095BA45DB654410AD7A3F0E6C950417B14AE475FB654413AFDC748E5C95041AA01944760B65441EC51B81EE2C950410AD7A33062B65441295C8F52E1C95041E17A148E62B654411F85EBF1E0C95041666666E663B65441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000C2A00D50F0C9504184CFC2925CB65441C37E7BC1EFC95041A6BA599E5CB65441CEA2DC0EEDC95041914113175DB65441C4464955EDC95041F271D2065DB654416018AE47EBC950414E285C5F5DB65441E2FCB2AAEAC9504105095BA45DB654410AD7A3F0E6C950417B14AE475FB65441EC51B81EE2C950410AD7A33062B65441295C8F52E1C95041E17A148E62B65441D2FD27E4E0C950412911AB1B64B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB654410EABCDC2EFC95041752C210A5FB65441B80DBCCDEFC95041BDF5EB085FB65441DE2889B2F6C9504104B8B0D05EB65441C0ECDAC800CA5041D8746FA55EB654411155D54E07CA5041C4B490F95EB654412C71137E07CA504130FBF1FB5EB65441442A968807CA5041C93990D45EB6544147F2058907CA5041CE6198D45EB65441B8CFF99C07CA5041852AE08C5EB65441FE4705A807CA504190D4C85E5EB654419CAFC6C607CA5041EEE19FF65DB65441D4A9DA5F08CA50410FBC62D05BB654411CD7DA1500CA5041508FAD115CB65441C2A00D50F0C9504184CFC2925CB65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965418 - 392309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C0000001F85EBF1E0C95041666666E663B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB65441C8179FC2ECC95041FFF5025F5FB654410EABCDC2EFC95041752C210A5FB65441B80DBCCDEFC95041BDF5EB085FB65441DE2889B2F6C9504104B8B0D05EB65441C0ECDAC800CA5041D8746FA55EB654411155D54E07CA5041C4B490F95EB654412C71137E07CA504130FBF1FB5EB65441442A968807CA5041C93990D45EB6544187FDBD8B07CA50418D2BCBD45EB65441FE4705A807CA504190D4C85E5EB65441DF0A556908CA5041A81318D05BB654411CD7DA1500CA5041508FAD115CB6544106930D50F0C95041F4CFC2925CB65441BC7E7BC1EFC95041A7BA599E5CB65441CEA2DC0EEDC95041914113175DB654417CCEE198EDC9504130C038F75CB654418218AE47EBC950413F285C5F5DB65441E2FCB2AAEAC9504105095BA45DB654410AD7A3F0E6C950417B14AE475FB654413AFDC748E5C95041AA01944760B65441EC51B81EE2C950410AD7A33062B65441295C8F52E1C95041E17A148E62B654411F85EBF1E0C95041666666E663B65441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000C2A00D50F0C9504184CFC2925CB65441C37E7BC1EFC95041A6BA599E5CB65441CEA2DC0EEDC95041914113175DB65441C4464955EDC95041F271D2065DB654416018AE47EBC950414E285C5F5DB65441E2FCB2AAEAC9504105095BA45DB654410AD7A3F0E6C950417B14AE475FB65441EC51B81EE2C950410AD7A33062B65441295C8F52E1C95041E17A148E62B65441D2FD27E4E0C950412911AB1B64B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB654410EABCDC2EFC95041752C210A5FB65441B80DBCCDEFC95041BDF5EB085FB65441DE2889B2F6C9504104B8B0D05EB65441C0ECDAC800CA5041D8746FA55EB654411155D54E07CA5041C4B490F95EB654412C71137E07CA504130FBF1FB5EB65441442A968807CA5041C93990D45EB6544147F2058907CA5041CE6198D45EB65441B8CFF99C07CA5041852AE08C5EB65441FE4705A807CA504190D4C85E5EB654419CAFC6C607CA5041EEE19FF65DB65441D4A9DA5F08CA50410FBC62D05BB654411CD7DA1500CA5041508FAD115CB65441C2A00D50F0C9504184CFC2925CB65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>20047 - 3182037
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000080000005C8FC2A5BC65514166666616979C5441713D0AE7C5655141713D0AE7739C544185EB51D8CE65514152B81EE5519C5441E17A14BEC96551415C8FC285509C544185EB51B8C0655141333333D3729C544152B81E65B76551417B14AE47969C5441AE47E11ABB655141F6285CFF969C54415C8FC2A5BC65514166666616979C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000066558DA9BC655141B09C9E16979C54414675641EC2655141D3A98167979C5441D179A0FFC365514146B8BB21909C544171FCEC3DD2655141DB58D1F1599C54411089C5FED365514158992549539C5441856A01DFCE655141D3E1ECE6519C544189DC9A27CE65514161AC2685549C544163B10696BE655141C60FBBB78F9C544166558DA9BC655141B09C9E16979C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>20047 - 3272984
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000080000005C8FC2A5BC65514166666616979C5441713D0AE7C5655141713D0AE7739C544185EB51D8CE65514152B81EE5519C5441E17A14BEC96551415C8FC285509C544185EB51B8C0655141333333D3729C544152B81E65B76551417B14AE47969C5441AE47E11ABB655141F6285CFF969C54415C8FC2A5BC65514166666616979C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000066558DA9BC655141B09C9E16979C54414675641EC2655141D3A98167979C5441D179A0FFC365514146B8BB21909C544171FCEC3DD2655141DB58D1F1599C54411089C5FED365514158992549539C5441856A01DFCE655141D3E1ECE6519C544189DC9A27CE65514161AC2685549C544163B10696BE655141C60FBBB78F9C544166558DA9BC655141B09C9E16979C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21462 - 2971639
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E95D51D51413D0AD7E3575954419A999919D61D5141000000C05B595441AE47E14AD51D5141713D0A575E5954411F85EBA1D81D51411F85EB515F5954419A999959D61D514114AE47F16859544148E17A34CE1D5141D7A3703D67595441000000B0CD1D514114AE47F168595441000000E0CA1D51417B14AEE7675954415C8FC2F5C51D5141E17A14DE78595441E17A146EC41D514152B81E757C5954413D0AD7D3CD1D5141E17A140E7E59544148E17AB4DE1D51418FC2F5A87F595441295C8F92F31D514148E17AD483595441B81E85CBFB1D5141CDCCCCFC8259544185EB51B8041E51419A999949825954410AD7A320101E514114AE470184595441B81E85DB111E5141AE47E1EA7C595441A4703D2A131E51411F85EB9177595441000000801B1E51415C8FC2A557595441C3F5287C411E514133333363605954410AD7A3F0411E5141295C8F025F595441D7A370BD561E51417B14AE57305954417B14AED7531E514148E17A642F5954417B14AE67561E51411F85EB812959544166666606F11D51417B14AE171259544185EB5118EF1D514185EB51D8125954418FC2F5A8E91D5141F6285CBF1A595441713D0A17E41D5141E17A14BE235954419A999969D61D5141A4703D4A3D59544100000090D31D5141C3F5284C4759544114AE4701D51D514152B81EB547595441F6285C5FD41D51411F85EB114A5954418FC2F5D8D21D5141EC51B8CE49595441B81E854BCF1D5141A4703D4A56595441C3F528DCD01D5141CDCCCC4C555954415C8FC255D31D514152B81EA55559544152B81E95D51D51413D0AD7E357595441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009572BBCBD41D51414D2D7FF74259544151F8FD0DD41D5141B141C09145595441035D459AE21D5141DBA12CE848595441DFF8272DF81D5141488F75734D59544104434D4A141E5141D47E3BD253595441AA2FDAA7271E5141334E491C5859544109914372421E5141AB5CBBDF5D59544105BFC647431E5141B765B0005C595441D7A370BD561E51417B14AE57305954417B14AED7531E514148E17A642F5954417B14AE67561E51411F85EB812959544166666606F11D51417B14AE171259544185EB5118EF1D514185EB51D8125954418FC2F5A8E91D5141F6285CBF1A595441713D0A17E41D5141E17A14BE235954419A999969D61D5141A4703D4A3D5954419572BBCBD41D51414D2D7FF742595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21462 - 3511995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E95D51D51413D0AD7E3575954419A999919D61D5141000000C05B595441AE47E14AD51D5141713D0A575E5954411F85EBA1D81D51411F85EB515F5954419A999959D61D514114AE47F16859544148E17A34CE1D5141D7A3703D67595441000000B0CD1D514114AE47F168595441000000E0CA1D51417B14AEE7675954415C8FC2F5C51D5141E17A14DE78595441E17A146EC41D514152B81E757C5954413D0AD7D3CD1D5141E17A140E7E59544148E17AB4DE1D51418FC2F5A87F595441295C8F92F31D514148E17AD483595441B81E85CBFB1D5141CDCCCCFC8259544185EB51B8041E51419A999949825954410AD7A320101E514114AE470184595441B81E85DB111E5141AE47E1EA7C595441A4703D2A131E51411F85EB9177595441000000801B1E51415C8FC2A557595441C3F5287C411E514133333363605954410AD7A3F0411E5141295C8F025F595441D7A370BD561E51417B14AE57305954417B14AED7531E514148E17A642F5954417B14AE67561E51411F85EB812959544166666606F11D51417B14AE171259544185EB5118EF1D514185EB51D8125954418FC2F5A8E91D5141F6285CBF1A595441713D0A17E41D5141E17A14BE235954419A999969D61D5141A4703D4A3D59544100000090D31D5141C3F5284C4759544114AE4701D51D514152B81EB547595441F6285C5FD41D51411F85EB114A5954418FC2F5D8D21D5141EC51B8CE49595441B81E854BCF1D5141A4703D4A56595441C3F528DCD01D5141CDCCCC4C555954415C8FC255D31D514152B81EA55559544152B81E95D51D51413D0AD7E357595441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009572BBCBD41D51414D2D7FF74259544151F8FD0DD41D5141B141C09145595441035D459AE21D5141DBA12CE848595441DFF8272DF81D5141488F75734D59544104434D4A141E5141D47E3BD253595441AA2FDAA7271E5141334E491C5859544109914372421E5141AB5CBBDF5D59544105BFC647431E5141B765B0005C595441D7A370BD561E51417B14AE57305954417B14AED7531E514148E17A642F5954417B14AE67561E51411F85EB812959544166666606F11D51417B14AE171259544185EB5118EF1D514185EB51D8125954418FC2F5A8E91D5141F6285CBF1A595441713D0A17E41D5141E17A14BE235954419A999969D61D5141A4703D4A3D5954419572BBCBD41D51414D2D7FF742595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21574 - 16860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000000000A098195141D7A370BD3A5554419A9999199219514148E17A8435555441B81E85BB911951418FC2F538355554418FC2F5388F1951413D0AD7533755544185EB51887C19514114AE47F157555441C3F5287C7B195141AE47E1EA59555441A4703DCA7619514185EB51A8635554419A99996977195141AE47E1AA645554411F85EB61D7195141333333C394555441B81E85FBD8195141B81E85FB9455544185EB5138DB195141AE47E10A95555441AE47E19ADD195141713D0A47945554413D0AD783DE1951410AD7A3D09355544185EB5108E019514133333353915554417B14AE37E71951415C8FC24583555441D7A370DDEB19514185EB51087C5554417B14AEB7EB195141AE47E1EA7B55544148E17A04E4195141333333E3755554415C8FC2A5D1195141713D0A77675554411F85EB01CB195141713D0A4762555441713D0AE7C71951418FC2F5D85F555441C3F5281CB519514148E17A2451555441D7A3703D9E1951419A9999293F555441A4703D7A9B195141C3F528FC3C555441000000A098195141D7A370BD3A555441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000002E2D92CDB1951415C8C920A955554416E43C2F8DC195141C784FF7A945554418D463FB3DC195141258E76AA9355544178A8FA75D8195141258E76AA93555441BCAAB109C1195141DB002D08885554416B689459C0195141291FCA3589555441EC5E0E39C51951414A8870A98B5554412BA04E73CA1951410E5619488E55544166774879CF19514114988FCC905554413105266AD3195141B96526C6925554411F85EB61D7195141333333C3945554417B9F0CD7D9195141512568019555544102E2D92CDB1951415C8C920A95555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21574 - 59228
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000000000A098195141D7A370BD3A5554419A9999199219514148E17A8435555441B81E85BB911951418FC2F538355554418FC2F5388F1951413D0AD7533755544185EB51887C19514114AE47F157555441C3F5287C7B195141AE47E1EA59555441A4703DCA7619514185EB51A8635554419A99996977195141AE47E1AA645554411F85EB61D7195141333333C394555441B81E85FBD8195141B81E85FB9455544185EB5138DB195141AE47E10A95555441AE47E19ADD195141713D0A47945554413D0AD783DE1951410AD7A3D09355544185EB5108E019514133333353915554417B14AE37E71951415C8FC24583555441D7A370DDEB19514185EB51087C5554417B14AEB7EB195141AE47E1EA7B55544148E17A04E4195141333333E3755554415C8FC2A5D1195141713D0A77675554411F85EB01CB195141713D0A4762555441713D0AE7C71951418FC2F5D85F555441C3F5281CB519514148E17A2451555441D7A3703D9E1951419A9999293F555441A4703D7A9B195141C3F528FC3C555441000000A098195141D7A370BD3A555441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000002E2D92CDB1951415C8C920A955554416E43C2F8DC195141C784FF7A945554418D463FB3DC195141258E76AA9355544178A8FA75D8195141258E76AA93555441BCAAB109C1195141DB002D08885554416B689459C0195141291FCA3589555441EC5E0E39C51951414A8870A98B5554412BA04E73CA1951410E5619488E55544166774879CF19514114988FCC905554413105266AD3195141B96526C6925554411F85EB61D7195141333333C3945554417B9F0CD7D9195141512568019555544102E2D92CDB1951415C8C920A95555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21577 - 3127051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000713D0AC70A1A51418FC2F588E9555441713D0A870A1A514185EB51F8E955544114AE47B1061A5141295C8FA2F055544185EB5178011A514114AE4751FA555441AE47E14AFC195141AE47E1BA055654415C8FC2E5F41951411F85EBF114565441B81E858BE9195141000000302A565441E17A144EE7195141000000602E5654418FC2F5A8DE195141713D0A873E565441B81E851BD71951413D0AD7734C56544152B81EE5CF19514152B81EF55A565441000000B0CF1951419A9999695B565441AE47E15ACB195141666666E664565441A4703D7AC819514185EB51C86B565441713D0A27C5195141333333737456544100000060C2195141C3F5281C7D565441EC51B81ECC195141B81E85AB7E5654419A999989D21951415C8FC2857D56544148E17A74EC1951419A9999994A56544185EB5138E7195141EC51B8FE455654410AD7A3C0F1195141E17A141E345654411F85EB01181A5141D7A3702DF3555441666666B6161A5141295C8F92F055544133333363141A5141C3F5287CEE555441CDCCCC1C0B1A5141295C8FF2E8555441713D0AC70A1A51418FC2F588E9555441
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000B8CEEA50101A514175A7EE3B0056544153BB7E120D1A514185CA9EBD05565441226B9EBA0C1A5141436E665306565441EFEDD70E0B1A5141C2B6F72809565441717BA0E6FB1951416423DAE322565441207FFEC0FB195141FC5DBC2323565441C1F089ACFB1951413BA199462356544188B2945FFB195141B6AC19C9235654411AE57AFBF7195141BDF8BF8A29565441A2713650F71951418A607CAD2A565441B0257B1FF4195141AAF4EE1730565441934922C2F3195141E33565B630565441BCA6A2C3F219514199116666325654413BFB60B0F0195141A9638FEF35565441E66B9E1AEF19514183DEA39D38565441249FD1ADED19514136FD28093B565441E4E6B2A8EB195141F6C9F5753E565441830AF789EB195141983C2FAA3E5654411A998B3EE719514151B961FE45565441F3AE4D99EA195141427870F34856544126D2D355EB195141830BA39949565441A6DCDB64EC195141D9A099864A565441B0B37F75EC195141E3773D974A5654412630F8E8EA195141639E62A24D5654415C24BD3FEA195141A56D66F34E565441E4AA0216E8195141A095EF2E53565441AD173A84E619514148A96744565654418D4AA772E61951417468EF6656565441CB6C8433E6195141E302FEE256565441D4A16BE8E4195141F284877359565441A703BEAAE4195141D3ADC2E659565441756F0BC0E01951412EF9F89861565441D3F04DC5DC1951418ED6956A695654416C4FA764DB195141A694781F6C5654415FF20D1EDA19514195992BA16E565441D70E968CD9195141863DFCBE6F565441C8CA71CDD41951415E707C1279565441FE614BB7D41951412D84A33E795654418B444666D2195141B5D67CEA7D565441ECFB60F5D119514197C2F9EF7E565441B40FDAE4D1195141E04779EF7E5654414BB7EB04CC195141FCE3CDC17E56544192E9700ACA195141CDACA2B17E565441CB381B37C0195141210D56617E5654414320A3BEB719514196311C1C7E56544122FA0D3EB7195141F28D4A277E565441D1F3F825B7195141F28D4A277E565441D1CB738DB619514100CB15107F565441F992B6B4B5195141E5C80E087F565441D3F17BF1B4195141C35E4B337F5654410282357AB319514122723AA2825654415DF3D1AAB219514156EA029084565441A1E2CDBDB119514125148DE0865654410D34FE8FB0195141461680F5895654418FCF1826B01951411E1AD4218B565441EE0BA2E1B719514142BFE18D8A56544118976CE6BC1951410735EC2C8A56544150000591C3195141B59D21AC895654413756DEF0C9195141C216FB3089565441F0F0456FCF195141F608D8C688565441695E67CCD21951415D69DB8588565441E68C5121D4195141D3976D6B885654416C07467AD61951414DF2C63E885654417D5812CADB1951412A4F28D887565441C809747FE1195141D820DF69875654418A1DACA1E5195141D8FD57C67F565441DC3599C0E5195141E705F3667F565441DACC00F3DD195141908A9CE47F5654413D26B7F4D8195141FB3B9B7380565441F288C0F1D4195141DA0B9AF580565441C032C23BD4195141A12D465580565441582A7B62D4195141627003E07F5654416D3168E8DC195141D81EC96C6D565441BCAA1AE9DD19514130E26FEC6C565441D08F711CDE19514193DBDBD46F5654416CCCCA9CDE1951416C629CA372565441D02AD4D0DF195141EC25B6F2755654415938E29EE119514162E9CF417956544101109ED3E3195141933337907B565441D9965EA2E6195141CF7D9EDE7D565441AAF53849101A5141C9DDAF0A3256544133CD28CA121A5141BBD8CD5A32565441555206C5201A5141B55265E81A56544124BC1AFD1D1A514185BC79201856544198DAB5A21B1A5141A680518F1556544181343ACF1A1A5141B26F154314565441AE764FDE191A514170F901A51256544173BC901A191A5141B9D3B3CA105654418A5D1BA2181A514136ACCFD90E5654415C56C347181A514137DE9E1D0D565441D6FC0F13181A51413AB8B70E07565441D7570971181A51410CB5AFB1FC555441C007C23D151A51411289817EFD5554419AF5910E121A5141623FF789FD555441B8CEEA50101A514175A7EE3B00565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21577 - 3506337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000713D0AC70A1A51418FC2F588E9555441713D0A870A1A514185EB51F8E955544114AE47B1061A5141295C8FA2F055544185EB5178011A514114AE4751FA555441AE47E14AFC195141AE47E1BA055654415C8FC2E5F41951411F85EBF114565441B81E858BE9195141000000302A565441E17A144EE7195141000000602E5654418FC2F5A8DE195141713D0A873E565441B81E851BD71951413D0AD7734C56544152B81EE5CF19514152B81EF55A565441000000B0CF1951419A9999695B565441AE47E15ACB195141666666E664565441A4703D7AC819514185EB51C86B565441713D0A27C5195141333333737456544100000060C2195141C3F5281C7D565441EC51B81ECC195141B81E85AB7E5654419A999989D21951415C8FC2857D56544148E17A74EC1951419A9999994A56544185EB5138E7195141EC51B8FE455654410AD7A3C0F1195141E17A141E345654411F85EB01181A5141D7A3702DF3555441666666B6161A5141295C8F92F055544133333363141A5141C3F5287CEE555441CDCCCC1C0B1A5141295C8FF2E8555441713D0AC70A1A51418FC2F588E9555441
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000B8CEEA50101A514175A7EE3B0056544153BB7E120D1A514185CA9EBD05565441226B9EBA0C1A5141436E665306565441EFEDD70E0B1A5141C2B6F72809565441717BA0E6FB1951416423DAE322565441207FFEC0FB195141FC5DBC2323565441C1F089ACFB1951413BA199462356544188B2945FFB195141B6AC19C9235654411AE57AFBF7195141BDF8BF8A29565441A2713650F71951418A607CAD2A565441B0257B1FF4195141AAF4EE1730565441934922C2F3195141E33565B630565441BCA6A2C3F219514199116666325654413BFB60B0F0195141A9638FEF35565441E66B9E1AEF19514183DEA39D38565441249FD1ADED19514136FD28093B565441E4E6B2A8EB195141F6C9F5753E565441830AF789EB195141983C2FAA3E5654411A998B3EE719514151B961FE45565441F3AE4D99EA195141427870F34856544126D2D355EB195141830BA39949565441A6DCDB64EC195141D9A099864A565441B0B37F75EC195141E3773D974A5654412630F8E8EA195141639E62A24D5654415C24BD3FEA195141A56D66F34E565441E4AA0216E8195141A095EF2E53565441AD173A84E619514148A96744565654418D4AA772E61951417468EF6656565441CB6C8433E6195141E302FEE256565441D4A16BE8E4195141F284877359565441A703BEAAE4195141D3ADC2E659565441756F0BC0E01951412EF9F89861565441D3F04DC5DC1951418ED6956A695654416C4FA764DB195141A694781F6C5654415FF20D1EDA19514195992BA16E565441D70E968CD9195141863DFCBE6F565441C8CA71CDD41951415E707C1279565441FE614BB7D41951412D84A33E795654418B444666D2195141B5D67CEA7D565441ECFB60F5D119514197C2F9EF7E565441B40FDAE4D1195141E04779EF7E5654414BB7EB04CC195141FCE3CDC17E56544192E9700ACA195141CDACA2B17E565441CB381B37C0195141210D56617E5654414320A3BEB719514196311C1C7E56544122FA0D3EB7195141F28D4A277E565441D1F3F825B7195141F28D4A277E565441D1CB738DB619514100CB15107F565441F992B6B4B5195141E5C80E087F565441D3F17BF1B4195141C35E4B337F5654410282357AB319514122723AA2825654415DF3D1AAB219514156EA029084565441A1E2CDBDB119514125148DE0865654410D34FE8FB0195141461680F5895654418FCF1826B01951411E1AD4218B565441EE0BA2E1B719514142BFE18D8A56544118976CE6BC1951410735EC2C8A56544150000591C3195141B59D21AC895654413756DEF0C9195141C216FB3089565441F0F0456FCF195141F608D8C688565441695E67CCD21951415D69DB8588565441E68C5121D4195141D3976D6B885654416C07467AD61951414DF2C63E885654417D5812CADB1951412A4F28D887565441C809747FE1195141D820DF69875654418A1DACA1E5195141D8FD57C67F565441DC3599C0E5195141E705F3667F565441DACC00F3DD195141908A9CE47F5654413D26B7F4D8195141FB3B9B7380565441F288C0F1D4195141DA0B9AF580565441C032C23BD4195141A12D465580565441582A7B62D4195141627003E07F5654416D3168E8DC195141D81EC96C6D565441BCAA1AE9DD19514130E26FEC6C565441D08F711CDE19514193DBDBD46F5654416CCCCA9CDE1951416C629CA372565441D02AD4D0DF195141EC25B6F2755654415938E29EE119514162E9CF417956544101109ED3E3195141933337907B565441D9965EA2E6195141CF7D9EDE7D565441AAF53849101A5141C9DDAF0A3256544133CD28CA121A5141BBD8CD5A32565441555206C5201A5141B55265E81A56544124BC1AFD1D1A514185BC79201856544198DAB5A21B1A5141A680518F1556544181343ACF1A1A5141B26F154314565441AE764FDE191A514170F901A51256544173BC901A191A5141B9D3B3CA105654418A5D1BA2181A514136ACCFD90E5654415C56C347181A514137DE9E1D0D565441D6FC0F13181A51413AB8B70E07565441D7570971181A51410CB5AFB1FC555441C007C23D151A51411289817EFD5554419AF5910E121A5141623FF789FD555441B8CEEA50101A514175A7EE3B00565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21995 - 3023426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E9570215141F6285C1FDA5054418FC2F5086621514114AE4751DE505441D7A3703D5B215141333333B3E2505441CDCCCC3C58215141F6285C5FE45054413D0AD73356215141D7A370FDE55054419A999989542151419A9999F9E8505441333333A351215141AE47E19AF850544185EB5128502151411F85EB51025154415C8FC2F54F2151410AD7A3F002515441C3F528BC4F2151413D0AD7F30451544114AE47A150215141295C8F820651544114AE473152215141EC51B85E07515441C3F5285C79215141EC51B8BE0E515441C3F5281C892151415C8FC2C50F515441713D0A578F2151415C8FC2950F515441333333F394215141D7A370DD0E515441CDCCCCBC9A21514148E17A640D5154415C8FC205A0215141000000E00A5154411F85EBA1A0215141713D0A2709515441CDCCCC8CA02151416666669606515441E17A143E9D21514185EB5168FD505441A4703D2A992151417B14AE87F7505441CDCCCC4C912151415C8FC2D5EE5054419A9999D98F215141E17A142EED5054411F85EBF18D215141EC51B87EE9505441000000D089215141295C8F52DE505441B81E85BB88215141D7A3708DDB5054410AD7A3C085215141C3F5288CD9505441D7A370CD812151418FC2F528D9505441EC51B89E7E215141C3F5284CD9505441EC51B81E7D215141EC51B84ED950544114AE47717B215141F6285C3FD950544148E17AB479215141713D0A17D9505441D7A3701D782151413D0AD7D3D850544114AE475176215141B81E85ABD8505441E17A149E74215141AE47E1EAD850544152B81E9570215141F6285C1FDA505441
+</a>
+
+<b>
+0106000000010000000103000000020000004000000014AE47814F215141F6285CFF06515441C72EE1854F215141A39FBB98075154418AE5BF2A54215141F62B808B08515441447CE4A05C2151416EB6F3420A515441CBC815A1652151417EEB68160C515441028A81206821514173EC49970C5154411B3E07A7712151412FEAC4670E515441C6DE8A71772151412B2127820F515441F27057DA79215141C56DA3F70F515441AA8189D27D215141F3E10961105154413D646707832151415CA94DE7105154419A9999F9882151410AD7A38011515441C3F5281C892151415C8FC2C50F5154410DD2C89A8A21514114923EBA0F515441D9D216178D215141001018A70F51544188FEAD278F2151417D742F970F515441EF2B272B91215141466BAE590F5154412FF016C59221514149B311250F515441ED07BB4197215141485431470E5154411725932598215141660B390D0E51544183E75E0C99215141B18080D20D51544162618FF69921514174EFEA960D515441AFC6550D9B2151417F051E3E0D515441E8C378949C2151413CCFCC830C515441E9D4D5F09D215141B392DBDD0B515441B2A53CB79E2151413676597F0B515441C621B4F59F215141E11279240A5154413AA731B1A0215141D491C2B7085154414EDD76F3A0215141CB6DE651075154414EDD76F3A0215141F23EC9DE05515441DBBCB3CBA021514104DA6629045154415466AB61A02151414CF3F7D4015154419E1AE404A0215141BC78130500515441D398D7659F215141E9D22A00FE505441678A7D1A9E21514116B67669FB505441BBEAA1729B215141BC363018F85054410BC695709821514192EBC1D3F4505441604F6E3995215141E51D28B7F15054413AB24A0A922151415251F6ACEE505441620C6205902151414F3F8323EC505441E550F7E58D21514124D3EEF1E750544111AB0EE18B21514111F08E2EE3505441468E5A4A8921514123DE11F8DC50544165D6086988215141A399726ADB5054414A01AA9587215141C4147B88DA5054416767218C86215141D3238099D950544101A2DF8F85215141D9D16464D9505441D5FFFE65822151415D54903CD95054411A7F29CE7F2151415AFD1D57D95054411A4D6EFB7A2151415D54903CD95054412BA4AA037721514165D3C63DD9505441E0C5968373215141D0CC0DB4D950544140E5124C6C215141E73B4231DC50544103962804672151418CEC6B43DE5054411C3C14BD5921514150AE5881E35054419B5CA2CF562151412E4AB0D6E450544104E34203552151410C1425A9E55054419A999989542151419A9999F9E8505441333333A351215141AE47E19AF850544109D5E54951215141233C588AF8505441BE65C515502151417F4ECC4B0251544185EB5128502151411F85EB5102515441A312D008502151417E27D4B40251544114AE47814F215141F6285CFF0651544133000000EC44C1EB70215141EE0ACD27DB5054417B55712C7521514188458B2BDA505441BB58729C772151410BC8B603DA505441136B781D792151410E1F29E9D9505441E24C6EFB7A2151418DF36FF6D950544127FE53367D2151418DF36FF6D95054418267CC9C7E2151410E1F29E9D9505441DCD04403802151410E1F29E9D950544138912F4F81215141121F29E9D950544190A335D08221514190F36FF6D9505441DD5972BB842151418E9CFD10DA505441C2F3FAC48521514101157B88DA505441A68D83CE86215141E8057677DB5054410FAA37B087215141C59AA7D0DC505441EC3E690989215141F493FADFDF505441F5757B8C8D21514160C20932EA505441C357716A8F215141845F93ABED50544116BC922091215141CFBE5DB1EF505441A4703D2A992151417B14AE87F750544172DB9C619C21514117829E5CFB5054415ACC97509D2151417899FB8DFC50544149C2E9EF9D2151414CD7BA01FE505441BAE3F4819E215141A4E9C082FF5054412E5C72F99E2151417BD00D1101515441A782D43B9F21514152B75A9F025154412300A9639F215141264735480451544120A9367E9F215141C26193E90751544128AE8D2E9F2151411CCB0B5009515441C2E84B329E215141F95F3DA90A515441677FD3CB9C2151415CCE0CC00B515441252560769A215141B98EF70B0D515441EECF43D197215141A42DD7C50D515441BB280CF7942151410A4FE2570E515441A2E74B1391215141FFF218C20E51544177BC3D3189215141F74434F70E5154419D4CC3EA82215141FA9BA6DC0E51544177260CB97A2151410DFDC6220E5154410DC641946B215141557CF18A0B515441FF797E415321514163F3C3D206515441208EDA025221514170A6FF4D065154413CF451F95021514113E6140205515441BE767DD15021514134A3FEDD035154413AF451F950215141711DD2950151544111842CA2522151415CAA56DFF85054414882D66155215141EE498CBAE9505441BEFA53D95521514128167BA7E7505441A294DCE256215141CA55905BE6505441F74F707E5821514172438ADAE45054412549C38D5B2151419805CB66E350544186C49664662151410C4C8D0BDF505441EC44C1EB70215141EE0ACD27DB505441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22088 - 1020025
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441333333B37621514185EB51F8CC5054410AD7A30077215141B81E858BCB5054417B14AE377721514152B81E05CA505441F6285C5F772151411F85EB11C8505441295C8F72772151410AD7A3A0C65054419A9999E977215141A4703DDABF505441666666E6772151417B14AE27BE50544152B81EB577215141F6285CBFBC505441EC51B85E7721514114AE47E1BA505441F6285C0F7721514133333323B95054413D0AD7C37621514185EB51C8B75054410AD7A34076215141CDCCCC8CB6505441F6285C5F7521514148E17A74B5505441000000407421514100000030B4505441AE47E18A7321514133333353B35054413D0AD76372215141C3F5282CB05054413333332372215141D7A3700DAF50544148E17A64712151415C8FC2B5AE505441F6285C9F5E21514152B81E15B1505441333333135C2151419A999969B150544166666606592151410AD7A340B1505441295C8F9250215141A4703D8AAF505441000000703E2151410AD7A390AA5054417B14AE47392151411F85EB81A4505441000000E031215141F6285CAF9F5054413D0AD7233021514152B81E659E5054411F85EBA12C2151410AD7A360A450544114AE47B12B215141A4703D3AA6505441713D0A272421514148E17A54B75054413D0AD76332215141B81E85FBBB505441333333235A215141A4703D5AC65054415C8FC2C554215141F6285CAFE3505441713D0A9755215141C3F5286CE3505441
+</a>
+
+<b>
+010600000001000000010300000001000000270000005A9C793C2C215141E4D44A28A550544114AE47B12B215141A4703D3AA6505441713D0A272421514148E17A54B75054413D0AD76332215141B81E85FBBB505441333333235A215141A4703D5AC65054415C8FC2C554215141F6285CAFE3505441713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441333333B37621514185EB51F8CC5054410AD7A30077215141B81E858BCB5054417B14AE377721514152B81E05CA505441F6285C5F772151411F85EB11C8505441295C8F72772151410AD7A3A0C65054419A9999E977215141A4703DDABF505441666666E6772151417B14AE27BE50544152B81EB577215141F6285CBFBC505441EC51B85E7721514114AE47E1BA505441F6285C0F7721514133333323B95054413D0AD7C37621514185EB51C8B75054410AD7A34076215141CDCCCC8CB6505441F6285C5F7521514148E17A74B5505441000000407421514100000030B4505441AE47E18A7321514133333353B35054413D0AD76372215141C3F5282CB05054413333332372215141D7A3700DAF50544148E17A64712151415C8FC2B5AE505441F6285C9F5E21514152B81E15B1505441333333135C2151419A999969B150544166666606592151410AD7A340B1505441295C8F9250215141A4703D8AAF505441000000703E2151410AD7A390AA50544155FF17552C215141C632D7F7A45054415A9C793C2C215141E4D44A28A5505441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22088 - 3623011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441333333B37621514185EB51F8CC5054410AD7A30077215141B81E858BCB5054417B14AE377721514152B81E05CA505441F6285C5F772151411F85EB11C8505441295C8F72772151410AD7A3A0C65054419A9999E977215141A4703DDABF505441666666E6772151417B14AE27BE50544152B81EB577215141F6285CBFBC505441EC51B85E7721514114AE47E1BA505441F6285C0F7721514133333323B95054413D0AD7C37621514185EB51C8B75054410AD7A34076215141CDCCCC8CB6505441F6285C5F7521514148E17A74B5505441000000407421514100000030B4505441AE47E18A7321514133333353B35054413D0AD76372215141C3F5282CB05054413333332372215141D7A3700DAF50544148E17A64712151415C8FC2B5AE505441F6285C9F5E21514152B81E15B1505441333333135C2151419A999969B150544166666606592151410AD7A340B1505441295C8F9250215141A4703D8AAF505441000000703E2151410AD7A390AA5054417B14AE47392151411F85EB81A4505441000000E031215141F6285CAF9F5054413D0AD7233021514152B81E659E5054411F85EBA12C2151410AD7A360A450544114AE47B12B215141A4703D3AA6505441713D0A272421514148E17A54B75054413D0AD76332215141B81E85FBBB505441333333235A215141A4703D5AC65054415C8FC2C554215141F6285CAFE3505441713D0A9755215141C3F5286CE3505441
+</a>
+
+<b>
+010600000001000000010300000001000000270000005A9C793C2C215141E4D44A28A550544114AE47B12B215141A4703D3AA6505441713D0A272421514148E17A54B75054413D0AD76332215141B81E85FBBB505441333333235A215141A4703D5AC65054415C8FC2C554215141F6285CAFE3505441713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441333333B37621514185EB51F8CC5054410AD7A30077215141B81E858BCB5054417B14AE377721514152B81E05CA505441F6285C5F772151411F85EB11C8505441295C8F72772151410AD7A3A0C65054419A9999E977215141A4703DDABF505441666666E6772151417B14AE27BE50544152B81EB577215141F6285CBFBC505441EC51B85E7721514114AE47E1BA505441F6285C0F7721514133333323B95054413D0AD7C37621514185EB51C8B75054410AD7A34076215141CDCCCC8CB6505441F6285C5F7521514148E17A74B5505441000000407421514100000030B4505441AE47E18A7321514133333353B35054413D0AD76372215141C3F5282CB05054413333332372215141D7A3700DAF50544148E17A64712151415C8FC2B5AE505441F6285C9F5E21514152B81E15B1505441333333135C2151419A999969B150544166666606592151410AD7A340B1505441295C8F9250215141A4703D8AAF505441000000703E2151410AD7A390AA50544155FF17552C215141C632D7F7A45054415A9C793C2C215141E4D44A28A5505441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22178 - 2992784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D00000014AE4791062051418FC2F528F75B54413D0AD70309205141295C8F72F75B54411F85EB910820514185EB51D8FD5B5441333333E3072051411F85EB41035C544148E17A1407205141C3F528CC075C54411F85EB910C20514166666636085C54417B14AE07192051419A9999D90A5C5441A4703DDA23205141713D0A370C5C544148E17A04272051410AD7A3400C5C5441333333C327205141333333430C5C5441D7A370AD2520514148E17AB4085C5441EC51B82E23205141EC51B88E055C5441713D0A6720205141295C8F72025C54410AD7A3801F2051413D0AD723015C544185EB51F81E205141E17A141E005C54413D0AD7D31E2051411F85EB31FF5B54419A9999B91E2051411F85EB21FD5B544148E17A441F20514152B81EF5F35B54417B14AE971E2051419A999989ED5B5441D7A3700D1D205141000000E0E55B54410AD7A3F01C20514152B81E15E25B5441AE47E16A1D2051419A999909DF5B54413333339312205141AE47E11ADF5B54419A9999A90C20514152B81ED5DE5B54418FC2F5A805205141D7A3703DDE5B5441EC51B8BEFA1F51415C8FC225DC5B544152B81ED5F31F514133333383DA5B5441E17A147EEA1F514152B81EF5D75B5441713D0AC7E61F51419A9999D9E25B5441295C8F32EB1F51411F85EBC1E45B5441B81E857BE71F514100000080EF5B5441F6285C6FF21F5141EC51B87EFB5B5441E17A14EEF41F514152B81EA5FE5B544166666686F61F5141D7A3704D015C5441F6285CFFF71F51413D0AD773045C5441F6285C0FF91F51419A999999075C5441F6285C1FFA1F51417B14AE670B5C54415C8FC2A5FB1F51411F85EBF1135C54419A999969FC1F5141666666A6165C5441A4703DFAFC1F514114AE47B1165C544166666656FE1F5141F6285C9F075C54419A999979FF1F514185EB51D8FC5B5441295C8FE2FF1F5141B81E855BF65B5441713D0A5703205141333333E3F65B544114AE4791062051418FC2F528F75B5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000048E17A1407205141C3F528CC075C54418BAF9B5B092051417A643DF8075C5441286986FD0B20514151BA2E2B085C544195AD86ED0C205141BA7ACA49085C544141065F631220514117E0AE71095C54418BF9117917205141252C39850A5C5441FCBF6B05192051413D2E1FD90A5C5441D2FEF1311B205141ACE0811F0B5C544179903FC91E205141199974930B5C5441D915C1E721205141F2FC2AF80B5C5441A4703DDA23205141713D0A370C5C5441482B566324205141FA13AA380C5C54412A6DD05D262051413450AA3E0C5C5441333333C327205141333333430C5C54414D37262D27205141309F2D430B5C54415700B3372620514181FA61A0095C5441FC3501E725205141E6EEB216095C5441736CBB272520514149EFCD0B085C54415A998C0125205141A9C4A2DB075C54417B64470F24205141399601AA065C544120B50F9723205141D8595912065C5441B8C88F192320514160D00C77055C54414C79F088222051417DA642D5045C5441D207B22B222051414DAAF26C045C5441E638B0722120514195C5FA9D035C5441EB470FED202051418F0E7D08035C5441010123971F2051414BD38544015C5441845059611F205141A553C1E7005C5441ADE25BF81E205141949D271E005C5441814A2AEA1E2051411B4072C2FF5B54412F3237D91E205141D351B854FF5B54412536E8CE1E2051415FF2A8CEFE5B544118E873BF1E205141685FB097FD5B5441E01AE4C81E2051411FAE4F1FFC5B5441D73206E51E205141CAAF8243FA5B54417210DBEE1E2051416E573C9DF95B5441AE47E11A1F205141AE47E16AF85B544141E770E41C2051415D8B07BFF85B54413D0AD7931A2051417B14AED7F85B544148E17AE4152051418FC2F5A8F85B544152B81EB50E205141D7A3701DF85B54413D0AD70309205141295C8F72F75B544120618AB6082051413026D9C9FB5B54415CE026830820514172F26F4DFE5B54411B16F749082051418761F312005C54418BE3D417082051410FBD87A0015C5441F962BDE0072051419F83C04F035C54417FE2C4A307205141D50D8CA6045C54411264C668072051416BAB3AF2055C5441C43A784907205141F59D3CA2065C544148E17A1407205141C3F528CC075C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22178 - 3768912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D00000014AE4791062051418FC2F528F75B54413D0AD70309205141295C8F72F75B54411F85EB910820514185EB51D8FD5B5441333333E3072051411F85EB41035C544148E17A1407205141C3F528CC075C54411F85EB910C20514166666636085C54417B14AE07192051419A9999D90A5C5441A4703DDA23205141713D0A370C5C544148E17A04272051410AD7A3400C5C5441333333C327205141333333430C5C5441D7A370AD2520514148E17AB4085C5441EC51B82E23205141EC51B88E055C5441713D0A6720205141295C8F72025C54410AD7A3801F2051413D0AD723015C544185EB51F81E205141E17A141E005C54413D0AD7D31E2051411F85EB31FF5B54419A9999B91E2051411F85EB21FD5B544148E17A441F20514152B81EF5F35B54417B14AE971E2051419A999989ED5B5441D7A3700D1D205141000000E0E55B54410AD7A3F01C20514152B81E15E25B5441AE47E16A1D2051419A999909DF5B54413333339312205141AE47E11ADF5B54419A9999A90C20514152B81ED5DE5B54418FC2F5A805205141D7A3703DDE5B5441EC51B8BEFA1F51415C8FC225DC5B544152B81ED5F31F514133333383DA5B5441E17A147EEA1F514152B81EF5D75B5441713D0AC7E61F51419A9999D9E25B5441295C8F32EB1F51411F85EBC1E45B5441B81E857BE71F514100000080EF5B5441F6285C6FF21F5141EC51B87EFB5B5441E17A14EEF41F514152B81EA5FE5B544166666686F61F5141D7A3704D015C5441F6285CFFF71F51413D0AD773045C5441F6285C0FF91F51419A999999075C5441F6285C1FFA1F51417B14AE670B5C54415C8FC2A5FB1F51411F85EBF1135C54419A999969FC1F5141666666A6165C5441A4703DFAFC1F514114AE47B1165C544166666656FE1F5141F6285C9F075C54419A999979FF1F514185EB51D8FC5B5441295C8FE2FF1F5141B81E855BF65B5441713D0A5703205141333333E3F65B544114AE4791062051418FC2F528F75B5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000048E17A1407205141C3F528CC075C54418BAF9B5B092051417A643DF8075C5441286986FD0B20514151BA2E2B085C544195AD86ED0C205141BA7ACA49085C544141065F631220514117E0AE71095C54418BF9117917205141252C39850A5C5441FCBF6B05192051413D2E1FD90A5C5441D2FEF1311B205141ACE0811F0B5C544179903FC91E205141199974930B5C5441D915C1E721205141F2FC2AF80B5C5441A4703DDA23205141713D0A370C5C5441482B566324205141FA13AA380C5C54412A6DD05D262051413450AA3E0C5C5441333333C327205141333333430C5C54414D37262D27205141309F2D430B5C54415700B3372620514181FA61A0095C5441FC3501E725205141E6EEB216095C5441736CBB272520514149EFCD0B085C54415A998C0125205141A9C4A2DB075C54417B64470F24205141399601AA065C544120B50F9723205141D8595912065C5441B8C88F192320514160D00C77055C54414C79F088222051417DA642D5045C5441D207B22B222051414DAAF26C045C5441E638B0722120514195C5FA9D035C5441EB470FED202051418F0E7D08035C5441010123971F2051414BD38544015C5441845059611F205141A553C1E7005C5441ADE25BF81E205141949D271E005C5441814A2AEA1E2051411B4072C2FF5B54412F3237D91E205141D351B854FF5B54412536E8CE1E2051415FF2A8CEFE5B544118E873BF1E205141685FB097FD5B5441E01AE4C81E2051411FAE4F1FFC5B5441D73206E51E205141CAAF8243FA5B54417210DBEE1E2051416E573C9DF95B5441AE47E11A1F205141AE47E16AF85B544141E770E41C2051415D8B07BFF85B54413D0AD7931A2051417B14AED7F85B544148E17AE4152051418FC2F5A8F85B544152B81EB50E205141D7A3701DF85B54413D0AD70309205141295C8F72F75B544120618AB6082051413026D9C9FB5B54415CE026830820514172F26F4DFE5B54411B16F749082051418761F312005C54418BE3D417082051410FBD87A0015C5441F962BDE0072051419F83C04F035C54417FE2C4A307205141D50D8CA6045C54411264C668072051416BAB3AF2055C5441C43A784907205141F59D3CA2065C544148E17A1407205141C3F528CC075C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22180 - 2992973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000666666A626205141B81E855B665C5441F6285CCF262051419A999989655C5441EC51B81E2720514114AE4781635C5441713D0A472620514100000010625C5441F6285C7F2A205141295C8FF25D5C54415C8FC2852D205141EC51B85E5B5C5441713D0A573020514152B81E25585C5441000000C031205141B81E855B555C544148E17A14FD1F5141333333E3425C5441B81E858BFC1F5141B81E85FB445C5441D7A370FDFB1F51417B14AE87465C5441CDCCCC6CFA1F51415C8FC2E54A5C544148E17A74F91F5141AE47E19A4D5C5441333333D3F71F514133333393525C5441AE47E12A02205141EC51B8CE565C5441A4703D6A16205141B81E85EB5F5C5441F6285C5F26205141A4703D0A675C5441666666A626205141B81E855B665C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000009A99996906205141C3F528FC4F5C5441A4703D6A15205141EC51B8CE575C54417B14AE97252051417B14AE775F5C5441D988FFD4272051412A91F18B605C5441AD373E1229205141EBA097565F5C5441F6285C7F2A205141295C8FF25D5C5441365A3D8C2B205141DCED740D5D5C5441D5F1F6C72C205141412E70005C5C544135A581C22D205141C10D30195B5C54416C55C6692E2051413622BA595A5C5441C66BF8702F205141DA08772C595C54410833473A30205141B3B00A46585C5441F6D37FB030205141E56A4374575C544133488721312051411D76CF94565C5441000000C031205141B81E855B555C5441FADB44FD2B20514102C35E56535C544164E84D6824205141466CB9AD505C5441CE51E8FD1C205141978101144E5C5441D94F3379122051416D56BE634A5C544111366A0E08205141853592BC465C5441C71DA62C022051410BC389AC445C544148E17A14FD1F5141333333E3425C5441E7133294FC1F51413A198CD9445C5441D7A370FDFB1F51417B14AE87465C5441CDCCCC6CFA1F51415C8FC2E54A5C544152B81ED5FE1F5141F6285C8F4C5C54419A99996906205141C3F528FC4F5C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22180 - 3773549
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000666666A626205141B81E855B665C5441F6285CCF262051419A999989655C5441EC51B81E2720514114AE4781635C5441713D0A472620514100000010625C5441F6285C7F2A205141295C8FF25D5C54415C8FC2852D205141EC51B85E5B5C5441713D0A573020514152B81E25585C5441000000C031205141B81E855B555C544148E17A14FD1F5141333333E3425C5441B81E858BFC1F5141B81E85FB445C5441D7A370FDFB1F51417B14AE87465C5441CDCCCC6CFA1F51415C8FC2E54A5C544148E17A74F91F5141AE47E19A4D5C5441333333D3F71F514133333393525C5441AE47E12A02205141EC51B8CE565C5441A4703D6A16205141B81E85EB5F5C5441F6285C5F26205141A4703D0A675C5441666666A626205141B81E855B665C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000009A99996906205141C3F528FC4F5C5441A4703D6A15205141EC51B8CE575C54417B14AE97252051417B14AE775F5C5441D988FFD4272051412A91F18B605C5441AD373E1229205141EBA097565F5C5441F6285C7F2A205141295C8FF25D5C5441365A3D8C2B205141DCED740D5D5C5441D5F1F6C72C205141412E70005C5C544135A581C22D205141C10D30195B5C54416C55C6692E2051413622BA595A5C5441C66BF8702F205141DA08772C595C54410833473A30205141B3B00A46585C5441F6D37FB030205141E56A4374575C544133488721312051411D76CF94565C5441000000C031205141B81E855B555C5441FADB44FD2B20514102C35E56535C544164E84D6824205141466CB9AD505C5441CE51E8FD1C205141978101144E5C5441D94F3379122051416D56BE634A5C544111366A0E08205141853592BC465C5441C71DA62C022051410BC389AC445C544148E17A14FD1F5141333333E3425C5441E7133294FC1F51413A198CD9445C5441D7A370FDFB1F51417B14AE87465C5441CDCCCC6CFA1F51415C8FC2E54A5C544152B81ED5FE1F5141F6285C8F4C5C54419A99996906205141C3F528FC4F5C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22187 - 3128191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000C3F528DC1C2351411F85EBA1BA5A5441666666661C235141EC51B85EBB5A5441C3F5281C13235141666666E6CA5A5441333333430B235141A4703D0AD85A5441C3F528CC0223514185EB5128E75A544152B81EF5FF225141AE47E12AEC5A544133333313042351417B14AE07F05A54413D0AD7E324235141F6285CAFB95A5441D7A3702D20235141B81E857BBA5A5441C3F528DC1C2351411F85EBA1BA5A5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CC9BEC6404235141D0103D54F05A54418FC2F52807235141B81E85EBF25A5441A806CDE30A2351416BBBDDBBEC5A5441BAC1D8AD0E235141EE20F8E1E65A5441A5D5670D1423514199264A29DF5A544137C53D2B17235141E2CBB5C3DA5A54414D5516C118235141EEC50DB4D85A5441685A30F91A235141E86558D7D55A54416CD9A19F1B23514151D8AC00D55A5441F7A7088C20235141F1E6BBACCD5A54414B16ED0126235141078A7F57C45A5441CDCCCC0C2D235141E17A144EB85A54413D0AD7E324235141F6285CAFB95A54417D9427691C23514197BD3CBAC75A54411E851E4615235141FEB4FE8BD35A5441453F3E630C23514161326C43E25A54417F605B79082351417A17A6BEE85A544167FB557D04235141448BDB26F05A5441A3D2878B04235141B1FD062BF05A5441CC9BEC6404235141D0103D54F05A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22187 - 3511705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000C3F528DC1C2351411F85EBA1BA5A5441666666661C235141EC51B85EBB5A5441C3F5281C13235141666666E6CA5A5441333333430B235141A4703D0AD85A5441C3F528CC0223514185EB5128E75A544152B81EF5FF225141AE47E12AEC5A544133333313042351417B14AE07F05A54413D0AD7E324235141F6285CAFB95A5441D7A3702D20235141B81E857BBA5A5441C3F528DC1C2351411F85EBA1BA5A5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CC9BEC6404235141D0103D54F05A54418FC2F52807235141B81E85EBF25A5441A806CDE30A2351416BBBDDBBEC5A5441BAC1D8AD0E235141EE20F8E1E65A5441A5D5670D1423514199264A29DF5A544137C53D2B17235141E2CBB5C3DA5A54414D5516C118235141EEC50DB4D85A5441685A30F91A235141E86558D7D55A54416CD9A19F1B23514151D8AC00D55A5441F7A7088C20235141F1E6BBACCD5A54414B16ED0126235141078A7F57C45A5441CDCCCC0C2D235141E17A144EB85A54413D0AD7E324235141F6285CAFB95A54417D9427691C23514197BD3CBAC75A54411E851E4615235141FEB4FE8BD35A5441453F3E630C23514161326C43E25A54417F605B79082351417A17A6BEE85A544167FB557D04235141448BDB26F05A5441A3D2878B04235141B1FD062BF05A5441CC9BEC6404235141D0103D54F05A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291021 - 256558
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000014AE47D1AABB5041F6285C9F19D1544148E17A54B9BB5041713D0AF718D154411F85EB41B7BB5041E17A144E01D154417B14AE27B5BB5041F6285C4FE9D0544185EB5188ACBB5041666666E6E7D05441295C8FE29FBB5041EC51B8DEE3D054415C8FC245A2BB50413D0AD7E3FED0544185EB51A8A4BB504152B81EE519D1544114AE47D1AABB5041F6285C9F19D15441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000BA6BC372A1BB5041A4B8EE8FF5D05441295C8FE29FBB5041EC51B8DEE3D05441906CC9569DBB5041CF6DE90EE3D054410041F3499FBB5041553DAE07FAD054413AAD80AA9FBB5041EF5F3079FED0544186FD62EE9FBB504129A2F29801D15441BA2A377BA0BB50410457161408D1544115FE6B11A1BB50412DB1B4FD0ED1544181DC93F1A1BB50410CAA74121AD15441C9BF60B6A4BB5041D8D66C871AD1544185EB51A8A4BB504152B81EE519D154415728B192A4BB50419EC83AF018D15441E6508E5EA4BB5041CA7BE6A116D1544139A43B35A4BB5041D3B901CE14D15441C025B6A1A3BB50417DA8A4470ED15441613CE065A3BB5041D13922A20BD15441BA6BC372A1BB5041A4B8EE8FF5D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242552 - 3178706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000012000000000000E0D01651418FC2F548DB185541295C8FC2DE165141C3F5289CD818554114AE4731EB165141000000A0D5185541F6158031E716514102F96000C4185541B197514EC8165141AAA67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541D1EC4788BC1651411F33D1B0D31855412C6B293EBD1651412CABD536D41855418A226D9BBC1651418E65B92FD5185541E09DAEB5BB165141AB8E24E3D418554100000080BA165141713D0AA7D6185541D7A370CDB9165141EC51B85ED8185541E17A147EB9165141AE47E11ADB185541C3F5283CBF165141D7A3704DDC185541D7A3702DC6165141295C8F52DC18554148E17AF4C9165141B81E856BDC185541000000E0D01651418FC2F548DB18554105000000B35B4004C41651415D4D1F3CD7185541D4EF2351C61651418540AAF1D61855418974E7AFC6165141B5214CFDDA185541EC95F047C416514110E4AD2CDB185541B35B4004C41651415D4D1F3CD718554106000000EFF4B5C8B91651410097EF6DD91855418EC77ACFB91651417970908ED8185541895CA105BA1651412984E1F2D71855415F7548B1BC165141B7151A9CD818554164E0217BBC165141720B50F5D9185541EFF4B5C8B91651410097EF6DD9185541
+</a>
+
+<b>
+01060000000100000001030000000300000018000000D61D05C9B91651413551BB63D9185541E17A147EB9165141AE47E11ADB185541C3F5283CBF165141D7A3704DDC185541D7A3702DC6165141295C8F52DC18554148E17AF4C9165141B81E856BDC185541000000E0D01651418FC2F548DB185541ED304392CF165141C83B4BECD8185541C025DDEFCD165141B167747BD51855419DDB23F8CA165141EBE4AB2BCE1855411A0E5153CA165141A76984AECC185541B0755E5ECA165141CCA8E7A7CC185541AD97514EC8165141A6A67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541D4EC4788BC1651412333D1B0D3185541296B293EBD1651412DABD536D41855418D226D9BBC1651419265B92FD5185541E39DAEB5BB165141AB8E24E3D418554100000080BA165141713D0AA7D6185541BD25A303BA165141D856EAFBD71855415A7548B1BC165141B6151A9CD818554165E0217BBC165141710B50F5D9185541EFF4B5C8B9165141FC96EF6DD9185541D61D05C9B91651413551BB63D918554105000000398965F0BD165141116EEEE1DB185541F63CA7E9BD1651415EA91939DA18554124653E7FC31651411EC4EEE7D8185541CB5FADC2C3165141013DF5C6DB185541398965F0BD165141116EEEE1DB18554105000000B05B4004C4165141584D1F3CD7185541E87B5228C61651410A516902D7185541E2F3788DC616514142686DE8DA185541EA95F047C416514114E4AD2CDB185541B05B4004C4165141584D1F3CD7185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242552 - 3578665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000012000000000000E0D01651418FC2F548DB185541295C8FC2DE165141C3F5289CD818554114AE4731EB165141000000A0D5185541F6158031E716514102F96000C4185541B197514EC8165141AAA67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541D1EC4788BC1651411F33D1B0D31855412C6B293EBD1651412CABD536D41855418A226D9BBC1651418E65B92FD5185541E09DAEB5BB165141AB8E24E3D418554100000080BA165141713D0AA7D6185541D7A370CDB9165141EC51B85ED8185541E17A147EB9165141AE47E11ADB185541C3F5283CBF165141D7A3704DDC185541D7A3702DC6165141295C8F52DC18554148E17AF4C9165141B81E856BDC185541000000E0D01651418FC2F548DB18554105000000B35B4004C41651415D4D1F3CD7185541D4EF2351C61651418540AAF1D61855418974E7AFC6165141B5214CFDDA185541EC95F047C416514110E4AD2CDB185541B35B4004C41651415D4D1F3CD718554106000000EFF4B5C8B91651410097EF6DD91855418EC77ACFB91651417970908ED8185541895CA105BA1651412984E1F2D71855415F7548B1BC165141B7151A9CD818554164E0217BBC165141720B50F5D9185541EFF4B5C8B91651410097EF6DD9185541
+</a>
+
+<b>
+01060000000100000001030000000300000018000000D61D05C9B91651413551BB63D9185541E17A147EB9165141AE47E11ADB185541C3F5283CBF165141D7A3704DDC185541D7A3702DC6165141295C8F52DC18554148E17AF4C9165141B81E856BDC185541000000E0D01651418FC2F548DB185541ED304392CF165141C83B4BECD8185541C025DDEFCD165141B167747BD51855419DDB23F8CA165141EBE4AB2BCE1855411A0E5153CA165141A76984AECC185541B0755E5ECA165141CCA8E7A7CC185541AD97514EC8165141A6A67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541D4EC4788BC1651412333D1B0D3185541296B293EBD1651412DABD536D41855418D226D9BBC1651419265B92FD5185541E39DAEB5BB165141AB8E24E3D418554100000080BA165141713D0AA7D6185541BD25A303BA165141D856EAFBD71855415A7548B1BC165141B6151A9CD818554165E0217BBC165141710B50F5D9185541EFF4B5C8B9165141FC96EF6DD9185541D61D05C9B91651413551BB63D918554105000000398965F0BD165141116EEEE1DB185541F63CA7E9BD1651415EA91939DA18554124653E7FC31651411EC4EEE7D8185541CB5FADC2C3165141013DF5C6DB185541398965F0BD165141116EEEE1DB18554105000000B05B4004C4165141584D1F3CD7185541E87B5228C61651410A516902D7185541E2F3788DC616514142686DE8DA185541EA95F047C416514114E4AD2CDB185541B05B4004C4165141584D1F3CD7185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>24235 - 1755270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000000000004061EB504148E17A5488805441713D0A7762EB50410AD7A32089805441B81E85CB6CEB50415C8FC2F585805441AE47E1BA73EB5041B81E850B848054415C8FC2E56FEB504114AE476146805441AE47E12A6DEB504185EB514846805441295C8F1268EB504114AE470145805441E17A14FE62EB5041D7A3707D43805441C3F5283C5EEB5041CDCCCCCC41805441A4703D1A5DEB504114AE4751438054415C8FC2355EEB5041713D0AD756805441333333E36BEB5041A4703D0A5680544114AE470170EB504114AE47D155805441713D0AD770EB50419A99990968805441000000506DEB50416666666669805441295C8F725FEB5041AE47E10A6A8054410000004061EB504148E17A5488805441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000065AECE735FEB50417230C86C6880544172843F565EEB5041142E2CD6568054418036FAD570EB5041030CAE4654805441911B7E0370EB50418062AB2E46805441C766595F6DEB50417DA3314A468054417FF0E66667EB5041473516CE44805441929382925EEB5041EA8D124342805441D61C451B5DEB5041F3D4366243805441C877472F5DEB5041209C31AB4480544165AECE735FEB50417230C86C68805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>24235 - 3624264
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000000000004061EB504148E17A5488805441713D0A7762EB50410AD7A32089805441B81E85CB6CEB50415C8FC2F585805441AE47E1BA73EB5041B81E850B848054415C8FC2E56FEB504114AE476146805441AE47E12A6DEB504185EB514846805441295C8F1268EB504114AE470145805441E17A14FE62EB5041D7A3707D43805441C3F5283C5EEB5041CDCCCCCC41805441A4703D1A5DEB504114AE4751438054415C8FC2355EEB5041713D0AD756805441333333E36BEB5041A4703D0A5680544114AE470170EB504114AE47D155805441713D0AD770EB50419A99990968805441000000506DEB50416666666669805441295C8F725FEB5041AE47E10A6A8054410000004061EB504148E17A5488805441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000065AECE735FEB50417230C86C6880544172843F565EEB5041142E2CD6568054418036FAD570EB5041030CAE4654805441911B7E0370EB50418062AB2E46805441C766595F6DEB50417DA3314A468054417FF0E66667EB5041473516CE44805441929382925EEB5041EA8D124342805441D61C451B5DEB5041F3D4366243805441C877472F5DEB5041209C31AB4480544165AECE735FEB50417230C86C68805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407047 - 1639901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000007F00000014AE4781B8A450415C8FC255864C554152B81E95B6A45041C3F5288C854C5541AE47E14AB6A45041295C8FE2854C55413D0AD743B6A450410AD7A350864C554148E17A34B6A4504148E17AC4864C5541666666F6B5A4504148E17A44874C5541AE47E14AB5A4504185EB5168874C554152B81EA5B4A45041AE47E15A874C55417B14AED7B3A450417B14AE17874C5541F6285C4FB3A45041B81E85FB864C5541F6285CDFB2A45041A4703D2A874C5541C3F5284CB2A450419A999989874C554185EB51D8B1A450413D0AD793874C55413D0AD713B1A45041A4703D6A874C55417B14AE87B0A45041AE47E11A874C55410AD7A390B0A45041EC51B8DE864C5541EC51B8CEB0A4504185EB5178864C5541000000D0B0A4504133333343864C5541E17A149EB0A4504166666646864C554114AE4731B0A45041AE47E1AA864C5541A4703DBAAFA45041D7A370FD864C554114AE4741AFA450411F85EBE1864C5541EC51B8DEAEA4504185EB5188864C5541295C8F92AEA45041EC51B85E864C55415C8FC235AEA45041713D0A77864C554166666696ADA450418FC2F5A8864C55410AD7A300ADA450418FC2F5A8864C554133333363ACA450410AD7A350864C55413D0AD713ACA4504152B81EC5854C55418FC2F598ABA45041713D0A87854C5541713D0AB7AAA45041713D0A47854C55419A9999A9A9A4504185EB5148854C55417B14AE77A7A45041295C8F62854C55410AD7A3D0A6A4504185EB5188854C554185EB5148A6A450411F85EBF1854C55418FC2F5E8A5A450411F85EBF1854C5541E17A144EA4A45041666666D6844C5541F6285C5FA3A450418FC2F588844C554185EB5138A2A45041D7A3706D844C554100000070A1A4504152B81E05844C55418FC2F5E8A0A45041666666D6834C554185EB51D89FA45041713D0A97834C5541EC51B82E9FA450415C8FC285834C55417B14AE779EA4504114AE4761834C554185EB51789DA45041EC51B8FE824C5541EC51B85E9CA45041295C8FB2824C5541F6285C8F9BA45041000000A0824C55413D0AD7839AA45041B81E853B824C5541B81E857B99A4504185EB5128824C5541D7A3703D99A45041A4703DFA814C55418FC2F5D898A4504152B81E65814C5541333333A398A4504152B81E35814C554148E17AD497A450410AD7A320814C5541C3F5283C97A4504114AE4701814C5541666666D696A45041E17A14AE804C554152B81E8596A45041E17A147E804C5541A4703D0A96A450418FC2F568804C55417B14AE8794A450415C8FC2A5804C5541A4703DEA93A45041A4703D8A804C5541C3F5287C93A4504114AE4741804C55411F85EB3193A45041AE47E1EA7F4C554185EB51F892A45041D7A3705D7F4C5541CDCCCC9C92A45041EC51B83E7F4C55413333334392A45041AE47E13A7F4C55415C8FC2E591A450418FC2F5487F4C554152B81E4591A45041B81E855B7F4C5541666666E690A450410AD7A3307F4C5541C3F5289C90A450417B14AEE77E4C554114AE47D18DA450419A999959864C55410AD7A3D090A450418FC2F518894C55410AD7A39098A45041295C8F628E4C55410AD7A300A3A45041F6285C4F8F4C554166666676ADA45041E17A147E8D4C5541B81E856BB4A4504185EB51488C4C55417B14AEB7BDA45041AE47E18A914C5541D7A3704DC6A45041713D0AE7964C5541E17A141ECDA45041666666D6984C55419A999999D3A450415C8FC2A59E4C5541B81E859BD5A4504185EB51889B4C55415C8FC2E5D5A45041666666169B4C554185EB5108D7A45041A4703D5A994C5541AE47E11AD7A4504133333323994C5541C3F528FCD6A450418FC2F5C8984C5541B81E859BD6A45041AE47E18A984C55418FC2F5F8D5A4504152B81E65984C55419A9999F9D4A4504185EB5138984C55418FC2F548D4A45041F6285CFF974C554185EB51B8D3A45041C3F528AC974C55415C8FC245D3A45041713D0A37974C5541D7A370BDD2A45041C3F528BC964C554133333333D2A450415C8FC265964C5541F6285C8FD1A45041B81E85DB954C5541713D0A37D1A4504166666696954C5541D7A370EDCFA4504114AE4711954C55413D0AD703CFA45041AE47E1BA944C5541000000A0CEA450419A999979944C5541CDCCCC5CCEA45041CDCCCCFC934C5541295C8F42CEA450419A999989934C55410AD7A310CEA45041CDCCCC4C934C55413D0AD7A3CDA45041E17A141E934C554152B81E55CBA45041EC51B89E924C55415C8FC245CAA45041EC51B84E924C5541E17A149EC9A4504114AE4701924C5541A4703DFAC8A45041B81E858B914C5541E17A14AEC8A4504166666616914C5541F6285C8FC8A4504185EB5118904C5541CDCCCC6CC8A450411F85EB518F4C5541713D0A37C8A450410AD7A3008F4C55411F85EBC1C7A45041295C8FC28E4C55413D0AD743C7A4504114AE47918E4C5541D7A370ADC6A450415C8FC2558E4C55418FC2F558C5A450413D0AD7E38D4C554152B81E35C4A45041333333438D4C5541B81E855BC3A45041000000C08C4C554100000080C2A450410AD7A3208C4C5541EC51B8BEC1A450419A9999698B4C5541CDCCCCCCC0A45041AE47E18A8A4C5541F6285CFFBFA45041B81E853B8A4C5541E17A14EEBEA4504185EB51E8894C5541295C8F52BEA4504152B81EA5894C554152B81E95BDA4504114AE4731894C55413D0AD7C3BCA450417B14AE97884C554100000020BCA45041E17A14FE874C55419A9999C9BBA4504185EB51D8874C55417B14AE47BBA450411F85EB81874C5541CDCCCC2CBAA4504148E17AA4864C554114AE4781B8A450415C8FC255864C55410103000000010000003C000000A4703D1AB6A4504185EB5198854C5541713D0AE7B2A45041B81E852B844C55418FC2F568A5A4504133333333804C554114AE4741A2A450417B14AED7804C5541A4703D0A9FA45041295C8F42804C55417B14AE279EA45041713D0AE7824C5541CDCCCCBC9EA450410AD7A320834C5541C3F5281C9FA4504152B81E25834C5541666666E69FA450419A999939834C5541EC51B89EA0A4504114AE4771834C55410AD7A360A1A45041B81E85BB834C5541F6285CFFA1A450411F85EB11844C55413D0AD753A2A45041F6285C2F844C55413D0AD7C3A2A45041B81E852B844C554148E17A74A3A450410AD7A340844C5541EC51B8FEA3A45041C3F5284C844C5541B81E859BA4A45041D7A370AD844C554133333343A5A450411F85EB31854C5541F6285CCFA5A45041D7A3708D854C55415C8FC215A6A45041C3F5288C854C55411F85EB61A6A45041B81E855B854C554114AE47B1A6A45041B81E852B854C5541D7A3707DA7A4504133333313854C55418FC2F588A8A45041A4703D0A854C55419A999999A9A450413D0AD703854C55417B14AE97AAA45041CDCCCCFC844C554114AE4731ABA4504152B81E05854C5541295C8FC2ABA45041EC51B82E854C554114AE4731ACA450418FC2F578854C5541295C8F82ACA450410AD7A3E0854C554185EB51D8ACA4504100000030864C5541D7A3701DADA4504148E17A54864C55415C8FC275ADA450415C8FC255864C554114AE4751AEA45041EC51B81E864C5541000000C0AEA4504185EB5108864C5541AE47E1EAAEA450418FC2F528864C5541B81E854BAFA45041EC51B89E864C55410AD7A390AFA450418FC2F5A8864C55410AD7A3D0AFA450417B14AE97864C554185EB5138B0A45041295C8F52864C554148E17AB4B0A450411F85EBF1854C5541EC51B8FEB0A450418FC2F5E8854C554148E17A34B1A4504148E17A14864C5541E17A144EB1A4504148E17A44864C554100000020B1A4504185EB5178864C55413D0AD7D3B0A45041C3F528BC864C55418FC2F5D8B0A45041666666F6864C55418FC2F518B1A45041CDCCCC1C874C5541000000D0B1A450410AD7A340874C5541C3F5281CB2A45041E17A142E874C55419A999969B2A45041D7A370FD864C554152B81EC5B2A4504185EB51B8864C5541D7A3701DB3A450419A999999864C5541F6285C8FB3A45041AE47E1AA864C554100000070B4A450419A999909874C5541CDCCCC0CB5A4504114AE4731874C55411F85EB91B5A450410AD7A310874C55418FC2F5D8B5A45041D7A370CD864C55413D0AD703B6A45041E17A142E864C5541A4703D1AB6A4504185EB5198854C5541
+</a>
+
+<b>
+010600000001000000010300000001000000BB000000869D5013B6A45041EA849EC6854C5541A4703D1AB6A4504185EB5198854C5541713D0AE7B2A45041B81E852B844C55418FC2F568A5A4504133333333804C554114AE4741A2A450417B14AED7804C5541A4703D0A9FA45041295C8F42804C55417B14AE279EA45041713D0AE7824C5541CDCCCCBC9EA450410AD7A320834C5541C3F5281C9FA4504152B81E25834C5541666666E69FA450419A999939834C5541EC51B89EA0A4504114AE4771834C55410AD7A360A1A45041B81E85BB834C5541F6285CFFA1A450411F85EB11844C55413D0AD753A2A45041F6285C2F844C55413D0AD7C3A2A45041B81E852B844C554148E17A74A3A450410AD7A340844C5541EC51B8FEA3A45041C3F5284C844C5541B81E859BA4A45041D7A370AD844C554133333343A5A450411F85EB31854C5541F6285CCFA5A45041D7A3708D854C55415C8FC215A6A45041C3F5288C854C55411F85EB61A6A45041B81E855B854C554114AE47B1A6A45041B81E852B854C5541D7A3707DA7A4504133333313854C55418FC2F588A8A45041A4703D0A854C55419A999999A9A450413D0AD703854C55417B14AE97AAA45041CDCCCCFC844C554114AE4731ABA4504152B81E05854C5541295C8FC2ABA45041EC51B82E854C554114AE4731ACA450418FC2F578854C5541295C8F82ACA450410AD7A3E0854C554185EB51D8ACA4504100000030864C5541D7A3701DADA4504148E17A54864C55415C8FC275ADA450415C8FC255864C554114AE4751AEA45041EC51B81E864C5541000000C0AEA4504185EB5108864C5541AE47E1EAAEA450418FC2F528864C5541B81E854BAFA45041EC51B89E864C55410AD7A390AFA450418FC2F5A8864C55410AD7A3D0AFA450417B14AE97864C554185EB5138B0A45041295C8F52864C554148E17AB4B0A450411F85EBF1854C5541EC51B8FEB0A450418FC2F5E8854C554148E17A34B1A4504148E17A14864C5541E17A144EB1A4504148E17A44864C554100000020B1A4504185EB5178864C55413D0AD7D3B0A45041C3F528BC864C55418FC2F5D8B0A45041666666F6864C55418FC2F518B1A45041CDCCCC1C874C5541000000D0B1A450410AD7A340874C5541C3F5281CB2A45041E17A142E874C55419A999969B2A45041D7A370FD864C554152B81EC5B2A4504185EB51B8864C5541D7A3701DB3A450419A999999864C5541F6285C8FB3A45041AE47E1AA864C554100000070B4A450419A999909874C5541CDCCCC0CB5A4504114AE4731874C55411F85EB91B5A450410AD7A310874C55418FC2F5D8B5A45041D7A370CD864C55413D0AD703B6A45041E17A142E864C554173768F11B6A45041EA6C59D2854C55413D0AD743B6A450410AD7A350864C554148E17A34B6A4504148E17AC4864C5541666666F6B5A4504148E17A44874C5541AE47E14AB5A4504185EB5168874C554152B81EA5B4A45041AE47E15A874C55417B14AED7B3A450417B14AE17874C5541F6285C4FB3A45041B81E85FB864C5541F6285CDFB2A45041A4703D2A874C5541C3F5284CB2A450419A999989874C554185EB51D8B1A450413D0AD793874C55413D0AD713B1A45041A4703D6A874C55417B14AE87B0A45041AE47E11A874C55410AD7A390B0A45041EC51B8DE864C5541EC51B8CEB0A4504185EB5178864C5541000000D0B0A4504133333343864C5541E17A149EB0A4504166666646864C554114AE4731B0A45041AE47E1AA864C5541A4703DBAAFA45041D7A370FD864C554114AE4741AFA450411F85EBE1864C5541EC51B8DEAEA4504185EB5188864C5541295C8F92AEA45041EC51B85E864C55415C8FC235AEA45041713D0A77864C554166666696ADA450418FC2F5A8864C55410AD7A300ADA450418FC2F5A8864C554133333363ACA450410AD7A350864C55413D0AD713ACA4504152B81EC5854C55418FC2F598ABA45041713D0A87854C5541713D0AB7AAA45041713D0A47854C55419A9999A9A9A4504185EB5148854C55417B14AE77A7A45041295C8F62854C55410AD7A3D0A6A4504185EB5188854C554185EB5148A6A450411F85EBF1854C55418FC2F5E8A5A450411F85EBF1854C5541E17A144EA4A45041666666D6844C5541F6285C5FA3A450418FC2F588844C554185EB5138A2A45041D7A3706D844C554100000070A1A4504152B81E05844C55418FC2F5E8A0A45041666666D6834C554185EB51D89FA45041713D0A97834C5541EC51B82E9FA450415C8FC285834C55417B14AE779EA4504114AE4761834C554185EB51789DA45041EC51B8FE824C5541EC51B85E9CA45041295C8FB2824C5541F6285C8F9BA45041000000A0824C55413D0AD7839AA45041B81E853B824C5541B81E857B99A4504185EB5128824C5541D7A3703D99A45041A4703DFA814C55418FC2F5D898A4504152B81E65814C5541333333A398A4504152B81E35814C554148E17AD497A450410AD7A320814C5541C3F5283C97A4504114AE4701814C5541666666D696A45041E17A14AE804C554152B81E8596A45041E17A147E804C5541A4703D0A96A450418FC2F568804C55417B14AE8794A450415C8FC2A5804C5541A4703DEA93A45041A4703D8A804C5541C3F5287C93A4504114AE4741804C55411F85EB3193A45041AE47E1EA7F4C554185EB51F892A45041D7A3705D7F4C5541CDCCCC9C92A45041EC51B83E7F4C55413333334392A45041AE47E13A7F4C55415C8FC2E591A450418FC2F5487F4C554152B81E4591A45041B81E855B7F4C5541666666E690A450410AD7A3307F4C5541C3F5289C90A450417B14AEE77E4C554114AE47D18DA450419A999959864C55410AD7A3D090A450418FC2F518894C55410AD7A39098A45041295C8F628E4C55410AD7A300A3A45041F6285C4F8F4C554166666676ADA45041E17A147E8D4C5541B81E856BB4A4504185EB51488C4C55417B14AEB7BDA45041AE47E18A914C5541D7A3704DC6A45041713D0AE7964C5541E17A141ECDA45041666666D6984C55419A999999D3A450415C8FC2A59E4C5541B81E859BD5A4504185EB51889B4C55415C8FC2E5D5A45041666666169B4C554185EB5108D7A45041A4703D5A994C5541AE47E11AD7A4504133333323994C5541C3F528FCD6A450418FC2F5C8984C5541B81E859BD6A45041AE47E18A984C55418FC2F5F8D5A4504152B81E65984C55419A9999F9D4A4504185EB5138984C55418FC2F548D4A45041F6285CFF974C554185EB51B8D3A45041C3F528AC974C55415C8FC245D3A45041713D0A37974C5541D7A370BDD2A45041C3F528BC964C554133333333D2A450415C8FC265964C5541F6285C8FD1A45041B81E85DB954C5541713D0A37D1A4504166666696954C5541D7A370EDCFA4504114AE4711954C55413D0AD703CFA45041AE47E1BA944C5541000000A0CEA450419A999979944C5541CDCCCC5CCEA45041CDCCCCFC934C5541295C8F42CEA450419A999989934C55410AD7A310CEA45041CDCCCC4C934C55413D0AD7A3CDA45041E17A141E934C554152B81E55CBA45041EC51B89E924C55415C8FC245CAA45041EC51B84E924C5541E17A149EC9A4504114AE4701924C5541A4703DFAC8A45041B81E858B914C5541E17A14AEC8A4504166666616914C5541F6285C8FC8A4504185EB5118904C5541CDCCCC6CC8A450411F85EB518F4C5541713D0A37C8A450410AD7A3008F4C55411F85EBC1C7A45041295C8FC28E4C55413D0AD743C7A4504114AE47918E4C5541D7A370ADC6A450415C8FC2558E4C55418FC2F558C5A450413D0AD7E38D4C554152B81E35C4A45041333333438D4C5541B81E855BC3A45041000000C08C4C554100000080C2A450410AD7A3208C4C5541EC51B8BEC1A450419A9999698B4C5541CDCCCCCCC0A45041AE47E18A8A4C5541F6285CFFBFA45041B81E853B8A4C5541E17A14EEBEA4504185EB51E8894C5541295C8F52BEA4504152B81EA5894C554152B81E95BDA4504114AE4731894C55413D0AD7C3BCA450417B14AE97884C554100000020BCA45041E17A14FE874C55419A9999C9BBA4504185EB51D8874C55417B14AE47BBA450411F85EB81874C5541CDCCCC2CBAA4504148E17AA4864C554114AE4781B8A450415C8FC255864C554152B81E95B6A45041C3F5288C854C5541869D5013B6A45041EA849EC6854C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407047 - 5291118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000007F00000014AE4781B8A450415C8FC255864C554152B81E95B6A45041C3F5288C854C5541AE47E14AB6A45041295C8FE2854C55413D0AD743B6A450410AD7A350864C554148E17A34B6A4504148E17AC4864C5541666666F6B5A4504148E17A44874C5541AE47E14AB5A4504185EB5168874C554152B81EA5B4A45041AE47E15A874C55417B14AED7B3A450417B14AE17874C5541F6285C4FB3A45041B81E85FB864C5541F6285CDFB2A45041A4703D2A874C5541C3F5284CB2A450419A999989874C554185EB51D8B1A450413D0AD793874C55413D0AD713B1A45041A4703D6A874C55417B14AE87B0A45041AE47E11A874C55410AD7A390B0A45041EC51B8DE864C5541EC51B8CEB0A4504185EB5178864C5541000000D0B0A4504133333343864C5541E17A149EB0A4504166666646864C554114AE4731B0A45041AE47E1AA864C5541A4703DBAAFA45041D7A370FD864C554114AE4741AFA450411F85EBE1864C5541EC51B8DEAEA4504185EB5188864C5541295C8F92AEA45041EC51B85E864C55415C8FC235AEA45041713D0A77864C554166666696ADA450418FC2F5A8864C55410AD7A300ADA450418FC2F5A8864C554133333363ACA450410AD7A350864C55413D0AD713ACA4504152B81EC5854C55418FC2F598ABA45041713D0A87854C5541713D0AB7AAA45041713D0A47854C55419A9999A9A9A4504185EB5148854C55417B14AE77A7A45041295C8F62854C55410AD7A3D0A6A4504185EB5188854C554185EB5148A6A450411F85EBF1854C55418FC2F5E8A5A450411F85EBF1854C5541E17A144EA4A45041666666D6844C5541F6285C5FA3A450418FC2F588844C554185EB5138A2A45041D7A3706D844C554100000070A1A4504152B81E05844C55418FC2F5E8A0A45041666666D6834C554185EB51D89FA45041713D0A97834C5541EC51B82E9FA450415C8FC285834C55417B14AE779EA4504114AE4761834C554185EB51789DA45041EC51B8FE824C5541EC51B85E9CA45041295C8FB2824C5541F6285C8F9BA45041000000A0824C55413D0AD7839AA45041B81E853B824C5541B81E857B99A4504185EB5128824C5541D7A3703D99A45041A4703DFA814C55418FC2F5D898A4504152B81E65814C5541333333A398A4504152B81E35814C554148E17AD497A450410AD7A320814C5541C3F5283C97A4504114AE4701814C5541666666D696A45041E17A14AE804C554152B81E8596A45041E17A147E804C5541A4703D0A96A450418FC2F568804C55417B14AE8794A450415C8FC2A5804C5541A4703DEA93A45041A4703D8A804C5541C3F5287C93A4504114AE4741804C55411F85EB3193A45041AE47E1EA7F4C554185EB51F892A45041D7A3705D7F4C5541CDCCCC9C92A45041EC51B83E7F4C55413333334392A45041AE47E13A7F4C55415C8FC2E591A450418FC2F5487F4C554152B81E4591A45041B81E855B7F4C5541666666E690A450410AD7A3307F4C5541C3F5289C90A450417B14AEE77E4C554114AE47D18DA450419A999959864C55410AD7A3D090A450418FC2F518894C55410AD7A39098A45041295C8F628E4C55410AD7A300A3A45041F6285C4F8F4C554166666676ADA45041E17A147E8D4C5541B81E856BB4A4504185EB51488C4C55417B14AEB7BDA45041AE47E18A914C5541D7A3704DC6A45041713D0AE7964C5541E17A141ECDA45041666666D6984C55419A999999D3A450415C8FC2A59E4C5541B81E859BD5A4504185EB51889B4C55415C8FC2E5D5A45041666666169B4C554185EB5108D7A45041A4703D5A994C5541AE47E11AD7A4504133333323994C5541C3F528FCD6A450418FC2F5C8984C5541B81E859BD6A45041AE47E18A984C55418FC2F5F8D5A4504152B81E65984C55419A9999F9D4A4504185EB5138984C55418FC2F548D4A45041F6285CFF974C554185EB51B8D3A45041C3F528AC974C55415C8FC245D3A45041713D0A37974C5541D7A370BDD2A45041C3F528BC964C554133333333D2A450415C8FC265964C5541F6285C8FD1A45041B81E85DB954C5541713D0A37D1A4504166666696954C5541D7A370EDCFA4504114AE4711954C55413D0AD703CFA45041AE47E1BA944C5541000000A0CEA450419A999979944C5541CDCCCC5CCEA45041CDCCCCFC934C5541295C8F42CEA450419A999989934C55410AD7A310CEA45041CDCCCC4C934C55413D0AD7A3CDA45041E17A141E934C554152B81E55CBA45041EC51B89E924C55415C8FC245CAA45041EC51B84E924C5541E17A149EC9A4504114AE4701924C5541A4703DFAC8A45041B81E858B914C5541E17A14AEC8A4504166666616914C5541F6285C8FC8A4504185EB5118904C5541CDCCCC6CC8A450411F85EB518F4C5541713D0A37C8A450410AD7A3008F4C55411F85EBC1C7A45041295C8FC28E4C55413D0AD743C7A4504114AE47918E4C5541D7A370ADC6A450415C8FC2558E4C55418FC2F558C5A450413D0AD7E38D4C554152B81E35C4A45041333333438D4C5541B81E855BC3A45041000000C08C4C554100000080C2A450410AD7A3208C4C5541EC51B8BEC1A450419A9999698B4C5541CDCCCCCCC0A45041AE47E18A8A4C5541F6285CFFBFA45041B81E853B8A4C5541E17A14EEBEA4504185EB51E8894C5541295C8F52BEA4504152B81EA5894C554152B81E95BDA4504114AE4731894C55413D0AD7C3BCA450417B14AE97884C554100000020BCA45041E17A14FE874C55419A9999C9BBA4504185EB51D8874C55417B14AE47BBA450411F85EB81874C5541CDCCCC2CBAA4504148E17AA4864C554114AE4781B8A450415C8FC255864C55410103000000010000003C000000A4703D1AB6A4504185EB5198854C5541713D0AE7B2A45041B81E852B844C55418FC2F568A5A4504133333333804C554114AE4741A2A450417B14AED7804C5541A4703D0A9FA45041295C8F42804C55417B14AE279EA45041713D0AE7824C5541CDCCCCBC9EA450410AD7A320834C5541C3F5281C9FA4504152B81E25834C5541666666E69FA450419A999939834C5541EC51B89EA0A4504114AE4771834C55410AD7A360A1A45041B81E85BB834C5541F6285CFFA1A450411F85EB11844C55413D0AD753A2A45041F6285C2F844C55413D0AD7C3A2A45041B81E852B844C554148E17A74A3A450410AD7A340844C5541EC51B8FEA3A45041C3F5284C844C5541B81E859BA4A45041D7A370AD844C554133333343A5A450411F85EB31854C5541F6285CCFA5A45041D7A3708D854C55415C8FC215A6A45041C3F5288C854C55411F85EB61A6A45041B81E855B854C554114AE47B1A6A45041B81E852B854C5541D7A3707DA7A4504133333313854C55418FC2F588A8A45041A4703D0A854C55419A999999A9A450413D0AD703854C55417B14AE97AAA45041CDCCCCFC844C554114AE4731ABA4504152B81E05854C5541295C8FC2ABA45041EC51B82E854C554114AE4731ACA450418FC2F578854C5541295C8F82ACA450410AD7A3E0854C554185EB51D8ACA4504100000030864C5541D7A3701DADA4504148E17A54864C55415C8FC275ADA450415C8FC255864C554114AE4751AEA45041EC51B81E864C5541000000C0AEA4504185EB5108864C5541AE47E1EAAEA450418FC2F528864C5541B81E854BAFA45041EC51B89E864C55410AD7A390AFA450418FC2F5A8864C55410AD7A3D0AFA450417B14AE97864C554185EB5138B0A45041295C8F52864C554148E17AB4B0A450411F85EBF1854C5541EC51B8FEB0A450418FC2F5E8854C554148E17A34B1A4504148E17A14864C5541E17A144EB1A4504148E17A44864C554100000020B1A4504185EB5178864C55413D0AD7D3B0A45041C3F528BC864C55418FC2F5D8B0A45041666666F6864C55418FC2F518B1A45041CDCCCC1C874C5541000000D0B1A450410AD7A340874C5541C3F5281CB2A45041E17A142E874C55419A999969B2A45041D7A370FD864C554152B81EC5B2A4504185EB51B8864C5541D7A3701DB3A450419A999999864C5541F6285C8FB3A45041AE47E1AA864C554100000070B4A450419A999909874C5541CDCCCC0CB5A4504114AE4731874C55411F85EB91B5A450410AD7A310874C55418FC2F5D8B5A45041D7A370CD864C55413D0AD703B6A45041E17A142E864C5541A4703D1AB6A4504185EB5198854C5541
+</a>
+
+<b>
+010600000001000000010300000001000000BB000000869D5013B6A45041EA849EC6854C5541A4703D1AB6A4504185EB5198854C5541713D0AE7B2A45041B81E852B844C55418FC2F568A5A4504133333333804C554114AE4741A2A450417B14AED7804C5541A4703D0A9FA45041295C8F42804C55417B14AE279EA45041713D0AE7824C5541CDCCCCBC9EA450410AD7A320834C5541C3F5281C9FA4504152B81E25834C5541666666E69FA450419A999939834C5541EC51B89EA0A4504114AE4771834C55410AD7A360A1A45041B81E85BB834C5541F6285CFFA1A450411F85EB11844C55413D0AD753A2A45041F6285C2F844C55413D0AD7C3A2A45041B81E852B844C554148E17A74A3A450410AD7A340844C5541EC51B8FEA3A45041C3F5284C844C5541B81E859BA4A45041D7A370AD844C554133333343A5A450411F85EB31854C5541F6285CCFA5A45041D7A3708D854C55415C8FC215A6A45041C3F5288C854C55411F85EB61A6A45041B81E855B854C554114AE47B1A6A45041B81E852B854C5541D7A3707DA7A4504133333313854C55418FC2F588A8A45041A4703D0A854C55419A999999A9A450413D0AD703854C55417B14AE97AAA45041CDCCCCFC844C554114AE4731ABA4504152B81E05854C5541295C8FC2ABA45041EC51B82E854C554114AE4731ACA450418FC2F578854C5541295C8F82ACA450410AD7A3E0854C554185EB51D8ACA4504100000030864C5541D7A3701DADA4504148E17A54864C55415C8FC275ADA450415C8FC255864C554114AE4751AEA45041EC51B81E864C5541000000C0AEA4504185EB5108864C5541AE47E1EAAEA450418FC2F528864C5541B81E854BAFA45041EC51B89E864C55410AD7A390AFA450418FC2F5A8864C55410AD7A3D0AFA450417B14AE97864C554185EB5138B0A45041295C8F52864C554148E17AB4B0A450411F85EBF1854C5541EC51B8FEB0A450418FC2F5E8854C554148E17A34B1A4504148E17A14864C5541E17A144EB1A4504148E17A44864C554100000020B1A4504185EB5178864C55413D0AD7D3B0A45041C3F528BC864C55418FC2F5D8B0A45041666666F6864C55418FC2F518B1A45041CDCCCC1C874C5541000000D0B1A450410AD7A340874C5541C3F5281CB2A45041E17A142E874C55419A999969B2A45041D7A370FD864C554152B81EC5B2A4504185EB51B8864C5541D7A3701DB3A450419A999999864C5541F6285C8FB3A45041AE47E1AA864C554100000070B4A450419A999909874C5541CDCCCC0CB5A4504114AE4731874C55411F85EB91B5A450410AD7A310874C55418FC2F5D8B5A45041D7A370CD864C55413D0AD703B6A45041E17A142E864C554173768F11B6A45041EA6C59D2854C55413D0AD743B6A450410AD7A350864C554148E17A34B6A4504148E17AC4864C5541666666F6B5A4504148E17A44874C5541AE47E14AB5A4504185EB5168874C554152B81EA5B4A45041AE47E15A874C55417B14AED7B3A450417B14AE17874C5541F6285C4FB3A45041B81E85FB864C5541F6285CDFB2A45041A4703D2A874C5541C3F5284CB2A450419A999989874C554185EB51D8B1A450413D0AD793874C55413D0AD713B1A45041A4703D6A874C55417B14AE87B0A45041AE47E11A874C55410AD7A390B0A45041EC51B8DE864C5541EC51B8CEB0A4504185EB5178864C5541000000D0B0A4504133333343864C5541E17A149EB0A4504166666646864C554114AE4731B0A45041AE47E1AA864C5541A4703DBAAFA45041D7A370FD864C554114AE4741AFA450411F85EBE1864C5541EC51B8DEAEA4504185EB5188864C5541295C8F92AEA45041EC51B85E864C55415C8FC235AEA45041713D0A77864C554166666696ADA450418FC2F5A8864C55410AD7A300ADA450418FC2F5A8864C554133333363ACA450410AD7A350864C55413D0AD713ACA4504152B81EC5854C55418FC2F598ABA45041713D0A87854C5541713D0AB7AAA45041713D0A47854C55419A9999A9A9A4504185EB5148854C55417B14AE77A7A45041295C8F62854C55410AD7A3D0A6A4504185EB5188854C554185EB5148A6A450411F85EBF1854C55418FC2F5E8A5A450411F85EBF1854C5541E17A144EA4A45041666666D6844C5541F6285C5FA3A450418FC2F588844C554185EB5138A2A45041D7A3706D844C554100000070A1A4504152B81E05844C55418FC2F5E8A0A45041666666D6834C554185EB51D89FA45041713D0A97834C5541EC51B82E9FA450415C8FC285834C55417B14AE779EA4504114AE4761834C554185EB51789DA45041EC51B8FE824C5541EC51B85E9CA45041295C8FB2824C5541F6285C8F9BA45041000000A0824C55413D0AD7839AA45041B81E853B824C5541B81E857B99A4504185EB5128824C5541D7A3703D99A45041A4703DFA814C55418FC2F5D898A4504152B81E65814C5541333333A398A4504152B81E35814C554148E17AD497A450410AD7A320814C5541C3F5283C97A4504114AE4701814C5541666666D696A45041E17A14AE804C554152B81E8596A45041E17A147E804C5541A4703D0A96A450418FC2F568804C55417B14AE8794A450415C8FC2A5804C5541A4703DEA93A45041A4703D8A804C5541C3F5287C93A4504114AE4741804C55411F85EB3193A45041AE47E1EA7F4C554185EB51F892A45041D7A3705D7F4C5541CDCCCC9C92A45041EC51B83E7F4C55413333334392A45041AE47E13A7F4C55415C8FC2E591A450418FC2F5487F4C554152B81E4591A45041B81E855B7F4C5541666666E690A450410AD7A3307F4C5541C3F5289C90A450417B14AEE77E4C554114AE47D18DA450419A999959864C55410AD7A3D090A450418FC2F518894C55410AD7A39098A45041295C8F628E4C55410AD7A300A3A45041F6285C4F8F4C554166666676ADA45041E17A147E8D4C5541B81E856BB4A4504185EB51488C4C55417B14AEB7BDA45041AE47E18A914C5541D7A3704DC6A45041713D0AE7964C5541E17A141ECDA45041666666D6984C55419A999999D3A450415C8FC2A59E4C5541B81E859BD5A4504185EB51889B4C55415C8FC2E5D5A45041666666169B4C554185EB5108D7A45041A4703D5A994C5541AE47E11AD7A4504133333323994C5541C3F528FCD6A450418FC2F5C8984C5541B81E859BD6A45041AE47E18A984C55418FC2F5F8D5A4504152B81E65984C55419A9999F9D4A4504185EB5138984C55418FC2F548D4A45041F6285CFF974C554185EB51B8D3A45041C3F528AC974C55415C8FC245D3A45041713D0A37974C5541D7A370BDD2A45041C3F528BC964C554133333333D2A450415C8FC265964C5541F6285C8FD1A45041B81E85DB954C5541713D0A37D1A4504166666696954C5541D7A370EDCFA4504114AE4711954C55413D0AD703CFA45041AE47E1BA944C5541000000A0CEA450419A999979944C5541CDCCCC5CCEA45041CDCCCCFC934C5541295C8F42CEA450419A999989934C55410AD7A310CEA45041CDCCCC4C934C55413D0AD7A3CDA45041E17A141E934C554152B81E55CBA45041EC51B89E924C55415C8FC245CAA45041EC51B84E924C5541E17A149EC9A4504114AE4701924C5541A4703DFAC8A45041B81E858B914C5541E17A14AEC8A4504166666616914C5541F6285C8FC8A4504185EB5118904C5541CDCCCC6CC8A450411F85EB518F4C5541713D0A37C8A450410AD7A3008F4C55411F85EBC1C7A45041295C8FC28E4C55413D0AD743C7A4504114AE47918E4C5541D7A370ADC6A450415C8FC2558E4C55418FC2F558C5A450413D0AD7E38D4C554152B81E35C4A45041333333438D4C5541B81E855BC3A45041000000C08C4C554100000080C2A450410AD7A3208C4C5541EC51B8BEC1A450419A9999698B4C5541CDCCCCCCC0A45041AE47E18A8A4C5541F6285CFFBFA45041B81E853B8A4C5541E17A14EEBEA4504185EB51E8894C5541295C8F52BEA4504152B81EA5894C554152B81E95BDA4504114AE4731894C55413D0AD7C3BCA450417B14AE97884C554100000020BCA45041E17A14FE874C55419A9999C9BBA4504185EB51D8874C55417B14AE47BBA450411F85EB81874C5541CDCCCC2CBAA4504148E17AA4864C554114AE4781B8A450415C8FC255864C554152B81E95B6A45041C3F5288C854C5541869D5013B6A45041EA849EC6854C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>25147 - 2972160
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001C000000C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E54415C8FC27502EE5041295C8F121A7E544152B81E1503EE50419A9999991B7E5441295C8FA204EE504148E17A241B7E5441333333A306EE504152B81EF5197E5441C3F5288C08EE50411F85EB21187E54410AD7A31019EE5041A4703D7A017E544185EB51C818EE504133333343FF7D54415C8FC2A510EE5041295C8FE2FA7D5441666666D606EE504114AE47B1F57D5441295C8FE2FDED504152B81E85F17D54417B14AEF7E4ED50415C8FC2A5E77D54411F85EB01C1ED5041C3F528DCDA7D544152B81EB5AAED50410AD7A320CF7D5441AE47E19A9BED504133333333E97D54417B14AE579EED5041000000D0EA7D5441A4703DDA9FED5041295C8F92ED7D5441713D0AD7A0ED5041295C8F92ED7D54411F85EBE1A1ED50411F85EB11F07D544148E17AB4A3ED50413D0AD7E3EF7D5441713D0A07A3ED50418FC2F598F47D544185EB5198A5ED504133333393FA7D544166666686A4ED50411F85EB01FC7D54410AD7A340A5ED5041B81E85CBFD7D5441C3F5280CA6ED5041B81E85CBFD7D544105000000B81E854BF3ED5041C3F5288C037E544133333313F4ED5041C3F5286C047E5441B81E854BF3ED50413D0AD723057E54413D0AD763F2ED50413D0AD763047E5441B81E854BF3ED5041C3F5288C037E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000310C00C100EE50414F8719201A7E54417EE574AAA3ED5041675D7C29F07D5441987AE0AAA3ED504177D89026F07D5441B2B83633A3ED5041BE669BF0EF7D5441BA530C2FA3ED504168B904F1EF7D544158EA51D6A1ED50414B764853EF7D5441713D0A07A3ED50418FC2F598F47D544185EB5198A5ED504133333393FA7D544166666686A4ED50411F85EB01FC7D54410AD7A340A5ED5041B81E85CBFD7D5441C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E5441310C00C100EE50414F8719201A7E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>25147 - 3206839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001C000000C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E54415C8FC27502EE5041295C8F121A7E544152B81E1503EE50419A9999991B7E5441295C8FA204EE504148E17A241B7E5441333333A306EE504152B81EF5197E5441C3F5288C08EE50411F85EB21187E54410AD7A31019EE5041A4703D7A017E544185EB51C818EE504133333343FF7D54415C8FC2A510EE5041295C8FE2FA7D5441666666D606EE504114AE47B1F57D5441295C8FE2FDED504152B81E85F17D54417B14AEF7E4ED50415C8FC2A5E77D54411F85EB01C1ED5041C3F528DCDA7D544152B81EB5AAED50410AD7A320CF7D5441AE47E19A9BED504133333333E97D54417B14AE579EED5041000000D0EA7D5441A4703DDA9FED5041295C8F92ED7D5441713D0AD7A0ED5041295C8F92ED7D54411F85EBE1A1ED50411F85EB11F07D544148E17AB4A3ED50413D0AD7E3EF7D5441713D0A07A3ED50418FC2F598F47D544185EB5198A5ED504133333393FA7D544166666686A4ED50411F85EB01FC7D54410AD7A340A5ED5041B81E85CBFD7D5441C3F5280CA6ED5041B81E85CBFD7D544105000000B81E854BF3ED5041C3F5288C037E544133333313F4ED5041C3F5286C047E5441B81E854BF3ED50413D0AD723057E54413D0AD763F2ED50413D0AD763047E5441B81E854BF3ED5041C3F5288C037E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000310C00C100EE50414F8719201A7E54417EE574AAA3ED5041675D7C29F07D5441987AE0AAA3ED504177D89026F07D5441B2B83633A3ED5041BE669BF0EF7D5441BA530C2FA3ED504168B904F1EF7D544158EA51D6A1ED50414B764853EF7D5441713D0A07A3ED50418FC2F598F47D544185EB5198A5ED504133333393FA7D544166666686A4ED50411F85EB01FC7D54410AD7A340A5ED5041B81E85CBFD7D5441C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E5441310C00C100EE50414F8719201A7E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 1068534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441EC51B82EBAF250418FC2F5B8AB5A5441D7A3702DBFF2504148E17AD4A75A5441D7A3703DB7F25041713D0A17A65A5441000000B0B0F250415C8FC275A05A544185EB5198AEF25041AE47E1FA9D5A544185EB51A8A7F250417B14AE17955A54413333332393F250413D0AD7937D5A54417B14AEC78FF25041E17A144E7F5A544185EB51288CF25041E17A14EE805A5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441239D22A77CF2504155AC5AC2905A544139113EFE7FF250416D38BBD3925A544125E2C47D83F250418121241F955A5441C510F2AF86F2504125AAA861975A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A5441E68E3E7F9CF2504107AEDE78AB5A5441A4703DFAA1F25041F6285CCFB15A5441452A9A26A6F25041FE36339AB65A5441E17A145EA8F2504166666686B95A54411EEA5BB8B0F2504129C9BC11B35A5441713D0AA7B4F250417B14AE07B05A5441EC51B82EBAF250418FC2F5B8AB5A5441D7A3702DBFF2504148E17AD4A75A5441D7A3703DB7F25041713D0A17A65A5441000000B0B0F250415C8FC275A05A544185EB5198AEF25041AE47E1FA9D5A544185EB51A8A7F250417B14AE17955A54418C99D7A993F25041E247222E7E5A54413333332393F250413D0AD7937D5A5441340F395490F25041CD95C4057F5A544109B7FDA488F25041A88FB3B5825A5441DC6449D683F25041D59B3425855A5441149542987FF25041DC92694B875A54410ABE1FD97CF250410E98B5E3885A544170536A177AF25041B4040C928A5A5441EC51B8AE77F250419A9999498C5A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 3411203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441EC51B82EBAF250418FC2F5B8AB5A5441D7A3702DBFF2504148E17AD4A75A5441D7A3703DB7F25041713D0A17A65A5441000000B0B0F250415C8FC275A05A544185EB5198AEF25041AE47E1FA9D5A544185EB51A8A7F250417B14AE17955A54413333332393F250413D0AD7937D5A54417B14AEC78FF25041E17A144E7F5A544185EB51288CF25041E17A14EE805A5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441239D22A77CF2504155AC5AC2905A544139113EFE7FF250416D38BBD3925A544125E2C47D83F250418121241F955A5441C510F2AF86F2504125AAA861975A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A5441E68E3E7F9CF2504107AEDE78AB5A5441A4703DFAA1F25041F6285CCFB15A5441452A9A26A6F25041FE36339AB65A5441E17A145EA8F2504166666686B95A54411EEA5BB8B0F2504129C9BC11B35A5441713D0AA7B4F250417B14AE07B05A5441EC51B82EBAF250418FC2F5B8AB5A5441D7A3702DBFF2504148E17AD4A75A5441D7A3703DB7F25041713D0A17A65A5441000000B0B0F250415C8FC275A05A544185EB5198AEF25041AE47E1FA9D5A544185EB51A8A7F250417B14AE17955A54418C99D7A993F25041E247222E7E5A54413333332393F250413D0AD7937D5A5441340F395490F25041CD95C4057F5A544109B7FDA488F25041A88FB3B5825A5441DC6449D683F25041D59B3425855A5441149542987FF25041DC92694B875A54410ABE1FD97CF250410E98B5E3885A544170536A177AF25041B4040C928A5A5441EC51B8AE77F250419A9999498C5A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 29689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441EC51B82EBAF250418FC2F5B8AB5A5441D7A3702DBFF2504148E17AD4A75A5441D7A3703DB7F25041713D0A17A65A5441000000B0B0F250415C8FC275A05A544185EB5198AEF25041AE47E1FA9D5A544185EB51A8A7F250417B14AE17955A54413333332393F250413D0AD7937D5A54417B14AEC78FF25041E17A144E7F5A544185EB51288CF25041E17A14EE805A5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000004A9E57D87EF25041B6D5C81D925A544139113EFE7FF250416D38BBD3925A5441F46E7A3980F25041231A96FA925A544127E2C47D83F250417D21241F955A5441C910F2AF86F2504123AAA861975A54415B9A2F0988F2504174A42262985A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A54419F76EC7896F250411F725BF2A45A5441A176EC7896F2504121725BF2A45A544152A962F296F25041E713EA75A55A5441E58E3E7F9CF2504106AEDE78AB5A54412A5FA5969BF250419D6FFC5EA95A54416770A70B97F250412CDF2B94A35A5441D47723B591F25041979F44699E5A5441904F06768BF2504107CDD32F995A54414127E93685F25041484B4C96945A544120AEE2577EF250414DD34AC8905A5441239D22A77CF2504154AC5AC2905A54414A9E57D87EF25041B6D5C81D925A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 72813
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441EC51B82EBAF250418FC2F5B8AB5A5441D7A3702DBFF2504148E17AD4A75A5441D7A3703DB7F25041713D0A17A65A5441000000B0B0F250415C8FC275A05A544185EB5198AEF25041AE47E1FA9D5A544185EB51A8A7F250417B14AE17955A54413333332393F250413D0AD7937D5A54417B14AEC78FF25041E17A144E7F5A544185EB51288CF25041E17A14EE805A5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000004A9E57D87EF25041B6D5C81D925A544139113EFE7FF250416D38BBD3925A5441F46E7A3980F25041231A96FA925A544127E2C47D83F250417D21241F955A5441C910F2AF86F2504123AAA861975A54415B9A2F0988F2504174A42262985A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A54419F76EC7896F250411F725BF2A45A5441A176EC7896F2504121725BF2A45A544152A962F296F25041E713EA75A55A5441E58E3E7F9CF2504106AEDE78AB5A54412A5FA5969BF250419D6FFC5EA95A54416770A70B97F250412CDF2B94A35A5441D47723B591F25041979F44699E5A5441904F06768BF2504107CDD32F995A54414127E93685F25041484B4C96945A544120AEE2577EF250414DD34AC8905A5441239D22A77CF2504154AC5AC2905A54414A9E57D87EF25041B6D5C81D925A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27114 - 1435197
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81E52E750411F85EB91F10755416666666653E75041C3F5287CE5075541295C8F7254E75041713D0AD7D9075541A4703D9A51E750415C8FC275D90755419A99996950E750413D0AD773D90755419A9999394AE750413D0AD793F3075541EC51B83E51E75041A4703D9AF2075541EC51B81E52E750411F85EB91F1075541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B8F2880652E75041B53A9267F1075541DD46706D52E7504186B5B4AAEE075541550F47DE52E75041CDDA5881EA0755411DFED77553E75041701679D0E4075541295C8F7254E75041713D0AD7D90755419F48BAB251E75041EBD279A4D9075541716EF87450E750411F705593D90755419A9999394AE750413D0AD793F307554179F7B20251E750418712EF88F2075541B8F2880652E75041B53A9267F1075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27114 - 3427108
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81E52E750411F85EB91F10755416666666653E75041C3F5287CE5075541295C8F7254E75041713D0AD7D9075541A4703D9A51E750415C8FC275D90755419A99996950E750413D0AD773D90755419A9999394AE750413D0AD793F3075541EC51B83E51E75041A4703D9AF2075541EC51B81E52E750411F85EB91F1075541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B8F2880652E75041B53A9267F1075541DD46706D52E7504186B5B4AAEE075541550F47DE52E75041CDDA5881EA0755411DFED77553E75041701679D0E4075541295C8F7254E75041713D0AD7D90755419F48BAB251E75041EBD279A4D9075541716EF87450E750411F705593D90755419A9999394AE750413D0AD793F307554179F7B20251E750418712EF88F2075541B8F2880652E75041B53A9267F1075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975080 - 3064194
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000FCC98F05F17C5141D36C449BC482544130A930B4E77C5141B8ADAC75C58254417FE30BD4E37C5141712780B4C58254415902DAB4E27C5141A0300FAECE825441383A91B5E17C51415564360AD482544112595F96E07C5141480F0645DB825441C27D1238DE7C514194C7F41DE582544171FDE422DD7C5141FE491716EB825441E66E96DBDF7C514177043744EC825441E3852694E97C514121469BC3EF825441B8B40E90EE7C5141CFE4D18FF0825441791ED5C4F57C514134A6020CEF82544120B851EBF57C5141A050997DE58254418C2774EFF57C5141D5D3AF86D88254417B14AED7F57C514152B81E25C7825441FCC98F05F17C5141D36C449BC4825441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000C0F87C5141A4703D7AC88254417B14AED7F57C514152B81E25C78254410AD7A3F0F57C5141666666C6D4825441B81E85EBF57C5141713D0AF7E48254417B14AEE7F57C514148E17A04EF8254419A9999C9F57C5141C3F5288CF3825441295C8F42FA7C51411F85EBD1F28254413D0AD723F97C514148E17A54DE825441A4703DAAF87C5141CDCCCCECCD825441000000C0F87C5141A4703D7AC8825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975080 - 3356524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000FCC98F05F17C5141D36C449BC482544130A930B4E77C5141B8ADAC75C58254417FE30BD4E37C5141712780B4C58254415902DAB4E27C5141A0300FAECE825441383A91B5E17C51415564360AD482544112595F96E07C5141480F0645DB825441C27D1238DE7C514194C7F41DE582544171FDE422DD7C5141FE491716EB825441E66E96DBDF7C514177043744EC825441E3852694E97C514121469BC3EF825441B8B40E90EE7C5141CFE4D18FF0825441791ED5C4F57C514134A6020CEF82544120B851EBF57C5141A050997DE58254418C2774EFF57C5141D5D3AF86D88254417B14AED7F57C514152B81E25C7825441FCC98F05F17C5141D36C449BC4825441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000C0F87C5141A4703D7AC88254417B14AED7F57C514152B81E25C78254410AD7A3F0F57C5141666666C6D4825441B81E85EBF57C5141713D0AF7E48254417B14AEE7F57C514148E17A04EF8254419A9999C9F57C5141C3F5288CF3825441295C8F42FA7C51411F85EBD1F28254413D0AD723F97C514148E17A54DE825441A4703DAAF87C5141CDCCCCECCD825441000000C0F87C5141A4703D7AC8825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>28199 - 244638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000295C8FE209005141C3F528AC3BEC54419A9999E90A005141E17A14AE3DEC544185EB51580E005141CDCCCC8C43EC54418FC2F56812005141EC51B85E43EC5441E17A144E14005141AE47E1BA43EC5441EC51B88E170051415C8FC24544EC54419A9999891A005141B81E855B45EC5441B81E856B1E0051415C8FC2B546EC5441713D0A37220051410AD7A34047EC54417B14AE17240051410AD7A34047EC5441F6285CCF2400514114AE47D145EC54413333331326005141C3F528FC44EC54418FC2F518260051411F85EBF13EEC5441E17A148E25005141666666263BEC544152B81EB52500514152B81EE539EC5441F6285C9F25005141EC51B85E38EC5441EC51B85E25005141333333E336EC5441713D0AA724005141B81E85BB35EC54418FC2F5A8230051410AD7A39033EC54418FC2F5A823005141EC51B84E31EC5441E17A148E25005141000000B02EEC5441F6285C4F24005141295C8F122BEC54410AD7A3A020005141F6285CFF28EC5441295C8FB21A0051410AD7A31028EC54415C8FC205150051413333334327EC5441A4703D8A0E005141713D0AA726EC54410AD7A3100D005141AE47E18A30EC5441295C8FE209005141C3F528AC3BEC5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008FC2F5A823005141EF1E414033EC54416BD231FA0D005141A47B2B7330EC54416595EBDC0C0051419869BDCB34EC5441007DCF6A0C005141F06F6B9639EC54410CF75BA50E00514134334C273DEC5441A31B86500F00514146EA1E7F40EC5441407DF61811005141E34B8F4742EC5441F43A9EE91D0051411C0F70D845EC5441A118CCC7240051417D391ED145EC54418EC9381326005141C3124DF644EC544143EACF1826005141E0C69A193FEC544156C54CA725005141F9AED2D63BEC5441E17A148E25005141666666263BEC5441EA7390B0250051419C83629339EC54416511FAAE25005141EF7DE77639EC5441058B2272250051417FCE305537EC5441EC51B85E25005141333333E336EC5441713D0AA724005141B81E85BB35EC54418FC2F5A8230051410AD7A39033EC54418FC2F5A823005141EF1E414033EC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>28199 - 351459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000295C8FE209005141C3F528AC3BEC54419A9999E90A005141E17A14AE3DEC544185EB51580E005141CDCCCC8C43EC54418FC2F56812005141EC51B85E43EC5441E17A144E14005141AE47E1BA43EC5441EC51B88E170051415C8FC24544EC54419A9999891A005141B81E855B45EC5441B81E856B1E0051415C8FC2B546EC5441713D0A37220051410AD7A34047EC54417B14AE17240051410AD7A34047EC5441F6285CCF2400514114AE47D145EC54413333331326005141C3F528FC44EC54418FC2F518260051411F85EBF13EEC5441E17A148E25005141666666263BEC544152B81EB52500514152B81EE539EC5441F6285C9F25005141EC51B85E38EC5441EC51B85E25005141333333E336EC5441713D0AA724005141B81E85BB35EC54418FC2F5A8230051410AD7A39033EC54418FC2F5A823005141EC51B84E31EC5441E17A148E25005141000000B02EEC5441F6285C4F24005141295C8F122BEC54410AD7A3A020005141F6285CFF28EC5441295C8FB21A0051410AD7A31028EC54415C8FC205150051413333334327EC5441A4703D8A0E005141713D0AA726EC54410AD7A3100D005141AE47E18A30EC5441295C8FE209005141C3F528AC3BEC5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008FC2F5A823005141EF1E414033EC54416BD231FA0D005141A47B2B7330EC54416595EBDC0C0051419869BDCB34EC5441007DCF6A0C005141F06F6B9639EC54410CF75BA50E00514134334C273DEC5441A31B86500F00514146EA1E7F40EC5441407DF61811005141E34B8F4742EC5441F43A9EE91D0051411C0F70D845EC5441A118CCC7240051417D391ED145EC54418EC9381326005141C3124DF644EC544143EACF1826005141E0C69A193FEC544156C54CA725005141F9AED2D63BEC5441E17A148E25005141666666263BEC5441EA7390B0250051419C83629339EC54416511FAAE25005141EF7DE77639EC5441058B2272250051417FCE305537EC5441EC51B85E25005141333333E336EC5441713D0AA724005141B81E85BB35EC54418FC2F5A8230051410AD7A39033EC54418FC2F5A823005141EF1E414033EC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>30107 - 3562788
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E857BC1495141D7A3705DE5875441D7A3708DD2495141EC51B84EDF8754413D0AD743CC4951418FC2F5A8BB875441D7A3707DC14951410AD7A3D0BF875441713D0A67B74951419A9999F9C3875441E17A14DEB3495141C3F528ECC7875441666666F6AD495141CDCCCC2CCB875441713D0A37AF4951410AD7A300CE875441CDCCCC2CB149514185EB51F8D48754410AD7A3A0B2495141CDCCCC0CDE8754413D0AD793B4495141AE47E1BAE4875441B81E857BC1495141D7A3705DE5875441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000009173E07AD249514156B14E55DF87544139919D7ED2495141A9B3D46ADF875441E5076EC9EF495141477FB315D58754410BE262C5EA4951414BAB0EFFB887544174994057EA495141D4E00213B9875441E18D2E58EA495141C313C918B9875441C9B39A3EEA495141E63FE421B98754416595489DCD495141993BC8D3C2875441CFDDF079CD495141B6401A87C2875441D7A3708DD2495141EC51B84EDF8754419173E07AD249514156B14E55DF875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>32985 - 3456807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000A4703D7A64F450410AD7A3D0EF8C54411F85EB0172F45041A4703D2AD78C5441C3F5284C66F4504148E17AD4D28C54417B14AEB759F45041333333C3E98C5441F6285C0F4CF450417B14AEA7028D5441666666E64EF45041A4703DAA058D54417B14AEA755F450410AD7A3D00A8D5441A4703D7A64F450410AD7A3D0EF8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000003C5C991048F4504167186A6CFE8C544105E6691E4CF45041FE283E8C028D5441F926EB4155F45041A1EE33E4F18C544116F4721760F4504198109824DE8C54419F6B985066F45041B7EE27EBD28C5441666666C658F45041333333D3CD8C5441114789334DF450411BE0DB74C98C54419E588E344CF450416921C076CA8C54418C56314248F45041825742FDCF8C5441633C0F5538F4504128200F01E98C5441115096D435F45041A50894C9EC8C5441CDCCCC3C36F450419A999989ED8C544152B81EC53AF450418FC2F538EF8C544148E17A743CF4504166666656F08C54413C5C991048F4504167186A6CFE8C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>33482 - 160328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000333333739FF2504152B81EC5588E544152B81EB59CF250418FC2F5E8578E5441713D0A579DF2504152B81E85518E54411F85EB7192F250419A9999394F8E5441C3F528DC8EF250419A9999695F8E5441F6285C9F96F250418FC2F5F8708E5441333333739FF2504152B81EC5588E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000001B08949C91F250412B31E9FC528E54411C212ADC8EF25041B23F98695F8E5441192B5C9F96F25041EB99F5F8708E5441FB91D3D699F2504196A93F27688E54417DB732739FF250417F0B20C5588E54416EC51DB59CF2504158EDF5E8578E5441B71411FE9CF25041E80BFF07558E54415B1F0A579DF2504147E81F85518E5441646AEB7192F250414D129A394F8E54411B08949C91F250412B31E9FC528E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>33482 - 271760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000333333739FF2504152B81EC5588E544152B81EB59CF250418FC2F5E8578E5441713D0A579DF2504152B81E85518E54411F85EB7192F250419A9999394F8E5441C3F528DC8EF250419A9999695F8E5441F6285C9F96F250418FC2F5F8708E5441333333739FF2504152B81EC5588E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000001B08949C91F250412B31E9FC528E54411C212ADC8EF25041B23F98695F8E5441192B5C9F96F25041EB99F5F8708E5441FB91D3D699F2504196A93F27688E54417DB732739FF250417F0B20C5588E54416EC51DB59CF2504158EDF5E8578E5441B71411FE9CF25041E80BFF07558E54415B1F0A579DF2504147E81F85518E5441646AEB7192F250414D129A394F8E54411B08949C91F250412B31E9FC528E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196413 - 3530818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000F6285C6FA853514185EB51E88CCC544152B81EB59D5351413D0AD7B391CC5441B81E85ABA65351411F85EB11A9CC544100000040AF535141B81E857BBFCC5441713D0A07B95351415C8FC205D9CC544100000050BB53514148E17AA4D4CC54410AD7A3C0BF5351415C8FC2C5CBCC5441666666B6C453514114AE47F1C2CC54410AD7A3A0C6535141713D0AA7BFCC54410AD7A3E0BF53514148E17A04AECC5441AE47E1BAB8535141713D0A579BCC544114AE4791B15351413D0AD7A388CC5441F6285C6FA853514185EB51E88CCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E2485557B65351417F2C6301D2CC54411969BDD0B75351414B0E38DBD5CC544131CD3691C5535141A824EAE1BCCC54413BEE5846C4535141A2A97E81B9CC54410AD7A3E0BF53514148E17A04AECC5441AE47E1BAB8535141713D0A579BCC544114AE4791B15351413D0AD7A388CC5441F6285C6FA853514185EB51E88CCC544152B81EB59D5351413D0AD7B391CC5441B81E85ABA65351411F85EB11A9CC544100000040AF535141B81E857BBFCC5441E2485557B65351417F2C6301D2CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35047 - 20497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3705D5C3451419A999949212A554148E17A546B34514114AE4701232A5541295C8F526C3451415C8FC225232A55413D0AD7A375345141A4703D1A252A5541EC51B8AE8C345141D7A370DD2A2A5541CDCCCC3C9334514152B81E852C2A55410000002097345141AE47E12A2D2A554185EB51389C34514152B81EA52D2A55418FC2F5F89A345141E17A14DE242A5541B81E853B9B345141E17A14CE1D2A5541333333136E345141C3F5285C1C2A5541333333136D3451413D0AD7531C2A5541000000106B345141295C8F721C2A554152B81EE55F34514114AE47511C2A5541A4703D7A58345141D7A370AD1C2A554185EB51384A34514152B81EE51C2A554114AE47E149345141F6285CDF1D2A5541000000E048345141713D0AE71E2A5541EC51B8DE48345141295C8F22202A5541D7A3705D4A345141B81E85EB1F2A5541A4703D8A4E3451417B14AE47202A5541D7A3705D5C3451419A999949212A5541
+</a>
+
+<b>
+01060000000100000001030000000100000038000000B49B507D68345141409DA6B7232A5541578B2B94683451416B7DF9B9232A554134DF64826A345141F19033EC232A554161B0FEF26A34514187E2A2F7232A55414BAA5F356B345141218E60FE232A5541726A33466B345141EAF9FB80232A5541751E34506B345141CB906026232A554198E5C3546B345141DF930EFD222A5541A6CE9F266B3451419C6904FC222A55417F602DA16A34514176AAB3EC222A5541D93A67A4683451416C9A4FB2222A55413D24138366345141E18CB973222A554127691CFB64345141CC6FBD46222A554174ABBD2A6334514174FC7111222A554166EE3BB461345141D7C476E6212A5541258939F05F345141B97B96B2212A55412338643A5E345141F6B25680212A55412BB3659D5C3451412FB3F050212A55419F4E44735934514138F33813212A5541D3372F06573451415300F6E5202A5541260116D554345141881D12BD202A5541CD2858334F345141A5E60054202A5541C6161E504D345141CC0F982C202A5541930BB44E4B345141A9D35200202A55416C474B4A4A3451417DFF45EE1F2A5541001ED693493451417D5E8308202A5541B0CEB9DE48345141116D1729202A5541B5227FDE483451417DB90463202A5541513174DE48345141D18CD26D202A554140CB7ADD48345141D8110E64212A55416DB196FB48345141F8CA8C6B212A55416323A9E54A34514198ECBA84212A55415D1EEF0A4D3451416E31A59C212A55410C326F594E345141279335AB212A5541E46D379750345141950531C4212A5541B044A169533451419E21A5E3212A5541F3330D8854345141449F1DF0212A55410424F5F8553451417C7E2D00222A554125895A025634514151399600222A5541FEA25B8556345141FC694A06222A5541345F293A58345141E6144F19222A55415F7F6D9759345141E1C1E233222A55418611D6515A345141EE98D646222A554101F11FBD5B345141BE45C66B222A5541763F59165D34514153C2DF8E222A5541C5323D185F345141AC4C1FC3222A55412162EF535F345141641131C9222A55419EE4F5D75F345141036D9DD6222A5541B2D9B290613451412CF56C03232A55413A13FCAA6134514170211906232A5541E0DBB4546334514176D16131232A55415E388B836334514198E62436232A554149C0B41366345141DC7DDB78232A55415E898DDE6634514151307B8D232A5541E48BCDC567345141322AFEA4232A5541B49B507D68345141409DA6B7232A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35047 - 66550
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3705D5C3451419A999949212A554148E17A546B34514114AE4701232A5541295C8F526C3451415C8FC225232A55413D0AD7A375345141A4703D1A252A5541EC51B8AE8C345141D7A370DD2A2A5541CDCCCC3C9334514152B81E852C2A55410000002097345141AE47E12A2D2A554185EB51389C34514152B81EA52D2A55418FC2F5F89A345141E17A14DE242A5541B81E853B9B345141E17A14CE1D2A5541333333136E345141C3F5285C1C2A5541333333136D3451413D0AD7531C2A5541000000106B345141295C8F721C2A554152B81EE55F34514114AE47511C2A5541A4703D7A58345141D7A370AD1C2A554185EB51384A34514152B81EE51C2A554114AE47E149345141F6285CDF1D2A5541000000E048345141713D0AE71E2A5541EC51B8DE48345141295C8F22202A5541D7A3705D4A345141B81E85EB1F2A5541A4703D8A4E3451417B14AE47202A5541D7A3705D5C3451419A999949212A5541
+</a>
+
+<b>
+01060000000100000001030000000100000038000000B49B507D68345141409DA6B7232A5541578B2B94683451416B7DF9B9232A554134DF64826A345141F19033EC232A554161B0FEF26A34514187E2A2F7232A55414BAA5F356B345141218E60FE232A5541726A33466B345141EAF9FB80232A5541751E34506B345141CB906026232A554198E5C3546B345141DF930EFD222A5541A6CE9F266B3451419C6904FC222A55417F602DA16A34514176AAB3EC222A5541D93A67A4683451416C9A4FB2222A55413D24138366345141E18CB973222A554127691CFB64345141CC6FBD46222A554174ABBD2A6334514174FC7111222A554166EE3BB461345141D7C476E6212A5541258939F05F345141B97B96B2212A55412338643A5E345141F6B25680212A55412BB3659D5C3451412FB3F050212A55419F4E44735934514138F33813212A5541D3372F06573451415300F6E5202A5541260116D554345141881D12BD202A5541CD2858334F345141A5E60054202A5541C6161E504D345141CC0F982C202A5541930BB44E4B345141A9D35200202A55416C474B4A4A3451417DFF45EE1F2A5541001ED693493451417D5E8308202A5541B0CEB9DE48345141116D1729202A5541B5227FDE483451417DB90463202A5541513174DE48345141D18CD26D202A554140CB7ADD48345141D8110E64212A55416DB196FB48345141F8CA8C6B212A55416323A9E54A34514198ECBA84212A55415D1EEF0A4D3451416E31A59C212A55410C326F594E345141279335AB212A5541E46D379750345141950531C4212A5541B044A169533451419E21A5E3212A5541F3330D8854345141449F1DF0212A55410424F5F8553451417C7E2D00222A554125895A025634514151399600222A5541FEA25B8556345141FC694A06222A5541345F293A58345141E6144F19222A55415F7F6D9759345141E1C1E233222A55418611D6515A345141EE98D646222A554101F11FBD5B345141BE45C66B222A5541763F59165D34514153C2DF8E222A5541C5323D185F345141AC4C1FC3222A55412162EF535F345141641131C9222A55419EE4F5D75F345141036D9DD6222A5541B2D9B290613451412CF56C03232A55413A13FCAA6134514170211906232A5541E0DBB4546334514176D16131232A55415E388B836334514198E62436232A554149C0B41366345141DC7DDB78232A55415E898DDE6634514151307B8D232A5541E48BCDC567345141322AFEA4232A5541B49B507D68345141409DA6B7232A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35114 - 3103112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000000000E0B933514185EB5148B62D5541B81E856BBC335141B81E856BB72D55419A999969BF3351411F85EB81B82D5541333333F3C2335141666666B6B92D55411F85EBE1C3335141713D0A87BA2D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541295C8F92CE3351418FC2F5E8C82D5541295C8F72D1335141295C8F42C92D5541AE47E10AD333514148E17A74C92D55415C8FC2E5D333514152B81E45CA2D5541E17A140ED43351418FC2F578CC2D554185EB5138DD3351413D0AD7B3CC2D5541A4703DAAE833514148E17AA4CD2D554166666636EF33514114AE47A1CE2D554152B81E75F53351411F85EB91CF2D554148E17A240134514166666616D02D5541CDCCCC3C0C3451418FC2F5F8CF2D55410AD7A3600C345141CDCCCC7CCC2D554148E17A940C3451415C8FC2F5C62D55413D0AD7831034514133333343BB2D5541C3F5288C00345141C3F528CCB72D5541F6285C2FE03351419A9999B9B02D55417B14AEA7C1335141CDCCCC0CAA2D554166666616BD33514148E17A44B12D554148E17AC4BB335141AE47E15AB32D5541000000E0B933514185EB5148B62D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001300000014E38A94DA335141318CE1A2CC2D5541F3BD4434DB335141A5B2E3A6CC2D554163657C53DB335141DA0FC03FC42D554150B47946C8335141751EF7B8C02D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541295C8F92CE3351418FC2F5E8C82D5541295C8F72D1335141295C8F42C92D5541AE47E10AD333514148E17A74C92D55415C8FC2E5D333514152B81E45CA2D5541E17A140ED43351418FC2F578CC2D554114E38A94DA335141318CE1A2CC2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35114 - 3472545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000000000E0B933514185EB5148B62D5541B81E856BBC335141B81E856BB72D55419A999969BF3351411F85EB81B82D5541333333F3C2335141666666B6B92D55411F85EBE1C3335141713D0A87BA2D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541295C8F92CE3351418FC2F5E8C82D5541295C8F72D1335141295C8F42C92D5541AE47E10AD333514148E17A74C92D55415C8FC2E5D333514152B81E45CA2D5541E17A140ED43351418FC2F578CC2D554185EB5138DD3351413D0AD7B3CC2D5541A4703DAAE833514148E17AA4CD2D554166666636EF33514114AE47A1CE2D554152B81E75F53351411F85EB91CF2D554148E17A240134514166666616D02D5541CDCCCC3C0C3451418FC2F5F8CF2D55410AD7A3600C345141CDCCCC7CCC2D554148E17A940C3451415C8FC2F5C62D55413D0AD7831034514133333343BB2D5541C3F5288C00345141C3F528CCB72D5541F6285C2FE03351419A9999B9B02D55417B14AEA7C1335141CDCCCC0CAA2D554166666616BD33514148E17A44B12D554148E17AC4BB335141AE47E15AB32D5541000000E0B933514185EB5148B62D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001300000014E38A94DA335141318CE1A2CC2D5541F3BD4434DB335141A5B2E3A6CC2D554163657C53DB335141DA0FC03FC42D554150B47946C8335141751EF7B8C02D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541295C8F92CE3351418FC2F5E8C82D5541295C8F72D1335141295C8F42C92D5541AE47E10AD333514148E17A74C92D55415C8FC2E5D333514152B81E45CA2D5541E17A140ED43351418FC2F578CC2D554114E38A94DA335141318CE1A2CC2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35309 - 21138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35309 - 66999
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196543 - 195292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F528DC765251413D0AD7E34ACE5441A4703D2A75525141295C8F425CCE5441D7A3707D73525141E17A146E6DCE54418FC2F5487E525141D7A3709D73CE54418FC2F5588352514152B81E8576CE54416666662690525141E17A14DE7DCE5441CDCCCC9C9552514185EB518880CE544148E17AF49752514114AE478168CE54417B14AEE799525141EC51B87E54CE5441AE47E18A98525141E17A14AE53CE5441C3F528FC965251413333336353CE5441F6285C2F9352514148E17AB452CE54418FC2F5F88F525141EC51B81E52CE54410AD7A3708D525141B81E85BB51CE54419A9999398A525141CDCCCC0C51CE54410AD7A350875251417B14AE174ECE5441C3F528DC765251413D0AD7E34ACE5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000DEA4B7EB97525141400229DB68CE5441CDCCCC9C9552514185EB518880CE5441295C8FC2985251411F85EB1182CE544152B81E45A05251417B14AE4785CE5441666666B6A25251410AD7A3506CCE544139043771A45251417A2F6CA45ACE544119B9D9DBA452514176118D0C56CE5441C52A52AE9F525141FB7E266654CE54417B34B9E19952514128E2D7BB54CE544136B137989852514100B314F161CE54412A5F060098525141203E72A768CE5441DEA4B7EB97525141400229DB68CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196543 - 353915
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F528DC765251413D0AD7E34ACE5441A4703D2A75525141295C8F425CCE5441D7A3707D73525141E17A146E6DCE54418FC2F5487E525141D7A3709D73CE54418FC2F5588352514152B81E8576CE54416666662690525141E17A14DE7DCE5441CDCCCC9C9552514185EB518880CE544148E17AF49752514114AE478168CE54417B14AEE799525141EC51B87E54CE5441AE47E18A98525141E17A14AE53CE5441C3F528FC965251413333336353CE5441F6285C2F9352514148E17AB452CE54418FC2F5F88F525141EC51B81E52CE54410AD7A3708D525141B81E85BB51CE54419A9999398A525141CDCCCC0C51CE54410AD7A350875251417B14AE174ECE5441C3F528DC765251413D0AD7E34ACE5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000DEA4B7EB97525141400229DB68CE5441CDCCCC9C9552514185EB518880CE5441295C8FC2985251411F85EB1182CE544152B81E45A05251417B14AE4785CE5441666666B6A25251410AD7A3506CCE544139043771A45251417A2F6CA45ACE544119B9D9DBA452514176118D0C56CE5441C52A52AE9F525141FB7E266654CE54417B34B9E19952514128E2D7BB54CE544136B137989852514100B314F161CE54412A5F060098525141203E72A768CE5441DEA4B7EB97525141400229DB68CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196861 - 58740
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5F8914351417B14AE77B3C654413D0AD72390435141295C8F12B3C65441F6285CCF8C435141B81E850BB6C6544185EB516887435141C3F5280CBBC654413333335387435141295C8F82BDC65441A4703DAA8E435141C3F5286CC0C65441713D0A0794435141E17A143EC1C65441D7A370CD9E4351410AD7A320BEC6544152B81E85AB435141A4703DFABDC65441B81E854BAE435141713D0A67BCC65441AE47E17AAD4351418FC2F568B9C6544148E17A649A4351419A999949B5C654418FC2F5F8914351417B14AE77B3C65441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000D7A370CD9E4351410AD7A320BEC65441ACEE16BFA5435141B74BAC0BBEC6544119D37431A643514140F8520ABEC654415247F760A64351413184C309BEC654417D9DF6B4AA43514104F6B1FCBDC65441205BCAACAB4351412F6EB9E3BDC654415CC8EB7EAC435141AC06766CBDC654418454B593AC43514135B0A960BDC654419F333C19AE435141B07D9483BCC654416DF0C82BAE435141D30A84F2BBC65441D12118AFAD43514184E3AD28BAC65441C1C7E697AD435141843E85D3B9C65441BBE3D24BAD435141FBFDCB5EB9C65441500BB7D5AB435141D047FF0DB9C6544148E17A649A4351419A999949B5C6544175334C2794435141E4A55DF0B3C654416EF219BC934351410CF331D9B3C65441A2075187914351418F112F5FB3C654412ADC84EC8F4351413220F143B3C65441E1DD1F7F8F435141B69397A5B3C65441D6C8A7F68D435141F13DED03B5C65441502FC4338D435141829CE4B1B5C6544100F4C4DA8C43514140E55501B6C6544143FF684E8B435141FBDEF76FB7C65441CD1298078A435141C242969EB8C65441A1768C84894351413A03EE17B9C654416324ED5C894351410E539E3CB9C654413675F8B388435141BA9610D9B9C6544189AB97A68843514154CE73E5B9C65441F96F4A67874351414A84E12ABBC654413333335387435141295C8F82BDC65441CA44C7DB884351417A9F551EBEC654411EBDDB918C4351419B1B5397BFC65441A6F876FA8C4351414310D5C0BFC6544192F3C43A8D4351417D2659DABFC654416C26C01592435141C6A009F2C0C65441AC5D66799443514107E5041DC1C654411102B36B9543514167B7F8D6C0C6544101AE0A5D9B435141A4AA281FBFC6544124172ED49C435141194CB5B2BEC654413A52E1A79D43514158B88175BEC65441D7A370CD9E4351410AD7A320BEC65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>220784 - 5232784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D0000005C8FC295F0365141A4703DEAD4B45441AE47E18AEE365141295C8FE2D5B4544114AE47A1EE365141EC51B80ED6B45441F6285C7FEB3651415C8FC2B5D8B454411F85EB81E8365141A4703DBADBB454415C8FC255E8365141295C8F62DBB45441295C8F92E0365141D7A3707DE4B454410AD7A380DD365141EC51B80EE9B454415C8FC235DB365141295C8F62ECB4544114AE4701D936514114AE47B1F0B454411F85EBB1D63651417B14AEB7F6B454410AD7A320D5365141CDCCCC9CFAB45441713D0A57CF3651419A9999B907B55441E17A147ECC365141CDCCCCCC0CB554410AD7A380CA36514185EB517810B554413D0AD7B3C63651413D0AD7A317B55441A4703D0AC536514148E17AB41BB5544166666616C4365141B81E854B1FB55441D7A3707DC3365141295C8FE222B554419A9999A9C3365141666666362CB554419A999949DD365141C3F5280C31B554419A9999A9F93651417B14AE6736B55441CDCCCC5CED365141666666D620B5544185EB5188EE3651411F85EBB120B554418FC2F5F8F036514152B81E6520B55441E17A14BEF2365141D7A3702D20B55441C3F5287CF336514185EB511820B55441713D0AD7F7365141B81E859B1FB554417B14AE97FB365141000000301FB55441A4703DCA03375141295C8F621DB554411F85EB51053751413D0AD7E31CB554418FC2F5B814375141295C8F823BB55441C3F5283C25375141000000A03EB554415C8FC275363751417B14AEE73AB55441713D0AF7463751417B14AE5737B554417B14AE9744375141B81E855B1CB55441666666E6423751418FC2F56811B55441E17A14EE4137514148E17A240BB55441CDCCCC6C3E375141A4703D6AF7B45441D7A3706D3C3751413D0AD723EDB45441EC51B80E3A3751411F85EB91E5B454415C8FC2051037514114AE4731F1B454410000005006375141D7A3709DC8B454419A999999FC3651419A9999C9CDB454415C8FC295F0365141A4703DEAD4B45441
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000076C8C304113751416C4034471AB55441161F5F533237514126D93E5B14B55441553DAC65323751410F9B0A5814B55441666666E6423751418FC2F56811B55441B0A45A7E423751410C13AFC80EB554419DDEC62A423751418DB3A9AC0CB55441B82B57F141375141E5198C390BB55441EF52487E4137514167893DAF08B554413A775A1E403751414D5872F200B554412C2A41963E3751414CF28F53F8B4544113C74BA93C375141912FBC57EEB4544105ABF46F3C37514106E0C730EDB45441DDCB092F3C3751417F199E5CECB45441B7C98FF53937514175D78442E5B4544161DFAF940F3751416DDFE961F1B45441C8EC7BF204375141EF689873C9B45441E4BE1BF9FD36514176571D20CDB45441E54FD1E1FC365141AC0C3EB3CDB45441461CD6AAFB365141AB5F6168CEB45441AF6ABBC7F43651411B75A173D2B45441EB652D20F13651415AFFF698D4B45441F603D181F0365141DF1AB6F3D4B45441978E5109F0365141E3D0EF2CD5B454413FD965BEEF365141B16A8450D5B45441AE47E18AEE365141295C8FE2D5B4544114AE47A1EE365141EC51B80ED6B4544123A1CA66FA365141D07C106BEDB454412E3F0C4C06375141511C680605B55441F55E24C80A37514150B9CFEC0DB5544176C8C304113751416C4034471AB55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>197082 - 1308793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000200000009A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C254415C8FC2F56B4451410AD7A37084C2544114AE47D16B44514148E17A247FC254413D0AD7936944514152B81E357AC25441F6285C1F65445141F6285CEF71C25441333333C36B445141D7A3708D6DC254417B14AE576A44514148E17AE46CC254417B14AE7768445141A4703D9A6BC254417B14AE9766445141666666F669C2544100000040644451416666661668C25441C3F5289C6144514185EB510866C254415C8FC2D55A44514114AE47816AC254418FC2F59855445141B81E850B6FC25441AE47E1AA50445141F6285CDF74C254411F85EB614E4451413333332378C2544152B81E554C4451410AD7A3A07DC2544185EB51084B44514152B81E0580C25441AE47E19A4A44514148E17AD482C25441D7A3709D49445141000000F089C25441713D0A374A445141295C8F928FC254419A9999A9544451410AD7A36087C25441000000605344514148E17A2487C2544185EB5108534451410000008085C254410000006053445141CDCCCCCC84C25441B81E858B544451410AD7A3A083C254411F85EB1156445141EC51B8CE82C254415C8FC2C5564451416666664683C254417B14AE375A445141EC51B8FE85C25441295C8FA25F445141CDCCCC6C8FC25441C3F5286C634451419A99998999C254419A9999E9644451418FC2F57893C254410A000000B81E851B5B44514185EB514881C254417B14AE475C44514185EB515880C254413D0AD7635E4451416666667680C254413D0AD7436044514148E17A8481C254419A9999C961445141A4703D0A83C254419A9999D9604451416666662685C254417B14AE175F44514148E17A3486C254413D0AD7735D4451416666661686C25441B81E850B5C44514148E17A6483C25441B81E851B5B44514185EB514881C254410E0000009A99998956445141295C8F027CC25441E17A141E5944514185EB51A87BC25441000000005944514185EB51987CC254411F85EB0157445141295C8FF27CC254415C8FC2D555445141295C8FE27DC254410000005054445141295C8FD27EC254413D0AD733524451410AD7A3E07FC2544152B81EC54D445141713D0A1782C254413D0AD7834D44514185EB514881C254413D0AD7834D445141CDCCCC2C7FC25441E17A14CE4E445141666666967EC254411F85EB615144514148E17AC47DC254419A9999B953445141295C8FF27CC254419A99998956445141295C8F027CC25441
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000C3F5286C634451419A99998999C254419A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C25441389A53946B445141F6F9B39486C254410C0BE6F06B4451414C3FFC8B84C25441A536037268445141EFA6194C84C25441120326D463445141B1A3ADC483C254418B9C314A624451418230ECF583C254415825CC91604451417D80805185C2544115F4260F5E4451418FDB875185C25441A663830A5C44514163D0366283C254412F9FD71F5B445141BD96FDA681C2544116AF10EC59445141B8666F6981C254416605E9D058445141F1394DB381C254411872D29057445141CC26A85F82C254415C8FC2C5564451416666664683C2544100000030564451410AD7A38085C25441333333F355445141F6285CFF86C254419A9999A9544451410AD7A36087C25441000000605344514148E17A2487C2544185EB5108534451410000008085C25441EC37DC8453445141306BDCA784C25441E843675352445141F322EDB282C254410A1F3FBE5044514102A7F1C980C2544160C719C54D445141C797FA1682C25441AE47E19A4A44514148E17AD482C25441D7A3709D49445141000000F089C25441713D0A374A445141295C8F928FC254413D0AD7534A44514152B81EC592C25441AE47E14A474451418FC2F5F89CC254417B14AE4742445141713D0A67A4C25441666666E6384451413D0AD793ADC25441713D0A5734445141D7A3703DB5C25441EC51B81E384451417B14AED7B4C254417B14AEB73C445141A4703D3AB5C254410AD7A3B04344514152B81E55B7C25441B81E850B49445141D7A370EDB8C25441B81E850B4E44514100000030B9C25441A4703D8A52445141E17A14EEB7C25441A4703DAA59445141000000D0B3C25441B81E855B60445141000000D0AEC25441B81E857B6644514148E17A54AAC254418FC2F5C8694451417B14AE47A7C2544152B81E356A4451413D0AD7B3A6C25441C3F5286C634451419A99998999C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>197082 - 3591090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000200000009A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C254415C8FC2F56B4451410AD7A37084C2544114AE47D16B44514148E17A247FC254413D0AD7936944514152B81E357AC25441F6285C1F65445141F6285CEF71C25441333333C36B445141D7A3708D6DC254417B14AE576A44514148E17AE46CC254417B14AE7768445141A4703D9A6BC254417B14AE9766445141666666F669C2544100000040644451416666661668C25441C3F5289C6144514185EB510866C254415C8FC2D55A44514114AE47816AC254418FC2F59855445141B81E850B6FC25441AE47E1AA50445141F6285CDF74C254411F85EB614E4451413333332378C2544152B81E554C4451410AD7A3A07DC2544185EB51084B44514152B81E0580C25441AE47E19A4A44514148E17AD482C25441D7A3709D49445141000000F089C25441713D0A374A445141295C8F928FC254419A9999A9544451410AD7A36087C25441000000605344514148E17A2487C2544185EB5108534451410000008085C254410000006053445141CDCCCCCC84C25441B81E858B544451410AD7A3A083C254411F85EB1156445141EC51B8CE82C254415C8FC2C5564451416666664683C254417B14AE375A445141EC51B8FE85C25441295C8FA25F445141CDCCCC6C8FC25441C3F5286C634451419A99998999C254419A9999E9644451418FC2F57893C254410A000000B81E851B5B44514185EB514881C254417B14AE475C44514185EB515880C254413D0AD7635E4451416666667680C254413D0AD7436044514148E17A8481C254419A9999C961445141A4703D0A83C254419A9999D9604451416666662685C254417B14AE175F44514148E17A3486C254413D0AD7735D4451416666661686C25441B81E850B5C44514148E17A6483C25441B81E851B5B44514185EB514881C254410E0000009A99998956445141295C8F027CC25441E17A141E5944514185EB51A87BC25441000000005944514185EB51987CC254411F85EB0157445141295C8FF27CC254415C8FC2D555445141295C8FE27DC254410000005054445141295C8FD27EC254413D0AD733524451410AD7A3E07FC2544152B81EC54D445141713D0A1782C254413D0AD7834D44514185EB514881C254413D0AD7834D445141CDCCCC2C7FC25441E17A14CE4E445141666666967EC254411F85EB615144514148E17AC47DC254419A9999B953445141295C8FF27CC254419A99998956445141295C8F027CC25441
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000C3F5286C634451419A99998999C254419A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C25441389A53946B445141F6F9B39486C254410C0BE6F06B4451414C3FFC8B84C25441A536037268445141EFA6194C84C25441120326D463445141B1A3ADC483C254418B9C314A624451418230ECF583C254415825CC91604451417D80805185C2544115F4260F5E4451418FDB875185C25441A663830A5C44514163D0366283C254412F9FD71F5B445141BD96FDA681C2544116AF10EC59445141B8666F6981C254416605E9D058445141F1394DB381C254411872D29057445141CC26A85F82C254415C8FC2C5564451416666664683C2544100000030564451410AD7A38085C25441333333F355445141F6285CFF86C254419A9999A9544451410AD7A36087C25441000000605344514148E17A2487C2544185EB5108534451410000008085C25441EC37DC8453445141306BDCA784C25441E843675352445141F322EDB282C254410A1F3FBE5044514102A7F1C980C2544160C719C54D445141C797FA1682C25441AE47E19A4A44514148E17AD482C25441D7A3709D49445141000000F089C25441713D0A374A445141295C8F928FC254413D0AD7534A44514152B81EC592C25441AE47E14A474451418FC2F5F89CC254417B14AE4742445141713D0A67A4C25441666666E6384451413D0AD793ADC25441713D0A5734445141D7A3703DB5C25441EC51B81E384451417B14AED7B4C254417B14AEB73C445141A4703D3AB5C254410AD7A3B04344514152B81E55B7C25441B81E850B49445141D7A370EDB8C25441B81E850B4E44514100000030B9C25441A4703D8A52445141E17A14EEB7C25441A4703DAA59445141000000D0B3C25441B81E855B60445141000000D0AEC25441B81E857B6644514148E17A54AAC254418FC2F5C8694451417B14AE47A7C2544152B81E356A4451413D0AD7B3A6C25441C3F5286C634451419A99998999C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>887075 - 2130791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E18A2CAB5041A4703D8A521D54411F85EB912BAB5041EC51B83E511D5441C3F5283C2AAB5041295C8FC24F1D5441B81E85CB27AB5041713D0A874D1D544148E17AC425AB50411F85EBF14B1D5441B81E85AB23AB5041F6285C8F4A1D54417B14AE7721AB50411F85EB81491D544114AE47111FAB5041CDCCCCAC481D5441000000501CAB5041EC51B80E481D5441EC51B85E1AAB5041EC51B8CE471D5441713D0A9718AB5041AE47E12A4F1D5441CDCCCCAC15AB5041AE47E15A561D544114AE47C112AB50410AD7A3905D1D54417B14AEC70FAB50419A9999C9641D5441F6285C9F08AB504185EB51E86B1D54411F85EB4106AB5041EC51B84E731D5441666666E603AB5041F6285CAF7A1D5441C3F5288C01AB50419A999909821D54410AD7A330FFAA50419A999969891D5441AE47E1BAFEAA5041295C8FE28A1D5441B81E855B00AB5041713D0AD78D1D5441F6285C0F01AB5041CDCCCCAC8D1D54413333330304AB5041C3F528FC8C1D5441A4703DBA06AB5041713D0A978C1D5441000000600DAB50413D0AD7F38B1D544152B81E450FAB504152B81E858B1D5441E17A14FE10AB504185EB51B88A1D5441713D0A5712AB504166666686891D5441F6285C3F13AB5041295C8F42881D54413333334314AB5041B81E85FB851D544114AE471115AB504185EB5188831D54419A9999D916AB5041713D0A077D1D544114AE47B118AB5041A4703DBA761D5441F6285CCF1AAB5041AE47E1BA6F1D544185EB51981CAB504148E17A04691D54415C8FC2B51EAB5041295C8FB25F1D54417B14AE071FAB5041CDCCCCAC5E1D5441B81E853B1CAB50411F85EBB15D1D5441333333E31CAB5041000000A05B1D5441F6285CAF1FAB50415C8FC2955C1D5441CDCCCCAC20AB504114AE47715A1D5441E17A141E22AB5041AE47E19A581D54410AD7A3B023AB50419A999939571D54413D0AD74325AB5041CDCCCC3C561D5441EC51B80E27AB5041D7A3706D551D54415C8FC2B52AAB504133333373541D5441B81E850B2CAB50417B14AED7531D5441713D0A772CAB50413D0AD753531D5441AE47E18A2CAB5041A4703D8A521D5441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000CDCCCC4CF8AA50411F85EBB1851D5441F6285CFFF9AA5041C3F5286C861D5441713D0AC7FBAA5041295C8FA2871D5441713D0AC7FDAA5041000000A0891D54410AD7A330FFAA50419A999969891D5441B81E855B00AB5041713D0AD78D1D5441F0E9FB1E05AB50411971DFD28C1D54418D6351DC09AB504167C21E4A8C1D54411831FABF0DAB5041D154EFDD8B1D5441F4EF264110AB504121DF10108B1D5441139B65B312AB504128FBA805891D54410C3F328A14AB504101C37123851D5441BFC30A4216AB5041738021307F1D54418738A0D018AB5041A581A752761D5441010635491BAB5041CD62ACF06D1D5441FA722A861DAB5041A54E62EC641D5441833E61161FAB50412DA31E7E5E1D54413775AF3B1CAB50414338C78A5D1D5441860F03E71CAB5041A94054CD5B1D5441C13DD6DB1FAB5041577881355C1D5441030232D020AB50417D3D31445A1D54415F110EE521AB5041782D85E3581D5441C86AFEE223AB5041AB69071A571D5441544485C425AB5041D5C5A602561D54415807C6C027AB5041D0D6C93D551D5441E3996BE82AAB5041C58E255C541D5441A17E61602CAB5041D4DB9F6F531D5441ED1C37082CAB5041498B3EDC511D544166B4CF3729AB5041DD055AD44E1D5441044A952A27AB50410F096D094D1D54415A0AF24F25AB5041D699F8A44B1D5441BBE3A79A23AB5041241A4D874A1D5441E80AC97D21AB50412368D684491D5441281F81031FAB5041525DB6A9481D544158FD8BF51CAB50418048D333481D5441EC51B85E1AAB5041EC51B8CE471D54417B14AEF718AB5041EC51B8AE471D5441B81E851B15AB5041B81E85AB471D5441D7A3705D11AB5041333333D3471D544114AE472109AB504152B81E95481D5441AE47E12A00AB504185EB51D8471D5441D7A3701DF6AA50415C8FC2F5461D54410AD7A380F7AA50419A9999A95A1D5441713D0AD7F7AA5041333333B3601D54417B14AE67F8AA5041CDCCCC3C631D5441CDCCCCCCF8AA50413D0AD753651D5441EC51B84EF9AA5041EC51B83E671D54410AD7A3D0F9AA5041333333D3681D5441C3F5288CFAAA504148E17A846A1D5441CDCCCC1CFBAA5041AE47E19A6C1D544133333373FBAA50417B14AE776E1D544185EB5148FBAA504185EB51986F1D5441E17A140EFBAA504100000010711D5441CDCCCC4CF8AA50411F85EBB1851D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>887075 - 3557024
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E18A2CAB5041A4703D8A521D54411F85EB912BAB5041EC51B83E511D5441C3F5283C2AAB5041295C8FC24F1D5441B81E85CB27AB5041713D0A874D1D544148E17AC425AB50411F85EBF14B1D5441B81E85AB23AB5041F6285C8F4A1D54417B14AE7721AB50411F85EB81491D544114AE47111FAB5041CDCCCCAC481D5441000000501CAB5041EC51B80E481D5441EC51B85E1AAB5041EC51B8CE471D5441713D0A9718AB5041AE47E12A4F1D5441CDCCCCAC15AB5041AE47E15A561D544114AE47C112AB50410AD7A3905D1D54417B14AEC70FAB50419A9999C9641D5441F6285C9F08AB504185EB51E86B1D54411F85EB4106AB5041EC51B84E731D5441666666E603AB5041F6285CAF7A1D5441C3F5288C01AB50419A999909821D54410AD7A330FFAA50419A999969891D5441AE47E1BAFEAA5041295C8FE28A1D5441B81E855B00AB5041713D0AD78D1D5441F6285C0F01AB5041CDCCCCAC8D1D54413333330304AB5041C3F528FC8C1D5441A4703DBA06AB5041713D0A978C1D5441000000600DAB50413D0AD7F38B1D544152B81E450FAB504152B81E858B1D5441E17A14FE10AB504185EB51B88A1D5441713D0A5712AB504166666686891D5441F6285C3F13AB5041295C8F42881D54413333334314AB5041B81E85FB851D544114AE471115AB504185EB5188831D54419A9999D916AB5041713D0A077D1D544114AE47B118AB5041A4703DBA761D5441F6285CCF1AAB5041AE47E1BA6F1D544185EB51981CAB504148E17A04691D54415C8FC2B51EAB5041295C8FB25F1D54417B14AE071FAB5041CDCCCCAC5E1D5441B81E853B1CAB50411F85EBB15D1D5441333333E31CAB5041000000A05B1D5441F6285CAF1FAB50415C8FC2955C1D5441CDCCCCAC20AB504114AE47715A1D5441E17A141E22AB5041AE47E19A581D54410AD7A3B023AB50419A999939571D54413D0AD74325AB5041CDCCCC3C561D5441EC51B80E27AB5041D7A3706D551D54415C8FC2B52AAB504133333373541D5441B81E850B2CAB50417B14AED7531D5441713D0A772CAB50413D0AD753531D5441AE47E18A2CAB5041A4703D8A521D5441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000CDCCCC4CF8AA50411F85EBB1851D5441F6285CFFF9AA5041C3F5286C861D5441713D0AC7FBAA5041295C8FA2871D5441713D0AC7FDAA5041000000A0891D54410AD7A330FFAA50419A999969891D5441B81E855B00AB5041713D0AD78D1D5441F0E9FB1E05AB50411971DFD28C1D54418D6351DC09AB504167C21E4A8C1D54411831FABF0DAB5041D154EFDD8B1D5441F4EF264110AB504121DF10108B1D5441139B65B312AB504128FBA805891D54410C3F328A14AB504101C37123851D5441BFC30A4216AB5041738021307F1D54418738A0D018AB5041A581A752761D5441010635491BAB5041CD62ACF06D1D5441FA722A861DAB5041A54E62EC641D5441833E61161FAB50412DA31E7E5E1D54413775AF3B1CAB50414338C78A5D1D5441860F03E71CAB5041A94054CD5B1D5441C13DD6DB1FAB5041577881355C1D5441030232D020AB50417D3D31445A1D54415F110EE521AB5041782D85E3581D5441C86AFEE223AB5041AB69071A571D5441544485C425AB5041D5C5A602561D54415807C6C027AB5041D0D6C93D551D5441E3996BE82AAB5041C58E255C541D5441A17E61602CAB5041D4DB9F6F531D5441ED1C37082CAB5041498B3EDC511D544166B4CF3729AB5041DD055AD44E1D5441044A952A27AB50410F096D094D1D54415A0AF24F25AB5041D699F8A44B1D5441BBE3A79A23AB5041241A4D874A1D5441E80AC97D21AB50412368D684491D5441281F81031FAB5041525DB6A9481D544158FD8BF51CAB50418048D333481D5441EC51B85E1AAB5041EC51B8CE471D54417B14AEF718AB5041EC51B8AE471D5441B81E851B15AB5041B81E85AB471D5441D7A3705D11AB5041333333D3471D544114AE472109AB504152B81E95481D5441AE47E12A00AB504185EB51D8471D5441D7A3701DF6AA50415C8FC2F5461D54410AD7A380F7AA50419A9999A95A1D5441713D0AD7F7AA5041333333B3601D54417B14AE67F8AA5041CDCCCC3C631D5441CDCCCCCCF8AA50413D0AD753651D5441EC51B84EF9AA5041EC51B83E671D54410AD7A3D0F9AA5041333333D3681D5441C3F5288CFAAA504148E17A846A1D5441CDCCCC1CFBAA5041AE47E19A6C1D544133333373FBAA50417B14AE776E1D544185EB5148FBAA504185EB51986F1D5441E17A140EFBAA504100000010711D5441CDCCCC4CF8AA50411F85EBB1851D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40820 - 56922
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000F6285C5F9AD6504114AE47D1132B55418FC2F558A1D65041333333C30C2B5541713D0AF7AAD650419A999909032B5541F6285C3F99D650419A999939E12A5541000000C098D650415C8FC245E02A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A55415C8FC2E591D6504100000010E22A55417B14AE778BD6504185EB5128E12A5541CDCCCC8C89D65041295C8FD2E12A5541B81E857B86D650415C8FC2E5E52A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55410000001083D65041666666F6EE2A5541666666E683D65041333333F3F22A5541C3F5280C84D65041F6285C4FF62A55416666663685D65041E17A146EF82A5541B81E85FB85D65041F6285C1FF92A5541295C8F7287D6504152B81E15FB2A5541000000F087D65041D7A3706DFC2A55419A99998987D65041B81E852BFE2A55417B14AEA785D6504185EB51E8FF2A554114AE47F184D6504114AE4791002B55418FC2F58882D65041D7A3704D032B55411F85EB2180D65041333333B3042B55419A9999D97FD6504148E17AA4052B5541CDCCCC3C80D65041A4703DAA072B5541CDCCCC4C80D6504185EB5108082B55415C8FC2F581D6504185EB51980A2B5541000000C081D650415C8FC2550D2B55413D0AD7C37DD65041713D0AF7102B5541F6285C5F7ED650410AD7A340112B55410AD7A3E07FD65041713D0AF7112B554148E17A448AD650411F85EBE1162B5541AE47E12A93D650418FC2F5181B2B5541F6285C5F9AD6504114AE47D1132B5541
+</a>
+
+<b>
+0106000000010000000103000000010000007600000056F1BF1D98D6504118A9C9D5E02A5541ACB0A19997D65041364D114BE12A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A5541B3A9C31694D65041FD8F1EFEE12A55416783EDD592D650414B625808E22A5541406387E591D6504108229211E22A5541BBEBC7D68FD65041D45CD4C5E12A55412570DCE98DD650417DEA7380E12A5541A43AF4DE8DD650411DECEA7EE12A5541BE9B68268DD650414B8CF164E12A55412D2E09E58CD650415818BE5BE12A55415CDF3D918CD6504109E6F24FE12A5541202EF1588CD65041D15C0648E12A554141C002EC8BD65041FB71B138E12A5541798B6A7D8BD65041EE992029E12A5541195A6D768AD650413D698981E12A554137AAC78C89D65041842E96D2E12A5541F255B37089D650414878E3F7E12A55419FA77C4E89D65041A2E15625E22A55414180992C89D65041F1545B52E22A5541D4A30DF087D6504115E2DEF6E32A5541B29FBCB686D6504192041897E52A5541B81E857B86D650415C8FC2E5E52A5541223D334586D6504197AC8E1AE62A5541F60CF41D86D65041AF420048E62A5541B093AABF84D65041B7452C95E72A55416CA9F35C84D65041E2DE1EF5E72A5541D6D828FE83D6504133834151E82A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55414FF9EBD782D65041001B09AFEB2A5541CA4818D882D650414855A0B1EB2A5541044E74D882D65041C3AB01B7EB2A554173E935DC82D650413FC23AEFEB2A5541E40C2CDD82D6504141E59EFDEB2A5541BECCAADE82D650413ECAFF13EC2A55417B1A36E982D650414E45D2B1EC2A554106449EF982D650413D3765A7ED2A5541732EF51183D65041409FB8FFEE2A5541D2637C1B83D65041BB2A162DEF2A5541E3E70C2083D65041A1B2D142EF2A5541A9B3282183D65041D1E71848EF2A5541214B2D2583D65041E73A3A5BEF2A5541A3D81A2683D65041D143A55FEF2A5541B8A8712883D650413454C86AEF2A5541828C102A83D6504124B37F72EF2A55414B91CD7983D65041E10A26EEF02A5541666666E683D65041333333F3F22A55412F8B4EF383D6504116793619F42A5541A03556F483D65041B9B0AC30F42A554180E4B40284D650412BD80378F52A55419BC6270C84D650412D2F414FF62A5541D7E5065E84D65041BD3556E4F62A55416CFF7DA384D6504159DFBE62F72A55418A199B0985D650414FF2901CF82A554189ED698185D650416D2F8BB1F82A5541B81E85FB85D65041F6285C1FF92A55410EA99DD586D65041C29E2543FA2A55416E94A14B87D650419CA909E1FA2A5541295C8F7287D6504152B81E15FB2A5541C74C629F87D6504157422890FB2A5541C292F0B687D6504182BED0D0FB2A5541000000F087D65041D7A3706DFC2A55419A99998987D65041B81E852BFE2A554171AA20BA86D65041A30403EBFE2A5541152E48A785D65041C44FB0E8FF2A55414D6FC27784D65041FAD0541B012B5541A6C6EC5284D65041D9382D45012B554156C7DC1984D6504176640086012B55418131220C84D65041FE139995012B5541ED2399F383D65041259078B1012B554138D10CE383D65041B62A45C4012B5541554186DA83D650413FA1F4CD012B5541647E761683D650418623B0AC022B55418FC2F58882D65041D7A3704D032B55415484F43F82D6504102E8E777032B5541B686FDF581D65041D41EEEA2032B554148C6A2AA81D650419246C3CE032B5541F6CC94E480D650411EE4F741042B5541480F112480D65041658AF3B1042B554102D162DB7FD65041FE79859E052B55412D90E0DE7FD65041450906C0052B5541868FD0F17FD65041AE08B711062B554161C4EC0580D650417FC5D38B062B5541BA0E682480D65041C3E9EB2A072B55412FAA066480D65041A9662C2C082B554107FEC5CD80D6504170B969CF082B55415C8FC2F581D6504185EB51980A2B5541000000C081D650415C8FC2550D2B5541CA2C968981D65041A97553870D2B55418D42285B80D6504188CB929B0E2B5541EDC2453E80D650410C1520B50E2B55413D0AD7C37DD65041713D0AF7102B5541F6285C5F7ED650410AD7A340112B55410AD7A3E07FD65041713D0AF7112B554148E17A448AD650411F85EBE1162B5541D54D43EE8DD65041B5BD0C9E182B5541E3631FE091D650411A96507C1A2B55418454C72E93D65041B0CC0D121B2B5541C847D51E95D65041F979CD1F192B5541AC06A46E97D6504120ACD5C9162B5541A59CD2FB9DD6504122BE450C102B554191C2105CA8D65041369807AC052B5541713D0AF7AAD650419A999909032B554174FCDB50A7D65041C08BC912FC2A554180337E1AA3D6504103A5CE08F42A5541A6A1F8F2A1D65041DE90D3D4F12A55416871AD29A1D650412F37AC54F02A55413C17AE4A9FD65041F0E18AC2EC2A5541C83824BE9ED65041C6DB55B6EB2A5541A4A2ED959ED65041826C9769EB2A5541A1DFE7099DD650419B0CD075E82A5541232D78D99CD65041C72B6019E82A554130CDABD69AD650411217EC42E42A55410692C45999D650412054FF6BE12A5541171D61BF98D65041079A4F46E02A554156F1BF1D98D6504118A9C9D5E02A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40820 - 133005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000024000000F6285C5F9AD6504114AE47D1132B55418FC2F558A1D65041333333C30C2B5541713D0AF7AAD650419A999909032B5541F6285C3F99D650419A999939E12A5541000000C098D650415C8FC245E02A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A55415C8FC2E591D6504100000010E22A55417B14AE778BD6504185EB5128E12A5541CDCCCC8C89D65041295C8FD2E12A5541B81E857B86D650415C8FC2E5E52A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55410000001083D65041666666F6EE2A5541666666E683D65041333333F3F22A5541C3F5280C84D65041F6285C4FF62A55416666663685D65041E17A146EF82A5541B81E85FB85D65041F6285C1FF92A5541295C8F7287D6504152B81E15FB2A5541000000F087D65041D7A3706DFC2A55419A99998987D65041B81E852BFE2A55417B14AEA785D6504185EB51E8FF2A554114AE47F184D6504114AE4791002B55418FC2F58882D65041D7A3704D032B55411F85EB2180D65041333333B3042B55419A9999D97FD6504148E17AA4052B5541CDCCCC3C80D65041A4703DAA072B5541CDCCCC4C80D6504185EB5108082B55415C8FC2F581D6504185EB51980A2B5541000000C081D650415C8FC2550D2B55413D0AD7C37DD65041713D0AF7102B5541F6285C5F7ED650410AD7A340112B55410AD7A3E07FD65041713D0AF7112B554148E17A448AD650411F85EBE1162B5541AE47E12A93D650418FC2F5181B2B5541F6285C5F9AD6504114AE47D1132B5541
+</a>
+
+<b>
+0106000000010000000103000000010000007600000052F1BF1D98D6504116A9C9D5E02A5541AAB0A19997D650413A4D114BE12A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A5541AEA9C31694D65041F98F1EFEE12A55416683EDD592D650414C625808E22A5541416387E591D650410C229211E22A5541BCEBC7D68FD65041D95CD4C5E12A55412370DCE98DD650417EEA7380E12A5541A53AF4DE8DD650411DECEA7EE12A5541C09B68268DD650414A8CF164E12A5541322E09E58CD650415418BE5BE12A55415FDF3D918CD6504106E6F24FE12A5541202EF1588CD65041D15C0648E12A554144C002EC8BD65041FD71B138E12A55417A8B6A7D8BD65041E9992029E12A5541165A6D768AD6504140698981E12A554139AAC78C89D65041802E96D2E12A5541EE55B37089D650414A78E3F7E12A55419BA77C4E89D65041A4E15625E22A55414480992C89D65041F0545B52E22A5541D8A30DF087D6504118E2DEF6E32A5541AE9FBCB686D650418E041897E52A5541B81E857B86D650415C8FC2E5E52A5541243D334586D6504196AC8E1AE62A5541F80CF41D86D65041B0420048E62A5541B293AABF84D65041B9452C95E72A554170A9F35C84D65041DEDE1EF5E72A5541D2D828FE83D6504138834151E82A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55414DF9EBD782D65041FC1A09AFEB2A5541CC4818D882D650414B55A0B1EB2A5541064E74D882D65041C7AB01B7EB2A554171E935DC82D650413EC23AEFEB2A5541E40C2CDD82D650413EE59EFDEB2A5541BDCCAADE82D650413BCAFF13EC2A5541791A36E982D650415245D2B1EC2A554103449EF982D650413C3765A7ED2A5541762EF51183D65041439FB8FFEE2A5541D4637C1B83D65041BA2A162DEF2A5541E5E70C2083D65041A5B2D142EF2A5541A8B3282183D65041CEE71848EF2A55411D4B2D2583D65041E43A3A5BEF2A55419ED81A2683D65041D243A55FEF2A5541BAA8712883D650413754C86AEF2A5541808C102A83D6504129B37F72EF2A55414E91CD7983D65041E10A26EEF02A5541666666E683D65041333333F3F22A5541338B4EF383D6504119793619F42A5541A13556F483D65041B8B0AC30F42A554183E4B40284D6504127D80378F52A554199C6270C84D650412A2F414FF62A5541D8E5065E84D65041C23556E4F62A55416AFF7DA384D6504159DFBE62F72A55418C199B0985D650414BF2901CF82A554184ED698185D65041692F8BB1F82A5541B81E85FB85D65041F6285C1FF92A554113A99DD586D65041C09E2543FA2A55417094A14B87D6504197A909E1FA2A5541295C8F7287D6504152B81E15FB2A5541C74C629F87D6504154422890FB2A5541C592F0B687D650417FBED0D0FB2A5541000000F087D65041D7A3706DFC2A55419A99998987D65041B81E852BFE2A55416FAA20BA86D65041A20403EBFE2A5541172E48A785D65041C94FB0E8FF2A5541516FC27784D65041FDD0541B012B5541A8C6EC5284D65041DE382D45012B554156C7DC1984D6504174640086012B55418331220C84D6504103149995012B5541E82399F383D650412A9078B1012B554134D10CE383D65041B72A45C4012B5541584186DA83D650413DA1F4CD012B5541627E761683D650418923B0AC022B55418FC2F58882D65041D7A3704D032B55415784F43F82D6504106E8E777032B5541B486FDF581D65041D71EEEA2032B554149C6A2AA81D650419146C3CE032B5541F6CC94E480D650411DE4F741042B5541470F112480D65041668AF3B1042B554106D162DB7FD65041FD79859E052B55412E90E0DE7FD65041440906C0052B5541858FD0F17FD65041AB08B711062B554164C4EC0580D650417AC5D38B062B5541BD0E682480D65041BEE9EB2A072B554133AA066480D65041A6662C2C082B554106FEC5CD80D650416DB969CF082B55415C8FC2F581D6504185EB51980A2B5541000000C081D650415C8FC2550D2B5541C82C968981D65041A97553870D2B55418A42285B80D650418ACB929B0E2B5541EDC2453E80D65041091520B50E2B55413D0AD7C37DD65041713D0AF7102B5541F6285C5F7ED650410AD7A340112B55410AD7A3E07FD65041713D0AF7112B554148E17A448AD650411F85EBE1162B5541D34D43EE8DD65041B3BD0C9E182B5541DE631FE091D650411B96507C1A2B55418854C72E93D65041B2CC0D121B2B5541C647D51E95D65041FC79CD1F192B5541B006A46E97D6504124ACD5C9162B5541A59CD2FB9DD6504125BE450C102B554190C2105CA8D650413A9807AC052B5541713D0AF7AAD650419A999909032B554175FCDB50A7D65041C58BC912FC2A554182337E1AA3D65041FFA4CE08F42A5541A7A1F8F2A1D65041E190D3D4F12A55416871AD29A1D650412B37AC54F02A55414017AE4A9FD65041F1E18AC2EC2A5541C43824BE9ED65041CADB55B6EB2A5541A6A2ED959ED65041836C9769EB2A5541A3DFE7099DD650419D0CD075E82A5541232D78D99CD65041C42B6019E82A55412ECDABD69AD650411517EC42E42A55410B92C45999D650411E54FF6BE12A55411C1D61BF98D65041079A4F46E02A554152F1BF1D98D6504116A9C9D5E02A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40820 - 331914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000024000000F6285C5F9AD6504114AE47D1132B55418FC2F558A1D65041333333C30C2B5541713D0AF7AAD650419A999909032B5541F6285C3F99D650419A999939E12A5541000000C098D650415C8FC245E02A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A55415C8FC2E591D6504100000010E22A55417B14AE778BD6504185EB5128E12A5541CDCCCC8C89D65041295C8FD2E12A5541B81E857B86D650415C8FC2E5E52A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55410000001083D65041666666F6EE2A5541666666E683D65041333333F3F22A5541C3F5280C84D65041F6285C4FF62A55416666663685D65041E17A146EF82A5541B81E85FB85D65041F6285C1FF92A5541295C8F7287D6504152B81E15FB2A5541000000F087D65041D7A3706DFC2A55419A99998987D65041B81E852BFE2A55417B14AEA785D6504185EB51E8FF2A554114AE47F184D6504114AE4791002B55418FC2F58882D65041D7A3704D032B55411F85EB2180D65041333333B3042B55419A9999D97FD6504148E17AA4052B5541CDCCCC3C80D65041A4703DAA072B5541CDCCCC4C80D6504185EB5108082B55415C8FC2F581D6504185EB51980A2B5541000000C081D650415C8FC2550D2B55413D0AD7C37DD65041713D0AF7102B5541F6285C5F7ED650410AD7A340112B55410AD7A3E07FD65041713D0AF7112B554148E17A448AD650411F85EBE1162B5541AE47E12A93D650418FC2F5181B2B5541F6285C5F9AD6504114AE47D1132B5541
+</a>
+
+<b>
+0106000000010000000103000000010000007600000052F1BF1D98D6504116A9C9D5E02A5541AAB0A19997D650413A4D114BE12A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A5541AEA9C31694D65041F98F1EFEE12A55416683EDD592D650414C625808E22A5541416387E591D650410C229211E22A5541BCEBC7D68FD65041D95CD4C5E12A55412370DCE98DD650417EEA7380E12A5541A53AF4DE8DD650411DECEA7EE12A5541C09B68268DD650414A8CF164E12A5541322E09E58CD650415418BE5BE12A55415FDF3D918CD6504106E6F24FE12A5541202EF1588CD65041D15C0648E12A554144C002EC8BD65041FD71B138E12A55417A8B6A7D8BD65041E9992029E12A5541165A6D768AD6504140698981E12A554139AAC78C89D65041802E96D2E12A5541EE55B37089D650414A78E3F7E12A55419BA77C4E89D65041A4E15625E22A55414480992C89D65041F0545B52E22A5541D8A30DF087D6504118E2DEF6E32A5541AE9FBCB686D650418E041897E52A5541B81E857B86D650415C8FC2E5E52A5541243D334586D6504196AC8E1AE62A5541F80CF41D86D65041B0420048E62A5541B293AABF84D65041B9452C95E72A554170A9F35C84D65041DEDE1EF5E72A5541D2D828FE83D6504138834151E82A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55414DF9EBD782D65041FC1A09AFEB2A5541CC4818D882D650414B55A0B1EB2A5541064E74D882D65041C7AB01B7EB2A554171E935DC82D650413EC23AEFEB2A5541E40C2CDD82D650413EE59EFDEB2A5541BDCCAADE82D650413BCAFF13EC2A5541791A36E982D650415245D2B1EC2A554103449EF982D650413C3765A7ED2A5541762EF51183D65041439FB8FFEE2A5541D4637C1B83D65041BA2A162DEF2A5541E5E70C2083D65041A5B2D142EF2A5541A8B3282183D65041CEE71848EF2A55411D4B2D2583D65041E43A3A5BEF2A55419ED81A2683D65041D243A55FEF2A5541BAA8712883D650413754C86AEF2A5541808C102A83D6504129B37F72EF2A55414E91CD7983D65041E10A26EEF02A5541666666E683D65041333333F3F22A5541338B4EF383D6504119793619F42A5541A13556F483D65041B8B0AC30F42A554183E4B40284D6504127D80378F52A554199C6270C84D650412A2F414FF62A5541D8E5065E84D65041C23556E4F62A55416AFF7DA384D6504159DFBE62F72A55418C199B0985D650414BF2901CF82A554184ED698185D65041692F8BB1F82A5541B81E85FB85D65041F6285C1FF92A554113A99DD586D65041C09E2543FA2A55417094A14B87D6504197A909E1FA2A5541295C8F7287D6504152B81E15FB2A5541C74C629F87D6504154422890FB2A5541C592F0B687D650417FBED0D0FB2A5541000000F087D65041D7A3706DFC2A55419A99998987D65041B81E852BFE2A55416FAA20BA86D65041A20403EBFE2A5541172E48A785D65041C94FB0E8FF2A5541516FC27784D65041FDD0541B012B5541A8C6EC5284D65041DE382D45012B554156C7DC1984D6504174640086012B55418331220C84D6504103149995012B5541E82399F383D650412A9078B1012B554134D10CE383D65041B72A45C4012B5541584186DA83D650413DA1F4CD012B5541627E761683D650418923B0AC022B55418FC2F58882D65041D7A3704D032B55415784F43F82D6504106E8E777032B5541B486FDF581D65041D71EEEA2032B554149C6A2AA81D650419146C3CE032B5541F6CC94E480D650411DE4F741042B5541470F112480D65041668AF3B1042B554106D162DB7FD65041FD79859E052B55412E90E0DE7FD65041440906C0052B5541858FD0F17FD65041AB08B711062B554164C4EC0580D650417AC5D38B062B5541BD0E682480D65041BEE9EB2A072B554133AA066480D65041A6662C2C082B554106FEC5CD80D650416DB969CF082B55415C8FC2F581D6504185EB51980A2B5541000000C081D650415C8FC2550D2B5541C82C968981D65041A97553870D2B55418A42285B80D650418ACB929B0E2B5541EDC2453E80D65041091520B50E2B55413D0AD7C37DD65041713D0AF7102B5541F6285C5F7ED650410AD7A340112B55410AD7A3E07FD65041713D0AF7112B554148E17A448AD650411F85EBE1162B5541D34D43EE8DD65041B3BD0C9E182B5541DE631FE091D650411B96507C1A2B55418854C72E93D65041B2CC0D121B2B5541C647D51E95D65041FC79CD1F192B5541B006A46E97D6504124ACD5C9162B5541A59CD2FB9DD6504125BE450C102B554190C2105CA8D650413A9807AC052B5541713D0AF7AAD650419A999909032B554175FCDB50A7D65041C58BC912FC2A554182337E1AA3D65041FFA4CE08F42A5541A7A1F8F2A1D65041E190D3D4F12A55416871AD29A1D650412B37AC54F02A55414017AE4A9FD65041F1E18AC2EC2A5541C43824BE9ED65041CADB55B6EB2A5541A6A2ED959ED65041836C9769EB2A5541A3DFE7099DD650419D0CD075E82A5541232D78D99CD65041C42B6019E82A55412ECDABD69AD650411517EC42E42A55410B92C45999D650411E54FF6BE12A55411C1D61BF98D65041079A4F46E02A554152F1BF1D98D6504116A9C9D5E02A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40833 - 56927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000713D0A37CAD75041AE47E1AA00285541CDCCCC4CC9D75041B81E85FB022855418FC2F598C6D7504148E17AF40B2855419A9999B9E6D750417B14AED719285541D7A370BD06D85041E17A14AE27285541EC51B88E07D85041C3F528CC252855418FC2F5F80BD85041D7A370ED1B2855410AD7A350EBD75041000000D00D285541A4703D0ACAD75041E17A146EFF275541713D0A37CAD75041AE47E1AA00285541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D13DA2B3C6D75041D99202000C28554107A1E205DBD75041DA2CA7A2142855416F243B8C00D85041BC10EC0025285541BB3BC8C606D850417E8EEC8B272855418DF63E8607D850419D73ACDF25285541EC51B88E07D85041C3F528CC2528554114F3489809D85041BB802B3E21285541F0FFC3BA0AD850410066C8B41E2855418FC2F5F80BD85041D7A370ED1B2855410AD7A350EBD75041000000D00D2855411A64460CE8D750410C2C7F660C28554179824A9BD5D75041CF035078042855414323E697D4D750411265D2FD03285541F8BB5025CAD750412E67C879FF27554139CFDF33CAD75041D6607E9400285541713D0A37CAD75041AE47E1AA0028554129564235CAD7504199BD62AF00285541E6F00439CAD75041AF0367F80028554183754914C9D75041EBC03CBD03285541E7A9BCFBC8D7504196BFA708042855418AF213FFC6D7504114E270A10A285541D13DA2B3C6D75041D99202000C285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968549 - 1519262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001700000039055B6454A95041F2EE7A52DFD454418FC2F59853A950417B14AE57ECD45441000000A053A950418FC2F5A8F2D454418FC2F58854A95041F6285CBFF8D45441B81E85FB57A950411F85EBB103D55441295C8F0260A950417B14AEA7FFD45441B81E853B65A95041A4703D2AFCD4544152B81ED567A9504114AE4721F9D45441AE47E1AA69A9504133333313F4D45441EC51B8DE69A950418FC2F588E4D45441E17A14EE68A9504148E17AA4D3D45441F6285CCF68A950413D0AD743CBD45441D7A3704D6AA9504166666686C5D45441D7A3702D6EA9504133333333BED454418FC2F5E872A95041D7A3701DB3D45441000000705EA95041B81E85CBA7D4544148E17A0458A950418FC2F5D8C3D454413333336355A950417B14AE87CDD45441460D7FC367A950418085E030DBD454417CF36A0A65A95041A8EC3015E6D454411DA62EDF5CA9504151D9610AE4D45441F36AE2615DA95041DB35E64BE0D4544139055B6454A95041F2EE7A52DFD45441
+</a>
+
+<b>
+0106000000010000000103000000010000005100000036C6B5405BA9504113F2BF49CFD4544194ED2CA55AA95041624EEF57D1D454414C2B98A45AA95041F1D21859D1D45441C0D9DA9A62A9504184CC1D1CD7D45441D40C08DD63A950418F153E02D8D4544127B34D0564A95041EFB789E5DBD45441E364CD3466A950411E556C1CDED45441B814DF4766A95041A68F8C66E1D45441CAAE2E8165A9504139701CF9E3D454411FDF580E64A9504113FB599BE4D454419ABA23DA62A95041366A5105E5D4544137A89E6261A9504191061EBEE4D45441B3DDD4DF5EA9504183527019E4D45441838BF0DC5DA9504183095033E3D454419EFE3B5B5DA95041B31509E4E1D45441B784383C5DA9504197D8A92FE1D45441CC7609865CA95041B59D1D5BE0D45441217C64B057A95041B2808DBFDFD4544180FAC53E57A95041D8D07013E1D45441537C59C055A95041DE7343FCE0D454414ED986D755A9504138474072DFD45441AD4F563654A95041CBDE4E38DFD45441EE8DC80754A950416A9D1DE2E1D45441DF59669853A9504184EB311FECD4544108DA3D9C53A95041030D8E49EFD4544123E4269F53A9504179F021E6F1D45441219BF29F53A950413DC9F09CF2D45441D525311754A950416D4E4DC6F5D45441678C8F6854A95041D5879FE6F7D454410C7FA67654A95041106DE044F8D454410E381B8254A95041420D8391F8D45441BC92918854A950414BF4BDBCF8D45441FC4BD79454A95041388716E5F8D45441D33193C754A95041B6196988F9D454418321081655A950410FF7547FFAD4544142D1124A55A9504118049724FBD454411414946D55A950416BDE5595FBD4544160E12AFC57A95041081998B103D55441D15F04D758A950419E25744303D55441C4E7DAC759A9504140453FCA02D554419D52F4805AA950416F9C176D02D554417E73F2345BA95041F6DE811202D55441B95AEFB65CA950412D80CF4E01D55441D6DFDA085EA95041A2BDD9A500D554413ED4640060A95041A628C5A8FFD45441895018E361A950419B947D66FED454413698F95D63A95041C7F00C69FDD45441EF4D853A65A950415464E82AFCD45441F564C68A65A950412BA92BCEFBD45441B73BF32A67A9504155ACEBE7F9D454417D6A52D267A95041C3D38B24F9D45441AC0557DA67A95041227AE612F9D45441337289BB68A9504151E988A6F6D454414F5018A369A95041049F542AF4D45441221BF2AA69A95041F7F5270EF4D45441EC51B8DE69A950418FC2F588E4D45441E17A14EE68A9504148E17AA4D3D45441B5F523D468A95041DD7C40C5CCD45441F2EFE3D368A95041BAFD1D80CCD4544116DA3DD068A950416A0D7340CBD4544118FA933569A950416C55B8BAC9D454412C2690D969A9504185F30C44C7D45441C41550466AA95041EE72CFA1C5D45441C02BA44C6AA9504157C47889C5D45441F3BB9C536AA950412683BB7AC5D4544118CFB3206BA95041B4C30BF7C3D4544106BE85A96BA95041AA7369F4C2D454416C24EC6F6CA950413B365F7DC1D454414414A95F6DA950412D5EBBB9BFD45441AF68A42C6EA950413B43B534BED45441AD51B3B66EA95041B3490DF2BCD45441A751B3766FA950418AED7D2FBBD45441F67FD53770A95041E6E0966BB9D454410786DB0C71A950413A159F78B7D45441A74551EB71A95041D8E68C6FB5D45441A22857E772A950417268921DB3D4544183A36B556FA95041C720B122B1D454417D5978FB62A95041FE73D84EAAD45441A53BC09860A95041BD5D86C9B2D45441B97A84CB5FA9504129BC3CF2B7D4544136C6B5405BA9504113F2BF49CFD45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>199384 - 58319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002C0000001F85EB6199C750413D0AD743E4265541D7A3708D99C7504133333333E226554148E17A24A0C750410AD7A3A0E1265541B81E854BA0C75041C3F528FCDD2655411F85EB6199C75041E17A143EDE265541295C8FB292C75041295C8F22DE265541C3F528AC8AC75041C3F528FCDC2655411F85EB3187C75041F6285CFFDB2655417B14AE9782C750410AD7A3B0DA265541B81E859B76C75041B81E851BD62655418FC2F5E863C750417B14AEA7CE2655415C8FC20562C75041D7A370FDCD2655413D0AD7F35FC75041666666E6CC2655415C8FC2155DC75041A4703D7ACA26554148E17A4455C75041CDCCCCACBC26554152B81EA550C750418FC2F588BC265541D7A370BD4EC75041E17A144EBE265541D7A370FD4DC750410AD7A390BF265541295C8F024EC7504166666636C0265541A4703D2A49C750415C8FC2F5C5265541CDCCCC0C48C750410AD7A330CE265541000000E048C7504148E17A14D5265541A4703DCA42C750413D0AD743D726554152B81E1542C7504185EB51D8D8265541E17A142E44C75041713D0A07DE265541D7A3701D45C750419A999999E2265541D7A3701D45C7504148E17A34E7265541713D0A5748C750415C8FC285EC265541000000D04CC75041A4703D5AEC2655410AD7A3904FC75041CDCCCCBCE82655415C8FC28553C7504133333393E32655410000004059C75041A4703D0ADD265541713D0AD760C75041CDCCCCACDA265541A4703D1A6AC750415C8FC235D9265541C3F5287C77C75041713D0AB7E2265541EC51B86E80C7504148E17AB4E7265541713D0A2782C75041AE47E16AEE26554152B81EA58AC750410AD7A320F3265541A4703DFA9DC75041CDCCCCFCED265541A4703DFAADC7504152B81E85ED2655415C8FC245B0C7504148E17A74ED26554152B81E75A6C750415C8FC285EC265541D7A370CDA6C75041B81E859BE42655411F85EB6199C750413D0AD743E4265541
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000002B7C59A247C7504183B3D45BEB2655416EF6A20048C75041C62D1EBAEB265541713D0A5748C750415C8FC285EC265541000000D04CC75041A4703D5AEC2655410AD7A3904FC75041CDCCCCBCE82655415C8FC28553C7504133333393E32655410000004059C75041A4703D0ADD265541713D0AD760C75041CDCCCCACDA265541A4703D1A6AC750415C8FC235D9265541C3F5287C77C75041713D0AB7E2265541EC51B86E80C7504148E17AB4E7265541713D0A2782C75041AE47E16AEE26554152B81EA58AC750410AD7A320F3265541A4703DFA9DC75041CDCCCCFCED26554160D7014CA3C750410AC802D5ED2655413CC1FA27A3C75041B1192778E9265541BC13F63D9CC75041BBA32299EA2655411FFD384F8BC750418F46FAB6EC2655412BBC6ECE85C7504139C1E350EA2655418476BF9281C750419640B2A5E6265541E7BA0B787EC75041B34E61D6E2265541098E38397BC750419975EC03E0265541FC73F9E572C750416A8880EFDA265541A6EEE27F70C7504196E5A8D1D826554130CBD9B66AC75041FFEE7247D6265541DC7AFDAE61C75041B8B8D592D52655412DE08CB055C7504113036A89D82655413A9FC22F50C75041C5D214E6DD26554105EDD88A4AC750411923F1EDE62655415775A3F646C750413A12B540EA2655412B7C59A247C7504183B3D45BEB265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42214 - 3057159
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B87E14D35041713D0A97C83455415C8FC29513D3504148E17A54CE3455418FC2F57812D35041666666B6D53455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455417B14AE473CD35041CDCCCCFCD4345541C3F5284C2ED35041F6285C3FCF3455413D0AD75316D350418FC2F568C5345541333333F314D35041295C8F22C6345541EC51B87E14D35041713D0A97C8345541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C613060B3AD350418492B711D4345541726F991635D350419E49BB95DB345541D5EA12F835D35041E5EAC836DC3455419D363B7735D35041C16F2708DD34554172C4CED232D3504172837900E2345541BE3EC68B32D35041589E5E60E2345541AB9E3EC432D350411298AA76E234554134B46FCB32D350418F66B56CE23455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455419B379B423CD35041AE3591EAD434554159D70DD63AD35041754E1065D4345541C613060B3AD350418492B711D4345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42214 - 3330478
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B87E14D35041713D0A97C83455415C8FC29513D3504148E17A54CE3455418FC2F57812D35041666666B6D53455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455417B14AE473CD35041CDCCCCFCD4345541C3F5284C2ED35041F6285C3FCF3455413D0AD75316D350418FC2F568C5345541333333F314D35041295C8F22C6345541EC51B87E14D35041713D0A97C8345541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C613060B3AD350418492B711D4345541726F991635D350419E49BB95DB345541D5EA12F835D35041E5EAC836DC3455419D363B7735D35041C16F2708DD34554172C4CED232D3504172837900E2345541BE3EC68B32D35041589E5E60E2345541AB9E3EC432D350411298AA76E234554134B46FCB32D350418F66B56CE23455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455419B379B423CD35041AE3591EAD434554159D70DD63AD35041754E1065D4345541C613060B3AD350418492B711D4345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42525 - 255214
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000AE47E12AEBD150413D0AD73394355541713D0AC7EED15041295C8F72913555415C8FC245F1D150417B14AE478F355541295C8FF2F1D1504114AE47118D355541000000E0F2D150410AD7A3908B3555411F85EB01F1D15041295C8F1282355541EC51B8BEE3D1504148E17A648B3555411F85EB01E0D15041B81E854B8E355541C3F528ECDCD15041E17A141E9135554152B81EB5D9D150419A9999599335554185EB51C8D4D150415C8FC2A59535554152B81E85C9D1504148E17A34993555419A999959CED150415C8FC2559F3555415C8FC2F5E1D15041295C8FE2993555418FC2F5C8E5D1504185EB517898355541AE47E12AEBD150413D0AD73394355541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000E08CFD86E5D1504161F5D7238A355541EC51B8BEE3D1504148E17A648B35554199216170E3D15041295B038E8B3555414164AE31E0D1504154C6DE238E3555418FCC7E42DFD1504173C946FC8E3555417AB639F2DCD1504135EC981391355541C63154E0D9D1504176A3B2419335554164B33E7FD8D15041F8E8C3D593355541014873FBD4D150418AB9F79195355541ABA33645D4D1504127774ED6953555413FFCFE1BCFD15041F0E856709735554167E98E09CAD15041AE5A5F0A99355541AFE46E87C9D1504101706A37993555419A999959CED150415C8FC2559F3555415C8FC2F5E1D15041295C8FE299355541974324F7E1D150417A82ADE299355541CF6F54D8E5D150413C37C87798355541A30D7AADEFD15041D5F190AE9035554122B51E3CF1D15041EADEB3368F3555412E8FF7E6F1D150412093D2F18C355541B26BA95AF2D15041CB8F04A48A3555418DD1EB01F1D15041A9E0901282355541E08CFD86E5D1504161F5D7238A355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>199589 - 323556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A3F0A1C75041CDCCCCDC3A26554114AE47019DC75041A4703D3A3A2655410000006099C750410AD7A3C03926554152B81E2593C750413D0AD7633A2655411F85EB0191C750413333338341265541F6285CFF83C750419A9999E942265541C3F5288C81C75041F6285CEF482655417B14AE977BC75041A4703DCA46265541AE47E1BA85C750419A99992950265541C3F528FC86C75041295C8F92502655419A9999298FC75041A4703D3A4F2655415C8FC2C595C750411F85EB114F2655418FC2F5589BC75041666666564E265541F6285C5F9EC7504114AE47F14D265541EC51B80EA4C75041B81E85BB4C26554152B81ED5A7C75041E17A14EE4B2655410AD7A3F0A1C75041CDCCCCDC3A265541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000885DED2992C75041A1C2EE274F2655417506C25B94C7504190AD8B1A4F2655417506C25B94C75041D2A0B0C14E265541EC6B7C8E95C75041CFC385A84D2655419E582F5A98C7504100A247424D265541022AE7C69DC75041390730054E265541F6285C5F9EC7504114AE47F14D26554130EC12F9A3C75041358E20C04C2655411E609688A4C75041787081294B2655413594AC43A7C750419196CC484A2655410AD7A3F0A1C75041CDCCCCDC3A26554114AE47019DC75041A4703D3A3A2655410000006099C750410AD7A3C039265541332AE51195C750410E636A313A26554152B81E2593C750413D0AD7633A2655411F85EB0191C750413333338341265541F6285CFF83C750419A9999E942265541AA113C8D83C750418B852302442655417B20D54E85C75041C4BCEDF445265541C244BA9183C75041F26C624C4826554137E592A981C7504179590EA748265541C3F5288C81C75041F6285CEF482655417B14AE977BC75041A4703DCA462655418662506B81C75041C1CD4F2D4C265541AE47E1BA85C750419A99992950265541C3F528FC86C75041295C8F9250265541B0C7CDBB8DC750418A9267764F2655419A9999298FC75041A4703D3A4F265541885DED2992C75041A1C2EE274F265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43334 - 251781
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7D38CDB50410AD7A3D093025541EC51B80E95DB5041713D0A1791025541CDCCCCAC9BDB5041D7A3708D8F0255417B14AE879BDB5041EC51B82E89025541AE47E1AA83DB5041295C8F4287025541F6285CBF6ADB504114AE4741850255413D0AD7D351DB5041F6285C3F83025541000000E04FDB50413D0AD7F38B025541000000E04FDB504114AE47518D0255417B14AE9750DB5041E17A147E8E02554148E17AD451DB50410AD7A3108F025541713D0A6770DB50418FC2F5A8910255410AD7A3A079DB5041A4703DAA920255410AD7A38086DB504100000070930255413D0AD7D38CDB50410AD7A3D093025541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000000AD7A38086DB50410000007093025541C17072C788DB504115BDC892930255414392D7D38CDB50411C9FA2D093025541EB41B70E95DB504168DC081791025541F795C01E95DB50413BA95013910255416460337F98DB5041CA6E784A90025541160B84A19ADB504158588ACB8F0255412BB013FE9ADB5041C34513DE8E025541D9E0ECD19ADB50410FA9132089025541D6B8AAE290DB50416D632D53880255410FB0AAB584DB504191CA0D588702554150B1E0AA83DB50415C3E90428702554198951E5D78DB5041FD40BC5986025541F6285CBF6ADB504114AE474185025541496B71E352DB5041925F3D55830255416D07D7D351DB504180355C3F83025541000000E04FDB50413D0AD7F38B025541000000E04FDB504114AE47518D0255417B14AE9750DB5041E17A147E8E025541CD58C94151DB5041DD96C6CC8E02554193437AD451DB50413143A3108F025541D09706395DDB5041446E320890025541713D0A6770DB50418FC2F5A8910255410415AD1174DB504165C9370F92025541EBCAA3A079DB504121133CAA92025541CDD5291F82DB5041A51EB62C930255410AD7A38086DB50410000007093025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43334 - 351946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7D38CDB50410AD7A3D093025541EC51B80E95DB5041713D0A1791025541CDCCCCAC9BDB5041D7A3708D8F0255417B14AE879BDB5041EC51B82E89025541AE47E1AA83DB5041295C8F4287025541F6285CBF6ADB504114AE4741850255413D0AD7D351DB5041F6285C3F83025541000000E04FDB50413D0AD7F38B025541000000E04FDB504114AE47518D0255417B14AE9750DB5041E17A147E8E02554148E17AD451DB50410AD7A3108F025541713D0A6770DB50418FC2F5A8910255410AD7A3A079DB5041A4703DAA920255410AD7A38086DB504100000070930255413D0AD7D38CDB50410AD7A3D093025541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000000AD7A38086DB50410000007093025541C17072C788DB504115BDC892930255414392D7D38CDB50411C9FA2D093025541EB41B70E95DB504168DC081791025541F795C01E95DB50413BA95013910255416460337F98DB5041CA6E784A90025541160B84A19ADB504158588ACB8F0255412BB013FE9ADB5041C34513DE8E025541D9E0ECD19ADB50410FA9132089025541D6B8AAE290DB50416D632D53880255410FB0AAB584DB504191CA0D588702554150B1E0AA83DB50415C3E90428702554198951E5D78DB5041FD40BC5986025541F6285CBF6ADB504114AE474185025541496B71E352DB5041925F3D55830255416D07D7D351DB504180355C3F83025541000000E04FDB50413D0AD7F38B025541000000E04FDB504114AE47518D0255417B14AE9750DB5041E17A147E8E025541CD58C94151DB5041DD96C6CC8E02554193437AD451DB50413143A3108F025541D09706395DDB5041446E320890025541713D0A6770DB50418FC2F5A8910255410415AD1174DB504165C9370F92025541EBCAA3A079DB504121133CAA92025541CDD5291F82DB5041A51EB62C930255410AD7A38086DB50410000007093025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>44958 - 378800
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000009A999979E9DD504148E17AB480F65441EC51B89EE8DD5041666666B681F654415C8FC245E8DD5041AE47E18A82F65441295C8FB2DFDD50418FC2F50887F65441C3F5287CE0DD5041666666A689F65441B81E85CBE1DD5041EC51B89E89F6544185EB51B8E8DD50415C8FC24586F65441295C8FF2EBDD5041D7A3705D84F65441AE47E15AFFDD5041B81E850B76F6544152B81E65F9DD50410AD7A3606FF654417B14AEA7F1DD5041295C8F226CF6544114AE47B1EADD5041666666267EF654419A999979E9DD504148E17AB480F65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EF09C345E8DD5041EA22E08A82F6544142EC1410E1DD504164DDD75186F654417D668FB2DFDD5041DBE4F50887F6544195AC287CE0DD5041667365A689F654413251E260E1DD5041C27B29A189F65441B81E85CBE1DD5041EC51B89E89F65441179B6DD9E5DD5041877F00A987F6544163DD51B8E8DD5041835AC24586F65441F7ACC732E9DD50419D6462FD85F65441295C8FF2EBDD5041D7A3705D84F65441D9330D8EF6DD5041E236CA897CF6544128A3E05AFFDD5041AB66840B76F6544152B81E65F9DD50410AD7A3606FF6544103BD2EF0F5DD50416E4DEAED6DF65441249FADA7F1DD5041C68B90226CF6544114AE47B1EADD5041666666267EF654419A999979E9DD504148E17AB480F65441EC51B89EE8DD5041666666B681F65441EF09C345E8DD5041EA22E08A82F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45360 - 58069
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000260000003D0AD76358D65041AE47E11AB8025541A4703D4A5BD650418FC2F598B8025541E17A14DE5DD6504185EB5108B6025541333333F361D650410AD7A3D0B1025541CDCCCC8C5ED65041C3F528FCAB0255415C8FC2855BD65041F6285CCFA6025541D7A370AD58D65041D7A3703DA1025541D7A370FD58D65041AE47E1EA9D025541B81E85AB5AD65041C3F528BC9B025541B81E852B5AD650418FC2F5289A02554148E17AA459D6504148E17A4498025541295C8F3259D65041E17A145E96025541295C8F5254D650419A99999999025541713D0A8752D65041D7A3704D9A02554152B81EA550D6504185EB51B89A025541000000204DD65041333333439B025541713D0A7743D65041AE47E1AA9B025541666666A63DD650415C8FC2859B025541333333A334D650415C8FC2E59A02554148E17A8430D650415C8FC26599025541E17A14AE2CD65041713D0A679802554152B81EA52AD65041A4703D9A9C025541C3F5285C26D6504148E17A049C02554148E17A6424D65041333333939D0255415C8FC28524D6504100000080A3025541713D0AC726D650415C8FC255A80255419A9999E929D65041D7A370EDAC02554152B81EA52DD65041000000B0AF02554152B81ED530D650419A999909B10255413333335332D65041AE47E15AB40255418FC2F5E834D650415C8FC255B60255417B14AEE737D65041333333D3B60255419A9999B93DD65041F6285C1FB90255410000003047D65041713D0AA7BF025541CDCCCC8C53D65041713D0A47C60255413D0AD79359D6504152B81E05BD025541B81E854B57D6504100000020BA0255413D0AD76358D65041AE47E11AB8025541
+</a>
+
+<b>
+0106000000010000000103000000010000005600000052B81EA52DD65041000000B0AF0255415D59854330D650412C3BEFCBB002554152B81ED530D650419A999909B10255413333335332D65041AE47E15AB4025541A1D3C21933D650419A24F8F2B40255418BBFE8E934D65041A44D9F55B602554109F38C3535D65041FD694A62B6025541D3170D3D35D65041A28F8463B60255412058576035D650416D9E4A69B602554130A3529235D6504177017871B60255415F07A25C36D650417C639192B60255417B14AEE737D65041333333D3B6025541BFB69D7E39D650411484D773B70255418EBFE88939D65041C8A92E78B7025541A4284F403CD65041E3BF6B8AB80255419A9999B93DD65041F6285C1FB90255419E381F2D40D65041597E68D0BA02554151D1EAC840D65041F8DCEB3BBB02554162D8886D41D6504154C285ADBB025541814D97E441D650418FB6AEFFBB025541A476FEFC41D65041E9D48510BC0255418DD7EB2E47D650415AAA4BA6BF0255412BF55B8D53D650410C5E2E46C6025541A8931CB953D650416F97FB02C6025541231DB19856D6504123CC3899C10255419510E13657D650410BFD43A6C0025541365179A857D65041774ACCF7BF0255413D0AD79359D6504152B81E05BD025541B81E854B57D6504100000020BA0255413D0AD76358D65041AE47E11AB8025541654241FF58D65041DD134635B8025541A4703D4A5BD650418FC2F598B8025541E17A14DE5DD6504185EB5108B60255410811ED055ED650414F0528DFB5025541E481DEF261D650414A9580D0B102554170751A3C5CD650416B900B07A80255415C8FC2855BD65041F6285CCFA6025541935713045BD65041EE0A76D1A5025541E0254FF05AD650410CDD61ABA5025541C93251B758D65041A21AC750A1025541D7A370AD58D65041D7A3703DA10255415C1D97D858D650416785AA729F025541D7A370FD58D65041AE47E1EA9D0255418E6D30AB5AD650411FB405BC9B0255416477B95B5AD65041E1D9CDC09A025541B81E852B5AD650418FC2F5289A0255412493EED159D65041C0008CE798025541E14EABBF59D65041F580D2A898025541E8CDD4B959D65041DEDA14919802554148E17AA459D6504148E17A4498025541E6EDDF3259D65041D37B6C5F96025541E45D250957D650414B3C09CD97025541295C8F5254D650419A99999999025541379CF13054D65041A496C1A69902554116D4961154D65041909F57B499025541C71FD1A853D65041131008DC99025541713D0A8752D65041D7A3704D9A0255415FACCEC751D65041C5FBD9779A025541DD4751B251D65041EF1FD07E9A025541D931834D51D650418A57F9929A02554152B81EA550D6504185EB51B89A02554138232F5550D65041DDC0A3C49A025541BC915D2F50D65041291134CC9A0255416D8CB5164DD650419876FB449B025541B96D30EB47D65041F8DC617B9B025541879E590C45D65041A41EE3999B025541713D0A7743D65041AE47E1AA9B0255410D57E42043D65041CF5ABBA89B0255418B8836593ED65041E502388A9B025541666666A63DD650415C8FC2859B0255411E79D5313CD650414559EC6B9B0255415530269439D650413339F13D9B02554131F78CC434D6504158A312E89A025541333333A334D650415C8FC2E59A02554148E17A8430D650415C8FC26599025541E17A14AE2CD65041713D0A679802554152B81EA52AD65041A4703D9A9C025541ACA0D15C26D650412FE891049C0255413FD43F0A26D65041F15452459C025541D84C87BC25D6504177B2D8829C025541F29C876424D650417D5D7A939D0255415C8FC28524D6504100000080A3025541713D0AC726D650415C8FC255A80255417581D1AC28D65041BBF9611DAB02554179AA59EA29D65041CCA9FEEDAC02554152B81EA52DD65041000000B0AF025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46601 - 1530093
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000001A00000052B81E95D2D35041713D0AA7BF095541CDCCCCCCD1D350413D0AD7A3C109554166666666CDD35041295C8F52C90955411F85EB61D7D3504100000050CF0955419A9999A9E7D35041D7A370DDD6095541A4703DDAEED35041295C8F32CB095541333333E3DFD350415C8FC2A5C409554185EB5198D6D35041B81E85EBC00955413D0AD7D3D6D35041D7A3707DC0095541E17A143EE0D35041D7A3703DC4095541C3F5288CE2D3504114AE47E1C0095541C3F5280CE0D35041B81E85ABBF095541C3F528FCE0D3504114AE4761BE095541000000E0E3D35041B81E850BBF0955413D0AD703E7D3504148E17AA4BA095541AE47E15AF6D350411F85EB11C109554185EB5138F7D35041D7A3708DBC095541666666E6F7D35041AE47E15AB5095541E17A14AEECD35041C3F5280CB50955410AD7A330D4D3504100000060B409554114AE4721D3D3504185EB5158B5095541666666A6D2D350410AD7A3D0BA09554148E17A54D2D3504148E17A34BF09554133333313D5D350418FC2F548C00955415C8FC2F5D4D350419A999999C009554152B81E95D2D35041713D0AA7BF095541050000003D0AD7B3F1D350419A9999B9BB095541000000C0F4D350419A9999F9BC095541C3F5280CF4D35041F6285CCFBE0955415C8FC2A5F0D35041F6285C8FBD0955413D0AD7B3F1D350419A9999B9BB095541
+</a>
+
+<b>
+010600000001000000010300000001000000100000009795B31EF7D3504111D53B13BD095541EA8C2D6FF6D35041FEBE2EAEC0095541C856B29F24D45041ACDC3CA5CB0955410000008025D450410AD7A360CA095541AE47E11A25D4504166666636CA09554152B81E6525D450410AD7A340C9095541D7A3708D25D45041666666A6C80955418FC2F50829D450410AD7A3C0BC095541D7A370FD27D4504152B81E75BB095541D7A3709D11D450417B14AEE7B5095541333333B30BD45041A4703DFAB4095541666666A600D45041C3F528ACB5095541218C4FE8F7D35041DD62CC5BB509554157A1888DF7D35041688E7D07B909554185EB5138F7D35041D7A3708DBC0955419795B31EF7D3504111D53B13BD095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46601 - 3359349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000001A00000052B81E95D2D35041713D0AA7BF095541CDCCCCCCD1D350413D0AD7A3C109554166666666CDD35041295C8F52C90955411F85EB61D7D3504100000050CF0955419A9999A9E7D35041D7A370DDD6095541A4703DDAEED35041295C8F32CB095541333333E3DFD350415C8FC2A5C409554185EB5198D6D35041B81E85EBC00955413D0AD7D3D6D35041D7A3707DC0095541E17A143EE0D35041D7A3703DC4095541C3F5288CE2D3504114AE47E1C0095541C3F5280CE0D35041B81E85ABBF095541C3F528FCE0D3504114AE4761BE095541000000E0E3D35041B81E850BBF0955413D0AD703E7D3504148E17AA4BA095541AE47E15AF6D350411F85EB11C109554185EB5138F7D35041D7A3708DBC095541666666E6F7D35041AE47E15AB5095541E17A14AEECD35041C3F5280CB50955410AD7A330D4D3504100000060B409554114AE4721D3D3504185EB5158B5095541666666A6D2D350410AD7A3D0BA09554148E17A54D2D3504148E17A34BF09554133333313D5D350418FC2F548C00955415C8FC2F5D4D350419A999999C009554152B81E95D2D35041713D0AA7BF095541050000003D0AD7B3F1D350419A9999B9BB095541000000C0F4D350419A9999F9BC095541C3F5280CF4D35041F6285CCFBE0955415C8FC2A5F0D35041F6285C8FBD0955413D0AD7B3F1D350419A9999B9BB095541
+</a>
+
+<b>
+010600000001000000010300000001000000100000009795B31EF7D3504111D53B13BD095541EA8C2D6FF6D35041FEBE2EAEC0095541C856B29F24D45041ACDC3CA5CB0955410000008025D450410AD7A360CA095541AE47E11A25D4504166666636CA09554152B81E6525D450410AD7A340C9095541D7A3708D25D45041666666A6C80955418FC2F50829D450410AD7A3C0BC095541D7A370FD27D4504152B81E75BB095541D7A3709D11D450417B14AEE7B5095541333333B30BD45041A4703DFAB4095541666666A600D45041C3F528ACB5095541218C4FE8F7D35041DD62CC5BB509554157A1888DF7D35041688E7D07B909554185EB5138F7D35041D7A3708DBC0955419795B31EF7D3504111D53B13BD095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200405 - 1082385
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000130000007B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441B81E857B411A5141A4703D8A193D5441E17A146E3D1A5141666666D6353D54417B14AE173B1A514152B81E55433D5441E17A14FE8B1A5141333333E3483D54411F85EBA1901A5141F6285C2F383D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441B81E851BA01A5141295C8F92E83C544166666636A01A5141EC51B81EE53C5441D7A3704D9F1A51417B14AEC7E33C5441A4703DCA8B1A5141AE47E1BADC3C54417B14AE47791A5141AE47E10AD63C5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000ACF387A2921A5141A34C7D43303D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441B81E851BA01A5141295C8F92E83C544166666636A01A5141EC51B81EE53C5441D7A3704D9F1A51417B14AEC7E33C5441A4703DCA8B1A5141AE47E1BADC3C54417B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441B81E857B411A5141A4703D8A193D54413B404C0A3F1A5141B7D0FE972A3D5441A069B29F3E1A5141196DC1A02C3D5441CF3F32F9911A51412ACB3B8E323D5441ACF387A2921A5141A34C7D43303D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200405 - 3813900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000130000007B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441B81E857B411A5141A4703D8A193D5441E17A146E3D1A5141666666D6353D54417B14AE173B1A514152B81E55433D5441E17A14FE8B1A5141333333E3483D54411F85EBA1901A5141F6285C2F383D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441B81E851BA01A5141295C8F92E83C544166666636A01A5141EC51B81EE53C5441D7A3704D9F1A51417B14AEC7E33C5441A4703DCA8B1A5141AE47E1BADC3C54417B14AE47791A5141AE47E10AD63C5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000ACF387A2921A5141A34C7D43303D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441B81E851BA01A5141295C8F92E83C544166666636A01A5141EC51B81EE53C5441D7A3704D9F1A51417B14AEC7E33C5441A4703DCA8B1A5141AE47E1BADC3C54417B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441B81E857B411A5141A4703D8A193D54413B404C0A3F1A5141B7D0FE972A3D5441A069B29F3E1A5141196DC1A02C3D5441CF3F32F9911A51412ACB3B8E323D5441ACF387A2921A5141A34C7D43303D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200682 - 1095564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE47F178195141333333E3C33B5441713D0AA7791951417B14AE37B13B5441F6285C1F7A1951417B14AEB7AF3B54415C8FC29574195141000000C0B03B544114AE47815919514100000030B53B5441333333C33F195141E17A14FEB93B5441AE47E18A36195141C3F528ACBB3B5441713D0A97341951411F85EB41BC3B5441AE47E1DA2C195141C3F528FCC03B54413D0AD7132C195141D7A3701DC23B5441D7A3706D2D1951411F85EBF1C63B544148E17A9430195141295C8F32D03B54415C8FC2155619514114AE47D1C93B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200682 - 3217832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE47F178195141333333E3C33B5441713D0AA7791951417B14AE37B13B5441F6285C1F7A1951417B14AEB7AF3B54415C8FC29574195141000000C0B03B544114AE47815919514100000030B53B5441333333C33F195141E17A14FEB93B5441AE47E18A36195141C3F528ACBB3B5441713D0A97341951411F85EB41BC3B5441AE47E1DA2C195141C3F528FCC03B54413D0AD7132C195141D7A3701DC23B5441D7A3706D2D1951411F85EBF1C63B544148E17A9430195141295C8F32D03B54415C8FC2155619514114AE47D1C93B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50364 - 182534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000800000014AE47514CB75041EC51B8CE160F5541AE47E1BA67B750419A9999291E0F5541EC51B8CE68B7504148E17A641D0F5541B81E853B6AB75041F6285C3F0D0F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541B81E85AB4BB75041295C8FA2160F554114AE47514CB75041EC51B8CE160F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E7698C6AB750415FDF1849050F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541C07385AB4BB750415A2D8EA2160F5541188C3B464CB7504116E1C6CB160F554114AE47514CB75041EC51B8CE160F5541760D98B84EB750410956D073170F5541CF3EE2BA67B7504100E998291E0F554161526A9168B75041A1144A901D0F5541D953B8CE68B7504177CB7A641D0F5541719882FF68B750411240B23B1B0F5541F9B6833B6AB750414A645D3F0D0F5541A7E7698C6AB750415FDF1849050F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50364 - 368548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000800000014AE47514CB75041EC51B8CE160F5541AE47E1BA67B750419A9999291E0F5541EC51B8CE68B7504148E17A641D0F5541B81E853B6AB75041F6285C3F0D0F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541B81E85AB4BB75041295C8FA2160F554114AE47514CB75041EC51B8CE160F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E7698C6AB750415FDF1849050F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541C07385AB4BB750415A2D8EA2160F5541188C3B464CB7504116E1C6CB160F554114AE47514CB75041EC51B8CE160F5541760D98B84EB750410956D073170F5541CF3EE2BA67B7504100E998291E0F554161526A9168B75041A1144A901D0F5541D953B8CE68B7504177CB7A641D0F5541719882FF68B750411240B23B1B0F5541F9B6833B6AB750414A645D3F0D0F5541A7E7698C6AB750415FDF1849050F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903813 - 565876
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441859A993C436351418221C49D49A55441BC5F54994163514135A216034AA5544177DE83CA396351419DE620E64BA554418599684D3D63514143962D0157A55441DD189CFE29635141DDD4D68F5EA55441587FF1B33B6351414815B91486A55441C184C66844635141045D6E8299A55441072B7CCD51635141B8F3FDB5B6A55441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903813 - 1261400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441859A993C436351418221C49D49A55441BC5F54994163514135A216034AA5544177DE83CA396351419DE620E64BA554418599684D3D63514143962D0157A55441DD189CFE29635141DDD4D68F5EA55441587FF1B33B6351414815B91486A55441C184C66844635141045D6E8299A55441072B7CCD51635141B8F3FDB5B6A55441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903813 - 4016419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441859A993C436351418221C49D49A55441BC5F54994163514135A216034AA5544177DE83CA396351419DE620E64BA554418599684D3D63514143962D0157A55441DD189CFE29635141DDD4D68F5EA55441587FF1B33B6351414815B91486A55441C184C66844635141045D6E8299A55441072B7CCD51635141B8F3FDB5B6A55441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50917 - 1464045
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002200000000000080BB045141EC51B89E5A2A5541713D0A67B80451410AD7A3405C2A55418FC2F548B7045141CDCCCC6C5C2A554114AE4701B60451413D0AD7335C2A5541A4703DEAB4045141295C8F225C2A55411F85EB01B904514185EB51485D2A55418FC2F598C4045141C3F528EC5F2A5541C3F5282CCF04514152B81E55622A5541C3F528ECD8045141D7A3708D642A55415C8FC265DE045141A4703D5A652A5541C3F5281CDF045141295C8F72652A5541E17A146EDE04514152B81EB5612A55415C8FC235DD045141A4703DEA5D2A5541E17A147EDC045141666666965B2A55413D0AD7D3DB045141E17A14AE5B2A554114AE47E1D6045141A4703D5A5C2A55410AD7A3F0D4045141C3F5286C522A5541713D0A97D3045141333333D34A2A5541EC51B88ED0045141333333034A2A5541A4703D6AD00451418FC2F5F8492A55411F85EB51CF045141E17A145E4B2A5541AE47E18ACE0451413D0AD7734B2A554133333383CA045141F6285C2F522A554185EB5138CA045141D7A3707D522A554185EB5188C804514114AE4751532A5541713D0A47C804514148E17A64532A5541CDCCCC3CC6045141CDCCCCFC532A554133333333C40451418FC2F5E8542A554152B81E55C104514133333353552A5541295C8F12BC0451419A9999A9562A55419A9999C9BB045141C3F5283C572A5541A4703D1ABC04514152B81E95582A5541CDCCCCFCBB045141E17A14EE592A554100000080BB045141EC51B89E5A2A5541
+</a>
+
+<b>
+0106000000010000000103000000010000002400000000000080BB045141EC51B89E5A2A5541713D0A67B80451410AD7A3405C2A55418FC2F548B7045141CDCCCC6C5C2A554114AE4701B60451413D0AD7335C2A5541A4703DEAB4045141295C8F225C2A55411F85EB01B904514185EB51485D2A55418FC2F598C4045141C3F528EC5F2A5541C3F5282CCF04514152B81E55622A5541C3F528ECD8045141D7A3708D642A55415C8FC265DE045141A4703D5A652A5541C3F5281CDF045141295C8F72652A5541E17A146EDE04514152B81EB5612A55415C8FC235DD045141A4703DEA5D2A5541E17A147EDC045141666666965B2A55413D0AD7D3DB045141E17A14AE5B2A554114AE47E1D6045141A4703D5A5C2A55410AD7A3F0D4045141C3F5286C522A5541713D0A97D3045141333333D34A2A5541B83FF79CD1045141B9A5FF7A4A2A55412AF0BD93D0045141398118C7492A55411442EB4ECF0451415578685E4B2A554178E32A8ECE04514106087B734B2A5541EA84C588CD0451412EE908234D2A5541AAF8C288CA0451412B9D1126522A5541FE49EE3ACA0451414CB5B77A522A554136010878C80451412C201256532A5541BEE64333C80451413C653F6A532A5541830FC4B7C60451415859EFD8532A55414C6FDBBBC4045141A94516AB542A5541AA3310C3C3045141156430F9542A554176E85DE5C004514172C79D6F552A5541A921B8C6BE045141097499F9552A5541B10D4CD2BB04514117228FA9562A55416D2B0612BC045141DA8F63F5582A5541CDCCCCFCBB045141E17A14EE592A554100000080BB045141EC51B89E5A2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50917 - 22574
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002200000000000080BB045141EC51B89E5A2A5541713D0A67B80451410AD7A3405C2A55418FC2F548B7045141CDCCCC6C5C2A554114AE4701B60451413D0AD7335C2A5541A4703DEAB4045141295C8F225C2A55411F85EB01B904514185EB51485D2A55418FC2F598C4045141C3F528EC5F2A5541C3F5282CCF04514152B81E55622A5541C3F528ECD8045141D7A3708D642A55415C8FC265DE045141A4703D5A652A5541C3F5281CDF045141295C8F72652A5541E17A146EDE04514152B81EB5612A55415C8FC235DD045141A4703DEA5D2A5541E17A147EDC045141666666965B2A55413D0AD7D3DB045141E17A14AE5B2A554114AE47E1D6045141A4703D5A5C2A55410AD7A3F0D4045141C3F5286C522A5541713D0A97D3045141333333D34A2A5541EC51B88ED0045141333333034A2A5541A4703D6AD00451418FC2F5F8492A55411F85EB51CF045141E17A145E4B2A5541AE47E18ACE0451413D0AD7734B2A554133333383CA045141F6285C2F522A554185EB5138CA045141D7A3707D522A554185EB5188C804514114AE4751532A5541713D0A47C804514148E17A64532A5541CDCCCC3CC6045141CDCCCCFC532A554133333333C40451418FC2F5E8542A554152B81E55C104514133333353552A5541295C8F12BC0451419A9999A9562A55419A9999C9BB045141C3F5283C572A5541A4703D1ABC04514152B81E95582A5541CDCCCCFCBB045141E17A14EE592A554100000080BB045141EC51B89E5A2A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000292A867AD0045141DFBBB7E6492A5541D4032468CF045141477EC5414B2A55415AF32365CF045141A21F8B424B2A55411442EB4ECF0451415578685E4B2A5541974543B9CE04514130EBC46E4B2A554171DF7906CC04514185DA60A84F2A5541AAF8C288CA0451412B9D1126522A5541FE49EE3ACA0451414CB5B77A522A554166335638CA045141F2C5FA7B522A5541427FFC36CA0451414D10187E522A5541F847ACA3C904514196274DC4522A554136010878C80451412C201256532A554114C4D867C80451411ACED15A532A55410CC3C867C8045141B06ED95A532A5541C997398CC6045141494EF3EA532A55414C6FDBBBC4045141A94516AB542A5541A0A71EAEC4045141D74466AF542A554104B2B218C404514162A6CBEC542A554139CC117BC3045141C446CF04552A554176E85DE5C004514172C79D6F552A5541FC136E5FC0045141B267AC91552A55416C4A35D6BB04514119BBA2CD562A5541899AB312BC0451411C5E73ED582A55417757C844C004514148AD11FC582A5541066681D9C4045141D0B3AE15572A55411D7325FFCA04514144BB104C532A5541CCA62295D1045141D1EAAF754A2A554183AE8F0BD10451412AAF5E184A2A5541292A867AD0045141DFBBB7E6492A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>51581 - 5231111
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000026000000F6285C5F1FFC504100000000A32A55410AD7A3A013FC50417B14AE57A02A55418FC2F5C80FFC50410AD7A300A02A554185EB51080FFC5041E17A14EE9F2A5541AE47E18A0DFC5041666666C6A22A55417B14AE970CFC504166666606A92A5541713D0A270BFC504166666676AD2A55410AD7A3A00CFC504148E17A14B22A5541333333C30DFC504152B81E25B52A5541E17A149E0FFC5041A4703DCAB82A55411F85EBC114FC5041CDCCCCFCC82A5541AE47E12A18FC50415C8FC245D12A5541333333331AFC504114AE47E1D62A5541CDCCCC9C1DFC50418FC2F558DB2A5541F6285C7F22FC5041B81E858BDC2A5541E17A147E24FC5041D7A3709DDC2A554148E17A3425FC50413D0AD7B3DC2A554114AE470127FC504148E17AA4DC2A554114AE47C128FC504114AE4781DD2A5541A4703D8A2EFC50418FC2F5D8DE2A55411F85EB3137FC50413D0AD703E12A554114AE47813EFC5041E17A144EE12A55417B14AE4743FC5041713D0A67E12A5541E17A144E47FC504185EB5158E12A5541B81E85BB47FC5041F6285C3FE12A5541F6285C0F45FC5041E17A140EDB2A5541F6285CEF40FC5041F6285C1FD22A5541E17A140E3DFC5041713D0A97CA2A5541AE47E17A38FC5041CDCCCC9CC22A5541E17A143E35FC5041A4703DCAC22A55413D0AD7F331FC504114AE4701C32A55411F85EB9128FC5041AE47E13AC52A5541333333A324FC5041EC51B82EC62A554114AE471125FC50417B14AE37BE2A5541A4703D7A26FC5041D7A3701DB52A554152B81E5528FC504185EB5128A72A5541D7A3700D28FC504114AE47F1A52A5541F6285C5F1FFC504100000000A32A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000088F5CDBC0FFC5041167BB5D2B82A55414E0BA56315FC5041049A8480BA2A5541C041911D20FC5041CD1EFE6CBD2A55412E73B80C25FC5041B5571756BE2A554127B5DF9828FC5041D21DA54FA82A5541D7A3700D28FC504114AE47F1A52A55418D0DE2E41EFC5041B59D49E4A22A55413E02651D13FC5041771E114CA02A5541B29B15FE0EFC50412DB65AED9F2A5541AB7681CA0DFC50416FFD93E0A72A5541887EF2370DFC5041087A79B7AD2A5541C2C01DDA0FFC5041DCAF65B5B82A554188F5CDBC0FFC5041167BB5D2B82A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3004698
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD4255415C8FC2559BF75041C3F5285CBB4255417B14AE4797F75041295C8FE2BE425541295C8F8297F750419A999949CA425541F6285C5F96F75041CDCCCC2CD54255410AD7A3B091F750411F85EBA1DF425541295C8FD28DF7504185EB51B8E842554185EB51E890F750417B14AEB7E94255417B14AE7792F750418FC2F538EA42554185EB51C892F750413D0AD7B3EC4255417B14AE4794F7504114AE4771F84255416666661691F75041E17A141EFC425541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C032AD7A9FF7504107C697FCC64255418F4AAF13A0F75041BA089AFBC8425541BAD3B732A0F7504149184177C94255416B8D9E20A1F7504196722C2BCD4255418DDDD274A2F7504168B57F75D142554199FDEAE2A2F75041B1FAB6ADD24255412E66F023A4F750415FE25638D542554178C73D3DA4F750415CF7AF60D5425541FAF6C82EA5F75041B9C1DCE1D642554156B5DEABA5F75041AFDF53A9D74255413CEBE785A6F75041D72A0405D9425541B2A5B9A0A8F75041A30524DFDB4255413C4A172DACF750417677AC41E04255411631F9A7ADF7504162875CF5E1425541E9958D2CB5F75041CBA2E6D5DD42554176505C25B2F750412B5DAEBDD9425541459175B4AFF75041FB91AF70D642554170E65F3DABF7504142178928D0425541FF4237C2A7F75041005B7A96CB425541DDD47004A4F750415A533058C54255413BEEA2F3A1F750416353BF89C0425541CDF45AD3A0F7504118CB9FB5BD425541F52313BA9FF75041D2878D04BE425541CF8F6E059FF75041C96EB61CBF42554187DE45929EF7504104566CF4C342554105A64A179FF75041370EACB0C5425541C032AD7A9FF7504107C697FCC6425541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3004718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD4255415C8FC2559BF75041C3F5285CBB4255417B14AE4797F75041295C8FE2BE425541295C8F8297F750419A999949CA425541F6285C5F96F75041CDCCCC2CD54255410AD7A3B091F750411F85EBA1DF425541295C8FD28DF7504185EB51B8E842554185EB51E890F750417B14AEB7E94255417B14AE7792F750418FC2F538EA42554185EB51C892F750413D0AD7B3EC4255417B14AE4794F7504114AE4771F84255416666661691F75041E17A141EFC425541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009BF9301991F750415E604746E94255418F34E2EE90F7504178B7B713EC425541ABF1137192F75041538FC684F14255418CBBF73F93F75041B880398FF542554133928D5B93F750413DA8C8CAF8425541D32A84A093F75041A6122684FA42554166CD32ED90F750410C3DB96AFB4255411643D00E92F750416C39D80C004355414031C98794F75041CFDFB5F9FE42554101A293A694F750412A3AB5BFFD425541E26B777595F75041961DFD27FD425541F1AC6A4A97F75041F68406E3FC4255418C07C2B897F750414970D1F0FC4255411ECF0F3697F750417C5F83E7F94255419E2C3CA396F750417A59D24CF6425541E33C713A96F7504121F047BAF342554144C060B795F75041A2ADA482F04255416666666695F750415C8FC285EE42554134C9AA4F98F750412242B603ED425541D07414149CF75041F9832510EB4255416925DCBF9EF750413EE3F2ADE9425541FBD170D7A0F75041BF5B9562E84255410568A0239FF75041284382F7E6425541B76B5E039CF750413F6BD15CE442554182DE849C9BF7504132662207E44255416861C29498F750412847A8CBE0425541BA5814D797F75041B9925B68E0425541BA6CC64691F750410453C550E94255419BF9301991F750415E604746E9425541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3820446
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD4255415C8FC2559BF75041C3F5285CBB4255417B14AE4797F75041295C8FE2BE425541295C8F8297F750419A999949CA425541F6285C5F96F75041CDCCCC2CD54255410AD7A3B091F750411F85EBA1DF425541295C8FD28DF7504185EB51B8E842554185EB51E890F750417B14AEB7E94255417B14AE7792F750418FC2F538EA42554185EB51C892F750413D0AD7B3EC4255417B14AE4794F7504114AE4771F84255416666661691F75041E17A141EFC425541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C032AD7A9FF7504107C697FCC64255418F4AAF13A0F75041BA089AFBC8425541BAD3B732A0F7504149184177C94255416B8D9E20A1F7504196722C2BCD4255418DDDD274A2F7504168B57F75D142554199FDEAE2A2F75041B1FAB6ADD24255412E66F023A4F750415FE25638D542554178C73D3DA4F750415CF7AF60D5425541FAF6C82EA5F75041B9C1DCE1D642554156B5DEABA5F75041AFDF53A9D74255413CEBE785A6F75041D72A0405D9425541B2A5B9A0A8F75041A30524DFDB4255413C4A172DACF750417677AC41E04255411631F9A7ADF7504162875CF5E1425541E9958D2CB5F75041CBA2E6D5DD42554176505C25B2F750412B5DAEBDD9425541459175B4AFF75041FB91AF70D642554170E65F3DABF7504142178928D0425541FF4237C2A7F75041005B7A96CB425541DDD47004A4F750415A533058C54255413BEEA2F3A1F750416353BF89C0425541CDF45AD3A0F7504118CB9FB5BD425541F52313BA9FF75041D2878D04BE425541CF8F6E059FF75041C96EB61CBF42554187DE45929EF7504104566CF4C342554105A64A179FF75041370EACB0C5425541C032AD7A9FF7504107C697FCC6425541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3820577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD4255415C8FC2559BF75041C3F5285CBB4255417B14AE4797F75041295C8FE2BE425541295C8F8297F750419A999949CA425541F6285C5F96F75041CDCCCC2CD54255410AD7A3B091F750411F85EBA1DF425541295C8FD28DF7504185EB51B8E842554185EB51E890F750417B14AEB7E94255417B14AE7792F750418FC2F538EA42554185EB51C892F750413D0AD7B3EC4255417B14AE4794F7504114AE4771F84255416666661691F75041E17A141EFC425541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009BF9301991F750415E604746E94255418F34E2EE90F7504178B7B713EC425541ABF1137192F75041538FC684F14255418CBBF73F93F75041B880398FF542554133928D5B93F750413DA8C8CAF8425541D32A84A093F75041A6122684FA42554166CD32ED90F750410C3DB96AFB4255411643D00E92F750416C39D80C004355414031C98794F75041CFDFB5F9FE42554101A293A694F750412A3AB5BFFD425541E26B777595F75041961DFD27FD425541F1AC6A4A97F75041F68406E3FC4255418C07C2B897F750414970D1F0FC4255411ECF0F3697F750417C5F83E7F94255419E2C3CA396F750417A59D24CF6425541E33C713A96F7504121F047BAF342554144C060B795F75041A2ADA482F04255416666666695F750415C8FC285EE42554134C9AA4F98F750412242B603ED425541D07414149CF75041F9832510EB4255416925DCBF9EF750413EE3F2ADE9425541FBD170D7A0F75041BF5B9562E84255410568A0239FF75041284382F7E6425541B76B5E039CF750413F6BD15CE442554182DE849C9BF7504132662207E44255416861C29498F750412847A8CBE0425541BA5814D797F75041B9925B68E0425541BA6CC64691F750410453C550E94255419BF9301991F750415E604746E9425541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55437 - 1275437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000048E17A54845F51410AD7A3209F995441713D0A17845F51411F85EB11A099544185EB5108805F514185EB5138B0995441000000208A5F51413D0AD7C3B1995441F6285CFF8E5F51415C8FC2B5B2995441C3F528FC8F5F51411F85EB31AF99544185EB51F8905F51413D0AD793AC995441713D0A07855F51419A9999599C9954418FC2F5E8835F5141A4703DDA9A99544100000050825F51417B14AE479899544114AE47717A5F514148E17AD48599544148E17AB4795F514152B81EC58899544148E17A54845F51410AD7A3209F995441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000992EBBBF8A5F514108F36019A4995441499B80E7865F5141B12DE2F29E99544171346638845F5141B7A25D529B9954414D83F899825F5141CA16CCBE98995441EF03DF4F825F5141ABC0604798995441B8D893D3815F51414904DB2F97995441CCC1F276805F514172E9AEF2939954416C9DD6267F5F514160B4B9DE909954410200A32F7E5F5141190A339B8E9954410A0B5F757C5F51416F232FA38A9954414FC1BC707A5F51411EB2A4D68599544148E17AB4795F514152B81EC5889954416E1C8A12825F51416426EC5F9A995441C0D4A857825F51416EFD8FF09A99544148E17A54845F51410AD7A3209F995441713D0A17845F51411F85EB11A099544185EB5108805F514185EB5138B0995441000000208A5F51413D0AD7C3B1995441F6285CFF8E5F51415C8FC2B5B2995441C3F528FC8F5F51411F85EB31AF995441739F71F8905F51413B0ED992AC995441ABA6374F905F5141341C10AEAB9954413074954D8F5F51413660FD4FAA9954418A87FB118D5F51411C700B5DA7995441992EBBBF8A5F514108F36019A4995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55437 - 3193207
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000048E17A54845F51410AD7A3209F995441713D0A17845F51411F85EB11A099544185EB5108805F514185EB5138B0995441000000208A5F51413D0AD7C3B1995441F6285CFF8E5F51415C8FC2B5B2995441C3F528FC8F5F51411F85EB31AF99544185EB51F8905F51413D0AD793AC995441713D0A07855F51419A9999599C9954418FC2F5E8835F5141A4703DDA9A99544100000050825F51417B14AE479899544114AE47717A5F514148E17AD48599544148E17AB4795F514152B81EC58899544148E17A54845F51410AD7A3209F995441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000992EBBBF8A5F514108F36019A4995441499B80E7865F5141B12DE2F29E99544171346638845F5141B7A25D529B9954414D83F899825F5141CA16CCBE98995441EF03DF4F825F5141ABC0604798995441B8D893D3815F51414904DB2F97995441CCC1F276805F514172E9AEF2939954416C9DD6267F5F514160B4B9DE909954410200A32F7E5F5141190A339B8E9954410A0B5F757C5F51416F232FA38A9954414FC1BC707A5F51411EB2A4D68599544148E17AB4795F514152B81EC5889954416E1C8A12825F51416426EC5F9A995441C0D4A857825F51416EFD8FF09A99544148E17A54845F51410AD7A3209F995441713D0A17845F51411F85EB11A099544185EB5108805F514185EB5138B0995441000000208A5F51413D0AD7C3B1995441F6285CFF8E5F51415C8FC2B5B2995441C3F528FC8F5F51411F85EB31AF995441739F71F8905F51413B0ED992AC995441ABA6374F905F5141341C10AEAB9954413074954D8F5F51413660FD4FAA9954418A87FB118D5F51411C700B5DA7995441992EBBBF8A5F514108F36019A4995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>56017 - 2945619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000070000008FC2F548E9135141713D0A07995D544185EB5178E713514114AE47918F5D5441713D0AE7C0135141713D0A97935D54417B14AE279B135141B81E858B975D5441713D0A679D13514152B81EF5A05D54410AD7A3E0C21351418FC2F5089D5D54418FC2F548E9135141713D0A07995D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B7D466DAC1135141256FA87D935D544185EB5178E713514114AE47918F5D544179B79E79E6135141C24269628A5D5441EED7FCCCE5135141012F1EEC845D5441A4703D7AE513514100000030855D5441640E1CE4BE1351417F6F4530895D5441C5FFD1FCB8135141EC1A63CF895D5441F6285CAF98135141666666368D5D5441746197259A1351413BC56AB0925D54417B14AE279B135141B81E858B975D5441D042C62FC11351412437748F935D5441B7D466DAC1135141256FA87D935D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>56017 - 3536078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000070000008FC2F548E9135141713D0A07995D544185EB5178E713514114AE47918F5D5441713D0AE7C0135141713D0A97935D54417B14AE279B135141B81E858B975D5441713D0A679D13514152B81EF5A05D54410AD7A3E0C21351418FC2F5089D5D54418FC2F548E9135141713D0A07995D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B7D466DAC1135141256FA87D935D544185EB5178E713514114AE47918F5D544179B79E79E6135141C24269628A5D5441EED7FCCCE5135141012F1EEC845D5441A4703D7AE513514100000030855D5441640E1CE4BE1351417F6F4530895D5441C5FFD1FCB8135141EC1A63CF895D5441F6285CAF98135141666666368D5D5441746197259A1351413BC56AB0925D54417B14AE279B135141B81E858B975D5441D042C62FC11351412437748F935D5441B7D466DAC1135141256FA87D935D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58589 - 194342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F7849544148E17A74C9AD5041AE47E1AA784954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441
+</a>
+
+<b>
+010600000001000000010300000001000000090000002B4B3689C9AD5041D7FB873E7A4954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F78495441D83CC1B7DAAD504114D5CC777849544131397B74C9AD50416908E2AA784954412B4B3689C9AD5041D7FB873E7A495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58589 - 372879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F7849544148E17A74C9AD5041AE47E1AA784954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441
+</a>
+
+<b>
+010600000001000000010300000001000000090000002B4B3689C9AD5041D7FB873E7A4954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F78495441D83CC1B7DAAD504114D5CC777849544131397B74C9AD50416908E2AA784954412B4B3689C9AD5041D7FB873E7A495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58908 - 1057799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCCAC3D085141D7A370EDAB75544148E17AE43D085141CDCCCC9CAE7554418FC2F5883E08514114AE4731B17554410AD7A30041085141F6285C0FB47554413D0AD7F3550851413D0AD7F3B1755441295C8F32660851411F85EB51B07554415C8FC2B568085141713D0A47AF75544114AE47E169085141713D0A77AE755441000000D06B08514100000020AD755441D7A3702D6D0851417B14AE77AC755441C3F5282C6C0851410AD7A390A67554415C8FC2B56A085141F6285C6FA575544114AE47316808514100000040A475544114AE47616108514133333353A4755441A4703D4A5808514114AE4791A475544114AE47C1550851411F85EBB1A4755441AE47E11A520851415C8FC215A3755441CDCCCCCC4608514152B81E95A375544114AE47814008514133333323A5755441666666D63D085141C3F5289CA7755441CDCCCCAC3D085141D7A370EDAB755441
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC475544185EB518811085141A4703D7AC9755441B81E85AB110851417B14AEA7CA7554417B14AE6711085141A4703DFACC755441B81E85BB100851411F85EBA1CF755441B81E853B0F08514148E17A74D4755441AE47E12A0D08514100000040DA755441EC51B84E0C08514152B81EF5DE755441AE47E19A0B085141AE47E1DAE4755441EC51B82E0A085141CDCCCC8CEB7554418FC2F5A809085141C3F528ECEC75544148E17AF4070851411F85EBB1F175544185EB51B807085141A4703D4AF3755441B81E858B0708514185EB51C8F47554415C8FC20508085141D7A3702DF775544185EB51580A0851417B14AE67F8755441666666B60D085141A4703DBAFA755441295C8F620F0851413D0AD793FC755441A4703DCA0F08514166666606FD755441F6285CDF11085141F6285C7FFE755441713D0AD712085141666666B6FE755441E17A14AE130851411F85EB61FE755441A4703D8A1408514133333303FD7554418FC2F5F81608514133333353F8755441D7A3703D19085141D7A3708DF57554418FC2F5881C08514148E17A94F275544152B81EF51E0851413D0AD7D3F0755441295C8FB2230851411F85EB11EE7554418FC2F5F82808514133333393EB755441F6285CAF2A0851411F85EBE1E775544148E17A042C08514166666686E5755441C3F528CC2D085141A4703DCAE275544152B81E052F0851417B14AE17E27554418FC2F5E82A085141C3F528CCDD7554413333335327085141295C8F02DF755441F6285C7F22085141E17A14AEDB755441BA35E0E5220851411F11A6D5DA755441D8F1EB751E0851414D912BC1D87554412EA1C7B02208514141C7407ECE755441F73E859723085141BD5C85C2CC755441AA1C808825085141039DCDA3C97554413E58FB5527085141214C937DC7755441D97533512A0851412159D933C5755441FABCC8783A08514138406E4CBD75544187EFB4F541085141BBC4B574BA7554418DD9DFEE4908514184407923B975544141767C50570851418C2F7C07B8755441C0A390E267085141A1EF3EFDB67554410E927D186F0851412567406FB67554411310E66A730851411CCE95CAB3755441E6605D8677085141AD9CD4D3B1755441AE0049567D085141C3FF6FA3AE7554414C257495820851413B3DD035AB755441D814AC238B0851419B203A20A57554412DE25F01910851411BC3756BA17554412A7CB0BA950851417248D1169F7554414CB0705698085141E263E12B9C7554418C8B66BF9908514138819D3399755441AD94CD8C9A0851417F5876CB9675544123E70B7E9B0851410FF8F4459475544174564D5F950851419DFC092D967554416FD34B748D0851415AAF5E9F97755441F3744B988B085141623F2733987554415975042885085141AA41C3279E75544141BD57477E08514177ED45E0A27554418C3BB7D27B0851416F1E7B7FA4755441916A2CA178085141A645D897A7755441F8B6DC267208514106B9B8D5AA7554414AEDCBB36C085141051846B2AC755441A34E82866A085141FF457804AE75544114AE47E169085141713D0A77AE7554415C8FC2B568085141713D0A47AF755441EEE136D167085141568FDEA5AF755441295C8F32660851411F85EB51B07554413EFDC61F5D085141DA96573BB1755441204B5A205608514128E75DEFB1755441C57325A949085141120A6330B3755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58908 - 3670773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCCAC3D085141D7A370EDAB75544148E17AE43D085141CDCCCC9CAE7554418FC2F5883E08514114AE4731B17554410AD7A30041085141F6285C0FB47554413D0AD7F3550851413D0AD7F3B1755441295C8F32660851411F85EB51B07554415C8FC2B568085141713D0A47AF75544114AE47E169085141713D0A77AE755441000000D06B08514100000020AD755441D7A3702D6D0851417B14AE77AC755441C3F5282C6C0851410AD7A390A67554415C8FC2B56A085141F6285C6FA575544114AE47316808514100000040A475544114AE47616108514133333353A4755441A4703D4A5808514114AE4791A475544114AE47C1550851411F85EBB1A4755441AE47E11A520851415C8FC215A3755441CDCCCCCC4608514152B81E95A375544114AE47814008514133333323A5755441666666D63D085141C3F5289CA7755441CDCCCCAC3D085141D7A370EDAB755441
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC475544185EB518811085141A4703D7AC9755441B81E85AB110851417B14AEA7CA7554417B14AE6711085141A4703DFACC755441B81E85BB100851411F85EBA1CF755441B81E853B0F08514148E17A74D4755441AE47E12A0D08514100000040DA755441EC51B84E0C08514152B81EF5DE755441AE47E19A0B085141AE47E1DAE4755441EC51B82E0A085141CDCCCC8CEB7554418FC2F5A809085141C3F528ECEC75544148E17AF4070851411F85EBB1F175544185EB51B807085141A4703D4AF3755441B81E858B0708514185EB51C8F47554415C8FC20508085141D7A3702DF775544185EB51580A0851417B14AE67F8755441666666B60D085141A4703DBAFA755441295C8F620F0851413D0AD793FC755441A4703DCA0F08514166666606FD755441F6285CDF11085141F6285C7FFE755441713D0AD712085141666666B6FE755441E17A14AE130851411F85EB61FE755441A4703D8A1408514133333303FD7554418FC2F5F81608514133333353F8755441D7A3703D19085141D7A3708DF57554418FC2F5881C08514148E17A94F275544152B81EF51E0851413D0AD7D3F0755441295C8FB2230851411F85EB11EE7554418FC2F5F82808514133333393EB755441F6285CAF2A0851411F85EBE1E775544148E17A042C08514166666686E5755441C3F528CC2D085141A4703DCAE275544152B81E052F0851417B14AE17E27554418FC2F5E82A085141C3F528CCDD7554413333335327085141295C8F02DF755441F6285C7F22085141E17A14AEDB755441BA35E0E5220851411F11A6D5DA755441D8F1EB751E0851414D912BC1D87554412EA1C7B02208514141C7407ECE755441F73E859723085141BD5C85C2CC755441AA1C808825085141039DCDA3C97554413E58FB5527085141214C937DC7755441D97533512A0851412159D933C5755441FABCC8783A08514138406E4CBD75544187EFB4F541085141BBC4B574BA7554418DD9DFEE4908514184407923B975544141767C50570851418C2F7C07B8755441C0A390E267085141A1EF3EFDB67554410E927D186F0851412567406FB67554411310E66A730851411CCE95CAB3755441E6605D8677085141AD9CD4D3B1755441AE0049567D085141C3FF6FA3AE7554414C257495820851413B3DD035AB755441D814AC238B0851419B203A20A57554412DE25F01910851411BC3756BA17554412A7CB0BA950851417248D1169F7554414CB0705698085141E263E12B9C7554418C8B66BF9908514138819D3399755441AD94CD8C9A0851417F5876CB9675544123E70B7E9B0851410FF8F4459475544174564D5F950851419DFC092D967554416FD34B748D0851415AAF5E9F97755441F3744B988B085141623F2733987554415975042885085141AA41C3279E75544141BD57477E08514177ED45E0A27554418C3BB7D27B0851416F1E7B7FA4755441916A2CA178085141A645D897A7755441F8B6DC267208514106B9B8D5AA7554414AEDCBB36C085141051846B2AC755441A34E82866A085141FF457804AE75544114AE47E169085141713D0A77AE7554415C8FC2B568085141713D0A47AF755441EEE136D167085141568FDEA5AF755441295C8F32660851411F85EB51B07554413EFDC61F5D085141DA96573BB1755441204B5A205608514128E75DEFB1755441C57325A949085141120A6330B3755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>59167 - 1057799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004D0000007B14AEB78708514185EB5198A7755441000000808D085141C3F5286CA3755441B81E85AB90085141E17A149EA1755441E17A14EE920851418FC2F548A07554410AD7A3D095085141D7A3700D9F75544185EB5198980851410AD7A3E09B755441666666369A085141F6285C1F9875544185EB51289B0851417B14AE6794755441E17A140E96085141C3F5280C96755441F6285C3F900851413D0AD72397755441F6285CEF8B085141295C8FE297755441CDCCCC2C8508514148E17A249E755441D7A3704D7C085141B81E853BA47554418FC2F59878085141F6285C9FA7755441713D0AB772085141666666A6AA755441D7A3702D6D0851417B14AE77AC755441000000D06B08514100000020AD75544114AE47E169085141713D0A77AE7554415C8FC2B568085141713D0A47AF755441295C8F32660851411F85EB51B07554413D0AD7F3550851413D0AD7F3B17554410AD7A30041085141F6285C0FB47554418FC2F5883E08514114AE4731B17554413D0AD7833D085141B81E85EBB075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC4755441EC51B84E25085141AE47E18AC67554413D0AD7231D085141713D0AF7D9755441000000D0130851419A999999EA75544185EB517813085141A4703DCAED7554415C8FC2251108514133333353FB755441295C8F620F0851413D0AD793FC755441A4703DCA0F08514166666606FD755441F6285CDF11085141F6285C7FFE755441713D0AD712085141666666B6FE755441E17A14AE130851411F85EB61FE755441A4703D8A1408514133333303FD7554418FC2F5F81608514133333353F8755441D7A3703D19085141D7A3708DF57554418FC2F5881C08514148E17A94F275544152B81EF51E0851413D0AD7D3F0755441713D0AC721085141EC51B81EEF755441295C8FB2230851411F85EB11EE7554418FC2F5F82808514133333393EB755441F6285CAF2A0851411F85EBE1E775544148E17A042C08514166666686E5755441C3F528CC2D085141A4703DCAE275544152B81E052F0851417B14AE17E27554418FC2F5E82A085141C3F528CCDD7554413333335327085141295C8F02DF755441F6285C7F22085141E17A14AEDB755441000000B025085141B81E856BD4755441713D0A972B085141CDCCCCFCD0755441295C8FE23008514185EB51A8D675544185EB518833085141295C8F52D57554418FC2F5E8330851411F85EBC1D3755441295C8F2235085141713D0A97D17554417B14AE87360851413D0AD703D0755441D7A3701D390851417B14AEE7D17554411F85EBF13A0851413D0AD793D07554416666660664085141B81E850BCD7554419A9999C9640851418FC2F528CD7554419A9999B96708514152B81E65C3755441F6285CFF69085141EC51B86EBE75544152B81EB56C0851419A999929B9755441A4703D6A6F0851413D0AD703B6755441713D0A07740851413D0AD773B37554419A999939790851419A999909B1755441000000407D0851411F85EBB1AE755441D7A3702D80085141AE47E1CAAC755441D7A370BD82085141B81E851BAB755441D7A370BD850851411F85EB21A97554417B14AEB78708514185EB5198A7755441
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC475544185EB518811085141A4703D7AC9755441B81E85AB110851417B14AEA7CA7554417B14AE6711085141A4703DFACC755441B81E85BB100851411F85EBA1CF755441B81E853B0F08514148E17A74D4755441AE47E12A0D08514100000040DA755441EC51B84E0C08514152B81EF5DE755441AE47E19A0B085141AE47E1DAE4755441EC51B82E0A085141CDCCCC8CEB7554418FC2F5A809085141C3F528ECEC75544148E17AF4070851411F85EBB1F175544185EB51B807085141A4703D4AF3755441B81E858B0708514185EB51C8F47554415C8FC20508085141D7A3702DF775544185EB51580A0851417B14AE67F8755441666666B60D085141A4703DBAFA755441295C8F620F0851413D0AD793FC755441A4703DCA0F08514166666606FD755441F6285CDF11085141F6285C7FFE755441713D0AD712085141666666B6FE755441E17A14AE130851411F85EB61FE755441A4703D8A1408514133333303FD7554418FC2F5F81608514133333353F8755441D7A3703D19085141D7A3708DF57554418FC2F5881C08514148E17A94F275544152B81EF51E0851413D0AD7D3F0755441295C8FB2230851411F85EB11EE7554418FC2F5F82808514133333393EB755441F6285CAF2A0851411F85EBE1E775544148E17A042C08514166666686E5755441C3F528CC2D085141A4703DCAE275544152B81E052F0851417B14AE17E27554418FC2F5E82A085141C3F528CCDD7554413333335327085141295C8F02DF755441F6285C7F22085141E17A14AEDB755441BA35E0E5220851411F11A6D5DA755441D8F1EB751E0851414D912BC1D87554412EA1C7B02208514141C7407ECE755441F73E859723085141BD5C85C2CC755441AA1C808825085141039DCDA3C97554413E58FB5527085141214C937DC7755441D97533512A0851412159D933C5755441FABCC8783A08514138406E4CBD75544187EFB4F541085141BBC4B574BA7554418DD9DFEE4908514184407923B975544141767C50570851418C2F7C07B8755441C0A390E267085141A1EF3EFDB67554410E927D186F0851412567406FB67554411310E66A730851411CCE95CAB3755441E6605D8677085141AD9CD4D3B1755441AE0049567D085141C3FF6FA3AE7554414C257495820851413B3DD035AB755441D814AC238B0851419B203A20A57554412DE25F01910851411BC3756BA17554412A7CB0BA950851417248D1169F7554414CB0705698085141E263E12B9C7554418C8B66BF9908514138819D3399755441AD94CD8C9A0851417F5876CB9675544123E70B7E9B0851410FF8F4459475544174564D5F950851419DFC092D967554416FD34B748D0851415AAF5E9F97755441F3744B988B085141623F2733987554415975042885085141AA41C3279E75544141BD57477E08514177ED45E0A27554418C3BB7D27B0851416F1E7B7FA4755441916A2CA178085141A645D897A7755441F8B6DC267208514106B9B8D5AA7554414AEDCBB36C085141051846B2AC755441A34E82866A085141FF457804AE75544114AE47E169085141713D0A77AE7554415C8FC2B568085141713D0A47AF755441EEE136D167085141568FDEA5AF755441295C8F32660851411F85EB51B07554413EFDC61F5D085141DA96573BB1755441204B5A205608514128E75DEFB1755441C57325A949085141120A6330B3755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>59167 - 3670773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004D0000007B14AEB78708514185EB5198A7755441000000808D085141C3F5286CA3755441B81E85AB90085141E17A149EA1755441E17A14EE920851418FC2F548A07554410AD7A3D095085141D7A3700D9F75544185EB5198980851410AD7A3E09B755441666666369A085141F6285C1F9875544185EB51289B0851417B14AE6794755441E17A140E96085141C3F5280C96755441F6285C3F900851413D0AD72397755441F6285CEF8B085141295C8FE297755441CDCCCC2C8508514148E17A249E755441D7A3704D7C085141B81E853BA47554418FC2F59878085141F6285C9FA7755441713D0AB772085141666666A6AA755441D7A3702D6D0851417B14AE77AC755441000000D06B08514100000020AD75544114AE47E169085141713D0A77AE7554415C8FC2B568085141713D0A47AF755441295C8F32660851411F85EB51B07554413D0AD7F3550851413D0AD7F3B17554410AD7A30041085141F6285C0FB47554418FC2F5883E08514114AE4731B17554413D0AD7833D085141B81E85EBB075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC4755441EC51B84E25085141AE47E18AC67554413D0AD7231D085141713D0AF7D9755441000000D0130851419A999999EA75544185EB517813085141A4703DCAED7554415C8FC2251108514133333353FB755441295C8F620F0851413D0AD793FC755441A4703DCA0F08514166666606FD755441F6285CDF11085141F6285C7FFE755441713D0AD712085141666666B6FE755441E17A14AE130851411F85EB61FE755441A4703D8A1408514133333303FD7554418FC2F5F81608514133333353F8755441D7A3703D19085141D7A3708DF57554418FC2F5881C08514148E17A94F275544152B81EF51E0851413D0AD7D3F0755441713D0AC721085141EC51B81EEF755441295C8FB2230851411F85EB11EE7554418FC2F5F82808514133333393EB755441F6285CAF2A0851411F85EBE1E775544148E17A042C08514166666686E5755441C3F528CC2D085141A4703DCAE275544152B81E052F0851417B14AE17E27554418FC2F5E82A085141C3F528CCDD7554413333335327085141295C8F02DF755441F6285C7F22085141E17A14AEDB755441000000B025085141B81E856BD4755441713D0A972B085141CDCCCCFCD0755441295C8FE23008514185EB51A8D675544185EB518833085141295C8F52D57554418FC2F5E8330851411F85EBC1D3755441295C8F2235085141713D0A97D17554417B14AE87360851413D0AD703D0755441D7A3701D390851417B14AEE7D17554411F85EBF13A0851413D0AD793D07554416666660664085141B81E850BCD7554419A9999C9640851418FC2F528CD7554419A9999B96708514152B81E65C3755441F6285CFF69085141EC51B86EBE75544152B81EB56C0851419A999929B9755441A4703D6A6F0851413D0AD703B6755441713D0A07740851413D0AD773B37554419A999939790851419A999909B1755441000000407D0851411F85EBB1AE755441D7A3702D80085141AE47E1CAAC755441D7A370BD82085141B81E851BAB755441D7A370BD850851411F85EB21A97554417B14AEB78708514185EB5198A7755441
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC475544185EB518811085141A4703D7AC9755441B81E85AB110851417B14AEA7CA7554417B14AE6711085141A4703DFACC755441B81E85BB100851411F85EBA1CF755441B81E853B0F08514148E17A74D4755441AE47E12A0D08514100000040DA755441EC51B84E0C08514152B81EF5DE755441AE47E19A0B085141AE47E1DAE4755441EC51B82E0A085141CDCCCC8CEB7554418FC2F5A809085141C3F528ECEC75544148E17AF4070851411F85EBB1F175544185EB51B807085141A4703D4AF3755441B81E858B0708514185EB51C8F47554415C8FC20508085141D7A3702DF775544185EB51580A0851417B14AE67F8755441666666B60D085141A4703DBAFA755441295C8F620F0851413D0AD793FC755441A4703DCA0F08514166666606FD755441F6285CDF11085141F6285C7FFE755441713D0AD712085141666666B6FE755441E17A14AE130851411F85EB61FE755441A4703D8A1408514133333303FD7554418FC2F5F81608514133333353F8755441D7A3703D19085141D7A3708DF57554418FC2F5881C08514148E17A94F275544152B81EF51E0851413D0AD7D3F0755441295C8FB2230851411F85EB11EE7554418FC2F5F82808514133333393EB755441F6285CAF2A0851411F85EBE1E775544148E17A042C08514166666686E5755441C3F528CC2D085141A4703DCAE275544152B81E052F0851417B14AE17E27554418FC2F5E82A085141C3F528CCDD7554413333335327085141295C8F02DF755441F6285C7F22085141E17A14AEDB755441BA35E0E5220851411F11A6D5DA755441D8F1EB751E0851414D912BC1D87554412EA1C7B02208514141C7407ECE755441F73E859723085141BD5C85C2CC755441AA1C808825085141039DCDA3C97554413E58FB5527085141214C937DC7755441D97533512A0851412159D933C5755441FABCC8783A08514138406E4CBD75544187EFB4F541085141BBC4B574BA7554418DD9DFEE4908514184407923B975544141767C50570851418C2F7C07B8755441C0A390E267085141A1EF3EFDB67554410E927D186F0851412567406FB67554411310E66A730851411CCE95CAB3755441E6605D8677085141AD9CD4D3B1755441AE0049567D085141C3FF6FA3AE7554414C257495820851413B3DD035AB755441D814AC238B0851419B203A20A57554412DE25F01910851411BC3756BA17554412A7CB0BA950851417248D1169F7554414CB0705698085141E263E12B9C7554418C8B66BF9908514138819D3399755441AD94CD8C9A0851417F5876CB9675544123E70B7E9B0851410FF8F4459475544174564D5F950851419DFC092D967554416FD34B748D0851415AAF5E9F97755441F3744B988B085141623F2733987554415975042885085141AA41C3279E75544141BD57477E08514177ED45E0A27554418C3BB7D27B0851416F1E7B7FA4755441916A2CA178085141A645D897A7755441F8B6DC267208514106B9B8D5AA7554414AEDCBB36C085141051846B2AC755441A34E82866A085141FF457804AE75544114AE47E169085141713D0A77AE7554415C8FC2B568085141713D0A47AF755441EEE136D167085141568FDEA5AF755441295C8F32660851411F85EB51B07554413EFDC61F5D085141DA96573BB1755441204B5A205608514128E75DEFB1755441C57325A949085141120A6330B3755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61065 - 224559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001D000000B81E855BEC065141CDCCCCAC0418554114AE47F1E7065141B81E85CB001855415C8FC2F5E606514185EB51B802185541A4703D1ADF0651417B14AEE7FC1755417B14AE27DC06514114AE4781FA17554148E17A94DA0651413D0AD793F6175541713D0A07D9065141E17A14BEF017554148E17AB4D4065141713D0A77F2175541C3F5286CD00651410AD7A360F4175541B81E85DBCA06514148E17A84F7175541E17A148EC30651410AD7A390FD175541333333F3BF0651419A999989021855411F85EB91C7065141EC51B81E02185541AE47E1DACD065141295C8F4202185541E17A149ED0065141666666C60218554114AE4721E206514152B81E1508185541F6285C4FE4065141333333B308185541AE47E1CAE6065141A4703D7A0918554152B81E65F0065141666666E60E1855417B14AEC7F8065141713D0AC712185541A4703DDAF806514114AE478110185541D7A3700DFA065141333333E30F1855410AD7A340FB06514152B81E1510185541C3F5287CFC065141AE47E18A1118554148E17A04FD065141713D0A87111855417B14AE07FF065141C3F5285C0F185541A4703DDAF3065141AE47E17A0818554114AE47F1EC065141295C8FD203185541B81E855BEC065141CDCCCCAC04185541
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000799C7B69C006514115891E830218554184E133F3BF065141639F998902185541A090B84BBF065141ED3CDACD03185541785482DABE065141101B0AA90418554148E17AA4BD06514114AE4701071855419A053D8AC806514101FF8E620B185541FDDD5AAFCE0651415602F5F80D18554102A76F6DD5065141188C3C7A10185541EBCBAD27E1065141C6638E121418554169520C1AE7065141836F583D1518554152B81E55ED065141666666761618554187160592F1065141A817C2CF161855418D414811F206514155613DDA161855410E58073FF3065141C9C4EFBA16185541D03EB9AEF7065141C1421E45161855411C5E9D6EF8065141B2B1BF1816185541B81E850BFB065141E17A147E15185541755E1F51F9065141D7FBC96B131855417B14AEC7F8065141713D0AC71218554152B81E65F0065141666666E60E185541CC3942ADEC065141E616E3CC0C185541F27FE0CAE6065141D7653E7A0918554118C1D09CE40651412F5D75CB08185541F6285C4FE4065141333333B3081855419382FA0EE4065141C9A8F6A008185541F1954621E206514154E91F1508185541E17A149ED0065141666666C6021855413B00A6F7CE065141D1E6A57702185541AE47E1DACD065141295C8F42021855411F85EB91C7065141EC51B81E02185541799C7B69C006514115891E8302185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61464 - 1417993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E851B38075141B81E856BC0175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC175541E17A143E3E07514185EB51E8C01755411F85EBA13E075141CDCCCCACBF175541CDCCCC7C380751411F85EB51BF175541B81E851B38075141B81E856BC0175541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F0B0484E38075141835C92D8BF175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC1755417D5B8F683E075141E0841262C0175541F0B0484E38075141835C92D8BF175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61464 - 3396818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E851B38075141B81E856BC0175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC175541E17A143E3E07514185EB51E8C01755411F85EBA13E075141CDCCCCACBF175541CDCCCC7C380751411F85EB51BF175541B81E851B38075141B81E856BC0175541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F0B0484E38075141835C92D8BF175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC1755417D5B8F683E075141E0841262C0175541F0B0484E38075141835C92D8BF175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61617 - 224167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE47113B1C5141E17A147E032955415C8FC2F5221C5141C3F5281C0E29554114AE47B12B1C51410AD7A3A01A29554114AE47D13E1C514148E17A04122955410AD7A340431C5141E17A145E1229554114AE4751461C514148E17A641329554152B81E05491C51411F85EB01162955411F85EBB1541C51417B14AED72729554133333303581C51418FC2F5182B2955410AD7A3D0581C5141295C8FE22B295541E17A147E581C51418FC2F5A82D2955417B14AE87521C5141F6285CBF32295541333333B3521C5141D7A370ED3229554148E17A14511C51417B14AED73429554133333303541C5141CDCCCCAC3729554114AE4751541C514152B81E7537295541F6285C3F581C5141B81E851B3429554114AE47D15C1C51413D0AD7132F2955411F85EB71611C51413D0AD78328295541B81E858B5D1C51411F85EB81232955411F85EB01621C51415C8FC2F51F29554152B81ED55F1C51419A9999B91B295541F6285C6F611C51417B14AE771A295541AE47E17A571C5141EC51B8AE0E295541295C8F62551C5141A4703DEA0D2955413D0AD753471C5141A4703DFA06295541666666B63B1C5141666666E60029554114AE47113B1C5141E17A147E03295541
+</a>
+
+<b>
+0106000000010000000103000000010000006600000014AE4751541C514152B81E7537295541D2E3D868571C5141AED85FD23429554161B75B3F581C5141AA1C851B342955410B5946D15C1C5141C949D7132F2955417E0FC7CE5C1C51410E60D9112F295541581B274F5D1C5141BE4F55612E2955411F60F5735D1C51415519232D2E2955411F85EB71611C51413D0AD78328295541B81E858B5D1C51411F85EB81232955411F85EB01621C51415C8FC2F51F29554152B81ED55F1C51419A9999B91B295541F6285C6F611C51417B14AE771A29554116EDDA81571C51417437FAB60E295541DD109D2D571C51418BDE69920E29554146F07D81561C514132695B530E295541B08BA482551C5141EE53FEF50D295541295C8F62551C5141A4703DEA0D2955418485F248541C514156FD425F0D295541F2270725541C5141EDFE884D0D29554144EE7552531C5141E44A9EE50C2955417568643E531C51413EE1B6DB0C295541055B5BB0521C51415F619E950C29554121B9EB27511C514183B1F2D30B29554169BB5517511C51416A42C3CB0B295541D2BAB476501C5141CDAE7D7C0B295541FFEE78AF4F1C514142DC2A1A0B2955417CDEE4544F1C5141B25877ED0A2955413D0AD753471C5141A4703DFA06295541042CE615471C5141BD5AA8DB0629554198A9260E471C51419289C6D5062955413CB64CFD421C51417A8827B504295541197673B13D1C5141855AB6EF01295541694F2C263D1C514105F2D5A60129554168BD2BDB3C1C5141DA53977F012955414B1255AE3C1C51419B292168012955417863DC5C3C1C51419CFD7F3D0129554136444D013C1C51418291970D012955415E8CDAB43B1C51417A7A9DEC0029554114AE47113B1C5141E17A147E032955410CA966C13A1C514164B342A1032955415C8FC2F5221C5141C3F5281C0E295541CAAB8C7F231C5141CE38ACE10E2955413619DD0E251C5141C4A1101E1129554145400D8F251C5141E58FD0D511295541ACB6B07B261C5141EB7B05291329554129ED8DD3261C5141F41DF8A613295541B78966B4271C5141D4B345E914295541F9FE80EE271C514103528F3C152955419D92358D281C5141ECE00D201629554114AE47B12B1C51410AD7A3A01A29554136A85EA32D1C5141EEE566C019295541703B59A52D1C5141726321B61929554176A66F4E2E1C5141E9CB5873192955415B815B0C2F1C514109FFE21D192955418F262E9C2F1C5141F16223DD182955415D9046AB2F1C51418CA457D6182955412D28E0AF2F1C5141BE7E45D4182955412AB71FC42F1C51419AE027CB1829554114D1CAC52F1C5141169967CA1829554111FB88C72F1C514199BC9EC91829554191994DEE2F1C51414DB62AB8182955414F05BB22331C51412ABEC84617295541C916B2F6371C514110A45E1A152955416A204CF13A1C5141A9910EC3132955418E9217973C1C5141E6B52B0513295541C874EC493D1C51419DC9A9B412295541CC6905903E1C51419FCFDB211229554114AE47D13E1C514148E17A04122955414988EE75401C51415647AD25122955415D6AA99A401C51412755932812295541D20DC181411C51413E13D03A1229554137400295411C51417813553C122955410AD7A340431C5141E17A145E1229554194FE5849431C5141ADF4FD6012295541D1B88BE5441C514190F5D6EA122955418561DD1D451C51418686ACFD1229554154852F3D461C5141D490C25D1329554114AE4751461C514148E17A641329554167F99370471C51419EDE797A14295541C2A09071471C5141CC576E7B1429554152B81E05491C51411F85EB0116295541CCAE3F0A491C5141743BC109162955412FACF666491C514128623477162955418D1A4098491C51410DA343C416295541182015C7491C514183607C0D17295541139D61EB491C5141D51B3D4617295541F0BD45194C1C5141F03E7FAE1A2955418755F6D24D1C5141A1CBA7581D295541AEC0295E4E1C5141F4484D2D1E2955419C1D65184F1C5141AE45CB491F29554101131B694F1C51413AF516C51F2955418D073ECB4F1C5141835D015B202955411F85EBB1541C51417B14AED72729554133333303581C51418FC2F5182B2955410AD7A3D0581C5141295C8FE22B295541E17A147E581C51418FC2F5A82D295541A592AE87521C51418CAE5CBF32295541333333B3521C5141D7A370ED322955414C237B14511C514177C6ADD734295541BF8DE2AD511C5141F090DA6B3529554133333303541C5141CDCCCCAC3729554114AE4751541C514152B81E7537295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61681 - 224203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB5118B61851419A999979362955417B14AE07B5185141CDCCCCAC37295541A4703DCAB31851413333336338295541295C8F62B2185141D7A3703D382955417B14AE37B018514185EB51B837295541F6285C1FAD1851411F85EBF136295541EC51B84EAA1851415C8FC2353529554100000020A918514100000030362955413D0AD753A71851411F85EBB137295541EC51B8AEA4185141D7A370ED39295541AE47E16AA218514185EB51583C295541F6285CFFA018514114AE47B13E295541CDCCCC5CA01851413333336340295541AE47E17AAB185141A4703D1A46295541EC51B84EB1185141295C8FB248295541CDCCCCFCB518514152B81E154B295541B81E859BB91851410AD7A3A04A295541000000C0C2185141B81E85FB4E295541713D0A97C7185141C3F5285C4A295541333333A3C0185141C3F528DC42295541B81E851BBD185141295C8F423F295541E17A142EB9185141713D0AA73A295541295C8FD2B6185141295C8FB23729554185EB5118B61851419A99997936295541
+</a>
+
+<b>
+01060000000100000001030000000100000025000000B8410AAEAD185141E53C041547295541EC51B84EB1185141295C8FB248295541CDCCCCFCB518514152B81E154B29554102B672DCB7185141752ED5D84A295541BD63849BB9185141F13CA3A04A295541FA410A60BD185141FF02166C4C295541000000C0C2185141B81E85FB4E295541713D0A97C7185141C3F5285C4A295541F7D8CEBEC51851418B88BD5E482955412B1832A3C0185141A73A2ADC4229554142E8E5BBBE185141A0E231EB40295541B81E851BBD185141295C8F423F295541E17A142EB9185141713D0AA73A295541CDD4CA24B918514112FC659B3A295541EF628ED2B61851410CFC8FB2372955417EA15118B618514103ED997936295541DCFCF7A4B51851415DC392FB36295541AB4DAF07B518514188C0CDAC37295541FAC798E2B3185141A16434553829554174F53CCAB3185141C55633633829554163889062B2185141D7A6713D382955414A59AD37B0185141853752B8372955419A315C1FAD1851411FE7ECF136295541EB80B94EAA18514182B5C33535295541883CC22BA91851416B9F47263629554100000020A9185141000000303629554161701CF9A8185141F3609D5036295541D5FED653A7185141E67FECB137295541EC0599CDA5185141CB5A4DFB38295541EC51B8AEA4185141D7A370ED392955418D5E7074A3185141519AE13C3B2955411BA8E16AA2185141FC1E52583C295541EF735DFFA01851410B2A47B13E2955419FEBFB89A01851418B2F97EA3F295541A0DBCC5CA0185141A20B3363402955415F48E27AAB18514145123D1A46295541B8410AAEAD185141E53C041547295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>62744 - 962291
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</a>
+
+<b>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541F80CD5B15CD950419C09FA99634B55411BB518095CD950412B15488F644B5541E362B05A5BD950414318188D654B5541F9030BB95AD95041B42D7978664B55418CC5C8F659D950418714A592674B5541EF71CB4959D9504103190A8F684B55410BEA44D158D95041D369DD3E694B554178854B3558D95041C187BC216A4B5541478C8E2D57D95041410A95A06B4B55417FD52CE355D95041452B44816D4B5541A3826C5354D950413DE70ECB6F4B5541412D9A8650D950417564274F754B5541545081624FD950417AC69CEE764B554119F918B145D950410C158AAC844B5541DCF459B545D95041E6EED2D2844B55411BE403C746D95041CC430E838A4B554195E9D8DD46D95041CDD9F5618A4B55418AAFF1AA65D95041353E93E05D4B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63615 - 3996899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000240000000AD7A3A0845451419A99990961805441B81E85DB81545141AE47E16A618054410AD7A3B081545141CDCCCCBC63805441666666067C545141CDCCCCCC65805441D7A3701D7B545141000000D06280544185EB51587A5451410000001063805441E17A14EE7754514148E17AB463805441295C8F4276545141000000D05D8054410AD7A3B074545141CDCCCC1C5E805441295C8F8274545141713D0AE75980544185EB51F8775451419A99992959805441713D0AD777545141D7A3702D5880544148E17AD47654514114AE47E1578054411F85EBD1755451411F85EBA156805441333333B37554514152B81E255580544185EB511875545141295C8FB2548054417B14AE876B545141713D0AC760805441295C8FF26E54514148E17A246F805441295C8FF2775451415C8FC25571805441EC51B8AE7E5451410AD7A3F069805441666666067E545141C3F5286C698054418FC2F5987C5451419A99999969805441B81E85FB7954514148E17A346B805441EC51B87E785451413D0AD7436B8054410AD7A32077545141C3F5289C6A8054410AD7A39076545141CDCCCCFC698054410AD7A33077545141CDCCCC9C698054410AD7A3D077545141CDCCCC2C6A8054410AD7A3F078545141CDCCCC9C6A8054410AD7A3307A545141CDCCCC3C6A8054410AD7A3707B545141CDCCCC6C698054410AD7A3D07C545141CDCCCC7C688054410AD7A3007F545141CDCCCC3C68805441713D0A27805451413D0AD75368805441CDCCCC6C81545141E17A14EE668054410AD7A3A0845451419A999909618054410600000052B81E656F545141D7A3707D68805441C3F5286C71545141A4703D6A68805441F6285C7F715451411F85EB116D8054411F85EB717054514185EB51F86D805441EC51B89E6F54514185EB51F86D80544152B81E656F545141D7A3707D68805441
+</a>
+
+<b>
+0106000000010000000103000000020000002C00000097FAD14170545141AF3227766F8054416BA98F167354514183AC65F06E805441251FC53676545141AD54B6A66D805441E14E31177A545141A212D3A26B805441B81E85FB7954514148E17A346B80544169B0E42B785451412A1B9DFB6A805441EFC5BE7B775451415E84529C6A805441DBFA49B17654514174B40BCD698054410AD7A33077545141CDCCCC9C69805441B2FE4BCF77545141E9B01BFE698054410AD7A3F078545141CDCCCC9C6A8054410AD7A3307A545141CDCCCC3C6A8054410AD7A3707B545141CDCCCC6C698054410AD7A3D07C545141CDCCCC7C688054410AD7A3007F545141CDCCCC3C68805441713D0A27805451413D0AD75368805441CDCCCC6C81545141E17A14EE668054410AD7A3A0845451419A99990961805441B81E85DB81545141AE47E16A618054410AD7A3B081545141CDCCCCBC63805441666666067C545141CDCCCCCC65805441D7A3701D7B545141000000D06280544185EB51587A5451410000001063805441E17A14EE7754514148E17AB463805441295C8F4276545141000000D05D8054410AD7A3B074545141CDCCCC1C5E805441295C8F8274545141713D0AE75980544185EB51F8775451419A99992959805441713D0AD777545141D7A3702D5880544148E17AD47654514114AE47E1578054411F85EBD1755451411F85EBA156805441333333B37554514152B81E25558054410705C9EA745451416AD2BFF154805441C9FAF126745451414176304F56805441E09867737254514145D6DA3159805441C644E04070545141BF6918445D805441D6D195F76F5451418B57AB635D805441346027BA6E545141A5704DD15D8054416A31C9A16D545141387DCA2C5E8054412001E0066C545141644E4AAF5E8054412001E0266C545141AC2FC5036080544154AEF4AE6D54514116DC40D469805441C9B6C09E6E5451417FB27EC36F80544197FAD14170545141AF3227766F8054410600000082A178A46F5451413279815B68805441C3F5286C71545141A4703D6A68805441F6285C7F715451411F85EB116D805441FD6FB47D705451411697031C6D805441C1CF31BA6F545141EB22880D6D80544182A178A46F5451413279815B68805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63615 - 3996901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000240000000AD7A3A0845451419A99990961805441B81E85DB81545141AE47E16A618054410AD7A3B081545141CDCCCCBC63805441666666067C545141CDCCCCCC65805441D7A3701D7B545141000000D06280544185EB51587A5451410000001063805441E17A14EE7754514148E17AB463805441295C8F4276545141000000D05D8054410AD7A3B074545141CDCCCC1C5E805441295C8F8274545141713D0AE75980544185EB51F8775451419A99992959805441713D0AD777545141D7A3702D5880544148E17AD47654514114AE47E1578054411F85EBD1755451411F85EBA156805441333333B37554514152B81E255580544185EB511875545141295C8FB2548054417B14AE876B545141713D0AC760805441295C8FF26E54514148E17A246F805441295C8FF2775451415C8FC25571805441EC51B8AE7E5451410AD7A3F069805441666666067E545141C3F5286C698054418FC2F5987C5451419A99999969805441B81E85FB7954514148E17A346B805441EC51B87E785451413D0AD7436B8054410AD7A32077545141C3F5289C6A8054410AD7A39076545141CDCCCCFC698054410AD7A33077545141CDCCCC9C698054410AD7A3D077545141CDCCCC2C6A8054410AD7A3F078545141CDCCCC9C6A8054410AD7A3307A545141CDCCCC3C6A8054410AD7A3707B545141CDCCCC6C698054410AD7A3D07C545141CDCCCC7C688054410AD7A3007F545141CDCCCC3C68805441713D0A27805451413D0AD75368805441CDCCCC6C81545141E17A14EE668054410AD7A3A0845451419A999909618054410600000052B81E656F545141D7A3707D68805441C3F5286C71545141A4703D6A68805441F6285C7F715451411F85EB116D8054411F85EB717054514185EB51F86D805441EC51B89E6F54514185EB51F86D80544152B81E656F545141D7A3707D68805441
+</a>
+
+<b>
+0106000000010000000103000000010000004000000054AEF4AE6D54514116DC40D46980544184E05E226C54514194E5AC0360805441113EBF226C5451417931330360805441C148A21E6C545141FBF898D95F805441EC49BF116C545141A673F8225F8054412001E0066C545141644E4AAF5E8054411D5ED5086C545141A114ABAE5E805441BCD9B0086C545141A09FCEAC5E8054416080ED357054514136ABBE475D805441A4BBF8E3705451412760EA155C805441E09867737254514145D6DA3159805441C9FAF126745451414176304F568054410705C9EA745451416AD2BFF154805441F40F24F374545141FE1AE4F35480544185EB511875545141295C8FB254805441EA68CE53765451412064FFBC528054417B6388E0785451412573849D51805441CB408DD87A5451419019D8CE518054414B28BAE87B5451418085371154805441CB0FE7F87C54514170223D33548054414BC66D2980545141C042C76851805441FB43973487545141D0A5C146518054417B14AE67885451410000005044805441CDCCCC3C88545141EC51B8CE3F8054418294892688545141715171A63E805441295C8FF28654514114AE47C13E805441C9304AEA725451415E19B3C0418054412F035ED9685451418D76F69C47805441BD10193B60545141C23B79704C8054411E8CBB67595451415636FBE24F80544130E880714C545141D42D94C84E8054415014C5693D54514182C813184E805441AA27289F37545141F9469FD14B8054418FC2F5C833545141D7A3708D49805441C3F528DC2F545141C3F5283C4880544114AE470130545141AE47E18A4E8054413D0AD75331545141CDCCCCFC5B8054413847D2BE335451413119E35F708054417B3CBEDF375451416B13A30F7180544187E4E1923F545141647DC512738054416442270A45545141B61CFA9F7480544154E3A57B4A545141BA490C3275805441BEA1A7864A5451413C8187AB768054419681BBBE4A5451413BE712C682805441135679B24A5451410A767FD18A80544185EB51684A545141CDCCCCFC91805441FC3C818768545141B0B75A219880544174FFBDDE695451419ED6CF10958054416A4E994F6F5451419B48337686805441C77BB61176545141453D6F25768054417419CDC478545141D62C9E7F7180544100F0EFB87E545141E8C644736A805441C902C9DE7D5451412B2605C269805441CC7D4B717A5451419CAD66736B805441E14E31177A545141A212D3A26B8054416ED5B2FB76545141680F84456D805441729998AD76545141AC79F1686D805441251FC53676545141AD54B6A66D80544111329E79755451417382A4F46D805441654C8B1973545141800E2BEF6E8054416BA98F167354514183AC65F06E80544197FAD14170545141AF3227766F805441C9B6C09E6E5451417FB27EC36F80544154AEF4AE6D54514116DC40D469805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63951 - 3997533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000F6285C6FEE555141D7A3702DFD7A54415C8FC215F4555141EC51B89E057B5441E17A149EF55551418FC2F5E8077B544133333333F955514148E17AF4057B5441666666C6FB555141E17A14AE047B5441713D0A27FF5551413D0AD7D3027B544152B81ED502565141D7A370AD007B5441A4703DEA05565141E17A14DEFE7A5441B81E85AB08565141713D0A07FD7A54417B14AE1703565141EC51B8EEF37A544114AE4721FB5551410AD7A300E87A544100000050F655514148E17A24E17A5441F6285CDFEE55514152B81ED5D57A544133333343EB5551417B14AE17D87A54417B14AE37E8555141F6285C2FDA7A54410AD7A3D0E7555141D7A370BDDB7A544185EB5158E65551413D0AD783DE7A54419A999949E1555141713D0A97E97A54418FC2F5B8DF555141AE47E1EAEC7A5441000000A0DE55514148E17A54F07A5441D7A370EDDD555141CDCCCC0CF37A5441295C8F92DD555141CDCCCCDCF57A54411F85EB91E4555141C3F5287CF97A544148E17AF4E6555141E17A145EFB7A5441C3F5288CEB5551418FC2F5C8FA7A5441F6285C6FEE555141D7A3702DFD7A5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000005E0E94E407565141114FA2C2FB7A54411F85EBA102565141EC51B88EF37A54410682D503EE555141C0AAB796DC7A5441AE47E13AE75551417B14AE07D57A5441713D0A67E755514114AE4751D87A54415B480B0DE7555141D634F44CDB7A54416D89BA46E655514131F139EFDD7A5441FDB2A4A4E15551419E248DF2E87A5441183C66E8DF5551411D354F2BED7A5441000000A0DE55514148E17A54F07A54418FC2F518DE5551417B14AED7F17A54419A999939DD55514100000010F57A5441CB802F3DDD5551410064C18AF67A5441E4734558E455514143E6FA27FA7A5441AC02FD64E455514155BE722EFA7A5441F631BC01E655514132C07A9EFA7A544184FBAF8DE6555141976F77C4FA7A5441C3F5288CEB5551418FC2F5C8FA7A5441F6285C6FEE555141D7A3702DFD7A54415C8FC215F4555141EC51B89E057B54415C857F22F55551417EAB3B18077B544194C24D5308565141B47B3077FC7A54415E0E94E407565141114FA2C2FB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>64591 - 5229815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001E00000033333313D3545141AE47E17AA47B54415C8FC2A5D95451410AD7A390A57B5441AE47E12AD65451418FC2F578A27B544114AE47E1D15451419A9999C99E7B54410AD7A390CB5451418FC2F5E8987B544133333333BE545141F6285C7F8C7B5441F6285CEFB554514166666686857B544148E17AE4AA5451417B14AE977B7B54410AD7A360A9545141666666C6787B5441D7A370EDA75451418FC2F5F8767B5441B81E85BBA754514166666696757B5441F6285CCFA6545141713D0A47717B54411F85EB11A4545141295C8FF26D7B5441AE47E1DAA0545141333333636A7B54417B14AE579E5451419A9999D9687B5441A4703D7A9B5451415C8FC2756D7B5441D7A370DD93545141B81E858B7C7B5441AE47E16A8E545141A4703D9A867B5441713D0AB78A5451413D0AD7138E7B5441A4703D0A895451411F85EB91917B5441A4703D6A8B545141F6285CDF937B54418FC2F5288D54514133333363967B5441EC51B8EE95545141F6285CFF977B5441713D0A07A05451418FC2F5A8997B5441AE47E15AB0545141E17A147E9D7B54417B14AE77B7545141B81E85EB9E7B54410AD7A300C0545141EC51B80EA17B5441CDCCCC5CC95451413D0AD7F3A27B54418FC2F598D1545141F6285C3FA47B544133333313D3545141AE47E17AA47B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000086C75C158E545141946054D4967B5441978DF45C9C5451417697780E997B54414C19DC75A5545141062A6CEF9A7B54414890E5C3B1545141CD8189C69D7B544111CFF312BD54514124FDF752A07B54418A44A91ACB545141CF16F639A37B54415C8FC2A5D95451410AD7A390A57B5441AE47E18ADB545141713D0A17A47B544114AE4731E154514152B81ED5997B5441E4E2FA27A5545141A1F73D6D8D7B5441CDCCCC8C8C5451417B14AE57887B54413D0AD74389545141E17A14DE8E7B54417851D1E789545141BE663CF2907B54415C70FC4A8C545141A2624CDE947B544186C75C158E545141946054D4967B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65156 - 2947484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D0000009A9999E96DE850419A9999995B6D54411F85EBD16BE850419A9999796E6D54417B14AE8769E85041A4703D1A836D544148E17AC468E85041C3F528FC896D5441A4703DFA68E85041EC51B8FE896D54410000005071E85041C3F528AC896D54418FC2F5A885E8504114AE47A1876D5441B81E851B87E85041D7A3703D866D54419A9999C989E850411F85EBB16E6D54410AD7A3D08DE8504152B81E654A6D5441295C8FE28CE8504148E17AC4496D5441295C8F0280E850413D0AD733516D54419A9999E96DE850419A9999995B6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000420608E568E85041F91558D6886D544126B34DF063E8504137C67656866D5441878ACAB25BE850410F409240826D5441D3661BF750E8504148A1523A7C6D5441B1C8605952E85041BEA5D9396B6D54410AD7A39042E850413D0AD7536D6D54419A99991941E85041C3F528BC6E6D54413D0AD7533FE850417B14AE47776D5441A4703DCA41E85041E17A14DE7A6D544114AE478145E85041333333337C6D54418FC2F5485AE85041AE47E10A886D544148E17A945DE850417B14AE77896D54414A7AA5A167E8504161F8B4EE896D54419C86ADF66BE85041586524E1896D5441420608E568E85041F91558D6886D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65156 - 3589972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D0000009A9999E96DE850419A9999995B6D54411F85EBD16BE850419A9999796E6D54417B14AE8769E85041A4703D1A836D544148E17AC468E85041C3F528FC896D5441A4703DFA68E85041EC51B8FE896D54410000005071E85041C3F528AC896D54418FC2F5A885E8504114AE47A1876D5441B81E851B87E85041D7A3703D866D54419A9999C989E850411F85EBB16E6D54410AD7A3D08DE8504152B81E654A6D5441295C8FE28CE8504148E17AC4496D5441295C8F0280E850413D0AD733516D54419A9999E96DE850419A9999995B6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000420608E568E85041F91558D6886D544126B34DF063E8504137C67656866D5441878ACAB25BE850410F409240826D5441D3661BF750E8504148A1523A7C6D5441B1C8605952E85041BEA5D9396B6D54410AD7A39042E850413D0AD7536D6D54419A99991941E85041C3F528BC6E6D54413D0AD7533FE850417B14AE47776D5441A4703DCA41E85041E17A14DE7A6D544114AE478145E85041333333337C6D54418FC2F5485AE85041AE47E10A886D544148E17A945DE850417B14AE77896D54414A7AA5A167E8504161F8B4EE896D54419C86ADF66BE85041586524E1896D5441420608E568E85041F91558D6886D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65417 - 1751857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A3708DB1E4504114AE4781BA715441B81E851BB1E45041B81E858BBB715441AE47E1EAB2E45041E17A144ECA715441D7A370ADB1E450415C8FC275D7715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441F6285CDFE2E45041EC51B80ED9715441D7A3701DE9E45041713D0A17D9715441C3F5285CE9E4504148E17A74DA715441F6285C7FFCE45041D7A3704DD8715441666666F6FAE4504152B81EC5D171544114AE4771F9E45041F6285CEFC971544185EB5118F6E45041F6285CCFB4715441E17A144EF4E4504133333303AF71544114AE4771D5E450410AD7A330B571544133333363C0E45041295C8F92B7715441B81E85CBB7E450411F85EB31B9715441C3F5288CB2E45041295C8FE2B9715441D7A3708DB1E4504114AE4781BA715441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000409EAE2DD9E45041E545029BDA71544155C0B4C0D5E45041E4516CECCD7154415B6E1CA4D5E45041E2529082CD7154418FFBE0B1B1E45041543FAB46D7715441C9FF9BBBB1E45041E95F70DFD6715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441409EAE2DD9E45041E545029BDA715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65417 - 3811705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A3708DB1E4504114AE4781BA715441B81E851BB1E45041B81E858BBB715441AE47E1EAB2E45041E17A144ECA715441D7A370ADB1E450415C8FC275D7715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441F6285CDFE2E45041EC51B80ED9715441D7A3701DE9E45041713D0A17D9715441C3F5285CE9E4504148E17A74DA715441F6285C7FFCE45041D7A3704DD8715441666666F6FAE4504152B81EC5D171544114AE4771F9E45041F6285CEFC971544185EB5118F6E45041F6285CCFB4715441E17A144EF4E4504133333303AF71544114AE4771D5E450410AD7A330B571544133333363C0E45041295C8F92B7715441B81E85CBB7E450411F85EB31B9715441C3F5288CB2E45041295C8FE2B9715441D7A3708DB1E4504114AE4781BA715441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000409EAE2DD9E45041E545029BDA71544155C0B4C0D5E45041E4516CECCD7154415B6E1CA4D5E45041E2529082CD7154418FFBE0B1B1E45041543FAB46D7715441C9FF9BBBB1E45041E95F70DFD6715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441409EAE2DD9E45041E545029BDA715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>67412 - 1434959
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000AE47E1EA72E050415C8FC255220A554152B81E3571E05041713D0A57260A554148E17A046FE05041F6285C3F2B0A55418FC2F58867E0504114AE47613B0A5541295C8FC26FE05041F6285C8F3F0A5541A4703D5A71E05041C3F528EC3C0A5541C3F5280C78E0504148E17AE42B0A55413D0AD77375E05041CDCCCC0C290A55415C8FC22576E050413D0AD713270A5541EC51B83E77E05041CDCCCC4C270A5541EC51B81E78E05041EC51B87E260A5541B81E853B78E05041E17A142E260A5541295C8FC277E05041000000D0240A5541295C8F7277E05041F6285C2F240A5541AE47E1EA72E050415C8FC255220A5541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000611E624B77E05041A12A51112B0A55413D0AD77375E05041CDCCCC0C290A55415C8FC22576E050413D0AD713270A5541EC51B83E77E05041CDCCCC4C270A5541EC51B81E78E05041EC51B87E260A5541B81E853B78E05041E17A142E260A5541295C8FC277E05041000000D0240A5541295C8F7277E05041F6285C2F240A5541D6BA9D5A73E05041F9496483220A5541F53D15A471E050410BA7F5A1260A5541339851BC72E0504101762A97270A5541F53D15A471E050410D41B20D2A0A5541FBB39C0071E0504110FCF5BB290A554138A5E99968E050417C12FFEB3B0A554178C5EECD6EE05041E0EC09133F0A5541522BB3DC6FE0504121DD1D943E0A5541118F683F76E05041E29076292F0A554136320E2876E05041781D0DCC2E0A55419774AC7A77E05041DD3B760F2C0A55419DEA33D776E05041DD3B760F2C0A5541611E624B77E05041A12A51112B0A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68594 - 1431927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A141E8BEB50418FC2F5C86FFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54418FC2F5987DEB504114AE47A172FD5441D7A370CD83EB5041295C8F1275FD5441E17A149E88EB5041B81E856B76FD5441E17A141E8BEB50418FC2F5C86FFD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001DD384937DEB5041A704AEAB72FD5441DDEE9D4A7FEB5041EFEA28C96DFD5441F1804CBE7DEB50416E4929866DFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54411DD384937DEB5041A704AEAB72FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68594 - 3354764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A141E8BEB50418FC2F5C86FFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54418FC2F5987DEB504114AE47A172FD5441D7A370CD83EB5041295C8F1275FD5441E17A149E88EB5041B81E856B76FD5441E17A141E8BEB50418FC2F5C86FFD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001DD384937DEB5041A704AEAB72FD5441DDEE9D4A7FEB5041EFEA28C96DFD5441F1804CBE7DEB50416E4929866DFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54411DD384937DEB5041A704AEAB72FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>69644 - 1533897
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A147EF9DF5041AE47E18A81DF5441D7A370FDFCDF504148E17AD486DF54417B14AE4719E05041E17A14FE88DF5441A4703D3A18E050419A9999D991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441C3F5286C1DE05041CDCCCCAC9FDF54418FC2F54824E05041713D0A07A1DF5441AE47E1AA28E05041713D0AA7A1DF544114AE47A12CE0504133333303A2DF5441333333C32FE050418FC2F508A2DF5441713D0A6737E0504185EB5128A2DF5441A4703DCA37E050411F85EB219EDF54419A99994937E050411F85EB3196DF5441295C8FA237E050417B14AE9792DF54417B14AE2736E050417B14AE9783DF54411F85EB212FE050410AD7A3C06FDF5441666666E628E05041C3F5289C70DF544148E17A2400E050418FC2F57874DF54417B14AEB7F7DF5041EC51B8EE74DF5441E17A147EF9DF5041AE47E18A81DF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E17A148E36E05041713D0AD7B4DF5441666666A644E05041713D0AB7B1DF544114AE47314FE0504148E17AC4B4DF5441AE47E15A50E050419A9999F9A2DF5441EC51B85E50E05041B81E859BA2DF5441CDCCCC0C51E050413D0AD7E392DF5441295C8FA237E050417B14AE9792DF5441FCF0413D18E050417C54AED991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441BB79E67C1BE0504132B8C6329FDF54417C26F3B21EE0504120A034ED9FDF544144F19D3121E050417CE2136BA0DF5441AA10C02923E0504131626FCEA0DF5441F4D3D74725E05041DDB9632BA1DF54415BF8835627E0504133ED7F76A1DF5441353928F728E05041F44BF8ADA1DF544184AC219F2AE05041C51C7DD4A1DF54414A9DE5BC2CE050414DFB6503A2DF54411BB995192EE05041FA24E705A2DF5441C693A8CB2FE05041CF7A1809A2DF5441AA3DDFE231E050418C60AD11A2DF5441D27DE79E33E050416800CC18A2DF544107265B4F35E050417517BB1FA2DF54414540674D36E05041EEE1CD23A2DF5441713D0A6737E0504185EB5128A2DF5441AE47E15A36E05041295C8FE2B4DF5441E17A148E36E05041713D0AD7B4DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>69644 - 3282696
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A147EF9DF5041AE47E18A81DF5441D7A370FDFCDF504148E17AD486DF54417B14AE4719E05041E17A14FE88DF5441A4703D3A18E050419A9999D991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441C3F5286C1DE05041CDCCCCAC9FDF54418FC2F54824E05041713D0A07A1DF5441AE47E1AA28E05041713D0AA7A1DF544114AE47A12CE0504133333303A2DF5441333333C32FE050418FC2F508A2DF5441713D0A6737E0504185EB5128A2DF5441A4703DCA37E050411F85EB219EDF54419A99994937E050411F85EB3196DF5441295C8FA237E050417B14AE9792DF54417B14AE2736E050417B14AE9783DF54411F85EB212FE050410AD7A3C06FDF5441666666E628E05041C3F5289C70DF544148E17A2400E050418FC2F57874DF54417B14AEB7F7DF5041EC51B8EE74DF5441E17A147EF9DF5041AE47E18A81DF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E17A148E36E05041713D0AD7B4DF5441666666A644E05041713D0AB7B1DF544114AE47314FE0504148E17AC4B4DF5441AE47E15A50E050419A9999F9A2DF5441EC51B85E50E05041B81E859BA2DF5441CDCCCC0C51E050413D0AD7E392DF5441295C8FA237E050417B14AE9792DF5441FCF0413D18E050417C54AED991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441BB79E67C1BE0504132B8C6329FDF54417C26F3B21EE0504120A034ED9FDF544144F19D3121E050417CE2136BA0DF5441AA10C02923E0504131626FCEA0DF5441F4D3D74725E05041DDB9632BA1DF54415BF8835627E0504133ED7F76A1DF5441353928F728E05041F44BF8ADA1DF544184AC219F2AE05041C51C7DD4A1DF54414A9DE5BC2CE050414DFB6503A2DF54411BB995192EE05041FA24E705A2DF5441C693A8CB2FE05041CF7A1809A2DF5441AA3DDFE231E050418C60AD11A2DF5441D27DE79E33E050416800CC18A2DF544107265B4F35E050417517BB1FA2DF54414540674D36E05041EEE1CD23A2DF5441713D0A6737E0504185EB5128A2DF5441AE47E15A36E05041295C8FE2B4DF5441E17A148E36E05041713D0AD7B4DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>70607 - 5185494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000666666968BCA504152B81E95A53A5541D7A3708D89CA504152B81E75A03A55419A9999B97DCA5041F6285C9F873A5541333333137CCA5041E17A145E843A55417B14AE6774CA50410AD7A340863A5541F6285C9F70CA504114AE47C1A33A5541295C8FB26FCA504133333323AA3A55419A9999996ECA5041A4703D5AAE3A55418FC2F5D86DCA5041713D0A27B03A554152B81EB56CCA50415C8FC2D5B23A55419A9999698DCA5041F6285CCFAA3A5541666666968BCA504152B81E95A53A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000799543F56DCA504182649D67B23A554130B3F35772CA50410F82B973B13A55419C652B647DCA50414CF5BFBDAE3A55412309AC6082CA504140128784AD3A5541DC46106A8DCA5041D2B0C4D0AA3A5541D7A3708D89CA504152B81E75A03A55419E20889B82CA50419A11EDDF913A55419C4E29637CCA5041226BD2FB843A554111FFB32F75CA5041FDEAFA08873A5541DFDBE3C672CA50413438D5579B3A55419E96228A70CA50411EF2F892AA3A55411938A4136FCA50412B6CF26CB03A5541799543F56DCA504182649D67B23A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939285 - 2964540
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004A00000014AE4791C4B150411F85EBE1AB3654410AD7A370C6B1504114AE4791AC36544148E17A14C8B150411F85EB11AD365441E17A148EC9B15041333333F3AC3654417B14AE57CCB1504185EB5168AD365441F6285CCFCFB1504166666696AE365441EC51B8DED2B15041C3F528FCAF3654418FC2F5D8D5B15041666666B6B1365441E17A146ED7B15041C3F5286CB23654410AD7A3A0D8B1504166666626B3365441F6285C6FDCB15041B81E857BB03654415C8FC275DFB15041295C8F12AE365441EC51B80EE1B1504166666606AC365441C3F5288CE2B1504152B81EA5AA365441C3F5283CE4B15041B81E85ABA9365441B81E85DBD9B150418FC2F5C8A7365441CDCCCC2CD5B150415C8FC225A536544114AE4741D2B15041295C8F52A3365441EC51B80EC1B150418FC2F5F895365441D7A3706DB0B15041666666C689365441EC51B8FEAAB150413333335386365441C3F5283CA7B15041C3F5286C8736544114AE4721A5B15041B81E85BB883654410AD7A3909FB150410AD7A3408D365441D7A370BD9DB15041713D0A278F36544185EB51989CB1504148E17A8490365441EC51B8AE9DB150410000006090365441B81E850BA0B150416666666690365441EC51B8FEA1B15041000000D0913654419A999919A3B15041A4703DEA92365441AE47E1CAA3B15041F6285CAF933654413D0AD733A4B1504148E17A7494365441F6285C4FA8B15041A4703D5A943654418FC2F5B8AAB15041C3F5282C94365441666666C6ACB1504114AE4761943654419A999929AEB15041333333A395365441295C8F22ADB150419A999989983654418FC2F528ABB150415C8FC2C59B3654413D0AD7F3A9B15041666666E69C36544166666676A8B15041000000E09C36544100000090A4B1504152B81E359B36544185EB51F8A2B15041713D0AE79D3654410AD7A3D0A0B15041000000E09C365441000000609EB1504152B81EF5A0365441713D0AD799B15041CDCCCC9C9E365441000000C098B15041A4703DFA9D365441E17A14CE97B15041AE47E11A9D365441AE47E14A97B1504148E17A849D365441C3F5281C96B1504185EB51289E3654410000004095B15041000000809E3654415C8FC20595B150419A9999F99E3654413D0AD7D394B15041CDCCCC3C9F365441295C8FA294B15041333333739F365441713D0A779BB150417B14AEA7A2365441C3F528DC9EB15041F6285C3FA4365441333333039DB150413D0AD713A836544185EB5148ADB15041F6285C7FAD365441D7A370CDAEB1504152B81EC5AB36544185EB5198AFB150411F85EBF1AA365441F6285C9FB0B150411F85EB21AA36544114AE47E1B1B15041295C8FF2A8365441B81E854BB2B150417B14AE57A83654411F85EBC1B2B15041000000C0A736544133333373B3B15041713D0A17A7365441A4703D9AB4B15041333333C3A6365441000000A0B5B150413D0AD7D3A63654419A999959B6B15041C3F528DCA6365441D7A370FDB6B15041295C8F12A7365441666666F6B7B15041CDCCCC3CA73654418FC2F528BBB1504100000060A83654411F85EB41BEB1504166666676A936544152B81E25C2B1504114AE4741AA3654415C8FC265C3B1504152B81E25AB36544114AE4791C4B150411F85EBE1AB365441
+</a>
+
+<b>
+010600000001000000010300000001000000470000003DAF613B9CB150411543C703A3365441E7FBA9119BB15041250681ADA6365441DD98FD519DB15041315C8070A73654414A0C0203ACB15041DD240669AC36544117D9CE4FACB15041C3F528CCAB3654416ABC74D3ADB150410C022B27AC365441B30094A9B2B150412A142FDFA736544121854097B3B150416E97CB0CA736544119045656B4B1504154E3A563A636544133333303B7B15041295C8F7AA6365441355EBA31BEB1504152B81EF5A836544191ED7C27C2B150412B8716C9A93654415A643BAFC4B15041BC749320AB36544117D9CED7C9B1504146B6F32DAC3654414C378911D0B15041D34D62F8AD3654412B871631D7B150415EBA4964B1365441CBA14566DCB150414A0C026BAF36544162105821E0B1504166666636AC365441B4C87636E0B150413BDF4F3DAA365441E3A59B54DEB15041D9CEF7F3A93654419A999911DCB150415C8FC2B5A93654419CC420E8D1B1504146B6F345A4365441F6285CBFCAB150413F355E529E36544139B4C8E6C4B1504104560EC5993654419318048EBFB1504148E17A84953654410EB0E0B8B8B150414642DDDB8F365441D7A3706DB0B15041666666C689365441EC51B8FEAAB150413333335386365441C423B128ACB15041F9CFE2FA85365441CDCCCCFCABB150418D976EE285365441FA7E6A24AAB150418B6CE723863654413333338BA7B15041F2D24D3287365441B4C87656A5B15041C520B04A883654418716D936A3B1504114AE47C989365441F2D24D729FB1504148E17ADC8C36544148E17AE49DB15041A69BC4708E365441621058D19CB15041F0A7C6A38F365441000000B89CB15041B29DEFA78F365441C17B9E349DB150412C5026CA8F365441CBA1459E9EB15041D7A3702D9036544108AC1CA29EB150413D0AD73B903654410B58BAE49EB150414DCF4763903654414C378909A0B150410AD7A31091365441A5AC17AAA0B15041096E43D990365441000000F0A0B1504179E926C19036544133333373A2B15041295C8F8A913654414C3789B9A4B15041F853E33D94365441454A7349A5B15041F86A8D6D9436544191ED7CA7A7B15041CBA1453695365441F0A7C693AAB150410C022BA794365441508D97D6ACB15041643BDF6F953654417EFDD2D7ADB1504175B7008A96365441BA490C0AAEB150412B8716C196365441D2E5E860ADB150411D01A0D997365441190456CEACB150417F6ABCCC983654413108AC2CABB150415839B4289A365441C1CAA1D5A9B15041621058C99C3654417B14AE4FA8B150416ABC74AB9C365441C190F221A7B150413C4B6F4E9C365441EE7C3F9DA4B150417B14AE879B365441CDCCCC9CA3B150414A0C023B9E3654411564557EA0B150419524B6699D36544106819503A0B150414C3789499D365441A69BC4189EB1504196438B74A03654411F85EB9197B15041621058D99C3654414D488EA395B1504197F059589E365441DAF1742395B150413A7D98BB9E36544160E5D0F294B1504114AE47E19E365441DBBC960B95B1504174106EED9E365441FCA9F1629CB150410C022B87A23654413DAF613B9CB150411543C703A3365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939285 - 3624663
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004A00000014AE4791C4B150411F85EBE1AB3654410AD7A370C6B1504114AE4791AC36544148E17A14C8B150411F85EB11AD365441E17A148EC9B15041333333F3AC3654417B14AE57CCB1504185EB5168AD365441F6285CCFCFB1504166666696AE365441EC51B8DED2B15041C3F528FCAF3654418FC2F5D8D5B15041666666B6B1365441E17A146ED7B15041C3F5286CB23654410AD7A3A0D8B1504166666626B3365441F6285C6FDCB15041B81E857BB03654415C8FC275DFB15041295C8F12AE365441EC51B80EE1B1504166666606AC365441C3F5288CE2B1504152B81EA5AA365441C3F5283CE4B15041B81E85ABA9365441B81E85DBD9B150418FC2F5C8A7365441CDCCCC2CD5B150415C8FC225A536544114AE4741D2B15041295C8F52A3365441EC51B80EC1B150418FC2F5F895365441D7A3706DB0B15041666666C689365441EC51B8FEAAB150413333335386365441C3F5283CA7B15041C3F5286C8736544114AE4721A5B15041B81E85BB883654410AD7A3909FB150410AD7A3408D365441D7A370BD9DB15041713D0A278F36544185EB51989CB1504148E17A8490365441EC51B8AE9DB150410000006090365441B81E850BA0B150416666666690365441EC51B8FEA1B15041000000D0913654419A999919A3B15041A4703DEA92365441AE47E1CAA3B15041F6285CAF933654413D0AD733A4B1504148E17A7494365441F6285C4FA8B15041A4703D5A943654418FC2F5B8AAB15041C3F5282C94365441666666C6ACB1504114AE4761943654419A999929AEB15041333333A395365441295C8F22ADB150419A999989983654418FC2F528ABB150415C8FC2C59B3654413D0AD7F3A9B15041666666E69C36544166666676A8B15041000000E09C36544100000090A4B1504152B81E359B36544185EB51F8A2B15041713D0AE79D3654410AD7A3D0A0B15041000000E09C365441000000609EB1504152B81EF5A0365441713D0AD799B15041CDCCCC9C9E365441000000C098B15041A4703DFA9D365441E17A14CE97B15041AE47E11A9D365441AE47E14A97B1504148E17A849D365441C3F5281C96B1504185EB51289E3654410000004095B15041000000809E3654415C8FC20595B150419A9999F99E3654413D0AD7D394B15041CDCCCC3C9F365441295C8FA294B15041333333739F365441713D0A779BB150417B14AEA7A2365441C3F528DC9EB15041F6285C3FA4365441333333039DB150413D0AD713A836544185EB5148ADB15041F6285C7FAD365441D7A370CDAEB1504152B81EC5AB36544185EB5198AFB150411F85EBF1AA365441F6285C9FB0B150411F85EB21AA36544114AE47E1B1B15041295C8FF2A8365441B81E854BB2B150417B14AE57A83654411F85EBC1B2B15041000000C0A736544133333373B3B15041713D0A17A7365441A4703D9AB4B15041333333C3A6365441000000A0B5B150413D0AD7D3A63654419A999959B6B15041C3F528DCA6365441D7A370FDB6B15041295C8F12A7365441666666F6B7B15041CDCCCC3CA73654418FC2F528BBB1504100000060A83654411F85EB41BEB1504166666676A936544152B81E25C2B1504114AE4741AA3654415C8FC265C3B1504152B81E25AB36544114AE4791C4B150411F85EBE1AB365441
+</a>
+
+<b>
+010600000001000000010300000001000000470000003DAF613B9CB150411543C703A3365441E7FBA9119BB15041250681ADA6365441DD98FD519DB15041315C8070A73654414A0C0203ACB15041DD240669AC36544117D9CE4FACB15041C3F528CCAB3654416ABC74D3ADB150410C022B27AC365441B30094A9B2B150412A142FDFA736544121854097B3B150416E97CB0CA736544119045656B4B1504154E3A563A636544133333303B7B15041295C8F7AA6365441355EBA31BEB1504152B81EF5A836544191ED7C27C2B150412B8716C9A93654415A643BAFC4B15041BC749320AB36544117D9CED7C9B1504146B6F32DAC3654414C378911D0B15041D34D62F8AD3654412B871631D7B150415EBA4964B1365441CBA14566DCB150414A0C026BAF36544162105821E0B1504166666636AC365441B4C87636E0B150413BDF4F3DAA365441E3A59B54DEB15041D9CEF7F3A93654419A999911DCB150415C8FC2B5A93654419CC420E8D1B1504146B6F345A4365441F6285CBFCAB150413F355E529E36544139B4C8E6C4B1504104560EC5993654419318048EBFB1504148E17A84953654410EB0E0B8B8B150414642DDDB8F365441D7A3706DB0B15041666666C689365441EC51B8FEAAB150413333335386365441C423B128ACB15041F9CFE2FA85365441CDCCCCFCABB150418D976EE285365441FA7E6A24AAB150418B6CE723863654413333338BA7B15041F2D24D3287365441B4C87656A5B15041C520B04A883654418716D936A3B1504114AE47C989365441F2D24D729FB1504148E17ADC8C36544148E17AE49DB15041A69BC4708E365441621058D19CB15041F0A7C6A38F365441000000B89CB15041B29DEFA78F365441C17B9E349DB150412C5026CA8F365441CBA1459E9EB15041D7A3702D9036544108AC1CA29EB150413D0AD73B903654410B58BAE49EB150414DCF4763903654414C378909A0B150410AD7A31091365441A5AC17AAA0B15041096E43D990365441000000F0A0B1504179E926C19036544133333373A2B15041295C8F8A913654414C3789B9A4B15041F853E33D94365441454A7349A5B15041F86A8D6D9436544191ED7CA7A7B15041CBA1453695365441F0A7C693AAB150410C022BA794365441508D97D6ACB15041643BDF6F953654417EFDD2D7ADB1504175B7008A96365441BA490C0AAEB150412B8716C196365441D2E5E860ADB150411D01A0D997365441190456CEACB150417F6ABCCC983654413108AC2CABB150415839B4289A365441C1CAA1D5A9B15041621058C99C3654417B14AE4FA8B150416ABC74AB9C365441C190F221A7B150413C4B6F4E9C365441EE7C3F9DA4B150417B14AE879B365441CDCCCC9CA3B150414A0C023B9E3654411564557EA0B150419524B6699D36544106819503A0B150414C3789499D365441A69BC4189EB1504196438B74A03654411F85EB9197B15041621058D99C3654414D488EA395B1504197F059589E365441DAF1742395B150413A7D98BB9E36544160E5D0F294B1504114AE47E19E365441DBBC960B95B1504174106EED9E365441FCA9F1629CB150410C022B87A23654413DAF613B9CB150411543C703A3365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939423 - 957808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000081000000A4703D5AEFAF5041B81E85EB3235544166666696ECAF5041A4703DCA35355441C3F528DCE9AF5041B81E854B38355441E17A14EEE5AF5041F6285C6F3B3554415C8FC2E5E1AF5041B81E856B3E355441CDCCCC7CDDAF5041D7A370BD4135544114AE4731D8AF504185EB51D8453554419A999969D6AF5041AE47E16A47355441000000D0D4AF504152B81ED548355441CDCCCC0CD2AF504152B81EB54B3554417B14AEA7CDAF504114AE471151355441295C8FF2C5AF50410AD7A3205B355441AE47E19ABEAF50411F85EB81643554411F85EB61BCAF5041AE47E1CA673554411F85EB21BAAF504152B81E956B355441A4703D4AB8AF50419A9999396F35544114AE47A1B6AF5041EC51B84E72355441295C8F72B5AF5041295C8F4274355441CDCCCC1CB4AF504114AE4711763554418FC2F588C7AF5041713D0AB770355441D7A370FDCCAF5041AE47E11A6F3554418FC2F5D8D5AF50417B14AEE76B355441C3F5286CDCAF50413D0AD7136F355441295C8F22E0AF5041EC51B8DE7035544100000010DEAF50410AD7A3D0713554415C8FC2A5DDAF5041D7A3705D74355441E17A14DED8AF5041A4703D4A79355441333333E3D1AF5041F6285C1F7F355441F6285CFFC9AF5041F6285CCF84355441D7A3702DC7AF50410AD7A37087355441713D0AF7C1AF504114AE47C18E3554413D0AD793C0AF5041333333E39035544185EB5178BFAF5041A4703D1A8A355441C3F528ECBCAF5041D7A3706D8135544166666646B5AF5041A4703DFA8535544148E17AA4B4AF50411F85EB61863554415C8FC2B5B0AF504185EB51E8883554413D0AD7F3ADAF5041D7A370AD8A355441C3F5280CABAF5041B81E852B8C3554415C8FC255A9AF5041EC51B8DE8C355441295C8FC2A5AF50415C8FC2558E35544166666696A6AF504152B81ED593355441A4703D8AA6AF5041A4703D9A95355441713D0A67A6AF50411F85EBE19A355441EC51B8CEA5AF50411F85EBE19F35544152B81E65A8AF50410AD7A310A03554413D0AD793A5AF50417B14AEA7A9355441295C8F72A4AF50418FC2F5D8AD355441B81E854BA3AF50417B14AE57B335544185EB51E8A4AF504114AE4781B3355441D7A3703DA8AF5041666666D6B3355441F6285CAFA8AF504133333323B035544166666666B9AF5041F6285CAFAD35544133333373B9AF5041713D0A47AE3554419A999989C2AF5041A4703DBAAC355441EC51B86EC6AF5041000000B0AD355441666666E6C5AF5041F6285CBFAB355441295C8FF2CEAF504114AE47D1A8355441AE47E1FAD1AF50418FC2F5A8A63554413D0AD793D5AF504152B81EF5A2355441C3F5281CD7AF50415C8FC225A2355441B81E85CBDAAF5041C3F528BC9F3554410AD7A300E0AF5041F6285CAF9C3554417B14AE07E3AF5041C3F5280CA0355441C3F528DCE5AF5041333333B3A235544133333383E8AF50413D0AD7B3A33554411F85EB41ECAF50410AD7A380A23554410AD7A380F2AF5041713D0A87A1355441C3F5287CFAAF504166666636A135544185EB51F801B0504152B81E65A1355441C3F528DC07B050413D0AD763A135544148E17A4411B0504166666606A1355441713D0A971AB05041D7A3705D9F35544185EB517824B05041713D0A279F35544148E17AA427B05041C3F528CC9F355441713D0A5728B0504100000060903554415C8FC2B528B050410AD7A33088355441333333C329B050411F85EBE170355441E17A14DE35B050417B14AEB773355441B81E858B36B050410AD7A3E07335544152B81EF534B05041AE47E1CA6F35544185EB515833B050410AD7A3906D355441EC51B8FE2EB05041EC51B8AE67355441C3F528EC0BB05041F6285C5F313554410AD7A3A000B050411F85EB2120355441F6285C9FFFAF50411F85EBD1203554415C8FC235FDAF50419A99997922355441333333F3FAAF504152B81E8524355441B81E855BF9AF50411F85EB6126355441C3F528ECF5AF5041E17A14EE2A355441CDCCCC9CF1AF50415C8FC2453035544114AE4771F1AF5041AE47E15A3135544100000030F2AF50413D0AD70332355441F6285C0FF4AF5041AE47E17A333554415C8FC285F5AF5041E17A14DE3435544152B81E3500B0504152B81EF53F35544148E17AB402B05041EC51B8AE42355441EC51B8CE04B05041B81E852B3F355441295C8FF209B05041295C8F32423554417B14AE0709B05041F6285C4F4435544152B81E250AB05041713D0A5746355441CDCCCC7C0EB050419A9999D948355441AE47E17A10B05041295C8F7249355441B81E85CB11B05041EC51B8AE4A355441B81E853B12B050418FC2F5E84D3554413D0AD79315B05041F6285C0F503554411F85EB1113B050419A99992954355441295C8F620AB05041AE47E11A4F355441A4703D5A08B050417B14AE1752355441000000800BB0504185EB51B8543554418FC2F5D80BB05041F6285C5F55355441A4703DAA0BB05041713D0AF7573554417B14AE970AB05041AE47E13A593554413333333309B05041B81E854B5A355441D7A3704D06B05041B81E85FB5935544148E17A54FCAF50415C8FC2D5533554417B14AEF7FAAF5041F6285C3F53355441A4703D7AFDAF50411F85EBF14E355441B81E85FB00B05041AE47E1EA4B3554413D0AD763FFAF5041666666F64A355441B81E85BB03B050410AD7A3104535544152B81E95FFAF504185EB5188403554418FC2F5E8F4AF504152B81E75353554419A999979F3AF50418FC2F518343554418FC2F5B8F2AF50413D0AD7933335544166666696F1AF5041000000E03235544152B81E95F0AF504114AE478132355441295C8FA2EFAF50416666669632355441A4703D5AEFAF5041B81E85EB32355441
+</a>
+
+<b>
+0106000000010000000103000000010000001800000094F35337D5AF50410FA25A58A33554416F573344D8AF5041624DBAF3A53554410D8D815BDAAF50419ADDB59BA83554414C8910E6DCAF5041B68A4139AC355441347791F4DCAF5041B0ACAA2BAC3554413248EC7EDFAF5041AB644FCAA9355441AB4665C4DFAF5041066B5B91A9355441EB647025E0AF50417C503A4EA9355441271C6CFEE1AF504148410B07A83554417AA72487E7AF5041F7F1BC35A5355441ECCCD392E8AF5041FDA01AA6A435544132603C7DE8AF5041E1FB95B1A33554417CD32EDCE5AF5041C56A35B3A235544154F1BB51E3AF5041FCC49151A03554412C167C0BE3AF504147E0B90FA0355441641D33A3E2AF50412CB08F9C9F3554410AD7A300E0AF5041F6285CAF9C355441CC41F7FADAAF5041A34E5EAC9F3554415E0A0F00DAAF50414781B141A0355441A7CCBC9BD8AF50418F98A32AA1355441C8245BCCD7AF50416B6468B2A13554410999DBC6D6AF504126A8D852A23554410B4CF58DD5AF504135692CFBA235544194F35337D5AF50410FA25A58A3355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>201720 - 3127153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B80EA8025141A4703D1AC0AF544148E17AB4C002514114AE47E1C2AF544133333323C002514148E17A84BEAF54417B14AE47BE02514114AE4761B4AF544152B81EA5BE0251415C8FC2F5ABAF54418FC2F568C10251415C8FC205A1AF54417B14AEF7C10251418FC2F5F899AF544100000000C2025141B81E85BB95AF5441B81E851BA50251411F85EB7192AF544152B81EE5A30251410AD7A3A09AAF5441C3F5280CA20251415C8FC215A0AF5441A4703DCA9E0251417B14AEF7A5AF5441A4703D3A9B02514152B81EC5AAAF5441CDCCCCBC95025141F6285C9FB1AF5441D7A370AD9302514148E17AD4B5AF544185EB51289102514152B81E85BDAF5441EC51B80EA8025141A4703D1AC0AF5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ACA38113A80251411CE964C892AF544118E7F4FFC102514198E32CC195AF54415C8FC215C2025141333333438AAF5441CDCCCC6CA302514185EB513887AF5441F6285C7FA402514185EB51E88BAF5441E1EAC20EA502514188EE2EE991AF54416CE04291A5025141ABFFFFC691AF5441061F0AE9A5025141968338D190AF5441C91C7C75A6025141EF4DA9478EAF54412659B559A702514135D5367F8CAF5441FFD2EEDBA8025141D798FD9A8BAF54418707B7ABAB025141851AA8318BAF5441237F62BAAD0251416719E1778BAF5441AA7A46D3AE02514171D7C4F28BAF5441FCF89B3CAF025141C4551A5C8CAF5441D339F107AF025141A55453A28CAF5441B2FF4597AD025141219253408DAF544192C59A26AC0251417310A9A98DAF5441B94B61A4AA025141360E1B368EAF544133507D8BA90251414C8AE22B8FAF54418E53D2B8A8025141B484FF8A90AF5441ACA38113A80251411CE964C892AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>201720 - 3503687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B80EA8025141A4703D1AC0AF544148E17AB4C002514114AE47E1C2AF544133333323C002514148E17A84BEAF54417B14AE47BE02514114AE4761B4AF544152B81EA5BE0251415C8FC2F5ABAF54418FC2F568C10251415C8FC205A1AF54417B14AEF7C10251418FC2F5F899AF544100000000C2025141B81E85BB95AF5441B81E851BA50251411F85EB7192AF544152B81EE5A30251410AD7A3A09AAF5441C3F5280CA20251415C8FC215A0AF5441A4703DCA9E0251417B14AEF7A5AF5441A4703D3A9B02514152B81EC5AAAF5441CDCCCCBC95025141F6285C9FB1AF5441D7A370AD9302514148E17AD4B5AF544185EB51289102514152B81E85BDAF5441EC51B80EA8025141A4703D1AC0AF5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ACA38113A80251411CE964C892AF544118E7F4FFC102514198E32CC195AF54415C8FC215C2025141333333438AAF5441CDCCCC6CA302514185EB513887AF5441F6285C7FA402514185EB51E88BAF5441E1EAC20EA502514188EE2EE991AF54416CE04291A5025141ABFFFFC691AF5441061F0AE9A5025141968338D190AF5441C91C7C75A6025141EF4DA9478EAF54412659B559A702514135D5367F8CAF5441FFD2EEDBA8025141D798FD9A8BAF54418707B7ABAB025141851AA8318BAF5441237F62BAAD0251416719E1778BAF5441AA7A46D3AE02514171D7C4F28BAF5441FCF89B3CAF025141C4551A5C8CAF5441D339F107AF025141A55453A28CAF5441B2FF4597AD025141219253408DAF544192C59A26AC0251417310A9A98DAF5441B94B61A4AA025141360E1B368EAF544133507D8BA90251414C8AE22B8FAF54418E53D2B8A8025141B484FF8A90AF5441ACA38113A80251411CE964C892AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310678 - 34276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000180000009A999929F9FA50415C8FC2A5F5C7544148E17AA4F7FA50411F85EB91F4C7544152B81EA5F6FA5041A4703DFAF2C75441EC51B8EEEFFA50415C8FC235E6C75441333333C3EDFA50419A9999D9E1C75441E17A14FEE1FA5041295C8FA2E2C75441000000A0E1FA5041B81E858BE4C7544100000060E2FA5041E17A145EE6C754413D0AD773E3FA50411F85EB11E8C75441D7A3700DEBFA5041E17A14EEF2C75441D7A370EDECFA5041EC51B8BEF5C75441C3F5286CEEFA50418FC2F508F9C7544166666636EFFA50415C8FC2B5FCC75441C3F5283CEFFA50415C8FC28500C85441EC51B83EEEFA504152B81EE517C85441F6285C3FEDFA50411F85EB412EC85441333333F3ECFA5041A4703D6A32C8544148E17A04EFFA504152B81ED52DC85441333333C3F1FA5041295C8F6223C8544114AE47E1F2FA50415C8FC2751CC8544133333323F6FA50410000008010C854418FC2F578F9FA5041A4703DAAFDC75441F6285CAFF9FA50417B14AED7F7C754419A999929F9FA50415C8FC2A5F5C75441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000052B81EA5F6FA5041A4703DFAF2C75441BA334303F6FA5041251461C6F1C75441643AC6E4F4FA5041C8FE76A5EFC75441D64E3281F4FA5041002110E8EEC75441661D2212F4FA504192B8D014EEC75441396EDCB3F3FA5041F4488161EDC75441A56D4EECEEFA5041EEE9B57CEFC75441230CDB0DEFFA50415833F373F1C75441258E1FE1EEFA50412ECAF608F5C75441A83035A9EEFA50419BD61ABDF6C75441254D7DF7EEFA50418C07990CF8C754419BE3F7CBEFFA5041837D42ECF8C754410BB3023DF1FA5041FE174667F9C7544180C7383EF2FA50417C75309FF9C7544171F8B68DF3FA5041FC950194F9C75441E78E3162F4FA504105DFB5CAF8C75441E50CED8EF4FA5041950FAB59F7C7544165EC1B9AF4FA50419791EF2CF7C75441DDC33858F5FA504111EB50BEF7C754415097CC6FF6FA504105DFB5CAF8C75441D076FB7AF6FA50417F38175CF9C75441CCC7439CF9FA5041E7ADE3E2F9C754415A3132A9F9FA5041C4619280F8C75441639C0AAFF9FA5041A28668E0F7C75441A761FC33F9FA504184FC63D1F5C7544148E17AA4F7FA50411F85EB91F4C7544152B81EA5F6FA5041A4703DFAF2C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310678 - 75433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000180000009A999929F9FA50415C8FC2A5F5C7544148E17AA4F7FA50411F85EB91F4C7544152B81EA5F6FA5041A4703DFAF2C75441EC51B8EEEFFA50415C8FC235E6C75441333333C3EDFA50419A9999D9E1C75441E17A14FEE1FA5041295C8FA2E2C75441000000A0E1FA5041B81E858BE4C7544100000060E2FA5041E17A145EE6C754413D0AD773E3FA50411F85EB11E8C75441D7A3700DEBFA5041E17A14EEF2C75441D7A370EDECFA5041EC51B8BEF5C75441C3F5286CEEFA50418FC2F508F9C7544166666636EFFA50415C8FC2B5FCC75441C3F5283CEFFA50415C8FC28500C85441EC51B83EEEFA504152B81EE517C85441F6285C3FEDFA50411F85EB412EC85441333333F3ECFA5041A4703D6A32C8544148E17A04EFFA504152B81ED52DC85441333333C3F1FA5041295C8F6223C8544114AE47E1F2FA50415C8FC2751CC8544133333323F6FA50410000008010C854418FC2F578F9FA5041A4703DAAFDC75441F6285CAFF9FA50417B14AED7F7C754419A999929F9FA50415C8FC2A5F5C75441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000052B81EA5F6FA5041A4703DFAF2C75441BA334303F6FA5041251461C6F1C75441643AC6E4F4FA5041C8FE76A5EFC75441D64E3281F4FA5041002110E8EEC75441661D2212F4FA504192B8D014EEC75441396EDCB3F3FA5041F4488161EDC75441A56D4EECEEFA5041EEE9B57CEFC75441230CDB0DEFFA50415833F373F1C75441258E1FE1EEFA50412ECAF608F5C75441A83035A9EEFA50419BD61ABDF6C75441254D7DF7EEFA50418C07990CF8C754419BE3F7CBEFFA5041837D42ECF8C754410BB3023DF1FA5041FE174667F9C7544180C7383EF2FA50417C75309FF9C7544171F8B68DF3FA5041FC950194F9C75441E78E3162F4FA504105DFB5CAF8C75441E50CED8EF4FA5041950FAB59F7C7544165EC1B9AF4FA50419791EF2CF7C75441DDC33858F5FA504111EB50BEF7C754415097CC6FF6FA504105DFB5CAF8C75441D076FB7AF6FA50417F38175CF9C75441CCC7439CF9FA5041E7ADE3E2F9C754415A3132A9F9FA5041C4619280F8C75441639C0AAFF9FA5041A28668E0F7C75441A761FC33F9FA504184FC63D1F5C7544148E17AA4F7FA50411F85EB91F4C7544152B81EA5F6FA5041A4703DFAF2C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203412 - 58759
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000295C8F1256015141EC51B8EE573C5541EC51B89E5601514185EB5148583C554148E17AD4560151413D0AD763583C5541C3F5285C57015141D7A370CD573C5541CDCCCC6C5A015141CDCCCC2C533C55413D0AD7A35C015141CDCCCC9C4F3C5541B81E85BB600151419A999979473C5541295C8F626101514148E17AC4463C554114AE478164015141333333E3423C5541295C8FF26401514185EB5188413C5541B81E856B64015141B81E850B413C5541C3F528BC5D015141AE47E1DA3A3C554185EB51C85C0151418FC2F5F8393C554114AE47415C015141C3F5287C393C5541F6285C8F500151411F85EB21483C5541D7A370ED4B01514185EB51384F3C5541713D0A374B015141F6285CFF503C5541295C8F1256015141EC51B8EE573C5541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C00B15DB59015141AC76C68E533C5541E817E82B5A015141C376C68E533C5541CDCCCC6C5A015141CDCCCC2C533C55417A8F11495B015141F2D087CA513C55410D2FED525C015141E443EDE14F3C5541785870185D01514141A3F4B44E3C554123A9820D5E015141942FA8CD4C3C55411AF1DFA55E015141D9D15F734B3C55417BA7ED2360015141E21B06A7483C5541B81E85BB600151419A999979473C554174B64F0E610151416A7DD41F473C55417149CD7161015141D77B86B1463C5541CE6E3D0063015141FD2508C2443C5541BBF5A45E640151411EC3450E433C5541F7D3536E64015141580D1FF7423C5541C2B0DBDC6401514191884374413C5541B81E856B64015141B81E850B413C5541C3F528BC5D015141AE47E1DA3A3C55411AD2697B5D015141DD42E49E3A3C5541181B0D4D5C0151413E6A0E87393C55417A478AB955015141F5C8F1A9413C55415872B1DD5001514101A832E2473C55419A9E8DD04F015141BD5AD845493C55417D5C76764F015141F704AECF493C554158C793744C015141C10991694E3C5541828A486D4C0151412DD2B9744E3C5541B5E0490E4C015141330063124F3C55410CA66B5A4B0151419B9023CD503C5541328B8C4C4D01514190AE2054523C554120920623510151416FFBA9C7543C5541295C8F1256015141EC51B8EE573C55418D4E1F6F56015141F369E429583C55417A4537E7560151410F49124F583C55410E98443557015141862D8DF8573C55411A8FAA6557015141F06B16BF573C55415022A46B57015141731611B6573C5541A296FDAA57015141BC2B6C56573C5541E6484A9159015141F6BE266C543C5541A20B15DB59015141C276C68E533C5541F45AA2C859015141C376C68E533C55418471D00D5A0151411F4594F6523C5541C00B15DB59015141AC76C68E533C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203525 - 243124
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C55418FC2F5F8ABFD504166666666AE4C5541AE47E13AA8FD504185EB5138AF4C55410AD7A3F0A4FD504133333323AE4C5541C3F528ACA2FD504100000060AD4C554185EB51D8A0FD504185EB5158AD4C55413D0AD7E39CFD50410AD7A3C0AD4C5541E17A140E97FD50417B14AED7AE4C5541D7A370ED94FD50415C8FC285AF4C55413D0AD74392FD504166666646B04C55418FC2F57891FD5041D7A370EDB04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203525 - 318880
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C55418FC2F5F8ABFD504166666666AE4C5541AE47E13AA8FD504185EB5138AF4C55410AD7A3F0A4FD504133333323AE4C5541C3F528ACA2FD504100000060AD4C554185EB51D8A0FD504185EB5158AD4C55413D0AD7E39CFD50410AD7A3C0AD4C5541E17A140E97FD50417B14AED7AE4C5541D7A370ED94FD50415C8FC285AF4C55413D0AD74392FD504166666646B04C55418FC2F57891FD5041D7A370EDB04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203617 - 243124
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000360000003D0AD7236AFD504133333313B24C5541D7A370DD64FD5041A4703D6AB44C55413D0AD79364FD50415C8FC225B64C5541D7A3700D69FD504148E17A94B64C554114AE47B16DFD5041D7A370BDB64C5541C3F5282C71FD504148E17A94B64C5541EC51B8AE75FD5041CDCCCC8CB54C55415C8FC2D579FD504148E17A94B44C5541CDCCCC6C7DFD504185EB5178B34C5541E17A14DE7DFD5041B81E859BB44C5541D7A370BD82FD50419A9999E9B34C5541EC51B80E83FD50410AD7A390B44C5541E17A144E90FD50411F85EB51B24C55418FC2F57891FD5041D7A370EDB04C55413D0AD74392FD504166666646B04C5541D7A370ED94FD50415C8FC285AF4C5541E17A140E97FD50417B14AED7AE4C55413D0AD7E39CFD50410AD7A3C0AD4C554185EB51D8A0FD504185EB5158AD4C5541C3F528ACA2FD504100000060AD4C55410AD7A3F0A4FD504133333323AE4C5541AE47E13AA8FD504185EB5138AF4C55418FC2F5F8ABFD504166666666AE4C5541D7A370FDB0FD5041B81E854BAD4C55415C8FC235B1FD5041666666F6AE4C554114AE4761B1FD5041C3F5283CB04C554148E17A14B5FD50415C8FC205B04C5541AE47E1DABEFD5041A4703DBAAE4C5541EC51B8FECAFD504152B81EC5A74C55415C8FC2A5CAFD5041F6285CEFA64C55410AD7A390C7FD50413D0AD793A64C554152B81E25C7FD504185EB5118A74C5541295C8FB2C1FD504152B81E15A84C5541C3F5282CBEFD5041AE47E19AA84C5541A4703D4ABDFD50410AD7A390A84C5541E17A143EBAFD5041666666A6A74C5541B81E85DBB7FD5041A4703D2AA74C554133333383B4FD504185EB51C8A64C554148E17A64B1FD5041D7A3709DA64C5541333333E3AFFD5041EC51B84EA64C55413D0AD763AFFD5041F6285CAFA54C554100000080AEFD5041C3F528BCA44C5541F6285C3FAEFD5041E17A14EEA34C5541295C8F92AEFD5041C3F528CCA24C55413D0AD793A7FD5041333333B3A44C5541666666F6A6FD5041AE47E13AA54C55413D0AD793A0FD504152B81E85A64C5541F6285C0F98FD504152B81EE5A74C55413D0AD7B38BFD50415C8FC255A94C5541CDCCCCBC85FD5041B81E856BAA4C5541E17A143E82FD5041295C8F62AB4C5541AE47E13A7AFD5041333333C3AC4C55418FC2F51879FD504152B81EF5AC4C55413D0AD7236AFD504133333313B24C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203617 - 318880
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000360000003D0AD7236AFD504133333313B24C5541D7A370DD64FD5041A4703D6AB44C55413D0AD79364FD50415C8FC225B64C5541D7A3700D69FD504148E17A94B64C554114AE47B16DFD5041D7A370BDB64C5541C3F5282C71FD504148E17A94B64C5541EC51B8AE75FD5041CDCCCC8CB54C55415C8FC2D579FD504148E17A94B44C5541CDCCCC6C7DFD504185EB5178B34C5541E17A14DE7DFD5041B81E859BB44C5541D7A370BD82FD50419A9999E9B34C5541EC51B80E83FD50410AD7A390B44C5541E17A144E90FD50411F85EB51B24C55418FC2F57891FD5041D7A370EDB04C55413D0AD74392FD504166666646B04C5541D7A370ED94FD50415C8FC285AF4C5541E17A140E97FD50417B14AED7AE4C55413D0AD7E39CFD50410AD7A3C0AD4C554185EB51D8A0FD504185EB5158AD4C5541C3F528ACA2FD504100000060AD4C55410AD7A3F0A4FD504133333323AE4C5541AE47E13AA8FD504185EB5138AF4C55418FC2F5F8ABFD504166666666AE4C5541D7A370FDB0FD5041B81E854BAD4C55415C8FC235B1FD5041666666F6AE4C554114AE4761B1FD5041C3F5283CB04C554148E17A14B5FD50415C8FC205B04C5541AE47E1DABEFD5041A4703DBAAE4C5541EC51B8FECAFD504152B81EC5A74C55415C8FC2A5CAFD5041F6285CEFA64C55410AD7A390C7FD50413D0AD793A64C554152B81E25C7FD504185EB5118A74C5541295C8FB2C1FD504152B81E15A84C5541C3F5282CBEFD5041AE47E19AA84C5541A4703D4ABDFD50410AD7A390A84C5541E17A143EBAFD5041666666A6A74C5541B81E85DBB7FD5041A4703D2AA74C554133333383B4FD504185EB51C8A64C554148E17A64B1FD5041D7A3709DA64C5541333333E3AFFD5041EC51B84EA64C55413D0AD763AFFD5041F6285CAFA54C554100000080AEFD5041C3F528BCA44C5541F6285C3FAEFD5041E17A14EEA34C5541295C8F92AEFD5041C3F528CCA24C55413D0AD793A7FD5041333333B3A44C5541666666F6A6FD5041AE47E13AA54C55413D0AD793A0FD504152B81E85A64C5541F6285C0F98FD504152B81EE5A74C55413D0AD7B38BFD50415C8FC255A94C5541CDCCCCBC85FD5041B81E856BAA4C5541E17A143E82FD5041295C8F62AB4C5541AE47E13A7AFD5041333333C3AC4C55418FC2F51879FD504152B81EF5AC4C55413D0AD7236AFD504133333313B24C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203729 - 1458593
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003300000048E17A44C8F85041C3F5282C55395541666666B6C7F85041EC51B89E54395541EC51B8AEC6F85041EC51B85E53395541E17A149EC3F850419A9999D94E395541CDCCCC3CC0F850419A9999D949395541EC51B81EB9F8504114AE47114E3955411F85EBD1B5F8504185EB51E848395541D7A3707DB2F850415C8FC2A54339554148E17A84AFF85041A4703D9A3D39554166666636ACF8504148E17A04383955413D0AD733A8F850413D0AD7D33139554185EB5158A4F850410AD7A3E02B395541EC51B8FE9EF85041F6285CAF253955415C8FC2B59DF850417B14AE872739554114AE47319CF8504152B81EB529395541C3F528FC8DF850417B14AE073B3955416666663687F85041713D0AF742395541EC51B88E85F850411F85EB914A3955418FC2F5C883F85041F6285C1F503955418FC2F5C881F850417B14AE47563955410000001080F85041D7A370FD5E3955411F85EB217DF8504185EB51E876395541713D0AB77AF850411F85EBA18A395541D7A3706D7BF85041C3F5283C91395541EC51B8FE83F850417B14AE078F395541E17A149E8FF850413D0AD7B38B395541E17A14EE9CF85041B81E859B873955419A9999B99CF850418FC2F5A88539554185EB51789CF850411F85EBF184395541295C8F229DF850418FC2F568813955415C8FC2159DF85041713D0A777F395541C3F5281C9CF85041A4703D2A7F39554152B81EB59DF85041D7A370BD763955418FC2F538A0F8504114AE47516D395541295C8F02A8F85041C3F5283C6F395541295C8F12B2F85041A4703D3A72395541F6285CCFBBF85041713D0A4777395541AE47E1CABEF85041B81E85DB743955413D0AD753C1F85041D7A370BD73395541D7A370FDC3F8504148E17AA47339554114AE4791C7F8504152B81E7574395541666666D6CAF85041000000807439554166666646CDF850410000001074395541D7A370DDCFF85041295C8FC2723955413D0AD7A3D2F85041AE47E1AA6F3955410AD7A360CEF85041295C8FA26A3955415C8FC285C7F85041A4703D8A623955413D0AD7C3C3F850419A9999195E39554185EB51D8CAF85041666666465739554148E17AF4C8F85041A4703DCA5539554148E17A44C8F85041C3F5282C55395541
+</a>
+
+<b>
+0106000000010000000103000000040000007A000000E08226F67CF850413BC316D790395541A9B0285A7BF85041FE457A549139554185EB51187CF8504114AE477196395541666666667BF850419A9999D996395541EC51B82E7AF85041713D0A6797395541E17A14FE77F8504152B81ED597395541CDCCCCDC72F8504152B81E1598395541AE47E1CA6BF85041A4703D3A98395541B81E859B62F850410AD7A3F09739554185EB51B85BF850413D0AD7D396395541EC51B89E55F850419A9999C99539554152B81E7551F850413D0AD723953955410AD7A3804BF850413D0AD72395395541333333833EF85041B81E855B95395541F6285C0F39F8504100000080953955418FC2F50834F8504133333313963955411F85EBB12FF850413D0AD79396395541AE47E18A2DF85041F6285CAF963955419A9999C92CF85041D7A3705D973955419A9999C92CF8504185EB51D89A3955418FC2F5882CF850417B14AE979E395541333333E343F85041C3F528BC9A39554148E17AC448F85041EC51B88E9A395541713D0A8762F8504152B81E059D39554152B81ED569F85041C3F5287C9E39554148E17A046CF850418FC2F5789E39554114AE47F16FF85041A4703D7A9D395541CDCCCCEC74F85041D7A370AD9D395541CDCCCC7C77F8504152B81E659D39554152B81E4586F850418FC2F5E899395541C3F5285C8EF85041A4703DEA983955418FC2F56892F850415C8FC2C59739554114AE478197F85041D7A370CD96395541666666B69BF8504152B81EA59639554148E17A249CF85041CDCCCCDC96395541295C8F729CF8504148E17A04973955415C8FC295A5F850417B14AEE790395541EC51B8EEAAF85041C3F5286C8E3955418FC2F568AFF850419A9999298D395541CDCCCCDCB5F85041AE47E1CA8B395541CDCCCCDCBBF8504166666616893955410AD7A390BFF850415C8FC2A587395541F6285C7FC1F850415C8FC2E586395541CDCCCCDCC3F85041295C8F82853955410AD7A380C7F85041A4703D4A82395541F6285CAFD4F850417B14AE97733955411F85EBF1D4F8504185EB51D8733955413D0AD7C3C7F850410AD7A390823955411F85EB11C4F85041333333D385395541F6285C9FC1F8504114AE47418739554100000000BCF85041EC51B86E893955417B14AEF7B5F850413D0AD7238C395541D7A3707DAFF8504185EB51888D3955415C8FC215ABF850415C8FC2C58E39554152B81EC5A5F85041B81E853B9139554148E17A649CF85041E17A145E973955419A9999399CF850418FC2F54897395541D7A370AD9BF8504152B81E0597395541AE47E18A97F85041D7A3702D97395541AE47E17A92F850413333332398395541713D0A778EF850418FC2F54899395541713D0A5786F8504148E17A449A3955417B14AE8777F8504148E17AC49D395541F6285CEF74F85041D7A3700D9E3955410AD7A31070F85041713D0AD79D3955410AD7A3106CF850418FC2F5D89E395541A4703DCA69F850419A9999D99E39554148E17A7462F85041333333639D3955413D0AD7C348F85041000000F09A3955410AD7A3F043F85041CDCCCC1C9B3955419A9999892CF85041713D0AF79E395541E17A144E2CF85041000000E0A439554152B81E0548F8504166666666A5395541EC51B87E61F85041000000C0A53955411F85EB617DF850415C8FC255A6395541EC51B88E97F85041333333C3A6395541713D0AC7A7F8504114AE47E1A63955411F85EBA1AFF8504185EB51E8A5395541B81E85DBC3F850417B14AEB7A2395541666666C6CBF85041B81E859BA13955417B14AEE7CAF850415C8FC2559B3955415C8FC215C9F850415C8FC2C59139554152B81EF5CBF85041666666468E395541A4703D6ACEF85041713D0AB791395541C3F5285CE8F85041666666D67A3955411F85EB31E6F850411F85EB117839554100000050E1F8504114AE47817A395541295C8FB2DDF8504185EB51487B395541A4703DDAD7F85041F6285C0F753955417B14AE57D3F850411F85EB41703955417B14AE67D0F850417B14AE7773395541E17A148ECDF85041713D0AE7743955418FC2F5E8CAF85041000000607539554166666676C7F8504148E17A547539554185EB51E8C3F8504152B81E857439554114AE4791C1F8504185EB51C87439554185EB5158BFF85041333333C375395541CDCCCCDCB5F8504148E17A747D395541C3F5289CB4F85041AE47E10A7E395541CDCCCC0CB3F85041666666C67E395541713D0AB7B0F85041F6285C4F80395541E17A142EADF85041713D0A178239554114AE47F1A7F85041B81E856B8239554114AE47A1A7F850418FC2F528823955413D0AD7F3A5F85041AE47E12A82395541A4703DEAA4F85041CDCCCC8C82395541C3F5280CA3F85041E17A148E84395541CDCCCCFCA1F850410AD7A38085395541E17A14AEA0F85041CDCCCC6C86395541F6285C0F9FF85041C3F5287C87395541DE4A73A29DF85041384A8ACA87395541019CD0C49CF850411D4100B48739554176B93C1A98F85041CAD2A01C89395541E934580B91F850413A0A5A4C8B3955413901673E8DF8504168D49A6D8C3955415C7475C187F8504148784F038E3955418385BE1C85F8504163B3CAB58E39554187839BA884F85041F3A10AD78E395541428D9C0B83F850417CA8E24D8F3955413FEB4BA780F8504167946AEF8F39554159AF56C87DF850414143FEA090395541E08226F67CF850413BC316D7903955410E00000048E17A44C8F850418FC2F5988F39554148E17A04BDF8504152B81EB593395541AE47E16AAAF8504152B81EB599395541EC51B8BEA8F85041B81E859B94395541EC51B82EA8F850410000003092395541EC51B80EAAF85041A4703DFA913955413D0AD733B6F850413D0AD7438E395541AE47E18AC1F850418FC2F558893955413D0AD773C6F85041EC51B85E863955415C8FC2B5CAF85041333333E3823955411F85EB01D1F85041CDCCCC1C88395541295C8F12CFF85041666666868A39554133333393CCF8504185EB51888D39554148E17A44C8F850418FC2F5988F39554107000000713D0A17BCF8504114AE47119539554152B81E75BCF8504152B81EA595395541F6285C1FB7F850417B14AE4797395541E17A145EB2F8504148E17AA49939554185EB5108B2F850410AD7A3D09839554114AE47F1B1F85041295C8F1298395541713D0A17BCF8504114AE47119539554112000000EC51B85E87F85041295C8FC296395541E17A14AE84F85041B81E859B973955411F85EB1184F8504114AE4781963955410000004085F85041A4703D2A9639554148E17A548EF85041F6285C8F933955417B14AE7793F85041AE47E1EA90395541333333A39AF8504185EB51C88E395541B81E855BA8F85041EC51B88E8A3955419A9999F9A8F850410AD7A3D08B395541C3F5282CA3F8504185EB51C88E39554114AE47119BF85041A4703D1A913955410AD7A39098F85041C3F5281C91395541333333E390F85041CDCCCCBC9339554148E17AE48FF850411F85EB1194395541D7A370CD8EF850419A99990995395541C3F5281C8DF850419A9999099539554185EB51E889F8504114AE47E196395541EC51B85E87F85041295C8FC296395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203729 - 3498340
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003300000048E17A44C8F85041C3F5282C55395541666666B6C7F85041EC51B89E54395541EC51B8AEC6F85041EC51B85E53395541E17A149EC3F850419A9999D94E395541CDCCCC3CC0F850419A9999D949395541EC51B81EB9F8504114AE47114E3955411F85EBD1B5F8504185EB51E848395541D7A3707DB2F850415C8FC2A54339554148E17A84AFF85041A4703D9A3D39554166666636ACF8504148E17A04383955413D0AD733A8F850413D0AD7D33139554185EB5158A4F850410AD7A3E02B395541EC51B8FE9EF85041F6285CAF253955415C8FC2B59DF850417B14AE872739554114AE47319CF8504152B81EB529395541C3F528FC8DF850417B14AE073B3955416666663687F85041713D0AF742395541EC51B88E85F850411F85EB914A3955418FC2F5C883F85041F6285C1F503955418FC2F5C881F850417B14AE47563955410000001080F85041D7A370FD5E3955411F85EB217DF8504185EB51E876395541713D0AB77AF850411F85EBA18A395541D7A3706D7BF85041C3F5283C91395541EC51B8FE83F850417B14AE078F395541E17A149E8FF850413D0AD7B38B395541E17A14EE9CF85041B81E859B873955419A9999B99CF850418FC2F5A88539554185EB51789CF850411F85EBF184395541295C8F229DF850418FC2F568813955415C8FC2159DF85041713D0A777F395541C3F5281C9CF85041A4703D2A7F39554152B81EB59DF85041D7A370BD763955418FC2F538A0F8504114AE47516D395541295C8F02A8F85041C3F5283C6F395541295C8F12B2F85041A4703D3A72395541F6285CCFBBF85041713D0A4777395541AE47E1CABEF85041B81E85DB743955413D0AD753C1F85041D7A370BD73395541D7A370FDC3F8504148E17AA47339554114AE4791C7F8504152B81E7574395541666666D6CAF85041000000807439554166666646CDF850410000001074395541D7A370DDCFF85041295C8FC2723955413D0AD7A3D2F85041AE47E1AA6F3955410AD7A360CEF85041295C8FA26A3955415C8FC285C7F85041A4703D8A623955413D0AD7C3C3F850419A9999195E39554185EB51D8CAF85041666666465739554148E17AF4C8F85041A4703DCA5539554148E17A44C8F85041C3F5282C55395541
+</a>
+
+<b>
+0106000000010000000103000000040000007A000000E08226F67CF850413BC316D790395541A9B0285A7BF85041FE457A549139554185EB51187CF8504114AE477196395541666666667BF850419A9999D996395541EC51B82E7AF85041713D0A6797395541E17A14FE77F8504152B81ED597395541CDCCCCDC72F8504152B81E1598395541AE47E1CA6BF85041A4703D3A98395541B81E859B62F850410AD7A3F09739554185EB51B85BF850413D0AD7D396395541EC51B89E55F850419A9999C99539554152B81E7551F850413D0AD723953955410AD7A3804BF850413D0AD72395395541333333833EF85041B81E855B95395541F6285C0F39F8504100000080953955418FC2F50834F8504133333313963955411F85EBB12FF850413D0AD79396395541AE47E18A2DF85041F6285CAF963955419A9999C92CF85041D7A3705D973955419A9999C92CF8504185EB51D89A3955418FC2F5882CF850417B14AE979E395541333333E343F85041C3F528BC9A39554148E17AC448F85041EC51B88E9A395541713D0A8762F8504152B81E059D39554152B81ED569F85041C3F5287C9E39554148E17A046CF850418FC2F5789E39554114AE47F16FF85041A4703D7A9D395541CDCCCCEC74F85041D7A370AD9D395541CDCCCC7C77F8504152B81E659D39554152B81E4586F850418FC2F5E899395541C3F5285C8EF85041A4703DEA983955418FC2F56892F850415C8FC2C59739554114AE478197F85041D7A370CD96395541666666B69BF8504152B81EA59639554148E17A249CF85041CDCCCCDC96395541295C8F729CF8504148E17A04973955415C8FC295A5F850417B14AEE790395541EC51B8EEAAF85041C3F5286C8E3955418FC2F568AFF850419A9999298D395541CDCCCCDCB5F85041AE47E1CA8B395541CDCCCCDCBBF8504166666616893955410AD7A390BFF850415C8FC2A587395541F6285C7FC1F850415C8FC2E586395541CDCCCCDCC3F85041295C8F82853955410AD7A380C7F85041A4703D4A82395541F6285CAFD4F850417B14AE97733955411F85EBF1D4F8504185EB51D8733955413D0AD7C3C7F850410AD7A390823955411F85EB11C4F85041333333D385395541F6285C9FC1F8504114AE47418739554100000000BCF85041EC51B86E893955417B14AEF7B5F850413D0AD7238C395541D7A3707DAFF8504185EB51888D3955415C8FC215ABF850415C8FC2C58E39554152B81EC5A5F85041B81E853B9139554148E17A649CF85041E17A145E973955419A9999399CF850418FC2F54897395541D7A370AD9BF8504152B81E0597395541AE47E18A97F85041D7A3702D97395541AE47E17A92F850413333332398395541713D0A778EF850418FC2F54899395541713D0A5786F8504148E17A449A3955417B14AE8777F8504148E17AC49D395541F6285CEF74F85041D7A3700D9E3955410AD7A31070F85041713D0AD79D3955410AD7A3106CF850418FC2F5D89E395541A4703DCA69F850419A9999D99E39554148E17A7462F85041333333639D3955413D0AD7C348F85041000000F09A3955410AD7A3F043F85041CDCCCC1C9B3955419A9999892CF85041713D0AF79E395541E17A144E2CF85041000000E0A439554152B81E0548F8504166666666A5395541EC51B87E61F85041000000C0A53955411F85EB617DF850415C8FC255A6395541EC51B88E97F85041333333C3A6395541713D0AC7A7F8504114AE47E1A63955411F85EBA1AFF8504185EB51E8A5395541B81E85DBC3F850417B14AEB7A2395541666666C6CBF85041B81E859BA13955417B14AEE7CAF850415C8FC2559B3955415C8FC215C9F850415C8FC2C59139554152B81EF5CBF85041666666468E395541A4703D6ACEF85041713D0AB791395541C3F5285CE8F85041666666D67A3955411F85EB31E6F850411F85EB117839554100000050E1F8504114AE47817A395541295C8FB2DDF8504185EB51487B395541A4703DDAD7F85041F6285C0F753955417B14AE57D3F850411F85EB41703955417B14AE67D0F850417B14AE7773395541E17A148ECDF85041713D0AE7743955418FC2F5E8CAF85041000000607539554166666676C7F8504148E17A547539554185EB51E8C3F8504152B81E857439554114AE4791C1F8504185EB51C87439554185EB5158BFF85041333333C375395541CDCCCCDCB5F8504148E17A747D395541C3F5289CB4F85041AE47E10A7E395541CDCCCC0CB3F85041666666C67E395541713D0AB7B0F85041F6285C4F80395541E17A142EADF85041713D0A178239554114AE47F1A7F85041B81E856B8239554114AE47A1A7F850418FC2F528823955413D0AD7F3A5F85041AE47E12A82395541A4703DEAA4F85041CDCCCC8C82395541C3F5280CA3F85041E17A148E84395541CDCCCCFCA1F850410AD7A38085395541E17A14AEA0F85041CDCCCC6C86395541F6285C0F9FF85041C3F5287C87395541DE4A73A29DF85041384A8ACA87395541019CD0C49CF850411D4100B48739554176B93C1A98F85041CAD2A01C89395541E934580B91F850413A0A5A4C8B3955413901673E8DF8504168D49A6D8C3955415C7475C187F8504148784F038E3955418385BE1C85F8504163B3CAB58E39554187839BA884F85041F3A10AD78E395541428D9C0B83F850417CA8E24D8F3955413FEB4BA780F8504167946AEF8F39554159AF56C87DF850414143FEA090395541E08226F67CF850413BC316D7903955410E00000048E17A44C8F850418FC2F5988F39554148E17A04BDF8504152B81EB593395541AE47E16AAAF8504152B81EB599395541EC51B8BEA8F85041B81E859B94395541EC51B82EA8F850410000003092395541EC51B80EAAF85041A4703DFA913955413D0AD733B6F850413D0AD7438E395541AE47E18AC1F850418FC2F558893955413D0AD773C6F85041EC51B85E863955415C8FC2B5CAF85041333333E3823955411F85EB01D1F85041CDCCCC1C88395541295C8F12CFF85041666666868A39554133333393CCF8504185EB51888D39554148E17A44C8F850418FC2F5988F39554107000000713D0A17BCF8504114AE47119539554152B81E75BCF8504152B81EA595395541F6285C1FB7F850417B14AE4797395541E17A145EB2F8504148E17AA49939554185EB5108B2F850410AD7A3D09839554114AE47F1B1F85041295C8F1298395541713D0A17BCF8504114AE47119539554112000000EC51B85E87F85041295C8FC296395541E17A14AE84F85041B81E859B973955411F85EB1184F8504114AE4781963955410000004085F85041A4703D2A9639554148E17A548EF85041F6285C8F933955417B14AE7793F85041AE47E1EA90395541333333A39AF8504185EB51C88E395541B81E855BA8F85041EC51B88E8A3955419A9999F9A8F850410AD7A3D08B395541C3F5282CA3F8504185EB51C88E39554114AE47119BF85041A4703D1A913955410AD7A39098F85041C3F5281C91395541333333E390F85041CDCCCCBC9339554148E17AE48FF850411F85EB1194395541D7A370CD8EF850419A99990995395541C3F5281C8DF850419A9999099539554185EB51E889F8504114AE47E196395541EC51B85E87F85041295C8FC296395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76487 - 160018
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528CC721C514185EB5188F23A54411F85EBB15B1C5141C3F5284CEE3A54411F85EBF15A1C5141E17A141EF23A5441713D0A375A1C5141713D0A47F53A54413D0AD723591C5141B81E858BF63A5441713D0AD7561C5141333333A31A3B544185EB51D8571C5141F6285C4F1B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B54417B14AEF7701C51410AD7A3500A3B54417B14AE17721C5141F6285CEF0A3B5441295C8F92731C5141CDCCCCACF23A5441C3F528CC721C514185EB5188F23A5441
+</a>
+
+<b>
+010600000001000000010300000001000000160000003D0AD723591C5141B81E858BF63A544123B022E5561C5141C90502C6193B54412DFEDDD8561C51412B0A87861A3B5441EFC9BFE5571C514185BE0B0A1B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B54417B14AEF7701C51410AD7A3500A3B544141031C00721C5141EEB75EE20A3B5441D4192B2A721C51410BFE4CC0093B54411BE91B6F731C51410096E8F1F43A5441EB4FC591731C514102BFBCB9F23A544102740C88731C51413905DEAAF23A5441C3F528CC721C514185EB5188F23A54411F85EBB15B1C5141C3F5284CEE3A54411F85EBF15A1C5141E17A141EF23A5441713D0A375A1C5141713D0A47F53A54413D0AD723591C5141B81E858BF63A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76487 - 298241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528CC721C514185EB5188F23A54411F85EBB15B1C5141C3F5284CEE3A54411F85EBF15A1C5141E17A141EF23A5441713D0A375A1C5141713D0A47F53A54413D0AD723591C5141B81E858BF63A5441713D0AD7561C5141333333A31A3B544185EB51D8571C5141F6285C4F1B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B54417B14AEF7701C51410AD7A3500A3B54417B14AE17721C5141F6285CEF0A3B5441295C8F92731C5141CDCCCCACF23A5441C3F528CC721C514185EB5188F23A5441
+</a>
+
+<b>
+010600000001000000010300000001000000160000003D0AD723591C5141B81E858BF63A54411EB022E5561C5141CA0502C6193B5441087F2CD8561C5141C76268911A3B54415F27DCED571C5141A91B92171B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B54417B14AEF7701C51410AD7A3500A3B544141031C00721C5141EEB75EE20A3B5441D4192B2A721C51410BFE4CC0093B54411BE91B6F731C51410096E8F1F43A5441EB4FC591731C514102BFBCB9F23A544102740C88731C51413905DEAAF23A5441C3F528CC721C514185EB5188F23A54411F85EBB15B1C5141C3F5284CEE3A54411F85EBF15A1C5141E17A141EF23A5441713D0A375A1C5141713D0A47F53A54413D0AD723591C5141B81E858BF63A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76757 - 254251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000027000000F6285CCF121E5141A4703D3A443D5441666666A6131E514185EB51E8423D544148E17A04121E5141713D0A57423D544185EB5198101E51417B14AEF73C3D54419A9999C90F1E514114AE47113A3D5441333333B30E1E5141B81E855B373D54413D0AD7530D1E514185EB51B8373D54418FC2F5E80B1E514148E17A94383D5441C3F5288C0A1E5141F6285C7F383D5441000000F0081E514152B81E453F3D5441F6285CFF041E5141713D0A173E3D5441D7A3700D011E51413D0AD7F33C3D5441B81E85BBFF1D5141E17A143E3E3D54410AD7A300FD1D514185EB51E8403D544114AE4701FA1D5141295C8F72433D544114AE4731F71D5141A4703DDA443D5441713D0A67F81D514185EB51484A3D54418FC2F548F81D51410AD7A340523D544114AE4791F61D5141C3F5285C543D544114AE47D1F21D5141295C8F02543D54418FC2F518F11D51410AD7A380533D544114AE4711EF1D5141EC51B80E573D5441713D0AF7EF1D5141A4703DBA5A3D54418FC2F578F51D514185EB51C85B3D5441D7A3705DFD1D5141A4703DAA5B3D544152B81E75FE1D514148E17A445A3D544152B81EC5031E514148E17AF4573D5441AE47E1DA061E514185EB51D85A3D544152B81E450B1E5141EC51B80E5C3D5441AE47E1EA0F1E5141EC51B8FE5C3D544148E17AB4131E514148E17A245D3D5441D7A370DD131E51415C8FC2D55A3D5441713D0AD7151E51413D0AD7635A3D54419A999919171E51417B14AE27533D54417B14AE37171E51411F85EB31513D5441AE47E17A161E514185EB51D84B3D544133333313151E51410AD7A390483D5441713D0A97131E514166666666453D5441F6285CCF121E5141A4703D3A443D54410E0000008FC2F538081E5141C3F5280C543D54418FC2F5D8081E514148E17A64513D5441D7A3705D0C1E514185EB51584E3D544114AE47D1101E5141A4703D6A503D544152B81EB5131E5141C3F5283C513D5441AE47E1EA141E5141295C8FB2533D54418FC2F5F8151E5141C3F5280C543D54418FC2F5A8151E5141295C8F92553D544133333323141E514185EB51D8553D5441713D0A870F1E5141295C8FB2533D5441D7A370CD0F1E5141EC51B80E523D54418FC2F5D80D1E51410AD7A3A0513D544114AE47110D1E5141666666C6533D54418FC2F538081E5141C3F5280C543D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A370DD131E51415C8FC2D55A3D54414D3CA0E6131E5141F2B4B0D35A3D54410F803CD7151E51414D71B6625A3D54417523A327161E514175A00B95583D54416BF66941161E514191C20801583D54411FA315B9161E514172C5E051553D5441248BD4AA151E51417AE56E89553D54418FC2F5A8151E5141295C8F92553D5441E96B1B60141E5141A9316BCD553D544133333323141E514185EB51D8553D5441898196E60F1E5141BCCF11DF533D5441713D0A870F1E5141295C8FB2533D5441D7A370CD0F1E5141EC51B80E523D54418FC2F5D80D1E51410AD7A3A0513D54415B48C0290D1E5141F3A90683533D544114AE47110D1E5141666666C6533D54418FC2F538081E5141C3F5280C543D54418FC2F5D8081E514148E17A64513D54416B648E76061E51414495A058553D54417D2165BC031E5141F32547F8573D544152B81EC5031E514148E17AF4573D54414AC930DE031E51412944F70B583D544155A28FE8031E5141F608D80A583D5441772985E2031E514121950510583D5441AE47E1DA061E514185EB51D85A3D544152B81E450B1E5141EC51B80E5C3D5441AE47E1EA0F1E5141EC51B8FE5C3D5441B55FA9AE131E514172DF40245D3D544150EB9BC4131E51419464DE3B5C3D5441D7A370DD131E51415C8FC2D55A3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76757 - 368817
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000027000000F6285CCF121E5141A4703D3A443D5441666666A6131E514185EB51E8423D544148E17A04121E5141713D0A57423D544185EB5198101E51417B14AEF73C3D54419A9999C90F1E514114AE47113A3D5441333333B30E1E5141B81E855B373D54413D0AD7530D1E514185EB51B8373D54418FC2F5E80B1E514148E17A94383D5441C3F5288C0A1E5141F6285C7F383D5441000000F0081E514152B81E453F3D5441F6285CFF041E5141713D0A173E3D5441D7A3700D011E51413D0AD7F33C3D5441B81E85BBFF1D5141E17A143E3E3D54410AD7A300FD1D514185EB51E8403D544114AE4701FA1D5141295C8F72433D544114AE4731F71D5141A4703DDA443D5441713D0A67F81D514185EB51484A3D54418FC2F548F81D51410AD7A340523D544114AE4791F61D5141C3F5285C543D544114AE47D1F21D5141295C8F02543D54418FC2F518F11D51410AD7A380533D544114AE4711EF1D5141EC51B80E573D5441713D0AF7EF1D5141A4703DBA5A3D54418FC2F578F51D514185EB51C85B3D5441D7A3705DFD1D5141A4703DAA5B3D544152B81E75FE1D514148E17A445A3D544152B81EC5031E514148E17AF4573D5441AE47E1DA061E514185EB51D85A3D544152B81E450B1E5141EC51B80E5C3D5441AE47E1EA0F1E5141EC51B8FE5C3D544148E17AB4131E514148E17A245D3D5441D7A370DD131E51415C8FC2D55A3D5441713D0AD7151E51413D0AD7635A3D54419A999919171E51417B14AE27533D54417B14AE37171E51411F85EB31513D5441AE47E17A161E514185EB51D84B3D544133333313151E51410AD7A390483D5441713D0A97131E514166666666453D5441F6285CCF121E5141A4703D3A443D54410E0000008FC2F538081E5141C3F5280C543D54418FC2F5D8081E514148E17A64513D5441D7A3705D0C1E514185EB51584E3D544114AE47D1101E5141A4703D6A503D544152B81EB5131E5141C3F5283C513D5441AE47E1EA141E5141295C8FB2533D54418FC2F5F8151E5141C3F5280C543D54418FC2F5A8151E5141295C8F92553D544133333323141E514185EB51D8553D5441713D0A870F1E5141295C8FB2533D5441D7A370CD0F1E5141EC51B80E523D54418FC2F5D80D1E51410AD7A3A0513D544114AE47110D1E5141666666C6533D54418FC2F538081E5141C3F5280C543D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A370DD131E51415C8FC2D55A3D54414D3CA0E6131E5141F2B4B0D35A3D54410F803CD7151E51414D71B6625A3D54417523A327161E514175A00B95583D54416BF66941161E514191C20801583D54411FA315B9161E514172C5E051553D5441248BD4AA151E51417AE56E89553D54418FC2F5A8151E5141295C8F92553D5441E96B1B60141E5141A9316BCD553D544133333323141E514185EB51D8553D5441898196E60F1E5141BCCF11DF533D5441713D0A870F1E5141295C8FB2533D5441D7A370CD0F1E5141EC51B80E523D54418FC2F5D80D1E51410AD7A3A0513D54415B48C0290D1E5141F3A90683533D544114AE47110D1E5141666666C6533D54418FC2F538081E5141C3F5280C543D54418FC2F5D8081E514148E17A64513D54416B648E76061E51414495A058553D54417D2165BC031E5141F32547F8573D544152B81EC5031E514148E17AF4573D54414AC930DE031E51412944F70B583D544155A28FE8031E5141F608D80A583D5441772985E2031E514121950510583D5441AE47E1DA061E514185EB51D85A3D544152B81E450B1E5141EC51B80E5C3D5441AE47E1EA0F1E5141EC51B8FE5C3D5441B55FA9AE131E514172DF40245D3D544150EB9BC4131E51419464DE3B5C3D5441D7A370DD131E51415C8FC2D55A3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>972667 - 403965
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000C9D0022916A15041CB14CA3FC8495541F970C33516A15041E7489945C8495541643BDF5F16A15041DBF97EBAC7495541BA490CDA18A15041560E2D72C5495541B81E85A317A15041A4703DF2C1495541E926312818A150410E2DB225BF4955416891ED3C1BA150414260E560B84955412EE5FEE61EA150419C4CA089B9495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B049554185EB513824A15041D7A370E5AE495541B07268B124A1504121B072E8A949554198ACC28E24A150410AFC3C6CA949554116AD75B61EA15041D6D5D10AA54955413EE306F71BA15041B5A938FCA249554107EDB20E1BA1504172DBC493A34955414BAEC53C1AA15041072B082EA44955411320F1A811A15041DD2F761BAB495541953E5B1D10A15041E3AB3AB1AC49554158B83A6A0EA15041E249FFBFAE495541347EC4E50AA150410195E031B3495541861D46D809A150419A21B8E7B4495541A9701D7708A15041E1E3BE3CB7495541D0DBEF7107A15041CA3F8A02B94955419E7D020005A150414DBE7864BD49554119C807FE05A150417C7A56CFBF49554134D0A7AF05A15041A6C26B97C04955418F37189703A15041A3D4F50AC4495541FA25A2B002A15041052346BAC849554150915E9804A150418D6854AFC949554194937FA811A15041D5006BECCF495541C9D0022916A15041CB14CA3FC8495541
+</a>
+
+<b>
+010600000001000000010300000001000000160000007D46E09D1BA15041C0DC5F36A34955412152B80E1BA15041080AD793A3495541C2CCCC3C1AA15041D77A142EA44955414ADF3E3A1AA15041AF8D1230A44955411320F1A811A15041DD2F761BAB495541953E5B1D10A15041E3AB3AB1AC49554112B48D8F0EA1504172F4CF92AE495541D89BBC7A0EA1504152E4FCBDAE495541BBD6308119A15041949B47A3B3495541426CF36320A1504137469EDCB64955418EF9CC7020A15041D097B2CEB6495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B0495541100D7B7522A1504149C69C12B049554185EB513824A15041D7A370E5AE495541B07268B124A1504121B072E8A94955412789009B24A1504179B91F98A9495541AF766BA924A150419182097FA9495541D651B88E24A15041B8F5286CA9495541666666B61EA15041C447E10AA54955413EE306F71BA15041B5A938FCA24955417D46E09D1BA15041C0DC5F36A3495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>972667 - 420725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000C9D0022916A15041CB14CA3FC8495541F970C33516A15041E7489945C8495541643BDF5F16A15041DBF97EBAC7495541BA490CDA18A15041560E2D72C5495541B81E85A317A15041A4703DF2C1495541E926312818A150410E2DB225BF4955416891ED3C1BA150414260E560B84955412EE5FEE61EA150419C4CA089B9495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B049554185EB513824A15041D7A370E5AE495541B07268B124A1504121B072E8A949554198ACC28E24A150410AFC3C6CA949554116AD75B61EA15041D6D5D10AA54955413EE306F71BA15041B5A938FCA249554107EDB20E1BA1504172DBC493A34955414BAEC53C1AA15041072B082EA44955411320F1A811A15041DD2F761BAB495541953E5B1D10A15041E3AB3AB1AC49554158B83A6A0EA15041E249FFBFAE495541347EC4E50AA150410195E031B3495541861D46D809A150419A21B8E7B4495541A9701D7708A15041E1E3BE3CB7495541D0DBEF7107A15041CA3F8A02B94955419E7D020005A150414DBE7864BD49554119C807FE05A150417C7A56CFBF49554134D0A7AF05A15041A6C26B97C04955418F37189703A15041A3D4F50AC4495541FA25A2B002A15041052346BAC849554150915E9804A150418D6854AFC949554194937FA811A15041D5006BECCF495541C9D0022916A15041CB14CA3FC8495541
+</a>
+
+<b>
+010600000001000000010300000001000000160000007D46E09D1BA15041C0DC5F36A34955412152B80E1BA15041080AD793A3495541C2CCCC3C1AA15041D77A142EA44955414ADF3E3A1AA15041AF8D1230A44955411320F1A811A15041DD2F761BAB495541953E5B1D10A15041E3AB3AB1AC49554112B48D8F0EA1504172F4CF92AE495541D89BBC7A0EA1504152E4FCBDAE495541BBD6308119A15041949B47A3B3495541426CF36320A1504137469EDCB64955418EF9CC7020A15041D097B2CEB6495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B0495541100D7B7522A1504149C69C12B049554185EB513824A15041D7A370E5AE495541B07268B124A1504121B072E8A94955412789009B24A1504179B91F98A9495541AF766BA924A150419182097FA9495541D651B88E24A15041B8F5286CA9495541666666B61EA15041C447E10AA54955413EE306F71BA15041B5A938FCA24955417D46E09D1BA15041C0DC5F36A3495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>221922 - 5296539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000006000000D7A3702D2C3F51411F85EB7129AA5441F6285CAF0A3F5141A4703D1A29AA54415C8FC235E93E5141333333C328AA544133333313E53E51419A99994941AA5441295C8F02293F5141B81E851B42AA5441D7A3702D2C3F51411F85EB7129AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000098FE484B283F5141919716BD2CAA5441B61E02A6253F5141D93F91B92CAA54418FE2FC8C1F3F514191CA73B12CAA5441607CAD04123F5141275F719F2CAA5441D997286DE83E51413D4C17682CAA54413DF96AC6E33E5141887DE53449AA5441121D3825E13E5141FC785E9658AA54412EDF8058DE3E5141F0BCF97267AA54416B65DFF5033F5141F0BCF97267AA54414ADF755A0F3F5141EE4445A167AA5441CB93B77A2A3F5141EE4445A167AA5441EEC735B8733F5141D3AC621667AA5441C613C57B753F5141A2CCCEDB4FAA54412F04F1D1753F51417EA2FA204BAA5441C79B3ED1743F514167FD5C7245AA54418509E3A96F3F51416F9CB75C31AA54412932671B6D3F514149F23FDD26AA5441EEA453246A3F5141B24533B21AAA5441F2E6F853683F5141D1F4C63F13AA54412F7FCB70683F5141BD17616E0CAA54416B1DAAF3683F5141CBE95F0809AA5441EF1F89346A3F51411F6DB500FEA95441BFF89CCE6A3F5141384BCBFBEFA95441BAAB2E1B6C3F514188E5E65FE0A95441C3E6EB436C3F5141D45E6976DEA95441A1B77C566C3F51415C7133F4DCA95441B102B4776C3F514134809C7EDBA95441C0DE4C6F653F5141673E4EEBDAA95441DB9DFD9C5E3F514191F2531ED9A95441EA967E5E573F51417D6AA710D9A95441669E0132553F5141D95BEBEFD8A954412105709D513F5141EDA49793D9A954416F40F42C493F51413E0BBC78DAA954414ABDA18C433F51417C2834BADAA954411C1DFC6D3B3F5141719D14C0DBA95441FBA8AF74313F514147280FF7DCA9544147A2C0AD2A3F5141EA9591ECDDA95441478626FF1C3F5141F3531E96DFA95441A90A5732153F5141C9DE18CDE0A954417BC977E80D3F51412F2F2381E1A954416A8FD1EB083F51414378CF24E2A95441ACFDC22A033F514125453DB2E1A95441820D5DDEF53E514182D7BABCE0A95441B6E1287CF53E514126E676DDE0A95441AA339038F53E5141CE68EF82E2A95441271358BDF43E5141B17A1367E4A954410199C65EF03E5141CA8B2D30FDA9544101740B32ED3E51415504DEB510AA544191EBB3722F3F51413461916F11AA5441FEC2FFC52B3F5141D68552972CAA5441A757F5A52B3F51414B4DAE982CAA5441EE9E3EA02B3F51412FBD85C12CAA544198FE484B283F5141919716BD2CAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 1175972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441CDCCCC5CAD9D51411F85EB1130A15441AE47E1DAAC9D51419A9999D931A154418FC2F538AD9D514114AE47A134A15441B81E858BB09D51419A99990939A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A15441F6285CBFBB9D51415C8FC20552A1544100000030BC9D51415C8FC2B552A154418FC2F5F8BC9D5141CDCCCC3C52A15441C3F528CCBB9D51415C8FC2654FA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441C5F21BC8BD9D51418555C6DA25A154418FDBECF0B89D5141C945F91728A15441837736B2B59D5141261231182AA154411982DC9CAF9D5141A394B8EC2EA15441F46F8C9FAD9D5141D39198A031A1544100879B1BAD9D514102A8D9E632A154418FC2F538AD9D514114AE47A134A154413307FF8FB09D514122782A2139A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A154415BFFE6DABB9D5141F1AAAA5B4FA154415EBC08EDBC9D514177DB88934EA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 3408600
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441CDCCCC5CAD9D51411F85EB1130A15441AE47E1DAAC9D51419A9999D931A154418FC2F538AD9D514114AE47A134A15441B81E858BB09D51419A99990939A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A15441F6285CBFBB9D51415C8FC20552A1544100000030BC9D51415C8FC2B552A154418FC2F5F8BC9D5141CDCCCC3C52A15441C3F528CCBB9D51415C8FC2654FA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441C5F21BC8BD9D51418555C6DA25A154418FDBECF0B89D5141C945F91728A15441837736B2B59D5141261231182AA154411982DC9CAF9D5141A394B8EC2EA15441F46F8C9FAD9D5141D39198A031A1544100879B1BAD9D514102A8D9E632A154418FC2F538AD9D514114AE47A134A154413307FF8FB09D514122782A2139A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A154415BFFE6DABB9D5141F1AAAA5B4FA154415EBC08EDBC9D514177DB88934EA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 254507
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441CDCCCC5CAD9D51411F85EB1130A15441AE47E1DAAC9D51419A9999D931A154418FC2F538AD9D514114AE47A134A15441B81E858BB09D51419A99990939A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A15441F6285CBFBB9D51415C8FC20552A1544100000030BC9D51415C8FC2B552A154418FC2F5F8BC9D5141CDCCCC3C52A15441C3F528CCBB9D51415C8FC2654FA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441C5F21BC8BD9D51418555C6DA25A154418BDBECF0B89D5141C745F91728A15441817736B2B59D5141261231182AA154411782DC9CAF9D5141A794B8EC2EA15441F06F8C9FAD9D5141D29198A031A1544105879B1BAD9D514107A8D9E632A154418FC2F538AD9D514114AE47A134A154413207FF8FB09D514124782A2139A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A154415EFFE6DABB9D5141EFAAAA5B4FA154415CBC08EDBC9D51417CDB88934EA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 343796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441CDCCCC5CAD9D51411F85EB1130A15441AE47E1DAAC9D51419A9999D931A154418FC2F538AD9D514114AE47A134A15441B81E858BB09D51419A99990939A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A15441F6285CBFBB9D51415C8FC20552A1544100000030BC9D51415C8FC2B552A154418FC2F5F8BC9D5141CDCCCC3C52A15441C3F528CCBB9D51415C8FC2654FA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441C5F21BC8BD9D51418555C6DA25A154418BDBECF0B89D5141C745F91728A15441817736B2B59D5141261231182AA154411782DC9CAF9D5141A794B8EC2EA15441F06F8C9FAD9D5141D29198A031A1544105879B1BAD9D514107A8D9E632A154418FC2F538AD9D514114AE47A134A154413207FF8FB09D514124782A2139A15441AE47E17AB19D51415C8FC2F53DA15441C3F5282CB39D514148E17AB43EA154418FC2F5B8B49D5141000000F041A1544152B81E85B49D5141AE47E16A44A15441F6285CEFB59D5141CDCCCC3C45A154415C8FC225B79D5141EC51B80E47A1544148E17AC4B69D51415C8FC2A548A15441EC51B80EB89D51413D0AD7134BA154417B14AEE7BA9D51410000007050A154415EFFE6DABB9D5141EFAAAA5B4FA154415CBC08EDBC9D51417CDB88934EA1544152B81EE5C09D514185EB51E84BA15441AE47E15AC29D514185EB51E84AA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>207991 - 71334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003F00000048E17A947B8F5041B81E850BDE435541A4703D2A7B8F5041E17A140EDF435541295C8FA27A8F504148E17AC4DF435541F6285CBF798F5041A4703D9AE04355410AD7A390788F5041D7A3702DE243554185EB5178778F5041EC51B8DEE3435541CDCCCC9C768F504100000080E54355417B14AED7758F5041D7A3706DE7435541D7A3706D758F504114AE47F1E843554185EB5138758F5041713D0A37EA43554152B81E15728F5041A4703D2AEE43554148E17AC46A8F504152B81E15F943554185EB51F8698F5041A4703D8AFA4355410AD7A370668F50419A999949024455418FC2F538748F50415C8FC2850744554152B81E65788F50410AD7A3C00A4455417B14AEE78C8F5041E17A14AE13445541AE47E14A8F8F50417B14AE0715445541C3F5283C908F5041F6285CCF154455410AD7A380938F50413D0AD7A31844554166666676948F5041E17A145E16445541295C8FA2998F5041C3F5283C0B445541C3F5287C9A8F504152B81EB50944554185EB51F89B8F5041AE47E14A07445541713D0AF79D8F50419A999939044455413D0AD7839D8F50418FC2F578F8435541713D0A879E8F5041CDCCCC8CF3435541333333539F8F504185EB5178ED435541A4703D8A9F8F50418FC2F5E8E8435541B81E857BA08F5041F6285C0FE44355419A999959A18F504166666686E14355413D0AD7A3A18F50418FC2F578DD435541666666B6A18F5041AE47E14AD5435541EC51B87EA18F5041295C8F42CD435541EC51B81EA08F504152B81E25BF435541000000809C8F5041D7A370ADC1435541CDCCCC1C9A8F504152B81E45C3435541CDCCCC5C978F5041713D0AC7C3435541B81E850B958F504152B81E05C643554148E17AA4918F50419A999959C9435541E17A14DE8C8F50415C8FC2C5C84355410AD7A3F08C8F5041E17A14CEC543554133333373888F50419A999999C64355411F85EB91868F50411F85EB61C643554114AE47B17F8F50411F85EB01C5435541F6285C6F7C8F5041AE47E15AC4435541713D0A87788F5041295C8F92C44355413D0AD743788F5041B81E85DBC84355417B14AEA7798F5041AE47E17ACA435541F6285C2F7A8F5041F6285C4FCB4355418FC2F5A87A8F5041CDCCCC0CCC4355419A9999397B8F5041295C8F52CD43554148E17AA47B8F50411F85EB81CE435541A4703DCA7B8F50417B14AE47CF435541295C8FD27B8F50419A999959D04355415C8FC2A57B8F504148E17AF4D1435541C3F528DC7B8F504185EB5108D4435541A4703D0A7C8F504114AE47C1D543554148E17AF47B8F5041EC51B86ED8435541D7A370ED7B8F504114AE4771D943554152B81E057C8F50415C8FC275DB435541EC51B8EE7B8F5041333333E3DC43554148E17A947B8F5041B81E850BDE435541
+</a>
+
+<b>
+010600000001000000010300000001000000340000007BCEEB58978F50419DA0D1CAC3435541DD30A1EC998F50416176024EC343554181CD0F429A8F50412B0E442CC3435541029A2A209C8F504155CD5CEDC143554114DA8BCF9E8F50411A4B9A0FC0435541EC51B81EA08F504152B81E25BF435541704EED1FA08F50410D9B8231BF435541F3161434A08F504158DC5F00C0435541F4FFDFECA08F5041EB0F6569C743554174F47271A18F5041E6DC53BACC43554135AC0491A18F5041C25955E6CF435541976C73A5A18F5041106AEED8D2435541E83572B1A18F50411F08D079D743554155B35AA6A18F5041AA18475DDC43554107E6AA5BA18F5041C0E88169E1435541674CF89EA08F504131C3C4A7E34355415153B955A08F504186B8DAD1E4435541546E5DEB9F8F5041B56E2AF5E64355416D3F4F859F8F50411CFA8751E943554122E3186D9F8F504100E10E53EB435541FB961F549F8F5041FE41BC64ED4355413FC81F929E8F50415CE04B38F3435541B29A75309E8F5041243DBB31F54355417567D4859D8F5041B55E496FF8435541C7599C879D8F5041297570DBF84355416FD15FA69D8F5041396AE1FEFB435541E35F60CE9D8F50412F9D9A1300445541C05119F59D8F504147B0E7060444554166D42C0E9E8F5041B04A53A6034455417B14AE579E8F504152B81ED5F743554114AE47619E8F5041B81E851BF7435541333333739E8F504133333373F64355410AD7A3109F8F5041AE47E19AF3435541713D0A679F8F50415C8FC2A5F1435541000000E09F8F504185EB5188EC43554166666656A08F5041333333F3E743554148E17A74A08F50418FC2F538E7435541295C8F42A18F5041713D0A07E443554166666606A28F5041AE47E10AE043554100000060A28F50413D0AD793DD435541D7A3708DA28F50417B14AEF7DB435541E17A148EA28F5041A4703D7AD443554100000090A28F504114AE4721D0435541B81E85FBA18F504133333313C74355417B14AE87A18F50415C8FC235C3435541B81E851BA18F5041D7A3705DBF435541BFBF981CA18F504159F2BE5ABF435541CDCCCCDCA08F504152B81E25BD435541C3F5285C9A8F50415C8FC235C24355418D91533B978F5041A2ED1AB3C2435541CDCCCC5C978F5041713D0AC7C34355417BCEEB58978F50419DA0D1CAC3435541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978753 - 670277
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541CDCCCC0C90D25041C3F5285C611B55410000003090D25041295C8F825F1B5541EC51B85E8ED25041295C8F025F1B55410AD7A35088D250417B14AE575D1B5541E17A14DE86D250410AD7A3105D1B55419A9999A980D25041F6285CDF5B1B5541EC51B83E7FD25041D7A370AD5B1B5541CDCCCC3C79D25041CDCCCCDC5A1B5541E17A14DE77D2504148E17AC45A1B5541713D0A8777D25041E17A14BE5A1B5541D7A370CD71D2504152B81E555A1B55419A99992968D25041333333435C1B5541B81E85BB63D25041F6285CDF5A1B5541D7A3705D63D2504133333353591B5541713D0A975FD25041E17A145E661B5541B6AD03EE5ED25041DBDB79836A1B5541C9D388525FD25041CF29027F6A1B554101B984525FD250415F8B577E6A1B5541C51755515FD2504127640A4D6A1B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978753 - 1404942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541CDCCCC0C90D25041C3F5285C611B55410000003090D25041295C8F825F1B5541EC51B85E8ED25041295C8F025F1B55410AD7A35088D250417B14AE575D1B5541E17A14DE86D250410AD7A3105D1B55419A9999A980D25041F6285CDF5B1B5541EC51B83E7FD25041D7A370AD5B1B5541CDCCCC3C79D25041CDCCCCDC5A1B5541E17A14DE77D2504148E17AC45A1B5541713D0A8777D25041E17A14BE5A1B5541D7A370CD71D2504152B81E555A1B55419A99992968D25041333333435C1B5541B81E85BB63D25041F6285CDF5A1B5541D7A3705D63D2504133333353591B5541713D0A975FD25041E17A145E661B5541B6AD03EE5ED25041DBDB79836A1B5541C9D388525FD25041CF29027F6A1B554101B984525FD250415F8B577E6A1B5541C51755515FD2504127640A4D6A1B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978753 - 3653621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541CDCCCC0C90D25041C3F5285C611B55410000003090D25041295C8F825F1B5541EC51B85E8ED25041295C8F025F1B55410AD7A35088D250417B14AE575D1B5541E17A14DE86D250410AD7A3105D1B55419A9999A980D25041F6285CDF5B1B5541EC51B83E7FD25041D7A370AD5B1B5541CDCCCC3C79D25041CDCCCCDC5A1B5541E17A14DE77D2504148E17AC45A1B5541713D0A8777D25041E17A14BE5A1B5541D7A370CD71D2504152B81E555A1B55419A99992968D25041333333435C1B5541B81E85BB63D25041F6285CDF5A1B5541D7A3705D63D2504133333353591B5541713D0A975FD25041E17A145E661B5541B6AD03EE5ED25041DBDB79836A1B5541C9D388525FD25041CF29027F6A1B554101B984525FD250415F8B577E6A1B5541C51755515FD2504127640A4D6A1B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235046 - 222400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441D7A3702DDD9F5141D7A370FDADA254413D0AD733E09F514133333303B1A2544100000070E09F51418FC2F5C8AFA2544114AE47F1E09F51417B14AE97ADA2544166666666E29F51417B14AE47A7A254411F85EB71E29F51415C8FC215A7A25441713D0A77D79F51415C8FC255A2A25441D7A3702DD99F51411F85EB519BA25441333333B3CD9F5141E17A14EE96A25441713D0A47CC9F5141C3F5286C9BA25441AE47E1BACA9F5141000000A09AA2544152B81E75C19F5141666666D695A2544166666616BF9F5141D7A3709D94A25441EC51B83EBF9F514152B81E7597A254410AD7A3F0C39F5141666666E69AA2544185EB5148C69F5141A4703D1A9DA25441F6285CAFC79F514185EB51089FA2544152B81E25C89F514185EB51F8A4A2544100000040CD9F514133333343A9A25441295C8F02CE9F51411F85EB51A9A254419A999949CF9F5141E17A144EA8A254410103000000010000001A000000B81E85BBBE9F51418FC2F5A897A25441B81E858BBE9F5141EC51B88E94A254413D0AD7F3BD9F5141AE47E10A94A254415C8FC2B5BC9F51415C8FC2E592A254417B14AE87B69F5141B81E852B92A254417B14AEC7B49F5141295C8FD290A2544166666666B19F5141666666268FA25441CDCCCCCCAD9F514152B81E058DA25441C3F528ACAA9F51411F85EB518AA254418FC2F578A29F5141AE47E12A86A2544185EB5138A19F514185EB511886A25441F6285C3F9C9F514185EB510884A25441F6285CDF949F514148E17AD483A25441C3F5284C939F5141EC51B8BE84A2544152B81EB5929F5141333333C385A254413D0AD713909F51419A9999498AA254415C8FC205979F5141EC51B8AE94A25441000000A0A29F514166666656A1A254417B14AE47AF9F5141666666E6A7A254411F85EBA1BE9F514185EB5198AAA2544133333303CA9F5141A4703D2AA7A2544133333383C79F514166666616A5A25441D7A3702DC79F5141EC51B82E9FA25441295C8FE2C59F5141EC51B86E9DA2544152B81EA5C39F5141666666469BA25441B81E85BBBE9F51418FC2F5A897A25441
+</a>
+
+<b>
+010600000001000000010300000001000000280000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441654C898DD49F5141280C2B9AA8A254412986DAECD49F51417D57C6B1A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441508A5A05DC9F5141FA6EC66EACA2544167BCCA94DD9F514184DEB464AEA25441AD7730F3DE9F5141B277D0C2AFA25441ACA2E827DF9F51414B7B7DF7AFA2544150267E35DF9F51413A1F1005B0A254416A452E41DF9F514148C5BD10B0A254415E001B34E09F5141C035D001B1A2544100000070E09F51418FC2F5C8AFA25441744D58EEE09F5141C138389FADA25441E941A46EE09F5141DD76A5B2ACA25441D83F3659DF9F51416A8F4F21ACA254417C5D4CF3DB9F5141FD615108A9A2544121EC2F98D99F514116063CEAA6A25441872552F9CC9F5141ADF8C402A6A2544167B66F86CA9F5141D162042FA4A25441D8BE3C04CA9F5141F14CC7ECA0A25441CE1970ADC99F5141B173AC709DA25441451684C5C19F51418FC78A1D96A254412FE8EB53BF9F514134982CBD94A25441C73D8617BF9F5141781D059E94A254416974592FBF9F514148C5B75F96A25441D5E0AD3BBF9F51411EB33D3E97A25441D59AA43EBF9F514149E8BA7397A254412E268D02C39F5141B8B7D3379AA254410AD7A3F0C39F5141666666E69AA2544185EB5148C69F5141A4703D1A9DA2544162F35650C79F514129A88F859EA25441F6285CAFC79F514185EB51089FA25441CD3919E3C79F5141A30B24A4A1A254410233D726C89F51418D13BAF4A4A25441BFDED43CCD9F514181932F40A9A25441121180BBCD9F51417C348B4CA9A25441295C8F02CE9F51411F85EB51A9A254419A999949CF9F5141E17A144EA8A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235046 - 365568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441D7A3702DDD9F5141D7A370FDADA254413D0AD733E09F514133333303B1A2544100000070E09F51418FC2F5C8AFA2544114AE47F1E09F51417B14AE97ADA2544166666666E29F51417B14AE47A7A254411F85EB71E29F51415C8FC215A7A25441713D0A77D79F51415C8FC255A2A25441D7A3702DD99F51411F85EB519BA25441333333B3CD9F5141E17A14EE96A25441713D0A47CC9F5141C3F5286C9BA25441AE47E1BACA9F5141000000A09AA2544152B81E75C19F5141666666D695A2544166666616BF9F5141D7A3709D94A25441EC51B83EBF9F514152B81E7597A254410AD7A3F0C39F5141666666E69AA2544185EB5148C69F5141A4703D1A9DA25441F6285CAFC79F514185EB51089FA2544152B81E25C89F514185EB51F8A4A2544100000040CD9F514133333343A9A25441295C8F02CE9F51411F85EB51A9A254419A999949CF9F5141E17A144EA8A254410103000000010000001A000000B81E85BBBE9F51418FC2F5A897A25441B81E858BBE9F5141EC51B88E94A254413D0AD7F3BD9F5141AE47E10A94A254415C8FC2B5BC9F51415C8FC2E592A254417B14AE87B69F5141B81E852B92A254417B14AEC7B49F5141295C8FD290A2544166666666B19F5141666666268FA25441CDCCCCCCAD9F514152B81E058DA25441C3F528ACAA9F51411F85EB518AA254418FC2F578A29F5141AE47E12A86A2544185EB5138A19F514185EB511886A25441F6285C3F9C9F514185EB510884A25441F6285CDF949F514148E17AD483A25441C3F5284C939F5141EC51B8BE84A2544152B81EB5929F5141333333C385A254413D0AD713909F51419A9999498AA254415C8FC205979F5141EC51B8AE94A25441000000A0A29F514166666656A1A254417B14AE47AF9F5141666666E6A7A254411F85EBA1BE9F514185EB5198AAA2544133333303CA9F5141A4703D2AA7A2544133333383C79F514166666616A5A25441D7A3702DC79F5141EC51B82E9FA25441295C8FE2C59F5141EC51B86E9DA2544152B81EA5C39F5141666666469BA25441B81E85BBBE9F51418FC2F5A897A25441
+</a>
+
+<b>
+010600000001000000010300000001000000280000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441654C898DD49F5141280C2B9AA8A254412986DAECD49F51417D57C6B1A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441508A5A05DC9F5141FA6EC66EACA2544167BCCA94DD9F514184DEB464AEA25441AD7730F3DE9F5141B277D0C2AFA25441ACA2E827DF9F51414B7B7DF7AFA2544150267E35DF9F51413A1F1005B0A254416A452E41DF9F514148C5BD10B0A254415E001B34E09F5141C035D001B1A2544100000070E09F51418FC2F5C8AFA25441744D58EEE09F5141C138389FADA25441E941A46EE09F5141DD76A5B2ACA25441D83F3659DF9F51416A8F4F21ACA254417C5D4CF3DB9F5141FD615108A9A2544121EC2F98D99F514116063CEAA6A25441872552F9CC9F5141ADF8C402A6A2544167B66F86CA9F5141D162042FA4A25441D8BE3C04CA9F5141F14CC7ECA0A25441CE1970ADC99F5141B173AC709DA25441451684C5C19F51418FC78A1D96A254412FE8EB53BF9F514134982CBD94A25441C73D8617BF9F5141781D059E94A254416974592FBF9F514148C5B75F96A25441D5E0AD3BBF9F51411EB33D3E97A25441D59AA43EBF9F514149E8BA7397A254412E268D02C39F5141B8B7D3379AA254410AD7A3F0C39F5141666666E69AA2544185EB5148C69F5141A4703D1A9DA2544162F35650C79F514129A88F859EA25441F6285CAFC79F514185EB51089FA25441CD3919E3C79F5141A30B24A4A1A254410233D726C89F51418D13BAF4A4A25441BFDED43CCD9F514181932F40A9A25441121180BBCD9F51417C348B4CA9A25441295C8F02CE9F51411F85EB51A9A254419A999949CF9F5141E17A144EA8A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208373 - 56162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000300000001030000000200000015000000C3F5284C389550418FC2F5A842475541D7A370CD3995504152B81E7543475541713D0AF73A955041EC51B8FE43475541B81E856B3B955041666666264447554114AE472141955041CDCCCC6C324755415C8FC24543955041C3F528AC2E475541295C8F0243955041B81E85DB2D475541C3F5285C3E95504114AE476129475541333333A33395504185EB51E823475541333333B332955041713D0A17264755419A9999792F955041E17A14CE2C475541713D0A472C955041AE47E19A33475541EC51B8DE2B9550418FC2F57834475541AE47E18A2F9550415C8FC2253A47554100000000319550411F85EB313C4755415C8FC20532955041295C8F623E475541D7A3704D339550413D0AD7A33F475541333333A334955041295C8F6241475541E17A14FE359550419A9999094247554148E17A1437955041295C8F3242475541C3F5284C389550418FC2F5A842475541160000003D0AD79338955041C3F5280C2E4755416666664638955041713D0A772D4755418FC2F54838955041000000F02C4755419A9999A938955041713D0A072C4755413333337339955041CDCCCC1C2B47554148E17AE43995504114AE47D12A475541E17A144E3A9550417B14AEC72A475541E17A148E3B955041666666A62B475541000000A03D955041D7A370FD2C475541713D0AA73F9550418FC2F5F82D4755413D0AD71340955041F6285C5F2E475541A4703D4A40955041333333D32E4755415C8FC23540955041D7A3706D2F47554114AE47014095504148E17A24304755413D0AD7433F95504133333333314755418FC2F5783E9550417B14AEC73147554114AE47B13D955041E17A14DE31475541713D0A473D9550417B14AEC73147554148E17A843B95504185EB51F82F47554114AE47613A9550415C8FC2B52E475541295C8F4239955041AE47E15A2E4755413D0AD79338955041C3F5280C2E4755410103000000010000003900000014AE47D1739550410AD7A3804F47554148E17AC47495504152B81E3550475541F6285C0F76955041AE47E10A51475541AE47E19A779550419A9999195247554152B81EA5789550413D0AD7B3524755418FC2F588799550413D0AD73353475541333333837A9550413D0AD743544755419A9999B97B955041CDCCCC5C554755413D0AD7937C9550418FC2F53856475541713D0AB77D955041E17A145E57475541295C8FC27E955041F6285CBF58475541D7A370BD7F9550413D0AD7C359475541B81E857B80955041333333735A4755415C8FC23581955041D7A3704D5B475541295C8F4282955041C3F5285C5C475541EC51B83E839550410AD7A3C05D475541C3F528FC83955041713D0AA75E47554100000090849550418FC2F5985F475541F6285C7F8595504185EB518860475541AE47E10A86955041D7A3707D61475541D7A370FD869550415C8FC21562475541E17A14EE87955041C3F5285C6247554152B81ED5889550410AD7A3A062475541EC51B8EE8895504185EB51A863475541CDCCCC0C89955041D7A370AD6447554185EB5158899550417B14AE5765475541AE47E1BA89955041666666D6654755417B14AE778A955041EC51B82E66475541713D0A578B9550411F85EBA1664755415C8FC2A58B955041295C8F1267475541666666668B955041F6285CAF674755413D0AD7238B9550413D0AD7636847554148E17A148C9550410AD7A3B06847554185EB51288D955041CDCCCC3C69475541A4703D1A90955041EC51B82E6B475541713D0AB793955041D7A3700D6C47554148E17A74959550410AD7A3A06C475541EC51B88E96955041000000006D4755415C8FC20597955041AE47E12A6D475541CDCCCC5C979550417B14AE076A475541AE47E1EA95955041EC51B89E69475541CDCCCC3C96955041C3F5287C684755418FC2F5D894955041333333B36747554148E17A549195504185EB51B865475541CDCCCCEC919550419A9999C963475541000000208E955041AE47E1DA5F4755417B14AEF78D955041B81E85BB5F475541AE47E1FA879550418FC2F5885A4755413D0AD7338495504152B81EC555475541EC51B80E81955041AE47E11A52475541E17A143E7F955041A4703D6A4E4755415C8FC2057C95504148E17A544947554185EB51887A955041C3F5282C48475541AE47E11A78955041E17A146E464755415C8FC2B5749550419A9999A94B4755415C8FC2A572955041295C8F724E47554114AE47D1739550410AD7A3804F475541010300000001000000520000003D0AD7135F9550418FC2F53854475541295C8FA24C9550418FC2F5E84D4755410AD7A3C04895504148E17A944C475541295C8F824B9550411F85EB8142475541E17A14EE4D955041EC51B89E394755417B14AE074B955041713D0A0739475541B81E85BB47955041A4703DFA374755415C8FC21547955041B81E857B3747554152B81E3546955041295C8FD236475541295C8FF244955041C3F5285C35475541EC51B85E449550410AD7A31033475541000000303F95504185EB511846475541F6285C4F3F9550410000003046475541CDCCCC5C41955041F6285CEF474755416666661642955041CDCCCCAC484755410AD7A3804495504114AE47414B475541AE47E1DA46955041C3F5283C4D4755418FC2F50848955041A4703D7A4E4755411F85EBF1489550418FC2F5E8514755418FC2F5D8499550418FC2F52856475541000000404A9550413D0AD7035C47554185EB51584A955041295C8FF25D4755418FC2F5684A955041CDCCCC4C5F4755417B14AE874B95504185EB51985F475541EC51B89E50955041EC51B8DE61475541666666365A9550417B14AE27664755416666664660955041F6285C9F6847554152B81EB561955041F6285C7F694755415C8FC26562955041D7A370ED684755413D0AD7A367955041CDCCCC0C6A475541000000E06B955041A4703D1A64475541F6285C0F6C9550417B14AED7634755413D0AD7236D95504114AE472164475541E17A140E6E955041F6285C3F654755413D0AD7B36E955041295C8F6266475541295C8F826F955041666666A666475541295C8F9270955041F6285C0F67475541EC51B85E73955041F6285C4F67475541D7A370BD76955041295C8F826747554185EB51887995504185EB51D866475541000000207D955041713D0A0765475541666666A680955041C3F528FC634755411F85EB21839550413D0AD7C363475541B81E852B86955041713D0A07654755413D0AD773899550417B14AE27674755417B14AEF78A955041C3F5287C67475541C3F528FC8A9550417B14AE17674755419A9999398A9550411F85EBB16647554185EB51B8899550413D0AD75366475541D7A3702D89955041F6285CBF65475541333333C3889550418FC2F538654755413D0AD79388955041666666A664475541B81E858B88955041AE47E1FA63475541C3F5286C88955041A4703D4A634755411F85EBF187955041333333B362475541333333E386955041A4703D8A62475541C3F5285C8695504114AE475162475541713D0AF7859550417B14AED761475541E17A142E85955041CDCCCCFC604755416666664684955041AE47E1EA5F4755410AD7A3A083955041333333335F475541C3F528FC82955041AE47E14A5E4755419A9999C981955041333333D35C4755413D0AD7E3809550410AD7A3C05B475541F6285C2F80955041EC51B8FE5A4755418FC2F5787F955041EC51B81E5A47554185EB51687E95504148E17A04594755411F85EB617D955041EC51B8BE574755417B14AE277C9550413333338356475541CDCCCC5C7B9550417B14AEB755475541CDCCCC2C7A95504185EB51A8544755413D0AD7337995504114AE47C153475541F6285C4F78955041B81E850B53475541E17A143E77955041AE47E15A5247554114AE478176955041CDCCCCCC51475541713D0A0775955041AE47E1BA504755417B14AE9774955041C3F5286C5047554185EB519873955041AE47E1BA4F47554148E17A6472955041A4703DCA4E4755410000000071955041C3F528AC50475541CDCCCC7C699550419A9999C9574755413D0AD7135F9550418FC2F53854475541
+</a>
+
+<b>
+010600000001000000010300000001000000AE00000097256E8672955041FDF9073C67475541B2ACD663749550417E4DDB5E67475541AA52AF5976955041CFCAA37C674755419B4A4483779550415230735367475541E4EED9F97795504177E2353767475541FF76E925799550419532C1EF6647554121B5593579955041D90414EC66475541554C48387A955041EC464C7F6647554167299A4E7A955041148C0174664755410C0A21927A955041D4DAD75166475541E7CCA4D97A95504195AEA92D6647554163E0FE457B9550410592D8F6654755416140C5867C955041FAA48F5465475541000000207D955041713D0A0765475541AD8074417F955041B27CB965644755417D948FAA7F955041B1DCA34664475541666666A680955041C3F528FC63475541EB2931D080955041F7D474F86347554189E94C0B82955041450788DC6347554106A8151483955041D1EB10C5634755411F85EB21839550413D0AD7C363475541C08D8AA983955041BA9535FC63475541DD34FE7C85955041F4FD7FBE644755417EECD2F085955041B2C8A4EE64475541B81E852B86955041713D0A0765475541731FAD2F8695504142DBBB096547554197364169869550412F690D2F6547554126836A80869550413764103E654755412BD10149889550417308FF656647554122A1C54D889550418AA2156966475541DBE03254889550410DFA3F6D66475541460D826E88955041A2454D7E664755412ECF3C9D889550410BBE969C6647554198BA1A08899550416757DAE1664755419F06714489955041C39CF508674755417F5C0C8B89955041AD3ABC2C674755415CB0498F899550411FA3A82D6747554126D32F988995504164DD982F67475541F5768EB8899550411FE0A5366747554129FC08D589955041DCE8D93C67475541EF2D4C258A9550413F89554E67475541C21AAE808A955041193E3D62674755416B6A80B68A9550417875F66D6747554100174CC58A9550412F7F2F7167475541950710DC8A955041F4F2247667475541F698CEF98A955041D535744C67475541A98F62FB8A955041E0E10F29674755417D9039CF8A9550415B802D00674755419A9999398A9550411F85EBB16647554185EB51B8899550413D0AD75366475541D7A3702D89955041F6285CBF65475541333333C3889550418FC2F538654755413D0AD79388955041666666A6644755418264099088955041E448FE576447554139170F6088955041CBB4493B6347554184505FAC87955041646BADA862475541AF6A030587955041AD205B8F62475541333333E386955041A4703D8A62475541C3F5285C8695504114AE475162475541924902FB85955041BDE873DC61475541DFB4CEF285955041FBEC11D361475541E17A142E85955041CDCCCCFC604755416666664684955041AE47E1EA5F4755410AD7A3A083955041333333335F47554156EE4C83839550410768C2095F475541FF09413381955041DDE7891F5C4755412AF24BA780955041E08E967F5B475541F6285C2F80955041EC51B8FE5A47554102C01DCF7F955041A19F86885A4755414934C0347F955041B6EB1BD85947554185EB51687E95504148E17A045947554114C32B897D95504149D872EF57475541E99107467D9550416349B7A2574755413D0AD7337995504114AE47C1534755411CE8395D779550416210036F52475541E17A143E77955041AE47E15A52475541C9C051B476955041DA9235F35147554133AB500F769550418F5D447A51475541912C3AB574955041F6FD0B81504755417B14AE9774955041C3F5286C5047554185EB519873955041AE47E1BA4F475541015ACC647295504170207DCA4E475541BA8A9C1471955041912937BB5047554111E732EA6C955041A93CA08A54475541CDCCCC7C699550419A9999C9574755413A0ECE746995504171ACDCC657475541EC591826669550415E02E6A45647554104D30EAF61955041E473741D554755410873E9555E9550411E8FF3F75347554189EBD78759955041F869EC5252475541630CC09258955041147008FF514755410C6D486B55955041DE2BA7EA50475541295C8FA24C9550418FC2F5E84D475541CF7CBACC48955041B7FD9E984C4755410AD7A3C04895504148E17A944C475541B5B4120349955041D8CAD0A14B4755414C53436C4A955041D53F797A46475541A79ED4084C9550416F03CF944047554106846CE14C95504145785D793D4755410A7540E94D955041A9A373B039475541CD45E7874D955041C821D88939475541E74B5A414D95504173166E7B394755415C83DBAD4C955041E0934B5D3947554169152C7B4B95504162E1A21E394755411E2ED7654B9550414D29471A394755417B14AE074B955041713D0A0739475541B81E85BB47955041A4703DFA37475541A819705047955041BDC460A8374755412F88F078469550411ED191053747554152B81E3546955041295C8FD236475541B1A36895459550415C4D2E193647554187E8050A45955041B0D8647735475541295C8FF244955041C3F5285C3547554105709F9544955041083ED3EA334755413B19D45F4495504155950B1533475541B60C10BA439550418AD6416D35475541310205464295504148B663C33A4755417109C7364295504189A55BFB3A4755416FAF847541955041122100C13D475541493DD6E040955041FC66F4E23F475541641134B84095504117E528784047554136E176B93F955041D5F58D1F44475541194697343F955041A758760746475541471F1E3540955041EEA79DF346475541E15C2F6340955041FF6DD61A4747554102F68F74409550412BF8A12947475541D1E6C6F340955041897CF195474755415BAFAA5541955041826749E947475541CDCCCC5C41955041F6285CEF474755416666661642955041CDCCCCAC48475541151B7D2B449550415E974FE64A4755415E7390C9449550411043A87E4B4755413013EBB246955041C6A0861A4D475541AE47E1DA46955041C3F5283C4D47554181B052B0479550410E83E81C4E4755416500550C489550413737195D4E4755412276E0134895504113FE6AA34E4755416DF37A6348955041EB34AECF4F4755411F85EBF1489550418FC2F5E8514755418FC2F5D8499550418FC2F52856475541F25865F249955041E01CF79A57475541000000404A9550413D0AD7035C47554185EB51584A955041295C8FF25D475541D9E9B7684A955041A3EAC5475F475541A782A93C4B955041D3928F845F4755417B14AE874B95504185EB51985F475541F8C87F664E955041F53EC0E06047554188B483D550955041AF6532F7614755410F28E93B53955041E64DA60963475541A2DB4CA457955041E06AB401654755412160533E5A955041DAE4E72A664755416666664660955041F6285C9F684755417E325B6C6095504160608BB668475541920F98A7619550410119197769475541E0EEEC4C62955041B897F401694755415C8FC26562955041D7A370ED68475541546ECDD8629550416D861206694755414E97C88663955041990B532B69475541B18E4C9064955041E9E32C64694755416831B6CB659550414BC6B5A769475541A6491BA46795504182F46C0C6A47554167580FDB6B955041247B2D21644755419F73BC0B6C955041E7E2C5DC63475541F6285C0F6C9550417B14AED7634755413982A5C66C95504180B77808644755413D0AD7236D95504114AE4721644755413BD2F84C6D95504197D2835364475541E17A140E6E955041F6285C3F654755416CFBE8146E95504158DA5B4B65475541300299A96E955041AA16915066475541241BEA706F9550411FF59BA066475541295C8F826F955041666666A666475541BCE43B8870955041CA17600B6747554197256E8672955041FDF9073C67475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208394 - 2966293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB519891435541AE47E1FAE09250418FC2F5388B4355419A999949E19250413D0AD7F385435541295C8F12E2925041A4703D6A834355413D0AD7B3DE9250413D0AD743844355411F85EBF1DC9250410AD7A3A08443554152B81EB5DB925041AE47E1BA8443554185EB51B8DA92504114AE47B18443554100000090D892504148E17A5484435541A4703DEAD2925041F6285CCF82435541713D0AC7CF9250410AD7A3608143554148E17A44CA9250413D0AD7037F43554152B81E85C6925041D7A3706D84435541295C8F12BF925041CDCCCC2C8E435541333333F3C7925041C3F5280C95435541713D0A87D09250410AD7A3C09B4355411F85EB31D59250415C8FC2A5A1435541CDCCCC6CDA9250413D0AD7A39B435541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000713D0A87D09250410AD7A3C09B4355411F85EB31D59250415C8FC2A5A1435541CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB5198914355410BD481C1E19250414D90DEC48F43554138867E20E1925041FCEA5E158C435541A7510FEBE09250411435EEB78A4355414578E81BE192504110EEEA028943554181F2C53BE1925041515BCEE086435541785002A1E19250411C0BBA2C854355419251470EE292504154601478834355418AA3ADDCDD92504103269564844355414D5C8485DA9250416BA58EBF8443554100000090D892504148E17A5484435541A4703DEAD2925041F6285CCF82435541713D0AC7CF9250410AD7A3608143554148E17A44CA9250413D0AD7037F43554152B81E85C6925041D7A3706D84435541295C8F12BF925041CDCCCC2C8E435541333333F3C7925041C3F5280C95435541713D0A87D09250410AD7A3C09B435541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208394 - 3502911
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB519891435541AE47E1FAE09250418FC2F5388B4355419A999949E19250413D0AD7F385435541295C8F12E2925041A4703D6A834355413D0AD7B3DE9250413D0AD743844355411F85EBF1DC9250410AD7A3A08443554152B81EB5DB925041AE47E1BA8443554185EB51B8DA92504114AE47B18443554100000090D892504148E17A5484435541A4703DEAD2925041F6285CCF82435541713D0AC7CF9250410AD7A3608143554148E17A44CA9250413D0AD7037F43554152B81E85C6925041D7A3706D84435541295C8F12BF925041CDCCCC2C8E435541333333F3C7925041C3F5280C95435541713D0A87D09250410AD7A3C09B4355411F85EB31D59250415C8FC2A5A1435541CDCCCC6CDA9250413D0AD7A39B435541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000713D0A87D09250410AD7A3C09B4355411F85EB31D59250415C8FC2A5A1435541CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB5198914355410BD481C1E19250414D90DEC48F43554138867E20E1925041FCEA5E158C435541A7510FEBE09250411435EEB78A4355414578E81BE192504110EEEA028943554181F2C53BE1925041515BCEE086435541785002A1E19250411C0BBA2C854355419251470EE292504154601478834355418AA3ADDCDD92504103269564844355414D5C8485DA9250416BA58EBF8443554100000090D892504148E17A5484435541A4703DEAD2925041F6285CCF82435541713D0AC7CF9250410AD7A3608143554148E17A44CA9250413D0AD7037F43554152B81E85C6925041D7A3706D84435541295C8F12BF925041CDCCCC2C8E435541333333F3C7925041C3F5280C95435541713D0A87D09250410AD7A3C09B435541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208914 - 3690270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004400000085EB51887EA350419A999989523855418FC2F5887BA35041CDCCCC4C52385541333333937AA35041B81E853B5238554185EB51E877A3504166666606523855416666660675A35041CDCCCCCC51385541B81E853B72A35041AE47E1EA5138554148E17AF46FA350418FC2F50852385541AE47E10A6FA3504133333323473855410AD7A3606DA35041713D0A77473855417B14AEC769A35041B81E852B483855413D0AD7E367A350419A99998948385541A4703D1A67A3504114AE47B1483855411F85EB4166A35041F6285CEF483855410AD7A33064A35041713D0A87493855419A9999C961A350417B14AE374A385541333333E35EA35041D7A3700D4B385541C3F5280C5CA35041E17A14DE4B385541E17A143E5CA35041295C8F824C385541CDCCCC5C5FA35041295C8FD256385541EC51B8CE5BA3504148E17A64573855415C8FC23559A35041333333834D3855411F85EB0159A35041D7A370BD4C385541CDCCCC9C55A35041713D0AB74D3855419A99995951A35041E17A14EE4E38554114AE47914FA3504148E17AE44F38554185EB51D849A3504148E17A04533855415C8FC2A549A35041B81E852B53385541713D0A073AA3504148E17A345F3855418FC2F5D836A35041EC51B8BE61385541295C8FC22EA350419A999949683855418FC2F5982DA35041CDCCCC7C6A3855411F85EB7136A350413D0AD7B36538554114AE475137A35041AE47E13A65385541EC51B8BE37A35041F6285CFF643855410AD7A38038A3504166666696643855411F85EBC139A3504185EB51E86338554114AE47C13BA35041295C8FD26238554114AE47513DA35041A4703DFA613855418FC2F5983EA3504185EB5148613855410AD7A3203FA35041EC51B8FE603855415C8FC2A546A350410AD7A3E05D385541E17A14DE46A350413D0AD7735E3855419A99991947A35041F6285C0F5F3855419A99997947A35041A4703D0A60385541F6285C2F4BA35041C3F528DC5E38554152B81E5550A35041D7A3708D5D385541A4703D0A54A35041C3F528CC5C385541B81E854B55A35041000000A05C3855413D0AD71359A350415C8FC2255C38554185EB51185DA3504185EB51C85B385541000000C05FA35041713D0AA75B3855415C8FC28561A35041713D0AA75B38554152B81E5564A35041713D0AB75B3855413D0AD76366A3504114AE47F15B3855410000006068A35041C3F5282C5C3855417B14AE9768A35041D7A3702D593855410AD7A3B068A350418FC2F54857385541295C8FB268A350413D0AD713563855419A9999096FA350417B14AEF755385541F6285CEF7CA350418FC2F5D858385541A4703D5A81A35041295C8F125A385541B81E85DB81A3504114AE4711583855415C8FC22582A35041EC51B8FE56385541D7A3704D82A350411F85EB7156385541D7A370BD82A35041CDCCCCAC54385541A4703D3A83A35041713D0AE7523855410AD7A35081A3504114AE47C15238554185EB51887EA350419A99998952385541
+</a>
+
+<b>
+0106000000010000000103000000010000002300000085EB518853A350413D0AD79384385541C3F5283C59A35041F6285CEF83385541333333735BA350413D0AD7538538554148E17A145FA35041C3F5289C873855410AD7A37063A35041A4703D5A8A385541E17A14CE64A3504114AE47B1873855419A99995966A35041713D0A4783385541295C8F6269A35041E17A140E7B3855415C8FC2A56AA35041B81E852B783855415C8FC2156DA35041EC51B86E74385541CC20F1B27CA35041E78070CC58385541716915EC6FA3504108539D2656385541AF6F4F836EA35041EC8B02FA553855418089009A68A35041A782831456385541BB694B9D68A3504146A375C058385541BC5A716168A350412EE84A185C385541A67A4E9860A35041713D0AA75B385541565E067759A350419EB1BF1C5C385541BFC4DE8E52A3504152546A195D385541EDB05D974DA3504100B7B03F5E385541CD35B88747A3504196C7BF0560385541D6736CAC46A350415380E8DD5D385541CEC44BFB43A350416A2690FB5E3855411E6EADCA3EA3504162C2592D61385541AE5F9A8837A3504129C3CA1C6538554137E4A5852EA3504131CE1FFD69385541BF05BDBC2DA35041499000EA6A3855413201AA892DA350411F41DB7D6B3855417F2E0B8C2DA35041CC9B2B0E6C385541E82FFE0D2EA350414595D9D66D385541D7A3703D3CA35041F6285C1F79385541C3F528AC40A350415C8FC2A57C385541CDCCCC1C44A35041EC51B84E7F385541E17A14DE4BA3504114AE47718538554185EB518853A350413D0AD79384385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>84734 - 21538
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000140000009A9999E9BCD05041713D0A67D452544148E17AF4BCD05041666666F6D1525441B81E85DBC0D05041000000A0D15254415C8FC2C5C5D050413D0AD753D2525441CDCCCCFCCAD050417B14AE87D3525441D7A370CDCCD050410AD7A340D45254417B14AE07CED05041E17A14BED35254410AD7A350D1D0504100000090CF525441E17A14DED6D05041F6285C7FC85254413D0AD713DCD05041D7A370DDC152544133333383D0D05041295C8FF2BF5254418FC2F5F8C8D05041713D0A17BE525441F6285C7FBDD05041F6285C3FBB525441333333A3AED0504185EB5168B85254410AD7A3C09DD05041F6285CAFB552544152B81E359CD050413D0AD7F3B6525441A4703D6A96D050413D0AD753D152544148E17A5496D05041F6285CEFD152544185EB5188B1D05041CDCCCCACD35254419A9999E9BCD05041713D0A67D4525441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000074B626ADCDD05041E54BE12DD4525441B8884B3AC7D0504143AEBDA9D25254416987037BC3D0504164FAF9FFD1525441553C8ED8C0D0504170A141A0D1525441E2167364BED050415AAE93D6D1525441E86466F3BCD05041A6F06734D252544156DBAEEABCD050415F70DC28D452544167840D27C8D05041605DFA1ED552544100000080CBD050415C8FC255D55254413260613DCCD05041BED28178D55254418B73F29ACCD05041EB5E8380D552544174B626ADCDD05041E54BE12DD4525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>85787 - 3133583
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002100000085EB51788AB85041B81E85ABAD0655413333334390B850410AD7A310AC065541F6285C7F94B850413D0AD7B3AA065541CDCCCC5C98B85041333333B3A8065541000000E0A1B8504185EB5188A3065541A4703D4AA7B85041E17A14FEA00655413D0AD793A8B850418FC2F5A89F065541C3F528DCABB850413D0AD7D3960655411F85EB21ABB8504133333333950655418FC2F5389BB85041CDCCCCEC8E06554152B81E9597B85041E17A148E900655417B14AEE791B85041EC51B8BE9306554185EB51488AB850416666666690065541713D0A3784B85041A4703D4A8D065541CDCCCC3C7FB850411F85EBF1890655419A9999097BB85041A4703DFA85065541B81E854B74B85041333333937E065541713D0AD75CB85041CDCCCCFC77065541333333B35BB85041AE47E1AA78065541D7A370CD57B85041EC51B8CE91065541EC51B81E56B850417B14AEA79C06554114AE47E154B8504114AE4701A5065541713D0A5754B85041B81E857BA8065541B81E85CB53B85041CDCCCCDCAB0655410000002053B85041713D0A37AE06554114AE47F151B85041EC51B86EB006554185EB51E84CB850418FC2F548B8065541CDCCCC9C4DB850419A999969B90655410000000054B85041000000B0B80655419A9999D962B850418FC2F568B5065541C3F5289C70B850411F85EB11B2065541D7A370DD7CB85041EC51B88EAF06554185EB51788AB85041B81E85ABAD065541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000366DE0885B850415B91CAB58D06554185EB51488AB8504166666666900655417B14AEE791B85041EC51B8BE9306554152B81E9597B85041E17A148E900655418FC2F5389BB85041CDCCCCEC8E0655410AD7A3408BB85041B81E85BB8806554196ABC3BC86B850411A365C158706554196B5613A86B850411599BDE586065541A2A88AE783B85041CEAFD0148D065541FD0CEA3C84B85041623E404D8D0655410366DE0885B850415B91CAB58D065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>85787 - 3515170
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002100000085EB51788AB85041B81E85ABAD0655413333334390B850410AD7A310AC065541F6285C7F94B850413D0AD7B3AA065541CDCCCC5C98B85041333333B3A8065541000000E0A1B8504185EB5188A3065541A4703D4AA7B85041E17A14FEA00655413D0AD793A8B850418FC2F5A89F065541C3F528DCABB850413D0AD7D3960655411F85EB21ABB8504133333333950655418FC2F5389BB85041CDCCCCEC8E06554152B81E9597B85041E17A148E900655417B14AEE791B85041EC51B8BE9306554185EB51488AB850416666666690065541713D0A3784B85041A4703D4A8D065541CDCCCC3C7FB850411F85EBF1890655419A9999097BB85041A4703DFA85065541B81E854B74B85041333333937E065541713D0AD75CB85041CDCCCCFC77065541333333B35BB85041AE47E1AA78065541D7A370CD57B85041EC51B8CE91065541EC51B81E56B850417B14AEA79C06554114AE47E154B8504114AE4701A5065541713D0A5754B85041B81E857BA8065541B81E85CB53B85041CDCCCCDCAB0655410000002053B85041713D0A37AE06554114AE47F151B85041EC51B86EB006554185EB51E84CB850418FC2F548B8065541CDCCCC9C4DB850419A999969B90655410000000054B85041000000B0B80655419A9999D962B850418FC2F568B5065541C3F5289C70B850411F85EB11B2065541D7A370DD7CB85041EC51B88EAF06554185EB51788AB85041B81E85ABAD065541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000366DE0885B850415B91CAB58D06554185EB51488AB8504166666666900655417B14AEE791B85041EC51B8BE9306554152B81E9597B85041E17A148E900655418FC2F5389BB85041CDCCCCEC8E0655410AD7A3408BB85041B81E85BB8806554196ABC3BC86B850411A365C158706554196B5613A86B850411599BDE586065541A2A88AE783B85041CEAFD0148D065541FD0CEA3C84B85041623E404D8D0655410366DE0885B850415B91CAB58D065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86232 - 425867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000007B14AE17ADB65041B81E85AB5B075541C3F5281CB0B6504185EB51B858075541EC51B86EB3B650410AD7A34058075541CDCCCC4CB8B65041C3F5280C59075541E17A14BEBDB650415C8FC2055B07554185EB5178C5B6504148E17A145D0755411F85EBF1CAB65041C3F5285C5D075541E17A144ECDB65041A4703DDA5C075541F6285CDFCBB6504152B81EA5530755417B14AE27BCB65041AE47E16A5207554166666686B3B65041333333D35107554166666666AEB650411F85EB315207554148E17A04A9B6504114AE475153075541E17A14DEA5B65041C3F5287C540755413D0AD753A4B65041666666B6550755417B14AE17ADB65041B81E85AB5B075541
+</a>
+
+<b>
+010600000001000000010300000001000000050000000C054B98C6B6504121D69A3B530755410BD799BEC3B65041E1199E025307554185AE003EC1B6504160038F515B0755417B6FCFC4C3B650418E7E89205C0755410C054B98C6B6504121D69A3B53075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86751 - 1672564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17AA42FB250415C8FC2D5FB0C55413D0AD74333B250418FC2F5B8FF0C55411F85EBC13FB2504114AE47E1FC0C5541E17A149E50B2504133333383F80C5541295C8F524FB25041AE47E1EAF40C55415C8FC2055EB25041AE47E11AF80C5541D7A370AD69B250419A999949FB0C5541000000C079B2504133333313F60C55413D0AD72386B2504152B81EB5F10C55411F85EBE195B250418FC2F508ED0C5541EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C5541EC51B8AEBCB250415C8FC235E90C55413D0AD7A3B6B2504114AE47F1CD0C5541000000509CB250417B14AE67D10C55415C8FC2B58DB250413D0AD7D3D40C5541AE47E1BA7AB250418FC2F5A8DB0C5541CDCCCC0C62B25041A4703D4AE40C5541000000C056B25041333333B3E70C55417B14AE2756B2504152B81EE5E70C5541D7A3704D4FB250410AD7A3F0E90C55410AD7A3803BB25041F6285C2FEF0C55411F85EB2125B25041A4703D2AF20C5541EC51B84E26B25041F6285CCFFC0C554148E17AA42FB250415C8FC2D5FB0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C55412539B1A2B4B2504181230BF0E70C554151E212AABCB25041B716CB20E90C55413D0AD7A3B6B2504114AE47F1CD0C5541000000509CB250417B14AE67D10C55415C8FC2B58DB250413D0AD7D3D40C55414B2A5E718BB2504136A2C5A4D50C554101FD2BBA83B2504179B4CF6BD80C554179C8EC8779B250414D764B14DC0C55412AA2F29174B250416E0760D0DD0C5541D77457766AB25041DAD03259E10C5541729C6E6F61B250418399BA79E40C55413DBA780257B250414B10249FE70C55417C6A8E0354B25041677DB288E80C5541D7A3704D4FB250410AD7A3F0E90C55410AD7A3803BB25041F6285C2FEF0C55410537E1D438B25041848A9588EF0C55411F85EB2125B25041A4703D2AF20C5541EC51B84E26B25041F6285CCFFC0C554148E17AA42FB250415C8FC2D5FB0C5541F571074533B250412623A497FF0C55414BCA57AE3FB25041450DEFBFFC0C5541E17A149E50B2504133333383F80C5541295C8F524FB25041AE47E1EAF40C55412996C5DB4FB25041AFEFA108F50C554187FB6D334EB25041FDA27D16F00C55419599CF9D4CB2504174C5E7E7EA0C5541DDA46F994EB2504177BAE66EEA0C5541F0A7C67B4EB250411F85EB01EB0C5541B29DEF3F51B250412506818DF20C554131B307F952B250413DF2A468F40C5541BD536C2154B2504150F0D3D5F40C5541690C67CA57B25041EB22ECEBF50C5541B529082464B25041090C260CF90C554166D0C4196CB25041DE8B6B80FA0C5541000000C079B2504133333313F60C55413D0AD72386B2504152B81EB5F10C5541CEE5340188B2504177EE9A0EF10C55418C9837298AB25041866F2556F00C55416DBA76068EB250415CF1B622EF0C5541C671522A95B250413447EAD9EC0C5541ED7DA65696B25041CD785F74EC0C55412027EB119BB250413999D6DAEA0C5541EC51B8FE9FB25041713D0A77E90C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86751 - 3591101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17AA42FB250415C8FC2D5FB0C55413D0AD74333B250418FC2F5B8FF0C55411F85EBC13FB2504114AE47E1FC0C5541E17A149E50B2504133333383F80C5541295C8F524FB25041AE47E1EAF40C55415C8FC2055EB25041AE47E11AF80C5541D7A370AD69B250419A999949FB0C5541000000C079B2504133333313F60C55413D0AD72386B2504152B81EB5F10C55411F85EBE195B250418FC2F508ED0C5541EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C5541EC51B8AEBCB250415C8FC235E90C55413D0AD7A3B6B2504114AE47F1CD0C5541000000509CB250417B14AE67D10C55415C8FC2B58DB250413D0AD7D3D40C5541AE47E1BA7AB250418FC2F5A8DB0C5541CDCCCC0C62B25041A4703D4AE40C5541000000C056B25041333333B3E70C55417B14AE2756B2504152B81EE5E70C5541D7A3704D4FB250410AD7A3F0E90C55410AD7A3803BB25041F6285C2FEF0C55411F85EB2125B25041A4703D2AF20C5541EC51B84E26B25041F6285CCFFC0C554148E17AA42FB250415C8FC2D5FB0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C55412539B1A2B4B2504181230BF0E70C554151E212AABCB25041B716CB20E90C55413D0AD7A3B6B2504114AE47F1CD0C5541000000509CB250417B14AE67D10C55415C8FC2B58DB250413D0AD7D3D40C55414B2A5E718BB2504136A2C5A4D50C554101FD2BBA83B2504179B4CF6BD80C554179C8EC8779B250414D764B14DC0C55412AA2F29174B250416E0760D0DD0C5541D77457766AB25041DAD03259E10C5541729C6E6F61B250418399BA79E40C55413DBA780257B250414B10249FE70C55417C6A8E0354B25041677DB288E80C5541D7A3704D4FB250410AD7A3F0E90C55410AD7A3803BB25041F6285C2FEF0C55410537E1D438B25041848A9588EF0C55411F85EB2125B25041A4703D2AF20C5541EC51B84E26B25041F6285CCFFC0C554148E17AA42FB250415C8FC2D5FB0C5541F571074533B250412623A497FF0C55414BCA57AE3FB25041450DEFBFFC0C5541E17A149E50B2504133333383F80C5541295C8F524FB25041AE47E1EAF40C55412996C5DB4FB25041AFEFA108F50C554187FB6D334EB25041FDA27D16F00C55419599CF9D4CB2504174C5E7E7EA0C5541DDA46F994EB2504177BAE66EEA0C5541F0A7C67B4EB250411F85EB01EB0C5541B29DEF3F51B250412506818DF20C554131B307F952B250413DF2A468F40C5541BD536C2154B2504150F0D3D5F40C5541690C67CA57B25041EB22ECEBF50C5541B529082464B25041090C260CF90C554166D0C4196CB25041DE8B6B80FA0C5541000000C079B2504133333313F60C55413D0AD72386B2504152B81EB5F10C5541CEE5340188B2504177EE9A0EF10C55418C9837298AB25041866F2556F00C55416DBA76068EB250415CF1B622EF0C5541C671522A95B250413447EAD9EC0C5541ED7DA65696B25041CD785F74EC0C55412027EB119BB250413999D6DAEA0C5541EC51B8FE9FB25041713D0A77E90C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>88798 - 290262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000200000013000000713D0A670FB55041000000709913554152B81E350DB55041713D0AA7A013554114AE47D108B55041295C8F229F13554114AE47C101B55041C3F528CCB1135541C3F5280C03B55041C3F528ECB2135541C3F5283C17B5504152B81E45BE135541AE47E15A19B5504100000040BA135541000000901FB550415C8FC225BD135541B81E850B26B550410AD7A360AA1355410000003031B55041AE47E11A8A13554148E17A4429B550418FC2F5A888135541F6285CBF1EB55041713D0A078F135541000000600EB550413D0AD78396135541C3F5287C0CB550413D0AD793971355419A9999C90AB5504185EB518898135541D7A3707D0AB55041E17A141E9A1355410AD7A33017B55041E17A14BE931355418FC2F55817B55041A4703DBA95135541713D0A670FB5504100000070991355410E00000048E17A0423B550410AD7A3909F1355417B14AEA720B5504185EB51A89F13554152B81E851FB5504148E17AC49D1355411F85EBE121B55041D7A3703D971355418FC2F53821B550418FC2F52895135541295C8F621EB5504166666606941355418FC2F5E81DB550413D0AD7139313554148E17A541FB550419A99990992135541AE47E1DA25B55041B81E854B8F135541EC51B85E27B550418FC2F5288E135541C3F528BC29B5504185EB51F88D135541D7A3704D2AB55041EC51B89E9013554185EB51B824B55041AE47E11A9D13554148E17A0423B550410AD7A3909F135541
+</a>
+
+<b>
+01060000000100000001030000000300000017000000F6285CBF1EB55041713D0A078F135541AD44AC661CB55041F04BBF1990135541861C3CE41BB55041F6F69F5C901355410BB4FFBB1BB55041DF4E8776901355418FD1683F19B550414227ED8A9113554149882CFD18B55041A8A137A991135541D949F37A18B550413D7AC5E4911355419DFB93F717B55041E6CDD92092135541F9D55ED717B550413B7D942F92135541121BB6171BB55041661BF852961355418F09A97811B550412AD4E6329B1355413668BD9B0EB550412624E911A21355410977DDDD09B55041E8B80132A0135541C297B48D09B5504193084512A0135541E32D804209B550413F952CECA01355419CF1A85D0EB55041B9A46E21A3135541B2B243330FB5504159F7D1E7A0135541C55B238925B5504125BE28DAAB135541B81E850B26B550410AD7A360AA135541EA09102B31B550412B252E298A135541C91AE8B62FB55041CA5A14D68913554148E17A4429B550418FC2F5A888135541F6285CBF1EB55041713D0A078F13554104000000C3F528BC29B5504185EB51F88D1355416125F69D29B55041A999BFE69013554108E308AC28B55041B562AA638F135541C3F528BC29B5504185EB51F88D135541070000009D8E57EC1CB550419BFB71FCA21355412A73102921B55041CD0A7F1397135541B1A1729E1DB550419CDE577795135541D2A8E3111EB5504133083E9E911355413B3C82A229B550416AF0239C92135541D48D667323B55041A5E0250CA51355419D8E57EC1CB550419BFB71FCA2135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>88936 - 3025821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000500000085EB51B82CB55041666666B670115541295C8FE246B55041333333F3891155418FC2F5A84AB5504152B81EA585115541C3F5286C30B55041666666566C11554185EB51B82CB55041666666B670115541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000040BAF3D746B55041BB4147FF89115541389841D646B550418A6441F48911554110C46FF72EB55041973921E1721155418758C1BF2CB550415A5A92BD7011554148B79C142AB5504117BEB2F77311554189D121BD37B550412F41790081115541FE78EAF733B5504163DAC6DF841155412FCBB19A40B550410955992B91115541CDCCCC9C44B550419A9999898C11554140BAF3D746B55041BB4147FF89115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>88936 - 3404808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000500000085EB51B82CB55041666666B670115541295C8FE246B55041333333F3891155418FC2F5A84AB5504152B81EA585115541C3F5286C30B55041666666566C11554185EB51B82CB55041666666B670115541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000040BAF3D746B55041BB4147FF89115541389841D646B550418A6441F48911554110C46FF72EB55041973921E1721155418758C1BF2CB550415A5A92BD7011554148B79C142AB5504117BEB2F77311554189D121BD37B550412F41790081115541FE78EAF733B5504163DAC6DF841155412FCBB19A40B550410955992B91115541CDCCCC9C44B550419A9999898C11554140BAF3D746B55041BB4147FF89115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291911 - 55774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000025000000295C8F6212055141A4703D5A301C5541295C8F42150551413D0AD7432F1C55419A9999E914055141E17A142E2E1C554114AE47710E0551411F85EBC12A1C5541AE47E15A09055141295C8F42271C554152B81E5508055141D7A3701D251C55418FC2F5280205514133333353211C5541B81E85FBFF04514152B81E45201C55411F85EB21FE045141713D0AA71F1C5541000000F0FC045141CDCCCC5C1F1C554166666626FB04514185EB51381F1C554114AE47E1F8045141EC51B83E1F1C5541D7A370DDF50451411F85EB711F1C55419A999939F4045141000000A01F1C55411F85EBD1F9045141AE47E19A271C5541A4703D6AFC045141E17A146E2C1C5541C3F5286CFD0451411F85EB012E1C5541666666E6FE045141333333D32F1C5541B81E851B020551413D0AD7F3321C5541713D0AF702055141AE47E1DA331C5541A4703DEA0305514100000060361C55413D0AD76305055141CDCCCCCC391C5541EC51B82E0705514114AE47E13D1C5541295C8F020A055141E17A14EE3D1C5541AE47E18A100551418FC2F5A83C1C5541C3F5282C150551413D0AD7C33B1C5541D7A370CD1805514114AE47713B1C554185EB51C81F0551410AD7A3B03B1C55419A9999F923055141EC51B8EE3B1C55417B14AE272505514100000010381C55411F85EB711F0551419A999939331C5541E17A145E1F05514166666676331C5541666666A61E055141AE47E1CA341C5541CDCCCC5C190551417B14AEE7311C5541F6285C0F170551413D0AD703341C5541EC51B82E1405514185EB5118351C5541295C8F6212055141A4703D5A301C5541
+</a>
+
+<b>
+01060000000100000001030000000100000026000000FBBDD546F5045141B72773821F1C5541151B4328F7045141E6CECB97221C5541CD7FAFC0FA0451412E67FC6A251C5541C99C00A8FE045141EF98EB7F281C554194ECCE12030551418D96CFA22D1C554133335C55050551412F9FC913311C55411FC1BD91080551413269E9FB361C554153FD7B3D0B055141F1512FF13C1C5541E4ECE67D18055141B448EEC83A1C55418576A1A516055141ACDE852B341C5541EC51B82E1405514185EB5118351C554169DA642D1405514166F96615351C55410DA82E61120551415DF1B35B301C554119C5DE62120551413DF40E5B301C5541295C8F6212055141A4703D5A301C55413E6BEB6913055141E4119FF62F1C554155405F3415055141C06C93472F1C5541E2F7C60E150551415E9428A22E1C55419A9999E914055141E17A142E2E1C554101CFEC5512055141F10C20D12C1C5541A5E608EA0F055141A3CADA942B1C5541112F6B520E055141CEC052B52A1C5541DA6ED3490905514175993237271C5541BD950D4508055141511E9313251C55418FC2F5280205514133333353211C55418A5AE1A5000551414CDFA897201C5541A935783200055141E4A66462201C554105418A00FE045141527EF09E1F1C5541B1298AFCFD04514120F8F79D1F1C554135163EFBFD045141B961A79D1F1C5541BE5837CDFD045141D5F87B921F1C55412440D8CAFD045141ABA4E8911F1C5541E3FC4049FD0451411FBE75721F1C55416B6ACADBFC045141F8406A5B1F1C554146BDFBDAFA04514194031E411F1C55419E40AC18F9045141A3EB6E441F1C55417130CF80F50451414037167C1F1C5541FBBDD546F5045141B72773821F1C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>91645 - 186012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000006000000CDCCCCDCD7BA5041EC51B85E99755441F6285CCFE0BA504114AE4791A7755441C3F5288CE4BA50410AD7A310A475544100000030E7BA50419A999929A27554411F85EBB1DDBA5041000000D093755441CDCCCCDCD7BA5041EC51B85E99755441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000683D0AE7EEBA50418BEB514884755441A4703D6AECBA50417B14AE1786755441EC51B88EE6BA5041CDCCCC5C8B7554413085EBB1DDBA5041EFFFFFCF93755441A7EFE527E3BA50414DED59119C755441F8FFFF2FE7BA50418E999929A27554418FC2F548EDBA504148E17AC49D755441A78715B1F2BA50417C210D99967554413FDAC98DF1BA5041338999F29575544176B9F368F0BA5041E5AC789C957554411F7F2D7AF0BA50410DDD4FAB9475544100E7C1F2F0BA504144BC798693755441D4079817F2BA5041683DFEC892755441559DFA19F3BA5041F1A79BC69175544175F8962DF4BA50410AEF591A91755441168EF92FF5BA5041CBFB517F90755441100A08E4F5BA50416052A1758F755441683D0AE7EEBA50418BEB514884755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>209381 - 1195660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000006666663639385141D7A3709D908754410AD7A34034385141D7A3700D968754417B14AE0735385141000000B096875441CDCCCC7C4C38514185EB5188A1875441E17A142E633851415C8FC205AC875441F6285C4F63385141AE47E1AAAD875441AE47E1EA6438514148E17A24AF8754415C8FC2A5663851411F85EB61B2875441D7A3704D68385141CDCCCC6CB487544114AE47316B3851418FC2F5B8B6875441A4703D1A72385141C3F5281CBB875441EC51B89E7A3851410AD7A340C0875441EC51B86E7D385141F6285C0FC1875441F6285CFF833851419A9999A9C187544148E17A4487385141EC51B83EC187544148E17A64893851418FC2F5F8C08754419A9999298F385141EC51B84EBF8754413D0AD75393385141AE47E18ABD8754416666665696385141C3F528ACBB8754419A99999987385141A4703DDAB4875441F6285C8F63385141E17A142EA48754413D0AD783623851415C8FC2B5A387544185EB5148613851413D0AD723A3875441333333A34D385141EC51B80E9A875441A4703D2A3A385141E17A140E918754416666663639385141D7A3709D90875441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F90E86CD923851413196CCC3BD875441C1634A19903851418CA7C22BBF87544154936CA88C385141DF320534C0875441AFAB830B8938514199324226C18754416E389558853851410A61587EC1875441DC370F3D87385141181B74ECC1875441BC659F79893851416CA6B6F4C287544144AAB4C68D3851411E775773C587544175D45D509C385141562ED557CF8754415DFE43CCAB3851410B90F4F1BF8754419E71327FAF3851419105FB12BC8754410C71AC63B1385141887A7B18BA875441DDB584BEB43851415F7BC441B7875441AE47E1AAB538514166666616B68754410AD7A3F0B6385141A4703DFAB587544172B4B579B938514162AA60B5B58754418FC2F5F8BE38514133333343B587544152B81EE5C5385141000000D0B3875441E053A216C5385141167D5694B1875441100FCABBC138514163DB5189AD87544130E1397FBF385141CEDC20CEA887544142F98DD4BC385141C7AFD9BAA387544170851906BB385141E781497EA1875441829D6D5BB83851416BC8B32B9F8754416958D2F2B5385141272629059D87544143591B1CB338514190F85BD699875441AC2B4EEDAF38514108B44689958754414F44285EAB3851412DE4EE33908754419FD1BFC6A538514137A05F028A87544165EBA56E9D3851412A46D1DB7F8754417703FAC39A385141F68CFE967C8754416666661698385141CDCCCCEC7C875441295C8F328D385141EC51B83E7D875441B81E855B943851410000002087875441AE47E15AA4385141F6285C1F9A87544185EB51F8AB3851417B14AE47A6875441BE43A242AD3851413C0B3726A9875441F35C02CFA6385141DC94E7DBAF8754414B467DBEA4385141AF085CAAB1875441E1A43BC19F3851412764B915B787544104A647F89B38514193349786BA875441F81AC8FD9938514165A80B55BC8754419A0406FB963851411DA84847BD87544148A85F6694385141AC7932EFBC875441215A7BD393385141CBB6943BBD8754413D0AD75393385141AE47E18ABD875441F90E86CD923851413196CCC3BD875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>209381 - 3339695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000006666663639385141D7A3709D908754410AD7A34034385141D7A3700D968754417B14AE0735385141000000B096875441CDCCCC7C4C38514185EB5188A1875441E17A142E633851415C8FC205AC875441F6285C4F63385141AE47E1AAAD875441AE47E1EA6438514148E17A24AF8754415C8FC2A5663851411F85EB61B2875441D7A3704D68385141CDCCCC6CB487544114AE47316B3851418FC2F5B8B6875441A4703D1A72385141C3F5281CBB875441EC51B89E7A3851410AD7A340C0875441EC51B86E7D385141F6285C0FC1875441F6285CFF833851419A9999A9C187544148E17A4487385141EC51B83EC187544148E17A64893851418FC2F5F8C08754419A9999298F385141EC51B84EBF8754413D0AD75393385141AE47E18ABD8754416666665696385141C3F528ACBB8754419A99999987385141A4703DDAB4875441F6285C8F63385141E17A142EA48754413D0AD783623851415C8FC2B5A387544185EB5148613851413D0AD723A3875441333333A34D385141EC51B80E9A875441A4703D2A3A385141E17A140E918754416666663639385141D7A3709D90875441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F90E86CD923851413196CCC3BD875441C1634A19903851418CA7C22BBF87544154936CA88C385141DF320534C0875441AFAB830B8938514199324226C18754416E389558853851410A61587EC1875441DC370F3D87385141181B74ECC1875441BC659F79893851416CA6B6F4C287544144AAB4C68D3851411E775773C587544175D45D509C385141562ED557CF8754415DFE43CCAB3851410B90F4F1BF8754419E71327FAF3851419105FB12BC8754410C71AC63B1385141887A7B18BA875441DDB584BEB43851415F7BC441B7875441AE47E1AAB538514166666616B68754410AD7A3F0B6385141A4703DFAB587544172B4B579B938514162AA60B5B58754418FC2F5F8BE38514133333343B587544152B81EE5C5385141000000D0B3875441E053A216C5385141167D5694B1875441100FCABBC138514163DB5189AD87544130E1397FBF385141CEDC20CEA887544142F98DD4BC385141C7AFD9BAA387544170851906BB385141E781497EA1875441829D6D5BB83851416BC8B32B9F8754416958D2F2B5385141272629059D87544143591B1CB338514190F85BD699875441AC2B4EEDAF38514108B44689958754414F44285EAB3851412DE4EE33908754419FD1BFC6A538514137A05F028A87544165EBA56E9D3851412A46D1DB7F8754417703FAC39A385141F68CFE967C8754416666661698385141CDCCCCEC7C875441295C8F328D385141EC51B83E7D875441B81E855B943851410000002087875441AE47E15AA4385141F6285C1F9A87544185EB51F8AB3851417B14AE47A6875441BE43A242AD3851413C0B3726A9875441F35C02CFA6385141DC94E7DBAF8754414B467DBEA4385141AF085CAAB1875441E1A43BC19F3851412764B915B787544104A647F89B38514193349786BA875441F81AC8FD9938514165A80B55BC8754419A0406FB963851411DA84847BD87544148A85F6694385141AC7932EFBC875441215A7BD393385141CBB6943BBD8754413D0AD75393385141AE47E18ABD875441F90E86CD923851413196CCC3BD875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>834308 - 90043
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000250000001F85EBD112CC5041CDCCCC5CCA225441CDCCCC9C13CC5041D7A3703DC7225441F6285C5F13CC504148E17AC4C1225441D7A3703D12CC5041EC51B89EB5225441B81E850B12CC50415C8FC285B322544114AE477111CC5041EC51B88EAE225441000000F010CC5041F6285C6FA8225441C3F528FC0ECC5041CDCCCC5CA622544185EB51B80ECC504185EB51D8A4225441F6285CFF0DCC5041F6285C1FA4225441D7A370BD0CCC5041AE47E15AA4225441B81E857B08CC504133333303A4225441AE47E19A08CC504148E17A84A22254410AD7A3E00CCC504185EB51D8A222544148E17A240ECC5041713D0AA7A2225441295C8F520DCC504152B81ED5A12254413D0AD7830BCC5041CDCCCCFCA0225441333333C309CC50410AD7A300A1225441E17A142E08CC504133333303A22254411F85EB3107CC504114AE4751A32254418FC2F5E803CC504148E17A14A6225441333333E302CC5041713D0A37A822544148E17A4401CC5041713D0A67AA2254419A9999B9FFCB5041E17A14EEAD22544185EB5198FDCB5041C3F5280CB422544133333363FCCB5041295C8F92B8225441A4703DBAFCCB50410AD7A3C0BD225441EC51B86EFDCB5041EC51B82EC1225441666666D6FDCB5041E17A143EC2225441E17A145E04CC504133333323C62254413333335306CC50411F85EBD1C62254417B14AE3709CC504152B81E05C6225441D7A3705D0BCC504166666646C72254415C8FC2750DCC504185EB5118C7225441EC51B83E0ECC504152B81E25C72254411F85EB0112CC5041295C8FA2C92254411F85EBD112CC5041CDCCCC5CCA225441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000C495F8AD00CC5041FA590FF0C32254418140975C01CC5041EA7F3758C4225441ACDA7BB501CC5041BE8B548BC422544117CB5B1003CC5041EBF0426CC3225441920F344003CC5041151083B6C0225441BB2E748A00CC5041FADB35DFBF225441AF5E6604FECB50419C958459C2225441C495F8AD00CC5041FA590FF0C3225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211614 - 4132577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001900000014AE4791AE2951417B14AEA7664055419A999959B7295141E17A145E76405541713D0A37C0295141AE47E13A8640554114AE47F1C12951411F85EBC1864055413D0AD773C8295141A4703D7A8340554148E17AD4CA295141CDCCCC6C88405541AE47E16ACC295141F6285CDF8840554114AE47B1D329514166666626844055411F85EB71D8295141A4703D7A80405541295C8FE2D3295141295C8F025A40554166666616F2295141AE47E16A5C4055415C8FC215F3295141D7A3707D5C405541D7A3702DF32951411F85EB815A405541AE47E1BAF2295141000000C04D40554114AE47C1F2295141E17A147E3E40554133333303F2295141713D0AE73640554185EB5198EB295141333333A336405541C3F5280CEB29514185EB51B82E405541F6285CAFDD2951417B14AED735405541A4703D8AD02951415C8FC2653D405541713D0AC7D0295141666666F65940554152B81E55BE295141713D0AF75C40554185EB5148B6295141B81E85FB6040554100000040AE295141EC51B86E6540554114AE4791AE2951417B14AEA766405541
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000029A56D82F2295141734FBB725C4055412FBF2778F229514107FD0C805A4055417D189926F22951415FCEB7984D405541C5A59CFFF12951412963CA523E405541A5D22295F12951414BBE7EE23640554117D9CE57EB29514117D9CEC736405541759318A4EA295141819543D32E405541C1630D29DD2951410449C34636405541EDB4A63BCF2951419819C6503E405541D3DA4522CD295141F6D543B83F40554154E3A583CE295141BE9F1AC759405541AC39C9B4CB295141823CBBC95A40554181C54858BF295141F51F3C3C5F405541456A3168B62951416DDD6D7362405541C3DCDB7DAE2951411A43734C6540554100000040AE295141EC51B86E6540554114AE4791AE2951417B14AEA7664055419A999959B7295141E17A145E76405541713D0A37C0295141AE47E13A8640554114AE47F1C12951411F85EBC1864055413D0AD773C8295141A4703D7A8340554148E17AD4CA295141CDCCCC6C88405541AE47E16ACC295141F6285CDF8840554114AE47B1D32951416666662684405541000493F8D7295141919202D880405541DCF51A5DD52951412523BE3169405541295C8FE2D3295141295C8F025A405541180DDB78DA295141B6004F5C5A405541E923EDADE7295141EE577D965B40554133333383F2295141E92631985C40554129A56D82F2295141734FBB725C405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211614 - 4132585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001900000014AE4791AE2951417B14AEA7664055419A999959B7295141E17A145E76405541713D0A37C0295141AE47E13A8640554114AE47F1C12951411F85EBC1864055413D0AD773C8295141A4703D7A8340554148E17AD4CA295141CDCCCC6C88405541AE47E16ACC295141F6285CDF8840554114AE47B1D329514166666626844055411F85EB71D8295141A4703D7A80405541295C8FE2D3295141295C8F025A40554166666616F2295141AE47E16A5C4055415C8FC215F3295141D7A3707D5C405541D7A3702DF32951411F85EB815A405541AE47E1BAF2295141000000C04D40554114AE47C1F2295141E17A147E3E40554133333303F2295141713D0AE73640554185EB5198EB295141333333A336405541C3F5280CEB29514185EB51B82E405541F6285CAFDD2951417B14AED735405541A4703D8AD02951415C8FC2653D405541713D0AC7D0295141666666F65940554152B81E55BE295141713D0AF75C40554185EB5148B6295141B81E85FB6040554100000040AE295141EC51B86E6540554114AE4791AE2951417B14AEA766405541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D34D6200D82951418716D91E81405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554129A56D82F2295141734FBB725C40554133333383F2295141E92631985C405541E923EDADE7295141EE577D965B4055413B9EE4ECDC2951418F05AB965A40554109EA47ECD829514124B433475A405541295C8FE2D3295141295C8F025A405541DCF51A5DD52951412523BE3169405541D34D6200D82951418716D91E81405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211723 - 31591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000001F85EBD12E205141B81E85DB3F335541E17A144E39205141A4703DEA32335541295C8F42412051413D0AD753293355410000003042205141EC51B8DE27335541E17A14FE37205141E17A148E24335541A4703D1A2D2051417B14AE371F335541CDCCCCAC1F205141F6285C4F17335541D7A3707D162051411F85EB9111335541C3F5280C122051415C8FC2350E335541AE47E1BA012051418FC2F538003355415C8FC285002051415C8FC2550133554148E17A64F21F5141EC51B86E0D3355413D0AD7A3F71F5141D7A3705D123355413D0AD753052051417B14AE47203355417B14AEF7112051413D0AD7D32D3355415C8FC2151A2051410AD7A3803533554185EB51C8212051417B14AE473B3355419A99997928205141B81E85EB3E3355410AD7A3B02C20514114AE4771403355411F85EBD12E205141B81E85DB3F335541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000EAA470D93520514132062D81233355419C5AD51F32205141583AC9AD21335541A32674AD30205141E09B40F820335541A4703D1A2D2051417B14AE371F335541A9F2802B25205141E8C5C58B1A3355418ECFC47C22205141D01F5AF7183355417828509821205141A87036B11833554178285098212051410ED917381933554130AF370422205141C65FFFA3193355411B6FC30424205141F898A3381B33554119792AA726205141D8B341E81C3355413F17488D2A205141C373CDE81E3355410AF2713D2E20514165BA405521335541A293F75830205141DF6CFD7D22335541B4E7399D33205141B5E2ADDC23335541A84CB3EE35205141C92C897E243355419DB12C403820514143DF45A725335541678C56F03B2051411955F60527335541514CE2F03D20514161CE0E9A26335541857B1FE33C2051415729214926335541C1C432D53C20514167AFFD20263355417B10511B3C2051411CBF8CE425335541432B916E3A20514123492359253355418765411039205141C0103BE724335541E17A14FE37205141E17A148E24335541EAA470D93520514132062D8123335541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211723 - 76220
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000001F85EBD12E205141B81E85DB3F335541E17A144E39205141A4703DEA32335541295C8F42412051413D0AD753293355410000003042205141EC51B8DE27335541E17A14FE37205141E17A148E24335541A4703D1A2D2051417B14AE371F335541CDCCCCAC1F205141F6285C4F17335541D7A3707D162051411F85EB9111335541C3F5280C122051415C8FC2350E335541AE47E1BA012051418FC2F538003355415C8FC285002051415C8FC2550133554148E17A64F21F5141EC51B86E0D3355413D0AD7A3F71F5141D7A3705D123355413D0AD753052051417B14AE47203355417B14AEF7112051413D0AD7D32D3355415C8FC2151A2051410AD7A3803533554185EB51C8212051417B14AE473B3355419A99997928205141B81E85EB3E3355410AD7A3B02C20514114AE4771403355411F85EBD12E205141B81E85DB3F335541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000EAA470D93520514132062D81233355419C5AD51F32205141583AC9AD21335541A32674AD30205141E09B40F820335541A4703D1A2D2051417B14AE371F335541A9F2802B25205141E8C5C58B1A3355418ECFC47C22205141D01F5AF7183355417828509821205141A87036B11833554178285098212051410ED917381933554130AF370422205141C65FFFA3193355411B6FC30424205141F898A3381B33554119792AA726205141D8B341E81C3355413F17488D2A205141C373CDE81E3355410AF2713D2E20514165BA405521335541A293F75830205141DF6CFD7D22335541B4E7399D33205141B5E2ADDC23335541A84CB3EE35205141C92C897E243355419DB12C403820514143DF45A725335541678C56F03B2051411955F60527335541514CE2F03D20514161CE0E9A26335541857B1FE33C2051415729214926335541C1C432D53C20514167AFFD20263355417B10511B3C2051411CBF8CE425335541432B916E3A20514123492359253355418765411039205141C0103BE724335541E17A14FE37205141E17A148E24335541EAA470D93520514132062D8123335541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>871953 - 206312
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441CDCCCC2C027251419A99996938AF5441B81E851BFE7151419A99993937AF5441A4703D6AF671514148E17A843AAF5441AE47E10AF571514152B81E953AAF544185EB5178F6715141B81E850B35AF54413D0AD703EA7151418FC2F57837AF54419A9999B9DD7151416666663639AF5441EC51B89EDC7151419A9999D93AAF54413D0AD763DB715141CDCCCC9C3CAF54415C8FC205DB715141D7A3703D3DAF54419A9999E9DA715141EC51B86E3EAF5441CDCCCCECDA715141F6285C6F3FAF5441D7A3701DDB715141F6285CCF3FAF5441EC51B86EDC715141EC51B84E40AF544100000000DD715141EC51B8BE40AF5441295C8F82DD715141EC51B87E41AF5441295C8F82E37151419A9999B941AF54410AD7A3E0EC715141295C8F2241AF544100000030EF71514114AE47E140AF544185EB5178F9715141A4703DEA3EAF5441D7A370ED00725141295C8F823CAF54410AD7A3B0047251413D0AD7F33DAF5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E851BFE7151419A99993937AF54417F413D6AF671514109F27B843AAF54417600E10AF571514164281F953AAF54419F6EA480F1715141E42D7A943BAF544196EDFF2FEF71514118B047E140AF54410FA00369EF715141906F62D640AF5441BEA5E1F1F2715141578F762940AF54417EEA5078F9715141E44D3CEA3EAF54411DA471ED00725141E2808E823CAF54410AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441CDCCCC2C027251419A99996938AF5441B81E851BFE7151419A99993937AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>871953 - 394329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441CDCCCC2C027251419A99996938AF5441B81E851BFE7151419A99993937AF5441A4703D6AF671514148E17A843AAF5441AE47E10AF571514152B81E953AAF544185EB5178F6715141B81E850B35AF54413D0AD703EA7151418FC2F57837AF54419A9999B9DD7151416666663639AF5441EC51B89EDC7151419A9999D93AAF54413D0AD763DB715141CDCCCC9C3CAF54415C8FC205DB715141D7A3703D3DAF54419A9999E9DA715141EC51B86E3EAF5441CDCCCCECDA715141F6285C6F3FAF5441D7A3701DDB715141F6285CCF3FAF5441EC51B86EDC715141EC51B84E40AF544100000000DD715141EC51B8BE40AF5441295C8F82DD715141EC51B87E41AF5441295C8F82E37151419A9999B941AF54410AD7A3E0EC715141295C8F2241AF544100000030EF71514114AE47E140AF544185EB5178F9715141A4703DEA3EAF5441D7A370ED00725141295C8F823CAF54410AD7A3B0047251413D0AD7F33DAF5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E851BFE7151419A99993937AF54417F413D6AF671514109F27B843AAF54417600E10AF571514164281F953AAF54419F6EA480F1715141E42D7A943BAF544196EDFF2FEF71514118B047E140AF54410FA00369EF715141906F62D640AF5441BEA5E1F1F2715141578F762940AF54417EEA5078F9715141E44D3CEA3EAF54411DA471ED00725141E2808E823CAF54410AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441CDCCCC2C027251419A99996938AF5441B81E851BFE7151419A99993937AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965531 - 2749854
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000290000006EA896A3653D51419247095251E35441D0DA7B5F6A3D514184D10BCE4EE35441E0643E016E3D5141BA576C9B4DE35441A9DEDD336F3D5141675567424DE35441BF3B995C703D5141675567424DE35441DBB73DE8713D51411B724B4C4DE35441BA3650B4723D5141D39D0A264DE354411AA099E6763D5141C487C62E4DE3544102E4F8C6783D5141EB59AB454BE35441C5EC00857D3D5141D13710C247E354417D6FDD7C803D514131F7FFAF44E35441D0F85711813D5141588CFAA943E3544153FA13E57D3D51410E6CF22042E35441CE5573907C3D5141358718E142E354410917F6787B3D5141F67267E444E3544151941981783D514124FE747347E35441BC161F52763D5141FD687A7948E3544118FDB465723D5141820D1BCE49E35441AB7C4C8A703D5141D31EC4774AE35441E9814AEF703D51419548326F4BE3544123188FDB6F3D51413087A9DF4BE3544143E6C99F6D3D5141E6967AC84CE3544172C654466C3D51415FEA24554DE3544127B1E3E96B3D5141244A3D7B4DE35441A031A4716A3D514155D813334CE354414DF9C0ED683D514177B109E54AE35441CDCCCCBC683D5141AE47E1BA4AE354419A27041E673D5141705367E849E35441113592BC643D5141F72326B348E35441DFCA9121613D514150CCC8DE46E35441CAF8BE3A603D514100F7A76946E35441F0931EA55D3D5141A737EC1945E35441E657A1235C3D5141C2BC4F5644E35441DE7465605A3D5141F00B357943E354417A1A6E22523D514103F53F6A3FE354418057F618463D514127A1176F38E354411666C63A483D514123DDAAA733E35441DECD8DD9413D5141D9217E2530E35441CC6667AB423D5141386ECCD038E35441EF4E0215443D514171C1DF7845E354416EA896A3653D51419247095251E35441
+</a>
+
+<b>
+0106000000010000000103000000010000002500000048E17A14463D51410000007032E354418FC2F5B8413D51413D0AD71330E35441D7A370CD413D5141E17A14CE30E354411F85EB71423D5141000000D036E354415C8FC215443D514114AE477145E3544152B81EC5523D51419A9999894AE354410AD7A3F05B3D51417B14AEB74DE3544100000010603D514148E17A344FE354410AD7A3A0653D51413D0AD75351E35441CDCCCCEC6B3D51419A9999794DE35441F6285CEF703D5141F6285C6F4BE35441C3F5287C713D5141000000A04CE354418FC2F5D8743D51411F85EB514DE35441000000F0763D514152B81E554DE35441F6285C2F783D5141B81E85FB4BE35441F6285CEF7C3D51418FC2F5D848E354411F85EBE1803D5141C3F5289C44E35441295C8FD27F3D5141C3F528CC43E354419A9999897E3D51410000004043E35441A4703D2A7D3D51418FC2F53842E35441E17A146E7C3D514185EB517842E354413D0AD7D37B3D5141C3F528DC42E354411F85EBC17A3D5141F6285C8F44E354413D0AD7D3783D51413D0AD7B346E354413D0AD7A3743D51411F85EB2149E354417B14AE97703D5141F6285C9F4AE35441CDCCCCCC703D5141E17A141E4BE35441000000A06B3D51417B14AE374DE35441CDCCCCBC683D5141AE47E1BA4AE35441666666F65B3D5141F6285C3F44E35441C3F5287C533D5141C3F5281C40E35441B81E85DB513D51415C8FC2453FE354413D0AD743463D5141B81E859B38E35441D7A370FD473D5141F6285C1F34E35441F6285C3F483D5141EC51B89E33E35441D7A370ED463D514114AE47E132E3544148E17A14463D51410000007032E35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965531 - 5090462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000290000006EA896A3653D51419247095251E35441D0DA7B5F6A3D514184D10BCE4EE35441E0643E016E3D5141BA576C9B4DE35441A9DEDD336F3D5141675567424DE35441BF3B995C703D5141675567424DE35441DBB73DE8713D51411B724B4C4DE35441BA3650B4723D5141D39D0A264DE354411AA099E6763D5141C487C62E4DE3544102E4F8C6783D5141EB59AB454BE35441C5EC00857D3D5141D13710C247E354417D6FDD7C803D514131F7FFAF44E35441D0F85711813D5141588CFAA943E3544153FA13E57D3D51410E6CF22042E35441CE5573907C3D5141358718E142E354410917F6787B3D5141F67267E444E3544151941981783D514124FE747347E35441BC161F52763D5141FD687A7948E3544118FDB465723D5141820D1BCE49E35441AB7C4C8A703D5141D31EC4774AE35441E9814AEF703D51419548326F4BE3544123188FDB6F3D51413087A9DF4BE3544143E6C99F6D3D5141E6967AC84CE3544172C654466C3D51415FEA24554DE3544127B1E3E96B3D5141244A3D7B4DE35441A031A4716A3D514155D813334CE354414DF9C0ED683D514177B109E54AE35441CDCCCCBC683D5141AE47E1BA4AE354419A27041E673D5141705367E849E35441113592BC643D5141F72326B348E35441DFCA9121613D514150CCC8DE46E35441CAF8BE3A603D514100F7A76946E35441F0931EA55D3D5141A737EC1945E35441E657A1235C3D5141C2BC4F5644E35441DE7465605A3D5141F00B357943E354417A1A6E22523D514103F53F6A3FE354418057F618463D514127A1176F38E354411666C63A483D514123DDAAA733E35441DECD8DD9413D5141D9217E2530E35441CC6667AB423D5141386ECCD038E35441EF4E0215443D514171C1DF7845E354416EA896A3653D51419247095251E35441
+</a>
+
+<b>
+0106000000010000000103000000010000002500000048E17A14463D51410000007032E354418FC2F5B8413D51413D0AD71330E35441D7A370CD413D5141E17A14CE30E354411F85EB71423D5141000000D036E354415C8FC215443D514114AE477145E3544152B81EC5523D51419A9999894AE354410AD7A3F05B3D51417B14AEB74DE3544100000010603D514148E17A344FE354410AD7A3A0653D51413D0AD75351E35441CDCCCCEC6B3D51419A9999794DE35441F6285CEF703D5141F6285C6F4BE35441C3F5287C713D5141000000A04CE354418FC2F5D8743D51411F85EB514DE35441000000F0763D514152B81E554DE35441F6285C2F783D5141B81E85FB4BE35441F6285CEF7C3D51418FC2F5D848E354411F85EBE1803D5141C3F5289C44E35441295C8FD27F3D5141C3F528CC43E354419A9999897E3D51410000004043E35441A4703D2A7D3D51418FC2F53842E35441E17A146E7C3D514185EB517842E354413D0AD7D37B3D5141C3F528DC42E354411F85EBC17A3D5141F6285C8F44E354413D0AD7D3783D51413D0AD7B346E354413D0AD7A3743D51411F85EB2149E354417B14AE97703D5141F6285C9F4AE35441CDCCCCCC703D5141E17A141E4BE35441000000A06B3D51417B14AE374DE35441CDCCCCBC683D5141AE47E1BA4AE35441666666F65B3D5141F6285C3F44E35441C3F5287C533D5141C3F5281C40E35441B81E85DB513D51415C8FC2453FE354413D0AD743463D5141B81E859B38E35441D7A370FD473D5141F6285C1F34E35441F6285C3F483D5141EC51B89E33E35441D7A370ED463D514114AE47E132E3544148E17A14463D51410000007032E35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99482 - 3368419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEE75B8450415C8FC205BE1B5441713D0AD74784504100000040CB1B5441E17A143E4C845041295C8FD2D61B5441D7A3709D4E845041EC51B8AED61B5441D7A370FD52845041713D0A77D61B54415C8FC2555984504152B81E85D61B5441F6285CDF5D845041CDCCCC2CD71B5441E17A148E5F8450417B14AE47D71B544185EB51285E845041C3F5289CCD1B54417B14AEE75B8450415C8FC205BE1B5441
+</a>
+
+<b>
+010600000001000000010300000001000000340000005D33B6164B8450416F27BC1BC91B5441318AA1E6498450418E5B64E0C71B5441758EDFFC4A8450410577C2B8C61B5441CA00CBAC4F845041CC06F693C21B54410ECC2D8752845041FA0C85BABE1B544143BB6A665684504153CD7E62B91B5441BB1E7D4857845041084A69D4B51B544188F6CBEA57845041D96D755EB11B5441DE7B9946598450418D7ED1C1AA1B5441C7E7C0975984504181ECB0E0A81B54417286CD405984504186DB1F45A71B544188F6CBEA5784504185B74540A61B544192B0CFAE53845041CA97A951A61B5441491C904251845041AB82415DA61B5441E84C560F50845041AB82415DA61B5441D6CBC6C94F845041E53C139CA71B5441E5287C0A4F845041B46DA7E3AB1B54412F1C29854E8450411661BB1BAE1B5441F04E0EDD4D845041C16B56D3B01B54418F7FD4A94C8450411202B5CAB31B54415057BC8E4A845041FEC8D98EB51B5441556A05F84984504148E0600EB61B5441A44C21D747845041FF34689DB81B54416E24A2FE428450411EEBC940BE1B5441C44C21D7478450410C3E4E3ACB1B54417A01CFBA4884504187F7D8A9CA1B5441713D0AD74784504100000040CB1B5441214C9FBB47845041905DF3F7CA1B5441A108EFE64684504184307380CB1B54414670CE5C4B845041D23F39FED61B5441D7A3709D4E845041EC51B8AED61B5441D7A370FD52845041713D0A77D61B54415C8FC2555984504152B81E85D61B5441F6285CDF5D845041CDCCCC2CD71B5441E17A148E5F8450417B14AE47D71B5441713D0AE7618450411F85EBA1D71B544148E17AD468845041C3F5289CD91B5441E17A14EE6C84504185EB5178D91B544114AE4741728450415C8FC2C5D71B5441C3F5284C77845041B81E85FBD51B54415C8FC28578845041C3F5287CD31B54417B14AEA779845041E17A143ECF1B544152B81E2578845041AE47E1BAC91B54413D0AD7B379845041A4703D4AC61B5441A4703DBA7B845041F6285C1FC41B544185EB51487D84504148E17A54C21B5441AE47E1EA7B84504152B81EA5BF1B54413D0AD7B379845041D7A3700DBD1B54418FC2F5C87784504133333343BA1B5441A4703DCA69845041B81E85ABBA1B54417B14AEE75B8450415C8FC205BE1B54415D33B6164B8450416F27BC1BC91B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235630 - 968954
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000295C8F6276A35141F6285C9FFA9E5441EC51B84E73A351418FC2F598FB9E54419A99994972A351415C8FC2F5FB9E5441000000C074A3514114AE47C10A9F544152B81E4577A35141295C8FE2199F5441713D0A577AA3514148E17A441B9F54411F85EB917BA3514152B81E851C9F54413D0AD7137CA35141F6285CCF1C9F54417B14AEC780A3514133333373209F54413D0AD7C37DA35141A4703D5A0E9F5441666666467AA351413D0AD763F99E5441295C8F6276A35141F6285C9FFA9E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000084953D4F6AA3514192A9B564FF9E544170C3D78572A35141F5CBB45FFD9E54412385B64972A35141B15070F6FB9E5441ADCB1F146EA3514164B26076FD9E54419CE74D076AA35141CE6795A9FE9E5441B81E85CB62A351410AD7A3D0009F544148E17A8459A35141B81E859B039F54413D0AD7935AA351410AD7A3100D9F5441666666F65AA35141295C8F52189F5441AE47E14A64A3514166666656179F5441B81E85AB65A351417B14AEE7169F5441C3F5288C66A3514114AE47A1169F5441922C568D6BA351414F78666B169F5441FBB3DFAE6BA351418422226E169F544186D67CC26BA35141F82CBFA7149F544187A942756DA3514181B951DF149F54417C97B2766DA35141F9975FBA169F5441F4AB60BE71A35141ADB6E465179F54411330CF4477A35141A38A09E2199F544188F3E2B276A3514102C0F073169F5441F882042F6EA3514126F4EE3C169F544184953D4F6AA3514192A9B564FF9E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235738 - 222990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000300000074000000295C8F6293A2514114AE47816DA154416666660691A2514185EB51186EA154417B14AE478DA251413D0AD73370A15441D7A3707D8AA251416666660671A154419A9999698AA251415C8FC2B572A15441E17A146E8DA25141CDCCCC8C74A15441EC51B8FE8EA251419A99991976A15441EC51B8EE93A2514148E17A8476A15441AE47E11A9AA251415C8FC2A578A1544152B81E75A0A251410AD7A30078A15441EC51B8CEA1A251415C8FC21579A1544185EB5188A4A25141AE47E13A7CA15441B81E858BA5A251419A9999C97EA15441A4703D8AA4A25141C3F528DC7FA15441C3F5287CA5A2514114AE47F181A15441AE47E19AA0A251413333334384A154415C8FC2859EA25141295C8FD281A15441A4703D3A9AA251413D0AD75383A154410000005096A2514114AE47D17DA154418FC2F59895A251419A9999197BA15441CDCCCC1C8FA251419A99999978A154415C8FC2F586A2514185EB51B877A15441EC51B89E82A2514185EB51087AA15441000000A089A251413333337382A15441A4703D8A92A251419A99996990A154415C8FC27598A251415C8FC2C596A1544148E17AE49AA25141000000809FA1544185EB51D89AA25141713D0A27A3A154415C8FC2B599A25141AE47E1AAAFA15441F6285C7F9AA2514185EB5198B2A15441666666269EA25141EC51B86EB9A15441713D0A779CA2514148E17A34C0A1544114AE47D1A0A251413D0AD703C4A1544100000060A1A25141713D0A87C4A154413D0AD7A3A3A25141D7A370BDC2A154418FC2F508A5A251413D0AD763C4A154417B14AEA7A6A25141E17A141EC3A1544114AE47C1A5A25141B81E85FBC1A154410AD7A3A0A7A25141295C8FD2BFA15441B81E85CBA6A25141AE47E1FABDA15441A4703D6AA4A251415C8FC255BEA15441E17A141EA4A25141295C8F62BDA154417B14AE17A2A251411F85EB31BDA1544148E17AE49FA25141666666D6B6A15441F6285CFFA3A25141C3F5282CB5A15441AE47E15AA4A251410AD7A310B6A1544152B81E05A6A25141F6285C2FB6A1544114AE4791A7A25141EC51B86EB7A1544152B81E85A8A25141AE47E1FAB8A154410AD7A3E0A8A25141B81E856BBBA15441000000F0A8A251413D0AD743BDA15441713D0AD7AAA2514148E17A74BEA1544148E17AC4AEA251415C8FC215BDA154418FC2F5E8B0A251418FC2F5D8BCA154418FC2F5D8B5A25141A4703D8ABBA1544133333353B6A2514100000050BCA1544100000090B6A251418FC2F558BFA15441AE47E14AB5A251413D0AD783C0A1544133333353ACA25141F6285C0FC3A1544114AE4701ADA25141713D0AB7C6A15441713D0AC7ABA2514166666686C7A1544185EB51B8AFA25141B81E850BC9A154418FC2F598AEA251410AD7A3B0CBA15441295C8F22B3A25141713D0A97CDA15441F6285C2FB8A25141F6285C4FD0A154415C8FC205BBA25141295C8F62D2A15441CDCCCC5CBCA25141713D0A67D2A15441D7A3707DBDA25141295C8F02D2A15441E17A14AEC1A251411F85EB81CFA15441E17A14EEC2A251419A999929CEA154410AD7A3E0BFA251417B14AEC7C5A15441CDCCCCDCBDA25141F6285CAFC0A1544100000060BBA2514133333363BAA154419A999909B7A2514152B81EE5BBA1544152B81E25B6A25141C3F5281CBAA15441AE47E13AB3A2514148E17AB4BAA1544152B81E35B1A25141EC51B8FEB4A154413D0AD7A3B7A25141EC51B86EB2A15441E17A14FEB4A25141C3F5287CADA15441CDCCCC2CB0A25141D7A370DD9EA15441713D0A87B9A251418FC2F54898A15441666666D6B8A251410000006096A15441CDCCCC6CB7A251413D0AD77398A15441CDCCCC0CB6A2514148E17AF499A1544133333363B4A251419A9999799BA154413D0AD733B1A2514148E17AC49DA154415C8FC215B0A25141A4703DAA9EA1544114AE47C1AFA25141EC51B8EE9DA15441666666F6B1A25141A4703D8A9CA154417B14AE07B4A2514148E17AF49AA15441666666B6B5A25141AE47E14A99A15441E17A147EB7A251411F85EB0197A15441E17A148EB8A251416666669695A15441A4703D5AB6A25141A4703D7A8FA154413D0AD783B2A25141C3F5283C91A15441EC51B86EB0A251415C8FC2B591A1544114AE4741B0A2514114AE47D190A15441E17A147EB0A25141C3F5287C8DA15441A4703D1AADA251415C8FC2C587A15441B81E85EBB0A251410AD7A3E083A15441CDCCCCDCAFA25141EC51B88E81A154415C8FC275AFA25141713D0A1781A15441713D0AF7ACA251418FC2F5087DA15441E17A143EACA25141333333937BA1544152B81EE5ABA2514114AE47417AA15441F6285CEFABA2514152B81E0579A1544100000000ACA251418FC2F5B878A1544100000060ADA251416666666674A15441A4703DCAACA251413D0AD76373A154417B14AE97A7A2514185EB51686AA1544100000090A5A251413D0AD74367A15441EC51B8EEA0A251418FC2F50865A15441A4703DDA9BA25141F6285CDF64A15441C3F528BC98A25141C3F528AC66A154410AD7A32095A25141C3F5283C69A15441295C8F6293A2514114AE47816DA154410D000000C3F5287CA5A251413333332393A15441713D0AE7A5A25141C3F528AC93A154413D0AD7A3A8A25141AE47E1CA93A154418FC2F578A9A2514152B81E0593A154411F85EB01AAA2514152B81E0593A15441295C8FF2A9A25141C3F528AC93A1544185EB5188A9A2514148E17A4494A15441000000F0A8A25141713D0A5795A1544152B81E05A6A2514152B81E7595A15441713D0AA7A4A2514148E17A8495A154411F85EBD1A3A251411F85EB8194A15441000000F0A3A25141D7A3709D93A15441C3F5287CA5A251413333332393A154410C000000295C8F22A7A25141D7A3708DAAA15441713D0AD7A8A25141295C8F42A8A15441F6285C5FA9A25141000000E0A6A15441295C8F62AAA2514114AE4751A4A15441AE47E1EAAAA25141333333A3A4A1544148E17AA4A9A25141F6285C3FA8A15441C3F5281CA6A25141CDCCCC4CADA15441295C8FB2A4A25141E17A148EB1A1544185EB5118A4A25141F6285C5FB1A15441F6285C4FA4A251415C8FC225B0A15441F6285CBFA5A251415C8FC2E5ACA15441295C8F22A7A25141D7A3708DAAA15441
+</a>
+
+<b>
+0106000000010000000103000000010000005400000014AE4741B0A2514114AE47D190A154413E70FE97AFA25141F8C0F65B8DA15441A4703D1AADA251415C8FC2C587A154416826D261AFA251412FE9547285A154416826D261AFA25141F9F4F9F684A1544125689FBAAFA2514180715F4584A154414E2BA04EB0A2514145EDC49383A154411AF5B36BB0A2514126683AC882A154418BFD256BB0A251415AF302C782A1544184D6E36AB0A251415BD271C682A15441F56D216AB0A251416E51C7C482A1544157653844AFA251419EE7F6A682A15441B05F6A57AEA25141D81E282681A15441919C69C3ADA251419D9A8D7480A1544168D9682FADA25141B94125FB7EA154415718CF11ADA251413FBE8A497EA1544192C7B64DADA25141EEB1D3957DA15441AECCAA4CADA251410D2920947DA1544192721E3DADA251416817DB7A7DA15441E4951E33ADA251419BAC9A6A7DA1544179C0362BADA251410470C15D7DA154411B3D0AF7ACA2514144C2F5087DA15441C8504287ACA2514115CF13277CA15441E17A143EACA25141333333937BA1544152B81EE5ABA2514114AE47417AA154415BB853E5ABA25141F94CE33A7AA154413032DEE5ABA2514181CC2F2A7AA15441AE19327FAAA25141FAC2B79A79A15441D516CB08AAA251413D34810F77A15441D19B65BAAAA25141BFA44A8474A154416F3D9F07ACA251416C957E1372A154412E7EDD15ABA25141CD92AE7170A154414CC35399AAA25141E475739A6FA15441210F96A5A8A25141C57EA80A6EA154417082C690A6A25141DA6D3E446BA154417082C690A6A25141DC6609E169A1544147725CCAA3A251412CDA39CC67A15441765C2417A0A25141E45338A466A15441A1CB86159DA25141E8CE9DF265A154410F0B547D9AA251413D0FD1A865A1544183BC431999A25141B119677666A1544127D330BC98A25141446B24AC66A154413DFD544F97A2514169854EAF67A15441C78CA4BC97A251414F43EFBA6EA154412D4E0CDD95A25141B578864C70A1544144A5D35C91A251418CD333496EA15441C6B5CC738EA25141C993F28A6FA154417B14AE478DA251413D0AD73370A154414C0B0D298CA25141F6CC568870A1544183032FA98CA25141A0CA428472A154418E8C38F891A251413AC0804175A1544189277D2896A25141952B3E9F75A15441CA56B0709CA251411B74B43878A154414B94390FA0A2514144515C4577A15441CDEEC118A3A25141DA394FFC77A15441B48D626AA8A251410AD8EF4D7DA15441D9322AC8A4A2514136BE9F6480A15441C3F5287CA5A2514114AE47F181A15441E7B94F1AA5A251410355CC1F82A154413FAE47B1A5A25141D77A144E83A15441BE0AD7F3A7A25141B6AE477189A15441715B7AB5A9A251418EB6E4D08DA1544136A15A6CAAA2514152646D328EA154411F9076F2AAA251415A4B3F6390A15441E9767EB5AAA25141CB7FCE0B91A154411B3D0AF7ACA2514138CDCCBC97A15441E5C12D3DAFA2514172FB65C99CA1544135AE47C1AFA25141D651B8EE9DA154416601CBFBAFA25141E54CCFC99DA15441014515A1B0A25141414A8B619DA154410F4B3D9AB1A25141971060C49CA154415CFA9F29B0A2514141A5E3D89AA15441D102D58CB1A25141E697E08898A15441E78B3D2BB3A25141AB1346D797A154417FE29B54B5A25141243582AB99A15441DB6566B6B5A251419947E14A99A15441227B147EB7A251419E84EB0197A15441088C3999B7A25141DD4BA4DD96A1544141282F9EB7A25141E57F03D796A154418C7EFA8DB8A251410D501E9695A15441EFD7365AB6A251410976407A8FA154413D0AD783B2A25141C3F5283C91A15441EC51B86EB0A251415C8FC2B591A1544114AE4741B0A2514114AE47D190A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235738 - 360674
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000300000074000000295C8F6293A2514114AE47816DA154416666660691A2514185EB51186EA154417B14AE478DA251413D0AD73370A15441D7A3707D8AA251416666660671A154419A9999698AA251415C8FC2B572A15441E17A146E8DA25141CDCCCC8C74A15441EC51B8FE8EA251419A99991976A15441EC51B8EE93A2514148E17A8476A15441AE47E11A9AA251415C8FC2A578A1544152B81E75A0A251410AD7A30078A15441EC51B8CEA1A251415C8FC21579A1544185EB5188A4A25141AE47E13A7CA15441B81E858BA5A251419A9999C97EA15441A4703D8AA4A25141C3F528DC7FA15441C3F5287CA5A2514114AE47F181A15441AE47E19AA0A251413333334384A154415C8FC2859EA25141295C8FD281A15441A4703D3A9AA251413D0AD75383A154410000005096A2514114AE47D17DA154418FC2F59895A251419A9999197BA15441CDCCCC1C8FA251419A99999978A154415C8FC2F586A2514185EB51B877A15441EC51B89E82A2514185EB51087AA15441000000A089A251413333337382A15441A4703D8A92A251419A99996990A154415C8FC27598A251415C8FC2C596A1544148E17AE49AA25141000000809FA1544185EB51D89AA25141713D0A27A3A154415C8FC2B599A25141AE47E1AAAFA15441F6285C7F9AA2514185EB5198B2A15441666666269EA25141EC51B86EB9A15441713D0A779CA2514148E17A34C0A1544114AE47D1A0A251413D0AD703C4A1544100000060A1A25141713D0A87C4A154413D0AD7A3A3A25141D7A370BDC2A154418FC2F508A5A251413D0AD763C4A154417B14AEA7A6A25141E17A141EC3A1544114AE47C1A5A25141B81E85FBC1A154410AD7A3A0A7A25141295C8FD2BFA15441B81E85CBA6A25141AE47E1FABDA15441A4703D6AA4A251415C8FC255BEA15441E17A141EA4A25141295C8F62BDA154417B14AE17A2A251411F85EB31BDA1544148E17AE49FA25141666666D6B6A15441F6285CFFA3A25141C3F5282CB5A15441AE47E15AA4A251410AD7A310B6A1544152B81E05A6A25141F6285C2FB6A1544114AE4791A7A25141EC51B86EB7A1544152B81E85A8A25141AE47E1FAB8A154410AD7A3E0A8A25141B81E856BBBA15441000000F0A8A251413D0AD743BDA15441713D0AD7AAA2514148E17A74BEA1544148E17AC4AEA251415C8FC215BDA154418FC2F5E8B0A251418FC2F5D8BCA154418FC2F5D8B5A25141A4703D8ABBA1544133333353B6A2514100000050BCA1544100000090B6A251418FC2F558BFA15441AE47E14AB5A251413D0AD783C0A1544133333353ACA25141F6285C0FC3A1544114AE4701ADA25141713D0AB7C6A15441713D0AC7ABA2514166666686C7A1544185EB51B8AFA25141B81E850BC9A154418FC2F598AEA251410AD7A3B0CBA15441295C8F22B3A25141713D0A97CDA15441F6285C2FB8A25141F6285C4FD0A154415C8FC205BBA25141295C8F62D2A15441CDCCCC5CBCA25141713D0A67D2A15441D7A3707DBDA25141295C8F02D2A15441E17A14AEC1A251411F85EB81CFA15441E17A14EEC2A251419A999929CEA154410AD7A3E0BFA251417B14AEC7C5A15441CDCCCCDCBDA25141F6285CAFC0A1544100000060BBA2514133333363BAA154419A999909B7A2514152B81EE5BBA1544152B81E25B6A25141C3F5281CBAA15441AE47E13AB3A2514148E17AB4BAA1544152B81E35B1A25141EC51B8FEB4A154413D0AD7A3B7A25141EC51B86EB2A15441E17A14FEB4A25141C3F5287CADA15441CDCCCC2CB0A25141D7A370DD9EA15441713D0A87B9A251418FC2F54898A15441666666D6B8A251410000006096A15441CDCCCC6CB7A251413D0AD77398A15441CDCCCC0CB6A2514148E17AF499A1544133333363B4A251419A9999799BA154413D0AD733B1A2514148E17AC49DA154415C8FC215B0A25141A4703DAA9EA1544114AE47C1AFA25141EC51B8EE9DA15441666666F6B1A25141A4703D8A9CA154417B14AE07B4A2514148E17AF49AA15441666666B6B5A25141AE47E14A99A15441E17A147EB7A251411F85EB0197A15441E17A148EB8A251416666669695A15441A4703D5AB6A25141A4703D7A8FA154413D0AD783B2A25141C3F5283C91A15441EC51B86EB0A251415C8FC2B591A1544114AE4741B0A2514114AE47D190A15441E17A147EB0A25141C3F5287C8DA15441A4703D1AADA251415C8FC2C587A15441B81E85EBB0A251410AD7A3E083A15441CDCCCCDCAFA25141EC51B88E81A154415C8FC275AFA25141713D0A1781A15441713D0AF7ACA251418FC2F5087DA15441E17A143EACA25141333333937BA1544152B81EE5ABA2514114AE47417AA15441F6285CEFABA2514152B81E0579A1544100000000ACA251418FC2F5B878A1544100000060ADA251416666666674A15441A4703DCAACA251413D0AD76373A154417B14AE97A7A2514185EB51686AA1544100000090A5A251413D0AD74367A15441EC51B8EEA0A251418FC2F50865A15441A4703DDA9BA25141F6285CDF64A15441C3F528BC98A25141C3F528AC66A154410AD7A32095A25141C3F5283C69A15441295C8F6293A2514114AE47816DA154410D000000C3F5287CA5A251413333332393A15441713D0AE7A5A25141C3F528AC93A154413D0AD7A3A8A25141AE47E1CA93A154418FC2F578A9A2514152B81E0593A154411F85EB01AAA2514152B81E0593A15441295C8FF2A9A25141C3F528AC93A1544185EB5188A9A2514148E17A4494A15441000000F0A8A25141713D0A5795A1544152B81E05A6A2514152B81E7595A15441713D0AA7A4A2514148E17A8495A154411F85EBD1A3A251411F85EB8194A15441000000F0A3A25141D7A3709D93A15441C3F5287CA5A251413333332393A154410C000000295C8F22A7A25141D7A3708DAAA15441713D0AD7A8A25141295C8F42A8A15441F6285C5FA9A25141000000E0A6A15441295C8F62AAA2514114AE4751A4A15441AE47E1EAAAA25141333333A3A4A1544148E17AA4A9A25141F6285C3FA8A15441C3F5281CA6A25141CDCCCC4CADA15441295C8FB2A4A25141E17A148EB1A1544185EB5118A4A25141F6285C5FB1A15441F6285C4FA4A251415C8FC225B0A15441F6285CBFA5A251415C8FC2E5ACA15441295C8F22A7A25141D7A3708DAAA15441
+</a>
+
+<b>
+0106000000010000000103000000010000005400000014AE4741B0A2514114AE47D190A154413E70FE97AFA25141F8C0F65B8DA15441A4703D1AADA251415C8FC2C587A154416826D261AFA251412FE9547285A154416826D261AFA25141F9F4F9F684A1544125689FBAAFA2514180715F4584A154414E2BA04EB0A2514145EDC49383A154411AF5B36BB0A2514126683AC882A154418BFD256BB0A251415AF302C782A1544184D6E36AB0A251415BD271C682A15441F56D216AB0A251416E51C7C482A1544157653844AFA251419EE7F6A682A15441B05F6A57AEA25141D81E282681A15441919C69C3ADA251419D9A8D7480A1544168D9682FADA25141B94125FB7EA154415718CF11ADA251413FBE8A497EA1544192C7B64DADA25141EEB1D3957DA15441AECCAA4CADA251410D2920947DA1544192721E3DADA251416817DB7A7DA15441E4951E33ADA251419BAC9A6A7DA1544179C0362BADA251410470C15D7DA154411B3D0AF7ACA2514144C2F5087DA15441C8504287ACA2514115CF13277CA15441E17A143EACA25141333333937BA1544152B81EE5ABA2514114AE47417AA154415BB853E5ABA25141F94CE33A7AA154413032DEE5ABA2514181CC2F2A7AA15441AE19327FAAA25141FAC2B79A79A15441D516CB08AAA251413D34810F77A15441D19B65BAAAA25141BFA44A8474A154416F3D9F07ACA251416C957E1372A154412E7EDD15ABA25141CD92AE7170A154414CC35399AAA25141E475739A6FA15441210F96A5A8A25141C57EA80A6EA154417082C690A6A25141DA6D3E446BA154417082C690A6A25141DC6609E169A1544147725CCAA3A251412CDA39CC67A15441765C2417A0A25141E45338A466A15441A1CB86159DA25141E8CE9DF265A154410F0B547D9AA251413D0FD1A865A1544183BC431999A25141B119677666A1544127D330BC98A25141446B24AC66A154413DFD544F97A2514169854EAF67A15441C78CA4BC97A251414F43EFBA6EA154412D4E0CDD95A25141B578864C70A1544144A5D35C91A251418CD333496EA15441C6B5CC738EA25141C993F28A6FA154417B14AE478DA251413D0AD73370A154414C0B0D298CA25141F6CC568870A1544183032FA98CA25141A0CA428472A154418E8C38F891A251413AC0804175A1544189277D2896A25141952B3E9F75A15441CA56B0709CA251411B74B43878A154414B94390FA0A2514144515C4577A15441CDEEC118A3A25141DA394FFC77A15441B48D626AA8A251410AD8EF4D7DA15441D9322AC8A4A2514136BE9F6480A15441C3F5287CA5A2514114AE47F181A15441E7B94F1AA5A251410355CC1F82A154413FAE47B1A5A25141D77A144E83A15441BE0AD7F3A7A25141B6AE477189A15441715B7AB5A9A251418EB6E4D08DA1544136A15A6CAAA2514152646D328EA154411F9076F2AAA251415A4B3F6390A15441E9767EB5AAA25141CB7FCE0B91A154411B3D0AF7ACA2514138CDCCBC97A15441E5C12D3DAFA2514172FB65C99CA1544135AE47C1AFA25141D651B8EE9DA154416601CBFBAFA25141E54CCFC99DA15441014515A1B0A25141414A8B619DA154410F4B3D9AB1A25141971060C49CA154415CFA9F29B0A2514141A5E3D89AA15441D102D58CB1A25141E697E08898A15441E78B3D2BB3A25141AB1346D797A154417FE29B54B5A25141243582AB99A15441DB6566B6B5A251419947E14A99A15441227B147EB7A251419E84EB0197A15441088C3999B7A25141DD4BA4DD96A1544141282F9EB7A25141E57F03D796A154418C7EFA8DB8A251410D501E9695A15441EFD7365AB6A251410976407A8FA154413D0AD783B2A25141C3F5283C91A15441EC51B86EB0A251415C8FC2B591A1544114AE4741B0A2514114AE47D190A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235745 - 223003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E0000000000009096A25141666666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA154419A99992986A25141D7A370ADCEA154410000004082A2514166666636D1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441AE47E15A8AA25141AE47E15AD7A15441AE47E19A91A25141AE47E1BAD8A15441AE47E14A95A25141AE47E1EADAA1544152B81ED597A251413D0AD753DEA1544185EB514898A25141333333D3DDA15441713D0AE79CA25141713D0AA7D8A154410000009096A25141666666F6C9A15441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000C2390AE79CA2514191410AA7D8A15441E1FFFF8F96A25141696666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA15441D744AE5D87A251413981480FCEA15441A499992986A25141E2A370ADCEA154412C56E22283A25141D6ACAFB7D0A1544138BA155382A25141C1D2082AD1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441D5AE89F887A251419F4EE221D6A1544141D4AE638AA2514160AD8C5CD7A1544107F41E6A8AA25141A440C55DD7A15441F62686DF8BA25141279E96A4D7A15441AE47E19A91A25141AE47E1BAD8A15441028A8BD191A2514186F54EDBD8A154419CFC771D92A2514181E993EBD8A15441ADB1774394A25141274E9E4EDAA15441AE47E14A95A25141AE47E1EADAA15441209EFEC296A25141C03DD2E3DCA15441D61F08FF96A25141421B6C34DDA15441344843D297A2514160801245DEA15441C2390AE79CA2514191410AA7D8A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235745 - 353651
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E0000000000009096A25141666666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA154419A99992986A25141D7A370ADCEA154410000004082A2514166666636D1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441AE47E15A8AA25141AE47E15AD7A15441AE47E19A91A25141AE47E1BAD8A15441AE47E14A95A25141AE47E1EADAA1544152B81ED597A251413D0AD753DEA1544185EB514898A25141333333D3DDA15441713D0AE79CA25141713D0AA7D8A154410000009096A25141666666F6C9A15441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000C2390AE79CA2514191410AA7D8A15441E1FFFF8F96A25141696666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA15441D744AE5D87A251413981480FCEA15441A499992986A25141E2A370ADCEA154412C56E22283A25141D6ACAFB7D0A1544138BA155382A25141C1D2082AD1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441D5AE89F887A251419F4EE221D6A1544141D4AE638AA2514160AD8C5CD7A1544107F41E6A8AA25141A440C55DD7A15441F62686DF8BA25141279E96A4D7A15441AE47E19A91A25141AE47E1BAD8A15441028A8BD191A2514186F54EDBD8A154419CFC771D92A2514181E993EBD8A15441ADB1774394A25141274E9E4EDAA15441AE47E14A95A25141AE47E1EADAA15441209EFEC296A25141C03DD2E3DCA15441D61F08FF96A25141421B6C34DDA15441344843D297A2514160801245DEA15441C2390AE79CA2514191410AA7D8A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100197 - 3368419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000A4703DCA69845041B81E85ABBA1B5441000000106A8450411F85EB01B51B5441E17A141E678450415C8FC2A5A11B54411F85EBE1628450419A9999A9A21B5441E17A14EE5A8450413D0AD783A41B54411F85EB6158845041F6285CCFA11B5441F6285C3F558450415C8FC225A31B5441B81E855B508450417B14AEE7A41B54413D0AD7D34F8450411F85EB41A71B5441000000004F8450413D0AD7D3AB1B544148E17AC44D8450417B14AEC7B01B5441666666964C84504148E17AC4B31B54417B14AEE749845041AE47E1FAB51B544148E17A84468450418FC2F508BA1B54411F85EBE1428450418FC2F538BE1B5441713D0AD74784504100000040CB1B54417B14AEE75B8450415C8FC205BE1B5441A4703DCA69845041B81E85ABBA1B5441
+</a>
+
+<b>
+010600000001000000010300000001000000340000005D33B6164B8450416F27BC1BC91B5441318AA1E6498450418E5B64E0C71B5441758EDFFC4A8450410577C2B8C61B5441CA00CBAC4F845041CC06F693C21B54410ECC2D8752845041FA0C85BABE1B544143BB6A665684504153CD7E62B91B5441BB1E7D4857845041084A69D4B51B544188F6CBEA57845041D96D755EB11B5441DE7B9946598450418D7ED1C1AA1B5441C7E7C0975984504181ECB0E0A81B54417286CD405984504186DB1F45A71B544188F6CBEA5784504185B74540A61B544192B0CFAE53845041CA97A951A61B5441491C904251845041AB82415DA61B5441E84C560F50845041AB82415DA61B5441D6CBC6C94F845041E53C139CA71B5441E5287C0A4F845041B46DA7E3AB1B54412F1C29854E8450411661BB1BAE1B5441F04E0EDD4D845041C16B56D3B01B54418F7FD4A94C8450411202B5CAB31B54415057BC8E4A845041FEC8D98EB51B5441556A05F84984504148E0600EB61B5441A44C21D747845041FF34689DB81B54416E24A2FE428450411EEBC940BE1B5441C44C21D7478450410C3E4E3ACB1B54417A01CFBA4884504187F7D8A9CA1B5441713D0AD74784504100000040CB1B5441214C9FBB47845041905DF3F7CA1B5441A108EFE64684504184307380CB1B54414670CE5C4B845041D23F39FED61B5441D7A3709D4E845041EC51B8AED61B5441D7A370FD52845041713D0A77D61B54415C8FC2555984504152B81E85D61B5441F6285CDF5D845041CDCCCC2CD71B5441E17A148E5F8450417B14AE47D71B5441713D0AE7618450411F85EBA1D71B544148E17AD468845041C3F5289CD91B5441E17A14EE6C84504185EB5178D91B544114AE4741728450415C8FC2C5D71B5441C3F5284C77845041B81E85FBD51B54415C8FC28578845041C3F5287CD31B54417B14AEA779845041E17A143ECF1B544152B81E2578845041AE47E1BAC91B54413D0AD7B379845041A4703D4AC61B5441A4703DBA7B845041F6285C1FC41B544185EB51487D84504148E17A54C21B5441AE47E1EA7B84504152B81EA5BF1B54413D0AD7B379845041D7A3700DBD1B54418FC2F5C87784504133333343BA1B5441A4703DCA69845041B81E85ABBA1B54417B14AEE75B8450415C8FC205BE1B54415D33B6164B8450416F27BC1BC91B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100814 - 5323389
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000280000001F85EBC1BD91504114AE47119E235441A4703D0ABD915041E17A145E9C235441666666F6BC91504114AE47D19A2354411F85EB21BC915041E17A14EE982354418FC2F578BC915041000000709823544148E17A64BC9150419A9999B997235441CDCCCC7CBB915041EC51B8FE9623544185EB51D8BA91504185EB514896235441295C8F72BA9150416666662695235441D7A3702DBA9150413D0AD7C3932354415C8FC205BA915041000000D092235441F6285CEFB9915041C3F5281C92235441E17A140EBA915041D7A3708D912354415C8FC2A5BA91504152B81ED58E2354415C8FC255BB915041E17A14FE8B2354410AD7A300BC9150419A99994989235441C3F5281CBD915041A4703D1A862354413D0AD753B091504152B81EF58323544166666656A79150413D0AD77382235441CDCCCC1CA7915041B81E856B822354410AD7A370A5915041CDCCCC6C892354418FC2F528A3915041295C8F4292235441AE47E10AA19150415C8FC2559A2354415C8FC2959D915041333333039F2354415C8FC2E5999150419A9999D9A223544114AE478197915041C3F5286CA4235441000000409991504166666656A5235441EC51B85E9B9150410AD7A320A6235441F6285CCF9D9150419A9999B9A62354418FC2F568AA915041295C8FF2A8235441295C8F02B89150410AD7A360AB23544133333363B99150410AD7A380AB235441F6285CAFBA91504100000070AB2354415C8FC215BC915041295C8F32AB235441295C8F72BD91504114AE47C1AA2354410AD7A360BB915041D7A3701DA6235441A4703D9ABB91504100000030A4235441F6285CCFBA9150419A999999A223544152B81E65BA915041EC51B8FEA12354411F85EBC1BD91504114AE47119E235441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000004B14C9C6B8915041CD469A4AAA2354417D0E2BD4B891504153F9294CAA235441906DE4A6B8915041A600F95BAB235441D77DAFE1BA915041CB6D5F67AB235441422EEF6CBD9150416F681BC3AA235441517EB162BB91504191EA0A22A6235441D715A099BB91504150014435A423544114EEEE22BA9150413A4797E4A1235441C5EE1130B9915041DF120CF5A32354414F596328B9915041391FDA54A42354415821E114B9915041753B9AD2A523544115B87FDBB8915041307DC413A823544103BFBECBB8915041EE4B3DD8A823544103BFBECBB8915041EB6A1720AA2354414B14C9C6B8915041CD469A4AAA235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100996 - 371908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000710000000AD7A3103D9350415C8FC2A5292254410AD7A3503F935041C3F5281C2A225441A4703D3A3F935041C3F5283C2B225441CDCCCC7C3C935041D7A370CD2A225441666666063C935041000000102B2254417B14AE973E9350411F85EBF12D225441A4703D1A3E93504185EB51282F22544152B81E553E93504114AE47812F225441333333D33B935041AE47E10A32225441F6285C3F3893504185EB51C82E22544148E17A2436935041C3F5281C30225441A4703D1A3593504100000010312254415C8FC2D533935041D7A3704D322254418FC2F5C831935041333333C335225441F6285C9F2F9350419A9999593A225441A4703D1A2F935041333333633B225441CDCCCC9C2E935041000000103D2254411F85EBC12E935041333333633E225441C3F528BC2F935041CDCCCC5C3F2254410AD7A3403293504114AE47B13F22544152B81E553993504100000000412254415C8FC2B53E935041B81E852B422254419A9999E943935041A4703DAA43225441F6285CDF48935041AE47E15A4522544114AE47014D9350410AD7A30047225441B81E85BB50935041295C8FE248225441AE47E18A51935041B81E854B49225441F6285C4F579350419A9999994C225441D7A370DD5A93504152B81E754E225441666666065E93504148E17AC44F22544185EB51C86093504166666676502254413D0AD7D362935041666666A650225441E17A145E65935041EC51B87E50225441F6285C2F68935041B81E85DB4F225441AE47E1CA6A935041D7A370DD4E2254417B14AE077393504114AE47314B225441713D0A3777935041E17A142E4922544114AE47A179935041713D0AF7472254411F85EB917B935041A4703DCA46225441B81E85DB7D935041E17A14EE442254415C8FC2E57F9350415C8FC2D542225441295C8FC28193504152B81E8540225441000000B08293504152B81E053F225441A4703DAA8193504114AE47213F225441B81E858B809350411F85EB413F2254411F85EBC17E93504185EB51983E22544152B81E95789350411F85EB813722544148E17A746F935041AE47E15A2F225441D7A370AD699350410AD7A3D029225441B81E85EB6793504148E17AD4282254418FC2F5E8649350413333334329225441A4703D9A5D935041B81E85BB28225441F6285C2F58935041295C8FA22722544185EB51984E935041295C8F3225225441000000D0499350410AD7A310232254411F85EB614793504114AE47012222544114AE4701459350417B14AEF7202254415C8FC2C542935041EC51B8EE1F225441CDCCCC2C3E93504152B81E451D225441000000B037935041AE47E1FA18225441CDCCCCDC35935041000000501B225441295C8F623593504148E17AA41C2254418FC2F558359350419A9999091E225441F6285C9F359350410AD7A3701F225441F6285C6F349350413D0AD7831F22544100000070349350415C8FC2851C225441000000C034935041666666961B225441CDCCCC4C35935041D7A370AD1A225441295C8F9237935041B81E858B17225441713D0AD7369350415C8FC2A517225441B81E851B36935041EC51B89E17225441AE47E1AA35935041000000801722544185EB51C82A9350418FC2F59811225441AE47E19A1D9350413333337309225441B81E858B1A935041D7A3707D0F225441CDCCCC7C159350415C8FC2350E22544148E17AA414935041CDCCCC3C11225441A4703D2A1493504152B81E651422544185EB51E8139350411F85EB311822544100000020159350415C8FC2A51F225441E17A147E11935041295C8F1220225441295C8F5216935041333333432A225441713D0A1719935041713D0A4730225441E17A14BE1B935041C3F5284C302254410AD7A3B021935041000000903222544100000090269350419A9999A9332254410000003028935041F6285C5F3422544185EB5188279350411F85EBE1362254410AD7A3202793504185EB516838225441666666E62E935041E17A141E3A2254411F85EB013193504114AE47813522544148E17A24339350411F85EBB131225441B81E854B34935041EC51B8BE30225441F6285C1F34935041EC51B89E2F2254410AD7A3B033935041000000302F225441B81E85CB32935041713D0A972F225441B81E850B32935041C3F5285C2F2254418FC2F5C8319350411F85EBB12E225441E17A14EE319350419A9999F92D2254410AD7A390329350415C8FC2E52B2254418FC2F548339350415C8FC2E528225441333333F3339350415C8FC2E52522544148E17A043593504148E17A14242254411F85EBE13593504133333323212254410AD7A3F035935041D7A3702D1F225441A4703DBA37935041D7A3702D1F2254418FC2F5C837935041000000F020225441A4703D5A3793504114AE470122225441B81E85CB38935041EC51B89E23225441A4703DFA39935041C3F528FC22225441E17A142E3D9350419A99993927225441F6285CFF3B93504114AE4701282254410AD7A3103D9350415C8FC2A529225441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000037C4A4A814935041EF8DA1C026225441132041A31493504104E242B526225441BEA900A014935041979C66AE26225441D26C839614935041CD92619A262254417EE59C8F149350416BACD28B26225441086319771493504186091B58262254419934686E14935041DD80C4452622544169DDAC491493504155FC45F8252254411F3FE71B119350415B272C68202254412075C151089350413098E20821225441844F0E5703935041C6C5B0922122544189DD8AFE0193504178075DDC23225441638C5DAE0C935041D3972FA224225441638C5DAE0C93504171CB245826225441A3C9896C13935041504475D32622544137C4A4A814935041EF8DA1C026225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101064 - 3091518
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002100000066666606D1925041295C8F721C225441D7A3705DD6925041333333831C22544114AE4771DB9250411F85EB911C225441F6285C2FE2925041D7A3707D1C2254417B14AED7E79250418FC2F5481C22544148E17A44F692504114AE47111C2254415C8FC295F8925041F6285CBF0C225441E17A14CE0293504148E17AB410225441A4703D7A03935041666666060D225441CDCCCC0C05935041AE47E16A04225441F6285C3FFE9250411F85EB1103225441000000C0FB9250418FC2F5C80222544185EB51C8F992504114AE47D102225441C3F528FCE6925041CDCCCC6C032254415C8FC2F5DD925041EC51B8CE04225441B81E850BDA92504152B81E6505225441295C8FE2D59250416666663606225441666666D6D192504100000040072254411F85EB21CD925041E17A14AE08225441713D0A47CB925041C3F5282C0922544185EB51A8C892504148E17AE409225441EC51B89EC4925041EC51B8EE0A225441000000F0C1925041333333930B2254418FC2F588C29250413333330311225441A4703DDAC49250418FC2F5E810225441D7A3703DC69250417B14AEB71722544148E17A74BE925041666666A618225441AE47E1AABE925041666666F61922544114AE4771BE9250413D0AD7431C2254418FC2F568C192504114AE47411C22544148E17AF4C6925041D7A3700D1C22544114AE4771CD925041C3F5284C1C22544166666606D1925041295C8F721C225441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F5135F77159350412A07934E0E2254414E41185D15935041D086613D0E225441ED8131AE10935041C6A19ADA0C2254412573DA9910935041B46566CE0C225441A64F43C1099350410FD91A1C0D225441610DBE9F0993504155875D650822544101327DCE099350418D114D5D04225441CB2D902B05935041E3AD4AD2032254418739FBA30393504113E5EA210C225441C626031303935041C831463B0F22544102C4F22D0B93504190E6BC9112225441D6AC50D111935041334CF11114225441BA6BC53B1493504142A731F113225441F5135F77159350412A07934E0E225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101576 - 186535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B0000000AD7A320578850419A9999092F215441D7A370AD598850411F85EBD12E215441F6285C3F5D885041C3F528FC2F2154419A9999695E885041E17A14AE3221544185EB5118598850418FC2F5F83221544185EB51A858885041D7A3704D3521544152B81E555A8850410000004036215441F6285C0F5B885041CDCCCC5C38215441C3F528BC5A88504114AE479139215441E17A14BE5D885041666666263A2154418FC2F5586288504148E17A043921544152B81EC565885041F6285CFF37215441CDCCCC9C68885041295C8F523621544148E17AD4688850418FC2F58832215441EC51B83E67885041D7A3709D2F2154411F85EB01628850411F85EB112C2154417B14AE27628850417B14AE672A215441EC51B8AE65885041A4703DBA2C215441AE47E1FA678850413D0AD7432E215441D7A370CD69885041F6285C8F2F215441B81E858B6C88504148E17AE42E215441666666D66C8850411F85EBA12C215441666666F66B885041D7A370BD2A2154411F85EBA169885041E17A14AE27215441E17A14CE6788504148E17A4425215441AE47E12A6388504114AE47F11F21544114AE47D160885041AE47E12A1C215441C3F5289C5D885041EC51B84E1821544152B81E355C885041AE47E10A162154410AD7A34056885041295C8F22132154419A99998952885041295C8FD2112154417B14AE674F88504100000010132154410AD7A3D04A885041F6285C3F152154413D0AD7F346885041C3F5287C16215441713D0A4745885041666666F618215441A4703D0A44885041EC51B80E25215441713D0AD74488504185EB51F82721544166666656488850413333334328215441333333034A8850415C8FC2C528215441D7A3705D4D885041CDCCCCEC2C21544148E17A3450885041C3F528AC2E215441EC51B8FE53885041713D0A672F2154410AD7A320578850419A9999092F215441
+</a>
+
+<b>
+0106000000010000000103000000010000003200000052B81E555A88504100000040362154412BB6EA785A8850415437F2A736215441F6285C0F5B885041CDCCCC5C3821544165DF610B5B885041D84B8C6B38215441F03B5F645B885041C8D3EE7D39215441C74A2B1A6088504133A620F438215441D942108B64885041731DB656372154415B9BA31967885041DA3EC1AF31215441C77F031D668850415E9E0EDC2E215441193822E265885041BA2DD1B12E2154414294B1046588504187FA9D1E2E2154414CEA7CFC618850410677B34D2C215441A5A43F046288504178017F132C2154411F85EB01628850411F85EB112C2154417B14AE27628850417B14AE672A21544139F68B3B62885041AE9DC2742A2154411C01644162885041194CEE482A2154418B84BCD46688504130D24F612D2154417268918B65885041B0269E99282154412C8CB87B62885041CE85A43124215441298274865E885041CB3438151B215441C3F5289C5D885041EC51B84E1821544113627D635B885041B9D75CC016215441ECB75EE856885041630F7474132154419A99998952885041295C8FD211215441E30DB873468850413416AA3917215441DAE7353046885041A630849D17215441EC164E2B468850415CACC5A41721544163D0DCA745885041A77730671821544122E6FE954588504101C49D81182154412D72F8264588504174C5D62F1A215441A4703D0A44885041EC51B80E25215441428F578E448850416169A7EF26215441D8263C3F45885041B3B00801282154411C8E95DB46885041D9E984232821544166666656488850413333334328215441333333034A8850415C8FC2C528215441664701854C8850417FB2B7E02B215441D7A3705D4D885041CDCCCCEC2C21544148E17A3450885041C3F528AC2E2154412933120B53885041333A1C382F2154412C02CEA954885041C071A1432F21544143BACCF954885041FABAC8492F2154410AD7A320578850419A9999092F215441D7A370AD598850411F85EBD12E215441F6285C3F5D885041C3F528FC2F2154419A9999695E885041E17A14AE32215441B08B434659885041A3C96EF63221544185EB51A858885041D7A3704D3521544152B81E555A8850410000004036215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101576 - 316352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B0000000AD7A320578850419A9999092F215441D7A370AD598850411F85EBD12E215441F6285C3F5D885041C3F528FC2F2154419A9999695E885041E17A14AE3221544185EB5118598850418FC2F5F83221544185EB51A858885041D7A3704D3521544152B81E555A8850410000004036215441F6285C0F5B885041CDCCCC5C38215441C3F528BC5A88504114AE479139215441E17A14BE5D885041666666263A2154418FC2F5586288504148E17A043921544152B81EC565885041F6285CFF37215441CDCCCC9C68885041295C8F523621544148E17AD4688850418FC2F58832215441EC51B83E67885041D7A3709D2F2154411F85EB01628850411F85EB112C2154417B14AE27628850417B14AE672A215441EC51B8AE65885041A4703DBA2C215441AE47E1FA678850413D0AD7432E215441D7A370CD69885041F6285C8F2F215441B81E858B6C88504148E17AE42E215441666666D66C8850411F85EBA12C215441666666F66B885041D7A370BD2A2154411F85EBA169885041E17A14AE27215441E17A14CE6788504148E17A4425215441AE47E12A6388504114AE47F11F21544114AE47D160885041AE47E12A1C215441C3F5289C5D885041EC51B84E1821544152B81E355C885041AE47E10A162154410AD7A34056885041295C8F22132154419A99998952885041295C8FD2112154417B14AE674F88504100000010132154410AD7A3D04A885041F6285C3F152154413D0AD7F346885041C3F5287C16215441713D0A4745885041666666F618215441A4703D0A44885041EC51B80E25215441713D0AD74488504185EB51F82721544166666656488850413333334328215441333333034A8850415C8FC2C528215441D7A3705D4D885041CDCCCCEC2C21544148E17A3450885041C3F528AC2E215441EC51B8FE53885041713D0A672F2154410AD7A320578850419A9999092F215441
+</a>
+
+<b>
+0106000000010000000103000000010000003200000052B81E555A88504100000040362154412BB6EA785A8850415437F2A736215441F6285C0F5B885041CDCCCC5C3821544165DF610B5B885041D84B8C6B38215441F03B5F645B885041C8D3EE7D39215441C74A2B1A6088504133A620F438215441D942108B64885041731DB656372154415B9BA31967885041DA3EC1AF31215441C77F031D668850415E9E0EDC2E215441193822E265885041BA2DD1B12E2154414294B1046588504187FA9D1E2E2154414CEA7CFC618850410677B34D2C215441A5A43F046288504178017F132C2154411F85EB01628850411F85EB112C2154417B14AE27628850417B14AE672A21544139F68B3B62885041AE9DC2742A2154411C01644162885041194CEE482A2154418B84BCD46688504130D24F612D2154417268918B65885041B0269E99282154412C8CB87B62885041CE85A43124215441298274865E885041CB3438151B215441C3F5289C5D885041EC51B84E1821544113627D635B885041B9D75CC016215441ECB75EE856885041630F7474132154419A99998952885041295C8FD211215441E30DB873468850413416AA3917215441DAE7353046885041A630849D17215441EC164E2B468850415CACC5A41721544163D0DCA745885041A77730671821544122E6FE954588504101C49D81182154412D72F8264588504174C5D62F1A215441A4703D0A44885041EC51B80E25215441428F578E448850416169A7EF26215441D8263C3F45885041B3B00801282154411C8E95DB46885041D9E984232821544166666656488850413333334328215441333333034A8850415C8FC2C528215441664701854C8850417FB2B7E02B215441D7A3705D4D885041CDCCCCEC2C21544148E17A3450885041C3F528AC2E2154412933120B53885041333A1C382F2154412C02CEA954885041C071A1432F21544143BACCF954885041FABAC8492F2154410AD7A320578850419A9999092F215441D7A370AD598850411F85EBD12E215441F6285C3F5D885041C3F528FC2F2154419A9999695E885041E17A14AE32215441B08B434659885041A3C96EF63221544185EB51A858885041D7A3704D3521544152B81E555A8850410000004036215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101765 - 3346265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000713D0A6707925041C3F5284CCB1F544185EB5138079250410AD7A3E0CC1F54415C8FC28506925041666666F6CF1F54419A9999C9059250410AD7A360D31F544185EB51E804925041EC51B85ED81F54415C8FC23504925041295C8FD2DB1F54413333338303925041B81E856BDF1F5441CDCCCCEC0292504152B81E65E21F54417B14AE970292504185EB5128E41F5441EC51B88E0292504100000040E61F544166666656029250413D0AD713E91F5441E17A147E01925041D7A3706DEB1F5441C3F5289C00925041CDCCCCACEC1F544114AE4711FF915041EC51B82EEE1F54417B14AE57FD915041C3F528CCEF1F5441A4703DBAFB915041EC51B82EF21F5441333333B3FA9150413D0AD7D3F41F54415C8FC225FA915041EC51B80EF81F5441AE47E1DAF991504148E17A24FB1F54419A999909FA915041D7A3705DFF1F5441E17A145EFA9150411F85EB9101205441B81E854BFA91504152B81E6504205441CDCCCC2CFB915041E17A14FE03205441AE47E1CAFC915041EC51B87E01205441AE47E11AFF91504185EB51480020544185EB516800925041E17A141E01205441295C8F32019250419A99990903205441CDCCCC0C019250418FC2F5880520544152B81E95FF91504185EB51F80A2054413D0AD7E3FD91504185EB51F80C20544114AE47C1FD9150419A9999B90F20544114AE4791FD9150410AD7A33012205441CDCCCC5CFD915041AE47E1EA13205441D7A3709DFE91504100000060122054415C8FC2F503925041C3F528CC0A205441713D0A37089250413D0AD7230020544185EB51780A92504148E17A2400205441EC51B84E0D925041D7A370DD00205441E17A147E11925041AE47E17AF61F5441B81E855B12925041F6285CCFF31F544152B81E651592504148E17A54EA1F5441295C8F521C925041E17A141ED41F5441CDCCCCEC0F925041B81E85ABCD1F544148E17A7407925041713D0A07CA1F5441713D0A6707925041C3F5284CCB1F5441
+</a>
+
+<b>
+01060000000100000001030000000100000033000000713D0A6707925041C3F5284CCB1F544185EB5138079250410AD7A3E0CC1F54415C8FC28506925041666666F6CF1F54419A9999C9059250410AD7A360D31F544185EB51E804925041EC51B85ED81F54415C8FC23504925041295C8FD2DB1F54413333338303925041B81E856BDF1F5441CDCCCCEC0292504152B81E65E21F54417B14AE970292504185EB5128E41F5441EC51B88E0292504100000040E61F544166666656029250413D0AD713E91F5441E17A147E01925041D7A3706DEB1F5441C3F5289C00925041CDCCCCACEC1F544114AE4711FF915041EC51B82EEE1F54417B14AE57FD915041C3F528CCEF1F5441A4703DBAFB915041EC51B82EF21F5441333333B3FA9150413D0AD7D3F41F54415C8FC225FA915041EC51B80EF81F5441AE47E1DAF991504148E17A24FB1F54419A999909FA915041D7A3705DFF1F5441E17A145EFA9150411F85EB9101205441B81E854BFA91504152B81E6504205441E7FBA939FB915041105839CC0220544148E17A64FC9150418D976ED2FF1F5441AE47E11AFF91504185EB51480020544185EB516800925041E17A141E01205441AC1C5ABC01925041A69BC4C803205441333333A3019250418FC2F58006205441C904974600925041EF51F5320A2054413BDF4FDDFE915041448B6C1F0D20544114AE47C1FD9150419A9999B90F205441819543F3FC9150419CC4200812205441D7A3709DFE9150410000006012205441ED43E32FFF9150419849629011205441DFD051D400925041BA99583C0F2054414194BE1602925041823440730D205441D933EC010392504175E4D7250C20544121A8F7F303925041BA89B3CE0A20544171A43C060592504152A2710C082054418CDF3D3C06925041B0D5E5D504205441713D0A37089250413D0AD7230020544185EB51780A92504148E17A2400205441DD4F894A0D925041FC658CCC00205441023DF1CA0E92504198842164FC1F5441FEC85FA91092504173DD0554F61F54417CACAB6A1292504139DB2EB1F01F5441E6C05C0716925041FFF5B017E51F5441DD2406591B925041FCA9F102D41F54414E6210981092504177BE9FBACE1F544148E17A7407925041713D0A07CA1F5441713D0A6707925041C3F5284CCB1F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102338 - 258953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000D7A370FDD35351411F85EB312091544133333343DE535141713D0AD70E9154418FC2F598D75351410AD7A32008915441E17A140ED35351413D0AD7B30F915441295C8F82CA53514152B81EF51D915441CDCCCC6CC05351417B14AEC72E915441E17A14CEC153514148E17AE42F9154413D0AD7C3C853514185EB512833915441D7A370FDD35351411F85EB3120915441
+</a>
+
+<b>
+010600000001000000010300000001000000130000008ADF3C0FD35351418AC7E8B10F9154416CE829EDD05351413F54E24013915441295C8F82CA53514152B81EF51D9154411CDEBF5CCA535141F3CD30341E915441ACF4E48CC05351411DF224922E915441B3B2C3B7C15351418E777DD22F915441207736C8C85351412DDDEE2033915441D7A370FDD35351411F85EB3120915441A11DC50ADC5351418335CC96129154415FB18C4BD5535141090688F70B9154419DFC90E8D4535141361C989C0C9154414792C1E2D45351410C8048A60C91544180E368B6D4535141290D3CF00C91544156C4E862D45351414A877A7B0D91544197BA6E34D45351416C81FBC80D915441397D9CA4D3535141B202D1B80E915441F1B9D916D35351413EE736A50F9154413EE10215D35351414E1448A80F9154418ADF3C0FD35351418AC7E8B10F915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>236175 - 5255601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000C3F528DCDAF9504185EB51C8422E54411F85EB81E5F95041713D0A27452E544100000010E7F95041D7A370ED432E544100000070E6F95041CDCCCCAC412E5441F6285C4FE3F95041CDCCCC6C402E5441E17A148EDBF95041C3F528AC3C2E5441CDCCCCACD6F95041B81E850B3A2E5441C3F528ECD1F95041AE47E14A362E5441B81E850BCEF95041A4703D2A312E5441B81E85ABCCF950419A9999A92D2E5441B81E854BCCF9504185EB51E8272E544100000070CDF950417B14AEC7242E5441E17A14AED0F95041666666E6102E5441D7A370ADD1F95041666666260F2E544185EB5108D1F95041D7A370AD062E544148E17A24CEF95041713D0A37072E544114AE4781C7F95041713D0A87082E5441C3F528ACBFF95041000000E0092E5441713D0AE7BCF95041295C8F320A2E544152B81EF5BBF9504114AE47C10B2E5441F6285CCFB6F950417B14AEB7242E544114AE47D1BAF9504133333313222E544133333363BDF95041B81E85FB2A2E544166666686C0F95041B81E85EB312E5441AE47E13AC9F95041C3F528FC3E2E5441C3F528DCDAF9504185EB51C8422E5441
+</a>
+
+<b>
+010600000001000000010300000001000000290000004A2C65D0F5F950416F6BA66C7A2E544133333353F9F9504100000060742E5441000000A0F4F9504148E17AC4712E5441713D0A37F7F9504133333333702E5441B81E859BFCF95041333333A36A2E5441B81E853BFEF9504185EB5128682E5441295C8FA2FDF950417B14AE97622E544133333393FEF95041295C8F52612E54415C8FC2B5F7F9504100000030522E5441A4703D9AF6F9504185EB5198512E544152B81E75F5F9504185EB51C8502E544100000080F3F95041C3F5280C4F2E5441EC51B83EF2F95041295C8F924D2E54417B14AE57F1F95041B81E852B4C2E54411F85EB61F0F95041713D0AD74A2E54418FC2F5B8EDF950415C8FC2C5482E54419A9999A9E9F950413D0AD713462E5441720F2EB1E4F95041BB389AF8442E54419C244675E0F95041542E5007442E5441874A7185DAF95041C84B0CC1422E5441D21EAF13CFF950412EB86D42402E544141B5D519C9F95041425090CA3E2E5441775A2023C6F9504148F0D8573A2E5441C682255EC1F95041375F532F332E5441F2B9BF6EBDF9504189750E152B2E544114AE47D1BAF9504133333313222E5441F6285CCFB6F950417B14AEB7242E544123972A0EB6F9504149EE0F89282E544100000070B3F95041A4703D6A372E54417B14AE57B3F950415C8FC295422E54417B14AEF7B2F95041713D0AC74C2E544133333393B1F95041F6285C1F542E5441F6285C5FB5F95041B81E85AB572E5441A617B057B8F950415989B4B75A2E5441E6CE6065BAF950416758E33B5C2E5441713D0A27BDF95041333333E35D2E5441E17A14CEC6F9504114AE4771452E5441333333C3D2F9504152B81EB5582E54417B14AE57D6F950418FC2F5985F2E54417AE9A259DEF950411F4201D86D2E54414A2C65D0F5F950416F6BA66C7A2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103616 - 2977638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000333333F3E15D5141F6285C5F2B9954419A9999C9D35D51419A9999192D995441295C8F42C95D5141295C8F622E9954415C8FC225CF5D5141EC51B8FE49995441AE47E1CAD25D5141666666365B995441B81E858BD85D51418FC2F51859995441C3F528DCE05D51418FC2F5085699544133333353E55D5141E17A146E54995441CDCCCC8CE65D5141000000E05399544100000000E95D51419A9999795299544148E17A14EA5D514114AE47815199544114AE4771EE5D5141F6285C7F4E995441000000B0F25D51419A9999794B995441B81E854BF15D5141CDCCCCEC44995441E17A149EEB5D51411F85EB312A995441333333F3E15D5141F6285C5F2B995441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C7718AD9E65D5141DFEA25B453995441CDCCCC8CE65D5141000000E05399544133333353E55D5141E17A146E54995441C3F528DCE05D51418FC2F50856995441A0E1D25CDC5D51415C4C02B15799544172B4CAD0D25D5141117E59525B9954417CB6E4C7D35D5141E962D3E25F995441CAB730E8E05D514170C9C7E75C99544168480CABE05D5141F40E756F5B995441A731A8B2EB5D514199B196395999544121916217EA5D5141F03F009E519954412743C40BE95D51416624086F5299544100000000E95D51419A9999795299544145564F30E75D514104D6908253995441C7718AD9E65D5141DFEA25B453995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103616 - 3672661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000333333F3E15D5141F6285C5F2B9954419A9999C9D35D51419A9999192D995441295C8F42C95D5141295C8F622E9954415C8FC225CF5D5141EC51B8FE49995441AE47E1CAD25D5141666666365B995441B81E858BD85D51418FC2F51859995441C3F528DCE05D51418FC2F5085699544133333353E55D5141E17A146E54995441CDCCCC8CE65D5141000000E05399544100000000E95D51419A9999795299544148E17A14EA5D514114AE47815199544114AE4771EE5D5141F6285C7F4E995441000000B0F25D51419A9999794B995441B81E854BF15D5141CDCCCCEC44995441E17A149EEB5D51411F85EB312A995441333333F3E15D5141F6285C5F2B995441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C7718AD9E65D5141DFEA25B453995441CDCCCC8CE65D5141000000E05399544133333353E55D5141E17A146E54995441C3F528DCE05D51418FC2F50856995441A0E1D25CDC5D51415C4C02B15799544172B4CAD0D25D5141117E59525B9954417CB6E4C7D35D5141E962D3E25F995441CAB730E8E05D514170C9C7E75C99544168480CABE05D5141F40E756F5B995441A731A8B2EB5D514199B196395999544121916217EA5D5141F03F009E519954412743C40BE95D51416624086F5299544100000000E95D51419A9999795299544145564F30E75D514104D6908253995441C7718AD9E65D5141DFEA25B453995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103869 - 233685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A274F615141C3F5282C15975441D7A3708D5061514114AE47C1169754411F85EB2158615141AE47E15A1E975441666666265D6151413333339322975441295C8F6262615141713D0A9726975441B81E85AB6861514114AE47B12A975441333333F36D615141333333D32D97544185EB51886F6151419A9999992D975441F6285C0F716151417B14AEB72B9754411F85EB21746151413D0AD74324975441666666E65761514166666656109754417B14AE07506151417B14AED7079754410AD7A3004C615141C3F5289C11975441713D0A274F615141C3F5282C15975441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000F6285C0F716151417B14AEB72B975441DE948BEF71615141A65CE8972997544162E41B1974615141BABDA6492497544184F30A516D615141AFCE52741F9754416CFA6033686151414477FDDA1B97544170172F5A66615141BFB8D6891A975441B19504EC606151415C399CB4169754410E3C29E05A615141F700DD7412975441346826F2576151413A4BDC5F10975441B97CFBEE57615141A02E755C10975441666666E65761514166666656109754418DD60F8555615141F5C4ABC40D9754412517ADBB506151418F2A54A008975441BDC8C045506151419DC0AE1A08975441C8065630506151412C94900308975441CD18870F50615141DBA426E0079754412C30BD024C615141D8AC889E119754415DB81EBD4E61514128995EB4149754417E22203C4F6151414582FE43159754419C9E524650615141F05FE4701697544155A55B6651615141A434C59A17975441235F1B025561514173E3F4381B975441E0072F5555615141A9A9408C1B9754414783A79E5861514141E2C9C31E9754413182213A5D615141F32955A222975441C3F030855F615141319794642497544148375BFF606151418A8A9D8625975441403CD662616151419E8DE9D2259754416C66448C69615141AA029E362B975441333333F36D615141333333D32D975441CA9CB42A6E61514184E74ECB2D9754416F3DD59B6F61514196568D812D975441F6285C0F716151417B14AEB72B975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103869 - 298298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A274F615141C3F5282C15975441D7A3708D5061514114AE47C1169754411F85EB2158615141AE47E15A1E975441666666265D6151413333339322975441295C8F6262615141713D0A9726975441B81E85AB6861514114AE47B12A975441333333F36D615141333333D32D97544185EB51886F6151419A9999992D975441F6285C0F716151417B14AEB72B9754411F85EB21746151413D0AD74324975441666666E65761514166666656109754417B14AE07506151417B14AED7079754410AD7A3004C615141C3F5289C11975441713D0A274F615141C3F5282C15975441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000F6285C0F716151417B14AEB72B975441DE948BEF71615141A65CE8972997544162E41B1974615141BABDA6492497544184F30A516D615141AFCE52741F9754416CFA6033686151414477FDDA1B97544170172F5A66615141BFB8D6891A975441B19504EC606151415C399CB4169754410E3C29E05A615141F700DD7412975441346826F2576151413A4BDC5F10975441B97CFBEE57615141A02E755C10975441666666E65761514166666656109754418DD60F8555615141F5C4ABC40D9754412517ADBB506151418F2A54A008975441BDC8C045506151419DC0AE1A08975441C8065630506151412C94900308975441CD18870F50615141DBA426E0079754412C30BD024C615141D8AC889E119754415DB81EBD4E61514128995EB4149754417E22203C4F6151414582FE43159754419C9E524650615141F05FE4701697544155A55B6651615141A434C59A17975441235F1B025561514173E3F4381B975441E0072F5555615141A9A9408C1B9754414783A79E5861514141E2C9C31E9754413182213A5D615141F32955A222975441C3F030855F615141319794642497544148375BFF606151418A8A9D8625975441403CD662616151419E8DE9D2259754416C66448C69615141AA029E362B975441333333F36D615141333333D32D975441CA9CB42A6E61514184E74ECB2D9754416F3DD59B6F61514196568D812D975441F6285C0F716151417B14AEB72B975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103876 - 399669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000700000052B81E951B645141A4703DCAA298544152B81E154F6451415C8FC2F5BB9854413D0AD7F34F6451410AD7A390BB9854413D0AD7F356645141713D0AB7A19854418FC2F5A8196451410000007086985441AE47E11A136451415C8FC2A59E98544152B81E951B645141A4703DCAA2985441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000003F87AB7214645141E3B004B099985441AE47E11A136451415C8FC2A59E98544152B81E154F6451415C8FC2F5BB9854413D0AD7F34F6451410AD7A390BB98544100B76FFD54645141E5EFCBF2A89854414BCEC73618645141D2DC1CE38C985441DDFCB0921664514169ED471C9398544129935DE65264514119504418B0985441DB9F8539516451412281EC06B69854416F8623B0146451418AB289DB989854413F87AB7214645141E3B004B099985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 1277036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A9754417B14AEA77F61514148E17A8410975441666666E67F61514114AE47311097544185EB519875615141F6285CCF089754413D0AD74382615141EC51B88EF1965441EC51B8AE7861514185EB51F8EB965441B81E851B89615141333333D3CD9654411F85EB4188615141C3F5287CCD965441C3F5289C7361514148E17A54C8965441C3F5289C6F61514100000030C79654413D0AD733686151418FC2F598C49654419A9999195761514185EB51C8BD96544152B81E5550615141E17A14AECE9654419A99995954615141F6285C0FD1965441F6285CCF5761514133333333C7965441AE47E10A5A615141E17A140EC99654419A9999395C615141B81E85ABCA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A999919049754418FC2F5B85A615141AE47E19A03975441AE47E1BA59615141CDCCCC3C02975441C3F5281C59615141333333C3FE965441E17A14DE576151418FC2F548FB9654410AD7A32056615141E17A140EF89654411F85EBA15561514114AE4751F69654411F85EB615561514185EB5158F296544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000816A3E9C5A615141A97E6568C9965441836B4A785C615141BE836BCECA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A999919049754418FC2F5B85A615141AE47E19A03975441AE47E1BA59615141CDCCCC3C02975441C3F5281C59615141333333C3FE965441E17A14DE576151418FC2F548FB9654410AD7A32056615141E17A140EF89654411F85EBA15561514114AE4751F69654411F85EB615561514185EB5158F2965441B7DD600056615141F5A3CF93E9965441F2E1B052546151419ED480B5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A9754417B14AEA77F61514148E17A8410975441666666E67F61514114AE47311097544185EB519875615141F6285CCF089754413D0AD74382615141EC51B88EF1965441EC51B8AE7861514185EB51F8EB965441B81E851B89615141333333D3CD9654411F85EB4188615141C3F5287CCD965441C3F5289C7361514148E17A54C8965441C3F5289C6F61514100000030C79654413D0AD733686151418FC2F598C496544158445C7C61615141273EC8EBC19654419EF7BE2F5E6151416E21FB95C0965441816A3E9C5A615141A97E6568C9965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 3011675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A9754417B14AEA77F61514148E17A8410975441666666E67F61514114AE47311097544185EB519875615141F6285CCF089754413D0AD74382615141EC51B88EF1965441EC51B8AE7861514185EB51F8EB965441B81E851B89615141333333D3CD9654411F85EB4188615141C3F5287CCD965441C3F5289C7361514148E17A54C8965441C3F5289C6F61514100000030C79654413D0AD733686151418FC2F598C49654419A9999195761514185EB51C8BD96544152B81E5550615141E17A14AECE9654419A99995954615141F6285C0FD1965441F6285CCF5761514133333333C7965441AE47E10A5A615141E17A140EC99654419A9999395C615141B81E85ABCA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A999919049754418FC2F5B85A615141AE47E19A03975441AE47E1BA59615141CDCCCC3C02975441C3F5281C59615141333333C3FE965441E17A14DE576151418FC2F548FB9654410AD7A32056615141E17A140EF89654411F85EBA15561514114AE4751F69654411F85EB615561514185EB5158F296544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B7DD600056615141F5A3CF93E996544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED965441F2E1B052546151419ED480B5ED965441B7DD600056615141F5A3CF93E9965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 3295548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A9754417B14AEA77F61514148E17A8410975441666666E67F61514114AE47311097544185EB519875615141F6285CCF089754413D0AD74382615141EC51B88EF1965441EC51B8AE7861514185EB51F8EB965441B81E851B89615141333333D3CD9654411F85EB4188615141C3F5287CCD965441C3F5289C7361514148E17A54C8965441C3F5289C6F61514100000030C79654413D0AD733686151418FC2F598C49654419A9999195761514185EB51C8BD96544152B81E5550615141E17A14AECE9654419A99995954615141F6285C0FD1965441F6285CCF5761514133333333C7965441AE47E10A5A615141E17A140EC99654419A9999395C615141B81E85ABCA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A999919049754418FC2F5B85A615141AE47E19A03975441AE47E1BA59615141CDCCCC3C02975441C3F5281C59615141333333C3FE965441E17A14DE576151418FC2F548FB9654410AD7A32056615141E17A140EF89654411F85EBA15561514114AE4751F69654411F85EB615561514185EB5158F296544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B7DD600056615141F5A3CF93E996544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED965441F2E1B052546151419ED480B5ED965441B7DD600056615141F5A3CF93E9965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 3325908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A9754417B14AEA77F61514148E17A8410975441666666E67F61514114AE47311097544185EB519875615141F6285CCF089754413D0AD74382615141EC51B88EF1965441EC51B8AE7861514185EB51F8EB965441B81E851B89615141333333D3CD9654411F85EB4188615141C3F5287CCD965441C3F5289C7361514148E17A54C8965441C3F5289C6F61514100000030C79654413D0AD733686151418FC2F598C49654419A9999195761514185EB51C8BD96544152B81E5550615141E17A14AECE9654419A99995954615141F6285C0FD1965441F6285CCF5761514133333333C7965441AE47E10A5A615141E17A140EC99654419A9999395C615141B81E85ABCA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A999919049754418FC2F5B85A615141AE47E19A03975441AE47E1BA59615141CDCCCC3C02975441C3F5281C59615141333333C3FE965441E17A14DE576151418FC2F548FB9654410AD7A32056615141E17A140EF89654411F85EBA15561514114AE4751F69654411F85EB615561514185EB5158F296544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000816A3E9C5A615141A97E6568C9965441836B4A785C615141BE836BCECA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A999919049754418FC2F5B85A615141AE47E19A03975441AE47E1BA59615141CDCCCC3C02975441C3F5281C59615141333333C3FE965441E17A14DE576151418FC2F548FB9654410AD7A32056615141E17A140EF89654411F85EBA15561514114AE4751F69654411F85EB615561514185EB5158F2965441B7DD600056615141F5A3CF93E9965441F2E1B052546151419ED480B5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A9754417B14AEA77F61514148E17A8410975441666666E67F61514114AE47311097544185EB519875615141F6285CCF089754413D0AD74382615141EC51B88EF1965441EC51B8AE7861514185EB51F8EB965441B81E851B89615141333333D3CD9654411F85EB4188615141C3F5287CCD965441C3F5289C7361514148E17A54C8965441C3F5289C6F61514100000030C79654413D0AD733686151418FC2F598C496544158445C7C61615141273EC8EBC19654419EF7BE2F5E6151416E21FB95C0965441816A3E9C5A615141A97E6568C9965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103978 - 3114130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000001F85EB919A6151415C8FC2B5739A544185EB5108976151413D0AD793709A5441EC51B87E78615141CDCCCCBCD09A5441333333837F615141666666F6D39A5441E17A144E8B6151411F85EB31D99A5441000000F0A76151417B14AE077F9A54411F85EB919A6151415C8FC2B5739A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001394D9779F615141AE1EA0DB779A5441EFA5E91794615141D9D91AFA9A9A54412F49DB1C88615141D49EAAABC09A54415B2B4B6D81615141468CDCCFD49A544120FEC5488B61514167BD902FD99A54415E20B3D88B6151410783667DD79A5441B35741B690615141A463172BC89A5441A3D219C09C6151411A613942A29A544199134829A5615141567CC3C5879A54415A8B3CF1A76151416266BA087F9A54411394D9779F615141AE1EA0DB779A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105530 - 2960104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000034000000333333933BA250419A9999F9F3395441295C8FF237A2504166666606F33954411F85EB9132A2504152B81E95F13954415C8FC20530A25041AE47E10AF1395441000000402EA250417B14AEB7F0395441B81E851B2DA25041EC51B88EF0395441713D0AF72BA25041CDCCCC7CF039544114AE47A12AA25041AE47E17AF0395441E17A14BE29A250410AD7A390F0395441713D0AF728A25041D7A370ADF0395441D7A3708D27A250410AD7A300F1395441E17A144E25A25041295C8FB2F139544152B81E1523A25041D7A3708DF2395441333333C321A2504148E17A04F33954419A9999B91FA2504114AE4751F33954413D0AD7031DA2504166666686F3395441C3F5280C1BA250410AD7A380F3395441D7A3703D19A2504133333363F3395441000000E018A250415C8FC255F3395441B81E85EB17A250413D0AD733F33954411F85EB8116A25041295C8FF2F23954415C8FC2A50BA25041295C8F72F0395441C3F528FC08A25041E17A14DEEF395441C3F5284C06A25041F6285C7FEF39544185EB518800A25041D7A370CDEE3954411F85EBB1F5A15041EC51B89EED395441C3F5281CF1A1504100000040ED395441A4703D2AE9A15041CDCCCC7CEC39544148E17AB4E2A15041C3F528DCEB3954415C8FC2B5E1A15041666666D6EB395441A4703D0ADAA150410AD7A3E0EB3954417B14AE07D2A15041713D0A97EC3954418FC2F558CEA1504148E17A04EE3954411F85EBA1CFA15041713D0A67F5395441C3F5287CD0A1504148E17A34FB39544152B81E25D1A1504152B81E55043A54418FC2F5B8D1A15041333333730E3A54418FC2F548D2A15041EC51B83E193A5441000000E00EA25041C3F528CC1C3A5441666666762DA25041A4703DAA1E3A5441B81E850B4CA2504185EB5188203A54410AD7A3204DA25041F6285C2F143A54410AD7A3904EA25041713D0A97103A54411F85EB0150A25041713D0A870D3A544148E17AE453A25041CDCCCC4C073A5441D7A3709D55A25041CDCCCCAC043A5441D7A3707D56A2504148E17A14033A544152B81EF557A2504185EB5188003A54415C8FC26559A25041E17A145EFD39544148E17AF459A25041D7A3701DFC39544185EB510853A2504148E17AD4FA395441333333933BA250419A9999F9F3395441
+</a>
+
+<b>
+0106000000010000000103000000020000003A000000CD16A9CD18A250412179E18DF3395441018759A016A2504127873748F3395441E07A15820BA25041A89B56C1F039544146527EBF08A25041B5B70236F0395441CB669D3806A250419D88A2B4EF3954419E23C56D00A25041B7C0FA9DEE39544165D296E8FAA150417B54E4E0ED3954411F85EBB1F5A15041EC51B89EED3954414CCBB01CF1A15041F351B537ED395441A4703D2AE9A15041CDCCCC7CEC395441EE489A9CE2A150415720260DEC395441FF80F285E1A150417A6B3203EC395441B8AC5301DAA1504157CE6EE1EB395441003FE30BD7A15041EFDBCE24EC395441926F0FFDD4A150411387AB53EC395441647FC128D2A15041570D1994EC39544113A7E4C1CFA15041EE51B537ED3954418FC2F558CEA1504148E17A04EE3954411F85EBA1CFA15041713D0A67F5395441C3F5287CD0A1504148E17A34FB395441C352E063D1A1504189130A6D043A5441F5BEF620D2A150410DEEBE600E3A54413A47B952D2A15041BD1C78B2163A5441AB495A75D3A1504101E094A6283A54414812460C09A250419242FC132C3A5441C62581F04AA25041CFEF5846303A5441E17014464CA25041B48D4592203A5441991AC0B34DA250412F1A088D143A5441BB97FBE84EA250416934EF88103A5441EF5D977C50A25041CFD9BF690D3A5441A6AD235254A250411BF19439073A544134C3060856A25041EB9BCC9E043A54416521C70A57A25041ECA4C406033A544149DB186758A250411D23CB93003A5441936839EB59A25041B661EC3BFD3954411C79BE4E5AA25041D0994425FC3954418BE4B53753A2504188E546DDFA39544195865DD944A250417B6167AFF6395441333333933BA250419A9999F9F3395441AE2CE8F937A2504101EA1BE3F2395441CF95424536A25041CDDD6A4FF239544193286F7F32A250411E7C0962F1395441CD016D1F30A250415D746FE8F0395441000000402EA250417B14AEB7F0395441B81E851B2DA25041EC51B88EF0395441BE1E30E42BA25041DDAFB17CF0395441740F92AF2AA2504183504ACBF039544143B1D1AC29A25041C8D80CFDF0395441C1AEA20329A2504132ACDB24F139544151D6758927A25041E0076D7EF13954411565017A25A25041F2287745F2395441044DEF1A23A2504194685C2AF33954416F29B6AA21A2504143C4ED83F3395441774004CD1FA250416201A4BFF33954414EF991EC1CA25041813E5AFBF3395441E43C11E71AA2504140B697C9F33954417C723A2719A250416501A4BFF3395441CD16A9CD18A250412179E18DF33954410E00000009647EEC0EA25041B33AE27B1C3A5441D4E492F010A25041D92912270D3A544177397A3A13A250418FD9BE21FD3954419779657517A250410850F839FD39544168094D8754A250410ACB481B013A54415F4FA8BF54A2504116C0F79A023A544142DB9E2F54A25041848E089B033A5441D3540B3153A25041DAD00338053A54412E1BA12C51A25041620C51D4073A5441AC4173F74DA2504164B7E6B10D3A54416F519EC74BA25041F9AE1407143A544184215BC44BA25041193F8710143A5441C0B292064AA2504184C83364203A544109647EEC0EA25041B33AE27B1C3A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105530 - 3526131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000034000000333333933BA250419A9999F9F3395441295C8FF237A2504166666606F33954411F85EB9132A2504152B81E95F13954415C8FC20530A25041AE47E10AF1395441000000402EA250417B14AEB7F0395441B81E851B2DA25041EC51B88EF0395441713D0AF72BA25041CDCCCC7CF039544114AE47A12AA25041AE47E17AF0395441E17A14BE29A250410AD7A390F0395441713D0AF728A25041D7A370ADF0395441D7A3708D27A250410AD7A300F1395441E17A144E25A25041295C8FB2F139544152B81E1523A25041D7A3708DF2395441333333C321A2504148E17A04F33954419A9999B91FA2504114AE4751F33954413D0AD7031DA2504166666686F3395441C3F5280C1BA250410AD7A380F3395441D7A3703D19A2504133333363F3395441000000E018A250415C8FC255F3395441B81E85EB17A250413D0AD733F33954411F85EB8116A25041295C8FF2F23954415C8FC2A50BA25041295C8F72F0395441C3F528FC08A25041E17A14DEEF395441C3F5284C06A25041F6285C7FEF39544185EB518800A25041D7A370CDEE3954411F85EBB1F5A15041EC51B89EED395441C3F5281CF1A1504100000040ED395441A4703D2AE9A15041CDCCCC7CEC39544148E17AB4E2A15041C3F528DCEB3954415C8FC2B5E1A15041666666D6EB395441A4703D0ADAA150410AD7A3E0EB3954417B14AE07D2A15041713D0A97EC3954418FC2F558CEA1504148E17A04EE3954411F85EBA1CFA15041713D0A67F5395441C3F5287CD0A1504148E17A34FB39544152B81E25D1A1504152B81E55043A54418FC2F5B8D1A15041333333730E3A54418FC2F548D2A15041EC51B83E193A5441000000E00EA25041C3F528CC1C3A5441666666762DA25041A4703DAA1E3A5441B81E850B4CA2504185EB5188203A54410AD7A3204DA25041F6285C2F143A54410AD7A3904EA25041713D0A97103A54411F85EB0150A25041713D0A870D3A544148E17AE453A25041CDCCCC4C073A5441D7A3709D55A25041CDCCCCAC043A5441D7A3707D56A2504148E17A14033A544152B81EF557A2504185EB5188003A54415C8FC26559A25041E17A145EFD39544148E17AF459A25041D7A3701DFC39544185EB510853A2504148E17AD4FA395441333333933BA250419A9999F9F3395441
+</a>
+
+<b>
+0106000000010000000103000000020000003A000000CD16A9CD18A250412179E18DF3395441018759A016A2504127873748F3395441E07A15820BA25041A89B56C1F039544146527EBF08A25041B5B70236F0395441CB669D3806A250419D88A2B4EF3954419E23C56D00A25041B7C0FA9DEE39544165D296E8FAA150417B54E4E0ED3954411F85EBB1F5A15041EC51B89EED3954414CCBB01CF1A15041F351B537ED395441A4703D2AE9A15041CDCCCC7CEC395441EE489A9CE2A150415720260DEC395441FF80F285E1A150417A6B3203EC395441B8AC5301DAA1504157CE6EE1EB395441003FE30BD7A15041EFDBCE24EC395441926F0FFDD4A150411387AB53EC395441647FC128D2A15041570D1994EC39544113A7E4C1CFA15041EE51B537ED3954418FC2F558CEA1504148E17A04EE3954411F85EBA1CFA15041713D0A67F5395441C3F5287CD0A1504148E17A34FB395441C352E063D1A1504189130A6D043A5441F5BEF620D2A150410DEEBE600E3A54413A47B952D2A15041BD1C78B2163A5441AB495A75D3A1504101E094A6283A54414812460C09A250419242FC132C3A5441C62581F04AA25041CFEF5846303A5441E17014464CA25041B48D4592203A5441991AC0B34DA250412F1A088D143A5441BB97FBE84EA250416934EF88103A5441EF5D977C50A25041CFD9BF690D3A5441A6AD235254A250411BF19439073A544134C3060856A25041EB9BCC9E043A54416521C70A57A25041ECA4C406033A544149DB186758A250411D23CB93003A5441936839EB59A25041B661EC3BFD3954411C79BE4E5AA25041D0994425FC3954418BE4B53753A2504188E546DDFA39544195865DD944A250417B6167AFF6395441333333933BA250419A9999F9F3395441AE2CE8F937A2504101EA1BE3F2395441CF95424536A25041CDDD6A4FF239544193286F7F32A250411E7C0962F1395441CD016D1F30A250415D746FE8F0395441000000402EA250417B14AEB7F0395441B81E851B2DA25041EC51B88EF0395441BE1E30E42BA25041DDAFB17CF0395441740F92AF2AA2504183504ACBF039544143B1D1AC29A25041C8D80CFDF0395441C1AEA20329A2504132ACDB24F139544151D6758927A25041E0076D7EF13954411565017A25A25041F2287745F2395441044DEF1A23A2504194685C2AF33954416F29B6AA21A2504143C4ED83F3395441774004CD1FA250416201A4BFF33954414EF991EC1CA25041813E5AFBF3395441E43C11E71AA2504140B697C9F33954417C723A2719A250416501A4BFF3395441CD16A9CD18A250412179E18DF33954410E00000009647EEC0EA25041B33AE27B1C3A5441D4E492F010A25041D92912270D3A544177397A3A13A250418FD9BE21FD3954419779657517A250410850F839FD39544168094D8754A250410ACB481B013A54415F4FA8BF54A2504116C0F79A023A544142DB9E2F54A25041848E089B033A5441D3540B3153A25041DAD00338053A54412E1BA12C51A25041620C51D4073A5441AC4173F74DA2504164B7E6B10D3A54416F519EC74BA25041F9AE1407143A544184215BC44BA25041193F8710143A5441C0B292064AA2504184C83364203A544109647EEC0EA25041B33AE27B1C3A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105699 - 3179179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F000000B81E853B23AF50417B14AE67483C54415C8FC25529AF50413D0AD723463C54415C8FC2C52BAF504133333313453C54415C8FC2352EAF5041E17A14CE433C544114AE47B123AF504152B81E053D3C54418FC2F5881EAF5041E17A14DE393C5441F6285CEF16AF50413D0AD7D3363C5441713D0AF711AF5041713D0A17393C544185EB51C80CAF504152B81EC5383C54418FC2F50809AF504148E17A643A3C5441A4703DAA05AF504185EB5128393C5441CDCCCC4CFDAE504114AE4741363C54417B14AEE7F1AE5041A4703D6A343C5441295C8F92EBAE504185EB5168323C5441295C8F32E4AE5041EC51B8FE363C5441C3F5288CDFAE50415C8FC2353B3C54418FC2F5A8D9AE504152B81EE5423C5441EC51B8EED6AE5041B81E857B473C54410AD7A3F0DEAE50417B14AE474C3C54413D0AD723E0AE504114AE47B1533C5441A4703D4AE1AE5041AE47E19A563C54417B14AEF7E1AE50411F85EB61593C54413D0AD793E2AE504152B81E655E3C5441F6285C2FE2AE50419A999999663C544133333313DEAE5041D7A3702D6E3C5441EC51B8BEDEAE5041000000A06F3C544166666626EDAE5041B81E854B783C5441C3F5288CEBAE504133333393753C544148E17A44ECAE50411F85EB31723C5441713D0AA7EDAE5041E17A14EE6E3C5441EC51B8DEEEAE504114AE47E16C3C5441F6285C4FF0AE5041B81E851B6B3C5441E17A144EF2AE5041CDCCCC9C693C54410AD7A320F5AE50415C8FC255693C5441AE47E13AF8AE5041713D0A476A3C54413D0AD743FFAE5041EC51B8FE6A3C54415C8FC28503AF5041A4703DDA6A3C5441713D0A5705AF50415C8FC265663C5441A4703D4A06AF50415C8FC225643C544152B81EA508AF50410AD7A3A05F3C54415C8FC2C50BAF50410AD7A3805A3C544114AE47B10EAF50417B14AEC7563C5441295C8FC212AF5041B81E85DB523C5441A4703D7A18AF5041000000504E3C54419A9999C91BAF5041295C8F024C3C544114AE47711FAF50411F85EB014A3C5441B81E853B23AF50417B14AE67483C5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000770B6F2FE2AE5041E4D20E98663C5441C3F528FCE5AE5041713D0A975F3C54419A999939E5AE504114AE47A1593C5441C3F5287CE2AE5041E17A149E563C54418FC2F518E3AE50419A9999A9543C5441CDCCCC5CE0AE5041B81E856B4E3C5441295C8FC2E0AE50411F85EB614B3C54419ADB3755EBAE5041E5F687FB423C5441000000C0EFAE50410AD7A3A03E3C5441208D6007F4AE5041413AD6E13B3C5441666666E6F6AE5041A4703D0A3A3C5441B81E858B01AF50413D0AD763383C54411F85EB4108AF5041295C8FF23A3C5441B627FCE30BAF5041F36250D0393C5441A4703D5A0DAF5041B81E855B393C544198C691DA0DAF5041CA6456D5383C544185EB51C80CAF504152B81EC5383C54418FC2F50809AF504148E17A643A3C5441A4703DAA05AF504185EB5128393C5441CDCCCC4CFDAE504114AE4741363C54417B14AEE7F1AE5041A4703D6A343C5441295C8F92EBAE504185EB5168323C5441295C8F32E4AE5041EC51B8FE363C5441C3F5288CDFAE50415C8FC2353B3C54418FC2F5A8D9AE504152B81EE5423C5441EC51B8EED6AE5041B81E857B473C54410AD7A3F0DEAE50417B14AE474C3C54413D0AD723E0AE504114AE47B1533C5441A4703D4AE1AE5041AE47E19A563C54417B14AEF7E1AE50411F85EB61593C54413D0AD793E2AE504152B81E655E3C5441770B6F2FE2AE5041E4D20E98663C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105699 - 3580735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F000000B81E853B23AF50417B14AE67483C54415C8FC25529AF50413D0AD723463C54415C8FC2C52BAF504133333313453C54415C8FC2352EAF5041E17A14CE433C544114AE47B123AF504152B81E053D3C54418FC2F5881EAF5041E17A14DE393C5441F6285CEF16AF50413D0AD7D3363C5441713D0AF711AF5041713D0A17393C544185EB51C80CAF504152B81EC5383C54418FC2F50809AF504148E17A643A3C5441A4703DAA05AF504185EB5128393C5441CDCCCC4CFDAE504114AE4741363C54417B14AEE7F1AE5041A4703D6A343C5441295C8F92EBAE504185EB5168323C5441295C8F32E4AE5041EC51B8FE363C5441C3F5288CDFAE50415C8FC2353B3C54418FC2F5A8D9AE504152B81EE5423C5441EC51B8EED6AE5041B81E857B473C54410AD7A3F0DEAE50417B14AE474C3C54413D0AD723E0AE504114AE47B1533C5441A4703D4AE1AE5041AE47E19A563C54417B14AEF7E1AE50411F85EB61593C54413D0AD793E2AE504152B81E655E3C5441F6285C2FE2AE50419A999999663C544133333313DEAE5041D7A3702D6E3C5441EC51B8BEDEAE5041000000A06F3C544166666626EDAE5041B81E854B783C5441C3F5288CEBAE504133333393753C544148E17A44ECAE50411F85EB31723C5441713D0AA7EDAE5041E17A14EE6E3C5441EC51B8DEEEAE504114AE47E16C3C5441F6285C4FF0AE5041B81E851B6B3C5441E17A144EF2AE5041CDCCCC9C693C54410AD7A320F5AE50415C8FC255693C5441AE47E13AF8AE5041713D0A476A3C54413D0AD743FFAE5041EC51B8FE6A3C54415C8FC28503AF5041A4703DDA6A3C5441713D0A5705AF50415C8FC265663C5441A4703D4A06AF50415C8FC225643C544152B81EA508AF50410AD7A3A05F3C54415C8FC2C50BAF50410AD7A3805A3C544114AE47B10EAF50417B14AEC7563C5441295C8FC212AF5041B81E85DB523C5441A4703D7A18AF5041000000504E3C54419A9999C91BAF5041295C8F024C3C544114AE47711FAF50411F85EB014A3C5441B81E853B23AF50417B14AE67483C5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000770B6F2FE2AE5041E4D20E98663C5441C3F528FCE5AE5041713D0A975F3C54419A999939E5AE504114AE47A1593C5441C3F5287CE2AE5041E17A149E563C54418FC2F518E3AE50419A9999A9543C5441CDCCCC5CE0AE5041B81E856B4E3C5441295C8FC2E0AE50411F85EB614B3C54419ADB3755EBAE5041E5F687FB423C5441000000C0EFAE50410AD7A3A03E3C5441208D6007F4AE5041413AD6E13B3C5441666666E6F6AE5041A4703D0A3A3C5441B81E858B01AF50413D0AD763383C54411F85EB4108AF5041295C8FF23A3C5441B627FCE30BAF5041F36250D0393C5441A4703D5A0DAF5041B81E855B393C544198C691DA0DAF5041CA6456D5383C544185EB51C80CAF504152B81EC5383C54418FC2F50809AF504148E17A643A3C5441A4703DAA05AF504185EB5128393C5441CDCCCC4CFDAE504114AE4741363C54417B14AEE7F1AE5041A4703D6A343C5441295C8F92EBAE504185EB5168323C5441295C8F32E4AE5041EC51B8FE363C5441C3F5288CDFAE50415C8FC2353B3C54418FC2F5A8D9AE504152B81EE5423C5441EC51B8EED6AE5041B81E857B473C54410AD7A3F0DEAE50417B14AE474C3C54413D0AD723E0AE504114AE47B1533C5441A4703D4AE1AE5041AE47E19A563C54417B14AEF7E1AE50411F85EB61593C54413D0AD793E2AE504152B81E655E3C5441770B6F2FE2AE5041E4D20E98663C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105732 - 1837761
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A5AAE5041333333A3D73D544114AE471153AE5041B81E85ABD53D544114AE474151AE5041D7A370BDD63D5441B81E851B50AE5041F6285C6FD63D5441E17A142E4EAE5041EC51B8AEDD3D54415C8FC2E547AE50410AD7A300DC3D54410AD7A36047AE50411F85EB51DE3D5441E17A14EE45AE50411F85EB71E23D54410AD7A3D043AE5041000000C0E73D5441295C8F824BAE5041333333A3EA3D5441B81E85DB4AAE50410AD7A300EC3D5441D7A3703D43AE504114AE4731E93D54418FC2F58842AE50415C8FC2F5EA3D5441CDCCCCAC42AE50413D0AD703EB3D5441295C8F5254AE50411F85EB01F23D544148E17AE45AAE5041295C8F02E13D5441666666165CAE504152B81E15DE3D5441295C8F7268AE5041295C8F12E33D54417B14AE7769AE5041666666C6E03D54413D0AD7736AAE5041CDCCCC8CDE3D544185EB51585EAE504166666666D93D5441B81E853B5DAE50417B14AEE7D83D5441A4703D6A5AAE5041333333A3D73D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006BA63B2F54AE504168501FBBF13D5441E222D6B05AAE5041071335B8E03D54416323D6F55BAE5041085D80BBDD3D544118E5C87066AE5041BE70D6FAE13D5441B018595068AE504114843EA0DD3D54413D0AD7736AAE5041CDCCCC8CDE3D544185EB51586CAE5041EC51B8DEDA3D5441EC51B84E6DAE5041C3F5281CDB3D5441000000A06DAE50410AD7A320DA3D5441EAE7A9EE69AE5041FACD26AED83D5441DAF1FE0E64AE50417D9871FDDD3D5441AF02F6135BAE5041558273A4DB3D5441057336C95BAE5041D3156E53D83D5441A4703D6A5AAE5041333333A3D73D544114AE471153AE5041B81E85ABD53D544114AE474151AE5041D7A370BDD63D5441B81E851B50AE5041F6285C6FD63D5441E17A142E4EAE5041EC51B8AEDD3D54415C8FC2E547AE50410AD7A300DC3D54410AD7A36047AE50411F85EB51DE3D5441E17A14EE45AE50411F85EB71E23D5441A854C96F44AE5041AE21C030E63D5441B84935894CAE5041C7A73101E93D54414AC68D324BAE5041B4428160EC3D54419D70B42143AE5041701FA976E93D5441710BF29F42AE5041A11D22BCEA3D54416BA63B2F54AE504168501FBBF13D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105732 - 3362202
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A5AAE5041333333A3D73D544114AE471153AE5041B81E85ABD53D544114AE474151AE5041D7A370BDD63D5441B81E851B50AE5041F6285C6FD63D5441E17A142E4EAE5041EC51B8AEDD3D54415C8FC2E547AE50410AD7A300DC3D54410AD7A36047AE50411F85EB51DE3D5441E17A14EE45AE50411F85EB71E23D54410AD7A3D043AE5041000000C0E73D5441295C8F824BAE5041333333A3EA3D5441B81E85DB4AAE50410AD7A300EC3D5441D7A3703D43AE504114AE4731E93D54418FC2F58842AE50415C8FC2F5EA3D5441CDCCCCAC42AE50413D0AD703EB3D5441295C8F5254AE50411F85EB01F23D544148E17AE45AAE5041295C8F02E13D5441666666165CAE504152B81E15DE3D5441295C8F7268AE5041295C8F12E33D54417B14AE7769AE5041666666C6E03D54413D0AD7736AAE5041CDCCCC8CDE3D544185EB51585EAE504166666666D93D5441B81E853B5DAE50417B14AEE7D83D5441A4703D6A5AAE5041333333A3D73D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006BA63B2F54AE504168501FBBF13D5441E222D6B05AAE5041071335B8E03D54416323D6F55BAE5041085D80BBDD3D544118E5C87066AE5041BE70D6FAE13D5441B018595068AE504114843EA0DD3D54413D0AD7736AAE5041CDCCCC8CDE3D544185EB51586CAE5041EC51B8DEDA3D5441EC51B84E6DAE5041C3F5281CDB3D5441000000A06DAE50410AD7A320DA3D5441EAE7A9EE69AE5041FACD26AED83D5441DAF1FE0E64AE50417D9871FDDD3D5441AF02F6135BAE5041558273A4DB3D5441057336C95BAE5041D3156E53D83D5441A4703D6A5AAE5041333333A3D73D544114AE471153AE5041B81E85ABD53D544114AE474151AE5041D7A370BDD63D5441B81E851B50AE5041F6285C6FD63D5441E17A142E4EAE5041EC51B8AEDD3D54415C8FC2E547AE50410AD7A300DC3D54410AD7A36047AE50411F85EB51DE3D5441E17A14EE45AE50411F85EB71E23D5441A854C96F44AE5041AE21C030E63D5441B84935894CAE5041C7A73101E93D54414AC68D324BAE5041B4428160EC3D54419D70B42143AE5041701FA976E93D5441710BF29F42AE5041A11D22BCEA3D54416BA63B2F54AE504168501FBBF13D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106459 - 106936
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000B81E85AB801B51410AD7A3E0BD885441C3F528EC7F1B51410AD7A330BE885441EC51B81E791B5141F6285C0FC1885441A4703DDA721B51419A9999E9C288544114AE47D16E1B5141D7A3700DC48854419A9999D9621B5141EC51B8AEC88854415C8FC245651B514152B81E55CE88544152B81E55621B5141295C8F02D0885441EC51B8CE631B5141EC51B8CED48854411F85EB71671B5141D7A3703DD38854417B14AE176C1B51418FC2F5E8D0885441E17A148E751B514152B81EF5CC885441AE47E11A7C1B5141E17A14CEC9885441713D0A07841B5141666666B6C488544148E17A94821B51410AD7A300C28854411F85EB31811B5141A4703DAABE885441B81E85AB801B51410AD7A3E0BD885441
+</a>
+
+<b>
+010600000001000000010300000001000000180000002CCAEEF1761B5141E94FD949CC885441730226406E1B514100703102D08854417B14AE176C1B51418FC2F5E8D088544191BF4032671B5141023CE058D3885441EC51B8CE631B5141EC51B8CED4885441295C8F225F1B514100000010D888544172E1D7205C1B51410001081FDA885441884F70925D1B51412DE85926DC8854411B664557611B51416B4077A6D988544152B81EB5641B5141AE47E16AD7885441B39A6A37671B5141FED8AB30D6885441983959056A1B5141E73E76D1D4885441D96569B96D1B51417B61AC01D38854410AD7A3D0711B5141E17A141ED18854418FC2F5E8751B514100000030D988544148E17AA4791B51418FC2F508D7885441E17A14BE801B5141666666D6D2885441EC51B84E8A1B514148E17AD4CC885441EC51B87E881B5141EC51B8CECA885441F6285C3F861B51415C8FC2C5C7885441713D0A07841B5141666666B6C4885441AE47E11A7C1B5141E17A14CEC9885441608CADC67A1B5141F087D171CA8854412CCAEEF1761B5141E94FD949CC885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106865 - 5234534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE22F1E5141AE47E1EA3A8954411F85EB01311E51419A9999B945895441AE47E1AA2D1E514185EB51B84C895441295C8F022C1E51410AD7A310518954413D0AD7D32A1E5141E17A14DE538954417B14AE27241E5141C3F528CC598954415C8FC2453D1E5141E17A14AE5F895441C3F5282C4B1E514185EB513863895441F6285C5F4E1E514152B81E856389544148E17A34501E5141F6285C9F62895441AE47E11A531E5141A4703D1A5E8954410AD7A3F0531E514152B81EE55C895441F6285CDF3A1E514166666646548954413D0AD7133A1E5141A4703D1A5489544148E17A44391E5141D7A370ED5389544185EB51F83C1E5141F6285CFF4189544114AE4721471E51417B14AE174489544148E17A64551E5141AE47E10A47895441666666465F1E51415C8FC21549895441D7A370DD6B1E5141F6285CAF4B8954411F85EBE16C1E5141D7A3708D46895441D7A3706D6E1E5141295C8F923E895441000000706F1E514114AE476139895441295C8FB2701E514114AE47312F89544114AE47B1681E514152B81E852F89544114AE4781621E5141E17A14EE2E895441A4703DFA651E5141E17A149E228954411F85EB81681E5141666666A61989544152B81ED56A1E5141713D0A67118954419A999999601E5141E17A14BE108954415C8FC2D5561E5141000000601089544185EB51F84E1E5141EC51B8BE0E89544114AE4791481E5141C3F5286C0D8954418FC2F578471E51411F85EB310D895441295C8F92471E51416666666611895441A4703D8A471E5141333333F314895441D7A3706D461E51411F85EB011B8954419A9999C9461E5141EC51B81E2289544166666616481E514148E17A642889544152B81E95481E51419A9999C92F89544148E17A94411E5141295C8F92318954411F85EB81381E51411F85EB4132895441F6285CDF341E5141295C8F12328954419A999959301E51413D0AD77331895441295C8FE22F1E5141AE47E1EA3A895441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E51410000006010895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106865 - 5234539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE22F1E5141AE47E1EA3A8954411F85EB01311E51419A9999B945895441AE47E1AA2D1E514185EB51B84C895441295C8F022C1E51410AD7A310518954413D0AD7D32A1E5141E17A14DE538954417B14AE27241E5141C3F528CC598954415C8FC2453D1E5141E17A14AE5F895441C3F5282C4B1E514185EB513863895441F6285C5F4E1E514152B81E856389544148E17A34501E5141F6285C9F62895441AE47E11A531E5141A4703D1A5E8954410AD7A3F0531E514152B81EE55C895441F6285CDF3A1E514166666646548954413D0AD7133A1E5141A4703D1A5489544148E17A44391E5141D7A370ED5389544185EB51F83C1E5141F6285CFF4189544114AE4721471E51417B14AE174489544148E17A64551E5141AE47E10A47895441666666465F1E51415C8FC21549895441D7A370DD6B1E5141F6285CAF4B8954411F85EBE16C1E5141D7A3708D46895441D7A3706D6E1E5141295C8F923E895441000000706F1E514114AE476139895441295C8FB2701E514114AE47312F89544114AE47B1681E514152B81E852F89544114AE4781621E5141E17A14EE2E895441A4703DFA651E5141E17A149E228954411F85EB81681E5141666666A61989544152B81ED56A1E5141713D0A67118954419A999999601E5141E17A14BE108954415C8FC2D5561E5141000000601089544185EB51F84E1E5141EC51B8BE0E89544114AE4791481E5141C3F5286C0D8954418FC2F578471E51411F85EB310D895441295C8F92471E51416666666611895441A4703D8A471E5141333333F314895441D7A3706D461E51411F85EB011B8954419A9999C9461E5141EC51B81E2289544166666616481E514148E17A642889544152B81E95481E51419A9999C92F89544148E17A94411E5141295C8F92318954411F85EB81381E51411F85EB4132895441F6285CDF341E5141295C8F12328954419A999959301E51413D0AD77331895441295C8FE22F1E5141AE47E1EA3A895441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E51410000006010895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106908 - 5234534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E514100000060108954419A999999601E5141E17A14BE1089544152B81ED56A1E5141713D0A6711895441A4703D2A751E51410AD7A30012895441713D0A877D1E5141E17A147E128954410AD7A3C07E1E514166666606108954415C8FC2357F1E5141B81E855B0E8954415C8FC2057F1E5141A4703DCA06895441333333F3751E514185EB51D805895441D7A3701D691E5141AE47E1BA05895441CDCCCC1C691E514152B81E7505895441666666D6651E514166666686048954415C8FC215641E514152B81EE5038954418FC2F538561E51417B14AEE7FE8854410AD7A3804A1E51413D0AD713FA88544100000020491E51411F85EB91F988544114AE47A1421E5141713D0A77F7885441CDCCCC6C3C1E514114AE47F1F58854413D0AD793381E514100000090F48854415C8FC245371E514185EB5138F38854410AD7A300301E5141295C8F82FC88544100000070301E514152B81EC5FE885441F6285CEF301E5141E17A140E03895441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E51410000006010895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106908 - 5234539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E514100000060108954419A999999601E5141E17A14BE1089544152B81ED56A1E5141713D0A6711895441A4703D2A751E51410AD7A30012895441713D0A877D1E5141E17A147E128954410AD7A3C07E1E514166666606108954415C8FC2357F1E5141B81E855B0E8954415C8FC2057F1E5141A4703DCA06895441333333F3751E514185EB51D805895441D7A3701D691E5141AE47E1BA05895441CDCCCC1C691E514152B81E7505895441666666D6651E514166666686048954415C8FC215641E514152B81EE5038954418FC2F538561E51417B14AEE7FE8854410AD7A3804A1E51413D0AD713FA88544100000020491E51411F85EB91F988544114AE47A1421E5141713D0A77F7885441CDCCCC6C3C1E514114AE47F1F58854413D0AD793381E514100000090F48854415C8FC245371E514185EB5138F38854410AD7A300301E5141295C8F82FC88544100000070301E514152B81EC5FE885441F6285CEF301E5141E17A140E03895441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E51410000006010895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107243 - 408455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000A4703DDA5B275141B81E85DB3640554152B81EE5562751411F85EBA13F405541666666564B2751417B14AE073A405541713D0AC74827514148E17AE43D4055417B14AEF745275141B81E851B43405541E17A14CE3E27514148E17A144F40554152B81ED545275141CDCCCCAC4F4055413D0AD7D35027514114AE47514F4055410000007051275141D7A3702D49405541C3F5289C5B275141EC51B83E4A40554185EB51B85F2751415C8FC25548405541D7A370AD6827514152B81EE54740554152B81E256A2751418FC2F5184A405541E17A143E6B27514148E17A144C405541F6285C9F7B275141F6285C9F4D405541C3F528CC7C2751418FC2F57862405541EC51B8FE8927514152B81E356A4055410AD7A3C088275141000000406540554166666696862751417B14AEB766405541295C8F9285275141D7A3709D6640554185EB5198832751418FC2F578624055410AD7A34082275141295C8F2260405541C3F528AC7E275141CDCCCCFC57405541666666E67E275141A4703D3A574055410AD7A3708127514114AE47D1554055417B14AE67822751413D0AD7F3554055411F85EBB1822751410000000055405541E17A14EE9327514148E17A341E40554148E17AD48E275141000000001D405541295C8F2285275141EC51B89E38405541713D0AA773275141CDCCCCDC31405541713D0A276D275141CDCCCCEC3E405541A4703DDA5B275141B81E85DB36405541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000B60651596A27514143233F774A405541EED8FE416B27514108E754E84B405541F6285C9F7B275141F6285C9F4D4055410B82943F7C2751411F2A6ABA5840554187F4F0C77C275141446B192E62405541A9FF15CC7C275141184CA577624055417A990825852751415F6C5F5D67405541EC51B8FE8927514152B81E356A4055410AD7A3C0882751410000004065405541B5FF189D8627514100E023B36640554166666696862751417B14AEB766405541C7BB90BC852751416292AEA166405541295C8F9285275141D7A3709D66405541A055910E84275141FFD2AA70634055414E6E1E8E83275141F9C03267624055414E405E0783275141BB92937C614055410AD7A34082275141295C8F2260405541648D9DEC812751411D6E55635F405541DB46E1B07E275141B4BB8A0758405541C3F528AC7E275141CDCCCCFC57405541666666E67E275141A4703D3A574055410AD7A3708127514114AE47D1554055417B14AE67822751413D0AD7F35540554144BF578382275141296DFB98554055411F85EBB1822751410000000055405541D5BB1C8584275141D77EA9324F4055413141ACB58B275141682AFE5638405541E17A14EE9327514148E17A341E4055413AD3D52A91275141B947608D1D40554135DCF5D98E2751410B7D4B011D405541B065FBC48E2751413DED262C1D4055412C1D34748B27514175C03A9E26405541295C8F2285275141EC51B89E384055411020C8188527514108BFF09A38405541713D0AA773275141CDCCCCDC31405541713D0A276D275141CDCCCCEC3E405541C3AA57EF6C2751416A9BD3D23E40554103522A7F5E275141E0B2301738405541A4703DDA5B275141B81E85DB3640554152B81EE5562751411F85EBA13F405541F973D88956275141E2B7AC753F4055414BEE56584B275141FEC59E083A4055412B1A30C3482751418006A1EB3D405541224ACA0F462751412E4AC6EE424055417B14AEF745275141B81E851B43405541870D46B4442751417A661C38454055411AA3A4CF3E275141A0C29C144F40554123FAA9CC45275141538415AC4F4055416786A17047275141CD786B9F4F405541534603D450275141AB6E8A4F4F4055410000007051275141D7A3702D49405541C3F5289C5B275141EC51B83E4A40554153E4C73B5E2751415BAF9A064940554185EB51B85F2751415C8FC255484055413D216FC15F27514164F34F5548405541D7A370AD6827514152B81EE5474055411DC7A2C46827514117FCEE0748405541A6448E9E692751414BBDFF4E4940554152B81E256A2751418FC2F5184A405541B60651596A27514143233F774A405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107289 - 66133
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F5A8F4295141C3F5287CDB405541AE47E1DAEE29514148E17AF4E340554152B81E25E1295141D7A370DDF84055417B14AEF7D5295141295C8F120A415541295C8F02C7295141D7A370DD214155411F85EBF1E02951419A99999931415541F6285C5F062A514185EB51D8F740554148E17AB4092A514100000020F340554100000020042A5141713D0AB7EF405541D7A3702D062A51410AD7A3D0D640554185EB5108052A5141295C8FA2D54055419A999959FB295141713D0A27D64055413D0AD793F62951419A999999D6405541666666C6F5295141CDCCCCACD6405541666666C6F429514185EB5138D94055418FC2F5A8F4295141C3F5287CDB405541
+</a>
+
+<b>
+0106000000010000000103000000010000001600000078912403C729514170B5E9DD21415541F490AE84D3295141EFE648E50D415541F28980FBD5295141A40BAD0C0A4155417ABD4C19D8295141473BF3C706415541643BEE56DB295141925C1AD3014155415E21DD53DD2951413EA154B8FE40554161E38750E92951414E283B6CEC4055414FC92CD0EC295141AEE4B011E74055418D9DBFA0F0295141A0123F5EE14055417A01ED09F429514102693464DC4055418FC2F5A8F4295141C3F5287CDB4055415B6D57BFF4295141AB6D57C3D9405541666666C6F429514185EB5138D94055418256606BF5295141E0AC8839D740554111CF6744F52951411BA0C975D7405541B0CD5659F429514171BB3AE1D840554149F73069F32951412E168754DA405541EE57113DED295141702D98DFE3405541161B7A27E0295141EA107A1AF840554167697DEAD42951416EBCFE7A09415541B81E85ABC5295141D7A3700D2141554178912403C729514170B5E9DD21415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107999 - 226498
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000340000007B14AE17C20F514148E17A04504A5541EC51B8AEC30F5141EC51B8BE4E4A5541D7A3701DC90F5141AE47E1DA4C4A55418FC2F558D60F514152B81E05494A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541E17A144EF30F51413D0AD713414A5541AE47E17AF60F5141CDCCCC7C404A5541CDCCCC6CF80F5141D7A370AD3F4A55411F85EB21FA0F5141C3F5286C3E4A554152B81E05FC0F5141295C8FA23C4A5541713D0AF7FE0F51413D0AD793394A55411F85EBA1F90F51415C8FC235344A5541B81E857BF80F514152B81E45334A554185EB5168F70F5141A4703DCA304A55411F85EB71F70F514148E17A04304A5541CDCCCC1CF50F5141A4703DEA304A55415C8FC2A5F00F51411F85EBA1324A5541B81E851BEE0F5141EC51B89E334A554148E17A24EC0F514148E17A44344A5541C3F5288CE90F5141AE47E16A354A5541A4703DFAE40F5141CDCCCC2C374A5541713D0A17DF0F5141000000B0384A554152B81E15DC0F51418FC2F5C8374A55413D0AD713D90F5141E17A14FE374A5541E17A14FED60F514152B81E65384A5541C3F528DCD40F51411F85EB213A4A5541E17A148ED00F51413D0AD7833B4A554100000060C40F51413D0AD7933F4A5541AE47E1BAB80F5141A4703D8A424A5541295C8FE2B40F5141C3F5286C434A554114AE4751B10F5141295C8F22444A5541F6285C5FAC0F5141713D0A57444A554100000070AC0F51415C8FC2F5454A5541B81E856BAC0F5141CDCCCC9C484A554166666656AC0F514185EB51984A4A55413D0AD703AC0F51418FC2F5B84C4A55417B14AE77AB0F51415C8FC2454F4A5541F6285C2FAB0F5141713D0A87504A5541AE47E10AAB0F5141EC51B8AE514A554114AE47F1AA0F514133333383524A554114AE47E1AA0F5141F6285CAF534A55415C8FC205AB0F51411F85EBD1544A554133333363AB0F5141C3F528BC574A55413D0AD7F3AB0F51410AD7A3405C4A55411F85EB61AD0F514152B81EA5604A55417B14AE27AF0F51418FC2F548654A5541333333D3B50F51413D0AD773604A5541000000C0B80F5141CDCCCC0C5D4A55417B14AE67BC0F514148E17A54584A5541EC51B8BEBF0F51411F85EB51534A55417B14AE17C20F514148E17A04504A5541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000EC51B8AEC30F5141EC51B8BE4E4A554138007084C70F51412DAA2C694D4A5541D7A3701DC90F5141AE47E1DA4C4A55417218FDB2CE0F5141A7A7923C4B4A5541087D23DCD10F51416E5211524A4A55419346E388D70F5141D1D1EB9E484A55414E152B73D90F5141CE300FFA474A554158E32CA4D90F51410F8994E9474A55417F6D1F71DB0F514181F9944E474A5541557A708FDF0F51411CA40EEC454A5541B3279E6BE00F5141071B05A2454A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541CF4CA75FEF0F5141024FED78414A554104E3A2A9F00F514180F9A029414A5541F724CFB8F20F5141BFAB10BE404A5541B28A8E3FF50F51418F2B7F3F404A5541ECDA3D3BF70F51410E77DEC43F4A5541D0D9DF9AF80F5141458CCD423F4A55416EED2D7EFA0F5141E1DBC9143E4A554152B81E05FC0F5141295C8FA23C4A5541713D0AF7FE0F51413D0AD793394A55411F85EBA1F90F51415C8FC235344A5541713D0A27F70F51411F85EBC1344A5541CDCCCC1CF50F5141A4703DEA304A55415C8FC2A5F00F51411F85EBA1324A5541B81E851BEE0F5141EC51B89E334A554148E17A24EC0F514148E17A44344A5541C3F5288CE90F5141AE47E16A354A5541A4703DFAE40F5141CDCCCC2C374A5541713D0A17DF0F5141000000B0384A554152B81E15DC0F51418FC2F5C8374A55413D0AD713D90F5141E17A14FE374A5541E17A14FED60F514152B81E65384A5541C3F528DCD40F51411F85EB213A4A5541E17A148ED00F51413D0AD7833B4A554100000060C40F51413D0AD7933F4A5541AE47E1BAB80F5141A4703D8A424A5541295C8FE2B40F5141C3F5286C434A554114AE4751B10F5141295C8F22444A5541F6285C5FAC0F5141713D0A57444A554100000070AC0F51415C8FC2F5454A5541B81E856BAC0F5141CDCCCC9C484A554166666656AC0F514185EB51984A4A55413D0AD703AC0F51418FC2F5B84C4A5541302B93DFAB0F5141808C84814E4A5541470762BFAB0F51413BFA4F35504A55416414F8A8AB0F51413FBFB574514A5541EE57A6B5AB0F51417DB43289534A554100000050B60F514185EB51884F4A5541A588AB81B90F5141A1B95055564A55417B14AEB7B90F514185EB51C8564A5541000000E0BD0F5141CDCCCC4C554A55415289C0C7BE0F5141DC690A19544A554160DA0341BF0F51418D3AC475534A5541C77E1AACBF0F514155FEAFE0524A55411F85EB31C00F514166666626524A5541D5B63648C10F51415BC95828514A55417B14AE17C20F514148E17A04504A5541EC51B8AEC30F5141EC51B8BE4E4A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107999 - 341578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000340000007B14AE17C20F514148E17A04504A5541EC51B8AEC30F5141EC51B8BE4E4A5541D7A3701DC90F5141AE47E1DA4C4A55418FC2F558D60F514152B81E05494A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541E17A144EF30F51413D0AD713414A5541AE47E17AF60F5141CDCCCC7C404A5541CDCCCC6CF80F5141D7A370AD3F4A55411F85EB21FA0F5141C3F5286C3E4A554152B81E05FC0F5141295C8FA23C4A5541713D0AF7FE0F51413D0AD793394A55411F85EBA1F90F51415C8FC235344A5541B81E857BF80F514152B81E45334A554185EB5168F70F5141A4703DCA304A55411F85EB71F70F514148E17A04304A5541CDCCCC1CF50F5141A4703DEA304A55415C8FC2A5F00F51411F85EBA1324A5541B81E851BEE0F5141EC51B89E334A554148E17A24EC0F514148E17A44344A5541C3F5288CE90F5141AE47E16A354A5541A4703DFAE40F5141CDCCCC2C374A5541713D0A17DF0F5141000000B0384A554152B81E15DC0F51418FC2F5C8374A55413D0AD713D90F5141E17A14FE374A5541E17A14FED60F514152B81E65384A5541C3F528DCD40F51411F85EB213A4A5541E17A148ED00F51413D0AD7833B4A554100000060C40F51413D0AD7933F4A5541AE47E1BAB80F5141A4703D8A424A5541295C8FE2B40F5141C3F5286C434A554114AE4751B10F5141295C8F22444A5541F6285C5FAC0F5141713D0A57444A554100000070AC0F51415C8FC2F5454A5541B81E856BAC0F5141CDCCCC9C484A554166666656AC0F514185EB51984A4A55413D0AD703AC0F51418FC2F5B84C4A55417B14AE77AB0F51415C8FC2454F4A5541F6285C2FAB0F5141713D0A87504A5541AE47E10AAB0F5141EC51B8AE514A554114AE47F1AA0F514133333383524A554114AE47E1AA0F5141F6285CAF534A55415C8FC205AB0F51411F85EBD1544A554133333363AB0F5141C3F528BC574A55413D0AD7F3AB0F51410AD7A3405C4A55411F85EB61AD0F514152B81EA5604A55417B14AE27AF0F51418FC2F548654A5541333333D3B50F51413D0AD773604A5541000000C0B80F5141CDCCCC0C5D4A55417B14AE67BC0F514148E17A54584A5541EC51B8BEBF0F51411F85EB51534A55417B14AE17C20F514148E17A04504A5541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000EC51B8AEC30F5141EC51B8BE4E4A554138007084C70F51412DAA2C694D4A5541D7A3701DC90F5141AE47E1DA4C4A55417218FDB2CE0F5141A7A7923C4B4A5541087D23DCD10F51416E5211524A4A55419346E388D70F5141D1D1EB9E484A55414E152B73D90F5141CE300FFA474A554158E32CA4D90F51410F8994E9474A55417F6D1F71DB0F514181F9944E474A5541557A708FDF0F51411CA40EEC454A5541B3279E6BE00F5141071B05A2454A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541CF4CA75FEF0F5141024FED78414A554104E3A2A9F00F514180F9A029414A5541F724CFB8F20F5141BFAB10BE404A5541B28A8E3FF50F51418F2B7F3F404A5541ECDA3D3BF70F51410E77DEC43F4A5541D0D9DF9AF80F5141458CCD423F4A55416EED2D7EFA0F5141E1DBC9143E4A554152B81E05FC0F5141295C8FA23C4A5541713D0AF7FE0F51413D0AD793394A55411F85EBA1F90F51415C8FC235344A5541713D0A27F70F51411F85EBC1344A5541CDCCCC1CF50F5141A4703DEA304A55415C8FC2A5F00F51411F85EBA1324A5541B81E851BEE0F5141EC51B89E334A554148E17A24EC0F514148E17A44344A5541C3F5288CE90F5141AE47E16A354A5541A4703DFAE40F5141CDCCCC2C374A5541713D0A17DF0F5141000000B0384A554152B81E15DC0F51418FC2F5C8374A55413D0AD713D90F5141E17A14FE374A5541E17A14FED60F514152B81E65384A5541C3F528DCD40F51411F85EB213A4A5541E17A148ED00F51413D0AD7833B4A554100000060C40F51413D0AD7933F4A5541AE47E1BAB80F5141A4703D8A424A5541295C8FE2B40F5141C3F5286C434A554114AE4751B10F5141295C8F22444A5541F6285C5FAC0F5141713D0A57444A554100000070AC0F51415C8FC2F5454A5541B81E856BAC0F5141CDCCCC9C484A554166666656AC0F514185EB51984A4A55413D0AD703AC0F51418FC2F5B84C4A5541302B93DFAB0F5141808C84814E4A5541470762BFAB0F51413BFA4F35504A55416414F8A8AB0F51413FBFB574514A5541EE57A6B5AB0F51417DB43289534A554100000050B60F514185EB51884F4A5541A588AB81B90F5141A1B95055564A55417B14AEB7B90F514185EB51C8564A5541000000E0BD0F5141CDCCCC4C554A55415289C0C7BE0F5141DC690A19544A554160DA0341BF0F51418D3AC475534A5541C77E1AACBF0F514155FEAFE0524A55411F85EB31C00F514166666626524A5541D5B63648C10F51415BC95828514A55417B14AE17C20F514148E17A04504A5541EC51B8AEC30F5141EC51B8BE4E4A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110493 - 171476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000030000000A4703D2A54305141D7A3706D91D05441B81E856B54305141F6285C3F8ED054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D0544148E17AF4523051416666664683D054413333333350305141295C8FD27FD05441AE47E1CA4C305141A4703D0A7ED05441E17A14FE4A305141B81E855B7CD05441AE47E1FA463051417B14AE477AD05441C3F5281C41305141C3F528FC79D05441F6285C2F39305141295C8F3277D0544114AE4721373051417B14AE9770D05441D7A3705D333051419A9999F969D05441000000E02D3051415C8FC20565D054419A9999B92730514152B81EA562D0544185EB51C822305141CDCCCC3C61D05441A4703D0A1E30514148E17A845ED05441EC51B83E14305141333333335ED054413D0AD74312305141295C8F225ED054415C8FC215103051410AD7A3105ED05441A4703D3A0B305141CDCCCC2C5ED05441713D0A8704305141713D0AF75DD054417B14AE270230514114AE47B15DD05441E17A140EFE2F5141EC51B8BE5CD054418FC2F538F92F5141C3F5280C5BD0544114AE4771FB2F5141F6285C0F5DD05441295C8F5206305141CDCCCCDC64D054410AD7A31010305141713D0AF76AD05441C3F5289C133051415C8FC2856DD0544114AE473117305141E17A148E70D054413D0AD7831B305141A4703D7A71D054415C8FC2C52130514148E17A3471D054411F85EBC127305141F6285CEF6FD054419A9999792B3051418FC2F5D86ED05441713D0AA72D305141A4703DAA6FD054415C8FC275313051411F85EB3175D05441E17A142E34305141EC51B82E7AD0544152B81E4535305141F6285CCF7DD05441A4703D9A3630514152B81E2580D05441666666C6373051415C8FC26580D054415C8FC2A5383051411F85EBB180D054410AD7A3603C305141295C8F9280D0544185EB51A83E3051415C8FC20582D0544185EB51F83F3051410000001085D05441295C8F524430514185EB510888D05441E17A145E4B3051415C8FC2858CD0544100000010503051419A9999A98ED05441A4703D2A54305141D7A3706D91D05441
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441ACFE50584030514133DAF57E7AD054414DB122DF3D305141DDECD86D7AD0544195567C873A3051412FBA9AB179D054418F16C6EC38305141D3C470D277D054418CBEC15238305141CFA4150577D054418CBEC15238305141CE14689E76D054418CBEC1523830514121AA801576D0544137C44C94373051412CE25D0972D054419A4662EB363051412B02AC4470D0544131CE88AF36305141BAB1C1CF6FD05441BBAA0BF8343051417D914BCB6CD054416B2B095A34305141255092B56BD05441B0DD5D993330514197E4ED626AD054418849146C33305141A49954136AD054417F54A47A313051418E05124668D05441000000E02D3051415C8FC20565D0544140D2571D2D305141412B82BA64D05441C75B35C22C305141F9B102A364D05441C05328F42A305141A16CE1F763D05441B2430E582730514147CFBBB262D054415BC187C32530514115A5241662D0544157AA4708253051412BA6D1E061D0544166B788CE243051410BD65FD061D05441F600B6FF22305141421FB37E61D05441C6402A7F183051411E8F34A35FD0544102450D82073051411E8F34A35FD05441599A01C0003051410C51C2DD60D0544177559E480130514100B7BA3F61D054411E3AD2A6013051414539498361D054417F6438DE023051419A6E9A6262D05441BC83B8BE0E30514152D85F236AD054410AD7A31010305141713D0AF76AD05441AC4AC64A12305141086C5B926CD05441CDFC3D5A18305141630575CD70D054413D0AD7831B305141A4703D7A71D054415C8FC2C52130514148E17A3471D054411F85EBC127305141F6285CEF6FD054419A9999792B3051418FC2F5D86ED05441713D0AA72D305141A4703DAA6FD054415C8FC275313051411F85EB3175D05441E17A142E34305141EC51B82E7AD0544152B81E4535305141F6285CCF7DD054414710B795353051410826975C7ED0544164A33DF13B305141391281847FD05441C286F1F03E305141828AD71D82D05441091767AE3F3051410F1FCB6484D05441EC75E8BF3F30514150D4568D84D0544182AE29CA3F305141615717A584D054412FB705E03F3051415DD2B8D784D05441B36A77254130514125047EDD85D05441295C8F524430514185EB510888D0544145D547AE483051417F6067CF8AD05441A4498FE94C305141037099368DD05441B585E1F14D3051412BFC7FB28DD0544100000010503051419A9999A98ED05441AC75323250305141A7ECA5C08ED054410A9FCA30513051410B40FD378FD05441BFA16CEE53305141BE22442891D05441171F376654305141A67A6F578BD05441FAD3076F543051415AB389AB8AD054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110493 - 352992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000030000000A4703D2A54305141D7A3706D91D05441B81E856B54305141F6285C3F8ED054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D0544148E17AF4523051416666664683D054413333333350305141295C8FD27FD05441AE47E1CA4C305141A4703D0A7ED05441E17A14FE4A305141B81E855B7CD05441AE47E1FA463051417B14AE477AD05441C3F5281C41305141C3F528FC79D05441F6285C2F39305141295C8F3277D0544114AE4721373051417B14AE9770D05441D7A3705D333051419A9999F969D05441000000E02D3051415C8FC20565D054419A9999B92730514152B81EA562D0544185EB51C822305141CDCCCC3C61D05441A4703D0A1E30514148E17A845ED05441EC51B83E14305141333333335ED054413D0AD74312305141295C8F225ED054415C8FC215103051410AD7A3105ED05441A4703D3A0B305141CDCCCC2C5ED05441713D0A8704305141713D0AF75DD054417B14AE270230514114AE47B15DD05441E17A140EFE2F5141EC51B8BE5CD054418FC2F538F92F5141C3F5280C5BD0544114AE4771FB2F5141F6285C0F5DD05441295C8F5206305141CDCCCCDC64D054410AD7A31010305141713D0AF76AD05441C3F5289C133051415C8FC2856DD0544114AE473117305141E17A148E70D054413D0AD7831B305141A4703D7A71D054415C8FC2C52130514148E17A3471D054411F85EBC127305141F6285CEF6FD054419A9999792B3051418FC2F5D86ED05441713D0AA72D305141A4703DAA6FD054415C8FC275313051411F85EB3175D05441E17A142E34305141EC51B82E7AD0544152B81E4535305141F6285CCF7DD05441A4703D9A3630514152B81E2580D05441666666C6373051415C8FC26580D054415C8FC2A5383051411F85EBB180D054410AD7A3603C305141295C8F9280D0544185EB51A83E3051415C8FC20582D0544185EB51F83F3051410000001085D05441295C8F524430514185EB510888D05441E17A145E4B3051415C8FC2858CD0544100000010503051419A9999A98ED05441A4703D2A54305141D7A3706D91D05441
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441ACFE50584030514133DAF57E7AD054414DB122DF3D305141DDECD86D7AD0544195567C873A3051412FBA9AB179D054418F16C6EC38305141D3C470D277D054418CBEC15238305141CFA4150577D054418CBEC15238305141CE14689E76D054418CBEC1523830514121AA801576D0544137C44C94373051412CE25D0972D054419A4662EB363051412B02AC4470D0544131CE88AF36305141BAB1C1CF6FD05441BBAA0BF8343051417D914BCB6CD054416B2B095A34305141255092B56BD05441B0DD5D993330514197E4ED626AD054418849146C33305141A49954136AD054417F54A47A313051418E05124668D05441000000E02D3051415C8FC20565D0544140D2571D2D305141412B82BA64D05441C75B35C22C305141F9B102A364D05441C05328F42A305141A16CE1F763D05441B2430E582730514147CFBBB262D054415BC187C32530514115A5241662D0544157AA4708253051412BA6D1E061D0544166B788CE243051410BD65FD061D05441F600B6FF22305141421FB37E61D05441C6402A7F183051411E8F34A35FD0544102450D82073051411E8F34A35FD05441599A01C0003051410C51C2DD60D0544177559E480130514100B7BA3F61D054411E3AD2A6013051414539498361D054417F6438DE023051419A6E9A6262D05441BC83B8BE0E30514152D85F236AD054410AD7A31010305141713D0AF76AD05441AC4AC64A12305141086C5B926CD05441CDFC3D5A18305141630575CD70D054413D0AD7831B305141A4703D7A71D054415C8FC2C52130514148E17A3471D054411F85EBC127305141F6285CEF6FD054419A9999792B3051418FC2F5D86ED05441713D0AA72D305141A4703DAA6FD054415C8FC275313051411F85EB3175D05441E17A142E34305141EC51B82E7AD0544152B81E4535305141F6285CCF7DD054414710B795353051410826975C7ED0544164A33DF13B305141391281847FD05441C286F1F03E305141828AD71D82D05441091767AE3F3051410F1FCB6484D05441EC75E8BF3F30514150D4568D84D0544182AE29CA3F305141615717A584D054412FB705E03F3051415DD2B8D784D05441B36A77254130514125047EDD85D05441295C8F524430514185EB510888D0544145D547AE483051417F6067CF8AD05441A4498FE94C305141037099368DD05441B585E1F14D3051412BFC7FB28DD0544100000010503051419A9999A98ED05441AC75323250305141A7ECA5C08ED054410A9FCA30513051410B40FD378FD05441BFA16CEE53305141BE22442891D05441171F376654305141A67A6F578BD05441FAD3076F543051415AB389AB8AD054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>367674 - 3114867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000170000000AD7A300FDCB5041C3F5287C05385441E17A143EFCCB5041333333B3FC3754415C8FC2F50CCC5041B81E852BF8375441E17A14DE24CC5041B81E853BF23754413D0AD7433DCC5041713D0A47ED375441AE47E15A3CCC504185EB51D8E1375441333333D339CC504166666606DD375441C3F528FC2FCC5041A4703DEADD375441E17A146E06CC5041F6285CEFE3375441C3F5285C02CC5041B81E858BE73754415C8FC225FECB5041295C8F62EB3754411F85EB21F9CB504185EB5188EC375441CDCCCCCCF2CB504148E17A44EA37544152B81E55E4CB5041CDCCCCCCE6375441AE47E1EACCCB504166666626E537544133333373CCCB5041AE47E1BAEB375441CDCCCC5CCCCB5041F6285CBFEF375441D7A3700DCCCB504148E17A94F7375441C3F5285CD2CB5041333333D3FE375441A4703D4AD5CB5041EC51B81E023854410AD7A3A0DCCB50419A9999590338544100000000E9CB5041C3F528EC043854410AD7A300FDCB5041C3F5287C05385441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B8B2F1ABDFCB5041316BA96AC337544179BA2540D7CB50412147CEE0E537544116C6AC47D8CB5041743D60F3E5375441527C57DCDFCB5041A852217CE63754410D04EA8DE3CB5041A22EC3BEE63754417530F85AE4CB504161E96FB8E63754411EC2880FE9CB504104A3892DD33754419A999909ECCB5041C3F5281CC7375441B8B2F1ABDFCB5041316BA96AC3375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>367674 - 3503049
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000170000000AD7A300FDCB5041C3F5287C05385441E17A143EFCCB5041333333B3FC3754415C8FC2F50CCC5041B81E852BF8375441E17A14DE24CC5041B81E853BF23754413D0AD7433DCC5041713D0A47ED375441AE47E15A3CCC504185EB51D8E1375441333333D339CC504166666606DD375441C3F528FC2FCC5041A4703DEADD375441E17A146E06CC5041F6285CEFE3375441C3F5285C02CC5041B81E858BE73754415C8FC225FECB5041295C8F62EB3754411F85EB21F9CB504185EB5188EC375441CDCCCCCCF2CB504148E17A44EA37544152B81E55E4CB5041CDCCCCCCE6375441AE47E1EACCCB504166666626E537544133333373CCCB5041AE47E1BAEB375441CDCCCC5CCCCB5041F6285CBFEF375441D7A3700DCCCB504148E17A94F7375441C3F5285CD2CB5041333333D3FE375441A4703D4AD5CB5041EC51B81E023854410AD7A3A0DCCB50419A9999590338544100000000E9CB5041C3F528EC043854410AD7A300FDCB5041C3F5287C05385441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B8B2F1ABDFCB5041316BA96AC337544179BA2540D7CB50412147CEE0E537544116C6AC47D8CB5041743D60F3E5375441527C57DCDFCB5041A852217CE63754410D04EA8DE3CB5041A22EC3BEE63754417530F85AE4CB504161E96FB8E63754411EC2880FE9CB504104A3892DD33754419A999909ECCB5041C3F5281CC7375441B8B2F1ABDFCB5041316BA96AC3375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535981 - 87189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002500000051320C71525551411D68A0C020635441333333E34E555141AE47E13A2363544148E17AF44B5551416666664625635441A4703DBA495551419A9999092763544152B81E2548555141713D0A67286354410000009046555141B81E85BB29635441B81E85CB4355514114AE47912B635441666666F6415551417B14AEB72C635441CDCCCC0C3F55514185EB51682E6354419A9999093D555141E17A144E2F6354411F85EB613B55514185EB51D82F6354417B14AE6739555141A4703DDA3063544185EB51083755514152B81E2532635441C3F5280C34555141CDCCCC0C3463544152B81E55345551410AD7A36037635441A4703D6A345551419A9999593863544114AE4751365551411F85EBB1546354419A999999375551419A9999C9676354418FC2F5B838555141666666F667635441F6285C0F3B5551418FC2F508686354411F85EBD13C555141AE47E1DA67635441C3F5288C3E5551410AD7A35067635441000000A03F5551413333333366635441000000A03F5551415C8FC2A5636354413D0AD78344555141EC51B8FE616354413D0AD7C345555141C3F5285C6163544118D34ECE45555141299C247D5E6354412A6465064B555141E5F71E2F5D635441CA549F134F555141A0E87AA25C6354416B45D92053555141F9758A1D5D6354410A36132E57555141B3FB47525D635441F48DE4BC55555141C56EC06F4A63544135B033935B5551418135596048635441C1A4B8295B55514115580E69406354419313808B5A555141D84CD7CB36635441AB6728F7585551411E7FB8F91C63544151320C71525551411D68A0C020635441050000009A9999C9375551411F85EB11426354415C8FC25539555141666666F64163544114AE47713955514148E17A9443635441C3F528DC37555141E17A149E436354419A9999C9375551411F85EB1142635441
+</a>
+
+<b>
+01060000000200000001030000000100000022000000ED0EEB14575551412AA6D8085C635441B36FD70F5755514140CA5DC65B635441DE6FD9FF565551412AE5F1F45A635441B2CCAEA15655514117BDCF2356635441F75ACE9256555141C840FF6055635441E25E36685655514172FA3833536354417C8F6758565551412C093764526354417C3D0855565551415CA60D38526354412B6A912256555141E68D36A34F6354415B3AAAE255555141D91B635E4C635441F48DE4BC55555141C66EC06F4A6354411BAF297B5B555141E735D56848635441123D5DEF5A555141929947DD3C6354419613808B5A555141D84CD7CB36635441E057B84159555141FBCAA6BC21635441FA0D53DD58555141531FCC181D63544192E13E8B5755514142DD55F41E635441BFF495135A555141BE5958EB46635441DEFE2015545551419BD05E3E4963544194C8F65655555141676B969C5B635441165C5E024D5551413A6E1D745B6354416441FEE64A555141E3282BC15B635441FADB14C9455551418CE3380E5C63544199BB921546555141ED9C68DA5D63544115F4091F49555141EDD3F5A85D635441286465064B555141E8F71E2F5D635441E668E3A74C5551419E0883F65C635441DF03CB244D555141BD5B93E55C635441CF549F134F5551419FE87AA25C63544179DE137951555141C14F43EB5C635441000DA59F51555141B8B4D6EF5C635441F5102CAC54555141A35DA4315D6354415034D12957555141E415861A5D635441ED0EEB14575551412AA6D8085C63544101030000000100000004000000BC1A64B44555514194F196E05D635441A39622164655514196438BDC5D63544199BB921546555141ED9C68DA5D635441BC1A64B44555514194F196E05D635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535981 - 266812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002500000051320C71525551411D68A0C020635441333333E34E555141AE47E13A2363544148E17AF44B5551416666664625635441A4703DBA495551419A9999092763544152B81E2548555141713D0A67286354410000009046555141B81E85BB29635441B81E85CB4355514114AE47912B635441666666F6415551417B14AEB72C635441CDCCCC0C3F55514185EB51682E6354419A9999093D555141E17A144E2F6354411F85EB613B55514185EB51D82F6354417B14AE6739555141A4703DDA3063544185EB51083755514152B81E2532635441C3F5280C34555141CDCCCC0C3463544152B81E55345551410AD7A36037635441A4703D6A345551419A9999593863544114AE4751365551411F85EBB1546354419A999999375551419A9999C9676354418FC2F5B838555141666666F667635441F6285C0F3B5551418FC2F508686354411F85EBD13C555141AE47E1DA67635441C3F5288C3E5551410AD7A35067635441000000A03F5551413333333366635441000000A03F5551415C8FC2A5636354413D0AD78344555141EC51B8FE616354413D0AD7C345555141C3F5285C6163544118D34ECE45555141299C247D5E6354412A6465064B555141E5F71E2F5D635441CA549F134F555141A0E87AA25C6354416B45D92053555141F9758A1D5D6354410A36132E57555141B3FB47525D635441F48DE4BC55555141C56EC06F4A63544135B033935B5551418135596048635441C1A4B8295B55514115580E69406354419313808B5A555141D84CD7CB36635441AB6728F7585551411E7FB8F91C63544151320C71525551411D68A0C020635441050000009A9999C9375551411F85EB11426354415C8FC25539555141666666F64163544114AE47713955514148E17A9443635441C3F528DC37555141E17A149E436354419A9999C9375551411F85EB1142635441
+</a>
+
+<b>
+01060000000200000001030000000100000022000000ED0EEB14575551412AA6D8085C635441B36FD70F5755514140CA5DC65B635441DE6FD9FF565551412AE5F1F45A635441B2CCAEA15655514117BDCF2356635441F75ACE9256555141C840FF6055635441E25E36685655514172FA3833536354417C8F6758565551412C093764526354417C3D0855565551415CA60D38526354412B6A912256555141E68D36A34F6354415B3AAAE255555141D91B635E4C635441F48DE4BC55555141C66EC06F4A6354411BAF297B5B555141E735D56848635441123D5DEF5A555141929947DD3C6354419613808B5A555141D84CD7CB36635441E057B84159555141FBCAA6BC21635441FA0D53DD58555141531FCC181D63544192E13E8B5755514142DD55F41E635441BFF495135A555141BE5958EB46635441DEFE2015545551419BD05E3E4963544194C8F65655555141676B969C5B635441165C5E024D5551413A6E1D745B6354416441FEE64A555141E3282BC15B635441FADB14C9455551418CE3380E5C63544199BB921546555141ED9C68DA5D63544115F4091F49555141EDD3F5A85D635441286465064B555141E8F71E2F5D635441E668E3A74C5551419E0883F65C635441DF03CB244D555141BD5B93E55C635441CF549F134F5551419FE87AA25C63544179DE137951555141C14F43EB5C635441000DA59F51555141B8B4D6EF5C635441F5102CAC54555141A35DA4315D6354415034D12957555141E415861A5D635441ED0EEB14575551412AA6D8085C63544101030000000100000004000000BC1A64B44555514194F196E05D635441A39622164655514196438BDC5D63544199BB921546555141ED9C68DA5D635441BC1A64B44555514194F196E05D635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>111997 - 3138552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000270000001F85EB810B4551415C8FC205B9DE5441666666C605455141B81E853BB9DE54413333336302455141D7A370FDB8DE54418FC2F5A800455141B81E859BB0DE544148E17AA4EF445141E17A14DEACDE5441F6285C1FEC445141AE47E1FAABDE544100000010D944514185EB5148B0DE54411F85EB01D14451411F85EBD1B1DE54419A9999A9BE445141F6285CCFB0DE5441E17A141EAB44514152B81EF5B2DE544100000090A84451418FC2F588C7DE54413D0AD7B3A644514185EB5168DBDE54411F85EB11A4445141C3F5285CF3DE5441F6285C6FA544514185EB5148F4DE544100000090A8445141295C8F72F4DE5441A4703D2AC44451415C8FC215F3DE54411F85EB81D4445141C3F5285CF2DE54417B14AE87E744514185EB5128EFDE54415C8FC2F5F544514100000010ECDE5441666666F6F6445141EC51B8DEEBDE5441F6285CCF0D45514114AE47C1E7DE54411F85EBE1254551411F85EBC1E1DE54419A9999392E45514114AE4771E0DE54415C8FC2153245514166666636DFDE54416666664637455141D7A370ADDFDE5441CDCCCC8C3B45514152B81E35E1DE54411F85EB113D4551415C8FC2D5D2DE5441295C8FF23C4551415C8FC2F5CFDE544114AE47A13B455141713D0AD7CEDE5441E17A149E3545514166666686CFDE544152B81E2531455141295C8F92CFDE544148E17AA42B455141E17A14CECEDE54417B14AE772B455141C3F528CCCDDE5441333333C32A4551415C8FC295C9DE5441D7A370AD2A4551419A9999C9C3DE5441295C8F62184551410AD7A330C8DE54413D0AD7F3104551417B14AEF7CADE5441F6285C1F0E4551411F85EB31BDDE54411F85EB810B4551415C8FC205B9DE5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000A9CD12E8EC445141C06B7C2DACDE5441C182CBF6EC445141AFA03231ACDE5441CE7C3C76ED4451414609C397B1DE544186871DECED445141015FCB46B5DE54411ABD8239F0445141DF894F1EB7DE544135E3A25CF74451414D9F110AB8DE544188B9379200455141A9240245B8DE5441AED9DAF3014551412E15BD1ABDDE544190689397F74451410046BEB3C4DE544189D24425F144514185367989C9DE5441BF3792FEEF445141D276BF4CCCDE5441F662C32CF2445141459D8CC6D3DE5441BC057810F54451410B4041AAD6DE54414BBE9B46FB4451415AB2A15BD4DE5441307F6E9003455141A05C99ACD0DE54416180879D0E455141BFE6ED9BCBDE54411B75E4BF0E4551415318578BCBDE54413515BD020A45514128CA95E1B9DE5441D2F97D5503455141A7240245B8DE54412A3447570045514189B3BAE8ADDE5441B58836F9F8445141AB883611ACDE54419B6216D6F144514198F86460ABDE5441A9CD12E8EC445141C06B7C2DACDE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>111997 - 3382312
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000270000001F85EB810B4551415C8FC205B9DE5441666666C605455141B81E853BB9DE54413333336302455141D7A370FDB8DE54418FC2F5A800455141B81E859BB0DE544148E17AA4EF445141E17A14DEACDE5441F6285C1FEC445141AE47E1FAABDE544100000010D944514185EB5148B0DE54411F85EB01D14451411F85EBD1B1DE54419A9999A9BE445141F6285CCFB0DE5441E17A141EAB44514152B81EF5B2DE544100000090A84451418FC2F588C7DE54413D0AD7B3A644514185EB5168DBDE54411F85EB11A4445141C3F5285CF3DE5441F6285C6FA544514185EB5148F4DE544100000090A8445141295C8F72F4DE5441A4703D2AC44451415C8FC215F3DE54411F85EB81D4445141C3F5285CF2DE54417B14AE87E744514185EB5128EFDE54415C8FC2F5F544514100000010ECDE5441666666F6F6445141EC51B8DEEBDE5441F6285CCF0D45514114AE47C1E7DE54411F85EBE1254551411F85EBC1E1DE54419A9999392E45514114AE4771E0DE54415C8FC2153245514166666636DFDE54416666664637455141D7A370ADDFDE5441CDCCCC8C3B45514152B81E35E1DE54411F85EB113D4551415C8FC2D5D2DE5441295C8FF23C4551415C8FC2F5CFDE544114AE47A13B455141713D0AD7CEDE5441E17A149E3545514166666686CFDE544152B81E2531455141295C8F92CFDE544148E17AA42B455141E17A14CECEDE54417B14AE772B455141C3F528CCCDDE5441333333C32A4551415C8FC295C9DE5441D7A370AD2A4551419A9999C9C3DE5441295C8F62184551410AD7A330C8DE54413D0AD7F3104551417B14AEF7CADE5441F6285C1F0E4551411F85EB31BDDE54411F85EB810B4551415C8FC205B9DE5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000A9CD12E8EC445141C06B7C2DACDE5441C182CBF6EC445141AFA03231ACDE5441CE7C3C76ED4451414609C397B1DE544186871DECED445141015FCB46B5DE54411ABD8239F0445141DF894F1EB7DE544135E3A25CF74451414D9F110AB8DE544188B9379200455141A9240245B8DE5441AED9DAF3014551412E15BD1ABDDE544190689397F74451410046BEB3C4DE544189D24425F144514185367989C9DE5441BF3792FEEF445141D276BF4CCCDE5441F662C32CF2445141459D8CC6D3DE5441BC057810F54451410B4041AAD6DE54414BBE9B46FB4451415AB2A15BD4DE5441307F6E9003455141A05C99ACD0DE54416180879D0E455141BFE6ED9BCBDE54411B75E4BF0E4551415318578BCBDE54413515BD020A45514128CA95E1B9DE5441D2F97D5503455141A7240245B8DE54412A3447570045514189B3BAE8ADDE5441B58836F9F8445141AB883611ACDE54419B6216D6F144514198F86460ABDE5441A9CD12E8EC445141C06B7C2DACDE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>114502 - 307399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F5989CD950419A9999C985975441E17A14BE96D9504152B81EC58C9754413D0AD77390D95041333333839597544152B81EE589D9504100000080A0975441A4703DBA85D9504152B81E15A8975441B81E85BB82D950410AD7A3B0AE975441F6285C5F7DD950410AD7A360BD975441295C8F127AD95041295C8F52C69754411F85EBF188D950413D0AD723C89754410AD7A37089D9504133333333C897544185EB51D88AD950419A999999C2975441333333A38DD950413D0AD753B99754410AD7A3309CD95041A4703D0AA09754410AD7A310A7D9504114AE47A1909754410AD7A360A8D95041A4703D9A8E9754418FC2F5989CD950419A9999C985975441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000395AA2FB85D9504109B3239EA7975441A4703DBA85D9504152B81E15A897544145AAFB9F83D95041F02B9CB8AC975441B81E85BB82D950410AD7A3B0AE975441F6285C5F7DD950410AD7A360BD975441295C8F127AD95041295C8F52C6975441D780B3EA7CD950418BF48AABC6975441CE2AFF0B7DD95041131E4024C6975441202FDE157DD950418D67C811C69754414494821E7DD95041D18AB5FEC59754415D639F247DD950411EDCC2EEC5975441B6F97D3D85D95041E33425FEAE9754418EB9449F8ED950419C06DA989D9754412F33CBB092D95041427B52E396975441F5E0890A96D950418DF505B091975441E0EE0F7D9BD950418F64DEE08A975441E93EC4399ED95041925110C087975441FEAAD0469ED95041EE5A25B0879754417D2703539ED95041FEEE1F9F87975441A3F6115E9ED95041989E578D87975441F5FAF0679ED95041D4E8DF7A87975441196095709ED950410D0CCD6787975441EDADF5779ED9504129F1335487975441A0CE097E9ED950418F132A40879754419E4C56809ED95041602C4E368797544104754F039ED95041F861BFD8869754416E2C6CEE9DD95041A5FF1DC9869754411B0467B99DD95041C92C71A1869754417C90EF989CD950411BFDA0C985975441F59C0E589AD9504177ED9879889754412FA8CC6B97D950410C84F2F58B975441EA10C57696D9504105013C288D975441655CDA4096D9504190722C738D9754415D41A83E96D950417EB839768D975441F89687C595D95041DACE941E8E9754410A48FB6492D95041137C38D092975441C06A575690D95041426AA0B495975441B95F664990D950410FA04FCA95975441C7F7224190D95041B81E28D895975441343EC0668CD95041D0A9D44F9C975441CF63242589D950419C9B4ADDA1975441395AA2FB85D9504109B3239EA7975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115120 - 190957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001200000052B81E7554DE50411F85EB412F9754410AD7A35058DE504148E17A542B975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F97544152B81E9548DE50418FC2F578179754417B14AE272BDE5041A4703D0A1E975441333333E332DE50413D0AD7F34297544148E17A2433DE5041CDCCCC2C44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E97544185EB51A84FDE5041295C8FF24F9754413D0AD75357DE504185EB5168749754415C8FC2D55ADE5041D7A370FD73975441B81E85EB5CDE5041EC51B80E73975441666666465DDE50413D0AD773729754411F85EB1151DE50413D0AD733389754413333338350DE5041D7A370ED3597544152B81E7554DE50411F85EB412F975441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000042FBB57454DE50413F9B9C422F97544150F91D7554DE504147B3EC412F9754410D5B4B8455DE50411F25D32D2E975441C804A35058DE5041F19A7A542B975441942DF79B57DE5041D79030722A975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F9754411C68BCC94BDE5041B86C63851B97544183241E9548DE50413483F678179754411D48AE272BDE5041448A3D0A1E9754417B651E2E33DE50416381FC2A44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E9754413D0AD75357DE504185EB5168749754415C8FC2D55ADE5041D7A370FD73975441666666465DDE50413D0AD7737297544186AFEB1151DE5041B3D4D73338975441E845D0E950DE50414F4E2D9037975441C0DDC8E950DE5041A1140F903797544191FA827E50DE5041DACA28F6359754416B2F568350DE5041A167FFED359754413333338350DE5041D7A370ED3597544142FBB57454DE50413F9B9C422F975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115120 - 375692
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001200000052B81E7554DE50411F85EB412F9754410AD7A35058DE504148E17A542B975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F97544152B81E9548DE50418FC2F578179754417B14AE272BDE5041A4703D0A1E975441333333E332DE50413D0AD7F34297544148E17A2433DE5041CDCCCC2C44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E97544185EB51A84FDE5041295C8FF24F9754413D0AD75357DE504185EB5168749754415C8FC2D55ADE5041D7A370FD73975441B81E85EB5CDE5041EC51B80E73975441666666465DDE50413D0AD773729754411F85EB1151DE50413D0AD733389754413333338350DE5041D7A370ED3597544152B81E7554DE50411F85EB412F975441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000042FBB57454DE50413F9B9C422F97544150F91D7554DE504147B3EC412F9754410D5B4B8455DE50411F25D32D2E975441C804A35058DE5041F19A7A542B975441942DF79B57DE5041D79030722A975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F9754411C68BCC94BDE5041B86C63851B97544183241E9548DE50413483F678179754411D48AE272BDE5041448A3D0A1E9754417B651E2E33DE50416381FC2A44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E9754413D0AD75357DE504185EB5168749754415C8FC2D55ADE5041D7A370FD73975441666666465DDE50413D0AD7737297544186AFEB1151DE5041B3D4D73338975441E845D0E950DE50414F4E2D9037975441C0DDC8E950DE5041A1140F903797544191FA827E50DE5041DACA28F6359754416B2F568350DE5041A167FFED359754413333338350DE5041D7A370ED3597544142FBB57454DE50413F9B9C422F975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115473 - 189825
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000060000009A99991916D150411F85EB8119925441AE47E1CA12D15041295C8FF2239254410000008030D150411F85EB3130925441F6285C9F2FD15041E17A148E2D925441A4703DFA2BD15041713D0A87229254419A99991916D150411F85EB8119925441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000737D991916D15041FBDDEB8119925441A8D5B7D312D15041CC3A50EF239254419148FF7F30D15041415DE93130925441CD99CB5730D15041675AF6B82F92544139DA69DF2FD150415FB5C94E2E92544179C55B9F2FD150410541158E2D925441E8316BE42DD1504150FC03522892544129AB3DFA2BD150417DEE0A8722925441737D991916D15041FBDDEB8119925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115473 - 374757
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000060000009A99991916D150411F85EB8119925441AE47E1CA12D15041295C8FF2239254410000008030D150411F85EB3130925441F6285C9F2FD15041E17A148E2D925441A4703DFA2BD15041713D0A87229254419A99991916D150411F85EB8119925441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000737D991916D15041FBDDEB8119925441A8D5B7D312D15041CC3A50EF239254419148FF7F30D15041415DE93130925441CD99CB5730D15041675AF6B82F92544139DA69DF2FD150415FB5C94E2E92544179C55B9F2FD150410541158E2D925441E8316BE42DD1504150FC03522892544129AB3DFA2BD150417DEE0A8722925441737D991916D15041FBDDEB8119925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976291 - 379399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000048E17A3470AD5041713D0A6773DD5441AE47E1EA6DAD504148E17A5475DD5441E17A145E6DAD504114AE47217CDD5441C3F528FC6AAD5041E17A14CE87DD5441E17A147E6CAD5041F6285C9F89DD544185EB51D87CAD504185EB51388EDD5441D7A3704D80AD50410AD7A3F08DDD5441EC51B8BE7EAD5041A4703D7A83DD544152B81E0583AD5041CDCCCCFC7CDD5441D7A3705D7EAD5041F6285C9F7ADD54410AD7A3308BAD5041A4703DCA6EDD5441EC51B80E91AD504148E17A646BDD5441AE47E12A98AD5041713D0AA762DD54413D0AD7F39FAD50418FC2F5F860DD54418FC2F528ADAD50417B14AE375FDD54417B14AEB7B8AD504152B81EC55FDD54410AD7A3D0BBAD5041AE47E10A5BDD5441CDCCCC8CAEAD504185EB51A859DD54415C8FC2E599AD504148E17A145BDD5441D7A3700D93AD50410AD7A3605CDD5441D7A3702D81AD5041D7A3701D65DD5441A4703D8A77AD5041A4703D3A6DDD54411F85EBF178AD50417B14AED771DD5441295C8FD274AD5041713D0AF775DD544148E17A3470AD5041713D0A6773DD5441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000EBE51426AEAD50411D2065AF59DD5441548806D299AD5041BDA15A4D5BDD5441DB2447D292AD5041091CB4B35CDD54412BACE85281AD5041CDF9CC1965DD5441BE9072AC77AD50416276AE396DDD544101C27ADD78AD50412B74E7EA70DD5441069F0AE978AD50417F4B84BA71DD54411F85EBF178AD50417B14AED771DD544114308CC578AD504186690D0472DD544143E49AE374AD504157B5FEE575DD5441295C8FD274AD5041713D0AF775DD54417D660F5D73AD50416D3D7B6775DD5441387BE31C71AD50412AD7622774DD544148E17A3470AD5041713D0A6773DD5441652AF2F36DAD5041A03FD74C75DD5441A9674A7E6DAD504149C7D7F67BDD5441140DE2FC6AAD504107A2F3CE87DD5441E17A147E6CAD5041F6285C9F89DD5441F5F23DDF70AD5041EF0693DA8ADD5441851469A87CAD5041BC68A9ED8DDD5441A45A026480AD5041D844F7CB81DD5441772642B982AD50419441315D7DDD5441D08EC20E7EAD50419BB8C4547ADD5441FE7728A883AD504184E9BE9073DD544159954EEC86AD5041B11D7F3B71DD54417F527B9F87AD504165A325D56FDD544161C187D28BAD504192D7E57F6DDD544188CDBDA98DAD50418F9BA65B6DDD544193BC45A98EAD50416D5BB0C76CDD5441712DFBFA8FAD5041339C24046CDD5441CB817AF490AD50415D77ECEE6ADD544100E2738593AD5041025AC6AA67DD54415BFF99C996AD5041E4132DEF63DD5441E35080B897AD5041D570601162DD5441D46259C99DAD5041AFB3335E61DD5441828DCEEA9EAD5041F96F273261DD54413D0AD7F39FAD50418FC2F5F860DD54413983CC5DA3AD50410445D48460DD54416C0CB284A8AD504101A520BC5FDD54415372F1F8A9AD5041EA8D1CA45FDD54418FC2F528ADAD50417B14AE375FDD544112109F19AFAD504129316C4F5FDD544147042BC0AFAD50413E7CAD445FDD5441EF907C57B0AD504145359E5E5FDD5441ECDA123BB6AD504121F8AFA65FDD544172CE8841B8AD504174DC78BF5FDD54414AFCC16BB8AD50418C967DC15FDD5441D5B7C68EB8AD50416A242AC35FDD5441F2793FC1BAAD50418C3F16A95CDD5441D9F5E35EBBAD504129F07CB85BDD5441A88A97CDBBAD50410732880F5BDD5441D26D055DAEAD504102649CAB59DD5441EBE51426AEAD50411D2065AF59DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>117456 - 356904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000005000000AE47E11AA5C6504133333383A9AB5441AE47E1CAA8C65041C3F5284C98AB5441B81E854B73C650413D0AD7D38EAB5441D7A370AD6FC65041A4703DFA9FAB5441AE47E11AA5C6504133333383A9AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000A71E5DCF72C65041C3FF712091AB544194FBB24372C65041EEC092B693AB544157E3FF0672C65041F22957D694AB5441AAFDABD571C65041200B32C095AB544117A4157071C650418611CEA197AB54417E062F6F71C65041876113A697AB54411CEE637770C650416037D33C9CAB544170BECEA773C6504164B6665A9EAB54417E29E084A5C6504160B15C94A7AB54414DF759DBA5C65041B7F28EE7A5AB54412BA1F97EA7C650419F46A6599EAB544140B9687AA8C650413522D6C399AB544159A4E7F472C650415205786E90AB5441A71E5DCF72C65041C3FF712091AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>117457 - 356832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703DBA3EC65041E17A141ED4AB5441F6285CAF3AC65041CDCCCC9CCDAB54418FC2F568E8C5504185EB51B8D1AB54418FC2F568EBC550415C8FC245D8AB544114AE4711ECC5504152B81EB5D9AB5441295C8F623FC65041E17A142ED5AB5441A4703DBA3EC65041E17A141ED4AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000DF21D2603FC650417FAC2C2ED5AB5441CB7F55B83EC65041074F031BD4AB544153F416C235C65041DB7A9690D4AB5441AB5D126BEBC5504100705E4AD8AB5441F6068914ECC55041866FF1B4D9AB5441DBE99E7BECC550416A1859ADD9AB5441D454A779ECC55041F6C372AFD9AB5441EBFD0C8CECC550414BD772AED9AB5441A4B445A0ECC55041648959ADD9AB54419228906AEDC55041AB715BA2D9AB54413E5B50BAF7C55041C88BE912D9AB5441DF21D2603FC650417FAC2C2ED5AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119051 - 3179431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000D7A3708DFCCA50413333334398AA5441295C8FB22BCB5041A4703DFA91AA54415C8FC2852DCB5041000000B090AA5441F6285C4F29CB50416666665685AA5441AE47E1AA26CB50411F85EBA179AA5441C3F5285CFACA5041C3F528BC89AA5441A4703DEAF7CA5041333333738AAA54410AD7A320F8CA50413D0AD7838EAA544166666626F8CA50415C8FC2D58EAA544166666666F8CA50415C8FC26592AA5441666666F6F8CA50410AD7A36092AA5441C3F5288CFBCA50419A99994992AA5441D7A3708DFCCA50413333334398AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000014FF252E0ACB50416F2824C29BAA5441AAF35A8F16CB5041FE3CACA99AAA5441AC29A09A1ECB50415C324E9898AA54418D185CE324CB50417A0782CC96AA5441FFE611002BCB50418BEE081292AA5441943019D714CB50413C8E4F0695AA544191DB99F904CB50411AF2C12397AA54411714F396FCCA50411DCB007A98AA54416A73CEFFFCCA5041498EB9E89AAA54419EE2DD11FDCA5041DCAFD8ED9BAA54413D0AD723FDCA5041EC51B8BE9BAA5441E619DF4300CB5041473CA2D79BAA54411870A54901CB5041F71FC9DF9BAA544114FF252E0ACB50416F2824C29BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119051 - 3584076
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000D7A3708DFCCA50413333334398AA5441295C8FB22BCB5041A4703DFA91AA54415C8FC2852DCB5041000000B090AA5441F6285C4F29CB50416666665685AA5441AE47E1AA26CB50411F85EBA179AA5441C3F5285CFACA5041C3F528BC89AA5441A4703DEAF7CA5041333333738AAA54410AD7A320F8CA50413D0AD7838EAA544166666626F8CA50415C8FC2D58EAA544166666666F8CA50415C8FC26592AA5441666666F6F8CA50410AD7A36092AA5441C3F5288CFBCA50419A99994992AA5441D7A3708DFCCA50413333334398AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000014FF252E0ACB50416F2824C29BAA5441AAF35A8F16CB5041FE3CACA99AAA5441AC29A09A1ECB50415C324E9898AA54418D185CE324CB50417A0782CC96AA5441FFE611002BCB50418BEE081292AA5441943019D714CB50413C8E4F0695AA544191DB99F904CB50411AF2C12397AA54411714F396FCCA50411DCB007A98AA54416A73CEFFFCCA5041498EB9E89AAA54419EE2DD11FDCA5041DCAFD8ED9BAA54413D0AD723FDCA5041EC51B8BE9BAA5441E619DF4300CB5041473CA2D79BAA54411870A54901CB5041F71FC9DF9BAA544114FF252E0ACB50416F2824C29BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119425 - 190947
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000D00000014AE47718DC95041CDCCCCACBFAD5441B81E850B8CC95041713D0A97B7AD54410AD7A3508DC95041E17A14DEAEAD5441CDCCCCBC8DC95041EC51B89EAAAD5441B81E85FB85C950418FC2F588ACAD5441C3F528EC74C95041EC51B8BEB0AD54411F85EB316DC95041AE47E13ACCAD5441F6285C1F6EC95041F6285C7FCDAD54413D0AD70382C95041EC51B86ECDAD5441713D0AF794C95041713D0A47CFAD5441D7A3703D8FC9504114AE4741C9AD544114AE47B18DC950413D0AD773C4AD544114AE47718DC95041CDCCCCACBFAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000014AE47718DC95041CDCCCCACBFAD5441D2B8830B8CC95041C41F0B97B7AD5441F5C0A2508DC95041903415DEAEAD54417ECBCBBC8DC950417691B89EAAAD5441B81E85FB85C950418FC2F588ACAD54416D98AA1075C950416B0AB6B5B0AD54417BD028EC74C9504186D6B8BEB0AD544121E8C49170C950416C4A5C3AC0AD5441232CEC316DC950419BDAE13ACCAD5441479943F16DC9504159C95D40CDAD5441F6285C1F6EC95041F6285C7FCDAD5441DC06902879C950418CE32076CDAD54413CA1D70382C95041FC51B76ECDAD54414354505D8CC95041123BAD70CEAD5441DBB508F794C9504151170A47CFAD5441D7A3703D8FC9504114AE4741C9AD544114AE47B18DC950413D0AD773C4AD544114AE47718DC95041CDCCCCACBFAD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119425 - 395138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000D00000014AE47718DC95041CDCCCCACBFAD5441B81E850B8CC95041713D0A97B7AD54410AD7A3508DC95041E17A14DEAEAD5441CDCCCCBC8DC95041EC51B89EAAAD5441B81E85FB85C950418FC2F588ACAD5441C3F528EC74C95041EC51B8BEB0AD54411F85EB316DC95041AE47E13ACCAD5441F6285C1F6EC95041F6285C7FCDAD54413D0AD70382C95041EC51B86ECDAD5441713D0AF794C95041713D0A47CFAD5441D7A3703D8FC9504114AE4741C9AD544114AE47B18DC950413D0AD773C4AD544114AE47718DC95041CDCCCCACBFAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000014AE47718DC95041CDCCCCACBFAD5441D2B8830B8CC95041C41F0B97B7AD5441F5C0A2508DC95041903415DEAEAD54417ECBCBBC8DC950417691B89EAAAD5441B81E85FB85C950418FC2F588ACAD54416D98AA1075C950416B0AB6B5B0AD54417BD028EC74C9504186D6B8BEB0AD544121E8C49170C950416C4A5C3AC0AD5441232CEC316DC950419BDAE13ACCAD5441479943F16DC9504159C95D40CDAD5441F6285C1F6EC95041F6285C7FCDAD5441DC06902879C950418CE32076CDAD54413CA1D70382C95041FC51B76ECDAD54414354505D8CC95041123BAD70CEAD5441DBB508F794C9504151170A47CFAD5441D7A3703D8FC9504114AE4741C9AD544114AE47B18DC950413D0AD773C4AD544114AE47718DC95041CDCCCCACBFAD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>120250 - 212955
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000003400514152B81EF52AD05441EC51B8DE38005141B81E854B2DD054413333337344005141333333831ED05441CDCCCC6C47005141D7A3701D1AD0544185EB51384A005141000000A015D0544148E17AB4530051410AD7A33003D05441000000D05D00514114AE4791EFCF5441C3F5289C640051415C8FC2C5E3CF5441295C8F62660051415C8FC215E1CF5441AE47E1BA60005141E17A145EDECF5441000000003400514152B81EF52AD05441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000AE47E1BA60005141E17A145EDECF544164FE66165E0051414F1865E4E2CF54414060EA8C5A0051412E08D6F2E8CF5441266D33EC560051415FB70C29EFCF544119C26AA54E0051412DC8FC54FDCF54411D1A38F74C005141089A9A3500D054415AB1B1AA480051412C01019207D05441B5A3DDF747005141B2FB34C408D05441BC8F67A6470051410DDFB04F09D05441D38A805C3F005141ACEEF78017D05441D2B322F23A005141862177101FD05441000000003400514152B81EF52AD054410C52B8DE38005141901E854B2DD054413333337344005141333333831ED05441B7CCCC6C47005141C2A3701D1AD054414E61048848005141CDFB775618D0544185EB51384A005141000000A015D0544148E17AB4530051410AD7A33003D05441000000D05D00514114AE4791EFCF5441C3F5289C640051415C8FC2C5E3CF5441ABE64D1966005141B4E1AC84E1CF5441195C8F6266005141548FC215E1CF5441AE47E1BA60005141E17A145EDECF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>120250 - 363623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000003400514152B81EF52AD05441EC51B8DE38005141B81E854B2DD054413333337344005141333333831ED05441CDCCCC6C47005141D7A3701D1AD0544185EB51384A005141000000A015D0544148E17AB4530051410AD7A33003D05441000000D05D00514114AE4791EFCF5441C3F5289C640051415C8FC2C5E3CF5441295C8F62660051415C8FC215E1CF5441AE47E1BA60005141E17A145EDECF5441000000003400514152B81EF52AD05441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000AE47E1BA60005141E17A145EDECF544164FE66165E0051414F1865E4E2CF54414060EA8C5A0051412E08D6F2E8CF5441266D33EC560051415FB70C29EFCF544119C26AA54E0051412DC8FC54FDCF54411D1A38F74C005141089A9A3500D054415AB1B1AA480051412C01019207D05441B5A3DDF747005141B2FB34C408D05441BC8F67A6470051410DDFB04F09D05441D38A805C3F005141ACEEF78017D05441D2B322F23A005141862177101FD05441000000003400514152B81EF52AD054410C52B8DE38005141901E854B2DD054413333337344005141333333831ED05441B7CCCC6C47005141C2A3701D1AD054414E61048848005141CDFB775618D0544185EB51384A005141000000A015D0544148E17AB4530051410AD7A33003D05441000000D05D00514114AE4791EFCF5441C3F5289C640051415C8FC2C5E3CF5441ABE64D1966005141B4E1AC84E1CF5441195C8F6266005141548FC215E1CF5441AE47E1BA60005141E17A145EDECF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121082 - 387772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47215D0D514152B81E4546C054419A9999395F0D51418FC2F51844C054419A999979640D5141E17A145E3BC05441F6285C8F6D0D514114AE47112AC0544185EB51286D0D51410AD7A33028C05441E17A146E560D51413D0AD75316C054419A9999D94E0D51413333336321C054419A9999F94B0D5141713D0A2725C05441E17A14CE450D5141EC51B8EE2AC05441333333E33E0D5141AE47E12A32C05441000000003E0D51410000003031C05441EC51B85E2D0D51418FC2F5883FC05441A4703D5A280D5141E17A144E45C0544100000070260D51411F85EBD149C054411F85EBC1350D51415C8FC2E549C0544114AE47B1400D5141A4703DDA4DC05441333333F3490D514185EB51284EC054410AD7A3204C0D5141F6285CDF4CC0544185EB51C8550D5141000000104EC0544185EB51A85A0D5141F6285CAF4CC0544114AE47215D0D514152B81E4546C05441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000AD7A3204C0D5141F6285CDF4CC05441B1EB51C8550D5141F4FFFF0F4EC05441113C9C10560D5141A2C792FB4DC054414FEB51A85A0D5141C0285CAF4CC05441166BEF175C0D5141D74E91F548C0544114AE47215D0D514152B81E4546C054419A9999395F0D51418FC2F51844C0544153183663600D5141462D132A42C0544179999979640D5141C17A145E3BC05441D9B2FF366B0D5141E4AA82882EC05441F1285C8F6D0D51411EAE47112AC0544145EB51286D0D51414BD7A33028C0544134060FDD5F0D5141FF9EDFBD1DC054415591CE9E580D51419EF5890C18C054418A6E41BF4F0D514127280DC023C05441D956986E490D51416EB9E1322BC05441162D6347430D5141003047B430C054413AD16CB73F0D5141059FC91A34C054413462EA503C0D514156F3DC8F35C05441D39E5475370D51419A75EBCC38C054414BF210112E0D5141315BD3B441C05441A2A9A6572A0D5141FE7D25C145C05441ED8E3766280D514140A077CD49C054413D85EBC1350D5141678FC2E549C054411BE1C7FF390D5141193D7F6E4BC0544114AE47B1400D5141A4703DDA4DC054415EF57E3C430D5141F9F3B1EF4DC05441333333F3490D514185EB51284EC054410AD7A3204C0D5141F6285CDF4CC05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121905 - 237159
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001900000014AE4721E10E5141C3F528DCA8C15441EC51B8EEE30E5141713D0AB7A6C1544114AE4701D30E514152B81E4589C15441EC51B85EC10E5141EC51B86E8CC154419A999979C20E5141295C8F2290C15441000000F0C30E5141EC51B89E90C1544133333383C60E514114AE479190C1544166666606C90E5141EC51B8CE8FC154419A9999D9C90E5141295C8F3291C1544152B81E25CA0E514148E17AA492C15441E17A146EC70E5141AE47E17A93C15441EC51B8DEC30E51410AD7A3D094C15441F6285CAFC30E514114AE473194C15441666666A6BD0E51415C8FC2D596C154411F85EB61B70E5141AE47E1CA97C154413D0AD7A3A60E514148E17AD497C15441000000C09E0E5141F6285CBF98C15441C3F5285C9B0E51413D0AD773A1C15441713D0A97990E5141A4703D0AA1C1544152B81E05990E5141AE47E16AA2C15441A4703DCA970E51419A9999F9A8C154415C8FC205AB0E51411F85EB01A9C154410AD7A370BE0E514152B81E75AAC15441EC51B84ECA0E5141EC51B87EACC1544114AE4721E10E5141C3F528DCA8C15441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000052B81E25CA0E514148E17AA492C15441B22D6451BF0E5141A3AC5F1B9AC1544135508FE5A00E5141E07074E799C15441FC9B25889B0E5141D3FD37FBA8C1544174C2979E9B0E51419FB341FBA8C15441EC762DAC9B0E5141179447FBA8C154415A5328CC9B0E5141BC6955FBA8C154418F4825D49B0E51415EDE58FBA8C15441407E803C9C0E5141650386FBA8C15441A9E946BA9C0E5141786CBCFBA8C15441F415E4D19C0E5141A2A3C6FBA8C1544195DB72F79C0E5141FEE2D6FBA8C15441BB4DD3E29D0E51419EB53CFCA8C15441C3C71436A20E5141C493C22E9CC154413B5B5B1BB50E5141C493C22E9CC15441DA86F85FC00E514137B200D69BC15441C01AEF6DCA0E51416476149599C15441E5FDACA8D90E5141335723D894C1544114AE4701D30E514152B81E4589C15441B6AF4DC4C20E5141E021982E8CC1544196F50F89C40E514149624B5F8EC1544172E49E70C60E514193EE9D608FC1544166666606C90E5141EC51B8CE8FC154419A9999D9C90E5141295C8F3291C1544152B81E25CA0E514148E17AA492C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121932 - 3095439
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB718310514152B81E75C8C15441000000D053105141C3F5283CE5C15441C3F5281C571051415C8FC2D5E9C15441666666C65B105141A4703D8AF1C15441CDCCCC9C6410514152B81EE5FEC154417B14AE67641051413D0AD74301C254411F85EBD166105141295C8FB201C25441E17A14CE69105141B81E853B02C254415C8FC2857B10514114AE475101C25441000000407E105141D7A3702D01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441EC51B8AE9B105141CDCCCC3CF5C154413D0AD7E39A105141295C8FF2F0C15441F6285C7F9A1051411F85EBD1EEC154415C8FC2F597105141C3F528FCE7C154419A99996993105141D7A370DDDDC154418FC2F5C88D105141295C8F82D4C15441C3F528AC88105141333333C3CDC154411F85EB718310514152B81E75C8C15441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000CE50C7587F105141F2DBF51E01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441EC51B8AE9B105141CDCCCC3CF5C1544111C156269B1051419EF7885AF2C154413D0AD7E39A105141295C8FF2F0C1544142A19FD89A1051415238C3B5F0C15441CE50C7587F105141F2DBF51E01C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121932 - 3189934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB718310514152B81E75C8C15441000000D053105141C3F5283CE5C15441C3F5281C571051415C8FC2D5E9C15441666666C65B105141A4703D8AF1C15441CDCCCC9C6410514152B81EE5FEC154417B14AE67641051413D0AD74301C254411F85EBD166105141295C8FB201C25441E17A14CE69105141B81E853B02C254415C8FC2857B10514114AE475101C25441000000407E105141D7A3702D01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441EC51B8AE9B105141CDCCCC3CF5C154413D0AD7E39A105141295C8FF2F0C15441F6285C7F9A1051411F85EBD1EEC154415C8FC2F597105141C3F528FCE7C154419A99996993105141D7A370DDDDC154418FC2F5C88D105141295C8F82D4C15441C3F528AC88105141333333C3CDC154411F85EB718310514152B81E75C8C15441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000CE50C7587F105141F2DBF51E01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441EC51B8AE9B105141CDCCCC3CF5C1544111C156269B1051419EF7885AF2C154413D0AD7E39A105141295C8FF2F0C1544142A19FD89A1051415238C3B5F0C15441CE50C7587F105141F2DBF51E01C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187274 - 373704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000005000000B81E850BB0D250417B14AE57B490544114AE47C1C6D250411F85EBB18F90544148E17A54C1D2504133333323939054418FC2F5D8ADD25041713D0AF7B2905441B81E850BB0D250417B14AE57B4905441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000093AB40A8C5D25041F3226B77919054413D3B47C1C6D250416D3EECB18F90544180E97A54C1D25041BF7C3423939054418FC2F5D8ADD25041713D0AF7B2905441BC21850BB0D250419D0FAE57B490544193AB40A8C5D25041F3226B7791905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>123226 - 1554265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8CE82D15041A4703DAA45F35441713D0A5786D150417B14AE5737F354411F85EBE18AD15041D7A370ED24F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441D7A3707D15D15041A4703D9AFFF25441295C8F4212D15041295C8F92FEF254410AD7A3C005D15041E17A148E05F35441713D0A4722D150417B14AEC70EF3544148E17A5421D15041D7A370DD17F35441AE47E15A21D15041666666161BF3544148E17AB422D150415C8FC2851FF35441E17A146E28D15041F6285CCF1FF35441666666462BD150416666660620F35441CDCCCC5C2ED15041EC51B8FE21F35441EC51B8AE30D1504114AE47A123F354417B14AEC74CD15041000000402DF354413D0AD70357D150410000000034F35441333333835AD150411F85EBE135F35441295C8FE270D15041713D0AC73EF35441000000B082D150416666662646F35441EC51B8CE82D15041A4703DAA45F35441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000A37B42D226D150413D7FE81209F35441649AC3673FD1504186A903CD10F354416CF4A68567D150410FE45F5C22F3544174F23D558AD150416953BD2727F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441295C8F4212D15041295C8F92FEF25441C9B66DD10DD150412377610D01F35441A37B42D226D150413D7FE81209F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>123226 - 3544556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8CE82D15041A4703DAA45F35441713D0A5786D150417B14AE5737F354411F85EBE18AD15041D7A370ED24F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441D7A3707D15D15041A4703D9AFFF25441295C8F4212D15041295C8F92FEF254410AD7A3C005D15041E17A148E05F35441713D0A4722D150417B14AEC70EF3544148E17A5421D15041D7A370DD17F35441AE47E15A21D15041666666161BF3544148E17AB422D150415C8FC2851FF35441E17A146E28D15041F6285CCF1FF35441666666462BD150416666660620F35441CDCCCC5C2ED15041EC51B8FE21F35441EC51B8AE30D1504114AE47A123F354417B14AEC74CD15041000000402DF354413D0AD70357D150410000000034F35441333333835AD150411F85EBE135F35441295C8FE270D15041713D0AC73EF35441000000B082D150416666662646F35441EC51B8CE82D15041A4703DAA45F35441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000A37B42D226D150413D7FE81209F35441649AC3673FD1504186A903CD10F354416CF4A68567D150410FE45F5C22F3544174F23D558AD150416953BD2727F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441295C8F4212D15041295C8F92FEF25441C9B66DD10DD150412377610D01F35441A37B42D226D150413D7FE81209F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126042 - 198898
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000700000085EB51C8CCBC5041F6285CEFFA4655413D0AD7A3C9BC5041D7A370DDFA465541B81E858BC5BC5041EC51B8FE0C47554133333313C1BC504185EB51C8204755413D0AD783C5BC50419A9999C92147554133333363C9BC504152B81E150D47554185EB51C8CCBC5041F6285CEFFA465541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000A0745C51CCBC50411CCDB5ECFA46554149EED7A3C9BC504128C471DDFA465541B266858BC5BC5041BB1EB7FE0C475541D2813413C1BC5041DA0751C820475541FBC9F959C5BC50415BBC1FC0214755415EDCD583C5BC5041465599C921475541E275D883C5BC5041510192C92147554169543263C9BC50417F5F23150D4755410EAB3263C9BC5041D06E1F150D475541FFFF50C8CCBC5041B7235CEFFA465541A0745C51CCBC50411CCDB5ECFA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126042 - 416182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000700000085EB51C8CCBC5041F6285CEFFA4655413D0AD7A3C9BC5041D7A370DDFA465541B81E858BC5BC5041EC51B8FE0C47554133333313C1BC504185EB51C8204755413D0AD783C5BC50419A9999C92147554133333363C9BC504152B81E150D47554185EB51C8CCBC5041F6285CEFFA465541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000A0745C51CCBC50411CCDB5ECFA46554149EED7A3C9BC504128C471DDFA465541B266858BC5BC5041BB1EB7FE0C475541D2813413C1BC5041DA0751C820475541FBC9F959C5BC50415BBC1FC0214755415EDCD583C5BC5041465599C921475541E275D883C5BC5041510192C92147554169543263C9BC50417F5F23150D4755410EAB3263C9BC5041D06E1F150D475541FFFF50C8CCBC5041B7235CEFFA465541A0745C51CCBC50411CCDB5ECFA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>124671 - 59570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000713D0A1730BD5041D7A3700D990255418FC2F5A826BD50415C8FC285A302554185EB515836BD50413D0AD703AE0255418FC2F52848BD50419A9999D9B902554148E17A044DBD50415C8FC2B5BC0255413333330350BD504166666656BE025541CDCCCC7C54BD504133333363C00255411F85EBB15ABD5041F6285C8FC202554148E17A0461BD50410AD7A350C4025541B81E856B66BD5041EC51B82EC5025541AE47E1FA6ABD5041A4703D4AC5025541B81E856B6EBD5041713D0AF7C4025541AE47E1FA71BD5041EC51B8EEB502554148E17AF453BD50417B14AE77B202554148E17A644EBD504166666646B00255413D0AD75347BD5041A4703DFAAC0255410AD7A34042BD5041CDCCCCACAB02554114AE47813FBD50411F85EBC1A9025541713D0A1730BD5041D7A3700D99025541
+</a>
+
+<b>
+01060000000100000001030000000100000023000000476FD27352BD504140298A74BF0255414D009D3755BD5041C26F2A83C00255416D35658056BD504197E2A517C10255411F85EBB15ABD5041F6285C8FC2025541E8C45EC05FBD5041816FACF6C302554193FA6FD162BD5041A487B697C4025541AB6F836263BD50415B287CE4C20255414922B2BE64BD5041C1F6A623C4025541C26B139467BD504131BFAE5DC40255412D3A3ED368BD5041542E9FE9C30255418B47137F69BD50410F494941C502554153B86ADE69BD50411AAE8843C50255410F8D8EBD6BBD504116FAD837C502554125E359C16BBD50414D357D37C5025541BD6778E46CBD5041792FFC1BC50255417A0D73316EBD5041D6BC86FCC4025541BF6AB3EE71BD5041B58150EDB502554148E17AF453BD50417B14AE77B20255410011E6B951BD504186FDC796B102554148E17A644EBD504166666646B00255413D0AD75347BD5041A4703DFAAC0255410AD7A34042BD5041CDCCCCACAB02554114AE47813FBD50411F85EBC1A902554159AD599938BD5041F5A50A46A20255419D94303C34BD504157DC7B9A9D0255412465E40E30BD50416C867C16990255416CB17B502FBD5041D719E5E999025541A50A73B126BD50411F61708BA302554185EB515836BD50413D0AD703AE0255413F69741F45BD504158E514D5B70255413F69741F45BD5041EBCAFEC8B702554178CED1D747BD5041680E3D99B9025541130EA0D94DBD504131B1B51CBD025541681A417350BD5041A26DBB89BE025541476FD27352BD504140298A74BF025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243115 - 1416815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D5A8B1A51419A999929251A554114AE47B18B1A514100000030241A5541295C8FF28B1A51418FC2F578221A5541295C8F52801A51418FC2F508211A554114AE47D1701A5141EC51B81E1F1A5541A4703DCA601A5141F6285CFF1C1A554114AE4761521A5141CDCCCCCC1A1A55413D0AD783501A5141E17A148E1A1A55413D0AD753501A51419A9999691B1A5541666666064D1A5141000000E02D1A5541E17A144E541A51415C8FC255351A5541A4703DBA521A514166666606361A55415C8FC2954C1A51415C8FC255301A5541000000304C1A5141CDCCCC8C321A5541D7A3707D501A5141C3F5281C381A5541713D0A07541A5141E17A14AE3C1A5541295C8FF2551A5141C3F528EC3F1A5541D7A370FD551A51411F85EB71421A5541CDCCCC5C471A5141E17A142E591A5541000000905C1A51410AD7A3C05F1A5541E17A141E661A5141295C8FB2621A5541333333E36E1A5141295C8F62651A5541C3F528EC701A5141333333D3641A554133333363771A5141AE47E1BA5D1A5541713D0AF7781A514100000070591A5541D7A370ED7E1A514185EB51C8481A55419A9999B98A1A5141713D0AF7261A5541A4703D5A8B1A51419A999929251A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000002FD3E15D4C1A5141959917C8321A5541D7A3707D501A5141C3F5281C381A5541713D0A07541A5141E17A14AE3C1A5541295C8FF2551A5141C3F528EC3F1A5541D7A370FD551A51411F85EB71421A5541CDCCCC5C471A5141E17A142E591A5541000000905C1A51410AD7A3C05F1A5541E17A141E661A5141295C8FB2621A5541333333E36E1A5141295C8F62651A5541C3F528EC701A5141333333D3641A554133333363771A5141AE47E1BA5D1A5541713D0AF7781A514100000070591A5541D7A370ED7E1A514185EB51C8481A55419A9999B98A1A5141713D0AF7261A5541A4703D5A8B1A51419A999929251A554114AE47B18B1A514100000030241A5541F6D595E88B1A51414B760BBC221A554125E09BDF891A51415DAAE661291A55415A0DB0997B1A5141A0A260FA231A554130A1BD3C701A5141BD2D6BF5441A5541DCBD17C1681A5141CD23589A421A554177E484A0631A51418E762BCD401A55416C39E5C65E1A5141D48E6B6A3F1A5541F76965015C1A51411AA7AB073E1A5541D23DFFAD581A5141563412D03B1A554177EF4562541A5141AC423F12381A55412FD3E15D4C1A5141959917C8321A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243115 - 3820319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D5A8B1A51419A999929251A554114AE47B18B1A514100000030241A5541295C8FF28B1A51418FC2F578221A5541295C8F52801A51418FC2F508211A554114AE47D1701A5141EC51B81E1F1A5541A4703DCA601A5141F6285CFF1C1A554114AE4761521A5141CDCCCCCC1A1A55413D0AD783501A5141E17A148E1A1A55413D0AD753501A51419A9999691B1A5541666666064D1A5141000000E02D1A5541E17A144E541A51415C8FC255351A5541A4703DBA521A514166666606361A55415C8FC2954C1A51415C8FC255301A5541000000304C1A5141CDCCCC8C321A5541D7A3707D501A5141C3F5281C381A5541713D0A07541A5141E17A14AE3C1A5541295C8FF2551A5141C3F528EC3F1A5541D7A370FD551A51411F85EB71421A5541CDCCCC5C471A5141E17A142E591A5541000000905C1A51410AD7A3C05F1A5541E17A141E661A5141295C8FB2621A5541333333E36E1A5141295C8F62651A5541C3F528EC701A5141333333D3641A554133333363771A5141AE47E1BA5D1A5541713D0AF7781A514100000070591A5541D7A370ED7E1A514185EB51C8481A55419A9999B98A1A5141713D0AF7261A5541A4703D5A8B1A51419A999929251A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000002FD3E15D4C1A5141959917C8321A5541D7A3707D501A5141C3F5281C381A5541713D0A07541A5141E17A14AE3C1A5541295C8FF2551A5141C3F528EC3F1A5541D7A370FD551A51411F85EB71421A5541CDCCCC5C471A5141E17A142E591A5541000000905C1A51410AD7A3C05F1A5541E17A141E661A5141295C8FB2621A5541333333E36E1A5141295C8F62651A5541C3F528EC701A5141333333D3641A554133333363771A5141AE47E1BA5D1A5541713D0AF7781A514100000070591A5541D7A370ED7E1A514185EB51C8481A55419A9999B98A1A5141713D0AF7261A5541A4703D5A8B1A51419A999929251A554114AE47B18B1A514100000030241A5541F6D595E88B1A51414B760BBC221A554125E09BDF891A51415DAAE661291A55415A0DB0997B1A5141A0A260FA231A554130A1BD3C701A5141BD2D6BF5441A5541DCBD17C1681A5141CD23589A421A554177E484A0631A51418E762BCD401A55416C39E5C65E1A5141D48E6B6A3F1A5541F76965015C1A51411AA7AB073E1A5541D23DFFAD581A5141563412D03B1A554177EF4562541A5141AC423F12381A55412FD3E15D4C1A5141959917C8321A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125533 - 3103591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000333333A3B1BB504114AE4731F4035541A4703D4ABBBB5041E17A14AEF6035541E17A149EBFBB50410AD7A3B0F703554100000050C1BB504152B81E75EC035541666666F6BCBB50417B14AE97EB035541AE47E10AB9BB504166666666EA0355410AD7A320B9BB504166666686E8035541295C8F32BABB5041713D0A27E30355411F85EB11A6BB5041D7A370EDD80355410AD7A330A8BB5041F6285C8FD50355419A99998999BB5041AE47E19ACC0355419A99998995BB5041713D0A97CA035541EC51B87E91BB50417B14AE27C90355413D0AD7138DBB50417B14AE27C80355419A9999298CBB50415C8FC235DE0355419A9999B98BBB5041333333E3E903554185EB51A88DBB5041CDCCCC1CE70355411F85EB818FBB5041F6285C1FE8035541B81E857B8BBB50419A999999EE035541B81E854B8BBB5041295C8F22F3035541A4703D0A8CBB50410AD7A330F7035541333333A398BB5041D7A3702DF10355416666664697BB504148E17A94EE035541295C8FC29BBB5041E17A141EEC035541AE47E1BAA0BB50410AD7A3F0ED035541333333B3A2BB5041D7A3702DEE035541CDCCCC5CA4BB504148E17AE4EE03554185EB51C8ACBB504133333393F2035541333333A3B1BB504114AE4731F4035541
+</a>
+
+<b>
+010600000001000000010300000001000000220000004C26BEFE8BBB5041B73EAEADE2035541C6A5D5B48BBB504141309CFFE8035541F4A2892E8FBB50411F435EABE503554164AF527690BB504162170A70E60355414C4E2D3E8DBB5041E6009BE6EA035541B38DA47C8BBB504138AA53C7EE035541A3F9D04D8BBB5041B207CC21F3035541E3491F098CBB504114455831F70355410D0A7F4A98BB504116C3E556F1035541A789CE1E97BB50415EDAB537EF0355415720FA6D9BBB5041F5A24B04ED0355418848F61F9DBB50411A62859AED035541C528A7D49DBB5041DA55A5B3EE035541014D43E09EBB50416CE8EE3AEE03554151A553D1A0BB5041CE9C58F3ED035541073DFC91A2BB504169896F29EE03554154C7FDFFA3BB5041E4B690BCEE0355416D3CE1B4ACBB5041BCA3B28AF203554108FA68B8B1BB504145F6BE36F40355419DEF3267B6BB5041381EAE6BF50355412DB3AE25BCBB5041AFC04BE1F603554145FE1AA1BFBB504184E058B1F70355414D680AC8BFBB50413BB7BF9AF603554185932F37B9BB50415BE240DAF4035541917941E0B3BB50412047826BF303554137A2A1C9B1BB50419479DECEF2035541F7CBC612B0BB5041FD144535F20355410EDCF2E2AABB504137B48764F0035541EDFF693FAABB504156D59F1BF003554162AE8C3CA4BB5041A5BA4F5AED03554129869330A3BB5041A4BF62E2EC035541A1D78FEF9DBB50416A0192C3EA03554183F94A5E9ABB504165EFBB51E90355414C26BEFE8BBB5041B73EAEADE2035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125533 - 3322708
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000333333A3B1BB504114AE4731F4035541A4703D4ABBBB5041E17A14AEF6035541E17A149EBFBB50410AD7A3B0F703554100000050C1BB504152B81E75EC035541666666F6BCBB50417B14AE97EB035541AE47E10AB9BB504166666666EA0355410AD7A320B9BB504166666686E8035541295C8F32BABB5041713D0A27E30355411F85EB11A6BB5041D7A370EDD80355410AD7A330A8BB5041F6285C8FD50355419A99998999BB5041AE47E19ACC0355419A99998995BB5041713D0A97CA035541EC51B87E91BB50417B14AE27C90355413D0AD7138DBB50417B14AE27C80355419A9999298CBB50415C8FC235DE0355419A9999B98BBB5041333333E3E903554185EB51A88DBB5041CDCCCC1CE70355411F85EB818FBB5041F6285C1FE8035541B81E857B8BBB50419A999999EE035541B81E854B8BBB5041295C8F22F3035541A4703D0A8CBB50410AD7A330F7035541333333A398BB5041D7A3702DF10355416666664697BB504148E17A94EE035541295C8FC29BBB5041E17A141EEC035541AE47E1BAA0BB50410AD7A3F0ED035541333333B3A2BB5041D7A3702DEE035541CDCCCC5CA4BB504148E17AE4EE03554185EB51C8ACBB504133333393F2035541333333A3B1BB504114AE4731F4035541
+</a>
+
+<b>
+010600000001000000010300000001000000220000004C26BEFE8BBB5041B73EAEADE2035541C6A5D5B48BBB504141309CFFE8035541F4A2892E8FBB50411F435EABE503554164AF527690BB504162170A70E60355414C4E2D3E8DBB5041E6009BE6EA035541B38DA47C8BBB504138AA53C7EE035541A3F9D04D8BBB5041B207CC21F3035541E3491F098CBB504114455831F70355410D0A7F4A98BB504116C3E556F1035541A789CE1E97BB50415EDAB537EF0355415720FA6D9BBB5041F5A24B04ED0355418848F61F9DBB50411A62859AED035541C528A7D49DBB5041DA55A5B3EE035541014D43E09EBB50416CE8EE3AEE03554151A553D1A0BB5041CE9C58F3ED035541073DFC91A2BB504169896F29EE03554154C7FDFFA3BB5041E4B690BCEE0355416D3CE1B4ACBB5041BCA3B28AF203554108FA68B8B1BB504145F6BE36F40355419DEF3267B6BB5041381EAE6BF50355412DB3AE25BCBB5041AFC04BE1F603554145FE1AA1BFBB504184E058B1F70355414D680AC8BFBB50413BB7BF9AF603554185932F37B9BB50415BE240DAF4035541917941E0B3BB50412047826BF303554137A2A1C9B1BB50419479DECEF2035541F7CBC612B0BB5041FD144535F20355410EDCF2E2AABB504137B48764F0035541EDFF693FAABB504156D59F1BF003554162AE8C3CA4BB5041A5BA4F5AED03554129869330A3BB5041A4BF62E2EC035541A1D78FEF9DBB50416A0192C3EA03554183F94A5E9ABB504165EFBB51E90355414C26BEFE8BBB5041B73EAEADE2035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872072 - 219915
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000333333E32E72514114AE4741F89F5441F6285C3F2D72514114AE47B1F99F5441D7A3703D1B725141333333E30AA0544148E17A8408725141AE47E17A1BA0544114AE4711F6715141000000702CA0544100000070F2715141000000C02FA054413D0AD7D3F3715141713D0A1733A05441AE47E1AAFF7151419A9999A928A054413D0AD7B30B7251415C8FC2651FA05441E17A14EE16725141E17A143E17A0544148E17A34247251413D0AD7630EA05441C3F5283C307251413D0AD7A306A05441333333E3337251419A99994904A05441333333E32E72514114AE4741F89F5441
+</a>
+
+<b>
+010600000001000000010300000001000000C300000041804EE0267251411AA54DAB0CA05441BD0A7C27267251419B7883220DA05441926A0CFD237251418705CE880EA054411715E9D22072514190A20CA510A05441D3B7F58020725141966F85DE10A05441D903166D1C725141A39FCF9313A05441B83F12281B72514163788C6C14A05441D5C3A3EE1872514194E946E815A05441269A17E31672514117970F4617A054410473532B1072514178D732271CA054413395D37A0D725141CA2419201EA054415D989AB30B725141C517F1651FA054410AF16B270B7251415C00DCD11FA05441CE2057C40A72514144CC221E20A054416AA68F870A7251413113ED4C20A05441FACA284D07725141F6EF5BCC22A054417DB4D3110672514126C49CBC23A05441C5BFF2A80572514150B39D0C24A0544194D0393201725141AABD537C27A05441C26B3616007251411282DB5928A05441AD9A108AFF715141A638F9C728A05441B19EC36CFE7151415AC03CC229A05441B0D46B27FD7151411E168BE42AA05441C79D923DF8715141C84F15342FA0544197380EF6F7715141AD8811732FA054419E29E82FF77151416606942130A05441C4B78D3BF6715141931F2FF930A05441E78C66AAF57151412F3D527B31A05441BD461E5CF5715141E2648FBD31A0544110E340C4F47151410DC04E4332A0544102E0E7ACF4715141EEB5DE5732A0544172DD1683F47151415C78987F32A0544152DD1408F471514133E607E932A054413D0AD7D3F3715141713D0A1733A054410AD7A3F0F0715141295C8FA235A05441C3F528ACE47151410000008041A05441B81E85BBD671514114AE47B14FA0544148E17AD4CD715141F6285CCF58A05441F6285CEFC271514114AE479162A05441713D0A27B871514148E17A146BA054413D0AD763AC715141666666B673A05441B81E858BA3715141CDCCCCFC79A05441E17A14AE9F7151419A9999997DA05441295C8F229F715141A4703DFA7CA054418FC2F5B89E7151411F85EB817CA054411F85EBA19D71514185EB51587DA05441666666969B715141A4703DEA7EA05441D7A3700D9A715141333333C380A05441295C8F0293715141E17A14EE85A05441CDCCCCAC92715141E17A145E85A0544152B81E7584715141A4703DDA8FA0544133333323707151415C8FC2C59EA05441A4703DCA5B71514114AE47E1ADA05441D1AA9A41537151413AAB8946B4A0544162A3A83E53715141967A943AB4A05441B81E85CB4771514114AE4751BDA05441E17A149E3471514185EB5128CDA05441D7A370FD2071514185EB51F8DCA0544114AE47610C7151410AD7A3B0EBA05441B81E85EBF7705141C3F5281CFAA0544114AE4751E37051419A9999B908A154415C8FC275D6705141E17A14DE11A15441E17A14DED8705141F6285C3F14A1544166666626DC705141EC51B87E17A154417B14AE57CD705141B81E859B24A154415C8FC2F5BE705141D7A3704D31A154411F85EB01B37051410AD7A3703AA15441A4703D8AB2705141000000C039A15441D4171B20B2705141771B2B123AA1544163600095B270514163DEBAAF39A15441E17A141EB270514114AE472139A154415C8FC2C5B07051415C8FC22537A154419A999969AE705141CDCCCCAC33A154415C8FC245AE7051411F85EB7133A1544114AE47D1A8705141D7A3701D37A154410AD7A3F09F705141C3F528FC3DA15441EC51B80E9870514114AE47A145A154419A9999A996705141B81E85FB46A15441CDCCCCEC91705141666666164CA15441713D0A4793705141CDCCCC8C4EA15441B81E850B93705141EC51B8CE4EA15441295C8FE290705141713D0AE750A15441F6285C3F8E7051415C8FC27553A1544114AE47A1897051416666662657A15441000000A086705141D7A3708D59A15441EC51B8BE8370514148E17A045DA154411F85EBB17E705141713D0A1763A15441B81E853B7B705141E17A147E66A154410AD7A34077705141713D0AB769A15441C3F528AC73705141B81E859B6CA15441F6285C4F6E705141E17A14AE70A15441A4703DAA65705141E17A140E7DA15441713D0A5764705141666666B680A15441666666E672705141CDCCCCAC76A15441EC51B88E747051416666669673A15441A4703D4A76705141713D0A6771A154419A99997978705141CDCCCC3C6EA15441F6285C2F7B7051415C8FC2656AA154417B14AED77C705141C3F5289C67A15441EC51B8EE7F705141E17A149E63A15441AE47E16A827051413D0AD71360A15441B81E857B9570514114AE47914EA15441AE47E1CAA070514152B81E7546A15441A0AB4A9FB070514131F9D53C3AA154418D50BF61B170514192EF8AA53AA15441C3F5282CA070514185EB51F847A154410AD7A30096705141333333334FA15441A4703D8A877051417B14AEC75BA15441F6285C9F837051413D0AD71360A1544152B81E7580705141EC51B8FE63A1544152B81E857D7051413333332368A154413D0AD713797051410AD7A3B06EA154417B14AEF776705141E17A14EE71A15441295C8F6275705141333333E373A1544152B81EB57470514152B81EC575A1544185EB51E8777051416666667673A15441B81E85FB7970514148E17AC470A15441C3F5289C7A70514152B81E156EA15441B81E857B7D70514148E17AF46AA1544185EB51B889705141AE47E16A5FA154417B14AE87977051418FC2F55852A15441AE47E12AA770514148E17AE445A1544133333373B7705141B81E850B3AA154419A9999A9C67051418FC2F5B82DA15441295C8F72D57051413D0AD7C320A15441A4703D2AE370514114AE472114A15441C3F5286CF2705141D7A370CD03A1544148E17A04017151417B14AE77F6A054410AD7A37011715141295C8FC2EAA054413D0AD7B32571514148E17A34DCA05441EC51B81E40715141A4703DBAC6A05441713D0A0751715141EC51B81EB9A05441AE47E1EA537151415C8FC2F5B6A0544114AE47216471514152B81ED5AAA05441713D0AA772715141AE47E12AA0A05441AE47E1BA8871514152B81EE590A05441CDCCCC4C897151411F85EBD191A05441E17A148E977151411F85EB5187A05441CDCCCC3C9E715141333333E380A05441713D0A17B571514152B81E5570A05441D7A3706DC47151410AD7A3A064A05441D7A370EDD2715141295C8F7257A05441713D0AD7E571514185EB514844A05441713D0A97E9715141F6285C7F40A0544185EB5178EA715141B81E859B3FA05441B81E851BEF715141CDCCCCEC3AA05441A4703D3AFE7151419A9999192DA05441000000200E725141B81E85CB20A05441B81E855B1E72514185EB517815A0544152B81EB5347251415C8FC22507A054411F85EBE1497251417B14AE77F99F54419A9999295E7251411F85EBB1E99F5441D7A3709D6D725141F6285C8FDC9F544185EB512872725141A4703DBAD89F54411F85EB418B7251413D0AD7D3BB9F5441EC51B8FE8C7251418FC2F5A8B79F5441F6285CEF97725141E17A143EAB9F54410AD7A3E09B725141295C8F42A79F5441000000C0A3725141A4703DBA9E9F5441295C8F62B472514148E17AB48C9F54415C8FC2C5BD725141AE47E13A829F544133333373C7725141F6285CFF769F544185EB5198CE725141AE47E15A6D9F5441C3F528CCD472514114AE47B1649F5441AE47E15ADB725141333333435A9F54410AD7A350E17251419A9999D94E9F544185EB51D8DE7251410AD7A360499F5441CDCCCC5CD7725141A4703DCA579F54410AD7A3D0D0725141AE47E1FA619F544166666636CB7251410AD7A3906A9F54410AD7A360C4725141666666D6739F5441000000B0BA725141000000107F9F5441E17A14EEB0725141E17A14EE899F5441F6285CAFA4725141AE47E11A989F544148E17AA49F7251415C8FC2C59D9F5441A4703DFA9E72514152B81E859E9F54415C8FC2559E725141333333F39D9F5441295C8FB29D7251418FC2F5B89E9F544114AE47B19672514133333333A79F5441295C8F32877251419A999989B89F54410000004088725141295C8F92B99F544185EB51687B725141D7A3708DC89F5441333333836B72514100000070DA9F54411F85EB115D725141F6285CDFE79F54419A9999294B7251417B14AE67F69F5441D7A3705D4972514185EB5178F69F5441333333F33B7251419A999919FF9F5441333333E3337251419A99994904A054414E34E6B7307251412B61245406A054415D150BA32F7251415F15DE0807A05441C949F46D2D725141BF45867208A054418FF02AED2B7251415CA9696A09A05441E9D5BED32A7251413DD4B4240AA0544186C589262A72514142A34B8F0AA0544141804EE0267251411AA54DAB0CA05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872072 - 261618
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000333333E32E72514114AE4741F89F5441F6285C3F2D72514114AE47B1F99F5441D7A3703D1B725141333333E30AA0544148E17A8408725141AE47E17A1BA0544114AE4711F6715141000000702CA0544100000070F2715141000000C02FA054413D0AD7D3F3715141713D0A1733A05441AE47E1AAFF7151419A9999A928A054413D0AD7B30B7251415C8FC2651FA05441E17A14EE16725141E17A143E17A0544148E17A34247251413D0AD7630EA05441C3F5283C307251413D0AD7A306A05441333333E3337251419A99994904A05441333333E32E72514114AE4741F89F5441
+</a>
+
+<b>
+010600000001000000010300000001000000C300000041804EE0267251411AA54DAB0CA05441BD0A7C27267251419B7883220DA05441926A0CFD237251418705CE880EA054411715E9D22072514190A20CA510A05441D3B7F58020725141966F85DE10A05441D903166D1C725141A39FCF9313A05441B83F12281B72514163788C6C14A05441D5C3A3EE1872514194E946E815A05441269A17E31672514117970F4617A054410473532B1072514178D732271CA054413395D37A0D725141CA2419201EA054415D989AB30B725141C517F1651FA054410AF16B270B7251415C00DCD11FA05441CE2057C40A72514144CC221E20A054416AA68F870A7251413113ED4C20A05441FACA284D07725141F6EF5BCC22A054417DB4D3110672514126C49CBC23A05441C5BFF2A80572514150B39D0C24A0544194D0393201725141AABD537C27A05441C26B3616007251411282DB5928A05441AD9A108AFF715141A638F9C728A05441B19EC36CFE7151415AC03CC229A05441B0D46B27FD7151411E168BE42AA05441C79D923DF8715141C84F15342FA0544197380EF6F7715141AD8811732FA054419E29E82FF77151416606942130A05441C4B78D3BF6715141931F2FF930A05441E78C66AAF57151412F3D527B31A05441BD461E5CF5715141E2648FBD31A0544110E340C4F47151410DC04E4332A0544102E0E7ACF4715141EEB5DE5732A0544172DD1683F47151415C78987F32A0544152DD1408F471514133E607E932A054413D0AD7D3F3715141713D0A1733A054410AD7A3F0F0715141295C8FA235A05441C3F528ACE47151410000008041A05441B81E85BBD671514114AE47B14FA0544148E17AD4CD715141F6285CCF58A05441F6285CEFC271514114AE479162A05441713D0A27B871514148E17A146BA054413D0AD763AC715141666666B673A05441B81E858BA3715141CDCCCCFC79A05441E17A14AE9F7151419A9999997DA05441295C8F229F715141A4703DFA7CA054418FC2F5B89E7151411F85EB817CA054411F85EBA19D71514185EB51587DA05441666666969B715141A4703DEA7EA05441D7A3700D9A715141333333C380A05441295C8F0293715141E17A14EE85A05441CDCCCCAC92715141E17A145E85A0544152B81E7584715141A4703DDA8FA0544133333323707151415C8FC2C59EA05441A4703DCA5B71514114AE47E1ADA05441D1AA9A41537151413AAB8946B4A0544162A3A83E53715141967A943AB4A05441B81E85CB4771514114AE4751BDA05441E17A149E3471514185EB5128CDA05441D7A370FD2071514185EB51F8DCA0544114AE47610C7151410AD7A3B0EBA05441B81E85EBF7705141C3F5281CFAA0544114AE4751E37051419A9999B908A154415C8FC275D6705141E17A14DE11A15441E17A14DED8705141F6285C3F14A1544166666626DC705141EC51B87E17A154417B14AE57CD705141B81E859B24A154415C8FC2F5BE705141D7A3704D31A154411F85EB01B37051410AD7A3703AA15441A4703D8AB2705141000000C039A15441D4171B20B2705141771B2B123AA1544163600095B270514163DEBAAF39A15441E17A141EB270514114AE472139A154415C8FC2C5B07051415C8FC22537A154419A999969AE705141CDCCCCAC33A154415C8FC245AE7051411F85EB7133A1544114AE47D1A8705141D7A3701D37A154410AD7A3F09F705141C3F528FC3DA15441EC51B80E9870514114AE47A145A154419A9999A996705141B81E85FB46A15441CDCCCCEC91705141666666164CA15441713D0A4793705141CDCCCC8C4EA15441B81E850B93705141EC51B8CE4EA15441295C8FE290705141713D0AE750A15441F6285C3F8E7051415C8FC27553A1544114AE47A1897051416666662657A15441000000A086705141D7A3708D59A15441EC51B8BE8370514148E17A045DA154411F85EBB17E705141713D0A1763A15441B81E853B7B705141E17A147E66A154410AD7A34077705141713D0AB769A15441C3F528AC73705141B81E859B6CA15441F6285C4F6E705141E17A14AE70A15441A4703DAA65705141E17A140E7DA15441713D0A5764705141666666B680A15441666666E672705141CDCCCCAC76A15441EC51B88E747051416666669673A15441A4703D4A76705141713D0A6771A154419A99997978705141CDCCCC3C6EA15441F6285C2F7B7051415C8FC2656AA154417B14AED77C705141C3F5289C67A15441EC51B8EE7F705141E17A149E63A15441AE47E16A827051413D0AD71360A15441B81E857B9570514114AE47914EA15441AE47E1CAA070514152B81E7546A15441A0AB4A9FB070514131F9D53C3AA154418D50BF61B170514192EF8AA53AA15441C3F5282CA070514185EB51F847A154410AD7A30096705141333333334FA15441A4703D8A877051417B14AEC75BA15441F6285C9F837051413D0AD71360A1544152B81E7580705141EC51B8FE63A1544152B81E857D7051413333332368A154413D0AD713797051410AD7A3B06EA154417B14AEF776705141E17A14EE71A15441295C8F6275705141333333E373A1544152B81EB57470514152B81EC575A1544185EB51E8777051416666667673A15441B81E85FB7970514148E17AC470A15441C3F5289C7A70514152B81E156EA15441B81E857B7D70514148E17AF46AA1544185EB51B889705141AE47E16A5FA154417B14AE87977051418FC2F55852A15441AE47E12AA770514148E17AE445A1544133333373B7705141B81E850B3AA154419A9999A9C67051418FC2F5B82DA15441295C8F72D57051413D0AD7C320A15441A4703D2AE370514114AE472114A15441C3F5286CF2705141D7A370CD03A1544148E17A04017151417B14AE77F6A054410AD7A37011715141295C8FC2EAA054413D0AD7B32571514148E17A34DCA05441EC51B81E40715141A4703DBAC6A05441713D0A0751715141EC51B81EB9A05441AE47E1EA537151415C8FC2F5B6A0544114AE47216471514152B81ED5AAA05441713D0AA772715141AE47E12AA0A05441AE47E1BA8871514152B81EE590A05441CDCCCC4C897151411F85EBD191A05441E17A148E977151411F85EB5187A05441CDCCCC3C9E715141333333E380A05441713D0A17B571514152B81E5570A05441D7A3706DC47151410AD7A3A064A05441D7A370EDD2715141295C8F7257A05441713D0AD7E571514185EB514844A05441713D0A97E9715141F6285C7F40A0544185EB5178EA715141B81E859B3FA05441B81E851BEF715141CDCCCCEC3AA05441A4703D3AFE7151419A9999192DA05441000000200E725141B81E85CB20A05441B81E855B1E72514185EB517815A0544152B81EB5347251415C8FC22507A054411F85EBE1497251417B14AE77F99F54419A9999295E7251411F85EBB1E99F5441D7A3709D6D725141F6285C8FDC9F544185EB512872725141A4703DBAD89F54411F85EB418B7251413D0AD7D3BB9F5441EC51B8FE8C7251418FC2F5A8B79F5441F6285CEF97725141E17A143EAB9F54410AD7A3E09B725141295C8F42A79F5441000000C0A3725141A4703DBA9E9F5441295C8F62B472514148E17AB48C9F54415C8FC2C5BD725141AE47E13A829F544133333373C7725141F6285CFF769F544185EB5198CE725141AE47E15A6D9F5441C3F528CCD472514114AE47B1649F5441AE47E15ADB725141333333435A9F54410AD7A350E17251419A9999D94E9F544185EB51D8DE7251410AD7A360499F5441CDCCCC5CD7725141A4703DCA579F54410AD7A3D0D0725141AE47E1FA619F544166666636CB7251410AD7A3906A9F54410AD7A360C4725141666666D6739F5441000000B0BA725141000000107F9F5441E17A14EEB0725141E17A14EE899F5441F6285CAFA4725141AE47E11A989F544148E17AA49F7251415C8FC2C59D9F5441A4703DFA9E72514152B81E859E9F54415C8FC2559E725141333333F39D9F5441295C8FB29D7251418FC2F5B89E9F544114AE47B19672514133333333A79F5441295C8F32877251419A999989B89F54410000004088725141295C8F92B99F544185EB51687B725141D7A3708DC89F5441333333836B72514100000070DA9F54411F85EB115D725141F6285CDFE79F54419A9999294B7251417B14AE67F69F5441D7A3705D4972514185EB5178F69F5441333333F33B7251419A999919FF9F5441333333E3337251419A99994904A054414E34E6B7307251412B61245406A054415D150BA32F7251415F15DE0807A05441C949F46D2D725141BF45867208A054418FF02AED2B7251415CA9696A09A05441E9D5BED32A7251413DD4B4240AA0544186C589262A72514142A34B8F0AA0544141804EE0267251411AA54DAB0CA05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>904239 - 147949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000005C8FC24557C9504114AE47317A3855417B14AE676CC950419A9999A989385541E17A14CE74C95041EC51B84E903855415C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541666666E682C950417B14AE1764385541333333A37FC95041EC51B8DE60385541AE47E19A78C95041713D0A175C385541B81E858B76C950410AD7A3605B385541F6285C4F72C950413D0AD7635B385541AE47E1BA70C950415C8FC2155C385541AE47E1BA6CC950417B14AE175F3855410AD7A3E05FC95041EC51B8AE69385541EC51B84E5CC95041666666066D385541666666E658C95041EC51B80E71385541B81E857B57C95041713D0A9773385541C3F5282C56C95041000000F0763855417B14AEA756C95041C3F528BC783855415C8FC24557C9504114AE47317A385541
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000005C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541666666E682C950417B14AE1764385541333333A37FC95041EC51B8DE60385541AE47E19A78C95041713D0A175C385541B81E858B76C950410AD7A3605B385541F6285C4F72C950413D0AD7635B385541AE47E1BA70C950415C8FC2155C385541AE47E1BA6CC950417B14AE175F3855410AD7A3E05FC95041EC51B8AE69385541EC51B84E5CC95041666666066D385541666666E658C95041EC51B80E71385541B81E857B57C95041713D0A9773385541C3F5282C56C95041000000F0763855417B14AEA756C95041C3F528BC783855414CEB043C57C950414BE1491A7A3855415EE74FC158C95041ADF074317B385541ADAC635259C95041493072A37B385541AAEE745059C95041B8F206A67B3855414FA8A8E05CC950417EDA15477E38554198A086DD64C9504193AA4D23843855410CA432B368C950415E839CF28638554137A432B368C950417F839CF2863855417B14AE676CC950419A9999A98938554123AF61AC71C95041D5EF84D48D3855412CAF61AC71C95041DCEF84D48D38554132AF61AC71C95041E1EF84D48D385541E17A14CE74C95041EC51B84E903855416CBA162D7AC95041D71E4FBA9438554102AFFD1F7AC95041B6CFB2C5943855419105BA507CC9504176324B9C963855416A06BA507CC9504129334B9C963855416F90867F7DC950418FA76A9A97385541E2A1DF737EC9504102137C6798385541E0A1DF737EC9504103137C67983855415C8FC25582C950419A9999A99B385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>904239 - 335447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000005C8FC24557C9504114AE47317A3855417B14AE676CC950419A9999A989385541E17A14CE74C95041EC51B84E903855415C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541666666E682C950417B14AE1764385541333333A37FC95041EC51B8DE60385541AE47E19A78C95041713D0A175C385541B81E858B76C950410AD7A3605B385541F6285C4F72C950413D0AD7635B385541AE47E1BA70C950415C8FC2155C385541AE47E1BA6CC950417B14AE175F3855410AD7A3E05FC95041EC51B8AE69385541EC51B84E5CC95041666666066D385541666666E658C95041EC51B80E71385541B81E857B57C95041713D0A9773385541C3F5282C56C95041000000F0763855417B14AEA756C95041C3F528BC783855415C8FC24557C9504114AE47317A385541
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000005C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541666666E682C950417B14AE1764385541333333A37FC95041EC51B8DE60385541AE47E19A78C95041713D0A175C385541B81E858B76C950410AD7A3605B385541F6285C4F72C950413D0AD7635B385541AE47E1BA70C950415C8FC2155C385541AE47E1BA6CC950417B14AE175F3855410AD7A3E05FC95041EC51B8AE69385541EC51B84E5CC95041666666066D385541666666E658C95041EC51B80E71385541B81E857B57C95041713D0A9773385541C3F5282C56C95041000000F0763855417B14AEA756C95041C3F528BC783855414CEB043C57C950414BE1491A7A3855415EE74FC158C95041ADF074317B385541ADAC635259C95041493072A37B385541AAEE745059C95041B8F206A67B3855414FA8A8E05CC950417EDA15477E38554198A086DD64C9504193AA4D23843855410CA432B368C950415E839CF28638554137A432B368C950417F839CF2863855417B14AE676CC950419A9999A98938554123AF61AC71C95041D5EF84D48D3855412CAF61AC71C95041DCEF84D48D38554132AF61AC71C95041E1EF84D48D385541E17A14CE74C95041EC51B84E903855416CBA162D7AC95041D71E4FBA9438554102AFFD1F7AC95041B6CFB2C5943855419105BA507CC9504176324B9C963855416A06BA507CC9504129334B9C963855416F90867F7DC950418FA76A9A97385541E2A1DF737EC9504102137C6798385541E0A1DF737EC9504103137C67983855415C8FC25582C950419A9999A99B385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975929 - 457836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441498023D44BDE50416EF82104F164544150E62ACB49DE504137C6DF50F0645441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA16655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975929 - 1757085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441498023D44BDE50416EF82104F164544150E62ACB49DE504137C6DF50F0645441
+</a>
+
+<b>
+010600000001000000010300000001000000080000003D0AD743C3DE5041666666C61165544152B81E75C2DE50411F85EB410F655441000000E046DE50411F85EBA1E9645441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975929 - 3605029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441498023D44BDE50416EF82104F164544150E62ACB49DE504137C6DF50F0645441
+</a>
+
+<b>
+010600000001000000010300000001000000080000003D0AD743C3DE5041666666C61165544152B81E75C2DE50411F85EB410F655441000000E046DE50411F85EBA1E9645441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130098 - 1213564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000043000000D7A3701D149351413D0AD75395805441A4703D7A129351411F85EB81938054416666661612935141C3F5288C9280544152B81E4512935141F6285CEF90805441F6285CFF12935141A4703D0A8F8054417B14AE4713935141B81E850B8C805441A4703DEA13935141C3F528AC8A80544148E17A44109351417B14AE07828054413D0AD7B30D9351410AD7A3307E805441D7A3708D0B9351413D0AD7637C805441D7A370FD09935141D7A3707D7D805441C3F5285C07935141A4703D4A7F8054418FC2F5F8039351411F85EB8183805441E17A14AE01935141F6285CAF8280544114AE4751FF925141AE47E13A858054415C8FC265FC9251418FC2F53888805441333333F3F9925141666666768A8054419A999979F6925141000000B08D805441EC51B8EEF5925141000000409380544152B81ED5F5925141EC51B80E958054415C8FC295F49251410AD7A3E09A8054417B14AE77F4925141AE47E15AA18054415C8FC275EC92514185EB51F8A780544185EB5148EB925141C3F5281CA880544100000090E6925141F6285CDFAF8054410AD7A330E5925141AE47E18AB280544152B81EC5E7925141333333A3B2805441713D0A07EE9251411F85EB91B1805441AE47E18AF1925141333333A3B1805441A4703D2AEF925141295C8FA2B2805441F6285C1FE7925141D7A370ADB580544152B81E15E1925141E17A14EEB5805441E17A140EDD925141F6285C8FB6805441A4703DEAD89251419A999929BA80544148E17A44D592514133333353BE805441333333F3D1925141B81E851BC28054415C8FC285D192514185EB5198C2805441CDCCCCFCD19251410AD7A3E0C28054419A999949D492514114AE4791C4805441C3F5285CD6925141EC51B85EC680544185EB51F8D7925141295C8F22C8805441EC51B8EED992514148E17AB4CA80544152B81ED5DC92514148E17AF4C8805441E17A146EE69251415C8FC2F5C3805441A4703D4AED92514166666696C080544148E17A44F39251411F85EB81BE805441CDCCCC8CF79251419A999939BD805441E17A140EFD925141666666B6BB805441A4703D6AFF925141F6285C1FBB8054417B14AE2702935141C3F5287CBA8054413D0AD77304935141B81E852BBA805441F6285C8F07935141CDCCCCECB9805441000000100C935141B81E85EBB98054419A9999F90F93514152B81EB5B9805441E17A149E149351418FC2F578B9805441A4703DEA179351413D0AD763B98054419A9999791E935141AE47E1AAB880544148E17A841D9351410AD7A310B6805441A4703D5A1C93514166666606B280544114AE47911A9351419A999949AD805441E17A14DE19935141B81E857BA9805441F6285CEF18935141B81E859BA68054410AD7A350189351419A9999B9A2805441EC51B8FE1693514152B81E859D805441000000C0159351410AD7A3F098805441713D0A7715935141AE47E10A97805441D7A3701D149351413D0AD75395805441
+</a>
+
+<b>
+010600000001000000010300000002000000250000001FD943FDF5925141A4F7DCAA9280544189568C8BF89251415BEC183A8F8054418DC8F18BFB925141137F16208C8054412F906A2602935141A57EF9B8868054418FC2F5F8039351411F85EB818380544175A82E58049351410AD55D0B83805441CDCCCC3C03935141A4703D6A8180544100000040FF9251413333333379805441CDCCCCECFE925141CDCCCCEC71805441295C8F12FA925141AE47E1CA74805441000000E0F6925141EC51B8AE7680544114AE4791F5925141295C8FA277805441CDCCCC9CF4925141A4703D0A798054418FC2F578F3925141F6285CBF7B805441CDCCCCFCF19251418FC2F5B87F80544185EB51A8F09251415C8FC285858054413D0AD7A3EF9251419A9999C98A80544148E17A44EF925141EC51B88E8C805441F6285C7FEE9251410AD7A3908D805441713D0A27ED925141AE47E16A8E805441333333D3E8925141F6285C4F9080544148E17A94E0925141F6285C6F95805441CDCCCC2CE7925141713D0A27928054418FC2F538EA925141E17A146E93805441F6285C8FEC92514148E17AE4958054419A9999A9ED9251413D0AD7A398805441713D0A17ED92514185EB51189A805441A4703DEAEF925141CDCCCC3C9C8054410AD7A3A0EF925141B81E85BB9E8054419A9999A9ED925141A4703DAAA280544185EB5148EB925141C3F5281CA88054415C8FC275EC92514185EB51F8A78054417B14AE77F4925141AE47E15AA18054415C8FC295F49251410AD7A3E09A80544152B81ED5F5925141EC51B80E9580544197D19AF1F5925141B4468FBA928054411FD943FDF5925141A4F7DCAA928054410A00000014AE47F1EC9251419A9999899180544148E17A94ED9251415C8FC2D58F8054411F85EB21F0925141713D0A078E8054410AD7A3F0F1925141000000B08B805441EC51B87EF4925141A4703DAA898054419A999999F492514152B81EA58C80544133333363F4925141F6285CAF908054417B14AE37F392514152B81EC59380544133333353EE925141E17A146E9680544114AE47F1EC9251419A99998991805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130098 - 3290467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000043000000D7A3701D149351413D0AD75395805441A4703D7A129351411F85EB81938054416666661612935141C3F5288C9280544152B81E4512935141F6285CEF90805441F6285CFF12935141A4703D0A8F8054417B14AE4713935141B81E850B8C805441A4703DEA13935141C3F528AC8A80544148E17A44109351417B14AE07828054413D0AD7B30D9351410AD7A3307E805441D7A3708D0B9351413D0AD7637C805441D7A370FD09935141D7A3707D7D805441C3F5285C07935141A4703D4A7F8054418FC2F5F8039351411F85EB8183805441E17A14AE01935141F6285CAF8280544114AE4751FF925141AE47E13A858054415C8FC265FC9251418FC2F53888805441333333F3F9925141666666768A8054419A999979F6925141000000B08D805441EC51B8EEF5925141000000409380544152B81ED5F5925141EC51B80E958054415C8FC295F49251410AD7A3E09A8054417B14AE77F4925141AE47E15AA18054415C8FC275EC92514185EB51F8A780544185EB5148EB925141C3F5281CA880544100000090E6925141F6285CDFAF8054410AD7A330E5925141AE47E18AB280544152B81EC5E7925141333333A3B2805441713D0A07EE9251411F85EB91B1805441AE47E18AF1925141333333A3B1805441A4703D2AEF925141295C8FA2B2805441F6285C1FE7925141D7A370ADB580544152B81E15E1925141E17A14EEB5805441E17A140EDD925141F6285C8FB6805441A4703DEAD89251419A999929BA80544148E17A44D592514133333353BE805441333333F3D1925141B81E851BC28054415C8FC285D192514185EB5198C2805441CDCCCCFCD19251410AD7A3E0C28054419A999949D492514114AE4791C4805441C3F5285CD6925141EC51B85EC680544185EB51F8D7925141295C8F22C8805441EC51B8EED992514148E17AB4CA80544152B81ED5DC92514148E17AF4C8805441E17A146EE69251415C8FC2F5C3805441A4703D4AED92514166666696C080544148E17A44F39251411F85EB81BE805441CDCCCC8CF79251419A999939BD805441E17A140EFD925141666666B6BB805441A4703D6AFF925141F6285C1FBB8054417B14AE2702935141C3F5287CBA8054413D0AD77304935141B81E852BBA805441F6285C8F07935141CDCCCCECB9805441000000100C935141B81E85EBB98054419A9999F90F93514152B81EB5B9805441E17A149E149351418FC2F578B9805441A4703DEA179351413D0AD763B98054419A9999791E935141AE47E1AAB880544148E17A841D9351410AD7A310B6805441A4703D5A1C93514166666606B280544114AE47911A9351419A999949AD805441E17A14DE19935141B81E857BA9805441F6285CEF18935141B81E859BA68054410AD7A350189351419A9999B9A2805441EC51B8FE1693514152B81E859D805441000000C0159351410AD7A3F098805441713D0A7715935141AE47E10A97805441D7A3701D149351413D0AD75395805441
+</a>
+
+<b>
+010600000001000000010300000002000000250000001FD943FDF5925141A4F7DCAA9280544189568C8BF89251415BEC183A8F8054418DC8F18BFB925141137F16208C8054412F906A2602935141A57EF9B8868054418FC2F5F8039351411F85EB818380544175A82E58049351410AD55D0B83805441CDCCCC3C03935141A4703D6A8180544100000040FF9251413333333379805441CDCCCCECFE925141CDCCCCEC71805441295C8F12FA925141AE47E1CA74805441000000E0F6925141EC51B8AE7680544114AE4791F5925141295C8FA277805441CDCCCC9CF4925141A4703D0A798054418FC2F578F3925141F6285CBF7B805441CDCCCCFCF19251418FC2F5B87F80544185EB51A8F09251415C8FC285858054413D0AD7A3EF9251419A9999C98A80544148E17A44EF925141EC51B88E8C805441F6285C7FEE9251410AD7A3908D805441713D0A27ED925141AE47E16A8E805441333333D3E8925141F6285C4F9080544148E17A94E0925141F6285C6F95805441CDCCCC2CE7925141713D0A27928054418FC2F538EA925141E17A146E93805441F6285C8FEC92514148E17AE4958054419A9999A9ED9251413D0AD7A398805441713D0A17ED92514185EB51189A805441A4703DEAEF925141CDCCCC3C9C8054410AD7A3A0EF925141B81E85BB9E8054419A9999A9ED925141A4703DAAA280544185EB5148EB925141C3F5281CA88054415C8FC275EC92514185EB51F8A78054417B14AE77F4925141AE47E15AA18054415C8FC295F49251410AD7A3E09A80544152B81ED5F5925141EC51B80E9580544197D19AF1F5925141B4468FBA928054411FD943FDF5925141A4F7DCAA928054410A00000014AE47F1EC9251419A9999899180544148E17A94ED9251415C8FC2D58F8054411F85EB21F0925141713D0A078E8054410AD7A3F0F1925141000000B08B805441EC51B87EF4925141A4703DAA898054419A999999F492514152B81EA58C80544133333363F4925141F6285CAF908054417B14AE37F392514152B81EC59380544133333353EE925141E17A146E9680544114AE47F1EC9251419A99998991805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130623 - 55608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000550000001F85EBC1ABA75141D7A3703D2E9354418FC2F538AFA75141A4703D4A2F9354413D0AD763B3A7514148E17AB4289354417B14AE57AEA75141AE47E15A1A935441D7A3705DA9A7514148E17A340C9354418FC2F5E8A8A75141713D0A770B9354410AD7A3E0A6A75141A4703D1A08935441EC51B8CEA2A75141713D0AF7FE9254411F85EB51A0A75141000000F0F3925441333333839EA751411F85EBE1EB92544152B81E959FA7514148E17A44E3925441B81E851B93A75141EC51B86EE1925441295C8F4292A75141713D0A27DB925441B81E857B91A751418FC2F5F8D89254410AD7A3708CA751415C8FC235D6925441713D0A7785A751410AD7A3F0D5925441AE47E15A81A75141000000C0D59254417B14AE777DA75141295C8F82D6925441EC51B8EE7BA7514133333383D7925441D7A370AD7AA75141B81E855BD892544148E17A647AA751415C8FC235DC9254411F85EB917AA75141CDCCCC7CDD9254419A9999297BA75141B81E85ABE0925441C3F528FC7BA75141D7A3701DE5925441CDCCCC4C7EA751418FC2F548EC9254411F85EBC187A751415C8FC2250293544185EB51C885A75141B81E855B0B935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C935441666666867DA75141C3F5287C1D935441EC51B81E7EA75141000000301E935441295C8F927EA751411F85EBB11E935441333333037FA75141713D0AF71E9354411F85EB917FA7514148E17A041F935441E17A14EE7FA751416666660620935441F6285C4F80A75141666666062193544185EB519880A751415C8FC285219354415C8FC2E580A7514148E17A042293544114AE479180A75141713D0A67229354418FC2F51880A75141666666A6229354417B14AEA77FA75141AE47E1EA229354410AD7A3F07FA75141B81E85CB23935441D7A3701D80A7514185EB5178249354410000003080A751413D0AD72325935441EC51B8AE7FA75141000000C025935441A4703D4A7FA751417B14AE17269354418FC2F5087FA75141295C8F7226935441C3F528FC7EA75141E17A14DE26935441AE47E11A7FA7514148E17AC42793544114AE47417FA75141F6285CFF28935441F6285C5F7FA75141333333032A9354415C8FC2857FA75141666666A62A9354418FC2F5A87FA751411F85EB112B935441295C8F9280A7514114AE47912B9354416666665681A75141713D0AE72B935441666666B681A751410AD7A3802C935441295C8FB283A75141B81E859B2E935441E17A146E84A75141A4703D1A309354418FC2F50884A75141C3F528AC31935441713D0AC783A7514114AE475132935441C3F5287C83A75141713D0A17339354419A99993983A751410AD7A3D033935441AE47E14A83A75141D7A370DD349354411F85EB0185A751415C8FC285359354419A99999985A751411F85EBA1369354411F85EB4186A751411F85EB81369354413D0AD7A388A75141C3F5280C36935441666666C688A75141C3F528EC35935441666666E689A751411F85EBD13493544148E17A148BA75141D7A3701D34935441A4703D2A8CA751413D0AD7A3339354413D0AD7F38CA75141CDCCCC5C33935441295C8FB28DA7514114AE474133935441D7A3701D8FA751411F85EB3133935441C3F5285C92A751418FC2F57833935441B81E855B93A75141B81E859B339354415C8FC2E59BA75141F6285CCF33935441F6285C0F9DA7514148E17A4434935441CDCCCCAC9FA75141F6285C0F3693544166666626A6A75141AE47E13A359354411F85EBC1ABA75141D7A3703D2E935441
+</a>
+
+<b>
+010600000001000000010300000001000000410000001F85EBC1ABA75141D7A3703D2E935441F88CBDCBABA75141AC776A402E935441255846D6ABA751416C362C332E935441E73BC19F92A75141420A6F8B2A935441273260E485A75141380EFD7B0B9354415594424484A75141D68CF02F0C935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C9354416AEFAFF37DA75141C29233FC1D9354414584768A7EA751410AFC11A51E935441333333037FA75141713D0AF71E9354411F85EB917FA7514148E17A041F9354415F51C24880A751410C7B14EE209354415C8FC2E580A7514148E17A042293544114AE479180A75141713D0A67229354418D862DD97FA75141FD23F5CC22935441A51281C57FA751419FC6D9D822935441C30444BC7FA75141777F6FDE2293544180A106BB7FA75141765D2FDF2293544141BB8BB87FA75141A02CAFE022935441DD6A97B67FA75141C19FDDE122935441207117B27FA751411A0496E4229354412A97B0B47FA751411ABFEF12239354410AD7A3F07FA75141B81E85CB23935441D7A3701D80A7514185EB5178249354410000003080A751413D0AD72325935441EC51B8AE7FA75141000000C0259354414F24B1917FA75141028854D925935441EDA47C517FA75141DFF0EF2226935441A827351B7FA7514191424F6B26935441C3F528FC7EA75141E17A14DE26935441AE47E11A7FA7514148E17AC42793544114AE47417FA75141F6285CFF28935441F6285C5F7FA75141333333032A9354415C8FC2857FA75141666666A62A93544185BCFBB17FA7514101156C0F2B935441295C8F9280A7514114AE47912B9354416666665681A75141713D0AE72B935441666666B681A751410AD7A3802C935441295C8FB283A75141B81E859B2E935441E17A146E84A75141A4703D1A309354418FC2F50884A75141C3F528AC31935441292BAB4083A75141EAEAFED833935441AE47E14A83A75141D7A370DD349354411F85EB0185A751415C8FC28535935441987EC59B85A75141F0559894369354411F85EB4186A751411F85EB8136935441C72CC6A588A751418DB2D90336935441666666E689A751411F85EBD13493544148E17A148BA75141D7A3701D34935441A4703D2A8CA751413D0AD7A3339354413D0AD7F38CA75141CDCCCC5C33935441295C8FB28DA7514114AE474133935441D7A3701D8FA751411F85EB3133935441C3F5285C92A751418FC2F57833935441B81E855B93A75141B81E859B339354415C8FC2E59BA75141F6285CCF33935441F6285C0F9DA7514148E17A4434935441CDCCCCAC9FA75141F6285C0F3693544166666626A6A75141AE47E13A359354411F85EBC1ABA75141D7A3703D2E935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130623 - 97296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000550000001F85EBC1ABA75141D7A3703D2E9354418FC2F538AFA75141A4703D4A2F9354413D0AD763B3A7514148E17AB4289354417B14AE57AEA75141AE47E15A1A935441D7A3705DA9A7514148E17A340C9354418FC2F5E8A8A75141713D0A770B9354410AD7A3E0A6A75141A4703D1A08935441EC51B8CEA2A75141713D0AF7FE9254411F85EB51A0A75141000000F0F3925441333333839EA751411F85EBE1EB92544152B81E959FA7514148E17A44E3925441B81E851B93A75141EC51B86EE1925441295C8F4292A75141713D0A27DB925441B81E857B91A751418FC2F5F8D89254410AD7A3708CA751415C8FC235D6925441713D0A7785A751410AD7A3F0D5925441AE47E15A81A75141000000C0D59254417B14AE777DA75141295C8F82D6925441EC51B8EE7BA7514133333383D7925441D7A370AD7AA75141B81E855BD892544148E17A647AA751415C8FC235DC9254411F85EB917AA75141CDCCCC7CDD9254419A9999297BA75141B81E85ABE0925441C3F528FC7BA75141D7A3701DE5925441CDCCCC4C7EA751418FC2F548EC9254411F85EBC187A751415C8FC2250293544185EB51C885A75141B81E855B0B935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C935441666666867DA75141C3F5287C1D935441EC51B81E7EA75141000000301E935441295C8F927EA751411F85EBB11E935441333333037FA75141713D0AF71E9354411F85EB917FA7514148E17A041F935441E17A14EE7FA751416666660620935441F6285C4F80A75141666666062193544185EB519880A751415C8FC285219354415C8FC2E580A7514148E17A042293544114AE479180A75141713D0A67229354418FC2F51880A75141666666A6229354417B14AEA77FA75141AE47E1EA229354410AD7A3F07FA75141B81E85CB23935441D7A3701D80A7514185EB5178249354410000003080A751413D0AD72325935441EC51B8AE7FA75141000000C025935441A4703D4A7FA751417B14AE17269354418FC2F5087FA75141295C8F7226935441C3F528FC7EA75141E17A14DE26935441AE47E11A7FA7514148E17AC42793544114AE47417FA75141F6285CFF28935441F6285C5F7FA75141333333032A9354415C8FC2857FA75141666666A62A9354418FC2F5A87FA751411F85EB112B935441295C8F9280A7514114AE47912B9354416666665681A75141713D0AE72B935441666666B681A751410AD7A3802C935441295C8FB283A75141B81E859B2E935441E17A146E84A75141A4703D1A309354418FC2F50884A75141C3F528AC31935441713D0AC783A7514114AE475132935441C3F5287C83A75141713D0A17339354419A99993983A751410AD7A3D033935441AE47E14A83A75141D7A370DD349354411F85EB0185A751415C8FC285359354419A99999985A751411F85EBA1369354411F85EB4186A751411F85EB81369354413D0AD7A388A75141C3F5280C36935441666666C688A75141C3F528EC35935441666666E689A751411F85EBD13493544148E17A148BA75141D7A3701D34935441A4703D2A8CA751413D0AD7A3339354413D0AD7F38CA75141CDCCCC5C33935441295C8FB28DA7514114AE474133935441D7A3701D8FA751411F85EB3133935441C3F5285C92A751418FC2F57833935441B81E855B93A75141B81E859B339354415C8FC2E59BA75141F6285CCF33935441F6285C0F9DA7514148E17A4434935441CDCCCCAC9FA75141F6285C0F3693544166666626A6A75141AE47E13A359354411F85EBC1ABA75141D7A3703D2E935441
+</a>
+
+<b>
+010600000001000000010300000001000000410000001F85EBC1ABA75141D7A3703D2E935441F48CBDCBABA75141AE776A402E935441295846D6ABA751416A362C332E935441EA3BC19F92A75141440A6F8B2A935441253260E485A75141330EFD7B0B9354415A94424484A75141DB8CF02F0C935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C93544167EFAFF37DA75141BF9233FC1D9354414184768A7EA751410CFC11A51E935441333333037FA75141713D0AF71E9354411F85EB917FA7514148E17A041F9354415E51C24880A751410C7B14EE209354415C8FC2E580A7514148E17A042293544114AE479180A75141713D0A67229354418B862DD97FA75141F923F5CC22935441A51281C57FA751419BC6D9D822935441C70444BC7FA75141747F6FDE2293544185A106BB7FA751417B5D2FDF229354413FBB8BB87FA751419E2CAFE022935441E06A97B67FA75141C39FDDE122935441207117B27FA75141190496E4229354412C97B0B47FA7514115BFEF12239354410AD7A3F07FA75141B81E85CB23935441D7A3701D80A7514185EB5178249354410000003080A751413D0AD72325935441EC51B8AE7FA75141000000C0259354415024B1917FA75141028854D925935441ECA47C517FA75141DEF0EF2226935441AA27351B7FA7514193424F6B26935441C3F528FC7EA75141E17A14DE26935441AE47E11A7FA7514148E17AC42793544114AE47417FA75141F6285CFF28935441F6285C5F7FA75141333333032A9354415C8FC2857FA75141666666A62A93544184BCFBB17FA75141FC146C0F2B935441295C8F9280A7514114AE47912B9354416666665681A75141713D0AE72B935441666666B681A751410AD7A3802C935441295C8FB283A75141B81E859B2E935441E17A146E84A75141A4703D1A309354418FC2F50884A75141C3F528AC31935441272BAB4083A75141EDEAFED833935441AE47E14A83A75141D7A370DD349354411F85EB0185A751415C8FC285359354419A7EC59B85A75141ED559894369354411F85EB4186A751411F85EB8136935441CB2CC6A588A751418EB2D90336935441666666E689A751411F85EBD13493544148E17A148BA75141D7A3701D34935441A4703D2A8CA751413D0AD7A3339354413D0AD7F38CA75141CDCCCC5C33935441295C8FB28DA7514114AE474133935441D7A3701D8FA751411F85EB3133935441C3F5285C92A751418FC2F57833935441B81E855B93A75141B81E859B339354415C8FC2E59BA75141F6285CCF33935441F6285C0F9DA7514148E17A4434935441CDCCCCAC9FA75141F6285C0F3693544166666626A6A75141AE47E13A359354411F85EBC1ABA75141D7A3703D2E935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130623 - 299029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000550000001F85EBC1ABA75141D7A3703D2E9354418FC2F538AFA75141A4703D4A2F9354413D0AD763B3A7514148E17AB4289354417B14AE57AEA75141AE47E15A1A935441D7A3705DA9A7514148E17A340C9354418FC2F5E8A8A75141713D0A770B9354410AD7A3E0A6A75141A4703D1A08935441EC51B8CEA2A75141713D0AF7FE9254411F85EB51A0A75141000000F0F3925441333333839EA751411F85EBE1EB92544152B81E959FA7514148E17A44E3925441B81E851B93A75141EC51B86EE1925441295C8F4292A75141713D0A27DB925441B81E857B91A751418FC2F5F8D89254410AD7A3708CA751415C8FC235D6925441713D0A7785A751410AD7A3F0D5925441AE47E15A81A75141000000C0D59254417B14AE777DA75141295C8F82D6925441EC51B8EE7BA7514133333383D7925441D7A370AD7AA75141B81E855BD892544148E17A647AA751415C8FC235DC9254411F85EB917AA75141CDCCCC7CDD9254419A9999297BA75141B81E85ABE0925441C3F528FC7BA75141D7A3701DE5925441CDCCCC4C7EA751418FC2F548EC9254411F85EBC187A751415C8FC2250293544185EB51C885A75141B81E855B0B935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C935441666666867DA75141C3F5287C1D935441EC51B81E7EA75141000000301E935441295C8F927EA751411F85EBB11E935441333333037FA75141713D0AF71E9354411F85EB917FA7514148E17A041F935441E17A14EE7FA751416666660620935441F6285C4F80A75141666666062193544185EB519880A751415C8FC285219354415C8FC2E580A7514148E17A042293544114AE479180A75141713D0A67229354418FC2F51880A75141666666A6229354417B14AEA77FA75141AE47E1EA229354410AD7A3F07FA75141B81E85CB23935441D7A3701D80A7514185EB5178249354410000003080A751413D0AD72325935441EC51B8AE7FA75141000000C025935441A4703D4A7FA751417B14AE17269354418FC2F5087FA75141295C8F7226935441C3F528FC7EA75141E17A14DE26935441AE47E11A7FA7514148E17AC42793544114AE47417FA75141F6285CFF28935441F6285C5F7FA75141333333032A9354415C8FC2857FA75141666666A62A9354418FC2F5A87FA751411F85EB112B935441295C8F9280A7514114AE47912B9354416666665681A75141713D0AE72B935441666666B681A751410AD7A3802C935441295C8FB283A75141B81E859B2E935441E17A146E84A75141A4703D1A309354418FC2F50884A75141C3F528AC31935441713D0AC783A7514114AE475132935441C3F5287C83A75141713D0A17339354419A99993983A751410AD7A3D033935441AE47E14A83A75141D7A370DD349354411F85EB0185A751415C8FC285359354419A99999985A751411F85EBA1369354411F85EB4186A751411F85EB81369354413D0AD7A388A75141C3F5280C36935441666666C688A75141C3F528EC35935441666666E689A751411F85EBD13493544148E17A148BA75141D7A3701D34935441A4703D2A8CA751413D0AD7A3339354413D0AD7F38CA75141CDCCCC5C33935441295C8FB28DA7514114AE474133935441D7A3701D8FA751411F85EB3133935441C3F5285C92A751418FC2F57833935441B81E855B93A75141B81E859B339354415C8FC2E59BA75141F6285CCF33935441F6285C0F9DA7514148E17A4434935441CDCCCCAC9FA75141F6285C0F3693544166666626A6A75141AE47E13A359354411F85EBC1ABA75141D7A3703D2E935441
+</a>
+
+<b>
+010600000001000000010300000001000000410000001F85EBC1ABA75141D7A3703D2E935441F48CBDCBABA75141AE776A402E935441295846D6ABA751416A362C332E935441EA3BC19F92A75141440A6F8B2A935441253260E485A75141330EFD7B0B9354415A94424484A75141DB8CF02F0C935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C93544167EFAFF37DA75141BF9233FC1D9354414184768A7EA751410CFC11A51E935441333333037FA75141713D0AF71E9354411F85EB917FA7514148E17A041F9354415E51C24880A751410C7B14EE209354415C8FC2E580A7514148E17A042293544114AE479180A75141713D0A67229354418B862DD97FA75141F923F5CC22935441A51281C57FA751419BC6D9D822935441C70444BC7FA75141747F6FDE2293544185A106BB7FA751417B5D2FDF229354413FBB8BB87FA751419E2CAFE022935441E06A97B67FA75141C39FDDE122935441207117B27FA75141190496E4229354412C97B0B47FA7514115BFEF12239354410AD7A3F07FA75141B81E85CB23935441D7A3701D80A7514185EB5178249354410000003080A751413D0AD72325935441EC51B8AE7FA75141000000C0259354415024B1917FA75141028854D925935441ECA47C517FA75141DEF0EF2226935441AA27351B7FA7514193424F6B26935441C3F528FC7EA75141E17A14DE26935441AE47E11A7FA7514148E17AC42793544114AE47417FA75141F6285CFF28935441F6285C5F7FA75141333333032A9354415C8FC2857FA75141666666A62A93544184BCFBB17FA75141FC146C0F2B935441295C8F9280A7514114AE47912B9354416666665681A75141713D0AE72B935441666666B681A751410AD7A3802C935441295C8FB283A75141B81E859B2E935441E17A146E84A75141A4703D1A309354418FC2F50884A75141C3F528AC31935441272BAB4083A75141EDEAFED833935441AE47E14A83A75141D7A370DD349354411F85EB0185A751415C8FC285359354419A7EC59B85A75141ED559894369354411F85EB4186A751411F85EB8136935441CB2CC6A588A751418EB2D90336935441666666E689A751411F85EBD13493544148E17A148BA75141D7A3701D34935441A4703D2A8CA751413D0AD7A3339354413D0AD7F38CA75141CDCCCC5C33935441295C8FB28DA7514114AE474133935441D7A3701D8FA751411F85EB3133935441C3F5285C92A751418FC2F57833935441B81E855B93A75141B81E859B339354415C8FC2E59BA75141F6285CCF33935441F6285C0F9DA7514148E17A4434935441CDCCCCAC9FA75141F6285C0F3693544166666626A6A75141AE47E13A359354411F85EBC1ABA75141D7A3703D2E935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130821 - 3176149
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000A4703D3AA38B5141D7A370CD5A96544148E17A14A48B514148E17AC4649654415C8FC245A78B51411F85EB218A96544114AE4711A98B51415C8FC2259F96544148E17A34AA8B5141CDCCCC8C9E96544152B81E35AE8B5141A4703DDA9B965441AE47E1FAB18B51416666669698965441C3F5282CB58B514185EB5148959654410AD7A3E0B98B51415C8FC2B58E9654415C8FC245BB8B514114AE47418D965441AE47E12ABB8B5141295C8F228C965441C3F5284CB88B51413D0AD7B36D96544100000040B78B51411F85EB1165965441AE47E1EAAA8B5141A4703D9A669654415C8FC245AA8B5141B81E857B61965441A4703D8AA88B5141EC51B88E509654410AD7A360A28B5141713D0AD750965441A4703D3AA38B5141D7A370CD5A965441
+</a>
+
+<b>
+010600000001000000010300000001000000100000004F915E76A38B51413FCAAB9F5D96544120AA3B27A48B514122B0C2A05D965441EF8B8170A48B51413FCAAB9F5D9654411C1B79F4A58B5141335F1E9D5D96544103EE5A63A68B514179A5FF9B5D9654415BBD30DAA68B51411B8903985D96544111C9A7DEA98B5141E067478C5D9654419730089FA98B5141FEEEBB1E5B9654414A59CE75A98B5141ABD54F9A59965441A4703D8AA88B5141EC51B88E509654410AD7A360A28B5141713D0AD75096544137AF72F5A28B5141F9FA43DE57965441DE14AC3CA38B5141E810B6265B9654418ED76A5AA38B51414F9576BF5C9654414326D173A38B51418A8462795D9654414F915E76A38B51413FCAAB9F5D965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130821 - 3340917
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000A4703D3AA38B5141D7A370CD5A96544148E17A14A48B514148E17AC4649654415C8FC245A78B51411F85EB218A96544114AE4711A98B51415C8FC2259F96544148E17A34AA8B5141CDCCCC8C9E96544152B81E35AE8B5141A4703DDA9B965441AE47E1FAB18B51416666669698965441C3F5282CB58B514185EB5148959654410AD7A3E0B98B51415C8FC2B58E9654415C8FC245BB8B514114AE47418D965441AE47E12ABB8B5141295C8F228C965441C3F5284CB88B51413D0AD7B36D96544100000040B78B51411F85EB1165965441AE47E1EAAA8B5141A4703D9A669654415C8FC245AA8B5141B81E857B61965441A4703D8AA88B5141EC51B88E509654410AD7A360A28B5141713D0AD750965441A4703D3AA38B5141D7A370CD5A965441
+</a>
+
+<b>
+010600000001000000010300000001000000100000004F915E76A38B51413FCAAB9F5D96544120AA3B27A48B514122B0C2A05D965441EF8B8170A48B51413FCAAB9F5D9654411C1B79F4A58B5141335F1E9D5D96544103EE5A63A68B514179A5FF9B5D9654415BBD30DAA68B51411B8903985D96544111C9A7DEA98B5141E067478C5D9654419730089FA98B5141FEEEBB1E5B9654414A59CE75A98B5141ABD54F9A59965441A4703D8AA88B5141EC51B88E509654410AD7A360A28B5141713D0AD75096544137AF72F5A28B5141F9FA43DE57965441DE14AC3CA38B5141E810B6265B9654418ED76A5AA38B51414F9576BF5C9654414326D173A38B51418A8462795D9654414F915E76A38B51413FCAAB9F5D965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187298 - 35972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000F6285CCF31D15041F6285C5F799354419A99991901D15041B81E85BBCF93544148E17A5402D150410AD7A350D09354410AD7A3B033D15041F6285C1F7A935441F6285CCF31D15041F6285C5F79935441
+</a>
+
+<b>
+010600000001000000010300000001000000080000008609013824D15041B8520E78919354411971C59521D150413F786E239693544148E6A6481BD1504100F9654FA19354410EB025381CD15041B2F220CBA193544168113C9026D150415ED7364B8F93544167D67ECF25D1504187EC98A58E935441B2B6069225D15041422894128F9354418609013824D15041B8520E7891935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187298 - 74634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000F6285CCF31D15041F6285C5F799354419A99991901D15041B81E85BBCF93544148E17A5402D150410AD7A350D09354410AD7A3B033D15041F6285C1F7A935441F6285CCF31D15041F6285C5F79935441
+</a>
+
+<b>
+010600000001000000010300000001000000080000008609013824D15041B8520E78919354411971C59521D150413F786E239693544148E6A6481BD1504100F9654FA19354410EB025381CD15041B2F220CBA193544168113C9026D150415ED7364B8F93544167D67ECF25D1504187EC98A58E935441B2B6069225D15041422894128F9354418609013824D15041B8520E7891935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131196 - 3144157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FA28B8B5141C3F528BCF19554411F85EB71888B5141F6285CEFF29554418FC2F598878B51410AD7A3C0F295544114AE47918A8B5141B81E85FBFA955441AE47E11A958B5141E17A142E1896544152B81E15978B5141C3F528CC1796544114AE47119C8B51415C8FC2E5169654417B14AE87918B51413D0AD7B3F9955441295C8F228E8B5141C3F5284CF0955441295C8FA28B8B5141C3F528BCF1955441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F39D06ED898B514193F5F331F8955441E970749B908B514160EB6F25F79554418E755E1F8E8B5141F8F95356F095544168174AA48B8B5141B2632ABBF19554411F85EB71888B5141F6285CEFF29554410E62529E878B514143707FCFF2955441BB956B9B888B5141A73CD88CF59554414F4CE343898B51419704AD5FF7955441E1631196898B5141EE7D6643F8955441F39D06ED898B514193F5F331F8955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131196 - 3534419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FA28B8B5141C3F528BCF19554411F85EB71888B5141F6285CEFF29554418FC2F598878B51410AD7A3C0F295544114AE47918A8B5141B81E85FBFA955441AE47E11A958B5141E17A142E1896544152B81E15978B5141C3F528CC1796544114AE47119C8B51415C8FC2E5169654417B14AE87918B51413D0AD7B3F9955441295C8F228E8B5141C3F5284CF0955441295C8FA28B8B5141C3F528BCF1955441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F39D06ED898B514193F5F331F8955441E970749B908B514160EB6F25F79554418E755E1F8E8B5141F8F95356F095544168174AA48B8B5141B2632ABBF19554411F85EB71888B5141F6285CEFF29554410E62529E878B514143707FCFF2955441BB956B9B888B5141A73CD88CF59554414F4CE343898B51419704AD5FF7955441E1631196898B5141EE7D6643F8955441F39D06ED898B514193F5F331F8955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131316 - 1215732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441333333A33B7F51413D0AD763508A54417B14AE973D7F5141A4703DAA598A5441AE47E1BA3D7F51418FC2F5D8598A5441D7A370AD3E7F51410AD7A3205B8A5441D7A370AD407F51417B14AEE75B8A54417B14AEB7527F5141333333235F8A5441CDCCCC4C5F7F51411F85EB01608A5441C3F528FC737F5141666666E65E8A544148E17AD4837F5141E17A147E598A5441B81E852B897F5141EC51B8DE558A5441333333138E7F514185EB5128538A544114AE4761997F51413D0AD7A34F8A544114AE4741B17F5141713D0A37488A5441666666B6AF7F5141A4703D9A2A8A5441295C8FB2A87F5141000000602C8A5441F6285C9FA77F514185EB5148298A5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441333333A33B7F51413D0AD763508A54417B14AE973D7F5141A4703DAA598A5441AE47E1BA3D7F51418FC2F5D8598A5441D7A370AD3E7F51410AD7A3205B8A5441D7A370AD407F51417B14AEE75B8A54417B14AEB7527F5141333333235F8A5441CDCCCC4C5F7F51411F85EB01608A5441C3F528FC737F5141666666E65E8A544148E17AD4837F5141E17A147E598A5441B81E852B897F5141EC51B8DE558A5441333333138E7F514185EB5128538A544114AE4761997F51413D0AD7A34F8A544114AE4741B17F5141713D0A37488A5441C3F5289CB27F5141666666C6468A5441B1B392F2B07F51416E940B50428A5441D064C904AE7F51417D8F7A733A8A5441295C8FB2A87F5141000000602C8A5441F6285C9FA77F514185EB5148298A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131316 - 3390100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441333333A33B7F51413D0AD763508A54417B14AE973D7F5141A4703DAA598A5441AE47E1BA3D7F51418FC2F5D8598A5441D7A370AD3E7F51410AD7A3205B8A5441D7A370AD407F51417B14AEE75B8A54417B14AEB7527F5141333333235F8A5441CDCCCC4C5F7F51411F85EB01608A5441C3F528FC737F5141666666E65E8A544148E17AD4837F5141E17A147E598A5441B81E852B897F5141EC51B8DE558A5441333333138E7F514185EB5128538A544114AE4761997F51413D0AD7A34F8A544114AE4741B17F5141713D0A37488A5441666666B6AF7F5141A4703D9A2A8A5441295C8FB2A87F5141000000602C8A5441F6285C9FA77F514185EB5148298A5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441333333A33B7F51413D0AD763508A54417B14AE973D7F5141A4703DAA598A5441AE47E1BA3D7F51418FC2F5D8598A5441D7A370AD3E7F51410AD7A3205B8A5441D7A370AD407F51417B14AEE75B8A54417B14AEB7527F5141333333235F8A5441CDCCCC4C5F7F51411F85EB01608A5441C3F528FC737F5141666666E65E8A544148E17AD4837F5141E17A147E598A5441B81E852B897F5141EC51B8DE558A5441333333138E7F514185EB5128538A544114AE4761997F51413D0AD7A34F8A544114AE4741B17F5141713D0A37488A5441C3F5289CB27F5141666666C6468A5441B1B392F2B07F51416E940B50428A5441D064C904AE7F51417D8F7A733A8A5441295C8FB2A87F5141000000602C8A5441F6285C9FA77F514185EB5148298A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131552 - 3086771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000014AE47E1A58E514148E17A9410845441666666D6A98E5141EC51B87E0E84544166666606AA8E5141F6285C7F13845441713D0A47AA8E5141CDCCCC7C1784544114AE4791AA8E5141AE47E1EA1B8454410AD7A330AB8E5141EC51B8CE1D845441F6285C7FB18E5141000000402284544185EB5118B98E51416666666627845441000000C0B98E51417B14AE872784544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441AE47E1BAB08E5141CDCCCC9CF8835441C3F528ACA78E5141713D0A67F28354411F85EB01A28E51413D0AD7A3F28354411F85EB819E8E51418FC2F5C8F28354411F85EB11968E514133333323F3835441C3F5286C908E514148E17A84F483544152B81E058A8E514148E17A14F68354413D0AD7438A8E514114AE4731F78354413D0AD7C38B8E51411F85EB31FC835441000000608E8E51411F85EB1104845441666666E68F8E514185EB519807845441713D0A67918E5141295C8F720A845441295C8F42938E5141EC51B84E0D845441713D0A47968E5141B81E85FB1084544114AE47A19A8E5141CDCCCC1C1584544148E17A849C8E5141CDCCCCDC16845441EC51B83E9D8E51415C8FC20516845441666666A69E8E51415C8FC2651484544114AE4721A08E514166666656128454417B14AE87A18E5141F6285CDF1084544114AE47E1A58E514148E17A9410845441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E165F1C1AD8E5141717CA69B1F84544124E0E435B18E514170E223DC2184544122F9A096B48E5141F80A104324845441984FEED0B78E51415D29411026845441876013DFB98E51417DADE27F26845441E4DB9237BB8E5141F61185131B8454413884EE6DBC8E514180DCF5C810845441FCBF08ACBD8E51412703A93C0684544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441A1A8EC24AF8E51418C097886F78354417AAD3D35AE8E51418050D512F78354417BFAFE14AD8E51413B551B40F98354419D517B8EAC8E51414ABFAF6E018454412614EAB4AC8E5141D04D19160684544158A3829BAD8E5141CF66D57609845441E01830E2AE8E5141015CEB9D0C845441AD3CD61BAF8E5141BB1370EB0F84544114F589A8AE8E5141B945E8AC16845441E165F1C1AD8E5141717CA69B1F845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131552 - 3410556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000014AE47E1A58E514148E17A9410845441666666D6A98E5141EC51B87E0E84544166666606AA8E5141F6285C7F13845441713D0A47AA8E5141CDCCCC7C1784544114AE4791AA8E5141AE47E1EA1B8454410AD7A330AB8E5141EC51B8CE1D845441F6285C7FB18E5141000000402284544185EB5118B98E51416666666627845441000000C0B98E51417B14AE872784544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441AE47E1BAB08E5141CDCCCC9CF8835441C3F528ACA78E5141713D0A67F28354411F85EB01A28E51413D0AD7A3F28354411F85EB819E8E51418FC2F5C8F28354411F85EB11968E514133333323F3835441C3F5286C908E514148E17A84F483544152B81E058A8E514148E17A14F68354413D0AD7438A8E514114AE4731F78354413D0AD7C38B8E51411F85EB31FC835441000000608E8E51411F85EB1104845441666666E68F8E514185EB519807845441713D0A67918E5141295C8F720A845441295C8F42938E5141EC51B84E0D845441713D0A47968E5141B81E85FB1084544114AE47A19A8E5141CDCCCC1C1584544148E17A849C8E5141CDCCCCDC16845441EC51B83E9D8E51415C8FC20516845441666666A69E8E51415C8FC2651484544114AE4721A08E514166666656128454417B14AE87A18E5141F6285CDF1084544114AE47E1A58E514148E17A9410845441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E165F1C1AD8E5141717CA69B1F84544124E0E435B18E514170E223DC2184544122F9A096B48E5141F80A104324845441984FEED0B78E51415D29411026845441876013DFB98E51417DADE27F26845441E4DB9237BB8E5141F61185131B8454413884EE6DBC8E514180DCF5C810845441FCBF08ACBD8E51412703A93C0684544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441A1A8EC24AF8E51418C097886F78354417AAD3D35AE8E51418050D512F78354417BFAFE14AD8E51413B551B40F98354419D517B8EAC8E51414ABFAF6E018454412614EAB4AC8E5141D04D19160684544158A3829BAD8E5141CF66D57609845441E01830E2AE8E5141015CEB9D0C845441AD3CD61BAF8E5141BB1370EB0F84544114F589A8AE8E5141B945E8AC16845441E165F1C1AD8E5141717CA69B1F845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132073 - 168547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000005C8FC2C5D3835141AE47E1CAF48D54411F85EBB1D98351410AD7A370F78D54410AD7A390DB835141295C8F22F88D54419A999929DD835141E17A145EF88D54415C8FC285DE8351413D0AD743F88D544185EB51E8DF835141B81E85DBF78D54418FC2F5E8E0835141CDCCCC5CF78D5441F6285CEFE1835141295C8F82F68D54410AD7A310E483514100000090F48D5441F6285C9FEC835141713D0AD7EB8D5441C3F528FCE58351411F85EB81E58D5441E17A141EE0835141EC51B86EEA8D5441D7A370DDCA8351418FC2F558D38D5441B81E85DBC1835141CDCCCC5CD78D544133333323CB835141E17A141EE18D54410AD7A380CE835141A4703DFADE8D544148E17AE4D48351415C8FC2A5E68D5441CDCCCC4CCF835141295C8F42EB8D5441E17A146ED0835141F6285C9FEC8D5441C3F5285CD0835141B81E85EBEF8D544114AE4741CF8351418FC2F528F38D544148E17AA4D08351417B14AE97F38D54415C8FC2C5D3835141AE47E1CAF48D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000F24171A4E4835141CE0659F9F38D544148F0BC17EC835141EEE44661EC8D5441105A0796EC8351412C5D61D5EB8D5441C3F528FCE58351411F85EB81E58D5441E17A141EE0835141EC51B86EEA8D5441D7A370DDCA8351418FC2F558D38D5441768A3618C983514109D40B28D48D5441D80104EDC68351417DE96D22D58D5441A32782E5C3835141C4997A76D68D5441A4A2728CC38351417BB0D39BD68D5441AAD1F61FC38351417BB02ECCD68D5441ED46102FC283514124B28F37D78D544132019AE5C18351419475A363D78D544133333323CB835141E17A141EE18D54410AD7A380CE835141A4703DFADE8D544148E17AE4D48351415C8FC2A5E68D5441CDCCCC4CCF835141295C8F42EB8D5441E17A146ED0835141F6285C9FEC8D5441C3F5285CD0835141B81E85EBEF8D54414AF4A149CF835141506F381EF38D5441028D6773D083514173F16188F38D544148E17AA4D08351417B14AE97F38D5441E44356F6D0835141EF1710B7F38D544183F7F955D1835141BD1029D9F38D5441EC1E4F55D2835141A73B783DF48D5441BC823493D3835141597E84B5F48D5441BBFC06B3D3835141C4B8B2C3F48D54415C8FC2C5D3835141AE47E1CAF48D544184AEB703D7835141EE16E43DF68D5441B3A4D098D783514195EB5480F68D544110FC1A9BD783514173A49081F68D54411F85EBB1D98351410AD7A370F78D54410AD7A390DB835141295C8F22F88D54419A999929DD835141E17A145EF88D54415C8FC285DE8351413D0AD743F88D5441BE918EDFDF835141C92A19DEF78D5441F7EA5550E08351418C2129A8F78D544116F8C3DFE08351415D055761F78D5441FE03240EE1835141AD65E03DF78D5441F6285CEFE1835141295C8F82F68D54410AD7A310E483514100000090F48D5441F24171A4E4835141CE0659F9F38D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133019 - 3144884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81EA59D83514152B81EC5CC945441D7A370CD9883514152B81EA5CB9454417B14AEF796835141333333D3CD9454411F85EB41978351410AD7A310D09454417B14AEB79383514114AE4791DC945441713D0A6791835141AE47E1AAE3945441F6285C9F8F8351417B14AE27EA9454410AD7A3F08F8351417B14AE07EB945441E17A14CE918351417B14AE17EB9454411F85EB3193835141AE47E1FAEA945441E17A14DE94835141C3F5287CEA945441B81E85BB9483514185EB5198E794544185EB51F892835141295C8FA2E7945441333333F39283514114AE4731E29454416666664697835141000000E0E19454411F85EB319783514148E17AD4DE94544185EB51E8A08351417B14AED7DE945441E17A141EA183514100000000E0945441A4703DDAA883514100000030E2945441A4703DCAA983514148E17A34E3945441295C8FF2A9835141295C8F02E8945441E17A148EAB83514100000020E8945441CDCCCCCCAB8351410AD7A330E3945441CDCCCC4CAC835141B81E852BD9945441B81E850BAD83514185EB51C8CB9454418FC2F538AD8351415C8FC2B5C8945441D7A3709DA88351419A9999E9C894544152B81E65A88351413D0AD7C3C9945441B81E85FBA48351417B14AEF7CC9454413D0AD7B3A3835141D7A370CDCD94544152B81E65A2835141666666C6CD94544152B81EA59D83514152B81EC5CC945441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000005BFE2916A18351412B335ED4DF945441D6445DA8A9835141A58EB142E2945441E2FE49FAA98351417B4660DCE7945441EF1B7F68AB83514182D24D1DE8945441384F5718AD8351411F9031B7C8945441B25CCBC5A88351415E90D3E7C89454411CC12D3DA8835141EAC652E9C99454410FFC3090A68351417458E97BCB94544115D68AD9A3835141DD59D8B4CD9454419932E561A28351417667C7EFCD945441CD72A5AAA18351418A5C351FD79454415BFE2916A18351412B335ED4DF945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133342 - 2979364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C00000014AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A5441B81E859BF40851417B14AEB7938A544152B81E75F308514152B81EF5938A54418FC2F5C8ED08514166666626958A54415C8FC235F008514166666646A88A5441E17A14FE01095141295C8FF2A38A54417B14AE371709514148E17A349F8A5441AE47E19A15095141E17A14CE908A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000158566ADFF085141569C3C3D918A5441CD7BF86BFF0851419572CD16908A5441CABE551115095141551214218C8A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A54415D1A50C2F408514176C9D264928A5441E1018AA8F4085141A941F545938A5441158566ADFF085141569C3C3D918A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133342 - 3271187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C00000014AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A5441B81E859BF40851417B14AEB7938A544152B81E75F308514152B81EF5938A54418FC2F5C8ED08514166666626958A54415C8FC235F008514166666646A88A5441E17A14FE01095141295C8FF2A38A54417B14AE371709514148E17A349F8A5441AE47E19A15095141E17A14CE908A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000158566ADFF085141569C3C3D918A5441CD7BF86BFF0851419572CD16908A5441CABE551115095141551214218C8A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A54415D1A50C2F408514176C9D264928A5441E1018AA8F4085141A941F545938A5441158566ADFF085141569C3C3D918A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133590 - 163332
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C6FCB08514148E17A94938F5441A4703DBACD085141F6285C5F968F5441AE47E1DACE08514114AE47C1998F5441D7A370EDD1085141AE47E1AA9A8F5441CDCCCC8CD108514185EB5128938F544185EB51F8D00851418FC2F548888F54415C8FC295D0085141C3F5288C838F544133333363D008514185EB51F8818F5441EC51B8CECE085141A4703D7A768F54415C8FC2C5CC085141A4703DAA6A8F5441EC51B85ECB0851413D0AD7B3648F5441000000B0C908514185EB51A8618F5441AE47E11AC308514133333303638F5441E17A14EEC3085141666666D6658F5441E17A14CEC5085141A4703D2A6C8F5441E17A14FEC7085141B81E857B788F54418FC2F508C9085141AE47E1DA818F54419A9999D9C908514100000080918F544148E17A04CA085141A4703D8A938F5441F6285C6FCB08514148E17A94938F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000F7CA5B6FCB08514109707A94938F5441B61F8470CB085141F364E395938F5441706E3EBACD08514134E55A5F968F544170A76E48CE0851415ACDEF09988F5441AE47E1DACE08514114AE47C1998F5441DAE49941D0085141B6FED02B9A8F5441E29A70EDD10851418695E0AA9A8F5441CDCCCC8CD108514185EB5128938F54412431A66CD1085141EB7EA1CD908F54410E4651F8D00851419148F648888F5441011AC295D00851416559288C838F5441881C3263D00851417BA651F8818F544182EDB7CECE085141A0813D7A768F54418685C1C5CC085141FE663DAA6A8F54417C1C447BCB08514131EC322D658F5441F86CB85ECB0851413A7DD7B3648F5441B3E36F2DCB085141DCBCA55A648F5441142F00B0C9085141B94052A8618F5441845EE21AC3085141590A3303638F544192206379C30851414FCCD046648F5441E17A14EEC3085141666666D6658F5441E17A14CEC5085141A4703D2A6C8F54416A47A3B3C6085141C5E3D836718F5441C57915FEC70851416F5B847B788F54416D5BBEA2C808514117A9E9437E8F54418FC2F508C9085141AE47E1DA818F54417B7F8A5EC90851414967B845888F5441A5A39AD9C90851411091FF7F918F5441F1127B04CA0851414DF13C8A938F5441F7CA5B6FCB08514109707A94938F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133590 - 394052
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C6FCB08514148E17A94938F5441A4703DBACD085141F6285C5F968F5441AE47E1DACE08514114AE47C1998F5441D7A370EDD1085141AE47E1AA9A8F5441CDCCCC8CD108514185EB5128938F544185EB51F8D00851418FC2F548888F54415C8FC295D0085141C3F5288C838F544133333363D008514185EB51F8818F5441EC51B8CECE085141A4703D7A768F54415C8FC2C5CC085141A4703DAA6A8F5441EC51B85ECB0851413D0AD7B3648F5441000000B0C908514185EB51A8618F5441AE47E11AC308514133333303638F5441E17A14EEC3085141666666D6658F5441E17A14CEC5085141A4703D2A6C8F5441E17A14FEC7085141B81E857B788F54418FC2F508C9085141AE47E1DA818F54419A9999D9C908514100000080918F544148E17A04CA085141A4703D8A938F5441F6285C6FCB08514148E17A94938F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000F7CA5B6FCB08514109707A94938F5441B61F8470CB085141F364E395938F5441706E3EBACD08514134E55A5F968F544170A76E48CE0851415ACDEF09988F5441AE47E1DACE08514114AE47C1998F5441DAE49941D0085141B6FED02B9A8F5441E29A70EDD10851418695E0AA9A8F5441CDCCCC8CD108514185EB5128938F54412431A66CD1085141EB7EA1CD908F54410E4651F8D00851419148F648888F5441011AC295D00851416559288C838F5441881C3263D00851417BA651F8818F544182EDB7CECE085141A0813D7A768F54418685C1C5CC085141FE663DAA6A8F54417C1C447BCB08514131EC322D658F5441F86CB85ECB0851413A7DD7B3648F5441B3E36F2DCB085141DCBCA55A648F5441142F00B0C9085141B94052A8618F5441845EE21AC3085141590A3303638F544192206379C30851414FCCD046648F5441E17A14EEC3085141666666D6658F5441E17A14CEC5085141A4703D2A6C8F54416A47A3B3C6085141C5E3D836718F5441C57915FEC70851416F5B847B788F54416D5BBEA2C808514117A9E9437E8F54418FC2F508C9085141AE47E1DA818F54417B7F8A5EC90851414967B845888F5441A5A39AD9C90851411091FF7F918F5441F1127B04CA0851414DF13C8A938F5441F7CA5B6FCB08514109707A94938F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134286 - 163188
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2F59D0251418FC2F5581F8C544152B81E35A102514185EB51681E8C5441E17A14AEAA025141EC51B86E1E8C54410AD7A3B0AF025141295C8FA21B8C54417B14AE27B90251415C8FC245168C5441F6285CBFB10251418FC2F5B8098C5441EC51B83E9A0251418FC2F5E8E18B544152B81E658F0251413D0AD7D3E28B54416666663687025141C3F528DCF18B5441E17A14AE8D02514100000090FF8B54415C8FC2F59D0251418FC2F5581F8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000052B81E658F0251413D0AD7D3E28B5441CCDB663687025141BBBB29DCF18B5441122614AE8D025141502CFF8FFF8B54414276ED72900251419F6DF3F7048C5441BE0DC2F59D0251417FC5F4581F8C54417A3A4E18A0025141C2B0C2BA1E8C544152B81E35A102514185EB51681E8C5441A9E413AEAA0251418751B86E1E8C54410EEFA2B0AF025141E50A8EA21B8C5441FE28881DB80251412F958CDC168C54410CE5AD27B90251413CAAC245168C544196C57E31B402514106BCC6DD0D8C5441F6285CBFB10251418FC2F5B8098C5441498D4093AF0251419242EE0A068C5441A255B73E9A025141AB1EF6E8E18B5441300294B1970251412AED3020E28B544152B81E658F0251413D0AD7D3E28B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134286 - 398421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2F59D0251418FC2F5581F8C544152B81E35A102514185EB51681E8C5441E17A14AEAA025141EC51B86E1E8C54410AD7A3B0AF025141295C8FA21B8C54417B14AE27B90251415C8FC245168C5441F6285CBFB10251418FC2F5B8098C5441EC51B83E9A0251418FC2F5E8E18B544152B81E658F0251413D0AD7D3E28B54416666663687025141C3F528DCF18B5441E17A14AE8D02514100000090FF8B54415C8FC2F59D0251418FC2F5581F8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000052B81E658F0251413D0AD7D3E28B5441CCDB663687025141BBBB29DCF18B5441122614AE8D025141502CFF8FFF8B54414276ED72900251419F6DF3F7048C5441BE0DC2F59D0251417FC5F4581F8C54417A3A4E18A0025141C2B0C2BA1E8C544152B81E35A102514185EB51681E8C5441A9E413AEAA0251418751B86E1E8C54410EEFA2B0AF025141E50A8EA21B8C5441FE28881DB80251412F958CDC168C54410CE5AD27B90251413CAAC245168C544196C57E31B402514106BCC6DD0D8C5441F6285CBFB10251418FC2F5B8098C5441498D4093AF0251419242EE0A068C5441A255B73E9A025141AB1EF6E8E18B5441300294B1970251412AED3020E28B544152B81E658F0251413D0AD7D3E28B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134448 - 163163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B87E39035141295C8F42B68C5441F6285C8F3603514185EB51C8B68C544114AE4781340351415C8FC265B78C5441AE47E19A32035141B81E853BB88C5441A4703DDA3003514166666646B98C54410AD7A3F02E0351413D0AD7B3BA8C5441AE47E18A2E035141CDCCCCCCBB8C5441C3F528DC2E03514166666626BD8C5441295C8FD2340351418FC2F5D8C58C54418FC2F5082E035141713D0A27CB8C54417B14AE973E035141B81E851BE18C5441A4703D8A4F03514148E17A94F78C5441713D0A1752035141D7A3705DF58C54418FC2F53855035141C3F528DCF18C5441295C8FB25D03514133333343E68C5441F6285C8F4B03514166666636CE8C5441EC51B87E39035141295C8F42B68C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000052A3FB9C3103514192E88DD2B88C544154C33EDA300351412CA96646B98C5441A753A4F02E0351410230D8B3BA8C54415F8C30A82E0351419E3AE07BBB8C5441AE47E18A2E035141CDCCCCCCBB8C54414885C2BF2E03514183B8A4ADBC8C54417C5429DC2E03514191F06626BD8C5441295C8FD2340351418FC2F5D8C58C5441DD05858D30035141CB3C432FC98C5441DED7F5082E035141CA2C0A27CB8C54417B14AE973E035141B81E851BE18C544140BD3C8A4F03514169F37994F78C5441CED9081752035141E4C1715DF58C5441E18BEBF45203514125D42C65F48C54418FC2F53855035141C3F528DCF18C5441709FF5F25B0351419D83B6A7E88C54418F828EB25D0351414AFE3343E68C544153D55B8F4B035141471E6736CE8C5441BD7CD83840035141A100F02DBF8C5441D13CB97E390351419C939042B68C5441B42A1B1238035141BC4F7883B68C5441F6285C8F3603514185EB51C8B68C544114AE4781340351415C8FC265B78C5441AE47E19A32035141B81E853BB88C544152A3FB9C3103514192E88DD2B88C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134448 - 352324
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B87E39035141295C8F42B68C5441F6285C8F3603514185EB51C8B68C544114AE4781340351415C8FC265B78C5441AE47E19A32035141B81E853BB88C5441A4703DDA3003514166666646B98C54410AD7A3F02E0351413D0AD7B3BA8C5441AE47E18A2E035141CDCCCCCCBB8C5441C3F528DC2E03514166666626BD8C5441295C8FD2340351418FC2F5D8C58C54418FC2F5082E035141713D0A27CB8C54417B14AE973E035141B81E851BE18C5441A4703D8A4F03514148E17A94F78C5441713D0A1752035141D7A3705DF58C54418FC2F53855035141C3F528DCF18C5441295C8FB25D03514133333343E68C5441F6285C8F4B03514166666636CE8C5441EC51B87E39035141295C8F42B68C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000052A3FB9C3103514192E88DD2B88C544154C33EDA300351412CA96646B98C5441A753A4F02E0351410230D8B3BA8C54415F8C30A82E0351419E3AE07BBB8C5441AE47E18A2E035141CDCCCCCCBB8C54414885C2BF2E03514183B8A4ADBC8C54417C5429DC2E03514191F06626BD8C5441295C8FD2340351418FC2F5D8C58C5441DD05858D30035141CB3C432FC98C5441DED7F5082E035141CA2C0A27CB8C54417B14AE973E035141B81E851BE18C544140BD3C8A4F03514169F37994F78C5441CED9081752035141E4C1715DF58C5441E18BEBF45203514125D42C65F48C54418FC2F53855035141C3F528DCF18C5441709FF5F25B0351419D83B6A7E88C54418F828EB25D0351414AFE3343E68C544153D55B8F4B035141471E6736CE8C5441BD7CD83840035141A100F02DBF8C5441D13CB97E390351419C939042B68C5441B42A1B1238035141BC4F7883B68C5441F6285C8F3603514185EB51C8B68C544114AE4781340351415C8FC265B78C5441AE47E19A32035141B81E853BB88C544152A3FB9C3103514192E88DD2B88C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134750 - 163232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5289C045141AE47E15A728D5441F6285CCF99045141F6285C9F5F8D5441666666469B04514133333353578D5441D7A3704D9D045141EC51B82E508D5441F6285C3F9E045141AE47E1BA4D8D54419A9999B992045141B81E85FB518D5441E17A148E5D045141CDCCCC9C658D544185EB512867045141AE47E1FA758D54418FC2F5C86A045141333333537A8D5441666666F66B0451413D0AD7837C8D5441EC51B89E6C045141EC51B83E7E8D54413D0AD7437D045141C3F5283C788D544114AE477189045141295C8FF2748D5441C3F528EC90045141AE47E19A738D54418FC2F5289C045141AE47E15A728D5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000EBE2F5C86A045141626F33537A8D5441035866F66B0451419A11D6837C8D5441C063B99E6C0451410DEFB73E7E8D5441E036FC90710451410DA982757C8D5441BF76D7437D04514180D7273C788D544137B5B4AA82045141FA9FD5C6768D544114AE477189045141295C8FF2748D5441465931DB8E045141527CD1F9738D5441E71428EC90045141C7F7E09A738D5441BCB1F5289C04514194C1E05A728D5441ACA6EB649B045141A4EC31406C8D544141F35ACF99045141966B5D9F5F8D54413156BBF89A0451418357190B598D5441666666469B04514133333353578D5441A94097CC9B045141CC94787A558D5441F4916F4D9D045141076FB82E508D5441BB9184339E045141D3FA9CD94D8D54414C9C5B3F9E045141BDB4E2BA4D8D544147D79AB992045141FFD684FB518D544198AF5B306C0451411E23B335608D544181C7158E5D0451410052CC9C658D5441CF26168E5D04514136A6CF9C658D544185EB512867045141AE47E1FA758D5441EBE2F5C86A045141626F33537A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134750 - 342002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5289C045141AE47E15A728D5441F6285CCF99045141F6285C9F5F8D5441666666469B04514133333353578D5441D7A3704D9D045141EC51B82E508D5441F6285C3F9E045141AE47E1BA4D8D54419A9999B992045141B81E85FB518D5441E17A148E5D045141CDCCCC9C658D544185EB512867045141AE47E1FA758D54418FC2F5C86A045141333333537A8D5441666666F66B0451413D0AD7837C8D5441EC51B89E6C045141EC51B83E7E8D54413D0AD7437D045141C3F5283C788D544114AE477189045141295C8FF2748D5441C3F528EC90045141AE47E19A738D54418FC2F5289C045141AE47E15A728D5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000EBE2F5C86A045141626F33537A8D5441035866F66B0451419A11D6837C8D5441C063B99E6C0451410DEFB73E7E8D5441E036FC90710451410DA982757C8D5441BF76D7437D04514180D7273C788D544137B5B4AA82045141FA9FD5C6768D544114AE477189045141295C8FF2748D5441465931DB8E045141527CD1F9738D5441E71428EC90045141C7F7E09A738D5441BCB1F5289C04514194C1E05A728D5441ACA6EB649B045141A4EC31406C8D544141F35ACF99045141966B5D9F5F8D54413156BBF89A0451418357190B598D5441666666469B04514133333353578D5441A94097CC9B045141CC94787A558D5441F4916F4D9D045141076FB82E508D5441BB9184339E045141D3FA9CD94D8D54414C9C5B3F9E045141BDB4E2BA4D8D544147D79AB992045141FFD684FB518D544198AF5B306C0451411E23B335608D544181C7158E5D0451410052CC9C658D5441CF26168E5D04514136A6CF9C658D544185EB512867045141AE47E1FA758D5441EBE2F5C86A045141626F33537A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237297 - 1281776
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703D4A08185141D7A3703D96F85441713D0A7705185141CDCCCC5C92F85441666666C60318514114AE47D18FF8544152B81EF501185141000000B08CF8544133333373FF1751413D0AD7F387F85441666666F6F9175141713D0AE77CF85441B81E850BE7175141F6285C2F6DF8544100000060E61751419A99998971F85441713D0AB7E71751419A99993976F85441F6285C8FEA1751419A9999E97AF8544152B81E35E61751417B14AEE778F85441AE47E18AE61751413D0AD7037FF85441EC51B85EE517514152B81E6589F854418FC2F5C8E4175141A4703DDA92F85441F6285CDFE51751415C8FC23598F854411F85EB21E817514185EB51E89EF85441666666A6EB1751417B14AEC7A7F8544133333373ED175141F6285C0FACF85441CDCCCC5CEF175141CDCCCCACB0F85441713D0A070D185141713D0A47A8F854413D0AD7E30C18514166666666A7F854413D0AD7F30B1851419A9999B9A2F85441F6285CCF0A185141EC51B8FE9EF85441AE47E16A0A1851411F85EB419CF85441E17A149E09185141B81E859B99F85441A4703D4A08185141D7A3703D96F85441
+</a>
+
+<b>
+010600000001000000010300000001000000450000002D2C8DB7EB175141A1655EF0A7F85441666666A6EB1751417B14AEC7A7F85441B74F9327EA1751416C420C02A4F854413EEED936E91751419122D9A2A1F854411F85EB21E817514185EB51E89EF8544112802623E61751412982D1B598F8544171D8E31BE617514193735E9698F85441927D9D15E6175141E8D6568298F85441EE3BD27EE51751414D2A00EE95F85441E18509C9E4175141E30B93DA92F854414D3BEDCBE4175141A15047AA92F85441EC51B85EE517514152B81E6589F8544134EA78BAE51751412A3B29B485F85441233EC4E4E5175141A85F920084F85441C4996151E617514112F4AC2F7FF854413BE39D7AE61751419D0E43F97DF85441523E0C73E6175141F36A2B517DF854418B1D095FE6175141074E0BFE78F85441249CB569E6175141C48EEFFF78F854416BFE2B87E91751411167EC337AF85441F6285C8FEA1751419A9999E97AF854416556CE92E917514188307C4979F8544171CC0D6EE81751413083236777F85441EE7C52B9E717514119395C3D76F85441C9526CB7E717514172343B3A76F85441713D0AB7E71751419A99993976F85441C1E43A56E71751410420F2E674F8544118FA7119E7175141D2F24F1274F85441970209DEE617514184F07C4273F85441128B2260E6175141A332B98871F85441C9601461E61751417D2C968271F85441E2242F6BE6175141CCD8F14071F85441941736A0E2175141E54842E671F854413725B0E5E1175141E7F2F29B75F85441B652E15DE1175141CCC675807AF85441AA8D1E0CE217514140E8ECAC82F854410CFA3BC5E217514191CB24578AF85441941736A0E2175141190C640A8FF854419A522A56E2175141860CFDCC92F85441D84833C3E117514128DB198D94F854411847E159E0175141F9DAD0BD94F854418C087788E01751411E638E5A95F85441AD13F81AE21751412C71D3A49AF85441FBCFB91CE6175141BC0E4D0CA8F8544185EB51B8E61751413D0AD713AAF85441CDD980DAE6175141D469158EAAF854415F989398E717514107CADD10ADF8544133333373ED175141F6285C0FACF8544155C9D4A3EC1751419F0C7FEAADF854411F85EB21EB175141EC51B85EB1F854415C8FC295EF1751415C8FC2A5B3F854412068BD88F21751414C105EA4B4F854417228B05AF5175141FAE3E6DBB4F854415C8FC275F8175141CDCCCCFCB4F85441C37C1E36FB175141F5A8F225B5F854414029E2DFFC1751413CD569EEB4F85441A75FBD1DFF175141105ACF47B4F8544160C20F24011851418D7217E8B2F854418BD125D4041851419E1E42CFB0F85441ACDB89490718514157630138AFF854415A3EDC4F09185141D57B49D8ADF85441C174B78D0B18514116DE021CACF85441FD2FF8240D185141F098AAF0A9F85441445C6FED0C18514132FB6334A8F85441CDCCCC5CEF175141CDCCCCACB0F854410DE50261EE1751419430D3E9ADF85441360F768BED175141D37B160CACF8544107F75A15ED17514133DE3730ABF854412D2C8DB7EB175141A1655EF0A7F85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237297 - 3564498
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703D4A08185141D7A3703D96F85441713D0A7705185141CDCCCC5C92F85441666666C60318514114AE47D18FF8544152B81EF501185141000000B08CF8544133333373FF1751413D0AD7F387F85441666666F6F9175141713D0AE77CF85441B81E850BE7175141F6285C2F6DF8544100000060E61751419A99998971F85441713D0AB7E71751419A99993976F85441F6285C8FEA1751419A9999E97AF8544152B81E35E61751417B14AEE778F85441AE47E18AE61751413D0AD7037FF85441EC51B85EE517514152B81E6589F854418FC2F5C8E4175141A4703DDA92F85441F6285CDFE51751415C8FC23598F854411F85EB21E817514185EB51E89EF85441666666A6EB1751417B14AEC7A7F8544133333373ED175141F6285C0FACF85441CDCCCC5CEF175141CDCCCCACB0F85441713D0A070D185141713D0A47A8F854413D0AD7E30C18514166666666A7F854413D0AD7F30B1851419A9999B9A2F85441F6285CCF0A185141EC51B8FE9EF85441AE47E16A0A1851411F85EB419CF85441E17A149E09185141B81E859B99F85441A4703D4A08185141D7A3703D96F85441
+</a>
+
+<b>
+010600000001000000010300000001000000450000002D2C8DB7EB175141A1655EF0A7F85441666666A6EB1751417B14AEC7A7F85441B74F9327EA1751416C420C02A4F854413EEED936E91751419122D9A2A1F854411F85EB21E817514185EB51E89EF8544112802623E61751412982D1B598F8544171D8E31BE617514193735E9698F85441927D9D15E6175141E8D6568298F85441EE3BD27EE51751414D2A00EE95F85441E18509C9E4175141E30B93DA92F854414D3BEDCBE4175141A15047AA92F85441EC51B85EE517514152B81E6589F8544134EA78BAE51751412A3B29B485F85441233EC4E4E5175141A85F920084F85441C4996151E617514112F4AC2F7FF854413BE39D7AE61751419D0E43F97DF85441523E0C73E6175141F36A2B517DF854418B1D095FE6175141074E0BFE78F85441249CB569E6175141C48EEFFF78F854416BFE2B87E91751411167EC337AF85441F6285C8FEA1751419A9999E97AF854416556CE92E917514188307C4979F8544171CC0D6EE81751413083236777F85441EE7C52B9E717514119395C3D76F85441C9526CB7E717514172343B3A76F85441713D0AB7E71751419A99993976F85441C1E43A56E71751410420F2E674F8544118FA7119E7175141D2F24F1274F85441970209DEE617514184F07C4273F85441128B2260E6175141A332B98871F85441C9601461E61751417D2C968271F85441E2242F6BE6175141CCD8F14071F85441941736A0E2175141E54842E671F854413725B0E5E1175141E7F2F29B75F85441B652E15DE1175141CCC675807AF85441AA8D1E0CE217514140E8ECAC82F854410CFA3BC5E217514191CB24578AF85441941736A0E2175141190C640A8FF854419A522A56E2175141860CFDCC92F85441D84833C3E117514128DB198D94F854411847E159E0175141F9DAD0BD94F854418C087788E01751411E638E5A95F85441AD13F81AE21751412C71D3A49AF85441FBCFB91CE6175141BC0E4D0CA8F8544185EB51B8E61751413D0AD713AAF85441CDD980DAE6175141D469158EAAF854415F989398E717514107CADD10ADF8544133333373ED175141F6285C0FACF8544155C9D4A3EC1751419F0C7FEAADF854411F85EB21EB175141EC51B85EB1F854415C8FC295EF1751415C8FC2A5B3F854412068BD88F21751414C105EA4B4F854417228B05AF5175141FAE3E6DBB4F854415C8FC275F8175141CDCCCCFCB4F85441C37C1E36FB175141F5A8F225B5F854414029E2DFFC1751413CD569EEB4F85441A75FBD1DFF175141105ACF47B4F8544160C20F24011851418D7217E8B2F854418BD125D4041851419E1E42CFB0F85441ACDB89490718514157630138AFF854415A3EDC4F09185141D57B49D8ADF85441C174B78D0B18514116DE021CACF85441FD2FF8240D185141F098AAF0A9F85441445C6FED0C18514132FB6334A8F85441CDCCCC5CEF175141CDCCCCACB0F854410DE50261EE1751419430D3E9ADF85441360F768BED175141D37B160CACF8544107F75A15ED17514133DE3730ABF854412D2C8DB7EB175141A1655EF0A7F85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>293602 - 1625530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000052B81EC585AD504114AE47017436554148E17A6497AD5041F6285C0F79365541295C8FB295AD5041F6285CDF753655410000002093AD50417B14AE376E365541CDCCCCDC91AD5041AE47E1FA6C36554185EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C36554185EB519881AD5041AE47E1DA6B365541F6285C1F74AD5041CDCCCCEC673655413D0AD70374AD50419A9999E96E36554152B81EC585AD504114AE470174365541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C365541517784177CAD50412DBFEC3F6A365541674C741F74AD504160D7D3EC673655419531E20374AD5041249CC4E66E3655419FC0D17B76AD50413B5DDD9E6F36554184FF81447FAD50418DBCD5237236554148E17A6497AD5041F6285C0F793655413318CBB195AD5041C62114DD753655415FD7691F93AD5041993CFE356E365541345781DE91AD5041202D8DFC6C3655416261E2A28FAD5041746366546C365541849836268FAD504150FF05F16D365541C4A918048BAD5041C6F531B76C3655414FED42938BAD5041A83855266B36554185EB516883AD50411F85EBC168365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>293602 - 3362484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000052B81EC585AD504114AE47017436554148E17A6497AD5041F6285C0F79365541295C8FB295AD5041F6285CDF753655410000002093AD50417B14AE376E365541CDCCCCDC91AD5041AE47E1FA6C36554185EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C36554185EB519881AD5041AE47E1DA6B365541F6285C1F74AD5041CDCCCCEC673655413D0AD70374AD50419A9999E96E36554152B81EC585AD504114AE470174365541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C365541517784177CAD50412DBFEC3F6A365541674C741F74AD504160D7D3EC673655419531E20374AD5041249CC4E66E3655419FC0D17B76AD50413B5DDD9E6F36554184FF81447FAD50418DBCD5237236554148E17A6497AD5041F6285C0F793655413318CBB195AD5041C62114DD753655415FD7691F93AD5041993CFE356E365541345781DE91AD5041202D8DFC6C3655416261E2A28FAD5041746366546C365541849836268FAD504150FF05F16D365541C4A918048BAD5041C6F531B76C3655414FED42938BAD5041A83855266B36554185EB516883AD50411F85EBC168365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237495 - 3699640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666B695195141C3F528ECDDF65441CDCCCC3C93195141713D0A27D3F65441295C8F3291195141E17A142ECDF654418FC2F5A89019514185EB51F8C9F65441E17A14DE8F19514152B81E05C6F65441666666B68F19514100000000C5F65441F6285C9F8219514185EB5108C8F65441AE47E1CA82195141E17A141ECAF65441295C8F828519514133333363D6F654410000009089195141E17A14CEECF65441295C8FE28A19514100000040ECF65441000000A08F195141CDCCCC0CEDF654415C8FC2759719514185EB5198EEF6544152B81E65981951418FC2F5A8EEF65441D7A370BD97195141295C8FE2EAF65441295C8FF29619514185EB51B8E4F65441666666B695195141C3F528ECDDF65441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000652FDE23971951417F25E537E6F65441E4474CEE961951413291DCA0E4F654416DCA81129619514179121FE7DFF65441E5CD69B99519514182CEBEFCDDF654411A7ED1A195195141C33A9992DDF65441D513228B941951411A47E5D5D8F65441CDCCCC3C93195141713D0A27D3F65441295C8F3291195141E17A142ECDF654418FC2F5A89019514185EB51F8C9F65441E17A14DE8F19514152B81E05C6F65441666666B68F19514100000000C5F65441F6285C9F8219514185EB5108C8F65441AE47E1CA82195141E17A141ECAF65441295C8F828519514133333363D6F654410000009089195141E17A14CEECF65441295C8FE28A19514100000040ECF65441000000A08F195141CDCCCC0CEDF654415C8FC2759719514185EB5198EEF6544152B81E65981951418FC2F5A8EEF6544110B2DCEC9719514115DBDEF3EBF654419BEE7DBA97195141E959A0CBEAF6544157A22A89971951418B54EA4BE9F65441652FDE23971951417F25E537E6F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237495 - 5234461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666B695195141C3F528ECDDF65441CDCCCC3C93195141713D0A27D3F65441295C8F3291195141E17A142ECDF654418FC2F5A89019514185EB51F8C9F65441E17A14DE8F19514152B81E05C6F65441666666B68F19514100000000C5F65441F6285C9F8219514185EB5108C8F65441AE47E1CA82195141E17A141ECAF65441295C8F828519514133333363D6F654410000009089195141E17A14CEECF65441295C8FE28A19514100000040ECF65441000000A08F195141CDCCCC0CEDF654415C8FC2759719514185EB5198EEF6544152B81E65981951418FC2F5A8EEF65441D7A370BD97195141295C8FE2EAF65441295C8FF29619514185EB51B8E4F65441666666B695195141C3F528ECDDF65441
+</a>
+
+<b>
+01060000000100000001030000000100000024000000CDCCCC3C93195141713D0A27D3F65441D513228B941951411A47E5D5D8F654411A7ED1A195195141C33A9992DDF65441D958DDA895195141CABA42B1DDF6544144A991AB9519514121C176BEDDF65441E5CD69B99519514182CEBEFCDDF65441FF99F3C195195141838ABD2BDEF654416DCA81129619514179121FE7DFF65441E4474CEE961951413291DCA0E4F6544116FED9F39619514182F90ECBE4F65441DD33FAF796195141F76A76E2E4F65441652FDE23971951417F25E537E6F654412ED1928997195141C9C9144FE9F6544194F63CB597195141B898C1A2EAF654412E88D0EC971951416B160BF3EBF65441AB9C63619819514110166492EEF654418FC2F59898195141295C8FD2EFF6544133A2A9D79D1951419086D770F1F65441A36F8A85A419514184CA26EBF3F654419464E5CCA91951416EA1B912F6F65441EA3985B5AC1951419455AB5DF7F6544105C7D3E5AE1951415DD53F9EF7F65441C2056E1EB21951415DD53F9EF7F654419395D053B51951413C311742F7F65441D3410364BA1951416EA1B912F6F654410CD06D54BC195141B3EBD488F5F65441F7A6007CBE19514135134F22F4F6544130356B6CC0195141FB84E431F2F6544114AE47B1C1195141EC51B81EF0F6544158C9CFF4BD1951414CF29075DAF654419DD3C82FBB195141DBB8F566CAF6544133333303BB19514148E17A64C9F654415C8FC235B9195141295C8F42C6F654411F358170B0195141F55B6D3FC9F6544154E00B58A4195141732BEC5ACDF65441CDCCCC3C93195141713D0A27D3F65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>136963 - 3085938
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A9999F944695141C3F5287C7D765441333333734369514148E17A449A765441333333A34E695141713D0A879D7654415C8FC2354F695141EC51B86E9C7654413D0AD77355695141EC51B8BE897654413D0AD7135569514114AE47517E765441E17A14FE53695141C3F528EC72765441713D0AE751695141A4703DDA69765441CDCCCC4C50695141F6285C0F63765441333333B342695141A4703D9A67765441295C8FA2456951410AD7A300717654419A9999F944695141C3F5287C7D765441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AFD07BBF436951410A9CA140677654414379353843695141F0B11777677654410937E52E46695141312766056E76544122C2D1E646695141FFE1AAEF74765441C792B4FA476951419C21CB327D7654410170B9CC476951419C5734C4827654417DF1EED245695141DDCC8252897654416466021B4569514159BA8A7B927654419E4307ED446951419A2FD90999765441E082ECE945695141797875B89C765441A3409CE048695141C9E066429D76544182EE83C649695141B81CA6EC9A765441BC01F2294F695141EA327F5C9C7654413D0AD77355695141EC51B8BE897654413D0AD7135569514114AE47517E765441E17A14FE53695141C3F528EC72765441713D0AE751695141A4703DDA69765441CDCCCC4C50695141F6285C0F63765441AFD07BBF436951410A9CA14067765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>136963 - 3424219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A9999F944695141C3F5287C7D765441333333734369514148E17A449A765441333333A34E695141713D0A879D7654415C8FC2354F695141EC51B86E9C7654413D0AD77355695141EC51B8BE897654413D0AD7135569514114AE47517E765441E17A14FE53695141C3F528EC72765441713D0AE751695141A4703DDA69765441CDCCCC4C50695141F6285C0F63765441333333B342695141A4703D9A67765441295C8FA2456951410AD7A300717654419A9999F944695141C3F5287C7D765441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AFD07BBF436951410A9CA140677654414379353843695141F0B11777677654410937E52E46695141312766056E76544122C2D1E646695141FFE1AAEF74765441C792B4FA476951419C21CB327D7654410170B9CC476951419C5734C4827654417DF1EED245695141DDCC8252897654416466021B4569514159BA8A7B927654419E4307ED446951419A2FD90999765441E082ECE945695141797875B89C765441A3409CE048695141C9E066429D76544182EE83C649695141B81CA6EC9A765441BC01F2294F695141EA327F5C9C7654413D0AD77355695141EC51B8BE897654413D0AD7135569514114AE47517E765441E17A14FE53695141C3F528EC72765441713D0AE751695141A4703DDA69765441CDCCCC4C50695141F6285C0F63765441AFD07BBF436951410A9CA14067765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237656 - 3090239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666364F1751413D0AD7C35DF954417B14AE374F175141E17A14CE5CF954413D0AD7A33A175141EC51B8DE5CF95441666666563A175141EC51B88E5FF9544148E17AA42E1751413D0AD7735EF95441C3F5284C2E1751416666661660F95441F6285CFF2C175141B81E854B66F954418FC2F5182B175141CDCCCC5C6FF95441713D0AD72A1751417B14AE9770F9544152B81E05321751413D0AD7736EF954415C8FC2F539175141C3F5280C6CF95441A4703DDA39175141CDCCCC1C65F95441E17A144E3A175141F6285C5F60F954417B14AE773D175141D7A3700D61F95441EC51B82E431751418FC2F59862F95441CDCCCC0C4717514114AE47D163F954411F85EB214A175141B81E85EB64F95441333333C34A1751419A9999E965F9544185EB51784B175141F6285CEF66F954411F85EB814D1751410000004067F95441AE47E15A4F1751410AD7A3A067F95441666666364F1751413D0AD7C35DF95441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009C7D800E581751416614B47F5EF95441DAAAC0D75717514142FAD5AC5CF95441B645D85B4F1751419A84F7CD5CF954419793B14D4F1751413BA0011064F95441E27D96644F175141840B96A467F954414790318D4C175141683D2A1A67F9544185EB51784B175141F6285CEF66F95441EF2F4C544B1751415AA34CBB66F95441C458CDFB491751416EF8E2DD64F95441F23D5F5E42175141C88CA26062F9544122CF2D473A1751410F48A6A760F95441B385A2DA39175141FDC7453665F95441788D5BE9391751418A1010EC68F9544152CFAE063A1751414DFAFF786CF9544128395C1A3B175141B04260846FF954413A37A2943B17514100397F706EF954415018B0BB3C175141D6AE78EE6DF954419C78D1263E175141BF6E02A26DF95441C0E2EED1441751411979AB206DF9544101726B5B4E175141C5ABE52D6DF95441DBB529FC5817514101F625726DF95441BE6179A462175141593F885B6DF9544138081F896B175141B327C7C76CF954418C509A496C175141402433666DF95441382F81E66B17514141597FF369F95441333333E3631751418FC2F54869F95441713D0AE758175141CDCCCC9C68F954419C7D800E581751416614B47F5EF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237656 - 3194316
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666364F1751413D0AD7C35DF954417B14AE374F175141E17A14CE5CF954413D0AD7A33A175141EC51B8DE5CF95441666666563A175141EC51B88E5FF9544148E17AA42E1751413D0AD7735EF95441C3F5284C2E1751416666661660F95441F6285CFF2C175141B81E854B66F954418FC2F5182B175141CDCCCC5C6FF95441713D0AD72A1751417B14AE9770F9544152B81E05321751413D0AD7736EF954415C8FC2F539175141C3F5280C6CF95441A4703DDA39175141CDCCCC1C65F95441E17A144E3A175141F6285C5F60F954417B14AE773D175141D7A3700D61F95441EC51B82E431751418FC2F59862F95441CDCCCC0C4717514114AE47D163F954411F85EB214A175141B81E85EB64F95441333333C34A1751419A9999E965F9544185EB51784B175141F6285CEF66F954411F85EB814D1751410000004067F95441AE47E15A4F1751410AD7A3A067F95441666666364F1751413D0AD7C35DF95441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009C7D800E581751416614B47F5EF95441DAAAC0D75717514142FAD5AC5CF95441B645D85B4F1751419A84F7CD5CF954419793B14D4F1751413BA0011064F95441E27D96644F175141840B96A467F954414790318D4C175141683D2A1A67F9544185EB51784B175141F6285CEF66F95441EF2F4C544B1751415AA34CBB66F95441C458CDFB491751416EF8E2DD64F95441F23D5F5E42175141C88CA26062F9544122CF2D473A1751410F48A6A760F95441B385A2DA39175141FDC7453665F95441788D5BE9391751418A1010EC68F9544152CFAE063A1751414DFAFF786CF9544128395C1A3B175141B04260846FF954413A37A2943B17514100397F706EF954415018B0BB3C175141D6AE78EE6DF954419C78D1263E175141BF6E02A26DF95441C0E2EED1441751411979AB206DF9544101726B5B4E175141C5ABE52D6DF95441DBB529FC5817514101F625726DF95441BE6179A462175141593F885B6DF9544138081F896B175141B327C7C76CF954418C509A496C175141402433666DF95441382F81E66B17514141597FF369F95441333333E3631751418FC2F54869F95441713D0AE758175141CDCCCC9C68F954419C7D800E581751416614B47F5EF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>137823 - 144679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000025000000E17A14AECB695141CDCCCC9C8E7B5441A4703DCACB69514114AE47B18A7B5441CDCCCCBCC6695141D7A3708D8D7B5441D7A370EDC66951419A9999C98A7B544152B81ED5C66951419A999929857B5441D7A370EDC669514114AE4741817B5441F6285C4FC7695141713D0AF77C7B5441295C8F12C8695141713D0A27797B54411F85EBE1C969514166666656737B5441295C8FE2CB695141AE47E1DA6C7B5441F6285CEFCC695141D7A370CD657B544166666626C9695141666666A6647B544185EB5108C969514152B81E25687B5441F6285CAFC86951418FC2F5386C7B5441C3F528FCC7695141713D0AE76E7B54411F85EBD1C6695141C3F5280C727B54419A999989C56951411F85EBC1777B54418FC2F5D8BD695141D7A370FD777B544114AE47D1BA695141C3F528EC787B54419A999939B56951410AD7A3B0787B54415C8FC295AE695141EC51B8CE787B5441C3F528ECA96951419A999939787B544185EB51D8A5695141AE47E14A777B5441AE47E1FAA3695141CDCCCC2C777B544114AE47819E695141333333D3767B5441713D0A579D695141A4703DEA7F7B5441E17A143E9B695141CDCCCCEC907B5441295C8F1299695141C3F5280C9F7B5441CDCCCCCC98695141C3F5288CA07B54419A9999E9986951419A999949A27B5441EC51B81E9969514152B81E15A97B54413333335399695141EC51B8DEAD7B544133333333AF6951419A999939A47B54413D0AD7B3BB6951418FC2F5789E7B5441D7A370CDBF695141F6285C5F9B7B5441EC51B83EC56951413D0AD783967B5441E17A14AECB695141CDCCCC9C8E7B5441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000082B8A36AC76951419DA624D9937B544199C1026BCA695141A48A8B29907B54410998F8E8CA695141A60CDC8E8F7B54417D501E96CB69514142DC39BA8E7B5441EC942EBDCB69514134FE9E828C7B5441F9A411B1CB695141553B87BF8A7B54417A9CBDE8C9695141CAF5D5C18B7B544111641FCEC7695141B456B9F28C7B5441574EAEBDC6695141AAFDF08C8D7B54419DA3D572C5695141923A4A6A8E7B5441BE416CD9C369514108C1CA818F7B5441BF42D718C36951411E264405907B54416CD17EE9C26951411E728325907B5441D9049A0BC1695141692A6716917B5441FF3D4A62BE695141B00FD46D927B5441D54FCEFFBB695141B5538DA1937B54418FB433A1BA695141837C4752947B5441705384D2B6695141857B953D967B54410EE51FBBB5695141A4726ACA967B54417B740CA9B3695141517646BB977B5441EAA91138B0695141FDD1084A997B5441BBA72D83AC695141D74688F79A7B544123B1EC66A9695141434DB45B9C7B54418300DEFCA5695141C49B2CE09D7B5441B48DA4DCA369514192400DD29E7B5441392A2BE4A269514173177C409F7B5441D22731CCA2695141C233426F9F7B54415062DA9EA469514150648F17A57B544162017EA5A56951411E4FBC28A87B5441B79AF1B4A56951411DCFED56A87B5441C433CA8BA7695141472C8899A77B544155F91025A8695141EA3CF355A77B5441C7DEB1C7AC6951412BAABF4AA57B5441E8A672F2AC6951413FF4E537A57B54413A4FDF18B06951417A0AEDCFA37B5441EC023F2AB169514137FB2452A37B54417E7C0E3AB3695141D16E4B5FA27B54415D1A2712B4695141CCF9DDFBA17B5441DC2A304AB7695141AAC9B880A07B544184E37175B8695141330B08F79F7B5441F002FD3CBA695141AAA76E259F7B5441EC43EFE4BA695141DDA728D89E7B544170D66B9EBB69514109A0D0829E7B54416F4ECB49BD6951412BE004469D7B544196786E26BF6951419D7BA2DD9B7B5441FF506B14C06951410F9A02209B7B5441F2278EE1C169514176BC7084997B5441FDAF1080C36951412B2D7C12987B5441C577E982C4695141DC05762B977B54410F2400D7C4695141FF3169E0967B5441419793E5C56951413290EEB6957B544182B8A36AC76951419DA624D9937B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>137823 - 324011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000025000000E17A14AECB695141CDCCCC9C8E7B5441A4703DCACB69514114AE47B18A7B5441CDCCCCBCC6695141D7A3708D8D7B5441D7A370EDC66951419A9999C98A7B544152B81ED5C66951419A999929857B5441D7A370EDC669514114AE4741817B5441F6285C4FC7695141713D0AF77C7B5441295C8F12C8695141713D0A27797B54411F85EBE1C969514166666656737B5441295C8FE2CB695141AE47E1DA6C7B5441F6285CEFCC695141D7A370CD657B544166666626C9695141666666A6647B544185EB5108C969514152B81E25687B5441F6285CAFC86951418FC2F5386C7B5441C3F528FCC7695141713D0AE76E7B54411F85EBD1C6695141C3F5280C727B54419A999989C56951411F85EBC1777B54418FC2F5D8BD695141D7A370FD777B544114AE47D1BA695141C3F528EC787B54419A999939B56951410AD7A3B0787B54415C8FC295AE695141EC51B8CE787B5441C3F528ECA96951419A999939787B544185EB51D8A5695141AE47E14A777B5441AE47E1FAA3695141CDCCCC2C777B544114AE47819E695141333333D3767B5441713D0A579D695141A4703DEA7F7B5441E17A143E9B695141CDCCCCEC907B5441295C8F1299695141C3F5280C9F7B5441CDCCCCCC98695141C3F5288CA07B54419A9999E9986951419A999949A27B5441EC51B81E9969514152B81E15A97B54413333335399695141EC51B8DEAD7B544133333333AF6951419A999939A47B54413D0AD7B3BB6951418FC2F5789E7B5441D7A370CDBF695141F6285C5F9B7B5441EC51B83EC56951413D0AD783967B5441E17A14AECB695141CDCCCC9C8E7B5441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000082B8A36AC76951419DA624D9937B544199C1026BCA695141A48A8B29907B54410998F8E8CA695141A60CDC8E8F7B54417D501E96CB69514142DC39BA8E7B5441EC942EBDCB69514134FE9E828C7B5441F9A411B1CB695141553B87BF8A7B54417A9CBDE8C9695141CAF5D5C18B7B544111641FCEC7695141B456B9F28C7B5441574EAEBDC6695141AAFDF08C8D7B54419DA3D572C5695141923A4A6A8E7B5441BE416CD9C369514108C1CA818F7B5441BF42D718C36951411E264405907B54416CD17EE9C26951411E728325907B5441D9049A0BC1695141692A6716917B5441FF3D4A62BE695141B00FD46D927B5441D54FCEFFBB695141B5538DA1937B54418FB433A1BA695141837C4752947B5441705384D2B6695141857B953D967B54410EE51FBBB5695141A4726ACA967B54417B740CA9B3695141517646BB977B5441EAA91138B0695141FDD1084A997B5441BBA72D83AC695141D74688F79A7B544123B1EC66A9695141434DB45B9C7B54418300DEFCA5695141C49B2CE09D7B5441B48DA4DCA369514192400DD29E7B5441392A2BE4A269514173177C409F7B5441D22731CCA2695141C233426F9F7B54415062DA9EA469514150648F17A57B544162017EA5A56951411E4FBC28A87B5441B79AF1B4A56951411DCFED56A87B5441C433CA8BA7695141472C8899A77B544155F91025A8695141EA3CF355A77B5441C7DEB1C7AC6951412BAABF4AA57B5441E8A672F2AC6951413FF4E537A57B54413A4FDF18B06951417A0AEDCFA37B5441EC023F2AB169514137FB2452A37B54417E7C0E3AB3695141D16E4B5FA27B54415D1A2712B4695141CCF9DDFBA17B5441DC2A304AB7695141AAC9B880A07B544184E37175B8695141330B08F79F7B5441F002FD3CBA695141AAA76E259F7B5441EC43EFE4BA695141DDA728D89E7B544170D66B9EBB69514109A0D0829E7B54416F4ECB49BD6951412BE004469D7B544196786E26BF6951419D7BA2DD9B7B5441FF506B14C06951410F9A02209B7B5441F2278EE1C169514176BC7084997B5441FDAF1080C36951412B2D7C12987B5441C577E982C4695141DC05762B977B54410F2400D7C4695141FF3169E0967B5441419793E5C56951413290EEB6957B544182B8A36AC76951419DA624D9937B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>139170 - 206297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003F0000000AD7A3E0086D51410AD7A380FBB25441713D0AC7066D5141EC51B8CEF8B25441666666E6046D5141AE47E1CAF6B25441C3F528CC026D51415C8FC255F6B25441C3F528FC006D51417B14AEA7F2B254417B14AE97FF6C514100000060F2B2544114AE47A1FC6C51419A9999D9F1B25441713D0A87F96C51415C8FC2F5F1B25441AE47E12AF46C5141AE47E1EAF2B25441B81E85EBE96C51410AD7A380F5B25441AE47E11AE96C5141EC51B8FEF6B25441EC51B80EEF6C5141666666C608B35441295C8F02F56C5141E17A148E1AB35441D7A370DDFA6C5141A4703D0A2CB35441EC51B8DEFA6C51413D0AD7932EB35441CDCCCC3CFA6C514114AE472131B354415C8FC2D5F86C51410AD7A3F033B35441AE47E1BAF66C5141CDCCCC6C36B35441E17A147EF46C5141CDCCCCEC37B35441295C8F92F56C5141CDCCCC2C3BB35441C3F5286CFC6C5141EC51B80E40B35441EC51B85E016D51418FC2F55843B3544185EB5148046D51410AD7A3E044B35441A4703DBA066D514148E17A7445B354418FC2F5E8086D5141CDCCCC7C44B35441000000D0196D5141B81E850B38B35441B81E857B276D5141666666062EB35441CDCCCCAC2A6D51418FC2F5E831B3544185EB51E82E6D514114AE474134B35441CDCCCCEC306D5141000000C034B35441E17A143E336D5141EC51B85E33B35441CDCCCC9C2E6D5141B81E85BB2FB3544152B81E452D6D51415C8FC2D52EB35441C3F528CC2C6D514114AE47312EB35441AE47E1BA2B6D51410AD7A3C02DB35441B81E85EB296D5141000000302CB3544100000050246D514152B81E5527B354419A999999236D514185EB51F826B354417B14AEF7226D51410AD7A34026B354415C8FC265226D5141EC51B8CE24B35441C3F5281C216D514185EB519823B3544148E17A841F6D51417B14AE7722B3544148E17A241E6D5141B81E85FB20B35441B81E854B1C6D5141A4703D2A1FB354410AD7A3F0196D51411F85EB511CB35441000000E0196D5141CDCCCC7C1AB35441C3F5283C196D51415C8FC25519B35441A4703D6A166D5141B81E850B17B35441AE47E15A156D51419A99991915B3544148E17A24146D5141E17A143E14B354419A9999E9116D5141A4703D9A10B35441EC51B89E116D5141EC51B82E0FB3544152B81ED5106D5141333333630CB354417B14AEF70E6D5141295C8F4209B354413D0AD7830F6D514185EB518808B35441F6285C3F116D5141713D0AE707B354410AD7A340116D514185EB517806B35441D7A3707D116D5141295C8F1205B35441666666C60F6D51413D0AD7D301B35441000000700D6D5141C3F5281CFFB25441D7A370FD0B6D5141CDCCCCCCFEB25441AE47E11A0A6D514185EB51B8FDB254410AD7A3E0086D51410AD7A380FBB25441
+</a>
+
+<b>
+0106000000010000000103000000010000005500000078554C76F66C51418CDBF181F2B25441AE47E12AF46C5141AE47E1EAF2B25441A79685EBE96C5141C9B8A380F5B254418085D3B9E96C51414CC1A4DBF5B25441AE47E11AE96C5141EC51B8FEF6B25441EC51B80EEF6C5141666666C608B35441128D9ABFF36C5141D37B6AC916B3544180898F02F56C5141EB4D148E1AB3544154FA70DDFA6C514103A33D0A2CB35441B9E70BDEFA6C5141CE810A3E2DB35441EC51B8DEFA6C51413D0AD7932EB35441B48217CAFA6C5141F52116E72EB35441D059CD3CFA6C5141F4B3472131B3544191DBEECBF96C5141C6926A0332B354415C8FC2D5F86C51410AD7A3F033B35441AE47E1BAF66C5141CDCCCC6C36B35441E17A147EF46C5141CDCCCCEC37B35441C22840D1F46C51419AFB14E738B35441A9F38F92F56C5141A692CB2C3BB35441D5ED286CFC6C5141A4B5B70E40B354412F47B85E016D51419C5EF55843B3544125D77B6D026D514157B832E743B3544185EB5148046D51410AD7A3E044B35441A4703DBA066D514148E17A7445B354418FC2F5E8086D5141CDCCCC7C44B3544129148F2E0B6D51418C5AAAD042B35441B1C7FECF196D514186E4830B38B3544122544AD0196D514140A34E0B38B35441B81E857B276D5141666666062EB35441E2C2C27D276D5141F37820092EB3544125747A84296D51412A0D297C2CB35441939784EB296D5141FD8AFF2F2CB35441C4255194286D5141AE6BDA062BB354414EDFFE4F246D5141FA411F5527B354411C499999236D5141665152F826B3544114C68366236D51416C995EBE26B354417B14AEF7226D51410AD7A34026B354415C8FC265226D5141EC51B8CE24B35441D66B0F84216D5141D1F42AFA23B354416C86291C216D5141AAB2529823B35441700C7B841F6D51413E62AE7722B354416D9BD0691F6D51418FB4E15A22B3544148E17A241E6D5141B81E85FB20B35441B81E854B1C6D5141A4703D2A1FB354410AD7A3F0196D51411F85EB511CB35441000000E0196D5141CDCCCC7C1AB3544161556047196D51418C46F56919B35441AE74293C196D51415393C35519B35441336FDE4D176D514103195EC417B354417CED3C6A166D5141F56B840B17B3544145EB1F43166D5141F140BFC316B35441AE47E15A156D51419A99991915B3544148E17A24146D5141E17A143E14B354410360BC2C126D51417C30D30711B3544149FE98E9116D51415AD93C9A10B3544142E561CB116D5141B0E88A0710B35441EC51B89E116D5141EC51B82E0FB3544152B81ED5106D5141333333630CB354411309FDF10F6D51411E2950E60AB35441AD02ADF70E6D5141D881904209B35441B9A5D5830F6D51418A24538808B354413D0AD7830F6D514185EB518808B354417C9F231C106D5141E340F05008B354413B5B5B3F116D51419F2909E707B35441F1CCD63F116D514158B8C95D07B354410AD7A340116D514185EB517806B354410AF7F261116D5141768552B405B35441A6CF6F7D116D5141DFB18E1205B35441675D65C60F6D51411B5ED8D301B354410FC7AE310E6D5141D84054FDFFB25441000000700D6D5141C3F5281CFFB25441C5E9E7440D6D5141684DEE12FFB25441F4DA70FD0B6D5141ECE8CDCCFEB2544149EEB1150B6D51417AE60548FEB25441AE47E11A0A6D514185EB51B8FDB254410AD7A3E0086D51410AD7A380FBB25441713D0AC7066D5141EC51B8CEF8B25441666666E6046D5141AE47E1CAF6B25441C3F528CC026D51415C8FC255F6B25441C3F528FC006D51417B14AEA7F2B254417B14AE97FF6C514100000060F2B2544114AE47A1FC6C51419A9999D9F1B25441C58442DAFA6C5141219DBBE9F1B25441BA3F0B87F96C51419D3AC3F5F1B2544178554C76F66C51418CDBF181F2B25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237981 - 404219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F000000CDCCCCAC6CC05041C3F5284CAFCD5441666666366EC05041E17A140EB4CD5441CDCCCC3C78C05041D7A3708DDBCD5441A4703D0A7AC050417B14AEB7E0CD5441A4703DCA7CC0504152B81E05E6CD5441A4703D4A80C05041AE47E1EAEACD54410000006092C050417B14AE4700CE54415C8FC28595C0504114AE47A103CE5441666666E699C050410AD7A3F004CE54415C8FC2659EC05041A4703D3A04CE5441CDCCCC3CA6C05041333333C301CE544166666666A4C0504133333333FDCD544152B81E85A1C05041CDCCCC0CF9CD54418FC2F5D89DC05041666666A6F5CD5441EC51B8DE9AC050417B14AE77F1CD544148E17AA492C05041295C8FF2E9CD5441CDCCCC9C8FC05041A4703D7AE5CD5441B81E858B8DC050411F85EB01E4CD5441F6285C6F8AC050413D0AD793E0CD54415C8FC26588C05041E17A147EDCCD5441EC51B86E86C050417B14AEA7DACD5441713D0AA782C0504148E17AF4D5CD544152B81EB57DC05041AE47E1BACBCD5441666666067DC05041F6285C9FC6CD54419A9999397CC0504152B81E85C4CD54411F85EB817BC05041295C8F52C0CD5441B81E857B7AC05041B81E85CBBECD5441333333C377C05041666666D6B8CD5441E17A14CE75C0504152B81E45B7CD54410AD7A3906FC05041CDCCCC5CAECD5441CDCCCCAC6CC05041C3F5284CAFCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000320000006DAD3BC16DC05041B08A87A3B2CD5441666666366EC05041E17A140EB4CD5441280B262A76C0504174F8B962D3CD5441CDCCCC3C78C05041AAA3708DDBCD5441DCE53BBD78C050413B8876FDDCCD5441A4703D0A7AC050417B14AEB7E0CD5441A4703DCA7CC0504152B81E05E6CD5441A4703D4A80C05041AE47E1EAEACD5441BB1DEA2E90C05041690EE9B0FDCD54414600006092C05041C014AE4700CE54413F3A6BFB92C05041E51619ED00CE54415C8FC28595C0504114AE47A103CE54414B6666E699C0504102D7A3F004CE5441080367239BC05041B8886BBE04CE54415C8FC2659EC05041A4703D3A04CE5441FE2C5366A3C0504138089DA702CE5441C7CCCC3CA6C05041233333C301CE5441F3A06727A5C0504191FA6D12FFCD544139666666A4C0504129333333FDCD544139B81E85A1C05041CFCCCC0CF9CD54411E708A319FC050416CAF69E5F6CD54418FC2F5D89DC05041666666A6F5CD5441CE106DC49CC05041FAC3F321F4CD5441BD51B8DE9AC050418514AE77F1CD544148E17AA492C05041295C8FF2E9CD54419ECCCC9C8FC0504183703D7AE5CD54410D68097B8FC05041B1F43B62E5CD5441AA1E858B8DC050413985EB01E4CD54416DF8F8098BC0504157795C3EE1CD5441CF285C6F8AC05041080AD793E0CD5441228FC26588C050410C7B147EDCCD54413C3EF67E86C05041D636DEB6DACD5441BA51B86E86C050414914AEA7DACD544197613EEB84C0504179B3E5C5D8CD5441713D0AA782C0504148E17AF4D5CD54414476A42C7EC05041309D05B2CCCD544152B81EB57DC05041AE47E1BACBCD5441666666067DC05041F6285C9FC6CD5441E6C1D5F77CC050413BD21479C6CD5441689999397CC0504191B81E85C4CD5441FC84EB817BC050410E5C8F52C0CD54418D8418F77AC050412294AD83BFCD5441B81E857B7AC05041B81E85CBBECD5441333333C377C05041666666D6B8CD544117D377AB76C05041CF6C66F6B7CD5441C87A14CE75C0504180B81E45B7CD5441BD645A2E71C05041F96A5EABB0CD5441A8D8A3906FC050411CCFCC5CAECD544157ED532A71C05041EFCD53C3B0CD54416DAD3BC16DC05041B08A87A3B2CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238023 - 396550
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB5148F5BD50413333332397D05441EC51B85E12BE5041C3F5289C9DD05441CDCCCC8C1DBE504114AE478195D054417B14AE3722BE504114AE472193D054416666662626BE5041295C8F2292D05441000000302BBE5041F6285C3F92D054415C8FC2952EBE504152B81EB591D05441295C8F9231BE504185EB511890D05441EC51B82E35BE5041CDCCCCEC8CD0544148E17A7438BE50410000006089D05441333333533ABE50418FC2F56886D05441295C8F123CBE50410AD7A3D07FD05441A4703DBA36BE50411F85EB417DD05441EC51B8FE2CBE50413D0AD79378D0544185EB51E826BE50411F85EBA175D05441F6285CCF22BE5041EC51B86E78D0544148E17A141FBE5041713D0AE778D05441333333E31CBE5041D7A370BD78D05441B81E856B04BE5041B81E854B73D05441CDCCCC6C01BE50413333334382D054419A999949F5BD5041F6285CBF7FD0544166666626EEBD50419A99998988D054417B14AE97E7BD50417B14AE1794D0544185EB5148F5BD50413333332397D05441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F9231BE504185EB511890D05441A774BFAB34BE5041330BCF5F8DD05441B032C20B35BE50414E0C800B8DD054417915036E01BE5041C38E243D82D05441CDCCCC6C01BE50413333334382D054419A999949F5BD5041F6285CBF7FD054419F0FEA29F5BD504149B661E67FD054415D1E964CF4BD50414EC5F3F680D0544108A4084CF3BD50413323E73282D0544166666626EEBD50419A99998988D0544114DBE30FE9BD5041CC31C28091D054417B14AE97E7BD50417B14AE1794D0544185EB5148F5BD50413333332397D05441D251B85E12BE5041BDF5289C9DD054411CFA93F616BE5041CD2BB7479AD05441CDCCCC8C1DBE504114AE478195D054417B14AE3722BE504114AE472193D05441B690BB7D24BE50410E5B028E92D054417666662626BE5041ED5B8F2292D05441D5FFFF2F2BBE50419C285C3F92D054413C8FC2952EBE5041D2B71EB591D054412975360130BE5041A25FF2F090D05441295C8F9231BE504185EB511890D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>142568 - 2942182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E853B01F9504148E17AF46CCE5441C3F528EC04F95041C3F5280C6ACE54410000008008F95041295C8F2266CE5441713D0AF70BF95041AE47E1EA66CE54413D0AD7730EF9504152B81EB563CE54418FC2F548C8F850413333335349CE5441EC51B89EC3F85041E17A140E57CE5441666666A6D7F850410AD7A3C05DCE5441A4703D0AE1F850417B14AE3761CE5441EC51B8DEE9F850418FC2F55864CE544185EB51B8F5F8504152B81EB568CE5441B81E853B01F9504148E17AF46CCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000EC51B89EC3F85041E17A140E57CE544133333363B9F85041AE47E12A75CE54417B14AED7BDF85041713D0A0777CE54410AD7A3C0BCF850417B14AE9779CE54418FC2F538ECF85041D7A3705D8BCE5441000000C0EDF85041D7A370ED8ACE5441CDCCCC5CF7F8504148E17A147ECE544114AE47A10AF95041AE47E14A6BCE5441666666060DF950416666667668CE544114AE47C10FF95041295C8F3264CE54413D0AD7730EF9504152B81EB563CE5441514E9B9A0DF950410C0273CD64CE5441713D0AF70BF95041AE47E1EA66CE544102A181B409F9504136DB3A6866CE5441F6B1417508F9504182E0760466CE5441C3F528EC04F95041C3F5280C6ACE5441E9B742F902F95041DB5143956BCE54411E785EB201F9504116178E996CCE5441B81E853B01F9504148E17AF46CCE544163B5C7D9FDF850415D6183A46BCE5441A4B13F18FAF85041D26B50526ACE5441909C7723EAF85041A5EC457264CE5441BCDE4FAFE4F850414FDF6D8262CE544189FD6E6FDEF850416E3D9F4160CE5441915D6CF9D7F85041C9C146DF5DCE5441CB446D6AD0F8504129AD63555BCE5441B83CDA49C7F8504191D8194858CE5441D33CA97FC4F85041D3584B5957CE5441EC51B89EC3F85041E17A140E57CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>142568 - 3712828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E853B01F9504148E17AF46CCE5441C3F528EC04F95041C3F5280C6ACE54410000008008F95041295C8F2266CE5441713D0AF70BF95041AE47E1EA66CE54413D0AD7730EF9504152B81EB563CE54418FC2F548C8F850413333335349CE5441EC51B89EC3F85041E17A140E57CE5441666666A6D7F850410AD7A3C05DCE5441A4703D0AE1F850417B14AE3761CE5441EC51B8DEE9F850418FC2F55864CE544185EB51B8F5F8504152B81EB568CE5441B81E853B01F9504148E17AF46CCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000EC51B89EC3F85041E17A140E57CE544133333363B9F85041AE47E12A75CE54417B14AED7BDF85041713D0A0777CE54410AD7A3C0BCF850417B14AE9779CE54418FC2F538ECF85041D7A3705D8BCE5441000000C0EDF85041D7A370ED8ACE5441CDCCCC5CF7F8504148E17A147ECE544114AE47A10AF95041AE47E14A6BCE5441666666060DF950416666667668CE544114AE47C10FF95041295C8F3264CE54413D0AD7730EF9504152B81EB563CE5441514E9B9A0DF950410C0273CD64CE5441713D0AF70BF95041AE47E1EA66CE544102A181B409F9504136DB3A6866CE5441F6B1417508F9504182E0760466CE5441C3F528EC04F95041C3F5280C6ACE5441E9B742F902F95041DB5143956BCE54411E785EB201F9504116178E996CCE5441B81E853B01F9504148E17AF46CCE544163B5C7D9FDF850415D6183A46BCE5441A4B13F18FAF85041D26B50526ACE5441909C7723EAF85041A5EC457264CE5441BCDE4FAFE4F850414FDF6D8262CE544189FD6E6FDEF850416E3D9F4160CE5441915D6CF9D7F85041C9C146DF5DCE5441CB446D6AD0F8504129AD63555BCE5441B83CDA49C7F8504191D8194858CE5441D33CA97FC4F85041D3584B5957CE5441EC51B89EC3F85041E17A140E57CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238308 - 58750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703DAA54BD5041333333A31CCD54417B14AEE745BD50411F85EB01FECC54415C8FC2D50DBD5041F6285CCF03CD5441295C8F321FBD50418FC2F5D827CD5441A4703D9A27BD5041295C8F8226CD544148E17A542DBD5041E17A147E25CD54417B14AEF732BD5041AE47E14A24CD5441A4703D1A41BD50417B14AEC720CD5441295C8FC24DBD5041AE47E1EA1DCD5441A4703DAA54BD5041333333A31CCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003333335314BD50413D0AD773FACC54413324A14D11BD50412CABE178FACC54417499D27009BD504154E227A0FACC54411611DFD50DBD5041EB6A75CA03CD5441E5F6316A41BD50412B5CE078FECC544165624CC643BD5041AE185C3AFECC5441BAA86B1444BD5041ED6F4632FECC544104CE1ADE45BD5041C631E902FECC54418EE5287E42BD50413463A0ECF6CC5441A1FD133342BD50414305C850F6CC5441E3F56F0C42BD5041BE5F9300F6CC5441364163053FBD50418A9FCB2BF6CC54411F85EBC13DBD5041E17A143EF6CC54419BA16B1137BD50418557ED56F7CC54418BCFA8B432BD5041F7595326F8CC5441D494C0292BBD50415221CB28F9CC5441B81E85AB27BD50418FC2F5A8F9CC54416823E83727BD5041953AF8AFF9CC54419A574F0F27BD5041F96367B5F9CC5441984D3B8025BD5041350AE1CCF9CC54412F1DD2B524BD50414C3FE6D6F9CC5441A4703D3A1EBD5041B81E853BFACC54413333335314BD50413D0AD773FACC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238308 - 120116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703DAA54BD5041333333A31CCD54417B14AEE745BD50411F85EB01FECC54415C8FC2D50DBD5041F6285CCF03CD5441295C8F321FBD50418FC2F5D827CD5441A4703D9A27BD5041295C8F8226CD544148E17A542DBD5041E17A147E25CD54417B14AEF732BD5041AE47E14A24CD5441A4703D1A41BD50417B14AEC720CD5441295C8FC24DBD5041AE47E1EA1DCD5441A4703DAA54BD5041333333A31CCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003333335314BD50413D0AD773FACC54413224A14D11BD50412BABE178FACC54417599D27009BD504152E227A0FACC54411211DFD50DBD5041E66A75CA03CD5441E8F6316A41BD50412B5CE078FECC544164624CC643BD5041B0185C3AFECC5441BBA86B1444BD5041F16F4632FECC544102CE1ADE45BD5041C831E902FECC544192E5287E42BD50413763A0ECF6CC5441A3FD133342BD50414805C850F6CC5441E7F56F0C42BD5041B95F9300F6CC5441384163053FBD5041869FCB2BF6CC54411F85EBC13DBD5041E17A143EF6CC544199A16B1137BD50418757ED56F7CC54418DCFA8B432BD5041FA595326F8CC5441D094C0292BBD50415121CB28F9CC5441B81E85AB27BD50418FC2F5A8F9CC54416A23E83727BD50419A3AF8AFF9CC544197574F0F27BD5041FD6367B5F9CC5441944D3B8025BD5041310AE1CCF9CC54412E1DD2B524BD50414F3FE6D6F9CC5441A4703D3A1EBD5041B81E853BFACC54413333335314BD50413D0AD773FACC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238308 - 320294
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703DAA54BD5041333333A31CCD54417B14AEE745BD50411F85EB01FECC54415C8FC2D50DBD5041F6285CCF03CD5441295C8F321FBD50418FC2F5D827CD5441A4703D9A27BD5041295C8F8226CD544148E17A542DBD5041E17A147E25CD54417B14AEF732BD5041AE47E14A24CD5441A4703D1A41BD50417B14AEC720CD5441295C8FC24DBD5041AE47E1EA1DCD5441A4703DAA54BD5041333333A31CCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003333335314BD50413D0AD773FACC54413224A14D11BD50412BABE178FACC54417599D27009BD504152E227A0FACC54411211DFD50DBD5041E66A75CA03CD5441E8F6316A41BD50412B5CE078FECC544164624CC643BD5041B0185C3AFECC5441BBA86B1444BD5041F16F4632FECC544102CE1ADE45BD5041C831E902FECC544192E5287E42BD50413763A0ECF6CC5441A3FD133342BD50414805C850F6CC5441E7F56F0C42BD5041B95F9300F6CC5441384163053FBD5041869FCB2BF6CC54411F85EBC13DBD5041E17A143EF6CC544199A16B1137BD50418757ED56F7CC54418DCFA8B432BD5041FA595326F8CC5441D094C0292BBD50415121CB28F9CC5441B81E85AB27BD50418FC2F5A8F9CC54416A23E83727BD50419A3AF8AFF9CC544197574F0F27BD5041FD6367B5F9CC5441944D3B8025BD5041310AE1CCF9CC54412E1DD2B524BD50414F3FE6D6F9CC5441A4703D3A1EBD5041B81E853BFACC54413333335314BD50413D0AD773FACC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145177 - 235310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000100000009000000CDCCCCFC9DF850417B14AEE7EAC2544185EB5158A1F85041D7A370ADE8C25441D7A3700D9EF85041295C8F02E6C254415C8FC21593F850417B14AE57E1C25441333333538CF850411F85EBD1DCC25441CDCCCC8C8BF85041AE47E17ADDC25441E17A14DE92F85041EC51B8AEEEC254418FC2F5E89AF850418FC2F5A8EDC25441CDCCCCFC9DF850417B14AEE7EAC2544101030000000100000009000000CDCCCC8C96F85041D7A3707DDCC25441EC51B8EE93F850418FC2F528E0C25441E17A146E9EF8504148E17AB4E4C25441EC51B85EA9F85041B81E851BE6C25441CDCCCCBCBCF850410AD7A380E3C2544185EB5138BDF85041C3F528ECDBC25441CDCCCC6CB8F85041F6285C1FDBC25441CDCCCCBCA8F850410AD7A3C0DBC25441CDCCCC8C96F85041D7A3707DDCC254410103000000030000001A0000003D0AD703B0F85041EC51B85E36C35441D7A3704DB1F85041E17A14FE39C35441666666C6B0F850416666666642C35441666666E6B3F85041000000F040C35441EC51B87EC1F8504148E17AC42BC35441666666D6CCF85041E17A140E1DC354410AD7A3A0D0F85041713D0AA716C35441AE47E15AD1F85041F6285C0F13C354411F85EBB1CCF85041E17A143E06C35441AE47E13ABAF85041E17A144EEFC254413D0AD763B7F85041713D0AE7ECC25441333333A3B0F8504148E17A04EAC2544152B81E75A9F85041EC51B87EE8C2544185EB51B8A5F850417B14AEF7E8C254411F85EB51A2F8504148E17A84EAC25441E17A142E9FF8504148E17A84ECC25441AE47E16A9CF8504166666606EFC254416666665696F85041713D0AF7F6C2544185EB517893F85041A4703D5AF9C25441D7A3706D8CF85041000000D0FBC254411F85EB8193F85041B81E85AB29C354413D0AD733A5F8504148E17AE42CC354413D0AD723A8F85041AE47E14A2BC35441E17A14DEA9F85041A4703D5A2AC35441E17A144EACF850413D0AD74331C354413D0AD703B0F85041EC51B85E36C354410D000000B81E851BB4F850413D0AD7230BC354413D0AD753ADF85041E17A14DE0BC35441E17A14EEACF8504185EB518808C35441D7A3702DA8F8504148E17A3409C35441A4703D4AA8F85041C3F5286C0CC3544185EB5178A5F85041B81E85BB0CC35441295C8FA2A5F85041295C8F9209C35441295C8F32A4F8504114AE47C104C35441D7A3706DA4F8504114AE4781FEC2544185EB5118B5F850418FC2F548FBC254415C8FC265B5F850419A99999900C35441E17A148EB4F850416666667607C35441B81E851BB4F850413D0AD7230BC3544107000000000000F0A6F8504166666696F8C254410AD7A3C0ABF8504114AE4761F7C25441F6285C8FACF85041B81E856BFAC25441713D0AB7A7F85041AE47E1AAFBC25441000000C0A3F85041000000B0FCC25441666666F6A2F8504152B81E95F9C25441000000F0A6F8504166666696F8C25441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009301946194F85041E84D40D429C354419FEE74D695F85041D54E28182AC35441908E8C0796F85041100B19212AC35441F245A80D9BF8504181CC500B2BC354419113931EA5F8504165C1BFB32CC35441861ABFD7A9F85041A6BD29572AC35441672F8E31B9F850418F6F198F10C35441F066848BA3F850418A2109AD15C3544186EAA3B98CF85041F1F461B5FBC2544165F3F0B78CF85041C2E4F9B5FBC25441AC7A08D192F85041EDF8B50D17C354419301946194F85041E84D40D429C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145177 - 288499
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000100000009000000CDCCCCFC9DF850417B14AEE7EAC2544185EB5158A1F85041D7A370ADE8C25441D7A3700D9EF85041295C8F02E6C254415C8FC21593F850417B14AE57E1C25441333333538CF850411F85EBD1DCC25441CDCCCC8C8BF85041AE47E17ADDC25441E17A14DE92F85041EC51B8AEEEC254418FC2F5E89AF850418FC2F5A8EDC25441CDCCCCFC9DF850417B14AEE7EAC2544101030000000100000009000000CDCCCC8C96F85041D7A3707DDCC25441EC51B8EE93F850418FC2F528E0C25441E17A146E9EF8504148E17AB4E4C25441EC51B85EA9F85041B81E851BE6C25441CDCCCCBCBCF850410AD7A380E3C2544185EB5138BDF85041C3F528ECDBC25441CDCCCC6CB8F85041F6285C1FDBC25441CDCCCCBCA8F850410AD7A3C0DBC25441CDCCCC8C96F85041D7A3707DDCC254410103000000030000001A0000003D0AD703B0F85041EC51B85E36C35441D7A3704DB1F85041E17A14FE39C35441666666C6B0F850416666666642C35441666666E6B3F85041000000F040C35441EC51B87EC1F8504148E17AC42BC35441666666D6CCF85041E17A140E1DC354410AD7A3A0D0F85041713D0AA716C35441AE47E15AD1F85041F6285C0F13C354411F85EBB1CCF85041E17A143E06C35441AE47E13ABAF85041E17A144EEFC254413D0AD763B7F85041713D0AE7ECC25441333333A3B0F8504148E17A04EAC2544152B81E75A9F85041EC51B87EE8C2544185EB51B8A5F850417B14AEF7E8C254411F85EB51A2F8504148E17A84EAC25441E17A142E9FF8504148E17A84ECC25441AE47E16A9CF8504166666606EFC254416666665696F85041713D0AF7F6C2544185EB517893F85041A4703D5AF9C25441D7A3706D8CF85041000000D0FBC254411F85EB8193F85041B81E85AB29C354413D0AD733A5F8504148E17AE42CC354413D0AD723A8F85041AE47E14A2BC35441E17A14DEA9F85041A4703D5A2AC35441E17A144EACF850413D0AD74331C354413D0AD703B0F85041EC51B85E36C354410D000000B81E851BB4F850413D0AD7230BC354413D0AD753ADF85041E17A14DE0BC35441E17A14EEACF8504185EB518808C35441D7A3702DA8F8504148E17A3409C35441A4703D4AA8F85041C3F5286C0CC3544185EB5178A5F85041B81E85BB0CC35441295C8FA2A5F85041295C8F9209C35441295C8F32A4F8504114AE47C104C35441D7A3706DA4F8504114AE4781FEC2544185EB5118B5F850418FC2F548FBC254415C8FC265B5F850419A99999900C35441E17A148EB4F850416666667607C35441B81E851BB4F850413D0AD7230BC3544107000000000000F0A6F8504166666696F8C254410AD7A3C0ABF8504114AE4761F7C25441F6285C8FACF85041B81E856BFAC25441713D0AB7A7F85041AE47E1AAFBC25441000000C0A3F85041000000B0FCC25441666666F6A2F8504152B81E95F9C25441000000F0A6F8504166666696F8C25441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009301946194F85041E84D40D429C354419FEE74D695F85041D54E28182AC35441908E8C0796F85041100B19212AC35441F245A80D9BF8504181CC500B2BC354419113931EA5F8504165C1BFB32CC35441861ABFD7A9F85041A6BD29572AC35441672F8E31B9F850418F6F198F10C35441F066848BA3F850418A2109AD15C3544186EAA3B98CF85041F1F461B5FBC2544165F3F0B78CF85041C2E4F9B5FBC25441AC7A08D192F85041EDF8B50D17C354419301946194F85041E84D40D429C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145398 - 32113
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A2D87514133333353327654415C8FC275258751417B14AE27297654411F85EB011D875141A4703D6A1F765441EC51B80E1A875141E17A146E1A7654411F85EBF10C8751413D0AD76304765441EC51B83E09875141295C8F920476544152B81E05098751418FC2F59804765441295C8F8202875141CDCCCCFC0376544185EB51E80187514114AE47E103765441F6285CDF008751411F85EB81047654419A999919FC8651410000000012765441713D0A17F88651415C8FC2C51A7654413D0AD763FC86514148E17A741C765441D7A370BDF7865141EC51B80E2576544185EB5168F48651419A99999924765441A4703DCAF186514148E17A942B765441333333B3F18651411F85EBD12B76544185EB5108F1865141C3F528CC2D76544185EB5198F2865141333333932E76544166666616F2865141333333832F765441AE47E13AEF8651418FC2F5983976544114AE47F12E8751418FC2F59836765441A4703D6A2D8751413333335332765441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000004C987858ED8651415C44E2D338765441677FEAF4ED865141772B547039765441516E2444EF8651416F3C45783976544163A68008F08651419E2A41C3367654419D933123F286514134FF906B2F76544185EB5198F2865141333333932E7654418A8F1468F2865141A828327B2E765441D6C82D70F286514157EEEF5E2E765441B52D840AF1865141253EA7C52D765441C8BC48D9F0865141DFB4E0582E7654414C987858ED8651415C44E2D338765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145398 - 73920
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A2D87514133333353327654415C8FC275258751417B14AE27297654411F85EB011D875141A4703D6A1F765441EC51B80E1A875141E17A146E1A7654411F85EBF10C8751413D0AD76304765441EC51B83E09875141295C8F920476544152B81E05098751418FC2F59804765441295C8F8202875141CDCCCCFC0376544185EB51E80187514114AE47E103765441F6285CDF008751411F85EB81047654419A999919FC8651410000000012765441713D0A17F88651415C8FC2C51A7654413D0AD763FC86514148E17A741C765441D7A370BDF7865141EC51B80E2576544185EB5168F48651419A99999924765441A4703DCAF186514148E17A942B765441333333B3F18651411F85EBD12B76544185EB5108F1865141C3F528CC2D76544185EB5198F2865141333333932E76544166666616F2865141333333832F765441AE47E13AEF8651418FC2F5983976544114AE47F12E8751418FC2F59836765441A4703D6A2D8751413333335332765441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000004C987858ED8651415C44E2D338765441677FEAF4ED865141772B547039765441516E2444EF8651416F3C45783976544163A68008F08651419E2A41C3367654419D933123F286514134FF906B2F76544185EB5198F2865141333333932E7654418A8F1468F2865141A828327B2E765441D6C82D70F286514157EEEF5E2E765441B52D840AF1865141253EA7C52D765441C8BC48D9F0865141DFB4E0582E7654414C987858ED8651415C44E2D338765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145606 - 1217125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E16A2987514114AE47E12E72544148E17A34148751411F85EB413D725441666666B616875141295C8F6244725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A37727254411F85EBB14C875141F6285C0F5572544185EB51884F875141D7A3708D50725441AE47E16A2987514114AE47E12E725441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000048E17A34148751411F85EB413D725441666666B616875141295C8F6244725441A06BE6C5188751410A2F3C1B4A725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A3772725441BB8B228531875141551134A96E725441288215F33487514147101B6E6B7254416A84402B398751410E748074677254415132B7383D875141F1F620A363725441353F21794087514155B2ED92607254417B611936448751415935630D5D7254410145D7CA47875141E77BBEAD5972544181F03EAB4B87514106B60E84567254418312C9654B8751419CD1414856725441812469B64C8751416DEE39085572544197B636344D87514187E461405472544178F55A684E875141A39EE256527254416AB3D56E4F875141F6A9ECB550725441DE056B864F875141ADE6748B50725441B904EB644C87514163BEADC74D725441934B7368298751416440EDE22E7254414A34B72C23875141E5907F263372544148E17A34148751411F85EB413D725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145606 - 3346713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E16A2987514114AE47E12E72544148E17A34148751411F85EB413D725441666666B616875141295C8F6244725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A37727254411F85EBB14C875141F6285C0F5572544185EB51884F875141D7A3708D50725441AE47E16A2987514114AE47E12E725441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000048E17A34148751411F85EB413D725441666666B616875141295C8F6244725441A06BE6C5188751410A2F3C1B4A725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A3772725441BB8B228531875141551134A96E725441288215F33487514147101B6E6B7254416A84402B398751410E748074677254415132B7383D875141F1F620A363725441353F21794087514155B2ED92607254417B611936448751415935630D5D7254410145D7CA47875141E77BBEAD5972544181F03EAB4B87514106B60E84567254418312C9654B8751419CD1414856725441812469B64C8751416DEE39085572544197B636344D87514187E461405472544178F55A684E875141A39EE256527254416AB3D56E4F875141F6A9ECB550725441DE056B864F875141ADE6748B50725441B904EB644C87514163BEADC74D725441934B7368298751416440EDE22E7254414A34B72C23875141E5907F263372544148E17A34148751411F85EB413D725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145622 - 1216738
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000027000000295C8F72E9855141CDCCCC9C3C745441B81E85CBEC8551413D0AD7033B7454410AD7A320FC855141C3F5281C49745441A4703DBA02865141AE47E1BA4F745441CDCCCC9C0F865141A4703DCA567454419A9999691086514114AE4751557454419A9999690B865141666666165374544148E17A7409865141A4703D9A517454417B14AE2707865141D7A3704D4F745441713D0A2706865141E17A141E4C745441CDCCCCBC0486514152B81E95497454419A9999B9FF855141000000A043745441C3F528ACF9855141B81E852B3E745441C3F528DCF48551410AD7A3D0397454413D0AD783F2855141D7A3704D3874544185EB5158F5855141AE47E15A36745441EC51B80EF8855141D7A3702D35745441666666B6FA8551413D0AD7B3337454410AD7A330FD8551419A99993932745441B81E856BF6855141C3F5281C2E745441D7A3703DEE855141295C8FD22674544133333373E385514114AE479119745441C3F5285CDC855141295C8F220E745441A4703D0ADB85514152B81E950F74544152B81ED5D88551418FC2F52811745441CDCCCC0CD5855141D7A3701D147454411F85EBE1D2855141CDCCCC9C157454419A9999E9D085514114AE47C116745441295C8FD2CE855141713D0A7717745441AE47E11ACC85514185EB511818745441F6285C0FC78551411F85EBE1187454418FC2F518C485514185EB5168197454415C8FC205CC85514148E17AF426745441D7A370BDD18551410AD7A340307454410AD7A3F0D485514148E17A643474544133333333DF855141333333833B745441B81E85CBE0855141EC51B82E3B745441EC51B8DEE5855141295C8FC23E745441295C8F72E9855141CDCCCC9C3C745441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003C40F731EA8551418545AB8C3A74544172114262EB85514128C3A7E939745441B13A2E6FF185514141D1C0EE367454414C21A9BAFB8551419318E5B131745441B81E856BF6855141C3F5281C2E745441D7A3703DEE855141295C8FD22674544117E31354E8855141D0D2383E2074544133333373E385514114AE479119745441C3F5285CDC855141295C8F220E745441A4703D0ADB85514152B81E950F74544152B81ED5D88551418FC2F52811745441CDCCCC0CD5855141D7A3701D147454411F85EBE1D2855141CDCCCC9C157454419A9999E9D085514114AE47C116745441B6FA6697CF8551412729B88317745441A6010FEACB85514106B36E71187454414C58E310C4855141CC790D8E19745441C1660099D1855141D0BE620530745441B7E63911D5855141C96B8B9134745441DEA01257DF855141F0D009A33B745441BB5B5BDEE085514147A4FF3B3B74544183D79946E38551412EB767EE3C7454418C886064E68551415C033C963C7454413C40F731EA8551418545AB8C3A745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145622 - 3316213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000027000000295C8F72E9855141CDCCCC9C3C745441B81E85CBEC8551413D0AD7033B7454410AD7A320FC855141C3F5281C49745441A4703DBA02865141AE47E1BA4F745441CDCCCC9C0F865141A4703DCA567454419A9999691086514114AE4751557454419A9999690B865141666666165374544148E17A7409865141A4703D9A517454417B14AE2707865141D7A3704D4F745441713D0A2706865141E17A141E4C745441CDCCCCBC0486514152B81E95497454419A9999B9FF855141000000A043745441C3F528ACF9855141B81E852B3E745441C3F528DCF48551410AD7A3D0397454413D0AD783F2855141D7A3704D3874544185EB5158F5855141AE47E15A36745441EC51B80EF8855141D7A3702D35745441666666B6FA8551413D0AD7B3337454410AD7A330FD8551419A99993932745441B81E856BF6855141C3F5281C2E745441D7A3703DEE855141295C8FD22674544133333373E385514114AE479119745441C3F5285CDC855141295C8F220E745441A4703D0ADB85514152B81E950F74544152B81ED5D88551418FC2F52811745441CDCCCC0CD5855141D7A3701D147454411F85EBE1D2855141CDCCCC9C157454419A9999E9D085514114AE47C116745441295C8FD2CE855141713D0A7717745441AE47E11ACC85514185EB511818745441F6285C0FC78551411F85EBE1187454418FC2F518C485514185EB5168197454415C8FC205CC85514148E17AF426745441D7A370BDD18551410AD7A340307454410AD7A3F0D485514148E17A643474544133333333DF855141333333833B745441B81E85CBE0855141EC51B82E3B745441EC51B8DEE5855141295C8FC23E745441295C8F72E9855141CDCCCC9C3C745441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003C40F731EA8551418545AB8C3A74544172114262EB85514128C3A7E939745441B13A2E6FF185514141D1C0EE367454414C21A9BAFB8551419318E5B131745441B81E856BF6855141C3F5281C2E745441D7A3703DEE855141295C8FD22674544117E31354E8855141D0D2383E2074544133333373E385514114AE479119745441C3F5285CDC855141295C8F220E745441A4703D0ADB85514152B81E950F74544152B81ED5D88551418FC2F52811745441CDCCCC0CD5855141D7A3701D147454411F85EBE1D2855141CDCCCC9C157454419A9999E9D085514114AE47C116745441B6FA6697CF8551412729B88317745441A6010FEACB85514106B36E71187454414C58E310C4855141CC790D8E19745441C1660099D1855141D0BE620530745441B7E63911D5855141C96B8B9134745441DEA01257DF855141F0D009A33B745441BB5B5BDEE085514147A4FF3B3B74544183D79946E38551412EB767EE3C7454418C886064E68551415C033C963C7454413C40F731EA8551418545AB8C3A745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145743 - 1217439
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E856BE38D5141B81E85AB6A76544148E17AA4E48D51417B14AEF769765441AE47E1BAE58D514185EB51586576544114AE4741E88D5141713D0AF7527654417B14AEB7E18D5141666666364C7654413D0AD723E88D5141A4703D0A47765441295C8FA2EE8D5141E17A14DE41765441C3F528FCE08D51419A9999793D765441CDCCCC7CD78D5141A4703D6A3A7654410AD7A350CF8D51413D0AD7F337765441000000C0CE8D514114AE47813A765441AE47E1DACA8D51418FC2F5583C7654415C8FC295C88D5141F6285C8F3D76544185EB5158C68D51411F85EBC13E7654417B14AE37D28D5141F6285C8F57765441EC51B8CEDF8D5141295C8FF273765441C3F5286CE28D51413D0AD763737654415C8FC205E48D514185EB51986C765441B81E856BE38D5141B81E85AB6A765441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000877AF729D18D5141FD9E98405576544101642108D68D5141B9ED6F7056765441D609135BD88D51417433518757765441C2FE911DDB8D51415F174D7D59765441B56AA677E38D51410974B3EF5E76544113965869E48D5141EF0220E75C7654415CA50651E78D51415AC2BD7E55765441A15F253AE68D5141F7417C8E50765441F8134294E18D5141F2ECEC8F4C7654416F9F04C2E38D51411D36787049765441CC272DC1E58D5141C8DD357747765441EBA2B0AEEA8D51414BC633324376544152C69D4CED8D51417E550B704176544128719553E78D5141A96A02843F765441C8C6F595D38D51413D2F463D397654416E34426CCF8D5141C3F4922738765441CA3DEEC4CE8D5141C6271C8D3A765441241411B8CB8D51413CA25BEE3B7654417AB7AA45C68D5141562472C33E7654419C2EC5ECCC8D51412357DB804C765441877AF729D18D5141FD9E984055765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145743 - 3671273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E856BE38D5141B81E85AB6A76544148E17AA4E48D51417B14AEF769765441AE47E1BAE58D514185EB51586576544114AE4741E88D5141713D0AF7527654417B14AEB7E18D5141666666364C7654413D0AD723E88D5141A4703D0A47765441295C8FA2EE8D5141E17A14DE41765441C3F528FCE08D51419A9999793D765441CDCCCC7CD78D5141A4703D6A3A7654410AD7A350CF8D51413D0AD7F337765441000000C0CE8D514114AE47813A765441AE47E1DACA8D51418FC2F5583C7654415C8FC295C88D5141F6285C8F3D76544185EB5158C68D51411F85EBC13E7654417B14AE37D28D5141F6285C8F57765441EC51B8CEDF8D5141295C8FF273765441C3F5286CE28D51413D0AD763737654415C8FC205E48D514185EB51986C765441B81E856BE38D5141B81E85AB6A765441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000877AF729D18D5141FD9E98405576544101642108D68D5141B9ED6F7056765441D609135BD88D51417433518757765441C2FE911DDB8D51415F174D7D59765441B56AA677E38D51410974B3EF5E76544113965869E48D5141EF0220E75C7654415CA50651E78D51415AC2BD7E55765441A15F253AE68D5141F7417C8E50765441F8134294E18D5141F2ECEC8F4C7654416F9F04C2E38D51411D36787049765441CC272DC1E58D5141C8DD357747765441EBA2B0AEEA8D51414BC633324376544152C69D4CED8D51417E550B704176544128719553E78D5141A96A02843F765441C8C6F595D38D51413D2F463D397654416E34426CCF8D5141C3F4922738765441CA3DEEC4CE8D5141C6271C8D3A765441241411B8CB8D51413CA25BEE3B7654417AB7AA45C68D5141562472C33E7654419C2EC5ECCC8D51412357DB804C765441877AF729D18D5141FD9E984055765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>146117 - 1217426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000028000000CDCCCC6C078F5141295C8FF26374544100000010068F514185EB51A85A745441000000F0048F51419A9999F9527454418FC2F548048F514152B81EC547745441713D0AE7038F5141CDCCCC2C3174544133333373028F5141D7A3709D2B7454413D0AD7F3008F5141CDCCCC2C2874544148E17A74FA8E5141EC51B8FE1F74544114AE4741F28E51417B14AE071A74544185EB51A8EA8E5141C3F528BC15745441A4703D4AE58E51418FC2F5E814745441C3F5289CDD8E5141666666E61574544152B81E75C98E514100000070197454413D0AD713C38E5141D7A370BDF0735441B81E858BD78E51417B14AE87ED7354410AD7A360D28E514185EB5108E773544152B81E85D18E51419A9999B9E773544185EB51A8D08E5141333333A3E67354413D0AD783D18E5141295C8FF2E57354417B14AEB7C88E51415C8FC225DB7354418FC2F5F8C58E5141A4703DAAD773544114AE47E1C28E514166666616D373544114AE4721BE8E5141EC51B86ECB735441666666B6B88E5141713D0A57C273544185EB51688A8E5141CDCCCCACCA73544148E17AC45C8E51413D0AD7E3D2735441C3F5289C658E51417B14AE77EA73544185EB51B8708E51415C8FC2F5F77354413D0AD773778E5141EC51B86EFF7354413D0AD7B37C8E514152B81E5507745441EC51B8AE838E514148E17AB40D7454419A999999978E5141A4703DFA217454418FC2F588A98E514185EB51884774544152B81E95B18E51418FC2F56858745441713D0A17B98E51418FC2F5286874544152B81E85BA8E5141713D0A1769745441EC51B83EE28E514114AE47316A745441A4703D1A078F514114AE47216B745441295C8F02088F51418FC2F5286A745441CDCCCC6C078F5141295C8FF263745441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A57B68E514100000060BE735441CDCCCC1CB28E5141000000E0B773544148E17AF4AE8E5141E17A149EB37354415C8FC2B5AA8E5141F6285CAFAE73544100000060A68E514114AE4751AA735441AE47E13A878E51413D0AD7538D735441000000C04D8E5141B81E85AB97735441F6285C9F4D8E5141D7A3700DA0735441F6285CAF4D8E5141EC51B86EA3735441713D0AA74F8E5141000000E0A6735441A4703DDA508E5141C3F5284CA9735441713D0A17568E5141AE47E14AB87354410AD7A300598E51419A9999D9C873544148E17AC45C8E51413D0AD7E3D27354414F28608D658E5141C6C738DFE973544140FA4A17668E5141D3E1370DEB7354413E7D6C996A8E514149716F88F07354418F834B99CA8E51414785A5C2DD7354417AFA760DCA8E5141DAA157C9DC7354417A3C4DD7C28E5141344ACF04D3735441713D0A57B68E514100000060BE735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>146117 - 3514730
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000028000000CDCCCC6C078F5141295C8FF26374544100000010068F514185EB51A85A745441000000F0048F51419A9999F9527454418FC2F548048F514152B81EC547745441713D0AE7038F5141CDCCCC2C3174544133333373028F5141D7A3709D2B7454413D0AD7F3008F5141CDCCCC2C2874544148E17A74FA8E5141EC51B8FE1F74544114AE4741F28E51417B14AE071A74544185EB51A8EA8E5141C3F528BC15745441A4703D4AE58E51418FC2F5E814745441C3F5289CDD8E5141666666E61574544152B81E75C98E514100000070197454413D0AD713C38E5141D7A370BDF0735441B81E858BD78E51417B14AE87ED7354410AD7A360D28E514185EB5108E773544152B81E85D18E51419A9999B9E773544185EB51A8D08E5141333333A3E67354413D0AD783D18E5141295C8FF2E57354417B14AEB7C88E51415C8FC225DB7354418FC2F5F8C58E5141A4703DAAD773544114AE47E1C28E514166666616D373544114AE4721BE8E5141EC51B86ECB735441666666B6B88E5141713D0A57C273544185EB51688A8E5141CDCCCCACCA73544148E17AC45C8E51413D0AD7E3D2735441C3F5289C658E51417B14AE77EA73544185EB51B8708E51415C8FC2F5F77354413D0AD773778E5141EC51B86EFF7354413D0AD7B37C8E514152B81E5507745441EC51B8AE838E514148E17AB40D7454419A999999978E5141A4703DFA217454418FC2F588A98E514185EB51884774544152B81E95B18E51418FC2F56858745441713D0A17B98E51418FC2F5286874544152B81E85BA8E5141713D0A1769745441EC51B83EE28E514114AE47316A745441A4703D1A078F514114AE47216B745441295C8F02088F51418FC2F5286A745441CDCCCC6C078F5141295C8FF263745441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A57B68E514100000060BE735441CDCCCC1CB28E5141000000E0B773544148E17AF4AE8E5141E17A149EB37354415C8FC2B5AA8E5141F6285CAFAE73544100000060A68E514114AE4751AA735441AE47E13A878E51413D0AD7538D735441000000C04D8E5141B81E85AB97735441F6285C9F4D8E5141D7A3700DA0735441F6285CAF4D8E5141EC51B86EA3735441713D0AA74F8E5141000000E0A6735441A4703DDA508E5141C3F5284CA9735441713D0A17568E5141AE47E14AB87354410AD7A300598E51419A9999D9C873544148E17AC45C8E51413D0AD7E3D27354414F28608D658E5141C6C738DFE973544140FA4A17668E5141D3E1370DEB7354413E7D6C996A8E514149716F88F07354418F834B99CA8E51414785A5C2DD7354417AFA760DCA8E5141DAA157C9DC7354417A3C4DD7C28E5141344ACF04D3735441713D0A57B68E514100000060BE735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>146471 - 58531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AEE70D855141C3F5281C8F7A5441CDCCCC9C16855141666666E6AC7A5441713D0A27178551417B14AE07AF7A544152B81E6517855141713D0AF7AE7A5441713D0A871E85514114AE4751AA7A5441EC51B8CE25855141D7A3709DA37A5441E17A148E2A8551410AD7A3809F7A5441333333D32C855141C3F5287C9D7A5441A4703D7A27855141333333538C7A54419A9999B91E8551415C8FC2D5897A54417B14AEE70D855141C3F5281C8F7A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000FE234BD22C855141E634F77C9D7A54414EF262832A855141416C0B11967A54415482383E298551410A6D98FD917A5441AE64459428855141F3203BDC8F7A544142C4577727855141463839568C7A5441A23FE94A20855141F1D6ED478A7A54419A9999B91E8551415C8FC2D5897A54415CEB46E80D855141FF06F91B8F7A5441CDCCCC9C16855141666666E6AC7A5441A735B42417855141A02E77FEAE7A54417FCF99281785514186FA4207AF7A5441173E462B17855141CA858B06AF7A5441BB3941361785514132109A03AF7A54418ECD2B3717855141D12F5B03AF7A544161634343178551413D711D00AF7A544154664848178551419B01C5FEAE7A5441995A1B4F1785514121C0F0FCAE7A5441BDE17C8D19855141BCBD1888AD7A5441A2FD5DBA1C855141E0A09C66AB7A54414C06977B1E85514122838550AA7A5441C5EC3C0A20855141BB17CCECA87A5441EC51B8CE25855141D7A3709DA37A54418328543626855141C27CB043A37A54410E060999268551414A3AB1E9A27A54417AB23FD72B8551416AF5155C9E7A54419DC2E9E12B855141EE919B529E7A5441E98CA72E2C855141A80C670E9E7A544118F4373C2C855141D3E458029E7A5441E8855C752C855141CA828FCF9D7A544146636C972C855141509649B19D7A5441FE234BD22C855141E634F77C9D7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238412 - 1507082
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D4544114AE47A12BBD5041333333A379D454413D0AD7F329BD5041AE47E1CA67D45441CDCCCCBC26BD5041CDCCCC9C45D454410000005026BD50410AD7A3B045D4544152B81E651CBD504114AE47F146D45441EC51B86E12BD5041CDCCCCAC47D45441CDCCCC6C0EBD5041666666B647D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD45441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000EFFA93A12BBD504147545EA679D454412D45AFCE12BD504107FC2C4A76D454410104A8CF12BD504186BC805476D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D45441EFFA93A12BBD504147545EA679D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238412 - 3704005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D4544114AE47A12BBD5041333333A379D454413D0AD7F329BD5041AE47E1CA67D45441CDCCCCBC26BD5041CDCCCC9C45D454410000005026BD50410AD7A3B045D4544152B81E651CBD504114AE47F146D45441EC51B86E12BD5041CDCCCCAC47D45441CDCCCC6C0EBD5041666666B647D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD45441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000EFFA93A12BBD504147545EA679D454412D45AFCE12BD504107FC2C4A76D454410104A8CF12BD504186BC805476D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D45441EFFA93A12BBD504147545EA679D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147018 - 3078619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B00000048E17AC4292F5141F6285C4FA340544114AE4761262F51413D0AD793AC4054413D0AD7E3262F5141295C8FB2AC405441CDCCCC4C292F514185EB5128AD405441F6285CEF2B2F5141713D0A77AD405441CDCCCCBC2F2F5141333333C3AD405441AE47E11A372F5141713D0A27AE4054418FC2F5F83D2F514152B81E95AE40544166666696402F5141666666E6AE405441AE47E1DA452F5141EC51B86EAF4054418FC2F568492F5141295C8FD2AF4054413D0AD7134A2F514152B81EE5AF405441A4703D6A4C2F51419A999909B0405441EC51B85E4C2F5141D7A370EDAF405441CDCCCCFC4B2F514100000050AD405441CDCCCC7C4B2F5141B81E85DBA8405441295C8F224A2F514148E17A449E405441E17A146E422F5141295C8FF29B4054418FC2F5D83F2F5141295C8F129A4054418FC2F5B83A2F51419A99990996405441713D0A77382F51410000009096405441B81E85EB342F5141713D0A2794405441EC51B83E332F5141333333039340544185EB51A82F2F5141D7A370AD944054411F85EBE12C2F51413333339398405441C3F528CC2B2F5141333333539A40544148E17AC4292F5141F6285C4FA3405441
+</a>
+
+<b>
+0106000000010000000103000000010000005500000034CA08135F2F51410EF0F545A0405441D7A370FD522F5141713D0A0789405441713D0AA74A2F5141F6285CCF8740544100000050422F5141EC51B8AE8640544133333373362F5141666666E68440544185EB5178362F5141295C8F528740544148E17A24352F5141C3F5281C8B40544152B81E55322F5141EC51B80E8F405441295C8F52322F51413D0AD78392405441AE47E1DA322F5141F6285CBF92405441EC51B83E332F5141333333039340544185EB51A82F2F5141D7A370AD944054411F85EBE12C2F51413333339398405441C3F528CC2B2F5141333333539A40544148E17AC4292F5141F6285C4FA340544114AE4761262F51413D0AD793AC405441AE47E15A242F5141B81E851BAC4054411F85EB81252F5141EC51B8AEB14054413D0AD7F3262F5141AE47E10AB540544100000090262F5141AE47E1EAB640544185EB51D8242F5141713D0A07B9405441295C8F42232F514152B81E95B9405441295C8FF2202F514185EB5148BA4054419A9999591E2F51411F85EB71BC405441A4703D1A1D2F51417B14AE17C1405441B81E85DB1B2F514185EB5138C34054411F85EB71172F51415C8FC2C5C74054419A9999A90D2F5141D7A370DDCC4054410AD7A330082F5141295C8F52CE4054417B14AE67052F5141A4703D7AD0405441C3F528BC002F5141F6285C8FD74054418FC2F5D8FD2E5141EC51B83EE2405441666666D60A2F51418FC2F598E54054415C8FC265162F514148E17A94E8405441713D0A27172F51417B14AED7E24054411F85EB91162F51419A9999E9DC4054413D0AD723162F5141EC51B85EDD405441A4703DFA152F5141295C8F42DE4054415C8FC2E5152F51411F85EB71DF405441D7A3704D162F5141295C8F32E140544166666646162F514100000000E4405441000000E0132F5141B81E85EBE340544148E17AC4132F5141333333F3E24054415C8FC255142F514100000060DB405441AE47E1FA142F5141A4703D8ADA4054413D0AD753162F5141000000D0D940544114AE4791172F514100000040D8405441A4703DEA182F51415C8FC285D740544152B81ED5192F5141AE47E16AD640544152B81EF51C2F51415C8FC2C5D4405441D7A3701D1F2F514100000020D4405441D7A3703D222F5141D7A3705DD5405441B81E85DB232F5141713D0A17D740544114AE47D1242F5141B81E853BD740544152B81E25252F5141B81E850BD540544148E17A34252F51415C8FC295D4405441F6285C0F292F5141333333A3D4405441295C8F32292F514166666626D6405441B81E85EB292F51419A999949D5405441D7A3707D2B2F514152B81EE5D3405441666666662C2F51419A999919D340544185EB51F82D2F5141A4703D2AD24054418FC2F578302F514148E17A54D1405441EC51B85E322F5141000000E0D0405441B81E856B342F51411F85EB91D04054410AD7A3803B2F51417B14AE37D0405441B81E852B3F2F5141295C8FC2CF405441295C8FC2412F514166666626CF405441333333F3432F514185EB5178CE405441F6285C2F492F51415C8FC265CC40544152B81EE5492F5141713D0AD7CB405441713D0A874A2F5141EC51B80ECB405441E9282A124B2F5141BACEB30ECA405441DAFEDD594B2F514189CC920CC9405441A42935684B2F51412F1F15D1C7405441E555A2224C2F51418B3DB128C240544134AC5B954C2F51412B5B422ABC4054411658C3244D2F51417C221AB9B5405441E0821A334D2F5141FBC93F44B440544174D8C84F4D2F5141701AA106B2405441B9D7BDF94C2F514143EB07F4AF4054411965F4E84B2F514136972D9FAC405441295C8F224A2F514148E17A449E405441D8BB78A85B2F514195D8EE53A040544134CA08135F2F51410EF0F545A0405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147018 - 3303074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B00000048E17AC4292F5141F6285C4FA340544114AE4761262F51413D0AD793AC4054413D0AD7E3262F5141295C8FB2AC405441CDCCCC4C292F514185EB5128AD405441F6285CEF2B2F5141713D0A77AD405441CDCCCCBC2F2F5141333333C3AD405441AE47E11A372F5141713D0A27AE4054418FC2F5F83D2F514152B81E95AE40544166666696402F5141666666E6AE405441AE47E1DA452F5141EC51B86EAF4054418FC2F568492F5141295C8FD2AF4054413D0AD7134A2F514152B81EE5AF405441A4703D6A4C2F51419A999909B0405441EC51B85E4C2F5141D7A370EDAF405441CDCCCCFC4B2F514100000050AD405441CDCCCC7C4B2F5141B81E85DBA8405441295C8F224A2F514148E17A449E405441E17A146E422F5141295C8FF29B4054418FC2F5D83F2F5141295C8F129A4054418FC2F5B83A2F51419A99990996405441713D0A77382F51410000009096405441B81E85EB342F5141713D0A2794405441EC51B83E332F5141333333039340544185EB51A82F2F5141D7A370AD944054411F85EBE12C2F51413333339398405441C3F528CC2B2F5141333333539A40544148E17AC4292F5141F6285C4FA3405441
+</a>
+
+<b>
+0106000000010000000103000000010000005500000034CA08135F2F51410EF0F545A0405441D7A370FD522F5141713D0A0789405441713D0AA74A2F5141F6285CCF8740544100000050422F5141EC51B8AE8640544133333373362F5141666666E68440544185EB5178362F5141295C8F528740544148E17A24352F5141C3F5281C8B40544152B81E55322F5141EC51B80E8F405441295C8F52322F51413D0AD78392405441AE47E1DA322F5141F6285CBF92405441EC51B83E332F5141333333039340544185EB51A82F2F5141D7A370AD944054411F85EBE12C2F51413333339398405441C3F528CC2B2F5141333333539A40544148E17AC4292F5141F6285C4FA340544114AE4761262F51413D0AD793AC405441AE47E15A242F5141B81E851BAC4054411F85EB81252F5141EC51B8AEB14054413D0AD7F3262F5141AE47E10AB540544100000090262F5141AE47E1EAB640544185EB51D8242F5141713D0A07B9405441295C8F42232F514152B81E95B9405441295C8FF2202F514185EB5148BA4054419A9999591E2F51411F85EB71BC405441A4703D1A1D2F51417B14AE17C1405441B81E85DB1B2F514185EB5138C34054411F85EB71172F51415C8FC2C5C74054419A9999A90D2F5141D7A370DDCC4054410AD7A330082F5141295C8F52CE4054417B14AE67052F5141A4703D7AD0405441C3F528BC002F5141F6285C8FD74054418FC2F5D8FD2E5141EC51B83EE2405441666666D60A2F51418FC2F598E54054415C8FC265162F514148E17A94E8405441713D0A27172F51417B14AED7E24054411F85EB91162F51419A9999E9DC4054413D0AD723162F5141EC51B85EDD405441A4703DFA152F5141295C8F42DE4054415C8FC2E5152F51411F85EB71DF405441D7A3704D162F5141295C8F32E140544166666646162F514100000000E4405441000000E0132F5141B81E85EBE340544148E17AC4132F5141333333F3E24054415C8FC255142F514100000060DB405441AE47E1FA142F5141A4703D8ADA4054413D0AD753162F5141000000D0D940544114AE4791172F514100000040D8405441A4703DEA182F51415C8FC285D740544152B81ED5192F5141AE47E16AD640544152B81EF51C2F51415C8FC2C5D4405441D7A3701D1F2F514100000020D4405441D7A3703D222F5141D7A3705DD5405441B81E85DB232F5141713D0A17D740544114AE47D1242F5141B81E853BD740544152B81E25252F5141B81E850BD540544148E17A34252F51415C8FC295D4405441F6285C0F292F5141333333A3D4405441295C8F32292F514166666626D6405441B81E85EB292F51419A999949D5405441D7A3707D2B2F514152B81EE5D3405441666666662C2F51419A999919D340544185EB51F82D2F5141A4703D2AD24054418FC2F578302F514148E17A54D1405441EC51B85E322F5141000000E0D0405441B81E856B342F51411F85EB91D04054410AD7A3803B2F51417B14AE37D0405441B81E852B3F2F5141295C8FC2CF405441295C8FC2412F514166666626CF405441333333F3432F514185EB5178CE405441F6285C2F492F51415C8FC265CC40544152B81EE5492F5141713D0AD7CB405441713D0A874A2F5141EC51B80ECB405441E9282A124B2F5141BACEB30ECA405441DAFEDD594B2F514189CC920CC9405441A42935684B2F51412F1F15D1C7405441E555A2224C2F51418B3DB128C240544134AC5B954C2F51412B5B422ABC4054411658C3244D2F51417C221AB9B5405441E0821A334D2F5141FBC93F44B440544174D8C84F4D2F5141701AA106B2405441B9D7BDF94C2F514143EB07F4AF4054411965F4E84B2F514136972D9FAC405441295C8F224A2F514148E17A449E405441D8BB78A85B2F514195D8EE53A040544134CA08135F2F51410EF0F545A0405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147020 - 1128832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C6F3C2F514148E17A04EF40544148E17A043D2F5141EC51B85EEE405441EC51B86E3D2F514148E17A84ED4054411F85EBA13D2F514185EB5128ED4054413D0AD7033E2F514152B81E75EC4054418FC2F5B83E2F5141AE47E1EAEA4054410AD7A3204A2F51419A999989014154410AD7A3205C2F5141E17A14AE05415441666666D6712F5141000000E02D41544114AE4741792F5141AE47E1EA2B4154413D0AD7935A2F514185EB5108F640544114AE4711582F51418FC2F538F1405441CDCCCC9C562F514133333323F1405441CDCCCC5C552F51418FC2F5D8F0405441D7A370ED532F51413D0AD753F0405441EC51B88E502F51419A999969EF405441F6285C9F4E2F51413D0AD703EF405441F6285C0F4D2F51419A9999C9EE4054415C8FC2F54A2F514148E17A94EE4054415C8FC2254A2F5141EC51B86EEE4054413D0AD7B3402F514152B81E45EB40544152B81ED5462F5141A4703D4AD94054419A9999F9462F5141F6285CBFD8405441A4703DFA442F514152B81E55D8405441295C8F22432F51411F85EB31D8405441A4703DFA3C2F51411F85EBF1D74054417B14AEF7322F51418FC2F538D840544152B81ED5322F5141C3F528ECD6405441AE47E17A312F51411F85EBF1D6405441F6285C3F312F5141CDCCCC9CD54054417B14AE97302F5141713D0A77D540544185EB51C8302F51418FC2F598D440544185EB51D8302F514100000090D3405441295C8F92302F5141B81E858BD2405441B81E856B302F5141EC51B81ED24054418FC2F5182F2F5141C3F5288CD2405441295C8F722D2F514133333353D34054411F85EBC12C2F5141AE47E11AD44054415C8FC2052D2F5141C3F5282CD9405441713D0A972D2F5141AE47E14AD94054413D0AD7432D2F51413D0AD783DB405441CDCCCC2C2D2F51410AD7A320DC40544114AE47C12D2F514133333313E84054411F85EBC12D2F51417B14AE87EF40544114AE47B12B2F51419A999969EF405441666666462F2F5141EC51B84E02415441B81E851B302F51419A99994907415441E17A147E302F51415C8FC27505415441713D0A57332F5141F6285C4F00415441C3F528EC362F514148E17AD4F9405441E17A14DE3B2F51415C8FC245EF405441F6285C6F3C2F514148E17A04EF405441
+</a>
+
+<b>
+010600000001000000010300000001000000240000000F7633F6432F51415BADD7B5E140544193D1B549442F5141737AE6C0E0405441FEB0BC133D2F514150756CCEE040544119D12A812E2F514181DAC0E9E040544193DA134A2D2F5141CA41DEEBE04054415EE04DF5282F5141459E851FE1405441E17A14DE2A2F51418FC2F5D8EA40544114AE47B12B2F51419A999969EF405441666666462F2F5141EC51B84E02415441B81E851B302F51419A99994907415441E17A147E302F51415C8FC27505415441713D0A57332F5141F6285C4F00415441C3F528EC362F514148E17AD4F9405441E17A14DE3B2F51415C8FC245EF405441F6285C6F3C2F514148E17A04EF40544148E17A043D2F5141EC51B85EEE405441EC51B86E3D2F514148E17A84ED4054411F85EBA13D2F514185EB5128ED4054413D0AD7033E2F514152B81E75EC4054418FC2F5B83E2F5141AE47E1EAEA4054410AD7A3204A2F51419A999989014154410AD7A3205C2F5141E17A14AE05415441666666D6712F5141000000E02D41544114AE4741792F5141AE47E1EA2B4154413D0AD7935A2F514185EB5108F640544114AE4711582F51418FC2F538F1405441CDCCCC9C562F514133333323F1405441CDCCCC5C552F51418FC2F5D8F0405441D7A370ED532F51413D0AD753F0405441EC51B88E502F51419A999969EF405441F6285C9F4E2F51413D0AD703EF405441F6285C0F4D2F51419A9999C9EE4054415C8FC2F54A2F514148E17A94EE4054415C8FC2254A2F5141EC51B86EEE4054413D0AD7B3402F514152B81E45EB4054410F7633F6432F51415BADD7B5E1405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147020 - 3539197
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C6F3C2F514148E17A04EF40544148E17A043D2F5141EC51B85EEE405441EC51B86E3D2F514148E17A84ED4054411F85EBA13D2F514185EB5128ED4054413D0AD7033E2F514152B81E75EC4054418FC2F5B83E2F5141AE47E1EAEA4054410AD7A3204A2F51419A999989014154410AD7A3205C2F5141E17A14AE05415441666666D6712F5141000000E02D41544114AE4741792F5141AE47E1EA2B4154413D0AD7935A2F514185EB5108F640544114AE4711582F51418FC2F538F1405441CDCCCC9C562F514133333323F1405441CDCCCC5C552F51418FC2F5D8F0405441D7A370ED532F51413D0AD753F0405441EC51B88E502F51419A999969EF405441F6285C9F4E2F51413D0AD703EF405441F6285C0F4D2F51419A9999C9EE4054415C8FC2F54A2F514148E17A94EE4054415C8FC2254A2F5141EC51B86EEE4054413D0AD7B3402F514152B81E45EB40544152B81ED5462F5141A4703D4AD94054419A9999F9462F5141F6285CBFD8405441A4703DFA442F514152B81E55D8405441295C8F22432F51411F85EB31D8405441A4703DFA3C2F51411F85EBF1D74054417B14AEF7322F51418FC2F538D840544152B81ED5322F5141C3F528ECD6405441AE47E17A312F51411F85EBF1D6405441F6285C3F312F5141CDCCCC9CD54054417B14AE97302F5141713D0A77D540544185EB51C8302F51418FC2F598D440544185EB51D8302F514100000090D3405441295C8F92302F5141B81E858BD2405441B81E856B302F5141EC51B81ED24054418FC2F5182F2F5141C3F5288CD2405441295C8F722D2F514133333353D34054411F85EBC12C2F5141AE47E11AD44054415C8FC2052D2F5141C3F5282CD9405441713D0A972D2F5141AE47E14AD94054413D0AD7432D2F51413D0AD783DB405441CDCCCC2C2D2F51410AD7A320DC40544114AE47C12D2F514133333313E84054411F85EBC12D2F51417B14AE87EF40544114AE47B12B2F51419A999969EF405441666666462F2F5141EC51B84E02415441B81E851B302F51419A99994907415441E17A147E302F51415C8FC27505415441713D0A57332F5141F6285C4F00415441C3F528EC362F514148E17AD4F9405441E17A14DE3B2F51415C8FC245EF405441F6285C6F3C2F514148E17A04EF405441
+</a>
+
+<b>
+010600000001000000010300000001000000240000000F7633F6432F51415BADD7B5E140544193D1B549442F5141737AE6C0E0405441FEB0BC133D2F514150756CCEE040544119D12A812E2F514181DAC0E9E040544193DA134A2D2F5141CA41DEEBE04054415EE04DF5282F5141459E851FE1405441E17A14DE2A2F51418FC2F5D8EA40544114AE47B12B2F51419A999969EF405441666666462F2F5141EC51B84E02415441B81E851B302F51419A99994907415441E17A147E302F51415C8FC27505415441713D0A57332F5141F6285C4F00415441C3F528EC362F514148E17AD4F9405441E17A14DE3B2F51415C8FC245EF405441F6285C6F3C2F514148E17A04EF40544148E17A043D2F5141EC51B85EEE405441EC51B86E3D2F514148E17A84ED4054411F85EBA13D2F514185EB5128ED4054413D0AD7033E2F514152B81E75EC4054418FC2F5B83E2F5141AE47E1EAEA4054410AD7A3204A2F51419A999989014154410AD7A3205C2F5141E17A14AE05415441666666D6712F5141000000E02D41544114AE4741792F5141AE47E1EA2B4154413D0AD7935A2F514185EB5108F640544114AE4711582F51418FC2F538F1405441CDCCCC9C562F514133333323F1405441CDCCCC5C552F51418FC2F5D8F0405441D7A370ED532F51413D0AD753F0405441EC51B88E502F51419A999969EF405441F6285C9F4E2F51413D0AD703EF405441F6285C0F4D2F51419A9999C9EE4054415C8FC2F54A2F514148E17A94EE4054415C8FC2254A2F5141EC51B86EEE4054413D0AD7B3402F514152B81E45EB4054410F7633F6432F51415BADD7B5E1405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147181 - 209119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000C3F5287CCB2C514148E17A847D3F544100000010C72C51419A9999A9923F544100000030C22C514148E17A14AF3F5441713D0A97C42C51413D0AD7E3B23F54415C8FC2E5C52C51410AD7A310B23F5441EC51B88EC72C51413D0AD743B03F544152B81ED5C92C51415C8FC2C5AB3F5441713D0AB7CB2C5141713D0A57A73F5441B81E850BCC2C5141A4703D2AA33F5441D7A3701DCE2C5141000000B0A13F54410AD7A300CF2C514148E17A149E3F54418FC2F588CF2C514148E17A84973F5441AE47E13AD12C5141713D0A07943F5441D7A3703DCF2C514114AE4741923F5441A4703D3ACD2C51410AD7A3008F3F544185EB5178CE2C5141C3F5288C863F5441CDCCCC2CCE2C5141713D0A67813F54415C8FC275CC2C5141E17A14BE7E3F5441C3F5287CCB2C514148E17A847D3F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007A300C25C32C51410A9A1699B03F5441ADE8A29AC32C514109F19053B13F5441B2B90D81C42C514109F19053B13F5441130FA837C72C51415A2BBB0AAE3F544152AC24A5C92C514108A9DF78A93F54419149A112CC2C5141A91D34E7A23F5441719A53C9CD2C51418A2F05C39E3F5441AF2E0037CE2C51416B41D69E9A3F5441261A66B9CE2C5141A81DFCEC963F5441AF2E0037CE2C5141A996A131953F54419E527112CE2C51414841077B923F5441EFE09272CD2C5141DE08AF5B8F3F5441A4703D3ACD2C51410AD7A3008F3F54413F06A75BCD2C51413B29461D8E3F54413F06A75BCD2C514168B173E98A3F5441A266A37CCD2C51418E05E4EA863F5441CFDD4D80CC2C51417C181058813F544130E1885ACB2C5141DFB0C4757E3F54416E88B3C9C92C514149C344C5863F544183370113C82C51413B38377B903F5441A3BCB451C32C51418F83B77BA83F54416FA58351C32C5141ACACD57CA83F5441AC583845C32C5141FD0280C4A83F54417D29B926C32C51412EC2B3C5A93F5441BA3604BCC22C5141F230ADEDAF3F5441DE2441E1C22C5141F022942DB03F54417A300C25C32C51410A9A1699B03F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147181 - 271856
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000C3F5287CCB2C514148E17A847D3F544100000010C72C51419A9999A9923F544100000030C22C514148E17A14AF3F5441713D0A97C42C51413D0AD7E3B23F54415C8FC2E5C52C51410AD7A310B23F5441EC51B88EC72C51413D0AD743B03F544152B81ED5C92C51415C8FC2C5AB3F5441713D0AB7CB2C5141713D0A57A73F5441B81E850BCC2C5141A4703D2AA33F5441D7A3701DCE2C5141000000B0A13F54410AD7A300CF2C514148E17A149E3F54418FC2F588CF2C514148E17A84973F5441AE47E13AD12C5141713D0A07943F5441D7A3703DCF2C514114AE4741923F5441A4703D3ACD2C51410AD7A3008F3F544185EB5178CE2C5141C3F5288C863F5441CDCCCC2CCE2C5141713D0A67813F54415C8FC275CC2C5141E17A14BE7E3F5441C3F5287CCB2C514148E17A847D3F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007A300C25C32C51410A9A1699B03F5441ADE8A29AC32C514109F19053B13F5441B2B90D81C42C514109F19053B13F5441130FA837C72C51415A2BBB0AAE3F544152AC24A5C92C514108A9DF78A93F54419149A112CC2C5141A91D34E7A23F5441719A53C9CD2C51418A2F05C39E3F5441AF2E0037CE2C51416B41D69E9A3F5441261A66B9CE2C5141A81DFCEC963F5441AF2E0037CE2C5141A996A131953F54419E527112CE2C51414841077B923F5441EFE09272CD2C5141DE08AF5B8F3F5441A4703D3ACD2C51410AD7A3008F3F54413F06A75BCD2C51413B29461D8E3F54413F06A75BCD2C514168B173E98A3F5441A266A37CCD2C51418E05E4EA863F5441CFDD4D80CC2C51417C181058813F544130E1885ACB2C5141DFB0C4757E3F54416E88B3C9C92C514149C344C5863F544183370113C82C51413B38377B903F5441A3BCB451C32C51418F83B77BA83F54416FA58351C32C5141ACACD57CA83F5441AC583845C32C5141FD0280C4A83F54417D29B926C32C51412EC2B3C5A93F5441BA3604BCC22C5141F230ADEDAF3F5441DE2441E1C22C5141F022942DB03F54417A300C25C32C51410A9A1699B03F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238557 - 178085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000AE47E12A04C15041EC51B8DEC0CF5441CDCCCC2CFEC05041CDCCCCBCBCCF544185EB51C8F7C0504152B81EE5B8CF5441295C8FC2F0C050419A999949B5CF54411F85EBA1DFC050418FC2F558ADCF544152B81E35DDC05041B81E853BADCF5441EC51B8BED6C0504166666636B5CF5441E17A14CECAC05041EC51B81EC3CF54413D0AD743BDC05041713D0A17D3CF5441E17A140EBDC05041D7A370BDD4CF5441EC51B84EBFC050410AD7A350D9CF5441A4703DEAC0C05041D7A3707DDDCF5441CDCCCC3CC1C0504148E17A54DECF54419A9999F9C3C05041E17A14FEE7CF544114AE47D1C4C05041A4703D0AEACF54410AD7A38017C15041B81E852BCFCF54417B14AEE70AC15041A4703DDAC5CF5441AE47E12A04C15041EC51B8DEC0CF5441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000CAFAFCACC1C0504124EF77E0DFCF54410B7DF1D4C2C05041EB6E18F5E3CF544120B27FFD11C1504106E1CB17CBCF544101C609D00DC15041A950CA00C8CF54417E14AEE70AC15041A6703DDAC5CF5441C5703DEAC0C050412DA4707DDDCF5441CDCCCC3CC1C0504148E17A54DECF5441CAFAFCACC1C0504124EF77E0DFCF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238557 - 365386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000AE47E12A04C15041EC51B8DEC0CF5441CDCCCC2CFEC05041CDCCCCBCBCCF544185EB51C8F7C0504152B81EE5B8CF5441295C8FC2F0C050419A999949B5CF54411F85EBA1DFC050418FC2F558ADCF544152B81E35DDC05041B81E853BADCF5441EC51B8BED6C0504166666636B5CF5441E17A14CECAC05041EC51B81EC3CF54413D0AD743BDC05041713D0A17D3CF5441E17A140EBDC05041D7A370BDD4CF5441EC51B84EBFC050410AD7A350D9CF5441A4703DEAC0C05041D7A3707DDDCF5441CDCCCC3CC1C0504148E17A54DECF54419A9999F9C3C05041E17A14FEE7CF544114AE47D1C4C05041A4703D0AEACF54410AD7A38017C15041B81E852BCFCF54417B14AEE70AC15041A4703DDAC5CF5441AE47E12A04C15041EC51B8DEC0CF5441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000CAFAFCACC1C0504124EF77E0DFCF54410B7DF1D4C2C05041EB6E18F5E3CF544120B27FFD11C1504106E1CB17CBCF544101C609D00DC15041A950CA00C8CF54417E14AEE70AC15041A6703DDAC5CF5441C5703DEAC0C050412DA4707DDDCF5441CDCCCC3CC1C0504148E17A54DECF5441CAFAFCACC1C0504124EF77E0DFCF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>148760 - 219760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000033333303E4F450410AD7A330622F5541295C8F02E8F45041000000A0622F554185EB5178F3F45041295C8F82662F554152B81EC5F3F450413D0AD713632F554166666676F4F450410AD7A3B0572F5541AE47E1FAF5F45041000000204C2F55418FC2F5D8F9F450411F85EB01362F5541E17A143EF2F450419A9999D9342F55415C8FC2D5F6F45041AE47E1CA072F5541C3F5284CF9F4504152B81E15092F5541EC51B8AEF2F45041D7A3709D052F5541D7A370EDEFF45041B81E850B062F55417B14AEC7EBF4504152B81EA51A2F55415C8FC295E7F45041A4703D7A2F2F55419A999929E7F45041A4703DCA442F5541A4703D0AE7F4504185EB51084A2F554133333393E6F450419A9999C94D2F55418FC2F538E5F4504152B81E15572F5541B81E850BE5F4504148E17AB4582F554133333303E4F450410AD7A330622F5541
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000082336A69F2F4504137E0FD36352F55418C60A65FF2F450411FA825F9342F55411CD0505EF2F450412EA081DE342F5541E17A143EF2F450419A9999D9342F554105B68753F2F45041388E2607342F5541FE4CCA4CF2F450412C329380332F554175FE2912F4F4504125A62DE9222F5541810F54D2F6F45041B2548CEC072F5541693DAAAAF2F450419E7385C9052F554149CCFA0FF0F450418A092106062F554105DE0F0BF0F45041EF87E506062F5541D5A56506F0F45041B2EC9F07062F5541CC2E9402F0F45041B87C3808062F554135107A00F0F450410F7A8C08062F5541493EF4F9EFF45041201A9109062F554165B6B6C9E7F45041D1B19E7D2E2F5541EA7E7094E7F450413AAEDABC2F2F5541F61E3C90E7F450413C1AF390302F5541F61E3C90E7F45041A911C250322F5541CF204B64E7F450413985E2133A2F55416993C350E7F45041C8C7D4763E2F554176C5E522E7F4504161E713E9452F5541A4703D0AE7F4504185EB51084A2F554133333393E6F450419A9999C94D2F5541183070EDE5F45041BD74CA3C522F5541C68E681AE5F45041A4B20936582F554183B6E00DE4F45041AC2C9403622F55413C52F71EE4F45041811CF631622F554108073618E4F450413F27ED32622F5541295C8F02E8F45041000000A0622F55412E2F3D07EEF45041F7594CAA642F554132B7BE08EEF450413602659D642F5541A9A0AE73EEF450415FD00ABF642F55413216897FEFF45041DA8FE4EE5B2F5541E0B21B5AF0F45041869CA136542F5541A94A719DF0F45041F89D2454532F55419BF0C1BBF0F4504172F117D7522F554155012C27F1F45041FCB4D5FC4E2F554121994A75F1F45041856F2CA94C2F5541ED3069C3F1F45041301D45803F2F554182336A69F2F45041D7AF28EB362F554182336A69F2F450415107A031362F554182336A69F2F4504137E0FD36352F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>148760 - 318875
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000033333303E4F450410AD7A330622F5541295C8F02E8F45041000000A0622F554185EB5178F3F45041295C8F82662F554152B81EC5F3F450413D0AD713632F554166666676F4F450410AD7A3B0572F5541AE47E1FAF5F45041000000204C2F55418FC2F5D8F9F450411F85EB01362F5541E17A143EF2F450419A9999D9342F55415C8FC2D5F6F45041AE47E1CA072F5541C3F5284CF9F4504152B81E15092F5541EC51B8AEF2F45041D7A3709D052F5541D7A370EDEFF45041B81E850B062F55417B14AEC7EBF4504152B81EA51A2F55415C8FC295E7F45041A4703D7A2F2F55419A999929E7F45041A4703DCA442F5541A4703D0AE7F4504185EB51084A2F554133333393E6F450419A9999C94D2F55418FC2F538E5F4504152B81E15572F5541B81E850BE5F4504148E17AB4582F554133333303E4F450410AD7A330622F5541
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000082336A69F2F4504137E0FD36352F55418C60A65FF2F450411FA825F9342F55411CD0505EF2F450412EA081DE342F5541E17A143EF2F450419A9999D9342F554105B68753F2F45041388E2607342F5541FE4CCA4CF2F450412C329380332F554175FE2912F4F4504125A62DE9222F5541810F54D2F6F45041B2548CEC072F5541693DAAAAF2F450419E7385C9052F554149CCFA0FF0F450418A092106062F554105DE0F0BF0F45041EF87E506062F5541D5A56506F0F45041B2EC9F07062F5541CC2E9402F0F45041B87C3808062F554135107A00F0F450410F7A8C08062F5541493EF4F9EFF45041201A9109062F554165B6B6C9E7F45041D1B19E7D2E2F5541EA7E7094E7F450413AAEDABC2F2F5541F61E3C90E7F450413C1AF390302F5541F61E3C90E7F45041A911C250322F5541CF204B64E7F450413985E2133A2F55416993C350E7F45041C8C7D4763E2F554176C5E522E7F4504161E713E9452F5541A4703D0AE7F4504185EB51084A2F554133333393E6F450419A9999C94D2F5541183070EDE5F45041BD74CA3C522F5541C68E681AE5F45041A4B20936582F554183B6E00DE4F45041AC2C9403622F55413C52F71EE4F45041811CF631622F554108073618E4F450413F27ED32622F5541295C8F02E8F45041000000A0622F55412E2F3D07EEF45041F7594CAA642F554132B7BE08EEF450413602659D642F5541A9A0AE73EEF450415FD00ABF642F55413216897FEFF45041DA8FE4EE5B2F5541E0B21B5AF0F45041869CA136542F5541A94A719DF0F45041F89D2454532F55419BF0C1BBF0F4504172F117D7522F554155012C27F1F45041FCB4D5FC4E2F554121994A75F1F45041856F2CA94C2F5541ED3069C3F1F45041301D45803F2F554182336A69F2F45041D7AF28EB362F554182336A69F2F450415107A031362F554182336A69F2F4504137E0FD36352F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238714 - 230995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703D3A81C1504148E17AD4E7CF5441AE47E17A79C15041AE47E18ADCCF54415C8FC2856DC15041EC51B84EE0CF5441713D0A5789C1504152B81EC508D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000008261E0E27EC150417BF37390F9CF5441713D0A5789C1504152B81EC508D05441B3A4B3E090C1504190581CBC13D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF544169DB888879C15041CC0FC69EDCCF54411776FE8C6DC150413E0A3E59E0CF5441FDD2EF796FC150418D1D4326E3CF54418A47C01572C15041120FA5F1E6CF54418261E0E27EC150417BF37390F9CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238714 - 367390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703D3A81C1504148E17AD4E7CF5441AE47E17A79C15041AE47E18ADCCF54415C8FC2856DC15041EC51B84EE0CF5441713D0A5789C1504152B81EC508D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000008261E0E27EC150417BF37390F9CF5441713D0A5789C1504152B81EC508D05441B3A4B3E090C1504190581CBC13D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF544169DB888879C15041CC0FC69EDCCF54411776FE8C6DC150413E0A3E59E0CF5441FDD2EF796FC150418D1D4326E3CF54418A47C01572C15041120FA5F1E6CF54418261E0E27EC150417BF37390F9CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238731 - 178055
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003C000000333333639CBB5041B81E854B8BCC544148E17A949CBB5041C3F528CC85CC544148E17AC4A1BB504185EB51E882CC5441CDCCCC4CA1BB5041AE47E1DA82CC544185EB51E899BB50410000001082CC5441666666368FBB50411F85EB9181CC54419A9999298EBB5041EC51B88E81CC544152B81E758DBB504152B81ED584CC5441333333338CBB5041EC51B8BE8ACC544114AE47918ABB5041C3F5280C90CC54410AD7A3C089BB5041CDCCCC6C92CC544148E17AC488BB50413D0AD71395CC5441CDCCCC3C87BB50415C8FC2E597CC5441295C8F3285BB50411F85EBD19ACC5441EC51B80E83BB5041CDCCCCAC9DCC54415C8FC27581BB5041000000609FCC5441000000407FBB50413D0AD783A1CC5441CDCCCC5C7CBB50418FC2F518A4CC54419A9999A97ABB5041C3F5286CA5CC5441333333B375BB50415C8FC295A8CC5441B81E851B6FBB5041295C8F52ACCC54415C8FC2D567BB504152B81E55B0CC54419A9999895DBB5041F6285C3FB6CC5441E17A140E5BBB5041295C8F32B7CC54410000004057BB5041A4703DCAB6CC544185EB515855BB5041F6285CDFB5CC544148E17AB452BB504100000050B3CC5441666666F649BB50413D0AD783BACC5441AE47E16A42BB5041AE47E1BAC0CC5441CDCCCC7C41BB5041AE47E13AC1CC5441295C8F2242BB50418FC2F518C3CC5441EC51B84E49BB5041AE47E18AC2CC5441EC51B88E49BB50415C8FC285C2CC54417B14AEF74DBB50413D0AD7E3C0CC544114AE47B153BB504133333393C1CC5441333333735CBB5041F6285C6FC4CC5441EC51B8CE5FBB5041B81E853BC0CC5441EC51B89E64BB5041713D0A57C1CC5441295C8FD267BB504185EB51E8BECC5441C3F528CC6BBB50418FC2F518BDCC5441333333836FBB50410AD7A310B9CC5441D7A370FD74BB50418FC2F588B8CC544114AE47E175BB504100000090B7CC5441EC51B8DE76BB504148E17AC4B3CC5441295C8FD278BB50410AD7A3C0B2CC544114AE47F17EBB5041B81E854BB3CC5441CDCCCCDC83BB50418FC2F598B0CC5441B81E855B89BB50415C8FC275AFCC5441B81E85EB8ABB5041AE47E14AAECC54417B14AEB78DBB5041A4703DAAA9CC5441C3F528EC8FBB5041D7A3704DA4CC54410000004090BB5041295C8F72A0CC54410AD7A37091BB50417B14AEF79DCC54413333331394BB50418FC2F5489CCC54419A9999D997BB5041A4703D6A9BCC54411F85EB019CBB50418FC2F5489BCC5441F6285C9F9DBB5041CDCCCC7C9ACC544133333323A1BB5041A4703DAA95CC54415C8FC2559DBB5041C3F528EC8FCC5441333333639CBB5041B81E854B8BCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000A051B8DE76BB5041A8E17AC4B3CC5441295C8FD278BB50410AD7A3C0B2CC544114AE47F17EBB5041B81E854BB3CC54417632BA8B7FBB5041763ED7F6B2CC544197CCCCDC83BB50415AC2F598B0CC54418D1E855B89BB5041478FC275AFCC5441A7606BAA8ABB50413AEC857BAECC5441B81E85EB8ABB5041AE47E14AAECC54413A14AEB78DBB50416E703DAAA9CC5441B8F528EC8FBB504181A3704DA4CC5441203AAAFA8FBB504149CDB3A2A3CC54410000004090BB5041295C8F72A0CC5441194229CC90BB50419A9C754E9FCC5441B4D6A37091BB50419B14AEF79DCC54417FBADD6092BB5041F1734A5E9DCC54413333331394BB50418FC2F5489CCC54414E28E11395BB50411702CE0D9CCC5441EF9999D997BB50416E703D6A9BCC5441020AF98E99BB5041805A905C9BCC54411F85EB019CBB50418FC2F5489BCC5441F6285C9F9DBB5041CDCCCC7C9ACC5441C24A58F69FBB5041FAA0014797CC544108333323A1BB5041AF703DAA95CC54413CD0E8089FBB5041F38F517D92CC54415C8FC2559DBB5041C3F528EC8FCC5441B28C43D19CBB504140BC0F658DCC5441083333639CBB5041831E854B8BCC54411DE17A949CBB5041CDF528CC85CC5441F0E07AC4A1BB50417BEB51E882CC5441BA824ABAA1BB504163002DE782CC5441C55ADB97A1BB504174104FE382CC5441A2CCCC4CA1BB50410448E1DA82CC5441B0EB51E899BB50413600001082CC5441666666368FBB50413F85EB9181CC54418E6B8B298EBB5041F430FA8E81CC544152B81E758DBB504152B81ED584CC54413804CA408DBB504161322BCB85CC5441B94973F18CBB504118C3248687CC5441A137CA8D8CBB5041380BC91489CC5441333333338CBB5041EC51B8BE8ACC544114AE47918ABB5041C3F5280C90CC54410AD7A3C089BB5041CDCCCC6C92CC544148E17AC488BB50413D0AD71395CC5441CDCCCC3C87BB50415C8FC2E597CC5441491F693E85BB5041B85BF1C09ACC5441295C8F3285BB50411F85EBD19ACC5441EC51B80E83BB5041CDCCCCAC9DCC54415C8FC27581BB5041000000609FCC54412A076C3381BB5041AF9F3CA09FCC54411C4D03D280BB50419493A015A0CC544185A2ADF57FBB5041A18FEAD3A0CC5441000000407FBB50413D0AD783A1CC5441CDCCCC5C7CBB50418FC2F518A4CC54419A9999A97ABB5041C3F5286CA5CC54417B6522937ABB5041B0157A7AA5CC5441E4BC9EE479BB5041A49B3111A6CC54413EB5598379BB504188E3AD27A6CC5441333333B375BB50415C8FC295A8CC5441B81E851B6FBB5041295C8F52ACCC54415C8FC2D567BB504152B81E55B0CC54419A9999895DBB5041F6285C3FB6CC5441E17A140E5BBB5041295C8F32B7CC5441F39C04695ABB5041C6EDE120B7CC54414A74712D5ABB50418097801AB7CC54410000004057BB5041A4703DCAB6CC544185EB515855BB5041F6285CDFB5CC54417DE17AB452BB504136000050B3CC5441BC6666F649BB5041730AD783BACC544110903CDA43BB5041718A478CBFCC5441AE47E16A42BB5041AE47E1BAC0CC54416BD03A1F42BB5041C95B8DE3C0CC5441E6CCCC7C41BB5041F747E13AC1CC54412F10D49941BB50413A4E9A8EC1CC54413B13E0B041BB504129F112D1C1CC54415F5C8F2242BB50416FC2F518C3CC544147E15BEA44BB50419DBDE1E1C2CC5441EC51B84E49BB5041AE47E18AC2CC5441EC51B88E49BB50415C8FC285C2CC54417B14AEF74DBB50413D0AD7E3C0CC544114AE47B153BB504133333393C1CC5441333333735CBB5041F6285C6FC4CC54412DD159925CBB50413F875E48C4CC5441EC51B8CE5FBB5041B81E853BC0CC5441EC51B89E64BB5041713D0A57C1CC544167BCCA2C65BB50419D9F20EBC0CC5441545C8FD267BB50414FEB51E8BECC5441D8F528CC6BBB50415AC2F518BDCC5441285A837B6CBB50411BD79E5ABCCC5441333333836FBB50410AD7A310B9CC5441EFCAEC3D72BB5041352008CDB8CC54410DA470FD74BB504139C2F588B8CC5441AA547F2D75BB5041BCA67254B8CC544114AE47E175BB504100000090B7CC54410096EE6776BB5041F086D58BB5CC5441A051B8DE76BB5041A8E17AC4B3CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238731 - 393452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003C000000333333639CBB5041B81E854B8BCC544148E17A949CBB5041C3F528CC85CC544148E17AC4A1BB504185EB51E882CC5441CDCCCC4CA1BB5041AE47E1DA82CC544185EB51E899BB50410000001082CC5441666666368FBB50411F85EB9181CC54419A9999298EBB5041EC51B88E81CC544152B81E758DBB504152B81ED584CC5441333333338CBB5041EC51B8BE8ACC544114AE47918ABB5041C3F5280C90CC54410AD7A3C089BB5041CDCCCC6C92CC544148E17AC488BB50413D0AD71395CC5441CDCCCC3C87BB50415C8FC2E597CC5441295C8F3285BB50411F85EBD19ACC5441EC51B80E83BB5041CDCCCCAC9DCC54415C8FC27581BB5041000000609FCC5441000000407FBB50413D0AD783A1CC5441CDCCCC5C7CBB50418FC2F518A4CC54419A9999A97ABB5041C3F5286CA5CC5441333333B375BB50415C8FC295A8CC5441B81E851B6FBB5041295C8F52ACCC54415C8FC2D567BB504152B81E55B0CC54419A9999895DBB5041F6285C3FB6CC5441E17A140E5BBB5041295C8F32B7CC54410000004057BB5041A4703DCAB6CC544185EB515855BB5041F6285CDFB5CC544148E17AB452BB504100000050B3CC5441666666F649BB50413D0AD783BACC5441AE47E16A42BB5041AE47E1BAC0CC5441CDCCCC7C41BB5041AE47E13AC1CC5441295C8F2242BB50418FC2F518C3CC5441EC51B84E49BB5041AE47E18AC2CC5441EC51B88E49BB50415C8FC285C2CC54417B14AEF74DBB50413D0AD7E3C0CC544114AE47B153BB504133333393C1CC5441333333735CBB5041F6285C6FC4CC5441EC51B8CE5FBB5041B81E853BC0CC5441EC51B89E64BB5041713D0A57C1CC5441295C8FD267BB504185EB51E8BECC5441C3F528CC6BBB50418FC2F518BDCC5441333333836FBB50410AD7A310B9CC5441D7A370FD74BB50418FC2F588B8CC544114AE47E175BB504100000090B7CC5441EC51B8DE76BB504148E17AC4B3CC5441295C8FD278BB50410AD7A3C0B2CC544114AE47F17EBB5041B81E854BB3CC5441CDCCCCDC83BB50418FC2F598B0CC5441B81E855B89BB50415C8FC275AFCC5441B81E85EB8ABB5041AE47E14AAECC54417B14AEB78DBB5041A4703DAAA9CC5441C3F528EC8FBB5041D7A3704DA4CC54410000004090BB5041295C8F72A0CC54410AD7A37091BB50417B14AEF79DCC54413333331394BB50418FC2F5489CCC54419A9999D997BB5041A4703D6A9BCC54411F85EB019CBB50418FC2F5489BCC5441F6285C9F9DBB5041CDCCCC7C9ACC544133333323A1BB5041A4703DAA95CC54415C8FC2559DBB5041C3F528EC8FCC5441333333639CBB5041B81E854B8BCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000A051B8DE76BB5041A8E17AC4B3CC5441295C8FD278BB50410AD7A3C0B2CC544114AE47F17EBB5041B81E854BB3CC54417632BA8B7FBB5041763ED7F6B2CC544197CCCCDC83BB50415AC2F598B0CC54418D1E855B89BB5041478FC275AFCC5441A7606BAA8ABB50413AEC857BAECC5441B81E85EB8ABB5041AE47E14AAECC54413A14AEB78DBB50416E703DAAA9CC5441B8F528EC8FBB504181A3704DA4CC5441203AAAFA8FBB504149CDB3A2A3CC54410000004090BB5041295C8F72A0CC5441194229CC90BB50419A9C754E9FCC5441B4D6A37091BB50419B14AEF79DCC54417FBADD6092BB5041F1734A5E9DCC54413333331394BB50418FC2F5489CCC54414E28E11395BB50411702CE0D9CCC5441EF9999D997BB50416E703D6A9BCC5441020AF98E99BB5041805A905C9BCC54411F85EB019CBB50418FC2F5489BCC5441F6285C9F9DBB5041CDCCCC7C9ACC5441C24A58F69FBB5041FAA0014797CC544108333323A1BB5041AF703DAA95CC54413CD0E8089FBB5041F38F517D92CC54415C8FC2559DBB5041C3F528EC8FCC5441B28C43D19CBB504140BC0F658DCC5441083333639CBB5041831E854B8BCC54411DE17A949CBB5041CDF528CC85CC5441F0E07AC4A1BB50417BEB51E882CC5441BA824ABAA1BB504163002DE782CC5441C55ADB97A1BB504174104FE382CC5441A2CCCC4CA1BB50410448E1DA82CC5441B0EB51E899BB50413600001082CC5441666666368FBB50413F85EB9181CC54418E6B8B298EBB5041F430FA8E81CC544152B81E758DBB504152B81ED584CC54413804CA408DBB504161322BCB85CC5441B94973F18CBB504118C3248687CC5441A137CA8D8CBB5041380BC91489CC5441333333338CBB5041EC51B8BE8ACC544114AE47918ABB5041C3F5280C90CC54410AD7A3C089BB5041CDCCCC6C92CC544148E17AC488BB50413D0AD71395CC5441CDCCCC3C87BB50415C8FC2E597CC5441491F693E85BB5041B85BF1C09ACC5441295C8F3285BB50411F85EBD19ACC5441EC51B80E83BB5041CDCCCCAC9DCC54415C8FC27581BB5041000000609FCC54412A076C3381BB5041AF9F3CA09FCC54411C4D03D280BB50419493A015A0CC544185A2ADF57FBB5041A18FEAD3A0CC5441000000407FBB50413D0AD783A1CC5441CDCCCC5C7CBB50418FC2F518A4CC54419A9999A97ABB5041C3F5286CA5CC54417B6522937ABB5041B0157A7AA5CC5441E4BC9EE479BB5041A49B3111A6CC54413EB5598379BB504188E3AD27A6CC5441333333B375BB50415C8FC295A8CC5441B81E851B6FBB5041295C8F52ACCC54415C8FC2D567BB504152B81E55B0CC54419A9999895DBB5041F6285C3FB6CC5441E17A140E5BBB5041295C8F32B7CC5441F39C04695ABB5041C6EDE120B7CC54414A74712D5ABB50418097801AB7CC54410000004057BB5041A4703DCAB6CC544185EB515855BB5041F6285CDFB5CC54417DE17AB452BB504136000050B3CC5441BC6666F649BB5041730AD783BACC544110903CDA43BB5041718A478CBFCC5441AE47E16A42BB5041AE47E1BAC0CC54416BD03A1F42BB5041C95B8DE3C0CC5441E6CCCC7C41BB5041F747E13AC1CC54412F10D49941BB50413A4E9A8EC1CC54413B13E0B041BB504129F112D1C1CC54415F5C8F2242BB50416FC2F518C3CC544147E15BEA44BB50419DBDE1E1C2CC5441EC51B84E49BB5041AE47E18AC2CC5441EC51B88E49BB50415C8FC285C2CC54417B14AEF74DBB50413D0AD7E3C0CC544114AE47B153BB504133333393C1CC5441333333735CBB5041F6285C6FC4CC54412DD159925CBB50413F875E48C4CC5441EC51B8CE5FBB5041B81E853BC0CC5441EC51B89E64BB5041713D0A57C1CC544167BCCA2C65BB50419D9F20EBC0CC5441545C8FD267BB50414FEB51E8BECC5441D8F528CC6BBB50415AC2F518BDCC5441285A837B6CBB50411BD79E5ABCCC5441333333836FBB50410AD7A310B9CC5441EFCAEC3D72BB5041352008CDB8CC54410DA470FD74BB504139C2F588B8CC5441AA547F2D75BB5041BCA67254B8CC544114AE47E175BB504100000090B7CC54410096EE6776BB5041F086D58BB5CC5441A051B8DE76BB5041A8E17AC4B3CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149648 - 137244
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000080000008FC2F5D862D45041EC51B8CEC260544185EB51F850D4504114AE4741A26054413333336303D45041A4703DCAB06054413333334315D4504166666656D1605441C3F5285C16D45041B81E85DBD1605441B81E856B3CD45041A4703DBACA60544185EB517862D45041A4703D9AC36054418FC2F5D862D45041EC51B8CEC2605441
+</a>
+
+<b>
+010600000001000000010300000001000000070000003333336303D45041A4703DCAB06054411E68E82B05D450415EDED409B4605441BD8CA0D852D450411FA6DAABA56054418554F89851D45041E049CD65A3605441F0D2D96E51D4504113CF1B19A36054415B3B970151D4504198282952A26054413333336303D45041A4703DCAB0605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149648 - 335715
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000080000008FC2F5D862D45041EC51B8CEC260544185EB51F850D4504114AE4741A26054413333336303D45041A4703DCAB06054413333334315D4504166666656D1605441C3F5285C16D45041B81E85DBD1605441B81E856B3CD45041A4703DBACA60544185EB517862D45041A4703D9AC36054418FC2F5D862D45041EC51B8CEC2605441
+</a>
+
+<b>
+010600000001000000010300000001000000070000003333336303D45041A4703DCAB06054411E68E82B05D450415EDED409B4605441BD8CA0D852D450411FA6DAABA56054418554F89851D45041E049CD65A3605441F0D2D96E51D4504113CF1B19A36054415B3B970151D4504198282952A26054413333336303D45041A4703DCAB0605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238750 - 58142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C7F00BC5041295C8F3231CC5441E17A14FEFEBB5041F6285C0F2FCC5441B81E85CBFCBB5041000000B028CC5441F6285C8FFCBB5041713D0A472ACC54411F85EB51F8BB504148E17AE435CC5441D7A3708DF5BB504185EB51583CCC5441AE47E16AF2BB50417B14AEE743CC5441C3F5284CF0BB50410000008047CC544152B81E25EEBB5041D7A370AD49CC54415C8FC265ECBB50417B14AEE74BCC544100000070EBBB5041CDCCCCBC4DCC5441333333D3EABB5041AE47E1EA4ECC544114AE4741E9BB50416666666650CC544148E17A54E6BB5041D7A3705D52CC54418FC2F588E3BB5041E17A14CE53CC5441E17A14BEE0BB50418FC2F52855CC544148E17A34DDBB5041295C8F1255CC544148E17A74D8BB5041713D0AD754CC5441713D0AE7D8BB5041D7A370BD55CC544152B81EB5CFBB5041AE47E15A5ACC5441E17A145ECDBB504185EB51A85BCC5441EC51B8BECEBB5041A4703DFA5ECC544114AE47E1CEBB50411F85EB515FCC5441E17A148ED2BB50413D0AD7135FCC54413D0AD783D7BB504152B81E455DCC54417B14AE57DABB50410000005059CC5441F6285CCFDBBB50418FC2F53858CC54415C8FC295DDBB5041B81E85AB57CC5441666666D6E0BB50415C8FC22557CC544133333383E4BB50419A99992958CC544166666656EABB50410000008058CC544114AE4731ECBB5041333333B357CC544152B81E65EEBB5041C3F5284C55CC5441295C8F42F2BB504185EB51C852CC54410AD7A340F2BB504185EB515851CC54411F85EB41EFBB50418FC2F5D84FCC544166666666EDBB5041C3F5289C4ECC5441B81E85DBECBB5041F6285CCF4CCC5441CDCCCC0CEEBB5041A4703DEA4ACC5441AE47E18AF0BB50417B14AEF748CC544148E17A24F7BB5041A4703D0A46CC54415C8FC2B5FBBB504114AE47C145CC544166666616FEBB50419A9999C948CC54411F85EB5100BC5041D7A3709D49CC5441D7A370FD01BC5041F6285C5F49CC544114AE478102BC5041B81E85FB47CC54410000006003BC504185EB519843CC5441F6285CAF06BC50418FC2F5783CCC544152B81EA507BC50417B14AE6739CC544185EB516806BC5041A4703DEA36CC544152B81EB503BC5041D7A370DD34CC5441F6285C7F00BC5041295C8F3231CC5441
+</a>
+
+<b>
+010600000002000000010300000001000000520000000EFE673176BB504176E1F66848CC5441F205A99972BB5041377405664ECC54410F58E1F770BB5041D5E4EE2B51CC5441E278CA8BCEBB5041B434FD7854CC5441EB984749D3BB50419D9223A854CC544148E17A74D8BB5041713D0AD754CC544116C78133DABB50410FB9EBEC54CC54414055205ADFBB50414BCE272055CC5441027313B8E0BB5041D7BDCF2855CC5441E2824DE1E1BB50417129289554CC544116B88E94E6BB50416B674C2C52CC54419EE3954AE9BB504111F59C5D50CC5441D1CAD3B6E9BB50415A6567F74FCC54418E5F7EC5EABB50419DD0BCE84ECC5441577DED51ECBB50418B77890D4CCC54415C8FC265ECBB50417B14AEE74BCC544173800068ECBB50412F7DD2E44BCC5441F2E3C470ECBB5041BDD6A6D44BCC54417E7A5B6DEDBB504158A1AD974ACC544152B81E25EEBB5041D7A370AD49CC544113BB0E34EEBB50413437549E49CC544140BE0355EEBB50419C97F87449CC544105EDF0EDEEBB5041D95549E248CC5441E31EC7E3EFBB5041913298E947CC5441F1C12E3EF0BB5041D7C2238E47CC5441E39DFD39F2BB504183FBAD3044CC54416ED3DC7DF2BB5041CF5DE7B943CC5441105052A0F2BB5041A77FCE6643CC544199F2B5DFF2BB50412FD4F1CD42CC54418967DC30F3BB50415E757EDA41CC544182D9D943F3BB50415E757EDA41CC5441593C9182F3BB50415CFC374541CC5441D7A3708DF5BB504185EB51583CCC5441C2E01CDEF6BB504114BF5B4739CC5441DD48BFC0F7BB50414659EE2B37CC54412A521FD9F8BB504106C51B7234CC5441A47D0034FABB50419104DFBB30CC5441462B430FFBBB504111613B632ECC544131551E6DFCBB5041E1F021862ACC5441CCF047BCFCBB5041B6361B1729CC5441B81E85CBFCBB5041000000B028CC54415995AAC7F6BB50419F759CA427CC544117611F0FF0BB5041D2FA728B26CC54413D0AD793EDBB504114AE473126CC54412F4674CAEBBB5041C2811D0E26CC5441D04F4DC3E4BB50419B00C8B325CC54417C5FDD47CABB5041F8EF67C624CC544194C68BF3C2BB504179A2E34624CC54410AD7A3E0C2BB50415C8FC24524CC54415C74CFDEC2BB5041FEDF7A4524CC54414784E4A3C2BB504129D2794124CC5441F0025F19BABB50410771D2ED22CC544100000070B4BB50410000001022CC544186EBFF23B4BB50418502DF0022CC5441DFCDF25BB3BB50410A93CBE121CC54417793E560B0BB5041F51A274121CC5441AE47E12AB0BB50416666663621CC544161062927B0BB50410B69FF3421CC54412928ECD5AFBB5041501FE52321CC5441D0C45A19AEBB5041A755C66E20CC544152B81E15ACBB5041C3F528AC1FCC5441ACD7F7DCABBB5041BE8C94851FCC5441A11D76D4ABBB5041E9531D821FCC544136F08069ABBB504182CB3F361FCC5441BBECAE14AABB504147C2154C1ECC5441D8823398A8BB504113B9AB461DCC54413401F1AAA1BB5041DD3C9FDE21CC54414537A175A1BB5041E5F4AD0222CC54417A95F4BC9ABB50411CFD239B26CC5441AD87521C97BB5041F8B8363229CC54410466B86D93BB504162E342D32BCC5441B14D0C748DBB5041DC0DE11F30CC5441DC8F05C88BBB5041EA9F1E4931CC5441295C8F328BBB50413D0AD7B331CC544123DA04FD85BB5041DC500A1B36CC5441700D75DB82BB5041EF1E3A2739CC544151F9C20280BB50417BAA37053CCC5441ABC0CFCB7BBB50419A9D321541CC54418FC2F5E87ABB50417B14AE2742CC5441622AD90678BB504150A89AF845CC5441B85A846277BB5041990252DC46CC54410EFE673176BB504176E1F66848CC54410103000000010000000600000050BC91F4E0BB5041C22F850E55CC54417B192D28E1BB5041B5A87AF554CC5441DC055ED8E5BB5041A832629D52CC54415E0AA8F2E5BB5041B2DAD68F52CC5441E2824DE1E1BB50417129289554CC544150BC91F4E0BB5041C22F850E55CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238750 - 178157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C7F00BC5041295C8F3231CC5441E17A14FEFEBB5041F6285C0F2FCC5441B81E85CBFCBB5041000000B028CC5441F6285C8FFCBB5041713D0A472ACC54411F85EB51F8BB504148E17AE435CC5441D7A3708DF5BB504185EB51583CCC5441AE47E16AF2BB50417B14AEE743CC5441C3F5284CF0BB50410000008047CC544152B81E25EEBB5041D7A370AD49CC54415C8FC265ECBB50417B14AEE74BCC544100000070EBBB5041CDCCCCBC4DCC5441333333D3EABB5041AE47E1EA4ECC544114AE4741E9BB50416666666650CC544148E17A54E6BB5041D7A3705D52CC54418FC2F588E3BB5041E17A14CE53CC5441E17A14BEE0BB50418FC2F52855CC544148E17A34DDBB5041295C8F1255CC544148E17A74D8BB5041713D0AD754CC5441713D0AE7D8BB5041D7A370BD55CC544152B81EB5CFBB5041AE47E15A5ACC5441E17A145ECDBB504185EB51A85BCC5441EC51B8BECEBB5041A4703DFA5ECC544114AE47E1CEBB50411F85EB515FCC5441E17A148ED2BB50413D0AD7135FCC54413D0AD783D7BB504152B81E455DCC54417B14AE57DABB50410000005059CC5441F6285CCFDBBB50418FC2F53858CC54415C8FC295DDBB5041B81E85AB57CC5441666666D6E0BB50415C8FC22557CC544133333383E4BB50419A99992958CC544166666656EABB50410000008058CC544114AE4731ECBB5041333333B357CC544152B81E65EEBB5041C3F5284C55CC5441295C8F42F2BB504185EB51C852CC54410AD7A340F2BB504185EB515851CC54411F85EB41EFBB50418FC2F5D84FCC544166666666EDBB5041C3F5289C4ECC5441B81E85DBECBB5041F6285CCF4CCC5441CDCCCC0CEEBB5041A4703DEA4ACC5441AE47E18AF0BB50417B14AEF748CC544148E17A24F7BB5041A4703D0A46CC54415C8FC2B5FBBB504114AE47C145CC544166666616FEBB50419A9999C948CC54411F85EB5100BC5041D7A3709D49CC5441D7A370FD01BC5041F6285C5F49CC544114AE478102BC5041B81E85FB47CC54410000006003BC504185EB519843CC5441F6285CAF06BC50418FC2F5783CCC544152B81EA507BC50417B14AE6739CC544185EB516806BC5041A4703DEA36CC544152B81EB503BC5041D7A370DD34CC5441F6285C7F00BC5041295C8F3231CC5441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000B57313B8E0BB5041DCBDCF2855CC5441CAA010D3DFBB5041B29B252355CC544148E17A34DDBB5041295C8F1255CC54418598693EDCBB50412801840655CC54414063AD7CD8BB5041D1B386E754CC5441713D0AE7D8BB5041D7A370BD55CC544152B81EB5CFBB5041AE47E15A5ACC5441497CB0FACDBB504112C025515BCC5441EC7A145ECDBB50419BEB51A85BCC54411BEABD66CEBB504121C332265ECC54410B10A213DABB5041B7A0105D57CC54411952875FDCBB5041235C949056CC54414BFA26DEDFBB5041003B562A56CC5441A754610FE2BB50419EC22CEB55CC54411C2BACD2E2BB504163C527DE55CC54418C71FA3AE6BB5041C5B4452C56CC54414BC0397CE9BB504102FAC8E654CC544195146FA3ECBB50416A9DA2E651CC5441479B3C59ECBB50417C73A6464FCC5441D766483FEDBB5041A64049AD4ECC544118666666EDBB5041BFF4289C4ECC5441B81E85DBECBB5041F6285CCF4CCC54412DB84B79EDBB50418884A3D44BCC5441E1CBCC0CEEBB5041A4703DEA4ACC54415ACCC749EFBB50419BB791F249CC5441AE47E18AF0BB50417B14AEF748CC54410558C2A6F0BB5041125C50EB48CC5441CC0CBABCF3BB50419C8CE6FD44CC5441EE921BD5F6BB5041879E9CB143CC5441FC3924D3FBBB50412D384BFE43CC5441ACF37905FEBB50419C8CE6FD44CC544187481505FFBB504172BF439745CC5441CE79DB1D01BC50415F7BC7CA44CC54410D35C8D001BC504190F4CE3143CC54412323121D03BC5041EFF793B33ECC544189217B9C04BC5041948251CE3BCC5441F7CB481C05BC504187EA39023ACC5441F2A90AB604BC5041390D0FE938CC5441F9556FB603BC50419A1FC59C37CC544165F14B0401BC5041E7EDFE8335CC5441B115B86BFEBB50413B689D6B32CC5441B3BF85EBFEBB504168488D062FCC5441A81E85CBFCBB50416D0000B028CC5441F6285C8FFCBB5041713D0A472ACC5441952E430FFBBB504102583B632ECC5441407E0034FABB50417D04DFBB30CC544109226D7FF9BB50419FA189AA32CC54411F85EB51F8BB504148E17AE435CC544175E81CDEF6BB504121AD5B4739CC544117A4708DF5BB504185EB51583CCC5441B43C9182F3BB504125FC374541CC5441AE47E16AF2BB50417B14AEE743CC5441C3F5284CF0BB50410000008047CC54414AC42E3EF0BB504177C0238E47CC5441EA25F8F9EFBB5041383025D347CC54411B31E831EEBB5041162681A049CC544129B91E25EEBB5041EDA370AD49CC5441447A5B6DEDBB5041DAA1AD974ACC5441B8800068ECBB5041D87CD2E44BCC5441CBCEEC66ECBB5041FAE831E64BCC54415C8FC265ECBB50417B14AEE74BCC544100000070EBBB5041CDCCCCBC4DCC5441333333D3EABB5041AE47E1EA4ECC544114AE4741E9BB50416666666650CC544148E17A54E6BB5041D7A3705D52CC54418FC2F588E3BB5041E17A14CE53CC5441E17A14BEE0BB50418FC2F52855CC5441B57313B8E0BB5041DCBDCF2855CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630446 - 4107510
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003F000000B5E880C00D075141ECFC31DD042255417AF08D4A0E0751413B9D2025042255412D2EBE800F075141A2F58A87022255414BB40EA50F075141EA798E4602225541D59915F60F075141FC458EB501225541131DF0A610075141913D8757002255412E45C1F710075141096493B7FF2155412AE8139511075141F0933A7DFE215541DB3A342F12075141050300FCFC215541A9B5218012075141AFFDB931FC215541272DCC031307514103D3A2E8FA2155414AE12B93130751410915E65BF92155414FBCE3E313075141620B8A7CF821554137EFC05D14075141FF067344F62155419A999989140751415C8FC285F52155419A9999490F0751410AD7A330F421554148E17AC407075141AE47E1DAF1215541E17A149EFE065141D7A3708DEE21554166666636F606514148E17A14EB215541666666F6EC06514114AE47B1E72155419A9999C9E70651411F85EBA1E5215541004C9A8EE7065141B0A9C336E6215541FA4FD5A7E80651414A3BC2A7E62155412719A835EA06514143359947E7215541DEDA8647EC06514117237E1CE82155416990E1A1ED065141AEDD9FA2E82155414F9F0DECEE0651417CEA521FE92155411B1C1059F00651415B472EA9E92155410AE0868EF1065141E1220F1EEA2155419072DD91F2065141D1870180EA2155411EBA7E80F306514178BB21DAEA2155418ECEF5A9F4065141B9797A4AEB2155413C49C15DF5065141C722628EEB2155419AAABEE7F5065141FAC83CCAEB2155419034A00CF506514119346E09EF215541341EB91CF40651414F927697F22155417CEC8322F306514185FD325FF6215541BC423C53F20651417CB3978AF92155418B7F40A4F1065141DADE8F37FC215541E5092B3BF10651413A9F88BCFD215541EFF4B983F0065141C0D31D5700225541E11CC108F00651413698F715022255410CD1289FEF065141886AAC9503225541ABCD2934EF0651417BBA781A05225541D90E9E31EF0651417303B923052255416866DF84F10651419F00BD58062255417D0F9812F7065141C7296BE508225541CCC18B5EFA06514120DAF3650A2255415B8B90A2FD065141748CE3DB0B22554146C48396FF0651419414ACB80C2255415670947E0107514141FD34900D22554112E0618A020751417DB078060E225541E37E5D2A03075141EC4292450E22554153539E3D04075141520BA2800D225541B21C4DEB050751417B0C344D0C225541BA8EE719080751418E9388BD0A22554151BAA8930A075141872B18F808225541FD9BE12B0C075141FBF404D407225541299B69860C0751415FE28372072255410523DACF0C0751412F683DB806225541B0D7D7470D07514156B1E38705225541000000500D0751413333337305225541B5E880C00D075141ECFC31DD04225541
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007ED6E9FD0D07514139199586062255411B2FDD6411075141EC51B83E04225541333333D3180751410C022B77FF215541666666862807514166666696F62155418FC2F55824075141B81E859BEE215541885A7DE821075141C12A0B0FEA21554122FA2BB02007514126B5A6C8E7215541E17A14EE1F075141EC51B85EE6215541B81E856B1E075141666666E6DC215541F6285C3F170751413D0AD7E3DD215541A4703D8A0E0751411F85EB41DF21554114AE47810E075141B81E85CBE02155419A99998907075141D7A370BDE2215541333333A300075141000000B0E42155410AD7A300FB06514152B81EA5E52155418FC2F5A8FA065141E17A142EE72155418FC2F568ED0651418FC2F578E5215541D06D7399EC06514115AC478CE721554188B63F6EE7065141B73B927CE521554181F8EB3EE706514122E8BF16E62155412419A835EA06514146359947E721554114AE47D1EC0651413D0AD753E82155419A9999E9F5065141333333C3EB2155412B3ABE2CF50651415345998FEE215541951F040D0207514183DE1D2AF3215541A08FD8841307514175C3A88CF92155412A2DCC0313075141FED2A2E8FA215541A8B5218012075141B2FDB931FC215541DB3A342F12075141050300FCFC2155412AE8139511075141F0933A7DFE2155417ED6E9FD0D0751413919958606225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152291 - 5223098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000005000000295C8F122360514148E17A94EBA35441F6285CAFF55F51410AD7A3E002A4544152B81E05F95F51415C8FC2250CA4544152B81EC525605141AE47E10AF5A35441295C8F122360514148E17A94EBA35441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D7AB7AC825605141284F5903F5A3544177DED34A23605141AA22DC59ECA354416FFDF2262360514111B400DCEBA35441F154671A236051417399FEAFEBA35441495621A1F55F51413EEBF6B802A454417AB8AFBBF55F51411429B90203A45441287860E7F55F51419A5B127C03A45441230A9CFAF85F5141325394060CA454413D90FCFCFC5F5141E54941190AA4544172725191006051410E2A244008A45441E12469B107605141FFBD569204A45441B8D8C97512605141D6822F03FFA35441D7AB7AC825605141284F5903F5A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152737 - 3143318
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000005C8FC275705751419A99990955B3544114AE47D1715751415C8FC2A551B35441AE47E1EA73575141C3F5284C50B3544148E17AC475575141B81E857B4EB3544152B81E85765751418FC2F5284EB35441B81E857B7657514152B81E6546B35441E17A142E5E57514185EB51A83DB35441333333C35957514152B81E453CB354413D0AD7434E575141C3F528BC39B35441AE47E10A495751419A9999594EB35441F6285C4F57575141C3F528EC53B354413D0AD7636D5751410AD7A3605CB35441CDCCCC6C6F575141F6285CBF5AB354415C8FC275705751419A99990955B35441
+</a>
+
+<b>
+010600000001000000010300000001000000240000003B73CD374B5751415C4F3CC345B35441E73E64624B575141D13B1F1B45B35441DCE7116C4B5751412E0FEBF444B35441E415AE4B4C57514144A2408241B354411B0638594C575141B862CF4C41B354415AD933894C57514158E9668F40B354419537A1DC4C5751419C0C16463FB354413E8AF7104D57514127457E773EB35441B1C8BB2B4D575141881CD60D3EB354412174C9854D575141565D5DAA3CB35441AD56BA914D5751415DCA3A7B3CB3544175DE1EAE4D5751410068270B3CB35441FEB922DA4D575141174E695D3BB354411218D5034E575141B0E9D1B83AB35441F1761E3E4E5751414524BED239B3544118E9160D4E5751417A4C3EB039B354415D32C77B4D575141A853369039B3544168C178264D575141CD74687D39B354414F2FFE7E4C575141D4917D5839B354417349E66A4C5751413603D49539B354417349E66A4C575141E2CB8DC239B354417349E66A4C5751418E9447EF39B354413AB1FD5B4C57514120BEA3573AB35441E11F8A024C575141496B89AE3BB3544169958B5E4B575141531FE4BA3CB354419ED346E74A57514177729C8B3DB354417FDABB9C4A575141612D6C4D3EB35441B872A4AB4A5751418580241E3FB35441B872A4AB4A575141569C961B40B35441B872A4AB4A575141ED1F200A41B35441B872A4AB4A575141BD3B920742B35441B872A4AB4A575141C7EFEC1343B354410CAAEA7E4A57514143D4183E44B354414542D38D4A575141F9502D7745B3544169E38BE44A575141F740E00B47B354413B73CD374B5751415C4F3CC345B35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152737 - 3521027
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000005C8FC275705751419A99990955B3544114AE47D1715751415C8FC2A551B35441AE47E1EA73575141C3F5284C50B3544148E17AC475575141B81E857B4EB3544152B81E85765751418FC2F5284EB35441B81E857B7657514152B81E6546B35441E17A142E5E57514185EB51A83DB35441333333C35957514152B81E453CB354413D0AD7434E575141C3F528BC39B35441AE47E10A495751419A9999594EB35441F6285C4F57575141C3F528EC53B354413D0AD7636D5751410AD7A3605CB35441CDCCCC6C6F575141F6285CBF5AB354415C8FC275705751419A99990955B35441
+</a>
+
+<b>
+010600000001000000010300000001000000240000003B73CD374B5751415C4F3CC345B35441E73E64624B575141D13B1F1B45B35441DCE7116C4B5751412E0FEBF444B35441E415AE4B4C57514144A2408241B354411B0638594C575141B862CF4C41B354415AD933894C57514158E9668F40B354419537A1DC4C5751419C0C16463FB354413E8AF7104D57514127457E773EB35441B1C8BB2B4D575141881CD60D3EB354412174C9854D575141565D5DAA3CB35441AD56BA914D5751415DCA3A7B3CB3544175DE1EAE4D5751410068270B3CB35441FEB922DA4D575141174E695D3BB354411218D5034E575141B0E9D1B83AB35441F1761E3E4E5751414524BED239B3544118E9160D4E5751417A4C3EB039B354415D32C77B4D575141A853369039B3544168C178264D575141CD74687D39B354414F2FFE7E4C575141D4917D5839B354417349E66A4C5751413603D49539B354417349E66A4C575141E2CB8DC239B354417349E66A4C5751418E9447EF39B354413AB1FD5B4C57514120BEA3573AB35441E11F8A024C575141496B89AE3BB3544169958B5E4B575141531FE4BA3CB354419ED346E74A57514177729C8B3DB354417FDABB9C4A575141612D6C4D3EB35441B872A4AB4A5751418580241E3FB35441B872A4AB4A575141569C961B40B35441B872A4AB4A575141ED1F200A41B35441B872A4AB4A575141BD3B920742B35441B872A4AB4A575141C7EFEC1343B354410CAAEA7E4A57514143D4183E44B354414542D38D4A575141F9502D7745B3544169E38BE44A575141F740E00B47B354413B73CD374B5751415C4F3CC345B35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152875 - 4020575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001F000000A4703DCAE9555141F6285C1FB9B354419A9999C9F55551417B14AED7C3B35441B81E85ABFB55514114AE47C1C0B354418FC2F59806565141EC51B8FEBAB35441EC51B8AE1256514185EB51A8B4B354410AD7A3A019565141713D0AE7B0B354419A9999C91C565141AE47E12AAFB35441D7A3704D1F5651418FC2F5C8ADB35441F6285C3F3156514114AE4701A5B354417B14AE273256514100000090A4B354411F85EBB13F565141B81E85CB9DB35441295C8FB248565141B81E857B99B354415C8FC2554A56514114AE472199B35441EC51B8CE44565141AE47E19A90B35441EC51B86E3E565141E17A149E86B354411F85EBF1435651415C8FC21583B354410AD7A3E049565141295C8FA27EB354411F85EBB14D565141AE47E1AA7BB354415C8FC2754F565141CDCCCC1C7AB35441C3F528DC44565141A4703D4A70B35441E17A148E2E565141EC51B85E5BB35441D7A3703D27565141F6285CCF65B35441AE47E11A1F565141000000C070B35441B81E85CB1D565141CDCCCCFC73B354410AD7A3C01C565141333333F377B354415C8FC2A5195651419A99998982B3544133333373095651411F85EB718CB3544166666656FD5551410AD7A32093B354417B14AE07F7555141713D0A5797B35441295C8F52DF55514185EB51B8ACB35441A4703DCAE9555141F6285C1FB9B35441
+</a>
+
+<b>
+010600000001000000010300000001000000180000001567259FE2555141AFD6A6BEA9B35441295C8F52DF55514185EB51B8ACB35441A4703DCAE9555141F6285C1FB9B354419A9999C9F55551417B14AED7C3B35441B81E85ABFB55514114AE47C1C0B354418FC2F59806565141EC51B8FEBAB35441EC51B8AE1256514185EB51A8B4B354410AD7A3A019565141713D0AE7B0B354419A9999C91C565141AE47E12AAFB35441D7A3704D1F5651418FC2F5C8ADB3544135121BDD2B565141394E9FA3A7B354413D667BA52C56514192689541A7B35441DA1362D531565141E1D320B8A4B354415D17457919565141CC2DD0A482B354412955358218565141A5D6EE3B83B35441F33BCF8514565141B72814AC85B354419EF9C9D513565141DEB5BE1786B3544133333373095651411F85EB718CB354419B5C3C4F055651419788B4BA8EB35441F6285C4F05565141AE47E1BA8EB3544166666656FD5551410AD7A32093B354417B14AE07F7555141713D0A5797B35441F6285C9FE2555141EC51B8BEA9B354411567259FE2555141AFD6A6BEA9B35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238919 - 2964541
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81E750BBE5041C3F5288CF4D554411F85EBE10ABE504166666666F2D5544148E17AA40ABE504100000080F1D55441E17A146E08BE50410AD7A3C0F2D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D65441666666B603BE50410AD7A37008D654417B14AED701BE5041A4703DDA07D65441AE47E16AFEBD50415C8FC2D50ED6544133333363FABD5041333333C317D65441333333F3FFBD5041713D0A3719D65441B81E85AB00BE5041713D0A6719D65441F6285CDF02BE50417B14AE071AD65441D7A3700D17BE5041AE47E1DA1FD65441D7A370CD17BE5041A4703D7A1AD6544148E17A1418BE5041B81E857B18D65441295C8FA21ABE50417B14AEC70AD65441D7A3705D1DBE5041E17A144E08D654419A9999991FBE5041D7A370ED06D654410AD7A3B021BE50413D0AD73306D654413D0AD77323BE504152B81E0506D65441295C8FA229BE5041F6285CBF07D65441D7A370FD2BBE504148E17AE402D65441295C8F522EBE504166666686FBD55441C3F5288C2CBE5041C3F5288CFAD55441AE47E1CA33BE50418FC2F5B8E9D55441EC51B8FE39BE5041F6285CAFD8D5544185EB512833BE5041E17A145ED1D554410AD7A31031BE504152B81E45D9D554419A9999F92EBE50410AD7A350DFD55441713D0A9727BE50410AD7A350ECD55441713D0A1720BE5041EC51B83EF8D55441AE47E1DA16BE5041E17A147E06D654415C8FC22516BE5041B81E85BB05D654413D0AD70312BE5041B81E853B01D65441C3F528AC0FBE5041D7A3707DFED55441295C8FB20DBE504152B81E45FBD5544152B81E750BBE5041C3F5288CF4D55441
+</a>
+
+<b>
+010600000001000000010300000001000000310000009A9999F92EBE50410AD7A350DFD554412AF41B502ABE5041C4599285E7D55441713D0A9727BE50410AD7A350ECD55441713D0A1720BE5041EC51B83EF8D55441A245B6D519BE5041044034E501D654414D982B7316BE50419239942407D6544160E5D06211BE504148E17A1C01D6544191ED7C170EBE504119045646FCD55441D122DBC90CBE5041E9263118F9D554411B876FE80ABE504138A2ED88F1D55441D9F6D7E404BE5041B45F0EC5F3D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D654419B14CE2807BE5041607EDF6109D654415FE2A09A04BE5041458C08AF08D65441666666B603BE50410AD7A37008D654412CEA502E02BE5041B16375F507D65441F853E3B5FEBD504148E17AF40ED65441C4068BA9FABD5041C9019C7418D6544117D9CE9FFABD50416ABC748B18D65441178A2CB6FBBD50416DA23FD318D65441BC749338FEBD5041736891B519D654415EBA491C00BE5041AAF1D2351AD65441EE7C3FA508BE504114AE47C11AD65441E781FA0A09BE504139471DC01AD654418961053F0CBE504104E2B7B61AD65441D4A5D68710BE50415E2209C31AD654413BDF4FB517BE5041295C8F121BD6544167AB70D817BE50418878282B1AD6544148E17A1418BE5041B81E857B18D65441D17A55D818BE5041E6AA7D9513D654413918C15419BE5041C347E36110D65441888E32F519BE5041B3C9A9390CD65441273108741ABE5041190456EE08D654413F355EF222BE5041B07268B105D65441D3680EA423BE504111AD971206D654412A1E4FDE25BE50419F63EEB106D65441E5D0223B29BE5041713D0A9F00D65441822C39B52BBE5041D27FC935FAD554414AA367FD31BE5041E27918DEEBD55441E17A14D635BE5041FCA9F1E2E2D554417799DFF339BE50418EA1089FD8D554415A81632733BE50417ADF9861D1D55441BD30B06232BE5041A3E67348D4D55441F853E30D32BE50417D3F35F6D5D55441BF81DAA031BE5041294F7C24D7D554410AD7A31031BE504152B81E45D9D554419A9999F92EBE50410AD7A350DFD55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238919 - 3454429
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81E750BBE5041C3F5288CF4D554411F85EBE10ABE504166666666F2D5544148E17AA40ABE504100000080F1D55441E17A146E08BE50410AD7A3C0F2D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D65441666666B603BE50410AD7A37008D654417B14AED701BE5041A4703DDA07D65441AE47E16AFEBD50415C8FC2D50ED6544133333363FABD5041333333C317D65441333333F3FFBD5041713D0A3719D65441B81E85AB00BE5041713D0A6719D65441F6285CDF02BE50417B14AE071AD65441D7A3700D17BE5041AE47E1DA1FD65441D7A370CD17BE5041A4703D7A1AD6544148E17A1418BE5041B81E857B18D65441295C8FA21ABE50417B14AEC70AD65441D7A3705D1DBE5041E17A144E08D654419A9999991FBE5041D7A370ED06D654410AD7A3B021BE50413D0AD73306D654413D0AD77323BE504152B81E0506D65441295C8FA229BE5041F6285CBF07D65441D7A370FD2BBE504148E17AE402D65441295C8F522EBE504166666686FBD55441C3F5288C2CBE5041C3F5288CFAD55441AE47E1CA33BE50418FC2F5B8E9D55441EC51B8FE39BE5041F6285CAFD8D5544185EB512833BE5041E17A145ED1D554410AD7A31031BE504152B81E45D9D554419A9999F92EBE50410AD7A350DFD55441713D0A9727BE50410AD7A350ECD55441713D0A1720BE5041EC51B83EF8D55441AE47E1DA16BE5041E17A147E06D654415C8FC22516BE5041B81E85BB05D654413D0AD70312BE5041B81E853B01D65441C3F528AC0FBE5041D7A3707DFED55441295C8FB20DBE504152B81E45FBD5544152B81E750BBE5041C3F5288CF4D55441
+</a>
+
+<b>
+010600000001000000010300000001000000310000009A9999F92EBE50410AD7A350DFD554412AF41B502ABE5041C4599285E7D55441713D0A9727BE50410AD7A350ECD55441713D0A1720BE5041EC51B83EF8D55441A245B6D519BE5041044034E501D654414D982B7316BE50419239942407D6544160E5D06211BE504148E17A1C01D6544191ED7C170EBE504119045646FCD55441D122DBC90CBE5041E9263118F9D554411B876FE80ABE504138A2ED88F1D55441D9F6D7E404BE5041B45F0EC5F3D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D654419B14CE2807BE5041607EDF6109D654415FE2A09A04BE5041458C08AF08D65441666666B603BE50410AD7A37008D654412CEA502E02BE5041B16375F507D65441F853E3B5FEBD504148E17AF40ED65441C4068BA9FABD5041C9019C7418D6544117D9CE9FFABD50416ABC748B18D65441178A2CB6FBBD50416DA23FD318D65441BC749338FEBD5041736891B519D654415EBA491C00BE5041AAF1D2351AD65441EE7C3FA508BE504114AE47C11AD65441E781FA0A09BE504139471DC01AD654418961053F0CBE504104E2B7B61AD65441D4A5D68710BE50415E2209C31AD654413BDF4FB517BE5041295C8F121BD6544167AB70D817BE50418878282B1AD6544148E17A1418BE5041B81E857B18D65441D17A55D818BE5041E6AA7D9513D654413918C15419BE5041C347E36110D65441888E32F519BE5041B3C9A9390CD65441273108741ABE5041190456EE08D654413F355EF222BE5041B07268B105D65441D3680EA423BE504111AD971206D654412A1E4FDE25BE50419F63EEB106D65441E5D0223B29BE5041713D0A9F00D65441822C39B52BBE5041D27FC935FAD554414AA367FD31BE5041E27918DEEBD55441E17A14D635BE5041FCA9F1E2E2D554417799DFF339BE50418EA1089FD8D554415A81632733BE50417ADF9861D1D55441BD30B06232BE5041A3E67348D4D55441F853E30D32BE50417D3F35F6D5D55441BF81DAA031BE5041294F7C24D7D554410AD7A31031BE504152B81E45D9D554419A9999F92EBE50410AD7A350DFD55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>153318 - 55506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003D000000C3F5282CFA6451413D0AD7337CB0544148E17A74FA6451418FC2F52877B05441CDCCCC7CFB645141CDCCCC4C70B05441EC51B8FEFC645141D7A370FD6AB05441F6285CEFFE645141E17A142E66B054418FC2F59800655141EC51B89E62B054417B14AE170465514114AE47315EB0544185EB5168FE645141E17A145E5AB05441EC51B80EFE6451411F85EB215AB05441666666A6FD64514148E17A545DB0544100000090FD645141EC51B8AE5FB054415C8FC235FD6451419A9999A961B05441A4703D7AFC6451416666661663B054419A999929FB6451415C8FC2D565B05441C3F5286CF964514185EB51486AB05441713D0A57F8645141F6285C0F6CB0544152B81EC5F7645141E17A148E6EB0544152B81E85F76451413D0AD76370B054410AD7A380F7645141EC51B86E73B05441AE47E19AF6645141E17A14FE73B05441EC51B8EEF4645141EC51B87E72B05441B81E85EBF3645141A4703DCA70B05441AE47E1FAF264514185EB51D86EB05441A4703DDAF26451415C8FC2856CB05441B81E85ABF3645141333333536AB05441EC51B8EEF4645141A4703DBA68B05441295C8F22F76451417B14AEF766B05441666666D6F7645141C3F528BC65B05441A4703D1AF86451413333335364B0544185EB5128F964514148E17AD462B054413D0AD763FA645141EC51B8FE60B05441333333E3FA6451415C8FC2655EB054413D0AD723FB645141295C8F925BB054413D0AD783FB645141EC51B84E58B0544152B81E55FC645141666666A650B0544148E17AF4FB645141000000304BB054413D0AD713FB645141B81E850B47B054411F85EBB1F96451417B14AE7743B05441F6285C0FF764514148E17A8440B05441E17A145EF3645141CDCCCCBC3EB05441EC51B8CEF0645141EC51B8CE3EB05441295C8F62ED64514185EB51983DB05441AE47E1FAEB6451418FC2F5183DB05441A4703D8AE4645141F6285C4F3BB054419A9999B9E46451418FC2F5183CB054417B14AE27E6645141AE47E10A41B0544185EB51D8E964514148E17A4444B05441B81E851BEC64514152B81E0547B0544185EB51F8ED645141000000304DB0544114AE4721EE645141E17A14BE54B0544185EB5108EE645141B81E855B59B054418FC2F5D8ED645141EC51B82E62B05441B81E859BED645141AE47E1AA6DB05441295C8F82ED6451416666665672B054418FC2F558EF645141E17A146E73B054418FC2F508F2645141C3F528FC74B05441CDCCCCCCF3645141AE47E1EA76B054418FC2F578F4645141666666A679B0544100000030F5645141333333237DB054410AD7A330FA645141295C8F027DB05441C3F5282CFA6451413D0AD7337CB05441
+</a>
+
+<b>
+010600000001000000010300000001000000900000002BF681A3FA6451415354D6E845B0544115649048F9645141C6B2BA0143B054414EFD1FF9F8645141A630CBA842B05441CC494FE4F8645141AF787D9142B054411CBCF090F8645141F787273442B05441ED5C8FE6F764514139F0677541B05441D5AC15C2F7645141FDFA914C41B054413E5ACE95F6645141F148E24940B05441923D2EA3F564514161A1ECD43FB054412B52F96FF46451413233D5403FB0544195C6ED53F4645141BB3D50333FB05441E17A145EF3645141CDCCCCBC3EB054410BBB7209F36451410C391DBF3EB05441373A6FD6F0645141925182CE3EB05441EC51B8CEF0645141EC51B8CE3EB054415B6DBF96EF645141595432603EB0544127CCF494EF645141A112945F3EB054411162C0E7ED645141CA9481C73DB0544138FCF022EA645141E2FE92A73CB054419D3993F1E9645141AFB4B69B3CB0544110B76DC5E964514110751B913CB054413F01321FE8645141BFD7A92B3CB05441BBBF988DE76451411DBEAE083CB054416399F628E7645141653F81F03BB05441FE020F04E6645141A10922AA3BB05441C593FD81E56451416426E28A3BB05441CC2B36A2E464514141BB66B53BB05441B2F3F665E6645141BCD6504141B05441A82A5D26E7645141B83878E941B05441AF64AC7EE7645141F091A63642B054412A7E9E8CE8645141692D942243B0544185EB51D8E964514148E17A4444B0544170FA72FEE964514178EFDD7244B05441D60A82B3EA6451414576234F45B05441B81E851BEC64514152B81E0547B0544185EB51F8ED645141000000304DB05441A72CEF0DEE645141945B992C51B054411C89C511EE6451412B39CBE151B0544114AE4721EE645141E17A14BE54B0544165F22221EE6451419B2EDFC454B05441F570EA04EE645141178583035AB05441B67BC3E8ED6451413A24DC3E5FB05441691607D9ED6451413BF57F2B62B054412C399DCCED645141262B857D64B05441B8F1CEC9ED64514116D1C90365B0544112B2DDB7ED645141FAE6675E68B05441B9BFF7A0ED645141B4792EA66CB054417BF20F9BED645141F913EAC06DB05441FCE9588DED645141C32E2A5570B054414EA793D7ED645141EE87F28872B054418262B659EE645141A91052D672B054414F3A36D0EE645141547AC61C73B0544116A58EF7EF6451414057D8C973B05441C2F8EADAF064514193A2654D74B05441A263481FF16451416009F47474B054418FC2F508F2645141C3F528FC74B054416DB35314F3645141957AE62076B05441CDCCCCCCF3645141AE47E1EA76B0544162B540EBF3645141A3979D6677B054418FC2F578F4645141666666A679B05441C76D33B5F4645141197A3BCC7AB054413312FDE2F4645141B83891AB7BB0544100000030F5645141333333237DB054416CEBC0B7F56451418471BD1F7DB05441B134DF46F664514150A2171C7DB0544164E5CA15F8645141BA324B107DB0544187E547E8F86451413CD1ED0A7DB05441E1B8B981F9645141A1A104077DB0544156DC522FFA645141022CD2C57CB05441C3F5282CFA6451413D0AD7337CB0544148E17A74FA6451418FC2F52877B05441CDCCCC7CFB645141CDCCCC4C70B0544142AEF39EFB6451413FFB80D46FB05441C6349A3BFC6451411A53B8AC6DB05441EC51B8FEFC645141D7A370FD6AB0544118056FD0FD64514120D57AF568B0544121C4F1A5FE6451418FF31AE466B05441F6285CEFFE645141E17A142E66B054418FC2F59800655141EC51B89E62B054417B14AE170465514114AE47315EB0544185EB5168FE645141E17A145E5AB05441BA6C3A3AFE64514134F6213F5AB05441BBC92EECFD6451417AB6EB305BB05441635E2DE2FD64514128366E7F5BB054415F4463B7FD6451418EF22ECF5CB05441F64E999DFD64514120DB1A415EB05441C4D31198FD6451417C14C3D55EB0544100000090FD645141EC51B8AE5FB054415C8FC235FD6451419A9999A961B05441295BFFE8FC64514190E7EE3E62B05441DC0B1419FC64514106B767E163B0544127D68070FB6451415A359E4165B054417A8630EBFA6451418E83487566B054411466183EFA6451415ED6B72F68B054411B30D1D8F9645141ACAE963269B05441C3F5286CF964514185EB51486AB05441B5E6A4C1F86451410F0350606BB054413C7FD81EF8645141535555056DB054415F1ABDF7F7645141072383B06DB0544126FBAC98F76451417D154DD46FB054411EB0F283F764514129C1992F71B05441DAD35B83F7645141F3E90D9671B054410AD7A380F7645141EC51B86E73B0544172857CFCF66451411A8E2DC173B05441AE47E19AF6645141E17A14FE73B05441EC51B8EEF4645141EC51B87E72B05441FAD2A7E0F46451414443096772B05441D4BE30C2F4645141D5FFBB3372B05441B81E85EBF3645141A4703DCA70B05441AE47E1FAF264514185EB51D86EB05441BBBC37F6F26451412EB864836EB05441A4703DDAF26451415C8FC2856CB05441DEE75216F36451411B0D40E46BB05441B81E85ABF3645141333333536AB05441EC51B8EEF4645141A4703DBA68B054411002EF12F5645141D24E4D9D68B054411DACA34DF7645141A17919AC66B05441F3D78A4FF764514122C2C2A866B05441FDA1917DF76451417176025866B054419DF6B40DF8645141A5B7E29564B05441A4703D1AF86451413333335364B05441F816F5C8F8645141575D9D5B63B05441A17A238EF96451416E55E33C62B05441633B174FFA645141C3C59C1D61B054414376B1B1FA645141D47B3D685FB05441C196C11BFB645141F79F00ED5BB054413D0AD723FB645141295C8F925BB054417D9C7452FB6451418CBBB1FC59B054415D883AA1FB6451419DF86F3B57B0544112C7D3B0FB645141105B53A956B05441B7191DCEFB6451419723009755B05441D40F49D6FB6451415DCB744A55B05441F5016510FC6451412538262A53B05441094DAA50FC6451412D4FF06550B05441F1635946FC64514130CFA9D04FB054412F82583FFC645141DE73526B4FB054415D6BB51AFC645141562B2D594DB054418CA4C517FC645141E3CFAE2E4DB05441BE8FF60BFC645141BC39CE834CB054412CA53E05FC645141F7B196224CB0544155926CAAFB64514135A965D249B05441B163104CFB6451410F36F11448B05441A1E4DE3EFB645141F1BBA8D647B054412BF681A3FA6451415354D6E845B05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239054 - 59017
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000001F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D05441D7A370ED5FC15041E17A145ED9D0544114AE47E15FC15041295C8FC2D7D054413D0AD7335FC150411F85EB71C4D054419A9999995EC150411F85EBB1B3D05441000000E05CC1504185EB517892D054413D0AD7035DC150411F85EB618CD054413D0AD7F35DC150410AD7A36086D05441B81E85AB5FC15041C3F5287C80D054417B14AE4761C15041713D0AC77CD0544152B81EC53BC150413D0AD73370D054413D0AD7133EC15041CDCCCC9C76D054417B14AEF740C15041B81E85EB7FD054411F85EB7143C15041E17A140E89D05441CDCCCC9C45C15041713D0A9792D05441A4703D1A47C15041666666669CD05441D7A3704D48C150418FC2F598A8D054419A9999B948C1504185EB5178B4D0544114AE47C148C150415C8FC285C0D054410AD7A36048C15041CDCCCCBCCCD05441EC51B84E48C150419A999979CED0544114AE475147C15041713D0A27D9D054418FC2F5B845C1504100000050E7D0544185EB511845C15041000000E0EAD054411F85EBA15FC1504114AE47A1F7D05441
+</a>
+
+<b>
+010600000001000000010300000001000000560000008FC2F5B845C1504100000050E7D0544128042EB845C15041E1006E54E7D05441686217B145C15041CB2F1391E7D0544147788A1945C150414DF8B9DEEAD05441DD21F15658C15041733DEF1FF4D054411F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D054418E22631260C150415CF2C2D5E7D0544134F5250F60C15041B8DDBB6FE7D054419624C30B60C150412F97A83DE5D05441E694CB0660C150419E34C04BE3D05441A774E1FE5FC15041166D6032E0D054419A73E6F65FC150418E15FF9BDDD05441FE7CF1EC5FC15041AE65454DD9D0544114AE47E15FC15041295C8FC2D7D05441393434955FC1504189A1B049CFD054414BFBA07A5FC15041E2CEE864CCD054411E089E695FC1504125C9116FCAD054413D0AD7335FC150411F85EB71C4D054416BFDB69B5EC15041D79BB6ECB3D05441E4AA236E5EC15041D362D46CB0D054414418FEC35DC15041A7A8A79FA3D05441820D12BD5DC1504188FCC71BA3D054419875DC465DC150419744863A9AD054414AAEBED95CC15041D3D8200F92D05441BE60D6E25CC15041D773F1FC91D054413D0AD7035DC150411F85EB618CD05441552A1C045DC15041BEBF30608CD0544118D12D045DC150416287365D8CD05441B3C1B8FC5DC150419F0CDF1F86D05441BFC1B8FC5DC15041697E263B86D05441F02E83045FC1504116AE23B982D05441B81E85AB5FC15041C3F5287C80D05441B6A11E4761C15041749254C87CD05441EF938C4E5CC150417C083B1C7BD05441FFC1811757C150414670AA5C79D05441F8E18CE455C1504142ADC2F578D054413015670752C15041286502AB77D054414821C46249C150417D8369C474D054417733954749C1504171C844BB74D0544171FAB65B46C150417DEA8CC073D05441B52BADC53BC15041B5CB063470D05441FB7D6C093DC150416C01A7B673D05441E5DC15713DC15041632EAFD874D054413D0AD7133EC15041CDCCCC9C76D05441D6CD871B3EC15041DB6091B576D0544108B156263EC15041BCC6CED376D05441498570553FC1504128D8D2A67AD0544152B2DF0641C1504190651E1C80D05441C7D165C341C15041B736AADA82D054411F85EB7143C15041E17A140E89D05441826D2B7643C150413345C62089D05441C0CC5A8043C150416AA21E4689D05441D2A9C6E643C15041E48123108BD05441CDCCCC9C45C15041713D0A9792D054419F8FFB9C45C150410B1C3E9892D0544115C1E79E45C1504166E29DA092D05441D1116AC245C150412451B08E93D05441A4703D1A47C15041666666669CD05441A4BAF31B47C15041F76CCD779CD05441A9FACF1C47C15041267B727D9CD054417FC8EBEA47C15041B1F6CFA5A4D054416AAFF95148C1504102DC6AB2A8D0544103B0CA6648C15041ACEF5B61ABD054419A9999B948C1504185EB5178B4D05441AEDBEFBA48C150414B1E7091B6D05441C17617BF48C15041AA088965B8D0544147DE0FBD48C150411B332CE7B9D0544189368CBE48C15041E6B30F3CBCD05441F6661FC248C1504166219184BED05441FA661FC248C150414E975DBBC0D05441DFBB049E48C15041E203BDFAC4D0544197E4716848C15041139240C0CBD05441B39F015548C150410CFFD646CED0544130E8DBE447C15041D3AE0EF1D2D05441E17804CE47C1504179C9B3E5D3D054411E6D126547C1504129979351D8D05441A3CE665647C15041F545D7F7D8D05441E1EE245247C1504165F2B71DD9D0544114AE475147C15041713D0A27D9D05441D540CAFC46C1504112BB1E15DCD05441D7004B8846C150418DF09921E0D0544140D45ECC45C1504137F0AFA7E6D05441282CEEBF45C15041D1711E12E7D054418FC2F5B845C1504100000050E7D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239054 - 120152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000001F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D05441D7A370ED5FC15041E17A145ED9D0544114AE47E15FC15041295C8FC2D7D054413D0AD7335FC150411F85EB71C4D054419A9999995EC150411F85EBB1B3D05441000000E05CC1504185EB517892D054413D0AD7035DC150411F85EB618CD054413D0AD7F35DC150410AD7A36086D05441B81E85AB5FC15041C3F5287C80D054417B14AE4761C15041713D0AC77CD0544152B81EC53BC150413D0AD73370D054413D0AD7133EC15041CDCCCC9C76D054417B14AEF740C15041B81E85EB7FD054411F85EB7143C15041E17A140E89D05441CDCCCC9C45C15041713D0A9792D05441A4703D1A47C15041666666669CD05441D7A3704D48C150418FC2F598A8D054419A9999B948C1504185EB5178B4D0544114AE47C148C150415C8FC285C0D054410AD7A36048C15041CDCCCCBCCCD05441EC51B84E48C150419A999979CED0544114AE475147C15041713D0A27D9D054418FC2F5B845C1504100000050E7D0544185EB511845C15041000000E0EAD054411F85EBA15FC1504114AE47A1F7D05441
+</a>
+
+<b>
+010600000001000000010300000001000000560000008FC2F5B845C1504100000050E7D054412A042EB845C15041E5006E54E7D05441676217B145C15041C82F1391E7D0544149788A1945C1504149F8B9DEEAD05441E121F15658C15041703DEF1FF4D054411F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D054418F22631260C1504158F2C2D5E7D0544132F5250F60C15041BCDDBB6FE7D054419824C30B60C150412E97A83DE5D05441E994CB0660C150419934C04BE3D05441A574E1FE5FC15041136D6032E0D054419D73E6F65FC150418A15FF9BDDD05441FB7CF1EC5FC15041B065454DD9D0544114AE47E15FC15041295C8FC2D7D054413A3434955FC1504188A1B049CFD054414DFBA07A5FC15041E1CEE864CCD054411E089E695FC1504120C9116FCAD054413D0AD7335FC150411F85EB71C4D054416DFDB69B5EC15041D39BB6ECB3D05441E0AA236E5EC15041CE62D46CB0D054414918FEC35DC15041A6A8A79FA3D054417E0D12BD5DC1504183FCC71BA3D054419775DC465DC150419344863A9AD0544146AEBED95CC15041D3D8200F92D05441C060D6E25CC15041D673F1FC91D054413D0AD7035DC150411F85EB618CD05441582A1C045DC15041BBBF30608CD0544114D12D045DC150416687365D8CD05441B3C1B8FC5DC15041A00CDF1F86D05441BDC1B8FC5DC15041647E263B86D05441F42E83045FC150411BAE23B982D05441B81E85AB5FC15041C3F5287C80D05441B6A11E4761C15041749254C87CD05441ED938C4E5CC150417F083B1C7BD0544102C2811757C150414170AA5C79D05441FBE18CE455C1504144ADC2F578D054412D15670752C150412A6502AB77D054414D21C46249C150417C8369C474D054417933954749C1504171C844BB74D0544173FAB65B46C150417FEA8CC073D05441B22BADC53BC15041B7CB063470D05441F87D6C093DC150416C01A7B673D05441E1DC15713DC15041612EAFD874D054413D0AD7133EC15041CDCCCC9C76D05441D5CD871B3EC15041DB6091B576D0544107B156263EC15041B8C6CED376D054414E8570553FC150412AD8D2A67AD054414DB2DF0641C1504191651E1C80D05441CCD165C341C15041B536AADA82D054411F85EB7143C15041E17A140E89D05441826D2B7643C150413445C62089D05441C0CC5A8043C150416DA21E4689D05441D3A9C6E643C15041E58123108BD05441CDCCCC9C45C15041713D0A9792D05441A38FFB9C45C15041101C3E9892D054411AC1E79E45C1504169E29DA092D05441CC116AC245C150412151B08E93D05441A4703D1A47C15041666666669CD05441A2BAF31B47C15041FB6CCD779CD05441AAFACF1C47C15041277B727D9CD054417BC8EBEA47C15041AEF6CFA5A4D054416EAFF95148C1504101DC6AB2A8D0544107B0CA6648C15041AAEF5B61ABD054419A9999B948C1504185EB5178B4D05441B0DBEFBA48C150414B1E7091B6D05441BF7617BF48C15041A8088965B8D0544144DE0FBD48C150411A332CE7B9D0544185368CBE48C15041E8B30F3CBCD05441F9661FC248C1504166219184BED05441F9661FC248C150414A975DBBC0D05441DCBB049E48C15041E203BDFAC4D0544194E4716848C15041169240C0CBD05441B39F015548C150410BFFD646CED0544133E8DBE447C15041CFAE0EF1D2D05441E17804CE47C150417BC9B3E5D3D05441206D126547C150412C979351D8D05441A1CE665647C15041F845D7F7D8D05441E2EE245247C1504160F2B71DD9D0544114AE475147C15041713D0A27D9D05441D640CAFC46C1504117BB1E15DCD05441DA004B8846C150418CF09921E0D0544141D45ECC45C1504133F0AFA7E6D05441232CEEBF45C15041D0711E12E7D054418FC2F5B845C1504100000050E7D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239054 - 320328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000001F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D05441D7A370ED5FC15041E17A145ED9D0544114AE47E15FC15041295C8FC2D7D054413D0AD7335FC150411F85EB71C4D054419A9999995EC150411F85EBB1B3D05441000000E05CC1504185EB517892D054413D0AD7035DC150411F85EB618CD054413D0AD7F35DC150410AD7A36086D05441B81E85AB5FC15041C3F5287C80D054417B14AE4761C15041713D0AC77CD0544152B81EC53BC150413D0AD73370D054413D0AD7133EC15041CDCCCC9C76D054417B14AEF740C15041B81E85EB7FD054411F85EB7143C15041E17A140E89D05441CDCCCC9C45C15041713D0A9792D05441A4703D1A47C15041666666669CD05441D7A3704D48C150418FC2F598A8D054419A9999B948C1504185EB5178B4D0544114AE47C148C150415C8FC285C0D054410AD7A36048C15041CDCCCCBCCCD05441EC51B84E48C150419A999979CED0544114AE475147C15041713D0A27D9D054418FC2F5B845C1504100000050E7D0544185EB511845C15041000000E0EAD054411F85EBA15FC1504114AE47A1F7D05441
+</a>
+
+<b>
+010600000001000000010300000001000000560000008FC2F5B845C1504100000050E7D054412A042EB845C15041E5006E54E7D05441676217B145C15041C82F1391E7D0544149788A1945C1504149F8B9DEEAD05441E121F15658C15041703DEF1FF4D054411F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D054418F22631260C1504158F2C2D5E7D0544132F5250F60C15041BCDDBB6FE7D054419824C30B60C150412E97A83DE5D05441E994CB0660C150419934C04BE3D05441A574E1FE5FC15041136D6032E0D054419D73E6F65FC150418A15FF9BDDD05441FB7CF1EC5FC15041B065454DD9D0544114AE47E15FC15041295C8FC2D7D054413A3434955FC1504188A1B049CFD054414DFBA07A5FC15041E1CEE864CCD054411E089E695FC1504120C9116FCAD054413D0AD7335FC150411F85EB71C4D054416DFDB69B5EC15041D39BB6ECB3D05441E0AA236E5EC15041CE62D46CB0D054414918FEC35DC15041A6A8A79FA3D054417E0D12BD5DC1504183FCC71BA3D054419775DC465DC150419344863A9AD0544146AEBED95CC15041D3D8200F92D05441C060D6E25CC15041D673F1FC91D054413D0AD7035DC150411F85EB618CD05441582A1C045DC15041BBBF30608CD0544114D12D045DC150416687365D8CD05441B3C1B8FC5DC15041A00CDF1F86D05441BDC1B8FC5DC15041647E263B86D05441F42E83045FC150411BAE23B982D05441B81E85AB5FC15041C3F5287C80D05441B6A11E4761C15041749254C87CD05441ED938C4E5CC150417F083B1C7BD0544102C2811757C150414170AA5C79D05441FBE18CE455C1504144ADC2F578D054412D15670752C150412A6502AB77D054414D21C46249C150417C8369C474D054417933954749C1504171C844BB74D0544173FAB65B46C150417FEA8CC073D05441B22BADC53BC15041B7CB063470D05441F87D6C093DC150416C01A7B673D05441E1DC15713DC15041612EAFD874D054413D0AD7133EC15041CDCCCC9C76D05441D5CD871B3EC15041DB6091B576D0544107B156263EC15041B8C6CED376D054414E8570553FC150412AD8D2A67AD054414DB2DF0641C1504191651E1C80D05441CCD165C341C15041B536AADA82D054411F85EB7143C15041E17A140E89D05441826D2B7643C150413445C62089D05441C0CC5A8043C150416DA21E4689D05441D3A9C6E643C15041E58123108BD05441CDCCCC9C45C15041713D0A9792D05441A38FFB9C45C15041101C3E9892D054411AC1E79E45C1504169E29DA092D05441CC116AC245C150412151B08E93D05441A4703D1A47C15041666666669CD05441A2BAF31B47C15041FB6CCD779CD05441AAFACF1C47C15041277B727D9CD054417BC8EBEA47C15041AEF6CFA5A4D054416EAFF95148C1504101DC6AB2A8D0544107B0CA6648C15041AAEF5B61ABD054419A9999B948C1504185EB5178B4D05441B0DBEFBA48C150414B1E7091B6D05441BF7617BF48C15041A8088965B8D0544144DE0FBD48C150411A332CE7B9D0544185368CBE48C15041E8B30F3CBCD05441F9661FC248C1504166219184BED05441F9661FC248C150414A975DBBC0D05441DCBB049E48C15041E203BDFAC4D0544194E4716848C15041169240C0CBD05441B39F015548C150410BFFD646CED0544133E8DBE447C15041CFAE0EF1D2D05441E17804CE47C150417BC9B3E5D3D05441206D126547C150412C979351D8D05441A1CE665647C15041F845D7F7D8D05441E2EE245247C1504160F2B71DD9D0544114AE475147C15041713D0A27D9D05441D640CAFC46C1504117BB1E15DCD05441DA004B8846C150418CF09921E0D0544141D45ECC45C1504133F0AFA7E6D05441232CEEBF45C15041D0711E12E7D054418FC2F5B845C1504100000050E7D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872592 - 3182900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C00000033333303AF845141295C8FC29F995441295C8FB2AA845141C3F528BC98995441D7A370FDA5845141295C8F1292995441A4703D1AA38451411F85EB218D995441666666D69E84514114AE47918F995441CDCCCC6C9C8451418FC2F52891995441295C8FA298845141000000509399544185EB51589684514185EB51889499544185EB51488E845141295C8FA29899544114AE47618C845141CDCCCCEC99995441666666468B845141666666A69A995441CDCCCC2C898451410AD7A3E09B99544152B81EE58984514185EB5108A19954418FC2F5188B8451419A999919A6995441B81E850B8A845141AE47E14AAC9954413D0AD7538A8451417B14AEA7B39954410AD7A3608D84514114AE47E1B2995441CDCCCC0C93845141B81E857BB199544185EB51589584514114AE47F1B0995441E17A14AE96845141AE47E19AB0995441000000D09984514152B81E05B09954418FC2F5A89D84514100000030AF9954413D0AD783A1845141F6285C6FAE9954417B14AE97A684514100000010AC99544133333393AD8451419A999979A8995441CDCCCC1CB1845141295C8F22A5995441F6285CEFAF845141E17A142EA299544133333303AF845141295C8FC29F995441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000075A72561B0845141A5CC272FA49954418A18B789AB845141F527F029A7995441FE4C1EEEA6845141A4E44AB0A9995441CF076FE3A384514148B55566AB995441A7AFEAAF9F8451410473EFE8AD99544178F0D3079F845141E0ED0D52AE99544186C8635D9E8451416784A4BCAE995441B4DC37069E845141EE6628F3AE995441AF3A86B19D845141F79D1F28AF995441D0E6DF5C9E84514107ACFCF6AE995441621C38B9A3845141B3C896BAAC9954415FEFD632B1845141FD31C0DEA5995441C080481AB18451412D763E1CA5995441814511E5B08451418B39B296A499544141B6C3B8B08451418EF78327A4995441AA7E28ABB08451411DA55E05A499544175A72561B0845141A5CC272FA4995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872592 - 3582367
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C00000033333303AF845141295C8FC29F995441295C8FB2AA845141C3F528BC98995441D7A370FDA5845141295C8F1292995441A4703D1AA38451411F85EB218D995441666666D69E84514114AE47918F995441CDCCCC6C9C8451418FC2F52891995441295C8FA298845141000000509399544185EB51589684514185EB51889499544185EB51488E845141295C8FA29899544114AE47618C845141CDCCCCEC99995441666666468B845141666666A69A995441CDCCCC2C898451410AD7A3E09B99544152B81EE58984514185EB5108A19954418FC2F5188B8451419A999919A6995441B81E850B8A845141AE47E14AAC9954413D0AD7538A8451417B14AEA7B39954410AD7A3608D84514114AE47E1B2995441CDCCCC0C93845141B81E857BB199544185EB51589584514114AE47F1B0995441E17A14AE96845141AE47E19AB0995441000000D09984514152B81E05B09954418FC2F5A89D84514100000030AF9954413D0AD783A1845141F6285C6FAE9954417B14AE97A684514100000010AC99544133333393AD8451419A999979A8995441CDCCCC1CB1845141295C8F22A5995441F6285CEFAF845141E17A142EA299544133333303AF845141295C8FC29F995441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000075A72561B0845141A5CC272FA49954418A18B789AB845141F527F029A7995441FE4C1EEEA6845141A4E44AB0A9995441CF076FE3A384514148B55566AB995441A7AFEAAF9F8451410473EFE8AD99544178F0D3079F845141E0ED0D52AE99544186C8635D9E8451416784A4BCAE995441B4DC37069E845141EE6628F3AE995441AF3A86B19D845141F79D1F28AF995441D0E6DF5C9E84514107ACFCF6AE995441621C38B9A3845141B3C896BAAC9954415FEFD632B1845141FD31C0DEA5995441C080481AB18451412D763E1CA5995441814511E5B08451418B39B296A499544141B6C3B8B08451418EF78327A4995441AA7E28ABB08451411DA55E05A499544175A72561B0845141A5CC272FA4995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317104 - 290020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000130000009A999909CD4751411F85EBB148025541CDCCCCFCD0475141000000D043025541F6285CCFD3475141333333E340025541E17A143ED6475141AE47E19A3E02554148E17A04D947514114AE47613C025541AE47E1AADE475141295C8F2238025541E17A140EE3475141713D0AA73502554185EB5158E6475141C3F5283C3402554133333343E3475141E17A14EE3002554185EB5118D9475141A4703D0A260255411F85EBA1D547514152B81E55220255413D0AD703CC47514133333393420255410AD7A390CA4751419A999929460255411F85EBB1C84751410000007049025541F6285CAFC547514114AE47714C025541C3F5289CC5475141CDCCCC3C4D02554185EB51E8C6475141D7A370FD4C025541F6285C3FCA47514148E17A944B0255419A999909CD4751411F85EBB148025541
+</a>
+
+<b>
+0106000000010000000103000000010000002400000000000090DF475141AE47E1FA4D025541822B36CDEC475141DA3699DD4B025541484421B3ED475141F5234BB34B025541814A81DAED475141D92397B24B025541713D0A97EE47514148E17A944B02554152B81E15F94751411F85EB814C0255417FC5A4B9F74751413377F04547025541CECD977CF54751415B4B9BEF3F0255411F36654FF54751419E0E21993F0255411122647CF4475141522469053E025541ACCE1A3AF4475141896795863D0255413091A553F2475141B703B1703A025541DF300EDAF1475141E67054B3390255412A02D87CF147514153662A22390255413E12C862F14751414BC893F93802554114AE4771EE475141B81E859B350255414D49F696EB475141551356F233025541AB0E5151EB475141CAD6B9F0330255419D68401DEB47514184A985EF33025541DED73741E947514132EFAB0F340255412BAA176DE6475141AF66D7AA34025541B79B1FD4E0475141BE3987E93602554183BD3FBCE0475141C26409F736025541D571E556E04751413D1E623037025541D2D74736E0475141316CD64237025541DC64F7B0DE47514155D0552A39025541ABF983F9D9475141FCD7DB8C3C0255412C3DA2E3D8475141793FAA8E3D02554183ED2F7CD8475141AA0648913E025541D6AE66DED6475141A4F59EC73F02554128709D40D547514182FB0568420255412307B008D04751414297ADA24A0255416EC02708D0475141815D4CBB4A025541584D45F4D3475141FD6D43B94F02554185EB5168D44751415C8FC2455002554100000090DF475141AE47E1FA4D025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243408 - 254534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000260000009A999929791A51419A9999E9331C55418FC2F588761A51419A999919361C5541AE47E14A761A5141CDCCCC9C371C5541A4703DAA751A5141A4703DDA381C5541C3F528DC741A5141AE47E1BA391C55413D0AD783731A51415C8FC215391C554185EB5178711A5141C3F5280C371C5541F6285C2F6F1A5141D7A3703D3A1C55411F85EB916D1A5141AE47E1DA3A1C5541F6285C7F651A5141CDCCCC7C431C55415C8FC225601A51419A9999B94A1C55411F85EB915C1A5141333333134F1C5541CDCCCCCC581A5141C3F5282C551C5541CDCCCCAC561A51410AD7A300591C5541EC51B86E541A51415C8FC2955B1C554152B81E75541A51417B14AEB75C1C5541000000E05B1A51410AD7A330601C5541AE47E17A5C1A5141B81E855B601C554152B81E855D1A5141EC51B83E5F1C5541666666765E1A51411F85EBB15E1C554148E17AF45E1A5141CDCCCC5C5D1C5541F6285C6F651A5141F6285C8F531C55410AD7A3C0681A51419A9999894E1C554148E17A246A1A5141E17A142E4C1C554114AE47616A1A5141713D0A974A1C5541666666F66A1A5141D7A370CD481C55415C8FC2256B1A5141B81E853B481C55415C8FC2F56B1A5141A4703D5A441C5541000000B06C1A5141AE47E1AA431C55415C8FC2F56D1A514185EB5178421C5541333333D3791A5141E17A148E3D1C5541CDCCCC5C881A5141B81E857B441C554148E17A94881A51419A999929441C55418FC2F598911A514148E17AE4371C554114AE47517E1A514152B81EB52E1C554152B81E357C1A51419A999919311C55411F85EB117A1A5141E17A14FE311C55419A999929791A51419A9999E9331C5541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000C3F528DC741A5141AE47E1BA391C55416C3423A4741A5141A3A203A0391C55416175A045731A514185F7CB3B3A1C554114D812CE701A5141E84F174A3C1C55415242519E6D1A51414281500E3B1C55413C8B18756D1A51417725B4F93A1C55414B0536306C1A5141645120553C1C5541EB285C7F651A5141EDCCCC7C431C5541478FC225601A5141BA9999B94A1C55411F85EB915C1A5141693333134F1C5541D506530F5B1A5141B9447884511C5541CDCCCCCC581A5141C3F5282C551C554151671168571A5141C6F31DAF571C5541D8CCCCAC561A514120D7A300591C55413C174682551A5141337E6D585A1C5541EC51B86E541A51415C8FC2955B1C554152B81E75541A51417014AEB75C1C554152A96255571A51413DC55C105E1C5541000000E05B1A51410AD7A330601C55418D04410B5C1A51419D829D3C601C5541CE47E17A5C1A51418D1E855B601C554147B81E855D1A5141E151B83E5F1C55415FAF55A85D1A514100992B2A5F1C5541666666765E1A51411F85EBB15E1C5541B31E23BB5E1A5141CC1EF2F75D1C554112E17AF45E1A514197CCCC5C5D1C55414AA0439E601A514199F0B3D85A1C55418C444F3C621A5141EFFE5C66581C5541849690DA631A5141C0D9B4F3551C5541C27113D3641A51418B9AC67B541C554190578360661A514120B94422521C554132262E86661A514174143EE9511C554100D7A3C0681A51419A9999894E1C5541AA12DCFA681A5141AE60DB264E1C554148E17A246A1A5141E17A142E4C1C5541D3C6BD586A1A5141A04934D04A1C55410AAE47616A1A5141863D0A974A1C55413B6666F66A1A5141EDA370CD481C5541318FC2256B1A5141EE1E853B481C55413C8FC2F56B1A5141AF703D5A441C5541E0FFFFAF6C1A51418347E1AA431C5541B0C2F568751A51413D0AD7733B1C55415342E6D2791A51412F5A348E3D1C5541333333D3791A5141E17A148E3D1C5541AC8EC15C881A514137C37F7B441C5541443F8789881A5141337CB639441C554148E17A94881A51419A999929441C55417C7CAF978A1A5141F3F8906C411C554179C2F598911A51413EE17AE4371C5541934317EA7E1A5141584EEBFD2E1C554114AE47517E1A514152B81EB52E1C554152B81E357C1A51419A999919311C55411F85EB117A1A5141E17A14FE311C55419A999929791A51419A9999E9331C55416C54ADE6761A5141E5A593CB351C554177CDB7DD761A5141251A09D3351C55418FC2F588761A51419A999919361C5541AE47E14A761A5141CDCCCC9C371C5541A4703DAA751A5141A4703DDA381C5541C3F528DC741A5141AE47E1BA391C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243408 - 382330
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000260000009A999929791A51419A9999E9331C55418FC2F588761A51419A999919361C5541AE47E14A761A5141CDCCCC9C371C5541A4703DAA751A5141A4703DDA381C5541C3F528DC741A5141AE47E1BA391C55413D0AD783731A51415C8FC215391C554185EB5178711A5141C3F5280C371C5541F6285C2F6F1A5141D7A3703D3A1C55411F85EB916D1A5141AE47E1DA3A1C5541F6285C7F651A5141CDCCCC7C431C55415C8FC225601A51419A9999B94A1C55411F85EB915C1A5141333333134F1C5541CDCCCCCC581A5141C3F5282C551C5541CDCCCCAC561A51410AD7A300591C5541EC51B86E541A51415C8FC2955B1C554152B81E75541A51417B14AEB75C1C5541000000E05B1A51410AD7A330601C5541AE47E17A5C1A5141B81E855B601C554152B81E855D1A5141EC51B83E5F1C5541666666765E1A51411F85EBB15E1C554148E17AF45E1A5141CDCCCC5C5D1C5541F6285C6F651A5141F6285C8F531C55410AD7A3C0681A51419A9999894E1C554148E17A246A1A5141E17A142E4C1C554114AE47616A1A5141713D0A974A1C5541666666F66A1A5141D7A370CD481C55415C8FC2256B1A5141B81E853B481C55415C8FC2F56B1A5141A4703D5A441C5541000000B06C1A5141AE47E1AA431C55415C8FC2F56D1A514185EB5178421C5541333333D3791A5141E17A148E3D1C5541CDCCCC5C881A5141B81E857B441C554148E17A94881A51419A999929441C55418FC2F598911A514148E17AE4371C554114AE47517E1A514152B81EB52E1C554152B81E357C1A51419A999919311C55411F85EB117A1A5141E17A14FE311C55419A999929791A51419A9999E9331C5541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000C3F528DC741A5141AE47E1BA391C55416C3423A4741A5141A3A203A0391C55416175A045731A514185F7CB3B3A1C554114D812CE701A5141E84F174A3C1C55415242519E6D1A51414281500E3B1C55413C8B18756D1A51417725B4F93A1C55414B0536306C1A5141645120553C1C5541EB285C7F651A5141EDCCCC7C431C5541478FC225601A5141BA9999B94A1C55411F85EB915C1A5141693333134F1C5541D506530F5B1A5141B9447884511C5541CDCCCCCC581A5141C3F5282C551C554151671168571A5141C6F31DAF571C5541D8CCCCAC561A514120D7A300591C55413C174682551A5141337E6D585A1C5541EC51B86E541A51415C8FC2955B1C554152B81E75541A51417014AEB75C1C554152A96255571A51413DC55C105E1C5541000000E05B1A51410AD7A330601C55418D04410B5C1A51419D829D3C601C5541CE47E17A5C1A51418D1E855B601C554147B81E855D1A5141E151B83E5F1C55415FAF55A85D1A514100992B2A5F1C5541666666765E1A51411F85EBB15E1C5541B31E23BB5E1A5141CC1EF2F75D1C554112E17AF45E1A514197CCCC5C5D1C55414AA0439E601A514199F0B3D85A1C55418C444F3C621A5141EFFE5C66581C5541849690DA631A5141C0D9B4F3551C5541C27113D3641A51418B9AC67B541C554190578360661A514120B94422521C554132262E86661A514174143EE9511C554100D7A3C0681A51419A9999894E1C5541AA12DCFA681A5141AE60DB264E1C554148E17A246A1A5141E17A142E4C1C5541D3C6BD586A1A5141A04934D04A1C55410AAE47616A1A5141863D0A974A1C55413B6666F66A1A5141EDA370CD481C5541318FC2256B1A5141EE1E853B481C55413C8FC2F56B1A5141AF703D5A441C5541E0FFFFAF6C1A51418347E1AA431C5541B0C2F568751A51413D0AD7733B1C55415342E6D2791A51412F5A348E3D1C5541333333D3791A5141E17A148E3D1C5541AC8EC15C881A514137C37F7B441C5541443F8789881A5141337CB639441C554148E17A94881A51419A999929441C55417C7CAF978A1A5141F3F8906C411C554179C2F598911A51413EE17AE4371C5541934317EA7E1A5141584EEBFD2E1C554114AE47517E1A514152B81EB52E1C554152B81E357C1A51419A999919311C55411F85EB117A1A5141E17A14FE311C55419A999929791A51419A9999E9331C55416C54ADE6761A5141E5A593CB351C554177CDB7DD761A5141251A09D3351C55418FC2F588761A51419A999919361C5541AE47E14A761A5141CDCCCC9C371C5541A4703DAA751A5141A4703DDA381C5541C3F528DC741A5141AE47E1BA391C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158654 - 3112963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6B2415141713D0A1703115541A4703D6ACC41514185EB51A8FE105541D7A3701DE1415141B81E859BF61055417B14AEB7F54151418FC2F598EE10554185EB51B8F641514185EB51E8EC105541295C8F82F64151411F85EB51EB105541C3F528FCF641514148E17A44E310554100000090F6415141AE47E13ADE105541F6285C2FF54151410AD7A370DA1055418FC2F5D8F141514185EB5108D3105541D7A370ADEE4151417B14AE17CC10554100000010E041514148E17A24D110554114AE4711D6415141713D0AD7D4105541D7A3704DC0415141C3F528DCDC10554148E17A24B7415141713D0AF7E31055411F85EBF1AC4151410AD7A330ED105541F6285C5FA84151419A999929F210554152B81E15A4415141EC51B8EEF7105541000000909E415141C3F5286C00115541A4703DAA9A415141295C8F520711554100000010A3415141C3F528DC05115541666666F6B2415141713D0A1703115541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F7D8A14AC0415141B87E56DEDC1055413CB222BACA4151417FE88D0BD9105541536CD6CADF4151411F398241D11055413D09D61EE8415141956D945DCE105541B1B5CFA2EE415141752D3A29CC1055412D588BB3EE415141D6440B25CC105541D7A370ADEE4151417B14AE17CC10554100000080EE41514185EB5188C0105541B81E853BEC415141EC51B86EB810554148E17A54E84151415C8FC205B11055418FC2F558E74151418FC2F548B010554114AE4711E64151419A999979B310554166666686E34151411F85EB81B9105541AE47E1CAE041514100000090BE105541B81E855BDC4151411F85EBE1C41055410AD7A300D8415141D7A3709DC9105541EC51B85ED041514148E17A64D0105541D7A3704DC0415141C3F528DCDC105541F7D8A14AC0415141B87E56DEDC105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158654 - 3492526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6B2415141713D0A1703115541A4703D6ACC41514185EB51A8FE105541D7A3701DE1415141B81E859BF61055417B14AEB7F54151418FC2F598EE10554185EB51B8F641514185EB51E8EC105541295C8F82F64151411F85EB51EB105541C3F528FCF641514148E17A44E310554100000090F6415141AE47E13ADE105541F6285C2FF54151410AD7A370DA1055418FC2F5D8F141514185EB5108D3105541D7A370ADEE4151417B14AE17CC10554100000010E041514148E17A24D110554114AE4711D6415141713D0AD7D4105541D7A3704DC0415141C3F528DCDC10554148E17A24B7415141713D0AF7E31055411F85EBF1AC4151410AD7A330ED105541F6285C5FA84151419A999929F210554152B81E15A4415141EC51B8EEF7105541000000909E415141C3F5286C00115541A4703DAA9A415141295C8F520711554100000010A3415141C3F528DC05115541666666F6B2415141713D0A1703115541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F7D8A14AC0415141B87E56DEDC1055413CB222BACA4151417FE88D0BD9105541536CD6CADF4151411F398241D11055413D09D61EE8415141956D945DCE105541B1B5CFA2EE415141752D3A29CC1055412D588BB3EE415141D6440B25CC105541D7A370ADEE4151417B14AE17CC10554100000080EE41514185EB5188C0105541B81E853BEC415141EC51B86EB810554148E17A54E84151415C8FC205B11055418FC2F558E74151418FC2F548B010554114AE4711E64151419A999979B310554166666686E34151411F85EB81B9105541AE47E1CAE041514100000090BE105541B81E855BDC4151411F85EBE1C41055410AD7A300D8415141D7A3709DC9105541EC51B85ED041514148E17A64D0105541D7A3704DC0415141C3F528DCDC105541F7D8A14AC0415141B87E56DEDC105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158946 - 54584
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000003D0AD713123F51410AD7A3A01A0A554152B81EE50E3F5141C3F5282C160A5541CDCCCC9C0B3F5141C3F528AC140A5541E17A141E033F514166666686190A55418FC2F5C8F63E5141333333E31E0A55417B14AE37EC3E5141F6285C8F240A5541333333D3E63E51418FC2F548290A554100000060E13E514185EB51582E0A554185EB5118E13E5141C3F5281C300A5541CDCCCCFCE13E51410AD7A320310A5541B81E85ABF43E514148E17A84340A55419A9999C9F93E51418FC2F568360A5541A4703DFAFF3E514133333313380A5541713D0AE7043F51419A999949390A5541B81E858B073F5141295C8F92380A554185EB51F80A3F51415C8FC2A5340A5541AE47E19A143F5141CDCCCCCC290A55415C8FC2F5183F5141D7A3704D250A5541CDCCCC2C183F5141E17A14CE220A55413D0AD713123F51410AD7A3A01A0A5541
+</a>
+
+<b>
+01060000000100000001030000000100000045000000B81E858B073F5141295C8F92380A5541B62E0337093F514123F0A8A8360A55414C3346D00A3F51418AE1A6D3340A554185EB51F80A3F51415C8FC2A5340A5541B3870F08103F51415286F5F22E0A554189ECF91B103F51413D8889DC2E0A5541F5F9F067113F514108EFCB662D0A5541C3DD1B15133F5141BB089F832B0A5541AE47E19A143F5141CDCCCCCC290A554194FEDE7F153F514180EC50E0280A5541F463FE91153F5141DCB899CD280A5541464983A2163F5141670C2AB4270A554166C20FAB173F5141E78FF5A2260A5541E000F0C3173F514154F14489260A55415C8FC2F5183F5141D7A3704D250A5541ED7BCC7B183F5141E8B56AC9230A5541CC4D9624183F5141F4C510C3220A5541B5DADF17173F5141764AB05A210A554158ECD987163F5141C0298999200A5541BC652EC1153F51412843188F1F0A554153BEC82F153F51414A6E19CC1E0A55413D0AD713123F51410AD7A3A01A0A55410C738189113F51418160FEDE190A55416175CE78103F51412AF54161180A5541936901C30F3F51411ECEC362170A5541764FB92F0F3F51416AFC9794160A554179F73DE90E3F5141BB23EE31160A5541CB1160DA0D3F5141D31744B2150A554163595CC90D3F514136AA7DAA150A55411751F7B10D3F514135DDCC9F150A5541064473BE0C3F51414C688530150A55411894121A0C3F5141EDD867E5140A5541CDCCCC9C0B3F5141C3F528AC140A5541F98221F1083F51410931AF32160A554143CF7883063F51415C91C995170A5541017FCD99043F51412BD37EAD180A5541E17A141E033F514166666686190A55418A2994F3013F5141E84032081A0A554166EE1AAB013F51417FB1B5271A0A554104FD87A9003F51416EB4B5971A0A5541FAEB3784FE3E5141E9CC90861B0A554182444991FB3E5141E88ED4CE1C0A5541483C484EFB3E51417A27F7EB1C0A5541B46F8223F93E5141710532DD1D0A5541AE9230AAF73E5141249C43811E0A5541105BD0BEF63E51412574A5E81E0A5541EBEF5FF0F23E5141F77EB6F3200A554136579048F23E5141A1A9CA4D210A5541691EDF14F23E51419C168A69210A5541A8294248EE3E5141E233A073230A554169757C47EC3E5141821DE086240A554170EEB9FFEA3E51412FFAB2A0250A55411627E544EA3E5141605D6744260A554144F079D1E63E5141E8718F4A290A5541EBFA4413E63E5141FFF327FB290A5541A8DC1710E53E51411C27C9EB2A0A554103E58CD7E33E51418E90F60D2C0A5541D0393414E23E51413AE602B12D0A554166C4F05EE13E5141CDA7FF5E2E0A554130F0FD1DE13E51419657A022300A5541CDCCCCFCE13E51410AD7A320310A5541B81E85ABF43E514148E17A84340A5541D4A40390F83E51410436FEF4350A5541A2B4F4E2F93E514186C0C76F360A5541AE709076FB3E5141220058DC360A55417119B68DFC3E5141BCEA6D27370A55413D193A37003F5141F3EC3622380A5541713D0AE7043F51419A999949390A5541B81E858B073F5141295C8F92380A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158985 - 54622
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000014AE4781173C5141C3F528DC8D0C55413D0AD7A3173C5141CDCCCCAC8B0C55415C8FC255173C5141D7A3703D8A0C55415C8FC225153C51413D0AD763850C5541666666E6123C5141AE47E14A850C55417B14AE97113C51415C8FC2D5860C5541E17A145E0E3C5141AE47E11A8A0C55417B14AEC70C3C51410AD7A3008D0C5541D7A370ED093C51419A9999F9900C554133333363083C51417B14AEA7920C5541C3F528CC063C5141713D0AC7930C5541A4703D9A043C51415C8FC2E5940C5541E17A14BE043C51417B14AED7970C5541D7A3704D053C51415C8FC2459A0C55410AD7A360063C5141E17A146EA30C55415C8FC2A5093C5141D7A370CDA30C5541C3F528FC0C3C51413D0AD743A40C5541713D0A77143C5141E17A149EA30C5541E17A146E153C5141EC51B83EA30C5541F6285CAF163C514185EB51A89B0C554152B81EF5163C5141333333E3950C554114AE4781173C5141C3F528DC8D0C5541
+</a>
+
+<b>
+01060000000100000001030000000100000031000000A4703D9A043C51415C8FC2E5940C55410FF63DC7043C5141FDCA6FFF970C554165DE2C01053C51419656D3FA980C5541D7A3704D053C51415C8FC2459A0C554102A717FF053C51414E491C2FA00C55417E46720E063C5141A7B5E7B1A00C55410AD7A360063C5141E17A146EA30C55415C8FC2A5093C5141D7A370CDA30C5541E5C7AA630C3C51413F41B52EA40C5541355A02D00C3C5141D3C2B83DA40C554156EB7D0A0D3C514188709942A40C5541BB69AA5C0D3C5141D56E7C3BA40C55416FDFC560143C514174ED01A0A30C554182EB4A53153C5141C5680F49A30C5541E17A146E153C5141EC51B83EA30C5541D219DFFD153C51416D0D62D99F0C554125DA7C4A163C514126E82C0A9E0C554175D474A9163C51410D2503CC9B0C5541A3D7B8BB163C5141F8F28FA29A0C554152B81EF5163C5141333333E3950C55416D5F0C2C173C5141ABD5D5BD920C554164AC062E173C51415C67D6A0920C554137396067173C5141940AF8578F0C5541C204B28D173C514113F636138D0C5541049676A0173C5141669DE99C8B0C5541A3FE5154173C5141617A3F3A8A0C55415C8FC225153C51413D0AD763850C5541666666E6123C5141AE47E14A850C55417B14AE97113C51415C8FC2D5860C554173F8F8DF0F3C51416F589A93880C5541E885B8460F3C5141EE38FE2E890C55412B6F6FB80E3C5141799143BF890C55414D58807B0E3C5141BC510CFD890C55418F4470480E3C5141024261428A0C55417A22BFE40D3C5141825956F88A0C55418BFF9F680D3C5141873AE2DA8B0C5541E268AD540D3C514107C24AFF8B0C55417B14AEC70C3C51410AD7A3008D0C5541A6A86C4F0C3C5141E0C91CA88D0C5541A892B1300C3C5141A9CAE8D28D0C554166B44E500B3C514133EA650B8F0C55410B0B84A00A3C514144553600900C5541D7A370ED093C51419A9999F9900C55418D792097083C51415F53086F920C554133333363083C51417B14AEA7920C5541C650BE10073C51414F309F96930C5541C3F528CC063C5141713D0AC7930C554154992AC3053C514168CD404E940C5541A4703D9A043C51415C8FC2E5940C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158991 - 54634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F52AC3B51411F85EB81CA0C5541EC51B83EAC3B5141713D0A57C90C5541F6285C9FAA3B514114AE4791C40C5541B81E852BA73B5141A4703D8AB90C554152B81EC5A53B51417B14AEA7B80C55419A9999F9A43B5141713D0AD7B80C554133333323A43B514166666666B90C5541C3F528CC9F3B51411F85EB51BD0C55418FC2F5989B3B5141713D0A47C10C5541F6285C2F993B5141CDCCCC9CC30C55411F85EBB1983B514185EB51F8C40C5541C3F5284C993B51417B14AE57C70C5541CDCCCC3C9C3B5141713D0AD7CE0C5541AE47E17A9D3B51418FC2F5B8D00C5541F6285CDF9E3B5141C3F528CCD00C55418FC2F568A43B5141000000B0CE0C554185EB5128A93B514148E17AC4CC0C5541B81E85CBAB3B5141F6285C5FCB0C5541295C8F52AC3B51411F85EB81CA0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000288E8FD2A33B5141193278B9AC0C55414BAEA505A33B5141B42E63B1AD0C5541A37EE0C1A33B5141A950EDC5AE0C554185EB51C8A33B5141F6285CCFAE0C55415D039F11A53B5141905683B8B20C5541486D4693A53B5141D518C53EB40C5541D9B72BCAA53B5141645E96E9B40C554148E17A54A63B5141E17A148EB60C5541A3FAD66AA63B51418D7989DDB60C5541B6ADC66FA63B51416DDC25DCB60C55417852B13CA73B5141F52E17C1B90C554109BF01B9A73B51413560284EBB0C5541F6285C9FAA3B514114AE4791C40C5541C4037707AC3B51411742AD9FC50C554114AE47A1AD3B51418FC2F528C60C5541B360587CAF3B51417868E917C60C5541C3F5281CB13B51411F85EB91C50C55415C167ECCB23B5141653C46D5C40C554185EB5168B33B514114AE4791C40C5541B81E854BB53B5141D7A370CDC30C554195193C9FB53B514175DE456EC30C554170F2729DB63B5141363DB448C20C5541AE47E16AB73B5141C3F528BCC00C5541D4A77697B73B5141ED6A9998BE0C5541A74A1FFFB63B5141E6DBF861BC0C5541BAA5F933B63B5141B4F3CD30BA0C5541D7A3704DB43B514148E17A54B50C5541C8E1BA3AB33B51418DBBF881B20C55413C930F10B33B5141AB98BF11B20C5541F9EB0C9FB23B514149C185E8B00C554166666606B23B5141713D0A57AF0C554165C34484B13B51415B377868AD0C5541EBA51082B13B51413B451860AD0C55416C535521B13B51412C1D76F0AB0C554166CFB58BB03B5141ED6A923FAB0C5541CCAF6A83B03B5141BE7A8B36AB0C554154619C7DB03B514126B13930AB0C5541015B32D6AF3B51414E0103E0AA0C55417B14AE47AF3B5141000000A0AA0C55417B14AE37AD3B5141A4703DFAAA0C5541B81E85CBA83B5141F6285CAFAB0C5541CE268F2CA83B5141D671ADBBAB0C5541B62339B5A53B5141F9DF83EEAB0C5541288E8FD2A33B5141193278B9AC0C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158992 - 54640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC2F5983B5141B81E85CBD20C554114AE47B19A3B514114AE4791D20C5541C3F5280C9C3B51410AD7A300D20C55413D0AD7C39C3B51419A999919D10C5541CDCCCC3C9C3B5141713D0AD7CE0C5541C3F5284C993B51417B14AE57C70C55411F85EBB1983B514185EB51F8C40C55413D0AD713973B51418FC2F598C20C5541AE47E11A873B5141333333C3CE0C5541CDCCCC9C883B5141A4703D0AD20C554152B81E758A3B5141E17A140ED50C55415C8FC2F5983B5141B81E85CBD20C5541
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD713973B51418FC2F598C20C55410E99A79B8D3B5141699145CFC90C5541AE47E11A873B5141333333C3CE0C5541E39BC768883B5141DE242499D10C554127A25489893B51413DFFC38CD30C55413EC3AEE2893B51411AE31219D40C5541040AA24D8A3B5141876A8DCDD40C5541BEDEAC6F8A3B5141AAB92E05D50C554197B966EA8F3B5141C49A5534D40C5541C96EC58A933B51418563A9A3D30C5541430D5FEA943B5141C0B8DE6CD30C554187C1BF89963B514154B8232CD30C55415C8FC2F5983B5141B81E85CBD20C554181BF573D993B51413CC81EC2D20C5541C10328C19A3B514119F5A88AD20C5541E63433119C3B5141A2EA4CFAD10C5541542ACEC09C3B514182E10D17D10C5541E04F8D3D9C3B5141E12E4ADECE0C554126391D799A3B5141D40D2A57CA0C5541762F0F93993B5141D53D7C0CC80C5541C3F5284C993B51417B14AE57C70C5541DAD08241993B51412A2EBF2DC70C5541E8BB61A4983B5141FC6876E4C40C55413D0AD713973B51418FC2F598C20C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159119 - 54691
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000EC51B83E05425141D7A3709D9E11554152B81E65044251411F85EB31A5115541EC51B86E03425141C3F528ACAA1155418FC2F54804425141713D0AC7AB115541B81E851B1D425141D7A370BDAE1155413D0AD703344251419A999979B111554152B81EA534425141000000A0AD11554114AE475139425141295C8FF298115541B81E85BB3F425141B81E853B81115541CDCCCC6C42425141713D0A6776115541E17A14BE434251413D0AD7036E1155419A9999F9444251415C8FC2C561115541A4703DFA44425141CDCCCCEC59115541000000E03D425141295C8F225A1155413D0AD7D332425141CDCCCCFC5811554114AE47312A425141C3F5280C57115541713D0AF7244251419A99997955115541F6285CEF164251413333333350115541EC51B80E0F425141000000D04D11554185EB51B810425141E17A142E581155418FC2F5181142514148E17A746411554152B81ED52442514152B81EC56611554148E17AD434425141D7A3706D6A11554100000010334251419A9999897411554185EB510830425141666666967B115541D7A3709D2F425141F6285C7F7C115541295C8F621B425141CDCCCCFC741155417B14AE770D425141295C8FD26F115541CDCCCC9C09425141EC51B8AE801155418FC2F5C8074251415C8FC2E589115541D7A3706D064251413333334392115541EC51B83E05425141D7A3709D9E115541
+</a>
+
+<b>
+010600000001000000010300000001000000420000004708AB100D425141E336169571115541CDCCCC9C09425141EC51B8AE801155418FC2F5C8074251415C8FC2E589115541D7A3706D064251413333334392115541EC51B83E05425141D7A3709D9E11554152B81E65044251411F85EB31A5115541EC51B86E03425141C3F528ACAA1155418FC2F54804425141713D0AC7AB115541B81E851B1D425141D7A370BDAE1155413D0AD703344251419A999979B111554152B81EA534425141000000A0AD11554114AE475139425141295C8FF298115541B81E85BB3F425141B81E853B81115541CDCCCC6C42425141713D0A6776115541E17A14BE434251413D0AD7036E1155419A9999F9444251415C8FC2C56111554103AE37FA44425141594D6E335A1155416C23E9ED444251415958C3F4591155413344977440425141F33C070F5A1155413D43DFCA3E425141F1929D1B5A115541000000E03D425141295C8F225A11554163B5601E3A425141BC37ADBE591155416B736E6534425141C45E832659115541E14ED527344251414E6F1D20591155413D0AD7D332425141CDCCCCFC581155412DA141A62F42514163BA034658115541888416CE2E42514158DA72155811554114AE47312A425141C3F5280C57115541713D0AF7244251419A99997955115541136C69D4234251419960540C551155415687CA391F42514146163151531155417B7C417E1B42514100F6EDE9511155413FAF419B1642514139C7B51950115541182D5D481542514169C1FFB24F115541BDD0A64311425141E7F3377B4E1155416058BD110F425141ADA7D4E24D1155412583C8840F4251413ECA40B050115541C868B5B20F42514151DCA5CE511155418BCA05B30F42514118219BD051115541F6BFBEF10F425141B3C5BF57531155417B65DB2B10425141E9E123C25411554185EB51B810425141E17A142E58115541764F97CF10425141DA4CC6225B115541B7F010EC1042514107F6AFC05E115541D95F940C11425141FF5FE9E1621155418FC2F5181142514148E17A7464115541DB5AE2C415425141065CC400651155410D1847D21C4251419B238CD46511554152B81ED52442514152B81EC56611554196224DDB2942514104D02DEB671155414E9AD2E02D4251414DD18ED66811554148E17AD434425141D7A3706D6A11554100000010334251419A999989741155410AE5808E31425141C51C8C0A781155415A8C085431425141FE7397927811554185EB510830425141666666967B115541D7A3709D2F425141F6285C7F7C115541295C8F621B425141CDCCCCFC74115541C171D15B1B42514134494CFA7411554156DA502512425141DE6E058F71115541A4E6B71C124251412DA0D48B7111554176E18F15114251411D4F2B2A71115541DB1ADC841042514122CA77F470115541C7C43F450F42514192FEDA7D70115541F1552A7A0D4251419CDB0AD96F1155414708AB100D425141E336169571115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159902 - 109915
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000E17A149EFC3F514148E17A84AF0B55411F85EB41EF3F51411F85EB21AE0B55417B14AEB7E63F51411F85EB11AD0B5541C3F528ECDD3F5141713D0A17AB0B5541A4703DEADC3F5141A4703D0AAC0B55417B14AEF7DB3F5141EC51B8CEAC0B5541F6285C2FDE3F514114AE4741BA0B5541333333F3DC3F51418FC2F598BE0B55418FC2F5D8D93F5141AE47E1BAC30B5541713D0A77D53F5141F6285C9FCA0B5541E17A143ED33F5141E17A141ECE0B55419A9999F9D03F5141AE47E11AD10B55413D0AD7B3EE3F51413D0AD7F3DE0B554148E17A24F13F51418FC2F598E00B5541D7A3706DF33F5141D7A3707DE20B5541D7A3707DFA3F51410AD7A360E90B5541B81E85BB01405141333333B3E30B55411F85EB411040514100000050D80B55417B14AE371E4051417B14AE57D00B554185EB51F82140514133333333CE0B5541D7A3709D254051419A9999D9CD0B55415C8FC27524405141CDCCCCCCBE0B5541EC51B80E23405141EC51B88EB40B5541713D0A372240514185EB5168AE0B5541666666D620405141EC51B83EAD0B5541A4703DDA1840514152B81EE5AD0B554152B81EC503405141EC51B87EAF0B5541E17A149EFC3F514148E17A84AF0B5541
+</a>
+
+<b>
+01060000000100000001030000000100000004000000BE5DE169D63F514119E76F21C90B5541E1B12392D63F514126B47C3BC90B55416A43AE22E13F5141E835F028CC0B5541BE5DE169D63F514119E76F21C90B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159902 - 310808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000E17A149EFC3F514148E17A84AF0B55411F85EB41EF3F51411F85EB21AE0B55417B14AEB7E63F51411F85EB11AD0B5541C3F528ECDD3F5141713D0A17AB0B5541A4703DEADC3F5141A4703D0AAC0B55417B14AEF7DB3F5141EC51B8CEAC0B5541F6285C2FDE3F514114AE4741BA0B5541333333F3DC3F51418FC2F598BE0B55418FC2F5D8D93F5141AE47E1BAC30B5541713D0A77D53F5141F6285C9FCA0B5541E17A143ED33F5141E17A141ECE0B55419A9999F9D03F5141AE47E11AD10B55413D0AD7B3EE3F51413D0AD7F3DE0B554148E17A24F13F51418FC2F598E00B5541D7A3706DF33F5141D7A3707DE20B5541D7A3707DFA3F51410AD7A360E90B5541B81E85BB01405141333333B3E30B55411F85EB411040514100000050D80B55417B14AE371E4051417B14AE57D00B554185EB51F82140514133333333CE0B5541D7A3709D254051419A9999D9CD0B55415C8FC27524405141CDCCCCCCBE0B5541EC51B80E23405141EC51B88EB40B5541713D0A372240514185EB5168AE0B5541666666D620405141EC51B83EAD0B5541A4703DDA1840514152B81EE5AD0B554152B81EC503405141EC51B87EAF0B5541E17A149EFC3F514148E17A84AF0B5541
+</a>
+
+<b>
+01060000000100000001030000000100000004000000BE5DE169D63F514119E76F21C90B5541E1B12392D63F514126B47C3BC90B55416A43AE22E13F5141E835F028CC0B5541BE5DE169D63F514119E76F21C90B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160434 - 250140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000230000009A999949A6335141A4703D8AEC1B554152B81ED5A6335141CDCCCC6CE91B554114AE47C1A6335141333333E3E61B55417B14AE37A633514114AE4781E51B5541666666D6A23351419A999929E11B5541E17A14FEA13351419A999979DD1B5541333333C39F335141713D0A67D91B55419A9999399F3351410AD7A340D51B55419A999939A03351413D0AD7A3D21B5541666666D6A1335141A4703D1AD11B5541713D0A87A33351418FC2F568D11B55415C8FC2D5A53351413D0AD7A3D11B554114AE47C1A73351418FC2F568D11B5541C3F528FCA8335141F6285CDFD01B554114AE4751AC335141AE47E14ACE1B55415C8FC255B3335141666666F6CB1B55413D0AD733B03351419A9999F9C41B55411F85EBA1A1335141AE47E16AC81B5541F6285C7F99335141CDCCCC1CC81B554152B81E458D335141A4703DAACB1B554185EB51B882335141AE47E19ADD1B5541E17A14DE8333514148E17A34DE1B55413D0AD7C3783351411F85EBB1E81B5541A4703D5A6F3351418FC2F5B8F11B55418FC2F5B878335141295C8FA2F61B55418FC2F5C87D3351417B14AE17FB1B5541B81E85BB803351418FC2F548FD1B554185EB514884335141CDCCCC2CFF1B55417B14AE27873351411F85EB91FE1B5541666666E68E335141C3F5288CF61B5541F6285CEF94335141000000E0EF1B5541E17A14DE9833514148E17AB4EC1B5541B81E858B9E3351419A9999C9F21B5541A4703D6AA1335141EC51B85EF51B55419A999949A6335141A4703D8AEC1B55410B000000CDCCCC2C853351418FC2F5D8E91B5541333333D387335141666666A6ED1B554100000040883351419A999939F01B5541AE47E17A8733514100000060F41B55410AD7A34085335141EC51B85EF71B55415C8FC2C58233514133333303F71B55415C8FC255813351418FC2F5A8EC1B5541000000507E335141B81E858BEA1B55410AD7A31081335141333333E3E71B55410000001083335141333333E3E71B5541CDCCCC2C853351418FC2F5D8E91B5541
+</a>
+
+<b>
+0106000000010000000103000000020000003B0000007B14AE27873351411F85EB91FE1B554103A258C289335141E90E5EDFFB1B55411FDF96778B335141A443751AFA1B5541568457DF8B33514160F6FCAEF91B55416D740C478C335141A7C99043F91B5541DDE9F3518C335141EB4F4538F91B5541D78CE97D8C3351416876BC0AF91B5541666666E68E335141C3F5288CF61B55416B072BCA91335141C1553F5AF31B554195285CEF94335141400000E0EF1B55412C7B14DE98335141FDE07AB4EC1B5541B81E858B9E3351419A9999C9F21B5541A4703D6AA1335141EC51B85EF51B55419A999949A6335141A4703D8AEC1B554152B81ED5A6335141CDCCCC6CE91B554114AE47C1A6335141333333E3E61B55417B14AE37A633514114AE4781E51B5541666666D6A23351419A999929E11B5541E17A14FEA13351419A999979DD1B5541333333C39F335141713D0A67D91B55419A9999399F3351410AD7A340D51B55419A999939A03351413D0AD7A3D21B5541B6C444A8A0335141B099513AD21B5541666666D6A1335141A4703D1AD11B5541713D0A87A33351418FC2F568D11B55415C8FC2D5A53351413D0AD7A3D11B554114AE47C1A73351418FC2F568D11B5541C3F528FCA8335141F6285CDFD01B554114AE4751AC335141AE47E14ACE1B55415C8FC255B3335141666666F6CB1B55410F349342B03351417CF6771AC51B5541F209D733B0335141DA9999F9C41B5541FEF0925FAD335141D580B9A4C51B554182F4E086AC3351417884ECD7C51B554190669185A933514185FEB08DC61B554101710F1FA8335141BDA965E2C61B55411F85EBA1A1335141AE47E16AC81B5541F6285C7F99335141CDCCCC1CC81B5541DA967D619233514176451D2ECA1B5541A6D7050190335141710AE5DECA1B554152B81E458D335141A4703DAACB1B554185EB51B882335141AE47E19ADD1B5541E17A14DE8333514148E17A34DE1B55413D0AD7C3783351411F85EBB1E81B5541A4703D5A6F3351418FC2F5B8F11B55411E1CCB137533514197DC51B9F41B5541C2C499D1763351417C240CA3F51B55418FC2F5B878335141295C8FA2F61B554132FA99EE7B335141779F0276F91B55416E9083937D335141B2FD9EE8FA1B55412CF102CE7D335141E805AB17FB1B5541C5526A0C7E3351413350DB49FB1B55413EDC9F9E7E335141234D9DB6FB1B554136D9A6617F3351410A87AF47FC1B55414635B36580335141DA6C1F09FD1B554154C7BFD6803351413EE67457FD1B554149F74E0E81335141833E0975FD1B554185EB514884335141CDCCCC2CFF1B55417B14AE27873351411F85EB91FE1B55410B000000CDCCCC2C853351418FC2F5D8E91B5541333333D387335141666666A6ED1B554100000040883351419A999939F01B5541AE47E17A8733514100000060F41B55410AD7A34085335141EC51B85EF71B55415C8FC2C58233514133333303F71B55415C8FC255813351418FC2F5A8EC1B5541000000507E335141B81E858BEA1B55410AD7A31081335141333333E3E71B55410000001083335141333333E3E71B5541CDCCCC2C853351418FC2F5D8E91B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160434 - 359879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000230000009A999949A6335141A4703D8AEC1B554152B81ED5A6335141CDCCCC6CE91B554114AE47C1A6335141333333E3E61B55417B14AE37A633514114AE4781E51B5541666666D6A23351419A999929E11B5541E17A14FEA13351419A999979DD1B5541333333C39F335141713D0A67D91B55419A9999399F3351410AD7A340D51B55419A999939A03351413D0AD7A3D21B5541666666D6A1335141A4703D1AD11B5541713D0A87A33351418FC2F568D11B55415C8FC2D5A53351413D0AD7A3D11B554114AE47C1A73351418FC2F568D11B5541C3F528FCA8335141F6285CDFD01B554114AE4751AC335141AE47E14ACE1B55415C8FC255B3335141666666F6CB1B55413D0AD733B03351419A9999F9C41B55411F85EBA1A1335141AE47E16AC81B5541F6285C7F99335141CDCCCC1CC81B554152B81E458D335141A4703DAACB1B554185EB51B882335141AE47E19ADD1B5541E17A14DE8333514148E17A34DE1B55413D0AD7C3783351411F85EBB1E81B5541A4703D5A6F3351418FC2F5B8F11B55418FC2F5B878335141295C8FA2F61B55418FC2F5C87D3351417B14AE17FB1B5541B81E85BB803351418FC2F548FD1B554185EB514884335141CDCCCC2CFF1B55417B14AE27873351411F85EB91FE1B5541666666E68E335141C3F5288CF61B5541F6285CEF94335141000000E0EF1B5541E17A14DE9833514148E17AB4EC1B5541B81E858B9E3351419A9999C9F21B5541A4703D6AA1335141EC51B85EF51B55419A999949A6335141A4703D8AEC1B55410B000000CDCCCC2C853351418FC2F5D8E91B5541333333D387335141666666A6ED1B554100000040883351419A999939F01B5541AE47E17A8733514100000060F41B55410AD7A34085335141EC51B85EF71B55415C8FC2C58233514133333303F71B55415C8FC255813351418FC2F5A8EC1B5541000000507E335141B81E858BEA1B55410AD7A31081335141333333E3E71B55410000001083335141333333E3E71B5541CDCCCC2C853351418FC2F5D8E91B5541
+</a>
+
+<b>
+0106000000010000000103000000020000003B0000007B14AE27873351411F85EB91FE1B554103A258C289335141E90E5EDFFB1B55411FDF96778B335141A443751AFA1B5541568457DF8B33514160F6FCAEF91B55416D740C478C335141A7C99043F91B5541DDE9F3518C335141EB4F4538F91B5541D78CE97D8C3351416876BC0AF91B5541666666E68E335141C3F5288CF61B55416B072BCA91335141C1553F5AF31B554195285CEF94335141400000E0EF1B55412C7B14DE98335141FDE07AB4EC1B5541B81E858B9E3351419A9999C9F21B5541A4703D6AA1335141EC51B85EF51B55419A999949A6335141A4703D8AEC1B554152B81ED5A6335141CDCCCC6CE91B554114AE47C1A6335141333333E3E61B55417B14AE37A633514114AE4781E51B5541666666D6A23351419A999929E11B5541E17A14FEA13351419A999979DD1B5541333333C39F335141713D0A67D91B55419A9999399F3351410AD7A340D51B55419A999939A03351413D0AD7A3D21B5541B6C444A8A0335141B099513AD21B5541666666D6A1335141A4703D1AD11B5541713D0A87A33351418FC2F568D11B55415C8FC2D5A53351413D0AD7A3D11B554114AE47C1A73351418FC2F568D11B5541C3F528FCA8335141F6285CDFD01B554114AE4751AC335141AE47E14ACE1B55415C8FC255B3335141666666F6CB1B55410F349342B03351417CF6771AC51B5541F209D733B0335141DA9999F9C41B5541FEF0925FAD335141D580B9A4C51B554182F4E086AC3351417884ECD7C51B554190669185A933514185FEB08DC61B554101710F1FA8335141BDA965E2C61B55411F85EBA1A1335141AE47E16AC81B5541F6285C7F99335141CDCCCC1CC81B5541DA967D619233514176451D2ECA1B5541A6D7050190335141710AE5DECA1B554152B81E458D335141A4703DAACB1B554185EB51B882335141AE47E19ADD1B5541E17A14DE8333514148E17A34DE1B55413D0AD7C3783351411F85EBB1E81B5541A4703D5A6F3351418FC2F5B8F11B55411E1CCB137533514197DC51B9F41B5541C2C499D1763351417C240CA3F51B55418FC2F5B878335141295C8FA2F61B554132FA99EE7B335141779F0276F91B55416E9083937D335141B2FD9EE8FA1B55412CF102CE7D335141E805AB17FB1B5541C5526A0C7E3351413350DB49FB1B55413EDC9F9E7E335141234D9DB6FB1B554136D9A6617F3351410A87AF47FC1B55414635B36580335141DA6C1F09FD1B554154C7BFD6803351413EE67457FD1B554149F74E0E81335141833E0975FD1B554185EB514884335141CDCCCC2CFF1B55417B14AE27873351411F85EB91FE1B55410B000000CDCCCC2C853351418FC2F5D8E91B5541333333D387335141666666A6ED1B554100000040883351419A999939F01B5541AE47E17A8733514100000060F41B55410AD7A34085335141EC51B85EF71B55415C8FC2C58233514133333303F71B55415C8FC255813351418FC2F5A8EC1B5541000000507E335141B81E858BEA1B55410AD7A31081335141333333E3E71B55410000001083335141333333E3E71B5541CDCCCC2C853351418FC2F5D8E91B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174213 - 5228493
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000400000068000000F6285C3FA4F85041EC51B82E424A544114AE4751A7F8504100000090464A54418FC2F5D8A8F85041D7A3705D4B4A544152B81EE5AAF85041E17A14CE4E4A544185EB5138AEF85041F6285CAF524A5441C3F528ECB1F850419A9999A9564A54410AD7A3D0B4F850418FC2F5F8584A54418FC2F578B7F8504185EB51185B4A54411F85EB61B8F8504133333363564A54410AD7A3B0BAF850419A9999794A4A5441A4703D6ABBF85041000000C0484A5441E17A14CEBEF8504114AE47B13C4A5441295C8F52BFF8504152B81ED53A4A544114AE4741CCF850418FC2F508404A544152B81ED5CFF8504152B81E15414A54419A999949D2F850418FC2F5A8414A5441EC51B8BED4F8504152B81EB5424A544185EB51B8D5F85041F6285CAF434A544152B81EF5DAF850415C8FC2F5454A54418FC2F5B8E5F8504185EB51F8494A54411F85EBB1ECF850411F85EB914C4A5441CDCCCC7CF3F85041D7A370FD4E4A5441295C8F32F8F85041EC51B8CE504A5441295C8FE2F8F85041B81E85BB4F4A544152B81EE5F9F85041713D0A274E4A544185EB51E8FBF85041E17A142E4A4A544148E17AF4FCF8504152B81E75464A54418FC2F558FDF8504114AE4701454A54413D0AD793FDF85041713D0A87434A54415C8FC2B5FDF850419A999949414A544148E17AE4FDF85041CDCCCC0C3F4A54410AD7A330FEF850411F85EB513C4A5441C3F5287CFEF850415C8FC2153A4A54419A9999B9FEF85041295C8F72384A5441333333F3FDF850417B14AE472F4A5441D7A3700DF9F85041F6285CCF2F4A54417B14AE07F5F85041EC51B83E304A544152B81E45F2F850413D0AD773304A5441713D0A67F1F8504148E17A84304A5441F6285CBFEDF85041E17A14AE304A5441713D0AF7ECF85041713D0AC7304A5441C3F528DCE9F85041AE47E12A314A544114AE4791E5F85041AE47E1CA304A544133333313E1F850410AD7A3A02F4A5441CDCCCC9CD9F850410AD7A3902D4A5441E17A143ED2F85041C3F5287C2B4A544185EB5158CBF85041AE47E16A294A5441713D0AB7C4F8504185EB5148274A5441EC51B86EC3F8504114AE47312B4A5441F6285C3FC2F850410AD7A3002F4A544152B81E75C0F8504148E17A94344A54415C8FC2F5BEF85041B81E85AB384A5441AE47E17ABEF850410AD7A3203A4A544148E17A54BBF85041C3F5284C384A5441295C8F52B3F85041E17A14DE334A544114AE4711A8F85041295C8FB22D4A5441000000E0A5F850418FC2F5D82C4A544148E17A149AF850410AD7A3E0264A544114AE47D199F850411F85EB21254A5441C3F5287C9AF850419A9999B9224A5441A4703DDAA4F85041E17A147EFA495441295C8FE29FF8504100000080FB4954419A9999399AF8504133333333FD4954419A99990995F85041B81E852BFF495441AE47E11A90F85041D7A370DD014A54419A9999F98CF85041C3F528CC034A54417B14AE778AF8504185EB5158054A5441E17A14BE86F85041666666D6084A5441AE47E15A86F850413D0AD733094A54410AD7A35082F85041F6285C7F0E4A5441D7A3705D7CF8504114AE47D1154A5441E17A14AE7AF850411F85EBD1174A5441E17A14EE78F850418FC2F5E8194A54413D0AD78378F8504148E17A641A4A54415C8FC21577F85041295C8F721B4A5441EC51B88E74F850410AD7A3501D4A5441C3F5288C73F85041D7A370BD1D4A54415C8FC26570F85041000000101F4A5441A4703DCA6AF85041713D0A07204A54411F85EBC166F850411F85EB31204A54418FC2F51864F85041E17A144E204A544152B81E9560F850413D0AD773204A5441C3F5281C5DF85041C3F5289C204A5441E17A14AE5BF850415C8FC2C5204A5441AE47E11A57F85041A4703D4A214A5441666666F650F85041A4703DAA224A5441C3F5286C52F85041713D0AB7244A54418FC2F57857F850418FC2F5A82A4A5441B81E854B5CF85041000000702F4A5441EC51B83E60F85041713D0AA7324A5441CDCCCCFC62F85041F6285C6F344A5441B81E854B63F8504148E17AA4384A5441295C8F926EF850415C8FC2F53C4A5441713D0AD777F850418FC2F5483F4A5441AE47E17A7BF85041E17A14EE3D4A5441CDCCCC4C84F85041F6285CEF3F4A5441EC51B81E86F85041B81E852B3F4A5441666666F688F85041C3F5280C3F4A5441D7A3706D8CF850419A9999493C4A54419A99992992F85041333333C33D4A5441A4703D1A96F85041CDCCCC7C3E4A5441000000209AF850410AD7A3003F4A5441F6285C4FA0F85041713D0AC73E4A5441F6285C3FA4F85041EC51B82E424A5441070000001F85EB918DF850417B14AED7364A544148E17A448BF850418FC2F5A8354A5441EC51B83E8FF85041295C8F32364A54415C8FC27593F8504152B81E25374A5441C3F528BC97F8504133333323384A54413333333399F85041F6285C7F394A54411F85EB918DF850417B14AED7364A54410B00000048E17AF4D4F85041295C8FF2334A54415C8FC235DAF8504100000040364A54419A999959E0F85041D7A3708D384A5441713D0AC7E4F85041713D0A273B4A5441F6285C3FE4F85041CDCCCC1C404A54413D0AD763DBF8504185EB51F8394A54410AD7A330D5F8504114AE4731364A544152B81E45CBF850419A999959314A5441D7A370BDCAF85041333333B3304A54418FC2F528CDF85041A4703D4A314A544148E17AF4D4F85041295C8FF2334A544108000000F6285C3FD2F85041295C8F722F4A54413D0AD773E5F85041F6285C4F344A54419A999949DFF8504148E17AD4334A54411F85EB61D9F850410AD7A300334A5441713D0AC7D4F850418FC2F568314A5441AE47E12ACFF850417B14AE572F4A54413D0AD7B3CAF8504148E17A542D4A5441F6285C3FD2F85041295C8F722F4A5441
+</a>
+
+<b>
+0106000000010000000103000000050000006A000000C86C689FC2F850414DE6D3CB2D4A5441F6285C3FC2F850410AD7A3002F4A544152B81E75C0F8504148E17A94344A54415C8FC2F5BEF85041B81E85AB384A5441AE47E17ABEF850410AD7A3203A4A544148E17A54BBF85041C3F5284C384A5441295C8F52B3F85041E17A14DE334A544114AE4711A8F85041295C8FB22D4A5441000000E0A5F850418FC2F5D82C4A544148E17A149AF850410AD7A3E0264A544114AE47D199F850411F85EB21254A5441C3F5287C9AF850419A9999B9224A5441A4703DDAA4F85041E17A147EFA495441295C8FE29FF8504100000080FB4954419A9999399AF8504133333333FD4954419A99990995F85041B81E852BFF495441AE47E11A90F85041D7A370DD014A54419A9999F98CF85041C3F528CC034A54417B14AE778AF8504185EB5158054A5441E17A14BE86F85041666666D6084A5441AE47E15A86F850413D0AD733094A54410AD7A35082F85041F6285C7F0E4A5441D7A3705D7CF8504114AE47D1154A5441E17A14AE7AF850411F85EBD1174A5441E17A14EE78F850418FC2F5E8194A54413D0AD78378F8504148E17A641A4A54415C8FC21577F85041295C8F721B4A5441EC51B88E74F850410AD7A3501D4A5441C3F5288C73F85041D7A370BD1D4A54415C8FC26570F85041000000101F4A5441A4703DCA6AF85041713D0A07204A54411F85EBC166F850411F85EB31204A54418FC2F51864F85041E17A144E204A544152B81E9560F850413D0AD773204A5441C3F5281C5DF85041C3F5289C204A5441E17A14AE5BF850415C8FC2C5204A5441AE47E11A57F85041A4703D4A214A5441666666F650F85041A4703DAA224A5441C3F5286C52F85041713D0AB7244A54418FC2F57857F850418FC2F5A82A4A5441B81E854B5CF85041000000702F4A5441EC51B83E60F85041713D0AA7324A5441CDCCCCFC62F85041F6285C6F344A5441B81E854B63F8504148E17AA4384A5441295C8F926EF850415C8FC2F53C4A5441713D0AD777F850418FC2F5483F4A5441AE47E17A7BF85041E17A14EE3D4A5441CDCCCC4C84F85041F6285CEF3F4A5441EC51B81E86F85041B81E852B3F4A5441666666F688F85041C3F5280C3F4A5441D7A3706D8CF850419A9999493C4A54419A99992992F85041333333C33D4A5441A4703D1A96F85041CDCCCC7C3E4A5441000000209AF850410AD7A3003F4A5441F6285C4FA0F85041713D0AC73E4A5441F6285C3FA4F85041EC51B82E424A544114AE4751A7F8504100000090464A54418FC2F5D8A8F85041D7A3705D4B4A544152B81EE5AAF85041E17A14CE4E4A544185EB5138AEF85041F6285CAF524A5441C3F528ECB1F850419A9999A9564A54410AD7A3D0B4F850418FC2F5F8584A54418FC2F578B7F8504185EB51185B4A54411F85EB61B8F8504133333363564A54410AD7A3B0BAF850419A9999794A4A5441A4703D6ABBF85041000000C0484A5441E17A14CEBEF8504114AE47B13C4A5441295C8F52BFF8504152B81ED53A4A544114AE4741CCF850418FC2F508404A544152B81ED5CFF8504152B81E15414A54419A999949D2F850418FC2F5A8414A5441EC51B8BED4F8504152B81EB5424A544185EB51B8D5F85041F6285CAF434A544152B81EF5DAF850415C8FC2F5454A54418FC2F5B8E5F8504185EB51F8494A54411F85EBB1ECF850411F85EB914C4A5441CDCCCC7CF3F85041D7A370FD4E4A5441295C8F32F8F85041EC51B8CE504A5441295C8FE2F8F85041B81E85BB4F4A544152B81EE5F9F85041713D0A274E4A544185EB51E8FBF85041E17A142E4A4A544148E17AF4FCF8504152B81E75464A54418FC2F558FDF8504114AE4701454A54413D0AD793FDF85041713D0A87434A54415C8FC2B5FDF850419A999949414A544148E17AE4FDF85041CDCCCC0C3F4A54410AD7A330FEF850411F85EB513C4A5441C3F5287CFEF850415C8FC2153A4A54419A9999B9FEF85041295C8F72384A5441333333F3FDF850417B14AE472F4A5441D7A3700DF9F85041F6285CCF2F4A54417B14AE07F5F85041EC51B83E304A544152B81E45F2F850413D0AD773304A5441713D0A67F1F8504148E17A84304A5441F6285CBFEDF85041E17A14AE304A5441713D0AF7ECF85041713D0AC7304A5441C3F528DCE9F85041AE47E12A314A544114AE4791E5F85041AE47E1CA304A544133333313E1F850410AD7A3A02F4A5441CDCCCC9CD9F850410AD7A3902D4A5441E17A143ED2F85041C3F5287C2B4A544185EB5158CBF85041AE47E16A294A5441713D0AB7C4F8504185EB5148274A5441EC51B86EC3F8504114AE47312B4A5441176B8744C3F8504136A1EEB82B4A5441C86C689FC2F850414DE6D3CB2D4A544111000000E1FAAEECD0F85041F0D0CB92324A544148E17AF4D4F85041295C8FF2334A5441488E0CE1D8F850415E51B7AA354A54413CE1FCE9DBF8504168E3DBD8364A54415961305BDEF85041BF2E09CE374A54419A999959E0F85041D7A3708D384A5441A5347D86E0F850410FF5CCA7384A5441976AD46CE4F85041B4874E2F3A4A5441F8A09C76E4F850411160EB9A3A4A5441713D0AC7E4F85041713D0A273B4A5441F6285C3FE4F85041CDCCCC1C404A54413D0AD763DBF8504185EB51F8394A54410AD7A330D5F8504114AE4731364A544152B81E45CBF850419A999959314A5441D7A370BDCAF85041333333B3304A54418FC2F528CDF85041A4703D4A314A5441E1FAAEECD0F85041F0D0CB92324A5441070000001F85EB918DF850417B14AED7364A544148E17A448BF850418FC2F5A8354A5441EC51B83E8FF85041295C8F32364A54415C8FC27593F8504152B81E25374A5441C3F528BC97F8504133333323384A54413333333399F85041F6285C7F394A54411F85EB918DF850417B14AED7364A54410900000033CF1BDADAF850416D41249A414A5441575D2CF0D5F85041C17E50C63F4A5441F425653FCDF85041F1B9397C3C4A5441ADADACF2C3F8504186B37019384A5441799933B8C4F8504112DEA504384A5441CFB436D2C8F85041AC1F581D394A54417F55E193D0F850419539D93D3C4A544115A1217FD8F8504135541BDB3F4A544133CF1BDADAF850416D41249A414A544109000000F6285C3FD2F85041295C8F722F4A54413D0AD773E5F85041F6285C4F344A5441A9B99F89E4F85041F84C28ED354A5441C6F9C656DFF85041F977ED83344A54411F85EB61D9F850410AD7A300334A5441713D0AC7D4F850418FC2F568314A5441AE47E12ACFF850417B14AE572F4A54413D0AD7B3CAF8504148E17A542D4A5441F6285C3FD2F85041295C8F722F4A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239473 - 284195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD74314BD5041F6285C0FD6D254415C8FC2E518BD504148E17A54D0D2544148E17A6419BD5041A4703DAACFD25441713D0AB7FCBC504100000080A7D25441EC51B8DEF8BC504148E17A14A8D25441F6285CBFF7BC50413D0AD7B3A9D254418FC2F5B8F7BC5041666666E6B2D254419A9999D9F5BC5041EC51B83EB7D25441C3F5289C0FBD504133333353DBD254413D0AD74314BD5041F6285C0FD6D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000060A799D9F5BC5041F631B83EB7D25441D941299C0FBD504124DD3253DBD2544149A128E812BD504161239A98D7D25441F189D64314BD5041C3015C0FD6D254417E901CD016BD5041CD858EE8D2D254415C8FC2E518BD504148E17A54D0D25441120C231219BD5041B8CFDC18D0D254418D5D7A6419BD504125B83CAACFD25441713D0AB7FCBC504100000080A7D25441AC8CB9DEF8BC5041CEB17A14A8D254411BFFD835F8BC5041F2EA9208A9D254412EF36516F8BC5041372D0836A9D254416C405CBFF7BC504154E8D6B3A9D254419189F6B8F7BC5041CEAC66E6B2D254410EAD8406F6BC5041068D7DD6B6D2544160A799D9F5BC5041F631B83EB7D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239494 - 178029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F56859BE5041E17A141E3BCE54413D0AD74356BE504148E17A843ACE5441000000E055BE50418FC2F5283BCE5441F6285CFF54BE5041D7A3707D3BCE544152B81EB553BE50417B14AE873BCE54419A99991953BE5041D7A370BD3BCE544185EB51784DBE504148E17AA43ACE5441D7A3709D4DBE5041CDCCCCDC38CE54418FC2F5384CBE50417B14AE9738CE5441EC51B88E4BBE50411F85EBA140CE5441D7A3709D44BE50415C8FC20540CE54418FC2F57844BE5041333333D341CE5441C3F5286C43BE5041333333F34ECE5441EC51B8AE47BE504148E17A344FCE54418FC2F5C84ABE50418FC2F5C851CE5441C3F528BC4FBE5041713D0AE755CE544114AE479151BE50417B14AEE744CE54410000005058BE5041CDCCCC9C46CE54418FC2F56859BE5041E17A141E3BCE5441
+</a>
+
+<b>
+010600000001000000010300000001000000040000000CAA058651BE504177721A5045CE544135D0370851BE5041456302DF49CE54414B1F9D8C51BE50414C9A125145CE54410CAA058651BE504177721A5045CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239494 - 365329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F56859BE5041E17A141E3BCE54413D0AD74356BE504148E17A843ACE5441000000E055BE50418FC2F5283BCE5441F6285CFF54BE5041D7A3707D3BCE544152B81EB553BE50417B14AE873BCE54419A99991953BE5041D7A370BD3BCE544185EB51784DBE504148E17AA43ACE5441D7A3709D4DBE5041CDCCCCDC38CE54418FC2F5384CBE50417B14AE9738CE5441EC51B88E4BBE50411F85EBA140CE5441D7A3709D44BE50415C8FC20540CE54418FC2F57844BE5041333333D341CE5441C3F5286C43BE5041333333F34ECE5441EC51B8AE47BE504148E17A344FCE54418FC2F5C84ABE50418FC2F5C851CE5441C3F528BC4FBE5041713D0AE755CE544114AE479151BE50417B14AEE744CE54410000005058BE5041CDCCCC9C46CE54418FC2F56859BE5041E17A141E3BCE5441
+</a>
+
+<b>
+010600000001000000010300000001000000040000000CAA058651BE504177721A5045CE544135D0370851BE5041456302DF49CE54414B1F9D8C51BE50414C9A125145CE54410CAA058651BE504177721A5045CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>162020 - 3360494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A370BD39475141713D0A27444D5441B81E85FB3647514152B81E95444D544152B81E053347514148E17AE4444D544152B81E453147514152B81EB5454D5441C3F528DC31475141333333034A4D5441666666863247514185EB51A8514D5441333333E332475141F6285C3F584D5441B81E853B3347514148E17A145F4D5441B81E855B334751415C8FC245654D54415C8FC25534475141C3F528AC724D544166666666384751417B14AE67724D544114AE47713847514148E17A54714D54415C8FC2C53B47514185EB51C8704D5441B81E853B41475141CDCCCCAC704D5441F6285C7F454751418FC2F538714D54411F85EB614947514100000080714D5441666666064947514148E17A44644D5441295C8F12494751411F85EB01514D5441295C8F024947514185EB5178504D5441666666F648475141333333D3444D5441000000D03D475141C3F5286C434D5441D7A370BD39475141713D0A27444D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002000000098A3BF5232475141EBE085564F4D544106A49ADC314751417A3A36F04A4D5441FCDB2B6B284751411A7652594C4D54414BF33FE520475141B9256A774C4D54413CEA7DA91E475141DD904A4F4C4D54412C55B7221B4751410517CA7B4F4D544140D1E355184751416DD9ABFC514D5441EC51B88E154751413D0AD753564D5441A4703DDA144751413D0AD7C3574D54418FC2F5781247514152B81ED55E4D54417B14AED71047514148E17A94664D5441A4703DDA0F475141D7A370CD6D4D54418FC2F5B80E4751417B14AE67754D5441AE47E1DA0C475141333333E37A4D5441AE1569800B475141D1432BF97E4D5441295C8F320A4751411F85EB61824D54415CA023770E47514147202D6F824D5441B81E856B10475141713D0A67824D5441CDCCCC8C23475141A4703DDA824D54411F85EB712347514185EB51D86F4D54413D0AD79323475141CDCCCCBC644D54410AD7A3A022475141EC51B81E594D54413D0AD7A32B47514100000090584D5441EC51B85E2C475141D7A3704D644D544148E17AA42D475141000000C0784D544152B81E153047514152B81E35754D54415C8FC25534475141C3F528AC724D5441B81E855B334751415C8FC245654D5441B81E853B3347514148E17A145F4D5441333333E332475141F6285C3F584D5441AEDE787D324751415CEAAE41514D544198A3BF5232475141EBE085564F4D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>199154 - 976789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000D36FB2A094C350416FD8E7F421395541278CBC6E97C35041139C314C22395541F559DDBD9BC350413CC5D12823395541B5D509769FC35041BE2BF09C2339554151C20F22A4C350410DB1F36D243955419E2912FDA7C3504128889FB324395541AD7B0694A8C35041022C3CBF24395541B3158064AAC35041B57375D624395541B097928CADC3504115E879542539554158BA00D7ADC350418C40669C24395541A83F04A8AEC350413036AB1C24395541792B26EDAFC3504176A5BC421E395541F2D9C99AB1C3504139842BB113395541D15AD4D9B2C350413E9B62D00D3955413EDA15BDB2C350415D1C91910D395541CE9228C8B3C350419439AE2007395541EBF953D1B4C3504109909CD7013955415693C00CB6C350414F2CAF27FA38554111A8360CB7C350418049CCB6F3385541DFC61B69B7C35041E72903F3EF3855415C8FC2B5B1C350411F85EB31F0385541AE47E12A9CC350415C8FC295F03855413D0AD7B398C3504152B81E4507395541EC51B84E95C3504114AE47811D395541D36FB2A094C350416FD8E7F421395541
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000009BED8149B3C3504154D19C2E0A395541D15AD4D9B2C350413E9B62D00D3955417FA1918EB1C35041DFD91EFE1339554184D69FCEB0C350413B24DAB6183955411B857877B0C35041E624AFDB1A395541792B26EDAFC3504176A5BC421E395541A2E57B88AFC3504183F983122039554169E05F76AFC350416CC8F26520395541A3042BC2AEC35041D0732FA4233955417903BCB3AEC35041C0DDAEE6233955411B15B7AEAEC350413ABACEFD23395541A83F04A8AEC350413036AB1C24395541F2BD3EF2ADC35041CA5AC08B24395541B097928CADC3504115E8795425395541333D45A4AAC35041D946E9FC24395541B3158064AAC35041B57375D624395541AD7B0694A8C35041022C3CBF243955411C4ED01EA8C350411E0138B624395541F39A5BA7A7C350413DA592AD2439554151C20F22A4C350410DB1F36D2439554153FC4E12A4C3504162EF326B2439554102F003659FC3504151B8DC9A23395541F559DDBD9BC350413CC5D12823395541D81E34919BC35041D01FE31F23395541A4EF2E3E97C35041139C4A4622395541D36FB2A094C350416FD8E7F4213955418FC2F58891C350415C8FC2353639554148E17A848EC350419A9999F9493955415C8FC285A1C350417B14AEB73A39554185EB51C8A7C35041AE47E10A3639554152B81EE5A8C35041AE47E11A34395541A4703DAAB1C350411F85EB612C395541D7A370BDB6C35041295C8F6228395541295C8F92B9C350419A9999D9153955418FC2F598BCC350413D0AD713023955410AD7A370BFC35041B81E857BEF385541DC3A3A75B7C35041D3668FE5EF3855415287E621B7C350413F9DCBD5F238554111A8360CB7C350418049CCB6F33855415693C00CB6C350414F2CAF27FA385541E57E4801B6C35041A1553D6FFA385541EBF953D1B4C3504109909CD701395541FF9759CAB3C3504107887F15073955419BED8149B3C3504154D19C2E0A395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164277 - 227310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000005C000000B81E85BBD339514185EB5158900B5541A4703D9AD039514166666656930B5541E17A143ECD3951418FC2F518960B55413D0AD753C939514185EB5108980B554148E17AD4C539514114AE4781990B5541295C8FC2C43951411F85EBD1980B554114AE4771C3395141B81E851B960B5541F6285CCFBF395141F6285CCF930B5541C3F5288CBD3951411F85EB91940B5541F6285C8FBA395141A4703DAA950B5541B81E854BB739514100000090960B55411F85EB31B53951418FC2F538970B5541EC51B83EB2395141E17A149E980B554114AE4741B1395141D7A370DD9A0B55413D0AD7E3B139514152B81E459C0B55410AD7A300B43951417B14AE879D0B5541A4703D4AB7395141B81E85CB9F0B5541000000B0BA395141F6285CAFA00B554100000040BA395141D7A3705DA40B5541C3F5281CB53951415C8FC225AC0B5541CDCCCC7CB2395141F6285C4FAF0B55410AD7A3F0B639514148E17A54B30B554114AE4771B939514148E17A74B00B5541E17A145EBC395141666666B6AC0B5541A4703DCABF395141295C8F12A90B55419A999979C3395141B81E85DBA40B554114AE4791C6395141295C8F42A10B5541A4703D6AC9395141AE47E11A9E0B55418FC2F548CB395141295C8FF29B0B5541295C8FF2CD395141666666169A0B5541EC51B8BED1395141A4703D0A980B554185EB5158D5395141CDCCCC3C960B5541295C8F52D6395141D7A3705D950B55411F85EB21D93951410AD7A350940B5541A4703D8ADB3951410AD7A350930B554166666606DE39514185EB5108930B5541A4703D1AE139514148E17A84920B5541E17A145EE4395141295C8FE2910B5541B81E85BBE7395141666666B6900B554185EB51B8EA3951417B14AEF78F0B55411F85EBA1EE395141C3F528AC8E0B554114AE47E1EF3951415C8FC2458E0B554100000010F0395141C3F5289C8C0B5541666666B6F23951410AD7A3008A0B5541D7A3705DF5395141666666A6870B5541295C8F12F83951418FC2F548870B55411F85EB71FA3951418FC2F578890B554185EB51F8FC395141B81E856B880B5541C3F5285CFF39514133333353870B55410AD7A320013A5141EC51B80E860B554114AE4781033A514148E17A94840B55411F85EB91053A514148E17AE4820B5541333333F3073A51417B14AE47810B55418FC2F548093A5141E17A148E800B5541713D0AE70B3A514100000060800B5541D7A3708D0E3A5141CDCCCCDC7F0B55419A999989103A5141D7A3709D7F0B5541C3F5286C133A5141AE47E1EA7E0B5541CDCCCCBC143A51418FC2F5687E0B5541A4703DDA133A5141AE47E1BA7A0B55413D0AD7F30F3A51411F85EBC17A0B5541CDCCCCFC083A5141333333F37A0B5541D7A370FD023A5141295C8FE27A0B554148E17A44FE39514114AE47017B0B554148E17AC4FA395141D7A370CD7A0B5541EC51B8DEF63951419A9999F9790B554152B81E45F2395141F6285CDF780B5541AE47E1CAEE395141EC51B81E770B5541295C8F82EC395141A4703DCA760B55415C8FC255E83951417B14AE67760B5541D7A3703DE7395141CDCCCCBC760B554133333373E73951413D0AD733770B554148E17AA4EC395141E17A14FE7E0B554148E17AC4EE395141E17A140E7F0B554114AE4761F1395141EC51B80E7F0B554114AE4761F339514185EB51787F0B55410AD7A380F5395141C3F5289C800B55410AD7A360F73951418FC2F5D8810B554133333373F8395141F6285CEF820B554185EB5178F839514185EB5158840B554100000060F7395141295C8FB2840B55410AD7A3B0F63951419A9999E9840B5541CDCCCC9CF3395141AE47E12A850B5541333333C3EF39514114AE4711860B5541CDCCCCECE639514152B81E55890B5541CDCCCC2CE53951417B14AE778A0B5541CDCCCC3CE3395141AE47E1FA8A0B5541333333A3E03951413D0AD7138B0B5541333333D3DE3951413D0AD7138B0B554148E17A54DB395141D7A3709D8C0B55411F85EB61D8395141333333F38D0B5541B81E85BBD339514185EB5158900B5541
+</a>
+
+<b>
+0106000000010000000103000000010000009A00000048E17AC4EE395141E17A140E7F0B55415CB6ADCFEF395141ECEF550E7F0B554114AE4761F1395141EC51B80E7F0B554114AE4761F339514185EB51787F0B55410AD7A380F5395141C3F5289C800B55410AD7A360F73951418FC2F5D8810B554127301FE1F73951417D203D5B820B554133333373F8395141F6285CEF820B55417A40EE8FF839514116C97051830B55416C63E82AF93951410F047169850B5541490B1F93F7395141885233D1850B55414D63810EF6395141744D792D860B5541F849FFDCF3395141C8C199A2860B5541473DE58EF239514107718EDF860B5541952924F4EF3951411C0DBF58870B5541410998E6ED3951419AA3DEA2870B55414DE7754CEC3951413EFCE5D7870B5541F9D90661EA395141E9AD2845880B5541070E43ADE939514108FFA46D880B55415F53147FE8395141BE9F7FC0880B5541CD16417CE839514192D28AC1880B55412E714B6EE8395141C119B3C6880B5541F8CAD763E83951416C9D8FCA880B5541CE01BC60E8395141DC9DB5CB880B5541B99C7BF4E6395141A3154852890B5541CDCCCC2CE53951417B14AE778A0B5541CDCCCC3CE3395141AE47E1FA8A0B5541C2416B2CE3395141B3897EFB8A0B5541B307BB46E2395141E28B1B048B0B5541333333A3E03951413D0AD7138B0B554123FEFCB0DF3951413D0AD7138B0B5541333333D3DE3951413D0AD7138B0B554148E17A54DB395141D7A3709D8C0B55411F85EB61D8395141333333F38D0B5541B81E85BBD339514185EB5158900B5541A4703D9AD039514166666656930B5541CBC3FC3DD0395141D2CF2DA2930B5541C025DF45D0395141D3CD32BA930B554128664E9DCF3951414CC12A26940B5541E17A143ECD3951418FC2F518960B55413D0AD753C939514185EB5108980B554148E17AD4C539514114AE4781990B5541295C8FC2C43951411F85EBD1980B554114AE4771C3395141B81E851B960B5541F6285CCFBF395141F6285CCF930B554174E953A4BD3951414640CD89940B55413D16D50CBB3951412B3F407C950B5541F6285C8FBA395141A4703DAA950B55410498AC77BA3951416C39C0B0950B5541B81E854BB739514100000090960B55411F85EB31B53951418FC2F538970B5541CC2FBB41B23951419AF3A79C980B554117FA790DB2395141F86CDF0D990B554114AE4741B1395141D7A370DD9A0B55413D0AD7E3B139514152B81E459C0B55410AD7A300B43951417B14AE879D0B5541E8CA75D4B6395141FD6F5F7A9F0B5541A4703D4AB7395141B81E85CB9F0B5541EE5B2D6EBA395141E0021E9EA00B554167A8DFB5BA395141432825AFA00B55418806CEAEBA395141B2D769B9A00B5541E29EB1A4BA3951417606760EA10B55419578A77CBA395141436D405FA20B554100000040BA395141D7A3705DA40B5541C3F5281CB53951415C8FC225AC0B5541A9831DB6B23951416F2E3E0AAF0B55410B95227FB23951412CE07751AF0B55410AD7A3F0B639514148E17A54B30B554120BDFA09B73951411D665E37B30B554114AE4771B939514148E17A74B00B5541E17A145EBC395141666666B6AC0B5541C010681CBE3951411B9DB5DBAA0B5541A50689DBBF3951417CF8C6FEA80B55410F9DD885C139514115D02617A70B554193795316C23951416544E471A60B5541E4B3FB82C239514168559BF5A50B554193870D3FC339514196DE7C1EA50B55415BF75626C4395141D07A9212A40B554114AE4791C6395141295C8F42A10B55411EE89D16C9395141F29988779E0B5541EC6179E3C9395141C6C4018F9D0B55417B7C0A40CB395141F9ABD9FC9B0B55418FC2F548CB395141295C8FF29B0B554135EBAD63CB39514102E2E4DF9B0B55417EAF9F35CD3951410DA6639A9A0B5541295C8FF2CD395141666666169A0B554162539DD0D03951413E939E8A980B5541EC51B8BED1395141A4703D0A980B5541015DA64BD4395141865752C3960B55418613A250D5395141A016A640960B5541E8DD9838D639514107309D74950B5541295C8F52D6395141D7A3705D950B5541F0B55001D939514123C1D25C940B5541FBB70719DB39514129F0A97F930B5541A4703D8ADB3951410AD7A350930B5541A39365B8DB3951418A8E644B930B5541DEA0365CDD395141A2CBAA1B930B554166666606DE39514185EB5108930B55419FA08108E0395141D09E49B2920B5541A4703D1AE139514148E17A84920B5541E3A4B084E2395141FF05443E920B55419749DC60E43951417E5697E1910B5541B81E85BBE7395141666666B6900B5541312F190EEA3951411BEA2022900B554185EB51B8EA3951417B14AEF78F0B5541ECDD9F9FEB395141C2D41EAB8F0B55411F85EBA1EE395141C3F528AC8E0B554114AE47E1EF3951415C8FC2458E0B554100000010F0395141C3F5289C8C0B5541666666B6F23951410AD7A3008A0B5541D7A3705DF5395141666666A6870B5541295C8F12F83951418FC2F548870B5541E92F4FB9F83951411DEDB4E2870B55412B34CE48FA395141A42C0D53890B55411F85EB71FA3951418FC2F578890B554185EB51F8FC395141B81E856B880B5541152CE366FD39514166D0DC38880B5541A657B164FF3951415FBF144D870B55412D18E4CA003A5141883C364C860B55410AD7A320013A5141EC51B80E860B5541A5A761A4013A51410360D9BC850B55411619578D033A51416DDE9F8A840B55411F85EB91053A514148E17AE4820B5541333333F3073A51417B14AE47810B55418FC2F548093A5141E17A148E800B554153C4EF520B3A5141894C2F6A800B5541713D0AE70B3A514100000060800B5541D7A3708D0E3A5141CDCCCCDC7F0B55419A999989103A5141D7A3709D7F0B5541E3CB5F55133A5141038D63F07E0B5541CA190EB2133A514197C0E7CF7E0B5541CDCCCCBC143A51418FC2F5687E0B55417F13CAAD143A5141E4F98A2A7E0B5541FBA3DAAB143A514129DC7E227E0B5541CDFFCEAA143A5141BCF4251E7E0B5541A4703DDA133A5141AE47E1BA7A0B55414911F6430C3A51417CD101DC7A0B5541CDCCCCFC083A5141333333F37A0B5541B5C0624F033A5141B8B772E37A0B5541713F9AAFFE3951414BD88EFE7A0B554148E17A44FE39514114AE47017B0B554135B1C2B1FD3951410E8ECAF87A0B5541E71595C1FA39514114749CCD7A0B5541D6E48667F73951413C70A5167A0B5541EC51B8DEF63951419A9999F9790B554152B81E45F2395141F6285CDF780B5541D4584C34F239514138F2E1D6780B554159FB1C97EE39514143C3A6F8770B5541AD34E5E2ED3951417195C4DE770B554191F88B7FEC39514191FA00AC770B5541AB1AEBD2EA395141D8BC4583770B554133333373E73951413D0AD733770B55419B0CD8B8EC395141FACEADFE7E0B554148E17AC4EE395141E17A140E7F0B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164513 - 214695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000008F00000085EB513858345141C3F5286C7205554152B81E355C3451417B14AE0770055541A4703DEA5E345141A4703D5A6C0555419A999969613451410000001069055541D7A370CD623451410AD7A390670555419A9999A9623451413D0AD70366055541A4703D0A633451413D0AD763640555418FC2F5D8633451411F85EBC161055541D7A3709D633451413D0AD70361055541D7A3707D63345141295C8FC2600555413D0AD72363345141295C8F92600555413333334362345141CDCCCC6C600555419A9999C96134514148E17A646005554148E17A4461345141295C8F1260055541C3F528FC60345141C3F5287C5F055541295C8FA260345141A4703D0A5F055541D7A3705D603451411F85EB115F055541A4703DEA5F345141AE47E17A5F0555417B14AEA75F345141713D0AD75F055541713D0AB75F3451410AD7A340600555410AD7A3F05F345141EC51B89E600555417B14AEF75F345141000000E060055541713D0AE75F34514114AE4751610555417B14AE975F3451415C8FC2B561055541CDCCCC2C5F345141666666F66105554185EB51F85D34514185EB517863055541C3F5282C5D345141713D0AA765055541295C8F225D3451417B14AE2766055541A4703DFA5C3451415C8FC28566055541EC51B8AE5C345141E17A141E6705554114AE47715C3451413D0AD76367055541EC51B8FE5B34514148E17AC46705554152B81E355B34514148E17A44680555415C8FC2555A345141000000B068055541C3F5287C5934514114AE4731690555413333339358345141C3F5288C690555417B14AEA75734514148E17AC469055541EC51B8CE56345141AE47E10A6A05554185EB51E8553451411F85EB116A0555410000003055345141295C8F526A0555410AD7A39054345141F6285CBF6A055541EC51B83E54345141666666066B055541E17A141E5434514148E17A646B05554152B81E3554345141CDCCCCFC6B055541CDCCCC7C543451413D0AD7C36C05554185EB51A85434514185EB51986D055541EC51B8BE54345141713D0A776E055541A4703D4A553451411F85EB617105554114AE47B152345141AE47E1FA73055541333333934F345141000000E07605554152B81E454B345141D7A370CD77055541AE47E15A49345141EC51B8FE79055541CDCCCC3C49345141B81E857B7A0555419A999919493451418FC2F5D87A055541295C8FD248345141295C8F827B055541E17A145E483451411F85EBE17B055541333333C34734514114AE47417C055541713D0A1747345141CDCCCC5C7C05554166666686463451410AD7A3907C05554185EB510846345141333333F37C055541000000F045345141EC51B8AE7D0555416666662646345141000000707E055541295C8F62463451411F85EBB17E055541000000C046345141333333337F0555417B14AEF7463451418FC2F5E87F055541666666C6463451419A9999898005554185EB51984634514185EB51188105554114AE47A145345141295C8F028405554133333383413451411F85EB218A0555415C8FC2A53A3451418FC2F5488C055541EC51B85E39345141F6285C4F8F0555413D0AD75339345141CDCCCCBC8F055541333333E338345141D7A3707D90055541AE47E15A38345141AE47E1FA900555418FC2F58837345141E17A147E91055541CDCCCCEC363451410AD7A30092055541C3F5287C36345141D7A3709D9205554114AE472135345141CDCCCC0C950555411F85EBE13334514148E17A449705554152B81EC53334514185EB51C8970555418FC2F5E83334514148E17A64980555418FC2F5683434514148E17A049A055541D7A370AD34345141333333739A055541295C8F9235345141B81E859B9B055541AE47E12A36345141AE47E1FA9B055541E17A145E36345141295C8F429C055541F6285C5F363451411F85EB819C0555410AD7A330363451419A9999099D0555415C8FC2A53534514114AE47A19D05554114AE47F13434514148E17AE49D055541F6285C1F343451413D0AD7239E055541295C8FB23334514114AE47719E0555415C8FC2B533345141713D0A179F055541CDCCCC9C3334514185EB5158A0055541713D0A3733345141A4703D1AA10555413D0AD7B332345141CDCCCCCCA1055541EC51B8BE3134514185EB5148A205554114AE471131345141EC51B86EA205554185EB514830345141666666B6A20555417B14AE17303451419A999939A40555416666665630345141F6285CAFA60555413D0AD7233134514152B81E45A90555413D0AD7633134514185EB51D8A905554166666666313451410AD7A370AA055541295C8FA2313451413D0AD7F3AA0555415C8FC27531345141B81E85BBAB055541333333D3313451419A9999A9AC05554114AE471132345141D7A3708DAD055541CDCCCC8C3234514166666626B0055541CDCCCC0C33345141E17A14AEB20555416666663633345141B81E85EBB3055541C3F528CC32345141B81E853BB505554114AE475132345141295C8F92B60555417B14AED73C3451418FC2F5C8BA055541AE47E1BA3B34514148E17AD4B6055541CDCCCC3C3B345141666666D6B3055541295C8F023A3451417B14AE17B1055541A4703D5A393451415C8FC215AF0555410000005039345141D7A3700DAC055541EC51B85E3834514152B81E35AA0555410000002038345141713D0A57A70555413D0AD773383451415C8FC215A5055541EC51B8AE39345141AE47E1CAA2055541EC51B8DE3A34514185EB51E8A00555417B14AE773C345141EC51B84E9F05554152B81EF53D34514185EB51D89E055541D7A3708D3F345141AE47E18A9C0555415C8FC255413451415C8FC2459905554148E17A7442345141AE47E10A97055541F6285CBF43345141AE47E15A93055541295C8F32443451410AD7A360920555417B14AE5744345141E17A14EE910555410AD7A31045345141295C8F828F0555415C8FC29545345141C3F5284C8D055541CDCCCC5C46345141E17A149E8B055541B81E853B47345141D7A370BD890555417B14AE674834514152B81E4588055541F6285CEF4934514185EB517886055541000000F04B3451418FC2F51884055541F6285CBF4E345141F6285C9F80055541AE47E17A51345141AE47E13A7D0555413D0AD7F35334514148E17A947705554185EB513858345141C3F5286C72055541
+</a>
+
+<b>
+0106000000010000000103000000010000005100000052F38EA2313451419925D6F3AA055541A552D48D3134514149433D50AB055541381EC37531345141F9C985BBAB055541F28A33D331345141021D9AA9AC0555415EFF4711323451414FF1708DAD05554110A570BA3234514148E90F0AB10555410D1CCE0C33345141D50415AEB20555410C93673633345141CB7E84EBB305554128DF8FE532345141B2AE2EEBB4055541C3F528CC32345141B81E853BB505554114AE475132345141295C8F92B6055541AAB6ACD73C3451418C36F5C8BA055541AE47E1BA3B34514148E17AD4B6055541CDCCCC3C3B345141666666D6B3055541295C8F023A3451417B14AE17B1055541A4703D5A393451415C8FC215AF0555410000005039345141D7A3700DAC055541EC51B85E3834514152B81E35AA055541C48309253834514154D3FE91A70555410000002038345141713D0A57A70555413D0AD773383451415C8FC215A5055541EC51B8AE39345141AE47E1CAA2055541EC51B8DE3A34514185EB51E8A00555417B14AE773C345141EC51B84E9F05554152B81EF53D34514185EB51D89E055541D7A3708D3F345141AE47E18A9C0555415C8FC255413451415C8FC24599055541FDDE38B441345141F5D9AD8998055541EBB379744234514197C1E00A9705554188F75ABF43345141D27FE25A93055541C80B837439345141C742C21B8F0555412335B95E39345141F00E5A4F8F055541BF1B3E593934514160C274868F0555413D0AD75339345141CDCCCCBC8F055541BFDD8D163934514159DA9C2590055541A94934E338345141A381717D9005554180002D7A38345141C3FD14DE90055541AE47E15A38345141AE47E1FA900555418FC2F58837345141E17A147E91055541B57C9B3337345141ADBD70C591055541B29BCCEC36345141651BA400920555419BB0A3CE36345141EDF99F2A92055541D8F8297C3634514199D7709D9205554106FB482135345141BE32CE0C95055541672EECE133345141CBF2794497055541746892D333345141079229869705554152B81EC53334514185EB51C8970555418FC2F5E83334514148E17A64980555418FC2F5683434514148E17A049A055541D7A370AD34345141333333739A055541295C8F9235345141B81E859B9B055541AE47E12A36345141AE47E1FA9B055541E17A145E36345141295C8F429C055541F6285C5F363451411F85EB819C0555410AD7A330363451419A9999099D0555415C8FC2A53534514114AE47A19D05554114AE47F13434514148E17AE49D055541E67EE28434345141606532059E055541B7265D1F34345141C706D8239E055541EE7B90B23334514142B948719E05554168CC8DB4333451416A6490D89E0555415C8FC2B533345141713D0A179F055541CDCCCC9C3334514185EB5158A0055541DEA08E4E33345141DA9F6CEDA0055541320F0B373334514164673C1AA1055541C489AA2D333451412E60FF26A10555413D0AD7B332345141CDCCCCCCA1055541920EF27C323451414F5476E8A1055541858DB8BE3134514182815248A2055541A4EEAC753134514180017E58A205554114AE471131345141EC51B86EA205554185EB514830345141666666B6A2055541E59C2A4830345141344E9FB7A205554104D77C183034514163A3B541A4055541DBECEB6630345141F63C94E4A60555413D0AD7233134514152B81E45A90555413D0AD7633134514185EB51D8A90555412783906531345141D385ED3EAA05554129E06666313451415D86A470AA055541E904B76D3134514158BE9780AA05554152F38EA2313451419925D6F3AA055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164513 - 389243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000008F00000085EB513858345141C3F5286C7205554152B81E355C3451417B14AE0770055541A4703DEA5E345141A4703D5A6C0555419A999969613451410000001069055541D7A370CD623451410AD7A390670555419A9999A9623451413D0AD70366055541A4703D0A633451413D0AD763640555418FC2F5D8633451411F85EBC161055541D7A3709D633451413D0AD70361055541D7A3707D63345141295C8FC2600555413D0AD72363345141295C8F92600555413333334362345141CDCCCC6C600555419A9999C96134514148E17A646005554148E17A4461345141295C8F1260055541C3F528FC60345141C3F5287C5F055541295C8FA260345141A4703D0A5F055541D7A3705D603451411F85EB115F055541A4703DEA5F345141AE47E17A5F0555417B14AEA75F345141713D0AD75F055541713D0AB75F3451410AD7A340600555410AD7A3F05F345141EC51B89E600555417B14AEF75F345141000000E060055541713D0AE75F34514114AE4751610555417B14AE975F3451415C8FC2B561055541CDCCCC2C5F345141666666F66105554185EB51F85D34514185EB517863055541C3F5282C5D345141713D0AA765055541295C8F225D3451417B14AE2766055541A4703DFA5C3451415C8FC28566055541EC51B8AE5C345141E17A141E6705554114AE47715C3451413D0AD76367055541EC51B8FE5B34514148E17AC46705554152B81E355B34514148E17A44680555415C8FC2555A345141000000B068055541C3F5287C5934514114AE4731690555413333339358345141C3F5288C690555417B14AEA75734514148E17AC469055541EC51B8CE56345141AE47E10A6A05554185EB51E8553451411F85EB116A0555410000003055345141295C8F526A0555410AD7A39054345141F6285CBF6A055541EC51B83E54345141666666066B055541E17A141E5434514148E17A646B05554152B81E3554345141CDCCCCFC6B055541CDCCCC7C543451413D0AD7C36C05554185EB51A85434514185EB51986D055541EC51B8BE54345141713D0A776E055541A4703D4A553451411F85EB617105554114AE47B152345141AE47E1FA73055541333333934F345141000000E07605554152B81E454B345141D7A370CD77055541AE47E15A49345141EC51B8FE79055541CDCCCC3C49345141B81E857B7A0555419A999919493451418FC2F5D87A055541295C8FD248345141295C8F827B055541E17A145E483451411F85EBE17B055541333333C34734514114AE47417C055541713D0A1747345141CDCCCC5C7C05554166666686463451410AD7A3907C05554185EB510846345141333333F37C055541000000F045345141EC51B8AE7D0555416666662646345141000000707E055541295C8F62463451411F85EBB17E055541000000C046345141333333337F0555417B14AEF7463451418FC2F5E87F055541666666C6463451419A9999898005554185EB51984634514185EB51188105554114AE47A145345141295C8F028405554133333383413451411F85EB218A0555415C8FC2A53A3451418FC2F5488C055541EC51B85E39345141F6285C4F8F0555413D0AD75339345141CDCCCCBC8F055541333333E338345141D7A3707D90055541AE47E15A38345141AE47E1FA900555418FC2F58837345141E17A147E91055541CDCCCCEC363451410AD7A30092055541C3F5287C36345141D7A3709D9205554114AE472135345141CDCCCC0C950555411F85EBE13334514148E17A449705554152B81EC53334514185EB51C8970555418FC2F5E83334514148E17A64980555418FC2F5683434514148E17A049A055541D7A370AD34345141333333739A055541295C8F9235345141B81E859B9B055541AE47E12A36345141AE47E1FA9B055541E17A145E36345141295C8F429C055541F6285C5F363451411F85EB819C0555410AD7A330363451419A9999099D0555415C8FC2A53534514114AE47A19D05554114AE47F13434514148E17AE49D055541F6285C1F343451413D0AD7239E055541295C8FB23334514114AE47719E0555415C8FC2B533345141713D0A179F055541CDCCCC9C3334514185EB5158A0055541713D0A3733345141A4703D1AA10555413D0AD7B332345141CDCCCCCCA1055541EC51B8BE3134514185EB5148A205554114AE471131345141EC51B86EA205554185EB514830345141666666B6A20555417B14AE17303451419A999939A40555416666665630345141F6285CAFA60555413D0AD7233134514152B81E45A90555413D0AD7633134514185EB51D8A905554166666666313451410AD7A370AA055541295C8FA2313451413D0AD7F3AA0555415C8FC27531345141B81E85BBAB055541333333D3313451419A9999A9AC05554114AE471132345141D7A3708DAD055541CDCCCC8C3234514166666626B0055541CDCCCC0C33345141E17A14AEB20555416666663633345141B81E85EBB3055541C3F528CC32345141B81E853BB505554114AE475132345141295C8F92B60555417B14AED73C3451418FC2F5C8BA055541AE47E1BA3B34514148E17AD4B6055541CDCCCC3C3B345141666666D6B3055541295C8F023A3451417B14AE17B1055541A4703D5A393451415C8FC215AF0555410000005039345141D7A3700DAC055541EC51B85E3834514152B81E35AA0555410000002038345141713D0A57A70555413D0AD773383451415C8FC215A5055541EC51B8AE39345141AE47E1CAA2055541EC51B8DE3A34514185EB51E8A00555417B14AE773C345141EC51B84E9F05554152B81EF53D34514185EB51D89E055541D7A3708D3F345141AE47E18A9C0555415C8FC255413451415C8FC2459905554148E17A7442345141AE47E10A97055541F6285CBF43345141AE47E15A93055541295C8F32443451410AD7A360920555417B14AE5744345141E17A14EE910555410AD7A31045345141295C8F828F0555415C8FC29545345141C3F5284C8D055541CDCCCC5C46345141E17A149E8B055541B81E853B47345141D7A370BD890555417B14AE674834514152B81E4588055541F6285CEF4934514185EB517886055541000000F04B3451418FC2F51884055541F6285CBF4E345141F6285C9F80055541AE47E17A51345141AE47E13A7D0555413D0AD7F35334514148E17A947705554185EB513858345141C3F5286C72055541
+</a>
+
+<b>
+0106000000010000000103000000010000005100000052F38EA2313451419925D6F3AA055541A552D48D3134514149433D50AB055541381EC37531345141F9C985BBAB055541F28A33D331345141021D9AA9AC0555415EFF4711323451414FF1708DAD05554110A570BA3234514148E90F0AB10555410D1CCE0C33345141D50415AEB20555410C93673633345141CB7E84EBB305554128DF8FE532345141B2AE2EEBB4055541C3F528CC32345141B81E853BB505554114AE475132345141295C8F92B6055541AAB6ACD73C3451418C36F5C8BA055541AE47E1BA3B34514148E17AD4B6055541CDCCCC3C3B345141666666D6B3055541295C8F023A3451417B14AE17B1055541A4703D5A393451415C8FC215AF0555410000005039345141D7A3700DAC055541EC51B85E3834514152B81E35AA055541C48309253834514154D3FE91A70555410000002038345141713D0A57A70555413D0AD773383451415C8FC215A5055541EC51B8AE39345141AE47E1CAA2055541EC51B8DE3A34514185EB51E8A00555417B14AE773C345141EC51B84E9F05554152B81EF53D34514185EB51D89E055541D7A3708D3F345141AE47E18A9C0555415C8FC255413451415C8FC24599055541FDDE38B441345141F5D9AD8998055541EBB379744234514197C1E00A9705554188F75ABF43345141D27FE25A93055541C80B837439345141C742C21B8F0555412335B95E39345141F00E5A4F8F055541BF1B3E593934514160C274868F0555413D0AD75339345141CDCCCCBC8F055541BFDD8D163934514159DA9C2590055541A94934E338345141A381717D9005554180002D7A38345141C3FD14DE90055541AE47E15A38345141AE47E1FA900555418FC2F58837345141E17A147E91055541B57C9B3337345141ADBD70C591055541B29BCCEC36345141651BA400920555419BB0A3CE36345141EDF99F2A92055541D8F8297C3634514199D7709D9205554106FB482135345141BE32CE0C95055541672EECE133345141CBF2794497055541746892D333345141079229869705554152B81EC53334514185EB51C8970555418FC2F5E83334514148E17A64980555418FC2F5683434514148E17A049A055541D7A370AD34345141333333739A055541295C8F9235345141B81E859B9B055541AE47E12A36345141AE47E1FA9B055541E17A145E36345141295C8F429C055541F6285C5F363451411F85EB819C0555410AD7A330363451419A9999099D0555415C8FC2A53534514114AE47A19D05554114AE47F13434514148E17AE49D055541E67EE28434345141606532059E055541B7265D1F34345141C706D8239E055541EE7B90B23334514142B948719E05554168CC8DB4333451416A6490D89E0555415C8FC2B533345141713D0A179F055541CDCCCC9C3334514185EB5158A0055541DEA08E4E33345141DA9F6CEDA0055541320F0B373334514164673C1AA1055541C489AA2D333451412E60FF26A10555413D0AD7B332345141CDCCCCCCA1055541920EF27C323451414F5476E8A1055541858DB8BE3134514182815248A2055541A4EEAC753134514180017E58A205554114AE471131345141EC51B86EA205554185EB514830345141666666B6A2055541E59C2A4830345141344E9FB7A205554104D77C183034514163A3B541A4055541DBECEB6630345141F63C94E4A60555413D0AD7233134514152B81E45A90555413D0AD7633134514185EB51D8A90555412783906531345141D385ED3EAA05554129E06666313451415D86A470AA055541E904B76D3134514158BE9780AA05554152F38EA2313451419925D6F3AA055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>165355 - 346845
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003F000000333333D399275141295C8F8200015541AE47E17A932751418FC2F538E90055419A99993992275141CDCCCC9CE4005541666666D69527514148E17A84E10055411F85EB019A27514152B81E35E00055419A9999A9A12751411F85EB91DB00554114AE4761A52751415C8FC205D90055411F85EBE1A827514148E17AE4D600554133333333B0275141666666A6D200554152B81E55B3275141666666E6D0005541A4703D2AB7275141D7A3700DCF0055410AD7A370B7275141B81E85EBCE00554152B81E35B627514114AE4751CD00554133333393B327514185EB5138C800554100000030B32751418FC2F558C4005541E17A148EB527514152B81EA5C2005541CDCCCCBCB8275141295C8F82C500554148E17A84BB275141AE47E1CAC8005541666666D6BB275141CDCCCCBCCA00554100000090BE27514152B81E55CC0055415C8FC2B5C127514152B81EB5CF005541000000F0C4275141713D0AE7D10055415C8FC295C7275141E17A14BED20055411F85EB11CD27514148E17A94CF0055417B14AE87CA275141CDCCCCFCCC0055413D0AD753C9275141F6285C0FCB005541F6285CCFC627514152B81ED5C500554152B81E95C1275141333333B3BD0055417B14AE07BA275141C3F528FCB20055418FC2F548B62751410AD7A3A0AD0055413D0AD7A3B327514133333303AA00554152B81EE5AF275141D7A3704DA70055413D0AD7C3AB27514114AE47D1A500554185EB5158A8275141AE47E10AA30055410AD7A370A5275141EC51B88EA10055415C8FC215A4275141F6285C9FA100554152B81E15A2275141000000B0A30055419A9999E9A0275141C3F5288CA7005541B81E85EB9C2751418FC2F598B200554114AE47A19D275141D7A370FDBA005541333333E39D275141AE47E19AC00055417B14AE779E2751413D0AD7B3C30055410AD7A3E09C275141AE47E13ACA00554114AE47B1992751413D0AD783CF005541A4703DEA9427514133333373D1005541713D0A87902751418FC2F518D2005541CDCCCC4C8D2751415C8FC2B5D30055419A9999E98A27514185EB5108D6005541A4703D1A87275141F6285CCFDA005541CDCCCC6C83275141AE47E13ADE005541B81E855B81275141EC51B8AEE0005541C3F5286C8127514185EB51C8E30055411F85EB11842751415C8FC265E7005541F6285CBF872751410AD7A3C0EC00554185EB51D888275141EC51B86EEE005541713D0A978C275141C3F5280CF200554114AE47D18F27514114AE47B1F2005541B81E851B9327514148E17A14F5005541295C8FE295275141D7A3702DF8005541E17A144E97275141713D0A57FB005541000000909727514152B81E05FF005541CDCCCC9C97275141295C8FF200015541333333D399275141295C8F8200015541
+</a>
+
+<b>
+010600000001000000010300000001000000650000006186DC58C027514172D0003FCE005541886F9B67C02751412F773B33CE005541327D6516C127514145AF5258CD005541605E3E2AC22751418430D6F3CC00554143CC1FB5C6275141EA13CEACCC00554185EB51E8C62751411F85EB31CC0055411F85EBA1C42751410AD7A330C80055411F85EB61C32751410AD7A310C6005541D5A168A5C227514179972885C4005541713D0A57C12751417B14AEC7C1005541AD987AE4BD2751414C0C34E3BA005541AF02A3A0B4275141396E6796B00055417193ECB1B42751416B4CC2A5AF00554149173493B4275141FA84C3B5AE0055415F23EC81B12751411E4671DDAB0055411D9FFFFFAF2751418A675C0FAB005541DFFB5989AC275141388FF9EAA90055419A999929AA275141295C8F22A9005541EC51B84EA827514185EB5148A800554100000060A4275141CDCCCCACA60055418CF8AD27A3275141A270EA71A60055413B24AD07A2275141053048D1A600554193A299E9A02751417909298CA7005541F0CA47519D275141BDB73363B4005541023442339D27514188CDF0E8B5005541D9C4D5999D27514134F76FA5BA00554114AE47A19D275141D7A370FDBA005541C5C725C09D2751419A75889EBD0055414BAFACCE9D275141CF3C4EDBBE00554111B311CF9D275141A8F2E8E3BE005541048ABFE59D275141AA1B7DA8C000554145817E749E2751418E72D3A2C30055417B14AE779E2751413D0AD7B3C30055410A8864109E27514167BEDE5BC50055410AD7A3E09C275141AE47E13ACA005541E036EC219B275141FB0C2095CF0055415D1FAF579A275141E90F0BC7D00055415531136E99275141C3D45A8FD100554125EBAC3798275141B90DD703D2005541E8497C64952751416D8C3E4AD2005541AE47E11A94275141D7A3705DD3005541EC51B8EE8B275141C3F5284CD800554148595A028A2751417994C67CD9005541CDCCCCFC87275141D7A3704DDB00554102F36F4D862751416E5166E6DC0055417DDB1D65852751416BDDE12ADE005541F6285C2F85275141713D0AF7DF005541D7A3707D8527514152B81E35E2005541E17A14DE84275141B81E855BE40055415C8FC25587275141AE47E13AE9005541D7A370CD89275141EC51B85EED005541C3F5281C8B275141000000C0EE0055410AD7A3B08D27514185EB5168F1005541B537837F8E2751411362C76DF20055419726E0C38E275141C7DB707BF2005541FA4EBA5A8F275141E4819699F20055418217245C8F275141D8CEDE99F200554114AE47D18F27514114AE47B1F2005541B81E851B9327514148E17A14F500554188E1BC29942751414E7CD441F60055411382519B942751413B137FC0F6005541295C8FE295275141D7A3702DF8005541DED98BEF95275141ECA75C4AF8005541E17A144E97275141713D0A57FB0055415FD5934E97275141FE47265EFB0055416FB5B55A972751418828890BFC005541000000909727514152B81E05FF005541CDCCCC9C97275141295C8FF200015541F6D9DCD299275141416FA08200015541AE47E17A932751418FC2F538E90055419A99993992275141CDCCCC9CE4005541666666D69527514148E17A84E10055411F85EB019A27514152B81E35E00055414ABF16F69C275141BCDE056BDE005541653B99A9A1275141470BEB91DB0055414D0B4761A5275141A386C205D9005541DA548002A6275141B521B7A3D80055411F85EBE1A827514148E17AE4D6005541C0E1CD2FAD27514145B7A265D4005541B1183333B0275141A42265A6D2005541BA1FA8A3B22751410B9F8A49D100554152B81E55B3275141666666E6D0005541677069ADB427514107226E40D0005541C4963D2AB7275141DACE6F0DCF005541D1434643B72751416AC06001CF0055410AD7A370B7275141B81E85EBCE00554152B81E35B627514114AE4751CD00554133333393B327514185EB5138C8005541F6F59339B3275141AB8CADB8C400554100000030B32751418FC2F558C4005541E17A148EB527514152B81EA5C2005541E6779889B7275141EE06725DC300554105095DFFB82751410C5F3CAAC3005541DC47707DBB2751418EDB5A0FC50055418FC2F588BB27514100000000C60055413090F558BB275141DE293403C800554148E17A84BB275141AE47E1CAC80055419A3D71EDBB2751414C56FF6FC90055419B074941BD2751418E633DAACA00554100000090BE27514152B81E55CC0055416186DC58C027514172D0003FCE005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239734 - 365480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A3701DD0BE50419A9999B94BCD5441AE47E1BACDBE5041000000B042CD5441EC51B8CECCBE5041AE47E16A3FCD5441666666F6CBBE5041666666863CCD54417B14AEA7C9BE5041F6285C4F34CD5441CDCCCC2CC5BE50413D0AD72325CD54415C8FC2C5A7BE5041333333B32ACD544185EB5168AEBE5041333333E341CD544100000000B0BE5041B81E85DB42CD5441F6285C5FB9BE50415C8FC21541CD5441CDCCCCDCB9BE50415C8FC24543CD544100000050BCBE5041B81E853B4ECD5441000000D0BDBE50417B14AE374FCD5441D7A3701DD0BE50419A9999B94BCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000073978A28ACBE50416EEDE1DE29CD54415F8FC2C5A7BE5041323333B32ACD544191EB5168AEBE50413A3333E341CD5441F56CA64EAFBE50412CC97E6F42CD544115000000B0BE5041AE1E85DB42CD5441A8283EEEB0BE504192D676AE42CD5441D776F4CAB5BE5041A65F11C341CD54411650A67DAEBE50417638F86D29CD544173978A28ACBE50416EEDE1DE29CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>166446 - 218140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A0000008FC2F5081BDD5041C3F5288C12B15441D7A370BD1DDD5041333333F311B154410000004038DD50416666664609B1544152B81E7541DD50410000006004B15441295C8FC24ADD504152B81E05FFB05441666666764BDD5041C3F5287CFEB054411F85EBC14BDD50410AD7A340FEB0544114AE47D151DD5041AE47E17AF9B054410AD7A35057DD5041295C8F72F5B0544152B81E6554DD504148E17A94F3B05441000000D050DD5041713D0AF7F3B05441C3F5285C4EDD50413D0AD783F4B054411F85EB714BDD5041D7A370CDF5B0544152B81E354ADD504133333333F7B05441713D0A8747DD5041E17A14EEF6B054411F85EB3140DD504114AE4701F8B05441C3F528BC3DDD50418FC2F518F7B054413D0AD7D33ADD5041E17A14BEF6B05441D7A3709D34DD50415C8FC2B5F6B054417B14AEC72BDD5041A4703D5AF7B05441C3F528BC25DD50419A999969F8B054419A9999A921DD504100000020F9B05441000000B01BDD50411F85EB81FAB054416666664616DD50417B14AE47FCB054415C8FC2A513DD504114AE47C1FDB054418FC2F5081BDD5041C3F5288C12B15441
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000000000B01BDD50411F85EB81FAB0544142D13A121BDD50411F4796B5FAB05441A766664616DD5041BB14AE47FCB0544186AD1B1E14DD50419E5CB87DFDB05441B28FC2A513DD5041EAAD47C1FDB054419270C53114DD50419450594BFFB05441C830E93414DD50414F832F54FFB054418BB9353919DD5041B7C3B2E1FCB05441B16414F521DD504115F05D8BFAB0544176F61B7A28DD5041AA1D708FF9B0544131CF0C3A30DD5041494B8293F8B05441958E26C335DD5041B4D68654F8B0544199C23B8B3BDD5041D4A70DF6F7B05441D151755B3FDD5041CAEEF630F9B05441B6B4038245DD5041FF900474F8B0544183B8389149DD5041494B8293F8B0544187A5641E4EDD504188A6A69BF6B05441247C6F9253DD5041B027B4C0F4B05441AE377DCF54DD5041CDD9AFA5F5B054417E33379450DD50419F0500B3F8B054411A741D0B4BDD5041A2F22B40FDB054418A8423C943DD5041BAB0DE6E01B154417604895C37DD50417F42E6F307B1544131CF0C3A30DD5041E15BBD2A0AB15441EC99901729DD504123A40DC00CB154419A05BBDD1FDD5041451BD7B30FB15441B468EE751ADD50415D1057EE10B15441796A7DF41ADD5041BABD8B5212B154411BBCF5081BDD504199E3288C12B154412BCBDFC01BDD5041A723896312B15441B910F7071CDD5041FB26D55312B15441CCA370BD1DDD5041283333F311B15441D90A004038DD5041A060664609B15441194D239A40DD5041C96989D404B1544152B81E7541DD50410000006004B1544134B4BA4D42DD504188F84EE303B15441095C8FC24ADD504127B81E05FFB0544103CA0B634BDD5041EF38E68AFEB05441666666764BDD5041C3F5287CFEB054411F85EBC14BDD50410AD7A340FEB0544177FBE61750DD5041DBB07BD6FAB054414AAE47D151DD50416E47E17AF9B054410AD7A35057DD5041295C8F72F5B0544152B81E6554DD504148E17A94F3B05441000000D050DD5041713D0AF7F3B05441C21EB6834EDD5041A45CF87AF4B05441ADF5285C4EDD5041480AD783F4B05441DFC624444EDD50415093728EF4B054411F85EB714BDD5041D7A370CDF5B0544152B81E354ADD504133333333F7B05441663D0A8747DD50412C7B14EEF6B05441DE84EB3140DD504160AE4701F8B05441EEF528BC3DDD5041A5C2F518F7B0544139D940463CDD504115864EEBF6B054413D0AD7D33ADD5041E17A14BEF6B05441D8804AA634DD5041E669CEB5F6B05441D7A3709D34DD50415C8FC2B5F6B054417B14AEC72BDD5041A4703D5AF7B054410085004E2BDD50412B90936FF7B05441CDF528BC25DD5041DA999969F8B05441C59999A921DD504140000020F9B05441A8D8620D1CDD504197EF4F6CFAB05441000000B01BDD50411F85EB81FAB05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167077 - 58848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F00000048E17AE408DB5041000000C0BABB5441A4703D3A16DB50413D0AD7F3B0BB5441EC51B8BE16DB5041000000F0AFBB544114AE47D112DB504148E17AA4A8BB5441F6285CBF05DB5041E17A145E90BB5441C3F5281C04DB5041EC51B81E8DBB54415C8FC2B5FDDA50411F85EBD191BB54411F85EBA1EFDA50418FC2F5289CBB5441A4703D9AECDA5041295C8F629EBB5441D7A3701DEDDA504114AE47619FBB54417B14AED7EFDA504114AE4771A3BB54413D0AD7A3FEDA5041E17A146EB7BB544185EB51F802DB50417B14AE47BDBB5441C3F528FC04DB5041F6285C9FBDBB544148E17AE408DB5041000000C0BABB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000F6285CBF05DB5041E17A145E90BB54412FDA02AA04DB5041C0400A388EBB54417B7A2B5804DB5041425CBB958DBB5441ADD24E4D04DB504158BF30808DBB544144B3163104DB5041BCD239488DBB54418CB17EBCFDDA5041B73417CD91BB5441042A3EF0F4DA5041EBB7434398BB54411F85EBA1EFDA50418FC2F5289CBB5441ACC7E29FECDA504154036A5E9EBB544148E94469F0DA50417DB1EE35A4BB54415C03FA13F3DA504149D316D0A7BB5441FA770CAFFBDA5041AB06DB6FB3BB54414A49CE5EFDDA5041B6820BB7B5BB54413D0AD7A3FEDA5041E17A146EB7BB5441B08B12ED01DB504124399EDEBBBB544148072A3503DB5041C6A10552BDBB54410B1856EF03DB504112A9AA71BDBB5441DAE626F404DB504173B3FF9DBDBB5441D055894415DB5041E70B5DA8B1BB5441A4703D3A16DB50413D0AD7F3B0BB5441A214B6BE16DB50416B6404F0AFBB544129E8DC3012DB50415B48897AA7BB54410F9A1F3710DB5041890F39CFA3BB544140F266740FDB50413AD09065A2BB544102C0FC4A09DB50411687D2F396BB5441F6285CBF05DB5041E17A145E90BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167083 - 58850
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F528FC27DB5041CDCCCC0CE4BB544114AE47613DDB5041CDCCCC5CEABB5441A4703D5A4FDB504100000050DDBB54418FC2F54849DB50415C8FC2D5D7BB5441EC51B86E45DB504148E17A14D5BB54415C8FC24540DB5041AE47E16AD2BB5441C3F528FC27DB5041CDCCCC0CE4BB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A4703D5A4FDB504100000050DDBB54416E1430D74ADB50418DAE433DD9BB5441A3364DDC47DB50413448FCD0D6BB5441BE6EDC9A45DB50412DD10B34D5BB544124C7457545DB5041BA762A19D5BB54411D3CBC4540DB50413DDFE56AD2BB5441EB5AD3202CDB5041A43FC40AE1BB54418F20062828DB504182EABD19E4BB544139FCD89D2ADB5041008C91D3E4BB54418C8EA48A2EDB5041186707FCE5BB5441A4F4F6DA39DB50416E6B9352E9BB544141A748613DDB5041DF17CC5CEABB5441A4703D5A4FDB504100000050DDBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167655 - 137661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000005C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E955441EC51B81E8AB25041713D0A772595544148E17AD48BB25041D7A370FD26955441666666268DB250417B14AE87269554416666661682B25041B81E855B1E955441713D0AF787B250413D0AD76317955441713D0AD78CB2504133333393119554410AD7A3908CB250418FC2F5A8109554417B14AE2785B250413D0AD7B30E955441295C8F9281B25041B81E858B07955441E17A14AE80B25041713D0AD701955441713D0A8772B25041A4703DEA099554413D0AD7E375B25041F6285C9F10955441EC51B8BE74B25041F6285C3F11955441666666866EB2504166666636159554410000004076B25041D7A3709D2495544185EB51B87CB25041AE47E17A229554415C8FC2957CB25041713D0AB721955441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D822B39472B25041C93672E209955441B9DCE4E975B25041462382AA109554419BC7420276B2504104B4469D10955441F513CE926EB250416F087E2E1595544197DD973476B250419A53B28624955441B0C7C8B37CB250412D70607C22955441BDA138997CB250415150A7CA219554415C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E95544108DA2CC380B250410F4C47A61E955441EC51B81E8AB25041713D0A77259554410A9D17F88AB250415036E53826955441C3A3C5F28BB250414639E2F226955441174FD43E8CB2504191FD60D8269554412898F5168DB25041BBEA457C2695544194CEB02D82B25041E7E3B96C1E9554416666661682B25041B81E855B1E955441713D0AF787B250413D0AD76317955441EB3414D18CB25041DE7B4F9A1195544170A9F3948CB25041017A4EB7109554412E43941885B250418DB7B2BF0E9554416518B99782B25041809F4C9509955441295C8F9281B25041B81E858B07955441376F9A8E81B250414A573A72079554410B8DF14681B25041C6F72AA805955441CF6210EA80B250418A997756039554412FBC98D180B250417F5C11BA02955441DF0F09B780B25041A6C8481002955441D822B39472B25041C93672E209955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167655 - 336095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000005C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E955441EC51B81E8AB25041713D0A772595544148E17AD48BB25041D7A370FD26955441666666268DB250417B14AE87269554416666661682B25041B81E855B1E955441713D0AF787B250413D0AD76317955441713D0AD78CB2504133333393119554410AD7A3908CB250418FC2F5A8109554417B14AE2785B250413D0AD7B30E955441295C8F9281B25041B81E858B07955441E17A14AE80B25041713D0AD701955441713D0A8772B25041A4703DEA099554413D0AD7E375B25041F6285C9F10955441EC51B8BE74B25041F6285C3F11955441666666866EB2504166666636159554410000004076B25041D7A3709D2495544185EB51B87CB25041AE47E17A229554415C8FC2957CB25041713D0AB721955441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D822B39472B25041C93672E209955441B9DCE4E975B25041462382AA109554419BC7420276B2504104B4469D10955441F513CE926EB250416F087E2E1595544197DD973476B250419A53B28624955441B0C7C8B37CB250412D70607C22955441BDA138997CB250415150A7CA219554415C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E95544108DA2CC380B250410F4C47A61E955441EC51B81E8AB25041713D0A77259554410A9D17F88AB250415036E53826955441C3A3C5F28BB250414639E2F226955441174FD43E8CB2504191FD60D8269554412898F5168DB25041BBEA457C2695544194CEB02D82B25041E7E3B96C1E9554416666661682B25041B81E855B1E955441713D0AF787B250413D0AD76317955441EB3414D18CB25041DE7B4F9A1195544170A9F3948CB25041017A4EB7109554412E43941885B250418DB7B2BF0E9554416518B99782B25041809F4C9509955441295C8F9281B25041B81E858B07955441376F9A8E81B250414A573A72079554410B8DF14681B25041C6F72AA805955441CF6210EA80B250418A997756039554412FBC98D180B250417F5C11BA02955441DF0F09B780B25041A6C8481002955441D822B39472B25041C93672E209955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168126 - 1781575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A0000001F85EB710EB2504185EB51986A8654410000008010B250418FC2F5A86E865441CDCCCC6C2BB250413D0AD7B36F865441EC51B8DE2FB250410AD7A39059865441B81E856B1BB250413D0AD743598654413D0AD7D313B2504148E17AE45986544152B81EB50CB25041C3F528BC59865441F6285CDF09B25041A4703D5A5986544148E17A140AB25041333333235A8654411F85EB710EB2504185EB51986A865441
+</a>
+
+<b>
+010600000001000000010300000001000000190000004A742A4F24B25041CBF47DBF6D8654413BDA831026B25041F9C56BCC6D8654410806242127B25041016713B86D8654414F0AE3DC2BB25041FF9FA55D6D8654411C0604A82BB25041AA3DD0776E86544169933DAC2BB2504179DCE2776E865441F5FAF0AC2DB25041B01114516486544143029FB92FB25041EBBF0D9058865441FD448E5527B250419DD4990659865441A82124C621B250414477E26759865441520E1EA71BB25041B99FFB455986544149DF2E4118B2504122F14B7D598654416F565D3F14B250414FACD6DC598654417FA992F210B25041175FCFD7598654417D86CEF50CB25041A34697BD59865441D039D90C0BB25041AF7FBE8D598654412E09A0020BB250413E5583985986544189D817160CB250415EB406215D865441CBD87E3E0CB250410779B0A55D8654415381A7610CB250413B9722195E8654417C7943F210B250410CA752166D8654415C3E234B17B250412E8F889D6D865441B2DF6AAE17B250410E78CBA56D865441CCB521FB1BB25041DAD025826D8654414A742A4F24B25041CBF47DBF6D865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168290 - 43300
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2A5EBBC5041000000B04B81544100000080ECBC504148E17A94498154417B14AEA7EDBC5041EC51B81E468154411F85EB81EEBC50419A9999A9438154418FC2F5A8EFBC50417B14AEA740815441CDCCCC9CF0BC5041C3F5280C3E815441E17A141EF2BC5041333333E33A8154418FC2F5B8F3BC5041E17A142E38815441A4703D7AF5BC5041295C8F1236815441713D0AC7F6BC504185EB5178358154418FC2F548E7BC5041666666A6308154419A999929E3BC50417B14AE573E8154417B14AE47E1BC504185EB51B8458154410AD7A340E0BC50418FC2F5084D815441B81E85BBDFBC5041295C8FF254815441000000B0DFBC5041000000705C8154410AD7A360E0BC50413333330364815441000000C0E1BC5041C3F528BC6B815441C3F528BCE2BC5041C3F5288C708154419A999939E4BC5041AE47E19A718154419A999999EEBC50411F85EB01708154417B14AE27EEBC50419A9999496E8154413D0AD733EDBC504114AE47216B815441CDCCCC8CECBC5041C3F528EC68815441C3F528CCEBBC5041A4703D2A66815441295C8F32EBBC5041AE47E15A6381544152B81EE5EABC504100000080618154411F85EB71EABC5041A4703DCA5D815441B81E854BEABC50411F85EBA15B815441B81E854BEABC5041B81E85EB568154411F85EB71EABC50416666663654815441EC51B8BEEABC5041AE47E19A51815441295C8F32EBBC50411F85EB314E8154415C8FC2A5EBBC5041000000B04B815441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000008B1BE1BFF1BC5041919AFBC03D815441999F0B43F3BC5041598326523B815441FDA519DCF4BC5041C7482D6538815441BD5ED4ACF6BC50419E0250B835815441872CB398F5BC50417A069809368154412DC0B373F5BC5041BA37691A36815441C99C61E1F3BC504176368AFD37815441AA6CE79CF3BC5041D579685D38815441F20D8215F3BC5041A94ACF413981544128CF1134F1BC5041C916C9D53C81544115438400F0BC5041AB5BFBCF3F815441EC9BB7A8ECBC50416A244A4449815441E90C06B8EBBC50413B6CA0FB4B815441C10D5BFAEABC5041338678D94F815441D27386E8EABC5041C3F4D65F50815441394E1977EABC50419BF6FF6D56815441B81E854BEABC5041230586115B815441B81E854BEABC50411F85EBA15B815441C079B45AEBBC50410E37EF06578154412FB93A71EBBC50415383386556815441A045C4D3EBBC504135F1671551815441331F65BBECBC50416B473CF54D81544131EAB8E8ECBC504138E984274D815441AE47E10AEDBC5041D7A3706D4C815441BF456711EDBC5041DBBFE36E4C815441993723CDEDBC5041E789DD1A49815441D8435B5CEEBC5041A4170F3A478154412D1FD9A4EEBC50417AE23B0746815441FDC890DBEFBC50415CF83BB742815441FDC890DBEFBC5041C15CE5F2418154418B1BE1BFF1BC5041919AFBC03D815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168290 - 80892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2A5EBBC5041000000B04B81544100000080ECBC504148E17A94498154417B14AEA7EDBC5041EC51B81E468154411F85EB81EEBC50419A9999A9438154418FC2F5A8EFBC50417B14AEA740815441CDCCCC9CF0BC5041C3F5280C3E815441E17A141EF2BC5041333333E33A8154418FC2F5B8F3BC5041E17A142E38815441A4703D7AF5BC5041295C8F1236815441713D0AC7F6BC504185EB5178358154418FC2F548E7BC5041666666A6308154419A999929E3BC50417B14AE573E8154417B14AE47E1BC504185EB51B8458154410AD7A340E0BC50418FC2F5084D815441B81E85BBDFBC5041295C8FF254815441000000B0DFBC5041000000705C8154410AD7A360E0BC50413333330364815441000000C0E1BC5041C3F528BC6B815441C3F528BCE2BC5041C3F5288C708154419A999939E4BC5041AE47E19A718154419A999999EEBC50411F85EB01708154417B14AE27EEBC50419A9999496E8154413D0AD733EDBC504114AE47216B815441CDCCCC8CECBC5041C3F528EC68815441C3F528CCEBBC5041A4703D2A66815441295C8F32EBBC5041AE47E15A6381544152B81EE5EABC504100000080618154411F85EB71EABC5041A4703DCA5D815441B81E854BEABC50411F85EBA15B815441B81E854BEABC5041B81E85EB568154411F85EB71EABC50416666663654815441EC51B8BEEABC5041AE47E19A51815441295C8F32EBBC50411F85EB314E8154415C8FC2A5EBBC5041000000B04B815441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000008B1BE1BFF1BC5041919AFBC03D815441999F0B43F3BC5041598326523B815441FDA519DCF4BC5041C7482D6538815441BD5ED4ACF6BC50419E0250B835815441872CB398F5BC50417A069809368154412DC0B373F5BC5041BA37691A36815441C99C61E1F3BC504176368AFD37815441AA6CE79CF3BC5041D579685D38815441F20D8215F3BC5041A94ACF413981544128CF1134F1BC5041C916C9D53C81544115438400F0BC5041AB5BFBCF3F815441EC9BB7A8ECBC50416A244A4449815441E90C06B8EBBC50413B6CA0FB4B815441C10D5BFAEABC5041338678D94F815441D27386E8EABC5041C3F4D65F50815441394E1977EABC50419BF6FF6D56815441B81E854BEABC5041230586115B815441B81E854BEABC50411F85EBA15B815441C079B45AEBBC50410E37EF06578154412FB93A71EBBC50415383386556815441A045C4D3EBBC504135F1671551815441331F65BBECBC50416B473CF54D81544131EAB8E8ECBC504138E984274D815441AE47E10AEDBC5041D7A3706D4C815441BF456711EDBC5041DBBFE36E4C815441993723CDEDBC5041E789DD1A49815441D8435B5CEEBC5041A4170F3A478154412D1FD9A4EEBC50417AE23B0746815441FDC890DBEFBC50415CF83BB742815441FDC890DBEFBC5041C15CE5F2418154418B1BE1BFF1BC5041919AFBC03D815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>170884 - 2961276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528FCC4A35041EC51B8FE125854417B14AE47C2A350413D0AD7530D585441713D0AD7BEA35041AE47E1DA0B58544152B81E55BBA350413D0AD7B32858544148E17A34BAA35041295C8FE231585441713D0A17BDA35041B81E858B31585441A4703DFAC3A3504148E17A443258544148E17A04CCA35041F6285CEF33585441EC51B81ED5A350411F85EB013758544152B81EB5E0A35041EC51B85E3A585441CDCCCCBCECA35041AE47E13A3D585441D7A3703DF6A35041666666964158544114AE4711FDA350411F85EBF145585441E17A149E00A4504114AE479145585441D7A370ED04A45041666666E642585441EC51B8DE04A45041295C8F72425854413D0AD7E305A45041EC51B8AE3E585441295C8F1206A45041666666163E5854415C8FC275FFA35041B81E85CB3A58544114AE47C1FCA3504114AE475137585441B81E85EBF9A35041295C8F6235585441666666D6F2A35041666666E635585441CDCCCC7CEFA35041CDCCCC9C345854419A999999E6A350411F85EBF12E5854418FC2F588F1A35041CDCCCCEC33585441C3F5288CF8A35041295C8F923158544166666696D9A350418FC2F5981F5854419A999979D8A35041666666F61E585441C3F528ECD9A35041AE47E13A1A585441C3F5283CC9A35041AE47E1BA16585441C3F528FCC4A35041EC51B8FE12585441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000097AF905FC8A35041E41D04F9155854416DE7FB89C9A350419A9999A9165854413F355E3ACBA3504121B072E816585441BE9F1AB7CCA35041A69BC48015585441FA7E6A7CCDA3504114AE47691258544100000058D1A350411D5A644312585441A01A2F8DD1A350413BDF4F7511585441250681D5CEA35041B6F3FD540F5854416891ED74CEA35041CFF753930C5854411F85EB99CDA35041DF4F8D2709585441A8C64BC7CFA3504152B81E85085854411D5A6413D1A3504114AE47A90958544173689165D2A35041333333930D585441022B87CED3A35041C3F528E40E5854410E2DB20DD6A35041508D97D60E585441DBF97E9AD5A35041713D0A2F0C58544154E3A563D4A35041EC51B8E60958544175931884D1A35041E92631C0065854416DE7FB59CCA35041986E122B0558544104560EF5C9A350414260E5D8075854419318042EC7A3504139B4C8A6065854418B6CE743C3A350413BDF4FA503585441A8C64BEFC1A350418B6CE72B055854415839B4D0C0A35041C1CAA11D095854414A0C0253BFA35041A69BC4F00B5854411418F995BFA35041B6FC9B2C0C5854417B14AE47C2A350413D0AD7530D585441ECEBEA52C3A350419338C1830F5854417B14AEC7C3A35041759318EC0F585441B369679CC5A350411CD18B8B1358544197AF905FC8A35041E41D04F915585441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>170884 - 3812928
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528FCC4A35041EC51B8FE125854417B14AE47C2A350413D0AD7530D585441713D0AD7BEA35041AE47E1DA0B58544152B81E55BBA350413D0AD7B32858544148E17A34BAA35041295C8FE231585441713D0A17BDA35041B81E858B31585441A4703DFAC3A3504148E17A443258544148E17A04CCA35041F6285CEF33585441EC51B81ED5A350411F85EB013758544152B81EB5E0A35041EC51B85E3A585441CDCCCCBCECA35041AE47E13A3D585441D7A3703DF6A35041666666964158544114AE4711FDA350411F85EBF145585441E17A149E00A4504114AE479145585441D7A370ED04A45041666666E642585441EC51B8DE04A45041295C8F72425854413D0AD7E305A45041EC51B8AE3E585441295C8F1206A45041666666163E5854415C8FC275FFA35041B81E85CB3A58544114AE47C1FCA3504114AE475137585441B81E85EBF9A35041295C8F6235585441666666D6F2A35041666666E635585441CDCCCC7CEFA35041CDCCCC9C345854419A999999E6A350411F85EBF12E5854418FC2F588F1A35041CDCCCCEC33585441C3F5288CF8A35041295C8F923158544166666696D9A350418FC2F5981F5854419A999979D8A35041666666F61E585441C3F528ECD9A35041AE47E13A1A585441C3F5283CC9A35041AE47E1BA16585441C3F528FCC4A35041EC51B8FE12585441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000097AF905FC8A35041E41D04F9155854416DE7FB89C9A350419A9999A9165854413F355E3ACBA3504121B072E816585441BE9F1AB7CCA35041A69BC48015585441FA7E6A7CCDA3504114AE47691258544100000058D1A350411D5A644312585441A01A2F8DD1A350413BDF4F7511585441250681D5CEA35041B6F3FD540F5854416891ED74CEA35041CFF753930C5854411F85EB99CDA35041DF4F8D2709585441A8C64BC7CFA3504152B81E85085854411D5A6413D1A3504114AE47A90958544173689165D2A35041333333930D585441022B87CED3A35041C3F528E40E5854410E2DB20DD6A35041508D97D60E585441DBF97E9AD5A35041713D0A2F0C58544154E3A563D4A35041EC51B8E60958544175931884D1A35041E92631C0065854416DE7FB59CCA35041986E122B0558544104560EF5C9A350414260E5D8075854419318042EC7A3504139B4C8A6065854418B6CE743C3A350413BDF4FA503585441A8C64BEFC1A350418B6CE72B055854415839B4D0C0A35041C1CAA11D095854414A0C0253BFA35041A69BC4F00B5854411418F995BFA35041B6FC9B2C0C5854417B14AE47C2A350413D0AD7530D585441ECEBEA52C3A350419338C1830F5854417B14AEC7C3A35041759318EC0F585441B369679CC5A350411CD18B8B1358544197AF905FC8A35041E41D04F915585441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966442 - 1151056
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441E17A14CE085B514148E17A646C4554417B14AEB7025B5141000000006945544192813A0F035B51418453385C6845544171983FDAF85A5141B30F8BEA61455441DDCC892EF65A51411AEFD63A60455441F5482441F25A5141B78BFACE63455441230000008C6452F2FC5A5141E10343117545544140DA896DFC5A5141D95D4CE374455441213B1C59FC5A5141498E15D974455441DB564A02FC5A51417B8003A67445544138952F6EFB5A514174DA0C7874455441C1BE6F4AFB5A5141E40AD66D74455441DAB7E630FB5A51418DD3835E744554411250CB2BFB5A5141BEC5712B7445544169871D3BFB5A5141B81F7BFD7345544177D30A97FB5A51414CF644647345544194D314DAFA5A514176423C0373455441B47282EEFA5A51411865F3C572455441518EA654FB5A514186F658EA71455441AF6BEF91FB5A5141B1425089714554412CE8A5E3FB5A5141AB9C595B714554411A95252BFC5A5141E3343E5671455441E9A2375EFC5A5141C395D04171455441EF482E8CFC5A51418457F51871455441DDF5ADD3FC5A5141EEE1C7E07045544122DA7F2AFD5A5141780B08BD70455441F1E7915DFD5A5141B0A3ECB770455441875DBF95FD5A5141277AACDB70455441750A3FDDFD5A5141CF425ACC7045544144185110FE5A514197AA75D17045544183562C39FE5A5141B749E3E57045544151643E6CFE5A51412E20A30971455441FA2CEC5CFE5A514103D4AB6A71455441A2F5994DFE5A514161B1F4A7714554417103AC80FE5A5141C08E3DE5714554417103AC80FE5A5141E6D3A12772455441A2F5994DFE5A51414B57E19272455441C2940762FE5A514178423C037345544105DA75E7FD5A5141D8BEE8117445544168BE5181FD5A5141B91F7BFD734554418C6452F2FC5A5141E103431175455441
+</a>
+
+<b>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441E17A14CE085B514148E17A646C4554417B14AEB7025B5141000000006945544191813A0F035B51418453385C6845544171983FDAF85A5141B30F8BEA61455441DDCC892EF65A51411AEFD63A60455441F5482441F25A5141B78BFACE6345544123000000916452F2FC5A5141E1034311754554413FDA896DFC5A5141DC5D4CE3744554411F3B1C59FC5A5141478E15D974455441DC564A02FC5A51417E8003A67445544139952F6EFB5A514179DA0C7874455441BFBE6F4AFB5A5141E40AD66D74455441DAB7E630FB5A51418AD3835E744554411550CB2BFB5A5141C0C5712B7445544165871D3BFB5A5141BC1F7BFD7345544178D30A97FB5A514149F644647345544197D314DAFA5A514171423C0373455441B77282EEFA5A51411D65F3C572455441548EA654FB5A514187F658EA71455441B36BEF91FB5A5141AE4250897145544127E8A5E3FB5A5141A99C595B714554411B95252BFC5A5141E4343E5671455441E4A2375EFC5A5141C595D04171455441F3482E8CFC5A51418557F51871455441DDF5ADD3FC5A5141ECE1C7E07045544120DA7F2AFD5A51417D0B08BD70455441F4E7915DFD5A5141ADA3ECB770455441835DBF95FD5A5141277AACDB70455441770A3FDDFD5A5141CC425ACC7045544141185110FE5A51419CAA75D17045544180562C39FE5A5141BC49E3E57045544154643E6CFE5A51412B20A30971455441FA2CEC5CFE5A514104D4AB6A714554419FF5994DFE5A514163B1F4A7714554417403AC80FE5A5141C18E3DE5714554417403AC80FE5A5141E5D3A127724554419FF5994DFE5A51414857E19272455441BF940762FE5A51417B423C037345544102DA75E7FD5A5141DBBEE8117445544164BE5181FD5A5141BC1F7BFD73455441916452F2FC5A5141E103431175455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966442 - 3945193
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441E17A14CE085B514148E17A646C4554417B14AEB7025B5141000000006945544192813A0F035B51418453385C6845544171983FDAF85A5141B30F8BEA61455441DDCC892EF65A51411AEFD63A60455441F5482441F25A5141B78BFACE63455441230000008C6452F2FC5A5141E10343117545544140DA896DFC5A5141D95D4CE374455441213B1C59FC5A5141498E15D974455441DB564A02FC5A51417B8003A67445544138952F6EFB5A514174DA0C7874455441C1BE6F4AFB5A5141E40AD66D74455441DAB7E630FB5A51418DD3835E744554411250CB2BFB5A5141BEC5712B7445544169871D3BFB5A5141B81F7BFD7345544177D30A97FB5A51414CF644647345544194D314DAFA5A514176423C0373455441B47282EEFA5A51411865F3C572455441518EA654FB5A514186F658EA71455441AF6BEF91FB5A5141B1425089714554412CE8A5E3FB5A5141AB9C595B714554411A95252BFC5A5141E3343E5671455441E9A2375EFC5A5141C395D04171455441EF482E8CFC5A51418457F51871455441DDF5ADD3FC5A5141EEE1C7E07045544122DA7F2AFD5A5141780B08BD70455441F1E7915DFD5A5141B0A3ECB770455441875DBF95FD5A5141277AACDB70455441750A3FDDFD5A5141CF425ACC7045544144185110FE5A514197AA75D17045544183562C39FE5A5141B749E3E57045544151643E6CFE5A51412E20A30971455441FA2CEC5CFE5A514103D4AB6A71455441A2F5994DFE5A514161B1F4A7714554417103AC80FE5A5141C08E3DE5714554417103AC80FE5A5141E6D3A12772455441A2F5994DFE5A51414B57E19272455441C2940762FE5A514178423C037345544105DA75E7FD5A5141D8BEE8117445544168BE5181FD5A5141B91F7BFD734554418C6452F2FC5A5141E103431175455441
+</a>
+
+<b>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441E17A14CE085B514148E17A646C4554417B14AEB7025B5141000000006945544191813A0F035B51418453385C6845544171983FDAF85A5141B30F8BEA61455441DDCC892EF65A51411AEFD63A60455441F5482441F25A5141B78BFACE6345544123000000916452F2FC5A5141E1034311754554413FDA896DFC5A5141DC5D4CE3744554411F3B1C59FC5A5141478E15D974455441DC564A02FC5A51417E8003A67445544139952F6EFB5A514179DA0C7874455441BFBE6F4AFB5A5141E40AD66D74455441DAB7E630FB5A51418AD3835E744554411550CB2BFB5A5141C0C5712B7445544165871D3BFB5A5141BC1F7BFD7345544178D30A97FB5A514149F644647345544197D314DAFA5A514171423C0373455441B77282EEFA5A51411D65F3C572455441548EA654FB5A514187F658EA71455441B36BEF91FB5A5141AE4250897145544127E8A5E3FB5A5141A99C595B714554411B95252BFC5A5141E4343E5671455441E4A2375EFC5A5141C595D04171455441F3482E8CFC5A51418557F51871455441DDF5ADD3FC5A5141ECE1C7E07045544120DA7F2AFD5A51417D0B08BD70455441F4E7915DFD5A5141ADA3ECB770455441835DBF95FD5A5141277AACDB70455441770A3FDDFD5A5141CC425ACC7045544141185110FE5A51419CAA75D17045544180562C39FE5A5141BC49E3E57045544154643E6CFE5A51412B20A30971455441FA2CEC5CFE5A514104D4AB6A714554419FF5994DFE5A514163B1F4A7714554417403AC80FE5A5141C18E3DE5714554417403AC80FE5A5141E5D3A127724554419FF5994DFE5A51414857E19272455441BF940762FE5A51417B423C037345544102DA75E7FD5A5141DBBEE8117445544164BE5181FD5A5141BC1F7BFD73455441916452F2FC5A5141E103431175455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>171816 - 3184818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE472105945141713D0A3770A95441D7A3706D05945141EC51B83E77A954415C8FC2A5089451411F85EBC187A95441D7A370AD099451419A9999498AA9544185EB51D80994514114AE47A18AA9544152B81EC50C945141EC51B89E88A95441D7A3707D0F9451411F85EBC185A9544148E17AF4119451417B14AE3783A9544114AE472115945141CDCCCCEC7CA954418FC2F5C816945141B81E855B77A95441A4703D9A199451411F85EB3173A95441000000901A945141666666A671A95441AE47E1FA199451418FC2F54870A95441EC51B86E169451418FC2F5F867A95441D7A3706D0F945141CDCCCC5C53A954417B14AE570F9451410AD7A32053A95441A4703D2A0F945141C3F5282C55A954418FC2F5380B945141AE47E10A58A95441000000200D94514185EB51C85FA95441AE47E1AA0F9451413D0AD7F364A9544114AE471111945141E17A140E6AA95441E17A14CE10945141C3F5285C6AA954410AD7A3A01394514185EB51E870A95441666666E6129451410000003074A95441295C8F3210945141D7A3700D75A95441E17A146E0F945141EC51B81E73A954413D0AD7C310945141EC51B8AE6DA95441713D0AE70F94514185EB51786BA95441AE47E1CA0C945141AE47E14A6FA9544114AE472105945141713D0A3770A9544101030000000100000016000000000000400A9451417B14AE1765A95441000000A00C945141E17A149E6EA95441F6285CAF0C945141C3F528DC6EA954419A99999910945141B81E853B6AA9544185EB51380F9451417B14AE2765A954411F85EBB10C945141CDCCCCCC5FA95441E17A14AE0A94514152B81EB557A95441295C8FB20E945141B81E85EB54A9544152B81EE50E9451417B14AE1753A9544114AE47F10A945141713D0A7748A95441713D0AF708945141D7A370FD45A954419A9999C907945141EC51B87E41A95441EC51B84E04945141333333533CA95441E17A141E019451411F85EB613DA9544100000040FF93514152B81E853CA954418FC2F5C8FD93514152B81E7538A95441D7A370BDFA93514152B81E4539A9544100000080FA93514114AE479139A9544152B81E95FA935141D7A370CD39A95441CDCCCCACFC935141A4703DBA3FA9544114AE4781039451410AD7A38050A95441000000400A9451417B14AE1765A95441
+</a>
+
+<b>
+0106000000010000000103000000010000009700000056EC45901094514156DF2AA86AA954410AD7A3A01394514185EB51E870A95441666666E6129451410000003074A95441295C8F3210945141D7A3700D75A95441E17A146E0F945141EC51B81E73A95441BF3023CF109451415EFE61986DA954417CB7E2C20F945141E19CF3A06BA95441F11609C20F94514108C980B16BA9544156A0809B0F945141888E8BE26BA95441897CB1200D945141622064E16EA954416A0F28C10C94514101F60C4C6FA95441F3A6276B0C945141BA8C67566FA95441CD03D7730B945141ABDA2D746FA954413BE2307D0A94514192A1DF916FA9544196F4BE2D0A9451412A25709B6FA954415D3AA28608945141728F60CE6FA95441A6D5071007945141D5E979FB6FA954412475438D069451416A2F380B70A954418501F172069451410970630E70A95441E51ABC44069451417689F31370A954418EF323AB059451419459712670A954419246882005945141320B0A3E70A954419138D9890594514111E266D077A954419BBC876E06945141E3151B657CA95441DB32AB8007945141C4C6EAE281A95441B11A65AD08945141EA7CACD487A9544185EB51D80994514114AE47A18AA9544152B81EC50C945141EC51B89E88A95441D7A3707D0F9451411F85EBC185A9544148E17AF4119451417B14AE3783A95441BF885788149451417C09E81B7EA95441D58F1FA3149451419B5662E17DA95441F7CF0701159451410105B72C7DA954414EA614421594514100FD747E7CA95441F081467C15945141BEDFAFBA7BA95441547C6591169451413644701678A95441156CD5DC169451410DBE283E77A95441AB9CC73E1794514123CC74AD76A95441C17FC88A1A945141CCB8CBAE71A9544141BB98E819945141234D1E1E70A9544150A7D787199451417569673B6FA954411CF03EB6189451416C7B8C656DA9544172D8307318945141A5F4BDBF6CA9544101F0FB1118945141482561CF6BA95441536AC3AF17945141F2833AE96AA95441EB51E018179451410587AB8769A95441D436B1A5169451418F5BC57968A95441586B11701694514181651EFC67A95441ECFEDA43169451412738D87A67A9544119464E9015945141F08A936A65A954417F55063E159451417D8D7D7864A954416C8AFF251594514147C9CC3164A95441EBF8D25C149451414BA1E8E161A95441471597031494514181B35DDB60A95441F7026CB413945141943E70F25FA9544125E6A222139451418DA882455EA95441B54A2CBD12945141AD94FC1A5DA954411E33D9CB11945141621DF7545AA95441B8465C1511945141AA520D3C58A954411A98702C1094514195B3C18E55A95441B06E1E620F945141BB1B803D53A95441490EA59F0D945141ED688AAC4FA95441C5659EAE0C945141750578244DA95441692CED3D0C945141A81876F54BA95441C8D5971B0C945141804825994BA95441023C90D20B9451418A77C8D44AA95441694F579C0B945141EE5FFD424AA95441392438750B945141248BCCD949A954411D6BCF1A0B9451411CE8B4E648A95441358A8DE30A945141F302DC6548A954413A05292109945141C227283246A95441767F1008099451418159BF1246A95441F69321DD07945141E44847C941A954411258F7B3079451413982945E41A9544111056A2506945141FD757A0E3FA95441AEDA28CE049451410D4287103DA95441455C47A60494514198B447D53CA95441DE8AE27904945141DD09C3E33BA9544166D7C4C903945141071F467F3CA954410222CC2002945141686A270C3DA95441EA74F30B0194514155138C593DA95441DE470633FF935141BE7723613CA954412873C8D0FE935141E10AB6503BA9544162958212FE93514129C1134139A9544196C56FBBFD9351413E7CBA7838A954415F6649B9FC935141955E9CBD38A9544183BDA492FB93514179103B0C39A95441D7A370BDFA93514152B81E4539A9544152B81E95FA935141D7A370CD39A954412D636E1FFB935141E2E812553BA95441EE7285C3FB935141CCA2B3253DA954415A0F0B3AFC9351417E284D753EA9544184AE558EFC93514142EAF9633FA95441D08BF236FD93514167350A0741A95441EB62ED14FE9351418573BD2E43A95441FE4C331B00945141A282A82748A954418D012AE900945141185085214AA9544102EAE59601945141788739CC4BA9544194245D5102945141A7E232964DA9544172059D7A029451412DC082FB4DA954417A37745E039451418CC81A2B50A954417C6E307B039451410B35AE7150A95441C9CC709E03945141D519A8D950A95441EC8BC5B803945141ED1D092A51A95441C1FFF6D1039451414FEBF07651A95441865D8F0504945141FB31711452A9544106F5BA430594514181E5B2DF55A9544181D1633B06945141205EB6D358A9544165761E5A069451417A55843159A954414FBD0C9A06945141468CACF459A95441E53BECCD06945141BEF305935AA954413E9A3470079451417C9A69825CA95441371D37140894514164F412775EA9544198E4B552089451410755D9355FA954417E32D5C508945141C65D469560A9544158FE1454099451414460824762A9544110939D690994514133413E8962A954418C2379C30994514169A98B9B63A95441ED65D13A0A9451410B74DC0765A954417AC460650A945141B3DF95AD65A95441ECE7709A0A945141286B658266A95441FCFF34FF0A9451411855851668A95441D92D9B290B945141B34D90C068A95441379F636B0B945141BA5763C869A9544195AEF7810B945141F16CF0226AA95441F72FACE90B945141B6E7D9C26BA954415ECCEA670C945141788B28BD6DA95441537FD2810C945141FB250D256EA9544106CFD6AA0C945141ED54E3C96EA954414CCC1EE20D945141FE5892716DA954416342F47A0E945141295AECBC6CA9544121B36F4E0F9451412DB57DA36BA9544156A0809B0F945141F8C76C566BA9544135DC5DA50F94514179F8F4686BA95441547DAD72109451418983B7666AA95441EF63D48D10945141F0B56E496AA95441A12C2E720F945141098491FC65A9544123E829D20E945141F718074F64A9544141E0AE670E945141665C346D63A954412FC7E7830D94514173A5228A61A95441C204F2980C94514160AC7F685FA95441D2783CAF0A9451413D76C3B957A95441878848B30E9451414EAED3E454A954414F4330D10E94514179F41BD053A95441D01F67420F94514152E8C61554A954412E6EA41B0F945141CC5EC93655A954414181403C0B94514168D8451858A95441B4ADCF290D945141243F45DC5FA95441499487950F94514139E96CC864A9544114AE471111945141E17A140E6AA9544156EC45901094514156DF2AA86AA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>171816 - 3588935
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE472105945141713D0A3770A95441D7A3706D05945141EC51B83E77A954415C8FC2A5089451411F85EBC187A95441D7A370AD099451419A9999498AA9544185EB51D80994514114AE47A18AA9544152B81EC50C945141EC51B89E88A95441D7A3707D0F9451411F85EBC185A9544148E17AF4119451417B14AE3783A9544114AE472115945141CDCCCCEC7CA954418FC2F5C816945141B81E855B77A95441A4703D9A199451411F85EB3173A95441000000901A945141666666A671A95441AE47E1FA199451418FC2F54870A95441EC51B86E169451418FC2F5F867A95441D7A3706D0F945141CDCCCC5C53A954417B14AE570F9451410AD7A32053A95441A4703D2A0F945141C3F5282C55A954418FC2F5380B945141AE47E10A58A95441000000200D94514185EB51C85FA95441AE47E1AA0F9451413D0AD7F364A9544114AE471111945141E17A140E6AA95441E17A14CE10945141C3F5285C6AA954410AD7A3A01394514185EB51E870A95441666666E6129451410000003074A95441295C8F3210945141D7A3700D75A95441E17A146E0F945141EC51B81E73A954413D0AD7C310945141EC51B8AE6DA95441713D0AE70F94514185EB51786BA95441AE47E1CA0C945141AE47E14A6FA9544114AE472105945141713D0A3770A9544101030000000100000016000000000000400A9451417B14AE1765A95441000000A00C945141E17A149E6EA95441F6285CAF0C945141C3F528DC6EA954419A99999910945141B81E853B6AA9544185EB51380F9451417B14AE2765A954411F85EBB10C945141CDCCCCCC5FA95441E17A14AE0A94514152B81EB557A95441295C8FB20E945141B81E85EB54A9544152B81EE50E9451417B14AE1753A9544114AE47F10A945141713D0A7748A95441713D0AF708945141D7A370FD45A954419A9999C907945141EC51B87E41A95441EC51B84E04945141333333533CA95441E17A141E019451411F85EB613DA9544100000040FF93514152B81E853CA954418FC2F5C8FD93514152B81E7538A95441D7A370BDFA93514152B81E4539A9544100000080FA93514114AE479139A9544152B81E95FA935141D7A370CD39A95441CDCCCCACFC935141A4703DBA3FA9544114AE4781039451410AD7A38050A95441000000400A9451417B14AE1765A95441
+</a>
+
+<b>
+0106000000010000000103000000010000009700000056EC45901094514156DF2AA86AA954410AD7A3A01394514185EB51E870A95441666666E6129451410000003074A95441295C8F3210945141D7A3700D75A95441E17A146E0F945141EC51B81E73A95441BF3023CF109451415EFE61986DA954417CB7E2C20F945141E19CF3A06BA95441F11609C20F94514108C980B16BA9544156A0809B0F945141888E8BE26BA95441897CB1200D945141622064E16EA954416A0F28C10C94514101F60C4C6FA95441F3A6276B0C945141BA8C67566FA95441CD03D7730B945141ABDA2D746FA954413BE2307D0A94514192A1DF916FA9544196F4BE2D0A9451412A25709B6FA954415D3AA28608945141728F60CE6FA95441A6D5071007945141D5E979FB6FA954412475438D069451416A2F380B70A954418501F172069451410970630E70A95441E51ABC44069451417689F31370A954418EF323AB059451419459712670A954419246882005945141320B0A3E70A954419138D9890594514111E266D077A954419BBC876E06945141E3151B657CA95441DB32AB8007945141C4C6EAE281A95441B11A65AD08945141EA7CACD487A9544185EB51D80994514114AE47A18AA9544152B81EC50C945141EC51B89E88A95441D7A3707D0F9451411F85EBC185A9544148E17AF4119451417B14AE3783A95441BF885788149451417C09E81B7EA95441D58F1FA3149451419B5662E17DA95441F7CF0701159451410105B72C7DA954414EA614421594514100FD747E7CA95441F081467C15945141BEDFAFBA7BA95441547C6591169451413644701678A95441156CD5DC169451410DBE283E77A95441AB9CC73E1794514123CC74AD76A95441C17FC88A1A945141CCB8CBAE71A9544141BB98E819945141234D1E1E70A9544150A7D787199451417569673B6FA954411CF03EB6189451416C7B8C656DA9544172D8307318945141A5F4BDBF6CA9544101F0FB1118945141482561CF6BA95441536AC3AF17945141F2833AE96AA95441EB51E018179451410587AB8769A95441D436B1A5169451418F5BC57968A95441586B11701694514181651EFC67A95441ECFEDA43169451412738D87A67A9544119464E9015945141F08A936A65A954417F55063E159451417D8D7D7864A954416C8AFF251594514147C9CC3164A95441EBF8D25C149451414BA1E8E161A95441471597031494514181B35DDB60A95441F7026CB413945141943E70F25FA9544125E6A222139451418DA882455EA95441B54A2CBD12945141AD94FC1A5DA954411E33D9CB11945141621DF7545AA95441B8465C1511945141AA520D3C58A954411A98702C1094514195B3C18E55A95441B06E1E620F945141BB1B803D53A95441490EA59F0D945141ED688AAC4FA95441C5659EAE0C945141750578244DA95441692CED3D0C945141A81876F54BA95441C8D5971B0C945141804825994BA95441023C90D20B9451418A77C8D44AA95441694F579C0B945141EE5FFD424AA95441392438750B945141248BCCD949A954411D6BCF1A0B9451411CE8B4E648A95441358A8DE30A945141F302DC6548A954413A05292109945141C227283246A95441767F1008099451418159BF1246A95441F69321DD07945141E44847C941A954411258F7B3079451413982945E41A9544111056A2506945141FD757A0E3FA95441AEDA28CE049451410D4287103DA95441455C47A60494514198B447D53CA95441DE8AE27904945141DD09C3E33BA9544166D7C4C903945141071F467F3CA954410222CC2002945141686A270C3DA95441EA74F30B0194514155138C593DA95441DE470633FF935141BE7723613CA954412873C8D0FE935141E10AB6503BA9544162958212FE93514129C1134139A9544196C56FBBFD9351413E7CBA7838A954415F6649B9FC935141955E9CBD38A9544183BDA492FB93514179103B0C39A95441D7A370BDFA93514152B81E4539A9544152B81E95FA935141D7A370CD39A954412D636E1FFB935141E2E812553BA95441EE7285C3FB935141CCA2B3253DA954415A0F0B3AFC9351417E284D753EA9544184AE558EFC93514142EAF9633FA95441D08BF236FD93514167350A0741A95441EB62ED14FE9351418573BD2E43A95441FE4C331B00945141A282A82748A954418D012AE900945141185085214AA9544102EAE59601945141788739CC4BA9544194245D5102945141A7E232964DA9544172059D7A029451412DC082FB4DA954417A37745E039451418CC81A2B50A954417C6E307B039451410B35AE7150A95441C9CC709E03945141D519A8D950A95441EC8BC5B803945141ED1D092A51A95441C1FFF6D1039451414FEBF07651A95441865D8F0504945141FB31711452A9544106F5BA430594514181E5B2DF55A9544181D1633B06945141205EB6D358A9544165761E5A069451417A55843159A954414FBD0C9A06945141468CACF459A95441E53BECCD06945141BEF305935AA954413E9A3470079451417C9A69825CA95441371D37140894514164F412775EA9544198E4B552089451410755D9355FA954417E32D5C508945141C65D469560A9544158FE1454099451414460824762A9544110939D690994514133413E8962A954418C2379C30994514169A98B9B63A95441ED65D13A0A9451410B74DC0765A954417AC460650A945141B3DF95AD65A95441ECE7709A0A945141286B658266A95441FCFF34FF0A9451411855851668A95441D92D9B290B945141B34D90C068A95441379F636B0B945141BA5763C869A9544195AEF7810B945141F16CF0226AA95441F72FACE90B945141B6E7D9C26BA954415ECCEA670C945141788B28BD6DA95441537FD2810C945141FB250D256EA9544106CFD6AA0C945141ED54E3C96EA954414CCC1EE20D945141FE5892716DA954416342F47A0E945141295AECBC6CA9544121B36F4E0F9451412DB57DA36BA9544156A0809B0F945141F8C76C566BA9544135DC5DA50F94514179F8F4686BA95441547DAD72109451418983B7666AA95441EF63D48D10945141F0B56E496AA95441A12C2E720F945141098491FC65A9544123E829D20E945141F718074F64A9544141E0AE670E945141665C346D63A954412FC7E7830D94514173A5228A61A95441C204F2980C94514160AC7F685FA95441D2783CAF0A9451413D76C3B957A95441878848B30E9451414EAED3E454A954414F4330D10E94514179F41BD053A95441D01F67420F94514152E8C61554A954412E6EA41B0F945141CC5EC93655A954414181403C0B94514168D8451858A95441B4ADCF290D945141243F45DC5FA95441499487950F94514139E96CC864A9544114AE471111945141E17A140E6AA9544156EC45901094514156DF2AA86AA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172316 - 211366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000000000F01E8A514114AE47D1AEAC5441713D0AC70D8A514152B81E85AFAC5441F6285C6FEB895141CDCCCCACA8AC54418FC2F5F8EA895141C3F5284CB7AC5441C3F5285C098A51411F85EBC1BBAC54415C8FC2850F8A514100000040BCAC5441295C8F72118A5141713D0A67BCAC54410AD7A3002A8A514185EB5148B9AC5441F6285CCF388A514100000040B7AC5441C3F528FC388A5141F6285C2FACAC5441EC51B84E2B8A514114AE4791ADAC5441000000F01E8A514114AE47D1AEAC54410103000000010000000B000000EC51B82E3A8A5141713D0AF7ABAC5441666666063A8A514152B81E05B6AC5441EC51B89E538A5141666666E6B1AC5441B81E850B748A51418FC2F598A9AC5441295C8F02758A51419A999959A8AC544100000000758A51415C8FC2A5A3AC54415C8FC215748A514185EB51A8A0AC5441CDCCCCAC728A51411F85EB619CAC54410AD7A350568A5141B81E859BA2AC5441666666463A8A5141713D0A77A7AC5441EC51B82E3A8A5141713D0AF7ABAC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000085FCF43C2F8A5141C3965890B8AC54419EF15ACF388A5141BC2A0040B7AC54410F1088FB388A5141DF450857ACAC5441EC51B84E2B8A514114AE4791ADAC54418779A6FE1E8A5141E8B0CCCFAEAC54418269FFEF1E8A51418FCA47D1AEAC5441730209C70D8A514133701F85AFAC544106D75C6FEB895141486ECDACA8AC54418B2BF6F8EA8951412705294CB7AC5441C3F5285C098A51411F85EBC1BBAC5441DC6FA56A098A5141B0E513C3BBAC5441C3D7F86B118A5141FBA18466BCAC5441295C8F72118A5141713D0A67BCAC5441459A5D4B1F8A5141A587A1A4BAAC54417967A3002A8A5141C85B5148B9AC5441891AD43C2F8A5141371A5D90B8AC544185FCF43C2F8A5141C3965890B8AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172316 - 345247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000000000F01E8A514114AE47D1AEAC5441713D0AC70D8A514152B81E85AFAC5441F6285C6FEB895141CDCCCCACA8AC54418FC2F5F8EA895141C3F5284CB7AC5441C3F5285C098A51411F85EBC1BBAC54415C8FC2850F8A514100000040BCAC5441295C8F72118A5141713D0A67BCAC54410AD7A3002A8A514185EB5148B9AC5441F6285CCF388A514100000040B7AC5441C3F528FC388A5141F6285C2FACAC5441EC51B84E2B8A514114AE4791ADAC5441000000F01E8A514114AE47D1AEAC54410103000000010000000B000000EC51B82E3A8A5141713D0AF7ABAC5441666666063A8A514152B81E05B6AC5441EC51B89E538A5141666666E6B1AC5441B81E850B748A51418FC2F598A9AC5441295C8F02758A51419A999959A8AC544100000000758A51415C8FC2A5A3AC54415C8FC215748A514185EB51A8A0AC5441CDCCCCAC728A51411F85EB619CAC54410AD7A350568A5141B81E859BA2AC5441666666463A8A5141713D0A77A7AC5441EC51B82E3A8A5141713D0AF7ABAC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000085FCF43C2F8A5141C3965890B8AC54419EF15ACF388A5141BC2A0040B7AC54410F1088FB388A5141DF450857ACAC5441EC51B84E2B8A514114AE4791ADAC54418779A6FE1E8A5141E8B0CCCFAEAC54418269FFEF1E8A51418FCA47D1AEAC5441730209C70D8A514133701F85AFAC544106D75C6FEB895141486ECDACA8AC54418B2BF6F8EA8951412705294CB7AC5441C3F5285C098A51411F85EBC1BBAC5441DC6FA56A098A5141B0E513C3BBAC5441C3D7F86B118A5141FBA18466BCAC5441295C8F72118A5141713D0A67BCAC5441459A5D4B1F8A5141A587A1A4BAAC54417967A3002A8A5141C85B5148B9AC5441891AD43C2F8A5141371A5D90B8AC544185FCF43C2F8A5141C3965890B8AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172349 - 1181184
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003300000052B81E25618C514148E17AA4F8AC5441AE47E19A638C5141A4703D0AFBAC5441E17A14CE638C514148E17AC4FDAC54415C8FC255618C51416666661600AD5441333333A35E8C5141666666B6FFAC5441D7A3709D5A8C5141F6285C3F06AD5441A4703DFA5F8C51410AD7A3C00BAD544114AE47E1638C514152B81EB510AD544100000030678C514152B81EA513AD5441CDCCCC6C6B8C5141AE47E19A17AD5441333333F36E8C5141333333B314AD5441000000407C8C514152B81E6509AD54417B14AE57758C5141295C8F02FAAC54417B14AE07748C514148E17A94F6AC5441D7A3700D738C51415C8FC265F3AC5441D7A3709D6F8C514114AE4751F0AC5441AE47E12A6D8C51415C8FC275EEAC5441713D0A07688C514166666676EBAC544152B81EC5658C5141295C8FC2EAAC544148E17AE4638C514152B81E75EAAC5441AE47E1BA618C514148E17A44EAAC544185EB51B85F8C514152B81E75EAAC54411F85EB115E8C5141E17A14EEEAAC5441A4703DCA5A8C51411F85EB41ECAC54418FC2F538578C51415C8FC205EEAC5441713D0A87508C514114AE4761F1AC5441333333534A8C51417B14AEB7F4AC5441AE47E1CA478C5141295C8FA2F5AC5441F6285C6F438C5141713D0A97F6AC54413D0AD7033E8C51410AD7A300F7AC544152B81E353F8C5141B81E853BFEAC54410AD7A3A0408C51410AD7A32001AD5441AE47E1EA428C514185EB517805AD54410AD7A3B0458C5141AE47E1CA09AD54411F85EB01488C51418FC2F56808AD54417B14AE17488C51411F85EBA106AD5441AE47E16A4C8C51417B14AEC705AD54413D0AD733528C51413D0AD75302AD544148E17A94558C5141CDCCCC7CFFAC5441666666D6548C5141AE47E11AFBAC5441B81E85DB538C51419A999939F8AC5441EC51B8CE558C514100000090F4AC5441295C8F72548C5141B81E858BF0AC54417B14AEC7568C5141E17A14FEEEAC54411F85EBB1598C51411F85EBB1EDAC544185EB51385C8C514100000040EFAC5441EC51B8DE5C8C5141CDCCCC6CF2AC54411F85EBD15A8C5141EC51B88EF4AC544114AE47515C8C5141713D0AC7F7AC5441EC51B8AE5E8C5141713D0AE7F8AC544152B81E25618C514148E17AA4F8AC544101030000000100000035000000E17A14CE5E8C5141333333D3D8AC5441CDCCCC3C5D8C51419A999999D8AC5441CDCCCCDC538C51419A999929DDAC5441D7A370FD498C51418FC2F538E2AC54415C8FC2D53D8C514100000010EAAC5441EC51B8FE3D8C514185EB5178F5AC54410AD7A3003E8C5141713D0A17F6AC5441F6285C8F438C51417B14AEB7F5AC5441000000C0478C5141333333E3F4AC5441A4703DDA498C5141C3F528ECF3AC54410AD7A3204C8C5141AE47E11AF3AC5441F6285CFF4F8C514100000000F1AC5441666666B6568C5141B81E855BEDAC5441713D0A475A8C51410AD7A3B0EBAC544152B81EF55D8C514148E17A44EAAC544148E17AE45F8C5141C3F528BCE9AC5441E17A149E618C51415C8FC295E9AC5441D7A3708D638C5141F6285C9FE9AC54417B14AE07658C5141EC51B8DEE9AC544133333353678C514100000070EAAC5441713D0A276A8C51410AD7A3B0EBAC544114AE47816C8C51417B14AE17EDAC544185EB51886E8C51413D0AD783EEAC5441E17A141E738C5141F6285C5FF2AC544148E17A34738C514166666606F1AC544100000020728C5141F6285C7FEFAC5441A4703D8A718C51413D0AD7F3EDAC5441295C8F12718C51410AD7A390EBAC544148E17A24718C5141333333A3E8AC544148E17A84718C514133333383E7AC54413D0AD773728C51411F85EB91E5AC54415C8FC2A5738C5141295C8F12E4AC544185EB51C8798C51413D0AD743DEAC54411F85EB417B8C514185EB5188DCAC5441F6285C7F7C8C5141295C8FA2DAAC5441B81E854B7D8C5141713D0A17D9AC5441F6285C9F7D8C5141F6285C7FD7AC5441D7A370BD7D8C5141CDCCCC2CD1AC5441AE47E1CA7E8C5141C3F528BCCAAC5441295C8FC2808C51417B14AEB7C4AC5441000000C0828C5141333333D3BFAC544114AE4741858C514152B81E35B7AC5441D7A3709D868C514166666606B4AC544152B81E65828C5141F6285CDFB3AC5441666666C67D8C514100000010B3AC5441CDCCCC2C7B8C5141C3F5285CB7AC5441666666666E8C5141EC51B8EEBBAC54419A9999A96D8C51418FC2F548CBAC54413D0AD7B3718C5141AE47E19AD3AC5441CDCCCC7C6F8C5141AE47E13AD4AC544152B81EB56C8C5141295C8F02CFAC5441D7A3703D668C5141C3F5288CD3AC5441E17A14CE5E8C5141333333D3D8AC544101030000000100000020000000B81E854B738C514185EB5198EFAC5441713D0AB7748C514185EB5138ECAC544148E17A74768C5141AE47E10AEAAC5441AE47E1AA798C5141A4703D0AE7AC54417B14AE177B8C5141AE47E1DAE5AC54417B14AEC77A8C5141F6285C0FE4AC5441666666867E8C51410AD7A390E1AC544100000040818C51415C8FC2E5DEAC544166666636878C5141EC51B87EDEAC544185EB51C8898C5141713D0A87DDAC5441295C8FC2898C51411F85EB91DCAC5441B81E85BB8D8C5141B81E855BDAAC5441000000A08D8C5141D7A3705DD4AC54415C8FC2758B8C5141D7A370FDD3AC544114AE4791888C5141B81E85EBD2AC5441295C8F82838C514114AE47B1D0AC544185EB51E8808C51413D0AD7D3CFAC5441D7A3707D7F8C514166666616D0AC544114AE47A17E8C51417B14AEC7D0AC5441D7A3703D7E8C5141F6285C9FD7AC54419A9999897D8C514100000090DAAC5441C3F5288C7C8C5141295C8F12DCAC54418FC2F5487A8C51410AD7A310DFAC544100000080778C51417B14AEB7E1AC5441E17A145E758C514185EB51B8E3AC54417B14AE77738C5141EC51B89EE5AC544114AE4781728C51417B14AE27E7AC54419A999909728C5141CDCCCC4CE8AC5441D7A370CD718C5141333333E3E9AC5441000000C0718C5141D7A3703DEBAC5441D7A370CD718C5141EC51B89EECAC5441B81E854B738C514185EB5198EFAC544101030000000100000016000000295C8FF28F8C5141F6285C7FC9AC54417B14AE778B8C514185EB5188CAAC5441333333F3898C514114AE4741C4AC544152B81EB58A8C51419A999999C2AC54413D0AD753898C5141CDCCCC0CC0AC5441EC51B80E8E8C5141C3F528DCBCAC544185EB51A88C8C5141E17A143EB4AC5441713D0A77878C5141E17A140EB4AC5441666666D6858C51410AD7A3D0B8AC54411F85EBC1838C51418FC2F5A8BFAC54415C8FC2A5818C514152B81EB5C4AC5441E17A14FE7E8C514148E17A44CDAC5441EC51B8AE7E8C5141666666B6CFAC5441000000C07F8C5141C3F5286CCFAC5441B81E85EB818C5141C3F5286CCFAC544100000040838C5141AE47E1DACFAC5441A4703D8A888C51419A999939D2AC544185EB51188C8C5141713D0A87D3AC544148E17A248D8C5141CDCCCCBCD3AC5441295C8F428D8C514185EB5138D3AC5441E17A146E928C514152B81E15D3AC5441295C8FF28F8C5141F6285C7FC9AC5441
+</a>
+
+<b>
+0106000000010000000103000000010000009B0000007B14AEC77A8C5141F6285C0FE4AC5441666666867E8C51410AD7A390E1AC544100000040818C51415C8FC2E5DEAC544166666636878C5141EC51B87EDEAC544185EB51C8898C5141713D0A87DDAC5441295C8FC2898C51411F85EB91DCAC5441B81E85BB8D8C5141B81E855BDAAC5441000000A08D8C5141D7A3705DD4AC5441508D4C3D8D8C5141359B7D4FD3AC5441295C8F428D8C514185EB5138D3AC54414F0D85B28C8C5141E4CCCE30D2AC5441E01238DF878C51416CC7EB70D0AC5441DF630854858C51411DBC18E8CEAC54411633EEFA838C51419B82F101CEAC54410A5B40A9838C5141F22BC17DCCAC544147111A22858C5141433D9D35CAAC5441928DDA07878C5141F4C047ABC8AC54411447D00D898C514104DCD97FC6AC54414B816988898C5141AE9FD38BC3AC5441C423F7268A8C51414918E32BC0AC5441EB8A1FCC8C8C51415529861AC0AC5441EC51B80E8E8C5141C3F528DCBCAC54414C7BBFB38C8C5141515B6C84B4AC5441D7A3709D868C514166666606B4AC544152B81E65828C5141F6285CDFB3AC5441666666C67D8C514100000010B3AC5441CDCCCC2C7B8C5141C3F5285CB7AC5441666666666E8C5141EC51B8EEBBAC54419A9999A96D8C51418FC2F548CBAC54413D0AD7B3718C5141AE47E19AD3AC5441CDCCCC7C6F8C5141AE47E13AD4AC544152B81EB56C8C5141295C8F02CFAC5441D7A3703D668C5141C3F5288CD3AC5441E17A14CE5E8C5141333333D3D8AC5441CDCCCC3C5D8C51419A999999D8AC5441CDCCCCDC538C51419A999929DDAC5441D7A370FD498C51418FC2F538E2AC54415C8FC2D53D8C514100000010EAAC5441EC51B8FE3D8C514185EB5178F5AC544194D894083E8C51411E937D57F8AC544152B81E353F8C5141B81E853BFEAC54410AD7A3A0408C51410AD7A32001AD5441AE47E1EA428C514185EB517805AD54410AD7A3B0458C5141AE47E1CA09AD54411F85EB01488C51418FC2F56808AD5441BE3CA24E498C5141C21BD18807AD5441AE47E16A4C8C51417B14AEC705AD54413D0AD733528C51413D0AD75302AD544148E17A94558C5141CDCCCC7CFFAC5441666666D6548C5141AE47E11AFBAC5441B81E85DB538C51419A999939F8AC5441EC51B8CE558C514100000090F4AC5441295C8F72548C5141B81E858BF0AC54417B14AEC7568C5141E17A14FEEEAC54411F85EBB1598C51411F85EBB1EDAC544185EB51385C8C514100000040EFAC5441EC51B8DE5C8C5141CDCCCC6CF2AC54411F85EBD15A8C5141EC51B88EF4AC544114AE47515C8C5141713D0AC7F7AC5441EC51B8AE5E8C5141713D0AE7F8AC544152B81E25618C514148E17AA4F8AC5441AE47E19A638C5141A4703D0AFBAC5441E17A14CE638C514148E17AC4FDAC54415C8FC255618C51416666661600AD5441333333A35E8C5141666666B6FFAC5441D7A3709D5A8C5141F6285C3F06AD5441A4703DFA5F8C51410AD7A3C00BAD544114AE47E1638C514152B81EB510AD544100000030678C514152B81EA513AD5441CDCCCC6C6B8C5141AE47E19A17AD5441A06F7F69728C5141CB9ACDB311AD5441451FDE3B778C514158BA05B00DAD54410F9652407C8C5141C2EA486609AD54410878FA267C8C5141868ED53009AD5441DBF4B1FF7B8C5141068BF3D808AD5441B5ACCCD07B8C514119C1716D08AD5441DF8237A67B8C5141E330C61008AD544162685E8D7B8C5141B1642FD907AD54416B5662747B8C5141A15E4AA107AD5441D8D496477B8C514134BD133D07AD5441F03FD2FF7A8C5141EF5B859C06AD54418AD7FDEA7A8C5141B8EAEB6D06AD54416787F7C97A8C514101470A2406AD54419B5C2AA37A8C5141DA3D9ECD05AD54414A49DB5C7A8C51417B18053105AD5441CB19A7437A8C51416F36E2F804AD54412B64F0DF798C51414ED9CA1A04AD5441FD879D80798C5141669F7A4603AD54417144E130798C5141B89BE29402AD54414A9FDD1D798C514178F4886A02AD5441E76BDFD4788C5141DE61F5C701AD54419523AB80788C5141BB4E690C01AD544131EC8065778C514111A2B895FEAC54419170E14F778C51410B838F65FEAC54419A30B496768C5141D74F1EC9FCAC54410C671771768C5141D4375875FCAC544158C68F2E768C51419FDB29E1FBAC5441613A5E24768C514187A475CAFBAC544112F0DAD5758C514103B6961BFBAC5441D19D75A4758C514177EC91ADFAAC544130C24A3F758C5141DD7AD3C2F9AC544145E2923A758C514199E67EB6F9AC54414817DA01758C5141863A4322F9AC54417E118ABF748C51410B39F774F8AC5441F9175B8B748C51412961B5E0F7AC544173786653748C5141FDC05C5AF7AC54419A13CD09748C514138E9059AF6AC5441F69C54CC738C5141E6D4C5D2F5AC54418A03B2B2738C51415C78CA7FF5AC54414673B4A2738C514116D5BA4BF5AC5441B46AF455738C5141D1A8D951F4AC54417F8BFA3B738C5141C242B101F4AC54414FF9A01B738C5141BBB5DD9DF3AC5441A02DD007738C514100E8B760F3AC544140424410738C5141F5A52F39F3AC54411B299415738C5141110B6BE5F2AC544189071519738C51417A6EB2C7F2AC5441BF1DE31C738C514128832B72F2AC5441B179E924738C51410DB9242DF2AC5441AE394A26738C51413E48EDE0F1AC54418301572A738C514176DC8EA2F1AC54410C1BDC31738C5141196F142EF1AC5441313D2A36738C5141094E30EAF0AC5441A6F07A37738C51413CC36BD5F0AC54419C292941738C5141D893EA3CF0AC54412E22BA44738C5141A87B4004F0AC54414CDD3E49738C5141515075BCEFAC5441748E0A4A738C514152545F95EFAC544159724D59738C5141AAEE8F77EFAC544115C1386C738C5141C68C984AEFAC5441B2D4787B738C51419C7E5926EFAC5441E508259A738C51419CAF72DDEEAC54410A9733BB738C5141EA37E18EEEAC544172B3D7D2738C5141BECCB056EEAC5441E9D4FAF7738C51415DA06CFEEDAC54414CACCE22748C51415C33A298EDAC5441B5789773748C5141F8E4A0D8ECAC54417152EDA6748C5141C2DC9D5EECAC54419FC5EFBE748C5141BE19702EECAC54419C8FC9D7748C51414AB9560FECAC5441D8AD7400758C51411EDE71DCEBAC544116BE0E1D758C5141A4C4A6B8EBAC54411BA7105F758C51410B1A0C66EBAC5441D6F1FC93758C51415A45D123EBAC54414EA6C0AB758C514114E61306EBAC5441671F0DD2758C5141783826D6EAAC54416C7591D8758C51414D67FECDEAAC5441372D6CFC758C51417AD11FA1EAAC544170B8004C768C51411ADE883DEAAC5441E591C9BF768C5141D1D47EC4E9AC544168D68FEE768C514105819595E9AC5441A118B730778C514103A93C53E9AC5441A84B9653778C51419E524330E9AC54418E79CD6D778C5141E001DB21E9AC54417B14AEC77A8C5141F6285C0FE4AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172349 - 3192934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003300000052B81E25618C514148E17AA4F8AC5441AE47E19A638C5141A4703D0AFBAC5441E17A14CE638C514148E17AC4FDAC54415C8FC255618C51416666661600AD5441333333A35E8C5141666666B6FFAC5441D7A3709D5A8C5141F6285C3F06AD5441A4703DFA5F8C51410AD7A3C00BAD544114AE47E1638C514152B81EB510AD544100000030678C514152B81EA513AD5441CDCCCC6C6B8C5141AE47E19A17AD5441333333F36E8C5141333333B314AD5441000000407C8C514152B81E6509AD54417B14AE57758C5141295C8F02FAAC54417B14AE07748C514148E17A94F6AC5441D7A3700D738C51415C8FC265F3AC5441D7A3709D6F8C514114AE4751F0AC5441AE47E12A6D8C51415C8FC275EEAC5441713D0A07688C514166666676EBAC544152B81EC5658C5141295C8FC2EAAC544148E17AE4638C514152B81E75EAAC5441AE47E1BA618C514148E17A44EAAC544185EB51B85F8C514152B81E75EAAC54411F85EB115E8C5141E17A14EEEAAC5441A4703DCA5A8C51411F85EB41ECAC54418FC2F538578C51415C8FC205EEAC5441713D0A87508C514114AE4761F1AC5441333333534A8C51417B14AEB7F4AC5441AE47E1CA478C5141295C8FA2F5AC5441F6285C6F438C5141713D0A97F6AC54413D0AD7033E8C51410AD7A300F7AC544152B81E353F8C5141B81E853BFEAC54410AD7A3A0408C51410AD7A32001AD5441AE47E1EA428C514185EB517805AD54410AD7A3B0458C5141AE47E1CA09AD54411F85EB01488C51418FC2F56808AD54417B14AE17488C51411F85EBA106AD5441AE47E16A4C8C51417B14AEC705AD54413D0AD733528C51413D0AD75302AD544148E17A94558C5141CDCCCC7CFFAC5441666666D6548C5141AE47E11AFBAC5441B81E85DB538C51419A999939F8AC5441EC51B8CE558C514100000090F4AC5441295C8F72548C5141B81E858BF0AC54417B14AEC7568C5141E17A14FEEEAC54411F85EBB1598C51411F85EBB1EDAC544185EB51385C8C514100000040EFAC5441EC51B8DE5C8C5141CDCCCC6CF2AC54411F85EBD15A8C5141EC51B88EF4AC544114AE47515C8C5141713D0AC7F7AC5441EC51B8AE5E8C5141713D0AE7F8AC544152B81E25618C514148E17AA4F8AC544101030000000100000035000000E17A14CE5E8C5141333333D3D8AC5441CDCCCC3C5D8C51419A999999D8AC5441CDCCCCDC538C51419A999929DDAC5441D7A370FD498C51418FC2F538E2AC54415C8FC2D53D8C514100000010EAAC5441EC51B8FE3D8C514185EB5178F5AC54410AD7A3003E8C5141713D0A17F6AC5441F6285C8F438C51417B14AEB7F5AC5441000000C0478C5141333333E3F4AC5441A4703DDA498C5141C3F528ECF3AC54410AD7A3204C8C5141AE47E11AF3AC5441F6285CFF4F8C514100000000F1AC5441666666B6568C5141B81E855BEDAC5441713D0A475A8C51410AD7A3B0EBAC544152B81EF55D8C514148E17A44EAAC544148E17AE45F8C5141C3F528BCE9AC5441E17A149E618C51415C8FC295E9AC5441D7A3708D638C5141F6285C9FE9AC54417B14AE07658C5141EC51B8DEE9AC544133333353678C514100000070EAAC5441713D0A276A8C51410AD7A3B0EBAC544114AE47816C8C51417B14AE17EDAC544185EB51886E8C51413D0AD783EEAC5441E17A141E738C5141F6285C5FF2AC544148E17A34738C514166666606F1AC544100000020728C5141F6285C7FEFAC5441A4703D8A718C51413D0AD7F3EDAC5441295C8F12718C51410AD7A390EBAC544148E17A24718C5141333333A3E8AC544148E17A84718C514133333383E7AC54413D0AD773728C51411F85EB91E5AC54415C8FC2A5738C5141295C8F12E4AC544185EB51C8798C51413D0AD743DEAC54411F85EB417B8C514185EB5188DCAC5441F6285C7F7C8C5141295C8FA2DAAC5441B81E854B7D8C5141713D0A17D9AC5441F6285C9F7D8C5141F6285C7FD7AC5441D7A370BD7D8C5141CDCCCC2CD1AC5441AE47E1CA7E8C5141C3F528BCCAAC5441295C8FC2808C51417B14AEB7C4AC5441000000C0828C5141333333D3BFAC544114AE4741858C514152B81E35B7AC5441D7A3709D868C514166666606B4AC544152B81E65828C5141F6285CDFB3AC5441666666C67D8C514100000010B3AC5441CDCCCC2C7B8C5141C3F5285CB7AC5441666666666E8C5141EC51B8EEBBAC54419A9999A96D8C51418FC2F548CBAC54413D0AD7B3718C5141AE47E19AD3AC5441CDCCCC7C6F8C5141AE47E13AD4AC544152B81EB56C8C5141295C8F02CFAC5441D7A3703D668C5141C3F5288CD3AC5441E17A14CE5E8C5141333333D3D8AC544101030000000100000020000000B81E854B738C514185EB5198EFAC5441713D0AB7748C514185EB5138ECAC544148E17A74768C5141AE47E10AEAAC5441AE47E1AA798C5141A4703D0AE7AC54417B14AE177B8C5141AE47E1DAE5AC54417B14AEC77A8C5141F6285C0FE4AC5441666666867E8C51410AD7A390E1AC544100000040818C51415C8FC2E5DEAC544166666636878C5141EC51B87EDEAC544185EB51C8898C5141713D0A87DDAC5441295C8FC2898C51411F85EB91DCAC5441B81E85BB8D8C5141B81E855BDAAC5441000000A08D8C5141D7A3705DD4AC54415C8FC2758B8C5141D7A370FDD3AC544114AE4791888C5141B81E85EBD2AC5441295C8F82838C514114AE47B1D0AC544185EB51E8808C51413D0AD7D3CFAC5441D7A3707D7F8C514166666616D0AC544114AE47A17E8C51417B14AEC7D0AC5441D7A3703D7E8C5141F6285C9FD7AC54419A9999897D8C514100000090DAAC5441C3F5288C7C8C5141295C8F12DCAC54418FC2F5487A8C51410AD7A310DFAC544100000080778C51417B14AEB7E1AC5441E17A145E758C514185EB51B8E3AC54417B14AE77738C5141EC51B89EE5AC544114AE4781728C51417B14AE27E7AC54419A999909728C5141CDCCCC4CE8AC5441D7A370CD718C5141333333E3E9AC5441000000C0718C5141D7A3703DEBAC5441D7A370CD718C5141EC51B89EECAC5441B81E854B738C514185EB5198EFAC544101030000000100000016000000295C8FF28F8C5141F6285C7FC9AC54417B14AE778B8C514185EB5188CAAC5441333333F3898C514114AE4741C4AC544152B81EB58A8C51419A999999C2AC54413D0AD753898C5141CDCCCC0CC0AC5441EC51B80E8E8C5141C3F528DCBCAC544185EB51A88C8C5141E17A143EB4AC5441713D0A77878C5141E17A140EB4AC5441666666D6858C51410AD7A3D0B8AC54411F85EBC1838C51418FC2F5A8BFAC54415C8FC2A5818C514152B81EB5C4AC5441E17A14FE7E8C514148E17A44CDAC5441EC51B8AE7E8C5141666666B6CFAC5441000000C07F8C5141C3F5286CCFAC5441B81E85EB818C5141C3F5286CCFAC544100000040838C5141AE47E1DACFAC5441A4703D8A888C51419A999939D2AC544185EB51188C8C5141713D0A87D3AC544148E17A248D8C5141CDCCCCBCD3AC5441295C8F428D8C514185EB5138D3AC5441E17A146E928C514152B81E15D3AC5441295C8FF28F8C5141F6285C7FC9AC5441
+</a>
+
+<b>
+0106000000010000000103000000010000009B0000007B14AEC77A8C5141F6285C0FE4AC5441666666867E8C51410AD7A390E1AC544100000040818C51415C8FC2E5DEAC544166666636878C5141EC51B87EDEAC544185EB51C8898C5141713D0A87DDAC5441295C8FC2898C51411F85EB91DCAC5441B81E85BB8D8C5141B81E855BDAAC5441000000A08D8C5141D7A3705DD4AC5441508D4C3D8D8C5141359B7D4FD3AC5441295C8F428D8C514185EB5138D3AC54414F0D85B28C8C5141E4CCCE30D2AC5441E01238DF878C51416CC7EB70D0AC5441DF630854858C51411DBC18E8CEAC54411633EEFA838C51419B82F101CEAC54410A5B40A9838C5141F22BC17DCCAC544147111A22858C5141433D9D35CAAC5441928DDA07878C5141F4C047ABC8AC54411447D00D898C514104DCD97FC6AC54414B816988898C5141AE9FD38BC3AC5441C423F7268A8C51414918E32BC0AC5441EB8A1FCC8C8C51415529861AC0AC5441EC51B80E8E8C5141C3F528DCBCAC54414C7BBFB38C8C5141515B6C84B4AC5441D7A3709D868C514166666606B4AC544152B81E65828C5141F6285CDFB3AC5441666666C67D8C514100000010B3AC5441CDCCCC2C7B8C5141C3F5285CB7AC5441666666666E8C5141EC51B8EEBBAC54419A9999A96D8C51418FC2F548CBAC54413D0AD7B3718C5141AE47E19AD3AC5441CDCCCC7C6F8C5141AE47E13AD4AC544152B81EB56C8C5141295C8F02CFAC5441D7A3703D668C5141C3F5288CD3AC5441E17A14CE5E8C5141333333D3D8AC5441CDCCCC3C5D8C51419A999999D8AC5441CDCCCCDC538C51419A999929DDAC5441D7A370FD498C51418FC2F538E2AC54415C8FC2D53D8C514100000010EAAC5441EC51B8FE3D8C514185EB5178F5AC544194D894083E8C51411E937D57F8AC544152B81E353F8C5141B81E853BFEAC54410AD7A3A0408C51410AD7A32001AD5441AE47E1EA428C514185EB517805AD54410AD7A3B0458C5141AE47E1CA09AD54411F85EB01488C51418FC2F56808AD5441BE3CA24E498C5141C21BD18807AD5441AE47E16A4C8C51417B14AEC705AD54413D0AD733528C51413D0AD75302AD544148E17A94558C5141CDCCCC7CFFAC5441666666D6548C5141AE47E11AFBAC5441B81E85DB538C51419A999939F8AC5441EC51B8CE558C514100000090F4AC5441295C8F72548C5141B81E858BF0AC54417B14AEC7568C5141E17A14FEEEAC54411F85EBB1598C51411F85EBB1EDAC544185EB51385C8C514100000040EFAC5441EC51B8DE5C8C5141CDCCCC6CF2AC54411F85EBD15A8C5141EC51B88EF4AC544114AE47515C8C5141713D0AC7F7AC5441EC51B8AE5E8C5141713D0AE7F8AC544152B81E25618C514148E17AA4F8AC5441AE47E19A638C5141A4703D0AFBAC5441E17A14CE638C514148E17AC4FDAC54415C8FC255618C51416666661600AD5441333333A35E8C5141666666B6FFAC5441D7A3709D5A8C5141F6285C3F06AD5441A4703DFA5F8C51410AD7A3C00BAD544114AE47E1638C514152B81EB510AD544100000030678C514152B81EA513AD5441CDCCCC6C6B8C5141AE47E19A17AD5441A06F7F69728C5141CB9ACDB311AD5441451FDE3B778C514158BA05B00DAD54410F9652407C8C5141C2EA486609AD54410878FA267C8C5141868ED53009AD5441DBF4B1FF7B8C5141068BF3D808AD5441B5ACCCD07B8C514119C1716D08AD5441DF8237A67B8C5141E330C61008AD544162685E8D7B8C5141B1642FD907AD54416B5662747B8C5141A15E4AA107AD5441D8D496477B8C514134BD133D07AD5441F03FD2FF7A8C5141EF5B859C06AD54418AD7FDEA7A8C5141B8EAEB6D06AD54416787F7C97A8C514101470A2406AD54419B5C2AA37A8C5141DA3D9ECD05AD54414A49DB5C7A8C51417B18053105AD5441CB19A7437A8C51416F36E2F804AD54412B64F0DF798C51414ED9CA1A04AD5441FD879D80798C5141669F7A4603AD54417144E130798C5141B89BE29402AD54414A9FDD1D798C514178F4886A02AD5441E76BDFD4788C5141DE61F5C701AD54419523AB80788C5141BB4E690C01AD544131EC8065778C514111A2B895FEAC54419170E14F778C51410B838F65FEAC54419A30B496768C5141D74F1EC9FCAC54410C671771768C5141D4375875FCAC544158C68F2E768C51419FDB29E1FBAC5441613A5E24768C514187A475CAFBAC544112F0DAD5758C514103B6961BFBAC5441D19D75A4758C514177EC91ADFAAC544130C24A3F758C5141DD7AD3C2F9AC544145E2923A758C514199E67EB6F9AC54414817DA01758C5141863A4322F9AC54417E118ABF748C51410B39F774F8AC5441F9175B8B748C51412961B5E0F7AC544173786653748C5141FDC05C5AF7AC54419A13CD09748C514138E9059AF6AC5441F69C54CC738C5141E6D4C5D2F5AC54418A03B2B2738C51415C78CA7FF5AC54414673B4A2738C514116D5BA4BF5AC5441B46AF455738C5141D1A8D951F4AC54417F8BFA3B738C5141C242B101F4AC54414FF9A01B738C5141BBB5DD9DF3AC5441A02DD007738C514100E8B760F3AC544140424410738C5141F5A52F39F3AC54411B299415738C5141110B6BE5F2AC544189071519738C51417A6EB2C7F2AC5441BF1DE31C738C514128832B72F2AC5441B179E924738C51410DB9242DF2AC5441AE394A26738C51413E48EDE0F1AC54418301572A738C514176DC8EA2F1AC54410C1BDC31738C5141196F142EF1AC5441313D2A36738C5141094E30EAF0AC5441A6F07A37738C51413CC36BD5F0AC54419C292941738C5141D893EA3CF0AC54412E22BA44738C5141A87B4004F0AC54414CDD3E49738C5141515075BCEFAC5441748E0A4A738C514152545F95EFAC544159724D59738C5141AAEE8F77EFAC544115C1386C738C5141C68C984AEFAC5441B2D4787B738C51419C7E5926EFAC5441E508259A738C51419CAF72DDEEAC54410A9733BB738C5141EA37E18EEEAC544172B3D7D2738C5141BECCB056EEAC5441E9D4FAF7738C51415DA06CFEEDAC54414CACCE22748C51415C33A298EDAC5441B5789773748C5141F8E4A0D8ECAC54417152EDA6748C5141C2DC9D5EECAC54419FC5EFBE748C5141BE19702EECAC54419C8FC9D7748C51414AB9560FECAC5441D8AD7400758C51411EDE71DCEBAC544116BE0E1D758C5141A4C4A6B8EBAC54411BA7105F758C51410B1A0C66EBAC5441D6F1FC93758C51415A45D123EBAC54414EA6C0AB758C514114E61306EBAC5441671F0DD2758C5141783826D6EAAC54416C7591D8758C51414D67FECDEAAC5441372D6CFC758C51417AD11FA1EAAC544170B8004C768C51411ADE883DEAAC5441E591C9BF768C5141D1D47EC4E9AC544168D68FEE768C514105819595E9AC5441A118B730778C514103A93C53E9AC5441A84B9653778C51419E524330E9AC54418E79CD6D778C5141E001DB21E9AC54417B14AEC77A8C5141F6285C0FE4AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172411 - 210814
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000000000030B6895141AE47E1AA68AC54415C8FC2B5B3895141D7A3708D68AC5441EC51B89EB189514148E17A2469AC5441AE47E18AB38951415C8FC2A56CAC5441CDCCCCBCB6895141295C8F726CAC54410AD7A3D0B889514152B81EC570AC5441F6285C7FB28951415C8FC2F56FAC54413D0AD753AF895141D7A3700D6BAC5441295C8FA2AE895141F6285C2F6CAC54413D0AD733AE8951417B14AE576FAC54411F85EB21B08951413333335373AC54411F85EB91B0895141F6285C4F75AC54418FC2F508B08951410000003078AC5441D7A3707DAD895141E17A149E7EAC5441D7A370EDAC8951418FC2F59881AC544148E17A04AD895141A4703D1A82AC54411F85EBB1BA8951411F85EBF187AC5441713D0A87BE8951419A9999B980AC5441000000E0C48951413D0AD71385AC54418FC2F5B8C3895141CDCCCCCC8BAC544133333303E0895141B81E855B99AC54418FC2F5B8E08951419A99999999AC544100000000E48951419A9999F985AC5441E17A143EE5895141D7A3700D82AC5441333333C3E68951410AD7A3407FAC54418FC2F5D8E98951417B14AEE77AAC544114AE47C1EC89514148E17A4477AC544152B81E75F28951413D0AD76370AC54417B14AEA7F689514152B81E056EAC5441C3F5282CFB895141CDCCCC3C6AAC54415C8FC2B5FD895141F6285C8F65AC544133333333008A514185EB51A860AC54413D0AD7F3028A5141713D0A0754AC5441D7A3705DFD895141A4703D7A56AC54410AD7A310F9895141C3F5285C57AC5441666666F6F3895141000000E056AC544148E17AD4EF895141CDCCCCBC55AC54410AD7A3D0E4895141A4703DAA5AAC54411F85EB91E5895141AE47E1AA5CAC544166666626EB895141666666866DAC54419A999979DC895141D7A370AD81AC54415C8FC205D0895141B81E851B7BAC544166666656CD895141E17A143E78AC5441CDCCCC6CCB895141CDCCCCEC78AC544148E17A84C8895141C3F528CC78AC5441AE47E10AC58951413D0AD78376AC54418FC2F528C289514148E17A1474AC54419A9999A9BF895141D7A3702D71AC5441A4703DBAB789514114AE477169AC544100000030B6895141AE47E1AA68AC5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D4E68CF9E18951418961F81992AC54418FC2F5B8E08951419A99999999AC544166666616E28951418FC2F5C89CAC5441713D0A47E08951415C8FC245A1AC5441213895E9DF895141E57BCC16A2AC5441213895E9DF8951416E83E064A2AC544177787858E289514127DFC76AA0AC54417100A0BEE48951412C392A9E9EAC5441713D0A57E4895141295C8F229DAC54415C8FC275E98951417B14AE3793AC5441C999DC39EA895141DB6CCE2992AC5441A771B78EEA8951410F2986AA91AC5441742A1356F0895141F063359B89AC5441120F0FBFF4895141120F0F5F83AC5441826DE3DAFB895141A1948FCE79AC544188CEC50EFD895141F0EC201878AC544147D8DFB1F0895141AD93108472AC544109248352EF8951419D35D32B74AC544160357BE2E889514118B641607CAC5441E9BC028AE5895141D19EE48B81AC5441B8E8A22BE48951415DE7158085AC5441D4E68CF9E18951418961F81992AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172411 - 261065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000000000030B6895141AE47E1AA68AC54415C8FC2B5B3895141D7A3708D68AC5441EC51B89EB189514148E17A2469AC5441AE47E18AB38951415C8FC2A56CAC5441CDCCCCBCB6895141295C8F726CAC54410AD7A3D0B889514152B81EC570AC5441F6285C7FB28951415C8FC2F56FAC54413D0AD753AF895141D7A3700D6BAC5441295C8FA2AE895141F6285C2F6CAC54413D0AD733AE8951417B14AE576FAC54411F85EB21B08951413333335373AC54411F85EB91B0895141F6285C4F75AC54418FC2F508B08951410000003078AC5441D7A3707DAD895141E17A149E7EAC5441D7A370EDAC8951418FC2F59881AC544148E17A04AD895141A4703D1A82AC54411F85EBB1BA8951411F85EBF187AC5441713D0A87BE8951419A9999B980AC5441000000E0C48951413D0AD71385AC54418FC2F5B8C3895141CDCCCCCC8BAC544133333303E0895141B81E855B99AC54418FC2F5B8E08951419A99999999AC544100000000E48951419A9999F985AC5441E17A143EE5895141D7A3700D82AC5441333333C3E68951410AD7A3407FAC54418FC2F5D8E98951417B14AEE77AAC544114AE47C1EC89514148E17A4477AC544152B81E75F28951413D0AD76370AC54417B14AEA7F689514152B81E056EAC5441C3F5282CFB895141CDCCCC3C6AAC54415C8FC2B5FD895141F6285C8F65AC544133333333008A514185EB51A860AC54413D0AD7F3028A5141713D0A0754AC5441D7A3705DFD895141A4703D7A56AC54410AD7A310F9895141C3F5285C57AC5441666666F6F3895141000000E056AC544148E17AD4EF895141CDCCCCBC55AC54410AD7A3D0E4895141A4703DAA5AAC54411F85EB91E5895141AE47E1AA5CAC544166666626EB895141666666866DAC54419A999979DC895141D7A370AD81AC54415C8FC205D0895141B81E851B7BAC544166666656CD895141E17A143E78AC5441CDCCCC6CCB895141CDCCCCEC78AC544148E17A84C8895141C3F528CC78AC5441AE47E10AC58951413D0AD78376AC54418FC2F528C289514148E17A1474AC54419A9999A9BF895141D7A3702D71AC5441A4703DBAB789514114AE477169AC544100000030B6895141AE47E1AA68AC5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D4E68CF9E18951418961F81992AC54418FC2F5B8E08951419A99999999AC544166666616E28951418FC2F5C89CAC5441713D0A47E08951415C8FC245A1AC5441213895E9DF895141E57BCC16A2AC5441213895E9DF8951416E83E064A2AC544177787858E289514127DFC76AA0AC54417100A0BEE48951412C392A9E9EAC5441713D0A57E4895141295C8F229DAC54415C8FC275E98951417B14AE3793AC5441C999DC39EA895141DB6CCE2992AC5441A771B78EEA8951410F2986AA91AC5441742A1356F0895141F063359B89AC5441120F0FBFF4895141120F0F5F83AC5441826DE3DAFB895141A1948FCE79AC544188CEC50EFD895141F0EC201878AC544147D8DFB1F0895141AD93108472AC544109248352EF8951419D35D32B74AC544160357BE2E889514118B641607CAC5441E9BC028AE5895141D19EE48B81AC5441B8E8A22BE48951415DE7158085AC5441D4E68CF9E18951418961F81992AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172646 - 54028
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000F6285C8FB78E514148E17A4487AB54417B14AE17B68E514148E17A0485AB54411F85EBC1B48E5141EC51B82E84AB544166666676B38E5141D7A3709D84AB5441295C8FB29F8E5141B81E85DB8FAB54413D0AD763828E51411F85EB41A1AB544152B81E35828E5141EC51B88EA2AB54411F85EB61838E5141D7A370ADA4AB5441AE47E10A888E5141C3F5284CACAB544185EB51A8A08E5141EC51B8EE9DAB5441333333B3BB8E51415C8FC2258EAB5441F6285C8FB78E514148E17A4487AB5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A17E9E43828E5141254FE1A8A2AB5441D9B2C14C848E51410C79712DA6AB544175003E52848E51419EC76936A6AB544185F0D052848E5141240D5A37A6AB544185F0D052848E514175D09929A6AB5441AE47E10A888E5141C3F5284CACAB544170861C158D8E5141B388325BA9AB5441655368D58F8E5141CEDE2DC0A7AB5441206EC0159A8E51417239A5C4A1AB5441E9307AE59A8E51418B5C6B4BA1AB544185EB51A8A08E5141EC51B8EE9DAB54419C861195A98E51414E6C16B998AB54417A5B267DA98E5141FC814F8898AB5441293BEC60A68E5141B2D4BAB695AB5441C437DE65A08E51419F21364B90AB544147AD395F9D8E5141F49617FA91AB5441628F50D3938E5141DD6D945097AB5441350F229B8B8E5141025932C99BAB5441CC8BAADB888E5141D125D96A9DAB5441FA2ABDE0848E51413445CAC79FAB544109464B62828E514194ADEE4CA1AB5441A17E9E43828E5141254FE1A8A2AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540637 - 142868
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000001D00000052B81E85E75C5141000000F0644954411F85EB11E95C514148E17A445D495441333333D3E95C5141D7A370BD584954418FC2F528EA5C5141AE47E18A5349544148E17A94EA5C5141295C8FE24D49544185EB5108E65C51419A9999B94B4954418FC2F598E25C51411F85EBF1494954417B14AE47E25C5141D7A3709D4A495441CDCCCC1CDB5C5141713D0A2766495441EC51B8FEDA5C5141000000C068495441E17A140EDB5C51410AD7A3506A495441D7A370BDDD5C51410AD7A3606B495441713D0AA7DD5C51418FC2F5A86F495441B81E85CBDC5C5141E17A145E704954410AD7A3E0DA5C514152B81ED575495441333333C3DB5C51410000004077495441F6285CFFDA5C514185EB515878495441E17A14CED75C5141F6285C2F78495441CDCCCCCCD85C5141A4703DAA7B495441AE47E18ADB5C51417B14AEE77B4954413D0AD713DC5C5141D7A370FD7C4954415C8FC2D5E25C5141E17A14AE7E495441EC51B83EE65C5141E17A142E7F495441C3F528ECE85C514185EB51487F495441F6285C7FEB5C51415C8FC2F57E495441713D0AE7E85C51410AD7A30077495441F6285C6FE75C5141D7A3702D71495441EC51B80EE75C51415C8FC2256C49544152B81E85E75C5141000000F0644954410103000000010000001600000033333363D15C5141B81E85BB7A495441E17A146ED15C5141A4703DBA79495441A4703D0AD05C5141C3F5286C764954413D0AD7D3CF5C51419A9999697449544133333393C95C5141000000F071495441C3F528ACC65C5141F6285C4F714954410AD7A380C85C5141000000D06C4954417B14AE57CA5C5141B81E856B644954411F85EB21B75C5141D7A3709D5F4954411F85EB21B45C514148E17A145F495441B81E859BB35C51418FC2F5A86149544166666636B25C5141EC51B89E74495441CDCCCC2CB25C5141F6285C2F7549544185EB5138B25C51419A99992983495441A4703D3AB25C5141B81E855B85495441295C8F32B85C5141713D0A17844954411F85EB11BF5C5141713D0A67824954410AD7A380C45C5141C3F5285C81495441CDCCCCDCCA5C51410AD7A3708049544114AE47F1CD5C51410AD7A3907F4954410AD7A3A0CF5C51410AD7A3207E49544133333363D15C5141B81E85BB7A495441
+</a>
+
+<b>
+01060000000100000001030000000100000055000000AE1AF966B35C5141C3BFAB1B85495441732FAF20B95C514146EE91DC834954411F85EB11BF5C5141713D0A67824954410AD7A380C45C5141C3F5285C8149544103111820C85C514116FFFFD58049544178B60010CC5C5141BFD15D1980495441ECC31D46CC5C5141044BFE0980495441E63B43F7CC5C5141D7EBAAD77F49544157783154CE5C5141326C413C7F49544100285B97CE5C5141F337F5027F49544107EA6F4ACF5C5141A7552E6A7E49544143CEB118D05C5141F8B70E397D49544179F0A935D05C5141572A2D017D495441564384E6D05C5141230608AC7B495441065BEE26D15C5141A002C72F7B495441CDE33A67D15C514176B0385C7A495441AD3F8C67D15C51417CCAB4547A495441C4DF266AD15C5141EC0F21177A495441EE148A25D15C5141EAA4C20D79495441AD7E1E0AD15C5141003090CC784954413D9CCE8CD05C514150EA9BA277495441B6A2B986D05C51415FE625947749544174BD0A74D05C5141979EB96777495441F771713AD05C514181C3C5DE764954412191882ED05C5141D17374C276495441A4703D0AD05C5141C3F5286C7649544180091B01D05C5141756BC2157649544191F1D9FDCF5C5141E155FAF6754954413D0AD7D3CF5C51419A99996974495441988F21C6CD5C5141BBA48099734954418446D694CD5C51418F67FD85734954417FC4ECC7CC5C51419089E0347349544154C664C2CB5C51412E265ACD7249544140B7BF52CB5C5141439328A1724954418103DC2FCB5C51411109599372495441CA6E3AB7CA5C5141AED198637249544170BAE83BC95C5141C4D920DD714954410C7933B7C85C5141A11270C07149544141780F7EC85C5141109A15B471495441F988F043C85C514198E184A7714954411D5E086DC75C51413FC60E7971495441C3F528ACC65C5141F6285C4F7149544156255000C85C5141A0F9610B6E495441225FD0AFC85C51419B3BD5F86B4954417C27A80AC95C514176527C5A6A495441496184C3C95C51415AD74F0F674954410B5893FEC95C51414B1CF001664954417B14AE57CA5C5141B81E856B64495441748373DDC75C51413259E1CC6349544120EF442BC75C51416BC44FA063495441F48E3886C35C51418296EDB6624954416A780486C35C5141238FE0B6624954413A87FA47C35C5141B8015CA762495441C710842EBF5C51415A6DDBA0614954411D18AD79B75C51410DF563B35F4954419B9E9167B75C51413D7CDCAE5F4954411F85EB21B45C514148E17A145F495441E4F5B7A5B35C51410158D7766149544187A78A6AB35C5141C708A5426449544135DFEC44B35C5141523DE741664954414E6E7620B35C51415A577B3168495441A6A009EEB25C5141EE05D4DE6A495441A0FC65DCB25C51418BE491CE6B49544188C54CBDB25C51419BEF3D756D49544101F92AB2B25C5141E8AF8A0C6E495441DE77F096B25C51410B969D7E6F4954414988F27EB25C51418014B3C4704954411E46E47DB25C51413C450CD3704954411BAAD270B25C514178C7AB84714954416311DE69B25C5141469334E371495441A3A4EE4FB25C5141ABA3B3437349544164D4122DB25C5141DD2554847549544157A8122EB25C51411425BBBA764954419594392FB25C5141857291207849544170C7CD2FB25C5141A39861D478495441C7E6F32FB25C5141E6D8A20279495441C8168732B25C51413CD071227C495441C91AEC32B25C51415764029D7C49544173EA2433B25C5141DB93F0E17C4954410E63AC33B25C51410D694F867D495441D94A1937B25C51413AFC47AE814954410F175338B25C51415C0AF02A8349544100C0A138B25C5141D62DDD84834954417EA4343AB25C51417C65765185495441AE1AF966B35C5141C3BFAB1B85495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540637 - 329298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000001D00000052B81E85E75C5141000000F0644954411F85EB11E95C514148E17A445D495441333333D3E95C5141D7A370BD584954418FC2F528EA5C5141AE47E18A5349544148E17A94EA5C5141295C8FE24D49544185EB5108E65C51419A9999B94B4954418FC2F598E25C51411F85EBF1494954417B14AE47E25C5141D7A3709D4A495441CDCCCC1CDB5C5141713D0A2766495441EC51B8FEDA5C5141000000C068495441E17A140EDB5C51410AD7A3506A495441D7A370BDDD5C51410AD7A3606B495441713D0AA7DD5C51418FC2F5A86F495441B81E85CBDC5C5141E17A145E704954410AD7A3E0DA5C514152B81ED575495441333333C3DB5C51410000004077495441F6285CFFDA5C514185EB515878495441E17A14CED75C5141F6285C2F78495441CDCCCCCCD85C5141A4703DAA7B495441AE47E18ADB5C51417B14AEE77B4954413D0AD713DC5C5141D7A370FD7C4954415C8FC2D5E25C5141E17A14AE7E495441EC51B83EE65C5141E17A142E7F495441C3F528ECE85C514185EB51487F495441F6285C7FEB5C51415C8FC2F57E495441713D0AE7E85C51410AD7A30077495441F6285C6FE75C5141D7A3702D71495441EC51B80EE75C51415C8FC2256C49544152B81E85E75C5141000000F0644954410103000000010000001600000033333363D15C5141B81E85BB7A495441E17A146ED15C5141A4703DBA79495441A4703D0AD05C5141C3F5286C764954413D0AD7D3CF5C51419A9999697449544133333393C95C5141000000F071495441C3F528ACC65C5141F6285C4F714954410AD7A380C85C5141000000D06C4954417B14AE57CA5C5141B81E856B644954411F85EB21B75C5141D7A3709D5F4954411F85EB21B45C514148E17A145F495441B81E859BB35C51418FC2F5A86149544166666636B25C5141EC51B89E74495441CDCCCC2CB25C5141F6285C2F7549544185EB5138B25C51419A99992983495441A4703D3AB25C5141B81E855B85495441295C8F32B85C5141713D0A17844954411F85EB11BF5C5141713D0A67824954410AD7A380C45C5141C3F5285C81495441CDCCCCDCCA5C51410AD7A3708049544114AE47F1CD5C51410AD7A3907F4954410AD7A3A0CF5C51410AD7A3207E49544133333363D15C5141B81E85BB7A495441
+</a>
+
+<b>
+01060000000100000001030000000100000055000000AE1AF966B35C5141C3BFAB1B85495441732FAF20B95C514146EE91DC834954411F85EB11BF5C5141713D0A67824954410AD7A380C45C5141C3F5285C8149544103111820C85C514116FFFFD58049544178B60010CC5C5141BFD15D1980495441ECC31D46CC5C5141044BFE0980495441E63B43F7CC5C5141D7EBAAD77F49544157783154CE5C5141326C413C7F49544100285B97CE5C5141F337F5027F49544107EA6F4ACF5C5141A7552E6A7E49544143CEB118D05C5141F8B70E397D49544179F0A935D05C5141572A2D017D495441564384E6D05C5141230608AC7B495441065BEE26D15C5141A002C72F7B495441CDE33A67D15C514176B0385C7A495441AD3F8C67D15C51417CCAB4547A495441C4DF266AD15C5141EC0F21177A495441EE148A25D15C5141EAA4C20D79495441AD7E1E0AD15C5141003090CC784954413D9CCE8CD05C514150EA9BA277495441B6A2B986D05C51415FE625947749544174BD0A74D05C5141979EB96777495441F771713AD05C514181C3C5DE764954412191882ED05C5141D17374C276495441A4703D0AD05C5141C3F5286C7649544180091B01D05C5141756BC2157649544191F1D9FDCF5C5141E155FAF6754954413D0AD7D3CF5C51419A99996974495441988F21C6CD5C5141BBA48099734954418446D694CD5C51418F67FD85734954417FC4ECC7CC5C51419089E0347349544154C664C2CB5C51412E265ACD7249544140B7BF52CB5C5141439328A1724954418103DC2FCB5C51411109599372495441CA6E3AB7CA5C5141AED198637249544170BAE83BC95C5141C4D920DD714954410C7933B7C85C5141A11270C07149544141780F7EC85C5141109A15B471495441F988F043C85C514198E184A7714954411D5E086DC75C51413FC60E7971495441C3F528ACC65C5141F6285C4F7149544156255000C85C5141A0F9610B6E495441225FD0AFC85C51419B3BD5F86B4954417C27A80AC95C514176527C5A6A495441496184C3C95C51415AD74F0F674954410B5893FEC95C51414B1CF001664954417B14AE57CA5C5141B81E856B64495441748373DDC75C51413259E1CC6349544120EF442BC75C51416BC44FA063495441F48E3886C35C51418296EDB6624954416A780486C35C5141238FE0B6624954413A87FA47C35C5141B8015CA762495441C710842EBF5C51415A6DDBA0614954411D18AD79B75C51410DF563B35F4954419B9E9167B75C51413D7CDCAE5F4954411F85EB21B45C514148E17A145F495441E4F5B7A5B35C51410158D7766149544187A78A6AB35C5141C708A5426449544135DFEC44B35C5141523DE741664954414E6E7620B35C51415A577B3168495441A6A009EEB25C5141EE05D4DE6A495441A0FC65DCB25C51418BE491CE6B49544188C54CBDB25C51419BEF3D756D49544101F92AB2B25C5141E8AF8A0C6E495441DE77F096B25C51410B969D7E6F4954414988F27EB25C51418014B3C4704954411E46E47DB25C51413C450CD3704954411BAAD270B25C514178C7AB84714954416311DE69B25C5141469334E371495441A3A4EE4FB25C5141ABA3B3437349544164D4122DB25C5141DD2554847549544157A8122EB25C51411425BBBA764954419594392FB25C5141857291207849544170C7CD2FB25C5141A39861D478495441C7E6F32FB25C5141E6D8A20279495441C8168732B25C51413CD071227C495441C91AEC32B25C51415764029D7C49544173EA2433B25C5141DB93F0E17C4954410E63AC33B25C51410D694F867D495441D94A1937B25C51413AFC47AE814954410F175338B25C51415C0AF02A8349544100C0A138B25C5141D62DDD84834954417EA4343AB25C51417C65765185495441AE1AF966B35C5141C3BFAB1B85495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 427179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB11312154410AD7A3A0F4F05041666666E6312154411F85EBE1F3F050413D0AD783322154415C8FC255F2F05041713D0A273421544114AE4741F1F05041A4703DEA35215441333333D3EFF05041000000D03921544148E17A04CDF0504114AE47F10221544166666656C9F050418FC2F5D808215441E17A147EC5F050418FC2F5C808215441F6285CDFC6F0504152B81E5500215441333333C3BFF05041CDCCCC2C032154417B14AE57BEF050413D0AD72303215441AE47E13ABEF0504148E17A240721544152B81EB5C3F050418FC2F5080E2154418FC2F5E8CAF05041295C8F1217215441EC51B8FED6F050415C8FC25526215441713D0AA7D9F050413D0AD7332A215441A4703DDADFF05041C3F5285C322154415C8FC2E5EDF050413333332344215441C3F5289CF3F0504114AE47C14C215441B81E854B00F15041333333434E2154410500000048E17AE407F15041B81E85AB31215441D7A3704D07F15041666666362F215441A4703D0A09F15041B81E85CB2E215441E17A149E09F15041F6285C3F3121544148E17AE407F15041B81E85AB31215441090000005C8FC24508F15041000000D03B215441713D0AC709F150415C8FC2F53A21544114AE47810CF150415C8FC2153B21544114AE47710CF15041F6285CFF3E215441EC51B8DE0AF15041C3F528CC3F2154417B14AEB708F15041666666063F215441A4703DEA07F15041F6285C1F3E215441F6285CDF07F15041EC51B8DE3C2154415C8FC24508F15041000000D03B215441
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FF524C63D8F05041C92AD9DD142154410A1F3CF3DEF05041D26D2E361F2154418FA95A30E0F050412C85BE631F215441004DCC42E1F05041EC0CDBBA1E215441BB6821FEE2F050418847A2D21D2154411F2E5AE6E3F05041BBE14C511E2154412BBCCD25E3F050415C8C830D1F215441CFBFD90DE0F0504147DA95F320215441333333D3EFF05041000000D039215441F17012B3F0F050413ACFD46D37215441D57D9921F1F05041FFF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CA4DF535F2F050415751F05A342154415C8FC255F2F05041713D0A2734215441061D008BF2F05041C803B4EE332154419BEB917AF3F0504191E5CBBD32215441B2957E26F5F050417469F4F030215441A54DD3A2F4F0504161ED1C242F215441862D2694F2F050411EDBD7E52A21544174B14EC7F0F05041F7A09432282154415591A1B8EEF05041B7188F912321544109E6A48BEDF05041FAB6DEBB20215441995A1DCEECF0504176966EFB1E215441288573E4EBF0504172BE9ECF1E21544100A75AEFE8F05041736274111F215441625C3DC9E6F05041AF72303C1E2154415D37217AE4F05041638B307E1D215441B9A894EBE3F050414B845B1C1C215441AC60E967E3F050411A8CAC82182154415D37217AE4F050410DEBDB0C18215441E549AFA1E5F05041CFE1147917215441042B3D45E8F0504152CF86511621544117E45920E6F05041FC2E32E010215441B41E2138E5F05041E9BCC0510E21544182F392CEE4F0504186F787690D215441437BAF25E4F0504181D26B1A0B215441D3465A28E3F05041941C6CE00821544160D63ADFE4F050411481C33008215441D7BA5845E3F05041562C5D40042154418E403C59E1F05041F3EEBE31042154417EB0E551E0F05041E45E682A032154417D0C1010E0F05041C53EBB1B012154417C683ACEDFF05041AE94CE6FFF2054416B340E85DEF05041875A8BBCFC2054414F5C0CFADCF0504159AA87A6F9205441707FC92DDCF050417017D0E1F820544125278F1DCBF050418234C8ACFE205441F1B3594AD6F05041A253A3CB1021544153038FCCD6F05041AFA6DB0712215441D2FC1430D7F0504185BB8EF912215441FF524C63D8F05041C92AD9DD1421544110000000F36E9318E1F05041BD9714B3192154412BE42148DFF05041D6E469F219215441AFD19320DEF050418AFD69341921544197F35AF6DDF05041195AF8211821544195843EE1DDF05041C372F86317215441332E220EDDF0504114C6BFBD1521544195843EE1DDF05041C94DDC14152154411F750533DFF05041B00087D514215441A8F6AF6FE0F05041C94DDC1415215441C14305AFE0F0504114C6BFBD15215441A8F6AF6FE0F0504152CF865116215441A8F6AF6FE0F05041AA25A32417215441D9213ED9E0F05041D050318E17215441199A2182E1F0504134166A761821544131785AACE1F05041966C864919215441F36E9318E1F05041BD9714B319215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 429774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB11312154410AD7A3A0F4F05041666666E6312154411F85EBE1F3F050413D0AD783322154415C8FC255F2F05041713D0A273421544114AE4741F1F05041A4703DEA35215441333333D3EFF05041000000D03921544148E17A04CDF0504114AE47F10221544166666656C9F050418FC2F5D808215441E17A147EC5F050418FC2F5C808215441F6285CDFC6F0504152B81E5500215441333333C3BFF05041CDCCCC2C032154417B14AE57BEF050413D0AD72303215441AE47E13ABEF0504148E17A240721544152B81EB5C3F050418FC2F5080E2154418FC2F5E8CAF05041295C8F1217215441EC51B8FED6F050415C8FC25526215441713D0AA7D9F050413D0AD7332A215441A4703DDADFF05041C3F5285C322154415C8FC2E5EDF050413333332344215441C3F5289CF3F0504114AE47C14C215441B81E854B00F15041333333434E2154410500000048E17AE407F15041B81E85AB31215441D7A3704D07F15041666666362F215441A4703D0A09F15041B81E85CB2E215441E17A149E09F15041F6285C3F3121544148E17AE407F15041B81E85AB31215441090000005C8FC24508F15041000000D03B215441713D0AC709F150415C8FC2F53A21544114AE47810CF150415C8FC2153B21544114AE47710CF15041F6285CFF3E215441EC51B8DE0AF15041C3F528CC3F2154417B14AEB708F15041666666063F215441A4703DEA07F15041F6285C1F3E215441F6285CDF07F15041EC51B8DE3C2154415C8FC24508F15041000000D03B215441
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FF524C63D8F05041C92AD9DD142154410A1F3CF3DEF05041D26D2E361F2154418FA95A30E0F050412C85BE631F215441004DCC42E1F05041EC0CDBBA1E215441BB6821FEE2F050418847A2D21D2154411F2E5AE6E3F05041BBE14C511E2154412BBCCD25E3F050415C8C830D1F215441CFBFD90DE0F0504147DA95F320215441333333D3EFF05041000000D039215441F17012B3F0F050413ACFD46D37215441D57D9921F1F05041FFF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CA4DF535F2F050415751F05A342154415C8FC255F2F05041713D0A2734215441061D008BF2F05041C803B4EE332154419BEB917AF3F0504191E5CBBD32215441B2957E26F5F050417469F4F030215441A54DD3A2F4F0504161ED1C242F215441862D2694F2F050411EDBD7E52A21544174B14EC7F0F05041F7A09432282154415591A1B8EEF05041B7188F912321544109E6A48BEDF05041FAB6DEBB20215441995A1DCEECF0504176966EFB1E215441288573E4EBF0504172BE9ECF1E21544100A75AEFE8F05041736274111F215441625C3DC9E6F05041AF72303C1E2154415D37217AE4F05041638B307E1D215441B9A894EBE3F050414B845B1C1C215441AC60E967E3F050411A8CAC82182154415D37217AE4F050410DEBDB0C18215441E549AFA1E5F05041CFE1147917215441042B3D45E8F0504152CF86511621544117E45920E6F05041FC2E32E010215441B41E2138E5F05041E9BCC0510E21544182F392CEE4F0504186F787690D215441437BAF25E4F0504181D26B1A0B215441D3465A28E3F05041941C6CE00821544160D63ADFE4F050411481C33008215441D7BA5845E3F05041562C5D40042154418E403C59E1F05041F3EEBE31042154417EB0E551E0F05041E45E682A032154417D0C1010E0F05041C53EBB1B012154417C683ACEDFF05041AE94CE6FFF2054416B340E85DEF05041875A8BBCFC2054414F5C0CFADCF0504159AA87A6F9205441707FC92DDCF050417017D0E1F820544125278F1DCBF050418234C8ACFE205441F1B3594AD6F05041A253A3CB1021544153038FCCD6F05041AFA6DB0712215441D2FC1430D7F0504185BB8EF912215441FF524C63D8F05041C92AD9DD1421544110000000F36E9318E1F05041BD9714B3192154412BE42148DFF05041D6E469F219215441AFD19320DEF050418AFD69341921544197F35AF6DDF05041195AF8211821544195843EE1DDF05041C372F86317215441332E220EDDF0504114C6BFBD1521544195843EE1DDF05041C94DDC14152154411F750533DFF05041B00087D514215441A8F6AF6FE0F05041C94DDC1415215441C14305AFE0F0504114C6BFBD15215441A8F6AF6FE0F0504152CF865116215441A8F6AF6FE0F05041AA25A32417215441D9213ED9E0F05041D050318E17215441199A2182E1F0504134166A761821544131785AACE1F05041966C864919215441F36E9318E1F05041BD9714B319215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173361 - 1070288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D00000033333323F7F25041713D0A475623544185EB5118F7F250411F85EB21552354410AD7A350EBF250417B14AE4757235441713D0A67EBF2504185EB51785E2354418FC2F5F8E9F250417B14AEE776235441EC51B80EEAF250411F85EBF1782354415C8FC2A5EBF25041E17A141E7D23544166666616EFF250418FC2F5688023544148E17A24F4F250411F85EB718423544100000050F6F25041713D0AB7802354413D0AD7C3F6F250418FC2F5987C23544148E17A34F8F250418FC2F5087323544133333323F7F25041713D0A475623544105000000EC51B87EEDF2504148E17A346323544133333373EDF25041AE47E12A622354418FC2F578EEF25041AE47E11A6223544148E17A84EEF25041F6285C2F63235441EC51B87EEDF2504148E17A3463235441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE47572354416601648BE8F250418C2127D850235441D0C7083AE1F250415DBCC2DD4F235441BAA763F1DDF2504143E5DB334F235441A4703DAADDF25041666666F64F23544185EB5108DCF25041E17A14DE522354411F85EB31D8F250413D0AD7A358235441713D0AF7D6F250415C8FC2755B23544166666666D5F250418FC2F5F85F2354413D0AD783D4F25041EC51B83E64235441AE47E1BAD3F250413333339369235441AE47E14AD3F25041000000606F2354411F85EB31D3F25041666666A67523544152B81EB5D3F250419A9999697A2354417B14AEC7D4F25041A4703DAA8123544100000070D7F25041E17A14FE8F235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173361 - 5257195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D00000033333323F7F25041713D0A475623544185EB5118F7F250411F85EB21552354410AD7A350EBF250417B14AE4757235441713D0A67EBF2504185EB51785E2354418FC2F5F8E9F250417B14AEE776235441EC51B80EEAF250411F85EBF1782354415C8FC2A5EBF25041E17A141E7D23544166666616EFF250418FC2F5688023544148E17A24F4F250411F85EB718423544100000050F6F25041713D0AB7802354413D0AD7C3F6F250418FC2F5987C23544148E17A34F8F250418FC2F5087323544133333323F7F25041713D0A475623544105000000EC51B87EEDF2504148E17A346323544133333373EDF25041AE47E12A622354418FC2F578EEF25041AE47E11A6223544148E17A84EEF25041F6285C2F63235441EC51B87EEDF2504148E17A3463235441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE47572354416601648BE8F250418C2127D850235441D0C7083AE1F250415DBCC2DD4F235441BAA763F1DDF2504143E5DB334F235441A4703DAADDF25041666666F64F23544185EB5108DCF25041E17A14DE522354411F85EB31D8F250413D0AD7A358235441713D0AF7D6F250415C8FC2755B23544166666666D5F250418FC2F5F85F2354413D0AD783D4F25041EC51B83E64235441AE47E1BAD3F250413333339369235441AE47E14AD3F25041000000606F2354411F85EB31D3F25041666666A67523544152B81EB5D3F250419A9999697A2354417B14AEC7D4F25041A4703DAA8123544100000070D7F25041E17A14FE8F235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173472 - 405710
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC2054419A99990939F050419A999949D62054419A9999E93AF05041D7A370CDD7205441D7A3700D41F0504148E17AF4DE20544185EB51E886F0504133333313C6205441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000050E1F8E844F050413A32060FD2205441230E383B47F0504149CA24B5D3205441CCF453D749F05041F96E1E1DD6205441A3E262C44BF050414A6E4130D92054418E30968F4CF050412A0AA8C6DA2054410462C6924CF050414AB206DADA205441259105A04CF05041EDDE4ED5DA20544185EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC20544150E1F8E844F050413A32060FD2205441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173472 - 414460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC2054419A99990939F050419A999949D62054419A9999E93AF05041D7A370CDD7205441D7A3700D41F0504148E17AF4DE20544185EB51E886F0504133333313C6205441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000050E1F8E844F050413A32060FD2205441230E383B47F0504149CA24B5D3205441CCF453D749F05041F96E1E1DD6205441A3E262C44BF050414A6E4130D92054418E30968F4CF050412A0AA8C6DA2054410462C6924CF050414AB206DADA205441259105A04CF05041EDDE4ED5DA20544185EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC20544150E1F8E844F050413A32060FD2205441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173941 - 245752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000F000000E17A147E20FA5041F6285CEFB12D5441C3F528BC20FA5041CDCCCC9CB42D5441333333D320FA50413D0AD7B3B52D54415C8FC22524FA5041E17A146EB52D5441D7A370BD26FA504152B81E55B52D5441333333032AFA50417B14AE07B52D54415C8FC2352CFA50411F85EBE1B42D54411F85EB712DFA5041C3F5288CAB2D5441A4703D4A23FA50411F85EB21AB2D5441D7A3703D21FA5041A4703DFAAA2D54419A9999F920FA5041D7A3704DAC2D544152B81E7520FA50417B14AEA7AD2D54413D0AD75320FA504185EB5148AF2D5441D7A3703D20FA5041CDCCCC5CB02D5441E17A147E20FA5041F6285CEFB12D54410103000000020000001B000000CDCCCCFCF6F95041666666F6B82D544133333343FBF95041E17A141EB82D544148E17A9402FA5041F6285CEFB62D54413333335308FA5041AE47E11AB62D5441A4703D0A09FA504152B81E05B62D5441A4703D9A0AFA50410AD7A3D0B52D54419A9999390EFA504133333333B52D5441F6285CDF0FFA504114AE4701B52D54413333332313FA504166666656B52D5441CDCCCCFC16FA50417B14AE47B52D544114AE47011DFA50419A999979B52D5441C3F5284C20FA5041666666A6B52D5441C3F5282C20FA5041B81E854BB42D54416666660620FA504185EB5198B12D544185EB51C81FFA5041CDCCCCFCAF2D544152B81EC51FFA5041B81E854BAE2D54416666662620FA5041EC51B81EAD2D5441C3F5288C20FA50417B14AED7AA2D5441295C8F720FFA50419A999939AA2D5441C3F5288CFEF95041713D0AB7A92D54418FC2F578EAF9504133333353A92D5441A4703D7AE2F950418FC2F548A92D544152B81EC5E6F9504148E17A94AF2D5441C3F528ECEBF950418FC2F568B72D5441E17A14EEECF9504185EB5158B82D5441CDCCCCFCF2F95041AE47E1DAB82D5441CDCCCCFCF6F95041666666F6B82D54410500000033333393E7F95041713D0A07AD2D544152B81E75E7F9504114AE4731AE2D544148E17A64E6F950415C8FC215AE2D5441295C8F82E6F95041B81E85EBAC2D544133333393E7F95041713D0A07AD2D5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F4C5D39D19FA5041CB617D5DB52D5441A02D4A881CFA504181E3AD75B52D544114AE47011DFA50419A999979B52D5441D07A0E2C20FA50412794B1A4B52D5441C3F5284C20FA5041666666A6B52D5441C3F5282C20FA5041B81E854BB42D544185B8AE3020FA50417E6AA14FB22D54417DC9485220FA504143B982F3AF2D5441231B009F20FA5041A226DB00AE2D5441D7A3703D21FA5041A4703DFAAA2D5441C3F5288C20FA50417B14AED7AA2D5441ABCF202513FA5041CB18C85BAA2D5441156A5F3312FA504100FFF93DB52D54413333332313FA504166666656B52D5441CDCCCCFC16FA50417B14AE47B52D5441F4C5D39D19FA5041CB617D5DB52D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173941 - 282133
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000F000000E17A147E20FA5041F6285CEFB12D5441C3F528BC20FA5041CDCCCC9CB42D5441333333D320FA50413D0AD7B3B52D54415C8FC22524FA5041E17A146EB52D5441D7A370BD26FA504152B81E55B52D5441333333032AFA50417B14AE07B52D54415C8FC2352CFA50411F85EBE1B42D54411F85EB712DFA5041C3F5288CAB2D5441A4703D4A23FA50411F85EB21AB2D5441D7A3703D21FA5041A4703DFAAA2D54419A9999F920FA5041D7A3704DAC2D544152B81E7520FA50417B14AEA7AD2D54413D0AD75320FA504185EB5148AF2D5441D7A3703D20FA5041CDCCCC5CB02D5441E17A147E20FA5041F6285CEFB12D54410103000000020000001B000000CDCCCCFCF6F95041666666F6B82D544133333343FBF95041E17A141EB82D544148E17A9402FA5041F6285CEFB62D54413333335308FA5041AE47E11AB62D5441A4703D0A09FA504152B81E05B62D5441A4703D9A0AFA50410AD7A3D0B52D54419A9999390EFA504133333333B52D5441F6285CDF0FFA504114AE4701B52D54413333332313FA504166666656B52D5441CDCCCCFC16FA50417B14AE47B52D544114AE47011DFA50419A999979B52D5441C3F5284C20FA5041666666A6B52D5441C3F5282C20FA5041B81E854BB42D54416666660620FA504185EB5198B12D544185EB51C81FFA5041CDCCCCFCAF2D544152B81EC51FFA5041B81E854BAE2D54416666662620FA5041EC51B81EAD2D5441C3F5288C20FA50417B14AED7AA2D5441295C8F720FFA50419A999939AA2D5441C3F5288CFEF95041713D0AB7A92D54418FC2F578EAF9504133333353A92D5441A4703D7AE2F950418FC2F548A92D544152B81EC5E6F9504148E17A94AF2D5441C3F528ECEBF950418FC2F568B72D5441E17A14EEECF9504185EB5158B82D5441CDCCCCFCF2F95041AE47E1DAB82D5441CDCCCCFCF6F95041666666F6B82D54410500000033333393E7F95041713D0A07AD2D544152B81E75E7F9504114AE4731AE2D544148E17A64E6F950415C8FC215AE2D5441295C8F82E6F95041B81E85EBAC2D544133333393E7F95041713D0A07AD2D5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F4C5D39D19FA5041CB617D5DB52D5441A02D4A881CFA504181E3AD75B52D544114AE47011DFA50419A999979B52D5441D07A0E2C20FA50412794B1A4B52D5441C3F5284C20FA5041666666A6B52D5441C3F5282C20FA5041B81E854BB42D544185B8AE3020FA50417E6AA14FB22D54417DC9485220FA504143B982F3AF2D5441231B009F20FA5041A226DB00AE2D5441D7A3703D21FA5041A4703DFAAA2D5441C3F5288C20FA50417B14AED7AA2D5441ABCF202513FA5041CB18C85BAA2D5441156A5F3312FA504100FFF93DB52D54413333332313FA504166666656B52D5441CDCCCCFC16FA50417B14AE47B52D5441F4C5D39D19FA5041CB617D5DB52D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174396 - 3090944
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000061000000C3F5282CBFF350413D0AD723EB31544166666626BDF35041EC51B8AEEE3154413D0AD7A3BAF3504148E17A34F431544185EB5108B8F35041C3F5280CFB315441713D0A97B5F3504185EB51C8FF315441A4703D0AB3F350410AD7A390043254411F85EB31B0F350419A9999C908325441A4703D5AADF3504185EB51880C3254411F85EB2190F350413D0AD78329325441EC51B85E93F3504148E17A842C325441E17A141E97F35041B81E857B29325441E17A149E99F35041B81E855B23325441B81E85FB9FF35041E17A142E1E3254410AD7A380A4F35041CDCCCC5C1932544100000080A9F35041666666B613325441333333F3ACF35041713D0AF70F325441A4703DDAAEF35041C3F5281C0D32544100000020B2F35041E17A143E0932544148E17A44B4F3504148E17A840732544152B81EE5B7F35041C3F528EC06325441A4703D6ABCF35041EC51B8EE07325441295C8F82BFF350419A9999990932544148E17AD4C1F35041D7A370BD0B325441D7A370BDC4F350411F85EB010E325441F6285C6FC6F350413D0AD7630B3254417B14AE27C8F350410AD7A3B009325441713D0AB7CCF3504114AE47C1073254415C8FC245CFF350418FC2F5E805325441F6285C7FD3F35041000000A006325441D7A3704DD7F350418FC2F52807325441E17A146EDDF35041D7A370CD063254413D0AD7F3E1F350410AD7A3D007325441333333B3E5F350419A9999590832544185EB51A8ECF35041713D0A1706325441713D0AF7F2F350410AD7A320043254413D0AD793FAF35041E17A145EFF31544114AE4781FEF35041CDCCCC3CFE31544148E17A6404F450417B14AEA7FE31544114AE47110CF4504114AE4721FF315441713D0AC711F4504152B81E1500325441CDCCCCAC16F4504185EB5198FE315441D7A370DD1CF45041B81E85BBFE315441333333C31FF45041713D0AA7FF315441713D0AF722F4504114AE47C1FE3154416666662625F450418FC2F598FF31544114AE47212AF4504100000080FD315441D7A370FD37F450418FC2F5A8F731544152B81E8545F4504114AE4721F6315441AE47E12A46F4504166666606F63154415C8FC2B546F450410AD7A3F0F5315441D7A3702D4AF45041295C8F62F53154418FC2F50853F45041713D0AF7F331544148E17A2467F45041EC51B8BEF0315441D7A3702D60F45041713D0AD7E0315441D7A370BD5DF450419A9999B9DA3154417B14AE4759F45041EC51B8EED2315441CDCCCCEC53F45041000000E0CD31544152B81E954FF45041E17A141EC931544148E17A644BF45041AE47E19AC131544152B81EF546F45041EC51B87EBB315441A4703D5A45F450413D0AD7A3B83154417B14AEC746F45041AE47E1AAB0315441A4703DCA47F4504185EB5178A9315441E17A143E45F450413D0AD763A9315441D7A3708D3CF450413D0AD7D3B031544185EB513836F45041A4703D3AB53154415C8FC29530F4504152B81E15B831544114AE47E120F450418FC2F5B8BE315441666666F619F450415C8FC2F5C1315441713D0A4715F450418FC2F5C8C4315441AE47E1CA10F45041A4703D8AC93154411F85EB510AF45041713D0A07D23154413D0AD72307F4504152B81E55D5315441333333F3FFF350413D0AD753D931544114AE4791FAF35041666666B6DA315441713D0A37FDF3504185EB5188E0315441CDCCCC7CFDF350411F85EB61E131544148E17AD4FCF350417B14AE97E1315441AE47E1EAFDF35041E17A142EE63154415C8FC205FDF3504148E17AD4E7315441666666C6FFF35041E17A148EF4315441C3F528FCFDF350418FC2F508F53154417B14AEB7FBF3504152B81E95EA315441F6285CAFFAF3504133333383EA3154418FC2F578F2F3504152B81EC5EA315441F6285C1FEFF35041B81E853BEA31544133333363EEF35041F6285CEFE8315441C3F5281CEBF3504152B81E85E431544185EB51A8E8F3504166666636DF31544166666646E5F350418FC2F5C8DF315441F6285CCFD5F3504114AE4761E13154419A999929CDF3504100000080E23154418FC2F5B8C9F35041AE47E14AE3315441A4703D3AC6F350418FC2F5C8E4315441295C8F22C3F350413D0AD7D3E6315441EC51B8CEC0F350418FC2F5F8E8315441C3F5282CBFF350413D0AD723EB315441
+</a>
+
+<b>
+010600000001000000010300000001000000180000002D737E084BF45041ED2E713FF5315441355561664DF450415E1CAD8CFA315441E8D3A5B74BF450410348C0D0FB315441B492CD484CF450419922F35DFE315441D5C5EB524DF45041FD5E6A1100325441E48D6C8D4EF45041C91D92A20032544114890BD250F45041706362FF023254412B8D9AF258F4504193399D9E02325441DCB195CA60F45041619BE1C4013254413EA24ABC6BF450413D34B3F4FF315441A71ABE3C6DF45041D4BB3F74FE31544139FAFB5167F4504129C33AB7F0315441CA20D46A5FF450419F6B6BFBF13154411C59A08E5EF450414BC1AE1EF23154413975E1AD5DF450416C59AC42F2315441FA0C896F5CF450417A1FA775F2315441143C42C35BF4504104B73D91F2315441ED9144615AF45041EBCCEDC9F2315441CDA4F01659F45041E7CDD3FEF23154413E89778C57F45041DF7BFF3DF331544171B4913255F450416EAC629EF33154418010441E53F45041B2CAA0F3F3315441FE8C50BA50F45041C4E0AF55F43154412D737E084BF45041ED2E713FF5315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174396 - 3433660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000061000000C3F5282CBFF350413D0AD723EB31544166666626BDF35041EC51B8AEEE3154413D0AD7A3BAF3504148E17A34F431544185EB5108B8F35041C3F5280CFB315441713D0A97B5F3504185EB51C8FF315441A4703D0AB3F350410AD7A390043254411F85EB31B0F350419A9999C908325441A4703D5AADF3504185EB51880C3254411F85EB2190F350413D0AD78329325441EC51B85E93F3504148E17A842C325441E17A141E97F35041B81E857B29325441E17A149E99F35041B81E855B23325441B81E85FB9FF35041E17A142E1E3254410AD7A380A4F35041CDCCCC5C1932544100000080A9F35041666666B613325441333333F3ACF35041713D0AF70F325441A4703DDAAEF35041C3F5281C0D32544100000020B2F35041E17A143E0932544148E17A44B4F3504148E17A840732544152B81EE5B7F35041C3F528EC06325441A4703D6ABCF35041EC51B8EE07325441295C8F82BFF350419A9999990932544148E17AD4C1F35041D7A370BD0B325441D7A370BDC4F350411F85EB010E325441F6285C6FC6F350413D0AD7630B3254417B14AE27C8F350410AD7A3B009325441713D0AB7CCF3504114AE47C1073254415C8FC245CFF350418FC2F5E805325441F6285C7FD3F35041000000A006325441D7A3704DD7F350418FC2F52807325441E17A146EDDF35041D7A370CD063254413D0AD7F3E1F350410AD7A3D007325441333333B3E5F350419A9999590832544185EB51A8ECF35041713D0A1706325441713D0AF7F2F350410AD7A320043254413D0AD793FAF35041E17A145EFF31544114AE4781FEF35041CDCCCC3CFE31544148E17A6404F450417B14AEA7FE31544114AE47110CF4504114AE4721FF315441713D0AC711F4504152B81E1500325441CDCCCCAC16F4504185EB5198FE315441D7A370DD1CF45041B81E85BBFE315441333333C31FF45041713D0AA7FF315441713D0AF722F4504114AE47C1FE3154416666662625F450418FC2F598FF31544114AE47212AF4504100000080FD315441D7A370FD37F450418FC2F5A8F731544152B81E8545F4504114AE4721F6315441AE47E12A46F4504166666606F63154415C8FC2B546F450410AD7A3F0F5315441D7A3702D4AF45041295C8F62F53154418FC2F50853F45041713D0AF7F331544148E17A2467F45041EC51B8BEF0315441D7A3702D60F45041713D0AD7E0315441D7A370BD5DF450419A9999B9DA3154417B14AE4759F45041EC51B8EED2315441CDCCCCEC53F45041000000E0CD31544152B81E954FF45041E17A141EC931544148E17A644BF45041AE47E19AC131544152B81EF546F45041EC51B87EBB315441A4703D5A45F450413D0AD7A3B83154417B14AEC746F45041AE47E1AAB0315441A4703DCA47F4504185EB5178A9315441E17A143E45F450413D0AD763A9315441D7A3708D3CF450413D0AD7D3B031544185EB513836F45041A4703D3AB53154415C8FC29530F4504152B81E15B831544114AE47E120F450418FC2F5B8BE315441666666F619F450415C8FC2F5C1315441713D0A4715F450418FC2F5C8C4315441AE47E1CA10F45041A4703D8AC93154411F85EB510AF45041713D0A07D23154413D0AD72307F4504152B81E55D5315441333333F3FFF350413D0AD753D931544114AE4791FAF35041666666B6DA315441713D0A37FDF3504185EB5188E0315441CDCCCC7CFDF350411F85EB61E131544148E17AD4FCF350417B14AE97E1315441AE47E1EAFDF35041E17A142EE63154415C8FC205FDF3504148E17AD4E7315441666666C6FFF35041E17A148EF4315441C3F528FCFDF350418FC2F508F53154417B14AEB7FBF3504152B81E95EA315441F6285CAFFAF3504133333383EA3154418FC2F578F2F3504152B81EC5EA315441F6285C1FEFF35041B81E853BEA31544133333363EEF35041F6285CEFE8315441C3F5281CEBF3504152B81E85E431544185EB51A8E8F3504166666636DF31544166666646E5F350418FC2F5C8DF315441F6285CCFD5F3504114AE4761E13154419A999929CDF3504100000080E23154418FC2F5B8C9F35041AE47E14AE3315441A4703D3AC6F350418FC2F5C8E4315441295C8F22C3F350413D0AD7D3E6315441EC51B8CEC0F350418FC2F5F8E8315441C3F5282CBFF350413D0AD723EB315441
+</a>
+
+<b>
+010600000001000000010300000001000000180000002D737E084BF45041ED2E713FF5315441355561664DF450415E1CAD8CFA315441E8D3A5B74BF450410348C0D0FB315441B492CD484CF450419922F35DFE315441D5C5EB524DF45041FD5E6A1100325441E48D6C8D4EF45041C91D92A20032544114890BD250F45041706362FF023254412B8D9AF258F4504193399D9E02325441DCB195CA60F45041619BE1C4013254413EA24ABC6BF450413D34B3F4FF315441A71ABE3C6DF45041D4BB3F74FE31544139FAFB5167F4504129C33AB7F0315441CA20D46A5FF450419F6B6BFBF13154411C59A08E5EF450414BC1AE1EF23154413975E1AD5DF450416C59AC42F2315441FA0C896F5CF450417A1FA775F2315441143C42C35BF4504104B73D91F2315441ED9144615AF45041EBCCEDC9F2315441CDA4F01659F45041E7CDD3FEF23154413E89778C57F45041DF7BFF3DF331544171B4913255F450416EAC629EF33154418010441E53F45041B2CAA0F3F3315441FE8C50BA50F45041C4E0AF55F43154412D737E084BF45041ED2E713FF5315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174465 - 266661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000F0000003D0AD7C372F85041295C8F224E2C5441AE47E17A7BF85041F6285CEF4B2C54419A9999C97DF85041CDCCCCCC4B2C544114AE47317CF850415C8FC205452C5441666666967BF8504114AE47A1442C54417B14AE0748F8504185EB51E84E2C5441713D0A4748F850411F85EB21502C54410AD7A36043F8504100000020512C544114AE47513CF85041713D0A47512C5441EC51B87E3CF8504148E17A04562C5441713D0AC74FF850418FC2F5F8542C5441000000E054F85041EC51B8EE542C54415C8FC2555FF85041EC51B8EE532C5441333333D368F8504152B81E75512C54413D0AD7C372F85041295C8F224E2C54410103000000010000001A000000E17A141E80F85041A4703DAA4B2C54410AD7A32085F8504185EB51B84B2C54411F85EBE18EF85041EC51B84E492C54418FC2F5A898F850415C8FC205462C54411F85EB71A6F850411F85EB61402C5441A4703D3AB4F85041E17A148E3A2C5441EC51B8CEBDF8504185EB5118372C544185EB5178D0F85041E17A149E302C5441000000F0DFF85041EC51B86E2A2C5441295C8F32DAF85041295C8F221F2C544166666686D5F85041AE47E11A142C5441CDCCCCACB7F85041AE47E12A1E2C5441F6285CFF9CF8504185EB51E8272C544185EB51B89BF8504166666606292C5441AE47E12A97F85041B81E852B222C5441E17A144E94F85041C3F528AC2C2C54413D0AD74392F8504148E17A54322C54416666669690F850411F85EB21362C5441E17A146E8EF85041F6285C7F3A2C54415C8FC2058CF85041713D0A173D2C54410000007089F85041666666363F2C54410AD7A32087F850410AD7A390402C54413D0AD77384F8504152B81E95412C5441666666067DF850410AD7A310432C5441B81E850B7FF85041A4703DBA4B2C5441E17A141E80F85041A4703DAA4B2C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000060530EE8ABF8504159138BC6272C5441C6F97E87ABF850414B94179A222C5441F6285CFF9CF8504185EB51E8272C544185EB51B89BF8504166666606292C5441AE47E12A97F85041B81E852B222C5441E17A144E94F85041C3F528AC2C2C54413D0AD74392F8504148E17A54322C5441BA85CC3A92F850419259F968322C5441B785CC3A92F850419B59F968322C544122B29CCA93F85041DC655A7E312C544109FC401097F85041A2A3CD922F2C54411BA41B9B99F85041AE7512692E2C5441732432CC9AF8504103BA82DD2D2C5441F06020A3A0F85041043B63322C2C54413B180B89A6F85041D4B8DF272A2C544160530EE8ABF8504159138BC6272C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>176737 - 1151451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000009A99998919D75041000000F03B3854419A9999D91AD75041AE47E1EA3A3854413333339320D750418FC2F578233854416666662626D75041333333930A3854410AD7A32024D7504100000050093854415C8FC25520D7504152B81E7506385441713D0A571FD750415C8FC2B505385441F6285C1F1BD750415C8FC25502385441000000E01AD75041D7A3700D023854418FC2F50819D7504114AE47F1FF37544152B81E9518D750413D0AD773FF37544114AE47A112D7504185EB518805385441666666B60DD750411F85EBF1093854413D0AD7030BD75041295C8F420C38544114AE477103D75041E17A144E26385441C3F5287CFDD65041CDCCCC5C3E38544100000080FCD65041F6285C2F3E3854413D0AD783F9D65041AE47E10A3D385441A4703D7AF7D6504185EB51383C385441713D0A37F2D65041CDCCCCFC4F385441E17A145EF1D650416666663652385441EC51B8EEE7D65041C3F5283C723854410AD7A360EBD65041F6285CFF72385441333333A3EED6504166666676723854418FC2F5F8F0D6504114AE4771713854411F85EB41F3D650417B14AE976F3854415C8FC285F4D6504148E17AC46E3854413D0AD7F3F5D650415C8FC2856E385441F6285C1FF8D65041B81E853B6E385441A4703DEAFBD650410AD7A3B06F38544114AE47B105D75041F6285C6F733854413D0AD7F308D7504114AE47F174385441AE47E1CA0BD750410AD7A3D06C385441000000C00FD750413333331361385441D7A3700D15D75041333333E34F385441F6285C9F17D75041EC51B8EE433854419A99998919D75041000000F03B385441
+</a>
+
+<b>
+010600000001000000010300000001000000350000009A9999D91AD75041AE47E1EA3A385441A55162851BD750416EF9632B38385441342C21F21BD75041D0650E6E36385441796176041CD75041CFC9FA22363854416220D98B1CD75041F6698CF833385441A702027A1DD750418CDA3C293038544108F371381ED750415D155C1D2D3854411C6D86121FD75041FF7F47A0293854413B1D6BCF1FD75041405CB99A2638544135A4037920D750414B2632E4233854413B72C4B421D75041AA87C66B1E38544109FF9ECA22D75041283CE79219385441FE19E83A23D750413DEA719D173854419AC80FAB23D7504143DC91A815385441894969EB24D750416509EA1110385441F7DA186E25D75041892B48CA0D3854416666662626D75041333333930A3854410AD7A32024D7504100000050093854415C8FC25520D7504152B81E7506385441713D0A571FD750415C8FC2B505385441F6285C1F1BD750415C8FC25502385441000000E01AD75041D7A3700D023854418FC2F50819D7504114AE47F1FF37544152B81E9518D750413D0AD773FF37544114AE47A112D7504185EB518805385441666666B60DD750411F85EBF1093854413D0AD7030BD75041295C8F420C385441381C0CFC03D75041D114CD702438544114AE477103D75041E17A144E26385441C3F5287CFDD65041CDCCCC5C3E38544100000080FCD65041F6285C2F3E3854413D0AD783F9D65041AE47E10A3D385441A4703D7AF7D6504185EB51383C385441713D0A37F2D65041CDCCCCFC4F385441E17A145EF1D650416666663652385441EC51B8EEE7D65041C3F5283C723854410AD7A360EBD65041F6285CFF72385441333333A3EED6504166666676723854418FC2F5F8F0D6504114AE4771713854411F85EB41F3D650417B14AE976F3854415C8FC285F4D6504148E17AC46E3854413D0AD7F3F5D650415C8FC2856E385441F6285C1FF8D65041B81E853B6E385441A4703DEAFBD650410AD7A3B06F38544114AE47B105D75041F6285C6F733854413D0AD7F308D7504114AE47F174385441AE47E1CA0BD750410AD7A3D06C385441000000C00FD750413333331361385441D7A3700D15D75041333333E34F385441F6285C9F17D75041EC51B8EE433854416F64E07619D7504157542B3E3C3854419A99998919D75041000000F03B3854419A9999D91AD75041AE47E1EA3A385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>177989 - 4163805
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000CDCCCC7C1929514148E17A14A92E5541CDCCCC8C1929514148E17AA4A62E5541CDCCCC4C1829514148E17AE4A12E5541CDCCCC7CFD28514148E17A14A02E5541CDCCCCBCFA28514148E17A24A02E55413D0AD723D128514133333313AB2E55410AD7A370D428514148E17AC4BA2E55417B14AE97D928514114AE4741D32E554133333303EC2851419A9999D9CD2E554152B81EC502295141F6285C6FC72E55415C8FC2450F2951419A999939C42E5541CDCCCC8C1129514148E17A94C32E5541CDCCCC6C1229514148E17A74BC2E5541CDCCCC7C1329514148E17AD4B82E5541CDCCCC2C1529514148E17AC4B42E5541CDCCCCBC1829514148E17AD4AD2E5541CDCCCC7C1929514148E17A14A92E5541
+</a>
+
+<b>
+01060000000100000001030000000100000030000000BE07DDDDD6285141DCA3DF4CC62E5541831B7882D72851411A992B5BC92E5541A1B9525DD8285141B6BF486BCD2E55417B14AE97D928514114AE4741D32E5541AA887B2AE82851418EDA22FCCE2E5541E26C4D11E9285141EA23D1B6CE2E554165F92124EB285141EB0B0E1BCE2E5541324D6B4AEC2851410C3E86C5CD2E55413E7737BFED285141DA35705CCD2E554130F22655EF285141A7DB02EACC2E5541E5A3E025F028514139B22CAFCC2E5541A76DE581F12851416FC4124DCC2E554152B81EC502295141F6285C6FC72E5541F8882F06042951410444ED1CC72E55415C8FC2450F2951419A999939C42E55416AB793FB0F29514136C41B06C42E5541CDCCCC8C1129514148E17A94C32E55419D33112612295141867772B4BE2E5541CDCCCC6C1229514148E17A74BC2E55410CA4943113295141445D1CD5B92E5541CDCCCC7C1329514148E17AD4B82E5541225B1E8B14295141A28AB649B62E5541D9CEF7FB14295141BC749340B62E55413D0AD72B1729514189416095B12E5541C3F528C4182951413BDF4F1DAE2E554185EB5180192951417F6ABCCCAB2E55419318048E192951413D0AD7B3A72E55418F67BA8619295141CB4D4891A72E55411C19628C192951414641BCB4A62E55413F650F7E192951415EF1776CA62E554156F4D76C19295141B7AA0B2BA62E5541DB0E093C192951417D0F9371A52E5541F1603F06192951416B472EA5A42E5541D4BE05E218295141FA78861BA42E5541E2E308841829514100395FB6A22E5541CDCCCC4C1829514148E17AE4A12E55414DCD08E41729514186DF65DDA12E55417D3F357617295141C3F528B4A02E554154E3A5E3132951414A0C02CB9F2E55414260E5C8092951416F1283509F2E5541F4FDD4C800295141621058199F2E5541A01A2F15FE285141FCA9F11A9F2E5541E7FBA951F7285141CDCCCCC4A02E5541022B87AEE628514137894110A52E55418FE29515D1285141147E76CFAA2E5541DF4F8DE7D0285141A245B6DBAA2E554177BE9F4AD328514114AE4781B52E5541BE07DDDDD6285141DCA3DF4CC62E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 2090126
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C07A64005E345141916F040A2A2A5541B0A156DD61345141B61CC57C2A2A55414CB8D34A6534514118F296E22A2A55415C8FC2656A345141A4703D7A2B2A554185EB51386B345141EC51B8FE232A55413D0AD7D35834514100000020222A5541D7A370DD48345141E17A146E212A5541E17A14DE4734514133333363212A554185EB51A84634514148E17A34212A5541295C8F0246345141CDCCCC7C202A5541EC51B85E463451411F85EB611F2A55411F85EBE147345141EC51B8EE1D2A554185EB51084534514148E17A041E2A55411F85EB613434514185EB5138212A5541AE47E1AA243451413D0AD7E3282A5541209C18BF27345141F2820B43292A554148A34EB02A345141C85A5C79292A55414CE3D5812D3451418D4F64AD292A55416C84862F3A345141053172972A2A554114AE476142345141EC51B82E2B2A5541A4703D7A42345141333333D3292A55414836C73D463451415927FB72292A5541940DB5AA4A34514168C5BF48292A554112F5F1074F345141DD917346292A55417B0C3A15583451415FE6B1A2292A5541C07A64005E345141916F040A2A2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 4617761
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C07A64005E345141916F040A2A2A5541B0A156DD61345141B61CC57C2A2A55414CB8D34A6534514118F296E22A2A55415C8FC2656A345141A4703D7A2B2A554185EB51386B345141EC51B8FE232A55413D0AD7D35834514100000020222A5541D7A370DD48345141E17A146E212A5541E17A14DE4734514133333363212A554185EB51A84634514148E17A34212A5541295C8F0246345141CDCCCC7C202A5541EC51B85E463451411F85EB611F2A55411F85EBE147345141EC51B8EE1D2A554185EB51084534514148E17A041E2A55411F85EB613434514185EB5138212A5541AE47E1AA243451413D0AD7E3282A5541209C18BF27345141F2820B43292A554148A34EB02A345141C85A5C79292A55414CE3D5812D3451418D4F64AD292A55416C84862F3A345141053172972A2A554114AE476142345141EC51B82E2B2A5541A4703D7A42345141333333D3292A55414836C73D463451415927FB72292A5541940DB5AA4A34514168C5BF48292A554112F5F1074F345141DD917346292A55417B0C3A15583451415FE6B1A2292A5541C07A64005E345141916F040A2A2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 34885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000005C8FC2656A345141A4703D7A2B2A5541CDCCCC0C68345141C3F5281C2A2A5541000000405E34514152B81E15292A5541000000F05334514114AE4711282A554185EB51084B34514114AE47C1272A554185EB51A8463451419A999999272A554185EB5108413451419A999929292A5541C3F528DC3A34514152B81E65292A5541C3F5280C2E345141D7A3709D282A554185EB51C827345141EC51B85E272A5541576B44DF273451413F018553272A5541F3E516DF27345141EA7B8553272A5541AE47E1AA243451413D0AD7E3282A5541209C18BF27345141F2820B43292A554148A34EB02A345141C85A5C79292A55414CE3D5812D3451418D4F64AD292A55416C84862F3A345141053172972A2A554114AE476142345141EC51B82E2B2A5541A4703D7A42345141333333D3292A55414836C73D463451415927FB72292A5541940DB5AA4A34514168C5BF48292A554112F5F1074F345141DD917346292A55417B0C3A15583451415FE6B1A2292A5541C07A64005E345141916F040A2A2A5541B0A156DD61345141B61CC57C2A2A55414CB8D34A6534514118F296E22A2A55415C8FC2656A345141A4703D7A2B2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 58135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000005C8FC2656A345141A4703D7A2B2A5541CDCCCC0C68345141C3F5281C2A2A5541000000405E34514152B81E15292A5541000000F05334514114AE4711282A554185EB51084B34514114AE47C1272A554185EB51A8463451419A999999272A554185EB5108413451419A999929292A5541C3F528DC3A34514152B81E65292A5541C3F5280C2E345141D7A3709D282A554185EB51C827345141EC51B85E272A5541576B44DF273451413F018553272A5541F3E516DF27345141EA7B8553272A5541AE47E1AA243451413D0AD7E3282A5541209C18BF27345141F2820B43292A554148A34EB02A345141C85A5C79292A55414CE3D5812D3451418D4F64AD292A55416C84862F3A345141053172972A2A554114AE476142345141EC51B82E2B2A5541A4703D7A42345141333333D3292A55414836C73D463451415927FB72292A5541940DB5AA4A34514168C5BF48292A554112F5F1074F345141DD917346292A55417B0C3A15583451415FE6B1A2292A5541C07A64005E345141916F040A2A2A5541B0A156DD61345141B61CC57C2A2A55414CB8D34A6534514118F296E22A2A55415C8FC2656A345141A4703D7A2B2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 1490885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541713D0AE74534514166666646332B55411F85EB11423451417B14AEF7322B5541F6285C8F3A345141CDCCCC1C332B5541A4703DAA243451413D0AD7D3322B5541C3F528AC21345141666666D6322B5541333333031F34514166666676332B5541666666561C3451417B14AEB7342B5541EC51B81E1A345141333333A3362B5541F6285CBF1C34514148E17A743A2B5541A4703DAA1D34514185EB51783A2B5541A4703DBA2B345141C3F5288C3A2B5541D7A370CD49345141C3F5283C3A2B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B55418FC2F5A86C345141E17A143E312B5541F6285C4F6C345141E17A148E2E2B5541B81E85CB66345141333333E3312B5541F6285CAF64345141F6285CAF312B5541B81E85BB5C345141CDCCCCBC322B5541A4703D6A52345141295C8F32342B55410AD7A3F04C3451413D0AD7F3332B554114AE47D14C3451417B14AE77332B5541EC51B89E5134514148E17AE4322B5541A4703DFA59345141C3F528CC312B5541666666565D34514185EB51B8312B5541666666565D34514185EB51D82F2B5541A4703D8A603451410AD7A3702E2B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003600000017F48C74213451411ECE7507412B5541834CDD4D213451410E87F20C412B55416A536F5C21345141DF904028412B55419A99993923345141D7A370DD432B5541666666A627345141F6285CEF482B5541C3F528EC2F345141E17A14AE482B554114AE47213234514185EB51B8472B554152B81E3535345141A4703DFA482B55416666662640345141333333734D2B554100000020433451417B14AEC74F2B5541EC51B8AE473451418FC2F518502B5541B81E859B4B345141000000F04E2B55417B14AED75134514185EB5128492B5541CDCCCC9C653451418FC2F5B8432B5541713D0A576B3451419A9999E9402B5541405A93F96B3451414B1DA770402B55411F85EB516E3451411F85EBB13E2B55412143058E6F345141AD2DC2523D2B55412F12B8F370345141809B62C53B2B5541EC51B82E713451413D0AD7833B2B554114AE47A172345141B81E855B382B5541FE889B036F345141D92FA4D1372B55413D0AD7B36E3451415C8FC2C5372B5541E45C29B56B345141A780ECF8372B5541479F49746A3451413551560E382B5541419ED2A868345141E2D1FF2C382B5541A5D2D09963345141D4BB6B83382B55415D816D2F633451414A44858A382B5541AF8BF5C361345141A4C4C6A2382B55413687ED625F3451413D776BCB382B5541C2C4E2B05B34514177A88D0A392B5541480547B8553451419E6B9070392B5541E909590D52345141A81A39AF392B5541D7A370CD49345141C3F5283C3A2B55410B598A6E47345141AF5277423A2B5541FD9FF4C8463451410DC82F443A2B5541E35EA1DE44345141FE0D48493A2B554135E4AC1F4234514138ED95503A2B55412C6B17D64134514136A959513A2B55414C4D5C0B41345141B9ED74533A2B5541F4EB9FFA3F34514118694A563A2B55419211C3213F345141D9448B583A2B5541A68FCBF13C3451413ECA5C5E3A2B554162A232C636345141978BC66E3A2B5541AA208FB72E345141D13235843A2B5541A4703DBA2B345141C3F5288C3A2B554100C0E8FF263451411A5F7D853A2B5541F7B1A27023345141C4B477803A2B5541F2D2494A213451417C406F7D3A2B5541A4703DAA1D34514185EB51783A2B5541F6285CBF1C34514148E17A743A2B55418633E5891F345141331C80823E2B5541D65DD64A213451410050AB08412B554117F48C74213451411ECE7507412B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 3128988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541713D0AE74534514166666646332B55411F85EB11423451417B14AEF7322B5541F6285C8F3A345141CDCCCC1C332B5541A4703DAA243451413D0AD7D3322B5541C3F528AC21345141666666D6322B5541333333031F34514166666676332B5541666666561C3451417B14AEB7342B5541EC51B81E1A345141333333A3362B5541F6285CBF1C34514148E17A743A2B5541A4703DAA1D34514185EB51783A2B5541A4703DBA2B345141C3F5288C3A2B5541D7A370CD49345141C3F5283C3A2B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B55418FC2F5A86C345141E17A143E312B5541F6285C4F6C345141E17A148E2E2B5541B81E85CB66345141333333E3312B5541F6285CAF64345141F6285CAF312B5541B81E85BB5C345141CDCCCCBC322B5541A4703D6A52345141295C8F32342B55410AD7A3F04C3451413D0AD7F3332B554114AE47D14C3451417B14AE77332B5541EC51B89E5134514148E17AE4322B5541A4703DFA59345141C3F528CC312B5541666666565D34514185EB51B8312B5541666666565D34514185EB51D82F2B5541A4703D8A603451410AD7A3702E2B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000D7A370CD49345141C3F5283C3A2B5541C2C2027A4D345141103D64FD392B55413C95580D52345141712239AF392B5541AF8BF5C361345141A4C4C6A2382B5541CBD5D099633451419EBB6B83382B5541F59748B664345141BDE16F70382B55412BC3CCAF68345141609F882C382B5541969849746A345141A851560E382B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B55418FC2F5A86C345141E17A143E312B5541F6285C4F6C345141E17A148E2E2B5541B81E85CB66345141333333E3312B5541F6285CAF64345141F6285CAF312B5541B81E85BB5C345141CDCCCCBC322B5541A4703D6A52345141295C8F32342B55410AD7A3F04C3451413D0AD7F3332B554114AE47D14C3451417B14AE77332B5541EC51B89E5134514148E17AE4322B5541A4703DFA59345141C3F528CC312B5541666666565D34514185EB51B8312B5541666666565D34514185EB51D82F2B5541A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541713D0AE74534514166666646332B55411F85EB11423451417B14AEF7322B5541F6285C8F3A345141CDCCCC1C332B5541A4703DAA243451413D0AD7D3322B5541C3F528AC21345141666666D6322B5541333333031F34514166666676332B5541666666561C3451417B14AEB7342B5541EC51B81E1A345141333333A3362B5541F6285CBF1C34514148E17A743A2B5541F2D2494A213451417C406F7D3A2B55416FB2A27023345141C5B477803A2B554100C0E8FF263451411A5F7D853A2B554192208FB72E345141D13235843A2B55419AE3AC1F423451413AED95503A2B55416676794542345141616131503A2B5541717D7CBE453451411A98F4463A2B55416C738B5946345141D92258453A2B5541D7A370CD49345141C3F5283C3A2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 3515394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541713D0AE74534514166666646332B55411F85EB11423451417B14AEF7322B5541F6285C8F3A345141CDCCCC1C332B5541A4703DAA243451413D0AD7D3322B5541C3F528AC21345141666666D6322B5541333333031F34514166666676332B5541666666561C3451417B14AEB7342B5541EC51B81E1A345141333333A3362B5541F6285CBF1C34514148E17A743A2B5541A4703DAA1D34514185EB51783A2B5541A4703DBA2B345141C3F5288C3A2B5541D7A370CD49345141C3F5283C3A2B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B55418FC2F5A86C345141E17A143E312B5541F6285C4F6C345141E17A148E2E2B5541B81E85CB66345141333333E3312B5541F6285CAF64345141F6285CAF312B5541B81E85BB5C345141CDCCCCBC322B5541A4703D6A52345141295C8F32342B55410AD7A3F04C3451413D0AD7F3332B554114AE47D14C3451417B14AE77332B5541EC51B89E5134514148E17AE4322B5541A4703DFA59345141C3F528CC312B5541666666565D34514185EB51B8312B5541666666565D34514185EB51D82F2B5541A4703D8A603451410AD7A3702E2B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000D7A370CD49345141C3F5283C3A2B5541C2C2027A4D345141103D64FD392B55413C95580D52345141712239AF392B5541AF8BF5C361345141A4C4C6A2382B5541CBD5D099633451419EBB6B83382B5541F59748B664345141BDE16F70382B55412BC3CCAF68345141609F882C382B5541969849746A345141A851560E382B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B55418FC2F5A86C345141E17A143E312B5541F6285C4F6C345141E17A148E2E2B5541B81E85CB66345141333333E3312B5541F6285CAF64345141F6285CAF312B5541B81E85BB5C345141CDCCCCBC322B5541A4703D6A52345141295C8F32342B55410AD7A3F04C3451413D0AD7F3332B554114AE47D14C3451417B14AE77332B5541EC51B89E5134514148E17AE4322B5541A4703DFA59345141C3F528CC312B5541666666565D34514185EB51B8312B5541666666565D34514185EB51D82F2B5541A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541713D0AE74534514166666646332B55411F85EB11423451417B14AEF7322B5541F6285C8F3A345141CDCCCC1C332B5541A4703DAA243451413D0AD7D3322B5541C3F528AC21345141666666D6322B5541333333031F34514166666676332B5541666666561C3451417B14AEB7342B5541EC51B81E1A345141333333A3362B5541F6285CBF1C34514148E17A743A2B5541F2D2494A213451417C406F7D3A2B55416FB2A27023345141C5B477803A2B554100C0E8FF263451411A5F7D853A2B554192208FB72E345141D13235843A2B55419AE3AC1F423451413AED95503A2B55416676794542345141616131503A2B5541717D7CBE453451411A98F4463A2B55416C738B5946345141D92258453A2B5541D7A370CD49345141C3F5283C3A2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 3515627
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541713D0AE74534514166666646332B55411F85EB11423451417B14AEF7322B5541F6285C8F3A345141CDCCCC1C332B5541A4703DAA243451413D0AD7D3322B5541C3F528AC21345141666666D6322B5541333333031F34514166666676332B5541666666561C3451417B14AEB7342B5541EC51B81E1A345141333333A3362B5541F6285CBF1C34514148E17A743A2B5541A4703DAA1D34514185EB51783A2B5541A4703DBA2B345141C3F5288C3A2B5541D7A370CD49345141C3F5283C3A2B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B55418FC2F5A86C345141E17A143E312B5541F6285C4F6C345141E17A148E2E2B5541B81E85CB66345141333333E3312B5541F6285CAF64345141F6285CAF312B5541B81E85BB5C345141CDCCCCBC322B5541A4703D6A52345141295C8F32342B55410AD7A3F04C3451413D0AD7F3332B554114AE47D14C3451417B14AE77332B5541EC51B89E5134514148E17AE4322B5541A4703DFA59345141C3F528CC312B5541666666565D34514185EB51B8312B5541666666565D34514185EB51D82F2B5541A4703D8A603451410AD7A3702E2B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003600000017F48C74213451411ECE7507412B5541834CDD4D213451410E87F20C412B55416A536F5C21345141DF904028412B55419A99993923345141D7A370DD432B5541666666A627345141F6285CEF482B5541C3F528EC2F345141E17A14AE482B554114AE47213234514185EB51B8472B554152B81E3535345141A4703DFA482B55416666662640345141333333734D2B554100000020433451417B14AEC74F2B5541EC51B8AE473451418FC2F518502B5541B81E859B4B345141000000F04E2B55417B14AED75134514185EB5128492B5541CDCCCC9C653451418FC2F5B8432B5541713D0A576B3451419A9999E9402B5541405A93F96B3451414B1DA770402B55411F85EB516E3451411F85EBB13E2B55412143058E6F345141AD2DC2523D2B55412F12B8F370345141809B62C53B2B5541EC51B82E713451413D0AD7833B2B554114AE47A172345141B81E855B382B5541FE889B036F345141D92FA4D1372B55413D0AD7B36E3451415C8FC2C5372B5541E45C29B56B345141A780ECF8372B5541479F49746A3451413551560E382B5541419ED2A868345141E2D1FF2C382B5541A5D2D09963345141D4BB6B83382B55415D816D2F633451414A44858A382B5541AF8BF5C361345141A4C4C6A2382B55413687ED625F3451413D776BCB382B5541C2C4E2B05B34514177A88D0A392B5541480547B8553451419E6B9070392B5541E909590D52345141A81A39AF392B5541D7A370CD49345141C3F5283C3A2B55410B598A6E47345141AF5277423A2B5541FD9FF4C8463451410DC82F443A2B5541E35EA1DE44345141FE0D48493A2B554135E4AC1F4234514138ED95503A2B55412C6B17D64134514136A959513A2B55414C4D5C0B41345141B9ED74533A2B5541F4EB9FFA3F34514118694A563A2B55419211C3213F345141D9448B583A2B5541A68FCBF13C3451413ECA5C5E3A2B554162A232C636345141978BC66E3A2B5541AA208FB72E345141D13235843A2B5541A4703DBA2B345141C3F5288C3A2B554100C0E8FF263451411A5F7D853A2B5541F7B1A27023345141C4B477803A2B5541F2D2494A213451417C406F7D3A2B5541A4703DAA1D34514185EB51783A2B5541F6285CBF1C34514148E17A743A2B55418633E5891F345141331C80823E2B5541D65DD64A213451410050AB08412B554117F48C74213451411ECE7507412B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178607 - 197120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000B90000003D0AD7530F2751410AD7A3E0862155419A99992910275141D7A3700D88215541B81E854B0F275141AE47E17A892155419A999989122751415C8FC2D58A215541AE47E1DA1127514185EB51588C21554152B81E8510275141EC51B84E8F215541B81E858B1027514100000070932155417B14AE9710275141713D0AC7962155410AD7A3800F275141333333439A215541000000E014275141F6285C4F9C215541713D0A37182751418FC2F5F89C215541713D0AB71B2751418FC2F5689D215541713D0A671E2751418FC2F5789D215541713D0A77212751418FC2F5E89D215541713D0AB7222751418FC2F5889E215541713D0AB7222751418FC2F5A89F215541713D0A67222751418FC2F598A0215541713D0AC7222751418FC2F558A1215541713D0A87232751418FC2F578A1215541713D0A67242751418FC2F518A1215541713D0AB7252751418FC2F548A0215541713D0A27282751418FC2F578A1215541713D0A972A2751418FC2F5D8A2215541713D0AE72C2751418FC2F518A3215541713D0A672F2751418FC2F588A4215541713D0AA7302751418FC2F5E8A5215541713D0A27342751418FC2F5C8A6215541713D0A47342751418FC2F5D8A9215541713D0AB7372751418FC2F5D8AD215541713D0A673A2751418FC2F508AD215541713D0A673C2751418FC2F568AB215541713D0A373D2751418FC2F558A8215541713D0A473D2751418FC2F5E8A6215541713D0A373C2751418FC2F578A6215541713D0A973A2751418FC2F5D8A7215541713D0A07392751418FC2F508A5215541713D0A773C2751418FC2F598A2215541713D0AA73F2751418FC2F568A6215541713D0A67432751418FC2F548AA215541713D0A77432751418FC2F5F8AE215541713D0AA73E2751418FC2F5E8B0215541713D0A573B2751418FC2F528B1215541713D0A47382751418FC2F5D8B2215541713D0A273B2751418FC2F5A8B5215541713D0A073F2751418FC2F548BB215541713D0A37402751418FC2F528C1215541713D0A07442751418FC2F518C3215541713D0A87462751418FC2F5C8C6215541713D0AD7482751418FC2F598CB215541713D0AF74B2751418FC2F528CC215541713D0A874D2751418FC2F598CE215541713D0A874D2751418FC2F528D2215541713D0AA74F2751418FC2F5A8D3215541B81E859B4F275141CDCCCCFCD8215541EC51B83E4F275141B81E853BDB2155411F85EBC14E275141A4703D5ADD215541713D0A674F2751418FC2F598E02155419A99994952275141A4703DBAE1215541713D0A57522751418FC2F588E3215541713D0A97542751418FC2F568E6215541C3F5287C5827514148E17A74EA215541333333435E275141E17A148EE9215541713D0AF7602751418FC2F5D8EA215541713D0AE7652751418FC2F5B8E9215541713D0AE7682751418FC2F578E8215541713D0A676A2751418FC2F598E8215541713D0A776C2751418FC2F538EB215541713D0A776E2751418FC2F5B8EB215541713D0AD7712751418FC2F558EB215541713D0A57742751418FC2F5F8EB215541713D0AE7732751418FC2F518EF215541713D0A87742751418FC2F548F2215541713D0AF7772751418FC2F548F4215541713D0A777C2751418FC2F508F5215541713D0AF77E2751418FC2F538F4215541713D0A277B2751418FC2F528ED215541713D0A877D2751418FC2F528ED215541713D0A27812751418FC2F548F5215541713D0AA7812751418FC2F568F7215541713D0AE7842751418FC2F508F9215541713D0A77872751418FC2F5F8F7215541713D0AE7882751418FC2F5D8F8215541713D0A47892751418FC2F568FD215541713D0A578C2751418FC2F598012255413333334390275141B81E857B0322554148E17AD4912751419A99990904225541713D0AA7942751418FC2F51802225541295C8FA298275141C3F528ECFB2155417B14AE9796275141A4703DDAF821554114AE471195275141A4703DCAFA215541F6285C7F932751415C8FC295FC21554148E17AF49027514185EB51C8FD215541000000208B275141C3F528BCF42155410AD7A330862751418FC2F508ED2155415C8FC2D57F27514114AE47F1E221554148E17AE4832751413D0AD773DA21554185EB51588327514148E17A14D9215541666666F68127514185EB5108CF215541333333D3812751417B14AE57C6215541EC51B83E82275141CDCCCCBCBE21554185EB518883275141713D0AF7B5215541E17A143E8427514148E17A34AC215541B81E853B85275141E17A140EA821554185EB51E885275141F6285CAFA5215541C3F5285C8627514148E17AC4A32155419A999999862751419A9999F9A1215541A4703D8A86275141F6285C2FA0215541EC51B88E86275141B81E85EB9E215541CDCCCCEC86275141C3F5281C9B21554148E17A448527514148E17AB4932155419A99994983275141E17A149E8C215541D7A3700D8227514114AE4701892155418FC2F52880275141F6285C0F86215541666666067E27514152B81EE584215541D7A3707D7B275141EC51B80E842155411F85EBE178275141B81E859B83215541C3F5280C74275141B81E856B8321554185EB519872275141713D0A7783215541713D0A37712751418FC2F50884215541713D0A17712751418FC2F58885215541713D0AA7702751418FC2F57886215541713D0AA76F2751418FC2F50887215541713D0A576E2751418FC2F53887215541713D0AE76C2751418FC2F5E886215541713D0A776D2751418FC2F5188E215541713D0AF76E2751418FC2F5D88D215541713D0A776E2751418FC2F5F88E215541713D0A376C2751418FC2F5688F215541713D0A07692751418FC2F5988E215541AE47E11A6727514185EB51588D215541713D0AB7612751418FC2F5588E215541713D0A37582751418FC2F53891215541713D0A875A2751418FC2F5A896215541713D0A67572751418FC2F56897215541713D0AE7552751418FC2F51899215541713D0AD7542751418FC2F5489B215541713D0A37542751418FC2F5589C215541713D0AD7522751418FC2F5989C215541713D0A37502751418FC2F5789D215541713D0A974F2751418FC2F5389D215541713D0A174F2751418FC2F5D89A215541713D0A174E2751418FC2F57899215541713D0AB74D2751418FC2F57897215541713D0AE74D2751418FC2F5A895215541713D0A474C2751418FC2F59892215541713D0A874A2751418FC2F59893215541713D0AC7492751418FC2F55892215541713D0AF74A2751418FC2F51891215541713D0A97492751418FC2F5F88A215541666666A641275141666666E68921554152B81EF53E275141000000D089215541333333833B27514114AE47B18921554185EB5158392751410AD7A3A089215541CDCCCCBC362751413D0AD74389215541666666B632275141C3F528CC882155415C8FC2752C275141F6285CBF872155419A99992929275141C3F5280C862155411F85EB31262751417B14AE4784215541A4703D7A23275141333333B382215541B81E855B2027514148E17AC480215541C3F528EC1C275141000000A07E215541F6285C1F1B2751413D0AD7837D21554185EB51B8182751411F85EB417C215541B81E85AB14275141D7A3709D7A2155411F85EBC11227514114AE47D1792155415C8FC2250F27514185EB513878215541000000400C275141EC51B8BE762155413D0AD7C3082751418FC2F58875215541B81E85BB03275141A4703DCA732155413D0AD7F3FF265141F6285C8F72215541EC51B8BEFE2651413333330373215541CDCCCC9CFD265141D7A370FD73215541C3F528FCFC265141C3F528CC7821554152B81E95FC26514114AE47117C215541EC51B8AEFC2651413D0AD7D37D215541000000A0FB265141AE47E10A80215541666666F6FA2651413333336382215541E17A14EEFC2651411F85EBF1822155415C8FC275FD26514148E17A6480215541E17A14EEFD265141E17A142E7E215541E17A14BE002751411F85EB117F2155415C8FC2650427514152B81E3580215541D7A370BD07275141B81E853B81215541CDCCCC6C0F275141CDCCCCAC842155413D0AD7530F2751410AD7A3E086215541
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000713D0A57522751418FC2F588E32155415F087B65542751411354A229E6215541C3F5287C5827514148E17A74EA215541333333435E275141E17A148EE9215541A5460A2561275141B04BD9CBE9215541D9E10C4766275141D54758A8E82155419087EFB16827514183A790D5E7215541B8E5E71A6B275141CA17F6DBE8215541F7D163626C275141178597BAEA2155415E33C68A6E275141586EC4B6EB2155410D8B8028712751419A645A6CEB21554199B97ED8712751411D305B1FEB2155416FFC81E9732751418C2E10F1E921554109D42E4A75275141EF0DB47FE9215541D0950CC4762751410F59AEBEE9215541233224BE7727514124F03FFBEA215541606CFF2D7927514100FCCE99EB215541783B6E5E7A2751418C630632EC215541BDBAC3337C2751410F0FC886EB215541386BEEAF7E27514134DD69B2EC2155415ACC67CB7F27514192FA7944EF215541109F0BA3802751410DF83446F121554109D18C1B8127514126C7A376F2215541A44BBDA0812751419508E934F3215541E1859810832751419EC45E78F421554157DA9A9985275141896230B1F4215541A61B537C86275141D8A3E893F5215541D43DFA1B88275141233ADD11F621554188D3EE9988275141EF50F726F72155410260A1BB892751414B074816F8215541382034078A27514101A9C91EF921554116DF846C8A275141A14B58F0F9215541A4D539C8892751414B954566FA215541A4D539C889275141BA21F887FB215541E695CC138A27514182E3D501FD215541D2F7E0678B2751419990E494FE215541918DD5E58B275141DEAD6A860022554138AE31578C275141562E901D01225541C404B9208D27514112254EC101225541036C68E68E2751415E77E7D302225541478A99F88E275141BC7EA5DC022255410AA84B078F275141BD6BB5E302225541C21427369127514168866215032255413F7886B893275141B4F06D9702225541AF8A7F1F95275141BD8E594301225541878A915C9527514168727EFF00225541295C8FA298275141C3F528ECFB2155414C649BE5972751419BFD26D0FA215541FD4DA8C797275141411B8CABFA215541F421BFCB96275141C49BB142FB215541648AE02F962751413A1B95B9FC215541A2AF83E791275141D27B1B5B0022554129FD007D8E275141C30C605FFD215541DE1C7D9D8B275141E8B0EB1DF8215541F6E7A3A885275141034639D4F0215541360820798027514160ACCC61EA215541DE249F187D27514167444844E92155418668DF557A2751412152B8B3E821554143F96B4679275141B21C178AE82155418B70CFC7722751414BBC4D64E8215541AEC1D4086B27514177E26CD2E521554180DECEAE672751411ED21AAFE7215541690FC51862275141C1459D14E92155419827C04D5F275141EF4A9C85E8215541E438853F5F2751417B45A081E8215541C0CE8D6F5E2751413547B557E82155411D7EF14A5C2751418ED3C8ADE721554120500DA65A2751410F56EF37E7215541D40841455A2751418A30700DE721554164FC41E058275141433ADD9EE6215541FFC6A67857275141180DD5D2E5215541D7F0DBD4562751417764EC8AE52155418CE4D65152275141335DE9D5E2215541713D0A57522751418FC2F588E3215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178607 - 382437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000B90000003D0AD7530F2751410AD7A3E0862155419A99992910275141D7A3700D88215541B81E854B0F275141AE47E17A892155419A999989122751415C8FC2D58A215541AE47E1DA1127514185EB51588C21554152B81E8510275141EC51B84E8F215541B81E858B1027514100000070932155417B14AE9710275141713D0AC7962155410AD7A3800F275141333333439A215541000000E014275141F6285C4F9C215541713D0A37182751418FC2F5F89C215541713D0AB71B2751418FC2F5689D215541713D0A671E2751418FC2F5789D215541713D0A77212751418FC2F5E89D215541713D0AB7222751418FC2F5889E215541713D0AB7222751418FC2F5A89F215541713D0A67222751418FC2F598A0215541713D0AC7222751418FC2F558A1215541713D0A87232751418FC2F578A1215541713D0A67242751418FC2F518A1215541713D0AB7252751418FC2F548A0215541713D0A27282751418FC2F578A1215541713D0A972A2751418FC2F5D8A2215541713D0AE72C2751418FC2F518A3215541713D0A672F2751418FC2F588A4215541713D0AA7302751418FC2F5E8A5215541713D0A27342751418FC2F5C8A6215541713D0A47342751418FC2F5D8A9215541713D0AB7372751418FC2F5D8AD215541713D0A673A2751418FC2F508AD215541713D0A673C2751418FC2F568AB215541713D0A373D2751418FC2F558A8215541713D0A473D2751418FC2F5E8A6215541713D0A373C2751418FC2F578A6215541713D0A973A2751418FC2F5D8A7215541713D0A07392751418FC2F508A5215541713D0A773C2751418FC2F598A2215541713D0AA73F2751418FC2F568A6215541713D0A67432751418FC2F548AA215541713D0A77432751418FC2F5F8AE215541713D0AA73E2751418FC2F5E8B0215541713D0A573B2751418FC2F528B1215541713D0A47382751418FC2F5D8B2215541713D0A273B2751418FC2F5A8B5215541713D0A073F2751418FC2F548BB215541713D0A37402751418FC2F528C1215541713D0A07442751418FC2F518C3215541713D0A87462751418FC2F5C8C6215541713D0AD7482751418FC2F598CB215541713D0AF74B2751418FC2F528CC215541713D0A874D2751418FC2F598CE215541713D0A874D2751418FC2F528D2215541713D0AA74F2751418FC2F5A8D3215541B81E859B4F275141CDCCCCFCD8215541EC51B83E4F275141B81E853BDB2155411F85EBC14E275141A4703D5ADD215541713D0A674F2751418FC2F598E02155419A99994952275141A4703DBAE1215541713D0A57522751418FC2F588E3215541713D0A97542751418FC2F568E6215541C3F5287C5827514148E17A74EA215541333333435E275141E17A148EE9215541713D0AF7602751418FC2F5D8EA215541713D0AE7652751418FC2F5B8E9215541713D0AE7682751418FC2F578E8215541713D0A676A2751418FC2F598E8215541713D0A776C2751418FC2F538EB215541713D0A776E2751418FC2F5B8EB215541713D0AD7712751418FC2F558EB215541713D0A57742751418FC2F5F8EB215541713D0AE7732751418FC2F518EF215541713D0A87742751418FC2F548F2215541713D0AF7772751418FC2F548F4215541713D0A777C2751418FC2F508F5215541713D0AF77E2751418FC2F538F4215541713D0A277B2751418FC2F528ED215541713D0A877D2751418FC2F528ED215541713D0A27812751418FC2F548F5215541713D0AA7812751418FC2F568F7215541713D0AE7842751418FC2F508F9215541713D0A77872751418FC2F5F8F7215541713D0AE7882751418FC2F5D8F8215541713D0A47892751418FC2F568FD215541713D0A578C2751418FC2F598012255413333334390275141B81E857B0322554148E17AD4912751419A99990904225541713D0AA7942751418FC2F51802225541295C8FA298275141C3F528ECFB2155417B14AE9796275141A4703DDAF821554114AE471195275141A4703DCAFA215541F6285C7F932751415C8FC295FC21554148E17AF49027514185EB51C8FD215541000000208B275141C3F528BCF42155410AD7A330862751418FC2F508ED2155415C8FC2D57F27514114AE47F1E221554148E17AE4832751413D0AD773DA21554185EB51588327514148E17A14D9215541666666F68127514185EB5108CF215541333333D3812751417B14AE57C6215541EC51B83E82275141CDCCCCBCBE21554185EB518883275141713D0AF7B5215541E17A143E8427514148E17A34AC215541B81E853B85275141E17A140EA821554185EB51E885275141F6285CAFA5215541C3F5285C8627514148E17AC4A32155419A999999862751419A9999F9A1215541A4703D8A86275141F6285C2FA0215541EC51B88E86275141B81E85EB9E215541CDCCCCEC86275141C3F5281C9B21554148E17A448527514148E17AB4932155419A99994983275141E17A149E8C215541D7A3700D8227514114AE4701892155418FC2F52880275141F6285C0F86215541666666067E27514152B81EE584215541D7A3707D7B275141EC51B80E842155411F85EBE178275141B81E859B83215541C3F5280C74275141B81E856B8321554185EB519872275141713D0A7783215541713D0A37712751418FC2F50884215541713D0A17712751418FC2F58885215541713D0AA7702751418FC2F57886215541713D0AA76F2751418FC2F50887215541713D0A576E2751418FC2F53887215541713D0AE76C2751418FC2F5E886215541713D0A776D2751418FC2F5188E215541713D0AF76E2751418FC2F5D88D215541713D0A776E2751418FC2F5F88E215541713D0A376C2751418FC2F5688F215541713D0A07692751418FC2F5988E215541AE47E11A6727514185EB51588D215541713D0AB7612751418FC2F5588E215541713D0A37582751418FC2F53891215541713D0A875A2751418FC2F5A896215541713D0A67572751418FC2F56897215541713D0AE7552751418FC2F51899215541713D0AD7542751418FC2F5489B215541713D0A37542751418FC2F5589C215541713D0AD7522751418FC2F5989C215541713D0A37502751418FC2F5789D215541713D0A974F2751418FC2F5389D215541713D0A174F2751418FC2F5D89A215541713D0A174E2751418FC2F57899215541713D0AB74D2751418FC2F57897215541713D0AE74D2751418FC2F5A895215541713D0A474C2751418FC2F59892215541713D0A874A2751418FC2F59893215541713D0AC7492751418FC2F55892215541713D0AF74A2751418FC2F51891215541713D0A97492751418FC2F5F88A215541666666A641275141666666E68921554152B81EF53E275141000000D089215541333333833B27514114AE47B18921554185EB5158392751410AD7A3A089215541CDCCCCBC362751413D0AD74389215541666666B632275141C3F528CC882155415C8FC2752C275141F6285CBF872155419A99992929275141C3F5280C862155411F85EB31262751417B14AE4784215541A4703D7A23275141333333B382215541B81E855B2027514148E17AC480215541C3F528EC1C275141000000A07E215541F6285C1F1B2751413D0AD7837D21554185EB51B8182751411F85EB417C215541B81E85AB14275141D7A3709D7A2155411F85EBC11227514114AE47D1792155415C8FC2250F27514185EB513878215541000000400C275141EC51B8BE762155413D0AD7C3082751418FC2F58875215541B81E85BB03275141A4703DCA732155413D0AD7F3FF265141F6285C8F72215541EC51B8BEFE2651413333330373215541CDCCCC9CFD265141D7A370FD73215541C3F528FCFC265141C3F528CC7821554152B81E95FC26514114AE47117C215541EC51B8AEFC2651413D0AD7D37D215541000000A0FB265141AE47E10A80215541666666F6FA2651413333336382215541E17A14EEFC2651411F85EBF1822155415C8FC275FD26514148E17A6480215541E17A14EEFD265141E17A142E7E215541E17A14BE002751411F85EB117F2155415C8FC2650427514152B81E3580215541D7A370BD07275141B81E853B81215541CDCCCC6C0F275141CDCCCCAC842155413D0AD7530F2751410AD7A3E086215541
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000713D0A57522751418FC2F588E32155415F087B65542751411354A229E6215541C3F5287C5827514148E17A74EA215541333333435E275141E17A148EE9215541A5460A2561275141B04BD9CBE9215541D9E10C4766275141D54758A8E82155419087EFB16827514183A790D5E7215541B8E5E71A6B275141CA17F6DBE8215541F7D163626C275141178597BAEA2155415E33C68A6E275141586EC4B6EB2155410D8B8028712751419A645A6CEB21554199B97ED8712751411D305B1FEB2155416FFC81E9732751418C2E10F1E921554109D42E4A75275141EF0DB47FE9215541D0950CC4762751410F59AEBEE9215541233224BE7727514124F03FFBEA215541606CFF2D7927514100FCCE99EB215541783B6E5E7A2751418C630632EC215541BDBAC3337C2751410F0FC886EB215541386BEEAF7E27514134DD69B2EC2155415ACC67CB7F27514192FA7944EF215541109F0BA3802751410DF83446F121554109D18C1B8127514126C7A376F2215541A44BBDA0812751419508E934F3215541E1859810832751419EC45E78F421554157DA9A9985275141896230B1F4215541A61B537C86275141D8A3E893F5215541D43DFA1B88275141233ADD11F621554188D3EE9988275141EF50F726F72155410260A1BB892751414B074816F8215541382034078A27514101A9C91EF921554116DF846C8A275141A14B58F0F9215541A4D539C8892751414B954566FA215541A4D539C889275141BA21F887FB215541E695CC138A27514182E3D501FD215541D2F7E0678B2751419990E494FE215541918DD5E58B275141DEAD6A860022554138AE31578C275141562E901D01225541C404B9208D27514112254EC101225541036C68E68E2751415E77E7D302225541478A99F88E275141BC7EA5DC022255410AA84B078F275141BD6BB5E302225541C21427369127514168866215032255413F7886B893275141B4F06D9702225541AF8A7F1F95275141BD8E594301225541878A915C9527514168727EFF00225541295C8FA298275141C3F528ECFB2155414C649BE5972751419BFD26D0FA215541FD4DA8C797275141411B8CABFA215541F421BFCB96275141C49BB142FB215541648AE02F962751413A1B95B9FC215541A2AF83E791275141D27B1B5B0022554129FD007D8E275141C30C605FFD215541DE1C7D9D8B275141E8B0EB1DF8215541F6E7A3A885275141034639D4F0215541360820798027514160ACCC61EA215541DE249F187D27514167444844E92155418668DF557A2751412152B8B3E821554143F96B4679275141B21C178AE82155418B70CFC7722751414BBC4D64E8215541AEC1D4086B27514177E26CD2E521554180DECEAE672751411ED21AAFE7215541690FC51862275141C1459D14E92155419827C04D5F275141EF4A9C85E8215541E438853F5F2751417B45A081E8215541C0CE8D6F5E2751413547B557E82155411D7EF14A5C2751418ED3C8ADE721554120500DA65A2751410F56EF37E7215541D40841455A2751418A30700DE721554164FC41E058275141433ADD9EE6215541FFC6A67857275141180DD5D2E5215541D7F0DBD4562751417764EC8AE52155418CE4D65152275141335DE9D5E2215541713D0A57522751418FC2F588E3215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>292859 - 3497072
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A143EE96D51418FC2F598DCA65441F6285C0FE96D5141295C8F22DDA65441295C8F82E86D51413D0AD7F3DCA65441EC51B86EE86D514152B81EE5DCA65441F6285C5FE86D5141F6285C3FDDA65441C3F5284CE86D5141EC51B8AEDDA654419A9999D9E76D514185EB5158E0A65441713D0AA7E76D51411F85EBF1E2A654410AD7A380E76D514114AE47F1E5A6544148E17A74E76D51410AD7A3B0E6A65441713D0A77E76D5141AE47E16AE7A65441D7A3708DE76D514185EB5198EEA65441A4703D5AEC6D5141EC51B8EEEEA654418FC2F528ED6D51413D0AD7F3E7A65441D7A370BDED6D5141C3F528ECE4A6544185EB51F8EE6D5141EC51B82EE1A654418FC2F598F16D51418FC2F5A8DAA65441B81E85DBF16D51413D0AD763D7A6544166666626F16D5141666666B6D3A65441AE47E1EAEF6D5141CDCCCCBCCAA6544152B81E85EF6D51413D0AD743C8A65441A4703D2AEE6D5141AE47E1CAC4A654411F85EBE1EC6D5141F6285C7FC1A654413D0AD713ED6D5141C3F5287CBFA6544185EB5158F36D514185EB51B8C0A65441F6285CCFFA6D5141EC51B82EC2A65441F6285C5F016E51410AD7A340C4A65441B81E857B056E514148E17A24C5A6544114AE47D10F6E51411F85EBE1C7A654415C8FC235156E51411F85EB41C9A6544152B81E451C6E514185EB5118CAA654418FC2F5181F6E514152B81E65CAA65441B81E85FB216E5141666666B6CAA65441E17A142E226E5141D7A3705DCAA65441295C8F92136E51419A9999C9C3A654411F85EBF1136E5141000000F0C2A6544100000040136E514185EB51A8C2A6544152B81EB50E6E514148E17A84C0A6544152B81E35096E514148E17AF4BDA65441E17A14CE086E51417B14AED7BEA65441713D0A07086E5141D7A3708DC0A6544114AE47E1076E5141E17A14DEC0A654417B14AE37066E51417B14AE47C0A6544185EB5158036E5141295C8F92C1A65441AE47E10AFF6D5141713D0A37C0A654417B14AE87FE6D51410AD7A380BFA65441CDCCCC4CFC6D5141E17A14DEBDA6544133333353FA6D5141CDCCCCFCBBA6544148E17A74FB6D5141AE47E1FAB8A65441AE47E19AFB6D514152B81E95B8A654411F85EB01F66D514185EB5178B8A65441F6285C3FF36D51418FC2F578B8A6544114AE4781F06D51413D0AD753B8A65441F6285C9FEC6D514185EB5198B7A654413D0AD7A3E96D5141C3F5282CB7A65441000000F0E86D514185EB5148B7A6544152B81E75E86D514148E17A64B7A65441F6285C7FE76D5141333333E3B7A65441EC51B81EE76D51411F85EB51B8A65441000000C0E66D5141E17A14FEB8A6544185EB5158E66D514114AE47C1BAA65441D7A3708DE66D5141F6285CDFBBA65441295C8F82E76D5141713D0A17C3A65441EC51B80EE86D514148E17A34C8A6544185EB5138E86D51415C8FC205C9A6544133333383E96D5141AE47E12ACDA65441AE47E1CAE96D51411F85EBD1CEA6544152B81EF5E96D51413D0AD7D3D1A65441CDCCCCDCE96D514152B81E95D3A65441F6285C6FE96D5141A4703D4AD7A6544185EB51F8E86D5141333333B3D9A6544166666686E86D514166666656DCA6544114AE47B1E86D51418FC2F568DCA65441E17A143EE96D51418FC2F598DCA65441
+</a>
+
+<b>
+01060000000100000001030000000100000060000000E41C8576E76D51410DDF96F9C2A654413F250D30E76D51410EF719A9C0A65441CA6077D5E66D514199C448FEBDA6544185EB5158E66D514114AE47C1BAA65441000000C0E66D5141E17A14FEB8A65441EC51B81EE76D51411F85EB51B8A65441F6285C7FE76D5141333333E3B7A6544152B81E75E86D514148E17A64B7A654413D0AD7A3E96D5141C3F5282CB7A654417202ABCFE96D514183290451B6A65441295C8F02E96D5141A4703D1AB6A65441B81E857BE76D5141B81E858BB5A65441B07268B1E56D5141A69BC4C0B4A6544108AC1CFAE36D5141CDCCCC9CB3A654410C022B57DF6D5141378941B0AFA6544133333323DF6D5141666666D6AFA65441295C8F42DB6D514100000010B2A65441AE47E1FAD76D514148E17AB4B1A654410AD7A3C0D56D5141CDCCCCECB1A654411F85EBB1D36D5141A4703D0AB2A6544143F63821D16D51415581B50AB2A654413EA2A193D16D51415E3625EAACA65441D386FB94CD6D514136E89CD9ACA654418E6A60DFCB6D5141EA8D9275ABA65441C220604CCB6D5141C7A20410ABA654414E6210E0C96D5141AE47E192AAA65441882B9039C56D5141A2EE6C2FAAA65441E3AAECCDC26D5141FAAB553CAAA65441F853E3B5BC6D51419EEFA7AEABA654415EBA499CBC6D514133333303ADA65441F763A5DABC6D51417FC256ACAEA6544192F5D2DEB86D51415A1D1161AFA6544144321880B66D51416F8D85AEAFA65441224F46BCB46D5141B3DAF96DAFA65441A6AE8BEBB26D514145AD9C13AFA654410A66A2A6B06D5141601A2838AEA654418DC5E7D5AE6D5141DE7C5690ADA654418A8A4486AD6D51412C028576ADA65441A5F7CFAAAC6D5141F3ECCADDADA65441235AFE02AC6D514126056E9FAEA65441970372A6AB6D5141C75F0D6AAFA65441E7EFED83AB6D514158DED607B0A65441B52CA1A8AB6D51415E58B4B0B0A654413E80EFEDAB6D5141C3E6AA34B1A654416FEC1D18AD6D5141BEA514C2B1A654417B14AE47B26D51417B14AE37B4A654417B14AE47B26D5141C3F528FCB6A654411F85EBE1B16D5141AE47E10ABAA6544152B81EB5B06D5141C3F528ECBDA6544114AE4781AF6D514185EB51D8BFA6544100000080AD6D514166666606C2A654411F85EB61BC6D5141B81E850BC1A65441F6285C6FC66D5141295C8F62C0A65441295C8F42CB6D514114AE4711C0A654410AD7A350C96D51417B14AE87CAA65441333333D3C66D5141F6285C3FD3A654411F85EB31CB6D5141C3F5287CD3A65441295C8F3ACD6D514123DBF9E6D2A6544155E9F9BBD16D51417E5F9A43D0A65441A4703DEAD06D51413D0AD713D5A65441296D18CED06D514159B99989D7A654413B76DF98D26D5141B4970054D8A65441EEC41AC2D46D5141CEC6A338D7A65441E2C219D1D86D51412230B2BDD2A654415118DAD1DA6D5141CC9B0236D0A654411F85EB61DC6D5141A4703DFACDA65441538E05FBDD6D51414FD95A3CCAA6544137894180DF6D51413D0AD71BC9A6544133333313E26D5141E17A14DEC9A654418FC2F508E26D5141D7A3703DCAA65441295C8F72E06D51417B14AE27CFA65441A2B384AFDE6D51413EF60BDED1A65441C07ADEFADE6D51414C53FF0FD5A65441AE47E16AE06D5141F6285C3FD7A65441713D0AC7E16D5141EC51B85ED9A6544165F5B529E56D5141471621C0DCA654417F45F643E66D51412C39F8D9DDA65441E17A14EEE66D51413D0AD783DEA654410BEDFA3FE76D5141E55EC596DEA65441F25F961CE86D51410C80C3C9DEA65441A97B4C95E86D5141557518FEDBA65441E37273D3E86D514164B3B88DDAA6544134FD6D84E96D5141E9608393D6A65441C2035FB1E96D51413B230808D5A65441CDCCCCDCE96D514152B81E95D3A65441CB848DE0E96D51415FCEFDE8D2A6544152B81EF5E96D51413D0AD7D3D1A654410C09A4DAE96D5141251B32F1CFA65441AE47E1CAE96D51411F85EBD1CEA6544133333383E96D5141AE47E12ACDA654415894D72FE96D5141B4E68D1FCCA65441C2A25FA0E86D51414DBC7453CAA654416CE84243E86D5141AA39D928C9A654418BE0CE1AE86D5141FAE14A71C8A654410DC8DDEAE76D5141AAB284E5C6A65441E41C8576E76D51410DDF96F9C2A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178750 - 1489031
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541713D0A5745255141B81E855B342B55418FC2F5484D255141C3F5289C382B554148E17AB45F255141D7A3702D242B55415C8FC29572255141C3F5283C0F2B5541EC51B84E6C255141666666460B2B5541A4703DEA652551415C8FC2B5062B5541
+</a>
+
+<b>
+01060000000200000001030000000100000013000000571B270E69255141B941D9F3082B55417B30A8D266255141BCB1BB5B072B5541A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541A5B898C2432551413B0C4643332B5541FE74F3514E2551413D96DC1C272B5541E4CFA078562551412DAFFBBB1D2B55410CC86D935B255141B73769DC172B5541766C29A75F2551415099842B132B5541571B270E69255141B941D9F3082B55410103000000010000000400000065DE3EC54525514147B68196342B554173ED0A4E45255141A91C4955342B5541713D0A5745255141B81E855B342B554165DE3EC54525514147B68196342B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178750 - 3376754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541713D0A5745255141B81E855B342B55418FC2F5484D255141C3F5289C382B554148E17AB45F255141D7A3702D242B55415C8FC29572255141C3F5283C0F2B5541EC51B84E6C255141666666460B2B5541A4703DEA652551415C8FC2B5062B5541
+</a>
+
+<b>
+01060000000200000001030000000100000013000000571B270E69255141B941D9F3082B55417B30A8D266255141BCB1BB5B072B5541A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541A5B898C2432551413B0C4643332B5541FE74F3514E2551413D96DC1C272B5541E4CFA078562551412DAFFBBB1D2B55410CC86D935B255141B73769DC172B5541766C29A75F2551415099842B132B5541571B270E69255141B941D9F3082B55410103000000010000000400000065DE3EC54525514147B68196342B554173ED0A4E45255141A91C4955342B5541713D0A5745255141B81E855B342B554165DE3EC54525514147B68196342B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>179777 - 4168981
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000CDCCCC5C302D51413D0AD713032B5541EC51B86E262D5141C3F528AC032B55411F85EB011B2D51415C8FC2A5FB2A55413D0AD783042D51411F85EBE1062B5541CDCCCC0C0F2D5141C3F5289C152B5541AE47E13A212D5141713D0A072F2B55413D0AD723232D5141E17A14FE2D2B5541F6285C7F282D51417B14AE47282B5541F6285C0F2F2D5141F6285C5F222B5541A4703D6A342D514152B81EE51E2B5541F6285C4F412D5141AE47E1BA162B55417B14AE07442D514100000050142B55411F85EB01462D51415C8FC2B5102B55419A999919482D5141295C8F320A2B55410AD7A3403D2D51411F85EB41022B5541CDCCCC5C302D51413D0AD713032B5541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000433F0909472D51412BB6DC820D2B5541D722400A3D2D51413E12A0BE022B5541DA917E8D3C2D5141D087CD5F022B554159A22D6A3C2D5141E8A7A361022B5541BB6E2595342D5141A274E6C9022B5541A7B6064E332D5141F41556E8022B55414C129ED42B2D514137545D9A032B55418159938E292D51415CE984D0032B554148E17AB4252D5141E9263150042B5541B4D373B6242D51416B904FCF032B554118DC06C51C2D5141D1DD9EE2FC2A5541BA490CF21A2D5141B81E854BFB2A5541B29DEF57122D5141A4703D5AFE2A55419CE58911032D5141763390D5042B55413D0AD783042D51411F85EBE1062B5541CDCCCC0C0F2D5141C3F5289C152B5541AE47E13A212D5141713D0A072F2B55413D0AD723232D5141E17A14FE2D2B5541F6285C7F282D51417B14AE47282B5541F6285C0F2F2D5141F6285C5F222B5541A4703D6A342D514152B81EE51E2B5541F6285C4F412D5141AE47E1BA162B55417B14AE07442D514100000050142B55411F85EB01462D51415C8FC2B5102B5541433F0909472D51412BB6DC820D2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>179777 - 4168982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000CDCCCC5C302D51413D0AD713032B5541EC51B86E262D5141C3F528AC032B55411F85EB011B2D51415C8FC2A5FB2A55413D0AD783042D51411F85EBE1062B5541CDCCCC0C0F2D5141C3F5289C152B5541AE47E13A212D5141713D0A072F2B55413D0AD723232D5141E17A14FE2D2B5541F6285C7F282D51417B14AE47282B5541F6285C0F2F2D5141F6285C5F222B5541A4703D6A342D514152B81EE51E2B5541F6285C4F412D5141AE47E1BA162B55417B14AE07442D514100000050142B55411F85EB01462D51415C8FC2B5102B55419A999919482D5141295C8F320A2B55410AD7A3403D2D51411F85EB41022B5541CDCCCC5C302D51413D0AD713032B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A7B6064E332D5141F41556E8022B5541BB6E2595342D5141A274E6C9022B554159A22D6A3C2D5141E8A7A361022B5541DA917E8D3C2D5141D087CD5F022B5541D722400A3D2D51413E12A0BE022B5541433F0909472D51412BB6DC820D2B55419A999919482D5141295C8F320A2B554166666636492D514152B81EA5052B554185EB51384B2D5141EC51B8DE012B5541AE47E18A4D2D514185EB51B8FE2A554148E17A744F2D5141AE47E13AFC2A554152B81ED54E2D5141333333C3FA2A55415C8FC2754D2D5141CDCCCCACF92A554114AE4711452D51415C8FC205F52A554148E17A942F2D51415C8FC2F5EF2A5541C3F5285C292D514148E17A04EC2A554152B81E95272D514185EB51D8EB2A55415C8FC295182D51410AD7A3B0F12A554114AE4771092D51417B14AE97F72A55415C8FC235FE2C5141C3F528FCFB2A55415C8FC2C5FD2C514152B81E75FD2A55419CE58911032D5141763390D5042B5541B29DEF57122D5141A4703D5AFE2A5541BA490CF21A2D5141B81E854BFB2A554118DC06C51C2D5141D1DD9EE2FC2A5541B4D373B6242D51416B904FCF032B554148E17AB4252D5141E9263150042B55418159938E292D51415CE984D0032B55414C129ED42B2D514137545D9A032B5541A7B6064E332D5141F41556E8022B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>217399 - 3109934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEB76FC15041713D0AD78C065541295C8F426EC150410AD7A3008D065541D7A3708D6BC15041F6285CAF8D065541E17A147E75C15041A4703DBAA50655419A9999C97BC15041333333F3B4065541C3F5289C92C1504114AE4751AD065541000000F082C150419A999969870655413D0AD72377C15041EC51B88E8A065541CDCCCCCC74C1504152B81E958B0655417B14AEB76FC15041713D0AD78C065541
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000075BAFA2654C15041BFF1FD28A70655414A37953072C15041F2E52EBD9D065541D9B7943271C15041CDCD7D569B065541D7A3708D6BC15041F6285CAF8D065541D7A3702D5EC15041B81E850B910655418FC2F51858C15041B81E850B93065541EC51B81E54C150417B14AE1794065541C3F528EC4BC150411F85EB81950655410AD7A3C045C1504114AE47B1960655413D0AD7F348C150417B14AE379A0655413D0AD7E34DC15041D7A3703D9E0655418FC2F51850C15041C3F5286CA1065541295C8F8252C15041AE47E17AA406554175BAFA2654C15041BFF1FD28A7065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>217399 - 3283083
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEB76FC15041713D0AD78C065541295C8F426EC150410AD7A3008D065541D7A3708D6BC15041F6285CAF8D065541E17A147E75C15041A4703DBAA50655419A9999C97BC15041333333F3B4065541C3F5289C92C1504114AE4751AD065541000000F082C150419A999969870655413D0AD72377C15041EC51B88E8A065541CDCCCCCC74C1504152B81E958B0655417B14AEB76FC15041713D0AD78C065541
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000075BAFA2654C15041BFF1FD28A70655414A37953072C15041F2E52EBD9D065541D9B7943271C15041CDCD7D569B065541D7A3708D6BC15041F6285CAF8D065541D7A3702D5EC15041B81E850B910655418FC2F51858C15041B81E850B93065541EC51B81E54C150417B14AE1794065541C3F528EC4BC150411F85EB81950655410AD7A3C045C1504114AE47B1960655413D0AD7F348C150417B14AE379A0655413D0AD7E34DC15041D7A3703D9E0655418FC2F51850C15041C3F5286CA1065541295C8F8252C15041AE47E17AA406554175BAFA2654C15041BFF1FD28A7065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918496 - 56969
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000004B00000066666626A79E50415C8FC265041F5441C3F5285CB39E504152B81E551E1F5441C3F5283CA69E5041295C8F82191F5441333333939B9E50410AD7A3A0151F5441F6285CBF8F9E50419A999949111F544166666646859E5041295C8F720D1F54418FC2F518749E5041F6285C1F091F5441D7A3702D699E50418FC2F598081F5441D7A3704D5F9E504100000020081F5441C3F528FC619E5041A4703D0A0C1F5441666666E6659E50419A9999790C1F5441295C8FC2649E5041E17A14CE111F544166666676609E5041D7A370ED131F5441AE47E1FA5F9E5041B81E854B1B1F54415C8FC2256B9E504148E17AB41B1F5441295C8F12709E50417B14AEC71A1F544185EB5148739E504114AE47511E1F54410AD7A350749E50410AD7A3F0221F5441AE47E1CA729E504148E17AC4251F5441333333636E9E504114AE47B1261F5441AE47E19A6E9E50413D0AD7D32A1F5441713D0A67759E504148E17A642A1F5441F6285CEF809E504185EB51482A1F5441EC51B82E8A9E5041713D0A272B1F544148E17A04979E50415C8FC2752C1F54413D0AD7939E9E504114AE47D12D1F544148E17AA4A89E50411F85EB112F1F5441713D0A87B09E5041EC51B8BE311F544148E17AB4B39E50418FC2F5D8321F5441AE47E12AB39E50417B14AE272F1F5441AE47E14AB79E50418FC2F5482D1F544100000080B99E50415C8FC2C52E1F54419A9999D9BB9E50418FC2F5582F1F54411F85EB61BC9E50413D0AD7B3311F5441713D0A47BF9E504114AE47112F1F5441B81E857BC19E5041295C8F722C1F5441F6285CFFC39E5041EC51B8DE281F5441EC51B82EC59E504185EB51A8261F5441AE47E11AC69E50410AD7A390231F5441C3F5284CC69E5041B81E85AB201F5441295C8FB2C59E5041A4703D0A161F5441EC51B8DEC59E504185EB51B8101F5441666666A6C69E504114AE47E10B1F5441EC51B8EEC79E50410AD7A3C0071F54417B14AEC7C89E5041713D0A07051F5441B81E850BC99E504100000070041F544185EB51E8C59E504166666626041F5441CDCCCC0CC69E5041C3F5285C021F544114AE47F1C99E504100000090021F5441EC51B86ECA9E504148E17AB4011F544114AE4771CC9E504185EB51E8FE1E54419A999959CE9E504152B81E55FD1E54415C8FC285D09E50413D0AD763FC1E5441EC51B8BED29E5041CDCCCC3CFC1E5441A4703DEAD59E5041F6285CAFFC1E5441E17A142ED99E5041333333B3FD1E54410AD7A310DE9E504185EB5138FF1E5441EC51B80EE19E50410AD7A3A0FF1E544148E17AA4E69E5041A4703DDAFF1E54413D0AD7A3E99E5041713D0A97FF1E544152B81E95EB9E5041713D0AF7FE1E5441C3F5284CEE9E50419A999959FC1E544133333363F29E504152B81E95F51E54415C8FC275F29E50419A999929F41E54417B14AE87F19E5041713D0A47F21E54411F85EB41EF9E504152B81E65F11E5441C3F5286CE49E5041295C8F22EC1E5441713D0A17D39E504133333353E81E5441EC51B85EC19E5041A4703D9AE41E5441EC51B87EBB9E5041B81E851BE41E544100000040989E50410AD7A300E41E54411F85EB719A9E50415C8FC2C5E81E544114AE47F19C9E5041295C8F32EE1E5441C3F528AC9D9E504185EB51C8EF1E544166666626A79E50415C8FC265041F54410B0000007B14AE778E9E5041CDCCCCBC161F54415C8FC245949E504166666616191F5441295C8FC2959E504114AE47A11B1F544152B81EE5949E5041295C8FD21B1F54417B14AEE78F9E504185EB51181A1F5441AE47E1FA8C9E50418FC2F5D8181F54413D0AD7C3899E50415C8FC2A5171F544185EB5168869E5041B81E85EB151F54410AD7A380869E5041CDCCCC6C131F5441C3F528CC879E5041C3F5289C121F54417B14AE778E9E5041CDCCCCBC161F54411F000000D7A3706DA99E5041A4703DEA211F544152B81EA5A69E5041000000E0221F54411F85EB01A49E5041C3F5285C241F54410AD7A320A19E50411F85EBE1231F5441C3F5284C9E9E5041000000E0221F5441000000309C9E5041EC51B80E221F5441CDCCCC8C999E5041C3F528EC221F54418FC2F588979E504185EB5108251F5441F6285C8F949E5041D7A3707D221F54413D0AD733919E504114AE47D1211F5441666666468E9E5041F6285C6F211F544114AE47B18C9E50418FC2F5A81F1F5441000000908E9E5041B81E855B1D1F5441E17A145E949E5041E17A141E1D1F54419A999959989E5041666666D61D1F5441F6285C8FA19E504148E17A54201F54413D0AD7F3A29E50418FC2F5B8211F54419A9999F9A59E5041D7A370CD1F1F544152B81E55A99E5041A4703DDA1F1F54413D0AD713B49E504152B81ED5231F544148E17A84B59E5041AE47E16A251F5441AE47E19AB49E50418FC2F5382B1F544133333393B29E504114AE47F12B1F54410AD7A370B19E5041B81E85FB2A1F5441D7A370EDB29E5041CDCCCCDC271F54413D0AD7A3B29E5041B81E853B261F5441AE47E17AB09E50419A999939251F5441C3F5280CB09E5041333333E3241F5441E17A14FEAE9E5041F6285C7F231F54418FC2F5B8AA9E504100000040221F5441D7A3706DA99E5041A4703DEA211F5441
+</a>
+
+<b>
+010600000001000000010300000001000000160000002E57135BE59E5041EA7A8B96EC1E5441DF74A27AE49E5041913E9629EC1E5441A0AA7C78D69E5041A0E87011E91E5441871ECCB1CA9E5041B58CB38FE61E54415B4A4E07C09E504125374E7DE41E5441CBCBCECEAF9E5041DC4D9B12E41E544109705725AF9E50410C0F1A12E41E5441BC94008FAD9E5041D528E410E41E544146BA38EDA99E5041410D1F0EE41E5441FEE7D7EAA39E504144CA8909E41E544100000040989E50410AD7A300E41E544164360CAB999E504194386715E71E5441B4B025D59B9E504178693D25E81E54418FF9827DA29E50416B708FC7E81E544144928F70B09E504178693D25E81E544128B7AB7FBF9E5041E573B818E91E5441DD4FB872CD9E5041B488AEFFEA1E544179F668AADC9E50419C3006A5EE1E5441DADCA204E69E5041FC41D33AF01E54416C0DE174EA9E5041B4C36763F01E54414AFCF2FBEA9E5041E86A0952EF1E54412E57135BE59E5041EA7A8B96EC1E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918496 - 141838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000004B00000066666626A79E50415C8FC265041F5441C3F5285CB39E504152B81E551E1F5441C3F5283CA69E5041295C8F82191F5441333333939B9E50410AD7A3A0151F5441F6285CBF8F9E50419A999949111F544166666646859E5041295C8F720D1F54418FC2F518749E5041F6285C1F091F5441D7A3702D699E50418FC2F598081F5441D7A3704D5F9E504100000020081F5441C3F528FC619E5041A4703D0A0C1F5441666666E6659E50419A9999790C1F5441295C8FC2649E5041E17A14CE111F544166666676609E5041D7A370ED131F5441AE47E1FA5F9E5041B81E854B1B1F54415C8FC2256B9E504148E17AB41B1F5441295C8F12709E50417B14AEC71A1F544185EB5148739E504114AE47511E1F54410AD7A350749E50410AD7A3F0221F5441AE47E1CA729E504148E17AC4251F5441333333636E9E504114AE47B1261F5441AE47E19A6E9E50413D0AD7D32A1F5441713D0A67759E504148E17A642A1F5441F6285CEF809E504185EB51482A1F5441EC51B82E8A9E5041713D0A272B1F544148E17A04979E50415C8FC2752C1F54413D0AD7939E9E504114AE47D12D1F544148E17AA4A89E50411F85EB112F1F5441713D0A87B09E5041EC51B8BE311F544148E17AB4B39E50418FC2F5D8321F5441AE47E12AB39E50417B14AE272F1F5441AE47E14AB79E50418FC2F5482D1F544100000080B99E50415C8FC2C52E1F54419A9999D9BB9E50418FC2F5582F1F54411F85EB61BC9E50413D0AD7B3311F5441713D0A47BF9E504114AE47112F1F5441B81E857BC19E5041295C8F722C1F5441F6285CFFC39E5041EC51B8DE281F5441EC51B82EC59E504185EB51A8261F5441AE47E11AC69E50410AD7A390231F5441C3F5284CC69E5041B81E85AB201F5441295C8FB2C59E5041A4703D0A161F5441EC51B8DEC59E504185EB51B8101F5441666666A6C69E504114AE47E10B1F5441EC51B8EEC79E50410AD7A3C0071F54417B14AEC7C89E5041713D0A07051F5441B81E850BC99E504100000070041F544185EB51E8C59E504166666626041F5441CDCCCC0CC69E5041C3F5285C021F544114AE47F1C99E504100000090021F5441EC51B86ECA9E504148E17AB4011F544114AE4771CC9E504185EB51E8FE1E54419A999959CE9E504152B81E55FD1E54415C8FC285D09E50413D0AD763FC1E5441EC51B8BED29E5041CDCCCC3CFC1E5441A4703DEAD59E5041F6285CAFFC1E5441E17A142ED99E5041333333B3FD1E54410AD7A310DE9E504185EB5138FF1E5441EC51B80EE19E50410AD7A3A0FF1E544148E17AA4E69E5041A4703DDAFF1E54413D0AD7A3E99E5041713D0A97FF1E544152B81E95EB9E5041713D0AF7FE1E5441C3F5284CEE9E50419A999959FC1E544133333363F29E504152B81E95F51E54415C8FC275F29E50419A999929F41E54417B14AE87F19E5041713D0A47F21E54411F85EB41EF9E504152B81E65F11E5441C3F5286CE49E5041295C8F22EC1E5441713D0A17D39E504133333353E81E5441EC51B85EC19E5041A4703D9AE41E5441EC51B87EBB9E5041B81E851BE41E544100000040989E50410AD7A300E41E54411F85EB719A9E50415C8FC2C5E81E544114AE47F19C9E5041295C8F32EE1E5441C3F528AC9D9E504185EB51C8EF1E544166666626A79E50415C8FC265041F54410B0000007B14AE778E9E5041CDCCCCBC161F54415C8FC245949E504166666616191F5441295C8FC2959E504114AE47A11B1F544152B81EE5949E5041295C8FD21B1F54417B14AEE78F9E504185EB51181A1F5441AE47E1FA8C9E50418FC2F5D8181F54413D0AD7C3899E50415C8FC2A5171F544185EB5168869E5041B81E85EB151F54410AD7A380869E5041CDCCCC6C131F5441C3F528CC879E5041C3F5289C121F54417B14AE778E9E5041CDCCCCBC161F54411F000000D7A3706DA99E5041A4703DEA211F544152B81EA5A69E5041000000E0221F54411F85EB01A49E5041C3F5285C241F54410AD7A320A19E50411F85EBE1231F5441C3F5284C9E9E5041000000E0221F5441000000309C9E5041EC51B80E221F5441CDCCCC8C999E5041C3F528EC221F54418FC2F588979E504185EB5108251F5441F6285C8F949E5041D7A3707D221F54413D0AD733919E504114AE47D1211F5441666666468E9E5041F6285C6F211F544114AE47B18C9E50418FC2F5A81F1F5441000000908E9E5041B81E855B1D1F5441E17A145E949E5041E17A141E1D1F54419A999959989E5041666666D61D1F5441F6285C8FA19E504148E17A54201F54413D0AD7F3A29E50418FC2F5B8211F54419A9999F9A59E5041D7A370CD1F1F544152B81E55A99E5041A4703DDA1F1F54413D0AD713B49E504152B81ED5231F544148E17A84B59E5041AE47E16A251F5441AE47E19AB49E50418FC2F5382B1F544133333393B29E504114AE47F12B1F54410AD7A370B19E5041B81E85FB2A1F5441D7A370EDB29E5041CDCCCCDC271F54413D0AD7A3B29E5041B81E853B261F5441AE47E17AB09E50419A999939251F5441C3F5280CB09E5041333333E3241F5441E17A14FEAE9E5041F6285C7F231F54418FC2F5B8AA9E504100000040221F5441D7A3706DA99E5041A4703DEA211F5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000004AFCF2FBEA9E5041E86A0952EF1E5441A7F902EAE89E50417F74C550EE1E544124752B24E79E5041EC907274ED1E54419028385BE69E504136B5E412ED1E5441A7FF3243E59E5041DC28F48AEC1E5441DF74A27AE49E5041913E9629EC1E5441A0AA7C78D69E5041A0E87011E91E5441871ECCB1CA9E5041B58CB38FE61E54415B4A4E07C09E504125374E7DE41E5441D5CECECEAF9E5041DE4D9B12E41E54413C4FA141AD9E50419726A910E41E5441ACEBCAE4AC9E5041E6586210E41E544146BA38EDA99E5041410D1F0EE41E5441FEE7D7EAA39E504144CA8909E41E544100000040989E50410AD7A300E41E544164360CAB999E504194386715E71E5441B4B025D59B9E504178693D25E81E54418FF9827DA29E50416B708FC7E81E544144928F70B09E504178693D25E81E544128B7AB7FBF9E5041E573B818E91E5441DD4FB872CD9E5041B488AEFFEA1E544179F668AADC9E50419C3006A5EE1E5441DADCA204E69E5041FC41D33AF01E54416C0DE174EA9E5041B4C36763F01E54414AFCF2FBEA9E5041E86A0952EF1E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918496 - 351924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000004B00000066666626A79E50415C8FC265041F5441C3F5285CB39E504152B81E551E1F5441C3F5283CA69E5041295C8F82191F5441333333939B9E50410AD7A3A0151F5441F6285CBF8F9E50419A999949111F544166666646859E5041295C8F720D1F54418FC2F518749E5041F6285C1F091F5441D7A3702D699E50418FC2F598081F5441D7A3704D5F9E504100000020081F5441C3F528FC619E5041A4703D0A0C1F5441666666E6659E50419A9999790C1F5441295C8FC2649E5041E17A14CE111F544166666676609E5041D7A370ED131F5441AE47E1FA5F9E5041B81E854B1B1F54415C8FC2256B9E504148E17AB41B1F5441295C8F12709E50417B14AEC71A1F544185EB5148739E504114AE47511E1F54410AD7A350749E50410AD7A3F0221F5441AE47E1CA729E504148E17AC4251F5441333333636E9E504114AE47B1261F5441AE47E19A6E9E50413D0AD7D32A1F5441713D0A67759E504148E17A642A1F5441F6285CEF809E504185EB51482A1F5441EC51B82E8A9E5041713D0A272B1F544148E17A04979E50415C8FC2752C1F54413D0AD7939E9E504114AE47D12D1F544148E17AA4A89E50411F85EB112F1F5441713D0A87B09E5041EC51B8BE311F544148E17AB4B39E50418FC2F5D8321F5441AE47E12AB39E50417B14AE272F1F5441AE47E14AB79E50418FC2F5482D1F544100000080B99E50415C8FC2C52E1F54419A9999D9BB9E50418FC2F5582F1F54411F85EB61BC9E50413D0AD7B3311F5441713D0A47BF9E504114AE47112F1F5441B81E857BC19E5041295C8F722C1F5441F6285CFFC39E5041EC51B8DE281F5441EC51B82EC59E504185EB51A8261F5441AE47E11AC69E50410AD7A390231F5441C3F5284CC69E5041B81E85AB201F5441295C8FB2C59E5041A4703D0A161F5441EC51B8DEC59E504185EB51B8101F5441666666A6C69E504114AE47E10B1F5441EC51B8EEC79E50410AD7A3C0071F54417B14AEC7C89E5041713D0A07051F5441B81E850BC99E504100000070041F544185EB51E8C59E504166666626041F5441CDCCCC0CC69E5041C3F5285C021F544114AE47F1C99E504100000090021F5441EC51B86ECA9E504148E17AB4011F544114AE4771CC9E504185EB51E8FE1E54419A999959CE9E504152B81E55FD1E54415C8FC285D09E50413D0AD763FC1E5441EC51B8BED29E5041CDCCCC3CFC1E5441A4703DEAD59E5041F6285CAFFC1E5441E17A142ED99E5041333333B3FD1E54410AD7A310DE9E504185EB5138FF1E5441EC51B80EE19E50410AD7A3A0FF1E544148E17AA4E69E5041A4703DDAFF1E54413D0AD7A3E99E5041713D0A97FF1E544152B81E95EB9E5041713D0AF7FE1E5441C3F5284CEE9E50419A999959FC1E544133333363F29E504152B81E95F51E54415C8FC275F29E50419A999929F41E54417B14AE87F19E5041713D0A47F21E54411F85EB41EF9E504152B81E65F11E5441C3F5286CE49E5041295C8F22EC1E5441713D0A17D39E504133333353E81E5441EC51B85EC19E5041A4703D9AE41E5441EC51B87EBB9E5041B81E851BE41E544100000040989E50410AD7A300E41E54411F85EB719A9E50415C8FC2C5E81E544114AE47F19C9E5041295C8F32EE1E5441C3F528AC9D9E504185EB51C8EF1E544166666626A79E50415C8FC265041F54410B0000007B14AE778E9E5041CDCCCCBC161F54415C8FC245949E504166666616191F5441295C8FC2959E504114AE47A11B1F544152B81EE5949E5041295C8FD21B1F54417B14AEE78F9E504185EB51181A1F5441AE47E1FA8C9E50418FC2F5D8181F54413D0AD7C3899E50415C8FC2A5171F544185EB5168869E5041B81E85EB151F54410AD7A380869E5041CDCCCC6C131F5441C3F528CC879E5041C3F5289C121F54417B14AE778E9E5041CDCCCCBC161F54411F000000D7A3706DA99E5041A4703DEA211F544152B81EA5A69E5041000000E0221F54411F85EB01A49E5041C3F5285C241F54410AD7A320A19E50411F85EBE1231F5441C3F5284C9E9E5041000000E0221F5441000000309C9E5041EC51B80E221F5441CDCCCC8C999E5041C3F528EC221F54418FC2F588979E504185EB5108251F5441F6285C8F949E5041D7A3707D221F54413D0AD733919E504114AE47D1211F5441666666468E9E5041F6285C6F211F544114AE47B18C9E50418FC2F5A81F1F5441000000908E9E5041B81E855B1D1F5441E17A145E949E5041E17A141E1D1F54419A999959989E5041666666D61D1F5441F6285C8FA19E504148E17A54201F54413D0AD7F3A29E50418FC2F5B8211F54419A9999F9A59E5041D7A370CD1F1F544152B81E55A99E5041A4703DDA1F1F54413D0AD713B49E504152B81ED5231F544148E17A84B59E5041AE47E16A251F5441AE47E19AB49E50418FC2F5382B1F544133333393B29E504114AE47F12B1F54410AD7A370B19E5041B81E85FB2A1F5441D7A370EDB29E5041CDCCCCDC271F54413D0AD7A3B29E5041B81E853B261F5441AE47E17AB09E50419A999939251F5441C3F5280CB09E5041333333E3241F5441E17A14FEAE9E5041F6285C7F231F54418FC2F5B8AA9E504100000040221F5441D7A3706DA99E5041A4703DEA211F5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000004AFCF2FBEA9E5041E86A0952EF1E5441A7F902EAE89E50417F74C550EE1E544124752B24E79E5041EC907274ED1E54419028385BE69E504136B5E412ED1E5441A7FF3243E59E5041DC28F48AEC1E5441DF74A27AE49E5041913E9629EC1E5441A0AA7C78D69E5041A0E87011E91E5441871ECCB1CA9E5041B58CB38FE61E54415B4A4E07C09E504125374E7DE41E5441D5CECECEAF9E5041DE4D9B12E41E54413C4FA141AD9E50419726A910E41E5441ACEBCAE4AC9E5041E6586210E41E544146BA38EDA99E5041410D1F0EE41E5441FEE7D7EAA39E504144CA8909E41E544100000040989E50410AD7A300E41E544164360CAB999E504194386715E71E5441B4B025D59B9E504178693D25E81E54418FF9827DA29E50416B708FC7E81E544144928F70B09E504178693D25E81E544128B7AB7FBF9E5041E573B818E91E5441DD4FB872CD9E5041B488AEFFEA1E544179F668AADC9E50419C3006A5EE1E5441DADCA204E69E5041FC41D33AF01E54416C0DE174EA9E5041B4C36763F01E54414AFCF2FBEA9E5041E86A0952EF1E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967876 - 87036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000EC51B89E68B950417B14AE872AF75441D7A3709D73B950417B14AE072EF75441333333B374B9504185EB51582DF75441713D0A0776B9504152B81E6523F75441CDCCCCFC76B95041295C8FC223F75441EC51B80E7CB95041CDCCCCBCFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441D7A370DD63B950413D0AD7D3FDF65441D7A3704D5DB950415C8FC2F527F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A23EE6497AB950414B34BB000BF754416BA4780E7CB95041095AAABEFDF6544103A0C56478B9504159FEE9BFFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441445D34C865B950413D6A33D2FDF6544176B225E163B950417B3C06D5FDF65441F19537605DB95041417106FA27F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441F43B382669B95041A929D0B22AF75441A49011EE71B95041EAF05C7E2DF75441062A51A373B950411938F8032EF75441EB33ACBA74B95041D5674F202DF75441A8D195F174B950410C78B9842BF75441D541222A75B95041C956E0DC29F7544173A3438675B950417D05552A27F754414DCD200576B950417633737323F75441713D0A0776B9504152B81E6523F75441C651D8F376B9504162BD27BF23F75441ECDF370679B95041AE1E2E7C14F75441A23EE6497AB950414B34BB000BF75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967876 - 265500
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000EC51B89E68B950417B14AE872AF75441D7A3709D73B950417B14AE072EF75441333333B374B9504185EB51582DF75441713D0A0776B9504152B81E6523F75441CDCCCCFC76B95041295C8FC223F75441EC51B80E7CB95041CDCCCCBCFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441D7A370DD63B950413D0AD7D3FDF65441D7A3704D5DB950415C8FC2F527F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A23EE6497AB950414B34BB000BF754416BA4780E7CB95041095AAABEFDF6544103A0C56478B9504159FEE9BFFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441445D34C865B950413D6A33D2FDF6544176B225E163B950417B3C06D5FDF65441F19537605DB95041417106FA27F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441F43B382669B95041A929D0B22AF75441A49011EE71B95041EAF05C7E2DF75441062A51A373B950411938F8032EF75441EB33ACBA74B95041D5674F202DF75441A8D195F174B950410C78B9842BF75441D541222A75B95041C956E0DC29F7544173A3438675B950417D05552A27F754414DCD200576B950417633737323F75441713D0A0776B9504152B81E6523F75441C651D8F376B9504162BD27BF23F75441ECDF370679B95041AE1E2E7C14F75441A23EE6497AB950414B34BB000BF75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218592 - 1632728
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC29576B950415C8FC2C5CD4E554148E17AB478B950417B14AEB7CD4E55415C8FC25584B95041B81E856BCD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E5541E17A146E88B9504100000040B14E554148E17AA480B950418FC2F508B14E55416666665675B950419A9999B9B04E55419A99994971B95041D7A3705DBF4E554114AE47016FB95041E17A149EC74E5541C3F5283C6DB95041295C8F02CE4E55415C8FC29576B950415C8FC2C5CD4E5541
+</a>
+
+<b>
+010600000001000000010300000001000000080000000D16E4CA88B950415FB58042B14E5541606B64D588B950415AB56755B14E554159C7D9C288B95041D2F23051B54E5541D341FBA184B95041B2ABFD5CCD4E55411544E59084B95041433C026ACD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E55410D16E4CA88B950415FB58042B14E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218592 - 5275187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC29576B950415C8FC2C5CD4E554148E17AB478B950417B14AEB7CD4E55415C8FC25584B95041B81E856BCD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E5541E17A146E88B9504100000040B14E554148E17AA480B950418FC2F508B14E55416666665675B950419A9999B9B04E55419A99994971B95041D7A3705DBF4E554114AE47016FB95041E17A149EC74E5541C3F5283C6DB95041295C8F02CE4E55415C8FC29576B950415C8FC2C5CD4E5541
+</a>
+
+<b>
+010600000001000000010300000001000000080000000D16E4CA88B950415FB58042B14E5541606B64D588B950415AB56755B14E554159C7D9C288B95041D2F23051B54E5541D341FBA184B95041B2ABFD5CCD4E55411544E59084B95041433C026ACD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E55410D16E4CA88B950415FB58042B14E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218780 - 1631916
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F528ECD9B8504185EB51F8834D55419A999969E1B85041AE47E1EA734D55411F85EB61ECB85041295C8F525F4D5541295C8FC2E5B850419A999959644D55418FC2F518E2B850410AD7A330674D5541333333D3DFB85041CDCCCC1C694D554166666656D8B85041666666767B4D55413D0AD793D5B850419A999939824D5541C3F528ECD9B8504185EB51F8834D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000001F85EBC1B3B85041713D0A97994D55411F85EB71B2B85041000000409A4D554133333373ABB8504100000010B94D5541333333F3A8B85041A4703D4AC94D5541A4703DDAA9B85041C3F5288CCA4D554148E17AE4B2B85041C3F5286CCC4D5541000000A0BAB85041333333D3C64D5541333333E3C6B85041F6285CEFBD4D5541713D0A37D0B85041E17A144EBC4D5541295C8FA2D1B85041CDCCCC2CBB4D5541D7A3701DDBB85041295C8FB2A24D5541F6285C7FE4B85041666666768A4D5541666666F6E3B8504148E17A14894D554152BBD4C7D9B8504113C6C2EC844D5541B53CBB3FDAB850411103FAE8834D5541B3D4AD27DAB85041713FE115844D554181F67576DEB850412E99493D7A4D55412230F339E6B85041CC6346E16A4D5541AC42BAA3ECB850418A70EAE35E4D5541333333D3DFB85041CDCCCC1C694D55411F85EB21DCB850411F85EB31674D55417B14AE37D9B85041E17A14AE654D5541F6285CEFD6B85041EC51B87E644D554133333323D4B85041AE47E10A634D554148E17AA4CCB85041295C8F12764D5541295C8F22C5B850413D0AD723894D554114AE47A1BDB850413D0AD7339C4D5541F6285C3FBDB850411F85EB219D4D55411F85EBC1B3B85041713D0A97994D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218780 - 5274395
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F528ECD9B8504185EB51F8834D55419A999969E1B85041AE47E1EA734D55411F85EB61ECB85041295C8F525F4D5541295C8FC2E5B850419A999959644D55418FC2F518E2B850410AD7A330674D5541333333D3DFB85041CDCCCC1C694D554166666656D8B85041666666767B4D55413D0AD793D5B850419A999939824D5541C3F528ECD9B8504185EB51F8834D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000001F85EBC1B3B85041713D0A97994D55411F85EB71B2B85041000000409A4D554133333373ABB8504100000010B94D5541333333F3A8B85041A4703D4AC94D5541A4703DDAA9B85041C3F5288CCA4D554148E17AE4B2B85041C3F5286CCC4D5541000000A0BAB85041333333D3C64D5541333333E3C6B85041F6285CEFBD4D5541713D0A37D0B85041E17A144EBC4D5541295C8FA2D1B85041CDCCCC2CBB4D5541D7A3701DDBB85041295C8FB2A24D5541F6285C7FE4B85041666666768A4D5541666666F6E3B8504148E17A14894D554152BBD4C7D9B8504113C6C2EC844D5541B53CBB3FDAB850411103FAE8834D5541B3D4AD27DAB85041713FE115844D554181F67576DEB850412E99493D7A4D55412230F339E6B85041CC6346E16A4D5541AC42BAA3ECB850418A70EAE35E4D5541333333D3DFB85041CDCCCC1C694D55411F85EB21DCB850411F85EB31674D55417B14AE37D9B85041E17A14AE654D5541F6285CEFD6B85041EC51B87E644D554133333323D4B85041AE47E10A634D554148E17AA4CCB85041295C8F12764D5541295C8F22C5B850413D0AD723894D554114AE47A1BDB850413D0AD7339C4D5541F6285C3FBDB850411F85EB219D4D55411F85EBC1B3B85041713D0A97994D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>219464 - 200565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000090000001F85EB819EBC504148E17A14AD4D5541E17A149EA2BC5041D7A370ED9D4D554114AE47C1A7BC5041000000208B4D554152B81E05A7BC5041713D0A278A4D55413D0AD773A5BC504148E17A248A4D554100000040A0BC5041000000809D4D55418FC2F5C89BBC50417B14AE37AE4D5541E17A14EE9CBC504100000040AE4D55411F85EB819EBC504148E17A14AD4D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000005EADF1DB9BBC5041F95531DCA54D5541F2E5CDCC99BC504136EFF428AE4D55415BDDF5C89BBC504125B0AD37AE4D55412CC4943F9DBC504136A00DBDA84D554100EDFF3FA0BC50410F38FF7F9D4D55411D866939A1BC5041A539FCDF994D55418ACAD673A5BC50414DCE7B248A4D554110F015B9A3BC5041A936C5218A4D5541241DF768A3BC504133B047218A4D554169A7384DA0BC50411B766018954D554185EB51089EBC50419A9999199D4D55415EADF1DB9BBC5041F95531DCA54D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>184518 - 243456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B80E9E17514148E17AA4933255410AD7A3D099175141C3F5286C96325541AE47E18A951751410AD7A300993255418FC2F588921751413D0AD7D39A3255411F85EBB19A17514166666646A6325541CDCCCC1CA01751418FC2F528A33255415C8FC2C5A5175141EC51B89EAA325541CDCCCC7CA7175141EC51B8FEAB3255417B14AEA7AA175141F6285CDFA9325541D7A3709DB3175141F6285CAFA332554152B81EB5B717514133333313A1325541C3F5286CBC175141D7A3703D9E325541B81E85CBBC17514185EB51C896325541EC51B8EEBD1751410000000093325541295C8FE2BF1751413D0AD71390325541333333A3CA1751413D0AD7B3823255417B14AE07CC175141713D0A778032554148E17AD4CC1751411F85EB417D32554148E17A34CC175141000000F07932554152B81E05CB175141713D0AA775325541333333A3C2175141C3F5285C7B325541295C8F12BC175141666666C67F3255417B14AEC7B1175141D7A3706D863255411F85EB51A817514148E17AB48C325541EC51B80E9E17514148E17AA493325541
+</a>
+
+<b>
+0106000000010000000103000000010000006A0000001EF3A4479F175141469EB3DC84325541333333039F1751413D0AD7E384325541D7A3706D9E175141E17A14DE8432554114AE47819D17514152B81E05853255415C8FC2C59B1751413333336385325541295C8FD299175141333333E385325541856716A197175141E7C81FC5863255413333332397175141B81E85FB863255413D0AD7D395175141EC51B87E87325541B81E852B951751413D0AD7D387325541F6285CBF9317514152B81E8588325541C3F5284C911751415C8FC2758A3255410AD7A3B08F1751410AD7A3F08B3255417B14AEF78E175141A4703D7A8C325541B38D84048E1751417BE4EDFE8C32554185EB51F88C17514114AE47918D32554185EB51C88B17514114AE47718E325541333333938A17514185EB51A88F325541AE47E1CA8A175141666666F68F3255411559DFC58B17514171B79D569132554176AAAC9B8C17514157A0A482923255412C2F2C0F8E175141C6C6F68B943255411A921DAF8F1751413C6AA7D3963255418FC2F588921751413D0AD7D39A325541AE47E18A951751410AD7A30099325541DCE94B3999175141FDF08CC7963255412B5526109B1751419027CB9A95325541FDD304A49B1751416316E639953255413747637F9C1751411BEA26AA94325541324971729E175141B72C116193325541FB8543419F1751419D4241D5923255417AAA314AA01751415029292292325541D469D58CA31751411CB9F0ED8F3255411F85EB51A817514148E17AB48C3255417B14AEC7B1175141D7A3706D86325541295C8F12BC175141666666C67F325541AA477973C3175141CE9859CE7A32554152B81E05CB175141713D0AA775325541C3F5284CCA175141C3F5280C7332554100000030CA1751410000007072325541B81E851BC917514100000000723255411F85EBE1C41751411F85EB91703255411F85EBE1C3175141F6285C5F703255417B14AE37C3175141713D0A577032554133333393C21751411F85EB3170325541B81E85ABC117514185EB5128703255418FC2F548C1175141AE47E11A70325541000000B0C0175141C3F5280C70325541A4703D0AC01751419A9999E96F325541B81E85BBBF175141E17A14DE6F325541A4703D3ABF1751415C8FC2856F3255410AD7A3B0BE17514114AE47616F325541B965379EBC1751419137C15B6F325541713D0A17BB1751417B14AE576F32554114AE47D1BA17514152B81EA56F32554185EB5178BA1751418FC2F5D86F325541666666D6B91751417B14AE1770325541295C8F32B91751417B14AE2770325541DFE305C6B817514181C3265070325541D7A3702DB81751411F85EBA170325541713D0A77B717514148E17A2471325541EC51B8EEB617514148E17A847132554152B81E15B61751411F85EB0172325541C3F5286CB51751411F85EB417232554166666646B41751410AD7A3B072325541B81E85BBB217514185EB51387332554133333303B217514185EB519873325541CDCCCC7CB1175141A4703DDA733255413D0AD773B0175141AE47E11A7432554100000080AF175141C3F5286C74325541D7A3709DAE1751413D0AD7B374325541AAD97416AE1751418154E8B87432554114AE4771AD175141AE47E1DA74325541CDCCCC9CAC1751410AD7A340753255410AD7A3E0AA1751415C8FC265763255417B14AED7A91751413D0AD7637732554133333333A91751418FC2F5E877325541F6285CAFA81751418FC2F53878325541D7A3705DA8175141B81E858B78325541C3F5282CA81751419A9999E978325541AE47E1EAA7175141713D0A47793255417B14AE87A7175141333333A379325541713D0A17A7175141CDCCCC0C7A32554148E17AE4A6175141333333537A325541E17A148EA617514152B81E957A325541666666C6A51751410AD7A3007B325541CDCCCC8CA517514148E17A347B325541713D0A27A5175141666666B67B325541940FC000A5175141DB4517DA7B3255415C8FC245A41751419A9999897C32554148E17A04A41751417B14AE077D325541295C8F72A3175141F6285CCF7D3255411F85EB51A317514114AE47A17E3255417B14AE37A3175141D7A3701D7F32554114AE47F1A21751413D0AD7D37F325541295C8FC2A217514148E17A7480325541F27DAE9BA21751410C3FD345813255418FC2F598A217514148E17A548132554152B81E65A2175141CDCCCCFC81325541333333F3A1175141D7A3700D83325541D7A370DDA0175141A4703D3A8432554114AE4771A017514152B81E758432554134ED76E19F175141E8831E9F843255418DD1A9DF9F175141121FD79F84325541B81E856B9F1751418FC2F5D8843255411EF3A4479F175141469EB3DC84325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>184518 - 318335
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B80E9E17514148E17AA4933255410AD7A3D099175141C3F5286C96325541AE47E18A951751410AD7A300993255418FC2F588921751413D0AD7D39A3255411F85EBB19A17514166666646A6325541CDCCCC1CA01751418FC2F528A33255415C8FC2C5A5175141EC51B89EAA325541CDCCCC7CA7175141EC51B8FEAB3255417B14AEA7AA175141F6285CDFA9325541D7A3709DB3175141F6285CAFA332554152B81EB5B717514133333313A1325541C3F5286CBC175141D7A3703D9E325541B81E85CBBC17514185EB51C896325541EC51B8EEBD1751410000000093325541295C8FE2BF1751413D0AD71390325541333333A3CA1751413D0AD7B3823255417B14AE07CC175141713D0A778032554148E17AD4CC1751411F85EB417D32554148E17A34CC175141000000F07932554152B81E05CB175141713D0AA775325541333333A3C2175141C3F5285C7B325541295C8F12BC175141666666C67F3255417B14AEC7B1175141D7A3706D863255411F85EB51A817514148E17AB48C325541EC51B80E9E17514148E17AA493325541
+</a>
+
+<b>
+0106000000010000000103000000010000006A0000001EF3A4479F175141469EB3DC84325541333333039F1751413D0AD7E384325541D7A3706D9E175141E17A14DE8432554114AE47819D17514152B81E05853255415C8FC2C59B1751413333336385325541295C8FD299175141333333E385325541856716A197175141E7C81FC5863255413333332397175141B81E85FB863255413D0AD7D395175141EC51B87E87325541B81E852B951751413D0AD7D387325541F6285CBF9317514152B81E8588325541C3F5284C911751415C8FC2758A3255410AD7A3B08F1751410AD7A3F08B3255417B14AEF78E175141A4703D7A8C325541B38D84048E1751417BE4EDFE8C32554185EB51F88C17514114AE47918D32554185EB51C88B17514114AE47718E325541333333938A17514185EB51A88F325541AE47E1CA8A175141666666F68F3255411559DFC58B17514171B79D569132554176AAAC9B8C17514157A0A482923255412C2F2C0F8E175141C6C6F68B943255411A921DAF8F1751413C6AA7D3963255418FC2F588921751413D0AD7D39A325541AE47E18A951751410AD7A30099325541DCE94B3999175141FDF08CC7963255412B5526109B1751419027CB9A95325541FDD304A49B1751416316E639953255413747637F9C1751411BEA26AA94325541324971729E175141B72C116193325541FB8543419F1751419D4241D5923255417AAA314AA01751415029292292325541D469D58CA31751411CB9F0ED8F3255411F85EB51A817514148E17AB48C3255417B14AEC7B1175141D7A3706D86325541295C8F12BC175141666666C67F325541AA477973C3175141CE9859CE7A32554152B81E05CB175141713D0AA775325541C3F5284CCA175141C3F5280C7332554100000030CA1751410000007072325541B81E851BC917514100000000723255411F85EBE1C41751411F85EB91703255411F85EBE1C3175141F6285C5F703255417B14AE37C3175141713D0A577032554133333393C21751411F85EB3170325541B81E85ABC117514185EB5128703255418FC2F548C1175141AE47E11A70325541000000B0C0175141C3F5280C70325541A4703D0AC01751419A9999E96F325541B81E85BBBF175141E17A14DE6F325541A4703D3ABF1751415C8FC2856F3255410AD7A3B0BE17514114AE47616F325541B965379EBC1751419137C15B6F325541713D0A17BB1751417B14AE576F32554114AE47D1BA17514152B81EA56F32554185EB5178BA1751418FC2F5D86F325541666666D6B91751417B14AE1770325541295C8F32B91751417B14AE2770325541DFE305C6B817514181C3265070325541D7A3702DB81751411F85EBA170325541713D0A77B717514148E17A2471325541EC51B8EEB617514148E17A847132554152B81E15B61751411F85EB0172325541C3F5286CB51751411F85EB417232554166666646B41751410AD7A3B072325541B81E85BBB217514185EB51387332554133333303B217514185EB519873325541CDCCCC7CB1175141A4703DDA733255413D0AD773B0175141AE47E11A7432554100000080AF175141C3F5286C74325541D7A3709DAE1751413D0AD7B374325541AAD97416AE1751418154E8B87432554114AE4771AD175141AE47E1DA74325541CDCCCC9CAC1751410AD7A340753255410AD7A3E0AA1751415C8FC265763255417B14AED7A91751413D0AD7637732554133333333A91751418FC2F5E877325541F6285CAFA81751418FC2F53878325541D7A3705DA8175141B81E858B78325541C3F5282CA81751419A9999E978325541AE47E1EAA7175141713D0A47793255417B14AE87A7175141333333A379325541713D0A17A7175141CDCCCC0C7A32554148E17AE4A6175141333333537A325541E17A148EA617514152B81E957A325541666666C6A51751410AD7A3007B325541CDCCCC8CA517514148E17A347B325541713D0A27A5175141666666B67B325541940FC000A5175141DB4517DA7B3255415C8FC245A41751419A9999897C32554148E17A04A41751417B14AE077D325541295C8F72A3175141F6285CCF7D3255411F85EB51A317514114AE47A17E3255417B14AE37A3175141D7A3701D7F32554114AE47F1A21751413D0AD7D37F325541295C8FC2A217514148E17A7480325541F27DAE9BA21751410C3FD345813255418FC2F598A217514148E17A548132554152B81E65A2175141CDCCCCFC81325541333333F3A1175141D7A3700D83325541D7A370DDA0175141A4703D3A8432554114AE4771A017514152B81E758432554134ED76E19F175141E8831E9F843255418DD1A9DF9F175141121FD79F84325541B81E856B9F1751418FC2F5D8843255411EF3A4479F175141469EB3DC84325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187860 - 190677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000500000052B81E55F2D25041C3F5284C289154410AD7A39007D3504148E17A14EE905441713D0A0703D3504152B81E25EB90544148E17A24EED25041A4703D6A2691544152B81E55F2D25041C3F5284C28915441
+</a>
+
+<b>
+010600000001000000010300000001000000080000007372020703D35041F3D53425EB90544148E17A24EED25041A4703D6A26915441AC4A1F55F2D250417C64274C289154415723FAAEFAD25041A2D45B66119154415F0DF26802D350411300F536FC905441E194A39007D350417DB67A14EE9054414A00983807D35041576487DBED9054417372020703D35041F3D53425EB905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187860 - 385322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000500000052B81E55F2D25041C3F5284C289154410AD7A39007D3504148E17A14EE905441713D0A0703D3504152B81E25EB90544148E17A24EED25041A4703D6A2691544152B81E55F2D25041C3F5284C28915441
+</a>
+
+<b>
+010600000001000000010300000001000000080000007372020703D35041F3D53425EB90544148E17A24EED25041A4703D6A26915441AC4A1F55F2D250417C64274C289154415723FAAEFAD25041A2D45B66119154415F0DF26802D350411300F536FC905441E194A39007D350417DB67A14EE9054414A00983807D35041576487DBED9054417372020703D35041F3D53425EB905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>188833 - 56059
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000600000052B81E8534E75041713D0AD72C2E5541E17A14FE40E75041F6285C1F202E5541EC51B89E3AE750411F85EBA11C2E5541E17A140E38E75041C3F5281C1B2E5541713D0A172CE7504114AE47B1262E554152B81E8534E75041713D0AD72C2E5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000EC51B89E3AE750411F85EBA11C2E554124B9140E38E75041B81A291C1B2E55410331E01A2CE7504152C213B4262E5541242F65672CE7504115DAE0EB262E554132E7958F2CE750413CCE2F09272E5541FC75AD8B34E75041F4855AD02C2E55417D8C5ABA35E750410D61BB9B2B2E55410D65ABE240E750412C0D631D202E554161645F793EE75041329E46BE1E2E5541EC51B89E3AE750411F85EBA11C2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189022 - 7822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189022 - 59517
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189363 - 3043792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8BEB5E450417B14AEA7F72C55413D0AD7D3B6E450418FC2F538F52C554152B81E95B3E45041E17A14EEEC2C5541B81E856BB1E4504185EB5158E72C55415C8FC2F5B1E45041EC51B84EE12C554185EB51F8B0E4504100000020E12C55418FC2F578ABE45041295C8FE2E72C5541F6285C6FA5E45041295C8FA2EF2C554152B81E15A4E45041295C8F82F32C5541A4703D5AA4E450410AD7A390F72C55418FC2F5B8A3E450417B14AEB7FA2C5541C3F5284CA0E45041C3F5287C002D55419A9999399EE450411F85EBD1032D554148E17AF49DE45041666666B6052D55417B14AE379FE45041B81E850B092D5541295C8FF29EE4504152B81E050C2D5541A4703D6A9DE450419A9999F9102D554148E17AE49AE45041713D0AA7162D55415C8FC245A3E45041D7A3702D192D554166666686A5E45041333333D3172D554148E17AB4A5E45041B81E85AB142D55413D0AD783A6E45041295C8FE2102D5541E17A14BEABE450418FC2F5C8072D5541295C8FB2B0E45041295C8F52FE2C5541EC51B8BEB5E450417B14AEA7F72C5541
+</a>
+
+<b>
+010600000001000000010300000001000000220000003E169FED9AE45041BA5FCBA9162D55415C8FC245A3E45041D7A3702D192D55416AAD8A29A3E450418A09D4E8192D554129ACAEABA8E45041DF1899131B2D55414082E62DB1E4504162C4FAF91E2D55416696A00FB5E450413B4E7D821C2D55414BE32755BAE45041F6D01A54152D55415F2AE8B7C4E45041115F2BAF052D5541B5380937C3E45041358EA6CF022D5541538A58EAC4E4504130D04DB5FE2C5541DA3B88F2CCE45041EADEB6D6EC2C554190F17A4CD0E45041F886024BE52C5541835350D1D4E450417838A1B1DC2C55419F9B03D2D1E45041E2F026DFDA2C55412F09C517CAE45041BD48AA51D72C5541E04AC33BC0E45041715944C9D22C55419BEE047EBBE45041BD71B208D12C5541BA4A4C48B9E450410A0C769AD52C5541DE4005A3B5E4504141563C24DD2C5541CC1DE16EB1E45041B2426AD5E52C554123BED2EEB1E4504195F1469CE12C55414C566621B1E45041E8A19227E12C55412AE4BBE5ADE4504186B439E7E42C55413790C629A8E4504124040B22EC2C55414799E8E4A4E45041C0743B2FF12C55414E6BB70DA4E4504196E8BC53F42C5541939B6E1FA4E450412ABEE9B6F82C5541E23B2828A3E450414EFF84ABFB2C5541AAB02D05A0E45041819461EE002D55411768660E9EE450411446B800052D5541467539369FE450417DDC8E1B092D554158F11E049FE45041EB0EA0430B2D5541CD8257309DE450412CF5E97B112D55413E169FED9AE45041BA5FCBA9162D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189363 - 3287368
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8BEB5E450417B14AEA7F72C55413D0AD7D3B6E450418FC2F538F52C554152B81E95B3E45041E17A14EEEC2C5541B81E856BB1E4504185EB5158E72C55415C8FC2F5B1E45041EC51B84EE12C554185EB51F8B0E4504100000020E12C55418FC2F578ABE45041295C8FE2E72C5541F6285C6FA5E45041295C8FA2EF2C554152B81E15A4E45041295C8F82F32C5541A4703D5AA4E450410AD7A390F72C55418FC2F5B8A3E450417B14AEB7FA2C5541C3F5284CA0E45041C3F5287C002D55419A9999399EE450411F85EBD1032D554148E17AF49DE45041666666B6052D55417B14AE379FE45041B81E850B092D5541295C8FF29EE4504152B81E050C2D5541A4703D6A9DE450419A9999F9102D554148E17AE49AE45041713D0AA7162D55415C8FC245A3E45041D7A3702D192D554166666686A5E45041333333D3172D554148E17AB4A5E45041B81E85AB142D55413D0AD783A6E45041295C8FE2102D5541E17A14BEABE450418FC2F5C8072D5541295C8FB2B0E45041295C8F52FE2C5541EC51B8BEB5E450417B14AEA7F72C5541
+</a>
+
+<b>
+010600000001000000010300000001000000220000003E169FED9AE45041BA5FCBA9162D55415C8FC245A3E45041D7A3702D192D55416AAD8A29A3E450418A09D4E8192D554129ACAEABA8E45041DF1899131B2D55414082E62DB1E4504162C4FAF91E2D55416696A00FB5E450413B4E7D821C2D55414BE32755BAE45041F6D01A54152D55415F2AE8B7C4E45041115F2BAF052D5541B5380937C3E45041358EA6CF022D5541538A58EAC4E4504130D04DB5FE2C5541DA3B88F2CCE45041EADEB6D6EC2C554190F17A4CD0E45041F886024BE52C5541835350D1D4E450417838A1B1DC2C55419F9B03D2D1E45041E2F026DFDA2C55412F09C517CAE45041BD48AA51D72C5541E04AC33BC0E45041715944C9D22C55419BEE047EBBE45041BD71B208D12C5541BA4A4C48B9E450410A0C769AD52C5541DE4005A3B5E4504141563C24DD2C5541CC1DE16EB1E45041B2426AD5E52C554123BED2EEB1E4504195F1469CE12C55414C566621B1E45041E8A19227E12C55412AE4BBE5ADE4504186B439E7E42C55413790C629A8E4504124040B22EC2C55414799E8E4A4E45041C0743B2FF12C55414E6BB70DA4E4504196E8BC53F42C5541939B6E1FA4E450412ABEE9B6F82C5541E23B2828A3E450414EFF84ABFB2C5541AAB02D05A0E45041819461EE002D55411768660E9EE450411446B800052D5541467539369FE450417DDC8E1B092D554158F11E049FE45041EB0EA0430B2D5541CD8257309DE450412CF5E97B112D55413E169FED9AE45041BA5FCBA9162D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189369 - 56451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000CDCCCCDC67E65041D7A3701DD32C554148E17AC46EE65041CDCCCC5CCE2C55413333330376E650418FC2F518CA2C5541C3F528DC79E650413D0AD7E3C82C55419A9999D97CE65041F6285CCFC82C554114AE47917FE65041295C8F02C82C5541713D0AF77AE6504114AE47D1BD2C554185EB51887AE65041B81E85DBBC2C554148E17AB477E650411F85EBC1BE2C5541666666B66EE65041D7A3705DC52C5541C3F528EC67E65041EC51B85ECA2C55413D0AD78364E65041CDCCCC2CCD2C5541A4703D6A5FE6504185EB51E8D02C55417B14AE975CE650413D0AD763D32C55415C8FC25560E650413D0AD7B3D82C5541CDCCCCDC67E65041D7A3701DD32C5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000C3F528DC79E650413D0AD7E3C82C55417A0E5FBD7CE6504128831DD0C82C554105A2B3CA7EE65041C6E4043DC82C554114AE47917FE65041295C8F02C82C55419FF8E6017BE65041BEC455E9BD2C5541A0C3B1F27AE650413BC633F0BD2C55411C82E8867AE6504170A2BCE2BC2C554106A1241377E65041C58B7738BF2C5541301FF9E974E6504182B4ECCEC02C55411F59B41973E65041A9390F24C22C5541DA4978AF68E65041114129D5C92C5541975EA8AE64E65041769B8D09CD2C55413D0AD78364E65041CDCCCC2CCD2C55411EE9EF0A64E650414DC74885CD2C55410D20BF3B5FE650419A793611D12C55418BA9C8975CE65041EBA8BF63D32C5541DFEEED5360E65041EBC537AAD82C5541CDCCCCDC67E65041D7A3701DD32C5541F5EB664468E65041A84622D6D22C554148E17AC46EE65041CDCCCC5CCE2C55413333330376E650418FC2F518CA2C5541C3F528DC79E650413D0AD7E3C82C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189439 - 160711
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5282C52EB504114AE4741518D54416666668633EB50411F85EBB12F8D54410000001032EB5041CDCCCCAC318D544114AE474130EB504152B81E75348D544114AE47F14AEB5041F6285C1F548D54415C8FC2D54EEB50419A999949528D5441C3F5282C52EB504114AE4741518D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000CA35689645EB5041F7F83413588D5441A4703D5A46EB5041C3F5282C578D54410AD7A37047EB50418FC2F528568D54414EFB47B049EB50419D0218DA548D5441DB6547F14AEB504107F45B1F548D5441ED1B4E0549EB5041AF69A0D7518D5441CB71484130EB504189A01F75348D54413725ECB12FEB50413CA0EC41358D5441756567662EEB50411FA69869378D5441059F5C3F2CEB5041D918ECD1398D5441B48570FD44EB5041C6EEADC7588D5441CA35689645EB5041F7F83413588D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189439 - 330749
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5282C52EB504114AE4741518D54416666668633EB50411F85EBB12F8D54410000001032EB5041CDCCCCAC318D544114AE474130EB504152B81E75348D544114AE47F14AEB5041F6285C1F548D54415C8FC2D54EEB50419A999949528D5441C3F5282C52EB504114AE4741518D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000CA35689645EB5041F7F83413588D5441A4703D5A46EB5041C3F5282C578D54410AD7A37047EB50418FC2F528568D54414EFB47B049EB50419D0218DA548D5441DB6547F14AEB504107F45B1F548D5441ED1B4E0549EB5041AF69A0D7518D5441CB71484130EB504189A01F75348D54413725ECB12FEB50413CA0EC41358D5441756567662EEB50411FA69869378D5441059F5C3F2CEB5041D918ECD1398D5441B48570FD44EB5041C6EEADC7588D5441CA35689645EB5041F7F83413588D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>190729 - 3098863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AB435E55041E17A14BEE18F5441CDCCCC6C32E5504148E17A44DB8F5441AE47E19A17E5504152B81E55A68F5441713D0A1712E550418FC2F5B8AE8F5441EC51B81E11E5504114AE4701B08F54411F85EB010CE5504152B81EC5B68F54413D0AD7931DE55041A4703DAAD98F5441E17A14DE2BE55041C3F5280CF68F5441EC51B83E2DE550415C8FC2A5F38F5441CDCCCC1C30E550415C8FC295ED8F544148E17AB435E55041E17A14BEE18F5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000F138289F1CE55041284149C4D78F5441ADD26F0E23E55041B78EC7F2D38F5441D7CB5AD412E5504179E81995B48F54411114579B0DE550412F5240F2B98F5441F138289F1CE55041284149C4D78F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>190729 - 3453064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AB435E55041E17A14BEE18F5441CDCCCC6C32E5504148E17A44DB8F5441AE47E19A17E5504152B81E55A68F5441713D0A1712E550418FC2F5B8AE8F5441EC51B81E11E5504114AE4701B08F54411F85EB010CE5504152B81EC5B68F54413D0AD7931DE55041A4703DAAD98F5441E17A14DE2BE55041C3F5280CF68F5441EC51B83E2DE550415C8FC2A5F38F5441CDCCCC1C30E550415C8FC295ED8F544148E17AB435E55041E17A14BEE18F5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000F138289F1CE55041284149C4D78F5441ADD26F0E23E55041B78EC7F2D38F5441D7CB5AD412E5504179E81995B48F54411114579B0DE550412F5240F2B98F5441F138289F1CE55041284149C4D78F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 2916421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE1D0350C5625141A4FAF81DB15A544186B9883CB06251412CDB48CEB35A54417105C6BEA46251410D14FE4DB55A544110B2FA739A6251418AAF1EB4B65A5441D66D2E429362514176D5ECB3B75A5441B10394108B6251412A36E4E6B85A544168C7D3FA856251410925E3B0B95A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441F041495E7D625141D9782686E15A5441EAABA7B78762514137A80E51E05A5441330D9AC69A62514180BB4900DE5A5441C0561CAFB062514133D687CBDA5A5441AF0394A8BA62514195E0588CD95A5441DA9B6920C762514173EC901FD85A544105343F98D3625141D5F661E0D65A544156EB8752DC625141B3029A73D55A544149C3AA21E1625141150D6B34D45A5441E38D2E8BE762514155237488D15A544101B06F72E3625141EE9F4092C25A54410C20D3EDDD625141D3CDD287B25A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441AE1D0350C5625141A4FAF81DB15A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 2916437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 3801228
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 3802584
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE1D0350C5625141A4FAF81DB15A544186B9883CB06251412CDB48CEB35A54417105C6BEA46251410D14FE4DB55A544110B2FA739A6251418AAF1EB4B65A5441D66D2E429362514176D5ECB3B75A5441B10394108B6251412A36E4E6B85A544168C7D3FA856251410925E3B0B95A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441F041495E7D625141D9782686E15A5441EAABA7B78762514137A80E51E05A5441330D9AC69A62514180BB4900DE5A5441C0561CAFB062514133D687CBDA5A5441AF0394A8BA62514195E0588CD95A5441DA9B6920C762514173EC901FD85A544105343F98D3625141D5F661E0D65A544156EB8752DC625141B3029A73D55A544149C3AA21E1625141150D6B34D45A5441E38D2E8BE762514155237488D15A544101B06F72E3625141EE9F4092C25A54410C20D3EDDD625141D3CDD287B25A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441AE1D0350C5625141A4FAF81DB15A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191144 - 995717
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000001400000085EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D54417B14AEA7D36551410AD7A3C0815D544148E17AE4B365514152B81ED5815D544148E17A24B565514166666696705D5441AE47E15AB065514114AE47F1725D5441713D0A87AE6551418FC2F5F8735D544114AE4781AC6551410AD7A3D0755D5441666666A6AB6551413D0AD7A3795D54415C8FC275A6655141000000D08E5D5441A4703D7AAA6551417B14AE278F5D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D544166666676C76551415C8FC2D5955D5441000000C0C5655141333333C3A05D544133333313FC6551413D0AD7C3A05D5441D7A3701DFD65514152B81E459E5D5441666666F600665141666666D6955D544185EB51A80A665141A4703D7A815D544105000000A4703D9AAB655141A4703D6A8B5D54419A999989AA655141B81E85CB8C5D5441A4703D4AA9655141E17A14EE8B5D5441AE47E15AAA655141C3F5288C8A5D5441A4703D9AAB655141A4703D6A8B5D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000079C9BEE4B365514108E075D1815D5441DB817AA3B265514128BDA2EF875D5441242E5164B265514178D97C4B8C5D5441471D0628B2655141A63BA53D915D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D544166666676C76551415C8FC2D5955D5441000000C0C5655141333333C3A05D544133333313FC6551413D0AD7C3A05D5441D7A3701DFD65514152B81E459E5D5441666666F600665141666666D6955D544185EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D54417B14AEA7D36551410AD7A3C0815D544148E17AE4B365514152B81ED5815D544179C9BEE4B365514108E075D1815D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191144 - 3639031
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000001400000085EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D54417B14AEA7D36551410AD7A3C0815D544148E17AE4B365514152B81ED5815D544148E17A24B565514166666696705D5441AE47E15AB065514114AE47F1725D5441713D0A87AE6551418FC2F5F8735D544114AE4781AC6551410AD7A3D0755D5441666666A6AB6551413D0AD7A3795D54415C8FC275A6655141000000D08E5D5441A4703D7AAA6551417B14AE278F5D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D544166666676C76551415C8FC2D5955D5441000000C0C5655141333333C3A05D544133333313FC6551413D0AD7C3A05D5441D7A3701DFD65514152B81E459E5D5441666666F600665141666666D6955D544185EB51A80A665141A4703D7A815D544105000000A4703D9AAB655141A4703D6A8B5D54419A999989AA655141B81E85CB8C5D5441A4703D4AA9655141E17A14EE8B5D5441AE47E15AAA655141C3F5288C8A5D5441A4703D9AAB655141A4703D6A8B5D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000079C9BEE4B365514108E075D1815D5441DB817AA3B265514128BDA2EF875D5441242E5164B265514178D97C4B8C5D5441471D0628B2655141A63BA53D915D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D544166666676C76551415C8FC2D5955D5441000000C0C5655141333333C3A05D544133333313FC6551413D0AD7C3A05D5441D7A3701DFD65514152B81E459E5D5441666666F600665141666666D6955D544185EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D54417B14AEA7D36551410AD7A3C0815D544148E17AE4B365514152B81ED5815D544179C9BEE4B365514108E075D1815D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191269 - 48543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F558CF6351418FC2F508C15B5441EC51B84ED0635141295C8FE2C25B5441295C8FB2D2635141B81E857BC75B5441A4703D5AD563514185EB5198CC5B5441713D0AC7CF63514100000080D15B54419A999909D3635141CDCCCC5CD35B5441AE47E1AAD563514133333343D55B54411F85EB81D9635141CDCCCCBCD85B5441CDCCCC3CDC63514114AE47D1DB5B5441713D0A47DE635141F6285C8FDE5B54419A9999D9E1635141D7A3701DE45B544152B81EB5E4635141CDCCCCECE75B5441000000D0E663514133333343EA5B54419A999929EB635141A4703D0AED5B5441D7A3704DF663514114AE4741D95B544148E17A94F56351415C8FC2F5D85B544114AE4731F36351410AD7A320D75B54418FC2F5A8F16351413D0AD753D55B544152B81E75EF635141000000E0D15B544148E17A84EE63514166666666D05B54413D0AD763EA63514114AE4771CC5B544114AE4761E4635141E17A14BEC55B5441B81E85DBDD635141D7A3702DBD5B5441713D0AA7DC6351413D0AD7C3BC5B54418FC2F5C8DA63514100000090BC5B54417B14AEB7D86351419A9999F9BC5B5441E17A14CED5635141E17A14AEBD5B544152B81E05D3635141E17A141EBF5B54418FC2F558CF6351418FC2F508C15B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008EA01EF5DF6351414DF11A2CE15B54412D3B8809E0635141CD68D84BE15B5441A50ED998E06351414418B12AE25B54417E9102BBEF63514160A907A1D55B5441440E7530EF635141EBA2EC8BD45B54411A0DC628EF6351418ECE5392D45B5441C4B7F033EF635141AC53BFA3D45B544195B00ED9E2635141E2F55BF3DE5B544135E569CAE2635141CCEFF5E0DE5B54414EC456CAE26351418DE005E1DE5B54418EA01EF5DF6351414DF11A2CE15B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191269 - 84107
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F558CF6351418FC2F508C15B5441EC51B84ED0635141295C8FE2C25B5441295C8FB2D2635141B81E857BC75B5441A4703D5AD563514185EB5198CC5B5441713D0AC7CF63514100000080D15B54419A999909D3635141CDCCCC5CD35B5441AE47E1AAD563514133333343D55B54411F85EB81D9635141CDCCCCBCD85B5441CDCCCC3CDC63514114AE47D1DB5B5441713D0A47DE635141F6285C8FDE5B54419A9999D9E1635141D7A3701DE45B544152B81EB5E4635141CDCCCCECE75B5441000000D0E663514133333343EA5B54419A999929EB635141A4703D0AED5B5441D7A3704DF663514114AE4741D95B544148E17A94F56351415C8FC2F5D85B544114AE4731F36351410AD7A320D75B54418FC2F5A8F16351413D0AD753D55B544152B81E75EF635141000000E0D15B544148E17A84EE63514166666666D05B54413D0AD763EA63514114AE4771CC5B544114AE4761E4635141E17A14BEC55B5441B81E85DBDD635141D7A3702DBD5B5441713D0AA7DC6351413D0AD7C3BC5B54418FC2F5C8DA63514100000090BC5B54417B14AEB7D86351419A9999F9BC5B5441E17A14CED5635141E17A14AEBD5B544152B81E05D3635141E17A141EBF5B54418FC2F558CF6351418FC2F508C15B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008EA01EF5DF6351414DF11A2CE15B54412D3B8809E0635141CD68D84BE15B5441A50ED998E06351414418B12AE25B54417E9102BBEF63514160A907A1D55B5441440E7530EF635141EBA2EC8BD45B54411A0DC628EF6351418ECE5392D45B5441C4B7F033EF635141AC53BFA3D45B544195B00ED9E2635141E2F55BF3DE5B544135E569CAE2635141CCEFF5E0DE5B54414EC456CAE26351418DE005E1DE5B54418EA01EF5DF6351414DF11A2CE15B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191347 - 53315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006200000000000050BD61514114AE47C1DA5C5441C3F528CCB761514100000040D75C5441713D0A57B361514152B81E35D55C54411F85EB81B0615141D7A3700DD45C5441F6285C8FAE61514114AE4721D55C544148E17A24AC61514152B81E55D65C544166666696A9615141AE47E14AD65C5441AE47E16AA16151413D0AD793CD5C54418FC2F5889D6151415C8FC225C95C5441D7A3703D9861514114AE47C1C35C5441EC51B8EE94615141B81E85BBC05C5441C3F5280C92615141295C8FD2BD5C5441295C8FE28F61514152B81E25BA5C5441A4703D2A8E615141000000A0B35C5441F6285C3F88615141F6285C2FB55C54415C8FC2957F61514185EB5158A95C5441A4703DBA7D615141B81E851BA75C5441666666B67B61514100000010A65C5441E17A140E796151411F85EBD1A55C5441295C8FF26A61514114AE4741A75C5441C3F528EC69615141E17A149EA45C54410000006066615141AE47E16AA55C54416666667663615141CDCCCC8CAC5C54419A999949656151419A999949AF5C5441B81E859B656151417B14AEE7B55C544148E17A346761514152B81E45B65C54410AD7A31068615141000000C0C05C5441EC51B80E6861514114AE4751C85C5441F6285CCF65615141295C8F32CD5C5441000000C0646151419A999959D15C54415C8FC2D565615141AE47E12AD45C5441333333D367615141713D0A67DA5C5441B81E850B6B615141000000C0DE5C54413D0AD7436E61514166666636E25C5441D7A3702D73615141666666D6E55C544148E17AD478615141A4703D0AE75C5441713D0AD77C615141B81E855BEC5C544185EB51887F6151419A999919F05C5441EC51B8FE7B6151419A999919F85C544185EB5148796151417B14AE67FB5C544148E17AF478615141666666C6FD5C5441AE47E16A7E6151418FC2F5E8085D544148E17A2480615141A4703D9A0E5D54417B14AE47826151419A999939125D5441EC51B8DE85615141E17A14EE145D54418FC2F5C88861514152B81E45155D5441A4703D5A8B61514148E17A040F5D5441666666768F615141E17A14BE075D5441295C8F52936151410AD7A3D0085D5441E17A14DE96615141F6285C7F0C5D5441B81E85BB9D6151415C8FC2F5105D544100000050A26151419A9999C9125D5441333333E3A96151413D0AD763155D5441A4703DDAAD615141295C8FB2155D5441B81E85DBAE615141AE47E17A1C5D5441000000E0AB61514148E17AA41D5D5441C3F528FCB2615141000000E01A5D5441D7A370EDBA61514152B81EF5165D54410AD7A360BB615141295C8F32105D54410AD7A360BB6151418FC2F5080B5D54413D0AD7F3BA61514114AE47D1065D5441713D0A57B961514185EB5108FE5C5441295C8F22B9615141E17A14AEFB5C5441EC51B89EB96151410AD7A3E0F95C54419A999909BB61514166666696F85C5441B81E858BBB6151418FC2F508F75C5441C3F528DCB561514133333363F85C54418FC2F5E8B161514185EB51C8F85C5441B81E85CBAE615141AE47E1BAF75C544185EB51D8AA615141E17A14EEF55C54413D0AD763A661514166666676F35C54419A999999A061514166666696F05C544148E17A949E615141D7A370CDEF5C5441E17A148E9C615141713D0A97F05C5441666666B69761514185EB5168ED5C5441295C8F429461514152B81E95EA5C54418FC2F5F891615141295C8F52E65C5441295C8FF293615141AE47E1CAE15C54410AD7A380966151415C8FC225DF5C5441000000609961514100000020E05C5441000000309B615141C3F528FCDF5C5441CDCCCC1CA66151411F85EBB1E85C5441C3F528FCA861514185EB51D8EB5C5441E17A14AEA661514133333313EF5C5441C3F5285CA5615141CDCCCCECF05C5441B81E85EBA4615141A4703D8AF15C5441AE47E14AAC615141C3F5285CF55C54418FC2F5E8B1615141C3F5286CF75C54415C8FC2C5B561514148E17A64F75C5441AE47E16ABC61514100000030F55C5441B81E85BBBA6151411F85EB81F25C54415C8FC275B96151413D0AD763EF5C5441AE47E15ABC615141333333B3E65C54419A999949BE61514148E17A54E45C544148E17AF4BF61514185EB51E8E05C5441666666F6C061514114AE4701DE5C5441295C8FA2BF615141333333C3DC5C544100000050BD61514114AE47C1DA5C5441
+</a>
+
+<b>
+0106000000020000000103000000010000001A000000F9BC5ECFBA615141D86E64CBF85C5441C6839056BB61514191F3F4AAF75C5441BBACDC6ABB6151412F4FDD6CF75C544130F7C570BB6151412CFBC75AF75C54411A166573BB6151415CF2C252F75C5441E2665582BB615141A2EE0F25F75C5441786F5A99B96151416C2C7A7FF75C5441C3F528DCB561514133333363F85C54414736105DB5615141F3DFE86FF85C54411D2B59DFB3615141ADA6A7C3F85C54414BCF0F8CB3615141C4F403DBF85C5441CD278AF0B36151416F203D33FB5C54410B0FAE7CB4615141E710CEFFFD5C5441253B6A38B5615141A98F8590025D54413C6D83A9B5615141F7F524EE045D54410BEA6609B6615141629D7CD0075D5441CF27864CB66151419D900A50095D544141253C99B6615141CD44D4B20A5D544161E288EFB66151414F39070C0C5D54410AD7A360BB615141DF9EF2F60B5D54410AD7A360BB6151418FC2F5080B5D54413D0AD7F3BA61514114AE47D1065D5441713D0A57B961514185EB5108FE5C5441295C8F22B9615141E17A14AEFB5C5441EC51B89EB96151410AD7A3E0F95C5441F9BC5ECFBA615141D86E64CBF85C54410103000000010000000B0000002D904268B4615141E2CE3167F75C54415C8FC2C5B561514148E17A64F75C5441576EDAC7BA615141CC840BBBF55C54416B1C33A5BB615141F5909871F55C5441816BE088BA615141DD1D5766F25C54417944410EB8615141A53991E9F05C5441FDC8B401B4615141C13AD0F1F65C5441BCC0D3CDB3615141E7DF6468F75C544183400130B4615141B9A9A167F75C544157504741B46151411E517F67F75C54412D904268B4615141E2CE3167F75C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126070 - 427396
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000120000000AD7A3900CBE504114AE47313E465541EC51B88EFDBD5041B81E85DB4246554185EB5138ECBD5041E17A14DE48465541CDCCCC3CE6BD5041B81E85AB4A46554133333393E6BD5041EC51B83E4C4655410AD7A390E5BD5041CDCCCC1C514655417B14AED7E0BD5041F6285C1F59465541713D0A2701BE50417B14AEE74A465541D7A370CD1FBE504185EB51E8454655418FC2F5485BBE5041F6285CAF44465541B81E852B5ABE5041C3F5283C3F46554148E17A045ABE5041B81E852B3E4655419A99996951BE5041E17A145E3C46554185EB51F843BE5041666666A63A465541CDCCCC5C38BE5041CDCCCCDC394655410000000027BE5041E17A141E3A4655416666663617BE50417B14AE173C4655410AD7A3900CBE504114AE47313E465541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D3BEA17908BE504135403D643F465541789B9633FFBD5041F1A6B4EB41465541251364A0F4BD504166E2F13545465541641F8722E6BD5041AB07694D4A465541AB9690E7E5BD504179A4A4854C46554117BF8CE6F2BD5041E10D5EB9474655410194B49EFDBD5041E61C12FD43465541A43637FF06BE5041EEA4121741465541274E90FF0EBE50411D32C8B53E465541730CC6D319BE504173F0AACE3C46554176F1A70F26BE5041D43FA44C3B4655414AF4EA8334BE504111EC5CE53A4655410988854A40BE5041863ECC9F3B465541EFD09D514ABE5041B2459BC53C4655412FE3624852BE5041E3F280DE3D4655417FD762765ABE5041182108903F4655418D49BB735ABE50414A45807F3F465541928DACDA5ABE50417120435F3E465541B51E764B51BE5041DBB999E33B465541C88ABD4F4EBE50410FAC0E663B4655417874ADDB45BE5041242A52023A46554104A0E26838BE5041CA7D1B9039465541FB7F52E42EBE50416052E9C9394655416027314A26BE50411FD05F163A465541FCFA95A125BE5041FC78AD2A3A465541B14F025417BE5041DBB999E33B4655415C8CF1490FBE50416551C0A73D4655415AB9F8FC0CBE5041848725293E465541D3BEA17908BE504135403D643F465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128236 - 3174384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000EC51B89E35BC504148E17A44BB4B5541F6285C9F4BBC5041A4703D8AB64B55419A9999894CBC504185EB5168B54B5541EC51B84E4CBC5041295C8F02AB4B5541333333234CBC5041D7A370FDA04B554148E17AE43DBC504114AE4701AB4B5541E17A14EE2FBC5041D7A3707DB44B55413D0AD7D323BC5041AE47E13ABC4B55413D0AD7C31FBC5041C3F5283CBF4B55419A99990920BC5041A4703DEABF4B5541EC51B89E35BC504148E17A44BB4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000300C396D42BC5041802737D1A74B5541D1C2F6C13EBC5041639E9065AA4B5541EC00C4F942BC5041C7EA7FB6A94B55416F5D39914ABC50418FAF583EA84B55418717E5B04ABC50417940D985B44B554138B9E3B74ABC504134317C61B64B554108FCC64A4BBC50412FFB738BB64B554125CAFF724CBC5041072D3B63B54B55413D0D56034CBC50414633E022A14B55418A9F12044CBC504189965D22A14B5541898919034CBC50415EF2E2F4A04B5541973BC5B446BC50412295FCCEA44B5541300C396D42BC5041802737D1A74B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128236 - 5277894
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000EC51B89E35BC504148E17A44BB4B5541F6285C9F4BBC5041A4703D8AB64B55419A9999894CBC504185EB5168B54B5541EC51B84E4CBC5041295C8F02AB4B5541333333234CBC5041D7A370FDA04B554148E17AE43DBC504114AE4701AB4B5541E17A14EE2FBC5041D7A3707DB44B55413D0AD7D323BC5041AE47E13ABC4B55413D0AD7C31FBC5041C3F5283CBF4B55419A99990920BC5041A4703DEABF4B5541EC51B89E35BC504148E17A44BB4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000300C396D42BC5041802737D1A74B5541D1C2F6C13EBC5041639E9065AA4B5541EC00C4F942BC5041C7EA7FB6A94B55416F5D39914ABC50418FAF583EA84B55418717E5B04ABC50417940D985B44B554138B9E3B74ABC504134317C61B64B554108FCC64A4BBC50412FFB738BB64B554125CAFF724CBC5041072D3B63B54B55413D0D56034CBC50414633E022A14B55418A9F12044CBC504189965D22A14B5541898919034CBC50415EF2E2F4A04B5541973BC5B446BC50412295FCCEA44B5541300C396D42BC5041802737D1A74B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128277 - 56402
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000004000000010300000001000000050000005C8FC2C5D6BD5041713D0A27624A5541E17A142EB8BD504100000080654A5541666666D6B7BD504148E17AA4694A55415C8FC205D7BD50417B14AE17664A55415C8FC2C5D6BD5041713D0A27624A5541010300000001000000090000000AD7A370B9BD5041B81E85DB564A5541295C8F62B9BD5041D7A3704D574A5541EC51B86EB8BD5041EC51B80E624A554148E17A94D6BD504114AE47A15E4A554166666636D6BD5041C3F5284C574A554148E17AE4D5BD5041000000F0534A5541666666B6D5BD50411F85EB01514A55411F85EB61BDBD50411F85EBD1534A55410AD7A370B9BD5041B81E85DB564A554101030000000100000008000000000000A0B8BD504152B81E85574A5541666666F6B5BD5041000000B0594A5541A4703DAAB4BD5041D7A3700D5B4A5541EC51B84EB2BD5041B81E850B784A55415C8FC295AFBD50418FC2F598994A554133333343B3BD5041F6285C2F994A554100000030B6BD5041F6285C5F754A5541000000A0B8BD504152B81E85574A55410103000000010000000600000048E17A94B4BD50417B14AE67924A55419A999909B4BD50418FC2F518994A5541C3F5281CD9BD504100000030954A55418FC2F5A8D9BD50419A999989944A5541F6285C4FD9BD50418FC2F5588E4A554148E17A94B4BD50417B14AE67924A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D1EA0EA0B8BD5041A4551C09624A55417336B9F4C4BD5041FEE739A2604A554126034492D6BD5041D45119755E4A5541AC502F67D6BD5041668D88195B4A5541EE2F0321D6BD5041D439976B564A554148E17AE4D5BD5041000000F0534A5541F05965BBD5BD504164013E53514A554174503DB4D5BD504147518B05514A5541A6D4BA7BBDBD5041F9A506D6534A5541ABFE236FB9BD5041CDC6A6E7564A55415E16346EB9BD504185D83BEF564A55415916126EB9BD5041F5EF4EF0564A5541D1EA0EA0B8BD5041A4551C09624A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128767 - 383183
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000006000000C30000000AD7A380709D5041295C8F32D252554148E17A64719D5041333333B3C85255413D0AD753719D5041C3F5288CC7525541A4703D7A649D5041AE47E16AC55255417B14AE37679D5041295C8F92B65255418FC2F558749D50418FC2F5A8BA52554185EB5158829D5041F6285C0FBF52554152B81EB5849D504185EB5128B8525541666666A6869D50413D0AD7D3B1525541000000D08B9D5041C3F528ACA8525541D7A370FD949D5041A4703DAA975255417B14AE87999D504114AE472199525541666666869A9D5041D7A370CD965255413D0AD7939B9D5041A4703D3A97525541295C8FA2969D5041D7A3707DA3525541666666468E9D50413D0AD793B352554185EB51F88C9D5041AE47E1BAB7525541C3F5289C879D5041F6285C0FC9525541CDCCCC8C889D5041AE47E1EAC95255411F85EBB1A19D5041C3F5280CCB5255417B14AE07A39D5041CDCCCC4CCB5255417B14AE57A79D5041EC51B84EC05255417B14AEB7A79D50419A999959BF525541A4703DDA9F9D5041B81E850BBD525541B81E857BB19D5041666666269C52554133333363B09D50415C8FC2A5985255410AD7A3E0B39D5041D7A370AD975255418FC2F518BD9D50419A9999C98352554152B81E758E9D5041D7A3705D0F525541AE47E15A8D9D50418FC2F5E80E52554152B81E458C9D504114AE47410E525541F6285C6F8A9D5041EC51B80E0D525541AE47E1AA889D5041C3F5289C0B525541AE47E14A879D5041295C8F820A525541713D0A77859D50410AD7A3F0085255415C8FC295849D5041AE47E1FA07525541AE47E1DA839D5041F6285C0F075255419A999949839D5041F6285C1F065255413D0AD7A3829D504148E17AE404525541B81E85EB7F9D5041713D0A37FE5155411F85EBA1529D50410AD7A300EB515541C3F5284C5F9D50413D0AD713DC515541713D0A775F9D504152B81E35DB51554114AE4761639D504166666676C85155411F85EB41639D5041A4703DFAC1515541B81E85FB629D5041F6285CDFBE515541D7A3705D629D5041B81E85BBBA515541D7A3703D5D9D504185EB51A8B8515541295C8FE25C9D504100000010B4515541F6285C2F4A9D5041C3F5288CAF51554166666676359D5041C3F528CCAF515541EC51B8DE269D50413D0AD7E3B6515541333333A31A9D504148E17A84BA51554100000060179D5041EC51B8EEB95155413D0AD7C3139D5041EC51B86EB95155415C8FC2F50F9D5041C3F528ECB851554152B81EA50C9D50411F85EB71B8515541000000E0089D504114AE47F1B7515541333333C3049D50418FC2F548B751554114AE4791029D5041F6285CDFB6515541AE47E1CA039D5041D7A370DDAA5155417B14AE17029D5041713D0A77A051554166666676009D5041CDCCCCECA1515541F6285CBFFE9C504185EB51C8A251554152B81E25FB9C504100000020A3515541333333E3FA9C5041666666D6A1515541B81E853BFE9C5041666666D6A1515541333333F3FF9C5041295C8F52A15155413D0AD793019D50411F85EB019F515541E17A147E019D50411F85EB519B5155411F85EB51FE9C5041A4703DDA8D5155413D0AD733FA9C50416666669681515541333333E3F79C50410AD7A31075515541EC51B85EF49C5041E17A14BE69515541A4703D8AF49C50413D0AD72363515541A4703D9AF39C5041F6285C5F5E5155410AD7A370F19C50410AD7A3C058515541CDCCCC6CF09C5041CDCCCCAC585155419A9999D9EA9C5041CDCCCC1C6551554148E17A04E89C504166666676715155417B14AE87E59C50419A9999898B515541AE47E1BAE39C50417B14AE0794515541AE47E10AE09C50417B14AE27A451554185EB51C8DC9C5041D7A370EDA7515541CDCCCCFCBA9C50413D0AD7B3AB5155415C8FC245B99C504114AE47A1C05155417B14AED7B59C50417B14AEB7C35155415C8FC295B59C5041713D0A27CD515541AE47E15AC19C50410AD7A320D85155411F85EB21C79C50419A999939DA51554166666606CD9C504114AE47C1DC515541A4703DDACD9C504152B81E75DD515541F6285CDFCE9C50417B14AEF7DE515541E17A140ED39C50411F85EBC1E6515541CDCCCCECD49C504148E17AD4EA515541713D0AA7D69C5041E17A145EEF515541A4703D8AD89C5041B81E855BF45155418FC2F578D99C5041295C8F92F6515541EC51B86EDB9C504133333303FA51554114AE4721DC9C5041D7A370FDFA5155418FC2F518DD9C5041EC51B80EFD51554152B81EB5DD9C5041CDCCCC1CFE515541CDCCCC6CDE9C504185EB5178FF51554152B81E55DE9C5041CDCCCC8C0052554152B81EE5DD9C504185EB51B802525541B81E859BDD9C5041F6285CAF0452554166666656DD9C50413D0AD7030752554152B81EC5DC9C50419A99997909525541B81E855BDC9C504152B81EA50B52554100000030DC9C504148E17A240D525541A4703D4ADC9C5041000000A00E525541A4703D4ADC9C504152B81EF50F52554152B81E35DC9C50417B14AE771152554114AE47E1DB9C5041C3F5286C13525541D7A370BDDB9C5041C3F5283C1552554152B81EB5DB9C5041D7A3701D16525541E17A14DEDB9C504185EB5148175255410AD7A320E09C5041C3F5288C1B5255417B14AED7E19C504100000070205255413D0AD703E29C50410AD7A3C022525541D7A3703DDE9C5041713D0AD725525541AE47E1AADB9C50410AD7A3D02A52554114AE4771DF9C5041A4703DCA2F525541AE47E16ADB9C5041A4703D6A355255410AD7A320C49C50417B14AEC74352554148E17AE4A29C504148E17A944352554185EB51989B9C50413D0AD73341525541EC51B8FE9A9C504148E17A344452554148E17A64979C50418FC2F55846525541D7A3700D9A9C50415C8FC285495255418FC2F5389A9C5041D7A3708D4D525541333333C3929C50413333330352525541EC51B83E8F9C5041C3F5289C4C525541AE47E15A8A9C5041F6285C7F4E52554100000020889C50418FC2F5785352554166666626839C504166666696575255418FC2F5F8769C504152B81EF552525541666666566F9C504152B81E954E525541713D0AA76E9C5041A4703DAA48525541000000E0679C5041E17A142E49525541F6285CDF649C504148E17AC4375255410AD7A310579C504148E17A6433525541F6285CBF549C504152B81E65365255418FC2F558529C504148E17A1437525541CDCCCCDC529C504148E17A64335255411F85EB414C9C504148E17AB42F52554100000040439C5041D7A3705D35525541CDCCCC7C329C5041000000B033525541CDCCCCDC279C50411F85EB81355255418FC2F5581F9C504148E17AC437525541E17A14DE169C504114AE4781375255411F85EBA1129C5041EC51B81E38525541A4703DEA159C5041713D0A07415255411F85EB611B9C5041EC51B84E495255411F85EBF1219C5041EC51B8BE51525541A4703D5A289C5041713D0A1759525541A4703D5A2D9C5041713D0A375C525541A4703DFA329C5041713D0A9760525541A4703D0A379C5041EC51B8EE62525541A4703D7A3F9C5041EC51B83E635255411F85EB214C9C5041EC51B8AE61525541A4703D3A529C5041EC51B8AE615255411F85EBA1589C5041EC51B8FE6B525541713D0AC75E9C5041713D0A477B525541713D0AE7769C5041E17A148E6E52554185EB5198889C5041D7A3700D66525541666666D6959C504152B81E456C525541D7A3702DAB9C50418FC2F5686F525541D7A3702DBD9C5041000000D0715255418FC2F518CF9C5041C3F5281C75525541B81E853BDD9C5041C3F5287C78525541CDCCCC0CE99C504152B81EC579525541A4703D0AE99C504185EB51E87C525541AE47E15AFF9C5041D7A370BD8B52554114AE4791099D5041F6285CFF925255411F85EB01169D5041EC51B80E84525541A4703DEA239D5041EC51B8FE89525541A4703D3A339D5041713D0AE78D525541A4703D1A359D5041EC51B8CE8C5255411F85EBE1499D5041713D0A3793525541A4703DDA4C9D5041EC51B8DEA452554185EB5138469D5041713D0AB7B3525541D7A370BD299D5041AE47E1CAB35255415C8FC2C52B9D50410AD7A320B6525541C3F5284C3B9D504152B81EF5C95255418FC2F528409D50411F85EBB1D0525541A4703DFA4A9D5041713D0AC7CB5255411F85EB114C9D5041EC51B8FED9525541713D0A57409D5041713D0AF7DC525541D7A3706D409D5041A4703DEAE25255411F85EB21469D5041713D0A27DF5255415C8FC2A55A9D50417B14AE07DC5255410AD7A3305B9D5041AE47E1BACF5255411F85EB11659D5041E17A142ED25255410AD7A380709D5041295C8F32D2525541070000000AD7A3C0839D5041000000106C525541A4703D8A889D5041EC51B8AE60525541666666D6939D50418FC2F51863525541295C8F52929D5041713D0A376F525541F6285C6F8E9D50413333335372525541D7A3708D859D50413D0AD7D36F5255410AD7A3C0839D5041000000106C52554108000000A4703DCAA29D5041A4703D2A75525541F6285C0F9F9D5041000000C074525541C3F528CC9F9D504148E17A246E525541C3F5282CA39D504152B81E856E52554114AE47E1AF9D5041000000F06F52554148E17A24AF9D5041AE47E18A76525541E17A14EEA89D50419A9999D975525541A4703DCAA29D5041A4703D2A75525541080000007B14AE67B19D5041713D0AC78E5255413D0AD793B39D5041666666A687525541A4703D1AB69D50410AD7A3D07C525541A4703D2AB99D50411F85EBE17D525541D7A370ADB89D504148E17A94835255418FC2F5C8B69D50410AD7A39089525541F6285C7FB49D50415C8FC2F58E5255417B14AE67B19D5041713D0AC78E525541060000005C8FC2F5E99C5041B81E85BB59525541B81E859BE89C5041E17A140E59525541295C8F92E89C50415C8FC2F556525541666666D6EA9C5041F6285CCF55525541EC51B8AEEB9C5041B81E85AB575255415C8FC2F5E99C5041B81E85BB595255410A000000295C8F82DF9C50415C8FC2155B525541666666B6DF9C5041666666D65E525541AE47E1DADD9C504152B81ED560525541EC51B8FEDB9C504148E17A245F5255410AD7A370DA9C5041EC51B84E5A52554148E17AA4DA9C50411F85EB015852554100000020DE9C504100000070555255410AD7A3C0E49C5041295C8F72585255417B14AE77E39C5041CDCCCC9C5A525541295C8F82DF9C50415C8FC2155B525541
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000DBDA0C32DC9C50412883E55334525541BBFEF06BDB9C5041CFB6C16835525541D6323E5CF19C5041C423B36437525541487AA617F49C5041B361E8C527525541E817446EF49C50413522DCE025525541895A5CB3F49C5041479D6F4F23525541A01A2D3DF79C50411ECFFC1E11525541ECC6D807F99C5041204CA127065255413D37E35DFB9C50413F384040F951554117F863AAFE9C5041B49786BAE5515541E9948DCCFF9C50416FB9DB18DF51554105A45C11019D504186849AE0CC51554177158EFF019D50414648B89EBC515541C3F5287C029D5041000000B0B7515541AE87E9E2FA9C50413ABCB346B6515541D975D466F59C5041DF2BC080B45155411AD93AFDF09C504197A20386B2515541C3F528BCED9C5041CDCCCC5CB05155417B14AE17EB9C50417B14AE17AE515541AE47E1EAE99C50411F85EB11AC5155410AD7A330E99C5041D7A3701DAA51554114AE47D1E89C5041713D0A77A8515541B81E85BBE89C504133333303A7515541295C8FC2E89C50417B14AED7A5515541F6285C0FE99C504148E17AF4A35155419A999989E99C504166666686A251554185EB51D8EA9C5041713D0A27A1515541AE47E17AED9C5041CDCCCC4C9F515541B2A81DE8F09C50410EA7445E9D515541655BC02CF39C5041CF993A419C515541CDCCCC5CF69C50419A9999699C515541D7A3701DFA9C5041000000009C51554126104264FE9C5041908C30249B5155411F85EB21FF9C504114AE47A19A515541C3F5284C009D50419A999929995155413E5E44BC009D50413A692B1B985155411F85EB51FE9C5041A4703DDA8D5155412BD4E224FA9C5041025512BD81515541333333E3F79C50410AD7A31075515541CD005954F49C5041AE1C90DC69515541A22D4088F49C50416474805D635155411644B0D6F39C5041A8C713C261515541C9CCC547F39C50416CFFF16B60515541292F28F1F29C50417AA975385F515541272AE384F29C50416CD655D55D515541EA61C12EF19C50417506064459515541CECEBBFBF09C5041D7B1B6B758515541CDCCCC6CF09C5041CDCCCCAC5851554167DCCAE2EA9C50418F5610296551554148E17A04E89C504166666676715155415E65CCFFE79C50411E82B0E97151554105704E8EE69C5041F1D12814815155418AC37E9BE59C50410D424C4E8B5155410004897EE59C50412EDFBEB48B5155412F338BD5E39C5041FBB2D3019451554114DB4F69E09C50410D51E8E4A2515541AE47E10AE09C50417B14AE27A451554185EB51C8DC9C5041D7A370EDA75155411A0DA612D89C50410FF41D74A85155416754AEFABC9C5041D782E27AAB515541CDCCCCFCBA9C50413D0AD7B3AB5155413EE30AECB09C5041B33144D3A35155411F6F8985B19C5041E8514CFDA851554154F625ADB19C50417B2ACA94AB5155415CF0F754B59C504105EF737EB05155417AD1EA4DB79C504199C8BB35B8515541E7670F47B99C50414256E047BA5155415C8FC245B99C504114AE47A1C05155417B14AED7B59C50417B14AEB7C35155419257EBE1B19C5041725FFB69CC515541AE47E15AC19C50410AD7A320D85155411F85EB21C79C50419A999939DA51554166666606CD9C504114AE47C1DC515541A4703DDACD9C504152B81E75DD515541F6285CDFCE9C50417B14AEF7DE515541E17A140ED39C50411F85EBC1E6515541CDCCCCECD49C504148E17AD4EA515541713D0AA7D69C5041E17A145EEF515541A4703D8AD89C5041B81E855BF45155418FC2F578D99C5041295C8F92F6515541EC51B86EDB9C504133333303FA51554114AE4721DC9C5041D7A370FDFA5155418FC2F518DD9C5041EC51B80EFD51554152B81EB5DD9C5041CDCCCC1CFE515541CDCCCC6CDE9C504185EB5178FF51554100EA2179DE9C504187D9518100525541A8C772FADD9C50416A2BBA9B02525541B81E859BDD9C5041F6285CAF04525541F474A666DD9C50410030C5FA0652554152B81EC5DC9C50419A9999790952554179C8D673DC9C5041EB5DB6A30B52554100000030DC9C504148E17A240D525541A4703D4ADC9C5041000000A00E525541A4703D4ADC9C504152B81EF50F52554152B81E35DC9C50417B14AE771152554114AE47E1DB9C5041C3F5286C13525541D7A370BDDB9C5041C3F5283C1552554152B81EB5DB9C5041D7A3701D16525541E17A14DEDB9C504185EB5148175255410AD7A320E09C5041C3F5288C1B5255417B14AED7E19C504100000070205255413D0AD703E29C50410AD7A3C022525541D7A3703DDE9C5041713D0AD725525541AE47E1AADB9C50410AD7A3D02A525541AB3CA6FDDB9C5041FD5BB83D2B52554114AE4771DF9C5041A4703DCA2F525541DBDA0C32DC9C50412883E55334525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129848 - 1630647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D475541295C8F6290BE50415C8FC26564475541CDCCCC1C9CBE504185EB51F858475541C3F5280CA3BE50419A99992952475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000243D93C3A2BE5041C3AB780F51475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D47554104D39F2290BE50417EECFB6C63475541ECC2660790BE504179B7C1F8624755413CE1481290BE5041B21A5AEE62475541ECC2660790BE5041C4AF019A62475541B092AA7190BE5041837383366247554141EF362892BE5041128DA1EF60475541243D93C3A2BE5041C3AB780F51475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129848 - 5272592
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D475541295C8F6290BE50415C8FC26564475541CDCCCC1C9CBE504185EB51F858475541C3F5280CA3BE50419A99992952475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000243D93C3A2BE5041C3AB780F51475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D47554104D39F2290BE50417EECFB6C63475541ECC2660790BE504179B7C1F8624755413CE1481290BE5041B21A5AEE62475541ECC2660790BE5041C4AF019A62475541B092AA7190BE5041837383366247554141EF362892BE5041128DA1EF60475541243D93C3A2BE5041C3AB780F51475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 1630222
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001C6EC99796BE504152CBB360554855411C3B9C2295BE50415DB4981B3B485541D4049A3D95BE5041B851451D3B485541C9FD4A2095BE5041E53CB2163B48554152B81E1594BE5041AE47E10A3B48554154F1FC7294BE5041C8A6C9D74048554125A0C1AC94BE50419CD8018D434855417810402496BE50416DB8FEFC58485541CB80BE9B97BE5041401B6FE870485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855414D4278D998BE5041DF4CE73D784855411C6EC99796BE504152CBB36055485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 3172855
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D3049A3D95BE5041B851451D3B4855411C3B9C2295BE50415DB4981B3B4855410693135D98BE50410AEC06BC704855414D4278D998BE5041DF4CE73D78485541143AB9D398BE50410BB1DF6E784855414D4278D998BE5041EB0153CE784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B485541D3049A3D95BE5041B851451D3B485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 3562421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001C6EC99796BE504152CBB360554855411C3B9C2295BE50415DB4981B3B485541D4049A3D95BE5041B851451D3B485541C9FD4A2095BE5041E53CB2163B48554152B81E1594BE5041AE47E10A3B48554154F1FC7294BE5041C8A6C9D74048554125A0C1AC94BE50419CD8018D434855417810402496BE50416DB8FEFC58485541CB80BE9B97BE5041401B6FE870485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855414D4278D998BE5041DF4CE73D784855411C6EC99796BE504152CBB36055485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 3562424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D3049A3D95BE5041B851451D3B4855411C3B9C2295BE50415DB4981B3B4855410693135D98BE50410AEC06BC704855414D4278D998BE5041DF4CE73D78485541143AB9D398BE50410BB1DF6E784855414D4278D998BE5041EB0153CE784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B485541D3049A3D95BE5041B851451D3B485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>414 - 2975038
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE4721856850411F85EB914E3255410AD7A300886850413D0AD7933E32554185EB51A88A6850410AD7A3D02F325541AE47E15A7F685041A4703DDA32325541295C8F0278685041C3F528FC343255418FC2F5A8616850419A9999793B325541C3F5284C5E685041000000703C3255415C8FC2C559685041000000A05532554114AE47D154685041E17A142E71325541A4703D3A6268504114AE47B1683255415C8FC25570685041295C8FB25F3255419A9999297268504185EB51885E325541713D0A778268504114AE47615D32554114AE4721856850411F85EB914E325541
+</a>
+
+<b>
+010600000001000000010300000001000000070000002136520C83685041ED1728DC31325541315311AF7F685041110EE2E440325541FF87F7F080685041E36B3377413255413C4C442287685041AC2410C3303255419BC2C211876850412CBD7FC730325541DED34519836850410E09ADD8313255412136520C83685041ED1728DC31325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>414 - 3654744
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE4721856850411F85EB914E3255410AD7A300886850413D0AD7933E32554185EB51A88A6850410AD7A3D02F325541AE47E15A7F685041A4703DDA32325541295C8F0278685041C3F528FC343255418FC2F5A8616850419A9999793B325541C3F5284C5E685041000000703C3255415C8FC2C559685041000000A05532554114AE47D154685041E17A142E71325541A4703D3A6268504114AE47B1683255415C8FC25570685041295C8FB25F3255419A9999297268504185EB51885E325541713D0A778268504114AE47615D32554114AE4721856850411F85EB914E325541
+</a>
+
+<b>
+010600000001000000010300000001000000070000002136520C83685041ED1728DC31325541315311AF7F685041110EE2E440325541FF87F7F080685041E36B3377413255413C4C442287685041AC2410C3303255419BC2C211876850412CBD7FC730325541DED34519836850410E09ADD8313255412136520C83685041ED1728DC31325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880 - 2975626
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000E17A147E576950413D0AD7D34A2C55413D0AD7531E695041C3F5282C5B2C554114AE47311F69504152B81E955E2C554133333303246950417B14AE57672C5541713D0A6725695041E17A14BE672C55411F85EBF138695041F6285CAF5D2C5541333333C3486950413D0AD783562C5541C3F5281C586950413D0AD7834F2C55418FC2F5A858695041713D0A274E2C5541E17A147E576950413D0AD7D34A2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000005F9A1A8F22695041C9216CB3642C55411A94BBFA43695041BD4B3F65552C554128356DCA42695041377CEEA6532C5541E48884C73F695041CAECF034542C5541B7156C3E21695041B11F874F622C55415F9A1A8F22695041C9216CB3642C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880 - 3659069
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000E17A147E576950413D0AD7D34A2C55413D0AD7531E695041C3F5282C5B2C554114AE47311F69504152B81E955E2C554133333303246950417B14AE57672C5541713D0A6725695041E17A14BE672C55411F85EBF138695041F6285CAF5D2C5541333333C3486950413D0AD783562C5541C3F5281C586950413D0AD7834F2C55418FC2F5A858695041713D0A274E2C5541E17A147E576950413D0AD7D34A2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000005F9A1A8F22695041C9216CB3642C55411A94BBFA43695041BD4B3F65552C554128356DCA42695041377CEEA6532C5541E48884C73F695041CAECF034542C5541B7156C3E21695041B11F874F622C55415F9A1A8F22695041C9216CB3642C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4283 - 3125175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703DBAFC7350418FC2F5A8DFFF5441CDCCCC7CFD7350413D0AD7B3DAFF54417B14AE970174504100000090DBFF544114AE4731047450410AD7A390D5FF5441B81E856B0674504114AE4761D0FF54410AD7A3200874504166666656CDFF54419A9999090B7450417B14AEA7C9FF54417B14AEB70E7450410AD7A360C5FF54418FC2F5681274504133333343C1FF5441F6285C0F1674504114AE4771BDFF5441AE47E18A16745041000000F0BCFF544185EB51480A745041D7A3706DB2FF5441A4703D1A03745041EC51B8DEC0FF544152B81EC50174504166666626C3FF5441D7A3705DFD735041EC51B80ECCFF5441F6285C7FF573504166666656D7FF5441AE47E11AF0735041D7A3701DE1FF544133333323F87350411F85EB41E3FF54413D0AD753F8735041AE47E1FAECFF5441C3F5287CF8735041D7A370DDEDFF5441F6285C4FFB7350410AD7A3C0EDFF5441C3F5288CFB735041295C8F62EBFF5441B81E85DBFB73504114AE4751E8FF54410AD7A330FC7350415C8FC2F5E4FF544133333373FC735041E17A146EE2FF5441A4703DBAFC7350418FC2F5A8DFFF5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009A9999090B7450417B14AEA7C9FF54410AD7A3200874504166666656CDFF5441B81E856B0674504114AE4761D0FF544114AE4731047450410AD7A390D5FF54417B14AE970174504100000090DBFF5441CDCCCC7CFD7350413D0AD7B3DAFF5441024E4C8BFC7350417D96887DE1FF54411F40EDC2FB7350412753A244E9FF54411FE76A38FB7350413E8705A3EEFF544185EB51F8FA735041F6285C1FF1FF5441B81E85DBFA735041E17A145EF3FF5441F6285CCFFA735041EC51B84EF4FF544114AE47C1FA73504148E17A84F6FF544185EB51B8FA735041713D0AF7F7FF54413D0AD773FC735041F6285C7FFBFF54419A9999C9FB7350415C8FC255FFFF54419A999969FD735041EC51B80E04005541EC51B85EFE7350417B14AEF707005541000000A0FF7350419A9999190C005541B81E859BFF7350415C8FC22510005541B81E85EBFF7350416666669614005541713D0A3700745041E17A143E1700554148E17A54FF7350415C8FC2251D0055411F85EBA1FD735041D7A3709D20005541F6285CBFFC735041F6285C8F25005541F6285CBFFC735041713D0A072900554152B81EE5FC7350418FC2F5582C005541C3F5287CFD7350416666669631005541AE47E1DAFD735041666666E63600554148E17A44FD73504185EB51683B005541295C8F5209745041F6285C7F36005541333333C325745041D7A370CD2A0055411F85EB512674504152B81E952A005541B81E85BB26745041B81E856B2A005541AE47E19A26745041EC51B81E2800554152B81EB526745041295C8FC225005541C3F5281C277450415C8FC275220055419A99993927745041EC51B82E21005541713D0AB7287450411F85EBA11C00554114AE47B12B74504114AE4791160055417B14AE17327450410AD7A39009005541C3F5289C32745041B81E85EB08005541C3F5287C34745041E17A144E05005541295C8FD235745041F6285CCF0200554114AE47013774504114AE477100005541666666063974504152B81EE5FCFF5441F6285CDF3A74504148E17AA4FAFF5441CDCCCC9C3C745041A4703D3AF9FF54419A9999393F74504148E17A74F7FF544114AE47F13E7450413D0AD7F3F6FF54418FC2F5A83074504148E17A44E9FF5441EC51B85E3B74504148E17A14DDFF5441A4703D8A3B745041333333E3DCFF5441295C8FD22D745041D7A370DDD0FF5441666666461B745041F6285CFFC0FF5441AE47E18A16745041000000F0BCFF5441F6285C0F1674504114AE4771BDFF54418FC2F5681274504133333343C1FF54417B14AEB70E7450410AD7A360C5FF54419A9999090B7450417B14AEA7C9FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4283 - 5311234
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703DBAFC7350418FC2F5A8DFFF5441CDCCCC7CFD7350413D0AD7B3DAFF54417B14AE970174504100000090DBFF544114AE4731047450410AD7A390D5FF5441B81E856B0674504114AE4761D0FF54410AD7A3200874504166666656CDFF54419A9999090B7450417B14AEA7C9FF54417B14AEB70E7450410AD7A360C5FF54418FC2F5681274504133333343C1FF5441F6285C0F1674504114AE4771BDFF5441AE47E18A16745041000000F0BCFF544185EB51480A745041D7A3706DB2FF5441A4703D1A03745041EC51B8DEC0FF544152B81EC50174504166666626C3FF5441D7A3705DFD735041EC51B80ECCFF5441F6285C7FF573504166666656D7FF5441AE47E11AF0735041D7A3701DE1FF544133333323F87350411F85EB41E3FF54413D0AD753F8735041AE47E1FAECFF5441C3F5287CF8735041D7A370DDEDFF5441F6285C4FFB7350410AD7A3C0EDFF5441C3F5288CFB735041295C8F62EBFF5441B81E85DBFB73504114AE4751E8FF54410AD7A330FC7350415C8FC2F5E4FF544133333373FC735041E17A146EE2FF5441A4703DBAFC7350418FC2F5A8DFFF5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009A9999090B7450417B14AEA7C9FF54410AD7A3200874504166666656CDFF5441B81E856B0674504114AE4761D0FF544114AE4731047450410AD7A390D5FF54417B14AE970174504100000090DBFF5441CDCCCC7CFD7350413D0AD7B3DAFF5441024E4C8BFC7350417D96887DE1FF54411F40EDC2FB7350412753A244E9FF54411FE76A38FB7350413E8705A3EEFF544185EB51F8FA735041F6285C1FF1FF5441B81E85DBFA735041E17A145EF3FF5441F6285CCFFA735041EC51B84EF4FF544114AE47C1FA73504148E17A84F6FF544185EB51B8FA735041713D0AF7F7FF54413D0AD773FC735041F6285C7FFBFF54419A9999C9FB7350415C8FC255FFFF54419A999969FD735041EC51B80E04005541EC51B85EFE7350417B14AEF707005541000000A0FF7350419A9999190C005541B81E859BFF7350415C8FC22510005541B81E85EBFF7350416666669614005541713D0A3700745041E17A143E1700554148E17A54FF7350415C8FC2251D0055411F85EBA1FD735041D7A3709D20005541F6285CBFFC735041F6285C8F25005541F6285CBFFC735041713D0A072900554152B81EE5FC7350418FC2F5582C005541C3F5287CFD7350416666669631005541AE47E1DAFD735041666666E63600554148E17A44FD73504185EB51683B005541295C8F5209745041F6285C7F36005541333333C325745041D7A370CD2A0055411F85EB512674504152B81E952A005541B81E85BB26745041B81E856B2A005541AE47E19A26745041EC51B81E2800554152B81EB526745041295C8FC225005541C3F5281C277450415C8FC275220055419A99993927745041EC51B82E21005541713D0AB7287450411F85EBA11C00554114AE47B12B74504114AE4791160055417B14AE17327450410AD7A39009005541C3F5289C32745041B81E85EB08005541C3F5287C34745041E17A144E05005541295C8FD235745041F6285CCF0200554114AE47013774504114AE477100005541666666063974504152B81EE5FCFF5441F6285CDF3A74504148E17AA4FAFF5441CDCCCC9C3C745041A4703D3AF9FF54419A9999393F74504148E17A74F7FF544114AE47F13E7450413D0AD7F3F6FF54418FC2F5A83074504148E17A44E9FF5441EC51B85E3B74504148E17A14DDFF5441A4703D8A3B745041333333E3DCFF5441295C8FD22D745041D7A370DDD0FF5441666666461B745041F6285CFFC0FF5441AE47E18A16745041000000F0BCFF5441F6285C0F1674504114AE4771BDFF54418FC2F5681274504133333343C1FF54417B14AEB70E7450410AD7A360C5FF54419A9999090B7450417B14AEA7C9FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4291 - 1686462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000200000015000000E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA045541A4703D9A506450418FC2F588D70455410AD7A3804C6450418FC2F5C8E2045541666666E64464504152B81E35E004554114AE4711396450418FC2F548DC04554185EB51382B64504148E17A2403055541E17A149E3E645041A4703DBA090555415C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD04554152B81EC56864504148E17A74D30455410AD7A3C063645041C3F5289CD20455411F85EB41646450410AD7A380D0045541A4703D9A646450419A9999E9CE0455418FC2F5A864645041E17A14BECD0455413D0AD7036364504133333393CD045541E17A144E61645041A4703D7ACD0455410E000000666666B658645041D7A3700DE8045541713D0AD75A645041713D0A57E8045541B81E85EB5B645041C3F5287CF0045541EC51B83E5864504133333393FA045541AE47E18A55645041A4703DAAFC04554148E17AB453645041295C8F22FD045541000000C0506450418FC2F528FC045541D7A370CD526450419A999949F60455417B14AE275264504166666606F5045541CDCCCC8C52645041B81E851BF2045541295C8FE253645041E17A146EEE04554133333343566450415C8FC295EB045541A4703D6A57645041CDCCCCACE9045541666666B658645041D7A3700DE8045541
+</a>
+
+<b>
+010600000001000000010300000001000000190000005C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD04554152B81EC56864504148E17A74D30455410AD7A3C063645041C3F5289CD20455411F85EB41646450410AD7A380D0045541A4703D9A646450419A9999E9CE0455418FC2F5A864645041E17A14BECD0455413D0AD7036364504133333393CD045541E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA04554179A816F356645041510C4472EA045541A4703D6A57645041CDCCCCACE9045541666666B658645041D7A3700DE8045541713D0AD75A645041713D0A57E8045541B81E85EB5B645041C3F5287CF0045541EC51B83E5864504133333393FA045541AE47E18A55645041A4703DAAFC04554148E17AB453645041295C8F22FD045541B91A1F0052645041D2790496FC045541020EB0A15064504100A37131FC0455415C8FC2654A645041A4703DBA0D055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4291 - 3402280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000200000015000000E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA045541A4703D9A506450418FC2F588D70455410AD7A3804C6450418FC2F5C8E2045541666666E64464504152B81E35E004554114AE4711396450418FC2F548DC04554185EB51382B64504148E17A2403055541E17A149E3E645041A4703DBA090555415C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD04554152B81EC56864504148E17A74D30455410AD7A3C063645041C3F5289CD20455411F85EB41646450410AD7A380D0045541A4703D9A646450419A9999E9CE0455418FC2F5A864645041E17A14BECD0455413D0AD7036364504133333393CD045541E17A144E61645041A4703D7ACD0455410E000000666666B658645041D7A3700DE8045541713D0AD75A645041713D0A57E8045541B81E85EB5B645041C3F5287CF0045541EC51B83E5864504133333393FA045541AE47E18A55645041A4703DAAFC04554148E17AB453645041295C8F22FD045541000000C0506450418FC2F528FC045541D7A370CD526450419A999949F60455417B14AE275264504166666606F5045541CDCCCC8C52645041B81E851BF2045541295C8FE253645041E17A146EEE04554133333343566450415C8FC295EB045541A4703D6A57645041CDCCCCACE9045541666666B658645041D7A3700DE8045541
+</a>
+
+<b>
+010600000001000000010300000001000000190000005C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD04554152B81EC56864504148E17A74D30455410AD7A3C063645041C3F5289CD20455411F85EB41646450410AD7A380D0045541A4703D9A646450419A9999E9CE0455418FC2F5A864645041E17A14BECD0455413D0AD7036364504133333393CD045541E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA04554179A816F356645041510C4472EA045541A4703D6A57645041CDCCCCACE9045541666666B658645041D7A3700DE8045541713D0AD75A645041713D0A57E8045541B81E85EB5B645041C3F5287CF0045541EC51B83E5864504133333393FA045541AE47E18A55645041A4703DAAFC04554148E17AB453645041295C8F22FD045541B91A1F0052645041D2790496FC045541020EB0A15064504100A37131FC0455415C8FC2654A645041A4703DBA0D055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35801 - 2959918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F5285C608C5041C3F5284C76065541EC51B8BE528C5041F6285CEF7D0655411F85EB81528C5041333333337F06554166666636588C5041A4703D2A86065541333333D35F8C5041C3F5288C8B06554148E17AB4608C5041B81E852B8C065541EC51B8CE5F8C504152B81E758F06554114AE4771608C5041B81E85DB900655417B14AE57688C5041A4703DAA9406554100000030768C5041A4703D4A9A0655410AD7A370778C504185EB51B899065541EC51B8DE7C8C50410AD7A3108A0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F50879065541EC51B89E6F8C5041713D0AB76E06554114AE47E16D8C504152B81EB56E065541C3F5285C608C5041C3F5284C76065541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C2B3BF19748C504156B0EBB596065541737BD6F0758C50411CEB00539706554137B24608788C504109F12403980655410D3CEB27788C504175A0EAA79706554174915E5F7C8C5041408DCC7F8B06554127327A33818C50417F8C88957D0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F508790655415AB36D80788C5041A7B22DC673065541EC51B89E6F8C5041713D0AB76E06554114AE47E16D8C504152B81EB56E065541EA044C125E8C50413A98CE94770655413C7459B2548C5041CB3716D77C065541EC51B8BE528C5041F6285CEF7D0655411F85EB81528C5041333333337F0655414BB7C701568C5041EA37EB788306554166666636588C5041A4703D2A86065541DF0192405C8C50414D157605890655411BE0D6A45F8C50415E55616B8B06554148E17AB4608C5041B81E852B8C0655417715E47A608C50416D8C56F28C0655411F49D740658C504173A75D8D8F065541EABAFA13678C5041F8095D8C9006554191C47261688C5041D8056542910655410FE865916A8C504123260E74920655416F6A5006718C50415712004E9506554185B6B108738C50418FE91C3996065541529E31C7738C5041B3BA2F9096065541C2B3BF19748C504156B0EBB596065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35801 - 3620000
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F5285C608C5041C3F5284C76065541EC51B8BE528C5041F6285CEF7D0655411F85EB81528C5041333333337F06554166666636588C5041A4703D2A86065541333333D35F8C5041C3F5288C8B06554148E17AB4608C5041B81E852B8C065541EC51B8CE5F8C504152B81E758F06554114AE4771608C5041B81E85DB900655417B14AE57688C5041A4703DAA9406554100000030768C5041A4703D4A9A0655410AD7A370778C504185EB51B899065541EC51B8DE7C8C50410AD7A3108A0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F50879065541EC51B89E6F8C5041713D0AB76E06554114AE47E16D8C504152B81EB56E065541C3F5285C608C5041C3F5284C76065541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C2B3BF19748C504156B0EBB596065541737BD6F0758C50411CEB00539706554137B24608788C504109F12403980655410D3CEB27788C504175A0EAA79706554174915E5F7C8C5041408DCC7F8B06554127327A33818C50417F8C88957D0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F508790655415AB36D80788C5041A7B22DC673065541EC51B89E6F8C5041713D0AB76E06554114AE47E16D8C504152B81EB56E065541EA044C125E8C50413A98CE94770655413C7459B2548C5041CB3716D77C065541EC51B8BE528C5041F6285CEF7D0655411F85EB81528C5041333333337F0655414BB7C701568C5041EA37EB788306554166666636588C5041A4703D2A86065541DF0192405C8C50414D157605890655411BE0D6A45F8C50415E55616B8B06554148E17AB4608C5041B81E852B8C0655417715E47A608C50416D8C56F28C0655411F49D740658C504173A75D8D8F065541EABAFA13678C5041F8095D8C9006554191C47261688C5041D8056542910655410FE865916A8C504123260E74920655416F6A5006718C50415712004E9506554185B6B108738C50418FE91C3996065541529E31C7738C5041B3BA2F9096065541C2B3BF19748C504156B0EBB596065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35849 - 3106543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000AE47E16A308E50417B14AE17C60855415C8FC275308E50415C8FC2E5CA0855419A999979308E5041CDCCCC2CCD08554152B81E85308E50411F85EB11D3085541D7A3708D308E504185EB5148D6085541295C8FA2308E5041713D0A47E0085541333333834E8E50413D0AD7A3E4085541D7A3702D6F8E50410AD7A370E90855413D0AD7036E8E5041AE47E14ADF08554148E17AA46D8E50415C8FC205DC0855415C8FC2F56C8E50419A999909D60855411F85EBB16C8E5041A4703DBAD3085541333333236C8E504185EB51D8CE08554185EB51E84C8E504148E17A44CA085541AE47E16A308E50417B14AE17C6085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000009E0BBF794D8E5041D5B1CB59CA0855410C148A79428E5041B750D5B3C808554199BD1259378E5041B1CAAC1BC7085541AE47E16A308E50417B14AE17C6085541969BCD77308E5041F9A4FA1BCC08554149AC8485308E50415C2E4939D3085541A50EA896308E504181E3E8A4DA085541A8D85F67348E50419DA7D02FDB085541E6C04DB83D8E5041B0BEFD82DC0855411A4CD287488E504118E3930CDE085541555C752B498E504151CFBB80DB08554116915F874A8E504102A6D216D60855419E0BBF794D8E5041D5B1CB59CA085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35849 - 3310590
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000AE47E16A308E50417B14AE17C60855415C8FC275308E50415C8FC2E5CA0855419A999979308E5041CDCCCC2CCD08554152B81E85308E50411F85EB11D3085541D7A3708D308E504185EB5148D6085541295C8FA2308E5041713D0A47E0085541333333834E8E50413D0AD7A3E4085541D7A3702D6F8E50410AD7A370E90855413D0AD7036E8E5041AE47E14ADF08554148E17AA46D8E50415C8FC205DC0855415C8FC2F56C8E50419A999909D60855411F85EBB16C8E5041A4703DBAD3085541333333236C8E504185EB51D8CE08554185EB51E84C8E504148E17A44CA085541AE47E16A308E50417B14AE17C6085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000009E0BBF794D8E5041D5B1CB59CA0855410C148A79428E5041B750D5B3C808554199BD1259378E5041B1CAAC1BC7085541AE47E16A308E50417B14AE17C6085541969BCD77308E5041F9A4FA1BCC08554149AC8485308E50415C2E4939D3085541A50EA896308E504181E3E8A4DA085541A8D85F67348E50419DA7D02FDB085541E6C04DB83D8E5041B0BEFD82DC0855411A4CD287488E504118E3930CDE085541555C752B498E504151CFBB80DB08554116915F874A8E504102A6D216D60855419E0BBF794D8E5041D5B1CB59CA085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>36041 - 3160132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D3A9E8A50417B14AE775103554148E17AD49D8A504148E17AA454035541A4703D2A9D8A5041A4703DFA59035541E17A148E9E8A5041AE47E15A690355415C8FC2859F8A5041EC51B8BE6803554152B81E65A38A5041D7A370DD750355410AD7A3A0A18A5041AE47E14A770355419A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F03554152B81EE5AF8A50410AD7A3309C03554185EB5148B38A5041B81E85CBA403554166666696B88A50413D0AD723A60355415C8FC265B48A50417B14AE779A03554133333393B28A50417B14AE5795035541AE47E17AAF8A50413D0AD7338A035541F6285C9FAD8A5041295C8F52840355419A9999A9AB8A5041A4703DCA7D0355415C8FC2C5A98A5041713D0A7777035541C3F528FCA78A504148E17AE471035541F6285C0FA68A504152B81E656B035541D7A3709DA48A5041AE47E17A65035541AE47E17AA38A5041D7A3701D610355417B14AEA7A28A5041EC51B80E5D03554148E17AD4A18A5041000000A057035541713D0A97A18A5041A4703D4A540355415C8FC295A18A50415C8FC265510355410AD7A3509F8A5041EC51B8BE50035541A4703D3A9E8A50417B14AE7751035541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F035541CAA9B69CB28A5041BF70A31BA3035541216883FCB68A5041952DD8B4A10355418B154401B58A504184AD40489C03554149E68A88B28A504121F65131950355411A8421ACAF8A5041F6DA25FB8A0355419E710E76AF8A504102EBCF358A035541FA442041AB8A50415D909C6C7C035541BED0EED9A78A504103FAAA717103554165F8F947A68A50416F75B32B6C03554112FFA0E0A58A5041918401B66A035541165BCED1A48A504190943C516603554117BFC613A48A504147935E80630355411D614A85A38A50419298765A6103554113303DA9A28A5041653463165D0355413C4C39FBA18A504143471F9F58035541E1905BD4A18A504166DD4C9E57035541CB02DCA8A18A50414711768955035541C089FC96A18A5041F3E1462B54035541C12F6F96A18A50416302DBEB520355410F7D61FF9D8A50414335CA4E530355410F9842309D8A5041859F9AD35903554182E998809E8A50410DDC9043690355419A9999E9A28A5041D7A3701D7D035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>36041 - 3298375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D3A9E8A50417B14AE775103554148E17AD49D8A504148E17AA454035541A4703D2A9D8A5041A4703DFA59035541E17A148E9E8A5041AE47E15A690355415C8FC2859F8A5041EC51B8BE6803554152B81E65A38A5041D7A370DD750355410AD7A3A0A18A5041AE47E14A770355419A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F03554152B81EE5AF8A50410AD7A3309C03554185EB5148B38A5041B81E85CBA403554166666696B88A50413D0AD723A60355415C8FC265B48A50417B14AE779A03554133333393B28A50417B14AE5795035541AE47E17AAF8A50413D0AD7338A035541F6285C9FAD8A5041295C8F52840355419A9999A9AB8A5041A4703DCA7D0355415C8FC2C5A98A5041713D0A7777035541C3F528FCA78A504148E17AE471035541F6285C0FA68A504152B81E656B035541D7A3709DA48A5041AE47E17A65035541AE47E17AA38A5041D7A3701D610355417B14AEA7A28A5041EC51B80E5D03554148E17AD4A18A5041000000A057035541713D0A97A18A5041A4703D4A540355415C8FC295A18A50415C8FC265510355410AD7A3509F8A5041EC51B8BE50035541A4703D3A9E8A50417B14AE7751035541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F035541CAA9B69CB28A5041BF70A31BA3035541216883FCB68A5041952DD8B4A10355418B154401B58A504184AD40489C03554149E68A88B28A504121F65131950355411A8421ACAF8A5041F6DA25FB8A0355419E710E76AF8A504102EBCF358A035541FA442041AB8A50415D909C6C7C035541BED0EED9A78A504103FAAA717103554165F8F947A68A50416F75B32B6C03554112FFA0E0A58A5041918401B66A035541165BCED1A48A504190943C516603554117BFC613A48A504147935E80630355411D614A85A38A50419298765A6103554113303DA9A28A5041653463165D0355413C4C39FBA18A504143471F9F58035541E1905BD4A18A504166DD4C9E57035541CB02DCA8A18A50414711768955035541C089FC96A18A5041F3E1462B54035541C12F6F96A18A50416302DBEB520355410F7D61FF9D8A50414335CA4E530355410F9842309D8A5041859F9AD35903554182E998809E8A50410DDC9043690355419A9999E9A28A5041D7A3701D7D035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37014 - 2913804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC265899F50419A9999C9FD145541CDCCCC1C8F9F5041333333E3FF1455410AD7A3F0939F504152B81EC50015554114AE4751A79F50411F85EBB102155541F6285CDFA79F5041F6285C7F01155541C3F5283C7B9F504133333373F51455410AD7A3607A9F50419A9999F9F514554185EB51A8789F5041AE47E18AF5145541A4703DBA739F504148E17A44F4145541AE47E1EA6F9F5041B81E859BF2145541E17A140E679F504185EB5198EF14554148E17A14609F5041AE47E14AED145541B81E850B559F50415C8FC255E8145541F6285C1F4F9F5041295C8FF2E6145541C3F5288C549F50418FC2F5C8EA1455413D0AD7235A9F50413D0AD713EE14554166666666609F5041C3F5280CF114554114AE4711669F5041666666D6F214554114AE4771729F5041000000F0F614554133333313799F50413D0AD793F81455413D0AD793789F504100000090F9145541EC51B82E7B9F5041D7A3701DFA1455410AD7A360819F5041C3F5289CFB1455415C8FC265899F50419A9999C9FD145541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D7A3706D9A9F50418FC2F588131555413D0AD753AA9F50418FC2F5080515554114AE4751A79F50411F85EBB102155541F92002C1A29F5041448DDC3D02155541F4EA3E5C999F504113B2F74E01155541BEC131EE919F5041FE681367001555415726C7D38E9F504186BB9AEAFF14554144A61CC5899F5041CB2FA3ECFD14554152142BB97B9F5041E5D0D93EFA1455414F2E3C95789F5041C632388DF9145541F79A99E9789F50417EE131A2F81455414E3D4C5C689F50415BFFE298F31455415C930B84609F5041E8E48515F11455415F219FE2599F5041399371EDED14554153ACF716519F50414568CC56E8145541D730DF004E9F504189CD957CE61455413D170A71499F5041F70DA581E414554185EB5188419F50413D0AD7B3E0145541E17A14FE3B9F5041CDCCCC3CEB145541CB0FC448439F504129A5C871ED145541262EBD8E559F50413D9FCDEEF3145541C557CB35619F504131F48C2BF81455410E17B227699F5041F1836AF3FA1455411C01690A709F5041611E7C77FD1455417FC27B467E9F50418430F65B03155541AD517869879F5041D58ACF76071555411141492A8E9F5041DF0752B50A155541DC4DA930949F50419687E1E20D155541D7A3706D9A9F50418FC2F58813155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37014 - 3800659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC265899F50419A9999C9FD145541CDCCCC1C8F9F5041333333E3FF1455410AD7A3F0939F504152B81EC50015554114AE4751A79F50411F85EBB102155541F6285CDFA79F5041F6285C7F01155541C3F5283C7B9F504133333373F51455410AD7A3607A9F50419A9999F9F514554185EB51A8789F5041AE47E18AF5145541A4703DBA739F504148E17A44F4145541AE47E1EA6F9F5041B81E859BF2145541E17A140E679F504185EB5198EF14554148E17A14609F5041AE47E14AED145541B81E850B559F50415C8FC255E8145541F6285C1F4F9F5041295C8FF2E6145541C3F5288C549F50418FC2F5C8EA1455413D0AD7235A9F50413D0AD713EE14554166666666609F5041C3F5280CF114554114AE4711669F5041666666D6F214554114AE4771729F5041000000F0F614554133333313799F50413D0AD793F81455413D0AD793789F504100000090F9145541EC51B82E7B9F5041D7A3701DFA1455410AD7A360819F5041C3F5289CFB1455415C8FC265899F50419A9999C9FD145541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D7A3706D9A9F50418FC2F588131555413D0AD753AA9F50418FC2F5080515554114AE4751A79F50411F85EBB102155541F92002C1A29F5041448DDC3D02155541F4EA3E5C999F504113B2F74E01155541BEC131EE919F5041FE681367001555415726C7D38E9F504186BB9AEAFF14554144A61CC5899F5041CB2FA3ECFD14554152142BB97B9F5041E5D0D93EFA1455414F2E3C95789F5041C632388DF9145541F79A99E9789F50417EE131A2F81455414E3D4C5C689F50415BFFE298F31455415C930B84609F5041E8E48515F11455415F219FE2599F5041399371EDED14554153ACF716519F50414568CC56E8145541D730DF004E9F504189CD957CE61455413D170A71499F5041F70DA581E414554185EB5188419F50413D0AD7B3E0145541E17A14FE3B9F5041CDCCCC3CEB145541CB0FC448439F504129A5C871ED145541262EBD8E559F50413D9FCDEEF3145541C557CB35619F504131F48C2BF81455410E17B227699F5041F1836AF3FA1455411C01690A709F5041611E7C77FD1455417FC27B467E9F50418430F65B03155541AD517869879F5041D58ACF76071555411141492A8E9F5041DF0752B50A155541DC4DA930949F50419687E1E20D155541D7A3706D9A9F50418FC2F58813155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37200 - 2998217
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE4741259F5041C3F5282CD0105541AE47E16A0B9F504185EB51E8CB105541295C8F52EF9E504152B81E35C71055419A999959EE9E5041CDCCCCDCC810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE10554148E17AE4029F5041E17A145ED2105541B81E85AB249F504133333303D610554114AE4741259F5041C3F5282CD0105541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000FBD9993AEE9E50417BBB26D4C810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE105541FD21EB46019F504111000C87D110554148E17AE4029F5041E17A145ED210554167F7360F079F5041AC8C31D1D210554107FA0D7D059F5041B5B76BE7D1105541A9D4DD24049F5041370012D4D0105541E3DC0C99029F504100892F39D0105541FD521252019F504141AD82AFCF105541B0F676D7FF9E5041D9DAE17BCF105541FAC73A29FE9E50413A915EADCE1055412407D5BFFC9E504134753AABCD10554118CF8CBBFA9E5041952BB7DCCC1055410B9744B7F89E50415EB4D441CC1055413F834F29F69E504137068784CB10554121827247F49E504147CF1B62CB1055418DE55F54F29E5041B94E2D71CA105541F8484D61F09E5041E9A9EB09CA105541853E6429EE9E50413B97D35DC9105541FBD9993AEE9E50417BBB26D4C8105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37200 - 3379511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE4741259F5041C3F5282CD0105541AE47E16A0B9F504185EB51E8CB105541295C8F52EF9E504152B81E35C71055419A999959EE9E5041CDCCCCDCC810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE10554148E17AE4029F5041E17A145ED2105541B81E85AB249F504133333303D610554114AE4741259F5041C3F5282CD0105541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000FBD9993AEE9E50417BBB26D4C810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE105541FD21EB46019F504111000C87D110554148E17AE4029F5041E17A145ED210554167F7360F079F5041AC8C31D1D210554107FA0D7D059F5041B5B76BE7D1105541A9D4DD24049F5041370012D4D0105541E3DC0C99029F504100892F39D0105541FD521252019F504141AD82AFCF105541B0F676D7FF9E5041D9DAE17BCF105541FAC73A29FE9E50413A915EADCE1055412407D5BFFC9E504134753AABCD10554118CF8CBBFA9E5041952BB7DCCC1055410B9744B7F89E50415EB4D441CC1055413F834F29F69E504137068784CB10554121827247F49E504147CF1B62CB1055418DE55F54F29E5041B94E2D71CA105541F8484D61F09E5041E9A9EB09CA105541853E6429EE9E50413B97D35DC9105541FBD9993AEE9E50417BBB26D4C8105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37234 - 3073768
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285C1FBE9F50410AD7A39000115541B81E852BB99F5041F6285CEFFD1055419A9999E9AE9F5041000000602F1155418FC2F548B49F50413D0AD72330115541000000E0B99F5041F6285CEF30115541C3F528DCBB9F504185EB5138311155415C8FC2D5D39F504114AE47A134115541AE47E15AD79F504114AE472135115541C3F5281CE09F5041666666E60A11554152B81EA5D59F5041AE47E1DA0B115541295C8FA2CA9F504152B81E350711554185EB5128C59F5041C3F5284C041155410AD7A350C39F50411F85EB5103115541F6285C1FBE9F50410AD7A39000115541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000093B4292BB99F5041ADC414F1FD10554117A335D6B09F50415566AD192611554185152B4AB09F5041BD0BA9BC28115541FC8BE9F7AF9F5041BC0320492A115541C79563EAAE9F50411368445F2F1155412381B951B49F5041322416253011554108498295B89F5041FFAE5BC0301155413EB251EABD9F5041A3092883311155413C6B6AAAC59F50414C7F5B9D321155410AD9906CCC9F504123727093331155418BBBE66DD49F50414317E4B6341155411053A05ED79F504173F9CF21351155411D24AB19E09F50411877D6E40A115541457E1E18D99F504188EF4C8A0B115541827A3CDFD69F50410AFF36BE0B115541CDB752A6D59F5041542CC5DA0B11554174F1115BD09F5041CA42509F09115541D3BEADCFCC9F504198F2492008115541B3A5E0A4CA9F5041FD271936071155410AD7A350C39F50411F85EB5103115541D3A8D20BC19F50416810C11D021155416089B21EBF9F504182781D18011155417AFFB192BC9F50410C44FEBDFF10554193B4292BB99F5041ADC414F1FD105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37234 - 3370448
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285C1FBE9F50410AD7A39000115541B81E852BB99F5041F6285CEFFD1055419A9999E9AE9F5041000000602F1155418FC2F548B49F50413D0AD72330115541000000E0B99F5041F6285CEF30115541C3F528DCBB9F504185EB5138311155415C8FC2D5D39F504114AE47A134115541AE47E15AD79F504114AE472135115541C3F5281CE09F5041666666E60A11554152B81EA5D59F5041AE47E1DA0B115541295C8FA2CA9F504152B81E350711554185EB5128C59F5041C3F5284C041155410AD7A350C39F50411F85EB5103115541F6285C1FBE9F50410AD7A39000115541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000093B4292BB99F5041ADC414F1FD10554117A335D6B09F50415566AD192611554185152B4AB09F5041BD0BA9BC28115541FC8BE9F7AF9F5041BC0320492A115541C79563EAAE9F50411368445F2F1155412381B951B49F5041322416253011554108498295B89F5041FFAE5BC0301155413EB251EABD9F5041A3092883311155413C6B6AAAC59F50414C7F5B9D321155410AD9906CCC9F504123727093331155418BBBE66DD49F50414317E4B6341155411053A05ED79F504173F9CF21351155411D24AB19E09F50411877D6E40A115541457E1E18D99F504188EF4C8A0B115541827A3CDFD69F50410AFF36BE0B115541CDB752A6D59F5041542CC5DA0B11554174F1115BD09F5041CA42509F09115541D3BEADCFCC9F504198F2492008115541B3A5E0A4CA9F5041FD271936071155410AD7A350C39F50411F85EB5103115541D3A8D20BC19F50416810C11D021155416089B21EBF9F504182781D18011155417AFFB192BC9F50410C44FEBDFF10554193B4292BB99F5041ADC414F1FD105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37397 - 1732632
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000003D0AD763E5A150418FC2F5982BF7544152B81E65E5A15041A4703D8A2AF7544152B81E85E4A15041EC51B8EE29F754415C8FC245DAA1504114AE47512EF75441713D0A57CAA15041295C8F2235F75441D7A3701DC6A15041B81E85BB36F7544148E17A24BCA15041666666863BF75441C3F5286CB7A150419A99998975F754411F85EB41BEA15041EC51B89E75F75441CDCCCC9CD4A15041000000E073F754415C8FC265D7A1504185EB51A873F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF754419A999959E2A150413D0AD77347F75441E17A148EE4A150419A99994939F75441D7A370EDE4A150411F85EB9135F754413D0AD763E5A150418FC2F5982BF75441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ECDE4ACFE4A1504122D2C9BE36F7544137203963DAA15041F68086A645F754410DFD68DFD7A15041180BEE2E73F7544178DABBBED7A15041B32C61A173F75441777486BDD7A15041722D78B673F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF754419A999959E2A150413D0AD77347F75441E17A148EE4A150419A99994939F75441ECDE4ACFE4A1504122D2C9BE36F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37397 - 3481885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000003D0AD763E5A150418FC2F5982BF7544152B81E65E5A15041A4703D8A2AF7544152B81E85E4A15041EC51B8EE29F754415C8FC245DAA1504114AE47512EF75441713D0A57CAA15041295C8F2235F75441D7A3701DC6A15041B81E85BB36F7544148E17A24BCA15041666666863BF75441C3F5286CB7A150419A99998975F754411F85EB41BEA15041EC51B89E75F75441CDCCCC9CD4A15041000000E073F754415C8FC265D7A1504185EB51A873F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF754419A999959E2A150413D0AD77347F75441E17A148EE4A150419A99994939F75441D7A370EDE4A150411F85EB9135F754413D0AD763E5A150418FC2F5982BF75441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ECDE4ACFE4A1504122D2C9BE36F7544137203963DAA15041F68086A645F754410DFD68DFD7A15041180BEE2E73F7544178DABBBED7A15041B32C61A173F75441777486BDD7A15041722D78B673F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF754419A999959E2A150413D0AD77347F75441E17A148EE4A150419A99994939F75441ECDE4ACFE4A1504122D2C9BE36F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38230 - 193329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCCFCCD855041EC51B81EB0055541C3F5285CD48550415C8FC2A5B3055541C3F528BCD685504114AE4711B40555410AD7A330D985504185EB5168B30555410AD7A360DA855041333333A3B1055541B81E850BD1855041B81E858BA9055541D7A3704DC7855041713D0A17A1055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555418FC2F558AE85504114AE476198055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A10555411F85EB81C685504148E17A24A905554133333383CB855041C3F5285CAF055541CDCCCCFCCD855041EC51B81EB0055541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AD55EC81C68550415CE47B24A9055541461EF994C9855041A5EC33F6AC05554104513283CB855041C8DC275CAF055541B9F9CCFCCD8550414635B81EB005554155FD830BD18550419323848BA90555419A207F9BCC855041B11BA0B1A5055541A7F2704DC7855041B0FA0A17A105554138606D57BE8550415A81605399055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555412940F658AE855041C6F646619805554156F7AD6FAF855041FB65520B99055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A1055541AD55EC81C68550415CE47B24A9055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38230 - 432384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCCFCCD855041EC51B81EB0055541C3F5285CD48550415C8FC2A5B3055541C3F528BCD685504114AE4711B40555410AD7A330D985504185EB5168B30555410AD7A360DA855041333333A3B1055541B81E850BD1855041B81E858BA9055541D7A3704DC7855041713D0A17A1055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555418FC2F558AE85504114AE476198055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A10555411F85EB81C685504148E17A24A905554133333383CB855041C3F5285CAF055541CDCCCCFCCD855041EC51B81EB0055541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AD55EC81C68550415CE47B24A9055541461EF994C9855041A5EC33F6AC05554104513283CB855041C8DC275CAF055541B9F9CCFCCD8550414635B81EB005554155FD830BD18550419323848BA90555419A207F9BCC855041B11BA0B1A5055541A7F2704DC7855041B0FA0A17A105554138606D57BE8550415A81605399055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555412940F658AE855041C6F646619805554156F7AD6FAF855041FB65520B99055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A1055541AD55EC81C68550415CE47B24A9055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38460 - 3173465
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5084EA050418FC2F5F8941B5541713D0A974EA05041713D0AD79B1B5541E17A14AE4EA05041AE47E1DAAB1B5541F6285CFF4DA05041AE47E12AB71B5541333333F34DA05041CDCCCCACC31B5541E17A14AE4EA05041D7A3703DCE1B5541666666B64FA05041713D0AF7CE1B55413333339357A05041333333C3CC1B55418FC2F55863A0504100000010891B5541C3F5283C5DA050410AD7A3108D1B5541713D0A3759A050415C8FC2F58E1B5541E17A14DE4EA050411F85EB91931B55418FC2F5084EA050418FC2F5F8941B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E55E4C9D4EA05041717EAC30A01B5541E00D59C14FA050416A6C3A14A01B55419BEE414152A05041331CE0D59F1B5541F954DD9853A05041F00AC076911B55414C82B6E04EA05041513ABF90931B55418FBA55CE4EA050419D1072AC931B5541362B1D0A4EA05041DD1604F7941B55417A44B80A4EA050417048BC0E951B55416D1D91524EA05041B40EC387981B55410EA601964EA050414A3840CA9B1B5541E55E4C9D4EA05041717EAC30A01B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38460 - 3376885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5084EA050418FC2F5F8941B5541713D0A974EA05041713D0AD79B1B5541E17A14AE4EA05041AE47E1DAAB1B5541F6285CFF4DA05041AE47E12AB71B5541333333F34DA05041CDCCCCACC31B5541E17A14AE4EA05041D7A3703DCE1B5541666666B64FA05041713D0AF7CE1B55413333339357A05041333333C3CC1B55418FC2F55863A0504100000010891B5541C3F5283C5DA050410AD7A3108D1B5541713D0A3759A050415C8FC2F58E1B5541E17A14DE4EA050411F85EB91931B55418FC2F5084EA050418FC2F5F8941B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E55E4C9D4EA05041717EAC30A01B5541E00D59C14FA050416A6C3A14A01B55419BEE414152A05041331CE0D59F1B5541F954DD9853A05041F00AC076911B55414C82B6E04EA05041513ABF90931B55418FBA55CE4EA050419D1072AC931B5541362B1D0A4EA05041DD1604F7941B55417A44B80A4EA050417048BC0E951B55416D1D91524EA05041B40EC387981B55410EA601964EA050414A3840CA9B1B5541E55E4C9D4EA05041717EAC30A01B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 2986107
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B32554114AE479113CB50418FC2F5780B325541295C8F721ECB5041AE47E15A0B325541AE47E1FA25CB50411F85EB310B32554114AE473125CB5041CDCCCCDC06325541EC51B8AE23CB5041A4703DEA04325541000000C00DCB5041C3F5288CFA315541
+</a>
+
+<b>
+01060000000100000001030000000100000014000000EC51B86E23CB50411F85EBA116325541AE47E18A26CB504166666636153255419A99997927CB5041C3F5286C13325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541FA4BB8FC0ECB50418B3A613B0C325541670EFCD00ACB5041E354BD730C325541252E451B06CB504192E17B520C325541A7D8072604CB5041DE3A7DED0B325541E17A14BEFBCA5041AE47E1DA0A3255418FC2F518F9CA5041CDCCCC8C0A325541B81E853BFFCA5041AE47E13A0E32554173F02FBE04CB5041C8AA736314325541E605B92D08CB504175CD64D114325541721445870BCB5041D91247AD1532554141B524DC13CB5041D281170D17325541E1489C321FCB50419F05DFAE18325541EC51B86E23CB50411F85EBA116325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 3701702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B32554114AE479113CB50418FC2F5780B325541295C8F721ECB5041AE47E15A0B325541AE47E1FA25CB50411F85EB310B32554114AE473125CB5041CDCCCCDC06325541EC51B8AE23CB5041A4703DEA04325541000000C00DCB5041C3F5288CFA315541
+</a>
+
+<b>
+01060000000100000001030000000100000014000000EC51B86E23CB50411F85EBA116325541AE47E18A26CB504166666636153255419A99997927CB5041C3F5286C13325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541FA4BB8FC0ECB50418B3A613B0C325541670EFCD00ACB5041E354BD730C325541252E451B06CB504192E17B520C325541A7D8072604CB5041DE3A7DED0B325541E17A14BEFBCA5041AE47E1DA0A3255418FC2F518F9CA5041CDCCCC8C0A325541B81E853BFFCA5041AE47E13A0E32554173F02FBE04CB5041C8AA736314325541E605B92D08CB504175CD64D114325541721445870BCB5041D91247AD1532554141B524DC13CB5041D281170D17325541E1489C321FCB50419F05DFAE18325541EC51B86E23CB50411F85EBA116325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 45009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B32554114AE479113CB50418FC2F5780B325541295C8F721ECB5041AE47E15A0B325541AE47E1FA25CB50411F85EB310B32554114AE473125CB5041CDCCCCDC06325541EC51B8AE23CB5041A4703DEA04325541000000C00DCB5041C3F5288CFA315541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A7D8072604CB5041DE3A7DED0B325541A2FEC84604CB50412054B12A0E3255410B8FE45807CB50411B2EF0090E325541EC9846B40ECB50412054B12A0E325541B7BE214B15CB504123C1501A0E32554138ECE55219CB504123C1501A0E325541E953FB451FCB50411B2EF0090E325541C758B92E26CB50411B2EF0090E3255412F2DD47026CB50417D124A1D0F325541DD9242B126CB5041281DA11D0F325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541FA4BB8FC0ECB50418B3A613B0C325541670EFCD00ACB5041E354BD730C325541252E451B06CB504192E17B520C325541A7D8072604CB5041DE3A7DED0B325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 79822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B32554114AE479113CB50418FC2F5780B325541295C8F721ECB5041AE47E15A0B325541AE47E1FA25CB50411F85EB310B32554114AE473125CB5041CDCCCCDC06325541EC51B8AE23CB5041A4703DEA04325541000000C00DCB5041C3F5288CFA315541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A7D8072604CB5041DE3A7DED0B325541A2FEC84604CB50412054B12A0E3255410B8FE45807CB50411B2EF0090E325541EC9846B40ECB50412054B12A0E325541B7BE214B15CB504123C1501A0E32554138ECE55219CB504123C1501A0E325541E953FB451FCB50411B2EF0090E325541C758B92E26CB50411B2EF0090E3255412F2DD47026CB50417D124A1D0F325541DD9242B126CB5041281DA11D0F325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541FA4BB8FC0ECB50418B3A613B0C325541670EFCD00ACB5041E354BD730C325541252E451B06CB504192E17B520C325541A7D8072604CB5041DE3A7DED0B325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42823 - 4307920
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000015000000EC51B89E53C65041B81E85AB5133554152B81E2554C65041713D0A1754335541AE47E1BA62C650410AD7A3E062335541EC51B87E6BC650413D0AD7C36B3355413333330376C65041E17A146E76335541EC51B84E77C65041A4703DDA75335541EC51B89E84C65041E17A14EE6F3355417B14AE4788C65041D7A3709D6C335541A4703DBA88C6504185EB51D85F335541666666F691C65041E17A142E513355411F85EB0196C65041295C8F1245335541713D0A8797C65041666666F63C335541F6285C2F96C65041713D0AC739335541C3F5287C8AC650419A9999D933335541666666767BC65041000000202B335541F6285CAF73C6504152B81E5523335541AE47E15A72C6504185EB516823335541D7A370DD61C65041C3F5283C38335541666666F652C65041EC51B80E4B335541EC51B88E52C6504114AE47D14C335541EC51B89E53C65041B81E85AB51335541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000EC51B89E53C65041B81E85AB51335541BF14481F55C65041B104900C55335541BFC98A7C5AC65041D61E9C1D61335541240717E96AC65041D84F19F26C335541EE7C3F256CC65041AAF1D2D56D3355412E0E292E74C65041D962769274335541C330BE1975C65041A74745837533554111D2CD1477C65041A6121EE174335541670583727FC65041B466383472335541EC51B89E84C65041E17A14EE6F3355417B14AE4788C65041D7A3709D6C335541A4703DBA88C6504185EB51D85F335541666666F691C65041E17A142E513355411F85EB0196C65041295C8F1245335541713D0A8797C65041666666F63C335541F6285C2F96C65041713D0AC739335541C3F5287C8AC650419A9999D933335541666666767BC65041000000202B335541F6285CAF73C6504152B81E5523335541AE47E15A72C6504185EB516823335541D7A370DD61C65041C3F5283C38335541666666F652C65041EC51B80E4B335541EC51B88E52C6504114AE47D14C335541EC51B89E53C65041B81E85AB51335541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 132443
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE993055413D0AD7D345C4504152B81E65A83055415C8FC2E550C45041295C8F92AF305541EC51B87E54C45041E17A148EAC3055419A99994958C45041D7A3709DA13055410000007059C45041C3F5288C9C305541EC51B8CE59C45041333333C3983055418FC2F5785AC45041B81E85EB8E305541D7A3700D5AC4504148E17A7487305541D7A370FD53C450411F85EBE1813055410000005037C4504152B81E156C305541
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959DBC35041295C8FD26030554172F55B64DFC35041E895363662305541048161F3FBC35041CD96C7FA3E3055417A9375E5FBC35041447B33F03E3055415CF3802CFBC3504149DFA8633E3055415583B4F1FAC350418109FB363E3055418362B1D0F8C35041F300B9D43C305541BE05C42BE4C35041743A56F0553055419A999959DBC35041295C8FD260305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 143144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE993055413D0AD7D345C4504152B81E65A83055415C8FC2E550C45041295C8F92AF305541EC51B87E54C45041E17A148EAC3055419A99994958C45041D7A3709DA13055410000007059C45041C3F5288C9C305541EC51B8CE59C45041333333C3983055418FC2F5785AC45041B81E85EB8E305541D7A3700D5AC4504148E17A7487305541D7A370FD53C450411F85EBE1813055410000005037C4504152B81E156C305541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000094628FFE03C4504167403617453055413F5D203CFCC3504140FDAC3E3F3055412C89AEABDFC350416EC7FE3E62305541694D16ACE3C35041E6A99BC2633055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554121F604B6E6C3504193F7F5E864305541BA7D091DE7C3504119C3F00F653055415B28F5A11EC4504117872E168C3055418C9FA5EF37C45041E3E67A8E6C3055410000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B30554194628FFE03C450416740361745305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 244662
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE993055413D0AD7D345C4504152B81E65A83055415C8FC2E550C45041295C8F92AF305541EC51B87E54C45041E17A148EAC3055419A99994958C45041D7A3709DA13055410000007059C45041C3F5288C9C305541EC51B8CE59C45041333333C3983055418FC2F5785AC45041B81E85EB8E305541D7A3700D5AC4504148E17A7487305541D7A370FD53C450411F85EBE1813055410000005037C4504152B81E156C305541
+</a>
+
+<b>
+010600000001000000010300000001000000160000006E65DD0329C4504140414837613055411F1FD24326C4504133A373205F3055410AD7A3801EC45041AE47E13A593055413AE6D9900FC45041662C9EE14D3055410A0F5F3008C450419298EA46483055418C8E82EFFBC35041D5188EFF3E3055419C3A0C8EEFC35041A7B00B484E305541C8554697E3C35041EF23B3175D30554132FDE261DFC35041B751F33E623055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C164305541BE16745EF1C35041DDBF62786C30554114AE4731F5C35041EC51B82E6F305541D6F5297004C45041EBF1A6FE79305541A6B734D41DC45041E1BA61E28B305541020BDCC421C450419FA2F4D986305541DFE19FBF2BC4504106D35EBE7A30554156B3555337C450412AAFA7176C3055410000005037C4504152B81E156C305541420B5A4836C4504108E4984C6B3055414F536EF62FC45041F2F8607E663055416E65DD0329C450414041483761305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 331394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE993055413D0AD7D345C4504152B81E65A83055415C8FC2E550C45041295C8F92AF305541EC51B87E54C45041E17A148EAC3055419A99994958C45041D7A3709DA13055410000007059C45041C3F5288C9C305541EC51B8CE59C45041333333C3983055418FC2F5785AC45041B81E85EB8E305541D7A3700D5AC4504148E17A7487305541D7A370FD53C450411F85EBE1813055410000005037C4504152B81E156C305541
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959DBC35041295C8FD26030554172F55B64DFC35041E895363662305541048161F3FBC35041CD96C7FA3E3055417A9375E5FBC35041447B33F03E3055415CF3802CFBC3504149DFA8633E3055415583B4F1FAC350418109FB363E3055418362B1D0F8C35041F300B9D43C305541BE05C42BE4C35041743A56F0553055419A999959DBC35041295C8FD260305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 347851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE993055413D0AD7D345C4504152B81E65A83055415C8FC2E550C45041295C8F92AF305541EC51B87E54C45041E17A148EAC3055419A99994958C45041D7A3709DA13055410000007059C45041C3F5288C9C305541EC51B8CE59C45041333333C3983055418FC2F5785AC45041B81E85EB8E305541D7A3700D5AC4504148E17A7487305541D7A370FD53C450411F85EBE1813055410000005037C4504152B81E156C305541
+</a>
+
+<b>
+010600000001000000010300000001000000160000006E65DD0329C4504140414837613055411F1FD24326C4504133A373205F3055410AD7A3801EC45041AE47E13A593055413AE6D9900FC45041662C9EE14D3055410A0F5F3008C450419298EA46483055418C8E82EFFBC35041D5188EFF3E3055419C3A0C8EEFC35041A7B00B484E305541C8554697E3C35041EF23B3175D30554132FDE261DFC35041B751F33E623055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C164305541BE16745EF1C35041DDBF62786C30554114AE4731F5C35041EC51B82E6F305541D6F5297004C45041EBF1A6FE79305541A6B734D41DC45041E1BA61E28B305541020BDCC421C450419FA2F4D986305541DFE19FBF2BC4504106D35EBE7A30554156B3555337C450412AAFA7176C3055410000005037C4504152B81E156C305541420B5A4836C4504108E4984C6B3055414F536EF62FC45041F2F8607E663055416E65DD0329C450414041483761305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72421 - 3549809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D0000007B14AEB7B6C55041D7A3701D54305541AE47E11AB3C550411F85EBC154305541295C8F62B7C55041E17A146E6A305541C3F5287CC2C5504114AE477167305541295C8F72C3C550410AD7A3706730554166666616DFC5504133333383683055418FC2F568F3C550419A9999996A3055417B14AEA7F6C55041A4703DCA4F3055413D0AD723F0C550413D0AD7D350305541B81E85BBE8C5504148E17A945130554152B81EE5CEC550419A99999952305541666666F6BCC550417B14AE47533055417B14AEB7B6C55041D7A3701D54305541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000F74A26BFB8C55041465DECC66A30554156E8C5EBC2C550419757AC9A67305541295C8F72C3C550410AD7A37067305541AF5D2C1EDAC550411BA0D5516830554166666616DFC55041333333836830554108958117E0C55041EEF4A6A768305541501D87D6ECC55041949146346A305541342CE5B3F3C550415F6A7AF76A305541094258D3F3C550410712C4FE69305541A1FED167F5C550417DFF0D805D3055415E5D072BF7C55041A6B4AEB34F305541FD2D8573E8C55041E98652975130554131B8839DD9C550417316422D52305541F552E43BCFC5504191A92C96523055415E19E198C6C5504170B226EA5230554177752725BEC550410417333C53305541FCE93DE6B9C550411E0487B053305541AE47E11AB3C550411F85EBC154305541E17A141EA8C5504148E17AB4563055410AD7A360A3C55041F6285CFF5730554148E17AA49FC5504114AE47D15930554185EB5108A9C55041D7A370AD6F3055410AD7A370B7C55041F6285C2F6B305541F74A26BFB8C55041465DECC66A305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 2363227
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000068301B812AC55041029F7EA95E3155413333336328C55041EC51B80E6C31554123E9770D46C55041405A697B743155411F85EB5166C5504152B81EA57D315541CBBC862067C550415F8D50336F315541DD2E6A4E61C550410641B0A06D3155413777CBF25FC550417D14C3426D31554139DC415760C55041512EAC5C6D315541420DBA2D4DC550414D258D3168315541029D2AD136C550410FB1A40B623155415E4141E834C55041BB9FAE8461315541317F43BE33C55041C86A69336131554168301B812AC55041029F7EA95E315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 4817792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000068301B812AC55041029F7EA95E3155413333336328C55041EC51B80E6C31554123E9770D46C55041405A697B743155411F85EB5166C5504152B81EA57D315541CBBC862067C550415F8D50336F315541DD2E6A4E61C550410641B0A06D3155413777CBF25FC550417D14C3426D31554139DC415760C55041512EAC5C6D315541420DBA2D4DC550414D258D3168315541029D2AD136C550410FB1A40B623155415E4141E834C55041BB9FAE8461315541317F43BE33C55041C86A69336131554168301B812AC55041029F7EA95E315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>73583 - 87044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000B81E85BBDDC050419A9999E95D345541A4703D5ADCC05041A4703DEA5E3455417B14AED7DAC0504185EB5188623455418FC2F528DBC050413D0AD763673455418FC2F5D8E0C05041000000306D3455413D0AD7A3E6C05041000000C071345541295C8FC2F0C05041713D0AB777345541D7A370CDFFC050417B14AE2782345541295C8F4203C150419A9999597C345541EC51B83EF8C0504148E17A94753455413D0AD743EDC050410AD7A3C06D3455417B14AE97E8C05041333333A369345541AE47E1FAE3C050410AD7A34065345541B81E85BBDDC050419A9999E95D345541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000005747068FF6C05041E642618D703455411F85EB61EFC050410AD7A3206B345541B81E85CBE7C0504152B81EE563345541AE47E15AE4C05041000000A05F345541C3F5280CE1C05041F6285C9F5B345541E14839C5E0C05041332FACC05B3455413250C2E5DDC0504153D25E155E345541E11F5D1DE0C05041344D16B6603455416B69CB37E0C050411DCF23D5603455416E637BA6E2C050414973B7B063345541E97E50DBE2C0504144B1C9EE63345541CED5F343E9C05041B0F2EA3A6A3455417862B38DE9C05041A0E1DD7B6A34554103FB3B95E9C05041D45D80826A345541DC3C9FA3E9C05041C6272C8F6A34554133F5BE43EBC050416481A5FD6B345541AF963B68EDC050417F87FFD66D3455418CBBDA7AEEC050416DB05B9E6E345541EC51B83EF8C0504148E17A9475345541C8242F31FDC050415CA3DE9E78345541838A2057FFC050419205C3E47934554129A39E0703C150418A1C69187C345541CDCCCC0C04C15041666666067B34554170F48AD404C15041CB85C8B679345541B236D93E05C15041C7241EF27834554114AE4791FFC05041A4703DFA75345541C3B0C960F9C050417C1BAE4F723455415747068FF6C05041E642618D70345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>73583 - 330732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000B81E85BBDDC050419A9999E95D345541A4703D5ADCC05041A4703DEA5E3455417B14AED7DAC0504185EB5188623455418FC2F528DBC050413D0AD763673455418FC2F5D8E0C05041000000306D3455413D0AD7A3E6C05041000000C071345541295C8FC2F0C05041713D0AB777345541D7A370CDFFC050417B14AE2782345541295C8F4203C150419A9999597C345541EC51B83EF8C0504148E17A94753455413D0AD743EDC050410AD7A3C06D3455417B14AE97E8C05041333333A369345541AE47E1FAE3C050410AD7A34065345541B81E85BBDDC050419A9999E95D345541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000005747068FF6C05041E642618D703455411F85EB61EFC050410AD7A3206B345541B81E85CBE7C0504152B81EE563345541AE47E15AE4C05041000000A05F345541C3F5280CE1C05041F6285C9F5B345541E14839C5E0C05041332FACC05B3455413250C2E5DDC0504153D25E155E345541E11F5D1DE0C05041344D16B6603455416B69CB37E0C050411DCF23D5603455416E637BA6E2C050414973B7B063345541E97E50DBE2C0504144B1C9EE63345541CED5F343E9C05041B0F2EA3A6A3455417862B38DE9C05041A0E1DD7B6A34554103FB3B95E9C05041D45D80826A345541DC3C9FA3E9C05041C6272C8F6A34554133F5BE43EBC050416481A5FD6B345541AF963B68EDC050417F87FFD66D3455418CBBDA7AEEC050416DB05B9E6E345541EC51B83EF8C0504148E17A9475345541C8242F31FDC050415CA3DE9E78345541838A2057FFC050419205C3E47934554129A39E0703C150418A1C69187C345541CDCCCC0C04C15041666666067B34554170F48AD404C15041CB85C8B679345541B236D93E05C15041C7241EF27834554114AE4791FFC05041A4703DFA75345541C3B0C960F9C050417C1BAE4F723455415747068FF6C05041E642618D70345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>75176 - 131675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554148E17A04BECD5041B81E850B3C3455415C8FC205C0CD50417B14AE073F3455411F85EBF1C9CD50418FC2F5F83734554100000080D8CD5041E17A149E2D34554148E17A44DACD5041EC51B87E2B345541F6285CDFDBCD5041C3F5286C28345541F6285CBFDCCD5041EC51B81E25345541F6285CAFDCCD5041333333B321345541A4703D6AD8CD5041000000A001345541AE47E1DAD6CD5041EC51B89E10345541E17A14CECCCD504185EB51080E3455418FC2F568CBCD50418FC2F598153455418FC2F588C6CD5041CDCCCCCC1434554133333363BBCD5041B81E85EB10345541F6285CEFB1CD5041CDCCCC3C0D345541C3F528FC93CD5041F6285CBF0534554185EB51E88FCD5041C3F5289C12345541295C8F528DCD50418FC2F5F81A345541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554114BFD8E8BDCD50414D7236EF3B34554132B08AA3D5CD50418EE909092B345541C2D0D7D9D6CD5041C79F68A6293455412D930219D8CD5041D8BF63D927345541B0B0DCA6D8CD5041798A430B2534554126CB438CD8CD5041161DE2C921345541399B8C55D7CD5041AE328D7A1734554116D5CB91D6CD5041F2C2C84F17345541C59DC1EBCBCD5041A858149F153455418FC2F568CBCD50418FC2F5981534554174EE7E60CBCD5041004A939715345541BA49D071CBCD5041EE8A0BC0153455417B626941CBCD50411B847D92153455418FC2F588C6CD5041CDCCCCCC1434554133333363BBCD5041B81E85EB10345541F6285CEFB1CD5041CDCCCC3C0D345541C3F528FC93CD5041F6285CBF0534554185EB51E88FCD5041C3F5289C12345541295C8F528DCD50418FC2F5F81A345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>75176 - 284128
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554148E17A04BECD5041B81E850B3C3455415C8FC205C0CD50417B14AE073F3455411F85EBF1C9CD50418FC2F5F83734554100000080D8CD5041E17A149E2D34554148E17A44DACD5041EC51B87E2B345541F6285CDFDBCD5041C3F5286C28345541F6285CBFDCCD5041EC51B81E25345541F6285CAFDCCD5041333333B321345541A4703D6AD8CD5041000000A001345541AE47E1DAD6CD5041EC51B89E10345541E17A14CECCCD504185EB51080E3455418FC2F568CBCD50418FC2F598153455418FC2F588C6CD5041CDCCCCCC1434554133333363BBCD5041B81E85EB10345541F6285CEFB1CD5041CDCCCC3C0D345541C3F528FC93CD5041F6285CBF0534554185EB51E88FCD5041C3F5289C12345541295C8F528DCD50418FC2F5F81A345541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554114BFD8E8BDCD50414D7236EF3B34554132B08AA3D5CD50418EE909092B345541C2D0D7D9D6CD5041C79F68A6293455412D930219D8CD5041D8BF63D927345541B0B0DCA6D8CD5041798A430B2534554126CB438CD8CD5041161DE2C921345541399B8C55D7CD5041AE328D7A1734554116D5CB91D6CD5041F2C2C84F17345541C59DC1EBCBCD5041A858149F153455418FC2F568CBCD50418FC2F5981534554174EE7E60CBCD5041004A939715345541BA49D071CBCD5041EE8A0BC0153455417B626941CBCD50411B847D92153455418FC2F588C6CD5041CDCCCCCC1434554133333363BBCD5041B81E85EB10345541F6285CEFB1CD5041CDCCCC3C0D345541C3F528FC93CD5041F6285CBF0534554185EB51E88FCD5041C3F5289C12345541295C8F528DCD50418FC2F5F81A345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>75266 - 6679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000B81E85FBD3CC5041EC51B84E4C3455415C8FC285CDCC504114AE47514F345541EC51B85EAECC5041D7A370DD5F345541E17A146EACCC50415C8FC2B56534554114AE47D1A0CC5041AE47E12A6B34554166666656A0CC50417B14AEB773345541B81E859B9DCC50410AD7A3A082345541C3F528FC9DCC5041A4703DBA87345541A4703D4AA0CC50411F85EB918F3455410AD7A390A0CC5041AE47E16A933455419A999969B4CC5041295C8F728A3455410AD7A3C0C7CC504148E17AB4813455417B14AE17DBCC5041666666F6783455417B14AEA7D9CC50419A99998966345541D7A3704DD8CC5041A4703DFA54345541EC51B8FED5CC504185EB515850345541B81E85FBD3CC5041EC51B84E4C345541
+</a>
+
+<b>
+010600000002000000010300000001000000180000007B14AEA7D9CC50419A999989663455417A67D969D8CC5041E362166B563455416EB4AF44D8CC50418EDB3B1055345541131820B0D7CC504128EC6ABE53345541EC51B8FED5CC504185EB5158503455416EB7D87AD5CC5041B57B425B4F345541B15BD5A0CACC5041C8381E265534554108985671C3CC5041563D2DF658345541D8D15C06B6CC5041CBF1D1C75F3455415BF6CC7FAFCC5041A053915F63345541848AE46FACCC504188654CB065345541E17A146EACCC50415C8FC2B56534554114AE47D1A0CC5041AE47E12A6B34554166666656A0CC50417B14AEB773345541B81E859B9DCC50410AD7A3A082345541C3F528FC9DCC5041A4703DBA8734554121938CD79FCC5041F884B20B8E345541A4703D4AA0CC50411F85EB918F34554102FDF452A0CC50418EE8E00B903455410AD7A390A0CC5041AE47E16A933455419A999969B4CC5041295C8F728A3455410AD7A3C0C7CC504148E17AB4813455417B14AE17DBCC5041666666F6783455417B14AEA7D9CC50419A99998966345541010300000001000000050000003406A884D5CC50415A3D6F634F345541F0C71084D5CC504156D03F624F345541D5417C82D5CC5041E940145F4F3455416EB7D87AD5CC5041B57B425B4F3455413406A884D5CC50415A3D6F634F345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242127 - 146230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000007200000085EB51885ED85041A4703DDAC02055415C8FC2C55ED85041AE47E1CABE2055417B14AE475FD850418FC2F518BE205541295C8F5260D850418FC2F528BD20554114AE478160D8504100000080BC205541E17A141E60D85041C3F5282CBC20554148E17A445FD85041A4703DFABB2055410AD7A3905ED850415C8FC285BB205541EC51B8CE5DD850417B14AEF7BB205541333333B35CD8504152B81E45BC205541295C8F025BD850410AD7A390BB2055410AD7A3D059D850411F85EB41BC2055413D0AD77358D8504114AE4731BC2055416666668657D85041E17A149EBB205541F6285CAF56D8504114AE4711BA205541CDCCCC1C57D850415C8FC2C5B8205541713D0AD757D850413D0AD7C3B7205541A4703DBA58D8504148E17AD4B72055417B14AED759D8504152B81E05B8205541A4703D9A5AD85041666666F6B72055419A9999895BD850419A999949B62055419A9999995DD85041CDCCCC7CB62055411F85EBD15DD85041D7A3700DB62055413D0AD7535CD850418FC2F558B5205541295C8F525AD85041D7A370DDB4205541D7A370BD59D85041A4703D2AB4205541E17A145E5AD8504100000020B32055419A9999195AD85041D7A3707DB2205541CDCCCC3C59D85041AE47E14AB12055415C8FC26558D85041F6285CEFAF2055410000008056D85041000000E0AD205541AE47E12A56D8504148E17AF4AC205541CDCCCCAC56D850413D0AD733AC2055418FC2F59857D85041666666B6AB2055417B14AEC757D85041B81E85DBAA205541A4703DEA56D85041A4703DAAAA205541CDCCCC6C55D85041713D0AD7AA20554148E17A1454D8504148E17A94AA20554152B81E0553D850410AD7A3C0A9205541EC51B82E52D8504114AE4761A8205541CDCCCC1C52D8504185EB51A8A62055410000006052D8504152B81E95A5205541000000F052D85041F6285C8FA4205541E17A14EE53D850410AD7A310A42055416666665655D850413D0AD743A42055410AD7A3F055D85041713D0AA7A420554148E17AC456D85041713D0A47A42055413D0AD78356D8504148E17AA4A32055410AD7A3E055D850413D0AD783A32055411F85EB6154D8504185EB51C8A220554148E17A7453D8504152B81E05A2205541EC51B89E53D85041C3F528CCA020554148E17A5454D85041AE47E1AA9F2055417B14AE0755D85041EC51B8EE9F20554114AE47D155D8504114AE47D1A020554152B81ED556D850413D0AD7B3A02055419A99997957D8504114AE47B19F205541A4703D2A57D850418FC2F5E89E2055417B14AEB756D85041713D0A379E2055418FC2F5F856D85041CDCCCC5C9D205541E17A144E57D85041C3F5283C9C205541713D0AF757D85041D7A3703D9C205541AE47E19A58D85041295C8F829B205541D7A3704D58D850410AD7A3809A205541EC51B85E58D850418FC2F5A8992055413D0AD72359D850413D0AD78398205541F6285CEF59D8504185EB5108972055418FC2F5085BD85041713D0AF7942055411F85EB515BD850417B14AED78D205541F6285C0F57D85041CDCCCC8C8B205541A4703DAA53D85041C3F528AC89205541C3F528EC50D850413D0AD78388205541B81E854B4FD85041333333038820554185EB51384DD85041295C8FB2862055411F85EB714CD8504185EB5108862055410AD7A3304BD85041F6285C4F852055411F85EBB14AD850413333331385205541AE47E12A45D85041EC51B86E832055413333330341D850418FC2F5A8892055415C8FC2E53CD850418FC2F5688E205541295C8FE238D850415C8FC2B594205541CDCCCC5C38D8504185EB51D895205541A4703D7A35D85041B81E858B9B205541D7A370AD34D850415C8FC2B59C2055418FC2F56831D85041AE47E10AA0205541D7A3703D2ED85041CDCCCC4CA32055410AD7A3802FD850417B14AEC7A32055416666663631D8504148E17AA4A12055411F85EBA134D850411F85EBC19E2055413D0AD78337D8504185EB51689C205541D7A3709D3AD8504148E17A749820554185EB51083ED85041713D0A979A2055413333333342D850415C8FC2D59C2055416666665644D85041666666F6A12055413D0AD75347D850419A9999A9A62055419A99990949D85041000000F0AA205541E17A14AE49D850417B14AEF7AC20554185EB51884AD85041CDCCCCBCB22055418FC2F5984CD85041AE47E12ABB20554152B81EA550D85041EC51B85EBF205541EC51B8AE53D8504114AE4731C520554185EB51C855D850415C8FC2C5C2205541AE47E1EA56D8504114AE47D1C1205541713D0AF757D850413D0AD793C0205541AE47E14A5ED85041A4703D3AC8205541A4703D1A5ED85041AE47E18AC6205541C3F528DC5ED85041B81E85BBC42055417B14AE0760D85041B81E85FBC3205541AE47E1FA60D85041EC51B82EC4205541E17A14AE61D8504152B81E95C4205541CDCCCC7C61D85041CDCCCC2CC3205541E17A145E5FD850415C8FC255C3205541A4703D7A5ED85041A4703DBAC220554185EB51885ED85041A4703DDAC02055410C0000000000008052D85041CDCCCC3CBB205541E17A142E4FD85041E17A141EB42055415C8FC28550D85041EC51B8FEB22055411F85EB5150D85041F6285C1FB220554152B81E4551D85041713D0AE7B12055418FC2F57851D85041666666C6B2205541B81E851B53D85041713D0A27B3205541C3F528DC54D8504166666666B8205541A4703D1A55D85041D7A370FDB9205541F6285C5F54D8504185EB5118BB2055413D0AD74353D85041D7A3703DBB2055410000008052D85041CDCCCC3CBB2055410C0000008FC2F5E84DD85041D7A3709DAF205541A4703D9A4BD8504114AE47819F205541666666F64AD85041C3F5287C9A205541295C8F4249D85041EC51B84E95205541CDCCCCFC44D85041295C8F128F205541F6285CEF49D85041713D0AF7872055417B14AEC757D850410AD7A3B08F20554114AE47D158D850415C8FC2C5922055410AD7A3B050D85041D7A3704D9D2055410000001051D850417B14AE07A42055413333336351D8504114AE4771AF2055418FC2F5E84DD85041D7A3709DAF205541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB6F7CB750D85041B63B15C99D2055410AD7A3B050D85041D7A3704D9D2055412BEA80B250D85041968A064B9D2055412D505EB250D85041A11F9B479D205541215C01FD52D85041E83127539A20554114AE47D158D850415C8FC2C5922055419506A5C957D850415B227AB68F205541F3C0B00753D8504184A1290A8D205541F6285CEF49D85041713D0AF78720554183C8DD0645D850415A0940218F205541FA2A34E748D85041BE9E66C9942055414DFA885049D8504136CA8B619520554113F0554C4AD850412887F97698205541666666F64AD85041C3F5287C9A205541AD93C6034BD85041D85813E59A205541E597C1044BD85041D09E66E89A2055414248CE664DD8504102FBC110AC205541B924EDA84DD85041253F62DEAD205541A016AEE84DD850413B427C9BAF205541FD09027E4ED8504129EF6395AF205541FE00ACC84ED85041BCC55792AF2055413333336351D8504114AE4771AF2055419D29495151D85041213637FCAC20554112013C1951D85041307D9D9AA52055410E09160D51D8504185A80DD3A3205541AB6F7CB750D85041B63B15C99D205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242127 - 299104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000007200000085EB51885ED85041A4703DDAC02055415C8FC2C55ED85041AE47E1CABE2055417B14AE475FD850418FC2F518BE205541295C8F5260D850418FC2F528BD20554114AE478160D8504100000080BC205541E17A141E60D85041C3F5282CBC20554148E17A445FD85041A4703DFABB2055410AD7A3905ED850415C8FC285BB205541EC51B8CE5DD850417B14AEF7BB205541333333B35CD8504152B81E45BC205541295C8F025BD850410AD7A390BB2055410AD7A3D059D850411F85EB41BC2055413D0AD77358D8504114AE4731BC2055416666668657D85041E17A149EBB205541F6285CAF56D8504114AE4711BA205541CDCCCC1C57D850415C8FC2C5B8205541713D0AD757D850413D0AD7C3B7205541A4703DBA58D8504148E17AD4B72055417B14AED759D8504152B81E05B8205541A4703D9A5AD85041666666F6B72055419A9999895BD850419A999949B62055419A9999995DD85041CDCCCC7CB62055411F85EBD15DD85041D7A3700DB62055413D0AD7535CD850418FC2F558B5205541295C8F525AD85041D7A370DDB4205541D7A370BD59D85041A4703D2AB4205541E17A145E5AD8504100000020B32055419A9999195AD85041D7A3707DB2205541CDCCCC3C59D85041AE47E14AB12055415C8FC26558D85041F6285CEFAF2055410000008056D85041000000E0AD205541AE47E12A56D8504148E17AF4AC205541CDCCCCAC56D850413D0AD733AC2055418FC2F59857D85041666666B6AB2055417B14AEC757D85041B81E85DBAA205541A4703DEA56D85041A4703DAAAA205541CDCCCC6C55D85041713D0AD7AA20554148E17A1454D8504148E17A94AA20554152B81E0553D850410AD7A3C0A9205541EC51B82E52D8504114AE4761A8205541CDCCCC1C52D8504185EB51A8A62055410000006052D8504152B81E95A5205541000000F052D85041F6285C8FA4205541E17A14EE53D850410AD7A310A42055416666665655D850413D0AD743A42055410AD7A3F055D85041713D0AA7A420554148E17AC456D85041713D0A47A42055413D0AD78356D8504148E17AA4A32055410AD7A3E055D850413D0AD783A32055411F85EB6154D8504185EB51C8A220554148E17A7453D8504152B81E05A2205541EC51B89E53D85041C3F528CCA020554148E17A5454D85041AE47E1AA9F2055417B14AE0755D85041EC51B8EE9F20554114AE47D155D8504114AE47D1A020554152B81ED556D850413D0AD7B3A02055419A99997957D8504114AE47B19F205541A4703D2A57D850418FC2F5E89E2055417B14AEB756D85041713D0A379E2055418FC2F5F856D85041CDCCCC5C9D205541E17A144E57D85041C3F5283C9C205541713D0AF757D85041D7A3703D9C205541AE47E19A58D85041295C8F829B205541D7A3704D58D850410AD7A3809A205541EC51B85E58D850418FC2F5A8992055413D0AD72359D850413D0AD78398205541F6285CEF59D8504185EB5108972055418FC2F5085BD85041713D0AF7942055411F85EB515BD850417B14AED78D205541F6285C0F57D85041CDCCCC8C8B205541A4703DAA53D85041C3F528AC89205541C3F528EC50D850413D0AD78388205541B81E854B4FD85041333333038820554185EB51384DD85041295C8FB2862055411F85EB714CD8504185EB5108862055410AD7A3304BD85041F6285C4F852055411F85EBB14AD850413333331385205541AE47E12A45D85041EC51B86E832055413333330341D850418FC2F5A8892055415C8FC2E53CD850418FC2F5688E205541295C8FE238D850415C8FC2B594205541CDCCCC5C38D8504185EB51D895205541A4703D7A35D85041B81E858B9B205541D7A370AD34D850415C8FC2B59C2055418FC2F56831D85041AE47E10AA0205541D7A3703D2ED85041CDCCCC4CA32055410AD7A3802FD850417B14AEC7A32055416666663631D8504148E17AA4A12055411F85EBA134D850411F85EBC19E2055413D0AD78337D8504185EB51689C205541D7A3709D3AD8504148E17A749820554185EB51083ED85041713D0A979A2055413333333342D850415C8FC2D59C2055416666665644D85041666666F6A12055413D0AD75347D850419A9999A9A62055419A99990949D85041000000F0AA205541E17A14AE49D850417B14AEF7AC20554185EB51884AD85041CDCCCCBCB22055418FC2F5984CD85041AE47E12ABB20554152B81EA550D85041EC51B85EBF205541EC51B8AE53D8504114AE4731C520554185EB51C855D850415C8FC2C5C2205541AE47E1EA56D8504114AE47D1C1205541713D0AF757D850413D0AD793C0205541AE47E14A5ED85041A4703D3AC8205541A4703D1A5ED85041AE47E18AC6205541C3F528DC5ED85041B81E85BBC42055417B14AE0760D85041B81E85FBC3205541AE47E1FA60D85041EC51B82EC4205541E17A14AE61D8504152B81E95C4205541CDCCCC7C61D85041CDCCCC2CC3205541E17A145E5FD850415C8FC255C3205541A4703D7A5ED85041A4703DBAC220554185EB51885ED85041A4703DDAC02055410C0000000000008052D85041CDCCCC3CBB205541E17A142E4FD85041E17A141EB42055415C8FC28550D85041EC51B8FEB22055411F85EB5150D85041F6285C1FB220554152B81E4551D85041713D0AE7B12055418FC2F57851D85041666666C6B2205541B81E851B53D85041713D0A27B3205541C3F528DC54D8504166666666B8205541A4703D1A55D85041D7A370FDB9205541F6285C5F54D8504185EB5118BB2055413D0AD74353D85041D7A3703DBB2055410000008052D85041CDCCCC3CBB2055410C0000008FC2F5E84DD85041D7A3709DAF205541A4703D9A4BD8504114AE47819F205541666666F64AD85041C3F5287C9A205541295C8F4249D85041EC51B84E95205541CDCCCCFC44D85041295C8F128F205541F6285CEF49D85041713D0AF7872055417B14AEC757D850410AD7A3B08F20554114AE47D158D850415C8FC2C5922055410AD7A3B050D85041D7A3704D9D2055410000001051D850417B14AE07A42055413333336351D8504114AE4771AF2055418FC2F5E84DD85041D7A3709DAF205541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB6F7CB750D85041B63B15C99D2055410AD7A3B050D85041D7A3704D9D2055412BEA80B250D85041968A064B9D2055412D505EB250D85041A11F9B479D205541215C01FD52D85041E83127539A20554114AE47D158D850415C8FC2C5922055419506A5C957D850415B227AB68F205541F3C0B00753D8504184A1290A8D205541F6285CEF49D85041713D0AF78720554183C8DD0645D850415A0940218F205541FA2A34E748D85041BE9E66C9942055414DFA885049D8504136CA8B619520554113F0554C4AD850412887F97698205541666666F64AD85041C3F5287C9A205541AD93C6034BD85041D85813E59A205541E597C1044BD85041D09E66E89A2055414248CE664DD8504102FBC110AC205541B924EDA84DD85041253F62DEAD205541A016AEE84DD850413B427C9BAF205541FD09027E4ED8504129EF6395AF205541FE00ACC84ED85041BCC55792AF2055413333336351D8504114AE4771AF2055419D29495151D85041213637FCAC20554112013C1951D85041307D9D9AA52055410E09160D51D8504185A80DD3A3205541AB6F7CB750D85041B63B15C99D205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242168 - 1419666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001E000000AE47E13A050751413D0AD703ACFE5441C3F528BCF5065141EC51B8FEAAFE54419A9999A9F5065141E17A14EEC5FE54415C8FC2A5F60651415C8FC215C7FE5441C3F5283C1907514133333383CCFE54415C8FC25520075141E17A148ECDFE5441E17A14FE2407514133333363CEFE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441CDCCCCAC730751417B14AE37CAFE54413D0AD74374075141CDCCCC1CC9FE544166666606630751410AD7A360C1FE5441E17A140E53075141713D0A37BAFE5441F6285C0F500751415C8FC235BDFE544114AE479148075141D7A3704DC0FE5441F6285C0F430751411F85EB51C5FE5441333333A3370751411F85EBB1C1FE5441B81E85CB2E075141E17A147EBFFE5441E17A148E330751419A999939B8FE5441000000503807514152B81EB5B2FE5441C3F5280C34075141C3F528CCB1FE5441CDCCCCBC290751411F85EB31B0FE5441295C8F321407514100000000ADFE54419A9999990F075141295C8FB2ACFE5441AE47E13A050751413D0AD703ACFE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000050F958582B07514125815B47D0FE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441CDCCCCAC730751417B14AE37CAFE54413D0AD74374075141CDCCCC1CC9FE544166666606630751410AD7A360C1FE5441E17A140E53075141713D0A37BAFE5441F6285C0F500751415C8FC235BDFE544114AE479148075141D7A3704DC0FE5441F6285C0F430751411F85EB51C5FE5441333333A3370751411F85EBB1C1FE5441B81E85CB2E075141E17A147EBFFE5441E17A148E330751419A999939B8FE5441000000503807514152B81EB5B2FE5441C3F5280C34075141C3F528CCB1FE5441CDCCCCBC290751411F85EB31B0FE5441295C8F321407514100000000ADFE54419A9999990F075141295C8FB2ACFE5441AE47E13A050751413D0AD703ACFE5441C3F528BCF5065141EC51B8FEAAFE5441B25066B5F506514145B24CCEB4FE5441A44C49CFF5065141AFA936A3AEFE544199F7E5B70B07514107BA6029B0FE5441DB70E7F522075141AC98EF04B3FE54418FA02B583307514152777EE0B5FE54412E5F833F2D07514137D16542BEFE5441D64E59B92B07514114FACE11C2FE544150F958582B07514125815B47D0FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242168 - 3394195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001E000000AE47E13A050751413D0AD703ACFE5441C3F528BCF5065141EC51B8FEAAFE54419A9999A9F5065141E17A14EEC5FE54415C8FC2A5F60651415C8FC215C7FE5441C3F5283C1907514133333383CCFE54415C8FC25520075141E17A148ECDFE5441E17A14FE2407514133333363CEFE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441CDCCCCAC730751417B14AE37CAFE54413D0AD74374075141CDCCCC1CC9FE544166666606630751410AD7A360C1FE5441E17A140E53075141713D0A37BAFE5441F6285C0F500751415C8FC235BDFE544114AE479148075141D7A3704DC0FE5441F6285C0F430751411F85EB51C5FE5441333333A3370751411F85EBB1C1FE5441B81E85CB2E075141E17A147EBFFE5441E17A148E330751419A999939B8FE5441000000503807514152B81EB5B2FE5441C3F5280C34075141C3F528CCB1FE5441CDCCCCBC290751411F85EB31B0FE5441295C8F321407514100000000ADFE54419A9999990F075141295C8FB2ACFE5441AE47E13A050751413D0AD703ACFE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000050F958582B07514125815B47D0FE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441CDCCCCAC730751417B14AE37CAFE54413D0AD74374075141CDCCCC1CC9FE544166666606630751410AD7A360C1FE5441E17A140E53075141713D0A37BAFE5441F6285C0F500751415C8FC235BDFE544114AE479148075141D7A3704DC0FE5441F6285C0F430751411F85EB51C5FE5441333333A3370751411F85EBB1C1FE5441B81E85CB2E075141E17A147EBFFE5441E17A148E330751419A999939B8FE5441000000503807514152B81EB5B2FE5441C3F5280C34075141C3F528CCB1FE5441CDCCCCBC290751411F85EB31B0FE5441295C8F321407514100000000ADFE54419A9999990F075141295C8FB2ACFE5441AE47E13A050751413D0AD703ACFE5441C3F528BCF5065141EC51B8FEAAFE5441B25066B5F506514145B24CCEB4FE5441A44C49CFF5065141AFA936A3AEFE544199F7E5B70B07514107BA6029B0FE5441DB70E7F522075141AC98EF04B3FE54418FA02B583307514152777EE0B5FE54412E5F833F2D07514137D16542BEFE5441D64E59B92B07514114FACE11C2FE544150F958582B07514125815B47D0FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>94631 - 198349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000B81E85ABBC9450418FC2F588DC3455415C8FC245C09450415C8FC295DF345541295C8FB2C294504133333303E0345541A4703D7AC4945041B81E852BE034554185EB5198C594504152B81E45E03455415C8FC295C6945041B81E855BE03455415C8FC295C79450411F85EB71E0345541CDCCCC2CC8945041F6285C7FD9345541AE47E1DABC94504185EB5178D8345541B81E85ABBC9450418FC2F588DC345541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000E6FCD25C8945041B764643BD934554187DF40D7BC945041A7E41BB5D8345541D3052938BC945041CD197782DD34554109C9385FC094504132A63F9ADF345541333EC288C1945041F875B3CEDF3455411DFEDCBDC294504139173304E03455417835C032C394504123F08A0EE03455418377ACDCC39450414BFA931DE03455416F965A95C7945041515EB55BE03455412369BE98C7945041B7DAC84EE0345541CDCCCC2CC8945041F6285C7FD93455410E6FCD25C8945041B764643BD9345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>94631 - 355633
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000B81E85ABBC9450418FC2F588DC3455415C8FC245C09450415C8FC295DF345541295C8FB2C294504133333303E0345541A4703D7AC4945041B81E852BE034554185EB5198C594504152B81E45E03455415C8FC295C6945041B81E855BE03455415C8FC295C79450411F85EB71E0345541CDCCCC2CC8945041F6285C7FD9345541AE47E1DABC94504185EB5178D8345541B81E85ABBC9450418FC2F588DC345541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000E6FCD25C8945041B764643BD934554187DF40D7BC945041A7E41BB5D8345541D3052938BC945041CD197782DD34554109C9385FC094504132A63F9ADF345541333EC288C1945041F875B3CEDF3455411DFEDCBDC294504139173304E03455417835C032C394504123F08A0EE03455418377ACDCC39450414BFA931DE03455416F965A95C7945041515EB55BE03455412369BE98C7945041B7DAC84EE0345541CDCCCC2CC8945041F6285C7FD93455410E6FCD25C8945041B764643BD9345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 1611805
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541D7A370AD699E5041C3F5288C4B3B554152B81EF5649E5041EC51B87E553B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000003FBEE1557D9E50410E32EE97893B554161AE4ADD7F9E5041166D2E438B3B554197BF2719809E504179A7A9E98A3B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541D7A370AD699E5041C3F5288C4B3B554152B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B55419C182FCD599E504196317406AA3B554133CB4F3F5A9E50416C04C26AA93B5541A4938A55649E50412A38CDD9AF3B55410AEED5E2639E5041C052FA66B03B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B5541B8F161537A9E504160E67D8B933B554183DD2F327B9E504168A2503E923B5541FF0AC327799E504134114B04913B55413FBEE1557D9E50410E32EE97893B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 3160737
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541D7A370AD699E5041C3F5288C4B3B554152B81EF5649E5041EC51B87E553B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000083DD2F327B9E504168A2503E923B554165AE4ADD7F9E5041186D2E438B3B55413FBEE1557D9E50410E32EE97893B5541FF0AC327799E504134114B04913B554183DD2F327B9E504168A2503E923B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 3192317
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541D7A370AD699E5041C3F5288C4B3B554152B81EF5649E5041EC51B87E553B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000083DD2F327B9E504168A2503E923B554165AE4ADD7F9E5041186D2E438B3B55413FBEE1557D9E50410E32EE97893B5541FF0AC327799E504134114B04913B554183DD2F327B9E504168A2503E923B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 3335585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541D7A370AD699E5041C3F5288C4B3B554152B81EF5649E5041EC51B87E553B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000003FBEE1557D9E50410E32EE97893B554161AE4ADD7F9E5041166D2E438B3B554197BF2719809E504179A7A9E98A3B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541D7A370AD699E5041C3F5288C4B3B554152B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B55419C182FCD599E504196317406AA3B554133CB4F3F5A9E50416C04C26AA93B5541A4938A55649E50412A38CDD9AF3B55410AEED5E2639E5041C052FA66B03B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B5541B8F161537A9E504160E67D8B933B554183DD2F327B9E504168A2503E923B5541FF0AC327799E504134114B04913B55413FBEE1557D9E50410E32EE97893B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97789 - 3690270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005A0000009A99991947A35041F6285C0F5F385541E17A14DE46A350413D0AD7735E3855415C8FC2A546A350410AD7A3E05D3855410AD7A3203FA35041EC51B8FE603855418FC2F5983EA3504185EB51486138554114AE47513DA35041A4703DFA6138554114AE47C13BA35041295C8FD2623855411F85EBC139A3504185EB51E8633855410AD7A38038A350416666669664385541EC51B8BE37A35041F6285CFF6438554114AE475137A35041AE47E13A653855411F85EB7136A350413D0AD7B3653855418FC2F5982DA35041CDCCCC7C6A385541AE47E1EA2DA35041C3F5289C6C385541713D0A2730A35041C3F5280C6F3855410AD7A3E031A35041A4703DFA70385541B81E856B33A35041713D0A2772385541EC51B84E35A35041666666A673385541F6285CDF37A35041713D0AA775385541D7A3703D3CA35041F6285C1F793855411F85EB1142A35041295C8F4274385541CDCCCC9C43A35041666666167338554114AE477146A350417B14AE3771385541333333234AA35041666666E66E3855417B14AE974CA35041F6285C6F6D385541713D0A374CA3504152B81E756C3855413D0AD7834FA3504148E17A146C3855413D0AD71356A350417B14AED76B3855417B14AEE75AA35041713D0AE76B385541C3F528CC5CA35041A4703D1A6C385541000000F05FA350418FC2F5886C3855419A99995963A35041D7A3704D6D3855413D0AD70365A35041D7A370AD6D3855417B14AE376EA35041666666B6703855417B14AEB76FA350415C8FC24571385541CDCCCCBC70A350415C8FC2556F38554185EB51F870A35041000000E06E3855411F85EB1172A35041295C8FE26C385541CDCCCC2C72A350411F85EBB16C385541713D0AD772A35041EC51B87E6B385541EC51B8BE73A35041A4703DDA6938554148E17A0474A35041C3F5285C693855417B14AEC774A35041AE47E1FA67385541666666E674A350413D0AD7C3673855413D0AD78375A3504148E17AA46638554152B81E1576A35041F6285C9F65385541A4703D2A77A35041AE47E1AA63385541713D0A4777A35041B81E856B63385541333333C378A3504148E17AA4603855410AD7A3107AA350415C8FC2355E385541AE47E1EA7BA3504152B81EE55E38554114AE47C187A35041AE47E1DA633855418FC2F58889A35041C3F528DC64385541EC51B85E8DA35041E17A141E67385541C3F5288C95A350411F85EBD16C38554152B81E65A0A350419A999929753855417B14AE47A1A35041295C8F5274385541333333A3A1A35041B81E85FB73385541E17A141EA2A35041713D0A8773385541A4703DBAA2A35041295C8FF272385541C3F5289CA3A35041B81E851B7238554185EB5158A4A350418FC2F56871385541E17A14FEA4A35041AE47E1CA7038554148E17A74A5A35041A4703D5A70385541B81E85EBA5A350418FC2F5E86F385541B81E858BA6A35041000000506F3855410AD7A310A7A3504148E17AD46E385541F6285C5FA7A3504185EB51886E3855419A9999999CA3504185EB51B8663855410AD7A3B093A35041CDCCCCEC60385541333333D38CA3504114AE47915D385541A4703D5A81A35041295C8F125A385541F6285CEF7CA350418FC2F5D8583855419A9999096FA350417B14AEF755385541295C8FB268A350413D0AD713563855410AD7A3B068A350418FC2F548573855417B14AE9768A35041D7A3702D593855410000006068A35041C3F5282C5C3855413D0AD76366A3504114AE47F15B38554152B81E5564A35041713D0AB75B3855415C8FC28561A35041713D0AA75B385541000000C05FA35041713D0AA75B38554185EB51185DA3504185EB51C85B3855413D0AD71359A350415C8FC2255C385541B81E854B55A35041000000A05C385541A4703D0A54A35041C3F528CC5C38554152B81E5550A35041D7A3708D5D385541F6285C2F4BA35041C3F528DC5E3855419A99997947A35041A4703D0A603855419A99991947A35041F6285C0F5F385541
+</a>
+
+<b>
+0106000000010000000103000000010000002300000085EB518853A350413D0AD79384385541C3F5283C59A35041F6285CEF83385541333333735BA350413D0AD7538538554148E17A145FA35041C3F5289C873855410AD7A37063A35041A4703D5A8A385541E17A14CE64A3504114AE47B1873855419A99995966A35041713D0A4783385541295C8F6269A35041E17A140E7B3855415C8FC2A56AA35041B81E852B783855415C8FC2156DA35041EC51B86E74385541CC20F1B27CA35041E78070CC58385541716915EC6FA3504108539D2656385541AF6F4F836EA35041EC8B02FA553855418089009A68A35041A782831456385541BB694B9D68A3504146A375C058385541BC5A716168A350412EE84A185C385541A67A4E9860A35041713D0AA75B385541565E067759A350419EB1BF1C5C385541BFC4DE8E52A3504152546A195D385541EDB05D974DA3504100B7B03F5E385541CD35B88747A3504196C7BF0560385541D6736CAC46A350415380E8DD5D385541CEC44BFB43A350416A2690FB5E3855411E6EADCA3EA3504162C2592D61385541AE5F9A8837A3504129C3CA1C6538554137E4A5852EA3504131CE1FFD69385541BF05BDBC2DA35041499000EA6A3855413201AA892DA350411F41DB7D6B3855417F2E0B8C2DA35041CC9B2B0E6C385541E82FFE0D2EA350414595D9D66D385541D7A3703D3CA35041F6285C1F79385541C3F528AC40A350415C8FC2A57C385541CDCCCC1C44A35041EC51B84E7F385541E17A14DE4BA3504114AE47718538554185EB518853A350413D0AD79384385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905276 - 59579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEA789DC5041AE47E13A6B235541295C8FD288DC50417B14AEF76A235541D7A3701D7DDC5041F6285C0F832355419A99990983DC50415C8FC26586235541295C8F8282DC5041EC51B8CE8623554148E17A8486DC5041F6285CFF8823554185EB515896DC50415C8FC245732355410AD7A39094DC5041AE47E1CA71235541EC51B8DE8FDC5041F6285C7F6E2355417B14AEA789DC5041AE47E13A6B235541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000C2A57D1D7DDC50416D64410F83235541532CFB507DDC504134A9672C832355419A99990983DC50415C8FC26586235541619CC70683DC504118BAF367862355413F41930A83DC504134CA196A86235541B146588682DC50410203D9CE862355417662848786DC5041DBF230FB8823554169AC7D9787DC50419183E08587235541DE2FF50B89DC504134FB9F8685235541E4C596788EDC5041201493147E2355417F60944F96DC504171075C477323554162ADC68E94DC5041F86692C971235541F6284FB293DC50415A8FD82E71235541229C11E38FDC504104EEF18B6E235541215E328F89DC50416C93F7356B23554166BC5CD388DC5041A106B9FB6A235541423AB85386DC50416D67541A70235541D0C026317EDC5041E06CFBD780235541C2A57D1D7DDC50416D64410F83235541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>180179 - 1741516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17A9468A750418FC2F5284E1655416666666668A7504152B81E154E165541F6285C7F5AA7504133333313491655410AD7A3C042A75041C3F5280C38165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541C3F5284C2CA7504152B81EA543165541B81E85BB28A75041D7A3704D4B165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B165541C3F5287C1BA7504185EB51786C1655419A99997939A750419A9999F96C165541295C8FA235A75041F6285C8F7D1655417B14AE772EA750415C8FC27593165541713D0A272FA750419A99997994165541666666163FA750417B14AE7795165541E17A14AE37A75041CDCCCC8CA7165541B81E854B38A7504166666696A81655417B14AE3746A75041EC51B81EAA1655418FC2F5984BA75041713D0AB7AA165541CDCCCC8C57A750418FC2F508AC16554148E17AE464A750411F85EB81AD165541AE47E17A73A750415C8FC27586165541B81E851B84A7504152B81EF55916554185EB51686DA75041A4703D3A5016554148E17A9468A750418FC2F5284E165541
+</a>
+
+<b>
+010600000001000000010300000001000000250000008D06320252A7504140C9D3FC421655416FE920F851A750416688A3124316554114AE47C142A7504152B81E0538165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541295C8FD230A75041295C8F4238165541C3F5284C2CA7504152B81EA5431655415F3BF4E429A7504173CC8FCE48165541B81E85BB28A75041D7A3704D4B165541A02F4DFF27A75041DBEA0F7E4C165541D351CB3A27A75041986F19BC4D165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B1655410C51E6D01BA750419936BF796C16554188D20CF81FA75041E035A68B6C16554127E8D3CE23A750413DBD329C6C1655410A7233EE28A750418EC447B26C1655411FE4AD0E2DA75041C70012C46C16554153A423AD30A7504154C2ABD36C1655419A99997939A750419A9999F96C165541295C8FA235A75041F6285C8F7D1655417B14AE772EA750415C8FC27593165541713D0A272FA750419A99997994165541666666163FA750417B14AE7795165541E17A14AE37A75041CDCCCC8CA7165541B81E854B38A7504166666696A81655417B14AE3746A75041EC51B81EAA1655418FC2F5984BA75041713D0AB7AA165541CDCCCC8C57A750418FC2F508AC16554148E17AE464A750411F85EB81AD165541AE47E17A73A750415C8FC27586165541B81E851B84A7504152B81EF55916554185EB51686DA75041A4703D3A5016554148E17A9468A750418FC2F5284E1655416666666668A7504152B81E154E165541F6285C7F5AA7504133333313491655418D06320252A7504140C9D3FC42165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>180179 - 3403417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17A9468A750418FC2F5284E1655416666666668A7504152B81E154E165541F6285C7F5AA7504133333313491655410AD7A3C042A75041C3F5280C38165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541C3F5284C2CA7504152B81EA543165541B81E85BB28A75041D7A3704D4B165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B165541C3F5287C1BA7504185EB51786C1655419A99997939A750419A9999F96C165541295C8FA235A75041F6285C8F7D1655417B14AE772EA750415C8FC27593165541713D0A272FA750419A99997994165541666666163FA750417B14AE7795165541E17A14AE37A75041CDCCCC8CA7165541B81E854B38A7504166666696A81655417B14AE3746A75041EC51B81EAA1655418FC2F5984BA75041713D0AB7AA165541CDCCCC8C57A750418FC2F508AC16554148E17AE464A750411F85EB81AD165541AE47E17A73A750415C8FC27586165541B81E851B84A7504152B81EF55916554185EB51686DA75041A4703D3A5016554148E17A9468A750418FC2F5284E165541
+</a>
+
+<b>
+010600000001000000010300000001000000250000008D06320252A7504140C9D3FC421655416FE920F851A750416688A3124316554114AE47C142A7504152B81E0538165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541295C8FD230A75041295C8F4238165541C3F5284C2CA7504152B81EA5431655415F3BF4E429A7504173CC8FCE48165541B81E85BB28A75041D7A3704D4B165541A02F4DFF27A75041DBEA0F7E4C165541D351CB3A27A75041986F19BC4D165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B1655410C51E6D01BA750419936BF796C16554188D20CF81FA75041E035A68B6C16554127E8D3CE23A750413DBD329C6C1655410A7233EE28A750418EC447B26C1655411FE4AD0E2DA75041C70012C46C16554153A423AD30A7504154C2ABD36C1655419A99997939A750419A9999F96C165541295C8FA235A75041F6285C8F7D1655417B14AE772EA750415C8FC27593165541713D0A272FA750419A99997994165541666666163FA750417B14AE7795165541E17A14AE37A75041CDCCCC8CA7165541B81E854B38A7504166666696A81655417B14AE3746A75041EC51B81EAA1655418FC2F5984BA75041713D0AB7AA165541CDCCCC8C57A750418FC2F508AC16554148E17AE464A750411F85EB81AD165541AE47E17A73A750415C8FC27586165541B81E851B84A7504152B81EF55916554185EB51686DA75041A4703D3A5016554148E17A9468A750418FC2F5284E1655416666666668A7504152B81E154E165541F6285C7F5AA7504133333313491655418D06320252A7504140C9D3FC42165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>182432 - 2913192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F5282C0E9A50416666668606FD5441F6285C6F0B9A504152B81E55C8FC544152B81E05099A50416666667691FC5441D7A3706DE89950413D0AD7739EFC544148E17AF4E49950418FC2F5B89FFC5441A4703D3AE2995041C3F5281CA0FC5441CDCCCC8CDD995041AE47E19AA1FC54419A9999F9D8995041295C8F42A1FC5441B81E85CBD7995041AE47E16AA2FC54417B14AE07D9995041000000E0B7FC544114AE4761CD995041E17A148EB8FC54415C8FC2C5CD9950415C8FC2B5C1FC544100000000CE995041F6285CDFC5FC54410AD7A390CE9950415C8FC245C7FC54419A999939D299504185EB514808FD544114AE4751D499504185EB518808FD5441C3F528BCF2995041AE47E17A07FD5441C3F5282C0E9A50416666668606FD5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C3F5282C0E9A50416666668606FD5441B1843E80169A50418F78013C06FD5441DDF22E4A169A50411D22896302FD54419138B540139A5041DAC76D3DC6FC54413ABC967E109A504119F78D9C8FFC5441F036CA71109A50417F21F9CD8EFC544148E17AF40F9A5041AE47E1DA8EFC54415CB3FC0D0E9A5041032746778FFC5441DBB2CB05099A50418B6A367691FC544122830B21099A5041FF82DEF093FC5441F86254C1099A50415BCE9D2AA2FC544152A81F3D0A9A5041733A4727ADFC54415C9B60850A9A5041F91BEB90B3FC5441019AFAF20A9A5041D8B01E4BBDFC54410EEB6B820B9A504131962C06CAFC5441B196C8A60B9A50419FAD4540CDFC544122F7DDFF0B9A504100AE2228D5FC54414C6643780C9A5041534262D7DFFC54417A73F80C0D9A50419A6FD209EDFC5441C3F5282C0E9A50416666668606FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>221475 - 5296217
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000AE47E16AD23F51418FC2F518D7A954418FC2F568D33F5141CDCCCC7CD6A9544148E17A84D43F5141E17A14DED4A95441E17A14FED43F51418FC2F5C8CEA954415C8FC2C5D53F514133333303C7A95441EC51B82ED63F51415C8FC295C3A95441A4703D3AD63F5141CDCCCC6CC0A954413D0AD713D63F5141D7A3703DBDA954411F85EB91D53F51417B14AE37BAA954413D0AD743D43F5141333333F3B6A95441C3F5284CD33F5141AE47E11AB4A95441E17A143ED23F51410AD7A390B1A954419A9999A9D03F5141E17A14AEAEA9544185EB5138BC3F51413D0AD7E3ACA95441713D0A47AD3F5141A4703D8AABA9544133333393A83F5141AE47E1CAD2A9544152B81ED5A83F51417B14AE77D3A95441AE47E16AD23F51418FC2F518D7A95441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000A1C95C53703F51418489D0D3CDA954415075C6A8753F5141AB02104BCEA9544116D0C1BB7F3F514183AE9B52CFA95441D213EFFB8A3F5141E878FA6CD0A954413C90A1259D3F51413C191F0BD2A954416A8A43B1B23F5141CB3390F4D3A9544156EF68F5CA3F51419BC84D29D6A9544143A23A2AD23F514116BDE6BFD6A954412F7800AED23F514167616D87D6A95441CBA93F6AD33F5141F36CD4F0D5A95441A355CB71D43F5141DD46FC9DD4A954412A5DD0B1D53F5141A50E36C7C8A95441D8B849EAD53F5141FAD14EB4C3A954418714C322D63F5141477E99CEBFA95441B97BA3C4D53F51418100AA6CBCA95441AA209095D53F5141DE60604DBAA95441F11C076FD33F5141893E6981B4A9544190AAE758D23F51417EA442AFB1A95441E72964ACD03F51413FD474AEAEA95441544566D0CD3F514192E6AFA2AAA95441E13EFDB3C93F51410CD85C11A6A95441B40C15E1C63F514101D5A80FA3A95441628F2C6AC53F51419D6B1365A1A954416C08FBD9C23F514134930F6B9EA95441F1F88A1BC13F51412D7ADAD49BA95441B0B90B23BF3F514161C6127C98A95441316EBAF7BC3F514195B86C5698A95441F969275FB33F514126F0C49097A95441AA505BEAAA3F5141B5271DCB96A95441C8ADD2A09F3F5141964AFCCC95A95441DFFD2379913F5141DB518F8394A954412CD77182873F514114FFAAA193A95441F2002497863F5141BB746E8593A95441ECB9710E773F51414A5C782492A954415A9F0025753F514140FB5F8AA2A95441C3712392723F5141FF173752B6A954413657B2A8703F5141516E1129C7A95441BA621912703F5141D4568443CDA95441A1C95C53703F51418489D0D3CDA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649536 - 1305857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004F0000005C8FC23557545141C3F5282C58E154415C8FC225545451410AD7A30057E154419A9999894E545141E17A14EE5DE15441713D0A574A545141713D0A3759E15441713D0A87495451410000003057E154418FC2F5B8495451415C8FC23550E154417B14AEE7475451415C8FC2154EE154417B14AEE747545141D7A370ED48E15441AE47E15A49545141000000603EE154418FC2F5084B5451410000003037E15441F6285C4F4C54514185EB512831E15441666666964D5451419A9999B92AE154413D0AD7834E5451411F85EBE123E154415C8FC2354F54514148E17AF41AE154415C8FC2354F5451415C8FC2E516E15441AE47E18A48545141713D0AD70AE15441D7A370DD46545141F6285CEF06E1544114AE4751445451418FC2F5B805E15441D7A3705D3F5451415C8FC2A503E1544152B81E253B545141C3F528AC01E15441D7A370AD365451411F85EB21FFE054415C8FC225355451413D0AD703FEE05441F6285C0F34545141EC51B8DEFCE05441D7A3701D325451418FC2F568FAE054417B14AE373054514152B81EF5F7E05441CDCCCCAC2E5451415C8FC275F5E054418FC2F5E82A545141F6285CDFEEE054417B14AEF7245451417B14AE97E5E05441F6285CFF0E545141F6285CAFEBE05441666666661454514185EB5178FBE054415C8FC2051A545141713D0AE70BE15441B81E858B1B545141D7A370DD10E1544114AE47311E545141CDCCCC0C18E154413D0AD7C31F54514152B81EF51BE15441C3F5287C235451413D0AD7B323E15441B81E852B28545141333333632EE15441AE47E10A2B545141D7A3707D35E154413D0AD7C32C545141EC51B8AE3CE154411F85EB912D545141666666A642E15441EC51B8AE2D5451410AD7A3D048E1544148E17A142D545141CDCCCC1C4FE1544148E17AD42A545141713D0AF757E15441D7A3708D27545141B81E856B63E15441B81E856B23545141CDCCCCDC71E154418FC2F5081D54514114AE476186E15441E17A14BE1B545141E17A145E8DE15441D7A370AD1B5451418FC2F57895E15441CDCCCC4C1C545141AE47E12A9BE15441C3F528BC1D545141713D0A87A1E154410AD7A3901F5451419A999959A7E15441A4703D7A205451418FC2F5C8A8E15441A4703D8A245451417B14AEE7A8E1544185EB5128305451413D0AD753A8E154419A9999F932545141713D0AE7A7E15441713D0A173554514166666606A5E154417B14AE973754514148E17AB4A2E15441D7A3702D3A5451418FC2F538A0E15441713D0AC73D545141EC51B8EE9DE15441000000D03B5451416666661697E154417B14AE473B545141333333E394E1544152B81ED53A5451418FC2F5A893E15441A4703D1A3E5451417B14AE2792E1544100000000405451419A99995992E1544114AE478141545141713D0A1792E154415C8FC2A54B545141B81E85EB8CE154415C8FC2055454514148E17A1488E15441666666A659545141A4703DCA85E1544152B81EC55D545141333333D383E15441000000206054514185EB517881E154413D0AD73363545141C3F5289C7DE15441F6285C9F65545141295C8FF279E154411F85EB4167545141333333D375E15441EC51B85E68545141F6285C4F71E1544185EB513869545141333333136CE15441CDCCCC3C69545141AE47E13A68E1544133333323685451417B14AE9763E15441295C8FC265545141AE47E13A60E15441000000805F545141333333A35CE154415C8FC23557545141C3F5282C58E15441
+</a>
+
+<b>
+010600000001000000010300000001000000250000007E9131C436545141671C3A6B75E15441FF0B8BA236545141FDB4753E74E154417549D53936545141FF5E47CB73E154412D79357B35545141A103807E73E15441FC8B13C633545141F0D7012373E15441C42DD2DE2D54514111486FE372E1544176C86C5F27545141A60A6F5B72E15441285F6E7A23545141480CB0A871E154418FC2F5081D54514114AE476186E15441E17A14BE1B545141E17A145E8DE15441D7A370AD1B5451418FC2F57895E15441CDCCCC4C1C545141AE47E12A9BE15441C3F528BC1D545141713D0A87A1E154410AD7A3901F5451419A999959A7E15441A4703D7A205451418FC2F5C8A8E15441A4703D8A245451417B14AEE7A8E1544185EB5128305451413D0AD753A8E154419A9999F932545141713D0AE7A7E15441713D0A173554514166666606A5E154417B14AE973754514148E17AB4A2E15441D7A3702D3A5451418FC2F538A0E15441713D0AC73D545141EC51B8EE9DE15441000000D03B5451416666661697E154417B14AE473B545141333333E394E1544152B81ED53A5451418FC2F5A893E154411A60A9BF3C5451411DDB30C792E15441A9C0CE0B3D54514108CAB5AA92E15441279897513B545141F5463B9891E154417C1E8C6439545141F9911AA68FE154411860FC4C38545141C5D6D12F8DE154417F696B72375451415B7CF4958AE15441BE8899C5365451413AC1DE7E86E15441BB21066536545141F01B889582E15441E10B473736545141D22E993F7FE1544124F99B4B365451416A1F9BB37AE15441779B44B136545141BF89DB7376E154417E9131C436545141671C3A6B75E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649536 - 3436032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004F0000005C8FC23557545141C3F5282C58E154415C8FC225545451410AD7A30057E154419A9999894E545141E17A14EE5DE15441713D0A574A545141713D0A3759E15441713D0A87495451410000003057E154418FC2F5B8495451415C8FC23550E154417B14AEE7475451415C8FC2154EE154417B14AEE747545141D7A370ED48E15441AE47E15A49545141000000603EE154418FC2F5084B5451410000003037E15441F6285C4F4C54514185EB512831E15441666666964D5451419A9999B92AE154413D0AD7834E5451411F85EBE123E154415C8FC2354F54514148E17AF41AE154415C8FC2354F5451415C8FC2E516E15441AE47E18A48545141713D0AD70AE15441D7A370DD46545141F6285CEF06E1544114AE4751445451418FC2F5B805E15441D7A3705D3F5451415C8FC2A503E1544152B81E253B545141C3F528AC01E15441D7A370AD365451411F85EB21FFE054415C8FC225355451413D0AD703FEE05441F6285C0F34545141EC51B8DEFCE05441D7A3701D325451418FC2F568FAE054417B14AE373054514152B81EF5F7E05441CDCCCCAC2E5451415C8FC275F5E054418FC2F5E82A545141F6285CDFEEE054417B14AEF7245451417B14AE97E5E05441F6285CFF0E545141F6285CAFEBE05441666666661454514185EB5178FBE054415C8FC2051A545141713D0AE70BE15441B81E858B1B545141D7A370DD10E1544114AE47311E545141CDCCCC0C18E154413D0AD7C31F54514152B81EF51BE15441C3F5287C235451413D0AD7B323E15441B81E852B28545141333333632EE15441AE47E10A2B545141D7A3707D35E154413D0AD7C32C545141EC51B8AE3CE154411F85EB912D545141666666A642E15441EC51B8AE2D5451410AD7A3D048E1544148E17A142D545141CDCCCC1C4FE1544148E17AD42A545141713D0AF757E15441D7A3708D27545141B81E856B63E15441B81E856B23545141CDCCCCDC71E154418FC2F5081D54514114AE476186E15441E17A14BE1B545141E17A145E8DE15441D7A370AD1B5451418FC2F57895E15441CDCCCC4C1C545141AE47E12A9BE15441C3F528BC1D545141713D0A87A1E154410AD7A3901F5451419A999959A7E15441A4703D7A205451418FC2F5C8A8E15441A4703D8A245451417B14AEE7A8E1544185EB5128305451413D0AD753A8E154419A9999F932545141713D0AE7A7E15441713D0A173554514166666606A5E154417B14AE973754514148E17AB4A2E15441D7A3702D3A5451418FC2F538A0E15441713D0AC73D545141EC51B8EE9DE15441000000D03B5451416666661697E154417B14AE473B545141333333E394E1544152B81ED53A5451418FC2F5A893E15441A4703D1A3E5451417B14AE2792E1544100000000405451419A99995992E1544114AE478141545141713D0A1792E154415C8FC2A54B545141B81E85EB8CE154415C8FC2055454514148E17A1488E15441666666A659545141A4703DCA85E1544152B81EC55D545141333333D383E15441000000206054514185EB517881E154413D0AD73363545141C3F5289C7DE15441F6285C9F65545141295C8FF279E154411F85EB4167545141333333D375E15441EC51B85E68545141F6285C4F71E1544185EB513869545141333333136CE15441CDCCCC3C69545141AE47E13A68E1544133333323685451417B14AE9763E15441295C8FC265545141AE47E13A60E15441000000805F545141333333A35CE154415C8FC23557545141C3F5282C58E15441
+</a>
+
+<b>
+010600000001000000010300000001000000250000007E9131C436545141671C3A6B75E15441FF0B8BA236545141FDB4753E74E154417549D53936545141FF5E47CB73E154412D79357B35545141A103807E73E15441FC8B13C633545141F0D7012373E15441C42DD2DE2D54514111486FE372E1544176C86C5F27545141A60A6F5B72E15441285F6E7A23545141480CB0A871E154418FC2F5081D54514114AE476186E15441E17A14BE1B545141E17A145E8DE15441D7A370AD1B5451418FC2F57895E15441CDCCCC4C1C545141AE47E12A9BE15441C3F528BC1D545141713D0A87A1E154410AD7A3901F5451419A999959A7E15441A4703D7A205451418FC2F5C8A8E15441A4703D8A245451417B14AEE7A8E1544185EB5128305451413D0AD753A8E154419A9999F932545141713D0AE7A7E15441713D0A173554514166666606A5E154417B14AE973754514148E17AB4A2E15441D7A3702D3A5451418FC2F538A0E15441713D0AC73D545141EC51B8EE9DE15441000000D03B5451416666661697E154417B14AE473B545141333333E394E1544152B81ED53A5451418FC2F5A893E154411A60A9BF3C5451411DDB30C792E15441A9C0CE0B3D54514108CAB5AA92E15441279897513B545141F5463B9891E154417C1E8C6439545141F9911AA68FE154411860FC4C38545141C5D6D12F8DE154417F696B72375451415B7CF4958AE15441BE8899C5365451413AC1DE7E86E15441BB21066536545141F01B889582E15441E10B473736545141D22E993F7FE1544124F99B4B365451416A1F9BB37AE15441779B44B136545141BF89DB7376E154417E9131C436545141671C3A6B75E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224518 - 56258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000EC51B84E0DC850411F85EB214B5D5441713D0A3709C850417B14AE17535D5441C3F5286C09C85041F6285CDF535D5441E17A14DE09C85041B81E859B545D544185EB51C80EC850415C8FC2455C5D5441000000F010C8504114AE4721605D5441D7A370DD12C85041AE47E1FA675D54411F85EB8117C85041000000206E5D54413D0AD7A329C85041E17A147E685D5441B81E850B48C850419A9999095F5D5441666666A645C8504148E17A54555D54410000004043C850418FC2F5A84B5D5441CDCCCCFC40C85041CDCCCC7C425D5441D7A370BD3CC85041AE47E1EA415D5441333333333AC85041713D0AE7405D544148E17A6438C85041295C8F02405D54419A9999B937C850411F85EBF1405D54417B14AEB736C850419A999909465D544185EB51A830C8504185EB5108475D5441D7A3707D2FC85041A4703DDA435D5441A4703DAA2CC8504185EB5128455D54415C8FC23529C85041EC51B80E3B5D54417B14AE7723C8504148E17AD43B5D54413D0AD73321C850413D0AD7233C5D5441EC51B83E12C85041B81E85DB3D5D54415C8FC2850CC85041CDCCCC3C3E5D5441E17A145E0AC8504152B81E953D5D5441333333230DC850419A9999D9455D5441EC51B84E0DC850411F85EB214B5D5441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000333333230DC850419A9999D9455D54414B53B1310DC85041184AF09B475D5441052DEA340DC850413C4E0F00485D544104A43B440DC85041E50E0DDC495D5441EC51B84E0DC850411F85EB214B5D54418721EE220DC85041CF9317774B5D5441C55F17000DC850410BC0DABA4B5D54413D8842D80AC8504109AB2DEC4F5D54419DDCDAC00AC850415C98B319505D54410EA0BA7B0AC85041522727A0505D5441EBF293A409C850414F5BA042525D5441713D0A3709C850417B14AE17535D5441B707843F09C8504146668A37535D5441C3F5286C09C85041F6285CDF535D5441CD06E0B809C8504129B8115E545D54414F59B8350AC85041B61E3224555D54416FCAAB2E0DC85041D85DE8C6595D544185EB51C80EC850415C8FC2455C5D5441000000F010C8504114AE4721605D5441D7A370DD12C85041AE47E1FA675D5441877CB60C13C850417AC57339685D54411F85EB8117C85041000000206E5D5441B81E850B48C850419A9999095F5D54411CCF2C7B44C85041954DDA9E505D54410000004043C850418FC2F5A84B5D5441CDCCCCFC40C85041CDCCCC7C425D5441D7A370BD3CC85041AE47E1EA415D5441333333333AC85041713D0AE7405D544148E17A6438C85041295C8F02405D54419A9999B937C850411F85EBF1405D54417B14AEB736C850419A999909465D544185EB51A830C8504185EB5108475D5441D7A3707D2FC85041A4703DDA435D5441A4703DAA2CC8504185EB5128455D54415C8FC23529C85041EC51B80E3B5D54417B14AE7723C8504148E17AD43B5D54413D0AD73321C850413D0AD7233C5D5441EC51B83E12C85041B81E85DB3D5D544118C8F9070DC85041993027343E5D54415C8FC2850CC85041CDCCCC3C3E5D5441FC2D47FF0BC850411FCBEC133E5D5441E17A145E0AC8504152B81E953D5D5441333333230DC850419A9999D9455D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975159 - 1759254
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000008000000EAFB60066DDC5041D41B89A68B7F5441BBF6E21787DC504142216F5A907F54415D84AE7F8DDC50410502DF7F917F54412294DB938EDC50412AB3FD1A8C7F54414EC8B9C48DDC50413D9EAFC48B7F54412394DB938EDC5041C798C434897F54419B67252B70DC5041E6EB68F2837F5441EAFB60066DDC5041D41B89A68B7F54410E000000495DE3A671DC504178693DF8857F5441014FA81781DC5041FB2A1D43887F5441B044669382DC5041F4CCA265887F54416AC75BDB83DC5041D325FC00897F544154ADEC4284DC5041B27E559C897F544166989EEC83DC50419C64E6038A7F5441873F455183DC5041983529158A7F5441EB34397F81DC5041BD0B8D68897F5441A692E90E7EDC5041E2E1F0BB887F54413C1A364B7BDC5041FB2A1D43887F5441D7D03F7678DC504124303E85877F5441718749A175DC50413E796A0C877F5441EA96AC6773DC504150641CB6867F5441495DE3A671DC504178693DF8857F5441010300000001000000040000004709E1FF6CDC504140CD6CB38B7F5441EAFB60066DDC5041D41B89A68B7F54414B389EEE6CDC504143FC29A28B7F54414709E1FF6CDC504140CD6CB38B7F5441
+</a>
+
+<b>
+0106000000010000000103000000020000000800000090A5DF066DDC5041CD7E59A58B7F5441BBF6E21787DC504140216F5A907F54416284AE7F8DDC50410402DF7F917F54412594DB938EDC504129B3FD1A8C7F54414EC8B9C48DDC50413E9EAFC48B7F54412594DB938EDC5041CC98C434897F54419967252B70DC5041E7EB68F2837F544190A5DF066DDC5041CD7E59A58B7F54410E000000485DE3A671DC504178693DF8857F5441FF4EA81781DC5041FE2A1D43887F5441AE44669382DC5041F4CCA265887F544167C75BDB83DC5041D625FC00897F544152ADEC4284DC5041AD7E559C897F544167989EEC83DC50419964E6038A7F5441853F455183DC5041993529158A7F5441EA34397F81DC5041C20B8D68897F5441AB92E90E7EDC5041E0E1F0BB887F5441391A364B7BDC5041FE2A1D43887F5441DBD03F7678DC504127303E85877F5441738749A175DC50413B796A0C877F5441ED96AC6773DC50414F641CB6867F5441485DE3A671DC504178693DF8857F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975159 - 4398340
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000008000000EAFB60066DDC5041D41B89A68B7F5441BBF6E21787DC504142216F5A907F54415D84AE7F8DDC50410502DF7F917F54412294DB938EDC50412AB3FD1A8C7F54414EC8B9C48DDC50413D9EAFC48B7F54412394DB938EDC5041C798C434897F54419B67252B70DC5041E6EB68F2837F5441EAFB60066DDC5041D41B89A68B7F54410E000000495DE3A671DC504178693DF8857F5441014FA81781DC5041FB2A1D43887F5441B044669382DC5041F4CCA265887F54416AC75BDB83DC5041D325FC00897F544154ADEC4284DC5041B27E559C897F544166989EEC83DC50419C64E6038A7F5441873F455183DC5041983529158A7F5441EB34397F81DC5041BD0B8D68897F5441A692E90E7EDC5041E2E1F0BB887F54413C1A364B7BDC5041FB2A1D43887F5441D7D03F7678DC504124303E85877F5441718749A175DC50413E796A0C877F5441EA96AC6773DC504150641CB6867F5441495DE3A671DC504178693DF8857F5441010300000001000000040000004709E1FF6CDC504140CD6CB38B7F5441EAFB60066DDC5041D41B89A68B7F54414B389EEE6CDC504143FC29A28B7F54414709E1FF6CDC504140CD6CB38B7F5441
+</a>
+
+<b>
+0106000000010000000103000000020000000800000090A5DF066DDC5041CD7E59A58B7F5441BBF6E21787DC504140216F5A907F54416284AE7F8DDC50410402DF7F917F54412594DB938EDC504129B3FD1A8C7F54414EC8B9C48DDC50413E9EAFC48B7F54412594DB938EDC5041CC98C434897F54419967252B70DC5041E7EB68F2837F544190A5DF066DDC5041CD7E59A58B7F54410E000000485DE3A671DC504178693DF8857F5441FF4EA81781DC5041FE2A1D43887F5441AE44669382DC5041F4CCA265887F544167C75BDB83DC5041D625FC00897F544152ADEC4284DC5041AD7E559C897F544167989EEC83DC50419964E6038A7F5441853F455183DC5041993529158A7F5441EA34397F81DC5041C20B8D68897F5441AB92E90E7EDC5041E0E1F0BB887F5441391A364B7BDC5041FE2A1D43887F5441DBD03F7678DC504127303E85877F5441738749A175DC50413B796A0C877F5441ED96AC6773DC50414F641CB6867F5441485DE3A671DC504178693DF8857F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224927 - 249885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC5BAFB504185EB51B83A8954410AD7A370B8FB5041295C8FB239895441EC51B8EEB8FB50415C8FC225358954419A999999B5FB5041E17A144E358954413D0AD7C3BBFB50418FC2F5A86D89544152B81EF5BCFB5041AE47E1FA6C89544148E17AB4BFFB5041CDCCCC8C6B895441000000B0BFFB5041D7A370ED69895441C3F528BCC2FB5041B81E857B6989544152B81EC5BAFB504185EB51B83A895441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000000000B0BFFB5041D7A370ED6989544175413AB1C0FB50412019E1C7698954413FF20FBAC2FB50417B003A6F69895441444C4523BDFB50411D93079F48895441F6F7F4ECBCFB50418F48276047895441E8DB4383BCFB5041460BA3F34489544195BE1EC5BAFB50414B1052B83A895441AC1E59A0B9FB504188F2D6373A8954410AD7A370B8FB5041295C8FB23989544128F469CEB8FB50414EFD385036895441A3DF07D8B8FB5041675960F735895441D79D6FE4B8FB504173FFC484358954418D4BB8EEB8FB50413BCAC22535895441CA219A99B5FB50412843154E358954410C5AED13BAFB5041B30ECB3C5E8954413D0AD7C3BBFB50418FC2F5A86D89544152B81EF5BCFB5041AE47E1FA6C89544162039CCDBEFB50417541F6046C8954419853748CBFFB504190EA739D6B895441852611B0BFFB5041AFBBA6F369895441000000B0BFFB5041D7A370ED69895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224927 - 304509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC5BAFB504185EB51B83A8954410AD7A370B8FB5041295C8FB239895441EC51B8EEB8FB50415C8FC225358954419A999999B5FB5041E17A144E358954413D0AD7C3BBFB50418FC2F5A86D89544152B81EF5BCFB5041AE47E1FA6C89544148E17AB4BFFB5041CDCCCC8C6B895441000000B0BFFB5041D7A370ED69895441C3F528BCC2FB5041B81E857B6989544152B81EC5BAFB504185EB51B83A895441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000000000B0BFFB5041D7A370ED6989544175413AB1C0FB50412019E1C7698954413FF20FBAC2FB50417B003A6F69895441444C4523BDFB50411D93079F48895441F6F7F4ECBCFB50418F48276047895441E8DB4383BCFB5041460BA3F34489544195BE1EC5BAFB50414B1052B83A895441AC1E59A0B9FB504188F2D6373A8954410AD7A370B8FB5041295C8FB23989544128F469CEB8FB50414EFD385036895441A3DF07D8B8FB5041675960F735895441D79D6FE4B8FB504173FFC484358954418D4BB8EEB8FB50413BCAC22535895441CA219A99B5FB50412843154E358954410C5AED13BAFB5041B30ECB3C5E8954413D0AD7C3BBFB50418FC2F5A86D89544152B81EF5BCFB5041AE47E1FA6C89544162039CCDBEFB50417541F6046C8954419853748CBFFB504190EA739D6B895441852611B0BFFB5041AFBBA6F369895441000000B0BFFB5041D7A370ED69895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227494 - 247231
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000D7A370EDB8185141EC51B8DECB0D5541713D0A37B718514133333353C70D55418FC2F5E8B5185141F6285C4FC40D554148E17AF4B4185141CDCCCC5CC10D5541D7A3701DB31851417B14AEB7BD0D55418FC2F548B2185141E17A14BEBA0D554100000090B1185141666666C6BA0D5541C3F5289CB0185141295C8FF2BA0D55415C8FC255AE185141A4703D2ABB0D55418FC2F5A8AD185141B81E85ABBB0D554148E17AE4AC1851410AD7A380BC0D554166666666AC185141F6285C6FBE0D55411F85EB91AC185141C3F5289CBF0D554148E17AF4AC1851411F85EBD1C00D55415C8FC2C5AD18514114AE4791C20D55415C8FC2D5AF185141E17A143EC50D554100000060B01851418FC2F568C60D55415C8FC2C5AF185141A4703DBAC60D5541D7A3701DB218514152B81E85CA0D55419A999949B5185141000000B0CD0D554100000000BC185141333333C3D20D55413D0AD793C118514185EB5168DB0D554133333393C7185141EC51B83EE30D5541F6285C2FC9185141B81E859BE20D5541CDCCCC7CCA1851417B14AE17E20D55411F85EB61C71851415C8FC215DF0D5541F6285C2FC61851419A999969DD0D55415C8FC215C5185141713D0A07DC0D55410AD7A310C1185141000000F0D40D5541C3F5281CC01851415C8FC2D5D30D55411F85EB71BD185141F6285C3FD10D5541D7A370EDB8185141EC51B8DECB0D5541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000D7A370EDB8185141EC51B8DECB0D55418DCA0379B8185141F4D0B9A9CA0D5541D3C5433DB8185141BCF5250BCA0D55419C91559EB71851413E2E5865C80D55412F8ECC80B71851410724F516C80D5541FE90C2F9B51851417B812C76C40D55418FC2F5E8B5185141F6285C4FC40D55412EBCF631B51851414817901AC20D55417D406A0CB5185141613EACA6C10D554139FB65E5B41851419571EC3EC10D55412A23D9C2B418514103007BFAC00D55416AE8945AB3185141E4E1CC30BE0D5541E26D1D4AB3185141601C2E10BE0D5541D7A3701DB31851417B14AEB7BD0D55418FC2F548B2185141E17A14BEBA0D5541FF2F0199B1185141D9B4FEC5BA0D5541DC47690DB118514140C80CDEBA0D5541C3F5289CB0185141295C8FF2BA0D55415C8FC255AE185141A4703D2ABB0D55414C21FBDCAD18514116C19984BB0D55411752437FAD1851416195BFD8BB0D554148E17AE4AC1851410AD7A380BC0D554166666666AC185141F6285C6FBE0D55411F85EB91AC185141C3F5289CBF0D554148E17AF4AC1851411F85EBD1C00D55415C8FC2C5AD18514114AE4791C20D55415C8FC2D5AF185141E17A143EC50D554100000060B01851418FC2F568C60D55415C8FC2C5AF185141A4703DBAC60D5541B895322BB2185141351DDB92CA0D55419A999949B5185141000000B0CD0D55414603554CB71851410F0F2A35CF0D5541616BCD9EB71851419B238473CF0D5541A41532A7BA185141988A82BED10D55413B67329BBB185141C4D2FC76D20D55413ECAFD00BD185141B6DCEEB8D00D55412FB37DFFBC1851410EA725B7D00D5541676064ADBC185141B43E6B55D00D55418D6E3B0DBC1851411BEBC496CF0D5541A6CE5905BC1851416D32638DCF0D5541FB92640DBB185141E6C03966CE0D5541A7D11393B918514142D3E3A3CC0D5541D7A370EDB8185141EC51B8DECB0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227494 - 264867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000D7A370EDB8185141EC51B8DECB0D5541713D0A37B718514133333353C70D55418FC2F5E8B5185141F6285C4FC40D554148E17AF4B4185141CDCCCC5CC10D5541D7A3701DB31851417B14AEB7BD0D55418FC2F548B2185141E17A14BEBA0D554100000090B1185141666666C6BA0D5541C3F5289CB0185141295C8FF2BA0D55415C8FC255AE185141A4703D2ABB0D55418FC2F5A8AD185141B81E85ABBB0D554148E17AE4AC1851410AD7A380BC0D554166666666AC185141F6285C6FBE0D55411F85EB91AC185141C3F5289CBF0D554148E17AF4AC1851411F85EBD1C00D55415C8FC2C5AD18514114AE4791C20D55415C8FC2D5AF185141E17A143EC50D554100000060B01851418FC2F568C60D55415C8FC2C5AF185141A4703DBAC60D5541D7A3701DB218514152B81E85CA0D55419A999949B5185141000000B0CD0D554100000000BC185141333333C3D20D55413D0AD793C118514185EB5168DB0D554133333393C7185141EC51B83EE30D5541F6285C2FC9185141B81E859BE20D5541CDCCCC7CCA1851417B14AE17E20D55411F85EB61C71851415C8FC215DF0D5541F6285C2FC61851419A999969DD0D55415C8FC215C5185141713D0A07DC0D55410AD7A310C1185141000000F0D40D5541C3F5281CC01851415C8FC2D5D30D55411F85EB71BD185141F6285C3FD10D5541D7A370EDB8185141EC51B8DECB0D5541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000D7A370EDB8185141EC51B8DECB0D55418DCA0379B8185141F4D0B9A9CA0D5541D3C5433DB8185141BCF5250BCA0D55419C91559EB71851413E2E5865C80D55412F8ECC80B71851410724F516C80D5541FE90C2F9B51851417B812C76C40D55418FC2F5E8B5185141F6285C4FC40D55412EBCF631B51851414817901AC20D55417D406A0CB5185141613EACA6C10D554139FB65E5B41851419571EC3EC10D55412A23D9C2B418514103007BFAC00D55416AE8945AB3185141E4E1CC30BE0D5541E26D1D4AB3185141601C2E10BE0D5541D7A3701DB31851417B14AEB7BD0D55418FC2F548B2185141E17A14BEBA0D5541FF2F0199B1185141D9B4FEC5BA0D5541DC47690DB118514140C80CDEBA0D5541C3F5289CB0185141295C8FF2BA0D55415C8FC255AE185141A4703D2ABB0D55414C21FBDCAD18514116C19984BB0D55411752437FAD1851416195BFD8BB0D554148E17AE4AC1851410AD7A380BC0D554166666666AC185141F6285C6FBE0D55411F85EB91AC185141C3F5289CBF0D554148E17AF4AC1851411F85EBD1C00D55415C8FC2C5AD18514114AE4791C20D55415C8FC2D5AF185141E17A143EC50D554100000060B01851418FC2F568C60D55415C8FC2C5AF185141A4703DBAC60D5541B895322BB2185141351DDB92CA0D55419A999949B5185141000000B0CD0D55414603554CB71851410F0F2A35CF0D5541616BCD9EB71851419B238473CF0D5541A41532A7BA185141988A82BED10D55413B67329BBB185141C4D2FC76D20D55413ECAFD00BD185141B6DCEEB8D00D55412FB37DFFBC1851410EA725B7D00D5541676064ADBC185141B43E6B55D00D55418D6E3B0DBC1851411BEBC496CF0D5541A6CE5905BC1851416D32638DCF0D5541FB92640DBB185141E6C03966CE0D5541A7D11393B918514142D3E3A3CC0D5541D7A370EDB8185141EC51B8DECB0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227496 - 247232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000E17A141ED71851411F85EB81DD0D55418FC2F5A8D61851415C8FC295DC0D55419A999979D41851419A9999D9DD0D5541F6285C1FD218514152B81E85DE0D5541A4703D1ACD185141E17A14BEE00D5541CDCCCC7CCA1851417B14AE17E20D5541F6285C2FC9185141B81E859BE20D554133333393C7185141EC51B83EE30D5541D7A3704DCC1851413D0AD773EA0D5541C3F528DCCF185141D7A3708DF30D5541E17A14AED71851418FC2F588070E5541EC51B8FED7185141C3F5286C0A0E5541C3F528FCD91851419A9999D90C0E55417B14AEA7DE185141713D0A470F0E5541000000E0E5185141713D0A970F0E55413D0AD733EB185141C3F528EC0E0E554166666646EA1851418FC2F5180C0E55411F85EBE1E9185141666666E60A0E5541713D0AC7E618514152B81E55010E5541CDCCCCCCE5185141295C8F52FE0D5541295C8F62E4185141713D0AF7F90D5541333333D3DF1851419A999929EF0D5541E17A141ED71851411F85EB81DD0D5541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000BD3E8883DE1851417C0740340F0E554164149327E6185141287B128E0F0E5541CCBFAC2BEB185141604E4AD30E0E554166666646EA1851418FC2F5180C0E55413BC2E105EA1851414E391E540B0E55411F85EBE1E9185141666666E60A0E5541E6264A9FE71851414D5974EF030E554158C707ABE618514181D5DEFE000E5541CDCCCCCCE5185141295C8F52FE0D5541255D4B85E51851411FAC5B76FD0D5541E3289E4CE4185141D6430FC3F90D554120101DA9E2185141E55044E1F50D55416D4A2AD3DF18514132898729EF0D55414DA01144DA185141CDDB1CE4E30D55418FC2F5A8D61851415C8FC295DC0D55419A999979D41851419A9999D9DD0D5541A019E8F0D318514127DE8700DE0D5541464CA1D4D1185141508234A6DE0D5541D0A76ABACC1851415E8E8CEFE00D5541CDCCCC7CCA1851417B14AE17E20D5541F6285C2FC9185141B81E859BE20D554133333393C7185141EC51B83EE30D5541F2DCC655C81851411A2C723DE40D554117C02DE7C918514160E157CBE60D5541D7A3704DCC1851413D0AD773EA0D55415F93D954CE1851417F667AA4EF0D5541E3F7812ECF18514159D53DD1F10D5541177177D9D0185141774DB714F60D5541CAB6C15CD118514108DD3364F70D5541C59C9C0CD4185141E826E241FE0D5541E17A14AED71851418FC2F588070E554176E1A0B9D71851418D19D2F2070E55412BDD3507D81851411E5B84760A0E554168CF9131DA185141D9D85CF50C0E5541FBEA78E3DB1851417393E8D60D0E5541BD3E8883DE1851417C0740340F0E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227496 - 264926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000E17A141ED71851411F85EB81DD0D55418FC2F5A8D61851415C8FC295DC0D55419A999979D41851419A9999D9DD0D5541F6285C1FD218514152B81E85DE0D5541A4703D1ACD185141E17A14BEE00D5541CDCCCC7CCA1851417B14AE17E20D5541F6285C2FC9185141B81E859BE20D554133333393C7185141EC51B83EE30D5541D7A3704DCC1851413D0AD773EA0D5541C3F528DCCF185141D7A3708DF30D5541E17A14AED71851418FC2F588070E5541EC51B8FED7185141C3F5286C0A0E5541C3F528FCD91851419A9999D90C0E55417B14AEA7DE185141713D0A470F0E5541000000E0E5185141713D0A970F0E55413D0AD733EB185141C3F528EC0E0E554166666646EA1851418FC2F5180C0E55411F85EBE1E9185141666666E60A0E5541713D0AC7E618514152B81E55010E5541CDCCCCCCE5185141295C8F52FE0D5541295C8F62E4185141713D0AF7F90D5541333333D3DF1851419A999929EF0D5541E17A141ED71851411F85EB81DD0D5541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000BD3E8883DE1851417C0740340F0E554164149327E6185141287B128E0F0E5541CCBFAC2BEB185141604E4AD30E0E554166666646EA1851418FC2F5180C0E55413BC2E105EA1851414E391E540B0E55411F85EBE1E9185141666666E60A0E5541E6264A9FE71851414D5974EF030E554158C707ABE618514181D5DEFE000E5541CDCCCCCCE5185141295C8F52FE0D5541255D4B85E51851411FAC5B76FD0D5541E3289E4CE4185141D6430FC3F90D554120101DA9E2185141E55044E1F50D55416D4A2AD3DF18514132898729EF0D55414DA01144DA185141CDDB1CE4E30D55418FC2F5A8D61851415C8FC295DC0D55419A999979D41851419A9999D9DD0D5541A019E8F0D318514127DE8700DE0D5541464CA1D4D1185141508234A6DE0D5541D0A76ABACC1851415E8E8CEFE00D5541CDCCCC7CCA1851417B14AE17E20D5541F6285C2FC9185141B81E859BE20D554133333393C7185141EC51B83EE30D5541F2DCC655C81851411A2C723DE40D554117C02DE7C918514160E157CBE60D5541D7A3704DCC1851413D0AD773EA0D55415F93D954CE1851417F667AA4EF0D5541E3F7812ECF18514159D53DD1F10D5541177177D9D0185141774DB714F60D5541CAB6C15CD118514108DD3364F70D5541C59C9C0CD4185141E826E241FE0D5541E17A14AED71851418FC2F588070E554176E1A0B9D71851418D19D2F2070E55412BDD3507D81851411E5B84760A0E554168CF9131DA185141D9D85CF50C0E5541FBEA78E3DB1851417393E8D60D0E5541BD3E8883DE1851417C0740340F0E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>228418 - 58889
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000026000000D7A370EDD6D95041D7A3708D4DC15441E17A149EDBD9504148E17AD442C15441713D0A27D5D95041000000C03CC15441AE47E13AD1D9504185EB51D839C15441F6285CCFCFD950419A99991939C15441C3F5281CCDD95041EC51B8AE37C15441666666D6C8D950411F85EBF135C15441B81E85CBBFD95041B81E859B33C154415C8FC2B5B6D950413D0AD7D331C154413D0AD793ADD950418FC2F58830C1544148E17A34A4D95041CDCCCCEC2FC154417B14AEE799D950410AD7A3B02FC1544152B81ED58CD950415C8FC2E530C154415C8FC26585D95041E17A14BE31C15441F6285CDF7AD950410AD7A3F032C15441A4703DBA73D950419A9999E933C154417B14AED76FD9504114AE477134C15441F6285CBF66D95041713D0A6736C1544114AE472161D950410AD7A30038C154418FC2F58860D95041E17A148E45C15441C3F5286C61D950413333335345C15441B81E85FB64D950415C8FC22545C1544185EB518868D95041713D0AA745C15441713D0AF76BD95041E17A149E46C154413333331378D95041D7A3704D4CC154410AD7A3C07CD950418FC2F5F84DC15441295C8F1284D950413D0AD7F34FC15441CDCCCC8C85D95041A4703D5A50C15441C3F5286C8AD9504185EB514851C15441000000608FD9504114AE477151C15441713D0A47ABD95041295C8F7250C1544148E17AD4AED9504148E17AA450C1544114AE4741B2D950410000009051C15441D7A3706DB5D950413333332353C15441D7A3703DB8D950417B14AE6755C154418FC2F588B8D950411F85EBB155C1544185EB5108C5D950413D0AD74346C15441D7A370EDD6D95041D7A3708D4DC15441
+</a>
+
+<b>
+010600000001000000010300000001000000380000003D0AD793ADD950418FC2F58830C154417E369F8AA6D950415DBFBA1330C1544148E17A34A4D95041CDCCCCEC2FC154417B14AEE799D950410AD7A3B02FC1544108BCF2EC94D9504161E5622630C1544152B81ED58CD950415C8FC2E530C15441E97F714887D95041CBE4388731C15441E5C4721580D95041D90FDA5832C15441F6285CDF7AD950410AD7A3F032C154418E3D76F570D95041BD034B4A34C154417B14AED76FD9504114AE477134C15441CCCCA8AC68D95041AC84BBFC35C15441F6285CBF66D95041713D0A6736C1544114AE472161D950410AD7A30038C15441DAEBA91D61D95041D131F8013BC15441421165F560D95041F7BC28DD3DC154418FC2F58860D95041E17A148E45C15441C3F5286C61D950413333335345C15441B81E85FB64D950415C8FC22545C1544185EB518868D95041713D0AA745C154414213BDC06BD95041005CD08E46C15441713D0AF76BD95041E17A149E46C154416FB7A45B71D950416624332649C154417D375E5678D9504181BF6B654CC15441D7DED6F27BD95041C4BB7BAF4DC154416272EF157FD95041A903869A4EC15441012A822383D950413BB32DB34FC154410795CAAD85D950414876896050C15441A8EE53BE87D95041A9CD6AC550C154417A131F6289D9504126BF8A1551C154413809AF278AD95041B708403B51C15441DB88E3BE8DD95041B8EECD6351C15441F4A188D58DD950410738896451C154418DC8196592D95041C918B65551C1544112EF763D99D9504147E3381751C1544119B31B32ABD95041E8714E7350C15441713D0A47ABD95041295C8F7250C1544148E17AD4AED9504148E17AA450C1544114AE4741B2D950410000009051C15441D7A3706DB5D950413333332353C15441D7A3703DB8D950417B14AE6755C154418FC2F588B8D950411F85EBB155C1544185EB5108C5D950413D0AD74346C15441D7A370EDD6D95041D7A3708D4DC15441E17A149EDBD9504148E17AD442C15441713D0A27D5D95041000000C03CC154410E9A9F19D4D95041296878F83BC15441AE47E13AD1D9504185EB51D839C15441F6285CCFCFD950419A99991939C154412A0E693ECCD95041E77B8A5437C15441666666D6C8D950411F85EBF135C1544106A5A08AC2D95041A03C465134C15441B81E85CBBFD95041B81E859B33C154415C8FC2B5B6D950413D0AD7D331C15441F1F69629B4D95041E33A8A7731C154413D0AD793ADD950418FC2F58830C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229448 - 262501
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A000000C3F5281C93A55041C3F528FC016854410000005092A55041EC51B89E03685441E17A145EBFA5504114AE474106685441EC51B87EBFA55041EC51B8DEFC675441F6285C4FBBA55041AE47E10ADA675441EC51B8FEB3A550417B14AE67DF6754419A9999F9ABA55041C3F528ACEB675441295C8FC2A8A55041333333D3EE675441B81E852B9BA55041A4703DDAFA675441C3F5281C93A55041C3F528FC01685441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000E2E9968BBCA55041A5628952E4675441F6285C4FBBA55041AE47E10ADA67544158CA118EBAA550410EF39398DA6754414538B9FEB3A550418906AF67DF675441C0F29AF9ABA55041E07B28ACEB675441F94D1D92AAA55041C336A80CED675441295C8FC2A8A55041333333D3EE6754410FBB842B9BA55041D5C83DDAFA67544193D1B77EBFA5504184E5B8DEFC675441E2E9968BBCA55041A5628952E4675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230175 - 1151957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703D0A40F750418FC2F5681B2E5441D7A3705D4EF750413D0AD7C31A2E54418FC2F5985AF75041713D0A371A2E5441C3F5281C65F75041B81E855B1A2E54417B14AE4763F750417B14AEC7182E544114AE47A160F75041D7A3700D172E5441D7A370BD5DF75041AE47E12A152E5441D7A3707D5CF750417B14AE57142E5441000000B05BF7504152B81ED5132E54417B14AE475AF750418FC2F5D8122E54411F85EB0159F750411F85EBE1112E544185EB51C853F75041333333830C2E5441E17A149E50F75041A4703D9A082E544152B81EE54FF750413D0AD793072E5441295C8F224EF75041EC51B8FE042E5441E17A143E4DF750411F85EB91032E544114AE471149F75041D7A370FDFC2D5441AE47E1AA48F7504185EB5158FC2D5441713D0A7747F750413D0AD763FA2D544148E17AC445F750410AD7A390F72D54415C8FC2F540F7504166666696EF2D54417B14AE273AF75041A4703DEAE52D5441333333F336F7504148E17A74E12D54418FC2F57833F75041CDCCCC0CDD2D5441EC51B81E31F75041EC51B85EDA2D5441713D0AF72EF75041713D0A47D82D544185EB51482CF7504114AE47D1D52D5441713D0AC72AF75041B81E855BD42D5441EC51B8FE29F75041E17A147ED32D544185EB517829F750419A9999E9D22D54413D0AD76329F7504114AE4751D32D54411F85EB312AF75041AE47E16ADC2D54417B14AEA722F7504152B81ED5DC2D5441A4703DCA22F7504114AE47A1DE2D5441333333931FF75041B81E85CBDE2D5441D7A3705D20F750411F85EBF1E42D5441000000A020F75041E17A14CEE62D544148E17AA41CF75041A4703DDAE72D5441A4703DCA16F75041D7A3704DEE2D544152B81E9519F7504185EB51E8FA2D5441A4703DFA1CF75041295C8F32012E5441A4703D0A1EF750410AD7A3A0022E5441295C8F521FF75041295C8F42042E54418FC2F5B820F750413D0AD703062E54419A99993922F750418FC2F5E8072E5441F6285CDF23F7504152B81EE5092E54410000003025F75041EC51B86E0B2E5441AE47E1FA25F75041EC51B86E0C2E5441EC51B89E26F750411F85EB810D2E544148E17AC427F75041713D0AB70F2E544148E17A9428F7504185EB5168112E5441B81E858B2BF75041D7A3700D192E54413D0AD73333F750417B14AEB7172E5441F6285C2F37F7504152B81E05172E5441AE47E14A38F75041CDCCCC7C192E5441F6285C7F39F75041333333F31C2E5441A4703D4A3DF75041666666F61B2E5441AE47E1CA3FF750410AD7A3701B2E5441A4703D0A40F750418FC2F5681B2E5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D3B453733F75041A56C93D6FF2D5441BDA61AA92EF750411B8E4CB4F92D544114D537572DF75041096253EDF72D5441000000A020F75041E17A14CEE62D544148E17AA41CF75041A4703DDAE72D5441DC66A89C1BF75041058C8D66E92D5441E501448419F750411396264CEB2D54418B555D1C18F750417293CBD8EC2D5441A4703DCA16F75041D7A3704DEE2D5441B836C3C517F750419EF6D163EE2D5441DA51FFF819F75041B3BAAF73EE2D5441B5D3E0E41CF75041A85B6E68EE2D5441D271549D1DF75041445C6B42EF2D54414840BB4F1DF750413199EAD3EF2D5441DA96FDD51CF7504100372EB8F02D5441E8E310331DF750418E9C9C87F32D54413D0826EE1EF75041522FB49DF72D54414EB12C2F22F750416D5BD2F1FC2D54418BA77FB123F750416F5FAE5BFF2D5441A53434AB25F7504104A0FAF9012E54415D691DCC27F75041BCD4E31A042E5441E763E95D2EF75041D37FBD6E0B2E5441D94A3F0A32F7504186596609132E5441860C394134F7504195DC5988172E5441F6285C2F37F7504152B81E05172E5441AE47E14A38F75041CDCCCC7C192E5441F6285C7F39F75041333333F31C2E5441A4703D4A3DF75041666666F61B2E5441AE47E1CA3FF750410AD7A3701B2E5441A4703D0A40F750418FC2F5681B2E5441D7A3705D4EF750413D0AD7C31A2E54418FC2F5985AF75041713D0A371A2E5441C3F5281C65F75041B81E855B1A2E54417B14AE4763F750417B14AEC7182E544114AE47A160F75041D7A3700D172E5441D7A370BD5DF75041AE47E12A152E5441D7A3707D5CF750417B14AE57142E5441000000B05BF7504152B81ED5132E54417B14AE475AF750418FC2F5D8122E54411F85EB0159F750411F85EBE1112E5441CE9F4E1842F750413AEE8DDF132E54415198AFCD3EF75041A5C3F0700F2E54413A72B34C39F750418389B307082E54419E04106836F7504196036922042E54413D3B453733F75041A56C93D6FF2D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230175 - 5261197
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703D0A40F750418FC2F5681B2E5441D7A3705D4EF750413D0AD7C31A2E54418FC2F5985AF75041713D0A371A2E5441C3F5281C65F75041B81E855B1A2E54417B14AE4763F750417B14AEC7182E544114AE47A160F75041D7A3700D172E5441D7A370BD5DF75041AE47E12A152E5441D7A3707D5CF750417B14AE57142E5441000000B05BF7504152B81ED5132E54417B14AE475AF750418FC2F5D8122E54411F85EB0159F750411F85EBE1112E544185EB51C853F75041333333830C2E5441E17A149E50F75041A4703D9A082E544152B81EE54FF750413D0AD793072E5441295C8F224EF75041EC51B8FE042E5441E17A143E4DF750411F85EB91032E544114AE471149F75041D7A370FDFC2D5441AE47E1AA48F7504185EB5158FC2D5441713D0A7747F750413D0AD763FA2D544148E17AC445F750410AD7A390F72D54415C8FC2F540F7504166666696EF2D54417B14AE273AF75041A4703DEAE52D5441333333F336F7504148E17A74E12D54418FC2F57833F75041CDCCCC0CDD2D5441EC51B81E31F75041EC51B85EDA2D5441713D0AF72EF75041713D0A47D82D544185EB51482CF7504114AE47D1D52D5441713D0AC72AF75041B81E855BD42D5441EC51B8FE29F75041E17A147ED32D544185EB517829F750419A9999E9D22D54413D0AD76329F7504114AE4751D32D54411F85EB312AF75041AE47E16ADC2D54417B14AEA722F7504152B81ED5DC2D5441A4703DCA22F7504114AE47A1DE2D5441333333931FF75041B81E85CBDE2D5441D7A3705D20F750411F85EBF1E42D5441000000A020F75041E17A14CEE62D544148E17AA41CF75041A4703DDAE72D5441A4703DCA16F75041D7A3704DEE2D544152B81E9519F7504185EB51E8FA2D5441A4703DFA1CF75041295C8F32012E5441A4703D0A1EF750410AD7A3A0022E5441295C8F521FF75041295C8F42042E54418FC2F5B820F750413D0AD703062E54419A99993922F750418FC2F5E8072E5441F6285CDF23F7504152B81EE5092E54410000003025F75041EC51B86E0B2E5441AE47E1FA25F75041EC51B86E0C2E5441EC51B89E26F750411F85EB810D2E544148E17AC427F75041713D0AB70F2E544148E17A9428F7504185EB5168112E5441B81E858B2BF75041D7A3700D192E54413D0AD73333F750417B14AEB7172E5441F6285C2F37F7504152B81E05172E5441AE47E14A38F75041CDCCCC7C192E5441F6285C7F39F75041333333F31C2E5441A4703D4A3DF75041666666F61B2E5441AE47E1CA3FF750410AD7A3701B2E5441A4703D0A40F750418FC2F5681B2E5441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D3B453733F75041A56C93D6FF2D5441BDA61AA92EF750411B8E4CB4F92D544114D537572DF75041096253EDF72D5441000000A020F75041E17A14CEE62D544148E17AA41CF75041A4703DDAE72D5441DC66A89C1BF75041058C8D66E92D5441E501448419F750411396264CEB2D54418B555D1C18F750417293CBD8EC2D5441A4703DCA16F75041D7A3704DEE2D5441B836C3C517F750419EF6D163EE2D5441DA51FFF819F75041B3BAAF73EE2D5441B5D3E0E41CF75041A85B6E68EE2D5441D271549D1DF75041445C6B42EF2D54414840BB4F1DF750413199EAD3EF2D5441DA96FDD51CF7504100372EB8F02D5441E8E310331DF750418E9C9C87F32D54413D0826EE1EF75041522FB49DF72D54414EB12C2F22F750416D5BD2F1FC2D54418BA77FB123F750416F5FAE5BFF2D5441A53434AB25F7504104A0FAF9012E54415D691DCC27F75041BCD4E31A042E5441E763E95D2EF75041D37FBD6E0B2E5441D94A3F0A32F7504186596609132E5441860C394134F7504195DC5988172E5441F6285C2F37F7504152B81E05172E5441AE47E14A38F75041CDCCCC7C192E5441F6285C7F39F75041333333F31C2E5441A4703D4A3DF75041666666F61B2E5441AE47E1CA3FF750410AD7A3701B2E5441A4703D0A40F750418FC2F5681B2E5441D7A3705D4EF750413D0AD7C31A2E54418FC2F5985AF75041713D0A371A2E5441C3F5281C65F75041B81E855B1A2E54417B14AE4763F750417B14AEC7182E544114AE47A160F75041D7A3700D172E5441D7A370BD5DF75041AE47E12A152E5441D7A3707D5CF750417B14AE57142E5441000000B05BF7504152B81ED5132E54417B14AE475AF750418FC2F5D8122E54411F85EB0159F750411F85EBE1112E5441CE9F4E1842F750413AEE8DDF132E54415198AFCD3EF75041A5C3F0700F2E54413A72B34C39F750418389B307082E54419E04106836F7504196036922042E54413D3B453733F75041A56C93D6FF2D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230526 - 1005667
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000090000000103000000010000006000000085EB51488FFE50411F85EB713B295441AE47E15A8EFE504152B81E653A295441000000008EFE50413D0AD7C3392954415C8FC2458DFE5041EC51B84E392954415C8FC2958CFE5041AE47E13A39295441CDCCCC5C8BFE5041EC51B84E39295441A4703D9A89FE5041666666A63929544185EB515887FE50415C8FC2253A2954418FC2F57885FE504152B81EA53A29544114AE47F183FE5041A4703D1A3B295441CDCCCCFC82FE5041D7A370AD3B2954419A99996982FE504185EB51983C29544152B81E2582FE5041EC51B81E3F295441E17A14AE82FE50419A999909402954411F85EBE180FE5041C3F5282C43295441AE47E1CA7CFE5041E17A148E432954415C8FC29578FE50419A999949432954415C8FC25575FE5041F6285CDF412954418FC2F50874FE50415C8FC2453F2954410000003074FE5041295C8F723B29544114AE471175FE5041295C8F323829544185EB510877FE5041CDCCCCFC35295441EC51B83E77FE5041B81E859B332954418FC2F5687CFE5041CDCCCCCC3329544152B81E557CFE5041713D0A97362954415C8FC2D57BFE5041EC51B86E37295441A4703D6A7BFE5041A4703DDA3729544185EB51087BFE50419A99995938295441B81E851B7BFE50410000000039295441C3F528CC7BFE50413D0AD713392954411F85EBF17CFE5041B81E856B39295441E17A14BE7EFE50413333339339295441E17A14BE7EFE5041000000E03A2954413D0AD79380FE5041000000E03A295441666666B683FE5041CDCCCC4C3A2954417B14AE7786FE5041333333933929544114AE47C189FE5041295C8FE238295441AE47E15A8CFE50419A999959382954415C8FC2458DFE504152B81E15382954411F85EBB18DFE5041CDCCCCBC37295441666666068EFE5041666666E636295441C3F5281C8DFE504185EB51983329544152B81E658BFE504114AE47B12A295441295C8F128BFE5041295C8F0229295441EC51B8DE8AFE5041713D0AD723295441C3F528DC79FE50418FC2F5B8222954411F85EB7169FE504148E17AA421295441F6285C8F68FE50417B14AE071E2954413333335360FE504148E17A1420295441D7A370FD58FE5041000000D02129544152B81EF551FE5041E17A149E232954413D0AD7B34CFE5041E17A14DE242954417B14AEA744FE5041295C8FC2262954418FC2F5D843FE5041295C8FF2262954410AD7A33045FE5041EC51B88E2C295441666666F645FE5041CDCCCC4C2C295441A4703DFA4EFE5041F6285C1F2A295441CDCCCC7C55FE5041B81E859B28295441F6285C3F58FE50410AD7A3D027295441F6285CEF69FE504148E17AA423295441713D0AA76AFE504148E17A9426295441AE47E12A6BFE5041E17A14AE28295441000000506BFE5041713D0A47292954413D0AD7F36BFE5041E17A14EE2B295441C3F528AC6CFE5041C3F528EC2E295441CDCCCC4C6DFE50415C8FC2853129544148E17A746DFE5041B81E852B322954417B14AEF75BFE504114AE476136295441D7A3705D49FE50418FC2F5B83A29544114AE47B14AFE50417B14AE47402954410AD7A3704BFE504185EB5168432954417B14AE274CFE50415C8FC26546295441E17A147E4CFE50411F85EB5146295441A4703D5A51FE50411F85EB1145295441F6285C2F57FE5041E17A147E43295441EC51B8DE5BFE50419A9999694229544152B81E9561FE5041F6285CEF4029544185EB510870FE5041B81E855B3D2954415C8FC2B571FE50415C8FC2D542295441F6285CFF72FE5041CDCCCC8C482954410000009073FE50417B14AE774B2954410AD7A32074FE504148E17A644E295441713D0A8775FE50413D0AD703542954417B14AEF775FE5041666666C655295441295C8FE276FE5041D7A370DD5529544185EB518879FE5041EC51B86E56295441A4703D1A80FE50415C8FC26557295441E17A145E85FE50413333330356295441A4703D7A88FE504148E17A84542954413D0AD7A38CFE5041D7A3707D522954416666660690FE504148E17AF450295441C3F5287C93FE5041295C8F224F29544185EB512896FE504148E17A944E2954417B14AEE791FE504148E17AF4432954415C8FC23590FE504152B81E753E29544185EB51488FFE50411F85EB713B2954410103000000010000000A00000014AE47E15BFE50415C8FC2D590295441C3F5286C39FE5041AE47E10A99295441A4703DEA3AFE504114AE47219C29544148E17A743FFE5041C3F5287C9B2954417B14AEB743FE50417B14AEC79A29544185EB51C847FE5041295C8F229A2954413D0AD78350FE50419A9999A9982954413D0AD7B355FE504185EB5198952954410AD7A3E058FE5041B81E852B9329544114AE47E15BFE50415C8FC2D5902954410103000000010000000B000000CDCCCC0C41FE5041713D0A771B2954410AD7A37040FE5041333333E318295441CDCCCCCC35FE50415C8FC2951B2954410AD7A3001EFE50418FC2F508212954410AD7A3901DFE504100000010212954411F85EB311EFE50411F85EB0124295441666666D61EFE5041713D0AD726295441F6285C4F1FFE5041CDCCCC8C26295441295C8FD234FE504114AE4781212954417B14AEC741FE5041666666661E295441CDCCCC0C41FE5041713D0A771B29544101030000000100000013000000F6285C0F42FE5041F6285C6F2129544148E17AC43BFE50419A9999D9222954418FC2F5982DFE504152B81E552629544185EB51D825FE5041000000202829544114AE47811FFE5041295C8FB2292954418FC2F52820FE50417B14AE872C2954419A9999C920FE5041666666162F29544152B81E8521FE50415C8FC245322954413333332322FE50411F85EB213529544114AE47D122FE5041A4703D1A38295441AE47E19A28FE50419A99999936295441CDCCCC1C2CFE5041EC51B8BE352954417B14AE4732FE5041295C8F5234295441F6285C4F36FE5041F6285C2F332954411F85EBB138FE5041F6285CAF322954415C8FC25540FE504148E17AE430295441A4703D4A45FE5041295C8FA22F295441295C8FF243FE50419A9999192A295441F6285C0F42FE5041F6285C6F212954410103000000010000000D000000AE47E16A44FE50415C8FC25581295441A4703DDA47FE5041AE47E17A8029544148E17AE450FE50413D0AD7537E29544114AE477158FE5041333333A37C295441713D0AB757FE5041C3F5289C7929544114AE47D147FE5041E17A147E7D295441713D0A5741FE5041295C8FF27E295441295C8FF23CFE5041AE47E1FA7F29544114AE476139FE5041B81E85DB802954413D0AD70334FE504185EB51488229544148E17AB434FE5041B81E85EB84295441A4703D6A3EFE5041CDCCCCAC82295441AE47E16A44FE50415C8FC2558129544101030000000100000026000000CDCCCC6C66FE5041C3F5284C15295441295C8F525FFE50418FC2F50817295441D7A3704D54FE5041295C8FD2192954415C8FC2254CFE504152B81EE51B295441CDCCCCBC44FE5041295C8FB21D295441333333A342FE5041333333331E295441E17A142E42FE5041000000501E295441C3F528DC42FE5041E17A143E21295441295C8F5243FE5041D7A3701D212954415C8FC2F550FE5041713D0AC71D295441AE47E11A67FE5041295C8F121829544148E17AD467FE5041AE47E10A1B295441295C8F1268FE50418FC2F5081C2954417B14AE1779FE50418FC2F5381D2954418FC2F5A88AFE5041295C8F721E295441000000908AFE5041AE47E1FA1B2954418FC2F5288AFE5041C3F5282C16295441333333E389FE50411F85EB4112295441EC51B87E89FE5041666666960C295441EC51B81E89FE50415C8FC2350729544114AE47C188FE5041F6285CEF01295441D7A3706D88FE50415C8FC235FD28544148E17A6485FE5041D7A3700DFD285441AE47E16A80FE504166666696FC2854410AD7A36078FE5041E17A14FEFB2854419A9999496FFE504114AE4761FB285441AE47E1EA60FE5041713D0A27FA285441666666F65FFE50411F85EB41FB285441CDCCCCCC60FE50418FC2F5A8FE2854411F85EB1162FE50413D0AD7D3032954413333334363FE5041EC51B8AE082954413333338363FE50413D0AD7B309295441B81E856B64FE50418FC2F5180D2954417B14AED764FE504114AE47D10E2954415C8FC21565FE504114AE47D10F2954418FC2F5A865FE5041AE47E12A122954417B14AED765FE50419A9999E912295441CDCCCC6C66FE5041C3F5284C152954410103000000010000000B000000F6285C3F86FE5041713D0A37DB285441000000F084FE5041D7A370DDDD285441F6285C0F81FE50410AD7A380E428544148E17AE47EFE5041C3F5285CE8285441000000B07CFE504148E17A54EC28544114AE47A17FFE50415C8FC285EC2854410000009082FE5041713D0AD7EC285441713D0A5787FE5041F6285C8FED28544148E17AD486FE5041713D0AD7E52854410AD7A39086FE504114AE4701E1285441F6285C3F86FE5041713D0A37DB2854410103000000010000000B000000E17A144E1CFE50410AD7A3701B295441295C8FE21CFE5041EC51B83E1E2954411F85EB411DFE5041AE47E11A1E2954415C8FC24528FE50411F85EB911B295441333333D333FE5041333333F318295441D7A370BD3FFE5041B81E85FB15295441713D0A073FFE504185EB51081329544114AE479132FE50411F85EBF1152954410AD7A3F029FE5041AE47E12A182954413D0AD7E31CFE5041666666361B295441E17A144E1CFE50410AD7A3701B2954410103000000010000000B0000005C8FC23546FE5041AE47E1AA5F295441F6285C8F50FE5041B81E851B5D295441D7A370DD50FE504185EB51085D295441713D0A2750FE5041CDCCCC2C5A29544114AE47013DFE5041EC51B8BE5E29544152B81EC52CFE50419A9999896229544114AE47712DFE50419A99997965295441295C8F6232FE5041EC51B86E64295441666666E637FE50413D0AD70363295441EC51B8AE3CFE50417B14AEE7612954415C8FC23546FE5041AE47E1AA5F295441
+</a>
+
+<b>
+010600000001000000010300000001000000110000000AD7A36041FE5041666666A61829544114AE47F141FE5041EC51B83E1B295441333333A342FE5041333333331E2954418F3298134BFE5041EBB7CF271C295441B086BEAA5BFE50413980ACF517295441CDCCCC6C66FE5041C3F5284C152954418FC2F5A865FE5041AE47E12A122954415C8FC21565FE504114AE47D10F2954417B14AED764FE504114AE47D10E295441B81E856B64FE50418FC2F5180D2954418FC2F5D85DFE5041B81E85AB0E295441333333135AFE50417B14AE870F29544114AE478155FE504148E17AC410295441666666164CFE5041C3F5281C132954417B14AE2747FE5041333333231429544152B81EB540FE5041E17A14BE152954410AD7A36041FE5041666666A618295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230526 - 3332578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000090000000103000000010000006000000085EB51488FFE50411F85EB713B295441AE47E15A8EFE504152B81E653A295441000000008EFE50413D0AD7C3392954415C8FC2458DFE5041EC51B84E392954415C8FC2958CFE5041AE47E13A39295441CDCCCC5C8BFE5041EC51B84E39295441A4703D9A89FE5041666666A63929544185EB515887FE50415C8FC2253A2954418FC2F57885FE504152B81EA53A29544114AE47F183FE5041A4703D1A3B295441CDCCCCFC82FE5041D7A370AD3B2954419A99996982FE504185EB51983C29544152B81E2582FE5041EC51B81E3F295441E17A14AE82FE50419A999909402954411F85EBE180FE5041C3F5282C43295441AE47E1CA7CFE5041E17A148E432954415C8FC29578FE50419A999949432954415C8FC25575FE5041F6285CDF412954418FC2F50874FE50415C8FC2453F2954410000003074FE5041295C8F723B29544114AE471175FE5041295C8F323829544185EB510877FE5041CDCCCCFC35295441EC51B83E77FE5041B81E859B332954418FC2F5687CFE5041CDCCCCCC3329544152B81E557CFE5041713D0A97362954415C8FC2D57BFE5041EC51B86E37295441A4703D6A7BFE5041A4703DDA3729544185EB51087BFE50419A99995938295441B81E851B7BFE50410000000039295441C3F528CC7BFE50413D0AD713392954411F85EBF17CFE5041B81E856B39295441E17A14BE7EFE50413333339339295441E17A14BE7EFE5041000000E03A2954413D0AD79380FE5041000000E03A295441666666B683FE5041CDCCCC4C3A2954417B14AE7786FE5041333333933929544114AE47C189FE5041295C8FE238295441AE47E15A8CFE50419A999959382954415C8FC2458DFE504152B81E15382954411F85EBB18DFE5041CDCCCCBC37295441666666068EFE5041666666E636295441C3F5281C8DFE504185EB51983329544152B81E658BFE504114AE47B12A295441295C8F128BFE5041295C8F0229295441EC51B8DE8AFE5041713D0AD723295441C3F528DC79FE50418FC2F5B8222954411F85EB7169FE504148E17AA421295441F6285C8F68FE50417B14AE071E2954413333335360FE504148E17A1420295441D7A370FD58FE5041000000D02129544152B81EF551FE5041E17A149E232954413D0AD7B34CFE5041E17A14DE242954417B14AEA744FE5041295C8FC2262954418FC2F5D843FE5041295C8FF2262954410AD7A33045FE5041EC51B88E2C295441666666F645FE5041CDCCCC4C2C295441A4703DFA4EFE5041F6285C1F2A295441CDCCCC7C55FE5041B81E859B28295441F6285C3F58FE50410AD7A3D027295441F6285CEF69FE504148E17AA423295441713D0AA76AFE504148E17A9426295441AE47E12A6BFE5041E17A14AE28295441000000506BFE5041713D0A47292954413D0AD7F36BFE5041E17A14EE2B295441C3F528AC6CFE5041C3F528EC2E295441CDCCCC4C6DFE50415C8FC2853129544148E17A746DFE5041B81E852B322954417B14AEF75BFE504114AE476136295441D7A3705D49FE50418FC2F5B83A29544114AE47B14AFE50417B14AE47402954410AD7A3704BFE504185EB5168432954417B14AE274CFE50415C8FC26546295441E17A147E4CFE50411F85EB5146295441A4703D5A51FE50411F85EB1145295441F6285C2F57FE5041E17A147E43295441EC51B8DE5BFE50419A9999694229544152B81E9561FE5041F6285CEF4029544185EB510870FE5041B81E855B3D2954415C8FC2B571FE50415C8FC2D542295441F6285CFF72FE5041CDCCCC8C482954410000009073FE50417B14AE774B2954410AD7A32074FE504148E17A644E295441713D0A8775FE50413D0AD703542954417B14AEF775FE5041666666C655295441295C8FE276FE5041D7A370DD5529544185EB518879FE5041EC51B86E56295441A4703D1A80FE50415C8FC26557295441E17A145E85FE50413333330356295441A4703D7A88FE504148E17A84542954413D0AD7A38CFE5041D7A3707D522954416666660690FE504148E17AF450295441C3F5287C93FE5041295C8F224F29544185EB512896FE504148E17A944E2954417B14AEE791FE504148E17AF4432954415C8FC23590FE504152B81E753E29544185EB51488FFE50411F85EB713B2954410103000000010000000A00000014AE47E15BFE50415C8FC2D590295441C3F5286C39FE5041AE47E10A99295441A4703DEA3AFE504114AE47219C29544148E17A743FFE5041C3F5287C9B2954417B14AEB743FE50417B14AEC79A29544185EB51C847FE5041295C8F229A2954413D0AD78350FE50419A9999A9982954413D0AD7B355FE504185EB5198952954410AD7A3E058FE5041B81E852B9329544114AE47E15BFE50415C8FC2D5902954410103000000010000000B000000CDCCCC0C41FE5041713D0A771B2954410AD7A37040FE5041333333E318295441CDCCCCCC35FE50415C8FC2951B2954410AD7A3001EFE50418FC2F508212954410AD7A3901DFE504100000010212954411F85EB311EFE50411F85EB0124295441666666D61EFE5041713D0AD726295441F6285C4F1FFE5041CDCCCC8C26295441295C8FD234FE504114AE4781212954417B14AEC741FE5041666666661E295441CDCCCC0C41FE5041713D0A771B29544101030000000100000013000000F6285C0F42FE5041F6285C6F2129544148E17AC43BFE50419A9999D9222954418FC2F5982DFE504152B81E552629544185EB51D825FE5041000000202829544114AE47811FFE5041295C8FB2292954418FC2F52820FE50417B14AE872C2954419A9999C920FE5041666666162F29544152B81E8521FE50415C8FC245322954413333332322FE50411F85EB213529544114AE47D122FE5041A4703D1A38295441AE47E19A28FE50419A99999936295441CDCCCC1C2CFE5041EC51B8BE352954417B14AE4732FE5041295C8F5234295441F6285C4F36FE5041F6285C2F332954411F85EBB138FE5041F6285CAF322954415C8FC25540FE504148E17AE430295441A4703D4A45FE5041295C8FA22F295441295C8FF243FE50419A9999192A295441F6285C0F42FE5041F6285C6F212954410103000000010000000D000000AE47E16A44FE50415C8FC25581295441A4703DDA47FE5041AE47E17A8029544148E17AE450FE50413D0AD7537E29544114AE477158FE5041333333A37C295441713D0AB757FE5041C3F5289C7929544114AE47D147FE5041E17A147E7D295441713D0A5741FE5041295C8FF27E295441295C8FF23CFE5041AE47E1FA7F29544114AE476139FE5041B81E85DB802954413D0AD70334FE504185EB51488229544148E17AB434FE5041B81E85EB84295441A4703D6A3EFE5041CDCCCCAC82295441AE47E16A44FE50415C8FC2558129544101030000000100000026000000CDCCCC6C66FE5041C3F5284C15295441295C8F525FFE50418FC2F50817295441D7A3704D54FE5041295C8FD2192954415C8FC2254CFE504152B81EE51B295441CDCCCCBC44FE5041295C8FB21D295441333333A342FE5041333333331E295441E17A142E42FE5041000000501E295441C3F528DC42FE5041E17A143E21295441295C8F5243FE5041D7A3701D212954415C8FC2F550FE5041713D0AC71D295441AE47E11A67FE5041295C8F121829544148E17AD467FE5041AE47E10A1B295441295C8F1268FE50418FC2F5081C2954417B14AE1779FE50418FC2F5381D2954418FC2F5A88AFE5041295C8F721E295441000000908AFE5041AE47E1FA1B2954418FC2F5288AFE5041C3F5282C16295441333333E389FE50411F85EB4112295441EC51B87E89FE5041666666960C295441EC51B81E89FE50415C8FC2350729544114AE47C188FE5041F6285CEF01295441D7A3706D88FE50415C8FC235FD28544148E17A6485FE5041D7A3700DFD285441AE47E16A80FE504166666696FC2854410AD7A36078FE5041E17A14FEFB2854419A9999496FFE504114AE4761FB285441AE47E1EA60FE5041713D0A27FA285441666666F65FFE50411F85EB41FB285441CDCCCCCC60FE50418FC2F5A8FE2854411F85EB1162FE50413D0AD7D3032954413333334363FE5041EC51B8AE082954413333338363FE50413D0AD7B309295441B81E856B64FE50418FC2F5180D2954417B14AED764FE504114AE47D10E2954415C8FC21565FE504114AE47D10F2954418FC2F5A865FE5041AE47E12A122954417B14AED765FE50419A9999E912295441CDCCCC6C66FE5041C3F5284C152954410103000000010000000B000000F6285C3F86FE5041713D0A37DB285441000000F084FE5041D7A370DDDD285441F6285C0F81FE50410AD7A380E428544148E17AE47EFE5041C3F5285CE8285441000000B07CFE504148E17A54EC28544114AE47A17FFE50415C8FC285EC2854410000009082FE5041713D0AD7EC285441713D0A5787FE5041F6285C8FED28544148E17AD486FE5041713D0AD7E52854410AD7A39086FE504114AE4701E1285441F6285C3F86FE5041713D0A37DB2854410103000000010000000B000000E17A144E1CFE50410AD7A3701B295441295C8FE21CFE5041EC51B83E1E2954411F85EB411DFE5041AE47E11A1E2954415C8FC24528FE50411F85EB911B295441333333D333FE5041333333F318295441D7A370BD3FFE5041B81E85FB15295441713D0A073FFE504185EB51081329544114AE479132FE50411F85EBF1152954410AD7A3F029FE5041AE47E12A182954413D0AD7E31CFE5041666666361B295441E17A144E1CFE50410AD7A3701B2954410103000000010000000B0000005C8FC23546FE5041AE47E1AA5F295441F6285C8F50FE5041B81E851B5D295441D7A370DD50FE504185EB51085D295441713D0A2750FE5041CDCCCC2C5A29544114AE47013DFE5041EC51B8BE5E29544152B81EC52CFE50419A9999896229544114AE47712DFE50419A99997965295441295C8F6232FE5041EC51B86E64295441666666E637FE50413D0AD70363295441EC51B8AE3CFE50417B14AEE7612954415C8FC23546FE5041AE47E1AA5F295441
+</a>
+
+<b>
+010600000001000000010300000001000000110000000AD7A36041FE5041666666A61829544114AE47F141FE5041EC51B83E1B295441333333A342FE5041333333331E2954418F3298134BFE5041EBB7CF271C295441B086BEAA5BFE50413980ACF517295441CDCCCC6C66FE5041C3F5284C152954418FC2F5A865FE5041AE47E12A122954415C8FC21565FE504114AE47D10F2954417B14AED764FE504114AE47D10E295441B81E856B64FE50418FC2F5180D2954418FC2F5D85DFE5041B81E85AB0E295441333333135AFE50417B14AE870F29544114AE478155FE504148E17AC410295441666666164CFE5041C3F5281C132954417B14AE2747FE5041333333231429544152B81EB540FE5041E17A14BE152954410AD7A36041FE5041666666A618295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>877892 - 28656
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000E17A14FEE8A25041F6285CDFCEF55441D7A370CDE0A25041EC51B81EE9F5544185EB51C8EDA250415C8FC2A5EBF55441B81E85EBF2A25041C3F5284CD1F5544185EB51F8F5A25041E17A144EB9F55441AE47E17AEBA2504185EB5188B6F55441E17A14FEE8A25041F6285CDFCEF55441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000EDB9B0FDE7A2504155210B15D2F55441C1E4AF6AE6A25041CFAAB38BD7F554417AD2DDD0E3A2504137669EFFDFF554413E6DD19FE7A2504148A4E89DD6F5544190FD4CF2E9A25041E377EA4CD0F554412182C198EAA25041A7E3C16BCDF554410C866E27EBA250413CC80685C9F55441B306363FEBA25041BBB0F82CC6F55441938C3915ECA25041AB452AF1B6F55441A9888C86EBA25041AB452AF1B6F55441CE7AE1C2E9A250411DE0AD59C7F55441553885AAE9A25041C0340B48C8F55441F3FA2E93E9A2504198D62B90CBF55441B077491CE9A250417CEB1B89CEF5544116509B07E8A25041E26843F5D1F55441EDB9B0FDE7A2504155210B15D2F55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873264 - 1362186
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000BE0D2DB03F405141710C45EE5BE5544150BC81EB32405141207AD77F5BE55441B24AC6B11E40514180FE588560E55441CBB5E9B3064051419AC31A6166E55441A456DFAD074051418DF23F8977E554410277FF180840514111726AFA76E554414D2B51641F405141F34847846CE55441704906FC414051410BAAA7C56DE554417B065B5263405141E54A9DBF6EE55441B76264FF5E405141C122256765E554419CC552E35E4051413138D04565E55441D198074B6040514187D0468668E55441423D88765E40514146B69FC464E554413F0635205D405141F2E41C2E63E55441E395E0075B405141F6D4C23861E5544170FD2BDC564051412703AB8A5DE5544160C86DC055405141AB3E98C75CE55441727CDC1756405141B0EB73DD5CE55441933AECA655405141FA1ACD795CE554417C65450D514051413E3A7B625CE554419A39418954405141FA1ACD795CE554419C7CA90C55405141BA2BA79A5CE55441315CCCC7324051415E3A42C75BE554418228C0D01E40514121AA087E60E55441701C370F334051413FDA8CA35BE5544102C7DA313F4051417D9AF7EA5BE55441BE0D2DB03F405141710C45EE5BE55441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C00D2DB03F4051416F0C45EE5BE554414DBC81EB32405141257AD77F5BE55441B24AC6B11E4051417FFE588560E55441C6B5E9B3064051419BC31A6166E55441A856DFAD0740514189F23F8977E554410477FF18084051410F726AFA76E554414C2B51641F405141F54847846CE55441704906FC4140514108AAA7C56DE5544176065B5263405141EA4A9DBF6EE55441B66264FF5E405141C422256765E55441A0C552E35E4051413138D04565E55441D198074B6040514189D0468668E55441463D88765E40514149B69FC464E554413C0635205D405141F3E41C2E63E55441E295E0075B405141F2D4C23861E5544174FD2BDC564051412303AB8A5DE5544165C86DC055405141A63E98C75CE554416D7CDC1756405141B5EB73DD5CE55441913AECA655405141FB1ACD795CE554417A65450D514051413E3A7B625CE554419C39418954405141FB1ACD795CE554419B7CA90C55405141BE2BA79A5CE554412F5CCCC732405141623A42C75BE554418428C0D01E4051411EAA087E60E554416C1C370F3340514144DA8CA35BE5544101C7DA313F405141819AF7EA5BE55441C00D2DB03F4051416F0C45EE5BE55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873264 - 4082440
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000BE0D2DB03F405141710C45EE5BE5544150BC81EB32405141207AD77F5BE55441B24AC6B11E40514180FE588560E55441CBB5E9B3064051419AC31A6166E55441A456DFAD074051418DF23F8977E554410277FF180840514111726AFA76E554414D2B51641F405141F34847846CE55441704906FC414051410BAAA7C56DE554417B065B5263405141E54A9DBF6EE55441B76264FF5E405141C122256765E554419CC552E35E4051413138D04565E55441D198074B6040514187D0468668E55441423D88765E40514146B69FC464E554413F0635205D405141F2E41C2E63E55441E395E0075B405141F6D4C23861E5544170FD2BDC564051412703AB8A5DE5544160C86DC055405141AB3E98C75CE55441727CDC1756405141B0EB73DD5CE55441933AECA655405141FA1ACD795CE554417C65450D514051413E3A7B625CE554419A39418954405141FA1ACD795CE554419C7CA90C55405141BA2BA79A5CE55441315CCCC7324051415E3A42C75BE554418228C0D01E40514121AA087E60E55441701C370F334051413FDA8CA35BE5544102C7DA313F4051417D9AF7EA5BE55441BE0D2DB03F405141710C45EE5BE55441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C00D2DB03F4051416F0C45EE5BE554414DBC81EB32405141257AD77F5BE55441B24AC6B11E4051417FFE588560E55441C6B5E9B3064051419BC31A6166E55441A856DFAD0740514189F23F8977E554410477FF18084051410F726AFA76E554414C2B51641F405141F54847846CE55441704906FC4140514108AAA7C56DE5544176065B5263405141EA4A9DBF6EE55441B66264FF5E405141C422256765E55441A0C552E35E4051413138D04565E55441D198074B6040514189D0468668E55441463D88765E40514149B69FC464E554413C0635205D405141F3E41C2E63E55441E295E0075B405141F2D4C23861E5544174FD2BDC564051412303AB8A5DE5544165C86DC055405141A63E98C75CE554416D7CDC1756405141B5EB73DD5CE55441913AECA655405141FB1ACD795CE554417A65450D514051413E3A7B625CE554419C39418954405141FB1ACD795CE554419B7CA90C55405141BE2BA79A5CE554412F5CCCC732405141623A42C75BE554418428C0D01E4051411EAA087E60E554416C1C370F3340514144DA8CA35BE5544101C7DA313F405141819AF7EA5BE55441C00D2DB03F4051416F0C45EE5BE55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905542 - 2966542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000000000E037BD5041713D0A37F3125541713D0AA72ABD504100000010F8125541D7A3706D28BD50411F85EB01FB125541E17A144E27BD5041D7A3707DFC125541666666461BBD5041F6285CEFFC1255413D0AD7331ABD5041AE47E10A07135541713D0AD725BD5041B81E855B0A1355413D0AD7332BBD5041AE47E10A0A135541A4703DBA34BD504152B81E950C1355411F85EBB136BD5041295C8FE20D13554185EB51983BBD504100000030141355417B14AE6754BD5041333333D3121355418FC2F5485FBD5041A4703D1A121355417B14AE6768BD50415C8FC2350B135541CDCCCC5C6ABD504148E17A7405135541295C8FA26FBD5041AE47E15AF9125541713D0AF76FBD5041AE47E1FAF61255416666661670BD5041E17A14AEF41255419A99992970BD50411F85EB41F31255417B14AEC76FBD5041D7A3701DF1125541713D0AD76EBD5041AE47E12AEF125541A4703D3A6DBD5041C3F5287CEE12554185EB51185DBD5041D7A370EDEF125541000000E037BD5041713D0A37F3125541
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000051FA22383ABD5041043A1237FA12554130C4370B41BD5041938FDEB1F812554127848CCC44BD5041A53AAA79F71255411294791C46BD5041822F4B0CF7125541321C6FA047BD5041C5C7ABDAF612554193A8561349BD50419BD03AABF61255414FAB782F50BD5041CB0B6CC2F51255415DCC035455BD5041C261176CF5125541FF511A4457BD5041249C8F4BF5125541A879DC615BBD5041E96EA3A5F41255419E88C16761BD50411ACEA488F312554133113BA867BD5041C891239BF21255413637D4F467BD5041A3994704F6125541BCBC5D6568BD5041B4B53146F9125541891B1FBE6FBD5041E31221BEF8125541527892DB6FBD504136B790C0F7125541887843FE6FBD504123074173F61255419EA8CF1A70BD504112356A5AF4125541F434AA2670BD504170BC7A31F31255419E1342CD6FBD5041AC49AF3CF1125541D78311DD6EBD504177A65E37EF125541B7EC67416DBD5041936A317FEE125541BAAB239462BD50418499EA6FEF12554123ACE5E656BD5041656D7979F0125541A306F52445BD504150F2FF0AF2125541000000E037BD5041713D0A37F3125541713D0AA72ABD504100000010F8125541C15DD6F127BD504168DF29A5FB125541254F96352FBD50413CD887FDFA12554151FA22383ABD5041043A1237FA125541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905542 - 3506861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000000000E037BD5041713D0A37F3125541713D0AA72ABD504100000010F8125541D7A3706D28BD50411F85EB01FB125541E17A144E27BD5041D7A3707DFC125541666666461BBD5041F6285CEFFC1255413D0AD7331ABD5041AE47E10A07135541713D0AD725BD5041B81E855B0A1355413D0AD7332BBD5041AE47E10A0A135541A4703DBA34BD504152B81E950C1355411F85EBB136BD5041295C8FE20D13554185EB51983BBD504100000030141355417B14AE6754BD5041333333D3121355418FC2F5485FBD5041A4703D1A121355417B14AE6768BD50415C8FC2350B135541CDCCCC5C6ABD504148E17A7405135541295C8FA26FBD5041AE47E15AF9125541713D0AF76FBD5041AE47E1FAF61255416666661670BD5041E17A14AEF41255419A99992970BD50411F85EB41F31255417B14AEC76FBD5041D7A3701DF1125541713D0AD76EBD5041AE47E12AEF125541A4703D3A6DBD5041C3F5287CEE12554185EB51185DBD5041D7A370EDEF125541000000E037BD5041713D0A37F3125541
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000051FA22383ABD5041043A1237FA12554130C4370B41BD5041938FDEB1F812554127848CCC44BD5041A53AAA79F71255411294791C46BD5041822F4B0CF7125541321C6FA047BD5041C5C7ABDAF612554193A8561349BD50419BD03AABF61255414FAB782F50BD5041CB0B6CC2F51255415DCC035455BD5041C261176CF5125541FF511A4457BD5041249C8F4BF5125541A879DC615BBD5041E96EA3A5F41255419E88C16761BD50411ACEA488F312554133113BA867BD5041C891239BF21255413637D4F467BD5041A3994704F6125541BCBC5D6568BD5041B4B53146F9125541891B1FBE6FBD5041E31221BEF8125541527892DB6FBD504136B790C0F7125541887843FE6FBD504123074173F61255419EA8CF1A70BD504112356A5AF4125541F434AA2670BD504170BC7A31F31255419E1342CD6FBD5041AC49AF3CF1125541D78311DD6EBD504177A65E37EF125541B7EC67416DBD5041936A317FEE125541BAAB239462BD50418499EA6FEF12554123ACE5E656BD5041656D7979F0125541A306F52445BD504150F2FF0AF2125541000000E037BD5041713D0A37F3125541713D0AA72ABD504100000010F8125541C15DD6F127BD504168DF29A5FB125541254F96352FBD50413CD887FDFA12554151FA22383ABD5041043A1237FA125541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>601743 - 1610062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002E00000066666636E05B50413D0AD74386265541A4703DAAE45B50411F85EBB181265541C3F5289CED5B504114AE47717B265541000000A0F65B5041E17A14BE7726554152B81E25FE5B50417B14AE9775265541C3F5288C115C5041000000C073265541E17A143E145C5041000000506B265541A4703D9A125C5041000000606A265541666666B6145C5041000000B06526554148E17A641B5C50419A9999D9682655410AD7A3601F5C50413D0AD7C3602655413D0AD773205C50415C8FC2655C265541D7A3705D1C5C50415C8FC2455B2655410AD7A310185C50418FC2F59859265541333333A3115C5041AE47E1EA56265541AE47E15A0F5C5041AE47E1CA5526554114AE47B10E5C5041E17A147E5526554148E17A540C5C5041CDCCCCFC57265541F6285C1F075C5041000000605D26554152B81E45015C504114AE479163265541EC51B8CEFE5B50413D0AD7036626554185EB5118FC5B50411F85EB81682655419A999919F95B504148E17A046B2655418FC2F5A8F75B5041295C8F426C2655419A9999B9F55B50415C8FC2056E26554185EB5168EB5B50417B14AEE777265541295C8F92DE5B50411F85EB11842655411F85EB41D55B50410AD7A3008D2655415C8FC295CC5B504185EB51789526554133333383C45B5041000000809D265541B81E85FBBB5B5041E17A141EA6265541A4703D0AB45B5041295C8F52AE265541C3F5286CAB5B5041E17A145EB7265541295C8F82A15B5041D7A370FDC1265541D7A3707D9D5B504166666656C626554152B81E35985B5041C3F5284CCC265541F6285CFF955B5041295C8F12CF26554100000080925B504166666636D326554100000090925B5041C3F528FCD3265541EC51B80E955B50413D0AD763D4265541EC51B8DE975B5041C3F528BCD126554166666696995B5041C3F5285CD2265541A4703DDAA55B50411F85EB31C5265541A4703DCAC45B50419A9999F9A22655410AD7A350D55B50413D0AD7739226554166666636E05B50413D0AD74386265541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000B5DA507ADF5B50418558D0AA85265541B955BB1AE25B50410BAB69228326554162DF8748E45B50419A316038812655415A768038EC5B504158B51AD47A265541AD085C7DF35B50418A4A4EA5742655419FDBE73BF95B504194073912702655411795F43FFF5B50419D8EA0396B265541925A3A3F065C5041EAEC0ED06426554179BF499E0C5C5041597294C65E2655417AD04606145C5041AF6BACE957265541333333A3115C5041AE47E1EA5626554114AE47B10E5C5041E17A147E552655414E348E0E0A5C504196CBD6565A26554105502F4B055C5041AAAD5F4F5F265541B10B23B3015C50410F27DF1C632655417E18D043FF5B50419EDB758F65265541B6B0B45CFB5B5041BB0F271F69265541A3D40F31F75B50414402C5AF6C26554130BEA660F45B504148472A506F2655412DC5E0FCF05B5041411A5A8F7226554185EB5168EB5B50417B14AEE777265541295C8F92DE5B50411F85EB11842655411F85EB41D55B50410AD7A3008D2655415C8FC295CC5B504185EB51789526554133333383C45B5041000000809D265541B81E85FBBB5B5041E17A141EA6265541A4703D0AB45B5041295C8F52AE265541C3F5286CAB5B5041E17A145EB7265541295C8F82A15B5041D7A370FDC1265541D7A3707D9D5B504166666656C626554152B81E35985B5041C3F5284CCC265541F6285CFF955B5041295C8F12CF26554100000080925B504166666636D326554100000090925B5041C3F528FCD3265541EC51B80E955B50413D0AD763D4265541EC51B8DE975B5041C3F528BCD1265541BCC9AC98A25B50415183F9D4C5265541668468DBB35B504113F00012B326554171F5A7BCBB5B504135459F58AA265541EC98E385C35B50419C065C5FA2265541D3B48420D45B50413BB8BEDC91265541B5DA507ADF5B50418558D0AA85265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888700 - 368017
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000033000000CFFFF425B0D35041A9A9AB578E2B5441BA2292F4B4D350416B911EF18D2B544164887BA7CED35041F7152DF38B2B5441E3D93932CDD35041E8BC1FAF802B544149F80AE8CAD350410CC889DA742B54419588FCC9CBD35041188A4D186E2B5441D3A08930CCD35041D0C2DCAF682B5441F22CD063CCD3504162D059AE642B544156706F63CBD350418F9A37AD612B54411FF7AD62C9D350411A09E9455F2B54416C4DD294C6D350415FC041125E2B5441FD5A4F93C2D350414034FBDE5D2B54415BFF222DC3D350412D67B049692B54413C73DCF9C2D3504141C5774D732B544151503F2BBED350413A26ACE7742B54410989CEC2B8D350413387E081762B5441631D8AC0B2D350413387E081762B5441610D7224ACD350413387E081762B5441F21AEF22A8D3504106AB2142552B54417D89A0BBA5D35041EEBDA674532B544184286C21A4D35041EBAD8ED84C2B544184286C21A4D35041018BF109482B5441A3B4B254A4D35041AF149D9F3D2B54413431B3E48AD35041972722D23B2B5441B061CDB18BD35041A1D605D4402B544132341FB08FD35041AC41320B492B5441C699822391D350419BE903974E2B5441AC09A47E92D3504195A58FC1512B54414F0C868696D3504132FF945D5A2B54410C87051E9BD3504124B8CC47642B544189B71FEB9BD350411C1901E2652B5441C7CFAC519CD350414344137B642B5441E65BF3849CD350414AE3DEE0622B5441FE486E529ED350414AE3DEE0622B54419905CF529FD350414AE3DEE0622B5441F7A9A2EC9FD3504124B8CC47642B5441926603EDA0D3504162D059AE642B54416C3BF153A2D3504162D059AE642B5441AA537EBAA2D350417ABDD47B662B5441E96B0B21A3D35041731E0916682B54414610DFBAA3D350410EDB6916692B54418BC73787A2D35041AA97CA166A2B5441B1F24920A1D3504126C8E4E36A2B54413C61FBB89ED3504145542B176B2B5441C030E1EB9DD3504145542B176B2B5441822E220CA2D3504142ACB98A732B54418FB095F7A3D350413ABBAA7D772B54413DF428BBA6D3504151DCA79A7D2B5441E2A731E3A8D350416F93EB59812B54418ED74F23A9D35041E2A10886812B5441CFFFF425B0D35041A9A9AB578E2B5441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000D7A3708D9FD35041C3F5283C802B5441713D0A87A2D3504133333333842B5441CDCCCC9CA3D350417B14AE77862B5441AE47E19AA4D3504133333373882B54419A9999F9A5D35041A4703D1A8A2B54419A999949A8D3504152B81EB58B2B54415C8FC2C5ACD35041D7A3701D8E2B54413D0AD733AFD35041666666468F2B5441B81E851BB0D35041C3F5284C8E2B54413D0AD7A3A8D3504185EB51E8802B544166666656A5D3504114AE47317B2B54411F85EB11A4D350413D0AD7B3772B54418FC2F5A8A1D35041EC51B8BE722B5441CDCCCC3C9DD35041666666F6682B5441000000D098D3504148E17A445F2B544185EB51A892D3504133333313522B5441295C8F6291D3504152B81E954F2B54419A99997990D35041A4703DEA4B2B5441D7A3709D8FD35041713D0AC7482B54411F85EB218FD35041EC51B85E472B544114AE47718ED3504148E17AC4452B54417B14AE678DD3504152B81E35442B544114AE47718CD35041CDCCCCFC412B54419A9999D98BD3504114AE4761402B54419A9999D98AD35041C3F5282C3D2B5441AE47E14A8AD35041333333E33B2B5441333333C388D35041A4703DFA382B5441713D0AF789D3504114AE4701392B54417B14AEF789D350419A9999E9352B5441713D0AF789D350418FC2F528332B5441CDCCCC0C5AD3504166666636322B5441000000905BD350417B14AE67342B5441713D0A675DD350415C8FC285372B5441EC51B83E5FD35041AE47E18A3A2B5441A4703D3A61D350418FC2F5D83D2B5441EC51B87E63D3504185EB51B8412B5441EC51B8CE65D35041E17A14EE442B5441666666D667D3504100000000482B54410AD7A3006BD35041E17A144E4B2B54415C8FC2D56DD35041AE47E10A4E2B5441295C8FD274D35041C3F528FC542B54413333337379D3504148E17AB4592B544185EB51487CD35041E17A14AE5C2B5441666666D683D3504114AE47D1622B5441D7A3709D87D35041F6285CEF652B5441C3F5286C8DD350411F85EBB16B2B5441AE47E15A95D350419A999949742B5441333333339CD35041000000F07B2B5441D7A3708D9FD35041C3F5283C802B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888700 - 1152515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000033000000CFFFF425B0D35041A9A9AB578E2B5441BA2292F4B4D350416B911EF18D2B544164887BA7CED35041F7152DF38B2B5441E3D93932CDD35041E8BC1FAF802B544149F80AE8CAD350410CC889DA742B54419588FCC9CBD35041188A4D186E2B5441D3A08930CCD35041D0C2DCAF682B5441F22CD063CCD3504162D059AE642B544156706F63CBD350418F9A37AD612B54411FF7AD62C9D350411A09E9455F2B54416C4DD294C6D350415FC041125E2B5441FD5A4F93C2D350414034FBDE5D2B54415BFF222DC3D350412D67B049692B54413C73DCF9C2D3504141C5774D732B544151503F2BBED350413A26ACE7742B54410989CEC2B8D350413387E081762B5441631D8AC0B2D350413387E081762B5441610D7224ACD350413387E081762B5441F21AEF22A8D3504106AB2142552B54417D89A0BBA5D35041EEBDA674532B544184286C21A4D35041EBAD8ED84C2B544184286C21A4D35041018BF109482B5441A3B4B254A4D35041AF149D9F3D2B54413431B3E48AD35041972722D23B2B5441B061CDB18BD35041A1D605D4402B544132341FB08FD35041AC41320B492B5441C699822391D350419BE903974E2B5441AC09A47E92D3504195A58FC1512B54414F0C868696D3504132FF945D5A2B54410C87051E9BD3504124B8CC47642B544189B71FEB9BD350411C1901E2652B5441C7CFAC519CD350414344137B642B5441E65BF3849CD350414AE3DEE0622B5441FE486E529ED350414AE3DEE0622B54419905CF529FD350414AE3DEE0622B5441F7A9A2EC9FD3504124B8CC47642B5441926603EDA0D3504162D059AE642B54416C3BF153A2D3504162D059AE642B5441AA537EBAA2D350417ABDD47B662B5441E96B0B21A3D35041731E0916682B54414610DFBAA3D350410EDB6916692B54418BC73787A2D35041AA97CA166A2B5441B1F24920A1D3504126C8E4E36A2B54413C61FBB89ED3504145542B176B2B5441C030E1EB9DD3504145542B176B2B5441822E220CA2D3504142ACB98A732B54418FB095F7A3D350413ABBAA7D772B54413DF428BBA6D3504151DCA79A7D2B5441E2A731E3A8D350416F93EB59812B54418ED74F23A9D35041E2A10886812B5441CFFFF425B0D35041A9A9AB578E2B5441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000D7A3708D9FD35041C3F5283C802B5441713D0A87A2D3504133333333842B5441CDCCCC9CA3D350417B14AE77862B5441AE47E19AA4D3504133333373882B54419A9999F9A5D35041A4703D1A8A2B54419A999949A8D3504152B81EB58B2B54415C8FC2C5ACD35041D7A3701D8E2B54413D0AD733AFD35041666666468F2B5441B81E851BB0D35041C3F5284C8E2B54413D0AD7A3A8D3504185EB51E8802B544166666656A5D3504114AE47317B2B54411F85EB11A4D350413D0AD7B3772B54418FC2F5A8A1D35041EC51B8BE722B5441CDCCCC3C9DD35041666666F6682B5441000000D098D3504148E17A445F2B544185EB51A892D3504133333313522B5441295C8F6291D3504152B81E954F2B54419A99997990D35041A4703DEA4B2B5441D7A3709D8FD35041713D0AC7482B54411F85EB218FD35041EC51B85E472B544114AE47718ED3504148E17AC4452B54417B14AE678DD3504152B81E35442B544114AE47718CD35041CDCCCCFC412B54419A9999D98BD3504114AE4761402B54419A9999D98AD35041C3F5282C3D2B5441AE47E14A8AD35041333333E33B2B5441333333C388D35041A4703DFA382B5441713D0AF789D3504114AE4701392B54417B14AEF789D350419A9999E9352B5441713D0AF789D350418FC2F528332B5441CDCCCC0C5AD3504166666636322B5441000000905BD350417B14AE67342B5441713D0A675DD350415C8FC285372B5441EC51B83E5FD35041AE47E18A3A2B5441A4703D3A61D350418FC2F5D83D2B5441EC51B87E63D3504185EB51B8412B5441EC51B8CE65D35041E17A14EE442B5441666666D667D3504100000000482B54410AD7A3006BD35041E17A144E4B2B54415C8FC2D56DD35041AE47E10A4E2B5441295C8FD274D35041C3F528FC542B54413333337379D3504148E17AB4592B544185EB51487CD35041E17A14AE5C2B5441666666D683D3504114AE47D1622B5441D7A3709D87D35041F6285CEF652B5441C3F5286C8DD350411F85EBB16B2B5441AE47E15A95D350419A999949742B5441333333339CD35041000000F07B2B5441D7A3708D9FD35041C3F5283C802B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888700 - 3946341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000033000000CFFFF425B0D35041A9A9AB578E2B5441BA2292F4B4D350416B911EF18D2B544164887BA7CED35041F7152DF38B2B5441E3D93932CDD35041E8BC1FAF802B544149F80AE8CAD350410CC889DA742B54419588FCC9CBD35041188A4D186E2B5441D3A08930CCD35041D0C2DCAF682B5441F22CD063CCD3504162D059AE642B544156706F63CBD350418F9A37AD612B54411FF7AD62C9D350411A09E9455F2B54416C4DD294C6D350415FC041125E2B5441FD5A4F93C2D350414034FBDE5D2B54415BFF222DC3D350412D67B049692B54413C73DCF9C2D3504141C5774D732B544151503F2BBED350413A26ACE7742B54410989CEC2B8D350413387E081762B5441631D8AC0B2D350413387E081762B5441610D7224ACD350413387E081762B5441F21AEF22A8D3504106AB2142552B54417D89A0BBA5D35041EEBDA674532B544184286C21A4D35041EBAD8ED84C2B544184286C21A4D35041018BF109482B5441A3B4B254A4D35041AF149D9F3D2B54413431B3E48AD35041972722D23B2B5441B061CDB18BD35041A1D605D4402B544132341FB08FD35041AC41320B492B5441C699822391D350419BE903974E2B5441AC09A47E92D3504195A58FC1512B54414F0C868696D3504132FF945D5A2B54410C87051E9BD3504124B8CC47642B544189B71FEB9BD350411C1901E2652B5441C7CFAC519CD350414344137B642B5441E65BF3849CD350414AE3DEE0622B5441FE486E529ED350414AE3DEE0622B54419905CF529FD350414AE3DEE0622B5441F7A9A2EC9FD3504124B8CC47642B5441926603EDA0D3504162D059AE642B54416C3BF153A2D3504162D059AE642B5441AA537EBAA2D350417ABDD47B662B5441E96B0B21A3D35041731E0916682B54414610DFBAA3D350410EDB6916692B54418BC73787A2D35041AA97CA166A2B5441B1F24920A1D3504126C8E4E36A2B54413C61FBB89ED3504145542B176B2B5441C030E1EB9DD3504145542B176B2B5441822E220CA2D3504142ACB98A732B54418FB095F7A3D350413ABBAA7D772B54413DF428BBA6D3504151DCA79A7D2B5441E2A731E3A8D350416F93EB59812B54418ED74F23A9D35041E2A10886812B5441CFFFF425B0D35041A9A9AB578E2B5441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000D7A3708D9FD35041C3F5283C802B5441713D0A87A2D3504133333333842B5441CDCCCC9CA3D350417B14AE77862B5441AE47E19AA4D3504133333373882B54419A9999F9A5D35041A4703D1A8A2B54419A999949A8D3504152B81EB58B2B54415C8FC2C5ACD35041D7A3701D8E2B54413D0AD733AFD35041666666468F2B5441B81E851BB0D35041C3F5284C8E2B54413D0AD7A3A8D3504185EB51E8802B544166666656A5D3504114AE47317B2B54411F85EB11A4D350413D0AD7B3772B54418FC2F5A8A1D35041EC51B8BE722B5441CDCCCC3C9DD35041666666F6682B5441000000D098D3504148E17A445F2B544185EB51A892D3504133333313522B5441295C8F6291D3504152B81E954F2B54419A99997990D35041A4703DEA4B2B5441D7A3709D8FD35041713D0AC7482B54411F85EB218FD35041EC51B85E472B544114AE47718ED3504148E17AC4452B54417B14AE678DD3504152B81E35442B544114AE47718CD35041CDCCCCFC412B54419A9999D98BD3504114AE4761402B54419A9999D98AD35041C3F5282C3D2B5441AE47E14A8AD35041333333E33B2B5441333333C388D35041A4703DFA382B5441713D0AF789D3504114AE4701392B54417B14AEF789D350419A9999E9352B5441713D0AF789D350418FC2F528332B5441CDCCCC0C5AD3504166666636322B5441000000905BD350417B14AE67342B5441713D0A675DD350415C8FC285372B5441EC51B83E5FD35041AE47E18A3A2B5441A4703D3A61D350418FC2F5D83D2B5441EC51B87E63D3504185EB51B8412B5441EC51B8CE65D35041E17A14EE442B5441666666D667D3504100000000482B54410AD7A3006BD35041E17A144E4B2B54415C8FC2D56DD35041AE47E10A4E2B5441295C8FD274D35041C3F528FC542B54413333337379D3504148E17AB4592B544185EB51487CD35041E17A14AE5C2B5441666666D683D3504114AE47D1622B5441D7A3709D87D35041F6285CEF652B5441C3F5286C8DD350411F85EBB16B2B5441AE47E15A95D350419A999949742B5441333333339CD35041000000F07B2B5441D7A3708D9FD35041C3F5283C802B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>422869 - 401176
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000004C810CAB9A60504155E051F3212B5541216E292594605041C8B293D2212B55415A271C118E605041F8427EF3212B554144969731806050411F09A11A222B55415C3D708A816050414BB0BF40222B5541FCF89FA080605041534A2846222B5541F090E38A7B6050415AB99D71222B55415DCC0E626B6050415CEBC6E11F2B55419A78E41D69605041C0930FD01D2B554185EB51D85C605041A4703DFA1B2B5541666666865A60504185EB51381D2B55410AD7A3705A6050419A9999591F2B5541AF224D5E6E605041DCFA5A8C222B5541F6285C4F6D6050418FC2F598292B55411F85EB51776050411F85EB312B2B55412CA4A48E7A60504145093BE8242B5541EA61538284605041CE7BCD98252B5541F6285CCF8F605041295C8FC2252B55410600A6A396605041A77F5A66252B55413E48297F996050417F83E733252B554194F874DC99605041C6B3E230242B554185EB5188996050417B14AEE7242B55414C810CAB9A60504155E051F3212B5541
+</a>
+
+<b>
+01060000000100000001030000000100000026000000333333D38A60504185EB5198152B5541B81E857B8460504185EB5178152B55410AD7A33080605041333333C3142B55418FC2F5887A605041D7A3709D122B55418FC2F5587160504185EB51080E2B5541B81E85BB70605041B81E855B0F2B554152B81EE56F605041F6285C3F112B55417B14AED765605041333333530D2B554185EB51A86460504152B81E85142B5541AE47E19A68605041CDCCCC4C152B554185EB511868605041CDCCCC6C172B554152B81E2565605041D7A370AD162B5541A4703DFA60605041EC51B83E162B55418FC2F5E85D605041A4703D2A162B5541666666565C6050410AD7A3E0182B5541AE47E14A6160504114AE4731192B554152B81E956760504152B81E051A2B554152B81E557D605041666666961F2B55410AD7A3607E605041D7A370BD1F2B554152B81E057D605041B81E855B222B55411F85EB719B605041D7A370ED1F2B554185EB51189B605041713D0AD7202B554152B81ED5A6605041AE47E1CA162B5541A4703DFAA6605041A4703D0A162B55411F85EB11A9605041D7A3703D0F2B5541CDCCCC2CAB6050415C8FC265082B5541C3F5282CAD60504185EB51E8012B5541B81E853BAA605041F6285C4F022B55410AD7A3E0A7605041D7A370BD042B554133333383A5605041EC51B8EE082B554133333323A3605041AE47E1EA0C2B5541C3F5280CA360504114AE47010D2B554152B81E459F605041295C8F92102B55417B14AED79960504152B81E05132B5541E17A14AE96605041C3F528FC132B55410000000094605041713D0A67142B554114AE4721906050410AD7A300152B5541333333D38A60504185EB5198152B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>422869 - 1606659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000004C810CAB9A60504155E051F3212B5541216E292594605041C8B293D2212B55415A271C118E605041F8427EF3212B554144969731806050411F09A11A222B55415C3D708A816050414BB0BF40222B5541FCF89FA080605041534A2846222B5541F090E38A7B6050415AB99D71222B55415DCC0E626B6050415CEBC6E11F2B55419A78E41D69605041C0930FD01D2B554185EB51D85C605041A4703DFA1B2B5541666666865A60504185EB51381D2B55410AD7A3705A6050419A9999591F2B5541AF224D5E6E605041DCFA5A8C222B5541F6285C4F6D6050418FC2F598292B55411F85EB51776050411F85EB312B2B55412CA4A48E7A60504145093BE8242B5541EA61538284605041CE7BCD98252B5541F6285CCF8F605041295C8FC2252B55410600A6A396605041A77F5A66252B55413E48297F996050417F83E733252B554194F874DC99605041C6B3E230242B554185EB5188996050417B14AEE7242B55414C810CAB9A60504155E051F3212B5541
+</a>
+
+<b>
+01060000000100000001030000000100000026000000333333D38A60504185EB5198152B5541B81E857B8460504185EB5178152B55410AD7A33080605041333333C3142B55418FC2F5887A605041D7A3709D122B55418FC2F5587160504185EB51080E2B5541B81E85BB70605041B81E855B0F2B554152B81EE56F605041F6285C3F112B55417B14AED765605041333333530D2B554185EB51A86460504152B81E85142B5541AE47E19A68605041CDCCCC4C152B554185EB511868605041CDCCCC6C172B554152B81E2565605041D7A370AD162B5541A4703DFA60605041EC51B83E162B55418FC2F5E85D605041A4703D2A162B5541666666565C6050410AD7A3E0182B5541AE47E14A6160504114AE4731192B554152B81E956760504152B81E051A2B554152B81E557D605041666666961F2B55410AD7A3607E605041D7A370BD1F2B554152B81E057D605041B81E855B222B55411F85EB719B605041D7A370ED1F2B554185EB51189B605041713D0AD7202B554152B81ED5A6605041AE47E1CA162B5541A4703DFAA6605041A4703D0A162B55411F85EB11A9605041D7A3703D0F2B5541CDCCCC2CAB6050415C8FC265082B5541C3F5282CAD60504185EB51E8012B5541B81E853BAA605041F6285C4F022B55410AD7A3E0A7605041D7A370BD042B554133333383A5605041EC51B8EE082B554133333323A3605041AE47E1EA0C2B5541C3F5280CA360504114AE47010D2B554152B81E459F605041295C8F92102B55417B14AED79960504152B81E05132B5541E17A14AE96605041C3F528FC132B55410000000094605041713D0A67142B554114AE4721906050410AD7A300152B5541333333D38A60504185EB5198152B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>422869 - 4269115
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000004C810CAB9A60504155E051F3212B5541216E292594605041C8B293D2212B55415A271C118E605041F8427EF3212B554144969731806050411F09A11A222B55415C3D708A816050414BB0BF40222B5541FCF89FA080605041534A2846222B5541F090E38A7B6050415AB99D71222B55415DCC0E626B6050415CEBC6E11F2B55419A78E41D69605041C0930FD01D2B554185EB51D85C605041A4703DFA1B2B5541666666865A60504185EB51381D2B55410AD7A3705A6050419A9999591F2B5541AF224D5E6E605041DCFA5A8C222B5541F6285C4F6D6050418FC2F598292B55411F85EB51776050411F85EB312B2B55412CA4A48E7A60504145093BE8242B5541EA61538284605041CE7BCD98252B5541F6285CCF8F605041295C8FC2252B55410600A6A396605041A77F5A66252B55413E48297F996050417F83E733252B554194F874DC99605041C6B3E230242B554185EB5188996050417B14AEE7242B55414C810CAB9A60504155E051F3212B5541
+</a>
+
+<b>
+01060000000100000001030000000100000026000000333333D38A60504185EB5198152B5541B81E857B8460504185EB5178152B55410AD7A33080605041333333C3142B55418FC2F5887A605041D7A3709D122B55418FC2F5587160504185EB51080E2B5541B81E85BB70605041B81E855B0F2B554152B81EE56F605041F6285C3F112B55417B14AED765605041333333530D2B554185EB51A86460504152B81E85142B5541AE47E19A68605041CDCCCC4C152B554185EB511868605041CDCCCC6C172B554152B81E2565605041D7A370AD162B5541A4703DFA60605041EC51B83E162B55418FC2F5E85D605041A4703D2A162B5541666666565C6050410AD7A3E0182B5541AE47E14A6160504114AE4731192B554152B81E956760504152B81E051A2B554152B81E557D605041666666961F2B55410AD7A3607E605041D7A370BD1F2B554152B81E057D605041B81E855B222B55411F85EB719B605041D7A370ED1F2B554185EB51189B605041713D0AD7202B554152B81ED5A6605041AE47E1CA162B5541A4703DFAA6605041A4703D0A162B55411F85EB11A9605041D7A3703D0F2B5541CDCCCC2CAB6050415C8FC265082B5541C3F5282CAD60504185EB51E8012B5541B81E853BAA605041F6285C4F022B55410AD7A3E0A7605041D7A370BD042B554133333383A5605041EC51B8EE082B554133333323A3605041AE47E1EA0C2B5541C3F5280CA360504114AE47010D2B554152B81E459F605041295C8F92102B55417B14AED79960504152B81E05132B5541E17A14AE96605041C3F528FC132B55410000000094605041713D0A67142B554114AE4721906050410AD7A300152B5541333333D38A60504185EB5198152B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>878156 - 1557734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666D64BA350413D0AD783DAF65441F6285C5F4DA350413D0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654417B14AE5749A350418FC2F598EDF65441666666D64BA350413D0AD783DAF65441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E6285C5F4DA350413B0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654418D0D6E4D49A350419ECC3997EDF6544163D0D54849A3504111BA81BBEDF654417B14AE5749A350418FC2F598EDF65441AE47E1BA5BA3504152B81EC5F0F6544185EB513860A350418FC2F518D0F65441D7A370AD5AA350415C8FC235CFF65441E6285C5F4DA350413B0AD773CDF65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>878156 - 3509314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666D64BA350413D0AD783DAF65441F6285C5F4DA350413D0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654417B14AE5749A350418FC2F598EDF65441666666D64BA350413D0AD783DAF65441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E6285C5F4DA350413B0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654418D0D6E4D49A350419ECC3997EDF6544163D0D54849A3504111BA81BBEDF654417B14AE5749A350418FC2F598EDF65441AE47E1BA5BA3504152B81EC5F0F6544185EB513860A350418FC2F518D0F65441D7A370AD5AA350415C8FC235CFF65441E6285C5F4DA350413B0AD773CDF65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905855 - 954901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000015000000295C8F021FDA5041B81E853B063455419A9999F923DA5041CDCCCC8C0A3455418FC2F53829DA50413D0AD703113455413D0AD7A32DDA5041713D0AA719345541AE47E13A34DA50410000008020345541AE47E1DA36DA50413D0AD72321345541EC51B8DE3CDA504152B81EA51E345541D7A370FD41DA5041CDCCCC4C1D3455413D0AD7A344DA5041A4703D6A1D345541666666A645DA5041713D0A971B345541A4703D9A4EDA504152B81E650B345541C3F528BC4FDA504114AE47D108345541666666864BDA504185EB5128073455415C8FC21546DA5041A4703DBA04345541A4703D7A41DA50418FC2F5D8013455415C8FC2B538DA5041E17A14BEFA335541B81E85CB2FDA50417B14AE77F2335541F6285C4F25DA504148E17A44FB335541E17A14EE22DA50411F85EB01FF33554114AE47A120DA50410000001005345541295C8F021FDA5041B81E853B0634554107000000A4703D0A2BDA5041333333B3F7335541666666B62BDA504185EB5118F733554148E17AD42EDA5041AE47E1DAF9335541B81E853B32DA504114AE47D1FC335541295C8F6231DA5041F6285CBFFD3355415C8FC2E52DDA5041333333E3FA335541A4703D0A2BDA5041333333B3F7335541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A19D558340DA50418973DF10013455415287564541DA50419FDD16AE01345541FD0DC64144DA50419E7FB795033455415846B26444DA504112BE8BAB03345541EF37691F45DA5041FF5241200434554150D6801746DA504143A1E1AA0434554104C5D5404BDA504141F63E0907345541065CA04D4BDA50413DB1F50E07345541CA6EFC6E4BDA5041BD77DC1D0734554161FB7DBD4FDA5041DF8424BA08345541F8611FC64FDA5041B1B7E1A8083455416C6CCCA051DA5041B7D3F68B04345541FE7304FA52DA504184C486D901345541C9E915B555DA504104A8F4CAFC335541C9E915B555DA504111A7CD9FFC335541934C1B1155DA504111A7CD9FFC335541DC9678794CDA5041EB9BED1FF93355419FD15C9E43DA5041EB9BED1FF9335541D452579640DA50417DD137D7F9335541EE6D8CEA39DA5041C71BA6B4F63355410A8A4A7937DA50417BD0AE9CF533554197C9AE8931DA504137895D4CF233554117C01CC12FDA504179F31B5CF23355415C8FC2B538DA5041E17A14BEFA335541A19D558340DA50418973DF1001345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454165 - 367124
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000004A0000008772598481AE5041791E613CE0D65441CE932C8181AE5041D68DF73DE0D65441B81E85CB80AE5041D7A3703DE1D65441EC51B86E7FAE5041C3F5289CE5D654413D0AD7737FAE50411F85EBE1EAD6544114AE470182AE504185EB5118ECD6544114AE47C17EAE5041C3F5281CEFD6544148E17AE47BAE5041B81E85CBF1D654418FC2F55886AE504152B81EC5FED65441295C8F2278AE5041713D0A3701D75441713D0A5774AE50410000005002D75441295C8F4279AE504152B81E1506D7544114AE47917FAE50417B14AE1705D75441C3F5287C89AE5041713D0A5706D754413333337393AE50411F85EB8105D75441EC51B8FE94AE504152B81E3505D754419A9999A990AE5041AE47E1BAF9D654413D0AD7F38EAE50410AD7A390FAD6544148E17AF48FAE504114AE4701F9D65441CDCCCCEC95AE504185EB51B8EFD6544152B81EF591AE5041B81E856BECD6544152B81E4592AE504185EB5178EBD654413D0AD7E396AE5041A4703DEAEDD6544148E17A349EAE50410AD7A3E0EED65441713D0A57A7AE5041666666A6EED65441295C8FE2AAAE5041EC51B8AEEED65441CDCCCC8CAEAE504152B81E25E0D654410AD7A390AAAE5041333333B3DFD654413D0AD743A8AE504185EB5138E1D654417B14AE67A6AE5041E17A140EE4D65441000000D0A4AE5041713D0AC7E0D65441666666A6A0AE5041713D0AC7E0D65441295C8F329DAE5041B81E850BE1D65441666666469AAE504148E17AE4DFD65441000000309AAE50419A999969DDD6544114AE478198AE5041E17A149EDCD65441295C8F029AAE5041AE47E1AADAD65441D7A3702DA1AE504114AE4721DDD65441666666B6A3AE5041B81E851BD6D65441713D0AA7A6AE50419A9999E9CDD654418FC2F5B891AE50419A999959C4D654419A9999F990AE50417B14AEF7C4D65441E17A141E90AE5041295C8FB2C5D65441CDCCCCDC82AE50410AD7A310C4D65441A4703D8A80AE50417B14AE97C1D654419A9999497FAE504100000010BED65441D7A3709D7AAE5041000000A0C0D654419A99997974AE504148E17AD4C2D6544114AE47916DAE5041C3F5282CC6D65441B236413F6AAE5041537932BEC9D65441F7930E226EAE50415B9F353DCAD654411F85EB716EAE5041C3F5281CCAD65441646129496EAE5041C50B0262CAD65441F7A2FC446CAE5041A20805EACDD65441F7A2FC446CAE5041D699516ECFD65441677DEDA86DAE50418BE0FDD7D2D65441BF2FD7FA73AE5041B7B9F200D6D65441F591E8697DAE504152407E44DBD65441E17A141E7EAE50410AD7A360DBD654418FC2F59880AE504133333343DCD65441B81E858B82AE5041CDCCCC2CDCD654411F85EBA182AE5041713D0A97DDD65441AE47E17A82AE5041B81E85DBDFD6544114AE47F184AE50415C8FC285E1D654417B14AEF78DAE5041333333F3E7D65441A4703DFA90AE5041A4703D2AEAD6544114AE470190AE5041A4703D4AECD65441B81E853B8EAE50411F85EBB1EAD654410AD7A3C08BAE50411F85EBC1EBD654417B14AEB789AE504185EB51A8E8D6544152B81EC587AE5041333333D3E5D65441A4703D4A85AE50419A9999C9E3D654411F85EBA182AE50410AD7A3C0E1D654418772598481AE5041791E613CE0D6544109000000A4703D9A8AAE50415C8FC275D1D6544152B81ED588AE50410AD7A3F0D3D65441B81E85BB85AE50411F85EB41D2D654416666664687AE5041333333B3CED65441D7A3704D89AE50417B14AEA7C9D65441F6285CBF8CAE504148E17A84C8D65441F6285C5F8CAE5041EC51B8FECAD65441F6285C4F8BAE5041AE47E1EACDD65441A4703D9A8AAE50415C8FC275D1D65441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000052B81E4592AE504185EB5178EBD654413D0AD7E396AE5041A4703DEAEDD654414BE7C3AB9BAE50414A65488BEED6544157AE79349EAE5041020EA3E0EED654419FD70A57A7AE5041A76066A6EED65441304B586DA7AE5041B4BF9AA6EED654413DFF6A3DA9AE5041CBE9DBAAEED654410643E54AA9AE5041718BFBAAEED65441FD499DDCA9AE5041CD8A51ACEED65441421F7FE7A9AE504110156BACEED6544105A98EE2AAAE50414850B8AEEED65441469D56BDACAE504175CC7953E7D654410EBEAEA4ADAE50417BCFD4BDE3D65441CF9BCC8CAEAE50419A7A1F25E0D65441066CA290AAAE50417E2334B3DFD654419A9999B9A4AE50410AD7A3F0DDD65441295CEC629AAE504151199A9BDBD654414F468F629AAE5041153C859BDBD6544171AE025699AE504112F79802DDD654419E250A6796AE50410129B9EEE0D654419208090794AE504155E7EA21E6D6544152B81E4592AE504185EB5178EBD65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955638 - 236416
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000004000000B70000000AD7A3A003AB504166666666D30B54413D0AD78304AB5041D7A3706DD20B5441EC51B86E04AB50410AD7A300CF0B5441B81E851B05AB50415C8FC225CC0B5441CDCCCCDC06AB50419A9999E9C80B544152B81ED506AB5041F6285CFFC60B5441E17A14BE04AB50411F85EBD1C50B5441666666A602AB5041713D0A57C40B54415C8FC23500AB5041713D0A07C10B54410AD7A360FDAA5041333333C3BE0B54411F85EB11FBAA5041EC51B87EBC0B5441B81E85ABF7AA504166666646BB0B544185EB5168F6AA504185EB51F8BA0B544114AE47A1F4AA50413D0AD783BB0B5441295C8F02F3AA50413D0AD7F3BB0B54419A999979EFAA5041713D0AE7BC0B5441295C8F32EDAA5041295C8F52BC0B54410AD7A380ECAA5041F6285CFFBB0B54410AD7A3F0EBAA5041000000C0BB0B5441E17A14FEEAAA5041CDCCCC3CBB0B54418FC2F528E9AA5041D7A3704DB70B5441D7A370DDE3AA504133333323BC0B544185EB51D8E0AA50419A9999A9BA0B5441CDCCCC7CDEAA5041CDCCCCACB80B544152B81EA5DCAA5041B81E853BB80B5441713D0A37DAAA5041CDCCCCACB80B54419A999939D8AA50413D0AD763BD0B54415C8FC2A5D5AA5041F6285CBFBF0B5441AE47E1BAD3AA5041B81E854BC10B5441F6285C5FD0AA504166666676C20B544100000080CEAA50413D0AD783C10B5441A4703D5ACEAA504152B81ED5BD0B5441713D0A17CFAA50419A9999A9BA0B54413D0AD713D1AA50418FC2F558B70B54410AD7A3F0D2AA5041F6285CDFB50B54419A999949D3AA5041B81E856BB50B544152B81EA5D2AA50419A999909B30B544185EB5118D2AA5041F6285CFFB00B54411F85EBF1D0AA50418FC2F5B8AC0B544152B81EA5CCAA504166666636AC0B54419A9999C9BAAA5041A4703D5AB10B5441D7A3704DB5AA5041EC51B8EEB20B5441CDCCCC9CB3AA5041C3F5282CB30B5441D7A370BDB2AA50413D0AD703BB0B544148E17A04B3AA5041666666D6BB0B54415C8FC255C0AA504100000080BC0B5441295C8F82C1AA5041CDCCCC6CC30B5441AE47E18AC2AA50417B14AE07C90B5441A4703DFAC5AA5041713D0AD7CC0B5441A4703DBAC7AA50411F85EBF1CF0B54415C8FC235CBAA50415C8FC2A5D40B54417B14AE17CEAA50410AD7A330DA0B54415C8FC2A5CDAA504100000020DA0B54415C8FC215C8AA504100000050D90B5441AE47E14AC3AA5041713D0AD7D80B5441EC51B81EBEAA504148E17AC4D80B5441C3F528CCB7AA5041713D0AE7D80B54418FC2F528B6AA50417B14AE57D80B54410AD7A380B4AA5041713D0AC7D70B5441B81E856BB1AA504100000000D70B5441666666A6B1AA5041F6285C3FDC0B544185EB5108B3AA5041C3F5286CDF0B5441A4703D1AB3AA50411F85EB71E20B5441F6285CCFB3AA504185EB5198E70B5441713D0A37B5AA504100000000EE0B5441713D0A27B6AA50419A9999C9F10B54413D0AD7D3B7AA5041F6285CFFF60B544166666626BBAA5041A4703DFAFE0B54417B14AEE7BCAA5041C3F5285C020C54417B14AEF7C0AA5041F6285CAF090C5441AE47E14AC3AA50411F85EB910D0C5441F6285CCFC5AA504152B81E75110C544166666606C9AA5041B81E859B150C5441B81E853BC9AA5041000000E0150C544152B81EA5CBAA50417B14AEC7180C5441AE47E14ACCAA504185EB5108180C544152B81E25CCAA50415C8FC285150C5441AE47E1EACDAA5041713D0A27150C5441C3F528CCD0AA50413D0AD783170C54410AD7A3A0D8AA504185EB51181C0C5441E17A147ED6AA5041713D0A771F0C54410AD7A350D2AA5041D7A3708D1F0C54419A999969D5AA5041713D0A47220C54411F85EBE1DAAA504148E17A84260C5441B81E858BE0AA50418FC2F5782A0C5441F6285C9FE6AA5041F6285C8F2E0C5441713D0A17EEAA5041000000D0320C54413D0AD7C3F1AA504100000020350C54418FC2F538F2AA504152B81E25350C54419A999939F4AA50418FC2F548340C5441333333C3F2AA50415C8FC215310C54417B14AE47F2AA50413D0AD7832F0C544185EB51D8F9AA50418FC2F5F82C0C54415C8FC225FFAA50419A9999292B0C5441713D0A0700AB5041F6285CDF2A0C544148E17A9401AB504152B81E552F0C5441F6285C4F06AB5041F6285CEF2D0C54410000000009AB504148E17A442D0C54417B14AE1710AB5041EC51B8AE2B0C54410AD7A3B010AB5041713D0A772B0C5441CDCCCC3C11AB50417B14AE272B0C5441A4703DEA11AB50417B14AE972A0C5441000000B012AB50419A999949290C54416666665613AB5041295C8F62270C54417B14AEC713AB5041A4703DAA250C54417B14AE5714AB5041000000F0220C54416666668614AB504133333353220C54419A99994915AB504185EB51A8200C5441295C8FE216AB5041EC51B88E1E0C54410000005017AB5041295C8F621D0C5441713D0A5717AB50411F85EBC11C0C5441666666A616AB5041AE47E1FA190C5441713D0A170EAB5041CDCCCC5C1F0C5441EC51B8DE0BAB50418FC2F578200C5441EC51B8CE08AB5041B81E858B210C54411F85EBD105AB50410AD7A380220C5441E17A14DE03AB5041A4703D8A220C5441A4703DEA01AB50419A999959220C5441B81E85BBFFAA504185EB5158230C54417B14AE77FEAA5041CDCCCC9C230C5441AE47E1AAFCAA5041EC51B84E230C5441C3F528ACFBAA5041C3F528EC220C5441E17A142EFAAA5041713D0A27230C54410AD7A3E0F8AA5041AE47E16A240C5441A4703DBAF7AA504185EB51B8250C5441E17A14CEF6AA50419A999929260C54418FC2F5A8F5AA504100000040270C544166666696F4AA504152B81E65290C5441295C8FD2F3AA50419A9999092C0C544114AE47F1F2AA5041B81E859B2D0C544152B81E55F1AA50413D0AD7A32E0C5441D7A370ADF1AA5041E17A14DE2F0C544185EB5108F0AA50418FC2F5C8300C54413D0AD743EFAA5041D7A3702D2F0C5441713D0A07F1AA504185EB51382E0C5441E17A145EF1AA5041D7A3706D2D0C5441AE47E16AEFAA5041E17A14CE270C54410AD7A3D0EDAA50410AD7A330230C544148E17A04ECAA50417B14AEE71D0C5441AE47E1EAE7AA5041C3F5285C0B0C5441CDCCCC8CD9AA5041C3F5289C0F0C5441713D0AF7D7AA5041C3F528EC0A0C5441333333E3D3AA5041CDCCCC4C0C0C5441295C8F62D2AA50419A9999F9070C544166666686DDAA504114AE4791030C54419A999989DCAA5041666666B6FD0B5441CDCCCCCCD4AA5041AE47E15AFD0B544114AE4771CCAA504148E17AD4FE0B544100000070C8AA50413D0AD7F3F30B54411F85EB51C2AA504148E17AC4F10B5441A4703D7ABEAA50415C8FC2C5EF0B544148E17AE4BBAA5041713D0AF7EC0B544148E17A54BEAA5041B81E850BEB0B5441E17A147EC4AA5041C3F5283CE90B5441B81E854BC8AA504185EB51B8E70B544148E17A44CBAA5041AE47E12AE50B5441A4703D9ACDAA5041713D0AF7E10B54411F85EB61D0AA50418FC2F508DE0B5441E17A14DED5AA5041D7A3705DDD0B5441EC51B84EDDAA504152B81E85E90B5441CDCCCCACE1AA504152B81E75E70B5441A4703D9AE2AA50410AD7A3E0E60B5441CDCCCC1CE7AA50411F85EB51E40B54418FC2F528E9AA50418FC2F588E30B5441F6285C3FE9AA504166666666E00B54413D0AD7A3E9AA50410AD7A380DF0B5441CDCCCCFCEAAA5041EC51B8AEDE0B5441713D0AB7EFAA5041713D0A67DB0B544100000000EFAA504166666636DA0B544114AE4701F1AA5041295C8F62D90B5441E17A14FEF2AA50411F85EB21D90B54415C8FC2B5F5AA5041D7A3706DD90B544100000010F8AA5041666666C6D80B5441D7A3703DF9AA50418FC2F528D60B54411F85EB91FAAA5041333333E3D30B5441D7A370CDF9AA5041A4703D8AD00B5441EC51B8BEFBAA504148E17A14D00B544185EB5188FCAA504185EB5168D30B5441666666F6FDAA5041B81E856BD30B54418FC2F51800AB5041295C8FD2D30B54419A9999A901AB504185EB51F8D30B5441713D0A8702AB504185EB51E8D30B54410AD7A3A003AB504166666666D30B54410500000033333303C1AA50415C8FC2A5070C544185EB5168C0AA504185EB51E8050C544114AE4711C2AA50415C8FC275050C544114AE4791C2AA50419A999939070C544133333303C1AA50415C8FC2A5070C544105000000000000E0E3AA5041C3F5286CCA0B54411F85EB81E2AA504100000060CA0B544185EB5188E2AA5041E17A142EC90B5441EC51B8FEE3AA504100000040C90B5441000000E0E3AA5041C3F5286CCA0B544109000000E17A149ECAAA50415C8FC2D5B70B544114AE47E1CAAA50413D0AD743B60B5441713D0A67CBAA5041666666A6B30B54410AD7A3C0CCAA504148E17A64B40B5441C3F5285CCCAA504148E17AB4B80B544114AE4771CAAA50413D0AD723B90B5441713D0A87C9AA504185EB5188B90B5441CDCCCC0CC9AA50419A999939B80B5441E17A149ECAAA50415C8FC2D5B70B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000066666686DDAA504114AE4791030C544184999989DCAA50417C6666B6FD0B54414DCACD18D5AA50411943645EFD0B5441D1CCCCCCD4AA5041AE47E15AFD0B54411FAE4771CCAA50415DE17AD4FE0B54417B1682FEC5AA50419AA82D14000C54411A8FED59C6AA504122F4F95E000C5441C1F3BF3DC9AA50416B26E3D0010C5441E73B15CACAAA5041DE74499A040C5441D100E2B7CBAA50415605F4B2070C5441AF164ED2CBAA5041CE0B05F0080C5441F553D694CBAA5041089BD3600A0C544120576E4CCDAA5041231F6FC8090C54418C4FBE50D1AA50414CD3F363080C5441552ADA65D2AA504139A51303080C5441295C8F62D2AA50419A9999F9070C544166666686DDAA504114AE4791030C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888917 - 354166
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000033000000F6285C6FECB55041000000E02C2854418FC2F598EDB5504185EB51282D2854413D0AD773EFB55041CDCCCC4C282854419A999929F0B550417B14AE572528544114AE47A1EFB550410AD7A3002228544114AE4751ECB5504114AE47C11A28544152B81E85E6B55041A4703D8A132854410AD7A3A0E4B55041AE47E14A112854415C8FC2C5DEB550419A9999A909285441F6285C5FDCB55041000000400628544114AE47E1DAB5504148E17A14042854418FC2F5C8D8B55041CDCCCC5CFD275441713D0AC7CCB550416666662600285441A4703D9ACAB55041A4703DDA08285441C3F5287CCDB55041EC51B8CE12285441D7A3708DCFB550418FC2F548212854419A999909B3B55041666666D61D28544114AE4761ADB5504166666606252854415C8FC275A4B55041333333E32628544185EB51E8A1B55041F6285C3F24285441295C8F62A2B550419A999909222854411F85EB219DB5504185EB51C820285441CDCCCCAC9BB55041E17A14AE1D285441713D0AA79DB550417B14AE671428544152B81E95A1B550418FC2F5C812285441713D0A579CB5504133333373062854415C8FC20598B55041AE47E19A072854413D0AD70395B550419A9999390928544114AE47A194B55041AE47E18A0D285441D7A3706D91B55041295C8F620C2854410000000082B550419A9999F9F42754419A9999897FB55041C3F5280CF52754419A9999D977B5504185EB5138F52754417B14AE3774B55041E17A144EF52754413333339374B55041D7A3709D292854413D0AD7A39DB55041D7A3704D32285441EC51B80EB0B550410AD7A30035285441000000D0B3B550413D0AD7B335285441C3F5289CC0B55041E17A149E38285441A4703D6AD0B550413D0AD7F33B285441D7A370EDD5B55041EC51B8EE3C2854411F85EB61D6B55041000000203A285441CDCCCC5CDBB5504114AE47F13A285441713D0A77DBB55041D7A370FD3D2854418FC2F5B8E2B5504185EB51683F285441AE47E1CAE4B55041B81E85CB3F28544166666656E7B550415C8FC2654028544185EB51E8E7B550415C8FC2853E28544114AE4751EAB55041666666063F28544185EB5178EAB5504185EB51E831285441F6285C6FECB55041000000E02C2854410A00000048E17A24B9B5504114AE475127285441713D0A37B9B55041333333732528544148E17A94BAB55041D7A3704D2428544100000060BCB550416666669624285441713D0A07BEB55041CDCCCCBC25285441F6285C3FBFB5504152B81EF5262854415C8FC2F5BEB550417B14AE77282854413D0AD773BDB550411F85EB41292854410AD7A3F0BAB55041EC51B8AE2828544148E17A24B9B5504114AE475127285441
+</a>
+
+<b>
+0106000000010000000103000000010000002C00000096B4A0769EB55041DC1593B1182854419E8DA8829CB55041AF3B250D162854411C8111A09CB5504135089636142854414A5B7F449FB5504145D406601228544119505ADAA1B55041FAA6DC07112854410361612BA2B55041406629C3102854419AF5F97BA2B550411A13C7800F2854417835EDE8A1B55041FE2CF5450F285441DD5BB290A1B5504121ECCE8C0D285441D043318CA1B55041A5C235250D285441D5684973A1B55041F31161E80A285441896D3D56A1B550414E8A412F08285441239CB92FA1B5504150E2D4CF07285441FE015E12A0B550411B834A470528544174F493E39DB550410890E12905285441625F3CB29DB55041C8AD8F1C05285441EB125DF29CB55041B65A140F05285441155522249CB55041291418B10428544156E6966899B5504129368DAB03285441B801045F97B5504116499E7D042854419A4F8C7396B5504109B4E6EB052854418386DDED95B550411C54CB4B06285441FD4AE9E493B550413E51210908285441F4AE747F94B55041433376240928544132FE5E9594B550418BC4A34C092854419C5A6ECE94B5504107028B900B28544140B1A1F992B550410506FD510D285441E74B49EB92B55041B99884420D28544165DBB1DC92B5504111E19F4F0D285441BEA0C52291B550417441606A0B2854413697D9F090B550419B715C200B285441E13BB91D8DB5504103C47000072854412E6ECA4A80B55041E4DE7806F52754412190964280B55041B0B1B606F5275441A18F682B80B5504197666507F52754419311C2AC7FB550413265B76CF527544191A13EE689B55041BB1C5FE6032854413D6F15A88CB5504125847D93072854419FFD2B4992B5504132C609E50D28544140B1A1F992B550410EF9656F0D285441C3E5631C97B55041E0AD41B8122854417011CE8B98B550418B8AFABF152854416200F8799BB550414B3D8BA51A28544196B4A0769EB55041DC1593B118285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874571 - 2348678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000004F1ED8EBF35E51418329A6D128AF544184F23C40F75E51413E502B8627AF544104B37785FC5E51416D31C26C25AF544199078065085F514192EBC17820AF54416CEADDA50C5F514175D1838D1EAF5441A4456A8F155F5141C1F78D311AAF54415869F6AB1A5F514179FBDFCD16AF544129D6632A135F5141E1B1160D13AF5441F7DECC59105F5141F8A170F40FAF5441F9104F010E5F5141A5DB939C10AF5441D643E2050D5F5141CC47430D0EAF54418B77CD310C5F5141B6FCFDCC0AAF5441B02E2228015F5141987B58DE0EAF5441DF6727CCF25E51410A8B44CA12AF5441DF30CFD2F05E51410EB6BB5F13AF544129447D21EE5E51411FD11D3A14AF5441F7401892EB5E5141E07F946515AF54419FA8EDE6ED5E51410D6AC8311CAF54419045DB8CEF5E51414F75323A20AF5441A07E9236F15E514158BF4CC023AF5441E8CBA5FBF25E5141F58C460927AF54414F1ED8EBF35E51418329A6D128AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003D0AD743EF5E514148E17AD413AF5441F6285C9FEC5E514114AE47C114AF544100000070EB5E51411F85EB2115AF54415C8FC255EE5E5141F6285C6F1DAF5441E17A147EF05E514148E17A6422AF5441AE47E1AAF55E5141B81E856B20AF544114AE4781FA5E5141D7A370AD1EAF5441713D0A17005F514114AE47811CAF5441333333C3075F51410AD7A36019AF54419A9999C9095F514148E17A8418AF54410AD7A3D00C5F51413D0AD7F316AF5441F6285C4F0E5F5141F6285C1F16AF5441AE47E1EA0F5F51413D0AD71315AF54417B14AE07115F5141C3F5285C14AF5441B81E85AB125F51413D0AD72313AF54415C8FC235145F5141AE47E1EA11AF5441000000B0125F5141F6285C9F10AF54411F85EB81115F5141B81E858B0FAF5441D7A3702D0F5F5141E17A14EE0CAF544185EB51F80B5F5141666666D609AF5441B81E85BB095F5141333333130BAF54419A9999D9065F514114AE47310CAF544148E17A14035F5141AE47E19A0DAF5441713D0AE7FF5E5141A4703DAA0EAF5441713D0AD7FC5E5141A4703DAA0FAF5441713D0AC7F75E514148E17A1411AF5441EC51B8BEF45E51416666663612AF5441AE47E13AF15E514114AE474113AF54413D0AD743EF5E514148E17AD413AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874571 - 5167512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000004F1ED8EBF35E51418329A6D128AF544184F23C40F75E51413E502B8627AF544104B37785FC5E51416D31C26C25AF544199078065085F514192EBC17820AF54416CEADDA50C5F514175D1838D1EAF5441A4456A8F155F5141C1F78D311AAF54415869F6AB1A5F514179FBDFCD16AF544129D6632A135F5141E1B1160D13AF5441F7DECC59105F5141F8A170F40FAF5441F9104F010E5F5141A5DB939C10AF5441D643E2050D5F5141CC47430D0EAF54418B77CD310C5F5141B6FCFDCC0AAF5441B02E2228015F5141987B58DE0EAF5441DF6727CCF25E51410A8B44CA12AF5441DF30CFD2F05E51410EB6BB5F13AF544129447D21EE5E51411FD11D3A14AF5441F7401892EB5E5141E07F946515AF54419FA8EDE6ED5E51410D6AC8311CAF54419045DB8CEF5E51414F75323A20AF5441A07E9236F15E514158BF4CC023AF5441E8CBA5FBF25E5141F58C460927AF54414F1ED8EBF35E51418329A6D128AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003D0AD743EF5E514148E17AD413AF5441F6285C9FEC5E514114AE47C114AF544100000070EB5E51411F85EB2115AF54415C8FC255EE5E5141F6285C6F1DAF5441E17A147EF05E514148E17A6422AF5441AE47E1AAF55E5141B81E856B20AF544114AE4781FA5E5141D7A370AD1EAF5441713D0A17005F514114AE47811CAF5441333333C3075F51410AD7A36019AF54419A9999C9095F514148E17A8418AF54410AD7A3D00C5F51413D0AD7F316AF5441F6285C4F0E5F5141F6285C1F16AF5441AE47E1EA0F5F51413D0AD71315AF54417B14AE07115F5141C3F5285C14AF5441B81E85AB125F51413D0AD72313AF54415C8FC235145F5141AE47E1EA11AF5441000000B0125F5141F6285C9F10AF54411F85EB81115F5141B81E858B0FAF5441D7A3702D0F5F5141E17A14EE0CAF544185EB51F80B5F5141666666D609AF5441B81E85BB095F5141333333130BAF54419A9999D9065F514114AE47310CAF544148E17A14035F5141AE47E19A0DAF5441713D0AE7FF5E5141A4703DAA0EAF5441713D0AD7FC5E5141A4703DAA0FAF5441713D0AC7F75E514148E17A1411AF5441EC51B8BEF45E51416666663612AF5441AE47E13AF15E514114AE474113AF54413D0AD743EF5E514148E17AD413AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889155 - 1000276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000033000000EC51B88EB06B51419A9999093334544152B81E15B16B5141E17A149E34345441D7A3704DB26B5141CDCCCCDC3634544152B81EB5B46B514152B81EA53A34544185EB51B8B56B51418FC2F5B837345441CDCCCC1CB86B5141E17A141E353454418FC2F5D8BC6B5141000000B0303454413D0AD7A3C06B5141D7A370BD2D3454419A999909C56B5141F6285CBF2A34544133333323D66B5141F6285CDF20345441AE47E1EAE16B514166666666193454419A999939E86B5141EC51B8DE153454413D0AD7F3F36B51413333337312345441F6285CCFF56B5141F6285C9F11345441B81E852BF76B5141713D0A37103454413D0AD713F86B5141000000400E34544166666646F86B5141F6285C0F0B34544114AE4791F76B51411F85EBC107345441713D0A77F56B51416666665601345441A4703D6AF36B5141CDCCCC2CFD335441A4703DAAEE6B51417B14AEE7F6335441666666E6E96B514166666666F433544152B81E05E86B514148E17A44F4335441D7A370FDE76B514148E17AA4F43354418FC2F568E66B51413D0AD783F433544133333373E66B51415C8FC225F4335441D7A3701DE26B5141F6285C5FF33354410AD7A3F0DB6B5141EC51B8FEF1335441B81E858BD76B5141CDCCCCBCF0335441D7A3700DCC6B5141B81E85BBED3354413D0AD713C66B51419A999959ED33544148E17A04C26B5141713D0A17ED335441B81E859BC06B514185EB51B8ED33544114AE4751BE6B5141E17A14BEEE335441B81E855BB86B5141713D0A27F6335441295C8F22AB6B5141A4703D1A043454419A999939AA6B5141E17A146E063454418FC2F598AA6B51415C8FC235093454417B14AE17AB6B51415C8FC2E50C3454419A9999A9AB6B514152B81E950E345441333333D3AB6B5141AE47E10A103454410AD7A3F0AC6B51415C8FC2551534544100000090AD6B51415C8FC2051634544152B81EE5AD6B5141295C8FF21D345441A4703DBAAE6B5141333333E31F34544148E17A64AF6B5141713D0AC71F345441F6285C4FAF6B5141EC51B8CE2A345441B81E856BAF6B514185EB51782C345441EC51B8CEAF6B5141713D0A772E3454410AD7A340B06B5141713D0AA731345441EC51B88EB06B51419A99990933345441190000008FC2F5E8DD6B51417B14AE07F7335441000000D0E36B514148E17AC4F5335441713D0A07E96B51418FC2F5A8F73354413D0AD7B3EE6B5141A4703D5AFA33544114AE47F1F26B51411F85EBA101345441F6285C7FED6B514185EB510802345441000000E0E56B5141333333F302345441EC51B8CEE16B5141333333A3033454410AD7A340DE6B51410AD7A37004345441E17A146ECC6B5141E17A14AE083454410AD7A390C96B51417B14AEA70934544148E17A04C86B5141A4703D3A0A345441C3F5284CC66B51413D0AD7330B345441B81E85FBBB6B51411F85EBE1123454419A999999B86B5141E17A141E1534544152B81E35B16B5141295C8F12193454411F85EBF1AF6B51415C8FC26513345441CDCCCC1CAE6B5141D7A370DD0C345441EC51B83EB56B5141C3F528CC07345441F6285CDFBD6B5141C3F5287C00345441666666F6BE6B5141EC51B8AEFF33544152B81E15C16B51415C8FC2B5FE33544148E17A14CA6B5141AE47E1BAFB33544114AE4781D26B5141CDCCCC8CF93354418FC2F5E8DD6B51417B14AE07F7335441
+</a>
+
+<b>
+0106000000010000000103000000010000005F00000019D4BA90B66B514114A1120BF8335441C901082EB86B5141BF100857F6335441E8FBF013B96B5141A444C041F5335441B2D7D8A8BA6B5141311F564AF333544139D7EBC0BB6B514152931FEEF133544198E62C78BD6B51412EF100CCEF33544114AE4751BE6B5141E17A14BEEE335441604B91F0BE6B51411002F576EE3354412CBAB858BE6B51412FEB1ED0EC33544138C55ADFBC6B5141C90E2E39EC33544101B9FB5EBA6B51412D5FCE6AEC335441137F8FFAB46B514101C98626ED3354419CEC803EAE6B5141ED12FA10EE3354418DC86B40A86B514157439576EE335441AE47E19AA66B5141295C8F72EE335441A4703DAA9F6B51410AD7A3C0EF335441CDCCCC5C9B6B5141EC51B88EF0335441F6285C8F946B5141000000C0F133544100000050916B5141713D0A47F2335441295C8FB28F6B51419A9999B9F2335441EC51B8BE8F6B5141AE47E14AF3335441D7A3708D936B5141CDCCCC2CF3335441295C8F42956B514114AE4701F7335441D7A3705D976B514152B81EE5F53354419A999909986B51413D0AD733F7335441CDCCCCBC956B51417B14AE97F8335441D7A3709D936B514114AE4711F9335441295C8F62926B51410AD7A360F93354418FC2F548926B51411F85EBB1FA335441000000A0946B5141D7A3709DFA335441000000A0946B514100000040FB33544133333353926B514114AE4721FB33544166666616926B5141AE47E10AFC33544100000000936B51417B14AEB7FC33544185EB5128936B5141713D0A97FD335441A4703D7A8E6B51416666667603345441295C8F928C6B51418FC2F508023454410AD7A3908D6B5141713D0A870034544114AE4751896B51418FC2F518FF33544166666676866B514152B81E95FE335441D7A3704D866B5141F6285C2FFE3354415C8FC255876B5141295C8F52FC3354417B14AE67886B5141CDCCCCECFB3354410AD7A390886B5141B81E852BFB3354419A999939866B51417B14AE17FB3354419A9999C9836B51419A999929F73354419A999909836B5141AE47E1AAF733544166666686816B5141F6285CAFF8335441C3F5281C7F6B5141E17A141EFB335441CDCCCC2C7B6B5141B81E85EBFF33544133333333766B514114AE47B105345441E17A147E736B5141CDCCCC5C0834544114AE47016C6B51411F85EB810F3454417B14AE07676B5141EC51B80E153454417B14AEC7646B51419A99993918345441000000906B6B5141B81E85FB1B345441D7A3700D6F6B5141AE47E14A1D345441EC51B8DE766B5141CDCCCC5C1E345441F6285C4F786B51410AD7A3602334544100000050796B5141295C8F7223345441C3F528EC7A6B51410AD7A370213454419A9999F97C6B51410AD7A30023345441333333C37B6B5141CDCCCC9C243454413D0AD7B37C6B51419A9999A9253454415C8FC2C57D6B514148E17A542734544185EB51E8806B514152B81E8528345441AE47E11A816B5141A4703DCA29345441666666F67E6B5141713D0A072A345441E17A14BE7C6B5141C3F528CC283454417B14AE277B6B51417B14AEA72634544185EB5138796B5141666666B626345441A4703D8A776B5141C3F5284C27345441713D0AF7746B514133333313293454417B14AE57746B51417B14AEA72A3454410AD7A380746B514114AE47E12B3454410AD7A3C0786B51415C8FC2152F3454419A9999B97E6B5141333333233034544185EB5178806B514148E17A743034544152B81EA5836B514152B81E852D345441713D0A17856B5141C3F528FC2C345441A4703D6A866B5141000000F02A34544148E17A84886B51410AD7A3402A345441AE47E11A8A6B5141D7A3702D26345441F6285CDF8F6B514152B81E651E3454419A999969916B5141295C8F321A3454410AD7A3C0986B5141E17A147E13345441EC51B8CE9B6B51413333334312345441EC51B8FE9E6B5141C3F5280C12345441C3F528CCA16B5141C3F5287C10345441F6285C1FA96B514152B81EF50D3454417B14AE17AB6B51415C8FC2E50C3454418FC2F598AA6B51415C8FC235093454419A999939AA6B5141E17A146E06345441295C8F22AB6B5141A4703D1A0434544119D4BA90B66B514114A1120BF8335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889155 - 3809084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000033000000EC51B88EB06B51419A9999093334544152B81E15B16B5141E17A149E34345441D7A3704DB26B5141CDCCCCDC3634544152B81EB5B46B514152B81EA53A34544185EB51B8B56B51418FC2F5B837345441CDCCCC1CB86B5141E17A141E353454418FC2F5D8BC6B5141000000B0303454413D0AD7A3C06B5141D7A370BD2D3454419A999909C56B5141F6285CBF2A34544133333323D66B5141F6285CDF20345441AE47E1EAE16B514166666666193454419A999939E86B5141EC51B8DE153454413D0AD7F3F36B51413333337312345441F6285CCFF56B5141F6285C9F11345441B81E852BF76B5141713D0A37103454413D0AD713F86B5141000000400E34544166666646F86B5141F6285C0F0B34544114AE4791F76B51411F85EBC107345441713D0A77F56B51416666665601345441A4703D6AF36B5141CDCCCC2CFD335441A4703DAAEE6B51417B14AEE7F6335441666666E6E96B514166666666F433544152B81E05E86B514148E17A44F4335441D7A370FDE76B514148E17AA4F43354418FC2F568E66B51413D0AD783F433544133333373E66B51415C8FC225F4335441D7A3701DE26B5141F6285C5FF33354410AD7A3F0DB6B5141EC51B8FEF1335441B81E858BD76B5141CDCCCCBCF0335441D7A3700DCC6B5141B81E85BBED3354413D0AD713C66B51419A999959ED33544148E17A04C26B5141713D0A17ED335441B81E859BC06B514185EB51B8ED33544114AE4751BE6B5141E17A14BEEE335441B81E855BB86B5141713D0A27F6335441295C8F22AB6B5141A4703D1A043454419A999939AA6B5141E17A146E063454418FC2F598AA6B51415C8FC235093454417B14AE17AB6B51415C8FC2E50C3454419A9999A9AB6B514152B81E950E345441333333D3AB6B5141AE47E10A103454410AD7A3F0AC6B51415C8FC2551534544100000090AD6B51415C8FC2051634544152B81EE5AD6B5141295C8FF21D345441A4703DBAAE6B5141333333E31F34544148E17A64AF6B5141713D0AC71F345441F6285C4FAF6B5141EC51B8CE2A345441B81E856BAF6B514185EB51782C345441EC51B8CEAF6B5141713D0A772E3454410AD7A340B06B5141713D0AA731345441EC51B88EB06B51419A99990933345441190000008FC2F5E8DD6B51417B14AE07F7335441000000D0E36B514148E17AC4F5335441713D0A07E96B51418FC2F5A8F73354413D0AD7B3EE6B5141A4703D5AFA33544114AE47F1F26B51411F85EBA101345441F6285C7FED6B514185EB510802345441000000E0E56B5141333333F302345441EC51B8CEE16B5141333333A3033454410AD7A340DE6B51410AD7A37004345441E17A146ECC6B5141E17A14AE083454410AD7A390C96B51417B14AEA70934544148E17A04C86B5141A4703D3A0A345441C3F5284CC66B51413D0AD7330B345441B81E85FBBB6B51411F85EBE1123454419A999999B86B5141E17A141E1534544152B81E35B16B5141295C8F12193454411F85EBF1AF6B51415C8FC26513345441CDCCCC1CAE6B5141D7A370DD0C345441EC51B83EB56B5141C3F528CC07345441F6285CDFBD6B5141C3F5287C00345441666666F6BE6B5141EC51B8AEFF33544152B81E15C16B51415C8FC2B5FE33544148E17A14CA6B5141AE47E1BAFB33544114AE4781D26B5141CDCCCC8CF93354418FC2F5E8DD6B51417B14AE07F7335441
+</a>
+
+<b>
+0106000000010000000103000000010000005F00000019D4BA90B66B514114A1120BF8335441C901082EB86B5141BF100857F6335441E8FBF013B96B5141A444C041F5335441B2D7D8A8BA6B5141311F564AF333544139D7EBC0BB6B514152931FEEF133544198E62C78BD6B51412EF100CCEF33544114AE4751BE6B5141E17A14BEEE335441604B91F0BE6B51411002F576EE3354412CBAB858BE6B51412FEB1ED0EC33544138C55ADFBC6B5141C90E2E39EC33544101B9FB5EBA6B51412D5FCE6AEC335441137F8FFAB46B514101C98626ED3354419CEC803EAE6B5141ED12FA10EE3354418DC86B40A86B514157439576EE335441AE47E19AA66B5141295C8F72EE335441A4703DAA9F6B51410AD7A3C0EF335441CDCCCC5C9B6B5141EC51B88EF0335441F6285C8F946B5141000000C0F133544100000050916B5141713D0A47F2335441295C8FB28F6B51419A9999B9F2335441EC51B8BE8F6B5141AE47E14AF3335441D7A3708D936B5141CDCCCC2CF3335441295C8F42956B514114AE4701F7335441D7A3705D976B514152B81EE5F53354419A999909986B51413D0AD733F7335441CDCCCCBC956B51417B14AE97F8335441D7A3709D936B514114AE4711F9335441295C8F62926B51410AD7A360F93354418FC2F548926B51411F85EBB1FA335441000000A0946B5141D7A3709DFA335441000000A0946B514100000040FB33544133333353926B514114AE4721FB33544166666616926B5141AE47E10AFC33544100000000936B51417B14AEB7FC33544185EB5128936B5141713D0A97FD335441A4703D7A8E6B51416666667603345441295C8F928C6B51418FC2F508023454410AD7A3908D6B5141713D0A870034544114AE4751896B51418FC2F518FF33544166666676866B514152B81E95FE335441D7A3704D866B5141F6285C2FFE3354415C8FC255876B5141295C8F52FC3354417B14AE67886B5141CDCCCCECFB3354410AD7A390886B5141B81E852BFB3354419A999939866B51417B14AE17FB3354419A9999C9836B51419A999929F73354419A999909836B5141AE47E1AAF733544166666686816B5141F6285CAFF8335441C3F5281C7F6B5141E17A141EFB335441CDCCCC2C7B6B5141B81E85EBFF33544133333333766B514114AE47B105345441E17A147E736B5141CDCCCC5C0834544114AE47016C6B51411F85EB810F3454417B14AE07676B5141EC51B80E153454417B14AEC7646B51419A99993918345441000000906B6B5141B81E85FB1B345441D7A3700D6F6B5141AE47E14A1D345441EC51B8DE766B5141CDCCCC5C1E345441F6285C4F786B51410AD7A3602334544100000050796B5141295C8F7223345441C3F528EC7A6B51410AD7A370213454419A9999F97C6B51410AD7A30023345441333333C37B6B5141CDCCCC9C243454413D0AD7B37C6B51419A9999A9253454415C8FC2C57D6B514148E17A542734544185EB51E8806B514152B81E8528345441AE47E11A816B5141A4703DCA29345441666666F67E6B5141713D0A072A345441E17A14BE7C6B5141C3F528CC283454417B14AE277B6B51417B14AEA72634544185EB5138796B5141666666B626345441A4703D8A776B5141C3F5284C27345441713D0AF7746B514133333313293454417B14AE57746B51417B14AEA72A3454410AD7A380746B514114AE47E12B3454410AD7A3C0786B51415C8FC2152F3454419A9999B97E6B5141333333233034544185EB5178806B514148E17A743034544152B81EA5836B514152B81E852D345441713D0A17856B5141C3F528FC2C345441A4703D6A866B5141000000F02A34544148E17A84886B51410AD7A3402A345441AE47E11A8A6B5141D7A3702D26345441F6285CDF8F6B514152B81E651E3454419A999969916B5141295C8F321A3454410AD7A3C0986B5141E17A147E13345441EC51B8CE9B6B51413333334312345441EC51B8FE9E6B5141C3F5280C12345441C3F528CCA16B5141C3F5287C10345441F6285C1FA96B514152B81EF50D3454417B14AE17AB6B51415C8FC2E50C3454418FC2F598AA6B51415C8FC235093454419A999939AA6B5141E17A146E06345441295C8F22AB6B5141A4703D1A0434544119D4BA90B66B514114A1120BF8335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874040 - 1470090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B0000009A9999A9DAFE5041AE47E19A1B245541B81E855BD8FE5041C3F528EC1924554166666606D5FE5041666666B61724554133333383D1FE50411F85EB011624554152B81E35CFFE5041B81E85EB14245541F6285C7FCCFE5041F6285C4F1324554114AE47D1CAFE504148E17A441624554148E17AC4C8FE5041AE47E19A192455410AD7A390C6FE5041CDCCCCBC1D24554148E17AB4C3FE5041E17A140E232455413D0AD723C1FE5041666666C627245541295C8FA2C0FE504148E17A042924554185EB5108C4FE5041D7A370FD2924554152B81E85C8FE50419A9999192C245541CDCCCC1CCDFE5041C3F5281C2F245541713D0AD7D0FE5041E17A143E30245541F6285CBFD3FE50410AD7A3203124554166666626D6FE5041F6285CBF302455419A999919DBFE5041A4703DDA30245541AE47E1CADCFE50413D0AD723352455410AD7A3D0E0FE50413333338333245541D7A370FDE1FE5041E17A140E3324554114AE4731E3FE5041A4703DEA322455415C8FC295E4FE5041AE47E10A332455413D0AD703EAFE50410000006034245541D7A3700DECFE50413D0AD7A334245541AE47E10AEEFE50419A9999E9342455415C8FC275EFFE50411F85EBF13424554114AE4721F1FE50418FC2F5683324554148E17AD4F5FE504148E17A6431245541C3F528BCF7FE50415C8FC23530245541D7A370FDF8FE50417B14AE172F245541F6285CDFF6FE50411F85EB612A2455417B14AEE7EFFE50415C8FC2A5252455417B14AE97EBFE50410AD7A3D022245541AE47E12AEBFE5041A4703D9A22245541D7A3704DEAFE504148E17A34222455415C8FC265E8FE504166666686212455415C8FC295E6FE5041000000C020245541295C8F32E4FE50417B14AEC71F24554152B81EA5E1FE50417B14AEA71E245541B81E852BDDFE5041EC51B8BE1C2455419A9999A9DAFE5041AE47E19A1B245541
+</a>
+
+<b>
+010600000001000000010300000001000000150000004F19C176C5FE50413A0755A51A24554107A23146C7FE50417DB964481B245541031EE6B8C7FE50415BAEC47E1B24554120F5F2B7C8FE5041253B64B219245541C6E61D07C9FE5041655C642E1924554114AE47D1CAFE504148E17A4416245541F6285C7FCCFE5041F6285C4F132455418FC2F558C8FE5041333333031124554185EB51F8C7FE5041F6285CBF0E2455419A999929C3FE50415C8FC2450C2455418FC2F558C1FE5041333333830B24554185EB51F8BEFE5041A4703D5A102455418FC2F5D8BDFE50419A9999C90F2455413D0AD703BDFE5041AE47E14A112455419A9999A9BBFE50415C8FC2F513245541D88FD970BAFE5041A6238207162455419F2759B2BAFE5041BFB9053A16245541C0F16AB5BAFE5041E460733B1624554152B81EB5BAFE5041C3F5283C162455417B14AE17C0FE5041CDCCCCBC182455414F19C176C5FE50413A0755A51A245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874040 - 3445350
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B0000009A9999A9DAFE5041AE47E19A1B245541B81E855BD8FE5041C3F528EC1924554166666606D5FE5041666666B61724554133333383D1FE50411F85EB011624554152B81E35CFFE5041B81E85EB14245541F6285C7FCCFE5041F6285C4F1324554114AE47D1CAFE504148E17A441624554148E17AC4C8FE5041AE47E19A192455410AD7A390C6FE5041CDCCCCBC1D24554148E17AB4C3FE5041E17A140E232455413D0AD723C1FE5041666666C627245541295C8FA2C0FE504148E17A042924554185EB5108C4FE5041D7A370FD2924554152B81E85C8FE50419A9999192C245541CDCCCC1CCDFE5041C3F5281C2F245541713D0AD7D0FE5041E17A143E30245541F6285CBFD3FE50410AD7A3203124554166666626D6FE5041F6285CBF302455419A999919DBFE5041A4703DDA30245541AE47E1CADCFE50413D0AD723352455410AD7A3D0E0FE50413333338333245541D7A370FDE1FE5041E17A140E3324554114AE4731E3FE5041A4703DEA322455415C8FC295E4FE5041AE47E10A332455413D0AD703EAFE50410000006034245541D7A3700DECFE50413D0AD7A334245541AE47E10AEEFE50419A9999E9342455415C8FC275EFFE50411F85EBF13424554114AE4721F1FE50418FC2F5683324554148E17AD4F5FE504148E17A6431245541C3F528BCF7FE50415C8FC23530245541D7A370FDF8FE50417B14AE172F245541F6285CDFF6FE50411F85EB612A2455417B14AEE7EFFE50415C8FC2A5252455417B14AE97EBFE50410AD7A3D022245541AE47E12AEBFE5041A4703D9A22245541D7A3704DEAFE504148E17A34222455415C8FC265E8FE504166666686212455415C8FC295E6FE5041000000C020245541295C8F32E4FE50417B14AEC71F24554152B81EA5E1FE50417B14AEA71E245541B81E852BDDFE5041EC51B8BE1C2455419A9999A9DAFE5041AE47E19A1B245541
+</a>
+
+<b>
+010600000001000000010300000001000000150000004F19C176C5FE50413A0755A51A24554107A23146C7FE50417DB964481B245541031EE6B8C7FE50415BAEC47E1B24554120F5F2B7C8FE5041253B64B219245541C6E61D07C9FE5041655C642E1924554114AE47D1CAFE504148E17A4416245541F6285C7FCCFE5041F6285C4F132455418FC2F558C8FE5041333333031124554185EB51F8C7FE5041F6285CBF0E2455419A999929C3FE50415C8FC2450C2455418FC2F558C1FE5041333333830B24554185EB51F8BEFE5041A4703D5A102455418FC2F5D8BDFE50419A9999C90F2455413D0AD703BDFE5041AE47E14A112455419A9999A9BBFE50415C8FC2F513245541D88FD970BAFE5041A6238207162455419F2759B2BAFE5041BFB9053A16245541C0F16AB5BAFE5041E460733B1624554152B81EB5BAFE5041C3F5283C162455417B14AE17C0FE5041CDCCCCBC182455414F19C176C5FE50413A0755A51A245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874092 - 874023
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000018000000713D0A0732FF5041B81E858BB7245541333333A330FF5041713D0AF7BD245541F6285CEF21FF5041E17A14EEBA245541666666761BFF5041C3F5286CB9245541000000001BFF50413D0AD763BE2455418FC2F59824FF504148E17A44C124554114AE47B12FFF5041713D0AB7C224554148E17AB44BFF50413D0AD713C7245541000000104DFF5041C3F528FCC324554152B81E754FFF50419A999959C1245541F6285C4F55FF5041F6285CEFB9245541713D0AC757FF5041AE47E15AB624554185EB51F85BFF5041EC51B81EB0245541A4703D4A5BFF5041E17A148EAF245541B81E858B56FF504133333303AD2455419A99995952FF50418FC2F5D8A92455410AD7A39051FF504114AE4751A9245541B81E852B50FF50419A9999C9AC245541E17A148E4BFF504148E17AD4B1245541E17A147E46FF5041713D0AA7BA2455413D0AD7D33EFF5041F6285C7FB82455411F85EBC13CFF504100000010B8245541E17A143E36FF50411F85EB61B7245541713D0A0732FF5041B81E858BB7245541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B3D2D66657FF50411798B778AD245541F4AA16AC5BFF5041CC4ECEB1AF245541B30B9A165CFF50412BFF0FE7AF2455418A81F4585FFF5041BBB4E013AA245541A694C21461FF5041878C3B80A5245541E8B23A1C60FF5041697B76E0A4245541D7A3703D5FFF5041EC51B83EA4245541C3F528BC54FF50415C8FC2B59C24554152B81E754DFF5041B81E857B97245541F6285C1F49FF5041CDCCCC5C94245541295C8FA247FF50415C8FC2E5932455417B14AEA73EFF5041295C8FF29C2455410000007042FF5041F6285CAF9F245541295C8FD245FF5041EC51B8FEA124554114AE470151FF5041000000C0A8245541081EDC7554FF504117672B65AB245541A4FD2F8F56FF5041C2452A05AD245541B3D2D66657FF50411798B778AD245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 3176899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441666666F6E3685141F6285C2FD9335441C3F528FCE568514114AE4701DB335441AE47E13AEC685141AE47E1CADF33544133333323FA68514185EB5198EB335441713D0AA7F0685141E17A146EF233544114AE4771E76851411F85EB11F9335441B81E853BE868514152B81E55F93354418FC2F5A8EB6851418FC2F5A8FA33544166666636EF6851413D0AD7B3FB335441CDCCCC9CF268514133333373FC33544152B81E65F66851417B14AEE7FC335441AE47E13AFA6851410AD7A320FD33544148E17AB4FD6851418FC2F508FD33544152B81E3505695141E17A14BEFC33544148E17A94096951411F85EB91FC335441000000300D6951418FC2F518FB335441C3F528EC0F69514133333333F8335441C3F528DC12695141C3F528FCF3335441333333631E69514185EB51C8EA33544148E17A342269514185EB5168E63354415C8FC25524695141000000C0DF33544152B81E45296951411F85EBD1D8335441A4703DAA2F695141713D0A97D83354419A9999193169514148E17A54D83354415C8FC2F53469514114AE4721D5335441000000E0386951410AD7A360D3335441295C8F223B69514152B81EE5D333544148E17A343E695141A4703DDAD6335441713D0A373F695141E17A148ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA3354416666666614695141B81E859BC9335441A4703D1A106951415C8FC255C83354411F85EB610D69514152B81EE5C63354411F85EB610969514100000060C733544152B81E950469514133333393C63354419A9999A9FE685141F6285CEFC53354413D0AD7B3F96851419A9999F9C43354419A9999A9F6685141A4703D6AC2335441713D0AE7F46851417B14AEA7C033544133333343F0685141CDCCCC2CC03354417B14AE57EA685141E17A140EBB33544185EB51C8E768514114AE4741B63354415C8FC295E668514185EB51F8B3335441D7A3703DE36851419A9999A9B133544166666636E16851415C8FC2E5B1335441CDCCCC9CDF685141B81E858BB3335441666666C6DD685141B81E859BB633544152B81E05DD685141EC51B8AEB833544185EB5138DC685141A4703D6ABB335441713D0A77DB68514152B81E95BD335441D7A3700DDA685141000000C0BF33544100000040D96851418FC2F5C8C03354419A999949DA685141EC51B8DEC1335441295C8F22DB68514152B81ED5C03354419A999959DD6851410AD7A390C3335441713D0A77DB6851419A999919C733544152B81EF5D968514148E17A44C9335441CDCCCC7CD96851411F85EBA1CA335441
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF43354417E6377AB1069514110C43A1DF7335441F4EA8B4210695141A5FF5CB5F7335441B8CB68F40F695141BC32AB0FF8335441D83D97690E695141B3E4F8D7F9335441815CA5F00D6951411D29BA42FA3354413179F9F50C6951416B0FFD1FFB335441474566A70C695141DD94E843FB335441BDF80D850C6951416B6EBC5EFB33544126EC810D0B695141ABA749FFFB3354419245E8D3096951418FD6A58EFC335441F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441000000E03C69514185EB51F8D8335441E17A145E3E69514114AE47C1D7335441C610B4333F6951413BEECD92D6335441D9296B303E695141E7D253D6D6335441579093813B695141B3097026D43354413EB3E84539695141625E1F48D3335441666A78FA38695141E30F7468D3335441000000E0386951410AD7A360D33354411CBA74D9356951419AFE08BFD43354413B08FBAC356951418437DAD5D43354414DDBF72C346951411ABF23CCD5335441F39297E430695141556AAE08D8335441050000003D0AD7F31D695141D7A3702DF533544185EB51B81E695141A4703DAAF4335441333333331F695141F6285C7FF5335441EC51B86E1E6951411F85EB01F63354413D0AD7F31D695141D7A3702DF5335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 3396048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441666666F6E3685141F6285C2FD9335441C3F528FCE568514114AE4701DB335441AE47E13AEC685141AE47E1CADF33544133333323FA68514185EB5198EB335441713D0AA7F0685141E17A146EF233544114AE4771E76851411F85EB11F9335441B81E853BE868514152B81E55F93354418FC2F5A8EB6851418FC2F5A8FA33544166666636EF6851413D0AD7B3FB335441CDCCCC9CF268514133333373FC33544152B81E65F66851417B14AEE7FC335441AE47E13AFA6851410AD7A320FD33544148E17AB4FD6851418FC2F508FD33544152B81E3505695141E17A14BEFC33544148E17A94096951411F85EB91FC335441000000300D6951418FC2F518FB335441C3F528EC0F69514133333333F8335441C3F528DC12695141C3F528FCF3335441333333631E69514185EB51C8EA33544148E17A342269514185EB5168E63354415C8FC25524695141000000C0DF33544152B81E45296951411F85EBD1D8335441A4703DAA2F695141713D0A97D83354419A9999193169514148E17A54D83354415C8FC2F53469514114AE4721D5335441000000E0386951410AD7A360D3335441295C8F223B69514152B81EE5D333544148E17A343E695141A4703DDAD6335441713D0A373F695141E17A148ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA3354416666666614695141B81E859BC9335441A4703D1A106951415C8FC255C83354411F85EB610D69514152B81EE5C63354411F85EB610969514100000060C733544152B81E950469514133333393C63354419A9999A9FE685141F6285CEFC53354413D0AD7B3F96851419A9999F9C43354419A9999A9F6685141A4703D6AC2335441713D0AE7F46851417B14AEA7C033544133333343F0685141CDCCCC2CC03354417B14AE57EA685141E17A140EBB33544185EB51C8E768514114AE4741B63354415C8FC295E668514185EB51F8B3335441D7A3703DE36851419A9999A9B133544166666636E16851415C8FC2E5B1335441CDCCCC9CDF685141B81E858BB3335441666666C6DD685141B81E859BB633544152B81E05DD685141EC51B8AEB833544185EB5138DC685141A4703D6ABB335441713D0A77DB68514152B81E95BD335441D7A3700DDA685141000000C0BF33544100000040D96851418FC2F5C8C03354419A999949DA685141EC51B8DEC1335441295C8F22DB68514152B81ED5C03354419A999959DD6851410AD7A390C3335441713D0A77DB6851419A999919C733544152B81EF5D968514148E17A44C9335441CDCCCC7CD96851411F85EBA1CA335441
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF43354417E6377AB1069514110C43A1DF7335441F4EA8B4210695141A5FF5CB5F7335441B8CB68F40F695141BC32AB0FF8335441D83D97690E695141B3E4F8D7F9335441815CA5F00D6951411D29BA42FA3354413179F9F50C6951416B0FFD1FFB335441474566A70C695141DD94E843FB335441BDF80D850C6951416B6EBC5EFB33544126EC810D0B695141ABA749FFFB3354419245E8D3096951418FD6A58EFC335441F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441000000E03C69514185EB51F8D8335441E17A145E3E69514114AE47C1D7335441C610B4333F6951413BEECD92D6335441D9296B303E695141E7D253D6D6335441579093813B695141B3097026D43354413EB3E84539695141625E1F48D3335441666A78FA38695141E30F7468D3335441000000E0386951410AD7A360D33354411CBA74D9356951419AFE08BFD43354413B08FBAC356951418437DAD5D43354414DDBF72C346951411ABF23CCD5335441F39297E430695141556AAE08D8335441050000003D0AD7F31D695141D7A3702DF533544185EB51B81E695141A4703DAAF4335441333333331F695141F6285C7FF5335441EC51B86E1E6951411F85EB01F63354413D0AD7F31D695141D7A3702DF5335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889277 - 3176899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000020000000F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441000000E03C69514185EB51F8D8335441E17A145E3E69514114AE47C1D7335441713D0A373F695141E17A148ED633544148E17A343E695141A4703DDAD6335441295C8F223B69514152B81EE5D3335441000000E0386951410AD7A360D33354415C8FC2F53469514114AE4721D53354419A9999193169514148E17A54D8335441A4703DAA2F695141713D0A97D833544152B81E45296951411F85EBD1D83354415C8FC25524695141000000C0DF33544148E17A342269514185EB5168E6335441333333631E69514185EB51C8EA335441C3F528DC12695141C3F528FCF3335441C3F528EC0F69514133333333F8335441000000300D6951418FC2F518FB33544148E17A94096951411F85EB91FC335441F6285CBF0D695141AE47E15AFC335441050000003D0AD7F31D695141D7A3702DF533544185EB51B81E695141A4703DAAF4335441333333331F695141F6285C7FF5335441EC51B86E1E6951411F85EB01F63354413D0AD7F31D695141D7A3702DF5335441
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF43354417E6377AB1069514110C43A1DF7335441F4EA8B4210695141A5FF5CB5F7335441B8CB68F40F695141BC32AB0FF8335441D83D97690E695141B3E4F8D7F9335441815CA5F00D6951411D29BA42FA3354413179F9F50C6951416B0FFD1FFB335441474566A70C695141DD94E843FB335441BDF80D850C6951416B6EBC5EFB33544126EC810D0B695141ABA749FFFB3354419245E8D3096951418FD6A58EFC335441F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441000000E03C69514185EB51F8D8335441E17A145E3E69514114AE47C1D7335441C610B4333F6951413BEECD92D6335441D9296B303E695141E7D253D6D6335441579093813B695141B3097026D43354413EB3E84539695141625E1F48D3335441666A78FA38695141E30F7468D3335441000000E0386951410AD7A360D33354411CBA74D9356951419AFE08BFD43354413B08FBAC356951418437DAD5D43354414DDBF72C346951411ABF23CCD5335441F39297E430695141556AAE08D8335441050000003D0AD7F31D695141D7A3702DF533544185EB51B81E695141A4703DAAF4335441333333331F695141F6285C7FF5335441EC51B86E1E6951411F85EB01F63354413D0AD7F31D695141D7A3702DF5335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889277 - 3396048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000020000000F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441000000E03C69514185EB51F8D8335441E17A145E3E69514114AE47C1D7335441713D0A373F695141E17A148ED633544148E17A343E695141A4703DDAD6335441295C8F223B69514152B81EE5D3335441000000E0386951410AD7A360D33354415C8FC2F53469514114AE4721D53354419A9999193169514148E17A54D8335441A4703DAA2F695141713D0A97D833544152B81E45296951411F85EBD1D83354415C8FC25524695141000000C0DF33544148E17A342269514185EB5168E6335441333333631E69514185EB51C8EA335441C3F528DC12695141C3F528FCF3335441C3F528EC0F69514133333333F8335441000000300D6951418FC2F518FB33544148E17A94096951411F85EB91FC335441F6285CBF0D695141AE47E15AFC335441050000003D0AD7F31D695141D7A3702DF533544185EB51B81E695141A4703DAAF4335441333333331F695141F6285C7FF5335441EC51B86E1E6951411F85EB01F63354413D0AD7F31D695141D7A3702DF5335441
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF43354417E6377AB1069514110C43A1DF7335441F4EA8B4210695141A5FF5CB5F7335441B8CB68F40F695141BC32AB0FF8335441D83D97690E695141B3E4F8D7F9335441815CA5F00D6951411D29BA42FA3354413179F9F50C6951416B0FFD1FFB335441474566A70C695141DD94E843FB335441BDF80D850C6951416B6EBC5EFB33544126EC810D0B695141ABA749FFFB3354419245E8D3096951418FD6A58EFC335441F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441000000E03C69514185EB51F8D8335441E17A145E3E69514114AE47C1D7335441C610B4333F6951413BEECD92D6335441D9296B303E695141E7D253D6D6335441579093813B695141B3097026D43354413EB3E84539695141625E1F48D3335441666A78FA38695141E30F7468D3335441000000E0386951410AD7A360D33354411CBA74D9356951419AFE08BFD43354413B08FBAC356951418437DAD5D43354414DDBF72C346951411ABF23CCD5335441F39297E430695141556AAE08D8335441050000003D0AD7F31D695141D7A3702DF533544185EB51B81E695141A4703DAAF4335441333333331F695141F6285C7FF5335441EC51B86E1E6951411F85EB01F63354413D0AD7F31D695141D7A3702DF5335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577949 - 2960503
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51E8521B5141EC51B80EFB6B5441604F96AA511B514199C8A639F66B5441C3F5281C371B514152B81E45F86B544114AE47B1161B5141295C8FC2FA6B54411F85EB81F61A5141B81E853BFD6B544114AE4781D51A5141EC51B8EEFD6B54415C8FC275B51A5141CDCCCC9CFE6B544114AE47F1B41A5141F6285C9FFE6B5441EC51B8FEB41A514166666616FF6B54418FC2F588B51A5141C3F528DC036C5441D7A370CDB61A51413D0AD7130F6C54418FC2F5D8B61A514114AE47710F6C5441B81E85BBB71A5141333333730F6C54419A9999D9B81A51415C8FC2750F6C544185EB51C8D11A5141B81E85AB0F6C54415C8FC2E5E51A51411F85EBF10E6C5441E17A14FEF31A514185EB51B80E6C54415C8FC2E5FE1A5141CDCCCC4C0D6C5441B81E85AB0C1B514148E17AB40A6C54417B14AE87161B5141713D0A170A6C5441EC51B88E381B51415C8FC205076C544114AE47B1551B5141E17A14EE036C544185EB51E8521B5141EC51B80EFB6B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000000D87558511B51417F185EEFF56B544170A5E8024D1B5141776DFDECE66B54413E87B243311B5141F24566FEE76B5441052635C6201B51411EF9EEC3E86B54411224FB7B131B514197AB2122E96B544178B76914091B51413C3567B0E96B544116405F37FD1A514192BC8FB6EA6B54414AD3E707F21A5141C81CFA0DEA6B5441EBF4CF62E81A51417E8D0934E96B5441CC388813E21A5141EEAE0BA6E86B5441DCDA3FE1E11A5141961096ABFD6B54413B1DE473F21A514130818951FD6B5441793626F0111B5141BCD20F20FB6B54412BB0D871351B51415084DD65F86B5441B30EFB513A1B5141F465F0F8F76B544169477FBC461B5141CFFF54ECF66B544100D87558511B51417F185EEFF56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129256 - 199954
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000008DE2647844BB504146BA637F05465541CDCCCCDC43BB5041666666A60346554152B81EF539BB5041333333B304465541FB0EF2B12FBB50416A1A7AC705465541E900FCD12FBB504140982F1008465541E17F26053ABB504143A9C9C7064655418DE2647844BB504146BA637F05465541
+</a>
+
+<b>
+010600000001000000010300000001000000090000004E465A1C3BBB5041AB3BE7930446554114111FF539BB5041CA2933B304465541F56AD50C3ABB5041391AA4C606465541C70E466A44BB5041DAB33D600546554195D026D843BB5041FE8BE4A603465541E2FC621D3EBB50418B55614204465541C47C84613CBB504162F86E7104465541EE69601F3BBB50413A2B9593044655414E465A1C3BBB5041AB3BE79304465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129256 - 367288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000008DE2647844BB504146BA637F05465541CDCCCCDC43BB5041666666A60346554152B81EF539BB5041333333B304465541FB0EF2B12FBB50416A1A7AC705465541E900FCD12FBB504140982F1008465541E17F26053ABB504143A9C9C7064655418DE2647844BB504146BA637F05465541
+</a>
+
+<b>
+010600000001000000010300000001000000090000004E465A1C3BBB5041AB3BE7930446554114111FF539BB5041CA2933B304465541F56AD50C3ABB5041391AA4C606465541C70E466A44BB5041DAB33D600546554195D026D843BB5041FE8BE4A603465541E2FC621D3EBB50418B55614204465541C47C84613CBB504162F86E7104465541EE69601F3BBB50413A2B9593044655414E465A1C3BBB5041AB3BE79304465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963102 - 36242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000A6670D27E2D150411F0AF018BE3655413EDA7C44E2D150416D451375BF365541244C1B5EE3D15041DC302563C436554107A29439E4D1504172B381F2C936554132E82782E4D150419E04DE7DCE365541CED15F11E4D15041BF8CB346D6365541D0D15F11E4D15041F8020268E0365541250AAF4DE4D15041704EBC92E836554177EBEB3EE5D15041649B601BEC36554138168035E7D1504174F90C6DF036554132114954E9D15041A316E61DF4365541BA1496D7EBD15041EF9BD9E2F73655415D80FD6EEED15041AE6F5B8EFA3655413A3F384FF1D15041718662B3FC3655416FC720DFF4D15041257B8803FF365541EE85AD17F8D15041F4EF177200375541CD5D480500D2504131D2DA28023755413DF296E109D25041E9FB14CD033755412D9381900CD25041868365CCFB36554185EB53CE0FD2504150D96A1DF8365541FB2CE30D13D250418DBEE079F43655417AD24A3215D2504139E28863F2365541CEAEA24817D25041C8A8B04AEC3655412CD26D6D14D25041A527AB99E9365541AAE4FBEB14D25041564B5383E736554151E5B57516D2504130EF69CFE5365541738BD7231AD25041E2EDF5BBE236554110B244F91ED25041BC910C08E1365541887D5F6924D25041664660FADB36554182BD0ADF21D2504120DEB55CD6365541A03072291CD25041C179C8F7D3365541584CDA8A03D25041FC6FFE28CA365541BD252F86ECD1504153C044A7C1365541A6670D27E2D150411F0AF018BE365541
+</a>
+
+<b>
+01060000000100000001030000000100000022000000E17A14BEF6D150417B14AE2701375541D9ABBEF5F7D150416A95EC130237554188C1A2EB08D25041C6796EB503375541EA85AD17F8D15041F6EF1772003755416BC720DFF4D15041247B8803FF365541373F384FF1D15041728662B3FC3655415E80FD6EEED15041B36F5B8EFA365541BF1496D7EBD15041F39BD9E2F736554136114954E9D15041A016E61DF43655413B168035E7D1504178F90C6DF036554176EBEB3EE5D15041619B601BEC365541240AAF4DE4D15041704EBC92E8365541CDD15F11E4D15041FA020268E0365541CDD15F11E4D15041C08CB346D636554131E82782E4D15041A304DE7DCE36554103A29439E4D1504174B381F2C9365541214C1B5EE3D15041DC302563C43655413BDA7C44E2D150416D451375BF3655413EF36B28E2D1504109022229BE3655419142DBA5E1D15041CA2E24FDBD3655416E8996BFE2D15041BAC42A1FC436554114AE47D1E3D1504148E17AA4CD3655410AD7A360E3D150413D0AD7E3D136554152B81E15E3D15041C3F528FCD73655414AB3A228E3D15041BA1DC0FEDD365541E807751EE3D15041186569EEE136554114AE4731E3D1504114AE4761E63655418FC2F5C8E3D15041713D0AF7EA365541C3F5287CE5D15041E17A145EEF365541666666C6E7D150411F85EBA1F3365541295C8FF2EAD15041E17A14EEF7365541666666B6EDD1504166666606FB36554100000080F0D15041713D0A37FD365541E17A14BEF6D150417B14AE2701375541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963102 - 61623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000A6670D27E2D150411F0AF018BE3655413EDA7C44E2D150416D451375BF365541244C1B5EE3D15041DC302563C436554107A29439E4D1504172B381F2C936554132E82782E4D150419E04DE7DCE365541CED15F11E4D15041BF8CB346D6365541D0D15F11E4D15041F8020268E0365541250AAF4DE4D15041704EBC92E836554177EBEB3EE5D15041649B601BEC36554138168035E7D1504174F90C6DF036554132114954E9D15041A316E61DF4365541BA1496D7EBD15041EF9BD9E2F73655415D80FD6EEED15041AE6F5B8EFA3655413A3F384FF1D15041718662B3FC3655416FC720DFF4D15041257B8803FF365541EE85AD17F8D15041F4EF177200375541CD5D480500D2504131D2DA28023755413DF296E109D25041E9FB14CD033755412D9381900CD25041868365CCFB36554185EB53CE0FD2504150D96A1DF8365541FB2CE30D13D250418DBEE079F43655417AD24A3215D2504139E28863F2365541CEAEA24817D25041C8A8B04AEC3655412CD26D6D14D25041A527AB99E9365541AAE4FBEB14D25041564B5383E736554151E5B57516D2504130EF69CFE5365541738BD7231AD25041E2EDF5BBE236554110B244F91ED25041BC910C08E1365541887D5F6924D25041664660FADB36554182BD0ADF21D2504120DEB55CD6365541A03072291CD25041C179C8F7D3365541584CDA8A03D25041FC6FFE28CA365541BD252F86ECD1504153C044A7C1365541A6670D27E2D150411F0AF018BE365541
+</a>
+
+<b>
+01060000000100000001030000000100000022000000E17A14BEF6D150417B14AE2701375541D9ABBEF5F7D150416A95EC130237554188C1A2EB08D25041C6796EB503375541EA85AD17F8D15041F6EF1772003755416BC720DFF4D15041247B8803FF365541373F384FF1D15041728662B3FC3655415E80FD6EEED15041B36F5B8EFA365541BF1496D7EBD15041F39BD9E2F736554136114954E9D15041A016E61DF43655413B168035E7D1504178F90C6DF036554176EBEB3EE5D15041619B601BEC365541240AAF4DE4D15041704EBC92E8365541CDD15F11E4D15041FA020268E0365541CDD15F11E4D15041C08CB346D636554131E82782E4D15041A304DE7DCE36554103A29439E4D1504174B381F2C9365541214C1B5EE3D15041DC302563C43655413BDA7C44E2D150416D451375BF3655413EF36B28E2D1504109022229BE3655419142DBA5E1D15041CA2E24FDBD3655416E8996BFE2D15041BAC42A1FC436554114AE47D1E3D1504148E17AA4CD3655410AD7A360E3D150413D0AD7E3D136554152B81E15E3D15041C3F528FCD73655414AB3A228E3D15041BA1DC0FEDD365541E807751EE3D15041186569EEE136554114AE4731E3D1504114AE4761E63655418FC2F5C8E3D15041713D0AF7EA365541C3F5287CE5D15041E17A145EEF365541666666C6E7D150411F85EBA1F3365541295C8FF2EAD15041E17A14EEF7365541666666B6EDD1504166666606FB36554100000080F0D15041713D0A37FD365541E17A14BEF6D150417B14AE2701375541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889581 - 57812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000400000046000000000000D06A6851410000001039335441CDCCCCBC6A685141295C8F323F3354415C8FC2A56A685141AE47E13A40335441AE47E10A6A6851413D0AD7734233544185EB51A8696851415C8FC2E543335441A4703DFA69685141CDCCCC7C45335441713D0A776B6851413D0AD7334A3354411F85EBA16C68514114AE47314C3354410AD7A3B06E685141A4703D4A4D3354419A999929716851410AD7A3904D335441B81E855B73685141666666364F3354417B14AE1778685141295C8FF25333544114AE47517B6851415C8FC2E55633544185EB51B87D6851415C8FC295573354413D0AD7437F68514152B81E75573354415C8FC275826851416666660656335441E17A14CE87685141F6285C5F543354411F85EBE18B6851415C8FC2C553335441E17A14EE8D685141F6285CAF53335441713D0AC78F6851411F85EB6153335441C3F5284C9368514148E17A0452335441F6285C9F956851418FC2F558513354417B14AE579B6851419A9999094E335441E17A147E9D6851417B14AE774C335441B81E855BA16851415C8FC21549335441A4703D0AA5685141A4703DFA46335441B81E854BA9685141E17A14BE45335441295C8F32AE685141EC51B82E45335441E17A144EAF6851417B14AE674433544133333313B4685141AE47E1BA41335441CDCCCC1CB7685141CDCCCC7C4133544185EB5118B868514148E17AA441335441EC51B89EBC685141CDCCCC4C3C335441000000A0C0685141EC51B8AE343354419A9999E9C268514185EB51082A33544100000040C36851417B14AE77283354415C8FC245C3685141D7A3706D2333544166666646C3685141A4703DBA22335441CDCCCC0CC2685141D7A3708D1F335441333333A3C0685141000000801F335441D7A370CDBE685141EC51B8EE1C335441B81E855BBC685141AE47E1DA1A335441EC51B8CEBB68514185EB5198183354415C8FC255B668514185EB51A81833544166666646AD685141AE47E17A19335441295C8FE2A8685141E17A14EE18335441D7A3705DA26851413D0AD7C3173354411F85EB419C685141C3F5286C173354413D0AD72398685141E17A14EE1833544114AE4741966851415C8FC2951A335441E17A149E8F685141B81E858B17335441D7A370ED86685141295C8FB210335441F6285C5F866851417B14AE6710335441F6285C2F80685141D7A370DD0B335441CDCCCC7C7A6851410AD7A3700B335441B81E857B75685141CDCCCCCC0C335441A4703D5A726851411F85EB610F335441C3F528AC6C6851418FC2F5880F335441CDCCCC6C6B685141B81E855B113354418FC2F5B868685141AE47E19A17335441713D0AB765685141713D0A871F335441666666466468514114AE475123335441A4703DBA64685141B81E858B243354418FC2F568676851411F85EBB1243354419A9999096A6851418FC2F54826335441666666A66A685141CDCCCC5C283354410000007069685141333333632B335441A4703D4A6A68514185EB51C82D335441295C8FE26A685141A4703D4A36335441000000D06A6851410000001039335441090000009A9999E98F685141000000702A335441B81E85AB9068514114AE47E12A3354413D0AD7F39068514185EB51782A335441E17A14CE9168514114AE47012B3354415C8FC28591685141295C8F822B33544152B81E3593685141000000002D335441EC51B8FE91685141AE47E19A2E335441666666B68E68514148E17A342C3354419A9999E98F685141000000702A335441050000003D0AD70394685141D7A3705D29335441F6285C4F956851410000004027335441B81E85EB966851411F85EB01283354410AD7A3B0956851417B14AE472A3354413D0AD70394685141D7A3705D2933544105000000EC51B8DE886851418FC2F5B82733544185EB515889685141CDCCCC0C26335441C3F528DC8A685141E17A149E26335441295C8F628A685141A4703D2A28335441EC51B8DE886851418FC2F5B827335441
+</a>
+
+<b>
+01060000000100000001030000000400000047000000C8D76D9E7A685141230626730B335441CDCCCC7C7A6851410AD7A3700B335441B81E857B75685141CDCCCCCC0C335441A4703D5A726851411F85EB610F335441C3F528AC6C6851418FC2F5880F335441CDCCCC6C6B685141B81E855B113354418FC2F5B868685141AE47E19A17335441713D0AB765685141713D0A871F335441666666466468514114AE475123335441A4703DBA64685141B81E858B243354418FC2F568676851411F85EBB1243354419A9999096A6851418FC2F54826335441666666A66A685141CDCCCC5C283354410000007069685141333333632B335441A4703D4A6A68514185EB51C82D335441295C8FE26A685141A4703D4A36335441000000D06A6851410000001039335441CDCCCCBC6A685141295C8F323F3354415C8FC2A56A685141AE47E13A40335441AE47E10A6A6851413D0AD7734233544185EB51A8696851415C8FC2E543335441A4703DFA69685141CDCCCC7C45335441713D0A776B6851413D0AD7334A3354411F85EBA16C68514114AE47314C3354410AD7A3B06E685141A4703D4A4D3354419A999929716851410AD7A3904D335441B81E855B73685141666666364F3354417B14AE1778685141295C8FF25333544114AE47517B6851415C8FC2E55633544185EB51B87D6851415C8FC295573354413D0AD7437F68514152B81E75573354415C8FC275826851416666660656335441E17A14CE87685141F6285C5F543354411F85EBE18B6851415C8FC2C553335441E17A14EE8D685141F6285CAF53335441713D0AC78F6851411F85EB6153335441C3F5284C9368514148E17A0452335441F6285C9F956851418FC2F558513354417B14AE579B6851419A9999094E335441E17A147E9D6851417B14AE774C335441B81E855BA16851415C8FC21549335441A4703D0AA5685141A4703DFA46335441B81E854BA9685141E17A14BE45335441295C8F32AE685141EC51B82E45335441E17A144EAF6851417B14AE674433544133333313B4685141AE47E1BA41335441CDCCCC1CB7685141CDCCCC7C4133544185EB5118B868514148E17AA441335441EC51B89EBC685141CDCCCC4C3C335441000000A0C0685141EC51B8AE343354419A9999E9C268514185EB51082A33544100000040C36851417B14AE77283354415C8FC245C3685141D7A3706D2333544166666646C3685141A4703DBA22335441CDCCCC0CC2685141D7A3708D1F335441333333A3C0685141000000801F335441D7A370CDBE685141EC51B8EE1C335441B81E855BBC685141AE47E1DA1A335441EC51B8CEBB68514185EB5198183354415C8FC255B668514185EB51A81833544166666646AD685141AE47E17A19335441295C8FE2A8685141E17A14EE18335441D7A3705DA26851413D0AD7C3173354411F85EB419C685141C3F5286C173354413D0AD72398685141E17A14EE1833544114AE4741966851415C8FC2951A335441E17A149E8F685141B81E858B17335441D7A370ED86685141295C8FB210335441F6285C5F866851417B14AE671033544150F5AD6583685141417BCE380E335441C8D76D9E7A685141230626730B335441090000009A9999E98F685141000000702A335441B81E85AB9068514114AE47E12A3354413D0AD7F39068514185EB51782A335441E17A14CE9168514114AE47012B3354415C8FC28591685141295C8F822B33544152B81E3593685141000000002D335441EC51B8FE91685141AE47E19A2E335441666666B68E68514148E17A342C3354419A9999E98F685141000000702A335441050000003D0AD70394685141D7A3705D29335441F6285C4F956851410000004027335441B81E85EB966851411F85EB01283354410AD7A3B0956851417B14AE472A3354413D0AD70394685141D7A3705D2933544105000000EC51B8DE886851418FC2F5B82733544185EB515889685141CDCCCC0C26335441C3F528DC8A685141E17A149E26335441295C8F628A685141A4703D2A28335441EC51B8DE886851418FC2F5B827335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874797 - 2985137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A000000EC51B86EABE350418FC2F5589CEF5441A4703DCAADE3504152B81E45A0EF544185EB5188AFE350410AD7A370A3EF54419A999939C0E35041A4703DCA9AEF544114AE4781CEE35041CDCCCC1C93EF5441666666F6CDE3504185EB51889CEF5441AE47E15ACDE3504114AE4701A7EF54411F85EB21D1E35041F6285C4FA5EF54418FC2F568D4E350417B14AE57A4EF5441B81E85ABD8E3504152B81E15A4EF5441CDCCCCDCD7E3504133333313A3EF54418FC2F588D5E35041666666A69EEF54413D0AD7B3D3E35041295C8F7299EF5441E17A142ED3E35041E17A14FE94EF5441CDCCCC0CD4E35041666666F681EF544133333353D4E35041A4703DEA7DEF5441F6285CCFD4E35041713D0AC776EF54418FC2F518D5E35041D7A3708D72EF5441F6285C3FD6E35041A4703D9A61EF544166666696D6E3504148E17A945CEF54419A999909D7E35041CDCCCCAC56EF544133333363D4E350417B14AEA757EF5441CDCCCCACD1E35041333333C358EF544133333393D1E350411F85EB415EEF5441EC51B85EC0E3504185EB515864EF544100000020BAE35041E17A148E66EF544114AE4751A4E35041295C8F926DEF544152B81E85A3E35041A4703D5A72EF54419A9999D9A2E35041C3F5285C76EF54413D0AD753B6E350415C8FC2D570EF544152B81EB5C1E3504148E17A746DEF544185EB51F8D0E350419A9999A968EF5441B81E85BBD0E35041EC51B8BE6CEF544152B81E25D0E3504152B81ED576EF544166666696CAE35041295C8FB277EF54417B14AE37BAE35041333333C379EF5441F6285C6FBBE35041F6285C0F85EF544148E17A14B7E35041EC51B83E86EF5441E17A147EA2E350419A99993990EF544185EB5198A3E35041EC51B85E91EF5441A4703D1AABE350411F85EBE19BEF5441EC51B86EABE350418FC2F5589CEF5441
+</a>
+
+<b>
+0106000000010000000103000000010000003F00000017A21B23D0E3504178882BA8A5EF54415E38D0D1D1E35041BDA90BE2A4EF5441D3F50F5ED3E3504173463858A4EF5441D83703AED4E35041FBBBD9F0A3EF5441DCACD722D7E35041C0762ABDA3EF5441450C9A70D5E3504142F39E929FEF5441384600BED3E350416917BB709BEF5441485683AFD2E350418E84604099EF54413FAB03A9D3E35041F93EDFAB88EF5441DC02A4FAD4E35041ACE05A4874EF54410E1EC5D8D5E35041E31D138167EF5441AEBF4DFFD5E35041B5D18A6765EF5441F6285C3FD6E35041A4703D9A61EF544166666696D6E3504148E17A945CEF5441FCDDFDCBD6E35041D4BF36405AEF5441F4AAB1EDD6E350412BD3136A58EF54411BBAEAE2D6E350418C68F2FA56EF5441A639BF6FD1E350414795A0B758EF54412D97038BCBE35041AC5651515AEF54416793915DCAE35041972C51C456EF5441EE494E46BCE3504157E62B1B5AEF54414924DD1CB2E350413DF37F915CEF544185D67228A6E350413B245BC860EF5441CC5E7821A3E35041AA230C0962EF5441FC9E7645A4E350415092D5AD66EF54414FC20352A4E350417806B1046BEF5441F86D6599A4E350419352B25C6DEF5441845CBBE3A3E35041F771292370EF54412767DDD2A3E35041D8406B4472EF5441FC8D5E56A3E350414625DF7173EF5441987FF50DA3E350413BCD4E4D76EF5441841EE46EA1E35041F0A9A5767AEF5441E039526EA0E3504152F423707CEF544104DC8F709FE35041877C4CE77DEF54413FD5BE2AA0E350416F86CE497EEF54417798A441A5E350416045AC657DEF5441472751C4ACE35041F29704157CEF544110FDCC82B5E35041B9AF098D7AEF54416F565BDDB9E350416346D5C979EF5441F9C7C33CBAE350412C8C1FB979EF54414BB063CBBAE350411B89D51D7FEF5441F6285C6FBBE35041F6285C0F85EF544148E17A14B7E35041EC51B83E86EF5441D0913C77B1E35041093870F788EF54417BA3CC45ADE35041B747CCFF8AEF54411B8E4DE2ABE35041B0E320AC8BEF544190D2F5ADA2E35041A272536B90EF5441B9C98200A4E35041DB709DF091EF5441F20FE185A7E350415C9DFA6996EF5441D7486D4EA9E350416521E10999EF544102A3D950AAE350410706AC739AEF54410418AEC5ACE350413BE4FE159EEF544168EAAA20AFE35041B9252542A2EF544178FE26B1AFE350412E177B5BA3EF5441F6B3492CBEE35041DB7D74DA9BEF5441B31C93EBC5E350413FDA5FBA97EF54413DFBAE11CCE35041BD08126C94EF544114AE4781CEE35041CDCCCC1C93EF54414F803B51CEE35041D7C8195F96EF5441EB42DD9ECDE350419517E470A2EF5441707B5D69CDE35041679DE876A6EF5441D9E7977ACDE35041DE2747DEA6EF544117A21B23D0E3504178882BA8A5EF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875670 - 401277
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000008000000010300000001000000260000000000000051F85041AE47E1AA1CDD5441C3F528DC50F85041E17A14EE1BDD5441295C8F624CF8504148E17A141CDD5441D7A370DD45F850418FC2F5E820DD5441F6285CBF3FF8504148E17AB424DD5441C3F5286C39F85041D7A3708D27DD5441713D0A772CF850411F85EBD12CDD54419A9999192DF850415C8FC2E52EDD5441EC51B83E2EF85041E17A149E2EDD54415C8FC27530F850411F85EB312EDD5441C3F5285C34F85041333333832EDD5441F6285CFF36F85041A4703D5A2DDD54416666668637F85041333333232BDD5441333333F339F85041F6285CDF29DD5441295C8F323DF8504152B81EA52BDD5441E17A147E3EF85041EC51B8BE2BDD5441D7A3707D3FF85041C3F5281C2CDD544148E17AF43FF85041713D0AD72CDD54419A99994940F85041666666D62DDD544114AE475141F85041EC51B8EE2EDD544185EB517845F850418FC2F5B831DD544185EB516847F85041CDCCCC7C32DD5441B81E85DB48F850416666661632DD544114AE474149F85041EC51B88E31DD544114AE474149F85041EC51B87E30DD5441D7A370FD48F850418FC2F5082EDD5441E17A140E49F850413D0AD7A32CDD5441CDCCCC7C49F85041A4703DEA2ADD5441333333734AF8504148E17AF428DD5441EC51B83E4CF85041C3F5285C27DD5441333333234EF850415C8FC26526DD5441AE47E13A50F850411F85EBA125DD54419A99992950F8504152B81EF524DD5441D7A3705D50F850417B14AE7724DD5441F6285CDF50F850415C8FC21523DD5441A4703D6A51F85041B81E850B21DD54417B14AEE750F85041F6285C0F1FDD54410000000051F85041AE47E1AA1CDD544101030000000100000017000000C3F5286C62F750410AD7A31039DD5441295C8F126AF75041AE47E1CA34DD5441D7A3700D6BF750415C8FC2C535DD5441EC51B8DE6BF7504114AE47E138DD54413D0AD7036DF75041F6285C6F3ADD54418FC2F5186FF750411F85EB3139DD54418FC2F5786EF750410AD7A31036DD54418FC2F5786EF75041F6285C1F32DD54418FC2F5986EF75041E17A144E2EDD54418FC2F5686EF75041D7A3705D2CDD544148E17A846DF75041B81E85AB28DD5441A4703D5A6AF75041295C8F7229DD5441666666D667F75041CDCCCC9C2ADD54417B14AE3764F750419A9999492CDD5441333333735FF750417B14AE772EDD5441295C8F4255F7504148E17A0432DD54415C8FC2454BF750418FC2F54833DD5441C3F528DC45F75041E17A14AE33DD544114AE47414AF75041A4703DBA34DD54411F85EB614FF750410AD7A3A035DD544152B81E6558F75041C3F528EC36DD5441713D0A775DF75041666666B637DD5441C3F5286C62F750410AD7A31039DD54410103000000010000000B000000000000D05EF75041A4703D0A3ADD54413D0AD70359F75041295C8FC238DD5441713D0A274FF750411F85EB0138DD5441666666C64EF7504152B81EC53BDD54413D0AD7734FF75041F6285CAF3FDD5441666666E650F750410AD7A3A043DD544152B81EA553F750417B14AE9744DD5441EC51B89E66F75041333333F343DD54416666666665F75041D7A3705D40DD54413D0AD7E363F75041A4703D3A3DDD5441000000D05EF75041A4703D0A3ADD54410103000000010000001F000000295C8FF2D5F95041C3F5287C0EDD544148E17A14D9F950418FC2F5C80BDD544114AE4721DCF95041295C8FB209DD544152B81E25DDF95041000000E006DD544166666616DDF950413D0AD7D303DD5441295C8FA2DEF950419A9999B902DD5441333333C3DEF95041CDCCCC1C02DD5441C3F528ECDEF95041CDCCCC4C01DD5441F6285C4FDFF9504114AE47B100DD54413D0AD7C3DFF9504152B81E1500DD54411F85EB41E0F95041E17A147EFFDC5441EC51B85EE1F95041AE47E1FAFEDC5441295C8F12DCF95041CDCCCC5CF9DC544148E17A14D3F95041CDCCCC4CFBDC54413D0AD7E3D1F950415C8FC2B5FCDC544133333353D1F9504148E17A54FDDC54410AD7A3D0D1F95041C3F528FCFDDC544152B81EF5D2F9504114AE4701FFDC5441C3F528BCD3F9504152B81ED5FFDC5441A4703D2AD4F95041295C8FB200DD544185EB5158D4F950413333337301DD544148E17AA4D4F9504148E17A6403DD54415C8FC2B5D4F95041CDCCCC2C05DD544185EB51A8D4F950410000004006DD544185EB51A8D4F95041EC51B81E07DD5441B81E85ABD4F950413333332308DD5441295C8FA2D4F950413D0AD7C309DD54410AD7A3D0D4F9504152B81E150BDD54410AD7A310D5F95041713D0A570CDD5441713D0A57D5F95041AE47E18A0DDD5441295C8FF2D5F95041C3F5287C0EDD54410103000000010000003000000085EB5148D0F65041CDCCCC9C03DD5441CDCCCCFCCEF65041E17A143E03DD5441E17A143EB8F6504114AE47E1FDDC54415C8FC2A5B1F65041AE47E15AFBDC5441E17A149EAAF65041D7A3709DFBDC544185EB5108A8F650419A9999A9FBDC5441D7A370EDAAF650415C8FC245FDDC54413D0AD7E3B3F650411F85EB4102DD5441C3F528BCC2F65041E17A14FE0ADD5441B81E856BCBF650417B14AEE70EDD54415C8FC2B5CCF65041A4703D7A0FDD544114AE4751DCF65041295C8F7216DD5441666666C6D4F650410AD7A39020DD544166666606C5F650411F85EBE118DD544148E17A94BDF65041B81E851B14DD5441EC51B89EBAF650418FC2F52816DD5441D7A370CDB7F65041E17A145E1DDD544148E17A34C0F65041E17A146E23DD5441E17A147ED5F65041EC51B87E2ADD544185EB5108DDF650411F85EB412BDD544114AE4731E4F650410AD7A3E02BDD5441A4703D4AF9F65041E17A141E2CDD544114AE47E100F7504152B81EA52DDD5441295C8F2208F75041713D0A072FDD54416666666613F75041D7A3702D31DD5441666666D617F750416666667631DD54413333333318F750417B14AE1731DD54413333337320F75041EC51B83E2FDD54411F85EBE12AF75041E17A141E2CDD54419A99990931F7504152B81E852BDD5441EC51B81E39F750413D0AD7A32EDD5441AE47E14A3EF750419A9999992FDD54417B14AED73EF750415C8FC27516DD5441713D0A7739F75041713D0A2717DD54415C8FC2552EF7504152B81E9518DD5441333333D322F750413D0AD7C319DD5441C3F5286C1DF75041B81E853B1ADD544148E17A3418F75041713D0AA719DD5441F6285C8F12F75041AE47E1BA19DD544114AE47710CF7504148E17AE417DD5441B81E850B05F750419A99996916DD5441713D0A57FDF65041E17A141E15DD5441CDCCCC2CEFF65041EC51B85E0EDD5441A4703DFAEEF65041713D0A470EDD54410AD7A350EDF650419A9999790DDD54410AD7A360E4F65041713D0AB709DD5441A4703D2ADDF6504114AE47E106DD544185EB5148D0F65041CDCCCC9C03DD54410103000000010000000F000000F6285C0F4CF85041C3F5280C1BDD5441000000C04BF8504114AE47111ADD5441AE47E1AA4BF85041666666E619DD5441CDCCCC5C4BF85041AE47E14A19DD5441B81E85CB41F85041A4703D3A1DDD54413D0AD7F33BF85041A4703D9A1EDD544148E17A7436F85041A4703DFA1FDD54418FC2F5F82FF850411F85EBA122DD5441AE47E10A31F8504148E17A3426DD5441A4703D3A31F850411F85EBD126DD54413333330332F850411F85EB7129DD5441A4703DCA38F85041F6285C7F26DD54419A9999893FF85041713D0AA723DD5441D7A370DD45F85041A4703D8A1FDD5441F6285C0F4CF85041C3F5280C1BDD54410103000000010000005B000000A4703DFAE2F6504148E17A7455DD54418FC2F5C8E1F650419A9999C952DD5441000000C0E0F65041EC51B8EE50DD5441AE47E1DADEF65041CDCCCC0C4FDD544148E17AA4DDF65041713D0AD74DDD544152B81ED5DCF650410AD7A3304CDD544152B81E65D9F65041E17A142E4EDD54413D0AD7A3D1F650418FC2F57847DD54410AD7A330CAF650411F85EB9143DD54411F85EB81C0F650417B14AEF73BDD5441666666A6BCF650416666662638DD544114AE47D1B8F65041F6285C8F31DD5441A4703DAAB1F65041295C8F9230DD544152B81EA5AAF65041AE47E16A31DD544133333333ABF650410AD7A3E032DD5441D7A3703DABF650415C8FC20534DD54411F85EBA1AAF65041E17A141E35DD544185EB5198AAF65041A4703D1A36DD54417B14AE97AAF65041295C8F3236DD544152B81E05ABF65041EC51B85E38DD544166666636ACF65041295C8FD23ADD5441C3F5286CACF6504114AE47713DDD54415C8FC2D5ABF650415C8FC2453FDD544152B81EC5ADF65041EC51B89E40DD5441F6285C9FB0F65041A4703D5A41DD5441B81E85DBB4F650417B14AE7740DD5441F6285C2FB6F65041713D0A5740DD5441D7A370ADB7F650416666663641DD544148E17A04B9F65041295C8F9242DD5441C3F5286CB9F65041C3F5283C44DD5441CDCCCC1CB9F650413D0AD7D345DD544114AE4701B8F65041CDCCCCFC46DD54413D0AD733B8F65041A4703D6A48DD5441E17A140EB9F650410AD7A3304ADD54410AD7A300B9F65041713D0A174CDD54418FC2F5F8B8F65041CDCCCC3C4DDD544185EB5198B8F650417B14AED74EDD5441AE47E13AB3F650415C8FC26553DD5441E17A14DEB2F65041AE47E13A54DD544114AE47B1B3F65041713D0A2755DD54413D0AD793B7F6504114AE470156DD5441000000C0B9F6504185EB513856DD5441B81E85EBB9F65041C3F5285C54DD54419A9999B9BBF650411F85EB2154DD54410AD7A370BDF65041713D0AE754DD5441A4703D1AC5F6504185EB51A852DD544100000060C9F6504114AE47B14EDD54417B14AE37CBF6504148E17AB44DDD5441A4703DBACCF65041B81E85AB4DDD544185EB5108CEF650418FC2F5184EDD5441EC51B8BECFF650419A9999D94FDD5441666666A6D1F6504114AE473154DD544152B81E35D2F65041E17A148E55DD5441C3F528ECD1F65041F6285CFF56DD544100000050D1F650413D0AD71359DD54410AD7A340D1F650411F85EB315ADD544133333353D1F65041F6285CEF5BDD5441CDCCCC5CD1F65041E17A14AE5CDD544148E17A64D1F650411F85EB415DDD5441EC51B85ED1F65041D7A370AD5EDD5441F6285C2FD0F650418FC2F5C862DD544133333313D0F650413D0AD71364DD5441A4703D1AD1F65041713D0A1765DD5441E17A146ED2F650419A9999C965DD5441000000A0D4F650413333338366DD5441D7A3704DD6F6504152B81ED565DD5441AE47E15AD8F6504148E17A4463DD5441C3F5287CD9F65041EC51B82E61DD54417B14AE77D9F650415C8FC21560DD5441F6285CAFD9F65041C3F5284C5FDD54413D0AD763DAF65041CDCCCCCC5EDD544133333373DBF650415C8FC2855EDD544114AE4771DCF65041713D0A775DDD54417B14AE47DEF65041F6285CCF5CDD544133333313E0F6504114AE47315CDD5441F6285CDFE0F65041D7A370FD5BDD5441B81E850BE2F65041333333235DDD544100000020E3F65041333333835DDD5441C3F5280CE4F65041E17A143E5DDD54417B14AE97E5F65041000000D05CDD5441AE47E17AE7F6504185EB51285CDD54417B14AE77EAF650410000005059DD5441E17A147EEAF650419A99994959DD544114AE47C1EBF6504152B81E9558DD5441CDCCCC2CECF6504185EB51A857DD54419A9999D9EBF650413D0AD72357DD54413D0AD7A3EAF6504152B81EB556DD5441AE47E1AAE8F650410000007057DD54415C8FC205E7F650411F85EB5157DD544185EB5158E4F65041D7A3706D56DD5441A4703DFAE2F6504148E17A7455DD5441010300000005000000900000000000000000F750413333330386DD54415C8FC2D50BF750415C8FC2E56ADD5441333333A31FF750418FC2F5F871DD54410AD7A3905CF75041333333037CDD54416666663676F75041CDCCCC3C84DD5441D7A3703D88F75041B81E852B85DD5441CDCCCC2C8DF75041713D0A3784DD5441CDCCCC2C8DF75041E17A149E7BDD5441B81E85CB8DF7504148E17A1479DD544148E17AE48DF75041E17A14AE78DD54417B14AE678EF75041D7A3709D77DD544152B81ED58DF75041666666F677DD5441D7A370BD8BF75041EC51B8AE78DD5441C3F528CC89F75041713D0A3779DD5441B81E85DB87F750413D0AD75378DD54417B14AEC785F75041CDCCCC9C77DD5441E17A142E85F750415C8FC2D577DD5441EC51B8BE84F75041295C8F3279DD5441A4703D9A82F7504185EB51387DDD54419A9999C980F7504152B81EA57EDD5441B81E85DB7EF750419A99990980DD54413D0AD7837DF750411F85EB9180DD5441333333937CF75041CDCCCC0C80DD5441B81E857B7BF750411F85EB717FDD5441713D0AE779F75041333333A37DDD54410000000079F75041C3F528BC7ADD54413333336379F75041D7A370DD76DD5441713D0AC77AF750419A99993974DD54411F85EBC17AF750419A99996973DD5441A4703D7A79F75041F6285CBF72DD54413D0AD76376F750417B14AED770DD5441CDCCCC8C75F750413333335370DD5441F6285C6F72F75041B81E85CB6DDD5441EC51B84E6FF75041D7A3708D6ADD5441000000306DF750416666660666DD5441EC51B80E6BF75041EC51B89E63DD5441D7A3707D69F75041713D0A3763DD5441A4703DFA66F750419A99994962DD5441E17A141E66F75041E17A146E60DD5441F6285C3F66F75041000000305FDD544114AE47D167F750411F85EBB15BDD5441EC51B8EE66F7504148E17A545ADD5441295C8F5264F7504148E17AA459DD5441A4703D3A62F750415C8FC2B558DD544185EB511860F75041C3F5280C56DD5441E17A14AE5DF75041666666F654DD544148E17AB45BF75041713D0AE754DD54419A9999B959F750415C8FC29555DD5441AE47E18A53F75041D7A3705D57DD54417B14AE4751F75041713D0AF756DD544148E17AB44FF75041EC51B80E56DD5441A4703D6A48F750411F85EBA156DD5441C3F5284C45F75041EC51B8FE5BDD544114AE47E147F75041000000B05DDD5441F6285CAF48F750419A9999195FDD5441D7A3706D47F7504148E17A5462DD5441E17A142E46F750415C8FC28563DD5441B81E850B45F750410AD7A30063DD54411F85EB2141F75041E17A14BE62DD5441B81E85EB3CF750415C8FC23563DD544148E17AB439F750411F85EBB163DD5441295C8FC237F7504114AE470164DD5441713D0AE735F750419A99992963DD5441666666D633F75041F6285CFF61DD5441295C8FE232F750418FC2F50861DD5441D7A370CD32F750419A9999795FDD544152B81ED534F75041666666B65CDD5441A4703DFA34F75041F6285CAF5BDD54417B14AE4734F75041EC51B8CE5ADD54419A99991933F750417B14AE075ADD5441C3F5281C31F75041295C8F8259DD5441333333F32DF7504114AE475158DD5441EC51B82E2CF75041333333C357DD54411F85EB012AF75041CDCCCC7C58DD5441D7A370CD24F7504152B81E2559DD5441D7A370CD1EF75041AE47E1FA59DD5441D7A3707D1BF7504152B81EF559DD5441EC51B8EE15F750415C8FC23558DD544185EB516813F75041D7A370DD58DD544148E17AA40FF750415C8FC25559DD5441C3F528BC0AF7504152B81E2559DD5441E17A14EE07F7504114AE478158DD54416666660605F7504114AE47B156DD54415C8FC2F500F750413D0AD71353DD5441000000A0FEF65041000000F04FDD5441666666C6FDF6504152B81ED54EDD54410AD7A300FDF65041C3F5283C4EDD544100000090FCF650410AD7A3604EDD544148E17A14FCF650418FC2F5884EDD5441CDCCCC6CFBF650415C8FC2354FDD54417B14AE77F9F650417B14AED751DD54418FC2F5F8F7F6504114AE473153DD544185EB5118F6F65041333333B353DD5441AE47E13AEFF6504114AE47F157DD54410AD7A3B0EEF650410AD7A34059DD54418FC2F5C8EDF6504148E17AF459DD544185EB51B8EBF6504185EB51585BDD54417B14AE07EAF650419A9999B95DDD5441C3F528BCE7F65041E17A14EE5EDD5441C3F5286CE3F650410000002060DD5441C3F5284CE1F650417B14AE3760DD5441A4703DBAE0F6504152B81E055FDD5441713D0A57DFF65041713D0A875FDD544152B81E05DDF650411F85EBC161DD54410AD7A3B0DBF6504148E17AC463DD5441000000E0DAF650413333332365DD5441F6285C5FD9F65041AE47E16A67DD5441B81E850BD6F650415C8FC27569DD5441713D0A27D4F65041A4703DBA69DD5441713D0A17D0F65041295C8F1268DD544100000040CEF65041295C8F8266DD5441A4703DBACDF65041666666C665DD544133333323CDF65041A4703D3A64DD544133333343CDF65041000000F060DD544166666636CEF65041333333935CDD5441000000C0CEF65041C3F5282C57DD5441333333B3CCF65041F6285C0F51DD5441713D0AE7CBF650419A99999950DD5441713D0A07CBF6504152B81EC551DD5441F6285C0FC9F65041333333B353DD5441EC51B8DEC5F65041D7A370BD55DD5441EC51B8AEBFF65041E17A14AE57DD544185EB5168BBF65041F6285CEF58DD54418FC2F5A8B3F65041A4703D1A5ADD54413D0AD7F3AFF65041A4703D1A5ADD5441CDCCCCFCADF65041333333935BDD54417B14AED7AFF65041E17A141E62DD5441000000C0B1F65041CDCCCCFC68DD5441F6285C7FB0F650411F85EBB16CDD5441295C8F42B1F650411F85EB2170DD54419A9999C9AEF65041333333F371DD544185EB5108B8F65041D7A3704D74DD544148E17A94BBF650413333333375DD5441713D0AC7D0F6504152B81E0577DD544114AE47B1D9F65041E17A142E78DD5441713D0A27DEF65041C3F528CC78DD54417B14AE27DFF65041000000F078DD54411F85EBE1E4F65041333333037ADD5441F6285CEFE9F6504114AE47817BDD5441F6285CCFEFF65041713D0AD77DDD54411F85EB81F0F65041E17A141E7EDD5441E17A14CEF6F65041B81E851B81DD5441AE47E1BAFDF6504185EB515885DD54410000000000F750413333330386DD54410F000000666666A604F75041AE47E1BA63DD544152B81E2505F75041CDCCCC6C61DD54411F85EB9109F750410AD7A35060DD544114AE47A10BF750417B14AED75EDD5441D7A3702D0DF75041D7A3703D5EDD5441A4703DDA0DF750418FC2F5C85EDD5441E17A14BE0DF75041F6285C2F60DD5441F6285C2F0CF75041EC51B85E62DD544148E17A740BF75041713D0A4764DD5441F6285C9F0AF750416666662666DD5441A4703DFA08F750416666661666DD54413333336306F750417B14AED765DD544114AE47F104F75041C3F5280C66DD54416666663604F750417B14AED764DD5441666666A604F75041AE47E1BA63DD5441120000007B14AEE725F750415C8FC2955DDD5441D7A370BD26F750415C8FC2D55EDD5441F6285C6F28F75041B81E859B5FDD5441D7A370BD2AF750411F85EB9162DD54419A9999E92BF7504185EB516865DD5441B81E85FB2CF75041CDCCCCEC66DD5441295C8F422CF7504185EB513868DD5441D7A370AD2AF75041713D0AE768DD5441A4703D7A29F750417B14AE6768DD54418FC2F54828F750415C8FC27567DD5441000000C026F7504148E17A0465DD5441295C8F2225F7504114AE470164DD5441AE47E1CA22F750417B14AEF762DD544185EB515821F750413D0AD75361DD5441C3F528FC20F750411F85EB515FDD544148E17A5422F75041713D0AC75DDD54410000002024F750417B14AE375DDD54417B14AEE725F750415C8FC2955DDD54410B000000B81E85DBF0F650419A99992976DD5441000000F0EAF650418FC2F59873DD5441F6285C1FECF650415C8FC2D570DD5441AE47E15AF8F65041A4703DAA6EDD544166666646FEF650418FC2F5186CDD54411F85EB3104F75041295C8F126EDD544185EB516803F7504114AE470173DD544133333343FFF65041000000B07BDD544133333383FBF65041A4703D7A7CDD5441713D0AC7F6F65041713D0AB779DD5441B81E85DBF0F650419A99992976DD5441130000008FC2F5E810F75041CDCCCC6C60DD5441666666F610F750410AD7A3805FDD54416666668611F750415C8FC2F55EDD54410AD7A35012F75041000000B05EDD54413D0AD75314F75041713D0AD75EDD5441F6285CCF16F75041E17A14AE5EDD5441713D0AD718F75041666666065EDD544148E17AC41CF75041EC51B8CE5DDD54417B14AEA71DF75041295C8F325EDD54413D0AD7131EF7504148E17AF45FDD5441E17A14BE1EF75041F6285C5F61DD5441AE47E13A1EF75041713D0A0762DD5441295C8FD21CF75041CDCCCC4C61DD5441000000801BF750417B14AE6761DD54410AD7A3F018F750417B14AED760DD5441713D0A1716F750410000009060DD5441B81E85BB13F75041EC51B89E60DD5441C3F528CC11F750410AD7A3E060DD54418FC2F5E810F75041CDCCCC6C60DD5441
+</a>
+
+<b>
+010600000001000000010300000001000000120000008F67BA7D5CF75041BFA6088739DD54413D0AD70359F75041295C8FC238DD5441713D0A274FF750411F85EB0138DD5441666666C64EF7504152B81EC53BDD5441B1B30B144FF7504123A7CD853DDD54411A79AE2C4FF7504126F0DCAE3DDD5441F38836DF50F75041A032C2FA3FDD54416DDDD1DE51F75041A3FD366042DD5441201A5C1A52F750410519E70C44DD5441E90950A453F75041EB6B659744DD5441FF7CA69E66F75041C5CD33F343DD5441D467AF9E66F75041798033F343DD5441C851B89E66F75041343333F343DD5441A06610D365F750418185C09C41DD5441232A3B0F63F75041BC3EF1BF3CDD5441D672CDE762F750418ABF049C3CDD544126F4F7845FF750413CB8D87B3ADD54418F67BA7D5CF75041BFA6088739DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875670 - 418387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000008000000010300000001000000260000000000000051F85041AE47E1AA1CDD5441C3F528DC50F85041E17A14EE1BDD5441295C8F624CF8504148E17A141CDD5441D7A370DD45F850418FC2F5E820DD5441F6285CBF3FF8504148E17AB424DD5441C3F5286C39F85041D7A3708D27DD5441713D0A772CF850411F85EBD12CDD54419A9999192DF850415C8FC2E52EDD5441EC51B83E2EF85041E17A149E2EDD54415C8FC27530F850411F85EB312EDD5441C3F5285C34F85041333333832EDD5441F6285CFF36F85041A4703D5A2DDD54416666668637F85041333333232BDD5441333333F339F85041F6285CDF29DD5441295C8F323DF8504152B81EA52BDD5441E17A147E3EF85041EC51B8BE2BDD5441D7A3707D3FF85041C3F5281C2CDD544148E17AF43FF85041713D0AD72CDD54419A99994940F85041666666D62DDD544114AE475141F85041EC51B8EE2EDD544185EB517845F850418FC2F5B831DD544185EB516847F85041CDCCCC7C32DD5441B81E85DB48F850416666661632DD544114AE474149F85041EC51B88E31DD544114AE474149F85041EC51B87E30DD5441D7A370FD48F850418FC2F5082EDD5441E17A140E49F850413D0AD7A32CDD5441CDCCCC7C49F85041A4703DEA2ADD5441333333734AF8504148E17AF428DD5441EC51B83E4CF85041C3F5285C27DD5441333333234EF850415C8FC26526DD5441AE47E13A50F850411F85EBA125DD54419A99992950F8504152B81EF524DD5441D7A3705D50F850417B14AE7724DD5441F6285CDF50F850415C8FC21523DD5441A4703D6A51F85041B81E850B21DD54417B14AEE750F85041F6285C0F1FDD54410000000051F85041AE47E1AA1CDD544101030000000100000017000000C3F5286C62F750410AD7A31039DD5441295C8F126AF75041AE47E1CA34DD5441D7A3700D6BF750415C8FC2C535DD5441EC51B8DE6BF7504114AE47E138DD54413D0AD7036DF75041F6285C6F3ADD54418FC2F5186FF750411F85EB3139DD54418FC2F5786EF750410AD7A31036DD54418FC2F5786EF75041F6285C1F32DD54418FC2F5986EF75041E17A144E2EDD54418FC2F5686EF75041D7A3705D2CDD544148E17A846DF75041B81E85AB28DD5441A4703D5A6AF75041295C8F7229DD5441666666D667F75041CDCCCC9C2ADD54417B14AE3764F750419A9999492CDD5441333333735FF750417B14AE772EDD5441295C8F4255F7504148E17A0432DD54415C8FC2454BF750418FC2F54833DD5441C3F528DC45F75041E17A14AE33DD544114AE47414AF75041A4703DBA34DD54411F85EB614FF750410AD7A3A035DD544152B81E6558F75041C3F528EC36DD5441713D0A775DF75041666666B637DD5441C3F5286C62F750410AD7A31039DD54410103000000010000000B000000000000D05EF75041A4703D0A3ADD54413D0AD70359F75041295C8FC238DD5441713D0A274FF750411F85EB0138DD5441666666C64EF7504152B81EC53BDD54413D0AD7734FF75041F6285CAF3FDD5441666666E650F750410AD7A3A043DD544152B81EA553F750417B14AE9744DD5441EC51B89E66F75041333333F343DD54416666666665F75041D7A3705D40DD54413D0AD7E363F75041A4703D3A3DDD5441000000D05EF75041A4703D0A3ADD54410103000000010000001F000000295C8FF2D5F95041C3F5287C0EDD544148E17A14D9F950418FC2F5C80BDD544114AE4721DCF95041295C8FB209DD544152B81E25DDF95041000000E006DD544166666616DDF950413D0AD7D303DD5441295C8FA2DEF950419A9999B902DD5441333333C3DEF95041CDCCCC1C02DD5441C3F528ECDEF95041CDCCCC4C01DD5441F6285C4FDFF9504114AE47B100DD54413D0AD7C3DFF9504152B81E1500DD54411F85EB41E0F95041E17A147EFFDC5441EC51B85EE1F95041AE47E1FAFEDC5441295C8F12DCF95041CDCCCC5CF9DC544148E17A14D3F95041CDCCCC4CFBDC54413D0AD7E3D1F950415C8FC2B5FCDC544133333353D1F9504148E17A54FDDC54410AD7A3D0D1F95041C3F528FCFDDC544152B81EF5D2F9504114AE4701FFDC5441C3F528BCD3F9504152B81ED5FFDC5441A4703D2AD4F95041295C8FB200DD544185EB5158D4F950413333337301DD544148E17AA4D4F9504148E17A6403DD54415C8FC2B5D4F95041CDCCCC2C05DD544185EB51A8D4F950410000004006DD544185EB51A8D4F95041EC51B81E07DD5441B81E85ABD4F950413333332308DD5441295C8FA2D4F950413D0AD7C309DD54410AD7A3D0D4F9504152B81E150BDD54410AD7A310D5F95041713D0A570CDD5441713D0A57D5F95041AE47E18A0DDD5441295C8FF2D5F95041C3F5287C0EDD54410103000000010000003000000085EB5148D0F65041CDCCCC9C03DD5441CDCCCCFCCEF65041E17A143E03DD5441E17A143EB8F6504114AE47E1FDDC54415C8FC2A5B1F65041AE47E15AFBDC5441E17A149EAAF65041D7A3709DFBDC544185EB5108A8F650419A9999A9FBDC5441D7A370EDAAF650415C8FC245FDDC54413D0AD7E3B3F650411F85EB4102DD5441C3F528BCC2F65041E17A14FE0ADD5441B81E856BCBF650417B14AEE70EDD54415C8FC2B5CCF65041A4703D7A0FDD544114AE4751DCF65041295C8F7216DD5441666666C6D4F650410AD7A39020DD544166666606C5F650411F85EBE118DD544148E17A94BDF65041B81E851B14DD5441EC51B89EBAF650418FC2F52816DD5441D7A370CDB7F65041E17A145E1DDD544148E17A34C0F65041E17A146E23DD5441E17A147ED5F65041EC51B87E2ADD544185EB5108DDF650411F85EB412BDD544114AE4731E4F650410AD7A3E02BDD5441A4703D4AF9F65041E17A141E2CDD544114AE47E100F7504152B81EA52DDD5441295C8F2208F75041713D0A072FDD54416666666613F75041D7A3702D31DD5441666666D617F750416666667631DD54413333333318F750417B14AE1731DD54413333337320F75041EC51B83E2FDD54411F85EBE12AF75041E17A141E2CDD54419A99990931F7504152B81E852BDD5441EC51B81E39F750413D0AD7A32EDD5441AE47E14A3EF750419A9999992FDD54417B14AED73EF750415C8FC27516DD5441713D0A7739F75041713D0A2717DD54415C8FC2552EF7504152B81E9518DD5441333333D322F750413D0AD7C319DD5441C3F5286C1DF75041B81E853B1ADD544148E17A3418F75041713D0AA719DD5441F6285C8F12F75041AE47E1BA19DD544114AE47710CF7504148E17AE417DD5441B81E850B05F750419A99996916DD5441713D0A57FDF65041E17A141E15DD5441CDCCCC2CEFF65041EC51B85E0EDD5441A4703DFAEEF65041713D0A470EDD54410AD7A350EDF650419A9999790DDD54410AD7A360E4F65041713D0AB709DD5441A4703D2ADDF6504114AE47E106DD544185EB5148D0F65041CDCCCC9C03DD54410103000000010000000F000000F6285C0F4CF85041C3F5280C1BDD5441000000C04BF8504114AE47111ADD5441AE47E1AA4BF85041666666E619DD5441CDCCCC5C4BF85041AE47E14A19DD5441B81E85CB41F85041A4703D3A1DDD54413D0AD7F33BF85041A4703D9A1EDD544148E17A7436F85041A4703DFA1FDD54418FC2F5F82FF850411F85EBA122DD5441AE47E10A31F8504148E17A3426DD5441A4703D3A31F850411F85EBD126DD54413333330332F850411F85EB7129DD5441A4703DCA38F85041F6285C7F26DD54419A9999893FF85041713D0AA723DD5441D7A370DD45F85041A4703D8A1FDD5441F6285C0F4CF85041C3F5280C1BDD54410103000000010000005B000000A4703DFAE2F6504148E17A7455DD54418FC2F5C8E1F650419A9999C952DD5441000000C0E0F65041EC51B8EE50DD5441AE47E1DADEF65041CDCCCC0C4FDD544148E17AA4DDF65041713D0AD74DDD544152B81ED5DCF650410AD7A3304CDD544152B81E65D9F65041E17A142E4EDD54413D0AD7A3D1F650418FC2F57847DD54410AD7A330CAF650411F85EB9143DD54411F85EB81C0F650417B14AEF73BDD5441666666A6BCF650416666662638DD544114AE47D1B8F65041F6285C8F31DD5441A4703DAAB1F65041295C8F9230DD544152B81EA5AAF65041AE47E16A31DD544133333333ABF650410AD7A3E032DD5441D7A3703DABF650415C8FC20534DD54411F85EBA1AAF65041E17A141E35DD544185EB5198AAF65041A4703D1A36DD54417B14AE97AAF65041295C8F3236DD544152B81E05ABF65041EC51B85E38DD544166666636ACF65041295C8FD23ADD5441C3F5286CACF6504114AE47713DDD54415C8FC2D5ABF650415C8FC2453FDD544152B81EC5ADF65041EC51B89E40DD5441F6285C9FB0F65041A4703D5A41DD5441B81E85DBB4F650417B14AE7740DD5441F6285C2FB6F65041713D0A5740DD5441D7A370ADB7F650416666663641DD544148E17A04B9F65041295C8F9242DD5441C3F5286CB9F65041C3F5283C44DD5441CDCCCC1CB9F650413D0AD7D345DD544114AE4701B8F65041CDCCCCFC46DD54413D0AD733B8F65041A4703D6A48DD5441E17A140EB9F650410AD7A3304ADD54410AD7A300B9F65041713D0A174CDD54418FC2F5F8B8F65041CDCCCC3C4DDD544185EB5198B8F650417B14AED74EDD5441AE47E13AB3F650415C8FC26553DD5441E17A14DEB2F65041AE47E13A54DD544114AE47B1B3F65041713D0A2755DD54413D0AD793B7F6504114AE470156DD5441000000C0B9F6504185EB513856DD5441B81E85EBB9F65041C3F5285C54DD54419A9999B9BBF650411F85EB2154DD54410AD7A370BDF65041713D0AE754DD5441A4703D1AC5F6504185EB51A852DD544100000060C9F6504114AE47B14EDD54417B14AE37CBF6504148E17AB44DDD5441A4703DBACCF65041B81E85AB4DDD544185EB5108CEF650418FC2F5184EDD5441EC51B8BECFF650419A9999D94FDD5441666666A6D1F6504114AE473154DD544152B81E35D2F65041E17A148E55DD5441C3F528ECD1F65041F6285CFF56DD544100000050D1F650413D0AD71359DD54410AD7A340D1F650411F85EB315ADD544133333353D1F65041F6285CEF5BDD5441CDCCCC5CD1F65041E17A14AE5CDD544148E17A64D1F650411F85EB415DDD5441EC51B85ED1F65041D7A370AD5EDD5441F6285C2FD0F650418FC2F5C862DD544133333313D0F650413D0AD71364DD5441A4703D1AD1F65041713D0A1765DD5441E17A146ED2F650419A9999C965DD5441000000A0D4F650413333338366DD5441D7A3704DD6F6504152B81ED565DD5441AE47E15AD8F6504148E17A4463DD5441C3F5287CD9F65041EC51B82E61DD54417B14AE77D9F650415C8FC21560DD5441F6285CAFD9F65041C3F5284C5FDD54413D0AD763DAF65041CDCCCCCC5EDD544133333373DBF650415C8FC2855EDD544114AE4771DCF65041713D0A775DDD54417B14AE47DEF65041F6285CCF5CDD544133333313E0F6504114AE47315CDD5441F6285CDFE0F65041D7A370FD5BDD5441B81E850BE2F65041333333235DDD544100000020E3F65041333333835DDD5441C3F5280CE4F65041E17A143E5DDD54417B14AE97E5F65041000000D05CDD5441AE47E17AE7F6504185EB51285CDD54417B14AE77EAF650410000005059DD5441E17A147EEAF650419A99994959DD544114AE47C1EBF6504152B81E9558DD5441CDCCCC2CECF6504185EB51A857DD54419A9999D9EBF650413D0AD72357DD54413D0AD7A3EAF6504152B81EB556DD5441AE47E1AAE8F650410000007057DD54415C8FC205E7F650411F85EB5157DD544185EB5158E4F65041D7A3706D56DD5441A4703DFAE2F6504148E17A7455DD5441010300000005000000900000000000000000F750413333330386DD54415C8FC2D50BF750415C8FC2E56ADD5441333333A31FF750418FC2F5F871DD54410AD7A3905CF75041333333037CDD54416666663676F75041CDCCCC3C84DD5441D7A3703D88F75041B81E852B85DD5441CDCCCC2C8DF75041713D0A3784DD5441CDCCCC2C8DF75041E17A149E7BDD5441B81E85CB8DF7504148E17A1479DD544148E17AE48DF75041E17A14AE78DD54417B14AE678EF75041D7A3709D77DD544152B81ED58DF75041666666F677DD5441D7A370BD8BF75041EC51B8AE78DD5441C3F528CC89F75041713D0A3779DD5441B81E85DB87F750413D0AD75378DD54417B14AEC785F75041CDCCCC9C77DD5441E17A142E85F750415C8FC2D577DD5441EC51B8BE84F75041295C8F3279DD5441A4703D9A82F7504185EB51387DDD54419A9999C980F7504152B81EA57EDD5441B81E85DB7EF750419A99990980DD54413D0AD7837DF750411F85EB9180DD5441333333937CF75041CDCCCC0C80DD5441B81E857B7BF750411F85EB717FDD5441713D0AE779F75041333333A37DDD54410000000079F75041C3F528BC7ADD54413333336379F75041D7A370DD76DD5441713D0AC77AF750419A99993974DD54411F85EBC17AF750419A99996973DD5441A4703D7A79F75041F6285CBF72DD54413D0AD76376F750417B14AED770DD5441CDCCCC8C75F750413333335370DD5441F6285C6F72F75041B81E85CB6DDD5441EC51B84E6FF75041D7A3708D6ADD5441000000306DF750416666660666DD5441EC51B80E6BF75041EC51B89E63DD5441D7A3707D69F75041713D0A3763DD5441A4703DFA66F750419A99994962DD5441E17A141E66F75041E17A146E60DD5441F6285C3F66F75041000000305FDD544114AE47D167F750411F85EBB15BDD5441EC51B8EE66F7504148E17A545ADD5441295C8F5264F7504148E17AA459DD5441A4703D3A62F750415C8FC2B558DD544185EB511860F75041C3F5280C56DD5441E17A14AE5DF75041666666F654DD544148E17AB45BF75041713D0AE754DD54419A9999B959F750415C8FC29555DD5441AE47E18A53F75041D7A3705D57DD54417B14AE4751F75041713D0AF756DD544148E17AB44FF75041EC51B80E56DD5441A4703D6A48F750411F85EBA156DD5441C3F5284C45F75041EC51B8FE5BDD544114AE47E147F75041000000B05DDD5441F6285CAF48F750419A9999195FDD5441D7A3706D47F7504148E17A5462DD5441E17A142E46F750415C8FC28563DD5441B81E850B45F750410AD7A30063DD54411F85EB2141F75041E17A14BE62DD5441B81E85EB3CF750415C8FC23563DD544148E17AB439F750411F85EBB163DD5441295C8FC237F7504114AE470164DD5441713D0AE735F750419A99992963DD5441666666D633F75041F6285CFF61DD5441295C8FE232F750418FC2F50861DD5441D7A370CD32F750419A9999795FDD544152B81ED534F75041666666B65CDD5441A4703DFA34F75041F6285CAF5BDD54417B14AE4734F75041EC51B8CE5ADD54419A99991933F750417B14AE075ADD5441C3F5281C31F75041295C8F8259DD5441333333F32DF7504114AE475158DD5441EC51B82E2CF75041333333C357DD54411F85EB012AF75041CDCCCC7C58DD5441D7A370CD24F7504152B81E2559DD5441D7A370CD1EF75041AE47E1FA59DD5441D7A3707D1BF7504152B81EF559DD5441EC51B8EE15F750415C8FC23558DD544185EB516813F75041D7A370DD58DD544148E17AA40FF750415C8FC25559DD5441C3F528BC0AF7504152B81E2559DD5441E17A14EE07F7504114AE478158DD54416666660605F7504114AE47B156DD54415C8FC2F500F750413D0AD71353DD5441000000A0FEF65041000000F04FDD5441666666C6FDF6504152B81ED54EDD54410AD7A300FDF65041C3F5283C4EDD544100000090FCF650410AD7A3604EDD544148E17A14FCF650418FC2F5884EDD5441CDCCCC6CFBF650415C8FC2354FDD54417B14AE77F9F650417B14AED751DD54418FC2F5F8F7F6504114AE473153DD544185EB5118F6F65041333333B353DD5441AE47E13AEFF6504114AE47F157DD54410AD7A3B0EEF650410AD7A34059DD54418FC2F5C8EDF6504148E17AF459DD544185EB51B8EBF6504185EB51585BDD54417B14AE07EAF650419A9999B95DDD5441C3F528BCE7F65041E17A14EE5EDD5441C3F5286CE3F650410000002060DD5441C3F5284CE1F650417B14AE3760DD5441A4703DBAE0F6504152B81E055FDD5441713D0A57DFF65041713D0A875FDD544152B81E05DDF650411F85EBC161DD54410AD7A3B0DBF6504148E17AC463DD5441000000E0DAF650413333332365DD5441F6285C5FD9F65041AE47E16A67DD5441B81E850BD6F650415C8FC27569DD5441713D0A27D4F65041A4703DBA69DD5441713D0A17D0F65041295C8F1268DD544100000040CEF65041295C8F8266DD5441A4703DBACDF65041666666C665DD544133333323CDF65041A4703D3A64DD544133333343CDF65041000000F060DD544166666636CEF65041333333935CDD5441000000C0CEF65041C3F5282C57DD5441333333B3CCF65041F6285C0F51DD5441713D0AE7CBF650419A99999950DD5441713D0A07CBF6504152B81EC551DD5441F6285C0FC9F65041333333B353DD5441EC51B8DEC5F65041D7A370BD55DD5441EC51B8AEBFF65041E17A14AE57DD544185EB5168BBF65041F6285CEF58DD54418FC2F5A8B3F65041A4703D1A5ADD54413D0AD7F3AFF65041A4703D1A5ADD5441CDCCCCFCADF65041333333935BDD54417B14AED7AFF65041E17A141E62DD5441000000C0B1F65041CDCCCCFC68DD5441F6285C7FB0F650411F85EBB16CDD5441295C8F42B1F650411F85EB2170DD54419A9999C9AEF65041333333F371DD544185EB5108B8F65041D7A3704D74DD544148E17A94BBF650413333333375DD5441713D0AC7D0F6504152B81E0577DD544114AE47B1D9F65041E17A142E78DD5441713D0A27DEF65041C3F528CC78DD54417B14AE27DFF65041000000F078DD54411F85EBE1E4F65041333333037ADD5441F6285CEFE9F6504114AE47817BDD5441F6285CCFEFF65041713D0AD77DDD54411F85EB81F0F65041E17A141E7EDD5441E17A14CEF6F65041B81E851B81DD5441AE47E1BAFDF6504185EB515885DD54410000000000F750413333330386DD54410F000000666666A604F75041AE47E1BA63DD544152B81E2505F75041CDCCCC6C61DD54411F85EB9109F750410AD7A35060DD544114AE47A10BF750417B14AED75EDD5441D7A3702D0DF75041D7A3703D5EDD5441A4703DDA0DF750418FC2F5C85EDD5441E17A14BE0DF75041F6285C2F60DD5441F6285C2F0CF75041EC51B85E62DD544148E17A740BF75041713D0A4764DD5441F6285C9F0AF750416666662666DD5441A4703DFA08F750416666661666DD54413333336306F750417B14AED765DD544114AE47F104F75041C3F5280C66DD54416666663604F750417B14AED764DD5441666666A604F75041AE47E1BA63DD5441120000007B14AEE725F750415C8FC2955DDD5441D7A370BD26F750415C8FC2D55EDD5441F6285C6F28F75041B81E859B5FDD5441D7A370BD2AF750411F85EB9162DD54419A9999E92BF7504185EB516865DD5441B81E85FB2CF75041CDCCCCEC66DD5441295C8F422CF7504185EB513868DD5441D7A370AD2AF75041713D0AE768DD5441A4703D7A29F750417B14AE6768DD54418FC2F54828F750415C8FC27567DD5441000000C026F7504148E17A0465DD5441295C8F2225F7504114AE470164DD5441AE47E1CA22F750417B14AEF762DD544185EB515821F750413D0AD75361DD5441C3F528FC20F750411F85EB515FDD544148E17A5422F75041713D0AC75DDD54410000002024F750417B14AE375DDD54417B14AEE725F750415C8FC2955DDD54410B000000B81E85DBF0F650419A99992976DD5441000000F0EAF650418FC2F59873DD5441F6285C1FECF650415C8FC2D570DD5441AE47E15AF8F65041A4703DAA6EDD544166666646FEF650418FC2F5186CDD54411F85EB3104F75041295C8F126EDD544185EB516803F7504114AE470173DD544133333343FFF65041000000B07BDD544133333383FBF65041A4703D7A7CDD5441713D0AC7F6F65041713D0AB779DD5441B81E85DBF0F650419A99992976DD5441130000008FC2F5E810F75041CDCCCC6C60DD5441666666F610F750410AD7A3805FDD54416666668611F750415C8FC2F55EDD54410AD7A35012F75041000000B05EDD54413D0AD75314F75041713D0AD75EDD5441F6285CCF16F75041E17A14AE5EDD5441713D0AD718F75041666666065EDD544148E17AC41CF75041EC51B8CE5DDD54417B14AEA71DF75041295C8F325EDD54413D0AD7131EF7504148E17AF45FDD5441E17A14BE1EF75041F6285C5F61DD5441AE47E13A1EF75041713D0A0762DD5441295C8FD21CF75041CDCCCC4C61DD5441000000801BF750417B14AE6761DD54410AD7A3F018F750417B14AED760DD5441713D0A1716F750410000009060DD5441B81E85BB13F75041EC51B89E60DD5441C3F528CC11F750410AD7A3E060DD54418FC2F5E810F75041CDCCCC6C60DD5441
+</a>
+
+<b>
+010600000001000000010300000001000000120000008F67BA7D5CF75041BFA6088739DD54413D0AD70359F75041295C8FC238DD5441713D0A274FF750411F85EB0138DD5441666666C64EF7504152B81EC53BDD5441B1B30B144FF7504123A7CD853DDD54411A79AE2C4FF7504126F0DCAE3DDD5441F38836DF50F75041A032C2FA3FDD54416DDDD1DE51F75041A3FD366042DD5441201A5C1A52F750410519E70C44DD5441E90950A453F75041EB6B659744DD5441FF7CA69E66F75041C5CD33F343DD5441D467AF9E66F75041798033F343DD5441C851B89E66F75041343333F343DD5441A06610D365F750418185C09C41DD5441232A3B0F63F75041BC3EF1BF3CDD5441D672CDE762F750418ABF049C3CDD544126F4F7845FF750413CB8D87B3ADD54418F67BA7D5CF75041BFA6088739DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979017 - 254458
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A9588C0E80A650417B3C84FB1D03554172F5275A80A650414FFAEB2D1E0355413BBF6E8381A650414E77C1841E035541D70C383688A6504194AAA7D31E03554115AADBE99AA65041EE84F0AF1F0355419A999919A9A65041713D0A5720035541D048A33CA9A650415DF11CD31D035541C71939ABAAA650417CFF5169030355414F812345A5A65041C4A3FF010303554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F020355411B74782A8CA65041797B8AD700035541E0BBF0C27FA65041CCAD182BFF025541389CDCCE7CA65041EDEFB0F8FE02554128296EA07BA65041CCAD182BFF025541B61003F07AA650417F29E88FFF0255413AF8973F7AA65041381826230103554119B6FF717AA65041C4A3FF0103035541A1EF36097BA650416615B63D07035541E7C509EC7BA65041B68FCDAF0A0355418972AFB17DA6504136BFEB1D0F0355416EA385127FA65041B29C674412035541D59A24DC7FA650414E9BAF5115035541A9588C0E80A65041102E327419035541A9588C0E80A650417B3C84FB1D035541
+</a>
+
+<b>
+010600000001000000010300000001000000230000006EA385127FA65041B29C674412035541F829988D7FA65041FD654F2114035541FB376DA1A9A65041DB3A0790160355417DFA94DEA9A650411142FF27120355413BE9BC29AAA65041BDF6B7BD0C035541950A0E96AAA650411172C6EF04035541C71939ABAAA650417CFF516903035541C6322280A1A650414C7263BB0203554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F02035541350B205390A650417DA9E44F010355411B74782A8CA65041797B8AD7000355417AB8086880A650417BF65E41FF0255411C7D1FA47FA65041AEBA0A29FF025541A063D4D47EA650412CEC381BFF0255417F20A9F87CA65041144E7AFBFE025541665EABC67CA650413B7A0EFAFE025541C2EF589F7BA65041BD17B72BFF025541B61003F07AA650417F29E88FFF025541C32263D77AA65041CB2431C8FF0255413AF8973F7AA6504138182623010355417603464D7AA65041E5821BA501035541B4D1185C7AA650411A2AEE31020355410277718A7AA650419CDF2EB103035541EB13B4FC7AA6504121440CE4060355411DF9A2857BA65041EA1D932109035541F710A1D37BA65041EF08E1500A0355418E532A237CA65041D6F19E390B0355411947A7357DA65041A352D7E70D0355412EE325A47DA65041D3D813FC0E035541C187B0CC7DA650414914A55B0F035541E1639A857EA65041DCE64D02110355413AA57CBE7EA65041860DAF7F1103554131EE8BE17EA6504170FE75D4110355416EA385127FA65041B29C674412035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979017 - 285869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A9588C0E80A650417B3C84FB1D03554172F5275A80A650414FFAEB2D1E0355413BBF6E8381A650414E77C1841E035541D70C383688A6504194AAA7D31E03554115AADBE99AA65041EE84F0AF1F0355419A999919A9A65041713D0A5720035541D048A33CA9A650415DF11CD31D035541C71939ABAAA650417CFF5169030355414F812345A5A65041C4A3FF010303554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F020355411B74782A8CA65041797B8AD700035541E0BBF0C27FA65041CCAD182BFF025541389CDCCE7CA65041EDEFB0F8FE02554128296EA07BA65041CCAD182BFF025541B61003F07AA650417F29E88FFF0255413AF8973F7AA65041381826230103554119B6FF717AA65041C4A3FF0103035541A1EF36097BA650416615B63D07035541E7C509EC7BA65041B68FCDAF0A0355418972AFB17DA6504136BFEB1D0F0355416EA385127FA65041B29C674412035541D59A24DC7FA650414E9BAF5115035541A9588C0E80A65041102E327419035541A9588C0E80A650417B3C84FB1D035541
+</a>
+
+<b>
+010600000001000000010300000001000000230000006EA385127FA65041B29C674412035541F829988D7FA65041FD654F2114035541FB376DA1A9A65041DB3A0790160355417DFA94DEA9A650411142FF27120355413BE9BC29AAA65041BDF6B7BD0C035541950A0E96AAA650411172C6EF04035541C71939ABAAA650417CFF516903035541C6322280A1A650414C7263BB0203554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F02035541350B205390A650417DA9E44F010355411B74782A8CA65041797B8AD7000355417AB8086880A650417BF65E41FF0255411C7D1FA47FA65041AEBA0A29FF025541A063D4D47EA650412CEC381BFF0255417F20A9F87CA65041144E7AFBFE025541665EABC67CA650413B7A0EFAFE025541C2EF589F7BA65041BD17B72BFF025541B61003F07AA650417F29E88FFF025541C32263D77AA65041CB2431C8FF0255413AF8973F7AA6504138182623010355417603464D7AA65041E5821BA501035541B4D1185C7AA650411A2AEE31020355410277718A7AA650419CDF2EB103035541EB13B4FC7AA6504121440CE4060355411DF9A2857BA65041EA1D932109035541F710A1D37BA65041EF08E1500A0355418E532A237CA65041D6F19E390B0355411947A7357DA65041A352D7E70D0355412EE325A47DA65041D3D813FC0E035541C187B0CC7DA650414914A55B0F035541E1639A857EA65041DCE64D02110355413AA57CBE7EA65041860DAF7F1103554131EE8BE17EA6504170FE75D4110355416EA385127FA65041B29C674412035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290910 - 58732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285CBF16BB504185EB5198ABD25441B81E85EB19BB5041CDCCCC5CCCD254413D0AD7F324BB50413D0AD7B3CAD25441B81E85DB2ABB50415C8FC295C9D25441EC51B8DE2ABB5041EC51B82EAFD25441713D0A771FBB504133333323ADD25441F6285CBF16BB504185EB5198ABD25441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000742D85DB2ABB5041E0FE4895C9D2544153A5D9DD2ABB5041FDC6F45BB6D25441B57936DE2ABB50410034AC2FAFD254413E9F60BF16BB5041B4018098ABD25441B81E85EB19BB5041CDCCCC5CCCD254413D0AD7F324BB50413D0AD7B3CAD254416225340A25BB504193959BAFCAD25441742D85DB2ABB5041E0FE4895C9D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879926 - 3128081
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000100000004EBC38F1FC22514164A40317FF935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE935441927A2455BC225141AA5390A2D9935441E17A146EBD2251418FC2F5C8DA935441C3F5282CC3225141B81E859BE1935441CDCCCC0CC8225141C3F5280CE8935441CDCCCC4CCB22514185EB5188ED9354410AD7A370CD22514185EB5188F2935441AE47E12ACF2251417B14AEA7F8935441CDCCCCBCCF2251411F85EB210094544152B81E85CF225141666666A6039454415C8FC295D0225141C3F5281C059454411F85EB71D3225141295C8FA206945441CDCCCC4CF422514148E17A640F9454414EBC38F1FC22514164A40317FF935441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000093165164D72251412C2BFC82EE935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE9354418D62107CBC225141809159CBD993544182A44E7EC2225141F26FF8CCE09354410E71C522C4225141F8FF21E1E2935441DD222386C722514156B55B5AE79354418B65C5A8CA225141015A7D73EC935441DDCF3B8CCC2251413608A972F09354415636DF5BCE225141D2BD03CAF59354419429DE49CF225141C3F8303EFA93544184CE5D85CF225141C2226AA203945441AE34C8A1D122514151E812AB05945441A908FFCCD4225141F7BA12FF069454413DBD8738F4225141282441770F94544144D41CF1FC2251415C52F716FF935441A5A176FFF2225141067F14B3FA93544193165164D72251412C2BFC82EE935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879926 - 3511321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000100000004EBC38F1FC22514164A40317FF935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE935441927A2455BC225141AA5390A2D9935441E17A146EBD2251418FC2F5C8DA935441C3F5282CC3225141B81E859BE1935441CDCCCC0CC8225141C3F5280CE8935441CDCCCC4CCB22514185EB5188ED9354410AD7A370CD22514185EB5188F2935441AE47E12ACF2251417B14AEA7F8935441CDCCCCBCCF2251411F85EB210094544152B81E85CF225141666666A6039454415C8FC295D0225141C3F5281C059454411F85EB71D3225141295C8FA206945441CDCCCC4CF422514148E17A640F9454414EBC38F1FC22514164A40317FF935441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000093165164D72251412C2BFC82EE935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE9354418D62107CBC225141809159CBD993544182A44E7EC2225141F26FF8CCE09354410E71C522C4225141F8FF21E1E2935441DD222386C722514156B55B5AE79354418B65C5A8CA225141015A7D73EC935441DDCF3B8CCC2251413608A972F09354415636DF5BCE225141D2BD03CAF59354419429DE49CF225141C3F8303EFA93544184CE5D85CF225141C2226AA203945441AE34C8A1D122514151E812AB05945441A908FFCCD4225141F7BA12FF069454413DBD8738F4225141282441770F94544144D41CF1FC2251415C52F716FF935441A5A176FFF2225141067F14B3FA93544193165164D72251412C2BFC82EE935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>906679 - 4302890
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000180000000000001023CA5041AE47E1DACB37554152B81E6519CA50417B14AED7CE375541CDCCCC9C11CA50410AD7A350D337554152B81E9510CA504100000050DA37554114AE47510ACA504185EB5178E7375541CDCCCC6C05CA50410AD7A390F9375541A4703DFA05CA504152B81ED50E385541CDCCCC1C28CA5041A4703D1A18385541D7A3707D46CA50410AD7A39020385541295C8FB249CA5041E17A142E17385541CDCCCC8C4CCA5041A4703D6A1138554152B81E0550CA5041333333B30B3855416666664654CA50411F85EBF1043855413333338357CA50417B14AE37FF375541CDCCCC8C5BCA5041F6285C0FF43755419A9999C95ECA5041B81E85EBE9375541F6285C3F61CA5041333333B3E137554148E17A4467CA5041C3F5287CCF375541295C8FD269CA50411F85EB81C73755413D0AD7E357CA5041E17A14EEC53755410000005051CA5041EC51B8DEC53755410000000049CA5041EC51B83EC63755413333332336CA5041EC51B8DEC93755410000001023CA5041AE47E1DACB375541
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A8E88DA25CCA504180DAEF58C637554183C0CAC950CA5041BC749330C6375541EC51B8E648CA50419A9999A1C63755419318047642CA504183C0CA69C7375541A4703D923CCA504117D9CE7FC9375541CDCCCC9C36CA50419A999959CA3755411F85EB792DCA5041DD2406B1CA375541B318E88527CA504196D72A29CB3755410000001023CA5041AE47E1DACB375541B2BB73DD1FCA504168AC4978CC375541011DE5861CCA5041AA566284CD37554170D362B619CA50413316FEB1CE375541D34D625017CA5041986E120BD03755415839B47815CA5041DBF97E6AD1375541B072681913CA50410E2DB22DD4375541F6285C1F0ECA5041759318E4E2375541F4FDD4300CCA5041C3F5289CE73755416DE7FB3909CA50417B14AEEFEF375541D366853807CA504125FDC277FA375541C520B0B206CA5041560E2D420D385541295C8FC206CA5041894160ED0D3855411D5A642B0ACA5041BE9F1AA70E385541C74B378923CA5041A4703DB2153855419D0DED5B2BCA5041AB3F810418385541FBBC210133CA50419FA7AD1B1A38554183C0CAF143CA5041F6285C071E385541AAF1D29D45CA5041A8C64B6F1E385541B6F3FD944ACA5041E3A59B2413385541F4FDD46055CA5041FED478F9013855415167B93D5BCA5041FFE5793FF3375541D8F20C6D60CA5041D3A2A94FE2375541E2C5976D66CA5041B25D1943D0375541A245B62B69CA5041A8C64B7FC737554165AE8F1A67CA5041D79FB144C7375541A8E88DA25CCA504180DAEF58C6375541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644083 - 3133413
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FD042DD936F6504191A77EAE18C154417240B4103AF65041D7737EDE1AC15441BCC14AF73AF650416A76ABAB1CC1544199450EAB3DF6504180D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441B88DFA1B70F65041F059145522C154413407365878F65041F059145522C154414A64AE8079F650414CAF05161EC1544154FA54566FF6504194FF707F09C1544158AFEB0C6EF6504198B4073608C15441F51B46476DF650410DF08E6D0BC1544179CE83735DF650414114AD2B0BC15441FB28CFCE5CF650410CC4150513C15441577EC08F58F6504126D624E412C15441EC35841359F650418A9543120CC15441CDE5C02F54F65041D9CB70AF0BC15441352EFDAB53F650410CC4150513C15441F061FD7B51F6504126D624E412C154416D07B22052F65041D9CB70AF0BC15441E36EB2C04DF6504127029E4C0BC154417DDB0CFB4CF650415AFA42A212C1544151211CAA4AF650410CC4150513C154413A0F0DCB4AF6504127029E4C0BC15441C6D3859347F6504127029E4C0BC154412E1CC20F47F650410CC4150513C1544168AA0D3B44F650415AFA42A212C154411A74E09D44F6504127029E4C0BC154412305D55E1DF650414114AD2B0BC154410000000031F65041333333C312C15441C3F528BC35F650410AD7A3B013C154418FC2F5D835F650411F85EB5115C15441
+</a>
+
+<b>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FC042DD936F6504190A77EAE18C154416F40B4103AF65041D9737EDE1AC15441BAC14AF73AF650416676ABAB1CC154419E450EAB3DF6504184D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441BB8DFA1B70F65041F459145522C154413907365878F65041F459145522C154414C64AE8079F650414CAF05161EC1544158FA54566FF6504192FF707F09C154415BAFEB0C6EF6504195B4073608C15441F91B46476DF6504108F08E6D0BC1544176CE83735DF650414014AD2B0BC15441FD28CFCE5CF650410DC4150513C15441557EC08F58F6504123D624E412C15441F035841359F650418C9543120CC15441CEE5C02F54F65041DBCB70AF0BC15441342EFDAB53F650410DC4150513C15441EB61FD7B51F6504123D624E412C154416F07B22052F65041DBCB70AF0BC15441E86EB2C04DF6504129029E4C0BC154417BDB0CFB4CF650415BFA42A212C1544154211CAA4AF650410DC4150513C154413D0F0DCB4AF6504129029E4C0BC15441CAD3859347F6504129029E4C0BC154412F1CC20F47F650410DC4150513C154416DAA0D3B44F650415BFA42A212C154411F74E09D44F6504129029E4C0BC154412005D55E1DF650414014AD2B0BC154410000000031F65041333333C312C15441C3F528BC35F650410AD7A3B013C154418FC2F5D835F650411F85EB5115C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644083 - 3513135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FD042DD936F6504191A77EAE18C154417240B4103AF65041D7737EDE1AC15441BCC14AF73AF650416A76ABAB1CC1544199450EAB3DF6504180D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441B88DFA1B70F65041F059145522C154413407365878F65041F059145522C154414A64AE8079F650414CAF05161EC1544154FA54566FF6504194FF707F09C1544158AFEB0C6EF6504198B4073608C15441F51B46476DF650410DF08E6D0BC1544179CE83735DF650414114AD2B0BC15441FB28CFCE5CF650410CC4150513C15441577EC08F58F6504126D624E412C15441EC35841359F650418A9543120CC15441CDE5C02F54F65041D9CB70AF0BC15441352EFDAB53F650410CC4150513C15441F061FD7B51F6504126D624E412C154416D07B22052F65041D9CB70AF0BC15441E36EB2C04DF6504127029E4C0BC154417DDB0CFB4CF650415AFA42A212C1544151211CAA4AF650410CC4150513C154413A0F0DCB4AF6504127029E4C0BC15441C6D3859347F6504127029E4C0BC154412E1CC20F47F650410CC4150513C1544168AA0D3B44F650415AFA42A212C154411A74E09D44F6504127029E4C0BC154412305D55E1DF650414114AD2B0BC154410000000031F65041333333C312C15441C3F528BC35F650410AD7A3B013C154418FC2F5D835F650411F85EB5115C15441
+</a>
+
+<b>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FC042DD936F6504190A77EAE18C154416F40B4103AF65041D9737EDE1AC15441BAC14AF73AF650416676ABAB1CC154419E450EAB3DF6504184D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441BB8DFA1B70F65041F459145522C154413907365878F65041F459145522C154414C64AE8079F650414CAF05161EC1544158FA54566FF6504192FF707F09C154415BAFEB0C6EF6504195B4073608C15441F91B46476DF6504108F08E6D0BC1544176CE83735DF650414014AD2B0BC15441FD28CFCE5CF650410DC4150513C15441557EC08F58F6504123D624E412C15441F035841359F650418C9543120CC15441CEE5C02F54F65041DBCB70AF0BC15441342EFDAB53F650410DC4150513C15441EB61FD7B51F6504123D624E412C154416F07B22052F65041DBCB70AF0BC15441E86EB2C04DF6504129029E4C0BC154417BDB0CFB4CF650415BFA42A212C1544154211CAA4AF650410DC4150513C154413D0F0DCB4AF6504129029E4C0BC15441CAD3859347F6504129029E4C0BC154412F1CC20F47F650410DC4150513C154416DAA0D3B44F650415BFA42A212C154411F74E09D44F6504129029E4C0BC154412005D55E1DF650414014AD2B0BC154410000000031F65041333333C312C15441C3F528BC35F650410AD7A3B013C154418FC2F5D835F650411F85EB5115C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876984 - 121241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000C6D6E97DE0D85041DD485DF0D0CA544157C77278E0D85041F6775F0CD1CA544107030E69E0D850413A6F4CA2D3CA5441FF4C0140E0D8504189212979DCCA54417A70AF4CD2D85041F22C4608DCCA5441699F7AE8C3D85041D80A208DDBCA5441CB25CD78BCD850418C352840DBCA54413C1A5483A1D8504190EEA0F2D9CA5441CB332079A1D8504190EEA0F2D9CA54418FC2F578A1D8504152B81EF5D9CA5441EC51B81EA1D85041CDCCCC3CDFCA5441D7A3709DA8D850417B14AE27DFCA5441AE47E19AB0D850419A999969DFCA5441CDCCCCDCBBD8504133333353E0CA5441AE47E1AABBD85041B81E85DBE1CA54413D0AD753D7D850417B14AE87E1CA54418FC2F5E8E2D85041B81E85EBE2CA54413D0AD773E1D85041000000C0DCCA5441C6D6E97DE0D85041DD485DF0D0CA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000009A7C9467E0D85041C58097F3D3CA5441FC4C0140E0D850418C212979DCCA5441C8ED763FE0D85041D6C12479DCCA54416B08733FE0D85041372E0C7ADCCA54418F45A819DAD85041D0946547DCCA54417B70AF4CD2D85041F62C4608DCCA54411C012636C6D850419EE7D5A0DBCA54416B46E941C3D8504194780A88DBCA5441F6FB72B6C1D850416BCE6676DBCA5441CE25CD78BCD8504189352840DBCA5441E3278259ABD850418B37536CDACA54415F575B79A1D85041F449B2F4D9CA54416429C871A1D85041E198A360DACA544102614866A1D8504165B4E10CDBCA5441B8D43B63A1D8504137518D3ADBCA5441A8327124A1D85041F5C5D63ADFCA54414F72C99AA5D85041D2AF2930DFCA5441D7A3709DA8D850417B14AE27DFCA5441EF97A8E5A8D85041E2E7012ADFCA5441C34BACFCA8D85041FF24DB29DFCA54415B8861B6A9D8504158EEBB30DFCA544108C925CDACD85041C300384ADFCA5441FD81F4A1B0D8504150D84B65DFCA5441CAD027A7B6D85041830FABE4DFCA5441DB315660BBD85041AD821C49E0CA5441CDCCCCDCBBD8504133333353E0CA5441D3533DBCBBD850412B771753E1CA54413CB19CADBBD85041B21BAAD9E1CA54413551973BC1D8504199B0A6CAE1CA54413D0AD753D7D850417B14AE87E1CA54414C009D60D7D85041E6803689E1CA54419051F770D7D8504119DFFE88E1CA5441ED5B3347DAD85041806D54E2E1CA54412809CD98E0D8504129AF74A4E2CA544142B51C2BE2D85041F992BCD4E2CA5441AB1B37E5E2D85041D21212EBE2CA5441E4141B84E2D850413A869340E1CA5441C34CF67DE1D85041C184D9EADCCA5441B1592471E1D8504103B2FABDDCCA54410E7FD12DE1D8504121BD1763D9CA5441EEC669D9E0D85041C5995755D5CA54413DF8A27EE0D85041857141F9D0CA54417F4E6278E0D8504194C3230FD1CA5441D2D8C570E0D8504122876B56D2CA54411EB1EB6AE0D850417B311052D3CA54416F92B06AE0D850418058FE5BD3CA54419A7C9467E0D85041C58097F3D3CA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876984 - 321317
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000C6D6E97DE0D85041DD485DF0D0CA544157C77278E0D85041F6775F0CD1CA544107030E69E0D850413A6F4CA2D3CA5441FF4C0140E0D8504189212979DCCA54417A70AF4CD2D85041F22C4608DCCA5441699F7AE8C3D85041D80A208DDBCA5441CB25CD78BCD850418C352840DBCA54413C1A5483A1D8504190EEA0F2D9CA5441CB332079A1D8504190EEA0F2D9CA54418FC2F578A1D8504152B81EF5D9CA5441EC51B81EA1D85041CDCCCC3CDFCA5441D7A3709DA8D850417B14AE27DFCA5441AE47E19AB0D850419A999969DFCA5441CDCCCCDCBBD8504133333353E0CA5441AE47E1AABBD85041B81E85DBE1CA54413D0AD753D7D850417B14AE87E1CA54418FC2F5E8E2D85041B81E85EBE2CA54413D0AD773E1D85041000000C0DCCA5441C6D6E97DE0D85041DD485DF0D0CA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000009A7C9467E0D85041C58097F3D3CA5441FC4C0140E0D850418C212979DCCA5441C8ED763FE0D85041D6C12479DCCA54416B08733FE0D85041372E0C7ADCCA54418F45A819DAD85041D0946547DCCA54417B70AF4CD2D85041F62C4608DCCA54411C012636C6D850419EE7D5A0DBCA54416B46E941C3D8504194780A88DBCA5441F6FB72B6C1D850416BCE6676DBCA5441CE25CD78BCD8504189352840DBCA5441E3278259ABD850418B37536CDACA54415F575B79A1D85041F449B2F4D9CA54416429C871A1D85041E198A360DACA544102614866A1D8504165B4E10CDBCA5441B8D43B63A1D8504137518D3ADBCA5441A8327124A1D85041F5C5D63ADFCA54414F72C99AA5D85041D2AF2930DFCA5441D7A3709DA8D850417B14AE27DFCA5441EF97A8E5A8D85041E2E7012ADFCA5441C34BACFCA8D85041FF24DB29DFCA54415B8861B6A9D8504158EEBB30DFCA544108C925CDACD85041C300384ADFCA5441FD81F4A1B0D8504150D84B65DFCA5441CAD027A7B6D85041830FABE4DFCA5441DB315660BBD85041AD821C49E0CA5441CDCCCCDCBBD8504133333353E0CA5441D3533DBCBBD850412B771753E1CA54413CB19CADBBD85041B21BAAD9E1CA54413551973BC1D8504199B0A6CAE1CA54413D0AD753D7D850417B14AE87E1CA54414C009D60D7D85041E6803689E1CA54419051F770D7D8504119DFFE88E1CA5441ED5B3347DAD85041806D54E2E1CA54412809CD98E0D8504129AF74A4E2CA544142B51C2BE2D85041F992BCD4E2CA5441AB1B37E5E2D85041D21212EBE2CA5441E4141B84E2D850413A869340E1CA5441C34CF67DE1D85041C184D9EADCCA5441B1592471E1D8504103B2FABDDCCA54410E7FD12DE1D8504121BD1763D9CA5441EEC669D9E0D85041C5995755D5CA54413DF8A27EE0D85041857141F9D0CA54417F4E6278E0D8504194C3230FD1CA5441D2D8C570E0D8504122876B56D2CA54411EB1EB6AE0D850417B311052D3CA54416F92B06AE0D850418058FE5BD3CA54419A7C9467E0D85041C58097F3D3CA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>799125 - 1108772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A370CD54FB5041000000A0AD895441B438B65854FB5041FF3FC013B189544194AF2D0554FB5041561B43D1B2895441CCB5440154FB5041BB3637EBB28954413E8A6FB07BFB5041CB011C26B3895441295C8F227CFB504114AE4731B18954411F85EB117BFB5041AE47E13AB0895441666666A679FB5041000000F0AF895441AE47E11A78FB50417B14AE87AF895441A4703D7A76FB50419A999909AF8954413333333375FB504133333393AE8954415C8FC2B570FB5041C3F5289CAD89544152B81EA56EFB50415C8FC215AD8954410AD7A3906DFB50413D0AD7B3AC8954413D0AD7D36CFB504114AE4771AC895441D7A370AD6AFB504152B81EB5AB8954413D0AD7A366FB50415C8FC295AA8954410AD7A32063FB5041C3F5281CA98954413D0AD7835EFB5041CDCCCCDCA78954411F85EBE15AFB5041EC51B8EEA6895441D808D79C55FB50412D03655FA68954415588A82C55FB5041F6B4D5D8A9895441D7A370CD54FB5041000000A0AD895441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FA538F6F53FB5041D20260B2B6895441BFACAA4F7AFB5041BBE6CDC3B6895441317118E17BFB50417424381BAE895441255F467E76FB5041F7AEB5ECAB895441FDD54F3E74FB504140EA2C3EAB89544128776A6168FB5041DD11307EAA895441B277A09B66FB50418925A48FAA8954411B23313B64FB5041E9CBCF92A9895441E603C61C63FB5041A9C59829A98954417025B2EC5BFB5041973F0533A78954411F85EBE15AFB5041EC51B8EEA6895441DB08D79C55FB50412F03655FA68954415588A82C55FB5041F3B4D5D8A9895441D7A370CD54FB5041000000A0AD895441B738B65854FB50410140C013B189544191AF2D0554FB5041531B43D1B289544188F4636653FB5041599F3796B6895441BFE27E7353FB504112374098B6895441FA538F6F53FB5041D20260B2B6895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>799125 - 3561787
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A370CD54FB5041000000A0AD895441B438B65854FB5041FF3FC013B189544194AF2D0554FB5041561B43D1B2895441CCB5440154FB5041BB3637EBB28954413E8A6FB07BFB5041CB011C26B3895441295C8F227CFB504114AE4731B18954411F85EB117BFB5041AE47E13AB0895441666666A679FB5041000000F0AF895441AE47E11A78FB50417B14AE87AF895441A4703D7A76FB50419A999909AF8954413333333375FB504133333393AE8954415C8FC2B570FB5041C3F5289CAD89544152B81EA56EFB50415C8FC215AD8954410AD7A3906DFB50413D0AD7B3AC8954413D0AD7D36CFB504114AE4771AC895441D7A370AD6AFB504152B81EB5AB8954413D0AD7A366FB50415C8FC295AA8954410AD7A32063FB5041C3F5281CA98954413D0AD7835EFB5041CDCCCCDCA78954411F85EBE15AFB5041EC51B8EEA6895441D808D79C55FB50412D03655FA68954415588A82C55FB5041F6B4D5D8A9895441D7A370CD54FB5041000000A0AD895441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FA538F6F53FB5041D20260B2B6895441BFACAA4F7AFB5041BBE6CDC3B6895441317118E17BFB50417424381BAE895441255F467E76FB5041F7AEB5ECAB895441FDD54F3E74FB504140EA2C3EAB89544128776A6168FB5041DD11307EAA895441B277A09B66FB50418925A48FAA8954411B23313B64FB5041E9CBCF92A9895441E603C61C63FB5041A9C59829A98954417025B2EC5BFB5041973F0533A78954411F85EBE15AFB5041EC51B8EEA6895441DB08D79C55FB50412F03655FA68954415588A82C55FB5041F3B4D5D8A9895441D7A370CD54FB5041000000A0AD895441B738B65854FB50410140C013B189544191AF2D0554FB5041531B43D1B289544188F4636653FB5041599F3796B6895441BFE27E7353FB504112374098B6895441FA538F6F53FB5041D20260B2B6895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879878 - 1032260
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE0782105141A4703D0A3EA554416A5E1E43AB1051412FD5592E46A554413F66D443AB105141E03CBE2A46A55441EE5F1355BB105141C23BFA5649A5544100A78D67BA105141540C68D006A55441FBE931B7B2105141F55E267605A5544148EA378F97105141EBBE8AD801A554417B14AE078110514148E17AD4FEA45441E433215181105141308C57E610A55441091000AA81105141074232D326A554417B14AE0782105141A4703D0A3EA55441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A50FBEC29F1051416A61FDE343A55441655E1E43AB10514133D5592E46A554413E66D443AB105141DC3CBE2A46A554417B14AEE7D110514185EB51C84DA55441E17A148ED5105141EC51B87E4DA5544185EB5178D410514152B81E9509A5544152B81E95CC1051417B14AEE708A5544113297ECCB81051415742764506A55441F006CBE2A31051418CFFC27C03A55441C92111459E105141C80C5EBD02A55441097299FB9E10514103BF23982BA554412372605C9F105141FA86116038A55441A50FBEC29F1051416A61FDE343A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879878 - 3465668
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE0782105141A4703D0A3EA554416A5E1E43AB1051412FD5592E46A554413F66D443AB105141E03CBE2A46A55441EE5F1355BB105141C23BFA5649A5544100A78D67BA105141540C68D006A55441FBE931B7B2105141F55E267605A5544148EA378F97105141EBBE8AD801A554417B14AE078110514148E17AD4FEA45441E433215181105141308C57E610A55441091000AA81105141074232D326A554417B14AE0782105141A4703D0A3EA55441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A50FBEC29F1051416A61FDE343A55441655E1E43AB10514133D5592E46A554413E66D443AB105141DC3CBE2A46A554417B14AEE7D110514185EB51C84DA55441E17A148ED5105141EC51B87E4DA5544185EB5178D410514152B81E9509A5544152B81E95CC1051417B14AEE708A5544113297ECCB81051415742764506A55441F006CBE2A31051418CFFC27C03A55441C92111459E105141C80C5EBD02A55441097299FB9E10514103BF23982BA554412372605C9F105141FA86116038A55441A50FBEC29F1051416A61FDE343A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890586 - 2950809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000080000003D0AD72311005141A4703D4AA3E15441666666B61000514185EB5188A6E15441295C8F6220005141295C8F12ABE1544100000030340051410AD7A3D0B0E15441E17A143E350051417B14AE47ADE15441333333332A00514114AE4751AAE15441C3F528EC1A005141E17A141EA6E154413D0AD72311005141A4703D4AA3E154410103000000010000000F00000014AE470136005141D7A370BDACE1544152B81EE5330051410AD7A3B0B3E154410AD7A3B031005141000000D0B9E15441B81E85DB2F005141D7A3705DBDE1544152B81E053100514152B81E75BEE1544114AE478134005141333333E3B9E15441A4703D2A3B005141EC51B89EB4E15441295C8F223E00514185EB51F8B2E15441B81E858B45005141295C8F72B0E15441E17A14FE4900514185EB5188AFE15441B81E851B4B005141F6285C8FABE15441AE47E1CA46005141333333B3AAE15441C3F5286C3C00514133333313A7E15441D7A370ED3700514114AE47D1A5E1544114AE470136005141D7A370BDACE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000900C532C11005141BC98F54DAAE15441146EA8891F005141BE37F049AEE15441EE720AB82C00514179C2230CB2E15441000000503200514148E17AA4B3E1544152B81E1533005141CDCCCCDCB3E15441BB82B121340051417CC27DCCB0E15441AE47E14A33005141E17A148EB0E154416EF930F229005141806358D8ADE154418BFFE74A1100514186D556B3A6E15441900C532C11005141BC98F54DAAE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890586 - 3590973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000080000003D0AD72311005141A4703D4AA3E15441666666B61000514185EB5188A6E15441295C8F6220005141295C8F12ABE1544100000030340051410AD7A3D0B0E15441E17A143E350051417B14AE47ADE15441333333332A00514114AE4751AAE15441C3F528EC1A005141E17A141EA6E154413D0AD72311005141A4703D4AA3E154410103000000010000000F00000014AE470136005141D7A370BDACE1544152B81EE5330051410AD7A3B0B3E154410AD7A3B031005141000000D0B9E15441B81E85DB2F005141D7A3705DBDE1544152B81E053100514152B81E75BEE1544114AE478134005141333333E3B9E15441A4703D2A3B005141EC51B89EB4E15441295C8F223E00514185EB51F8B2E15441B81E858B45005141295C8F72B0E15441E17A14FE4900514185EB5188AFE15441B81E851B4B005141F6285C8FABE15441AE47E1CA46005141333333B3AAE15441C3F5286C3C00514133333313A7E15441D7A370ED3700514114AE47D1A5E1544114AE470136005141D7A370BDACE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000900C532C11005141BC98F54DAAE15441146EA8891F005141BE37F049AEE15441EE720AB82C00514179C2230CB2E15441000000503200514148E17AA4B3E1544152B81E1533005141CDCCCCDCB3E15441BB82B121340051417CC27DCCB0E15441AE47E14A33005141E17A148EB0E154416EF930F229005141806358D8ADE154418BFFE74A1100514186D556B3A6E15441900C532C11005141BC98F54DAAE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290929 - 176832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F558FDB850417B14AE2726D35441D7A370DD0CB95041EC51B86E02D354415C8FC2B501B9504166666696FDD25441F6285C7FFBB85041AE47E18AFAD25441EC51B8FEF5B8504100000000F7D25441F6285CAFF1B85041E17A145EF3D2544148E17A44F0B850411F85EBA1F1D2544114AE47C1C5B85041E17A142EEED25441F6285C3FC2B850419A9999C9FDD254418FC2F5B8C0B85041B81E850B08D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD354418FC2F558FDB850417B14AE2726D35441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D3B2F902C1B85041CAEFAC1906D35441A031F6B8C0B85041741F840B08D3544199AA789DC1B85041211FF4C709D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD354417B52DFADEEB85041818CE8FF1FD3544179A2F558FDB850412CE2AC2726D35441860B6FDD0CB9504194A0B76E02D354415C8FC2B501B9504166666696FDD25441060004D5FEB85041109F4A2DFCD25441F6EC5A7FFBB850417F28E28AFAD25441532FF9E0F7B8504103517936F8D25441EC51B8FEF5B8504100000000F7D25441F6285CAFF1B85041E17A145EF3D2544148E17A44F0B850411F85EBA1F1D2544114AE47C1C5B85041E17A142EEED25441F6285C3FC2B850419A9999C9FDD25441D3B2F902C1B85041CAEFAC1906D35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290929 - 364371
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F558FDB850417B14AE2726D35441D7A370DD0CB95041EC51B86E02D354415C8FC2B501B9504166666696FDD25441F6285C7FFBB85041AE47E18AFAD25441EC51B8FEF5B8504100000000F7D25441F6285CAFF1B85041E17A145EF3D2544148E17A44F0B850411F85EBA1F1D2544114AE47C1C5B85041E17A142EEED25441F6285C3FC2B850419A9999C9FDD254418FC2F5B8C0B85041B81E850B08D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD354418FC2F558FDB850417B14AE2726D35441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D3B2F902C1B85041CAEFAC1906D35441A031F6B8C0B85041741F840B08D3544199AA789DC1B85041211FF4C709D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD354417B52DFADEEB85041818CE8FF1FD3544179A2F558FDB850412CE2AC2726D35441860B6FDD0CB9504194A0B76E02D354415C8FC2B501B9504166666696FDD25441060004D5FEB85041109F4A2DFCD25441F6EC5A7FFBB850417F28E28AFAD25441532FF9E0F7B8504103517936F8D25441EC51B8FEF5B8504100000000F7D25441F6285CAFF1B85041E17A145EF3D2544148E17A44F0B850411F85EBA1F1D2544114AE47C1C5B85041E17A142EEED25441F6285C3FC2B850419A9999C9FDD25441D3B2F902C1B85041CAEFAC1906D35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>244199 - 630287
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000031000000713D0A37C8015141C3F528BC01125541333333E3C6015141A4703DDAFC115541B81E85CBC5015141E17A14FEF6115541D7A3706DC40151410AD7A300F0115541EC51B8AED8015141F6285C4FEE115541E17A140EDE015141713D0AD7ED11554152B81EC5E101514185EB5198ED115541713D0A47E6015141295C8F52ED1155415C8FC225E8015141D7A3704DED11554166666646E801514114AE47B1EA115541A4703D8AE8015141AE47E14AE5115541D7A3706DDB015141295C8F82E41155419A999999D70151410AD7A3F0E411554148E17A14D20151417B14AE07E51155419A9999E9C8015141D7A3702DE51155419A999949C101514152B81E45E6115541D7A3705DB70151413D0AD783E61155417B14AE17B6015141E17A142EE6115541A4703D6AA401514114AE4761E811554133333373A4015141F6285C7FE81155417B14AE57A5015141EC51B87EEB115541713D0A87A6015141E17A14EEEF115541713D0AC7A7015141D7A370FDF4115541713D0AE7A8015141CDCCCC3CFA115541713D0AE7A90151413D0AD773FE11554166666616AB015141B81E85AB02125541CDCCCC6CAC015141F6285C4F06125541666666C6AD015141A4703D8A091255410AD7A390AE015141AE47E10A0B125541A4703D7AB70151418FC2F5C80C12554114AE47F1B40151417B14AEB709125541EC51B8DEB3015141713D0AA707125541CDCCCC5CB2015141D7A3705D04125541333333E3B0015141295C8F82FF115541B81E854BAF01514166666626F8115541B81E85FBAD015141295C8F72F1115541F6285C9FBE01514166666616F0115541B81E852BC0015141E17A144EF7115541713D0A27C1015141666666E6FB115541333333F3C1015141E17A14FEFE115541713D0AD7C2015141A4703DAA0112554133333333C4015141E17A149E04125541B81E856BC5015141666666F606125541713D0A27C7015141295C8F8208125541F6285CBFC8015141295C8F420912554133333333CD015141A4703D4A0A125541EC51B8EECC01514152B81EE509125541CDCCCC3CCA015141713D0A4706125541713D0A37C8015141C3F528BC01125541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000A95E5CCACC01514139A750B40912554192A78B22CD0151414806F2DF0912554100000030D00151411F85EB91091255418FC2F528D2015141D7A370DD08125541AE47E10AD00151416666663604125541713D0A57CD01514114AE4751FB115541666666F6CA01514152B81E75EF115541D7A3706DC40151410AD7A300F0115541848325ACC401514107622A41F111554158E6E729C5015141DB8BFCC3F31155417FCC9D81C50151418D0A5284F511554107E602CBC5015141CDD97AFBF61155415631F523C60151419E4E72D8F8115541A3F55E64C6015141AFD9F231FA115541D80757ACC601514171B3FAB3FB115541B3E199F8C60151416BD8F328FD11554192B97D65C70151417B4072B9FE1155415B6BA9BAC70151414280B3F2FF1155419FE97524C80151415659D37701125541BF3B458CC8015141A20A967B021255410C5D549FC901514186345DE504125541686FBE0CCA0151416E571BDB0512554111309CEDCA015141824F5F3407125541EC2D069FCB015141F1E7832208125541A8116230CC0151413472A1E508125541A95E5CCACC01514139A750B409125541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245203 - 36238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D00000014AE47B113FF504114AE47811D105541333333F312FF5041E17A14FE1D1055413D0AD76312FF5041666666761F10554185EB510819FF5041AE47E10A25105541A4703DAA22FF50411F85EBF12C105541F6285C1F2DFF5041AE47E18A3510554148E17AF43AFF504152B81E5532105541713D0AF73EFF5041000000D031105541C3F5280C45FF504185EB513832105541D7A3704D45FF5041B81E854B30105541D7A3705D45FF50411F85EBD12F1055419A9999593DFF5041333333632E1055416666664636FF504148E17A842C105541AE47E10A31FF5041B81E856B2A105541B81E856B2DFF5041EC51B8CE28105541713D0A5726FF50418FC2F55824105541EC51B87E1EFF5041CDCCCC1C1E105541295C8F2217FF50418FC2F558161055411F85EBE117FF5041D7A370BD19105541666666461AFF5041EC51B82E1D105541EC51B82E26FF5041CDCCCC9C25105541CDCCCC6C26FF5041666666B6271055417B14AEF71FFF5041713D0A0723105541B81E85BB1AFF50418FC2F5681F105541C3F5280C18FF504148E17AA41D1055413333335316FF50411F85EB211C105541295C8FB214FF504114AE47511C1055418FC2F51814FF5041333333131D10554114AE47B113FF504114AE47811D105541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001F85EBE117FF5041D7A370BD191055413333335316FF50411F85EB211C105541D3AAD70A15FF50419CAC3E471C105541E952514919FF5041609AE74C1E10554128CDDEAA1BFF504149385B0E20105541867AE6F71DFF5041D39463A521105541B7C2874C20FF5041DB99994423105541A16D6E4326FF5041ABF262982710554164B67E6026FF5041F1A542B525105541687B79201EFF5041D88BD1E81F105541502DB1651AFF504131209F171D1055411F85EBE117FF5041D7A370BD19105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245203 - 60219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D00000014AE47B113FF504114AE47811D105541333333F312FF5041E17A14FE1D1055413D0AD76312FF5041666666761F10554185EB510819FF5041AE47E10A25105541A4703DAA22FF50411F85EBF12C105541F6285C1F2DFF5041AE47E18A3510554148E17AF43AFF504152B81E5532105541713D0AF73EFF5041000000D031105541C3F5280C45FF504185EB513832105541D7A3704D45FF5041B81E854B30105541D7A3705D45FF50411F85EBD12F1055419A9999593DFF5041333333632E1055416666664636FF504148E17A842C105541AE47E10A31FF5041B81E856B2A105541B81E856B2DFF5041EC51B8CE28105541713D0A5726FF50418FC2F55824105541EC51B87E1EFF5041CDCCCC1C1E105541295C8F2217FF50418FC2F558161055411F85EBE117FF5041D7A370BD19105541666666461AFF5041EC51B82E1D105541EC51B82E26FF5041CDCCCC9C25105541CDCCCC6C26FF5041666666B6271055417B14AEF71FFF5041713D0A0723105541B81E85BB1AFF50418FC2F5681F105541C3F5280C18FF504148E17AA41D1055413333335316FF50411F85EB211C105541295C8FB214FF504114AE47511C1055418FC2F51814FF5041333333131D10554114AE47B113FF504114AE47811D105541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001F85EBE117FF5041D7A370BD191055413333335316FF50411F85EB211C105541D3AAD70A15FF50419CAC3E471C105541E952514919FF5041609AE74C1E10554128CDDEAA1BFF504149385B0E20105541867AE6F71DFF5041D39463A521105541B7C2874C20FF5041DB99994423105541A16D6E4326FF5041ABF262982710554164B67E6026FF5041F1A542B525105541687B79201EFF5041D88BD1E81F105541502DB1651AFF504131209F171D1055411F85EBE117FF5041D7A370BD19105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245225 - 1407881
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6EC015141666666268C11554166666686E90151416666662688115541666666F6E6015141666666668511554166666676E2015141666666A67E115541666666E6DD0151416666662677115541666666B6D8015141666666A66E11554166666696D5015141666666D66811554166666636D30151416666660663115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541666666A6D6015141666666A68311554166666626DA015141666666768911554166666656DD015141666666568E115541666666C6E4015141666666D69711554166666686E9015141666666269D115541666666F6EA015141666666C694115541666666E6EC015141666666568D115541666666F6EC015141666666268C115541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F039AD21D3015141163BE80763115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541666666A6D6015141666666A68311554166666626DA015141666666768911554166666656DD015141666666568E115541666666C6E4015141666666D69711554166666686E9015141666666269D115541666666F6EA015141666666C694115541666666E6EC015141666666568D115541666666F6EC015141666666268C115541424C2045EA01514182FD5504891155417A85CBFDE9015141D4F801C688115541D482DF1CE9015141D6CF26B587115541666666F6E6015141666666668511554166666676E2015141666666A67E1155412ABB5749E1015141B6E382B77C1155413ED76DA6DE015141758376A4781155410DB74FC4DB015141DEAC9AA773115541666666B6D8015141666666A66E11554166666696D5015141666666D668115541B50680FCD3015141CA5339EB6411554181EDBB1DD30151417E72900863115541F039AD21D3015141163BE80763115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245225 - 3403502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6EC015141666666268C11554166666686E90151416666662688115541666666F6E6015141666666668511554166666676E2015141666666A67E115541666666E6DD0151416666662677115541666666B6D8015141666666A66E11554166666696D5015141666666D66811554166666636D30151416666660663115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541666666A6D6015141666666A68311554166666626DA015141666666768911554166666656DD015141666666568E115541666666C6E4015141666666D69711554166666686E9015141666666269D115541666666F6EA015141666666C694115541666666E6EC015141666666568D115541666666F6EC015141666666268C115541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F039AD21D3015141163BE80763115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541666666A6D6015141666666A68311554166666626DA015141666666768911554166666656DD015141666666568E115541666666C6E4015141666666D69711554166666686E9015141666666269D115541666666F6EA015141666666C694115541666666E6EC015141666666568D115541666666F6EC015141666666268C115541424C2045EA01514182FD5504891155417A85CBFDE9015141D4F801C688115541D482DF1CE9015141D6CF26B587115541666666F6E6015141666666668511554166666676E2015141666666A67E1155412ABB5749E1015141B6E382B77C1155413ED76DA6DE015141758376A4781155410DB74FC4DB015141DEAC9AA773115541666666B6D8015141666666A66E11554166666696D5015141666666D668115541B50680FCD3015141CA5339EB6411554181EDBB1DD30151417E72900863115541F039AD21D3015141163BE80763115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246448 - 967704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000033333313C16C5141333333130FA0544185EB5188B86C514148E17A0431A054419A999939B06C514185EB510852A0544114AE4711B36C514114AE470153A05441EC51B81EDB6C51411F85EBF15DA05441C3F5281CDD6C5141B81E85FB5EA05441B81E854BDD6C5141000000405FA05441295C8F62E06C51418FC2F5D856A05441CDCCCCBCE26C51411F85EBB14EA054411F85EB11E86C51418FC2F58835A05441C3F5287CE86C5141B81E85EB33A054418FC2F508E86C5141295C8F0234A05441EC51B80EDE6C51419A99994921A05441C3F528ECDA6C51413D0AD7F31DA054418FC2F5A8CF6C5141EC51B8DE15A0544133333313C16C5141333333130FA05441
+</a>
+
+<b>
+010600000001000000010300000001000000290000007DCCE927FB6C5141CED0A32315A05441C246E8C3F16C51412DD84D942AA05441FB856A5DEA6C514194B5780720A05441BAB9DB23E96C5141589F9BD11EA054418DCF667DE66C51410C122E3D1CA05441CC0D0494E86C5141DC46471220A0544190187BB7EB6C5141C0C99BCF25A05441929C25B8ED6C51419C79247929A05441F38A0C0EF06C5141EC118DBE2DA05441A787B03BEB6C514100DF734638A0544104AE67DDEA6C51411CEDB69337A05441FD7E5A13EA6C514101659B1636A05441FE7680D1E96C514134AFD79735A05441D80CB2E2E86C5141045B21D333A0544184C3A480E86C514124A99AE633A05441EC1DE80DE86C5141BD4AE59B35A054410669E3B3E66C514143147EFC3BA054411317971FE66C514145BF32B83EA05441D4B3E69CE36C5141F1B58E904AA05441BCFAE3C4E26C51414834BF8B4EA05441331757A4E26C5141D93CAF064FA0544156370BD6E06C5141DF54C14855A054417BF7495AE06C5141677E73EF56A0544119F8D7D5DF6C5141C7919A5758A054419FD15253DD6C5141C6D5103F5FA054419B6157ECDE6C5141DE95389A61A0544106EA7B80E06C5141BD91B31C5DA05441BEC6736CE26C51417353C4BF57A054419DD7F78AE36C514173ECC17054A0544188393798E36C51413F741E4554A0544150AE04C4E36C514137881AC853A05441C87F5C74E66C5141D149E5D54AA05441BF5C4FD4E66C5141D4F3CD7449A054416A903AF1E66C5141592B620A49A054412B08B3A3E96C5141D00F9F263FA05441DEF92ACFE96C5141085F10BF3EA05441DAC1ED68ED6C51417C1FB9B035A05441456B0168F26C5141B861ED742BA05441F50D2DA8F56C514178F6114B24A0544125BE2866FC6C5141BFCF1FC915A054417DCCE927FB6C5141CED0A32315A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246448 - 1172959
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000033333313C16C5141333333130FA0544185EB5188B86C514148E17A0431A054419A999939B06C514185EB510852A0544114AE4711B36C514114AE470153A05441EC51B81EDB6C51411F85EBF15DA05441C3F5281CDD6C5141B81E85FB5EA05441B81E854BDD6C5141000000405FA05441295C8F62E06C51418FC2F5D856A05441CDCCCCBCE26C51411F85EBB14EA054411F85EB11E86C51418FC2F58835A05441C3F5287CE86C5141B81E85EB33A054418FC2F508E86C5141295C8F0234A05441EC51B80EDE6C51419A99994921A05441C3F528ECDA6C51413D0AD7F31DA054418FC2F5A8CF6C5141EC51B8DE15A0544133333313C16C5141333333130FA05441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000082CCE927FB6C5141CAD0A32315A05441C646E8C3F16C514130D84D942AA05441FB856A5DEA6C514194B5780720A05441BAB9DB23E96C5141589F9BD11EA054418DCF667DE66C51410C122E3D1CA05441CC0D0494E86C5141DC46471220A0544190187BB7EB6C5141C0C99BCF25A05441929C25B8ED6C51419C79247929A05441F38A0C0EF06C5141EC118DBE2DA05441A787B03BEB6C514100DF734638A0544104AE67DDEA6C51411CEDB69337A05441FD7E5A13EA6C514101659B1636A05441FE7680D1E96C514134AFD79735A05441D80CB2E2E86C5141045B21D333A0544184C3A480E86C514124A99AE633A05441EC1DE80DE86C5141BD4AE59B35A054410669E3B3E66C514143147EFC3BA054411317971FE66C514145BF32B83EA05441D4B3E69CE36C5141F1B58E904AA05441BCFAE3C4E26C51414834BF8B4EA05441331757A4E26C5141D93CAF064FA0544156370BD6E06C5141DF54C14855A054417BF7495AE06C5141677E73EF56A0544119F8D7D5DF6C5141C7919A5758A054419FD15253DD6C5141C6D5103F5FA054419B6157ECDE6C5141DE95389A61A0544106EA7B80E06C5141BD91B31C5DA05441C1C6736CE26C51417753C4BF57A054419DD7F78AE36C514174ECC17054A0544188393798E36C51413F741E4554A0544150AE04C4E36C514137881AC853A05441C87F5C74E66C5141D149E5D54AA05441BF5C4FD4E66C5141D4F3CD7449A054416A903AF1E66C5141592B620A49A054412B08B3A3E96C5141D00F9F263FA05441DEF92ACFE96C5141085F10BF3EA05441DAC1ED68ED6C51417C1FB9B035A05441456B0168F26C5141B861ED742BA05441F50D2DA8F56C514178F6114B24A0544125BE2866FC6C5141BFCF1FC915A0544182CCE927FB6C5141CAD0A32315A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246448 - 3603118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000033333313C16C5141333333130FA0544185EB5188B86C514148E17A0431A054419A999939B06C514185EB510852A0544114AE4711B36C514114AE470153A05441EC51B81EDB6C51411F85EBF15DA05441C3F5281CDD6C5141B81E85FB5EA05441B81E854BDD6C5141000000405FA05441295C8F62E06C51418FC2F5D856A05441CDCCCCBCE26C51411F85EBB14EA054411F85EB11E86C51418FC2F58835A05441C3F5287CE86C5141B81E85EB33A054418FC2F508E86C5141295C8F0234A05441EC51B80EDE6C51419A99994921A05441C3F528ECDA6C51413D0AD7F31DA054418FC2F5A8CF6C5141EC51B8DE15A0544133333313C16C5141333333130FA05441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000082CCE927FB6C5141CAD0A32315A05441C646E8C3F16C514130D84D942AA05441FB856A5DEA6C514194B5780720A05441BAB9DB23E96C5141589F9BD11EA054418DCF667DE66C51410C122E3D1CA05441CC0D0494E86C5141DC46471220A0544190187BB7EB6C5141C0C99BCF25A05441929C25B8ED6C51419C79247929A05441F38A0C0EF06C5141EC118DBE2DA05441A787B03BEB6C514100DF734638A0544104AE67DDEA6C51411CEDB69337A05441FD7E5A13EA6C514101659B1636A05441FE7680D1E96C514134AFD79735A05441D80CB2E2E86C5141045B21D333A0544184C3A480E86C514124A99AE633A05441EC1DE80DE86C5141BD4AE59B35A054410669E3B3E66C514143147EFC3BA054411317971FE66C514145BF32B83EA05441D4B3E69CE36C5141F1B58E904AA05441BCFAE3C4E26C51414834BF8B4EA05441331757A4E26C5141D93CAF064FA0544156370BD6E06C5141DF54C14855A054417BF7495AE06C5141677E73EF56A0544119F8D7D5DF6C5141C7919A5758A054419FD15253DD6C5141C6D5103F5FA054419B6157ECDE6C5141DE95389A61A0544106EA7B80E06C5141BD91B31C5DA05441C1C6736CE26C51417753C4BF57A054419DD7F78AE36C514174ECC17054A0544188393798E36C51413F741E4554A0544150AE04C4E36C514137881AC853A05441C87F5C74E66C5141D149E5D54AA05441BF5C4FD4E66C5141D4F3CD7449A054416A903AF1E66C5141592B620A49A054412B08B3A3E96C5141D00F9F263FA05441DEF92ACFE96C5141085F10BF3EA05441DAC1ED68ED6C51417C1FB9B035A05441456B0168F26C5141B861ED742BA05441F50D2DA8F56C514178F6114B24A0544125BE2866FC6C5141BFCF1FC915A0544182CCE927FB6C5141CAD0A32315A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>306375 - 29796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C2FE86D50411F85EBB112285541666666E6FA6D5041B81E85FB1428554166666686F26D504114AE474107285541F6285C5FEF6D5041B81E857B01285541A4703D6AE06D50417B14AEA7FF275541CDCCCC3CE06D50410000002004285541F6285C2FE86D50411F85EBB112285541
+</a>
+
+<b>
+010600000001000000010300000001000000180000004BD84CC2E36D50419FFBB3940A285541D14C325CE66D50414F617A590F285541B3E406B9E76D5041E273FBD811285541034A40F1E86D504193A27E0B11285541ABC46551E96D5041D7DAAE5C1028554107899E6BE96D50419AF3AF700F285541E12DA848E96D5041B8D0E99E0E2855411897EA3FE96D5041C69FD7F80D285541E22DA848E96D5041F58A5DFB0C285541E12DA848E96D5041D3413AC30A28554128A53614E96D50415FF1F8DF09285541EEFC95A2E86D5041921BDD5C09285541444312C8E76D5041C545C1D90828554199898EEDE66D504158733CEB0828554170EF3950E66D50412549586E09285541A3191ECDE56D5041BBB531FA09285541AA6A4F32E46D504151F57FF607285541FC9EF86CE56D5041B40AEA7506285541721F5832E46D5041EF5001CA052855414F5BD1E7E26D504199F9BF2905285541C5DB9F56E06D5041AC5FA2F102285541DE708E47E06D50417F32B83304285541DD8E47C6E26D50413FACADC6082855414BD84CC2E36D50419FFBB3940A285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>306375 - 72268
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C2FE86D50411F85EBB112285541666666E6FA6D5041B81E85FB1428554166666686F26D504114AE474107285541F6285C5FEF6D5041B81E857B01285541A4703D6AE06D50417B14AEA7FF275541CDCCCC3CE06D50410000002004285541F6285C2FE86D50411F85EBB112285541
+</a>
+
+<b>
+010600000001000000010300000001000000180000004BD84CC2E36D50419FFBB3940A285541D14C325CE66D50414F617A590F285541B3E406B9E76D5041E273FBD811285541034A40F1E86D504193A27E0B11285541ABC46551E96D5041D7DAAE5C1028554107899E6BE96D50419AF3AF700F285541E12DA848E96D5041B8D0E99E0E2855411897EA3FE96D5041C69FD7F80D285541E22DA848E96D5041F58A5DFB0C285541E12DA848E96D5041D3413AC30A28554128A53614E96D50415FF1F8DF09285541EEFC95A2E86D5041921BDD5C09285541444312C8E76D5041C545C1D90828554199898EEDE66D504158733CEB0828554170EF3950E66D50412549586E09285541A3191ECDE56D5041BBB531FA09285541AA6A4F32E46D504151F57FF607285541FC9EF86CE56D5041B40AEA7506285541721F5832E46D5041EF5001CA052855414F5BD1E7E26D504199F9BF2905285541C5DB9F56E06D5041AC5FA2F102285541DE708E47E06D50417F32B83304285541DD8E47C6E26D50413FACADC6082855414BD84CC2E36D50419FFBB3940A285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>622747 - 3038553
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000026000000EC51B84ECEEA5041A4703D9AE6075541713D0A47CEEA5041C3F528BCE7075541CDCCCCECE5EA504185EB51E8E3075541F6285C8FE5EA5041666666D6E2075541713D0A47E4EA50417B14AE17DF07554152B81EC5E3EA5041B81E859BDD0755410AD7A3B0E2EA5041333333B3D9075541713D0A07E2EA5041B81E855BD60755410AD7A3E0E1EA5041C3F528ECD40755418FC2F588E1EA5041F6285CAFD10755418FC2F568E1EA5041AE47E11ACD07554152B81E55E2EA5041EC51B86EC4075541000000E0E2EA5041295C8F52BF0755418FC2F568E4EA5041B81E857BB7075541713D0A97E4EA50419A999939B6075541CDCCCC3CD3EA504133333343B707554152B81EC5CDEA50410AD7A330B8075541713D0A57C4EA50417B14AE97B90755417B14AEB7BDEA50419A9999B9BA07554100000050B6EA50411F85EB81BC0755415C8FC245B5EA5041713D0AC7BC075541CDCCCCDCA9EA5041B81E85BBBF075541000000F0A7EA50417B14AE57C0075541C3F5289C9BEA50418FC2F528C2075541B81E858B9EEA504185EB5168CF075541B81E851BA1EA50419A9999F9DA075541666666B6A7EA50418FC2F508DB0755410AD7A340ADEA5041F6285C4FDB07554166666646AFEA504148E17A04DD075541295C8F52AFEA5041B81E851BDD075541EC51B86EB0EA5041B81E853BDF0755417B14AE87AFEA5041CDCCCCDCE20755415C8FC285B1EA504152B81ED5E307554100000000B3EA5041000000A0E40755411F85EB31B8EA5041713D0A27E4075541C3F5281CBDEA5041F6285C6FE5075541A4703D6ACEEA50411F85EBA1E2075541EC51B84ECEEA5041A4703D9AE6075541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000ED8CBD18A1EA50419E780DEDDA075541507F58D0A7EA50418D773F0ADB07554178828989ADEA5041A250E78CDB0755416FC86193AFEA5041F5B89D97DD07554192F3A24CB0EA504146F49BC4DF075541FE396E91AFEA5041CAE594B5E20755412DF10969B3EA5041EE4FE060E4075541F4F057BBB9EA504165C5B28DE40755416FAEF9C1BDEA504108B38154E507554121816A77CEEA5041A50EBBB7E2075541DE7CEE46CEEA50414D0B3AC0E70755413F0F668DE1EA50412797809DE40755416D76A5F0E5EA5041AEDF8CF3E30755411B24954AE4EA50413D4D0622DF0755416096038CE2EA50411A5A69FAD8075541AE6732C5E1EA5041B1A6C0E8D3075541CC4AB770E1EA5041E32D0F37CE075541E71410FCE1EA5041013CF4B3C7075541E64975B3E2EA50414C8B1DF6C007554160F5FAC4E3EA5041BC810BC1BA0755415EF30489E4EA504135C68C9BB60755413787CB9BE4EA50413AD6BD05B607554114D9A6C7DDEA5041512AD6A1B6075541A49A57E0D2EA5041D469E252B7075541DA3BB28CC7EA5041EC257A1DB9075541B809CCBDBCEA50414EE3C0F5BA075541A5BC0267B2EA5041CAD35285BD075541C0CF71B2A8EA50417E73101AC00755412AB678CDA1EA5041ED043B3FC10755418186C6AA9AEA5041D0502884C2075541F02FBE4999EA50417D7BF86EBD0755413DC5260298EA50415F4D3A57BC075541BD5FEAA483EA504116EDC400BA075541F1D0B3B082EA50415A2653F3BA0755415C073E0183EA504140BC3DF1BE075541DE85468C84EA50412D721290CA075541AD4172269DEA50413EDDE9EACD075541F8BCECB19EEA50417C48AF15D0075541ED8CBD18A1EA50419E780DEDDA075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>622747 - 3274933
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000026000000EC51B84ECEEA5041A4703D9AE6075541713D0A47CEEA5041C3F528BCE7075541CDCCCCECE5EA504185EB51E8E3075541F6285C8FE5EA5041666666D6E2075541713D0A47E4EA50417B14AE17DF07554152B81EC5E3EA5041B81E859BDD0755410AD7A3B0E2EA5041333333B3D9075541713D0A07E2EA5041B81E855BD60755410AD7A3E0E1EA5041C3F528ECD40755418FC2F588E1EA5041F6285CAFD10755418FC2F568E1EA5041AE47E11ACD07554152B81E55E2EA5041EC51B86EC4075541000000E0E2EA5041295C8F52BF0755418FC2F568E4EA5041B81E857BB7075541713D0A97E4EA50419A999939B6075541CDCCCC3CD3EA504133333343B707554152B81EC5CDEA50410AD7A330B8075541713D0A57C4EA50417B14AE97B90755417B14AEB7BDEA50419A9999B9BA07554100000050B6EA50411F85EB81BC0755415C8FC245B5EA5041713D0AC7BC075541CDCCCCDCA9EA5041B81E85BBBF075541000000F0A7EA50417B14AE57C0075541C3F5289C9BEA50418FC2F528C2075541B81E858B9EEA504185EB5168CF075541B81E851BA1EA50419A9999F9DA075541666666B6A7EA50418FC2F508DB0755410AD7A340ADEA5041F6285C4FDB07554166666646AFEA504148E17A04DD075541295C8F52AFEA5041B81E851BDD075541EC51B86EB0EA5041B81E853BDF0755417B14AE87AFEA5041CDCCCCDCE20755415C8FC285B1EA504152B81ED5E307554100000000B3EA5041000000A0E40755411F85EB31B8EA5041713D0A27E4075541C3F5281CBDEA5041F6285C6FE5075541A4703D6ACEEA50411F85EBA1E2075541EC51B84ECEEA5041A4703D9AE6075541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000ED8CBD18A1EA50419E780DEDDA075541507F58D0A7EA50418D773F0ADB07554178828989ADEA5041A250E78CDB0755416FC86193AFEA5041F5B89D97DD07554192F3A24CB0EA504146F49BC4DF075541FE396E91AFEA5041CAE594B5E20755412DF10969B3EA5041EE4FE060E4075541F4F057BBB9EA504165C5B28DE40755416FAEF9C1BDEA504108B38154E507554121816A77CEEA5041A50EBBB7E2075541DE7CEE46CEEA50414D0B3AC0E70755413F0F668DE1EA50412797809DE40755416D76A5F0E5EA5041AEDF8CF3E30755411B24954AE4EA50413D4D0622DF0755416096038CE2EA50411A5A69FAD8075541AE6732C5E1EA5041B1A6C0E8D3075541CC4AB770E1EA5041E32D0F37CE075541E71410FCE1EA5041013CF4B3C7075541E64975B3E2EA50414C8B1DF6C007554160F5FAC4E3EA5041BC810BC1BA0755415EF30489E4EA504135C68C9BB60755413787CB9BE4EA50413AD6BD05B607554114D9A6C7DDEA5041512AD6A1B6075541A49A57E0D2EA5041D469E252B7075541DA3BB28CC7EA5041EC257A1DB9075541B809CCBDBCEA50414EE3C0F5BA075541A5BC0267B2EA5041CAD35285BD075541C0CF71B2A8EA50417E73101AC00755412AB678CDA1EA5041ED043B3FC10755418186C6AA9AEA5041D0502884C2075541F02FBE4999EA50417D7BF86EBD0755413DC5260298EA50415F4D3A57BC075541BD5FEAA483EA504116EDC400BA075541F1D0B3B082EA50415A2653F3BA0755415C073E0183EA504140BC3DF1BE075541DE85468C84EA50412D721290CA075541AD4172269DEA50413EDDE9EACD075541F8BCECB19EEA50417C48AF15D0075541ED8CBD18A1EA50419E780DEDDA075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>249081 - 1043804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E7254411600000048E17A84B62A514114AE47017272544185EB51A8B32A51413D0AD74371725441EC51B82EB22A51415C8FC2C574725441AE47E11AB32A5141713D0A4778725441AE47E1DABA2A51410AD7A3F07972544114AE4711C32A5141CDCCCCCC7C725441F6285C4FC72A5141E17A145E7E72544114AE47D1CA2A51418FC2F5988172544166666686C92A5141D7A3706D82725441D7A370EDC52A5141F6285CEF7F7254417B14AE67C12A5141E17A145E7E7254411F85EB31B92A5141713D0A277C725441F6285CFFB12A51411F85EB9179725441D7A3709DB02A51415C8FC2C574725441E17A145EB22A51419A9999F96F725441C3F528ACB42A5141333333836F72544100000060BF2A5141EC51B87E74725441295C8F72CA2A5141295C8F62797254415C8FC2B5C92A5141D7A370AD7A725441C3F5283CC22A51417B14AE177872544100000080BB2A5141D7A370DD7472544148E17A84B62A514114AE470172725441
+</a>
+
+<b>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E72544114000000E42AB046C92A5141C9384C41827254414173A18BC62A5141C723B345807254415ACABD80C62A514117A76A558072544186EBE12AC22A514180BCBCA17E725441689F1D14BA2A5141BEE510647C725441F6285CFFB12A51411F85EB91797254418402F2AEB02A514184A48102757254412A5D7250B22A5141E0DAEB1E70725441C64E77B2B42A514190C022866F725441CC78C071CA2A5141B4FD336279725441BC7365C7C92A5141AE19888E7A725441E7255C54C22A5141077F0C2078725441A03EFB37B72A514198C05068727254414BC24CDBB32A51419BD40751717254415F6B3331B22A5141F2972FCF74725441BB1B1909B32A514178747A03787254410CAB6C28BB2A51411014A50B7A72544175321661C72A5141247C676E7E72544114AE47D1CA2A51418FC2F59881725441E42AB046C92A5141C9384C4182725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>249081 - 3372588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E7254411600000048E17A84B62A514114AE47017272544185EB51A8B32A51413D0AD74371725441EC51B82EB22A51415C8FC2C574725441AE47E11AB32A5141713D0A4778725441AE47E1DABA2A51410AD7A3F07972544114AE4711C32A5141CDCCCCCC7C725441F6285C4FC72A5141E17A145E7E72544114AE47D1CA2A51418FC2F5988172544166666686C92A5141D7A3706D82725441D7A370EDC52A5141F6285CEF7F7254417B14AE67C12A5141E17A145E7E7254411F85EB31B92A5141713D0A277C725441F6285CFFB12A51411F85EB9179725441D7A3709DB02A51415C8FC2C574725441E17A145EB22A51419A9999F96F725441C3F528ACB42A5141333333836F72544100000060BF2A5141EC51B87E74725441295C8F72CA2A5141295C8F62797254415C8FC2B5C92A5141D7A370AD7A725441C3F5283CC22A51417B14AE177872544100000080BB2A5141D7A370DD7472544148E17A84B62A514114AE470172725441
+</a>
+
+<b>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E72544114000000E42AB046C92A5141C9384C41827254414173A18BC62A5141C723B345807254415ACABD80C62A514117A76A558072544186EBE12AC22A514180BCBCA17E725441689F1D14BA2A5141BEE510647C725441F6285CFFB12A51411F85EB91797254418402F2AEB02A514184A48102757254412A5D7250B22A5141E0DAEB1E70725441C64E77B2B42A514190C022866F725441CC78C071CA2A5141B4FD336279725441BC7365C7C92A5141AE19888E7A725441E7255C54C22A5141077F0C2078725441A03EFB37B72A514198C05068727254414BC24CDBB32A51419BD40751717254415F6B3331B22A5141F2972FCF74725441BB1B1909B32A514178747A03787254410CAB6C28BB2A51411014A50B7A72544175321661C72A5141247C676E7E72544114AE47D1CA2A51418FC2F59881725441E42AB046C92A5141C9384C4182725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 1498262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D954416A9EB59C10BA504130A2F3F546D954417EFADE6E10BA50414B6C2D0147D95441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000082FADE6E10BA50414A6C2D0147D95441A5E896CA0EBA504137AD6D7047D9544164A33BA210BA50410B6B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D95441689EB59C10BA50412EA2F3F546D9544182FADE6E10BA50414A6C2D0147D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 4175906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D954416A9EB59C10BA504130A2F3F546D954417EFADE6E10BA50414B6C2D0147D95441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000082FADE6E10BA50414A6C2D0147D95441A5E896CA0EBA504137AD6D7047D9544164A33BA210BA50410B6B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D95441689EB59C10BA50412EA2F3F546D9544182FADE6E10BA50414A6C2D0147D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 142908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D954416A9EB59C10BA504130A2F3F546D954417EFADE6E10BA50414B6C2D0147D95441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A5E896CA0EBA504137AD6D7047D9544181F19E9E10BA504198403A234DD9544155DF0EAD10BA50417E15712B4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D95441689EB59C10BA50412EA2F3F546D9544182FADE6E10BA50414A6C2D0147D95441A5E896CA0EBA504137AD6D7047D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 294865
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D954416A9EB59C10BA504130A2F3F546D954417EFADE6E10BA50414B6C2D0147D95441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A5E896CA0EBA504137AD6D7047D9544181F19E9E10BA504198403A234DD9544155DF0EAD10BA50417E15712B4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441713D0A3719BA50415C8FC26545D95441689EB59C10BA50412EA2F3F546D9544182FADE6E10BA50414A6C2D0147D95441A5E896CA0EBA504137AD6D7047D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>307750 - 3731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000713D0AC7BF565141A4703D0ADBC554417B14AEE7BF56514100000040D6C5544114AE47E1C05651413D0AD773CDC5544114AE47C1C156514185EB5198C4C5544152B81E45C156514100000000BDC554418FC2F5B8C05651417B14AE47B5C55441E17A14FEBF565141000000C0AFC55441333333C3BF5651419A999949ACC554410AD7A3D0B6565141B81E852BAEC55441A4703DEAA9565141EC51B8FEB0C55441CDCCCC3CAB5651413D0AD713B5C55441D7A3701DAB5651411F85EBF1B6C55441B81E858BAB565141C3F528ACB8C55441295C8F92AC5651411F85EB81BAC55441295C8FC2AD56514133333383BCC55441C3F528ACAE565141E17A146EBFC55441A4703DFAAE5651415C8FC295C0C554410AD7A340B0565141B81E85FBC1C55441F6285C9FB2565141B81E852BC4C554417B14AEA7B3565141A4703D8AC6C55441A4703D5AB35651413D0AD7A3C9C55441000000C0B2565141333333E3CDC554411F85EB51B75651411F85EB31D2C5544166666616BC565141B81E85CBD6C55441713D0AC7BF565141A4703D0ADBC55441
+</a>
+
+<b>
+0106000000010000000103000000010000004A00000026E4AE73AA5651412D38CCE9B6C554416A57F9B6AA5651414F0E3B60B8C554417222C1FBAA5651417C248194B9C554418F64E4CAAB565141342191B8BAC554417626F6E0AB5651412DEA36D9BAC554417BABB107AC5651419EE61510BBC55441B0E6B5D3AC5651416D3F1C42BCC55441CCEFABECAC565141174D8D67BCC554417C6D7936AD5651419F8941D6BCC55441EA1FB578AD56514144159B39BDC5544106104882AD565141C9958F67BDC55441C6244896AD56514164F98FC7BDC55441FDE099BEAD565141A04D1889BEC554413ED318C9AD5651413EA579BBBEC55441296510E0AD565141DB94B729BFC554418CEAC003AE5651419B2B10C7BFC554418EEDFF30AE565141C0D1FA83C0C5544118D1A85AAE5651418F107A32C1C55441D96EAA73AE56514170C0B37BC1C5544166666646AF565141333333D3C1C5544149807757AF56514146710BE4C1C55441D3A0A104B05651417BAAF48EC2C5544107129CB1B05651416F09943AC3C55441F292F0D5B056514169A59F5EC3C554417B14AEA7B1565141EC51B82EC4C554412BCDE6D8B1565141016E129EC4C554416171911FB2565141A22AF03DC5C55441227C4F6BB2565141467C49E9C5C55441634476AAB2565141CBF32678C6C554413D0AD7D3B25651415C8FC2D5C6C554419F8E3AC3B25651416B8FB23CC7C55441610B90B5B2565141DE516291C7C5544191B7538EB256514195838584C8C55441B4875285B2565141AD6952BCC8C55441295C8F82B2565141D7A370CDC8C554413A365445B2565141B5867A14C9C55441255B63D2B15651414274D499C9C55441B4476B2FB15651416BF7E656CAC554410DD2EAF0B05651412D456A9FCAC55441EFAE9D98B0565141C724DC05CBC554413F66E642B0565141D5C6538ACBC554418A3F36C0B2565141CD3564E3CDC554416237FACEB25651414132BBF0CDC554415A6F9086B356514157BD1B2EC8C55441EA432A9FB3565141C107FFE1C6C55441EA432A9FB356514139CB4A73C6C55441CE621753B35651410A4413C8C5C5544149CABC17B35651411699D53FC5C55441677D54CCB25651413184BE92C4C554411463CA87B256514116F9C315C4C5544101D67A1BB2565141738FCBB1C3C55441DFF21694B156514174A1D434C3C55441C4A4F7D2B0565141565C9482C2C55441E9B9D940B056514153DBB6FBC1C55441E2FA3CD2AF5651410ACF8282C1C554413CC4945CAF56514142B18C01C1C55441446CF2F7AE565141F997138DC0C55441287331C7AE565141AE9473D4BFC55441E13A1870AE5651416D1209AEBEC55441110C2012AE565141B6319781BDC55441992E93D4AD5651413465CCBCBCC554415DBFDBA8AD565141340BCE57BCC55441579FA031AD56514122287E8EBBC55441D31F3B9DAC5651416DE3EF93BAC55441A3D55649AC5651413AE527FFB9C554410940AFEDAB5651414F8F785BB9C55441DFE470B0AB56514143C518EEB8C55441CD5A727CAB56514140989A6FB8C554419DBF035CAB565141655B4FEDB7C5544143B4253AAB5651413DF53F65B7C55441A9CD9123AB565141E1C87994B6C55441FD06F62DAB56514137F10EF6B5C55441E5C0D03AAB56514140281832B5C5544126E4AE73AA5651412D38CCE9B6C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>307750 - 57714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000713D0AC7BF565141A4703D0ADBC554417B14AEE7BF56514100000040D6C5544114AE47E1C05651413D0AD773CDC5544114AE47C1C156514185EB5198C4C5544152B81E45C156514100000000BDC554418FC2F5B8C05651417B14AE47B5C55441E17A14FEBF565141000000C0AFC55441333333C3BF5651419A999949ACC554410AD7A3D0B6565141B81E852BAEC55441A4703DEAA9565141EC51B8FEB0C55441CDCCCC3CAB5651413D0AD713B5C55441D7A3701DAB5651411F85EBF1B6C55441B81E858BAB565141C3F528ACB8C55441295C8F92AC5651411F85EB81BAC55441295C8FC2AD56514133333383BCC55441C3F528ACAE565141E17A146EBFC55441A4703DFAAE5651415C8FC295C0C554410AD7A340B0565141B81E85FBC1C55441F6285C9FB2565141B81E852BC4C554417B14AEA7B3565141A4703D8AC6C55441A4703D5AB35651413D0AD7A3C9C55441000000C0B2565141333333E3CDC554411F85EB51B75651411F85EB31D2C5544166666616BC565141B81E85CBD6C55441713D0AC7BF565141A4703D0ADBC55441
+</a>
+
+<b>
+0106000000010000000103000000010000004A00000026E4AE73AA5651412D38CCE9B6C554416A57F9B6AA5651414F0E3B60B8C554417222C1FBAA5651417C248194B9C554418F64E4CAAB565141342191B8BAC554417626F6E0AB5651412DEA36D9BAC554417BABB107AC5651419EE61510BBC55441B0E6B5D3AC5651416D3F1C42BCC55441CCEFABECAC565141174D8D67BCC554417C6D7936AD5651419F8941D6BCC55441EA1FB578AD56514144159B39BDC5544106104882AD565141C9958F67BDC55441C6244896AD56514164F98FC7BDC55441FDE099BEAD565141A04D1889BEC554413ED318C9AD5651413EA579BBBEC55441296510E0AD565141DB94B729BFC554418CEAC003AE5651419B2B10C7BFC554418EEDFF30AE565141C0D1FA83C0C5544118D1A85AAE5651418F107A32C1C55441D96EAA73AE56514170C0B37BC1C5544166666646AF565141333333D3C1C5544149807757AF56514146710BE4C1C55441D3A0A104B05651417BAAF48EC2C5544107129CB1B05651416F09943AC3C55441F292F0D5B056514169A59F5EC3C554417B14AEA7B1565141EC51B82EC4C554412BCDE6D8B1565141016E129EC4C554416171911FB2565141A22AF03DC5C55441227C4F6BB2565141467C49E9C5C55441634476AAB2565141CBF32678C6C554413D0AD7D3B25651415C8FC2D5C6C554419F8E3AC3B25651416B8FB23CC7C55441610B90B5B2565141DE516291C7C5544191B7538EB256514195838584C8C55441B4875285B2565141AD6952BCC8C55441295C8F82B2565141D7A370CDC8C554413A365445B2565141B5867A14C9C55441255B63D2B15651414274D499C9C55441B4476B2FB15651416BF7E656CAC554410DD2EAF0B05651412D456A9FCAC55441EFAE9D98B0565141C724DC05CBC554413F66E642B0565141D5C6538ACBC554418A3F36C0B2565141CD3564E3CDC554416237FACEB25651414132BBF0CDC554415A6F9086B356514157BD1B2EC8C55441EA432A9FB3565141C107FFE1C6C55441EA432A9FB356514139CB4A73C6C55441CE621753B35651410A4413C8C5C5544149CABC17B35651411699D53FC5C55441677D54CCB25651413184BE92C4C554411463CA87B256514116F9C315C4C5544101D67A1BB2565141738FCBB1C3C55441DFF21694B156514174A1D434C3C55441C4A4F7D2B0565141565C9482C2C55441E9B9D940B056514153DBB6FBC1C55441E2FA3CD2AF5651410ACF8282C1C554413CC4945CAF56514142B18C01C1C55441446CF2F7AE565141F997138DC0C55441287331C7AE565141AE9473D4BFC55441E13A1870AE5651416D1209AEBEC55441110C2012AE565141B6319781BDC55441992E93D4AD5651413465CCBCBCC554415DBFDBA8AD565141340BCE57BCC55441579FA031AD56514122287E8EBBC55441D31F3B9DAC5651416DE3EF93BAC55441A3D55649AC5651413AE527FFB9C554410940AFEDAB5651414F8F785BB9C55441DFE470B0AB56514143C518EEB8C55441CD5A727CAB56514140989A6FB8C554419DBF035CAB565141655B4FEDB7C5544143B4253AAB5651413DF53F65B7C55441A9CD9123AB565141E1C87994B6C55441FD06F62DAB56514137F10EF6B5C55441E5C0D03AAB56514140281832B5C5544126E4AE73AA5651412D38CCE9B6C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366083 - 2910616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000030000000103000000010000000B00000014AE47C19B905041713D0A274B385541666666869A905041A4703D6A4A38554185EB51A88A905041C3F5286C4A385541295C8F82829050413D0AD7434A3855413D0AD7F382905041295C8FA24B385541EC51B8EE85905041C3F528DC5438554133333353869050413D0AD71356385541333333D3869050417B14AE1756385541295C8FE28F905041C3F528DC553855417B14AEB79990504114AE47E15338554114AE47C19B905041713D0A274B38554101030000000100000017000000AE47E1DA4A9050415C8FC2D54B3855411F85EBC14A905041CDCCCC6C4A3855410AD7A3604A9050411F85EBE144385541B81E854B4A905041D7A3702D44385541000000702F905041E17A141E4038554114AE47712C905041EC51B86E473855415C8FC2152A90504185EB51B8493855415C8FC26526905041B81E85AB4E38554148E17A0426905041B81E853B4F385541A4703D1A2C905041A4703DAA51385541C3F528AC2F905041AE47E10A57385541CDCCCC7C36905041713D0A775E385541333333633D905041EC51B8AE653855410000002044905041EC51B8EE69385541F6285CAF5690504148E17AD471385541EC51B8EE58905041C3F5288C66385541F6285C2F55905041D7A3700D6638554185EB51584F9050417B14AE47633855413D0AD7234F9050415C8FC2755D38554148E17AF44D90504185EB5198563855410AD7A3304C905041CDCCCC0C4F38554185EB51784B9050419A9999F94B385541AE47E1DA4A9050415C8FC2D54B3855410103000000010000000B000000F6285C0F769050413D0AD7C34A385541333333937590504148E17AA44938554133333393709050410AD7A32049385541D7A370AD63905041CDCCCC7C47385541333333F3669050419A9999195138554133333373679050411F85EB9152385541A4703D0A729050419A9999D954385541CDCCCCAC7A905041295C8FA255385541000000C07A90504148E17AA455385541AE47E12A7A905041AE47E14A54385541F6285C0F769050413D0AD7C34A385541
+</a>
+
+<b>
+010600000001000000010300000001000000170000000248EF7928905041D1A324E14B38554192FC197229905041836CB16C4C3855410FE8E972299050415D13326E4C3855413ED87BE329905041E942733E4D385541CEC08C7C2A905041B7C67A824D38554130E2F9532B90504164A2DCF34D38554179C56A4D2C9050412ABC3A434E385541F424D4022D90504100AAEB7B4E38554182489E4B4F905041B35113DF613855413D0AD7234F9050415C8FC2755D38554148E17AF44D90504185EB5198563855410AD7A3304C905041CDCCCC0C4F38554185EB51784B9050419A9999F94B385541AE47E1DA4A9050415C8FC2D54B3855411F85EBC14A905041CDCCCC6C4A3855410AD7A3604A9050411F85EBE144385541B81E854B4A905041D7A3702D44385541000000702F905041E17A141E4038554114AE47712C905041EC51B86E473855415C8FC2152A90504185EB51B8493855416F29436028905041C924D3004C385541E16DC36128905041720B97014C3855410248EF7928905041D1A324E14B385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366083 - 3644341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000030000000103000000010000000B00000014AE47C19B905041713D0A274B385541666666869A905041A4703D6A4A38554185EB51A88A905041C3F5286C4A385541295C8F82829050413D0AD7434A3855413D0AD7F382905041295C8FA24B385541EC51B8EE85905041C3F528DC5438554133333353869050413D0AD71356385541333333D3869050417B14AE1756385541295C8FE28F905041C3F528DC553855417B14AEB79990504114AE47E15338554114AE47C19B905041713D0A274B38554101030000000100000017000000AE47E1DA4A9050415C8FC2D54B3855411F85EBC14A905041CDCCCC6C4A3855410AD7A3604A9050411F85EBE144385541B81E854B4A905041D7A3702D44385541000000702F905041E17A141E4038554114AE47712C905041EC51B86E473855415C8FC2152A90504185EB51B8493855415C8FC26526905041B81E85AB4E38554148E17A0426905041B81E853B4F385541A4703D1A2C905041A4703DAA51385541C3F528AC2F905041AE47E10A57385541CDCCCC7C36905041713D0A775E385541333333633D905041EC51B8AE653855410000002044905041EC51B8EE69385541F6285CAF5690504148E17AD471385541EC51B8EE58905041C3F5288C66385541F6285C2F55905041D7A3700D6638554185EB51584F9050417B14AE47633855413D0AD7234F9050415C8FC2755D38554148E17AF44D90504185EB5198563855410AD7A3304C905041CDCCCC0C4F38554185EB51784B9050419A9999F94B385541AE47E1DA4A9050415C8FC2D54B3855410103000000010000000B000000F6285C0F769050413D0AD7C34A385541333333937590504148E17AA44938554133333393709050410AD7A32049385541D7A370AD63905041CDCCCC7C47385541333333F3669050419A9999195138554133333373679050411F85EB9152385541A4703D0A729050419A9999D954385541CDCCCCAC7A905041295C8FA255385541000000C07A90504148E17AA455385541AE47E12A7A905041AE47E14A54385541F6285C0F769050413D0AD7C34A385541
+</a>
+
+<b>
+010600000001000000010300000001000000170000000248EF7928905041D1A324E14B38554192FC197229905041836CB16C4C3855410FE8E972299050415D13326E4C3855413ED87BE329905041E942733E4D385541CEC08C7C2A905041B7C67A824D38554130E2F9532B90504164A2DCF34D38554179C56A4D2C9050412ABC3A434E385541F424D4022D90504100AAEB7B4E38554182489E4B4F905041B35113DF613855413D0AD7234F9050415C8FC2755D38554148E17AF44D90504185EB5198563855410AD7A3304C905041CDCCCC0C4F38554185EB51784B9050419A9999F94B385541AE47E1DA4A9050415C8FC2D54B3855411F85EBC14A905041CDCCCC6C4A3855410AD7A3604A9050411F85EBE144385541B81E854B4A905041D7A3702D44385541000000702F905041E17A141E4038554114AE47712C905041EC51B86E473855415C8FC2152A90504185EB51B8493855416F29436028905041C924D3004C385541E16DC36128905041720B97014C3855410248EF7928905041D1A324E14B385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>702499 - 5238100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000044000000BD7F7C4128165141088B6D22EB665441CC5475E829165141E7730BD0DE6654419A9999292A165141A4703DEADC665441AE47E13A2F165141666666D6B8665441B2B3AC512F165141DFC15125B866544182E6D07130165141A477E266AF6654419BFD5C8E30165141E95B1D89AE6654413C28B8873216514183BE3D339F665441A459D34C331651418D0E043899665441823A2A9D331651414AACE5C796665441D1BC1DC334165141232B54DC8D665441FCC50B0B351651410B348AAD8B6654410BA582ED35165141E6C03ECE846654413D0AD7133616514148E17AA48366544148E17A741D165141713D0A67816654414A8313691D16514105B9916681665441006297AB1C165141B135BF5E816654415F2AA51018165141DBE0132E8166544110A246A2171651417C79852981665441A4703D1A0F165141F6285CCF806654416F1789500E16514157BE29C48066544148E17A24FC1551411F85EBC17F6654415C8FC2B5F41551415C8FC2259A665441333333D3EE155141E17A14DEB1665441666666B6EE15514148E17A84B2665441C3F5280CE4155141B81E859BB0665441333333F3DB155141333333C3AE665441A4703DDAD3155141B81E85EBAC6654413D0AD773CE15514114AE4721AC665441713D0AF7CA1551415C8FC275AC6654415C8FC2A5C9155141EC51B82EAD66544133333383C415514114AE4771B8665441EC51B89EC6155141E17A14AEBA665441295C8FF2C6155141E17A14EEBB665441295C8FF2C61551413D0AD793BD66544100000040C415514152B81E15C56654415C8FC275C3155141666666A6C76654415C8FC275C3155141666666E6C866544100000030C915514114AE4731CC665441D7A370EDCD155141713D0AE7CD665441713D0AF7CA15514166666626DA665441C3F528ECC8155141AE47E19AE566544152B81E45A8155141EC51B8FEE066544148E17A04A7155141AE47E19AE566544109B46A46A615514100CEE265EA665441847FB2C7A6155141906119B3EE665441E3844191A715514161EAD5A1FC6654411796F744A7155141BBE2847BFF665441E6F3BE52A61551410BA6861D02675441E55AEDEFA3155141E048AA8B076754411FA42A98A4155141CB7619BA0D67544143EEDE26A51551417982FB3A14675441A65E6AA3A615514191210FBB2F675441E3844191A71551419F15822C666754416666661617165141000000C0706754414B6EBB3E1B1651413C7472D34D675441D3425DEF201651415D6D0A072467544179EFB1E52116514170A588A41C67544176748411A5155141751E293F116754419E40351EA4155141159DD8AD0767544128176787A6155141FE9EFE120267544166C02784A7155141ADDBFC70FF665441C6F1DFCDA715514129FCDAA4FC665441C86BC705A7155141A8AC41BDEE665441AA26954226165141BED89C39FA6654416F6670A42616514104FF5D35F7665441CDCCCCBC2616514152B81E75F6665441BD7F7C4128165141088B6D22EB665441
+</a>
+
+<b>
+01060000000100000001030000000100000032000000D39D90DCA6155141384AB15FEC665441D39D90DCA61551414850CCD9EE665441D676523F2616514162877024FA66544176CA2DAC26165141CF9E49F8F66654418F4F084727165141DE8B3A6EF2665441F3F995EF2716514114D43685ED665441328A9C0E29165141AE5FAC28E56654416DAFCEE92916514122EBFBC5DE665441D36834622A165141C6BD3F57DB665441389B1C772E16514151752648BE665441676D2D292F165141286B6E54B9665441380AD9CC2F165141D1E27168B46654419F8D6EA5EE155141A6FCF597B2665441015191A5EA15514137DBBB2FB2665441F827A942DF155141F3742273AF665441744FE882D3155141D05ABEDEAC665441B59019D0CF15514126A83A54AC6654413D0AD773CE15514114AE4721AC665441067ED051CD155141E728B93CAC665441713D0AF7CA1551415C8FC275AC6654415C8FC2A5C9155141EC51B82EAD66544133333383C415514114AE4771B86654410CE82928C5155141D38CC72AB966544107AA77F7C5155141B08EE3EDB9665441EC51B89EC6155141E17A14AEBA665441EDF9A3E4C61551415BC7F3B8BB665441295C8FF2C6155141E17A14EEBB665441295C8FF2C6155141DB59638ABC665441295C8FF2C61551413D0AD793BD6654415BF45FBEC615514199A70725BE665441FAC99491C4155141ABF02432C466544177C45630C4155141CEB90448C56654415C8FC275C3155141666666A6C76654415C8FC275C3155141666666E6C8665441A77E8707C615514160268660CA66544100000030C915514114AE4731CC665441D7A370EDCD155141713D0AE7CD665441713D0AF7CA15514166666626DA665441C3F528ECC8155141AE47E19AE56654413666842FC015514154401A5FE466544176331E8AB615514105B47602E3665441802D07E6B51551414AFF4BEBE266544115EC4B71AE155141E2ACD0DDE166544152B81E45A8155141EC51B8FEE066544182E008F5A7155141B1F021F1E1665441E320D766A7155141ECE1D930E466544148E17A04A7155141AE47E19AE56654417A5DFBB7A6155141AEFE73A8E7665441981D2DC4A6155141FEC2A46BE9665441D39D90DCA6155141384AB15FEC665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>252648 - 3116377
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000003333330326E9504185EB51F85F01554152B81E052EE9504185EB51387401554152B81E5535E950416666665671015541AE47E14A37E9504148E17AD475015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541000000404DE95041AE47E17A64015541AE47E1EA49E95041EC51B83E5E0155411F85EBD14AE95041000000D05D015541EC51B8AE3DE95041295C8F824201554114AE47111FE95041B81E85CB4F0155415C8FC26520E9504152B81EF5520155413333330326E9504185EB51F85F015541
+</a>
+
+<b>
+010600000001000000010300000001000000140000007E32554545E950418D40B84752015541BB87036E38E9504108997E95580155413E4587962FE95041CC53BBBC5901554137D08BD225E95041148F551959015541D1A2FA1A23E95041756B9F3B59015541E30B2D6C23E9504144F4CAF7590155413333330326E9504185EB51F85F01554196C476852CE950410DDC807C70015541B0F5B5BA33E95041E2F3A5FF6D015541824E88CA36E95041087896C274015541F40ED06C3DE95041351FC4B271015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541000000404DE95041AE47E17A64015541AE47E1EA49E95041EC51B83E5E0155411F85EBD14AE95041000000D05D015541D859407445E9504176F739A952015541A6F1BC4745E9504163E7B74C520155417E32554545E950418D40B84752015541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>252648 - 3474832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000003333330326E9504185EB51F85F01554152B81E052EE9504185EB51387401554152B81E5535E950416666665671015541AE47E14A37E9504148E17AD475015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541000000404DE95041AE47E17A64015541AE47E1EA49E95041EC51B83E5E0155411F85EBD14AE95041000000D05D015541EC51B8AE3DE95041295C8F824201554114AE47111FE95041B81E85CB4F0155415C8FC26520E9504152B81EF5520155413333330326E9504185EB51F85F015541
+</a>
+
+<b>
+010600000001000000010300000001000000140000007E32554545E950418D40B84752015541BB87036E38E9504108997E95580155413E4587962FE95041CC53BBBC5901554137D08BD225E95041148F551959015541D1A2FA1A23E95041756B9F3B59015541E30B2D6C23E9504144F4CAF7590155413333330326E9504185EB51F85F01554196C476852CE950410DDC807C70015541B0F5B5BA33E95041E2F3A5FF6D015541824E88CA36E95041087896C274015541F40ED06C3DE95041351FC4B271015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541000000404DE95041AE47E17A64015541AE47E1EA49E95041EC51B83E5E0155411F85EBD14AE95041000000D05D015541D859407445E9504176F739A952015541A6F1BC4745E9504163E7B74C520155417E32554545E950418D40B84752015541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580765 - 57041
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000C28D8EC455CE5041DF02701EE1395541D00E6D8056CE504100603498E13955416384F41457CE5041B03579F8E1395541E522D6525DCE5041FFC0B1EFE33955413E51226566CE5041640F6032E6395541818DF4FF67CE50414F8B7718E23955416429290077CE504107575980E4395541000000A07FCE5041713D0A47CC395541713D0A177FCE5041333333A3C9395541D7A3704D75CE504185EB5178C73955413D0AD7E366CE50418FC2F578C4395541C3F528BC5DCE50417B14AEC7C2395541CDCCCC7C5DCE5041A4703D4AC4395541E17A14DE55CE504152B81E65C13955411F85EBC14DCE5041333333D3BF395541B81E854B44CE504100000010BC395541AE47E1FA3FCE504185EB5138B93955419A9999A940CE5041E17A148EBA395541333333033FCE504152B81E85BC3955415C8FC27540CE5041295C8FA2BE395541E17A144E42CE5041CDCCCCBCC2395541D7A3703D44CE504185EB5168C8395541C3F5287C45CE504166666696CB3955419A9999F947CE50410AD7A3A0D1395541713D0A774ECE504114AE4711DC3955412C8C887C4FCE5041661424E3DC3955410EAB3E7050CE50410156E8C1DC395541F2ED250353CE504199562544DF395541954D753753CE5041F1032277DF395541C28D8EC455CE5041DF02701EE1395541
+</a>
+
+<b>
+010600000001000000010300000001000000230000000CAB3E7050CE50410056E8C1DC395541E4ED250353CE50418F562544DF395541066AA8B753CE50415AA939CADF395541C28D8EC455CE5041DD02701EE1395541CC0E6D8056CE504104603498E13955411F8DA2685ACE50419E906BB7E2395541FC3ED09657CE5041E998FB01DC3955417AF3F36F57CE504118C82FC9DB395541D7A3705D57CE5041CDCCCCDCDB3955410000005055CE50419A999919DA395541713D0A6753CE50419A999949D8395541B81E852B51CE5041A4703DEAD539554185EB51084FCE50410AD7A350D3395541F6285C8F4CCE5041D7A370FDCF39554185EB51D849CE50417B14AED7CB3955410AD7A30048CE504185EB5118C93955411F85EBF145CE5041A4703D3AC5395541B81E859B43CE5041713D0AD7C0395541A4703DEA41CE5041C3F5289CBD3955418D9999A940CE5041147B148EBA395541333333033FCE504152B81E85BC3955415C8FC27540CE5041295C8FA2BE395541E17A144E42CE5041CDCCCCBCC2395541D7A3703D44CE504185EB5168C8395541C3F5287C45CE504166666696CB3955419A9999F947CE50410AD7A3A0D1395541713D0A774ECE504114AE4711DC3955412D8C887C4FCE5041671424E3DC3955416478408C4FCE5041EB5CFFE0DC3955412CAF478D4FCE50415B78DBE0DC395541E7DAA1A54FCE50411E5B89DDDC39554171CCCBC54FCE5041A28B26D9DC395541666666E64FCE5041000000B0DC395541D0D1410C50CE5041B8D08ACFDC3955410CAB3E7050CE50410056E8C1DC395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253101 - 3057549
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000A002B65041E17A141E5F26554114AE47311AB65041713D0AA755265541A4703D1A21B650410AD7A3E052265541CDCCCC7C29B65041295C8F824F2655410AD7A36016B650415C8FC29538265541C3F528AC00B65041B81E858B1E26554166666616F8B550411F85EBE12126554100000020F1B55041713D0A972426554133333333DCB55041295C8F3231265541F6285C3FD3B55041CDCCCCCC37265541713D0A47E7B550415C8FC2A54F26554148E17AE4F7B55041D7A3706D63265541000000A002B65041E17A141E5F265541
+</a>
+
+<b>
+010600000001000000010300000002000000A30000004C85D817A1B55041406122B1752655410A585067A4B55041E09C7A8D6E265541F3BE08B4A8B55041FA46B8BA6626554101A0CB84AAB550416F881BCB63265541E17A147EACB55041B81E850B60265541DE692428AEB5504134C3EEE85D265541118E2B4DAEB5504145160DAD5D265541EEF476B6B2B550417606AD1058265541FEB45497B4B5504140D5A1A755265541C289DF20B8B5504116BEA51D51265541000000C0B9B550418FC2F5084F26554190E4B406BBB55041AA3CD3B24D26554135149AE3BBB55041C07254AE4C2655416A63DD87BEB55041D048F59849265541969FE7B0C1B55041422A507546265541242EFA70C4B550419088EFB94326554153B42C89C6B55041AA5A50A541265541EC51B80EC8B55041D7A3700D4026554193FBD119C8B550410DF2400540265541E66C4C34C9B5504108CCBEFE3E265541D578E95EC9B55041FA7E6AD43E265541B23B3772CEB550412E9C042B3B2655419AB37AF9D0B5504114C70A5839265541C064C0FFD6B55041F0045AFF342655411E30648DDAB550415435A5693226554133333333DCB55041295C8F3231265541169B57F2E9B55041FDCA3EEA282655416A16CB05EEB5504168808E75262655417BE5C9ABEFB55041A3F84C772526554100000020F1B55041713D0A9724265541BE099140F2B55041594FD326242655413BA0F1C3F2B55041AC3BEDE323265541B55AFE10F6B55041EB8F1FAB2226554166666616F8B550411F85EBE1212655410D869DEFF8B5504173B9798D2126554123063F45FCB550411E509E4120265541D46260E9FEB550416F2FC43A1F26554163047CA200B65041130E488F1E265541C3F528AC00B65041B81E858B1E2655415548AFC903B65041C5214AA11D2655411E9B597905B650414CC882221D265541295C8F0208B650413D0AD7631C265541F27618B30AB650415D7CB4991B265541A0883EF70FB650412707ED0D1A26554104AB7C6413B65041BC47640C192655410B8C83E515B6504103ED1450182655415C9FB5871CB650415C59135D162655416CE0D17521B65041BBFA35EA1426554161DA61C823B65041FF25983B14265541F6285C1F2DB65041D7A3707D112655410DCF67432EB6504114A6F02F112655411101B7AB2FB650413E2E53D010265541AB66176B34B65041F612CD8D0F2655414EF485CA37B65041AA2FACA80E26554135101F6F3CB6504175C2CF6C0D26554175CECEB745B650413209C3EB0A26554109E18A144BB65041CFF1DF59092655417449F74B51B6504184D0C5870726554130C667A652B65041F45CF41F0726554199DBE69652B6504101861912062655411F85EB9152B65041AE47E10A0626554137BF689652B65041F570860906265541E5982E9552B650417B5C2AF40526554126BD1D914FB65041C829C3C006265541EC62336E49B6504117AA306A08265541416200BD41B650412BA87A7F0A265541FF20F9413EB650419976DA4D0B2655417431E06F37B65041EDC578D20C265541DACDBEEF33B65041880AEB990D265541067A0D5B2EB6504164C887320F26554156EF949E26B65041313B5C6911265541F15C852923B65041A8F547631226554134C81E6E1FB65041C89B5569132655415337CC8F1CB6504113BFBF3214265541EA3CB4BE13B650416DBFD69D162655419F5BE10D10B6504177EB4BB0172655418F3A6F430DB65041E3DBDEE018265541EBB70ED50BB65041B45B0F7D19265541F6564D350AB65041D6C24C2E1A265541428AA10D09B65041525F2D991A2655416199DBCB07B65041D777FCEC1A265541F2E89AC401B650412A00F17E1C2655418FBBDBB1FEB550418776DB4B1D265541C58ED1E3FBB55041C1B2E0061E265541B7AE08CFF8B55041BC0A53D41E265541014387ACF6B550411BDFA2CB1F265541AFD2BCB3F2B550418C365DC62126554192E71273EFB55041A598546523265541AC6D1691EAB55041072383DD252655410072FE94E7B55041C49CA19C272655414F74C03CE6B550416CA51166282655417E29DEF2DFB55041EDE01C142C265541219722F8DCB55041B68824EC2D2655413E41CAB4D9B550415B0F133C30265541BDE0FA4DD8B550412477543A312655419319A7B7D6B55041F7A7415A32265541974AE8D0D2B550413E91F91D35265541077BE619CFB55041A196DDBF3726554180E45528CDB55041A646F84B392655415461335CC8B55041645CF7723D265541A2BF1B59C2B550413CA41BA74226554104923410BDB55041D64A2E2848265541E8B1D601B7B550417ECAA79A4E265541C09E94EFB4B55041F32306625126554174F9CABCB1B550410E4678AC552655416BE18A88AFB5504169D470A15826554100085A03ADB550419F58FF025C2655418C5439CDABB5504157A757A95D265541636B7EC3A8B55041883299B96226554118880504A7B550410E7268A3652655411791D924A5B550410C3B0DC268265541919D90F7A2B55041B2C944A06C265541CA517556A1B5504138DAC9F46F26554117A2D076A0B55041ED01E4BD71265541393028199EB55041E1DEC99376265541022DA6769CB55041B41C2CEB79265541C733E4619AB5504102F3112C7E2655417150CDBB98B55041C72EC68A81265541FFB1D0D095B550416651888187265541221F4F7F93B55041A624DC478C265541BBF7781D93B55041D060EEB592265541E14FFC0B92B55041F9A62524932655417F6ABC6491B55041508D97BE912655416F01D5AB8FB550418759349C942655418729A14B8DB55041E5A32E90982655410D31C7578AB550418F95D4799D26554130A8578D87B550414251911EA2265541A476D6BE86B55041B78D9288A32655412420093186B55041FFF7483BA52655412D667EFA84B550413E874AF3A82655418178F2FA83B5504146B9B302AC2655414898A78183B550414A2C8A76AD265541B7A88B1A82B5504150556FC3B1265541E7772BA180B55041D468AE4BB4265541967779AB7EB55041DF8B029DB7265541948B6AFA7DB550410D5637D1B8265541E7A0F3627DB55041572CE47DBA265541A0AB03717CB55041226E9F2ABD2655416E2C8D987BB55041DAA2418FBF2655417BF5E01A7BB55041377ADAECC0265541FF92F38579B55041A694BBE5C22655418294AA4776B550419E09F7F0C626554154066FAA74B55041649DCA02C92655417697FE3773B55041183FB0C6CA265541105BDDCC73B5504193874634CB265541BACF734C79B550410FF05BC2C4265541E07D6EAA7EB550415656D677BE265541504CC88A81B550410680CB22BB2655412BB19B5E83B55041332A1F52B92655417EBC97DF87B550415701D259B6265541A00533D38EB550413619A590B2265541C14ECEC695B55041DB5C467CAE265541C087C2BC9AB550413CB98D62AB2655413E2C4E9AA2B550418C19AD01A126554117002D08A1B55041335D670C9E26554116D207AA9BB55041FD51013A972655410996B08895B550411C6221BD8F265541BC1E4A8C95B550412FBDF5AC8F2655413333338396B5504148E17A248B2655414855B89996B55041CC11A5F28A26554162788E659AB55041EE030B8C8226554185EB51D89AB55041E17A148E812655414C85D817A1B55041406122B17526554106000000C473F32998B5504120A55416A22655416FB78AC397B55041B7BB235CA1265541256367ED96B55041033D8ECE9E2655413F79AC539AB550412CF793269D26554158CF9F189BB5504172977A3EA0265541C473F32998B5504120A55416A2265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253101 - 3334958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000A002B65041E17A141E5F26554114AE47311AB65041713D0AA755265541A4703D1A21B650410AD7A3E052265541CDCCCC7C29B65041295C8F824F2655410AD7A36016B650415C8FC29538265541C3F528AC00B65041B81E858B1E26554166666616F8B550411F85EBE12126554100000020F1B55041713D0A972426554133333333DCB55041295C8F3231265541F6285C3FD3B55041CDCCCCCC37265541713D0A47E7B550415C8FC2A54F26554148E17AE4F7B55041D7A3706D63265541000000A002B65041E17A141E5F265541
+</a>
+
+<b>
+010600000001000000010300000002000000A30000004C85D817A1B55041406122B1752655410A585067A4B55041E09C7A8D6E265541F3BE08B4A8B55041FA46B8BA6626554101A0CB84AAB550416F881BCB63265541E17A147EACB55041B81E850B60265541DE692428AEB5504134C3EEE85D265541118E2B4DAEB5504145160DAD5D265541EEF476B6B2B550417606AD1058265541FEB45497B4B5504140D5A1A755265541C289DF20B8B5504116BEA51D51265541000000C0B9B550418FC2F5084F26554190E4B406BBB55041AA3CD3B24D26554135149AE3BBB55041C07254AE4C2655416A63DD87BEB55041D048F59849265541969FE7B0C1B55041422A507546265541242EFA70C4B550419088EFB94326554153B42C89C6B55041AA5A50A541265541EC51B80EC8B55041D7A3700D4026554193FBD119C8B550410DF2400540265541E66C4C34C9B5504108CCBEFE3E265541D578E95EC9B55041FA7E6AD43E265541B23B3772CEB550412E9C042B3B2655419AB37AF9D0B5504114C70A5839265541C064C0FFD6B55041F0045AFF342655411E30648DDAB550415435A5693226554133333333DCB55041295C8F3231265541169B57F2E9B55041FDCA3EEA282655416A16CB05EEB5504168808E75262655417BE5C9ABEFB55041A3F84C772526554100000020F1B55041713D0A9724265541BE099140F2B55041594FD326242655413BA0F1C3F2B55041AC3BEDE323265541B55AFE10F6B55041EB8F1FAB2226554166666616F8B550411F85EBE1212655410D869DEFF8B5504173B9798D2126554123063F45FCB550411E509E4120265541D46260E9FEB550416F2FC43A1F26554163047CA200B65041130E488F1E265541C3F528AC00B65041B81E858B1E2655415548AFC903B65041C5214AA11D2655411E9B597905B650414CC882221D265541295C8F0208B650413D0AD7631C265541F27618B30AB650415D7CB4991B265541A0883EF70FB650412707ED0D1A26554104AB7C6413B65041BC47640C192655410B8C83E515B6504103ED1450182655415C9FB5871CB650415C59135D162655416CE0D17521B65041BBFA35EA1426554161DA61C823B65041FF25983B14265541F6285C1F2DB65041D7A3707D112655410DCF67432EB6504114A6F02F112655411101B7AB2FB650413E2E53D010265541AB66176B34B65041F612CD8D0F2655414EF485CA37B65041AA2FACA80E26554135101F6F3CB6504175C2CF6C0D26554175CECEB745B650413209C3EB0A26554109E18A144BB65041CFF1DF59092655417449F74B51B6504184D0C5870726554130C667A652B65041F45CF41F0726554199DBE69652B6504101861912062655411F85EB9152B65041AE47E10A0626554137BF689652B65041F570860906265541E5982E9552B650417B5C2AF40526554126BD1D914FB65041C829C3C006265541EC62336E49B6504117AA306A08265541416200BD41B650412BA87A7F0A265541FF20F9413EB650419976DA4D0B2655417431E06F37B65041EDC578D20C265541DACDBEEF33B65041880AEB990D265541067A0D5B2EB6504164C887320F26554156EF949E26B65041313B5C6911265541F15C852923B65041A8F547631226554134C81E6E1FB65041C89B5569132655415337CC8F1CB6504113BFBF3214265541EA3CB4BE13B650416DBFD69D162655419F5BE10D10B6504177EB4BB0172655418F3A6F430DB65041E3DBDEE018265541EBB70ED50BB65041B45B0F7D19265541F6564D350AB65041D6C24C2E1A265541428AA10D09B65041525F2D991A2655416199DBCB07B65041D777FCEC1A265541F2E89AC401B650412A00F17E1C2655418FBBDBB1FEB550418776DB4B1D265541C58ED1E3FBB55041C1B2E0061E265541B7AE08CFF8B55041BC0A53D41E265541014387ACF6B550411BDFA2CB1F265541AFD2BCB3F2B550418C365DC62126554192E71273EFB55041A598546523265541AC6D1691EAB55041072383DD252655410072FE94E7B55041C49CA19C272655414F74C03CE6B550416CA51166282655417E29DEF2DFB55041EDE01C142C265541219722F8DCB55041B68824EC2D2655413E41CAB4D9B550415B0F133C30265541BDE0FA4DD8B550412477543A312655419319A7B7D6B55041F7A7415A32265541974AE8D0D2B550413E91F91D35265541077BE619CFB55041A196DDBF3726554180E45528CDB55041A646F84B392655415461335CC8B55041645CF7723D265541A2BF1B59C2B550413CA41BA74226554104923410BDB55041D64A2E2848265541E8B1D601B7B550417ECAA79A4E265541C09E94EFB4B55041F32306625126554174F9CABCB1B550410E4678AC552655416BE18A88AFB5504169D470A15826554100085A03ADB550419F58FF025C2655418C5439CDABB5504157A757A95D265541636B7EC3A8B55041883299B96226554118880504A7B550410E7268A3652655411791D924A5B550410C3B0DC268265541919D90F7A2B55041B2C944A06C265541CA517556A1B5504138DAC9F46F26554117A2D076A0B55041ED01E4BD71265541393028199EB55041E1DEC99376265541022DA6769CB55041B41C2CEB79265541C733E4619AB5504102F3112C7E2655417150CDBB98B55041C72EC68A81265541FFB1D0D095B550416651888187265541221F4F7F93B55041A624DC478C265541BBF7781D93B55041D060EEB592265541E14FFC0B92B55041F9A62524932655417F6ABC6491B55041508D97BE912655416F01D5AB8FB550418759349C942655418729A14B8DB55041E5A32E90982655410D31C7578AB550418F95D4799D26554130A8578D87B550414251911EA2265541A476D6BE86B55041B78D9288A32655412420093186B55041FFF7483BA52655412D667EFA84B550413E874AF3A82655418178F2FA83B5504146B9B302AC2655414898A78183B550414A2C8A76AD265541B7A88B1A82B5504150556FC3B1265541E7772BA180B55041D468AE4BB4265541967779AB7EB55041DF8B029DB7265541948B6AFA7DB550410D5637D1B8265541E7A0F3627DB55041572CE47DBA265541A0AB03717CB55041226E9F2ABD2655416E2C8D987BB55041DAA2418FBF2655417BF5E01A7BB55041377ADAECC0265541FF92F38579B55041A694BBE5C22655418294AA4776B550419E09F7F0C626554154066FAA74B55041649DCA02C92655417697FE3773B55041183FB0C6CA265541105BDDCC73B5504193874634CB265541BACF734C79B550410FF05BC2C4265541E07D6EAA7EB550415656D677BE265541504CC88A81B550410680CB22BB2655412BB19B5E83B55041332A1F52B92655417EBC97DF87B550415701D259B6265541A00533D38EB550413619A590B2265541C14ECEC695B55041DB5C467CAE265541C087C2BC9AB550413CB98D62AB2655413E2C4E9AA2B550418C19AD01A126554117002D08A1B55041335D670C9E26554116D207AA9BB55041FD51013A972655410996B08895B550411C6221BD8F265541BC1E4A8C95B550412FBDF5AC8F2655413333338396B5504148E17A248B2655414855B89996B55041CC11A5F28A26554162788E659AB55041EE030B8C8226554185EB51D89AB55041E17A148E812655414C85D817A1B55041406122B17526554106000000C473F32998B5504120A55416A22655416FB78AC397B55041B7BB235CA1265541256367ED96B55041033D8ECE9E2655413F79AC539AB550412CF793269D26554158CF9F189BB5504172977A3EA0265541C473F32998B5504120A55416A2265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253612 - 1665394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000333333E32EC75041D7A370BD09255541713D0AC730C750411F85EB610F25554152B81EB52FC750410000003003255541AE47E13A32C75041C3F5284C032555419A9999E92FC75041EC51B8EEE8245541D7A370FD24C7504148E17A34EA245541CDCCCC8C1BC750419A999929EA245541333333531CC75041CDCCCC1CF6245541CDCCCC8C15C750419A9999A9F6245541E17A148E16C750417B14AE1702255541D7A3705D17C75041E17A142E03255541D7A3709D18C7504185EB516811255541A4703D5A1DC75041F6285CDF0E255541CDCCCCAC22C750415C8FC2050C255541AE47E17A28C75041A4703DEA08255541E17A14AE29C750415C8FC24508255541A4703DBA2EC750413D0AD74309255541333333E32EC75041D7A370BD09255541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000D7A3709D18C7504185EB5168112555417B14AE2714C75041AE47E1CA1325554185EB514812C75041B81E85CB142555417B14AE871BC75041CDCCCCDC252555418FC2F5D821C75041CDCCCCFC222555411F85EBF126C75041B81E857B202555413F3DD58C2EC7504114182E301C255541BAA3FE1F28C7504157227E430D255541E2FC12CC2EC750419602C97809255541063887C12EC7504127127A5909255541E17A14AE29C750415C8FC24508255541AE47E17A28C75041A4703DEA08255541CDCCCCAC22C750415C8FC2050C255541A4703D5A1DC75041F6285CDF0E255541D7A3709D18C7504185EB516811255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253612 - 3191927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000333333E32EC75041D7A370BD09255541713D0AC730C750411F85EB610F25554152B81EB52FC750410000003003255541AE47E13A32C75041C3F5284C032555419A9999E92FC75041EC51B8EEE8245541D7A370FD24C7504148E17A34EA245541CDCCCC8C1BC750419A999929EA245541333333531CC75041CDCCCC1CF6245541CDCCCC8C15C750419A9999A9F6245541E17A148E16C750417B14AE1702255541D7A3705D17C75041E17A142E03255541D7A3709D18C7504185EB516811255541A4703D5A1DC75041F6285CDF0E255541CDCCCCAC22C750415C8FC2050C255541AE47E17A28C75041A4703DEA08255541E17A14AE29C750415C8FC24508255541A4703DBA2EC750413D0AD74309255541333333E32EC75041D7A370BD09255541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000D7A3709D18C7504185EB5168112555417B14AE2714C75041AE47E1CA1325554185EB514812C75041B81E85CB142555417B14AE871BC75041CDCCCCDC252555418FC2F5D821C75041CDCCCCFC222555411F85EBF126C75041B81E857B202555413F3DD58C2EC7504114182E301C255541BAA3FE1F28C7504157227E430D255541E2FC12CC2EC750419602C97809255541063887C12EC7504127127A5909255541E17A14AE29C750415C8FC24508255541AE47E17A28C75041A4703DEA08255541CDCCCCAC22C750415C8FC2050C255541A4703D5A1DC75041F6285CDF0E255541D7A3709D18C7504185EB516811255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311186 - 3011808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000000000005049C6504100000010F16F54413333333362C65041A4703D6AE96F544114AE47D184C650413D0AD733E16F54411F85EBC181C650418FC2F588D86F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000077A819AFC3C650410AAD2176C96F5441713D0A37C6C6504100000040BE6F5441F6285C9F91C65041C3F5286CCA6F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441A4F83F5A49C65041A3F4022DF16F544126F482675FC6504177BB6490EA6F544134E7F03C61C65041B43E091BEA6F544126CB093665C6504142C63309E96F54419146581A75C65041921939EEE46F5441B949558C77C65041B067824CE46F54418904DAE584C650413A940E6EE16F544132D2EB8F82C65041AB4BE8CFDA6F54414813442082C65041E0618C93D96F5441D6DBE603C3C65041AF0B8FB8CA6F544177A819AFC3C650410AAD2176C96F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311186 - 3330511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000000000005049C6504100000010F16F54413333333362C65041A4703D6AE96F544114AE47D184C650413D0AD733E16F54411F85EBC181C650418FC2F588D86F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000077A819AFC3C650410AAD2176C96F5441713D0A37C6C6504100000040BE6F5441F6285C9F91C65041C3F5286CCA6F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441A4F83F5A49C65041A3F4022DF16F544126F482675FC6504177BB6490EA6F544134E7F03C61C65041B43E091BEA6F544126CB093665C6504142C63309E96F54419146581A75C65041921939EEE46F5441B949558C77C65041B067824CE46F54418904DAE584C650413A940E6EE16F544132D2EB8F82C65041AB4BE8CFDA6F54414813442082C65041E0618C93D96F5441D6DBE603C3C65041AF0B8FB8CA6F544177A819AFC3C650410AAD2176C96F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254158 - 3070811
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C7FAF8650411F85EBD1B72055410AD7A3E0A986504148E17A74A820554100000030A3865041EC51B8BEAB20554185EB5128A986504152B81E95BA205541295C8F62AF86504185EB51C8C920554166666636B5865041B81E857BC7205541F6285C7FAF8650411F85EBD1B7205541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000066666636B5865041B81E857BC72055419A999909BF865041A4703D9AC3205541E17A14AEBF86504166666646C22055410436F9BEBB8650416C66D028B520554138C39EF2AF8650414F2ACD0DB920554191177A1EB58650410132E184C720554166666636B5865041B81E857BC7205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254158 - 3365027
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C7FAF8650411F85EBD1B72055410AD7A3E0A986504148E17A74A820554100000030A3865041EC51B8BEAB20554185EB5128A986504152B81E95BA205541295C8F62AF86504185EB51C8C920554166666636B5865041B81E857BC7205541F6285C7FAF8650411F85EBD1B7205541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000066666636B5865041B81E857BC72055419A999909BF865041A4703D9AC3205541E17A14AEBF86504166666646C22055410436F9BEBB8650416C66D028B520554138C39EF2AF8650414F2ACD0DB920554191177A1EB58650410132E184C720554166666636B5865041B81E857BC7205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254419 - 374082
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000090000000AD7A3B074B150411F85EBE1A722544152B81E0569B15041EC51B84E982254415C8FC28566B150410AD7A3909A225441E17A143E64B15041000000A09C2254410AD7A3F07AB150419A999929B82254410AD7A34085B150418FC2F5D8BD2254418FC2F58888B15041EC51B8CEB9225441C3F528EC7DB1504152B81E35B42254410AD7A3B074B150411F85EBE1A7225441
+</a>
+
+<b>
+010600000001000000010300000001000000180000000BFCF27F72B15041AEE32AB0A4225441FEB4F2B874B150412270851EA3225441B39451C86CB15041B4C98215982254418EF6B29D6BB1504147E52B6696225441A4501F866AB150417BFCB13397225441CEA4380F69B15041EA574B47982254415BD70B1169B15041720CB8499822544138E287B368B150414E037898982254415A67EF6767B15041940A33C49922544104EB78A666B150419F3912739A2254417EDE18A16AB1504130D33CC19F225441931DBC656EB150419C0FD700A5225441FC2E91A071B1504101389380A82254416EDDAE3878B1504104285D62B12254416D384B4C79B150416EDE9589B322544175F18CF879B15041F61F42D3B522544122C1B5E97AB15041DD61EE1CB82254418CDACE5885B1504152F936BBBD225441F1C9287688B1504111FADBE5B9225441FF35270D84B1504187B40B71B7225441C3F528EC7DB1504152B81E35B42254410AD7A3B074B150411F85EBE1A72254419216D0D274B15041DD0C8CCBA72254410BFCF27F72B15041AEE32AB0A4225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256135 - 367713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000006666667612C050419A999999522A54418FC2F5D813C05041713D0A27562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A54415C8FC2756CC05041CDCCCC8C502A5441F6285C7F6BC05041295C8F424D2A5441F6285CEF65C05041713D0A473A2A5441AE47E19A50C05041B81E857B402A544152B81ED52EC0504152B81E554A2A54416666667612C050419A999999522A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256271 - 367713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441B81E855BF9BF50413D0AD783522A54410AD7A350FCBF5041B81E858B602A5441E17A14CEFDBF5041D7A3709D672A5441CDCCCC5CFEBF50413D0AD7436A2A54410AD7A3A000C0504133333303752A5441295C8FD202C05041CDCCCC6C7F2A54419A9999990BC0504185EB51C8812A54419A99997911C05041E17A144E852A5441000000901AC05041A4703D7A702A5441666666E645C05041713D0A676B2A544152B81ED566C0504185EB5148712A54416666662665C050413D0AD7A3672A5441B81E850B67C05041AE47E16A602A544148E17A0473C050418FC2F588622A5441000000D071C05041B81E850B562A54413333331371C050410AD7A340502A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256369 - 189705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000014AE4771ABBF50410AD7A37086275441B81E855BAEBF50415C8FC2B587275441F6285CBFB1BF50415C8FC2458A27544166666606B4BF5041EC51B84E8C2754415C8FC225B8BF504114AE47D1902754418FC2F538BBBF5041F6285C7F962754415C8FC2D5BBBF5041AE47E1BA992754418FC2F538BBBF50413D0AD7439C275441E17A14CEBEBF50411F85EBA1A02754415C8FC275C3BF504152B81EC59D2754413D0AD713C4BF5041CDCCCC5C9D27544185EB51C8C4BF50415C8FC2E59C275441D7A3708DC2BF5041CDCCCCDC9927544100000060C1BF504185EB510898275441E17A147EC0BF50418FC2F5B8962754413D0AD743BFBF50418FC2F53895275441333333B3BEBF5041F6285C5F942754411F85EB41BEBF5041E17A141E93275441A4703D8ABDBF50418FC2F5889127544148E17AC4BCBF50417B14AE479027544114AE4791BBBF5041295C8F328F275441713D0A07BABF5041AE47E1DA8D27544166666636B9BF5041B81E852B8D275441713D0A47B8BF50417B14AE178C2754417B14AE97B7BF5041333333438B275441AE47E12AB7BF504185EB51A88A2754418FC2F5B8B6BF5041C3F5283C8A275441AE47E12AB7BF5041D7A3701D89275441F6285CFFB7BF5041333333938727544152B81EF5B3BF5041666666B682275441A4703DAAB4BF50413D0AD7F380275441AE47E15AB2BF50415C8FC2757E275441B81E856BAEBF5041D7A3701D78275441000000B0AABF50418FC2F598792754418FC2F548A7BF5041666666F67627544152B81E45A1BF5041AE47E11A77275441EC51B8DEA1BF5041713D0A3778275441CDCCCCFCA1BF5041295C8F427927544100000040A3BF5041A4703D9A7B2754415C8FC2A5A4BF5041D7A370BD7D275441E17A140EA0BF5041B81E859B8127544152B81E55A0BF5041713D0A57822754418FC2F5A89FBF5041D7A370AD832754410AD7A3C09ABF504152B81EF5862754419A9999A99CBF50411F85EB51882754410AD7A3A0A0BF50419A9999398627544148E17AD4A3BF5041713D0A4785275441E17A14CEA7BF5041CDCCCC8C84275441D7A3701DA9BF50418FC2F5088527544114AE4771ABBF50410AD7A37086275441
+</a>
+
+<b>
+010600000001000000010300000001000000280000005C8FC225B8BF504114AE47D1902754418180CC16BABF5041BB33636794275441F7039264BABF504125260BF79427544147754BA3BABF5041D9B9E76A952754411F85EB41BEBF5041E17A141E93275441A4703D8ABDBF50418FC2F5889127544148E17AC4BCBF50417B14AE4790275441713D0A07BABF5041AE47E1DA8D27544166666636B9BF5041B81E852B8D275441713D0A47B8BF50417B14AE178C2754417B14AE97B7BF5041333333438B275441AE47E12AB7BF504185EB51A88A2754418FC2F5B8B6BF5041C3F5283C8A275441AE47E12AB7BF5041D7A3701D89275441F6285CFFB7BF5041333333938727544152B81EF5B3BF5041666666B682275441A4703DAAB4BF50413D0AD7F380275441AE47E15AB2BF50415C8FC2757E275441B81E856BAEBF5041D7A3701D78275441000000B0AABF50418FC2F598792754418FC2F548A7BF5041666666F67627544152B81E45A1BF5041AE47E11A77275441EC51B8DEA1BF5041713D0A3778275441CDCCCCFCA1BF5041295C8F427927544100000040A3BF5041A4703D9A7B2754415C8FC2A5A4BF5041D7A370BD7D275441E17A140EA0BF5041B81E859B8127544152B81E55A0BF5041713D0A57822754418FC2F5A89FBF5041D7A370AD832754410AD7A3C09ABF504152B81EF5862754419A9999A99CBF50411F85EB51882754410AD7A3A0A0BF50419A9999398627544148E17AD4A3BF5041713D0A4785275441E17A14CEA7BF5041CDCCCC8C84275441D7A3701DA9BF50418FC2F5088527544114AE4771ABBF50410AD7A37086275441B81E855BAEBF50415C8FC2B587275441F6285CBFB1BF50415C8FC2458A27544166666606B4BF5041EC51B84E8C2754415C8FC225B8BF504114AE47D190275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256369 - 350223
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000014AE4771ABBF50410AD7A37086275441B81E855BAEBF50415C8FC2B587275441F6285CBFB1BF50415C8FC2458A27544166666606B4BF5041EC51B84E8C2754415C8FC225B8BF504114AE47D1902754418FC2F538BBBF5041F6285C7F962754415C8FC2D5BBBF5041AE47E1BA992754418FC2F538BBBF50413D0AD7439C275441E17A14CEBEBF50411F85EBA1A02754415C8FC275C3BF504152B81EC59D2754413D0AD713C4BF5041CDCCCC5C9D27544185EB51C8C4BF50415C8FC2E59C275441D7A3708DC2BF5041CDCCCCDC9927544100000060C1BF504185EB510898275441E17A147EC0BF50418FC2F5B8962754413D0AD743BFBF50418FC2F53895275441333333B3BEBF5041F6285C5F942754411F85EB41BEBF5041E17A141E93275441A4703D8ABDBF50418FC2F5889127544148E17AC4BCBF50417B14AE479027544114AE4791BBBF5041295C8F328F275441713D0A07BABF5041AE47E1DA8D27544166666636B9BF5041B81E852B8D275441713D0A47B8BF50417B14AE178C2754417B14AE97B7BF5041333333438B275441AE47E12AB7BF504185EB51A88A2754418FC2F5B8B6BF5041C3F5283C8A275441AE47E12AB7BF5041D7A3701D89275441F6285CFFB7BF5041333333938727544152B81EF5B3BF5041666666B682275441A4703DAAB4BF50413D0AD7F380275441AE47E15AB2BF50415C8FC2757E275441B81E856BAEBF5041D7A3701D78275441000000B0AABF50418FC2F598792754418FC2F548A7BF5041666666F67627544152B81E45A1BF5041AE47E11A77275441EC51B8DEA1BF5041713D0A3778275441CDCCCCFCA1BF5041295C8F427927544100000040A3BF5041A4703D9A7B2754415C8FC2A5A4BF5041D7A370BD7D275441E17A140EA0BF5041B81E859B8127544152B81E55A0BF5041713D0A57822754418FC2F5A89FBF5041D7A370AD832754410AD7A3C09ABF504152B81EF5862754419A9999A99CBF50411F85EB51882754410AD7A3A0A0BF50419A9999398627544148E17AD4A3BF5041713D0A4785275441E17A14CEA7BF5041CDCCCC8C84275441D7A3701DA9BF50418FC2F5088527544114AE4771ABBF50410AD7A37086275441
+</a>
+
+<b>
+010600000001000000010300000001000000280000005C8FC225B8BF504114AE47D1902754418180CC16BABF5041BB33636794275441F7039264BABF504125260BF79427544147754BA3BABF5041D9B9E76A952754411F85EB41BEBF5041E17A141E93275441A4703D8ABDBF50418FC2F5889127544148E17AC4BCBF50417B14AE4790275441713D0A07BABF5041AE47E1DA8D27544166666636B9BF5041B81E852B8D275441713D0A47B8BF50417B14AE178C2754417B14AE97B7BF5041333333438B275441AE47E12AB7BF504185EB51A88A2754418FC2F5B8B6BF5041C3F5283C8A275441AE47E12AB7BF5041D7A3701D89275441F6285CFFB7BF5041333333938727544152B81EF5B3BF5041666666B682275441A4703DAAB4BF50413D0AD7F380275441AE47E15AB2BF50415C8FC2757E275441B81E856BAEBF5041D7A3701D78275441000000B0AABF50418FC2F598792754418FC2F548A7BF5041666666F67627544152B81E45A1BF5041AE47E11A77275441EC51B8DEA1BF5041713D0A3778275441CDCCCCFCA1BF5041295C8F427927544100000040A3BF5041A4703D9A7B2754415C8FC2A5A4BF5041D7A370BD7D275441E17A140EA0BF5041B81E859B8127544152B81E55A0BF5041713D0A57822754418FC2F5A89FBF5041D7A370AD832754410AD7A3C09ABF504152B81EF5862754419A9999A99CBF50411F85EB51882754410AD7A3A0A0BF50419A9999398627544148E17AD4A3BF5041713D0A4785275441E17A14CEA7BF5041CDCCCC8C84275441D7A3701DA9BF50418FC2F5088527544114AE4771ABBF50410AD7A37086275441B81E855BAEBF50415C8FC2B587275441F6285CBFB1BF50415C8FC2458A27544166666606B4BF5041EC51B84E8C2754415C8FC225B8BF504114AE47D190275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256382 - 34387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000006D00000000000000C9C050411F85EB51E52A5441C3F5283CCAC0504152B81E85E52A54418FC2F508CCC050419A999999E52A5441B81E85CBCDC050419A999999E52A54418FC2F5B8CEC05041A4703DBAE52A5441EC51B80ED0C050410AD7A3A0E52A54417B14AE97D1C050413D0AD723E52A5441AE47E1CAD2C05041A4703DEAE42A5441CDCCCC6CD5C0504185EB51B8E42A54413D0AD743D6C05041F6285C1FE42A544185EB51B8D8C05041AE47E13AE22A5441E17A14DEDAC0504185EB51B8E02A54415C8FC295DCC050411F85EBC1DF2A5441CDCCCC4CDEC05041D7A370EDDE2A5441000000D0DFC05041A4703DDADD2A5441295C8F12E1C050413D0AD743DC2A54419A9999D9E2C0504100000080DA2A5441B81E856BE4C05041EC51B86ED92A544166666626E5C050417B14AE57D82A5441EC51B8CEE5C0504185EB5108D82A544148E17A64E6C05041E17A145ED82A5441CDCCCC6CE6C0504100000000D92A5441C3F528FCE6C05041A4703D7AD92A54410AD7A360E7C05041AE47E17ADA2A5441A4703DFAE7C050417B14AEB7D82A5441713D0A47E8C0504100000040D82A54417B14AEA7E8C05041CDCCCC0CD82A5441295C8F32E9C050411F85EB21D82A54413D0AD713EAC050411F85EBF1D82A54418FC2F598EAC050419A999909D92A54419A999919EBC05041E17A146ED92A5441D7A3709DEBC05041F6285C4FD92A54410AD7A330ECC0504166666646D92A5441A4703D9AECC05041AE47E1EAD92A5441A4703D1AEDC0504133333333DB2A5441295C8F72EDC05041295C8FE2D92A5441C3F528FCEDC05041713D0A67D92A5441F6285C4FEFC0504185EB5128D92A5441CDCCCCFCEFC05041295C8FC2D82A54417B14AE87EEC05041E17A144ED82A5441AE47E1CAEBC05041CDCCCCFCD62A5441D7A3706DEAC0504100000010D62A5441A4703D1AE9C0504133333353D52A544166666676E6C05041666666E6D32A5441295C8FB2E4C050411F85EB11D32A5441F6285C2FE3C050419A9999B9D22A544166666606E1C05041C3F5289CD02A544185EB51C8DFC05041F6285CCFD02A54410AD7A350DEC0504100000080D02A54410AD7A3B0DCC050418FC2F598CF2A544148E17AC4DBC05041333333A3CE2A5441D7A3707DDAC05041A4703DAACC2A544152B81EF5D9C050419A999949CB2A54419A9999C9D9C0504114AE4771CB2A54419A999969D4C05041713D0A57D02A544133333353D1C0504100000040CF2A544148E17A74CEC050419A9999D9CC2A54410AD7A3D0CCC0504148E17A24C82A544185EB5108CCC050415C8FC235C32A5441C3F528BCCCC0504166666646BE2A544114AE47E1CDC0504148E17A04BD2A5441F6285C1FD1C050413D0AD773B92A54410AD7A380D4C0504114AE47C1B52A5441D7A3700DD9C050413D0AD7C3B02A54417B14AE77D9C05041B81E85FBAF2A5441333333E3DCC05041AE47E18AA92A54411F85EBC1D1C05041F6285C0F9E2A5441F6285C6FDAC050413D0AD713972A54418FC2F5B8DFC05041CDCCCCFC922A5441F6285CCFE3C050415C8FC2658F2A54410AD7A380E7C050417B14AEE78B2A544152B81EE5E9C05041D7A3709D882A54410AD7A390EBC050419A999909862A5441C3F5287CEBC0504114AE47F1802A544185EB5158EAC05041666666167F2A5441F6285C5FE8C05041CDCCCCEC762A5441AE47E12ADEC0504133333323792A5441D7A3705DD4C05041295C8F427B2A5441C3F5289CCAC05041000000607D2A544152B81E25C3C0504148E17A747F2A5441E17A14DEBDC05041CDCCCCEC802A54413D0AD753C0C050415C8FC2C58D2A5441D7A3704DBCC05041000000508E2A544152B81E95BBC05041666666768E2A54410AD7A310B8C050415C8FC2558F2A5441A4703DCAB0C050413D0AD743902A54411F85EB81B0C0504166666616962A5441D7A3708DAFC0504152B81ED5A02A544100000000B1C050417B14AE57A82A5441E17A140EB1C0504185EB5118B92A5441AE47E16AB1C05041CDCCCC8CBD2A5441A4703DAAB3C050417B14AEE7C32A544148E17AA4AFC05041B81E85EBD42A5441295C8F62ADC05041C3F5286CD92A5441D7A3703DACC05041C3F528ECDA2A54411F85EB91ABC0504100000040DD2A544148E17AF4ACC05041F6285C8FDD2A544148E17A14ADC0504166666696DD2A54410AD7A390AFC05041AE47E1FADD2A544185EB5188B0C05041713D0A67DE2A544133333363B3C05041AE47E1AADF2A54418FC2F568B7C05041EC51B8EEE12A5441713D0A17B9C0504148E17AA4E22A54415C8FC2A5BCC05041D7A370EDE32A5441AE47E1DABFC05041B81E850BE52A54413D0AD7E3C0C050410AD7A320E52A5441295C8F02C6C05041A4703D4AE52A54413D0AD7E3C7C0504185EB5168E52A544100000000C9C050411F85EB51E52A544105000000EC51B82ECCC05041A4703D7AD32A5441E17A142ECBC05041295C8F12D22A54417B14AE27CCC050411F85EB61D12A54417B14AE27CDC050418FC2F5C8D22A5441EC51B82ECCC05041A4703D7AD32A5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C1FD1C050413D0AD773B92A54410A471DE6D1C05041C4686A9AB82A544144CE2B45D6C0504185D5FCD0B32A5441656D937CD9C0504105044DF2AF2A544189A9C27CD9C050410412F4F1AF2A54416E516637D0C0504108F423EBB32A544150C4C610CEC050416878AEA2B42A5441EA561CEBCCC050418CEE6D37B72A54417E005257CBC05041450E6338B82A5441CCC97CC4CAC05041F84438CBB82A5441781732E9CAC05041FE2D5839B92A544191BBB1A1CCC05041450E6338B82A544197A4D10FCDC05041AB7B0D5EB92A544197A4D10FCDC05041BD366DA8BA2A544197A4D10FCDC050411DBBF75FBB2A5441E46DFC7CCCC05041CFF1CCF2BB2A5441E46DFC7CCCC050418811C2F3BC2A54411EA8D6BACDC050417DA8782EBD2A54418DB1B08FCEC05041FE0FB944BC2A5441F6285C1FD1C050413D0AD773B92A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256382 - 75777
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000006D00000000000000C9C050411F85EB51E52A5441C3F5283CCAC0504152B81E85E52A54418FC2F508CCC050419A999999E52A5441B81E85CBCDC050419A999999E52A54418FC2F5B8CEC05041A4703DBAE52A5441EC51B80ED0C050410AD7A3A0E52A54417B14AE97D1C050413D0AD723E52A5441AE47E1CAD2C05041A4703DEAE42A5441CDCCCC6CD5C0504185EB51B8E42A54413D0AD743D6C05041F6285C1FE42A544185EB51B8D8C05041AE47E13AE22A5441E17A14DEDAC0504185EB51B8E02A54415C8FC295DCC050411F85EBC1DF2A5441CDCCCC4CDEC05041D7A370EDDE2A5441000000D0DFC05041A4703DDADD2A5441295C8F12E1C050413D0AD743DC2A54419A9999D9E2C0504100000080DA2A5441B81E856BE4C05041EC51B86ED92A544166666626E5C050417B14AE57D82A5441EC51B8CEE5C0504185EB5108D82A544148E17A64E6C05041E17A145ED82A5441CDCCCC6CE6C0504100000000D92A5441C3F528FCE6C05041A4703D7AD92A54410AD7A360E7C05041AE47E17ADA2A5441A4703DFAE7C050417B14AEB7D82A5441713D0A47E8C0504100000040D82A54417B14AEA7E8C05041CDCCCC0CD82A5441295C8F32E9C050411F85EB21D82A54413D0AD713EAC050411F85EBF1D82A54418FC2F598EAC050419A999909D92A54419A999919EBC05041E17A146ED92A5441D7A3709DEBC05041F6285C4FD92A54410AD7A330ECC0504166666646D92A5441A4703D9AECC05041AE47E1EAD92A5441A4703D1AEDC0504133333333DB2A5441295C8F72EDC05041295C8FE2D92A5441C3F528FCEDC05041713D0A67D92A5441F6285C4FEFC0504185EB5128D92A5441CDCCCCFCEFC05041295C8FC2D82A54417B14AE87EEC05041E17A144ED82A5441AE47E1CAEBC05041CDCCCCFCD62A5441D7A3706DEAC0504100000010D62A5441A4703D1AE9C0504133333353D52A544166666676E6C05041666666E6D32A5441295C8FB2E4C050411F85EB11D32A5441F6285C2FE3C050419A9999B9D22A544166666606E1C05041C3F5289CD02A544185EB51C8DFC05041F6285CCFD02A54410AD7A350DEC0504100000080D02A54410AD7A3B0DCC050418FC2F598CF2A544148E17AC4DBC05041333333A3CE2A5441D7A3707DDAC05041A4703DAACC2A544152B81EF5D9C050419A999949CB2A54419A9999C9D9C0504114AE4771CB2A54419A999969D4C05041713D0A57D02A544133333353D1C0504100000040CF2A544148E17A74CEC050419A9999D9CC2A54410AD7A3D0CCC0504148E17A24C82A544185EB5108CCC050415C8FC235C32A5441C3F528BCCCC0504166666646BE2A544114AE47E1CDC0504148E17A04BD2A5441F6285C1FD1C050413D0AD773B92A54410AD7A380D4C0504114AE47C1B52A5441D7A3700DD9C050413D0AD7C3B02A54417B14AE77D9C05041B81E85FBAF2A5441333333E3DCC05041AE47E18AA92A54411F85EBC1D1C05041F6285C0F9E2A5441F6285C6FDAC050413D0AD713972A54418FC2F5B8DFC05041CDCCCCFC922A5441F6285CCFE3C050415C8FC2658F2A54410AD7A380E7C050417B14AEE78B2A544152B81EE5E9C05041D7A3709D882A54410AD7A390EBC050419A999909862A5441C3F5287CEBC0504114AE47F1802A544185EB5158EAC05041666666167F2A5441F6285C5FE8C05041CDCCCCEC762A5441AE47E12ADEC0504133333323792A5441D7A3705DD4C05041295C8F427B2A5441C3F5289CCAC05041000000607D2A544152B81E25C3C0504148E17A747F2A5441E17A14DEBDC05041CDCCCCEC802A54413D0AD753C0C050415C8FC2C58D2A5441D7A3704DBCC05041000000508E2A544152B81E95BBC05041666666768E2A54410AD7A310B8C050415C8FC2558F2A5441A4703DCAB0C050413D0AD743902A54411F85EB81B0C0504166666616962A5441D7A3708DAFC0504152B81ED5A02A544100000000B1C050417B14AE57A82A5441E17A140EB1C0504185EB5118B92A5441AE47E16AB1C05041CDCCCC8CBD2A5441A4703DAAB3C050417B14AEE7C32A544148E17AA4AFC05041B81E85EBD42A5441295C8F62ADC05041C3F5286CD92A5441D7A3703DACC05041C3F528ECDA2A54411F85EB91ABC0504100000040DD2A544148E17AF4ACC05041F6285C8FDD2A544148E17A14ADC0504166666696DD2A54410AD7A390AFC05041AE47E1FADD2A544185EB5188B0C05041713D0A67DE2A544133333363B3C05041AE47E1AADF2A54418FC2F568B7C05041EC51B8EEE12A5441713D0A17B9C0504148E17AA4E22A54415C8FC2A5BCC05041D7A370EDE32A5441AE47E1DABFC05041B81E850BE52A54413D0AD7E3C0C050410AD7A320E52A5441295C8F02C6C05041A4703D4AE52A54413D0AD7E3C7C0504185EB5168E52A544100000000C9C050411F85EB51E52A544105000000EC51B82ECCC05041A4703D7AD32A5441E17A142ECBC05041295C8F12D22A54417B14AE27CCC050411F85EB61D12A54417B14AE27CDC050418FC2F5C8D22A5441EC51B82ECCC05041A4703D7AD32A5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C1FD1C050413D0AD773B92A54410A471DE6D1C05041C4686A9AB82A544144CE2B45D6C0504185D5FCD0B32A5441656D937CD9C0504105044DF2AF2A544189A9C27CD9C050410412F4F1AF2A54416E516637D0C0504108F423EBB32A544150C4C610CEC050416878AEA2B42A5441EA561CEBCCC050418CEE6D37B72A54417E005257CBC05041450E6338B82A5441CCC97CC4CAC05041F84438CBB82A5441781732E9CAC05041FE2D5839B92A544191BBB1A1CCC05041450E6338B82A544197A4D10FCDC05041AB7B0D5EB92A544197A4D10FCDC05041BD366DA8BA2A544197A4D10FCDC050411DBBF75FBB2A5441E46DFC7CCCC05041CFF1CCF2BB2A5441E46DFC7CCCC050418811C2F3BC2A54411EA8D6BACDC050417DA8782EBD2A54418DB1B08FCEC05041FE0FB944BC2A5441F6285C1FD1C050413D0AD773B92A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256805 - 182216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E5598AE50418FC2F5F86D105541F6285C0F99AE5041666666E66E10554114AE47A19FAE5041E17A140E7610554152B81E65A4AE504185EB51287A10554152B81E55A8AE5041B81E859B7C1055410AD7A3A0C5AE5041AE47E1EA51105541000000A0B4AE5041EC51B8AE43105541666666069BAE5041E17A14FE6810554152B81E5598AE50418FC2F5F86D105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256805 - 368783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E5598AE50418FC2F5F86D105541F6285C0F99AE5041666666E66E10554114AE47A19FAE5041E17A140E7610554152B81E65A4AE504185EB51287A10554152B81E55A8AE5041B81E859B7C1055410AD7A3A0C5AE5041AE47E1EA51105541000000A0B4AE5041EC51B8AE43105541666666069BAE5041E17A14FE6810554152B81E5598AE50418FC2F5F86D105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256885 - 182216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E55A8AE5041B81E859B7C105541E17A14DEB0AE5041C3F528EC81105541E17A140EC3AE5041EC51B80E8F105541D7A3703DC7AE5041295C8FD292105541CDCCCCCCCCAE5041A4703D0A991055418FC2F508CEAE5041666666F698105541AE47E13AE9AE50413D0AD75371105541A4703D0AE9AE50411F85EB916F1055410AD7A3A0C5AE5041AE47E1EA5110554152B81E55A8AE5041B81E859B7C105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256885 - 368783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E55A8AE5041B81E859B7C105541E17A14DEB0AE5041C3F528EC81105541E17A140EC3AE5041EC51B80E8F105541D7A3703DC7AE5041295C8FD292105541CDCCCCCCCCAE5041A4703D0A991055418FC2F508CEAE5041666666F698105541AE47E13AE9AE50413D0AD75371105541A4703D0AE9AE50411F85EB916F1055410AD7A3A0C5AE5041AE47E1EA5110554152B81E55A8AE5041B81E859B7C105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257685 - 1459393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000240000009A99996917FC504152B81E75B94955410000007019FC5041713D0A47B6495541B81E85BB1AFC5041E17A143EB4495541A4703D8A19FC504114AE4771B34955418FC2F5C81CFC50410AD7A3C0AD49554185EB517819FC504148E17A44AB495541EC51B89E15FC50419A999989A8495541F6285CEF10FC504114AE47C1A4495541B81E853B0DFC504152B81E35A14955411F85EB110CFC50417B14AE37A049554152B81E9509FC50415C8FC2459E49554114AE47A1FEFB5041713D0AA7B4495541AE47E1BAFFFB5041E17A14DEB6495541C3F5281C00FC5041CDCCCC8CB74955410AD7A3C003FC504114AE47D1BE49554185EB519807FC504133333303C74955418FC2F5880AFC5041AE47E14ACA4955419A99999910FC5041295C8FB2CE49554114AE474116FC5041D7A3706DD349554185EB51981DFC5041E17A14FED949554185EB518823FC5041B81E851BDF4955417B14AEB72CFC5041EC51B8BEDE495541D7A370AD34FC50411F85EBD1DC4955415C8FC24534FC504166666646DB49554148E17AA433FC50411F85EB21D94955416666662633FC5041CDCCCCBCD5495541EC51B88E33FC504152B81E35D349554114AE47E133FC5041D7A370CDD04955417B14AEC734FC504114AE4781CE4955411F85EBA135FC504152B81E85CB495541D7A3701D36FC5041A4703DEAC9495541666666162BFC5041D7A370DDC34955410AD7A3C025FC5041B81E85CBC0495541F6285CBF21FC504166666676BE495541E17A149E19FC504166666686BA4955419A99996917FC504152B81E75B9495541
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000009A99996917FC504152B81E75B949554167D9B7E118FC5041A2E1F932B6495541B7B45B8A19FC50414F06A6A2B4495541B304C1C319FC5041ECF74FB1B3495541A4703D8A19FC504114AE4771B3495541C99C1AC01CFC50418F5500BAAD4955410A045A5419FC50418AA3F92AAB4955413A9E783215FC5041274F2355A84955411D25368F10FC5041360FDEB1A4495541F50001430CFC5041C4A36EF9A0495541E555F7AE09FC504154C43B299F49554119F5890408FC50417C34259B9F495541B891C89C05FC5041A87F6221A349554183B27E5E01FC50416CB3E070AB495541D52CF50100FC5041288CB235AE495541B48DA96BFFFB50415703E24CAF4955419A357097FDFB50414DBE7783B2495541AE47E1BAFFFB5041E17A14DEB6495541C3F5281C00FC5041CDCCCC8CB74955410AD7A3C003FC504114AE47D1BE49554185EB519807FC504133333303C74955418FC2F5880AFC5041AE47E14ACA4955419A99999910FC5041295C8FB2CE49554114AE474116FC5041D7A3706DD349554185EB51981DFC5041E17A14FED949554185EB518823FC5041B81E851BDF4955417B14AEB72CFC5041EC51B8BEDE4955417FCDC85E2EFC5041AB6880F5DD4955416B7392532FFC50415A4B65A1DD495541EFC14A9A31FC5041CF7E4790DD49554170485ACE32FC50419E99C745DD495541C694167F34FC5041AA78B578DC4955415C8FC24534FC504166666646DB49554148E17AA433FC50411F85EB21D94955416666662633FC5041CDCCCCBCD5495541EC51B88E33FC504152B81E35D349554114AE47E133FC5041D7A370CDD04955417B14AEC734FC504114AE4781CE49554111B3F38B35FC50414FF01097CB495541CD6A6BFC35FC50419F9506F5C9495541666666162BFC5041D7A370DDC34955410AD7A3C025FC5041B81E85CBC0495541F6285CBF21FC504166666676BE495541E17A149E19FC504166666686BA4955419A99996917FC504152B81E75B9495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257685 - 3606219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000240000009A99996917FC504152B81E75B94955410000007019FC5041713D0A47B6495541B81E85BB1AFC5041E17A143EB4495541A4703D8A19FC504114AE4771B34955418FC2F5C81CFC50410AD7A3C0AD49554185EB517819FC504148E17A44AB495541EC51B89E15FC50419A999989A8495541F6285CEF10FC504114AE47C1A4495541B81E853B0DFC504152B81E35A14955411F85EB110CFC50417B14AE37A049554152B81E9509FC50415C8FC2459E49554114AE47A1FEFB5041713D0AA7B4495541AE47E1BAFFFB5041E17A14DEB6495541C3F5281C00FC5041CDCCCC8CB74955410AD7A3C003FC504114AE47D1BE49554185EB519807FC504133333303C74955418FC2F5880AFC5041AE47E14ACA4955419A99999910FC5041295C8FB2CE49554114AE474116FC5041D7A3706DD349554185EB51981DFC5041E17A14FED949554185EB518823FC5041B81E851BDF4955417B14AEB72CFC5041EC51B8BEDE495541D7A370AD34FC50411F85EBD1DC4955415C8FC24534FC504166666646DB49554148E17AA433FC50411F85EB21D94955416666662633FC5041CDCCCCBCD5495541EC51B88E33FC504152B81E35D349554114AE47E133FC5041D7A370CDD04955417B14AEC734FC504114AE4781CE4955411F85EBA135FC504152B81E85CB495541D7A3701D36FC5041A4703DEAC9495541666666162BFC5041D7A370DDC34955410AD7A3C025FC5041B81E85CBC0495541F6285CBF21FC504166666676BE495541E17A149E19FC504166666686BA4955419A99996917FC504152B81E75B9495541
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000009A99996917FC504152B81E75B949554167D9B7E118FC5041A2E1F932B6495541B7B45B8A19FC50414F06A6A2B4495541B304C1C319FC5041ECF74FB1B3495541A4703D8A19FC504114AE4771B3495541C99C1AC01CFC50418F5500BAAD4955410A045A5419FC50418AA3F92AAB4955413A9E783215FC5041274F2355A84955411D25368F10FC5041360FDEB1A4495541F50001430CFC5041C4A36EF9A0495541E555F7AE09FC504154C43B299F49554119F5890408FC50417C34259B9F495541B891C89C05FC5041A87F6221A349554183B27E5E01FC50416CB3E070AB495541D52CF50100FC5041288CB235AE495541B48DA96BFFFB50415703E24CAF4955419A357097FDFB50414DBE7783B2495541AE47E1BAFFFB5041E17A14DEB6495541C3F5281C00FC5041CDCCCC8CB74955410AD7A3C003FC504114AE47D1BE49554185EB519807FC504133333303C74955418FC2F5880AFC5041AE47E14ACA4955419A99999910FC5041295C8FB2CE49554114AE474116FC5041D7A3706DD349554185EB51981DFC5041E17A14FED949554185EB518823FC5041B81E851BDF4955417B14AEB72CFC5041EC51B8BEDE4955417FCDC85E2EFC5041AB6880F5DD4955416B7392532FFC50415A4B65A1DD495541EFC14A9A31FC5041CF7E4790DD49554170485ACE32FC50419E99C745DD495541C694167F34FC5041AA78B578DC4955415C8FC24534FC504166666646DB49554148E17AA433FC50411F85EB21D94955416666662633FC5041CDCCCCBCD5495541EC51B88E33FC504152B81E35D349554114AE47E133FC5041D7A370CDD04955417B14AEC734FC504114AE4781CE49554111B3F38B35FC50414FF01097CB495541CD6A6BFC35FC50419F9506F5C9495541666666162BFC5041D7A370DDC34955410AD7A3C025FC5041B81E85CBC0495541F6285CBF21FC504166666676BE495541E17A149E19FC504166666686BA4955419A99996917FC504152B81E75B9495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3176739
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441C3F528FC203A5141EC51B83EFA7E5441D7A370CD2C3A51417B14AE97EF7E5441C3F528AC2B3A5141CDCCCCFCEE7E544101030000000100000017000000A4703D5AE73951417B14AE07067F544114AE47F1E2395141B81E85CB0B7F54411F85EB31DE395141C3F528BC0E7F5441F6285CDFDE3951418FC2F508107F54418FC2F518E33951418FC2F5080D7F544114AE47F1E5395141F6285C4F0A7F544114AE47D1F539514133333313F97E54419A999929E939514114AE47B1F57E5441AE47E11AE9395141E17A142EF87E5441A4703D8AE8395141D7A370FDF97E54419A9999F9E73951417B14AEF7FB7E5441EC51B88EE939514100000070FD7E544114AE47E1E8395141CDCCCCECFF7E54418FC2F538E63951419A9999D9FE7E5441295C8F42E53951413D0AD7D3007F544100000090E639514133333373017F5441CDCCCCDCE73951411F85EB81017F54419A999929E93951413D0AD703027F5441B81E85ABE9395141EC51B8CE027F5441713D0AD7E9395141B81E851B047F5441AE47E11AE9395141713D0A77057F544133333333E83951410AD7A3B0057F5441A4703D5AE73951417B14AE07067F54410103000000010000000C000000295C8F72EA395141F6285C8F1B7F54411F85EB31E83951410AD7A3501A7F54411F85EB11E7395141000000D0197F5441666666B6E53951413D0AD713197F5441A4703DFAE43951419A999979197F544100000090E63951413D0AD7731B7F5441F6285CBFE7395141CDCCCC4C1C7F5441F6285CEFE8395141295C8FB21C7F544133333393EA3951418FC2F5081D7F544185EB5158ED3951415C8FC2251D7F5441EC51B87EF0395141E17A14EE1D7F5441295C8F72EA395141F6285C8F1B7F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F544144FB3F30073A51411C4954CD0C7F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F5441B64111C7F53951419ED079851F7F544198876E48FA39514142766CB1217F544163FBC7C3FC395141C2DE99E6227F54413114263BFD3951414F758C5B227F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3176745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441C3F528FC203A5141EC51B83EFA7E5441D7A370CD2C3A51417B14AE97EF7E5441C3F528AC2B3A5141CDCCCCFCEE7E544101030000000100000017000000A4703D5AE73951417B14AE07067F544114AE47F1E2395141B81E85CB0B7F54411F85EB31DE395141C3F528BC0E7F5441F6285CDFDE3951418FC2F508107F54418FC2F518E33951418FC2F5080D7F544114AE47F1E5395141F6285C4F0A7F544114AE47D1F539514133333313F97E54419A999929E939514114AE47B1F57E5441AE47E11AE9395141E17A142EF87E5441A4703D8AE8395141D7A370FDF97E54419A9999F9E73951417B14AEF7FB7E5441EC51B88EE939514100000070FD7E544114AE47E1E8395141CDCCCCECFF7E54418FC2F538E63951419A9999D9FE7E5441295C8F42E53951413D0AD7D3007F544100000090E639514133333373017F5441CDCCCCDCE73951411F85EB81017F54419A999929E93951413D0AD703027F5441B81E85ABE9395141EC51B8CE027F5441713D0AD7E9395141B81E851B047F5441AE47E11AE9395141713D0A77057F544133333333E83951410AD7A3B0057F5441A4703D5AE73951417B14AE07067F54410103000000010000000C000000295C8F72EA395141F6285C8F1B7F54411F85EB31E83951410AD7A3501A7F54411F85EB11E7395141000000D0197F5441666666B6E53951413D0AD713197F5441A4703DFAE43951419A999979197F544100000090E63951413D0AD7731B7F5441F6285CBFE7395141CDCCCC4C1C7F5441F6285CEFE8395141295C8FB21C7F544133333393EA3951418FC2F5081D7F544185EB5158ED3951415C8FC2251D7F5441EC51B87EF0395141E17A14EE1D7F5441295C8F72EA395141F6285C8F1B7F5441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000F5C5A1DFDE3951419954C408107F5441FC4386F5E2395141CD0E1F220D7F5441FAAB04E5E3395141383F82450C7F5441F665A6CFE5395141FE4E926F0A7F544193E32A33E6395141FFF2D3070A7F5441FBB22D97E6395141B0C33F9B097F544107953435E93951417E4BD2C3067F54418CB4583FEC395141E77E0477037F5441F8543E50EE3951414973CF38017F54418F413CE5EF3951410A831F81FF7E5441D290C495F43951411DEBBD69FA7E5441CF35DCDAF5395141F373CC08F97E544142227A98EC395141CA8A7681F67E544103DF4C5EE93951414F0E83ADF57E544116840540E939514101300432F87E54419C07126CE83951413F9EF086FA7E5441E7C6B30DE73951411B29C0A8FB7E5441229700D9E7395141104D666BFC7E54417BBDA0A8E83951412BDA5ACBFB7E544173AAA50FEA395141E50ED7E8FC7E5441AD99CFB4E9395141B7B16A8CFE7E5441921FD6EDE8395141C57AC930FF7E54412E6778D5E6395141AC0CB2AAFE7E5441491F2C50E53951415A3A1570017F54414AF46C35E6395141D9AA2603027F5441C9647EC8E6395141BB48F1BD017F54413EED53DDE73951415A3A1570017F54412829BE21E9395141FB007A07027F5441543C8E89E939514179718B9A027F54414197D5A7E9395141AB4DBAA6037F544170C982E9E8395141DD29E9B2047F54417AD09B41E7395141A346A14E057F5441D90937AAE6395141B3CC7C56067F544114CEA134E73951414F9FC32E077F5441C09B1F24E63951413DCF4B32087F5441B25FE010E339514182DBD7100C7F5441F906B11EE03951412AF0FF8A0D7F5441A70BDD35DE395141AEC9B7B90E7F5441F5C5A1DFDE3951419954C408107F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3371275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441C3F528FC203A5141EC51B83EFA7E5441D7A370CD2C3A51417B14AE97EF7E5441C3F528AC2B3A5141CDCCCCFCEE7E544101030000000100000017000000A4703D5AE73951417B14AE07067F544114AE47F1E2395141B81E85CB0B7F54411F85EB31DE395141C3F528BC0E7F5441F6285CDFDE3951418FC2F508107F54418FC2F518E33951418FC2F5080D7F544114AE47F1E5395141F6285C4F0A7F544114AE47D1F539514133333313F97E54419A999929E939514114AE47B1F57E5441AE47E11AE9395141E17A142EF87E5441A4703D8AE8395141D7A370FDF97E54419A9999F9E73951417B14AEF7FB7E5441EC51B88EE939514100000070FD7E544114AE47E1E8395141CDCCCCECFF7E54418FC2F538E63951419A9999D9FE7E5441295C8F42E53951413D0AD7D3007F544100000090E639514133333373017F5441CDCCCCDCE73951411F85EB81017F54419A999929E93951413D0AD703027F5441B81E85ABE9395141EC51B8CE027F5441713D0AD7E9395141B81E851B047F5441AE47E11AE9395141713D0A77057F544133333333E83951410AD7A3B0057F5441A4703D5AE73951417B14AE07067F54410103000000010000000C000000295C8F72EA395141F6285C8F1B7F54411F85EB31E83951410AD7A3501A7F54411F85EB11E7395141000000D0197F5441666666B6E53951413D0AD713197F5441A4703DFAE43951419A999979197F544100000090E63951413D0AD7731B7F5441F6285CBFE7395141CDCCCC4C1C7F5441F6285CEFE8395141295C8FB21C7F544133333393EA3951418FC2F5081D7F544185EB5158ED3951415C8FC2251D7F5441EC51B87EF0395141E17A14EE1D7F5441295C8F72EA395141F6285C8F1B7F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F544144FB3F30073A51411C4954CD0C7F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F5441B64111C7F53951419ED079851F7F544198876E48FA39514142766CB1217F544163FBC7C3FC395141C2DE99E6227F54413114263BFD3951414F758C5B227F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3456882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441C3F528FC203A5141EC51B83EFA7E5441D7A370CD2C3A51417B14AE97EF7E5441C3F528AC2B3A5141CDCCCCFCEE7E544101030000000100000017000000A4703D5AE73951417B14AE07067F544114AE47F1E2395141B81E85CB0B7F54411F85EB31DE395141C3F528BC0E7F5441F6285CDFDE3951418FC2F508107F54418FC2F518E33951418FC2F5080D7F544114AE47F1E5395141F6285C4F0A7F544114AE47D1F539514133333313F97E54419A999929E939514114AE47B1F57E5441AE47E11AE9395141E17A142EF87E5441A4703D8AE8395141D7A370FDF97E54419A9999F9E73951417B14AEF7FB7E5441EC51B88EE939514100000070FD7E544114AE47E1E8395141CDCCCCECFF7E54418FC2F538E63951419A9999D9FE7E5441295C8F42E53951413D0AD7D3007F544100000090E639514133333373017F5441CDCCCCDCE73951411F85EB81017F54419A999929E93951413D0AD703027F5441B81E85ABE9395141EC51B8CE027F5441713D0AD7E9395141B81E851B047F5441AE47E11AE9395141713D0A77057F544133333333E83951410AD7A3B0057F5441A4703D5AE73951417B14AE07067F54410103000000010000000C000000295C8F72EA395141F6285C8F1B7F54411F85EB31E83951410AD7A3501A7F54411F85EB11E7395141000000D0197F5441666666B6E53951413D0AD713197F5441A4703DFAE43951419A999979197F544100000090E63951413D0AD7731B7F5441F6285CBFE7395141CDCCCC4C1C7F5441F6285CEFE8395141295C8FB21C7F544133333393EA3951418FC2F5081D7F544185EB5158ED3951415C8FC2251D7F5441EC51B87EF0395141E17A14EE1D7F5441295C8F72EA395141F6285C8F1B7F5441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000F5C5A1DFDE3951419954C408107F5441FC4386F5E2395141CD0E1F220D7F5441FAAB04E5E3395141383F82450C7F5441F665A6CFE5395141FE4E926F0A7F544193E32A33E6395141FFF2D3070A7F5441FBB22D97E6395141B0C33F9B097F544107953435E93951417E4BD2C3067F54418CB4583FEC395141E77E0477037F5441F8543E50EE3951414973CF38017F54418F413CE5EF3951410A831F81FF7E5441D290C495F43951411DEBBD69FA7E5441CF35DCDAF5395141F373CC08F97E544142227A98EC395141CA8A7681F67E544103DF4C5EE93951414F0E83ADF57E544116840540E939514101300432F87E54419C07126CE83951413F9EF086FA7E5441E7C6B30DE73951411B29C0A8FB7E5441229700D9E7395141104D666BFC7E54417BBDA0A8E83951412BDA5ACBFB7E544173AAA50FEA395141E50ED7E8FC7E5441AD99CFB4E9395141B7B16A8CFE7E5441921FD6EDE8395141C57AC930FF7E54412E6778D5E6395141AC0CB2AAFE7E5441491F2C50E53951415A3A1570017F54414AF46C35E6395141D9AA2603027F5441C9647EC8E6395141BB48F1BD017F54413EED53DDE73951415A3A1570017F54412829BE21E9395141FB007A07027F5441543C8E89E939514179718B9A027F54414197D5A7E9395141AB4DBAA6037F544170C982E9E8395141DD29E9B2047F54417AD09B41E7395141A346A14E057F5441D90937AAE6395141B3CC7C56067F544114CEA134E73951414F9FC32E077F5441C09B1F24E63951413DCF4B32087F5441B25FE010E339514182DBD7100C7F5441F906B11EE03951412AF0FF8A0D7F5441A70BDD35DE395141AEC9B7B90E7F5441F5C5A1DFDE3951419954C408107F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260029 - 3176739
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D8A2B3A5141EC51B8BE287F5441E17A14CE2E3A5141295C8F02247F544114AE47C1323A5141AE47E10A1E7F5441AE47E10A393A5141713D0AC7157F54419A9999193A3A514114AE47A1157F54411F85EB11453A514114AE47511B7F5441000000C04C3A5141F6285C7F117F5441B81E85AB513A51415C8FC235097F54411F85EB51593A514148E17A140A7F54411F85EBA1633A5141C3F5289C097F5441E17A145E6B3A514185EB5148087F5441A4703D5A6C3A5141C3F528AC077F54413D0AD7836C3A51411F85EB71027F5441F6285C7F6C3A51418FC2F598FF7E54417B14AEB75C3A5141F6285C5F007F5441A4703DCA563A51417B14AE47007F5441B81E85CB513A51419A9999B9FF7E544148E17A544C3A5141B81E855BFE7E5441000000D0483A51410AD7A300FD7E5441D7A3706D3F3A51413D0AD7B3F87E5441B81E85AB383A51418FC2F5A8F57E5441AE47E15A353A51417B14AE07F47E5441D7A370CD2C3A51417B14AE97EF7E5441C3F528FC203A5141EC51B83EFA7E5441F6285C8F173A5141AE47E18A027F54419A999939123A5141C3F5283C087F544100000090083A514185EB5128157F544152B81EB5FC3951417B14AEF7227F544100000010053A514148E17A74277F5441C3F528EC0A3A51410AD7A3D02A7F5441A4703DCA133A514148E17A942F7F5441A4703DFA1F3A514185EB5128377F5441E17A144E213A5141EC51B8CE367F5441A4703D8A2B3A5141EC51B8BE287F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F544144FB3F30073A51411C4954CD0C7F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F5441B64111C7F53951419ED079851F7F544198876E48FA39514142766CB1217F544163FBC7C3FC395141C2DE99E6227F54413114263BFD3951414F758C5B227F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260029 - 3371275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D8A2B3A5141EC51B8BE287F5441E17A14CE2E3A5141295C8F02247F544114AE47C1323A5141AE47E10A1E7F5441AE47E10A393A5141713D0AC7157F54419A9999193A3A514114AE47A1157F54411F85EB11453A514114AE47511B7F5441000000C04C3A5141F6285C7F117F5441B81E85AB513A51415C8FC235097F54411F85EB51593A514148E17A140A7F54411F85EBA1633A5141C3F5289C097F5441E17A145E6B3A514185EB5148087F5441A4703D5A6C3A5141C3F528AC077F54413D0AD7836C3A51411F85EB71027F5441F6285C7F6C3A51418FC2F598FF7E54417B14AEB75C3A5141F6285C5F007F5441A4703DCA563A51417B14AE47007F5441B81E85CB513A51419A9999B9FF7E544148E17A544C3A5141B81E855BFE7E5441000000D0483A51410AD7A300FD7E5441D7A3706D3F3A51413D0AD7B3F87E5441B81E85AB383A51418FC2F5A8F57E5441AE47E15A353A51417B14AE07F47E5441D7A370CD2C3A51417B14AE97EF7E5441C3F528FC203A5141EC51B83EFA7E5441F6285C8F173A5141AE47E18A027F54419A999939123A5141C3F5283C087F544100000090083A514185EB5128157F544152B81EB5FC3951417B14AEF7227F544100000010053A514148E17A74277F5441C3F528EC0A3A51410AD7A3D02A7F5441A4703DCA133A514148E17A942F7F5441A4703DFA1F3A514185EB5128377F5441E17A144E213A5141EC51B8CE367F5441A4703D8A2B3A5141EC51B8BE287F5441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F544144FB3F30073A51411C4954CD0C7F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F5441B64111C7F53951419ED079851F7F544198876E48FA39514142766CB1217F544163FBC7C3FC395141C2DE99E6227F54413114263BFD3951414F758C5B227F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260357 - 3185554
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000004000000D7A3700D1732514166666696647B544166666616163251418FC2F5C8647B54419A99999916325141A4703D9A657B5441D7A3700D1732514166666696647B544101030000000100000029000000B81E85EB49325141000000407D7B54411F85EB714A325141CDCCCCDC6E7B54418FC2F5C84A3251410AD7A3705F7B5441B81E856B4A32514133333373597B5441AE47E16A4A3251415C8FC285547B5441000000704A32514152B81E354D7B54419A9999E94932514148E17A843F7B54419A999979493251410AD7A380397B5441713D0A6749325141E17A14EE327B5441B81E859B49325141B81E85BB2D7B5441EC51B8EE47325141F6285CFF2E7B5441666666C642325141B81E857B317B5441E17A149E4132514152B81E15317B5441B81E85DB3D325141295C8F52327B54418FC2F5A83A32514185EB5178347B544148E17AB437325141713D0A87377B544166666696353251418FC2F5183B7B5441AE47E1CA3432514114AE47313C7B5441CDCCCC5C32325141713D0A97417B5441713D0A373032514100000010467B5441295C8F622E3251417B14AEC7497B5441F6285CAF2B3251410AD7A3104E7B5441AE47E15A2932514114AE4731517B5441B81E855B24325141A4703D1A567B5441B81E853B213251418FC2F578597B5441E17A142E20325141D7A370CD5A7B54410AD7A3E01D325141295C8FE25C7B5441713D0AD71A3251413D0AD763607B54413D0AD7F318325141666666C6627B5441000000E017325141AE47E16A647B5441D7A370ED16325141F6285C1F667B5441295C8F7232325141EC51B8EE917B5441333333E339325141295C8FF29C7B5441EC51B88E41325141F6285C9FA07B54416666668643325141B81E854B9D7B5441AE47E19A443251417B14AEC7997B54416666669645325141B81E851B977B544152B81E95473251417B14AE57937B5441B81E856B4832514114AE47318E7B5441EC51B8FE483251410AD7A370897B5441B81E85EB49325141000000407D7B5441
+</a>
+
+<b>
+01060000000100000001030000000100000034000000A91F5CA217325141AEFAB309667B544185B0BD131832514155A292EB677B54412C589CF51932514147A383776A7B5441901D9F081E3251416E19606F717B54415313DB73273251410528E66D807B54410564823E2E3251418D23B83D8B7B54419D3857D23432514154BE8B72957B5441CEB7FF083A325141A5C29D049D7B54413072F226423251416C8A3F9D9F7B5441249B60F343325141801DAE0E9E7B5441B577D09C44325141B1D639E59B7B5441B08389AD453251411D5F2D81997B54415462037546325141C3E60C3F977B54418DC83962473251412D343808947B5441A8E7D41648325141D2D20C3A907B544155510C0D493251411194D1B3887B5441E7CF4E6B49325141DDCAA0D9837B544171D24ED049325141A5829CA67E7B5441B72747DF493251411F9354E17D7B54414BF7FF004A325141466F59F37A7B54418A4D540B4A3251410C0346D8797B54415D0C732E4A32514144C6D015767B544151C8F55E4A325141375264E4707B5441F1590C934A325141D8CB17FE687B5441088E66B54A325141E423DCE7627B5441D2B931B14A32514187019FEA5D7B54416C30A69C4A32514111F774995C7B5441A5DA1C6B4A32514171116F50567B5441022A45684A325141C5378E6B4C7B5441067DE3234A32514130E26C74457B54414DDD72024A325141686C700C427B544101B1A9C1493251411DBE665F3D7B54419515EB7049325141E24B996D367B5441D9249F7149325141C1DACBE1317B544128E4635949325141E06B19022F7B544153B848C7473251419AA2B00A2E7B5441F589189943325141AAB7AE07307B54413C2F138F3C3251419F13D631337B5441A431BAFB39325141D3C48F2B357B5441BCB56C95383251419DEE4A9E367B544105566FD1363251412AA7D305397B544143ECF69C343251416E6144973C7B5441EE4CA1262E325141237FCA264A7B5441E6D7C8EB2A3251416CEE27174F7B5441AC4CB4C927325141877E6EBB527B5441BA7E9A5524325141C3CF9E20567B54419C075C6C2232514189993830587B5441DD222BEF1F325141332557065B7B54416750D7781D32514130A6555A5D7B544121D929A61B325141C098D6745F7B54412AB8A7FF173251414C47A03A647B5441A91F5CA217325141AEFAB309667B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260357 - 3399435
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000004000000D7A3700D1732514166666696647B544166666616163251418FC2F5C8647B54419A99999916325141A4703D9A657B5441D7A3700D1732514166666696647B544101030000000100000029000000B81E85EB49325141000000407D7B54411F85EB714A325141CDCCCCDC6E7B54418FC2F5C84A3251410AD7A3705F7B5441B81E856B4A32514133333373597B5441AE47E16A4A3251415C8FC285547B5441000000704A32514152B81E354D7B54419A9999E94932514148E17A843F7B54419A999979493251410AD7A380397B5441713D0A6749325141E17A14EE327B5441B81E859B49325141B81E85BB2D7B5441EC51B8EE47325141F6285CFF2E7B5441666666C642325141B81E857B317B5441E17A149E4132514152B81E15317B5441B81E85DB3D325141295C8F52327B54418FC2F5A83A32514185EB5178347B544148E17AB437325141713D0A87377B544166666696353251418FC2F5183B7B5441AE47E1CA3432514114AE47313C7B5441CDCCCC5C32325141713D0A97417B5441713D0A373032514100000010467B5441295C8F622E3251417B14AEC7497B5441F6285CAF2B3251410AD7A3104E7B5441AE47E15A2932514114AE4731517B5441B81E855B24325141A4703D1A567B5441B81E853B213251418FC2F578597B5441E17A142E20325141D7A370CD5A7B54410AD7A3E01D325141295C8FE25C7B5441713D0AD71A3251413D0AD763607B54413D0AD7F318325141666666C6627B5441000000E017325141AE47E16A647B5441D7A370ED16325141F6285C1F667B5441295C8F7232325141EC51B8EE917B5441333333E339325141295C8FF29C7B5441EC51B88E41325141F6285C9FA07B54416666668643325141B81E854B9D7B5441AE47E19A443251417B14AEC7997B54416666669645325141B81E851B977B544152B81E95473251417B14AE57937B5441B81E856B4832514114AE47318E7B5441EC51B8FE483251410AD7A370897B5441B81E85EB49325141000000407D7B5441
+</a>
+
+<b>
+01060000000100000001030000000100000034000000A91F5CA217325141AEFAB309667B544185B0BD131832514155A292EB677B54412C589CF51932514147A383776A7B5441901D9F081E3251416E19606F717B54415313DB73273251410528E66D807B54410564823E2E3251418D23B83D8B7B54419D3857D23432514154BE8B72957B5441CEB7FF083A325141A5C29D049D7B54413072F226423251416C8A3F9D9F7B5441249B60F343325141801DAE0E9E7B5441B577D09C44325141B1D639E59B7B5441B08389AD453251411D5F2D81997B54415462037546325141C3E60C3F977B54418DC83962473251412D343808947B5441A8E7D41648325141D2D20C3A907B544155510C0D493251411194D1B3887B5441E7CF4E6B49325141DDCAA0D9837B544171D24ED049325141A5829CA67E7B5441B72747DF493251411F9354E17D7B54414BF7FF004A325141466F59F37A7B54418A4D540B4A3251410C0346D8797B54415D0C732E4A32514144C6D015767B544151C8F55E4A325141375264E4707B5441F1590C934A325141D8CB17FE687B5441088E66B54A325141E423DCE7627B5441D2B931B14A32514187019FEA5D7B54416C30A69C4A32514111F774995C7B5441A5DA1C6B4A32514171116F50567B5441022A45684A325141C5378E6B4C7B5441067DE3234A32514130E26C74457B54414DDD72024A325141686C700C427B544101B1A9C1493251411DBE665F3D7B54419515EB7049325141E24B996D367B5441D9249F7149325141C1DACBE1317B544128E4635949325141E06B19022F7B544153B848C7473251419AA2B00A2E7B5441F589189943325141AAB7AE07307B54413C2F138F3C3251419F13D631337B5441A431BAFB39325141D3C48F2B357B5441BCB56C95383251419DEE4A9E367B544105566FD1363251412AA7D305397B544143ECF69C343251416E6144973C7B5441EE4CA1262E325141237FCA264A7B5441E6D7C8EB2A3251416CEE27174F7B5441AC4CB4C927325141877E6EBB527B5441BA7E9A5524325141C3CF9E20567B54419C075C6C2232514189993830587B5441DD222BEF1F325141332557065B7B54416750D7781D32514130A6555A5D7B544121D929A61B325141C098D6745F7B54412AB8A7FF173251414C47A03A647B5441A91F5CA217325141AEFAB309667B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261394 - 3077246
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000013000000A4703D0AE46E5141E17A140E32395441D7A3707DE46E5141CDCCCCAC31395441713D0A87E36E51416666661631395441295C8FF2E06E5141CDCCCC4C3B395441713D0A47D96E514148E17AB4443954413D0AD7B3DF6E51417B14AEC7463954419A999909E06E5141666666F645395441000000C0E76E5141713D0A27333954413D0AD7C3E66E51410AD7A31033395441D7A370FDE46E5141AE47E1FA313954418FC2F588E46E5141C3F528BC3239544185EB51D8E46E5141295C8F523339544114AE4781E46E5141295C8F923339544114AE4761E46E51410000008034395441F6285CDFE36E5141A4703D9A34395441E17A14BEE36E514148E17AC43239544100000040E36E5141CDCCCC4C32395441A4703D6AE36E5141666666A631395441A4703D0AE46E5141E17A140E3239544106000000000000A0E16E51419A9999893A395441B81E859BE36E51417B14AE473B39544152B81E05E36E5141C3F528FC3C395441EC51B82EE26E5141C3F528CC3C3954419A9999E9E06E51415C8FC2453C395441000000A0E16E51419A9999893A39544101030000000100000033000000B81E853B426F514148E17A84A9395441C3F5285C436F5141AE47E13AA739544114AE4711456F514152B81E15A8395441A4703DDA456F5141A4703DDAA639544185EB5148446F5141295C8F22A63954415C8FC2A5456F514114AE4781A339544185EB5198476F514152B81E65A4395441CDCCCC2C486F514114AE4781A33954413D0AD7534A6F5141E17A14CEA43954410AD7A3004C6F5141CDCCCCDCA539544185EB51D84D6F51418FC2F578A339544152B81E15526F51415C8FC245A6395441C3F5281C4F6F514185EB51C8AA39544185EB51784D6F5141333333D3A939544148E17A144B6F51411F85EB11AD395441000000A04B6F51413D0AD783AD395441B81E850B4B6F5141713D0AC7AE395441A4703DBA4B6F5141F6285C3FB0395441D7A3702D4F6F5141B81E857BB4395441E17A14DE4F6F5141F6285C9FB4395441A4703D1A556F5141295C8F02AF395441AE47E15A5A6F5141AE47E16AA9395441F6285CDF606F5141F6285C4FA139544166666666536F514166666656963954411F85EB414F6F5141666666F692395441B81E850B4B6F514114AE471192395441C3F5285C466F51415C8FC2459139544152B81E55416F51415C8FC26590395441713D0AF73B6F514185EB51489D3954413D0AD793366F514166666636AA39544114AE4731316F5141295C8F22B739544185EB5198356F514133333383B93954417B14AE273A6F5141713D0A97BB395441C3F5280C446F51418FC2F518C0395441AE47E16A456F5141666666E6C03954419A999969496F51411F85EBB1BB39544185EB51684C6F51415C8FC255B83954419A9999A94E6F5141A4703DEAB53954415C8FC2754E6F5141666666F6B4395441B81E856B4B6F514133333383B1395441F6285CAF486F51418FC2F538B139544152B81E25466F51411F85EB61B1395441D7A3700D436F5141EC51B84EB13954413D0AD7E3416F514152B81E95B23954413D0AD7733E6F514152B81E85B0395441D7A370DD3E6F5141295C8FE2AF395441295C8F12406F51418FC2F5F8AD395441E17A149E416F5141000000E0AB3954419A999959446F5141AE47E17AAD3954415C8FC2A5456F51415C8FC265AB395441B81E853B426F514148E17A84A9395441
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000000B9F7AA0366F5141E27A8CFBB9395441FBDE2F9F356F5141CD1B5486B93954417B14AE671E6F514114AE47F1BD395441CDCCCC8C186F51418FC2F528BF395441ACFC3455186F5141F1D5D286BF39544168D08C30226F5141247D7B69BF39544100581B521F6F514152E6CF04C83954410C5B542C1E6F5141B05E41E3CA395441D179E8381C6F5141E983A12AD03954417448A4881B6F51416990DF19D5395441AEE2E24D1B6F5141F55829B5D6395441D18F2B3D276F5141C6D766CEE03954413A96F7772E6F51418C3D2809E1395441D1A8A71B316F5141BAD42DF4E1395441F0CA87B9326F5141C1BB47A3E2395441A4703DBA326F51411F85EBA1E2395441713D0A97366F5141A4703D3ADB3954417B14AE27366F5141AE47E17ADA39544166666696356F51418FC2F5E8D9395441CDCCCCAC346F51411F85EB91D939544100000080336F5141D7A3704DD939544185EB5118326F514114AE4761D9395441B81E85EB306F51411F85EBC1D939544148E17AB42F6F5141AE47E17ADA39544148E17AA42E6F51410AD7A350DB395441E17A149E2D6F51410AD7A360DC3954417B14AED7296F51410AD7A340DC395441EC51B88E296F5141AE47E1AADD395441EC51B85E266F5141F6285C0FDD395441EC51B88E266F51417B14AE77DB3954417B14AE07236F51415C8FC2E5DA395441F6285C6F216F51411F85EB91D9395441333333A3206F514114AE4771DA395441F6285C1F1C6F514152B81E75D6395441CDCCCC8C1C6F51417B14AEF7D3395441B81E85EB1C6F51415C8FC265CF395441EC51B80E1E6F5141C3F5285CCF395441666666661E6F514133333363CD395441295C8F52216F5141A4703DBACD39544152B81E45226F514100000080CD39544148E17A24236F51415C8FC245CD3954415C8FC285236F5141F6285C3FCF3954413D0AD7F3256F51417B14AEE7CE395441A4703D1A266F5141CDCCCC6CCD3954415C8FC2B5266F51413D0AD793CD395441C3F528DC296F5141C3F528BCC4395441D7A3706D2D6F51410AD7A340C6395441F6285CDF2B6F5141F6285C1FCA3954419A9999292D6F514114AE47B1CA3954415C8FC2F52A6F5141295C8F62D0395441333333232C6F5141000000B0D0395441E17A149E2D6F5141E17A14FED0395441A4703D7A2F6F5141333333A3D139544114AE47E1306F5141295C8F82D2395441C3F5282C326F51413D0AD7F3D339544148E17AF4336F514185EB5188D63954415C8FC265356F5141E17A146ED8395441B81E853B366F5141CDCCCC1CD93954410AD7A3E0366F5141A4703D3AD939544185EB51B8376F5141F6285C0FD9395441295C8F72396F5141EC51B8BED539544148E17A14406F5141D7A370FDC8395441713D0A97426F514152B81EE5C4395441865B7588456F5141A2C82AC0C039544164F26C80456F5141DC2754CAC0395441A9797474496F51419C961BA9BB395441CE64B1AD4E6F5141177E6DEBB5395441D960E1714E6F5141F2FFA1F3B439544108760B644B6F5141BEE9427FB1395441C06B1CA3486F5141C4E57243B13954411107B204476F51417979CF58B1395441D1C53055456F5141E59EA065B1395441ECE8B218436F5141C8E57243B1395441A3AFD1E0416F5141F269F694B2395441BA07FE743E6F51412B46A67AB039544148B33AF13F6F5141D7435731AE395441643D769C416F5141834108E8AB3954411B6B4E4C446F5141EC37E77DAD39544165A617A2456F514125149763AB3954415747FE31426F51415EF41685A9395441375B0E5D436F51410AF2C73BA73954419B53D510456F51413C6EAB15A839544163AAE7DD456F5141AAC63ED5A6395441D8FCC243446F5141E2711426A6395441D6CBE8AE456F514173B2C77EA339544131C87F9E476F5141F09C3661A439544191F5F022486F5141BE205387A33954414BEE1E024C6F51415A912DD9A5395441C49F13D84D6F514178B2C77EA3395441BE0C8519526F5141C0BCB63FA6395441C66C51254F6F51412253C9C9AA395441CF995B7E4D6F5141CC1DB8CDA93954413627990E4B6F514173551813AD395441BA0B50974B6F5141FA37E77DAD395441CA01C8014B6F51416B280EBAAE395441D7C47DB94B6F514164F91B43B0395441534968364F6F514115F8017CB4395441670A36D04F6F514136B12F9EB43954418F62F543506F5141A7CA8F32B4395441D1E701D4566F5141074C322CAD395441943038DA606F5141272CC155A1395441613CCB565B6F51415D0AA8CD9C395441F6285CDF606F5141F6285C4FA13954417B14AE77686F51410AD7A300983954415C8FC2C5706F5141D7A370FD8D395441EC51B83E676F51417B14AE678F395441CDCCCC8C5B6F51419A9999899139544148E17A14526F5141295C8FA292395441CDCCCC1C526F514152B81E15933954415C8FC265546F5141CDCCCC0C933954415C8FC275546F51415C8FC21595395441D7A3706D536F51415C8FC205953954418D569766536F5141DA44424D963954415362F1664F6F514150AF1BF2923954411F85EB414F6F5141666666F69239544196F3196F4B6F51410BF66F2692395441961938B2466F514102095D5491395441C3F5285C466F51415C8FC2459139544197559AC7426F5141A5673DA690395441689BFC7B416F51410F44866C903954419EC9B572406F51417F314585923954416396FCAB3F6F5141C04E516294395441E7CCE8D5396F5141D02CA264A2395441F3BD924E336F514110699B0FB2395441B171AC44316F51417480082DB73954415B596B78336F5141ABA0795DB83954410B9F7AA0366F5141E27A8CFBB9395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261394 - 3385138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000013000000A4703D0AE46E5141E17A140E32395441D7A3707DE46E5141CDCCCCAC31395441713D0A87E36E51416666661631395441295C8FF2E06E5141CDCCCC4C3B395441713D0A47D96E514148E17AB4443954413D0AD7B3DF6E51417B14AEC7463954419A999909E06E5141666666F645395441000000C0E76E5141713D0A27333954413D0AD7C3E66E51410AD7A31033395441D7A370FDE46E5141AE47E1FA313954418FC2F588E46E5141C3F528BC3239544185EB51D8E46E5141295C8F523339544114AE4781E46E5141295C8F923339544114AE4761E46E51410000008034395441F6285CDFE36E5141A4703D9A34395441E17A14BEE36E514148E17AC43239544100000040E36E5141CDCCCC4C32395441A4703D6AE36E5141666666A631395441A4703D0AE46E5141E17A140E3239544106000000000000A0E16E51419A9999893A395441B81E859BE36E51417B14AE473B39544152B81E05E36E5141C3F528FC3C395441EC51B82EE26E5141C3F528CC3C3954419A9999E9E06E51415C8FC2453C395441000000A0E16E51419A9999893A39544101030000000100000033000000B81E853B426F514148E17A84A9395441C3F5285C436F5141AE47E13AA739544114AE4711456F514152B81E15A8395441A4703DDA456F5141A4703DDAA639544185EB5148446F5141295C8F22A63954415C8FC2A5456F514114AE4781A339544185EB5198476F514152B81E65A4395441CDCCCC2C486F514114AE4781A33954413D0AD7534A6F5141E17A14CEA43954410AD7A3004C6F5141CDCCCCDCA539544185EB51D84D6F51418FC2F578A339544152B81E15526F51415C8FC245A6395441C3F5281C4F6F514185EB51C8AA39544185EB51784D6F5141333333D3A939544148E17A144B6F51411F85EB11AD395441000000A04B6F51413D0AD783AD395441B81E850B4B6F5141713D0AC7AE395441A4703DBA4B6F5141F6285C3FB0395441D7A3702D4F6F5141B81E857BB4395441E17A14DE4F6F5141F6285C9FB4395441A4703D1A556F5141295C8F02AF395441AE47E15A5A6F5141AE47E16AA9395441F6285CDF606F5141F6285C4FA139544166666666536F514166666656963954411F85EB414F6F5141666666F692395441B81E850B4B6F514114AE471192395441C3F5285C466F51415C8FC2459139544152B81E55416F51415C8FC26590395441713D0AF73B6F514185EB51489D3954413D0AD793366F514166666636AA39544114AE4731316F5141295C8F22B739544185EB5198356F514133333383B93954417B14AE273A6F5141713D0A97BB395441C3F5280C446F51418FC2F518C0395441AE47E16A456F5141666666E6C03954419A999969496F51411F85EBB1BB39544185EB51684C6F51415C8FC255B83954419A9999A94E6F5141A4703DEAB53954415C8FC2754E6F5141666666F6B4395441B81E856B4B6F514133333383B1395441F6285CAF486F51418FC2F538B139544152B81E25466F51411F85EB61B1395441D7A3700D436F5141EC51B84EB13954413D0AD7E3416F514152B81E95B23954413D0AD7733E6F514152B81E85B0395441D7A370DD3E6F5141295C8FE2AF395441295C8F12406F51418FC2F5F8AD395441E17A149E416F5141000000E0AB3954419A999959446F5141AE47E17AAD3954415C8FC2A5456F51415C8FC265AB395441B81E853B426F514148E17A84A9395441
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000000B9F7AA0366F5141E27A8CFBB9395441FBDE2F9F356F5141CD1B5486B93954417B14AE671E6F514114AE47F1BD395441CDCCCC8C186F51418FC2F528BF395441ACFC3455186F5141F1D5D286BF39544168D08C30226F5141247D7B69BF39544100581B521F6F514152E6CF04C83954410C5B542C1E6F5141B05E41E3CA395441D179E8381C6F5141E983A12AD03954417448A4881B6F51416990DF19D5395441AEE2E24D1B6F5141F55829B5D6395441D18F2B3D276F5141C6D766CEE03954413A96F7772E6F51418C3D2809E1395441D1A8A71B316F5141BAD42DF4E1395441F0CA87B9326F5141C1BB47A3E2395441A4703DBA326F51411F85EBA1E2395441713D0A97366F5141A4703D3ADB3954417B14AE27366F5141AE47E17ADA39544166666696356F51418FC2F5E8D9395441CDCCCCAC346F51411F85EB91D939544100000080336F5141D7A3704DD939544185EB5118326F514114AE4761D9395441B81E85EB306F51411F85EBC1D939544148E17AB42F6F5141AE47E17ADA39544148E17AA42E6F51410AD7A350DB395441E17A149E2D6F51410AD7A360DC3954417B14AED7296F51410AD7A340DC395441EC51B88E296F5141AE47E1AADD395441EC51B85E266F5141F6285C0FDD395441EC51B88E266F51417B14AE77DB3954417B14AE07236F51415C8FC2E5DA395441F6285C6F216F51411F85EB91D9395441333333A3206F514114AE4771DA395441F6285C1F1C6F514152B81E75D6395441CDCCCC8C1C6F51417B14AEF7D3395441B81E85EB1C6F51415C8FC265CF395441EC51B80E1E6F5141C3F5285CCF395441666666661E6F514133333363CD395441295C8F52216F5141A4703DBACD39544152B81E45226F514100000080CD39544148E17A24236F51415C8FC245CD3954415C8FC285236F5141F6285C3FCF3954413D0AD7F3256F51417B14AEE7CE395441A4703D1A266F5141CDCCCC6CCD3954415C8FC2B5266F51413D0AD793CD395441C3F528DC296F5141C3F528BCC4395441D7A3706D2D6F51410AD7A340C6395441F6285CDF2B6F5141F6285C1FCA3954419A9999292D6F514114AE47B1CA3954415C8FC2F52A6F5141295C8F62D0395441333333232C6F5141000000B0D0395441E17A149E2D6F5141E17A14FED0395441A4703D7A2F6F5141333333A3D139544114AE47E1306F5141295C8F82D2395441C3F5282C326F51413D0AD7F3D339544148E17AF4336F514185EB5188D63954415C8FC265356F5141E17A146ED8395441B81E853B366F5141CDCCCC1CD93954410AD7A3E0366F5141A4703D3AD939544185EB51B8376F5141F6285C0FD9395441295C8F72396F5141EC51B8BED539544148E17A14406F5141D7A370FDC8395441713D0A97426F514152B81EE5C4395441865B7588456F5141A2C82AC0C039544164F26C80456F5141DC2754CAC0395441A9797474496F51419C961BA9BB395441CE64B1AD4E6F5141177E6DEBB5395441D960E1714E6F5141F2FFA1F3B439544108760B644B6F5141BEE9427FB1395441C06B1CA3486F5141C4E57243B13954411107B204476F51417979CF58B1395441D1C53055456F5141E59EA065B1395441ECE8B218436F5141C8E57243B1395441A3AFD1E0416F5141F269F694B2395441BA07FE743E6F51412B46A67AB039544148B33AF13F6F5141D7435731AE395441643D769C416F5141834108E8AB3954411B6B4E4C446F5141EC37E77DAD39544165A617A2456F514125149763AB3954415747FE31426F51415EF41685A9395441375B0E5D436F51410AF2C73BA73954419B53D510456F51413C6EAB15A839544163AAE7DD456F5141AAC63ED5A6395441D8FCC243446F5141E2711426A6395441D6CBE8AE456F514173B2C77EA339544131C87F9E476F5141F09C3661A439544191F5F022486F5141BE205387A33954414BEE1E024C6F51415A912DD9A5395441C49F13D84D6F514178B2C77EA3395441BE0C8519526F5141C0BCB63FA6395441C66C51254F6F51412253C9C9AA395441CF995B7E4D6F5141CC1DB8CDA93954413627990E4B6F514173551813AD395441BA0B50974B6F5141FA37E77DAD395441CA01C8014B6F51416B280EBAAE395441D7C47DB94B6F514164F91B43B0395441534968364F6F514115F8017CB4395441670A36D04F6F514136B12F9EB43954418F62F543506F5141A7CA8F32B4395441D1E701D4566F5141074C322CAD395441943038DA606F5141272CC155A1395441613CCB565B6F51415D0AA8CD9C395441F6285CDF606F5141F6285C4FA13954417B14AE77686F51410AD7A300983954415C8FC2C5706F5141D7A370FD8D395441EC51B83E676F51417B14AE678F395441CDCCCC8C5B6F51419A9999899139544148E17A14526F5141295C8FA292395441CDCCCC1C526F514152B81E15933954415C8FC265546F5141CDCCCC0C933954415C8FC275546F51415C8FC21595395441D7A3706D536F51415C8FC205953954418D569766536F5141DA44424D963954415362F1664F6F514150AF1BF2923954411F85EB414F6F5141666666F69239544196F3196F4B6F51410BF66F2692395441961938B2466F514102095D5491395441C3F5285C466F51415C8FC2459139544197559AC7426F5141A5673DA690395441689BFC7B416F51410F44866C903954419EC9B572406F51417F314585923954416396FCAB3F6F5141C04E516294395441E7CCE8D5396F5141D02CA264A2395441F3BD924E336F514110699B0FB2395441B171AC44316F51417480082DB73954415B596B78336F5141ABA0795DB83954410B9F7AA0366F5141E27A8CFBB9395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261526 - 207320
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000AE47E15A566C5141F6285CAFDD3A54415C8FC2C5606C514185EB5118D93A5441F6285C0F546C5141C3F5280CBC3A5441C3F5288C536C51410AD7A3E0BA3A54413D0AD743556C514100000020BA3A54415C8FC2D5556C5141000000E0B93A5441E17A142E516C514166666616B53A5441E17A142E446C514185EB5178AD3A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A5441333333D3376C5141F6285C6FA33A54417B14AE07346C5141A4703D7AA33A5441F6285CDF376C5141EC51B8FEA93A5441AE47E15A566C5141F6285CAFDD3A5441010300000001000000080000001F85EB217C6C5141E17A14CE063B54411F85EB61786C514148E17A04093B5441666666E68F6C51419A9999392C3B5441CDCCCCEC906C51415C8FC2C52B3B544100000090936C5141333333E3293B54411F85EBE1936C5141EC51B81E283B5441713D0AE77D6C51415C8FC235073B54411F85EB217C6C5141E17A14CE063B544101030000000100000007000000EC51B83E6F6C514133333323D63A544185EB51F8676C5141EC51B85ED93A54417B14AEC76A6C5141C3F5282CE03A54413D0AD7236D6C51411F85EBE1E53A5441C3F5289C7A6C5141C3F5287C063B544185EB5188816C5141713D0A67023B5441EC51B83E6F6C514133333323D63A5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000E17A142E516C514166666616B53A54415E4440E74E6C51412871C8FCB33A5441804B10014C6C51413ACBFD0DB23A5441FBC935AF496C5141CA1B04B2B03A544118BDCB41466C51415C154FFBAE3A5441D18C4DE4446C51417B4A5012AE3A544144A74272446C5141F06445A0AD3A5441E17A142E446C514185EB5178AD3A5441A8F66963436C514158B46C91AC3A5441EBDE9063426C5141A09C9391AB3A54410531D4E23F6C5141FC3B97D6A83A5441C16BEDC73F6C5141BD554E75A83A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A54417B14AE07346C5141A4703D7AA33A544161F45270356C5141F2751BA7A53A54418B05D93E3C6C5141F2751BA7A53A54414D9BD6103E6C51412F37141DAB3A5441382C5129426C51410FC88E35AF3A54414BB84888486C5141D6404A9FB23A54415E4440E74E6C514193B90509B63A5441C3F5288C536C51410AD7A3E0BA3A54415C8FC2D5556C5141000000E0B93A5441E17A142E516C514166666616B53A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261526 - 368963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000AE47E15A566C5141F6285CAFDD3A54415C8FC2C5606C514185EB5118D93A5441F6285C0F546C5141C3F5280CBC3A5441C3F5288C536C51410AD7A3E0BA3A54413D0AD743556C514100000020BA3A54415C8FC2D5556C5141000000E0B93A5441E17A142E516C514166666616B53A5441E17A142E446C514185EB5178AD3A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A5441333333D3376C5141F6285C6FA33A54417B14AE07346C5141A4703D7AA33A5441F6285CDF376C5141EC51B8FEA93A5441AE47E15A566C5141F6285CAFDD3A5441010300000001000000080000001F85EB217C6C5141E17A14CE063B54411F85EB61786C514148E17A04093B5441666666E68F6C51419A9999392C3B5441CDCCCCEC906C51415C8FC2C52B3B544100000090936C5141333333E3293B54411F85EBE1936C5141EC51B81E283B5441713D0AE77D6C51415C8FC235073B54411F85EB217C6C5141E17A14CE063B544101030000000100000007000000EC51B83E6F6C514133333323D63A544185EB51F8676C5141EC51B85ED93A54417B14AEC76A6C5141C3F5282CE03A54413D0AD7236D6C51411F85EBE1E53A5441C3F5289C7A6C5141C3F5287C063B544185EB5188816C5141713D0A67023B5441EC51B83E6F6C514133333323D63A5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000E17A142E516C514166666616B53A54415E4440E74E6C51412871C8FCB33A5441804B10014C6C51413ACBFD0DB23A5441FBC935AF496C5141CA1B04B2B03A544118BDCB41466C51415C154FFBAE3A5441D18C4DE4446C51417B4A5012AE3A544144A74272446C5141F06445A0AD3A5441E17A142E446C514185EB5178AD3A5441A8F66963436C514158B46C91AC3A5441EBDE9063426C5141A09C9391AB3A54410531D4E23F6C5141FC3B97D6A83A5441C16BEDC73F6C5141BD554E75A83A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A54417B14AE07346C5141A4703D7AA33A544161F45270356C5141F2751BA7A53A54418B05D93E3C6C5141F2751BA7A53A54414D9BD6103E6C51412F37141DAB3A5441382C5129426C51410FC88E35AF3A54414BB84888486C5141D6404A9FB23A54415E4440E74E6C514193B90509B63A5441C3F5288C536C51410AD7A3E0BA3A54415C8FC2D5556C5141000000E0B93A5441E17A142E516C514166666616B53A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261584 - 207358
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000070000000AD7A3C08E6C5141AE47E10A063F54419A9999B9956C51410AD7A320FE3E544114AE4751956C5141666666D6FD3E54419A999959776C51418FC2F598E83E54418FC2F568706C514185EB5188F03E544185EB51588E6C51410AD7A3C0053F54410AD7A3C08E6C5141AE47E10A063F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000F8D72294776C514192D172C2E83E544114AE4751956C5141666666D6FD3E544127EA96A0956C5141E453D70EFE3E54414DAACBA1996C51418AB0DDB0F93E544131A96D1E926C5141B01171A1F43E54413469F0B68E6C5141EC259516F23E5441E4439AC28D6C5141349A7F41F13E54413D0AD7638D6C514114AE4701F13E54412C6901278D6C5141E6A5CDB9F03E544118B23A028B6C5141F32938DBEE3E5441FD63A5647C6C5141DF25A70AE33E54418FF2BE79776C51416441BEAFE83E5441F8D72294776C514192D172C2E83E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261584 - 339075
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000070000000AD7A3C08E6C5141AE47E10A063F54419A9999B9956C51410AD7A320FE3E544114AE4751956C5141666666D6FD3E54419A999959776C51418FC2F598E83E54418FC2F568706C514185EB5188F03E544185EB51588E6C51410AD7A3C0053F54410AD7A3C08E6C5141AE47E10A063F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000F8D72294776C514192D172C2E83E544114AE4751956C5141666666D6FD3E544127EA96A0956C5141E453D70EFE3E54414DAACBA1996C51418AB0DDB0F93E544131A96D1E926C5141B01171A1F43E54413469F0B68E6C5141EC259516F23E5441E4439AC28D6C5141349A7F41F13E54413D0AD7638D6C514114AE4701F13E54412C6901278D6C5141E6A5CDB9F03E544118B23A028B6C5141F32938DBEE3E5441FD63A5647C6C5141DF25A70AE33E54418FF2BE79776C51416441BEAFE83E5441F8D72294776C514192D172C2E83E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261795 - 227266
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000290000005C8FC245356B514133333313D93B5441A4703D8A2C6B5141AE47E14AEF3B5441F6285CCF2B6B514152B81E25F13B544133333343276B51415C8FC285FC3B5441B81E85BB256B51411F85EB01FF3B54418FC2F508246B5141AE47E13A013C544114AE4771226B51418FC2F588023C5441E17A141E186B51419A9999F9083C5441E17A147E166B5141A4703D5A0A3C54413D0AD723146B51410AD7A3800D3C544100000020086B5141CDCCCC1C1E3C5441CDCCCC4C026B5141C3F5281C263C5441D7A3704D006B514114AE47412A3C54417B14AEC70E6B51418FC2F568203C5441AE47E16A176B5141CDCCCCCC193C5441A4703D2A216B514114AE47B1113C54415C8FC225276B51419A9999490C3C5441EC51B8CE2D6B5141713D0AF7053C544166666636336B5141C3F5289C003C5441AE47E1DA3F6B514185EB5198F43B5441A4703D5A4C6B51413D0AD793E83B544114AE47415E6B5141E17A14FED83B5441713D0AD75D6B514152B81EE5D73B54411F85EB615D6B5141666666C6D63B5441A4703D7A486B5141C3F5288CA33B5441E17A143E456B514185EB5118A63B54410AD7A3C03F6B5141666666F6A93B54419A999989356B51411F85EBA1B03B5441F6285C1F3A6B51418FC2F538B23B544152B81ED53D6B51413D0AD7D3B43B5441713D0AB73F6B51411F85EB61BA3B544133333313386B51413D0AD773BE3B5441E17A141E376B5141CDCCCCACBF3B54413D0AD753366B5141AE47E19AC43B54411F85EB91366B5141F6285C5FC93B5441A4703DAA376B5141AE47E10ACF3B5441CDCCCC9C376B51413D0AD793CF3B544152B81E053B6B51410AD7A3C0D03B5441333333B3396B5141E17A14FED53B54413D0AD793366B51419A999919D53B54415C8FC245356B514133333313D93B544105000000CDCCCC7C3B6B5141E17A143EC03B544185EB51883D6B514152B81E65C03B5441AE47E15A3D6B5141EC51B89EC23B5441F6285C4F3B6B514114AE4771C23B5441CDCCCC7C3B6B5141E17A143EC03B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000D8630556486B51412E85AEA8A33B5441E17A143E456B514185EB5118A63B54410AD7A3C03F6B5141666666F6A93B5441EBACF7093C6B51413A032763AC3B5441D7155222396B5141019BB948AE3B5441CC90B49A386B5141AFCD46A1AE3B5441EE5FED99386B514105DEC8A1AE3B5441F0A23AE6366B5141AF5947BEAF3B5441860C30A0356B514161C6C0A9B03B5441964737A7396B514110CC4B0FB23B544125F8F239496B51416214A3AFA63B5441D8630556486B51412E85AEA8A33B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261795 - 337446
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000290000005C8FC245356B514133333313D93B5441A4703D8A2C6B5141AE47E14AEF3B5441F6285CCF2B6B514152B81E25F13B544133333343276B51415C8FC285FC3B5441B81E85BB256B51411F85EB01FF3B54418FC2F508246B5141AE47E13A013C544114AE4771226B51418FC2F588023C5441E17A141E186B51419A9999F9083C5441E17A147E166B5141A4703D5A0A3C54413D0AD723146B51410AD7A3800D3C544100000020086B5141CDCCCC1C1E3C5441CDCCCC4C026B5141C3F5281C263C5441D7A3704D006B514114AE47412A3C54417B14AEC70E6B51418FC2F568203C5441AE47E16A176B5141CDCCCCCC193C5441A4703D2A216B514114AE47B1113C54415C8FC225276B51419A9999490C3C5441EC51B8CE2D6B5141713D0AF7053C544166666636336B5141C3F5289C003C5441AE47E1DA3F6B514185EB5198F43B5441A4703D5A4C6B51413D0AD793E83B544114AE47415E6B5141E17A14FED83B5441713D0AD75D6B514152B81EE5D73B54411F85EB615D6B5141666666C6D63B5441A4703D7A486B5141C3F5288CA33B5441E17A143E456B514185EB5118A63B54410AD7A3C03F6B5141666666F6A93B54419A999989356B51411F85EBA1B03B5441F6285C1F3A6B51418FC2F538B23B544152B81ED53D6B51413D0AD7D3B43B5441713D0AB73F6B51411F85EB61BA3B544133333313386B51413D0AD773BE3B5441E17A141E376B5141CDCCCCACBF3B54413D0AD753366B5141AE47E19AC43B54411F85EB91366B5141F6285C5FC93B5441A4703DAA376B5141AE47E10ACF3B5441CDCCCC9C376B51413D0AD793CF3B544152B81E053B6B51410AD7A3C0D03B5441333333B3396B5141E17A14FED53B54413D0AD793366B51419A999919D53B54415C8FC245356B514133333313D93B544105000000CDCCCC7C3B6B5141E17A143EC03B544185EB51883D6B514152B81E65C03B5441AE47E15A3D6B5141EC51B89EC23B5441F6285C4F3B6B514114AE4771C23B5441CDCCCC7C3B6B5141E17A143EC03B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000D8630556486B51412E85AEA8A33B5441E17A143E456B514185EB5118A63B54410AD7A3C03F6B5141666666F6A93B5441EBACF7093C6B51413A032763AC3B5441D7155222396B5141019BB948AE3B5441CC90B49A386B5141AFCD46A1AE3B5441EE5FED99386B514105DEC8A1AE3B5441F0A23AE6366B5141AF5947BEAF3B5441860C30A0356B514161C6C0A9B03B5441964737A7396B514110CC4B0FB23B544125F8F239496B51416214A3AFA63B5441D8630556486B51412E85AEA8A33B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310946 - 203531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001200000014AE47E17BBB5041AE47E1BA0F415541AE47E1BA7FBB5041E17A149E0A415541A4703D8A86BB5041F6285CCF0141554148E17A4481BB504185EB5118FE405541333333937BBB5041D7A370CD04415541295C8F2276BB50419A9999F909415541713D0A676FBB5041EC51B84E0F4155419A9999F968BB50419A9999B9084155419A99994968BB50415C8FC27509415541D7A3702D69BB5041AE47E11A0A415541CDCCCCEC69BB50415C8FC2B51341554152B81E6571BB5041E17A149E174155417B14AE3771BB5041EC51B81E184155410000007082BB504152B81E0522415541CDCCCC4C83BB504148E17A84224155419A99996985BB5041666666361C415541E17A144E78BB5041A4703D2A1441554114AE47E17BBB5041AE47E1BA0F415541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000C696AC5970BB50412C6F8A8E0E41554109EFDF2670BB50410BD1C6B60E415541B67A144E78BB5041B9703D2A144155411CC39DBB79BB50415B42C5641241554114AE47E17BBB5041AE47E1BA0F415541697591907DBB504184B2297E0D4155417847E1BA7FBB5041E17A149E0A415541CFC6025786BB50412E999D1102415541810BEE0986BB5041C5AC97FB014155416CC8C72284BB50417B64D61401415541FF0C0ABB80BB50410CBC68FAFE405541C3B1F8867EBB504138FAF3E101415541613961067DBB50414E3D1AC903415541E4601D527ABB504157C8019706415541937A245075BB5041C1960F4C0B41554117A2E09B72BB5041303F7D660D41554171C1408F70BB50412922B9640E415541C696AC5970BB50412C6F8A8E0E415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262302 - 207282
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000D7A370BDA36B514148E17AA4534054413D0AD7B3A76B5141AE47E18A4F4054411F85EB91A36B51417B14AE274D405441E17A14BEA46B5141D7A3701D4B405441EC51B8DEA86B51411F85EBF149405441C3F5289CAB6B5141713D0A274B40544185EB5198B86B5141EC51B88E3C40544185EB51A8C46B514148E17A942E405441B81E857BC66B51411F85EB312C405441C3F5282CA96B5141666666F61B405441666666F6A26B514152B81EA529405441E17A146EA06B51419A9999392F405441CDCCCC7C9B6B5141E17A147E384054415C8FC2E5816B5141D7A3706D5E405441AE47E1DA756B51415C8FC285694054418FC2F558696B5141B81E850B754054415C8FC285846B5141E17A14EE80405441A4703D2A8F6B51417B14AE9774405441CDCCCCBC946B514114AE47216E4054418FC2F5D8976B5141AE47E1EA694054418FC2F5A8996B51418FC2F53866405441E17A146E9C6B5141F6285C9F5E405441666666569F6B5141A4703D5A59405441D7A370BDA36B514148E17AA453405441
+</a>
+
+<b>
+01060000000100000001030000000100000050000000AD72EA08986B51411AC51D89694054415561A511986B51413E9751776940544137BBC53F986B514188D7481969405441D9AC41A8996B514191AC88366640544169245CC69B6B514195D4876B60405441E17A146E9C6B5141F6285C9F5E405441D5E5B18C9E6B51410E60D7C75A405441666666569F6B5141A4703D5A594054418347DC849F6B51417C31FB1D594054410AB7188C9F6B51416E50F913594054415DED70FBA06B5141D05A273857405441D7A370BDA36B514148E17AA453405441B5A3C949A66B5141A5E47E0151405441D0F9BBB3A76B51418648FD8A4F40544157F68459A76B514133CAB2564F40544178E0BA43A76B5141FA1E1C4A4F4054411AB4371FA76B5141B2E803354F40544168CD0687A66B5141C6BC16DD4E40544190754A51A56B5141DD94242A4E405441AC36819FA46B514109E06DC34D4054411F85EB91A36B51417B14AE274D405441C74FD592A36B5141FE4F17264D405441420A7F86A46B51418A0B267E4B405441E17A14BEA46B5141D7A3701D4B405441D85AD110A66B5141877A6BBD4A4054416D1D7F12A66B51410B13EFBC4A4054418FF67DDCA86B5141A5EF7CF0494054419B5B6C3EAA6B514176CFE98C4A405441F082BD9BAB6B51415DE3DA264B405441E908D1AAB16B5141B85AD05744405441AFB0DC11BA6B5141359D3DD93A40544186B389ECBD6B51412876EC613640544170790EB5C26B51419EFE40D530405441C2B8F7F5C26B5141A0E0C98B30405441105079E5C36B5141525B42762F405441AA83E538C46B51418B50F9132F4054412640A5F5C46B5141A45D6D2F2E40544160F83409C56B5141E307DD152E40544192FB891AC56B51412B8636FF2D40544168A0C11FC56B5141EE0965F82D405441BA312D7AC66B514167F469312C405441852756F6C16B514178F469B1294054415046DB41AE6B5141F93174C81E40544179A26A44AD6B51412D65A73B1E4054415046DBA1AC6B514194CB0DE21D405441F8B6182CA96B5141F65AD0F71B40544144796DEFA46B5141635D644C25405441666666F6A26B514152B81EA5294054416D210D2CA26B51417860F7622B4054415C46DB21A16B514152EA92AD2D405441211C71E4A06B5141A483CE342E405441E17A146EA06B51419A9999392F405441EE0216859F6B5141F47F7AEE30405441CDCCCC7C9B6B5141E17A147E384054417C19F4779B6B514186B6438538405441BFD59D779B6B5141D5D5E48538405441BA7CA2D1966B51419416846C3F4054419AB5327C8F6B51410F81F3484A405441D8BAB9608F6B51416C4CAD714A40544193F938D38D6B5141FBF7F0BE4C405441EF2E01BE8A6B514198C9E35051405441BE251EB18A6B5141EB53FE63514054416B26214A896B5141CFBE2978534054412CFF5B99876B5141E0F82B0156405441C9B843DF866B51413BE8930D574054415C8FC2E5816B5141D7A3706D5E40544111C76DDA786B51414A079AC266405441F35A89C9756B5141DE5AD09769405441144BD37A8E6B51414B4C086375405441A4703D2A8F6B51417B14AE9774405441978BBD93906B5141527D71F4724054414613A8EE936B51412B4622106F40544195CBC6B3946B5141DD8D032B6E40544196658D78966B51412C7D37C86B405441A85F8EA3966B5141E8CFF78D6B40544144F999B6966B5141D6CD2B746B405441B450B225976B5141BE0818D96A4054416C6F37D1976B51416C50F9F369405441AF6F6C07986B5141FF8B288C69405441AD72EA08986B51411AC51D8969405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262302 - 310888
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000D7A370BDA36B514148E17AA4534054413D0AD7B3A76B5141AE47E18A4F4054411F85EB91A36B51417B14AE274D405441E17A14BEA46B5141D7A3701D4B405441EC51B8DEA86B51411F85EBF149405441C3F5289CAB6B5141713D0A274B40544185EB5198B86B5141EC51B88E3C40544185EB51A8C46B514148E17A942E405441B81E857BC66B51411F85EB312C405441C3F5282CA96B5141666666F61B405441666666F6A26B514152B81EA529405441E17A146EA06B51419A9999392F405441CDCCCC7C9B6B5141E17A147E384054415C8FC2E5816B5141D7A3706D5E405441AE47E1DA756B51415C8FC285694054418FC2F558696B5141B81E850B754054415C8FC285846B5141E17A14EE80405441A4703D2A8F6B51417B14AE9774405441CDCCCCBC946B514114AE47216E4054418FC2F5D8976B5141AE47E1EA694054418FC2F5A8996B51418FC2F53866405441E17A146E9C6B5141F6285C9F5E405441666666569F6B5141A4703D5A59405441D7A370BDA36B514148E17AA453405441
+</a>
+
+<b>
+01060000000100000001030000000100000050000000AD72EA08986B51411AC51D89694054415561A511986B51413E9751776940544137BBC53F986B514188D7481969405441D9AC41A8996B514191AC88366640544169245CC69B6B514195D4876B60405441E17A146E9C6B5141F6285C9F5E405441D5E5B18C9E6B51410E60D7C75A405441666666569F6B5141A4703D5A594054418347DC849F6B51417C31FB1D594054410AB7188C9F6B51416E50F913594054415DED70FBA06B5141D05A273857405441D7A370BDA36B514148E17AA453405441B5A3C949A66B5141A5E47E0151405441D0F9BBB3A76B51418648FD8A4F40544157F68459A76B514133CAB2564F40544178E0BA43A76B5141FA1E1C4A4F4054411AB4371FA76B5141B2E803354F40544168CD0687A66B5141C6BC16DD4E40544190754A51A56B5141DD94242A4E405441AC36819FA46B514109E06DC34D4054411F85EB91A36B51417B14AE274D405441C74FD592A36B5141FE4F17264D405441420A7F86A46B51418A0B267E4B405441E17A14BEA46B5141D7A3701D4B405441D85AD110A66B5141877A6BBD4A4054416D1D7F12A66B51410B13EFBC4A4054418FF67DDCA86B5141A5EF7CF0494054419B5B6C3EAA6B514176CFE98C4A405441F082BD9BAB6B51415DE3DA264B405441E908D1AAB16B5141B85AD05744405441AFB0DC11BA6B5141359D3DD93A40544186B389ECBD6B51412876EC613640544170790EB5C26B51419EFE40D530405441C2B8F7F5C26B5141A0E0C98B30405441105079E5C36B5141525B42762F405441AA83E538C46B51418B50F9132F4054412640A5F5C46B5141A45D6D2F2E40544160F83409C56B5141E307DD152E40544192FB891AC56B51412B8636FF2D40544168A0C11FC56B5141EE0965F82D405441BA312D7AC66B514167F469312C405441852756F6C16B514178F469B1294054415046DB41AE6B5141F93174C81E40544179A26A44AD6B51412D65A73B1E4054415046DBA1AC6B514194CB0DE21D405441F8B6182CA96B5141F65AD0F71B40544144796DEFA46B5141635D644C25405441666666F6A26B514152B81EA5294054416D210D2CA26B51417860F7622B4054415C46DB21A16B514152EA92AD2D405441211C71E4A06B5141A483CE342E405441E17A146EA06B51419A9999392F405441EE0216859F6B5141F47F7AEE30405441CDCCCC7C9B6B5141E17A147E384054417C19F4779B6B514186B6438538405441BFD59D779B6B5141D5D5E48538405441BA7CA2D1966B51419416846C3F4054419AB5327C8F6B51410F81F3484A405441D8BAB9608F6B51416C4CAD714A40544193F938D38D6B5141FBF7F0BE4C405441EF2E01BE8A6B514198C9E35051405441BE251EB18A6B5141EB53FE63514054416B26214A896B5141CFBE2978534054412CFF5B99876B5141E0F82B0156405441C9B843DF866B51413BE8930D574054415C8FC2E5816B5141D7A3706D5E40544111C76DDA786B51414A079AC266405441F35A89C9756B5141DE5AD09769405441144BD37A8E6B51414B4C086375405441A4703D2A8F6B51417B14AE9774405441978BBD93906B5141527D71F4724054414613A8EE936B51412B4622106F40544195CBC6B3946B5141DD8D032B6E40544196658D78966B51412C7D37C86B405441A85F8EA3966B5141E8CFF78D6B40544144F999B6966B5141D6CD2B746B405441B450B225976B5141BE0818D96A4054416C6F37D1976B51416C50F9F369405441AF6F6C07986B5141FF8B288C69405441AD72EA08986B51411AC51D8969405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262372 - 207265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000009000000D7A3702D006B5141AE47E13A344054411F85EB810C6B5141EC51B85E3F40544185EB51B8166B514152B81EB533405441000000D02A6B51417B14AE971C40544148E17A242B6B51411F85EB511C405441EC51B88E406B5141D7A370ED03405441E17A144E2B6B5141713D0AB7024054411F85EB41276B5141CDCCCC9C07405441D7A3702D006B5141AE47E13A34405441050000000AD7A3D00F6B5141F6285C7F2C4054419A9999A90E6B514148E17A842B405441EC51B8DE0F6B51418FC2F5182A4054415C8FC205116B51413D0AD7132B4054410AD7A3D00F6B5141F6285C7F2C405441
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C074054411C4F0B1C196B5141E00DE2C3174054418475AF61186B5141C3F0A598184054410092E9AE166B514165EB06891A4054412A100FA0166B51418D3AFC991A405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262372 - 388828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000009000000D7A3702D006B5141AE47E13A344054411F85EB810C6B5141EC51B85E3F40544185EB51B8166B514152B81EB533405441000000D02A6B51417B14AE971C40544148E17A242B6B51411F85EB511C405441EC51B88E406B5141D7A370ED03405441E17A144E2B6B5141713D0AB7024054411F85EB41276B5141CDCCCC9C07405441D7A3702D006B5141AE47E13A34405441050000000AD7A3D00F6B5141F6285C7F2C4054419A9999A90E6B514148E17A842B405441EC51B8DE0F6B51418FC2F5182A4054415C8FC205116B51413D0AD7132B4054410AD7A3D00F6B5141F6285C7F2C405441
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C074054411C4F0B1C196B5141E00DE2C3174054418475AF61186B5141C3F0A598184054410092E9AE166B514165EB06891A4054412A100FA0166B51418D3AFC991A405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262446 - 2961012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000004F000000AE47E12A216A5141000000B0883F5441AE47E12A226A5141F6285C3F873F54413D0AD7C3256A5141CDCCCC9C873F5441CDCCCCCC2A6A51417B14AE97883F544152B81E752F6A5141E17A14FE893F5441AE47E1FA336A514152B81EB58B3F5441D7A370ED416A5141F6285CFF903F54415C8FC2C5476A5141713D0A37933F5441713D0A074C6A5141B81E856B933F54410AD7A3804D6A5141713D0AD7913F5441295C8F32486A51418FC2F5788D3F544114AE47E1496A51413D0AD7838B3F54418FC2F5B8486A51415C8FC2858A3F54415C8FC2454D6A514133333373853F5441E17A144E506A5141CDCCCCBC873F5441713D0A47516A514133333343883F5441EC51B87E526A514185EB51E8843F5441713D0A774D6A5141EC51B85E7E3F54411F85EB01546A5141D7A3701D783F54413D0AD783586A514114AE47817B3F5441CDCCCC9C606A5141A4703D3A7C3F5441713D0A87606A5141C3F5289C803F54410AD7A340686A51417B14AE87853F5441F6285CFF626A5141333333F3923F544148E17A94626A51413D0AD703943F5441666666C6616A5141295C8F12963F54411F85EBC1596A51418FC2F5489B3F54415C8FC2355B6A514148E17A249F3F54419A9999E95B6A5141EC51B83EA43F5441AE47E1EA5C6A51415C8FC215A73F54410AD7A3705E6A5141713D0A17A83F54418FC2F508616A5141D7A3708DA73F5441713D0A57646A51410AD7A390A43F54418FC2F5686A6A5141333333E39B3F5441A4703DEA6A6A5141E17A14AE9B3F544133333373696A5141666666869A3F5441EC51B84E6A6A5141295C8F32993F5441666666966C6A5141D7A370FD9A3F5441333333436D6A51415C8FC2B59A3F54411F85EBF16D6A51419A999949963F5441AE47E12A726A5141333333538E3F544152B81EC5766A514100000060813F5441333333D3776A514185EB51E87B3F5441C3F528EC776A51419A999989763F5441666666D6786A51413D0AD793743F5441B81E851B776A5141333333736B3F544148E17A24776A51419A9999A9653F5441333333B3786A514100000050523F544185EB51E8726A51413D0AD7B34D3F5441EC51B84E6C6A51419A9999F9483F5441F6285C9F696A514133333393443F5441E17A140E696A514133333343423F5441295C8F22666A5141D7A370ED3F3F54410AD7A3104E6A51417B14AEA73F3F544152B81E75486A514152B81EF54C3F5441000000D0456A5141A4703D3A533F54415C8FC295446A514114AE4721553F544166666606426A51411F85EBE1573F5441CDCCCC2C436A5141666666965A3F5441295C8FA23C6A5141713D0A575F3F5441F6285C6F3C6A5141B81E850B603F544148E17A443B6A51419A999989613F5441CDCCCC7C376A51415C8FC285643F5441713D0AA7336A5141D7A370ED663F54418FC2F5282F6A51410AD7A300693F5441A4703DDA296A5141A4703DCA6A3F54418FC2F5A8216A5141CDCCCC9C6C3F544152B81E65196A5141295C8F12703F544152B81E25126A5141E17A14FE7B3F5441EC51B89E116A5141C3F5289C7F3F5441B81E859B0C6A51410AD7A330A23F544148E17A240C6A5141D7A370ADA43F5441D7A3705D0F6A514152B81EF5A53F54417B14AE77156A514152B81E25943F544148E17A04176A5141AE47E1BA903F5441A4703D7A196A51419A9999798D3F5441000000401C6A5141B81E851B8B3F544148E17A841F6A5141EC51B84E893F5441AE47E12A216A5141000000B0883F5441090000005C8FC285646A5141A4703D6A953F54415C8FC205666A5141CDCCCC1C963F5441AE47E1AA666A514185EB51B8973F544114AE47C1656A51418FC2F538993F54417B14AE77646A5141000000D0993F54419A9999E9626A5141D7A3707D993F5441B81E85BB616A5141AE47E1AA973F5441C3F528DC626A5141EC51B8AE953F54415C8FC285646A5141A4703D6A953F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000078EB301D776A51415E72DF5E6A3F5441DFFE8D1E776A51419A45657D693F544148E17A24776A51419A9999A9653F54415AD8CA2A776A51415F3E2D5B653F5441CA196593776A5141ADBA9E47603F54418E3B65F0776A5141AC4E34C45B3F544172D4E797786A5141BB6119A3533F5441A3FF9089786A51415099DD2E523F5441188F3DA9716A5141B58549CF4C3F544138DD8F5B6C6A5141936DCC02493F544177B0C2296C6A5141C38108BD483F5441164DA8A3696A5141CF093E9A443F5441B3293D2C696A5141EC2118BE423F5441E645D2FF686A5141D548CC37423F54416A89291E666A5141F7E463ED3F3F54410805420E4E6A5141F16454AD3F3F5441FADFE186466A5141472EB788513F5441A31A23CE456A51418594203D533F544174B557C5446A5141C92388D7543F544108B78E4B446A51416CEC0F71553F5441C8455110426A514171BC41D7573F5441D26A8E13436A51417CC0055B5A3F5441EFF9723B466A5141F2686521603F5441079F841C776A5141981A3F7A6A3F544178EB301D776A51415E72DF5E6A3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262446 - 3344423
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000004F000000AE47E12A216A5141000000B0883F5441AE47E12A226A5141F6285C3F873F54413D0AD7C3256A5141CDCCCC9C873F5441CDCCCCCC2A6A51417B14AE97883F544152B81E752F6A5141E17A14FE893F5441AE47E1FA336A514152B81EB58B3F5441D7A370ED416A5141F6285CFF903F54415C8FC2C5476A5141713D0A37933F5441713D0A074C6A5141B81E856B933F54410AD7A3804D6A5141713D0AD7913F5441295C8F32486A51418FC2F5788D3F544114AE47E1496A51413D0AD7838B3F54418FC2F5B8486A51415C8FC2858A3F54415C8FC2454D6A514133333373853F5441E17A144E506A5141CDCCCCBC873F5441713D0A47516A514133333343883F5441EC51B87E526A514185EB51E8843F5441713D0A774D6A5141EC51B85E7E3F54411F85EB01546A5141D7A3701D783F54413D0AD783586A514114AE47817B3F5441CDCCCC9C606A5141A4703D3A7C3F5441713D0A87606A5141C3F5289C803F54410AD7A340686A51417B14AE87853F5441F6285CFF626A5141333333F3923F544148E17A94626A51413D0AD703943F5441666666C6616A5141295C8F12963F54411F85EBC1596A51418FC2F5489B3F54415C8FC2355B6A514148E17A249F3F54419A9999E95B6A5141EC51B83EA43F5441AE47E1EA5C6A51415C8FC215A73F54410AD7A3705E6A5141713D0A17A83F54418FC2F508616A5141D7A3708DA73F5441713D0A57646A51410AD7A390A43F54418FC2F5686A6A5141333333E39B3F5441A4703DEA6A6A5141E17A14AE9B3F544133333373696A5141666666869A3F5441EC51B84E6A6A5141295C8F32993F5441666666966C6A5141D7A370FD9A3F5441333333436D6A51415C8FC2B59A3F54411F85EBF16D6A51419A999949963F5441AE47E12A726A5141333333538E3F544152B81EC5766A514100000060813F5441333333D3776A514185EB51E87B3F5441C3F528EC776A51419A999989763F5441666666D6786A51413D0AD793743F5441B81E851B776A5141333333736B3F544148E17A24776A51419A9999A9653F5441333333B3786A514100000050523F544185EB51E8726A51413D0AD7B34D3F5441EC51B84E6C6A51419A9999F9483F5441F6285C9F696A514133333393443F5441E17A140E696A514133333343423F5441295C8F22666A5141D7A370ED3F3F54410AD7A3104E6A51417B14AEA73F3F544152B81E75486A514152B81EF54C3F5441000000D0456A5141A4703D3A533F54415C8FC295446A514114AE4721553F544166666606426A51411F85EBE1573F5441CDCCCC2C436A5141666666965A3F5441295C8FA23C6A5141713D0A575F3F5441F6285C6F3C6A5141B81E850B603F544148E17A443B6A51419A999989613F5441CDCCCC7C376A51415C8FC285643F5441713D0AA7336A5141D7A370ED663F54418FC2F5282F6A51410AD7A300693F5441A4703DDA296A5141A4703DCA6A3F54418FC2F5A8216A5141CDCCCC9C6C3F544152B81E65196A5141295C8F12703F544152B81E25126A5141E17A14FE7B3F5441EC51B89E116A5141C3F5289C7F3F5441B81E859B0C6A51410AD7A330A23F544148E17A240C6A5141D7A370ADA43F5441D7A3705D0F6A514152B81EF5A53F54417B14AE77156A514152B81E25943F544148E17A04176A5141AE47E1BA903F5441A4703D7A196A51419A9999798D3F5441000000401C6A5141B81E851B8B3F544148E17A841F6A5141EC51B84E893F5441AE47E12A216A5141000000B0883F5441090000005C8FC285646A5141A4703D6A953F54415C8FC205666A5141CDCCCC1C963F5441AE47E1AA666A514185EB51B8973F544114AE47C1656A51418FC2F538993F54417B14AE77646A5141000000D0993F54419A9999E9626A5141D7A3707D993F5441B81E85BB616A5141AE47E1AA973F5441C3F528DC626A5141EC51B8AE953F54415C8FC285646A5141A4703D6A953F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000078EB301D776A51415E72DF5E6A3F5441DFFE8D1E776A51419A45657D693F544148E17A24776A51419A9999A9653F54415AD8CA2A776A51415F3E2D5B653F5441CA196593776A5141ADBA9E47603F54418E3B65F0776A5141AC4E34C45B3F544172D4E797786A5141BB6119A3533F5441A3FF9089786A51415099DD2E523F5441188F3DA9716A5141B58549CF4C3F544138DD8F5B6C6A5141936DCC02493F544177B0C2296C6A5141C38108BD483F5441164DA8A3696A5141CF093E9A443F5441B3293D2C696A5141EC2118BE423F5441E645D2FF686A5141D548CC37423F54416A89291E666A5141F7E463ED3F3F54410805420E4E6A5141F16454AD3F3F5441FADFE186466A5141472EB788513F5441A31A23CE456A51418594203D533F544174B557C5446A5141C92388D7543F544108B78E4B446A51416CEC0F71553F5441C8455110426A514171BC41D7573F5441D26A8E13436A51417CC0055B5A3F5441EFF9723B466A5141F2686521603F5441079F841C776A5141981A3F7A6A3F544178EB301D776A51415E72DF5E6A3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262450 - 263066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000020000000103000000010000000C000000713D0AB7466B5141A4703D4AAC3F5441666666F62C6B514100000050A03F5441713D0A872C6B5141EC51B81EA03F544185EB51880B6B51418FC2F5A8AA3F5441B81E85DB096B5141C3F5287CAB3F544148E17A64096B51413D0AD793AB3F544166666626256B51411F85EB81B73F5441295C8FA2346B5141AE47E1FABD3F544148E17A84446B5141D7A3709DC43F5441295C8F624C6B5141713D0AE7C73F5441295C8F22576B51413D0AD763B43F5441713D0AB7466B5141A4703D4AAC3F544101030000000200000009000000E17A148E316B5141713D0A4731405441C3F5287C256B51410AD7A3F0264054417B14AE97156B5141295C8F323940544152B81E85216B514114AE4751434054415C8FC2B5276B514114AE479148405441F6285C9F376B51419A999949364054410AD7A3D0336B5141EC51B80E33405441295C8F12336B5141D7A3706D32405441E17A148E316B5141713D0A4731405441050000005C8FC2E5306B5141000000A03640544152B81E25306B5141A4703DEA354054419A999909316B514185EB51F834405441A4703DCA316B5141E17A14AE354054415C8FC2E5306B5141000000A036405441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000822EADE64E6B5141A559B0FEC83F54413AE4EC1D536B5141F11941D3CA3F5441ED35B188556B514193BCE5DFCB3F54417F7DFC60586B5141F4BB171CCD3F5441C7A583635B6B5141E6CD9F6ACE3F544125FA48DB5D6B514146C2E97CCF3F54413EB7EB46606B5141A1F5EE89D03F54416FA35A73626B5141C88C837BD13F544173D2C1FA646B5141DFF19694D23F54418FC2F5A8696B5141CDCCCC9CD43F5441E427E8B1776B5141FB123773C43F54412F879822576B5141E58FDB63B43F5441FC379022576B5141AA76D763B43F5441E1B48D22576B51418B0ADA63B43F54410ADF8F624C6B5141E24F09E7C73F5441822EADE64E6B5141A559B0FEC83F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262610 - 207276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000000E000000CDCCCC0C576B5141E17A142E54405441333333F33C6B5141B81E85CB7340544148E17AC4396B5141666666A6774054415C8FC2053E6B5141A4703D4A7B4054417B14AE37606B5141EC51B8DE514054419A999989686B51419A9999594740544133333323796B5141E17A14BE49405441713D0AC7916B5141333333832B405441295C8F32866B51416666661626405441B81E853B6D6B5141E17A142E46405441295C8F42686B5141D7A370AD45405441EC51B81E676B51413D0AD7C346405441EC51B8DE626B514152B81E9546405441CDCCCC0C576B5141E17A142E54405441050000000AD7A3F0436B514114AE47917140544185EB5138436B51418FC2F5D8704054419A999979446B51417B14AE976F4054411F85EB31456B514100000050704054410AD7A3F0436B514114AE4791714054410103000000010000000600000052B81EA5786B5141E17A145EC33F544114AE4761806B5141EC51B88EBA3F5441666666F66E6B51411F85EBA1AE3F54411F85EBA16E6B51411F85EB01AF3F544114AE4721656B514152B81ED5B93F544152B81EA5786B5141E17A145EC33F5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EC51B8DE626B514152B81E9546405441165643C8616B514101BA16DD4740544159C72B76606B514122D5625A49405441896816805B6B51417831770F4F405441DCC041CB5F6B5141120BB88E51405441260E313F606B51419FDD38D55140544173072A9C636B51413FAC96944D4054410A634D21646B514196A79EE54C4054418063CF22666B5141875BF4624A4054419A999989686B51419A9999594740544133333323796B5141E17A14BE49405441713D0AC7916B5141333333832B405441295C8F32866B51416666661626405441B81E853B6D6B5141E17A142E46405441295C8F42686B5141D7A370AD45405441EC51B81E676B51413D0AD7C346405441EC51B8DE626B514152B81E9546405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262700 - 207265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000C0000001F85EB41276B5141CDCCCC9C07405441E17A144E2B6B5141713D0AB702405441AE47E18A1E6B5141CDCCCCFC01405441A4703D8A0F6B514114AE47610840544114AE4721076B51419A9999591040544148E17A14056B51419A9999891140544185EB51D8046B514152B81E851140544100000070F96A51415C8FC2F528405441CDCCCC6CF56A5141000000702A40544100000080F66A5141AE47E17A2B405441D7A3702D006B5141AE47E13A344054411F85EB41276B5141CDCCCC9C074054410500000085EB51E8056B5141EC51B88E134054415C8FC215056B51418FC2F5F8124054415C8FC295056B514152B81E451240544185EB5168066B5141AE47E1DA1240544185EB51E8056B5141EC51B88E13405441
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C074054411C4F0B1C196B5141E00DE2C3174054418475AF61186B5141C3F0A598184054410092E9AE166B514165EB06891A4054412A100FA0166B51418D3AFC991A405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262700 - 388828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000C0000001F85EB41276B5141CDCCCC9C07405441E17A144E2B6B5141713D0AB702405441AE47E18A1E6B5141CDCCCCFC01405441A4703D8A0F6B514114AE47610840544114AE4721076B51419A9999591040544148E17A14056B51419A9999891140544185EB51D8046B514152B81E851140544100000070F96A51415C8FC2F528405441CDCCCC6CF56A5141000000702A40544100000080F66A5141AE47E17A2B405441D7A3702D006B5141AE47E13A344054411F85EB41276B5141CDCCCC9C074054410500000085EB51E8056B5141EC51B88E134054415C8FC215056B51418FC2F5F8124054415C8FC295056B514152B81E451240544185EB5168066B5141AE47E1DA1240544185EB51E8056B5141EC51B88E13405441
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C074054411C4F0B1C196B5141E00DE2C3174054418475AF61186B5141C3F0A598184054410092E9AE166B514165EB06891A4054412A100FA0166B51418D3AFC991A405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262793 - 207243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D1AAF6B514114AE4721FC3F54418FC2F5785F6B5141333333C3E43F54411F85EB415B6B5141713D0A67E93F544185EB5178526B514152B81E65F33F54418FC2F5F8676B51415C8FC2C5F93F5441E17A144E5E6B5141E17A140E0840544148E17A44626B51415C8FC2D508405441295C8F82656B5141A4703D0A0A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D405441000000506F6B51417B14AE3710405441A4703DFA6F6B51418FC2F588104054410AD7A3B07E6B51411F85EB0111405441A4703D1AAF6B514114AE4721FC3F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000332852F8676B51413643B4C6F93F54412D9776FD676B5141CAFA3AC8F93F54413AB574B5646B5141C3641C98FE3F5441385137555E6B5141848F89030840544148E17A44626B51415C8FC2D508405441B50F12CB636B514143F7E9660940544180F746F7636B5141AFA15777094054417BACA00A656B51417D7FABDD094054413CD98B7A656B5141160B43070A40544101F33CD3666B5141EA95D1490A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D4054418CB88C886E6B51414F8F40350F405441A3C19D446F6B51411A86400E10405441B239ACC86F6B514125604B7110405441A4703DFA6F6B51418FC2F588104054410ECF526D7E6B51415F12C2FF10405441D26C65F87E6B51414FC274DE104054411B40A5CD996B514156D9AA5005405441A4703D1AAF6B514114AE4721FC3F54418FC2F5785F6B5141333333C3E43F5441DEAC5F505D6B514172F58023E73F5441AC95FA0E5A6B5141F6EFFCD2EA3F5441A42AD5EC586B5141C4FD000EEC3F54416D4D848B586B51415E12AA7CEC3F54416A64BE75586B514135506C95EC3F544157D6F280526B5141CEDEAD67F33F54418FC2F5F8676B51415C8FC2C5F93F5441332852F8676B51413643B4C6F93F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262793 - 343152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D1AAF6B514114AE4721FC3F54418FC2F5785F6B5141333333C3E43F54411F85EB415B6B5141713D0A67E93F544185EB5178526B514152B81E65F33F54418FC2F5F8676B51415C8FC2C5F93F5441E17A144E5E6B5141E17A140E0840544148E17A44626B51415C8FC2D508405441295C8F82656B5141A4703D0A0A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D405441000000506F6B51417B14AE3710405441A4703DFA6F6B51418FC2F588104054410AD7A3B07E6B51411F85EB0111405441A4703D1AAF6B514114AE4721FC3F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000332852F8676B51413643B4C6F93F54412D9776FD676B5141CAFA3AC8F93F54413AB574B5646B5141C3641C98FE3F5441385137555E6B5141848F89030840544148E17A44626B51415C8FC2D508405441B50F12CB636B514143F7E9660940544180F746F7636B5141AFA15777094054417BACA00A656B51417D7FABDD094054413CD98B7A656B5141160B43070A40544101F33CD3666B5141EA95D1490A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D4054418CB88C886E6B51414F8F40350F405441A3C19D446F6B51411A86400E10405441B239ACC86F6B514125604B7110405441A4703DFA6F6B51418FC2F588104054410ECF526D7E6B51415F12C2FF10405441D26C65F87E6B51414FC274DE104054411B40A5CD996B514156D9AA5005405441A4703D1AAF6B514114AE4721FC3F54418FC2F5785F6B5141333333C3E43F5441DEAC5F505D6B514172F58023E73F5441AC95FA0E5A6B5141F6EFFCD2EA3F5441A42AD5EC586B5141C4FD000EEC3F54416D4D848B586B51415E12AA7CEC3F54416A64BE75586B514135506C95EC3F544157D6F280526B5141CEDEAD67F33F54418FC2F5F8676B51415C8FC2C5F93F5441332852F8676B51413643B4C6F93F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262920 - 238718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A3704DC36A51413D0AD783453F5441000000D0DC6A514148E17AE45A3F544114AE4741E96A5141D7A370FD653F5441B81E853BFC6A5141D7A3701D793F54410AD7A340FE6A51419A999969773F5441B81E853BFF6A51411F85EB11763F5441B81E85DB006B5141B81E85BB703F544166666656016B5141CDCCCC5C703F5441EC51B8AE046B514148E17A84693F5441CDCCCC1C056B5141EC51B87E673F544148E17AA4056B5141295C8F42643F5441D7A3701DCC6A5141EC51B86E2A3F5441295C8FC2C16A51417B14AE77343F5441F6285C7FBE6A51410AD7A3A0373F5441C3F5281CBD6A514133333353363F5441E17A14CEBB6A514185EB51E8343F5441AE47E11AAF6A5141C3F5284C243F54418FC2F5E8AE6A5141295C8FA2253F5441A4703DFAAD6A51417B14AE77283F5441C3F5288CAE6A5141AE47E1CA2C3F5441D7A3709DAB6A5141B81E851B2F3F544133333313AA6A51413D0AD7932F3F5441B81E858BAB6A51417B14AE77343F54411F85EBF1B26A5141C3F528BC3A3F54415C8FC2F5BB6A514152B81E15403F5441D7A3704DC36A51413D0AD783453F5441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000295C8FC2C16A51417B14AE77343F5441C93FE6F6C06A5141AB2AF13C353F5441882F5588BE6A51411FCDB99A373F5441089FD386BE6A5141AF6E6899373F5441F6285C7FBE6A51410AD7A3A0373F544187F664A7BD6A51413E9BE7D5363F5441C3F5281CBD6A514133333353363F5441F4DA501BBD6A51412F774852363F544167F8AA16BD6A5141C16AEA4D363F5441856E8A03BC6A5141F5B16322353F5441E17A14CEBB6A514185EB51E8343F5441A90AD21AAF6A5141C47A914C243F5441B5B1AD01AF6A5141C93804F9243F544143D557F4AE6A5141BDCE7B54253F5441CA3FCBE6AE6A514110E553B3253F5441B6A44B75AE6A5141DB14E501273F544181CFD94FAE6A5141B65EA273273F54410CAE5CFAAD6A51418F1E9B78283F5441C75C4729AE6A51419ACE98DC293F54410FDCB56DAE6A5141073FD6E32B3F5441C3F5288CAE6A5141AE47E1CA2C3F5441C8C0D630AC6A51414EB928A72E3F5441D7A3709DAB6A5141B81E851B2F3F5441D1038292AA6A51411A7EFC6C2F3F544169749913AA6A5141977DCA932F3F54416CFF148DAB6A5141A8BFDA78343F5441DB797495AC6A5141D988EA58353F5441F42ABDD7AF6A51418055851B383F54411F85EBF1B26A5141C3F528BC3A3F544129608722BA6A514114FEF7FF3E3F54414F302D5ABB6A51412C62C3B53F3F544176E9B2A5BB6A5141D826A1E53F3F54415C8FC2F5BB6A514152B81E15403F5441FB86C4E1BD6A5141005C2481413F544176ECB322BE6A514193C9CBB0413F544158353BFCBF6A514193A2790F433F54415EA412D3C16A5141A2B1E56B443F5441D7A3704DC36A51413D0AD783453F5441000000D0DC6A514148E17AE45A3F54417FD68E1FE36A5141338D6685603F5441A50F32D6E36A51417CA0C722613F54414D7316A8E46A5141D2BA7FE3613F544114AE4741E96A5141D7A370FD653F5441D930949AEA6A514154336C59673F54414AB77ECDEB6A5141D992208B683F54419D2F450DF06A5141571512D66C3F5441AD0D2C1AF26A5141119170E76E3F5441FB59FE4CF46A5141D4AE211F713F544125E28218F96A514118A330F4753F54413D0034D8F96A51412E2B5FB5763F5441AC76F136FC6A51418C3F5018793F5441469AAB06FD6A5141F7A6CA70783F54417F2EB5CFFD6A5141F321C8C8773F54410AD7A340FE6A51419A999969773F5441646670FEFE6A51411A3B9865763F5441B81E853BFF6A51411F85EB11763F544137723647FF6A5141479883EB753F5441884A3BDB006B5141909E08B8703F5441880B4857016B5141D20DFF5A703F54414525100F046B5141FD2731CB6A3F54410E16D676046B51417244D6F6693F5441EC51B8AE046B514148E17A84693F54418E495CBA046B51416DA3BA4D693F5441CDCCCC1C056B5141EC51B87E673F544148E17AA4056B5141295C8F42643F54417233A117026B5141765AF8B0603F544187C81EF3FE6A514193E743885D3F54416F5C4935FE6A5141410D71C95C3F5441B9280EEBFC6A51418EFC7C7D5B3F5441AA39EFF3FB6A51410534B1855A3F54417462B435FA6A5141539485C4583F544115E69C35F86A5141B071C2C1563F5441DDE332B1F46A5141CB5EA638533F54410B95D7DEF06A51415EF130614F3F5441E3B3749EF06A5141670694204F3F5441E934FFDFE46A51419DDF7B52433F54416E612BE2E36A5141F9412E53423F5441D7A3701DCC6A5141EC51B86E2A3F5441295C8FC2C16A51417B14AE77343F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262920 - 385655
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A3704DC36A51413D0AD783453F5441000000D0DC6A514148E17AE45A3F544114AE4741E96A5141D7A370FD653F5441B81E853BFC6A5141D7A3701D793F54410AD7A340FE6A51419A999969773F5441B81E853BFF6A51411F85EB11763F5441B81E85DB006B5141B81E85BB703F544166666656016B5141CDCCCC5C703F5441EC51B8AE046B514148E17A84693F5441CDCCCC1C056B5141EC51B87E673F544148E17AA4056B5141295C8F42643F5441D7A3701DCC6A5141EC51B86E2A3F5441295C8FC2C16A51417B14AE77343F5441F6285C7FBE6A51410AD7A3A0373F5441C3F5281CBD6A514133333353363F5441E17A14CEBB6A514185EB51E8343F5441AE47E11AAF6A5141C3F5284C243F54418FC2F5E8AE6A5141295C8FA2253F5441A4703DFAAD6A51417B14AE77283F5441C3F5288CAE6A5141AE47E1CA2C3F5441D7A3709DAB6A5141B81E851B2F3F544133333313AA6A51413D0AD7932F3F5441B81E858BAB6A51417B14AE77343F54411F85EBF1B26A5141C3F528BC3A3F54415C8FC2F5BB6A514152B81E15403F5441D7A3704DC36A51413D0AD783453F5441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000295C8FC2C16A51417B14AE77343F5441C93FE6F6C06A5141AB2AF13C353F5441882F5588BE6A51411FCDB99A373F5441089FD386BE6A5141AF6E6899373F5441F6285C7FBE6A51410AD7A3A0373F544187F664A7BD6A51413E9BE7D5363F5441C3F5281CBD6A514133333353363F5441F4DA501BBD6A51412F774852363F544167F8AA16BD6A5141C16AEA4D363F5441856E8A03BC6A5141F5B16322353F5441E17A14CEBB6A514185EB51E8343F5441A90AD21AAF6A5141C47A914C243F5441B5B1AD01AF6A5141C93804F9243F544143D557F4AE6A5141BDCE7B54253F5441CA3FCBE6AE6A514110E553B3253F5441B6A44B75AE6A5141DB14E501273F544181CFD94FAE6A5141B65EA273273F54410CAE5CFAAD6A51418F1E9B78283F5441C75C4729AE6A51419ACE98DC293F54410FDCB56DAE6A5141073FD6E32B3F5441C3F5288CAE6A5141AE47E1CA2C3F5441C8C0D630AC6A51414EB928A72E3F5441D7A3709DAB6A5141B81E851B2F3F5441D1038292AA6A51411A7EFC6C2F3F544169749913AA6A5141977DCA932F3F54416CFF148DAB6A5141A8BFDA78343F5441DB797495AC6A5141D988EA58353F5441F42ABDD7AF6A51418055851B383F54411F85EBF1B26A5141C3F528BC3A3F544129608722BA6A514114FEF7FF3E3F54414F302D5ABB6A51412C62C3B53F3F544176E9B2A5BB6A5141D826A1E53F3F54415C8FC2F5BB6A514152B81E15403F5441FB86C4E1BD6A5141005C2481413F544176ECB322BE6A514193C9CBB0413F544158353BFCBF6A514193A2790F433F54415EA412D3C16A5141A2B1E56B443F5441D7A3704DC36A51413D0AD783453F5441000000D0DC6A514148E17AE45A3F54417FD68E1FE36A5141338D6685603F5441A50F32D6E36A51417CA0C722613F54414D7316A8E46A5141D2BA7FE3613F544114AE4741E96A5141D7A370FD653F5441D930949AEA6A514154336C59673F54414AB77ECDEB6A5141D992208B683F54419D2F450DF06A5141571512D66C3F5441AD0D2C1AF26A5141119170E76E3F5441FB59FE4CF46A5141D4AE211F713F544125E28218F96A514118A330F4753F54413D0034D8F96A51412E2B5FB5763F5441AC76F136FC6A51418C3F5018793F5441469AAB06FD6A5141F7A6CA70783F54417F2EB5CFFD6A5141F321C8C8773F54410AD7A340FE6A51419A999969773F5441646670FEFE6A51411A3B9865763F5441B81E853BFF6A51411F85EB11763F544137723647FF6A5141479883EB753F5441884A3BDB006B5141909E08B8703F5441880B4857016B5141D20DFF5A703F54414525100F046B5141FD2731CB6A3F54410E16D676046B51417244D6F6693F5441EC51B8AE046B514148E17A84693F54418E495CBA046B51416DA3BA4D693F5441CDCCCC1C056B5141EC51B87E673F544148E17AA4056B5141295C8F42643F54417233A117026B5141765AF8B0603F544187C81EF3FE6A514193E743885D3F54416F5C4935FE6A5141410D71C95C3F5441B9280EEBFC6A51418EFC7C7D5B3F5441AA39EFF3FB6A51410534B1855A3F54417462B435FA6A5141539485C4583F544115E69C35F86A5141B071C2C1563F5441DDE332B1F46A5141CB5EA638533F54410B95D7DEF06A51415EF130614F3F5441E3B3749EF06A5141670694204F3F5441E934FFDFE46A51419DDF7B52433F54416E612BE2E36A5141F9412E53423F5441D7A3701DCC6A5141EC51B86E2A3F5441295C8FC2C16A51417B14AE77343F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262986 - 3295786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000040000000103000000010000001300000085EB5128106A51418FC2F548CB3E5441F6285C9F156A5141000000E0CA3E54417B14AE07216A51418FC2F5F8CB3E544114AE4771276A5141F6285CBFCD3E54413D0AD7E3296A5141C3F5287CB83E5441E17A149E296A51410AD7A380B83E5441AE47E17A296A5141E17A140EB83E5441E17A143E2A6A5141E17A144EB53E5441E17A14EE266A5141E17A149EB43E5441A4703D4A256A514166666616B43E5441000000F0226A5141CDCCCCFCB33E5441B81E85EB156A5141295C8F52B03E54410AD7A370116A51417B14AE67AE3E544148E17AE40D6A51419A999999AF3E544152B81E75096A5141AE47E1AAB03E544114AE4711066A5141EC51B8FED23E54419A999979086A51418FC2F598CF3E5441D7A3700D0B6A514100000040CD3E544185EB5128106A51418FC2F548CB3E544101030000000100000007000000CDCCCC6C256A5141B81E85EB1A3F54410AD7A3E0226A5141B81E855B1B3F5441A4703DAA206A5141295C8F121C3F5441AE47E16A256A51417B14AEE71C3F54411F85EB21266A51417B14AE071D3F544185EB5138266A5141333333B31B3F5441CDCCCC6C256A5141B81E85EB1A3F54410103000000010000002D000000333333E33C6A51419A9999790A3F5441EC51B85E3E6A5141AE47E1EA003F54417B14AE173F6A51415C8FC275FB3E544148E17A543A6A514133333343EE3E5441EC51B88E376A5141CDCCCCCCE63E5441F6285CDF3B6A5141C3F5284CD13E5441E17A142E366A5141CDCCCC8CD13E5441B81E851B2F6A51413D0AD7A3D03E54413D0AD743276A51415C8FC2D5CE3E544185EB51D8206A5141EC51B81ECD3E54413D0AD793156A5141295C8F02CC3E5441E17A145E106A51419A999969CC3E5441D7A370AD0B6A51415C8FC245CE3E5441295C8F82096A51419A999969D03E5441B81E859B036A514152B81E05D83E5441F6285CBF046A514152B81EE5D73E544133333333056A5141B81E853BE33E54410AD7A350026A51419A9999B9F13E5441F6285C8FFF6951418FC2F5E8F63E54419A999939FE69514114AE4711F93E5441B81E85BBFC6951417B14AE17FD3E54413D0AD7A3FA695141F6285C7F003F544185EB51C8F4695141333333E3093F5441D7A370ADF16951413D0AD7C3123F5441F6285CDFEE6951415C8FC2A5133F54413D0AD7B3EE695141F6285CBF153F5441CDCCCCDCED6951419A999959173F5441713D0A17EF6951415C8FC2B5173F54410AD7A360F76951419A9999691B3F5441000000E0FB695141CDCCCC0C1D3F54413D0AD783006A514152B81EF51D3F54411F85EB71056A51410AD7A3701E3F544133333363136A5141CDCCCC4C1E3F544152B81EC5196A5141295C8F021E3F5441D7A370DD1B6A51417B14AE671D3F544185EB5128206A5141E17A14EE1A3F544148E17A14246A5141000000D0053F54413D0AD7D3306A5141A4703D9A073F5441AE47E11A376A514166666616093F544133333363356A51415C8FC2A5103F5441295C8F52356A5141333333E3113F544148E17AA4346A514185EB51A81E3F5441D7A3705D3B6A5141000000F01E3F5441F6285C8F3C6A5141295C8F920C3F5441333333E33C6A51419A9999790A3F54410103000000010000002900000033333363356A514114AE4701513F54417B14AE67346A514100000030513F5441EC51B88E166A514185EB51B8563F544166666696156A51415C8FC2555F3F5441000000A0146A5141C3F5281C633F544100000090126A5141CDCCCC7C653F5441295C8F220F6A5141B81E854B673F5441C3F528AC0A6A5141E17A141E683F54418FC2F5B8056A514185EB5178673F5441713D0A67FE6951411F85EBE1653F54419A9999C9FB69514152B81EB5653F544185EB5198F869514100000010663F5441E17A145EFA695141713D0AE76F3F544133333313F869514148E17AB4773F544185EB5118F36951410AD7A320803F54411F85EB71E669514133333323883F5441A4703DCAE669514152B81E458B3F5441D7A3709DE76951411F85EB11903F544114AE47A1E8695141CDCCCCFC943F5441EC51B8FEE96951413D0AD7E3993F54413D0AD783EB6951410AD7A3409E3F54410AD7A3F0ED6951411F85EBD1A33F54418FC2F568F16951417B14AE17AA3F544100000010F5695141AE47E17AAF3F54413D0AD783F96951411F85EBE1B43F5441000000D0FC69514100000050B83F544100000060006A5141D7A3708DBB3F5441713D0A97046A514152B81EE5BE3F544100000020086A514185EB51E8B73F544114AE47110C6A514114AE4721A23F544148E17A140C6A51410AD7A380A13F5441CDCCCC9C116A51417B14AEE77B3F544114AE4711196A5141AE47E18A6F3F544166666636216A51419A9999396B3F5441AE47E18A296A51419A999989693F5441F6285C4F336A5141F6285CDF653F544185EB51683B6A514114AE4711603F54418FC2F5683C6A5141A4703D9A5D3F5441295C8F823F6A5141EC51B88E593F54410AD7A3B0416A514100000080573F544133333363356A514114AE4701513F5441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000033333363356A514114AE4701513F54417B14AE67346A514100000030513F5441EC51B88E166A514185EB51B8563F544166666696156A51415C8FC2555F3F5441000000A0146A5141C3F5281C633F544100000090126A5141CDCCCC7C653F5441295C8F220F6A5141B81E854B673F5441C3F528AC0A6A5141E17A141E683F54418FC2F5B8056A514185EB5178673F5441713D0A67FE6951411F85EBE1653F54419A9999C9FB69514152B81EB5653F544185EB5198F869514100000010663F5441E17A145EFA695141713D0AE76F3F544133333313F869514148E17AB4773F544185EB5118F36951410AD7A320803F544141E638A8E8695141B2D39DBC863F5441C3C4542DE96951418C1520A88A3F5441D9978CCBE6695141B6B3BC4C8B3F544114AC9034E76951416529BDAF8D3F5441F65109A5E769514113742A36903F54413DEE7426E8695141B619BEA9923F5441CB592898E869514152889AD0943F544150D0FD6AEC695141F5BC9D28963F54418753A6A9EE69514153E7113B983F5441A79DF149F2695141578A91079C3F54414FB97CD0F769514136404667983F544184B635A8026A51416759567CA43F54414076A810086A5141534A5F59AA3F5441FA69D131FF695141ACAF9027B23F544122B129E6F0695141CA7E9065A43F54412441295AEE695141E5F6A990A43F5441EF5963C8EE6951418609EA57A53F54417FEF8266EF695141466DBE75A63F5441749811BCEF695141A37B6610A73F54418B05B45FF069514199293138A83F5441237BE819F1695141916DC888A93F5441E5FE27A4F169514142D6FE6EAA3F5441D9B1ACDAF2695141A4ED0339AC3F54413AE66169F3695141BC07830BAD3F54411A7637DFF369514117C051B9AD3F5441DF053118F5695141F951F365AF3F544173F15B3DF6695141C170FEDEB03F54417CB5B5C3F6695141C9E48D8BB13F544160342C6DF7695141F19E2C59B23F5441A80BC9F0F7695141E046DEF8B23F544186CC32FBF9695141A8515937B53F544148CC0156FB69514109D910B3B63F544107473818FC6951415E10B587B73F54417D6EE2C0FC69514186824A3FB83F5441761365BFFE69514187E09D11BA3F5441A646E6A3FF695141BC2458E2BA3F5441C202E35D016A5141D8F22156BC3F54419DFCADC5026A5141A2811274BD3F54414BF4C047036A514195D23CDBBD3F544102787743046A514154808E82BE3F544162B3CE8B076A5141D5223F0DB93F54416EDCFC14096A5141C6D10F9FB23F5441F35A49590A6A51417867880EAD3F544114AE47110C6A514114AE4721A23F544148E17A140C6A51410AD7A380A13F5441CDCCCC9C116A51417B14AEE77B3F544114AE4711196A5141AE47E18A6F3F544166666636216A51419A9999396B3F5441AE47E18A296A51419A999989693F5441F6285C4F336A5141F6285CDF653F544185EB51683B6A514114AE4711603F54418FC2F5683C6A5141A4703D9A5D3F5441295C8F823F6A5141EC51B88E593F54410AD7A3B0416A514100000080573F544133333363356A514114AE4701513F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>298323 - 4482939
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000033333373B5C950413D0AD71355AF544114AE47A1BBC95041713D0A1754AF5441C3F5287CBFC95041E17A143E54AF5441AE47E1AABFC95041333333934AAF5441EC51B87EBEC95041666666F648AF54419A9999E991C950413D0AD7733BAF5441CDCCCCAC90C95041333333533CAF5441EC51B82E90C95041EC51B8CE5CAF544114AE479197C9504152B81EC55EAF5441295C8F5299C95041A4703D1A5FAF5441295C8FD29AC950411F85EB515FAF5441666666A69CC95041333333235FAF544166666616A3C95041333333235CAF544100000090A9C9504148E17AF458AF5441B81E85ABAFC95041D7A3709D56AF544133333373B5C950413D0AD71355AF5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000009A9999E991C950413D0AD7733BAF5441CDCCCCAC90C95041333333533CAF5441EC51B82E90C95041EC51B8CE5CAF544114AE479197C9504152B81EC55EAF5441295C8F5299C95041A4703D1A5FAF5441295C8FD29AC950411F85EB515FAF5441666666A69CC95041333333235FAF544166666616A3C95041333333235CAF544195C515CCA3C950416597E6C95BAF54415F5E4BE6A4C950414E76313F5BAF544165052B8DA5C950416B812CED5AAF5441BC51D9C2A6C9504182CF34C541AF5441E5FC5A66A6C95041697A2DA941AF54418C51A9FBA5C950410F84D88841AF54410790E09CA4C9504142DC8B1E41AF54417036BF78A3C95041370DA2B540AF54419A9999E991C950413D0AD7733BAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263076 - 1096700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E1AE0FE0080751417AFF2FC9F8495441DE7A12A4080751410342A784F9495441E2D24A4306075141F6D00681F84954412CA20F2C07075141FA283F20F6495441B4145F7309075141D2F9AEE2F6495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441E1AE0FE0080751417AFF2FC9F8495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263076 - 3899995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E1AE0FE0080751417AFF2FC9F8495441DE7A12A4080751410342A784F9495441E2D24A4306075141F6D00681F84954412CA20F2C07075141FA283F20F6495441B4145F7309075141D2F9AEE2F6495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441E1AE0FE0080751417AFF2FC9F8495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263547 - 3077886
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000E000000B81E854BFD135141EC51B83E8B82544114AE4711FC1351418FC2F5887E825441EC51B8DEFB1351417B14AEE77A825441713D0A87FB1351418FC2F598748254411F85EB01FB135141F6285C1F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA73825441CDCCCC4CE9135141000000F073825441EC51B8DEE813514185EB513872825441D7A3708DEA135141000000A0848254419A9999F9EA135141D7A370ED8C82544148E17A84ED13514152B81E458D825441B81E854BFD135141EC51B83E8B82544101030000000100000011000000A4703D4A1914514100000020388254418FC2F55823145141C3F5288C35825441E17A14DE211451417B14AEE726825441295C8F921D1451413D0AD7032882544148E17A1417145141F6285C1F2A825441D7A370FD0D145141D7A3707D2C8254410AD7A3B005145141AE47E1BA2E8254418FC2F5A8FB135141B81E85FB318254415C8FC295FF1351415C8FC2B5308254417B14AE9700145141EC51B82E378254417B14AE27011451413D0AD7F33B82544166666616031451415C8FC2153D825441F6285C9F06145141333333533C82544148E17A040914514148E17A243C8254413D0AD7B30B1451411F85EBB13B8254417B14AE470F1451417B14AE873A825441A4703D4A191451410000002038825441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033DF80CBEC1351414F00D6C173825441CE44500FE9135141CF7FE34B74825441175AD13AEA135141DB64301881825441C02A65FDEA13514150556FF28C825441C0DC2D4EEB135141841F56838D825441C9F8E2C5F0135141758C27DA8C8254414A36A458FD1351415E080F3D8B825441549AE2B1FB13514138C5FFAD77825441B6764901FB1351419BF2961F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA7382544133DF80CBEC1351414F00D6C173825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263547 - 3390630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000E000000B81E854BFD135141EC51B83E8B82544114AE4711FC1351418FC2F5887E825441EC51B8DEFB1351417B14AEE77A825441713D0A87FB1351418FC2F598748254411F85EB01FB135141F6285C1F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA73825441CDCCCC4CE9135141000000F073825441EC51B8DEE813514185EB513872825441D7A3708DEA135141000000A0848254419A9999F9EA135141D7A370ED8C82544148E17A84ED13514152B81E458D825441B81E854BFD135141EC51B83E8B82544101030000000100000011000000A4703D4A1914514100000020388254418FC2F55823145141C3F5288C35825441E17A14DE211451417B14AEE726825441295C8F921D1451413D0AD7032882544148E17A1417145141F6285C1F2A825441D7A370FD0D145141D7A3707D2C8254410AD7A3B005145141AE47E1BA2E8254418FC2F5A8FB135141B81E85FB318254415C8FC295FF1351415C8FC2B5308254417B14AE9700145141EC51B82E378254417B14AE27011451413D0AD7F33B82544166666616031451415C8FC2153D825441F6285C9F06145141333333533C82544148E17A040914514148E17A243C8254413D0AD7B30B1451411F85EBB13B8254417B14AE470F1451417B14AE873A825441A4703D4A191451410000002038825441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033DF80CBEC1351414F00D6C173825441CE44500FE9135141CF7FE34B74825441175AD13AEA135141DB64301881825441C02A65FDEA13514150556FF28C825441C0DC2D4EEB135141841F56838D825441C9F8E2C5F0135141758C27DA8C8254414A36A458FD1351415E080F3D8B825441549AE2B1FB13514138C5FFAD77825441B6764901FB1351419BF2961F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA7382544133DF80CBEC1351414F00D6C173825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263738 - 3159377
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5286C4217514100000070008854415C8FC2B5411751417B14AE770A88544114AE4751411751419A9999E90E88544185EB51A840175141000000601388544148E17AE43F175141AE47E11A17885441F6285C8F3E175141CDCCCCEC1B88544148E17A743D175141A4703D1A20885441AE47E12A3C1751416666666625885441EC51B81E3F175141CDCCCC0C288854419A999979421751410AD7A3202B885441EC51B8EE46175141F6285CFF18885441EC51B87E47175141F6285CFF15885441A4703D2A48175141713D0A07128854413D0AD78348175141CDCCCCFC0C88544185EB51384817514148E17AC406885441CDCCCCEC4717514114AE47010488544148E17AE44617514185EB51E8F987544133333393451751410AD7A300ED8754411F85EBD144175141B81E85DBE78754418FC2F5D8431751415C8FC295E1875441666666A641175141000000D0E2875441713D0A773E17514185EB5188E5875441B81E85DB3F17514100000020E9875441F6285CCF4017514133333383EC87544166666666411751411F85EB11F08754419A99994942175141E17A14BEFA875441C3F5286C421751410000007000885441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000031077E434817514134880BB007885441AF899A7347175141755A0560FF87544120918AA34617514147AB3D6CF78754413E36F28145175141A6F70F8BEC87544194658FF0431751413B57FA2DE2875441DDEFF18D36175141EEB4365EEA875441724953513217514179C27DBAEC87544197334CC82F175141936FE44FED875441D22C21F22F17514156DC168AEE875441B6F81B27311751415B657128F48754410C9B124731175141EB43215DF6875441448690BC30175141D3E3CA10FC875441D2FAE8B130175141BE703FE30588544162F2B486321751414DE597D8058854410AD7A34034175141F6285CCF05885441C3F5285C3417514166666646098854410AD7A34034175141000000100D88544152B81E65331751413D0AD7B311885441EC51B81E32175141E17A147E1C885441C3F5280C3A1751413D0AD7C323885441AE47E12A3C1751416666666625885441933D3B9A42175141070FEB9B2A8854413E355048451751417D20286A2288544143EEC6B14617514101BA3BF7198854411DFF05344817514142A0287A1188544131077E434817514134880BB007885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263738 - 3567823
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5286C4217514100000070008854415C8FC2B5411751417B14AE770A88544114AE4751411751419A9999E90E88544185EB51A840175141000000601388544148E17AE43F175141AE47E11A17885441F6285C8F3E175141CDCCCCEC1B88544148E17A743D175141A4703D1A20885441AE47E12A3C1751416666666625885441EC51B81E3F175141CDCCCC0C288854419A999979421751410AD7A3202B885441EC51B8EE46175141F6285CFF18885441EC51B87E47175141F6285CFF15885441A4703D2A48175141713D0A07128854413D0AD78348175141CDCCCCFC0C88544185EB51384817514148E17AC406885441CDCCCCEC4717514114AE47010488544148E17AE44617514185EB51E8F987544133333393451751410AD7A300ED8754411F85EBD144175141B81E85DBE78754418FC2F5D8431751415C8FC295E1875441666666A641175141000000D0E2875441713D0A773E17514185EB5188E5875441B81E85DB3F17514100000020E9875441F6285CCF4017514133333383EC87544166666666411751411F85EB11F08754419A99994942175141E17A14BEFA875441C3F5286C421751410000007000885441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000031077E434817514134880BB007885441AF899A7347175141755A0560FF87544120918AA34617514147AB3D6CF78754413E36F28145175141A6F70F8BEC87544194658FF0431751413B57FA2DE2875441DDEFF18D36175141EEB4365EEA875441724953513217514179C27DBAEC87544197334CC82F175141936FE44FED875441D22C21F22F17514156DC168AEE875441B6F81B27311751415B657128F48754410C9B124731175141EB43215DF6875441448690BC30175141D3E3CA10FC875441D2FAE8B130175141BE703FE30588544162F2B486321751414DE597D8058854410AD7A34034175141F6285CCF05885441C3F5285C3417514166666646098854410AD7A34034175141000000100D88544152B81E65331751413D0AD7B311885441EC51B81E32175141E17A147E1C885441C3F5280C3A1751413D0AD7C323885441AE47E12A3C1751416666666625885441933D3B9A42175141070FEB9B2A8854413E355048451751417D20286A2288544143EEC6B14617514101BA3BF7198854411DFF05344817514142A0287A1188544131077E434817514134880BB007885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263760 - 2940207
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000013000000AE47E1FA38165141E17A143EF98254417B14AE0739165141E17A141EFD825441CDCCCC0C39165141E17A140E03835441E17A14DE38165141A4703D2A07835441E17A146E381651419A9999A90D83544114AE470139165141A4703D1A12835441C3F528DC381651419A999919168354413D0AD78338165141666666A619835441AE47E10A37165141E17A142E1D8354410AD7A3F03A1651410AD7A3F01A83544185EB510842165141666666661783544114AE471146165141AE47E14A15835441000000A041165141CDCCCC7C118354419A9999F940165141D7A3707D078354419A9999E940165141333333C3FC8254413D0AD753401651415C8FC2F5ED825441A4703D4A3E1651413D0AD793ED8254413D0AD7C33B16514148E17A14F4825441AE47E1FA38165141E17A143EF9825441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007AE7A94437165141F2C0DE0C1D83544179BED191321651412B6E1085268354410D9F560D2C16514143E275162F83544195B0E1F224165141E33DD8F23783544148E2C66D2B1651411AB2CC6C438354417B14AEB72E165141EC51B8BE4A8354413D0AD7F3371651410AD7A31055835441EC51B82E4116514152B81EE55C835441D7A370CD41165141F6285C8F5C83544152B81EF54E1651413D0AD74366835441EC51B83E5716514114AE47715C835441000000605C165141333333E355835441D7A3709D5E1651416666660653835441666666265D1651419A9999A94583544185EB51185E1651410AD7A3F03C8354414407483E5D1651413ADB93FD308354414C8CEE575A165141EA5937D829835441DA7DC25248165141C3711B3314835441A16740C6381651411A20432F1C8354417AE7A94437165141F2C0DE0C1D835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263760 - 3273925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000013000000AE47E1FA38165141E17A143EF98254417B14AE0739165141E17A141EFD825441CDCCCC0C39165141E17A140E03835441E17A14DE38165141A4703D2A07835441E17A146E381651419A9999A90D83544114AE470139165141A4703D1A12835441C3F528DC381651419A999919168354413D0AD78338165141666666A619835441AE47E10A37165141E17A142E1D8354410AD7A3F03A1651410AD7A3F01A83544185EB510842165141666666661783544114AE471146165141AE47E14A15835441000000A041165141CDCCCC7C118354419A9999F940165141D7A3707D078354419A9999E940165141333333C3FC8254413D0AD753401651415C8FC2F5ED825441A4703D4A3E1651413D0AD793ED8254413D0AD7C33B16514148E17A14F4825441AE47E1FA38165141E17A143EF9825441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007AE7A94437165141F2C0DE0C1D83544179BED191321651412B6E1085268354410D9F560D2C16514143E275162F83544195B0E1F224165141E33DD8F23783544148E2C66D2B1651411AB2CC6C438354417B14AEB72E165141EC51B8BE4A8354413D0AD7F3371651410AD7A31055835441EC51B82E4116514152B81EE55C835441D7A370CD41165141F6285C8F5C83544152B81EF54E1651413D0AD74366835441EC51B83E5716514114AE47715C835441000000605C165141333333E355835441D7A3709D5E1651416666660653835441666666265D1651419A9999A94583544185EB51185E1651410AD7A3F03C8354414407483E5D1651413ADB93FD308354414C8CEE575A165141EA5937D829835441DA7DC25248165141C3711B3314835441A16740C6381651411A20432F1C8354417AE7A94437165141F2C0DE0C1D835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263961 - 2976495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000333333B33C145141E17A14EEC0875441D7A370ED39145141C3F5282CB08754410AD7A3103B1451415C8FC275AF8754415C8FC21534145141713D0A17B08754411F85EB413414514152B81EE5B1875441CDCCCCEC381451413D0AD783CC875441B81E85CB411451411F85EB41FD875441EC51B80E4214514152B81E35FE875441EC51B81E43145141A4703D6A03885441AE47E13A471451419A99997904885441AE47E1FA49145141B81E85EB03885441B81E85AB48145141F6285C8FFE8754415C8FC22548145141C3F5286CFC875441295C8F82461451417B14AEC7F387544185EB51F84214514152B81E15E1875441A4703DCA421451417B14AED7DF8754411F85EB214114514100000000D587544114AE47E13E145141C3F528CCCA875441333333B33C145141E17A14EEC0875441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E1FA49145141B81E85EB03885441B81E853B5214514133333393FF875441EC51B8AE5214514133333303FD87544114AE47615214514114AE4781FB87544148E17AF451145141D7A3705DF9875441AE47E1DA4E1451411F85EB01E7875441000000C04D14514114AE47D1DE875441E17A142E4B145141F6285CAFCB875441333333B347145141D7A370DDC6875441B81E857B461451415C8FC245C587544114AE471145145141F6285C6FC3875441E17A14FE41145141713D0A67BF8754418F238C884014514186374A0CBD875441965BC66A3F14514143534926BB875441D61A95D73E145141379B83ECB987544187DF8CE83D145141256604A2B78754416BE8ABD43C1451410B85B0DAB3875441B556DFE53B145141A4DF252EB0875441492E79063B145141C0E6C9F3AA8754412DD84CA13A1451410A2D64A1AA875441B591B5CF3A145141BDCC009DAC875441648C8E0E3B145141691B615EAF87544122C1F0C03A1451416819F47CAF8754410AD7A3103B1451415C8FC275AF875441D7A370ED39145141C3F5282CB0875441333333B33C145141E17A14EEC087544114AE47E13E145141C3F528CCCA8754411F85EB214114514100000000D5875441A4703DCA421451417B14AED7DF87544185EB51F84214514152B81E15E1875441295C8F82461451417B14AEC7F38754415C8FC22548145141C3F5286CFC875441B81E85AB48145141F6285C8FFE875441AE47E1FA49145141B81E85EB03885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263961 - 3531287
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000333333B33C145141E17A14EEC0875441D7A370ED39145141C3F5282CB08754410AD7A3103B1451415C8FC275AF8754415C8FC21534145141713D0A17B08754411F85EB413414514152B81EE5B1875441CDCCCCEC381451413D0AD783CC875441B81E85CB411451411F85EB41FD875441EC51B80E4214514152B81E35FE875441EC51B81E43145141A4703D6A03885441AE47E13A471451419A99997904885441AE47E1FA49145141B81E85EB03885441B81E85AB48145141F6285C8FFE8754415C8FC22548145141C3F5286CFC875441295C8F82461451417B14AEC7F387544185EB51F84214514152B81E15E1875441A4703DCA421451417B14AED7DF8754411F85EB214114514100000000D587544114AE47E13E145141C3F528CCCA875441333333B33C145141E17A14EEC0875441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E1FA49145141B81E85EB03885441B81E853B5214514133333393FF875441EC51B8AE5214514133333303FD87544114AE47615214514114AE4781FB87544148E17AF451145141D7A3705DF9875441AE47E1DA4E1451411F85EB01E7875441000000C04D14514114AE47D1DE875441E17A142E4B145141F6285CAFCB875441333333B347145141D7A370DDC6875441B81E857B461451415C8FC245C587544114AE471145145141F6285C6FC3875441E17A14FE41145141713D0A67BF8754418F238C884014514186374A0CBD875441965BC66A3F14514143534926BB875441D61A95D73E145141379B83ECB987544187DF8CE83D145141256604A2B78754416BE8ABD43C1451410B85B0DAB3875441B556DFE53B145141A4DF252EB0875441492E79063B145141C0E6C9F3AA8754412DD84CA13A1451410A2D64A1AA875441B591B5CF3A145141BDCC009DAC875441648C8E0E3B145141691B615EAF87544122C1F0C03A1451416819F47CAF8754410AD7A3103B1451415C8FC275AF875441D7A370ED39145141C3F5282CB0875441333333B33C145141E17A14EEC087544114AE47E13E145141C3F528CCCA8754411F85EB214114514100000000D5875441A4703DCA421451417B14AED7DF87544185EB51F84214514152B81E15E1875441295C8F82461451417B14AEC7F38754415C8FC22548145141C3F5286CFC875441B81E85AB48145141F6285C8FFE875441AE47E1FA49145141B81E85EB03885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264234 - 1062512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B9C19514152B81E456D8454410AD7A3F09A1951410000009065845441713D0A17991951410AD7A3E05884544152B81E7597195141CDCCCC6C4984544185EB51A8961951415C8FC25541845441713D0A5790195141C3F5284C40845441666666B68C1951411F85EBB13F84544114AE4781851951413D0AD7833E8454417B14AEC786195141666666264E8454419A9999D987195141C3F528EC628454419A9999198819514114AE47F16D8454416666669687195141A4703D1A768454410000004087195141B81E857B7B8454419A9999398F195141B81E859B7C845441A4703D2A9E1951418FC2F5A87B84544114AE47C1AA195141713D0AB77A845441EC51B8BEB81951411F85EBB179845441CDCCCC0CC01951417B14AE077884544152B81E95BE1951415C8FC2F5748454418FC2F5B8AB195141F6285CEF758454410AD7A3A0AB195141CDCCCCFC74845441C3F5282C9E1951410AD7A37076845441B81E852B9C19514152B81E456D845441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000A74648DCBE1951419471843B7A8454414DC0D2DDC1195141508F5E8A798454411C8AD00EC019514141F15A09788454412A4E97D7BF1951411CC6CE1378845441C6F3F6E9BD195141BE6A518478845441C24C63D2BA1951419D30BD3879845441FFF49FEDB819514199AA3AA77984544197FA51BBB8195141D4F92AB2798454417C02715DB8195141723303B9798454410290C925B71951416226BCCF79845441D1CABB6BB41951412228A1027A845441FDC32DB5A919514147DF29CB7A845441A4703D2A9E1951418FC2F5A87B8454419A9999398F195141B81E859B7C8454410000004087195141B81E857B7B845441CDCCCC6C7A195141F6285C3F7C8454418FC2F5A86B19514185EB51187D845441A4703D5A6C195141713D0A07828454410AD7A360761951418FC2F5D88184544152B81E6577195141E17A149E858454411F85EB5183195141333333A384845441F6285C7F8B19514148E17AE484845441333333A38B19514152B81E65868454410AD7A310951951413333338386845441EC51B80E9A195141AE47E19A868454413D0AD7539E195141EC51B8AE86845441295C8F329E1951411F85EBB18D845441F6285C6F9F1951410AD7A300938454413D0AD7A3A019514185EB5158958454410AD7A3D0A319514152B81E859B845441B81E858BA719514100000070A28454410420B491B11951412633358C9B845441E87C95F4B51951413769D9E9988454413A4C54BAB4195141921B4DEF96845441BC817562AA1951411BD53043868454411BC5BF7BA619514135FA5DF97F8454415DD19AC6AB19514158C481B97E8454415FC0F188AE1951410C4EC0127E84544177FED9B2B119514143778B537D845441BC45991AB31951419A369DFE7C8454410BB45093BC195141BC302DC27A8454419A5762B3BD1951410F002B7E7A845441A74648DCBE1951419471843B7A845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264234 - 3602435
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B9C19514152B81E456D8454410AD7A3F09A1951410000009065845441713D0A17991951410AD7A3E05884544152B81E7597195141CDCCCC6C4984544185EB51A8961951415C8FC25541845441713D0A5790195141C3F5284C40845441666666B68C1951411F85EBB13F84544114AE4781851951413D0AD7833E8454417B14AEC786195141666666264E8454419A9999D987195141C3F528EC628454419A9999198819514114AE47F16D8454416666669687195141A4703D1A768454410000004087195141B81E857B7B8454419A9999398F195141B81E859B7C845441A4703D2A9E1951418FC2F5A87B84544114AE47C1AA195141713D0AB77A845441EC51B8BEB81951411F85EBB179845441CDCCCC0CC01951417B14AE077884544152B81E95BE1951415C8FC2F5748454418FC2F5B8AB195141F6285CEF758454410AD7A3A0AB195141CDCCCCFC74845441C3F5282C9E1951410AD7A37076845441B81E852B9C19514152B81E456D845441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000A74648DCBE1951419471843B7A8454414DC0D2DDC1195141508F5E8A798454411C8AD00EC019514141F15A09788454412A4E97D7BF1951411CC6CE1378845441C6F3F6E9BD195141BE6A518478845441C24C63D2BA1951419D30BD3879845441FFF49FEDB819514199AA3AA77984544197FA51BBB8195141D4F92AB2798454417C02715DB8195141723303B9798454410290C925B71951416226BCCF79845441D1CABB6BB41951412228A1027A845441FDC32DB5A919514147DF29CB7A845441A4703D2A9E1951418FC2F5A87B8454419A9999398F195141B81E859B7C8454410000004087195141B81E857B7B845441CDCCCC6C7A195141F6285C3F7C8454418FC2F5A86B19514185EB51187D845441A4703D5A6C195141713D0A07828454410AD7A360761951418FC2F5D88184544152B81E6577195141E17A149E858454411F85EB5183195141333333A384845441F6285C7F8B19514148E17AE484845441333333A38B19514152B81E65868454410AD7A310951951413333338386845441EC51B80E9A195141AE47E19A868454413D0AD7539E195141EC51B8AE86845441295C8F329E1951411F85EBB18D845441F6285C6F9F1951410AD7A300938454413D0AD7A3A019514185EB5158958454410AD7A3D0A319514152B81E859B845441B81E858BA719514100000070A28454410420B491B11951412633358C9B845441E87C95F4B51951413769D9E9988454413A4C54BAB4195141921B4DEF96845441BC817562AA1951411BD53043868454411BC5BF7BA619514135FA5DF97F8454415DD19AC6AB19514158C481B97E8454415FC0F188AE1951410C4EC0127E84544177FED9B2B119514143778B537D845441BC45991AB31951419A369DFE7C8454410BB45093BC195141BC302DC27A8454419A5762B3BD1951410F002B7E7A845441A74648DCBE1951419471843B7A845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264432 - 25576
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000295C8F42051351410AD7A3401482544148E17A640513514152B81E7511825441B81E85CB0513514152B81EC50B825441713D0A3706135141F6285C0F078254415C8FC2550613514185EB519805825441E17A147E06135141713D0AA7038254411F85EB910613514152B81EF5FF81544148E17A9406135141E17A149EFB815441AE47E17A0613514185EB5148F881544148E17A640613514152B81ED5F58154417B14AE87061351418FC2F578F3815441E17A14AE06135141666666E6EF8154417B14AE87061351413D0AD783ED815441EC51B89E06135141C3F528BCE981544148E17A9406135141D7A370EDE581544185EB51880613514185EB5168E18154417B14AEB706135141666666E6DB815441E17A149E06135141C3F528BCD481544133333393061351415C8FC2B5D1815441666666660613514166666626CE81544148E17A0406135141295C8FF2CB815441713D0A5705135141333333C3C881544185EB514804135141713D0A47C4815441D7A3704DFF125141C3F5280CC68154418FC2F528FD1251415C8FC2D5C581544166666676F912514185EB5148C6815441713D0A97F7125141A4703D5AC5815441C3F5284CF712514152B81E35C581544148E17A34F7125141B81E85DBC5815441B81E85EBF61251419A999999C8815441EC51B8EEF6125141713D0AE7C98154413D0AD7F3F6125141CDCCCCBCCB81544148E17A94F712514148E17A84D28154419A9999F9F712514166666676D5815441E17A140EF81251410AD7A3F0D5815441EC51B84EF81251413D0AD763D681544114AE4741F71251418FC2F528D78154411F85EBE1F61251415C8FC2B5D6815441EC51B87EF51251419A999959D7815441E17A14AEF4125141E17A14DEF2815441295C8F62F4125141D7A370DDFC815441CDCCCC6CF31251419A9999591D825441AE47E11AF21251410AD7A3401D82544185EB51F8EE125141E17A14DE1C825441295C8F92ED125141000000D02282544152B81EA500135141EC51B81E22825441C3F5280C0013514185EB51B81D825441333333230513514114AE47011D8254419A99990905135141D7A370ED1782544152B81EE50413514114AE47C1168254417B14AE37051351413333336315825441295C8F42051351410AD7A34014825441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000580815910613514112DA7763E08154410A3205A0061351414E7DC1A6DE815441DF99EFB3061351413C6223DADA815441C7E5E2B2061351414BC7EE8EDA81544128CFA0AF0613514110597CA5D9815441A9C3459906135141F7F5FA65D3815441C6B7EA90F7125141C42EBA53D2815441CF226796F7125141ABFDD092D28154411D7815C7F7125141835CC4FDD38154418EA2A4E0F7125141BB3754BCD48154419A9999F9F712514166666676D58154419187D600F8125141BF129AA1D5815441967B2919F8125141D368BCF6D58154412D4DEE51F8125141B07BEB5CD681544101B6FB4CF8125141DCAABE60D6815441EC51B84EF81251413D0AD763D681544114AE4741F71251418FC2F528D78154411F85EBE1F61251415C8FC2B5D6815441EC51B87EF51251419A999959D7815441E17A14AEF4125141E17A14DEF2815441295C8F62F4125141D7A370DDFC815441CDCCCC6CF31251419A9999591D825441AE47E11AF21251410AD7A3401D82544185EB51F8EE125141E17A14DE1C825441295C8F92ED125141000000D02282544152B81EA500135141EC51B81E22825441C3F5280C0013514185EB51B81D825441333333230513514114AE47011D8254419A99990905135141D7A370ED1782544152B81EE50413514114AE47C1168254417B14AE37051351413333336315825441295C8F42051351410AD7A3401482544148E17A640513514152B81E7511825441B81E85CB0513514152B81EC50B825441713D0A3706135141F6285C0F078254415C8FC2550613514185EB519805825441E17A147E06135141713D0AA7038254411F85EB910613514152B81EF5FF81544148E17A9406135141E17A149EFB815441AE47E17A0613514185EB5148F881544148E17A640613514152B81ED5F58154417B14AE87061351418FC2F578F3815441E17A14AE06135141666666E6EF8154417B14AE87061351413D0AD783ED815441EC51B89E06135141C3F528BCE981544148E17A9406135141D7A370EDE581544185EB51880613514185EB5168E1815441580815910613514112DA7763E0815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>267158 - 1378048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441B81E85CBC64B5141666666C627E154419A999999C74B5141A4703DAA22E154411F85EB71C84B5141B81E85EB1EE1544114AE4751C94B5141F6285C6F1CE154417B14AE47954B5141E17A140E15E15441713D0AE78E4B51415C8FC2351AE154410AD7A3408F4B5141EC51B8EE1BE154415C8FC295904B5141F6285C0F1DE15441CDCCCCDC914B5141B81E856B20E15441F6285CAF934B51413333337323E15441CDCCCCCC974B514148E17A3427E154411F85EB31994B51418FC2F53829E15441666666169A4B51418FC2F5C82AE15441A4703D0A9B4B514148E17A742CE15441713D0A879F4B51415C8FC2E530E154411F85EB41A04B514148E17A8433E154419A999949A34B5141C3F5289C37E154413D0AD783A74B51415C8FC2953EE154419A999949AA4B51413D0AD76345E1544185EB5178AB4B51413D0AD75347E15441295C8F72AD4B5141C3F5283C4CE15441EC51B88EC44B5141333333D351E15441F6285C7FC34B5141A4703D3A4EE15441666666D6C24B5141CDCCCC5C4BE15441D7A3707DC24B5141713D0A2748E15441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003E05D2549A4B5141D4FCD5112BE15441A4703D0A9B4B514148E17A742CE15441713D0A879F4B51415C8FC2E530E154411F85EB41A04B514148E17A8433E154419A999949A34B5141C3F5289C37E154413D0AD783A74B51415C8FC2953EE154419A999949AA4B51413D0AD76345E1544185EB5178AB4B51413D0AD75347E15441295C8F72AD4B5141C3F5283C4CE15441EC51B88EC44B5141333333D351E15441F6285C7FC34B5141A4703D3A4EE15441666666D6C24B5141CDCCCC5C4BE15441D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441B81E85CBC64B5141666666C627E15441C93180D4C64B514152CFE59627E15441657609D3C64B51413302AF9627E15441350053CCC64B514120814BC127E15441AAB3B358BB4B5141765FFAE825E15441E52EC910B64B5141672D0E792DE154413E05D2549A4B5141D4FCD5112BE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>267158 - 3705101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441B81E85CBC64B5141666666C627E154419A999999C74B5141A4703DAA22E154411F85EB71C84B5141B81E85EB1EE1544114AE4751C94B5141F6285C6F1CE154417B14AE47954B5141E17A140E15E15441713D0AE78E4B51415C8FC2351AE154410AD7A3408F4B5141EC51B8EE1BE154415C8FC295904B5141F6285C0F1DE15441CDCCCCDC914B5141B81E856B20E15441F6285CAF934B51413333337323E15441CDCCCCCC974B514148E17A3427E154411F85EB31994B51418FC2F53829E15441666666169A4B51418FC2F5C82AE15441A4703D0A9B4B514148E17A742CE15441713D0A879F4B51415C8FC2E530E154411F85EB41A04B514148E17A8433E154419A999949A34B5141C3F5289C37E154413D0AD783A74B51415C8FC2953EE154419A999949AA4B51413D0AD76345E1544185EB5178AB4B51413D0AD75347E15441295C8F72AD4B5141C3F5283C4CE15441EC51B88EC44B5141333333D351E15441F6285C7FC34B5141A4703D3A4EE15441666666D6C24B5141CDCCCC5C4BE15441D7A3707DC24B5141713D0A2748E15441
+</a>
+
+<b>
+010600000001000000010300000001000000150000003E05D2549A4B5141D4FCD5112BE15441A4703D0A9B4B514148E17A742CE15441713D0A879F4B51415C8FC2E530E154411F85EB41A04B514148E17A8433E154419A999949A34B5141C3F5289C37E154413D0AD783A74B51415C8FC2953EE154419A999949AA4B51413D0AD76345E1544185EB5178AB4B51413D0AD75347E15441295C8F72AD4B5141C3F5283C4CE15441EC51B88EC44B5141333333D351E15441F6285C7FC34B5141A4703D3A4EE15441666666D6C24B5141CDCCCC5C4BE15441D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441B81E85CBC64B5141666666C627E15441C93180D4C64B514152CFE59627E15441657609D3C64B51413302AF9627E15441350053CCC64B514120814BC127E15441AAB3B358BB4B5141765FFAE825E15441E52EC910B64B5141672D0E792DE154413E05D2549A4B5141D4FCD5112BE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955016 - 111975
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001500000048E17AF4F83D5141A4703D4A8EDA544159EABF50F73D5141531F6D7C8FDA544107C4851FF93D5141887F0F6D91DA54411DE1539AFD3D5141E8BE8DB194DA5441B58C2EC4013E5141894592CD97DA54413D40C69D073E514125AF7D8B9BDA5441995A23F10E3E514128CC4B06A0DA544156F683BB0F3E5141F900E7569FDA5441424030D7113E5141D64ADE559CDA54411AAFB200153E51414B5D14C097DA54410EF95E1C173E5141AC94203894DA5441DEE53CE0183E5141A814F45D91DA5441D7A370CD063E5141EC51B8AE84DA5441869CA823053E514116FE378383DA544172295587043E51418F0E511283DA544152B81E85043E514148E17A1483DA54413D0AD7C3013E51413D0AD7C385DA5441EC51B8AEFF3D5141B81E85CB87DA5441333333F3FE3D5141713D0A7788DA54417B14AEA7FA3D514148E17A648CDA544148E17AF4F83D5141A4703D4A8EDA544101030000000100000006000000D7C3C706F73D51414A73391C8FDA5441297D0C01F73D5141F8218C148FDA5441DC915BF6F63D5141A9946B1B8FDA54418F9DF345F73D51417B8ED6708FDA54414F0EDF15F73D5141981170308FDA5441D7C3C706F73D51414A73391C8FDA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003D0AD793F43D514148E17AD48BDA5441F6285C4FF73D5141D7A3707D8FDA544148E17AF4F83D5141A4703D4A8EDA54417B14AEA7FA3D514148E17A648CDA5441333333F3FE3D5141713D0A7788DA5441EC51B8AEFF3D5141B81E85CB87DA54413D0AD7C3013E51413D0AD7C385DA544152B81E85043E514148E17A1483DA54417B14AE87053E51417B14AE1782DA5441295C8F12063E51410AD7A36081DA5441D7A3706D093E514152B81EF57CDA544114AE47F10B3E51413D0AD7D378DA5441EC51B85E0C3E51410000008075DA544114AE4731023E51419A9999797ADA54419A999999EE3D5141666666A682DA54413D0AD793F43D514148E17AD48BDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955016 - 1366869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001500000048E17AF4F83D5141A4703D4A8EDA544159EABF50F73D5141531F6D7C8FDA544107C4851FF93D5141887F0F6D91DA54411DE1539AFD3D5141E8BE8DB194DA5441B58C2EC4013E5141894592CD97DA54413D40C69D073E514125AF7D8B9BDA5441995A23F10E3E514128CC4B06A0DA544156F683BB0F3E5141F900E7569FDA5441424030D7113E5141D64ADE559CDA54411AAFB200153E51414B5D14C097DA54410EF95E1C173E5141AC94203894DA5441DEE53CE0183E5141A814F45D91DA5441D7A370CD063E5141EC51B8AE84DA5441869CA823053E514116FE378383DA544172295587043E51418F0E511283DA544152B81E85043E514148E17A1483DA54413D0AD7C3013E51413D0AD7C385DA5441EC51B8AEFF3D5141B81E85CB87DA5441333333F3FE3D5141713D0A7788DA54417B14AEA7FA3D514148E17A648CDA544148E17AF4F83D5141A4703D4A8EDA544101030000000100000006000000D7C3C706F73D51414A73391C8FDA5441297D0C01F73D5141F8218C148FDA5441DC915BF6F63D5141A9946B1B8FDA54418F9DF345F73D51417B8ED6708FDA54414F0EDF15F73D5141981170308FDA5441D7C3C706F73D51414A73391C8FDA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003D0AD793F43D514148E17AD48BDA5441F6285C4FF73D5141D7A3707D8FDA544148E17AF4F83D5141A4703D4A8EDA54417B14AEA7FA3D514148E17A648CDA5441333333F3FE3D5141713D0A7788DA5441EC51B8AEFF3D5141B81E85CB87DA54413D0AD7C3013E51413D0AD7C385DA544152B81E85043E514148E17A1483DA54417B14AE87053E51417B14AE1782DA5441295C8F12063E51410AD7A36081DA5441D7A3706D093E514152B81EF57CDA544114AE47F10B3E51413D0AD7D378DA5441EC51B85E0C3E51410000008075DA544114AE4731023E51419A9999797ADA54419A999999EE3D5141666666A682DA54413D0AD793F43D514148E17AD48BDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955016 - 5293243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001500000048E17AF4F83D5141A4703D4A8EDA544159EABF50F73D5141531F6D7C8FDA544107C4851FF93D5141887F0F6D91DA54411DE1539AFD3D5141E8BE8DB194DA5441B58C2EC4013E5141894592CD97DA54413D40C69D073E514125AF7D8B9BDA5441995A23F10E3E514128CC4B06A0DA544156F683BB0F3E5141F900E7569FDA5441424030D7113E5141D64ADE559CDA54411AAFB200153E51414B5D14C097DA54410EF95E1C173E5141AC94203894DA5441DEE53CE0183E5141A814F45D91DA5441D7A370CD063E5141EC51B8AE84DA5441869CA823053E514116FE378383DA544172295587043E51418F0E511283DA544152B81E85043E514148E17A1483DA54413D0AD7C3013E51413D0AD7C385DA5441EC51B8AEFF3D5141B81E85CB87DA5441333333F3FE3D5141713D0A7788DA54417B14AEA7FA3D514148E17A648CDA544148E17AF4F83D5141A4703D4A8EDA544101030000000100000006000000D7C3C706F73D51414A73391C8FDA5441297D0C01F73D5141F8218C148FDA5441DC915BF6F63D5141A9946B1B8FDA54418F9DF345F73D51417B8ED6708FDA54414F0EDF15F73D5141981170308FDA5441D7C3C706F73D51414A73391C8FDA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003D0AD793F43D514148E17AD48BDA5441F6285C4FF73D5141D7A3707D8FDA544148E17AF4F83D5141A4703D4A8EDA54417B14AEA7FA3D514148E17A648CDA5441333333F3FE3D5141713D0A7788DA5441EC51B8AEFF3D5141B81E85CB87DA54413D0AD7C3013E51413D0AD7C385DA544152B81E85043E514148E17A1483DA54417B14AE87053E51417B14AE1782DA5441295C8F12063E51410AD7A36081DA5441D7A3706D093E514152B81EF57CDA544114AE47F10B3E51413D0AD7D378DA5441EC51B85E0C3E51410000008075DA544114AE4731023E51419A9999797ADA54419A999999EE3D5141666666A682DA54413D0AD793F43D514148E17AD48BDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758716 - 1383793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000030000000909830B7F8255141893F3086561455413833C1C2F8255141FE03E19456145541DE5BFB22FB25514131BFEDCC59145541E6E52297FB2551416E0BED7D5A145541572F9E6AFC25514170012FC05B1455414EF00189FC25514156DE7DEE5B145541A86F46E6FD2551412B47D5365D1455418E09CA91FF255141E09546785E1455417C6E05AF012651417D17E2D15F145541F8287D8F03265141BC9EEADA6014554137C1128505265141D8C2C5AC61145541FE04FFE806265141FAA38C17621455417C15E17E07265141EDA883446214554120623D12092651413802279B621455416642DF220A2651419451976E621455414BE6728F05265141279B22E450145541C0432AD8032651415FA26A5C4A14554197D5AD1402265141F6DD7EC8431455416D673151002651416608B5D23B14554182901CA6FE255141913EE56233145541D9506F13FD25514100C6B9CE2B14554185EB5138FC255141D7A3707D281455418FC2F5D8F92551418FC2F56824145541E17A14FEF6255141666666D61F145541333333F3F1255141B81E854B25145541D7A3703DEC2551410000001020145541EC51B82EE7255141E17A140E2514554133333303E525514185EB5168271455419A999999DE2551411F85EBE1301455419A999999DA2551413D0AD7B33414554114AE47F1CF2551419A999969391455417B14AEB7CF25514114AE47613A145541AE47E1DABF25514152B81E0540145541713D0AA7CA2551411F85EB9150145541D7A3701DC825514114AE474157145541D7A3704DC92551417B14AEB75814554148E17AE4CC2551413D0AD7D35914554185EB5158CE25514152B81EB55B14554114AE47F1CE2551418FC2F5C85E145541666666A6CD255141B81E85EB61145541A4703DFAD3255141A4703D3A62145541A4703DBADF25514148E17A44621455413D0AD7C3EC255141666666965814554147A3ABBCF1255141FAB74968551455418A5DCEECF52551414463BAFA5214554135F3A7F9F5255141A10C0D0B53145541D39C3E06F62551415515790353145541909830B7F8255141893F30865614554106000000295C8F22D62551415C8FC23541145541A4703D4AD52551411F85EB313F1455410AD7A310DB25514114AE47D13C1455419A999919DD255141666666663E145541EC51B87EDC25514185EB51B83F145541295C8F22D62551415C8FC23541145541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4703DBADF25514148E17A4462145541295C8F82F0255141713D0A5779145541CDCCCC1C0E265141000000307E145541F1F7EA000F2651417867C6CD7D145541572B6CD90F26514100A98D797C145541BA7EA6990F265141677839667B145541E77177340F2651410BAFAA2877145541A4FAF1510E2651415651F4B7711455410E2821850D2651417313F3656D1455412289205C0B2651412DE60C4764145541459F2E230B265141E81CF64D63145541D71FB8F50A2651418CD161D662145541C8FC10DA0926514146ED7EC462145541246314A1072651413640C64E62145541F7364590042651412CE6546361145541D0466C1C0226514192A6C915601455412CAD6FE3FF255141839F9FB45E1455418EC02B20FE255141E95F14675D14554173B901BFFC2551415CAFC6405C145541E15BFB22FB25514136BFEDCC591455413C33C1C2F8255141FC03E19456145541865DCEECF52551414863BAFA5214554147A3ABBCF1255141FAB74968551455413D0AD7C3EC2551416666669658145541A4703DBADF25514148E17A4462145541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758716 - 4100624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000030000000909830B7F8255141893F3086561455413833C1C2F8255141FE03E19456145541DE5BFB22FB25514131BFEDCC59145541E6E52297FB2551416E0BED7D5A145541572F9E6AFC25514170012FC05B1455414EF00189FC25514156DE7DEE5B145541A86F46E6FD2551412B47D5365D1455418E09CA91FF255141E09546785E1455417C6E05AF012651417D17E2D15F145541F8287D8F03265141BC9EEADA6014554137C1128505265141D8C2C5AC61145541FE04FFE806265141FAA38C17621455417C15E17E07265141EDA883446214554120623D12092651413802279B621455416642DF220A2651419451976E621455414BE6728F05265141279B22E450145541C0432AD8032651415FA26A5C4A14554197D5AD1402265141F6DD7EC8431455416D673151002651416608B5D23B14554182901CA6FE255141913EE56233145541D9506F13FD25514100C6B9CE2B14554185EB5138FC255141D7A3707D281455418FC2F5D8F92551418FC2F56824145541E17A14FEF6255141666666D61F145541333333F3F1255141B81E854B25145541D7A3703DEC2551410000001020145541EC51B82EE7255141E17A140E2514554133333303E525514185EB5168271455419A999999DE2551411F85EBE1301455419A999999DA2551413D0AD7B33414554114AE47F1CF2551419A999969391455417B14AEB7CF25514114AE47613A145541AE47E1DABF25514152B81E0540145541713D0AA7CA2551411F85EB9150145541D7A3701DC825514114AE474157145541D7A3704DC92551417B14AEB75814554148E17AE4CC2551413D0AD7D35914554185EB5158CE25514152B81EB55B14554114AE47F1CE2551418FC2F5C85E145541666666A6CD255141B81E85EB61145541A4703DFAD3255141A4703D3A62145541A4703DBADF25514148E17A44621455413D0AD7C3EC255141666666965814554147A3ABBCF1255141FAB74968551455418A5DCEECF52551414463BAFA5214554135F3A7F9F5255141A10C0D0B53145541D39C3E06F62551415515790353145541909830B7F8255141893F30865614554106000000295C8F22D62551415C8FC23541145541A4703D4AD52551411F85EB313F1455410AD7A310DB25514114AE47D13C1455419A999919DD255141666666663E145541EC51B87EDC25514185EB51B83F145541295C8F22D62551415C8FC23541145541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4703DBADF25514148E17A4462145541295C8F82F0255141713D0A5779145541CDCCCC1C0E265141000000307E145541F1F7EA000F2651417867C6CD7D145541572B6CD90F26514100A98D797C145541BA7EA6990F265141677839667B145541E77177340F2651410BAFAA2877145541A4FAF1510E2651415651F4B7711455410E2821850D2651417313F3656D1455412289205C0B2651412DE60C4764145541459F2E230B265141E81CF64D63145541D71FB8F50A2651418CD161D662145541C8FC10DA0926514146ED7EC462145541246314A1072651413640C64E62145541F7364590042651412CE6546361145541D0466C1C0226514192A6C915601455412CAD6FE3FF255141839F9FB45E1455418EC02B20FE255141E95F14675D14554173B901BFFC2551415CAFC6405C145541E15BFB22FB25514136BFEDCC591455413C33C1C2F8255141FC03E19456145541865DCEECF52551414863BAFA5214554147A3ABBCF1255141FAB74968551455413D0AD7C3EC2551416666669658145541A4703DBADF25514148E17A4462145541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269715 - 54949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000028000000F6285C7FDC8F51418FC2F5888C8D5441EC51B86EE28F51419A999969888D54417B14AE87F48F5141C3F528BC788D54410AD7A3B0F48F51413D0AD753758D544133333343F28F51419A999949708D5441AE47E11AEE8F5141D7A370ED5E8D5441A4703D2AEC8F5141AE47E1EA5E8D5441333333A3EB8F51418FC2F5C85D8D544152B81E95E98F5141A4703D8A5A8D5441C3F5289CE78F5141295C8F22558D5441A4703D3AE68F5141EC51B80E508D544148E17A44E58F5141A4703D7A4F8D54417B14AE17E28F5141AE47E1EA4C8D544148E17A54E18F5141A4703DAA4C8D5441AE47E18AE48F51411F85EB51588D544133333323E18F5141AE47E18A5D8D544152B81E75E28F514166666616648D5441F6285CAFDC8F51417B14AEB75A8D54417B14AEF7D18F514148E17AD4638D544100000030D08F5141B81E856B648D544100000010D28F5141AE47E14A698D544185EB5158D58F51413D0AD7636F8D54418FC2F508D78F514152B81ED5748D54418FC2F518D98F5141666666667B8D544114AE4751DA8F5141EC51B84E7E8D544114AE4711D88F5141E17A147E7B8D54410AD7A3A0D58F5141CDCCCC4C758D544185EB5138D48F5141C3F5280C708D54417B14AE37D18F514133333393698D5441EC51B81ECF8F5141666666C6648D54417B14AE07CB8F514114AE4721668D5441B81E85BBC98F5141AE47E18A6C8D5441666666A6CE8F514185EB5148768D544185EB51B8D18F51418FC2F5D8758D5441E17A148ED28F5141CDCCCC8C788D5441F6285CCFCF8F5141E17A14EE7A8D5441F6285C2FD28F514185EB5178858D54411F85EB61D18F51418FC2F578888D54418FC2F598D58F51415C8FC2F58F8D5441F6285C7FDC8F51418FC2F5888C8D5441
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000F6285CCFCF8F5141E17A14EE7A8D5441C7FCA78FD18F5141004492B3828D5441E2BA7439D28F514174E0488B858D54411D4D8C65D18F51418CC9626B888D54417E384563D18F51411658E873888D54414F87F19CD38F51410994526F8C8D5441D3728D95D58F5141C6FDB4EF8F8D54417164C58EDC8F5141795E417E8C8D5441AF2BE2C5DD8F5141CF7227A68B8D5441BCBA409DE28F5141E51C4E3B888D5441350C7DC5E98F51416E890F0E828D5441C49A1409F18F5141853022C37B8D5441D1753488F48F5141D414FBB0788D54419D8D9B8EF48F514108869F28788D54411D15BE98F48F51413E28C850778D5441DEE0F3ABF48F5141E8AA1B4A758D544174CDA033F38F51418B81C73C728D5441806A4E41F28F5141416D5A65708D5441F0425B2CF18F514115CE43BD6B8D54417F9FE5A1EF8F51418F422A4E658D5441DF594D1CEE8F5141A1D960F35E8D5441EC7D1438EC8F51412F8923FE5E8D5441DDECE22CEC8F5141AEC5E4EA5E8D5441A4703D2AEC8F5141AE47E1EA5E8D5441C5B3A11FEC8F51414FCF1AD45E8D5441163DBC27EA8F514168B2C1715B8D544152B81E95E98F5141A4703D8A5A8D5441C3F5289CE78F5141295C8F22558D544134E57C83E78F51417962F2C7548D54416E0AF275E78F51412A7691A3548D5441F49AD2F6E68F5141259853C3528D5441D84B263FE68F5141765EC020508D544123E9799AE58F51410E3032AE4F8D544148E17A44E58F5141A4703D7A4F8D5441BF4A0426E28F5141AC9170F64C8D54411B1D14C3E18F5141374CDDCE4C8D544148E17A54E18F5141A4703DAA4C8D544149DF6FA2E28F5141AA58D765518D54418215CF98E48F514138054962588D5441077EDF16E28F5141A80424155C8D544133333323E18F5141AE47E18A5D8D544152B81E75E28F514166666616648D5441C1DDD76FE28F514108ADD50D648D54414A022370E28F514171FF390F648D544194EB11ACDC8F5141AB307ABA5A8D54417B14AEF7D18F514148E17AD4638D54410FE0BE7DD18F51412A7EE5FC638D5441552F1932D08F51419E15F970648D54413BBAE02BD18F51417F0911FA668D5441D5EBCF0CD28F514133909842698D54416DE64E10D28F5141D5D7734B698D544185EB5158D58F51413D0AD7636F8D54418FC2F508D78F514152B81ED5748D54418FC2F518D98F5141666666667B8D544114AE4751DA8F5141EC51B84E7E8D5441EC6BA14BDA8F5141D9E3A6477E8D54418DDECB54DA8F5141FDC4CD5C7E8D544164869C73D98F5141E65263397D8D544114AE4711D88F5141E17A147E7B8D5441889C1763D68F5141225F4D3A778D54417A23C7BFD58F5141E79B8EA3758D5441774DB0B8D58F5141D658D589758D54410AD7A3A0D58F5141CDCCCC4C758D54410AEC89A2D48F5141B3E88B98718D5441BF150335D48F514161FC1E0B708D544133EB02BED38F5141F5B87F046F8D54417B14AE37D18F514133333393698D5441F503E8A1CF8F514126A09CF2658D5441AF68811ACF8F5141B8D6CBC7648D54417B14AE07CB8F514114AE4721668D54418A5BE66ECA8F5141BB7F5914698D54418226E2C3C98F5141F70114906C8D5441023CE4AACE8F5141DEFEAE47768D544185EB51B8D18F51418FC2F5D8758D5441E17A148ED28F5141CDCCCC8C788D5441FD6C118DD28F51417768AD8D788D5441CF2BB093D28F514125DB87A2788D5441DA232AE8CF8F5141C6D992D87A8D5441F6285CCFCF8F5141E17A14EE7A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>270225 - 55002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7C3009151418FC2F5C8958C5441D7A370DDFE90514152B81ED59C8C54411F85EB61039151419A9999A9A68C544148E17A1405915141295C8FD2AA8C54413D0AD7C306915141333333F3AE8C54410AD7A39008915141AE47E19AB58C5441000000E0089151413D0AD733B98C544148E17AC409915141C3F5289CB78C54413D0AD7E30A9151411F85EB31B38C5441C3F528EC0B915141CDCCCCCCAD8C5441C3F5288C0D915141295C8F72A68C5441666666960B915141713D0AF7A68C544133333373099151411F85EBA19F8C5441D7A3706D059151413D0AD7739C8C54413D0AD7C3009151418FC2F5C8958C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001800000048E17A1405915141295C8FD2AA8C5441517354980591514171958815AC8C544151574FD4069151417AE484F8AE8C5441B367A799089151410F8A5C98B58C544159C5D2A808915141D10886B3B68C5441D6D1D0DE0891514162AE1826B98C544136E8584209915141058A5B84B88C544148E17AC409915141C3F5289CB78C54411A04C4290A915141F9DFC80DB68C54410816D56E0D91514126AB4D7AA68C54410206BF1A0C915141DFB718D4A68C544184ECCEAE0B915141096B13F8A68C544172BAB4AC0B915141DD8926F1A68C5441666666960B915141713D0AF7A68C544133333373099151411F85EBA19F8C5441D7A3706D059151413D0AD7739C8C5441EDD7C56305915141BC0304669C8C54419EC4205205915141BB0803589C8C544103D4C50A03915141B5C9910A998C5441F74665C900915141EB98E7D0958C54419BBE1B51FF90514137E614289B8C5441D7A370DDFE90514152B81ED59C8C54411F85EB61039151419A9999A9A68C544148E17A1405915141295C8FD2AA8C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>308674 - 1046945
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999D94F1D5141EC51B80E03675441E17A14DE4D1D51418FC2F5D8076754413D0AD7834A1D514152B81E250F675441333333936E1D51413D0AD7131E6754411F85EBD1711D5141C3F528BC166754417B14AED7731D51419A999929126754419A9999D94F1D5141EC51B80E03675441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000052B81E35571D5141AE47E1CAF666544148E17A74301D51419A999989E66654411F85EB312E1D5141A4703DCAEB665441E052081D2B1D51417118DCB6F36654414ED2082D681D5141D43231440D675441A2CA2C3F741D5141833B6E4812675441A45D1A39761D51412B8FEEAB0D67544185006936691D51415119781208675441000000B06C1D5141E17A14CEFF66544152B81E35571D5141AE47E1CAF6665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>308674 - 3803180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999D94F1D5141EC51B80E03675441E17A14DE4D1D51418FC2F5D8076754413D0AD7834A1D514152B81E250F675441333333936E1D51413D0AD7131E6754411F85EBD1711D5141C3F528BC166754417B14AED7731D51419A999929126754419A9999D94F1D5141EC51B80E03675441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000052B81E35571D5141AE47E1CAF666544148E17A74301D51419A999989E66654411F85EB312E1D5141A4703DCAEB665441E052081D2B1D51417118DCB6F36654414ED2082D681D5141D43231440D675441A2CA2C3F741D5141833B6E4812675441A45D1A39761D51412B8FEEAB0D67544185006936691D51415119781208675441000000B06C1D5141E17A14CEFF66544152B81E35571D5141AE47E1CAF6665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540538 - 541002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B544162499E5A986551418AB7768E554B54418D05A3B7766551414D9E64AF314B54413FC7DD33756551417A736612304B54412CC7BCFE6C655141CEEA0E95364B5441639C1D435E6551415AFB5B46424B5441C3F5281C45655141C3F5283C564B5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441666666C651655141E17A14EE124B5441713D0AD74F6551417B14AE67164B54418FC2F5A84D65514185EB51D81B4B54415C8FC2A54B6551419A999979204B54410AD7A330496551419A999969254B5441A4703D6A44655141A4703D5A2C4B5441666666563D6551418FC2F548344B54410AD7A3902B655141713D0A27464B544148E17AF4276551413D0AD7E3494B54416666662625655141295C8FA24D4B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540538 - 1150603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B544162499E5A986551418AB7768E554B54418D05A3B7766551414D9E64AF314B54413FC7DD33756551417A736612304B54412CC7BCFE6C655141CEEA0E95364B5441639C1D435E6551415AFB5B46424B5441C3F5281C45655141C3F5283C564B5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441666666C651655141E17A14EE124B5441713D0AD74F6551417B14AE67164B54418FC2F5A84D65514185EB51D81B4B54415C8FC2A54B6551419A999979204B54410AD7A330496551419A999969254B5441A4703D6A44655141A4703D5A2C4B5441666666563D6551418FC2F548344B54410AD7A3902B655141713D0A27464B544148E17AF4276551413D0AD7E3494B54416666662625655141295C8FA24D4B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540538 - 3944807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B544162499E5A986551418AB7768E554B54418D05A3B7766551414D9E64AF314B54413FC7DD33756551417A736612304B54412CC7BCFE6C655141CEEA0E95364B5441639C1D435E6551415AFB5B46424B5441C3F5281C45655141C3F5283C564B5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441666666C651655141E17A14EE124B5441713D0AD74F6551417B14AE67164B54418FC2F5A84D65514185EB51D81B4B54415C8FC2A54B6551419A999979204B54410AD7A330496551419A999969254B5441A4703D6A44655141A4703D5A2C4B5441666666563D6551418FC2F548344B54410AD7A3902B655141713D0A27464B544148E17AF4276551413D0AD7E3494B54416666662625655141295C8FA24D4B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>838646 - 985532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000006000000D7DD6BD8E16951417BFD680D193A5441094D4C5B016A514144F2B900153A5441C3F5280C046A514100000010033A544114AE47D1006A51419A999999033A544191BFEE3BE169514130D091E1083A5441D7DD6BD8E16951417BFD680D193A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000001AE4493CE16951410EF4FCEA083A5441EFEC41EBD36951413C91292B0B3A5441FE45D1F7D2695141A0B2D95B0B3A5441C3136F6EDB6951413775C9AC163A54413C6727E8DB6951418B3DEAD0173A544147992F31DC695141FE1BE05F203A54410EDC8F92DC695141BBDE29F1223A54419F88D718DC69514101A71D75283A544169F2BE3DDB695141F9633633353A5441FE8A30AED76951418A9E46013A3A54412D0344F6D66951410D217C913D3A544140FF2164D46951417E4CD7B43F3A544168638481CB6951417323B6B3463A5441C0A46437CC6951411D37245C493A5441C1D66C80CC6951414D74AD2A4B3A5441ACA46437CC695141733120294F3A5441B6866E91F1695141A054E09B533A54411E62EF41F7695141FA63F448463A5441C671ADA4FB69514138573C8A3B3A5441FC932F0EFE69514146D139882B3A54413C9A0356016A51417CC86701153A544175A7E716FE695141C053366C153A5441D4DD6BD8E16951417AFD680D193A5441EFC18DA9E1695141EE518C35143A5441C11EC353E1695141E0216B730D3A5441CFEC015BE16951415A7FA4170C3A54411AE4493CE16951410EF4FCEA083A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130708 - 168528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000000DF8F49D21AD51414F9922C24C90544139D0FAF511AD51415864CFE747905441DAD0AAB113AD514179968AF5449054413D0AD7830EAD51411F85EB6143905441C3F528BC0FAD51417B14AE07409054411F85EBF110AD514152B81EB53C905441295C8F4206AD5141F6285C3F389054411F85EBB105AD5141A4703DCA3590544100000000FBAC51419A999969369054415C8FC2D5F8AC51413D0AD77336905441F6285C4FFAAC51411F85EB01429054419A999989FAAC51410000006046905441EC51B81EFAAC51410AD7A3604A905441EC51B8CEFBAC51417B14AE874B90544185EB51E805AD51417B14AE874B905441295C8F2206AD51419A9999294F9054419A9999B907AD5141713D0A9753905441CDCCCC6C02AD514185EB51C856905441EC51B86EFFAC5141A4703D5A58905441295C8F7200AD51418FC2F53859905441EC51B8AE01AD514185EB51885B9054417B14AE6701AD5141D7A370ED5C905441E17A14EE06AD5141333333C35B90544185EB51C80FAD5141333333835A905441A4703DFA18AD5141E17A147E59905441713D0A3724AD514148E17A0458905441A4703DFA23AD51410AD7A3F053905441F6285C0F27AD5141F6285C0F549054419AEAC38D2BAD5141568931C34F90544195B6F84C29AD5141CB334C2F4F9054410DF8F49D21AD51414F9922C24C905441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000FF8F49D21AD5141529922C24C9054418FF03A7127AD51411A4610994E9054419BEAC38D2BAD51415A8931C34F905441639037212EAD51410196FACE4E905441789AF7892EAD514189CE2FA84E9054414CB2250833AD5141F9A23DFE4C9054418F38B9702EAD51410FAFCA544C905441F6285C9F2BAD5141CDCCCCEC4B905441D9D0AAB113AD51417C968AF5449054414847BFF611AD5141701CDFE7479054410FF8F49D21AD5141529922C24C905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130708 - 342914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000000DF8F49D21AD51414F9922C24C90544139D0FAF511AD51415864CFE747905441DAD0AAB113AD514179968AF5449054413D0AD7830EAD51411F85EB6143905441C3F528BC0FAD51417B14AE07409054411F85EBF110AD514152B81EB53C905441295C8F4206AD5141F6285C3F389054411F85EBB105AD5141A4703DCA3590544100000000FBAC51419A999969369054415C8FC2D5F8AC51413D0AD77336905441F6285C4FFAAC51411F85EB01429054419A999989FAAC51410000006046905441EC51B81EFAAC51410AD7A3604A905441EC51B8CEFBAC51417B14AE874B90544185EB51E805AD51417B14AE874B905441295C8F2206AD51419A9999294F9054419A9999B907AD5141713D0A9753905441CDCCCC6C02AD514185EB51C856905441EC51B86EFFAC5141A4703D5A58905441295C8F7200AD51418FC2F53859905441EC51B8AE01AD514185EB51885B9054417B14AE6701AD5141D7A370ED5C905441E17A14EE06AD5141333333C35B90544185EB51C80FAD5141333333835A905441A4703DFA18AD5141E17A147E59905441713D0A3724AD514148E17A0458905441A4703DFA23AD51410AD7A3F053905441F6285C0F27AD5141F6285C0F549054419AEAC38D2BAD5141568931C34F90544195B6F84C29AD5141CB334C2F4F9054410DF8F49D21AD51414F9922C24C905441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000FF8F49D21AD5141529922C24C9054418FF03A7127AD51411A4610994E9054419BEAC38D2BAD51415A8931C34F905441639037212EAD51410196FACE4E905441789AF7892EAD514189CE2FA84E9054414CB2250833AD5141F9A23DFE4C9054418F38B9702EAD51410FAFCA544C905441F6285C9F2BAD5141CDCCCCEC4B905441D9D0AAB113AD51417C968AF5449054414847BFF611AD5141701CDFE7479054410FF8F49D21AD5141529922C24C905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274147 - 3151344
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000333333F305395141A4703D5AB238544185EB51F8073951413D0AD723B138544148E17A14093951417B14AE57B1385441E17A14CE0B395141E17A148EB23854410AD7A31013395141666666F6B038544133333343E0385141A4703DFA91385441295C8F62CE3851413333331387385441B81E85CBCA3851410AD7A350893854418FC2F518C83851417B14AE278B385441295C8FA2C53851411F85EB118D38544114AE4771CD38514152B81ED59138544148E17A54D63851410AD7A34097385441F6285CDFCE385141D7A3701DA038544152B81EC5F5385141713D0AD7B7385441EC51B81EF8385141A4703D4AB6385441000000A0F83851411F85EB11B4385441333333D3F8385141F6285CBFB1385441C3F5286CF83851410AD7A3A0AF38544148E17A44FD3851418FC2F5D8B1385441F6285CCF013951411F85EBC1B2385441333333F305395141A4703D5AB2385441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008DA47C97C338514135FBE2539238544157ABEE9ED738514140158F719F38544126A282A0E1385141F91355CF92385441939F2F99D8385141904DB74D8D385441CAAF7864CE385141FF9C5D1487385441C9B67C5DCD385141570A19B68738544110344471CC3851411F317D4988385441D7F82EC5CB385141E271DCB48838544115679FACCA3851415B29B765893854418095E6F6C9385141B19EABE18938544180D97E2AC9385141230D196D8A38544134B2AC34C83851410888C6148B385441FE366CC7C73851417AB416678B38544103CFC467C7385141FDB379B18B385441EB3F3C9BC538514172C715188D38544184184C19C438514168BFEC5C8E385441927EC418C238514175B2500C903854413E3133B9C1385141D677EE6090385441CCEAE047C13851416AF986CF903854418DA47C97C338514135FBE25392385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274147 - 3270547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000333333F305395141A4703D5AB238544185EB51F8073951413D0AD723B138544148E17A14093951417B14AE57B1385441E17A14CE0B395141E17A148EB23854410AD7A31013395141666666F6B038544133333343E0385141A4703DFA91385441295C8F62CE3851413333331387385441B81E85CBCA3851410AD7A350893854418FC2F518C83851417B14AE278B385441295C8FA2C53851411F85EB118D38544114AE4771CD38514152B81ED59138544148E17A54D63851410AD7A34097385441F6285CDFCE385141D7A3701DA038544152B81EC5F5385141713D0AD7B7385441EC51B81EF8385141A4703D4AB6385441000000A0F83851411F85EB11B4385441333333D3F8385141F6285CBFB1385441C3F5286CF83851410AD7A3A0AF38544148E17A44FD3851418FC2F5D8B1385441F6285CCF013951411F85EBC1B2385441333333F305395141A4703D5AB2385441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008DA47C97C338514135FBE2539238544157ABEE9ED738514140158F719F38544126A282A0E1385141F91355CF92385441939F2F99D8385141904DB74D8D385441CAAF7864CE385141FF9C5D1487385441C9B67C5DCD385141570A19B68738544110344471CC3851411F317D4988385441D7F82EC5CB385141E271DCB48838544115679FACCA3851415B29B765893854418095E6F6C9385141B19EABE18938544180D97E2AC9385141230D196D8A38544134B2AC34C83851410888C6148B385441FE366CC7C73851417AB416678B38544103CFC467C7385141FDB379B18B385441EB3F3C9BC538514172C715188D38544184184C19C438514168BFEC5C8E385441927EC418C238514175B2500C903854413E3133B9C1385141D677EE6090385441CCEAE047C13851416AF986CF903854418DA47C97C338514135FBE25392385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274299 - 3142577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E15A78385141A4703DCA993954419A99991981385141333333E39A395441C3F5285C81385141B81E85EB9A395441713D0A07813851416666661699395441C3F528CC80385141D7A370BD9639544133333383623851419A9999E98D395441295C8F025F38514148E17AE48D395441CDCCCC4C52385141000000D08D395441713D0A874B38514152B81EC58D3954416666668646385141666666C68D395441CDCCCCDC45385141A4703D5A96395441C3F528AC48385141EC51B85E963954413D0AD7935D385141295C8F8296395441AE47E15A78385141A4703DCA99395441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000E2ACB45F65385141310F0977973954415A3C6DC16A3851416E2DCB1F98395441BF5ABDE46D3851413533318298395441DFE6EC48723851417D0BE50B99395441FAB38E38743851411AE99A4899395441AE47E15A78385141A4703DCA99395441A5C9DB5A783851414F6BF9CA9939544132ABFA197C385141CF729B429A3954416EFB855C81385141B5C628EB9A3954414EB53B0681385141CC6D2A0E99395441C3F528CC80385141D7A370BD963954413D0AD7B380385141EC51B8FE95395441CDCCCC5C8038514114AE4741943954413D0AD7237C385141A4703D8A9239544166666606563851411F85EBA17D395441E17A145E5438514148E17A247C395441682DDE45543851413A3B5D187C39544150B9723452385141F7E0D8CF8D39544128951F86463851415D60C2C48D395441BC51D028463851414CBD138292395441AC8071DE45385141BAEF845A9639544163BDE3E9483851419026225F96395441C4CFBAE44A385141B416876296395441FC99114850385141BFDBC36B963954417165CBB250385141D7D47A6C96395441E77DE7CE583851411229627A963954416F9D9ACD5A38514127B7CD7D96395441B9B8978E5D385141255D8682963954413D0AD7935D385141295C8F8296395441E2ACB45F65385141310F097797395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274299 - 3433487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E15A78385141A4703DCA993954419A99991981385141333333E39A395441C3F5285C81385141B81E85EB9A395441713D0A07813851416666661699395441C3F528CC80385141D7A370BD9639544133333383623851419A9999E98D395441295C8F025F38514148E17AE48D395441CDCCCC4C52385141000000D08D395441713D0A874B38514152B81EC58D3954416666668646385141666666C68D395441CDCCCCDC45385141A4703D5A96395441C3F528AC48385141EC51B85E963954413D0AD7935D385141295C8F8296395441AE47E15A78385141A4703DCA99395441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000E2ACB45F65385141310F0977973954415A3C6DC16A3851416E2DCB1F98395441BF5ABDE46D3851413533318298395441DFE6EC48723851417D0BE50B99395441FAB38E38743851411AE99A4899395441AE47E15A78385141A4703DCA99395441A5C9DB5A783851414F6BF9CA9939544132ABFA197C385141CF729B429A3954416EFB855C81385141B5C628EB9A3954414EB53B0681385141CC6D2A0E99395441C3F528CC80385141D7A370BD963954413D0AD7B380385141EC51B8FE95395441CDCCCC5C8038514114AE4741943954413D0AD7237C385141A4703D8A9239544166666606563851411F85EBA17D395441E17A145E5438514148E17A247C395441682DDE45543851413A3B5D187C39544150B9723452385141F7E0D8CF8D39544128951F86463851415D60C2C48D395441BC51D028463851414CBD138292395441AC8071DE45385141BAEF845A9639544163BDE3E9483851419026225F96395441C4CFBAE44A385141B416876296395441FC99114850385141BFDBC36B963954417165CBB250385141D7D47A6C96395441E77DE7CE583851411229627A963954416F9D9ACD5A38514127B7CD7D96395441B9B8978E5D385141255D8682963954413D0AD7935D385141295C8F8296395441E2ACB45F65385141310F097797395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274338 - 221198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A1488395141333333D3B0395441C3F5288C95395141295C8FC2AF395441B81E856B953951415C8FC275AB395441D7A370ED89395141B81E85DBAB3954417B14AE678939514114AE4751A73954415C8FC21570395141AE47E10AA9395441B81E856B6D3951419A999939A9395441A4703DEA6E3951419A9999E9B239544114AE47D17E395141AE47E1AAB139544148E17A1488395141333333D3B0395441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000FCB955068539514115CAAC9DA739544123055CE2703951410FE9F0FCA8395441BF09F10C703951418E101E0CA93954418DA9506C6D395141668AC03EA939544156E4942B6E3951412E792516AE3954410EE455E86E395141625042DDB2395441AB1B892E703951417A0636D0B23954413627C9937039514185C148C8B2395441874F8E397339514120CC3893B2395441149185DF73395141CCE9459AB139544176529E82743951411615616BB0395441AF3069F7753951412E71FA99B0395441A3BC808377395141B07AE0DFB0395441DC9A4BF878395141058EAC6BB1395441C0654AE179395141F5CC93C8B03954416B8CE2F87A395141110295DFAF395441EDCF2CE27C395141BCEEC853AF3954414730299D7F395141F5922F25AF395441FE040ECC803951413EF8AE99AF395441E1CF0CB581395141930B7B25B0395441E2097158833951414AA6FBB0AF395441A99F6E2A853951415A2DB0B0AE3954413757A18785395141728949DFAE395441C50ED4E485395141218949DFAE3954418D6A6D13863951417762B1C7AD3954414818BA2A86395141118ECC98AC39544181BC20FC8539514100934F52AA395441956C69E5853951418E2CD4A8A7395441FCB955068539514115CAAC9DA7395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274338 - 384406
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A1488395141333333D3B0395441C3F5288C95395141295C8FC2AF395441B81E856B953951415C8FC275AB395441D7A370ED89395141B81E85DBAB3954417B14AE678939514114AE4751A73954415C8FC21570395141AE47E10AA9395441B81E856B6D3951419A999939A9395441A4703DEA6E3951419A9999E9B239544114AE47D17E395141AE47E1AAB139544148E17A1488395141333333D3B0395441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000FCB955068539514115CAAC9DA739544123055CE2703951410FE9F0FCA8395441BF09F10C703951418E101E0CA93954418DA9506C6D395141668AC03EA939544156E4942B6E3951412E792516AE3954410EE455E86E395141625042DDB2395441AB1B892E703951417A0636D0B23954413627C9937039514185C148C8B2395441874F8E397339514120CC3893B2395441149185DF73395141CCE9459AB139544176529E82743951411615616BB0395441AF3069F7753951412E71FA99B0395441A3BC808377395141B07AE0DFB0395441DC9A4BF878395141058EAC6BB1395441C0654AE179395141F5CC93C8B03954416B8CE2F87A395141110295DFAF395441EDCF2CE27C395141BCEEC853AF3954414730299D7F395141F5922F25AF395441FE040ECC803951413EF8AE99AF395441E1CF0CB581395141930B7B25B0395441E2097158833951414AA6FBB0AF395441A99F6E2A853951415A2DB0B0AE3954413757A18785395141728949DFAE395441C50ED4E485395141218949DFAE3954418D6A6D13863951417762B1C7AD3954414818BA2A86395141118ECC98AC39544181BC20FC8539514100934F52AA395441956C69E5853951418E2CD4A8A7395441FCB955068539514115CAAC9DA7395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274573 - 3141635
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A3F02339514148E17AB40A3A544148E17A4420395141EC51B85E093A5441D7A370DD183951417B14AE17063A5441AE47E13A183951411F85EB51073A5441333333C31C395141F6285C9F203A5441F6285CDF223951419A999999423A5441AE47E19A23395141B81E857B433A54417B14AEC724395141D7A370CD433A54418FC2F54834395141E17A144E423A5441F6285C3F2B395141000000200D3A54413D0AD743283951415C8FC2350C3A54410AD7A3F02339514148E17AB40A3A5441
+</a>
+
+<b>
+010600000001000000010300000001000000240000006005191A22395141477E86E1093A5441124A30361D39514104D3B1B4073A5441E4F579EE1A395141BACF466E063A54419A88746E193951418123FA0C053A5441AE75F819193951415F0B2309053A5441082990931839514138311BB2053A5441F867D77418395141EE3E3C57063A54412706A27818395141F4188CDA063A544173762FAE1C395141053871941F3A54410DA37BEA22395141E7D811D7423A54418E7F0D9523395141DF174AAC433A5441A53E8747253951419C2441C9433A5441F3E16C4834395141F00AEF4A423A54413588141A3439514165CE383A413A544168E2CCA1333951416D5673763E3A54411819DD3D33395141EEDA622A3C3A5441119AA9E1323951416322D70B3A3A544169E9C27C3239514173C719BA373A54410EB72A2132395141E3E51F9F353A5441336514BA313951416B798540333A54419BE03C5E31395141CCFC1624313A544181751E0A31395141CB7C1A352F3A5441AE268BBD30395141795B81722D3A5441596C9D4F30395141C0FFA4EB2A3A544143B260FC2F395141218DD801293A5441FFD1F3B12F395141C35DE64B273A5441BE1AE5582F3951417145DA3F253A54412C15A5E82E3951410FDE54AB223A544129FC83A82E3951413F94F831213A54415677E0682E395141493E7FBB1F3A54412AADC9382E3951413FFE85A01E3A5441F11DB8102E395141B3C9D4DA1D3A5441F02BF9CF2D395141BA96C1371C3A544197F5685D2D3951412C849F95193A5441F6285C3F2B395141000000200D3A54416005191A22395141477E86E1093A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274573 - 3533175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A3F02339514148E17AB40A3A544148E17A4420395141EC51B85E093A5441D7A370DD183951417B14AE17063A5441AE47E13A183951411F85EB51073A5441333333C31C395141F6285C9F203A5441F6285CDF223951419A999999423A5441AE47E19A23395141B81E857B433A54417B14AEC724395141D7A370CD433A54418FC2F54834395141E17A144E423A5441F6285C3F2B395141000000200D3A54413D0AD743283951415C8FC2350C3A54410AD7A3F02339514148E17AB40A3A5441
+</a>
+
+<b>
+010600000001000000010300000001000000240000006005191A22395141477E86E1093A5441124A30361D39514104D3B1B4073A5441E4F579EE1A395141BACF466E063A54419A88746E193951418123FA0C053A5441AE75F819193951415F0B2309053A5441082990931839514138311BB2053A5441F867D77418395141EE3E3C57063A54412706A27818395141F4188CDA063A544173762FAE1C395141053871941F3A54410DA37BEA22395141E7D811D7423A54418E7F0D9523395141DF174AAC433A5441A53E8747253951419C2441C9433A5441F3E16C4834395141F00AEF4A423A54413588141A3439514165CE383A413A544168E2CCA1333951416D5673763E3A54411819DD3D33395141EEDA622A3C3A5441119AA9E1323951416322D70B3A3A544169E9C27C3239514173C719BA373A54410EB72A2132395141E3E51F9F353A5441336514BA313951416B798540333A54419BE03C5E31395141CCFC1624313A544181751E0A31395141CB7C1A352F3A5441AE268BBD30395141795B81722D3A5441596C9D4F30395141C0FFA4EB2A3A544143B260FC2F395141218DD801293A5441FFD1F3B12F395141C35DE64B273A5441BE1AE5582F3951417145DA3F253A54412C15A5E82E3951410FDE54AB223A544129FC83A82E3951413F94F831213A54415677E0682E395141493E7FBB1F3A54412AADC9382E3951413FFE85A01E3A5441F11DB8102E395141B3C9D4DA1D3A5441F02BF9CF2D395141BA96C1371C3A544197F5685D2D3951412C849F95193A5441F6285C3F2B395141000000200D3A54416005191A22395141477E86E1093A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>309196 - 1672378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000333333B334AB5041713D0A172105554152B81E353CAB50411F85EB2120055541295C8F724AAB5041713D0AE7190555415C8FC23557AB5041C3F5282C140555415C8FC25562AB5041C3F5289C0D055541713D0A8763AB5041F6285CBF0C055541295C8F4264AB50411F85EB210B055541713D0AD762AB504114AE4711FA04554114AE472133AB50411F85EBB10D055541AE47E1BA33AB5041E17A14DE14055541333333B334AB5041713D0A1721055541
+</a>
+
+<b>
+01060000000100000001030000000100000062000000AC65FCCB47AB5041FF579F79E9045541601539DE47AB5041EED81D5AEA045541224FB3FB47AB5041C239FAC4EB045541D535C51E48AB50418A36AE74ED0455412BAC8C4A48AB5041139C978FEF045541CA5C8D7D48AB504163976C03F2045541D3FBE5A748AB50415B41B20CF4045541E965B1DD48AB50417156E5A2F6045541D8ADD00149AB50417E558D5FF80455412421FA2349AB5041F4E71304FA045541716F615149AB5041B53EFC32FC04554190ECDB7C49AB5041131D324AFE0455411689689D49AB504160BADEDAFF045541A7EBE8C949AB5041A97BACFE010555410AC399054AAB5041654774DD04055541AA6AFA4C4AAB504126A4184C08055541C6F7A6814AAB5041E48080D40A055541A4EED8C44AAB504189E6A80F0E055541697CB6F94AAB504102F96B9A10055541EE9B581E4BAB50410B9B5E5D12055541755368AC4BAB5041A358CD58190555415C8FC23557AB5041C3F5282C14055541CF0AB2B25FAB5041B5495F2A0F05554103830A4762AB504162AFD7A40D0555413333334365AB5041713D0A770B0555412B476F8E61AB5041A488EF0CDF045541778BB85E5DAB5041779647C1E0045541F6285C8F61AB50418FC2F508DF0455419A9999A95FAB5041713D0AA7C70455417B14AED75DAB504152B81E35B1045541713D0A375DAB50417B14AE27B10455417B14AE8759AB50417B14AED7B0045541AAE76AD058AB50418BE215C8B004554128AD8B3C58AB5041D3A280BBB004554177AF453057AB5041DF8EACA4B0045541C7B1FF2356AB5041F67AD88DB0045541A9CD6EA555AB5041BF5C1383B0045541AC8E1E3854AB50412C5CFD63B0045541437EAE6753AB50418CBE4052B0045541740D528C52AB5041872C963FB0045541FA2EDFE251AB50419CE52A31B004554122B27EE150AB50415130441BB004554127D8A4FD4FAB5041A9ACE007B0045541973747174FAB5041ED6046F4AF04554122814C444EAB5041886552E2AF045541A49380204DAB504186E37DC9AF0455410A93D6784CAB5041047D39BBAF045541214621E44AAB50413F4FC998AF045541A341C48049AB5041980F8C7AAF0455418E2D3C0F48AB5041F02B1A5BAF045541C7D315A646AB5041E8DE5E3CAF045541ADEC2FD345AB5041D5A86C2AAF04554196CE096C44AB504149F2DC0BAF0455416A99D60A43AB5041F90CCDEDAE0455410508D11443AB5041CDF1A16DAF0455412C6E732C43AB504163069190B004554145DF574543AB5041E661FCC2B1045541A00AAA5743AB5041F65583A4B204554149D44D6843AB5041E3625871B3045541351C626943AB5041E957A17EB30455412D45708443AB504129DAACCBB4045541B8D66C8E43AB5041EEA59B46B5045541561A46AC43AB5041B5ED09B6B60455415A8B07C143AB5041DB3989B5B7045541A463F9D043AB5041A2D6CF79B8045541EA4C6FE843AB50411C499B9AB90455413462ECFF43AB50414204BFBBBA04554108EB3B0A44AB5041171BAB3ABB045541AAAF381E44AB50415265B530BC04554117BA714944AB5041ED9CC544BE0455417693506344AB5041F7D3F982BF0455414B62E28D44AB504148C38A8EC10455412C621AAA44AB504119782CEAC20455416567FAD744AB5041EEB1531FC5045541B6E03DF844AB5041C2827DACC604554179E81A1445AB5041B28B7B03C80455412848AA2945AB5041A3D2E10CC9045541CBDFB75C45AB504172A15581CB04554141B2E98145AB5041062B314BCD04554175BDDDA745AB5041E587631ECF0455415DBC46CB45AB50412BA247D2D0045541C49ECDF545AB50417EC9C6DDD2045541E5DC5C1D46AB5041ACEABEC4D404554104C6DB4A46AB504189D3C9F4D6045541352C5F7746AB50417EAFBC18D9045541C861CD9F46AB50415A7C6D0ADB045541620632B846AB5041DDAAB336DC04554150F84FCA46AB5041E0BFB715DD045541347017F346AB5041184FB30BDF0455415ACB8F0D47AB504107C38A51E0045541BDFCAF2447AB50413609376EE1045541EEF8254D47AB5041298E4760E304554101642E6547AB5041D1781E88E40455417E5EE76547AB5041F9830391E40455419410306E47AB504120D0FCF6E4045541C7AC689C47AB504152A4F52FE7045541C14CA1B147AB50413C0F3035E8045541AC65FCCB47AB5041FF579F79E9045541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>309196 - 3483506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000333333B334AB5041713D0A172105554152B81E353CAB50411F85EB2120055541295C8F724AAB5041713D0AE7190555415C8FC23557AB5041C3F5282C140555415C8FC25562AB5041C3F5289C0D055541713D0A8763AB5041F6285CBF0C055541295C8F4264AB50411F85EB210B055541713D0AD762AB504114AE4711FA04554114AE472133AB50411F85EBB10D055541AE47E1BA33AB5041E17A14DE14055541333333B334AB5041713D0A1721055541
+</a>
+
+<b>
+01060000000100000001030000000100000062000000AC65FCCB47AB5041FF579F79E9045541601539DE47AB5041EED81D5AEA045541224FB3FB47AB5041C239FAC4EB045541D535C51E48AB50418A36AE74ED0455412BAC8C4A48AB5041139C978FEF045541CA5C8D7D48AB504163976C03F2045541D3FBE5A748AB50415B41B20CF4045541E965B1DD48AB50417156E5A2F6045541D8ADD00149AB50417E558D5FF80455412421FA2349AB5041F4E71304FA045541716F615149AB5041B53EFC32FC04554190ECDB7C49AB5041131D324AFE0455411689689D49AB504160BADEDAFF045541A7EBE8C949AB5041A97BACFE010555410AC399054AAB5041654774DD04055541AA6AFA4C4AAB504126A4184C08055541C6F7A6814AAB5041E48080D40A055541A4EED8C44AAB504189E6A80F0E055541697CB6F94AAB504102F96B9A10055541EE9B581E4BAB50410B9B5E5D12055541755368AC4BAB5041A358CD58190555415C8FC23557AB5041C3F5282C14055541CF0AB2B25FAB5041B5495F2A0F05554103830A4762AB504162AFD7A40D0555413333334365AB5041713D0A770B0555412B476F8E61AB5041A488EF0CDF045541778BB85E5DAB5041779647C1E0045541F6285C8F61AB50418FC2F508DF0455419A9999A95FAB5041713D0AA7C70455417B14AED75DAB504152B81E35B1045541713D0A375DAB50417B14AE27B10455417B14AE8759AB50417B14AED7B0045541AAE76AD058AB50418BE215C8B004554128AD8B3C58AB5041D3A280BBB004554177AF453057AB5041DF8EACA4B0045541C7B1FF2356AB5041F67AD88DB0045541A9CD6EA555AB5041BF5C1383B0045541AC8E1E3854AB50412C5CFD63B0045541437EAE6753AB50418CBE4052B0045541740D528C52AB5041872C963FB0045541FA2EDFE251AB50419CE52A31B004554122B27EE150AB50415130441BB004554127D8A4FD4FAB5041A9ACE007B0045541973747174FAB5041ED6046F4AF04554122814C444EAB5041886552E2AF045541A49380204DAB504186E37DC9AF0455410A93D6784CAB5041047D39BBAF045541214621E44AAB50413F4FC998AF045541A341C48049AB5041980F8C7AAF0455418E2D3C0F48AB5041F02B1A5BAF045541C7D315A646AB5041E8DE5E3CAF045541ADEC2FD345AB5041D5A86C2AAF04554196CE096C44AB504149F2DC0BAF0455416A99D60A43AB5041F90CCDEDAE0455410508D11443AB5041CDF1A16DAF0455412C6E732C43AB504163069190B004554145DF574543AB5041E661FCC2B1045541A00AAA5743AB5041F65583A4B204554149D44D6843AB5041E3625871B3045541351C626943AB5041E957A17EB30455412D45708443AB504129DAACCBB4045541B8D66C8E43AB5041EEA59B46B5045541561A46AC43AB5041B5ED09B6B60455415A8B07C143AB5041DB3989B5B7045541A463F9D043AB5041A2D6CF79B8045541EA4C6FE843AB50411C499B9AB90455413462ECFF43AB50414204BFBBBA04554108EB3B0A44AB5041171BAB3ABB045541AAAF381E44AB50415265B530BC04554117BA714944AB5041ED9CC544BE0455417693506344AB5041F7D3F982BF0455414B62E28D44AB504148C38A8EC10455412C621AAA44AB504119782CEAC20455416567FAD744AB5041EEB1531FC5045541B6E03DF844AB5041C2827DACC604554179E81A1445AB5041B28B7B03C80455412848AA2945AB5041A3D2E10CC9045541CBDFB75C45AB504172A15581CB04554141B2E98145AB5041062B314BCD04554175BDDDA745AB5041E587631ECF0455415DBC46CB45AB50412BA247D2D0045541C49ECDF545AB50417EC9C6DDD2045541E5DC5C1D46AB5041ACEABEC4D404554104C6DB4A46AB504189D3C9F4D6045541352C5F7746AB50417EAFBC18D9045541C861CD9F46AB50415A7C6D0ADB045541620632B846AB5041DDAAB336DC04554150F84FCA46AB5041E0BFB715DD045541347017F346AB5041184FB30BDF0455415ACB8F0D47AB504107C38A51E0045541BDFCAF2447AB50413609376EE1045541EEF8254D47AB5041298E4760E304554101642E6547AB5041D1781E88E40455417E5EE76547AB5041F9830391E40455419410306E47AB504120D0FCF6E4045541C7AC689C47AB504152A4F52FE7045541C14CA1B147AB50413C0F3035E8045541AC65FCCB47AB5041FF579F79E9045541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274755 - 3072455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000025000000F6285C0FA02951417B14AEF7BB3754410000007097295141D7A370ADBE375441C3F5287C9A295141AE47E14AC8375441AE47E10AA1295141E17A142EDC3754417B14AE87A12951419A9999A9DD375441E17A141EA52951410AD7A3E0E8375441713D0A77A7295141000000C0EF37544185EB51F8A729514152B81E65F137544148E17AF4A72951418FC2F5E8F1375441EC51B87EA8295141CDCCCCFCF1375441EC51B8EEA92951413D0AD7C3F237544166666676AA29514185EB51E8F23754411F85EB11AC295141AE47E1EAF2375441B81E85EBAC295141000000D0F237544148E17A14B42951417B14AE47F03754413D0AD7D3D729514185EB5198E337544152B81E85DC29514148E17AF4E237544114AE4781DD29514185EB5108E237544185EB51F8DE29514100000080E2375441AE47E16AE4295141CDCCCC0CE23754415C8FC2C5EF29514114AE47F1E0375441F6285C0FFF2951415C8FC255DF37544166666606042A5141333333F3DE375441295C8FF2F529514148E17A14AE375441333333E3F52951415C8FC2B5AD37544148E17AE4F129514114AE47F1AE375441AE47E1CAEE29514152B81E75AF3754415C8FC2E5E9295141295C8FD2AF3754419A9999D9E429514148E17A94AF375441713D0A57DD295141A4703DCAAE37544166666636DB2951419A9999D9AE375441C3F5282CCF295141A4703D1AB2375441C3F5284CB82951419A999909B73754417B14AEA7B4295141AE47E1BAB73754415C8FC2A5AA2951413D0AD763B9375441D7A3705DA5295141E17A146EBA375441F6285C0FA02951417B14AEF7BB375441050000007B14AEB7D92951413D0AD783B537544185EB5158D9295141D7A370CDB237544152B81E45DB2951411F85EB91B2375441E17A149EDB29514185EB5148B53754417B14AEB7D92951413D0AD783B5375441
+</a>
+
+<b>
+010600000001000000010300000001000000270000004FD3E657EA295141AEAFD678E13754411CFE4E43EE2951414AE2F816E13754415CC1A54BF0295141363261E2E0375441FB2DD8CBFC2951411E61B292DF37544175D3F2D2FE2951416CC21C5CDF37544131B1DF48002A5141DD02733DDF375441F723A80C042A51414B3E82F2DE375441333333E3F52951415C8FC2B5AD375441263ABEF5F1295141AF43F4EBAE375441918FB3C0F12951410F4F39F7AE375441B38FFCDCEF295141A23B9547AF3754410A77437DEF295141AA3D7C57AF3754418A6E07EEEE295141A2DD476FAF375441775AD9BDEE29514161771776AF3754412CB6583BEE295141789CD27FAF375441F016E54FED295141C11D6191AF375441EDDF5B6FEC295141F9401FA2AF375441BBAD5DF6E9295141205F52D1AF375441A73BA00EE9295141506439C8AF375441A4EED4AAE829514106026EC3AF37544197D6E26BE72951419E3E1BB4AF3754410FBA1D97E6295141695AE2A9AF375441D571E618E52951413A6B8597AF3754410F35C48AE4295141EEEF2F8CAF3754418F58C178E32951411EF95C6FAF37544136510DFAE12951417BFE1A47AF3754413AB886F4E02951413941982BAF37544110BDF05EE02951413CFEDB1BAF37544101C72510DF295141D836A4F8AE375441D8F381E1DD2951413E4BCED8AE375441DC95575BDD2951413E4BB1CAAE375441C493EF07DD295141318D78CCAE3754410417AF42DC295141C6A808D2AE3754416534CB90E429514171FDF6B0CC375441BD966AF9E4295141275BC22ACE3754416EF983F4E8295141EF49296FDC375441BD1B3AA1E9295141039B26DADE3754412D3D5851EA295141A61D5951E13754414FD3E657EA295141AEAFD678E1375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274755 - 3370931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000025000000F6285C0FA02951417B14AEF7BB3754410000007097295141D7A370ADBE375441C3F5287C9A295141AE47E14AC8375441AE47E10AA1295141E17A142EDC3754417B14AE87A12951419A9999A9DD375441E17A141EA52951410AD7A3E0E8375441713D0A77A7295141000000C0EF37544185EB51F8A729514152B81E65F137544148E17AF4A72951418FC2F5E8F1375441EC51B87EA8295141CDCCCCFCF1375441EC51B8EEA92951413D0AD7C3F237544166666676AA29514185EB51E8F23754411F85EB11AC295141AE47E1EAF2375441B81E85EBAC295141000000D0F237544148E17A14B42951417B14AE47F03754413D0AD7D3D729514185EB5198E337544152B81E85DC29514148E17AF4E237544114AE4781DD29514185EB5108E237544185EB51F8DE29514100000080E2375441AE47E16AE4295141CDCCCC0CE23754415C8FC2C5EF29514114AE47F1E0375441F6285C0FFF2951415C8FC255DF37544166666606042A5141333333F3DE375441295C8FF2F529514148E17A14AE375441333333E3F52951415C8FC2B5AD37544148E17AE4F129514114AE47F1AE375441AE47E1CAEE29514152B81E75AF3754415C8FC2E5E9295141295C8FD2AF3754419A9999D9E429514148E17A94AF375441713D0A57DD295141A4703DCAAE37544166666636DB2951419A9999D9AE375441C3F5282CCF295141A4703D1AB2375441C3F5284CB82951419A999909B73754417B14AEA7B4295141AE47E1BAB73754415C8FC2A5AA2951413D0AD763B9375441D7A3705DA5295141E17A146EBA375441F6285C0FA02951417B14AEF7BB375441050000007B14AEB7D92951413D0AD783B537544185EB5158D9295141D7A370CDB237544152B81E45DB2951411F85EB91B2375441E17A149EDB29514185EB5148B53754417B14AEB7D92951413D0AD783B5375441
+</a>
+
+<b>
+010600000001000000010300000001000000270000004FD3E657EA295141AEAFD678E13754411CFE4E43EE2951414AE2F816E13754415CC1A54BF0295141363261E2E0375441FB2DD8CBFC2951411E61B292DF37544175D3F2D2FE2951416CC21C5CDF37544131B1DF48002A5141DD02733DDF375441F723A80C042A51414B3E82F2DE375441333333E3F52951415C8FC2B5AD375441263ABEF5F1295141AF43F4EBAE375441918FB3C0F12951410F4F39F7AE375441B38FFCDCEF295141A23B9547AF3754410A77437DEF295141AA3D7C57AF3754418A6E07EEEE295141A2DD476FAF375441775AD9BDEE29514161771776AF3754412CB6583BEE295141789CD27FAF375441F016E54FED295141C11D6191AF375441EDDF5B6FEC295141F9401FA2AF375441BBAD5DF6E9295141205F52D1AF375441A73BA00EE9295141506439C8AF375441A4EED4AAE829514106026EC3AF37544197D6E26BE72951419E3E1BB4AF3754410FBA1D97E6295141695AE2A9AF375441D571E618E52951413A6B8597AF3754410F35C48AE4295141EEEF2F8CAF3754418F58C178E32951411EF95C6FAF37544136510DFAE12951417BFE1A47AF3754413AB886F4E02951413941982BAF37544110BDF05EE02951413CFEDB1BAF37544101C72510DF295141D836A4F8AE375441D8F381E1DD2951413E4BCED8AE375441DC95575BDD2951413E4BB1CAAE375441C493EF07DD295141318D78CCAE3754410417AF42DC295141C6A808D2AE3754416534CB90E429514171FDF6B0CC375441BD966AF9E4295141275BC22ACE3754416EF983F4E8295141EF49296FDC375441BD1B3AA1E9295141039B26DADE3754412D3D5851EA295141A61D5951E13754414FD3E657EA295141AEAFD678E1375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274887 - 2916470
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000D7A3707DE6295141EC51B86E3837544148E17A44E52951418FC2F53839375441000000D0E2295141E17A14CE3A375441E17A142ED029514148E17AD446375441333333A3CD295141000000C04A375441EC51B83ED729514185EB510856375441CDCCCC5CE5295141AE47E19A6637544148E17A84E8295141295C8FA26C3754417B14AEF7E8295141F6285C7F6D375441B81E85CBFC2951419A99994967375441713D0AA7F62951419A9999A95C375441A4703DCAF3295141E17A14AE57375441F6285C3FF1295141B81E852B52375441333333C3EF295141B81E854B4D3754413D0AD753EF29514152B81E454737544152B81EF5EB295141EC51B84E41375441E17A145EE92951415C8FC2B53C375441F6285C3FE8295141B81E857B3A375441D7A3707DE6295141EC51B86E38375441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C039A237E5295141D2A23D413937544176058692E5295141985F19B639375441D2A1CE10EB2951413517D39842375441CE06FB07EE29514101BA635F47375441A0EA4483EE295141A6EEEB214D3754417AD4BEB9EE2951411196D3FB4D3754418A2B5262F02951410AA3FED252375441A3A1E84FF22951419DAE2E475737544148D35BD0F2295141F5B68B7458375441330066B5F6295141CD28F63D5F375441C694923BFB295141D934C5BF66375441D58A98D6EE295141055B84856A375441DFF39B8BE8295141756A39B06C375441131A6A92E82951412C62BFBD6C3754417B14AEF7E8295141F6285C7F6D375441B81E85CBFC2951419A99994967375441713D0AA7F62951419A9999A95C375441A4703DCAF3295141E17A14AE57375441F6285C3FF1295141B81E852B52375441333333C3EF295141B81E854B4D3754413D0AD753EF29514152B81E454737544152B81EF5EB295141EC51B84E41375441E17A145EE92951415C8FC2B53C375441F6285C3FE8295141B81E857B3A375441D7A3707DE6295141EC51B86E3837544148E17A44E52951418FC2F53839375441C039A237E5295141D2A23D4139375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274887 - 3801700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000D7A3707DE6295141EC51B86E3837544148E17A44E52951418FC2F53839375441000000D0E2295141E17A14CE3A375441E17A142ED029514148E17AD446375441333333A3CD295141000000C04A375441EC51B83ED729514185EB510856375441CDCCCC5CE5295141AE47E19A6637544148E17A84E8295141295C8FA26C3754417B14AEF7E8295141F6285C7F6D375441B81E85CBFC2951419A99994967375441713D0AA7F62951419A9999A95C375441A4703DCAF3295141E17A14AE57375441F6285C3FF1295141B81E852B52375441333333C3EF295141B81E854B4D3754413D0AD753EF29514152B81E454737544152B81EF5EB295141EC51B84E41375441E17A145EE92951415C8FC2B53C375441F6285C3FE8295141B81E857B3A375441D7A3707DE6295141EC51B86E38375441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C039A237E5295141D2A23D413937544176058692E5295141985F19B639375441D2A1CE10EB2951413517D39842375441CE06FB07EE29514101BA635F47375441A0EA4483EE295141A6EEEB214D3754417AD4BEB9EE2951411196D3FB4D3754418A2B5262F02951410AA3FED252375441A3A1E84FF22951419DAE2E475737544148D35BD0F2295141F5B68B7458375441330066B5F6295141CD28F63D5F375441C694923BFB295141D934C5BF66375441D58A98D6EE295141055B84856A375441DFF39B8BE8295141756A39B06C375441131A6A92E82951412C62BFBD6C3754417B14AEF7E8295141F6285C7F6D375441B81E85CBFC2951419A99994967375441713D0AA7F62951419A9999A95C375441A4703DCAF3295141E17A14AE57375441F6285C3FF1295141B81E852B52375441333333C3EF295141B81E854B4D3754413D0AD753EF29514152B81E454737544152B81EF5EB295141EC51B84E41375441E17A145EE92951415C8FC2B53C375441F6285C3FE8295141B81E857B3A375441D7A3707DE6295141EC51B86E3837544148E17A44E52951418FC2F53839375441C039A237E5295141D2A23D4139375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275092 - 53337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3704D3A2D51410AD7A350E4395441AE47E16A3D2D51419A999949E43954417B14AE273D2D51419A999909E3395441A4703DEA3E2D5141A4703D3ADB395441AE47E1AA3E2D5141E17A147ED8395441EC51B80E3E2D5141AE47E18AD1395441000000703D2D5141CDCCCC7CCD395441E17A14CE3C2D5141F6285CAFC9395441333333433C2D5141000000A0C6395441295C8F823B2D51418FC2F5D8C3395441AE47E1DA302D514185EB51A8C4395441333333F31D2D514148E17A84C5395441EC51B81E252D5141A4703DEAD1395441A4703DFA262D5141295C8F22D5395441000000302A2D5141CDCCCCECD63954418FC2F538302D5141EC51B84EDD39544166666686372D51413D0AD713E2395441D7A3704D3A2D51410AD7A350E4395441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000EC51B81E252D5141A4703DEAD1395441A67783EC262D5141F0D7C30AD5395441D85BB837272D51411AE4D744D5395441000000302A2D5141CDCCCCECD6395441C1D17C0D2D2D51417BB985F4D93954412603FB842F2D51416E8D6090DC395441B053363A302D5141F1B6894FDD3954415EB51416312D5141730828DFDD3954411DE1D8A3312D5141231DC23BDE39544166666686372D51413D0AD713E2395441B8DDD991392D514182A085B9E3395441D7A3704D3A2D51410AD7A350E4395441186B83423B2D514163F7794EE43954412228C24C3D2D5141FDACDD49E43954417B14AE273D2D51419A999909E3395441EB6B9DD03D2D51419885F31BE0395441A18725D23E2D5141A18A27A5DB39544147543CE73E2D514193600A19DB39544196E2F6DC3E2D514121B189A7DA39544128F410D43E2D514161663545DA3954411D0056B73E2D51419173B907D9395441AE47E1AA3E2D5141E17A147ED8395441846B11313E2D5141CAF53812D3395441841C46C53D2D51413CC584AACF395441C86A45F83C2D51416ADB01ADCA39544145E3FD4B3C2D5141AC1F97D1C639544169A76AB63B2D514154445D98C4395441295C8F823B2D51418FC2F5D8C339544161E72AFE392D514129607CF6C33954416E11C2A0332D5141A4C75A72C4395441AE47E1DA302D514185EB51A8C43954417310C3A42D2D51418BF9B7CDC4395441E67C4CB52A2D51413836E7EFC4395441E9F94CB8292D5141858669FBC4395441EAAC3466272D51417D1D7016C5395441A429F018262D514129379925C5395441645A5598242D5141B82A1837C5395441219FE48D242D514146C09137C539544145BF4AF8222D5141AB37054AC5395441333333F31D2D514148E17A84C539544192406015222D5141B38026AACC395441EC51B81E252D5141A4703DEAD1395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275129 - 384120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F38637544133333333A32B514152B81EF586375441F6285C7F9D2B5141713D0A578A3754413D0AD7439E2B51413D0AD7538A3754418FC2F558A62B51410AD7A3308A375441C3F5283CB92B51419A9999D989375441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275448 - 2922014
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE471163295141F6285C7F74385441C3F5286C5E2951413D0AD7E367385441A4703DEA5A295141EC51B85E5E3854418FC2F53855295141666666364F385441EC51B8AE51295141713D0AC74538544148E17AF450295141713D0AD743385441C3F528FC4E2951411F85EB61443854419A9999F948295141CDCCCCAC4638544148E17A744529514114AE472148385441295C8FE237295141666666764E385441B81E857B2C29514152B81E1554385441AE47E1CA23295141F6285C2F583854418FC2F59822295141AE47E19A583854410AD7A3B020295141D7A370DD58385441713D0AA71C295141D7A370DD583854413333337313295141A4703D8A58385441B81E85BB1829514166666676653854413D0AD7B319295141EC51B8DE67385441666666A61E295141A4703D9A743854410000000023295141666666167F385441D7A3705D28295141E17A140E8B385441713D0AA72B2951416666666692385441AE47E1DA2C295141D7A370ED9238544148E17AA42F2951417B14AEE792385441CDCCCCDC652951415C8FC2A57E3854419A99996965295141713D0A677D385441EC51B83E66295141F6285C1F7D38544114AE471163295141F6285C7F74385441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000002A1984C019295141F47637C3583854413333337313295141A4703D8A583854418B52BC871C295141766BAE256F385441666666A61E295141A4703D9A743854410000000023295141666666167F385441D7A3705D28295141E17A140E8B385441713D0AA72B2951416666666692385441AE47E1DA2C295141D7A370ED9238544148E17AA42F2951417B14AEE792385441CDCCCCDC652951415C8FC2A57E3854415FB6540E66295141AA7F11767E385441F6285C6F662951411F85EBA17D385441EC51B83E66295141F6285C1F7D38544114AE471163295141F6285C7F74385441C3F5286C5E2951413D0AD7E367385441A4703DEA5A295141EC51B85E5E385441D273D33557295141B5585D8154385441B1573C6F1E295141F0789EEC6C3854413C1C97851829514166AFE58C5F38544186B3AF0746295141E645EAF44B3854411C2AE86D512951410CF6146647385441D0F0B22C52295141EA57CE164738544148E17AF450295141713D0AD743385441F3C4412D4F295141F74F6654443854419D6E3AF04A295141D0DB12ED45385441A13FF04548295141A14110F746385441E356D9BF44295141677F92754838544183E8C67E40295141E7DFCA714A3854418837CF933D295141A63F5ECE4B38544151A7FF1436295141734AE4594F3854419855331532295141A1E07E5251385441B3BC159429295141726D177455385441E31139D92729514142062A45563854414C7639B727295141D8F236555638544109BC991A2629514171170318573854412ACBB8F824295141D2B6DCA057385441D102BEF123295141926B031D5838544143EEB92523295141FDD8676958385441CB8A6E9E2229514173F4F498583854419FD2ED0F2229514167D18EAD583854416BDD4BE320295141A70B89D65838544125F676BF202951417A596BDB583854417674599520295141D7A370DD5838544128A3E73E20295141D7A370DD583854418188FAAA1C295141D7A370DD583854412A1984C019295141F47637C358385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275448 - 3387742
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE471163295141F6285C7F74385441C3F5286C5E2951413D0AD7E367385441A4703DEA5A295141EC51B85E5E3854418FC2F53855295141666666364F385441EC51B8AE51295141713D0AC74538544148E17AF450295141713D0AD743385441C3F528FC4E2951411F85EB61443854419A9999F948295141CDCCCCAC4638544148E17A744529514114AE472148385441295C8FE237295141666666764E385441B81E857B2C29514152B81E1554385441AE47E1CA23295141F6285C2F583854418FC2F59822295141AE47E19A583854410AD7A3B020295141D7A370DD58385441713D0AA71C295141D7A370DD583854413333337313295141A4703D8A58385441B81E85BB1829514166666676653854413D0AD7B319295141EC51B8DE67385441666666A61E295141A4703D9A743854410000000023295141666666167F385441D7A3705D28295141E17A140E8B385441713D0AA72B2951416666666692385441AE47E1DA2C295141D7A370ED9238544148E17AA42F2951417B14AEE792385441CDCCCCDC652951415C8FC2A57E3854419A99996965295141713D0A677D385441EC51B83E66295141F6285C1F7D38544114AE471163295141F6285C7F74385441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000002A1984C019295141F47637C3583854413333337313295141A4703D8A583854418B52BC871C295141766BAE256F385441666666A61E295141A4703D9A743854410000000023295141666666167F385441D7A3705D28295141E17A140E8B385441713D0AA72B2951416666666692385441AE47E1DA2C295141D7A370ED9238544148E17AA42F2951417B14AEE792385441CDCCCCDC652951415C8FC2A57E3854415FB6540E66295141AA7F11767E385441F6285C6F662951411F85EBA17D385441EC51B83E66295141F6285C1F7D38544114AE471163295141F6285C7F74385441C3F5286C5E2951413D0AD7E367385441A4703DEA5A295141EC51B85E5E385441D273D33557295141B5585D8154385441B1573C6F1E295141F0789EEC6C3854413C1C97851829514166AFE58C5F38544186B3AF0746295141E645EAF44B3854411C2AE86D512951410CF6146647385441D0F0B22C52295141EA57CE164738544148E17AF450295141713D0AD743385441F3C4412D4F295141F74F6654443854419D6E3AF04A295141D0DB12ED45385441A13FF04548295141A14110F746385441E356D9BF44295141677F92754838544183E8C67E40295141E7DFCA714A3854418837CF933D295141A63F5ECE4B38544151A7FF1436295141734AE4594F3854419855331532295141A1E07E5251385441B3BC159429295141726D177455385441E31139D92729514142062A45563854414C7639B727295141D8F236555638544109BC991A2629514171170318573854412ACBB8F824295141D2B6DCA057385441D102BEF123295141926B031D5838544143EEB92523295141FDD8676958385441CB8A6E9E2229514173F4F498583854419FD2ED0F2229514167D18EAD583854416BDD4BE320295141A70B89D65838544125F676BF202951417A596BDB583854417674599520295141D7A370DD5838544128A3E73E20295141D7A370DD583854418188FAAA1C295141D7A370DD583854412A1984C019295141F47637C358385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275562 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276283 - 3065117
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A047826514166666626043D5441713D0A3790265141295C8F22FE3C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C54413D0AD7038E2651415C8FC285F53C5441C3F5281C7726514185EB5158FB3C5441E17A14BE75265141333333E3FB3C544148E17A047826514166666626043D5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A800370278265141925C2C1E043D54412AFFCC027B265141CB8FE867033D544195870C6F80265141548CD10E023D544159FA7648882651414FB5511B003D5441BE603BD88D2651412F6566B9FE3C54413F617756902651417242C01AFE3C5441299206FE932651419C314732FD3C544148741386952651413AFADBD0FC3C54416E426DF29C265141ED52A6F8FA3C544127F9854CA4265141A5DDF924F93C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C54413D0AD7038E2651415C8FC285F53C5441C3F5281C7726514185EB5158FB3C5441E17A14BE75265141333333E3FB3C5441A800370278265141925C2C1E043D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276283 - 3288516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A047826514166666626043D5441713D0A3790265141295C8F22FE3C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C54413D0AD7038E2651415C8FC285F53C5441C3F5281C7726514185EB5158FB3C5441E17A14BE75265141333333E3FB3C544148E17A047826514166666626043D5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A800370278265141925C2C1E043D54412AFFCC027B265141CB8FE867033D544195870C6F80265141548CD10E023D544159FA7648882651414FB5511B003D5441BE603BD88D2651412F6566B9FE3C54413F617756902651417242C01AFE3C5441299206FE932651419C314732FD3C544148741386952651413AFADBD0FC3C54416E426DF29C265141ED52A6F8FA3C544127F9854CA4265141A5DDF924F93C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C54413D0AD7038E2651415C8FC285F53C5441C3F5281C7726514185EB5158FB3C5441E17A14BE75265141333333E3FB3C5441A800370278265141925C2C1E043D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>298548 - 271392
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B000000666666B661C95041B81E853BC6AF5441C3F5283C6BC950418FC2F588BBAF5441713D0A275BC9504152B81E35BBAF54410AD7A33058C95041AE47E16ABBAF54413D0AD7432EC950419A999939C3AF5441A4703D3A07C9504166666696CAAF54411F85EBB109C950411F85EB31CCAF5441E17A149E0CC95041666666A6CEAF5441F6285C1F10C950419A999919D2AF54415C8FC2D512C95041E17A140ED5AF5441666666B661C95041B81E853BC6AF5441
+</a>
+
+<b>
+010600000001000000010300000001000000120000007C16993B0CC95041C9F7AB53CEAF544169F4139E0CC95041A5A765A6CEAF544112DE5C1F10C95041814B9919D2AF5441DB55C2D512C95041B537130ED5AF5441CCF765B661C950411CEB833BC6AF5441B972B63966C950416FA8A629C1AF54413126283C6BC95041BEABF688BBAF54415808897B64C95041703BC265BBAF5441713D0A275BC9504152B81E35BBAF54415197F5FE58C95041A43C415CBBAF54419204A53058C9504145B4E16ABBAF5441EA3F27494CC950414B4166A2BDAF54413D0AD7432EC950419A999939C3AF5441FE0F98392EC95041A04B883BC3AF54414951287F07C95041E41042A2CAAF5441195BD8B109C950410009DF31CCAF54411F85EBB109C950411F85EB31CCAF54417C16993B0CC95041C9F7AB53CEAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276761 - 2938563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A140E80AF504148E17A1471D154410AD7A3907DAF5041EC51B83E70D15441D7A3706D79AF5041C3F528DC6ED1544152B81E4578AF5041F6285CBF6FD15441F6285C8F78AF5041D7A370CD7DD154419A99999979AF5041E17A147E89D154417B14AE978AAF5041EC51B87E8ED15441333333D391AF5041000000A090D15441B81E850B91AF5041AE47E18A8FD1544114AE47F188AF5041D7A3704D84D1544185EB51F881AF504114AE472173D15441E17A140E80AF504148E17A1471D15441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A205A3978AAF5041A9A49E7E8ED15441333333D391AF5041000000A090D1544103D2DB2B8EAF5041ADF2598E8BD15441C42689B98BAF504181F37F2988D15441CBFA2AEE88AF50416D74C64584D154411BFEEB1986AF50415174094E7DD1544148141D4F83AF50413CFA8A6D76D1544146C0375082AF50418836C3F973D15441218B453382AF5041F9AF78B273D154416C2CCE1C82AF50413FB2237B73D1544151EDE9ED81AF5041CDE2231673D154417558948D81AF504172C203AF72D154410D19DB1681AF50412EE8EB2F72D154419BEA329980AF5041A6FE67A971D15441C8A1BE0980AF5041D31D071371D15441254EAF987DAF5041D91CA74170D154411ED0E42A7FAF5041E77955F773D1544115A5EF8483AF5041D50C27127ED154414194560487AF50413C41493186D15441CD1897D488AF5041A0F4495F8AD15441A205A3978AAF5041A9A49E7E8ED15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276761 - 3808402
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A140E80AF504148E17A1471D154410AD7A3907DAF5041EC51B83E70D15441D7A3706D79AF5041C3F528DC6ED1544152B81E4578AF5041F6285CBF6FD15441F6285C8F78AF5041D7A370CD7DD154419A99999979AF5041E17A147E89D154417B14AE978AAF5041EC51B87E8ED15441333333D391AF5041000000A090D15441B81E850B91AF5041AE47E18A8FD1544114AE47F188AF5041D7A3704D84D1544185EB51F881AF504114AE472173D15441E17A140E80AF504148E17A1471D15441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A205A3978AAF5041A9A49E7E8ED15441333333D391AF5041000000A090D1544103D2DB2B8EAF5041ADF2598E8BD15441C42689B98BAF504181F37F2988D15441CBFA2AEE88AF50416D74C64584D154411BFEEB1986AF50415174094E7DD1544148141D4F83AF50413CFA8A6D76D1544146C0375082AF50418836C3F973D15441218B453382AF5041F9AF78B273D154416C2CCE1C82AF50413FB2237B73D1544151EDE9ED81AF5041CDE2231673D154417558948D81AF504172C203AF72D154410D19DB1681AF50412EE8EB2F72D154419BEA329980AF5041A6FE67A971D15441C8A1BE0980AF5041D31D071371D15441254EAF987DAF5041D91CA74170D154411ED0E42A7FAF5041E77955F773D1544115A5EF8483AF5041D50C27127ED154414194560487AF50413C41493186D15441CD1897D488AF5041A0F4495F8AD15441A205A3978AAF5041A9A49E7E8ED15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276796 - 2933165
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000020000000103000000010000001E000000B81E851B03AF5041E17A14FE55D0544152B81E7504AF5041E17A14FE53D054419A9999D905AF5041F6285C4F52D054417B14AED7FCAE504152B81E3546D0544152B81EC5F3AE50415C8FC2853BD05441C3F5284CEFAE50417B14AE3737D0544100000000E7AE50415C8FC2752FD05441AE47E12AD5AE50411F85EB711ED05441295C8F42D3AE50413D0AD7131FD0544148E17A34C8AE5041713D0A373DD05441E17A14DEC1AE5041D7A3707D4ED05441B81E855BBEAE5041EC51B80E58D05441F6285CFFC8AE50410AD7A3A05DD05441CDCCCCACCEAE5041EC51B80E60D0544100000080D4AE50415C8FC22562D0544133333343ECAE5041B81E85DB69D05441666666C6F2AE504148E17A646CD0544185EB51F8F8AE504185EB51186FD0544114AE4701FFAE504148E17A7472D054418FC2F5680EAF50419A9999997BD054418FC2F55812AF5041295C8F8277D05441000000C016AF50411F85EB516DD054413D0AD7F30EAF50410AD7A3905FD05441000000100BAF50419A9999B958D054419A9999B909AF5041AE47E1BA59D054417B14AEE708AF5041666666F65AD054415C8FC2B508AF5041295C8F325CD05441295C8F8206AF50415C8FC2E55AD054411F85EB0105AF504152B81E6559D05441B81E851B03AF5041E17A14FE55D05441010300000001000000150000001F85EBF1BBAE50413D0AD7035FD054418FC2F548C7AE50413D0AD70364D05441F6285CBFD2AE5041E17A14CE68D0544152B81E55DEAE5041AE47E19A6CD05441C3F5289CEAAE50418FC2F5786FD054417B14AEB7F0AE50418FC2F59871D05441A4703D9AF6AE5041F6285C3F74D0544133333363FCAE504114AE472177D05441295C8FD201AF50415C8FC2657AD054415C8FC2E50BAF5041B81E85AB80D05441E17A141E0DAF5041000000607CD05441A4703D8AFEAE50419A99994973D0544100000090F8AE50411F85EB1170D05441E17A146EF2AE50413D0AD7436DD0544133333303ECAE50419A9999A96AD05441F6285C3FD4AE5041C3F528FC62D0544114AE4761CEAE504185EB51D860D0544114AE47A1C8AE50410AD7A3605ED05441295C8F92BDAE5041AE47E1CA58D05441AE47E19ABBAE50410AD7A3D05DD054411F85EBF1BBAE50413D0AD7035FD05441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000004A334DD1C1AE50416B1ADBAB4ED0544152B81EC5CEAE504114AE47B153D0544133333323E8AE5041295C8F325DD05441C3F5280CF6AE50413D0AD7F363D05441D7A3704DFDAE504148E17AF467D0544152B81EB504AF504185EB51286CD0544126DFBD3E0CAF504136813C9C70D05441FAD1558312AF50414436D45374D0544152F88F1013AF5041F517451773D05441333333F314AF5041E17A14AE6ED05441E6320ACE14AF5041ADE873036DD054410AD7A3B014AF50411F85EBB16BD054410AD7A3F00DAF5041B81E85CB5FD05441A4703D9A0CAF50418FC2F5685ED054415C8FC2B508AF5041295C8F325CD054419F570F1609AF5041FE61A3F65AD054415C084FC009AF5041F01B37D559D05441F41D0B390AAF5041E3D5818059D05441AC7A412B09AF5041BF76F7B757D05441F703F54D07AF50415D6BFF8F54D054411F85EB7106AF5041B81E851B53D0544191D6257704AF50411CDFB87250D0544170FCF27002AF5041EEF292BA4DD054410C23611D01AF50413F6065F24BD05441C3E7ACF8FDAE504154425BB947D054410610CFE9FCAE5041404C366D46D05441858F4934FCAE5041F70EA08E45D05441C1DF671DFAAE504198F0BCFE42D05441E96358C3F7AE5041019FAB3940D0544175B492A7F6AE5041DB4276EB3ED0544169829D04F4AE50419C648AD03BD0544130C784CAF2AE5041CC408B943AD054419B3E7C89EFAE5041C368B57237D05441201C8922EBAE50415900685333D05441EB6902ECE8AE5041C1C26A4831D05441CA853F23E1AE50413CB8CEDD29D054414BDD56A6DCAE50412B83919525D05441068F5340D8AE50413AF42C6321D05441B11AED1CD5AE5041BF008C761ED05441E1CA523FD3AE50412BD5A91C1FD05441F97C2C0ED0AE5041964F54D027D05441CFC05830CAAE504125F585CE37D054414A334DD1C1AE50416B1ADBAB4ED05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276796 - 3788383
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000020000000103000000010000001E000000B81E851B03AF5041E17A14FE55D0544152B81E7504AF5041E17A14FE53D054419A9999D905AF5041F6285C4F52D054417B14AED7FCAE504152B81E3546D0544152B81EC5F3AE50415C8FC2853BD05441C3F5284CEFAE50417B14AE3737D0544100000000E7AE50415C8FC2752FD05441AE47E12AD5AE50411F85EB711ED05441295C8F42D3AE50413D0AD7131FD0544148E17A34C8AE5041713D0A373DD05441E17A14DEC1AE5041D7A3707D4ED05441B81E855BBEAE5041EC51B80E58D05441F6285CFFC8AE50410AD7A3A05DD05441CDCCCCACCEAE5041EC51B80E60D0544100000080D4AE50415C8FC22562D0544133333343ECAE5041B81E85DB69D05441666666C6F2AE504148E17A646CD0544185EB51F8F8AE504185EB51186FD0544114AE4701FFAE504148E17A7472D054418FC2F5680EAF50419A9999997BD054418FC2F55812AF5041295C8F8277D05441000000C016AF50411F85EB516DD054413D0AD7F30EAF50410AD7A3905FD05441000000100BAF50419A9999B958D054419A9999B909AF5041AE47E1BA59D054417B14AEE708AF5041666666F65AD054415C8FC2B508AF5041295C8F325CD05441295C8F8206AF50415C8FC2E55AD054411F85EB0105AF504152B81E6559D05441B81E851B03AF5041E17A14FE55D05441010300000001000000150000001F85EBF1BBAE50413D0AD7035FD054418FC2F548C7AE50413D0AD70364D05441F6285CBFD2AE5041E17A14CE68D0544152B81E55DEAE5041AE47E19A6CD05441C3F5289CEAAE50418FC2F5786FD054417B14AEB7F0AE50418FC2F59871D05441A4703D9AF6AE5041F6285C3F74D0544133333363FCAE504114AE472177D05441295C8FD201AF50415C8FC2657AD054415C8FC2E50BAF5041B81E85AB80D05441E17A141E0DAF5041000000607CD05441A4703D8AFEAE50419A99994973D0544100000090F8AE50411F85EB1170D05441E17A146EF2AE50413D0AD7436DD0544133333303ECAE50419A9999A96AD05441F6285C3FD4AE5041C3F528FC62D0544114AE4761CEAE504185EB51D860D0544114AE47A1C8AE50410AD7A3605ED05441295C8F92BDAE5041AE47E1CA58D05441AE47E19ABBAE50410AD7A3D05DD054411F85EBF1BBAE50413D0AD7035FD05441
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000004A334DD1C1AE50416B1ADBAB4ED0544152B81EC5CEAE504114AE47B153D0544133333323E8AE5041295C8F325DD05441C3F5280CF6AE50413D0AD7F363D05441D7A3704DFDAE504148E17AF467D0544152B81EB504AF504185EB51286CD0544126DFBD3E0CAF504136813C9C70D05441FAD1558312AF50414436D45374D0544152F88F1013AF5041F517451773D05441333333F314AF5041E17A14AE6ED05441E6320ACE14AF5041ADE873036DD054410AD7A3B014AF50411F85EBB16BD054410AD7A3F00DAF5041B81E85CB5FD05441A4703D9A0CAF50418FC2F5685ED054415C8FC2B508AF5041295C8F325CD054419F570F1609AF5041FE61A3F65AD054415C084FC009AF5041F01B37D559D05441F41D0B390AAF5041E3D5818059D05441AC7A412B09AF5041BF76F7B757D05441F703F54D07AF50415D6BFF8F54D054411F85EB7106AF5041B81E851B53D0544191D6257704AF50411CDFB87250D0544170FCF27002AF5041EEF292BA4DD054410C23611D01AF50413F6065F24BD05441C3E7ACF8FDAE504154425BB947D054410610CFE9FCAE5041404C366D46D05441858F4934FCAE5041F70EA08E45D05441C1DF671DFAAE504198F0BCFE42D05441E96358C3F7AE5041019FAB3940D0544175B492A7F6AE5041DB4276EB3ED0544169829D04F4AE50419C648AD03BD0544130C784CAF2AE5041CC408B943AD054419B3E7C89EFAE5041C368B57237D05441201C8922EBAE50415900685333D05441EB6902ECE8AE5041C1C26A4831D05441CA853F23E1AE50413CB8CEDD29D054414BDD56A6DCAE50412B83919525D05441068F5340D8AE50413AF42C6321D05441B11AED1CD5AE5041BF008C761ED05441E1CA523FD3AE50412BD5A91C1FD05441F97C2C0ED0AE5041964F54D027D05441CFC05830CAAE504125F585CE37D054414A334DD1C1AE50416B1ADBAB4ED05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276839 - 2931554
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D6A0BAF5041D7A3701DC1D25441000000200CAF5041C3F5285CBFD254419A99990913AF50418FC2F548BDD25441F6285C7F1EAF50411F85EB61B8D25441D7A370FD20AF5041AE47E1EAC0D2544148E17A3422AF5041C3F5287CC1D254410AD7A3C02EAF5041EC51B83EBCD25441EC51B8EE36AF50415C8FC235B8D254410000007040AF504100000020B4D254411F85EB8149AF5041C3F528BCB0D25441E17A144E4AAF5041EC51B82EAFD2544148E17A6449AF504148E17AE4ABD254415C8FC2A544AF5041EC51B85E9ED25441C3F528CC47AF50419A9999E99AD25441F6285C7F47AF5041AE47E10A99D25441C3F5287C41AF50411F85EBF194D25441666666B63EAF50415C8FC2C592D25441E17A145E33AF504152B81E7588D25441F6285C7F31AF5041F6285C6F88D25441AE47E15A2AAF5041C3F5287C90D254419A99998925AF5041C3F5284C94D2544114AE47F11DAF5041713D0A7799D254417B14AE3715AF5041AE47E1CA9ED25441D7A3702D09AF5041C3F5285CA8D254419A99996900AF5041CDCCCC7CADD25441B81E855BE7AE5041713D0AA7BDD25441A4703D5AE9AE50418FC2F5B8BED254418FC2F508EFAE5041713D0AE7BFD25441EC51B8CEEDAE50417B14AE37C4D254413D0AD7B3EDAE504100000030C5D254410AD7A370EDAE50415C8FC255C7D254413D0AD753FBAE50411F85EB11D0D254410AD7A320FDAE5041F6285C5FCBD25441A4703D6A0BAF5041D7A3701DC1D25441
+</a>
+
+<b>
+010600000001000000010300000001000000250000005F12A14811AF5041E6D5EFF5A1D25441AD20FE3F0EAF5041FD3D4654A4D25441EE6296A009AF5041E9ADA800A8D254413D22EA3809AF5041D776685FA8D25441013E4F9106AF504199B003E3A9D25441BC6C224304AF50418AE0433CABD25441C97C363F01AF5041FD4BD6FFACD25441C242370900AF5041A90BFEBAADD25441A70232BBFCAE5041BA38E4DCAFD254416DDFA5A5F9AE5041E4DE59DAB1D2544166BF0BA2F3AE5041CE1DD8BEB5D2544129ECA000ECAE5041D599B5A8BAD2544129ECA000ECAE5041D47AC3ABBAD25441A1AFEA2FECAE5041641AB4C6BAD25441420BE463EEAE504115EC39EDBBD2544101C88372F1AE5041C8C3AF37BDD254418A5D957FF7AE50417F42C51BBFD254411E24994EFBAE5041E73EF33DC0D254413FC61A2AFEAE5041BD19D8BCC0D2544195E9C0E700AF504188F4BC3BC1D2544156C866EA03AF5041AC8DF180C1D2544160F91E8305AF50416512FD6FC1D25441923A057508AF5041FAF60500C1D25441B806345A0AAF504103DE5754C0D25441000000200CAF5041C3F5285CBFD25441F7BEE5F010AF50419A9E2AE2BDD25441519F853B11AF50412B9EE18CBDD25441D5E18D5013AF504111DD58A2BCD254413395D30A16AF5041D9DB7DA2BBD25441A41247321EAF50416725F311B8D25441AB4D33EB21AF5041A462CE66B5D25441DB6FAD2828AF50415533489AAFD2544100E58E0B2AAF5041FE5341C6ADD25441A4FD2ED426AF5041D4A0834FACD25441C5C65D6D1FAF5041D7DCB0C3A8D2544147640E9518AF5041B5C70987A5D254415F12A14811AF5041E6D5EFF5A1D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276839 - 3440527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D6A0BAF5041D7A3701DC1D25441000000200CAF5041C3F5285CBFD254419A99990913AF50418FC2F548BDD25441F6285C7F1EAF50411F85EB61B8D25441D7A370FD20AF5041AE47E1EAC0D2544148E17A3422AF5041C3F5287CC1D254410AD7A3C02EAF5041EC51B83EBCD25441EC51B8EE36AF50415C8FC235B8D254410000007040AF504100000020B4D254411F85EB8149AF5041C3F528BCB0D25441E17A144E4AAF5041EC51B82EAFD2544148E17A6449AF504148E17AE4ABD254415C8FC2A544AF5041EC51B85E9ED25441C3F528CC47AF50419A9999E99AD25441F6285C7F47AF5041AE47E10A99D25441C3F5287C41AF50411F85EBF194D25441666666B63EAF50415C8FC2C592D25441E17A145E33AF504152B81E7588D25441F6285C7F31AF5041F6285C6F88D25441AE47E15A2AAF5041C3F5287C90D254419A99998925AF5041C3F5284C94D2544114AE47F11DAF5041713D0A7799D254417B14AE3715AF5041AE47E1CA9ED25441D7A3702D09AF5041C3F5285CA8D254419A99996900AF5041CDCCCC7CADD25441B81E855BE7AE5041713D0AA7BDD25441A4703D5AE9AE50418FC2F5B8BED254418FC2F508EFAE5041713D0AE7BFD25441EC51B8CEEDAE50417B14AE37C4D254413D0AD7B3EDAE504100000030C5D254410AD7A370EDAE50415C8FC255C7D254413D0AD753FBAE50411F85EB11D0D254410AD7A320FDAE5041F6285C5FCBD25441A4703D6A0BAF5041D7A3701DC1D25441
+</a>
+
+<b>
+010600000001000000010300000001000000250000005F12A14811AF5041E6D5EFF5A1D25441AD20FE3F0EAF5041FD3D4654A4D25441EE6296A009AF5041E9ADA800A8D254413D22EA3809AF5041D776685FA8D25441013E4F9106AF504199B003E3A9D25441BC6C224304AF50418AE0433CABD25441C97C363F01AF5041FD4BD6FFACD25441C242370900AF5041A90BFEBAADD25441A70232BBFCAE5041BA38E4DCAFD254416DDFA5A5F9AE5041E4DE59DAB1D2544166BF0BA2F3AE5041CE1DD8BEB5D2544129ECA000ECAE5041D599B5A8BAD2544129ECA000ECAE5041D47AC3ABBAD25441A1AFEA2FECAE5041641AB4C6BAD25441420BE463EEAE504115EC39EDBBD2544101C88372F1AE5041C8C3AF37BDD254418A5D957FF7AE50417F42C51BBFD254411E24994EFBAE5041E73EF33DC0D254413FC61A2AFEAE5041BD19D8BCC0D2544195E9C0E700AF504188F4BC3BC1D2544156C866EA03AF5041AC8DF180C1D2544160F91E8305AF50416512FD6FC1D25441923A057508AF5041FAF60500C1D25441B806345A0AAF504103DE5754C0D25441000000200CAF5041C3F5285CBFD25441F7BEE5F010AF50419A9E2AE2BDD25441519F853B11AF50412B9EE18CBDD25441D5E18D5013AF504111DD58A2BCD254413395D30A16AF5041D9DB7DA2BBD25441A41247321EAF50416725F311B8D25441AB4D33EB21AF5041A462CE66B5D25441DB6FAD2828AF50415533489AAFD2544100E58E0B2AAF5041FE5341C6ADD25441A4FD2ED426AF5041D4A0834FACD25441C5C65D6D1FAF5041D7DCB0C3A8D2544147640E9518AF5041B5C70987A5D254415F12A14811AF5041E6D5EFF5A1D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276856 - 2931636
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EBA110B0504152B81EF553D254419A99992918B0504114AE473162D2544114AE47B11EB05041000000A06CD25441F6285C5F25B050411F85EBA172D254418FC2F5882AB050417B14AE7778D2544152B81E6530B050417B14AE177CD25441E17A14EE34B050417B14AE377ED254417B14AEC735B05041A4703D9A84D25441E17A148E37B050419A9999F98DD254418FC2F5883AB05041AE47E16A92D25441000000E040B05041EC51B86E9AD254411F85EB9143B05041E17A14BE9DD25441E17A145E51B05041B81E859B5AD254415C8FC2A550B050410000006059D25441D7A3706D48B05041E17A14FE56D25441C3F5285C36B050413333330351D25441AE47E1DA32B05041333333434FD25441A4703D1A2CB05041666666F64AD254413D0AD72325B0504114AE475147D2544148E17A6416B0504148E17A3445D2544185EB51F80EB05041CDCCCC0C45D2544114AE47410EB05041C3F528BC45D25441333333F30BB05041000000C046D254418FC2F5180BB050415C8FC2D548D254411F85EBA110B0504152B81EF553D25441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000B4A9264248B0504162CF2B5A85D254415B48559348B050413B9D586785D25441D8AA302449B05041DBB439A282D2544116D83CC34AB05041659BB6BE7AD25441E0DAC8D94EB05041A5E17DDA66D254415E47AA5C51B05041450C5D9C5AD254410EE6E81651B05041CBF8C38D5AD2544134C9E1E250B05041288E690F5AD254410DEDE4094EB05041A0F9EDDB59D25441ECB51A5A4AB05041EB51BE9459D254410D3321B344B0504151C0CBB158D2544163468B8D42B05041678F197258D254414791076E40B05041D7C1F95458D25441ABFD12A83DB0504145C753AD58D25441364B2AD33BB05041B38BDD1D59D2544170CAF6D539B05041968A60CE59D254410483B14D37B05041DA8561E75AD25441D4FEF0CC34B05041FB2E20FD5BD25441818692D032B0504153010DFE5CD254414B69C6FA2BB05041383BAEFB61D254414B778B5A2AB05041F0944B4E64D25441EF0D2EC928B050411445903567D2544101825AFC26B05041A9C499816BD254419D57A1A824B05041204D610372D25441F6285C5F25B050411F85EBA172D254417253060128B05041422E579B75D254411D987BC82AB0504168A9F99E78D25441BC2BBFAD2CB05041EAEC28CB79D25441ED408CAC2FB05041C4E880A57BD254410A597F1B32B050418D0A18E57CD2544176E8A29A34B05041EC8594107ED254416D2773623CB050411F2FE24781D254418BEFA0723FB0504132FD1F8A82D2544152EE1DA440B0504157A6A80783D25441A376AF0142B05041F347468183D254419414C23B44B05041D64D183284D25441EA0EE6FD45B050411B21EFC084D25441CFFAADB746B05041F949CEF984D25441B4A9264248B0504162CF2B5A85D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276856 - 3377342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EBA110B0504152B81EF553D254419A99992918B0504114AE473162D2544114AE47B11EB05041000000A06CD25441F6285C5F25B050411F85EBA172D254418FC2F5882AB050417B14AE7778D2544152B81E6530B050417B14AE177CD25441E17A14EE34B050417B14AE377ED254417B14AEC735B05041A4703D9A84D25441E17A148E37B050419A9999F98DD254418FC2F5883AB05041AE47E16A92D25441000000E040B05041EC51B86E9AD254411F85EB9143B05041E17A14BE9DD25441E17A145E51B05041B81E859B5AD254415C8FC2A550B050410000006059D25441D7A3706D48B05041E17A14FE56D25441C3F5285C36B050413333330351D25441AE47E1DA32B05041333333434FD25441A4703D1A2CB05041666666F64AD254413D0AD72325B0504114AE475147D2544148E17A6416B0504148E17A3445D2544185EB51F80EB05041CDCCCC0C45D2544114AE47410EB05041C3F528BC45D25441333333F30BB05041000000C046D254418FC2F5180BB050415C8FC2D548D254411F85EBA110B0504152B81EF553D25441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000B4A9264248B0504162CF2B5A85D254415B48559348B050413B9D586785D25441D8AA302449B05041DBB439A282D2544116D83CC34AB05041659BB6BE7AD25441E0DAC8D94EB05041A5E17DDA66D254415E47AA5C51B05041450C5D9C5AD254410EE6E81651B05041CBF8C38D5AD2544134C9E1E250B05041288E690F5AD254410DEDE4094EB05041A0F9EDDB59D25441ECB51A5A4AB05041EB51BE9459D254410D3321B344B0504151C0CBB158D2544163468B8D42B05041678F197258D254414791076E40B05041D7C1F95458D25441ABFD12A83DB0504145C753AD58D25441364B2AD33BB05041B38BDD1D59D2544170CAF6D539B05041968A60CE59D254410483B14D37B05041DA8561E75AD25441D4FEF0CC34B05041FB2E20FD5BD25441818692D032B0504153010DFE5CD254414B69C6FA2BB05041383BAEFB61D254414B778B5A2AB05041F0944B4E64D25441EF0D2EC928B050411445903567D2544101825AFC26B05041A9C499816BD254419D57A1A824B05041204D610372D25441F6285C5F25B050411F85EBA172D254417253060128B05041422E579B75D254411D987BC82AB0504168A9F99E78D25441BC2BBFAD2CB05041EAEC28CB79D25441ED408CAC2FB05041C4E880A57BD254410A597F1B32B050418D0A18E57CD2544176E8A29A34B05041EC8594107ED254416D2773623CB050411F2FE24781D254418BEFA0723FB0504132FD1F8A82D2544152EE1DA440B0504157A6A80783D25441A376AF0142B05041F347468183D254419414C23B44B05041D64D183284D25441EA0EE6FD45B050411B21EFC084D25441CFFAADB746B05041F949CEF984D25441B4A9264248B0504162CF2B5A85D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276903 - 2932142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E0000001F85EB5127AC50415C8FC28568D45441EC51B82E24AC5041F6285C2F68D454410AD7A32021AC50418FC2F56867D45441D7A370FD1BAC5041F6285C3F65D4544148E17AB419AC50418FC2F50864D4544152B81E150AAC504148E17AA489D454415C8FC2750AAC50415C8FC2B589D4544148E17AF40CAC50415C8FC2E589D454416666665615AC504185EB51A88AD45441CDCCCC8C1DAC5041C3F528FC7ED45441C3F528CC22AC5041666666767AD4544148E17A4425AC5041A4703D7A7BD454418FC2F5B81EAC5041B81E853B8BD454413D0AD74322AC50417B14AE078BD4544185EB51D82BAC50411F85EB8189D45441000000C037AC50410000006085D45441D7A3706D3BAC50415C8FC2357FD45441713D0AE73AAC5041F6285C7F7BD45441C3F5286C3DAC5041EC51B8AE72D454418FC2F5583FAC50410AD7A36070D45441D7A370ED43AC504114AE47F16CD45441EC51B87E45AC504152B81EC568D45441295C8F6246AC5041713D0AC761D45441B81E851B45AC50410AD7A3B060D454413D0AD76341AC504148E17A8461D454411F85EBA13CAC5041A4703DAA63D45441B81E85FB35AC50417B14AE5767D454415C8FC26532AC5041295C8F7268D45441F6285CCF2DAC50419A9999C968D454411F85EB5127AC50415C8FC28568D45441
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000036A365BD2AAC50414E86EAAB89D4544185EB51D82BAC50411F85EB8189D45441A3C46AE231AC504160EB3B6987D45441D18AF7BE37AC50413EEA3B5485D4544136E7D3C538AC5041EDFA219E83D4544107CE73093BAC5041B15D61DD7FD4544118D646373BAC504121578F907FD45441F79368673BAC5041179905367FD45441EC735A5E3BAC5041186113CB7ED4544170ABD74A3BAC504181201B417ED454414A725A163BAC50413FC3EECD7CD45441512429FA3AAC5041DB1B92067CD45441DC9EF5EB3AAC5041ADD3266E7BD4544136D5DD7B3BAC5041F32DC37679D454414834A3E33CAC5041D81E478C74D454412860A76F3DAC50412454069772D45441361BF2353FAC504135F1908A70D45441906678673FAC5041735D8A5270D4544102796DCB40AC5041E127BA406FD454413674B7A142AC5041CD9112EA6DD454415A67F6EA43AC5041676BD0EB6CD45441636625ED44AC5041E4DC9E486AD454411DCB348045AC5041400DE5CA68D454412BEA5C8845AC5041FF9B5B7968D45441A476A92146AC5041F154EDC463D4544141F7836046AC5041513261C761D45441D7FFCC1C45AC50410D3B71B460D45441BD32B76F41AC504195E77C7F61D45441AD9092E13EAC5041330E65A662D45441E47B208F3CAC504180188BB363D454419EC62E7A3AAC504173D85ADB64D45441F68649BF38AC50414C8747D065D45441DB37730037AC5041BE3A62C766D454411788570E36AC50410835825667D4544167EBD89C35AC5041915FDC7467D454418E196E5034AC5041464652DB67D45441B4944E5C32AC50413A4F007668D45441B7E6CFF731AC5041146FB57A68D45441171A4D2E30AC5041BCEC9D9C68D45441868E31332EAC5041FBD167C568D45441CADE314D2DAC5041D6C424C868D45441BB3F3AF737AC5041727DE1EA6DD4544136A365BD2AAC50414E86EAAB89D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276903 - 3768881
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E0000001F85EB5127AC50415C8FC28568D45441EC51B82E24AC5041F6285C2F68D454410AD7A32021AC50418FC2F56867D45441D7A370FD1BAC5041F6285C3F65D4544148E17AB419AC50418FC2F50864D4544152B81E150AAC504148E17AA489D454415C8FC2750AAC50415C8FC2B589D4544148E17AF40CAC50415C8FC2E589D454416666665615AC504185EB51A88AD45441CDCCCC8C1DAC5041C3F528FC7ED45441C3F528CC22AC5041666666767AD4544148E17A4425AC5041A4703D7A7BD454418FC2F5B81EAC5041B81E853B8BD454413D0AD74322AC50417B14AE078BD4544185EB51D82BAC50411F85EB8189D45441000000C037AC50410000006085D45441D7A3706D3BAC50415C8FC2357FD45441713D0AE73AAC5041F6285C7F7BD45441C3F5286C3DAC5041EC51B8AE72D454418FC2F5583FAC50410AD7A36070D45441D7A370ED43AC504114AE47F16CD45441EC51B87E45AC504152B81EC568D45441295C8F6246AC5041713D0AC761D45441B81E851B45AC50410AD7A3B060D454413D0AD76341AC504148E17A8461D454411F85EBA13CAC5041A4703DAA63D45441B81E85FB35AC50417B14AE5767D454415C8FC26532AC5041295C8F7268D45441F6285CCF2DAC50419A9999C968D454411F85EB5127AC50415C8FC28568D45441
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000036A365BD2AAC50414E86EAAB89D4544185EB51D82BAC50411F85EB8189D45441A3C46AE231AC504160EB3B6987D45441D18AF7BE37AC50413EEA3B5485D4544136E7D3C538AC5041EDFA219E83D4544107CE73093BAC5041B15D61DD7FD4544118D646373BAC504121578F907FD45441F79368673BAC5041179905367FD45441EC735A5E3BAC5041186113CB7ED4544170ABD74A3BAC504181201B417ED454414A725A163BAC50413FC3EECD7CD45441512429FA3AAC5041DB1B92067CD45441DC9EF5EB3AAC5041ADD3266E7BD4544136D5DD7B3BAC5041F32DC37679D454414834A3E33CAC5041D81E478C74D454412860A76F3DAC50412454069772D45441361BF2353FAC504135F1908A70D45441906678673FAC5041735D8A5270D4544102796DCB40AC5041E127BA406FD454413674B7A142AC5041CD9112EA6DD454415A67F6EA43AC5041676BD0EB6CD45441636625ED44AC5041E4DC9E486AD454411DCB348045AC5041400DE5CA68D454412BEA5C8845AC5041FF9B5B7968D45441A476A92146AC5041F154EDC463D4544141F7836046AC5041513261C761D45441D7FFCC1C45AC50410D3B71B460D45441BD32B76F41AC504195E77C7F61D45441AD9092E13EAC5041330E65A662D45441E47B208F3CAC504180188BB363D454419EC62E7A3AAC504173D85ADB64D45441F68649BF38AC50414C8747D065D45441DB37730037AC5041BE3A62C766D454411788570E36AC50410835825667D4544167EBD89C35AC5041915FDC7467D454418E196E5034AC5041464652DB67D45441B4944E5C32AC50413A4F007668D45441B7E6CFF731AC5041146FB57A68D45441171A4D2E30AC5041BCEC9D9C68D45441868E31332EAC5041FBD167C568D45441CADE314D2DAC5041D6C424C868D45441BB3F3AF737AC5041727DE1EA6DD4544136A365BD2AAC50414E86EAAB89D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276937 - 2939636
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04B6AC5041295C8F5272CF544114AE47C1B9AC504114AE471170CF5441B81E853BBFAC5041CDCCCC1C6DCF5441C3F528ACB6AC5041AE47E13A31CF544152B81E65A9AC50417B14AE073BCF544148E17A84A5AC504148E17AE43DCF54413D0AD703A3AC5041D7A370BD3FCF5441AE47E19AA1AC50417B14AEC740CF54410AD7A360A1AC50418FC2F58841CF5441CDCCCCCCA0AC50413333337343CF5441E17A14AE9FAC50417B14AE4744CF5441713D0AE7A1AC50417B14AE674ACF54411F85EB91A2AC5041EC51B88E4DCF5441295C8FD2A2AC50410AD7A3C04ECF5441E17A14EEA3AC50411F85EB6155CF5441E17A149EA7AC504148E17A2471CF544114AE4751ABAC504185EB511870CF5441CDCCCC4CB4AC504114AE47216DCF544148E17A04B6AC5041295C8F5272CF5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000007FCD851EB0AC5041643BDF7F52CF5441EE531FD4ACAC5041928E9C4C51CF5441874FB3C1A9AC50418AD4C42D50CF5441FA5A69A3A3AC5041377279F24DCF5441BFF75099A2AC504169FE27904DCF54415AA88E99A2AC5041D97181914DCF5441ADDC1EFCA2AC50411FC070B94FCF544157B810B8A3AC50416F3E901E54CF5441E17A14EEA3AC50411F85EB6155CF5441FCBFBEA0A4AC5041006BEFA25ACF5441D246FA0CA5AC5041956FB9D15DCF5441B67420D1A5AC50410A965C9663CF54411926616DA6AC5041E639A72E68CF5441D09F54A9A7AC5041EEDC8A2E71CF5441AFAFF58BAAAC5041F618AC4970CF544120651244B4AC504163DAB3EF6CCF5441837F9624B3AC50419CC3BD8E66CF5441C777B3B5B2AC50411F44E21864CF544150D27637B2AC50414BD5D54B61CF5441CE7A5CAFB1AC504184FDBE465ECF5441D0D27864B1AC5041C414B2375CCF5441FE383DE0B0AC50411C1E6C4658CF54411370BB8EB0AC50412A0451D855CF54417FCD851EB0AC5041643BDF7F52CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276937 - 3345039
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04B6AC5041295C8F5272CF544114AE47C1B9AC504114AE471170CF5441B81E853BBFAC5041CDCCCC1C6DCF5441C3F528ACB6AC5041AE47E13A31CF544152B81E65A9AC50417B14AE073BCF544148E17A84A5AC504148E17AE43DCF54413D0AD703A3AC5041D7A370BD3FCF5441AE47E19AA1AC50417B14AEC740CF54410AD7A360A1AC50418FC2F58841CF5441CDCCCCCCA0AC50413333337343CF5441E17A14AE9FAC50417B14AE4744CF5441713D0AE7A1AC50417B14AE674ACF54411F85EB91A2AC5041EC51B88E4DCF5441295C8FD2A2AC50410AD7A3C04ECF5441E17A14EEA3AC50411F85EB6155CF5441E17A149EA7AC504148E17A2471CF544114AE4751ABAC504185EB511870CF5441CDCCCC4CB4AC504114AE47216DCF544148E17A04B6AC5041295C8F5272CF5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000007FCD851EB0AC5041643BDF7F52CF5441EE531FD4ACAC5041928E9C4C51CF5441874FB3C1A9AC50418AD4C42D50CF5441FA5A69A3A3AC5041377279F24DCF5441BFF75099A2AC504169FE27904DCF54415AA88E99A2AC5041D97181914DCF5441ADDC1EFCA2AC50411FC070B94FCF544157B810B8A3AC50416F3E901E54CF5441E17A14EEA3AC50411F85EB6155CF5441FCBFBEA0A4AC5041006BEFA25ACF5441D246FA0CA5AC5041956FB9D15DCF5441B67420D1A5AC50410A965C9663CF54411926616DA6AC5041E639A72E68CF5441D09F54A9A7AC5041EEDC8A2E71CF5441AFAFF58BAAAC5041F618AC4970CF544120651244B4AC504163DAB3EF6CCF5441837F9624B3AC50419CC3BD8E66CF5441C777B3B5B2AC50411F44E21864CF544150D27637B2AC50414BD5D54B61CF5441CE7A5CAFB1AC504184FDBE465ECF5441D0D27864B1AC5041C414B2375CCF5441FE383DE0B0AC50411C1E6C4658CF54411370BB8EB0AC50412A0451D855CF54417FCD851EB0AC5041643BDF7F52CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277005 - 2927359
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000260000001F85EB61D3AC5041EC51B84EB5CE544133333323A9AC504152B81EE5B8CE54417B14AE678CAC504133333393BBCE5441A4703D4A7FAC5041295C8F52BDCE54413D0AD7337FAC5041713D0A37BECE54410AD7A3707EAC5041D7A370FDC5CE544148E17AF47AAC5041B81E859BDECE5441295C8F827BAC5041F6285C9FE0CE5441EC51B8EE80AC5041D7A3700DE2CE54413D0AD7A396AC5041B81E85ABE4CE5441F6285CAFA7AC5041AE47E1DAE6CE5441AE47E12AAAAC5041C3F5280CE7CE544152B81E65ACAC5041B81E859BE6CE544114AE47F1ACAC504133333383DCCE544148E17AC4B8AC5041B81E851BDBCE5441C3F5281CC9AC5041EC51B83EDCCE5441B81E852BCFAC5041F6285CFFDCCE5441295C8F12D3AC50419A9999D9C4CE5441EC51B81ED3AC5041AE47E1AAC3CE5441AE47E11AD4AC5041D7A370DDC3CE544185EB5138D0AC50411F85EB31DDCE5441F6285CFFCAAC5041AE47E17AEECE5441C3F528ECCCAC5041333333B3F1CE5441000000F0CDAC504166666636F2CE544148E17AF4E1AC5041CDCCCC4CDFCE54411F85EB01EDAC5041C3F5285CD4CE5441F6285C0FF4AC504166666606CECE5441E17A147E06AD504185EB5128BDCE54418FC2F50818AD5041EC51B8BEACCE5441B81E85AB16AD50410AD7A360ABCE5441E17A14BE11AD5041C3F5284CACCE5441333333C30CAD5041295C8FE2ABCE54410AD7A330F4AC50415C8FC285A7CE544185EB51B8DCAC50410AD7A3E0A3CE5441713D0AA7DBAC5041A4703D2AA6CE544148E17A54D8AC504148E17A24B3CE544114AE4761D7AC50418FC2F568B4CE54411F85EB61D3AC5041EC51B84EB5CE5441
+</a>
+
+<b>
+010600000001000000010300000001000000330000001F85EB01EDAC5041C3F5285CD4CE544106F96DF7F2AC50413F29F8FDCECE54414DDB541FFEAC5041CFDD14CCC4CE5441AC302C130BAD50419B7C4CDEB8CE5441436FD2F410AD5041021CC353B3CE54418FC2F50818AD5041EC51B8BEACCE5441B81E85AB16AD50410AD7A360ABCE5441E17A14BE11AD5041C3F5284CACCE5441333333C30CAD5041295C8FE2ABCE5441107A99EFF3AC5041ABDAA07EA7CE54413A636611EAAC5041BB2AE4FCA5CE54414158E5B7DCAC50413875BEE3A3CE5441713D0AA7DBAC5041A4703D2AA6CE544148E17A54D8AC504148E17A24B3CE544114AE4761D7AC50418FC2F568B4CE54414DC82D6DD3AC504133EC654CB5CE544110EB344ED3AC5041159C2E50B5CE5441A966D9AECCAC5041EEE394E0B5CE54412D46FB4AC2AC504167D43EC2B6CE544114E200DDABAC5041BB93DCA9B8CE5441FCBEA11491AC504181824F24BBCE54410CEE25C08AAC5041C7461ACABBCE5441789E08E285AC5041272A3E75BCCE544178DC36B47FAC504166847044BDCE54412E3906487FAC50415E062B4BBDCE5441CA4A9A3A7FAC50416135FE24BECE544130491E497FAC504155561B23BECE544126CABA497FAC5041B5F56D1DBECE54418BB1686386AC5041D3AAD436BDCE5441F14A5F398BAC504115062194BCCE5441C94DDC9C99AC50410B3F972CBBCE54418F24E4EA99AC50417F824F24BBCE544106FACBD39AAC504186BD6C16BBCE54414229C467A6AC504197DF7C2FBACE5441A2407437AAAC50416DA26AEBB9CE544110385041ACAC5041D683F3E8BFCE54419B1E4F68ADAC50414404E5C0C2CE5441C44685B8B9AC5041FD6A20BAC1CE54415CFBAA1EBEAC5041A58D1154C1CE54413FD63A6FBEAC5041C1F74056C1CE5441EBEFA189BEAC5041A58D1154C1CE544183AD9C49C3AC5041E6F3F377C1CE5441BACBE845C8AC50411A2B4D1FC2CE5441693D35CECDAC504137DD8598C3CE5441C10EAEFAD2AC5041DFAC62DCC4CE5441E6FEC709D3AC50413B0FE5CBC4CE5441B72FDBEBD3AC50412B2E05D5C3CE54414DD7B6C7DBAC5041013FA2F5C4CE54410F168E34E4AC5041AA8E0C30C6CE54416AAD6E54EDAC50417A76D43AC7CE54411F85EB01EDAC5041C3F5285CD4CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277005 - 3556138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000260000001F85EB61D3AC5041EC51B84EB5CE544133333323A9AC504152B81EE5B8CE54417B14AE678CAC504133333393BBCE5441A4703D4A7FAC5041295C8F52BDCE54413D0AD7337FAC5041713D0A37BECE54410AD7A3707EAC5041D7A370FDC5CE544148E17AF47AAC5041B81E859BDECE5441295C8F827BAC5041F6285C9FE0CE5441EC51B8EE80AC5041D7A3700DE2CE54413D0AD7A396AC5041B81E85ABE4CE5441F6285CAFA7AC5041AE47E1DAE6CE5441AE47E12AAAAC5041C3F5280CE7CE544152B81E65ACAC5041B81E859BE6CE544114AE47F1ACAC504133333383DCCE544148E17AC4B8AC5041B81E851BDBCE5441C3F5281CC9AC5041EC51B83EDCCE5441B81E852BCFAC5041F6285CFFDCCE5441295C8F12D3AC50419A9999D9C4CE5441EC51B81ED3AC5041AE47E1AAC3CE5441AE47E11AD4AC5041D7A370DDC3CE544185EB5138D0AC50411F85EB31DDCE5441F6285CFFCAAC5041AE47E17AEECE5441C3F528ECCCAC5041333333B3F1CE5441000000F0CDAC504166666636F2CE544148E17AF4E1AC5041CDCCCC4CDFCE54411F85EB01EDAC5041C3F5285CD4CE5441F6285C0FF4AC504166666606CECE5441E17A147E06AD504185EB5128BDCE54418FC2F50818AD5041EC51B8BEACCE5441B81E85AB16AD50410AD7A360ABCE5441E17A14BE11AD5041C3F5284CACCE5441333333C30CAD5041295C8FE2ABCE54410AD7A330F4AC50415C8FC285A7CE544185EB51B8DCAC50410AD7A3E0A3CE5441713D0AA7DBAC5041A4703D2AA6CE544148E17A54D8AC504148E17A24B3CE544114AE4761D7AC50418FC2F568B4CE54411F85EB61D3AC5041EC51B84EB5CE5441
+</a>
+
+<b>
+010600000001000000010300000001000000330000001F85EB01EDAC5041C3F5285CD4CE544106F96DF7F2AC50413F29F8FDCECE54414DDB541FFEAC5041CFDD14CCC4CE5441AC302C130BAD50419B7C4CDEB8CE5441436FD2F410AD5041021CC353B3CE54418FC2F50818AD5041EC51B8BEACCE5441B81E85AB16AD50410AD7A360ABCE5441E17A14BE11AD5041C3F5284CACCE5441333333C30CAD5041295C8FE2ABCE5441107A99EFF3AC5041ABDAA07EA7CE54413A636611EAAC5041BB2AE4FCA5CE54414158E5B7DCAC50413875BEE3A3CE5441713D0AA7DBAC5041A4703D2AA6CE544148E17A54D8AC504148E17A24B3CE544114AE4761D7AC50418FC2F568B4CE54414DC82D6DD3AC504133EC654CB5CE544110EB344ED3AC5041159C2E50B5CE5441A966D9AECCAC5041EEE394E0B5CE54412D46FB4AC2AC504167D43EC2B6CE544114E200DDABAC5041BB93DCA9B8CE5441FCBEA11491AC504181824F24BBCE54410CEE25C08AAC5041C7461ACABBCE5441789E08E285AC5041272A3E75BCCE544178DC36B47FAC504166847044BDCE54412E3906487FAC50415E062B4BBDCE5441CA4A9A3A7FAC50416135FE24BECE544130491E497FAC504155561B23BECE544126CABA497FAC5041B5F56D1DBECE54418BB1686386AC5041D3AAD436BDCE5441F14A5F398BAC504115062194BCCE5441C94DDC9C99AC50410B3F972CBBCE54418F24E4EA99AC50417F824F24BBCE544106FACBD39AAC504186BD6C16BBCE54414229C467A6AC504197DF7C2FBACE5441A2407437AAAC50416DA26AEBB9CE544110385041ACAC5041D683F3E8BFCE54419B1E4F68ADAC50414404E5C0C2CE5441C44685B8B9AC5041FD6A20BAC1CE54415CFBAA1EBEAC5041A58D1154C1CE54413FD63A6FBEAC5041C1F74056C1CE5441EBEFA189BEAC5041A58D1154C1CE544183AD9C49C3AC5041E6F3F377C1CE5441BACBE845C8AC50411A2B4D1FC2CE5441693D35CECDAC504137DD8598C3CE5441C10EAEFAD2AC5041DFAC62DCC4CE5441E6FEC709D3AC50413B0FE5CBC4CE5441B72FDBEBD3AC50412B2E05D5C3CE54414DD7B6C7DBAC5041013FA2F5C4CE54410F168E34E4AC5041AA8E0C30C6CE54416AAD6E54EDAC50417A76D43AC7CE54411F85EB01EDAC5041C3F5285CD4CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277086 - 362851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000AE47E10A62AB50418FC2F5E8C6D054413D0AD74369AB50415C8FC255C3D05441713D0A3772AB50410AD7A3A0BFD0544148E17A3474AB5041EC51B84EBCD054417B14AE5774AB504152B81E35AED054413D0AD73374AB504133333303ADD05441CDCCCC9C6AAB50413D0AD763AFD05441A4703D9A65AB5041C3F5282CB1D05441C3F528DC5CAB5041333333B3B2D054411F85EBC15BAB5041C3F5285CB2D054413D0AD7135BAB50419A9999D9B1D054418FC2F5084BAB5041B81E857BB4D054413D0AD7F341AB5041EC51B83EB5D05441F6285C6F3CAB504148E17A54B5D054416666661637AB504148E17A24B4D05441E17A140E2CAB5041C3F5282CB1D054411F85EBF11CAB504100000040ACD05441295C8FE218AB5041295C8F72AAD05441A4703DCA24AB504133333393B2D05441B81E85FB2AAB5041E17A14CEB6D05441295C8F623CAB5041EC51B88EBED054411F85EBE148AB504133333323C3D05441D7A3706D52AB5041295C8F82C5D05441B81E857B57AB50413D0AD753C6D05441AE47E10A62AB50418FC2F5E8C6D05441
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C4674A3A4BAB504158D16C73B4D054418FC2F5084BAB5041B81E857BB4D054419D434A084BAB50417D84937BB4D05441DF478DD04AAB5041C46F4180B4D054413D0AD7F341AB5041EC51B83EB5D05441F6285C6F3CAB504148E17A54B5D05441A61E917C3BAB5041B755901EB5D0544172CEFC6D3BAB50417583531BB5D0544189C259C337AB5041FFF2E24AB4D054416666661637AB504148E17A24B4D05441E17A140E2CAB5041C3F5282CB1D054411F85EBF11CAB504100000040ACD05441295C8FE218AB5041295C8F72AAD05441A4703DCA24AB504133333393B2D05441951685FB2AAB50414D7514CEB6D054419E424F6D31AB5041281208ADB9D05441745C8F623CAB50410152B88EBED05441AA29A8163DAB5041B97FB8D0BED054411F85EBE148AB504133333323C3D05441559CD1204FAB5041E3149FB0C4D05441B7A3706D52AB5041E95B8F82C5D0544184E4A03854AB50412F09D2CCC5D05441B81E857B57AB50413D0AD753C6D054411733E51E5EAB50417C4794B1C6D05441A347E10A62AB50414FC2F5E8C6D054413CB7BF5C65AB50412A844A44C5D054413D0AD74369AB50415C8FC255C3D05441EA986E5171AB5041890FC1FFBFD054417B3D0A3772AB5041F5D6A3A0BFD0544148E17A3474AB5041EC51B84EBCD054417B14AE5774AB504152B81E35AED054413D0AD73374AB504133333303ADD05441CDCCCC9C6AAB50413D0AD763AFD05441A4703D9A65AB5041C3F5282CB1D05441C3F528DC5CAB5041333333B3B2D054411F85EBC15BAB5041C3F5285CB2D054413D0AD7135BAB50419A9999D9B1D054416647053B50AB50419B6143A1B3D0544137A314294DAB5041AD793B22B4D05441C4674A3A4BAB504158D16C73B4D05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277088 - 2930490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51C888AF5041A4703DAACAD15441666666E697AF5041CDCCCCACD2D15441F6285CCF9CAF50415C8FC275CED15441A4703D9AA5AF504152B81E95C1D15441666666A6A6AF504100000050BAD154415C8FC225A8AF5041AE47E14AB7D1544114AE4731A8AF5041B81E85CBB2D15441B81E855BAAAF5041AE47E15AADD154415C8FC2B5ABAF5041D7A370CDABD1544152B81EE5AAAF504148E17AC4AAD15441AE47E1DA9FAF504148E17A84A7D154410AD7A3B09CAF5041295C8F52A1D1544114AE47C199AF5041D7A3709D9BD15441333333D391AF5041000000A090D154417B14AE978AAF5041EC51B87E8ED154419A99999979AF5041E17A147E89D15441000000407AAF504114AE47D190D154411F85EBA17AAF5041EC51B82E9CD15441F6285C2F7AAF5041E17A143EA5D154418FC2F5E876AF504100000030C0D1544185EB51D878AF504185EB5138C2D1544185EB51C888AF5041A4703DAACAD15441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000008FC2F5E876AF504100000030C0D1544185EB51D878AF504185EB5138C2D15441A6FFAD9982AF50410F3F9663C7D154419C0BD41989AF504107005DD5CAD15441A59700F389AF5041F7BD1F2DC3D154416AA8108E8BAF5041616CAFDEB8D15441894BD3388DAF5041C6957D2BAED15441FACB7A6D8FAF50417F5C3603A0D1544102635A0B91AF5041D8B7BBA295D15441451908DD91AF50414F1CA0AD90D15441C5E34A5C8EAF5041A8CADE9A8FD15441C27058F386AF50415C7D5B6C8DD15441A0A268DE80AF5041E1E9F3A18BD15441577B8E127BAF5041FEF710ED89D15441062905A879AF50415E41538289D154414BCEA1D079AF5041FCB83FEA8BD1544185FF103F7AAF50410950C2C690D15441C97C68687AAF5041FF6AE78195D154413441D09F7AAF5041021733F99BD154410597659E7AAF50410DA00C769CD15441B6749F397AAF50410CBF4C6EA4D154414A707E347AAF504171CC3B1BA5D154413165190B7AAF5041EF13866CA6D154418AAD7F9879AF504171C24917AAD1544146159CB878AF5041C7B85449B1D1544100B000C377AF5041D3D60E2EB9D154418FC2F5E876AF504100000030C0D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277088 - 3752831
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51C888AF5041A4703DAACAD15441666666E697AF5041CDCCCCACD2D15441F6285CCF9CAF50415C8FC275CED15441A4703D9AA5AF504152B81E95C1D15441666666A6A6AF504100000050BAD154415C8FC225A8AF5041AE47E14AB7D1544114AE4731A8AF5041B81E85CBB2D15441B81E855BAAAF5041AE47E15AADD154415C8FC2B5ABAF5041D7A370CDABD1544152B81EE5AAAF504148E17AC4AAD15441AE47E1DA9FAF504148E17A84A7D154410AD7A3B09CAF5041295C8F52A1D1544114AE47C199AF5041D7A3709D9BD15441333333D391AF5041000000A090D154417B14AE978AAF5041EC51B87E8ED154419A99999979AF5041E17A147E89D15441000000407AAF504114AE47D190D154411F85EBA17AAF5041EC51B82E9CD15441F6285C2F7AAF5041E17A143EA5D154418FC2F5E876AF504100000030C0D1544185EB51D878AF504185EB5138C2D1544185EB51C888AF5041A4703DAACAD15441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000008FC2F5E876AF504100000030C0D1544185EB51D878AF504185EB5138C2D15441A6FFAD9982AF50410F3F9663C7D154419C0BD41989AF504107005DD5CAD15441A59700F389AF5041F7BD1F2DC3D154416AA8108E8BAF5041616CAFDEB8D15441894BD3388DAF5041C6957D2BAED15441FACB7A6D8FAF50417F5C3603A0D1544102635A0B91AF5041D8B7BBA295D15441451908DD91AF50414F1CA0AD90D15441C5E34A5C8EAF5041A8CADE9A8FD15441C27058F386AF50415C7D5B6C8DD15441A0A268DE80AF5041E1E9F3A18BD15441577B8E127BAF5041FEF710ED89D15441062905A879AF50415E41538289D154414BCEA1D079AF5041FCB83FEA8BD1544185FF103F7AAF50410950C2C690D15441C97C68687AAF5041FF6AE78195D154413441D09F7AAF5041021733F99BD154410597659E7AAF50410DA00C769CD15441B6749F397AAF50410CBF4C6EA4D154414A707E347AAF504171CC3B1BA5D154413165190B7AAF5041EF13866CA6D154418AAD7F9879AF504171C24917AAD1544146159CB878AF5041C7B85449B1D1544100B000C377AF5041D3D60E2EB9D154418FC2F5E876AF504100000030C0D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277398 - 56444
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000666666A6C7F75041AE47E1EA5D305541F6285C7FCFF7504152B81EA55E3055417B14AEC7D6F75041666666465F305541295C8F02DFF750411F85EB115B305541666666F6E4F75041EC51B80E58305541295C8F42E9F75041295C8F22563055410AD7A3E0F1F75041E17A142E523055413D0AD713F6F75041295C8FF24F305541EC51B82EF7F750415C8FC2554F305541D7A3700DF8F750418FC2F5984C305541713D0A67FEF75041666666E64030554114AE4791F1F7504152B81ED54730554114AE4781DFF750413D0AD71351305541666666A6C7F75041AE47E1EA5D305541
+</a>
+
+<b>
+010600000001000000010300000001000000110000008855ED99CCF75041008FA1405B305541A34C92B1C7F7504102EFDDE45D30554194F2A675CEF75041C7D57C8C5E305541F6285C7FCFF7504152B81EA55E3055417B14AEC7D6F75041666666465F305541295C8F02DFF750411F85EB115B305541666666F6E4F75041EC51B80E58305541295C8F42E9F75041295C8F225630554174027A64EDF750412F85073D543055418A172A65F6F7504144637BC54F305541EC51B82EF7F750415C8FC2554F305541D7A3700DF8F750418FC2F5984C305541713D0A67FEF75041666666E64030554114AE4791F1F7504152B81ED547305541B2B6C0C8E5F7504107B714DD4D30554145EC4971CDF75041F555B6CC5A3055418855ED99CCF75041008FA1405B305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277638 - 3177958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000040000000103000000010000001900000014AE47514FF050417B14AE9796315541AE47E19A56F0504114AE477198315541B81E852B62F05041000000309B3155419A9999296EF050418FC2F5089E3155415C8FC2F579F050415C8FC2D5A031554114AE471186F050415C8FC2B5A3315541713D0A1788F050411F85EB419E3155413D0AD75389F050415C8FC2659B315541AE47E18A7FF050410AD7A32098315541EC51B8FE71F050418FC2F57893315541CDCCCC9C64F05041C3F5283C8F315541CDCCCC3C54F05041F6285C7F8A315541713D0A174DF050410AD7A38088315541B81E85DB45F050417B14AE1786315541E17A144E3FF05041295C8F9283315541AE47E1CA38F050416666667681315541D7A3700D3AF050416666669683315541295C8FD23DF050413D0AD7F38B315541E17A148E41F05041000000B08C31554114AE470144F05041B81E852B8D3155413D0AD76348F0504152B81E358E3155413D0AD7334AF05041333333A38E315541000000A04FF05041CDCCCC3C903155418FC2F5584EF050418FC2F5589631554114AE47514FF050417B14AE97963155410103000000010000001E00000014AE47B15BF050410AD7A3602C31554185EB51E85CF05041666666E62E31554185EB51485DF05041C3F5289C31315541C3F5286C5DF050419A99996934315541C3F528DC5CF050417B14AE773631554185EB51B85CF05041A4703DAA38315541295C8FD25EF050410AD7A3E03931554148E17A3461F05041C3F5280C3B315541713D0A0763F05041F6285C1F3C31554114AE474166F05041666666263E315541666666366BF050418FC2F518403155415C8FC2456EF0504100000070413155416666669670F05041295C8F42433155413D0AD7D370F050410AD7A31044315541295C8FE270F05041E17A14EE47315541C3F528EC71F0504152B81EE547315541CDCCCC1C72F050417B14AE37443155411F85EB0171F0504114AE47F13D315541EC51B8DE70F050411F85EB913B3155415C8FC27570F050415C8FC29534315541CDCCCC3C6DF05041CDCCCC9C333155413333330369F05041D7A3705D32315541EC51B8AE66F050410AD7A310313155415C8FC2A563F05041A4703DCA2E315541E17A142E60F05041C3F5287C2B3155415C8FC2555CF050417B14AE5728315541666666D657F05041E17A141E2431554148E17A5458F05041CDCCCCDC263155413D0AD7B358F05041713D0AF72831554114AE47B15BF050410AD7A3602C3155410103000000010000001F000000E17A143E59F0504114AE47F11B3155410AD7A31058F050410AD7A3001B315541D7A3706D56F05041713D0AF719315541B81E85EB54F0504185EB513819315541CDCCCC7C53F050410AD7A3201931554152B81ED54DF05041A4703D0A193155419A99995949F0504185EB51F8183155418FC2F51847F05041000000C018315541A4703D5A41F050418FC2F5B8173155413D0AD7233CF0504185EB51C81631554114AE470135F05041C3F528EC15315541AE47E1BA32F05041D7A370DD153155411F85EB4131F0504148E17AD4153155415C8FC23530F050413D0AD71317315541F6285C6F2EF05041EC51B82E19315541E17A142E2EF0504152B81E251C315541333333F332F050410AD7A3301C315541000000A037F0504148E17A741C3155417B14AE773CF0504152B81EC51C3155411F85EB4141F05041B81E851B1D315541E17A14CE45F05041EC51B8AE1D31554148E17A3448F05041D7A3700D1E315541713D0A974AF050410AD7A3701E315541666666964EF050411F85EB411F315541333333A352F050418FC2F558203155415C8FC27556F0504185EB514822315541333333B357F05041AE47E1DA22315541B81E850B59F05041D7A370ED23315541D7A3701D5BF0504185EB51F81F315541A4703DDA5BF050415C8FC2B51E315541E17A143E59F0504114AE47F11B3155410103000000010000002000000048E17A8430F05041F6285C9F383155415C8FC2B52CF0504185EB5178393155410AD7A3B028F05041CDCCCCBC3A3155418FC2F59820F0504185EB51E83C31554114AE47F11BF05041000000203E3155410AD7A3D017F0504100000030403155415C8FC29513F05041AE47E15A423155418FC2F5080FF0504185EB5178443155417B14AE3709F05041295C8F0247315541C3F5285C06F050417B14AE474831554148E17AB403F05041CDCCCCBC493155413333339303F050415C8FC2254A315541B81E852B04F05041333333734B3155419A99994905F05041B81E852B4D31554148E17A6406F05041D7A3700D4E315541AE47E1BA09F05041F6285C6F5031554114AE47610CF050416666665652315541EC51B84E19F05041CDCCCC2C5A31554152B81EB51CF05041B81E858B5C3155413D0AD77322F050419A99997961315541F6285CEF25F0504185EB5188643155417B14AE7728F05041CDCCCC7C653155417B14AE872DF05041B81E858B65315541E17A140E34F050411F85EB51653155415C8FC24538F05041C3F528AC65315541D7A370ED38F0504148E17A3459315541713D0AB738F05041333333B3523155415C8FC26538F05041EC51B82E4A31554152B81E4538F05041B81E85BB4131554152B81EE536F05041713D0AD7373155415C8FC25536F050410AD7A3E03631554148E17A8430F05041F6285C9F38315541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528EC71F0504152B81EE547315541CDCCCC1C72F050417B14AE37443155411F85EB0171F0504114AE47F13D315541EC51B8DE70F050411F85EB913B3155415C8FC27570F050415C8FC29534315541CDCCCC3C6DF05041CDCCCC9C333155413333330369F05041D7A3705D32315541EC51B8AE66F050410AD7A310313155415C8FC2A563F05041A4703DCA2E315541E17A142E60F05041C3F5287C2B3155415C8FC2555CF050417B14AE5728315541666666D657F05041E17A141E2431554148E17A5458F05041CDCCCCDC263155413D0AD7B358F05041713D0AF72831554114AE47B15BF050410AD7A3602C31554185EB51E85CF05041666666E62E31554185EB51485DF05041C3F5289C3131554103F81F545DF05041A3E6778832315541436218555DF050414B0FD79032315541436218555DF0504148A3E49B32315541C3F5286C5DF050419A99996934315541436218555DF0504126FCDCBD34315541436218555DF05041E2EB34CB343155411A95652B5DF05041BF97335635315541C3F528DC5CF050417B14AE773631554171D9FBB95CF05041B6DE1F9038315541C779A5BC5CF050414329BCAC3831554198F8BC195DF05041C1A66BE23831554108DEF0F35DF05041CABD4160393155419377BFB05EF050415B2E15CA393155415B5F0B2E60F05041F76D488B3A31554148E17A3461F05041C3F5280C3B315541713D0A0763F05041F6285C1F3C31554114AE474166F05041666666263E315541666666366BF050418FC2F518403155415C8FC2456EF0504100000070413155416666669670F05041295C8F42433155413D0AD7D370F050410AD7A31044315541295C8FE270F05041E17A14EE47315541C3F528EC71F0504152B81EE547315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277638 - 3525911
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000040000000103000000010000001900000014AE47514FF050417B14AE9796315541AE47E19A56F0504114AE477198315541B81E852B62F05041000000309B3155419A9999296EF050418FC2F5089E3155415C8FC2F579F050415C8FC2D5A031554114AE471186F050415C8FC2B5A3315541713D0A1788F050411F85EB419E3155413D0AD75389F050415C8FC2659B315541AE47E18A7FF050410AD7A32098315541EC51B8FE71F050418FC2F57893315541CDCCCC9C64F05041C3F5283C8F315541CDCCCC3C54F05041F6285C7F8A315541713D0A174DF050410AD7A38088315541B81E85DB45F050417B14AE1786315541E17A144E3FF05041295C8F9283315541AE47E1CA38F050416666667681315541D7A3700D3AF050416666669683315541295C8FD23DF050413D0AD7F38B315541E17A148E41F05041000000B08C31554114AE470144F05041B81E852B8D3155413D0AD76348F0504152B81E358E3155413D0AD7334AF05041333333A38E315541000000A04FF05041CDCCCC3C903155418FC2F5584EF050418FC2F5589631554114AE47514FF050417B14AE97963155410103000000010000001E00000014AE47B15BF050410AD7A3602C31554185EB51E85CF05041666666E62E31554185EB51485DF05041C3F5289C31315541C3F5286C5DF050419A99996934315541C3F528DC5CF050417B14AE773631554185EB51B85CF05041A4703DAA38315541295C8FD25EF050410AD7A3E03931554148E17A3461F05041C3F5280C3B315541713D0A0763F05041F6285C1F3C31554114AE474166F05041666666263E315541666666366BF050418FC2F518403155415C8FC2456EF0504100000070413155416666669670F05041295C8F42433155413D0AD7D370F050410AD7A31044315541295C8FE270F05041E17A14EE47315541C3F528EC71F0504152B81EE547315541CDCCCC1C72F050417B14AE37443155411F85EB0171F0504114AE47F13D315541EC51B8DE70F050411F85EB913B3155415C8FC27570F050415C8FC29534315541CDCCCC3C6DF05041CDCCCC9C333155413333330369F05041D7A3705D32315541EC51B8AE66F050410AD7A310313155415C8FC2A563F05041A4703DCA2E315541E17A142E60F05041C3F5287C2B3155415C8FC2555CF050417B14AE5728315541666666D657F05041E17A141E2431554148E17A5458F05041CDCCCCDC263155413D0AD7B358F05041713D0AF72831554114AE47B15BF050410AD7A3602C3155410103000000010000001F000000E17A143E59F0504114AE47F11B3155410AD7A31058F050410AD7A3001B315541D7A3706D56F05041713D0AF719315541B81E85EB54F0504185EB513819315541CDCCCC7C53F050410AD7A3201931554152B81ED54DF05041A4703D0A193155419A99995949F0504185EB51F8183155418FC2F51847F05041000000C018315541A4703D5A41F050418FC2F5B8173155413D0AD7233CF0504185EB51C81631554114AE470135F05041C3F528EC15315541AE47E1BA32F05041D7A370DD153155411F85EB4131F0504148E17AD4153155415C8FC23530F050413D0AD71317315541F6285C6F2EF05041EC51B82E19315541E17A142E2EF0504152B81E251C315541333333F332F050410AD7A3301C315541000000A037F0504148E17A741C3155417B14AE773CF0504152B81EC51C3155411F85EB4141F05041B81E851B1D315541E17A14CE45F05041EC51B8AE1D31554148E17A3448F05041D7A3700D1E315541713D0A974AF050410AD7A3701E315541666666964EF050411F85EB411F315541333333A352F050418FC2F558203155415C8FC27556F0504185EB514822315541333333B357F05041AE47E1DA22315541B81E850B59F05041D7A370ED23315541D7A3701D5BF0504185EB51F81F315541A4703DDA5BF050415C8FC2B51E315541E17A143E59F0504114AE47F11B3155410103000000010000002000000048E17A8430F05041F6285C9F383155415C8FC2B52CF0504185EB5178393155410AD7A3B028F05041CDCCCCBC3A3155418FC2F59820F0504185EB51E83C31554114AE47F11BF05041000000203E3155410AD7A3D017F0504100000030403155415C8FC29513F05041AE47E15A423155418FC2F5080FF0504185EB5178443155417B14AE3709F05041295C8F0247315541C3F5285C06F050417B14AE474831554148E17AB403F05041CDCCCCBC493155413333339303F050415C8FC2254A315541B81E852B04F05041333333734B3155419A99994905F05041B81E852B4D31554148E17A6406F05041D7A3700D4E315541AE47E1BA09F05041F6285C6F5031554114AE47610CF050416666665652315541EC51B84E19F05041CDCCCC2C5A31554152B81EB51CF05041B81E858B5C3155413D0AD77322F050419A99997961315541F6285CEF25F0504185EB5188643155417B14AE7728F05041CDCCCC7C653155417B14AE872DF05041B81E858B65315541E17A140E34F050411F85EB51653155415C8FC24538F05041C3F528AC65315541D7A370ED38F0504148E17A3459315541713D0AB738F05041333333B3523155415C8FC26538F05041EC51B82E4A31554152B81E4538F05041B81E85BB4131554152B81EE536F05041713D0AD7373155415C8FC25536F050410AD7A3E03631554148E17A8430F05041F6285C9F38315541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528EC71F0504152B81EE547315541CDCCCC1C72F050417B14AE37443155411F85EB0171F0504114AE47F13D315541EC51B8DE70F050411F85EB913B3155415C8FC27570F050415C8FC29534315541CDCCCC3C6DF05041CDCCCC9C333155413333330369F05041D7A3705D32315541EC51B8AE66F050410AD7A310313155415C8FC2A563F05041A4703DCA2E315541E17A142E60F05041C3F5287C2B3155415C8FC2555CF050417B14AE5728315541666666D657F05041E17A141E2431554148E17A5458F05041CDCCCCDC263155413D0AD7B358F05041713D0AF72831554114AE47B15BF050410AD7A3602C31554185EB51E85CF05041666666E62E31554185EB51485DF05041C3F5289C3131554103F81F545DF05041A3E6778832315541436218555DF050414B0FD79032315541436218555DF0504148A3E49B32315541C3F5286C5DF050419A99996934315541436218555DF0504126FCDCBD34315541436218555DF05041E2EB34CB343155411A95652B5DF05041BF97335635315541C3F528DC5CF050417B14AE773631554171D9FBB95CF05041B6DE1F9038315541C779A5BC5CF050414329BCAC3831554198F8BC195DF05041C1A66BE23831554108DEF0F35DF05041CABD4160393155419377BFB05EF050415B2E15CA393155415B5F0B2E60F05041F76D488B3A31554148E17A3461F05041C3F5280C3B315541713D0A0763F05041F6285C1F3C31554114AE474166F05041666666263E315541666666366BF050418FC2F518403155415C8FC2456EF0504100000070413155416666669670F05041295C8F42433155413D0AD7D370F050410AD7A31044315541295C8FE270F05041E17A14EE47315541C3F528EC71F0504152B81EE547315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278165 - 961295
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000E17A149E75E650411F85EB71372E5541000000807BE650418FC2F598382E5541C3F5284C7DE650419A9999A9382E554148E17A447FE65041CDCCCC5C382E5541A4703D5A81E65041E17A142E372E55410000007082E6504114AE47F1352E55410AD7A3A084E65041333333B3322E55410000006086E65041EC51B89E2F2E5541D7A3706D89E65041295C8FF2292E5541295C8FD28BE650415C8FC265252E5541F6285C4F8FE65041295C8F121D2E5541D7A3709D86E65041333333231B2E554152B81E457DE6504152B81E35172E55416666666666E65041666666C60C2E5541295C8FF261E65041A4703D2A0A2E5541000000A05AE65041F6285C4F032E55418FC2F56856E6504152B81ED5002E5541713D0AF751E65041000000D0FE2D5541CDCCCCEC4CE65041E17A145EFD2D554152B81EC539E65041AE47E1AA1A2E55411F85EB3163E65041666666F6322E55417B14AEF76BE65041B81E851B382E5541666666E671E650417B14AE27362E5541E17A149E75E650411F85EB71372E5541
+</a>
+
+<b>
+010600000001000000010300000001000000260000008AD1C70E8FE650418B3930041D2E5541A98428A98FE65041FC74C0311C2E5541992091248FE650416BD6DEB21A2E55411DECA96B8AE650412D5CCA7C1A2E5541B5C311AF87E65041A698A11B1A2E55416BB7D72C84E6504181D67BED182E5541B898C16473E650416ECE97A9112E5541236271FF6AE650416EE67BA90D2E55415DAF25BB63E65041108BF0D7082E5541FB795B6261E6504169FE6624072E55417B8A3E635EE650411FA1DB7B042E5541B437347B5AE65041A4BBCAC4012E5541B5A26AEE55E650412986CE0FFF2D55415A56581D51E65041E371421BFD2D5541B42527F04DE65041597E6635FC2D55413DC15FEC4DE650415A233B46FC2D5541B002084C4DE6504189276279FD2D5541D2C728AC4DE6504122A5F194FD2D55413F04F32A51E65041AA637C95FE2D5541713D0AF751E65041000000D0FE2D55418FC2F56856E6504152B81ED5002E5541000000A05AE65041F6285C4F032E554169F9BBC860E65041D3C26D13092E5541A311265A63E650414DC306FD0A2E5541CC92FF2165E65041AC623D080C2E5541ABC790FF65E6504151A61E8A0C2E55413BF93F5068E65041823EDAA50D2E55418AC1DFF568E650418A8D67F10D2E55414CE6C2E76BE65041AB3C4D490F2E554117C504996FE650412ECA7EF8102E55410E0E04A472E65041D1C4D85B122E5541FDD38CB378E650417C529A1F152E55415AF28CA17EE65041A2A7A6C7172E5541AA3E234582E65041950D6D4F192E5541A9F4AEC784E65041A757A55D1A2E554138516D7E8AE65041B1562E001C2E5541E186BE068DE650413A6875901C2E55418AD1C70E8FE650418B3930041D2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278380 - 246581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC0CE9F35041C3F5283C302D554148E17A7400F4504185EB51A8302D55410AD7A33002F45041295C8F42322D55418FC2F56802F450413D0AD793342D55415C8FC2D509F45041C3F5284C342D55418FC2F5380DF450415C8FC225362D55411F85EBB10FF4504166666686352D55415C8FC2C511F4504114AE4741322D5541EC51B84E12F45041CDCCCC1C312D5541C3F528BC12F45041A4703DEA2F2D5541F6285C0F13F450417B14AEB72E2D554152B81E6513F45041AE47E18A2D2D5541F6285CDF13F450415C8FC2A52A2D5541D7A3708D13F45041B81E85DB2A2D55415C8FC2550DF45041AE47E1DA2A2D55418FC2F5A805F45041AE47E14A2B2D5541F6285CFF00F450415C8FC2752C2D5541F6285C5FF9F35041EC51B8EE2D2D5541666666E6EAF3504148E17AA42F2D5541CDCCCC0CE9F35041C3F5283C302D5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000F649ED5DF9F35041EFAAE3EE2D2D55416B8091C6F8F350410ADA34DB2A2D5541396B0511EBF35041EFAF719F2F2D5541B16558E8F2F3504102BA44B22E2D5541B8F07D7FF3F35041E5E268A02E2D5541F649ED5DF9F35041EFAAE3EE2D2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278380 - 270680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC0CE9F35041C3F5283C302D554148E17A7400F4504185EB51A8302D55410AD7A33002F45041295C8F42322D55418FC2F56802F450413D0AD793342D55415C8FC2D509F45041C3F5284C342D55418FC2F5380DF450415C8FC225362D55411F85EBB10FF4504166666686352D55415C8FC2C511F4504114AE4741322D5541EC51B84E12F45041CDCCCC1C312D5541C3F528BC12F45041A4703DEA2F2D5541F6285C0F13F450417B14AEB72E2D554152B81E6513F45041AE47E18A2D2D5541F6285CDF13F450415C8FC2A52A2D5541D7A3708D13F45041B81E85DB2A2D55415C8FC2550DF45041AE47E1DA2A2D55418FC2F5A805F45041AE47E14A2B2D5541F6285CFF00F450415C8FC2752C2D5541F6285C5FF9F35041EC51B8EE2D2D5541666666E6EAF3504148E17AA42F2D5541CDCCCC0CE9F35041C3F5283C302D5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000F649ED5DF9F35041EFAAE3EE2D2D55416B8091C6F8F350410ADA34DB2A2D5541396B0511EBF35041EFAF719F2F2D5541B16558E8F2F3504102BA44B22E2D5541B8F07D7FF3F35041E5E268A02E2D5541F649ED5DF9F35041EFAAE3EE2D2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278623 - 298603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001400000014AE4741A6E150418FC2F5F8EC325541C3F5280CA2E15041CDCCCC7CF43255411F85EBE1A6E1504166666686F7325541D7A3709DADE15041D7A3706DEF32554100000000B2E150415C8FC2B5EB32554152B81EA5B7E1504100000070E8325541D7A3708DBBE150417B14AE67E5325541E17A14EEBDE15041C3F5283CE2325541713D0AA7C0E1504185EB5168E1325541C3F528ECC5E1504114AE47D1DF32554114AE47F1C7E15041CDCCCC9CE032554152B81EB5CCE15041A4703DAADE325541295C8F92CDE15041CDCCCC7CDB32554114AE4701CEE1504114AE47E1D7325541EC51B8DECDE1504114AE47D1D4325541C3F5282CC6E150415C8FC275D6325541EC51B8CEAFE150410AD7A300DF325541A4703D3AACE15041CDCCCC7CE13255419A999939AAE1504148E17A54E432554114AE4741A6E150418FC2F5F8EC325541
+</a>
+
+<b>
+0106000000010000000103000000010000001C00000052B81EB5CCE15041A4703DAADE3255413643E67ACDE150413B01B7D3DB325541295C8F92CDE15041CDCCCC7CDB32554114AE4701CEE1504114AE47E1D7325541EC51B8DECDE1504114AE47D1D43255416B82613CCBE1504137CF2B61D5325541C3F5282CC6E150415C8FC275D6325541B4E2B8B0C1E15041EC94082CD8325541038DB7FBB6E15041F8C8FB42DC325541CD448DEEAFE15041C8C6AE00DF325541A4703D3AACE15041CDCCCC7CE13255419A999939AAE1504148E17A54E432554114AE4741A6E150418FC2F5F8EC32554151D2100DA2E1504147AC2E7BF4325541624098EDA5E15041063AE8ECF63255411F85EBE1A6E1504166666686F7325541D7A3709DADE15041D7A3706DEF32554100000000B2E150415C8FC2B5EB325541676D8918B6E15041CCE4E755E93255411BCC0D5EB7E1504172E20A90E83255414FC173D4BAE15041876A3EF7E5325541D7A3708DBBE150417B14AE67E5325541E1493502BCE150411837FDCBE4325541E17A14EEBDE15041C3F5283CE2325541713D0AA7C0E1504185EB5168E1325541C3F528ECC5E1504114AE47D1DF32554114AE47F1C7E15041CDCCCC9CE032554152B81EB5CCE15041A4703DAADE325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279525 - 1109695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000000AD7A32002FB504166666656AA965441713D0A07FBFA5041EC51B8EEA896544152B81E35F6FA5041000000B0AB965441713D0AD7EFFA5041D7A3703DAE965441E17A14BECEFA5041EC51B89EB8965441CDCCCC3CBDFA5041AE47E1FABD9654417B14AE77AFFA5041CDCCCC7CC2965441D7A3707DAFFA5041D7A370BDC396544166666636B9FA50413D0AD773C3965441D7A3704DC6FA5041713D0A37C3965441C3F528FCD2FA504133333343C39654418FC2F5A8E1FA504114AE47E1C396544114AE4761EEFA504148E17A14C596544114AE47F1F9FA50415C8FC2C5C6965441AE47E15AFFFA5041CDCCCCDCC79654410AD7A32002FB504166666656AA965441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000003B6BF4016FB504106E47FB9CD9654410AD7A3B019FB504148E17AB4CE9654411F85EB411BFB5041EC51B82ECF965441C029268724FB50412A1730A6D2965441666666A627FB50413D0AD7C3B1965441AE47E1EA25FB5041C3F5286CB1965441CDCCCC9C1CFB504148E17A94AF9654413333333319FB50417B14AEE7AE965441684D3F2E02FB5041D8774F51AA96544132C94A3EFFFA5041C8F50AD7C7965441FD8CA4FE05FB5041ADE0B540C9965441D14F5F670CFB5041A5D062EBCA96544103B6BF4016FB504106E47FB9CD965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279525 - 3911091
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000000AD7A32002FB504166666656AA965441713D0A07FBFA5041EC51B8EEA896544152B81E35F6FA5041000000B0AB965441713D0AD7EFFA5041D7A3703DAE965441E17A14BECEFA5041EC51B89EB8965441CDCCCC3CBDFA5041AE47E1FABD9654417B14AE77AFFA5041CDCCCC7CC2965441D7A3707DAFFA5041D7A370BDC396544166666636B9FA50413D0AD773C3965441D7A3704DC6FA5041713D0A37C3965441C3F528FCD2FA504133333343C39654418FC2F5A8E1FA504114AE47E1C396544114AE4761EEFA504148E17A14C596544114AE47F1F9FA50415C8FC2C5C6965441AE47E15AFFFA5041CDCCCCDCC79654410AD7A32002FB504166666656AA965441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000003B6BF4016FB504106E47FB9CD9654410AD7A3B019FB504148E17AB4CE9654411F85EB411BFB5041EC51B82ECF965441C029268724FB50412A1730A6D2965441666666A627FB50413D0AD7C3B1965441AE47E1EA25FB5041C3F5286CB1965441CDCCCC9C1CFB504148E17A94AF9654413333333319FB50417B14AEE7AE965441684D3F2E02FB5041D8774F51AA96544132C94A3EFFFA5041C8F50AD7C7965441FD8CA4FE05FB5041ADE0B540C9965441D14F5F670CFB5041A5D062EBCA96544103B6BF4016FB504106E47FB9CD965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279666 - 56891
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000E17A14FE73F75041AE47E1BAD6945441EC51B86E63F75041295C8F52FB945441E17A14CE66F75041CDCCCC0CFD945441A4703D5A6CF7504152B81EE5FF945441D7A370ED7AF75041A4703DAAE0945441E17A144E7DF7504114AE4791DB945441295C8F7287F75041D7A370ADE0945441B81E85DB95F75041F6285CEFE7945441295C8FE297F75041EC51B8AEE2945441EC51B82E98F750419A9999E9E19454416666667694F75041295C8F02E0945441295C8F928DF7504185EB5178DC945441666666768AF75041EC51B8DEDA945441F6285C1F87F750417B14AE27D99454415C8FC27580F75041AE47E1BAD59454413D0AD70380F750410AD7A380D59454413D0AD7F37CF75041295C8F62DB945441CDCCCCBC78F750411F85EB31D9945441E17A14FE73F75041AE47E1BAD6945441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000E17A14FE73F75041AE47E1BAD6945441511DF8A966F750413013982EF4945441D02552A266F7504120947E3FF4945441B8A0CB7466F75041737A17A4F4945441FCDFC72B66F75041E37E6E45F5945441F2B2ECB763F75041D8E4CCB0FA9454413551C67D63F750418E364B31FB9454418D2E677163F750412F31EF53FB945441112B4B3F64F7504120DF65BDFB94544155325C7964F75041423424DBFB9454416051707A65F750413DCBE747FC945441BDDE900F6BF750417730893BFF9454413C04FF5B6CF7504166685BE1FF945441D7A370ED7AF75041A4703DAAE0945441E17A144E7DF7504114AE4791DB945441F222A85C7DF75041E8C39F98DB945441E4D5F45E7DF75041517FCB93DB94544148F8B7D195F7504110277FE1E79454416CE38E0A96F750414C688075E7945441295C8FE297F75041EC51B8AEE2945441EC51B82E98F750419A9999E9E19454413B3E85F896F75041B4CFF44AE1945441119E6F8095F750412B0CFF93E09454418EC789F792F750415FA4D93DDF945441295C8F928DF7504185EB5178DC945441666666768AF75041EC51B8DEDA945441F6285C1F87F750417B14AE27D99454415C8FC27580F75041AE47E1BAD59454415CA6110B80F7504134F05584D5945441C9B0C6457FF7504118C0B7EDD69454413D0AD7F37CF75041295C8F62DB945441CDCCCCBC78F750411F85EB31D9945441E17A14FE73F75041AE47E1BAD6945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>309716 - 350723
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000007000000014AE47C1880F51410AD7A3D0B84A554100000060890F514114AE4791B84A5541713D0A878A0F51410AD7A3D0B74A554152B81E858E0F51410AD7A370B74A55413D0AD783910F5141F6285CAFB84A5541A4703D0A930F5141B81E85ABB94A55418FC2F518940F5141E17A144EBA4A55417B14AEF7940F5141D7A370ADBA4A55415C8FC245950F51415C8FC2C5BA4A5541CDCCCCCC950F5141D7A370DDBA4A5541B81E857B960F51413D0AD7E3BA4A55411F85EBA1970F5141D7A370DDBA4A5541EC51B86E980F5141F6285CBFBA4A5541B81E857B980F514148E17AB4B94A5541A4703D7A990F5141F6285CEFB84A55419A9999C99B0F514152B81E35B94A55418FC2F5189E0F5141713D0A07B94A5541C3F528DCA00F514152B81E35B94A554100000070A40F51413D0AD7E3B84A5541A4703D7AA50F5141E17A14CEB74A554114AE4761A70F514148E17AC4B54A5541C3F5280CAB0F51415C8FC245B44A5541295C8F52AC0F5141E17A148EB44A55415C8FC2C5AF0F5141295C8F02B24A554100000050B10F5141000000F0B04A55418FC2F5F8B20F5141EC51B8AEAF4A55410AD7A3C0B40F5141CDCCCC7CAE4A5541EC51B8BEB90F5141E17A144EAB4A55418FC2F5F8B90F5141295C8F62AB4A5541295C8F32BA0F5141E17A148EAB4A5541CDCCCC1CBB0F5141E17A148EAC4A5541EC51B8FEBC0F5141EC51B86EAC4A55410AD7A3A0BF0F514166666616AC4A55418FC2F5A8C00F5141F6285CFFAB4A554114AE4701C10F5141EC51B8EEAB4A5541295C8F92C10F5141000000B0AB4A55417B14AE07C30F514148E17A14AB4A5541EC51B8EEC40F5141AE47E14AAA4A5541666666C6C60F5141295C8F92A94A5541B81E85FBC80F51411F85EBE1A84A55410AD7A3B0C90F51418FC2F5A8A84A55411F85EB71CC0F5141F6285C5FA74A554148E17A34D30F514148E17A74A34A554133333353D60F51415C8FC295A64A5541F6285CCFDB0F51418FC2F5C8A14A5541EC51B87EDD0F514114AE4731A04A5541CDCCCC7CDE0F51418FC2F5E89D4A554148E17AA4DF0F514148E17A749D4A5541CDCCCC7CE10F5141C3F5281C9B4A5541713D0AB7E20F514133333323944A5541CDCCCC4CE30F51410AD7A340904A5541CDCCCC1CE50F514185EB51888F4A5541EC51B8DEE70F5141666666468E4A554185EB51E8E60F5141713D0AA78D4A5541A4703DEAE50F5141000000308D4A5541F6285C9FE30F5141295C8F828C4A55411F85EB81E20F5141E17A147E8C4A554114AE4731E10F5141000000D08D4A55413D0AD703E00F5141666666B68E4A55413D0AD773DF0F51410AD7A3408F4A5541CDCCCC1CDE0F5141713D0AD7904A55413D0AD7C3DC0F5141E17A148E924A5541CDCCCC6CDC0F5141A4703DBA924A5541333333D3D90F5141B81E857B934A55410AD7A330D90F514166666696934A5541E17A145ED80F5141F6285C5F934A554100000060D70F514100000010934A5541AE47E17AD60F514148E17A34934A55419A999979D50F514185EB51A8934A5541713D0AB7D40F5141CDCCCC1C944A5541E17A147ED40F51415C8FC275944A5541D7A3701DD40F5141713D0A17954A5541AE47E17AD30F51411F85EBE1954A55410AD7A390D20F51411F85EBA1964A5541713D0AA7D10F514185EB5148974A5541C3F528ACD00F51411F85EBE1974A5541D7A3709DCF0F51410AD7A340984A5541000000B0CD0F5141333333C3984A554185EB5158CA0F51417B14AE67994A5541CDCCCCACC30F5141E17A146E9A4A554114AE4771C20F514185EB51489B4A5541A4703D1AC10F514185EB51189C4A554133333373BF0F514152B81EB59C4A5541295C8FA2BD0F51417B14AE779D4A5541CDCCCCDCBB0F514185EB51389E4A5541AE47E18AB90F5141B81E851B9F4A55410AD7A3D0B70F5141666666A69F4A5541C3F528FCB60F5141295C8FE29F4A554114AE4721B60F5141AE47E11AA04A554152B81E45B40F514133333383A04A5541B81E85BBB10F51419A999919A14A5541E17A143EAF0F5141A4703DAAA14A554148E17AC4AA0F51410AD7A370A24A5541A4703D7AA90F51410AD7A3A0A24A554185EB5198A80F5141295C8FB2A24A5541A4703D8AA70F5141EC51B8BEA24A55411F85EBE1A40F514185EB51E8A24A5541295C8F82A20F514166666606A34A554152B81EA59F0F5141295C8F12A34A5541E17A14FE9B0F5141AE47E1FAA24A5541713D0A57980F5141AE47E1FAA24A554166666636970F5141295C8FC2A64A5541713D0AE7920F5141295C8FB2A94A55410AD7A3308F0F514133333303B24A55417B14AE278E0F51417B14AEF7B14A5541666666168D0F514152B81EA5B44A5541A4703D7A8C0F514133333393B44A5541A4703DBA890F5141E17A144EB34A554114AE47C1870F5141B81E857BB24A55417B14AE67860F5141E17A142EB74A55418FC2F588880F514185EB5198B84A554114AE47C1880F51410AD7A3D0B84A5541
+</a>
+
+<b>
+010600000001000000010300000001000000400000006CA609B7E20F5141058D3623944A5541657CCC4CE30F514182EEA240904A554188DA202BE40F5141A86D52E88F4A5541CDCCCC1CE50F514185EB51888F4A55418F6E7D3CE60F5141D70120058F4A554148CFB6DEE70F5141576C65468E4A5541A18293D0E70F51412AA1403D8E4A554167C71DCAE70F5141CC1213398E4A5541EDDFFDBFE70F51413FC086328E4A554175D3DEABE70F5141244B83258E4A5541C65556A8E70F5141A04F3A238E4A554170AFB69CE70F5141C6CCB51B8E4A55415412A89AE70F5141F535611A8E4A554179E26095E70F51418953F7168E4A5541FF9E52E8E60F5141797E0BA78D4A5541C1913EEAE50F5141F45401308D4A55413DEE5B9FE30F5141F0668F828C4A5541F481267EE30F51410EED09828C4A5541A4ED1A7AE30F514129ACF9818C4A55419B5F1C68E30F5141505FB1818C4A5541856E3B03E30F5141520C1C808C4A5541B02267F4E20F51410A77E07F8C4A5541B491EB81E20F5141177B147E8C4A55411A112A6AE20F51417D0EED958C4A554114AE4731E10F5141000000D08D4A55413D0AD703E00F5141666666B68E4A5541DBBEFFC4DF0F5141E333BAF28E4A5541BD3FD873DF0F5141DC6CA4408F4A5541199959C4DE0F514105148B10904A5541CDCCCC1CDE0F5141713D0AD7904A55413D0AD7C3DC0F5141E17A148E924A55416D01E189DC0F5141B9997CAB924A55418ECACD6CDC0F514158C83DBA924A554128AC7D2EDB0F5141580CAC16934A5541333333D3D90F5141B81E857B934A55410AD7A330D90F514166666696934A5541DFFB3A8FD80F51411F34356C934A55418C45155ED80F514113AC5C5F934A554187FA553CD80F514101FDD154934A554100000060D70F514100000010934A55412617A5F1D60F5141C80C9221934A5541748DE07AD60F5141D23C7C34934A55413A5391C6D50F5141A257AA85934A55419A999979D50F514185EB51A8934A5541713D0AB7D40F5141CDCCCC1C944A55412E95F3A6D40F51414E4FED35944A5541DDF6147ED40F5141CE7DC375944A554143255B2BD40F5141D3DDD0FF944A5541D7A3701DD40F5141713D0A17954A5541AE47E17AD30F51411F85EBE1954A55410AD7A390D20F51411F85EBA1964A5541713D0AA7D10F514185EB5148974A554154A970BFD00F514178A91DD6974A554105EE29ACD00F5141AE0FEBE1974A5541413BAFD6D00F51419E4BE928984A554192D6B155D30F5141F24A0A349C4A5541CDCCCC1CD60F51411F85EBB1A04A5541000000D0D80F514148E17AC49E4A554159F157D3D80F5141D69208C79E4A5541D7A3704DDA0F5141D7A370EDA04A5541CDCCCC7CDE0F51418FC2F5E89D4A554148E17AA4DF0F514148E17A749D4A5541CDCCCC7CE10F5141C3F5281C9B4A55416CA609B7E20F5141058D3623944A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>280688 - 1726290
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F528AC55A7504133333373451F554152B81E8556A750417B14AE27431F5541A4703D3A57A75041F6285C1F401F5541D7A3709D44A7504114AE47213C1F5541333333232DA750417B14AE17371F5541D7A3702D18A7504185EB5198321F55417B14AE6717A750417B14AE17381F55418FC2F52817A750413D0AD7D3391F55413333339316A750413D0AD7F33D1F5541AE47E13A2AA75041B81E852B421F55410AD7A3D040A750413D0AD703471F5541B81E859B53A75041B81E850B4B1F5541C3F528AC55A7504133333373451F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000052B81E953CA7504148E17A24531F5541366E237B42A750417B3F5C68541F5541FCF9CCD743A7504165585E074F1F5541984D3FC73FA75041D5F6C6454E1F5541BCF4F84341A75041B99E921C471F5541AE47E13A2AA75041B81E852B421F55413333339316A750413D0AD7F33D1F5541A4703DCA14A75041B81E859B4A1F5541E17A14FE26A75041333333834E1F554152B81E953CA7504148E17A24531F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>281258 - 144467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCC5C2BBC5041666666B6CFE65441713D0A9733BC50410AD7A350CDE6544114AE47B139BC504114AE4771C8E65441295C8F723CBC50419A999939C4E65441CDCCCC1C41BC504114AE47A1BAE65441AE47E12A4DBC5041713D0A779DE65441F6285C5F50BC50416666668697E654418FC2F51856BC50419A9999898EE6544185EB514849BC5041713D0AF787E654415C8FC2B544BC5041E17A149E85E65441EC51B86E3CBC50411F85EB4181E654418FC2F56838BC50410AD7A38080E6544148E17A8425BC5041CDCCCCBCC8E65441F6285CBF23BC50411F85EB81CFE65441CDCCCC5C2BBC5041666666B6CFE65441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000063877F8B40BC5041254023CCBBE65441F187B84446BC50415D5FF527AEE65441AE47E12A4DBC5041713D0A779DE65441F6285C5F50BC50416666668697E654418FC2F51856BC50419A9999898EE6544184F7130855BC5041343FA5FD8DE654417FD97D6F49BC5041DF51210B88E65441B863E2FB44BC5041CBE67BA795E654416BF09FEF3DBC504152099553ABE65441F646CC9934BC5041E3D159F3A6E65441319415772BBC5041EC0A07D2C9E65441CDAEDAA125BC5041643E7D4CC8E6544198D929C023BC504104C9D87ECFE65441CDCCCC5C2BBC5041666666B6CFE654413C02916533BC5041957F0E5FCDE65441B839179C39BC504191CC3282C8E65441E54CEA493CBC50417037D277C4E6544163877F8B40BC5041254023CCBBE65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466188 - 3072591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466188 - 3371247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>281921 - 976957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002400000085EB511813BD5041E17A141E9DE65441D7A3702D0FBD5041EC51B83E9DE65441F6285C1F04BD5041A4703D9A9DE6544100000030FABC5041EC51B88E9DE6544114AE4751F3BC5041295C8F429DE6544148E17AB4ECBC504148E17AA49CE6544148E17AD4E6BC5041C3F5282C9BE654417B14AED7E1BC504114AE472199E65441B81E851BDDBC504114AE475196E654415C8FC215D7BC5041F6285C8F91E654413D0AD793CEBC50413D0AD7338AE6544148E17A84C7BC5041713D0AD784E654419A9999E9C2BC50417B14AEE781E65441EC51B8CEBABC5041713D0A977DE65441295C8F52B6BC50411F85EBC186E65441B81E85ABB4BC5041A4703DDA88E654419A999949BEBC50419A99997990E654418FC2F5B8C0BC5041295C8FA292E654411F85EB31C1BC5041713D0AA793E65441EC51B8FEC0BC5041EC51B8FE94E6544185EB5128BFBC50410AD7A3E097E65441AE47E11ABDBC5041A4703D4A99E65441A4703D5ABEBC5041AE47E1CA9BE65441F6285C0FC6BC50410AD7A3F0A4E65441EC51B84ECABC5041000000E0A8E6544133333393CEBC5041D7A3700DACE65441B81E850BD6BC5041000000B0B0E654419A999919DDBC50418FC2F528B4E6544185EB5168E3BC5041E17A141EB6E6544185EB5178F0BC50410AD7A300B9E65441E17A147EF7BC5041D7A3703DABE654410AD7A370FDBC5041AE47E1FA9FE65441EC51B8FE09BD5041C3F5286C9FE65441E17A14BE12BD5041CDCCCCCC9EE65441F6285C9F13BD504148E17A249DE6544185EB511813BD5041E17A141E9DE65441050000005C8FC245BEBC504152B81E659BE654415C8FC225BEBC50411F85EBE199E65441D7A3709DBFBC50410AD7A3C099E65441AE47E1BABFBC50415C8FC2459BE654415C8FC245BEBC504152B81E659BE65441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000F507727EF0BC5041EF2A99FCB8E65441D569CAE2F6BC5041AC6F3F67BAE65441FCE985DBF9BC5041FD0B510FBBE65441BA1083C1FABC50416699ED5EBBE6544118D4084102BD5041388048C1BDE654412173FAB612BD5041452D4ECD9EE654410B2B64610BBD50414BA3EB529FE65441EC51B8FE09BD5041C3F5286C9FE654410C0E4F7BFDBC50415E0068FA9FE6544184AFBE18F3BC5041E828D7DAB3E65441F507727EF0BC5041EF2A99FCB8E65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282448 - 229672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000052B81E953CB350413D0AD793B8EB544114AE47413CB3504166666686AFEB5441F6285CEF35B350410AD7A3C0AEEB5441F6285CDF28B350410AD7A330AEEB54419A99991928B350410AD7A3A0ADEB54410AD7A3F028B35041666666469DEB5441C3F528FC1EB35041B81E851B9DEB5441AE47E1FA12B350419A9999399CEB54416666664604B35041B81E859B9AEB54417B14AE0702B35041CDCCCC5C9AEB54418FC2F50801B350415C8FC2459AEB54419A999989DFB250413333334397EB54410AD7A370DEB250410000003098EB5441AE47E16ADAB250419A9999A9BCEB5441CDCCCC4CDBB250415C8FC2B5BDEB5441EC51B82EE1B250413D0AD7E3BDEB54419A999949F1B2504114AE4741BFEB5441A4703DBAFEB25041CDCCCC2CC1EB544148E17AA431B35041295C8F12C1EB5441EC51B84E39B350418FC2F528C0EB54411F85EB113DB35041AE47E12AC0EB544152B81E953CB350413D0AD793B8EB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000122C6AE428B35041B67664349EEB5441ACCB416018B3504191BD25629DEB54413F00CAF1FBB25041AF0EA9D099EB544153D29AA7FBB250411D2DF3DF9AEB54417AF588AD28B350417D333471A1EB5441D7C57BCD28B35041A710CDF29FEB54419B3C62D228B350414E1668939FEB5441B53114DD28B35041818D33C39EEB5441BB80F6E128B3504154771F649EEB5441CE5781E328B350418A0219469EEB5441122C6AE428B35041B67664349EEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282448 - 396109
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000052B81E953CB350413D0AD793B8EB544114AE47413CB3504166666686AFEB5441F6285CEF35B350410AD7A3C0AEEB5441F6285CDF28B350410AD7A330AEEB54419A99991928B350410AD7A3A0ADEB54410AD7A3F028B35041666666469DEB5441C3F528FC1EB35041B81E851B9DEB5441AE47E1FA12B350419A9999399CEB54416666664604B35041B81E859B9AEB54417B14AE0702B35041CDCCCC5C9AEB54418FC2F50801B350415C8FC2459AEB54419A999989DFB250413333334397EB54410AD7A370DEB250410000003098EB5441AE47E16ADAB250419A9999A9BCEB5441CDCCCC4CDBB250415C8FC2B5BDEB5441EC51B82EE1B250413D0AD7E3BDEB54419A999949F1B2504114AE4741BFEB5441A4703DBAFEB25041CDCCCC2CC1EB544148E17AA431B35041295C8F12C1EB5441EC51B84E39B350418FC2F528C0EB54411F85EB113DB35041AE47E12AC0EB544152B81E953CB350413D0AD793B8EB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000122C6AE428B35041B67664349EEB5441ACCB416018B3504191BD25629DEB54413F00CAF1FBB25041AF0EA9D099EB544153D29AA7FBB250411D2DF3DF9AEB54417AF588AD28B350417D333471A1EB5441D7C57BCD28B35041A710CDF29FEB54419B3C62D228B350414E1668939FEB5441B53114DD28B35041818D33C39EEB5441BB80F6E128B3504154771F649EEB5441CE5781E328B350418A0219469EEB5441122C6AE428B35041B67664349EEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282544 - 255772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000030000000103000000020000005900000033333383BBA650411F85EBC1C5DD54418FC2F548C0A65041295C8FC2C7DD5441CDCCCCFCC6A650410AD7A380CADD5441713D0AA7CAA6504114AE47A1CBDD5441000000E0CAA65041F6285CDFCADD544148E17A14CCA650418FC2F538CBDD5441666666D6CBA65041E17A14FECBDD544148E17A74CCA65041EC51B82ECCDD544185EB51E8CFA65041AE47E15ACDDD5441AE47E1DAD4A65041D7A3701DCFDD544100000010D3A650410AD7A390CBDD54419A999979D4A6504166666616C8DD54418FC2F568D7A650419A999969C3DD5441C3F528ACD3A65041A4703D7AC1DD54419A999949D2A65041E17A141EBCDD54418FC2F5A8CAA6504114AE4791B9DD5441D7A3707DC5A65041CDCCCCECB7DD5441C3F5286CC3A650410AD7A330B7DD544185EB51F8BBA65041E17A14BEB3DD54411F85EBE1B8A65041295C8F52B2DD5441C3F528BCB1A6504148E17A44AEDD54413D0AD723ACA65041AE47E17AABDD5441AE47E1EAA4A6504148E17A84A7DD5441713D0AC7A1A65041295C8F42A6DD544114AE47B19EA65041F6285C0FA5DD5441B81E851B9CA650418FC2F558A4DD544152B81E8599A650418FC2F5A8A3DD5441713D0A5797A65041D7A3702DA3DD54417B14AEC794A65041CDCCCCBCA2DD544185EB513892A650417B14AE57A2DD54418FC2F5788DA65041F6285CCFA1DD54415C8FC2B583A6504148E17A84A0DD5441295C8FA27EA65041713D0A17A0DD544152B81E8578A650411F85EB819FDD54415C8FC2B571A65041713D0A579EDD5441E17A14EE67A65041E17A149E9CDD5441AE47E17A5EA650411F85EB319ADD5441295C8FD25BA65041333333D398DD5441295C8F5258A650415C8FC28597DD5441E17A144E4FA6504148E17A6493DD54417B14AE274DA650411F85EBD194DD5441E17A149E4DA6504114AE47C197DD544148E17A4455A65041333333B39CDD5441B81E859B5CA650415C8FC205A0DD544185EB51B864A65041B81E85CBA0DD544185EB51F868A65041333333F3A0DD54411F85EB116EA6504114AE4781A4DD54418FC2F5E86CA650410AD7A370A7DD5441B81E85AB6AA65041333333D3A7DD5441A4703D6A65A65041CDCCCC5CA7DD544185EB51285FA6504152B81EE5A5DD5441E17A146E57A65041666666E6A6DD544185EB51C84FA650419A999959A4DD5441CDCCCC6C44A650411F85EBA19EDD54417B14AE8739A65041C3F5289C99DD544152B81E552FA65041666666E695DD54413D0AD7032DA650415C8FC2F591DD54415C8FC2C52AA65041666666068FDD5441713D0A772AA65041EC51B82E90DD5441AE47E19A27A650411F85EB418FDD54413D0AD73323A650419A9999298BDD5441713D0A671CA650413D0AD72386DD54418FC2F53816A65041666666A67FDD54411F85EBE10EA650411F85EB6177DD5441713D0A370BA65041F6285C2F76DD54416666666608A650419A9999D977DD54418FC2F5280BA650413D0AD7637BDD544152B81E550CA65041C3F5287C7DDD5441A4703DFA12A650417B14AE4783DD54410AD7A30019A65041A4703D8A89DD54419A9999791BA650418FC2F5C88CDD544185EB51B81EA65041F6285C7F91DD54418FC2F5E820A65041A4703D8A93DD54419A9999C92DA65041295C8FC298DD5441D7A370FD38A650418FC2F5789DDD544185EB51B841A6504185EB5108A2DD5441333333734AA650413D0AD733A6DD54410AD7A3F050A65041CDCCCCACA8DD5441EC51B8BE58A65041713D0AD7AADD5441000000A060A65041A4703D8AACDD5441E17A14CE66A65041AE47E18AADDD544148E17A746EA650415C8FC215AEDD54413D0AD7A375A650411F85EB01AEDD544148E17A9479A650411F85EB01AEDD544114AE47B181A6504152B81EB5AFDD54417B14AE5790A65041F6285C2FB3DD5441666666E69EA65041295C8F82B7DD5441D7A3709DACA6504133333363BDDD544133333383BBA650411F85EBC1C5DD54410B0000005C8FC20575A650410AD7A370A7DD5441EC51B82E76A65041A4703D5AA5DD5441CDCCCC5C7CA650418FC2F548A7DD54413333331381A65041CDCCCC0CA6DD5441A4703D6A88A65041F6285C6FA6DD54410AD7A3208DA6504148E17AC4ABDD54410AD7A3808AA6504100000050ADDD544114AE47F185A65041B81E85EBABDD54415C8FC2D57EA650415C8FC2D5A9DD54419A99995979A65041A4703D9AA9DD54415C8FC20575A650410AD7A370A7DD544101030000000100000047000000E17A145E92A65041A4703D3AA1DD54415C8FC2F594A650410AD7A3A0A1DD5441EC51B88E97A65041295C8F12A2DD54419A9999C999A6504114AE4791A2DD5441666666669CA6504133333343A3DD5441C3F5280C9FA65041D7A370FDA3DD54410AD7A330A2A6504166666636A5DD544166666666A5A65041F6285C7FA6DD54419A9999A9ACA65041B81E857BAADD54413D0AD743B2A6504166666646ADDD544152B81E65B9A650411F85EB51B1DD54410AD7A370BCA6504185EB51B8B2DD54418FC2F5D8C3A650415C8FC225B6DD54418FC2F5D8C5A65041B81E85DBB6DD544152B81E05CBA6504100000080B8DD5441295C8F02CEA650410AD7A390B9DD5441333333D3D8A65041D7A3701DBDDD544148E17AB4E1A650410AD7A340C0DD544185EB5158E9A650410AD7A330C3DD544148E17AD4EDA650419A9999C9C4DD5441AE47E10AF0A650411F85EBC1C5DD5441AE47E1AAF3A650413D0AD753C7DD544148E17A74F7A6504114AE47B1C3DD544133333323F6A65041E17A143EC0DD5441713D0AA7F0A65041F6285CDFBCDD5441EC51B83EECA65041295C8F92BBDD5441C3F5282CEBA650413D0AD733BBDD54417B14AE97E9A6504152B81E45BADD5441F6285CCFE7A65041F6285C8FB9DD54410AD7A310E6A65041713D0A17B9DD5441713D0AD7E3A65041333333F3B8DD54413D0AD773E1A65041295C8F72B9DD5441CDCCCC6CDFA650411F85EBE1B9DD5441713D0A57DDA65041AE47E1EAB9DD5441EC51B8FEDAA650410AD7A3D0B9DD544166666636D8A650418FC2F588B9DD54413D0AD7F3D5A65041A4703D0AB9DD544133333303D1A650413D0AD7E3B7DD5441666666D6C7A650413D0AD7F3B5DD544166666696C5A65041713D0AF7B4DD54411F85EB11C3A6504100000060B3DD54419A999969BEA65041295C8FF2A6DD544185EB5108B5A6504100000020A2DD54413D0AD7E3B3A6504185EB51D8A1DD544166666606B3A65041B81E85ABA1DD544166666626AFA65041B81E85EBA1DD5441295C8FE2A8A6504185EB51A89FDD54417B14AE87A6A650411F85EBC19EDD544166666656A4A650419A9999399EDD544133333333A2A650415C8FC2C59DDD5441A4703D1AA0A65041B81E850B9DDD54410AD7A3909DA650411F85EB519CDD544148E17A549AA65041CDCCCCFC9BDD5441D7A3701D98A6504152B81EE59BDD54410AD7A3B095A650413D0AD7139CDD5441C3F5285C91A650411F85EB419CDD544152B81E758EA65041295C8F529CDD544152B81E658AA65041333333039BDD544114AE47B184A650410AD7A3809ADD5441C3F5282C7AA6504152B81ED598DD54410000005075A65041D7A3704D98DD5441333333636CA65041CDCCCC4C97DD544148E17A7469A650411F85EBB196DD54415C8FC22569A6504152B81EE597DD54416666663668A65041666666869BDD5441713D0AE771A65041B81E853B9DDD5441AE47E1AA78A6504148E17A649EDD5441C3F528BC7EA6504185EB51F89EDD544148E17AD483A650415C8FC2659FDD5441C3F5289C8DA6504114AE47B1A0DD5441E17A145E92A65041A4703D3AA1DD544101030000000100000022000000A4703D4AC4A65041CDCCCCBCA8DD5441666666C6BEA650410AD7A3D0A5DD544152B81E35C1A6504133333373AADD5441AE47E1DAC2A65041713D0AF7AEDD5441295C8F92C3A65041C3F528DCB1DD54410AD7A380C4A65041666666F6B2DD544133333373C5A6504100000090B2DD5441E17A145EC6A65041295C8FB2B3DD5441D7A3704DC8A650417B14AE57B3DD54411F85EBA1CCA65041C3F528FCB4DD5441295C8F02D1A65041D7A3700DB6DD54419A999919D7A65041E17A140EB7DD544100000010DBA65041CDCCCC1CB8DD544185EB5118E0A6504100000090B7DD5441A4703D7AE4A650417B14AE87B7DD5441EC51B8BEE7A6504114AE47F1B7DD5441713D0AB7E9A65041E17A14AEB8DD544114AE47E1EBA65041D7A370ADB9DD5441B81E85CBF1A6504166666616BBDD5441666666F6F6A65041E17A140EBFDD5441E17A149EF5A65041EC51B8BEBCDD5441EC51B86EF4A65041D7A370CDBADD54419A999919F3A65041D7A3705DB9DD54419A999969F0A65041F6285C6FB7DD54415C8FC2B5EDA6504148E17A94B5DD5441AE47E18AE9A6504152B81E75B3DD5441713D0AB7E7A650413D0AD7A3B2DD54411F85EB51E0A65041C3F528FCAFDD5441A4703DEADCA6504148E17AF4AEDD54419A999999D7A650410AD7A330AEDD544185EB5108D4A650411F85EB91ADDD5441713D0A37D1A65041333333B3ACDD544148E17AD4CAA6504114AE4701AADD5441A4703D4AC4A65041CDCCCCBCA8DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000D5D4C997E8A6504106169DE6C2DD544199205258E9A6504116D3A330C3DD54418CCC7AD4EDA65041544599C9C4DD54419B72E20AF0A650411017EBC1C5DD5441FCD5E488F2A65041E5FA3ED6C6DD5441AE47E1AAF3A650413D0AD753C7DD544148E17A74F7A6504114AE47B1C3DD5441E21422E7F6A650416251263FC2DD54417EFD3123F6A650414F5B143EC0DD54418E6645C0F3A650414137B9C6BEDD5441713D0AA7F0A65041F6285CDFBCDD5441D8D9BF75EDA6504175764CEEBBDD54413EA5B93EECA65041DCFC8F92BBDD54410C5EB212ECA65041925B5F83BBDD5441C3F5282CEBA650413D0AD733BBDD54417B14AE97E9A6504152B81E45BADD5441F6285CCFE7A65041F6285C8FB9DD5441EA3F7C09E7A650417D9E1597B9DD54413524AFF7E3A65041AFDAC3B5B9DD5441592B9546E2A6504102BDA414BADD544133333323E1A6504148E17A54BADD5441A4703DFADEA650410AD7A3D0BADD5441DBB2ABF4DDA65041CD5E2608BBDD5441D3AD1EA5DCA6504111C95C4FBBDD5441640840C8DBA650413EABE059BBDD544114AE47C1DAA6504166666666BBDD5441B5AC705DD8A650416FA4703DBBDD5441F6A433D3D8A650414F29701DBDDD5441CC11257BDCA65041DE442168BEDD544148E17AB4E1A650410AD7A340C0DD5441D5D4C997E8A6504106169DE6C2DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967937 - 56877
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E00000000000020BCD350410000001059335541666666E6BBD35041C3F5288C56335541AE47E1BABDD35041A4703D6A4F335541C3F5280CC1D35041713D0A7742335541E17A141EC0D35041A4703DEA41335541713D0A47BDD3504148E17AC44B3355415C8FC2F5A1D35041000000403D335541295C8F429ED35041295C8FB23B33554152B81EF59DD350415C8FC20543335541295C8FC29ED3504152B81E754A335541666666269FD35041295C8F2255335541F6285C6FA0D3504185EB51F855335541EC51B8CEA4D350419A999989573355415C8FC2C5ADD350413D0AD7735A335541B81E853BB1D350413D0AD7C35B335541B81E85FBB1D3504152B81E555D33554152B81E05B4D3504185EB51485D335541E17A142EAED3504114AE47B16D335541F6285C2FB9D35041713D0A17713355413D0AD7F3BDD3504133333353633355418FC2F558BED35041A4703DCA6233554100000090B5D350419A9999F95D335541CDCCCCDCB4D3504185EB51685C335541295C8FB2B4D3504114AE47E154335541CDCCCC5CB5D3504114AE47E154335541666666F6B5D350410AD7A3E05833554152B81E65B6D350410AD7A3705D33554152B81EE5BED35041CDCCCC0C623355415C8FC2A5BFD350417B14AE076133554100000020BCD350410000001059335541
+</a>
+
+<b>
+01060000000100000001030000000100000053000000FEC8373FA3D3504170DC61FA5633554157415B42A3D35041C5E581FB5633554139F254E4A4D35041558DA090573355414361B430A8D3504176852DA35833554196218E05ABD35041068DDD8E5933554156F71983ACD350419E2DED0A5A3355415C8FC2C5ADD350413D0AD7735A33554185D592EFAED3504108AACFE45A3355419515841EAFD350411E3B9EF65A335541B81E853BB1D350413D0AD7C35B335541B81E85FBB1D3504152B81E555D33554152B81E05B4D3504185EB51485D335541236975F6B3D350415C7684715D33554194EF12F4B3D35041C5DA37785D335541A523FFFBB1D350419E15A40063335541F66B8FBDB0D3504138E86C7F663355412936CDB4B0D35041365D099866335541A9DB3C4AB0D35041F94979C3673355410A59A736B0D35041C9E880FA67335541E5267733B0D35041235D760368335541731284D1AFD35041EB9EB116693355412CA6706DAFD35041CE71E62F6A33554130706559AFD35041AFCB38686A335541255D2D2FAED35041666A32AE6D33554112778886AED35041EC6796CC6D33554145C165B7AED35041B650ACDB6D33554136D549F5AFD35041FB3DD03D6E335541D1656B31B9D350410EF81711713355413D0AD7F3BDD3504133333353633355418FC2F558BED35041A4703DCA62335541CBFFE871B8D35041112C0B8E5F335541B5206B86B5D35041904DF0005E33554190B51053B5D35041BE5426715D335541CDCCCCDCB4D3504185EB51685C3355412835A3B4B4D35041DB360F4055335541E25D49AFB4D35041F63C64DA5433554193E6CD26B5D35041F63C64DA54335541DDC28628B5D3504114AE47E154335541CDCCCC5CB5D3504114AE47E154335541864555ABB5D35041CDB881EC563355410DB01EECB5D35041398C178658335541CF5D45F1B5D35041FFC077BE58335541666666F6B5D350410AD7A3E058335541555FE54FB6D35041D4BBBE905C335541BDFE4173B6D35041FDC798765D335541B188EC80BAD350419DA6A0A15F335541F15DA3E0BED35041C688BF01623355415C8FC2A5BFD350417B14AE076133554100000020BCD3504100000010593355415AE5D50ABCD35041F1A26D23583355415E23AF03BCD350414FD57DD35733554153B187EEBBD35041E42F09E7563355410BA5C4EABBD350416E73FCBC56335541666666E6BBD35041C3F5288C56335541AE47E1BABDD35041A4703D6A4F335541C3F5280CC1D35041713D0A77423355412998545FC0D35041A337D4104233554137261718C0D3504126DB04FF41335541713D0A47BDD3504148E17AC44B3355412444431FBDD350413F4857AF4B33554137FA9A16BDD35041D57ABFCB4B3355419F5B85AEADD350410E2D557C433355415C75DB98A0D3504117309AAD3C335541B9135BC69FD350410CEA46553C335541FEBD548D9ED3504101FBEED13B3355410E5A3E769ED35041FE043ED43B3355410CA06D409ED3504109432EE63B33554126E5EC369ED35041FF844ACC3C3355410377A0049ED3504160AE438E413355418C683B109ED35041E8A1F200443355416B6EC5119ED35041D62C350F443355416F7B887B9ED35041B80912E347335541AD45F4BD9ED35041FB1D108E49335541F15C72FA9ED350415EF6399B4F335541CF7F911D9FD3504168F1BD8B53335541CF7F911D9FD35041A9F4C33054335541666666269FD35041295C8F2255335541546751389FD350411B05342E553355417E0834ABA0D3504133F3C50D56335541B12DEB01A1D350415922DC2C56335541785764FDA2D350410EC7C8E256335541013E4F38A3D35041E5DAE7F756335541FEC8373FA3D3504170DC61FA56335541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283984 - 237037
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000021000000F6285CFFF7365141000000409403554166666666FA3651411F85EB2187035541B81E85ABFA36514185EB51A885035541F6285CCFF0365141713D0AF784035541EC51B84EEB365141EC51B88E840355419A999909E63651410000000084035541A4703D5AE23651418FC2F5F8830355419A9999E9E13651417B14AEF783035541A4703D5AE0365141AE47E11A84035541B81E851BDE36514185EB51A884035541F6285C3FDD365141A4703DDA84035541EC51B87EDA36514152B81EB585035541F6285CAFD83651418FC2F50886035541000000F0D5365141A4703D7A870355415C8FC235D93651413D0AD76392035541F6285C8FDC365141E17A14CE9D03554148E17A34E336514100000090AA0355413D0AD783E6365141C3F5282CA40355419A999979E9365141C3F5283CA5035541C3F528ECF3365141CDCCCCFCA9035541A4703DCAF3365141000000B0AA035541D7A370EDFF365141AE47E13AAF0355419A99995900375141D7A3708DAA035541E17A142E0037514133333313A5035541713D0AE7003751411F85EB51A00355411F85EBE102375141000000509A0355418FC2F578F8365141D7A370AD97035541D7A370CDF73651410AD7A3909803554114AE4761F6365141D7A370FD970355417B14AE97F5365141D7A3700D97035541D7A370CDF53651418FC2F59895035541666666B6F63651418FC2F5A894035541F6285CFFF736514100000040940355410E000000E17A14BEE4365141EC51B8FE91035541B81E85EBE5365141666666769003554114AE4711E936514114AE47C18F035541B81E855BEF36514152B81E758E03554133333333F636514152B81E558C0355417B14AEA7F63651419A9999598D035541713D0A87F3365141F6285C7F8E0355419A999919EE3651419A99995992035541CDCCCC8CED365141C3F528EC930355419A9999A9EB365141295C8F52960355413D0AD7C3E736514185EB519899035541C3F5283CE63651411F85EBE19A035541D7A3704DE23651410AD7A3F099035541E17A14BEE4365141EC51B8FE91035541
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000024D5B5F5FE3651413D942ADEAE0355411968E990FF365141BF5A5E88A9035541CB03BF2E003751414CDBD00EA503554105685669003751415D23358DA3035541CF9842E300375141E79ED850A003554158BB4E2A013751417CFBD2859F035541D6F65C1A02375141284179AD9C035541078376DB023751416E5F175C9A035541F2D42EBA02375141A1924A4F9A0355414D98593701375141B2B92AFB9B035541A59D1C58FF36514110C9F3ED9A035541CC514F86FF3651419C0FE29899035541BCBB2307FA36514100C9918B98035541F3C92858F83651415FF0B6BC98035541EC3528C8F73651414745D391980355419A7D0943F7365141EBB5105C98035541C72A08FEF6365141CD3C98AC99035541F825538DF6365141D9A23D019C0355410DDD6EA9F5365141FFE6AAB7A0035541F7242C98F43651415FDB9367A60355411139DECFF3365141BF371BB2AA0355410E803A2CF4365141EC2AACD4AA0355418B9D0BF9F536514103812281AB03554117A29E6AF63651413AEDA3ABAB035541EE2D7E7DF63651412226B4B2AB0355414C43C1D8FC365141EA43B613AE0355417C603A93FD3651413F0A8059AE035541DD2197B1FD3651410E05DD64AE035541E5030DDAFD365141FA7D0174AE03554124D5B5F5FE3651413D942ADEAE035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283984 - 372666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000021000000F6285CFFF7365141000000409403554166666666FA3651411F85EB2187035541B81E85ABFA36514185EB51A885035541F6285CCFF0365141713D0AF784035541EC51B84EEB365141EC51B88E840355419A999909E63651410000000084035541A4703D5AE23651418FC2F5F8830355419A9999E9E13651417B14AEF783035541A4703D5AE0365141AE47E11A84035541B81E851BDE36514185EB51A884035541F6285C3FDD365141A4703DDA84035541EC51B87EDA36514152B81EB585035541F6285CAFD83651418FC2F50886035541000000F0D5365141A4703D7A870355415C8FC235D93651413D0AD76392035541F6285C8FDC365141E17A14CE9D03554148E17A34E336514100000090AA0355413D0AD783E6365141C3F5282CA40355419A999979E9365141C3F5283CA5035541C3F528ECF3365141CDCCCCFCA9035541A4703DCAF3365141000000B0AA035541D7A370EDFF365141AE47E13AAF0355419A99995900375141D7A3708DAA035541E17A142E0037514133333313A5035541713D0AE7003751411F85EB51A00355411F85EBE102375141000000509A0355418FC2F578F8365141D7A370AD97035541D7A370CDF73651410AD7A3909803554114AE4761F6365141D7A370FD970355417B14AE97F5365141D7A3700D97035541D7A370CDF53651418FC2F59895035541666666B6F63651418FC2F5A894035541F6285CFFF736514100000040940355410E000000E17A14BEE4365141EC51B8FE91035541B81E85EBE5365141666666769003554114AE4711E936514114AE47C18F035541B81E855BEF36514152B81E758E03554133333333F636514152B81E558C0355417B14AEA7F63651419A9999598D035541713D0A87F3365141F6285C7F8E0355419A999919EE3651419A99995992035541CDCCCC8CED365141C3F528EC930355419A9999A9EB365141295C8F52960355413D0AD7C3E736514185EB519899035541C3F5283CE63651411F85EBE19A035541D7A3704DE23651410AD7A3F099035541E17A14BEE4365141EC51B8FE91035541
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000024D5B5F5FE3651413D942ADEAE0355411968E990FF365141BF5A5E88A9035541CB03BF2E003751414CDBD00EA503554105685669003751415D23358DA3035541CF9842E300375141E79ED850A003554158BB4E2A013751417CFBD2859F035541D6F65C1A02375141284179AD9C035541078376DB023751416E5F175C9A035541F2D42EBA02375141A1924A4F9A0355414D98593701375141B2B92AFB9B035541A59D1C58FF36514110C9F3ED9A035541CC514F86FF3651419C0FE29899035541BCBB2307FA36514100C9918B98035541F3C92858F83651415FF0B6BC98035541EC3528C8F73651414745D391980355419A7D0943F7365141EBB5105C98035541C72A08FEF6365141CD3C98AC99035541F825538DF6365141D9A23D019C0355410DDD6EA9F5365141FFE6AAB7A0035541F7242C98F43651415FDB9367A60355411139DECFF3365141BF371BB2AA0355410E803A2CF4365141EC2AACD4AA0355418B9D0BF9F536514103812281AB03554117A29E6AF63651413AEDA3ABAB035541EE2D7E7DF63651412226B4B2AB0355414C43C1D8FC365141EA43B613AE0355417C603A93FD3651413F0A8059AE035541DD2197B1FD3651410E05DD64AE035541E5030DDAFD365141FA7D0174AE03554124D5B5F5FE3651413D942ADEAE035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284620 - 3099307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003100000052B81E25E93D5141333333639705554100000040EC3D51413D0AD7B393055541295C8FB2EC3D514152B81E45920555413D0AD7A3E73D5141666666668D055541CDCCCCDCE63D51418FC2F5A8800555418FC2F528E63D51413333334375055541C3F5287CE53D51410AD7A3507105554114AE4741E43D5141295C8FE26A0555417B14AE17E33D5141295C8F82670555417B14AEB7E13D51413D0AD77364055541AE47E15AE03D514148E17A0462055541B81E851BDD3D51415C8FC2456105554148E17AF4DA3D51417B14AE4760055541666666F6D93D51419A9999095F05554133333363D83D5141E17A144E5C05554148E17A94D43D51413D0AD7D35805554185EB51F8CF3D5141295C8F625605554152B81EB5CD3D5141F6285C2F55055541B81E857BC93D5141333333B35205554166666656C43D514152B81E154F055541AE47E13ABD3D51417B14AED748055541D7A370BDBB3D51419A999959480555410AD7A3A0BA3D5141E17A14EE520555411F85EB21BA3D51413D0AD7335405554133333303BA3D5141A4703D2A55055541EC51B8DEB93D5141C3F5283C59055541D7A3706DBA3D514185EB51185C0555419A999959BB3D51417B14AE775F055541A4703DCABC3D51410AD7A3106605554185EB5108BD3D5141D7A3702D69055541E17A141EBD3D51411F85EB016C05554148E17AF4BC3D51418FC2F5F86E055541713D0AF7BC3D514114AE47C16F055541D7A370EDBC3D51419A9999B97205554100000090BC3D5141A4703D0A760555415C8FC265BC3D51418FC2F5787A05554133333393BC3D5141A4703D8A7D0555418FC2F5C8BC3D5141B81E85BB7F055541C3F5283CBD3D5141D7A3701D810555417B14AEF7BD3D5141A4703DDA830555413D0AD7D3BE3D5141713D0A8786055541D7A370FDBF3D51411F85EBD188055541CDCCCC1CC13D5141A4703DBA8A05554114AE47E1C23D51413D0AD7638A0555410AD7A350C33D514152B81E558A055541333333A3CA3D5141295C8FD28D055541B81E85DBD43D5141AE47E14A920555410AD7A350E63D5141713D0AD79A05554152B81E25E93D51413333336397055541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A999979F53D5141F6285CEF720555413D0AD7F3F33D51410000004066055541B81E85ABF03D51416666660666055541199FFD60EB3D514142280B4D65055541E75F03BAE93D5141B4ED2FE86205554121E7C049E03D5141076923E761055541E9247A29E33D5141A1A43AB667055541857EFF4EE53D5141834FB5A86F055541F8EE572EE63D514110F68A9A7505554188EA7483E63D5141A42C2E687B055541AD96979EE73D5141BC20D4758D055541295C8FB2EC3D514152B81E45920555415A01A6C7F13D5141A580359196055541708B8FE0F33D51415B102D5798055541D7A370EDF83D514148E17AA49B055541F6285C2FFF3D5141C3F5280C9F05554166666666FF3D51415C8FC2259F055541922DB120FE3D51411EA931AF990555419A0322A6FD3D5141169752FC97055541769C61D7FC3D51413E8B1228950555415F838CA6F93D5141FAB743798B05554133333383F83D514152B81E058805554133333333F73D514152B81E45830555417B14AE47F63D514152B81E357D0555419A999979F53D5141F6285CEF72055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284620 - 3454392
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003100000052B81E25E93D5141333333639705554100000040EC3D51413D0AD7B393055541295C8FB2EC3D514152B81E45920555413D0AD7A3E73D5141666666668D055541CDCCCCDCE63D51418FC2F5A8800555418FC2F528E63D51413333334375055541C3F5287CE53D51410AD7A3507105554114AE4741E43D5141295C8FE26A0555417B14AE17E33D5141295C8F82670555417B14AEB7E13D51413D0AD77364055541AE47E15AE03D514148E17A0462055541B81E851BDD3D51415C8FC2456105554148E17AF4DA3D51417B14AE4760055541666666F6D93D51419A9999095F05554133333363D83D5141E17A144E5C05554148E17A94D43D51413D0AD7D35805554185EB51F8CF3D5141295C8F625605554152B81EB5CD3D5141F6285C2F55055541B81E857BC93D5141333333B35205554166666656C43D514152B81E154F055541AE47E13ABD3D51417B14AED748055541D7A370BDBB3D51419A999959480555410AD7A3A0BA3D5141E17A14EE520555411F85EB21BA3D51413D0AD7335405554133333303BA3D5141A4703D2A55055541EC51B8DEB93D5141C3F5283C59055541D7A3706DBA3D514185EB51185C0555419A999959BB3D51417B14AE775F055541A4703DCABC3D51410AD7A3106605554185EB5108BD3D5141D7A3702D69055541E17A141EBD3D51411F85EB016C05554148E17AF4BC3D51418FC2F5F86E055541713D0AF7BC3D514114AE47C16F055541D7A370EDBC3D51419A9999B97205554100000090BC3D5141A4703D0A760555415C8FC265BC3D51418FC2F5787A05554133333393BC3D5141A4703D8A7D0555418FC2F5C8BC3D5141B81E85BB7F055541C3F5283CBD3D5141D7A3701D810555417B14AEF7BD3D5141A4703DDA830555413D0AD7D3BE3D5141713D0A8786055541D7A370FDBF3D51411F85EBD188055541CDCCCC1CC13D5141A4703DBA8A05554114AE47E1C23D51413D0AD7638A0555410AD7A350C33D514152B81E558A055541333333A3CA3D5141295C8FD28D055541B81E85DBD43D5141AE47E14A920555410AD7A350E63D5141713D0AD79A05554152B81E25E93D51413333336397055541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A999979F53D5141F6285CEF720555413D0AD7F3F33D51410000004066055541B81E85ABF03D51416666660666055541199FFD60EB3D514142280B4D65055541E75F03BAE93D5141B4ED2FE86205554121E7C049E03D5141076923E761055541E9247A29E33D5141A1A43AB667055541857EFF4EE53D5141834FB5A86F055541F8EE572EE63D514110F68A9A7505554188EA7483E63D5141A42C2E687B055541AD96979EE73D5141BC20D4758D055541295C8FB2EC3D514152B81E45920555415A01A6C7F13D5141A580359196055541708B8FE0F33D51415B102D5798055541D7A370EDF83D514148E17AA49B055541F6285C2FFF3D5141C3F5280C9F05554166666666FF3D51415C8FC2259F055541922DB120FE3D51411EA931AF990555419A0322A6FD3D5141169752FC97055541769C61D7FC3D51413E8B1228950555415F838CA6F93D5141FAB743798B05554133333383F83D514152B81E058805554133333333F73D514152B81E45830555417B14AE47F63D514152B81E357D0555419A999979F53D5141F6285CEF72055541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284993 - 3186162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE47912B425141D7A3704D0C0655413333335329425141295C8FB20C065541D7A3708D264251410AD7A3500D06554185EB5118234251411F85EBD10D0655418FC2F5781F425141E17A146E0E065541AE47E1CA1B4251413D0AD7430F065541295C8FD219425141F6285CEF0F06554114AE4771174251417B14AE3711065541CDCCCC0C144251410AD7A3A01606554114AE47B110425141E17A148E19065541333333930C425141AE47E1DA1C065541713D0A870D4251411F85EB21210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B20065541B81E85EB1F425141000000201C065541D7A3700D24425141A4703D1A1B0655410000003025425141D7A370BD19065541EC51B82E29425141C3F528AC170655417B14AEB72B425141EC51B8CE16065541295C8FC23042514148E17A7415065541CDCCCC3C344251418FC2F5F814065541A4703DBA38425141EC51B89E14065541B81E85AB374251419A99994912065541A4703DCA364251413333334310065541713D0AC735425141C3F5288C0E0655416666662634425141333333230D065541B81E852B32425141A4703D7A0C06554185EB51F82F425141B81E852B0C06554148E17AC42D42514152B81E150C06554114AE47912B425141D7A3704D0C0655410103000000010000000E0000009A9999F934425141A4703DCA09065541666666F633425141E17A140E090655419A99992933425141B81E850B08065541AE47E13A2D42514114AE47910806554152B81EB529425141F6285C1F080655419A99997924425141295C8F0206065541E17A14EE224251415C8FC2D50C06554152B81ED527425141EC51B8EE0B065541CDCCCCCC2A4251418FC2F5580B065541F6285C4F2E4251418FC2F5180B065541713D0A8731425141E17A144E0B0655413D0AD79333425141F6285CCF0B06554133333383354251419A9999C90B0655419A9999F934425141A4703DCA09065541
+</a>
+
+<b>
+01060000000100000001030000000100000035000000AAB073B50D42514122BA9F23210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B200655412F790A2C17425141AF262E051F0655412B5B22251942514199A72F631E0655414DF025161B4251410F3636BD1D065541D3E352091D42514157F983161D0655414E2C34DE1E42514147B0EF791C065541A66232E51F425141B4901C221C0655410158D44B234251418514254A1B065541D7A3700D24425141A4703D1A1B0655410000003025425141D7A370BD19065541EC51B82E29425141C3F528AC170655417B14AEB72B425141EC51B8CE16065541624340DF2C4251414BA2FE8216065541CDCCCC3C344251418FC2F5F814065541729CF1F938425141E655B08014065541269BA0E9354251417F319FD20D0655419070C17434425141029A53DE0C065541E1B24E7F32425141F11FBF030C0655413D14003431425141266B5AF50B065541A0BE618A2F42514163021FE00B065541DBA9E6752F4251413536E0550B065541CFCD0DF4314251419446A0840B065541BC88DC8433425141A009C7CF0B0655417A055020354251419B3E7EB30C06554147DAAF74364251411B283E850D065541BF90E21A3642514121E9ABB60C065541F1EB600B364251416EACBE9C0C06554124A790823542514195873DC70B065541098671F8344251412A5811CA09065541666666F633425141E17A140E090655419A99992933425141B81E850B080655415F875E3A32425141720D972008065541AE47E13A2D42514114AE47910806554152B81EB529425141F6285C1F08065541913C176026425141D6BFAFDD0606554146E8C58B25425141EEBBE0F909065541670D081A254251416EACBE9C0C065541ED96B10B284251414EF33D3A0C06554117FA736D2A425141677DB5AA0B065541EE9DE4AA2A425141F63FAB330C065541E7FCCA95264251413F311FEC0C06554107A7175A1F425141ED20637B0E065541ED60014D1D4251418E12AE2B0F0655415756679519425141EE01FF7E1006554116465C751742514110A0A93A11065541E1F80069144251416F679A0D16065541CDCCCC0C144251410AD7A3A01606554114AE47B110425141E17A148E19065541333333930C425141AE47E1DA1C065541713D0A870D4251411F85EB2121065541AAB073B50D42514122BA9F2321065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284993 - 3593391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE47912B425141D7A3704D0C0655413333335329425141295C8FB20C065541D7A3708D264251410AD7A3500D06554185EB5118234251411F85EBD10D0655418FC2F5781F425141E17A146E0E065541AE47E1CA1B4251413D0AD7430F065541295C8FD219425141F6285CEF0F06554114AE4771174251417B14AE3711065541CDCCCC0C144251410AD7A3A01606554114AE47B110425141E17A148E19065541333333930C425141AE47E1DA1C065541713D0A870D4251411F85EB21210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B20065541B81E85EB1F425141000000201C065541D7A3700D24425141A4703D1A1B0655410000003025425141D7A370BD19065541EC51B82E29425141C3F528AC170655417B14AEB72B425141EC51B8CE16065541295C8FC23042514148E17A7415065541CDCCCC3C344251418FC2F5F814065541A4703DBA38425141EC51B89E14065541B81E85AB374251419A99994912065541A4703DCA364251413333334310065541713D0AC735425141C3F5288C0E0655416666662634425141333333230D065541B81E852B32425141A4703D7A0C06554185EB51F82F425141B81E852B0C06554148E17AC42D42514152B81E150C06554114AE47912B425141D7A3704D0C0655410103000000010000000E0000009A9999F934425141A4703DCA09065541666666F633425141E17A140E090655419A99992933425141B81E850B08065541AE47E13A2D42514114AE47910806554152B81EB529425141F6285C1F080655419A99997924425141295C8F0206065541E17A14EE224251415C8FC2D50C06554152B81ED527425141EC51B8EE0B065541CDCCCCCC2A4251418FC2F5580B065541F6285C4F2E4251418FC2F5180B065541713D0A8731425141E17A144E0B0655413D0AD79333425141F6285CCF0B06554133333383354251419A9999C90B0655419A9999F934425141A4703DCA09065541
+</a>
+
+<b>
+01060000000100000001030000000100000035000000AAB073B50D42514122BA9F23210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B200655412F790A2C17425141AF262E051F0655412B5B22251942514199A72F631E0655414DF025161B4251410F3636BD1D065541D3E352091D42514157F983161D0655414E2C34DE1E42514147B0EF791C065541A66232E51F425141B4901C221C0655410158D44B234251418514254A1B065541D7A3700D24425141A4703D1A1B0655410000003025425141D7A370BD19065541EC51B82E29425141C3F528AC170655417B14AEB72B425141EC51B8CE16065541624340DF2C4251414BA2FE8216065541CDCCCC3C344251418FC2F5F814065541729CF1F938425141E655B08014065541269BA0E9354251417F319FD20D0655419070C17434425141029A53DE0C065541E1B24E7F32425141F11FBF030C0655413D14003431425141266B5AF50B065541A0BE618A2F42514163021FE00B065541DBA9E6752F4251413536E0550B065541CFCD0DF4314251419446A0840B065541BC88DC8433425141A009C7CF0B0655417A055020354251419B3E7EB30C06554147DAAF74364251411B283E850D065541BF90E21A3642514121E9ABB60C065541F1EB600B364251416EACBE9C0C06554124A790823542514195873DC70B065541098671F8344251412A5811CA09065541666666F633425141E17A140E090655419A99992933425141B81E850B080655415F875E3A32425141720D972008065541AE47E13A2D42514114AE47910806554152B81EB529425141F6285C1F08065541913C176026425141D6BFAFDD0606554146E8C58B25425141EEBBE0F909065541670D081A254251416EACBE9C0C065541ED96B10B284251414EF33D3A0C06554117FA736D2A425141677DB5AA0B065541EE9DE4AA2A425141F63FAB330C065541E7FCCA95264251413F311FEC0C06554107A7175A1F425141ED20637B0E065541ED60014D1D4251418E12AE2B0F0655415756679519425141EE01FF7E1006554116465C751742514110A0A93A11065541E1F80069144251416F679A0D16065541CDCCCC0C144251410AD7A3A01606554114AE47B110425141E17A148E19065541333333930C425141AE47E1DA1C065541713D0A870D4251411F85EB2121065541AAB073B50D42514122BA9F2321065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285039 - 4060288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000AE47E14AC23C514148E17A5474045541E17A144EBE3C5141D7A3701D7604554152B81E45BF3C514152B81EF578045541333333E3BF3C514185EB51787B0455413D0AD793C13C5141B81E852B83045541333333E3C23C51413D0AD7038A045541295C8FA2C43C5141666666E691045541D7A370FDC53C514148E17AC49704554152B81E75C63C5141C3F5288C98045541CDCCCCECC63C5141D7A370FD9C0455410AD7A3E0CB3C5141EC51B8EE9A045541295C8FA2D13C5141A4703D7A98045541B81E85ABD73C5141AE47E1DA94045541AE47E1AAD53C51411F85EB9194045541CDCCCCCCD33C5141EC51B8BE94045541666666C6D03C5141333333C39504554114AE4751D03C51411F85EBD1940455410AD7A3C0D03C5141C3F528AC94045541B81E85DBD53C5141D7A370FD91045541D7A3705DD43C51413D0AD7C38E04554114AE4701D33C51411F85EBA18A045541C3F528FCD13C51413333337385045541F6285C9FD03C5141CDCCCC0C7E04554166666686CF3C51410AD7A3F077045541D7A3708DCD3C5141EC51B89E6F045541D7A3703DC73C51410000005072045541AE47E14AC23C514148E17A5474045541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000236E83B8D73C51416E017337710455419318047ED63C51411283C06A6C045541801ED789D33C514167F0503A6D04554163690B27D23C5141362906B36D04554177A9310ECE3C51411E7AAD1B6F045541D7A3708DCD3C5141EC51B89E6F04554153D7B448CE3C514181F79BB4720455417488D381CF3C5141472059DD7704554166666686CF3C51410AD7A3F0770455416107E3CBCF3C514179A97C73790455414C8DEB73D03C514134388E177D04554107A46231D13C51414741E425810455417D2540BDD13C51410E782019840455410548B0A3D23C514156A264C6880455417E9F5B03D33C51412E8613A88A045541BFB9C1D1D33C5141B39C940B8D045541EC444937D43C5141E2E0E74F8E045541C196ECACD43C514140F8966F8F045541D9CEF7B3D53C51413D0AD79391045541432F8E95D83C514172BB0720900455418C33E826DC3C5141A63B06558E04554151AA34EFDE3C51416030340E8D0455417B14AE27DD3C5141E17A145E89045541A4703DFADB3C51419A9999D985045541CDCCCC4CDA3C514114AE47B17D045541F6285C6FD83C5141B81E858B74045541236E83B8D73C51416E01733771045541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285039 - 86409
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000AE47E14AC23C514148E17A5474045541E17A144EBE3C5141D7A3701D7604554152B81E45BF3C514152B81EF578045541333333E3BF3C514185EB51787B0455413D0AD793C13C5141B81E852B83045541333333E3C23C51413D0AD7038A045541295C8FA2C43C5141666666E691045541D7A370FDC53C514148E17AC49704554152B81E75C63C5141C3F5288C98045541CDCCCCECC63C5141D7A370FD9C0455410AD7A3E0CB3C5141EC51B8EE9A045541295C8FA2D13C5141A4703D7A98045541B81E85ABD73C5141AE47E1DA94045541AE47E1AAD53C51411F85EB9194045541CDCCCCCCD33C5141EC51B8BE94045541666666C6D03C5141333333C39504554114AE4751D03C51411F85EBD1940455410AD7A3C0D03C5141C3F528AC94045541B81E85DBD53C5141D7A370FD91045541D7A3705DD43C51413D0AD7C38E04554114AE4701D33C51411F85EBA18A045541C3F528FCD13C51413333337385045541F6285C9FD03C5141CDCCCC0C7E04554166666686CF3C51410AD7A3F077045541D7A3708DCD3C5141EC51B89E6F045541D7A3703DC73C51410000005072045541AE47E14AC23C514148E17A5474045541
+</a>
+
+<b>
+010600000001000000010300000001000000220000006B20CAACD03C51412158384F7E04554107A46231D13C51414741E42581045541FA78E98DD13C5141E3D98219830455417F2540BDD13C514110782019840455410748B0A3D23C514157A264C688045541839F5B03D33C51412F8613A88A045541BEB9C1D1D33C5141B09C940B8D045541BEB9C1D1D33C5141B19C940B8D045541BFB9C1D1D33C5141B39C940B8D0455412B868504D43C51419E54BEAD8D045541EC444937D43C5141E2E0E74F8E045541EC444937D43C5141E3E0E74F8E045541ED444937D43C5141E5E0E74F8E0455416FFC9747D43C5141C028C9778E045541C296ECACD43C51413FF8966F8F045541D9CEF7B3D53C51413D0AD79391045541D5F1D010D53C5141676BF55C8F04554169BAA8ADD43C51418E586E048E045541AF496F60D43C51415A2B1CF88C045541DD43632DD43C51415A4738A98B04554146862AABD33C5141B31FADC988045541F5A6DCD8D23C5141716B794784045541447A8052D23C5141119D126681045541E6A2EB9CD13C5141832E82817D0455419704E6D3D03C5141319175A0790455411C683688CE3C5141545BC59E700455417BA9310ECE3C5141217AAD1B6F045541D7A3708DCD3C5141EC51B89E6F04554158D7B448CE3C514182F79BB4720455417388D381CF3C5141422059DD7704554166666686CF3C51410AD7A3F0770455416107E3CBCF3C514174A97C73790455414D8DEB73D03C514132388E177D0455416B20CAACD03C51412158384F7E045541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285442 - 1335447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000069000000713D0A87953B5141D7A370DD9C035541EC51B8EE953B51417B14AE379C035541666666E69A3B51413D0AD7238F0355410AD7A3709C3B5141C3F5283C8B0355417B14AE47973B5141333333138A035541E17A147E873B51413D0AD7D38503554100000080853B5141F6285C0F84035541EC51B84E843B5141C3F5289C800355417B14AE77833B51418FC2F5587B035541F6285CFF833B51411F85EBA177035541CDCCCCDC883B5141E17A149E6C035541666666968A3B51419A9999D96A035541CDCCCC8C8D3B5141AE47E12A69035541AE47E13A913B51415C8FC24566035541EC51B8CE903B5141AE47E12A600355417B14AE57923B5141333333135D035541CDCCCC8C953B5141AE47E19A5B03554148E17A64963B5141000000005C0355419A999909973B514148E17AF45B035541C3F5280C993B5141666666E65C035541F6285C7F9A3B5141333333935D0355417B14AEC79A3B51410AD7A3005E0355419A9999899B3B5141295C8F225E0355415C8FC2059C3B5141A4703DEA5D035541000000009D3B5141333333A35E0355415C8FC2A59D3B514114AE47915E035541666666D69E3B51413D0AD7435F035541CDCCCC3C9F3B5141EC51B8CE5E03554185EB51D89F3B5141000000105F0355410AD7A340A03B5141AE47E17A5F0355418FC2F598A13B51417B14AE475F035541AE47E12AA23B51415C8FC2755F0355410AD7A320A33B5141EC51B8DE5E0355410AD7A380A43B5141B81E85CB5B035541A4703DDAA53B514185EB51F8580355415C8FC2C5A63B51417B14AEF75603554166666686A53B514185EB51B856035541C3F5282CA23B5141D7A3705D5503554148E17A549F3B5141CDCCCCDC5203554148E17A849E3B5141666666E64E035541CDCCCCEC9E3B514185EB51284C035541EC51B81E983B5141666666764C035541666666E6963B514148E17A644E03554166666616963B5141295C8F5250035541D7A3701D943B5141C3F528DC510355410AD7A340913B51418FC2F53851035541D7A3704D923B514166666636530355410AD7A3E0923B5141295C8F625403554114AE47C1923B51417B14AE9755035541E17A146E923B51410AD7A38056035541EC51B8CE913B51413333331357035541AE47E10A913B5141295C8F3257035541333333C38F3B5141C3F5285C57035541EC51B86E8E3B51415C8FC22557035541C3F5286C8D3B51419A9999C957035541295C8FB28C3B5141EC51B81E580355410AD7A3508C3B5141713D0AB75703554152B81E558C3B51413D0AD713570355415C8FC2758B3B514152B81E45570355410AD7A3508A3B514114AE470158035541E17A149E893B514114AE47715803554148E17AF4883B514148E17A14590355411F85EB51883B514185EB51C859035541F6285CCF873B51411F85EBE15903554148E17A04863B514148E17A645A0355411F85EB81853B514152B81E755A03554166666696833B5141E17A14EE5A035541EC51B87E813B514148E17AA45A0355418FC2F5987F3B5141F6285C1F5A0355413D0AD7537E3B51417B14AE375A035541666666467C3B5141E17A14AE5A035541B81E854B783B51417B14AEC75B0355413D0AD7D3743B5141333333C35C03554152B81ED5743B51418FC2F5685D035541EC51B85E753B51418FC2F5685F035541295C8F82753B5141666666F6600355410AD7A330753B51413D0AD773620355418FC2F598743B51415C8FC2C565035541713D0A27743B5141D7A3705D6703554152B81E55733B5141AE47E1AA68035541E17A141E763B5141EC51B83E69035541000000807A3B5141F6285C7F69035541D7A370DD7A3B51417B14AE976A035541E17A140E763B514114AE47516D035541AE47E18A713B51413D0AD783710355410AD7A380703B5141E17A149E72035541D7A3708D743B514148E17AA4760355410AD7A3107A3B51418FC2F588780355411F85EB31823B514185EB51987A03554152B81E45843B5141C3F528FC84035541000000907E3B5141D7A3701D8403554152B81E65773B514114AE476182035541333333D3713B51413D0AD7237F035541000000206E3B5141D7A370FD7B035541A4703D2A703B5141CDCCCC5C7F035541B81E853B723B5141EC51B8CE82035541C3F528CC723B514114AE47C186035541B81E858B723B5141295C8F228903554148E17AB4713B5141295C8FB28B0355413D0AD7537D3B5141A4703D0A91035541E17A141E7F3B5141CDCCCCDC9103554152B81E658F3B51418FC2F55899035541713D0A17933B51418FC2F5789B0355415C8FC205943B5141E17A141E9C035541713D0A87953B5141D7A370DD9C03554101030000000100000031000000C3F528DC9F3B5141295C8F2267035541E17A14AEA93B5141F6285C1F6E03554133333343AB3B514148E17A4470035541F6285CCFB33B5141CDCCCC8C74035541CDCCCC5CB53B5141333333A36F03554114AE4751B83B5141F6285C8F6C035541F6285C8FBB3B5141666666866A035541AE47E12ABE3B51410000003069035541295C8FD2BF3B514114AE476169035541F6285CAFC23B5141295C8FB269035541C3F528CCC63B51411F85EB416A03554185EB5148C83B51415C8FC2756A03554185EB51F8CB3B5141713D0AB76A0355410AD7A360D13B5141B81E85BB6B035541EC51B89ED43B5141E17A145E6C03554148E17AD4D53B51410AD7A3F06C035541CDCCCCCCDA3B5141333333236E0355417B14AEC7DA3B51410AD7A3706D035541295C8FB2DA3B514114AE47916A03554148E17A94DA3B51415C8FC2656603554152B81EC5DA3B5141EC51B8EE6403554166666636D93B5141AE47E1CA6303554100000030D43B514152B81EB56103554114AE4741CF3B5141B81E858B5F035541CDCCCC4CCD3B514148E17A945E035541000000A0C93B5141D7A3700D5C035541E17A14CEC63B51413D0AD7035A03554114AE4701C13B514148E17A945803554166666666BA3B5141C3F5280C570355415C8FC235B63B5141295C8F8256035541EC51B84EB43B514148E17A64560355411F85EB41B13B5141D7A3706D560355415C8FC255AE3B5141666666865603554166666606AC3B51410AD7A3205603554114AE4771A93B514148E17AD455035541E17A14DEA83B5141C3F528FC5503554114AE4761A83B514185EB517856035541713D0A87A73B51418FC2F5A8570355419A9999F9A63B514114AE47E158035541EC51B8BEAC3B51417B14AE775A035541EC51B8AEAB3B5141295C8F025E035541000000E0A93B5141D7A3704D610355419A999939A53B5141A4703D4A60035541A4703D6AA33B51411F85EBA160035541D7A3703DA23B5141F6285CFF61035541EC51B86EA03B5141AE47E1CA62035541AE47E19A9E3B5141666666A662035541D7A3704D9D3B5141CDCCCC7C66035541C3F528DC9F3B5141295C8F2267035541
+</a>
+
+<b>
+0106000000010000000103000000010000009D000000C59999F9A63B514127AE47E158035541EC51B8BEAC3B51417B14AE775A035541EC51B8AEAB3B5141295C8F025E035541000000E0A93B5141D7A3704D610355419A999939A53B5141A4703D4A60035541A4703D6AA33B51411F85EBA160035541D7A3703DA23B5141F6285CFF61035541EC51B86EA03B5141AE47E1CA62035541AE47E19A9E3B5141666666A662035541D7A3704D9D3B5141CDCCCC7C66035541C3F528DC9F3B5141295C8F2267035541E17A14AEA93B5141F6285C1F6E03554133333343AB3B514148E17A4470035541F6285CCFB33B5141CDCCCC8C74035541CDCCCC5CB53B5141333333A36F03554114AE4751B83B5141F6285C8F6C035541F6285C8FBB3B5141666666866A035541AE47E12ABE3B51410000003069035541295C8FD2BF3B514114AE476169035541F6285CAFC23B5141295C8FB269035541C3F528CCC63B51411F85EB416A03554185EB5148C83B51415C8FC2756A03554185EB51F8CB3B5141713D0AB76A0355410AD7A360D13B5141B81E85BB6B035541EC51B89ED43B5141E17A145E6C03554148E17AD4D53B51410AD7A3F06C035541CDCCCCCCDA3B5141333333236E0355417B14AEC7DA3B51410AD7A3706D035541295C8FB2DA3B514114AE47916A03554148E17A94DA3B51415C8FC2656603554152B81EC5DA3B5141EC51B8EE6403554166666636D93B5141AE47E1CA6303554100000030D43B514152B81EB56103554114AE4741CF3B5141B81E858B5F035541CDCCCC4CCD3B514148E17A945E035541000000A0C93B5141D7A3700D5C035541E17A14CEC63B51413D0AD7035A03554114AE4701C13B514148E17A945803554166666666BA3B5141C3F5280C570355415C8FC235B63B5141295C8F8256035541EC51B84EB43B514148E17A64560355411F85EB41B13B5141D7A3706D560355415C8FC255AE3B5141666666865603554166666606AC3B51410AD7A3205603554114AE4771A93B514148E17AD455035541E17A14DEA83B5141C3F528FC5503554114AE4761A83B514185EB517856035541713D0A87A73B51418FC2F5A8570355417B85DB28A73B5141C1B7ED7858035541BA9A5B03A63B5141A759D29E580355415C8FC2C5A63B51417B14AEF75603554166666686A53B514185EB51B856035541C3F5282CA23B5141D7A3705D5503554148E17A549F3B5141CDCCCCDC5203554148E17A849E3B5141666666E64E035541CDCCCCEC9E3B514185EB51284C035541EC51B81E983B5141666666764C035541666666E6963B514148E17A644E03554166666616963B5141295C8F5250035541D7A3701D943B5141C3F528DC510355410AD7A340913B51418FC2F53851035541D7A3704D923B514166666636530355410AD7A3E0923B5141295C8F625403554114AE47C1923B51417B14AE9755035541E17A146E923B51410AD7A38056035541EC51B8CE913B51413333331357035541AE47E10A913B5141295C8F3257035541333333C38F3B5141C3F5285C57035541EC51B86E8E3B51415C8FC22557035541C3F5286C8D3B51419A9999C957035541295C8FB28C3B5141EC51B81E580355410AD7A3508C3B5141713D0AB75703554152B81E558C3B51413D0AD713570355415C8FC2758B3B514152B81E45570355410AD7A3508A3B514114AE470158035541E17A149E893B514114AE47715803554148E17AF4883B514148E17A14590355411F85EB51883B514185EB51C859035541F6285CCF873B51411F85EBE15903554148E17A04863B514148E17A645A0355411F85EB81853B514152B81E755A03554166666696833B5141E17A14EE5A035541EC51B87E813B514148E17AA45A0355418FC2F5987F3B5141F6285C1F5A0355413D0AD7537E3B51417B14AE375A035541666666467C3B5141E17A14AE5A035541B81E854B783B51417B14AEC75B0355413D0AD7D3743B5141333333C35C03554152B81ED5743B51418FC2F5685D035541EC51B85E753B51418FC2F5685F035541295C8F82753B5141666666F6600355410AD7A330753B51413D0AD773620355418FC2F598743B51415C8FC2C565035541713D0A27743B5141D7A3705D6703554152B81E55733B5141AE47E1AA68035541E17A141E763B5141EC51B83E69035541000000807A3B5141F6285C7F69035541D7A370DD7A3B51417B14AE976A035541E17A140E763B514114AE47516D035541AE47E18A713B51413D0AD783710355410AD7A380703B5141E17A149E72035541D7A3708D743B514148E17AA4760355410AD7A3107A3B51418FC2F588780355411F85EB31823B514185EB51987A03554152B81E45843B5141C3F528FC84035541000000907E3B5141D7A3701D8403554152B81E65773B514114AE476182035541333333D3713B51413D0AD7237F035541000000206E3B5141D7A370FD7B035541A4703D2A703B5141CDCCCC5C7F035541B81E853B723B5141EC51B8CE82035541C3F528CC723B514114AE47C186035541B81E858B723B5141295C8F228903554148E17AB4713B5141295C8FB28B0355413D0AD7537D3B5141A4703D0A91035541E17A141E7F3B5141CDCCCCDC9103554152B81E658F3B51418FC2F55899035541713D0A17933B51418FC2F5789B0355415C8FC205943B5141E17A141E9C035541713D0A87953B5141D7A370DD9C035541EC51B8EE953B51417B14AE379C035541666666E69A3B51413D0AD7238F0355410AD7A3709C3B5141C3F5283C8B0355417B14AE47973B5141333333138A035541E17A147E873B51413D0AD7D38503554100000080853B5141F6285C0F84035541EC51B84E843B5141C3F5289C800355417B14AE77833B51418FC2F5587B035541F6285CFF833B51411F85EBA177035541CDCCCCDC883B5141E17A149E6C035541666666968A3B51419A9999D96A035541CDCCCC8C8D3B5141AE47E12A69035541AE47E13A913B51415C8FC24566035541EC51B8CE903B5141AE47E12A600355417B14AE57923B5141333333135D035541CDCCCC8C953B5141AE47E19A5B03554148E17A64963B5141000000005C0355419A999909973B514148E17AF45B035541C3F5280C993B5141666666E65C035541F6285C7F9A3B5141333333935D0355417B14AEC79A3B51410AD7A3005E0355419A9999899B3B5141295C8F225E0355415C8FC2059C3B5141A4703DEA5D035541000000009D3B5141333333A35E0355415C8FC2A59D3B514114AE47915E035541666666D69E3B51413D0AD7435F035541CDCCCC3C9F3B5141EC51B8CE5E03554185EB51D89F3B5141000000105F0355410AD7A340A03B5141AE47E17A5F0355418FC2F598A13B51417B14AE475F035541AE47E12AA23B51415C8FC2755F0355410AD7A320A33B5141EC51B8DE5E0355410AD7A380A43B5141B81E85CB5B035541A4703DDAA53B514185EB51F8580355415FCA96FDA53B514109D460AB5803554163DC5B22A73B51413552478758035541C59999F9A63B514127AE47E158035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285442 - 3582579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000069000000713D0A87953B5141D7A370DD9C035541EC51B8EE953B51417B14AE379C035541666666E69A3B51413D0AD7238F0355410AD7A3709C3B5141C3F5283C8B0355417B14AE47973B5141333333138A035541E17A147E873B51413D0AD7D38503554100000080853B5141F6285C0F84035541EC51B84E843B5141C3F5289C800355417B14AE77833B51418FC2F5587B035541F6285CFF833B51411F85EBA177035541CDCCCCDC883B5141E17A149E6C035541666666968A3B51419A9999D96A035541CDCCCC8C8D3B5141AE47E12A69035541AE47E13A913B51415C8FC24566035541EC51B8CE903B5141AE47E12A600355417B14AE57923B5141333333135D035541CDCCCC8C953B5141AE47E19A5B03554148E17A64963B5141000000005C0355419A999909973B514148E17AF45B035541C3F5280C993B5141666666E65C035541F6285C7F9A3B5141333333935D0355417B14AEC79A3B51410AD7A3005E0355419A9999899B3B5141295C8F225E0355415C8FC2059C3B5141A4703DEA5D035541000000009D3B5141333333A35E0355415C8FC2A59D3B514114AE47915E035541666666D69E3B51413D0AD7435F035541CDCCCC3C9F3B5141EC51B8CE5E03554185EB51D89F3B5141000000105F0355410AD7A340A03B5141AE47E17A5F0355418FC2F598A13B51417B14AE475F035541AE47E12AA23B51415C8FC2755F0355410AD7A320A33B5141EC51B8DE5E0355410AD7A380A43B5141B81E85CB5B035541A4703DDAA53B514185EB51F8580355415C8FC2C5A63B51417B14AEF75603554166666686A53B514185EB51B856035541C3F5282CA23B5141D7A3705D5503554148E17A549F3B5141CDCCCCDC5203554148E17A849E3B5141666666E64E035541CDCCCCEC9E3B514185EB51284C035541EC51B81E983B5141666666764C035541666666E6963B514148E17A644E03554166666616963B5141295C8F5250035541D7A3701D943B5141C3F528DC510355410AD7A340913B51418FC2F53851035541D7A3704D923B514166666636530355410AD7A3E0923B5141295C8F625403554114AE47C1923B51417B14AE9755035541E17A146E923B51410AD7A38056035541EC51B8CE913B51413333331357035541AE47E10A913B5141295C8F3257035541333333C38F3B5141C3F5285C57035541EC51B86E8E3B51415C8FC22557035541C3F5286C8D3B51419A9999C957035541295C8FB28C3B5141EC51B81E580355410AD7A3508C3B5141713D0AB75703554152B81E558C3B51413D0AD713570355415C8FC2758B3B514152B81E45570355410AD7A3508A3B514114AE470158035541E17A149E893B514114AE47715803554148E17AF4883B514148E17A14590355411F85EB51883B514185EB51C859035541F6285CCF873B51411F85EBE15903554148E17A04863B514148E17A645A0355411F85EB81853B514152B81E755A03554166666696833B5141E17A14EE5A035541EC51B87E813B514148E17AA45A0355418FC2F5987F3B5141F6285C1F5A0355413D0AD7537E3B51417B14AE375A035541666666467C3B5141E17A14AE5A035541B81E854B783B51417B14AEC75B0355413D0AD7D3743B5141333333C35C03554152B81ED5743B51418FC2F5685D035541EC51B85E753B51418FC2F5685F035541295C8F82753B5141666666F6600355410AD7A330753B51413D0AD773620355418FC2F598743B51415C8FC2C565035541713D0A27743B5141D7A3705D6703554152B81E55733B5141AE47E1AA68035541E17A141E763B5141EC51B83E69035541000000807A3B5141F6285C7F69035541D7A370DD7A3B51417B14AE976A035541E17A140E763B514114AE47516D035541AE47E18A713B51413D0AD783710355410AD7A380703B5141E17A149E72035541D7A3708D743B514148E17AA4760355410AD7A3107A3B51418FC2F588780355411F85EB31823B514185EB51987A03554152B81E45843B5141C3F528FC84035541000000907E3B5141D7A3701D8403554152B81E65773B514114AE476182035541333333D3713B51413D0AD7237F035541000000206E3B5141D7A370FD7B035541A4703D2A703B5141CDCCCC5C7F035541B81E853B723B5141EC51B8CE82035541C3F528CC723B514114AE47C186035541B81E858B723B5141295C8F228903554148E17AB4713B5141295C8FB28B0355413D0AD7537D3B5141A4703D0A91035541E17A141E7F3B5141CDCCCCDC9103554152B81E658F3B51418FC2F55899035541713D0A17933B51418FC2F5789B0355415C8FC205943B5141E17A141E9C035541713D0A87953B5141D7A370DD9C03554101030000000100000031000000C3F528DC9F3B5141295C8F2267035541E17A14AEA93B5141F6285C1F6E03554133333343AB3B514148E17A4470035541F6285CCFB33B5141CDCCCC8C74035541CDCCCC5CB53B5141333333A36F03554114AE4751B83B5141F6285C8F6C035541F6285C8FBB3B5141666666866A035541AE47E12ABE3B51410000003069035541295C8FD2BF3B514114AE476169035541F6285CAFC23B5141295C8FB269035541C3F528CCC63B51411F85EB416A03554185EB5148C83B51415C8FC2756A03554185EB51F8CB3B5141713D0AB76A0355410AD7A360D13B5141B81E85BB6B035541EC51B89ED43B5141E17A145E6C03554148E17AD4D53B51410AD7A3F06C035541CDCCCCCCDA3B5141333333236E0355417B14AEC7DA3B51410AD7A3706D035541295C8FB2DA3B514114AE47916A03554148E17A94DA3B51415C8FC2656603554152B81EC5DA3B5141EC51B8EE6403554166666636D93B5141AE47E1CA6303554100000030D43B514152B81EB56103554114AE4741CF3B5141B81E858B5F035541CDCCCC4CCD3B514148E17A945E035541000000A0C93B5141D7A3700D5C035541E17A14CEC63B51413D0AD7035A03554114AE4701C13B514148E17A945803554166666666BA3B5141C3F5280C570355415C8FC235B63B5141295C8F8256035541EC51B84EB43B514148E17A64560355411F85EB41B13B5141D7A3706D560355415C8FC255AE3B5141666666865603554166666606AC3B51410AD7A3205603554114AE4771A93B514148E17AD455035541E17A14DEA83B5141C3F528FC5503554114AE4761A83B514185EB517856035541713D0A87A73B51418FC2F5A8570355419A9999F9A63B514114AE47E158035541EC51B8BEAC3B51417B14AE775A035541EC51B8AEAB3B5141295C8F025E035541000000E0A93B5141D7A3704D610355419A999939A53B5141A4703D4A60035541A4703D6AA33B51411F85EBA160035541D7A3703DA23B5141F6285CFF61035541EC51B86EA03B5141AE47E1CA62035541AE47E19A9E3B5141666666A662035541D7A3704D9D3B5141CDCCCC7C66035541C3F528DC9F3B5141295C8F2267035541
+</a>
+
+<b>
+0106000000010000000103000000010000009D000000C59999F9A63B514127AE47E158035541EC51B8BEAC3B51417B14AE775A035541EC51B8AEAB3B5141295C8F025E035541000000E0A93B5141D7A3704D610355419A999939A53B5141A4703D4A60035541A4703D6AA33B51411F85EBA160035541D7A3703DA23B5141F6285CFF61035541EC51B86EA03B5141AE47E1CA62035541AE47E19A9E3B5141666666A662035541D7A3704D9D3B5141CDCCCC7C66035541C3F528DC9F3B5141295C8F2267035541E17A14AEA93B5141F6285C1F6E03554133333343AB3B514148E17A4470035541F6285CCFB33B5141CDCCCC8C74035541CDCCCC5CB53B5141333333A36F03554114AE4751B83B5141F6285C8F6C035541F6285C8FBB3B5141666666866A035541AE47E12ABE3B51410000003069035541295C8FD2BF3B514114AE476169035541F6285CAFC23B5141295C8FB269035541C3F528CCC63B51411F85EB416A03554185EB5148C83B51415C8FC2756A03554185EB51F8CB3B5141713D0AB76A0355410AD7A360D13B5141B81E85BB6B035541EC51B89ED43B5141E17A145E6C03554148E17AD4D53B51410AD7A3F06C035541CDCCCCCCDA3B5141333333236E0355417B14AEC7DA3B51410AD7A3706D035541295C8FB2DA3B514114AE47916A03554148E17A94DA3B51415C8FC2656603554152B81EC5DA3B5141EC51B8EE6403554166666636D93B5141AE47E1CA6303554100000030D43B514152B81EB56103554114AE4741CF3B5141B81E858B5F035541CDCCCC4CCD3B514148E17A945E035541000000A0C93B5141D7A3700D5C035541E17A14CEC63B51413D0AD7035A03554114AE4701C13B514148E17A945803554166666666BA3B5141C3F5280C570355415C8FC235B63B5141295C8F8256035541EC51B84EB43B514148E17A64560355411F85EB41B13B5141D7A3706D560355415C8FC255AE3B5141666666865603554166666606AC3B51410AD7A3205603554114AE4771A93B514148E17AD455035541E17A14DEA83B5141C3F528FC5503554114AE4761A83B514185EB517856035541713D0A87A73B51418FC2F5A8570355417B85DB28A73B5141C1B7ED7858035541BA9A5B03A63B5141A759D29E580355415C8FC2C5A63B51417B14AEF75603554166666686A53B514185EB51B856035541C3F5282CA23B5141D7A3705D5503554148E17A549F3B5141CDCCCCDC5203554148E17A849E3B5141666666E64E035541CDCCCCEC9E3B514185EB51284C035541EC51B81E983B5141666666764C035541666666E6963B514148E17A644E03554166666616963B5141295C8F5250035541D7A3701D943B5141C3F528DC510355410AD7A340913B51418FC2F53851035541D7A3704D923B514166666636530355410AD7A3E0923B5141295C8F625403554114AE47C1923B51417B14AE9755035541E17A146E923B51410AD7A38056035541EC51B8CE913B51413333331357035541AE47E10A913B5141295C8F3257035541333333C38F3B5141C3F5285C57035541EC51B86E8E3B51415C8FC22557035541C3F5286C8D3B51419A9999C957035541295C8FB28C3B5141EC51B81E580355410AD7A3508C3B5141713D0AB75703554152B81E558C3B51413D0AD713570355415C8FC2758B3B514152B81E45570355410AD7A3508A3B514114AE470158035541E17A149E893B514114AE47715803554148E17AF4883B514148E17A14590355411F85EB51883B514185EB51C859035541F6285CCF873B51411F85EBE15903554148E17A04863B514148E17A645A0355411F85EB81853B514152B81E755A03554166666696833B5141E17A14EE5A035541EC51B87E813B514148E17AA45A0355418FC2F5987F3B5141F6285C1F5A0355413D0AD7537E3B51417B14AE375A035541666666467C3B5141E17A14AE5A035541B81E854B783B51417B14AEC75B0355413D0AD7D3743B5141333333C35C03554152B81ED5743B51418FC2F5685D035541EC51B85E753B51418FC2F5685F035541295C8F82753B5141666666F6600355410AD7A330753B51413D0AD773620355418FC2F598743B51415C8FC2C565035541713D0A27743B5141D7A3705D6703554152B81E55733B5141AE47E1AA68035541E17A141E763B5141EC51B83E69035541000000807A3B5141F6285C7F69035541D7A370DD7A3B51417B14AE976A035541E17A140E763B514114AE47516D035541AE47E18A713B51413D0AD783710355410AD7A380703B5141E17A149E72035541D7A3708D743B514148E17AA4760355410AD7A3107A3B51418FC2F588780355411F85EB31823B514185EB51987A03554152B81E45843B5141C3F528FC84035541000000907E3B5141D7A3701D8403554152B81E65773B514114AE476182035541333333D3713B51413D0AD7237F035541000000206E3B5141D7A370FD7B035541A4703D2A703B5141CDCCCC5C7F035541B81E853B723B5141EC51B8CE82035541C3F528CC723B514114AE47C186035541B81E858B723B5141295C8F228903554148E17AB4713B5141295C8FB28B0355413D0AD7537D3B5141A4703D0A91035541E17A141E7F3B5141CDCCCCDC9103554152B81E658F3B51418FC2F55899035541713D0A17933B51418FC2F5789B0355415C8FC205943B5141E17A141E9C035541713D0A87953B5141D7A370DD9C035541EC51B8EE953B51417B14AE379C035541666666E69A3B51413D0AD7238F0355410AD7A3709C3B5141C3F5283C8B0355417B14AE47973B5141333333138A035541E17A147E873B51413D0AD7D38503554100000080853B5141F6285C0F84035541EC51B84E843B5141C3F5289C800355417B14AE77833B51418FC2F5587B035541F6285CFF833B51411F85EBA177035541CDCCCCDC883B5141E17A149E6C035541666666968A3B51419A9999D96A035541CDCCCC8C8D3B5141AE47E12A69035541AE47E13A913B51415C8FC24566035541EC51B8CE903B5141AE47E12A600355417B14AE57923B5141333333135D035541CDCCCC8C953B5141AE47E19A5B03554148E17A64963B5141000000005C0355419A999909973B514148E17AF45B035541C3F5280C993B5141666666E65C035541F6285C7F9A3B5141333333935D0355417B14AEC79A3B51410AD7A3005E0355419A9999899B3B5141295C8F225E0355415C8FC2059C3B5141A4703DEA5D035541000000009D3B5141333333A35E0355415C8FC2A59D3B514114AE47915E035541666666D69E3B51413D0AD7435F035541CDCCCC3C9F3B5141EC51B8CE5E03554185EB51D89F3B5141000000105F0355410AD7A340A03B5141AE47E17A5F0355418FC2F598A13B51417B14AE475F035541AE47E12AA23B51415C8FC2755F0355410AD7A320A33B5141EC51B8DE5E0355410AD7A380A43B5141B81E85CB5B035541A4703DDAA53B514185EB51F8580355415FCA96FDA53B514109D460AB5803554163DC5B22A73B51413552478758035541C59999F9A63B514127AE47E158035541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285765 - 394431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000090000007B14AE976DD15041A4703D1AC3BB54418FC2F5587CD15041C3F5286CC1BB54415C8FC2A576D150413D0AD72378BB5441A4703DFA60D15041713D0AA77ABB544185EB517863D150410AD7A3E09ABB5441F6285C7F60D1504114AE47219BBB544185EB512863D150415C8FC255BDBB5441E17A144E6BD150410AD7A390C2BB54417B14AE976DD15041A4703D1AC3BB5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000FAC8F9C061D15041ACC73F487ABB54414672C94761D15041129E223C78BB54413D48F7F060D150410099664578BB5441E0D99CD45DD150419D3831D678BB5441F6285C7F60D1504114AE47219BBB544185EB512863D150415C8FC255BDBB5441E17A144E6BD150410AD7A390C2BB5441E66DC2656DD150413E92820EC3BB54419114AE976DD15041A2703D1AC3BB5441E216AE976DD150415E703D1AC3BB5441CD18AE976DD1504123703D1AC3BB54412B2084BF77D15041B4E9E7D7C1BB544175F5D5B677D15041A0745C74C1BB54414497416F77D150416327DB74C1BB544113F3CB6771D150412775571B79BB5441FAC8F9C061D15041ACC73F487ABB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>286402 - 242470
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000006666663662D150410AD7A330B5BE5441F6285CBF7DD15041333333E389BE5441A4703D4A7ED15041C3F528AC88BE5441333333B37CD15041AE47E1EA88BE5441A4703DCA7AD150415C8FC28589BE54419A99995978D15041CDCCCC7C8ABE544185EB510874D150419A9999898CBE5441666666D664D15041295C8FD28CBE54419A99992964D1504152B81EE58FBE5441F6285C1F63D150417B14AE1795BE5441EC51B8BE61D150419A9999A99BBE544148E17A5460D15041F6285C0FA2BE5441333333635FD15041A4703D7AA6BE5441000000B05AD150415C8FC2C5B3BE5441C3F528FC5DD15041F6285C8FB4BE544152B81ED561D150419A9999C9B5BE54416666663662D150410AD7A330B5BE5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000001005863E78D15041020BC98A92BE5441078C5BBF7DD15041002A34E389BE5441155A520874D150416CB199898CBE54412AF1CA5571D150417E428D968CBE544193C195185FD1504159965A9AB4BE54412E48653662D15041A386A330B5BE5441D96146BD74D150410067D40D98BE54411005863E78D15041020BC98A92BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>286527 - 57074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000EC51B81E67D6504185EB51C818BC5441F6285CAF63D650417B14AE471BBC5441EC51B88E5FD65041B81E858B1DBC54418FC2F5485BD6504114AE47311FBC54417B14AED756D650413D0AD75320BC5441EC51B80E54D650413D0AD7B320BC544185EB515852D65041F6285CEF20BC54416666662636D65041C3F5282C23BC544152B81EA52DD65041E17A146E23BC54419A99994925D65041F6285CFF22BC54419A9999C90CD65041D7A370FD1FBC5441C3F528AC0BD65041C3F528DC20BC54418FC2F5E807D6504152B81E2540BC544114AE47B105D650413D0AD79352BC5441713D0A4702D65041AE47E1FA6EBC54415C8FC22503D6504185EB511870BC5441A4703D3A31D650410AD7A3C075BC54410AD7A34033D65041713D0AE774BC544114AE470143D65041295C8F1261BC544148E17A0448D650418FC2F5B85ABC54419A99997955D65041B81E85AB49BC5441E17A14EE69D650410AD7A3C02FBC54418FC2F5B872D6504185EB517824BC5441F6285CDF74D650415C8FC2B521BC5441713D0A9774D65041C3F5280C20BC5441E17A142E69D650419A9999B918BC5441EC51B81E67D6504185EB51C818BC5441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000D41D524253D65041DF35577A4CBC54419A99997955D65041B81E85AB49BC54415A24B85E56D65041A0E7368948BC54413298C0F556D65041F81FD9C947BC5441E96444EF5CD650414C7FE03740BC5441A49253B75FD65041BD98A9B13CBC54416E43274F65D65041F17B779B35BC54415F1396796AD65041DE4CA00D2FBC544158F13C7E70D65041F505AB5427BC5441F6285CDF74D650415C8FC2B521BC5441713D0A9774D65041C3F5280C20BC5441E17A142E69D650419A9999B918BC5441EC51B81E67D6504185EB51C818BC5441F6285CAF63D650417B14AE471BBC5441EC51B88E5FD65041B81E858B1DBC54418FC2F5485BD6504114AE47311FBC54417B14AED756D650413D0AD75320BC544185EB515852D65041F6285CEF20BC54416666662636D65041C3F5282C23BC544152B81EA52DD65041E17A146E23BC54419A99994925D65041F6285CFF22BC54419A9999C90CD65041D7A370FD1FBC5441C3F528AC0BD65041C3F528DC20BC54418FC2F5E807D6504152B81E2540BC5441713D0A4702D65041AE47E1FA6EBC54415C8FC22503D6504185EB511870BC5441A4703D3A31D650410AD7A3C075BC54410AD7A34033D65041713D0AE774BC54417105443338D65041EEC0EEAA6EBC5441DD1BA9843AD6504151A38EC16BBC54417AF27DC33ED650415BE0666966BC5441D05B6DCF3FD6504194BA1C1865BC5441D41D524253D65041DF35577A4CBC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>286582 - 362073
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000040000000B81E857B37D55041E17A148EFDBE5441A4703D6A38D550411F85EBD1F3BE5441D7A3704D38D550411F85EBF1E8BE5441B81E85DB37D550413D0AD7A3E0BE54417B14AE473AD5504166666626E1BE5441666666063DD55041CDCCCC7CE0BE54415C8FC20540D5504133333343D8BE54419A99999945D55041295C8F02CDBE54411F85EB414ED550418FC2F558C0BE544152B81E9556D550417B14AE87B6BE54417B14AED756D55041AE47E13AB6BE5441295C8F723ED55041AE47E1EAA6BE5441295C8F2227D55041AE47E1EAD6BE54415C8FC2F525D55041D7A370FDD7BE54413D0AD7D326D550413D0AD7B3D8BE5441E17A143E26D55041D7A3704DD9BE5441000000F026D55041713D0AD7D9BE544185EB515827D55041295C8F52DABE54417B14AED72BD550417B14AEA7DCBE54410AD7A3702FD5504166666646DEBE544152B81EC535D55041B81E855BE0BE54415C8FC2B535D550411F85EBC1E0BE5441666666462FD55041713D0A97DEBE54411F85EBB12BD550411F85EB01DDBE54413333332327D5504185EB5188DABE5441E17A148E26D55041295C8F52DABE544152B81EE524D5504148E17AF4D8BE544114AE47B121D55041EC51B8DEDBBE5441666666961ED5504100000070DDBE5441000000E01AD5504166666636DEBE5441E17A14DE15D55041666666C6DDBE5441D7A3700D19D55041F6285C9FEBBE54410AD7A3B01AD55041713D0A07EBBE54419A9999991CD550411F85EB11E5BE544148E17A641ED55041B81E85BBE0BE5441D7A3707D1FD55041F6285CFFDEBE5441F6285C5F21D550419A999999DDBE544114AE470120D5504114AE47F1E0BE54419A9999B91DD55041C3F5282CE7BE54418FC2F5C819D55041E17A14CEEEBE5441A4703D3A1AD55041000000D0F1BE5441333333031AD55041F6285C1FF5BE54411F85EB5119D55041B81E851BF8BE5441295C8F621BD55041D7A370ADF8BE54415C8FC22520D55041C3F528DCF8BE5441CDCCCCBC25D550419A9999D9F8BE54411F85EBD127D550410AD7A380F8BE5441EC51B87E29D55041D7A3701DF7BE544114AE47012CD55041E17A147EF2BE54418FC2F5382FD55041B81E85EBEBBE54419A99999931D55041C3F528ACF0BE544114AE47F12ED55041AE47E13AF5BE5441A4703D7A2CD55041D7A3705DFABE544185EB516829D55041A4703D7AFCBE54411F85EB3123D550415C8FC2F5FDBE5441AE47E10A1DD550411F85EBD1FDBE544185EB513817D55041C3F528CCFCBE5441666666F613D55041AE47E15A03BF5441D7A3708D13D55041295C8F5204BF54410AD7A37023D55041B81E852B08BF54410000006031D55041713D0AE70FBF5441295C8F7233D55041C3F5280C0CBF54411F85EBF133D55041F6285C1F0BBF5441B81E857B37D55041E17A148EFDBE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000005976D82318D550419EA490F2FABE54412F7567F613D550415792E15A03BF5441A24AEAF133D55041E2725D1F0BBF54417D9BE45735D55041B6D369C205BF5441B81E857B37D55041E17A148EFDBE5441A4703D6A38D550411F85EBD1F3BE54415C8FC20540D5504133333343D8BE54419A99999945D55041295C8F02CDBE5441BCC6C9CD4BD550417F24ABEFC3BE5441FA3FEA414ED55041F1CCF658C0BE544162921F9556D5504158BDAC87B6BE5441F8A56B9D56D55041593D1A7EB6BE5441F555D4C056D5504122FC3E55B6BE544142E1ADD756D55041C882E13AB6BE5441694A53CD52D550414C36A0B1B3BE5441E443184142D5504175F9954EA9BE5441C00BAADB3FD5504188A38ACDA7BE54418B1190723ED5504188B9E1EAA6BE5441E74364AC30D550417FC63147C3BE5441295C8F2227D55041AE47E1EAD6BE54415C8FC2F525D55041D7A370FDD7BE54413D0AD7D326D550413D0AD7B3D8BE5441E17A143E26D55041D7A3704DD9BE5441000000F026D55041713D0AD7D9BE544185EB515827D55041295C8F52DABE54417B14AED72BD550417B14AEA7DCBE54410AD7A3702FD5504166666646DEBE544152B81EC535D55041B81E855BE0BE54415C8FC2B535D550411F85EBC1E0BE5441666666462FD55041713D0A97DEBE54411F85EBB12BD550411F85EB01DDBE54413333332327D5504185EB5188DABE5441E17A148E26D55041295C8F52DABE544112373EE524D5504156D394F4D8BE5441C1F748B121D55041538CB9DEDBBE54419EF79EF51ED5504187F4ED3FDDBE5441666666961ED5504100000070DDBE544131F1F1A11DD5504118EF07A3DDBE54419C2900E01AD55041169F6736DEBE5441339214DE15D5504157A966C6DDBE5441BADBF5C819D550417AC513CEEEBE5441BAC93D3A1AD55041567BFFCFF1BE544133C3E0281AD55041545C4BDBF2BE5441333333031AD55041F6285C1FF5BE544135B2EB5119D550410E5E851BF8BE54415976D82318D550419EA490F2FABE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287562 - 1176641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A454413D0AD71330AA514148E17AA40DA4544148E17A8430AA5141F6285C3F08A45441295C8F6235AA5141295C8F9205A454413333330336AA51416666666601A454410AD7A3602BAA5141C3F528ECFFA35441D7A3705D13AA5141CDCCCCEC00A45441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A45441DB6AB66830AA51416463F8AE0DA4544133013D5030AA51414ABBA0E80BA4544103B1BE5F30AA5141E055C8010AA45441ABD8D80E31AA51416DB0376508A45441AB7D12EB33AA5141F0DB8FE806A454415957FF6935AA51418692490406A454413333330336AA51416666666601A454410AD7A3602BAA5141C3F528ECFFA35441D7A3705D13AA5141CDCCCCEC00A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287562 - 3614725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A454413D0AD71330AA514148E17AA40DA4544148E17A8430AA5141F6285C3F08A45441295C8F6235AA5141295C8F9205A454413333330336AA51416666666601A454410AD7A3602BAA5141C3F528ECFFA35441D7A3705D13AA5141CDCCCCEC00A45441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A45441DB6AB66830AA51416463F8AE0DA4544133013D5030AA51414ABBA0E80BA4544103B1BE5F30AA5141E055C8010AA45441ABD8D80E31AA51416DB0376508A45441AB7D12EB33AA5141F0DB8FE806A454415957FF6935AA51418692490406A454413333330336AA51416666666601A454410AD7A3602BAA5141C3F528ECFFA35441D7A3705D13AA5141CDCCCCEC00A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287750 - 3614486
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000036000000295C8F4224A951417B14AEC738A55441295C8FA229A951419A9999593CA55441C3F5283C2AA95141666666363BA554419A9999E92AA95141CDCCCC8C3BA55441CDCCCC5C2AA9514152B81ED53CA55441000000802DA95141D7A370FD3DA55441B81E85EB30A951410AD7A30040A554419A9999E932A951415C8FC28541A55441713D0A8740A951419A99997937A55441333333234CA9514148E17A142FA554413D0AD7034CA951418FC2F5982DA55441666666164AA95141AE47E17A2AA55441AE47E13A49A951419A9999F929A5544152B81E4542A95141333333832DA554410AD7A3703CA951419A99997924A554411F85EB4146A95141D7A370FD1EA55441666666E64BA951417B14AE3727A554419A9999194AA95141D7A3707D28A55441F6285C1F4DA951419A9999192DA554411F85EB214EA951418FC2F5A82DA55441B81E85DB52A95141D7A3703D2AA5544185EB51C850A951417B14AE0726A5544152B81E4556A9514114AE47E121A554419A99994953A95141AE47E1BA19A554410AD7A3E051A95141000000E015A554417B14AE674EA95141C3F5287C0CA554410AD7A3B04CA9514148E17AB407A55441AE47E19A25A95141F6285C8F1EA55441D7A3702D1FA951417B14AE470EA554415C8FC2A50DA95141CDCCCC6C24A554419A999999F8A8514152B81E9527A55441713D0AF7EEA85141713D0A0729A5544114AE47C1E8A8514114AE470128A554417B14AEB7EAA85141F6285C6F2FA55441713D0AD7EAA85141F6285C0F35A5544185EB5168E7A851411F85EBF138A55441EC51B80EEBA851418FC2F5983DA554417B14AEA7F4A85141713D0AB747A554415C8FC20502A9514148E17AC44FA55441666666960FA9514185EB51C84EA55441CDCCCCFC10A95141000000404EA554418FC2F5581EA95141EC51B87E49A55441C3F5284C20A951419A99991949A5544148E17AA42CA95141F6285C6F46A55441E17A14DE2AA951413333337345A554413D0AD7832AA951413333335345A55441E17A148E28A95141295C8FA244A55441B81E85CB24A95141B81E85CB42A55441A4703D6A23A951418FC2F5C842A55441EC51B8FE21A951410000007043A55441A4703DDA1CA951415C8FC25548A55441295C8FC215A95141A4703D6A44A554417B14AEC71BA9514152B81ED538A55441295C8F4224A951417B14AEC738A55441
+</a>
+
+<b>
+0106000000010000000103000000010000004E000000295C8F4224A951417B14AEC738A55441295C8FA229A951419A9999593CA55441C3F5283C2AA95141666666363BA554419A9999E92AA95141CDCCCC8C3BA55441CDCCCC5C2AA9514152B81ED53CA55441000000802DA95141D7A370FD3DA55441B81E85EB30A951410AD7A30040A554419A9999E932A951415C8FC28541A55441713D0A8740A951419A99997937A55441333333234CA9514148E17A142FA554413D0AD7034CA951418FC2F5982DA55441666666164AA95141AE47E17A2AA55441AE47E13A49A951419A9999F929A5544152B81E4542A95141333333832DA554410AD7A3703CA951419A99997924A554411F85EB4146A95141D7A370FD1EA55441666666E64BA951417B14AE3727A554419A9999194AA95141D7A3707D28A55441F6285C1F4DA951419A9999192DA554411F85EB214EA951418FC2F5A82DA55441B81E85DB52A95141D7A3703D2AA5544185EB51C850A951417B14AE0726A5544152B81E4556A9514114AE47E121A554419A99994953A95141AE47E1BA19A554410AD7A3E051A95141000000E015A554417B14AE674EA95141C3F5287C0CA554410AD7A3B04CA9514148E17AB407A55441AE47E19A25A95141F6285C8F1EA55441D7A3702D1FA951417B14AE470EA554415C8FC2A50DA95141CDCCCC6C24A554419D21B4A5F8A85141CD5AF9A227A554416354062DFAA851414112346129A55441C1329B84FEA85141B16FE6542EA554419E6CFB0609A9514131329A513AA554416362BD220BA95141A86458B93CA554412B3AB69A0BA9514183E334423DA5544152B81EA50BA95141E17A144E3DA554418B1D1AAB0BA951414D2189683DA55441D734D2CB0BA95141FDAF3CF93DA55441A485A36D0DA951413FDF0C3145A55441798896C70DA95141A8A3DABE46A5544145322AEA0EA951410BB3F0C34BA554417964AD0E0FA95141D8006B654CA55441E1CD81340FA95141C0A7B80C4DA55441F6285C5F0FA95141A4703DCA4DA5544143D911FF10A95141F23B43354DA5544136DBEF2111A951419E6EC4284DA5544184E0F53413A95141EF0F776A4CA5544184F6D71917A95141209D36054BA5544100FF5BC817A95141CE1EACC64AA5544182CEEDFB18A9514169F372584AA5544144922DBC19A951413E8F8D134AA554412C3B3DF21AA9514109CE6FA449A554418504486F1CA951412016E21B49A554413E3079521DA95141F7F076CA48A55441AFEC71EF1DA95141FFFC359248A55441F9C817541FA95141904CB83248A55441E8269D2621A95141A043E6BA47A55441A961E10122A95141AA5B958247A55441C6FEAD5223A951414A9A142C47A55441217BEF8226A95141854A6F5A46A5544152F5738729A95141CFCC059445A5544144ECE87D2AA95141C5C21C5145A55441293CB3B529A95141E55EA10A45A554413BA240F928A9514186014AC844A554415DC34A7528A951415B026E9644A55441C8F3D31628A9514122DE336844A55441C2D8D6D827A951419C22DE4944A554411BDDC2D425A9514104A2514D43A5544160C862D324A951417229FDCE42A554419FEECC0524A95141065616CA42A55441A4703D6A23A951418FC2F5C842A5544144B10F8722A9514192A7593143A554418F62F80422A9514145C2206D43A55441A4703DDA1CA951415C8FC25548A55441295C8FC215A95141A4703D6A44A554417B14AEC71BA9514152B81ED538A55441295C8F4224A951417B14AEC738A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287762 - 210912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000210000009A99996953AA5141295C8F52A1A354419A99998952AA51415C8FC255A9A354417B14AE775AAA514114AE4761ACA3544114AE473161AA5141CDCCCC9CAEA35441295C8FD267AA5141E17A14EEB0A354417B14AEE769AA5141713D0A27B1A3544152B81E256DAA514100000050A7A3544152B81EA56EAA514100000030A3A354410000006070AA5141EC51B86E9EA354418FC2F5885BAA51410AD7A37098A35441000000F036AA51419A9999098FA354411F85EBD111AA51410AD7A38085A354418FC2F5680AAA514152B81E4584A354418FC2F50806AA5141666666C682A354416666660604AA51410AD7A37085A35441D7A3701D01AA5141D7A370ED87A35441CDCCCC7C02AA51413D0AD7238BA35441AE47E15A03AA514148E17AE48FA3544185EB518806AA5141000000B093A35441E17A14BE0AAA514148E17AC496A35441713D0A372AAA51417B14AEC79EA35441C3F528AC26AA5141CDCCCCCCACA35441C3F528CC32AA5141713D0AC7AFA35441D7A3705D41AA5141AE47E15AB3A354415C8FC2F54EAA51411F85EBB1B6A35441B81E85DB4FAA5141F6285CEFB5A35441E17A140E4FAA5141EC51B8DEAAA35441E17A140E4BAA5141E17A140EA9A3544114AE47514BAA5141C3F5280CA6A35441C3F528DC43AA5141CDCCCCACA5A354415C8FC2A545AA51411F85EB7197A354417B14AE474EAA5141000000F098A354419A99996953AA5141295C8F52A1A35441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000007BE7A1EC4EAA51412B74ADAFB6A3544158725BC54FAA51418D9B2002B6A354419B4F6CAD4FAA514182B1C473B3A35441CDC95D4A4FAA51415946F51DAEA354413F58C92B4FAA5141346D5178ACA3544165B7A2FB4EAA51414DBED9E3AAA35441A33D27D34AAA51411C0887FFA8A35441DB011D4749AA51412D5238C6A6A35441D809D2D243AA51415908E1BEA5A35441E3E014E743AA51411C68F68EA4A35441C058422B45AA514116AC8A6D9AA3544117DF0A6845AA5141D90BA03D99A354416D65D3A445AA51412D95F73897A35441181459CD45AA5141744A9BDE92A35441E5C69D7439AA5141619F29B48FA35441B33B6CBA32AA5141D61A6BF68DA354415D4AFE7731AA514124E4F4A18DA35441F85550F122AA5141782FADE689A35441FD25240318AA51412CD2DC1787A354416F58286D13AA514167180CF885A35441B4E2343E12AA51419518759C85A354411F85EBD111AA51410AD7A38085A3544199B95AD20FAA514182398D2B85A35441D105D4D60AAA5141F4AEF46C84A35441D60BF25306AA5141C0B0FEEB82A354417D88B8D503AA5141E6FD64C585A354416B6E8C3C01AA5141FED7403688A35441CDCCCC7C02AA51413D0AD7238BA35441AE47E15A03AA514148E17AE48FA3544185EB518806AA5141000000B093A35441E17A14BE0AAA514148E17AC496A35441AFC4AA921AAA514175A437CC9AA35441B7E9F43C1DAA51414CD9526F9BA354417D79895020AA51412D796D429CA35441A4E5F15D27AA514173C60F0E9EA354417B43C8422AAA514156DC95BA9EA354413AF27A8829AA5141C16D927CA1A35441ABF7CB7F29AA51417CD9E49CA1A35441C3F528AC26AA5141CDCCCCCCACA35441C3F528CC32AA5141713D0AC7AFA35441D7A3705D41AA5141AE47E15AB3A354417BE7A1EC4EAA51412B74ADAFB6A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287762 - 349179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000210000009A99996953AA5141295C8F52A1A354419A99998952AA51415C8FC255A9A354417B14AE775AAA514114AE4761ACA3544114AE473161AA5141CDCCCC9CAEA35441295C8FD267AA5141E17A14EEB0A354417B14AEE769AA5141713D0A27B1A3544152B81E256DAA514100000050A7A3544152B81EA56EAA514100000030A3A354410000006070AA5141EC51B86E9EA354418FC2F5885BAA51410AD7A37098A35441000000F036AA51419A9999098FA354411F85EBD111AA51410AD7A38085A354418FC2F5680AAA514152B81E4584A354418FC2F50806AA5141666666C682A354416666660604AA51410AD7A37085A35441D7A3701D01AA5141D7A370ED87A35441CDCCCC7C02AA51413D0AD7238BA35441AE47E15A03AA514148E17AE48FA3544185EB518806AA5141000000B093A35441E17A14BE0AAA514148E17AC496A35441713D0A372AAA51417B14AEC79EA35441C3F528AC26AA5141CDCCCCCCACA35441C3F528CC32AA5141713D0AC7AFA35441D7A3705D41AA5141AE47E15AB3A354415C8FC2F54EAA51411F85EBB1B6A35441B81E85DB4FAA5141F6285CEFB5A35441E17A140E4FAA5141EC51B8DEAAA35441E17A140E4BAA5141E17A140EA9A3544114AE47514BAA5141C3F5280CA6A35441C3F528DC43AA5141CDCCCCACA5A354415C8FC2A545AA51411F85EB7197A354417B14AE474EAA5141000000F098A354419A99996953AA5141295C8F52A1A35441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000007BE7A1EC4EAA51412B74ADAFB6A3544158725BC54FAA51418D9B2002B6A354419B4F6CAD4FAA514182B1C473B3A35441CDC95D4A4FAA51415946F51DAEA354413F58C92B4FAA5141346D5178ACA3544165B7A2FB4EAA51414DBED9E3AAA35441A33D27D34AAA51411C0887FFA8A35441DB011D4749AA51412D5238C6A6A35441D809D2D243AA51415908E1BEA5A35441E3E014E743AA51411C68F68EA4A35441C058422B45AA514116AC8A6D9AA3544117DF0A6845AA5141D90BA03D99A354416D65D3A445AA51412D95F73897A35441181459CD45AA5141744A9BDE92A35441E5C69D7439AA5141619F29B48FA35441B33B6CBA32AA5141D61A6BF68DA354415D4AFE7731AA514124E4F4A18DA35441F85550F122AA5141782FADE689A35441FD25240318AA51412CD2DC1787A354416F58286D13AA514167180CF885A35441B4E2343E12AA51419518759C85A354411F85EBD111AA51410AD7A38085A3544199B95AD20FAA514182398D2B85A35441D105D4D60AAA5141F4AEF46C84A35441D60BF25306AA5141C0B0FEEB82A354417D88B8D503AA5141E6FD64C585A354416B6E8C3C01AA5141FED7403688A35441CDCCCC7C02AA51413D0AD7238BA35441AE47E15A03AA514148E17AE48FA3544185EB518806AA5141000000B093A35441E17A14BE0AAA514148E17AC496A35441AFC4AA921AAA514175A437CC9AA35441B7E9F43C1DAA51414CD9526F9BA354417D79895020AA51412D796D429CA35441A4E5F15D27AA514173C60F0E9EA354417B43C8422AAA514156DC95BA9EA354413AF27A8829AA5141C16D927CA1A35441ABF7CB7F29AA51417CD9E49CA1A35441C3F528AC26AA5141CDCCCCCCACA35441C3F528CC32AA5141713D0AC7AFA35441D7A3705D41AA5141AE47E15AB3A354417BE7A1EC4EAA51412B74ADAFB6A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287920 - 222222
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000007000000AE47E1AA8FA2514114AE47A124A854416666660683A25141A4703D9A23A85441F6285CFF84A25141666666962FA85441F6285C3F92A251419A9999C930A85441D7A370BD96A25141666666B630A85441C3F5282C93A25141EC51B80E25A85441AE47E1AA8FA2514114AE47A124A854410103000000010000000B00000048E17A444DA25141AE47E1AA2DA85441000000203DA25141CDCCCCFC30A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441F6285CEF25A2514152B81E8540A854418FC2F5B82BA25141A4703D5A3FA854413D0AD7C33EA2514152B81E853AA85441F6285C8F45A25141B81E854B39A85441EC51B84E4DA25141B81E858B38A85441A4703D9A52A25141A4703D1A37A8544148E17A444DA25141AE47E1AA2DA854410103000000010000000C000000713D0AC781A251410AD7A3B023A8544185EB51D869A25141C3F5283C23A854411F85EBA156A251413D0AD7332AA85441AE47E1EA4DA25141CDCCCC5C2DA85441B81E856B53A25141A4703DBA36A854413D0AD76359A251416666665634A85441F6285C8F5FA2514114AE47A131A854411F85EBD165A2514148E17A842FA854417B14AE7769A251411F85EBC12EA85441F6285C0F77A25141C3F5286C2EA854418FC2F5D883A251417B14AE672FA85441713D0AC781A251410AD7A3B023A85441
+</a>
+
+<b>
+010600000001000000010300000001000000190000005B9A84A14FA251417E47E5D831A85441C16D75434DA251415F0D17AB2DA854413E068F7B4CA25141D70034D42DA85441E7D103B73FA25141CA59707430A85441C3CDDB533DA25141726322F230A8544177F8BCB33BA2514171D2666C31A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441133F15D225A25141EFD0DC323EA85441984031D825A25141359FDEAE3EA854417C2DB8E725A2514194AC08EA3FA85441DA807AE925A25141D845BD0D40A854411C3156EE25A25141E05A597040A854411DF67DF125A25141DD9DB08440A85441A75AFAE928A25141B35947EB3FA854411DFEBC4A2AA251413CFC1DA43FA854412CD1A69731A25141762FE5DC3DA854413D0AD7C33EA2514152B81E853AA85441F6285C8F45A25141B81E854B39A85441D1A70A9345A251419EE1294B39A854419AE0D72B47A25141D2E1962339A854412ECCAB964CA251413A41569D38A85441A1ACF89A4DA251418240BF7638A85441A4703D9A52A25141A4703D1A37A854415B9A84A14FA251417E47E5D831A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287920 - 374842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000007000000AE47E1AA8FA2514114AE47A124A854416666660683A25141A4703D9A23A85441F6285CFF84A25141666666962FA85441F6285C3F92A251419A9999C930A85441D7A370BD96A25141666666B630A85441C3F5282C93A25141EC51B80E25A85441AE47E1AA8FA2514114AE47A124A854410103000000010000000B00000048E17A444DA25141AE47E1AA2DA85441000000203DA25141CDCCCCFC30A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441F6285CEF25A2514152B81E8540A854418FC2F5B82BA25141A4703D5A3FA854413D0AD7C33EA2514152B81E853AA85441F6285C8F45A25141B81E854B39A85441EC51B84E4DA25141B81E858B38A85441A4703D9A52A25141A4703D1A37A8544148E17A444DA25141AE47E1AA2DA854410103000000010000000C000000713D0AC781A251410AD7A3B023A8544185EB51D869A25141C3F5283C23A854411F85EBA156A251413D0AD7332AA85441AE47E1EA4DA25141CDCCCC5C2DA85441B81E856B53A25141A4703DBA36A854413D0AD76359A251416666665634A85441F6285C8F5FA2514114AE47A131A854411F85EBD165A2514148E17A842FA854417B14AE7769A251411F85EBC12EA85441F6285C0F77A25141C3F5286C2EA854418FC2F5D883A251417B14AE672FA85441713D0AC781A251410AD7A3B023A85441
+</a>
+
+<b>
+010600000001000000010300000001000000190000005B9A84A14FA251417E47E5D831A85441C16D75434DA251415F0D17AB2DA854413E068F7B4CA25141D70034D42DA85441E7D103B73FA25141CA59707430A85441C3CDDB533DA25141726322F230A8544177F8BCB33BA2514171D2666C31A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441133F15D225A25141EFD0DC323EA85441984031D825A25141359FDEAE3EA854417C2DB8E725A2514194AC08EA3FA85441DA807AE925A25141D845BD0D40A854411C3156EE25A25141E05A597040A854411DF67DF125A25141DD9DB08440A85441A75AFAE928A25141B35947EB3FA854411DFEBC4A2AA251413CFC1DA43FA854412CD1A69731A25141762FE5DC3DA854413D0AD7C33EA2514152B81E853AA85441F6285C8F45A25141B81E854B39A85441D1A70A9345A251419EE1294B39A854419AE0D72B47A25141D2E1962339A854412ECCAB964CA251413A41569D38A85441A1ACF89A4DA251418240BF7638A85441A4703D9A52A25141A4703D1A37A854415B9A84A14FA251417E47E5D831A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288103 - 239526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000035000000EC51B8EE359D5141000000B061A75441CDCCCC8C299D51419A99997961A754418FC2F548259D51413D0AD7635EA75441E17A141E1C9D514114AE47415BA754410AD7A3D0179D51415C8FC2F559A7544185EB51F8139D5141333333A356A75441EC51B81E119D5141B81E852B52A7544148E17A440E9D51410AD7A3F04CA7544185EB51680F9D51415C8FC2154CA754419A999989169D5141000000B055A754418FC2F588189D5141C3F528EC56A75441000000D01C9D5141333333D358A7544114AE4721279D51411F85EBD15AA754410AD7A3600D9D5141713D0AD743A75441295C8F92069D514185EB51C83DA754410AD7A340FB9C5141C3F5289C33A754415C8FC215F39C5141666666962CA754411F85EBC1E59C514185EB51081AA75441E17A142EDF9C514152B81E651CA75441C3F528ACDB9C51415C8FC2A51DA7544185EB51B8D99C514114AE47C120A7544133333383D89C5141CDCCCCBC23A75441713D0AB7D79C51419A99996927A75441AE47E1FAD99C5141666666562AA7544114AE47B1DB9C51418FC2F5A82FA75441B81E858BDE9C5141713D0AD735A75441E17A14AEDE9C5141AE47E10A3AA7544148E17A34E19C5141666666C63EA75441A4703DBAE29C5141EC51B80E41A754410AD7A3A0E49C514148E17AC442A754417B14AE57E99C51419A9999C946A75441CDCCCCDCEB9C5141AE47E15A48A754410AD7A340EE9C5141B81E85CB4AA7544152B81EE5EE9C51417B14AE474AA7544100000020F49C514185EB51D84CA75441000000E0FA9C514152B81E7550A75441CDCCCCDC009D5141AE47E15A54A75441D7A3709D059D5141EC51B84E55A754417B14AE77089D514152B81E3557A75441AE47E1CA0D9D5141333333D358A754410AD7A3B0119D514185EB51585AA75441295C8F72149D5141D7A370DD5BA754410AD7A370189D51413D0AD7935DA754415C8FC2251C9D514185EB51E85EA75441CDCCCC6C209D51417B14AEE760A75441A4703D6A269D5141C3F5283C62A7544152B81EA5299D5141713D0A1763A754411F85EB212D9D51413333332366A7544114AE47412F9D5141E17A14FE64A754415C8FC295309D5141B81E853B64A75441AE47E1EA319D51417B14AE4763A75441295C8F32349D51415C8FC2B562A75441EC51B8EE359D5141000000B061A754410B000000AE47E1BAE09C5141295C8F0227A754413D0AD703E19C5141E17A140E28A75441AE47E1EAE29C5141000000D02AA75441C3F5287CE59C51415C8FC2B52EA7544152B81E25E89C51417B14AE172DA7544152B81E55EA9C51419A9999792DA754418FC2F5E8E69C51417B14AE472FA754419A999919E79C51413333338332A754419A9999E9E49C514148E17AB430A754411F85EB71E09C51416666662628A75441AE47E1BAE09C5141295C8F0227A75441
+</a>
+
+<b>
+01060000000100000001030000000100000068000000F95238AF089D51411C4197A93FA75441295C8F92069D514185EB51C83DA754414ACC7D4A049D5141703F75BB3BA754414016194C029D51411B84CDF039A754410297B07AFD9C5141869D6C9C35A75441A9B5B28BF79C51419802406C30A7544146A07BA7F39C514143AEB1132DA754415C8FC215F39C5141666666962CA75441088873C2EE9C5141EC5DC49026A7544149DF08E3EB9C51410C7CF01B29A7544147BAD7D4E99C5141DAD5CC0A2EA7544122D84224F39C5141BEFD15BA38A75441ABC89631FB9C5141DFAE2A6B3FA754414DE49616009D51416073F0B144A75441CB93E19CFD9C51419C53695846A75441629C87EEF69C5141B3DDBD8441A754414AC3BDBCF09C51414BC40E6D3CA754419100E646EA9C5141FF85968F36A75441433D062AE59C51419DC3B67231A75441F76C40A6E09C5141B010686D2AA75441FF782B5ADE9C5141CB5CD53526A754414D6DF653DB9C51413E84C1B220A75441933B3200DB9C51418FE672B71EA75441312F3C3DD99C5141919BC60122A754414733E298D89C5141D9A4298923A754412207BB58D89C51410872F38025A75441C93618D9D79C51412AE9939527A75441E367D44BD99C51414178577429A75441C8DBEFA4D99C5141E1F769E729A75441AE47E1FAD99C5141666666562AA75441A9658854DB9C51418DF1B2882EA7544114AE47B1DB9C51418FC2F5A82FA75441A810B8A6DC9C5141956AB5BC31A7544177C49E48DD9C5141F98C781B33A75441E0B77220DE9C5141430A11EF34A754419A0FC74EDE9C514180B7705335A7544134D47781DE9C5141E32643C135A75441D813F982DE9C514108CD85C435A75441B81E858BDE9C5141713D0AD735A7544139C661ADDE9C5141E53C26F539A754417FE9C69BDF9C51417AA762C83BA754419E3D39B0E09C5141D47784CE3DA75441D82C74DEE19C5141189E38C53FA754417166DBF3E19C5141DDF44EE53FA75441545D8D04E29C5141E36456FE3FA75441D9E0EB0FE29C51416FC6610F40A75441B6676680E29C5141ADEC01B840A75441A4703DBAE29C5141EC51B80E41A754410AD7A3A0E49C514148E17AC442A7544170A670D1E49C5141E13916EE42A75441F516768AE79C51417CA55D4045A75441C6204C05E89C51418C7A18A945A75441866E16C1EA9C51412E7667AA47A75441CDCCCCDCEB9C5141AE47E15A48A7544100BBDC4AEC9C514142AA3ECB48A75441A22ECE73EE9C51414C0F82A24AA7544152B81EE5EE9C51417B14AE474AA7544100000020F49C514185EB51D84CA75441762CB9DDF69C5141FD36DF4F4EA75441000000E0FA9C514152B81E7550A75441D8DE23E7FE9C5141146D541453A75441E5BC40EB009D51411AD3C65D54A754416AF84C10059D5141DFC76E3255A75441D7A3709D059D5141EC51B84E55A75441E736CB04079D51411449143E56A754413D22A6C6089D514108771B4D57A75441AE47E1CA0D9D5141333333D358A754410AD7A3B0119D514185EB51585AA754417D2A368C129D5141A5655AD15AA754412A7B39E4149D5141CFAC310E5CA7544150034907199D5141F89CE1C95DA754415C8FC2251C9D514185EB51E85EA7544149CD30C81E9D5141A4B7432360A75441994D7920219D514138FE920F61A75441A4703D6A269D5141C3F5283C62A7544152B81EA5299D5141713D0A1763A75441A5499BFB2C9D51410C6CB80166A754417F6C861E2F9D51417C2DD41065A754413459B5F7309D5141911D81F563A75441AE47E1EA319D51417B14AE4763A75441ED5A5B00349D5141AB8F4FC262A7544132AFA0C7359D51417C4154AF61A7544109A9F377319D5141DB7A639C61A75441CDCCCC8C299D51419A99997961A75441908BF97D299D51416961E06E61A75441194F9C8E289D5141A1C0BCC160A75441DC0492BF269D5141ED84CE725FA754412717E558259D514160BD5D6F5EA75441433918F31C9D51414FD71F8A5BA754411B74A9FB179D5141F685B5025AA754410AD7A3D0179D51415C8FC2F559A7544186356A09149D5141B3CAF8B156A7544185EB51F8139D5141333333A356A75441EC51B81E119D5141B81E852B52A75441019982C9109D5141001C4A8F51A75441EF9B01450F9D5141EFC4F9C64EA7544148E17A440E9D51410AD7A3F04CA7544185EB51680F9D51415C8FC2154CA754411331C581169D5141BE8374A555A75441FFD91FF2199D51414877CB8C57A754415B7CE21B1D9D51414E85DFE158A7544114AE4721279D51411F85EBD15AA754410AD7A3600D9D5141713D0AD743A75441F95238AF089D51411C4197A93FA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288103 - 288355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000035000000EC51B8EE359D5141000000B061A75441CDCCCC8C299D51419A99997961A754418FC2F548259D51413D0AD7635EA75441E17A141E1C9D514114AE47415BA754410AD7A3D0179D51415C8FC2F559A7544185EB51F8139D5141333333A356A75441EC51B81E119D5141B81E852B52A7544148E17A440E9D51410AD7A3F04CA7544185EB51680F9D51415C8FC2154CA754419A999989169D5141000000B055A754418FC2F588189D5141C3F528EC56A75441000000D01C9D5141333333D358A7544114AE4721279D51411F85EBD15AA754410AD7A3600D9D5141713D0AD743A75441295C8F92069D514185EB51C83DA754410AD7A340FB9C5141C3F5289C33A754415C8FC215F39C5141666666962CA754411F85EBC1E59C514185EB51081AA75441E17A142EDF9C514152B81E651CA75441C3F528ACDB9C51415C8FC2A51DA7544185EB51B8D99C514114AE47C120A7544133333383D89C5141CDCCCCBC23A75441713D0AB7D79C51419A99996927A75441AE47E1FAD99C5141666666562AA7544114AE47B1DB9C51418FC2F5A82FA75441B81E858BDE9C5141713D0AD735A75441E17A14AEDE9C5141AE47E10A3AA7544148E17A34E19C5141666666C63EA75441A4703DBAE29C5141EC51B80E41A754410AD7A3A0E49C514148E17AC442A754417B14AE57E99C51419A9999C946A75441CDCCCCDCEB9C5141AE47E15A48A754410AD7A340EE9C5141B81E85CB4AA7544152B81EE5EE9C51417B14AE474AA7544100000020F49C514185EB51D84CA75441000000E0FA9C514152B81E7550A75441CDCCCCDC009D5141AE47E15A54A75441D7A3709D059D5141EC51B84E55A754417B14AE77089D514152B81E3557A75441AE47E1CA0D9D5141333333D358A754410AD7A3B0119D514185EB51585AA75441295C8F72149D5141D7A370DD5BA754410AD7A370189D51413D0AD7935DA754415C8FC2251C9D514185EB51E85EA75441CDCCCC6C209D51417B14AEE760A75441A4703D6A269D5141C3F5283C62A7544152B81EA5299D5141713D0A1763A754411F85EB212D9D51413333332366A7544114AE47412F9D5141E17A14FE64A754415C8FC295309D5141B81E853B64A75441AE47E1EA319D51417B14AE4763A75441295C8F32349D51415C8FC2B562A75441EC51B8EE359D5141000000B061A754410B000000AE47E1BAE09C5141295C8F0227A754413D0AD703E19C5141E17A140E28A75441AE47E1EAE29C5141000000D02AA75441C3F5287CE59C51415C8FC2B52EA7544152B81E25E89C51417B14AE172DA7544152B81E55EA9C51419A9999792DA754418FC2F5E8E69C51417B14AE472FA754419A999919E79C51413333338332A754419A9999E9E49C514148E17AB430A754411F85EB71E09C51416666662628A75441AE47E1BAE09C5141295C8F0227A75441
+</a>
+
+<b>
+01060000000100000001030000000100000068000000F95238AF089D51411C4197A93FA75441295C8F92069D514185EB51C83DA754414ACC7D4A049D5141703F75BB3BA754414016194C029D51411B84CDF039A754410297B07AFD9C5141869D6C9C35A75441A9B5B28BF79C51419802406C30A7544146A07BA7F39C514143AEB1132DA754415C8FC215F39C5141666666962CA75441088873C2EE9C5141EC5DC49026A7544149DF08E3EB9C51410C7CF01B29A7544147BAD7D4E99C5141DAD5CC0A2EA7544122D84224F39C5141BEFD15BA38A75441ABC89631FB9C5141DFAE2A6B3FA754414DE49616009D51416073F0B144A75441CB93E19CFD9C51419C53695846A75441629C87EEF69C5141B3DDBD8441A754414AC3BDBCF09C51414BC40E6D3CA754419100E646EA9C5141FF85968F36A75441433D062AE59C51419DC3B67231A75441F76C40A6E09C5141B010686D2AA75441FF782B5ADE9C5141CB5CD53526A754414D6DF653DB9C51413E84C1B220A75441933B3200DB9C51418FE672B71EA75441312F3C3DD99C5141919BC60122A754414733E298D89C5141D9A4298923A754412207BB58D89C51410872F38025A75441C93618D9D79C51412AE9939527A75441E367D44BD99C51414178577429A75441C8DBEFA4D99C5141E1F769E729A75441AE47E1FAD99C5141666666562AA75441A9658854DB9C51418DF1B2882EA7544114AE47B1DB9C51418FC2F5A82FA75441A810B8A6DC9C5141956AB5BC31A7544177C49E48DD9C5141F98C781B33A75441E0B77220DE9C5141430A11EF34A754419A0FC74EDE9C514180B7705335A7544134D47781DE9C5141E32643C135A75441D813F982DE9C514108CD85C435A75441B81E858BDE9C5141713D0AD735A7544139C661ADDE9C5141E53C26F539A754417FE9C69BDF9C51417AA762C83BA754419E3D39B0E09C5141D47784CE3DA75441D82C74DEE19C5141189E38C53FA754417166DBF3E19C5141DDF44EE53FA75441545D8D04E29C5141E36456FE3FA75441D9E0EB0FE29C51416FC6610F40A75441B6676680E29C5141ADEC01B840A75441A4703DBAE29C5141EC51B80E41A754410AD7A3A0E49C514148E17AC442A7544170A670D1E49C5141E13916EE42A75441F516768AE79C51417CA55D4045A75441C6204C05E89C51418C7A18A945A75441866E16C1EA9C51412E7667AA47A75441CDCCCCDCEB9C5141AE47E15A48A7544100BBDC4AEC9C514142AA3ECB48A75441A22ECE73EE9C51414C0F82A24AA7544152B81EE5EE9C51417B14AE474AA7544100000020F49C514185EB51D84CA75441762CB9DDF69C5141FD36DF4F4EA75441000000E0FA9C514152B81E7550A75441D8DE23E7FE9C5141146D541453A75441E5BC40EB009D51411AD3C65D54A754416AF84C10059D5141DFC76E3255A75441D7A3709D059D5141EC51B84E55A75441E736CB04079D51411449143E56A754413D22A6C6089D514108771B4D57A75441AE47E1CA0D9D5141333333D358A754410AD7A3B0119D514185EB51585AA754417D2A368C129D5141A5655AD15AA754412A7B39E4149D5141CFAC310E5CA7544150034907199D5141F89CE1C95DA754415C8FC2251C9D514185EB51E85EA7544149CD30C81E9D5141A4B7432360A75441994D7920219D514138FE920F61A75441A4703D6A269D5141C3F5283C62A7544152B81EA5299D5141713D0A1763A75441A5499BFB2C9D51410C6CB80166A754417F6C861E2F9D51417C2DD41065A754413459B5F7309D5141911D81F563A75441AE47E1EA319D51417B14AE4763A75441ED5A5B00349D5141AB8F4FC262A7544132AFA0C7359D51417C4154AF61A7544109A9F377319D5141DB7A639C61A75441CDCCCC8C299D51419A99997961A75441908BF97D299D51416961E06E61A75441194F9C8E289D5141A1C0BCC160A75441DC0492BF269D5141ED84CE725FA754412717E558259D514160BD5D6F5EA75441433918F31C9D51414FD71F8A5BA754411B74A9FB179D5141F685B5025AA754410AD7A3D0179D51415C8FC2F559A7544186356A09149D5141B3CAF8B156A7544185EB51F8139D5141333333A356A75441EC51B81E119D5141B81E852B52A75441019982C9109D5141001C4A8F51A75441EF9B01450F9D5141EFC4F9C64EA7544148E17A440E9D51410AD7A3F04CA7544185EB51680F9D51415C8FC2154CA754411331C581169D5141BE8374A555A75441FFD91FF2199D51414877CB8C57A754415B7CE21B1D9D51414E85DFE158A7544114AE4721279D51411F85EBD15AA754410AD7A3600D9D5141713D0AD743A75441F95238AF089D51411C4197A93FA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288213 - 1176925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000140000008FC2F5C8189F5141B81E857B2FA154411F85EB411A9F51415C8FC2C52FA15441666666261C9F514148E17A0430A154411F85EBB11E9F5141D7A3707D31A15441EC51B85E219F5141713D0A4730A15441C3F528EC209F5141000000402FA15441295C8FC2239F514114AE47812EA1544114AE4761269F5141C3F5287C2EA1544114AE47C1299F514114AE47312CA1544148E17AB42B9F51413D0AD7E329A15441CDCCCCFC2C9F5141666666E628A15441D7A3701D2C9F514114AE470128A15441D7A3703D2B9F5141CDCCCC1C27A1544148E17A34189F51410AD7A3A013A154419A999999179F5141295C8F0214A15441333333C30C9F51411F85EBF11AA15441666666B6049F5141F6285C8F1EA154415C8FC225109F51413333333328A1544148E17AD4179F5141D7A370AD2EA154418FC2F5C8189F5141B81E857B2FA154410103000000010000000F000000B81E85EB079F5141295C8FE21BA154415C8FC2E50B9F514152B81EE519A15441666666560A9F51413D0AD79318A154418FC2F598F69E5141C3F5281C09A1544185EB5138EE9E5141AE47E14A02A1544185EB5158E69E5141295C8F92FAA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441CDCCCCCC039F5141C3F528DC1DA15441B81E85EB079F5141295C8FE21BA15441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441CDCCCCCC039F5141C3F528DC1DA154418BA6F431049F51412045C2291EA154416CFF589C079F51419EF0E94D1CA1544163CBA0320A9F514188FA2F061BA15441211DBC090C9F51418D410C1E1AA1544177A647A80A9F514109E4FDD818A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288213 - 3478977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000140000008FC2F5C8189F5141B81E857B2FA154411F85EB411A9F51415C8FC2C52FA15441666666261C9F514148E17A0430A154411F85EBB11E9F5141D7A3707D31A15441EC51B85E219F5141713D0A4730A15441C3F528EC209F5141000000402FA15441295C8FC2239F514114AE47812EA1544114AE4761269F5141C3F5287C2EA1544114AE47C1299F514114AE47312CA1544148E17AB42B9F51413D0AD7E329A15441CDCCCCFC2C9F5141666666E628A15441D7A3701D2C9F514114AE470128A15441D7A3703D2B9F5141CDCCCC1C27A1544148E17A34189F51410AD7A3A013A154419A999999179F5141295C8F0214A15441333333C30C9F51411F85EBF11AA15441666666B6049F5141F6285C8F1EA154415C8FC225109F51413333333328A1544148E17AD4179F5141D7A370AD2EA154418FC2F5C8189F5141B81E857B2FA154410103000000010000000F000000B81E85EB079F5141295C8FE21BA154415C8FC2E50B9F514152B81EE519A15441666666560A9F51413D0AD79318A154418FC2F598F69E5141C3F5281C09A1544185EB5138EE9E5141AE47E14A02A1544185EB5158E69E5141295C8F92FAA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441CDCCCCCC039F5141C3F528DC1DA15441B81E85EB079F5141295C8FE21BA15441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441CDCCCCCC039F5141C3F528DC1DA154418BA6F431049F51412045C2291EA154416CFF589C079F51419EF0E94D1CA1544163CBA0320A9F514188FA2F061BA15441211DBC090C9F51418D410C1E1AA1544177A647A80A9F514109E4FDD818A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288399 - 240066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000019000000CDCCCCCCF0A051419A99999941A55441EC51B81EF1A05141A4703DCA44A55441AE47E18AF1A05141A4703DCA48A554415C8FC275F2A05141CDCCCC6C50A55441AE47E19AFDA051417B14AEC74DA5544152B81E8507A15141EC51B86E4BA554417B14AE2711A15141295C8F2249A55441F6285CCF1FA15141CDCCCCAC45A55441D7A3708D21A151411F85EB4145A55441EC51B82E2EA15141E17A143E42A55441713D0AF72EA15141F6285C0F42A55441AE47E1AA25A15141B81E85BB34A55441F6285CCF1DA1514185EB517829A55441D7A3704D1AA151410AD7A3802AA554419A9999A914A1514152B81E352CA5544185EB518814A15141EC51B8CE2CA554418FC2F54811A151410AD7A3F02DA554419A9999190EA15141D7A3700D2FA5544148E17A1408A151417B14AE5731A55441EC51B81EFDA05141295C8FE235A554413D0AD793F7A051416666661637A55441B81E85FBF4A051415C8FC24537A55441C3F528ACEDA051415C8FC2F538A55441D7A3706DEFA05141F6285CEF3EA55441CDCCCCCCF0A051419A99999941A55441050000009A999959F3A051413D0AD7A34AA554415C8FC2D5F4A05141EC51B86E4AA5544185EB5138F5A05141A4703D2A4DA55441713D0AB7F3A05141EC51B85E4DA554419A999959F3A051413D0AD7A34AA55441
+</a>
+
+<b>
+010600000001000000010300000001000000250000006EF925D2F0A051417F8EEACE41A55441A2665223F1A051415FDECEF544A554412FB5BD83F2A0514107B2924546A55441B06A36FFF3A05141B28A6D4347A5544178ED0E5FF5A05141D4A602CF47A5544129E3CDE4F7A05141A2A3162F49A55441966DD3D5F7A05141722F7BD64AA5544120B5EAFBF6A05141361F35854CA55441B081504EF6A05141604FA4694FA5544168ECFBCAFFA05141A68011434DA554414BA552A70EA15141AC6441BB49A55441C428D8261AA1514181B10CEC46A5544188A78A131CA15141400E1A9D45A55441420668811DA15141332C872C45A55441F09B7CAB20A15141769007FE43A55441D88942911BA151414EAEA1AD3CA554414F400A4F17A15141CBDC49183DA55441E334EDA714A151415FDC22FF3CA554418B23AEA010A151412EE081E13DA554417708EE560AA1514190E3B9AA3EA55441E4FD1EE207A1514169E407DD3EA554411FECB8C103A1514141E5550F3FA5544120E1C23301A1514190E3B9AA3EA5544120D6CCA5FEA0514124E392913EA554418CCBFD30FCA0514155DF33AF3DA5544103BE1D0CF9A05141FDCDF4A739A55441211D0683F7A05141A496F47137A55441314EB37FF5A051412D34563C37A554412D623FEBF1A0514169CECEFA37A55441CBDF2CACEDA05141D6E2CFF538A55441F077B0BDEDA05141758B703139A55441FAA118CEEDA05141C83F4C6939A55441439E2BE2EDA05141B339A4AD39A55441E38BB17AEEA05141545EEAB43BA554416136CCF0EFA05141E3396BEE3FA55441CDCCCCCCF0A051419A99999941A554416EF925D2F0A051417F8EEACE41A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288405 - 211047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000120000003D0AD7D38EA35141000000D02AA75441A4703DEA96A35141000000E022A75441F6285C6F92A351416666665621A7544148E17AB48EA3514185EB51A820A75441B81E855B88A35141666666C61AA7544148E17AF478A35141666666E611A7544185EB518878A3514114AE47B119A75441B81E85EB70A35141AE47E1FA13A754415C8FC2856BA35141AE47E10A10A754413D0AD7E36BA351419A9999990DA754417B14AE0764A35141295C8F220AA754418FC2F51857A35141AE47E15A06A75441333333B34EA35141EC51B87E12A7544148E17AF469A3514148E17AF41CA75441F6285CEF71A351416666665621A75441333333C37FA35141295C8FD22CA75441CDCCCCCC86A351417B14AEA730A754413D0AD7D38EA35141000000D02AA754410103000000010000000E00000085EB510892A3514152B81E359CA75441D7A370ED87A35141CDCCCCAC70A75441F6285C4F7EA351410000001074A754410AD7A3907CA351410AD7A3707CA7544148E17A8477A35141C3F528DC7FA75441666666E677A351418FC2F5A88BA7544152B81E9575A35141AE47E14A8FA75441CDCCCC9C71A3514148E17A7490A754410AD7A34072A35141CDCCCC3C93A754410000009073A351419A99991998A75441F6285C1F76A35141295C8F52A3A754410AD7A39079A35141D7A3700DADA75441D7A370ED7BA3514185EB5148B4A7544185EB510892A3514152B81E359CA75441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D1CFC9AE91A35141E9876AB39AA7544164EB7C8091A351415115F4EB99A75441BFF9FF0F91A3514194645A0798A75441470BC6108DA35141F70998D487A7544171A8B5F28CA35141EC04C34D86A75441A2377F9B8CA35141FF5B0CD684A75441FA41C4BA8BA351411113E80D81A75441290918388BA351416A5FF7DA7EA75441614AC94089A35141090A70AD7AA75441BF56537987A35141E4EEB91174A75441CA3CEEF285A3514142FB434A72A754414C6E16D57EA3514132A2DB9374A75441C2E9CE477FA3514143D1B29477A754416AFF33927EA35141DC81952E7AA754413E8A66377EA35141AD39EF8B7CA75441598192507AA35141BEB790CD80A754412D0CC5F579A351415F27448885A75441F5044E327AA35141F5044EDA8AA75441918809147AA351416DD20C828CA754410C29A10379A351418223870B8EA75441DDF8A66D75A351412ADC3A0B91A75441CBD6DC2B73A35141BF39D5A493A75441073DA92A74A351418DFB76BD97A754411B8E23B475A35141B2CA92889DA75441CE9F3EB777A3514191376D13A6A754410D145D097CA351413994C809B3A75441CA3CEEF285A351418751D299A7A7544136DFD0DA91A35141B86F16719BA75441D1CFC9AE91A35141E9876AB39AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288405 - 364888
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000120000003D0AD7D38EA35141000000D02AA75441A4703DEA96A35141000000E022A75441F6285C6F92A351416666665621A7544148E17AB48EA3514185EB51A820A75441B81E855B88A35141666666C61AA7544148E17AF478A35141666666E611A7544185EB518878A3514114AE47B119A75441B81E85EB70A35141AE47E1FA13A754415C8FC2856BA35141AE47E10A10A754413D0AD7E36BA351419A9999990DA754417B14AE0764A35141295C8F220AA754418FC2F51857A35141AE47E15A06A75441333333B34EA35141EC51B87E12A7544148E17AF469A3514148E17AF41CA75441F6285CEF71A351416666665621A75441333333C37FA35141295C8FD22CA75441CDCCCCCC86A351417B14AEA730A754413D0AD7D38EA35141000000D02AA754410103000000010000000E00000085EB510892A3514152B81E359CA75441D7A370ED87A35141CDCCCCAC70A75441F6285C4F7EA351410000001074A754410AD7A3907CA351410AD7A3707CA7544148E17A8477A35141C3F528DC7FA75441666666E677A351418FC2F5A88BA7544152B81E9575A35141AE47E14A8FA75441CDCCCC9C71A3514148E17A7490A754410AD7A34072A35141CDCCCC3C93A754410000009073A351419A99991998A75441F6285C1F76A35141295C8F52A3A754410AD7A39079A35141D7A3700DADA75441D7A370ED7BA3514185EB5148B4A7544185EB510892A3514152B81E359CA75441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D1CFC9AE91A35141E9876AB39AA7544164EB7C8091A351415115F4EB99A75441BFF9FF0F91A3514194645A0798A75441470BC6108DA35141F70998D487A7544171A8B5F28CA35141EC04C34D86A75441A2377F9B8CA35141FF5B0CD684A75441FA41C4BA8BA351411113E80D81A75441290918388BA351416A5FF7DA7EA75441614AC94089A35141090A70AD7AA75441BF56537987A35141E4EEB91174A75441CA3CEEF285A3514142FB434A72A754414C6E16D57EA3514132A2DB9374A75441C2E9CE477FA3514143D1B29477A754416AFF33927EA35141DC81952E7AA754413E8A66377EA35141AD39EF8B7CA75441598192507AA35141BEB790CD80A754412D0CC5F579A351415F27448885A75441F5044E327AA35141F5044EDA8AA75441918809147AA351416DD20C828CA754410C29A10379A351418223870B8EA75441DDF8A66D75A351412ADC3A0B91A75441CBD6DC2B73A35141BF39D5A493A75441073DA92A74A351418DFB76BD97A754411B8E23B475A35141B2CA92889DA75441CE9F3EB777A3514191376D13A6A754410D145D097CA351413994C809B3A75441CA3CEEF285A351418751D299A7A7544136DFD0DA91A35141B86F16719BA75441D1CFC9AE91A35141E9876AB39AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288428 - 391580
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000001C000000713D0AA706A35141F6285C3FE5A6544185EB51A802A35141F6285CFFDFA65441C3F5282CFDA2514148E17A54E1A6544148E17A74F3A251419A999949E3A6544133333323F2A2514152B81EE5E3A65441713D0A47F5A25141D7A3703DE4A65441333333F3F6A2514152B81E95E4A6544152B81E65F8A2514166666616E5A65441666666D6F9A25141A4703DBAE5A65441E17A144EFBA25141D7A3708DE6A65441E17A14AEFCA25141F6285C4FE7A65441CDCCCCECFEA25141CDCCCC5CE8A654416666661602A351419A999909EAA65441295C8F2205A35141B81E85BBEBA65441666666E606A351417B14AEB7ECA654417B14AEC708A3514166666696EDA654419A9999290BA351411F85EBC1EEA65441000000800DA35141A4703D0AF0A654418FC2F5080FA3514152B81EF5F0A654417B14AEB711A35141333333B3F2A654411F85EB7114A3514185EB5188F4A65441C3F5282C1AA35141AE47E1DAF7A65441713D0A871BA351413D0AD763F8A65441713D0A271AA3514152B81E85F2A65441AE47E1AA16A3514148E17AB4E9A654410AD7A39012A35141B81E856BEAA654419A9999B90EA35141C3F5286CE6A65441713D0AA706A35141F6285C3FE5A654410103000000010000002200000014AE470119A35141295C8FF2F7A65441A4703D1A17A351411F85EB01F7A654413D0AD77315A35141B81E850BF6A6544114AE478113A35141D7A370FDF4A6544152B81E6511A35141EC51B86EF3A65441D7A3705D10A35141CDCCCCACF2A654413D0AD7E30DA3514185EB5118F1A65441A4703D1A0CA35141A4703D0AF0A65441E17A140E09A35141CDCCCC8CEEA65441C3F528FC05A351415C8FC215EDA654418FC2F55803A3514166666686EBA654418FC2F5F8FEA25141CDCCCC0CE9A65441C3F5284CFDA2514148E17A74E8A65441F6285C0FFCA25141666666D6E7A65441CDCCCCCCFAA25141EC51B80EE7A65441E17A143EF9A25141295C8F12E6A654410AD7A3C0F7A25141B81E858BE5A65441B81E856BF0A25141295C8F42E4A65441B81E85BBEDA25141F6285C3FE5A65441C3F5287CE4A251413D0AD7F3E5A65441713D0AE7DDA251418FC2F598E7A65441E17A145EE6A25141295C8F82F3A6544166666606F1A251418FC2F59800A7544114AE4711EBA251415C8FC2C501A754415C8FC265F0A25141295C8F9207A75441A4703DBAF5A25141EC51B8FE08A75441CDCCCCEC05A351416666663609A75441AE47E1AA0BA3514152B81EA508A75441F6285C8F1AA35141B81E850B04A7544185EB51481CA35141A4703D2A02A75441E17A144E1DA3514185EB51F8FFA654417B14AEB71BA351411F85EB31F9A654411F85EBE11AA35141295C8FE2F8A6544114AE470119A35141295C8FF2F7A65441
+</a>
+
+<b>
+010600000001000000010300000001000000360000004D5CFB2104A35141852E3D3009A75441BD68592804A3514164CE335308A75441ADCA975706A35141BEADC99807A75441BB2BD68608A35141BEADC99807A75441E87CDF580AA3514164CE335308A75441192F275A0EA35141377D2A8106A754410F93B65C16A351410A2C21AF04A7544139155F4619A3514135EB4C3A03A75441779607301CA351416379D9AD00A75441A1C8A8721CA35141EAFCA366FCA654414200B81D1CA35141A775BE06FBA65441D917AEB71BA351417E93EB31F9A65441B06A1AB31BA35141FC873830F9A6544187E56CA91AA351413FCA560CF8A65441B12664F91AA351414689E92BF8A65441C165BE851BA351416F045463F8A6544139155F4619A35141B5326392F3A654410DC4557417A35141D45FB1D6EEA654416A724CA215A3514196DE08EDEBA654412CF1A3B812A3514199AD69D5EAA65441192F275A0EA351413D3CF648E8A6544147BDB3CD0BA35141B50B5731E7A65441BA99F83F05A3514186EBEC76E6A65441DD2785B302A351415808065EE1A65441926D0C3CFFA25141FABBF421E2A65441FCA72341FCA25141BBD78FBBE2A6544132AD8FDEF4A25141D7ECF531E4A654413FC14BE8F2A251415C3727B2E4A65441EE3BAB20ECA2514186EBEC76E6A65441F00A0C09EBA2514168FB21D4E6A65441FE07BB35E5A25141652CC1EBE7A65441DF85124CE2A25141954C2BA6E8A65441B065A891E1A251414B9D3478EAA6544168488FAAE6A2514188E159C0F1A654411D5C15DBECA2514142561E20FAA65441A9EDF221F0A2514125F830C4FDA654414E0E5DDCF0A25141AD28D0DBFEA65441882EC796F1A2514152493A96FFA65441882EC796F1A25141278A0E0B01A75441D1DDBDC4EFA25141099A436801A75441C54BE07DECA25141AEBAAD2202A7544121BD530AEFA25141915CC0C605A754412D4F3151F2A25141BEADC99807A754418CA38FD4F5A2514139D8D93E07A754415E017952F6A25141BEADC99807A7544132F51F1CF8A251411FD7E80609A75441F1C09E5EFAA25141FB74AD0E09A75441814C06AAFAA2514138AAB00F09A75441D55D1EACFAA25141FDDCB70F09A75441DEA3848700A351418F53951409A754414750C0D102A35141BA5DB92B09A754419AFA3A2203A35141C904CE2C09A75441C217323F03A35141BE96312D09A754414D5CFB2104A35141852E3D3009A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288435 - 211158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B000000666666F6879B5141AE47E1BAA6B05441F6285C1F789B5141333333739BB05441A4703D9A739B5141B81E853BA2B0544152B81E35759B5141EC51B8BEA2B05441AE47E13A739B51417B14AE37A9B05441D7A3702D709B5141295C8FE2A9B05441295C8F926F9B51419A999919A7B0544148E17AD46E9B51413D0AD7F3A7B05441000000806C9B5141F6285C9FA3B05441295C8F02699B51411F85EBB19EB05441295C8F52669B514148E17A349CB0544100000010649B514114AE47019AB0544114AE4731609B5141E17A144E94B0544114AE47115F9B514148E17A1491B05441000000905D9B5141295C8F128CB054417B14AE575B9B514152B81ED588B054411F85EBC1579B5141A4703D4A85B05441B81E85AB519B51419A9999997DB05441E17A14EE509B51417B14AE277EB05441713D0A174E9B5141333333D37AB05441D7A3704D4D9B514114AE471181B05441AE47E15A4D9B5141F6285C4F8AB0544166666626509B5141000000A091B054413D0AD7C3509B5141C3F5287C92B0544185EB5148589B5141CDCCCCFC9CB054419A999919609B514114AE4791A5B05441D7A3709D689B5141713D0A57AEB05441D7A3704D729B51419A9999D9BAB05441713D0A778A9B5141EC51B86ECDB05441C3F528EC909B5141295C8F12CBB054419A9999A99A9B5141C3F528FCC5B054413D0AD7339F9B5141F6285C7FC2B054411F85EB419E9B514152B81E05C0B0544133333353A09B51415C8FC2D5BBB0544148E17A04A39B51417B14AE27BDB0544152B81E45A49B51417B14AE07BDB054411F85EBD1A59B5141CDCCCCFCBAB054417B14AE57A79B5141A4703D8AB7B05441295C8F029C9B5141B81E850BB3B054411F85EB71999B5141713D0A07B2B054417B14AE27979B5141EC51B8BEB0B054413D0AD713909B51418FC2F5C8ACB05441666666F6879B5141AE47E1BAA6B05441
+</a>
+
+<b>
+01060000000100000001030000000100000064000000AE47E15A4D9B5141F6285C4F8AB054412A8243CB4D9B514117D77C758BB0544120C4C08D4F9B5141B8288EBF8FB05441EEE94DC6509B5141999F9B6690B05441DEBDD111529B5141BFE2D16F91B05441B25DC7E3529B5141147F7CDC92B05441457F6268539B5141289DCCFB93B05441579CA4DC539B5141C1841B5E95B05441FDB88554549B5141C2BEDD4D96B05441DC973B74559B5141BD60681598B054412B5A101C569B514159B70B7D99B05441338EAA2B569B51411B8A77099AB0544185EB5148589B5141CDCCCCFC9CB05441A450D35B589B5141183D35129DB0544104DB5003599B51415F9F143C9DB05441C73343245A9B5141951E9B389DB05441A5E2E0855B9B514169BE900A9EB05441858AE81C5E9B5141DC873326A1B054413598C8F55E9B5141FA45893AA3B05441EDF7BEFC629B5141D1777959A7B0544142A29C63679B5141EBEE7254ABB05441682BE9A3699B5141A3173FF3ADB05441CAB6FC8A6C9B5141BCD141CAB1B0544109BA6661739B5141D4B0A7D7B9B054419675A4CB769B5141D74C0290BCB054419C5DAD8A7A9B5141973874B7BEB05441D35AC5F0819B51414D06111AC4B054414F846270839B51410DF28241C6B05441AE15C8C7859B514196762C91C7B054417175BECE899B5141E8AC8518CAB054412E9514628C9B5141D28B3B38CBB05441A0F873D18E9B514183C96690CAB05441A36CF8B0909B51413DCDCFF8C8B05441FD3A8960929B514153EE19D9C7B05441220A1A10949B5141F7D03861C7B054417A9EE8CF949B5141CDDDF468C8B05441140BBD14959B51410957C7C4C8B054419A9999A99A9B5141C3F528FCC5B054412E91568B9B9B5141D21AC14EC5B05441D8A453D59E9B5141DCDC739AC2B05441374B16119F9B5141BE3AD66CC2B0544189E27E2D9E9B5141B5D320FBBFB0544142516B49A09B5141E8E08EE9BBB0544133333353A09B51415C8FC2D5BBB054413CEAB5F5A29B514192757020BDB05441D694AE48A49B51418D66DE02BDB0544198EF2849A49B514115405B02BDB0544166303D48A59B51414D5E3AB2BBB05441A0B290ABA59B5141F0396804BBB054410A9F41A3A69B51417819C922B9B05441DE9B0043A79B51415E7B77A6B7B0544120DBAC5CA19B5141D40BE14DB5B054416EEEB966999B51417340B906B2B054415FAA2309909B5141F12E13C8ACB0544104183DE3879B5141964495EDA6B0544140E766D5789B51418700D6F49BB05441EE6A0EA9789B5141FFA741D59BB05441E4E99E68789B51419FDB5EA79BB05441977A8137789B51415C0C65849BB05441165F6822789B51411BCE5E759BB05441184F8EED749B514100D4A447A0B05441D413179D739B51419A1A6E3CA2B0544152B81E35759B5141EC51B8BEA2B05441AE47E13A739B51417B14AE37A9B05441D6D6D2D9719B51419B4CE284A9B054418DA43CB3719B51417165528DA9B05441D7A3702D709B5141295C8FE2A9B054415B188FE46F9B5141D0F91093A8B05441D3CCA8C66F9B514148EA6D09A8B0544167B786996F9B514156EFAA39A7B0544164DF5BDA6E9B5141E41517EDA7B0544148E17AD46E9B51413D0AD7F3A7B0544193A4AD7D6E9B514192C78752A7B054419CF01A556D9B51417174F263A5B05441EEC30D776C9B51410A1BD8A7A3B054415210D9FE689B5141349E8CAF9EB054417E55AE2E669B5141B195673F9CB0544129268CEE639B5141126745FF99B05441A2632A5A629B5141A458687C97B0544114AE4731609B5141E17A144E94B05441E09B79755F9B51411BADB43392B0544114AA40F65E9B51416BAABCFE90B05441473C1D3A5E9B5141693A92488EB05441000000905D9B5141295C8F128CB054416D6E7FC95C9B514161A3DAF08AB05441DA571C925C9B51417E865CAA8AB054419BBF42F45B9B514127ABA4B989B054417B14AE575B9B514152B81ED588B054411582E5AE5A9B51413762562E88B05441E26F41C4579B51418F6F525A85B0544128F22403549B5141D6A86AA580B05441E29969B4519B51417880E7AD7DB0544194B3C6F9509B5141F569E81E7EB05441E17A14EE509B51417B14AE277EB05441511821ED509B5141D8B390267EB05441A9486ADD509B5141A46914307EB054416C3DDD114F9B5141BEDB4CF97BB05441713D0A174E9B5141333333D37AB05441D7A3704D4D9B514114AE471181B05441AE47E15A4D9B5141F6285C4F8AB05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288435 - 371529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B000000666666F6879B5141AE47E1BAA6B05441F6285C1F789B5141333333739BB05441A4703D9A739B5141B81E853BA2B0544152B81E35759B5141EC51B8BEA2B05441AE47E13A739B51417B14AE37A9B05441D7A3702D709B5141295C8FE2A9B05441295C8F926F9B51419A999919A7B0544148E17AD46E9B51413D0AD7F3A7B05441000000806C9B5141F6285C9FA3B05441295C8F02699B51411F85EBB19EB05441295C8F52669B514148E17A349CB0544100000010649B514114AE47019AB0544114AE4731609B5141E17A144E94B0544114AE47115F9B514148E17A1491B05441000000905D9B5141295C8F128CB054417B14AE575B9B514152B81ED588B054411F85EBC1579B5141A4703D4A85B05441B81E85AB519B51419A9999997DB05441E17A14EE509B51417B14AE277EB05441713D0A174E9B5141333333D37AB05441D7A3704D4D9B514114AE471181B05441AE47E15A4D9B5141F6285C4F8AB0544166666626509B5141000000A091B054413D0AD7C3509B5141C3F5287C92B0544185EB5148589B5141CDCCCCFC9CB054419A999919609B514114AE4791A5B05441D7A3709D689B5141713D0A57AEB05441D7A3704D729B51419A9999D9BAB05441713D0A778A9B5141EC51B86ECDB05441C3F528EC909B5141295C8F12CBB054419A9999A99A9B5141C3F528FCC5B054413D0AD7339F9B5141F6285C7FC2B054411F85EB419E9B514152B81E05C0B0544133333353A09B51415C8FC2D5BBB0544148E17A04A39B51417B14AE27BDB0544152B81E45A49B51417B14AE07BDB054411F85EBD1A59B5141CDCCCCFCBAB054417B14AE57A79B5141A4703D8AB7B05441295C8F029C9B5141B81E850BB3B054411F85EB71999B5141713D0A07B2B054417B14AE27979B5141EC51B8BEB0B054413D0AD713909B51418FC2F5C8ACB05441666666F6879B5141AE47E1BAA6B05441
+</a>
+
+<b>
+01060000000100000001030000000100000064000000AE47E15A4D9B5141F6285C4F8AB054412A8243CB4D9B514117D77C758BB0544120C4C08D4F9B5141B8288EBF8FB05441EEE94DC6509B5141999F9B6690B05441DEBDD111529B5141BFE2D16F91B05441B25DC7E3529B5141147F7CDC92B05441457F6268539B5141289DCCFB93B05441579CA4DC539B5141C1841B5E95B05441FDB88554549B5141C2BEDD4D96B05441DC973B74559B5141BD60681598B054412B5A101C569B514159B70B7D99B05441338EAA2B569B51411B8A77099AB0544185EB5148589B5141CDCCCCFC9CB05441A450D35B589B5141183D35129DB0544104DB5003599B51415F9F143C9DB05441C73343245A9B5141951E9B389DB05441A5E2E0855B9B514169BE900A9EB05441858AE81C5E9B5141DC873326A1B054413598C8F55E9B5141FA45893AA3B05441EDF7BEFC629B5141D1777959A7B0544142A29C63679B5141EBEE7254ABB05441682BE9A3699B5141A3173FF3ADB05441CAB6FC8A6C9B5141BCD141CAB1B0544109BA6661739B5141D4B0A7D7B9B054419675A4CB769B5141D74C0290BCB054419C5DAD8A7A9B5141973874B7BEB05441D35AC5F0819B51414D06111AC4B054414F846270839B51410DF28241C6B05441AE15C8C7859B514196762C91C7B054417175BECE899B5141E8AC8518CAB054412E9514628C9B5141D28B3B38CBB05441A0F873D18E9B514183C96690CAB05441A36CF8B0909B51413DCDCFF8C8B05441FD3A8960929B514153EE19D9C7B05441220A1A10949B5141F7D03861C7B054417A9EE8CF949B5141CDDDF468C8B05441140BBD14959B51410957C7C4C8B054419A9999A99A9B5141C3F528FCC5B054412E91568B9B9B5141D21AC14EC5B05441D8A453D59E9B5141DCDC739AC2B05441374B16119F9B5141BE3AD66CC2B0544189E27E2D9E9B5141B5D320FBBFB0544142516B49A09B5141E8E08EE9BBB0544133333353A09B51415C8FC2D5BBB054413CEAB5F5A29B514192757020BDB05441D694AE48A49B51418D66DE02BDB0544198EF2849A49B514115405B02BDB0544166303D48A59B51414D5E3AB2BBB05441A0B290ABA59B5141F0396804BBB054410A9F41A3A69B51417819C922B9B05441DE9B0043A79B51415E7B77A6B7B0544120DBAC5CA19B5141D40BE14DB5B054416EEEB966999B51417340B906B2B054415FAA2309909B5141F12E13C8ACB0544104183DE3879B5141964495EDA6B0544140E766D5789B51418700D6F49BB05441EE6A0EA9789B5141FFA741D59BB05441E4E99E68789B51419FDB5EA79BB05441977A8137789B51415C0C65849BB05441165F6822789B51411BCE5E759BB05441184F8EED749B514100D4A447A0B05441D413179D739B51419A1A6E3CA2B0544152B81E35759B5141EC51B8BEA2B05441AE47E13A739B51417B14AE37A9B05441D6D6D2D9719B51419B4CE284A9B054418DA43CB3719B51417165528DA9B05441D7A3702D709B5141295C8FE2A9B054415B188FE46F9B5141D0F91093A8B05441D3CCA8C66F9B514148EA6D09A8B0544167B786996F9B514156EFAA39A7B0544164DF5BDA6E9B5141E41517EDA7B0544148E17AD46E9B51413D0AD7F3A7B0544193A4AD7D6E9B514192C78752A7B054419CF01A556D9B51417174F263A5B05441EEC30D776C9B51410A1BD8A7A3B054415210D9FE689B5141349E8CAF9EB054417E55AE2E669B5141B195673F9CB0544129268CEE639B5141126745FF99B05441A2632A5A629B5141A458687C97B0544114AE4731609B5141E17A144E94B05441E09B79755F9B51411BADB43392B0544114AA40F65E9B51416BAABCFE90B05441473C1D3A5E9B5141693A92488EB05441000000905D9B5141295C8F128CB054416D6E7FC95C9B514161A3DAF08AB05441DA571C925C9B51417E865CAA8AB054419BBF42F45B9B514127ABA4B989B054417B14AE575B9B514152B81ED588B054411582E5AE5A9B51413762562E88B05441E26F41C4579B51418F6F525A85B0544128F22403549B5141D6A86AA580B05441E29969B4519B51417880E7AD7DB0544194B3C6F9509B5141F569E81E7EB05441E17A14EE509B51417B14AE277EB05441511821ED509B5141D8B390267EB05441A9486ADD509B5141A46914307EB054416C3DDD114F9B5141BEDB4CF97BB05441713D0A174E9B5141333333D37AB05441D7A3704D4D9B514114AE471181B05441AE47E15A4D9B5141F6285C4F8AB05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288473 - 1178206
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000032000000666666A66A9A5141A4703D2A0EB0544185EB5168699A51419A9999390EB0544133333393679A5141F6285CEF0DB0544185EB5158679A5141A4703DEA0EB054417B14AE57649A51411F85EB710EB05441F6285C9F649A51411F85EBC10CB05441F6285C3F629A51411F85EB910CB0544166666646629A5141EC51B8BE0BB05441713D0A07619A514114AE47A10BB05441AE47E15A619A5141F6285C4F07B05441F6285C8F659A51417B14AEB707B05441E17A14FE669A5141A4703D7A05B05441000000D0689A5141000000D001B054418FC2F518659A51415C8FC2A500B0544185EB51E8609A51418FC2F54803B05441E17A145E609A5141B81E85AB03B054413D0AD763619A5141D7A370AD04B05441AE47E1AA609A5141CDCCCCBC05B0544148E17A845F9A5141B81E851B06B05441CDCCCC2C5E9A5141F6285C7F06B0544185EB51585D9A5141C3F5288C08B054411F85EB515C9A5141C3F528AC0BB05441333333735B9A514152B81EA50DB05441666666865A9A5141A4703DAA10B0544185EB5118609A514114AE472112B054413D0AD733689A5141B81E859B14B0544185EB51086E9A5141D7A3704D16B0544152B81EC56D9A5141295C8F4214B0544114AE47C16E9A51417B14AEA712B0544114AE47E16F9A5141D7A3704D12B054418FC2F528719A5141EC51B88E12B05441A4703DAA729A51413D0AD71314B054417B14AE27739A51415C8FC20514B054410AD7A340739A51410AD7A3D00EB05441333333D3739A5141D7A370DD0EB05441713D0A87759A514114AE47D107B054418FC2F588719A5141D7A370FD04B054411F85EBE16C9A5141713D0AB706B0544114AE47E16D9A51418FC2F53809B054413D0AD7C36D9A5141B81E851B0AB05441000000B06D9A5141666666B60AB054417B14AE176D9A5141295C8FA20AB05441D7A370ED6C9A51419A9999890BB05441D7A370DD6C9A5141E17A14CE0BB054418FC2F5986C9A5141E17A14BE0BB054418FC2F5A86C9A51419A9999790BB054415C8FC2C56C9A5141CDCCCCCC0AB054418FC2F5F86C9A514114AE476109B05441D7A3706D6B9A514114AE474109B05441666666A66A9A5141A4703D2A0EB0544107000000666666965F9A5141D7A3705D0FB0544114AE47F15E9A51417B14AEE70EB0544114AE47F15E9A51413D0AD7130EB054413D0AD703609A5141713D0A670DB0544148E17A84619A5141B81E852B0EB05441EC51B80E619A51413D0AD7A30FB05441666666965F9A5141D7A3705D0FB054410103000000010000000D00000048E17A94699A51418FC2F5E801B054417B14AE77679A5141000000A005B054418FC2F5A8669A51410000003007B0544114AE47C1659A5141EC51B83E09B05441E17A145E659A51411F85EBA10AB05441EC51B81E659A5141D7A3703D0CB054419A9999A9679A51415C8FC2A50CB054411F85EB21689A514148E17A6409B054419A999979689A51416666661607B05441AE47E1CA689A514148E17AA405B05441295C8FB26C9A51418FC2F56806B05441C3F528DC709A51411F85EB9104B0544148E17A94699A51418FC2F5E801B05441
+</a>
+
+<b>
+0106000000010000000103000000020000003C000000FD3EB5CC709A5141A41CC09804B05441006072C0709A51412CD7C09404B0544148E17A94699A51418FC2F5E801B054417B14AE77679A5141000000A005B054418FC2F5A8669A51410000003007B0544114AE47C1659A5141EC51B83E09B05441E17A145E659A51411F85EBA10AB05441EC51B81E659A5141D7A3703D0CB054419A9999A9679A51415C8FC2A50CB05441F1A5AB21689A5141E839356609B0544100D34FC5689A51412D63D2BD05B0544104AF8D0C6D9A51410181945106B05441B75D63B06C9A5141503A176608B05441A6AED8ED6D9A51419E8B41C208B05441EDA20C216E9A514150A26F1E0AB0544164179BE36D9A51410A1694A30BB054418FC2F5986C9A5141E17A14BE0BB05441690C39546C9A51413439F8090BB05441690C39546C9A51417468DD5B09B05441F88162736B9A5141F6CEC24109B05441D31C8D036B9A514126C4FADD0BB05441666666A66A9A5141A4703D2A0EB0544185EB5168699A51419A9999390EB0544133333393679A5141F6285CEF0DB0544185EB5158679A5141A4703DEA0EB054417B14AE57649A51411F85EB710EB05441F6285C9F649A51411F85EBC10CB05441F6285C3F629A51411F85EB910CB0544166666646629A5141EC51B8BE0BB05441713D0A07619A514114AE47A10BB05441AE47E15A619A5141F6285C4F07B05441F6285C8F659A51417B14AEB707B05441E17A14FE669A5141A4703D7A05B05441000000D0689A5141000000D001B054418FC2F518659A51415C8FC2A500B0544185EB51E8609A51418FC2F54803B05441E17A145E609A5141B81E85AB03B054413D0AD763619A5141D7A370AD04B05441AE47E1AA609A5141CDCCCCBC05B0544148E17A845F9A5141B81E851B06B05441CDCCCC2C5E9A5141F6285C7F06B0544185EB51585D9A5141C3F5288C08B054411F85EB515C9A5141C3F528AC0BB05441333333735B9A514152B81EA50DB05441666666865A9A5141A4703DAA10B0544185EB5118609A514114AE472112B054413D0AD733689A5141B81E859B14B0544185EB51086E9A5141D7A3704D16B0544152B81EC56D9A5141295C8F4214B0544114AE47C16E9A51417B14AEA712B0544114AE47E16F9A5141D7A3704D12B054418FC2F528719A5141EC51B88E12B05441A4703DAA729A51413D0AD71314B054417B14AE27739A51415C8FC20514B054410AD7A340739A51410AD7A3D00EB05441333333D3739A5141D7A370DD0EB05441713D0A87759A514114AE47D107B054418FC2F588719A5141D7A370FD04B054418E244DCE709A5141EBCD0B9804B05441FD3EB5CC709A5141A41CC09804B0544107000000666666965F9A5141D7A3705D0FB0544114AE47F15E9A51417B14AEE70EB0544114AE47F15E9A51413D0AD7130EB054413D0AD703609A5141713D0A670DB0544148E17A84619A5141B81E852B0EB05441EC51B80E619A51413D0AD7A30FB05441666666965F9A5141D7A3705D0FB05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288473 - 3593679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000032000000666666A66A9A5141A4703D2A0EB0544185EB5168699A51419A9999390EB0544133333393679A5141F6285CEF0DB0544185EB5158679A5141A4703DEA0EB054417B14AE57649A51411F85EB710EB05441F6285C9F649A51411F85EBC10CB05441F6285C3F629A51411F85EB910CB0544166666646629A5141EC51B8BE0BB05441713D0A07619A514114AE47A10BB05441AE47E15A619A5141F6285C4F07B05441F6285C8F659A51417B14AEB707B05441E17A14FE669A5141A4703D7A05B05441000000D0689A5141000000D001B054418FC2F518659A51415C8FC2A500B0544185EB51E8609A51418FC2F54803B05441E17A145E609A5141B81E85AB03B054413D0AD763619A5141D7A370AD04B05441AE47E1AA609A5141CDCCCCBC05B0544148E17A845F9A5141B81E851B06B05441CDCCCC2C5E9A5141F6285C7F06B0544185EB51585D9A5141C3F5288C08B054411F85EB515C9A5141C3F528AC0BB05441333333735B9A514152B81EA50DB05441666666865A9A5141A4703DAA10B0544185EB5118609A514114AE472112B054413D0AD733689A5141B81E859B14B0544185EB51086E9A5141D7A3704D16B0544152B81EC56D9A5141295C8F4214B0544114AE47C16E9A51417B14AEA712B0544114AE47E16F9A5141D7A3704D12B054418FC2F528719A5141EC51B88E12B05441A4703DAA729A51413D0AD71314B054417B14AE27739A51415C8FC20514B054410AD7A340739A51410AD7A3D00EB05441333333D3739A5141D7A370DD0EB05441713D0A87759A514114AE47D107B054418FC2F588719A5141D7A370FD04B054411F85EBE16C9A5141713D0AB706B0544114AE47E16D9A51418FC2F53809B054413D0AD7C36D9A5141B81E851B0AB05441000000B06D9A5141666666B60AB054417B14AE176D9A5141295C8FA20AB05441D7A370ED6C9A51419A9999890BB05441D7A370DD6C9A5141E17A14CE0BB054418FC2F5986C9A5141E17A14BE0BB054418FC2F5A86C9A51419A9999790BB054415C8FC2C56C9A5141CDCCCCCC0AB054418FC2F5F86C9A514114AE476109B05441D7A3706D6B9A514114AE474109B05441666666A66A9A5141A4703D2A0EB0544107000000666666965F9A5141D7A3705D0FB0544114AE47F15E9A51417B14AEE70EB0544114AE47F15E9A51413D0AD7130EB054413D0AD703609A5141713D0A670DB0544148E17A84619A5141B81E852B0EB05441EC51B80E619A51413D0AD7A30FB05441666666965F9A5141D7A3705D0FB054410103000000010000000D00000048E17A94699A51418FC2F5E801B054417B14AE77679A5141000000A005B054418FC2F5A8669A51410000003007B0544114AE47C1659A5141EC51B83E09B05441E17A145E659A51411F85EBA10AB05441EC51B81E659A5141D7A3703D0CB054419A9999A9679A51415C8FC2A50CB054411F85EB21689A514148E17A6409B054419A999979689A51416666661607B05441AE47E1CA689A514148E17AA405B05441295C8FB26C9A51418FC2F56806B05441C3F528DC709A51411F85EB9104B0544148E17A94699A51418FC2F5E801B05441
+</a>
+
+<b>
+0106000000010000000103000000020000003C000000FD3EB5CC709A5141A41CC09804B05441006072C0709A51412CD7C09404B0544148E17A94699A51418FC2F5E801B054417B14AE77679A5141000000A005B054418FC2F5A8669A51410000003007B0544114AE47C1659A5141EC51B83E09B05441E17A145E659A51411F85EBA10AB05441EC51B81E659A5141D7A3703D0CB054419A9999A9679A51415C8FC2A50CB05441F1A5AB21689A5141E839356609B0544100D34FC5689A51412D63D2BD05B0544104AF8D0C6D9A51410181945106B05441B75D63B06C9A5141503A176608B05441A6AED8ED6D9A51419E8B41C208B05441EDA20C216E9A514150A26F1E0AB0544164179BE36D9A51410A1694A30BB054418FC2F5986C9A5141E17A14BE0BB05441690C39546C9A51413439F8090BB05441690C39546C9A51417468DD5B09B05441F88162736B9A5141F6CEC24109B05441D31C8D036B9A514126C4FADD0BB05441666666A66A9A5141A4703D2A0EB0544185EB5168699A51419A9999390EB0544133333393679A5141F6285CEF0DB0544185EB5158679A5141A4703DEA0EB054417B14AE57649A51411F85EB710EB05441F6285C9F649A51411F85EBC10CB05441F6285C3F629A51411F85EB910CB0544166666646629A5141EC51B8BE0BB05441713D0A07619A514114AE47A10BB05441AE47E15A619A5141F6285C4F07B05441F6285C8F659A51417B14AEB707B05441E17A14FE669A5141A4703D7A05B05441000000D0689A5141000000D001B054418FC2F518659A51415C8FC2A500B0544185EB51E8609A51418FC2F54803B05441E17A145E609A5141B81E85AB03B054413D0AD763619A5141D7A370AD04B05441AE47E1AA609A5141CDCCCCBC05B0544148E17A845F9A5141B81E851B06B05441CDCCCC2C5E9A5141F6285C7F06B0544185EB51585D9A5141C3F5288C08B054411F85EB515C9A5141C3F528AC0BB05441333333735B9A514152B81EA50DB05441666666865A9A5141A4703DAA10B0544185EB5118609A514114AE472112B054413D0AD733689A5141B81E859B14B0544185EB51086E9A5141D7A3704D16B0544152B81EC56D9A5141295C8F4214B0544114AE47C16E9A51417B14AEA712B0544114AE47E16F9A5141D7A3704D12B054418FC2F528719A5141EC51B88E12B05441A4703DAA729A51413D0AD71314B054417B14AE27739A51415C8FC20514B054410AD7A340739A51410AD7A3D00EB05441333333D3739A5141D7A370DD0EB05441713D0A87759A514114AE47D107B054418FC2F588719A5141D7A370FD04B054418E244DCE709A5141EBCD0B9804B05441FD3EB5CC709A5141A41CC09804B0544107000000666666965F9A5141D7A3705D0FB0544114AE47F15E9A51417B14AEE70EB0544114AE47F15E9A51413D0AD7130EB054413D0AD703609A5141713D0A670DB0544148E17A84619A5141B81E852B0EB05441EC51B80E619A51413D0AD7A30FB05441666666965F9A5141D7A3705D0FB05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288556 - 211307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD7A304915141E17A14AE43AC54418FC2F588019151413D0AD7F340AC544148E17A7400915141000000F040AC544133333373FF905141000000D03FAC54413D0AD753FD905141B81E855B3DAC5441E17A143EFA905141F6285CDF3AAC54419A9999C9F6905141AE47E11A3BAC544100000010F5905141A4703D7A3BAC5441713D0A07F4905141333333C33CAC54419A999939F690514114AE47013FAC54413D0AD733FB905141713D0AE744AC54413D0AD7C3009151419A99998941AC5441D7A370CD0391514152B81E6544AC5441AE47E1BA04915141713D0A1746AC54410AD7A37007915141A4703DCA4CAC5441EC51B8DE0A91514114AE47D14CAC5441D7A370BD0A915141B81E859B4EAC544100000030089151413D0AD7A34EAC544114AE478108915141CDCCCC6C4FAC5441CDCCCCCC0C915141E17A148E4FAC5441295C8F321D915141F6285CFF51AC5441D7A3705D1F915141295C8F2261AC544152B81E55259151413D0AD74362AC54415C8FC2A530915141713D0AE761AC5441F6285CAF30915141EC51B80E67AC54410000002038915141A4703D2A65AC5441333333F33E915141333333B360AC5441000000003E9151419A9999D954AC5441C3F5289C44915141D7A3703D53AC544185EB51B83F915141CDCCCCCC49AC5441D7A3700D3E915141A4703D2A49AC54417B14AEB73E915141F6285C5F44AC5441666666E654915141F6285C6F2EAC54415C8FC2B5589151418FC2F5B82AAC5441AE47E1FA5D9151415C8FC29525AC5441F6285CBF6B915141AE47E10A18AC54411F85EB816C915141C3F5284C17AC54413D0AD7A369915141A4703D5A12AC5441713D0A37669151417B14AE670CAC5441B81E85EB63915141666666260CAC5441E17A142E629151415C8FC2D50BAC5441295C8FD2609151413D0AD7730BAC54417B14AEF7509151410AD7A3E018AC5441A4703D0A3B9151419A9999392EAC544166666656369151417B14AED72FAC54410AD7A3202F915141A4703D4A32AC54413333333325915141B81E85AB35AC5441CDCCCC8C1B9151418FC2F52838AC5441713D0A1718915141F6285CAF38AC5441EC51B81E0F915141EC51B85E39AC54411F85EBF10E915141666666363DAC5441A4703D5A0E91514152B81E9540AC5441B81E852B0D915141D7A3704D43AC54411F85EB51089151413D0AD7F343AC54413D0AD7A304915141E17A14AE43AC5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000E6EC3F0A3B9151412C2E97392EAC544166666656369151417B14AED72FAC5441AC2214AE369151411DAF009032AC544102A378463C9151410D30A2EE39AC5441F1AFD0FB3D915141A4C250633CAC54413737D2F13E9151410AD654F33EAC54416AABADB73E9151413FF25C5F44AC5441907031025491514137E00B512FAC5441FD7067E6549151413D1D5B6F2EAC5441BFDC521E559151415910DE382EAC54415C8FC2B5589151418FC2F5B82AAC5441EACFEA605A91514169E08A1829AC54413776E0FA5D9151417941C29525AC54415EFB5BBF6B91514191EDDF0A18AC544127BC35126C915141A850AAB917AC54411F85EB816C915141C3F5284C17AC54413D0AD7A369915141A4703D5A12AC5441713D0A37669151417B14AE670CAC544135A792A665915141E6CAA0570CAC5441C4DC83EB63915141C3B367260CAC5441E5B2132E6291514153B6C2D50BAC5441DAB5079460915141055203B30BAC5441CF72D4A55A915141B2194DAE10AC54417B14AEF7509151410AD7A3E018AC5441E6EC3F0A3B9151412C2E97392EAC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288556 - 263226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD7A304915141E17A14AE43AC54418FC2F588019151413D0AD7F340AC544148E17A7400915141000000F040AC544133333373FF905141000000D03FAC54413D0AD753FD905141B81E855B3DAC5441E17A143EFA905141F6285CDF3AAC54419A9999C9F6905141AE47E11A3BAC544100000010F5905141A4703D7A3BAC5441713D0A07F4905141333333C33CAC54419A999939F690514114AE47013FAC54413D0AD733FB905141713D0AE744AC54413D0AD7C3009151419A99998941AC5441D7A370CD0391514152B81E6544AC5441AE47E1BA04915141713D0A1746AC54410AD7A37007915141A4703DCA4CAC5441EC51B8DE0A91514114AE47D14CAC5441D7A370BD0A915141B81E859B4EAC544100000030089151413D0AD7A34EAC544114AE478108915141CDCCCC6C4FAC5441CDCCCCCC0C915141E17A148E4FAC5441295C8F321D915141F6285CFF51AC5441D7A3705D1F915141295C8F2261AC544152B81E55259151413D0AD74362AC54415C8FC2A530915141713D0AE761AC5441F6285CAF30915141EC51B80E67AC54410000002038915141A4703D2A65AC5441333333F33E915141333333B360AC5441000000003E9151419A9999D954AC5441C3F5289C44915141D7A3703D53AC544185EB51B83F915141CDCCCCCC49AC5441D7A3700D3E915141A4703D2A49AC54417B14AEB73E915141F6285C5F44AC5441666666E654915141F6285C6F2EAC54415C8FC2B5589151418FC2F5B82AAC5441AE47E1FA5D9151415C8FC29525AC5441F6285CBF6B915141AE47E10A18AC54411F85EB816C915141C3F5284C17AC54413D0AD7A369915141A4703D5A12AC5441713D0A37669151417B14AE670CAC5441B81E85EB63915141666666260CAC5441E17A142E629151415C8FC2D50BAC5441295C8FD2609151413D0AD7730BAC54417B14AEF7509151410AD7A3E018AC5441A4703D0A3B9151419A9999392EAC544166666656369151417B14AED72FAC54410AD7A3202F915141A4703D4A32AC54413333333325915141B81E85AB35AC5441CDCCCC8C1B9151418FC2F52838AC5441713D0A1718915141F6285CAF38AC5441EC51B81E0F915141EC51B85E39AC54411F85EBF10E915141666666363DAC5441A4703D5A0E91514152B81E9540AC5441B81E852B0D915141D7A3704D43AC54411F85EB51089151413D0AD7F343AC54413D0AD7A304915141E17A14AE43AC5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000E6EC3F0A3B9151412C2E97392EAC544166666656369151417B14AED72FAC5441AC2214AE369151411DAF009032AC544102A378463C9151410D30A2EE39AC5441F1AFD0FB3D915141A4C250633CAC54413737D2F13E9151410AD654F33EAC54416AABADB73E9151413FF25C5F44AC5441907031025491514137E00B512FAC5441FD7067E6549151413D1D5B6F2EAC5441BFDC521E559151415910DE382EAC54415C8FC2B5589151418FC2F5B82AAC5441EACFEA605A91514169E08A1829AC54413776E0FA5D9151417941C29525AC54415EFB5BBF6B91514191EDDF0A18AC544127BC35126C915141A850AAB917AC54411F85EB816C915141C3F5284C17AC54413D0AD7A369915141A4703D5A12AC5441713D0A37669151417B14AE670CAC544135A792A665915141E6CAA0570CAC5441C4DC83EB63915141C3B367260CAC5441E5B2132E6291514153B6C2D50BAC5441DAB5079460915141055203B30BAC5441CF72D4A55A915141B2194DAE10AC54417B14AEF7509151410AD7A3E018AC5441E6EC3F0A3B9151412C2E97392EAC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>484247 - 214009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5880F1C5141666666564608554152B81E751C1C5141E17A144E39085541F6285C3F161C5141713D0AA736085541A4703D3A141C51415C8FC20535085541E17A141E131C51419A99993933085541C3F528DC121C51417B14AE27320855419A999929121C514114AE47D12F085541713D0AB7131C51411F85EB312A085541000000500F1C5141D7A3700D29085541A4703D9A0D1C5141F6285C5F2A0855413D0AD7F30A1C5141E17A143E2D085541A4703D8A061C5141B81E852B3208554133333333021C51419A9999993908554148E17A54FF1B514185EB51B83D085541D7A370BDF91B51415C8FC2B544085541713D0AB7F51B514148E17AB447085541F6285C5F001C51415C8FC2A552085541C3F528BC061C5141AE47E10A4D0855418FC2F5880F1C51416666665646085541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000A4703D8A061C5141B81E852B3208554166138137061C51415C8329B93208554171EE06BD051C514103556B513408554181DAE0CE041C51410571FB5F35085541186A2495031C5141DA3B617037085541B9194D06031C5141E4B74BD7380855415F5BA20C021C51413E76F6D039085541C5E72D04021C51416C9E19DD39085541A3912EFC011C5141FFA694E8390855419FF8F7DF011C514113FB14113A085541322FF0AA011C5141AFE83B1A3B08554199E85CC3001C514127A57DAF3C0855417CCD388BFE1B51410D8FFBB33E085541CF71C509FE1B5141CA93DA553F0855412BE2B2C9FB1B514130958404430855410AB1C286F91B514151C67447450855411A91A29DF71B51415EAA674A46085541ACCBA024F71B5141AA3472A446085541C35DC5EAF51B514190ADFC8D4708554112EF256CFE1B51417248B0665008554168FD926B081C51416FC729E345085541D094A5AD081C514199F1BA904208554119E78C88131C514197CA19FF34085541B18A56FC131C514197CA19FF3408554159889F66131C5141ACC7E8FD3308554180A0F9A0121C514110E0BCA33308554180A0F9A0121C51417C6A0EF6320855415C41EE97101C51414B80B19A310855412244C314131C5141D93374B92B08554192FC2F2D121C51414F1BFC972A085541606F095E101C514154ECE0D12A085541953E191B0E1C514145BEC50B2B08554177B0F24B0C1C5141DBD63D2D2C085541C209545B091C5141C06739793008554140FBD1D9061C5141FCD1A6D231085541A4703D8A061C5141B81E852B32085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>484247 - 357131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5880F1C5141666666564608554152B81E751C1C5141E17A144E39085541F6285C3F161C5141713D0AA736085541A4703D3A141C51415C8FC20535085541E17A141E131C51419A99993933085541C3F528DC121C51417B14AE27320855419A999929121C514114AE47D12F085541713D0AB7131C51411F85EB312A085541000000500F1C5141D7A3700D29085541A4703D9A0D1C5141F6285C5F2A0855413D0AD7F30A1C5141E17A143E2D085541A4703D8A061C5141B81E852B3208554133333333021C51419A9999993908554148E17A54FF1B514185EB51B83D085541D7A370BDF91B51415C8FC2B544085541713D0AB7F51B514148E17AB447085541F6285C5F001C51415C8FC2A552085541C3F528BC061C5141AE47E10A4D0855418FC2F5880F1C51416666665646085541
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D8A061C5141B81E852B3208554165138137061C51415F8329B93208554171EE06BD051C514103556B51340855417EDAE0CE041C51410A71FB5F35085541156A2495031C5141D73B617037085541B9194D06031C5141E4B74BD7380855415A5BA20C021C51414376F6D039085541C2E72D04021C51416F9E19DD390855411EEB5CE6011C5141CF13E7073A085541A0F8F7DF011C514111FB14113A085541322FF0AA011C5141AFE83B1A3B08554199E85CC3001C514127A57DAF3C0855417ACD388BFE1B51410C8FFBB33E085541CB71C509FE1B5141C893DA553F0855412BE2B2C9FB1B514130958404430855410AB1C286F91B514151C67447450855411991A29DF71B514159AA674A46085541DC91786CF61B5141E4317A2D470855415A724918F61B5141475F1E6C47085541BE5DC5EAF51B514194ADFC8D4708554115EF256CFE1B51417148B0665008554164FD926B081C51416FC729E345085541D094A5AD081C514199F1BA904208554119E78C88131C514197CA19FF34085541B18A56FC131C514197CA19FF34085541E9ED1192131C51414A436EF5330855419BAE0A8D131C5141C8BB49ED33085541A124D985131C51410A9AA3E133085541C19E7C83131C5141E0A7D0DD3308554161AB6D82131C5141F3E219DC3308554180A0F9A0121C514110E0BCA33308554180A0F9A0121C51417C6A0EF6320855415C41EE97101C51414B80B19A310855412244C314131C5141D93374B92B08554192FC2F2D121C51414F1BFC972A085541606F095E101C514154ECE0D12A085541953E191B0E1C514145BEC50B2B08554177B0F24B0C1C5141DBD63D2D2C085541C209545B091C5141C0673979300855413EFBD1D9061C5141F9D1A6D231085541A4703D8A061C5141B81E852B32085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289275 - 1008404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000090000000000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB34544148E17A64700051410AD7A360DA345441666666467400514185EB5148F534544114AE47C184005141B81E85EBF13454413D0AD713A7005141AE47E1EAEA3454413D0AD7A3BF0051417B14AEE7E53454413D0AD7A3C5005141EC51B8AEE43454410000006073005141F6285C7FAB345441
+</a>
+
+<b>
+010600000001000000010300000001000000070000009898EDFC96005141DD1FD340C43454410000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB345441C6BAECD26D0051412E378394C834544169CC5EB96E00514163903ED1CE34544150F2AC9D9E0051415F191447C93454419898EDFC96005141DD1FD340C4345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289275 - 3828283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000090000000000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB34544148E17A64700051410AD7A360DA345441666666467400514185EB5148F534544114AE47C184005141B81E85EBF13454413D0AD713A7005141AE47E1EAEA3454413D0AD7A3BF0051417B14AEE7E53454413D0AD7A3C5005141EC51B8AEE43454410000006073005141F6285C7FAB345441
+</a>
+
+<b>
+010600000001000000010300000001000000070000009898EDFC96005141DD1FD340C43454410000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB345441C6BAECD26D0051412E378394C834544169CC5EB96E00514163903ED1CE34544150F2AC9D9E0051415F191447C93454419898EDFC96005141DD1FD340C4345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289371 - 1008326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003300000085EB51F87F035141295C8FA28C325441CDCCCC0C820351415C8FC2E58C325441AE47E1DA94035141666666D68D325441666666E6970351410AD7A3F08D32544185EB514895035141B81E851B8C3254411F85EB8194035141CDCCCC9C8C325441666666F693035141CDCCCC9C8C325441E17A144E9303514114AE47618C325441666666D69203514148E17AA48B32544148E17AF4920351417B14AEE78A325441D7A3709D93035141713D0A178A32544148E17A8495035141E17A146E893254417B14AE77940351415C8FC21586325441D7A370CD96035141666666268532544152B81E05960351415C8FC2258332544185EB51089C035141C3F5288C80325441713D0AA79C035141000000C0813254415C8FC275A7035141295C8F727D325441A4703DEAA6035141A4703D9A7A32544133333343A60351410000009075325441666666C6A503514148E17A047032544100000070A403514114AE47B15B325441D7A3700DA3035141713D0AA74532544114AE4791A103514148E17AF42E3254415C8FC275A0035141333333B31D32544114AE47D19F035141B81E854B14325441713D0A578E0351415C8FC21515325441E17A140E8903514152B81E750632544114AE47218603514148E17AA408325441C3F528EC82035141295C8FE20A3254418FC2F52880035141EC51B8FE0B325441000000407D0351413D0AD7430C3254410AD7A3B07A035141C3F528EC0C325441C3F5287C7A035141333333F30C325441295C8FE277035141EC51B84E0D325441D7A3709D78035141713D0A57123254415C8FC2D578035141EC51B8DE1432544148E17A347903514185EB51C8193254413D0AD7137903514185EB51381E3254418FC2F59878035141295C8F322332544185EB51F87703514185EB51582832544152B81E657703514114AE47812C32544114AE472176035141A4703D7A2F325441333333B375035141CDCCCCBC3A3254413D0AD753480351415C8FC23544325441AE47E1EA4B0351418FC2F5484D3254418FC2F5085B035141295C8FF25A3254411F85EBC1740351417B14AE9755325441666666067D035141CDCCCCCC61325441C3F528CC7A035141D7A3700D8232544185EB51F87F035141295C8FA28C325441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000014AE47C1430351411F85EB213A32544107B3067544035141371DD9BE3B325441CE6E637B440351415F5417BC3B3254413D0AD753480351415C8FC235443254413519533F51035141ED69DE99403254413FCC699A5A035141C9B6A82A3D3254417FB2983F630351416C50F1083B325441333333B375035141CDCCCCBC3A32544144CDD9B5750351414C288D773A3254418908B5247F03514121A4B7CD383254410750673F88035141AA58B93237325441F219D7CFA1035141C6C6AEB03232544154FA3009A1035141912E33AC2632544114AE472176035141A4703D7A2F3254410000001073035141CDCCCC8C2F3254415C8FC2556E035141B81E855B2F325441E17A14AE690351419A9999692F3254416666664665035141C3F5284C2F32544152B81EC560035141A4703DDA2E325441B81E855B5B035141E17A14DE303254416D82FEE552035141CAA22D25343254412C2FDE984E035141D355C8B8353254416A3203084A035141376AB66F373254412F29DD6F46035141448B85D83832544114AE47C1430351411F85EB213A325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289371 - 3737279
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003300000085EB51F87F035141295C8FA28C325441CDCCCC0C820351415C8FC2E58C325441AE47E1DA94035141666666D68D325441666666E6970351410AD7A3F08D32544185EB514895035141B81E851B8C3254411F85EB8194035141CDCCCC9C8C325441666666F693035141CDCCCC9C8C325441E17A144E9303514114AE47618C325441666666D69203514148E17AA48B32544148E17AF4920351417B14AEE78A325441D7A3709D93035141713D0A178A32544148E17A8495035141E17A146E893254417B14AE77940351415C8FC21586325441D7A370CD96035141666666268532544152B81E05960351415C8FC2258332544185EB51089C035141C3F5288C80325441713D0AA79C035141000000C0813254415C8FC275A7035141295C8F727D325441A4703DEAA6035141A4703D9A7A32544133333343A60351410000009075325441666666C6A503514148E17A047032544100000070A403514114AE47B15B325441D7A3700DA3035141713D0AA74532544114AE4791A103514148E17AF42E3254415C8FC275A0035141333333B31D32544114AE47D19F035141B81E854B14325441713D0A578E0351415C8FC21515325441E17A140E8903514152B81E750632544114AE47218603514148E17AA408325441C3F528EC82035141295C8FE20A3254418FC2F52880035141EC51B8FE0B325441000000407D0351413D0AD7430C3254410AD7A3B07A035141C3F528EC0C325441C3F5287C7A035141333333F30C325441295C8FE277035141EC51B84E0D325441D7A3709D78035141713D0A57123254415C8FC2D578035141EC51B8DE1432544148E17A347903514185EB51C8193254413D0AD7137903514185EB51381E3254418FC2F59878035141295C8F322332544185EB51F87703514185EB51582832544152B81E657703514114AE47812C32544114AE472176035141A4703D7A2F325441333333B375035141CDCCCCBC3A3254413D0AD753480351415C8FC23544325441AE47E1EA4B0351418FC2F5484D3254418FC2F5085B035141295C8FF25A3254411F85EBC1740351417B14AE9755325441666666067D035141CDCCCCCC61325441C3F528CC7A035141D7A3700D8232544185EB51F87F035141295C8FA28C325441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000014AE47C1430351411F85EB213A32544107B3067544035141371DD9BE3B325441CE6E637B440351415F5417BC3B3254413D0AD753480351415C8FC235443254413519533F51035141ED69DE99403254413FCC699A5A035141C9B6A82A3D3254417FB2983F630351416C50F1083B325441333333B375035141CDCCCCBC3A32544144CDD9B5750351414C288D773A3254418908B5247F03514121A4B7CD383254410750673F88035141AA58B93237325441F219D7CFA1035141C6C6AEB03232544154FA3009A1035141912E33AC2632544114AE472176035141A4703D7A2F3254410000001073035141CDCCCC8C2F3254415C8FC2556E035141B81E855B2F325441E17A14AE690351419A9999692F3254416666664665035141C3F5284C2F32544152B81EC560035141A4703DDA2E325441B81E855B5B035141E17A14DE303254416D82FEE552035141CAA22D25343254412C2FDE984E035141D355C8B8353254416A3203084A035141376AB66F373254412F29DD6F46035141448B85D83832544114AE47C1430351411F85EB213A325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290039 - 1127807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703DDAC5395141C3F5284CD54954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E5495441713D0A1797395141D7A370ADF5495441A4703DDAC5395141C3F5284CD5495441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000083650D5DC4395141485DAA66D3495441A1D7A163C4395141FBB21862D34954411276F14CC4395141DA8FA54DD34954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E54954413449550696395141207FF13AF3495441B8678844AD395141952D4570E349544186063B3BB4395141972F619ADE495441B0F3FC5BC43951415CBF8D65D349544183650D5DC4395141485DAA66D3495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290039 - 3331122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703DDAC5395141C3F5284CD54954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E5495441713D0A1797395141D7A370ADF5495441A4703DDAC5395141C3F5284CD5495441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000083650D5DC4395141485DAA66D3495441A1D7A163C4395141FBB21862D34954411276F14CC4395141DA8FA54DD34954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E54954413449550696395141207FF13AF3495441B8678844AD395141952D4570E349544186063B3BB4395141972F619ADE495441B0F3FC5BC43951415CBF8D65D349544183650D5DC4395141485DAA66D3495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294619 - 203665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000240000000AD7A3E0D6C750410AD7A36075455541295C8F12D5C750411F85EB218145554166666616D4C750411F85EBE1804555411F85EBE1D3C7504148E17AD480455541AE47E1EACEC750413D0AD7039A45554114AE47E1D0C75041B81E857B9A4555419A9999E9D3C750413D0AD7339B4555415C8FC2C5D4C75041D7A3706D9B455541AE47E10AD6C75041CDCCCCBC9B4555419A999969D8C7504148E17A548F455541713D0AD7DAC75041B81E859B824555415C8FC275DDC75041713D0A478345554152B81E65DAC7504148E17A3491455541AE47E1DAD8C75041C3F5286C9C4555411F85EBD1D9C75041F6285C6F9C45554152B81E65DDC750417B14AEB79C455541C3F5288CDEC75041EC51B8CE9C45554114AE4741DFC75041D7A370DD9C455541F6285C8FE1C750419A9999F992455541295C8FE2E4C75041C3F5282C854555411F85EB91E6C75041AE47E19A854555413D0AD753E8C75041C3F5280C86455541EC51B88EEBC750411F85EB517A4555411F85EBE1EAC750413D0AD7237A455541D7A370EDE9C75041295C8FE2794555410AD7A390E9C75041A4703DCA79455541A4703D6AE8C75041A4703D7A79455541D7A370BDE7C75041C3F5284C79455541AE47E14AE6C750417B14AEE77845554185EB5178E5C75041EC51B8AE78455541C3F5281CE5C750415C8FC295784555410AD7A360E4C750413333336378455541B81E85FBE1C75041D7A370BD77455541E17A145EDFC750418FC2F50877455541D7A3709DDDC75041F6285C8F764555410AD7A3E0D6C750410AD7A36075455541010300000001000000090000009A9999B9E8C750416666662686455541B81E854BE5C750419A99995994455541E17A140EE3C7504152B81E459D455541AE47E15AE6C7504114AE47019E4555419A999989E7C75041A4703DDA9845554133333363E8C7504185EB51C895455541000000B0ECC75041B81E852B8745554185EB5138E9C75041713D0A47864555419A9999B9E8C750416666662686455541
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000002B73912AEAC7504189D6E1F27945554187E2EAE1EAC75041D3DED6237A455541007F86CBEDC7504133FE9AC96C45554151657B49EBC750410173836F6C455541B485F648EAC750411A3A854B6C455541028D72BDE7C750413578294C79455541A4703D6AE8C75041A4703D7A79455541EFBA9D90E9C750419DC73BCA794555412FB4A390E9C7504140453CCA79455541C3A470EDE9C75041BE098FE2794555412B73912AEAC7504189D6E1F279455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294619 - 203680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000240000000AD7A3E0D6C750410AD7A36075455541295C8F12D5C750411F85EB218145554166666616D4C750411F85EBE1804555411F85EBE1D3C7504148E17AD480455541AE47E1EACEC750413D0AD7039A45554114AE47E1D0C75041B81E857B9A4555419A9999E9D3C750413D0AD7339B4555415C8FC2C5D4C75041D7A3706D9B455541AE47E10AD6C75041CDCCCCBC9B4555419A999969D8C7504148E17A548F455541713D0AD7DAC75041B81E859B824555415C8FC275DDC75041713D0A478345554152B81E65DAC7504148E17A3491455541AE47E1DAD8C75041C3F5286C9C4555411F85EBD1D9C75041F6285C6F9C45554152B81E65DDC750417B14AEB79C455541C3F5288CDEC75041EC51B8CE9C45554114AE4741DFC75041D7A370DD9C455541F6285C8FE1C750419A9999F992455541295C8FE2E4C75041C3F5282C854555411F85EB91E6C75041AE47E19A854555413D0AD753E8C75041C3F5280C86455541EC51B88EEBC750411F85EB517A4555411F85EBE1EAC750413D0AD7237A455541D7A370EDE9C75041295C8FE2794555410AD7A390E9C75041A4703DCA79455541A4703D6AE8C75041A4703D7A79455541D7A370BDE7C75041C3F5284C79455541AE47E14AE6C750417B14AEE77845554185EB5178E5C75041EC51B8AE78455541C3F5281CE5C750415C8FC295784555410AD7A360E4C750413333336378455541B81E85FBE1C75041D7A370BD77455541E17A145EDFC750418FC2F50877455541D7A3709DDDC75041F6285C8F764555410AD7A3E0D6C750410AD7A36075455541010300000001000000090000009A9999B9E8C750416666662686455541B81E854BE5C750419A99995994455541E17A140EE3C7504152B81E459D455541AE47E15AE6C7504114AE47019E4555419A999989E7C75041A4703DDA9845554133333363E8C7504185EB51C895455541000000B0ECC75041B81E852B8745554185EB5138E9C75041713D0A47864555419A9999B9E8C750416666662686455541
+</a>
+
+<b>
+0106000000010000000103000000010000001600000086C58F12D5C75041F4D6E821814555410AD7A3E0D6C750410AD7A3607545554148E17AA4D8C75041F6285C7F69455541AE47E10AD9C75041EC51B8CE66455541A5AAEDC6D3C75041748A9927664555411B4E6626D0C750419AA87BB4654555415C8FC255CFC7504148E17A646C4555417F4ABD1DCFC75041272FA9A46D455541A49FD7B3CEC75041589AEB01704555418B0E5298CDC7504180DCB88E75455541280E0170CCC75041D7885C6F7B4555418656864BCCC75041E4ED52287C455541D89EF608CCC75041753134737D4555419CA218E7CBC750414AF8DF167E4555414026D7C3CBC75041B02647C17E4555415133E2BACFC7504157AE79C47F455541ABA27187D3C75041177354BD804555411F85EBE1D3C7504148E17AD4804555410A1E31E2D3C7504127B48CD48045554170A53111D5C750419AC2922181455541A1B68E12D5C750411C5BEB218145554186C58F12D5C75041F4D6E82181455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888517 - 2961624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003E000000295C8FE2989B514152B81E85AB8C5441E968D00F989B514161D6E3C4A78C5441D7874E9F979B51411262992FA38C5441A334DF3E979B51410922406B9F8C54410DF12DC3979B51411FBDE25C9F8C544152B81E15969B5141D7A3707D9F8C544166666636969B514114AE4741A28C544152B81E25979B514114AE4731A98C544152B81E95979B5141EC51B81EAB8C5441EC51B83E9C9B5141F6285CEFB18C54413D0AD793A29B5141AE47E17AB98C54411F85EB91A59B5141713D0A37BD8C54413D0AD743A69B514100000070BE8C544114AE4711A99B5141D7A3705DC28C5441AE47E1CAAC9B51418FC2F5C8C88C54415C8FC215AF9B51418FC2F518CE8C544100000090B19B51411F85EB71D38C5441F6285CAFB29B514148E17AE4D48C54419A9999D9BD9B51418FC2F558D18C54415C8FC2A5C89B5141C3F528ECCD8C5441D7A3702DD49B514133333343CA8C54411F85EB41D99B5141D7A3700DCB8C54410AD7A360DD9B5141E17A144ECC8C54411F85EBC1EA9B514100000060CA8C5441713D0A97F79B5141F6285C1FC88C544133333393FE9B51415C8FC2E5C68C54418FC2F5480A9C5141C3F528CCC38C544114AE47010E9C5141295C8F42C28C5441E17A148E169C5141E17A144EBE8C5441D7A3703D199C514152B81E75BD8C5441CDCCCC8C1B9C514133333313BD8C5441713D0A271E9C5141AE47E16ABC8C54417B14AE67209C5141EC51B83EBC8C5441EC51B84E239C514114AE4751BC8C54410AD7A310269C5141F6285CFFBC8C5441D7A3708D279C51418FC2F588B68C5441E17A149E289C5141295C8FE2B18C544148E17A842F9C51410AD7A350B28C5441A4703D7A2C9C514166666666A48C5441E17A146E2D9C51411F85EB51A28C5441B81E857B309C51418FC2F5E8A08C54417B14AE572F9C51415C8FC2A59D8C5441713D0A772D9C514148E17AA4998C544148E17A742B9C5141EC51B87E948C54419A999929299C5141B81E851B958C54418FC2F5C8209C514185EB5158978C54413D0AD7F31F9C514114AE4791978C5441713D0A67109C5141C3F5284C958C54411F85EB310B9C514152B81E65948C544100000070029C514114AE47E1928C544185EB5108F99B5141AE47E13A928C544160A8F46AF69B5141E8701B43928C5441713D0A47EB9B51413D0AD743BE8C544152B81E15E09B5141333333D3BE8C54410AD7A340D59B5141EC51B8BEBF8C5441F6285C9FC99B514100000010C18C544114AE4741BD9B51411F85EB31C38C54411F85EBA1AD9B514133333363C68C544100000020A99B5141000000C0BF8C54411F85EBB1A09B51411F85EB91B58C54411F85EB119C9B5141333333F3AF8C5441295C8FE2989B514152B81E85AB8C54410103000000010000000400000083CFB2A1A39B5141C4B4DDF69D8C544110A05108A19B51414A063B5B9E8C5441622F8E3BA29B5141929ADF399E8C544183CFB2A1A39B5141C4B4DDF69D8C5441010300000001000000090000007B57EFBAC09B5141F7F7CE4D988C54418AFDC332C49B514161F855B2978C544120462C7BCB9B5141811A2DB1968C5441882B6836D59B51416EE9944F958C5441D1E707E6E39B5141C4182B96938C544148E17A04D59B5141B81E854B958C5441C3F528BCC49B5141D7A3709D978C54411F85EBD1C39B5141EC51B8BE978C54417B57EFBAC09B5141F7F7CE4D988C544101030000000100000005000000D3F5EBDAEA9B514127CA4EDB928C54412B1D29A6EA9B514176E094DE928C5441369548C3F59B5141E9052B45928C5441295C8FF2F39B5141AE47E14A928C5441D3F5EBDAEA9B514127CA4EDB928C5441
+</a>
+
+<b>
+0106000000010000000103000000010000003F00000070A05108A19B51413C063B5B9E8C54410DE3319AA29B5141D7C59C1E9E8C544100000080A59B5141EC51B8AE9D8C5441AE47E1EAAB9B51419A9999799C8C54418FC2F5F8B59B5141000000409A8C5441BF58EFBAC09B5141BCF7CE4D988C54411F85EBD1C39B5141EC51B8BE978C544148E17A04D59B5141B81E854B958C5441D7A3708DE99B5141000000F0928C5441295C8FF2F39B5141AE47E14A928C54413A9548C3F59B5141E8052B45928C544185EB5108F99B5141AE47E13A928C544100000070029C514114AE47E1928C54411F85EB310B9C514152B81E65948C5441713D0A67109C5141C3F5284C958C54413D0AD7F31F9C514114AE4791978C54418FC2F5C8209C514185EB5158978C544179F42AD4209C5141469A5355978C544158780ADE209C514148361826938C5441A5EF61C91F9C51410075C2BA8E8C5441C03A2B9F1C9C51416C41474C8C8C5441D64BC0C11C9C5141B0326D9A8B8C5441E864BA4A219C51418D9674F28A8C5441DFEB1FFC269C5141F9355C1F918C544138720DA0289C51415E05142F928C54411418AE11299C5141FB7C2721938C544145FD7025299C514165511119958C544148E17A742B9C5141EC51B87E948C5441713D0AD7349C514166666666918C54418FC2F5783A9C5141B81E85FB8F8C544100000050369C51410AD7A390868C5441713D0AC7319C51419A999919878C5441295C8F52299C5141E17A14BE888C5441A4703D5A219C51413D0AD7238A8C544166666656219C51419A9999D9858C5441EC51B85E159C5141713D0AE7838C54411F85EB81119C514166666646838C54419A999939129C51415C8FC2558B8C5441C3F528EC0B9C5141A4703DBA8A8C544114AE47F1079C51413D0AD7A38A8C544100000000059C5141D7A3705D8A8C54417B14AE47FF9B514166666656898C54411F85EB61F99B5141C3F5287C888C54413D0AD723F29B5141E17A140E898C5441C3F5283CE69B5141F6285CEF8A8C544114AE47F1E19B51415C8FC2458B8C5441E17A146ED49B51418FC2F5B88C8C5441E17A144EC79B5141A4703D3A8E8C544114AE4791C39B5141EC51B88E8E8C5441AE47E1AABF9B5141A4703D0A8F8C54417B14AE77B69B514100000030918C5441AE47E10AB19B51417B14AE37928C5441295C8F42AC9B514152B81EF5928C54415C8FC265A99B5141C3F5283C938C544114AE4711A39B51419A9999D9938C5441295C8FF2A29B5141CDCCCC7C998C54415C8FC2F59E9B5141713D0AB7998C5441295C8F32969B51411F85EB51998C5441E17A14FE959B5141333333939D8C544152B81E15969B5141D7A3707D9F8C5441713D0AF7979B51418FC2F5589F8C544114AE4721A09B5141E17A147E9E8C544170A05108A19B51413C063B5B9E8C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888517 - 3325956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003E000000295C8FE2989B514152B81E85AB8C5441E968D00F989B514161D6E3C4A78C5441D7874E9F979B51411262992FA38C5441A334DF3E979B51410922406B9F8C54410DF12DC3979B51411FBDE25C9F8C544152B81E15969B5141D7A3707D9F8C544166666636969B514114AE4741A28C544152B81E25979B514114AE4731A98C544152B81E95979B5141EC51B81EAB8C5441EC51B83E9C9B5141F6285CEFB18C54413D0AD793A29B5141AE47E17AB98C54411F85EB91A59B5141713D0A37BD8C54413D0AD743A69B514100000070BE8C544114AE4711A99B5141D7A3705DC28C5441AE47E1CAAC9B51418FC2F5C8C88C54415C8FC215AF9B51418FC2F518CE8C544100000090B19B51411F85EB71D38C5441F6285CAFB29B514148E17AE4D48C54419A9999D9BD9B51418FC2F558D18C54415C8FC2A5C89B5141C3F528ECCD8C5441D7A3702DD49B514133333343CA8C54411F85EB41D99B5141D7A3700DCB8C54410AD7A360DD9B5141E17A144ECC8C54411F85EBC1EA9B514100000060CA8C5441713D0A97F79B5141F6285C1FC88C544133333393FE9B51415C8FC2E5C68C54418FC2F5480A9C5141C3F528CCC38C544114AE47010E9C5141295C8F42C28C5441E17A148E169C5141E17A144EBE8C5441D7A3703D199C514152B81E75BD8C5441CDCCCC8C1B9C514133333313BD8C5441713D0A271E9C5141AE47E16ABC8C54417B14AE67209C5141EC51B83EBC8C5441EC51B84E239C514114AE4751BC8C54410AD7A310269C5141F6285CFFBC8C5441D7A3708D279C51418FC2F588B68C5441E17A149E289C5141295C8FE2B18C544148E17A842F9C51410AD7A350B28C5441A4703D7A2C9C514166666666A48C5441E17A146E2D9C51411F85EB51A28C5441B81E857B309C51418FC2F5E8A08C54417B14AE572F9C51415C8FC2A59D8C5441713D0A772D9C514148E17AA4998C544148E17A742B9C5141EC51B87E948C54419A999929299C5141B81E851B958C54418FC2F5C8209C514185EB5158978C54413D0AD7F31F9C514114AE4791978C5441713D0A67109C5141C3F5284C958C54411F85EB310B9C514152B81E65948C544100000070029C514114AE47E1928C544185EB5108F99B5141AE47E13A928C544160A8F46AF69B5141E8701B43928C5441713D0A47EB9B51413D0AD743BE8C544152B81E15E09B5141333333D3BE8C54410AD7A340D59B5141EC51B8BEBF8C5441F6285C9FC99B514100000010C18C544114AE4741BD9B51411F85EB31C38C54411F85EBA1AD9B514133333363C68C544100000020A99B5141000000C0BF8C54411F85EBB1A09B51411F85EB91B58C54411F85EB119C9B5141333333F3AF8C5441295C8FE2989B514152B81E85AB8C54410103000000010000000400000083CFB2A1A39B5141C4B4DDF69D8C544110A05108A19B51414A063B5B9E8C5441622F8E3BA29B5141929ADF399E8C544183CFB2A1A39B5141C4B4DDF69D8C5441010300000001000000090000007B57EFBAC09B5141F7F7CE4D988C54418AFDC332C49B514161F855B2978C544120462C7BCB9B5141811A2DB1968C5441882B6836D59B51416EE9944F958C5441D1E707E6E39B5141C4182B96938C544148E17A04D59B5141B81E854B958C5441C3F528BCC49B5141D7A3709D978C54411F85EBD1C39B5141EC51B8BE978C54417B57EFBAC09B5141F7F7CE4D988C544101030000000100000005000000D3F5EBDAEA9B514127CA4EDB928C54412B1D29A6EA9B514176E094DE928C5441369548C3F59B5141E9052B45928C5441295C8FF2F39B5141AE47E14A928C5441D3F5EBDAEA9B514127CA4EDB928C5441
+</a>
+
+<b>
+0106000000010000000103000000010000003F00000070A05108A19B51413C063B5B9E8C54410DE3319AA29B5141D7C59C1E9E8C544100000080A59B5141EC51B8AE9D8C5441AE47E1EAAB9B51419A9999799C8C54418FC2F5F8B59B5141000000409A8C5441BF58EFBAC09B5141BCF7CE4D988C54411F85EBD1C39B5141EC51B8BE978C544148E17A04D59B5141B81E854B958C5441D7A3708DE99B5141000000F0928C5441295C8FF2F39B5141AE47E14A928C54413A9548C3F59B5141E8052B45928C544185EB5108F99B5141AE47E13A928C544100000070029C514114AE47E1928C54411F85EB310B9C514152B81E65948C5441713D0A67109C5141C3F5284C958C54413D0AD7F31F9C514114AE4791978C54418FC2F5C8209C514185EB5158978C544179F42AD4209C5141469A5355978C544158780ADE209C514148361826938C5441A5EF61C91F9C51410075C2BA8E8C5441C03A2B9F1C9C51416C41474C8C8C5441D64BC0C11C9C5141B0326D9A8B8C5441E864BA4A219C51418D9674F28A8C5441DFEB1FFC269C5141F9355C1F918C544138720DA0289C51415E05142F928C54411418AE11299C5141FB7C2721938C544145FD7025299C514165511119958C544148E17A742B9C5141EC51B87E948C5441713D0AD7349C514166666666918C54418FC2F5783A9C5141B81E85FB8F8C544100000050369C51410AD7A390868C5441713D0AC7319C51419A999919878C5441295C8F52299C5141E17A14BE888C5441A4703D5A219C51413D0AD7238A8C544166666656219C51419A9999D9858C5441EC51B85E159C5141713D0AE7838C54411F85EB81119C514166666646838C54419A999939129C51415C8FC2558B8C5441C3F528EC0B9C5141A4703DBA8A8C544114AE47F1079C51413D0AD7A38A8C544100000000059C5141D7A3705D8A8C54417B14AE47FF9B514166666656898C54411F85EB61F99B5141C3F5287C888C54413D0AD723F29B5141E17A140E898C5441C3F5283CE69B5141F6285CEF8A8C544114AE47F1E19B51415C8FC2458B8C5441E17A146ED49B51418FC2F5B88C8C5441E17A144EC79B5141A4703D3A8E8C544114AE4791C39B5141EC51B88E8E8C5441AE47E1AABF9B5141A4703D0A8F8C54417B14AE77B69B514100000030918C5441AE47E10AB19B51417B14AE37928C5441295C8F42AC9B514152B81EF5928C54415C8FC265A99B5141C3F5283C938C544114AE4711A39B51419A9999D9938C5441295C8FF2A29B5141CDCCCC7C998C54415C8FC2F59E9B5141713D0AB7998C5441295C8F32969B51411F85EB51998C5441E17A14FE959B5141333333939D8C544152B81E15969B5141D7A3707D9F8C5441713D0AF7979B51418FC2F5589F8C544114AE4721A09B5141E17A147E9E8C544170A05108A19B51413C063B5B9E8C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295154 - 203680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001000000085EB5198CDC75041EC51B88E7545554100000070CCC75041F6285C6F7B455541B81E854BCCC7504185EB51287C4555418FC2F508CCC75041333333737D4555413D0AD7C3CBC7504114AE47C17E455541AE47E1BACFC7504148E17AC47F4555411F85EBE1D3C7504148E17AD48045554166666616D4C750411F85EBE180455541295C8F12D5C750411F85EB21814555410AD7A3E0D6C750410AD7A3607545554148E17AA4D8C75041F6285C7F69455541AE47E10AD9C75041EC51B8CE6645554166666626D0C7504148E17AB4654555415C8FC255CFC7504148E17A646C4555413D0AD7B3CEC750411F85EB017045554185EB5198CDC75041EC51B88E75455541
+</a>
+
+<b>
+0106000000010000000103000000010000001600000086C58F12D5C75041F4D6E821814555410AD7A3E0D6C750410AD7A3607545554148E17AA4D8C75041F6285C7F69455541AE47E10AD9C75041EC51B8CE66455541A5AAEDC6D3C75041748A9927664555411B4E6626D0C750419AA87BB4654555415C8FC255CFC7504148E17A646C4555417F4ABD1DCFC75041272FA9A46D455541A49FD7B3CEC75041589AEB01704555418B0E5298CDC7504180DCB88E75455541280E0170CCC75041D7885C6F7B4555418656864BCCC75041E4ED52287C455541D89EF608CCC75041753134737D4555419CA218E7CBC750414AF8DF167E4555414026D7C3CBC75041B02647C17E4555415133E2BACFC7504157AE79C47F455541ABA27187D3C75041177354BD804555411F85EBE1D3C7504148E17AD4804555410A1E31E2D3C7504127B48CD48045554170A53111D5C750419AC2922181455541A1B68E12D5C750411C5BEB218145554186C58F12D5C75041F4D6E82181455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295291 - 203581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541295C8F628EC7504100000060CE455541000000108FC750417B14AE87CE455541CDCCCC5C8EC75041B81E85CBCA455541B81E85CB7CC75041AE47E1DAC5455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA455541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004225A7517CC750411CD60CB3C7455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541251F50988AC750418D8B3897CD455541791690628EC7504116A8FF5FCE455541CAEA0DA78EC750419A98AB6FCE4555411CFFFE0F8FC75041B5D9AD87CE455541D234B4B68EC750419AC038ABCC455541ADD5CC5C8EC75041134E85CBCA455541CE52EC568BC7504165ADE7F1C945554163D885CB7CC75041E47BE1DAC54555414225A7517CC750411CD60CB3C7455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295291 - 381533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541295C8F628EC7504100000060CE455541000000108FC750417B14AE87CE455541CDCCCC5C8EC75041B81E85CBCA455541B81E85CB7CC75041AE47E1DAC5455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA455541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004225A7517CC750411CD60CB3C7455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541251F50988AC750418D8B3897CD455541791690628EC7504116A8FF5FCE455541CAEA0DA78EC750419A98AB6FCE4555411CFFFE0F8FC75041B5D9AD87CE455541D234B4B68EC750419AC038ABCC455541ADD5CC5C8EC75041134E85CBCA455541D052EC568BC7504166ADE7F1C945554163D885CB7CC75041E47BE1DAC54555414225A7517CC750411CD60CB3C7455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310161 - 2804322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000041000000295C8F22470F51410AD7A3B0E4475541333333B3450F5141666666B6E3475541E17A14DE3B0F514133333333E04755410AD7A3F0310F51410AD7A3B0DC475541F6285CEF310F5141AE47E19ADD475541B81E85CB320F5141F6285C2FE3475541E17A142E330F5141000000B0E547554114AE4781350F5141F6285CAFE94755413D0AD7E3370F5141D7A3703DED47554148E17A74380F5141D7A3701DEF4755419A9999D9380F5141E17A145EF8475541C3F528FC370F5141F6285CEFFD475541E17A146E370F514100000020024855410AD7A320390F5141F6285CEF0648554148E17AE43B0F5141D7A370CD0B485541B81E852B410F5141D7A3700D0F485541B81E857B470F51411F85EBE110485541713D0A07490F5141C3F5284C0C4855410AD7A3A0410F51415C8FC24509485541D7A3709D400F514185EB5188064855410AD7A3A0410F514114AE471100485541E17A14BE440F5141B81E85CBFC4755417B14AE67480F51417B14AE17FC475541CDCCCC4C4C0F5141B81E857BFC4755419A9999394F0F514166666686FF4755417B14AEC7510F514152B81EC508485541666666464D0F5141295C8F420E48554148E17A044A0F5141F6285C8F1148554114AE47614C0F514166666656124855413D0AD7A34E0F514148E17A24134855411F85EB41510F5141CDCCCC2C144855413D0AD7D3530F51419A9999F9144855419A999989550F5141C3F5287C15485541F6285CCF560F5141D7A370AD1548554152B81ED5570F51415C8FC2A515485541713D0A37590F51413D0AD72315485541295C8F625B0F5141713D0A4714485541AE47E16A5D0F51416666666613485541AE47E14A5F0F5141D7A3709D12485541EC51B8FE600F5141B81E85DB114855415C8FC2B5620F514100000030114855419A999949640F51411F85EBB110485541666666B6660F5141333333F30F48554152B81EE5680F5141000000500F4855411F85EBA1690F5141333333C30E48554152B81EE5690F5141333333030F485541A4703D9A7B0F5141EC51B85E064855415C8FC2757B0F5141EC51B81E06485541C3F528CC7A0F514114AE4771054855418FC2F5087A0F5141E17A141E04485541333333F3780F51411F85EB4102485541295C8FE2770F5141AE47E15A00485541F6285C6F760F514114AE47B1FD475541AE47E1BA6C0F5141CDCCCCEC00485541A4703DBA6A0F51417B14AE8701485541A4703DAA690F5141295C8FB201485541713D0AC7660F5141C3F5281C02485541666666A6610F51419A999939034855411F85EBF15C0F5141713D0A97034855410AD7A340520F51417B14AE47FB475541666666E6520F5141295C8F72FA4755418FC2F5C8540F514166666606F84755418FC2F598580F5141C3F528CCF247554185EB51C84C0F514166666606E9475541295C8F22470F51410AD7A3B0E4475541
+</a>
+
+<b>
+010600000001000000010300000001000000640000000AD7A3F0310F51410AD7A3B0DC475541E17A14DE3B0F514133333333E0475541333333B3450F5141666666B6E3475541295C8F22470F51410AD7A3B0E447554185EB51C84C0F514166666606E94755410CF4326E500F5141A70CD60AEC475541295C8FA2500F51413D0AD713EC475541B40E99F3500F5141B6812C79EC475541867E60B4540F51414B15DC93EF475541295C8F42550F5141E17A14BEEF475541F60B428E550F5141462D1348F0475541177C6B25580F5141D4FB976CF2475541E17A14BE580F514100000040F2475541AE47E1BA590F5141000000B0F1475541A4703DEA5A0F514100000080F04755415C8FC2455C0F5141713D0A77EF475541D7A370BD5D0F5141D7A3708DEE475541666666565F0F5141D7A370EDED47554114AE4701610F51413D0AD783ED475541E17A14CE630F514185EB5198ED47554185EB51B86C0F514166666626EE4755411F85EB51710F514166666616EF47554100000020750F51418FC2F5D8EF475541F6285CFF770F5141713D0AC7EB475541666666867A0F5141EC51B81EE94755415C8FC2057D0F5141EC51B80EE647554148E17AB4800F51419A9999F9E24755410AD7A350870F51413D0AD703DC475541000000D0850F51419A9999A9DA475541A4703D4A810F5141AE47E1BAD94755419A9999B97C0F5141CDCCCCCCD84755411F85EBB1720F5141A4703DFAD6475541A4703DBA6F0F5141AE47E11AD6475541CDCCCCAC6D0F5141E17A144ED5475541C3F5282C6C0F51413D0AD773D447554185EB51F86A0F51410AD7A340D3475541EC51B81E6B0F51419A999999D2475541E17A145E690F51418FC2F598D04755410AD7A390670F51417B14AED7CD4755419A9999E9650F5141333333E3CA47554166666676650F5141CDCCCCBCC9475541666666B6650F5141295C8FE2C8475541333333536D0F51413D0AD753C4475541713D0A876F0F5141713D0A87C34755417B14AE87710F51413D0AD793C3475541295C8F22740F5141A4703D7AC4475541E17A147E780F514152B81E55C7475541F6285C3F7C0F51418FC2F588C8475541713D0A37870F514166666616CB475541D7A370DD860F51415C8FC205C1475541D7A3704D890F514133333303BD4755418FC2F5E8840F514185EB5128B7475541B81E859B820F5141C3F5288CB0475541CDCCCCFC7E0F514185EB51E8AF4755418FC2F5D8780F5141713D0AC7AE47554152B81EB5720F5141666666A6AD475541295C8FA2730F514185EB51C8A647554185EB51C8720F514148E17AD4A447554148E17A94710F5141A4703DBAA3475541D7A370ED6F0F5141D7A3702DA34755411F85EB51630F5141295C8F92A147554133333323350F5141E17A14DE9D47554166666616350F514152B81E859E4755418FC2F508340F514185EB51F89E47554148E17AD4350F5141AE47E13AA04755419A9999C9390F51419A999969A2475541B81E85BB3F0F5141E17A14FEA447554148E17A84460F5141D7A3702DA8475541713D0A174E0F5141D7A3703DAB475541AE47E18A570F5141713D0A77AF475541B81E854B5C0F514185EB5168B1475541C3F5281C6B0F5141CDCCCC1CB7475541295C8F02620F51419A999979C04755411F85EB91610F5141D7A370DDC0475541A4703DCA600F51417B14AE37C1475541A4703DDA560F51413D0AD703C647554133333383530F5141000000C0C7475541E17A146E510F5141D7A3703DC9475541EC51B85E4E0F5141D7A3707DCB475541CDCCCCCC4A0F51413D0AD793CD47554185EB51B8480F51419A999959CE475541C3F528DC460F5141E17A14CECE4755413D0AD723430F5141A4703DEACF4755411F85EB51420F51411F85EBC1D0475541713D0AC73E0F51418FC2F518D1475541AE47E19A3C0F5141CDCCCC5CD147554148E17A843B0F5141E17A14AED1475541E17A14FE390F5141F6285C5FD2475541333333F3380F51415C8FC225D34755419A9999F9370F5141CDCCCC0CD4475541CDCCCCFC360F51415C8FC285D447554100000010360F5141295C8F12D54755411F85EBB1350F51410AD7A3F0D5475541A4703DCA350F5141CDCCCC0CD7475541F6285C7F350F5141713D0A07D8475541D7A370FD340F51415C8FC2B5D8475541B81E85CB320F514148E17A94D847554166666636320F514185EB5168D84755413D0AD7F3310F51413D0AD7C3D94755410AD7A3F0310F51410AD7A3B0DC475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>299110 - 36908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47816D0D5141AE47E10AA6EB54413D0AD7736C0D514114AE4741AAEB5441EC51B8CE6A0D51410AD7A3E0ABEB54411F85EBE1650D514185EB51E8B0EB54418FC2F568640D5141F6285C6FB3EB544185EB5148600D5141A4703D6ABDEB544148E17AB4680D5141A4703D6ABDEB544114AE4761710D5141F6285C3FBDEB5441295C8FA2790D51415C8FC295BDEB54410AD7A300810D514114AE4701BEEB5441295C8F82810D51411F85EB31BCEB544185EB51D8810D5141D7A370ADB6EB5441B81E85FB820D5141295C8FC2AAEB54413D0AD733780D514185EB51D8AAEB5441CDCCCCAC750D5141CDCCCCACAAEB54411F85EB81750D5141713D0A67A8EB5441295C8FE2750D51418FC2F548A5EB54410AD7A320750D5141EC51B80EA5EB54410AD7A3806F0D514133333303A4EB5441C3F528AC6D0D51411F85EBC1A3EB544114AE47816D0D5141AE47E10AA6EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000130000007824E2AF750D5141F0413EA7AAEB54413D0AD733780D514185EB51D8AAEB5441E17A14EE790D5141A4703DBAA7EB5441295C8FA27D0D5141E17A141EA5EB5441E453ED967D0D514195282A69A0EB54419A9999E97B0D5141F6285C0FA0EB54419FB6BEAF790D51417FC72A6CA0EB54418B48B00A770D5141F15D3ADEA0EB544172FDF7BD750D51414F11D8AFA3EB54414BF69B24750D514152B7540FA5EB544142597EE9750D5141B0C44540A5EB544155EA1BC5750D514147972C3CA6EB54419F3825C2750D51413619A654A6EB5441A15A22BB750D5141589C8C8EA6EB5441736C87B6750D5141BA8B94B4A6EB5441C3E689A2750D5141BC77AA59A7EB54412ED3A77B750D5141B293EC20A8EB5441F07AFC86750D5141C64FC6ABA8EB54417824E2AF750D5141F0413EA7AAEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>299110 - 77472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47816D0D5141AE47E10AA6EB54413D0AD7736C0D514114AE4741AAEB5441EC51B8CE6A0D51410AD7A3E0ABEB54411F85EBE1650D514185EB51E8B0EB54418FC2F568640D5141F6285C6FB3EB544185EB5148600D5141A4703D6ABDEB544148E17AB4680D5141A4703D6ABDEB544114AE4761710D5141F6285C3FBDEB5441295C8FA2790D51415C8FC295BDEB54410AD7A300810D514114AE4701BEEB5441295C8F82810D51411F85EB31BCEB544185EB51D8810D5141D7A370ADB6EB5441B81E85FB820D5141295C8FC2AAEB54413D0AD733780D514185EB51D8AAEB5441CDCCCCAC750D5141CDCCCCACAAEB54411F85EB81750D5141713D0A67A8EB5441295C8FE2750D51418FC2F548A5EB54410AD7A320750D5141EC51B80EA5EB54410AD7A3806F0D514133333303A4EB5441C3F528AC6D0D51411F85EBC1A3EB544114AE47816D0D5141AE47E10AA6EB5441
+</a>
+
+<b>
+010600000001000000010300000001000000130000007824E2AF750D5141F0413EA7AAEB54413D0AD733780D514185EB51D8AAEB5441E17A14EE790D5141A4703DBAA7EB5441295C8FA27D0D5141E17A141EA5EB5441E453ED967D0D514195282A69A0EB54419A9999E97B0D5141F6285C0FA0EB54419FB6BEAF790D51417FC72A6CA0EB54418B48B00A770D5141F15D3ADEA0EB544172FDF7BD750D51414F11D8AFA3EB54414BF69B24750D514152B7540FA5EB544142597EE9750D5141B0C44540A5EB544155EA1BC5750D514147972C3CA6EB54419F3825C2750D51413619A654A6EB5441A15A22BB750D5141589C8C8EA6EB5441736C87B6750D5141BA8B94B4A6EB5441C3E689A2750D5141BC77AA59A7EB54412ED3A77B750D5141B293EC20A8EB5441F07AFC86750D5141C64FC6ABA8EB54417824E2AF750D5141F0413EA7AAEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>623806 - 4123961
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D00000085EB51F8C2E650413D0AD7D3FE015541B81E856BC2E65041713D0A770702554166666696C7E65041C3F5288C07025541713D0AD7C7E650411F85EB210E02554152B81ED5E7E650419A9999790C02554133333303E8E6504133333343090255419A999949E8E65041F6285C5F040255415C8FC295E8E650411F85EBD10002554100000080E9E65041F6285CFFFD015541EC51B8DEECE65041AE47E1DAF6015541F6285C8FEFE6504185EB5128F1015541666666A6F0E65041666666B6EF0155417B14AE07F1E6504152B81E35EF015541E17A14DEF2E65041295C8FD2ED015541C3F5281CF6E6504100000060EC015541000000F0F6E6504114AE47D1E9015541CDCCCC7CF6E65041C3F528ECE6015541295C8F32F4E6504185EB5188E3015541000000A0F3E65041A4703D8AE20155417B14AE57EEE6504114AE4741DD015541E17A14DEDBE65041295C8F52DC0155417B14AE77C8E65041D7A3704DD6015541295C8F72C7E65041E17A147EDA015541B81E85ABC5E65041D7A370CDE10155415C8FC285C5E650417B14AE67E2015541D7A370BDC4E650413D0AD723E6015541CDCCCC1CC4E65041713D0AD7ED01554148E17AD4C3E6504185EB5108F201554185EB51F8C2E650413D0AD7D3FE015541
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000225CDC78E7E650414341E98D0B025541D6ACF2F5E7E65041A345FE2D090255417773D419E8E65041BBE0D7C8040255418A515B2AE8E65041B68E9CC20202554190C1A76AE8E650415C1F9FE5000255410C68956AE9E65041D73DEBA9FD0155415C743428EAE6504184473C02FC0155418CBD3EB1EAE65041CD60B0C0FA01554102BB015EECE650412A2CA8D2F601554139E96F68ECE650419DA8D6D4F601554135C03841EDE65041510F8290F40155418645836BEDE6504122488E99F4015541A7825504F0E65041A0CED5CAEF015541A5D2DDD9EFE650413B6EEBBAEF015541105E1B53F1E650414E33B183EE0155416FB967E4F2E65041E99347A6ED01554124B8F119F6E6504111BFCEE5EB015541837DE8C2F6E6504126712BEAEA01554148882821F7E650419BBDEC3EEA015541B29CA2F5F6E65041430D5F8EE8015541CB24ABA0F6E65041B809EAD2E7015541CDCCCC7CF6E65041C3F528ECE6015541E04AEDABF5E65041E972F4B6E5015541608298F8F4E650415C8A4E2BE401554103E74036F4E65041A05F4770E3015541C352216BF3E65041D3A6FFA3E2015541CEE2F9D0F1E650416FB3F1F8E00155412C3585B3F0E65041DBE3B9CFDF0155413423B994EFE65041C7DEF3C2DE0155417B14AE57EEE6504114AE4741DD0155417ED434BCE2E65041998A4CABDC015541A68B6713E1E650417592DB95DC015541E17A14DEDBE65041295C8F52DC0155414062097AC8E65041EACE7E47D6015541F4684D2EC8E650412C1EDD7AD7015541E4F49480C7E65041DCED9D4BD7015541459D58B8C6E6504183DDF267DA015541A1A38BEDC6E65041127D9072DA015541CF7E0511C6E650419BB4144DDF015541258743A6C5E65041617A50ADE10155415C8FC285C5E650417B14AE67E2015541B8D38824C5E65041DEA6A9E1E40155416B7F8B49C4E650412B1CB730EC015541CDCCCC1CC4E65041713D0AD7ED01554160B12018C4E650411673F680EE015541718205DEC3E65041BB1AFA80F2015541FF9C728FC3E65041B907B2E9F70155418A538D2CC3E65041987D8CB8FE015541374A8CB5C2E650412389C6E906025541F6BFC92AC4E65041FD422E7E07025541F08444B4C6E650417B1F6C8008025541335DC9B6C7E6504144BCC6D80A025541515E2948C8E650410423A6E60D0255413AA91883CDE650410FD7D67E0D02554154FD4695D1E65041EB89092E0D0255419928D25DD6E65041DFAF18CF0C02554115F72085DCE65041287D4A580C025541A1CAB5B5E1E65041201364F80B025541225CDC78E7E650414341E98D0B025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455049 - 454997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000047B708B3CABE504176C76B823EC6544142F7EDE6CBBE50417C378D013DC6544141D73E1ACCBE50418767C94C3AC6544141D73E1ACCBE50418C5FB82539C65441469759E6CABE504196A719B136C654417E1F68D1BCBE50419E1FC5BC34C65441B7A776BCAEBE5041A41F3E2233C65441BEAF79AEACBE50419E67ADE233C65441C21711A1ABBE50419BAF1CA334C65441CBE73F86A9BE50418B5FB82539C65441C9873220AABE50417D77EB9A3CC65441BEE74DBBACBE5041799721023EC65441B06F294AB0BE504176870DE93EC65441A7D7CE71B2BE5041764F39DC3EC65441A12FD9E5B3BE5041752F8A0F3FC6544194F7120EB7BE5041740FDB423FC654418E87F18EB8BE504174EF2B763FC65441855F3FD0BABE504172AFCDDC3FC6544177777245BEBE50416F4FC07640C6544166D7147BC2BE50416AC779B741C654415D6F0423C5BE504167F7C33742C65441576F8BBDC6BE504167F7C33742C654414F2FB4BEC8BE50416D0F62DD40C6544147B708B3CABE504176C76B823EC65441
+</a>
+
+<b>
+010600000001000000010300000002000000330000005D6F0423C5BE504167F7C33742C6544168D7147BC2BE5041693722D141C65441A3445388C2BE50416C7BF9B941C654414096F382C2BE50416CEBF5B841C65441C3F5287CC1BE504114AE476143C65441713D0A37C3BE5041EC51B8EE43C6544166666646C3BE5041EC51B88E43C65441B81E85CBC8BE5041D7A3703D42C6544114AE47B1C9BE504114AE470141C654418FC2F588CCBE50418FC2F5E83DC65441CDCCCC2CCEBE5041713D0A673EC65441F6285C8FCDBE50411F85EBA13FC654419A999989CDBE5041B81E851B41C65441A4703DFACEBE5041333333C340C65441295C8F02D1BE504152B81E8537C654415C8FC205CFBE5041B81E853B37C65441C3F528BCBDBE5041D7A370BD34C654410AD7A320A8BE5041EC51B84E32C65441F6285C7FA7BE5041A4703DCA35C6544166666666A8BE5041000000C035C654419A9999F9A8BE50413D0AD76337C654418FC2F5C8A7BE5041000000E03AC65441295C8F12A7BE50411F85EBA13DC65441A4703D2AAABE5041C3F528AC3FC654415C8FC285ABBE5041666666E640C6544148E17AF4ACBE5041E17A148E41C65441CDCCCC4CAEBE5041C3F528EC41C65441CDCCCC8CB3BE5041D7A3705D41C65441713D0A07B8BE50415C8FC2B541C65441B81E853BB8BE504152B81E3540C654410AB382C9B8BE5041466395803FC654418E87F18EB8BE504174EF2B763FC6544194F7120EB7BE5041740FDB423FC65441A12FD9E5B3BE5041752F8A0F3FC65441A7D7CE71B2BE5041764F39DC3EC65441B06F294AB0BE504176870DE93EC65441BEE74DBBACBE5041799721023EC65441C9873220AABE50417D77EB9A3CC65441CBE73F86A9BE50418B5FB82539C65441C21711A1ABBE50419BAF1CA334C65441BEAF79AEACBE50419E67ADE233C65441B7A776BCAEBE5041A41F3E2233C654417E1F68D1BCBE50419E1FC5BC34C65441469759E6CABE504196A719B136C6544141D73E1ACCBE50418C5FB82539C6544141D73E1ACCBE50418767C94C3AC6544142F7EDE6CBBE50417C378D013DC6544147B708B3CABE504176C76B823EC654414F2FB4BEC8BE50416D0F62DD40C65441576F8BBDC6BE504167F7C33742C654415D6F0423C5BE504167F7C33742C65441070000009A999999CDBE50418FC2F5683BC65441D7A370EDCDBE50410AD7A3C03AC65441E17A141ECFBE50417B14AE573AC65441666666C6CFBE50413D0AD7533BC65441C3F5289CCFBE5041AE47E13A3CC654415C8FC295CEBE5041D7A370ED3CC654419A999999CDBE50418FC2F5683BC65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624262 - 1433369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541F6285CDF0CFE504114AE4761AD075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B20755411F85EB6120FE5041EC51B87EB4075541AE47E18A25FE5041AE47E1FAB50755410AD7A33028FE5041713D0AD7B60755413D0AD7332DFE5041333333D3B8075541D7A370CD30FE5041295C8F42B4075541A4703D8A31FE5041CDCCCCFCB20755417B14AE6732FE50417B14AE87AF075541000000D032FE50418FC2F5C8AC075541333333C332FE50419A999939A90755416666662632FE5041EC51B80EA507554114AE477125FE504148E17A24A1075541D7A3703D1CFE50410AD7A3C09E0755410AD7A39015FE5041000000309D075541EC51B89E14FE5041CDCCCCBC9E075541A4703DBA10FE5041EC51B84EA5075541
+</a>
+
+<b>
+01060000000100000001030000000100000045000000BB2A465732FE504138895AC1A40755411AD05CF114FE50416314DF0B9E07554153DB06F114FE5041A156060C9E075541E39DFCB914FE50413AF09F059E075541B6AB126F12FE5041108C6E57A2075541A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541AD197DCC0CFE5041F2F8F962AD075541DAECA0840BFE50416A3C204AB0075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B20755411F85EB6120FE5041EC51B87EB4075541AE47E18A25FE5041AE47E1FAB50755410AD7A33028FE5041713D0AD7B60755412827E1342DFE5041053C01D2B80755413D0AD7332DFE5041333333D3B807554148E17A542CFE504185EB5108BC07554114AE47412AFE50413D0AD793BF075541C3F5283C29FE50415C8FC215C10755419A99994928FE504152B81E65C2075541B81E859B26FE5041295C8FF2C50755413D0AD70328FE5041CDCCCCECC60755413D0AD7C32DFE5041AE47E14ACA07554114AE473132FE5041C3F528CCCC0755415C8FC20536FE50410AD7A380CE07554114AE47B139FE50411F85EB41D0075541333333633DFE5041A4703DCAD107554148E17A1444FE504152B81E15D5075541C3F528CC49FE50411F85EBB1D7075541333333434BFE5041D7A3705DD80755411F85EBF152FE50410AD7A390DB075541E17A14FE53FE504148E17A64DC0755410AD7A35055FE504148E17A74DD075541F6285CFF57FE5041B81E858BDF075541713D0A375BFE50418FC2F508E2075541A4703D5A5CFE50411F85EBE1E20755417B14AE7764FE5041295C8F92D10755410000004065FE5041666666B6D0075541B81E859B63FE5041A4703D7AD00755417B14AE9762FE5041A4703DEACE0755417B14AE9762FE50419A9999B9CC075541333333335DFE504152B81EF5C7075541666666265AFE504114AE4751C6075541295C8FD258FE5041CDCCCC3CC6075541A4703DCA56FE504152B81EC5C5075541D7A3705D4FFE5041000000C0BF075541666666B64AFE504185EB51B8BB0755413D0AD77346FE50413D0AD7E3BE0755417B14AEA744FE504148E17A14C1075541B81E858B42FE50410AD7A3A0C1075541B81E85AB40FE5041C3F5285CBF075541EC51B85E3CFE504100000090BD0755410AD7A3C03DFE5041A4703D9AB80755413510DA1631FE504115532D5BB40755416C48207731FE5041C291C71DB30755415B1B288131FE5041D7D29CFDB20755418534BCB531FE5041B9EBF14EB2075541E5FD6F8832FE5041EDC31EB8AF0755415EF7EBD732FE5041A6A39DD1AE075541B19482BF32FE50417A110A38AD075541135F06C832FE50410FB1B8BEAB075541C8C620B832FE504188E81A1BA90755412781B57532FE5041AB5F266EA60755418DD39B4932FE50412C50FCD6A4075541109B0D5232FE504197469EC9A4075541BB2A465732FE504138895AC1A4075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624262 - 3529499
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541F6285CDF0CFE504114AE4761AD075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B20755411F85EB6120FE5041EC51B87EB4075541AE47E18A25FE5041AE47E1FAB50755410AD7A33028FE5041713D0AD7B60755413D0AD7332DFE5041333333D3B8075541D7A370CD30FE5041295C8F42B4075541A4703D8A31FE5041CDCCCCFCB20755417B14AE6732FE50417B14AE87AF075541000000D032FE50418FC2F5C8AC075541333333C332FE50419A999939A90755416666662632FE5041EC51B80EA507554114AE477125FE504148E17A24A1075541D7A3703D1CFE50410AD7A3C09E0755410AD7A39015FE5041000000309D075541EC51B89E14FE5041CDCCCCBC9E075541A4703DBA10FE5041EC51B84EA5075541
+</a>
+
+<b>
+01060000000100000001030000000100000045000000BB2A465732FE504138895AC1A40755411AD05CF114FE50416314DF0B9E07554153DB06F114FE5041A156060C9E075541E39DFCB914FE50413AF09F059E075541B6AB126F12FE5041108C6E57A2075541A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541AD197DCC0CFE5041F2F8F962AD075541DAECA0840BFE50416A3C204AB0075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B20755411F85EB6120FE5041EC51B87EB4075541AE47E18A25FE5041AE47E1FAB50755410AD7A33028FE5041713D0AD7B60755412827E1342DFE5041053C01D2B80755413D0AD7332DFE5041333333D3B807554148E17A542CFE504185EB5108BC07554114AE47412AFE50413D0AD793BF075541C3F5283C29FE50415C8FC215C10755419A99994928FE504152B81E65C2075541B81E859B26FE5041295C8FF2C50755413D0AD70328FE5041CDCCCCECC60755413D0AD7C32DFE5041AE47E14ACA07554114AE473132FE5041C3F528CCCC0755415C8FC20536FE50410AD7A380CE07554114AE47B139FE50411F85EB41D0075541333333633DFE5041A4703DCAD107554148E17A1444FE504152B81E15D5075541C3F528CC49FE50411F85EBB1D7075541333333434BFE5041D7A3705DD80755411F85EBF152FE50410AD7A390DB075541E17A14FE53FE504148E17A64DC0755410AD7A35055FE504148E17A74DD075541F6285CFF57FE5041B81E858BDF075541713D0A375BFE50418FC2F508E2075541A4703D5A5CFE50411F85EBE1E20755417B14AE7764FE5041295C8F92D10755410000004065FE5041666666B6D0075541B81E859B63FE5041A4703D7AD00755417B14AE9762FE5041A4703DEACE0755417B14AE9762FE50419A9999B9CC075541333333335DFE504152B81EF5C7075541666666265AFE504114AE4751C6075541295C8FD258FE5041CDCCCC3CC6075541A4703DCA56FE504152B81EC5C5075541D7A3705D4FFE5041000000C0BF075541666666B64AFE504185EB51B8BB0755413D0AD77346FE50413D0AD7E3BE0755417B14AEA744FE504148E17A14C1075541B81E858B42FE50410AD7A3A0C1075541B81E85AB40FE5041C3F5285CBF075541EC51B85E3CFE504100000090BD0755410AD7A3C03DFE5041A4703D9AB80755413510DA1631FE504115532D5BB40755416C48207731FE5041C291C71DB30755415B1B288131FE5041D7D29CFDB20755418534BCB531FE5041B9EBF14EB2075541E5FD6F8832FE5041EDC31EB8AF0755415EF7EBD732FE5041A6A39DD1AE075541B19482BF32FE50417A110A38AD075541135F06C832FE50410FB1B8BEAB075541C8C620B832FE504188E81A1BA90755412781B57532FE5041AB5F266EA60755418DD39B4932FE50412C50FCD6A4075541109B0D5232FE504197469EC9A4075541BB2A465732FE504138895AC1A4075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>301609 - 35509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCC6C613F5141F6285CEF7F26554114AE47B1703F514185EB51787A265541AE47E1AA753F51418FC2F548782655419A9999497A3F5141A4703DAA75265541D7A3707D7C3F5141D7A370CD73265541C3F5283C7C3F5141C3F5285C7326554148E17A14793F5141713D0A87742655413D0AD783733F5141E17A149E75265541D7A3702D6C3F514152B81EB576265541000000F0673F51413D0AD75377265541713D0A57633F51419A999979782655418FC2F5285C3F5141333333337A2655411F85EB11593F5141A4703DBA7A265541E17A141E503F5141333333E37D2655410AD7A350513F51413D0AD7637F26554114AE47514E3F514148E17A9482265541000000804D3F51413333332384265541333333F3473F5141CDCCCC6C852655417B14AE17493F51418FC2F5688826554133333393523F514114AE470185265541CDCCCC6C613F5141F6285CEF7F265541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000EE1ECE1E733F5141B0C316AD752655410797CC6F723F51419E1E16C775265541C21FFFEC703F5141CDF38B0076265541F7B9EF42703F51419138CF1976265541D1D0FA076F3F5141D4725A4C76265541F203D333683F5141C61BEC49772655411B982099633F51414AE91A6978265541713D0A57633F51419A99997978265541F67EC6A85D3F514165F3FCD679265541063434615C3F5141C8F6AF257A2655418FC2F5285C3F5141333333337A26554148B5210D5A3F5141BCEB5A8F7A265541BF247B89583F5141F23F66EA7A26554110ED0F50563F51412EB463B37B2655416E181113563F51416155EBC87B2655419715A394553F5141E3B18BF57B26554130703109533F5141830C7DDB7C265541E17A141E503F5141333333E37D265541952D9C89463F5141D6ED7AA181265541333333F3473F5141CDCCCC6C85265541000000804D3F5141333333238426554114AE47514E3F514148E17A94822655410AD7A350513F51413D0AD7637F26554169DF17AD523F5141391BC74F7E26554117DD6885553F5141853AA68E7C2655410B17C9B3573F5141926543157C265541551DD3735A3F514112B3C43A7B26554166126B645D3F5141F4F78C787A265541DCFE496D603F51419E2BE3E67926554112F7E6BD643F5141568AD6DB78265541F787D7316A3F51410FE9C9D0772655415FFA3E9F753F5141A98C850376265541F2A1556A793F51412092398B74265541AB0A5E61773F5141F8A343DC742655413D0AD783733F5141E17A149E75265541EE1ECE1E733F5141B0C316AD75265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>301609 - 74602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCC6C613F5141F6285CEF7F26554114AE47B1703F514185EB51787A265541AE47E1AA753F51418FC2F548782655419A9999497A3F5141A4703DAA75265541D7A3707D7C3F5141D7A370CD73265541C3F5283C7C3F5141C3F5285C7326554148E17A14793F5141713D0A87742655413D0AD783733F5141E17A149E75265541D7A3702D6C3F514152B81EB576265541000000F0673F51413D0AD75377265541713D0A57633F51419A999979782655418FC2F5285C3F5141333333337A2655411F85EB11593F5141A4703DBA7A265541E17A141E503F5141333333E37D2655410AD7A350513F51413D0AD7637F26554114AE47514E3F514148E17A9482265541000000804D3F51413333332384265541333333F3473F5141CDCCCC6C852655417B14AE17493F51418FC2F5688826554133333393523F514114AE470185265541CDCCCC6C613F5141F6285CEF7F265541
+</a>
+
+<b>
+01060000000100000001030000000100000024000000EE1ECE1E733F5141B0C316AD752655410797CC6F723F51419E1E16C775265541C21FFFEC703F5141CDF38B0076265541F7B9EF42703F51419138CF1976265541D1D0FA076F3F5141D4725A4C76265541F203D333683F5141C61BEC49772655411B982099633F51414AE91A6978265541713D0A57633F51419A99997978265541F67EC6A85D3F514165F3FCD679265541063434615C3F5141C8F6AF257A2655418FC2F5285C3F5141333333337A26554148B5210D5A3F5141BCEB5A8F7A265541BF247B89583F5141F23F66EA7A26554110ED0F50563F51412EB463B37B2655416E181113563F51416155EBC87B2655419715A394553F5141E3B18BF57B26554130703109533F5141830C7DDB7C265541E17A141E503F5141333333E37D265541952D9C89463F5141D6ED7AA181265541333333F3473F5141CDCCCC6C85265541000000804D3F5141333333238426554114AE47514E3F514148E17A94822655410AD7A350513F51413D0AD7637F26554169DF17AD523F5141391BC74F7E26554117DD6885553F5141853AA68E7C2655410B17C9B3573F5141926543157C265541551DD3735A3F514112B3C43A7B26554166126B645D3F5141F4F78C787A265541DCFE496D603F51419E2BE3E67926554112F7E6BD643F5141568AD6DB78265541F787D7316A3F51410FE9C9D0772655415FFA3E9F753F5141A98C850376265541F2A1556A793F51412092398B74265541AB0A5E61773F5141F8A343DC742655413D0AD783733F5141E17A149E75265541EE1ECE1E733F5141B0C316AD75265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976900 - 59719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000270000001F85EB112607514148E17A54F7765441EC51B83E28075141C3F5288CFA76544148E17A542A075141333333D3FC765441E17A148E2D075141D7A370CDFF765441333333C32F0751415C8FC2B501775441295C8F0234075141C3F5282C00775441A4703DAA3807514166666636FE7654418FC2F5083F0751418FC2F5A8FA7654413D0AD723460751410AD7A320F6765441D7A3707D4D075141B81E85FBF07654410AD7A31056075141713D0AB7EB765441E17A14AE5C0751413D0AD733E67654417B14AE0764075141295C8F52E07654410AD7A370680751413D0AD703DD765441000000A06B07514152B81EB5D9765441A4703DCA6F075141F6285CAFD4765441AE47E12A710751413D0AD783D4765441A4703D4A7C075141295C8F02C8765441E17A140E88075141CDCCCCCCBA765441D7A3706D87075141F6285CAFB8765441AE47E1BA83075141713D0A07B6765441000000A081075141D7A370BDB57654413D0AD7A37E075141295C8F32BA765441CDCCCCBC7B0751419A9999D9BC765441A4703D3A75075141B81E857BC27654411F85EBF16F0751419A999959C67654410AD7A3806907514148E17AD4CB765441333333A36807514114AE4781CC76544148E17A5467075141C3F5286CCC765441000000306607514114AE47C1CB7654413D0AD79358075141295C8F12C27654417B14AEB75207514185EB5108C076544148E17AF44F075141E17A14DEBE765441333333E332075141CDCCCC1CD2765441713D0A371A075141C3F5287CE276544148E17AC41E075141EC51B8FEE8765441EC51B81E23075141333333C3F1765441C3F528DC2407514114AE4731F57654411F85EB112607514148E17A54F7765441
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000BEB57E6430075141FAF45F7B01775441A4703DAA3807514166666636FE7654418FC2F5083F0751418FC2F5A8FA7654413D0AD723460751410AD7A320F6765441D7A3707D4D075141B81E85FBF07654410AD7A31056075141713D0AB7EB765441E17A14AE5C0751413D0AD733E67654417B14AE0764075141295C8F52E07654410AD7A370680751413D0AD703DD765441000000A06B07514152B81EB5D9765441A4703DCA6F075141F6285CAFD4765441AE47E12A710751413D0AD783D4765441A4703D4A7C075141295C8F02C8765441E17A140E88075141CDCCCCCCBA765441D7A3706D87075141F6285CAFB8765441AE47E1BA83075141713D0A07B6765441000000A081075141D7A370BDB57654413D0AD7A37E075141295C8F32BA765441CDCCCCBC7B0751419A9999D9BC765441A4703D3A75075141B81E857BC27654411F85EBF16F0751419A999959C67654410AD7A3806907514148E17AD4CB765441333333A36807514114AE4781CC76544148E17A5467075141C3F5286CCC765441000000306607514114AE47C1CB7654412CB5AA6164075141174B5D78CA765441940AD41662075141C660DFD6C876544137B0830C61075141C0FC6819C876544197E782356007514113937380C7765441D2D019CD5F07514135D22B36C77654415B40218D5F075141EF1DA908C7765441DD9585525F075141A520F7DEC676544128AA9B005E075141C79D90EEC5765441A737DF705D07514132B04E88C57654418457547C5A0751414775156EC3765441227BE1245A0751414CE0DE2FC37654417473E56359075141DF9793A6C2765441169C862258075141B2DC1CEBC1765441E248C9BF570751414B3FBDC8C1765441328AB68B5707514197829CB6C17654417A056A145707514144A8148DC17654419A15088F5607514101ADA55EC1765441885C444B5607514169890E47C1765441BA65274155075141D0AD6AEAC07654417B14AEB75207514185EB5108C07654413B790AEC51075141DA0171B2BF76544109387C704F075141BD967835BF7654415FE4406C4F07514163D64538BF765441866F2E634607514193F3B533C576544134DDCD7E3F0751417276DEC3C9765441756B36033D075141C465AE68CB765441558DFDE03C07514127CA567FCB7654413D2A43E0380751410366CA25CE7654416C266BD03607514100E84383CF7654414486D3C636075141D9B99D89CF7654415A3F7E221B0751411F38EADFE1765441C4D9C5AD27075141FD7645B2F7765441BEB57E6430075141FAF45F7B01775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960633 - 1293786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B00000043F60A6AA86D51417177132DDFD2544137EFAFA5A86D51417DAA1198DFD2544189503C2BB76D5141E6EE36F9FAD25441714A2CD1B86D5141822B4080FED25441FBC0284CBA6D514154E1A98900D35441E1BB0999BB6D514131A30CD1FED254418605F0D4BD6D51419C967A82FAD25441F068CEE4BD6D514132339C72FAD2544194F6695FC06D5141876ED5B9F5D2544186E32108C16D5141B0ED7FDEF4D254415787B64FC16D514188B1855EF4D254411C2B1C51B26D5141507BD9B0D8D25441713D0AB7AE6D514152B81EB5D2D25441DB7F155FAD6D51411632646ECFD25441C54046FDAC6D514172FF9C58CED25441B01C4C77AB6D5141AA205025CCD254410068F80AAB6D5141E84D0174CAD25441CC0D073CA76D514199C3179DC4D25441B4164D36AB6D5141BE2555BFBFD25441A4176083A96D5141AB1470BFBDD25441F3EAA941A86D5141ECE9B12CBBD254418DD6C64FA66D5141CEA99450B7D254410A4EEE2FA46D51410E805215B4D254410EC55764A26D5141768384C7B1D2544107DF26DEA06D514170A3772CB4D254419916D0079F6D51416B24CD63B4D254411A547A7D9E6D5141F1E021A2B3D25441B77F210F9A6D514173207786B3D25441F1DFF61C9A6D51413CB64A4FB1D25441BA053D93956D5141FCF486F5B0D254413B6F44F2916D5141FCF486F5B0D25441AF769A24916D514104D1C92CB0D254417B896D478E6D51413CB64A4FB1D254417B14AE278D6D514185EB51D8B0D25441B81E85DB8E6D51415C8FC205B6D254417A4418058F6D5141A4861D5AB8D25441E17A143E8F6D5141B81E858BBBD2544152B81E358F6D5141F6285C6FBED25441FB1DCE958E6D5141CCA8C3B1C3D2544185EB5188916D514100000010C4D25441A4703D0A946D514152B81E65C4D25441B81E85DB956D5141D7A3707DC4D25441D7A3700D986D5141B81E854BC5D2544114AE4741996D5141AE47E1DAC5D2544152B81E259B6D5141EC51B85EC6D25441713D0A679B6D51415C8FC215C7D254417B14AE979C6D514133333323C8D254418FC2F5B89D6D5141333333D3CAD25441333333B39E6D5141CDCCCC1CCCD25441B81E854BA06D51419A999999D0D2544114AE4741A16D514166666686D2D25441A4703DFAA16D5141713D0AD7D4D25441F6285C2FA26D5141333333D3D5D25441D7A3706DA36D5141F6285C6FD7D254419A9999C9A46D51411F85EB81D9D2544185EB51E8A56D514133333333DBD25441A4703DDAA66D5141AE47E15ADCD25441A21BE963A86D51419D3C1530DFD2544143F60A6AA86D51417177132DDFD25441
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000F93D45AAAC6D514136C730BED3D254413D7C6942AE6D5141F9FFA7AED1D254418602D672AE6D5141A95CCE0ED2D25441D97F155FAD6D51411932646ECFD25441C24046FDAC6D514175FF9C58CED25441AE1C4C77AB6D5141AA205025CCD25441FB67F80AAB6D5141E94D0174CAD25441D10D073CA76D514196C3179DC4D25441B4164D36AB6D5141C22555BFBFD25441A3176083A96D5141B01470BFBDD25441F6EAA941A86D5141E8E9B12CBBD2544189D6C64FA66D5141D0A99450B7D25441074EEE2FA46D51410A805215B4D254410EC55764A26D5141728384C7B1D2544107DF26DEA06D514170A3772CB4D254419916D0079F6D51416B24CD63B4D254411A547A7D9E6D5141F1E021A2B3D25441B77F210F9A6D514173207786B3D25441F1DFF61C9A6D51413CB64A4FB1D25441BA053D93956D5141FCF486F5B0D254413B6F44F2916D5141FCF486F5B0D25441AF769A24916D514104D1C92CB0D254417B896D478E6D51413CB64A4FB1D254417B14AE278D6D514185EB51D8B0D25441B81E85DB8E6D51415C8FC205B6D254417A4418058F6D5141A4861D5AB8D25441E17A143E8F6D5141B81E858BBBD2544152B81E358F6D5141F6285C6FBED25441FB1DCE958E6D5141CCA8C3B1C3D2544185EB5188916D514100000010C4D25441A4703D0A946D514152B81E65C4D25441B81E85DB956D5141D7A3707DC4D25441D7A3700D986D5141B81E854BC5D2544114AE4741996D5141AE47E1DAC5D2544152B81E259B6D5141EC51B85EC6D25441713D0A679B6D51415C8FC215C7D254417B14AE979C6D514133333323C8D254418FC2F5B89D6D5141333333D3CAD25441333333B39E6D5141CDCCCC1CCCD25441B81E854BA06D51419A999999D0D2544114AE4741A16D514166666686D2D25441A4703DFAA16D5141713D0AD7D4D25441F6285C2FA26D5141333333D3D5D25441D7A3706DA36D5141F6285C6FD7D254419A9999C9A46D51411F85EB81D9D2544185EB51E8A56D514133333333DBD25441A4703DDAA66D5141AE47E15ADCD25441A21BE963A86D51419D3C1530DFD254413EF60A6AA86D51417677132DDFD254413CEFAFA5A86D514182AA1198DFD254413FFB8974A96D51413D5D121EE1D25441BCABDA72A96D5141BAB22C07E1D25441C2DE0BABA86D51414FB0548DDFD25441B3E24A3BA96D51412C571214DED2544100F77B51A96D5141474B5563DCD254416B990403AA6D5141AA88DEEAD9D25441CE7018E1AA6D5141BB83BC9CD7D25441F93D45AAAC6D514136C730BED3D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960633 - 3350232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B00000043F60A6AA86D51417177132DDFD2544137EFAFA5A86D51417DAA1198DFD2544189503C2BB76D5141E6EE36F9FAD25441714A2CD1B86D5141822B4080FED25441FBC0284CBA6D514154E1A98900D35441E1BB0999BB6D514131A30CD1FED254418605F0D4BD6D51419C967A82FAD25441F068CEE4BD6D514132339C72FAD2544194F6695FC06D5141876ED5B9F5D2544186E32108C16D5141B0ED7FDEF4D254415787B64FC16D514188B1855EF4D254411C2B1C51B26D5141507BD9B0D8D25441713D0AB7AE6D514152B81EB5D2D25441DB7F155FAD6D51411632646ECFD25441C54046FDAC6D514172FF9C58CED25441B01C4C77AB6D5141AA205025CCD254410068F80AAB6D5141E84D0174CAD25441CC0D073CA76D514199C3179DC4D25441B4164D36AB6D5141BE2555BFBFD25441A4176083A96D5141AB1470BFBDD25441F3EAA941A86D5141ECE9B12CBBD254418DD6C64FA66D5141CEA99450B7D254410A4EEE2FA46D51410E805215B4D254410EC55764A26D5141768384C7B1D2544107DF26DEA06D514170A3772CB4D254419916D0079F6D51416B24CD63B4D254411A547A7D9E6D5141F1E021A2B3D25441B77F210F9A6D514173207786B3D25441F1DFF61C9A6D51413CB64A4FB1D25441BA053D93956D5141FCF486F5B0D254413B6F44F2916D5141FCF486F5B0D25441AF769A24916D514104D1C92CB0D254417B896D478E6D51413CB64A4FB1D254417B14AE278D6D514185EB51D8B0D25441B81E85DB8E6D51415C8FC205B6D254417A4418058F6D5141A4861D5AB8D25441E17A143E8F6D5141B81E858BBBD2544152B81E358F6D5141F6285C6FBED25441FB1DCE958E6D5141CCA8C3B1C3D2544185EB5188916D514100000010C4D25441A4703D0A946D514152B81E65C4D25441B81E85DB956D5141D7A3707DC4D25441D7A3700D986D5141B81E854BC5D2544114AE4741996D5141AE47E1DAC5D2544152B81E259B6D5141EC51B85EC6D25441713D0A679B6D51415C8FC215C7D254417B14AE979C6D514133333323C8D254418FC2F5B89D6D5141333333D3CAD25441333333B39E6D5141CDCCCC1CCCD25441B81E854BA06D51419A999999D0D2544114AE4741A16D514166666686D2D25441A4703DFAA16D5141713D0AD7D4D25441F6285C2FA26D5141333333D3D5D25441D7A3706DA36D5141F6285C6FD7D254419A9999C9A46D51411F85EB81D9D2544185EB51E8A56D514133333333DBD25441A4703DDAA66D5141AE47E15ADCD25441A21BE963A86D51419D3C1530DFD2544143F60A6AA86D51417177132DDFD25441
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000F93D45AAAC6D514136C730BED3D254413D7C6942AE6D5141F9FFA7AED1D254418602D672AE6D5141A95CCE0ED2D25441D97F155FAD6D51411932646ECFD25441C24046FDAC6D514175FF9C58CED25441AE1C4C77AB6D5141AA205025CCD25441FB67F80AAB6D5141E94D0174CAD25441D10D073CA76D514196C3179DC4D25441B4164D36AB6D5141C22555BFBFD25441A3176083A96D5141B01470BFBDD25441F6EAA941A86D5141E8E9B12CBBD2544189D6C64FA66D5141D0A99450B7D25441074EEE2FA46D51410A805215B4D254410EC55764A26D5141728384C7B1D2544107DF26DEA06D514170A3772CB4D254419916D0079F6D51416B24CD63B4D254411A547A7D9E6D5141F1E021A2B3D25441B77F210F9A6D514173207786B3D25441F1DFF61C9A6D51413CB64A4FB1D25441BA053D93956D5141FCF486F5B0D254413B6F44F2916D5141FCF486F5B0D25441AF769A24916D514104D1C92CB0D254417B896D478E6D51413CB64A4FB1D254417B14AE278D6D514185EB51D8B0D25441B81E85DB8E6D51415C8FC205B6D254417A4418058F6D5141A4861D5AB8D25441E17A143E8F6D5141B81E858BBBD2544152B81E358F6D5141F6285C6FBED25441FB1DCE958E6D5141CCA8C3B1C3D2544185EB5188916D514100000010C4D25441A4703D0A946D514152B81E65C4D25441B81E85DB956D5141D7A3707DC4D25441D7A3700D986D5141B81E854BC5D2544114AE4741996D5141AE47E1DAC5D2544152B81E259B6D5141EC51B85EC6D25441713D0A679B6D51415C8FC215C7D254417B14AE979C6D514133333323C8D254418FC2F5B89D6D5141333333D3CAD25441333333B39E6D5141CDCCCC1CCCD25441B81E854BA06D51419A999999D0D2544114AE4741A16D514166666686D2D25441A4703DFAA16D5141713D0AD7D4D25441F6285C2FA26D5141333333D3D5D25441D7A3706DA36D5141F6285C6FD7D254419A9999C9A46D51411F85EB81D9D2544185EB51E8A56D514133333333DBD25441A4703DDAA66D5141AE47E15ADCD25441A21BE963A86D51419D3C1530DFD254413EF60A6AA86D51417677132DDFD254413CEFAFA5A86D514182AA1198DFD254413FFB8974A96D51413D5D121EE1D25441BCABDA72A96D5141BAB22C07E1D25441C2DE0BABA86D51414FB0548DDFD25441B3E24A3BA96D51412C571214DED2544100F77B51A96D5141474B5563DCD254416B990403AA6D5141AA88DEEAD9D25441CE7018E1AA6D5141BB83BC9CD7D25441F93D45AAAC6D514136C730BED3D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891834 - 2945182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703D1ABE01514166666606D2E15441B81E852BC10151418FC2F558D3E154419A9999F9C50151417B14AE17D5E1544133333363C7015141F6285C7FD5E154410AD7A310CA01514166666646CEE1544148E17AB4CE0151411F85EB71C0E154415C8FC2B5D001514166666676B7E15441EC51B82ECB015141713D0AA7B5E1544152B81E75C7015141B81E854BB4E154413D0AD713C60151415C8FC2B5B3E154417B14AE57C301514152B81E65B2E15441F6285CFFBC0151410AD7A310AFE15441F6285C3FAF0151413D0AD7D3C9E154417B14AEF7B30151411F85EB91CCE1544152B81E85B601514133333313CEE15441713D0A77BA015141D7A3706DD0E15441A4703D1ABE01514166666606D2E15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000AE47E1AAC6015141295C8FB2D7E1544187CD822BC8015141C759750ED8E15441F3BB14F8C90151418E806C89D8E15441A616AC07CA0151418BC5EC5DD8E15441A3E60E21CA0151416C531917D8E154419AE11F71CA015141F640E114D7E15441965C3CC0CA015141A2B5BD15D6E154410901766ACB015141827BF3ECD3E15441E91147FFCC0151411C4C37C1CEE1544108BF0949CE015141926FE98ACAE15441DC9FC286CF015141C8EFF87BC6E15441388AEA15D001514180A5DBA7C4E15441ACDCF373D0015141A9026C6CC3E15441ACDC5EDAD0015141AA821600C2E15441CAD5561CD10151410D816A15C1E15441D728DC2BD1015141B2B143C5C0E154413C480FF5D10151418AFC431FBCE15441E17A14AED20151418FC2F5D8B7E154415C8FC2B5D001514166666676B7E15441C8694682CF015141E6A9F2D7BCE154415D2EFACECE01514127FE35FBBFE1544129DEA6A9CE01514101CA3192C0E154412014BC5CCE0151412B397477C1E15441EF7F3D27CD015141ED28EF11C5E15441D5253A20CB015141190CE81CCBE15441F7AE1320CA01514193856318CEE154417EFECAABC9015141A7CC6E56CFE15441B90B4AA2C7015141BF972DD5D4E15441AE47E1AAC6015141295C8FB2D7E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891834 - 3447612
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703D1ABE01514166666606D2E15441B81E852BC10151418FC2F558D3E154419A9999F9C50151417B14AE17D5E1544133333363C7015141F6285C7FD5E154410AD7A310CA01514166666646CEE1544148E17AB4CE0151411F85EB71C0E154415C8FC2B5D001514166666676B7E15441EC51B82ECB015141713D0AA7B5E1544152B81E75C7015141B81E854BB4E154413D0AD713C60151415C8FC2B5B3E154417B14AE57C301514152B81E65B2E15441F6285CFFBC0151410AD7A310AFE15441F6285C3FAF0151413D0AD7D3C9E154417B14AEF7B30151411F85EB91CCE1544152B81E85B601514133333313CEE15441713D0A77BA015141D7A3706DD0E15441A4703D1ABE01514166666606D2E15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000AE47E1AAC6015141295C8FB2D7E1544187CD822BC8015141C759750ED8E15441F3BB14F8C90151418E806C89D8E15441A616AC07CA0151418BC5EC5DD8E15441A3E60E21CA0151416C531917D8E154419AE11F71CA015141F640E114D7E15441965C3CC0CA015141A2B5BD15D6E154410901766ACB015141827BF3ECD3E15441E91147FFCC0151411C4C37C1CEE1544108BF0949CE015141926FE98ACAE15441DC9FC286CF015141C8EFF87BC6E15441388AEA15D001514180A5DBA7C4E15441ACDCF373D0015141A9026C6CC3E15441ACDC5EDAD0015141AA821600C2E15441CAD5561CD10151410D816A15C1E15441D728DC2BD1015141B2B143C5C0E154413C480FF5D10151418AFC431FBCE15441E17A14AED20151418FC2F5D8B7E154415C8FC2B5D001514166666676B7E15441C8694682CF015141E6A9F2D7BCE154415D2EFACECE01514127FE35FBBFE1544129DEA6A9CE01514101CA3192C0E154412014BC5CCE0151412B397477C1E15441EF7F3D27CD015141ED28EF11C5E15441D5253A20CB015141190CE81CCBE15441F7AE1320CA01514193856318CEE154417EFECAABC9015141A7CC6E56CFE15441B90B4AA2C7015141BF972DD5D4E15441AE47E1AAC6015141295C8FB2D7E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891932 - 405789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004E000000333333F3CBEF5041D7A3704DD1E154411F85EB91CCEF5041C3F5289CD0E15441C3F528FCCCEF5041713D0A07D0E1544114AE4711CDEF5041C3F528DCCFE15441AE47E15AB8EF5041713D0A67C0E154415C8FC24590EF5041F6285C7FA2E15441295C8F4280EF50415C8FC2F5B7E15441F6285C2F63EF5041CDCCCCECDEE15441AE47E11A46EF5041666666E605E254411F85EBA14AEF504148E17A4409E25441D7A3706D4BEF5041AE47E17A08E25441CDCCCCEC60EF50417B14AE97EBE15441F6285C4F63EF50415C8FC245E8E15441A4703D6A6BEF504185EB5148DEE1544114AE472176EF50417B14AE17D0E1544185EB51E878EF504152B81EA5CCE15441C3F528AC7BEF50411F85EB31C7E15441666666167FEF50415C8FC265C0E154413D0AD7C387EF5041E17A14FEB3E1544114AE47118AEF5041F6285C9FB0E15441D7A3708D8AEF5041C3F528FCB0E15441E17A144E88EF5041E17A145EB4E15441CDCCCCAC7FEF5041E17A14CEC0E15441C3F528CC7AEF5041CDCCCCECCAE15441713D0AA780EF5041E17A14CEC4E154410000005081EF5041F6285C8FC5E15441D7A3709D7BEF5041AE47E16ACBE15441000000606EEF504152B81E05DEE15441CDCCCCDC6EEF50411F85EBD1DFE15441713D0AF775EF504166666646E5E15441B81E85AB7DEF5041C3F528DCEAE1544152B81ED587EF504152B81ED5F1E15441D7A3705D8EEF5041CDCCCC6CF7E1544148E17AF493EF504185EB51E8FBE15441C3F5283C9BEF50413D0AD71301E2544152B81EA59BEF50418FC2F56801E254411F85EB819CEF504148E17AF401E25441F6285CAF9DEF50417B14AEA702E25441AE47E19A9EEF5041CDCCCC3C03E2544152B81E759FEF50411F85EBE103E254410AD7A350A0EF50417B14AE8704E2544166666696A0EF5041F6285CCF04E25441E17A146EA1EF504152B81E8505E25441D7A370EDA1EF5041000000F005E25441C3F528ACA2EF50413333334306E25441B81E859BA3EF5041EC51B82E06E25441A4703DFAA5EF50418FC2F5A804E25441F6285CDFA9EF504114AE4721FFE15441333333F3B5EF5041EC51B8AEEEE15441D7A370EDB6EF50419A999959EDE15441C3F5289CB8EF5041EC51B80EEBE15441AE47E1BABFEF5041C3F5285CE1E15441A4703DEABFEF50418FC2F508E1E15441713D0A27C0EF50419A9999C9E0E15441F6285C6FC0EF5041E17A147EE0E154419A9999D9C0EF504114AE47E1DFE15441295C8F12C1EF504100000090DFE15441B81E859BC1EF504148E17AF4DEE1544152B81E45C2EF5041B81E850BDEE154419A999919C3EF5041C3F528FCDCE1544152B81EF5C3EF504148E17AD4DBE15441AE47E1BAC4EF5041F6285CBFDAE1544114AE4741C5EF5041295C8F02DAE154419A9999B9C5EF50418FC2F558D9E15441A4703D3AC6EF50417B14AEB7D8E15441AE47E1BAC6EF50419A9999F9D7E15441CDCCCC6CC7EF5041F6285C1FD7E15441A4703D2AC8EF50410AD7A340D6E154411F85EB71C8EF5041B81E85EBD5E154419A9999A9C8EF5041D7A3709DD5E15441EC51B8CEC8EF504133333343D5E15441000000E0C8EF5041C3F528DCD4E154418FC2F508C9EF504185EB5178D4E1544152B81E35C9EF5041A4703D2AD4E15441666666D6C9EF5041E17A145ED3E154410AD7A390CAEF504148E17A94D2E1544166666636CBEF504100000000D2E15441333333F3CBEF5041D7A3704DD1E15441
+</a>
+
+<b>
+01060000000100000001030000000100000078000000885D9167CCEF50417FF276CBD0E15441DD7905B6CCEF504121D17C69D0E15441FE033611CDEF5041F7D24CDCCFE15441AE5E54D6CBEF5041A6DC4BF1CEE154419A6C51EBC7EF50411663B904CCE15441AE47E15AB8EF5041713D0A67C0E154417C2B9021A7EF5041363CC15BB3E15441D92E285BA6EF5041ED2768C9B2E15441F2D97241A6EF5041FECE19E6B2E154415C8FC24590EF5041F6285C7FA2E15441295C8F4280EF50415C8FC2F5B7E15441B79207F076EF504143831474C4E154412326E09A69EF504190183C52D6E15441DCFB1D005AEF50411E9B183CEBE15441AE47E11A46EF5041666666E605E254411F85EBA14AEF504148E17A4409E25441BC8431744BEF5041A714CE7108E2544102B9D36057EF50414C99CB6BF8E154412890309D61EF50413CBE23A2EAE15441F6285C4F63EF50415C8FC245E8E1544113EDFB8767EF5041ECFECF11E3E15441355440596AEF50419662CC98DFE15441058B5F456FEF504195440C2DD9E1544114AE472176EF50417B14AE17D0E1544179CB180877EF5041CD3E2FF9CEE1544185EB51E878EF504152B81EA5CCE15441006325D479EF504110854AD4CAE15441908037047BEF50417F80F27CC8E15441BC4B72607DEF50410FC77FCDC3E15441666666167FEF50415C8FC265C0E15441EFD738C280EF504126BE2902BEE15441A726546F83EF5041F233C32EBAE154410C7D02C987EF50411D7283F6B3E15441BE6FB50289EF5041AE11602BB2E1544114AE47118AEF5041F6285C9FB0E15441D7A3708D8AEF5041C3F528FCB0E15441E73C1A4089EF5041B3B5D5F1B2E15441E17A144E88EF5041E17A145EB4E15441E3D6BF8C86EF5041A902A7E5B6E154414B37DDBD82EF5041CC92A662BCE15441CDCCCCAC7FEF5041E17A14CEC0E15441884D96397EEF504169EE48D0C3E154418C54FCB47CEF5041DD7391F6C6E154415C9A84D77BEF50416CA413C2C8E15441C3F528CC7AEF5041CDCCCCECCAE15441713D0AA780EF5041E17A14CEC4E154410000005081EF5041F6285C8FC5E154417BF823B07EEF50413C441642C8E1544159DA0DAC7CEF50411C97AA54CAE15441D7A3709D7BEF5041AE47E16ACBE15441D13281DF7AEF50412A51BE75CCE15441879BEF3C77EF504194AB3691D1E154419612EAA570EF50417E6484D3DAE15441E965F2A16EEF5041739176A8DDE154413D1BEA786EEF50417582D3FBDDE15441AFA7EF786EEF504177233161DEE15441BAA7ADAC6EEF504164723D20DFE15441A27308CE6EEF5041954F659BDFE15441E8E14DFA6EEF5041C89594E8DFE154410BC6DA6671EF5041210330C5E1E154417722BB7678EF504156231516E7E15441E40727CA7BEF504158233D7FE9E154416843F2577EEF5041873C7652EBE154417EDA97C784EF50411DEDE9BCEFE1544152B81ED587EF504152B81ED5F1E15441191A56ED8DEF504133DDD30CF7E154415DCEB96593EF50415E37D975FBE1544132B9A58496EF504170964EBAFDE15441C3F5283C9BEF50413D0AD71301E2544101626B969BEF50410BC9095D01E25441AB6C49B59BEF5041FEF02C7301E254417D1685429CEF5041F0206BCC01E254411F85EB819CEF504148E17AF401E25441F6285CAF9DEF50417B14AEA702E25441AE47E19A9EEF5041CDCCCC3C03E2544152B81E759FEF50411F85EBE103E254410AD7A350A0EF50417B14AE8704E2544166666696A0EF5041F6285CCF04E25441F65C9EC1A0EF5041E417C8F304E254410FA165FEA1EF504158B865F705E25441C3F528ACA2EF50413333334306E25441E28A4E84A3EF50419DC6B43006E25441852BE0ABA5EF5041AF384DDB04E25441A4703DFAA5EF50418FC2F5A804E254414B1B24ECA6EF5041D833845103E25441BF247CCEA9EF5041EC1A3D39FFE15441F6285CDFA9EF504114AE4721FFE154419E7F005CAAEF5041C3F38977FEE1544199C1157FB3EF50411B141B06F2E1544145ED1A0DB7EF50411F55742EEDE15441C3F5289CB8EF5041EC51B80EEBE1544195EA3A02BBEF504145EE59CAE7E15441AE47E1BABFEF5041C3F5285CE1E15441A4703DEABFEF50418FC2F508E1E15441713D0A27C0EF50419A9999C9E0E15441F6285C6FC0EF5041E17A147EE0E154419A9999D9C0EF504114AE47E1DFE15441295C8F12C1EF504100000090DFE15441B81E859BC1EF504148E17AF4DEE1544152B81E45C2EF5041B81E850BDEE154419A999919C3EF5041C3F528FCDCE1544152B81EF5C3EF504148E17AD4DBE15441AE47E1BAC4EF5041F6285CBFDAE1544114AE4741C5EF5041295C8F02DAE154419A9999B9C5EF50418FC2F558D9E15441A4703D3AC6EF50417B14AEB7D8E15441AE47E1BAC6EF50419A9999F9D7E15441CDCCCC6CC7EF5041F6285C1FD7E15441A4703D2AC8EF50410AD7A340D6E154411F85EB71C8EF5041B81E85EBD5E154419A9999A9C8EF5041D7A3709DD5E15441EC51B8CEC8EF504133333343D5E15441000000E0C8EF5041C3F528DCD4E154418FC2F508C9EF504185EB5178D4E1544152B81E35C9EF5041A4703D2AD4E15441666666D6C9EF5041E17A145ED3E154410AD7A390CAEF504148E17A94D2E1544166666636CBEF504100000000D2E15441333333F3CBEF5041D7A3704DD1E15441885D9167CCEF50417FF276CBD0E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235975 - 235971
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000001FBA177521F950415DA28E2F212C544107BA177521F9504103A28E2F212C5441A47F2B6F21F9504156F1C91D212C54418E60DA15F9F85041B6BBD0AF302C5441465BA02DE7F85041A0DF410B382C544120EDF74BE7F850413B779C4E382C5441EC73C3FFE7F850413893F1323B2C5441CDCCCCFCE7F8504148E17A343B2C544119CC1D0AE8F85041337A325A3B2C5441E85532D6E9F8504153CAAD70402C544168C39321FAF85041A5AB7CD7392C5441D0A30EFD06F950416C39EEBF342C5441EA14503612F950414A0BC050302C5441D15E5AC919F950415EB27A4D2D2C54411765C61923F95041149B02E3292C54413982737223F950418CF6E7C4292C54411FBA177521F950415DA28E2F212C5441
+</a>
+
+<b>
+0106000000010000000103000000040000001500000052B81E852CF95041E17A149E182C54410AD7A3902AF95041295C8FE2122C5441A4703DDA25F950410AD7A3D0142C5441713D0AD71DF95041000000E0172C544148E17A1413F95041D7A370AD1B2C54418FC2F5480BF95041F6285C9F1E2C5441295C8F4200F9504185EB5108232C54411F85EB01EFF8504100000060292C5441A4703DBAECF850419A9999592A2C5441666666C6EAF850417B14AE872B2C5441333333B3E4F85041D7A370AD302C5441713D0A57E4F850419A9999F9332C54410AD7A390E4F850415C8FC265382C54416FB1A29BE5F85041F4988D2D3F2C544132DBA5B4EAF8504166591581532C544152B81EB5EDF85041F6285CCF602C5441F6285CDF3CF95041B81E856B412C5441D7A3705D37F95041F6285C0F352C5441295C8F5237F95041713D0AF7342C54419A9999992DF950415C8FC2751B2C544152B81E852CF95041E17A149E182C5441050000000AD7A3402BF95041713D0A171E2C5441666666C62CF950411F85EB811D2C5441666666062EF95041AE47E1CA202C5441000000802CF95041F6285C5F212C54410AD7A3402BF95041713D0A171E2C54410F0000000AD7A38008F95041713D0AA7522C544166666656FCF8504152B81E85572C54410AD7A380F0F8504152B81ED55B2C5441E17A142EEEF85041D7A370DD542C54413D0AD713ECF8504148E17A044C2C54419A999979F6F850410AD7A3D0472C5441E17A14DE01F95041AE47E12A432C5441CDCCCCDC1AF9504133333353392C54417B14AE9725F95041B81E853B352C54418FC2F57827F95041D7A370DD3C2C544114AE472129F95041AE47E1BA412C544152B81E752AF95041E17A147E452C54410000006024F950417B14AE97472C54415C8FC2C516F95041333333034D2C54410AD7A38008F95041713D0AA7522C544117000000A07F2B6F21F950415BF1C91D212C544187BA177521F95041FAA18E2F212C54413882737223F9504189F6E7C4292C54411465C61923F95041109B02E3292C5441D15E5AC919F9504163B27A4D2D2C5441EB14503612F95041480BC050302C5441D2A30EFD06F950416F39EEBF342C54416CC39321FAF85041A2AB7CD7392C5441E95532D6E9F8504153CAAD70402C5441F6285CBFE9F850410AD7A330402C544119CC1D0AE8F85041307A325A3B2C54415EDC6309E8F850413323955A3B2C544179577D07E8F85041C9D2C1523B2C5441CDCCCCFCE7F8504148E17A343B2C5441E873C3FFE7F850413593F1323B2C544122EDF74BE7F850413A779C4E382C54418964C63BE7F85041EE11C12A382C54414A5BA02DE7F850419EDF410B382C54418960DA15F9F85041BABBD0AF302C54415880828C1FF9504191730BD8212C5441C0DFBB3921F950411D7AE81C212C5441E1A9F44021F9504196659F2F212C5441A07F2B6F21F950415BF1C91D212C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235975 - 1157879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000001FBA177521F950415DA28E2F212C544107BA177521F9504103A28E2F212C5441A47F2B6F21F9504156F1C91D212C54418E60DA15F9F85041B6BBD0AF302C5441465BA02DE7F85041A0DF410B382C544120EDF74BE7F850413B779C4E382C5441EC73C3FFE7F850413893F1323B2C5441CDCCCCFCE7F8504148E17A343B2C544119CC1D0AE8F85041337A325A3B2C5441E85532D6E9F8504153CAAD70402C544168C39321FAF85041A5AB7CD7392C5441D0A30EFD06F950416C39EEBF342C5441EA14503612F950414A0BC050302C5441D15E5AC919F950415EB27A4D2D2C54411765C61923F95041149B02E3292C54413982737223F950418CF6E7C4292C54411FBA177521F950415DA28E2F212C5441
+</a>
+
+<b>
+0106000000010000000103000000040000001500000052B81E852CF95041E17A149E182C54410AD7A3902AF95041295C8FE2122C5441A4703DDA25F950410AD7A3D0142C5441713D0AD71DF95041000000E0172C544148E17A1413F95041D7A370AD1B2C54418FC2F5480BF95041F6285C9F1E2C5441295C8F4200F9504185EB5108232C54411F85EB01EFF8504100000060292C5441A4703DBAECF850419A9999592A2C5441666666C6EAF850417B14AE872B2C5441333333B3E4F85041D7A370AD302C5441713D0A57E4F850419A9999F9332C54410AD7A390E4F850415C8FC265382C544170B1A29BE5F85041F0988D2D3F2C544131DBA5B4EAF8504163591581532C544152B81EB5EDF85041F6285CCF602C5441F6285CDF3CF95041B81E856B412C5441D7A3705D37F95041F6285C0F352C5441295C8F5237F95041713D0AF7342C54419A9999992DF950415C8FC2751B2C544152B81E852CF95041E17A149E182C5441050000000AD7A3402BF95041713D0A171E2C5441666666C62CF950411F85EB811D2C5441666666062EF95041AE47E1CA202C5441000000802CF95041F6285C5F212C54410AD7A3402BF95041713D0A171E2C54410F0000000AD7A38008F95041713D0AA7522C544166666656FCF8504152B81E85572C54410AD7A380F0F8504152B81ED55B2C5441E17A142EEEF85041D7A370DD542C54413D0AD713ECF8504148E17A044C2C54419A999979F6F850410AD7A3D0472C5441E17A14DE01F95041AE47E12A432C5441CDCCCCDC1AF9504133333353392C54417B14AE9725F95041B81E853B352C54418FC2F57827F95041D7A370DD3C2C544114AE472129F95041AE47E1BA412C544152B81E752AF95041E17A147E452C54410000006024F950417B14AE97472C54415C8FC2C516F95041333333034D2C54410AD7A38008F95041713D0AA7522C544117000000A07F2B6F21F950415BF1C91D212C544187BA177521F95041FAA18E2F212C54413882737223F9504189F6E7C4292C54411465C61923F95041109B02E3292C5441D15E5AC919F9504163B27A4D2D2C5441EB14503612F95041480BC050302C5441D2A30EFD06F950416F39EEBF342C54416CC39321FAF85041A2AB7CD7392C5441E95532D6E9F8504153CAAD70402C5441F6285CBFE9F850410AD7A330402C544119CC1D0AE8F85041307A325A3B2C54415EDC6309E8F850413323955A3B2C544179577D07E8F85041C9D2C1523B2C5441CDCCCCFCE7F8504148E17A343B2C5441E873C3FFE7F850413593F1323B2C544122EDF74BE7F850413A779C4E382C54418964C63BE7F85041EE11C12A382C54414A5BA02DE7F850419EDF410B382C54418960DA15F9F85041BABBD0AF302C54415880828C1FF9504191730BD8212C5441C0DFBB3921F950411D7AE81C212C5441E1A9F44021F9504196659F2F212C5441A07F2B6F21F950415BF1C91D212C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235975 - 5255529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000001FBA177521F950415DA28E2F212C544107BA177521F9504103A28E2F212C5441A47F2B6F21F9504156F1C91D212C54418E60DA15F9F85041B6BBD0AF302C5441465BA02DE7F85041A0DF410B382C544120EDF74BE7F850413B779C4E382C5441EC73C3FFE7F850413893F1323B2C5441CDCCCCFCE7F8504148E17A343B2C544119CC1D0AE8F85041337A325A3B2C5441E85532D6E9F8504153CAAD70402C544168C39321FAF85041A5AB7CD7392C5441D0A30EFD06F950416C39EEBF342C5441EA14503612F950414A0BC050302C5441D15E5AC919F950415EB27A4D2D2C54411765C61923F95041149B02E3292C54413982737223F950418CF6E7C4292C54411FBA177521F950415DA28E2F212C5441
+</a>
+
+<b>
+0106000000010000000103000000040000001500000052B81E852CF95041E17A149E182C54410AD7A3902AF95041295C8FE2122C5441A4703DDA25F950410AD7A3D0142C5441713D0AD71DF95041000000E0172C544148E17A1413F95041D7A370AD1B2C54418FC2F5480BF95041F6285C9F1E2C5441295C8F4200F9504185EB5108232C54411F85EB01EFF8504100000060292C5441A4703DBAECF850419A9999592A2C5441666666C6EAF850417B14AE872B2C5441333333B3E4F85041D7A370AD302C5441713D0A57E4F850419A9999F9332C54410AD7A390E4F850415C8FC265382C544170B1A29BE5F85041F0988D2D3F2C544131DBA5B4EAF8504163591581532C544152B81EB5EDF85041F6285CCF602C5441F6285CDF3CF95041B81E856B412C5441D7A3705D37F95041F6285C0F352C5441295C8F5237F95041713D0AF7342C54419A9999992DF950415C8FC2751B2C544152B81E852CF95041E17A149E182C5441050000000AD7A3402BF95041713D0A171E2C5441666666C62CF950411F85EB811D2C5441666666062EF95041AE47E1CA202C5441000000802CF95041F6285C5F212C54410AD7A3402BF95041713D0A171E2C54410F0000000AD7A38008F95041713D0AA7522C544166666656FCF8504152B81E85572C54410AD7A380F0F8504152B81ED55B2C5441E17A142EEEF85041D7A370DD542C54413D0AD713ECF8504148E17A044C2C54419A999979F6F850410AD7A3D0472C5441E17A14DE01F95041AE47E12A432C5441CDCCCCDC1AF9504133333353392C54417B14AE9725F95041B81E853B352C54418FC2F57827F95041D7A370DD3C2C544114AE472129F95041AE47E1BA412C544152B81E752AF95041E17A147E452C54410000006024F950417B14AE97472C54415C8FC2C516F95041333333034D2C54410AD7A38008F95041713D0AA7522C544117000000A07F2B6F21F950415BF1C91D212C544187BA177521F95041FAA18E2F212C54413882737223F9504189F6E7C4292C54411465C61923F95041109B02E3292C5441D15E5AC919F9504163B27A4D2D2C5441EB14503612F95041480BC050302C5441D2A30EFD06F950416F39EEBF342C54416CC39321FAF85041A2AB7CD7392C5441E95532D6E9F8504153CAAD70402C5441F6285CBFE9F850410AD7A330402C544119CC1D0AE8F85041307A325A3B2C54415EDC6309E8F850413323955A3B2C544179577D07E8F85041C9D2C1523B2C5441CDCCCCFCE7F8504148E17A343B2C5441E873C3FFE7F850413593F1323B2C544122EDF74BE7F850413A779C4E382C54418964C63BE7F85041EE11C12A382C54414A5BA02DE7F850419EDF410B382C54418960DA15F9F85041BABBD0AF302C54415880828C1FF9504191730BD8212C5441C0DFBB3921F950411D7AE81C212C5441E1A9F44021F9504196659F2F212C5441A07F2B6F21F950415BF1C91D212C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880102 - 53370
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5280C173F51410AD7A3A05C46544114AE4731153F5141295C8F4257465441E17A145E0E3F5141666666265E465441CDCCCCAC073F5141EC51B89E68465441C3F528BC083F5141000000D06946544148E17A640A3F5141713D0A3769465441C3F5280C173F51410AD7A3A05C465441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000A8B05610A3F51417B63493869465441F5BDBF640A3F5141CBBEC53669465441C3F5280C173F51410AD7A3A05C46544128E63530153F514196BFA343574654410C115D67133F5141D76AD610594654412A8ADE5F0E3F5141C7501F275E4654419AB68A2E093F514156FF334B664654417B1FE12E083F51412F0938D367465441FF0740AE073F5141458D739C6846544151844F94083F514160602BA369465441C3F528BC083F5141000000D0694654410A8B05610A3F51417B63493869465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 1010394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441C3F528BC8807514185EB51D8F5345441295C8FA2870751418FC2F5E8F5345441BA52595F85075141A20C62C5F3345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441795726EA7907514186051836F134544124C24FD178075141BFD32075EC345441379C7E5478075141E5877E7BEB34544166BD731C77075141E5C7FA30E83454412402CC8675075141C05319E0E53454414EC2F23A720751413457F647E63454417FD43493720751413A09AC3AE73454410A77ACC472075141504E9B9DE73454418CB14DD872075141F8A129B4E7345441BDD1656F7307514180FAAB53E9345441977FF21974075141DAB5ABCEEA3454414AB6298D74075141E5877E7BEB34544178E1343F75075141452CCDBEEC3454411E6F66817507514138D56185ED345441C3FC97C37507514181F0C409EE34544122211C74760751416F4B0FC3EF345441E9FC6FAA77075141FF557C45F2345441CD6003A97707514193B89BD4F1345441FD724501780751410CE640B1F2345441CFAC804D7E075141C7C0CEF5FF3454419E4B1EFA8F07514113A9826DF7345441CDCCCC2C94075141000000C0F63454413D0AD7C398075141C3F5282CF8345441295C8FB29907514148E17A64FA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA50751419B9FCA03F43454412BAF1BA6A6075141205696E4F334544164FD2B7AA8075141B8E69048F3345441AF256BD1A9075141460AF4EAF234544163BDAFC4AB075141D42D578DF2345441CC2CB560AC0751416351BA2FF2345441909E28D7AD075141E8078610F2345441E533FFEFAE0751416DBE51F1F134544147366DCAAF0751416CBE51F1F1345441905EAC21B1075141054F4C55F1345441728A3472B7075141BB0C5A50F1345441F1328B80B707514189AEFA20F13454410A000000053B3A55A40751416CBE51F1F13454412282009AA3075141D5AD4FF8EB345441516379ACA5075141801879DFEA3454415A9094B8A807514121160B05EA345441FB4DAA28AB0751419C5F3F24EA345441B95286DDAC0751415A641BD9EB3454411755F4B7AD075141AFB9753CF03454415123FDF6A80751417F988074F134544118D5EC22A7075141FBE1B493F1345441053B3A55A40751416CBE51F1F1345441
+</a>
+
+<b>
+01060000000100000001030000000300000091000000F18081BF60075141BDD75CB1E83454414966F3E362075141FF7551E9ED345441AA35E49065075141E357AA94F13454413462A820690751416D17A067F73454416A053ABD6B075141E8DAD5CFFB345441FC4D300D6E075141A1C2CBA5FF345441E4A218A86F075141C3FADAC7023554413E4D395870075141EBAD60FF04355441B2AB7D2F710751418E99BC2108355441D2A1B8CC720751413EC55689093554419BF36115770751416E2E5FAC0935544195E2FAFF770751415AB3DDB3093554412B0AE6ED7A075141EED8DFDF0835544146118A857D075141D5B4C71E08355441316DCD507F0751419DE5269907355441E2751C9481075141AA29478B06355441725A858B830751415DE98E7D0535544143354A1C850751413BFCD4A604355441E58742FB860751412DEA34A6033554414B3F3EF887075141C07A7B03033554417DC02E2789075141834CD35F02355441F35FF9348B07514133EF21C301355441EFD9C2058E0751416639C3E700355441DF8295CF900751414189C9BFFF345441EE31857A930751411E4C4E33FE34544111F3D9029707514174FAB009FC345441295C8FB29907514148E17A64FA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA5075141969FCA03F434544128AF1BA6A6075141235696E4F33454415FFD2B7AA8075141B8E69048F3345441B3256BD1A9075141490AF4EAF234544168BDAFC4AB075141CF2D578DF2345441C82CB560AC0751416051BA2FF23454418F9E28D7AD075141EC078610F2345441E833FFEFAE0751416EBE51F1F134544144366DCAAF0751416EBE51F1F13454418D5EAC21B1075141034F4C55F1345441768A3472B7075141BC0C5A50F134544148E17A54B7075141295C8FB2F13454411C772FF2BF0751417DA0EC74F234544148E17AA4C9075141D7A3700DF63454412B9A944CD1075141710189D1F83454411197F171D407514146310C86F93454414B98420ED9075141EC692829F934544191311065DD075141C32DFE99F8345441D6198413DF0751415D3BCB38F834544194F9E454F207514152A11757F3345441AE8C7C5EF5075141D763C703F3345441305648E3F607514148DB59BEF23454415C8FC24505085141EC51B8FEF13454411F85EB710A0851410AD7A300F334544184A61F0708085141EE6D86B6F1345441053D2948080851419B2384F5F0345441C102188408085141A7C67047F1345441D254514E0A0851413F159C25F2345441E17A148E0B0851419A9999E9F234544114AE47610C08514133333313F3345441A4703D6A0C085141713D0AE7F23454417B14AE770D085141E17A141EF3345441EC51B86E0D085141A4703D4AF334544148E17A840E085141295C8FA2F33454415C8FC2F50F085141D7A3701DF4345441905FE62311085141DDB500CEF434544112A4524F13085141FD001EC0F4345441F6285CBF13085141EC51B8CEF3345441D7A3709D13085141EC51B8BEF0345441CDCCCCFC1308514152B81E75EF345441D7A370DD14085141295C8F32EF345441000000801608514152B81EF5EF34544185EB5158180851419A999919EE345441D7A3703D1A08514152B81E05EE3454416666661619085141EC51B8AEEA34544114AE47A10E085141C3F528FCE7345441AE47E1CAFB07514152B81E95E23454410AD7A370F207514185EB5178DE345441A4703DFAF2075141B81E85FBDC345441F6285CCFE7075141666666D6D53454410AD7A3B0E1075141B81E85BBD134544114AE47F1D907514114AE4781CB34544148E17A14D10751419A9999E9C4345441CDCCCC3CC90751411F85EB11C534544152B81EB5CE07514152B81E75BB345441AE47E16AC70751415C8FC2D5BB3454413D0AD7F3C007514185EB5188BC345441B81E85BBBF075141E17A140EBD345441B81E85BBBF075141E17A144EBE345441B81E85CBC1075141666666F6BF345441037A5FABC1075141A76B9872C434544137655766BF075141EBD6C0FEC5345441CDF4E083C10751411AEFB761C8345441F4CB79A7C2075141E499DBBCC934544186626304C607514128C4940DCF345441DBFB123CC807514183FAF50ED1345441FB025DCBCA0751412925A340D3345441C6E16703CC0751416EE04AD6D4345441689F7D73CE075141FDC331C3D734544117D41A1BD00751419B247199D83454411D56D799D20751413A7AB84FDB345441C6BCB573D6075141BA984F39E13454411D31A553D90751419251AB44E63454418EA8370ED9075141BFF51DD9E93454418FC2F5B8D607514166666666EB34544185EB51F8D407514100000080EC34544148E17A04D007514133333333EA34544166666606CD0751411F85EB01EA3454415C8FC265CB075141D7A3703DEE34544185EB51C8B70751413D0AD733F0345441CD755CCEB707514174B595BCF03454411B82E3F0B40751417CF4A389F03454412A8B041DB5075141ECBDDD80EF345441F2B9AE21B5075141AC31CD6EE9345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441B45C15EC8E075141591860C1EC345441B5F25CD491075141775D89E8F0345441E823FC778D0751414C8DEDD4EE345441BD5360648B075141B5820F11ED3454416666661688075141C3F528CCEC3454410140DF93850751415248CD60ED345441CC6F43808307514199D34800EE345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441785726EA7907514185051836F13454419BC7A30379075141C631D621EC3454419BC7A30379075141F7D483B7EB34544167BD731C77075141E8C7FA30E83454412202CC8675075141C45319E0E53454412A6F68FB7207514118164630E6345441F3305DED71075141042668FFE33454410C36F9A76B075141D5CFF80AE5345441C28FA238660751418225F29FE43454417EE85F0A62075141DAD0E4C9E3345441B2EEE8225F075141B7DD7B24E5345441D4FAF28B60075141052556AEE8345441F18081BF60075141BDD75CB1E83454410A000000053B3A55A40751416EBE51F1F13454412682009AA3075141D3AD4FF8EB3454414E6379ACA5075141851879DFEA3454415B9094B8A80751411E160B05EA345441FD4DAA28AB0751419C5F3F24EA345441B55286DDAC07514155641BD9EB3454411C55F4B7AD075141ABB9753CF03454414C23FDF6A807514181988074F134544115D5EC22A7075141FFE1B493F1345441053B3A55A40751416EBE51F1F134544105000000211C942287075141D7FDC00FF53454418456D6D28607514190724570F4345441DFC91F7C880751415FDBB055F4345441993EA4DC87075141E2F1A794F5345441211C942287075141D7FDC00FF5345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 3298612
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441C3F528BC8807514185EB51D8F5345441295C8FA2870751418FC2F5E8F5345441BA52595F85075141A20C62C5F3345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441795726EA7907514186051836F134544124C24FD178075141BFD32075EC345441379C7E5478075141E5877E7BEB34544166BD731C77075141E5C7FA30E83454412402CC8675075141C05319E0E53454414EC2F23A720751413457F647E63454417FD43493720751413A09AC3AE73454410A77ACC472075141504E9B9DE73454418CB14DD872075141F8A129B4E7345441BDD1656F7307514180FAAB53E9345441977FF21974075141DAB5ABCEEA3454414AB6298D74075141E5877E7BEB34544178E1343F75075141452CCDBEEC3454411E6F66817507514138D56185ED345441C3FC97C37507514181F0C409EE34544122211C74760751416F4B0FC3EF345441E9FC6FAA77075141FF557C45F2345441CD6003A97707514193B89BD4F1345441FD724501780751410CE640B1F2345441CFAC804D7E075141C7C0CEF5FF3454419E4B1EFA8F07514113A9826DF7345441CDCCCC2C94075141000000C0F63454413D0AD7C398075141C3F5282CF8345441295C8FB29907514148E17A64FA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA50751419B9FCA03F43454412BAF1BA6A6075141205696E4F334544164FD2B7AA8075141B8E69048F3345441AF256BD1A9075141460AF4EAF234544163BDAFC4AB075141D42D578DF2345441CC2CB560AC0751416351BA2FF2345441909E28D7AD075141E8078610F2345441E533FFEFAE0751416DBE51F1F134544147366DCAAF0751416CBE51F1F1345441905EAC21B1075141054F4C55F1345441728A3472B7075141BB0C5A50F1345441F1328B80B707514189AEFA20F13454410A000000053B3A55A40751416CBE51F1F13454412282009AA3075141D5AD4FF8EB345441516379ACA5075141801879DFEA3454415A9094B8A807514121160B05EA345441FB4DAA28AB0751419C5F3F24EA345441B95286DDAC0751415A641BD9EB3454411755F4B7AD075141AFB9753CF03454415123FDF6A80751417F988074F134544118D5EC22A7075141FBE1B493F1345441053B3A55A40751416CBE51F1F1345441
+</a>
+
+<b>
+01060000000100000001030000000300000091000000F18081BF60075141BDD75CB1E83454414966F3E362075141FF7551E9ED345441AA35E49065075141E357AA94F13454413462A820690751416D17A067F73454416A053ABD6B075141E8DAD5CFFB345441FC4D300D6E075141A1C2CBA5FF345441E4A218A86F075141C3FADAC7023554413E4D395870075141EBAD60FF04355441B2AB7D2F710751418E99BC2108355441D2A1B8CC720751413EC55689093554419BF36115770751416E2E5FAC0935544195E2FAFF770751415AB3DDB3093554412B0AE6ED7A075141EED8DFDF0835544146118A857D075141D5B4C71E08355441316DCD507F0751419DE5269907355441E2751C9481075141AA29478B06355441725A858B830751415DE98E7D0535544143354A1C850751413BFCD4A604355441E58742FB860751412DEA34A6033554414B3F3EF887075141C07A7B03033554417DC02E2789075141834CD35F02355441F35FF9348B07514133EF21C301355441EFD9C2058E0751416639C3E700355441DF8295CF900751414189C9BFFF345441EE31857A930751411E4C4E33FE34544111F3D9029707514174FAB009FC345441295C8FB29907514148E17A64FA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA5075141969FCA03F434544128AF1BA6A6075141235696E4F33454415FFD2B7AA8075141B8E69048F3345441B3256BD1A9075141490AF4EAF234544168BDAFC4AB075141CF2D578DF2345441C82CB560AC0751416051BA2FF23454418F9E28D7AD075141EC078610F2345441E833FFEFAE0751416EBE51F1F134544144366DCAAF0751416EBE51F1F13454418D5EAC21B1075141034F4C55F1345441768A3472B7075141BC0C5A50F134544148E17A54B7075141295C8FB2F13454411C772FF2BF0751417DA0EC74F234544148E17AA4C9075141D7A3700DF63454412B9A944CD1075141710189D1F83454411197F171D407514146310C86F93454414B98420ED9075141EC692829F934544191311065DD075141C32DFE99F8345441D6198413DF0751415D3BCB38F834544194F9E454F207514152A11757F3345441AE8C7C5EF5075141D763C703F3345441305648E3F607514148DB59BEF23454415C8FC24505085141EC51B8FEF13454411F85EB710A0851410AD7A300F334544184A61F0708085141EE6D86B6F1345441053D2948080851419B2384F5F0345441C102188408085141A7C67047F1345441D254514E0A0851413F159C25F2345441E17A148E0B0851419A9999E9F234544114AE47610C08514133333313F3345441A4703D6A0C085141713D0AE7F23454417B14AE770D085141E17A141EF3345441EC51B86E0D085141A4703D4AF334544148E17A840E085141295C8FA2F33454415C8FC2F50F085141D7A3701DF4345441905FE62311085141DDB500CEF434544112A4524F13085141FD001EC0F4345441F6285CBF13085141EC51B8CEF3345441D7A3709D13085141EC51B8BEF0345441CDCCCCFC1308514152B81E75EF345441D7A370DD14085141295C8F32EF345441000000801608514152B81EF5EF34544185EB5158180851419A999919EE345441D7A3703D1A08514152B81E05EE3454416666661619085141EC51B8AEEA34544114AE47A10E085141C3F528FCE7345441AE47E1CAFB07514152B81E95E23454410AD7A370F207514185EB5178DE345441A4703DFAF2075141B81E85FBDC345441F6285CCFE7075141666666D6D53454410AD7A3B0E1075141B81E85BBD134544114AE47F1D907514114AE4781CB34544148E17A14D10751419A9999E9C4345441CDCCCC3CC90751411F85EB11C534544152B81EB5CE07514152B81E75BB345441AE47E16AC70751415C8FC2D5BB3454413D0AD7F3C007514185EB5188BC345441B81E85BBBF075141E17A140EBD345441B81E85BBBF075141E17A144EBE345441B81E85CBC1075141666666F6BF345441037A5FABC1075141A76B9872C434544137655766BF075141EBD6C0FEC5345441CDF4E083C10751411AEFB761C8345441F4CB79A7C2075141E499DBBCC934544186626304C607514128C4940DCF345441DBFB123CC807514183FAF50ED1345441FB025DCBCA0751412925A340D3345441C6E16703CC0751416EE04AD6D4345441689F7D73CE075141FDC331C3D734544117D41A1BD00751419B247199D83454411D56D799D20751413A7AB84FDB345441C6BCB573D6075141BA984F39E13454411D31A553D90751419251AB44E63454418EA8370ED9075141BFF51DD9E93454418FC2F5B8D607514166666666EB34544185EB51F8D407514100000080EC34544148E17A04D007514133333333EA34544166666606CD0751411F85EB01EA3454415C8FC265CB075141D7A3703DEE34544185EB51C8B70751413D0AD733F0345441CD755CCEB707514174B595BCF03454411B82E3F0B40751417CF4A389F03454412A8B041DB5075141ECBDDD80EF345441F2B9AE21B5075141AC31CD6EE9345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441B45C15EC8E075141591860C1EC345441B5F25CD491075141775D89E8F0345441E823FC778D0751414C8DEDD4EE345441BD5360648B075141B5820F11ED3454416666661688075141C3F528CCEC3454410140DF93850751415248CD60ED345441CC6F43808307514199D34800EE345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441785726EA7907514185051836F13454419BC7A30379075141C631D621EC3454419BC7A30379075141F7D483B7EB34544167BD731C77075141E8C7FA30E83454412202CC8675075141C45319E0E53454412A6F68FB7207514118164630E6345441F3305DED71075141042668FFE33454410C36F9A76B075141D5CFF80AE5345441C28FA238660751418225F29FE43454417EE85F0A62075141DAD0E4C9E3345441B2EEE8225F075141B7DD7B24E5345441D4FAF28B60075141052556AEE8345441F18081BF60075141BDD75CB1E83454410A000000053B3A55A40751416EBE51F1F13454412682009AA3075141D3AD4FF8EB3454414E6379ACA5075141851879DFEA3454415B9094B8A80751411E160B05EA345441FD4DAA28AB0751419C5F3F24EA345441B55286DDAC07514155641BD9EB3454411C55F4B7AD075141ABB9753CF03454414C23FDF6A807514181988074F134544115D5EC22A7075141FFE1B493F1345441053B3A55A40751416EBE51F1F134544105000000211C942287075141D7FDC00FF53454418456D6D28607514190724570F4345441DFC91F7C880751415FDBB055F4345441993EA4DC87075141E2F1A794F5345441211C942287075141D7FDC00FF5345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 229355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441C3F528BC8807514185EB51D8F5345441295C8FA2870751418FC2F5E8F5345441BA52595F85075141A20C62C5F3345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441795726EA7907514186051836F134544124C24FD178075141BFD32075EC345441379C7E5478075141E5877E7BEB34544166BD731C77075141E5C7FA30E83454412402CC8675075141C05319E0E53454414EC2F23A720751413457F647E63454417FD43493720751413A09AC3AE73454410A77ACC472075141504E9B9DE73454418CB14DD872075141F8A129B4E7345441BDD1656F7307514180FAAB53E9345441977FF21974075141DAB5ABCEEA3454414AB6298D74075141E5877E7BEB34544178E1343F75075141452CCDBEEC3454411E6F66817507514138D56185ED345441C3FC97C37507514181F0C409EE34544122211C74760751416F4B0FC3EF345441E9FC6FAA77075141FF557C45F2345441CD6003A97707514193B89BD4F1345441FD724501780751410CE640B1F2345441CFAC804D7E075141C7C0CEF5FF3454419E4B1EFA8F07514113A9826DF7345441CDCCCC2C94075141000000C0F63454413D0AD7C398075141C3F5282CF8345441295C8FB29907514148E17A64FA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA50751419B9FCA03F43454412BAF1BA6A6075141205696E4F334544164FD2B7AA8075141B8E69048F3345441AF256BD1A9075141460AF4EAF234544163BDAFC4AB075141D42D578DF2345441CC2CB560AC0751416351BA2FF2345441909E28D7AD075141E8078610F2345441E533FFEFAE0751416DBE51F1F134544147366DCAAF0751416CBE51F1F1345441905EAC21B1075141054F4C55F1345441728A3472B7075141BB0C5A50F1345441F1328B80B707514189AEFA20F13454410A000000053B3A55A40751416CBE51F1F13454412282009AA3075141D5AD4FF8EB345441516379ACA5075141801879DFEA3454415A9094B8A807514121160B05EA345441FB4DAA28AB0751419C5F3F24EA345441B95286DDAC0751415A641BD9EB3454411755F4B7AD075141AFB9753CF03454415123FDF6A80751417F988074F134544118D5EC22A7075141FBE1B493F1345441053B3A55A40751416CBE51F1F1345441
+</a>
+
+<b>
+01060000000100000001030000000300000047000000B45C15EC8E075141591860C1EC3454417E08011B920751417D95FC08F1345441A9C530D391075141AD94DCE6F0345441B5F25CD491075141775D89E8F0345441E823FC778D0751414C8DEDD4EE345441BD5360648B075141B5820F11ED3454416666661688075141C3F528CCEC3454410140DF93850751415248CD60ED345441CC6F43808307514199D34800EE345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441785726EA7907514185051836F13454419BC7A30379075141C631D621EC3454419BC7A30379075141F7D483B7EB34544167BD731C77075141E8C7FA30E83454412202CC8675075141C45319E0E53454412A6F68FB7207514118164630E63454410A5C4CFA710751412445451AE4345441C8CB728A71075141368CE40FE43454410C36F9A76B075141D5CFF80AE5345441C28FA238660751418225F29FE43454417EE85F0A62075141DAD0E4C9E3345441B2EEE8225F075141B7DD7B24E53454415AFDEF97600751415B480AAFE8345441F18081BF60075141BDD75CB1E8345441427D33E360075141D8095008E93454418274AB27620751410AFBC4FEE834544185A3B8D26307514111F6EF08E934544169EBEE4A6507514111F6EF08E93454413B42A4A4660751418CF53A20ED345441694EDE96680751411DB224B5EF345441A4BA4ACA72075141D7F22F6AED345441D88F7DF173075141D5AB8EB0ED34544122EEDEA5740751416FA9F93CEE345441B07BE5567A0751410CA98793F93454418D827C9B7C0751418ED568BAFD34544158DE06EB7D075141F3B42508003554415512E98B7F075141B0EB4C98FF34544129C179748C075141C9111A29F9345441281F94CA8F075141EAC9E3B0F7345441CDCCCC2C94075141000000C0F63454412519550398075141F0C40EBBF7345441BF9C8701990751415970E967F8345441DC7308289A0751419ED2961CFA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA5075141969FCA03F434544128AF1BA6A6075141235696E4F33454415FFD2B7AA8075141B8E69048F3345441B3256BD1A9075141490AF4EAF234544168BDAFC4AB075141CF2D578DF2345441C82CB560AC0751416051BA2FF23454418F9E28D7AD075141EC078610F2345441E833FFEFAE0751416EBE51F1F134544144366DCAAF0751416EBE51F1F13454418D5EAC21B1075141034F4C55F1345441768A3472B7075141BC0C5A50F1345441CD755CCEB707514174B595BCF03454411B82E3F0B40751417CF4A389F0345441F2B9AE21B5075141AC31CD6EE9345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441B45C15EC8E075141591860C1EC3454410A000000053B3A55A40751416EBE51F1F13454412682009AA3075141D3AD4FF8EB3454414E6379ACA5075141851879DFEA3454415B9094B8A80751411E160B05EA345441FD4DAA28AB0751419C5F3F24EA345441B55286DDAC07514155641BD9EB3454411C55F4B7AD075141ABB9753CF03454414C23FDF6A807514181988074F134544115D5EC22A7075141FFE1B493F1345441053B3A55A40751416EBE51F1F134544105000000211C942287075141D7FDC00FF53454418456D6D28607514190724570F4345441DFC91F7C880751415FDBB055F4345441993EA4DC87075141E2F1A794F5345441211C942287075141D7FDC00FF5345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 371310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441C3F528BC8807514185EB51D8F5345441295C8FA2870751418FC2F5E8F5345441BA52595F85075141A20C62C5F3345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441795726EA7907514186051836F134544124C24FD178075141BFD32075EC345441379C7E5478075141E5877E7BEB34544166BD731C77075141E5C7FA30E83454412402CC8675075141C05319E0E53454414EC2F23A720751413457F647E63454417FD43493720751413A09AC3AE73454410A77ACC472075141504E9B9DE73454418CB14DD872075141F8A129B4E7345441BDD1656F7307514180FAAB53E9345441977FF21974075141DAB5ABCEEA3454414AB6298D74075141E5877E7BEB34544178E1343F75075141452CCDBEEC3454411E6F66817507514138D56185ED345441C3FC97C37507514181F0C409EE34544122211C74760751416F4B0FC3EF345441E9FC6FAA77075141FF557C45F2345441CD6003A97707514193B89BD4F1345441FD724501780751410CE640B1F2345441CFAC804D7E075141C7C0CEF5FF3454419E4B1EFA8F07514113A9826DF7345441CDCCCC2C94075141000000C0F63454413D0AD7C398075141C3F5282CF8345441295C8FB29907514148E17A64FA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA50751419B9FCA03F43454412BAF1BA6A6075141205696E4F334544164FD2B7AA8075141B8E69048F3345441AF256BD1A9075141460AF4EAF234544163BDAFC4AB075141D42D578DF2345441CC2CB560AC0751416351BA2FF2345441909E28D7AD075141E8078610F2345441E533FFEFAE0751416DBE51F1F134544147366DCAAF0751416CBE51F1F1345441905EAC21B1075141054F4C55F1345441728A3472B7075141BB0C5A50F1345441F1328B80B707514189AEFA20F13454410A000000053B3A55A40751416CBE51F1F13454412282009AA3075141D5AD4FF8EB345441516379ACA5075141801879DFEA3454415A9094B8A807514121160B05EA345441FB4DAA28AB0751419C5F3F24EA345441B95286DDAC0751415A641BD9EB3454411755F4B7AD075141AFB9753CF03454415123FDF6A80751417F988074F134544118D5EC22A7075141FBE1B493F1345441053B3A55A40751416CBE51F1F1345441
+</a>
+
+<b>
+01060000000100000001030000000300000047000000B45C15EC8E075141591860C1EC3454417E08011B920751417D95FC08F1345441A9C530D391075141AD94DCE6F0345441B5F25CD491075141775D89E8F0345441E823FC778D0751414C8DEDD4EE345441BD5360648B075141B5820F11ED3454416666661688075141C3F528CCEC3454410140DF93850751415248CD60ED345441CC6F43808307514199D34800EE345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F13454411F85EBA17D075141333333C3F334544185EB51C87B0751417B14AE77F1345441785726EA7907514185051836F13454419BC7A30379075141C631D621EC3454419BC7A30379075141F7D483B7EB34544167BD731C77075141E8C7FA30E83454412202CC8675075141C45319E0E53454412A6F68FB7207514118164630E63454410A5C4CFA710751412445451AE4345441C8CB728A71075141368CE40FE43454410C36F9A76B075141D5CFF80AE5345441C28FA238660751418225F29FE43454417EE85F0A62075141DAD0E4C9E3345441B2EEE8225F075141B7DD7B24E53454415AFDEF97600751415B480AAFE8345441F18081BF60075141BDD75CB1E8345441427D33E360075141D8095008E93454418274AB27620751410AFBC4FEE834544185A3B8D26307514111F6EF08E934544169EBEE4A6507514111F6EF08E93454413B42A4A4660751418CF53A20ED345441694EDE96680751411DB224B5EF345441A4BA4ACA72075141D7F22F6AED345441D88F7DF173075141D5AB8EB0ED34544122EEDEA5740751416FA9F93CEE345441B07BE5567A0751410CA98793F93454418D827C9B7C0751418ED568BAFD34544158DE06EB7D075141F3B42508003554415512E98B7F075141B0EB4C98FF34544129C179748C075141C9111A29F9345441281F94CA8F075141EAC9E3B0F7345441CDCCCC2C94075141000000C0F63454412519550398075141F0C40EBBF7345441BF9C8701990751415970E967F8345441DC7308289A0751419ED2961CFA34544148E17AB49D0751410AD7A3F0F73454417B14AE27A4075141B81E850BF5345441CCACADCBA5075141969FCA03F434544128AF1BA6A6075141235696E4F33454415FFD2B7AA8075141B8E69048F3345441B3256BD1A9075141490AF4EAF234544168BDAFC4AB075141CF2D578DF2345441C82CB560AC0751416051BA2FF23454418F9E28D7AD075141EC078610F2345441E833FFEFAE0751416EBE51F1F134544144366DCAAF0751416EBE51F1F13454418D5EAC21B1075141034F4C55F1345441768A3472B7075141BC0C5A50F1345441CD755CCEB707514174B595BCF03454411B82E3F0B40751417CF4A389F0345441F2B9AE21B5075141AC31CD6EE9345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441B45C15EC8E075141591860C1EC3454410A000000053B3A55A40751416EBE51F1F13454412682009AA3075141D3AD4FF8EB3454414E6379ACA5075141851879DFEA3454415B9094B8A80751411E160B05EA345441FD4DAA28AB0751419C5F3F24EA345441B55286DDAC07514155641BD9EB3454411C55F4B7AD075141ABB9753CF03454414C23FDF6A807514181988074F134544115D5EC22A7075141FFE1B493F1345441053B3A55A40751416EBE51F1F134544105000000211C942287075141D7FDC00FF53454418456D6D28607514190724570F4345441DFC91F7C880751415FDBB055F4345441993EA4DC87075141E2F1A794F5345441211C942287075141D7FDC00FF5345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880141 - 2952080
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000E66F4458D4E8504117DC54D7C090544166666696B0E850413D0AD7F3A9905441F9059597B0E85041BFB3A9F2A99054418D394D77AFE85041560B123AA9905441295C8FD2A3E8504100000050B690544101A8D92F9AE850411E21FB1EC290544116A6341994E85041D51284C0C7905441FA06573493E850410B882F94C8905441389C66ED90E850412BCCE105CB9054414C96C62D9FE85041D924A535D0905441F012B861A3E850416E7EB1B3D0905441D0D42C13AAE85041BEFB071FD0905441C0F359A7B4E8504189ED53BACB905441CAC4AFADBEE85041AC76D5B0C7905441BFCB32FBCFE85041253051AFC3905441E66F4458D4E8504117DC54D7C0905441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000333333D3A9E850419A999939D090544114AE47A1BDE8504100000000C890544185EB5178C3E85041713D0A47C6905441E17A14FECFE85041EC51B8AEC3905441CDCCCC9CD4E8504133333303C190544166666696B0E850413D0AD7F3A99054410AD7A370AFE850415C8FC235A9905441295C8FD2A3E8504100000050B69054418FC2F5589AE850418FC2F5F8C1905441A4703DAA90E85041D7A370EDCA905441C3F5283C9FE85041AE47E13AD09054411F85EB11A3E850419A9999B9D0905441333333D3A9E850419A999939D0905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880141 - 3280428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000E66F4458D4E8504117DC54D7C090544166666696B0E850413D0AD7F3A9905441F9059597B0E85041BFB3A9F2A99054418D394D77AFE85041560B123AA9905441295C8FD2A3E8504100000050B690544101A8D92F9AE850411E21FB1EC290544116A6341994E85041D51284C0C7905441FA06573493E850410B882F94C8905441389C66ED90E850412BCCE105CB9054414C96C62D9FE85041D924A535D0905441F012B861A3E850416E7EB1B3D0905441D0D42C13AAE85041BEFB071FD0905441C0F359A7B4E8504189ED53BACB905441CAC4AFADBEE85041AC76D5B0C7905441BFCB32FBCFE85041253051AFC3905441E66F4458D4E8504117DC54D7C0905441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000333333D3A9E850419A999939D090544114AE47A1BDE8504100000000C890544185EB5178C3E85041713D0A47C6905441E17A14FECFE85041EC51B8AEC3905441CDCCCC9CD4E8504133333303C190544166666696B0E850413D0AD7F3A99054410AD7A370AFE850415C8FC235A9905441295C8FD2A3E8504100000050B69054418FC2F5589AE850418FC2F5F8C1905441A4703DAA90E85041D7A370EDCA905441C3F5283C9FE85041AE47E13AD09054411F85EB11A3E850419A9999B9D0905441333333D3A9E850419A999939D0905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880438 - 14647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81EB52DF55041AE47E1DACA4D544185EB518834F55041CDCCCC3CC84D54410000005040F55041000000C0C34D54411F85EB9153F55041D7A3705DBC4D5441C3F5285C66F55041295C8F12B54D5441000000406CF5504148E17AA4B24D54413D0AD7D366F5504133333393A94D54411F85EB815EF55041C3F528DC9C4D5441D7A370ED59F550411F85EB91954D5441F6285CEF56F55041D7A370CD904D54418FC2F5C854F5504185EB51388C4D54411F85EB9153F55041C3F5288C874D54413D0AD75351F550419A999929804D544148E17A3450F550413D0AD7E37C4D5441D7A370CD4EF550415C8FC2457A4D5441F6285CFF4BF5504114AE4751754D5441333333F346F55041666666666E4D544185EB510840F5504148E17AE4654D54416666662637F5504152B81E055A4D54411F85EB3132F55041A4703DBA524D5441333333D326F55041EC51B8FE434D544152B81E4516F55041295C8F62494D5441AE47E18A02F55041E17A145E4F4D54413D0AD703F9F450411F85EB91524D5441295C8F62F0F450410AD7A3F0554D5441C3F5289CECF450419A999999574D5441295C8F02E9F4504185EB5158594D544166666676E3F45041CDCCCC8C5C4D5441EC51B82EE3F45041F6285CBF5D4D544133333373D1F450418FC2F508674D5441E17A149ED4F450417B14AEB76C4D5441AE47E16AE4F4504166666646844D5441EC51B8DEF4F450413D0AD7839D4D54415C8FC23501F5504166666606B04D5441713D0A9715F5504185EB5168CE4D5441CDCCCCAC18F55041D7A370CDD24D544114AE47A11DF55041EC51B8EED04D5441A4703D2A27F5504114AE4761CD4D544152B81EB52DF55041AE47E1DACA4D5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000C3F5286C19F550418FC2F508D44D5441EDAFDDF120F5504182516F81D14D5441DB00F0FD23F55041B0598049D04D5441333333132DF550417B14AEA7CC4D54419A01D0CD53F55041A1ED1086BD4D5441CABC60045BF550410AE8DBB2BA4D5441DE14372462F55041A920A6E6B74D5441F6285C9F6DF55041CDCCCC4CB34D5441000000406CF5504148E17AA4B24D5441C3F5285C66F55041295C8F12B54D54416D853C7F59F550414FB48F10BA4D544101EF28EF52F55041763BDB9BBC4D5441F1A389DD4AF55041AFDCFEB3BF4D54418A549C813BF550416E12B594C54D54417313E93638F550410F3ABAD5C64D5441644D4C902EF550418F54D286CA4D5441E7A2594E27F5504111FE5753CD4D5441CDCCCCAC18F55041D7A370CDD24D5441C3F5286C19F550418FC2F508D44D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880438 - 62655
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81EB52DF55041AE47E1DACA4D544185EB518834F55041CDCCCC3CC84D54410000005040F55041000000C0C34D54411F85EB9153F55041D7A3705DBC4D5441C3F5285C66F55041295C8F12B54D5441000000406CF5504148E17AA4B24D54413D0AD7D366F5504133333393A94D54411F85EB815EF55041C3F528DC9C4D5441D7A370ED59F550411F85EB91954D5441F6285CEF56F55041D7A370CD904D54418FC2F5C854F5504185EB51388C4D54411F85EB9153F55041C3F5288C874D54413D0AD75351F550419A999929804D544148E17A3450F550413D0AD7E37C4D5441D7A370CD4EF550415C8FC2457A4D5441F6285CFF4BF5504114AE4751754D5441333333F346F55041666666666E4D544185EB510840F5504148E17AE4654D54416666662637F5504152B81E055A4D54411F85EB3132F55041A4703DBA524D5441333333D326F55041EC51B8FE434D544152B81E4516F55041295C8F62494D5441AE47E18A02F55041E17A145E4F4D54413D0AD703F9F450411F85EB91524D5441295C8F62F0F450410AD7A3F0554D5441C3F5289CECF450419A999999574D5441295C8F02E9F4504185EB5158594D544166666676E3F45041CDCCCC8C5C4D5441EC51B82EE3F45041F6285CBF5D4D544133333373D1F450418FC2F508674D5441E17A149ED4F450417B14AEB76C4D5441AE47E16AE4F4504166666646844D5441EC51B8DEF4F450413D0AD7839D4D54415C8FC23501F5504166666606B04D5441713D0A9715F5504185EB5168CE4D5441CDCCCCAC18F55041D7A370CDD24D544114AE47A11DF55041EC51B8EED04D5441A4703D2A27F5504114AE4761CD4D544152B81EB52DF55041AE47E1DACA4D5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000C3F5286C19F550418FC2F508D44D5441EDAFDDF120F5504182516F81D14D5441DB00F0FD23F55041B0598049D04D5441333333132DF550417B14AEA7CC4D54419A01D0CD53F55041A1ED1086BD4D5441CABC60045BF550410AE8DBB2BA4D5441DE14372462F55041A920A6E6B74D5441F6285C9F6DF55041CDCCCC4CB34D5441000000406CF5504148E17AA4B24D5441C3F5285C66F55041295C8F12B54D54416D853C7F59F550414FB48F10BA4D544101EF28EF52F55041763BDB9BBC4D5441F1A389DD4AF55041AFDCFEB3BF4D54418A549C813BF550416E12B594C54D54417313E93638F550410F3ABAD5C64D5441644D4C902EF550418F54D286CA4D5441E7A2594E27F5504111FE5753CD4D5441CDCCCCAC18F55041D7A370CDD24D5441C3F5286C19F550418FC2F508D44D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941693 - 2961172
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8F125516514152B81EF5CCAE5441295C8FE25416514100000030D4AE54419A99992953165141D7A3700D17AF5441EC51B86E6B165141C3F5283C16AF5441E17A14BE6C1651419A999969E3AE54413333337368165141EC51B88EE3AE5441AE47E1EA681651410AD7A360D1AE5441EC51B8AE68165141EC51B8DECCAE54411F85EB6167165141B81E85BBCBAE5441295C8F125516514152B81EF5CCAE5441
+</a>
+
+<b>
+01060000000100000001030000000100000090000000CAA48E295316514191E2190F17AF5441BD49577D53165141D78A9E0A17AF5441547A9157541651412CC5440317AF54418FB075165516514101B7D6FC16AF5441B1052404561651419A31D5F416AF5441E3C0125A5716514160B650E916AF54411862BD82581651413E8F52DF16AF5441AF363E1B5A165141240A90D116AF54418C494B6F5B1651413DC81BC616AF544120AC7BD45C16514197BE13BA16AF54411EDF13735E16514110B31CAC16AF5441B46D120F601651415D133C9E16AF54410AC4A1E7611651411332518E16AF5441FA09F4E963165141F134FE7C16AF5441EB75D75B65165141A2A9887016AF5441616375C3661651416DB06B6416AF5441F6DBD4776816514161D9B85516AF5441FDCB5F056A16514177D7544816AF5441256AB26E6B1651410FC4153D16AF5441D2C2BF776B165141D5C0DEDD14AF54417AC0147C6B1651418090CE3514AF54418F502F816B165141A069CD6F13AF54410EB205856B1651410B29EDDA12AF5441DC7B6A8A6B165141345FAC0912AF5441F52BBB8F6B1651411065773B11AF5441DEBC56956B1651418675E96110AF5441E8A6309B6B16514126ADE87E0FAF5441377562A26B1651412F57CA670EAF5441B5E47AA86B16514163FE4F7B0DAF5441AF8344B36B1651417CB1CCD80BAF5441147C37B86B165141CB90CB180BAF5441D41FFEBD6B165141198EB6380AAF544140788EC46B1651417735103A09AF5441F2576DCA6B165141AD034F5608AF5441BB0D99D06B16514133E5E86607AF54414A70A0D76B165141F34F385606AF544119FD76DA6B16514195381DE805AF5441AFA34DE06B1651415E0C9B0505AF5441E27AFCE56B1651412657212904AF5441C72AC9EB6B16514100B7214803AF544117EA29F26B1651414EF9B15002AF5441DB4B26FA6B165141268AE01A01AF544144088BFD6B165141213B399700AF5441AF601B046C1651417DE29298FFAE5441F54AA50C6C1651411D8E4E4DFEAE5441670462136C165141727DEE47FDAE5441E435A2176C1651417B2805A3FCAE5441EE6C25206C16514100C4C458FBAE5441383C2B256C16514140BFE895FAAE544187EDFF2A6C165141558AB2B3F9AE544152826B316C165141577D9EBAF8AE54415CEAC9396C165141BF1DF275F7AE54419CC1A9416C165141ABF47344F6AE54419464D64A6C16514154B786E0F4AE5441D82AC7546C165141A926E05EF3AE54411432385D6C165141D1536117F2AE54415380DB616C1651415BDA7263F1AE54419F548E646C165141D193C1FAF0AE54418792446B6C1651413C025DF6EFAE54417E9671716C165141E73EC406EFAE544132B746776C1651415C287D24EEAE5441D1BC757E6C165141B1D3CA0DEDAE544170B389866C165141DE8766D4EBAE5441FF347D8E6C165141B670ED9FEAAE5441A7EC9F976C1651413406813DE9AE5441B126419E6C165141CDC04B3CE8AE54416D76D8A56C1651416A6DCB15E7AE5441124208AB6C1651419089924CE6AE54416C20CBB36C16514160A7ACF8E4AE5441203E82BB6C165141C3715ACDE3AE5441C250DFBD6C1651412729A871E3AE5441132FDEC06C16514154CF8169E3AE544187DADD8A6C1651419879546BE3AE5441A7077FC56B1651417043FF71E3AE544137E1A73B6B1651410E42A776E3AE54419D4F64B56A1651410D53307BE3AE54416A4615FD6916514104296A81E3AE5441AFE6D517691651415F9C2889E3AE544175A0149A681651414218688DE3AE54413333337368165141EC51B88EE3AE5441EC5E1474681651411DF2836CE3AE5441DA579575681651413B410932E3AE54419002497C681651419DEA6A2DE2AE544192417F8268165141C3E6D93BE1AE54412F613D8A681651415CADC10EE0AE5441FE893091681651414B427E00DFAE54418411A99768165141D2A3DB04DEAE5441C469E19F68165141268332C5DCAE54417A5A35A868165141E4415881DBAE5441B6E604B2681651415AF0D303DAAE5441CA9AF2BA6816514146309EA8D8AE544171B8A7C368165141FCFF0056D7AE54413778AECC68165141AF47FDF6D5AE5441207F45D468165141A16DD5CFD4AE544128E7CADC68165141F58C7784D3AE544188ADA7E468165141ED5CB752D2AE54410C6F2DEA68165141813C2A53D1AE5441F506A8DE681651418D1B2E76D0AE5441AF0BA3CB68165141E4E55E09CFAE5441CB450CB76816514150FC747ECDAE5441EA55B2B1681651417C6DD017CDAE5441D3EB8AAF6816514175D47FEECCAE5441D67143AE68165141D90D52DECCAE5441D1CF5EF06716514114002A38CCAE54410AA7907A67165141669C15D1CBAE544141CDC7606716514105A098BBCBAE54418D92C88B66165141B2B0D8C9CBAE5441576517B86416514194F822E9CBAE5441862D7A7F62165141DCC6200FCCAE54414AFE271C6116514116C2E226CCAE5441E9B62D015F165141595DEC4ACCAE54415993C8B85C165141FA5FFF71CCAE5441C36D04BD5B16514187D2D482CCAE544189300A7358165141EBD520BBCCAE54412E7B6E14551651417EFBCDF4CCAE5441FF49DF08551651418241AE6ACEAE5441C5DD9D0455165141CA65C60ECFAE54410AAF2CEA541651419713620AD3AE5441C7BFB7E05416514166438377D4AE5441E6E0BF7D5416514179B95179E3AE5441A32118795416514104A7072EE4AE5441C95C6C695416514116D15A8EE6AE54418FEBA058541651412A0D4D1AE9AE54419837BC4654165141146DE5D0EBAE54411F8F973654165141C2558D43EEAE54415D1921235416514165581137F1AE5441DA95CD1154165141C4ADA5D7F3AE5441F692CEFD53165141976ADEDFF6AE5441179146DD5316514186D0AFCEFBAE5441BBB526D053165141E0AD28CCFDAE54410F612FBF53165141EF99C25E00AF544150375AB95316514172112D4101AF54414CBFC6A95316514194EFD09D03AF5441110C47A253165141A7F6E8C004AF54414528458F53165141D9E2BFA207AF5441F3E8248553165141AE3DD32B09AF544182C50B7853165141514E47280BAF54417B3F3F74531651415249BFBB0BAF544161DD5E6353165141FC6ADE4A0EAF54413830B35A531651414D19739B0FAF544174465D49531651413593643C12AF5441E458C13F53165141D47A67B113AF5441FD504735531651416F1A184815AF5441CAA48E295316514191E2190F17AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941693 - 3214398
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8F125516514152B81EF5CCAE5441295C8FE25416514100000030D4AE54419A99992953165141D7A3700D17AF5441EC51B86E6B165141C3F5283C16AF5441E17A14BE6C1651419A999969E3AE54413333337368165141EC51B88EE3AE5441AE47E1EA681651410AD7A360D1AE5441EC51B8AE68165141EC51B8DECCAE54411F85EB6167165141B81E85BBCBAE5441295C8F125516514152B81EF5CCAE5441
+</a>
+
+<b>
+01060000000100000001030000000100000090000000CAA48E295316514191E2190F17AF5441BD49577D53165141D78A9E0A17AF5441547A9157541651412CC5440317AF54418FB075165516514101B7D6FC16AF5441B1052404561651419A31D5F416AF5441E3C0125A5716514160B650E916AF54411862BD82581651413E8F52DF16AF5441AF363E1B5A165141240A90D116AF54418C494B6F5B1651413DC81BC616AF544120AC7BD45C16514197BE13BA16AF54411EDF13735E16514110B31CAC16AF5441B46D120F601651415D133C9E16AF54410AC4A1E7611651411332518E16AF5441FA09F4E963165141F134FE7C16AF5441EB75D75B65165141A2A9887016AF5441616375C3661651416DB06B6416AF5441F6DBD4776816514161D9B85516AF5441FDCB5F056A16514177D7544816AF5441256AB26E6B1651410FC4153D16AF5441D2C2BF776B165141D5C0DEDD14AF54417AC0147C6B1651418090CE3514AF54418F502F816B165141A069CD6F13AF54410EB205856B1651410B29EDDA12AF5441DC7B6A8A6B165141345FAC0912AF5441F52BBB8F6B1651411065773B11AF5441DEBC56956B1651418675E96110AF5441E8A6309B6B16514126ADE87E0FAF5441377562A26B1651412F57CA670EAF5441B5E47AA86B16514163FE4F7B0DAF5441AF8344B36B1651417CB1CCD80BAF5441147C37B86B165141CB90CB180BAF5441D41FFEBD6B165141198EB6380AAF544140788EC46B1651417735103A09AF5441F2576DCA6B165141AD034F5608AF5441BB0D99D06B16514133E5E86607AF54414A70A0D76B165141F34F385606AF544119FD76DA6B16514195381DE805AF5441AFA34DE06B1651415E0C9B0505AF5441E27AFCE56B1651412657212904AF5441C72AC9EB6B16514100B7214803AF544117EA29F26B1651414EF9B15002AF5441DB4B26FA6B165141268AE01A01AF544144088BFD6B165141213B399700AF5441AF601B046C1651417DE29298FFAE5441F54AA50C6C1651411D8E4E4DFEAE5441670462136C165141727DEE47FDAE5441E435A2176C1651417B2805A3FCAE5441EE6C25206C16514100C4C458FBAE5441383C2B256C16514140BFE895FAAE544187EDFF2A6C165141558AB2B3F9AE544152826B316C165141577D9EBAF8AE54415CEAC9396C165141BF1DF275F7AE54419CC1A9416C165141ABF47344F6AE54419464D64A6C16514154B786E0F4AE5441D82AC7546C165141A926E05EF3AE54411432385D6C165141D1536117F2AE54415380DB616C1651415BDA7263F1AE54419F548E646C165141D193C1FAF0AE54418792446B6C1651413C025DF6EFAE54417E9671716C165141E73EC406EFAE544132B746776C1651415C287D24EEAE5441D1BC757E6C165141B1D3CA0DEDAE544170B389866C165141DE8766D4EBAE5441FF347D8E6C165141B670ED9FEAAE5441A7EC9F976C1651413406813DE9AE5441B126419E6C165141CDC04B3CE8AE54416D76D8A56C1651416A6DCB15E7AE5441124208AB6C1651419089924CE6AE54416C20CBB36C16514160A7ACF8E4AE5441203E82BB6C165141C3715ACDE3AE5441C250DFBD6C1651412729A871E3AE5441132FDEC06C16514154CF8169E3AE544187DADD8A6C1651419879546BE3AE5441A7077FC56B1651417043FF71E3AE544137E1A73B6B1651410E42A776E3AE54419D4F64B56A1651410D53307BE3AE54416A4615FD6916514104296A81E3AE5441AFE6D517691651415F9C2889E3AE544175A0149A681651414218688DE3AE54413333337368165141EC51B88EE3AE5441EC5E1474681651411DF2836CE3AE5441DA579575681651413B410932E3AE54419002497C681651419DEA6A2DE2AE544192417F8268165141C3E6D93BE1AE54412F613D8A681651415CADC10EE0AE5441FE893091681651414B427E00DFAE54418411A99768165141D2A3DB04DEAE5441C469E19F68165141268332C5DCAE54417A5A35A868165141E4415881DBAE5441B6E604B2681651415AF0D303DAAE5441CA9AF2BA6816514146309EA8D8AE544171B8A7C368165141FCFF0056D7AE54413778AECC68165141AF47FDF6D5AE5441207F45D468165141A16DD5CFD4AE544128E7CADC68165141F58C7784D3AE544188ADA7E468165141ED5CB752D2AE54410C6F2DEA68165141813C2A53D1AE5441F506A8DE681651418D1B2E76D0AE5441AF0BA3CB68165141E4E55E09CFAE5441CB450CB76816514150FC747ECDAE5441EA55B2B1681651417C6DD017CDAE5441D3EB8AAF6816514175D47FEECCAE5441D67143AE68165141D90D52DECCAE5441D1CF5EF06716514114002A38CCAE54410AA7907A67165141669C15D1CBAE544141CDC7606716514105A098BBCBAE54418D92C88B66165141B2B0D8C9CBAE5441576517B86416514194F822E9CBAE5441862D7A7F62165141DCC6200FCCAE54414AFE271C6116514116C2E226CCAE5441E9B62D015F165141595DEC4ACCAE54415993C8B85C165141FA5FFF71CCAE5441C36D04BD5B16514187D2D482CCAE544189300A7358165141EBD520BBCCAE54412E7B6E14551651417EFBCDF4CCAE5441FF49DF08551651418241AE6ACEAE5441C5DD9D0455165141CA65C60ECFAE54410AAF2CEA541651419713620AD3AE5441C7BFB7E05416514166438377D4AE5441E6E0BF7D5416514179B95179E3AE5441A32118795416514104A7072EE4AE5441C95C6C695416514116D15A8EE6AE54418FEBA058541651412A0D4D1AE9AE54419837BC4654165141146DE5D0EBAE54411F8F973654165141C2558D43EEAE54415D1921235416514165581137F1AE5441DA95CD1154165141C4ADA5D7F3AE5441F692CEFD53165141976ADEDFF6AE5441179146DD5316514186D0AFCEFBAE5441BBB526D053165141E0AD28CCFDAE54410F612FBF53165141EF99C25E00AF544150375AB95316514172112D4101AF54414CBFC6A95316514194EFD09D03AF5441110C47A253165141A7F6E8C004AF54414528458F53165141D9E2BFA207AF5441F3E8248553165141AE3DD32B09AF544182C50B7853165141514E47280BAF54417B3F3F74531651415249BFBB0BAF544161DD5E6353165141FC6ADE4A0EAF54413830B35A531651414D19739B0FAF544174465D49531651413593643C12AF5441E458C13F53165141D47A67B113AF5441FD504735531651416F1A184815AF5441CAA48E295316514191E2190F17AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121078 - 213008
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EB710F0E51417B14AEB725BB54417B14AE77110E51419A9999D923BB544185EB51D8160E51411F85EB8121BB54410AD7A370130E5141A4703D3A20BB544148E17A84110E5141AE47E12A20BB54418FC2F5C80F0E5141E17A14BE1EBB54415C8FC2750E0E5141A4703DEA1EBB5441295C8FB20D0E5141D7A370AD1FBB5441AE47E13A0D0E51419A9999F924BB5441713D0AD70C0E5141295C8F9225BB544148E17A140C0E514114AE47F125BB5441C3F5281C0A0E51418FC2F5D825BB5441666666F6080E514114AE470125BB544133333323080E5141000000B024BB5441295C8FE2060E51417B14AE5723BB5441B81E85BB060E5141666666E620BB5441295C8F82070E5141E17A14DE1DBB544100000050070E5141E17A149E1BBB5441C3F528AC060E5141666666361ABB544133333383050E51411F85EB3118BB5441A4703D5A040E5141295C8FE214BB544185EB5118030E514148E17AE412BB54419A9999B9010E51413D0AD7C30FBB544185EB51B8010E51417B14AE270BBB54413D0AD7E3FE0D5141CDCCCC5C0ABB5441A4703D8AFD0D51416666664607BB5441C3F5288CFD0D51416666667605BB54417B14AEF7FC0D514152B81E9503BB5441F6285CCFFA0D5141B81E857BFFBA5441333333D3F90D5141C3F528FCFDBA54415C8FC225F60D514114AE4731F9BA54419A9999D9F20D514114AE4791F6BA544152B81EE5F00D51410AD7A350F5BA5441F6285C4FEE0D514185EB51D8F3BA54411F85EB31ED0D5141CDCCCC7CF2BA5441333333E3EB0D5141666666B6F1BA544133333373EA0D51410AD7A3F0EFBA5441713D0A47EF0D5141295C8F82E3BA5441713D0AE7F10D5141333333B3E0BA5441D7A370DDF00D5141295C8FC2DCBA5441AE47E19AEE0D51418FC2F5A8DBBA5441666666A6EC0D5141295C8FB2D8BA5441D7A370DDEC0D51417B14AE77D6BA5441A4703D5AEE0D514152B81EB5D4BA5441666666F6EA0D5141295C8F12D2BA5441F6285CBFE10D51415C8FC2F5D5BA54418FC2F5F8CC0D51418FC2F578DEBA544148E17AD4CF0D5141000000D0E0BA54410AD7A3C0D20D51415C8FC215E3BA544148E17A44D40D5141EC51B84EE4BA5441EC51B8AED50D5141F6285CCFE3BA54410AD7A370DD0D5141295C8F62E4BA544166666606E00D5141C3F528CCE6BA54419A9999D9E40D51415C8FC215ECBA544100000090E90D5141295C8F32F1BA5441666666D6EC0D514148E17AF4F3BA54419A999929F00D5141D7A3703DF7BA54415C8FC275F30D514152B81E55FBBA544166666676F70D51411F85EB5101BB5441EC51B8BEFC0D514148E17A440ABB54415C8FC255FE0D5141B81E851B0DBB5441AE47E12AFC0D51419A99991918BB5441E17A14BEFB0D51411F85EB4118BB5441CDCCCC2CFD0D5141D7A3703D1BBB5441E17A148E010E5141EC51B89E25BB544114AE4761040E5141A4703DBA28BB544100000020060E51411F85EB3129BB54413D0AD7E3070E514148E17A3429BB5441AE47E1CA0A0E5141F6285C0F28BB54417B14AE670D0E51418FC2F5D826BB54411F85EB710F0E51417B14AEB725BB5441
+</a>
+
+<b>
+0106000000010000000103000000010000002200000066666676F70D51411F85EB5101BB54415133C15DFA0D5141A1AE033D06BB54412B90325EFA0D514127B2C33D06BB5441EC51B8BEFC0D514148E17A440ABB54415C8FC255FE0D5141B81E851B0DBB5441A4703D8AFD0D51416666664607BB5441C3F5288CFD0D51416666667605BB54418D14AEF7FC0D51418CB81E9503BB54416D7DF042FC0D5141196AA63D02BB544195CB550DFC0D51412F86C8D701BB54412281F10AFC0D514174F53CD301BB54414A287B18FB0D514154B9790600BB5441F6285CCFFA0D5141B81E857BFFBA5441333333D3F90D5141C3F528FCFDBA54415C8FC225F60D514114AE4731F9BA5441935B054FF30D5141AAFAC0EEF6BA544186B548BCF10D5141C1F07CDAF5BA54411CDFA8A5F00D514176638D2CF5BA5441F6285C4FEE0D514185EB51D8F3BA54411F85EB31ED0D5141CDCCCC7CF2BA5441333333E3EB0D5141666666B6F1BA544133333373EA0D51410AD7A3F0EFBA544100000090E90D5141295C8F32F1BA5441666666D6EC0D514148E17AF4F3BA544166423E0FED0D5141E5ADA32CF4BA5441E47F7896ED0D514108A8F49FF4BA54419A999929F00D5141D7A3703DF7BA5441DDF334BCF10D5141F6AD1C31F9BA54415C8FC275F30D514152B81E55FBBA544125E85009F40D5141ACE0DA31FCBA54419DFD72DBF40D5141049A336CFDBA54412B06F496F50D5141F544B284FEBA54418317BB97F50D51410C10DC85FEBA544166666676F70D51411F85EB5101BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121078 - 262653
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EB710F0E51417B14AEB725BB54417B14AE77110E51419A9999D923BB544185EB51D8160E51411F85EB8121BB54410AD7A370130E5141A4703D3A20BB544148E17A84110E5141AE47E12A20BB54418FC2F5C80F0E5141E17A14BE1EBB54415C8FC2750E0E5141A4703DEA1EBB5441295C8FB20D0E5141D7A370AD1FBB5441AE47E13A0D0E51419A9999F924BB5441713D0AD70C0E5141295C8F9225BB544148E17A140C0E514114AE47F125BB5441C3F5281C0A0E51418FC2F5D825BB5441666666F6080E514114AE470125BB544133333323080E5141000000B024BB5441295C8FE2060E51417B14AE5723BB5441B81E85BB060E5141666666E620BB5441295C8F82070E5141E17A14DE1DBB544100000050070E5141E17A149E1BBB5441C3F528AC060E5141666666361ABB544133333383050E51411F85EB3118BB5441A4703D5A040E5141295C8FE214BB544185EB5118030E514148E17AE412BB54419A9999B9010E51413D0AD7C30FBB544185EB51B8010E51417B14AE270BBB54413D0AD7E3FE0D5141CDCCCC5C0ABB5441A4703D8AFD0D51416666664607BB5441C3F5288CFD0D51416666667605BB54417B14AEF7FC0D514152B81E9503BB5441F6285CCFFA0D5141B81E857BFFBA5441333333D3F90D5141C3F528FCFDBA54415C8FC225F60D514114AE4731F9BA54419A9999D9F20D514114AE4791F6BA544152B81EE5F00D51410AD7A350F5BA5441F6285C4FEE0D514185EB51D8F3BA54411F85EB31ED0D5141CDCCCC7CF2BA5441333333E3EB0D5141666666B6F1BA544133333373EA0D51410AD7A3F0EFBA5441713D0A47EF0D5141295C8F82E3BA5441713D0AE7F10D5141333333B3E0BA5441D7A370DDF00D5141295C8FC2DCBA5441AE47E19AEE0D51418FC2F5A8DBBA5441666666A6EC0D5141295C8FB2D8BA5441D7A370DDEC0D51417B14AE77D6BA5441A4703D5AEE0D514152B81EB5D4BA5441666666F6EA0D5141295C8F12D2BA5441F6285CBFE10D51415C8FC2F5D5BA54418FC2F5F8CC0D51418FC2F578DEBA544148E17AD4CF0D5141000000D0E0BA54410AD7A3C0D20D51415C8FC215E3BA544148E17A44D40D5141EC51B84EE4BA5441EC51B8AED50D5141F6285CCFE3BA54410AD7A370DD0D5141295C8F62E4BA544166666606E00D5141C3F528CCE6BA54419A9999D9E40D51415C8FC215ECBA544100000090E90D5141295C8F32F1BA5441666666D6EC0D514148E17AF4F3BA54419A999929F00D5141D7A3703DF7BA54415C8FC275F30D514152B81E55FBBA544166666676F70D51411F85EB5101BB5441EC51B8BEFC0D514148E17A440ABB54415C8FC255FE0D5141B81E851B0DBB5441AE47E12AFC0D51419A99991918BB5441E17A14BEFB0D51411F85EB4118BB5441CDCCCC2CFD0D5141D7A3703D1BBB5441E17A148E010E5141EC51B89E25BB544114AE4761040E5141A4703DBA28BB544100000020060E51411F85EB3129BB54413D0AD7E3070E514148E17A3429BB5441AE47E1CA0A0E5141F6285C0F28BB54417B14AE670D0E51418FC2F5D826BB54411F85EB710F0E51417B14AEB725BB5441
+</a>
+
+<b>
+0106000000010000000103000000010000002200000066666676F70D51411F85EB5101BB54415133C15DFA0D5141A1AE033D06BB54412B90325EFA0D514127B2C33D06BB5441EC51B8BEFC0D514148E17A440ABB54415C8FC255FE0D5141B81E851B0DBB5441A4703D8AFD0D51416666664607BB5441C3F5288CFD0D51416666667605BB54418D14AEF7FC0D51418CB81E9503BB54416D7DF042FC0D5141196AA63D02BB544195CB550DFC0D51412F86C8D701BB54412281F10AFC0D514174F53CD301BB54414A287B18FB0D514154B9790600BB5441F6285CCFFA0D5141B81E857BFFBA5441333333D3F90D5141C3F528FCFDBA54415C8FC225F60D514114AE4731F9BA5441935B054FF30D5141AAFAC0EEF6BA544186B548BCF10D5141C1F07CDAF5BA54411CDFA8A5F00D514176638D2CF5BA5441F6285C4FEE0D514185EB51D8F3BA54411F85EB31ED0D5141CDCCCC7CF2BA5441333333E3EB0D5141666666B6F1BA544133333373EA0D51410AD7A3F0EFBA544100000090E90D5141295C8F32F1BA5441666666D6EC0D514148E17AF4F3BA544166423E0FED0D5141E5ADA32CF4BA5441E47F7896ED0D514108A8F49FF4BA54419A999929F00D5141D7A3703DF7BA5441DDF334BCF10D5141F6AD1C31F9BA54415C8FC275F30D514152B81E55FBBA544125E85009F40D5141ACE0DA31FCBA54419DFD72DBF40D5141049A336CFDBA54412B06F496F50D5141F544B284FEBA54418317BB97F50D51410C10DC85FEBA544166666676F70D51411F85EB5101BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>814356 - 973323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000004D000000666666165C8E50411F85EB71481B5441D7A370FD578E50413D0AD753491B54411F85EB415B8E504148E17A144E1B54415C8FC2A55C8E5041295C8F62501B5441A4703D2A5D8E5041B81E857B501B5441A4703D2A5E8E504148E17AB44F1B5441666666A65E8E5041E17A14EE4D1B544114AE47115D8E5041CDCCCCEC4A1B54415C8FC2A55C8E504148E17AF4481B54418FC2F5F85E8E5041713D0A47481B5441E17A148E5F8E5041713D0A374A1B5441C3F5284C5F8E50417B14AE374C1B54417B14AEC75F8E504148E17AC44D1B5441C3F5284C5F8E5041A4703D6A4F1B5441B81E851B5E8E5041EC51B83E511B5441000000A05F8E504152B81E95521B544148E17AD4608E50415C8FC235541B5441000000C0618E5041A4703DCA551B5441A4703DAA628E5041A4703DFA581B54415C8FC2C5638E5041B81E85BB631B54413D0AD773638E5041D7A3709D691B544166666646638E50417B14AE476B1B5441E17A149E648E504185EB51886B1B5441000000F0668E5041EC51B8FE6B1B544133333343698E5041666666B66C1B5441A4703DCA6A8E5041000000906D1B5441EC51B86E6B8E5041AE47E13A6E1B5441AE47E13A6C8E5041EC51B87E6F1B5441A4703DFA6C8E5041B81E85CB701B5441D7A370DD6D8E50419A999939721B54410AD7A3D06E8E5041CDCCCC6C731B544152B81E75708E5041C3F5288C741B5441EC51B89E728E5041A4703DEA751B544148E17AA4748E5041C3F5280C771B5441333333C3768E5041EC51B8DE771B5441E17A14BE778E50415C8FC225781B544114AE4781798E5041B81E85BB781B5441C3F5281C7B8E50413D0AD723791B5441B81E858B7B8E5041F6285C4F761B5441B81E854B7B8E50410AD7A360751B544114AE47217B8E50411F85EB51741B5441295C8FD2898E5041E17A140E711B5441CDCCCC0C8B8E5041A4703D6A721B544114AE4751908E5041713D0A076D1B54415C8FC255998E50418FC2F5986A1B544185EB5198A38E504152B81ED5671B5441C3F528BCAD8E50419A999919651B5441D7A3705DB08E5041E17A147E631B5441CDCCCC1CB58E5041E17A14FE5F1B544166666696BC8E50417B14AE175E1B5441D7A370BDC78E504166666686591B54415C8FC245C88E5041000000305B1B5441D7A3705DC58E504152B81E255D1B544148E17A64C18E50411F85EB815E1B5441666666B6BD8E504185EB5168601B5441713D0A57BB8E50411F85EB31631B54410AD7A380C08E5041AE47E18A621B544148E17A64C18E50410AD7A3A0651B54415C8FC2C5BD8E5041E17A14FE661B544114AE4721BE8E5041F6285C8F6B1B544152B81E55C18E5041E17A14CE6C1B5441713D0A17C98E50417B14AE87661B5441295C8F62D18E5041CDCCCCCC601B5441D7A370BDCE8E5041F6285CDF581B544152B81ED5D28E50411F85EB81571B544133333323D48E5041A4703D9A5B1B54415C8FC245D68E5041EC51B86E5C1B544148E17A94D98E50418FC2F568581B54417B14AE97D68E504114AE4781541B5441D7A3707DBC8E5041295C8FE2311B5441CDCCCCDCB78E5041713D0AF7321B544133333393A78E5041E17A14EE361B5441F6285C8F968E504185EB51083B1B5441B81E858B858E5041333333233F1B54415C8FC2F5768E50417B14AEA7421B5441295C8F225F8E50419A9999C9471B5441666666165C8E50411F85EB71481B54410B00000052B81E85AE8E5041A4703DBA591B54410AD7A3D0A88E50417B14AE87591B5441EC51B8CEA58E50411F85EB71561B54415C8FC2B5A38E5041AE47E19A521B5441CDCCCC5CA38E5041A4703D9A481B544133333373A88E504114AE47C1441B54418FC2F5B8AD8E5041AE47E1FA461B544152B81ED5AF8E5041F6285C5F4C1B5441D7A3701DB38E504152B81E65551B5441D7A3703DB18E504114AE4761591B544152B81E85AE8E5041A4703DBA591B5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000276C2549638E5041F987EB2D6B1B54412183CA6D628E504158C0BFDE721B5441A0C75B76628E5041AAE5A3EA721B544106ADE7FA668E5041B8963739751B5441F97E6853688E50410DBEC5F1751B54412599646E698E50419A2DCF6C761B544179369D506C8E5041457CEBDD771B544165715E556E8E50419AA37996781B54419CB9D9176E8E50412A272EBE741B5441C7AA41926E8E504135F3FF1D731B5441D7A370DD6D8E50419A999939721B5441A4703DFA6C8E5041B81E85CB701B5441AE47E13A6C8E5041EC51B87E6F1B54412CF5FD976B8E50413F91587C6E1B54413FE90CCA6A8E5041D2FEE48F6D1B544172E8812A6A8E5041244D1D376D1B5441BF36ED90688E5041680040866C1B5441F571FED5668E504180D2E8FE6B1B54412F635B26668E5041A99285D66B1B5441E17A149E648E504185EB51886B1B544166666646638E50417B14AE476B1B5441276C2549638E5041F987EB2D6B1B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624815 - 4128154
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD76357FD5041F6285CBFB40C55415C8FC2E556FD5041F6285CDFB50C55415C8FC27557FD504185EB5108B70C5541EC51B82E59FD50415C8FC235B70C55410AD7A3E05AFD504166666676B70C554185EB51A863FD5041D7A3700DB80C5541F6285C4F65FD504166666666B60C5541EC51B83E67FD504114AE4791B50C55418FC2F52869FD5041000000E0B40C55417B14AE3771FD504185EB5168B50C5541295C8FD273FD504148E17AF4B20C5541333333C372FD5041666666E6B10C5541D7A3709D72FD504185EB5118AA0C554148E17A5470FD50418FC2F5C8AA0C5541295C8F026CFD5041CDCCCC4CAB0C55413D0AD74366FD504152B81E75AB0C5541EC51B87E60FD5041333333D3AA0C55419A99992957FD504114AE47C1A90C5541D7A3709D56FD5041295C8F02AB0C5541AE47E13A56FD504148E17A34AC0C5541CDCCCC4C56FD5041A4703D8AAD0C554148E17AB457FD5041B81E853BB10C5541EC51B8BE58FD5041333333C3B20C55410AD7A36059FD50410AD7A3C0B30C55413D0AD76357FD5041F6285CBFB40C5541
+</a>
+
+<b>
+010600000001000000010300000001000000220000008FF6C4C372FD5041BBDB1217B20C554193373D3073FD5041E210DB7BB20C554164274CAA73FD504171B0621AB30C55414C8BEF2077FD50415E5A2E9AB00C554177A9A27878FD504105DA98A5AF0C5541B0BE4DE978FD50415B806B55AF0C5541A381749E7BFD50418694BB04AF0C5541B104CB1280FD5041BB758E8FAF0C5541FED4784185FD50414A0C024BAF0C55412FDD242E87FD5041E5D0228BAF0C55414E62106087FD5041190456F6AF0C5541B07268698BFD504160E5D0A2AF0C55416666660692FD5041DD240669AF0C554199E8C07791FD5041C0029EA4AB0C5541EC51B8AE91FD5041E5D022F3A80C554148E17A0C8DFD504152B81E1DA80C55413333335B8BFD5041B4C876BEA50C5541931804FE86FD5041819543BBA50C55411904568E86FD5041986E1283A40C5541C74B373986FD5041C976BE47A20C55416ABC744B88FD5041022B871EA10C55410D4543BF8CFD50411FCEEF2C9F0C554148E17A548CFD5041CDCCCCBC9C0C55419E7DA5D38BFD5041FCFCCB409C0C55417593180C88FD50419318049E9C0C5541EE7C3F9582FD5041000000B09D0C55412731089C7CFD504191ED7CC79D0C55419318043E75FD5041E5D0226B9D0C554153C6DD8E74FD5041EB57E70AA30C55415DEA632574FD5041B21D2859A40C5541D7A3709D72FD504185EB5118AA0C5541486A25A672FD5041B72002E5AB0C5541333333C372FD5041666666E6B10C55418FF6C4C372FD5041BBDB1217B20C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624815 - 314521
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD76357FD5041F6285CBFB40C55415C8FC2E556FD5041F6285CDFB50C55415C8FC27557FD504185EB5108B70C5541EC51B82E59FD50415C8FC235B70C55410AD7A3E05AFD504166666676B70C554185EB51A863FD5041D7A3700DB80C5541F6285C4F65FD504166666666B60C5541EC51B83E67FD504114AE4791B50C55418FC2F52869FD5041000000E0B40C55417B14AE3771FD504185EB5168B50C5541295C8FD273FD504148E17AF4B20C5541333333C372FD5041666666E6B10C5541D7A3709D72FD504185EB5118AA0C554148E17A5470FD50418FC2F5C8AA0C5541295C8F026CFD5041CDCCCC4CAB0C55413D0AD74366FD504152B81E75AB0C5541EC51B87E60FD5041333333D3AA0C55419A99992957FD504114AE47C1A90C5541D7A3709D56FD5041295C8F02AB0C5541AE47E13A56FD504148E17A34AC0C5541CDCCCC4C56FD5041A4703D8AAD0C554148E17AB457FD5041B81E853BB10C5541EC51B8BE58FD5041333333C3B20C55410AD7A36059FD50410AD7A3C0B30C55413D0AD76357FD5041F6285CBFB40C5541
+</a>
+
+<b>
+010600000001000000010300000001000000240000005FE632A286FD5041A393EB78AF0C55412FDD242E87FD5041E5D0228BAF0C55414E62106087FD5041190456F6AF0C5541B07268698BFD504160E5D0A2AF0C55416666660692FD5041DD240669AF0C554199E8C07791FD5041C0029EA4AB0C5541EC51B8AE91FD5041E5D022F3A80C554148E17A0C8DFD504152B81E1DA80C55413333335B8BFD5041B4C876BEA50C5541931804FE86FD5041819543BBA50C55411904568E86FD5041986E1283A40C5541C74B373986FD5041C976BE47A20C55416ABC744B88FD5041022B871EA10C55410D4543BF8CFD50411FCEEF2C9F0C554148E17A548CFD5041CDCCCCBC9C0C55419E7DA5D38BFD5041FCFCCB409C0C55417593180C88FD50419318049E9C0C5541EE7C3F9582FD5041000000B09D0C55412731089C7CFD504191ED7CC79D0C554154B1525E75FD5041C7CCB76C9D0C55410E93B03A75FD50410F817A869D0C554153C6DD8E74FD5041EB57E70AA30C55415DEA632574FD5041B21D2859A40C5541D7A3709D72FD504185EB5118AA0C5541486A25A672FD5041B72002E5AB0C5541333333C372FD5041666666E6B10C55418FF6C4C372FD5041BBDB1217B20C554193373D3073FD5041E210DB7BB20C554164274CAA73FD504171B0621AB30C55414C8BEF2077FD50415E5A2E9AB00C554177A9A27878FD504105DA98A5AF0C5541B0BE4DE978FD50415B806B55AF0C5541A381749E7BFD50418694BB04AF0C5541B104CB1280FD5041BB758E8FAF0C5541FED4784185FD50414A0C024BAF0C55415FE632A286FD5041A393EB78AF0C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893141 - 2909887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB310B5E504185EB51389F1C55419A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C554152B81EF5145E50417B14AE27981C5541D7A3702D135E5041C3F5288C931C554133333303125E50418FC2F5888E1C55419A9999D9115E50415C8FC2D58D1C55417B14AE57105E50418FC2F5E8821C5541F6285C4F0F5E504152B81E35761C55411F85EBC10D5E5041EC51B8BE6E1C5541713D0A370D5E504152B81E256C1C5541B81E856B015E504185EB5168681C55415C8FC275005E5041B81E851B691C55419A999959005E5041295C8FC2741C55417B14AE47005E5041666666567C1C5541A4703D4A005E5041295C8F22821C5541EC51B88E005E50415C8FC225881C554100000010025E504185EB51F88D1C5541713D0A57045E504148E17AA4931C554114AE47C1045E5041B81E857B941C5541EC51B8FE065E504133333303991C55411F85EB310B5E504185EB51389F1C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C55415FDA7484155E50418E44481D991C554152B81EF5145E50417B14AE27981C5541D9D780D8135E5041FD56F446951C5541A382C627135E504105ABC973931C554133333303125E50418FC2F5888E1C554114AE47C1045E5041B81E857B941C5541EE26C928075E504103475F41991C55410878F84C085E5041FEE236F19A1C55412E96F3440B5E5041DEE5BE519F1C55419A9999F90E5E504152B81E45A41C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893141 - 3635576
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB310B5E504185EB51389F1C55419A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C554152B81EF5145E50417B14AE27981C5541D7A3702D135E5041C3F5288C931C554133333303125E50418FC2F5888E1C55419A9999D9115E50415C8FC2D58D1C55417B14AE57105E50418FC2F5E8821C5541F6285C4F0F5E504152B81E35761C55411F85EBC10D5E5041EC51B8BE6E1C5541713D0A370D5E504152B81E256C1C5541B81E856B015E504185EB5168681C55415C8FC275005E5041B81E851B691C55419A999959005E5041295C8FC2741C55417B14AE47005E5041666666567C1C5541A4703D4A005E5041295C8F22821C5541EC51B88E005E50415C8FC225881C554100000010025E504185EB51F88D1C5541713D0A57045E504148E17AA4931C554114AE47C1045E5041B81E857B941C5541EC51B8FE065E504133333303991C55411F85EB310B5E504185EB51389F1C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C55415FDA7484155E50418E44481D991C554152B81EF5145E50417B14AE27981C5541D9D780D8135E5041FD56F446951C5541A382C627135E504105ABC973931C554133333303125E50418FC2F5888E1C554114AE47C1045E5041B81E857B941C5541EE26C928075E504103475F41991C55410878F84C085E5041FEE236F19A1C55412E96F3440B5E5041DEE5BE519F1C55419A9999F90E5E504152B81E45A41C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893328 - 2947988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000500000008FC2F5C82E6B504152B81EC5421A5541000000702F6B504133333383441A554114AE4721306B50410AD7A360461A5541F6285C2F326B5041F6285C2F4A1A55413D0AD7A3346B50415C8FC2354D1A5541E17A14FE386B50411F85EB21511A5541295C8F323C6B50410AD7A3E0521A5541666666E6486B5041333333A3571A5541713D0A474D6B50415C8FC2A5591A55419A9999A9536B504185EB51585C1A5541295C8F525F6B50413D0AD713611A5541000000005F6B504100000040621A5541CDCCCC4C5F6B50415C8FC255621A55415C8FC295736B5041CDCCCC2C681A554185EB51A8746B5041C3F5287C681A554152B81E55746B50417B14AE77691A554166666656736B5041295C8F726B1A5541CDCCCCAC746B5041C3F5282C6C1A5541EC51B87E796B50418FC2F5C86E1A5541EC51B8BE7A6B5041666666766F1A554114AE4791796B50410AD7A360731A5541F6285C3F796B50410AD7A370741A5541D7A370BD786B5041A4703D1A761A5541295C8F22786B504166666616781A5541CDCCCCDC786B50410AD7A3F0781A55417B14AE177A6B5041F6285C7F7A1A5541666666F67A6B5041E17A140E7C1A55415C8FC2257C6B5041333333B37E1A5541666666467E6B5041B81E85EB831A55415C8FC2B57F6B50410AD7A3E0871A5541E17A141E806B504133333353851A5541A4703D6A806B5041AE47E11A841A554133333313846B5041295C8F22791A554100000020866B5041333333B3721A55411F85EB31866B5041333333B36F1A55419A9999E9846B5041D7A3702D6F1A5541B81E85EB846B5041D7A3707D6E1A5541713D0A27856B50415C8FC2F5591A55418FC2F528856B50417B14AEA7591A55419A9999B9846B504166666686591A554148E17A14836B5041E17A14CE581A55415C8FC265826B504114AE4781581A5541C3F5283C826B504133333353591A5541A4703D7A816B504152B81E355D1A5541295C8FB2806B504114AE47D15C1A554185EB51487A6B50410AD7A3B0591A554133333343796B50410AD7A330591A5541CDCCCC7C786B5041295C8FC25C1A554114AE4751786B50418FC2F5985D1A554114AE4751776B5041295C8F92601A554148E17A04766B5041F6285C6F641A5541F6285C7F746B50410AD7A310641A5541713D0A47626B5041CDCCCC9C5F1A5541333333E35F6B50418FC2F5085F1A5541295C8F12606B5041B81E855B5E1A554148E17A745E6B504152B81ED55D1A5541D7A3705D506B504185EB5198581A55419A9999394F6B5041B81E854B581A5541713D0AF74F6B50419A9999A9551A5541D7A3704D506B5041713D0A77541A5541666666A6506B5041A4703D3A531A5541713D0A57516B50417B14AEC7501A55413D0AD7F34E6B504114AE4721501A5541B81E857B426B50415C8FC2A54C1A554148E17A243A6B50419A999949491A5541713D0AF7366B504148E17A64471A554133333363336B5041E17A143E431A55415C8FC275306B5041EC51B8FE3D1A5541000000502F6B50415C8FC2F53A1A55418FC2F5D82D6B50418FC2F5083B1A5541295C8F722D6B5041713D0A173B1A55418FC2F5282D6B50418FC2F5283B1A5541000000D02C6B5041F6285C5F3B1A55411F85EBA12C6B50419A9999A93B1A5541295C8F922C6B5041666666063C1A55413D0AD7A32C6B5041E17A147E3C1A554185EB51B82C6B504152B81EF53C1A55419A9999592D6B5041E17A14BE3E1A5541EC51B8FE2D6B5041E17A149E401A55418FC2F5C82E6B504152B81EC5421A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B7E3D422746B5041135BC0DB691A5541F10CD779746B50415B28AC08691A5541E208C9A6746B5041B9AECC80681A5541C6A45D3D726B50412C58A6C9671A554107DCD7316F6B50413E2A3AE9661A55414CD8EC1F6C6B504190A1F606661A55412C6815A0696B50415330C14E651A5541BB06CCE0666B50417DBB4784641A5541BDFB95FD646B5041703A2AF9631A5541EC964901616B50411A736CD3621A55411AE47987616B5041F7A712EF631A55413B6C7776616B5041AD562B99641A5541A68702C3616B50411031CA6D651A55411A26208F626B50414A00D9D3651A55416D3C406C636B504132FB6D64661A55412E352EAB646B5041E6C10E63671A5541D0D5F4AC676B5041C9CB2338691A554130C50276696B50410013C0406A1A5541C7B342E2696B50418D97E37C6A1A554125B9E44B6B6B5041093A1D1C6B1A5541253D315B6D6B5041B7A7494E6C1A55412E026AE26E6B5041F1B8FEBB6D1A5541A2A087AE6F6B50411283A2B26E1A5541F4B6A78B706B5041DEF539546F1A5541EC75BB13716B50419F68D1F56F1A5541EC75BB13716B504118C548BA6F1A5541798308F7716B50414D76FF0E6E1A5541AB9596E7726B5041ED86F1456C1A5541B7E3D422746B5041135BC0DB691A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893328 - 3811272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000500000008FC2F5C82E6B504152B81EC5421A5541000000702F6B504133333383441A554114AE4721306B50410AD7A360461A5541F6285C2F326B5041F6285C2F4A1A55413D0AD7A3346B50415C8FC2354D1A5541E17A14FE386B50411F85EB21511A5541295C8F323C6B50410AD7A3E0521A5541666666E6486B5041333333A3571A5541713D0A474D6B50415C8FC2A5591A55419A9999A9536B504185EB51585C1A5541295C8F525F6B50413D0AD713611A5541000000005F6B504100000040621A5541CDCCCC4C5F6B50415C8FC255621A55415C8FC295736B5041CDCCCC2C681A554185EB51A8746B5041C3F5287C681A554152B81E55746B50417B14AE77691A554166666656736B5041295C8F726B1A5541CDCCCCAC746B5041C3F5282C6C1A5541EC51B87E796B50418FC2F5C86E1A5541EC51B8BE7A6B5041666666766F1A554114AE4791796B50410AD7A360731A5541F6285C3F796B50410AD7A370741A5541D7A370BD786B5041A4703D1A761A5541295C8F22786B504166666616781A5541CDCCCCDC786B50410AD7A3F0781A55417B14AE177A6B5041F6285C7F7A1A5541666666F67A6B5041E17A140E7C1A55415C8FC2257C6B5041333333B37E1A5541666666467E6B5041B81E85EB831A55415C8FC2B57F6B50410AD7A3E0871A5541E17A141E806B504133333353851A5541A4703D6A806B5041AE47E11A841A554133333313846B5041295C8F22791A554100000020866B5041333333B3721A55411F85EB31866B5041333333B36F1A55419A9999E9846B5041D7A3702D6F1A5541B81E85EB846B5041D7A3707D6E1A5541713D0A27856B50415C8FC2F5591A55418FC2F528856B50417B14AEA7591A55419A9999B9846B504166666686591A554148E17A14836B5041E17A14CE581A55415C8FC265826B504114AE4781581A5541C3F5283C826B504133333353591A5541A4703D7A816B504152B81E355D1A5541295C8FB2806B504114AE47D15C1A554185EB51487A6B50410AD7A3B0591A554133333343796B50410AD7A330591A5541CDCCCC7C786B5041295C8FC25C1A554114AE4751786B50418FC2F5985D1A554114AE4751776B5041295C8F92601A554148E17A04766B5041F6285C6F641A5541F6285C7F746B50410AD7A310641A5541713D0A47626B5041CDCCCC9C5F1A5541333333E35F6B50418FC2F5085F1A5541295C8F12606B5041B81E855B5E1A554148E17A745E6B504152B81ED55D1A5541D7A3705D506B504185EB5198581A55419A9999394F6B5041B81E854B581A5541713D0AF74F6B50419A9999A9551A5541D7A3704D506B5041713D0A77541A5541666666A6506B5041A4703D3A531A5541713D0A57516B50417B14AEC7501A55413D0AD7F34E6B504114AE4721501A5541B81E857B426B50415C8FC2A54C1A554148E17A243A6B50419A999949491A5541713D0AF7366B504148E17A64471A554133333363336B5041E17A143E431A55415C8FC275306B5041EC51B8FE3D1A5541000000502F6B50415C8FC2F53A1A55418FC2F5D82D6B50418FC2F5083B1A5541295C8F722D6B5041713D0A173B1A55418FC2F5282D6B50418FC2F5283B1A5541000000D02C6B5041F6285C5F3B1A55411F85EBA12C6B50419A9999A93B1A5541295C8F922C6B5041666666063C1A55413D0AD7A32C6B5041E17A147E3C1A554185EB51B82C6B504152B81EF53C1A55419A9999592D6B5041E17A14BE3E1A5541EC51B8FE2D6B5041E17A149E401A55418FC2F5C82E6B504152B81EC5421A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B7E3D422746B5041135BC0DB691A5541F10CD779746B50415B28AC08691A5541E208C9A6746B5041B9AECC80681A5541C6A45D3D726B50412C58A6C9671A554107DCD7316F6B50413E2A3AE9661A55414CD8EC1F6C6B504190A1F606661A55412C6815A0696B50415330C14E651A5541BB06CCE0666B50417DBB4784641A5541BDFB95FD646B5041703A2AF9631A5541EC964901616B50411A736CD3621A55411AE47987616B5041F7A712EF631A55413B6C7776616B5041AD562B99641A5541A68702C3616B50411031CA6D651A55411A26208F626B50414A00D9D3651A55416D3C406C636B504132FB6D64661A55412E352EAB646B5041E6C10E63671A5541D0D5F4AC676B5041C9CB2338691A554130C50276696B50410013C0406A1A5541C7B342E2696B50418D97E37C6A1A554125B9E44B6B6B5041093A1D1C6B1A5541253D315B6D6B5041B7A7494E6C1A55412E026AE26E6B5041F1B8FEBB6D1A5541A2A087AE6F6B50411283A2B26E1A5541F4B6A78B706B5041DEF539546F1A5541EC75BB13716B50419F68D1F56F1A5541EC75BB13716B504118C548BA6F1A5541798308F7716B50414D76FF0E6E1A5541AB9596E7726B5041ED86F1456C1A5541B7E3D422746B5041135BC0DB691A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893335 - 4338095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A14FE596B50415C8FC245DE195541A4703DFA586B504148E17A44DE1955417B14AE47546B504100000040DE195541A4703DFA536B5041295C8F52DE195541E17A145E4F6B5041D7A370EDDE19554148E17AF4576B5041AE47E1CAF1195541713D0A27546B5041C3F5285CF21955418FC2F5D8506B504185EB51C8F219554148E17AC4516B504100000040F51955411F85EB41566B50410AD7A340011A5541C3F5285C576B504185EB51C8031A55419A9999B9636B5041E17A145E041A5541CDCCCCFC666B50419A9999D9041A5541B81E854B686B5041A4703D0A051A5541AE47E1DA696B504166666646051A554152B81E556C6B5041B81E85AB051A5541713D0A076D6B5041D7A370CD051A5541AE47E18A6E6B50417B14AE07061A55418FC2F5486E6B5041B81E858B051A55410AD7A390636B50419A999959F1195541A4703D1A696B5041AE47E18AF119554185EB51586A6B50417B14AE97F11955411F85EBA1696B5041713D0A47F019554152B81EE55F6B50410AD7A350DE1955419A9999495C6B504185EB5148DE195541E17A14FE596B50415C8FC245DE195541
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B437C01696B50411AFB048AF1195541A4703D1A696B5041AE47E18AF119554185EB51586A6B50417B14AE97F11955411F85EBA1696B5041713D0A47F019554152B81EE55F6B50410AD7A350DE1955419A9999495C6B504185EB5148DE195541E17A14FE596B50415C8FC245DE195541A4703DFA586B504148E17A44DE1955417B14AE47546B504100000040DE195541A4703DFA536B5041295C8F52DE195541E17A145E4F6B5041D7A370EDDE19554148E17AF4576B5041AE47E1CAF1195541713D0A27546B5041C3F5285CF21955418FC2F5D8506B504185EB51C8F219554148E17AC4516B504100000040F51955411F85EB41566B50410AD7A340011A5541C3F5285C576B504185EB51C8031A55419A9999B9636B5041E17A145E041A5541CDCCCCFC666B50419A9999D9041A5541B81E854B686B5041A4703D0A051A5541AE47E1DA696B504166666646051A554152B81E556C6B5041B81E85AB051A5541713D0A076D6B5041D7A370CD051A5541AE47E18A6E6B50417B14AE07061A55418FC2F5486E6B5041B81E858B051A5541CC2DFF5B6C6B5041896AD8EA011A5541776A83276A6B5041C8BD6FC3FD195541261E9827666B50414D0F303BF6195541AD5DB48E636B5041910E8859F119554154E64301696B5041EAC6018AF11955417B437C01696B50411AFB048AF1195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311735 - 33901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000295C8F229FC75041F6285C6FDA725441B81E85FB9DC75041E17A145EDF725441A4703D9A9EC750411F85EB41E1725441B81E859B9FC7504100000000E272544152B81E55A3C7504114AE47C1E4725441F6285C5FCEC75041C3F528ACF572544133333393D0C750411F85EB71EF7254415C8FC275C5C7504185EB51A8EA7254418FC2F5E8BBC75041E17A148EE67254410AD7A3F0A7C75041E17A148EDF725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA7254410103000000010000000E0000009A999959D0C750419A9999C9F572544185EB51F8D8C750419A9999B9F7725441B81E856BE9C75041D7A370BDFA725441EC51B84EF5C7504148E17A84FE72544148E17A24FBC75041A4703D3A00735441C3F5283C05C850413333330302735441666666E60FC85041B81E85BB0573544148E17A7411C850413D0AD7F304735441D7A3707D13C8504148E17A84FE725441A4703D3AFFC750411F85EB01FA72544152B81E95EFC7504185EB51D8F5725441A4703D6AD8C7504133333303F27254415C8FC205D2C75041B81E85EBEF7254419A999959D0C750419A9999C9F5725441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000000AD7A3F0A7C75041E17A148EDF72544147BB2C22A1C75041A3884F64DA725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA725441533ECE56A0C750415DFBA5CADB7254412C14FC46A3C75041EEF0CE6ADE7254415E0326F7A5C750415352E7FADF72544101898737ACC7504194540E7BE27254410C700108B4C75041856333DBE472544197BC6BD8BAC750411E6C594BE7725441CA4AF388C3C750417AEF930BEB7254413E5E66E9CAC750414CB2C42BEE7254410030BC69D0C75041EDCDE76BF0725441738B4B9AD9C750411AAA144CF37254414ECBB78AE0C75041EB37266CF4725441BADDC2F8ECC75041787B3F14F672544193EF6BBDEEC75041645259D0F5725441FD6AF0C3E8C75041374A9FB7F4725441505CCF76E6C75041A2452A56F4725441E8229078E4C750414AD5C101F4725441A4703D6AD8C7504133333303F27254418C2F899BD7C7504149C489BFF17254415C8FC205D2C75041B81E85EBEF725441BE2FA0D1D1C75041247B69DAEF72544133333393D0C750411F85EB71EF725441CE3CBD5AD0C7504110D99959EF725441A2274571C5C750413E2864A6EA725441A5823F89BFC7504197E5DA1CE8725441DB6EC200BCC750410AC74D98E67254413AE2C041BBC7504158447853E67254410AD7A3F0A7C75041E17A148EDF725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311735 - 73278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000295C8F229FC75041F6285C6FDA725441B81E85FB9DC75041E17A145EDF725441A4703D9A9EC750411F85EB41E1725441B81E859B9FC7504100000000E272544152B81E55A3C7504114AE47C1E4725441F6285C5FCEC75041C3F528ACF572544133333393D0C750411F85EB71EF7254415C8FC275C5C7504185EB51A8EA7254418FC2F5E8BBC75041E17A148EE67254410AD7A3F0A7C75041E17A148EDF725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA7254410103000000010000000E0000009A999959D0C750419A9999C9F572544185EB51F8D8C750419A9999B9F7725441B81E856BE9C75041D7A370BDFA725441EC51B84EF5C7504148E17A84FE72544148E17A24FBC75041A4703D3A00735441C3F5283C05C850413333330302735441666666E60FC85041B81E85BB0573544148E17A7411C850413D0AD7F304735441D7A3707D13C8504148E17A84FE725441A4703D3AFFC750411F85EB01FA72544152B81E95EFC7504185EB51D8F5725441A4703D6AD8C7504133333303F27254415C8FC205D2C75041B81E85EBEF7254419A999959D0C750419A9999C9F5725441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000000AD7A3F0A7C75041E17A148EDF72544147BB2C22A1C75041A3884F64DA725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA725441533ECE56A0C750415DFBA5CADB7254412C14FC46A3C75041EEF0CE6ADE7254415E0326F7A5C750415352E7FADF72544101898737ACC7504194540E7BE27254410C700108B4C75041856333DBE472544197BC6BD8BAC750411E6C594BE7725441CA4AF388C3C750417AEF930BEB7254413E5E66E9CAC750414CB2C42BEE7254410030BC69D0C75041EDCDE76BF0725441738B4B9AD9C750411AAA144CF37254414ECBB78AE0C75041EB37266CF4725441BADDC2F8ECC75041787B3F14F672544193EF6BBDEEC75041645259D0F5725441FD6AF0C3E8C75041374A9FB7F4725441505CCF76E6C75041A2452A56F4725441E8229078E4C750414AD5C101F4725441A4703D6AD8C7504133333303F27254418C2F899BD7C7504149C489BFF17254415C8FC205D2C75041B81E85EBEF725441BE2FA0D1D1C75041247B69DAEF72544133333393D0C750411F85EB71EF725441CE3CBD5AD0C7504110D99959EF725441A2274571C5C750413E2864A6EA725441A5823F89BFC7504197E5DA1CE8725441DB6EC200BCC750410AC74D98E67254413AE2C041BBC7504158447853E67254410AD7A3F0A7C75041E17A148EDF725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312287 - 4013453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000029000000EC51B81E154F514185EB51388EA95441713D0A27244F5141D7A3708D8CA95441713D0AB7254F5141AE47E11A8CA95441C3F528CC264F51417B14AE878BA95441713D0A17274F51411F85EB018AA95441E17A14CE254F5141A4703DFA83A9544148E17AE4204F5141B81E858B70A95441713D0AB71D4F51413D0AD7A363A95441EC51B8BE044F5141000000A009A954413D0AD733F94E5141EC51B8FEB2A85441F6285C9F8F4E514185EB51A8AAA85441000000A08E4E514148E17A94AAA85441CDCCCCBC8E4E5141E17A140EACA85441C3F528FC904E51415C8FC2D5C1A8544148E17A94914E5141295C8F82C6A854418FC2F568924E5141F6285C4FCBA85441C3F5289C934E5141C3F5280CD0A8544100000000954E5141C3F528ACD4A85441D7A3708D964E5141B81E855BD9A8544166666636984E5141AE47E1EADDA854410AD7A3209B4E5141D7A370ADE5A85441C3F5280C9E4E5141CDCCCC7CECA854415C8FC265A14E5141CDCCCC4CF3A8544152B81ED5A64E5141333333F3FCA854417B14AEE7CA4E5141F6285C2F41A954419A9999D9CC4E5141E17A142E45A95441A4703DFACE4E51418FC2F5584AA95441F6285C7FD04E5141295C8F624FA95441666666B6D14E51410AD7A3D054A9544114AE47C1D24E5141E17A14AE5AA95441333333C3D44E51413D0AD71373A954417B14AED7D64E5141B81E850B81A95441E17A14DED74E514148E17A4485A95441CDCCCC1CDA4E5141C3F5284C91A9544185EB5108DB4E5141F6285C3F92A954417B14AEF7DB4E5141D7A370CD92A95441F6285C4FDF4E5141B81E85AB92A95441D7A370DDEA4E5141CDCCCCDC91A954418FC2F508F34E51418FC2F59891A9544152B81EC5034F5141000000F08FA95441EC51B81E154F514185EB51388EA95441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000FCFD9FCB034F51417C4E7F7F02A95441C82597A9034F5141E6BC0E8001A954415C7ED962A54E51417E2EC661FAA85441BCB319D5A54E51413039A12CFBA8544152B81ED5A64E5141333333F3FCA854417B14AEE7CA4E5141F6285C2F41A954419A9999D9CC4E5141E17A142E45A95441A4703DFACE4E51418FC2F5584AA95441F6285C7FD04E5141295C8F624FA95441666666B6D14E51410AD7A3D054A9544114AE47C1D24E5141E17A14AE5AA95441333333C3D44E51413D0AD71373A954417B14AED7D64E5141B81E850B81A95441E17A14DED74E514148E17A4485A95441CDCCCC1CDA4E5141C3F5284C91A9544185EB5108DB4E5141F6285C3F92A954417B14AEF7DB4E5141D7A370CD92A95441F6285C4FDF4E5141B81E85AB92A95441D7A370DDEA4E5141CDCCCCDC91A954418FC2F508F34E51418FC2F59891A9544152B81EC5034F5141000000F08FA95441EC51B81E154F514185EB51388EA95441713D0A27244F5141D7A3708D8CA95441713D0AB7254F5141AE47E11A8CA95441C3F528CC264F51417B14AE878BA95441713D0A17274F51411F85EB018AA95441E17A14CE254F5141A4703DFA83A9544148E17AE4204F5141B81E858B70A95441713D0AB71D4F51413D0AD7A363A95441EC51B8BE044F5141000000A009A95441FCFD9FCB034F51417C4E7F7F02A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312334 - 3808988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000033333343B99A5041F6285C4FC910554133333393BA9A504114AE47E1C81055418FC2F528BE9A504152B81EB5C7105541E17A143EBF9A5041AE47E15AC71055419A9999A9C09A50415C8FC2E5C6105541A4703D8ABD9A504166666656BF105541E17A146EB99A504148E17A04B51055411F85EB41B89A5041F6285C7FB210554148E17AA4B69A5041AE47E16AAF105541C3F5285CB19A50417B14AEC7A41055418FC2F518AF9A5041A4703DDA9F105541C3F5288CAD9A50419A9999D9A0105541666666F6AA9A504185EB5128A21055419A999909AA9A504152B81E75A2105541EC51B8EEAF9A5041C3F5287CB1105541295C8F22B79A5041EC51B8FEC210554133333343B99A5041F6285C4FC9105541
+</a>
+
+<b>
+010600000001000000010300000001000000150000009A999909AA9A504152B81E75A21055415FCE206AAB9A50419B60C8F7A51055413E8EA873AD9A504158C24329AB10554178FC4FF3AF9A50415A1F5387B1105541864AAC20B39A50411D92AF40B9105541A6DDC7A1B49A5041BDDAEBE8BC1055410EA6A15DB79A504138650FAEC310554133333343B99A5041F6285C4FC9105541F6285CCFC19A5041713D0A87C61055410AD7A300C39A504148E17A24C61055410AD7A390C59A504114AE4751C51055410AD7A380C29A5041EC51B8DEBD10554185EB5158BE9A504152B81EC5B31055417B14AE87B69A5041CDCCCC9CA41055410AD7A330B49A50413D0AD7C3A0105541E17A145EB19A50413D0AD7639C10554185EB51E8AF9A50419A9999999D1055411F85EB91AE9A504152B81EB59E105541A3C057E0AB9A50410C6FB7EFA01055412E3A1EDEAA9A50417754C7C5A11055419A999909AA9A504152B81E75A2105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312341 - 3186235
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003300000014AE47F1C29A504152B81EC549105541F6285C3FC29A50415C8FC255461055418FC2F5D8C19A5041666666864510554152B81E55C19A50417B14AE77441055413D0AD7C3C09A5041295C8FD24310554148E17A84C09A5041A4703D8A43105541A4703D5ABF9A50410000009042105541713D0A27BF9A504148E17A6442105541713D0AA7BC9A5041333333733F10554100000070BB9A504148E17A043E105541D7A370EDB69A5041295C8FA239105541CDCCCC6CB69A50415C8FC2D538105541C3F528DCB39A50418FC2F5C8391055415C8FC215AF9A5041E17A148E3B105541713D0A979B9A5041713D0AD741105541CDCCCC5C9A9A5041AE47E1BA3D1055417B14AEB7999A504114AE47913B1055418FC2F588879A5041C3F5282C40105541B81E85FB7E9A50418FC2F50842105541713D0A776B9A5041713D0AA745105541000000806B9A5041EC51B86E46105541CDCCCC8C6B9A504100000090471055413D0AD7A36B9A5041333333034A10554152B81EB56B9A5041000000D04B105541F6285CCF6B9A5041F6285C5F4D1055419A9999E96B9A504114AE47E14E105541E17A14FE6B9A50413D0AD7335010554185EB51C86B9A5041E17A147E5110554185EB51F86B9A50411F85EB5153105541000000206C9A5041713D0AD754105541333333436C9A5041AE47E12A5610554185EB51486C9A5041EC51B85E56105541AE47E17A6C9A5041D7A370DD57105541666666F66C9A5041295C8F725B105541D7A3707D709A50410AD7A3B05A1055415C8FC235759A5041F6285C4F59105541CDCCCC3C799A50413D0AD76358105541E17A14AE7F9A50418FC2F52858105541B81E856B8B9A504114AE4781581055418FC2F598909A5041E17A14EE571055410AD7A380979A50411F85EB015710554133333303A19A50417B14AEC753105541713D0A17A69A504114AE47E1511055411F85EBB1AD9A50415C8FC2555010554148E17AC4AF9A5041A4703D4A50105541B81E85CBB19A50418FC2F5384F105541713D0A67B49A50415C8FC2554E105541F6285CFFB79A5041295C8F524C10554166666636BB9A5041333333C34B105541713D0A37BF9A50419A9999494A10554114AE47F1C29A504152B81EC549105541
+</a>
+
+<b>
+0106000000010000000103000000080000008D00000035160610DA99504192AEB934AA10554150DD4CF7E29950412DA9221CA8105541DB730580EB99504183D81B0CA6105541E7A7E89AF6995041FE16627DA3105541F92739A3029A5041026F8708A11055413F1CFBEC099A50416758788D9F105541A375E12C129A5041D95092889D105541C2E8D8EC149A50415A66A8C39C105541DFF7A4F6189A50419B86499C9B105541E17A143E1C9A504185EB51A8991055415C8FC295239A5041C3F5284C961055415C8FC2F5279A504185EB51B8931055415C8FC2C52A9A504148E17A6492105541E71ED3732C9A504187C0D30A92105541F00485133A9A5041FF06C5338F1055411F85EBC1429A504148E17A648D1055417EE6498B459A50418DC34D478B105541874B2C564A9A50416B5C90A487105541A1E0DDD64B9A5041C65E318086105541ECFDF5094F9A5041CAAB4FBA83105541611B42AF529A5041CB1A7491801055419C258FDF549A5041DB00DCAB7E105541BE33DE74579A50419A783C9E7C1055415951641F589A504135B9AB1C7C10554136607E4B589A50416D5F6D0D7C1055411C9A91E9599A50418110F37B7B105541544C9712649A5041EF3746FB77105541E86FE0C2649A50410048C4BD77105541A7707B8F679A504154322070761055414DA827656A9A50418063431E75105541D35B57E86A9A50418876EDEF741055410440698B719A50413361A9A9721055415A2A276B789A50415DC4D6F96F10554146FA617D7D9A50411AB009C96C105541E17A14EE7F9A5041000000406B105541596EBB51829A5041FF587D356A10554181A5E9F2879A50410D1289C167105541A81104B9899A5041E1EBE0F0661055415128F3EE8C9A5041DC10A65565105541A371F2F38F9A5041133338DD621055411F85EB81919A5041000000F0601055411F85EB31919A504148E17AD45E105541D52115C78E9A50417B9E6BA85D105541BC5A9D8B899A5041E7DAF2805D1055417BA82CD9849A50414B9D56ED5C105541210D0F18849A5041C2A4C2D65C105541E83EB1FD829A50412E1BA5C95C105541883D21DB7A9A504159F5E9685C1055413602EA11789A50416F9DE44A5C105541000000206D9A50417B14AEA75C1055414BF705556C9A5041BE12E1BE5610554108991F2C6C9A5041D610164C5510554162B04A0A6A9A50410EBEB66551105541D2D66F90699A5041A9A4958A4E105541B023BA9C689A5041CB91F6044A1055412BBA8D8A679A50410D320D734610554142A191EE899A5041388F1C5541105541F5F376D5909A5041EAB80206401055410C607D979A9A50410B090E3D3E105541713D0A979B9A5041713D0AD741105541501734A8A39A5041404F403D3F10554139711173AA9A50419773A80C3D105541A6C03BADAF9A5041A286EE553B105541BE089175B69A50415778B7E338105541C7CDE317B39A5041A93AF58233105541729CE3FCB19A5041ED9DC5BE311055419F7CA483B19A504162BF69DA301055410A92F9B0AF9A504108FEB4252D105541AE8DFD3FAE9A504191902A442A105541F6A7BAE3AD9A504137D1F5CA291055416FD64B53AB9A5041A26D966C26105541C02DD1E7AA9A50413D0712B5251055410B1A57BCA69A50415C1667351E1055411D3696EDA49A5041410189071B10554153387819A19A504180ABE1FD15105541FD30CDD69B9A5041BA59D26B0F105541333333C3989A5041000000E00B1055416045CA79969A5041783669CB0810554148F393C7949A5041231DBDA506105541AB411AB0939A50411E907E76051055411B99B71C8F9A504163007C7F0010554157DEABBE889A504148711908FA0F55415C8FC235889A5041D7A3707DF90F5541B81E852B879A5041C3F5281CFA0F5541E3F39865849A5041DCD7B967F60F55414D057C45839A5041D37C1210F50F55412EFD0FBA829A5041E70CF931F50F5541A00B1866829A504114795D48F50F55419AE93744819A5041405C8500F60F554191EA69297B9A5041C8020B85F70F5541481CEBE3739A5041C03ED253F90F554161053CCE6F9A5041C9C1C857FA0F554101A6D69D689A50417F597C28FC0F5541B5C44163629A50412CE2A6BCFD0F554149A8265D5E9A50413E7A63CDFE0F55415376BAAF569A5041B5DAC3D500105541A29CBD8E549A5041FC200F66011055411237D557339A5041EB5956310A105541CBBB0DC8279A504110A38F5D0D105541CB7C7E311E9A50419CEC5C011010554115B0EDB5189A50418CC3CC8311105541B5765385139A5041AC5D91F212105541A6438CF30B9A504170E7A40C15105541FB4A1DCB079A5041137A3634161055412F021804049A5041C46DBB4017105541E0F98585FE995041DFE84DC7181055415C8FC2F5FA99504148E17AC419105541B54E3BC1FA995041317BDF1C1A1055410BD7D31BF99950416A8EFFE11C10554124E36E00F9995041AC01F9411D10554199737746F8995041FF8883BF211055413D232A48F7995041046E77E3271055419B8EC888F69950418EC728632C105541AB08D206F6995041FB4AB7B72F10554131EC8F1CF5995041C2E1D002321055418B1532B7F499504194D07CFB32105541A2A1F493F3995041444E8FA03510554100ED832FF2995041D913AAD737105541A256CA77F09950417B37EC4D3A105541C90E6EBCEE99504195C8AB8B3C1055414C4DB11EEC9950412812196F3F105541A5752E85E899504125D913E24210554178B16B7DE5995041E64707F8451055415AE0A58ADD9950410F99578D4E10554143806DF1DB995041C0FF9DCC501055414A5AD983DC9950415D423CFA56105541116DD8CDDC995041ACA5829F5A10554181F0ECB6D7995041CFFF201C5B105541D19C26CCD49950418C4779635B10554164D106B0D4995041CF890BF15F105541F32ED48AD4995041816532E966105541CD112B67D49950410B769E976D1055418DD80F3FD49950410DF31320751055419CC97317D499504135206E9A7C10554106F9F6AFD39950419A57CAA487105541A2C33C45D3995041AC374A8D901055410756F2D5D2995041FB21E7A9A1105541B15FBE1AD4995041B8EC9E65A7105541B49CB46CD5995041AB39A4E4AA105541A4004D41D6995041221ACBEFAA10554135160610DA99504192AEB934AA10554105000000A4703DEA3A9A5041713D0A371D1055418C5028153B9A5041BF4533101C105541713D0A473C9A5041000000201C1055418FC2F5183C9A5041666666461D105541A4703DEA3A9A5041713D0A371D105541050000007B14AE47389A50418FC2F50815105541E17A147E389A5041333333D313105541CDCCCC9C399A504114AE471114105541EC51B85E399A504100000030151055417B14AE47389A50418FC2F50815105541050000009A9999696C9A5041333333B31E1055419A9999696C9A5041C3F5288C1D105541713D0AA76D9A5041CDCCCC7C1D105541713D0AA76D9A5041AE47E1BA1E1055419A9999696C9A5041333333B31E10554105000000295C8F22749A504185EB51E827105541295C8F22749A5041A4703DAA261055410AD7A360759A50411F85EBB1261055410AD7A360759A5041000000F027105541295C8F22749A504185EB51E827105541050000005C8FC2C59F9A504114AE4771301055411F85EBB19F9A50410AD7A3402F105541000000F0A09A50410AD7A3402F1055413D0AD703A19A5041EC51B87E301055415C8FC2C59F9A504114AE4771301055410500000000000030A09A5041AE47E16A281055419A999929A09A50410AD7A340271055417B14AE67A19A5041A4703D3A271055417B14AE67A19A504114AE47712810554100000030A09A5041AE47E16A2810554105000000B42B2BBA4E9A50415427486E0810554178768424509A504111404B51081055418B97C048509A504120F6E98809105541559FA9C84E9A5041341726AD09105541B42B2BBA4E9A50415427486E08105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312341 - 3204383
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003300000014AE47F1C29A504152B81EC549105541F6285C3FC29A50415C8FC255461055418FC2F5D8C19A5041666666864510554152B81E55C19A50417B14AE77441055413D0AD7C3C09A5041295C8FD24310554148E17A84C09A5041A4703D8A43105541A4703D5ABF9A50410000009042105541713D0A27BF9A504148E17A6442105541713D0AA7BC9A5041333333733F10554100000070BB9A504148E17A043E105541D7A370EDB69A5041295C8FA239105541CDCCCC6CB69A50415C8FC2D538105541C3F528DCB39A50418FC2F5C8391055415C8FC215AF9A5041E17A148E3B105541713D0A979B9A5041713D0AD741105541CDCCCC5C9A9A5041AE47E1BA3D1055417B14AEB7999A504114AE47913B1055418FC2F588879A5041C3F5282C40105541B81E85FB7E9A50418FC2F50842105541713D0A776B9A5041713D0AA745105541000000806B9A5041EC51B86E46105541CDCCCC8C6B9A504100000090471055413D0AD7A36B9A5041333333034A10554152B81EB56B9A5041000000D04B105541F6285CCF6B9A5041F6285C5F4D1055419A9999E96B9A504114AE47E14E105541E17A14FE6B9A50413D0AD7335010554185EB51C86B9A5041E17A147E5110554185EB51F86B9A50411F85EB5153105541000000206C9A5041713D0AD754105541333333436C9A5041AE47E12A5610554185EB51486C9A5041EC51B85E56105541AE47E17A6C9A5041D7A370DD57105541666666F66C9A5041295C8F725B105541D7A3707D709A50410AD7A3B05A1055415C8FC235759A5041F6285C4F59105541CDCCCC3C799A50413D0AD76358105541E17A14AE7F9A50418FC2F52858105541B81E856B8B9A504114AE4781581055418FC2F598909A5041E17A14EE571055410AD7A380979A50411F85EB015710554133333303A19A50417B14AEC753105541713D0A17A69A504114AE47E1511055411F85EBB1AD9A50415C8FC2555010554148E17AC4AF9A5041A4703D4A50105541B81E85CBB19A50418FC2F5384F105541713D0A67B49A50415C8FC2554E105541F6285CFFB79A5041295C8F524C10554166666636BB9A5041333333C34B105541713D0A37BF9A50419A9999494A10554114AE47F1C29A504152B81EC549105541
+</a>
+
+<b>
+0106000000010000000103000000080000008D00000035160610DA99504192AEB934AA10554150DD4CF7E29950412DA9221CA8105541DB730580EB99504183D81B0CA6105541E7A7E89AF6995041FE16627DA3105541F92739A3029A5041026F8708A11055413F1CFBEC099A50416758788D9F105541A375E12C129A5041D95092889D105541C2E8D8EC149A50415A66A8C39C105541DFF7A4F6189A50419B86499C9B105541E17A143E1C9A504185EB51A8991055415C8FC295239A5041C3F5284C961055415C8FC2F5279A504185EB51B8931055415C8FC2C52A9A504148E17A6492105541E71ED3732C9A504187C0D30A92105541F00485133A9A5041FF06C5338F1055411F85EBC1429A504148E17A648D1055417EE6498B459A50418DC34D478B105541874B2C564A9A50416B5C90A487105541A1E0DDD64B9A5041C65E318086105541ECFDF5094F9A5041CAAB4FBA83105541611B42AF529A5041CB1A7491801055419C258FDF549A5041DB00DCAB7E105541BE33DE74579A50419A783C9E7C1055415951641F589A504135B9AB1C7C10554136607E4B589A50416D5F6D0D7C1055411C9A91E9599A50418110F37B7B105541544C9712649A5041EF3746FB77105541E86FE0C2649A50410048C4BD77105541A7707B8F679A504154322070761055414DA827656A9A50418063431E75105541D35B57E86A9A50418876EDEF741055410440698B719A50413361A9A9721055415A2A276B789A50415DC4D6F96F10554146FA617D7D9A50411AB009C96C105541E17A14EE7F9A5041000000406B105541596EBB51829A5041FF587D356A10554181A5E9F2879A50410D1289C167105541A81104B9899A5041E1EBE0F0661055415128F3EE8C9A5041DC10A65565105541A371F2F38F9A5041133338DD621055411F85EB81919A5041000000F0601055411F85EB31919A504148E17AD45E105541D52115C78E9A50417B9E6BA85D105541BC5A9D8B899A5041E7DAF2805D1055417BA82CD9849A50414B9D56ED5C105541210D0F18849A5041C2A4C2D65C105541E83EB1FD829A50412E1BA5C95C105541883D21DB7A9A504159F5E9685C1055413602EA11789A50416F9DE44A5C105541000000206D9A50417B14AEA75C1055414BF705556C9A5041BE12E1BE5610554108991F2C6C9A5041D610164C5510554162B04A0A6A9A50410EBEB66551105541D2D66F90699A5041A9A4958A4E105541B023BA9C689A5041CB91F6044A1055412BBA8D8A679A50410D320D734610554142A191EE899A5041388F1C5541105541F5F376D5909A5041EAB80206401055410C607D979A9A50410B090E3D3E105541713D0A979B9A5041713D0AD741105541501734A8A39A5041404F403D3F10554139711173AA9A50419773A80C3D105541A6C03BADAF9A5041A286EE553B105541BE089175B69A50415778B7E338105541C7CDE317B39A5041A93AF58233105541729CE3FCB19A5041ED9DC5BE311055419F7CA483B19A504162BF69DA301055410A92F9B0AF9A504108FEB4252D105541AE8DFD3FAE9A504191902A442A105541F6A7BAE3AD9A504137D1F5CA291055416FD64B53AB9A5041A26D966C26105541C02DD1E7AA9A50413D0712B5251055410B1A57BCA69A50415C1667351E1055411D3696EDA49A5041410189071B10554153387819A19A504180ABE1FD15105541FD30CDD69B9A5041BA59D26B0F105541333333C3989A5041000000E00B1055416045CA79969A5041783669CB0810554148F393C7949A5041231DBDA506105541AB411AB0939A50411E907E76051055411B99B71C8F9A504163007C7F0010554157DEABBE889A504148711908FA0F55415C8FC235889A5041D7A3707DF90F5541B81E852B879A5041C3F5281CFA0F5541E3F39865849A5041DCD7B967F60F55414D057C45839A5041D37C1210F50F55412EFD0FBA829A5041E70CF931F50F5541A00B1866829A504114795D48F50F55419AE93744819A5041405C8500F60F554191EA69297B9A5041C8020B85F70F5541481CEBE3739A5041C03ED253F90F554161053CCE6F9A5041C9C1C857FA0F554101A6D69D689A50417F597C28FC0F5541B5C44163629A50412CE2A6BCFD0F554149A8265D5E9A50413E7A63CDFE0F55415376BAAF569A5041B5DAC3D500105541A29CBD8E549A5041FC200F66011055411237D557339A5041EB5956310A105541CBBB0DC8279A504110A38F5D0D105541CB7C7E311E9A50419CEC5C011010554115B0EDB5189A50418CC3CC8311105541B5765385139A5041AC5D91F212105541A6438CF30B9A504170E7A40C15105541FB4A1DCB079A5041137A3634161055412F021804049A5041C46DBB4017105541E0F98585FE995041DFE84DC7181055415C8FC2F5FA99504148E17AC419105541B54E3BC1FA995041317BDF1C1A1055410BD7D31BF99950416A8EFFE11C10554124E36E00F9995041AC01F9411D10554199737746F8995041FF8883BF211055413D232A48F7995041046E77E3271055419B8EC888F69950418EC728632C105541AB08D206F6995041FB4AB7B72F10554131EC8F1CF5995041C2E1D002321055418B1532B7F499504194D07CFB32105541A2A1F493F3995041444E8FA03510554100ED832FF2995041D913AAD737105541A256CA77F09950417B37EC4D3A105541C90E6EBCEE99504195C8AB8B3C1055414C4DB11EEC9950412812196F3F105541A5752E85E899504125D913E24210554178B16B7DE5995041E64707F8451055415AE0A58ADD9950410F99578D4E10554143806DF1DB995041C0FF9DCC501055414A5AD983DC9950415D423CFA56105541116DD8CDDC995041ACA5829F5A10554181F0ECB6D7995041CFFF201C5B105541D19C26CCD49950418C4779635B10554164D106B0D4995041CF890BF15F105541F32ED48AD4995041816532E966105541CD112B67D49950410B769E976D1055418DD80F3FD49950410DF31320751055419CC97317D499504135206E9A7C10554106F9F6AFD39950419A57CAA487105541A2C33C45D3995041AC374A8D901055410756F2D5D2995041FB21E7A9A1105541B15FBE1AD4995041B8EC9E65A7105541B49CB46CD5995041AB39A4E4AA105541A4004D41D6995041221ACBEFAA10554135160610DA99504192AEB934AA10554105000000A4703DEA3A9A5041713D0A371D1055418C5028153B9A5041BF4533101C105541713D0A473C9A5041000000201C1055418FC2F5183C9A5041666666461D105541A4703DEA3A9A5041713D0A371D105541050000007B14AE47389A50418FC2F50815105541E17A147E389A5041333333D313105541CDCCCC9C399A504114AE471114105541EC51B85E399A504100000030151055417B14AE47389A50418FC2F50815105541050000009A9999696C9A5041333333B31E1055419A9999696C9A5041C3F5288C1D105541713D0AA76D9A5041CDCCCC7C1D105541713D0AA76D9A5041AE47E1BA1E1055419A9999696C9A5041333333B31E10554105000000295C8F22749A504185EB51E827105541295C8F22749A5041A4703DAA261055410AD7A360759A50411F85EBB1261055410AD7A360759A5041000000F027105541295C8F22749A504185EB51E827105541050000005C8FC2C59F9A504114AE4771301055411F85EBB19F9A50410AD7A3402F105541000000F0A09A50410AD7A3402F1055413D0AD703A19A5041EC51B87E301055415C8FC2C59F9A504114AE4771301055410500000000000030A09A5041AE47E16A281055419A999929A09A50410AD7A340271055417B14AE67A19A5041A4703D3A271055417B14AE67A19A504114AE47712810554100000030A09A5041AE47E16A2810554105000000B42B2BBA4E9A50415427486E0810554178768424509A504111404B51081055418B97C048509A504120F6E98809105541559FA9C84E9A5041341726AD09105541B42B2BBA4E9A50415427486E08105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312566 - 1743404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBA1099D50411F85EBC1CB125541713D0A07E89C5041D7A370ADB6125541AE47E1EACE9C504152B81EB5D012554133333303C79C5041D7A3704DE212554114AE47B10A9D5041295C8FC20C135541000000400D9D504185EB51E80A1355419A9999C9209D50417B14AEE7FA12554185EB51782B9D504100000020F01255419A9999B9339D5041AE47E12AE6125541B81E857B0A9D5041AE47E14ACC1255411F85EBA1099D50411F85EBC1CB125541
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000014AE47B10A9D5041295C8FC20C135541652A883F029D504147D06F76071355419D378B0BFF9C5041A2370974051355414AED78F8FB9C504169E4488603135541E9C47919F89C5041A2099B180113554102CAAEBEF49C5041C48DDCFDFE125541E7DD1F3FEF9C504196AEDC8AFB1255410AF21DDBEC9C504184E1EE0AFA12554169063492EB9C504167BB983CF912554130ED8937E99C5041E66287C2F71255419B9A9270E79C50411DC41DA5F61255415E24A4E0E49C5041B0F5A109F512554187A18B27E29C504164595354F3125541D731F4BEDE9C504118DCEC30F11255412430102ADD9C5041E724ED32F0125541FEEFDE7ADB9C5041617B6D24EF125541A658247DD99C5041B831A9E4ED12554195875972D69C5041F2781AFCEB125541B79FD9E2D39C50415D05E460EA1255415F41FFB8D19C5041EC957105E91255416B9D1A92CF9C5041637EDAABE71255416E3B0C34CD9C50412273A82FE61255418F7C452ECB9C50416FC5D7EAE4125541D15B7158C99C50411C4B1BC4E31255411A32A78DC79C5041BA9E4BA4E2125541E96B5D18C79C504170C5F86FE21255413217E559C19C50412665E384EF125541AD59DB3DC09C50413ED4DAA0F11255417EAD16C6C39C50412DB7DADAF31255413317E579C79C5041A079912CF61255412E3D97B0C99C5041D2EFF490F7125541638993E5CC9C5041FCADFD93F91255417556DBD7D09C5041CFD5C60DFC1255414E4569C0D39C504160E2DCE0FD12554107202683D99C50411F01057E0113554108E4B126DE9C5041FEB69B6304135541C58918D5DF9C5041A941047505135541A25398D4E39C50418D4F18F707135541F34E3D4DE59C5041FCB460E3081355414728CEECEA9C50414949786A0C135541E6FF292EEF9C50414A44DD150F1355417D775F33F49C504123681F3C121355418EC0D010FC9C5041F2BDD12B17135541085B2B69FE9C50410D9C237815135541CF68C126029D5041F28EEFF1121355414121EEB6069D5041A9F9FFA30F13554114AE47B10A9D5041295C8FC20C135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312566 - 3347215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBA1099D50411F85EBC1CB125541713D0A07E89C5041D7A370ADB6125541AE47E1EACE9C504152B81EB5D012554133333303C79C5041D7A3704DE212554114AE47B10A9D5041295C8FC20C135541000000400D9D504185EB51E80A1355419A9999C9209D50417B14AEE7FA12554185EB51782B9D504100000020F01255419A9999B9339D5041AE47E12AE6125541B81E857B0A9D5041AE47E14ACC1255411F85EBA1099D50411F85EBC1CB125541
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000014AE47B10A9D5041295C8FC20C135541652A883F029D504147D06F76071355419D378B0BFF9C5041A2370974051355414AED78F8FB9C504169E4488603135541E9C47919F89C5041A2099B180113554102CAAEBEF49C5041C48DDCFDFE125541E7DD1F3FEF9C504196AEDC8AFB1255410AF21DDBEC9C504184E1EE0AFA12554169063492EB9C504167BB983CF912554130ED8937E99C5041E66287C2F71255419B9A9270E79C50411DC41DA5F61255415E24A4E0E49C5041B0F5A109F512554187A18B27E29C504164595354F3125541D731F4BEDE9C504118DCEC30F11255412430102ADD9C5041E724ED32F0125541FEEFDE7ADB9C5041617B6D24EF125541A658247DD99C5041B831A9E4ED12554195875972D69C5041F2781AFCEB125541B79FD9E2D39C50415D05E460EA1255415F41FFB8D19C5041EC957105E91255416B9D1A92CF9C5041637EDAABE71255416E3B0C34CD9C50412273A82FE61255418F7C452ECB9C50416FC5D7EAE4125541D15B7158C99C50411C4B1BC4E31255411A32A78DC79C5041BA9E4BA4E2125541E96B5D18C79C504170C5F86FE21255413217E559C19C50412665E384EF125541AD59DB3DC09C50413ED4DAA0F11255417EAD16C6C39C50412DB7DADAF31255413317E579C79C5041A079912CF61255412E3D97B0C99C5041D2EFF490F7125541638993E5CC9C5041FCADFD93F91255417556DBD7D09C5041CFD5C60DFC1255414E4569C0D39C504160E2DCE0FD12554107202683D99C50411F01057E0113554108E4B126DE9C5041FEB69B6304135541C58918D5DF9C5041A941047505135541A25398D4E39C50418D4F18F707135541F34E3D4DE59C5041FCB460E3081355414728CEECEA9C50414949786A0C135541E6FF292EEF9C50414A44DD150F1355417D775F33F49C504123681F3C121355418EC0D010FC9C5041F2BDD12B17135541085B2B69FE9C50410D9C237815135541CF68C126029D5041F28EEFF1121355414121EEB6069D5041A9F9FFA30F13554114AE47B10A9D5041295C8FC20C135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312987 - 1328539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544148E17A74CA015141C3F5289C84CD544152B81E15CE0151415C8FC2E586CD54411F85EBE1CF01514185EB510887CD5441E17A147EE6015141A4703D6A7DCD5441EC51B80ED0015141F6285CEF76CD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000007AAA80469A01514104FE4DAF76CD5441E8F9814CAA015141CE55E5507BCD5441A33DE033AC015141E72EC2DD7BCD5441E811E57EAF015141B7F60F886DCD544103AD5AA4AD015141FF2305FF6CCD54414B6C171FA5015141AA3818896ACD5441DCEC7609A5015141F456D9826ACD54416BB20A8CA40151412AD3A05E6ACD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544196CD9AD699015141C88EF68E76CD54417AAA80469A01514104FE4DAF76CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312987 - 3793702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544148E17A74CA015141C3F5289C84CD544152B81E15CE0151415C8FC2E586CD54411F85EBE1CF01514185EB510887CD5441E17A147EE6015141A4703D6A7DCD5441EC51B80ED0015141F6285CEF76CD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000007AAA80469A01514104FE4DAF76CD5441E8F9814CAA015141CE55E5507BCD5441A33DE033AC015141E72EC2DD7BCD5441E811E57EAF015141B7F60F886DCD544103AD5AA4AD015141FF2305FF6CCD54414B6C171FA5015141AA3818896ACD5441DCEC7609A5015141F456D9826ACD54416BB20A8CA40151412AD3A05E6ACD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544196CD9AD699015141C88EF68E76CD54417AAA80469A01514104FE4DAF76CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>313766 - 242246
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB519808315141F6285CEF53435541D7A3704D05315141A4703D3A6143554148E17A1404315141D7A3708D69435541666666F6023151418FC2F54873435541A4703DAA1F31514148E17A2478435541713D0A8725315141D7A3708D6D435541EC51B89E25315141E17A149E6B435541D7A3706D243151417B14AE7769435541D7A3707D223151417B14AEC767435541B81E857B20315141A4703D6A65435541E17A14FE1E3151413D0AD763624355410AD7A3F01D315141D7A370AD5E435541EC51B8EE1C315141CDCCCC3C59435541CDCCCC7C1C3151413333333356435541000000200E315141713D0A3750435541AE47E16A0A3151413D0AD7435043554185EB519808315141F6285CEF53435541
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009F6548571E3151418A5B7E1760435541EDE7432D1F315141F1B4A2C36243554187774A401F3151411AED42EA6243554194673604203151410594057864435541237567EB20315141C3770CEE654355413245FE2522315141B518A9606743554160921B0D24315141C915C72369435541D7A3706D243151417B14AE7769435541FDF9FE4925315141D60054056B435541EC51B89E25315141E17A149E6B4355415E67189325315141306E41916C435541713D0A8725315141D7A3708D6D435541C09187FA24315141D2EF418B6E4355410EAE796424315141D7A7509A6F4355418354036A23315141ECD2BF5E7143554153A4A6A222315141CC52E0C6724355411CA2D54522315141DE208A6E734355411180CC93203151414283947E76435541495F0F622031514181976DD876435541A4703DAA1F31514148E17A247843554186CB124C1A315141B1DEEB3B77435541642E2E88173151416FCB1EC476435541E23FBE29163151416B4BD08876435541111730090A3151416725697B74435541F23E5A2106315141D0D433D273435541666666F6023151418FC2F54873435541CCCFABD80231514127E3994C744355413A1F4BBD0231514160EA193B75435541D759ED9D0231514101723F4C76435541E17A148E02315141666666D676435541F1552E3102315141A7F0525D784355417DCC0B2E02315141FD0E846A784355413799351F02315141DB16F3A878435541F6285CCF013151418FC2F5F87943554152B81EC5FF305141713D0A877E4355413D0AD7A3083151418FC2F5488143554199CC90F40A315141F5DAEABA80435541000000900C31514185EB515880435541000000100F3151415C8FC23580435541CDCCCC0C12315141B81E852B80435541A4703D0A1B31514185EB5108834355410D4F0C0B1D3151419FCED15E7F435541606309B31E315141243EB2577C435541919C43D31E3151412C6EC71C7C4355414BEFEE2D213151419342FFCE774355413382F3CD22315141481672D674435541000DA7CC263151419108C6886D43554152B81E2527315141713D0AE76C435541C5813597273151411252495267435541F6285CAF273151413D0AD723664355416B52C8142831514173D5254C614355413D0AD77328315141666666B65C4355410BDA1E3D24315141ECD186895B435541882616FC23315141383663775B435541B81E855B22315141333333035B4355410EB039CA2031514196F35F7A5A435541EC51B8EE1C315141CDCCCC3C59435541A19298521D3151410DAD14585B4355410965DCAE1D31514103FE434A5D4355419F6548571E3151418A5B7E1760435541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>313766 - 265644
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB519808315141F6285CEF53435541D7A3704D05315141A4703D3A6143554148E17A1404315141D7A3708D69435541666666F6023151418FC2F54873435541A4703DAA1F31514148E17A2478435541713D0A8725315141D7A3708D6D435541EC51B89E25315141E17A149E6B435541D7A3706D243151417B14AE7769435541D7A3707D223151417B14AEC767435541B81E857B20315141A4703D6A65435541E17A14FE1E3151413D0AD763624355410AD7A3F01D315141D7A370AD5E435541EC51B8EE1C315141CDCCCC3C59435541CDCCCC7C1C3151413333333356435541000000200E315141713D0A3750435541AE47E16A0A3151413D0AD7435043554185EB519808315141F6285CEF53435541
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009F6548571E3151418A5B7E1760435541EDE7432D1F315141F1B4A2C36243554187774A401F3151411AED42EA6243554194673604203151410594057864435541237567EB20315141C3770CEE654355413245FE2522315141B518A9606743554160921B0D24315141C915C72369435541D7A3706D243151417B14AE7769435541FDF9FE4925315141D60054056B435541EC51B89E25315141E17A149E6B4355415E67189325315141306E41916C435541713D0A8725315141D7A3708D6D435541C09187FA24315141D2EF418B6E4355410EAE796424315141D7A7509A6F4355418354036A23315141ECD2BF5E7143554153A4A6A222315141CC52E0C6724355411CA2D54522315141DE208A6E734355411180CC93203151414283947E76435541495F0F622031514181976DD876435541A4703DAA1F31514148E17A247843554186CB124C1A315141B1DEEB3B77435541642E2E88173151416FCB1EC476435541E23FBE29163151416B4BD08876435541111730090A3151416725697B74435541F23E5A2106315141D0D433D273435541666666F6023151418FC2F54873435541CCCFABD80231514127E3994C744355413A1F4BBD0231514160EA193B75435541D759ED9D0231514101723F4C76435541E17A148E02315141666666D676435541F1552E3102315141A7F0525D784355417DCC0B2E02315141FD0E846A784355413799351F02315141DB16F3A878435541F6285CCF013151418FC2F5F87943554152B81EC5FF305141713D0A877E4355413D0AD7A3083151418FC2F5488143554199CC90F40A315141F5DAEABA80435541000000900C31514185EB515880435541000000100F3151415C8FC23580435541CDCCCC0C12315141B81E852B80435541A4703D0A1B31514185EB5108834355410D4F0C0B1D3151419FCED15E7F435541606309B31E315141243EB2577C435541919C43D31E3151412C6EC71C7C4355414BEFEE2D213151419342FFCE774355413382F3CD22315141481672D674435541000DA7CC263151419108C6886D43554152B81E2527315141713D0AE76C435541C5813597273151411252495267435541F6285CAF273151413D0AD723664355416B52C8142831514173D5254C614355413D0AD77328315141666666B65C4355410BDA1E3D24315141ECD186895B435541882616FC23315141383663775B435541B81E855B22315141333333035B4355410EB039CA2031514196F35F7A5A435541EC51B8EE1C315141CDCCCC3C59435541A19298521D3151410DAD14585B4355410965DCAE1D31514103FE434A5D4355419F6548571E3151418A5B7E1760435541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>314252 - 192687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002400000085EB51082CB95041B81E85BB4C2C5541E17A14DE2DB950417B14AE974B2C5541C3F528CC2EB950419A9999594B2C5541CDCCCCCC31B9504114AE47914B2C5541CDCCCC1C34B95041A4703DAA4B2C55416666660636B95041666666A64A2C5541CDCCCCBC37B950419A9999494A2C554185EB51B839B950411F85EB014B2C55419A9999C93AB95041713D0AB74A2C55411F85EB013CB95041000000C0492C55418FC2F5383DB9504114AE47014A2C55411F85EB413FB950419A9999B94A2C554114AE47D141B95041B81E852B4A2C5541B81E858B42B950418FC2F5884A2C55410000006044B950411F85EBE1492C55418FC2F51845B9504148E17A04482C5541713D0AA745B950415C8FC2B5472C5541F6285C4F46B950419A9999D9472C55416666661647B9504100000070472C55415C8FC2B547B95041EC51B85E462C5541713D0A7748B9504185EB51A8432C5541E17A14DE48B950419A999969422C5541295C8FC245B95041F6285C7F3D2C5541A4703DEA3EB950410AD7A3003E2C55417B14AE273EB95041F6285C8F422C55417B14AE173DB95041D7A370CD422C5541B81E859B34B95041C3F5285C432C5541CDCCCCBC2BB95041CDCCCC7C432C5541713D0AC727B950418FC2F508432C5541D7A3707D27B9504152B81E05442C5541713D0AC727B95041295C8F02462C554185EB518827B95041333333A3492C5541713D0AC727B950417B14AEE74A2C55411F85EBA128B9504114AE47514C2C5541000000002AB95041713D0A374D2C554185EB51082CB95041B81E85BB4C2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000450000008FC2F5383DB9504114AE47014A2C5541D0681E593EB95041F8A43B674A2C5541F23CF74E3FB95041408FC5B64A2C5541ABF67FC43FB95041FC6A4A9D4A2C5541604E550540B95041782A3C8F4A2C5541DD9DA95F40B950413CE3A67B4A2C554114AE47D141B95041B81E852B4A2C5541E5ADE88B42B95041EB42D2884A2C554107FEC2A742B950414CE5E37E4A2C554198F7F88F42B950419A948655492C55412F1A4D5F43B950415BF61CA0482C5541B2FD5EB345B95041E788FE8F472C554176D65F6846B95041812654CC472C5541F7D0E2AC46B9504191E7FAA7472C55416296A6C647B950418271EE04442C55410A12BCAC47B95041953DF0CD422C554126C5759748B95041E346E7F9412C5541295C8FC245B95041F6285C7F3D2C554176AAB2EA3EB9504105319B003E2C5541BE33EDE13EB950413B447E323E2C55417B14AE273EB95041F6285C8F422C5541CC8D211D3EB95041F083C491422C55413A39AA1B3EB95041EF341B9A422C5541863530DE3DB950413D2622A0422C55417B14AE173DB95041D7A370CD422C55416B5764F839B95041ABE1F401432C55419CDCF1F138B9504193CAAF1B432C5541709AFCE438B9504184E42EB7432C5541FAB99D2238B950412AED03EB432C5541612409A137B950410D918F42432C55413938221935B9504165157A5C432C55411E4FEE2234B95041CE82986C442C55410266BA2C33B9504176FEAD52442C5541114C3B9132B95041B3996476432C5541E59830612BB95041DFDB5983432C5541F8E9347F27B95041063E5911442C55415EDD308527B950418301C53A442C5541CAB44B8527B95041B0CB7E3B442C554132826B8B27B95041F1B6E265442C5541A1C315E327B95041808E2032462C554179251F9B27B950411FFBD18C482C554185EB518827B95041333333A3492C554100E8099527B95041F6F1FFE4492C5541713D0AC727B950417B14AEE74A2C5541EAF5161128B95041227803624B2C55411F85EBA128B9504114AE47514C2C5541000000002AB95041713D0A374D2C554185EB51082CB95041B81E85BB4C2C554158064F712CB95041BE9AEC784C2C554178D503CC2CB95041A424F9344B2C554139C70CF62DB950410B8F64B34A2C5541AEA76BB82EB95041FDA8E34E4B2C554115A2491630B9504129EBD85B4B2C5541BBAA1E4A30B9504139449A724A2C5541268B7D0C31B95041B30A7A994A2C55412858AAD531B95041705EA7914B2C5541DA7177ED32B950411A68739D4B2C5541F20CF91534B95041FB35A39C4B2C55414C0424E233B9504187C8848C4A2C5541463BD5AA36B95041F0A530BD492C55413755544637B95041E1BFAF584A2C55412D0CD55E37B950418FB17D5D4A2C5541CDCCCCBC37B950419A9999494A2C55412BD819A238B950413A84E09C4A2C554185EB51B839B950411F85EB014B2C55419A9999C93AB95041713D0AB74A2C55411F85EB013CB95041000000C0492C55419B9C30EC3CB95041F7F12AF1492C55418FC2F5383DB9504114AE47014A2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>314252 - 359450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002400000085EB51082CB95041B81E85BB4C2C5541E17A14DE2DB950417B14AE974B2C5541C3F528CC2EB950419A9999594B2C5541CDCCCCCC31B9504114AE47914B2C5541CDCCCC1C34B95041A4703DAA4B2C55416666660636B95041666666A64A2C5541CDCCCCBC37B950419A9999494A2C554185EB51B839B950411F85EB014B2C55419A9999C93AB95041713D0AB74A2C55411F85EB013CB95041000000C0492C55418FC2F5383DB9504114AE47014A2C55411F85EB413FB950419A9999B94A2C554114AE47D141B95041B81E852B4A2C5541B81E858B42B950418FC2F5884A2C55410000006044B950411F85EBE1492C55418FC2F51845B9504148E17A04482C5541713D0AA745B950415C8FC2B5472C5541F6285C4F46B950419A9999D9472C55416666661647B9504100000070472C55415C8FC2B547B95041EC51B85E462C5541713D0A7748B9504185EB51A8432C5541E17A14DE48B950419A999969422C5541295C8FC245B95041F6285C7F3D2C5541A4703DEA3EB950410AD7A3003E2C55417B14AE273EB95041F6285C8F422C55417B14AE173DB95041D7A370CD422C5541B81E859B34B95041C3F5285C432C5541CDCCCCBC2BB95041CDCCCC7C432C5541713D0AC727B950418FC2F508432C5541D7A3707D27B9504152B81E05442C5541713D0AC727B95041295C8F02462C554185EB518827B95041333333A3492C5541713D0AC727B950417B14AEE74A2C55411F85EBA128B9504114AE47514C2C5541000000002AB95041713D0A374D2C554185EB51082CB95041B81E85BB4C2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000450000008FC2F5383DB9504114AE47014A2C5541D0681E593EB95041F8A43B674A2C5541F23CF74E3FB95041408FC5B64A2C5541ABF67FC43FB95041FC6A4A9D4A2C5541604E550540B95041782A3C8F4A2C5541DD9DA95F40B950413CE3A67B4A2C554114AE47D141B95041B81E852B4A2C5541E5ADE88B42B95041EB42D2884A2C554107FEC2A742B950414CE5E37E4A2C554198F7F88F42B950419A948655492C55412F1A4D5F43B950415BF61CA0482C5541B2FD5EB345B95041E788FE8F472C554176D65F6846B95041812654CC472C5541F7D0E2AC46B9504191E7FAA7472C55416296A6C647B950418271EE04442C55410A12BCAC47B95041953DF0CD422C554126C5759748B95041E346E7F9412C5541295C8FC245B95041F6285C7F3D2C554176AAB2EA3EB9504105319B003E2C5541BE33EDE13EB950413B447E323E2C55417B14AE273EB95041F6285C8F422C5541CC8D211D3EB95041F083C491422C55413A39AA1B3EB95041EF341B9A422C5541863530DE3DB950413D2622A0422C55417B14AE173DB95041D7A370CD422C55416B5764F839B95041ABE1F401432C55419CDCF1F138B9504193CAAF1B432C5541709AFCE438B9504184E42EB7432C5541FAB99D2238B950412AED03EB432C5541612409A137B950410D918F42432C55413938221935B9504165157A5C432C55411E4FEE2234B95041CE82986C442C55410266BA2C33B9504176FEAD52442C5541114C3B9132B95041B3996476432C5541E59830612BB95041DFDB5983432C5541F8E9347F27B95041063E5911442C55415EDD308527B950418301C53A442C5541CAB44B8527B95041B0CB7E3B442C554132826B8B27B95041F1B6E265442C5541A1C315E327B95041808E2032462C554179251F9B27B950411FFBD18C482C554185EB518827B95041333333A3492C554100E8099527B95041F6F1FFE4492C5541713D0AC727B950417B14AEE74A2C5541EAF5161128B95041227803624B2C55411F85EBA128B9504114AE47514C2C5541000000002AB95041713D0A374D2C554185EB51082CB95041B81E85BB4C2C554158064F712CB95041BE9AEC784C2C554178D503CC2CB95041A424F9344B2C554139C70CF62DB950410B8F64B34A2C5541AEA76BB82EB95041FDA8E34E4B2C554115A2491630B9504129EBD85B4B2C5541BBAA1E4A30B9504139449A724A2C5541268B7D0C31B95041B30A7A994A2C55412858AAD531B95041705EA7914B2C5541DA7177ED32B950411A68739D4B2C5541F20CF91534B95041FB35A39C4B2C55414C0424E233B9504187C8848C4A2C5541463BD5AA36B95041F0A530BD492C55413755544637B95041E1BFAF584A2C55412D0CD55E37B950418FB17D5D4A2C5541CDCCCCBC37B950419A9999494A2C55412BD819A238B950413A84E09C4A2C554185EB51B839B950411F85EB014B2C55419A9999C93AB95041713D0AB74A2C55411F85EB013CB95041000000C0492C55419B9C30EC3CB95041F7F12AF1492C55418FC2F5383DB9504114AE47014A2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>315463 - 242941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000EC51B82EB32451417B14AE67783955419A999959B824514133333303753955419A999909BB24514166666666733955411F85EBC1B7245141000000B068395541AE47E16AB52451410AD7A380633955410AD7A3E0B1245141295C8FC25E39554152B81EF5AD2451419A9999995B395541666666F6A82451413333337359395541F6285C1FA1245141EC51B80E58395541000000F09B245141EC51B8DE573955411F85EB1197245141F6285C3F58395541E17A14DE8F245141E17A146E5A395541D7A370FD8A245141666666065C395541EC51B82EB32451417B14AE6778395541
+</a>
+
+<b>
+010600000001000000010300000001000000250000009A999909BB2451416666666673395541830E2B26BA245141F0379B7F70395541CE72A26DB92451419F1AEB246E3955415E3BA03AB92451419CE3527E6D3955411401AA0FB824514181A2E9AD69395541C4B5084EB72451416EED37AF67395541C95E642AB7245141311B3E6067395541285F8C27B62451419B8BB1226539554162B779BEB5245141D42EDF39643955417CA8A822B5245141EFD4E21F633955412EBAACF6B3245141C525008E61395541E46920E0B22451414C2AD51860395541D291D6CDB2245141F3F254006039554165695A90B22451414907F6AD5F39554115C6F1F3B124514100046CDC5E3955410D22641AB0245141973A61545D39554152B81EF5AD2451419A9999995B395541666666F6A82451413333337359395541F6285C1FA1245141EC51B80E583955417AEEBADC9B245141BAE736E0573955412276C77C9B2451412BEEA7E757395541CE36C8089B2451419BF3A6F05739554103E1DE9C9A245141BA7005F95739554137F6B4A1992451413A14800C583955411F85EB1197245141F6285C3F583955419553C228942451416893282159395541EEABA9729324514134585658593955411062F5AD92245141D74BF193593955417E7BA641922451418118C3B45939554126F75DB78F245141C955BD7A5A395541D7A370FD8A245141666666065C395541864F68F69F245141B22370D56A3955412BEDB549A3245141EE798B2E6D3955419061AAC2A5245141EAB879ED6E395541EC51B82EB32451417B14AE67783955419A999959B824514133333303753955419A999909BB2451416666666673395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>315463 - 349355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000EC51B82EB32451417B14AE67783955419A999959B824514133333303753955419A999909BB24514166666666733955411F85EBC1B7245141000000B068395541AE47E16AB52451410AD7A380633955410AD7A3E0B1245141295C8FC25E39554152B81EF5AD2451419A9999995B395541666666F6A82451413333337359395541F6285C1FA1245141EC51B80E58395541000000F09B245141EC51B8DE573955411F85EB1197245141F6285C3F58395541E17A14DE8F245141E17A146E5A395541D7A370FD8A245141666666065C395541EC51B82EB32451417B14AE6778395541
+</a>
+
+<b>
+010600000001000000010300000001000000250000009A999909BB2451416666666673395541830E2B26BA245141F0379B7F70395541CE72A26DB92451419F1AEB246E3955415E3BA03AB92451419CE3527E6D3955411401AA0FB824514181A2E9AD69395541C4B5084EB72451416EED37AF67395541C95E642AB7245141311B3E6067395541285F8C27B62451419B8BB1226539554162B779BEB5245141D42EDF39643955417CA8A822B5245141EFD4E21F633955412EBAACF6B3245141C525008E61395541E46920E0B22451414C2AD51860395541D291D6CDB2245141F3F254006039554165695A90B22451414907F6AD5F39554115C6F1F3B124514100046CDC5E3955410D22641AB0245141973A61545D39554152B81EF5AD2451419A9999995B395541666666F6A82451413333337359395541F6285C1FA1245141EC51B80E583955417AEEBADC9B245141BAE736E0573955412276C77C9B2451412BEEA7E757395541CE36C8089B2451419BF3A6F05739554103E1DE9C9A245141BA7005F95739554137F6B4A1992451413A14800C583955411F85EB1197245141F6285C3F583955419553C228942451416893282159395541EEABA9729324514134585658593955411062F5AD92245141D74BF193593955417E7BA641922451418118C3B45939554126F75DB78F245141C955BD7A5A395541D7A370FD8A245141666666065C395541864F68F69F245141B22370D56A3955412BEDB549A3245141EE798B2E6D3955419061AAC2A5245141EAB879ED6E395541EC51B82EB32451417B14AE67783955419A999959B824514133333303753955419A999909BB2451416666666673395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>316209 - 2316364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB51781BE85041295C8FD28F285541B81E85DB20E8504185EB515898285541666666A621E85041713D0AC799285541EC51B87E25E85041713D0A479D285541E17A14BE28E85041AE47E1DAA2285541F6285C0F2CE85041A4703D4AA8285541000000702DE85041CDCCCCBCAC2855419A9999492EE850411F85EB01AE285541F6285CDF2FE85041D7A370DDB0285541A4703D5A31E8504148E17AD4B32855413D0AD7C334E85041EC51B8CEBA285541CDCCCCAC3BE85041EC51B83EB9285541AE47E1EA40E8504166666626B828554185EB51C84AE8504185EB5148B52855411F85EB2150E85041B81E85DBB3285541F6285CDF45E85041C3F528ACA8285541B81E856B35E8504152B81E5594285541AE47E1DA30E85041AE47E17A8E285541E17A144E23E85041666666A682285541D7A3701D1DE8504114AE4731862855413D0AD72317E850418FC2F55886285541F6285CDF15E85041000000E0862855410AD7A3E017E85041AE47E11A8A28554185EB51781BE85041295C8FD28F285541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004F9C2AEC15E850417498ABDA862855419A654C840FE85041D863574589285541D07C38F902E850417D1399038E2855418FC2F518FBE750413210AFDC9028554100000040FCE750419A9999A99D2855417B14AE67FCE750415C8FC285A128554166666626FEE75041A4703D6AA0285541EC51B8CE02E85041AE47E1AA9D2855418FC2F52809E850411F85EB719A2855413333335314E85041AE47E11A9428554185EB51781BE85041295C8FD28F2855414F9C2AEC15E850417498ABDA86285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>316209 - 3433256
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB51781BE85041295C8FD28F285541B81E85DB20E8504185EB515898285541666666A621E85041713D0AC799285541EC51B87E25E85041713D0A479D285541E17A14BE28E85041AE47E1DAA2285541F6285C0F2CE85041A4703D4AA8285541000000702DE85041CDCCCCBCAC2855419A9999492EE850411F85EB01AE285541F6285CDF2FE85041D7A370DDB0285541A4703D5A31E8504148E17AD4B32855413D0AD7C334E85041EC51B8CEBA285541CDCCCCAC3BE85041EC51B83EB9285541AE47E1EA40E8504166666626B828554185EB51C84AE8504185EB5148B52855411F85EB2150E85041B81E85DBB3285541F6285CDF45E85041C3F528ACA8285541B81E856B35E8504152B81E5594285541AE47E1DA30E85041AE47E17A8E285541E17A144E23E85041666666A682285541D7A3701D1DE8504114AE4731862855413D0AD72317E850418FC2F55886285541F6285CDF15E85041000000E0862855410AD7A3E017E85041AE47E11A8A28554185EB51781BE85041295C8FD28F285541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004F9C2AEC15E850417498ABDA862855419A654C840FE85041D863574589285541D07C38F902E850417D1399038E2855418FC2F518FBE750413210AFDC9028554100000040FCE750419A9999A99D2855417B14AE67FCE750415C8FC285A128554166666626FEE75041A4703D6AA0285541EC51B8CE02E85041AE47E1AA9D2855418FC2F52809E850411F85EB719A2855413333335314E85041AE47E11A9428554185EB51781BE85041295C8FD28F2855414F9C2AEC15E850417498ABDA86285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317014 - 3086572
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000010000000A4703D9A97485141F6285C2F92025541333333B38B4851411F85EB11900255413D0AD7038C485141295C8F5285025541666666568348514152B81E458102554148E17A54824851415C8FC2D594025541E17A145E8148514100000090A702554148E17A04834851413D0AD703A90255413D0AD74386485141F6285C7FAB02554152B81E058B485141CDCCCCCCAF0255413D0AD7238D4851415C8FC2C5B40255415C8FC2258F4851411F85EB11BE025541AE47E1EA9048514133333333C3025541EC51B89E944851410AD7A320CA025541713D0AB7944851418FC2F548CA025541295C8F62964851413D0AD7D3A9025541A4703D9A97485141F6285C2F92025541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000DB4D9CA49448514143F77E04CA025541E33553DD95485141A64A9032B202554152B81EB58F485141295C8F02B2025541EC51B82E90485141000000C0A80255419A999999894851413D0AD7A3A8025541F6285C3F87485141713D0AB7AB0255410AD7A35087485141295C8F72AC02554152B81E058B485141CDCCCCCCAF025541F6285CEF8B485141295C8FF2B10255413D0AD7238D4851415C8FC2C5B4025541E96E2CF78D485141C6CB8698B8025541AD4EEBE28E48514157C45ADCBC025541DB3C24868F485141985D4329BF0255413525CC7E90485141379BF1F9C1025541F3E76F71924851415800F20DC60255413343C69593485141D60AEB30C8025541DB4D9CA49448514143F77E04CA025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317292 - 238812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000200000022000000AE47E12AF6475141295C8F0216025541C3F528ECF8475141F6285C3F16025541A4703D1AFA475141C3F5286C16025541F6285CCFFE4751410AD7A320170255410AD7A3A0FF47514152B81E45170255415C8FC2450B485141F6285C9F180255417B14AE9713485141EC51B86E1702554148E17A9413485141AE47E18A16025541F6285CBF16485141000000201602554114AE47A121485141666666D616025541666666E622485141666666E6150255413D0AD7F323485141A4703DDA11025541C3F5289C26485141F6285C8F0C0255415C8FC23514485141B81E851B080255418FC2F5081348514185EB5158FA015541EC51B88E0F48514114AE4791EC0155417B14AE370E4851411F85EB91EF0155411F85EB110C485141B81E85DBF0015541EC51B87E0948514152B81E65F10155419A999999064851410AD7A3A0F20155415C8FC225024851413D0AD793F5015541AE47E10AF74751419A999929FE015541D7A3709DF64751419A999969FD015541E17A143EF147514114AE4721000255419A9999C9EB47514185EB5148030255419A999909E8475141F6285C6F060255418FC2F5F8E647514166666686080255411F85EBC1E6475141E17A146E0A025541A4703D5AE74751410AD7A3E00C0255413D0AD783E84751413D0AD7E30E0255419A9999D9EA47514148E17AD4110255415C8FC225F14751413D0AD783160255410AD7A310F44751411F85EBD115025541AE47E12AF6475141295C8F02160255410C00000014AE47B1F04751415C8FC2650D02554133333343EE475141000000B00D025541CDCCCC0CEC475141CDCCCC3C0C025541C3F5283CEA475141666666E608025541AE47E18AEB47514148E17A4407025541713D0A77ED475141F6285CFF05025541713D0A47EF4751418FC2F59805025541F6285C4FF147514152B81EB50502554133333353F247514148E17AD406025541B81E853BF34751413D0AD78309025541713D0AA7F2475141D7A370CD0B02554114AE47B1F04751415C8FC2650D025541
+</a>
+
+<b>
+0106000000010000000103000000020000002F0000005C8FC23514485141B81E851B0802554162DAB50014485141A37A29AE05025541BC5E79E413485141D38B373D05025541B418A5D712485141F6CEECBCFA015541A2AF664411485141384D5DF6F4015541196992371048514105EF37B6EF015541BFE51F6F0E4851412CFEF27BF001554196BBBCC60B485141AA65312DF1015541BD2F0D030A4851413A0798FCF0015541FF2AB8F0FF475141C9D90510F7015541AD024C6CF6475141EABFDC04FE01554187CB3F6DF547514178354C29FE015541A133E500F4475141383CB1F1FE015541611FB6A7F1475141C4A3642700025541D4AA0600E747514141D8273A0A025541DECD7086E747514120996F1D0D025541EE5919A0E9475141436BEC4310025541A2B83EE0EE475141299572BA14025541EB434D9DEF4751411B4FDF5F150255415C8FC225F14751413D0AD78316025541AF309245F14751415E15437C1602554111052FDDF347514131DB46C715025541B6A6D67CF44751417A9FB2DB15025541AE47E12AF6475141295C8F0216025541C3F528ECF8475141F6285C3F16025541A4703D1AFA475141C3F5286C16025541F6285CCFFE4751410AD7A320170255410AD7A3A0FF47514152B81E45170255415C8FC2450B485141F6285C9F18025541EACFC09B0E4851411DDF362518025541F04BB60D114851411125AFCB170255410FDE0FE81248514127A4D687170255417B14AE9713485141EC51B86E17025541A84BCC9413485141BD1186A11602554148E17A9413485141AE47E18A16025541F6285CBF16485141000000201602554114AE47A121485141666666D6160255419CB01645224851411E707A5D16025541C433159822485141F6EC7B0A16025541CCB37141234851418CA62B5E13025541C0FF9EF7234851410F4D341711025541E4DCC151254851410D7ECDAB0E025541F028FC4426485141167605970C02554123422B4E17485141F5801EEA08025541099318AE14485141F65DB4630802554160EDA2A21448514147C7DD35080255415C8FC23514485141B81E851B0802554109000000CD1A6183EC47514129BCD9A30D02554140C35733EB475141BEA3887009025541112C96C6EC475141EE17E05607025541A1DBA866EF475141DBD10B4A06025541007986C3F14751412906AB1307025541C4AD258DF2475141F5801EEA0802554109BF5AD0F2475141DD64D0530C025541B4217D73F047514128DF432A0E025541CD1A6183EC47514129BCD9A30D025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317299 - 290020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000150000001F85EB11D04751417B14AEF74802554152B81E05D04751417B14AE474B025541C3F5287CD24751411F85EBF14D02554185EB5168D44751415C8FC2455002554100000090DF475141AE47E1FA4D025541713D0A97EE47514148E17A944B02554152B81E15F94751411F85EB814C0255417B14AE57F7475141C3F528CC45025541CDCCCC3CF6475141F6285C5F41025541F6285CDFF34751418FC2F5D83C0255411F85EB41F1475141666666C63802554114AE4771EE475141B81E859B350255410AD7A3A0EB475141295C8FF233025541713D0A77E94751415C8FC2E53302554185EB5158E6475141C3F5283C34025541E17A140EE3475141713D0AA735025541AE47E1AADE475141295C8F223802554148E17A04D947514114AE47613C02554133333343D7475141295C8F023F0255418FC2F588D247514152B81E25450255411F85EB11D04751417B14AEF748025541
+</a>
+
+<b>
+0106000000010000000103000000010000002400000000000090DF475141AE47E1FA4D025541822B36CDEC475141DA3699DD4B025541484421B3ED475141F5234BB34B025541814A81DAED475141D92397B24B025541713D0A97EE47514148E17A944B02554152B81E15F94751411F85EB814C0255417FC5A4B9F74751413377F04547025541CECD977CF54751415B4B9BEF3F0255411F36654FF54751419E0E21993F0255411122647CF4475141522469053E025541ACCE1A3AF4475141896795863D0255413091A553F2475141B703B1703A025541DF300EDAF1475141E67054B3390255412A02D87CF147514153662A22390255413E12C862F14751414BC893F93802554114AE4771EE475141B81E859B350255414D49F696EB475141551356F233025541AB0E5151EB475141CAD6B9F0330255419D68401DEB47514184A985EF33025541DED73741E947514132EFAB0F340255412BAA176DE6475141AF66D7AA34025541B79B1FD4E0475141BE3987E93602554183BD3FBCE0475141C26409F736025541D571E556E04751413D1E623037025541D2D74736E0475141316CD64237025541DC64F7B0DE47514155D0552A39025541ABF983F9D9475141FCD7DB8C3C0255412C3DA2E3D8475141793FAA8E3D02554183ED2F7CD8475141AA0648913E025541D6AE66DED6475141A4F59EC73F02554128709D40D547514182FB0568420255412307B008D04751414297ADA24A0255416EC02708D0475141815D4CBB4A025541584D45F4D3475141FD6D43B94F02554185EB5168D44751415C8FC2455002554100000090DF475141AE47E1FA4D025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318592 - 247559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000600000005C8FC2756248514148E17A2419C55441B81E850B624851417B14AEE71BC55441A4703DFA61485141295C8F021FC554413D0AD763624851413333335322C55441000000E064485141E17A141E22C554416666664665485141000000F024C55441A4703DBA674851417B14AEE720C55441EC51B87E69485141F6285C3F1EC554419A9999196B4851411F85EB611BC55441C3F5284C6C485141713D0A6717C5544148E17A446D48514152B81EF50DC55441A4703D4A6E485141A4703D3A0AC554419A999919704851413D0AD74307C55441A4703D0A754851411F85EB4101C55441EC51B82E7A4851417B14AE37FCC454415C8FC2C584485141D7A370FDF3C4544114AE47F17D4851419A9999C9EDC45441D7A3706D794851415C8FC2D5EDC45441AE47E17A7148514148E17A94ECC454413D0AD7736F485141F6285CCFEBC45441666666266D485141713D0A17EAC45441713D0A476848514148E17AA4E4C45441E17A14DE65485141713D0AD7E2C45441AE47E17A62485141EC51B80EE1C45441666666C660485141CDCCCC3CE0C454418FC2F5685F4851418FC2F548DFC45441D7A3709D5E485141F6285C3FDDC454418FC2F5A85E485141A4703D1ADCC45441D7A3709D5E485141C3F5287CDAC45441D7A370AD5E485141AE47E12AD9C45441D7A3701D5E485141A4703D4AD8C45441CDCCCCDC5D4851419A999969D7C45441D7A3705D5E48514185EB5188D6C45441E17A144E5F48514185EB5138D6C45441F6285C4F6048514185EB5178D6C4544114AE47F16148514152B81E55D3C45441295C8F6263485141333333E3D0C45441000000D064485141AE47E12ACFC45441295C8FC26B4851411F85EB41C9C454413D0AD7F36D4851411F85EB41C7C45441CDCCCC2C6E485141713D0AF7C4C45441CDCCCCBC6D4851415C8FC295C3C45441B81E855B6C48514148E17A94C2C4544148E17A946A4851411F85EB71C2C45441666666766748514152B81EF5C2C45441295C8FB2634851415C8FC265C3C454410AD7A350614851415C8FC2E5C3C45441EC51B86E5F48514166666646C4C45441C3F528CC5C48514166666646C4C45441A4703D1A5B48514166666676C4C454418FC2F5B8594851417B14AE87C5C45441713D0A07584851418FC2F5B8C6C454415C8FC2C5564851419A999979C7C4544152B81EB5554851418FC2F5E8C6C4544114AE474152485141713D0A27C5C45441EC51B87E4F48514166666636C4C45441C3F5283C4D48514152B81E25C3C454419A9999494A4851413D0AD7A3C1C45441713D0AF7474851411F85EB01C0C4544152B81ED545485141EC51B8BEBCC454413D0AD75344485141B81E857BB9C45441295C8F224348514185EB5158B6C454411F85EB6142485141666666E6B3C45441C3F5281C424851415C8FC225B2C454411F85EB814048514152B81EB5B2C454419A999939394851419A999989B5C45441D7A3708D38485141CDCCCCCCB5C454418FC2F55839485141A4703DBAB7C45441A4703D2A3B485141EC51B87EBCC45441B81E851B3C4851410AD7A370BEC45441D7A3700D3E48514133333313C1C45441EC51B85E3F48514152B81EE5C2C45441F6285C0F40485141713D0AC7C4C4544152B81E154048514133333393C5C45441F6285CFF4148514152B81E25C8C45441C3F5287C4448514152B81E65CAC454418FC2F52849485141EC51B86ECCC45441295C8FA24E4851415C8FC2D5D3C454415C8FC2C564485141F6285C1FF2C454411F85EB9165485141333333C3F3C45441B81E850B66485141E17A144EF5C454418FC2F53866485141713D0AF7F6C45441333333A366485141A4703D1AF9C45441F6285CEF6648514100000000FBC45441F6285CEF66485141A4703D9AFCC4544148E17A846648514133333373FFC45441E17A146E67485141CDCCCC0CFFC454415C8FC21567485141B81E85FB00C554410AD7A3E0664851415C8FC26503C55441B81E85AB66485141666666B606C554410000003066485141B81E853B0AC554415C8FC2C5654851415C8FC2450FC55441F6285C7F654851413D0AD78312C55441295C8F52644851418FC2F55815C55441E17A14CE6248514152B81ED517C554415C8FC2756248514148E17A2419C55441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000654544AF684851411DA30119E5C454413CE0219C664851418729C095E3C45441D23F1D305F4851413BB23B78E3C45441210EC0EF5A48514190FC55AAE4C45441D2D7EF1760485141CBD38DB8EBC45441F58905E460485141A3F6C5CFECC454415C8FC2C564485141F6285C1FF2C454411F85EB9165485141333333C3F3C45441B81E850B66485141E17A144EF5C4544162990C326648514132D968B6F6C45441F7DE907167485141C6B53475FBC454413080B049674851415473F5C4FBC454410B04D9DE6A48514121280F1FF9C4544122D43DE56C485141DE62FDA4F1C45441E97A55CA6C4851414CF81BB0E9C45441654544AF684851411DA30119E5C45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318592 - 328830
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000600000005C8FC2756248514148E17A2419C55441B81E850B624851417B14AEE71BC55441A4703DFA61485141295C8F021FC554413D0AD763624851413333335322C55441000000E064485141E17A141E22C554416666664665485141000000F024C55441A4703DBA674851417B14AEE720C55441EC51B87E69485141F6285C3F1EC554419A9999196B4851411F85EB611BC55441C3F5284C6C485141713D0A6717C5544148E17A446D48514152B81EF50DC55441A4703D4A6E485141A4703D3A0AC554419A999919704851413D0AD74307C55441A4703D0A754851411F85EB4101C55441EC51B82E7A4851417B14AE37FCC454415C8FC2C584485141D7A370FDF3C4544114AE47F17D4851419A9999C9EDC45441D7A3706D794851415C8FC2D5EDC45441AE47E17A7148514148E17A94ECC454413D0AD7736F485141F6285CCFEBC45441666666266D485141713D0A17EAC45441713D0A476848514148E17AA4E4C45441E17A14DE65485141713D0AD7E2C45441AE47E17A62485141EC51B80EE1C45441666666C660485141CDCCCC3CE0C454418FC2F5685F4851418FC2F548DFC45441D7A3709D5E485141F6285C3FDDC454418FC2F5A85E485141A4703D1ADCC45441D7A3709D5E485141C3F5287CDAC45441D7A370AD5E485141AE47E12AD9C45441D7A3701D5E485141A4703D4AD8C45441CDCCCCDC5D4851419A999969D7C45441D7A3705D5E48514185EB5188D6C45441E17A144E5F48514185EB5138D6C45441F6285C4F6048514185EB5178D6C4544114AE47F16148514152B81E55D3C45441295C8F6263485141333333E3D0C45441000000D064485141AE47E12ACFC45441295C8FC26B4851411F85EB41C9C454413D0AD7F36D4851411F85EB41C7C45441CDCCCC2C6E485141713D0AF7C4C45441CDCCCCBC6D4851415C8FC295C3C45441B81E855B6C48514148E17A94C2C4544148E17A946A4851411F85EB71C2C45441666666766748514152B81EF5C2C45441295C8FB2634851415C8FC265C3C454410AD7A350614851415C8FC2E5C3C45441EC51B86E5F48514166666646C4C45441C3F528CC5C48514166666646C4C45441A4703D1A5B48514166666676C4C454418FC2F5B8594851417B14AE87C5C45441713D0A07584851418FC2F5B8C6C454415C8FC2C5564851419A999979C7C4544152B81EB5554851418FC2F5E8C6C4544114AE474152485141713D0A27C5C45441EC51B87E4F48514166666636C4C45441C3F5283C4D48514152B81E25C3C454419A9999494A4851413D0AD7A3C1C45441713D0AF7474851411F85EB01C0C4544152B81ED545485141EC51B8BEBCC454413D0AD75344485141B81E857BB9C45441295C8F224348514185EB5158B6C454411F85EB6142485141666666E6B3C45441C3F5281C424851415C8FC225B2C454411F85EB814048514152B81EB5B2C454419A999939394851419A999989B5C45441D7A3708D38485141CDCCCCCCB5C454418FC2F55839485141A4703DBAB7C45441A4703D2A3B485141EC51B87EBCC45441B81E851B3C4851410AD7A370BEC45441D7A3700D3E48514133333313C1C45441EC51B85E3F48514152B81EE5C2C45441F6285C0F40485141713D0AC7C4C4544152B81E154048514133333393C5C45441F6285CFF4148514152B81E25C8C45441C3F5287C4448514152B81E65CAC454418FC2F52849485141EC51B86ECCC45441295C8FA24E4851415C8FC2D5D3C454415C8FC2C564485141F6285C1FF2C454411F85EB9165485141333333C3F3C45441B81E850B66485141E17A144EF5C454418FC2F53866485141713D0AF7F6C45441333333A366485141A4703D1AF9C45441F6285CEF6648514100000000FBC45441F6285CEF66485141A4703D9AFCC4544148E17A846648514133333373FFC45441E17A146E67485141CDCCCC0CFFC454415C8FC21567485141B81E85FB00C554410AD7A3E0664851415C8FC26503C55441B81E85AB66485141666666B606C554410000003066485141B81E853B0AC554415C8FC2C5654851415C8FC2450FC55441F6285C7F654851413D0AD78312C55441295C8F52644851418FC2F55815C55441E17A14CE6248514152B81ED517C554415C8FC2756248514148E17A2419C55441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000654544AF684851411DA30119E5C454413CE0219C664851418729C095E3C45441D23F1D305F4851413BB23B78E3C45441210EC0EF5A48514190FC55AAE4C45441D2D7EF1760485141CBD38DB8EBC45441F58905E460485141A3F6C5CFECC454415C8FC2C564485141F6285C1FF2C454411F85EB9165485141333333C3F3C45441B81E850B66485141E17A144EF5C4544162990C326648514132D968B6F6C45441F7DE907167485141C6B53475FBC454413080B049674851415473F5C4FBC454410B04D9DE6A48514121280F1FF9C4544122D43DE56C485141DE62FDA4F1C45441E97A55CA6C4851414CF81BB0E9C45441654544AF684851411DA30119E5C45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318745 - 102751
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003F000000D7A3704D2146514152B81E5508C15441D7A3706D214651411F85EBE108C15441B81E85FB224651419A9999F90CC15441666666462546514152B81EA50CC154410AD7A3803046514148E17A540DC154417B14AE373D465141666666160EC15441EC51B8DE474651411F85EBF10EC154413D0AD72351465141D7A3707D0FC1544166666636534651417B14AE870FC15441F6285C1F544651413D0AD7E30EC1544185EB5108554651411F85EB910DC15441AE47E12A564651418FC2F5A80BC15441CDCCCCFC56465141333333330AC154417B14AEF754465141B81E85BB09C1544114AE4721554651419A9999F908C15441EC51B88E564651419A9999C906C1544148E17AD454465141295C8FE205C154417B14AE37544651413333338305C15441333333635246514148E17AD404C1544166666606514651413333335304C15441E17A148E4F4651413D0AD7A303C154410AD7A3F04D46514185EB518803C15441A4703D1A4C465141B81E856B03C15441713D0A4748465141EC51B83E04C15441D7A3709D4546514152B81EF504C15441713D0A2744465141EC51B82E05C154413D0AD763424651411F85EB1105C154410AD7A390414651411F85EBE104C154410AD7A3404046514152B81E6504C154413D0AD7333F465141B81E852B04C154413D0AD7433E46514185EB51E803C15441000000403D465141E17A14EE02C15441666666463C4651417B14AEF702C15441333333133B4651417B14AE9702C15441CDCCCC6C3946514114AE471102C15441333333433846514114AE47E101C154413333339336465141E17A144E00C15441D7A370CD35465141D7A370BDFFC054416666667633465141AE47E17AFFC05441CDCCCC2C314651417B14AEA7FEC05441333333432F46514114AE4751FEC05441666666362E465141E17A140EFEC05441000000E02D465141AE47E1CAFDC054419A9999D92B465141E17A14AEFDC05441666666062B4651417B14AEB7FDC05441666666162A465141AE47E19AFDC0544166666686294651417B14AE57FDC05441000000D0254651417B14AE57FDC054410000001025465141AE47E16AFDC05441333333632446514148E17AD4FDC054419A9999292446514148E17A94FEC05441CDCCCC7C2346514114AE4771FFC05441333333B322465141AE47E13A00C15441333333232246514114AE472101C15441666666A62146514148E17A5402C15441CDCCCC6C214651417B14AEC702C15441CDCCCC0C214651417B14AE2703C1544133333303214651411F85EB2104C154419A9999F92046514185EB510805C154410000005020465141A4703D4A05C15441F6285C6F20465141000000C005C15441D7A370DD204651413D0AD70307C15441D7A3704D2146514152B81E5508C15441
+</a>
+
+<b>
+010600000001000000010300000001000000850000005E17DB582046514158997E6B05C154410CD11BEA2046514178A2FD2907C15441D7A3704D2146514152B81E5508C15441329B196421465141B6F8D2B808C15441011D017E21465141A3BC830D09C154418441619D214651413FFE166009C15441CA8EAAFA214651412E969A550AC154410EBF1B4E22465141D0A935310BC15441E4CA4F8C224651411017EBD40BC15441FD8221A1224651412005B60B0CC154411406E7F1224651413DC649E00CC1544119F4EF0F234651417070D4E60CC15441D705D1ED2346514132D4B8D60CC15441580F0A9924465141742A13BE0CC15441666666462546514152B81EA50CC154416A11B67029465141D0362DE60CC15441A72592732A4651413F4AF8F50CC15441E0F4CDE12C46514109D4EE1B0DC1544102A5FC7B2D46514195F856250DC15441A99CDD8D33465141E59105830DC15441370D1D3734465141BCD01A8D0DC15441808FAA2A37465141EAF51DBA0DC154412C3A840839465141ABC995D60DC154417B14AE373D465141666666160EC15441F461851D44465141E2BC8BA40EC1544128BAEE5347465141B379BFE60EC15441174A455F4D465141F031BB440FC15441C83D406850465141084B69720FC15441A232761F534651417F4035870FC1544197659B2454465141C89B3ADC0EC15441FC7179395446514101B4F5BD0EC15441A5D8F455544651415C2AA5940EC1544183049C89544651412E4DB8490EC154416ADDA342554651418D1EC72F0DC15441ACA11ECD55465141D8E1BD460CC15441B0164804564651413705EAE90BC154410DEEDCE0564651417A04F1640AC1544112AA2FC355465141A05B9EEA09C15441E58CD3F3544651419731ACCD09C15441CBBB28F95446514101C1DCBB09C154417B14AEF754465141B81E85BB09C1544114AE4721554651419A9999F908C154411AD39F42554651416CD180C608C1544189A556DD55465141D4DC21B707C154413BFC7780564651413C4E70DF06C154411F91002B56465141921A819506C1544142D00F5455465141DA73362506C15441BE40B98753465141E4B1934105C154419028BC545246514168601ECF04C1544166666606514651413333335304C154419551D9855046514110044C1704C15441AF45E6A34F46514172F101AE03C154416ED5DCD54E46514134EE939703C15441663941484D4651414ABD027E03C15441582B054D4C4651419405A16E03C15441921ECC7A4B46514116DBE88D03C15441C77FE6164A4651414EF3ABDA03C15441663AEADB494651411DDF64E703C1544135034150494651417659840504C1544134396B3949465141B634710A04C1544187EB05B64746514143FF866504C15441A0B82F6047465141A46A7F7C04C15441EF5D9AA046465141CD3AC4AF04C15441D7A3709D4546514152B81EF504C15441527642DF44465141B5E6601205C15441713D0A2744465141EC51B82E05C15441EF6F31E14346514101FE422A05C15441C113E149434651410A9F904705C15441CABF3794424651418E08021505C154413D0AD763424651411F85EB1105C154410AD7A390414651411F85EBE104C15441424EAF7441465141F26089D704C1544166DE26AD404651411AA56C8D04C15441E7D4009240465141E433578304C154411340D67E4046514113C2387C04C1544193D3AC3E3F465141BB80D72D04C154413D0AD7333F465141B81E852B04C15441C384702A3F465141494BE32804C154413D0AD7433E46514185EB51E803C15441C4FC45B53D465141DE47055F03C154412CE077773D465141CBBA7F2303C154417D043E553D465141E195890203C15441DAD70B6C3C4651414BCD7B0503C15441543BE02D3B465141012704A002C15441333333133B4651417B14AE9702C15441FFF716BE39465141E918252B02C15441DDA0305838465141AB5CAAE401C15441333333433846514114AE47E101C15441F7B7DB2737465141BBE5D3D800C15441C2F1A5E436465141B72C199A00C154411C5C1DD83546514109543FC5FFC05441C2E1A07F354651415E55CBB4FFC054418E1EA2F5344651413D2376A5FFC054416666667633465141AE47E17AFFC05441AE6AC3F0324651417AE4AE4AFFC054415DD5C24332465141D3226C6DFFC05441DD75787C3146514155E469C4FEC054415E4C508E304651410E3AB68BFEC0544120600A9F2F465141FEB57C61FEC0544106FBC6AA2E4651415ECB1661FEC0544168797D382E465141A73F9A0EFEC05441666666362E465141E17A140EFEC054416D4BCD242E46514156826400FEC054416FBB2D792D4651418BEE2AC5FDC054413D639F332D465141AE61EB1AFEC054418BA5CA8A2B465141F685A9B1FDC05441666666062B4651417B14AEB7FDC05441666666162A465141AE47E19AFDC054415033C5002A465141E740C990FDC0544191E0FAA729465141F8C45967FDC054418343F7CE284651417B14AE57FDC0544173D5DD64274651417B14AE57FDC054419990BF4D264651417B14AE57FDC05441499BCD4D25465141901EB364FDC0544112350BB22446514178354CA4FDC05441222CD15B24465141CBF816EDFDC054419A9999292446514148E17A94FEC05441CDCCCC7C2346514114AE4771FFC05441DE5E0E6D23465141041C0681FFC05441AB698DAC22465141C623844500C1544182A89C9A22465141038C386200C15441D1CBE69422465141AF865B6B00C154418E1031342246514185E5170601C1544193DF83AF214651410CF20A3E02C15441666666A62146514148E17A5402C15441CDCCCC6C214651417B14AEC702C1544160B1C66121465141E82FB4D202C1544193531C1A21465141B58D5E1A03C1544170012C09214651419BA7408603C1544133333303214651411F85EB2104C154419A9999F92046514185EB510805C154419C451AE920465141A470BB0E05C154415E17DB582046514158997E6B05C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318745 - 304245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003F000000D7A3704D2146514152B81E5508C15441D7A3706D214651411F85EBE108C15441B81E85FB224651419A9999F90CC15441666666462546514152B81EA50CC154410AD7A3803046514148E17A540DC154417B14AE373D465141666666160EC15441EC51B8DE474651411F85EBF10EC154413D0AD72351465141D7A3707D0FC1544166666636534651417B14AE870FC15441F6285C1F544651413D0AD7E30EC1544185EB5108554651411F85EB910DC15441AE47E12A564651418FC2F5A80BC15441CDCCCCFC56465141333333330AC154417B14AEF754465141B81E85BB09C1544114AE4721554651419A9999F908C15441EC51B88E564651419A9999C906C1544148E17AD454465141295C8FE205C154417B14AE37544651413333338305C15441333333635246514148E17AD404C1544166666606514651413333335304C15441E17A148E4F4651413D0AD7A303C154410AD7A3F04D46514185EB518803C15441A4703D1A4C465141B81E856B03C15441713D0A4748465141EC51B83E04C15441D7A3709D4546514152B81EF504C15441713D0A2744465141EC51B82E05C154413D0AD763424651411F85EB1105C154410AD7A390414651411F85EBE104C154410AD7A3404046514152B81E6504C154413D0AD7333F465141B81E852B04C154413D0AD7433E46514185EB51E803C15441000000403D465141E17A14EE02C15441666666463C4651417B14AEF702C15441333333133B4651417B14AE9702C15441CDCCCC6C3946514114AE471102C15441333333433846514114AE47E101C154413333339336465141E17A144E00C15441D7A370CD35465141D7A370BDFFC054416666667633465141AE47E17AFFC05441CDCCCC2C314651417B14AEA7FEC05441333333432F46514114AE4751FEC05441666666362E465141E17A140EFEC05441000000E02D465141AE47E1CAFDC054419A9999D92B465141E17A14AEFDC05441666666062B4651417B14AEB7FDC05441666666162A465141AE47E19AFDC0544166666686294651417B14AE57FDC05441000000D0254651417B14AE57FDC054410000001025465141AE47E16AFDC05441333333632446514148E17AD4FDC054419A9999292446514148E17A94FEC05441CDCCCC7C2346514114AE4771FFC05441333333B322465141AE47E13A00C15441333333232246514114AE472101C15441666666A62146514148E17A5402C15441CDCCCC6C214651417B14AEC702C15441CDCCCC0C214651417B14AE2703C1544133333303214651411F85EB2104C154419A9999F92046514185EB510805C154410000005020465141A4703D4A05C15441F6285C6F20465141000000C005C15441D7A370DD204651413D0AD70307C15441D7A3704D2146514152B81E5508C15441
+</a>
+
+<b>
+010600000001000000010300000001000000850000005E17DB582046514158997E6B05C154410CD11BEA2046514178A2FD2907C15441D7A3704D2146514152B81E5508C15441329B196421465141B6F8D2B808C15441011D017E21465141A3BC830D09C154418441619D214651413FFE166009C15441CA8EAAFA214651412E969A550AC154410EBF1B4E22465141D0A935310BC15441E4CA4F8C224651411017EBD40BC15441FD8221A1224651412005B60B0CC154411406E7F1224651413DC649E00CC1544119F4EF0F234651417070D4E60CC15441D705D1ED2346514132D4B8D60CC15441580F0A9924465141742A13BE0CC15441666666462546514152B81EA50CC154416A11B67029465141D0362DE60CC15441A72592732A4651413F4AF8F50CC15441E0F4CDE12C46514109D4EE1B0DC1544102A5FC7B2D46514195F856250DC15441A99CDD8D33465141E59105830DC15441370D1D3734465141BCD01A8D0DC15441808FAA2A37465141EAF51DBA0DC154412C3A840839465141ABC995D60DC154417B14AE373D465141666666160EC15441F461851D44465141E2BC8BA40EC1544128BAEE5347465141B379BFE60EC15441174A455F4D465141F031BB440FC15441C83D406850465141084B69720FC15441A232761F534651417F4035870FC1544197659B2454465141C89B3ADC0EC15441FC7179395446514101B4F5BD0EC15441A5D8F455544651415C2AA5940EC1544183049C89544651412E4DB8490EC154416ADDA342554651418D1EC72F0DC15441ACA11ECD55465141D8E1BD460CC15441B0164804564651413705EAE90BC154410DEEDCE0564651417A04F1640AC1544112AA2FC355465141A05B9EEA09C15441E58CD3F3544651419731ACCD09C15441CBBB28F95446514101C1DCBB09C154417B14AEF754465141B81E85BB09C1544114AE4721554651419A9999F908C154411AD39F42554651416CD180C608C1544189A556DD55465141D4DC21B707C154413BFC7780564651413C4E70DF06C154411F91002B56465141921A819506C1544142D00F5455465141DA73362506C15441BE40B98753465141E4B1934105C154419028BC545246514168601ECF04C1544166666606514651413333335304C154419551D9855046514110044C1704C15441AF45E6A34F46514172F101AE03C154416ED5DCD54E46514134EE939703C15441663941484D4651414ABD027E03C15441582B054D4C4651419405A16E03C15441921ECC7A4B46514116DBE88D03C15441C77FE6164A4651414EF3ABDA03C15441663AEADB494651411DDF64E703C1544135034150494651417659840504C1544134396B3949465141B634710A04C1544187EB05B64746514143FF866504C15441A0B82F6047465141A46A7F7C04C15441EF5D9AA046465141CD3AC4AF04C15441D7A3709D4546514152B81EF504C15441527642DF44465141B5E6601205C15441713D0A2744465141EC51B82E05C15441EF6F31E14346514101FE422A05C15441C113E149434651410A9F904705C15441CABF3794424651418E08021505C154413D0AD763424651411F85EB1105C154410AD7A390414651411F85EBE104C15441424EAF7441465141F26089D704C1544166DE26AD404651411AA56C8D04C15441E7D4009240465141E433578304C154411340D67E4046514113C2387C04C1544193D3AC3E3F465141BB80D72D04C154413D0AD7333F465141B81E852B04C15441C384702A3F465141494BE32804C154413D0AD7433E46514185EB51E803C15441C4FC45B53D465141DE47055F03C154412CE077773D465141CBBA7F2303C154417D043E553D465141E195890203C15441DAD70B6C3C4651414BCD7B0503C15441543BE02D3B465141012704A002C15441333333133B4651417B14AE9702C15441FFF716BE39465141E918252B02C15441DDA0305838465141AB5CAAE401C15441333333433846514114AE47E101C15441F7B7DB2737465141BBE5D3D800C15441C2F1A5E436465141B72C199A00C154411C5C1DD83546514109543FC5FFC05441C2E1A07F354651415E55CBB4FFC054418E1EA2F5344651413D2376A5FFC054416666667633465141AE47E17AFFC05441AE6AC3F0324651417AE4AE4AFFC054415DD5C24332465141D3226C6DFFC05441DD75787C3146514155E469C4FEC054415E4C508E304651410E3AB68BFEC0544120600A9F2F465141FEB57C61FEC0544106FBC6AA2E4651415ECB1661FEC0544168797D382E465141A73F9A0EFEC05441666666362E465141E17A140EFEC054416D4BCD242E46514156826400FEC054416FBB2D792D4651418BEE2AC5FDC054413D639F332D465141AE61EB1AFEC054418BA5CA8A2B465141F685A9B1FDC05441666666062B4651417B14AEB7FDC05441666666162A465141AE47E19AFDC054415033C5002A465141E740C990FDC0544191E0FAA729465141F8C45967FDC054418343F7CE284651417B14AE57FDC0544173D5DD64274651417B14AE57FDC054419990BF4D264651417B14AE57FDC05441499BCD4D25465141901EB364FDC0544112350BB22446514178354CA4FDC05441222CD15B24465141CBF816EDFDC054419A9999292446514148E17A94FEC05441CDCCCC7C2346514114AE4771FFC05441DE5E0E6D23465141041C0681FFC05441AB698DAC22465141C623844500C1544182A89C9A22465141038C386200C15441D1CBE69422465141AF865B6B00C154418E1031342246514185E5170601C1544193DF83AF214651410CF20A3E02C15441666666A62146514148E17A5402C15441CDCCCC6C214651417B14AEC702C1544160B1C66121465141E82FB4D202C1544193531C1A21465141B58D5E1A03C1544170012C09214651419BA7408603C1544133333303214651411F85EB2104C154419A9999F92046514185EB510805C154419C451AE920465141A470BB0E05C154415E17DB582046514158997E6B05C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318747 - 58337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000840000001F85EBA1A64551411F85EBC14EC15441295C8F42A6455141A4703DEA4FC154413D0AD7C3A5455141713D0A4751C154410AD7A390A44551410AD7A34053C154410AD7A3A0C0455141000000404FC154417B14AE47C9455141000000404DC1544185EB51E8D1455141EC51B8CE4AC15441D7A3708DD745514114AE47A148C154413D0AD753DD455141713D0AE745C154413D0AD7D3E24551411F85EB1142C154417B14AE07E7455141E17A148E3EC154411F85EB31ED455141C3F5286C38C1544100000090F2455141C3F5286C33C1544133333313F745514148E17AA430C15441713D0AA7FD455141713D0A372CC154415C8FC2C5014651415C8FC2E529C154415C8FC235054651418FC2F58826C15441C3F5289C0746514114AE476123C1544152B81EC50946514114AE47A11FC15441295C8FF2074651419A9999F91CC154419A99994908465141713D0A171BC15441CDCCCCCC0A4651413D0AD7A319C154419A9999890C4651411F85EB6118C1544148E17A940E465141AE47E14A16C15441295C8F620B46514148E17A2413C15441F6285CDF0A46514185EB519812C15441E17A14CE084651415C8FC2D513C154410000003007465141713D0AE714C154413D0AD7530546514114AE47B116C15441D7A370BD044651413333337317C15441A4703D6A0246514152B81E4519C154419A9999D900465141F6285CFF1AC1544133333393FF455141F6285CAF1CC15441CDCCCC4CFF455141CDCCCC3C1DC1544152B81EA5FE455141666666A61DC154410AD7A370FD455141D7A3704D1FC15441A4703D3AFC4551417B14AE5720C1544166666666FB4551415C8FC2E523C1544185EB5188FA45514185EB515825C1544185EB5118F8455141F6285C1F27C154417B14AE37F3455141295C8FA22AC15441295C8F72F0455141A4703DEA2BC154410AD7A300EF455141F6285CCF2EC15441E17A146EED455141F6285C5F31C1544100000090EC455141B81E853B33C1544114AE47F1EB4551417B14AED734C15441295C8F72EB4551415C8FC2D535C1544114AE47A1E94551413333331337C15441A4703D9AE7455141B81E855B38C15441C3F528DCE6455141F6285CCF38C1544133333313E64551417B14AEF739C1544152B81EF5E44551415C8FC2153BC15441713D0A17E44551418FC2F5083CC154413D0AD743E3455141713D0AC73CC15441666666E6E14551415C8FC2A53DC154417B14AE47E145514148E17A243EC1544166666656DF455141EC51B86E3EC1544114AE4791DC45514185EB51B83EC154419A999949DB455141D7A370CD3EC15441E17A142ED9455141333333C33EC15441AE47E11AD845514185EB51F83EC15441000000A0D6455141333333933FC1544133333323D4455141666666B63FC154419A999979D34551410000004040C154417B14AEE7D14551410000006040C154415C8FC255D0455141F6285C9F40C15441713D0A97CF4551419A9999E940C1544133333323CF455141713D0A2742C15441F6285C4FCE45514114AE475142C1544152B81E25CE4551411F85EB1142C15441E17A14CECC45514185EB51F841C15441E17A14EECB45514152B81E6542C15441C3F5283CCB455141E17A14DE42C1544152B81EB5CA4551413D0AD78343C15441295C8F32CA4551411F85EB7144C154417B14AE77C84551413D0AD76346C15441D7A3709DC7455141D7A3707D46C15441E17A14CEC64551410AD7A31047C154410AD7A300C645514114AE475147C1544185EB51F8C4455141C3F5285C47C15441EC51B84EC445514114AE473147C1544152B81EC5C3455141D7A370BD46C1544185EB5148C2455141D7A370BD46C15441F6285C9FC1455141CDCCCCFC46C154413D0AD773C04551411F85EB3147C154419A999939BF455141AE47E1DA47C1544166666626BE4551419A99995948C154418FC2F5E8BC455141333333E348C15441AE47E10ABC455141333333E348C1544114AE4781BB455141333333A348C1544114AE4731B9455141E17A145E49C15441C3F528ACB8455141AE47E1AA49C1544148E17A54B7455141C3F528CC49C1544166666696B6455141000000804AC15441295C8FE2B545514152B81E954AC1544148E17A84B5455141C3F5281C4AC15441E17A144EB5455141C3F528EC49C15441F6285CCFB4455141C3F528EC49C1544100000050B44551415C8FC2354AC154415C8FC2C5B3455141F6285C7F4AC15441CDCCCC5CB3455141F6285CBF4AC15441EC51B89EB245514152B81E954AC15441000000E0B1455141B81E852B4AC15441F6285C0FB145514152B81E054AC154411F85EB61B0455141713D0A274AC15441E17A144EB0455141CDCCCC8C49C15441AE47E13AAF4551411F85EB8149C1544114AE47B1AE4551417B14AE5749C15441713D0A67AE4551413333330349C15441CDCCCC3CAE4551410000001048C154417B14AE27AE4551416666668647C15441CDCCCC3CAE455141CDCCCCDC46C15441333333B3AD4551418FC2F52846C154413D0AD793AD455141B81E85EB44C1544148E17A34AD4551417B14AE3744C15441000000C0AC455141E17A14CE43C154411F85EBC1AB4551413D0AD7A343C15441D7A3708DAB455141EC51B86E43C15441AE47E11AAA45514148E17A4443C15441C3F5285CA9455141EC51B84E43C15441333333B3A8455141EC51B84E43C15441F6285CFFA745514152B81E0543C1544114AE47E1A64551415C8FC2C542C1544185EB5158A64551416666664642C15441E17A14EEA545514114AE473142C154419A9999B9A54551410AD7A37042C1544185EB51A8A3455141713D0A2742C15441713D0A87A345514185EB51B842C154413D0AD7A3A5455141E17A14EE48C154411F85EBA1A6455141D7A3709D4BC15441C3F528CCA645514152B81E454DC154411F85EBA1A64551411F85EBC14EC15441
+</a>
+
+<b>
+010600000001000000010300000001000000850000000AF814E60146514104AF24C629C154415C8FC235054651418FC2F58826C15441C3F5289C0746514114AE476123C1544152B81EC50946514114AE47A11FC15441295C8FF2074651419A9999F91CC154419A99994908465141713D0A171BC15441CDCCCCCC0A4651413D0AD7A319C154419A9999890C4651411F85EB6118C1544148E17A940E465141AE47E14A16C15441295C8F620B46514148E17A2413C15441F6285CDF0A46514185EB519812C15441E17A14CE084651415C8FC2D513C154410000003007465141713D0AE714C154413D0AD7530546514114AE47B116C15441D7A370BD044651413333337317C15441A4703D6A0246514152B81E4519C154419A9999D900465141F6285CFF1AC1544133333393FF455141F6285CAF1CC15441CDCCCC4CFF455141CDCCCC3C1DC1544152B81EA5FE455141666666A61DC154410AD7A370FD455141D7A3704D1FC15441A4703D3AFC4551417B14AE5720C1544166666666FB4551415C8FC2E523C1544185EB5188FA45514185EB515825C1544185EB5118F8455141F6285C1F27C154417B14AE37F3455141295C8FA22AC15441295C8F72F0455141A4703DEA2BC154410AD7A300EF455141F6285CCF2EC15441E17A146EED455141F6285C5F31C1544100000090EC455141B81E853B33C1544114AE47F1EB4551417B14AED734C15441295C8F72EB4551415C8FC2D535C1544114AE47A1E94551413333331337C15441A4703D9AE7455141B81E855B38C15441C3F528DCE6455141F6285CCF38C1544133333313E64551417B14AEF739C1544152B81EF5E44551415C8FC2153BC15441713D0A17E44551418FC2F5083CC154413D0AD743E3455141713D0AC73CC15441666666E6E14551415C8FC2A53DC154417B14AE47E145514148E17A243EC1544166666656DF455141EC51B86E3EC1544114AE4791DC45514185EB51B83EC154419A999949DB455141D7A370CD3EC15441E17A142ED9455141333333C33EC15441AE47E11AD845514185EB51F83EC15441000000A0D6455141333333933FC1544133333323D4455141666666B63FC154419A999979D34551410000004040C154417B14AEE7D14551410000006040C154415C8FC255D0455141F6285C9F40C15441713D0A97CF4551419A9999E940C1544133333323CF455141713D0A2742C15441F6285C4FCE45514114AE475142C1544152B81E25CE4551411F85EB1142C15441E17A14CECC45514185EB51F841C15441E17A14EECB45514152B81E6542C15441C3F5283CCB455141E17A14DE42C1544152B81EB5CA4551413D0AD78343C15441295C8F32CA4551411F85EB7144C154417B14AE77C84551413D0AD76346C15441D7A3709DC7455141D7A3707D46C15441E17A14CEC64551410AD7A31047C154410AD7A300C645514114AE475147C1544185EB51F8C4455141C3F5285C47C15441EC51B84EC445514114AE473147C1544152B81EC5C3455141D7A370BD46C1544185EB5148C2455141D7A370BD46C15441F6285C9FC1455141CDCCCCFC46C154413D0AD773C04551411F85EB3147C154419A999939BF455141AE47E1DA47C1544166666626BE4551419A99995948C154418FC2F5E8BC455141333333E348C15441AE47E10ABC455141333333E348C1544114AE4781BB455141333333A348C1544114AE4731B9455141E17A145E49C15441C3F528ACB8455141AE47E1AA49C1544148E17A54B7455141C3F528CC49C1544166666696B6455141000000804AC15441295C8FE2B545514152B81E954AC1544148E17A84B5455141C3F5281C4AC15441E17A144EB5455141C3F528EC49C15441F6285CCFB4455141C3F528EC49C1544100000050B44551415C8FC2354AC154415C8FC2C5B3455141F6285C7F4AC15441CDCCCC5CB3455141F6285CBF4AC15441EC51B89EB245514152B81E954AC15441000000E0B1455141B81E852B4AC15441F6285C0FB145514152B81E054AC154411F85EB61B0455141713D0A274AC15441E17A144EB0455141CDCCCC8C49C15441AE47E13AAF4551411F85EB8149C1544114AE47B1AE4551417B14AE5749C15441713D0A67AE4551413333330349C15441CDCCCC3CAE4551410000001048C154417B14AE27AE4551416666668647C15441CDCCCC3CAE455141CDCCCCDC46C15441333333B3AD4551418FC2F52846C154413D0AD793AD455141B81E85EB44C1544148E17A34AD4551417B14AE3744C15441000000C0AC455141E17A14CE43C154411F85EBC1AB4551413D0AD7A343C15441D7A3708DAB455141EC51B86E43C15441AE47E11AAA45514148E17A4443C15441C3F5285CA9455141EC51B84E43C15441333333B3A8455141EC51B84E43C15441F6285CFFA745514152B81E0543C1544114AE47E1A64551415C8FC2C542C1544185EB5158A64551416666664642C15441E17A14EEA545514114AE473142C154419A9999B9A54551410AD7A37042C1544185EB51A8A3455141713D0A2742C15441713D0A87A345514185EB51B842C154413D0AD7A3A5455141E17A14EE48C154411F85EBA1A6455141D7A3709D4BC15441C3F528CCA645514152B81E454DC154411F85EBA1A64551411F85EBC14EC15441295C8F42A6455141A4703DEA4FC154413D0AD7C3A5455141713D0A4751C154410AD7A390A44551410AD7A34053C154410AD7A3A0C0455141000000404FC154417B14AE47C9455141000000404DC1544185EB51E8D1455141EC51B8CE4AC15441D7A3708DD745514114AE47A148C154413D0AD753DD455141713D0AE745C154413D0AD7D3E24551411F85EB1142C154417B14AE07E7455141E17A148E3EC154411F85EB31ED455141C3F5286C38C1544100000090F2455141C3F5286C33C1544133333313F745514148E17AA430C15441713D0AA7FD455141713D0A372CC15441D4962CA40146514129EBA6F829C154410AF814E60146514104AF24C629C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198525 - 198720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D00000066C51D4753F55041B8F5A7A8420C5541E6E8A7DB52F550417879C420440C55410D5E097951F5504185CB522F460C5541E7BDE45650F55041386FB846470C5541C11DC0344FF55041041AA048480C554178FA219E4EF55041DFFECB1F490C55416F17F7B952F55041B04871F64B0C5541EDBCE11655F55041C096EC844D0C5541977771F859F5504113B59039500C5541D2C0A3755FF55041C47FF3C4520C5541969AA99163F55041C856B318540C55411796D9FF65F55041903BC5FE530C554143EE31506AF550418169138B530C55417BF4CFDC6AF55041B7A046BD510C5541765CE0F36AF55041A06BAD76510C5541629B71276CF55041F9B66D7E4F0C5541F237EF506DF5504173CD27944D0C554100A3D03D6EF55041224D20A44B0C5541CA5361C56EF550417955A6C44A0C55413C8C842B6CF550415E3AA0ED4A0C55418ABD5B8F68F5504144331E034B0C55414AA4DDD465F55041AB4F26AD4A0C5541F0CFAF9F63F55041180B760B4A0C55419EB1B08A62F55041FA9206A0490C554194CD28E15DF55041B5A08113470C5541F7E3F15057F55041DAC7111A420C55419C073D8E55F550417F4960C1400C55413955925C54F55041E29058E63F0C554166C51D4753F55041B8F5A7A8420C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000014AE47B164F5504148E17A64540C5541AE47E19A62F550417B14AED7530C5541E17A14BE5FF5504152B81EE5520C5541F6285CBF5CF550410AD7A390510C554185EB51585AF55041CDCCCC6C500C5541CDCCCCCC57F550410AD7A3104F0C5541AE47E10A55F55041E17A147E4D0C554185EB515853F550413D0AD7634C0C5541E17A143E4EF55041D7A370DD480C55413D0AD7434DF55041E17A142E4A0C5541333333734CF550417B14AE474B0C5541B81E855B4BF55041E17A146E4C0C5541D7A370FD4AF55041D7A370CD4C0C5541295C8FB24AF550419A9999B94C0C5541A4703D1A4CF5504152B81EF5520C55413D0AD79353F5504100000040560C5541C3F528BC5CF550417B14AED75A0C5541333333335FF5504148E17A245C0C5541E17A144E63F550413D0AD7E35D0C5541A4703D7A68F55041F6285C4F5E0C554114AE471169F55041AE47E13A5E0C5541713D0AF769F55041295C8F52550C5541E17A144E68F55041CDCCCC5C550C554114AE47B164F5504148E17A64540C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198525 - 1443905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D00000066C51D4753F55041B8F5A7A8420C5541E6E8A7DB52F550417879C420440C55410D5E097951F5504185CB522F460C5541E7BDE45650F55041386FB846470C5541C11DC0344FF55041041AA048480C554178FA219E4EF55041DFFECB1F490C55416F17F7B952F55041B04871F64B0C5541EDBCE11655F55041C096EC844D0C5541977771F859F5504113B59039500C5541D2C0A3755FF55041C47FF3C4520C5541969AA99163F55041C856B318540C55411796D9FF65F55041903BC5FE530C554143EE31506AF550418169138B530C55417BF4CFDC6AF55041B7A046BD510C5541765CE0F36AF55041A06BAD76510C5541629B71276CF55041F9B66D7E4F0C5541F237EF506DF5504173CD27944D0C554100A3D03D6EF55041224D20A44B0C5541CA5361C56EF550417955A6C44A0C55413C8C842B6CF550415E3AA0ED4A0C55418ABD5B8F68F5504144331E034B0C55414AA4DDD465F55041AB4F26AD4A0C5541F0CFAF9F63F55041180B760B4A0C55419EB1B08A62F55041FA9206A0490C554194CD28E15DF55041B5A08113470C5541F7E3F15057F55041DAC7111A420C55419C073D8E55F550417F4960C1400C55413955925C54F55041E29058E63F0C554166C51D4753F55041B8F5A7A8420C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000014AE47B164F5504148E17A64540C5541AE47E19A62F550417B14AED7530C5541E17A14BE5FF5504152B81EE5520C5541F6285CBF5CF550410AD7A390510C554185EB51585AF55041CDCCCC6C500C5541CDCCCCCC57F550410AD7A3104F0C5541AE47E10A55F55041E17A147E4D0C554185EB515853F550413D0AD7634C0C5541E17A143E4EF55041D7A370DD480C55413D0AD7434DF55041E17A142E4A0C5541333333734CF550417B14AE474B0C5541B81E855B4BF55041E17A146E4C0C5541D7A370FD4AF55041D7A370CD4C0C5541295C8FB24AF550419A9999B94C0C5541A4703D1A4CF5504152B81EF5520C55413D0AD79353F5504100000040560C5541C3F528BC5CF550417B14AED75A0C5541333333335FF5504148E17A245C0C5541E17A144E63F550413D0AD7E35D0C5541A4703D7A68F55041F6285C4F5E0C554114AE471169F55041AE47E13A5E0C5541713D0AF769F55041295C8F52550C5541E17A144E68F55041CDCCCC5C550C554114AE47B164F5504148E17A64540C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198525 - 4130688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D00000066C51D4753F55041B8F5A7A8420C5541E6E8A7DB52F550417879C420440C55410D5E097951F5504185CB522F460C5541E7BDE45650F55041386FB846470C5541C11DC0344FF55041041AA048480C554178FA219E4EF55041DFFECB1F490C55416F17F7B952F55041B04871F64B0C5541EDBCE11655F55041C096EC844D0C5541977771F859F5504113B59039500C5541D2C0A3755FF55041C47FF3C4520C5541969AA99163F55041C856B318540C55411796D9FF65F55041903BC5FE530C554143EE31506AF550418169138B530C55417BF4CFDC6AF55041B7A046BD510C5541765CE0F36AF55041A06BAD76510C5541629B71276CF55041F9B66D7E4F0C5541F237EF506DF5504173CD27944D0C554100A3D03D6EF55041224D20A44B0C5541CA5361C56EF550417955A6C44A0C55413C8C842B6CF550415E3AA0ED4A0C55418ABD5B8F68F5504144331E034B0C55414AA4DDD465F55041AB4F26AD4A0C5541F0CFAF9F63F55041180B760B4A0C55419EB1B08A62F55041FA9206A0490C554194CD28E15DF55041B5A08113470C5541F7E3F15057F55041DAC7111A420C55419C073D8E55F550417F4960C1400C55413955925C54F55041E29058E63F0C554166C51D4753F55041B8F5A7A8420C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000014AE47B164F5504148E17A64540C5541AE47E19A62F550417B14AED7530C5541E17A14BE5FF5504152B81EE5520C5541F6285CBF5CF550410AD7A390510C554185EB51585AF55041CDCCCC6C500C5541CDCCCCCC57F550410AD7A3104F0C5541AE47E10A55F55041E17A147E4D0C554185EB515853F550413D0AD7634C0C5541E17A143E4EF55041D7A370DD480C55413D0AD7434DF55041E17A142E4A0C5541333333734CF550417B14AE474B0C5541B81E855B4BF55041E17A146E4C0C5541D7A370FD4AF55041D7A370CD4C0C5541295C8FB24AF550419A9999B94C0C5541A4703D1A4CF5504152B81EF5520C55413D0AD79353F5504100000040560C5541C3F528BC5CF550417B14AED75A0C5541333333335FF5504148E17A245C0C5541E17A144E63F550413D0AD7E35D0C5541A4703D7A68F55041F6285C4F5E0C554114AE471169F55041AE47E13A5E0C5541713D0AF769F55041295C8F52550C5541E17A144E68F55041CDCCCC5C550C554114AE47B164F5504148E17A64540C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319825 - 56431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E0000003333331355C15041CDCCCC4C0F4B5541333333A35CC15041333333B30F4B55415C8FC25572C150419A9999D9104B5541295C8FC274C15041AE47E16A0B4B5541F6285C2F76C15041B81E85BB0A4B55410AD7A30077C15041D7A370FD084B554152B81E657EC1504148E17AB4004B5541F6285C4F87C1504148E17A64FA4A55418FC2F5685FC1504100000030DF4A5541E17A140E5FC1504133333343DF4A5541713D0AB745C150411F85EBB1E44A55419A99992940C15041666666E6E54A55418FC2F5283EC1504185EB51180E4B55413333331355C15041CDCCCC4C0F4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000E17A140E5FC1504133333343DF4A5541D9341E2B5AC1504115FF624FE04A5541AB79389C54C15041E3046F80E14A5541F296A65E50C15041B1B22969E24A5541B3FDB06A49C150419523C2E6E34A554138E099B445C15041E50473B2E44A55410F89B6B441C150416A1FA790E54A55419A99992940C15041666666E6E54A554192770F353FC150410C0CE612F94A5541D9E93E2C3EC15041110FEF0F0E4B55416EE0484E3EC15041C761481A0E4B55413333331355C15041CDCCCC4C0F4B5541333333A35CC15041333333B30F4B55415C8FC25572C150419A9999D9104B5541B73F039674C150411BD7ACCE0B4B5541295C8FC274C15041AE47E16A0B4B5541FA5CAB6A75C150413ACC111A0B4B554137DD27A675C150413F6E79FD0A4B55412566F81976C1504195014AB50A4B5541BF61E66776C150419C5601430A4B55410AD7A30077C15041D7A370FD084B55415FFDEC3B77C150415625FFBA084B554119D11DC579C15041D9C76DE3054B554135EAEC257BC15041586A0658044B55411BD2CC747BC1504134BBA0FF034B554152B81E657EC1504148E17AB4004B5541A3FB82F183C1504194FFBBC6FC4A55414095A44A87C15041A115C667FA4A5541AD91580B87C1504172241B36FA4A55415A8A859D84C15041EEB7208EF84A554130785BCE80C15041215F3BF5F54A55418DAE108C7BC150419B454A5FF24A554128DCE2E578C15041D53BE390F04A55414D3CBDDD78C150417C31558BF04A5541CC7EFC8575C150418FEBDA43EE4A5541E746C82F74C15041F6C5875AED4A554194AACE9F6CC15041CF7B8632E84A55419E81A7016AC15041EA5F9869E64A5541CB0FA28365C1504129097A59E34A5541B35C14AC5FC15041359BC35DDF4A554178FAA3605FC1504130F4C131DF4A5541E17A140E5FC1504133333343DF4A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319873 - 130563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E00000052B81E85ADC050410AD7A3B0FA4A55411F85EB41ADC050419A999939F64A5541AE47E17AACC050415C8FC205E94A55413D0AD70387C05041295C8FC2F04A5541AE47E16A84C050419A999999F14A5541CDCCCC2C81C05041F6285C0FF34A5541000000D07DC05041E17A14FEF54A5541295C8FA278C05041D7A370ADFE4A5541EC51B8EE79C0504166666646FF4A55411F85EB617CC050410AD7A3A0FE4A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541AE47E1BAA7C050413D0AD723FB4A554152B81E85ADC050410AD7A3B0FA4A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000A18758D579C05041B46CD2AAFC4A5541A92395E878C050414908FB37FE4A55414B4D2FD378C05041E3EDD4C3FE4A5541D19862FF79C05041B685E53DFF4A5541480C8C617AC0504172870D28FF4A55411F85EB617CC050410AD7A3A0FE4A55418266444593C05041DC892B9EF94A5541EA9CB80195C05041BD50443BF94A5541C5D6220995C05041BD50443BF94A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541942052609EC0504103D29D5EF94A55413E5C8FDAA7C05041E30E2716FB4A55418B0D2704A9C05041E3B53F0AFB4A5541895E25C4A9C05041E1BC53FBFA4A5541A2C41B69ADC05041F62AD1B2FA4A5541D7A779CEACC0504180134491EE4A5541AE47E17AACC050415C8FC205E94A5541520F6E048CC0504171B315BAEF4A5541EEA472FC86C050417956F3C4F04A55410407915484C05041BAA7A5A3F14A554117A326C783C050410A8052E3F14A554167E6138482C05041B8D9CA74F24A55418F0B3DC881C050415AE95EC9F24A55415FA07DAB80C05041B7102280F34A5541648AE0697EC05041977FE177F54A5541FCE2F1F17DC050417CDD79E0F54A55417E1312BF7CC05041B6D1E7C7F74A5541A18758D579C05041B46CD2AAFC4A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319873 - 418284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E00000052B81E85ADC050410AD7A3B0FA4A55411F85EB41ADC050419A999939F64A5541AE47E17AACC050415C8FC205E94A55413D0AD70387C05041295C8FC2F04A5541AE47E16A84C050419A999999F14A5541CDCCCC2C81C05041F6285C0FF34A5541000000D07DC05041E17A14FEF54A5541295C8FA278C05041D7A370ADFE4A5541EC51B8EE79C0504166666646FF4A55411F85EB617CC050410AD7A3A0FE4A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541AE47E1BAA7C050413D0AD723FB4A554152B81E85ADC050410AD7A3B0FA4A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000A18758D579C05041B46CD2AAFC4A5541A92395E878C050414908FB37FE4A55414B4D2FD378C05041E3EDD4C3FE4A5541D19862FF79C05041B685E53DFF4A5541480C8C617AC0504172870D28FF4A55411F85EB617CC050410AD7A3A0FE4A55418266444593C05041DC892B9EF94A5541EA9CB80195C05041BD50443BF94A5541C5D6220995C05041BD50443BF94A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541942052609EC0504103D29D5EF94A55413E5C8FDAA7C05041E30E2716FB4A55418B0D2704A9C05041E3B53F0AFB4A5541895E25C4A9C05041E1BC53FBFA4A5541A2C41B69ADC05041F62AD1B2FA4A5541D7A779CEACC0504180134491EE4A5541AE47E17AACC050415C8FC205E94A5541520F6E048CC0504171B315BAEF4A5541EEA472FC86C050417956F3C4F04A55410407915484C05041BAA7A5A3F14A554117A326C783C050410A8052E3F14A554167E6138482C05041B8D9CA74F24A55418F0B3DC881C050415AE95EC9F24A55415FA07DAB80C05041B7102280F34A5541648AE0697EC05041977FE177F54A5541FCE2F1F17DC050417CDD79E0F54A55417E1312BF7CC05041B6D1E7C7F74A5541A18758D579C05041B46CD2AAFC4A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319903 - 56432
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F8253C050411F85EB61494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C55415C8FC27550C0504166666676424C55410AD7A32045C0504148E17A84424C5541CDCCCCBC45C05041B81E852B494C5541D7A370FD46C05041713D0AF74E4C5541295C8F7248C05041B81E858B534C5541713D0A574AC05041A4703DAA584C5541666666664CC05041B81E856B5D4C5541C3F5284C50C05041000000D0644C55413D0AD7F356C050410AD7A350704C5541713D0A2759C050413D0AD7336E4C5541E17A145E62C05041713D0A17604C5541713D0A8770C05041000000504D4C5541F6285C5F76C050417B14AE47424C554152B81E3568C050418FC2F558424C55413333336367C05041B81E850B444C5541EC51B87E58C05041CDCCCC6C424C5541CDCCCCCC54C0504114AE4771424C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C5541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000E110425758C0504145A5FC6C424C5541286FCAD554C05041C999A49A424C55419426020755C05041B7FA127D434C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C554183F9919952C05041D042A3C5494C5541E97F024C52C05041423ED5E6494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C554127FFA18250C050418B1ED0B0424C55412677176550C05041071C7B76424C5541FD3729B44AC05041C1438D7D424C5541759F60C948C050413209EF7F424C5541F32C0C4445C0504159E34E84424C554132DC994A45C05041B488184E444C5541CED0898B45C0504149084912474C55418D4AC31046C050419FAEFEAF4A4C5541E131263C46C050417982BB784B4C5541FB66F66646C05041719CD13E4C4C5541A7D3B34047C05041D33E67CA4F4C55415C16404048C05041BEB76DED524C5541505B66EB49C05041254F0787574C554191EA1BAC4AC0504169D0996E594C55417ED447BC4BC050414469D7E25B4C5541C287F01F4EC05041253200B1604C55419BDECEE051C05041BFC4648B674C55411C74CDF351C05041DC4139AC674C5541C8F1FD1A52C050415969F5EF674C5541D2DD4DD752C050412EF86F35694C55412AA4D90357C0504154404441704C55416A9FF50558C05041B54A6C496F4C554155CFB77159C050410B0C79C16D4C554129C028495BC05041D58079EF6A4C55418E98BAA75DC05041F7F2874E674C55413EADE24D5EC05041FC321150664C5541E17A145E62C05041713D0A17604C55419AF2E59264C050415C9E092A5D4C55417B11F0E565C05041AD6670685B4C5541116A0C4368C050415B460146584C5541E7A0F8DF69C05041E92D6E22564C5541596237086BC0504102D09499544C5541209D9C626BC05041275AB521544C554180F7DCC76CC05041C292F547524C55416F6E2B8B6EC050419DF07BF14F4C55418F0A0EA370C0504101261F1B4D4C5541ECCF8E4A72C050418255C1FB494C55418E65257D73C05041061111B9474C5541A5F28B7474C050418C6C18E6454C55416CA1B91A75C05041028B6EAC444C5541E62E645076C050419B8FC047424C55412547B2F872C05041F009E14B424C55417312316D70C05041256A054F424C554145C0D2F06AC05041F64ECB55424C55410C6DCA6668C05041DBDDED58424C55411405C0A867C05041BCF88A7B434C55413333336367C05041B81E850B444C55412C40DE5A64C050415F2912B7434C554150BF46D761C05041DDB00F71434C55415DB1AA535FC050419EB90C2B434C554126574B155EC05041F5D26A08434C55415341C5A35DC05041617611FC424C554175B672895DC05041517234F9424C5541E110425758C0504145A5FC6C424C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319903 - 130565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F8253C050411F85EB61494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C55415C8FC27550C0504166666676424C55410AD7A32045C0504148E17A84424C5541CDCCCCBC45C05041B81E852B494C5541D7A370FD46C05041713D0AF74E4C5541295C8F7248C05041B81E858B534C5541713D0A574AC05041A4703DAA584C5541666666664CC05041B81E856B5D4C5541C3F5284C50C05041000000D0644C55413D0AD7F356C050410AD7A350704C5541713D0A2759C050413D0AD7336E4C5541E17A145E62C05041713D0A17604C5541713D0A8770C05041000000504D4C5541F6285C5F76C050417B14AE47424C554152B81E3568C050418FC2F558424C55413333336367C05041B81E850B444C5541EC51B87E58C05041CDCCCC6C424C5541CDCCCCCC54C0504114AE4771424C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C5541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000DC10425758C0504142A5FC6C424C5541246FCAD554C05041C899A49A424C55419626020755C05041B9FA127D434C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C554187F9919952C05041D042A3C5494C5541ED7F024C52C05041403ED5E6494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C554124FFA18250C05041861ED0B0424C55412B77176550C050410B1C7B76424C5541FD3729B44AC05041C0438D7D424C5541729F60C948C050412D09EF7F424C5541F42C0C4445C050415DE34E84424C554135DC994A45C05041B888184E444C5541CFD0898B45C0504147084912474C55418D4AC31046C050419CAEFEAF4A4C5541E331263C46C050417882BB784B4C5541FA66F66646C05041759CD13E4C4C5541A2D3B34047C05041D33E67CA4F4C55415B16404048C05041BEB76DED524C5541545B66EB49C050412A4F0787574C55418CEA1BAC4AC050416BD0996E594C554180D447BC4BC050414869D7E25B4C5541BD87F01F4EC050412A3200B1604C5541A0DECEE051C05041BBC4648B674C55411C74CDF351C05041E04139AC674C5541C8F1FD1A52C050415969F5EF674C5541CFDD4DD752C050412BF86F35694C55412BA4D90357C0504157404441704C5541699FF50558C05041B74A6C496F4C55415ACFB77159C05041100C79C16D4C554128C028495BC05041D58079EF6A4C55418D98BAA75DC05041F3F2874E674C55413FADE24D5EC05041F8321150664C5541E17A145E62C05041713D0A17604C554198F2E59264C050415A9E092A5D4C55418011F0E565C05041B06670685B4C5541116A0C4368C050415C460146584C5541E6A0F8DF69C05041E62D6E22564C5541576237086BC0504106D09499544C5541249D9C626BC050412A5AB521544C55417DF7DCC76CC05041BF92F547524C55416E6E2B8B6EC050419CF07BF14F4C55418F0A0EA370C0504100261F1B4D4C5541E7CF8E4A72C050418055C1FB494C55418A65257D73C050410A1111B9474C5541A7F28B7474C05041886C18E6454C55416CA1B91A75C05041038B6EAC444C5541E92E645076C050419D8FC047424C55412547B2F872C05041F109E14B424C55417212316D70C05041226A054F424C554141C0D2F06AC05041F34ECB55424C55410C6DCA6668C05041DFDDED58424C55411305C0A867C05041B7F88A7B434C55413333336367C05041B81E850B444C55412740DE5A64C05041632912B7434C55414CBF46D761C05041D8B00F71434C554159B1AA535FC05041A2B90C2B434C554121574B155EC05041F2D26A08434C55415341C5A35DC05041607611FC424C554176B672895DC050414D7234F9424C5541DC10425758C0504142A5FC6C424C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319903 - 418286
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F8253C050411F85EB61494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C55415C8FC27550C0504166666676424C55410AD7A32045C0504148E17A84424C5541CDCCCCBC45C05041B81E852B494C5541D7A370FD46C05041713D0AF74E4C5541295C8F7248C05041B81E858B534C5541713D0A574AC05041A4703DAA584C5541666666664CC05041B81E856B5D4C5541C3F5284C50C05041000000D0644C55413D0AD7F356C050410AD7A350704C5541713D0A2759C050413D0AD7336E4C5541E17A145E62C05041713D0A17604C5541713D0A8770C05041000000504D4C5541F6285C5F76C050417B14AE47424C554152B81E3568C050418FC2F558424C55413333336367C05041B81E850B444C5541EC51B87E58C05041CDCCCC6C424C5541CDCCCCCC54C0504114AE4771424C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C5541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000DC10425758C0504142A5FC6C424C5541246FCAD554C05041C899A49A424C55419626020755C05041B9FA127D434C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C554187F9919952C05041D042A3C5494C5541ED7F024C52C05041403ED5E6494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C554124FFA18250C05041861ED0B0424C55412B77176550C050410B1C7B76424C5541FD3729B44AC05041C0438D7D424C5541729F60C948C050412D09EF7F424C5541F42C0C4445C050415DE34E84424C554135DC994A45C05041B888184E444C5541CFD0898B45C0504147084912474C55418D4AC31046C050419CAEFEAF4A4C5541E331263C46C050417882BB784B4C5541FA66F66646C05041759CD13E4C4C5541A2D3B34047C05041D33E67CA4F4C55415B16404048C05041BEB76DED524C5541545B66EB49C050412A4F0787574C55418CEA1BAC4AC050416BD0996E594C554180D447BC4BC050414869D7E25B4C5541BD87F01F4EC050412A3200B1604C5541A0DECEE051C05041BBC4648B674C55411C74CDF351C05041E04139AC674C5541C8F1FD1A52C050415969F5EF674C5541CFDD4DD752C050412BF86F35694C55412BA4D90357C0504157404441704C5541699FF50558C05041B74A6C496F4C55415ACFB77159C05041100C79C16D4C554128C028495BC05041D58079EF6A4C55418D98BAA75DC05041F3F2874E674C55413FADE24D5EC05041F8321150664C5541E17A145E62C05041713D0A17604C554198F2E59264C050415A9E092A5D4C55418011F0E565C05041B06670685B4C5541116A0C4368C050415C460146584C5541E6A0F8DF69C05041E62D6E22564C5541576237086BC0504106D09499544C5541249D9C626BC050412A5AB521544C55417DF7DCC76CC05041BF92F547524C55416E6E2B8B6EC050419CF07BF14F4C55418F0A0EA370C0504100261F1B4D4C5541E7CF8E4A72C050418055C1FB494C55418A65257D73C050410A1111B9474C5541A7F28B7474C05041886C18E6454C55416CA1B91A75C05041038B6EAC444C5541E92E645076C050419D8FC047424C55412547B2F872C05041F109E14B424C55417212316D70C05041226A054F424C554141C0D2F06AC05041F34ECB55424C55410C6DCA6668C05041DFDDED58424C55411305C0A867C05041B7F88A7B434C55413333336367C05041B81E850B444C55412740DE5A64C05041632912B7434C55414CBF46D761C05041D8B00F71434C554159B1AA535FC05041A2B90C2B434C554121574B155EC05041F2D26A08434C55415341C5A35DC05041607611FC424C554176B672895DC050414D7234F9424C5541DC10425758C0504142A5FC6C424C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976925 - 58870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A370FDC2A750415C8FC2E5465C54411F85EB51C1A750417B14AE674A5C54415C8FC235D3A7504185EB5198515C5441D7A370ADD4A750418FC2F5684E5C54419A999989D8A7504133333303465C5441713D0AD7DBA7504185EB51383F5C54413D0AD773DFA75041666666E6375C5441F6285C7FE3A750410AD7A3702F5C54417B14AE17E6A75041AE47E19A295C5441EC51B8DEE8A750415C8FC295235C54411F85EB51EBA75041C3F5285C1E5C544166666606DCA75041D7A3709D145C5441713D0A97D0A75041E17A140E285C5441E17A14DECDA75041A4703D1A2D5C5441EC51B8CECAA7504185EB5158335C5441D7A370FDC2A750415C8FC2E5465C5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000005C8FC235D3A7504185EB5198515C5441D7A370ADD4A750418FC2F5684E5C54419A999989D8A7504133333303465C5441713D0AD7DBA7504185EB51383F5C54413ECBD933DCA7504154FE417C3E5C5441A73F7247E1A750411A406A14345C54412A8C388BE2A75041CAF63F6F315C54413367D465E3A75041872F09A62F5C54416FC51844E4A75041F83E44B62D5C54417B14AE17E6A75041AE47E19A295C544146D7649DE6A75041AAF41079285C54417C7C85B2E7A750413217EE0E265C54411F85EB51EBA75041C3F5285C1E5C544166666606DCA75041D7A3709D145C544139C9C389D5A7504123AC97A41F5C5441125AE652D0A75041415A698C285C54412484A3CCCFA7504147B15485295C5441CA0334B3CEA75041F35C1C8F2B5C5441DA79BF64CCA75041277C021C305C54419FE2E654CBA75041F3A49546325C5441169A57DECAA7504117417338335C5441D7A370FDC2A750415C8FC2E5465C54411F85EB51C1A750417B14AE674A5C54415C8FC235D3A7504185EB5198515C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320557 - 3146838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000470000005C8FC2B5117C51411F85EB717D6F5441EC51B82E0F7C5141B81E855B7F6F5441666666B6077C514185EB5158876F5441B81E85BBFF7B5141C3F5287C906F544166666646FC7B5141A4703D8A936F5441F6285CCFF97B51417B14AEA7956F5441B81E859BF27B514114AE4751996F5441C3F5287CEA7B5141713D0A579D6F54411F85EB41E67B51413D0AD713A06F5441F6285CFFE37B51413D0AD773A76F5441000000C0E67B5141B81E85EBAC6F5441D7A3701DF27B5141A4703DCAB16F5441713D0A37F27B51415C8FC2E5B26F5441CDCCCCBCF97B5141C3F5284CB76F5441F6285C2FFF7B514148E17AE4BA6F5441C3F528DC067C514148E17AB4C06F54417B14AED70A7C5141C3F528FCC26F544185EB51B8137C514133333303C76F5441AE47E1DA1C7C5141C3F5289CC96F54415C8FC295207C5141F6285C4FCA6F5441C3F5287C277C514114AE4761CA6F54413D0AD7A3337C5141F6285C4FC96F5441666666663D7C5141333333D3C66F544148E17AB43F7C5141CDCCCC3CC66F544185EB5128437C51413D0AD753C56F544148E17A34467C5141D7A3701DC46F54411F85EB11487C514100000050BF6F544100000080487C514114AE47F1BB6F54419A9999C9487C5141CDCCCC2CBA6F54417B14AEB7497C51413D0AD7B3B86F5441C3F5288C4C7C5141333333D3B76F54418FC2F5384F7C5141F6285CEFB66F54418FC2F558527C5141C3F528ACBA6F5441D7A3709D547C5141000000D0BF6F5441666666E6527C5141EC51B88EC36F544114AE47B1557C514148E17A14C46F54413D0AD7F35C7C514100000000C86F54419A9999C9677C5141EC51B87ECF6F544114AE47016C7C5141666666C6CB6F5441E17A148E667C5141713D0AD7BB6F54417B14AE37647C5141D7A3706DB56F54410AD7A320627C514133333323B06F5441B81E851B607C5141C3F528FCAC6F5441AE47E1CA5C7C51411F85EBF1A86F5441295C8F22597C514166666656A56F5441295C8FA2557C5141CDCCCCACA26F5441333333B3537C5141295C8F82A16F5441F6285C9F517C5141D7A3706DA56F54410AD7A3C0507C514114AE4711A76F5441000000E04E7C514133333313A66F5441D7A370FD4C7C514148E17A14A56F544185EB5138457C51419A9999F9A06F5441D7A3700D437C5141B81E85EBA16F5441CDCCCC3C407C51413D0AD7B3A16F54413D0AD7933E7C51418FC2F5F89F6F54411F85EB113E7C514185EB51C89E6F5441B81E859B3D7C5141A4703DCA9C6F544185EB51783C7C51418FC2F5D89C6F5441F6285C3F3B7C514114AE47B19B6F54410AD7A3E0397C51411F85EBA19B6F5441000000C0387C5141C3F528FC996F5441EC51B86E387C51417B14AE07986F5441D7A3706D357C51415C8FC2D5976F5441B81E85FB337C5141A4703D8A996F544152B81EA52F7C51411F85EB01966F54411F85EB212C7C51419A999969926F54417B14AEA7297C514152B81E858F6F5441EC51B88E1C7C5141AE47E1CA836F544185EB5108167C5141B81E850B7E6F54418FC2F5C8137C5141C3F528BC7C6F54415C8FC2B5117C51411F85EB717D6F5441
+</a>
+
+<b>
+01060000000100000001030000000100000033000000E81569C3477C51418E082691BB6F5441603AFB8C4B7C51411369F5E4B76F544181478DBF517C5141A36F3EFEBA6F54415F929B20547C5141A843F40CBE6F5441977B8B54547C5141BC77A652C06F5441A9EF6135547C51418F686BA6C36F544109589913557C5141656F93D4C36F544168C7C65C567C514170221471C46F544147839BA65A7C514167CED8C1C66F5441CB7228C95C7C5141193EF4E8C76F54414E8285A65F7C5141ED97C5DDC96F5441968D7758637C514176B31E6CCC6F5441FF78926E667C51410DC4AA8ECE6F5441721FE6D8677C5141AA9C8C7FCF6F5441D03CC9076C7C51414847DCBFCB6F544194F7AC64687C5141B81BFE36C16F544173B2CEBD657C514140BDAE9BB96F544111828B6E637C51412BD45870B36F54410AD7A320627C514133333323B06F5441E50A369B617C5141A30DF752AF6F5441B58BC101607C51412DEAC2DCAC6F5441CC4717A55E7C51416E9CD733AB6F5441AB0C15365C7C5141E607285FA86F5441D705A6F6587C514147F4FE34A56F54414E9A50FC557C5141B4EA13F1A26F54417F07B573547C514197D013E4A16F544143124478537C51410AD4DDC6A26F5441A69A1FB7507C514161207C7BA76F54413AB2CA77457C5141273133F9A16F5441AAD91AF5437C5141CBB9DCEFA06F5441BF129ACB417C514123B69416A26F54410D345D9D3F7C51412F2770BEA16F54413EF8CA3C3E7C514171D757E89F6F5441231091D13F7C51416F5705D39B6F54414B69A6E43D7C5141FE2D64019C6F544109688E923C7C5141A16878A99B6F5441998A69B63B7C51410E1ADE8B9B6F5441E4308EA5397C514112957C6E9B6F5441F897A612397C51416D271BE8986F54419955CB98347C5141828E3355986F54417A85B50E347C51414AFBB45C996F5441AE663D0C357C51417FA2E52A9E6F54412C95C921367C5141A6C3C613A36F5441106836F6377C5141B61D84E3A76F5441B0A507A3397C5141F2845FBFAB6F5441CD99B8893B7C5141D3C3AD56AF6F54419A85CCD93D7C514107F110AFB26F5441012716E4407C51411556F20FB66F544164A29C10447C514176A15604B96F54411E557545467C5141B8D6566BBA6F5441E81569C3477C51418E082691BB6F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320557 - 3308208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000470000005C8FC2B5117C51411F85EB717D6F5441EC51B82E0F7C5141B81E855B7F6F5441666666B6077C514185EB5158876F5441B81E85BBFF7B5141C3F5287C906F544166666646FC7B5141A4703D8A936F5441F6285CCFF97B51417B14AEA7956F5441B81E859BF27B514114AE4751996F5441C3F5287CEA7B5141713D0A579D6F54411F85EB41E67B51413D0AD713A06F5441F6285CFFE37B51413D0AD773A76F5441000000C0E67B5141B81E85EBAC6F5441D7A3701DF27B5141A4703DCAB16F5441713D0A37F27B51415C8FC2E5B26F5441CDCCCCBCF97B5141C3F5284CB76F5441F6285C2FFF7B514148E17AE4BA6F5441C3F528DC067C514148E17AB4C06F54417B14AED70A7C5141C3F528FCC26F544185EB51B8137C514133333303C76F5441AE47E1DA1C7C5141C3F5289CC96F54415C8FC295207C5141F6285C4FCA6F5441C3F5287C277C514114AE4761CA6F54413D0AD7A3337C5141F6285C4FC96F5441666666663D7C5141333333D3C66F544148E17AB43F7C5141CDCCCC3CC66F544185EB5128437C51413D0AD753C56F544148E17A34467C5141D7A3701DC46F54411F85EB11487C514100000050BF6F544100000080487C514114AE47F1BB6F54419A9999C9487C5141CDCCCC2CBA6F54417B14AEB7497C51413D0AD7B3B86F5441C3F5288C4C7C5141333333D3B76F54418FC2F5384F7C5141F6285CEFB66F54418FC2F558527C5141C3F528ACBA6F5441D7A3709D547C5141000000D0BF6F5441666666E6527C5141EC51B88EC36F544114AE47B1557C514148E17A14C46F54413D0AD7F35C7C514100000000C86F54419A9999C9677C5141EC51B87ECF6F544114AE47016C7C5141666666C6CB6F5441E17A148E667C5141713D0AD7BB6F54417B14AE37647C5141D7A3706DB56F54410AD7A320627C514133333323B06F5441B81E851B607C5141C3F528FCAC6F5441AE47E1CA5C7C51411F85EBF1A86F5441295C8F22597C514166666656A56F5441295C8FA2557C5141CDCCCCACA26F5441333333B3537C5141295C8F82A16F5441F6285C9F517C5141D7A3706DA56F54410AD7A3C0507C514114AE4711A76F5441000000E04E7C514133333313A66F5441D7A370FD4C7C514148E17A14A56F544185EB5138457C51419A9999F9A06F5441D7A3700D437C5141B81E85EBA16F5441CDCCCC3C407C51413D0AD7B3A16F54413D0AD7933E7C51418FC2F5F89F6F54411F85EB113E7C514185EB51C89E6F5441B81E859B3D7C5141A4703DCA9C6F544185EB51783C7C51418FC2F5D89C6F5441F6285C3F3B7C514114AE47B19B6F54410AD7A3E0397C51411F85EBA19B6F5441000000C0387C5141C3F528FC996F5441EC51B86E387C51417B14AE07986F5441D7A3706D357C51415C8FC2D5976F5441B81E85FB337C5141A4703D8A996F544152B81EA52F7C51411F85EB01966F54411F85EB212C7C51419A999969926F54417B14AEA7297C514152B81E858F6F5441EC51B88E1C7C5141AE47E1CA836F544185EB5108167C5141B81E850B7E6F54418FC2F5C8137C5141C3F528BC7C6F54415C8FC2B5117C51411F85EB717D6F5441
+</a>
+
+<b>
+01060000000100000001030000000100000033000000E81569C3477C51418E082691BB6F5441603AFB8C4B7C51411369F5E4B76F544181478DBF517C5141A36F3EFEBA6F54415F929B20547C5141A843F40CBE6F5441977B8B54547C5141BC77A652C06F5441A9EF6135547C51418F686BA6C36F544109589913557C5141656F93D4C36F544168C7C65C567C514170221471C46F544147839BA65A7C514167CED8C1C66F5441CB7228C95C7C5141193EF4E8C76F54414E8285A65F7C5141ED97C5DDC96F5441968D7758637C514176B31E6CCC6F5441FF78926E667C51410DC4AA8ECE6F5441721FE6D8677C5141AA9C8C7FCF6F5441D03CC9076C7C51414847DCBFCB6F544194F7AC64687C5141B81BFE36C16F544173B2CEBD657C514140BDAE9BB96F544111828B6E637C51412BD45870B36F54410AD7A320627C514133333323B06F5441E50A369B617C5141A30DF752AF6F5441B58BC101607C51412DEAC2DCAC6F5441CC4717A55E7C51416E9CD733AB6F5441AB0C15365C7C5141E607285FA86F5441D705A6F6587C514147F4FE34A56F54414E9A50FC557C5141B4EA13F1A26F54417F07B573547C514197D013E4A16F544143124478537C51410AD4DDC6A26F5441A69A1FB7507C514161207C7BA76F54413AB2CA77457C5141273133F9A16F5441AAD91AF5437C5141CBB9DCEFA06F5441BF129ACB417C514123B69416A26F54410D345D9D3F7C51412F2770BEA16F54413EF8CA3C3E7C514171D757E89F6F5441231091D13F7C51416F5705D39B6F54414B69A6E43D7C5141FE2D64019C6F544109688E923C7C5141A16878A99B6F5441998A69B63B7C51410E1ADE8B9B6F5441E4308EA5397C514112957C6E9B6F5441F897A612397C51416D271BE8986F54419955CB98347C5141828E3355986F54417A85B50E347C51414AFBB45C996F5441AE663D0C357C51417FA2E52A9E6F54412C95C921367C5141A6C3C613A36F5441106836F6377C5141B61D84E3A76F5441B0A507A3397C5141F2845FBFAB6F5441CD99B8893B7C5141D3C3AD56AF6F54419A85CCD93D7C514107F110AFB26F5441012716E4407C51411556F20FB66F544164A29C10447C514176A15604B96F54411E557545467C5141B8D6566BBA6F5441E81569C3477C51418E082691BB6F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320630 - 3144577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000850000003D0AD763357F514114AE47611F6F5441E17A142E317F5141000000201D6F54417B14AE07247F5141295C8FC2136F5441EC51B86E227F5141295C8F12166F544152B81E851F7F5141E17A143E186F54418FC2F5181A7F5141000000201A6F5441713D0A37157F51415C8FC2351A6F54413D0AD7C30F7F5141333333031A6F54419A9999C90C7F5141295C8FC2176F5441EC51B8AE0A7F51410AD7A3D0166F544148E17AD4077F5141333333B3166F5441EC51B8BE067F51417B14AE37136F544152B81E25057F514114AE4731106F5441F6285CBF027F5141E17A14AE0D6F54413D0AD793FF7E51413D0AD7C30E6F5441C3F5289CFD7E5141E17A144E106F5441D7A3703DFC7E5141B81E85BB116F5441B81E857BF97E5141B81E85EB126F5441AE47E16AF67E51410AD7A330126F5441D7A370ADF37E5141AE47E11A116F54413D0AD783EF7E5141B81E856B0F6F544114AE4761EE7E5141CDCCCCAC0F6F5441666666E6EC7E51417B14AE87106F5441295C8FE2EA7E51411F85EB21126F544148E17A84E77E5141B81E855B166F544166666676E57E51411F85EB11186F5441F6285C2FDB7E514114AE47111C6F5441A4703D2AD47E514185EB51681E6F5441AE47E1FACD7E5141295C8FD21E6F54410AD7A330CB7E5141295C8F721F6F5441E17A141ECA7E51417B14AE67206F5441A4703DFAC67E5141C3F5283C1E6F5441713D0A27C37E514152B81E351F6F5441B81E85ABBD7E51413D0AD733236F5441713D0A97B87E51415C8FC2C5256F5441713D0AF7B17E5141A4703D7A276F54419A999999AE7E51413D0AD7D3276F544166666616A37E51410AD7A320256F5441CDCCCCFCA17E51415C8FC2C5286F5441AE47E17AA17E5141B81E852B2C6F5441F6285CCFA47E514133333343336F544166666636AD7E5141EC51B87E366F54415C8FC275BE7E5141E17A14FE3C6F5441D7A3702DC17E5141D7A3709D3D6F54417B14AE37C67E5141B81E85CB3E6F5441A4703D3AC67E514152B81EC5386F5441713D0A57D47E514148E17A64316F5441F6285C6FE57E51413D0AD773286F544152B81E75F07E51410AD7A3B0226F54419A9999C9F67E5141E17A145E296F5441F6285C2FFF7E51419A999939326F5441C3F5283C007F5141A4703D7A316F544185EB5118007F51410AD7A3A02F6F5441E17A148E007F514185EB51382D6F5441A4703D7A017F5141AE47E12A2B6F5441D7A370ED027F514114AE4771286F54410AD7A390037F5141295C8FE2266F54410AD7A390037F5141D7A370DD246F5441F6285C3F037F5141EC51B88E236F54410AD7A380027F514114AE4751226F54419A9999B9FF7E5141333333E3226F5441AE47E14AFF7E514114AE47B1216F5441295C8F22FF7E5141CDCCCC1C216F5441EC51B86EFE7E5141E17A14CE1F6F5441CDCCCC2CFB7E5141C3F5288C206F5441A4703D4AFA7E5141000000001E6F5441B81E85EBFF7E5141713D0AE71C6F544133333383017F51417B14AE771D6F54417B14AE87037F5141CDCCCC5C1D6F54419A999999037F5141EC51B84E1B6F5441D7A3700D097F51415C8FC265196F54411F85EB010A7F5141AE47E1FA1B6F54419A9999A90C7F51415C8FC2451B6F54418FC2F5F80D7F51410AD7A3A01B6F54417B14AE770E7F5141F6285C0F1F6F54418FC2F5F80D7F514114AE4731206F5441B81E85EB0B7F51411F85EBF1236F54417B14AE87077F5141C3F5289C256F54410AD7A380067F5141F6285C0F236F5441EC51B84E047F5141295C8FB2236F5441AE47E1FA047F51417B14AE77256F544114AE4761047F5141D7A3700D286F5441AE47E1CA027F514185EB51A82A6F544148E17AA4017F5141F6285C5F2D6F544114AE4731017F514148E17AF42E6F5441AE47E11A017F5141B81E85DB306F54411F85EB11027F5141B81E852B306F544166666646027F51413D0AD7A3326F54417B14AEB7027F5141F6285CAF316F54415C8FC285037F51413D0AD773306F5441000000C0057F5141D7A370BD2F6F54415C8FC265097F51418FC2F5682F6F5441000000900E7F514152B81E752F6F5441EC51B88E0F7F5141A4703D5A316F5441D7A3705D107F51410AD7A3A0336F5441EC51B8EE107F514133333323366F544148E17AA4117F5141F6285C1F396F5441B81E85BB127F51413D0AD7333C6F544100000040147F514166666646416F544114AE4731167F51411F85EB71456F544166666616187F5141295C8FC2486F54417B14AE071A7F5141333333B34B6F54418FC2F5C81B7F5141A4703DFA4C6F544148E17AF41F7F51411F85EBE14C6F544133333343257F5141D7A3708D4C6F5441CDCCCC5C277F5141D7A3705D4C6F5441666666B6287F51417B14AEE7466F5441333333032A7F51418FC2F538426F54417B14AE672B7F5141A4703D7A3F6F5441AE47E1EA2D7F5141CDCCCCBC3C6F544133333383427F5141295C8F022E6F544185EB51783D7F514148E17A642F6F5441E17A14EE347F5141295C8F62316F54418FC2F5882B7F51419A9999A9336F5441F6285CFF297F5141AE47E19A336F5441C3F5287C297F514166666626336F5441C3F5281C2A7F514185EB5128316F54418FC2F5882B7F5141713D0AB72C6F544152B81EF52C7F5141000000E0276F5441C3F528BC337F5141AE47E12A266F5441A4703D6A3D7F51413D0AD7E3236F544100000020467F5141713D0AD7216F5441CDCCCC4C4D7F5141333333B3206F5441713D0A17507F51418FC2F578206F5441A4703D8A527F51410AD7A3D0206F54417B14AEF7537F5141713D0A87216F5441D7A3705D557F5141713D0A87206F54417B14AE475D7F5141713D0A071A6F544114AE4721597F5141295C8F12186F5441E17A14AE417F51417B14AE77186F5441000000E0407F5141713D0AB7186F5441713D0AF7397F5141F6285CBF1C6F54413D0AD763357F514114AE47611F6F5441
+</a>
+
+<b>
+010600000001000000010300000001000000220000009363CF4F027F5141FABB4403306F5441C5D120740C7F51410D10B9522B6F5441F60E9A1D107F5141DA897DB4296F544182726232157F51419B59EA0F296F544142DFD5C81D7F5141324CAE47296F54412A8077F7257F5141EA02E0CC296F54419F43A15A357F51413BA380671F6F54415BAC724E317F5141445456311D6F5441451137082F7F5141E67967981B6F5441B3373A05247F5141CF3C1CC6136F544136B65322227F5141B3F64B1C166F5441D15927E81E7F514101A2DEAC196F5441CA516D4E167F51418538B2791B6F5441B40281AA107F5141ABA1298E1A6F544181718E0F0E7F51413EC60F88196F54414C01020F0C7F514149FFDE5B196F54410B061E63097F5141DF011DE2196F5441603BBA9E097F5141FB0AA5EE1A6F54413750C7E50A7F514114F91BE31A6F54417F6C62FC0D7F5141AE95A8A21B6F5441F32D153D0E7F5141EE666C951F6F5441303A5E3F0D7F5141D3AFBB9E216F5441E9D92DF00B7F51413CE666E9236F5441108B4B95077F51414F06FF96256F5441D1A90774067F514178BA0513236F5441BD414F50047F514193DE7BAD236F5441E97B40FC047F5141AA4BCEA2256F54415D3C3B7D047F5141D51E0495276F54410C42AE39047F514112792A5B286F54412A153CC2027F51417EFDBABC2A6F5441805FC8B6017F5141735226342D6F54419E6DA22F017F5141031942182F6F5441475B871C017F5141F46A58DA306F54419363CF4F027F5141FABB4403306F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 28568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B84544133333313B31551418FC2F5E85884544166666626C01551413D0AD733528454418FC2F588D6155141713D0A0744845441F6285C5FE5155141295C8F123984544148E17A04F115514100000030308454415C8FC2050116514148E17A342284544185EB51F8FB155141B81E855B1D845441713D0AE7F7155141333333E318845441713D0AD7E5155141B81E85FB28845441B81E857BDC155141AE47E19A3084544152B81E55CE155141666666463C84544152B81E55C91551413D0AD77340845441666666D6C71551418FC2F59841845441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A8454410F04192BF815514190142177188454410B838262F715514109533F4A178454419D17C968E415514173238716288454416BD37547CA155141F6E7E0153D845441B7C1690FAF1551419E2898C55184544133FD0F109A155141045E6E6460845441BC090B998B155141DE8FA891698454416740FBAF851551418190B54D5F84544132ABA7EDA2155141610A9104458454411CF73FAEBD155141D50F54AA2B845441E5CC5ECFE61551418132A92C05845441E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F8454414543400FBA155141ED7FB3942C845441483FCAEAAB155141893FC3013A84544150BBB0B7A015514108C7CFF444845441303A63649C1551418C89AF3649845441C9A15872951551413B308A005084544197213526951551412979284B50845441A2D420239515514135A0F74D508454418FEE75009515514123EFD96F5084544141DD54AD941551419E5F6EB950845441BCF4673690155141D2FD19CC548454415424522C8D1551417FCFC45D57845441CFC947FD8C1551416F77878557845441BCDCBFC98C155141A854FAAA5784544159AF815E86155141DF1719B25C8454413AA9791486155141949E20EE5C8454412082CDAE83155141A4AD328D5E8454416D0B9E3184155141098C68815F845441730051B58A1551418CB975496B845441F54A96BD8C1551417DF5D8406A845441FDF5C03B9515514106902BE464845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 72134
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B84544133333313B31551418FC2F5E85884544166666626C01551413D0AD733528454418FC2F588D6155141713D0A0744845441F6285C5FE5155141295C8F123984544148E17A04F115514100000030308454415C8FC2050116514148E17A342284544185EB51F8FB155141B81E855B1D845441713D0AE7F7155141333333E318845441713D0AD7E5155141B81E85FB28845441B81E857BDC155141AE47E19A3084544152B81E55CE155141666666463C84544152B81E55C91551413D0AD77340845441666666D6C71551418FC2F59841845441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A8454410F04192BF815514190142177188454410B838262F715514109533F4A178454419D17C968E415514173238716288454416BD37547CA155141F6E7E0153D845441B7C1690FAF1551419E2898C55184544133FD0F109A155141045E6E6460845441BC090B998B155141DE8FA891698454416740FBAF851551418190B54D5F84544132ABA7EDA2155141610A9104458454411CF73FAEBD155141D50F54AA2B845441E5CC5ECFE61551418132A92C05845441E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F8454414543400FBA155141ED7FB3942C845441483FCAEAAB155141893FC3013A84544150BBB0B7A015514108C7CFF444845441303A63649C1551418C89AF3649845441C9A15872951551413B308A005084544197213526951551412979284B50845441A2D420239515514135A0F74D508454418FEE75009515514123EFD96F5084544141DD54AD941551419E5F6EB950845441BCF4673690155141D2FD19CC548454415424522C8D1551417FCFC45D57845441CFC947FD8C1551416F77878557845441BCDCBFC98C155141A854FAAA5784544159AF815E86155141DF1719B25C8454413AA9791486155141949E20EE5C8454412082CDAE83155141A4AD328D5E8454416D0B9E3184155141098C68815F845441730051B58A1551418CB975496B845441F54A96BD8C1551417DF5D8406A845441FDF5C03B9515514106902BE464845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 1062002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE18354419A9999792E1A51418FC2F518E28354415C8FC2A52A1A514148E17AF4E28354411F85EBE1181A5141B81E857BE78354410AD7A330121A5141C3F528ACE8835441C3F528FC0E1A5141EC51B81EE9835441666666360E1A51410AD7A3D0E9835441A4703D6A101A5141D7A370CDEF835441000000D0141A5141666666C6FD83544114AE47F1171A5141000000E0058454419A9999F9191A51415C8FC205058454417B14AEC71D1A5141333333230A84544152B81E951F1A5141B81E852B0B84544100000050211A51413D0AD7E30D845441B81E85CB221A5141713D0A770E845441D7A370BD271A51418FC2F5181984544166666686241A5141295C8F521B845441E17A14BE181A51419A9999791C8454415C8FC2B50C1A5141F6285C4F1E8454419A9999E90B1A51411F85EB411D8454419A999989031A51411F85EBB11E8454419A9999B9021A51411F85EB011D8454419A9999B9061A51411F85EB611B8454419A999909071A51411F85EB31168454419A999999051A51411F85EB41138454419A999909FE1951411F85EB71088454419A999949FC1951411F85EB810684544185EB51D8DD1951419A9999E90F845441295C8FA2C6195141B81E85DB1784544114AE4791C11951411F85EB811A845441F6285C3FBD195141B81E85EB1F84544100000050BA195141C3F5287C26845441333333B3B8195141333333932A8454413D0AD793BF1951413D0AD7532E8454415C8FC255C2195141B81E85CB3084544133333333C719514185EB51183684544114AE4741D019514185EB519833845441333333D3D719514148E17A843E845441EC51B8FEDD195141AE47E1CA4684544100000090E91951417B14AE9744845441000000F0F8195141D7A370ED4384544185EB51D8071A51411F85EB2143845441A4703D9A0C1A51410000007042845441A4703D5A1D1A51417B14AEF73F8454410AD7A3402C1A51417B14AEB73D845441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000702DEA231A1A5141FC104FEF04845441A0C3A6F6191A51412EE95EAF0484544113C26A70191A514168536EA6038454410D3262DA181A514172F54E7E0284544162D092F3161A514125938478FE83544147C38CCA151A5141969BD6A5FB835441D97B2FDB131A5141C8E994F0F6835441394E2CCF121A51413911F568F78354415AB11632131A5141E6BF3FA3F8835441BF0451E7141A5141FB2E7DDCFD835441A2956E57171A5141039E1333058454412755DF31181A514140EB6EA90784544152B81E95191A5141333333830B8454417B14AEC71D1A5141333333230A845441A50ACC371C1A51412AADA2DE07845441702DEA231A1A5141FC104FEF04845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 3010343
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE18354419A9999792E1A51418FC2F518E28354415C8FC2A52A1A514148E17AF4E28354411F85EBE1181A5141B81E857BE78354410AD7A330121A5141C3F528ACE8835441C3F528FC0E1A5141EC51B81EE9835441666666360E1A51410AD7A3D0E9835441A4703D6A101A5141D7A370CDEF835441000000D0141A5141666666C6FD83544114AE47F1171A5141000000E0058454419A9999F9191A51415C8FC205058454417B14AEC71D1A5141333333230A84544152B81E951F1A5141B81E852B0B84544100000050211A51413D0AD7E30D845441B81E85CB221A5141713D0A770E845441D7A370BD271A51418FC2F5181984544166666686241A5141295C8F521B845441E17A14BE181A51419A9999791C8454415C8FC2B50C1A5141F6285C4F1E8454419A9999E90B1A51411F85EB411D8454419A999989031A51411F85EBB11E8454419A9999B9021A51411F85EB011D8454419A9999B9061A51411F85EB611B8454419A999909071A51411F85EB31168454419A999999051A51411F85EB41138454419A999909FE1951411F85EB71088454419A999949FC1951411F85EB810684544185EB51D8DD1951419A9999E90F845441295C8FA2C6195141B81E85DB1784544114AE4791C11951411F85EB811A845441F6285C3FBD195141B81E85EB1F84544100000050BA195141C3F5287C26845441333333B3B8195141333333932A8454413D0AD793BF1951413D0AD7532E8454415C8FC255C2195141B81E85CB3084544133333333C719514185EB51183684544114AE4741D019514185EB519833845441333333D3D719514148E17A843E845441EC51B8FEDD195141AE47E1CA4684544100000090E91951417B14AE9744845441000000F0F8195141D7A370ED4384544185EB51D8071A51411F85EB2143845441A4703D9A0C1A51410000007042845441A4703D5A1D1A51417B14AEF73F8454410AD7A3402C1A51417B14AEB73D845441
+</a>
+
+<b>
+010600000001000000010300000001000000130000005AD89B652B1A5141492E01AA178454416D7AF78B2C1A5141BBED5486178454417B12CB382E1A5141306CB3C6148454411C8DA5F62E1A5141CB142F8F13845441D6DA7A7A2F1A51418841DEB6128454414E1EB9D52F1A5141E8582721128454416CDFB1A7301A51415349A0C810845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454416D20BCD5371A51415388520005845441C370524F341A514181A3ED9D06845441FBCAFB47291A5141B67A919A0B845441FCA0FFAE241A5141E4A7A0990D845441B7F018C7261A51413EFAC2D111845441970A83EA2A1A51413AA88866108454410BD4D7F02B1A514169D607F011845441EFEBA9DC2B1A5141022CFFE0158454419E7419212B1A5141F0BEF8B0178454415AD89B652B1A5141492E01AA17845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 3827226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE18354419A9999792E1A51418FC2F518E28354415C8FC2A52A1A514148E17AF4E28354411F85EBE1181A5141B81E857BE78354410AD7A330121A5141C3F528ACE8835441C3F528FC0E1A5141EC51B81EE9835441666666360E1A51410AD7A3D0E9835441A4703D6A101A5141D7A370CDEF835441000000D0141A5141666666C6FD83544114AE47F1171A5141000000E0058454419A9999F9191A51415C8FC205058454417B14AEC71D1A5141333333230A84544152B81E951F1A5141B81E852B0B84544100000050211A51413D0AD7E30D845441B81E85CB221A5141713D0A770E845441D7A370BD271A51418FC2F5181984544166666686241A5141295C8F521B845441E17A14BE181A51419A9999791C8454415C8FC2B50C1A5141F6285C4F1E8454419A9999E90B1A51411F85EB411D8454419A999989031A51411F85EBB11E8454419A9999B9021A51411F85EB011D8454419A9999B9061A51411F85EB611B8454419A999909071A51411F85EB31168454419A999999051A51411F85EB41138454419A999909FE1951411F85EB71088454419A999949FC1951411F85EB810684544185EB51D8DD1951419A9999E90F845441295C8FA2C6195141B81E85DB1784544114AE4791C11951411F85EB811A845441F6285C3FBD195141B81E85EB1F84544100000050BA195141C3F5287C26845441333333B3B8195141333333932A8454413D0AD793BF1951413D0AD7532E8454415C8FC255C2195141B81E85CB3084544133333333C719514185EB51183684544114AE4741D019514185EB519833845441333333D3D719514148E17A843E845441EC51B8FEDD195141AE47E1CA4684544100000090E91951417B14AE9744845441000000F0F8195141D7A370ED4384544185EB51D8071A51411F85EB2143845441A4703D9A0C1A51410000007042845441A4703D5A1D1A51417B14AEF73F8454410AD7A3402C1A51417B14AEB73D845441
+</a>
+
+<b>
+010600000001000000010300000001000000130000005AD89B652B1A5141492E01AA178454416D7AF78B2C1A5141BBED5486178454417B12CB382E1A5141306CB3C6148454411C8DA5F62E1A5141CB142F8F13845441D6DA7A7A2F1A51418841DEB6128454414E1EB9D52F1A5141E8582721128454416CDFB1A7301A51415349A0C810845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454416D20BCD5371A51415388520005845441C370524F341A514181A3ED9D06845441FBCAFB47291A5141B67A919A0B845441FCA0FFAE241A5141E4A7A0990D845441B7F018C7261A51413EFAC2D111845441970A83EA2A1A51413AA88866108454410BD4D7F02B1A514169D607F011845441EFEBA9DC2B1A5141022CFFE0158454419E7419212B1A5141F0BEF8B0178454415AD89B652B1A5141492E01AA17845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 3827251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE18354419A9999792E1A51418FC2F518E28354415C8FC2A52A1A514148E17AF4E28354411F85EBE1181A5141B81E857BE78354410AD7A330121A5141C3F528ACE8835441C3F528FC0E1A5141EC51B81EE9835441666666360E1A51410AD7A3D0E9835441A4703D6A101A5141D7A370CDEF835441000000D0141A5141666666C6FD83544114AE47F1171A5141000000E0058454419A9999F9191A51415C8FC205058454417B14AEC71D1A5141333333230A84544152B81E951F1A5141B81E852B0B84544100000050211A51413D0AD7E30D845441B81E85CB221A5141713D0A770E845441D7A370BD271A51418FC2F5181984544166666686241A5141295C8F521B845441E17A14BE181A51419A9999791C8454415C8FC2B50C1A5141F6285C4F1E8454419A9999E90B1A51411F85EB411D8454419A999989031A51411F85EBB11E8454419A9999B9021A51411F85EB011D8454419A9999B9061A51411F85EB611B8454419A999909071A51411F85EB31168454419A999999051A51411F85EB41138454419A999909FE1951411F85EB71088454419A999949FC1951411F85EB810684544185EB51D8DD1951419A9999E90F845441295C8FA2C6195141B81E85DB1784544114AE4791C11951411F85EB811A845441F6285C3FBD195141B81E85EB1F84544100000050BA195141C3F5287C26845441333333B3B8195141333333932A8454413D0AD793BF1951413D0AD7532E8454415C8FC255C2195141B81E85CB3084544133333333C719514185EB51183684544114AE4741D019514185EB519833845441333333D3D719514148E17A843E845441EC51B8FEDD195141AE47E1CA4684544100000090E91951417B14AE9744845441000000F0F8195141D7A370ED4384544185EB51D8071A51411F85EB2143845441A4703D9A0C1A51410000007042845441A4703D5A1D1A51417B14AEF73F8454410AD7A3402C1A51417B14AEB73D845441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000702DEA231A1A5141FC104FEF04845441A0C3A6F6191A51412EE95EAF0484544113C26A70191A514168536EA6038454410D3262DA181A514172F54E7E0284544162D092F3161A514125938478FE83544147C38CCA151A5141969BD6A5FB835441D97B2FDB131A5141C8E994F0F6835441394E2CCF121A51413911F568F78354415AB11632131A5141E6BF3FA3F8835441BF0451E7141A5141FB2E7DDCFD835441A2956E57171A5141039E1333058454412755DF31181A514140EB6EA90784544152B81E95191A5141333333830B8454417B14AEC71D1A5141333333230A845441A50ACC371C1A51412AADA2DE07845441702DEA231A1A5141FC104FEF04845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322183 - 3013384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F8154415C8FC2156F1B51417B14AEA75A81544148E17A146A1B51415C8FC2E55781544166666666671B51413D0AD7B3558154417B14AE57641B51410AD7A34053815441D7A370ED5E1B51419A9999694F8154417B14AE775A1B51411F85EB914C81544133333303581B51410AD7A3B04B815441F6285C2F551B51418FC2F5384B8154413D0AD703531B5141B81E85CB4A815441333333634B1B51418FC2F5D8498154417B14AE974A1B5141B81E854B4981544133333343491B5141A4703DBA48815441D7A3707D421B51411F85EBE14481544185EB51D8321B514185EB51483B8154419A9999D9261B5141EC51B80E33815441D7A3703D261B51418FC2F528398154417B14AE77271B5141D7A3704D40815441C3F528BC291B5141D7A370AD468154413D0AD7132C1B514152B81E854C815441AE47E18A2F1B514133333333538154411F85EBC1361B514114AE4701558154418FC2F5D83B1B51417B14AE77568154411F85EB31371B51410000008067815441B81E85EB361B514114AE475168815441C3F5289C301B514114AE4781788154410AD7A3202F1B514152B81E257C815441E17A14EE2C1B514148E17AB481815441CDCCCC5C2B1B51418FC2F5788781544152B81E452D1B5141AE47E1FA87815441D7A3706D351B51419A999979898154410AD7A340371B514152B81EC589815441295C8FD23C1B5141B81E85DB8A8154417B14AE373A1B5141B81E853B99815441CDCCCC6C3A1B5141AE47E15A9A815441EC51B83E421B5141000000B0968154417B14AEB7441B51418FC2F528958154413D0AD763451B51417B14AEF79581544185EB51B8451B51415C8FC2659681544152B81E555A1B5141000000408E81544148E17AA45D1B51419A9999598C815441EC51B84E5F1B5141B81E856B8C8154413D0AD7A3601B51419A9999F989815441000000F0621B51411F85EBC185815441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BB3C8EAC5B1B5141D2DA79B78C815441B0C21B425C1B5141E5513F1F8D815441ECE8C2295C1B5141BA04822D8D815441EC51B84E5F1B5141B81E856B8C8154413D0AD7A3601B51419A9999F989815441000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F8154415C8FC2156F1B51417B14AEA75A81544148E17A146A1B51415C8FC2E55781544166666666671B51413D0AD7B3558154417B14AE57641B51410AD7A34053815441D7A370ED5E1B51419A9999694F8154417B14AE775A1B51411F85EB914C81544133333303581B51410AD7A3B04B815441F6285C2F551B51418FC2F5384B8154413D0AD703531B5141B81E85CB4A81544175151CDB4D1B5141D791941A4A8154410F3AF1034D1B5141CD91A4304B8154410AA45F074A1B51414C6BB30C4F81544181C8CAF6481B51414442048C5081544148A1D78C461B5141CB98980B54815441C57ADE26431B514154476DF8588154411C3115E0401B51417CCCD3445C8154413B6964E53E1B51418BE2311A5F81544121E783FD3C1B5141C018A1D461815441DE422E593A1B51419906DB9C65815441D92B194F381B5141BDF9418868815441EFCCF201351B5141711028426D815441FA585AEC341B5141942A9D706D815441F02ABAA9341B5141A89E881B6E8154419C76B9B4331B5141D7950E9070815441C31E2F95331B5141D3EFF3E5708154416F60D0053B1B51418966880F768154417D889EE4461B5141A772174C7E815441474C0B844F1B5141C12EC64784815441F4667AE5581B51417C4613CA8A815441BB3C8EAC5B1B5141D2DA79B78C815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322183 - 3392696
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F8154415C8FC2156F1B51417B14AEA75A81544148E17A146A1B51415C8FC2E55781544166666666671B51413D0AD7B3558154417B14AE57641B51410AD7A34053815441D7A370ED5E1B51419A9999694F8154417B14AE775A1B51411F85EB914C81544133333303581B51410AD7A3B04B815441F6285C2F551B51418FC2F5384B8154413D0AD703531B5141B81E85CB4A815441333333634B1B51418FC2F5D8498154417B14AE974A1B5141B81E854B4981544133333343491B5141A4703DBA48815441D7A3707D421B51411F85EBE14481544185EB51D8321B514185EB51483B8154419A9999D9261B5141EC51B80E33815441D7A3703D261B51418FC2F528398154417B14AE77271B5141D7A3704D40815441C3F528BC291B5141D7A370AD468154413D0AD7132C1B514152B81E854C815441AE47E18A2F1B514133333333538154411F85EBC1361B514114AE4701558154418FC2F5D83B1B51417B14AE77568154411F85EB31371B51410000008067815441B81E85EB361B514114AE475168815441C3F5289C301B514114AE4781788154410AD7A3202F1B514152B81E257C815441E17A14EE2C1B514148E17AB481815441CDCCCC5C2B1B51418FC2F5788781544152B81E452D1B5141AE47E1FA87815441D7A3706D351B51419A999979898154410AD7A340371B514152B81EC589815441295C8FD23C1B5141B81E85DB8A8154417B14AE373A1B5141B81E853B99815441CDCCCC6C3A1B5141AE47E15A9A815441EC51B83E421B5141000000B0968154417B14AEB7441B51418FC2F528958154413D0AD763451B51417B14AEF79581544185EB51B8451B51415C8FC2659681544152B81E555A1B5141000000408E81544148E17AA45D1B51419A9999598C815441EC51B84E5F1B5141B81E856B8C8154413D0AD7A3601B51419A9999F989815441000000F0621B51411F85EBC185815441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BB3C8EAC5B1B5141D2DA79B78C815441B0C21B425C1B5141E5513F1F8D815441ECE8C2295C1B5141BA04822D8D815441EC51B84E5F1B5141B81E856B8C8154413D0AD7A3601B51419A9999F989815441000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F8154415C8FC2156F1B51417B14AEA75A81544148E17A146A1B51415C8FC2E55781544166666666671B51413D0AD7B3558154417B14AE57641B51410AD7A34053815441D7A370ED5E1B51419A9999694F8154417B14AE775A1B51411F85EB914C81544133333303581B51410AD7A3B04B815441F6285C2F551B51418FC2F5384B8154413D0AD703531B5141B81E85CB4A81544175151CDB4D1B5141D791941A4A8154410F3AF1034D1B5141CD91A4304B8154410AA45F074A1B51414C6BB30C4F81544181C8CAF6481B51414442048C5081544148A1D78C461B5141CB98980B54815441C57ADE26431B514154476DF8588154411C3115E0401B51417CCCD3445C8154413B6964E53E1B51418BE2311A5F81544121E783FD3C1B5141C018A1D461815441DE422E593A1B51419906DB9C65815441D92B194F381B5141BDF9418868815441EFCCF201351B5141711028426D815441FA585AEC341B5141942A9D706D815441F02ABAA9341B5141A89E881B6E8154419C76B9B4331B5141D7950E9070815441C31E2F95331B5141D3EFF3E5708154416F60D0053B1B51418966880F768154417D889EE4461B5141A772174C7E815441474C0B844F1B5141C12EC64784815441F4667AE5581B51417C4613CA8A815441BB3C8EAC5B1B5141D2DA79B78C815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322195 - 2995598
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285C6F571D5141CDCCCC6CA6815441C3F5282C621D5141D7A3700DA781544148E17A34631D5141F6285CEFA181544166666606661D514148E17AD498815441CDCCCCEC681D5141333333D391815441A4703DBA6A1D5141000000E08D81544185EB51C86A1D5141EC51B87E8C815441B81E854B6A1D51417B14AE378B8154418FC2F538691D51418FC2F5588A8154417B14AEE7671D51417B14AE278A815441AE47E10A571D5141F6285C5F89815441295C8FC24B1D514185EB51F8888154413D0AD7334A1D51413D0AD7F388815441C3F5289C471D5141CDCCCCEC888154418FC2F5483E1D5141295C8FD288815441E17A145E3D1D5141000000D088815441F6285C7F3C1D5141CDCCCCFC888154413D0AD7E33B1D5141C3F5281C898154410AD7A3A0291D514114AE47218A8154413D0AD703191D51417B14AEB78B8154417B14AE77051D5141EC51B81E8E81544133333393041D514185EB51388E8154418FC2F5C8F61C51411F85EBC18F8154417B14AE87F01C5141EC51B86E918154419A999999E61C514152B81EA591815441000000A0DA1C514152B81EC592815441AE47E1CADA1C5141EC51B86E93815441713D0A87DB1C5141295C8F62978154411F85EBE1DB1C5141713D0A579A815441C3F5281CDC1C5141F6285C3F9D8154413D0AD713DC1C51417B14AEB7A781544148E17A24DC1C5141EC51B81EBA81544100000040DC1C514114AE47B1BE815441B81E855BDC1C514152B81E45C18154419A9999290B1D5141D7A370DDC8815441295C8F92231D5141295C8F72CC815441C3F5282C241D51413D0AD783C6815441A4703D1A251D5141CDCCCC3CBF8154410AD7A320251D51415C8FC2B5BC815441EC51B82E2B1D514185EB5118BD8154410AD7A3902C1D5141E17A141EBD815441333333332E1D51417B14AE47BD81544152B81E45331D5141AE47E12ABE815441000000E0371D514114AE4731BF815441AE47E1DA3E1D5141AE47E1CAC08154410AD7A330461D51415C8FC275C2815441C3F5283C4B1D514133333393C381544148E17A444E1D5141C3F5280CC481544148E17A54541D5141295C8FC2B9815441F6285C6F571D5141CDCCCC6CA6815441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F27B123B381D514132931C6AA081544151E0068B3B1D51417D51EA498E815441E41FDE8B3B1D5141D40A0E4A8E81544172C0148C3B1D5141F177E3488E815441323CDF363D1D51412258EC908E81544163FBCB8B521D514110D0401B92815441FE1A0E09631D5141C514D7D794815441C2560C60671D514115F8399095815441EE7BC8F8671D51417D7EA020948154416730A507691D5141770A5F989181544107E656BB6A1D51410909EBD78D8154418DF060C86A1D5141D6D0AB7C8C815441D761664C6A1D5141EB7A853B8B8154418FC2F538691D51418FC2F5588A815441ECE3E80A681D5141A3D1D32C8A815441A7976735671D5141D73C681F8A815441080A2F58631D5141AFAC80F1898154414CE2D8ED581D5141CC9FC575898154410EE270934A1D5141DFD7DADF888154411D26FC863A1D5141ACA7B9208981544168DE0A95271D51413CB650538A815441B0181E4C201D5141895EBBFB8A815441916F7A6B201D5141FACCD2388C815441199F8EC0201D514197AD10958F81544147BF0B17221D514185D6011C9D8154413B229B3B231D5141BD4B79589D815441F27B123B381D514132931C6AA0815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322195 - 3807333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285C6F571D5141CDCCCC6CA6815441C3F5282C621D5141D7A3700DA781544148E17A34631D5141F6285CEFA181544166666606661D514148E17AD498815441CDCCCCEC681D5141333333D391815441A4703DBA6A1D5141000000E08D81544185EB51C86A1D5141EC51B87E8C815441B81E854B6A1D51417B14AE378B8154418FC2F538691D51418FC2F5588A8154417B14AEE7671D51417B14AE278A815441AE47E10A571D5141F6285C5F89815441295C8FC24B1D514185EB51F8888154413D0AD7334A1D51413D0AD7F388815441C3F5289C471D5141CDCCCCEC888154418FC2F5483E1D5141295C8FD288815441E17A145E3D1D5141000000D088815441F6285C7F3C1D5141CDCCCCFC888154413D0AD7E33B1D5141C3F5281C898154410AD7A3A0291D514114AE47218A8154413D0AD703191D51417B14AEB78B8154417B14AE77051D5141EC51B81E8E81544133333393041D514185EB51388E8154418FC2F5C8F61C51411F85EBC18F8154417B14AE87F01C5141EC51B86E918154419A999999E61C514152B81EA591815441000000A0DA1C514152B81EC592815441AE47E1CADA1C5141EC51B86E93815441713D0A87DB1C5141295C8F62978154411F85EBE1DB1C5141713D0A579A815441C3F5281CDC1C5141F6285C3F9D8154413D0AD713DC1C51417B14AEB7A781544148E17A24DC1C5141EC51B81EBA81544100000040DC1C514114AE47B1BE815441B81E855BDC1C514152B81E45C18154419A9999290B1D5141D7A370DDC8815441295C8F92231D5141295C8F72CC815441C3F5282C241D51413D0AD783C6815441A4703D1A251D5141CDCCCC3CBF8154410AD7A320251D51415C8FC2B5BC815441EC51B82E2B1D514185EB5118BD8154410AD7A3902C1D5141E17A141EBD815441333333332E1D51417B14AE47BD81544152B81E45331D5141AE47E12ABE815441000000E0371D514114AE4731BF815441AE47E1DA3E1D5141AE47E1CAC08154410AD7A330461D51415C8FC275C2815441C3F5283C4B1D514133333393C381544148E17A444E1D5141C3F5280CC481544148E17A54541D5141295C8FC2B9815441F6285C6F571D5141CDCCCC6CA6815441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F27B123B381D514132931C6AA081544151E0068B3B1D51417D51EA498E815441E41FDE8B3B1D5141D40A0E4A8E81544172C0148C3B1D5141F177E3488E815441323CDF363D1D51412258EC908E81544163FBCB8B521D514110D0401B92815441FE1A0E09631D5141C514D7D794815441C2560C60671D514115F8399095815441EE7BC8F8671D51417D7EA020948154416730A507691D5141770A5F989181544107E656BB6A1D51410909EBD78D8154418DF060C86A1D5141D6D0AB7C8C815441D761664C6A1D5141EB7A853B8B8154418FC2F538691D51418FC2F5588A815441ECE3E80A681D5141A3D1D32C8A815441A7976735671D5141D73C681F8A815441080A2F58631D5141AFAC80F1898154414CE2D8ED581D5141CC9FC575898154410EE270934A1D5141DFD7DADF888154411D26FC863A1D5141ACA7B9208981544168DE0A95271D51413CB650538A815441B0181E4C201D5141895EBBFB8A815441916F7A6B201D5141FACCD2388C815441199F8EC0201D514197AD10958F81544147BF0B17221D514185D6011C9D8154413B229B3B231D5141BD4B79589D815441F27B123B381D514132931C6AA0815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323591 - 189774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A147E25C9504185EB51F86FA654410AD7A3C0FEC850415C8FC2056CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A65441AE47E1AAF4C850411F85EBF171A65441E17A145EF3C85041C3F5287C73A65441295C8FB2F0C85041EC51B86E78A65441666666B61FC9504185EB51B87CA65441E17A147E25C9504185EB51F86FA65441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000001184D7322C9504146EB36AE76A65441034A147E25C95041505752F86FA654418467B806FFC8504188A7E60C6CA65441EAB62A65FEC850412D7B04196CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A6544115821048F5C8504183C4456D71A65441AE47E1AAF4C850411F85EBF171A654411A872A5EF3C8504187D70E7C73A654413719155EF3C85041D935297C73A65441C6AC90B2F0C850419E70B86E78A654415C39C789F7C8504176CE6B0E79A654416EB866B61FC95041923651B87CA6544101184D7322C9504146EB36AE76A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323591 - 389148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A147E25C9504185EB51F86FA654410AD7A3C0FEC850415C8FC2056CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A65441AE47E1AAF4C850411F85EBF171A65441E17A145EF3C85041C3F5287C73A65441295C8FB2F0C85041EC51B86E78A65441666666B61FC9504185EB51B87CA65441E17A147E25C9504185EB51F86FA65441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000001184D7322C9504146EB36AE76A65441034A147E25C95041505752F86FA654418467B806FFC8504188A7E60C6CA65441EAB62A65FEC850412D7B04196CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A6544115821048F5C8504183C4456D71A65441AE47E1AAF4C850411F85EBF171A654411A872A5EF3C8504187D70E7C73A654413719155EF3C85041D935297C73A65441C6AC90B2F0C850419E70B86E78A654415C39C789F7C8504176CE6B0E79A654416EB866B61FC95041923651B87CA6544101184D7322C9504146EB36AE76A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323853 - 234309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B82E18C65041D7A370FDA5AB54410AD7A3B016C650415C8FC2F5A4AB5441CDCCCC1C15C65041EC51B83EA4AB54413D0AD7E30AC6504152B81EF5A1AB544148E17AA40CC65041A4703DBAC8AB5441295C8F420EC650415C8FC2A5C8AB5441A4703DBA19C6504152B81E15C8AB54415C8FC29520C65041F6285CBFC7AB54419A9999491FC65041333333E3AAAB5441EC51B82E18C65041D7A370FDA5AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000017113CBA19C65041A4C91E15C8AB544184FDF2F51CC650415660AFECC7AB54411364C29520C650418F935BBFC7AB54411A43675220C65041575F29E5C1AB54419A9999491FC65041333333E3AAAB54411F1424661DC650417C37F395A9AB54419C6EB82E18C65041CF0D72FDA5AB544117113CBA19C65041A4C91E15C8AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>324422 - 191558
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000000000001E9050410AD7A3C03D265541000000E020905041295C8F523D26554185EB51582290504185EB51483C26554185EB511826905041295C8FC23B265541CDCCCCAC21905041F6285C1F3A26554152B81E351F905041295C8FA2382655419A9999A91B90504152B81E9536265541AE47E10A169050413D0AD7A3342655413333333308905041D7A3704D3026554114AE4711FB8F5041C3F5286C2B265541CDCCCC1CF98F5041666666262E265541713D0A37F18F50417B14AED72B2655418FC2F558ED8F50410AD7A3402D265541E17A141EF28F50410AD7A370312655418FC2F5D803905041000000203526554148E17AD415905041E17A146E3B265541000000001E9050410AD7A3C03D265541
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000008F773FF21905041542031873C26554185EB51582290504185EB51483C265541F0CF5A8F229050411BDEA6403C2655417CA3712924905041A8B2A0773B2655415911F9C52190504161A0312B3B265541377F80621F905041F7048BB83A265541A95AA2C91E905041A7499DB43826554114ED07FF1C9050418620281439265541A048204F1A9050417C17E7D636265541B2889B43199050417377A95C372655418656E56517905041029346B835265541750D2934169050413EA5B5043626554191EDE1A2149050418E5762CB3526554115097FFE12905041003384323526554115097FFE12905041EFE9C7003426554114A07B3B109050411B133DA133265541392072240E905041A8D758B43326554164E9243F0D9050412E53B895322655417629A0330C9050418DEE5E08332655417FC9DDAD0B905041E740494932265541A36E8CD3019050411CA1F8A02E2655419BC50D1C009050413F2A30C72E2655418A7C51EAFE8F5041863C9F132F2655411FE1AA77FE8F50413781B10F2D2655411A11B1D0FA8F504146B0B3C52B26554167BCABF3F98F5041315258FA2C265541FCE52E51F98F50412541361B2E2655411ED4CF24F98F50412541361B2E265541CDCCCC1CF98F5041666666262E2655413B2982F6F88F50412541361B2E26554105866CCBF88F50412541361B2E265541AE210010F58F50416C53A5672E265541299D5FF1F38F504175F3E2E12D26554157BD9354F18F504186D39B502C265541C74FEF0EEE8F5041347C64E02D2655418DFD3228EE8F50410D5992F62D265541FD55D93BEE8F50418A66D2072E265541E7FCB579EE8F50412A1F213E2E26554121F4E039F28F50411C0AFC6331265541F2297AD703905041E7A94C0C3526554152A0680D0C90504174D76BE2372655417934DFC0139050411933B0B33A265541D890EC9215905041984918573B265541E7C3925E1D9050418432AA8E3D265541D583176A1E9050418DD2E7083D265541987AE95A20905041D4E456553D26554108F773FF21905041542031873C265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325165 - 146824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000000C00000052B81ED5E788514114AE47913FA15441713D0AF7E588514148E17AB43EA154415C8FC215E5885141A4703DFA3DA154411F85EB91E38851415C8FC22541A15441EC51B86EE5885141EC51B8AE42A15441E17A14EEE8885141E17A14AE44A15441713D0AD7EB8851413D0AD78345A1544185EB5158EE8851410AD7A3A045A15441D7A370DDEF8851413D0AD7F343A15441713D0AC7F0885141713D0A2741A154415C8FC275E98851413D0AD7133DA1544152B81ED5E788514114AE47913FA154410800000000000040EE885141D7A3700D41A15441C3F5284CEE8851419A9999E941A1544114AE47D1ED8851410AD7A37042A15441D7A3709DEB8851411F85EB3141A154419A9999D9EA8851413D0AD7C340A154419A9999A9EB885141AE47E1DA3FA154419A999919ED8851410AD7A33040A1544100000040EE885141D7A3700D41A154410103000000010000000F000000C3F5284C3B895141333333F350A15441EC51B85E378951417B14AE8752A1544185EB516835895141EC51B80E53A15441EC51B81E35895141CDCCCCBC55A15441CDCCCCBC34895141B81E85FB56A15441EC51B81E33895141E17A14DE56A1544152B81E053389514148E17A7459A154413333337334895141D7A370DD58A15441333333C335895141D7A370DD58A15441AE47E1EA37895141F6285CDF57A1544185EB51F8398951413D0AD7E357A15441B81E85AB3B895141D7A3708D57A15441295C8F623D895141F6285C1F56A15441C3F5281C3D8951411F85EB1152A15441C3F5284C3B895141333333F350A15441010300000002000000220000003D0AD7430D895141CDCCCC9C63A15441000000B00D895141000000D063A154419A9999690F8951410AD7A3A064A15441C3F528CC118951410AD7A3C065A154413D0AD7A3188951413333330365A15441E17A147E1E89514114AE476164A154411F85EB11218951410AD7A30062A1544185EB514821895141EC51B87E5FA1544152B81EC51B8951419A9999095FA1544148E17A84168951417B14AEF75DA154413D0AD703138951415C8FC2055CA15441F6285C5F11895141AE47E1BA58A15441713D0A8712895141EC51B8CE51A1544166666606128951418FC2F55850A154417B14AEB70D8951413D0AD7634EA15441000000D00A895141666666864AA154419A99994907895141CDCCCC3C45A1544114AE4741F2885141295C8FE23FA154413D0AD713F18851415C8FC22544A15441CDCCCCCCF0885141295C8FF245A15441CDCCCCCCF0885141AE47E13A47A154413D0AD713F188514152B81E4548A1544114AE4751F38851418FC2F5C84BA1544166666616F68851411F85EB414EA15441EC51B81EF988514148E17AD450A1544100000050FA8851419A9999D952A15441295C8F02FC88514148E17AB455A15441295C8F02FD8851410AD7A32057A15441333333A3FE885141CDCCCCDC59A154413333331301895141000000705EA15441295C8F82048951413D0AD73363A15441EC51B8CE068951419A99993965A1544185EB51B80789514114AE47F165A154413D0AD7430D895141CDCCCC9C63A1544106000000EC51B8CE0689514148E17A244CA154417B14AEA7098951418FC2F5584EA15441AE47E11A0989514185EB511850A15441CDCCCC2C0789514152B81EA550A154410000001005895141A4703D2A4EA15441EC51B8CE0689514148E17A244CA15441
+</a>
+
+<b>
+010600000001000000010300000003000000A2000000CDCCCCCCF0885141AE47E13A47A1544182D7AB09F18851410697021F48A1544158196E1EF188514172E7BC5548A154416ADD6529F188514118D7F26648A1544114AE4751F38851418FC2F5C84BA1544110AFE3FDF48851419C5389474DA1544186A45E58F58851411D914C984DA1544195F8333AF88851414873A01250A15441EC51B81EF988514148E17AD450A1544100000050FA8851419A9999D952A154410952E740FB88514129ADC56E54A15441D1FC3942FB88514127B1F97054A15441EE3A695BFC8851415EE1DE3256A15441295C8F02FD8851410AD7A32057A15441D14BF753FD885141342D71A957A1544191BDE07CFD8851411CB631EE57A15441333333A3FE885141CDCCCCDC59A15441DE821FEDFE885141C2468C675AA15441BFC51875FF885141667A91525BA15441B04F06C1FF885141E55845F55BA154413333331301895141000000705EA154413CAFE75B0389514120EC189B61A15441A28EF7A703895141823872F861A154412A074CA0048951418AA1664163A15441EC2DEBB5058951413DC6684264A1544129EDAC44068951410AB742A864A15441CF61A1AC06895141523C971B65A15441146EAB7907895141E49704C065A154414D686FD4078951412651AFFB65A15441A001EF82088951417C53433C66A1544114AE47F1098951413D0AD7C366A15441086359090C8951413039E45567A154411476EC730C89514124C8C26D67A15441812FF9370D89514141CC956167A154414DE245790D895141539A875D67A1544128CF23C00D895141D2E4205967A1544198C9A6220E8951419EA9025367A154413DD8BD500E89514105E1255067A15441AD55436E0E895141E684504E67A1544148E17AC40E8951418FC2F54867A15441A4703D4A11895141295C8F2267A15441D757724E11895141AD9F212267A154417859B57311895141C599551E67A1544141B3585912895141062EEF0667A15441A0705331138951411910EDF066A15441F5ACD1AC13895141EA9357E466A154412F15C9241489514139171ED866A1544146227854158951417E805EA066A154411F643C9D178951419F9F582A66A15441F1B8ECBF17895141C70BCE1E66A154416F72918D18895141DC9A62DA65A15441E6C481AD18895141F0E0336C65A154413D0AD7A3188951413333330365A15441FE8FFCA718895141427AC00265A154411D7B51A6188951410244E2E264A154413483B017198951419203AEF664A15441E17A147E1E89514114AE476164A154411F85EB11218951410AD7A30062A1544120ACD04621895141DF3D7A905FA15441DFAF782D2189514170E37D7C5FA154418D258F0221895141D429EE785FA154410E9E63B22089514199D946725FA15441DEF0D38F20895141948D686F5FA15441E58DBE5220895141A3C1566A5FA1544102068F531F895141050429555FA1544152B81EC51B8951419A9999095FA154413DF09C031B89514140222EE25EA15441FC8524AF198951415C77D29C5EA154414490F3BD18895141B53EB06B5EA15441C15B47BC17895141B98232375EA15441A629C4B517895141CDE1DE355EA1544148E17A84168951417B14AEF75DA1544121AE7F34158951415C8B1A3D5DA154419E59161D14895141DC0BF1A15CA15441D0206AEF138951413D2694885CA154413D0AD703138951415C8FC2055CA154418FD636FE118951412F5450F959A154415ECC43E4118951416FEA4BC559A154416245F0AA1189514184D9615259A15441AEA60289118951410AF35E0E59A15441F6285C5F11895141AE47E1BA58A154416A396976128951417DC5623252A1544187690287128951415A3CE7CE51A154410B15735412895141E015BB3B51A15441FCD4652312895141A95636AD50A154411DA4502012895141AE5D41A450A15441871C911D12895141A147459C50A15441AC646C121289514100C9E47B50A15441901B550F128951410EBAE97250A15441BBC916F510895141290BDDDC4FA15441C2001E2A0F895141D5732E0C4FA154417B14AEB70D8951413D0AD7634EA1544119FFC0AA0D895141D06BA4524EA15441559140A30D89514110FA024F4EA15441B99BFA0D0D895141A3080F824DA15441000000D00A895141666666864AA154419A99994907895141CDCCCC3C45A1544114AE47F10889514185EB518845A154413D0AD7A30A895141713D0A3745A154418B2DE9240C89514172F6B39245A154410E3CCC850D8951416A70B4E645A1544148E17A5411895141EC51B8CE46A15441C3F5280C158951419A9999F947A154411F85EB612389514114AE47A14AA154410E3CCAD324895141B2B75AED4AA15441F6AB8A0426895141DD08092C4BA154416C07C64926895141E159463A4BA15441E17A14FE26895141F6285C5F4BA15441333333132B895141AE47E18A4CA154417B14AE572C89514185EB51B84AA15441A4703D6A2E895141666666464BA154417B14AEA7308951410000004049A15441713D0AC7328951417B14AEB748A15441F2AD5F1934895141BAD094A446A15441E3310942348951411880C06446A15441244072D63489514145CFD22045A15441F47AE4E5348951417645FEFE44A154410E4A94F134895141819F65E544A15441062DDA263589514132FAB77044A15441E216B94A358951419698272244A15441A4703D8A35895141713D0A9743A1544185EB51B83389514152B81E9543A154414BC599A4328951418903326443A154419945A8BD318951412148373B43A1544152B81E6530895141E17A14FE42A15441E17A14AE2A8951418FC2F5C841A154417B14AE371A8951413D0AD7233EA15441D7A3703D19895141C3F528EC3DA154418FC2F59815895141CDCCCCEC3CA154410000004014895141E17A148E3CA1544179EFC1F6108951411877E4813BA1544183AE54541089514143631C4E3BA1544106399CDD0C895141ECC86C333AA15441D8E8A2BF0C8951419489DE293AA15441439910720C89514170B823113AA15441070A4A4C0B895141B2B4E0C239A15441666666060B8951410AD7A3B039A15441AE47E10A068951413333336338A15441AB14719E058951410A64D94638A1544199558C66038951416D1760B237A1544187FBC8F202895141B3071C9437A154415FD91E8602895141FD12B37737A15441D36BD2330089514117D0D4F736A154415E5581F9F48851416582609D34A154418BAE455DF48851410A7B608634A154418FC2F528F4885141295C8FF236A154411F85EBE1F388514148E17A9439A154415C8FC265F388514185EB51F83BA15441717E773CF388514190BFD1853CA1544169818E27F3885141B1CF78CD3CA1544152778D0FF388514108FEB91F3DA1544193904605F3885141904AF1423DA15441B43D38F7F2885141E5A61B733DA15441DFA42DF4F2885141C4AA877D3DA15441E814E6ECF28851414B8779963DA154417A7C27FFF1885141DBB3EED140A15441A82EA577F1885141432178BC42A15441D3930934F1885141B1EC34B143A154413060F018F1885141DA4C4D1344A154414A0472E2F08851412955286645A15441CDCCCCCCF0885141B080576046A15441CDCCCCCCF0885141AE47E13A47A1544106000000CDCCCC2C0789514152B81EA550A154410000001005895141A4703D2A4EA15441EC51B8CE0689514148E17A244CA154417B14AEA7098951418FC2F5584EA15441AE47E11A0989514185EB511850A15441CDCCCC2C0789514152B81EA550A1544106000000000000B00D895141000000D063A154419A9999690F8951410AD7A3A064A15441713D0AE70E895141CDCCCC2C65A15441713D0A870E8951410AD7A35065A15441F6285C4F0D8951410AD7A36064A15441000000B00D895141000000D063A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325176 - 146827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000001F85EBD1E188514152B81E0542A15441EC51B8AEE1885141295C8F9242A1544185EB51D8E1885141D7A3702D43A15441F6285C9FE38851411F85EBA144A15441A4703D3AE4885141B81E85AB48A15441AE47E12AE28851419A9999E948A1544100000090E188514148E17AF448A15441C3F5285CE1885141F6285CEF46A15441713D0A17E0885141000000F046A154419A9999A9E08851419A9999194CA154413D0AD7F3E0885141666666B64DA154419A9999A9E188514152B81E954BA1544148E17AA4E18851411F85EB914AA154418FC2F568E2885141666666F649A15441AE47E1DAE28851418FC2F5B849A154410AD7A310E48851418FC2F5B849A1544152B81ED5E488514152B81E854AA1544185EB5128E5885141666666664BA154417B14AE47E68851417B14AE574BA15441000000A0E68851413D0AD7534AA154410AD7A380E7885141E17A14BE47A1544148E17A54E58851413D0AD7E345A15441CDCCCC8CE4885141A4703D1A44A154410AD7A320E38851411F85EBC142A154411F85EBD1E188514152B81E0542A15441010300000001000000140000003D0AD793CA885141EC51B89E5DA1544152B81E45CA885141F6285CDF5EA15441000000E0D088514114AE47F162A1544133333373D48851418FC2F5585FA15441713D0A37D98851410AD7A3605CA15441000000A0DB885141D7A3705D5BA15441295C8FD2DE88514114AE470152A1544148E17AB4DD885141666666264AA15441295C8FB2DD88514185EB513849A154415C8FC2A5DD885141CDCCCCCC43A1544166666636DE885141333333E340A15441295C8FF2DC88514114AE476140A15441B81E858BDD885141333333F33EA1544114AE4711DD885141D7A3709D3EA15441D7A3701DDB88514185EB51C842A154410AD7A3F0D88851415C8FC27547A15441295C8FE2D78851419A9999B949A154418FC2F528D48851415C8FC2B551A15441D7A3701DCE885141C3F528CC4FA154413D0AD793CA885141EC51B89E5DA15441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000ACF92928E78851410AD8A27247A1544148E17A54E58851413D0AD7E345A154419C1F0A98E4885141684EFF3344A1544158A40F8EE48851414649211D44A154419102931DE3885141B220C1C142A15441313F880CE288514173302E2642A1544117C93109E2885141313A4C2442A15441E11BB308E288514163C6042442A15441BF726304E28851415040962142A1544126E241F2E188514100295C1742A154414BC5CAE8E18851411A65051242A154415BBD99E6E18851417EF1C81042A154413AEFB2DAE1885141D161120A42A15441F39EF5D3E18851418036450642A15441CFB8A3B1E1885141CA29D48642A15441EC51B8AEE1885141295C8F9242A15441F42BA7D2E18851416064571843A154412E7317D9E1885141C154122E43A15441F6285C9FE38851411F85EBA144A15441CF0C6AA1E388514174ED8DAE44A15441F383ADBBE38851419B7BE65E45A15441964176BCE38851411B23226445A15441CFCB72BDE3885141BF79B76A45A154411E2862C4E38851418E70FF9845A15441DF6869C6E3885141DEB388A645A154417D0CFDCCE3885141098F6CD245A154412AC149D2E38851416F9BCAF545A15441040666D4E38851410F1FE00346A154411DB6C6ECE3885141CBAF8FA646A15441A5B69A3BE488514123F986AA48A15441332B233AE48851410FCCD5AA48A15441A4703D3AE4885141B81E85AB48A15441AE47E12AE28851419A9999E948A1544100000090E188514148E17AF448A15441C3F5285CE1885141F6285CEF46A15441713D0A17E0885141000000F046A15441B4D34678E08851417216D45C4AA154414D2DFE91E0885141EA3AB9444BA154419A9999A9E08851419A9999194CA15441A5901EDCE08851415D5881324DA154415EA300F5E0885141EF9AE9B24DA154419A9999A9E188514152B81E954BA1544148E17AA4E18851411F85EB914AA154418FC2F568E2885141666666F649A15441AE47E1DAE28851418FC2F5B849A154418FFD2A0FE4885141C9E68BB749A154419FCC1C1FE4885141D554BFC149A15441A9597791E48851411D5FD23E4AA1544152B81ED5E488514152B81E854AA1544185EB5128E5885141666666664BA154417B14AE47E68851417B14AE574BA15441000000A0E68851413D0AD7534AA15441D56B0480E7885141521BEABF47A15441ACF92928E78851410AD8A27247A15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325406 - 1182046
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000020000000103000000010000000B000000713D0A471A86514152B81EF5B09B5441333333332086514185EB5158B79B54411F85EBF12C8651418FC2F518C59B5441A4703DFA4786514152B81E45BB9B54411F85EBA150865141F6285C1FB89B54411F85EB214D86514185EB5158B49B54419A999959418651411F85EBA1A79B54413D0AD7433386514100000070989B5441A4703D0A2B865141CDCCCCEC9C9B544133333393138651419A9999B9A99B5441713D0A471A86514152B81EF5B09B544101030000000100000007000000295C8FC20D86514133333373A39B5441D7A370DD1286514152B81EF5A89B5441F6285C8F32865141C3F528AC979B5441666666762C865141EC51B81E919B54415C8FC26525865141C3F5288C949B5441295C8F820E8651413D0AD713A19B5441295C8FC20D86514133333373A39B5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000867F56D932865141B0511014989B5441F6285C8F32865141C3F528AC979B54414A6863232D8651415EE89DD8919B5441F4DCB05825865141538E7609969B5441DF7BC3330E8651417E68190DA29B5441D9480FD80D865141D513658AA39B544130838AC211865141CC85EAC3A79B5441F94CA3EF128651419C1932EBA89B5441968553E41286514138535DF1A89B54417DE79AC51386514110AAFDEFA99B54411C7FF82D16865141F534B282AC9B5441B12EDE491A8651415727B8F7B09B54415571026E1D865141FCA53C5BB49B5441333333332086514185EB5158B79B54415F4BD48822865141293631DDB99B54416F0454DF2C8651410704E604C59B5441A4703DFA4786514152B81E45BB9B54411F85EBA150865141F6285C1FB89B54411F85EB214D86514185EB5158B49B54419A999959418651411F85EBA1A79B5441112D08FE35865141B0EA36619B9B54413CEA2C4334865141E62D7583999B54410EB81A58338651417181DC85989B5441867F56D932865141B0511014989B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325406 - 3378659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000020000000103000000010000000B000000713D0A471A86514152B81EF5B09B5441333333332086514185EB5158B79B54411F85EBF12C8651418FC2F518C59B5441A4703DFA4786514152B81E45BB9B54411F85EBA150865141F6285C1FB89B54411F85EB214D86514185EB5158B49B54419A999959418651411F85EBA1A79B54413D0AD7433386514100000070989B5441A4703D0A2B865141CDCCCCEC9C9B544133333393138651419A9999B9A99B5441713D0A471A86514152B81EF5B09B544101030000000100000007000000295C8FC20D86514133333373A39B5441D7A370DD1286514152B81EF5A89B5441F6285C8F32865141C3F528AC979B5441666666762C865141EC51B81E919B54415C8FC26525865141C3F5288C949B5441295C8F820E8651413D0AD713A19B5441295C8FC20D86514133333373A39B5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000867F56D932865141B0511014989B5441F6285C8F32865141C3F528AC979B54414A6863232D8651415EE89DD8919B5441F4DCB05825865141538E7609969B5441DF7BC3330E8651417E68190DA29B5441D9480FD80D865141D513658AA39B544130838AC211865141CC85EAC3A79B5441F94CA3EF128651419C1932EBA89B5441968553E41286514138535DF1A89B54417DE79AC51386514110AAFDEFA99B54411C7FF82D16865141F534B282AC9B5441B12EDE491A8651415727B8F7B09B54415571026E1D865141FCA53C5BB49B5441333333332086514185EB5158B79B54415F4BD48822865141293631DDB99B54416F0454DF2C8651410704E604C59B5441A4703DFA4786514152B81E45BB9B54411F85EBA150865141F6285C1FB89B54411F85EB214D86514185EB5158B49B54419A999959418651411F85EBA1A79B5441112D08FE35865141B0EA36619B9B54413CEA2C4334865141E62D7583999B54410EB81A58338651417181DC85989B5441867F56D932865141B0511014989B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 1354014
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441713D0A0797235141D7A3703D12BB54419A99998999235141AE47E1CA0DBB54419A99995996235141295C8FD20CBB544148E17AF482235141713D0A0708BB5441
+</a>
+
+<b>
+010600000001000000010300000001000000270000003F14EA9799235141491719CF0DBB54416F3B2DEE99235141DED6E0590BBB544123A89DDC9A235141A1CD77AC0ABB54414DCDCCFB9A23514159C5E3F708BB5441D67E24E3992351417049780B06BB54413D0AD7A398235141CDCCCC4C01BB54416666667696235141333333A3FCBA54419A9999399523514152B81E45F9BA544152B81E3595235141D7A3708DF7BA54419A99996995235141E17A143EF6BA544148E17A249623514148E17AC4F4BA5441C3F528BC9723514152B81ED5F1BA54413D0AD7A394235141713D0A57F0BA5441295C8F228F235141666666C6EEBA5441CDCCCCBC8D23514148E17A84EEBA54415C8FC2F588235141295C8FC2EEBA5441713D0A3783235141E17A14FEEEBA54413D0AD7137F2351417B14AE37EFBA5441A4703DFA7A2351415C8FC2F5EEBA544152B81E25772351415C8FC255EFBA5441666666C672235141C3F528FCEFBA5441713D0A076C2351417B14AED7F0BA5441CDCCCCFC69235141EC51B8FEF5BA54418FC2F54867235141F6285C7FF8BA5441666666665F235141AE47E17AFBBA5441CDCCCCBC62235141CDCCCC9CFDBA54418FC2F548672351417B14AE1701BB544185EB51686A235141D7A3709D05BB5441D2BF289C732351418EFBC43706BB5441F1AD96FA7A23514186B81DB406BB54411D3CD9A6812351411AB3AEC707BB54410FFF9E83842351410F18B86908BB5441DCA29D05882351415BA9BA4709BB5441E17DECFE8B23514186A23C430ABB5441511F0FDC8E23514156297DF80ABB5441632CB1F591235141569FB2BC0BBB54414E00FDB794235141577D506B0CBB5441D63C650197235141A1599F050DBB54413F14EA9799235141491719CF0DBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 3484953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441713D0A0797235141D7A3703D12BB54419A99998999235141AE47E1CA0DBB54419A99995996235141295C8FD20CBB544148E17AF482235141713D0A0708BB5441
+</a>
+
+<b>
+010600000001000000010300000001000000270000003F14EA9799235141491719CF0DBB54416F3B2DEE99235141DED6E0590BBB544123A89DDC9A235141A1CD77AC0ABB54414DCDCCFB9A23514159C5E3F708BB5441D67E24E3992351417049780B06BB54413D0AD7A398235141CDCCCC4C01BB54416666667696235141333333A3FCBA54419A9999399523514152B81E45F9BA544152B81E3595235141D7A3708DF7BA54419A99996995235141E17A143EF6BA544148E17A249623514148E17AC4F4BA5441C3F528BC9723514152B81ED5F1BA54413D0AD7A394235141713D0A57F0BA5441295C8F228F235141666666C6EEBA5441CDCCCCBC8D23514148E17A84EEBA54415C8FC2F588235141295C8FC2EEBA5441713D0A3783235141E17A14FEEEBA54413D0AD7137F2351417B14AE37EFBA5441A4703DFA7A2351415C8FC2F5EEBA544152B81E25772351415C8FC255EFBA5441666666C672235141C3F528FCEFBA5441713D0A076C2351417B14AED7F0BA5441CDCCCCFC69235141EC51B8FEF5BA54418FC2F54867235141F6285C7FF8BA5441666666665F235141AE47E17AFBBA5441CDCCCCBC62235141CDCCCC9CFDBA54418FC2F548672351417B14AE1701BB544185EB51686A235141D7A3709D05BB5441D2BF289C732351418EFBC43706BB5441F1AD96FA7A23514186B81DB406BB54411D3CD9A6812351411AB3AEC707BB54410FFF9E83842351410F18B86908BB5441DCA29D05882351415BA9BA4709BB5441E17DECFE8B23514186A23C430ABB5441511F0FDC8E23514156297DF80ABB5441632CB1F591235141569FB2BC0BBB54414E00FDB794235141577D506B0CBB5441D63C650197235141A1599F050DBB54413F14EA9799235141491719CF0DBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 36809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441713D0A0797235141D7A3703D12BB54419A99998999235141AE47E1CA0DBB54419A99995996235141295C8FD20CBB544148E17AF482235141713D0A0708BB5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006B8224826A23514180022ADF04BB544185EB51686A235141D7A3709D05BB5441D2BF289C732351418EFBC43706BB5441F1AD96FA7A23514186B81DB406BB54411D3CD9A6812351411AB3AEC707BB54410FFF9E83842351410F18B86908BB5441DCA29D05882351415BA9BA4709BB5441E17DECFE8B23514186A23C430ABB5441511F0FDC8E23514156297DF80ABB5441632CB1F591235141569FB2BC0BBB54414E00FDB794235141577D506B0CBB5441D63C650197235141A1599F050DBB5441588FC65299235141879212BA0DBB5441BA4CE9DE992351412C503AC90BBB54416F3B2DEE99235141DED6E0590BBB544186A57B029A2351419F2C1C4B0BBB5441B1FF7E179A235141EFEC9B000BBB544173B77BAC99235141335811DF0ABB544147F2C38699235141582316A50BBB5441590F978599235141EEF6F0A50BBB5441BDBCA49297235141F417D6EA0ABB544185EB519889235141C3F5287C07BB54413D0AD71381235141A4703D4A06BB54416B8224826A23514180022ADF04BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 76546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441713D0A0797235141D7A3703D12BB54419A99998999235141AE47E1CA0DBB54419A99995996235141295C8FD20CBB544148E17AF482235141713D0A0708BB5441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006B8224826A23514180022ADF04BB544185EB51686A235141D7A3709D05BB5441D2BF289C732351418EFBC43706BB5441F1AD96FA7A23514186B81DB406BB54411D3CD9A6812351411AB3AEC707BB54410FFF9E83842351410F18B86908BB5441DCA29D05882351415BA9BA4709BB5441E17DECFE8B23514186A23C430ABB5441511F0FDC8E23514156297DF80ABB5441632CB1F591235141569FB2BC0BBB54414E00FDB794235141577D506B0CBB5441D63C650197235141A1599F050DBB5441588FC65299235141879212BA0DBB5441BA4CE9DE992351412C503AC90BBB54416F3B2DEE99235141DED6E0590BBB544186A57B029A2351419F2C1C4B0BBB5441B1FF7E179A235141EFEC9B000BBB544173B77BAC99235141335811DF0ABB544147F2C38699235141582316A50BBB5441590F978599235141EEF6F0A50BBB5441BDBCA49297235141F417D6EA0ABB544185EB519889235141C3F5287C07BB54413D0AD71381235141A4703D4A06BB54416B8224826A23514180022ADF04BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>60205 - 955850
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000030000003300000054E3EC6912B450416FF15BC50CD95441060BE1F223B450414A0F31960ED95441B08B35573FB450418599FDC310D95441F1100ACC64B4504178F25D9F1AD954411DA890A560B4504120E0C8F731D9544152B81E4578B450417B14AE5737D95441EC51B80E79B45041F6285C6F37D95441666666F67EB450415C8FC2F537D954415C8FC2658AB45041713D0AD738D954416DD0744A90B4504195D6FE7710D9544113B88D307EB45041EEDE6FA80CD9544112575F4973B4504131A5C4CC09D95441CB7DF5586BB450418C5F1CE205D95441EF9AC1C474B45041256C8568E9D854417124CC2A7AB450412E24AA12D3D854410F54C0667EB45041BA754F0CD8D854418E2BE4E783B45041C03A4BBDE2D8544149B3A8DE86B45041364AD4AAE8D85441F7C0EB5C8AB45041E709FE0DECD85441A6CE2EDB8DB45041A443A9E9EED854416B1E8E6590B45041750D8AECF0D85441084E82A194B450414425840AF3D85441666666A698B450419A999929D8D8544185EB51E890B4504100000040D3D854411F85EB5182B450419A999919C4D8544152B81E956CB450415C8FC255ACD854417B14AE875CB45041000000C0A2D85441B81E85FB54B4504152B81E959DD85441A4703D2A51B450410AD7A3809BD85441F6285CFF4CB4504185EB51F89BD85441295C8FD244B45041F6285C2F9DD8544152B81EA53BB45041CDCCCC2CA0D854411F85EB3134B4504114AE4751A4D8544148E17A942EB450419A9999A9A8D8544174479CCE2AB450414CA131EBABD85441FF22340441B450418509EACEAAD85441D5CCC5F248B4504117A86A3CACD854411569E53E50B450413BE56B17AFD854415196135658B4504190AC426CB2D8544180766DCE62B45041D4B753EDB8D854413917654A70B450419E14113DC3D854414B7DA61F63B450410FC77E65FBD8544127CF261443B45041194FDDD0EFD85441729D20CD34B4504167E24CBDEAD85441C03090B92FB4504106CEA1C9E9D8544198849DA92DB450416B513EF2E9D8544158E87D5D26B4504106CEA1C9E9D85441D0D15B5B19B45041025FB094EAD85441B1ADC7B60BB4504167E24CBDEAD854413B2D8FE506B45041206AEE360BD9544154E3EC6912B450416FF15BC50CD9544105000000AE47E15A2EB450410AD7A360EBD85441AE47E18A2EB450418FC2F5E8E9D85441295C8F8232B45041CDCCCC7CEAD85441295C8F5232B4504148E17AD4EBD85441AE47E15A2EB450410AD7A360EBD8544112000000295C8F0287B450418FC2F5F81BD95441666666B686B450418FC2F5481AD95441666666D686B450410AD7A31019D954416666669685B450410AD7A38018D954416666663685B450418FC2F52818D95441A4703D1A85B450410AD7A3C017D95441295C8F1286B4504152B81ED517D95441295C8F1288B450418FC2F53818D95441EC51B83E8AB450418FC2F51819D95441EC51B8EE8AB450418FC2F5A819D95441295C8F228BB45041CDCCCC6C1AD95441295C8F028BB450418FC2F5881CD95441295C8FD28AB450410AD7A3301DD95441666666368AB4504152B81E251DD95441666666A689B45041CDCCCCAC1CD95441295C8F2288B450410AD7A3E01CD95441295C8F4287B450410AD7A3901CD95441295C8F0287B450418FC2F5F81BD95441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000219D12F168B450412299689EBDD854419A5E98B75EB450411BA50563B6D854410A956D5C58B450410BC33470B2D854411469E53E50B45041A1680840AFD854413950621B49B450417D2B0765ACD8544164A6D02C41B45041EA8C86F7AAD854413F4ED51F2BB45041B124CE13ACD85441A67BED4921B450417FF07C98B5D85441259932B01CB45041CBD97083BAD854413390825010B45041A8B769DACAD85441360F75DF0BB450416ECCD3BCEAD85441A8721E000CB45041B79272BCEAD85441319F71270CB450415183FDBBEAD85441E86B049914B45041025FB094EAD854415892F95E1CB4504137587743EAD854418CE1440C26B45041A14A05A1E9D854413ADFE3EA2BB4504106CEA1C9E9D85441C39F81EE2EB4504106CEA1C9E9D85441972632402FB45041CECEF7D2E9D85441C03090B92FB4504106CEA1C9E9D854416DB587F630B45041E6361005EAD85441A696E77B34B450419CDB136CEAD85441A7B1E1AD47B450411171FA66F1D85441CA44678754B450419353B500F6D854416A3D522763B450417543C744FBD85441DAC10E4970B450414827C542C3D85441FFEDC3F96BB45041BD9A59F0BFD85441219D12F168B450412299689EBDD85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 3185315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81EC5B6215141EC51B88EE1BA54410AD7A370B62151413D0AD703E3BA5441333333E3B32151410AD7A370E3BA5441A4703D3AB4215141C3F528BCE5BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544152B81E35B3215141AE47E16AE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441C3F5285CAA21514133333363F5BA544166666606A92151410AD7A340F8BA544106000000000000F0B12151419A999969EABA544114AE4791B221514185EB5178E8BA5441F6285C6FB521514185EB51C8E9BA5441E17A14CEB4215141D7A370CDEABA544152B81EF5B22151417B14AE87EBBA5441000000F0B12151419A999969EABA5441
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA54410AD7A370B62151413D0AD703E3BA544124211584B4215141D73DDA55E3BA5441333333E3B32151410AD7A370E3BA544149ADD0F3B321514121CFCAE0E3BA5441A4703D3AB4215141C3F528BCE5BA5441AEC538F9B421514192BD1922E6BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544194746031B321514128DA6B6BE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA544176E9BB35AA2151416CF1B2B8EDBA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441E4977C28A921514140D77CF7F7BA5441FD3C5B15A9215141064A4249F8BA5441EC51B8BEAD2151418FC2F5F8FABA544176188046AE2151415BD76B59FABA5441D2400A24AF215141310A1E55F9BA54416CDC8ED0B12151419B25D330F6BA54414F2C43DFB2215141F9E8C0F2F4BA544107000000296260FBB1215141460B6060EABA54412A05813FB2215141C3E4DB98E9BA5441AB6A7F88B22151413F11C079E8BA5441B66BE675B5215141444063CEE9BA5441B41B2EDAB4215141C8844CD0EABA54412D692702B32151414BA15984EBBA5441296260FBB1215141460B6060EABA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 3393694
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81EC5B6215141EC51B88EE1BA54410AD7A370B62151413D0AD703E3BA5441333333E3B32151410AD7A370E3BA5441A4703D3AB4215141C3F528BCE5BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544152B81E35B3215141AE47E16AE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441C3F5285CAA21514133333363F5BA544166666606A92151410AD7A340F8BA544106000000000000F0B12151419A999969EABA544114AE4791B221514185EB5178E8BA5441F6285C6FB521514185EB51C8E9BA5441E17A14CEB4215141D7A370CDEABA544152B81EF5B22151417B14AE87EBBA5441000000F0B12151419A999969EABA5441
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA54410AD7A370B62151413D0AD703E3BA544124211584B4215141D73DDA55E3BA5441333333E3B32151410AD7A370E3BA544149ADD0F3B321514121CFCAE0E3BA5441A4703D3AB4215141C3F528BCE5BA5441AEC538F9B421514192BD1922E6BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544194746031B321514128DA6B6BE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA544176E9BB35AA2151416CF1B2B8EDBA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441E4977C28A921514140D77CF7F7BA5441FD3C5B15A9215141064A4249F8BA5441EC51B8BEAD2151418FC2F5F8FABA544176188046AE2151415BD76B59FABA5441D2400A24AF215141310A1E55F9BA54416CDC8ED0B12151419B25D330F6BA54414F2C43DFB2215141F9E8C0F2F4BA544107000000296260FBB1215141460B6060EABA54412A05813FB2215141C3E4DB98E9BA5441AB6A7F88B22151413F11C079E8BA5441B66BE675B5215141444063CEE9BA5441B41B2EDAB4215141C8844CD0EABA54412D692702B32151414BA15984EBBA5441296260FBB1215141460B6060EABA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 253155
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81EC5B6215141EC51B88EE1BA54410AD7A370B62151413D0AD703E3BA5441333333E3B32151410AD7A370E3BA5441A4703D3AB4215141C3F528BCE5BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544152B81E35B3215141AE47E16AE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441C3F5285CAA21514133333363F5BA544166666606A92151410AD7A340F8BA544106000000000000F0B12151419A999969EABA544114AE4791B221514185EB5178E8BA5441F6285C6FB521514185EB51C8E9BA5441E17A14CEB4215141D7A370CDEABA544152B81EF5B22151417B14AE87EBBA5441000000F0B12151419A999969EABA5441
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA54410AD7A370B62151413D0AD703E3BA544124211584B4215141D73DDA55E3BA5441333333E3B32151410AD7A370E3BA544149ADD0F3B321514121CFCAE0E3BA5441A4703D3AB4215141C3F528BCE5BA5441AEC538F9B421514192BD1922E6BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544194746031B321514128DA6B6BE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA544176E9BB35AA2151416CF1B2B8EDBA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441E4977C28A921514140D77CF7F7BA5441FD3C5B15A9215141064A4249F8BA5441EC51B8BEAD2151418FC2F5F8FABA544176188046AE2151415BD76B59FABA5441D2400A24AF215141310A1E55F9BA54416CDC8ED0B12151419B25D330F6BA54414F2C43DFB2215141F9E8C0F2F4BA544107000000296260FBB1215141460B6060EABA54412A05813FB2215141C3E4DB98E9BA5441AB6A7F88B22151413F11C079E8BA5441B66BE675B5215141444063CEE9BA5441B41B2EDAB4215141C8844CD0EABA54412D692702B32151414BA15984EBBA5441296260FBB1215141460B6060EABA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 274996
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81EC5B6215141EC51B88EE1BA54410AD7A370B62151413D0AD703E3BA5441333333E3B32151410AD7A370E3BA5441A4703D3AB4215141C3F528BCE5BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544152B81E35B3215141AE47E16AE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441C3F5285CAA21514133333363F5BA544166666606A92151410AD7A340F8BA544106000000000000F0B12151419A999969EABA544114AE4791B221514185EB5178E8BA5441F6285C6FB521514185EB51C8E9BA5441E17A14CEB4215141D7A370CDEABA544152B81EF5B22151417B14AE87EBBA5441000000F0B12151419A999969EABA5441
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA54410AD7A370B62151413D0AD703E3BA544124211584B4215141D73DDA55E3BA5441333333E3B32151410AD7A370E3BA544149ADD0F3B321514121CFCAE0E3BA5441A4703D3AB4215141C3F528BCE5BA5441AEC538F9B421514192BD1922E6BA544148E17AE4B621514185EB5128E7BA544114AE4781B6215141F6285CEFE7BA544194746031B321514128DA6B6BE6BA5441D7A370BDB0215141295C8FF2E7BA5441B81E850BAE21514185EB5138E6BA544176E9BB35AA2151416CF1B2B8EDBA5441713D0A47A821514100000080F1BA5441D7A3708DAB215141B81E85EBF2BA5441E4977C28A921514140D77CF7F7BA5441FD3C5B15A9215141064A4249F8BA5441EC51B8BEAD2151418FC2F5F8FABA544176188046AE2151415BD76B59FABA5441D2400A24AF215141310A1E55F9BA54416CDC8ED0B12151419B25D330F6BA54414F2C43DFB2215141F9E8C0F2F4BA544107000000296260FBB1215141460B6060EABA54412A05813FB2215141C3E4DB98E9BA5441AB6A7F88B22151413F11C079E8BA5441B66BE675B5215141444063CEE9BA5441B41B2EDAB4215141C8844CD0EABA54412D692702B32151414BA15984EBBA5441296260FBB1215141460B6060EABA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327122 - 1342040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C554185EB51C8DE205141333333634A0C55417B14AE17DE205141F6285C3F4A0C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C554133333363FB2051418FC2F5B8740C5541D7A370ADFC2051419A999929740C554185EB51C80021514185EB51985E0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C55411C98D7DEF8205141D94989594F0C55415652D6A7EC20514139E9BD064D0C5541FCC4226FE6205141F966CAD74B0C5541101CE456E220514159D666104B0C554152B4E9E5DF205141BFF385994A0C5541143BC806DE20514107D3DE094A0C55417B14AE17DE205141F6285C3F4A0C5541FDC46B8ADF205141C2A13218500C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C55417D5C03CBEA2051418D57163C6A0C5541F93FDE4BEF205141B1D1BDED6A0C5541EA2C82BFF42051414B7F55B76B0C5541C0D01EF5F920514164917D0C6D0C55416469CBECFD205141526AB99B6D0C554185EB51C80021514185EB51985E0C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327122 - 3551450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C554185EB51C8DE205141333333634A0C55417B14AE17DE205141F6285C3F4A0C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C554133333363FB2051418FC2F5B8740C5541D7A370ADFC2051419A999929740C554185EB51C80021514185EB51985E0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C55411C98D7DEF8205141D94989594F0C55415652D6A7EC20514139E9BD064D0C5541FCC4226FE6205141F966CAD74B0C5541101CE456E220514159D666104B0C554152B4E9E5DF205141BFF385994A0C5541143BC806DE20514107D3DE094A0C55417B14AE17DE205141F6285C3F4A0C5541FDC46B8ADF205141C2A13218500C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C55417D5C03CBEA2051418D57163C6A0C5541F93FDE4BEF205141B1D1BDED6A0C5541EA2C82BFF42051414B7F55B76B0C5541C0D01EF5F920514164917D0C6D0C55416469CBECFD205141526AB99B6D0C554185EB51C80021514185EB51985E0C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327161 - 214528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000C3F5280C1E2751418FC2F538EF0A5541000000601E27514166666646F00A5541A4703D8A1E2751410AD7A3B0F10A5541000000601E2751419A9999F9F20A55413D0AD70323275141CDCCCC3CF30A55418FC2F5C82727514114AE4791F30A5541B81E85EB2C275141713D0A07F40A55410000000031275141D7A3708DF40A55413D0AD74336275141EC51B83EF50A554114AE4731392751418FC2F568F50A554114AE47513C275141B81E859BF50A5541000000B03F275141EC51B88EF50A5541AE47E19A3F2751410AD7A3E0F40A55417B14AE4746275141A4703D4AF50A5541C3F5288C4D275141F6285C8FF50A55417B14AE3753275141B81E851BF00A5541E17A14AE4B275141D7A3709DEF0A55418FC2F5E841275141CDCCCCECEE0A5541333333333B275141EC51B84EEE0A5541E17A14FE2C275141E17A14EEEC0A55417B14AE271F2751413D0AD753EB0A5541C3F5280C1E2751418FC2F538EF0A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000AC813B072E275141D20F8C2BF40A554184FFEC772B275141EA89C0E5F30A55418FC2F5C82727514114AE4791F30A554183C2BD1325275141DD4B5261F30A554197F4FFCC24275141DD4B5261F30A554182A9C9BC212751416FE74E30F30A5541E9FC6B9520275141C6779619F30A5541000000601E2751419A9999F9F20A5541D7A3702D1E275141D7A370EDF30A55410FD622CB1D275141B00CCE44F50A5541E46782B71D275141B7037BADF50A5541A8C2B0A01D27514149E018D4F50A55415C8FC2F51C27514148E17A94F70A5541EC51B8CE1B2751410AD7A320F90A5541A049FFD11A275141CA167825F90A5541F38B96A21A275141EFBA882DF90A5541EDCCCC5C1B2751411CB81E25FD0A55419AD38201292751414ECAC976FC0A5541B81E850B2E27514166666636FC0A55410AD7A3203E275141E17A144EFB0A5541CDCCCCBC3D2751413D0AD793F90A55411F85EBC13E275141F6285C6FF70A5541000000B03F275141EC51B88EF50A554114AE47513C275141B81E859BF50A55410C9D08B83B27514172B7D591F50A5541525B137F3A275141574E0E7EF50A554114AE4731392751418FC2F568F50A55413D0AD74336275141EC51B83EF50A5541DE4275AC31275141F08B1FA4F40A5541AC813B072E275141D20F8C2BF40A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327161 - 382994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000C3F5280C1E2751418FC2F538EF0A5541000000601E27514166666646F00A5541A4703D8A1E2751410AD7A3B0F10A5541000000601E2751419A9999F9F20A55413D0AD70323275141CDCCCC3CF30A55418FC2F5C82727514114AE4791F30A5541B81E85EB2C275141713D0A07F40A55410000000031275141D7A3708DF40A55413D0AD74336275141EC51B83EF50A554114AE4731392751418FC2F568F50A554114AE47513C275141B81E859BF50A5541000000B03F275141EC51B88EF50A5541AE47E19A3F2751410AD7A3E0F40A55417B14AE4746275141A4703D4AF50A5541C3F5288C4D275141F6285C8FF50A55417B14AE3753275141B81E851BF00A5541E17A14AE4B275141D7A3709DEF0A55418FC2F5E841275141CDCCCCECEE0A5541333333333B275141EC51B84EEE0A5541E17A14FE2C275141E17A14EEEC0A55417B14AE271F2751413D0AD753EB0A5541C3F5280C1E2751418FC2F538EF0A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000AC813B072E275141D20F8C2BF40A554184FFEC772B275141EA89C0E5F30A55418FC2F5C82727514114AE4791F30A554183C2BD1325275141DD4B5261F30A554197F4FFCC24275141DD4B5261F30A554182A9C9BC212751416FE74E30F30A5541E9FC6B9520275141C6779619F30A5541000000601E2751419A9999F9F20A5541D7A3702D1E275141D7A370EDF30A55410FD622CB1D275141B00CCE44F50A5541E46782B71D275141B7037BADF50A5541A8C2B0A01D27514149E018D4F50A55415C8FC2F51C27514148E17A94F70A5541EC51B8CE1B2751410AD7A320F90A5541A049FFD11A275141CA167825F90A5541F38B96A21A275141EFBA882DF90A5541EDCCCC5C1B2751411CB81E25FD0A55419AD38201292751414ECAC976FC0A5541B81E850B2E27514166666636FC0A55410AD7A3203E275141E17A144EFB0A5541CDCCCCBC3D2751413D0AD793F90A55411F85EBC13E275141F6285C6FF70A5541000000B03F275141EC51B88EF50A554114AE47513C275141B81E859BF50A55410C9D08B83B27514172B7D591F50A5541525B137F3A275141574E0E7EF50A554114AE4731392751418FC2F568F50A55413D0AD74336275141EC51B83EF50A5541DE4275AC31275141F08B1FA4F40A5541AC813B072E275141D20F8C2BF40A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328316 - 3098885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000A4703D5A1A1E514100000020E0F95441713D0A87101E514114AE47D1D2F954418FC2F5C8071E5141AE47E17AC7F95441B81E859B031E514148E17A34BEF95441F6285CDFFE1D5141EC51B8EEB3F9544152B81E15FE1D51417B14AEB7B2F95441E17A14EEF81D514152B81ED5AAF95441AE47E10AF51D5141B81E85BBA4F954417B14AEE7F01D51411F85EB21A0F954418FC2F568EF1D5141666666969FF95441713D0AB7ED1D514114AE4741A0F954418FC2F598EC1D5141C3F5284CA1F954419A9999D9E21D5141F6285CEFADF9544152B81E15DD1D5141B81E85BBB4F95441C3F5282CD71D51417B14AEC7BAF95441295C8F22CE1D51417B14AEF7C2F95441666666A6D11D51417B14AE97C9F95441000000B0C41D51417B14AE27D4F9544148E17A24C61D51419A999979D7F954415C8FC205C71D5141CDCCCC5CD9F954419A999939C51D5141AE47E1CADAF95441295C8F12BD1D51417B14AE97E3F9544114AE4721BB1D514148E17AD4E6F954411F85EBB1C01D5141CDCCCC1CEFF95441333333A3BB1D514166666666F1F954418FC2F5D8BC1D514152B81E55F6F95441A4703D8AC31D51419A999989F7F95441295C8F32C81D5141E17A143EF8F954410AD7A3B0C91D5141295C8F42F8F9544114AE47A1CB1D51415C8FC2F5F7F95441C3F5280CD01D51411F85EB01F7F95441C3F528ACD71D514152B81ED5F4F95441EC51B8FEDE1D514152B81E95F2F95441D7A3705DE21D514148E17A44F2F954410AD7A380E41D514185EB5138F2F95441AE47E1AAE61D514148E17A64F2F95441EC51B80EE81D51410AD7A3C0F2F954413D0AD723EB1D5141F6285C0FF4F95441C3F528ACEF1D5141AE47E19AF6F95441713D0A07F41D514185EB51D8F8F954418FC2F5E8F41D51418FC2F518F9F954417B14AE57F61D5141EC51B82EF9F95441CDCCCCDCF71D51413D0AD703F9F9544148E17A74F91D514114AE4781F8F95441E17A14EEFA1D51419A9999A9F7F95441EC51B80EFF1D51418FC2F538F4F95441D7A3708D021E5141713D0A87F1F954417B14AE07071E5141E17A142EEEF954413D0AD723101E514166666686E7F95441C3F5281C191E514133333313E1F95441A4703D5A1A1E514100000020E0F95441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000059A8876EC61D5141DABB6D18D8F9544138A07DBAC61D51413D205BBBD8F95441F9CC5DEAC81D5141E39EE028D7F95441B3BEB2E0C91D514177034582D6F954418DAA7C4ACB1D514147BE2D9AD5F9544175FD462DCC1D5141202A250DD5F954411D2C860FCD1D514130469892D4F95441E4D0ED21CE1D51419977F5FDD3F95441BDC6E37BCE1D51413C322FCBD3F954411729DFF2CE1D5141AB498D7ED3F95441C46CE809D01D51412F6CD5CAD2F95441A5AAA5ECD01D5141065ACC38D2F954411440D8B2D11D5141CAFC8FBCD1F95441641B5283D31D5141466CB7A3D0F95441D230CB75D11D514161F762E2CCF95441CB226F02D11D5141C27F65C8CBF95441D4E2864FD01D51410D0112AFCAF95441000000B0C41D51417B14AE27D4F9544148E17A24C61D51419A999979D7F9544159A8876EC61D5141DABB6D18D8F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328316 - 3453447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000A4703D5A1A1E514100000020E0F95441713D0A87101E514114AE47D1D2F954418FC2F5C8071E5141AE47E17AC7F95441B81E859B031E514148E17A34BEF95441F6285CDFFE1D5141EC51B8EEB3F9544152B81E15FE1D51417B14AEB7B2F95441E17A14EEF81D514152B81ED5AAF95441AE47E10AF51D5141B81E85BBA4F954417B14AEE7F01D51411F85EB21A0F954418FC2F568EF1D5141666666969FF95441713D0AB7ED1D514114AE4741A0F954418FC2F598EC1D5141C3F5284CA1F954419A9999D9E21D5141F6285CEFADF9544152B81E15DD1D5141B81E85BBB4F95441C3F5282CD71D51417B14AEC7BAF95441295C8F22CE1D51417B14AEF7C2F95441666666A6D11D51417B14AE97C9F95441000000B0C41D51417B14AE27D4F9544148E17A24C61D51419A999979D7F954415C8FC205C71D5141CDCCCC5CD9F954419A999939C51D5141AE47E1CADAF95441295C8F12BD1D51417B14AE97E3F9544114AE4721BB1D514148E17AD4E6F954411F85EBB1C01D5141CDCCCC1CEFF95441333333A3BB1D514166666666F1F954418FC2F5D8BC1D514152B81E55F6F95441A4703D8AC31D51419A999989F7F95441295C8F32C81D5141E17A143EF8F954410AD7A3B0C91D5141295C8F42F8F9544114AE47A1CB1D51415C8FC2F5F7F95441C3F5280CD01D51411F85EB01F7F95441C3F528ACD71D514152B81ED5F4F95441EC51B8FEDE1D514152B81E95F2F95441D7A3705DE21D514148E17A44F2F954410AD7A380E41D514185EB5138F2F95441AE47E1AAE61D514148E17A64F2F95441EC51B80EE81D51410AD7A3C0F2F954413D0AD723EB1D5141F6285C0FF4F95441C3F528ACEF1D5141AE47E19AF6F95441713D0A07F41D514185EB51D8F8F954418FC2F5E8F41D51418FC2F518F9F954417B14AE57F61D5141EC51B82EF9F95441CDCCCCDCF71D51413D0AD703F9F9544148E17A74F91D514114AE4781F8F95441E17A14EEFA1D51419A9999A9F7F95441EC51B80EFF1D51418FC2F538F4F95441D7A3708D021E5141713D0A87F1F954417B14AE07071E5141E17A142EEEF954413D0AD723101E514166666686E7F95441C3F5281C191E514133333313E1F95441A4703D5A1A1E514100000020E0F95441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000059A8876EC61D5141DABB6D18D8F9544138A07DBAC61D51413D205BBBD8F95441F9CC5DEAC81D5141E39EE028D7F95441B3BEB2E0C91D514177034582D6F954418DAA7C4ACB1D514147BE2D9AD5F9544175FD462DCC1D5141202A250DD5F954411D2C860FCD1D514130469892D4F95441E4D0ED21CE1D51419977F5FDD3F95441BDC6E37BCE1D51413C322FCBD3F954411729DFF2CE1D5141AB498D7ED3F95441C46CE809D01D51412F6CD5CAD2F95441A5AAA5ECD01D5141065ACC38D2F954411440D8B2D11D5141CAFC8FBCD1F95441641B5283D31D5141466CB7A3D0F95441D230CB75D11D514161F762E2CCF95441CB226F02D11D5141C27F65C8CBF95441D4E2864FD01D51410D0112AFCAF95441000000B0C41D51417B14AE27D4F9544148E17A24C61D51419A999979D7F9544159A8876EC61D5141DABB6D18D8F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 3096114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441713D0AE7911F5141A4703DDAC4FA5441B81E85EB911F5141F6285CBFC1FA5441713D0AC7961F514185EB51E8B9FA5441E17A149E991F51418FC2F5E8B7FA544166666686921F51413D0AD7D3B2FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA544191D863EA5A1F5141A33F8718C0FA544195F2B795571F51411EDD2747C3FA54414852956A551F5141F08F9EB1C5FA54416D325DA6561F5141598415F5C6FA5441DC6AA74A591F514175AC5B3BC9FA54417DE5121C5B1F5141AEC02743CBFA5441C724F0B55B1F51414D9C3CFDCCFA544185EB51585C1F5141F6285CAFCFFA54415B80893B5C1F51416F7C7ADAD1FA54417F3B9D0E5C1F5141E65CE13CD5FA544172FC2FED5B1F5141D6069A22D9FA5441DA745BD65B1F51416D8E6E39D9FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 3363722
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441713D0AE7911F5141A4703DDAC4FA5441B81E85EB911F5141F6285CBFC1FA5441713D0AC7961F514185EB51E8B9FA5441E17A149E991F51418FC2F5E8B7FA544166666686921F51413D0AD7D3B2FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA544191D863EA5A1F5141A33F8718C0FA544195F2B795571F51411EDD2747C3FA54414852956A551F5141F08F9EB1C5FA54416D325DA6561F5141598415F5C6FA5441DC6AA74A591F514175AC5B3BC9FA54417DE5121C5B1F5141AEC02743CBFA5441C724F0B55B1F51414D9C3CFDCCFA544185EB51585C1F5141F6285CAFCFFA54415B80893B5C1F51416F7C7ADAD1FA54417F3B9D0E5C1F5141E65CE13CD5FA544172FC2FED5B1F5141D6069A22D9FA5441DA745BD65B1F51416D8E6E39D9FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 170898
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441713D0AE7911F5141A4703DDAC4FA5441B81E85EB911F5141F6285CBFC1FA5441713D0AC7961F514185EB51E8B9FA5441E17A149E991F51418FC2F5E8B7FA544166666686921F51413D0AD7D3B2FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000076E2DEB09E1F5141103277BDD6FA5441B21630589F1F514167BA36E9D5FA5441D49D0C43A11F5141EF33988ED8FA54410BCD4FF5A11F51411ED9A65AD5FA5441F8ACB331A21F51418489810ED4FA5441FDB49A22A21F5141F8511195D2FA544106C56804A21F51417F3A3DDFD0FA54411EEDEBB8A11F5141DCDA49B1CFFA544147350B31A11F51412F6B88A1CEFA54418DAD944EA01F51419A234A46CDFA54413DDEDF109E1F514113F4C0BDCBFA544116D381119B1F5141D9813897C9FA5441713D0AE7911F5141A4703DDAC4FA5441A4309479901F5141FB438C6BC5FA5441B2CCDC338C1F51417B9F1D10CBFA5441754C40F1801F5141CF616FEFD9FA54417240A007801F5141DC260124DBFA54418E19A7997D1F51419F958159DEFA5441A5ADFA9F901F5141061D22E5E9FA5441FC86C52A951F51411CF197C6E3FA5441199E78C6941F5141138C9351E3FA544152B81E05941F514100000070E2FA54410AD7A310911F5141666666D6E5FA5441713D0A378D1F5141B81E856BE3FA544100000070901F51413D0AD713E2FA544152B81EB5901F514148E17A64DFFA544152B81E55911F514100000070DCFA54413783EA3C971F51414ACAD131E0FA544123F47C3E971F51410B45D32FE0FA544133333323981F514133333333DAFA5441C3F5285C9B1F51417B14AED7D9FA5441C3F528AC9E1F51415C8FC2B5D6FA544176E2DEB09E1F5141103277BDD6FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 346191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441713D0AE7911F5141A4703DDAC4FA5441B81E85EB911F5141F6285CBFC1FA5441713D0AC7961F514185EB51E8B9FA5441E17A149E991F51418FC2F5E8B7FA544166666686921F51413D0AD7D3B2FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000076E2DEB09E1F5141103277BDD6FA5441B21630589F1F514167BA36E9D5FA5441D49D0C43A11F5141EF33988ED8FA54419355A8EEA11F5141DD2D4279D5FA5441F8ACB331A21F51418489810ED4FA5441FDB49A22A21F5141F8511195D2FA544106C56804A21F51417F3A3DDFD0FA54411EEDEBB8A11F5141DCDA49B1CFFA544147350B31A11F51412F6B88A1CEFA54418DAD944EA01F51419A234A46CDFA5441C84266E29D1F5141483E699CCBFA544116D381119B1F5141D9813897C9FA5441713D0AE7911F5141A4703DDAC4FA5441A4309479901F5141FB438C6BC5FA5441B2CCDC338C1F51417B9F1D10CBFA544195662E36811F5141DA9D6494D9FA54417240A007801F5141DC260124DBFA54418E19A7997D1F51419F958159DEFA5441A5ADFA9F901F5141061D22E5E9FA5441FC86C52A951F51411CF197C6E3FA544152B81E05941F514100000070E2FA54410AD7A310911F5141666666D6E5FA5441713D0A378D1F5141B81E856BE3FA544100000070901F51413D0AD713E2FA544152B81EB5901F514148E17A64DFFA544152B81E55911F514100000070DCFA5441E17A143E971F5141295C8F32E0FA544133333323981F514133333333DAFA5441C3F5285C9B1F51417B14AED7D9FA5441C3F528AC9E1F51415C8FC2B5D6FA544176E2DEB09E1F5141103277BDD6FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328497 - 346191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000019000000AE47E16A7B1F5141B81E853BE1FA544185EB5168781F51411F85EBA1E4FA54411F85EB41731F51419A9999B9E9FA544152B81EC56E1F5141EC51B8AEE9FA54415C8FC275671F5141B81E855BE9FA544114AE4701691F51415C8FC215F0FA54410AD7A3506A1F51413D0AD713F3FA5441EC51B89E6B1F5141F6285C6FF6FA5441CDCCCC9C711F51418FC2F568FEFA5441D7A3707D751F5141E17A143EF4FA54413D0AD7B37A1F5141713D0A97E9FA5441E17A14FE831F514114AE4771EDFA5441A4703DCA8A1F51411F85EB11F1FA54415C8FC2358F1F5141B81E85EBF4FA54413D0AD7F3921F5141333333C3EFFA54419A999999A01F5141295C8FF2DCFA54413D0AD733A21F5141AE47E1DAD9FA544148E17AD4A21F514185EB5148D6FA54417B14AE47A31F5141295C8FE2D3FA5441F6285CBFA21F51410AD7A3C0D0FA5441666666E6A11F5141C3F5282CCEFA5441C3F528BCA01F514152B81E85CCFA5441713D0AE7911F5141A4703DDAC4FA54419A999979901F5141B81E856BC5FA5441AE47E16A7B1F5141B81E853BE1FA54411000000048E17AB4961F51411F85EB91E5FA544152B81E05941F514100000070E2FA54410AD7A310911F5141666666D6E5FA5441713D0A378D1F5141B81E856BE3FA544100000070901F51413D0AD713E2FA544152B81EB5901F514148E17A64DFFA544152B81E55911F514100000070DCFA5441E17A143E971F5141295C8F32E0FA544133333323981F514133333333DAFA5441C3F5285C9B1F51417B14AED7D9FA5441C3F528AC9E1F51415C8FC2B5D6FA544148E17AA4A01F5141EC51B8EED9FA54415C8FC2859C1F5141D7A370ADDEFA544148E17A049A1F51417B14AE17E1FA5441F6285C1F991F51419A999999E3FA544148E17AB4961F51411F85EB91E5FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000076E2DEB09E1F5141103277BDD6FA5441B21630589F1F514167BA36E9D5FA5441D49D0C43A11F5141EF33988ED8FA54419355A8EEA11F5141DD2D4279D5FA5441F8ACB331A21F51418489810ED4FA5441FDB49A22A21F5141F8511195D2FA544106C56804A21F51417F3A3DDFD0FA54411EEDEBB8A11F5141DCDA49B1CFFA544147350B31A11F51412F6B88A1CEFA54418DAD944EA01F51419A234A46CDFA5441C84266E29D1F5141483E699CCBFA544116D381119B1F5141D9813897C9FA5441713D0AE7911F5141A4703DDAC4FA5441A4309479901F5141FB438C6BC5FA5441B2CCDC338C1F51417B9F1D10CBFA544195662E36811F5141DA9D6494D9FA54417240A007801F5141DC260124DBFA54418E19A7997D1F51419F958159DEFA5441A5ADFA9F901F5141061D22E5E9FA5441FC86C52A951F51411CF197C6E3FA544152B81E05941F514100000070E2FA54410AD7A310911F5141666666D6E5FA5441713D0A378D1F5141B81E856BE3FA544100000070901F51413D0AD713E2FA544152B81EB5901F514148E17A64DFFA544152B81E55911F514100000070DCFA5441E17A143E971F5141295C8F32E0FA544133333323981F514133333333DAFA5441C3F5285C9B1F51417B14AED7D9FA5441C3F528AC9E1F51415C8FC2B5D6FA544176E2DEB09E1F5141103277BDD6FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328595 - 1291101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000B81E85DBCB1C51415C8FC27560F754418FC2F5B8CF1C51411F85EB215DF75441B81E857BCF1C5141295C8FC258F754411F85EB31C61C51415C8FC2654FF75441E17A14DEBE1C514148E17A8446F754410AD7A370B71C51413D0AD7633DF75441C3F5287CB31C514185EB51A838F75441295C8FB2AF1C5141F6285C2F35F754415C8FC235AF1C5141295C8FE234F754411F85EBD1A81C5141000000F030F7544152B81E65A81C514148E17A4432F75441AE47E19AA51C51411F85EB013BF754415C8FC265A41C5141F6285CCF3EF75441B81E857BA21C5141713D0AD744F75441713D0AE7A51C51415C8FC25547F75441CDCCCC2CA81C51415C8FC23549F75441295C8FF2A91C51410AD7A3204BF754415C8FC2E5AB1C51418FC2F5984DF75441295C8FB2AD1C51410AD7A31050F7544148E17A74B11C514148E17A9455F754415C8FC265B31C5141CDCCCC7C58F754411F85EB11B51C514152B81EC55AF754419A9999C9BC1C5141713D0AD763F754410AD7A3F0C01C5141E17A146E64F7544100000010C61C51418FC2F52865F75441D7A3703DC81C514185EB517865F75441B81E85DBCB1C51415C8FC27560F75441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000EB7D36B6AE1C51411837A08553F75441CA5F1E4EAF1C5141BE4065C752F754410497766FAF1C5141476CA39D52F7544123271BB7AE1C514113350D8F51F75441D7DBC5DFAD1C5141CD17005350F754415BC65944AD1C51418CB78F794FF754411976FB7FAC1C5141DC7E5F6C4EF7544190B117CAAB1C51411621EA754DF754418DDED05BAB1C5141CD153BEA4CF7544123B39F38AA1C5141253463794BF7544117876092A81C51413088A5A349F754414539EE49A71C51414EF1927A48F754412F85C018A61C51418DCAC67E47F754416EE4E477A31C51411CB0278F45F75441B81E857BA21C5141713D0AD744F75441CDCCCCEC991C5141D7A370AD3FF7544152B81ED5951C5141C3F5280C3EF75441EC51B8EE911C5141C3F5289C3CF75441CDCCCC7C8F1C5141D7A370FD3BF75441713D0AF78C1C514114AE47613BF754415C8FC2358A1C5141C3F528DC3AF754418FC2F5C8861C51411F85EB7139F75441295C8F127B1C5141666666D64BF75441F6285CDF7C1C5141295C8F724FF75441E17A14BE7E1C51417B14AEE751F75441C3F5286C801C5141E17A14BE54F75441A4703DFA811C5141F6285C9F58F7544152B81EC5821C51417B14AEB75BF75441295C8F72831C51419A9999095EF75441E17A140E841C514185EB51E85FF7544185EB5108861C514114AE479165F7544100000070881C5141EC51B81E6DF7544148E17A148F1C5141000000205CF754418FC2F588951C514152B81EE55CF75441B81E85EB9F1C514114AE475161F75441A4703D7AA21C51411F85EB115BF7544172768248A91C514163914BDB5DF75441EB7D36B6AE1C51411837A08553F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328595 - 3649755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000B81E85DBCB1C51415C8FC27560F754418FC2F5B8CF1C51411F85EB215DF75441B81E857BCF1C5141295C8FC258F754411F85EB31C61C51415C8FC2654FF75441E17A14DEBE1C514148E17A8446F754410AD7A370B71C51413D0AD7633DF75441C3F5287CB31C514185EB51A838F75441295C8FB2AF1C5141F6285C2F35F754415C8FC235AF1C5141295C8FE234F754411F85EBD1A81C5141000000F030F7544152B81E65A81C514148E17A4432F75441AE47E19AA51C51411F85EB013BF754415C8FC265A41C5141F6285CCF3EF75441B81E857BA21C5141713D0AD744F75441713D0AE7A51C51415C8FC25547F75441CDCCCC2CA81C51415C8FC23549F75441295C8FF2A91C51410AD7A3204BF754415C8FC2E5AB1C51418FC2F5984DF75441295C8FB2AD1C51410AD7A31050F7544148E17A74B11C514148E17A9455F754415C8FC265B31C5141CDCCCC7C58F754411F85EB11B51C514152B81EC55AF754419A9999C9BC1C5141713D0AD763F754410AD7A3F0C01C5141E17A146E64F7544100000010C61C51418FC2F52865F75441D7A3703DC81C514185EB517865F75441B81E85DBCB1C51415C8FC27560F75441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000EB7D36B6AE1C51411837A08553F75441CA5F1E4EAF1C5141BE4065C752F754410497766FAF1C5141476CA39D52F7544123271BB7AE1C514113350D8F51F75441D7DBC5DFAD1C5141CD17005350F754415BC65944AD1C51418CB78F794FF754411976FB7FAC1C5141DC7E5F6C4EF7544190B117CAAB1C51411621EA754DF754418DDED05BAB1C5141CD153BEA4CF7544123B39F38AA1C5141253463794BF7544117876092A81C51413088A5A349F754414539EE49A71C51414EF1927A48F754412F85C018A61C51418DCAC67E47F754416EE4E477A31C51411CB0278F45F75441B81E857BA21C5141713D0AD744F75441CDCCCCEC991C5141D7A370AD3FF7544152B81ED5951C5141C3F5280C3EF75441EC51B8EE911C5141C3F5289C3CF75441CDCCCC7C8F1C5141D7A370FD3BF75441713D0AF78C1C514114AE47613BF754415C8FC2358A1C5141C3F528DC3AF754418FC2F5C8861C51411F85EB7139F75441295C8F127B1C5141666666D64BF75441F6285CDF7C1C5141295C8F724FF75441E17A14BE7E1C51417B14AEE751F75441C3F5286C801C5141E17A14BE54F75441A4703DFA811C5141F6285C9F58F7544152B81EC5821C51417B14AEB75BF75441295C8F72831C51419A9999095EF75441E17A140E841C514185EB51E85FF7544185EB5108861C514114AE479165F7544100000070881C5141EC51B81E6DF7544148E17A148F1C5141000000205CF754418FC2F588951C514152B81EE55CF75441B81E85EB9F1C514114AE475161F75441A4703D7AA21C51411F85EB115BF7544172768248A91C514163914BDB5DF75441EB7D36B6AE1C51411837A08553F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328677 - 195138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C00000085EB5158B41F514148E17A6431FA54411F85EB11AD1F51417B14AEB738FA54411F85EB41A51F5141E17A148E40FA5441295C8FE2A51F5141F6285C2F41FA544100000080A61F51416666663642FA5441AE47E13AA71F51410000007043FA5441000000F0A71F5141E17A148E44FA54415C8FC285A91F5141E17A149E47FA5441AE47E17AB41F51415C8FC2B540FA5441B81E857BC01F51413D0AD76339FA544185EB51D8C01F51413D0AD72339FA5441F6285C7FC11F514114AE478138FA5441AE47E17AC01F51418FC2F5D836FA54411F85EBD1BE1F51419A99995936FA54417B14AEE7BB1F5141E17A148E36FA54415C8FC245BA1F51417B14AE4736FA544152B81E75BB1F51419A99996935FA5441A4703DAAC21F5141F6285CFF2FFA544114AE4711CC1F5141713D0A1729FA54418FC2F528C91F5141E17A146E23FA5441666666B6C81F5141713D0A2722FA5441EC51B88EC81F51413333335321FA5441C3F5286CC71F514185EB51781DFA544185EB5118C71F51415C8FC2E51DFA544114AE4751BD1F51411F85EBF127FA5441AE47E1EAB51F51411F85EBD12FFA5441AE47E15AB51F5141EC51B85E30FA544185EB5158B41F514148E17A6431FA5441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000B81E857BC01F51413D0AD76339FA54419AF9E1D3C01F51418C94961F39FA54414010058FC01F5141BDE055DC38FA5441960D631FC01F5141D6172C8638FA544134EAAD01C01F5141A582CA7338FA5441D686B140BF1F5141CF37792938FA54414CDDFAFDBD1F51410F8848F437FA54418E8E5020BD1F5141880160B937FA544101A06F76BC1F51416AD2757B37FA5441E9C55C34BC1F514140ECD86237FA5441852C47F1BB1F51413FABED4237FA54416AD9BD3DBB1F5141B44F0DF036FA54418F88CED0BA1F5141659677C036FA54418E32EC74BA1F5141F464258136FA5441EBDB5144BA1F51412B89C94836FA54418041162EBA1F514106BDF38C35FA5441F41F2928BA1F5141782CB04135FA54416174F525BA1F514125911E1C35FA5441E272BC27BA1F514167C6D1DC34FA544132E5832DBA1F5141F8B8FE0E34FA54415D9FC12CBA1F51411006E0F433FA5441C684FB13BA1F51415A877C8433FA544187E28ACFB91F51417A81632F33FA5441675B9364B91F5141611F17F732FA5441C3F528DCB81F514185EB51D832FA54418241CA57B81F51412D98B4DF32FA54419554187EB71F5141AB010E1B33FA544138FBE0C0B61F5141B947024C33FA54411C126DB3B61F5141C4AB745133FA544114BB4BA6B61F5141DC08F44A33FA544171B0B3FEB51F514125DAC02333FA5441A01EF6EFB51F5141B31BC71E33FA54418FA14A90B51F51411C8EB6F732FA5441A288DA2CB51F5141154387AC32FA5441756E1E27B51F5141693EA1A632FA54414A745CE0B41F5141DDA2E15732FA5441AECB1BA6B41F51414E4441FC31FA54414638B586B41F51417B7CABBF31FA544165008765B41F5141156DD28331FA54418C76C558B41F51412422406431FA54419F4EC34FB41F514156DC516D31FA54411FB8EF11AD1F514139DAA9B738FA54411F85EB11AD1F51417B14AEB738FA5441196130FCAC1F5141D4057BCD38FA54419A72EC41A51F5141B2E9148E40FA54411E1390E2A51F51415B065C2F41FA5441CBF7A135A61F5141C9F426BA41FA5441201BB153A61F51419F775FEC41FA544100000080A61F51416666663642FA5441AE47E13AA71F51410000007043FA5441000000F0A71F5141E17A148E44FA54415C8FC285A91F5141E17A149E47FA5441AE47E17AB41F51415C8FC2B540FA5441B81E857BC01F51413D0AD76339FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329014 - 3096114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17A744C1F514148E17A94B8FA54418FC2F5184D1F5141C3F5285CC1FA54417B14AE37501F5141295C8FF2C2FA5441295C8F82531F5141B81E858BC4FA54419A999939551F514185EB5188C5FA5441AE47E10A741F5141713D0A17A8FA54415C8FC2A56F1F51419A999909A6FA5441666666366B1F5141A4703DEAA2FA54413D0AD713661F5141F6285C3FA0FA54415C8FC215621F5141F6285CDF9FFA5441333333C35E1F5141AE47E1CAA0FA5441AE47E11A5D1F5141F6285C7FA1FA54410AD7A340551F5141666666A6A5FA5441333333534B1F5141CDCCCCECA8FA5441713D0A774B1F51413D0AD703ABFA544148E17A744C1F514148E17A94B8FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA544191D863EA5A1F5141A33F8718C0FA544195F2B795571F51411EDD2747C3FA54414852956A551F5141F08F9EB1C5FA54416D325DA6561F5141598415F5C6FA5441DC6AA74A591F514175AC5B3BC9FA54417DE5121C5B1F5141AEC02743CBFA5441C724F0B55B1F51414D9C3CFDCCFA544185EB51585C1F5141F6285CAFCFFA54415B80893B5C1F51416F7C7ADAD1FA54417F3B9D0E5C1F5141E65CE13CD5FA544172FC2FED5B1F5141D6069A22D9FA5441DA745BD65B1F51416D8E6E39D9FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329014 - 3363722
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17A744C1F514148E17A94B8FA54418FC2F5184D1F5141C3F5285CC1FA54417B14AE37501F5141295C8FF2C2FA5441295C8F82531F5141B81E858BC4FA54419A999939551F514185EB5188C5FA5441AE47E10A741F5141713D0A17A8FA54415C8FC2A56F1F51419A999909A6FA5441666666366B1F5141A4703DEAA2FA54413D0AD713661F5141F6285C3FA0FA54415C8FC215621F5141F6285CDF9FFA5441333333C35E1F5141AE47E1CAA0FA5441AE47E11A5D1F5141F6285C7FA1FA54410AD7A340551F5141666666A6A5FA5441333333534B1F5141CDCCCCECA8FA5441713D0A774B1F51413D0AD703ABFA544148E17A744C1F514148E17A94B8FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA544191D863EA5A1F5141A33F8718C0FA544195F2B795571F51411EDD2747C3FA54414852956A551F5141F08F9EB1C5FA54416D325DA6561F5141598415F5C6FA5441DC6AA74A591F514175AC5B3BC9FA54417DE5121C5B1F5141AEC02743CBFA5441C724F0B55B1F51414D9C3CFDCCFA544185EB51585C1F5141F6285CAFCFFA54415B80893B5C1F51416F7C7ADAD1FA54417F3B9D0E5C1F5141E65CE13CD5FA544172FC2FED5B1F5141D6069A22D9FA5441DA745BD65B1F51416D8E6E39D9FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 1827175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000AE91B8C6DBC15041122208F1F93E5441FCF373D3DBC15041BA5A41B4FA3E5441BD752992DCC150417E633D060C3F544120B8CE7FE1C15041DA0A7BF1283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E5441AE91B8C6DBC15041122208F1F93E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 3180189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 3579672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 4455930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000AE91B8C6DBC15041122208F1F93E5441FCF373D3DBC15041BA5A41B4FA3E5441BD752992DCC150417E633D060C3F544120B8CE7FE1C15041DA0A7BF1283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E5441AE91B8C6DBC15041122208F1F93E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329767 - 5321975
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000001F85EB21170551415C8FC20588BE5441A4703D1AEB045141CDCCCC1C90BE54413D0AD7A3EB045141EC51B82E93BE5441A4703D7AE50451413D0AD75394BE544114AE4791ED045141AE47E18AABBE544114AE47A1F104514133333333B7BE5441C3F528CCF50451418FC2F528C3BE5441295C8FB2FD04514152B81ED5D9BE5441713D0A07FF045141E17A14BEDABE54413D0AD76318055141333333E3D9BE5441000000101905514185EB51E8D8BE54410AD7A3000D055141295C8F42B6BE54413D0AD7130E0551419A999939B6BE54413D0AD7A3380551410AD7A3D0B4BE54417B14AEC72E0551411F85EB81A9BE5441CDCCCCAC18055141C3F528AC88BE54411F85EB21170551415C8FC20588BE5441
+</a>
+
+<b>
+010600000001000000010300000001000000070000002812BA72E6045141AA57E51C97BE5441557586D2E90451418C17A5CBA0BE544143665166EF0451413D76547C9FBE5441E74A706D20055141D2C4293094BE5441B46A62661A0551415C1C183C8BBE544133A9A4320F05514156D00FA98DBE54412812BA72E6045141AA57E51C97BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>330836 - 3168106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5280CF7065141E17A14CEDBC9544152B81E75F80651418FC2F5A8DDC95441B81E85FB070751415C8FC2D5E2C95441666666160C07514152B81E95E3C954411F85EBE11007514185EB5118E4C954411F85EBD112075141AE47E1BAE2C954419A999979200751413D0AD793CDC9544148E17A9422075141B81E854BC9C95441C3F5280C230751418FC2F578C6C95441713D0AC70C075141C3F5282CBFC9544100000010080751418FC2F528C3C95441295C8F62050751415C8FC2E5C4C954419A9999690207514152B81EF5C5C95441B81E85CB00075141E17A145EC6C9544185EB517800075141AE47E19AC7C9544185EB5168FF06514185EB5158C7C95441D7A370BDFD0651417B14AE77CEC95441B81E85BBF8065141AE47E14ACDC9544148E17A54F80651413D0AD7A3CFC954415C8FC2D5F6065141CDCCCC7CD9C95441C3F5280CF7065141E17A14CEDBC95441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A6BEDA8500075141BF991D5CCEC95441A2DBAAE2FF0651416CA66111CEC95441861227990007514188EB14CCCCC954416D0C582F0207514171926F0ACBC954416F3CA46902075141A8078A8CC7C95441E73ABD8A0207514160704DE9C5C954416EAA6592020751418A343E20C3C95441F6285CBF010751410AD7A3D0C3C95441B81E85CB00075141E17A145EC6C9544185EB517800075141AE47E19AC7C9544185EB5168FF06514185EB5158C7C95441D7A370BDFD0651417B14AE77CEC95441B81E85BBF8065141AE47E14ACDC9544148E17A54F80651413D0AD7A3CFC954415C8FC2D5F6065141CDCCCC7CD9C95441C3F5280CF7065141E17A14CEDBC9544152B81E75F80651418FC2F5A8DDC95441D15EB85CF90651410FFA28F6DDC95441622A3783FB0651413F93A8ADDEC9544116660EEFFD065141D334CFCDD8C95441FE6C98FCFC0651412538E073D8C95441A6BEDA8500075141BF991D5CCEC95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>330836 - 3555668
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5280CF7065141E17A14CEDBC9544152B81E75F80651418FC2F5A8DDC95441B81E85FB070751415C8FC2D5E2C95441666666160C07514152B81E95E3C954411F85EBE11007514185EB5118E4C954411F85EBD112075141AE47E1BAE2C954419A999979200751413D0AD793CDC9544148E17A9422075141B81E854BC9C95441C3F5280C230751418FC2F578C6C95441713D0AC70C075141C3F5282CBFC9544100000010080751418FC2F528C3C95441295C8F62050751415C8FC2E5C4C954419A9999690207514152B81EF5C5C95441B81E85CB00075141E17A145EC6C9544185EB517800075141AE47E19AC7C9544185EB5168FF06514185EB5158C7C95441D7A370BDFD0651417B14AE77CEC95441B81E85BBF8065141AE47E14ACDC9544148E17A54F80651413D0AD7A3CFC954415C8FC2D5F6065141CDCCCC7CD9C95441C3F5280CF7065141E17A14CEDBC95441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A6BEDA8500075141BF991D5CCEC95441A2DBAAE2FF0651416CA66111CEC95441861227990007514188EB14CCCCC954416D0C582F0207514171926F0ACBC954416F3CA46902075141A8078A8CC7C95441E73ABD8A0207514160704DE9C5C954416EAA6592020751418A343E20C3C95441F6285CBF010751410AD7A3D0C3C95441B81E85CB00075141E17A145EC6C9544185EB517800075141AE47E19AC7C9544185EB5168FF06514185EB5158C7C95441D7A370BDFD0651417B14AE77CEC95441B81E85BBF8065141AE47E14ACDC9544148E17A54F80651413D0AD7A3CFC954415C8FC2D5F6065141CDCCCC7CD9C95441C3F5280CF7065141E17A14CEDBC9544152B81E75F80651418FC2F5A8DDC95441D15EB85CF90651410FFA28F6DDC95441622A3783FB0651413F93A8ADDEC9544116660EEFFD065141D334CFCDD8C95441FE6C98FCFC0651412538E073D8C95441A6BEDA8500075141BF991D5CCEC95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>331293 - 344706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000EC51B8BE15085141CDCCCC1CF7C55441D7A3709D17085141713D0A87F6C554419A99994919085141AE47E12AF7C554418FC2F5D81A08514133333373F8C554415C8FC2C51C08514114AE4741F8C554418FC2F5781E085141AE47E1FAF0C55441E17A146E1A085141AE47E16AEFC55441295C8F72170851410AD7A360EEC55441F6285CEF0F08514114AE47E1F3C55441713D0A970B0851410AD7A380F6C554417B14AE7707085141000000F0F7C554415C8FC2050408514148E17A14F8C5544148E17AA402085141EC51B84EFEC55441F6285C8F070851419A9999B914C654410AD7A3900F08514152B81E1513C65441E17A140E10085141B81E85FB12C65441CDCCCC0C0C08514114AE47E10DC65441AE47E15A0B085141E17A144E0AC65441000000100C085141F6285CFF08C654418FC2F5A80E085141C3F5280C07C65441E17A146E11085141713D0A1706C6544185EB51881108514185EB51B804C65441B81E85EB0F085141A4703D8A03C654418FC2F5580F085141A4703DAA00C654413D0AD713150851415C8FC255FEC55441EC51B8BE150851418FC2F528FCC554410AD7A3F015085141CDCCCC2CF9C55441EC51B8BE15085141CDCCCC1CF7C55441
+</a>
+
+<b>
+010600000001000000010300000001000000250000003F4D64EF0F08514174B741E1F3C554412BC1868F0D08514171042650F5C55441713D0A970B08514115D7A380F6C554419B14AE7707085141150000F0F7C554415C8FC2050408514148E17A14F8C5544121748DA402085141D180644EFEC55441EB00270505085141196E252509C654410B295C8F070851418F9999B914C654410AD7A3900F08514132B81E1513C65441228D081D0E0851417B05B78A11C65441BE7D84300C085141EEF17A110FC654413C76423A0B085141B1E1C8010DC654414F73B8D00A085141F1C9D4FB09C65441E47C560D0C085141D2BB7E3208C65441CA931CF00E08514195ABCC2206C654411678B2C40F08514193C814AA06C654417122CB3410085141AD44558306C6544114B53E5C10085141A22BB27506C654419D73911C110851411F4D373306C654411520C433110851412486747A04C654418D1E85EB0F085141AF703D8A03C654418FC2F5580F085141A4703DAA00C654417508354D120851416114E91DFFC55441A7AFC88212085141F76D8E4DFEC55441D1BD1E4C140851411C57C86AFBC55441D1BD1E4C14085141D43A1CD8F7C554411FC1A8B5140851412A2F2255F6C55441F5D6A3C01608514164C2F528F6C554414A7BCE6E1C085141532CB2C6F7C554418FC2F5781E085141AE47E1FAF0C5544112B2395D1A08514120B60065EFC55441A32859CF190851417BB68733EFC554411C78C34719085141FA6A4004EFC5544121601B2619085141C2FA83F8EEC554419248DC4718085141369E04ABEEC55441E2AA9672170851415D63A660EEC554413F4D64EF0F08514174B741E1F3C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415253 - 1827431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5289C22C1504185EB5178F83E54418FC2F53822C1504152B81E05F93E5441C3F5282C21C150410AD7A370F93E54413D0AD73320C1504152B81E05F93E5441666666D61FC15041CDCCCC3CF83E5441000000F01FC150417B14AE77F73E54413D0AD73320C1504100000000F73E54416666664621C150419A999999F63E54410AD7A3801FC1504114AE4721F63E5441EC51B86E1EC15041713D0A07F53E5441A4703D2A1EC15041EC51B88EF33E5441EC51B8EE1DC150419A999959F03E544148E17AE401C1504185EB5158DE3E54410AD7A36001C150413D0AD703DE3E544133333323F5C050418FC2F578F23E54413D0AD7E31DC15041AE47E18A0C3F5441F6285CCF26C15041E17A147EF73E5441A4703D5A25C15041D7A370CDF73E54418FC2F53822C1504100000000F73E5441C3F5289C22C15041D7A370CDF73E5441C3F5289C22C1504185EB5178F83E5441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000D7A3709DD0C050418FC2F5B8BE3E54419A9999C9CEC050418FC2F5E8BE3E5441295C8F32CDC050411F85EBD1BF3E5441295C8F02BFC050418FC2F5D8CF3E5441D9AFAEA8F6C050419D2B1E72F33E54417EB430D601C150416245304FDE3E5441A4703DBAFEC05041295C8F52DC3E5441D7A3709DD0C050418FC2F5B8BE3E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415253 - 4456115
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5289C22C1504185EB5178F83E54418FC2F53822C1504152B81E05F93E5441C3F5282C21C150410AD7A370F93E54413D0AD73320C1504152B81E05F93E5441666666D61FC15041CDCCCC3CF83E5441000000F01FC150417B14AE77F73E54413D0AD73320C1504100000000F73E54416666664621C150419A999999F63E54410AD7A3801FC1504114AE4721F63E5441EC51B86E1EC15041713D0A07F53E5441A4703D2A1EC15041EC51B88EF33E5441EC51B8EE1DC150419A999959F03E544148E17AE401C1504185EB5158DE3E54410AD7A36001C150413D0AD703DE3E544133333323F5C050418FC2F578F23E54413D0AD7E31DC15041AE47E18A0C3F5441F6285CCF26C15041E17A147EF73E5441A4703D5A25C15041D7A370CDF73E54418FC2F53822C1504100000000F73E5441C3F5289C22C15041D7A370CDF73E5441C3F5289C22C1504185EB5178F83E5441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000D7A3709DD0C050418FC2F5B8BE3E54419A9999C9CEC050418FC2F5E8BE3E5441295C8F32CDC050411F85EBD1BF3E5441295C8F02BFC050418FC2F5D8CF3E5441D9AFAEA8F6C050419D2B1E72F33E54417EB430D601C150416245304FDE3E5441A4703DBAFEC05041295C8F52DC3E5441D7A3709DD0C050418FC2F5B8BE3E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>331917 - 2916410
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000C00000085EB51688F0C5141295C8F12F18C5441A4703DFA8E0C5141333333B3F48C5441666666468E0C5141295C8FA2FA8C54418FC2F598A60C5141295C8F72078D54419A999959A20C51413D0AD703108D5441713D0A37BD0C51410AD7A3301E8D5441CDCCCC8CBF0C5141EC51B87E198D544185EB5168C10C514114AE47A1158D544152B81ED5C40C51410AD7A3800E8D5441295C8F62C40C51411F85EB210D8D5441F6285C8FAA0C51413D0AD773FF8C544185EB51688F0C5141295C8F12F18C5441
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959A20C51413D0AD703108D544183427156AB0C51417B32DAC1148D5441713D0A37BD0C51410AD7A3301E8D54410F283A69BF0C5141BF1B3FC6198D544184208FBCBF0C51414658581B198D5441941F6724C00C51419B984543188D544187474F49C10C51412909CEE1158D544151FBBB7BA60C51413D9F82AD078D54419A999959A20C51413D0AD703108D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>331917 - 3802273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000C00000085EB51688F0C5141295C8F12F18C5441A4703DFA8E0C5141333333B3F48C5441666666468E0C5141295C8FA2FA8C54418FC2F598A60C5141295C8F72078D54419A999959A20C51413D0AD703108D5441713D0A37BD0C51410AD7A3301E8D5441CDCCCC8CBF0C5141EC51B87E198D544185EB5168C10C514114AE47A1158D544152B81ED5C40C51410AD7A3800E8D5441295C8F62C40C51411F85EB210D8D5441F6285C8FAA0C51413D0AD773FF8C544185EB51688F0C5141295C8F12F18C5441
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959A20C51413D0AD703108D544183427156AB0C51417B32DAC1148D5441713D0A37BD0C51410AD7A3301E8D54410F283A69BF0C5141BF1B3FC6198D544184208FBCBF0C51414658581B198D5441941F6724C00C51419B984543188D544187474F49C10C51412909CEE1158D544151FBBB7BA60C51413D9F82AD078D54419A999959A20C51413D0AD703108D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>332992 - 2915739
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000B81E858B530D5141CDCCCCEC6F8C54410AD7A360540D5141F6285C5F718C54415C8FC285560D514148E17AD4708C5441E17A144E520D5141713D0A477F8C5441E17A147E590D5141D7A3705D808C544152B81EB55F0D514152B81E85818C5441295C8F32660D5141A4703DDA6A8C544152B81E056F0D51410AD7A3506C8C544114AE47F1740D51417B14AE876D8C54410AD7A300770D51419A999909688C5441E17A149E790D5141E17A144E618C54415C8FC2857B0D5141AE47E11A5C8C54413D0AD7637C0D5141666666D6588C5441333333537D0D51419A9999C9528C54418FC2F5187E0D51413D0AD7634F8C54417B14AE477F0D5141EC51B80E498C544148E17A84800D514148E17A64438C544185EB5148800D5141AE47E1AA3E8C544152B81E457F0D51410AD7A370398C54417B14AE877D0D514114AE47D1358C5441295C8F92670D5141E17A14AE368C5441D7A3708D570D514114AE4741388C5441A4703DEA530D5141CDCCCC8C388C5441C3F528DC520D51413D0AD7233B8C544114AE4761470D51418FC2F598558C5441295C8FA2450D5141AE47E14A5A8C5441295C8FB2450D51417B14AE475A8C5441AE47E17A440D5141EC51B8DE5E8C5441A4703D6A440D5141666666F65F8C54411F85EB41490D514185EB51B8678C54418FC2F5D84D0D5141C3F5288C6A8C5441D7A3707D500D5141666666866C8C5441E17A14EE510D5141D7A370ED6D8C5441B81E858B530D5141CDCCCCEC6F8C5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000DC452DB2470D5141112F85DE548C544152ADF5FF670D51419AC7B603538C54412B5D43937D0D514141B9D8AF518C5441EADB7A207E0D5141E6C9913B4F8C5441D12BDC607E0D51418966CDE24D8C54417CC6D5A97E0D5141950D025C4C8C544143CD8B207F0D514107004AE0498C544148E17A84800D514148E17A64438C544185EB5148800D5141AE47E1AA3E8C544152B81E457F0D51410AD7A370398C54417B14AE877D0D514114AE47D1358C5441295C8F92670D5141E17A14AE368C5441D7A3708D570D514114AE4741388C5441A4703DEA530D5141CDCCCC8C388C5441C3F528DC520D51413D0AD7233B8C54419CC6C90D4C0D51418F446AD34A8C5441DC452DB2470D5141112F85DE548C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>332992 - 3672768
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000B81E858B530D5141CDCCCCEC6F8C54410AD7A360540D5141F6285C5F718C54415C8FC285560D514148E17AD4708C5441E17A144E520D5141713D0A477F8C5441E17A147E590D5141D7A3705D808C544152B81EB55F0D514152B81E85818C5441295C8F32660D5141A4703DDA6A8C544152B81E056F0D51410AD7A3506C8C544114AE47F1740D51417B14AE876D8C54410AD7A300770D51419A999909688C5441E17A149E790D5141E17A144E618C54415C8FC2857B0D5141AE47E11A5C8C54413D0AD7637C0D5141666666D6588C5441333333537D0D51419A9999C9528C54418FC2F5187E0D51413D0AD7634F8C54417B14AE477F0D5141EC51B80E498C544148E17A84800D514148E17A64438C544185EB5148800D5141AE47E1AA3E8C544152B81E457F0D51410AD7A370398C54417B14AE877D0D514114AE47D1358C5441295C8F92670D5141E17A14AE368C5441D7A3708D570D514114AE4741388C5441A4703DEA530D5141CDCCCC8C388C5441C3F528DC520D51413D0AD7233B8C544114AE4761470D51418FC2F598558C5441295C8FA2450D5141AE47E14A5A8C5441295C8FB2450D51417B14AE475A8C5441AE47E17A440D5141EC51B8DE5E8C5441A4703D6A440D5141666666F65F8C54411F85EB41490D514185EB51B8678C54418FC2F5D84D0D5141C3F5288C6A8C5441D7A3707D500D5141666666866C8C5441E17A14EE510D5141D7A370ED6D8C5441B81E858B530D5141CDCCCCEC6F8C5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000DC452DB2470D5141112F85DE548C544152ADF5FF670D51419AC7B603538C54412B5D43937D0D514141B9D8AF518C5441EADB7A207E0D5141E6C9913B4F8C5441D12BDC607E0D51418966CDE24D8C54417CC6D5A97E0D5141950D025C4C8C544143CD8B207F0D514107004AE0498C544148E17A84800D514148E17A64438C544185EB5148800D5141AE47E1AA3E8C544152B81E457F0D51410AD7A370398C54417B14AE877D0D514114AE47D1358C5441295C8F92670D5141E17A14AE368C5441D7A3708D570D514114AE4741388C5441A4703DEA530D5141CDCCCC8C388C5441C3F528DC520D51413D0AD7233B8C54419CC6C90D4C0D51418F446AD34A8C5441DC452DB2470D5141112F85DE548C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335063 - 43752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000030000000F6285C9F0F355141D7A3704D27385541E17A147E0A355141AE47E15A31385541D7A370AD023551410AD7A3503B38554152B81E55FD34514148E17AD440385541295C8FF2F8345141EC51B80E45385541A4703D8AF1345141E17A141E4B385541295C8FB2EC345141EC51B8CE4E385541A4703DDAF2345141B81E85BB52385541A4703D4AF6345141E17A141E55385541B81E85EBF8345141AE47E14A573855417B14AE17FD34514152B81EF5593855411F85EB5104355141666666B65D385541E17A147E0A355141EC51B8BE5F385541295C8F6212355141EC51B8BE61385541000000A01C355141CDCCCCAC6138554114AE4771323551413D0AD733603855410AD7A3E039355141666666265F38554185EB51083F3551413D0AD7335E3855415C8FC2154235514152B81EF55D385541C3F5287C47355141E17A14FE5D3855417B14AE974A355141F6285C5F5E3855417B14AEF74E355141C3F5289C5E38554185EB5138523551418FC2F5385F3855413D0AD7C3543551411F85EBA15F385541333333D35A355141B81E85CB60385541E17A14CE583551413D0AD7635D3855410AD7A3D0553551411F85EB915A38554114AE47414F355141333333C3543855411F85EBC14A35514148E17A6451385541333333B34635514114AE47314F385541CDCCCC0C3E355141F6285C7F4B385541B81E85DB3B355141EC51B8FE493855418FC2F5983935514148E17A84473855418FC2F5F8373551415C8FC2554438554185EB515835355141333333133C3855410000001034355141D7A3703D38385541C3F528BC31355141D7A3707D34385541CDCCCC8C2D355141713D0A672E385541B81E851B2A355141295C8F222A3855413D0AD7C3263551418FC2F56826385541295C8F6222355141E17A141E22385541000000B01B3551410AD7A3201C385541C3F528FC183551419A9999791A385541EC51B8EE1635514152B81ED518385541E17A14EE14355141AE47E16A163855419A9999B9133551417B14AE47173855410AD7A39012355141CDCCCCFC1C385541F6285C9F0F355141D7A3704D27385541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000FB8BC5423E355141A05926585E38554185EB51083F3551413D0AD7335E385541919D0B1A4035514188C7DE1D5E385541BB54E457403551414303E8185E3855415C8FC2154235514152B81EF55D3855418B315ECC43355141FA7BF6F75D38554155B423C444355141FB9991F95D385541C717991845355141BE9017D75D385541DA4A2B9341355141548E7F745D38554192190CE0333551418F01DB555E3855413DDD333F2A35514199518D6F5F38554155CBCC8D21355141D1307C0A60385541B8A44C641B3551416C56BD346038554145E52F2F14355141077CFE5E603855414D11375D0D35514151CB017960385541C77CEA810F3551418EF50C0461385541C8E7090E11355141891E6E68613855412132CB291235514187CB55B061385541FE2687DD123551414920E1BD613855410EB6247B163551418F4C8DB761385541EA2662E1163551410961DAB661385541CACDC8A11935514165AD09B26138554137C4C96F1C355141B62B21AD613855410DA8D64A1E3551413FF0FD8F61385541C2D7BAFC1E355141AE5AFC83613855411908964C2435514157EE3428613855413AC2C215263551419AEC590961385541E0F7D7952735514117CA6DEF60385541C6D2652D29355141F71EECD360385541C7EEBEB129355141746DFDCA6038554118DA8D952B355141DB3F56AA60385541FA4152992C3551414506CE98603855410FF5FD592E355141F0F2857A60385541155DF0082F355141163DB76E6038554171762E09323551410AA4DD3A60385541688D176633355141AC322F1160385541E800ECD434355141FA7F41DD5F385541185BE20C37355141BCE1DA8C5F385541CFE39C8538355141607586575F385541B0B841F83A355141587F01F35E38554197E176C73D355141DF5ED06E5E385541FB8BC5423E355141A05926585E385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516928 - 3278216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000F00000048E17A5401EA5041C3F5285CA8FA544148E17AB400EA5041CDCCCCFCADFA54419A9999C9FFE95041000000D0AFFA54411F85EB31FFE950413D0AD723B1FA54415C8FC2E5FFE950415C8FC235B1FA5441A4703D2A07EA5041C3F528ECB1FA54418FC2F5D807EA504133333303C9FA54418FC2F53811EA5041F6285C5FC9FA54416666660612EA504185EB5178B4FA544114AE471116EA50418FC2F568B5FA54416666663618EA5041A4703D9AADFA5441D7A3708D18EA5041713D0A57A7FA54417B14AE8713EA504148E17A04A7FA5441E17A141E01EA5041D7A370ADA6FA544148E17A5401EA5041C3F5285CA8FA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000002B1B5D2A07EA5041C54558F0B1FA5441659DDAAC08EA50415CC66E92C9FA5441EA8CB59808EA50411CDF4B12CAFA544125F571980EEA504128AB961DCAFA5441AF298C6410EA5041C252BA29CAFA5441D22C587E10EA50411143BEA8C9FA5441D0B05E7A10EA5041D72021C5C7FA5441DAEA4B7510EA5041C5A22FC2C5FA5441E441C25D10EA504116261B6DBCFA54418281F14810EA50416CE0562CB4FA5441EF39B25F10EA50415338AB7BB3FA5441FF396F7015EA50415438C00BB4FA54412475A79116EA5041B4220715ACFA54412B8716B115EA5041EC51B81EA7FA54411BC4DE7F13EA5041AE8A660EA7FA544185E3DEEF08EA5041459EC5BFA6FA54417A59F07407EA5041FACCC0B4A6FA5441459EC10B05EA5041F069CEA2A6FA54411CC98C6703EA5041D0579696A6FA54417A35610901EA5041E5EEF584A6FA544192DF2CC300EA504116F3379CA6FA54414269FF5301EA5041D49C3E4EABFA544198F4BD9600EA5041BA12A048AFFA54414D1AE63A00EA5041A0D6D436B1FA5441C8EE446003EA50414578ED8CB1FA54410F70277F03EA50417DBE1790B1FA5441A4703D2A07EA5041C3F528ECB1FA54412B1B5D2A07EA5041C54558F0B1FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 256560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B55419A9999E9FB7A5041F6285CCF562B5541F6285CBFFD7A50415C8FC2A5582B554148E17A84007B504133333363592B55410AD7A380017B5041AE47E10A592B5541C3F528AC017B5041B81E85FB582B554100000090027B504148E17AA4582B55410AD7A3F0037B5041D7A3701D582B554100000020067B5041713D0A47572B554148E17AE4057B5041666666B6552B5541713D0A77067B504133333373552B554114AE4781077B50418FC2F5F8542B5541C3F5282C097B504166666636542B55411F85EBD1087B5041295C8F82532B55418FC2F598077B504185EB5108512B55418FC2F5A8067B5041B81E850B4F2B55419A999959067B50410AD7A3804E2B55418FC2F538077B5041B81E851B4E2B55417B14AE97077B504114AE47F14D2B5541A4703D1A087B5041EC51B8AE4D2B55419A999969087B5041333333334E2B5541CDCCCCAC0A7B504148E17AA4522B5541D7A3700D0B7B504166666656532B5541295C8FC20B7B50413D0AD7D3542B55419A9999D90B7B504166666616552B5541D7A370ED0C7B504185EB5198542B554148E17AC40D7B50415C8FC235542B5541CDCCCC8C0E7B50419A9999D9532B55411F85EB610F7B504185EB5178532B55417B14AE17117B5041000000B0522B5541D7A3705D117B504100000090522B55418FC2F5C8147B50413D0AD7D3502B5541CDCCCC8C157B50410AD7A370502B5541F6285C6F167B5041E17A14FE4F2B5541C3F5281C187B5041666666264F2B554148E17A041B7B5041AE47E1AA4D2B5541EC51B8AE1C7B50411F85EBD14C2B5541295C8F021E7B5041666666264C2B5541E17A145E1E7B504185EB51F84B2B5541A4703D8A207B504148E17A544B2B55419A999919257B5041CDCCCCFC492B55417B14AE97277B504114AE4741492B5541713D0A97297B5041713D0A97482B554114AE47C12B7B5041EC51B8DE472B554152B81EA52E7B50419A999939462B554185EB5128357B504152B81E85422B5541C3F5289C357B504133333343422B5541D7A370DD377B50417B14AEE7402B5541333333C33A7B504185EB51283F2B5541D7A370BD417B5041AE47E13A3A2B55415C8FC2B5457B5041EC51B8AE372B55417B14AE27467B504133333363372B55418FC2F518507B5041E17A140E322B55418FC2F5E8527B5041D7A3700D302B5541E17A14DE587B50418FC2F598292B55417B14AED75D7B5041CDCCCCAC242B55418FC2F5485F7B504166666626232B5541F6285C7F5C7B5041A4703D9A202B5541D7A370ED557B5041EC51B86E282B55419A999959547B5041C3F528BC262B55410AD7A370537B50415C8FC2C5272B5541AE47E13A537B504133333303282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B5541713D0A87427B504185EB51E8322B554133333303427B5041713D0A67342B5541EC51B8EE377B50417B14AE473C2B55411F85EB41327B5041EC51B8EE3E2B55413D0AD7832F7B5041AE47E1BA3E2B554148E17A342F7B50418FC2F5E83D2B5541333333E32E7B5041AE47E10A3E2B55417B14AE672E7B5041666666D63C2B55415C8FC2A52C7B5041333333C33D2B5541EC51B80E2B7B5041CDCCCC9C3A2B5541333333A31D7B50415C8FC2753D2B55415C8FC2451B7B5041333333133D2B55411F85EB11157B50415C8FC2C53C2B5541A4703D2A147B504114AE47D13D2B55411F85EBE10E7B5041C3F528BC422B554114AE4701107B50411F85EB01442B554148E17A94107B5041E17A14AE442B55411F85EB71117B5041CDCCCCAC452B5541F6285CFF127B50415C8FC275472B554133333323077B504114AE47214D2B5541D7A3704D037B504148E17A44462B554105000000D7A3702D287B5041C3F528AC402B5541A4703DFA297B50413D0AD733452B55411F85EBC1247B5041F6285C1F472B5541EC51B88E237B50411F85EB61422B5541D7A3702D287B5041C3F528AC402B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003E86EFF7407B504139DF73ED2E2B554143E7F5C8437B5041189B713D332B554128DA8F624C7B5041632FAF572D2B55411EDCE13A537B504122263403282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B55413E86EFF7407B504139DF73ED2E2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 262659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B55419A9999E9FB7A5041F6285CCF562B5541F6285CBFFD7A50415C8FC2A5582B554148E17A84007B504133333363592B55410AD7A380017B5041AE47E10A592B5541C3F528AC017B5041B81E85FB582B554100000090027B504148E17AA4582B55410AD7A3F0037B5041D7A3701D582B554100000020067B5041713D0A47572B554148E17AE4057B5041666666B6552B5541713D0A77067B504133333373552B554114AE4781077B50418FC2F5F8542B5541C3F5282C097B504166666636542B55411F85EBD1087B5041295C8F82532B55418FC2F598077B504185EB5108512B55418FC2F5A8067B5041B81E850B4F2B55419A999959067B50410AD7A3804E2B55418FC2F538077B5041B81E851B4E2B55417B14AE97077B504114AE47F14D2B5541A4703D1A087B5041EC51B8AE4D2B55419A999969087B5041333333334E2B5541CDCCCCAC0A7B504148E17AA4522B5541D7A3700D0B7B504166666656532B5541295C8FC20B7B50413D0AD7D3542B55419A9999D90B7B504166666616552B5541D7A370ED0C7B504185EB5198542B554148E17AC40D7B50415C8FC235542B5541CDCCCC8C0E7B50419A9999D9532B55411F85EB610F7B504185EB5178532B55417B14AE17117B5041000000B0522B5541D7A3705D117B504100000090522B55418FC2F5C8147B50413D0AD7D3502B5541CDCCCC8C157B50410AD7A370502B5541F6285C6F167B5041E17A14FE4F2B5541C3F5281C187B5041666666264F2B554148E17A041B7B5041AE47E1AA4D2B5541EC51B8AE1C7B50411F85EBD14C2B5541295C8F021E7B5041666666264C2B5541E17A145E1E7B504185EB51F84B2B5541A4703D8A207B504148E17A544B2B55419A999919257B5041CDCCCCFC492B55417B14AE97277B504114AE4741492B5541713D0A97297B5041713D0A97482B554114AE47C12B7B5041EC51B8DE472B554152B81EA52E7B50419A999939462B554185EB5128357B504152B81E85422B5541C3F5289C357B504133333343422B5541D7A370DD377B50417B14AEE7402B5541333333C33A7B504185EB51283F2B5541D7A370BD417B5041AE47E13A3A2B55415C8FC2B5457B5041EC51B8AE372B55417B14AE27467B504133333363372B55418FC2F518507B5041E17A140E322B55418FC2F5E8527B5041D7A3700D302B5541E17A14DE587B50418FC2F598292B55417B14AED75D7B5041CDCCCCAC242B55418FC2F5485F7B504166666626232B5541F6285C7F5C7B5041A4703D9A202B5541D7A370ED557B5041EC51B86E282B55419A999959547B5041C3F528BC262B55410AD7A370537B50415C8FC2C5272B5541AE47E13A537B504133333303282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B5541713D0A87427B504185EB51E8322B554133333303427B5041713D0A67342B5541EC51B8EE377B50417B14AE473C2B55411F85EB41327B5041EC51B8EE3E2B55413D0AD7832F7B5041AE47E1BA3E2B554148E17A342F7B50418FC2F5E83D2B5541333333E32E7B5041AE47E10A3E2B55417B14AE672E7B5041666666D63C2B55415C8FC2A52C7B5041333333C33D2B5541EC51B80E2B7B5041CDCCCC9C3A2B5541333333A31D7B50415C8FC2753D2B55415C8FC2451B7B5041333333133D2B55411F85EB11157B50415C8FC2C53C2B5541A4703D2A147B504114AE47D13D2B55411F85EBE10E7B5041C3F528BC422B554114AE4701107B50411F85EB01442B554148E17A94107B5041E17A14AE442B55411F85EB71117B5041CDCCCCAC452B5541F6285CFF127B50415C8FC275472B554133333323077B504114AE47214D2B5541D7A3704D037B504148E17A44462B554105000000D7A3702D287B5041C3F528AC402B5541A4703DFA297B50413D0AD733452B55411F85EBC1247B5041F6285C1F472B5541EC51B88E237B50411F85EB61422B5541D7A3702D287B5041C3F528AC402B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003E86EFF7407B504139DF73ED2E2B554143E7F5C8437B5041189B713D332B554128DA8F624C7B5041632FAF572D2B55411EDCE13A537B504122263403282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B55413E86EFF7407B504139DF73ED2E2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336027 - 184171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000095000000E17A142E3F79504100000050272E554148E17AB4417950411F85EB41252E554185EB510842795041CDCCCCFC222E5541000000D042795041F6285CFF222E5541E17A147E42795041B81E85CB1F2E5541CDCCCC9C42795041E17A148E1E2E5541000000D042795041B81E857B1C2E5541E17A143E437950415C8FC205182E5541295C8F82437950410AD7A340152E5541B81E85AB44795041EC51B8EE102E5541666666A64579504152B81E950A2E55415C8FC2F545795041F6285CAF022E55418FC2F5E8457950415C8FC215012E5541E17A149E44795041AE47E1CAFF2D5541B81E854B42795041D7A370ADFD2D5541E17A142E40795041CDCCCCCCFC2D5541000000103E795041CDCCCCCCFC2D55410AD7A3903C795041F6285CEFFD2D5541F6285CFF3B795041D7A370DDFE2D5541713D0A273C795041713D0A77002E5541D7A370ED3C7950411F85EB71012E5541F6285C2F3D7950419A9999C9022E554185EB51B83C79504148E17AC4032E5541AE47E1CA3B79504185EB5198042E5541E17A140E39795041AE47E1BA052E5541295C8F023679504148E17A54072E55417B14AED7337950413D0AD7D3082E5541B81E852B33795041A4703D9A092E5541EC51B81E3379504185EB51380A2E5541E17A146E33795041B81E855B0B2E554185EB51F8347950417B14AE170E2E55411F85EB21357950417B14AEB7102E55415C8FC2C53479504148E17AB4112E554148E17A043379504166666626132E5541CDCCCC7C30795041295C8FD2132E5541F6285C0F2E79504114AE4771142E55411F85EB212D795041E17A14AE152E5541F6285CDF2C795041D7A3702D172E55410AD7A3302D795041A4703DEA182E55418FC2F53827795041D7A370FD1D2E5541C3F528AC2179504114AE47D11E2E5541B81E851B20795041C3F528DC202E5541B81E856B1F7950418FC2F528232E5541713D0A371F79504114AE4741252E5541333333431F795041295C8F12262E5541666666461F79504185EB51D8262E5541666666661F795041713D0A472A2E5541C3F5281C1E79504185EB51082C2E55411F85EB011E7950417B14AE972F2E554114AE47211D7950411F85EB31312E5541666666C619795041C3F528AC332E5541AE47E10A18795041D7A3707D332E55410AD7A3A0167950411F85EB71342E5541713D0A6715795041295C8F12362E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E55413D0AD78311795041C3F5286C402E5541E17A146E107950413D0AD7A3422E5541EC51B83E0F7950417B14AED7452E5541000000D00F7950419A9999D94A2E55418FC2F5280E79504185EB51884D2E5541000000100E795041713D0A874F2E5541CDCCCC5C147950418FC2F5884E2E55410AD7A300157950415C8FC2854E2E5541CDCCCCEC1779504152B81EF54D2E554185EB515818795041333333F34D2E5541295C8FD21B7950419A9999794D2E554114AE47411F7950419A9999F94C2E55411F85EBA126795041E17A148E4B2E5541C3F528CC2C795041713D0AE74A2E554152B81E852C795041B81E85CB4B2E5541000000202C795041F6285C3F4D2E5541C3F528BC2B795041EC51B86E4F2E5541B81E850B207950413D0AD743512E5541713D0AE71A79504148E17A54522E55417B14AEB71A7950417B14AE37512E5541333333031B795041295C8F02502E5541F6285CDF14795041D7A3700D512E554148E17A6414795041295C8F12512E55417B14AE470D79504166666686522E5541EC51B82E0D795041E17A14EE522E55417B14AE870B79504114AE4741552E55418FC2F5980A79504152B81E15572E5541EC51B8AE0B795041F6285C5F582E554152B81E050A795041EC51B89E5A2E5541666666260A795041295C8FE25B2E55417B14AED70A7950411F85EB61602E554114AE47A10B795041F6285CBF622E5541A4703DFA0D7950418FC2F5C8692E55418FC2F5580D7950417B14AE276B2E5541000000000D795041E17A14AE6B2E55410AD7A3300D7950411F85EB916E2E5541F6285C8F0C795041713D0AF76F2E55419A9999190C795041AE47E1EA722E55417B14AE970D795041C3F5283C752E554148E17A840C795041C3F528EC782E5541AE47E10A0C795041A4703D2A7B2E554152B81E750C795041666666E67D2E5541666666360E79504152B81EB57F2E554185EB51A80F7950415C8FC295802E55418FC2F5D811795041EC51B84E812E5541EC51B87E12795041CDCCCC3C822E554114AE472112795041EC51B8DE882E5541333333D31579504166666646882E5541C3F5287C1A795041A4703D9A872E55413D0AD7C31A795041EC51B80E882E5541B81E855B1B795041E17A147E892E55419A9999E91F79504148E17AA4892E55419A9999892B795041EC51B81E892E5541E17A142E2E795041A4703DDA882E55410AD7A3402F795041EC51B8BE882E554114AE47112D795041295C8F527F2E554114AE47C12C795041B81E850B782E5541AE47E1EA2C795041E17A143E752E55418FC2F5F82C795041B81E855B742E55415C8FC2152D795041295C8F82722E554114AE47412D7950411F85EBB16F2E55413D0AD7632D795041D7A3707D6D2E554185EB51A82D795041F6285C3F6B2E5541F6285CAF2D79504114AE47116B2E5541F6285C0F2E7950418FC2F5B8682E55417B14AE572E795041AE47E19A662E55417B14AE772E795041000000B0652E5541E17A147E3079504166666616662E554114AE47F1337950418FC2F588662E5541AE47E1AA357950417B14AEC75E2E5541666666A636795041EC51B85E5A2E554114AE475137795041295C8FD2572E554148E17A14387950418FC2F5E8542E55415C8FC2F538795041D7A3708D512E55415C8FC2C539795041333333734E2E55418FC2F5883B7950418FC2F5B8472E5541C3F5280C3D795041F6285CBF422E55418FC2F5983F795041D7A3705D3A2E55413D0AD733407950417B14AE37372E55418FC2F52841795041F6285C1F322E5541B81E85BB3F795041A4703D8A332E5541666666862F79504148E17AF42F2E5541713D0A972E795041F6285CBF2F2E5541F6285C3F2F795041A4703DAA2E2E554185EB515830795041000000302D2E55413D0AD7D32E7950413D0AD7532B2E5541F6285CEF2E7950410AD7A3202A2E5541E17A140E317950411F85EB81262E554133333323327950413D0AD713272E5541AE47E19A3A7950417B14AEC7282E5541713D0A573D79504152B81ED5282E5541E17A142E3F79504100000050272E5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FD21B7950419A9999794D2E554114AE47411F7950419A9999F94C2E55411F85EBA126795041E17A148E4B2E554188B022CC2C79504157E70AE74A2E55416EF08D022D79504136D0D5034A2E5541B7FAE00A2D7950411EDAEC01492E5541004190B21C7950414B97D7434A2E554130F0C1291B7950417108B26D4A2E5541773DC39E0F795041D1E186294B2E55418FC2F5280E79504185EB51884D2E5541538001100E7950410086EB864F2E55414F40BD5414795041CFD93A8A4E2E5541F3E8CD5C1479504102BDF5884E2E55410AD7A300157950415C8FC2854E2E5541CDCCCCEC1779504152B81EF54D2E554185EB515818795041333333F34D2E5541295C8FD21B7950419A9999794D2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336027 - 256624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000095000000E17A142E3F79504100000050272E554148E17AB4417950411F85EB41252E554185EB510842795041CDCCCCFC222E5541000000D042795041F6285CFF222E5541E17A147E42795041B81E85CB1F2E5541CDCCCC9C42795041E17A148E1E2E5541000000D042795041B81E857B1C2E5541E17A143E437950415C8FC205182E5541295C8F82437950410AD7A340152E5541B81E85AB44795041EC51B8EE102E5541666666A64579504152B81E950A2E55415C8FC2F545795041F6285CAF022E55418FC2F5E8457950415C8FC215012E5541E17A149E44795041AE47E1CAFF2D5541B81E854B42795041D7A370ADFD2D5541E17A142E40795041CDCCCCCCFC2D5541000000103E795041CDCCCCCCFC2D55410AD7A3903C795041F6285CEFFD2D5541F6285CFF3B795041D7A370DDFE2D5541713D0A273C795041713D0A77002E5541D7A370ED3C7950411F85EB71012E5541F6285C2F3D7950419A9999C9022E554185EB51B83C79504148E17AC4032E5541AE47E1CA3B79504185EB5198042E5541E17A140E39795041AE47E1BA052E5541295C8F023679504148E17A54072E55417B14AED7337950413D0AD7D3082E5541B81E852B33795041A4703D9A092E5541EC51B81E3379504185EB51380A2E5541E17A146E33795041B81E855B0B2E554185EB51F8347950417B14AE170E2E55411F85EB21357950417B14AEB7102E55415C8FC2C53479504148E17AB4112E554148E17A043379504166666626132E5541CDCCCC7C30795041295C8FD2132E5541F6285C0F2E79504114AE4771142E55411F85EB212D795041E17A14AE152E5541F6285CDF2C795041D7A3702D172E55410AD7A3302D795041A4703DEA182E55418FC2F53827795041D7A370FD1D2E5541C3F528AC2179504114AE47D11E2E5541B81E851B20795041C3F528DC202E5541B81E856B1F7950418FC2F528232E5541713D0A371F79504114AE4741252E5541333333431F795041295C8F12262E5541666666461F79504185EB51D8262E5541666666661F795041713D0A472A2E5541C3F5281C1E79504185EB51082C2E55411F85EB011E7950417B14AE972F2E554114AE47211D7950411F85EB31312E5541666666C619795041C3F528AC332E5541AE47E10A18795041D7A3707D332E55410AD7A3A0167950411F85EB71342E5541713D0A6715795041295C8F12362E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E55413D0AD78311795041C3F5286C402E5541E17A146E107950413D0AD7A3422E5541EC51B83E0F7950417B14AED7452E5541000000D00F7950419A9999D94A2E55418FC2F5280E79504185EB51884D2E5541000000100E795041713D0A874F2E5541CDCCCC5C147950418FC2F5884E2E55410AD7A300157950415C8FC2854E2E5541CDCCCCEC1779504152B81EF54D2E554185EB515818795041333333F34D2E5541295C8FD21B7950419A9999794D2E554114AE47411F7950419A9999F94C2E55411F85EBA126795041E17A148E4B2E5541C3F528CC2C795041713D0AE74A2E554152B81E852C795041B81E85CB4B2E5541000000202C795041F6285C3F4D2E5541C3F528BC2B795041EC51B86E4F2E5541B81E850B207950413D0AD743512E5541713D0AE71A79504148E17A54522E55417B14AEB71A7950417B14AE37512E5541333333031B795041295C8F02502E5541F6285CDF14795041D7A3700D512E554148E17A6414795041295C8F12512E55417B14AE470D79504166666686522E5541EC51B82E0D795041E17A14EE522E55417B14AE870B79504114AE4741552E55418FC2F5980A79504152B81E15572E5541EC51B8AE0B795041F6285C5F582E554152B81E050A795041EC51B89E5A2E5541666666260A795041295C8FE25B2E55417B14AED70A7950411F85EB61602E554114AE47A10B795041F6285CBF622E5541A4703DFA0D7950418FC2F5C8692E55418FC2F5580D7950417B14AE276B2E5541000000000D795041E17A14AE6B2E55410AD7A3300D7950411F85EB916E2E5541F6285C8F0C795041713D0AF76F2E55419A9999190C795041AE47E1EA722E55417B14AE970D795041C3F5283C752E554148E17A840C795041C3F528EC782E5541AE47E10A0C795041A4703D2A7B2E554152B81E750C795041666666E67D2E5541666666360E79504152B81EB57F2E554185EB51A80F7950415C8FC295802E55418FC2F5D811795041EC51B84E812E5541EC51B87E12795041CDCCCC3C822E554114AE472112795041EC51B8DE882E5541333333D31579504166666646882E5541C3F5287C1A795041A4703D9A872E55413D0AD7C31A795041EC51B80E882E5541B81E855B1B795041E17A147E892E55419A9999E91F79504148E17AA4892E55419A9999892B795041EC51B81E892E5541E17A142E2E795041A4703DDA882E55410AD7A3402F795041EC51B8BE882E554114AE47112D795041295C8F527F2E554114AE47C12C795041B81E850B782E5541AE47E1EA2C795041E17A143E752E55418FC2F5F82C795041B81E855B742E55415C8FC2152D795041295C8F82722E554114AE47412D7950411F85EBB16F2E55413D0AD7632D795041D7A3707D6D2E554185EB51A82D795041F6285C3F6B2E5541F6285CAF2D79504114AE47116B2E5541F6285C0F2E7950418FC2F5B8682E55417B14AE572E795041AE47E19A662E55417B14AE772E795041000000B0652E5541E17A147E3079504166666616662E554114AE47F1337950418FC2F588662E5541AE47E1AA357950417B14AEC75E2E5541666666A636795041EC51B85E5A2E554114AE475137795041295C8FD2572E554148E17A14387950418FC2F5E8542E55415C8FC2F538795041D7A3708D512E55415C8FC2C539795041333333734E2E55418FC2F5883B7950418FC2F5B8472E5541C3F5280C3D795041F6285CBF422E55418FC2F5983F795041D7A3705D3A2E55413D0AD733407950417B14AE37372E55418FC2F52841795041F6285C1F322E5541B81E85BB3F795041A4703D8A332E5541666666862F79504148E17AF42F2E5541713D0A972E795041F6285CBF2F2E5541F6285C3F2F795041A4703DAA2E2E554185EB515830795041000000302D2E55413D0AD7D32E7950413D0AD7532B2E5541F6285CEF2E7950410AD7A3202A2E5541E17A140E317950411F85EB81262E554133333323327950413D0AD713272E5541AE47E19A3A7950417B14AEC7282E5541713D0A573D79504152B81ED5282E5541E17A142E3F79504100000050272E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000099B940CF15795041D85CBBBF392E55419D4B31B515795041718A96B7392E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E5541606FD64712795041152EF03A402E554106F3D70312795041F3DC299C402E5541D335AE671079504190FC9AC9422E55415529A6591079504130240EDB422E554199D704D00F7950413D4D014F442E5541221720F51A795041DEFFACE7442E55419E0DD8D31D7950416B4D9012452E55416898D78621795041D444B34A452E5541F187D793207950415B51149E402E55411A8DF688207950411659A360402E554170283CDA20795041E9241FF53E2E5541AFF4712D2179504104D7EAA13D2E5541F062DD5421795041F6EC41893C2E554183808024177950414D539BF8392E554199B940CF15795041D85CBBBF392E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336027 - 398923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000095000000E17A142E3F79504100000050272E554148E17AB4417950411F85EB41252E554185EB510842795041CDCCCCFC222E5541000000D042795041F6285CFF222E5541E17A147E42795041B81E85CB1F2E5541CDCCCC9C42795041E17A148E1E2E5541000000D042795041B81E857B1C2E5541E17A143E437950415C8FC205182E5541295C8F82437950410AD7A340152E5541B81E85AB44795041EC51B8EE102E5541666666A64579504152B81E950A2E55415C8FC2F545795041F6285CAF022E55418FC2F5E8457950415C8FC215012E5541E17A149E44795041AE47E1CAFF2D5541B81E854B42795041D7A370ADFD2D5541E17A142E40795041CDCCCCCCFC2D5541000000103E795041CDCCCCCCFC2D55410AD7A3903C795041F6285CEFFD2D5541F6285CFF3B795041D7A370DDFE2D5541713D0A273C795041713D0A77002E5541D7A370ED3C7950411F85EB71012E5541F6285C2F3D7950419A9999C9022E554185EB51B83C79504148E17AC4032E5541AE47E1CA3B79504185EB5198042E5541E17A140E39795041AE47E1BA052E5541295C8F023679504148E17A54072E55417B14AED7337950413D0AD7D3082E5541B81E852B33795041A4703D9A092E5541EC51B81E3379504185EB51380A2E5541E17A146E33795041B81E855B0B2E554185EB51F8347950417B14AE170E2E55411F85EB21357950417B14AEB7102E55415C8FC2C53479504148E17AB4112E554148E17A043379504166666626132E5541CDCCCC7C30795041295C8FD2132E5541F6285C0F2E79504114AE4771142E55411F85EB212D795041E17A14AE152E5541F6285CDF2C795041D7A3702D172E55410AD7A3302D795041A4703DEA182E55418FC2F53827795041D7A370FD1D2E5541C3F528AC2179504114AE47D11E2E5541B81E851B20795041C3F528DC202E5541B81E856B1F7950418FC2F528232E5541713D0A371F79504114AE4741252E5541333333431F795041295C8F12262E5541666666461F79504185EB51D8262E5541666666661F795041713D0A472A2E5541C3F5281C1E79504185EB51082C2E55411F85EB011E7950417B14AE972F2E554114AE47211D7950411F85EB31312E5541666666C619795041C3F528AC332E5541AE47E10A18795041D7A3707D332E55410AD7A3A0167950411F85EB71342E5541713D0A6715795041295C8F12362E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E55413D0AD78311795041C3F5286C402E5541E17A146E107950413D0AD7A3422E5541EC51B83E0F7950417B14AED7452E5541000000D00F7950419A9999D94A2E55418FC2F5280E79504185EB51884D2E5541000000100E795041713D0A874F2E5541CDCCCC5C147950418FC2F5884E2E55410AD7A300157950415C8FC2854E2E5541CDCCCCEC1779504152B81EF54D2E554185EB515818795041333333F34D2E5541295C8FD21B7950419A9999794D2E554114AE47411F7950419A9999F94C2E55411F85EBA126795041E17A148E4B2E5541C3F528CC2C795041713D0AE74A2E554152B81E852C795041B81E85CB4B2E5541000000202C795041F6285C3F4D2E5541C3F528BC2B795041EC51B86E4F2E5541B81E850B207950413D0AD743512E5541713D0AE71A79504148E17A54522E55417B14AEB71A7950417B14AE37512E5541333333031B795041295C8F02502E5541F6285CDF14795041D7A3700D512E554148E17A6414795041295C8F12512E55417B14AE470D79504166666686522E5541EC51B82E0D795041E17A14EE522E55417B14AE870B79504114AE4741552E55418FC2F5980A79504152B81E15572E5541EC51B8AE0B795041F6285C5F582E554152B81E050A795041EC51B89E5A2E5541666666260A795041295C8FE25B2E55417B14AED70A7950411F85EB61602E554114AE47A10B795041F6285CBF622E5541A4703DFA0D7950418FC2F5C8692E55418FC2F5580D7950417B14AE276B2E5541000000000D795041E17A14AE6B2E55410AD7A3300D7950411F85EB916E2E5541F6285C8F0C795041713D0AF76F2E55419A9999190C795041AE47E1EA722E55417B14AE970D795041C3F5283C752E554148E17A840C795041C3F528EC782E5541AE47E10A0C795041A4703D2A7B2E554152B81E750C795041666666E67D2E5541666666360E79504152B81EB57F2E554185EB51A80F7950415C8FC295802E55418FC2F5D811795041EC51B84E812E5541EC51B87E12795041CDCCCC3C822E554114AE472112795041EC51B8DE882E5541333333D31579504166666646882E5541C3F5287C1A795041A4703D9A872E55413D0AD7C31A795041EC51B80E882E5541B81E855B1B795041E17A147E892E55419A9999E91F79504148E17AA4892E55419A9999892B795041EC51B81E892E5541E17A142E2E795041A4703DDA882E55410AD7A3402F795041EC51B8BE882E554114AE47112D795041295C8F527F2E554114AE47C12C795041B81E850B782E5541AE47E1EA2C795041E17A143E752E55418FC2F5F82C795041B81E855B742E55415C8FC2152D795041295C8F82722E554114AE47412D7950411F85EBB16F2E55413D0AD7632D795041D7A3707D6D2E554185EB51A82D795041F6285C3F6B2E5541F6285CAF2D79504114AE47116B2E5541F6285C0F2E7950418FC2F5B8682E55417B14AE572E795041AE47E19A662E55417B14AE772E795041000000B0652E5541E17A147E3079504166666616662E554114AE47F1337950418FC2F588662E5541AE47E1AA357950417B14AEC75E2E5541666666A636795041EC51B85E5A2E554114AE475137795041295C8FD2572E554148E17A14387950418FC2F5E8542E55415C8FC2F538795041D7A3708D512E55415C8FC2C539795041333333734E2E55418FC2F5883B7950418FC2F5B8472E5541C3F5280C3D795041F6285CBF422E55418FC2F5983F795041D7A3705D3A2E55413D0AD733407950417B14AE37372E55418FC2F52841795041F6285C1F322E5541B81E85BB3F795041A4703D8A332E5541666666862F79504148E17AF42F2E5541713D0A972E795041F6285CBF2F2E5541F6285C3F2F795041A4703DAA2E2E554185EB515830795041000000302D2E55413D0AD7D32E7950413D0AD7532B2E5541F6285CEF2E7950410AD7A3202A2E5541E17A140E317950411F85EB81262E554133333323327950413D0AD713272E5541AE47E19A3A7950417B14AEC7282E5541713D0A573D79504152B81ED5282E5541E17A142E3F79504100000050272E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000099B940CF15795041D85CBBBF392E55419D4B31B515795041718A96B7392E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E5541606FD64712795041152EF03A402E554106F3D70312795041F3DC299C402E5541D335AE671079504190FC9AC9422E55415529A6591079504130240EDB422E554199D704D00F7950413D4D014F442E5541221720F51A795041DEFFACE7442E55419E0DD8D31D7950416B4D9012452E55416D98D78621795041D144B34A452E5541F187D793207950415B51149E402E55411A8DF688207950411659A360402E554170283CDA20795041E9241FF53E2E5541AFF4712D2179504104D7EAA13D2E5541F262DD5421795041F7EC41893C2E554183808024177950414D539BF8392E554199B940CF15795041D85CBBBF392E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336030 - 262907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000060000000D7A3706D82795041295C8F02902D5541E17A14AE86795041B81E85EB912D55415C8FC2C5877950418FC2F5D8922D5541A4703D5A89795041AE47E13A932D554152B81EA58B795041CDCCCCBC922D554114AE47E18D7950417B14AE07922D554152B81EA58E795041713D0AE78F2D554152B81E8590795041295C8F22912D55418FC2F54891795041000000908F2D5541F6285C6F91795041E17A14DE8E2D55418FC2F5A8917950411F85EBD18D2D554185EB51E891795041C3F5289C8B2D5541F6285CFF91795041B81E85CB8A2D5541D7A3702D92795041B81E854B882D55419A99992992795041295C8F52862D554114AE473192795041A4703D8A852D55419A9999399079504133333393802D5541EC51B8BE9079504114AE47017F2D55415C8FC21590795041E17A14AE7D2D55413D0AD7E38F795041AE47E13A7D2D554148E17A648F79504185EB51187C2D55418FC2F5888E795041D7A370CD7A2D55419A9999C98D795041C3F5281C7A2D554114AE47A18C795041B81E850B792D5541CDCCCCDC8B7950413D0AD713782D55418FC2F5588579504185EB51C8762D554148E17A5480795041C3F528FC752D55415C8FC2D57F795041666666F6732D55410000006084795041C3F528CC742D5541666666F684795041D7A3708D722D5541A4703D2A89795041F6285C7F732D5541D7A370AD88795041666666D6702D55413D0AD7F38779504185EB5118702D5541C3F5283C87795041B81E857B6D2D5541D7A370DD8679504185EB51586C2D5541C3F528DC86795041333333F3692D5541D7A370AD867950411F85EB11692D55413D0AD743867950418FC2F5E8672D5541F6285CFF85795041AE47E15A672D554152B81EB585795041000000C0662D554114AE47F184795041B81E854B662D55419A9999D9837950411F85EB01652D55415C8FC21583795041C3F5280C642D55410AD7A3D0817950417B14AE07632D5541E17A141E8179504148E17AD4632D5541295C8F2280795041295C8F72632D554114AE47517F79504133333323622D5541713D0A977F7950410AD7A3F0602D554148E17AC481795041EC51B88E5F2D5541D7A3708D81795041C3F5287C5E2D5541713D0A0783795041CDCCCC2C5D2D5541AE47E15A84795041000000E05C2D5541AE47E17A8579504185EB51285B2D5541B81E850B85795041F6285CAF592D5541F6285CEF80795041E17A14BE582D55413D0AD7A382795041D7A3706D562D5541C3F528BC807950415C8FC215562D55417B14AE477E79504148E17A64542D554185EB51587D79504100000010532D5541D7A3708D7A795041713D0A47522D55411F85EB617A79504148E17AB4542D554148E17A147A795041A4703D6A562D5541CDCCCC7C797950415C8FC285582D5541D7A3704D787950418FC2F5785B2D5541EC51B8AE757950410AD7A3F0602D5541D7A3706D73795041C3F528FC642D55415C8FC27572795041AE47E1BA662D55417B14AE97717950418FC2F568682D55413333331370795041F6285CFF6B2D554152B81E9572795041C3F528AC6C2D554148E17A7471795041C3F528FC712D55411F85EBD16E795041AE47E13A712D55418FC2F5F86D795041B81E859B762D5541D7A370ED6D7950413D0AD7E3762D5541713D0A576D7950413D0AD703792D5541000000506C795041A4703D3A7B2D55418FC2F59869795041C3F5288C822D55418FC2F59868795041333333F3842D5541EC51B8FE667950413D0AD7E3872D5541F6285CCF65795041295C8F82892D554152B81E4563795041B81E859B8C2D55415C8FC2F561795041C3F5286C8E2D5541F6285C6F61795041000000708F2D5541D7A3705D6179504148E17A14902D55411F85EBA161795041A4703DCA902D5541D7A3702D6279504185EB5138912D5541AE47E1DA6D795041D7A3702D962D5541D7A3708D6E795041295C8FD2952D5541AE47E17A70795041E17A148E932D554148E17A5474795041D7A370CD922D554114AE4751767950415C8FC2A5912D5541295C8F22787950410AD7A3C0912D5541EC51B8CE7979504100000060912D5541D7A3706D7979504152B81E158F2D55411F85EB017E7950415C8FC2A58E2D5541D7A3706D82795041295C8F02902D5541
+</a>
+
+<b>
+0106000000010000000103000000020000007D00000025DD7AC481795041493DB88E5F2D5541D7A3708D81795041C3F5287C5E2D5541713D0A0783795041CDCCCC2C5D2D5541A98316B78379504117E103055D2D554122B628AC83795041C00B15EE5C2D554165D2F4E8827950414D56B96E5B2D5541944BC2D581795041D58E66065A2D5541AAD45EEF80795041AA1715BE582D55413D0AD7A382795041D7A3706D562D5541C3F528BC807950415C8FC215562D55417B14AE477E79504148E17A64542D554185EB51587D79504100000010532D5541D7A3708D7A795041713D0A47522D55411F85EB617A79504148E17AB4542D554148E17A147A795041A4703D6A562D55415087E7F479795041369D8DDA562D5541EA9BCD7C7979504121E1C385582D55418089704D7879504109D5F6785B2D5541F1F2C5B177795041AB75CFBD5C2D5541C5A2B8AE75795041532EA3F0602D554162768C9A7479504118A608E0622D554136B9716D73795041B5D729FC642D5541A263C37572795041E0F9E0BA662D5541CECAAE9771795041B0E5F468682D5541467B99B97C795041EBBFF5286C2D5541E632FFBF7C795041F524D7C36C2D5541E9970A977D7950417E06AD876E2D55412EB4EBF17C795041061E29AC6F2D5541D0B35B6F7B795041BA379A396F2D554141B284FB75795041A5CAC3956D2D5541224A3413707950410C745CFF6B2D554152B81E9572795041C3F528AC6C2D5541B856837471795041C31A01FC712D55412CBC478174795041F31186DB722D55410D3DB94E73795041C094E0EA772D55418FC2F5F86D795041B81E859B762D5541D7A370ED6D7950413D0AD7E3762D554185C409576D7950414B35D803792D55412E0417466D795041B39F5628792D5541000000506C795041A4703D3A7B2D5541E341A8DC6A79504131E56D237F2D5541F33CF6986979504155F7298C822D5541BBC000EE68795041C063E226842D55419717F59868795041DE6C34F3842D5541339A09176A7950417C938FE2852D5541C612B90E70795041D10DA4C0882D55417E04B83E747950413F4F66668B2D554130A77A84737950412EED6FFD8B2D554140095CCF727950414CA2A4908C2D55416585EAB1727950417F4AD7F38C2D5541C24409B7727950413DB7718D8D2D55419EB6C24573795041F62E98E98F2D55413C0C713D747950413EF4B68E922D554148A779547479504137E170CD922D554114AE4751767950415C8FC2A5912D554179AD902278795041E88AA3C0912D5541EC51B8CE7979504100000060912D5541D7A3706D7979504152B81E158F2D55411F85EB017E7950415C8FC2A58E2D5541D7A3706D82795041295C8F02902D5541E17A14AE86795041B81E85EB912D5541E1126C54877950410553BD78922D55415C8FC2C5877950418FC2F5D8922D5541A4703D5A89795041AE47E13A932D554152B81EA58B795041CDCCCCBC922D554114AE47E18D7950417B14AE07922D554152B81EA58E795041713D0AE78F2D554107061E8590795041F6E68E22912D5541B138F548917950415889FF8F8F2D55412EBDE05591795041FFA925548F2D5541BC0F5C6F91795041C1EF14DE8E2D55418FC2F5A8917950411F85EBD18D2D5541AB1EDEDB9179504105C3590B8C2D5541E9E051E89179504162B9279C8B2D5541E3CE5AFF9179504135EA84CB8A2D554125896F2D92795041C058844B882D55418B40722B92795041281D5945872D55419A99992992795041295C8F52862D5541CB6F642F9279504146097ABB852D554136504731927950411FE63D8A852D5541A3D890039179504104B4DC90822D55419A9999399079504133333393802D55418037F53B90795041D9BD148C802D5541020AB7BE90795041220B47017F2D5541A790462890795041356640D37D2D55415C8FC21590795041E17A14AE7D2D5541B89FD6E38F795041A954E03A7D2D5541EBB1FFD98F795041EBA06D247D2D5541578879648F795041EA9551187C2D554151AC5DA98E795041BBF948FE7A2D55418FC2F5888E795041D7A370CD7A2D554163020E408E7950415224E6897A2D5541B2A199C98D7950416F7B291C7A2D554100DAD16D8D79504171D7B6C7792D554114AE47A18C795041B81E850B792D5541CDCCCCDC8B7950413D0AD713782D55418FC2F5588579504185EB51C8762D5541D912DDF5847950412ABA91B8762D5541BA217C5480795041F6432AFC752D554182B1C2D57F795041AE6C66F6732D5541875646A0827950411966D079742D55410000006084795041C3F528CC742D5541666666F684795041D7A3708D722D55416FF1BC4A877950414B478913732D554162363D2A897950412B1F5B7F732D554164D170AD88795041087167D6702D554132F0D6F387795041A94C5218702D5541D8A116E18779504150150BD46F2D5541C3F5283C87795041B81E857B6D2D5541EAA5E4EC86795041D0F8D3876C2D5541761E70DD867950416E7251586C2D5541B77E7FDC86795041CF741D956A2D5541F2F528DC86795041938B33F3692D5541D796ECD286795041FB65AAC6692D5541D7A370AD867950411F85EB11692D55415040479F86795041C27C18EA682D5541B8B1D54386795041FE13F7E8672D5541AD855BFF85795041481EE15A672D554151FD7BB47F795041AFDA294C662D55414D74EBA17F7950413B25B9AE642D5541986C1D857F795041E462AF77632D554199E4699C7F79504137FF989B622D554114AE47517F79504133333323622D5541713D0A977F7950410AD7A3F0602D554125DD7AC481795041493DB88E5F2D5541090000004060ADE78A795041A6148F227C2D554161BBE01A8D7950414DCC48A17C2D5541B7C548418D7950413A251ED57F2D55410913EB018379504170129AB97D2D5541751066168379504179626FFD7C2D554117C8E03A83795041179B9A497C2D5541C736A3708A795041CCD1A3A07D2D554154C2B86E8A7950414531D6C37C2D55414060ADE78A795041A6148F227C2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336185 - 197446
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000C00000052B81EC5F65A5041333333C3322F5541713D0A37F55A504185EB51A8312F5541C3F528ACF35A5041EC51B88E302F5541AE47E1EAF05A50418FC2F5982E2F5541E17A143EDA5A5041E17A14FE6A2F55419A9999C9DC5A5041333333836D2F554166666636DE5A5041B81E85EB6E2F5541C3F5288CDE5A50410AD7A3406F2F554148E17AB4DF5A504133333333702F554148E17A34E15A5041E17A146E712F554114AE4751F85A5041D7A370DD332F554152B81EC5F65A5041333333C3322F5541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AD6227ACF35A50418F83BC8E302F55415E08E079F25A5041F58FD1B42F2F5541430EE1EAF05A50417C5BF6982E2F5541E17A143EDA5A5041E17A14FE6A2F554156CE268ADC5A504140F65F446D2F5541D1A18BC9DC5A50419C962E836D2F5541ED246636DE5A50410F4284EB6E2F5541BBE1298CDE5A5041B682A4406F2F55412F9C92A5DE5A5041093371556F2F5541E6C06DB4DF5A504190742833702F5541EE987A34E15A5041883F146E712F5541492C4851F85A5041AD0F71DD332F5541233E430DF85A50415655FBAC332F5541A00F1EC5F65A504154BB32C3322F554144498C83F65A50419F939A94322F5541F0B10937F55A5041244053A8312F5541DED30B10F45A50416A9FF3D5302F5541CC6A2ECCF35A504117288EA5302F5541AD6227ACF35A50418F83BC8E302F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336750 - 3054526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000340000003333333333B4504114AE47F1602F5441713D0A8730B45041E17A14BE5A2F5441AE47E19A2AB45041000000004D2F544185EB516827B4504100000050402F54413D0AD7B326B450410AD7A370332F54419A99995927B450417B14AEC72A2F5441A4703DEA27B450411F85EB31232F54417B14AEC721B45041B81E85BB202F544114AE470122B450415C8FC215202F54413D0AD70305B450413D0AD7A3172F54411F85EBA104B450410AD7A3B0192F544185EB518804B4504152B81EB5192F5441EC51B8CE00B450418FC2F5482E2F5441713D0AC7FDB350410AD7A3A03F2F5441713D0A77FBB35041E17A14DE4C2F5441EC51B87EF8B350413D0AD7635D2F5441A4703D5AF7B35041F6285C1F642F5441D7A3701DF5B3504100000050712F544100000080F3B3504148E17AD47A2F54417B14AEC7F0B350413D0AD7438D2F54415C8FC295F0B35041666666F68E2F5441A4703DEAEEB35041E17A146E9D2F5441000000F000B45041C3F5286CB22F544100000040F8B350418FC2F598A52F544148E17AE4F9B3504114AE4781A02F544166666616F8B35041666666B69D2F544148E17A94F8B3504152B81EC5992F54417B14AE97F7B350419A9999A9952F544114AE4771F6B35041CDCCCCAC942F54410AD7A390F9B35041F6285C4F8B2F54411F85EBC1F7B35041A4703D5A882F5441666666F61AB4504185EB5138702F544114AE47211BB45041AE47E1EA752F5441F6285C4F0BB45041B81E853B852F544185EB516810B45041E17A148E8A2F5441C3F5286C1AB4504100000020812F5441713D0AE71BB450415C8FC2F5802F544185EB51D81FB4504185EB51587D2F5441E17A141E24B45041A4703DDA7C2F544152B81EE527B45041CDCCCCAC7D2F5441666666562AB45041D7A3700D802F5441C3F5288C2CB4504100000040872F5441D7A370AD2DB45041295C8F628B2F544148E17AA42CB45041000000D08B2F5441B81E85CB2BB450418FC2F5D88C2F54415C8FC2B52BB4504185EB51B88D2F544148E17AB42DB45041E17A149E8D2F54417B14AE073BB45041000000408C2F544148E17AF443B450417B14AEF78B2F5441713D0A8738B45041333333637B2F5441333333F32AB45041EC51B8AE672F54413333333333B4504114AE47F1602F5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000DC5023A155B4504134801CC3932F5441BF56353056B450412061FB76922F54410EB6726755B45041D1685E24912F544181CE28AE52B45041A44829ED8D2F544141AF3AA751B450416E10C0B68C2F54410EEF74E450B450412CF27B418C2F5441E6896F454FB450412A493E058C2F54411C3301B14CB45041630BA8BE8B2F54411A72C1334AB45041E16FE7CE8B2F5441C90EE37547B45041E99BCCE08B2F5441CCEF1A7843B4504121E69DFB8B2F544122B37BBA40B45041FC32D3118C2F544169D1665D3DB45041F19C142D8C2F544131449D343AB45041CA34A9558C2F54414EAC3CCE36B45041F81FFCAE8C2F5441F34CF9852EB45041EE9194888D2F5441CA03AA7B2EB450410BF8327F8E2F54415F4979CB2EB45041A03D02CF8E2F5441F38E481B2FB45041C9C8A06E8F2F54414D522B4B2FB45041F3533F0E902F54411D1AE7BA2FB450413A20D4BD902F5441703024FA30B450416FF51AED912F5441A5056B2932B45041FD8D444C932F5441339E948833B45041E5E950DB942F5441264449A735B450414F94DE39972F5441EC51B80E37B45041E17A140E992F54415C8FC24540B45041A4703D8AA22F54413B09A1BD40B450413D4CC432A22F5441EB1ED3DF41B45041E546C733A12F5441D77E01FC41B4504175406F4AA12F5441C920EC5A44B45041FA1E8B8F9F2F5441F6285CFF46B450411F85EBA19D2F54411F85EBA14CB450410AD7A3D0992F5441D04BE32255B450418A35BC69942F5441DC5023A155B4504134801CC3932F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336750 - 3318825
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000340000003333333333B4504114AE47F1602F5441713D0A8730B45041E17A14BE5A2F5441AE47E19A2AB45041000000004D2F544185EB516827B4504100000050402F54413D0AD7B326B450410AD7A370332F54419A99995927B450417B14AEC72A2F5441A4703DEA27B450411F85EB31232F54417B14AEC721B45041B81E85BB202F544114AE470122B450415C8FC215202F54413D0AD70305B450413D0AD7A3172F54411F85EBA104B450410AD7A3B0192F544185EB518804B4504152B81EB5192F5441EC51B8CE00B450418FC2F5482E2F5441713D0AC7FDB350410AD7A3A03F2F5441713D0A77FBB35041E17A14DE4C2F5441EC51B87EF8B350413D0AD7635D2F5441A4703D5AF7B35041F6285C1F642F5441D7A3701DF5B3504100000050712F544100000080F3B3504148E17AD47A2F54417B14AEC7F0B350413D0AD7438D2F54415C8FC295F0B35041666666F68E2F5441A4703DEAEEB35041E17A146E9D2F5441000000F000B45041C3F5286CB22F544100000040F8B350418FC2F598A52F544148E17AE4F9B3504114AE4781A02F544166666616F8B35041666666B69D2F544148E17A94F8B3504152B81EC5992F54417B14AE97F7B350419A9999A9952F544114AE4771F6B35041CDCCCCAC942F54410AD7A390F9B35041F6285C4F8B2F54411F85EBC1F7B35041A4703D5A882F5441666666F61AB4504185EB5138702F544114AE47211BB45041AE47E1EA752F5441F6285C4F0BB45041B81E853B852F544185EB516810B45041E17A148E8A2F5441C3F5286C1AB4504100000020812F5441713D0AE71BB450415C8FC2F5802F544185EB51D81FB4504185EB51587D2F5441E17A141E24B45041A4703DDA7C2F544152B81EE527B45041CDCCCCAC7D2F5441666666562AB45041D7A3700D802F5441C3F5288C2CB4504100000040872F5441D7A370AD2DB45041295C8F628B2F544148E17AA42CB45041000000D08B2F5441B81E85CB2BB450418FC2F5D88C2F54415C8FC2B52BB4504185EB51B88D2F544148E17AB42DB45041E17A149E8D2F54417B14AE073BB45041000000408C2F544148E17AF443B450417B14AEF78B2F5441713D0A8738B45041333333637B2F5441333333F32AB45041EC51B8AE672F54413333333333B4504114AE47F1602F5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000DC5023A155B4504134801CC3932F5441BF56353056B450412061FB76922F54410EB6726755B45041D1685E24912F544181CE28AE52B45041A44829ED8D2F544141AF3AA751B450416E10C0B68C2F54410EEF74E450B450412CF27B418C2F5441E6896F454FB450412A493E058C2F54411C3301B14CB45041630BA8BE8B2F54411A72C1334AB45041E16FE7CE8B2F5441C90EE37547B45041E99BCCE08B2F5441CCEF1A7843B4504121E69DFB8B2F544122B37BBA40B45041FC32D3118C2F544169D1665D3DB45041F19C142D8C2F544131449D343AB45041CA34A9558C2F54414EAC3CCE36B45041F81FFCAE8C2F5441F34CF9852EB45041EE9194888D2F5441CA03AA7B2EB450410BF8327F8E2F54415F4979CB2EB45041A03D02CF8E2F5441F38E481B2FB45041C9C8A06E8F2F54414D522B4B2FB45041F3533F0E902F54411D1AE7BA2FB450413A20D4BD902F5441703024FA30B450416FF51AED912F5441A5056B2932B45041FD8D444C932F5441339E948833B45041E5E950DB942F5441264449A735B450414F94DE39972F5441EC51B80E37B45041E17A140E992F54415C8FC24540B45041A4703D8AA22F54413B09A1BD40B450413D4CC432A22F5441EB1ED3DF41B45041E546C733A12F5441D77E01FC41B4504175406F4AA12F5441C920EC5A44B45041FA1E8B8F9F2F5441F6285CFF46B450411F85EBA19D2F54411F85EBA14CB450410AD7A3D0992F5441D04BE32255B450418A35BC69942F5441DC5023A155B4504134801CC3932F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336857 - 1873543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000570000009A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441295C8FA29AB45041CDCCCC1CBB2E5441C3F5285C94B45041E17A14AEB92E5441713D0AB791B45041E17A14BEB22E5441EC51B84E8EB4504185EB5128A92E5441C3F5285C8CB45041CDCCCCCCA32E5441E17A143E87B45041295C8F72952E5441B81E857B85B450419A9999E98F2E544114AE47D178B450411F85EB61902E5441D7A3705D6BB4504148E17A04912E5441D7A3707D6FB45041CDCCCC1C7F2E5441B81E85FB71B45041A4703D4A742E54417B14AE3760B450410AD7A3F06E2E54413D0AD76359B450418FC2F5A87C2E54415C8FC2C54EB4504148E17AF4872E5441713D0A374AB4504185EB51D88B2E54413333333346B450419A9999F98D2E5441713D0AA73CB4504152B81EF58D2E5441A4703D9A3FB450418FC2F568942E5441CDCCCC4C41B4504148E17A94982E5441666666D64CB45041EC51B89E9C2E5441D7A3706D4EB450411F85EB019D2E5441A4703D5A50B450411F85EB019D2E544114AE478154B45041CDCCCC2C9C2E5441C3F5282C57B45041B81E850B9C2E5441A4703DCA58B450411F85EB919C2E54411F85EB515AB45041666666D69D2E5441713D0A075EB45041E17A14AE9F2E54410AD7A3D05DB450417B14AE27A02E544152B81E855FB45041C3F528FCA02E5441C3F5284C5EB4504100000000A42E5441666666A65CB45041E17A143EA32E54417B14AE275CB45041B81E850BA42E5441AE47E16A5CB4504114AE4701A52E54417B14AEB75CB450411F85EBF1A52E54415C8FC2A55EB45041F6285CCFA82E544152B81E4561B45041AE47E1EAAC2E5441295C8F3264B4504148E17A74AF2E5441713D0AC766B450411F85EBF1B12E544152B81ED568B4504133333363B32E5441295C8FC26BB45041666666F6B42E54418FC2F54870B450415C8FC2C5B62E54419A9999A96FB4504185EB5168B72E54418FC2F5486CB4504148E17A24B62E5441E17A14BE68B45041CDCCCC5CB42E5441295C8F6266B450413D0AD783B22E54415C8FC20564B45041D7A370ADB02E5441E17A147E62B45041B81E850BB42E54417B14AEB75BB45041295C8F12B12E5441666666265BB45041C3F528ACAF2E54419A9999695BB45041AE47E15AAD2E5441C3F5286C57B45041B81E85BBAC2E544114AE476155B4504100000000AC2E544152B81EA552B450417B14AE97AA2E54413333330352B45041B81E85DBA92E54419A9999A951B45041C3F5283CA72E5441B81E855B51B45041CDCCCC7CA52E5441CDCCCC7C51B450418FC2F598A12E54411F85EB0151B450417B14AE479F2E544185EB51D84FB450413D0AD7039E2E544114AE47414EB45041E17A149E9D2E5441E17A14AE4CB45041000000509D2E54411F85EBC142B45041D7A370FD992E5441666666D641B45041713D0AE7992E54413333333345B45041C3F5282CA22E544148E17AF446B45041EC51B8FEA62E544114AE47B148B45041B81E857BAB2E5441AE47E19A4AB450415C8FC225B02E5441E17A146E4CB4504185EB51A8B42E5441EC51B85E4EB45041EC51B80EB92E54413D0AD70356B450415C8FC245C92E5441000000505AB4504114AE4731D22E54419A9999795CB450415C8FC215D12E54415C8FC2555EB4504152B81EC5CF2E5441D7A3702D61B45041C3F5283CCC2E54413D0AD77365B450417B14AE37C82E5441AE47E17A76B45041AE47E10ABA2E5441CDCCCC6C97B45041A4703D0AD72E54419A999929B9B45041AE47E1BAF42E5441
+</a>
+
+<b>
+0106000000010000000103000000010000006100000034F65B4577B45041DF906A3EBF2E54414798071A7AB450413210F03ABD2E5441DDD55C2F7AB45041D9EEB64DBD2E5441A51B3A367AB4504143E92449BD2E5441CDCCCC6C97B45041A4703D0AD72E54419A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441295C8FA29AB45041CDCCCC1CBB2E5441C3F5285C94B45041E17A14AEB92E5441713D0AB791B45041E17A14BEB22E5441EC51B84E8EB4504185EB5128A92E5441C3F5285C8CB45041CDCCCCCCA32E5441E17A143E87B45041295C8F72952E5441B81E857B85B450419A9999E98F2E544114AE47D178B450411F85EB61902E5441D7A3705D6BB4504148E17A04912E5441D7A3707D6FB45041CDCCCC1C7F2E5441B81E85FB71B45041A4703D4A742E54417B14AE3760B450410AD7A3F06E2E54413D0AD76359B450418FC2F5A87C2E54415C8FC2C54EB4504148E17AF4872E5441713D0A374AB4504185EB51D88B2E54413333333346B450419A9999F98D2E5441713D0AA73CB4504152B81EF58D2E5441A4703D9A3FB450418FC2F568942E54416C7916F141B450412E64B84E952E5441F1FA1D2E43B450410AE9AA43992E5441666666D64CB45041EC51B89E9C2E5441D7A3706D4EB450411F85EB019D2E5441A4703D5A50B450411F85EB019D2E544114AE478154B45041CDCCCC2C9C2E5441C3F5282C57B45041B81E850B9C2E5441A4703DCA58B450411F85EB919C2E54411F85EB515AB45041666666D69D2E5441713D0A075EB45041E17A14AE9F2E54410AD7A3D05DB450417B14AE27A02E544152B81E855FB45041C3F528FCA02E5441C3F5284C5EB4504100000000A42E5441666666A65CB45041E17A143EA32E54417B14AE275CB45041B81E850BA42E5441AE47E16A5CB4504114AE4701A52E54417B14AEB75CB450411F85EBF1A52E54415C8FC2A55EB45041F6285CCFA82E544152B81E4561B45041AE47E1EAAC2E5441295C8F3264B4504148E17A74AF2E5441713D0AC766B450411F85EBF1B12E544152B81ED568B4504133333363B32E5441295C8FC26BB45041666666F6B42E54418FC2F54870B450415C8FC2C5B62E54419A9999A96FB4504185EB5168B72E54418FC2F5486CB4504148E17A24B62E5441E17A14BE68B45041CDCCCC5CB42E5441295C8F6266B450413D0AD783B22E54415C8FC20564B45041D7A370ADB02E5441E17A147E62B45041B81E850BB42E54417B14AEB75BB45041295C8F12B12E5441666666265BB45041C3F528ACAF2E54419A9999695BB45041AE47E15AAD2E5441C3F5286C57B45041B81E85BBAC2E544114AE476155B4504100000000AC2E544152B81EA552B450417B14AE97AA2E54413333330352B45041B81E85DBA92E54419A9999A951B45041C3F5283CA72E5441B81E855B51B45041CDCCCC7CA52E5441CDCCCC7C51B450418FC2F598A12E54411F85EB0151B450417B14AE479F2E544185EB51D84FB450413D0AD7039E2E544114AE47414EB45041E17A149E9D2E5441E17A14AE4CB45041000000509D2E5441E28114D448B45041916C3F229C2E5441FB7AD93543B45041316A5F339A2E54415D5A774444B45041BEE84A0D9E2E54419CB9D65A45B4504119B698DBA12E544181EF531B47B45041ACBB57A1A62E54417B4CBFFA48B450413AC11667AB2E544159A92ADA4AB450414FB35E1DB02E54414CDFA79A4CB45041C8435386B42E5441C99D66C74EB450414DFB350EB92E54413E2E5B3053B45041EAF23C8AC22E544161EA252656B45041E21A0201C92E5441F24B797356B45041F068DE3EC92E544107C143D056B4504128A14F36CA2E5441D8532C705AB4504169765001D22E54419A9999795CB450415C8FC215D12E54415C8FC2555EB4504152B81EC5CF2E5441627913C761B45041BEF1ED8DCD2E544153C326AC6BB4504154745DF7C62E5441BB43B2676DB450416F9B0BD0C52E5441F3ADFA9872B45041777FFC5AC22E544134F65B4577B45041DF906A3EBF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336857 - 3318369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000570000009A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441295C8FA29AB45041CDCCCC1CBB2E5441C3F5285C94B45041E17A14AEB92E5441713D0AB791B45041E17A14BEB22E5441EC51B84E8EB4504185EB5128A92E5441C3F5285C8CB45041CDCCCCCCA32E5441E17A143E87B45041295C8F72952E5441B81E857B85B450419A9999E98F2E544114AE47D178B450411F85EB61902E5441D7A3705D6BB4504148E17A04912E5441D7A3707D6FB45041CDCCCC1C7F2E5441B81E85FB71B45041A4703D4A742E54417B14AE3760B450410AD7A3F06E2E54413D0AD76359B450418FC2F5A87C2E54415C8FC2C54EB4504148E17AF4872E5441713D0A374AB4504185EB51D88B2E54413333333346B450419A9999F98D2E5441713D0AA73CB4504152B81EF58D2E5441A4703D9A3FB450418FC2F568942E5441CDCCCC4C41B4504148E17A94982E5441666666D64CB45041EC51B89E9C2E5441D7A3706D4EB450411F85EB019D2E5441A4703D5A50B450411F85EB019D2E544114AE478154B45041CDCCCC2C9C2E5441C3F5282C57B45041B81E850B9C2E5441A4703DCA58B450411F85EB919C2E54411F85EB515AB45041666666D69D2E5441713D0A075EB45041E17A14AE9F2E54410AD7A3D05DB450417B14AE27A02E544152B81E855FB45041C3F528FCA02E5441C3F5284C5EB4504100000000A42E5441666666A65CB45041E17A143EA32E54417B14AE275CB45041B81E850BA42E5441AE47E16A5CB4504114AE4701A52E54417B14AEB75CB450411F85EBF1A52E54415C8FC2A55EB45041F6285CCFA82E544152B81E4561B45041AE47E1EAAC2E5441295C8F3264B4504148E17A74AF2E5441713D0AC766B450411F85EBF1B12E544152B81ED568B4504133333363B32E5441295C8FC26BB45041666666F6B42E54418FC2F54870B450415C8FC2C5B62E54419A9999A96FB4504185EB5168B72E54418FC2F5486CB4504148E17A24B62E5441E17A14BE68B45041CDCCCC5CB42E5441295C8F6266B450413D0AD783B22E54415C8FC20564B45041D7A370ADB02E5441E17A147E62B45041B81E850BB42E54417B14AEB75BB45041295C8F12B12E5441666666265BB45041C3F528ACAF2E54419A9999695BB45041AE47E15AAD2E5441C3F5286C57B45041B81E85BBAC2E544114AE476155B4504100000000AC2E544152B81EA552B450417B14AE97AA2E54413333330352B45041B81E85DBA92E54419A9999A951B45041C3F5283CA72E5441B81E855B51B45041CDCCCC7CA52E5441CDCCCC7C51B450418FC2F598A12E54411F85EB0151B450417B14AE479F2E544185EB51D84FB450413D0AD7039E2E544114AE47414EB45041E17A149E9D2E5441E17A14AE4CB45041000000509D2E54411F85EBC142B45041D7A370FD992E5441666666D641B45041713D0AE7992E54413333333345B45041C3F5282CA22E544148E17AF446B45041EC51B8FEA62E544114AE47B148B45041B81E857BAB2E5441AE47E19A4AB450415C8FC225B02E5441E17A146E4CB4504185EB51A8B42E5441EC51B85E4EB45041EC51B80EB92E54413D0AD70356B450415C8FC245C92E5441000000505AB4504114AE4731D22E54419A9999795CB450415C8FC215D12E54415C8FC2555EB4504152B81EC5CF2E5441D7A3702D61B45041C3F5283CCC2E54413D0AD77365B450417B14AE37C82E5441AE47E17A76B45041AE47E10ABA2E5441CDCCCC6C97B45041A4703D0AD72E54419A999929B9B45041AE47E1BAF42E5441
+</a>
+
+<b>
+0106000000010000000103000000010000006100000034F65B4577B45041DF906A3EBF2E54414798071A7AB450413210F03ABD2E5441DDD55C2F7AB45041D9EEB64DBD2E5441A51B3A367AB4504143E92449BD2E5441CDCCCC6C97B45041A4703D0AD72E54419A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441295C8FA29AB45041CDCCCC1CBB2E5441C3F5285C94B45041E17A14AEB92E5441713D0AB791B45041E17A14BEB22E5441EC51B84E8EB4504185EB5128A92E5441C3F5285C8CB45041CDCCCCCCA32E5441E17A143E87B45041295C8F72952E5441B81E857B85B450419A9999E98F2E544114AE47D178B450411F85EB61902E5441D7A3705D6BB4504148E17A04912E5441D7A3707D6FB45041CDCCCC1C7F2E5441B81E85FB71B45041A4703D4A742E54417B14AE3760B450410AD7A3F06E2E54413D0AD76359B450418FC2F5A87C2E54415C8FC2C54EB4504148E17AF4872E5441713D0A374AB4504185EB51D88B2E54413333333346B450419A9999F98D2E5441713D0AA73CB4504152B81EF58D2E5441A4703D9A3FB450418FC2F568942E54416C7916F141B450412E64B84E952E5441F1FA1D2E43B450410AE9AA43992E5441666666D64CB45041EC51B89E9C2E5441D7A3706D4EB450411F85EB019D2E5441A4703D5A50B450411F85EB019D2E544114AE478154B45041CDCCCC2C9C2E5441C3F5282C57B45041B81E850B9C2E5441A4703DCA58B450411F85EB919C2E54411F85EB515AB45041666666D69D2E5441713D0A075EB45041E17A14AE9F2E54410AD7A3D05DB450417B14AE27A02E544152B81E855FB45041C3F528FCA02E5441C3F5284C5EB4504100000000A42E5441666666A65CB45041E17A143EA32E54417B14AE275CB45041B81E850BA42E5441AE47E16A5CB4504114AE4701A52E54417B14AEB75CB450411F85EBF1A52E54415C8FC2A55EB45041F6285CCFA82E544152B81E4561B45041AE47E1EAAC2E5441295C8F3264B4504148E17A74AF2E5441713D0AC766B450411F85EBF1B12E544152B81ED568B4504133333363B32E5441295C8FC26BB45041666666F6B42E54418FC2F54870B450415C8FC2C5B62E54419A9999A96FB4504185EB5168B72E54418FC2F5486CB4504148E17A24B62E5441E17A14BE68B45041CDCCCC5CB42E5441295C8F6266B450413D0AD783B22E54415C8FC20564B45041D7A370ADB02E5441E17A147E62B45041B81E850BB42E54417B14AEB75BB45041295C8F12B12E5441666666265BB45041C3F528ACAF2E54419A9999695BB45041AE47E15AAD2E5441C3F5286C57B45041B81E85BBAC2E544114AE476155B4504100000000AC2E544152B81EA552B450417B14AE97AA2E54413333330352B45041B81E85DBA92E54419A9999A951B45041C3F5283CA72E5441B81E855B51B45041CDCCCC7CA52E5441CDCCCC7C51B450418FC2F598A12E54411F85EB0151B450417B14AE479F2E544185EB51D84FB450413D0AD7039E2E544114AE47414EB45041E17A149E9D2E5441E17A14AE4CB45041000000509D2E5441E28114D448B45041916C3F229C2E5441FB7AD93543B45041316A5F339A2E54415D5A774444B45041BEE84A0D9E2E54419CB9D65A45B4504119B698DBA12E544181EF531B47B45041ACBB57A1A62E54417B4CBFFA48B450413AC11667AB2E544159A92ADA4AB450414FB35E1DB02E54414CDFA79A4CB45041C8435386B42E5441C99D66C74EB450414DFB350EB92E54413E2E5B3053B45041EAF23C8AC22E544161EA252656B45041E21A0201C92E5441F24B797356B45041F068DE3EC92E544107C143D056B4504128A14F36CA2E5441D8532C705AB4504169765001D22E54419A9999795CB450415C8FC215D12E54415C8FC2555EB4504152B81EC5CF2E5441627913C761B45041BEF1ED8DCD2E544153C326AC6BB4504154745DF7C62E5441BB43B2676DB450416F9B0BD0C52E5441F3ADFA9872B45041777FFC5AC22E544134F65B4577B45041DF906A3EBF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>337363 - 4138727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001000000000000070B227514166666656303B554148E17A64B2275141E17A14EE303B5541333333A3C8275141CDCCCC3C373B5541666666C6D5275141295C8F823B3B55415C8FC235DE275141295C8F323F3B55417B14AE97E1275141C3F5285C403B5541A4703D9AE42751415C8FC265123B554100000070E627514152B81E95F63A554166666656DB2751413D0AD763F83A5541A4703DEAD32751415C8FC255FA3A554100000060CF2751415C8FC265FC3A5541333333A3CA27514185EB5198FF3A55417B14AE87C62751415C8FC235033B5541E17A141EC3275141A4703D0A073B554148E17AE4B327514148E17A341A3B554100000070B227514166666656303B5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000AE52DAA1B2275141115D12602D3B554179E926B9B4275141448B6C8F2D3B55416DE7FBE9B42751415C8FC2B5303B55417B48811BC8275141B0836341363B5541D7A3709DD2275141A4703D7A393B5541A245B6A3E0275141508D97263F3B55410C022BDFE127514123DBF9663E3B55415FCC70A5E2275141C8538D68333B5541447C59E9E3275141A6E4DD0F213B5541779BF5D1E42751419502533A123B55411E068B55E62751410AC02726F83A554121B07290E3275141C74B3729F83A554161D1C07CE3275141454E1A10F73A554166666656DB2751413D0AD763F83A5541A4703DEAD32751415C8FC255FA3A554100000060CF2751415C8FC265FC3A5541333333A3CA27514185EB5198FF3A55417B14AE87C62751415C8FC235033B5541E17A141EC3275141A4703D0A073B5541692154F4B3275141A3AC87201A3B5541C1CAA1BDB32751412FDD24EE1A3B5541AE52DAA1B2275141115D12602D3B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>338634 - 3652543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000033333363C0D050410AD7A370428F5441713D0A67C0D05041B81E85FB438F54419A999959C0D0504148E17A14458F5441AE47E16AC0D05041CDCCCC5C5E8F5441F6285C2FC0D05041D7A3700D668F54413D0AD7E3BED050411F85EB617B8F54413D0AD773BDD05041E17A147E938F5441713D0A77B4D0504152B81E95EB8F5441E17A140EB9D0504148E17AC4EC8F54418FC2F5D8C2D05041D7A370BD928F5441A4703D0AC4D050411F85EB917B8F5441C3F5289CC4D05041713D0A276F8F544148E17A44C5D05041F6285CAF618F544100000080C5D05041EC51B81E438F54417B14AE97C5D0504148E17A14428F54410AD7A3A0C5D050413D0AD7E33D8F544133333363C0D050410AD7A370428F5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000E21C44A0C5D0504148F39A103E8F54410AD7A3A0C5D050413D0AD7E33D8F544133333363C0D050410AD7A370428F5441713D0A67C0D05041B81E85FB438F54419A999959C0D0504148E17A14458F5441AE47E16AC0D05041CDCCCC5C5E8F5441F6285C2FC0D05041D7A3700D668F54413D0AD7E3BED050411F85EB617B8F54413D0AD773BDD05041E17A147E938F5441713D0A77B4D0504152B81E95EB8F5441E17A140EB9D0504148E17AC4EC8F54418FC2F5D8C2D05041D7A370BD928F5441A4703D0AC4D050411F85EB917B8F5441C3F5289CC4D05041713D0A276F8F544148E17A44C5D05041F6285CAF618F544100000080C5D05041EC51B81E438F5441E21C44A0C5D0504148F39A103E8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>339299 - 184546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000005000000333333B3F1D050419A9999996991544100000020F3D05041EC51B8DE6D9154411F85EB3124D150417B14AED771915441AE47E19A23D150413D0AD7436D915441333333B3F1D050419A99999969915441
+</a>
+
+<b>
+010600000001000000010300000001000000070000008BC3B89DFAD05041A1323A416A915441C11834B3F1D05041FEE799996991544100000020F3D05041EC51B8DE6D915441EED6EA3124D150419CE2ADD771915441C45955AC23D15041E37340CB6D915441AE47E19A23D150413D0AD7436D9154418BC3B89DFAD05041A1323A416A915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>339299 - 422568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000005000000333333B3F1D050419A9999996991544100000020F3D05041EC51B8DE6D9154411F85EB3124D150417B14AED771915441AE47E19A23D150413D0AD7436D915441333333B3F1D050419A99999969915441
+</a>
+
+<b>
+010600000001000000010300000001000000070000008BC3B89DFAD05041A1323A416A915441C11834B3F1D05041FEE799996991544100000020F3D05041EC51B8DE6D915441EED6EA3124D150419CE2ADD771915441C45955AC23D15041E37340CB6D915441AE47E19A23D150413D0AD7436D9154418BC3B89DFAD05041A1323A416A915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341665 - 1223605
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000B81E854BE38E514148E17A44399A5441CDCCCC0CEF8E5141CDCCCCDC359A54417B14AE07EA8E5141CDCCCC2C309A54411F85EB61E68E5141B81E850B2C9A5441AE47E18AE18E51418FC2F5D82C9A5441EC51B81EDE8E5141E17A140E289A54418FC2F5E8E08E5141000000501B9A5441666666D6E38E51419A9999D9199A5441CDCCCC5CE68E5141B81E85EB179A544152B81E95E88E5141B81E850B0F9A5441E17A144EE98E514114AE47D10A9A544100000000EA8E5141EC51B87E089A544152B81E25D98E514133333373089A5441713D0AF7D28E5141295C8FF2089A544166666626D38E514148E17A540B9A544100000080D58E51418FC2F5480A9A54418FC2F538DB8E5141295C8FA2099A5441C3F5286CE18E5141000000F0099A54419A9999B9E18E5141295C8F020F9A5441A4703DBAE08E514148E17AA4169A5441E17A140EDE8E5141295C8F321C9A5441A4703D8ADA8E514114AE4701229A54411F85EB01DA8E51418FC2F558249A5441EC51B86EDA8E51417B14AEE7269A5441AE47E10ADD8E5141D7A3702D2C9A5441AE47E14AE08E5141CDCCCCCC2F9A5441CDCCCCBCE68E51411F85EB91329A54417B14AE47E08E5141AE47E16A399A54411F85EB51D48E51419A999929439A544152B81E55D78E5141A4703D3A429A54419A999969DE8E5141D7A370AD3B9A5441B81E854BE38E514148E17A44399A5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441EC51B8BEC18E5141B81E853B339A54419A9999A9BE8E51413D0AD783389A54418FC2F588BC8E5141E17A140E3D9A5441A147EAF3BC8E51415439128F3E9A5441CEC56318C38E5141CFDCB5A0429A5441E17A14AEC58E5141713D0A77459A54417B14AE67C88E514133333373489A544148E17AF4C98E51419A999939499A54416E54CB8BCB8E51415BAFC8414A9A54414D0B9176CD8E514193B45729499A5441854E6377D48E5141BFBC1A9B439A54417B14AE47E08E5141AE47E16A399A54416D6D48B0E88E5141F62B8077329A54411950E5A7DF8E514163E62A6C2D9A5441FFC533EFDD8E5141E0B5A1172C9A54415B46E0D3DD8E5141E81860E12B9A544145901BB3DD8E5141356E81C72B9A54412BEE8911DC8E51419B393A63289A5441FB5B1D3CDB8E5141D5EA78BB269A544157979323DB8E5141828C7EC5249A544171B6FE86DB8E5141AD1CAFF9229A544179C74DB4DB8E5141F2C99C1D229A5441BD93D15BDC8E51412082EFBA209A544163D9F3A7DC8E5141E495FA15209A5441737C1A71DE8E5141CBF0094B1C9A5441374BDD9FDF8E514135706BEF189A544154E82952E08E5141AE89FEA6169A54415FAD822EE18E5141A0221C7E0F9A54416AA47E24E18E5141C139B3790E9A5441BAE959F4E08E514143B53348099A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341665 - 3312397
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000B81E854BE38E514148E17A44399A5441CDCCCC0CEF8E5141CDCCCCDC359A54417B14AE07EA8E5141CDCCCC2C309A54411F85EB61E68E5141B81E850B2C9A5441AE47E18AE18E51418FC2F5D82C9A5441EC51B81EDE8E5141E17A140E289A54418FC2F5E8E08E5141000000501B9A5441666666D6E38E51419A9999D9199A5441CDCCCC5CE68E5141B81E85EB179A544152B81E95E88E5141B81E850B0F9A5441E17A144EE98E514114AE47D10A9A544100000000EA8E5141EC51B87E089A544152B81E25D98E514133333373089A5441713D0AF7D28E5141295C8FF2089A544166666626D38E514148E17A540B9A544100000080D58E51418FC2F5480A9A54418FC2F538DB8E5141295C8FA2099A5441C3F5286CE18E5141000000F0099A54419A9999B9E18E5141295C8F020F9A5441A4703DBAE08E514148E17AA4169A5441E17A140EDE8E5141295C8F321C9A5441A4703D8ADA8E514114AE4701229A54411F85EB01DA8E51418FC2F558249A5441EC51B86EDA8E51417B14AEE7269A5441AE47E10ADD8E5141D7A3702D2C9A5441AE47E14AE08E5141CDCCCCCC2F9A5441CDCCCCBCE68E51411F85EB91329A54417B14AE47E08E5141AE47E16A399A54411F85EB51D48E51419A999929439A544152B81E55D78E5141A4703D3A429A54419A999969DE8E5141D7A370AD3B9A5441B81E854BE38E514148E17A44399A5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441EC51B8BEC18E5141B81E853B339A54419A9999A9BE8E51413D0AD783389A54418FC2F588BC8E5141E17A140E3D9A5441A147EAF3BC8E51415439128F3E9A5441CEC56318C38E5141CFDCB5A0429A5441E17A14AEC58E5141713D0A77459A54417B14AE67C88E514133333373489A544148E17AF4C98E51419A999939499A54416E54CB8BCB8E51415BAFC8414A9A54414D0B9176CD8E514193B45729499A5441854E6377D48E5141BFBC1A9B439A54417B14AE47E08E5141AE47E16A399A54416D6D48B0E88E5141F62B8077329A54411950E5A7DF8E514163E62A6C2D9A5441FFC533EFDD8E5141E0B5A1172C9A54415B46E0D3DD8E5141E81860E12B9A544145901BB3DD8E5141356E81C72B9A54412BEE8911DC8E51419B393A63289A5441FB5B1D3CDB8E5141D5EA78BB269A544157979323DB8E5141828C7EC5249A544171B6FE86DB8E5141AD1CAFF9229A544179C74DB4DB8E5141F2C99C1D229A5441BD93D15BDC8E51412082EFBA209A544163D9F3A7DC8E5141E495FA15209A5441737C1A71DE8E5141CBF0094B1C9A5441374BDD9FDF8E514135706BEF189A544154E82952E08E5141AE89FEA6169A54415FAD822EE18E5141A0221C7E0F9A54416AA47E24E18E5141C139B3790E9A5441BAE959F4E08E514143B53348099A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342847 - 226032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000004000000010300000001000000BF000000A4703D5AD9E750410000006080A85441C3F528BCD9E750419A99999981A85441C3F5288CDDE75041C3F528FC81A85441AE47E14ADEE7504148E17AA481A85441000000D0DFE75041CDCCCCAC81A854415C8FC225E1E7504152B81E6581A854415C8FC255E1E7504148E17AB481A8544133333373E2E750413D0AD73382A854419A999969E3E750418FC2F5C883A854418FC2F5F8E3E750410000006084A854415C8FC2B5E5E750417B14AE7784A8544148E17A94E6E750410AD7A32084A8544133333343E7E7504148E17AB481A854413D0AD703E7E75041E17A14CE80A85441713D0A87E9E75041000000D07FA85441F6285C3FE9E75041295C8F327EA854417B14AE57E9E7504148E17A247DA8544152B81EC5EAE7504148E17A147DA85441AE47E11AECE750419A9999B97EA854411F85EB81ECE750419A9999B97EA854419A9999D9ECE75041A4703D6A7EA85441A4703D5AECE7504148E17A547DA854419A999999ECE750415C8FC2557CA85441A4703D4AECE7504185EB51287BA854418FC2F518EDE750418FC2F5987AA85441713D0A27EEE750410AD7A3E07AA85441D7A3701DEFE75041E17A142E7CA8544133333343F0E750415C8FC2757CA85441F6285C8FF2E75041CDCCCC2C7DA8544166666626F3E75041B81E85CB7DA8544114AE4731F6E750411F85EB917EA854418FC2F538F6E75041333333237EA85441EC51B88EF7E750415C8FC2857CA85441C3F5281CF9E750410AD7A3F07AA8544114AE47A1FAE75041666666167CA85441EC51B8FEFBE750418FC2F5887AA85441E17A146EFCE75041C3F528CC78A8544166666626FCE7504148E17AC478A85441E17A146EFCE75041D7A3702D78A85441B81E852BF9E750413333335379A85441D7A3704DF8E750413333336379A85441EC51B86EF7E75041AE47E1AA79A854417B14AE07F7E750413333336379A85441000000E0F6E75041E17A149E77A85441666666C6F7E750415C8FC2E577A854413D0AD743F9E750416666668677A85441295C8FF2F9E75041000000D076A85441AE47E19AF9E7504185EB516876A85441AE47E18AF9E75041295C8F4275A854413D0AD703F9E75041CDCCCCEC73A8544148E17AA4F8E75041CDCCCCBC73A854415C8FC225F8E7504152B81ED573A85441713D0A37F7E75041295C8F4275A8544114AE4721F6E75041D7A3706D73A8544114AE4721F6E750410AD7A3B071A854418FC2F548F6E75041AE47E17A70A85441E17A140EF8E75041E17A148E6EA85441D7A3703DF8E750410AD7A3406DA85441E17A14FEF7E750419A9999A96CA854417B14AEF7F6E75041AE47E1BA6BA854410AD7A370F6E75041333333B36BA854419A9999C9F5E750415C8FC2456AA85441295C8F22F5E75041713D0A5769A854419A9999E9F5E75041A4703DBA67A85441333333F3F6E750418FC2F5B866A854419A9999C9F5E75041E17A144E65A85441A4703D9AF5E750415C8FC28565A85441295C8F22F5E7504148E17A3466A85441333333E3F4E7504148E17A5466A8544166666606F3E7504152B81ED565A8544166666606F3E750417B14AE8764A85441EC51B8CEF2E750410000005064A854411F85EB31F1E75041E17A147E65A8544152B81E45EFE75041B81E850B67A85441CDCCCC6CEFE750419A99991968A85441295C8F12ECE750417B14AE0769A854413D0AD773EBE750418FC2F53868A85441D7A3705DEAE750418FC2F56868A854415C8FC255EAE750413D0AD7B366A85441000000F0E8E750413D0AD78366A85441295C8F62E7E7504148E17A7466A85441AE47E13AE7E750415C8FC2C565A8544148E17A94E6E75041D7A370DD65A85441E17A145EE5E75041D7A370AD65A85441713D0A07E5E750416666666665A8544185EB5118E4E75041713D0A0765A854411F85EB41E3E750410000003064A85441B81E856BE2E750411F85EB4163A85441B81E856BE2E75041B81E852B62A85441CDCCCC9CE1E750417B14AED75FA854415C8FC235E1E7504185EB51A85FA85441666666A6E0E75041A4703D7A5EA85441EC51B86EE0E75041D7A370BD5CA85441666666D6E0E750418FC2F5885AA8544148E17AF4E1E75041AE47E15A59A8544133333373E2E7504152B81E6558A85441B81E856BE2E75041713D0A2757A85441295C8FD2E2E750417B14AEB756A85441295C8F02E3E75041AE47E1EA54A854418FC2F5D8E3E750413D0AD78354A8544114AE47E1E3E750413D0AD73354A85441E17A148EE5E75041E17A14FE52A8544166666686E5E7504114AE475151A85441CDCCCC5CE6E75041A4703DCA50A8544133333313E7E75041295C8FB250A85441A4703DCAE7E750410AD7A37051A854419A9999F9E7E75041EC51B89E52A854418FC2F598E8E75041E17A141E53A854417B14AE47E9E75041D7A3704D53A85441EC51B8BEE9E750417B14AE3752A85441EC51B8BEE9E750411F85EB0151A854417B14AE17E9E7504152B81EF54EA8544100000030E9E750415C8FC2A54EA85441000000F0E8E75041EC51B81E4EA85441000000F0E8E750410AD7A3104DA854410AD7A3A0E8E750410AD7A3E04CA8544114AE4771E8E750411F85EB614CA85441AE47E16AE7E750417B14AE874DA8544133333343E7E7504152B81E054FA854413D0AD7D3E6E7504148E17A844FA8544148E17AA4E6E75041C3F5287C4FA8544148E17A84E6E75041CDCCCC3C4FA854415C8FC2D5E5E7504152B81E154FA85441713D0A17E5E750410AD7A3304DA85441CDCCCC3CE6E750418FC2F56848A8544152B81E35E6E75041B81E85FB46A8544152B81E05E6E7504148E17A5446A8544152B81EF5E5E75041E17A142E45A85441D7A370CDE5E75041F6285C7F44A85441AE47E13AE7E750411F85EB0143A854419A9999F9E7E75041295C8FF242A854411F85EBF1E7E750411F85EB2143A854418FC2F558E8E750418FC2F5D843A8544100000030E9E750410AD7A3E043A85441EC51B89EE9E750418FC2F58843A85441E17A14FEE9E75041CDCCCCAC41A854417B14AE17E9E75041713D0A2740A854418FC2F5A8E8E75041F6285C1F40A854411F85EBF1E7E750410AD7A3503FA85441A4703D9AE7E75041000000803FA85441D7A370EDE5E7504185EB51A83FA85441713D0AE7E4E75041EC51B87E40A8544148E17A74E6E7504148E17AD441A8544166666686E5E75041295C8FA242A854417B14AEA7E4E75041A4703D0A43A854418FC2F5D8E3E750411F85EB2143A8544148E17AE4E1E75041C3F528EC41A8544185EB51C8DFE75041A4703DFA42A8544148E17A24DDE750413333337342A85441A4703DBADEE750416666666640A85441AE47E15ADEE750411F85EBA13EA85441C3F5288CDDE7504114AE47E13EA854417B14AE67DBE75041295C8F423EA85441C3F5280CD9E750411F85EB813EA85441B81E853BD9E7504114AE47F13EA85441A4703D2ADAE7504185EB51583FA854415C8FC2A5DCE750410AD7A3503FA85441CDCCCCFCDCE7504148E17AD441A85441EC51B8DEDBE750419A99993943A8544100000020DBE750418FC2F5C843A854411F85EB41DAE7504185EB51F843A8544133333393D9E75041F6285C8F44A8544133333353D9E750416666662645A8544166666636DCE750417B14AE5744A85441C3F5286CDDE750411F85EBB147A854413D0AD793DDE750417B14AED748A85441C3F5285CDDE75041A4703D1A4CA85441B81E85CBDDE7504185EB51184DA854413D0AD7B3DDE75041713D0A174EA85441A4703D6ADEE75041C3F528BC4FA85441295C8F42DEE75041295C8FB250A854411F85EBC1DEE75041C3F5283C54A85441A4703DBADEE75041295C8F3255A854411F85EBF1DEE750417B14AE9756A854410AD7A360DFE75041295C8F8259A854410AD7A380DFE7504114AE47715AA854418FC2F548DFE75041666666065CA8544114AE4701DFE75041EC51B80E5CA854410AD7A370DFE750417B14AEF75FA854417B14AE27E0E75041295C8F0263A85441F6285C1FE0E750410AD7A31064A85441F6285C5FE0E750417B14AE9764A85441EC51B87EE0E75041EC51B8FE64A85441E17A140EE1E75041E17A147E65A85441E17A140EE1E75041D7A370DD65A85441F6285C2FE0E7504152B81E0566A8544166666636E0E7504148E17A9466A85441666666D6DEE75041713D0AE767A85441E17A143EE1E75041AE47E11A7EA85441713D0A27E0E750410AD7A3807FA85441A4703D5AD9E750410000006080A854410103000000010000004800000048E17A54FDE75041713D0A5789A85441CDCCCC1CFDE75041713D0A8789A8544152B81EE5FCE75041713D0A8789A85441D7A370ADFCE75041F6285C3F89A854415C8FC275FCE750410AD7A3C088A85441D7A370ADFCE750418FC2F56888A854415C8FC295FCE750411F85EBF187A85441E17A148EFCE75041295C8F6287A8544152B81E15FDE75041AE47E15A87A8544148E17A54FDE750413333332387A85441C3F528BCFDE75041B81E851B87A8544148E17A74FDE75041C3F528BC86A85441D7A370EDFCE750413D0AD7B386A85441E17A149EFCE750415C8FC29585A8544166666646FCE750416666667685A85441F6285CBFFBE75041D7A370CD85A854417B14AE97FBE75041713D0AD784A854419A999999FAE750410000005084A854411F85EB41FAE750417B14AE6784A85441295C8FF2F9E75041F6285CBF84A85441B81E854BF9E75041D7A370ED85A85441C3F528ECF8E75041CDCCCC3C86A85441CDCCCCBCF8E7504152B81EF585A854415C8FC2E5F7E75041D7A370FD85A85441666666C6F7E750415C8FC28585A85441713D0A77F7E75041E17A146E85A85441713D0A37F7E75041CDCCCC4C86A854417B14AEF7F6E7504148E17A6486A85441000000F0F6E750413D0AD7B386A854410AD7A340F6E750413333334387A854419A9999F9F5E75041AE47E14A87A85441A4703D8AF5E75041AE47E17A87A854419A9999E9F5E750419A99993988A85441AE47E10AF5E75041000000F088A85441AE47E14AF5E750410000001089A85441333333C3F4E75041EC51B8BE89A85441AE47E13AF5E75041E17A141E8AA854411F85EBD1F5E750415C8FC2658AA854417B14AEC7F6E75041CDCCCC9C8AA85441000000F0F6E7504148E17A248BA85441713D0A47F7E75041B81E858B8BA8544166666696F7E75041333333938BA854415C8FC215F8E75041CDCCCCDC8AA85441D7A3703DF8E750415C8FC2558AA854413D0AD713F9E750415C8FC2658AA8544133333393F9E750411F85EB618CA854413D0AD703F9E750410AD7A3008DA8544148E17AC4F8E750410AD7A3008DA85441CDCCCCBCF8E7504114AE47B18CA8544148E17AD4F8E75041A4703D2A8CA854415C8FC205F8E7504114AE47B18CA8544185EB5178F6E75041000000908DA854417B14AED7F6E75041CDCCCC8C8FA85441E17A140EF8E75041C3F528EC8FA854410AD7A310FBE750413D0AD7F38FA854410AD7A300FBE7504148E17A848FA854418FC2F5A8FAE75041D7A370FD8EA85441EC51B8FEFBE750418FC2F5188DA854417B14AE87FBE75041333333C38BA85441F6285CAFFBE75041B81E85AB8BA85441D7A370ADFCE7504148E17A048BA85441D7A370ADFCE7504152B81E758AA85441CDCCCC4CFDE7504148E17AD48AA85441C3F5287CFDE75041CDCCCCBC8AA8544148E17A74FDE75041B81E857B8BA85441C3F528ACFDE75041333333E38BA85441AE47E13AFEE75041333333D38BA85441333333F3FDE750413D0AD7738BA8544133333323FEE75041CDCCCC9C8AA85441C3F5287CFDE75041EC51B8DE89A85441C3F5288CFDE75041F6285C5F89A8544148E17A54FDE75041713D0A5789A854410103000000010000000A000000666666D697E75041295C8FA243A85441666666A69DE75041EC51B85E45A854411F85EB019FE75041EC51B86E41A854416666662699E75041EC51B82E3FA85441E17A141E98E75041666666163FA85441E17A148E97E75041666666763FA85441A4703DDA96E750416666662641A854416666668696E75041EC51B82E42A85441E17A14CE96E75041A4703DCA42A85441666666D697E75041295C8FA243A854410103000000010000000F0000001F85EBF190E75041A4703DDA41A85441A4703D8A95E75041295C8FE242A854411F85EBA195E75041EC51B89E41A85441A4703DCA94E75041A4703DEA40A85441E17A141E95E75041295C8FE23FA85441A4703D1A96E750416666660640A85441A4703D4A96E75041295C8F623EA85441A4703DEA95E75041A4703DBA3DA85441A4703D6A85E75041295C8F0238A854411F85EB9184E75041A4703D4A38A854411F85EBA183E750416666664639A854416666660683E75041EC51B8DE3AA854416666667682E75041295C8FB23CA85441666666D682E75041EC51B82E3FA854411F85EBF190E75041A4703DDA41A85441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A4703D1A96E750416666660640A85441A4703D4A96E75041295C8F623EA85441A4703DEA95E75041A4703DBA3DA85441A4703D6A85E75041295C8F0238A85441BD4A86DF84E750411E5E863038A85441791B9FDE84E7504124F9D23038A854419EA5CFC484E75041726D603938A854415071BBC384E750416BF3BB3938A854411F85EBA183E750416666664639A854416666660683E75041EC51B8DE3AA854416666667682E75041295C8FB23CA85441666666D682E75041EC51B82E3FA854411F85EBF190E75041A4703DDA41A85441A4703D8A95E75041295C8FE242A854411F85EBA195E75041EC51B89E41A85441A4703DCA94E75041A4703DEA40A85441E17A141E95E75041295C8FE23FA85441A4703D1A96E750416666660640A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342847 - 422968
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000004000000010300000001000000BF000000A4703D5AD9E750410000006080A85441C3F528BCD9E750419A99999981A85441C3F5288CDDE75041C3F528FC81A85441AE47E14ADEE7504148E17AA481A85441000000D0DFE75041CDCCCCAC81A854415C8FC225E1E7504152B81E6581A854415C8FC255E1E7504148E17AB481A8544133333373E2E750413D0AD73382A854419A999969E3E750418FC2F5C883A854418FC2F5F8E3E750410000006084A854415C8FC2B5E5E750417B14AE7784A8544148E17A94E6E750410AD7A32084A8544133333343E7E7504148E17AB481A854413D0AD703E7E75041E17A14CE80A85441713D0A87E9E75041000000D07FA85441F6285C3FE9E75041295C8F327EA854417B14AE57E9E7504148E17A247DA8544152B81EC5EAE7504148E17A147DA85441AE47E11AECE750419A9999B97EA854411F85EB81ECE750419A9999B97EA854419A9999D9ECE75041A4703D6A7EA85441A4703D5AECE7504148E17A547DA854419A999999ECE750415C8FC2557CA85441A4703D4AECE7504185EB51287BA854418FC2F518EDE750418FC2F5987AA85441713D0A27EEE750410AD7A3E07AA85441D7A3701DEFE75041E17A142E7CA8544133333343F0E750415C8FC2757CA85441F6285C8FF2E75041CDCCCC2C7DA8544166666626F3E75041B81E85CB7DA8544114AE4731F6E750411F85EB917EA854418FC2F538F6E75041333333237EA85441EC51B88EF7E750415C8FC2857CA85441C3F5281CF9E750410AD7A3F07AA8544114AE47A1FAE75041666666167CA85441EC51B8FEFBE750418FC2F5887AA85441E17A146EFCE75041C3F528CC78A8544166666626FCE7504148E17AC478A85441E17A146EFCE75041D7A3702D78A85441B81E852BF9E750413333335379A85441D7A3704DF8E750413333336379A85441EC51B86EF7E75041AE47E1AA79A854417B14AE07F7E750413333336379A85441000000E0F6E75041E17A149E77A85441666666C6F7E750415C8FC2E577A854413D0AD743F9E750416666668677A85441295C8FF2F9E75041000000D076A85441AE47E19AF9E7504185EB516876A85441AE47E18AF9E75041295C8F4275A854413D0AD703F9E75041CDCCCCEC73A8544148E17AA4F8E75041CDCCCCBC73A854415C8FC225F8E7504152B81ED573A85441713D0A37F7E75041295C8F4275A8544114AE4721F6E75041D7A3706D73A8544114AE4721F6E750410AD7A3B071A854418FC2F548F6E75041AE47E17A70A85441E17A140EF8E75041E17A148E6EA85441D7A3703DF8E750410AD7A3406DA85441E17A14FEF7E750419A9999A96CA854417B14AEF7F6E75041AE47E1BA6BA854410AD7A370F6E75041333333B36BA854419A9999C9F5E750415C8FC2456AA85441295C8F22F5E75041713D0A5769A854419A9999E9F5E75041A4703DBA67A85441333333F3F6E750418FC2F5B866A854419A9999C9F5E75041E17A144E65A85441A4703D9AF5E750415C8FC28565A85441295C8F22F5E7504148E17A3466A85441333333E3F4E7504148E17A5466A8544166666606F3E7504152B81ED565A8544166666606F3E750417B14AE8764A85441EC51B8CEF2E750410000005064A854411F85EB31F1E75041E17A147E65A8544152B81E45EFE75041B81E850B67A85441CDCCCC6CEFE750419A99991968A85441295C8F12ECE750417B14AE0769A854413D0AD773EBE750418FC2F53868A85441D7A3705DEAE750418FC2F56868A854415C8FC255EAE750413D0AD7B366A85441000000F0E8E750413D0AD78366A85441295C8F62E7E7504148E17A7466A85441AE47E13AE7E750415C8FC2C565A8544148E17A94E6E75041D7A370DD65A85441E17A145EE5E75041D7A370AD65A85441713D0A07E5E750416666666665A8544185EB5118E4E75041713D0A0765A854411F85EB41E3E750410000003064A85441B81E856BE2E750411F85EB4163A85441B81E856BE2E75041B81E852B62A85441CDCCCC9CE1E750417B14AED75FA854415C8FC235E1E7504185EB51A85FA85441666666A6E0E75041A4703D7A5EA85441EC51B86EE0E75041D7A370BD5CA85441666666D6E0E750418FC2F5885AA8544148E17AF4E1E75041AE47E15A59A8544133333373E2E7504152B81E6558A85441B81E856BE2E75041713D0A2757A85441295C8FD2E2E750417B14AEB756A85441295C8F02E3E75041AE47E1EA54A854418FC2F5D8E3E750413D0AD78354A8544114AE47E1E3E750413D0AD73354A85441E17A148EE5E75041E17A14FE52A8544166666686E5E7504114AE475151A85441CDCCCC5CE6E75041A4703DCA50A8544133333313E7E75041295C8FB250A85441A4703DCAE7E750410AD7A37051A854419A9999F9E7E75041EC51B89E52A854418FC2F598E8E75041E17A141E53A854417B14AE47E9E75041D7A3704D53A85441EC51B8BEE9E750417B14AE3752A85441EC51B8BEE9E750411F85EB0151A854417B14AE17E9E7504152B81EF54EA8544100000030E9E750415C8FC2A54EA85441000000F0E8E75041EC51B81E4EA85441000000F0E8E750410AD7A3104DA854410AD7A3A0E8E750410AD7A3E04CA8544114AE4771E8E750411F85EB614CA85441AE47E16AE7E750417B14AE874DA8544133333343E7E7504152B81E054FA854413D0AD7D3E6E7504148E17A844FA8544148E17AA4E6E75041C3F5287C4FA8544148E17A84E6E75041CDCCCC3C4FA854415C8FC2D5E5E7504152B81E154FA85441713D0A17E5E750410AD7A3304DA85441CDCCCC3CE6E750418FC2F56848A8544152B81E35E6E75041B81E85FB46A8544152B81E05E6E7504148E17A5446A8544152B81EF5E5E75041E17A142E45A85441D7A370CDE5E75041F6285C7F44A85441AE47E13AE7E750411F85EB0143A854419A9999F9E7E75041295C8FF242A854411F85EBF1E7E750411F85EB2143A854418FC2F558E8E750418FC2F5D843A8544100000030E9E750410AD7A3E043A85441EC51B89EE9E750418FC2F58843A85441E17A14FEE9E75041CDCCCCAC41A854417B14AE17E9E75041713D0A2740A854418FC2F5A8E8E75041F6285C1F40A854411F85EBF1E7E750410AD7A3503FA85441A4703D9AE7E75041000000803FA85441D7A370EDE5E7504185EB51A83FA85441713D0AE7E4E75041EC51B87E40A8544148E17A74E6E7504148E17AD441A8544166666686E5E75041295C8FA242A854417B14AEA7E4E75041A4703D0A43A854418FC2F5D8E3E750411F85EB2143A8544148E17AE4E1E75041C3F528EC41A8544185EB51C8DFE75041A4703DFA42A8544148E17A24DDE750413333337342A85441A4703DBADEE750416666666640A85441AE47E15ADEE750411F85EBA13EA85441C3F5288CDDE7504114AE47E13EA854417B14AE67DBE75041295C8F423EA85441C3F5280CD9E750411F85EB813EA85441B81E853BD9E7504114AE47F13EA85441A4703D2ADAE7504185EB51583FA854415C8FC2A5DCE750410AD7A3503FA85441CDCCCCFCDCE7504148E17AD441A85441EC51B8DEDBE750419A99993943A8544100000020DBE750418FC2F5C843A854411F85EB41DAE7504185EB51F843A8544133333393D9E75041F6285C8F44A8544133333353D9E750416666662645A8544166666636DCE750417B14AE5744A85441C3F5286CDDE750411F85EBB147A854413D0AD793DDE750417B14AED748A85441C3F5285CDDE75041A4703D1A4CA85441B81E85CBDDE7504185EB51184DA854413D0AD7B3DDE75041713D0A174EA85441A4703D6ADEE75041C3F528BC4FA85441295C8F42DEE75041295C8FB250A854411F85EBC1DEE75041C3F5283C54A85441A4703DBADEE75041295C8F3255A854411F85EBF1DEE750417B14AE9756A854410AD7A360DFE75041295C8F8259A854410AD7A380DFE7504114AE47715AA854418FC2F548DFE75041666666065CA8544114AE4701DFE75041EC51B80E5CA854410AD7A370DFE750417B14AEF75FA854417B14AE27E0E75041295C8F0263A85441F6285C1FE0E750410AD7A31064A85441F6285C5FE0E750417B14AE9764A85441EC51B87EE0E75041EC51B8FE64A85441E17A140EE1E75041E17A147E65A85441E17A140EE1E75041D7A370DD65A85441F6285C2FE0E7504152B81E0566A8544166666636E0E7504148E17A9466A85441666666D6DEE75041713D0AE767A85441E17A143EE1E75041AE47E11A7EA85441713D0A27E0E750410AD7A3807FA85441A4703D5AD9E750410000006080A854410103000000010000004800000048E17A54FDE75041713D0A5789A85441CDCCCC1CFDE75041713D0A8789A8544152B81EE5FCE75041713D0A8789A85441D7A370ADFCE75041F6285C3F89A854415C8FC275FCE750410AD7A3C088A85441D7A370ADFCE750418FC2F56888A854415C8FC295FCE750411F85EBF187A85441E17A148EFCE75041295C8F6287A8544152B81E15FDE75041AE47E15A87A8544148E17A54FDE750413333332387A85441C3F528BCFDE75041B81E851B87A8544148E17A74FDE75041C3F528BC86A85441D7A370EDFCE750413D0AD7B386A85441E17A149EFCE750415C8FC29585A8544166666646FCE750416666667685A85441F6285CBFFBE75041D7A370CD85A854417B14AE97FBE75041713D0AD784A854419A999999FAE750410000005084A854411F85EB41FAE750417B14AE6784A85441295C8FF2F9E75041F6285CBF84A85441B81E854BF9E75041D7A370ED85A85441C3F528ECF8E75041CDCCCC3C86A85441CDCCCCBCF8E7504152B81EF585A854415C8FC2E5F7E75041D7A370FD85A85441666666C6F7E750415C8FC28585A85441713D0A77F7E75041E17A146E85A85441713D0A37F7E75041CDCCCC4C86A854417B14AEF7F6E7504148E17A6486A85441000000F0F6E750413D0AD7B386A854410AD7A340F6E750413333334387A854419A9999F9F5E75041AE47E14A87A85441A4703D8AF5E75041AE47E17A87A854419A9999E9F5E750419A99993988A85441AE47E10AF5E75041000000F088A85441AE47E14AF5E750410000001089A85441333333C3F4E75041EC51B8BE89A85441AE47E13AF5E75041E17A141E8AA854411F85EBD1F5E750415C8FC2658AA854417B14AEC7F6E75041CDCCCC9C8AA85441000000F0F6E7504148E17A248BA85441713D0A47F7E75041B81E858B8BA8544166666696F7E75041333333938BA854415C8FC215F8E75041CDCCCCDC8AA85441D7A3703DF8E750415C8FC2558AA854413D0AD713F9E750415C8FC2658AA8544133333393F9E750411F85EB618CA854413D0AD703F9E750410AD7A3008DA8544148E17AC4F8E750410AD7A3008DA85441CDCCCCBCF8E7504114AE47B18CA8544148E17AD4F8E75041A4703D2A8CA854415C8FC205F8E7504114AE47B18CA8544185EB5178F6E75041000000908DA854417B14AED7F6E75041CDCCCC8C8FA85441E17A140EF8E75041C3F528EC8FA854410AD7A310FBE750413D0AD7F38FA854410AD7A300FBE7504148E17A848FA854418FC2F5A8FAE75041D7A370FD8EA85441EC51B8FEFBE750418FC2F5188DA854417B14AE87FBE75041333333C38BA85441F6285CAFFBE75041B81E85AB8BA85441D7A370ADFCE7504148E17A048BA85441D7A370ADFCE7504152B81E758AA85441CDCCCC4CFDE7504148E17AD48AA85441C3F5287CFDE75041CDCCCCBC8AA8544148E17A74FDE75041B81E857B8BA85441C3F528ACFDE75041333333E38BA85441AE47E13AFEE75041333333D38BA85441333333F3FDE750413D0AD7738BA8544133333323FEE75041CDCCCC9C8AA85441C3F5287CFDE75041EC51B8DE89A85441C3F5288CFDE75041F6285C5F89A8544148E17A54FDE75041713D0A5789A854410103000000010000000A000000666666D697E75041295C8FA243A85441666666A69DE75041EC51B85E45A854411F85EB019FE75041EC51B86E41A854416666662699E75041EC51B82E3FA85441E17A141E98E75041666666163FA85441E17A148E97E75041666666763FA85441A4703DDA96E750416666662641A854416666668696E75041EC51B82E42A85441E17A14CE96E75041A4703DCA42A85441666666D697E75041295C8FA243A854410103000000010000000F0000001F85EBF190E75041A4703DDA41A85441A4703D8A95E75041295C8FE242A854411F85EBA195E75041EC51B89E41A85441A4703DCA94E75041A4703DEA40A85441E17A141E95E75041295C8FE23FA85441A4703D1A96E750416666660640A85441A4703D4A96E75041295C8F623EA85441A4703DEA95E75041A4703DBA3DA85441A4703D6A85E75041295C8F0238A854411F85EB9184E75041A4703D4A38A854411F85EBA183E750416666664639A854416666660683E75041EC51B8DE3AA854416666667682E75041295C8FB23CA85441666666D682E75041EC51B82E3FA854411F85EBF190E75041A4703DDA41A85441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A4703D1A96E750416666660640A85441A4703D4A96E75041295C8F623EA85441A4703DEA95E75041A4703DBA3DA85441A4703D6A85E75041295C8F0238A85441BD4A86DF84E750411E5E863038A85441791B9FDE84E7504124F9D23038A854419EA5CFC484E75041726D603938A854415071BBC384E750416BF3BB3938A854411F85EBA183E750416666664639A854416666660683E75041EC51B8DE3AA854416666667682E75041295C8FB23CA85441666666D682E75041EC51B82E3FA854411F85EBF190E75041A4703DDA41A85441A4703D8A95E75041295C8FE242A854411F85EBA195E75041EC51B89E41A85441A4703DCA94E75041A4703DEA40A85441E17A141E95E75041295C8FE23FA85441A4703D1A96E750416666660640A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 407645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441AE47E1EA0DE95041333333E355A65441295C8FB20CE950417B14AE7755A65441EC51B88E0CE95041333333C354A65441713D0A870BE950413333339354A65441EC51B87E0AE95041333333F354A65441EC51B8DE0AE950417B14AE5754A65441EC51B87E0AE95041B81E85FB52A65441AE47E15A0AE95041B81E851B51A65441713D0A570BE95041B81E85EB50A65441AE47E13A0CE950413333331350A65441AE47E1BA0DE950417B14AED74FA65441AE47E11A0EE95041333333834FA65441EC51B8DE0DE95041333333F34EA65441295C8FF20BE95041B81E852B4DA65441AE47E14A0BE95041B81E859B4CA65441EC51B8AE0AE95041333333934BA65441EC51B8AE0AE95041F6285C4F4AA65441295C8F020BE950417B14AE074AA65441AE47E1AA0BE95041F6285C1F4AA65441AE47E1AA0BE950417B14AE2748A65441EC51B80E0BE95041F6285C1F47A65441295C8F020BE950413333332346A65441713D0A670AE950417B14AE8745A65441AE47E1CA09E95041B81E85AB45A65441EC51B8FE08E950413333330345A65441EC51B8CE08E95041B81E858B44A65441713D0AB708E950413333338343A65441295C8FB209E950417B14AE1743A65441AE47E1CA09E950417B14AE2742A65441AE47E1AA08E95041F6285CEF40A65441713D0AE708E950417B14AEA740A65441713D0AE708E950417B14AE573FA65441713D0AF707E95041F6285C3F3FA65441295C8F4207E95041F6285CDF3EA65441295C8F4207E95041B81E85FB3DA65441713D0A9707E95041B81E853B3DA65441AE47E14A08E95041333333533DA65441295C8F8209E950417B14AEB73CA65441AE47E16A09E950417B14AE073BA65441EC51B8FE08E95041B81E85DB39A65441AE47E11A0BE95041F6285C1F38A65441EC51B83E0BE950413D0AD78334A65441295C8FF20BE95041B81E85DB33A65441EC51B8BE0CE950413D0AD79333A65441AE47E12A0DE950417B14AEE733A65441295C8F620EE950413D0AD70333A65441EC51B81E0DE95041F6285C1F32A65441AE47E12A0DE95041333333F330A65441713D0A970DE95041F6285CAF2FA65441EC51B81E10E95041F6285CAF2CA65441713D0AD70FE950417B14AE472BA65441713D0A2711E950417B14AEC729A654413333335312E950417B14AE6729A654413333338312E95041333333E328A65441EC51B84E16E95041F6285C1F26A654413333330317E95041F6285C7F26A65441AE47E1DA17E950417B14AE0726A65441EC51B8EE18E95041B81E85FB25A65441713D0A6719E95041B81E855B26A65441AE47E1AA1AE95041F6285C1F26A65441EC51B81E1CE95041F6285C4F26A65441333333431CE950413333330327A65441EC51B8AE1CE950413333339327A65441AE47E1BA1CE950417B14AE1728A65441713D0A371CE95041B81E859B28A65441713D0AF71CE950417B14AE6729A65441713D0A871DE950417B14AE6729A65441EC51B82E1EE95041B81E85DB27A65441AE47E16A1EE95041B81E856B25A65441AE47E1DA1DE95041F6285C8F25A65441EC51B8DE1CE950417B14AE1725A65441713D0A371CE95041B81E85EB23A65441713D0AA71BE950417B14AE6723A65441333333B31BE95041333333F321A65441EC51B85E1BE950417B14AE5721A65441713D0A771EE95041333333B31FA65441713D0A071FE95041B81E851B21A65441333333B31EE95041B81E85DB21A65441EC51B8EE1EE95041F6285C5F22A65441333333E31EE950417B14AE3723A65441AE47E1FA1EE95041B81E851B24A65441AE47E19A1EE95041333333F324A65441AE47E14A20E950413333338325A65441AE47E1DA20E95041333333F324A65441AE47E1CA21E950417B14AE0723A65441EC51B8BE21E95041B81E850B22A65441713D0A7721E95041B81E85AB21A65441333333F320E950417B14AE1722A65441EC51B83E20E950417B14AEE721A65441713D0AC71FE950417B14AE3720A654413333339320E950417B14AE3720A654413333331322E95041333333F31EA65441333333D322E95041F6285C2F1FA65441333333C323E950417B14AE171FA65441EC51B87E25E95041B81E85FB1CA654413333330326E95041333333C31BA65441713D0AF725E95041F6285C0F1BA65441713D0A7727E95041B81E858B1AA65441AE47E1BA28E95041333333C318A65441AE47E1FA27E950417B14AE8718A65441AE47E19A27E950417B14AE2718A65441AE47E10A27E95041F6285C3F18A65441713D0A8726E95041F6285C0F18A65441EC51B8AE25E950417B14AE2718A65441AE47E12A25E95041F6285CDF17A654413333331325E95041F6285C7F17A654413333335324E95041B81E85FB16A65441713D0AE723E950413333332316A65441AE47E14A23E950413333339315A65441713D0A1721E95041B81E85DB15A65441333333A31FE950417B14AE6717A65441EC51B82E1EE95041F6285CDF17A65441713D0AC71CE95041B81E853B19A65441333333C31AE950417B14AE371AA65441EC51B81E19E95041F6285CCF1BA65441EC51B86E17E950417B14AE771CA65441AE47E12A16E95041F6285C7F1DA65441EC51B86E14E95041F6285C3F1EA65441333333D313E95041B81E853B1FA65441AE47E1DA11E95041F6285C1F20A65441EC51B84E10E95041B81E85DB21A65441EC51B82E0FE95041B81E853B22A65441333333630EE950417B14AE0723A65441333333D30DE95041B81E851B24A65441EC51B8BE0CE95041F6285C9F24A65441AE47E13A0CE95041F6285C9F24A65441713D0A170CE95041B81E858B26A65441EC51B86E0BE950417B14AE5727A65441713D0A970AE950417B14AE5727A65441713D0A4709E95041B81E859B28A65441713D0AB708E950417B14AEA728A654413333336308E950417B14AEE727A65441AE47E13A09E950417B14AE9726A65441713D0AE708E95041B81E853B25A65441713D0AF707E950417B14AE1725A654413333335306E950413333337326A65441AE47E17A05E950417B14AEC726A65441713D0A0704E950417B14AE1728A65441EC51B8CE02E950417B14AE7728A65441713D0AD700E950417B14AEC729A65441AE47E11A00E95041E17A141E2BA65441D7A3701DFDE850417B14AE8732A65441F6285C7FFCE850411F85EB5138A65441713D0A87FCE850413D0AD73339A65441EC51B82EFDE850413D0AD73339A65441EC51B85EFDE85041F6285C9F39A6544133333323FDE850413D0AD7533AA6544133333393FCE850413D0AD7533AA6544185EB51F8FDE85041AE47E1DA44A65441EC51B80EFFE850413D0AD7C348A65441713D0A87FFE85041B81E851B48A65441EC51B85E00E950413D0AD73348A65441EC51B81E01E950417B14AEB748A65441EC51B80E02E950413D0AD7C34BA65441333333D301E950417B14AE174CA65441AE47E12A01E95041F6285C2F4CA654413333332300E95041B81E85FB4CA65441713D0AA700E950413D0AD7D34DA65441AE47E1CA03E95041B81E858B50A65441EC51B85E06E950413D0AD72352A65441EC51B83E08E950417B14AE2754A65441EC51B8FE08E95041B81E850B55A65441333333B309E950417B14AE7755A65441333333E309E95041F6285C1F56A65441333333C30BE950413D0AD73357A65441EC51B88E0CE950413D0AD78358A65441333333030EE950413D0AD7635AA65441713D0A170FE95041F6285C9F5AA65441AE47E19A0FE95041F6285C8F5BA65441333333A310E950417B14AE075CA65441713D0A9710E95041B81E85EB5CA65441713D0A2714E95041F6285CDF5FA65441AE47E15A19E950417B14AE1764A65441AE47E13A1BE950417B14AE7761A65441713D0A9719E95041333333A35FA65441AE47E1FA18E950417B14AE975FA6544109000000295C8FA204E950417B14AEC74AA65441AE47E11A05E95041333333E349A65441AE47E17A05E95041B81E85AB48A65441295C8FC205E950413333339348A65441713D0A3707E95041F6285C4F4AA65441295C8FB206E950417B14AE274BA65441EC51B8FE05E950417B14AE274BA65441713D0AB705E950417B14AEC74AA65441295C8FA204E950417B14AEC74AA6544110000000AE47E1BA01E950413333332346A65441295C8FB200E950413333335346A65441295C8FC2FFE850413333338343A65441295C8F32FFE850413333339342A65441AE47E10A00E950417B14AE3741A65441295C8F1201E95041F6285CEF40A65441295C8F7201E95041B81E852B41A65441713D0A5702E950413333334341A65441EC51B8FE02E95041F6285CEF40A65441713D0A0704E95041B81E854B42A65441713D0AD703E95041F6285CCF42A65441295C8F4204E95041F6285C7F44A65441713D0AA703E950413333336345A65441AE47E10A03E95041F6285CFF45A65441295C8FC202E95041B81E856B46A65441AE47E1BA01E950413333332346A654410103000000010000000F0000007B14AE770FE95041E17A14EED5A65441295C8FD210E9504152B81E65D6A65441EC51B83E11E9504100000070D6A65441295C8FD210E95041333333E3D5A654418FC2F52811E9504148E17AD4D4A65441E17A146E12E95041C3F5281CD4A65441295C8F4212E95041F6285CAFD3A65441B81E857B10E9504133333343D3A654410000003010E95041713D0AF7D2A654418FC2F5D80FE95041D7A3702DD3A65441AE47E1EA0EE95041666666B6D2A65441EC51B89E0EE95041E17A144ED3A6544148E17AB40EE95041713D0A47D4A6544185EB51680EE9504148E17A24D6A654417B14AE770FE95041E17A14EED5A6544101030000000100000022000000295C8F3216E95041F6285C3FDAA65441EC51B87E16E95041295C8FB2D9A65441EC51B87E16E95041A4703DFAD8A654411F85EB6117E9504185EB5178D8A654417B14AE5717E9504166666646D9A654411F85EB4117E95041D7A370BDD9A654411F85EB6117E950413D0AD7F3D9A654413D0AD7C317E950411F85EB91D9A65441333333F318E950418FC2F5E8D9A6544185EB51E818E9504166666646D9A65441F6285CFF1BE9504152B81EB5D7A654415C8FC2351CE9504133333333D7A65441333333E31CE950411F85EBF1D6A65441AE47E17A1DE95041EC51B87ED7A65441C3F528DC1DE950411F85EBA1D5A65441295C8FC21CE95041B81E859BD6A65441666666561CE950411F85EBD1D6A65441EC51B8BE1BE95041EC51B80ED6A65441A4703DBA1AE95041EC51B82ED6A654413D0AD7631AE950411F85EBF1D6A6544152B81E7519E950415C8FC285D6A654410AD7A35018E95041AE47E17AD6A654417B14AE5717E950411F85EBF1D6A654416666661617E9504148E17A94D7A65441295C8F3216E950419A999989D7A65441EC51B82E15E95041CDCCCC4CD8A654416666662613E95041C3F5280CD8A65441B81E851B13E95041EC51B8AED8A65441D7A3709D13E9504114AE4771D9A65441A4703D2A14E95041B81E853BD9A6544152B81E1514E950413D0AD7F3D9A65441295C8FC214E95041295C8FB2D9A65441C3F528DC15E95041295C8FB2D9A65441295C8F3216E95041F6285C3FDAA6544101030000000A00000003020000295C8F024AE95041F6285C7FB3A65441AE47E12A49E95041F6285C4FB3A65441295C8FA249E95041B81E857BB1A65441295C8FB24BE9504133333323B2A65441AE47E1FA4EE95041B81E85FBAFA65441EC51B8AE4FE950417B14AE67ADA65441295C8FD24FE95041B81E855BAAA65441713D0A5750E950417B14AE37AAA65441295C8FC250E95041F6285C3FA8A65441AE47E17A50E950417B14AE37A7A65441295C8FD24FE95041B81E852BA7A65441AE47E1FA4EE95041F6285C0FA8A65441295C8F624DE95041F6285C3FA8A65441EC51B86E4DE95041F6285C4FA7A65441EC51B8FE4DE95041B81E85CBA6A65441295C8FC24DE95041B81E853BA6A65441EC51B84E4CE95041F6285CFFA5A65441713D0A474BE950417B14AEC7A4A65441AE47E10A4BE9504133333313A4A65441EC51B83E4AE95041B81E858BA4A65441AE47E18A49E95041F6285CAFA4A65441713D0AA748E950417B14AE07A4A65441295C8FF247E95041F6285CFFA2A65441713D0AD748E95041B81E85DBA2A65441295C8FE248E95041B81E85FBA0A65441AE47E10A48E950417B14AEB79FA65441713D0AE747E95041333333439EA65441EC51B8AE46E950417B14AE779DA65441295C8FA246E95041F6285C9F9CA65441713D0A3746E95041F6285CDF9BA65441713D0A3746E95041B81E856B9AA65441295C8FB245E95041B81E859B9AA65441EC51B80E44E950413333336399A65441295C8F9244E95041F6285CDF98A65441AE47E11A44E95041B81E855B98A65441EC51B8DE43E950417B14AEA797A65441295C8FB242E95041F6285C8F97A65441AE47E12A43E950417B14AEE796A65441713D0AE741E950413333339396A65441AE47E1EA40E95041B81E85FB94A65441295C8F7240E95041333333B394A65441EC51B81E40E95041B81E853B94A65441713D0A7742E95041F6285C1F92A65441AE47E16A42E950413333335391A65441EC51B82E45E95041F6285C6F90A65441EC51B85E45E95041B81E85BB8FA65441713D0A2747E95041F6285C1F8FA65441AE47E10A48E95041333333A38FA65441EC51B85E48E950417B14AE5790A65441295C8F1249E95041B81E857B90A65441295C8F024AE950413333330390A65441AE47E1CA48E95041B81E853B8EA65441713D0AD748E95041F6285C3F8DA65441EC51B8FE47E950417B14AEC78CA65441EC51B86E47E95041F6285CEF8BA65441713D0A2747E95041F6285C6F8AA65441295C8FA246E950417B14AE278AA65441EC51B87E46E950417B14AEC789A65441EC51B88E45E95041333333A389A65441295C8F2245E95041F6285C0F8AA65441AE47E17A44E95041B81E856B8BA65441AE47E1BA43E95041B81E859B8BA65441295C8F9241E95041F6285CDF8CA65441AE47E12A40E95041F6285CAF8CA65441AE47E1CA3FE95041B81E852B8CA65441AE47E1EA3DE95041F6285C7F8CA65441295C8F223CE95041333333438CA65441295C8FC23BE950417B14AEB78AA65441AE47E1EA3AE950417B14AE9789A65441713D0AF73AE95041B81E850B88A65441EC51B8AE3AE950417B14AE8787A65441EC51B8EE39E950413333333387A65441295C8FE239E95041F6285CAF86A65441EC51B88E39E95041B81E858B86A65441713D0A4739E95041B81E853B85A65441295C8F8239E95041B81E85DB84A65441EC51B8FE38E95041B81E854B84A65441713D0AB738E950417B14AE3783A65441295C8FA237E950413333330381A65441EC51B87E37E950417B14AEA77FA65441AE47E15A37E95041333333337EA65441295C8FB236E95041333333837CA65441713D0AF737E950417B14AE977AA65441295C8F6238E950417B14AE1779A65441AE47E19A39E950417B14AE5778A65441713D0A673AE950417B14AE5778A65441713D0AC73AE95041F6285C0F78A65441295C8FA23AE95041B81E855B77A65441295C8FD23AE95041F6285C2F76A65441AE47E1DA3BE950417B14AEB775A65441713D0AA73CE950417B14AE1773A65441713D0A973DE950417B14AEC771A65441713D0AE73EE950417B14AE6771A65441EC51B88E3FE95041F6285CAF71A65441AE47E16A3FE95041B81E85CB70A65441EC51B8AE3DE950417B14AED770A65441295C8F123DE95041F6285C5F70A65441EC51B85E3CE95041F6285C8F70A65441EC51B86E3BE950413333335370A65441295C8F423AE95041F6285C8F70A65441EC51B85E39E950413333335370A65441AE47E17A38E95041F6285C5F70A65441EC51B84E37E95041333333F36FA65441AE47E1EA34E95041333333F36FA65441EC51B86E35E95041333333536DA65441295C8FD234E95041333333536DA65441EC51B87E34E95041333333C36CA65441AE47E1FA33E95041333333236DA65441713D0A3734E95041F6285CBF6DA65441713D0AE732E950417B14AE676EA65441AE47E18A31E95041333333836DA65441295C8FE230E950417B14AEA76DA65441295C8F2230E95041F6285CFF6CA65441AE47E15A31E95041F6285C3F6CA65441713D0A6731E950417B14AE076BA65441713D0A1730E95041F6285C8F6AA65441EC51B8AE2EE95041333333E36AA65441295C8FE22DE95041F6285CAF6BA65441295C8F622CE950417B14AE376BA65441295C8F022CE950413333336369A65441713D0AB729E95041F6285C7F68A65441AE47E1BA28E95041333333A368A65441AE47E18A25E950417B14AEB766A65441AE47E18A25E95041B81E85BB65A65441713D0A7724E95041B81E853B64A65441713D0A8723E950417B14AEB763A65441295C8FA222E95041B81E855B65A65441713D0A1721E95041F6285C1F65A65441EC51B84E1FE95041B81E85AB63A65441EC51B8EE1EE95041333333C363A65441713D0AA71EE950413333335364A65441AE47E12A1FE95041B81E85FB64A65441713D0A671FE95041F6285C0F66A65441AE47E10A1EE950417B14AE8766A65441AE47E16A1EE95041F6285C5F67A65441713D0A671FE95041B81E855B68A65441AE47E12A22E950413333333369A65441EC51B85E24E95041333333B36AA65441EC51B8AE25E95041333333A36BA65441AE47E1AA26E95041B81E85EB6BA65441295C8F5227E95041F6285C4F6BA65441EC51B84E28E95041333333736BA65441295C8F9229E950417B14AE176DA65441AE47E16A2AE95041B81E859B6DA65441713D0A872FE950413333332370A65441295C8F1231E95041333333A371A65441713D0A9731E950417B14AEB772A65441AE47E13A33E95041F6285C1F74A65441713D0AF731E95041B81E85DB78A65441EC51B87E31E950417B14AE177CA65441AE47E12A31E950417B14AEA77CA65441EC51B84E31E950417B14AEF77DA65441EC51B85E30E95041333333037EA65441295C8FC22FE95041333333937EA65441EC51B87E2EE950417B14AE0780A65441713D0A572FE95041B81E85BB80A65441713D0A872FE95041B81E852B80A65441EC51B8EE30E95041333333237FA65441713D0A6731E95041333333937EA65441295C8F0232E950417B14AE777FA65441713D0AE732E95041333333E37FA65441295C8F8233E95041F6285C4F80A65441EC51B83E32E95041B81E85DB81A65441AE47E14A32E95041333333B382A65441AE47E11A32E95041F6285C4F83A65441295C8F9232E95041333333F384A65441713D0A7733E95041333333C384A65441EC51B8EE33E95041F6285C5F85A65441295C8F8233E95041333333E385A65441AE47E1CA33E95041F6285CAF86A65441AE47E1CA33E950413333339387A65441713D0A6734E950417B14AE1788A65441EC51B89E35E95041B81E85FB88A65441EC51B8EE36E95041B81E85FB88A65441713D0A7736E95041333333638AA65441AE47E1BA34E95041F6285CEF8BA65441AE47E1FA33E95041F6285CFF8DA65441713D0AE735E95041333333B391A65441295C8F8236E95041333333B391A65441EC51B8EE36E95041B81E85AB93A65441EC51B83E38E950417B14AE1794A65441AE47E11A3BE950417B14AEC798A65441EC51B80E3BE950417B14AE479AA65441713D0A673AE95041333333139BA65441AE47E1EA3AE950417B14AE679BA65441295C8F923BE95041F6285CCF9CA65441EC51B8FE3BE950417B14AEE79CA65441EC51B8EE3CE95041333333B39DA65441713D0A073DE950417B14AE379EA65441AE47E16A3CE950417B14AE579FA65441AE47E13A3CE950417B14AEF7A1A65441713D0AA73CE95041B81E854BA2A65441EC51B8EE3CE950417B14AE17A3A65441713D0A673DE950417B14AE77A3A65441EC51B87E3DE950417B14AE07A4A65441295C8F623EE95041B81E85EBA4A65441AE47E16A3FE95041F6285CDFA4A65441295C8F823FE95041F6285C6FA5A65441AE47E18A40E95041F6285C6FA5A65441EC51B89E41E950417B14AE47A6A65441EC51B82E42E9504133333353A6A65441EC51B8BE42E950417B14AE07A7A65441EC51B8BE42E95041F6285CCFA8A65441AE47E15A43E9504133333343AAA65441AE47E12A43E95041333333D3AAA65441295C8F4243E95041F6285C2FACA65441AE47E10A42E9504133333303AEA65441295C8F6241E950417B14AE27AEA65441AE47E14A41E95041F6285CDFADA65441295C8F823FE95041B81E85FBACA65441EC51B85E3FE95041B81E856BACA65441AE47E1DA3EE9504133333363ABA65441EC51B84E3DE95041333333B3ACA65441EC51B8BE3CE950417B14AE97ADA65441713D0AB73BE950417B14AEE7ABA65441EC51B82E39E950417B14AEB7ABA65441EC51B8FE38E95041F6285C6FABA65441295C8FD237E95041F6285CCFABA65441295C8FA237E95041B81E85BBAAA65441295C8FB236E950417B14AE37AAA65441713D0A7736E95041333333B3A9A65441AE47E17A35E950417B14AE37AAA65441295C8F0235E95041F6285CEFA9A65441713D0AC734E9504133333343AAA65441EC51B8AE34E9504133333333ABA65441713D0AD733E95041B81E854BABA65441713D0A4733E950417B14AEF7AAA65441713D0A5732E95041F6285C9FABA65441713D0A8732E950417B14AED7ACA65441EC51B82E33E95041F6285CAFADA65441713D0A1733E95041B81E850BAFA65441295C8F5233E9504133333313B0A65441AE47E17A35E95041F6285CAFB0A65441295C8F2236E9504133333383B2A65441295C8F1237E95041B81E852BB3A65441AE47E15A37E950417B14AE57B4A65441295C8FD237E95041F6285C6FB4A65441AE47E1DA38E95041B81E851BB4A65441EC51B82E39E95041333333D3B3A65441713D0A673AE95041B81E851BB4A65441713D0AF73AE95041F6285C0FB4A65441713D0A573BE95041B81E85ABB4A65441295C8FF23BE95041F6285C2FB5A65441AE47E19A3CE950417B14AE07B6A65441295C8F223FE950417B14AEB7B7A65441295C8F523FE95041B81E857BB7A65441713D0AD73FE950417B14AEE7B7A65441713D0AD73FE9504133333393BAA65441EC51B86E3EE95041B81E859BBBA65441EC51B86E3EE9504133333313BCA65441713D0AE73EE950417B14AE07BCA65441EC51B85E3FE95041B81E85EBBCA65441295C8F4240E950417B14AEB7BDA65441295C8FB23FE950417B14AE37BFA65441EC51B84E3DE950417B14AE27C0A65441295C8FD23AE950417B14AE67C2A65441EC51B88E39E95041B81E852BC2A65441AE47E1CA36E95041F6285C8FC1A65441EC51B88E36E95041F6285C4FC2A65441295C8FE236E95041333333D3C2A65441295C8FE236E95041F6285C6FC3A65441AE47E13A36E950417B14AEB7C3A65441713D0A2735E950417B14AED7C4A65441AE47E12A34E950417B14AE07C5A65441AE47E1FA33E950417B14AE97C5A65441AE47E10A33E950417B14AE57C6A65441EC51B89E32E950417B14AE67C5A65441AE47E11A32E950417B14AE37C5A65441EC51B8AE31E95041B81E85CBC4A65441295C8F5230E95041333333B3C4A65441AE47E1DA2FE950417B14AE97C5A65441AE47E1DA2FE950417B14AEF7C5A65441AE47E14A2FE95041333333C3C6A65441AE47E1BA2EE95041F6285CCFC6A65441EC51B81E2EE9504133333353C7A65441AE47E19A2DE9504133333353C7A65441295C8F122BE950417B14AEC7C8A65441AE47E19A2AE950417B14AE97C8A65441713D0A472AE95041F6285C0FC9A65441713D0A6728E9504133333373C8A65441AE47E17A26E95041333333A3C8A65441AE47E15A25E950417B14AE47C7A65441AE47E18A25E95041333333F3C6A65441AE47E1FA24E95041B81E856BC4A65441295C8FF223E9504133333393C3A65441713D0A2723E95041B81E85DBC3A65441713D0A9722E950417B14AEA7C4A65441AE47E1BA22E95041B81E858BC5A65441EC51B8FE20E95041B81E850BC7A65441AE47E1DA20E950417B14AEA7C7A65441713D0A471EE95041B81E85CBC7A65441713D0A271DE9504133333353C7A65441295C8F321DE95041B81E85ABC6A65441EC51B82E1BE95041B81E851BC6A65441295C8F321AE950417B14AE37C5A65441EC51B8FE17E95041F6285C5FC4A65441EC51B80E17E95041F6285C5FC4A65441713D0AA715E95041F6285CCFC3A65441AE47E19A15E95041F6285C0FC3A65441EC51B89E14E950417B14AEB7C3A65441295C8F3214E9504133333393C3A65441AE47E13A12E950417B14AE87C6A65441295C8F7213E95041F6285C9FC6A65441713D0A5714E95041F6285CFFC6A65441713D0AB714E95041B81E85ABC6A65441713D0A7715E95041B81E850BC7A65441713D0A7715E95041B81E85CBC7A65441EC51B88E15E95041F6285CAFC8A65441EC51B8CE14E95041F6285C9FC9A65441EC51B86E14E950417B14AE87C9A65441EC51B8DE13E95041B81E853BCAA65441295C8FD213E950417B14AE77CAA65441AE47E14A14E95041F6285C8FCAA65441295C8FC214E95041F6285C1FCBA65441AE47E13A15E95041333333B3CAA65441295C8FD216E95041B81E85FBCAA65441EC51B8DE16E9504133333383CAA65441AE47E14A17E950417B14AE47CAA65441AE47E11A17E95041B81E859BC7A65441713D0AA718E9504133333353C7A65441AE47E1EA19E95041333333C3C6A65441713D0A571AE950417B14AE37C8A65441713D0AF719E9504133333333C9A65441EC51B8AE19E95041333333C3C9A65441AE47E10A1BE95041B81E853BCAA65441EC51B81E1CE9504133333323CAA65441EC51B8DE1CE950417B14AE77CAA65441295C8F021DE95041F6285CEFCAA65441EC51B86E1DE95041B81E855BCBA65441EC51B86E1DE95041333333A3CBA65441EC51B81E1CE95041333333A3CBA65441EC51B8EE1BE9504133333313CBA65441713D0A271AE95041F6285C7FCBA65441295C8FA219E950417B14AEC7CBA65441AE47E14A1AE9504133333363CCA65441AE47E16A1BE9504133333363CCA65441EC51B87E1CE95041B81E859BCDA65441713D0A271DE95041333333E3CDA65441EC51B8FE1DE95041F6285CEFCDA65441713D0A471EE9504133333313CEA65441713D0AD71EE950417B14AED7CDA65441EC51B8BE21E95041F6285C8FCDA65441EC51B84E22E95041F6285C2FCDA65441713D0AC722E95041B81E856BCDA65441AE47E17A23E9504133333353CDA65441EC51B82E24E95041333333E3CDA65441295C8FC223E950417B14AEB7CFA65441AE47E1DA23E95041F6285C8FD0A65441295C8F7225E95041F6285CEFD0A65441AE47E1EA25E95041F6285C8FD0A65441EC51B8CE26E95041B81E85CBD0A65441713D0A4727E950417B14AE97D1A65441713D0AE726E950417B14AE77D3A65441EC51B85E27E95041B81E858BD4A65441EC51B8CE26E95041F6285C3FD5A65441AE47E1CA24E95041B81E851BD5A65441EC51B89E23E95041B81E85FBD3A65441AE47E14A23E95041F6285C1FD4A65441295C8F3223E95041F6285C0FD5A65441713D0A6722E950417B14AE87D5A65441295C8FD222E95041B81E850BD6A65441EC51B87E22E95041F6285C5FD6A65441AE47E19A21E95041F6285CCFD5A65441295C8F8221E9504133333323D6A65441295C8F6223E95041F6285CAFD7A65441EC51B89E23E950417B14AEC7D7A65441713D0AB723E9504133333313D7A65441AE47E1EA25E95041F6285C7FD7A65441AE47E14A26E95041B81E85FBD6A65441295C8F5227E95041B81E85CBD6A65441EC51B81E28E950417B14AE37D7A65441713D0A172AE95041B81E85CBD6A65441295C8FA22BE95041333333F3D5A65441713D0A772DE950417B14AE77D6A65441EC51B8EE2DE950417B14AEC7D7A65441EC51B80E2FE95041333333F3D8A65441EC51B8CE2FE950417B14AE17D9A65441EC51B82E30E95041F6285CCFD8A65441295C8F8230E9504133333323D9A65441AE47E12A31E95041F6285C2FD9A65441295C8FA231E950417B14AE07DAA65441AE47E17A32E950417B14AE37DAA65441713D0A4733E95041B81E85ABDBA65441EC51B89E32E950417B14AEA7DCA65441AE47E13A33E95041F6285C1FDDA65441713D0A7733E950417B14AEF7DDA65441AE47E1FA33E95041333333C3DEA65441AE47E1FA33E95041B81E859BDFA65441AE47E1EA34E950417B14AEF7E3A65441EC51B87E34E95041F6285CBFE5A65441AE47E1BA34E95041F6285C8FE8A65441713D0A0734E95041F6285C4FE9A65441EC51B8BE33E95041B81E857BEAA65441EC51B8FE32E95041F6285CCFEAA65441EC51B80E32E950417B14AE57EAA65441AE47E15A31E95041F6285CDFE9A65441EC51B87E31E95041F6285C7FE9A65441EC51B88E30E95041B81E859BE8A65441AE47E10A30E950417B14AE77E8A65441295C8FB22DE95041F6285C3FE7A65441AE47E13A2DE950417B14AE17E8A65441295C8FC22CE9504133333373ECA65441AE47E12A2EE950417B14AE37ECA65441EC51B81E2EE95041B81E856BEBA65441295C8F022FE950417B14AE17EBA65441295C8F2230E95041F6285CBFEBA65441295C8F7231E95041F6285C1FECA65441AE47E15A31E95041B81E856BEBA65441295C8F3232E95041B81E850BEBA65441295C8F8233E95041B81E858BECA65441295C8F6232E950417B14AEE7EDA65441295C8F6232E95041B81E859BEEA65441713D0AE732E95041B81E852BEFA65441295C8F9232E95041B81E85BBEFA65441713D0A9734E95041F6285C4FEFA65441295C8FD234E9504133333383EEA65441AE47E15A34E950417B14AE17EEA65441EC51B84E34E950417B14AE87EDA65441EC51B83E35E9504133333333EDA65441AE47E19A36E950417B14AE87EDA65441713D0AD736E95041B81E85CBEEA65441AE47E1BA37E950417B14AE57F0A65441AE47E17A38E9504133333373EFA65441AE47E1CA39E950417B14AED7EEA65441713D0A673AE95041333333A3EFA65441713D0A973AE9504133333393F0A65441AE47E13A3CE950417B14AEE7F0A65441713D0A773CE95041B81E856BF1A65441295C8F723DE95041F6285CAFECA65441EC51B88E3CE95041F6285C0FEDA65441295C8F023BE9504133333303EDA65441295C8F423AE950417B14AE37ECA65441EC51B81E3AE95041F6285C5FEBA65441713D0A673AE950417B14AEE7EAA65441EC51B8BE39E950417B14AE27EAA65441AE47E1DA38E95041B81E851BEAA65441AE47E11A38E95041F6285CAFE9A65441AE47E18A37E95041F6285C5FE8A65441713D0AA736E95041B81E85DBE7A65441713D0A2735E95041F6285C0FE7A65441EC51B89E35E950417B14AEF7E0A65441AE47E10A36E95041F6285C5FDFA65441AE47E19A36E95041F6285C9FDEA65441713D0A0737E95041F6285C1FDDA65441713D0A2738E950417B14AED7DCA65441295C8FF238E950417B14AE07DDA65441295C8F8239E950417B14AE07DDA65441295C8F123AE95041F6285C4FDDA65441295C8FD23AE95041F6285C1FDDA65441295C8F323BE9504133333383DCA65441713D0AE73BE9504133333323DCA65441EC51B8FE3BE95041B81E85BBDAA65441EC51B88E3CE9504133333313DAA65441EC51B8FE3BE95041B81E856BD9A65441713D0AE73BE9504133333393D8A65441AE47E1AA3BE950417B14AEC7D7A65441EC51B82E3CE950417B14AE67D7A65441713D0A473CE950417B14AEA7D6A65441AE47E18A3DE950417B14AE57D5A65441713D0A273EE95041B81E85ABD5A65441295C8F923EE950417B14AEC7D4A65441AE47E12A40E950417B14AE67D4A65441AE47E12A40E950417B14AEF7D4A65441EC51B84E40E95041F6285C9FD5A65441EC51B84E40E9504133333383D6A65441713D0A473FE950417B14AEA7D6A65441713D0A473FE95041B81E855BD7A65441EC51B8FE3EE9504133333303D8A65441295C8FB23FE95041B81E857BD8A65441295C8F7240E95041B81E854BD8A65441295C8F3241E95041F6285CAFD7A65441EC51B8FE41E95041B81E858BD7A65441295C8F1243E95041B81E857BD8A65441AE47E1FA42E95041F6285CFFD8A65441EC51B87E43E95041B81E85CBD9A65441713D0A9743E95041B81E858BDAA65441295C8F6244E95041F6285CDFDAA65441295C8F3244E95041333333C3DBA65441AE47E14A47E950417B14AE77DCA65441295C8F5248E95041F6285C5FDCA65441AE47E1CA48E9504133333313DDA65441EC51B83E4AE9504133333373DDA65441713D0A574AE95041B81E852BDDA65441713D0A374CE95041B81E858BDDA65441AE47E1CA4EE950417B14AEC7DDA65441AE47E18A4FE950417B14AE57DEA65441AE47E1BA52E950417B14AE47DFA65441AE47E1EA52E95041B81E850BDFA65441713D0AA754E95041F6285C8FDFA65441AE47E17A56E950417B14AEA7DFA65441EC51B81E58E95041F6285C7FE0A65441AE47E1CA5AE950417B14AE87E1A65441EC51B8CE5BE95041D7A370BDE1A65441713D0A175DE95041F6285CCFE1A65441EC51B87E5EE95041F6285C2FE2A65441AE47E11A62E95041F6285C2FD9A65441295C8F3259E95041B81E853BD6A65441AE47E1EA4FE95041F6285CEFD3A65441EC51B8AE4FE95041333333D3D4A65441295C8FC24DE95041F6285CAFD4A65441AE47E11A4DE95041B81E85FBD3A65441295C8F324DE95041F6285C8FD3A65441713D0AD74BE9504133333323D3A65441295C8F824BE950417B14AED7D3A65441EC51B8CE4AE950417B14AE07D4A65441713D0AF749E9504133333383D3A65441AE47E11A4AE95041333333C3D2A65441EC51B88E45E95041F6285C4FD1A65441AE47E1EA43E95041B81E852BD1A65441AE47E18A40E950417B14AEE7CFA65441713D0AE73EE950417B14AEB7CFA65441333333933EE950413D0AD7D3CEA65441295C8F323EE95041F6285CEFCDA65441713D0AB747E95041B81E850BB5A65441295C8F024AE95041F6285C7FB3A6544109000000EC51B80E3EE950417B14AE77D3A65441713D0AA73CE950417B14AEA7D3A65441295C8F223CE95041B81E856BD3A65441713D0A173CE95041B81E85BBD1A65441713D0AA73CE95041F6285C1FD1A65441295C8F423DE95041B81E852BD1A65441713D0AC73DE95041B81E85BBD1A65441AE47E14A3EE95041F6285CCFD2A65441EC51B80E3EE950417B14AE77D3A6544107000000713D0AB74AE950417B14AE77D6A65441295C8FE24BE95041F6285CCFD5A65441713D0A974CE95041F6285C5FD6A65441AE47E15A4CE95041B81E852BD7A65441AE47E1FA4BE95041F6285CBFD6A65441295C8F224BE95041B81E85CBD6A65441713D0AB74AE950417B14AE77D6A6544111000000EC51B82E48E95041333333A3D7A65441EC51B8BE48E95041B81E85FBD6A65441713D0AD748E9504133333353D6A65441713D0AC749E95041F6285C4FD7A65441AE47E1BA49E95041B81E85EBD7A65441713D0A874AE95041B81E851BD8A65441EC51B8FE4AE95041F6285CDFD7A65441295C8F524BE950417B14AE57D8A65441AE47E1CA4BE950417B14AE57D8A65441713D0A674CE95041333333C3D8A65441AE47E18A4CE95041F6285CEFD9A65441295C8FB24BE95041B81E85BBDAA65441713D0A574AE950417B14AE97DAA65441295C8FA249E95041333333F3D8A65441295C8FA249E95041B81E854BD8A65441EC51B8EE48E950417B14AE57D8A65441EC51B82E48E95041333333A3D7A6544108000000295C8FB254E95041333333E3D9A65441EC51B8EE54E950417B14AE97DAA65441EC51B82E54E95041B81E854BDBA65441EC51B89E53E95041F6285C3FDBA65441AE47E18A52E95041B81E858BDAA65441713D0A9752E950417B14AE37DAA65441EC51B83E53E95041333333B3D9A65441295C8FB254E95041333333E3D9A6544113000000295C8FB224E9504133333373CBA65441EC51B86E23E95041B81E855BCBA65441713D0A8723E950417B14AE97CBA65441EC51B87E22E950417B14AE97CBA65441713D0A7721E95041F6285C0FCCA65441AE47E1EA1FE95041F6285C4FCBA65441EC51B80E20E95041F6285C2FCAA65441EC51B8AE1FE95041F6285CFFC9A65441EC51B8AE1FE9504133333333C9A65441EC51B86E20E95041333333A3C8A65441295C8FB221E950417B14AEC7C8A65441295C8F4222E95041B81E854BC9A65441295C8FD222E950417B14AEE7C9A65441713D0AC722E95041B81E859BCAA65441713D0AB723E95041F6285CBFCAA65441713D0A4724E9504133333393C9A65441295C8F4225E95041F6285C5FCAA65441EC51B84E25E95041F6285CEFCAA65441295C8FB224E9504133333373CBA6544109000000AE47E1AA3EE95041B81E852BC2A65441713D0AA73FE95041B81E85BBC2A65441AE47E1CA3FE950417B14AE57C3A65441713D0A473FE9504133333383C4A65441AE47E1AA3EE9504133333323C4A65441295C8FD23DE950417B14AE17C4A65441AE47E1EA3DE950417B14AE27C3A65441295C8F323EE95041F6285C4FC2A65441AE47E1AA3EE95041B81E852BC2A654410D000000EC51B8AE31E950417B14AED77CA65441713D0AE732E950417B14AEF77AA65441713D0AE732E950417B14AE4779A65441AE47E17A32E950417B14AEE778A65441AE47E13A33E95041F6285C9F78A65441713D0AC734E95041B81E856B79A65441295C8FD234E95041333333D37AA65441295C8F4234E95041F6285C6F7BA65441295C8F4234E95041333333837CA65441713D0A6734E95041B81E855B7DA65441295C8FE233E95041333333D37DA65441EC51B82E33E950417B14AEF77DA65441EC51B8AE31E950417B14AED77CA6544107000000AE47E1EA49E95041B81E85BBADA65441295C8F024AE9504133333353ACA65441295C8F224BE95041F6285CFFABA65441AE47E1FA4BE950417B14AEE7ABA65441295C8F524BE950417B14AE67ADA65441295C8FC24AE950417B14AEC7ADA65441AE47E1EA49E95041B81E85BBADA654410A000000AE47E17A4DE950417B14AEE7AEA65441AE47E1AA4DE950417B14AED7AFA65441713D0AF74CE95041333333A3B0A65441295C8F824BE95041333333A3B0A65441EC51B8CE4AE95041B81E852BB0A65441713D0A874AE95041B81E857BAEA65441EC51B88E4BE95041F6285C6FAEA65441AE47E1BA4CE95041F6285CDFADA65441AE47E1AA4DE950417B14AEF7ADA65441AE47E17A4DE950417B14AEE7AEA6544101030000000B00000038030000666666F6BAE85041666666A6DBA75441F6285CAFB9E850417B14AEE7D9A75441A4703DEAB9E85041CDCCCCECD7A75441713D0AA7BAE850411F85EBD1D6A7544152B81E05BBE85041A4703DFAD4A7544148E17A14BCE8504152B81E75D3A75441A4703D6ABDE8504114AE4701D0A7544166666606BFE85041D7A3702DCFA7544100000080C0E85041AE47E1DACEA754413D0AD733C2E85041B81E85EBCCA754411F85EB91C6E8504185EB51F8BEA75441D7A3705DCBE85041E17A140EB0A75441000000D0CAE85041000000B0AFA75441F6285C3FC9E8504152B81E75AFA75441F6285C7FC7E8504148E17AC4AEA754413D0AD7B3C5E85041E17A146EADA75441CDCCCC8CC4E850415C8FC2A5ACA754413D0AD733C2E85041D7A370DDABA75441C3F5283CC1E85041EC51B8CEAAA75441E17A14FEBFE85041C3F5287CAAA75441333333E3BEE85041E17A143EA9A7544114AE4741BFE85041CDCCCC8CA8A75441F6285CBFC1E85041295C8F32A9A75441CDCCCC1CC2E850413D0AD703A8A75441295C8F42CAE85041E17A146E9BA754417B14AE07CAE850418FC2F5C89AA7544114AE4771CAE85041000000309AA7544166666616CBE85041AE47E18A99A754419A999939CBE8504148E17A6498A75441333333D3CBE8504185EB517897A754410AD7A3A0CAE850419A99996996A7544185EB51B8CAE8504148E17AC495A754418FC2F568CBE85041C3F528FC94A75441713D0AA7CCE8504114AE472192A75441A4703DAACDE85041B81E85AB91A7544114AE47D1CEE8504152B81E8590A75441A4703D6ACFE850415C8FC2758FA75441AE47E16AD1E85041E17A141E8EA75441AE47E10AD2E8504185EB51488CA75441AE47E16AD4E8504185EB512888A75441F6285CBFD5E850418FC2F54887A75441713D0AA7D6E850413D0AD72387A75441E17A145ED6E85041EC51B89E86A75441B81E85EBD6E85041713D0AF784A75441EC51B80ED7E85041333333F383A7544152B81E35D8E850411F85EB5184A754410AD7A370D8E850415C8FC22585A75441EC51B8AED9E85041E17A140E85A75441EC51B88EDAE850415C8FC20586A754411F85EB71DAE850418FC2F5E886A754411F85EBC1DBE85041A4703D2A86A754415C8FC285DDE85041295C8F6284A75441AE47E10ADDE85041D7A3705D84A7544152B81E95DCE85041C3F528FC82A7544133333313DCE85041CDCCCCEC81A75441A4703D7ADBE85041E17A14FE7FA7544148E17A04DBE850410AD7A3707FA75441666666C6D9E85041D7A3706D7EA754413D0AD793D8E85041333333237DA75441CDCCCC2CD9E85041D7A370AD7CA754411F85EBF1D8E85041D7A370CD7BA75441666666E6D8E85041B81E854B7BA754417B14AE87D8E85041F6285C8F7AA75441D7A370BDDAE850417B14AE377CA75441AE47E14ADBE85041333333437CA754410AD7A3C0DBE85041A4703D8A7CA75441CDCCCCCCDBE850415C8FC2757DA754411F85EB91DBE85041B81E85EB7DA75441F6285C1FDCE850410AD7A3907EA754419A999989DCE85041A4703DDA7FA7544185EB5178DEE850415C8FC21580A754410AD7A340DFE85041F6285C7F80A7544114AE47F1DFE850410AD7A3707FA75441295C8FC2DFE85041F6285CBF7EA75441C3F5282CE0E85041D7A3706D7EA75441E17A14AEE0E850419A9999697DA75441713D0A67E0E850410AD7A3F07BA75441AE47E1AADFE850418FC2F5F87AA754417B14AE87DFE850411F85EB017AA75441666666B6DFE850419A99993979A754411F85EB81E1E85041000000C077A754415C8FC2A5E1E8504148E17AD476A7544185EB51F8E1E850413333335376A754415C8FC2A5E1E850415C8FC2C575A75441CDCCCC9CE2E850416666669675A75441EC51B81EE3E850418FC2F5E875A75441295C8FF2E3E85041E17A148E76A7544148E17A74E4E850419A99999976A754411F85EB01E5E85041B81E853B76A75441A4703DCAE5E85041A4703D8A75A7544148E17A34E6E85041713D0A8774A75441333333A3EBE85041AE47E14A70A75441B81E856BECE850410000001070A75441713D0A57EDE85041295C8F6270A7544148E17AE4EDE85041000000D071A754411F85EB71EEE8504185EB519872A75441000000B0EFE85041000000D071A75441C3F528BCEFE850410AD7A3C070A75441A4703D1AF0E850417B14AE2770A75441B81E855BF2E85041CDCCCC0C6FA75441B81E853BF3E850417B14AE676EA754415C8FC2A5F3E85041CDCCCC4C6DA754413D0AD723F3E850411F85EB316CA7544100000030F3E8504185EB51E86AA754415C8FC2A5F3E850415C8FC2B569A75441D7A3709DF4E85041EC51B88E68A7544185EB51D8F4E850418FC2F51868A75441333333F3F5E8504185EB516867A754417B14AE77F7E850411F85EB2167A7544114AE47F1F8E85041EC51B85E64A75441EC51B89EF8E85041EC51B87E63A75441C3F5284CF8E850413D0AD72364A754418FC2F528F8E8504148E17AD464A75441EC51B8BEF7E85041E17A143E65A754410AD7A380F6E85041C3F528EC64A754415C8FC245F6E8504148E17AF463A7544185EB5198F6E85041EC51B87E63A75441666666F6F6E850417B14AE5762A75441333333D3F6E85041713D0AA761A754410AD7A380F6E85041E17A14EE61A75441EC51B8FEF5E85041333333B361A754411F85EB41F5E85041B81E859B61A75441B81E85FBF4E85041CDCCCC1C62A7544166666656F4E85041CDCCCC3C61A754418FC2F5A8F4E850419A99993960A754413D0AD7C3F5E850416666661660A7544114AE4751F6E850415C8FC2A55DA754413D0AD783F7E850418FC2F5A85EA7544114AE4711F8E8504114AE47915EA75441EC51B89EF8E85041D7A3707D5FA75441C3F5280CFAE850418FC2F5E85CA75441C3F5280CFAE85041000000505CA75441C3F528ECFAE850415C8FC2C55CA75441000000E0FAE850415C8FC2E55BA7544114AE47D1F9E85041713D0AD75AA75441A4703D8AF9E8504152B81E555AA75441A4703D8AF9E8504148E17AA459A75441713D0A87F8E85041713D0AF759A75441C3F5284CF8E8504185EB519859A754417B14AE77F7E850411F85EB115BA7544114AE4731F7E85041A4703D1A5AA7544185EB5198F6E85041333333B35AA7544166666656F4E85041B81E852B58A7544133333333F4E850411F85EB9157A75441E17A146EF4E85041EC51B86E57A7544133333353F3E85041C3F5283C56A7544100000030F3E85041333333A355A7544133333373F2E850410AD7A35055A754417B14AE47F3E850418FC2F55854A754415C8FC2A5F3E85041713D0AB754A754415C8FC285F4E85041EC51B8EE53A75441713D0AE7F5E850417B14AED753A75441E17A142EF6E85041295C8F1254A75441A4703DEAF6E85041AE47E1FA53A75441AE47E10AF6E8504152B81E8553A7544148E17A14F9E850410AD7A3B052A754417B14AE17FAE85041E17A143E53A75441713D0A87F8E850411F85EBA151A75441AE47E13AFAE85041D7A370AD51A75441AE47E13AFAE850415C8FC2B550A75441D7A370ADF9E85041A4703DAA50A75441CDCCCCFCF8E850419A9999F94FA754413D0AD783F7E85041000000604FA75441EC51B8DEF6E85041713D0AC74EA754413D0AD7A3F6E85041295C8FD24EA7544185EB5198F6E8504185EB51484FA75441D7A370BDF3E85041D7A3700D4FA754415C8FC2A5F3E85041CDCCCC5C4EA75441C3F528ECF3E850417B14AEB74DA7544152B81ED5F3E850418FC2F5C84BA7544114AE47D1F2E850419A9999994BA75441E17A14CEF1E85041333333734AA75441713D0AF7EFE85041AE47E1AA49A7544114AE4781EFE850410AD7A34049A754415C8FC245EFE85041E17A140E48A75441713D0AF7EFE85041333333D347A75441A4703DFAF0E85041D7A3707D46A754419A999969EFE85041D7A3709D45A754417B14AEC7EFE85041713D0A7744A7544148E17AA4EFE85041666666C643A75441713D0AF7EFE8504152B81E1543A75441E17A14EEF0E85041CDCCCC4C42A75441E17A14CEF1E850417B14AE8742A75441295C8FA2F2E8504114AE472143A754410AD7A300F3E85041F6285C5F44A75441F6285C7FF2E85041A4703D7A45A75441D7A370BDF3E85041E17A140E48A75441000000F0F4E85041B81E859B48A754413D0AD7A3F6E85041B81E859B48A754410AD7A360F7E8504152B81E3549A75441295C8FB2F7E85041D7A370FD49A75441C3F5286CF7E85041666666964AA754417B14AE77F7E85041713D0A274CA75441713D0AA7F7E85041666666364DA7544152B81EC5F9E850419A9999594DA75441EC51B85EFAE85041F6285CEF4CA7544133333303FBE850411F85EB414DA75441E17A141EFCE850413D0AD7E34CA7544185EB5188FCE85041B81E85FB4CA754410AD7A390FBE850419A9999394EA75441A4703D6AFAE8504152B81E454EA75441D7A3708DFAE850413D0AD7A34EA7544166666606FCE85041F6285CAF4EA75441AE47E1FAFBE850411F85EB014FA7544185EB51A8FBE85041000000604FA754413D0AD793FCE85041AE47E19A4FA7544100000080FDE850419A9999194FA75441D7A370EDFEE850419A9999194FA7544100000040FFE85041F6285C8F4FA754416666666600E95041CDCCCCFC50A75441F6285C1F00E950418FC2F5B851A7544185EB510800E950413333330353A75441C3F528DC00E95041295C8F1254A754411F85EB5101E95041C3F5283C56A75441E17A143E02E9504114AE47E156A754416666660603E95041B81E856B56A754415C8FC2E503E95041F6285C5F56A754415C8FC2E503E95041EC51B8AE55A75441A4703DFA02E95041CDCCCC0C56A75441EC51B8EE02E950418FC2F57853A754416666662602E95041B81E85EB52A75441713D0AD702E95041CDCCCCFC50A7544148E17A4404E9504114AE471150A754417B14AE4705E9504185EB512850A75441AE47E12A07E95041B81E852B51A754415C8FC26507E95041B81E850B52A75441EC51B8FE07E9504185EB51E851A754419A99991909E950411F85EB8152A75441713D0AA709E9504185EB51A853A75441AE47E1FA0DE95041CDCCCC3C4FA75441B81E851B0DE95041C3F5286C4FA75441C3F528EC0CE95041D7A3700D4FA75441A4703D4A0DE950411F85EB414DA75441666666760CE950410AD7A3C04CA75441E17A14CE0AE950418FC2F5884DA754411F85EBE109E95041EC51B81E4DA7544185EB517809E95041E17A146E4CA754410AD7A38008E950413D0AD7034CA75441333333F307E95041000000304BA75441000000D007E95041666666964AA754416666661608E95041AE47E1AA49A7544114AE477107E950413333339349A754413333331307E9504114AE471149A7544148E17A2405E9504152B81E3549A75441A4703DBA04E950417B14AEA748A75441CDCCCC2C04E950410000009048A75441C3F5287C03E950417B14AEC747A75441F6285CBF02E95041B81E85BB47A7544152B81E3503E950411F85EB5147A75441D7A3701D03E950417B14AEE746A75441C3F5289C02E95041000000D046A75441A4703D3A01E950411F85EB9145A7544114AE47A100E9504152B81EB545A75441F6285C1F00E9504148E17A0445A75441AE47E15A00E950417B14AE4744A754410AD7A3F0FFE850417B14AE8742A754419A9999A9FFE85041713D0AF740A7544148E17AE4FFE85041295C8F5240A7544185EB5128FFE850417B14AE373FA75441F6285C1F00E95041F6285C8F3DA754410AD7A3F0FFE8504152B81E253DA754413D0AD71300E95041A4703D0A3CA754411F85EB7100E9504114AE47713BA75441F6285CDF01E9504152B81E653BA754418FC2F55803E950411F85EB213CA75441AE47E1AA03E9504152B81E253DA75441CDCCCC2C04E95041F6285CAF3CA75441B81E851B06E95041E17A14DE3CA754413D0AD7E306E95041D7A370CD3EA75441CDCCCCAC07E950410AD7A3F03EA75441AE47E10A08E9504114AE47A13FA754419A99991909E950417B14AE373FA75441295C8F0209E950410AD7A3D03FA75441F6285C6F0AE950419A99996940A754413D0AD7630AE950413333330341A754410AD7A3200BE950411F85EB3141A7544148E17A140BE950418FC2F57841A754411F85EBA10BE9504114AE474142A754411F85EB810CE9504114AE474142A754413D0AD7030DE95041666666E642A75441333333C30EE9504148E17A4443A7544185EB51680FE95041666666A644A75441F6285C8F10E9504114AE47C145A754417B14AE7710E95041295C8F2247A7544114AE47A112E95041666666F647A75441295C8F5213E950417B14AEC747A754413D0AD79315E95041295C8F4246A75441F6285C7F16E95041C3F5285C43A75441CDCCCC2C16E95041E17A14FE42A754411F85EBD116E950417B14AE8742A75441C3F5283C17E95041AE47E11A41A75441CDCCCC0C17E9504114AE478140A75441F6285C5F17E9504152B81EC53FA754417B14AE6716E950413D0AD7133FA75441E17A14DE16E950415C8FC2F53CA75441295C8FA216E95041000000803CA7544148E17A6415E95041713D0A073BA75441B81E85AB15E95041AE47E11A3AA754416666660615E95041CDCCCCDC38A754418FC2F55815E950413D0AD74338A754415C8FC29512E95041D7A3703D36A75441CDCCCCFC11E950419A99991936A75441AE47E17A11E9504148E17A5436A75441E17A14BE10E9504152B81E7535A7544148E17A740FE9504152B81E9534A7544148E17A940EE950411F85EBB132A7544152B81EA50CE95041A4703D9A32A754413D0AD7230CE95041B81E853B32A754413D0AD7430BE9504185EB511832A75441333333930AE95041A4703DDA30A75441CDCCCCFC0AE950419A99992930A75441713D0AA709E95041C3F5289C2FA75441B81E85DB07E950410000005031A754410AD7A3C006E9504148E17A4431A75441D7A3709D06E950419A9999E931A754417B14AE4705E950417B14AE4732A754413333335305E95041E17A148E32A754419A99990904E9504152B81ED532A754410000007003E95041D7A370DD31A75441E17A143E02E950415C8FC2C531A754416666664601E95041AE47E18A31A75441F6285CFF00E9504148E17A6430A754411F85EB3102E95041EC51B80E2FA754415C8FC2A505E95041CDCCCC4C30A75441295C8F6206E95041AE47E1AA30A754417B14AE0707E950410000007030A7544152B81E9507E95041C3F5289C2FA75441AE47E1EA08E95041E17A143E2FA75441AE47E1CA09E95041F6285CDF2EA75441EC51B89E0AE95041B81E850B2EA75441A4703D8A0BE950410AD7A3D02DA75441B81E853B0CE950410AD7A3102CA7544114AE47B10CE950415C8FC2B52CA7544152B81E650EE950419A9999A92CA754415C8FC2350EE95041EC51B88E2BA754411F85EB0110E950417B14AEB729A75441EC51B8FE0EE950410AD7A37029A75441000000800FE95041000000C028A754413D0AD77316E95041333333E328A754417B14AE0719E95041B81E858B2AA75441E17A142E1AE9504185EB51682AA75441D7A3705D1AE950415C8FC2152AA75441F6285CDF1AE9504114AE47212AA754417B14AEA71BE950419A9999E92AA7544185EB51581CE95041D7A3700D2BA75441B81E855B1DE950410AD7A3102CA75441295C8FA21DE9504185EB51682AA75441333333531EE95041A4703D0A2AA75441295C8FF220E95041666666C62AA75441E17A142E21E95041295C8FB22BA75441C3F5288C21E9504148E17A042CA75441F6285C6F23E95041B81E854B2CA75441A4703DAA23E9504185EB51082DA754411F85EBA124E95041C3F528FC2CA754411F85EBA124E9504185EB51282CA75441E17A143E26E95041E17A14FE29A75441AE47E1FA26E95041F6285CCF29A75441666666E627E95041E17A141E29A75441000000A027E95041F6285C0F28A75441000000A027E950411F85EBC125A754411F85EB8125E95041AE47E15A26A7544148E17AF424E95041D7A370AD26A7544148E17A1424E950419A9999D925A75441713D0AA722E95041A4703DAA25A75441F6285C8F22E9504148E17A7423A7544114AE473122E95041333333F322A754417B14AE9721E95041333333F322A7544148E17A7421E950419A99991924A7544114AE477120E95041666666B625A75441713D0A271FE950410000002026A75441713D0A271FE9504152B81EC526A75441AE47E16A1EE95041CDCCCCDC26A75441AE47E18A1DE95041C3F5282C26A754415C8FC2E51CE95041E17A14EE24A7544114AE47F11CE95041F6285CAF23A754410AD7A3001EE950418FC2F5A821A75441713D0A671DE95041EC51B83E21A754417B14AE871CE95041B81E85DB22A75441CDCCCC6C1BE950410AD7A38023A75441333333D31AE950415C8FC24523A75441F6285C5F17E95041C3F5288C23A754419A9999E916E95041A4703D0A23A75441666666E615E95041333333F322A754418FC2F57814E9504148E17A9422A75441B81E850B13E9504114AE477122A7544152B81EC512E95041713D0A0722A75441295C8F9211E95041C3F528CC21A7544152B81E2510E950418FC2F5C820A75441C3F528CC0DE95041EC51B83E21A7544152B81EA50CE95041B81E851B21A754411F85EB810CE950415C8FC28521A75441B81E855B0BE950419A99997921A75441CDCCCCDC0BE950415C8FC2A520A75441CDCCCCDC0BE9504152B81EF51FA754413D0AD7430BE95041CDCCCC2C1FA7544148E17A140BE95041AE47E1EA1CA754417B14AE2706E950417B14AE671FA75441F6285C3F06E95041D7A370DD1FA7544148E17A4404E950410000003020A7544185EB513804E9504114AE477122A75441F6285C9F03E95041713D0AC723A754419A99994902E95041B81E859B24A754417B14AEC701E95041C3F5284C25A75441EC51B82E01E95041F6285C2F27A754413333334300E95041713D0A2728A75441F6285C1F00E95041F6285CEF28A75441D7A370CDFFE85041A4703D2A29A754415C8FC2D5FEE85041D7A3702D2AA75441EC51B88EFEE85041000000602BA75441AE47E1BAFDE850419A9999C92BA75441666666E6FCE85041713D0A772BA75441F6285CEFFBE85041666666A62BA75441B81E857BF8E85041713D0AD72FA75441666666D6F7E85041A4703DDA30A75441C3F528CCF4E85041E17A147E2DA75441C3F528ACF5E8504185EB51282CA75441295C8FB2F7E850410AD7A37029A75441A4703DCAF7E8504185EB51C827A75441C3F5284CF8E85041F6285C2F27A75441F6285C4FF9E85041A4703DCA24A75441A4703D8AF9E850416666661623A754410AD7A390FBE8504152B81E351EA754415C8FC235FCE85041000000B01CA754417B14AE97FDE85041666666861AA75441EC51B8AEFDE85041F6285C5F19A75441D7A370EDFEE85041D7A3708D15A754410AD7A310FFE850413D0AD7C313A75441E17A14BEFEE85041295C8FB212A75441AE47E17AFFE8504114AE475111A754416666666600E950418FC2F5C80EA754413D0AD7F300E95041000000D009A7544152B81E7501E9504152B81EF506A754410AD7A3B001E95041E17A14FE05A754411F85EB3102E950411F85EB1105A75441295C8F0202E95041AE47E15A02A75441B81E85CB02E95041295C8F9201A75441E17A146E02E9504148E17A5400A75441B81E85CB02E9504185EB5168FFA654413D0AD7B302E950413D0AD743FBA654416666662602E95041EC51B89EFAA654418FC2F57802E95041713D0AA7F9A65441CDCCCC6C02E950415C8FC245F8A65441713D0AF701E95041B81E85FBF6A65441EC51B80E02E95041E17A148EF5A65441D7A370CDFFE85041B81E853BF5A65441CDCCCC8C01E950417B14AE07F7A654413333332301E950418FC2F568F8A65441713D0A1701E950419A9999F9F9A6544152B81E7501E95041713D0A67FBA65441F6285CFF00E9504152B81EA5FCA65441AE47E15A00E950415C8FC2B501A75441AE47E15A00E95041713D0A1703A7544185EB510800E950419A99994904A75441C3F528FCFFE85041A4703DDA05A7544185EB5128FFE8504185EB511807A75441B81E856BFEE85041F6285CDF0AA7544114AE4701FEE850415C8FC2050CA754415C8FC2F5FDE85041713D0A870CA7544152B81E25FEE85041295C8FC20CA7544185EB5148FEE8504114AE47D10DA75441333333E3FBE8504148E17A7411A75441AE47E15AF9E8504185EB516818A75441E17A14EEF7E85041A4703D3A1CA754418FC2F548F7E85041D7A3703D1DA7544133333313F5E85041713D0AE722A7544185EB51F8F3E85041666666F623A75441B81E853BF3E85041F6285C2F27A75441A4703DDAF1E850410AD7A3302BA75441CDCCCC8CEFE85041D7A3701D30A754419A999989EEE8504152B81E1531A7544152B81EB5EDE8504148E17A2432A7544114AE4701ECE850413D0AD7A335A754415C8FC215EBE850415C8FC20537A754419A999909EBE85041A4703DAA37A754410AD7A330ECE850410000009036A7544114AE47E1ECE8504114AE475135A75441F6285CBFF0E8504152B81ED532A75441295C8FC2F1E850411F85EBD131A75441713D0A67F2E8504148E17A6430A75441295C8F82F3E8504148E17A842FA75441F6285C8FF7E85041AE47E18A31A75441713D0A07F5E85041333333F334A75441E17A14CEF1E85041713D0A6738A75441E17A149EEDE850417B14AE573EA754413D0AD733EDE85041295C8F923EA75441C3F5283CECE85041D7A370AD3FA754417B14AE27EDE850418FC2F59840A754417B14AE27EDE8504114AE476141A75441EC51B88EECE850410AD7A37042A75441D7A3702DEBE85041333333E341A75441E17A14FEEAE850419A99992942A754415C8FC215EBE85041D7A370BD44A75441333333A3EBE850413D0AD73345A754413D0AD773EBE85041295C8F4246A754413D0AD793EAE8504185EB51B846A7544166666626E9E85041B81E85DB46A7544185EB51C8E8E85041AE47E10A47A754417B14AE17E8E8504152B81E9546A75441F6285C4FE7E8504152B81E7547A75441CDCCCC3CE5E85041C3F5280C4BA75441713D0AA7E5E85041CDCCCCBC4BA754411F85EBE1E5E850417B14AED74CA754418FC2F5B8E7E8504148E17AD44BA75441AE47E11AE9E8504114AE47B14BA75441295C8F32E9E8504148E17AB44CA7544166666646E8E85041AE47E1BA4EA754417B14AE37E7E85041666666F64EA75441A4703DAAE6E8504114AE47514EA75441D7A370EDE5E85041713D0AE74DA754413D0AD7C3E3E8504114AE47314FA754413D0AD7E3E2E850413D0AD7834FA7544166666656E2E8504114AE47314FA75441F6285C2FE1E85041A4703DCA4FA75441E17A14EEDEE8504148E17AF451A754413D0AD783DEE85041AE47E11A53A754419A999989DCE85041B81E858B55A75441713D0A77DAE850418FC2F5D857A7544148E17A44D9E850418FC2F5B858A754413D0AD7F3D5E85041A4703DBA5CA75441713D0AE7D1E850419A99991961A75441000000C0D0E85041B81E857B62A75441A4703D5ACAE850410AD7A33068A75441C3F5287CC6E85041EC51B84E6AA75441EC51B82EC4E850419A9999496CA7544148E17A04C2E85041CDCCCC0C6FA75441D7A3700DC1E850410000001070A754411F85EB61BEE85041AE47E1CA73A754415C8FC275BDE8504185EB513875A7544114AE4751B9E85041E17A14BE7AA75441B81E85FBB7E8504185EB51287BA7544114AE4791B7E850411F85EBC17BA7544133333333B7E850417B14AE577BA754413D0AD7E3B7E85041333333837AA7544166666636B8E8504114AE477178A75441713D0AA7BAE85041295C8F3277A7544114AE47F1BBE850413D0AD74375A754419A9999B9BCE85041295C8F0273A7544185EB5188BFE850417B14AE2770A754410AD7A370BFE85041AE47E18A6EA754418FC2F538C0E850418FC2F5786CA754410AD7A330C1E85041666666466BA754411F85EB91C2E85041C3F528DC6AA75441C3F528DCC3E85041E17A149E69A75441B81E85EBC4E850413D0AD73369A75441333333B3C5E850418FC2F57868A75441713D0AB7C6E85041EC51B8AE67A75441713D0A97C7E850410AD7A35067A7544100000030C8E85041713D0A0766A754417B14AE07CAE85041F6285C2F64A75441E17A140ECCE85041F6285C4F63A754411F85EB81CFE85041333333F35FA7544148E17A94D1E85041000000F05EA754417B14AE97D2E850410AD7A3C05EA75441AE47E17AD4E850418FC2F5C85DA754415C8FC275D6E85041C3F5289C5AA75441C3F528BCD6E85041000000D058A7544114AE4761D7E85041C3F528FC57A7544100000050D9E85041EC51B88E56A754413D0AD773D9E85041333333C354A754413D0AD783DEE850413D0AD7C34DA7544114AE4711DFE85041A4703D4A4CA7544100000070DFE8504148E17AF44AA7544133333373E0E850419A9999D949A75441F6285CEFE2E85041F6285C1F46A75441D7A3702DE4E85041713D0A5745A75441713D0AC7E4E8504152B81EF543A75441CDCCCC7CE3E85041CDCCCC4C42A7544114AE4771E3E85041333333E341A754415C8FC2D5E2E85041EC51B87E41A7544133333393DFE850410AD7A3A03FA754410AD7A350D9E850417B14AE074AA75441CDCCCC1CD4E850410000002051A7544152B81E25D3E85041E17A143E53A754417B14AE77D3E85041B81E85AB54A7544185EB5148D3E85041F6285C5F56A75441E17A14DED2E850416666668657A75441CDCCCC5CD2E850417B14AE0758A754411F85EB41D1E850413D0AD7D359A7544148E17AD4CFE85041333333935BA75441A4703D8ACEE85041E17A14AE5CA75441E17A14EECCE8504152B81EB55EA75441EC51B8BECCE85041E17A144E5FA75441295C8F42CAE85041333333B361A754410AD7A3E0C8E85041666666B662A75441C3F5287CC6E850415C8FC25565A754413D0AD7D3C4E850413D0AD77367A754418FC2F5B8C3E850417B14AE7768A75441B81E854BC2E85041AE47E17A69A75441D7A3702DC0E8504114AE47816BA754410AD7A370BFE85041000000706DA75441EC51B87EBCE85041A4703D7A70A7544100000040BBE85041AE47E10A72A75441E17A140EBAE85041EC51B8DE72A7544100000010B7E850410AD7A3E076A75441295C8F82B6E850417B14AED777A75441295C8F82B4E850416666662678A75441A4703D1AB3E850419A9999197AA75441333333D3B2E8504148E17A347BA7544100000090B3E850415C8FC2B57BA75441000000B0B2E85041AE47E13A7DA75441C3F528BCB2E85041295C8F327EA7544114AE47F1B4E85041C3F5287C7FA7544152B81EF5B5E85041CDCCCC4C7FA7544185EB5118B6E85041713D0AB77FA754415C8FC205B4E850413D0AD73382A754415C8FC2E5B4E85041C3F528FC82A75441E17A14AEB5E850415C8FC26583A7544166666656B7E850415C8FC26583A7544166666636B8E85041F6285C1F83A75441E17A140EBAE85041333333F383A75441A4703DEAB9E85041713D0AF784A754417B14AE77BAE8504185EB515886A75441CDCCCCFCBBE850413333335388A75441EC51B87EBCE8504114AE47B188A754410AD7A3D0BCE85041C3F528CC89A754410AD7A3D0BCE8504148E17A948AA75441295C8F72BCE85041713D0AE78AA75441F6285CAFB9E85041A4703D2A8AA754415C8FC245B9E85041E17A146E89A75441E17A144EB8E8504148E17AD488A75441AE47E14AB7E85041713D0A2789A75441AE47E16AB6E85041EC51B85E88A7544166666676B6E85041C3F5282C87A75441D7A370DDB5E850417B14AE8786A7544166666676B6E8504148E17A8485A7544152B81E15B5E85041000000B084A754417B14AEA7B3E850417B14AEC784A75441CDCCCC8CB2E850410AD7A36085A7544148E17AC4B1E85041295C8F0285A7544166666666B1E850410AD7A38084A7544114AE47A1B1E8504148E17AC483A754417B14AEC7B2E850413D0AD71383A75441C3F528BCB2E850411F85EB9182A754415C8FC225B3E85041AE47E14A82A75441CDCCCC6CB3E85041B81E856B81A75441C3F528DCB1E850413D0AD73382A75441713D0A57B0E85041295C8F6282A75441C3F5283CAFE85041295C8F4283A75441F6285C7FAEE8504152B81EB582A754415C8FC2F5AEE85041B81E856B81A7544148E17A04B0E85041CDCCCC0C81A75441A4703D3AB2E85041B81E85AB7FA754417B14AEE7B1E85041333333E37EA7544148E17AE4B0E8504148E17A847EA7544114AE47E1AFE85041713D0AD77EA75441295C8F12AFE85041A4703DBA7FA754417B14AEF7ABE8504148E17AE482A75441D7A3706DACE85041F6285C1F83A75441D7A3708DABE85041295C8F2284A75441EC51B82EABE85041713D0AF784A75441A4703D8AAAE8504148E17A8485A7544166666666AAE850417B14AE8786A75441295C8F92A9E85041EC51B87E87A75441AE47E19AA8E85041B81E853B88A7544152B81E45A7E850411F85EB6189A75441EC51B85EA4E85041C3F5284C8DA7544185EB5118A4E85041713D0A678EA7544133333373A3E85041E17A145E8FA754413D0AD763A2E85041C3F5287C91A7544114AE47F1A2E85041333333A392A75441B81E859BA1E85041CDCCCCCC94A7544185EB5198A0E85041F6285CFF95A75441000000D09FE850416666664696A75441AE47E10AA0E850410000009097A7544152B81E959FE85041A4703DFA97A75441CDCCCCCC9EE850419A99992998A754417B14AE279EE850415C8FC2E598A75441CDCCCCEC9DE8504152B81EF599A75441C3F5283C9DE85041AE47E16A9AA754417B14AE479DE850418FC2F5C89AA75441EC51B8CE9BE850413D0AD7039BA75441295C8FE29AE850419A9999599CA75441295C8FE29AE850411F85EBE19EA75441E17A143E9AE85041F6285C4FA0A754411F85EB319AE8504100000000A1A754410AD7A3D098E85041295C8FF2A3A75441B81E854B97E850418FC2F598A8A75441AE47E19A96E85041E17A143EA9A75441B81E858B95E85041A4703DBAABA754411F85EB2195E8504148E17A24ACA754417B14AED793E85041E17A144EAEA75441A4703D2A94E85041B81E85DBAEA75441295C8F1294E85041B81E859BB0A7544148E17AB493E850418FC2F528B1A754413D0AD72392E850419A9999B9B2A75441EC51B85E92E85041CDCCCCBCB3A754418FC2F5E891E8504148E17AB4B4A75441E17A140E8FE85041713D0AC7B6A75441B81E859B8FE850410AD7A330B7A7544114AE471190E850419A999919B7A754419A9999598DE85041B81E85EBBAA75441B81E854B89E85041C3F528ACC4A754418FC2F5B886E85041295C8F72CBA75441F6285CDF87E8504185EB51A8CDA754418FC2F5F884E850419A9999E9CFA754418FC2F51884E85041A4703D5AD2A7544152B81E9586E850413D0AD713D2A754411F85EB5187E85041C3F528DCD2A754413D0AD7F386E85041C3F528BCD3A75441C3F5282C8BE85041EC51B89ED4A75441F6285C5F8BE8504166666606D5A75441295C8FA28AE85041333333B3DBA75441AE47E16A8BE85041B81E859BDBA754415C8FC2C58AE85041D7A3706DDFA7544114AE47718DE850411F85EB41E0A75441A4703D8A91E850415C8FC215E1A75441D7A3704D94E85041B81E859BDBA754410000008095E8504148E17A54DBA754410000006096E850418FC2F548DBA75441D7A370ED96E8504148E17A34DCA754410AD7A33096E850419A999989E4A75441666666A696E85041D7A3708DE5A7544152B81E2596E850418FC2F598E5A75441333333A395E850411F85EB51E5A7544152B81E4595E85041E17A141EE7A75441D7A3704D94E8504100000010EAA7544152B81E6594E85041295C8F42EBA75441F6285C0F93E850410AD7A340EEA75441713D0A4792E8504133333393EEA754411F85EBA191E8504166666696EFA75441B81E857B90E85041AE47E16AF0A754413D0AD7838FE85041AE47E16AF0A75441713D0AC78EE85041CDCCCC9CF1A754411F85EBE18FE85041713D0A07F2A754411F85EBE18FE850413D0AD7C3F2A7544148E17A548FE85041AE47E1BAF3A75441EC51B8DE8EE85041D7A370EDF4A75441EC51B8DE8EE85041A4703D8AF6A754413D0AD7E38CE85041000000A0F9A75441D7A3709D8CE8504114AE4701FBA75441E17A14AE8AE85041AE47E1EAFEA75441295C8F628CE850411F85EB1100A85441666666168EE850410000005001A8544148E17A248BE850411F85EB1100A85441AE47E18A8AE8504185EB515800A854417B14AE678AE85041AE47E14A03A8544185EB515889E85041B81E85FB03A854411F85EB3188E85041B81E859B06A85441C3F528BC87E85041A4703DAA07A85441B81E850B87E85041CDCCCC9C0AA854419A99998986E850417B14AEB70BA8544114AE47C185E85041CDCCCC8C10A854415C8FC2D584E850415C8FC26516A854411F85EBB184E8504185EB517818A854418FC2F51884E85041E17A14AE1AA85441AE47E1BA83E850418FC2F5F81FA854411F85EBD183E85041D7A3706D23A8544114AE470184E8504114AE472125A85441EC51B8AE83E850419A9999E925A8544148E17AC486E850411F85EB312AA854418FC2F51884E850410AD7A3C02EA85441C3F5283C84E85041295C8FF22FA85441CDCCCCCC85E850411F85EB2130A85441EC51B84E86E85041C3F5288C30A85441EC51B84E86E8504114AE473131A85441EC51B86E85E850419A9999F931A854410AD7A31085E85041713D0A6733A854418FC2F51884E85041CDCCCCDC33A85441EC51B88E84E8504114AE470138A854419A9999E983E85041F6285C3F39A85441B81E85AB82E8504114AE47A13AA85441C3F5285C83E85041F6285CFF3AA85441295C8F0287E85041713D0A473AA85441D7A3701D89E85041D7A3703D3CA854410000009088E85041C3F5289C3CA854416666662688E8504152B81E353DA8544148E17A8488E85041CDCCCC2C3EA854411F85EB3188E85041295C8F4241A85441295C8F2287E850418FC2F56842A854419A9999898AE8504152B81E8546A854415C8FC2858CE85041713D0A0748A85441C3F528AC8DE850415C8FC23548A85441000000D08DE85041000000C047A8544148E17A3490E85041C3F528CC47A854417B14AE3791E85041666666E648A854411F85EB8192E850413D0AD77349A85441EC51B85E92E850410AD7A37048A85441CDCCCC9C93E8504152B81EA546A85441CDCCCC9C93E850417B14AE1746A85441295C8F7291E85041C3F5282C45A85441CDCCCCFC90E8504114AE471144A854411F85EB6190E85041000000D043A85441B81E85FB8EE85041CDCCCCDC3EA8544185EB51788FE85041D7A3701D3DA85441B81E859B8FE85041295C8F223BA854415C8FC20590E85041B81E852B3AA854415C8FC2258FE85041A4703D5A3AA8544114AE47518EE8504114AE47C139A85441EC51B8DE8EE850410AD7A31039A85441B81E85BB8EE8504185EB518836A854410AD7A3608FE85041333333E335A85441EC51B89E90E85041B81E85AB36A85441C3F5282C91E85041333333E335A8544148E17AD492E85041AE47E11A35A85441EC51B83E93E85041E17A143E35A854416666669693E8504152B81EA534A85441D7A370ED94E850419A99997932A854413D0AD71398E85041B81E859B2AA85441713D0A3798E85041A4703D3A29A85441B81E854B97E850418FC2F5F826A854417B14AE9795E85041EC51B8CE24A8544114AE47E196E85041B81E850B22A85441B81E852B98E85041713D0AF722A85441713D0AF799E8504148E17A8423A85441EC51B8CE9BE850416666664622A8544185EB51789FE85041A4703D5A18A85441B81E855BA7E850413D0AD7B307A8544152B81EA5A9E85041295C8FC2FFA754410AD7A370AAE8504114AE4761FDA75441295C8FE2AEE850411F85EBE1F1A75441A4703D9AAFE8504148E17AF4EFA75441EC51B86EB0E85041295C8FE2EDA754417B14AE07B1E85041295C8F02EDA7544114AE47C1B0E85041A4703D5AEBA75441F6285CFFB1E8504185EB51F8E9A7544148E17AA4B2E85041CDCCCC2CE8A7544185EB5178B3E850410AD7A390E6A75441F6285C9FB4E85041713D0A17E5A754418FC2F508B5E8504152B81E05E3A75441C3F5280CB6E85041E17A14FEE0A7544100000010B7E85041F6285C2FDEA754411F85EB11BAE85041713D0AC7DEA754413D0AD793BAE85041C3F5285CDCA75441666666F6BAE85041666666A6DBA754410E0000009A9999A997E8504100000010EAA7544152B81EE597E85041F6285C5FE9A754410AD7A31097E85041C3F5283CE9A754417B14AE7796E85041EC51B8AEE8A754413333338396E85041B81E85ABE7A754410000004097E85041F6285CBFE6A75441B81E854B97E850413D0AD7D3E5A754415C8FC29598E850410AD7A3B0E5A75441EC51B82E99E8504133333323E5A754418FC2F59899E85041C3F528BCE5A75441A4703D1A9AE8504152B81E15E8A754415C8FC27599E85041000000F0EAA75441D7A370AD98E8504133333313EBA754419A9999A997E8504100000010EAA754410C0000001F85EB6193E85041B81E855B2CA85441CDCCCCBC92E85041E17A146E2EA8544114AE47D191E850411F85EB412FA85441C3F5284C90E8504148E17AB42EA854417B14AE5790E85041B81E853B2DA854417B14AE3791E850417B14AE872BA854417B14AE1792E8504185EB51782AA85441F6285C2F92E850411F85EB7128A85441D7A3706D93E850415C8FC26528A854419A99995994E85041B81E85BB29A85441A4703D2A94E85041D7A3701D2BA854411F85EB6193E85041B81E855B2CA854410D000000EC51B8AEEBE850411F85EBD143A754418FC2F5F8ECE850411F85EBD143A7544166666686EDE8504114AE472143A754410AD7A310EDE85041713D0AB742A75441F6285C3FEDE850415C8FC23542A7544166666666EEE85041C3F5289C41A754419A999989EEE85041A4703DFA41A7544148E17AA4EFE850413D0AD79342A7544148E17AA4EFE850411F85EBF142A754411F85EB51EFE85041713D0A9743A75441F6285CFFEEE85041AE47E14A45A754419A9999C9ECE8504185EB51F844A75441EC51B8AEEBE850411F85EBD143A7544112000000AE47E18AF2E8504114AE478140A75441A4703DDAF1E8504114AE47A13FA7544185EB5138F2E850410AD7A3F03EA7544185EB5118F3E850418FC2F5F83DA75441EC51B83EF4E8504185EB51483DA754419A999959F5E850418FC2F5183DA75441B81E859BF7E85041713D0A273AA7544114AE47F1F8E85041CDCCCC7C3BA7544152B81EE5F8E8504148E17A743CA754418FC2F528F8E850411F85EBE13DA754417B14AE57F8E850413D0AD7133FA75441CDCCCC1CF8E85041295C8F5240A75441B81E85BBF6E850410AD7A3B040A75441F6285CCFF5E850418FC2F59840A7544166666636F5E85041B81E85CB41A754410AD7A3C0F4E85041333333E341A75441E17A148EF3E8504114AE478140A75441AE47E18AF2E8504114AE478140A754410C0000001F85EBE1F7E85041B81E85BB35A75441AE47E15AF9E8504185EB519835A75441AE47E15AF9E85041D7A3703D36A754411F85EBA1F9E85041C3F5286C36A7544114AE47F1F8E850411F85EBE136A75441295C8F92F8E85041F6285C6F37A75441295C8F92F8E8504114AE47F137A7544114AE4731F7E850415C8FC2E537A75441C3F5288CF6E85041EC51B89E37A75441AE47E10AF6E85041B81E859B36A754413D0AD7A3F6E850419A99991936A754411F85EBE1F7E85041B81E85BB35A754410B000000C3F528BCB2E850411F85EBB1BEA75441E17A14EEB3E85041C3F528BCBAA75441CDCCCC4CB4E85041CDCCCCDCB9A7544152B81EF5B5E850417B14AE17BAA7544152B81EF5B5E850410AD7A3B0BAA7544185EB51F8B6E850418FC2F578BBA754419A999979B7E85041666666A6BEA7544133333353B6E85041EC51B82EC1A75441D7A3701DB4E8504114AE47A1C0A7544133333393B4E8504152B81EB5BFA75441C3F528BCB2E850411F85EBB1BEA75441110000000AD7A340A2E850415C8FC2F5FAA75441E17A14EEA1E8504148E17A04FCA75441E17A140EA1E85041C3F528FCFCA75441B81E85BBA0E8504185EB5148FBA75441666666F6A0E85041D7A3702DFAA7544100000090A1E850418FC2F578F8A75441EC51B89EA2E85041A4703DAAF5A7544185EB5138A3E850411F85EB41F2A75441666666B6A2E85041F6285C0FF1A754415C8FC2C5A3E8504166666696EFA754418FC2F5C8A4E85041EC51B87EEFA754419A999979A5E850417B14AEA7EDA75441CDCCCC7CA6E85041333333D3ECA75441333333A3A7E85041333333D3ECA7544166666616A7E8504185EB5118F0A7544133333393A3E85041B81E856BF8A754410AD7A340A2E850415C8FC2F5FAA7544109000000CDCCCCECAFE85041333333D3DAA754418FC2F538AEE850411F85EBE1DBA7544166666606ADE850413D0AD783DBA7544148E17A44AEE85041713D0A97D6A75441B81E856BAFE85041E17A14AED6A7544114AE47E1AFE85041295C8FA2D6A754418FC2F5D8B0E85041CDCCCCECD7A754411F85EB91B0E8504152B81E95D9A75441CDCCCCECAFE85041333333D3DAA754410E000000C3F5280CB6E8504100000010D8A754410AD7A300B6E8504152B81E15D6A75441E17A146EB7E85041CDCCCC8CD3A7544166666656B7E8504166666646D3A75441EC51B81EB8E85041295C8F22D3A7544166666636B8E850418FC2F518D0A75441E17A142EB9E850413D0AD793CEA7544148E17A54BAE85041295C8FF2CEA7544100000060BAE85041EC51B8AECFA75441713D0AE7B8E8504166666686D1A754419A999959B8E8504133333343D2A7544114AE4771B8E850413D0AD7D3D3A75441EC51B83EB7E850410AD7A300D7A75441C3F5280CB6E8504100000010D8A7544114000000A4703D8ABCE8504152B81E15C4A7544100000020BCE850410AD7A300C5A75441D7A370ADBCE85041E17A146EC6A7544148E17AD4BDE8504114AE47D1C4A75441713D0A27BEE85041295C8FC2C3A7544185EB51A8BEE850415C8FC2E5C3A754415C8FC255BEE850418FC2F5C8C5A75441A4703D4ABEE850418FC2F588C7A75441B81E85EBBDE85041C3F5286CC9A754417B14AE17BDE850419A9999D9CAA75441295C8F72BCE8504100000020CBA75441D7A370EDBAE85041C3F5282CCBA7544100000060BAE8504166666616C8A75441F6285C8FBAE850415C8FC285C6A75441C3F5284CBBE8504166666656C6A75441C3F5286CBAE8504133333373C4A754419A999919BAE85041713D0AD7C2A75441F6285C8FBAE85041B81E859BC2A754411F85EBE1BAE850411F85EB11C3A75441A4703D8ABCE8504152B81E15C4A75441
+</a>
+
+<b>
+01060000000100000001030000000100000084000000D9C1EF33B3E85041F0F6AF557CA754419F984E1EB3E850415BA6F2837CA75441D74ED2B1B2E85041AA5759397DA75441BE77E7D2B2E85041947AA0337EA75441A08DF740B3E85041A696127A7EA75441FFE5DCE4B4E850413FB8AF487CA75441C441A15AB6E85041BD4FF83E7AA75441912BB3E1B7E850419A38204A78A75441800BD703BFE8504109D6A3C06EA75441B9290A8DBFE85041C29AC03F6EA754418FC2F538C0E850418FC2F5786CA754414B5217EAC0E850410960B89D6BA7544107D30B26C1E850419CE52C4E6BA75441F693272CC1E8504145A2F34B6BA754410AD7A330C1E85041666666466BA754416EA9896EC1E85041C42BC9336BA754410F841E96C2E85041AEF62EC86AA75441F7C82AA9C3E85041FB7440C469A7544120646DC3C3E85041E4E8E6B569A75441C3F528DCC3E85041E17A149E69A7544162D2AE1EC4E85041E120098469A75441B8836406C5E85041CE286B0569A7544107DCA930C6E85041325CF8EB67A754412C542D84C6E85041998A07BD67A75441F934E3F5C7E8504154A88D7066A754410B779827C8E850419064261966A7544100000030C8E85041713D0A0766A75441A8E06434C8E85041C95CA50266A754411E7BA83BC8E850419B8EDFF565A75441E3463C56C9E85041E0432CD964A754414343AD82C9E850412EFA5CB464A754417B14AE07CAE85041F6285C2F64A75441E0955441CAE850412C07731664A75441E8C66C7CCAE8504191B480E563A754415A3A7407CBE85041A3561AAE63A75441E1CBCCFCD1E850416BF4286C5DA75441377B140ED8E85041ED6F3D2A56A7544144999979DDE85041EC1D859B4EA7544169492DF9DEE850417D6F968A4CA7544114AE4711DFE85041A4703D4A4CA7544100000070DFE8504148E17AF44AA7544133333373E0E850419A9999D949A75441B21FE1A4E0E85041DCB6148F49A754418BD1C821E1E85041BB7207AA48A7544164969A05E2E85041C9BACB6E47A75441CC3E014DE2E850413488E41247A75441F6285CEFE2E85041F6285C1F46A7544131A4E7A5E3E8504173AB65AC45A7544149512128E4E85041DF9FB94645A75441C6D30AB8E4E850416385D9E143A75441CDCCCC7CE3E85041CDCCCC4C42A7544114AE4771E3E85041333333E341A75441697918F2E2E850415F01079141A754415B178CE1E2E850418AD0C08841A754416BBD59E0E2E850418BDBAE8B41A75441711E6D88DFE85041F65032C93FA754416EE7B383DFE8504135D6D9C43FA754416BF57207DFE850415429A88B40A75441E3EC2B5FDDE85041A6C5E84943A754410AD7A350D9E850417B14AE074AA75441663F355DD4E85041A09729C850A75441F1AFCCE0D3E85041251C80AD51A75441B0C5B03BD3E850412D39175153A75441F28A8D61D3E85041B6DB934954A754417B14AE77D3E85041B81E85AB54A754416E6DAE74D3E850411F991DC754A75441920BE97DD3E85041CE35AF0355A75441078ED57ED3E8504196A8E40855A7544175935659D3E8504142CAB62C56A75441970A3F43D3E85041C20B8D7F56A75441C27B961BD3E850411B7B9DE956A75441A1F1DFFDD2E85041EB391A2E57A75441E17A14DED2E850416666668657A754412C1F278BD2E850411CC253D957A75441006B196DD2E8504113658CFF57A75441ADAF229BD1E85041B7576E5B59A754412906E15BD1E85041D0D19CA959A754411F85EB41D1E850413D0AD7D359A75441EB8004E4D0E8504172D6CA465AA75441A4E4D370D0E850419CD098E05AA7544113DDC524D0E85041BC71E8305BA7544148E17AD4CFE85041333333935BA75441684EBD90CFE85041C9CD39CD5BA75441E7027671CFE85041E03541EE5BA75441F8ABEF89CEE85041346A76AE5CA7544116BED62BCDE850415D9758675EA754417B102FD6CCE85041B2514C025FA75441EC51B8BECCE85041E17A144E5FA7544190774FFCCAE85041544D2D0061A75441E42B87DCCAE850415CE2AD2761A7544185B724ADC9E850415A14B24562A75441BFC46BCDC8E85041CCD933D362A754414C05F0E1C7E850418AE4CED363A75441BB8DCA62C7E850419513F55864A75441C8B3C8B5C6E850416BAD981665A75441488B31FAC5E850415B1D081A66A75441E276C52BC5E85041F160810367A754413D0AD7D3C4E850413D0AD77367A75441C69FBD77C4E85041951F70C867A75441FF9F7BE0C3E85041E011D36A68A75441A9F36E45C2E85041117AEC8B69A754411E48074FC0E850412BB19F616BA75441C8A29C4DC0E85041457683626BA75441DACEA442C0E8504144A2006D6BA75441282CED18C0E85041184E08B76BA75441ACB1FBC2BFE8504100A33B986CA75441016FFF84BFE850415716B95A6DA75441264FBE84BEE8504154D898726EA754416CAC4C84BDE850414C08AD946FA75441DB37F154BCE85041577B79B470A7544136634FEDBBE85041023A063171A7544100000040BBE85041AE47E10A72A754418AE591F7BAE85041CF1A093D72A754412437F51ABAE85041B8380DFC72A75441AD917468B9E85041D03C0AEF73A754417EF6EB9EB8E85041BA8700DA74A754411F84DC00B8E85041113B159E75A754411C64FDFFB7E850411E09409F75A7544163B2FADCB6E850413C6E363F77A75441C301B5BBB6E8504199D8DD7377A75441295C8F82B6E850417B14AED777A754411D3AFF7BB6E850418466B0D877A75441F236C077B6E850418F9E68DF77A754416E9D6630B5E850414308DF1878A75441202B3101B5E850417529EE1278A7544113CC32ABB4E850411DDF262078A75441229E972BB3E85041D8BB60087AA75441C863DF25B3E85041A71212147AA7544178AD4AEDB2E850414CF24A457BA754410F7C09FBB2E85041B71CC24F7BA7544100000090B3E850415C8FC2B57BA75441D9C1EF33B3E85041F0F6AF557CA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 422974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441AE47E1EA0DE95041333333E355A65441295C8FB20CE950417B14AE7755A65441EC51B88E0CE95041333333C354A65441713D0A870BE950413333339354A65441EC51B87E0AE95041333333F354A65441EC51B8DE0AE950417B14AE5754A65441EC51B87E0AE95041B81E85FB52A65441AE47E15A0AE95041B81E851B51A65441713D0A570BE95041B81E85EB50A65441AE47E13A0CE950413333331350A65441AE47E1BA0DE950417B14AED74FA65441AE47E11A0EE95041333333834FA65441EC51B8DE0DE95041333333F34EA65441295C8FF20BE95041B81E852B4DA65441AE47E14A0BE95041B81E859B4CA65441EC51B8AE0AE95041333333934BA65441EC51B8AE0AE95041F6285C4F4AA65441295C8F020BE950417B14AE074AA65441AE47E1AA0BE95041F6285C1F4AA65441AE47E1AA0BE950417B14AE2748A65441EC51B80E0BE95041F6285C1F47A65441295C8F020BE950413333332346A65441713D0A670AE950417B14AE8745A65441AE47E1CA09E95041B81E85AB45A65441EC51B8FE08E950413333330345A65441EC51B8CE08E95041B81E858B44A65441713D0AB708E950413333338343A65441295C8FB209E950417B14AE1743A65441AE47E1CA09E950417B14AE2742A65441AE47E1AA08E95041F6285CEF40A65441713D0AE708E950417B14AEA740A65441713D0AE708E950417B14AE573FA65441713D0AF707E95041F6285C3F3FA65441295C8F4207E95041F6285CDF3EA65441295C8F4207E95041B81E85FB3DA65441713D0A9707E95041B81E853B3DA65441AE47E14A08E95041333333533DA65441295C8F8209E950417B14AEB73CA65441AE47E16A09E950417B14AE073BA65441EC51B8FE08E95041B81E85DB39A65441AE47E11A0BE95041F6285C1F38A65441EC51B83E0BE950413D0AD78334A65441295C8FF20BE95041B81E85DB33A65441EC51B8BE0CE950413D0AD79333A65441AE47E12A0DE950417B14AEE733A65441295C8F620EE950413D0AD70333A65441EC51B81E0DE95041F6285C1F32A65441AE47E12A0DE95041333333F330A65441713D0A970DE95041F6285CAF2FA65441EC51B81E10E95041F6285CAF2CA65441713D0AD70FE950417B14AE472BA65441713D0A2711E950417B14AEC729A654413333335312E950417B14AE6729A654413333338312E95041333333E328A65441EC51B84E16E95041F6285C1F26A654413333330317E95041F6285C7F26A65441AE47E1DA17E950417B14AE0726A65441EC51B8EE18E95041B81E85FB25A65441713D0A6719E95041B81E855B26A65441AE47E1AA1AE95041F6285C1F26A65441EC51B81E1CE95041F6285C4F26A65441333333431CE950413333330327A65441EC51B8AE1CE950413333339327A65441AE47E1BA1CE950417B14AE1728A65441713D0A371CE95041B81E859B28A65441713D0AF71CE950417B14AE6729A65441713D0A871DE950417B14AE6729A65441EC51B82E1EE95041B81E85DB27A65441AE47E16A1EE95041B81E856B25A65441AE47E1DA1DE95041F6285C8F25A65441EC51B8DE1CE950417B14AE1725A65441713D0A371CE95041B81E85EB23A65441713D0AA71BE950417B14AE6723A65441333333B31BE95041333333F321A65441EC51B85E1BE950417B14AE5721A65441713D0A771EE95041333333B31FA65441713D0A071FE95041B81E851B21A65441333333B31EE95041B81E85DB21A65441EC51B8EE1EE95041F6285C5F22A65441333333E31EE950417B14AE3723A65441AE47E1FA1EE95041B81E851B24A65441AE47E19A1EE95041333333F324A65441AE47E14A20E950413333338325A65441AE47E1DA20E95041333333F324A65441AE47E1CA21E950417B14AE0723A65441EC51B8BE21E95041B81E850B22A65441713D0A7721E95041B81E85AB21A65441333333F320E950417B14AE1722A65441EC51B83E20E950417B14AEE721A65441713D0AC71FE950417B14AE3720A654413333339320E950417B14AE3720A654413333331322E95041333333F31EA65441333333D322E95041F6285C2F1FA65441333333C323E950417B14AE171FA65441EC51B87E25E95041B81E85FB1CA654413333330326E95041333333C31BA65441713D0AF725E95041F6285C0F1BA65441713D0A7727E95041B81E858B1AA65441AE47E1BA28E95041333333C318A65441AE47E1FA27E950417B14AE8718A65441AE47E19A27E950417B14AE2718A65441AE47E10A27E95041F6285C3F18A65441713D0A8726E95041F6285C0F18A65441EC51B8AE25E950417B14AE2718A65441AE47E12A25E95041F6285CDF17A654413333331325E95041F6285C7F17A654413333335324E95041B81E85FB16A65441713D0AE723E950413333332316A65441AE47E14A23E950413333339315A65441713D0A1721E95041B81E85DB15A65441333333A31FE950417B14AE6717A65441EC51B82E1EE95041F6285CDF17A65441713D0AC71CE95041B81E853B19A65441333333C31AE950417B14AE371AA65441EC51B81E19E95041F6285CCF1BA65441EC51B86E17E950417B14AE771CA65441AE47E12A16E95041F6285C7F1DA65441EC51B86E14E95041F6285C3F1EA65441333333D313E95041B81E853B1FA65441AE47E1DA11E95041F6285C1F20A65441EC51B84E10E95041B81E85DB21A65441EC51B82E0FE95041B81E853B22A65441333333630EE950417B14AE0723A65441333333D30DE95041B81E851B24A65441EC51B8BE0CE95041F6285C9F24A65441AE47E13A0CE95041F6285C9F24A65441713D0A170CE95041B81E858B26A65441EC51B86E0BE950417B14AE5727A65441713D0A970AE950417B14AE5727A65441713D0A4709E95041B81E859B28A65441713D0AB708E950417B14AEA728A654413333336308E950417B14AEE727A65441AE47E13A09E950417B14AE9726A65441713D0AE708E95041B81E853B25A65441713D0AF707E950417B14AE1725A654413333335306E950413333337326A65441AE47E17A05E950417B14AEC726A65441713D0A0704E950417B14AE1728A65441EC51B8CE02E950417B14AE7728A65441713D0AD700E950417B14AEC729A65441AE47E11A00E95041E17A141E2BA65441D7A3701DFDE850417B14AE8732A65441F6285C7FFCE850411F85EB5138A65441713D0A87FCE850413D0AD73339A65441EC51B82EFDE850413D0AD73339A65441EC51B85EFDE85041F6285C9F39A6544133333323FDE850413D0AD7533AA6544133333393FCE850413D0AD7533AA6544185EB51F8FDE85041AE47E1DA44A65441EC51B80EFFE850413D0AD7C348A65441713D0A87FFE85041B81E851B48A65441EC51B85E00E950413D0AD73348A65441EC51B81E01E950417B14AEB748A65441EC51B80E02E950413D0AD7C34BA65441333333D301E950417B14AE174CA65441AE47E12A01E95041F6285C2F4CA654413333332300E95041B81E85FB4CA65441713D0AA700E950413D0AD7D34DA65441AE47E1CA03E95041B81E858B50A65441EC51B85E06E950413D0AD72352A65441EC51B83E08E950417B14AE2754A65441EC51B8FE08E95041B81E850B55A65441333333B309E950417B14AE7755A65441333333E309E95041F6285C1F56A65441333333C30BE950413D0AD73357A65441EC51B88E0CE950413D0AD78358A65441333333030EE950413D0AD7635AA65441713D0A170FE95041F6285C9F5AA65441AE47E19A0FE95041F6285C8F5BA65441333333A310E950417B14AE075CA65441713D0A9710E95041B81E85EB5CA65441713D0A2714E95041F6285CDF5FA65441AE47E15A19E950417B14AE1764A65441AE47E13A1BE950417B14AE7761A65441713D0A9719E95041333333A35FA65441AE47E1FA18E950417B14AE975FA6544109000000295C8FA204E950417B14AEC74AA65441AE47E11A05E95041333333E349A65441AE47E17A05E95041B81E85AB48A65441295C8FC205E950413333339348A65441713D0A3707E95041F6285C4F4AA65441295C8FB206E950417B14AE274BA65441EC51B8FE05E950417B14AE274BA65441713D0AB705E950417B14AEC74AA65441295C8FA204E950417B14AEC74AA6544110000000AE47E1BA01E950413333332346A65441295C8FB200E950413333335346A65441295C8FC2FFE850413333338343A65441295C8F32FFE850413333339342A65441AE47E10A00E950417B14AE3741A65441295C8F1201E95041F6285CEF40A65441295C8F7201E95041B81E852B41A65441713D0A5702E950413333334341A65441EC51B8FE02E95041F6285CEF40A65441713D0A0704E95041B81E854B42A65441713D0AD703E95041F6285CCF42A65441295C8F4204E95041F6285C7F44A65441713D0AA703E950413333336345A65441AE47E10A03E95041F6285CFF45A65441295C8FC202E95041B81E856B46A65441AE47E1BA01E950413333332346A654410103000000010000000F0000007B14AE770FE95041E17A14EED5A65441295C8FD210E9504152B81E65D6A65441EC51B83E11E9504100000070D6A65441295C8FD210E95041333333E3D5A654418FC2F52811E9504148E17AD4D4A65441E17A146E12E95041C3F5281CD4A65441295C8F4212E95041F6285CAFD3A65441B81E857B10E9504133333343D3A654410000003010E95041713D0AF7D2A654418FC2F5D80FE95041D7A3702DD3A65441AE47E1EA0EE95041666666B6D2A65441EC51B89E0EE95041E17A144ED3A6544148E17AB40EE95041713D0A47D4A6544185EB51680EE9504148E17A24D6A654417B14AE770FE95041E17A14EED5A6544101030000000100000022000000295C8F3216E95041F6285C3FDAA65441EC51B87E16E95041295C8FB2D9A65441EC51B87E16E95041A4703DFAD8A654411F85EB6117E9504185EB5178D8A654417B14AE5717E9504166666646D9A654411F85EB4117E95041D7A370BDD9A654411F85EB6117E950413D0AD7F3D9A654413D0AD7C317E950411F85EB91D9A65441333333F318E950418FC2F5E8D9A6544185EB51E818E9504166666646D9A65441F6285CFF1BE9504152B81EB5D7A654415C8FC2351CE9504133333333D7A65441333333E31CE950411F85EBF1D6A65441AE47E17A1DE95041EC51B87ED7A65441C3F528DC1DE950411F85EBA1D5A65441295C8FC21CE95041B81E859BD6A65441666666561CE950411F85EBD1D6A65441EC51B8BE1BE95041EC51B80ED6A65441A4703DBA1AE95041EC51B82ED6A654413D0AD7631AE950411F85EBF1D6A6544152B81E7519E950415C8FC285D6A654410AD7A35018E95041AE47E17AD6A654417B14AE5717E950411F85EBF1D6A654416666661617E9504148E17A94D7A65441295C8F3216E950419A999989D7A65441EC51B82E15E95041CDCCCC4CD8A654416666662613E95041C3F5280CD8A65441B81E851B13E95041EC51B8AED8A65441D7A3709D13E9504114AE4771D9A65441A4703D2A14E95041B81E853BD9A6544152B81E1514E950413D0AD7F3D9A65441295C8FC214E95041295C8FB2D9A65441C3F528DC15E95041295C8FB2D9A65441295C8F3216E95041F6285C3FDAA6544101030000000A00000003020000295C8F024AE95041F6285C7FB3A65441AE47E12A49E95041F6285C4FB3A65441295C8FA249E95041B81E857BB1A65441295C8FB24BE9504133333323B2A65441AE47E1FA4EE95041B81E85FBAFA65441EC51B8AE4FE950417B14AE67ADA65441295C8FD24FE95041B81E855BAAA65441713D0A5750E950417B14AE37AAA65441295C8FC250E95041F6285C3FA8A65441AE47E17A50E950417B14AE37A7A65441295C8FD24FE95041B81E852BA7A65441AE47E1FA4EE95041F6285C0FA8A65441295C8F624DE95041F6285C3FA8A65441EC51B86E4DE95041F6285C4FA7A65441EC51B8FE4DE95041B81E85CBA6A65441295C8FC24DE95041B81E853BA6A65441EC51B84E4CE95041F6285CFFA5A65441713D0A474BE950417B14AEC7A4A65441AE47E10A4BE9504133333313A4A65441EC51B83E4AE95041B81E858BA4A65441AE47E18A49E95041F6285CAFA4A65441713D0AA748E950417B14AE07A4A65441295C8FF247E95041F6285CFFA2A65441713D0AD748E95041B81E85DBA2A65441295C8FE248E95041B81E85FBA0A65441AE47E10A48E950417B14AEB79FA65441713D0AE747E95041333333439EA65441EC51B8AE46E950417B14AE779DA65441295C8FA246E95041F6285C9F9CA65441713D0A3746E95041F6285CDF9BA65441713D0A3746E95041B81E856B9AA65441295C8FB245E95041B81E859B9AA65441EC51B80E44E950413333336399A65441295C8F9244E95041F6285CDF98A65441AE47E11A44E95041B81E855B98A65441EC51B8DE43E950417B14AEA797A65441295C8FB242E95041F6285C8F97A65441AE47E12A43E950417B14AEE796A65441713D0AE741E950413333339396A65441AE47E1EA40E95041B81E85FB94A65441295C8F7240E95041333333B394A65441EC51B81E40E95041B81E853B94A65441713D0A7742E95041F6285C1F92A65441AE47E16A42E950413333335391A65441EC51B82E45E95041F6285C6F90A65441EC51B85E45E95041B81E85BB8FA65441713D0A2747E95041F6285C1F8FA65441AE47E10A48E95041333333A38FA65441EC51B85E48E950417B14AE5790A65441295C8F1249E95041B81E857B90A65441295C8F024AE950413333330390A65441AE47E1CA48E95041B81E853B8EA65441713D0AD748E95041F6285C3F8DA65441EC51B8FE47E950417B14AEC78CA65441EC51B86E47E95041F6285CEF8BA65441713D0A2747E95041F6285C6F8AA65441295C8FA246E950417B14AE278AA65441EC51B87E46E950417B14AEC789A65441EC51B88E45E95041333333A389A65441295C8F2245E95041F6285C0F8AA65441AE47E17A44E95041B81E856B8BA65441AE47E1BA43E95041B81E859B8BA65441295C8F9241E95041F6285CDF8CA65441AE47E12A40E95041F6285CAF8CA65441AE47E1CA3FE95041B81E852B8CA65441AE47E1EA3DE95041F6285C7F8CA65441295C8F223CE95041333333438CA65441295C8FC23BE950417B14AEB78AA65441AE47E1EA3AE950417B14AE9789A65441713D0AF73AE95041B81E850B88A65441EC51B8AE3AE950417B14AE8787A65441EC51B8EE39E950413333333387A65441295C8FE239E95041F6285CAF86A65441EC51B88E39E95041B81E858B86A65441713D0A4739E95041B81E853B85A65441295C8F8239E95041B81E85DB84A65441EC51B8FE38E95041B81E854B84A65441713D0AB738E950417B14AE3783A65441295C8FA237E950413333330381A65441EC51B87E37E950417B14AEA77FA65441AE47E15A37E95041333333337EA65441295C8FB236E95041333333837CA65441713D0AF737E950417B14AE977AA65441295C8F6238E950417B14AE1779A65441AE47E19A39E950417B14AE5778A65441713D0A673AE950417B14AE5778A65441713D0AC73AE95041F6285C0F78A65441295C8FA23AE95041B81E855B77A65441295C8FD23AE95041F6285C2F76A65441AE47E1DA3BE950417B14AEB775A65441713D0AA73CE950417B14AE1773A65441713D0A973DE950417B14AEC771A65441713D0AE73EE950417B14AE6771A65441EC51B88E3FE95041F6285CAF71A65441AE47E16A3FE95041B81E85CB70A65441EC51B8AE3DE950417B14AED770A65441295C8F123DE95041F6285C5F70A65441EC51B85E3CE95041F6285C8F70A65441EC51B86E3BE950413333335370A65441295C8F423AE95041F6285C8F70A65441EC51B85E39E950413333335370A65441AE47E17A38E95041F6285C5F70A65441EC51B84E37E95041333333F36FA65441AE47E1EA34E95041333333F36FA65441EC51B86E35E95041333333536DA65441295C8FD234E95041333333536DA65441EC51B87E34E95041333333C36CA65441AE47E1FA33E95041333333236DA65441713D0A3734E95041F6285CBF6DA65441713D0AE732E950417B14AE676EA65441AE47E18A31E95041333333836DA65441295C8FE230E950417B14AEA76DA65441295C8F2230E95041F6285CFF6CA65441AE47E15A31E95041F6285C3F6CA65441713D0A6731E950417B14AE076BA65441713D0A1730E95041F6285C8F6AA65441EC51B8AE2EE95041333333E36AA65441295C8FE22DE95041F6285CAF6BA65441295C8F622CE950417B14AE376BA65441295C8F022CE950413333336369A65441713D0AB729E95041F6285C7F68A65441AE47E1BA28E95041333333A368A65441AE47E18A25E950417B14AEB766A65441AE47E18A25E95041B81E85BB65A65441713D0A7724E95041B81E853B64A65441713D0A8723E950417B14AEB763A65441295C8FA222E95041B81E855B65A65441713D0A1721E95041F6285C1F65A65441EC51B84E1FE95041B81E85AB63A65441EC51B8EE1EE95041333333C363A65441713D0AA71EE950413333335364A65441AE47E12A1FE95041B81E85FB64A65441713D0A671FE95041F6285C0F66A65441AE47E10A1EE950417B14AE8766A65441AE47E16A1EE95041F6285C5F67A65441713D0A671FE95041B81E855B68A65441AE47E12A22E950413333333369A65441EC51B85E24E95041333333B36AA65441EC51B8AE25E95041333333A36BA65441AE47E1AA26E95041B81E85EB6BA65441295C8F5227E95041F6285C4F6BA65441EC51B84E28E95041333333736BA65441295C8F9229E950417B14AE176DA65441AE47E16A2AE95041B81E859B6DA65441713D0A872FE950413333332370A65441295C8F1231E95041333333A371A65441713D0A9731E950417B14AEB772A65441AE47E13A33E95041F6285C1F74A65441713D0AF731E95041B81E85DB78A65441EC51B87E31E950417B14AE177CA65441AE47E12A31E950417B14AEA77CA65441EC51B84E31E950417B14AEF77DA65441EC51B85E30E95041333333037EA65441295C8FC22FE95041333333937EA65441EC51B87E2EE950417B14AE0780A65441713D0A572FE95041B81E85BB80A65441713D0A872FE95041B81E852B80A65441EC51B8EE30E95041333333237FA65441713D0A6731E95041333333937EA65441295C8F0232E950417B14AE777FA65441713D0AE732E95041333333E37FA65441295C8F8233E95041F6285C4F80A65441EC51B83E32E95041B81E85DB81A65441AE47E14A32E95041333333B382A65441AE47E11A32E95041F6285C4F83A65441295C8F9232E95041333333F384A65441713D0A7733E95041333333C384A65441EC51B8EE33E95041F6285C5F85A65441295C8F8233E95041333333E385A65441AE47E1CA33E95041F6285CAF86A65441AE47E1CA33E950413333339387A65441713D0A6734E950417B14AE1788A65441EC51B89E35E95041B81E85FB88A65441EC51B8EE36E95041B81E85FB88A65441713D0A7736E95041333333638AA65441AE47E1BA34E95041F6285CEF8BA65441AE47E1FA33E95041F6285CFF8DA65441713D0AE735E95041333333B391A65441295C8F8236E95041333333B391A65441EC51B8EE36E95041B81E85AB93A65441EC51B83E38E950417B14AE1794A65441AE47E11A3BE950417B14AEC798A65441EC51B80E3BE950417B14AE479AA65441713D0A673AE95041333333139BA65441AE47E1EA3AE950417B14AE679BA65441295C8F923BE95041F6285CCF9CA65441EC51B8FE3BE950417B14AEE79CA65441EC51B8EE3CE95041333333B39DA65441713D0A073DE950417B14AE379EA65441AE47E16A3CE950417B14AE579FA65441AE47E13A3CE950417B14AEF7A1A65441713D0AA73CE95041B81E854BA2A65441EC51B8EE3CE950417B14AE17A3A65441713D0A673DE950417B14AE77A3A65441EC51B87E3DE950417B14AE07A4A65441295C8F623EE95041B81E85EBA4A65441AE47E16A3FE95041F6285CDFA4A65441295C8F823FE95041F6285C6FA5A65441AE47E18A40E95041F6285C6FA5A65441EC51B89E41E950417B14AE47A6A65441EC51B82E42E9504133333353A6A65441EC51B8BE42E950417B14AE07A7A65441EC51B8BE42E95041F6285CCFA8A65441AE47E15A43E9504133333343AAA65441AE47E12A43E95041333333D3AAA65441295C8F4243E95041F6285C2FACA65441AE47E10A42E9504133333303AEA65441295C8F6241E950417B14AE27AEA65441AE47E14A41E95041F6285CDFADA65441295C8F823FE95041B81E85FBACA65441EC51B85E3FE95041B81E856BACA65441AE47E1DA3EE9504133333363ABA65441EC51B84E3DE95041333333B3ACA65441EC51B8BE3CE950417B14AE97ADA65441713D0AB73BE950417B14AEE7ABA65441EC51B82E39E950417B14AEB7ABA65441EC51B8FE38E95041F6285C6FABA65441295C8FD237E95041F6285CCFABA65441295C8FA237E95041B81E85BBAAA65441295C8FB236E950417B14AE37AAA65441713D0A7736E95041333333B3A9A65441AE47E17A35E950417B14AE37AAA65441295C8F0235E95041F6285CEFA9A65441713D0AC734E9504133333343AAA65441EC51B8AE34E9504133333333ABA65441713D0AD733E95041B81E854BABA65441713D0A4733E950417B14AEF7AAA65441713D0A5732E95041F6285C9FABA65441713D0A8732E950417B14AED7ACA65441EC51B82E33E95041F6285CAFADA65441713D0A1733E95041B81E850BAFA65441295C8F5233E9504133333313B0A65441AE47E17A35E95041F6285CAFB0A65441295C8F2236E9504133333383B2A65441295C8F1237E95041B81E852BB3A65441AE47E15A37E950417B14AE57B4A65441295C8FD237E95041F6285C6FB4A65441AE47E1DA38E95041B81E851BB4A65441EC51B82E39E95041333333D3B3A65441713D0A673AE95041B81E851BB4A65441713D0AF73AE95041F6285C0FB4A65441713D0A573BE95041B81E85ABB4A65441295C8FF23BE95041F6285C2FB5A65441AE47E19A3CE950417B14AE07B6A65441295C8F223FE950417B14AEB7B7A65441295C8F523FE95041B81E857BB7A65441713D0AD73FE950417B14AEE7B7A65441713D0AD73FE9504133333393BAA65441EC51B86E3EE95041B81E859BBBA65441EC51B86E3EE9504133333313BCA65441713D0AE73EE950417B14AE07BCA65441EC51B85E3FE95041B81E85EBBCA65441295C8F4240E950417B14AEB7BDA65441295C8FB23FE950417B14AE37BFA65441EC51B84E3DE950417B14AE27C0A65441295C8FD23AE950417B14AE67C2A65441EC51B88E39E95041B81E852BC2A65441AE47E1CA36E95041F6285C8FC1A65441EC51B88E36E95041F6285C4FC2A65441295C8FE236E95041333333D3C2A65441295C8FE236E95041F6285C6FC3A65441AE47E13A36E950417B14AEB7C3A65441713D0A2735E950417B14AED7C4A65441AE47E12A34E950417B14AE07C5A65441AE47E1FA33E950417B14AE97C5A65441AE47E10A33E950417B14AE57C6A65441EC51B89E32E950417B14AE67C5A65441AE47E11A32E950417B14AE37C5A65441EC51B8AE31E95041B81E85CBC4A65441295C8F5230E95041333333B3C4A65441AE47E1DA2FE950417B14AE97C5A65441AE47E1DA2FE950417B14AEF7C5A65441AE47E14A2FE95041333333C3C6A65441AE47E1BA2EE95041F6285CCFC6A65441EC51B81E2EE9504133333353C7A65441AE47E19A2DE9504133333353C7A65441295C8F122BE950417B14AEC7C8A65441AE47E19A2AE950417B14AE97C8A65441713D0A472AE95041F6285C0FC9A65441713D0A6728E9504133333373C8A65441AE47E17A26E95041333333A3C8A65441AE47E15A25E950417B14AE47C7A65441AE47E18A25E95041333333F3C6A65441AE47E1FA24E95041B81E856BC4A65441295C8FF223E9504133333393C3A65441713D0A2723E95041B81E85DBC3A65441713D0A9722E950417B14AEA7C4A65441AE47E1BA22E95041B81E858BC5A65441EC51B8FE20E95041B81E850BC7A65441AE47E1DA20E950417B14AEA7C7A65441713D0A471EE95041B81E85CBC7A65441713D0A271DE9504133333353C7A65441295C8F321DE95041B81E85ABC6A65441EC51B82E1BE95041B81E851BC6A65441295C8F321AE950417B14AE37C5A65441EC51B8FE17E95041F6285C5FC4A65441EC51B80E17E95041F6285C5FC4A65441713D0AA715E95041F6285CCFC3A65441AE47E19A15E95041F6285C0FC3A65441EC51B89E14E950417B14AEB7C3A65441295C8F3214E9504133333393C3A65441AE47E13A12E950417B14AE87C6A65441295C8F7213E95041F6285C9FC6A65441713D0A5714E95041F6285CFFC6A65441713D0AB714E95041B81E85ABC6A65441713D0A7715E95041B81E850BC7A65441713D0A7715E95041B81E85CBC7A65441EC51B88E15E95041F6285CAFC8A65441EC51B8CE14E95041F6285C9FC9A65441EC51B86E14E950417B14AE87C9A65441EC51B8DE13E95041B81E853BCAA65441295C8FD213E950417B14AE77CAA65441AE47E14A14E95041F6285C8FCAA65441295C8FC214E95041F6285C1FCBA65441AE47E13A15E95041333333B3CAA65441295C8FD216E95041B81E85FBCAA65441EC51B8DE16E9504133333383CAA65441AE47E14A17E950417B14AE47CAA65441AE47E11A17E95041B81E859BC7A65441713D0AA718E9504133333353C7A65441AE47E1EA19E95041333333C3C6A65441713D0A571AE950417B14AE37C8A65441713D0AF719E9504133333333C9A65441EC51B8AE19E95041333333C3C9A65441AE47E10A1BE95041B81E853BCAA65441EC51B81E1CE9504133333323CAA65441EC51B8DE1CE950417B14AE77CAA65441295C8F021DE95041F6285CEFCAA65441EC51B86E1DE95041B81E855BCBA65441EC51B86E1DE95041333333A3CBA65441EC51B81E1CE95041333333A3CBA65441EC51B8EE1BE9504133333313CBA65441713D0A271AE95041F6285C7FCBA65441295C8FA219E950417B14AEC7CBA65441AE47E14A1AE9504133333363CCA65441AE47E16A1BE9504133333363CCA65441EC51B87E1CE95041B81E859BCDA65441713D0A271DE95041333333E3CDA65441EC51B8FE1DE95041F6285CEFCDA65441713D0A471EE9504133333313CEA65441713D0AD71EE950417B14AED7CDA65441EC51B8BE21E95041F6285C8FCDA65441EC51B84E22E95041F6285C2FCDA65441713D0AC722E95041B81E856BCDA65441AE47E17A23E9504133333353CDA65441EC51B82E24E95041333333E3CDA65441295C8FC223E950417B14AEB7CFA65441AE47E1DA23E95041F6285C8FD0A65441295C8F7225E95041F6285CEFD0A65441AE47E1EA25E95041F6285C8FD0A65441EC51B8CE26E95041B81E85CBD0A65441713D0A4727E950417B14AE97D1A65441713D0AE726E950417B14AE77D3A65441EC51B85E27E95041B81E858BD4A65441EC51B8CE26E95041F6285C3FD5A65441AE47E1CA24E95041B81E851BD5A65441EC51B89E23E95041B81E85FBD3A65441AE47E14A23E95041F6285C1FD4A65441295C8F3223E95041F6285C0FD5A65441713D0A6722E950417B14AE87D5A65441295C8FD222E95041B81E850BD6A65441EC51B87E22E95041F6285C5FD6A65441AE47E19A21E95041F6285CCFD5A65441295C8F8221E9504133333323D6A65441295C8F6223E95041F6285CAFD7A65441EC51B89E23E950417B14AEC7D7A65441713D0AB723E9504133333313D7A65441AE47E1EA25E95041F6285C7FD7A65441AE47E14A26E95041B81E85FBD6A65441295C8F5227E95041B81E85CBD6A65441EC51B81E28E950417B14AE37D7A65441713D0A172AE95041B81E85CBD6A65441295C8FA22BE95041333333F3D5A65441713D0A772DE950417B14AE77D6A65441EC51B8EE2DE950417B14AEC7D7A65441EC51B80E2FE95041333333F3D8A65441EC51B8CE2FE950417B14AE17D9A65441EC51B82E30E95041F6285CCFD8A65441295C8F8230E9504133333323D9A65441AE47E12A31E95041F6285C2FD9A65441295C8FA231E950417B14AE07DAA65441AE47E17A32E950417B14AE37DAA65441713D0A4733E95041B81E85ABDBA65441EC51B89E32E950417B14AEA7DCA65441AE47E13A33E95041F6285C1FDDA65441713D0A7733E950417B14AEF7DDA65441AE47E1FA33E95041333333C3DEA65441AE47E1FA33E95041B81E859BDFA65441AE47E1EA34E950417B14AEF7E3A65441EC51B87E34E95041F6285CBFE5A65441AE47E1BA34E95041F6285C8FE8A65441713D0A0734E95041F6285C4FE9A65441EC51B8BE33E95041B81E857BEAA65441EC51B8FE32E95041F6285CCFEAA65441EC51B80E32E950417B14AE57EAA65441AE47E15A31E95041F6285CDFE9A65441EC51B87E31E95041F6285C7FE9A65441EC51B88E30E95041B81E859BE8A65441AE47E10A30E950417B14AE77E8A65441295C8FB22DE95041F6285C3FE7A65441AE47E13A2DE950417B14AE17E8A65441295C8FC22CE9504133333373ECA65441AE47E12A2EE950417B14AE37ECA65441EC51B81E2EE95041B81E856BEBA65441295C8F022FE950417B14AE17EBA65441295C8F2230E95041F6285CBFEBA65441295C8F7231E95041F6285C1FECA65441AE47E15A31E95041B81E856BEBA65441295C8F3232E95041B81E850BEBA65441295C8F8233E95041B81E858BECA65441295C8F6232E950417B14AEE7EDA65441295C8F6232E95041B81E859BEEA65441713D0AE732E95041B81E852BEFA65441295C8F9232E95041B81E85BBEFA65441713D0A9734E95041F6285C4FEFA65441295C8FD234E9504133333383EEA65441AE47E15A34E950417B14AE17EEA65441EC51B84E34E950417B14AE87EDA65441EC51B83E35E9504133333333EDA65441AE47E19A36E950417B14AE87EDA65441713D0AD736E95041B81E85CBEEA65441AE47E1BA37E950417B14AE57F0A65441AE47E17A38E9504133333373EFA65441AE47E1CA39E950417B14AED7EEA65441713D0A673AE95041333333A3EFA65441713D0A973AE9504133333393F0A65441AE47E13A3CE950417B14AEE7F0A65441713D0A773CE95041B81E856BF1A65441295C8F723DE95041F6285CAFECA65441EC51B88E3CE95041F6285C0FEDA65441295C8F023BE9504133333303EDA65441295C8F423AE950417B14AE37ECA65441EC51B81E3AE95041F6285C5FEBA65441713D0A673AE950417B14AEE7EAA65441EC51B8BE39E950417B14AE27EAA65441AE47E1DA38E95041B81E851BEAA65441AE47E11A38E95041F6285CAFE9A65441AE47E18A37E95041F6285C5FE8A65441713D0AA736E95041B81E85DBE7A65441713D0A2735E95041F6285C0FE7A65441EC51B89E35E950417B14AEF7E0A65441AE47E10A36E95041F6285C5FDFA65441AE47E19A36E95041F6285C9FDEA65441713D0A0737E95041F6285C1FDDA65441713D0A2738E950417B14AED7DCA65441295C8FF238E950417B14AE07DDA65441295C8F8239E950417B14AE07DDA65441295C8F123AE95041F6285C4FDDA65441295C8FD23AE95041F6285C1FDDA65441295C8F323BE9504133333383DCA65441713D0AE73BE9504133333323DCA65441EC51B8FE3BE95041B81E85BBDAA65441EC51B88E3CE9504133333313DAA65441EC51B8FE3BE95041B81E856BD9A65441713D0AE73BE9504133333393D8A65441AE47E1AA3BE950417B14AEC7D7A65441EC51B82E3CE950417B14AE67D7A65441713D0A473CE950417B14AEA7D6A65441AE47E18A3DE950417B14AE57D5A65441713D0A273EE95041B81E85ABD5A65441295C8F923EE950417B14AEC7D4A65441AE47E12A40E950417B14AE67D4A65441AE47E12A40E950417B14AEF7D4A65441EC51B84E40E95041F6285C9FD5A65441EC51B84E40E9504133333383D6A65441713D0A473FE950417B14AEA7D6A65441713D0A473FE95041B81E855BD7A65441EC51B8FE3EE9504133333303D8A65441295C8FB23FE95041B81E857BD8A65441295C8F7240E95041B81E854BD8A65441295C8F3241E95041F6285CAFD7A65441EC51B8FE41E95041B81E858BD7A65441295C8F1243E95041B81E857BD8A65441AE47E1FA42E95041F6285CFFD8A65441EC51B87E43E95041B81E85CBD9A65441713D0A9743E95041B81E858BDAA65441295C8F6244E95041F6285CDFDAA65441295C8F3244E95041333333C3DBA65441AE47E14A47E950417B14AE77DCA65441295C8F5248E95041F6285C5FDCA65441AE47E1CA48E9504133333313DDA65441EC51B83E4AE9504133333373DDA65441713D0A574AE95041B81E852BDDA65441713D0A374CE95041B81E858BDDA65441AE47E1CA4EE950417B14AEC7DDA65441AE47E18A4FE950417B14AE57DEA65441AE47E1BA52E950417B14AE47DFA65441AE47E1EA52E95041B81E850BDFA65441713D0AA754E95041F6285C8FDFA65441AE47E17A56E950417B14AEA7DFA65441EC51B81E58E95041F6285C7FE0A65441AE47E1CA5AE950417B14AE87E1A65441EC51B8CE5BE95041D7A370BDE1A65441713D0A175DE95041F6285CCFE1A65441EC51B87E5EE95041F6285C2FE2A65441AE47E11A62E95041F6285C2FD9A65441295C8F3259E95041B81E853BD6A65441AE47E1EA4FE95041F6285CEFD3A65441EC51B8AE4FE95041333333D3D4A65441295C8FC24DE95041F6285CAFD4A65441AE47E11A4DE95041B81E85FBD3A65441295C8F324DE95041F6285C8FD3A65441713D0AD74BE9504133333323D3A65441295C8F824BE950417B14AED7D3A65441EC51B8CE4AE950417B14AE07D4A65441713D0AF749E9504133333383D3A65441AE47E11A4AE95041333333C3D2A65441EC51B88E45E95041F6285C4FD1A65441AE47E1EA43E95041B81E852BD1A65441AE47E18A40E950417B14AEE7CFA65441713D0AE73EE950417B14AEB7CFA65441333333933EE950413D0AD7D3CEA65441295C8F323EE95041F6285CEFCDA65441713D0AB747E95041B81E850BB5A65441295C8F024AE95041F6285C7FB3A6544109000000EC51B80E3EE950417B14AE77D3A65441713D0AA73CE950417B14AEA7D3A65441295C8F223CE95041B81E856BD3A65441713D0A173CE95041B81E85BBD1A65441713D0AA73CE95041F6285C1FD1A65441295C8F423DE95041B81E852BD1A65441713D0AC73DE95041B81E85BBD1A65441AE47E14A3EE95041F6285CCFD2A65441EC51B80E3EE950417B14AE77D3A6544107000000713D0AB74AE950417B14AE77D6A65441295C8FE24BE95041F6285CCFD5A65441713D0A974CE95041F6285C5FD6A65441AE47E15A4CE95041B81E852BD7A65441AE47E1FA4BE95041F6285CBFD6A65441295C8F224BE95041B81E85CBD6A65441713D0AB74AE950417B14AE77D6A6544111000000EC51B82E48E95041333333A3D7A65441EC51B8BE48E95041B81E85FBD6A65441713D0AD748E9504133333353D6A65441713D0AC749E95041F6285C4FD7A65441AE47E1BA49E95041B81E85EBD7A65441713D0A874AE95041B81E851BD8A65441EC51B8FE4AE95041F6285CDFD7A65441295C8F524BE950417B14AE57D8A65441AE47E1CA4BE950417B14AE57D8A65441713D0A674CE95041333333C3D8A65441AE47E18A4CE95041F6285CEFD9A65441295C8FB24BE95041B81E85BBDAA65441713D0A574AE950417B14AE97DAA65441295C8FA249E95041333333F3D8A65441295C8FA249E95041B81E854BD8A65441EC51B8EE48E950417B14AE57D8A65441EC51B82E48E95041333333A3D7A6544108000000295C8FB254E95041333333E3D9A65441EC51B8EE54E950417B14AE97DAA65441EC51B82E54E95041B81E854BDBA65441EC51B89E53E95041F6285C3FDBA65441AE47E18A52E95041B81E858BDAA65441713D0A9752E950417B14AE37DAA65441EC51B83E53E95041333333B3D9A65441295C8FB254E95041333333E3D9A6544113000000295C8FB224E9504133333373CBA65441EC51B86E23E95041B81E855BCBA65441713D0A8723E950417B14AE97CBA65441EC51B87E22E950417B14AE97CBA65441713D0A7721E95041F6285C0FCCA65441AE47E1EA1FE95041F6285C4FCBA65441EC51B80E20E95041F6285C2FCAA65441EC51B8AE1FE95041F6285CFFC9A65441EC51B8AE1FE9504133333333C9A65441EC51B86E20E95041333333A3C8A65441295C8FB221E950417B14AEC7C8A65441295C8F4222E95041B81E854BC9A65441295C8FD222E950417B14AEE7C9A65441713D0AC722E95041B81E859BCAA65441713D0AB723E95041F6285CBFCAA65441713D0A4724E9504133333393C9A65441295C8F4225E95041F6285C5FCAA65441EC51B84E25E95041F6285CEFCAA65441295C8FB224E9504133333373CBA6544109000000AE47E1AA3EE95041B81E852BC2A65441713D0AA73FE95041B81E85BBC2A65441AE47E1CA3FE950417B14AE57C3A65441713D0A473FE9504133333383C4A65441AE47E1AA3EE9504133333323C4A65441295C8FD23DE950417B14AE17C4A65441AE47E1EA3DE950417B14AE27C3A65441295C8F323EE95041F6285C4FC2A65441AE47E1AA3EE95041B81E852BC2A654410D000000EC51B8AE31E950417B14AED77CA65441713D0AE732E950417B14AEF77AA65441713D0AE732E950417B14AE4779A65441AE47E17A32E950417B14AEE778A65441AE47E13A33E95041F6285C9F78A65441713D0AC734E95041B81E856B79A65441295C8FD234E95041333333D37AA65441295C8F4234E95041F6285C6F7BA65441295C8F4234E95041333333837CA65441713D0A6734E95041B81E855B7DA65441295C8FE233E95041333333D37DA65441EC51B82E33E950417B14AEF77DA65441EC51B8AE31E950417B14AED77CA6544107000000AE47E1EA49E95041B81E85BBADA65441295C8F024AE9504133333353ACA65441295C8F224BE95041F6285CFFABA65441AE47E1FA4BE950417B14AEE7ABA65441295C8F524BE950417B14AE67ADA65441295C8FC24AE950417B14AEC7ADA65441AE47E1EA49E95041B81E85BBADA654410A000000AE47E17A4DE950417B14AEE7AEA65441AE47E1AA4DE950417B14AED7AFA65441713D0AF74CE95041333333A3B0A65441295C8F824BE95041333333A3B0A65441EC51B8CE4AE95041B81E852BB0A65441713D0A874AE95041B81E857BAEA65441EC51B88E4BE95041F6285C6FAEA65441AE47E1BA4CE95041F6285CDFADA65441AE47E1AA4DE950417B14AEF7ADA65441AE47E17A4DE950417B14AEE7AEA6544101030000000B00000038030000666666F6BAE85041666666A6DBA75441F6285CAFB9E850417B14AEE7D9A75441A4703DEAB9E85041CDCCCCECD7A75441713D0AA7BAE850411F85EBD1D6A7544152B81E05BBE85041A4703DFAD4A7544148E17A14BCE8504152B81E75D3A75441A4703D6ABDE8504114AE4701D0A7544166666606BFE85041D7A3702DCFA7544100000080C0E85041AE47E1DACEA754413D0AD733C2E85041B81E85EBCCA754411F85EB91C6E8504185EB51F8BEA75441D7A3705DCBE85041E17A140EB0A75441000000D0CAE85041000000B0AFA75441F6285C3FC9E8504152B81E75AFA75441F6285C7FC7E8504148E17AC4AEA754413D0AD7B3C5E85041E17A146EADA75441CDCCCC8CC4E850415C8FC2A5ACA754413D0AD733C2E85041D7A370DDABA75441C3F5283CC1E85041EC51B8CEAAA75441E17A14FEBFE85041C3F5287CAAA75441333333E3BEE85041E17A143EA9A7544114AE4741BFE85041CDCCCC8CA8A75441F6285CBFC1E85041295C8F32A9A75441CDCCCC1CC2E850413D0AD703A8A75441295C8F42CAE85041E17A146E9BA754417B14AE07CAE850418FC2F5C89AA7544114AE4771CAE85041000000309AA7544166666616CBE85041AE47E18A99A754419A999939CBE8504148E17A6498A75441333333D3CBE8504185EB517897A754410AD7A3A0CAE850419A99996996A7544185EB51B8CAE8504148E17AC495A754418FC2F568CBE85041C3F528FC94A75441713D0AA7CCE8504114AE472192A75441A4703DAACDE85041B81E85AB91A7544114AE47D1CEE8504152B81E8590A75441A4703D6ACFE850415C8FC2758FA75441AE47E16AD1E85041E17A141E8EA75441AE47E10AD2E8504185EB51488CA75441AE47E16AD4E8504185EB512888A75441F6285CBFD5E850418FC2F54887A75441713D0AA7D6E850413D0AD72387A75441E17A145ED6E85041EC51B89E86A75441B81E85EBD6E85041713D0AF784A75441EC51B80ED7E85041333333F383A7544152B81E35D8E850411F85EB5184A754410AD7A370D8E850415C8FC22585A75441EC51B8AED9E85041E17A140E85A75441EC51B88EDAE850415C8FC20586A754411F85EB71DAE850418FC2F5E886A754411F85EBC1DBE85041A4703D2A86A754415C8FC285DDE85041295C8F6284A75441AE47E10ADDE85041D7A3705D84A7544152B81E95DCE85041C3F528FC82A7544133333313DCE85041CDCCCCEC81A75441A4703D7ADBE85041E17A14FE7FA7544148E17A04DBE850410AD7A3707FA75441666666C6D9E85041D7A3706D7EA754413D0AD793D8E85041333333237DA75441CDCCCC2CD9E85041D7A370AD7CA754411F85EBF1D8E85041D7A370CD7BA75441666666E6D8E85041B81E854B7BA754417B14AE87D8E85041F6285C8F7AA75441D7A370BDDAE850417B14AE377CA75441AE47E14ADBE85041333333437CA754410AD7A3C0DBE85041A4703D8A7CA75441CDCCCCCCDBE850415C8FC2757DA754411F85EB91DBE85041B81E85EB7DA75441F6285C1FDCE850410AD7A3907EA754419A999989DCE85041A4703DDA7FA7544185EB5178DEE850415C8FC21580A754410AD7A340DFE85041F6285C7F80A7544114AE47F1DFE850410AD7A3707FA75441295C8FC2DFE85041F6285CBF7EA75441C3F5282CE0E85041D7A3706D7EA75441E17A14AEE0E850419A9999697DA75441713D0A67E0E850410AD7A3F07BA75441AE47E1AADFE850418FC2F5F87AA754417B14AE87DFE850411F85EB017AA75441666666B6DFE850419A99993979A754411F85EB81E1E85041000000C077A754415C8FC2A5E1E8504148E17AD476A7544185EB51F8E1E850413333335376A754415C8FC2A5E1E850415C8FC2C575A75441CDCCCC9CE2E850416666669675A75441EC51B81EE3E850418FC2F5E875A75441295C8FF2E3E85041E17A148E76A7544148E17A74E4E850419A99999976A754411F85EB01E5E85041B81E853B76A75441A4703DCAE5E85041A4703D8A75A7544148E17A34E6E85041713D0A8774A75441333333A3EBE85041AE47E14A70A75441B81E856BECE850410000001070A75441713D0A57EDE85041295C8F6270A7544148E17AE4EDE85041000000D071A754411F85EB71EEE8504185EB519872A75441000000B0EFE85041000000D071A75441C3F528BCEFE850410AD7A3C070A75441A4703D1AF0E850417B14AE2770A75441B81E855BF2E85041CDCCCC0C6FA75441B81E853BF3E850417B14AE676EA754415C8FC2A5F3E85041CDCCCC4C6DA754413D0AD723F3E850411F85EB316CA7544100000030F3E8504185EB51E86AA754415C8FC2A5F3E850415C8FC2B569A75441D7A3709DF4E85041EC51B88E68A7544185EB51D8F4E850418FC2F51868A75441333333F3F5E8504185EB516867A754417B14AE77F7E850411F85EB2167A7544114AE47F1F8E85041EC51B85E64A75441EC51B89EF8E85041EC51B87E63A75441C3F5284CF8E850413D0AD72364A754418FC2F528F8E8504148E17AD464A75441EC51B8BEF7E85041E17A143E65A754410AD7A380F6E85041C3F528EC64A754415C8FC245F6E8504148E17AF463A7544185EB5198F6E85041EC51B87E63A75441666666F6F6E850417B14AE5762A75441333333D3F6E85041713D0AA761A754410AD7A380F6E85041E17A14EE61A75441EC51B8FEF5E85041333333B361A754411F85EB41F5E85041B81E859B61A75441B81E85FBF4E85041CDCCCC1C62A7544166666656F4E85041CDCCCC3C61A754418FC2F5A8F4E850419A99993960A754413D0AD7C3F5E850416666661660A7544114AE4751F6E850415C8FC2A55DA754413D0AD783F7E850418FC2F5A85EA7544114AE4711F8E8504114AE47915EA75441EC51B89EF8E85041D7A3707D5FA75441C3F5280CFAE850418FC2F5E85CA75441C3F5280CFAE85041000000505CA75441C3F528ECFAE850415C8FC2C55CA75441000000E0FAE850415C8FC2E55BA7544114AE47D1F9E85041713D0AD75AA75441A4703D8AF9E8504152B81E555AA75441A4703D8AF9E8504148E17AA459A75441713D0A87F8E85041713D0AF759A75441C3F5284CF8E8504185EB519859A754417B14AE77F7E850411F85EB115BA7544114AE4731F7E85041A4703D1A5AA7544185EB5198F6E85041333333B35AA7544166666656F4E85041B81E852B58A7544133333333F4E850411F85EB9157A75441E17A146EF4E85041EC51B86E57A7544133333353F3E85041C3F5283C56A7544100000030F3E85041333333A355A7544133333373F2E850410AD7A35055A754417B14AE47F3E850418FC2F55854A754415C8FC2A5F3E85041713D0AB754A754415C8FC285F4E85041EC51B8EE53A75441713D0AE7F5E850417B14AED753A75441E17A142EF6E85041295C8F1254A75441A4703DEAF6E85041AE47E1FA53A75441AE47E10AF6E8504152B81E8553A7544148E17A14F9E850410AD7A3B052A754417B14AE17FAE85041E17A143E53A75441713D0A87F8E850411F85EBA151A75441AE47E13AFAE85041D7A370AD51A75441AE47E13AFAE850415C8FC2B550A75441D7A370ADF9E85041A4703DAA50A75441CDCCCCFCF8E850419A9999F94FA754413D0AD783F7E85041000000604FA75441EC51B8DEF6E85041713D0AC74EA754413D0AD7A3F6E85041295C8FD24EA7544185EB5198F6E8504185EB51484FA75441D7A370BDF3E85041D7A3700D4FA754415C8FC2A5F3E85041CDCCCC5C4EA75441C3F528ECF3E850417B14AEB74DA7544152B81ED5F3E850418FC2F5C84BA7544114AE47D1F2E850419A9999994BA75441E17A14CEF1E85041333333734AA75441713D0AF7EFE85041AE47E1AA49A7544114AE4781EFE850410AD7A34049A754415C8FC245EFE85041E17A140E48A75441713D0AF7EFE85041333333D347A75441A4703DFAF0E85041D7A3707D46A754419A999969EFE85041D7A3709D45A754417B14AEC7EFE85041713D0A7744A7544148E17AA4EFE85041666666C643A75441713D0AF7EFE8504152B81E1543A75441E17A14EEF0E85041CDCCCC4C42A75441E17A14CEF1E850417B14AE8742A75441295C8FA2F2E8504114AE472143A754410AD7A300F3E85041F6285C5F44A75441F6285C7FF2E85041A4703D7A45A75441D7A370BDF3E85041E17A140E48A75441000000F0F4E85041B81E859B48A754413D0AD7A3F6E85041B81E859B48A754410AD7A360F7E8504152B81E3549A75441295C8FB2F7E85041D7A370FD49A75441C3F5286CF7E85041666666964AA754417B14AE77F7E85041713D0A274CA75441713D0AA7F7E85041666666364DA7544152B81EC5F9E850419A9999594DA75441EC51B85EFAE85041F6285CEF4CA7544133333303FBE850411F85EB414DA75441E17A141EFCE850413D0AD7E34CA7544185EB5188FCE85041B81E85FB4CA754410AD7A390FBE850419A9999394EA75441A4703D6AFAE8504152B81E454EA75441D7A3708DFAE850413D0AD7A34EA7544166666606FCE85041F6285CAF4EA75441AE47E1FAFBE850411F85EB014FA7544185EB51A8FBE85041000000604FA754413D0AD793FCE85041AE47E19A4FA7544100000080FDE850419A9999194FA75441D7A370EDFEE850419A9999194FA7544100000040FFE85041F6285C8F4FA754416666666600E95041CDCCCCFC50A75441F6285C1F00E950418FC2F5B851A7544185EB510800E950413333330353A75441C3F528DC00E95041295C8F1254A754411F85EB5101E95041C3F5283C56A75441E17A143E02E9504114AE47E156A754416666660603E95041B81E856B56A754415C8FC2E503E95041F6285C5F56A754415C8FC2E503E95041EC51B8AE55A75441A4703DFA02E95041CDCCCC0C56A75441EC51B8EE02E950418FC2F57853A754416666662602E95041B81E85EB52A75441713D0AD702E95041CDCCCCFC50A7544148E17A4404E9504114AE471150A754417B14AE4705E9504185EB512850A75441AE47E12A07E95041B81E852B51A754415C8FC26507E95041B81E850B52A75441EC51B8FE07E9504185EB51E851A754419A99991909E950411F85EB8152A75441713D0AA709E9504185EB51A853A75441AE47E1FA0DE95041CDCCCC3C4FA75441B81E851B0DE95041C3F5286C4FA75441C3F528EC0CE95041D7A3700D4FA75441A4703D4A0DE950411F85EB414DA75441666666760CE950410AD7A3C04CA75441E17A14CE0AE950418FC2F5884DA754411F85EBE109E95041EC51B81E4DA7544185EB517809E95041E17A146E4CA754410AD7A38008E950413D0AD7034CA75441333333F307E95041000000304BA75441000000D007E95041666666964AA754416666661608E95041AE47E1AA49A7544114AE477107E950413333339349A754413333331307E9504114AE471149A7544148E17A2405E9504152B81E3549A75441A4703DBA04E950417B14AEA748A75441CDCCCC2C04E950410000009048A75441C3F5287C03E950417B14AEC747A75441F6285CBF02E95041B81E85BB47A7544152B81E3503E950411F85EB5147A75441D7A3701D03E950417B14AEE746A75441C3F5289C02E95041000000D046A75441A4703D3A01E950411F85EB9145A7544114AE47A100E9504152B81EB545A75441F6285C1F00E9504148E17A0445A75441AE47E15A00E950417B14AE4744A754410AD7A3F0FFE850417B14AE8742A754419A9999A9FFE85041713D0AF740A7544148E17AE4FFE85041295C8F5240A7544185EB5128FFE850417B14AE373FA75441F6285C1F00E95041F6285C8F3DA754410AD7A3F0FFE8504152B81E253DA754413D0AD71300E95041A4703D0A3CA754411F85EB7100E9504114AE47713BA75441F6285CDF01E9504152B81E653BA754418FC2F55803E950411F85EB213CA75441AE47E1AA03E9504152B81E253DA75441CDCCCC2C04E95041F6285CAF3CA75441B81E851B06E95041E17A14DE3CA754413D0AD7E306E95041D7A370CD3EA75441CDCCCCAC07E950410AD7A3F03EA75441AE47E10A08E9504114AE47A13FA754419A99991909E950417B14AE373FA75441295C8F0209E950410AD7A3D03FA75441F6285C6F0AE950419A99996940A754413D0AD7630AE950413333330341A754410AD7A3200BE950411F85EB3141A7544148E17A140BE950418FC2F57841A754411F85EBA10BE9504114AE474142A754411F85EB810CE9504114AE474142A754413D0AD7030DE95041666666E642A75441333333C30EE9504148E17A4443A7544185EB51680FE95041666666A644A75441F6285C8F10E9504114AE47C145A754417B14AE7710E95041295C8F2247A7544114AE47A112E95041666666F647A75441295C8F5213E950417B14AEC747A754413D0AD79315E95041295C8F4246A75441F6285C7F16E95041C3F5285C43A75441CDCCCC2C16E95041E17A14FE42A754411F85EBD116E950417B14AE8742A75441C3F5283C17E95041AE47E11A41A75441CDCCCC0C17E9504114AE478140A75441F6285C5F17E9504152B81EC53FA754417B14AE6716E950413D0AD7133FA75441E17A14DE16E950415C8FC2F53CA75441295C8FA216E95041000000803CA7544148E17A6415E95041713D0A073BA75441B81E85AB15E95041AE47E11A3AA754416666660615E95041CDCCCCDC38A754418FC2F55815E950413D0AD74338A754415C8FC29512E95041D7A3703D36A75441CDCCCCFC11E950419A99991936A75441AE47E17A11E9504148E17A5436A75441E17A14BE10E9504152B81E7535A7544148E17A740FE9504152B81E9534A7544148E17A940EE950411F85EBB132A7544152B81EA50CE95041A4703D9A32A754413D0AD7230CE95041B81E853B32A754413D0AD7430BE9504185EB511832A75441333333930AE95041A4703DDA30A75441CDCCCCFC0AE950419A99992930A75441713D0AA709E95041C3F5289C2FA75441B81E85DB07E950410000005031A754410AD7A3C006E9504148E17A4431A75441D7A3709D06E950419A9999E931A754417B14AE4705E950417B14AE4732A754413333335305E95041E17A148E32A754419A99990904E9504152B81ED532A754410000007003E95041D7A370DD31A75441E17A143E02E950415C8FC2C531A754416666664601E95041AE47E18A31A75441F6285CFF00E9504148E17A6430A754411F85EB3102E95041EC51B80E2FA754415C8FC2A505E95041CDCCCC4C30A75441295C8F6206E95041AE47E1AA30A754417B14AE0707E950410000007030A7544152B81E9507E95041C3F5289C2FA75441AE47E1EA08E95041E17A143E2FA75441AE47E1CA09E95041F6285CDF2EA75441EC51B89E0AE95041B81E850B2EA75441A4703D8A0BE950410AD7A3D02DA75441B81E853B0CE950410AD7A3102CA7544114AE47B10CE950415C8FC2B52CA7544152B81E650EE950419A9999A92CA754415C8FC2350EE95041EC51B88E2BA754411F85EB0110E950417B14AEB729A75441EC51B8FE0EE950410AD7A37029A75441000000800FE95041000000C028A754413D0AD77316E95041333333E328A754417B14AE0719E95041B81E858B2AA75441E17A142E1AE9504185EB51682AA75441D7A3705D1AE950415C8FC2152AA75441F6285CDF1AE9504114AE47212AA754417B14AEA71BE950419A9999E92AA7544185EB51581CE95041D7A3700D2BA75441B81E855B1DE950410AD7A3102CA75441295C8FA21DE9504185EB51682AA75441333333531EE95041A4703D0A2AA75441295C8FF220E95041666666C62AA75441E17A142E21E95041295C8FB22BA75441C3F5288C21E9504148E17A042CA75441F6285C6F23E95041B81E854B2CA75441A4703DAA23E9504185EB51082DA754411F85EBA124E95041C3F528FC2CA754411F85EBA124E9504185EB51282CA75441E17A143E26E95041E17A14FE29A75441AE47E1FA26E95041F6285CCF29A75441666666E627E95041E17A141E29A75441000000A027E95041F6285C0F28A75441000000A027E950411F85EBC125A754411F85EB8125E95041AE47E15A26A7544148E17AF424E95041D7A370AD26A7544148E17A1424E950419A9999D925A75441713D0AA722E95041A4703DAA25A75441F6285C8F22E9504148E17A7423A7544114AE473122E95041333333F322A754417B14AE9721E95041333333F322A7544148E17A7421E950419A99991924A7544114AE477120E95041666666B625A75441713D0A271FE950410000002026A75441713D0A271FE9504152B81EC526A75441AE47E16A1EE95041CDCCCCDC26A75441AE47E18A1DE95041C3F5282C26A754415C8FC2E51CE95041E17A14EE24A7544114AE47F11CE95041F6285CAF23A754410AD7A3001EE950418FC2F5A821A75441713D0A671DE95041EC51B83E21A754417B14AE871CE95041B81E85DB22A75441CDCCCC6C1BE950410AD7A38023A75441333333D31AE950415C8FC24523A75441F6285C5F17E95041C3F5288C23A754419A9999E916E95041A4703D0A23A75441666666E615E95041333333F322A754418FC2F57814E9504148E17A9422A75441B81E850B13E9504114AE477122A7544152B81EC512E95041713D0A0722A75441295C8F9211E95041C3F528CC21A7544152B81E2510E950418FC2F5C820A75441C3F528CC0DE95041EC51B83E21A7544152B81EA50CE95041B81E851B21A754411F85EB810CE950415C8FC28521A75441B81E855B0BE950419A99997921A75441CDCCCCDC0BE950415C8FC2A520A75441CDCCCCDC0BE9504152B81EF51FA754413D0AD7430BE95041CDCCCC2C1FA7544148E17A140BE95041AE47E1EA1CA754417B14AE2706E950417B14AE671FA75441F6285C3F06E95041D7A370DD1FA7544148E17A4404E950410000003020A7544185EB513804E9504114AE477122A75441F6285C9F03E95041713D0AC723A754419A99994902E95041B81E859B24A754417B14AEC701E95041C3F5284C25A75441EC51B82E01E95041F6285C2F27A754413333334300E95041713D0A2728A75441F6285C1F00E95041F6285CEF28A75441D7A370CDFFE85041A4703D2A29A754415C8FC2D5FEE85041D7A3702D2AA75441EC51B88EFEE85041000000602BA75441AE47E1BAFDE850419A9999C92BA75441666666E6FCE85041713D0A772BA75441F6285CEFFBE85041666666A62BA75441B81E857BF8E85041713D0AD72FA75441666666D6F7E85041A4703DDA30A75441C3F528CCF4E85041E17A147E2DA75441C3F528ACF5E8504185EB51282CA75441295C8FB2F7E850410AD7A37029A75441A4703DCAF7E8504185EB51C827A75441C3F5284CF8E85041F6285C2F27A75441F6285C4FF9E85041A4703DCA24A75441A4703D8AF9E850416666661623A754410AD7A390FBE8504152B81E351EA754415C8FC235FCE85041000000B01CA754417B14AE97FDE85041666666861AA75441EC51B8AEFDE85041F6285C5F19A75441D7A370EDFEE85041D7A3708D15A754410AD7A310FFE850413D0AD7C313A75441E17A14BEFEE85041295C8FB212A75441AE47E17AFFE8504114AE475111A754416666666600E950418FC2F5C80EA754413D0AD7F300E95041000000D009A7544152B81E7501E9504152B81EF506A754410AD7A3B001E95041E17A14FE05A754411F85EB3102E950411F85EB1105A75441295C8F0202E95041AE47E15A02A75441B81E85CB02E95041295C8F9201A75441E17A146E02E9504148E17A5400A75441B81E85CB02E9504185EB5168FFA654413D0AD7B302E950413D0AD743FBA654416666662602E95041EC51B89EFAA654418FC2F57802E95041713D0AA7F9A65441CDCCCC6C02E950415C8FC245F8A65441713D0AF701E95041B81E85FBF6A65441EC51B80E02E95041E17A148EF5A65441D7A370CDFFE85041B81E853BF5A65441CDCCCC8C01E950417B14AE07F7A654413333332301E950418FC2F568F8A65441713D0A1701E950419A9999F9F9A6544152B81E7501E95041713D0A67FBA65441F6285CFF00E9504152B81EA5FCA65441AE47E15A00E950415C8FC2B501A75441AE47E15A00E95041713D0A1703A7544185EB510800E950419A99994904A75441C3F528FCFFE85041A4703DDA05A7544185EB5128FFE8504185EB511807A75441B81E856BFEE85041F6285CDF0AA7544114AE4701FEE850415C8FC2050CA754415C8FC2F5FDE85041713D0A870CA7544152B81E25FEE85041295C8FC20CA7544185EB5148FEE8504114AE47D10DA75441333333E3FBE8504148E17A7411A75441AE47E15AF9E8504185EB516818A75441E17A14EEF7E85041A4703D3A1CA754418FC2F548F7E85041D7A3703D1DA7544133333313F5E85041713D0AE722A7544185EB51F8F3E85041666666F623A75441B81E853BF3E85041F6285C2F27A75441A4703DDAF1E850410AD7A3302BA75441CDCCCC8CEFE85041D7A3701D30A754419A999989EEE8504152B81E1531A7544152B81EB5EDE8504148E17A2432A7544114AE4701ECE850413D0AD7A335A754415C8FC215EBE850415C8FC20537A754419A999909EBE85041A4703DAA37A754410AD7A330ECE850410000009036A7544114AE47E1ECE8504114AE475135A75441F6285CBFF0E8504152B81ED532A75441295C8FC2F1E850411F85EBD131A75441713D0A67F2E8504148E17A6430A75441295C8F82F3E8504148E17A842FA75441F6285C8FF7E85041AE47E18A31A75441713D0A07F5E85041333333F334A75441E17A14CEF1E85041713D0A6738A75441E17A149EEDE850417B14AE573EA754413D0AD733EDE85041295C8F923EA75441C3F5283CECE85041D7A370AD3FA754417B14AE27EDE850418FC2F59840A754417B14AE27EDE8504114AE476141A75441EC51B88EECE850410AD7A37042A75441D7A3702DEBE85041333333E341A75441E17A14FEEAE850419A99992942A754415C8FC215EBE85041D7A370BD44A75441333333A3EBE850413D0AD73345A754413D0AD773EBE85041295C8F4246A754413D0AD793EAE8504185EB51B846A7544166666626E9E85041B81E85DB46A7544185EB51C8E8E85041AE47E10A47A754417B14AE17E8E8504152B81E9546A75441F6285C4FE7E8504152B81E7547A75441CDCCCC3CE5E85041C3F5280C4BA75441713D0AA7E5E85041CDCCCCBC4BA754411F85EBE1E5E850417B14AED74CA754418FC2F5B8E7E8504148E17AD44BA75441AE47E11AE9E8504114AE47B14BA75441295C8F32E9E8504148E17AB44CA7544166666646E8E85041AE47E1BA4EA754417B14AE37E7E85041666666F64EA75441A4703DAAE6E8504114AE47514EA75441D7A370EDE5E85041713D0AE74DA754413D0AD7C3E3E8504114AE47314FA754413D0AD7E3E2E850413D0AD7834FA7544166666656E2E8504114AE47314FA75441F6285C2FE1E85041A4703DCA4FA75441E17A14EEDEE8504148E17AF451A754413D0AD783DEE85041AE47E11A53A754419A999989DCE85041B81E858B55A75441713D0A77DAE850418FC2F5D857A7544148E17A44D9E850418FC2F5B858A754413D0AD7F3D5E85041A4703DBA5CA75441713D0AE7D1E850419A99991961A75441000000C0D0E85041B81E857B62A75441A4703D5ACAE850410AD7A33068A75441C3F5287CC6E85041EC51B84E6AA75441EC51B82EC4E850419A9999496CA7544148E17A04C2E85041CDCCCC0C6FA75441D7A3700DC1E850410000001070A754411F85EB61BEE85041AE47E1CA73A754415C8FC275BDE8504185EB513875A7544114AE4751B9E85041E17A14BE7AA75441B81E85FBB7E8504185EB51287BA7544114AE4791B7E850411F85EBC17BA7544133333333B7E850417B14AE577BA754413D0AD7E3B7E85041333333837AA7544166666636B8E8504114AE477178A75441713D0AA7BAE85041295C8F3277A7544114AE47F1BBE850413D0AD74375A754419A9999B9BCE85041295C8F0273A7544185EB5188BFE850417B14AE2770A754410AD7A370BFE85041AE47E18A6EA754418FC2F538C0E850418FC2F5786CA754410AD7A330C1E85041666666466BA754411F85EB91C2E85041C3F528DC6AA75441C3F528DCC3E85041E17A149E69A75441B81E85EBC4E850413D0AD73369A75441333333B3C5E850418FC2F57868A75441713D0AB7C6E85041EC51B8AE67A75441713D0A97C7E850410AD7A35067A7544100000030C8E85041713D0A0766A754417B14AE07CAE85041F6285C2F64A75441E17A140ECCE85041F6285C4F63A754411F85EB81CFE85041333333F35FA7544148E17A94D1E85041000000F05EA754417B14AE97D2E850410AD7A3C05EA75441AE47E17AD4E850418FC2F5C85DA754415C8FC275D6E85041C3F5289C5AA75441C3F528BCD6E85041000000D058A7544114AE4761D7E85041C3F528FC57A7544100000050D9E85041EC51B88E56A754413D0AD773D9E85041333333C354A754413D0AD783DEE850413D0AD7C34DA7544114AE4711DFE85041A4703D4A4CA7544100000070DFE8504148E17AF44AA7544133333373E0E850419A9999D949A75441F6285CEFE2E85041F6285C1F46A75441D7A3702DE4E85041713D0A5745A75441713D0AC7E4E8504152B81EF543A75441CDCCCC7CE3E85041CDCCCC4C42A7544114AE4771E3E85041333333E341A754415C8FC2D5E2E85041EC51B87E41A7544133333393DFE850410AD7A3A03FA754410AD7A350D9E850417B14AE074AA75441CDCCCC1CD4E850410000002051A7544152B81E25D3E85041E17A143E53A754417B14AE77D3E85041B81E85AB54A7544185EB5148D3E85041F6285C5F56A75441E17A14DED2E850416666668657A75441CDCCCC5CD2E850417B14AE0758A754411F85EB41D1E850413D0AD7D359A7544148E17AD4CFE85041333333935BA75441A4703D8ACEE85041E17A14AE5CA75441E17A14EECCE8504152B81EB55EA75441EC51B8BECCE85041E17A144E5FA75441295C8F42CAE85041333333B361A754410AD7A3E0C8E85041666666B662A75441C3F5287CC6E850415C8FC25565A754413D0AD7D3C4E850413D0AD77367A754418FC2F5B8C3E850417B14AE7768A75441B81E854BC2E85041AE47E17A69A75441D7A3702DC0E8504114AE47816BA754410AD7A370BFE85041000000706DA75441EC51B87EBCE85041A4703D7A70A7544100000040BBE85041AE47E10A72A75441E17A140EBAE85041EC51B8DE72A7544100000010B7E850410AD7A3E076A75441295C8F82B6E850417B14AED777A75441295C8F82B4E850416666662678A75441A4703D1AB3E850419A9999197AA75441333333D3B2E8504148E17A347BA7544100000090B3E850415C8FC2B57BA75441000000B0B2E85041AE47E13A7DA75441C3F528BCB2E85041295C8F327EA7544114AE47F1B4E85041C3F5287C7FA7544152B81EF5B5E85041CDCCCC4C7FA7544185EB5118B6E85041713D0AB77FA754415C8FC205B4E850413D0AD73382A754415C8FC2E5B4E85041C3F528FC82A75441E17A14AEB5E850415C8FC26583A7544166666656B7E850415C8FC26583A7544166666636B8E85041F6285C1F83A75441E17A140EBAE85041333333F383A75441A4703DEAB9E85041713D0AF784A754417B14AE77BAE8504185EB515886A75441CDCCCCFCBBE850413333335388A75441EC51B87EBCE8504114AE47B188A754410AD7A3D0BCE85041C3F528CC89A754410AD7A3D0BCE8504148E17A948AA75441295C8F72BCE85041713D0AE78AA75441F6285CAFB9E85041A4703D2A8AA754415C8FC245B9E85041E17A146E89A75441E17A144EB8E8504148E17AD488A75441AE47E14AB7E85041713D0A2789A75441AE47E16AB6E85041EC51B85E88A7544166666676B6E85041C3F5282C87A75441D7A370DDB5E850417B14AE8786A7544166666676B6E8504148E17A8485A7544152B81E15B5E85041000000B084A754417B14AEA7B3E850417B14AEC784A75441CDCCCC8CB2E850410AD7A36085A7544148E17AC4B1E85041295C8F0285A7544166666666B1E850410AD7A38084A7544114AE47A1B1E8504148E17AC483A754417B14AEC7B2E850413D0AD71383A75441C3F528BCB2E850411F85EB9182A754415C8FC225B3E85041AE47E14A82A75441CDCCCC6CB3E85041B81E856B81A75441C3F528DCB1E850413D0AD73382A75441713D0A57B0E85041295C8F6282A75441C3F5283CAFE85041295C8F4283A75441F6285C7FAEE8504152B81EB582A754415C8FC2F5AEE85041B81E856B81A7544148E17A04B0E85041CDCCCC0C81A75441A4703D3AB2E85041B81E85AB7FA754417B14AEE7B1E85041333333E37EA7544148E17AE4B0E8504148E17A847EA7544114AE47E1AFE85041713D0AD77EA75441295C8F12AFE85041A4703DBA7FA754417B14AEF7ABE8504148E17AE482A75441D7A3706DACE85041F6285C1F83A75441D7A3708DABE85041295C8F2284A75441EC51B82EABE85041713D0AF784A75441A4703D8AAAE8504148E17A8485A7544166666666AAE850417B14AE8786A75441295C8F92A9E85041EC51B87E87A75441AE47E19AA8E85041B81E853B88A7544152B81E45A7E850411F85EB6189A75441EC51B85EA4E85041C3F5284C8DA7544185EB5118A4E85041713D0A678EA7544133333373A3E85041E17A145E8FA754413D0AD763A2E85041C3F5287C91A7544114AE47F1A2E85041333333A392A75441B81E859BA1E85041CDCCCCCC94A7544185EB5198A0E85041F6285CFF95A75441000000D09FE850416666664696A75441AE47E10AA0E850410000009097A7544152B81E959FE85041A4703DFA97A75441CDCCCCCC9EE850419A99992998A754417B14AE279EE850415C8FC2E598A75441CDCCCCEC9DE8504152B81EF599A75441C3F5283C9DE85041AE47E16A9AA754417B14AE479DE850418FC2F5C89AA75441EC51B8CE9BE850413D0AD7039BA75441295C8FE29AE850419A9999599CA75441295C8FE29AE850411F85EBE19EA75441E17A143E9AE85041F6285C4FA0A754411F85EB319AE8504100000000A1A754410AD7A3D098E85041295C8FF2A3A75441B81E854B97E850418FC2F598A8A75441AE47E19A96E85041E17A143EA9A75441B81E858B95E85041A4703DBAABA754411F85EB2195E8504148E17A24ACA754417B14AED793E85041E17A144EAEA75441A4703D2A94E85041B81E85DBAEA75441295C8F1294E85041B81E859BB0A7544148E17AB493E850418FC2F528B1A754413D0AD72392E850419A9999B9B2A75441EC51B85E92E85041CDCCCCBCB3A754418FC2F5E891E8504148E17AB4B4A75441E17A140E8FE85041713D0AC7B6A75441B81E859B8FE850410AD7A330B7A7544114AE471190E850419A999919B7A754419A9999598DE85041B81E85EBBAA75441B81E854B89E85041C3F528ACC4A754418FC2F5B886E85041295C8F72CBA75441F6285CDF87E8504185EB51A8CDA754418FC2F5F884E850419A9999E9CFA754418FC2F51884E85041A4703D5AD2A7544152B81E9586E850413D0AD713D2A754411F85EB5187E85041C3F528DCD2A754413D0AD7F386E85041C3F528BCD3A75441C3F5282C8BE85041EC51B89ED4A75441F6285C5F8BE8504166666606D5A75441295C8FA28AE85041333333B3DBA75441AE47E16A8BE85041B81E859BDBA754415C8FC2C58AE85041D7A3706DDFA7544114AE47718DE850411F85EB41E0A75441A4703D8A91E850415C8FC215E1A75441D7A3704D94E85041B81E859BDBA754410000008095E8504148E17A54DBA754410000006096E850418FC2F548DBA75441D7A370ED96E8504148E17A34DCA754410AD7A33096E850419A999989E4A75441666666A696E85041D7A3708DE5A7544152B81E2596E850418FC2F598E5A75441333333A395E850411F85EB51E5A7544152B81E4595E85041E17A141EE7A75441D7A3704D94E8504100000010EAA7544152B81E6594E85041295C8F42EBA75441F6285C0F93E850410AD7A340EEA75441713D0A4792E8504133333393EEA754411F85EBA191E8504166666696EFA75441B81E857B90E85041AE47E16AF0A754413D0AD7838FE85041AE47E16AF0A75441713D0AC78EE85041CDCCCC9CF1A754411F85EBE18FE85041713D0A07F2A754411F85EBE18FE850413D0AD7C3F2A7544148E17A548FE85041AE47E1BAF3A75441EC51B8DE8EE85041D7A370EDF4A75441EC51B8DE8EE85041A4703D8AF6A754413D0AD7E38CE85041000000A0F9A75441D7A3709D8CE8504114AE4701FBA75441E17A14AE8AE85041AE47E1EAFEA75441295C8F628CE850411F85EB1100A85441666666168EE850410000005001A8544148E17A248BE850411F85EB1100A85441AE47E18A8AE8504185EB515800A854417B14AE678AE85041AE47E14A03A8544185EB515889E85041B81E85FB03A854411F85EB3188E85041B81E859B06A85441C3F528BC87E85041A4703DAA07A85441B81E850B87E85041CDCCCC9C0AA854419A99998986E850417B14AEB70BA8544114AE47C185E85041CDCCCC8C10A854415C8FC2D584E850415C8FC26516A854411F85EBB184E8504185EB517818A854418FC2F51884E85041E17A14AE1AA85441AE47E1BA83E850418FC2F5F81FA854411F85EBD183E85041D7A3706D23A8544114AE470184E8504114AE472125A85441EC51B8AE83E850419A9999E925A8544148E17AC486E850411F85EB312AA854418FC2F51884E850410AD7A3C02EA85441C3F5283C84E85041295C8FF22FA85441CDCCCCCC85E850411F85EB2130A85441EC51B84E86E85041C3F5288C30A85441EC51B84E86E8504114AE473131A85441EC51B86E85E850419A9999F931A854410AD7A31085E85041713D0A6733A854418FC2F51884E85041CDCCCCDC33A85441EC51B88E84E8504114AE470138A854419A9999E983E85041F6285C3F39A85441B81E85AB82E8504114AE47A13AA85441C3F5285C83E85041F6285CFF3AA85441295C8F0287E85041713D0A473AA85441D7A3701D89E85041D7A3703D3CA854410000009088E85041C3F5289C3CA854416666662688E8504152B81E353DA8544148E17A8488E85041CDCCCC2C3EA854411F85EB3188E85041295C8F4241A85441295C8F2287E850418FC2F56842A854419A9999898AE8504152B81E8546A854415C8FC2858CE85041713D0A0748A85441C3F528AC8DE850415C8FC23548A85441000000D08DE85041000000C047A8544148E17A3490E85041C3F528CC47A854417B14AE3791E85041666666E648A854411F85EB8192E850413D0AD77349A85441EC51B85E92E850410AD7A37048A85441CDCCCC9C93E8504152B81EA546A85441CDCCCC9C93E850417B14AE1746A85441295C8F7291E85041C3F5282C45A85441CDCCCCFC90E8504114AE471144A854411F85EB6190E85041000000D043A85441B81E85FB8EE85041CDCCCCDC3EA8544185EB51788FE85041D7A3701D3DA85441B81E859B8FE85041295C8F223BA854415C8FC20590E85041B81E852B3AA854415C8FC2258FE85041A4703D5A3AA8544114AE47518EE8504114AE47C139A85441EC51B8DE8EE850410AD7A31039A85441B81E85BB8EE8504185EB518836A854410AD7A3608FE85041333333E335A85441EC51B89E90E85041B81E85AB36A85441C3F5282C91E85041333333E335A8544148E17AD492E85041AE47E11A35A85441EC51B83E93E85041E17A143E35A854416666669693E8504152B81EA534A85441D7A370ED94E850419A99997932A854413D0AD71398E85041B81E859B2AA85441713D0A3798E85041A4703D3A29A85441B81E854B97E850418FC2F5F826A854417B14AE9795E85041EC51B8CE24A8544114AE47E196E85041B81E850B22A85441B81E852B98E85041713D0AF722A85441713D0AF799E8504148E17A8423A85441EC51B8CE9BE850416666664622A8544185EB51789FE85041A4703D5A18A85441B81E855BA7E850413D0AD7B307A8544152B81EA5A9E85041295C8FC2FFA754410AD7A370AAE8504114AE4761FDA75441295C8FE2AEE850411F85EBE1F1A75441A4703D9AAFE8504148E17AF4EFA75441EC51B86EB0E85041295C8FE2EDA754417B14AE07B1E85041295C8F02EDA7544114AE47C1B0E85041A4703D5AEBA75441F6285CFFB1E8504185EB51F8E9A7544148E17AA4B2E85041CDCCCC2CE8A7544185EB5178B3E850410AD7A390E6A75441F6285C9FB4E85041713D0A17E5A754418FC2F508B5E8504152B81E05E3A75441C3F5280CB6E85041E17A14FEE0A7544100000010B7E85041F6285C2FDEA754411F85EB11BAE85041713D0AC7DEA754413D0AD793BAE85041C3F5285CDCA75441666666F6BAE85041666666A6DBA754410E0000009A9999A997E8504100000010EAA7544152B81EE597E85041F6285C5FE9A754410AD7A31097E85041C3F5283CE9A754417B14AE7796E85041EC51B8AEE8A754413333338396E85041B81E85ABE7A754410000004097E85041F6285CBFE6A75441B81E854B97E850413D0AD7D3E5A754415C8FC29598E850410AD7A3B0E5A75441EC51B82E99E8504133333323E5A754418FC2F59899E85041C3F528BCE5A75441A4703D1A9AE8504152B81E15E8A754415C8FC27599E85041000000F0EAA75441D7A370AD98E8504133333313EBA754419A9999A997E8504100000010EAA754410C0000001F85EB6193E85041B81E855B2CA85441CDCCCCBC92E85041E17A146E2EA8544114AE47D191E850411F85EB412FA85441C3F5284C90E8504148E17AB42EA854417B14AE5790E85041B81E853B2DA854417B14AE3791E850417B14AE872BA854417B14AE1792E8504185EB51782AA85441F6285C2F92E850411F85EB7128A85441D7A3706D93E850415C8FC26528A854419A99995994E85041B81E85BB29A85441A4703D2A94E85041D7A3701D2BA854411F85EB6193E85041B81E855B2CA854410D000000EC51B8AEEBE850411F85EBD143A754418FC2F5F8ECE850411F85EBD143A7544166666686EDE8504114AE472143A754410AD7A310EDE85041713D0AB742A75441F6285C3FEDE850415C8FC23542A7544166666666EEE85041C3F5289C41A754419A999989EEE85041A4703DFA41A7544148E17AA4EFE850413D0AD79342A7544148E17AA4EFE850411F85EBF142A754411F85EB51EFE85041713D0A9743A75441F6285CFFEEE85041AE47E14A45A754419A9999C9ECE8504185EB51F844A75441EC51B8AEEBE850411F85EBD143A7544112000000AE47E18AF2E8504114AE478140A75441A4703DDAF1E8504114AE47A13FA7544185EB5138F2E850410AD7A3F03EA7544185EB5118F3E850418FC2F5F83DA75441EC51B83EF4E8504185EB51483DA754419A999959F5E850418FC2F5183DA75441B81E859BF7E85041713D0A273AA7544114AE47F1F8E85041CDCCCC7C3BA7544152B81EE5F8E8504148E17A743CA754418FC2F528F8E850411F85EBE13DA754417B14AE57F8E850413D0AD7133FA75441CDCCCC1CF8E85041295C8F5240A75441B81E85BBF6E850410AD7A3B040A75441F6285CCFF5E850418FC2F59840A7544166666636F5E85041B81E85CB41A754410AD7A3C0F4E85041333333E341A75441E17A148EF3E8504114AE478140A75441AE47E18AF2E8504114AE478140A754410C0000001F85EBE1F7E85041B81E85BB35A75441AE47E15AF9E8504185EB519835A75441AE47E15AF9E85041D7A3703D36A754411F85EBA1F9E85041C3F5286C36A7544114AE47F1F8E850411F85EBE136A75441295C8F92F8E85041F6285C6F37A75441295C8F92F8E8504114AE47F137A7544114AE4731F7E850415C8FC2E537A75441C3F5288CF6E85041EC51B89E37A75441AE47E10AF6E85041B81E859B36A754413D0AD7A3F6E850419A99991936A754411F85EBE1F7E85041B81E85BB35A754410B000000C3F528BCB2E850411F85EBB1BEA75441E17A14EEB3E85041C3F528BCBAA75441CDCCCC4CB4E85041CDCCCCDCB9A7544152B81EF5B5E850417B14AE17BAA7544152B81EF5B5E850410AD7A3B0BAA7544185EB51F8B6E850418FC2F578BBA754419A999979B7E85041666666A6BEA7544133333353B6E85041EC51B82EC1A75441D7A3701DB4E8504114AE47A1C0A7544133333393B4E8504152B81EB5BFA75441C3F528BCB2E850411F85EBB1BEA75441110000000AD7A340A2E850415C8FC2F5FAA75441E17A14EEA1E8504148E17A04FCA75441E17A140EA1E85041C3F528FCFCA75441B81E85BBA0E8504185EB5148FBA75441666666F6A0E85041D7A3702DFAA7544100000090A1E850418FC2F578F8A75441EC51B89EA2E85041A4703DAAF5A7544185EB5138A3E850411F85EB41F2A75441666666B6A2E85041F6285C0FF1A754415C8FC2C5A3E8504166666696EFA754418FC2F5C8A4E85041EC51B87EEFA754419A999979A5E850417B14AEA7EDA75441CDCCCC7CA6E85041333333D3ECA75441333333A3A7E85041333333D3ECA7544166666616A7E8504185EB5118F0A7544133333393A3E85041B81E856BF8A754410AD7A340A2E850415C8FC2F5FAA7544109000000CDCCCCECAFE85041333333D3DAA754418FC2F538AEE850411F85EBE1DBA7544166666606ADE850413D0AD783DBA7544148E17A44AEE85041713D0A97D6A75441B81E856BAFE85041E17A14AED6A7544114AE47E1AFE85041295C8FA2D6A754418FC2F5D8B0E85041CDCCCCECD7A754411F85EB91B0E8504152B81E95D9A75441CDCCCCECAFE85041333333D3DAA754410E000000C3F5280CB6E8504100000010D8A754410AD7A300B6E8504152B81E15D6A75441E17A146EB7E85041CDCCCC8CD3A7544166666656B7E8504166666646D3A75441EC51B81EB8E85041295C8F22D3A7544166666636B8E850418FC2F518D0A75441E17A142EB9E850413D0AD793CEA7544148E17A54BAE85041295C8FF2CEA7544100000060BAE85041EC51B8AECFA75441713D0AE7B8E8504166666686D1A754419A999959B8E8504133333343D2A7544114AE4771B8E850413D0AD7D3D3A75441EC51B83EB7E850410AD7A300D7A75441C3F5280CB6E8504100000010D8A7544114000000A4703D8ABCE8504152B81E15C4A7544100000020BCE850410AD7A300C5A75441D7A370ADBCE85041E17A146EC6A7544148E17AD4BDE8504114AE47D1C4A75441713D0A27BEE85041295C8FC2C3A7544185EB51A8BEE850415C8FC2E5C3A754415C8FC255BEE850418FC2F5C8C5A75441A4703D4ABEE850418FC2F588C7A75441B81E85EBBDE85041C3F5286CC9A754417B14AE17BDE850419A9999D9CAA75441295C8F72BCE8504100000020CBA75441D7A370EDBAE85041C3F5282CCBA7544100000060BAE8504166666616C8A75441F6285C8FBAE850415C8FC285C6A75441C3F5284CBBE8504166666656C6A75441C3F5286CBAE8504133333373C4A754419A999919BAE85041713D0AD7C2A75441F6285C8FBAE85041B81E859BC2A754411F85EBE1BAE850411F85EB11C3A75441A4703D8ABCE8504152B81E15C4A75441
+</a>
+
+<b>
+01060000000100000001030000000100000084000000D9C1EF33B3E85041F0F6AF557CA754419F984E1EB3E850415BA6F2837CA75441D74ED2B1B2E85041AA5759397DA75441BE77E7D2B2E85041947AA0337EA75441A08DF740B3E85041A696127A7EA75441FFE5DCE4B4E850413FB8AF487CA75441C441A15AB6E85041BD4FF83E7AA75441912BB3E1B7E850419A38204A78A75441800BD703BFE8504109D6A3C06EA75441B9290A8DBFE85041C29AC03F6EA754418FC2F538C0E850418FC2F5786CA754414B5217EAC0E850410960B89D6BA7544107D30B26C1E850419CE52C4E6BA75441F693272CC1E8504145A2F34B6BA754410AD7A330C1E85041666666466BA754416EA9896EC1E85041C42BC9336BA754410F841E96C2E85041AEF62EC86AA75441F7C82AA9C3E85041FB7440C469A7544120646DC3C3E85041E4E8E6B569A75441C3F528DCC3E85041E17A149E69A7544162D2AE1EC4E85041E120098469A75441B8836406C5E85041CE286B0569A7544107DCA930C6E85041325CF8EB67A754412C542D84C6E85041998A07BD67A75441F934E3F5C7E8504154A88D7066A754410B779827C8E850419064261966A7544100000030C8E85041713D0A0766A75441A8E06434C8E85041C95CA50266A754411E7BA83BC8E850419B8EDFF565A75441E3463C56C9E85041E0432CD964A754414343AD82C9E850412EFA5CB464A754417B14AE07CAE85041F6285C2F64A75441E0955441CAE850412C07731664A75441E8C66C7CCAE8504191B480E563A754415A3A7407CBE85041A3561AAE63A75441E1CBCCFCD1E850416BF4286C5DA75441377B140ED8E85041ED6F3D2A56A7544144999979DDE85041EC1D859B4EA7544169492DF9DEE850417D6F968A4CA7544114AE4711DFE85041A4703D4A4CA7544100000070DFE8504148E17AF44AA7544133333373E0E850419A9999D949A75441B21FE1A4E0E85041DCB6148F49A754418BD1C821E1E85041BB7207AA48A7544164969A05E2E85041C9BACB6E47A75441CC3E014DE2E850413488E41247A75441F6285CEFE2E85041F6285C1F46A7544131A4E7A5E3E8504173AB65AC45A7544149512128E4E85041DF9FB94645A75441C6D30AB8E4E850416385D9E143A75441CDCCCC7CE3E85041CDCCCC4C42A7544114AE4771E3E85041333333E341A75441697918F2E2E850415F01079141A754415B178CE1E2E850418AD0C08841A754416BBD59E0E2E850418BDBAE8B41A75441711E6D88DFE85041F65032C93FA754416EE7B383DFE8504135D6D9C43FA754416BF57207DFE850415429A88B40A75441E3EC2B5FDDE85041A6C5E84943A754410AD7A350D9E850417B14AE074AA75441663F355DD4E85041A09729C850A75441F1AFCCE0D3E85041251C80AD51A75441B0C5B03BD3E850412D39175153A75441F28A8D61D3E85041B6DB934954A754417B14AE77D3E85041B81E85AB54A754416E6DAE74D3E850411F991DC754A75441920BE97DD3E85041CE35AF0355A75441078ED57ED3E8504196A8E40855A7544175935659D3E8504142CAB62C56A75441970A3F43D3E85041C20B8D7F56A75441C27B961BD3E850411B7B9DE956A75441A1F1DFFDD2E85041EB391A2E57A75441E17A14DED2E850416666668657A754412C1F278BD2E850411CC253D957A75441006B196DD2E8504113658CFF57A75441ADAF229BD1E85041B7576E5B59A754412906E15BD1E85041D0D19CA959A754411F85EB41D1E850413D0AD7D359A75441EB8004E4D0E8504172D6CA465AA75441A4E4D370D0E850419CD098E05AA7544113DDC524D0E85041BC71E8305BA7544148E17AD4CFE85041333333935BA75441684EBD90CFE85041C9CD39CD5BA75441E7027671CFE85041E03541EE5BA75441F8ABEF89CEE85041346A76AE5CA7544116BED62BCDE850415D9758675EA754417B102FD6CCE85041B2514C025FA75441EC51B8BECCE85041E17A144E5FA7544190774FFCCAE85041544D2D0061A75441E42B87DCCAE850415CE2AD2761A7544185B724ADC9E850415A14B24562A75441BFC46BCDC8E85041CCD933D362A754414C05F0E1C7E850418AE4CED363A75441BB8DCA62C7E850419513F55864A75441C8B3C8B5C6E850416BAD981665A75441488B31FAC5E850415B1D081A66A75441E276C52BC5E85041F160810367A754413D0AD7D3C4E850413D0AD77367A75441C69FBD77C4E85041951F70C867A75441FF9F7BE0C3E85041E011D36A68A75441A9F36E45C2E85041117AEC8B69A754411E48074FC0E850412BB19F616BA75441C8A29C4DC0E85041457683626BA75441DACEA442C0E8504144A2006D6BA75441282CED18C0E85041184E08B76BA75441ACB1FBC2BFE8504100A33B986CA75441016FFF84BFE850415716B95A6DA75441264FBE84BEE8504154D898726EA754416CAC4C84BDE850414C08AD946FA75441DB37F154BCE85041577B79B470A7544136634FEDBBE85041023A063171A7544100000040BBE85041AE47E10A72A754418AE591F7BAE85041CF1A093D72A754412437F51ABAE85041B8380DFC72A75441AD917468B9E85041D03C0AEF73A754417EF6EB9EB8E85041BA8700DA74A754411F84DC00B8E85041113B159E75A754411C64FDFFB7E850411E09409F75A7544163B2FADCB6E850413C6E363F77A75441C301B5BBB6E8504199D8DD7377A75441295C8F82B6E850417B14AED777A754411D3AFF7BB6E850418466B0D877A75441F236C077B6E850418F9E68DF77A754416E9D6630B5E850414308DF1878A75441202B3101B5E850417529EE1278A7544113CC32ABB4E850411DDF262078A75441229E972BB3E85041D8BB60087AA75441C863DF25B3E85041A71212147AA7544178AD4AEDB2E850414CF24A457BA754410F7C09FBB2E85041B71CC24F7BA7544100000090B3E850415C8FC2B57BA75441D9C1EF33B3E85041F0F6AF557CA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344305 - 1331138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333F36B135141333333532AD8544152B81E856E135141713D0AF72BD8544185EB511876135141295C8FB22DD85441F6285CEF7813514114AE475130D85441AE47E1BA7B1351419A99996938D85441E17A145E841351413D0AD7D33ED85441713D0A778E1351410AD7A30042D85441A4703D7A83135141AE47E18A40D85441E17A148E80135141666666763FD85441295C8FB279135141C3F528EC38D85441F6285C2F72135141A4703D4A35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441AE47E17A62135141AE47E1FA38D85441295C8FF25E1351410AD7A39038D85441AE47E13A55135141A4703DAA36D85441713D0AF74F135141666666163BD85441D7A3709D49135141AE47E14A3DD85441C3F528CC461351418FC2F50843D85441AE47E1BA4D13514185EB510846D85441713D0AE752135141666666B649D8544114AE47815B1351419A9999294CD85441C3F528CC5E1351419A9999194DD854417B14AEC767135141713D0AE750D85441E17A14EE71135141E17A14DE53D85441CDCCCC0C821351419A9999B955D85441CDCCCCBC82135141D7A370ED55D85441EC51B81E8C135141295C8FB258D85441B81E858B96135141AE47E11A55D85441333333239813514185EB51384ED85441EC51B81E93135141C3F5288C47D854416666669698135141C3F528EC45D85441EC51B8CE99135141A4703DEA40D854413D0AD7B39E135141F6285C6F41D854413D0AD703A5135141EC51B8AE36D85441CDCCCC4CA51351415C8FC2F535D85441EC51B80EA713514148E17A4431D854417B14AE57A813514152B81EE52DD854413D0AD7F3AA13514185EB51F826D85441000000D0AB1351413D0AD7B324D85441F6285CCFAC13514152B81ED520D85441D7A3701DAC1351415C8FC2B516D8544133333383AF1351417B14AEF713D85441D7A370CDBC1351417B14AEA711D854418FC2F518B9135141A4703D6A00D8544100000060B813514114AE47B1FBD75441AE47E17AAA1351415C8FC225FED754411F85EB019F1351418FC2F5D8FFD75441A4703D8A8D135141E17A14DE02D85441CDCCCCEC8B135141EC51B84E03D85441000000A0851351417B14AE0706D854410AD7A3D081135141CDCCCC7C09D854413D0AD7237A135141CDCCCC2C14D8544152B81E55751351411F85EB011AD85441CDCCCCEC6E135141CDCCCC8C1FD85441CDCCCC1C6D135141AE47E1DA24D85441333333F36B135141333333532AD85441
+</a>
+
+<b>
+0106000000010000000103000000010000005400000051A5AFF37A13514174076B1E3AD854412CF54AAF791351415A8994EA38D854410163BE3972135141FFC3424F35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441AE47E17A62135141AE47E1FA38D85441295C8FF25E1351410AD7A39038D85441AE47E13A55135141A4703DAA36D85441713D0AF74F135141666666163BD85441D7A3709D49135141AE47E14A3DD85441C3F528CC461351418FC2F50843D85441AE47E1BA4D13514185EB510846D85441713D0AE752135141666666B649D8544114AE47815B1351419A9999294CD85441C3F528CC5E1351419A9999194DD854417B14AEC767135141713D0AE750D85441E17A14EE71135141E17A14DE53D85441CDCCCC0C821351419A9999B955D85441CDCCCCBC82135141D7A370ED55D85441EC51B81E8C135141295C8FB258D85441B81E858B96135141AE47E11A55D85441333333239813514185EB51384ED85441EC51B81E93135141C3F5288C47D854416666669698135141C3F528EC45D85441EC51B8CE99135141A4703DEA40D854413D0AD7B39E135141F6285C6F41D854413D0AD703A5135141EC51B8AE36D85441CDCCCC4CA51351415C8FC2F535D85441EC51B80EA713514148E17A4431D854417B14AE57A813514152B81EE52DD854413D0AD7F3AA13514185EB51F826D85441000000D0AB1351413D0AD7B324D85441F6285CCFAC13514152B81ED520D85441D7A3701DAC1351415C8FC2B516D8544133333383AF1351417B14AEF713D85441D7A370CDBC1351417B14AEA711D854418FC2F518B9135141A4703D6A00D8544100000060B813514114AE47B1FBD75441AE47E17AAA1351415C8FC225FED754411F85EB019F1351418FC2F5D8FFD75441A4703D8A8D135141E17A14DE02D85441CDCCCCEC8B135141EC51B84E03D85441000000A0851351417B14AE0706D854410AD7A3D081135141CDCCCC7C09D854413D0AD7237A135141CDCCCC2C14D8544152B81E55751351411F85EB011AD85441CDCCCCEC6E135141CDCCCC8C1FD85441CDCCCC1C6D135141AE47E1DA24D854410A3D60F76B1351415163DD552AD85441475F7DEA6C135141B5E900F12AD854418D23DA816E135141F563F4F42BD854418F9B8EA370135141D1321A732CD8544139931DE47513514124C39EA62DD854415CE94F0E761351414C6545B02DD85441066D4B3476135141F1195ECC2DD8544167D9D19E77135141774BCF1A2FD854417E5401A378135141890AD70A30D85441EDB0EEDD781351415ED1334130D85441C3F587F1781351417F69915730D8544167DB028279135141E87604FA31D85441FF3FED6B7A13514175717E9F34D854419C7AF0AC7A1351419E48C95B35D85441B32126237B135141636426B236D8544197C98D627B1351416C37C96937D85441412D91BC7B135141BE5DDA6A38D854411AD2D1ED7C135141A6BF8F4D39D854412F4A520E7E135141C456D4233AD8544199B6413B7E13514131D633453AD85441E6D187677E135141939515663AD8544172D7F7EE7F1351415C41CD883BD85441258A373182135141262D43363DD85441E846BDA9821351411CFEC58F3DD85441BEE6725D841351416F095FD33ED85441F247CBBF861351412A148E933FD85441713D0A778E1351410AD7A30042D85441AD518FC78A135141FFA0458341D8544180483FC58613514100B8E5FA40D854411CB45478831351414AAB2C8A40D8544120C7DE1A8313514194ECA26740D8544113664A8D80135141CEACA5753FD85441BA3A363F8013514193F32E2B3FD854414C4E50447D13514160719B533CD8544151A5AFF37A13514174076B1E3AD85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344305 - 3701085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333F36B135141333333532AD8544152B81E856E135141713D0AF72BD8544185EB511876135141295C8FB22DD85441F6285CEF7813514114AE475130D85441AE47E1BA7B1351419A99996938D85441E17A145E841351413D0AD7D33ED85441713D0A778E1351410AD7A30042D85441A4703D7A83135141AE47E18A40D85441E17A148E80135141666666763FD85441295C8FB279135141C3F528EC38D85441F6285C2F72135141A4703D4A35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441AE47E17A62135141AE47E1FA38D85441295C8FF25E1351410AD7A39038D85441AE47E13A55135141A4703DAA36D85441713D0AF74F135141666666163BD85441D7A3709D49135141AE47E14A3DD85441C3F528CC461351418FC2F50843D85441AE47E1BA4D13514185EB510846D85441713D0AE752135141666666B649D8544114AE47815B1351419A9999294CD85441C3F528CC5E1351419A9999194DD854417B14AEC767135141713D0AE750D85441E17A14EE71135141E17A14DE53D85441CDCCCC0C821351419A9999B955D85441CDCCCCBC82135141D7A370ED55D85441EC51B81E8C135141295C8FB258D85441B81E858B96135141AE47E11A55D85441333333239813514185EB51384ED85441EC51B81E93135141C3F5288C47D854416666669698135141C3F528EC45D85441EC51B8CE99135141A4703DEA40D854413D0AD7B39E135141F6285C6F41D854413D0AD703A5135141EC51B8AE36D85441CDCCCC4CA51351415C8FC2F535D85441EC51B80EA713514148E17A4431D854417B14AE57A813514152B81EE52DD854413D0AD7F3AA13514185EB51F826D85441000000D0AB1351413D0AD7B324D85441F6285CCFAC13514152B81ED520D85441D7A3701DAC1351415C8FC2B516D8544133333383AF1351417B14AEF713D85441D7A370CDBC1351417B14AEA711D854418FC2F518B9135141A4703D6A00D8544100000060B813514114AE47B1FBD75441AE47E17AAA1351415C8FC225FED754411F85EB019F1351418FC2F5D8FFD75441A4703D8A8D135141E17A14DE02D85441CDCCCCEC8B135141EC51B84E03D85441000000A0851351417B14AE0706D854410AD7A3D081135141CDCCCC7C09D854413D0AD7237A135141CDCCCC2C14D8544152B81E55751351411F85EB011AD85441CDCCCCEC6E135141CDCCCC8C1FD85441CDCCCC1C6D135141AE47E1DA24D85441333333F36B135141333333532AD85441
+</a>
+
+<b>
+0106000000010000000103000000010000005400000051A5AFF37A13514174076B1E3AD854412CF54AAF791351415A8994EA38D854410163BE3972135141FFC3424F35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441AE47E17A62135141AE47E1FA38D85441295C8FF25E1351410AD7A39038D85441AE47E13A55135141A4703DAA36D85441713D0AF74F135141666666163BD85441D7A3709D49135141AE47E14A3DD85441C3F528CC461351418FC2F50843D85441AE47E1BA4D13514185EB510846D85441713D0AE752135141666666B649D8544114AE47815B1351419A9999294CD85441C3F528CC5E1351419A9999194DD854417B14AEC767135141713D0AE750D85441E17A14EE71135141E17A14DE53D85441CDCCCC0C821351419A9999B955D85441CDCCCCBC82135141D7A370ED55D85441EC51B81E8C135141295C8FB258D85441B81E858B96135141AE47E11A55D85441333333239813514185EB51384ED85441EC51B81E93135141C3F5288C47D854416666669698135141C3F528EC45D85441EC51B8CE99135141A4703DEA40D854413D0AD7B39E135141F6285C6F41D854413D0AD703A5135141EC51B8AE36D85441CDCCCC4CA51351415C8FC2F535D85441EC51B80EA713514148E17A4431D854417B14AE57A813514152B81EE52DD854413D0AD7F3AA13514185EB51F826D85441000000D0AB1351413D0AD7B324D85441F6285CCFAC13514152B81ED520D85441D7A3701DAC1351415C8FC2B516D8544133333383AF1351417B14AEF713D85441D7A370CDBC1351417B14AEA711D854418FC2F518B9135141A4703D6A00D8544100000060B813514114AE47B1FBD75441AE47E17AAA1351415C8FC225FED754411F85EB019F1351418FC2F5D8FFD75441A4703D8A8D135141E17A14DE02D85441CDCCCCEC8B135141EC51B84E03D85441000000A0851351417B14AE0706D854410AD7A3D081135141CDCCCC7C09D854413D0AD7237A135141CDCCCC2C14D8544152B81E55751351411F85EB011AD85441CDCCCCEC6E135141CDCCCC8C1FD85441CDCCCC1C6D135141AE47E1DA24D854410A3D60F76B1351415163DD552AD85441475F7DEA6C135141B5E900F12AD854418D23DA816E135141F563F4F42BD854418F9B8EA370135141D1321A732CD8544139931DE47513514124C39EA62DD854415CE94F0E761351414C6545B02DD85441066D4B3476135141F1195ECC2DD8544167D9D19E77135141774BCF1A2FD854417E5401A378135141890AD70A30D85441EDB0EEDD781351415ED1334130D85441C3F587F1781351417F69915730D8544167DB028279135141E87604FA31D85441FF3FED6B7A13514175717E9F34D854419C7AF0AC7A1351419E48C95B35D85441B32126237B135141636426B236D8544197C98D627B1351416C37C96937D85441412D91BC7B135141BE5DDA6A38D854411AD2D1ED7C135141A6BF8F4D39D854412F4A520E7E135141C456D4233AD8544199B6413B7E13514131D633453AD85441E6D187677E135141939515663AD8544172D7F7EE7F1351415C41CD883BD85441258A373182135141262D43363DD85441E846BDA9821351411CFEC58F3DD85441BEE6725D841351416F095FD33ED85441F247CBBF861351412A148E933FD85441713D0A778E1351410AD7A30042D85441AD518FC78A135141FFA0458341D8544180483FC58613514100B8E5FA40D854411CB45478831351414AAB2C8A40D8544120C7DE1A8313514194ECA26740D8544113664A8D80135141CEACA5753FD85441BA3A363F8013514193F32E2B3FD854414C4E50447D13514160719B533CD8544151A5AFF37A13514174076B1E3AD85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344815 - 226442
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000007B14AEA795FA504185EB5128ACC65441A4703DCA98FA504148E17A64B1C65441B81E855BB9FA50415C8FC285B0C65441F6285CAFB4FA50419A9999B9A8C654411F85EB0195FA5041295C8F92A9C6544114AE475194FA5041713D0A97A9C654417B14AEA795FA504185EB5128ACC65441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000004CFFF9AB4FA5041210D25BAA8C65441DF8A6382B3FA50418DF5A6C1A8C654413AC5770C9AFA5041755D0870A9C6544175AE7D5097FA50414F86C282A9C65441CA0C6B469BFA5041663C7C53B1C65441B81E855BB9FA50415C8FC285B0C65441EB285CAFB4FA50419A9999B9A8C6544104CFFF9AB4FA5041210D25BAA8C65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344815 - 291462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000007B14AEA795FA504185EB5128ACC65441A4703DCA98FA504148E17A64B1C65441B81E855BB9FA50415C8FC285B0C65441F6285CAFB4FA50419A9999B9A8C654411F85EB0195FA5041295C8F92A9C6544114AE475194FA5041713D0A97A9C654417B14AEA795FA504185EB5128ACC65441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000004CFFF9AB4FA5041210D25BAA8C65441DF8A6382B3FA50418DF5A6C1A8C654413AC5770C9AFA5041755D0870A9C6544175AE7D5097FA50414F86C282A9C65441CA0C6B469BFA5041663C7C53B1C65441B81E855BB9FA50415C8FC285B0C65441EB285CAFB4FA50419A9999B9A8C6544104CFFF9AB4FA5041210D25BAA8C65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344829 - 232299
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000AE47E1FAA6FA504148E17A2449C55441E17A143E8EFA5041E17A14BE47C55441666666168FFA5041000000D04BC55441000000508FFA50419A9999A94DC554413D0AD7D391FA5041E17A14CE4DC55441F6285C6FA5FA5041A4703DEA4EC554419A9999B9BAFA5041EC51B81E50C554411F85EBF1CFFA50411F85EB5151C554418FC2F5B8CFFA50419A9999B950C55441000000D0CBFA50419A9999394BC554413D0AD743C9FA504148E17AA447C55441F6285C2FC1FA5041A4703D0A33C55441AE47E17ABFFA5041E17A14CE31C5544114AE4751C1FA504185EB510837C554411F85EB31C1FA5041C3F5286C3BC55441F6285C9FC1FA50417B14AEA73EC55441A4703D5AC2FA504148E17AA441C5544148E17A54C3FA5041666666E643C554417B14AE47C5FA504148E17AA446C5544152B81E25C8FA5041D7A3704D4AC5544185EB51A8CCFA5041C3F5286C4FC55441CDCCCC7CC9FA5041CDCCCC5C4FC554419A9999D9C4FA504152B81ED54AC554415C8FC275BEFA504185EB51784AC5544100000040BDFA5041713D0A674AC55441AE47E1FAA6FA504148E17A2449C55441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000970AD743C9FA5041C7E17AA447C55441FAD15C12C6FA5041517810803FC55441A4AB2D0EC6FA5041AB3C65753FC55441F6285C2FC1FA5041A4703D0A33C5544172340C92C0FA50414DD84A9832C55441C047E17ABFFA5041167B14CE31C554414D54E749C1FA504170B5EB3E37C55441542C4825C1FA5041755B7DAD39C554414D54E749C1FA504129E59C773CC55441B0F363DCC1FA50410D36D8F83FC5544101776ECAC2FA5041B15347D542C55441198EC8CAC3FA5041E8595CB144C554413EBC7CCBC5FA5041A3BBDC5647C55441F1459C95C8FA504178A067EA4AC55441B4B4208EC8FA50410D395BFF4AC55441CF48ACC7CBFA504141CFE32D4BC55441970AD743C9FA5041C7E17AA447C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351903 - 1282166
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F508031651419A9999190CF3544148E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F35441AE47E1BA111651415C8FC2F512F354411F85EB4114165141713D0AA70FF354417B14AED70B16514148E17AB40BF3544133333343041651417B14AEE708F35441713D0AC7FA15514148E17A0406F35441AE47E11AF2155141295C8F4204F35441AE47E1BAF1155141AE47E10A08F354413D0AD773FB155141295C8F020AF354418FC2F508031651419A9999190CF35441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000048E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F354414C37898911165141EC51B8DE13F354414A0C02931216514148E17A1413F35441AD6D18571316514119F124F811F354415C8FC26513165141AE47E1E211F354412B8716390E165141A4703D6A0DF35441EC51B8AE0916514123DBF9AE0BF354414E6210A80416514191ED7C870AF354415839B4D800165141AAF1D2C508F354413D0AD703FE15514177BE9F1A06F3544119045696FA1551414E6210B005F35441713D0AAFF21551417F6ABCE403F3544191ED7C17F215514121B0723008F3544168B8F34DF31551410307D66C08F35441AB82B54FF31551415BB1CD5C08F354413D0AD773FB155141295C8F020AF354418FC2F508031651419A9999190CF35441E4884FC103165141A09F7E7A0CF35441B46B7E6A0416514181CD6AD30CF3544148E17AE4061651410AD7A3200EF35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351903 - 3592729
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F508031651419A9999190CF3544148E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F35441AE47E1BA111651415C8FC2F512F354411F85EB4114165141713D0AA70FF354417B14AED70B16514148E17AB40BF3544133333343041651417B14AEE708F35441713D0AC7FA15514148E17A0406F35441AE47E11AF2155141295C8F4204F35441AE47E1BAF1155141AE47E10A08F354413D0AD773FB155141295C8F020AF354418FC2F508031651419A9999190CF35441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000048E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F354414C37898911165141EC51B8DE13F354414A0C02931216514148E17A1413F35441AD6D18571316514119F124F811F354415C8FC26513165141AE47E1E211F354412B8716390E165141A4703D6A0DF35441EC51B8AE0916514123DBF9AE0BF354414E6210A80416514191ED7C870AF354415839B4D800165141AAF1D2C508F354413D0AD703FE15514177BE9F1A06F3544119045696FA1551414E6210B005F35441713D0AAFF21551417F6ABCE403F3544191ED7C17F215514121B0723008F3544168B8F34DF31551410307D66C08F35441AB82B54FF31551415BB1CD5C08F354413D0AD773FB155141295C8F020AF354418FC2F508031651419A9999190CF35441E4884FC103165141A09F7E7A0CF35441B46B7E6A0416514181CD6AD30CF3544148E17AE4061651410AD7A3200EF35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346170 - 3027666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B88EB25551417B14AE173C5B5441B81E853BB05551410AD7A3E03F5B5441E17A140EB655514185EB5158425B544133333343C75551410AD7A3504A5B54410AD7A300DD5551417B14AE57535B54419A999979EF5551415C8FC2055B5B5441295C8FB20256514100000060635B544185EB51D80256514152B81EF5625B5441666666660D565141EC51B82E4D5B5441F6285C8FE9555141F6285C5F385B544133333353C65551419A9999E9235B544114AE4761B4555141A4703DBA395B5441EC51B88EB25551417B14AE173C5B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000002E64B39DC5555141DC046A8D495B54411CCE8313C555514160EA9802485B5441A895BB5DC4555141F13848C7455B5441546DE3DBC3555141C5A7D7F3435B5441F03C1340C3555141DB364788425B544128DC7208C255514102CEAE36415B54411D5BF268C0555141296516E53F5B5441E0C1897BBE555141610476AD3E5B5441B43019A8BC55514199A3D5753D5B5441CABF883CBB555141246B0DC03C5B54416C16301BB95551415C0A6D883B5B5441485E6415B655514139ECB45B425B54412E64B39DC5555141DC046A8D495B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346170 - 3444574
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B88EB25551417B14AE173C5B5441B81E853BB05551410AD7A3E03F5B5441E17A140EB655514185EB5158425B544133333343C75551410AD7A3504A5B54410AD7A300DD5551417B14AE57535B54419A999979EF5551415C8FC2055B5B5441295C8FB20256514100000060635B544185EB51D80256514152B81EF5625B5441666666660D565141EC51B82E4D5B5441F6285C8FE9555141F6285C5F385B544133333353C65551419A9999E9235B544114AE4761B4555141A4703DBA395B5441EC51B88EB25551417B14AE173C5B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000002E64B39DC5555141DC046A8D495B54411CCE8313C555514160EA9802485B5441A895BB5DC4555141F13848C7455B5441546DE3DBC3555141C5A7D7F3435B5441F03C1340C3555141DB364788425B544128DC7208C255514102CEAE36415B54411D5BF268C0555141296516E53F5B5441E0C1897BBE555141610476AD3E5B5441B43019A8BC55514199A3D5753D5B5441CABF883CBB555141246B0DC03C5B54416C16301BB95551415C0A6D883B5B5441485E6415B655514139ECB45B425B54412E64B39DC5555141DC046A8D495B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>416115 - 34480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001B00000014AE47115C355141EC51B8FEF81F5541E17A14FE5A3551413D0AD7C3F61F5541666666D65A355141AE47E13AF41F5541A4703DEA5A355141295C8F62F11F5541EC51B8AE5B3551419A9999D9EE1F5541C3F5284C5D355141295C8FB2EC1F5541A4703D9A6035514133333303E61F55413D0AD72361355141C3F528DCE21F554148E17A3465355141EC51B83EDC1F5541A4703D5A6D35514148E17AB4D41F5541713D0AE7683551417B14AE97D41F55417B14AE175A355141EC51B87ED81F5541AE47E1BA5135514148E17A04DB1F5541AE47E17A45355141CDCCCCCCDE1F5541B81E851B443551411F85EB91E01F5541EC51B81E423551419A9999D9F51F55410000005045355141D7A3705DFA1F5541B81E85AB47355141E17A148EFC1F55415C8FC2754A35514114AE4701FE1F5541295C8FE26535514148E17AF406205541EC51B83E6D355141B81E855B09205541000000907D355141F6285C3F0B20554152B81ED57235514133333383042055410AD7A3606A355141EC51B8CEFF1F5541F6285CBF6835514148E17A240020554114AE47115D35514148E17A74FA1F554114AE47115C355141EC51B8FEF81F55410D000000295C8F426A355141EC51B83E012055417B14AE476D3551419A99992903205541B81E850B7035514114AE476104205541A4703D6A70355141713D0A2705205541713D0A57703551415C8FC22506205541A4703D5A6F35514185EB51F80720554152B81EA56E355141A4703D1A082055410AD7A3C0673551411F85EB4106205541F6285C4F67355141C3F5287C05205541295C8F62673551413D0AD773042055419A99999968355141E17A143E02205541295C8F726935514185EB514801205541295C8F426A355141EC51B83E01205541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000140B46E15A3551411BA2B6ABF21F554132900CE85A3551418A1C875BF51F5541E4BB048C5B35514144A8C4E1F71F5541276F69D55C3551413B47E37DF71F5541437035165D35514143338BEFF21F55415D76977A5E355141A11D0100EE1F55413B848DA461355141AA04134EE81F5541E18FEB4C64355141ECEDBC1DE31F5541179719F265355141D4E2C495E01F5541F6A40F1C693551410FDB30D0DE1F55417ABE63EE6E35514131CD3AA6DB1F5541B0C59193703551416DC5A6E0D91F55419AB503E86C35514103B2B472D51F5541BD542F906A355141380F4B49D71F554102A01DB367355141F9E4B3EFD91F55417DF9C2F466355141BA0DDD9FDA1F554156464C616435514197BC6096DD1F554163737A94633551419FA0AEE3DE1F5541076F81F761355141041AB783E11F5541CB893F6961355141DC2B366BE21F5541B996BB0061355141146811AAE31F5541240BE6F660355141231ABFE3E31F5541A4703D9A6035514133333303E61F554107F4A98C5E355141DF71472AEA1F5541AC3C2F5E5E355141BEE44A88EA1F5541185046345E3551414B3610DDEA1F5541C3F5284C5D355141295C8FB2EC1F5541EC281ADA5B3551414B8BC79FEE1F554155F931295B355141028D9F92F01F5541140B46E15A3551411BA2B6ABF21F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>416115 - 74286
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001B00000014AE47115C355141EC51B8FEF81F5541E17A14FE5A3551413D0AD7C3F61F5541666666D65A355141AE47E13AF41F5541A4703DEA5A355141295C8F62F11F5541EC51B8AE5B3551419A9999D9EE1F5541C3F5284C5D355141295C8FB2EC1F5541A4703D9A6035514133333303E61F55413D0AD72361355141C3F528DCE21F554148E17A3465355141EC51B83EDC1F5541A4703D5A6D35514148E17AB4D41F5541713D0AE7683551417B14AE97D41F55417B14AE175A355141EC51B87ED81F5541AE47E1BA5135514148E17A04DB1F5541AE47E17A45355141CDCCCCCCDE1F5541B81E851B443551411F85EB91E01F5541EC51B81E423551419A9999D9F51F55410000005045355141D7A3705DFA1F5541B81E85AB47355141E17A148EFC1F55415C8FC2754A35514114AE4701FE1F5541295C8FE26535514148E17AF406205541EC51B83E6D355141B81E855B09205541000000907D355141F6285C3F0B20554152B81ED57235514133333383042055410AD7A3606A355141EC51B8CEFF1F5541F6285CBF6835514148E17A240020554114AE47115D35514148E17A74FA1F554114AE47115C355141EC51B8FEF81F55410D000000295C8F426A355141EC51B83E012055417B14AE476D3551419A99992903205541B81E850B7035514114AE476104205541A4703D6A70355141713D0A2705205541713D0A57703551415C8FC22506205541A4703D5A6F35514185EB51F80720554152B81EA56E355141A4703D1A082055410AD7A3C0673551411F85EB4106205541F6285C4F67355141C3F5287C05205541295C8F62673551413D0AD773042055419A99999968355141E17A143E02205541295C8F726935514185EB514801205541295C8F426A355141EC51B83E01205541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000140B46E15A3551411BA2B6ABF21F554132900CE85A3551418A1C875BF51F5541E4BB048C5B35514144A8C4E1F71F5541276F69D55C3551413B47E37DF71F5541437035165D35514143338BEFF21F55415D76977A5E355141A11D0100EE1F55413B848DA461355141AA04134EE81F5541E18FEB4C64355141ECEDBC1DE31F5541179719F265355141D4E2C495E01F5541F6A40F1C693551410FDB30D0DE1F55417ABE63EE6E35514131CD3AA6DB1F5541B0C59193703551416DC5A6E0D91F55419AB503E86C35514103B2B472D51F5541BD542F906A355141380F4B49D71F554102A01DB367355141F9E4B3EFD91F55417DF9C2F466355141BA0DDD9FDA1F554156464C616435514197BC6096DD1F554163737A94633551419FA0AEE3DE1F5541076F81F761355141041AB783E11F5541CB893F6961355141DC2B366BE21F5541B996BB0061355141146811AAE31F5541240BE6F660355141231ABFE3E31F5541A4703D9A6035514133333303E61F554107F4A98C5E355141DF71472AEA1F5541AC3C2F5E5E355141BEE44A88EA1F5541185046345E3551414B3610DDEA1F5541C3F5284C5D355141295C8FB2EC1F5541EC281ADA5B3551414B8BC79FEE1F554155F931295B355141028D9F92F01F5541140B46E15A3551411BA2B6ABF21F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 3020177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441295C8F5256F7504152B81EB5862554410AD7A3B057F75041F6285CEF86255441AE47E1DA59F750411F85EB3186255441F6285C4F5AF75041A4703DBA80255441713D0AA75BF75041333333C37E255441C3F5280C5CF750413D0AD7A37C2554418FC2F5785CF750418FC2F5D879255441F6285C4F5AF75041F6285C7F77255441CDCCCCDC59F75041000000B074255441
+</a>
+
+<b>
+010600000001000000010300000001000000280000004FBA471534F75041D7AD32CB6C25544178D1972134F75041E7CEE7DA6C2554419F0C25C833F75041992587FC6C255441B81E850B30F75041C3F528FC6E2554417B14AE9730F75041EC51B80E7225544194B198AE31F750415EF2F9087725544186FAA7D336F750419D118B7E772554418267456739F75041A9660F7F7825544137AF43513BF7504177F695517A2554416F0D04DE40F7504177EFDA297B255441847F2F4E41F75041B90E5C3E7B255441CDCCCCBC40F7504152B81E157A255441AE47E12A38F750417B14AE47702554415DC2201E49F75041168120096D25544100A9ADC64CF75041C770377B6C2554416666660651F75041666666D66B25544114AE47F152F750418FC2F588712554411F85EBA15BF750413D0AD7F3702554419A9999B95AF7504114AE47616A255441656E66795FF750412F5174026A25544110F1543E63F75041FEEF31B7692554417AA9538167F750412EA6E86B69255441C3F5288C6FF75041295C8FF268255441040A8C676FF750412A873D4966255441B0519F4D6FF7504120D3D06664255441D7E30D436FF750417B5128A263255441B81E852B6FF7504148E17A0460255441B71BBC926BF75041BC41BB7F6025544123C9B49864F7504109C5CC6E6125544194D0BB9E5EF75041850E983B62255441D90F3C2E59F750417E90FCF562255441B81E85CB58F750413333330363255441EC51B8CE50F750410AD7A380642554418FF5CAF94AF7504115D7A3CB65255441A7A62F5B41F750417D31A1ED67255441D7A370ED3FF75041EC51B83E68255441E26938FB3CF75041FD183D4F69255441CDCCCC2C37F7504185EB51686B255441CC41E8F635F75041DDAB42F36B2554414FBA471534F75041D7AD32CB6C255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 3574020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441295C8F5256F7504152B81EB5862554410AD7A3B057F75041F6285CEF86255441AE47E1DA59F750411F85EB3186255441F6285C4F5AF75041A4703DBA80255441713D0AA75BF75041333333C37E255441C3F5280C5CF750413D0AD7A37C2554418FC2F5785CF750418FC2F5D879255441F6285C4F5AF75041F6285C7F77255441CDCCCCDC59F75041000000B074255441
+</a>
+
+<b>
+010600000001000000010300000001000000280000004FBA471534F75041D7AD32CB6C25544178D1972134F75041E7CEE7DA6C2554419F0C25C833F75041992587FC6C255441B81E850B30F75041C3F528FC6E2554417B14AE9730F75041EC51B80E7225544194B198AE31F750415EF2F9087725544186FAA7D336F750419D118B7E772554418267456739F75041A9660F7F7825544137AF43513BF7504177F695517A2554416F0D04DE40F7504177EFDA297B255441847F2F4E41F75041B90E5C3E7B255441CDCCCCBC40F7504152B81E157A255441AE47E12A38F750417B14AE47702554415DC2201E49F75041168120096D25544100A9ADC64CF75041C770377B6C2554416666660651F75041666666D66B25544114AE47F152F750418FC2F588712554411F85EBA15BF750413D0AD7F3702554419A9999B95AF7504114AE47616A255441656E66795FF750412F5174026A25544110F1543E63F75041FEEF31B7692554417AA9538167F750412EA6E86B69255441C3F5288C6FF75041295C8FF268255441040A8C676FF750412A873D4966255441B0519F4D6FF7504120D3D06664255441D7E30D436FF750417B5128A263255441B81E852B6FF7504148E17A0460255441B71BBC926BF75041BC41BB7F6025544123C9B49864F7504109C5CC6E6125544194D0BB9E5EF75041850E983B62255441D90F3C2E59F750417E90FCF562255441B81E85CB58F750413333330363255441EC51B8CE50F750410AD7A380642554418FF5CAF94AF7504115D7A3CB65255441A7A62F5B41F750417D31A1ED67255441D7A370ED3FF75041EC51B83E68255441E26938FB3CF75041FD183D4F69255441CDCCCC2C37F7504185EB51686B255441CC41E8F635F75041DDAB42F36B2554414FBA471534F75041D7AD32CB6C255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 151179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441295C8F5256F7504152B81EB5862554410AD7A3B057F75041F6285CEF86255441AE47E1DA59F750411F85EB3186255441F6285C4F5AF75041A4703DBA80255441713D0AA75BF75041333333C37E255441C3F5280C5CF750413D0AD7A37C2554418FC2F5785CF750418FC2F5D879255441F6285C4F5AF75041F6285C7F77255441CDCCCCDC59F75041000000B074255441
+</a>
+
+<b>
+01060000000100000001030000000100000028000000B0519F4D6FF7504120D3D06664255441D7E30D436FF750417B5128A263255441B81E852B6FF7504148E17A0460255441B71BBC926BF75041BC41BB7F6025544123C9B49864F7504109C5CC6E6125544194D0BB9E5EF75041850E983B62255441D90F3C2E59F750417E90FCF562255441B81E85CB58F750413333330363255441EC51B8CE50F750410AD7A380642554418FF5CAF94AF7504115D7A3CB65255441A7A62F5B41F750417D31A1ED67255441D7A370ED3FF75041EC51B83E68255441E26938FB3CF75041FD183D4F69255441CDCCCC2C37F7504185EB51686B255441CC41E8F635F75041DDAB42F36B2554414FBA471534F75041D7AD32CB6C25544178D1972134F75041E7CEE7DA6C2554419F0C25C833F75041992587FC6C255441B81E850B30F75041C3F528FC6E2554417B14AE9730F75041EC51B80E7225544194B198AE31F750415EF2F9087725544186FAA7D336F750419D118B7E772554418267456739F75041A9660F7F7825544137AF43513BF7504177F695517A2554416F0D04DE40F7504177EFDA297B255441847F2F4E41F75041B90E5C3E7B255441CDCCCCBC40F7504152B81E157A255441AE47E12A38F750417B14AE47702554415DC2201E49F75041168120096D25544100A9ADC64CF75041C770377B6C2554416666660651F75041666666D66B25544114AE47F152F750418FC2F588712554411F85EBA15BF750413D0AD7F3702554419A9999B95AF7504114AE47616A255441656E66795FF750412F5174026A25544110F1543E63F75041FEEF31B7692554417AA9538167F750412EA6E86B69255441C3F5288C6FF75041295C8FF268255441040A8C676FF750412A873D4966255441B0519F4D6FF7504120D3D06664255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 361571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441295C8F5256F7504152B81EB5862554410AD7A3B057F75041F6285CEF86255441AE47E1DA59F750411F85EB3186255441F6285C4F5AF75041A4703DBA80255441713D0AA75BF75041333333C37E255441C3F5280C5CF750413D0AD7A37C2554418FC2F5785CF750418FC2F5D879255441F6285C4F5AF75041F6285C7F77255441CDCCCCDC59F75041000000B074255441
+</a>
+
+<b>
+01060000000100000001030000000100000028000000B0519F4D6FF7504120D3D06664255441D7E30D436FF750417B5128A263255441B81E852B6FF7504148E17A0460255441B71BBC926BF75041BC41BB7F6025544123C9B49864F7504109C5CC6E6125544194D0BB9E5EF75041850E983B62255441D90F3C2E59F750417E90FCF562255441B81E85CB58F750413333330363255441EC51B8CE50F750410AD7A380642554418FF5CAF94AF7504115D7A3CB65255441A7A62F5B41F750417D31A1ED67255441D7A370ED3FF75041EC51B83E68255441E26938FB3CF75041FD183D4F69255441CDCCCC2C37F7504185EB51686B255441CC41E8F635F75041DDAB42F36B2554414FBA471534F75041D7AD32CB6C25544178D1972134F75041E7CEE7DA6C2554419F0C25C833F75041992587FC6C255441B81E850B30F75041C3F528FC6E2554417B14AE9730F75041EC51B80E7225544194B198AE31F750415EF2F9087725544186FAA7D336F750419D118B7E772554418267456739F75041A9660F7F7825544137AF43513BF7504177F695517A2554416F0D04DE40F7504177EFDA297B255441847F2F4E41F75041B90E5C3E7B255441CDCCCCBC40F7504152B81E157A255441AE47E12A38F750417B14AE47702554415DC2201E49F75041168120096D25544100A9ADC64CF75041C770377B6C2554416666660651F75041666666D66B25544114AE47F152F750418FC2F588712554411F85EBA15BF750413D0AD7F3702554419A9999B95AF7504114AE47616A255441656E66795FF750412F5174026A25544110F1543E63F75041FEEF31B7692554417AA9538167F750412EA6E86B69255441C3F5288C6FF75041295C8FF268255441040A8C676FF750412A873D4966255441B0519F4D6FF7504120D3D06664255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348248 - 1755044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000012000000D7A3700D0DE85041E17A147EAE8454417B14AEC709E85041F6285C7FAC845441333333D305E850411F85EBE1AA845441EC51B88E04E85041F6285C0FAB845441A4703D2A03E85041295C8F82AC8454417B14AE2701E850415C8FC2E5AF845441AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544114AE47E1F4E750413D0AD703DB845441D7A3706DF5E75041D7A3706D00855441295C8F92F7E750410AD7A3A0FF8454419A99996908E850413D0AD7B3F9845441713D0A270AE8504185EB5128F98454418FC2F5980BE85041713D0AF7D38454419A9999C90CE85041A4703D4AB5845441D7A3700D0DE85041E17A147EAE845441090000008FC2F518FDE75041B81E85BBBF8454411F85EBD1FDE750413D0AD7C3BB845441295C8FB2FDE7504166666656B884544114AE47E1FDE75041D7A3700DB6845441333333D300E85041E17A14FEB5845441333333D300E850419A999999B984544185EB515800E850418FC2F5D8BC845441EC51B8AEFFE750419A9999E9BF8454418FC2F518FDE75041B81E85BBBF845441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544152B81E25ECE750413D0AD7B3BA845441713D0A17EBE75041AE47E1FABB845441AE47E1DAEAE75041295C8FC2BD84544148E17AE4EAE750419A999979C684544166666686EBE75041B81E859BDA845441713D0A47EBE750418FC2F548E2845441B81E85BBEBE750413D0AD763018554418FC2F5D8ECE75041CDCCCC8C028554410AD7A360EEE75041D7A3700D03855441D7A3706DF5E75041D7A3706D00855441295C8F92F7E750410AD7A3A0FF8454419A99996908E850413D0AD7B3F9845441713D0A270AE8504185EB5128F98454418FC2F5980BE85041713D0AF7D38454419A9999C90CE85041A4703D4AB5845441D7A3700D0DE85041E17A147EAE8454417B14AEC709E85041F6285C7FAC845441333333D305E850411F85EBE1AA845441EC51B88E04E85041F6285C0FAB845441A4703D2A03E85041295C8F82AC8454417511CE2802E8504181DA6B34AE845441965531F802E85041D86838F3AC8454418EE1C58102E8504115F37FBFB98454417DF9EE9401E85041ED5D1237BC8454415C2941BBFFE75041DD24E711C084544184BEAE43FDE75041E5985288C084544184BEAE43FDE75041921020E8BB84544184BEAE43FDE7504199D5DF96B784544184BEAE43FDE75041B9F6E1A8B4845441AE47E14AFFE7504152B81EA5B2845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348248 - 3634375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000012000000D7A3700D0DE85041E17A147EAE8454417B14AEC709E85041F6285C7FAC845441333333D305E850411F85EBE1AA845441EC51B88E04E85041F6285C0FAB845441A4703D2A03E85041295C8F82AC8454417B14AE2701E850415C8FC2E5AF845441AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544114AE47E1F4E750413D0AD703DB845441D7A3706DF5E75041D7A3706D00855441295C8F92F7E750410AD7A3A0FF8454419A99996908E850413D0AD7B3F9845441713D0A270AE8504185EB5128F98454418FC2F5980BE85041713D0AF7D38454419A9999C90CE85041A4703D4AB5845441D7A3700D0DE85041E17A147EAE845441090000008FC2F518FDE75041B81E85BBBF8454411F85EBD1FDE750413D0AD7C3BB845441295C8FB2FDE7504166666656B884544114AE47E1FDE75041D7A3700DB6845441333333D300E85041E17A14FEB5845441333333D300E850419A999999B984544185EB515800E850418FC2F5D8BC845441EC51B8AEFFE750419A9999E9BF8454418FC2F518FDE75041B81E85BBBF845441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544152B81E25ECE750413D0AD7B3BA845441713D0A17EBE75041AE47E1FABB845441AE47E1DAEAE75041295C8FC2BD84544148E17AE4EAE750419A999979C684544166666686EBE75041B81E859BDA845441713D0A47EBE750418FC2F548E2845441B81E85BBEBE750413D0AD763018554418FC2F5D8ECE75041CDCCCC8C028554410AD7A360EEE75041D7A3700D03855441D7A3706DF5E75041D7A3706D00855441295C8F92F7E750410AD7A3A0FF8454419A99996908E850413D0AD7B3F9845441713D0A270AE8504185EB5128F98454418FC2F5980BE85041713D0AF7D38454419A9999C90CE85041A4703D4AB5845441D7A3700D0DE85041E17A147EAE8454417B14AEC709E85041F6285C7FAC845441333333D305E850411F85EBE1AA845441EC51B88E04E85041F6285C0FAB845441A4703D2A03E85041295C8F82AC8454417511CE2802E8504181DA6B34AE845441965531F802E85041D86838F3AC8454418EE1C58102E8504115F37FBFB98454417DF9EE9401E85041ED5D1237BC8454415C2941BBFFE75041DD24E711C084544184BEAE43FDE75041E5985288C084544184BEAE43FDE75041921020E8BB84544184BEAE43FDE7504199D5DF96B784544184BEAE43FDE75041B9F6E1A8B4845441AE47E14AFFE7504152B81EA5B2845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348319 - 3058813
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000049000000713D0A279FF050417B14AED7927854411F85EB91A2F05041EC51B80E99785441CDCCCCBCA5F0504185EB51589878544152B81E35A9F05041F6285CFF967854417B14AE67B4F05041000000309178544152B81E05ADF0504185EB511884785441D7A370DDA8F0504185EB51087E785441B81E85DBA4F050411F85EB017A7854415C8FC2B59EF05041713D0A7775785441713D0A6796F05041E17A145E707854410AD7A3908FF05041CDCCCC7C6C785441A4703D4A88F05041D7A370BD68785441666666B67DF050415C8FC2F563785441EC51B8CE77F05041CDCCCCDC617854418FC2F5886FF05041EC51B89E5F7854411F85EB316DF05041E17A14CE5E7854419A9999096CF05041AE47E1DA5D785441EC51B85E38F0504185EB51D850785441A4703DFA38F050417B14AEA74E78544152B81EB537F05041666666964E78544185EB51A826F050419A9999F94C785441CDCCCC4C26F050410AD7A310507854413D0AD74326F05041EC51B85E50785441713D0AE726F05041D7A370DD517854418FC2F5F827F05041AE47E1FA5278544148E17A5429F050413D0AD7E3537854410AD7A3A02DF0504148E17A8455785441F6285C0F34F050417B14AE07577854410AD7A3B037F050417B14AEF757785441AE47E1BA3CF0504148E17A5459785441333333634CF05041666666B65C785441666666464FF05041295C8F525E785441CDCCCCAC50F05041333333935F7854417B14AE9751F050410000003061785441C3F528EC51F0504114AE470163785441A4703D9A51F05041F6285CCF64785441333333034FF0504148E17AA46A785441EC51B80E4EF05041E17A145E6A785441D7A370AD35F05041C3F5285C637854410AD7A39024F0504114AE47715E785441EC51B8DE23F050419A9999D96178544152B81E5522F050413D0AD723667854417B14AE6720F05041B81E853B6A785441EC51B8CE1AF050413D0AD75374785441D7A3704D13F05041B81E85DB8178544185EB518812F05041A4703D0A84785441AE47E15A1BF05041A4703D7A89785441713D0AF71DF05041AE47E16A8D785441A4703D1A20F05041E17A14DE8E785441D7A370DD2BF0504114AE47D195785441D7A370FD37F0504152B81E359C7854415C8FC2C53EF0504148E17A149F785441713D0AF749F0504152B81E15A27854413D0AD7134CF05041C3F5285CA2785441295C8FB24CF050411F85EB619F785441CDCCCCBC4DF05041C3F5283C94785441000000404EF050419A9999E9907854410AD7A3104FF050418FC2F5288D785441D7A370AD52F05041295C8F628478544152B81EA553F05041295C8FA284785441A4703DAA65F0504185EB5148897854413D0AD76370F050411F85EB418A7854419A99993971F05041000000608A7854418FC2F5F871F050418FC2F5288678544185EB511873F0504185EB51D881785441AE47E12A75F05041F6285C1F7B785441A4703D5A77F05041E17A145E77785441D7A370BD7DF050415C8FC255707854418FC2F5E884F05041AE47E12A737854417B14AE278EF050419A999929797854418FC2F5E891F050411F85EB317D7854418FC2F56898F0504148E17A6487785441713D0A279FF050417B14AED792785441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D6133FC035F05041E4C39061637854412E8762D635F050411CC0ED6763785441B90D17FD35F0504184BD0D7363785441EEB14AD243F05041751DE56C67785441EC51B80E4EF05041E17A145E6A785441360C753950F05041FC00916965785441606CB29D50F0504118590B8164785441FB06AFD750F050417317D02663785441D63908DD50F0504162A5AAF362785441BA4D36B250F050410154F50B62785441A4703D9A50F05041A4703D8A617854413E21A56750F05041B123873161785441BDED18E24FF0504164495E47607854418A3B971B4FF0504174D2488E5F78544149DB108D4EF050411F16B51A5F785441A323C93C4DF05041087A37675E78544169AA291B4CF05041BD25A1CC5D7854415590147D42F05041D40E14A05B7854410000008037F05041E17A141E59785441091D1BB836F05041AB817D815D785441D7A370AD35F05041C3F5285C63785441D6133FC035F05041E4C3906163785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348319 - 3341396
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000049000000713D0A279FF050417B14AED7927854411F85EB91A2F05041EC51B80E99785441CDCCCCBCA5F0504185EB51589878544152B81E35A9F05041F6285CFF967854417B14AE67B4F05041000000309178544152B81E05ADF0504185EB511884785441D7A370DDA8F0504185EB51087E785441B81E85DBA4F050411F85EB017A7854415C8FC2B59EF05041713D0A7775785441713D0A6796F05041E17A145E707854410AD7A3908FF05041CDCCCC7C6C785441A4703D4A88F05041D7A370BD68785441666666B67DF050415C8FC2F563785441EC51B8CE77F05041CDCCCCDC617854418FC2F5886FF05041EC51B89E5F7854411F85EB316DF05041E17A14CE5E7854419A9999096CF05041AE47E1DA5D785441EC51B85E38F0504185EB51D850785441A4703DFA38F050417B14AEA74E78544152B81EB537F05041666666964E78544185EB51A826F050419A9999F94C785441CDCCCC4C26F050410AD7A310507854413D0AD74326F05041EC51B85E50785441713D0AE726F05041D7A370DD517854418FC2F5F827F05041AE47E1FA5278544148E17A5429F050413D0AD7E3537854410AD7A3A02DF0504148E17A8455785441F6285C0F34F050417B14AE07577854410AD7A3B037F050417B14AEF757785441AE47E1BA3CF0504148E17A5459785441333333634CF05041666666B65C785441666666464FF05041295C8F525E785441CDCCCCAC50F05041333333935F7854417B14AE9751F050410000003061785441C3F528EC51F0504114AE470163785441A4703D9A51F05041F6285CCF64785441333333034FF0504148E17AA46A785441EC51B80E4EF05041E17A145E6A785441D7A370AD35F05041C3F5285C637854410AD7A39024F0504114AE47715E785441EC51B8DE23F050419A9999D96178544152B81E5522F050413D0AD723667854417B14AE6720F05041B81E853B6A785441EC51B8CE1AF050413D0AD75374785441D7A3704D13F05041B81E85DB8178544185EB518812F05041A4703D0A84785441AE47E15A1BF05041A4703D7A89785441713D0AF71DF05041AE47E16A8D785441A4703D1A20F05041E17A14DE8E785441D7A370DD2BF0504114AE47D195785441D7A370FD37F0504152B81E359C7854415C8FC2C53EF0504148E17A149F785441713D0AF749F0504152B81E15A27854413D0AD7134CF05041C3F5285CA2785441295C8FB24CF050411F85EB619F785441CDCCCCBC4DF05041C3F5283C94785441000000404EF050419A9999E9907854410AD7A3104FF050418FC2F5288D785441D7A370AD52F05041295C8F628478544152B81EA553F05041295C8FA284785441A4703DAA65F0504185EB5148897854413D0AD76370F050411F85EB418A7854419A99993971F05041000000608A7854418FC2F5F871F050418FC2F5288678544185EB511873F0504185EB51D881785441AE47E12A75F05041F6285C1F7B785441A4703D5A77F05041E17A145E77785441D7A370BD7DF050415C8FC255707854418FC2F5E884F05041AE47E12A737854417B14AE278EF050419A999929797854418FC2F5E891F050411F85EB317D7854418FC2F56898F0504148E17A6487785441713D0A279FF050417B14AED792785441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D6133FC035F05041E4C39061637854412E8762D635F050411CC0ED6763785441B90D17FD35F0504184BD0D7363785441EEB14AD243F05041751DE56C67785441EC51B80E4EF05041E17A145E6A785441360C753950F05041FC00916965785441606CB29D50F0504118590B8164785441FB06AFD750F050417317D02663785441D63908DD50F0504162A5AAF362785441BA4D36B250F050410154F50B62785441A4703D9A50F05041A4703D8A617854413E21A56750F05041B123873161785441BDED18E24FF0504164495E47607854418A3B971B4FF0504174D2488E5F78544149DB108D4EF050411F16B51A5F785441A323C93C4DF05041087A37675E78544169AA291B4CF05041BD25A1CC5D7854415590147D42F05041D40E14A05B7854410000008037F05041E17A141E59785441091D1BB836F05041AB817D815D785441D7A370AD35F05041C3F5285C63785441D6133FC035F05041E4C3906163785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348484 - 59238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51C854F2504185EB51A8DF785441666666964DF250417B14AE27D47854419A9999F94EF250417B14AE57D2785441713D0A7750F250419A9999A9D2785441295C8FE25AF25041B81E856BCC78544152B81ED559F2504148E17A34C778544185EB514858F25041EC51B88EBB785441C3F528CC57F2504133333363B6785441EC51B82E58F2504133333333B2785441C3F528EC57F25041713D0A17AF7854410000002056F25041713D0A27AA785441AE47E1DA47F25041F6285CBF97785441713D0A773FF25041F6285CFFA6785441F6285C7F40F250417B14AE27B6785441E17A14EE41F2504148E17AA4BD7854410AD7A37046F25041EC51B84ECA785441A4703D0A48F25041AE47E10AD0785441D7A3703D48F2504185EB51D8D1785441A4703D7A48F2504133333303D4785441333333134AF2504100000060D8785441F6285C3F45F2504114AE4711DB7854419A9999E943F2504114AE47B1DD7854417B14AEC743F2504148E17AE4E3785441713D0A474AF25041CDCCCC3CE3785441E17A14BE4DF250418FC2F538E2785441D7A370DD52F2504148E17A84E07854419A9999D954F25041713D0AC7DF7854411F85EBE15AF25041C3F5286CDD785441EC51B88E60F25041295C8F82DC785441295C8F9260F25041EC51B81EDB785441A4703DDA5DF250413D0AD763D77854413D0AD7935CF250418FC2F558D67854417B14AE975BF250415C8FC2B5D5785441295C8F425AF25041AE47E17AD5785441EC51B84E57F25041F6285CCFD6785441AE47E14A58F250411F85EB41D8785441EC51B84E59F25041E17A14BED77854415C8FC2155AF2504100000050D7785441F6285CFF5AF250417B14AEF7D8785441F6285C2F59F250419A9999D9D9785441F6285CAF5AF25041EC51B88EDC7854417B14AE6757F2504100000010DE78544185EB51C854F2504185EB51A8DF785441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085C8DAB841F25041360D478EBC785441DFCA5EC641F25041DA1434BABC78544177FCE60E58F250416D96ECB7B97854419540B4CE57F250416DD7517EB678544155E6EBCB57F25041E001AA72B67854418311AEBA4FF25041077BD1E3B8785441D12B95F747F2504181FA93E4B9785441021C354446F25041A1108F27BA785441BFF2575241F2504125017776BA785441F000298F41F25041368758B4BB78544185C8DAB841F25041360D478EBC785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348484 - 136672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51C854F2504185EB51A8DF785441666666964DF250417B14AE27D47854419A9999F94EF250417B14AE57D2785441713D0A7750F250419A9999A9D2785441295C8FE25AF25041B81E856BCC78544152B81ED559F2504148E17A34C778544185EB514858F25041EC51B88EBB785441C3F528CC57F2504133333363B6785441EC51B82E58F2504133333333B2785441C3F528EC57F25041713D0A17AF7854410000002056F25041713D0A27AA785441AE47E1DA47F25041F6285CBF97785441713D0A773FF25041F6285CFFA6785441F6285C7F40F250417B14AE27B6785441E17A14EE41F2504148E17AA4BD7854410AD7A37046F25041EC51B84ECA785441A4703D0A48F25041AE47E10AD0785441D7A3703D48F2504185EB51D8D1785441A4703D7A48F2504133333303D4785441333333134AF2504100000060D8785441F6285C3F45F2504114AE4711DB7854419A9999E943F2504114AE47B1DD7854417B14AEC743F2504148E17AE4E3785441713D0A474AF25041CDCCCC3CE3785441E17A14BE4DF250418FC2F538E2785441D7A370DD52F2504148E17A84E07854419A9999D954F25041713D0AC7DF7854411F85EBE15AF25041C3F5286CDD785441EC51B88E60F25041295C8F82DC785441295C8F9260F25041EC51B81EDB785441A4703DDA5DF250413D0AD763D77854413D0AD7935CF250418FC2F558D67854417B14AE975BF250415C8FC2B5D5785441295C8F425AF25041AE47E17AD5785441EC51B84E57F25041F6285CCFD6785441AE47E14A58F250411F85EB41D8785441EC51B84E59F25041E17A14BED77854415C8FC2155AF2504100000050D7785441F6285CFF5AF250417B14AEF7D8785441F6285C2F59F250419A9999D9D9785441F6285CAF5AF25041EC51B88EDC7854417B14AE6757F2504100000010DE78544185EB51C854F2504185EB51A8DF785441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000AB40B4CE57F2504147D8517EB67854419440B4CE57F2504156D7517EB678544158E6EBCB57F25041DC01AA72B67854418111AEBA4FF25041077BD1E3B8785441CC2B95F747F250417EFA93E4B9785441011C354446F250419F108F27BA785441BFF2575241F2504129017776BA7854418AC8DAB841F25041510D478EBC785441DCCA5EC641F25041DB1434BABC78544179FCE60E58F250416C96ECB7B9785441AB40B4CE57F2504147D8517EB6785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348484 - 275734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51C854F2504185EB51A8DF785441666666964DF250417B14AE27D47854419A9999F94EF250417B14AE57D2785441713D0A7750F250419A9999A9D2785441295C8FE25AF25041B81E856BCC78544152B81ED559F2504148E17A34C778544185EB514858F25041EC51B88EBB785441C3F528CC57F2504133333363B6785441EC51B82E58F2504133333333B2785441C3F528EC57F25041713D0A17AF7854410000002056F25041713D0A27AA785441AE47E1DA47F25041F6285CBF97785441713D0A773FF25041F6285CFFA6785441F6285C7F40F250417B14AE27B6785441E17A14EE41F2504148E17AA4BD7854410AD7A37046F25041EC51B84ECA785441A4703D0A48F25041AE47E10AD0785441D7A3703D48F2504185EB51D8D1785441A4703D7A48F2504133333303D4785441333333134AF2504100000060D8785441F6285C3F45F2504114AE4711DB7854419A9999E943F2504114AE47B1DD7854417B14AEC743F2504148E17AE4E3785441713D0A474AF25041CDCCCC3CE3785441E17A14BE4DF250418FC2F538E2785441D7A370DD52F2504148E17A84E07854419A9999D954F25041713D0AC7DF7854411F85EBE15AF25041C3F5286CDD785441EC51B88E60F25041295C8F82DC785441295C8F9260F25041EC51B81EDB785441A4703DDA5DF250413D0AD763D77854413D0AD7935CF250418FC2F558D67854417B14AE975BF250415C8FC2B5D5785441295C8F425AF25041AE47E17AD5785441EC51B84E57F25041F6285CCFD6785441AE47E14A58F250411F85EB41D8785441EC51B84E59F25041E17A14BED77854415C8FC2155AF2504100000050D7785441F6285CFF5AF250417B14AEF7D8785441F6285C2F59F250419A9999D9D9785441F6285CAF5AF25041EC51B88EDC7854417B14AE6757F2504100000010DE78544185EB51C854F2504185EB51A8DF785441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000AB40B4CE57F2504147D8517EB67854419440B4CE57F2504156D7517EB678544158E6EBCB57F25041DC01AA72B67854418111AEBA4FF25041077BD1E3B8785441CC2B95F747F250417EFA93E4B9785441011C354446F250419F108F27BA785441BFF2575241F2504129017776BA7854418AC8DAB841F25041510D478EBC785441DCCA5EC641F25041DB1434BABC78544179FCE60E58F250416C96ECB7B9785441AB40B4CE57F2504147D8517EB6785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348584 - 3160979
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002C00000085EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A544152B81E45BDEA50418FC2F568968A54413D0AD713BBEA5041A4703D0A938A5441AE47E14AB8EA5041F6285CAF908A54418FC2F5A8A0EA50413D0AD763868A5441713D0A5781EA50413D0AD753788A5441D7A370BD69EA50410AD7A3806F8A54416666669657EA5041A4703D6A6F8A54417B14AE772DEA50410AD7A380708A5441B81E85EBEDE9504100000050768A5441E17A145EF7E9504185EB51485D8A5441666666C6F4E95041F6285C8F5D8A5441CDCCCC7CF0E95041F6285C0F5E8A54419A9999A9DAE95041CDCCCC9C608A544133333363C8E95041000000C0628A54413D0AD7C3C7E95041295C8FD2628A544152B81E65C7E9504148E17A546F8A544100000040C7E95041295C8F42748A544185EB5188C6E9504148E17A348E8A54418FC2F528CAE95041C3F5287C8E8A54418FC2F5D8CDE9504114AE47A18F8A5441295C8F92D1E95041D7A3707D918A54413D0AD723D6E95041F6285CDF948A544185EB51E8DBE950417B14AEB7988A54413D0AD743E1E950411F85EBE19A8A5441333333A3E6E95041295C8F029C8A544114AE4711F8E950419A9999A99F8A54415C8FC23501EA5041333333B3A08A54413D0AD7B354EA504133333353A48A54415C8FC2855EEA5041A4703D7AA48A5441EC51B88E67EA504185EB51F8A38A544148E17AD474EA504185EB5128A28A5441666666B67DEA504100000030A18A54418FC2F5D886EA504166666676A18A544185EB518892EA5041333333A3A28A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000CC2623E56AEA50416BEAA383A38A544148E17AD474EA504185EB5128A28A5441666666B67DEA504100000030A18A54418FC2F5D886EA504166666676A18A544185EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A544152B81E45BDEA50418FC2F568968A54413D0AD713BBEA5041A4703D0A938A5441AE47E14AB8EA5041F6285CAF908A54418FC2F5A8A0EA50413D0AD763868A5441713D0A5781EA50413D0AD753788A5441B1AF4A126AEA5041BD985EA06F8A544121AF3B2C48EA5041C25D20D06F8A544140007B0543EA50415DEC5E3B708A54417EC4B19242EA50419389FB58A38A5441C204A7B347EA50416A28B3C2A38A5441E20BB0555AEA5041225A9769A48A5441D4A5F87466EA50411A5D2508A48A5441CC2623E56AEA50416BEAA383A38A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348584 - 3474393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002C00000085EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A544152B81E45BDEA50418FC2F568968A54413D0AD713BBEA5041A4703D0A938A5441AE47E14AB8EA5041F6285CAF908A54418FC2F5A8A0EA50413D0AD763868A5441713D0A5781EA50413D0AD753788A5441D7A370BD69EA50410AD7A3806F8A54416666669657EA5041A4703D6A6F8A54417B14AE772DEA50410AD7A380708A5441B81E85EBEDE9504100000050768A5441E17A145EF7E9504185EB51485D8A5441666666C6F4E95041F6285C8F5D8A5441CDCCCC7CF0E95041F6285C0F5E8A54419A9999A9DAE95041CDCCCC9C608A544133333363C8E95041000000C0628A54413D0AD7C3C7E95041295C8FD2628A544152B81E65C7E9504148E17A546F8A544100000040C7E95041295C8F42748A544185EB5188C6E9504148E17A348E8A54418FC2F528CAE95041C3F5287C8E8A54418FC2F5D8CDE9504114AE47A18F8A5441295C8F92D1E95041D7A3707D918A54413D0AD723D6E95041F6285CDF948A544185EB51E8DBE950417B14AEB7988A54413D0AD743E1E950411F85EBE19A8A5441333333A3E6E95041295C8F029C8A544114AE4711F8E950419A9999A99F8A54415C8FC23501EA5041333333B3A08A54413D0AD7B354EA504133333353A48A54415C8FC2855EEA5041A4703D7AA48A5441EC51B88E67EA504185EB51F8A38A544148E17AD474EA504185EB5128A28A5441666666B67DEA504100000030A18A54418FC2F5D886EA504166666676A18A544185EB518892EA5041333333A3A28A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000CC2623E56AEA50416BEAA383A38A544148E17AD474EA504185EB5128A28A5441666666B67DEA504100000030A18A54418FC2F5D886EA504166666676A18A544185EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A544152B81E45BDEA50418FC2F568968A54413D0AD713BBEA5041A4703D0A938A5441AE47E14AB8EA5041F6285CAF908A54418FC2F5A8A0EA50413D0AD763868A5441713D0A5781EA50413D0AD753788A5441B1AF4A126AEA5041BD985EA06F8A544121AF3B2C48EA5041C25D20D06F8A544140007B0543EA50415DEC5E3B708A54417EC4B19242EA50419389FB58A38A5441C204A7B347EA50416A28B3C2A38A5441E20BB0555AEA5041225A9769A48A5441D4A5F87466EA50411A5D2508A48A5441CC2623E56AEA50416BEAA383A38A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>349899 - 50286
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F528DCA8E050419A999909B17C54419A9999B9ACE05041D7A3703DCB7C5441CDCCCCCCAEE05041C3F5285CD97C544133333333ADE05041713D0AF7E97C5441F6285C1FACE05041A4703D2AF57C5441CDCCCC6CABE05041713D0A87FC7C54410AD7A330AAE05041A4703D8A097D5441AE47E19AC8E05041F6285CBFF77C5441AE47E18AEFE0504185EB51F8E07C5441AE47E13AE2E0504185EB5188DD7C544148E17A84E2E05041C3F528CCDC7C544100000030E4E0504148E17A84D87C5441AE47E1DAF0E05041CDCCCCCCCD7C544100000020F3E050411F85EB41C97C5441B81E85FBF5E05041000000F0BF7C5441295C8F72F6E05041B81E856BBE7C544148E17A44F5E05041B81E857BA17C54413D0AD733F5E05041295C8FE29F7C544100000020F4E05041EC51B83E867C5441C3F528DCA8E050419A999909B17C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B2711851F4E05041D7CCFCCE8A7C544185BD8A46F4E05041AA186FC48A7C5441B8335823E3E050417DE8EC62947C544170B33C36D4E050413B27AD029D7C5441F29216B9C6E0504196A3E714A57C54410257F1C6BBE050417BCCDE9AAB7C5441BBD6D5D9ACE05041380B9F3AB47C54411C995B67ADE05041A0A80E1DB57C5441E1B2055CB6E05041D9EBBEEAAF7C5441A7614E2AC7E050415928F32FA67C5441F0EF707BCAE0504134E16187A47C54413CA8D07FDDE050413CCA5240997C54410F6A47BAF2E05041DC15D4168D7C54413E4C6060F4E05041B8949A3A8C7C5441B2711851F4E05041D7CCFCCE8A7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>349899 - 84637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F528DCA8E050419A999909B17C54419A9999B9ACE05041D7A3703DCB7C5441CDCCCCCCAEE05041C3F5285CD97C544133333333ADE05041713D0AF7E97C5441F6285C1FACE05041A4703D2AF57C5441CDCCCC6CABE05041713D0A87FC7C54410AD7A330AAE05041A4703D8A097D5441AE47E19AC8E05041F6285CBFF77C5441AE47E18AEFE0504185EB51F8E07C5441AE47E13AE2E0504185EB5188DD7C544148E17A84E2E05041C3F528CCDC7C544100000030E4E0504148E17A84D87C5441AE47E1DAF0E05041CDCCCCCCCD7C544100000020F3E050411F85EB41C97C5441B81E85FBF5E05041000000F0BF7C5441295C8F72F6E05041B81E856BBE7C544148E17A44F5E05041B81E857BA17C54413D0AD733F5E05041295C8FE29F7C544100000020F4E05041EC51B83E867C5441C3F528DCA8E050419A999909B17C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B2711851F4E05041D7CCFCCE8A7C544185BD8A46F4E05041AA186FC48A7C5441B8335823E3E050417DE8EC62947C544170B33C36D4E050413B27AD029D7C5441F29216B9C6E0504196A3E714A57C54410257F1C6BBE050417BCCDE9AAB7C5441BBD6D5D9ACE05041380B9F3AB47C54411C995B67ADE05041A0A80E1DB57C5441E1B2055CB6E05041D9EBBEEAAF7C5441A7614E2AC7E050415928F32FA67C5441F0EF707BCAE0504134E16187A47C54413CA8D07FDDE050413CCA5240997C54410F6A47BAF2E05041DC15D4168D7C54413E4C6060F4E05041B8949A3A8C7C5441B2711851F4E05041D7CCFCCE8A7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350067 - 1360857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AEA78E4951418FC2F5C8B8B85441666666469149514133333343BDB854417B14AE879449514114AE4771C3B8544148E17AF496495141A4703D5AC7B85441CDCCCC4C9A495141713D0A87CBB8544148E17AB49D4951413D0AD723CFB854418FC2F578A249514152B81E15D4B854417B14AEA7A349514100000030D2B854417B14AE57A5495141295C8FA2CEB8544114AE47F1A64951417B14AE07CCB8544114AE4731A9495141A4703D2ACAB85441333333B3AE495141C3F5283CC7B854418FC2F578AB495141295C8F82C1B85441F6285CFFA649514152B81E15BAB85441D7A370BDA0495141A4703D7AB2B85441A4703DEA9A495141EC51B81EACB854419A9999B995495141C3F5283CA7B85441AE47E11A90495141C3F5289CABB854419A999949894951410AD7A350B0B854417B14AEA78E4951418FC2F5C8B8B85441
+</a>
+
+<b>
+0106000000010000000103000000010000003D0000009A9999B995495141C3F5283CA7B8544186C4E23396495141D66B42AFA7B8544147BAA4E799495141FE03522BABB85441FC2D65099B4951411C2CB940ACB8544145C7CD879C495141E71D17E2ADB854416E2481799E49514113F54901B0B85441C72F223CA149514133473714B3B854417303B421A3495141C4515962B5B854415C675580A549514155B29C43B8B854419CF2DCE8A64951414C4FC7F9B9B8544101C0477BA749514154CACCE2BAB854411E2F630EA94951418326DE7FBDB85441086D641AAA4951410529B23CBFB8544102A172A0AB49514146A99AC8C1B85441A253DC26AD495141A136207DC4B85441333333B3AE495141C3F5283CC7B85441809235A7AF495141B79083C8C6B8544101454960AE4951419F50C071C3B85441D798F524AA495141355E1D06BCB854412E9A0D2AA7495141706A6295B7B854415E2C52E0A04951413945E044AFB8544158F0A3B79D49514185EA4E05ACB85441BC6C8E599A495141AF5C989FA8B85441DA55D2C4974951414E0D89F5A6B85441295C8FF292495141E17A144EA6B85441D7A370DD8E495141D7A3700DA8B85441056E3C3A8B4951413F89326EAAB854411F85EBE1884951415C8FC2F5ABB85441CDCCCC0C87495141333333E3AFB85441EC51B8AE86495141EC51B88EB2B85441D1E8B1038649514136B3EFDFB6B854416D2F14F58349514113BC3ED0B9B854410000008080495141295C8F52B2B854411F85EB417F4951410AD7A360AAB8544197523A2576495141500E51A1AAB85441219BDAFF76495141AB13C658B3B85441685E4E107A49514135520429C1B8544100000080854951418FC2F5A8D3B8544185EB5198854951418FC2F5C8D6B85441D71A639F85495141F069900ADAB854411DA8D9078A495141F2D0B73CDAB85441816177168C49514169B941ECDAB85441E9E59E8E8D4951418A49CBC9D7B8544148D4B23390495141B9407CD9D4B854412C0FB3BF9249514198AD2D01D7B85441713D0AE7964951411F85EBF1D1B8544100000080984951410AD7A340D0B8544185EB51F89A495141295C8F12CFB854415C8FC2259D495141A4703DBACFB85441B3C53D599C495141907805E5CDB854415B09DB4F99495141B36FB6F4CAB854410B7C64E79449514184758E64C4B8544141A5E50A9049514165DD0328BBB85441E16669F28F495141B8A02BFEBAB854419D26778A89495141863A2ACDB0B854414EF7B29389495141D1CC91C5B0B854419A999949894951410AD7A350B0B85441A1DEA9888E495141A071BEB1ACB85441589F3C9D8F49514146783DCEABB85441818E3BD5904951411411170BABB854419A9999B995495141C3F5283CA7B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350067 - 3732077
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AEA78E4951418FC2F5C8B8B85441666666469149514133333343BDB854417B14AE879449514114AE4771C3B8544148E17AF496495141A4703D5AC7B85441CDCCCC4C9A495141713D0A87CBB8544148E17AB49D4951413D0AD723CFB854418FC2F578A249514152B81E15D4B854417B14AEA7A349514100000030D2B854417B14AE57A5495141295C8FA2CEB8544114AE47F1A64951417B14AE07CCB8544114AE4731A9495141A4703D2ACAB85441333333B3AE495141C3F5283CC7B854418FC2F578AB495141295C8F82C1B85441F6285CFFA649514152B81E15BAB85441D7A370BDA0495141A4703D7AB2B85441A4703DEA9A495141EC51B81EACB854419A9999B995495141C3F5283CA7B85441AE47E11A90495141C3F5289CABB854419A999949894951410AD7A350B0B854417B14AEA78E4951418FC2F5C8B8B85441
+</a>
+
+<b>
+0106000000010000000103000000010000003D0000009A9999B995495141C3F5283CA7B8544186C4E23396495141D66B42AFA7B8544147BAA4E799495141FE03522BABB85441FC2D65099B4951411C2CB940ACB8544145C7CD879C495141E71D17E2ADB854416E2481799E49514113F54901B0B85441C72F223CA149514133473714B3B854417303B421A3495141C4515962B5B854415C675580A549514155B29C43B8B854419CF2DCE8A64951414C4FC7F9B9B8544101C0477BA749514154CACCE2BAB854411E2F630EA94951418326DE7FBDB85441086D641AAA4951410529B23CBFB8544102A172A0AB49514146A99AC8C1B85441A253DC26AD495141A136207DC4B85441333333B3AE495141C3F5283CC7B85441809235A7AF495141B79083C8C6B8544101454960AE4951419F50C071C3B85441D798F524AA495141355E1D06BCB854412E9A0D2AA7495141706A6295B7B854415E2C52E0A04951413945E044AFB8544158F0A3B79D49514185EA4E05ACB85441BC6C8E599A495141AF5C989FA8B85441DA55D2C4974951414E0D89F5A6B85441295C8FF292495141E17A144EA6B85441D7A370DD8E495141D7A3700DA8B85441056E3C3A8B4951413F89326EAAB854411F85EBE1884951415C8FC2F5ABB85441CDCCCC0C87495141333333E3AFB85441EC51B8AE86495141EC51B88EB2B85441D1E8B1038649514136B3EFDFB6B854416D2F14F58349514113BC3ED0B9B854410000008080495141295C8F52B2B854411F85EB417F4951410AD7A360AAB8544197523A2576495141500E51A1AAB85441219BDAFF76495141AB13C658B3B85441685E4E107A49514135520429C1B8544100000080854951418FC2F5A8D3B8544185EB5198854951418FC2F5C8D6B85441D71A639F85495141F069900ADAB854411DA8D9078A495141F2D0B73CDAB85441816177168C49514169B941ECDAB85441E9E59E8E8D4951418A49CBC9D7B8544148D4B23390495141B9407CD9D4B854412C0FB3BF9249514198AD2D01D7B85441713D0AE7964951411F85EBF1D1B8544100000080984951410AD7A340D0B8544185EB51F89A495141295C8F12CFB854415C8FC2259D495141A4703DBACFB85441B3C53D599C495141907805E5CDB854415B09DB4F99495141B36FB6F4CAB854410B7C64E79449514184758E64C4B8544141A5E50A9049514165DD0328BBB85441E16669F28F495141B8A02BFEBAB854419D26778A89495141863A2ACDB0B854414EF7B29389495141D1CC91C5B0B854419A999949894951410AD7A350B0B85441A1DEA9888E495141A071BEB1ACB85441589F3C9D8F49514146783DCEABB85441818E3BD5904951411411170BABB854419A9999B995495141C3F5283CA7B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350789 - 54259
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000295C8F528AB15041B81E854B50905441AE47E1BA88B1504133333373569054417B14AE7789B150413D0AD743579054411F85EB71A4B150411F85EB215390544185EB51C8AEB15041295C8F224F9054413D0AD7A3BAB15041D7A3705D4A905441333333738AB15041713D0A374F905441295C8F528AB15041B81E854B50905441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000FCEBC199ADB15041AC4565AD4B90544188E144738AB15041E67508374F905441295C8F528AB15041B81E854B509054419EA5043F89B150413AB17C7454905441C2DD6A2C89B15041F5EF60BC5490544176A7BCC988B1504145DA056956905441A5F93F7789B15041998F5E3F579054419029F176A4B15041047DE11A53905441D4E9E9B8AEB15041476B86254F9054418EF17C76BAB150417F1DAF6F4A90544120FAE976BAB15041E940836F4A905441B4EFB996BAB150412F20B7624A90544146ED999EBAB1504197238C5F4A905441C2A0F933B8B15041F8513A9C4A9054419B3A45DEB6B15041873B9EBE4A905441FCEBC199ADB15041AC4565AD4B905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350806 - 54261
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A00000048E17AE43DB75041B81E85FB948F5441A4703D9A3EB75041F6285C3F8F8F544114AE47E13FB750415C8FC2B5898F5441B81E85BB40B75041295C8FD2868F544148E17AD441B7504185EB51C8838F54417B14AE8744B75041EC51B8DE7C8F5441B81E858B46B75041AE47E17A798F5441CDCCCCFC4CB75041295C8F02718F544152B81E4551B7504185EB51E86B8F5441B81E852B53B7504133333343698F54417B14AEA755B750410AD7A310658F5441295C8F4257B7504152B81EA55B8F5441D7A3703D5AB7504185EB51184B8F54418FC2F5D857B7504114AE47B1488F5441EC51B85E55B750415C8FC2C5428F54419A9999F954B75041666666A63F8F5441AE47E1AA55B75041713D0A773A8F544152B81EA555B75041EC51B8EE378F5441C3F5289C54B75041295C8F92348F5441D7A3703D52B75041C3F528AC318F544148E17A944FB75041000000C02C8F54411F85EBB14EB75041295C8FD2278F5441E17A14CE4EB75041CDCCCCAC248F5441C3F5284C50B75041CDCCCC8C1F8F5441CDCCCCAC4CB750415C8FC2A51F8F5441666666E649B750411F85EB31248F544114AE470149B75041295C8FB2278F54419A9999E948B7504114AE4711348F5441A4703DAA43B750411F85EB21478F5441EC51B8DE44B7504133333383498F54413D0AD71345B750417B14AE674B8F5441B81E85DB41B7504114AE47B15D8F54417B14AE0741B750419A999979618F54418FC2F5D840B75041F6285C4F628F5441B81E851B3BB750411F85EB01778F5441295C8FE238B750415C8FC205818F544148E17AC438B75041C3F5283C848F54415C8FC29538B75041713D0A178C8F54417B14AE273AB7504185EB51889D8F5441666666163EB75041B81E850B9E8F54419A9999A93DB75041C3F5286C9A8F544148E17AE43DB75041B81E85FB948F5441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000A07124463EB750417BD2F2966B8F544172ED6E3C3CB75041B35A25F0728F54411AF08E6B3AB750412307D61A7A8F5441FE4C8EE238B750412F85DF05818F5441BCC146DD38B75041D74E3796818F5441F8EBD8D238B75041CCBB59B3828F5441E2A417A638B75041AECC1358898F5441DB41A29A38B750415AFF2F4D8C8F5441030AE16439B75041803A1B14958F5441B4B382293AB7504128FE8E889D8F54416A7404523AB75041396CD68D9D8F5441EF4B607C3AB7504153A35B939D8F544163136D1E3BB7504178BFEEA49D8F5441A90B6FD63DB75041C2032F039E8F544142B46A103EB75041C080BD0A9E8F5441BF4F08E13DB750412EE8A3449C8F54419A9999A93DB75041C3F5286C9A8F544148E17AE43DB75041B81E85FB948F5441A4703D9A3EB75041F6285C3F8F8F5441A1395C793FB75041D1E736788B8F544114AE47E13FB750415C8FC2B5898F5441B81E85BB40B75041295C8FD2868F544148E17AD441B7504185EB51C8838F5441C9BF195442B75041DD719681828F54417B14AE8744B75041EC51B8DE7C8F5441B81E858B46B75041AE47E17A798F5441CDCCCCFC4CB75041295C8F02718F5441804D16D14EB7504157509BD46E8F5441629F75D852B75041053AD4B6698F5441FDBC9FA055B75041A7496D11658F5441B55F6CDB55B750419E3CF3E0638F5441295C8F4257B7504152B81EA55B8F5441D7A3703D5AB7504185EB51184B8F54418FC2F5D857B7504114AE47B1488F544174000F1157B75041AA4F9DD3468F5441EC51B85E55B750415C8FC2C5428F54419A9999F954B75041666666A63F8F5441CE43833455B75041E0794CED3D8F54412FDD34AA55B750416FDC3B2B3A8F54419F49EA9055B75041F37631D0378F54412486A09554B7504158EB908A348F5441FD57098253B750418B785839338F5441D7A3703D52B75041C3F528AC318F544148E17A944FB75041000000C02C8F54411F85EBB14EB75041295C8FD2278F5441E17A14CE4EB75041CDCCCCAC248F54419EA696904FB750418DCAE310228F54411089F54950B75041807938931F8F5441F7703EDD4DB7504109DC909D1F8F5441CDCCCCAC4CB750415C8FC2A51F8F54418A7016444CB75041652E5B51208F5441721FF4F749B75041D7FE3B35248F54416FA3770449B75041C9677DBC278F5441DCA201F948B7504102CAFC042C8F54419A9999E948B7504114AE4711348F54413E01C3BA47B750417D198A5D388F544117A2837246B750417C671D063D8F5441D4E282BD43B750412564891F478F5441198EED4544B75041517B6B55488F5441EC51B8DE44B7504133333383498F54413D0AD71345B750417B14AE674B8F5441C88F2A9544B7504124B01A374E8F54413ACCD6CB43B750411CEF82AE528F544125BC353C43B75041233B3BDE558F5441B81E85DB41B7504114AE47B15D8F54417B14AE0741B750419A999979618F54418FC2F5D840B75041F6285C4F628F5441A07124463EB750417BD2F2966B8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351156 - 185836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000050000000AD7A37065B6504114AE4701BC905441F6285CDF68B650419A999959B9905441000000203CB650413D0AD7D39A9054413D0AD7B33AB6504148E17AA49E9054410AD7A37065B6504114AE4701BC905441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D79FD68E67B65041134BE55DBA90544135D2F01E68B650417D246FEEB9905441821D5CDF68B6504173A29959B9905441B9DCF5DE68B6504178D25359B990544142F280A062B650411F0B0317B590544181F106BE57B650416D8557AAAD9054412552713E3DB65041DA5839979B905441BEE91FAF3CB650412F5077359B905441C022FF433BB650419A9485079F9054419A2969043CB6504171F6B78B9F905441187B76164AB6504105B47B36A9905441887CB42158B6504181B691DCB29054419D61AC6665B65041D9B76EFABB905441C243A47065B650415AB44601BC905441574C9B0267B6504148045DCABA905441D79FD68E67B65041134BE55DBA905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351156 - 423613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000050000000AD7A37065B6504114AE4701BC905441F6285CDF68B650419A999959B9905441000000203CB650413D0AD7D39A9054413D0AD7B33AB6504148E17AA49E9054410AD7A37065B6504114AE4701BC905441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D79FD68E67B65041134BE55DBA90544135D2F01E68B650417D246FEEB9905441821D5CDF68B6504173A29959B9905441B9DCF5DE68B6504178D25359B990544142F280A062B650411F0B0317B590544181F106BE57B650416D8557AAAD9054412552713E3DB65041DA5839979B905441BEE91FAF3CB650412F5077359B905441C022FF433BB650419A9485079F9054419A2969043CB6504171F6B78B9F905441187B76164AB6504105B47B36A9905441887CB42158B6504181B691DCB29054419D61AC6665B65041D9B76EFABB905441C243A47065B650415AB44601BC905441574C9B0267B6504148045DCABA905441D79FD68E67B65041134BE55DBA905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423320 - 218527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A00000085EB5198E4BD50417B14AE9725375541F6285CCFE3BD50413D0AD71328375541CDCCCC7CE2BD5041F6285C5F3437554148E17A74E3BD5041A4703D0A35375541E17A142EF1BD5041A4703D5A2F375541AE47E1FA04BE504148E17A442137554152B81EF5E8BD5041C3F528FC1837554133333313E8BD5041D7A3707D19375541000000E0E6BD5041AE47E16A1D37554185EB5198E4BD50417B14AE9725375541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000FFE7D598E7BD50414EB7ED0D1B37554144C000E0E6BD5041DA18E26A1D375541B7675298E4BD5041F660AF9725375541FFFC5BCFE3BD5041F4A2D8132837554144D7CC7CE2BD5041AFC75B5F343755412806B0A4E2BD5041EF1CE17A3437554148E17A74E3BD5041A4703D0A35375541E17A142EF1BD5041A4703D5A2F3755414FC78291FDBD5041E40C338A263755411B1EE1FA04BE5041FED47A442137554152B81EF5E8BD5041C3F528FC1837554133333313E8BD5041D7A3707D19375541FFE7D598E7BD50414EB7ED0D1B375541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353230 - 56972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000260000003D0AD7532F8F5041295C8F62EE415541A4703D6A338F5041C3F528CCED4155418FC2F5F8358F5041EC51B8FEE84155410AD7A300378F5041F6285C0FE7415541CDCCCC4C388F50413D0AD7B3E341554114AE47D1328F50411F85EB91DD415541A4703D0A378F5041295C8FF2D241554185EB51E83C8F5041B81E85BBC94155419A9999B9358F504185EB5138CB41554148E17A842C8F50410AD7A320CD4155417B14AE97258F5041CDCCCC0CD04155417B14AE07248F5041D7A370FDC44155410AD7A370228F5041B81E856BBB4155415C8FC295128F5041295C8FD2C54155411F85EB01058F50415C8FC2A5CF41554152B81E25068F5041F6285CAFD0415541CDCCCC3C0A8F504114AE4751D941554100000000048F504148E17AE4E941554148E17AD4038F5041F6285C2FEE415541D7A3700D048F5041EC51B81EF141554185EB5198048F5041D7A3702DF5415541000000A0118F5041EC51B8EEF04155413D0AD7B3128F5041AE47E1BAF0415541CDCCCCEC138F5041C3F5288CF0415541713D0AC7158F5041D7A3702DF0415541713D0A17178F5041295C8FF2EF4155417B14AE97188F5041CDCCCCECEF415541C3F5280C1A8F50417B14AE07F04155411F85EB611B8F5041EC51B82EF0415541A4703D1A1C8F50415C8FC245F0415541333333331D8F5041C3F5281CF0415541D7A370DD1E8F5041D7A370BDEF41554185EB51A8208F5041D7A3706DEF41554100000060228F50418FC2F538EF41554100000090258F50411F85EB01EF41554133333383288F50413D0AD703EF4155415C8FC2952B8F5041D7A370BDEE4155413D0AD7532F8F5041295C8F62EE4155410E000000CDCCCCFC108F5041713D0A37EC415541295C8F52118F50417B14AE77EA41554185EB5178118F50417B14AE17E9415541F6285C3F118F5041B81E856BE7415541B81E85BB118F50418FC2F5B8E6415541A4703D1A128F5041AE47E19AE7415541A4703D1A128F5041EC51B83EEA41554148E17AC4118F504148E17AC4EB41554152B81E95118F5041E17A145EED415541B81E858B118F504133333343EF415541B81E858B118F5041AE47E10AF04155419A999919118F504114AE4701F0415541713D0AD7108F5041295C8F42EE415541CDCCCCFC108F5041713D0A37EC415541
+</a>
+
+<b>
+0106000000010000000103000000010000006C000000000000A0118F5041EC51B8EEF04155412A427E9C118F50414CB928DEF0415541DBE74A98118F5041335B52CAF0415541F702406F118F50414C697F08F0415541E90FA962118F504180D06F07F04155419A999919118F504114AE4701F041554165AFACDF108F5041F6D8827CEE415541713D0AD7108F5041295C8F42EE415541CDCCCCFC108F5041713D0A37EC415541AAE4B618118F50413A3B6DA5EB41554172625F35118F5041CB06EF0FEB415541DB209B53118F504134EFED6DEA4155416A8AAC65118F50410DAF7FC5E9415541A0883D6F118F50418316526CE94155411D22ED6F118F50419724ED65E9415541FB2CEF77118F5041E193461BE94155413FA51671118F5041E85152E1E84155411DB5C84E118F50414EC675DFE7415541E2408A45118F5041417CF999E7415541F6285C3F118F5041B81E856BE7415541B81E85BB118F50418FC2F5B8E64155416348FBCB118F5041FBFE87B5E6415541866910F6118F50413212C4ACE64155419A752001138F504154C12375E64155411B33EA5C148F50416C00B32CE6415541D24B52C6178F50412037C776E541554101525B9F188F504150769249E541554118E1AE04198F50411C3D2336E541554145971FB1198F5041F7572617E541554105A916F01E8F5041A28CAA27E441554168B3FB46288F5041E468BA8EE2415541F7BED4292A8F5041142D412FE24155417331A826308F504123302B00E1415541A2CD91F9318F5041E794D8A3E041554142FEE602328F504123F4CFA8E041554134E5B343328F5041032273CBE0415541D7A3700D358F50418FC2F548E2415541750EB928358F50418CFBC18BE24155418B3759F2368F504122125AECE641554130D75F01378F504144AD750DE741554168ED9053378F50413D51C638E64155415A3C5596378F50417716018CE5415541127EBE22388F504106ADAA20E4415541CDCCCC4C388F50413D0AD7B3E341554191AE670C378F50417093754DE2415541C1D00D61368F50419303CB8DE1415541EE178CCF338F5041713A55AEDE41554114AE47D1328F50411F85EB91DD415541BE854629338F504124F98CB4DC415541FAF43750338F50410CF89452DC415541A8B1714D348F5041BB868BD5D9415541A4703D0A378F5041295C8FF2D2415541A80B45A7388F504177F2E369D04155410C9455BB398F5041A4A253B8CE41554185EB51E83C8F5041B81E85BBC94155415A9AD72D388F504165EE35B6CA41554111EE0565348F5041DA6BE07ECB41554133B40E992D8F50416A8C57E7CC4155414FE0E0AA2C8F5041F060AF18CD4155413A7BB3A22C8F50413010611ACD4155417857F1842C8F50416C4C8B20CD415541ED14D872298F5041DA463D6CCE4155417B14AE97258F5041CDCCCC0CD041554189F07946258F5041E40602CECD41554181D66D7E248F50414F49FE45C841554106D90552248F5041C2CC9D20C7415541A7F0EF03248F504107F9DFFFC44155418FB360A8238F5041600AD4BFC24155413A8228E0228F50418554920CBE41554174EE3570228F5041323BCD6BBB41554142D9758C208F504168524FB0BC4155412F9D70EB1F8F5041C671F216BD4155410E2F7C0F1F8F5041846726A3BD4155419651E3301B8F5041273C152DC04155419D08CCC9198F50413EEDAE18C1415541B9572E8B198F5041B70AC441C1415541D85485E3188F5041599CC4AFC1415541EAF829DB188F5041B73F40B5C14155418226894A188F5041AB502414C2415541BBBFD6D5178F504194F9B460C24155418FF37347178F5041296C20BEC241554168E95D3A168F5041F9B3AC6EC3415541A00D8D2D138F5041D237F86EC5415541690E72A5128F5041BEC844C8C54155411B2BA720128F504114284D27C64155416F4060D0108F50414BAFA31AC7415541BBFF32FD0F8F504173AF73B3C7415541D901D5210D8F5041DFBBAFC4C94155416B1EDAF00C8F5041822B21E8C94155414B3E0240088F5041BE90164DCD41554175EB346E068F5041FE4C279ECE415541CA7C1604068F5041CC92F1EACE4155411F85EB01058F50415C8FC2A5CF41554152B81E25068F5041F6285CAFD0415541016D57290A8F5041853C3C28D9415541CDCCCC3C0A8F504114AE4751D94155412DF321B0048F50414EB27010E841554179CE7E09048F504156763FCBE9415541A82FBDFF038F5041FEED11EBE9415541A4EA85FE038F5041A87CC509EA41554118C3BED6038F504132232AF6ED415541B028BEDF038F50415386EDC3EE415541365BA80D048F504169095920F14155412C459521048F50419E1C60B5F14155419352832B048F504100CAA4FFF14155415501C434048F5041EDC9D844F241554185EB5198048F5041D7A3702DF5415541000000A0118F5041EC51B8EEF0415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353230 - 129553
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000260000003D0AD7532F8F5041295C8F62EE415541A4703D6A338F5041C3F528CCED4155418FC2F5F8358F5041EC51B8FEE84155410AD7A300378F5041F6285C0FE7415541CDCCCC4C388F50413D0AD7B3E341554114AE47D1328F50411F85EB91DD415541A4703D0A378F5041295C8FF2D241554185EB51E83C8F5041B81E85BBC94155419A9999B9358F504185EB5138CB41554148E17A842C8F50410AD7A320CD4155417B14AE97258F5041CDCCCC0CD04155417B14AE07248F5041D7A370FDC44155410AD7A370228F5041B81E856BBB4155415C8FC295128F5041295C8FD2C54155411F85EB01058F50415C8FC2A5CF41554152B81E25068F5041F6285CAFD0415541CDCCCC3C0A8F504114AE4751D941554100000000048F504148E17AE4E941554148E17AD4038F5041F6285C2FEE415541D7A3700D048F5041EC51B81EF141554185EB5198048F5041D7A3702DF5415541000000A0118F5041EC51B8EEF04155413D0AD7B3128F5041AE47E1BAF0415541CDCCCCEC138F5041C3F5288CF0415541713D0AC7158F5041D7A3702DF0415541713D0A17178F5041295C8FF2EF4155417B14AE97188F5041CDCCCCECEF415541C3F5280C1A8F50417B14AE07F04155411F85EB611B8F5041EC51B82EF0415541A4703D1A1C8F50415C8FC245F0415541333333331D8F5041C3F5281CF0415541D7A370DD1E8F5041D7A370BDEF41554185EB51A8208F5041D7A3706DEF41554100000060228F50418FC2F538EF41554100000090258F50411F85EB01EF41554133333383288F50413D0AD703EF4155415C8FC2952B8F5041D7A370BDEE4155413D0AD7532F8F5041295C8F62EE4155410E000000CDCCCCFC108F5041713D0A37EC415541295C8F52118F50417B14AE77EA41554185EB5178118F50417B14AE17E9415541F6285C3F118F5041B81E856BE7415541B81E85BB118F50418FC2F5B8E6415541A4703D1A128F5041AE47E19AE7415541A4703D1A128F5041EC51B83EEA41554148E17AC4118F504148E17AC4EB41554152B81E95118F5041E17A145EED415541B81E858B118F504133333343EF415541B81E858B118F5041AE47E10AF04155419A999919118F504114AE4701F0415541713D0AD7108F5041295C8F42EE415541CDCCCCFC108F5041713D0A37EC415541
+</a>
+
+<b>
+0106000000010000000103000000010000008E000000D9B15F3C248F50413100B03FE3415541CA49AE6C248F504151D26C37E34155411BCB83DE258F504141342BF8E2415541B46974AF268F504110866ED4E241554142C4F6ED278F50413839F49DE2415541D571E3AF288F50414038FC79E2415541F4BED4292A8F5041112D412FE24155418986BB732C8F5041787A67BBE1415541F92632AA2C8F5041D399A2B0E1415541EC77F8422E8F5041CBDECE5FE1415541523405912E8F50419C136050E1415541402A9A392F8F504116A50A2FE1415541A3173FCC2F8F504106AC0B12E1415541119B0CEE328F5041A9118126E141554175AA1F4E338F5041EABCDB59E14155411A6A965E338F504127A0A862E1415541C7C630E8338F504128FD35ACE141554163FC4542348F5041D7C65CDCE14155411A9EBE44348F50411CEFAEDDE141554161169747348F5041B75134DFE1415541625A085B348F50417CCA98E9E1415541A53495A1348F50419DC34E0FE2415541D7A3700D358F50418FC2F548E2415541BF164B2D358F5041789EF296E24155413297CC66358F50416CDABD23E3415541B93548A8358F504150E210C4E3415541734C7531368F50416670EB13E54155416D5F387C368F504173B5FCCAE5415541EA9B0DD1368F504113D0CA9AE6415541CBBE88D1368F5041C8B8FF9BE64155418A3759F2368F504125125AECE64155412BD75F01378F504141AD750DE741554163ED9053378F50413D51C638E6415541F9EF6681378F50418C962AC2E5415541CDCCCC4C388F50413D0AD7B3E341554190AE670C378F50417593754DE2415541A5709673368F5041232886A2E141554114AE47D1328F50411F85EB91DD4155412BF55B4B338F5041307CCE5EDC415541F9F43750338F50410AF89452DC41554101BFFD77338F504108BF86EEDB415541A4703D0A378F5041295C8FF2D2415541A30B45A7388F504179F2E369D0415541A0861479398F5041593B6120CF41554185EB51E83C8F5041B81E85BBC94155415628D52D388F50410B7036B6CA41554116EE0565348F5041DB6BE07ECB41554138B40E992D8F50416E8C57E7CC415541CB03871B2D8F504187095901CD415541DE3F12D12C8F5041B1D1C510CD4155413C859CB12C8F50416C4B4A17CD4155416F0118952C8F50416ABA321DCD4155417B57F1842C8F50416F4C8B20CD415541EA14D872298F5041DD463D6CCE4155417B14AE97258F5041CDCCCC0CD041554187F07946258F5041E10602CECD4155417DD66D7E248F50415149FE45C841554108D90552248F5041C5CC9D20C7415541A9F0EF03248F504104F9DFFFC4415541EAB360A8238F5041920CD4BFC2415541358228E0228F50418154920CBE4155416FEE3570228F5041353BCD6BBB41554140D9758C208F504163524FB0BC4155412C9D70EB1F8F5041C271F216BD415541102F7C0F1F8F5041886726A3BD4155417B4AB1D81B8F50417F6AFCBEBF415541949A36031B8F5041C4D90C4BC04155417F545DA01A8F504121B2E78BC0415541A208CCC9198F50413EEDAE18C1415541B7572E8B198F5041BC0AC441C1415541D45485E3188F50415C9CC4AFC1415541EDF829DB188F5041B63F40B5C14155418526894A188F5041AD502414C2415541C0BFD6D5178F504192F9B460C2415541861EEFB0178F5041DB95EB78C241554157BBC1E0168F50412F7E8101C34155416AE95D3A168F5041FEB3AC6EC3415541A50D8D2D138F5041D537F86EC54155414ACAE5D2128F5041C78D72AAC5415541300E72A5128F5041E8C844C8C54155415D2FA720128F5041FF244D27C64155416F1EDAF00C8F50417F2B21E8C9415541BA4B62D50C8F5041389001FCC941554167430293078F5041146546CACD4155417AEB346E068F5041014D279ECE415541CF7C1604068F5041CA92F1EACE4155411F85EB01058F50415C8FC2A5CF41554152B81E25068F5041F6285CAFD0415541046D57290A8F5041873C3C28D9415541CDCCCC3C0A8F504114AE4751D94155412FF321B0048F50414FB27010E84155417DCE7E09048F504158763FCBE9415541AC2FBDFF038F5041FFED11EBE9415541A6EA85FE038F5041AC7CC509EA41554197D3F0F5038F5041A0027AE2EA41554115C3BED6038F50417B232AF6ED415541B028BEDF038F50415686EDC3EE415541335BA80D048F50413B095920F1415541BFC3C431048F504118656E2EF24155415701C434048F5041F1C9D844F241554185EB5198048F5041D7A3702DF5415541000000A0118F5041EC51B8EEF041554125427E9C118F504147B928DEF0415541DBE74A98118F5041375B52CAF0415541851AB06E118F5041C4487308F04155419A999919118F504114AE4701F041554161AFACDF108F5041F8D8827CEE415541713D0AD7108F5041295C8F42EE415541CDCCCCFC108F5041713D0A37EC41554119C8922B118F50418CF20C43EB41554171625F35118F5041C906EF0FEB415541D8209B53118F504131EFED6DEA4155417C532D5D118F5041971BB514EA415541FE2CEF77118F5041C593461BE94155413EA51671118F5041E75152E1E84155411BB5C84E118F50414BC675DFE7415541E1408A45118F5041437CF999E7415541F6285C3F118F5041B81E856BE7415541B81E85BB118F50418FC2F5B8E64155419082A9BD118F50414C8983B8E6415541EF1B7DF1128F5041F39B6578E64155416D2DF3F5128F504195BA7777E6415541B72594F7128F5041EAE02077E641554196752001138F504150C12375E6415541C8F71E1E138F504154BA196FE64155415ACB6C24138F5041E195C96DE64155412CDEBED5148F5041BB108813E64155410959B130178F50417DB7F195E54155417C27850D188F5041A0C2F267E541554100525B9F188F50414F769249E5415541F47C58C3188F5041F65EAB42E54155411BB98FE2188F5041D5F6443CE5415541462E4F02198F5041AECB9736E541554114E1AE04198F50411C3D2336E54155414A971FB1198F5041F9572617E5415541C15E3A3C1B8F50414865B1D0E44155417CABA0B91E8F5041CF6CF230E441554123CA09F01F8F50413D7DE3FBE3415541A4015700218F50411C7150CDE34155415B5989B8218F5041AE2CCFADE34155417CEE0656228F5041DD43DF92E3415541D9B15F3C248F50413100B03FE3415541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353896 - 198665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000295C8F42598E504133333373BA355541666666364A8E5041713D0A47BA3555413D0AD723418E5041C3F5284CB9355541E17A14BE408E5041713D0AF7BA3555411F85EB714B8E5041333333F3BB355541666666F65A8E5041713D0A07BC355541AE47E1AA688E50413D0AD723BC355541D7A3701D698E50410AD7A3B0BA355541CDCCCC1C688E504185EB5168BA355541B81E854B5F8E5041EC51B86EBA355541295C8F42598E504133333373BA355541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F5130A22418E504176ECB753B9355541E17A14BE408E5041713D0AF7BA355541B040BC644A8E504126FB6CDABB355541D3CE24864A8E50419F1C80DDBB355541A2A68DD94A8E5041C24F2DE5BB35554154CED37D538E5041C7C77CFDBB3555419B3966F65A8E50411B170A07BC35554144309900618E5041E574BB13BC355541F1B3AA69628E5041CB36B216BC3555416F4670C1638E50416CC69017BC355541CF3FEE40658E5041A00682F7BB355541D9C25E27658E50412B451978BA355541C223A0F4638E5041E5AC5772BA35554197E4806C5C8E5041BCC7DB77BA3555419EFA1725598E50414846187FBA355541FF2631D74D8E5041876CC358BA3555412A98672F4A8E5041D328094EBA355541BFF7D01D4A8E504172DE224CBA355541F4556E114A8E504177DDF84BBA3555416FD9BEAB498E50414242D03FBA355541F5130A22418E504176ECB753B9355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353896 - 389843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000295C8F42598E504133333373BA355541666666364A8E5041713D0A47BA3555413D0AD723418E5041C3F5284CB9355541E17A14BE408E5041713D0AF7BA3555411F85EB714B8E5041333333F3BB355541666666F65A8E5041713D0A07BC355541AE47E1AA688E50413D0AD723BC355541D7A3701D698E50410AD7A3B0BA355541CDCCCC1C688E504185EB5168BA355541B81E854B5F8E5041EC51B86EBA355541295C8F42598E504133333373BA355541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F5130A22418E504176ECB753B9355541E17A14BE408E5041713D0AF7BA355541B040BC644A8E504126FB6CDABB355541D3CE24864A8E50419F1C80DDBB355541A2A68DD94A8E5041C24F2DE5BB35554154CED37D538E5041C7C77CFDBB3555419B3966F65A8E50411B170A07BC35554144309900618E5041E574BB13BC355541F1B3AA69628E5041CB36B216BC3555416F4670C1638E50416CC69017BC355541CF3FEE40658E5041A00682F7BB355541D9C25E27658E50412B451978BA355541C223A0F4638E5041E5AC5772BA35554197E4806C5C8E5041BCC7DB77BA3555419EFA1725598E50414846187FBA355541FF2631D74D8E5041876CC358BA3555412A98672F4A8E5041D328094EBA355541BFF7D01D4A8E504172DE224CBA355541F4556E114A8E504177DDF84BBA3555416FD9BEAB498E50414242D03FBA355541F5130A22418E504176ECB753B9355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354082 - 366670
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000060000005C8FC235B0CD5041A4703D6A0EC8544185EB510877CD5041C3F528CC22C85441AE47E1DA79CD50413333339329C8544185EB51B8ADCD50415C8FC21517C85441D7A370ADAFCD504148E17A4410C854415C8FC235B0CD5041A4703D6A0EC85441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000797BACF9AFCD50410ABD453B0FC854415C8FC235B0CD5041A4703D6A0EC854417DE89D9B8FCD5041E31074091AC85441A11F520877CD5041E47229CC22C85441AE47E1DA79CD50413333339329C854414F1651B8ADCD50415FDBC21517C854412EDA6FADAFCD50418F867A4410C85441797BACF9AFCD50410ABD453B0FC85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354690 - 1347683
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F538C5325141EC51B85E260D5541F6285C9FBB325141B81E850B240D554114AE4711AD325141CDCCCC3C280D5541B81E853B9D325141B81E85CB2C0D5541000000F09D3251417B14AE77320D554114AE47D19F325141D7A3709D410D55413D0AD753AA32514166666676430D5541F6285C1FB0325141CDCCCC0C450D5541AE47E1BAB4325141A4703DFA450D554152B81E25B9325141C3F5287C460D5541A4703D9ACA32514100000030410D5541AE47E16ACE325141CDCCCC7C3D0D5541CDCCCC3CD132514114AE47413A0D55415C8FC295D2325141B81E85EB360D5541C3F5281CCF325141E17A145E320D554114AE4751CB3251411F85EBF12E0D55417B14AE17C9325141F6285C7F2B0D55418FC2F538C5325141EC51B85E260D5541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE465636CA3251413A70843B2D0D5541D703690ECA325141F1DEB0032D0D5541C7426DB2C7325141978530B7290D5541CCFD1397C6325141D94BCA4F280D55418FC2F538C5325141EC51B85E260D5541C00DD6B8C23251415CF820CD250D5541AC933CB1BB325141D6AF1C26240D554114AE4711AD325141CDCCCC3C280D5541B81E853B9D325141B81E85CB2C0D5541000000F09D3251417B14AE77320D554114AE47D19F325141D7A3709D410D55413D0AD753AA32514166666676430D5541F6285C1FB0325141CDCCCC0C450D5541AE47E1BAB4325141A4703DFA450D554152B81E25B9325141C3F5287C460D5541A4703D9ACA32514100000030410D5541AE47E16ACE325141CDCCCC7C3D0D5541F27EDE3BD13251414711D03B3A0D5541E64EBC34D13251414277EA113A0D55415C8FC295D2325141B81E85EB360D55419A845525D03251417D227AB9330D5541735CE220D0325141FD73B8B3330D55414E8079F0CC3251418E4E4C79300D554159008158CC325141E6A976DF2F0D5541EE465636CA3251413A70843B2D0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354690 - 1347700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F538C5325141EC51B85E260D5541F6285C9FBB325141B81E850B240D554114AE4711AD325141CDCCCC3C280D5541B81E853B9D325141B81E85CB2C0D5541000000F09D3251417B14AE77320D554114AE47D19F325141D7A3709D410D55413D0AD753AA32514166666676430D5541F6285C1FB0325141CDCCCC0C450D5541AE47E1BAB4325141A4703DFA450D554152B81E25B9325141C3F5287C460D5541A4703D9ACA32514100000030410D5541AE47E16ACE325141CDCCCC7C3D0D5541CDCCCC3CD132514114AE47413A0D55415C8FC295D2325141B81E85EB360D5541C3F5281CCF325141E17A145E320D554114AE4751CB3251411F85EBF12E0D55417B14AE17C9325141F6285C7F2B0D55418FC2F538C5325141EC51B85E260D5541
+</a>
+
+<b>
+0106000000010000000103000000020000007000000029092459C5325141F27C0275260D554199B42CC8C63251411C52A76F280D5541EE465636CA3251413A70843B2D0D554159008158CC325141E6A976DF2F0D5541A4232121D03251414900F8B3330D55415C8FC295D2325141B81E85EB360D5541E64EBC34D13251414277EA113A0D5541CDCCCC3CD132514114AE47413A0D5541AE47E16ACE325141CDCCCC7C3D0D5541A4703D9ACA32514100000030410D554152B81E25B9325141C3F5287C460D5541B81E858BB8325141E17A142E480D554148E17A64BF325141333333734A0D554148E17A34C43251415C8FC2C54B0D554114AE47E1C6325141333333734C0D554133333393CA325141666666064D0D5541666666F6CF32514148E17AB44D0D554114AE4781D2325141CDCCCCBC4D0D5541CDCCCC6CD2325141713D0AB74E0D5541D7A370ADD232514152B81E654F0D554148E17A04D43251413D0AD7D3540D55417B14AEC7D432514114AE47B1570D554152B81E65D5325141333333035A0D5541295C8F72D73251418FC2F588600D5541D7A370DDD83251413D0AD7E3650D55418FC2F568DA3251413D0AD7C3650D5541000000C0DB3251410AD7A350650D55419A9999B9DD325141B81E858B630D5541713D0A77E032514152B81E05610D5541A4703DBAE1325141D7A370AD5F0D5541AE47E1CAE232514185EB51A85E0D5541A4703DEAE43251415C8FC2F55D0D554185EB5198E73251417B14AE775D0D554114AE4791E93251413D0AD7535D0D5541C3F5285CEC325141713D0A975D0D554114AE4771EF32514114AE47F15D0D5541295C8F12F132514114AE47415E0D5541666666B6F2325141EC51B86E5E0D5541C3F5281CF4325141B81E857B5E0D554166666616F5325141AE47E15A5E0D5541B81E85CBF5325141F6285CAF5E0D55415C8FC2E5F63251417B14AE775F0D554152B81EC5F8325141295C8F125F0D554100000000FC3251417B14AEB75D0D5541333333F305335141E17A144E5C0D5541D7A3709D0B335141000000F05A0D5541D7A3707D123351419A999919590D5541CDCCCC0C16335141333333D3570D554185EB51C81B335141E17A145E550D5541B81E858B20335141295C8F22540D554185EB51A825335141000000D0520D5541B81E853B2A335141666666B6510D5541B81E858B2C335141C3F528FC500D554185EB51A831335141D7A3700D4F0D554152B81E5535335141E17A143E4E0D55418FC2F52839335141E17A14AE4C0D5541AE47E17A3C335141E17A14CE4A0D554114AE4721413351413D0AD7A3470D5541AE47E1FA43335141B81E854B450D5541F6285CCF473351411F85EBD1410D5541F6285CFF493351415C8FC2653F0D5541333333434C3351417B14AED73B0D5541CDCCCCDC4D335141CDCCCC3C390D5541CDCCCCEC4D335141E17A14DE380D5541AE47E10A4E335141EC51B82E380D5541666666D6503351411F85EB31300D5541295C8FE25333514152B81E65300D55416666665654335141AE47E15A300D55410AD7A3F0543351419A999949300D554114AE474155335141295C8F62300D5541713D0AA757335141A4703D1A300D5541AE47E1BA583351411F85EB01300D5541713D0A575A335141C3F528EC2F0D5541E17A14EE59335141C3F528FC2C0D5541295C8FB23E335141AE47E1FA2F0D5541333333233C3351411F85EB41290D55419A99999936335141000000601F0D5541713D0A1733335141B81E859B180D5541A4703D1A313351417B14AE87160D5541EC51B8FE2E335141000000E0130D5541666666B62C335141000000A0100D554114AE471127335141295C8FC2150D554148E17AB421335141333333231A0D55418FC2F5B81C33514152B81EA51C0D5541F6285CAF173351415C8FC255200D5541AE47E1BA143351411F85EBE1210D55410AD7A3C012335141E17A14BE220D55410AD7A3A00B335141C3F528DC310D5541713D0A370B335141CDCCCC3C320D5541713D0AF70A3351410AD7A3A0320D554185EB51F80A335141AE47E14A330D554185EB51C80A335141B81E85CB330D55419A9999C90A335141EC51B87E340D5541333333F302335141CDCCCCAC350D5541C3F528BCFC3251419A999989350D5541666666E6F632514185EB5118360D554100000010F13251413D0AD793360D55415C8FC205EE325141A4703D1A370D5541EC51B87EEB325141295C8F42230D5541CDCCCC4CE53251415C8FC255230D55413D0AD7E3E13251413D0AD763230D5541A4703DEADA32514166666626230D5541A4703D1AD932514133333333230D5541A4703D5AD53251410AD7A3D0230D5541A4703D7AD3325141713D0A57240D5541CDCCCCFCCF3251413D0AD763250D5541B81E85FBCD325141CDCCCC3C260D554152B81EE5CC325141AE47E16A260D554152B81EA5CA325141A4703DDA260D5541AE47E13AC83251415C8FC255270D5541AE47E10AC7325141713D0AD7250D554129092459C5325141F27C0275260D55410F000000295C8F6235335141CDCCCC7C430D55419A99999928335141D7A370CD460D55413D0AD71310335141E17A14AE4D0D5541713D0A570F335141B81E853B4D0D5541E17A140E0F3351410AD7A3604C0D5541A4703DEA0D33514114AE47713B0D55410AD7A3300E335141E17A149E3A0D554185EB51882B335141E17A141E330D55419A9999793A33514185EB5188300D554148E17A343C335141333333C3300D55413D0AD7E33C33514114AE4721320D55413D0AD713403351417B14AEA73E0D5541000000303F335141713D0A97400D5541713D0A873D33514148E17A94410D5541295C8F6235335141CDCCCC7C430D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354939 - 361807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000023000000C3F528DCFD4251411F85EBD16A0655413333338300435141CDCCCC9C52065541EC51B8AE02435141295C8F02450655417B14AE470243514152B81EB540065541A4703DCA00435141A4703D5A3C06554185EB5118F542514148E17AA4390655410AD7A390F14251410000001048065541666666F6F24251410AD7A3504E065541B81E858BF742514152B81E055606554114AE47D1F7425141F6285CFF5606554152B81E15F742514185EB51F85A065541AE47E14AF542514185EB51F85C065541666666F6F24251418FC2F5F85F0655411F85EB41EE425141295C8F026306554100000090EC425141D7A3703D6406554100000050EB425141CDCCCC8C6706554133333323EC42514152B81E856C06554114AE47A1ED42514185EB51887006554185EB51C8EE42514152B81EA573065541B81E85EBEE425141A4703DDA77065541CDCCCCDCEE425141666666867B065541CDCCCC1CEF425141F6285C4F7F065541666666B6EF4251411F85EB01830655417B14AEF7EE425141333333638806554152B81E85EE425141000000908C065541EC51B8DEED425141B81E854B91065541AE47E10AED42514148E17AA495065541CDCCCC3CEC42514114AE472199065541F6285CBFEA425141333333839B065541666666D6E84251413D0AD7439C065541D7A3702DFD4251418FC2F5D89B0655419A9999F9FB425141AE47E16A8E0655411F85EB61FB4251411F85EB517F0655410AD7A3B0FB42514152B81E6577065541C3F528DCFD4251411F85EBD16A065541
+</a>
+
+<b>
+0106000000010000000103000000010000003200000085EB5118F542514148E17AA439065541E4A97DC1F142514137E37148470655418B6FE8E5F1425141FE767E8D4906554105FB6FCFF242514133AE51A24D0655414BC069B3F54251419F2F52EB52065541B81E858BF742514152B81E055606554114AE47D1F7425141F6285CFF5606554152B81E15F742514185EB51F85A065541E7CFB500F64251410D63282D5C06554126C0855DF4425141C06B2F2A5E065541666666F6F24251418FC2F5F85F065541E9E17A53EF425141ADD3F35162065541F896A6CFEC425141603F400F64065541AEB9617FEB4251419349550F6706554150D02465EB425141F0E62C0C6806554133333323EC42514152B81E856C0655412EE20ECCEC4251415CD9154B6E065541EBAE47A1ED42514151EC518870065541D0EB51C8EE425141C6B71EA573065541E31E85EBEE4251410F713DDA7706554118CDCCDCEE425141266666867B065541B115B4F6EE425141FD0C940E7D065541CDCCCC1CEF425141F6285C4F7F065541CA01D4B1EF425141FAF8BEE5820655415C6666B6EF425141C984EB01830655415A6666B6EF425141D684EB0183065541666666B6EF4251411F85EB0183065541B10B1CA5EF4251413455C87E830655418C8909A5EF425141DAFD4D7F830655414715AEF7EE425141D43333638806554172B81E85EE4251417FFFFF8F8C0655414BA7BB63EE425141163815838D065541D1D9D850EE425141D34C960C8E0655413F76512DEE42514195BA430F8F065541D408E923EE425141E7EEC2538F0655414B790A19EE425141B61DE6A28F065541EC51B8DEED425141B81E854B91065541BAF22C88ED425141937D341293065541A45317E5EC4251416D1319F09606554105A4A02AF2425141012DC4A59706554102C8BD5AF4425141727DE72C7706554127C3EB52F74251417952AE705D065541FD96A98FF8425141EDDF2F4655065541EDEA5B0EF9425141C86AC8974E065541326A67CCF9425141AC295E3842065541298E092CFA425141E70C9604410655416CE0D84E024351415B87763241065541A4703DCA00435141A4703D5A3C065541B03C2509FB4251419860440B3B06554185EB5118F542514148E17AA439065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355664 - 1285355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000F0000009A9999299C455141295C8F926101554152B81E759845514148E17AB46201554114AE47A19C455141713D0A476D0155411F85EBC19F45514148E17A546D015541295C8F229F45514100000070700155419A999949A0455141E17A140E73015541295C8F42A24551413D0AD7E372015541713D0AD7A845514114AE47C1720155415C8FC235AD455141EC51B88E70015541AE47E1BAB14551419A9999096D015541E17A142EB34551410AD7A3206A015541713D0A37B0455141A4703DBA64015541D7A3709DAC4551413D0AD7435E015541666666C6A5455141C3F5288C5F0155419A9999299C455141295C8F92610155410C000000333333D3A5455141CDCCCCEC6C0155419A999909A9455141F6285CCF6B01554100000090AB455141CDCCCCEC69015541F6285CBFAD45514114AE47F1680155415C8FC2A5AE4551418FC2F5486901554148E17A84AE4551413D0AD7236A015541B81E85EBAD455141B81E857B6A015541CDCCCCDCAB4551417B14AE776B0155415C8FC285A84551418FC2F5386D01554185EB5198A64551418FC2F5E86D015541C3F5289CA54551411F85EBB16D015541333333D3A5455141CDCCCCEC6C015541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000710927FBAE45514182D7B8FE6D0155413C29E046B0455141637F46096B01554134B58E4DB0455141F7B58C056B015541C6497355B0455141ADD4CBF36A0155418A791800AB45514121CBF69F6D0155410FDF1AFFA3455141831FEB336F0155418FA1B630A4455141FDCDA8D86D015541B191D1C5A5455141AB56B91C6D0155415FC73F38A74551413BF1DF706C015541F166938FA9455141CD2DD65A6B01554134B908C4A94551415C352E446B015541B8F8BA7DAE455141B9FBB93969015541608FF88DAF4551415C1E26C468015541D58D9CC2B0455141547B5564680155415FE130BFAB455141F2AD1F505E015541AB715908AB455141775B3F905E015541E7FB2F21A04551419A02F1C76001554152B81E759845514148E17AB46201554114AE47A19C455141713D0A476D0155411F85EBC19F45514148E17A546D015541295C8F229F45514100000070700155419A999949A0455141E17A140E73015541295C8F42A24551413D0AD7E372015541713D0AD7A845514114AE47C1720155415C8FC235AD455141EC51B88E70015541710927FBAE45514182D7B8FE6D015541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355664 - 3560216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000F0000009A9999299C455141295C8F926101554152B81E759845514148E17AB46201554114AE47A19C455141713D0A476D0155411F85EBC19F45514148E17A546D015541295C8F229F45514100000070700155419A999949A0455141E17A140E73015541295C8F42A24551413D0AD7E372015541713D0AD7A845514114AE47C1720155415C8FC235AD455141EC51B88E70015541AE47E1BAB14551419A9999096D015541E17A142EB34551410AD7A3206A015541713D0A37B0455141A4703DBA64015541D7A3709DAC4551413D0AD7435E015541666666C6A5455141C3F5288C5F0155419A9999299C455141295C8F92610155410C000000333333D3A5455141CDCCCCEC6C0155419A999909A9455141F6285CCF6B01554100000090AB455141CDCCCCEC69015541F6285CBFAD45514114AE47F1680155415C8FC2A5AE4551418FC2F5486901554148E17A84AE4551413D0AD7236A015541B81E85EBAD455141B81E857B6A015541CDCCCCDCAB4551417B14AE776B0155415C8FC285A84551418FC2F5386D01554185EB5198A64551418FC2F5E86D015541C3F5289CA54551411F85EBB16D015541333333D3A5455141CDCCCCEC6C015541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000710927FBAE45514182D7B8FE6D0155413C29E046B0455141637F46096B01554134B58E4DB0455141F7B58C056B015541C6497355B0455141ADD4CBF36A0155418A791800AB45514121CBF69F6D0155410FDF1AFFA3455141831FEB336F0155418FA1B630A4455141FDCDA8D86D015541B191D1C5A5455141AB56B91C6D0155415FC73F38A74551413BF1DF706C015541F166938FA9455141CD2DD65A6B01554134B908C4A94551415C352E446B015541B8F8BA7DAE455141B9FBB93969015541608FF88DAF4551415C1E26C468015541D58D9CC2B0455141547B5564680155415FE130BFAB455141F2AD1F505E015541AB715908AB455141775B3F905E015541E7FB2F21A04551419A02F1C76001554152B81E759845514148E17AB46201554114AE47A19C455141713D0A476D0155411F85EBC19F45514148E17A546D015541295C8F229F45514100000070700155419A999949A0455141E17A140E73015541295C8F42A24551413D0AD7E372015541713D0AD7A845514114AE47C1720155415C8FC235AD455141EC51B88E70015541710927FBAE45514182D7B8FE6D015541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355748 - 3061145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB54419A999939022551411F85EBD148FB54418FC2F578FF245141A4703D7A4CFB54413D0AD7A32E2551411F85EB6157FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441EC51B8CE45255141AE47E13A4FFB544114AE47A157255141666666F64EFB544114AE4771552551411F85EB414DFB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000072053F992E25514113A0CD6957FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441EC51B8CE45255141AE47E13A4FFB544114AE47A157255141666666F64EFB544114AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB54417D6CAB43022551412C925AFC47FB5441FAFCA1DCFF245141E9F220814CFB5441D7ED562C02255141B3C9151A4DFB5441CDEAEB6E142551418E02D65251FB54415E034A6221255141D310575154FB544172053F992E25514113A0CD6957FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355748 - 3348326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB54419A999939022551411F85EBD148FB54418FC2F578FF245141A4703D7A4CFB54413D0AD7A32E2551411F85EB6157FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441EC51B8CE45255141AE47E13A4FFB544114AE47A157255141666666F64EFB544114AE4771552551411F85EB414DFB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000072053F992E25514113A0CD6957FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441EC51B8CE45255141AE47E13A4FFB544114AE47A157255141666666F64EFB544114AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB54417D6CAB43022551412C925AFC47FB5441FAFCA1DCFF245141E9F220814CFB5441D7ED562C02255141B3C9151A4DFB5441CDEAEB6E142551418E02D65251FB54415E034A6221255141D310575154FB544172053F992E25514113A0CD6957FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285956 - 216973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51180AD95041B81E854BC3C95441A4703D8A08D95041D7A3701DC4C95441AE47E15A06D9504185EB5108CBC95441F6285CDFFED850418FC2F538D5C954413D75E9CAF6D85041956A7263DEC954415C8FC275F6D850410AD7A390DFC95441A4703D9AF2D85041E17A144EE8C95441F6285C9F07D950418FC2F518EFC954411F85EB0122D95041A4703D9AF7C95441A4703DFA25D9504185EB5178F0C954416C98DDCA2DD95041E8C71933E1C954412B6D4E322AD9504181B8E727DFC95441B092CFB828D9504105DE68AEDDC95441738E8F4C27D95041B087DF3FDBC954414D6A47A927D9504146A6AE93DAC95441B092CFB828D95041ACA03544DAC95441AD6023B02AD950410EC9BD53DBC95441630D368D2FD95041AEF585CFDDC954413333330334D950417B14AE17D5C95441CDCCCC8C33D95041B81E858BD3C95441295C8F1219D95041F6285CDFC7C9544185EB51180AD95041B81E854BC3C95441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000F6285CDFFED850418FC2F538D5C954417A23AB30F9D8504146366335DCC95441D5E3C275F6D85041E7F4A390DFC95441810C3E9AF2D850413FAD144EE8C95441DB6BF709F4D850419FA9E8C4E8C954417761F940F5D8504135C76829E9C954410F87245AF8D8504129AAB729EAC954417E529C79FBD8504171AB0F2CEBC954417FAE4E36FCD850412C9C0969EBC95441A3F5876AFCD8504101D2E979EBC954410BC75C9F07D95041975BF518EFC95441A96BBADE21D95041964856D9F7C954416BB7EC0C25D95041C26FD921F2C9544160D0DB0026D950419C1D636BF0C954412DC31B7B2AD95041E2EA9DABE7C954413AAC6D8E2AD95041D09DDD85E7C9544123D0A67A2BD95041033249B8E5C954417BDF8BDE2DD95041652C8436E1C954412B6D4E322AD9504181B8E727DFC95441B092CFB828D9504105DE68AEDDC95441738E8F4C27D95041B087DF3FDBC954414D6A47A927D9504146A6AE93DAC95441B092CFB828D95041ACA03544DAC954419220E9692BD95041FB979AB2DBC954413AB9678B2FD9504141E699CEDDC95441BFC006332ED9504111746571E0C954416C6C2DD52DD9504126AAAA25E1C9544106A281E72DD950415855E025E1C954410F73B7BB2FD9504132CDAFB3DDC95441266FB5E431D950417A1E0E74DAC95441E10699B034D95041A68A2C7FD5C9544166FF320334D950412C67AD17D5C95441FD3890FB33D95041D7D420FED4C954411C4980FA33D95041E0F192FAD4C9544196D649ED33D9504172755DCED4C9544167BCEBEA33D950412A7971C6D4C954413D6EAFE633D95041417245B8D4C95441B5B331E233D9504134843EA9D4C95441E52BC1DB33D950415A9FB293D4C95441337ECC8C33D9504148EC858BD3C95441B5958F1219D950412C0D5DDFC7C954410BB651180AD95041F33A854BC3C95441592B019909D95041434BA88EC3C95441C6253D8A08D95041DC90711DC4C95441AE47E15A06D9504185EB5108CBC95441F6285CDFFED850418FC2F538D5C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285956 - 361645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51180AD95041B81E854BC3C95441A4703D8A08D95041D7A3701DC4C95441AE47E15A06D9504185EB5108CBC95441F6285CDFFED850418FC2F538D5C954413D75E9CAF6D85041956A7263DEC954415C8FC275F6D850410AD7A390DFC95441A4703D9AF2D85041E17A144EE8C95441F6285C9F07D950418FC2F518EFC954411F85EB0122D95041A4703D9AF7C95441A4703DFA25D9504185EB5178F0C954416C98DDCA2DD95041E8C71933E1C954412B6D4E322AD9504181B8E727DFC95441B092CFB828D9504105DE68AEDDC95441738E8F4C27D95041B087DF3FDBC954414D6A47A927D9504146A6AE93DAC95441B092CFB828D95041ACA03544DAC95441AD6023B02AD950410EC9BD53DBC95441630D368D2FD95041AEF585CFDDC954413333330334D950417B14AE17D5C95441CDCCCC8C33D95041B81E858BD3C95441295C8F1219D95041F6285CDFC7C9544185EB51180AD95041B81E854BC3C95441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000F6285CDFFED850418FC2F538D5C954417A23AB30F9D8504146366335DCC95441D5E3C275F6D85041E7F4A390DFC95441810C3E9AF2D850413FAD144EE8C95441DB6BF709F4D850419FA9E8C4E8C954417761F940F5D8504135C76829E9C954410F87245AF8D8504129AAB729EAC954417E529C79FBD8504171AB0F2CEBC954417FAE4E36FCD850412C9C0969EBC95441A3F5876AFCD8504101D2E979EBC954410BC75C9F07D95041975BF518EFC95441A96BBADE21D95041964856D9F7C954416BB7EC0C25D95041C26FD921F2C9544160D0DB0026D950419C1D636BF0C954412DC31B7B2AD95041E2EA9DABE7C954413AAC6D8E2AD95041D09DDD85E7C9544123D0A67A2BD95041033249B8E5C954417BDF8BDE2DD95041652C8436E1C954412B6D4E322AD9504181B8E727DFC95441B092CFB828D9504105DE68AEDDC95441738E8F4C27D95041B087DF3FDBC954414D6A47A927D9504146A6AE93DAC95441B092CFB828D95041ACA03544DAC954419220E9692BD95041FB979AB2DBC954413AB9678B2FD9504141E699CEDDC95441BFC006332ED9504111746571E0C954416C6C2DD52DD9504126AAAA25E1C9544106A281E72DD950415855E025E1C954410F73B7BB2FD9504132CDAFB3DDC95441266FB5E431D950417A1E0E74DAC95441E10699B034D95041A68A2C7FD5C9544166FF320334D950412C67AD17D5C95441FD3890FB33D95041D7D420FED4C954411C4980FA33D95041E0F192FAD4C9544196D649ED33D9504172755DCED4C9544167BCEBEA33D950412A7971C6D4C954413D6EAFE633D95041417245B8D4C95441B5B331E233D9504134843EA9D4C95441E52BC1DB33D950415A9FB293D4C95441337ECC8C33D9504148EC858BD3C95441B5958F1219D950412C0D5DDFC7C954410BB651180AD95041F33A854BC3C95441592B019909D95041434BA88EC3C95441C6253D8A08D95041DC90711DC4C95441AE47E15A06D9504185EB5108CBC95441F6285CDFFED850418FC2F538D5C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>356576 - 26005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000EC51B80E6B40514148E17AA42CEF5441CDCCCC1C65405141666666562EEF544185EB51485D405141E17A143E31EF5441713D0AC7584051419A99995933EF5441666666365A4051413D0AD7E337EF5441A4703D0A65405141666666B633EF5441D7A370BD714051411F85EB2131EF54411F85EB51854051418FC2F5D82FEF544152B81E558740514152B81E352FEF544148E17A248B405141000000902CEF5441295C8F82A84051411F85EB811BEF544100000000A74051415C8FC2350FEF5441295C8FF2A6405141295C8FF20BEF5441C3F5286C984051417B14AEE70FEF5441CDCCCC2C914051413333333313EF54417B14AE07864051419A99998919EF54417B14AED7794051416666663621EF544148E17AF478405141C3F5286C22EF5441E17A141E724051410AD7A3C02BEF5441EC51B80E6B40514148E17AA42CEF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000035E1E69266405141B00DBDEB2DEF5441832C890468405141ADD359822DEF54414B2835AA6A405141CE2E23C12CEF54414506B13E6C40514170496B832CEF5441234EF3046D40514146EC2A652CEF5441E17A141E724051410AD7A3C02BEF544148E17AF478405141C3F5286C22EF54417B14AE27714051413333339319EF544152B81E656E40514185EB51B81AEF5441295C8F326E405141A4703D6A1DEF544185EB51A86E405141F6285C6F20EF54415C8FC28572405141713D0AC728EF5441A4ADE383664051419F0C84C12DEF544135E1E69266405141B00DBDEB2DEF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>356576 - 70386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000EC51B80E6B40514148E17AA42CEF5441CDCCCC1C65405141666666562EEF544185EB51485D405141E17A143E31EF5441713D0AC7584051419A99995933EF5441666666365A4051413D0AD7E337EF5441A4703D0A65405141666666B633EF5441D7A370BD714051411F85EB2131EF54411F85EB51854051418FC2F5D82FEF544152B81E558740514152B81E352FEF544148E17A248B405141000000902CEF5441295C8F82A84051411F85EB811BEF544100000000A74051415C8FC2350FEF5441295C8FF2A6405141295C8FF20BEF5441C3F5286C984051417B14AEE70FEF5441CDCCCC2C914051413333333313EF54417B14AE07864051419A99998919EF54417B14AED7794051416666663621EF544148E17AF478405141C3F5286C22EF5441E17A141E724051410AD7A3C02BEF5441EC51B80E6B40514148E17AA42CEF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000035E1E69266405141B00DBDEB2DEF5441832C890468405141ADD359822DEF54414B2835AA6A405141CE2E23C12CEF54414506B13E6C40514170496B832CEF5441234EF3046D40514146EC2A652CEF5441E17A141E724051410AD7A3C02BEF544148E17AF478405141C3F5286C22EF54417B14AE27714051413333339319EF544152B81E656E40514185EB51B81AEF5441295C8F326E405141A4703D6A1DEF544185EB51A86E405141F6285C6F20EF54415C8FC28572405141713D0AC728EF5441A4ADE383664051419F0C84C12DEF544135E1E69266405141B00DBDEB2DEF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>357597 - 347758
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE97DA515141295C8F32F3F55441D7A370DDCE51514100000020F3F55441295C8F22CE515141AE47E11AF3F55441EC51B82EBC5151418FC2F5A81AF654419A999969BD515141AE47E15A1AF654410AD7A300C4515141D7A3705D19F6544100000080CC515141AE47E1CA1AF654418FC2F538D9515141AE47E12A1FF65441666666C6E05151415C8FC2E525F65441295C8FB2E051514133333373F3F554417B14AE97DA515141295C8F32F3F55441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000B2F910DFD951514180306B31F3F55441DAF53BBACE515141048DFC20F3F55441D15C46FDC35151412C214A920BF6544152326798BD515141F12FB1071AF65441094EB4E8C35151412AA5770A19F654412E5EA08BCC515141E28BED661AF6544189F8909CD9515141B9E7F5F81EF65441333E9733DC51514176FD74D221F6544161AD56C6E0515141F915C8BD25F65441D7343BC6E0515141FF51EE7725F65441FD078CC5E0515141E59082BA23F65441847CEEC4E0515141F00EEB2922F654411EEAD0C3E0515141F633CA531FF654416EA2B5C1E051514181AF8DF819F654415D2397C0E0515141430D132017F654417CC03FBDE051514163C811A10EF65441E02421BDE05151413A0D3E530EF654414B13E8BCE0515141110522C20DF654417A05DABCE051514111CA659E0DF65441251D6B9EE0515141F2B504B10CF65441E2178CBBE0515141F224504D0AF65441E41222BBE05151417B49BC3F09F654416F0EB3BAE05151411C1E732508F654417614A9BAE0515141601E150C08F6544117EE41BAE0515141EA36CD0507F65441932E26BAE0515141CDF73EBF06F65441D2A800BAE05151411340D65F06F65441251D6B9EE0515141256206BC03F65441BA4995B6E05151412AE103AEFDF55441850BDDB5E0515141D89389D9FBF55441CF2986B4E05151413DB8AF71F8F55441ECAFCBB2E0515141F459980CF4F55441D61CA9B2E0515141AC82AEB4F3F55441AA62A3B2E05151414A731EA6F3F554415CBC98B2E05151410B3A0A8BF3F554412EB38FB2E0515141C7771074F3F55441B2F910DFD951514180306B31F3F55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366242 - 3055864
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000033333313AA2A5141295C8FC2A21955418FC2F528A72A5141713D0A079B195541CDCCCCDCA42A5141B81E858B9619554185EB51A8A32A514114AE47319419554152B81EA5952A5141EC51B8DE94195541666666A6902A51411F85EBF19519554148E17AB48E2A5141F6285C9F99195541713D0AB78E2A5141666666F69F19554152B81EE58A2A5141EC51B83EA4195541B81E85DB7D2A51418FC2F598A2195541E17A145E7A2A5141C3F528DCA2195541CDCCCC3C6F2A5141D7A3702DA4195541E17A14AE682A514148E17AE4A1195541713D0AD7672A5141B81E85EB9B1955418FC2F568602A5141713D0A279E195541F6285C6F592A514114AE47A19F1955417B14AEE7532A5141E17A14CEA319554100000010532A514152B81EF5A3195541E17A14FE4E2A5141D7A370CDA4195541CDCCCCAC4A2A5141A4703D1AA5195541AE47E1EA462A51418FC2F528A619554152B81EE5452A5141295C8F72A6195541D7A3708D3F2A5141713D0A17AB195541F6285C6F452A51411F85EBF1AB195541333333634A2A514148E17A14AC19554114AE4751542A514185EB51C8AD19554185EB5168542A51415C8FC225AE1955411F85EBB16A2A51415C8FC205AA1955415C8FC2D57C2A5141EC51B89EA61955417B14AEC77D2A51417B14AE47A6195541F6285CBF7F2A514185EB5178A61955411F85EBF1802A51411F85EB21A619554152B81EA5822A51415C8FC2A5A6195541E17A142E862A5141CDCCCC1CA6195541000000E0892A514133333313A6195541713D0A078C2A51415C8FC245A6195541295C8F52912A5141F6285C8FA5195541713D0A37952A5141EC51B8DEA419554185EB5188982A51417B14AE37A419554152B81E259E2A5141E17A14BEA3195541D7A370DDA22A514133333363A3195541AE47E17AA62A5141C3F528BCA219554133333313AA2A5141295C8FC2A2195541
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000B3A8BA42742A5141E238D1A87B1955418FC2F5D8702A5141C3F528AC7E195541E17A148E6C2A5141AE47E1FA7F195541E667FEE86A2A514158A5A47D7F19554141DE25346B2A51414FDFB88B81195541FFA8B49A6B2A514117FB222786195541896EA8016D2A5141A1C0168E87195541A316161C6F2A5141475BCF5A8719554156A798E9702A5141FAADC64086195541C31F306A722A5141BDCFE78C841955411EFD0E1E742A51417505592684195541E7372B53742A5141042C87198419554108C70F2C772A5141042C871984195541B5C97A2B792A5141C255353D84195541CA43B4537A2A5141593094C08519554185F0A6EC7B2A5141BE9E3368841955417B291FFD812A5141B7F61580841955415BAF6BCB852A5141B7F6158084195541E19564CD8A2A514122F17A80851955414CA79869912A5141D19E839A8619554101B0B2B7942A5141F6C4233589195541515385D2972A51415CA202E98A19554160C1E6539B2A51412725D0688A1955416F2CB0369D2A51410FE0753D89195541AF491909A02A514185C5B4018C195541E5351108A12A51411B7D4D388E195541F2FA1BB49F2A5141B034E66E901955419BC10AE69F2A5141884BCE5F94195541402AC0D1A02A514189CE68549419554119D6A16AA32A5141E9384334941955410274D1A1A32A5141E49055398D195541520E0106A32A5141BA4546D989195541D704A0349F2A5141671B8E408619554194C681539A2A514163AE5499831955412FD2D303932A514120014C7F8219554149F175018D2A514192D075E581195541AD90C9CD8B2A5141D3CBDAE58219554128E85BB3892A514180FBB07F831955418C0F18FF862A5141BB9B044C82195541E9194EFE842A5141FADAABE47F1955419459F596822A51416C70C9B1801955417F081A627E2A514194FDCC307E19554189CA8E7A7B2A514140B50B4A7D1955412CAF24DF762A5141AB057A857C19554161700B9F762A5141BCC8E9EF7B195541B3A8BA42742A5141E238D1A87B195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366242 - 3322890
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000033333313AA2A5141295C8FC2A21955418FC2F528A72A5141713D0A079B195541CDCCCCDCA42A5141B81E858B9619554185EB51A8A32A514114AE47319419554152B81EA5952A5141EC51B8DE94195541666666A6902A51411F85EBF19519554148E17AB48E2A5141F6285C9F99195541713D0AB78E2A5141666666F69F19554152B81EE58A2A5141EC51B83EA4195541B81E85DB7D2A51418FC2F598A2195541E17A145E7A2A5141C3F528DCA2195541CDCCCC3C6F2A5141D7A3702DA4195541E17A14AE682A514148E17AE4A1195541713D0AD7672A5141B81E85EB9B1955418FC2F568602A5141713D0A279E195541F6285C6F592A514114AE47A19F1955417B14AEE7532A5141E17A14CEA319554100000010532A514152B81EF5A3195541E17A14FE4E2A5141D7A370CDA4195541CDCCCCAC4A2A5141A4703D1AA5195541AE47E1EA462A51418FC2F528A619554152B81EE5452A5141295C8F72A6195541D7A3708D3F2A5141713D0A17AB195541F6285C6F452A51411F85EBF1AB195541333333634A2A514148E17A14AC19554114AE4751542A514185EB51C8AD19554185EB5168542A51415C8FC225AE1955411F85EBB16A2A51415C8FC205AA1955415C8FC2D57C2A5141EC51B89EA61955417B14AEC77D2A51417B14AE47A6195541F6285CBF7F2A514185EB5178A61955411F85EBF1802A51411F85EB21A619554152B81EA5822A51415C8FC2A5A6195541E17A142E862A5141CDCCCC1CA6195541000000E0892A514133333313A6195541713D0A078C2A51415C8FC245A6195541295C8F52912A5141F6285C8FA5195541713D0A37952A5141EC51B8DEA419554185EB5188982A51417B14AE37A419554152B81E259E2A5141E17A14BEA3195541D7A370DDA22A514133333363A3195541AE47E17AA62A5141C3F528BCA219554133333313AA2A5141295C8FC2A2195541
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000B3A8BA42742A5141E238D1A87B1955418FC2F5D8702A5141C3F528AC7E195541E17A148E6C2A5141AE47E1FA7F195541E667FEE86A2A514158A5A47D7F19554141DE25346B2A51414FDFB88B81195541FFA8B49A6B2A514117FB222786195541896EA8016D2A5141A1C0168E87195541A316161C6F2A5141475BCF5A8719554156A798E9702A5141FAADC64086195541C31F306A722A5141BDCFE78C841955411EFD0E1E742A51417505592684195541E7372B53742A5141042C87198419554108C70F2C772A5141042C871984195541B5C97A2B792A5141C255353D84195541CA43B4537A2A5141593094C08519554185F0A6EC7B2A5141BE9E3368841955417B291FFD812A5141B7F61580841955415BAF6BCB852A5141B7F6158084195541E19564CD8A2A514122F17A80851955414CA79869912A5141D19E839A8619554101B0B2B7942A5141F6C4233589195541515385D2972A51415CA202E98A19554160C1E6539B2A51412725D0688A1955416F2CB0369D2A51410FE0753D89195541AF491909A02A514185C5B4018C195541E5351108A12A51411B7D4D388E195541F2FA1BB49F2A5141B034E66E901955419BC10AE69F2A5141884BCE5F94195541402AC0D1A02A514189CE68549419554119D6A16AA32A5141E9384334941955410274D1A1A32A5141E49055398D195541520E0106A32A5141BA4546D989195541D704A0349F2A5141671B8E408619554194C681539A2A514163AE5499831955412FD2D303932A514120014C7F8219554149F175018D2A514192D075E581195541AD90C9CD8B2A5141D3CBDAE58219554128E85BB3892A514180FBB07F831955418C0F18FF862A5141BB9B044C82195541E9194EFE842A5141FADAABE47F1955419459F596822A51416C70C9B1801955417F081A627E2A514194FDCC307E19554189CA8E7A7B2A514140B50B4A7D1955412CAF24DF762A5141AB057A857C19554161700B9F762A5141BCC8E9EF7B195541B3A8BA42742A5141E238D1A87B195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358080 - 49047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000006666669628565141713D0AD799E85441C3F5289C1D5651419A99996996E854419A99990911565141CDCCCC7C92E85441B81E859B03565141AE47E14A8EE85441000000800256514148E17A0497E8544166666696015651418FC2F5289AE85441B81E852B01565141D7A3704D9CE854418FC2F51801565141666666569DE85441F6285C2F0156514148E17A149EE854413D0AD7E301565141A4703DFA9EE85441A4703D9A02565141333333E39FE854410AD7A3B00156514152B81EB5A2E85441AE47E1FA005651417B14AE57A5E85441CDCCCCACFF555141666666F6ADE854411F85EBC103565141713D0A07AFE85441AE47E1BA05565141000000F0ADE854415C8FC2B50756514152B81E15ADE854417B14AE7709565141C3F5282CADE85441A4703DDA0B5651417B14AE57AEE85441F6285C7F0F5651413D0AD7A3B0E854417B14AE4713565141AE47E1DAB1E85441AE47E1FA15565141713D0A37B2E85441E17A148E17565141713D0A37B2E854419A999959195651413D0AD7B3B1E85441713D0A971B565141F6285C3FB0E85441EC51B88E2056514152B81E05ADE85441AE47E1BA265651411F85EBF1A8E8544152B81E652B5651413D0AD7D3A7E85441F6285CAF3056514114AE47E1A7E854415C8FC2953156514114AE4781A4E854413D0AD7D3325651417B14AE37A2E854418FC2F598365651417B14AE379EE854416666669628565141713D0AD799E85441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000713D0A971B565141F6285C3FB0E8544124EC72811A565141563556E4AFE85441CE7BC78D1956514123DF8976B0E85441AB61E8071856514120D3C0E1B0E85441D24257DC15565141C13EBA2FB1E85441E58A0D5913565141940080EBB0E85441FEEA55FF0F565141B2BD9301B0E85441FB81C1FA0D565141EC1F2904AFE85441AF3571C50B5651412282BE06AEE85441D0FE4D700A56514176A1671FACE854410C79759C0856514135CA7483ABE85441EF76284006565141058071AAABE85441CF68124F04565141FF67DF80ACE85441AC9FD5F901565141E4A2DD7DAEE85441C2F37CE9015651414201CC8BAEE854411E9FC3EE05565141808A7998AFE85441D7A370DD15565141CDCCCC1CB4E85441713D0A971B565141F6285C3FB0E85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358080 - 89186
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000006666669628565141713D0AD799E85441C3F5289C1D5651419A99996996E854419A99990911565141CDCCCC7C92E85441B81E859B03565141AE47E14A8EE85441000000800256514148E17A0497E8544166666696015651418FC2F5289AE85441B81E852B01565141D7A3704D9CE854418FC2F51801565141666666569DE85441F6285C2F0156514148E17A149EE854413D0AD7E301565141A4703DFA9EE85441A4703D9A02565141333333E39FE854410AD7A3B00156514152B81EB5A2E85441AE47E1FA005651417B14AE57A5E85441CDCCCCACFF555141666666F6ADE854411F85EBC103565141713D0A07AFE85441AE47E1BA05565141000000F0ADE854415C8FC2B50756514152B81E15ADE854417B14AE7709565141C3F5282CADE85441A4703DDA0B5651417B14AE57AEE85441F6285C7F0F5651413D0AD7A3B0E854417B14AE4713565141AE47E1DAB1E85441AE47E1FA15565141713D0A37B2E85441E17A148E17565141713D0A37B2E854419A999959195651413D0AD7B3B1E85441713D0A971B565141F6285C3FB0E85441EC51B88E2056514152B81E05ADE85441AE47E1BA265651411F85EBF1A8E8544152B81E652B5651413D0AD7D3A7E85441F6285CAF3056514114AE47E1A7E854415C8FC2953156514114AE4781A4E854413D0AD7D3325651417B14AE37A2E854418FC2F598365651417B14AE379EE854416666669628565141713D0AD799E85441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000713D0A971B565141F6285C3FB0E8544124EC72811A565141563556E4AFE85441CE7BC78D1956514123DF8976B0E85441AB61E8071856514120D3C0E1B0E85441D24257DC15565141C13EBA2FB1E85441E58A0D5913565141940080EBB0E85441FEEA55FF0F565141B2BD9301B0E85441FB81C1FA0D565141EC1F2904AFE85441AF3571C50B5651412282BE06AEE85441D0FE4D700A56514176A1671FACE854410C79759C0856514135CA7483ABE85441EF76284006565141058071AAABE85441CF68124F04565141FF67DF80ACE85441AC9FD5F901565141E4A2DD7DAEE85441C2F37CE9015651414201CC8BAEE854411E9FC3EE05565141808A7998AFE85441D7A370DD15565141CDCCCC1CB4E85441713D0A971B565141F6285C3FB0E85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358491 - 1293336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000024000000713D0AB754645141AE47E1EA12C954411F85EB6153645141EC51B82E13C95441CDCCCCDC4F645141A4703D4A13C95441EC51B88E4C645141A4703D4A13C95441295C8F9249645141AE47E1EA12C954413D0AD7A346645141713D0A4712C9544114AE47114364514185EB512811C95441E17A14AE416451418FC2F56810C9544114AE47E140645141713D0A7710C95441A4703D8A40645141D7A3700D11C95441A4703D5A40645141B81E856B14C95441333333633F645141E17A147E21C95441C3F5286C3E6451410AD7A3902EC954411F85EB3146645141000000303EC954419A9999194A645141F6285CCF45C9544114AE47714F6451419A99995949C954413D0AD7D351645141333333F346C95441333333935464514114AE47B144C95441EC51B88E57645141713D0AB741C954413D0AD7635B645141CDCCCC4C3EC9544185EB51085D645141666666063CC954417B14AE675D645141295C8F9239C954411F85EBB15C645141B81E854B39C95441E17A142E5C6451417B14AE1739C95441666666E65A645141D7A3700D36C9544133333313586451411F85EBE130C95441F6285C6F57645141AE47E1DA2EC954413D0AD75357645141E17A143E2CC954419A999949586451410AD7A39024C954413D0AD7835964514185EB51681CC95441A4703DBA59645141E17A148E1BC95441713D0A375A6451413D0AD7131AC954419A999989586451413D0AD7E319C9544100000080586451413333331317C954419A9999A954645141CDCCCCDC16C95441713D0AB754645141AE47E1EA12C95441
+</a>
+
+<b>
+0106000000010000000103000000010000002600000014AE47714F6451419A99995949C95441A227A09E53645141936C3C7A45C954416EF012FD55645141103F034843C9544155775BA95A645141F0C7F7F23EC954413A37BE275B6451415C7DCC7D3EC95441A089001F5B6451419090238A3EC954413D0AD7635B645141CDCCCC4C3EC9544185EB51085D645141666666063CC954417B14AE675D645141295C8F9239C954411F85EBB15C645141B81E854B39C95441E17A142E5C6451417B14AE1739C95441AAAFC5BD5B64514183C1933338C95441B7B480ED5A645141303DF45136C95441146A37105A645141EBA7619734C954419A02C3B058645141C106973332C9544133333313586451411F85EBE130C954417E3A576B57645141A36A87FF2EC954413D0AD75357645141E17A143E2CC954419A999949586451410AD7A39024C95441305EFF66596451418EF6C49B1DC95441E29556BD5964514114E010EC1BC95441098E3546586451410E1359E11BC954414F99433758645141B48DAE4417C95441925FB8895464514159D102EB16C95441925FB88954645141846A3F7913C95441266E092353645141846A3F7913C95441C86CC42A4F6451412532F9C313C95441ADFAF2C74B645141CA754D6A13C95441E08B640D4764514114FDF5B612C95441DD46CB6E4364514149D3009B11C9544181C6289640645141946AD43A10C95441A4703D8A40645141D7A3700D11C95441A4703D5A40645141B81E856B14C95441333333633F645141E17A147E21C95441C3F5286C3E6451410AD7A3902EC954411F85EB3146645141000000303EC954419A9999194A645141F6285CCF45C9544114AE47714F6451419A99995949C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358491 - 3330364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000024000000713D0AB754645141AE47E1EA12C954411F85EB6153645141EC51B82E13C95441CDCCCCDC4F645141A4703D4A13C95441EC51B88E4C645141A4703D4A13C95441295C8F9249645141AE47E1EA12C954413D0AD7A346645141713D0A4712C9544114AE47114364514185EB512811C95441E17A14AE416451418FC2F56810C9544114AE47E140645141713D0A7710C95441A4703D8A40645141D7A3700D11C95441A4703D5A40645141B81E856B14C95441333333633F645141E17A147E21C95441C3F5286C3E6451410AD7A3902EC954411F85EB3146645141000000303EC954419A9999194A645141F6285CCF45C9544114AE47714F6451419A99995949C954413D0AD7D351645141333333F346C95441333333935464514114AE47B144C95441EC51B88E57645141713D0AB741C954413D0AD7635B645141CDCCCC4C3EC9544185EB51085D645141666666063CC954417B14AE675D645141295C8F9239C954411F85EBB15C645141B81E854B39C95441E17A142E5C6451417B14AE1739C95441666666E65A645141D7A3700D36C9544133333313586451411F85EBE130C95441F6285C6F57645141AE47E1DA2EC954413D0AD75357645141E17A143E2CC954419A999949586451410AD7A39024C954413D0AD7835964514185EB51681CC95441A4703DBA59645141E17A148E1BC95441713D0A375A6451413D0AD7131AC954419A999989586451413D0AD7E319C9544100000080586451413333331317C954419A9999A954645141CDCCCCDC16C95441713D0AB754645141AE47E1EA12C95441
+</a>
+
+<b>
+0106000000010000000103000000010000002600000014AE47714F6451419A99995949C95441A227A09E53645141936C3C7A45C954416EF012FD55645141103F034843C9544155775BA95A645141F0C7F7F23EC954413A37BE275B6451415C7DCC7D3EC95441A089001F5B6451419090238A3EC954413D0AD7635B645141CDCCCC4C3EC9544185EB51085D645141666666063CC954417B14AE675D645141295C8F9239C954411F85EBB15C645141B81E854B39C95441E17A142E5C6451417B14AE1739C95441AAAFC5BD5B64514183C1933338C95441B7B480ED5A645141303DF45136C95441146A37105A645141EBA7619734C954419A02C3B058645141C106973332C9544133333313586451411F85EBE130C954417E3A576B57645141A36A87FF2EC954413D0AD75357645141E17A143E2CC954419A999949586451410AD7A39024C95441305EFF66596451418EF6C49B1DC95441E29556BD5964514114E010EC1BC95441098E3546586451410E1359E11BC954414F99433758645141B48DAE4417C95441925FB8895464514159D102EB16C95441925FB88954645141846A3F7913C95441266E092353645141846A3F7913C95441C86CC42A4F6451412532F9C313C95441ADFAF2C74B645141CA754D6A13C95441E08B640D4764514114FDF5B612C95441DD46CB6E4364514149D3009B11C9544181C6289640645141946AD43A10C95441A4703D8A40645141D7A3700D11C95441A4703D5A40645141B81E856B14C95441333333633F645141E17A147E21C95441C3F5286C3E6451410AD7A3902EC954411F85EB3146645141000000303EC954419A9999194A645141F6285CCF45C9544114AE47714F6451419A99995949C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489573 - 109012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000D200000085EB5198F7235141000000F09A205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417B14AEA705245141000000A09B205541666666660B245141E17A14FE98205541B81E853B0B24514185EB515897205541C3F5289C0D2451411F85EB31982055413D0AD75315245141333333F39A2055419A9999890B2451411F85EB4196205541E17A145E0C24514152B81EA5932055413D0AD7830B2451418FC2F5589320554114AE47910A245141F6285CAF93205541000000100A24514166666606942055415C8FC2F5092451410AD7A390942055411F85EBF1082451411F85EBA19420554100000070082451410000002094205541F6285CAF0724514114AE471194205541EC51B89E0624514185EB51089420554148E17A8407245141A4703DFA942055417B14AE4707245141295C8F1296205541AE47E15A05245141CDCCCC1C972055415C8FC2B5032451410AD7A3F097205541D7A3702D02245141CDCCCC0C9820554185EB51B8022451417B14AEF795205541EC51B85E00245141E17A14BE9620554114AE47E1FF235141000000C098205541EC51B86EFF235141A4703D2A99205541333333A3FE2351419A9999F99820554114AE47D1FC235141A4703D2A992055415C8FC225FC23514152B81EA599205541A4703D7AFB235141CDCCCC9C992055419A999959FB2351419A9999F9982055419A999949FC235141713D0A6798205541B81E854BFC235141CDCCCC6C97205541A4703D7AFB2351419A99996997205541295C8F82FB2351413D0AD7639620554185EB5118FB235141D7A3702D95205541A4703D7AFB2351413333339391205541D7A3708DFD235141A4703D6A9120554152B81E85FD235141713D0AC790205541CDCCCC0CFF23514152B81E859020554148E17A840324514148E17A64902055419A999979042451410000001091205541D7A370ED05245141EC51B82E92205541CDCCCC0C07245141B81E855B93205541000000A008245141EC51B82E93205541EC51B82E0A245141C3F528DC92205541333333030D24514166666606922055413D0AD7C30F245141D7A3704D912055413D0AD7231224514185EB51A89020554148E17A5415245141EC51B8BE8F2055419A99995918245141295C8FF28E205541B81E85CB1C245141000000C08D205541295C8F4221245141666666368C2055417B14AEE7242451410AD7A3F08A20554148E17A5426245141D7A3706D8A205541D7A3700D27245141EC51B8EE89205541B81E85CB272451418FC2F548892055413D0AD74328245141F6285CCF832055418FC2F568292451415C8FC2957D205541F6285C8F29245141333333C37C205541E17A14DE2324514152B81E957E205541713D0A9723245141AE47E1BA7E205541EC51B86E23245141EC51B8CE7E2055411F85EB4123245141000000E07E205541295C8F222324514114AE47017F205541C3F5280C23245141000000207F2055419A9999F922245141CDCCCC4C7F205541C3F528EC222451417B14AE877F2055411F85EBE122245141EC51B8DE7F20554114AE47E1222451411F85EB41802055417B14AEE722245141F6285C7F80205541295C8FF2222451411F85EBC180205541CDCCCC0C232451411F85EB4181205541F6285C1F23245141295C8F8281205541B81E853B23245141EC51B8DE812055413333336323245141EC51B83E822055410000009023245141D7A3708D822055411F85EBC1232451419A9999D982205541000000C024245141A4703D5A84205541AE47E19A242451413D0AD733862055410AD7A31023245141F6285C1F87205541A4703DDA22245141F6285C4F8720554114AE476122245141A4703DBA872055418FC2F518222451411F85EBE1872055413D0AD7B3212451417B14AE0788205541D7A3704D2124514148E17A24882055415C8FC2F5202451419A9999298820554152B81E8520245141295C8F2288205541EC51B83E20245141E17A140E8820554114AE470120245141EC51B8EE87205541713D0AA71F245141F6285CAF87205541666666561F245141EC51B86E87205541E17A140E1F245141A4703D3A87205541000000C01E245141C3F528FC862055410AD7A3801E245141A4703DEA862055417B14AE271E245141295C8FE286205541713D0AC71D245141295C8FE286205541B81E857B1D245141CDCCCCEC86205541713D0A271D245141A4703D0A87205541D7A370CD1C245141F6285CFF862055418FC2F5681C24514148E17AE486205541D7A370FD1B2451411F85EBC1862055417B14AEA71B2451415C8FC2B586205541333333631B245141295C8FB28620554148E17A041B2451411F85EBC186205541D7A370BD1A24514152B81ED5862055418FC2F5381A245141AE47E1FA862055413D0AD7A3192451415C8FC2258720554114AE472119245141295C8FA287205541CDCCCC3C18245141CDCCCCDC872055411F85EBE117245141CDCCCC9C872055410AD7A330172451419A9999B98720554114AE4751162451418FC2F5C887205541713D0A771524514114AE47518820554148E17AB414245141A4703D7A89205541C3F5282C1424514148E17AB489205541333333E313245141B81E85FB8820554148E17AD41324514148E17A348820554185EB515813245141295C8FF287205541666666061324514114AE470188205541CDCCCCAC122451417B14AE1788205541CDCCCC5C1224514152B81E358820554152B81E05122451419A99995988205541C3F528BC112451413D0AD78388205541E17A146E11245141CDCCCCBC88205541CDCCCC2C11245141333333F388205541C3F528FC10245141AE47E12A89205541F6285CDF10245141F6285C5F89205541E17A14CE102451411F85EB9189205541B81E85CB1024514185EB51B88920554114AE47D1102451410AD7A3E089205541295C8FE210245141713D0A078A2055419A9999F910245141CDCCCC2C8A205541D7A3700D11245141AE47E16A8A20554166666616112451410AD7A3A08A205541B81E850B112451415C8FC2E58A205541AE47E1EA10245141D7A3702D8B205541AE47E1BA102451411F85EB618B205541666666761024514114AE47918B205541CDCCCC2C10245141A4703DBA8B205541666666860F245141666666068C2055418FC2F5480E245141713D0AA78C2055419A9999190C24514185EB51488D205541B81E85CB0B2451410AD7A3908D2055415C8FC2D509245141713D0A078E205541295C8FC208245141EC51B8BE8E2055413D0AD793072451418FC2F5988E2055413D0AD7F306245141E17A140E8E205541CDCCCC0C07245141C3F528CC8B2055418FC2F5F8052451419A9999A989205541EC51B8FE0324514114AE47A1892055418FC2F5E8022451413D0AD7038A2055413D0AD7E3012451413D0AD7138A205541F6285CFF00245141A4703DBA89205541D7A3709D002451417B14AE478920554166666646FF235141295C8FE289205541F6285C7FFE2351410AD7A3808920554114AE4701FE235141E17A14CE892055419A9999B9FC23514114AE47218A2055417B14AE77FC2351410AD7A3008B20554133333393FB235141295C8F528B205541B81E85FBFA23514114AE47B18A20554100000060FA235141F6285CEF8B205541713D0AD7FA235141AE47E1EA8C205541D7A3707DFA235141E17A149E8D205541EC51B83EF92351413D0AD7B38E20554114AE4731F82351415C8FC2158F205541C3F5282CF7235141D7A370FD8E2055418FC2F598F623514114AE47B18F20554166666626F62351410AD7A3A08F20554166666626F623514148E17AC48E2055419A999929F52351418FC2F5188E205541CDCCCC3CF4235141EC51B8BE8D205541F6285C3FF3235141333333038D205541C3F5289CF2235141713D0A478C205541666666E6F1235141F6285CAF8B205541A4703DAAF02351417B14AE678C205541F6285C1FF02351413D0AD7338D2055413D0AD753EF235141295C8F528D205541CDCCCC5CED2351413D0AD7738E205541F6285C8FEC2351411F85EB218E20554185EB5158E823514114AE47A19020554133333303E7235141F6285C2F9120554148E17AD4E5235141295C8F829120554148E17A84E4235141AE47E14A92205541295C8F32E3235141E17A149E93205541C3F5289CE22351416666667694205541713D0A17E223514114AE47F194205541CDCCCC2CE2235141CDCCCCAC952055413D0AD7E3DF235141D7A370ED952055418FC2F5E8DE23514114AE47419620554114AE47A1DE235141B81E85EB95205541713D0A17D9235141713D0AC79A2055413D0AD703DA235141EC51B80E9B205541AE47E18ADC235141EC51B87E9A205541AE47E13ADE235141713D0A579B20554152B81ED5DE235141A4703D1A9C2055417B14AEB7E223514148E17AE49C205541713D0A07DE2351418FC2F508A02055419A999969D9235141F6285CCFA32055419A9999E9DE2351413D0AD7B3A7205541F6285C8FE1235141C3F528DCA620554185EB51F8E323514114AE4741A520554148E17A04E6235141E17A14EEA3205541D7A3704DE7235141D7A3705DA22055410AD7A360E6235141D7A3703DA1205541AE47E16AE6235141EC51B88EA020554148E17AA4F2235141A4703D7A9B20554185EB5198F7235141000000F09A205541
+</a>
+
+<b>
+0106000000010000000103000000010000007E0100002EE0C82D07245141B1E3DA57932055411D8A065909245141297B680893205541E6BB083D0C2451418993DE4092205541333333030D24514166666606922055416E68EDC20F2451413FF7AD4D91205541971E0BED1424514111DC4EDC8F20554148E17A5415245141EC51B8BE8F205541D5F48F81152451419AA2D0B28F205541251E52C519245141DC7D92908E205541B41EBC541D2451415532C0908D205541340733A01F24514182DA75C68C205541E245FAEB22245141DF15E2A18B2055417A025B3F252451416A8A1BD18A2055416763635526245141F757D16C8A205541B5956E6A262451412C76665E8A205541CFCAEC9926245141FB9DDC3D8A205541A8699DA526245141414FDA358A205541875362CB26245141CFEEF91B8A205541813B75D026245141550680188A20554145DF367127245141141EB697892055417916AFD7272451411B5943BB88205541967223EE272451410612B1B5872055413D0AD74328245141F6285CCF832055414F824C89282451412EFBBB5582205541B0500E3F29245141F74194797E2055410BAA785D29245141325C38D47D2055410D70817D29245141E58BE8C87C2055417F7EE93C2924514190668FDD7C2055417B9ABC7C2724514170ADD96C7D20554194A2D79E26245141104DCBB37D20554181C101DD25245141EE5AC4F17D205541D2E0958B2424514112A3A55D7E205541A4F51CD623245141F32187997E205541C7C11D992324514113C3C6B97E205541713D0A9723245141AE47E1BA7E2055414730213323245141CD25B2EF7E2055414A4C0814232451419B1B34157F205541C3F5280C23245141000000207F2055418B16A20123245141F9DC68397F205541BEA130F6222451416A3BBD5B7F205541D0025BF4222451416A9EC6637F205541E62711E6222451414A6A78BB7F205541351598E422245141C72FBC6180205541987558E5222451415D00F3688020554147AAAF0A2324514180D69B37812055412241C64E2324514124A54D0D82205541F55F8CAD232451410B4F5EB6822055413C54AEA0242451418ADBD32A84205541000000C024245141A4703D5A84205541AE47E19A242451413D0AD73386205541F5A1A84623245141ADCD16FF862055410AD7A31023245141F6285C1F87205541A4703DDA22245141F6285C4F87205541D329769922245141B01B99888720554114AE476122245141A4703DBA87205541298ABE4C2224514185E381C5872055418FC2F518222451411F85EBE1872055413D0AD7B3212451417B14AE0788205541D7A3704D2124514148E17A24882055415C8FC2F5202451419A9999298820554152B81E8520245141295C8F2288205541D308E648202451418E810A1188205541EC51B83E20245141E17A140E8820554114AE470120245141EC51B8EE87205541E0A402C11F245141383098C187205541713D0AA71F245141F6285CAF8720554134E7EA841F24514160060294872055413EF4B2191F24514171E8AB42872055416B504DAD1E2451416126DFF686205541A0817DA81E2451417DC282F5862055412D8ACBA71E245141006D50F5862055418F419F541E245141D69C70E68620554116B3D2241E245141295C8FE286205541C58782CB1D245141295C8FE2862055416282F9A91D245141CB4580E686205541B81E857B1D245141CDCCCCEC86205541713D0A271D245141A4703D0A87205541D7A370CD1C245141F6285CFF862055418FC2F5681C24514148E17AE486205541A82764231C245141385D1ECE86205541E0D9DCF51B245141A979D8C086205541C0FAEA611B245141BC95C4B28620554177B45A371B245141608CABB986205541708BE2C81A2451419ADA06D28620554165722AA11924514158F3502887205541CD985F8C1924514105F8303C8720554114AE472119245141295C8FA287205541CDCCCC3C18245141CDCCCCDC872055411F85EBE117245141CDCCCC9C872055410AD7A330172451419A9999B987205541DF0E5A10172451414605D2BB872055417355515216245141D47DE3C887205541FC95C60D16245141EA1B20F3872055415E550BA3152451414520CB3588205541D5036A1D1524514121D013DA8820554148E17AB414245141A4703D7A892055418AAB8E7314245141D417FA9589205541C3F5282C1424514148E17AB489205541333333E313245141B81E85FB88205541D098E8DF1324514183A903CF8820554148E17AD41324514148E17A348820554185EB515813245141295C8FF2872055412599AE3613245141F8B49AF88720554164C303E812245141D856E00888205541CDCCCCAC122451417B14AE1788205541F25D6D5D122451419BA1E33488205541493B430612245141941E1B5A8820554124A939B111245141D926D18B88205541C38E945F112451419811E2C88820554142D60F3B1124514154AB50E788205541058B3FFD102451413260A22989205541910764D210245141B29D4E85892055417DA6EACC10245141E2A118C28920554114AE47D1102451410AD7A3E089205541ACC7DCDA102451415E2CEFF58920554173914CEC10245141BA5400178A2055419A9999F910245141CDCCCC2C8A20554114F960FC1024514172B57E358A205541D7A3700D11245141AE47E16A8A20554166666616112451410AD7A3A08A205541B81E850B112451415C8FC2E58A205541AE47E1EA10245141D7A3702D8B205541AE47E1BA102451411F85EB618B205541666666761024514114AE47918B205541CDCCCC2C10245141A4703DBA8B2055416DD4F722102451411870BDBE8B2055419098260C0F245141599743448C2055418FC2F5480E245141713D0AA78C205541484CD4FA0C2451411D3761078D2055418497C34C0C245141DD6191398D20554170A20A110C245141BF413F508D205541B81E85CB0B2451410AD7A3908D205541956544C30A2451412CDEFECE8D205541111511D409245141E728F40C8E205541118B3B55092451413F17D35C8E205541295C8FC208245141EC51B8BE8E205541BE222E8108245141119790B68E205541E7D440C307245141BAC6DF9E8E2055413D0AD793072451418FC2F5988E2055413D0AD7F306245141E17A140E8E20554145EA8305072451419A37D4748C2055412B40C608072451412D245E298C205541BE83040907245141EA7DBC238C205541EC0E0E09072451418084DF228C205541D7D9750907245141E0517C198C2055412A8A7A09072451411EC10F198C205541B5BAC309072451418D2271128C20554129B3620A0724514151C5C7C78B20554142A7CEA206245141185124FA8A205541A6504E6306245141C761517C8A2055415354E2570624514125AFAF658A2055419D915455062451413B4CA0608A205541D9E2FFF80524514112AAADA989205541D56E64C9052451418C77D1A88920554124668F17052451419344E5A589205541391050F30424514152C34CA58920554189BA4BD004245141626FB9A4892055418C0E4CA7042451419FF00CA4892055414190CF0504245141B2D94FA2892055417FD6E356032451413424D5DC892055418FC2F5E8022451413D0AD7038A2055413D0AD7E3012451413D0AD7138A205541F294B87101245141C56316E789205541F6285CFF00245141A4703DBA892055419021519F002451412639E049892055417F8A9D5F00245141A5E5976389205541E569F35900245141659E26668920554194B1505800245141EAAAE36689205541E0430D57002451417DB17567892055412ACD8150002451411B276A6A89205541B8CEFF4C002451411A97FF6B89205541F7E9154700245141151AAB6E892055413530891D002451410D816D8189205541C984C8BDFF2351419ACAA8AC89205541A928E4A3FF2351414D7259B88920554117F7FC63FF235141158033D58920554166666646FF235141295C8FE289205541F65FA5F4FE235141521657BA892055418F2D937FFE2351410866F782892055410753BD3CFE2351412C258FA98920554114AE4701FE235141E17A14CE89205541FEBE5CC1FC2351412BAF89218A2055417B14AE77FC2351410AD7A3008B205541100BB1DBFB235141429191388B2055414CCE7DACFB235141C3EE7D498B20554133333393FB235141295C8F528B2055415B947E71FB235141CF9FB82E8B2055413935C6FBFA23514182CF0BB58A2055419CD4BEDEFA2351415EB621EC8A20554164E17374FA235141556287C58B205541D6251B61FA235141796CB2F18B2055418EDA5294FA2351418B30EA5D8C205541713D0AD7FA235141AE47E1EA8C205541D7A3707DFA235141E17A149E8D205541D609E03BFA235141360638D78D205541EC51B83EF92351413D0AD7B38E20554114AE4731F82351415C8FC2158F205541B847C62CF7235141D94A7FFD8E20554167D17BF1F6235141968E20458F2055418FC2F598F623514114AE47B18F20554166666626F62351410AD7A3A08F2055412FE2F524F623514144D980C38E2055412A858A11F62351417BDF53B68E2055414E8C99F2F5235141CDA455A18E2055418B1047D0F5235141772E0C8A8E2055417B43C8BBF5235141A753247C8E205541B815EDB1F5235141D86574758E205541F7979BACF5235141E0A6D8718E2055416E00B09DF4235141D259A4E38D205541CDCCCC3CF4235141EC51B8BE8D205541F6285C3FF3235141333333038D20554181B73CE4F2235141BC07249A8C2055412AD48757F223514123ADC40D8C20554146AC49ECF123514170FD45B48B205541CBA9B4A7F12351417117E9D38B205541C4F8DDFFF0235141AC7FC2358C205541D93402FEF023514138DED7368C2055415A1CE3EAF02351415AB0FD418C205541BA54DDC2F0235141E7EF52598C205541C5F5583FF02351416420D1048D205541F6285C1FF02351413D0AD7338D20554175066518F02351414231E4348D2055413EE1D322EF2351417AC6BE6E8D205541EFF83C4BEE235141D50EB9EA8D20554101463EF6ED235141A2B1991B8E205541CDCCCC5CED2351413D0AD7738E205541F6285C8FEC2351411F85EB218E2055410BAD16E5EB235141E673CF868E20554166257726EB235141037AC2F78E2055414289E25DEA23514105E69B6E8F205541BA44792FEA235141E2DD1B8A8F20554185EB5158E823514114AE47A19020554133333303E7235141F6285C2F91205541976DCEABE6235141F61F61479120554148E17AD4E5235141295C8F82912055410D4C13C5E4235141F36C5E24922055418DE1BF71E323514121AFA65E93205541E47A61ACE2235141E2D6115F94205541C3F5289CE22351416666667694205541162D258EE22351415333568394205541FEB9641AE22351413DD02D0E95205541CDCCCC2CE2235141CDCCCCAC952055417553D040E02351410F852AE39520554121953D73DF23514120A31113962055418FC2F5E8DE23514114AE474196205541709588E5DE23514185332E3D9620554171D141A1DE235141F5C380EE952055415FB37F05DD235141236292549720554174FE35A8DA235141A2934A6799205541915669A2DA2351419454606C9920554193C8FC18D9235141531D55C59A205541E0A919DBD9235141D45163029B2055410A0EB316DB23514136AC8CD19A205541AE47E18ADC235141EC51B87E9A205541AE47E13ADE235141713D0A579B20554169D1714CDE2351411BE1446D9B205541DB6D13D1DE23514193371F159C20554152B2BF1DDF2351414C4002299C20554191760CBBDF23514185C0FE489C2055414895F4BFDF235141E32DFE499C20554159EDEBD2E0235141EBFDE7819C20554118C9A619E1235141DFF349909C2055418F878267E12351414AFF1EA09C2055415B49E7A1E123514122C5FEAB9C205541D7B60FB6E2235141D09E26E49C2055417B14AEB7E223514148E17AE49C2055415A138942E2235141B7CAF8329D205541CBE9BAE8DF235141AC0235C69E2055414A329F83DD2351416D427574A02055415C7F7F14DD235141AA0B5BCFA02055413DACE0C0DC235141E980C113A1205541F27C8652DC235141E9B9056EA1205541D2857DEEDB235141AD78D9BFA1205541BBC39C67DA23514102ED94FFA2205541B87F3A67DA235141384EE5FFA2205541C6CF7385D923514148C193B8A32055415D4319A8D9235141D28E97FBA320554173E08F0CDC235141218D0CADA520554138A4D149DE2351416831C242A72055417590FA02DF235141908BC3ABA720554157FF0C01E02351410F6FE95AA7205541CBFAA882E1235141E79033E0A6205541444BA420E32351418994EAD0A520554185EB51F8E323514114AE4741A5205541569CEC9CE523514177161831A42055410D63BD82E6235141C7EF4E54A320554145BB0C1FE7235141824BF095A22055416968E83CE72351410B129371A2205541E26DCA3EE7235141A2929F4BA22055410AD7A360E6235141D7A3703DA1205541EEDA3367E6235141B66177CDA0205541AE47E16AE6235141EC51B88EA02055419D7DE973E6235141DF7FF78AA020554182A5DF6CE82351419E5422B99F205541C6DB2F90EA23514124D5B3D59E20554148E17AA4F2235141A4703D7A9B2055416260E50DF52351412066EB369B2055415A8BA414F523514169132F369B20554152DB40B0F72351413BB58AEB9A205541245B04C0F72351414AFF9AE89A205541F1AC32CAF9235141412256879A205541D5C65E02FA235141C87CDF7C9A205541031E3BACFC2351413817DCFD99205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A20554178D0F04105245141F7E6D83C9B205541ABADB9AA05245141365C629A9B2055412D450D0106245141FC8B03779B205541D8CD31FE072451419580B98D9A2055419A2221920A24514106A7575F99205541688CBF640B245141D5E74BF898205541D7F69B350B245141BBA50B509720554124FDAABA0B245141D918C78597205541863962090E2451413828E95898205541299EEB0A152451417A492BD99A2055413D0AD75315245141333333F39A205541596F33A90B245141BA1A1151962055419A9999890B2451411F85EB4196205541CB6AD5070C245141BB9096B494205541126705240C2451416399DD5B9420554117CD524C0C245141B0A702DD93205541E17A145E0C24514152B81EA5932055412CDC0BB20B245141BDB415699320554177346B830B2451414EB4AB5993205541F912EA540B245141ECC8AC6993205541F09D7F8A0A245141B20105B493205541D6CC54410A24514169D72FE5932055414DF0D30B0A2451416542611C942055415C8FC2F5092451410AD7A390942055411F85EBF1082451411F85EBA1942055419022FCDA082451419022FC8A94205541BDC68F6A082451412193CE2094205541C604EFE00624514134FC7E0A942055412D08C6C406245141FB11920994205541424489A4062451413ADA82089420554148E17A8407245141A4703DFA9420554125A71F8407245141780BE2FB942055412EC3667D0724514188AB3B2D952055417B14AE4707245141295C8F1296205541AE47E15A05245141CDCCCC1C972055415C8FC2B5032451410AD7A3F0972055413FCEF0A6032451410D26B4F197205541D7A3702D02245141CDCCCC0C98205541B63452AD02245141F9C9E621962055410788177602245141C56B850D96205541F4FA115B002451419B6908CD9620554114AE47E1FF235141000000C0982055412D4F14DFFF235141A3740AC298205541EC51B86EFF235141A4703D2A9920554194EAF16AFF235141BF79562999205541C6E5CF05FF23514188EC2A11992055419AFE53E6FE2351416BA8A409992055417268F4E3FE235141CE7213099920554107E96DDDFE235141C535840799205541325E8EDCFE235141E6C84E0799205541FE309B46FD2351415BDDFD1D9920554112C753ADFC235141C947FF43992055415C8FC225FC23514152B81EA599205541704134FFFB235141C5EF3FA399205541A4703D7AFB235141CDCCCC9C992055415AF6815FFB23514167692317992055419A999959FB2351419A9999F998205541BA0F84EBFB235141B8797EA098205541655D353DFC235141F9642A66982055414B04EC4AFC235141CF3EBFBA97205541BFB2584BFC23514163716A839720554104FD6A4BFC23514116A11A7A97205541A4703D7AFB2351419A999969972055415E71677EFB235141148397E69620554127323382FB23514179AA2A6F96205541B851C918FB235141C07CCD2E9520554185EB5118FB235141D7A3702D9520554137663E70FB235141B20359F191205541A4703D7AFB2351413333339391205541666D4F7DFD23514150D67B6B9120554152B81E85FD235141713D0AC790205541CDCCCC0CFF23514152B81E859020554148E17A840324514148E17A64902055419A999979042451410000001091205541D7A370ED05245141EC51B82E92205541B6A47E1006245141F60A6A53922055412EE0C82D07245141B1E3DA5793205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489573 - 259378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000D200000085EB5198F7235141000000F09A205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417B14AEA705245141000000A09B205541666666660B245141E17A14FE98205541B81E853B0B24514185EB515897205541C3F5289C0D2451411F85EB31982055413D0AD75315245141333333F39A2055419A9999890B2451411F85EB4196205541E17A145E0C24514152B81EA5932055413D0AD7830B2451418FC2F5589320554114AE47910A245141F6285CAF93205541000000100A24514166666606942055415C8FC2F5092451410AD7A390942055411F85EBF1082451411F85EBA19420554100000070082451410000002094205541F6285CAF0724514114AE471194205541EC51B89E0624514185EB51089420554148E17A8407245141A4703DFA942055417B14AE4707245141295C8F1296205541AE47E15A05245141CDCCCC1C972055415C8FC2B5032451410AD7A3F097205541D7A3702D02245141CDCCCC0C9820554185EB51B8022451417B14AEF795205541EC51B85E00245141E17A14BE9620554114AE47E1FF235141000000C098205541EC51B86EFF235141A4703D2A99205541333333A3FE2351419A9999F99820554114AE47D1FC235141A4703D2A992055415C8FC225FC23514152B81EA599205541A4703D7AFB235141CDCCCC9C992055419A999959FB2351419A9999F9982055419A999949FC235141713D0A6798205541B81E854BFC235141CDCCCC6C97205541A4703D7AFB2351419A99996997205541295C8F82FB2351413D0AD7639620554185EB5118FB235141D7A3702D95205541A4703D7AFB2351413333339391205541D7A3708DFD235141A4703D6A9120554152B81E85FD235141713D0AC790205541CDCCCC0CFF23514152B81E859020554148E17A840324514148E17A64902055419A999979042451410000001091205541D7A370ED05245141EC51B82E92205541CDCCCC0C07245141B81E855B93205541000000A008245141EC51B82E93205541EC51B82E0A245141C3F528DC92205541333333030D24514166666606922055413D0AD7C30F245141D7A3704D912055413D0AD7231224514185EB51A89020554148E17A5415245141EC51B8BE8F2055419A99995918245141295C8FF28E205541B81E85CB1C245141000000C08D205541295C8F4221245141666666368C2055417B14AEE7242451410AD7A3F08A20554148E17A5426245141D7A3706D8A205541D7A3700D27245141EC51B8EE89205541B81E85CB272451418FC2F548892055413D0AD74328245141F6285CCF832055418FC2F568292451415C8FC2957D205541F6285C8F29245141333333C37C205541E17A14DE2324514152B81E957E205541713D0A9723245141AE47E1BA7E205541EC51B86E23245141EC51B8CE7E2055411F85EB4123245141000000E07E205541295C8F222324514114AE47017F205541C3F5280C23245141000000207F2055419A9999F922245141CDCCCC4C7F205541C3F528EC222451417B14AE877F2055411F85EBE122245141EC51B8DE7F20554114AE47E1222451411F85EB41802055417B14AEE722245141F6285C7F80205541295C8FF2222451411F85EBC180205541CDCCCC0C232451411F85EB4181205541F6285C1F23245141295C8F8281205541B81E853B23245141EC51B8DE812055413333336323245141EC51B83E822055410000009023245141D7A3708D822055411F85EBC1232451419A9999D982205541000000C024245141A4703D5A84205541AE47E19A242451413D0AD733862055410AD7A31023245141F6285C1F87205541A4703DDA22245141F6285C4F8720554114AE476122245141A4703DBA872055418FC2F518222451411F85EBE1872055413D0AD7B3212451417B14AE0788205541D7A3704D2124514148E17A24882055415C8FC2F5202451419A9999298820554152B81E8520245141295C8F2288205541EC51B83E20245141E17A140E8820554114AE470120245141EC51B8EE87205541713D0AA71F245141F6285CAF87205541666666561F245141EC51B86E87205541E17A140E1F245141A4703D3A87205541000000C01E245141C3F528FC862055410AD7A3801E245141A4703DEA862055417B14AE271E245141295C8FE286205541713D0AC71D245141295C8FE286205541B81E857B1D245141CDCCCCEC86205541713D0A271D245141A4703D0A87205541D7A370CD1C245141F6285CFF862055418FC2F5681C24514148E17AE486205541D7A370FD1B2451411F85EBC1862055417B14AEA71B2451415C8FC2B586205541333333631B245141295C8FB28620554148E17A041B2451411F85EBC186205541D7A370BD1A24514152B81ED5862055418FC2F5381A245141AE47E1FA862055413D0AD7A3192451415C8FC2258720554114AE472119245141295C8FA287205541CDCCCC3C18245141CDCCCCDC872055411F85EBE117245141CDCCCC9C872055410AD7A330172451419A9999B98720554114AE4751162451418FC2F5C887205541713D0A771524514114AE47518820554148E17AB414245141A4703D7A89205541C3F5282C1424514148E17AB489205541333333E313245141B81E85FB8820554148E17AD41324514148E17A348820554185EB515813245141295C8FF287205541666666061324514114AE470188205541CDCCCCAC122451417B14AE1788205541CDCCCC5C1224514152B81E358820554152B81E05122451419A99995988205541C3F528BC112451413D0AD78388205541E17A146E11245141CDCCCCBC88205541CDCCCC2C11245141333333F388205541C3F528FC10245141AE47E12A89205541F6285CDF10245141F6285C5F89205541E17A14CE102451411F85EB9189205541B81E85CB1024514185EB51B88920554114AE47D1102451410AD7A3E089205541295C8FE210245141713D0A078A2055419A9999F910245141CDCCCC2C8A205541D7A3700D11245141AE47E16A8A20554166666616112451410AD7A3A08A205541B81E850B112451415C8FC2E58A205541AE47E1EA10245141D7A3702D8B205541AE47E1BA102451411F85EB618B205541666666761024514114AE47918B205541CDCCCC2C10245141A4703DBA8B205541666666860F245141666666068C2055418FC2F5480E245141713D0AA78C2055419A9999190C24514185EB51488D205541B81E85CB0B2451410AD7A3908D2055415C8FC2D509245141713D0A078E205541295C8FC208245141EC51B8BE8E2055413D0AD793072451418FC2F5988E2055413D0AD7F306245141E17A140E8E205541CDCCCC0C07245141C3F528CC8B2055418FC2F5F8052451419A9999A989205541EC51B8FE0324514114AE47A1892055418FC2F5E8022451413D0AD7038A2055413D0AD7E3012451413D0AD7138A205541F6285CFF00245141A4703DBA89205541D7A3709D002451417B14AE478920554166666646FF235141295C8FE289205541F6285C7FFE2351410AD7A3808920554114AE4701FE235141E17A14CE892055419A9999B9FC23514114AE47218A2055417B14AE77FC2351410AD7A3008B20554133333393FB235141295C8F528B205541B81E85FBFA23514114AE47B18A20554100000060FA235141F6285CEF8B205541713D0AD7FA235141AE47E1EA8C205541D7A3707DFA235141E17A149E8D205541EC51B83EF92351413D0AD7B38E20554114AE4731F82351415C8FC2158F205541C3F5282CF7235141D7A370FD8E2055418FC2F598F623514114AE47B18F20554166666626F62351410AD7A3A08F20554166666626F623514148E17AC48E2055419A999929F52351418FC2F5188E205541CDCCCC3CF4235141EC51B8BE8D205541F6285C3FF3235141333333038D205541C3F5289CF2235141713D0A478C205541666666E6F1235141F6285CAF8B205541A4703DAAF02351417B14AE678C205541F6285C1FF02351413D0AD7338D2055413D0AD753EF235141295C8F528D205541CDCCCC5CED2351413D0AD7738E205541F6285C8FEC2351411F85EB218E20554185EB5158E823514114AE47A19020554133333303E7235141F6285C2F9120554148E17AD4E5235141295C8F829120554148E17A84E4235141AE47E14A92205541295C8F32E3235141E17A149E93205541C3F5289CE22351416666667694205541713D0A17E223514114AE47F194205541CDCCCC2CE2235141CDCCCCAC952055413D0AD7E3DF235141D7A370ED952055418FC2F5E8DE23514114AE47419620554114AE47A1DE235141B81E85EB95205541713D0A17D9235141713D0AC79A2055413D0AD703DA235141EC51B80E9B205541AE47E18ADC235141EC51B87E9A205541AE47E13ADE235141713D0A579B20554152B81ED5DE235141A4703D1A9C2055417B14AEB7E223514148E17AE49C205541713D0A07DE2351418FC2F508A02055419A999969D9235141F6285CCFA32055419A9999E9DE2351413D0AD7B3A7205541F6285C8FE1235141C3F528DCA620554185EB51F8E323514114AE4741A520554148E17A04E6235141E17A14EEA3205541D7A3704DE7235141D7A3705DA22055410AD7A360E6235141D7A3703DA1205541AE47E16AE6235141EC51B88EA020554148E17AA4F2235141A4703D7A9B20554185EB5198F7235141000000F09A205541
+</a>
+
+<b>
+0106000000010000000103000000010000007E0100002EE0C82D07245141B1E3DA57932055411D8A065909245141297B680893205541E6BB083D0C2451418993DE4092205541333333030D24514166666606922055416E68EDC20F2451413FF7AD4D91205541971E0BED1424514111DC4EDC8F20554148E17A5415245141EC51B8BE8F205541D5F48F81152451419AA2D0B28F205541251E52C519245141DC7D92908E205541B41EBC541D2451415532C0908D205541340733A01F24514182DA75C68C205541E245FAEB22245141DF15E2A18B2055417A025B3F252451416A8A1BD18A2055416763635526245141F757D16C8A205541B5956E6A262451412C76665E8A205541CFCAEC9926245141FB9DDC3D8A205541A8699DA526245141414FDA358A205541875362CB26245141CFEEF91B8A205541813B75D026245141550680188A20554145DF367127245141141EB697892055417916AFD7272451411B5943BB88205541967223EE272451410612B1B5872055413D0AD74328245141F6285CCF832055414F824C89282451412EFBBB5582205541B0500E3F29245141F74194797E2055410BAA785D29245141325C38D47D2055410D70817D29245141E58BE8C87C2055417F7EE93C2924514190668FDD7C2055417B9ABC7C2724514170ADD96C7D20554194A2D79E26245141104DCBB37D20554181C101DD25245141EE5AC4F17D205541D2E0958B2424514112A3A55D7E205541A4F51CD623245141F32187997E205541C7C11D992324514113C3C6B97E205541713D0A9723245141AE47E1BA7E2055414730213323245141CD25B2EF7E2055414A4C0814232451419B1B34157F205541C3F5280C23245141000000207F2055418B16A20123245141F9DC68397F205541BEA130F6222451416A3BBD5B7F205541D0025BF4222451416A9EC6637F205541E62711E6222451414A6A78BB7F205541351598E422245141C72FBC6180205541987558E5222451415D00F3688020554147AAAF0A2324514180D69B37812055412241C64E2324514124A54D0D82205541F55F8CAD232451410B4F5EB6822055413C54AEA0242451418ADBD32A84205541000000C024245141A4703D5A84205541AE47E19A242451413D0AD73386205541F5A1A84623245141ADCD16FF862055410AD7A31023245141F6285C1F87205541A4703DDA22245141F6285C4F87205541D329769922245141B01B99888720554114AE476122245141A4703DBA87205541298ABE4C2224514185E381C5872055418FC2F518222451411F85EBE1872055413D0AD7B3212451417B14AE0788205541D7A3704D2124514148E17A24882055415C8FC2F5202451419A9999298820554152B81E8520245141295C8F2288205541D308E648202451418E810A1188205541EC51B83E20245141E17A140E8820554114AE470120245141EC51B8EE87205541E0A402C11F245141383098C187205541713D0AA71F245141F6285CAF8720554134E7EA841F24514160060294872055413EF4B2191F24514171E8AB42872055416B504DAD1E2451416126DFF686205541A0817DA81E2451417DC282F5862055412D8ACBA71E245141006D50F5862055418F419F541E245141D69C70E68620554116B3D2241E245141295C8FE286205541C58782CB1D245141295C8FE2862055416282F9A91D245141CB4580E686205541B81E857B1D245141CDCCCCEC86205541713D0A271D245141A4703D0A87205541D7A370CD1C245141F6285CFF862055418FC2F5681C24514148E17AE486205541A82764231C245141385D1ECE86205541E0D9DCF51B245141A979D8C086205541C0FAEA611B245141BC95C4B28620554177B45A371B245141608CABB986205541708BE2C81A2451419ADA06D28620554165722AA11924514158F3502887205541CD985F8C1924514105F8303C8720554114AE472119245141295C8FA287205541CDCCCC3C18245141CDCCCCDC872055411F85EBE117245141CDCCCC9C872055410AD7A330172451419A9999B987205541DF0E5A10172451414605D2BB872055417355515216245141D47DE3C887205541FC95C60D16245141EA1B20F3872055415E550BA3152451414520CB3588205541D5036A1D1524514121D013DA8820554148E17AB414245141A4703D7A892055418AAB8E7314245141D417FA9589205541C3F5282C1424514148E17AB489205541333333E313245141B81E85FB88205541D098E8DF1324514183A903CF8820554148E17AD41324514148E17A348820554185EB515813245141295C8FF2872055412599AE3613245141F8B49AF88720554164C303E812245141D856E00888205541CDCCCCAC122451417B14AE1788205541F25D6D5D122451419BA1E33488205541493B430612245141941E1B5A8820554124A939B111245141D926D18B88205541C38E945F112451419811E2C88820554142D60F3B1124514154AB50E788205541058B3FFD102451413260A22989205541910764D210245141B29D4E85892055417DA6EACC10245141E2A118C28920554114AE47D1102451410AD7A3E089205541ACC7DCDA102451415E2CEFF58920554173914CEC10245141BA5400178A2055419A9999F910245141CDCCCC2C8A20554114F960FC1024514172B57E358A205541D7A3700D11245141AE47E16A8A20554166666616112451410AD7A3A08A205541B81E850B112451415C8FC2E58A205541AE47E1EA10245141D7A3702D8B205541AE47E1BA102451411F85EB618B205541666666761024514114AE47918B205541CDCCCC2C10245141A4703DBA8B2055416DD4F722102451411870BDBE8B2055419098260C0F245141599743448C2055418FC2F5480E245141713D0AA78C205541484CD4FA0C2451411D3761078D2055418497C34C0C245141DD6191398D20554170A20A110C245141BF413F508D205541B81E85CB0B2451410AD7A3908D205541956544C30A2451412CDEFECE8D205541111511D409245141E728F40C8E205541118B3B55092451413F17D35C8E205541295C8FC208245141EC51B8BE8E205541BE222E8108245141119790B68E205541E7D440C307245141BAC6DF9E8E2055413D0AD793072451418FC2F5988E2055413D0AD7F306245141E17A140E8E20554145EA8305072451419A37D4748C2055412B40C608072451412D245E298C205541BE83040907245141EA7DBC238C205541EC0E0E09072451418084DF228C205541D7D9750907245141E0517C198C2055412A8A7A09072451411EC10F198C205541B5BAC309072451418D2271128C20554129B3620A0724514151C5C7C78B20554142A7CEA206245141185124FA8A205541A6504E6306245141C761517C8A2055415354E2570624514125AFAF658A2055419D915455062451413B4CA0608A205541D9E2FFF80524514112AAADA989205541D56E64C9052451418C77D1A88920554124668F17052451419344E5A589205541391050F30424514152C34CA58920554189BA4BD004245141626FB9A4892055418C0E4CA7042451419FF00CA4892055414190CF0504245141B2D94FA2892055417FD6E356032451413424D5DC892055418FC2F5E8022451413D0AD7038A2055413D0AD7E3012451413D0AD7138A205541F294B87101245141C56316E789205541F6285CFF00245141A4703DBA892055419021519F002451412639E049892055417F8A9D5F00245141A5E5976389205541E569F35900245141659E26668920554194B1505800245141EAAAE36689205541E0430D57002451417DB17567892055412ACD8150002451411B276A6A89205541B8CEFF4C002451411A97FF6B89205541F7E9154700245141151AAB6E892055413530891D002451410D816D8189205541C984C8BDFF2351419ACAA8AC89205541A928E4A3FF2351414D7259B88920554117F7FC63FF235141158033D58920554166666646FF235141295C8FE289205541F65FA5F4FE235141521657BA892055418F2D937FFE2351410866F782892055410753BD3CFE2351412C258FA98920554114AE4701FE235141E17A14CE89205541FEBE5CC1FC2351412BAF89218A2055417B14AE77FC2351410AD7A3008B205541100BB1DBFB235141429191388B2055414CCE7DACFB235141C3EE7D498B20554133333393FB235141295C8F528B2055415B947E71FB235141CF9FB82E8B2055413935C6FBFA23514182CF0BB58A2055419CD4BEDEFA2351415EB621EC8A20554164E17374FA235141556287C58B205541D6251B61FA235141796CB2F18B2055418EDA5294FA2351418B30EA5D8C205541713D0AD7FA235141AE47E1EA8C205541D7A3707DFA235141E17A149E8D205541D609E03BFA235141360638D78D205541EC51B83EF92351413D0AD7B38E20554114AE4731F82351415C8FC2158F205541B847C62CF7235141D94A7FFD8E20554167D17BF1F6235141968E20458F2055418FC2F598F623514114AE47B18F20554166666626F62351410AD7A3A08F2055412FE2F524F623514144D980C38E2055412A858A11F62351417BDF53B68E2055414E8C99F2F5235141CDA455A18E2055418B1047D0F5235141772E0C8A8E2055417B43C8BBF5235141A753247C8E205541B815EDB1F5235141D86574758E205541F7979BACF5235141E0A6D8718E2055416E00B09DF4235141D259A4E38D205541CDCCCC3CF4235141EC51B8BE8D205541F6285C3FF3235141333333038D20554181B73CE4F2235141BC07249A8C2055412AD48757F223514123ADC40D8C20554146AC49ECF123514170FD45B48B205541CBA9B4A7F12351417117E9D38B205541C4F8DDFFF0235141AC7FC2358C205541D93402FEF023514138DED7368C2055415A1CE3EAF02351415AB0FD418C205541BA54DDC2F0235141E7EF52598C205541C5F5583FF02351416420D1048D205541F6285C1FF02351413D0AD7338D20554175066518F02351414231E4348D2055413EE1D322EF2351417AC6BE6E8D205541EFF83C4BEE235141D50EB9EA8D20554101463EF6ED235141A2B1991B8E205541CDCCCC5CED2351413D0AD7738E205541F6285C8FEC2351411F85EB218E2055410BAD16E5EB235141E673CF868E20554166257726EB235141037AC2F78E2055414289E25DEA23514105E69B6E8F205541BA44792FEA235141E2DD1B8A8F20554185EB5158E823514114AE47A19020554133333303E7235141F6285C2F91205541976DCEABE6235141F61F61479120554148E17AD4E5235141295C8F82912055410D4C13C5E4235141F36C5E24922055418DE1BF71E323514121AFA65E93205541E47A61ACE2235141E2D6115F94205541C3F5289CE22351416666667694205541162D258EE22351415333568394205541FEB9641AE22351413DD02D0E95205541CDCCCC2CE2235141CDCCCCAC952055417553D040E02351410F852AE39520554121953D73DF23514120A31113962055418FC2F5E8DE23514114AE474196205541709588E5DE23514185332E3D9620554171D141A1DE235141F5C380EE952055415FB37F05DD235141236292549720554174FE35A8DA235141A2934A6799205541915669A2DA2351419454606C9920554193C8FC18D9235141531D55C59A205541E0A919DBD9235141D45163029B2055410A0EB316DB23514136AC8CD19A205541AE47E18ADC235141EC51B87E9A205541AE47E13ADE235141713D0A579B20554169D1714CDE2351411BE1446D9B205541DB6D13D1DE23514193371F159C20554152B2BF1DDF2351414C4002299C20554191760CBBDF23514185C0FE489C2055414895F4BFDF235141E32DFE499C20554159EDEBD2E0235141EBFDE7819C20554118C9A619E1235141DFF349909C2055418F878267E12351414AFF1EA09C2055415B49E7A1E123514122C5FEAB9C205541D7B60FB6E2235141D09E26E49C2055417B14AEB7E223514148E17AE49C2055415A138942E2235141B7CAF8329D205541CBE9BAE8DF235141AC0235C69E2055414A329F83DD2351416D427574A02055415C7F7F14DD235141AA0B5BCFA02055413DACE0C0DC235141E980C113A1205541F27C8652DC235141E9B9056EA1205541D2857DEEDB235141AD78D9BFA1205541BBC39C67DA23514102ED94FFA2205541B87F3A67DA235141384EE5FFA2205541C6CF7385D923514148C193B8A32055415D4319A8D9235141D28E97FBA320554173E08F0CDC235141218D0CADA520554138A4D149DE2351416831C242A72055417590FA02DF235141908BC3ABA720554157FF0C01E02351410F6FE95AA7205541CBFAA882E1235141E79033E0A6205541444BA420E32351418994EAD0A520554185EB51F8E323514114AE4741A5205541569CEC9CE523514177161831A42055410D63BD82E6235141C7EF4E54A320554145BB0C1FE7235141824BF095A22055416968E83CE72351410B129371A2205541E26DCA3EE7235141A2929F4BA22055410AD7A360E6235141D7A3703DA1205541EEDA3367E6235141B66177CDA0205541AE47E16AE6235141EC51B88EA02055419D7DE973E6235141DF7FF78AA020554182A5DF6CE82351419E5422B99F205541C6DB2F90EA23514124D5B3D59E20554148E17AA4F2235141A4703D7A9B2055416260E50DF52351412066EB369B2055415A8BA414F523514169132F369B20554152DB40B0F72351413BB58AEB9A205541245B04C0F72351414AFF9AE89A205541F1AC32CAF9235141412256879A205541D5C65E02FA235141C87CDF7C9A205541031E3BACFC2351413817DCFD99205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A20554178D0F04105245141F7E6D83C9B205541ABADB9AA05245141365C629A9B2055412D450D0106245141FC8B03779B205541D8CD31FE072451419580B98D9A2055419A2221920A24514106A7575F99205541688CBF640B245141D5E74BF898205541D7F69B350B245141BBA50B509720554124FDAABA0B245141D918C78597205541863962090E2451413828E95898205541299EEB0A152451417A492BD99A2055413D0AD75315245141333333F39A205541596F33A90B245141BA1A1151962055419A9999890B2451411F85EB4196205541CB6AD5070C245141BB9096B494205541126705240C2451416399DD5B9420554117CD524C0C245141B0A702DD93205541E17A145E0C24514152B81EA5932055412CDC0BB20B245141BDB415699320554177346B830B2451414EB4AB5993205541F912EA540B245141ECC8AC6993205541F09D7F8A0A245141B20105B493205541D6CC54410A24514169D72FE5932055414DF0D30B0A2451416542611C942055415C8FC2F5092451410AD7A390942055411F85EBF1082451411F85EBA1942055419022FCDA082451419022FC8A94205541BDC68F6A082451412193CE2094205541C604EFE00624514134FC7E0A942055412D08C6C406245141FB11920994205541424489A4062451413ADA82089420554148E17A8407245141A4703DFA9420554125A71F8407245141780BE2FB942055412EC3667D0724514188AB3B2D952055417B14AE4707245141295C8F1296205541AE47E15A05245141CDCCCC1C972055415C8FC2B5032451410AD7A3F0972055413FCEF0A6032451410D26B4F197205541D7A3702D02245141CDCCCC0C98205541B63452AD02245141F9C9E621962055410788177602245141C56B850D96205541F4FA115B002451419B6908CD9620554114AE47E1FF235141000000C0982055412D4F14DFFF235141A3740AC298205541EC51B86EFF235141A4703D2A9920554194EAF16AFF235141BF79562999205541C6E5CF05FF23514188EC2A11992055419AFE53E6FE2351416BA8A409992055417268F4E3FE235141CE7213099920554107E96DDDFE235141C535840799205541325E8EDCFE235141E6C84E0799205541FE309B46FD2351415BDDFD1D9920554112C753ADFC235141C947FF43992055415C8FC225FC23514152B81EA599205541704134FFFB235141C5EF3FA399205541A4703D7AFB235141CDCCCC9C992055415AF6815FFB23514167692317992055419A999959FB2351419A9999F998205541BA0F84EBFB235141B8797EA098205541655D353DFC235141F9642A66982055414B04EC4AFC235141CF3EBFBA97205541BFB2584BFC23514163716A839720554104FD6A4BFC23514116A11A7A97205541A4703D7AFB2351419A999969972055415E71677EFB235141148397E69620554127323382FB23514179AA2A6F96205541B851C918FB235141C07CCD2E9520554185EB5118FB235141D7A3702D9520554137663E70FB235141B20359F191205541A4703D7AFB2351413333339391205541666D4F7DFD23514150D67B6B9120554152B81E85FD235141713D0AC790205541CDCCCC0CFF23514152B81E859020554148E17A840324514148E17A64902055419A999979042451410000001091205541D7A370ED05245141EC51B82E92205541B6A47E1006245141F60A6A53922055412EE0C82D07245141B1E3DA5793205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358919 - 47497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B84E916151413D0AD73351C45441E17A144E8F61514152B81E754DC4544152B81E85886151411F85EBE151C45441B81E85CB816151415C8FC2F556C45441A4703D0A81615141333333F358C45441295C8FB280615141666666965CC45441713D0A978161514148E17AB460C45441666666F68261514148E17A9465C454418FC2F59883615141D7A3705D66C454410AD7A3208461514152B81E0567C454419A99999986615141333333A367C45441000000B08961514114AE474168C45441A4703D3A8C615141AE47E1AA68C454413D0AD7738F6151418FC2F59868C45441E17A14FE916151413333335368C4544152B81E6594615141E17A14CE68C454413D0AD7F399615141C3F5286C69C45441D7A370AD9D61514114AE474169C45441B81E850B9E615141C3F5287C66C45441EC51B89E9D6151413333334364C4544148E17A449861514148E17AC45BC45441EC51B84E916151413D0AD73351C45441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000295C8F12996151418FC2F5985BC45441268FDDAC98615141D0946FAE5BC45441CD39265598615141469FEFDE5BC454419DC75AA89A6151419972978F5FC45441CD35DED49A615141603C3DD65FC4544160BA283F9B615141F949EF7E60C45441EC51B89E9D6151413333334364C45441B81E850B9E615141C3F5287C66C454415CE12D079E615141AED5E09C66C4544175DDD3DC9D615141449A19DC67C45441D7A370AD9D61514114AE474169C45441407533D99E6151414E3E92A066C45441F00DBAE39E615141F252296F66C45441A71A6C539E6151412946B5FF63C454415026FABD9C61514167BA801061C45441A8D88E969B6151412FBF17ED5EC45441E2ADF2649A6151411F8ECCB65CC45441295C8F12996151418FC2F5985BC45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358919 - 83941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B84E916151413D0AD73351C45441E17A144E8F61514152B81E754DC4544152B81E85886151411F85EBE151C45441B81E85CB816151415C8FC2F556C45441A4703D0A81615141333333F358C45441295C8FB280615141666666965CC45441713D0A978161514148E17AB460C45441666666F68261514148E17A9465C454418FC2F59883615141D7A3705D66C454410AD7A3208461514152B81E0567C454419A99999986615141333333A367C45441000000B08961514114AE474168C45441A4703D3A8C615141AE47E1AA68C454413D0AD7738F6151418FC2F59868C45441E17A14FE916151413333335368C4544152B81E6594615141E17A14CE68C454413D0AD7F399615141C3F5286C69C45441D7A370AD9D61514114AE474169C45441B81E850B9E615141C3F5287C66C45441EC51B89E9D6151413333334364C4544148E17A449861514148E17AC45BC45441EC51B84E916151413D0AD73351C45441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000295C8F12996151418FC2F5985BC45441268FDDAC98615141D0946FAE5BC45441CD39265598615141469FEFDE5BC454419DC75AA89A6151419972978F5FC45441CD35DED49A615141603C3DD65FC4544160BA283F9B615141F949EF7E60C45441EC51B89E9D6151413333334364C45441B81E850B9E615141C3F5287C66C454415CE12D079E615141AED5E09C66C4544175DDD3DC9D615141449A19DC67C45441D7A370AD9D61514114AE474169C45441407533D99E6151414E3E92A066C45441F00DBAE39E615141F252296F66C45441A71A6C539E6151412946B5FF63C454415026FABD9C61514167BA801061C45441A8D88E969B6151412FBF17ED5EC45441E2ADF2649A6151411F8ECCB65CC45441295C8F12996151418FC2F5985BC45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>244053 - 1407305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D0000004E92E1CB4D0251410F05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E1055418FC2F528450251416666660641105541EC51B84E400251417B14AE07441055416666668642025141C3F5281C4B1055411F85EBE14B0251410AD7A39047105541F6285C1F52025141C3F5283C45105541E17A149E5302514114AE47D144105541713D0A4750025141713D0A77501055419A9999794E025141666666A65510554180B503524E025141D86FB91756105541DD25DF114E025141A7C959CF5610554149C88FB14D025141328510E3571055411B24E2684D0251418ACE9FB25810554181A3E4064D0251410570DBCA5910554118D2FBBB4C025141D45125A15A10554128CDC3544C02514179F901BB5B105541BDC947D84B02514122AAF00E5D105541DDF785784B0251416E186D145E105541851EF5064B025141E1F78A4A5F10554125B0AFD24A025141CF16DCE85F1055417CEC78CB4A025141AE6C936A60105541D344CC1F4B02514176AFD4CB60105541AB7AD7134B025141195C887F61105541E9CD27354B025141EE2B06FF61105541DF74137E4B0251412E151716631055417AD5A5D44B0251415845666164105541B385A81E4C025141F20CA37C65105541FABFED774C02514131172A6F661055411C8DBCB04C025141EB0207256710554133739BF24C0251416577DDDC67105541F37553434D025141CD4A1E8E681055414E92E1CB4D0251410F05437F69105541
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000004C92E1CB4D0251410D05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E1055418FC2F528450251416666660641105541EC51B84E400251417B14AE07441055416666668642025141C3F5281C4B1055411F85EBE14B0251410AD7A39047105541F6285C1F52025141C3F5283C45105541E17A149E5302514114AE47D144105541713D0A4750025141713D0A77501055419A9999794E025141666666A65510554182B503524E025141D96FB91756105541E025DF114E025141ABC959CF561055414AC88FB14D025141338510E3571055411724E2684D02514187CE9FB25810554183A3E4064D0251410870DBCA5910554113D2FBBB4C025141D45125A15A1055412ACDC3544C02514175F901BB5B105541B8C947D84B02514122AAF00E5D105541DCF785784B02514172186D145E105541851EF5064B025141E0F78A4A5F10554127B0AFD24A025141CC16DCE85F1055417BEC78CB4A025141AF6C936A60105541D244CC1F4B0251417AAFD4CB60105541A67AD7134B0251411A5C887F61105541E5CD27354B025141E92B06FF61105541DD74137E4B02514130151716631055417DD5A5D44B0251415945666164105541B085A81E4C025141F50CA37C65105541F7BFED774C02514135172A6F66105541198DBCB04C025141E9020725671055412E739BF24C0251416A77DDDC67105541F47553434D025141CF4A1E8E681055414C92E1CB4D0251410D05437F69105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>244053 - 3658849
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D0000004E92E1CB4D0251410F05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E1055418FC2F528450251416666660641105541EC51B84E400251417B14AE07441055416666668642025141C3F5281C4B1055411F85EBE14B0251410AD7A39047105541F6285C1F52025141C3F5283C45105541E17A149E5302514114AE47D144105541713D0A4750025141713D0A77501055419A9999794E025141666666A65510554180B503524E025141D86FB91756105541DD25DF114E025141A7C959CF5610554149C88FB14D025141328510E3571055411B24E2684D0251418ACE9FB25810554181A3E4064D0251410570DBCA5910554118D2FBBB4C025141D45125A15A10554128CDC3544C02514179F901BB5B105541BDC947D84B02514122AAF00E5D105541DDF785784B0251416E186D145E105541851EF5064B025141E1F78A4A5F10554125B0AFD24A025141CF16DCE85F1055417CEC78CB4A025141AE6C936A60105541D344CC1F4B02514176AFD4CB60105541AB7AD7134B025141195C887F61105541E9CD27354B025141EE2B06FF61105541DF74137E4B0251412E151716631055417AD5A5D44B0251415845666164105541B385A81E4C025141F20CA37C65105541FABFED774C02514131172A6F661055411C8DBCB04C025141EB0207256710554133739BF24C0251416577DDDC67105541F37553434D025141CD4A1E8E681055414E92E1CB4D0251410F05437F69105541
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000004C92E1CB4D0251410D05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E1055418FC2F528450251416666660641105541EC51B84E400251417B14AE07441055416666668642025141C3F5281C4B1055411F85EBE14B0251410AD7A39047105541F6285C1F52025141C3F5283C45105541E17A149E5302514114AE47D144105541713D0A4750025141713D0A77501055419A9999794E025141666666A65510554182B503524E025141D96FB91756105541E025DF114E025141ABC959CF561055414AC88FB14D025141338510E3571055411724E2684D02514187CE9FB25810554183A3E4064D0251410870DBCA5910554113D2FBBB4C025141D45125A15A1055412ACDC3544C02514175F901BB5B105541B8C947D84B02514122AAF00E5D105541DCF785784B02514172186D145E105541851EF5064B025141E0F78A4A5F10554127B0AFD24A025141CC16DCE85F1055417BEC78CB4A025141AF6C936A60105541D244CC1F4B0251417AAFD4CB60105541A67AD7134B0251411A5C887F61105541E5CD27354B025141E92B06FF61105541DD74137E4B02514130151716631055417DD5A5D44B0251415945666164105541B085A81E4C025141F50CA37C65105541F7BFED774C02514135172A6F66105541198DBCB04C025141E9020725671055412E739BF24C0251416A77DDDC67105541F47553434D025141CF4A1E8E681055414C92E1CB4D0251410D05437F69105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>360152 - 2728095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000333333D3D168514152B81E558F8E54413D0AD7D3CE685141B81E852B978E5441F6285C8FCE685141EC51B8DE978E5441B81E85EBCA685141EC51B8AE9F8E54417B14AED7C668514152B81E35A78E54415C8FC2B5C8685141A4703D4AB58E54417B14AE37CE6851417B14AEE7B08E5441E17A14EED0685141F6285C4FAE8E5441F6285CEFD2685141713D0A97AC8E5441F6285CEFD5685141EC51B88EAA8E54413D0AD703DC685141333333A3A78E5441713D0A37E0685141D7A3709DA88E544114AE47B1E0685141E17A14DE768E544114AE4791D7685141E17A14FE788E54417B14AE17D6685141666666B67F8E5441CDCCCC9CD4685141E17A145E868E5441333333D3D168514152B81E558F8E5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AE47E1AAC3685141295C8F12988E54417B14AEE7C2685141E17A14DE9C8E54410AD7A340C26851415C8FC235AD8E5441C3F528CCC268514166666646B58E54419A999919C3685141D7A3705DB88E544148E17AA4C36851413D0AD743B88E54411F85EB81C56851411F85EB71B78E5441AF102C9BC6685141DB954CF6B68E5441D11690B5C868514106D9C048B58E54419A999959C868514114AE4791B28E54417B14AED7C668514152B81E35A78E5441B81E85EBCA685141EC51B8AE9F8E5441F6285C8FCE685141EC51B8DE978E54413D0AD7D3CE685141B81E852B978E54418FC2F538CB685141CDCCCCCC968E5441E17A141EC76851410AD7A360968E54413D0AD7A3C56851419A999939968E5441B81E85BBC368514185EB51D8958E5441AE47E1AAC3685141295C8F12988E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>360152 - 3398239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000333333D3D168514152B81E558F8E54413D0AD7D3CE685141B81E852B978E5441F6285C8FCE685141EC51B8DE978E5441B81E85EBCA685141EC51B8AE9F8E54417B14AED7C668514152B81E35A78E54415C8FC2B5C8685141A4703D4AB58E54417B14AE37CE6851417B14AEE7B08E5441E17A14EED0685141F6285C4FAE8E5441F6285CEFD2685141713D0A97AC8E5441F6285CEFD5685141EC51B88EAA8E54413D0AD703DC685141333333A3A78E5441713D0A37E0685141D7A3709DA88E544114AE47B1E0685141E17A14DE768E544114AE4791D7685141E17A14FE788E54417B14AE17D6685141666666B67F8E5441CDCCCC9CD4685141E17A145E868E5441333333D3D168514152B81E558F8E5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AE47E1AAC3685141295C8F12988E54417B14AEE7C2685141E17A14DE9C8E54410AD7A340C26851415C8FC235AD8E5441C3F528CCC268514166666646B58E54419A999919C3685141D7A3705DB88E544148E17AA4C36851413D0AD743B88E54411F85EB81C56851411F85EB71B78E5441AF102C9BC6685141DB954CF6B68E5441D11690B5C868514106D9C048B58E54419A999959C868514114AE4791B28E54417B14AED7C668514152B81E35A78E5441B81E85EBCA685141EC51B8AE9F8E5441F6285C8FCE685141EC51B8DE978E54413D0AD7D3CE685141B81E852B978E54418FC2F538CB685141CDCCCCCC968E5441E17A141EC76851410AD7A360968E54413D0AD7A3C56851419A999939968E5441B81E85BBC368514185EB51D8958E5441AE47E1AAC3685141295C8F12988E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>360585 - 361497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363216 - 3178547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F000000A4703D9AF6AF5041EC51B87EC83C5441F6285C3FF6AF5041295C8F62C73C5441295C8F22F1AF504152B81E55C63C54415C8FC265EEAF50410AD7A310CD3C54415C8FC215ECAF5041666666E6D23C544100000050E9AF5041A4703D0ADA3C5441A4703DBAF2AF5041AE47E18ADB3C5441F6285C4F03B0504100000030DE3C54419A99996912B050418FC2F598E03C5441295C8F621BB05041A4703DFAD93C5441D7A3707D22B050411F85EB51D63C5441D7A370DD28B05041C3F5284CD23C5441000000D02FB050413D0AD7A3CE3C544148E17A1436B05041EC51B8EECA3C54410000002029B050413D0AD753C73C54411F85EBD11EB05041D7A370CDC13C5441CDCCCC6C1FB05041295C8FA2BF3C5441AE47E1CA1FB0504114AE4751BE3C5441B81E85AB21B050418FC2F598B83C5441EC51B86E24B0504133333343B13C5441713D0A1740B050418FC2F5C8B33C54418FC2F5184AB05041B81E85FBB33C54417B14AE8756B05041333333A3B33C5441C3F5286C54B05041EC51B8FEAB3C54415C8FC2D552B05041EC51B89EA43C54418FC2F5E852B050413D0AD7B39F3C54418FC2F5A83CB050419A9999A99C3C5441CDCCCC7C34B05041B81E858B9B3C544148E17AD428B050413D0AD7F3993C544148E17A0415B05041EC51B83E973C54415C8FC23501B050419A999989943C544152B81EE500B05041F6285C4F973C5441713D0AB7FFAF50415C8FC2959F3C54413D0AD7E3FEAF504185EB51E8A43C5441295C8F02FCAF50413D0AD793AC3C54417B14AE97F8AF504152B81E85B43C54411F85EB11F7AF5041333333F3B73C54413D0AD723F6AF5041A4703D1AB93C544152B81E55F5AF5041A4703D1ABA3C5441000000A0F6AF5041B81E85EBBC3C544185EB51C8FAAF50413D0AD7D3BD3C544114AE476100B05041713D0A27C13C54411F85EB61FEAF5041A4703D8AC63C54415C8FC2A5F8AF50415C8FC295C63C5441A4703D9AF8AF5041F6285C2FC83C5441295C8FC2F7AF50417B14AEB7C83C5441A4703D9AF6AF5041EC51B87EC83C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B86E24B0504133333343B13C5441713D0A1740B050418FC2F5C8B33C54418FC2F5184AB05041B81E85FBB33C54412DFD968156B05041E8BB2496B33C5441E6E1E5C353B050417CAF8B75AB3C5441DE6806D652B0504138A5578DA43C5441B6E7BDDC52B0504161C75F8FA23C5441AE47E14A4EB050419A999959A23C5441507CBF084EB05041D313085BA53C544114AE47014EB050411F85EBB1A53C5441713D0A774CB05041713D0A37B13C54419A9999594BB0504133333343B13C5441F1F4886C4AB0504198DFF9DEB13C5441D7A3706D49B050411F85EBB1B23C5441199FB66242B0504103F8739BB13C544197690E9D40B05041AC6B6055B13C544185EB51183DB05041A4703DCAB03C544152B81E2539B05041F6285CEFB03C544166515F6F37B05041C14E49D4B03C54410AD7A3902FB050417B14AE57B03C54417B14AE5728B05041AE47E1CAB03C544152B81EB527B05041D7A370ADB03C544148E17A1427B05041D7A3704DB03C54412E6CD46226B05041E3A7B15FB03C544133413F0F26B050418E434868B03C54417B14AEB725B0504114AE4771B03C5441EC51B86E24B0504133333343B13C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363216 - 3577090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F000000A4703D9AF6AF5041EC51B87EC83C5441F6285C3FF6AF5041295C8F62C73C5441295C8F22F1AF504152B81E55C63C54415C8FC265EEAF50410AD7A310CD3C54415C8FC215ECAF5041666666E6D23C544100000050E9AF5041A4703D0ADA3C5441A4703DBAF2AF5041AE47E18ADB3C5441F6285C4F03B0504100000030DE3C54419A99996912B050418FC2F598E03C5441295C8F621BB05041A4703DFAD93C5441D7A3707D22B050411F85EB51D63C5441D7A370DD28B05041C3F5284CD23C5441000000D02FB050413D0AD7A3CE3C544148E17A1436B05041EC51B8EECA3C54410000002029B050413D0AD753C73C54411F85EBD11EB05041D7A370CDC13C5441CDCCCC6C1FB05041295C8FA2BF3C5441AE47E1CA1FB0504114AE4751BE3C5441B81E85AB21B050418FC2F598B83C5441EC51B86E24B0504133333343B13C5441713D0A1740B050418FC2F5C8B33C54418FC2F5184AB05041B81E85FBB33C54417B14AE8756B05041333333A3B33C5441C3F5286C54B05041EC51B8FEAB3C54415C8FC2D552B05041EC51B89EA43C54418FC2F5E852B050413D0AD7B39F3C54418FC2F5A83CB050419A9999A99C3C5441CDCCCC7C34B05041B81E858B9B3C544148E17AD428B050413D0AD7F3993C544148E17A0415B05041EC51B83E973C54415C8FC23501B050419A999989943C544152B81EE500B05041F6285C4F973C5441713D0AB7FFAF50415C8FC2959F3C54413D0AD7E3FEAF504185EB51E8A43C5441295C8F02FCAF50413D0AD793AC3C54417B14AE97F8AF504152B81E85B43C54411F85EB11F7AF5041333333F3B73C54413D0AD723F6AF5041A4703D1AB93C544152B81E55F5AF5041A4703D1ABA3C5441000000A0F6AF5041B81E85EBBC3C544185EB51C8FAAF50413D0AD7D3BD3C544114AE476100B05041713D0A27C13C54411F85EB61FEAF5041A4703D8AC63C54415C8FC2A5F8AF50415C8FC295C63C5441A4703D9AF8AF5041F6285C2FC83C5441295C8FC2F7AF50417B14AEB7C83C5441A4703D9AF6AF5041EC51B87EC83C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B86E24B0504133333343B13C5441713D0A1740B050418FC2F5C8B33C54418FC2F5184AB05041B81E85FBB33C54412DFD968156B05041E8BB2496B33C5441E6E1E5C353B050417CAF8B75AB3C5441DE6806D652B0504138A5578DA43C5441B6E7BDDC52B0504161C75F8FA23C5441AE47E14A4EB050419A999959A23C5441507CBF084EB05041D313085BA53C544114AE47014EB050411F85EBB1A53C5441713D0A774CB05041713D0A37B13C54419A9999594BB0504133333343B13C5441F1F4886C4AB0504198DFF9DEB13C5441D7A3706D49B050411F85EBB1B23C5441199FB66242B0504103F8739BB13C544197690E9D40B05041AC6B6055B13C544185EB51183DB05041A4703DCAB03C544152B81E2539B05041F6285CEFB03C544166515F6F37B05041C14E49D4B03C54410AD7A3902FB050417B14AE57B03C54417B14AE5728B05041AE47E1CAB03C544152B81EB527B05041D7A370ADB03C544148E17A1427B05041D7A3704DB03C54412E6CD46226B05041E3A7B15FB03C544133413F0F26B050418E434868B03C54417B14AEB725B0504114AE4771B03C5441EC51B86E24B0504133333343B13C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363425 - 186116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000D7A3703DD9A45041B81E858B066454417B14AEF7C0A450411F85EB51F7635441295C8F62BEA450415C8FC235FA635441C3F5281CBBA45041A4703DAAFD63544114AE4751B8A45041000000C000645441E17A14CED1A45041CDCCCCCC11645441AE47E1FAD3A45041713D0A870E6454411F85EB91D6A45041EC51B8AE0A645441D7A3703DD9A45041B81E858B06645441
+</a>
+
+<b>
+010600000001000000010300000001000000060000001758EB91D6A45041C694B8AE0A645441D3A78F62BEA45041F408C335FA635441ECC5291CBBA450411CA53DAAFD635441536DE0FAD3A45041F3510A870E645441680B376CD5A450413AD2BD620C6454411758EB91D6A45041C694B8AE0A645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363425 - 371606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000D7A3703DD9A45041B81E858B066454417B14AEF7C0A450411F85EB51F7635441295C8F62BEA450415C8FC235FA635441C3F5281CBBA45041A4703DAAFD63544114AE4751B8A45041000000C000645441E17A14CED1A45041CDCCCCCC11645441AE47E1FAD3A45041713D0A870E6454411F85EB91D6A45041EC51B8AE0A645441D7A3703DD9A45041B81E858B06645441
+</a>
+
+<b>
+010600000001000000010300000001000000060000001758EB91D6A45041C694B8AE0A645441D3A78F62BEA45041F408C335FA635441ECC5291CBBA450411CA53DAAFD635441536DE0FAD3A45041F3510A870E645441680B376CD5A450413AD2BD620C6454411758EB91D6A45041C694B8AE0A645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>364974 - 388663
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004800000052B81EE50E315141A4703D5A05055541666666860E3151419A9999890305554114AE47A10C315141B81E857BF8045541713D0A470931514152B81E05E4045541F6285C9F0831514152B81E05E004554185EB51E80F31514100000070DF045541295C8FF2153151413D0AD793DE045541F6285C1F1831514100000070DE045541AE47E1CA1631514133333333DD045541C3F5281C14315141D7A370FDDB045541D7A3706D11315141000000F0DA045541CDCCCC1C0F31514133333333DA045541333333030E31514114AE4721D90455413D0AD7130C3151419A999989D80455411F85EBB109315141713D0AB7D7045541F6285C1F0731514114AE4741D7045541295C8F52053151419A9999E9D604554114AE4751033151418FC2F548D7045541000000B00131514152B81E85D70455419A9999B9FE305141C3F5286CD8045541E17A14AEFE305141B81E855BD804554166666686FC305141F6285C4FD904554166666686FC305141295C8F42D9045541B81E852BF930514133333303DB045541A4703D6AF73051410AD7A350DC04554185EB5168F3305141713D0AF7DC045541CDCCCCDCF1305141EC51B82EDD045541D7A3703DEF305141295C8FC2DD045541A4703D9AEC305141C3F5286CDE0455411F85EB51E2305141D7A3708DE0045541D7A370CDDF305141EC51B81EE2045541CDCCCC0CDE305141333333A3E2045541E17A14BED8305141713D0AE7E4045541B81E857BD230514185EB5168E6045541713D0AD7D23051419A999959F0045541B81E85FBD3305141F6285C3FF4045541B81E85EBD53051410AD7A370F50455411F85EB01D8305141D7A3707DF5045541C3F5286CE6305141713D0A07EF045541333333E3E7305141000000C0EF04554166666626EA305141A4703D3AEF045541CDCCCC3CEC305141333333A3ED045541E17A144EF230514152B81E95E504554148E17AA4FB30514148E17A74E2045541AE47E12AF830514148E17AD4E40455415C8FC235F4305141B81E853BE604554133333373F130514114AE47B1EE0455413D0AD7F3F3305141A4703DAAF00455410AD7A360F6305141333333E3F204554148E17AA4F3305141F6285C9FF5045541713D0A67EE3051413D0AD713F80455410AD7A330E9305141713D0A07FE0455415C8FC255E730514185EB510801055541713D0A57EA305141666666E6090555419A999959E630514114AE47C111055541E17A14AEE7305141666666561405554133333313FD305141E17A14CE0C05554148E17A94FE305141AE47E12A1305554152B81E1501315141AE47E18A20055541713D0A4702315141EC51B83E28055541F6285CDF04315141CDCCCCEC270555417B14AE6707315141C3F5289C2705554114AE47A1093151415C8FC255270555413333330313315141CDCCCCCC26055541C3F5285C133151417B14AEC7260555410000003012315141EC51B8FE1C05554148E17AD4113151416666662618055541F6285CFF11315141713D0AD715055541B81E85FB1131514185EB51E81305554148E17AA410315141C3F528CC0A055541CDCCCC4C0F315141666666460805554152B81EE50E315141A4703D5A05055541
+</a>
+
+<b>
+01060000000100000001030000000100000022000000C4144E460D315141B4B8E4A5DF04554121B2862F0D31514100FEB6A7DF04554106A8C02E0D315141C4D3C6A7DF045541EFA6E1220D3151418AD2B9A8DF045541CA3DF8FF0C315141807284ABDF04554116295C9F083151415DB81E05E0045541BC3D0A470931514152B81E05E40455411B5E39060C3151414256FFAAF404554193F9ECC415315141D42CEB75F40455413C3CFC811C31514115879AA1F3045541D7126AC126315141B1EBB5CEF2045541B5E8951E29315141437BD095F20455415959D348283151419F0A93EBF0045541ED04E43C28315141BA6F31E5F0045541713D0A3727315141AE47E1BAF00455410AD7A3602431514148E17A44EF045541A93FAF2224315141C13367C7EE04554123F7D5712331514151986062ED045541666666761F31514185EB5158E5045541EC51B8BE1E3151411F85EB01E1045541295C8FE21F315141AE47E11ADF045541D7A370DD213151417B14AEF7DD0455415C8FC24520315141713D0A67DE0455413D0AD7B31B315141E17A144EDE0455417B14AE871A3151417B14AE47DE045541F6285C1F1831514100000070DE045541457690F21531514114F8D693DE04554185EB51E80F31514100000070DF045541C92061B10D31514170F7549DDF04554115F7A5790D31514189C0C9A1DF04554149709B730D315141166945A2DF0455419459945C0D3151415FC61CA4DF045541FEE6CF460D3151415A57DAA5DF045541C4144E460D315141B4B8E4A5DF045541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>365816 - 3515256
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002D000000000000E076F45041B81E85CB1323544185EB51D884F45041F6285C5F0E2354410000001090F45041CDCCCCDC0C2354415C8FC24597F45041D7A3701D0C23544148E17A1499F450419A9999590B235441666666C695F45041A4703D7A002354419A9999A991F45041F6285CAFF1225441A4703D6A89F45041C3F528DCE62254416666661684F450418FC2F518DF225441333333C380F450411F85EB81DA225441AE47E19A7EF45041B81E853BD822544152B81E856EF45041EC51B87ED12254410000005066F45041CDCCCCACCC225441EC51B8AE61F45041B81E854BCC22544114AE47615DF4504166666646D4225441A4703DBA5AF4504133333313D32254413D0AD78357F45041F6285C6FD022544148E17AA453F450417B14AEF7D022544185EB51F84CF450417B14AE87CD2254410AD7A3003DF45041713D0A47C7225441D7A370DD38F450415C8FC2B5C52254410AD7A32036F450417B14AEA7C22254419A99990932F45041C3F528FCBC225441EC51B88E2DF4504114AE4701BB22544114AE47512CF4504166666696BA225441D7A3705D28F4504152B81EA5C2225441A4703D4A27F45041333333E3C7225441C3F5288C26F4504152B81E05CC22544148E17A9425F45041713D0A77CE22544114AE472120F4504100000000D222544148E17A441EF4504152B81EA5D3225441666666661CF450419A999959D422544185EB51A826F45041D7A370ADDF2254418FC2F5A837F45041AE47E1FAF1225441A4703D1A38F45041C3F528BCF2225441E17A142E4CF45041C3F528DC03235441EC51B87E4CF45041295C8F12042354419A9999F958F450419A9999990E235441CDCCCC3C59F45041E17A14EE0E2354413333336362F45041B81E852B1D235441295C8F9262F45041713D0A871D23544185EB51F869F45041713D0A4719235441EC51B88E65F450411F85EB810C235441C3F5282C71F45041333333A308235441000000E076F45041B81E85CB13235441
+</a>
+
+<b>
+0106000000010000000103000000020000005F000000D79C27FF82F4504169BE7997DD225441333333C380F450411F85EB81DA2254411F85EB917FF4504100000040D9225441F3C0C42B7EF450418FE9838EDA225441BC901EA87BF45041E8224ADDDB225441AF9AD36B78F45041721971EFDC22544118451DCD73F4504168958E26DF225441E319F84D72F450419DE31C04E0225441C3F5280C72F450410AD7A360DF2254418119389374F45041DF86AFFCDD22544169E0BC1678F450416C541F59DC225441DD46D6B679F45041EABBF1C4DB22544160BD1ACF7BF450415CDD8519DB22544147BF20987DF45041AD458126DA225441DCFCFA1F7EF45041F63037D7D922544122EDBB997EF450415BD13438D922544167FFDFE77EF450417552907AD8225441AE47E19A7EF45041B81E853BD82254410886887377F45041F9A565E3D72254414FD9E15070F450411605808BD722544105E1944D6DF45041BCBD6266D7225441295C8F226AF45041F6285C3FD72254417C2B0D2369F450411B47A074D722544152F862A264F450415D50EC64D8225441101903A35CF4504105B2BD0FDA225441F7D3F9D457F45041456B908CDE225441815832A054F45041686545E1E12254418E5EFE8153F4504159981F11E1225441C304E2E552F450417A6EF733E0225441798EF24053F450414904A052DE2254412F18039C53F45041B9534D8BDC225441678540EE54F450414576EC75DA225441459166C556F450412C668FBED622544179DD2AC452F45041B52ACC7AD322544159924C534DF450411A322B8ACF225441E346712B48F4504157C49B72CC225441D70B5E6A46F45041CD9BB129CC225441E54416EE43F4504107434074CA2254410AD7A3003DF45041713D0A47C7225441D7A370DD38F450415C8FC2B5C52254410AD7A32036F450417B14AEA7C22254419A99990932F45041C3F528FCBC225441EC51B88E2DF4504114AE4701BB22544114AE47512CF4504166666696BA225441D7A3705D28F4504152B81EA5C2225441A4703D4A27F45041333333E3C7225441BCE17D8926F45041DEF2DC0BCC225441E936F67027F45041A72764ADCE225441585F0D6328F45041AC182C7DD1225441FFB33E3726F45041D8C956C7D122544190E18F1C23F45041567FDBDAD3225441FE281CBE1EF450417471B9BDD622544185EB51A826F45041D7A370ADDF2254418FC2F5A837F45041AE47E1FAF1225441A4703D1A38F45041C3F528BCF22254418D68696042F450410C6EF3C3FA225441E17A142E4CF45041C3F528DC03235441EC51B87E4CF45041295C8F1204235441EC51B8EE4EF4504114AE4721062354411FF77F6451F45041520918C605235441A6A152B857F4504149FA727C07235441494326575AF45041BAED25DD08235441782468CD5CF4504151E0C7290B235441C40623F95BF45041644A7F2D0E235441408432C55AF450412122102C11235441B947DAF55BF45041E5DC597E12235441CB3D613C5EF4504151C90D9E11235441AC7AB8DA60F450418D4F689B12235441F713B79B63F45041D817B6E2152354418E3F598D64F45041036FE1631C23544185EB51F869F45041713D0A47192354418D1A199966F45041CFE9D4840F2354415A2B258F65F45041188926830C2354416EE32B8869F45041545FEA2E0B23544171F664336CF45041BA95BE290A235441FE6149306EF45041B6FFB6A109235441D8C0C5576FF450412810433F09235441C3F5282C71F45041333333A308235441000000E076F45041B81E85CB13235441AC1057187AF4504167BD8C8B122354410AD7A3407BF450419A9999390F235441B81E856B79F45041D7A3707D0C235441EEC5CEAC7EF450418D615C560B2354419BCDD1D082F4504192F19C820A23544185EB51D884F45041F6285C5F0E2354410000001090F45041CDCCCCDC0C2354415C8FC24597F45041D7A3701D0C23544148E17A1499F450419A9999590B235441666666C695F45041A4703D7A002354419A9999A991F45041F6285CAFF1225441A4703D6A89F45041C3F528DCE62254418F258D4C87F4504164B66EFDE3225441E5AEB3FE85F450416A4272E0E1225441DAB4359484F45041CDD045D0DF225441D79C27FF82F4504169BE7997DD22544106000000D7A3706D4EF4504152B81E85032354414DBA2FB450F45041AA0539C5FC225441AE47E1DA50F450413D0AD7B3FC22544114AE479157F45041000000A0FF225441AE47E1AA56F45041C3F528EC02235441D7A3706D4EF4504152B81E8503235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>365652 - 2984452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000001F85EBA1E19250410AD7A3C0E70C5541E17A14DEDB92504152B81EB5FD0C5541713D0A97DC925041295C8FF2FE0C554152B81ED5EC925041713D0A37030D55410AD7A390F79250419A999909060D55411F85EBC1F89250413D0AD753050D554100000070FD9250411F85EBA1EE0C55413D0AD763FF9250418FC2F528E50C55419A999919E4925041295C8F62DE0C55411F85EBA1E19250410AD7A3C0E70C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000068402D8EE09250411C58D55DF70C55417247C007F59250412E80FC15F90C554145A9452EFB92504115A88793F90C55418AA45386FB925041017F85E8F70C554146F2CAE1DD9250418F0E70D5F50C55417BA00599DD92504177A3401EF70C554168402D8EE09250411C58D55DF70C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>365652 - 5171779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000001F85EBA1E19250410AD7A3C0E70C5541E17A14DEDB92504152B81EB5FD0C5541713D0A97DC925041295C8FF2FE0C554152B81ED5EC925041713D0A37030D55410AD7A390F79250419A999909060D55411F85EBC1F89250413D0AD753050D554100000070FD9250411F85EBA1EE0C55413D0AD763FF9250418FC2F528E50C55419A999919E4925041295C8F62DE0C55411F85EBA1E19250410AD7A3C0E70C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000068402D8EE09250411C58D55DF70C55417247C007F59250412E80FC15F90C554145A9452EFB92504115A88793F90C55418AA45386FB925041017F85E8F70C554146F2CAE1DD9250418F0E70D5F50C55417BA00599DD92504177A3401EF70C554168402D8EE09250411C58D55DF70C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366443 - 3467613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000034000000EC51B83E452D5141D7A3708D0E1D5541295C8F52502D51410AD7A370101D55415C8FC2755E2D51419A9999D9121D5541A4703D0A5C2D5141E17A14DE0B1D5541CDCCCC7C592D5141E17A142E031D55410AD7A350572D5141000000C0FC1C55411F85EBC1552D5141713D0AD7F71C55411F85EB01552D5141666666B6F51C55419A9999A9542D5141E17A143EF41C5541CDCCCCBC532D5141B81E850BEF1C55415C8FC2B5522D51411F85EB51E71C554133333373522D51415C8FC235E21C554166666696502D51418FC2F578E11C55418FC2F5D84C2D5141000000E0E11C5541D7A370FD482D5141E17A147EE11C55418FC2F5A8422D51411F85EBE1E01C5541EC51B80E372D514100000050DD1C554114AE47B1FA2C514166666656CB1C5541F6285CEFF82C51411F85EBB1CD1C554114AE4701F62C51417B14AE17D11C5541A4703DDAF12C51410AD7A320D41C55415C8FC2B5EE2C51418FC2F558D61C55413D0AD7B3EF2C5141295C8F42D71C554152B81E35F02C5141E17A140ED81C55413D0AD793F12C5141C3F5283CD81C5541295C8FB2F22C51419A999929D81C5541A4703DDAF32C5141CDCCCC7CD81C55410AD7A3C0F42C514152B81E35D91C5541E17A145EF52C514185EB5178DA1C5541C3F5288CF52C5141C3F528FCDB1C5541AE47E10AF52C514152B81EA5DD1C554152B81EB5F32C51419A999969DF1C5541B81E85CBF12C514152B81E25E11C55413D0AD7C3EE2C5141295C8F82E51C554166666636ED2C5141B81E85FBE91C5541AE47E13AEC2C51418FC2F5C8EB1C554148E17A24022D5141EC51B8EEF51C5541D7A3707D022D5141713D0A37F51C554185EB5168052D51413D0AD753F51C55410AD7A3400C2D5141D7A370FDF41C5541EC51B89E0F2D51410AD7A3E0F41C5541EC51B8CE112D5141CDCCCC8CF51C5541A4703D2A142D51418FC2F5C8F61C5541AE47E1FA172D514114AE4741F91C5541EC51B8AE1B2D5141E17A148EFB1C55413D0AD7A3212D51419A9999A9FF1C5541295C8F62282D514148E17A64031D5541B81E858B2F2D5141333333A3051D5541A4703D4A342D514114AE4791071D5541E17A148E3B2D514148E17A040B1D55411F85EB71422D5141333333130E1D5541EC51B83E452D5141D7A3708D0E1D5541
+</a>
+
+<b>
+0106000000010000000103000000010000002100000014AE47B1FA2C514166666656CB1C554114AE4701F62C51417B14AE17D11C5541AB949F90F22C51419B21BF9BD31C55419001B138FA2C51416F0B0C1BD61C55419E09C072F92C51415890E591D91C55412B49A420F82C51417D51D186DF1C55418434F275F82C51410B0EDD9CDF1C5541B9544E39192D514143B67814E81C5541A6598A2D2A2D51410A962676EC1C554178AFC3CC402D514108EAD14EF21C5541455FC2AD552D5141124D3DB6F71C5541FE6F4F8D542D5141D757F5C8F31C55416A78312F542D5141EF4E498EF11C55414FC96FD7532D5141907330A1EF1C55414AFB175F532D5141D73A034BEC1C5541905091A1522D5141BC107905E61C554133333373522D51415C8FC235E21C5541AE47E12A522D5141D7A370BDD91C55411F85EBF14F2D5141D7A370DDD91C55415C8FC2F5482D5141B81E859BD91C55413D0AD703482D514133333393D91C5541AE47E1FA442D51411F85EB31D91C5541EC51B85E392D51419A999919D51C554114AE4711382D5141A4703DAAD41C5541F6285C5F352D5141333333C3D31C5541C3F5285C302D5141CDCCCC4CD11C55411F85EB512E2D51417B14AE97D01C5541AE47E1FA242D5141B81E855BCD1C5541B81E85DB162D51411F85EB61C81C5541A4703D2A052D51415C8FC215C11C5541A4703DAA002D51413D0AD783C41C55413D0AD793FD2C51418FC2F578C71C554114AE47B1FA2C514166666656CB1C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346107 - 163158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C54415C8FC29509035141CDCCCC0CD08C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441666666F600035141713D0A47E28C5441AE47E13A01035141EC51B8DEE58C54415C8FC2B5020351415C8FC205EA8C5441000000B0030351410AD7A390EF8C5441D7A3705D04035141295C8FE2F48C5441295C8F22040351417B14AE57FA8C5441295C8F7203035141E17A144EFE8C54411F85EB4103035141EC51B84EFF8C5441D7A370AD0E035141EC51B88EFE8C544185EB51A8290351415C8FC295FC8C5441666666A62A035141EC51B84EFD8C5441EC51B87E30035141A4703DCAF88C5441000000003103514166666606F88C54415C8FC2F530035141CDCCCC0CF78C5441F6285C3F1A0351418FC2F5D8D88C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C5441378F7FD30A0351414F4F6136CE8C5441DC9BC29509035141CA88CD0CD08C5441F6C86E1F08035141DD382F92D28C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441F67B66F60003514141E70947E28C54414E8BAE0001035141AAB01FD1E28C5441AE47E13A01035141EC51B8DEE58C5441D1063D93010351416C85A1D6E68C5441FAE9C3B50203514113C9C205EA8C5441273000B0030351419CB8A290EF8C5441C5A939D003035141837BAF8DF08C5441D7A3705D04035141295C8FE2F48C5441295C8F22040351417B14AE57FA8C5441295C8F7203035141E17A144EFE8C5441C6CF3367030351419D9F018AFE8C54419394EC41030351411840B84EFF8C5441D7A370AD0E035141EC51B88EFE8C5441E55E41C51B035141A374AB99FD8C544108B642C51B0351418D5BAB99FD8C5441803D51A8290351411721C295FC8C544108D751A829035141DB90C295FC8C544185EB51A8290351415C8FC295FC8C544122F765A62A035141ED00B84EFD8C54416FACB87E3003514187E73CCAF88C54413C80CB9D30035141B0852A9BF88C54413AFDFFFF30035141CC226606F88C54415C8FC2F530035141CDCCCC0CF78C5441F6285C3F1A0351418FC2F5D8D88C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346107 - 354607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C54415C8FC29509035141CDCCCC0CD08C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441666666F600035141713D0A47E28C5441AE47E13A01035141EC51B8DEE58C54415C8FC2B5020351415C8FC205EA8C5441000000B0030351410AD7A390EF8C5441D7A3705D04035141295C8FE2F48C5441295C8F22040351417B14AE57FA8C5441295C8F7203035141E17A144EFE8C54411F85EB4103035141EC51B84EFF8C5441D7A370AD0E035141EC51B88EFE8C544185EB51A8290351415C8FC295FC8C5441666666A62A035141EC51B84EFD8C5441EC51B87E30035141A4703DCAF88C5441000000003103514166666606F88C54415C8FC2F530035141CDCCCC0CF78C5441F6285C3F1A0351418FC2F5D8D88C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C5441378F7FD30A0351414F4F6136CE8C5441DC9BC29509035141CA88CD0CD08C5441F6C86E1F08035141DD382F92D28C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441F67B66F60003514141E70947E28C54414E8BAE0001035141AAB01FD1E28C5441AE47E13A01035141EC51B8DEE58C5441D1063D93010351416C85A1D6E68C5441FAE9C3B50203514113C9C205EA8C5441273000B0030351419CB8A290EF8C5441C5A939D003035141837BAF8DF08C5441D7A3705D04035141295C8FE2F48C5441295C8F22040351417B14AE57FA8C5441295C8F7203035141E17A144EFE8C5441C6CF3367030351419D9F018AFE8C54419394EC41030351411840B84EFF8C5441D7A370AD0E035141EC51B88EFE8C5441E55E41C51B035141A374AB99FD8C544108B642C51B0351418D5BAB99FD8C5441803D51A8290351411721C295FC8C544108D751A829035141DB90C295FC8C544185EB51A8290351415C8FC295FC8C544122F765A62A035141ED00B84EFD8C54416FACB87E3003514187E73CCAF88C54413C80CB9D30035141B0852A9BF88C54413AFDFFFF30035141CC226606F88C54415C8FC2F530035141CDCCCC0CF78C5441F6285C3F1A0351418FC2F5D8D88C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724440 - 725334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A05C1591839E50412BA9D82FEA465541B5A0ECB8839E50417418779FEA465541927C9204879E5041BA5986E8E746554119FB2E8E8A9E50410CDA79D9E5465541C8EFAB21819E504126C8DBACCD46554154F107F97D9E5041EFE507C9CF46554175A986F27C9E5041DFBBC419D14655412F6C6F487B9E5041874C9AFAD2465541CCC4745E7B9E504188FB4B38D3465541000000607B9E504166666636D3465541A05C1591839E50412BA9D82FEA465541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DAA839E504166666676EA465541000000607B9E504166666636D3465541713D0AB7749E504152B81E65DB465541E17A144E7A9E5041A4703D6AE6465541E17A145E7F9E5041713D0A47F0465541713D0A977F9E504152B81ED5F0465541F6285C3F849E50418FC2F528EC4655418FC2F518849E5041CDCCCCACEB465541A4703DAA839E504166666676EA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724440 - 1639487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A05C1591839E50412BA9D82FEA465541B5A0ECB8839E50417418779FEA465541927C9204879E5041BA5986E8E746554119FB2E8E8A9E50410CDA79D9E5465541C8EFAB21819E504126C8DBACCD46554154F107F97D9E5041EFE507C9CF46554175A986F27C9E5041DFBBC419D14655412F6C6F487B9E5041874C9AFAD2465541CCC4745E7B9E504188FB4B38D3465541000000607B9E504166666636D3465541A05C1591839E50412BA9D82FEA465541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DAA839E504166666676EA465541000000607B9E504166666636D3465541713D0AB7749E504152B81E65DB465541E17A144E7A9E5041A4703D6AE6465541E17A145E7F9E5041713D0A47F0465541713D0A977F9E504152B81ED5F0465541F6285C3F849E50418FC2F528EC4655418FC2F518849E5041CDCCCCACEB465541A4703DAA839E504166666676EA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724440 - 5290556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A05C1591839E50412BA9D82FEA465541B5A0ECB8839E50417418779FEA465541927C9204879E5041BA5986E8E746554119FB2E8E8A9E50410CDA79D9E5465541C8EFAB21819E504126C8DBACCD46554154F107F97D9E5041EFE507C9CF46554175A986F27C9E5041DFBBC419D14655412F6C6F487B9E5041874C9AFAD2465541CCC4745E7B9E504188FB4B38D3465541000000607B9E504166666636D3465541A05C1591839E50412BA9D82FEA465541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DAA839E504166666676EA465541000000607B9E504166666636D3465541713D0AB7749E504152B81E65DB465541E17A144E7A9E5041A4703D6AE6465541E17A145E7F9E5041713D0A47F0465541713D0A977F9E504152B81ED5F0465541F6285C3F849E50418FC2F528EC4655418FC2F518849E5041CDCCCCACEB465541A4703DAA839E504166666676EA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368160 - 187145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001E00000085EB51E855BC5041666666664D375441D7A3708D55BC5041C3F5282C4E37544148E17A2442BC5041CDCCCC4C78375441000000D044BC5041295C8F227A375441F6285C6F49BC5041333333B37D37544148E17AF44CBC50415C8FC235803754411F85EB7151BC50411F85EBD183375441F6285CBF52BC504152B81EB584375441D7A370BD57BC50415C8FC26588375441000000305CBC5041C3F5289C8B3754410AD7A3C05FBC5041333333138E375441B81E857B62BC50411F85EB51903754411F85EB4163BC5041295C8F5291375441A4703DDA63BC5041295C8F929237544152B81E2565BC50415C8FC2058E3754410AD7A33066BC5041A4703D6A8A3754415C8FC2F567BC5041666666B684375441D7A370BD68BC5041A4703D6A84375441295C8F326BBC5041A4703DEA793754418FC2F5886EBC50419A9999796C375441000000506EBC5041666666C66B37544152B81E656DBC5041B81E854B6937544148E17AB475BC5041E17A14CE653754417B14AE676EBC5041713D0AA75C37544152B81E656ABC50413D0AD7335737544148E17AC466BC50419A99994955375441713D0A4766BC50417B14AE0755375441295C8F525DBC5041A4703DCA503754418FC2F57858BC50419A9999A94E37544185EB51E855BC5041666666664D375441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000470DBD8555BC50413B19E03C4E3754416E61930654BC504180F0847A4D375441B81E85FB51BC5041CDCCCC8C4C375441000000604CBC504152B81EF549375441C3F528AC49BC50418FC2F578483754417B14AE7744BC5041EC51B8DE45375441F6285CDF3EBC50415C8FC26543375441F6285C0F3DBC50410AD7A360423754417B14AE373CBC5041C3F5286C41375441D7A3704D3DBC504152B81EB53F3754415C8FC2453ABC5041E17A141E3E37544185EB512839BC5041C3F5287C3D37544152B81E8536BC5041666666B643375441EC51B81E3BBC504133333343483754412B0C9D3D3CBC504163C344BB46375441B57B9F8C46BC50419354BD054B3754417B96D2F053BC5041E3395582503754411CDA575954BC5041705F66BC503754417C8DB53B55BC5041B1778CDD4E375441E4E9464855BC5041588045C24E375441470DBD8555BC50413B19E03C4E375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368165 - 187177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3709DB1BC50411F85EB91C137544100000090B4BC5041D7A370ADC1375441A4703D3AB8BC5041E17A142EC237544114AE4721BCBC5041C3F5284CC3375441CDCCCC5CBFBC50411F85EB81C43754413D0AD783BFBC50413D0AD7E3B13754418FC2F588BFBC50419A9999199C37544133333373BFBC50417B14AE9795375441CDCCCC1CBDBC50411F85EB3193375441A4703D1ABABC50411F85EB018D375441A4703DAAB5BC5041666666068F375441A4703D8AB1BC5041000000509037544133333393B1BC5041CDCCCC8C943754413D0AD7A3B1BC504185EB51089C3754418FC2F5B8B1BC5041295C8F52A63754417B14AEA7B1BC504148E17AD4B4375441E17A149EB1BC50410AD7A370C0375441D7A3709DB1BC50411F85EB91C1375441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C5D5955DBCBC50411893D9A8913754417FEA6664BBBC5041DEE89DA88F37544142F1EB57BBBC5041E2F46D928F375441B9CAE53FBBBC50411BA0935D8F37544121E29D7FBABC5041A0D6D1E18D37544100D34FA7B9BC5041DEA6AC528E3754419B0749EAB7BC50411C207B768E3754418CEF326BB4BC5041DE2B0636903754413DBB3A89B2BC50414C460227913754419DC9ABBAB1BC5041AC1BAF9293375441604E3B9EB1BC504136EFF00A98375441B9036D9EB1BC5041333806449837544116F127ABB1BC5041EAA91B44983754411D1869AAB1BC5041ECA9D12898375441ED2511BFB3BC5041B79E9B4798375441A1FDA39CB3BC5041C66C89D79337544121E1C139B5BC5041EA0F24D3913754411CEB6687B9BC50410A1E950491375441C698A6D0BBBC5041BD94F6F993375441E9DA0FE4BCBC5041B9273A529537544116F50BD5BDBC5041ABBA7DAA9637544161448DD6BEBC5041236271AE97375441E9C1A47CBFBC5041506FAB6A98375441DF2E2374BFBC504154E772DF95375441B6107473BFBC5041F51614AB953754415F8F6633BFBC5041BAAA596095375441DFA0EF11BDBC50418599132C93375441375AAB70BCBC5041517A14D091375441C5D5955DBCBC50411893D9A891375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368433 - 187145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000160000007B14AE7744BC5041EC51B8DE45375441F6285CDF3EBC50415C8FC26543375441F6285C0F3DBC50410AD7A360423754417B14AE373CBC5041C3F5286C41375441D7A3704D3DBC504152B81EB53F3754415C8FC2453ABC5041E17A141E3E37544185EB512839BC5041C3F5287C3D37544152B81E8536BC5041666666B643375441EC51B81E3BBC50413333334348375441000000E034BC50418FC2F5D85637544152B81E152DBC5041AE47E10A6937544114AE47A12DBC504114AE47B169375441D7A3705D34BC5041333333936E3754413333338335BC5041333333536F375441C3F5281C3CBC50415C8FC22574375441E17A146E3FBC50413D0AD7B37637544148E17A2442BC5041CDCCCC4C78375441D7A3708D55BC5041C3F5282C4E375441B81E85FB51BC5041CDCCCC8C4C375441000000604CBC504152B81EF549375441C3F528AC49BC50418FC2F578483754417B14AE7744BC5041EC51B8DE45375441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000470DBD8555BC50413B19E03C4E3754416E61930654BC504180F0847A4D375441B81E85FB51BC5041CDCCCC8C4C375441000000604CBC504152B81EF549375441C3F528AC49BC50418FC2F578483754417B14AE7744BC5041EC51B8DE45375441F6285CDF3EBC50415C8FC26543375441F6285C0F3DBC50410AD7A360423754417B14AE373CBC5041C3F5286C41375441D7A3704D3DBC504152B81EB53F3754415C8FC2453ABC5041E17A141E3E37544185EB512839BC5041C3F5287C3D37544152B81E8536BC5041666666B643375441EC51B81E3BBC504133333343483754412B0C9D3D3CBC504163C344BB46375441B57B9F8C46BC50419354BD054B3754417B96D2F053BC5041E3395582503754411CDA575954BC5041705F66BC503754417C8DB53B55BC5041B1778CDD4E375441E4E9464855BC5041588045C24E375441470DBD8555BC50413B19E03C4E375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368927 - 187142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000040000000333333E383BB50413D0AD7030D375441713D0A1784BB50417B14AEB70E37544152B81E4585BB50410AD7A30010375441333333E385BB50415C8FC2C510375441AE47E19A86BB50410AD7A370113754419A9999E986BB5041A4703DFA1237544148E17A0487BB5041A4703D6A1437544185EB51A886BB5041C3F5281C1637544148E17A2486BB5041B81E856B183754410AD7A3E085BB50410AD7A3501A37544148E17AE485BB5041EC51B87E1B3754417B14AE1786BB50418FC2F5581D375441D7A370FD85BB5041D7A370FD1E3754419A9999E986BB50410AD7A36022375441713D0AF786BB50410000002026375441AE47E10A88BB50417B14AE4728375441E17A146E89BB504152B81E352B37544114AE47F189BB50413D0AD7632E375441CDCCCC0C8BBB5041D7A3706D343754411F85EB818ABB5041333333933537544114AE478188BB5041B81E85BB37375441F6285C8F87BB5041EC51B8AE38375441AE47E19A86BB5041666666663A375441EC51B8AE85BB50411F85EBA13B3754419A9999E984BB5041C3F5282C3D375441AE47E1DA83BB504114AE47013F3754416666664683BB504148E17A9440375441A4703DCA81BB5041713D0A17433754418FC2F53881BB5041CDCCCC5C44375441D7A3703D80BB5041713D0A0747375441F6285C8F7EBB5041A4703D0A4A375441B81E858B7EBB5041F6285C1F4C37544152B81E857DBB5041EC51B85E503754413D0AD7637CBB5041713D0A8752375441000000D07BBB5041B81E858B543754411F85EB017CBB5041CDCCCC1C5537544114AE47A1A0BB50411F85EBA1583754418FC2F5C8ABBB5041666666F659375441C3F5286CAFBB5041295C8F725A37544100000040ABBB50415C8FC2F5413754411F85EB21AABB5041EC51B86E3B375441000000009FBB50418FC2F598F93654418FC2F5D89EBB5041295C8FB2F83654410AD7A390A1BB50415C8FC2A5F4365441CDCCCCCCA0BB504114AE4701F4365441CDCCCC3C9FBB504100000000F2365441E17A146E9DBB5041000000C0EF3654415C8FC2A59CBB5041CDCCCCDCEE365441C3F528FC9ABB5041CDCCCC7CF0365441F6285C4F99BB5041EC51B85EF2365441295C8F5297BB5041B81E850BF4365441713D0AE796BB5041B81E854BF6365441D7A3702D95BB50415C8FC255F8365441295C8F3293BB50419A9999E9F83654418FC2F5A893BB5041A4703D1AFC365441D7A3703D93BB5041713D0A17FE365441D7A370FD90BB5041AE47E1FAFE365441F6285CCF8EBB504148E17AE4FE36544114AE47118DBB504185EB5108FF365441000000208CBB50413D0AD7B301375441666666068BBB504152B81EF502375441295C8FF288BB50419A9999290437544152B81E8587BB50410AD7A3F005375441333333E383BB50413D0AD7030D375441
+</a>
+
+<b>
+010600000001000000010300000001000000440000009C48AB4E86BB504151B44D4D08375441A22E6D0A86BB5041A51F38D208375441D59E8C1886BB504155E1ACEC09375441D1FFB63A84BB5041C8BFA4890C3754418BB1E35186BB50418510A77E1037544183D174B186BB50417E3038DE10375441602A0BBD87BB50413A8B45ED0E375441C77667A288BB5041ADF28C220D3754412CB6896189BB5041C8BFA4890C3754419302E6468ABB50412A5AD4570B3754416768B6788BBB50418CF403260A375441350DA9698DBB5041006FA29408375441FB4A542591BB5041FDC9AFA3063754414EFD0D5E92BB5041AA6F9125063754413F187C6092BB50410F62E52F06375441B8F5E60798BB5041F3C87E6703375441206AF01998BB504106C79B4F0337544110AD365098BB50416EA5783403375441AC6309779DBB5041182017A3013754412630066CA0BB5041DBB9B601023754413E44E714A0BB5041897780FEFF365441A52C7C04A0BB5041005D689DFF365441FCB34FDA9FBB5041E68E00A4FE3654418EB23E7E9BBB50410500A211FE36544197EA3A859BBB50415D424FEDFD3654419A649CDB9ABB5041E696B1D6FD3654415046283A9CBB50410373FADCF93654414A85E9C099BB50414D916E7EF8365441563AEBE69ABB50415385312BF7365441E54F8C499DBB50415F3A3351F836544169607B249FBB504123CE56C1F53654412903C59A9FBB504145591C2FF53654410E5A0448A0BB504116E08970F436544192B7816C9CBB50416CC474D6EF36544141A5E8E19BBB5041E45F5AA6F0365441771213369BBB5041EC508B56F13654417A8C748C9ABB5041D4B303D7F23654416B5D11109ABB5041BC167C57F4365441FD1F98FC97BB5041CEBF402AF436544186C8CCC597BB50410A4966AAF3365441DEB0EB9497BB50410BE997D3F33654410A9AF95297BB5041BC167C57F4365441B8F5E60798BB504123CE56C1F5365441DB926E8796BB5041C53C0C95F8365441780AF79995BB5041B019E66BF9365441F17FA66894BB50416BEF3477F9365441B0CF56CA93BB504106ED5B33F9365441D421E06F93BB5041D0F10DBBF9365441AA3884A093BB504134AA00E0FB3654418FC2F5A893BB5041A4703D1AFC365441D7A3703D93BB5041713D0A17FE365441D7A370FD90BB5041AE47E1FAFE365441F6285CCF8EBB504148E17AE4FE36544114AE47118DBB504185EB5108FF365441AD04F4BC8CBB5041FE6A35F7FF365441AB13C67C8DBB504184BA467100375441BDED170A8DBB5041F3E611F700375441FCE0DDE38CBB5041914CE228023754410EC14C848CBB5041E5BEEC80033754419E812AC58BBB5041031EA09F04375441705B7C528BBB5041031EA09F04375441A2D8C4F389BB504125A2699403375441DD0EA48B89BB50414336CFD003375441EF04A56789BB50410028B0E503375441555AADB986BB5041AE6DE27C07375441C60C5EA986BB50418BA4A69C0737544140E9979D86BB50419F4395B3073754419C48AB4E86BB504151B44D4D08375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>369381 - 44980
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001A000000AE47E17ACBA050417B14AEB7CF7D544185EB5148B9A050411F85EB51D07D54411F85EB61B9A050419A999929D57D544133333373C2A050415C8FC2E5D57D54410AD7A380C9A05041713D0AF7D57D54410AD7A310D2A05041A4703D3AD57D5441AE47E13AE2A05041AE47E19AD27D544133333373F0A05041713D0AD7CE7D5441A4703DDAFEA0504152B81E45CB7D544185EB51E800A1504114AE47E1CC7D5441666666E601A150410AD7A3C0CC7D5441F6285C2F07A15041713D0A57CC7D54419A9999E90CA15041B81E858BCC7D544114AE475115A15041EC51B88ECE7D544148E17A541FA150410AD7A310D37D54413D0AD76333A150415C8FC2A5DE7D5441F6285C2F38A1504148E17AE4D27D5441EC51B83E1EA15041C3F528ACC67D5441C3F5280C16A1504152B81E85C47D5441333333D30DA15041295C8FC2C37D544114AE47C106A150415C8FC2F5C37D54411F85EBF1FEA05041713D0A37C57D5441CDCCCC0CE8A050415C8FC2B5CA7D54419A999919E7A0504114AE47F1CA7D5441C3F5285CD7A0504185EB5168CE7D5441AE47E17ACBA050417B14AEB7CF7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF1E5F8C0CA15041ADE22E88CC7D54417DCC3C7F05A150418283C478CC7D5441C150CFE601A15041FD8B2CC3CC7D544158B9659502A15041B54FACFAD07D5441C870D04B04A15041C0D6D32ACF7D5441A694A29A0DA15041BBDFE351CF7D5441AF67E48915A15041618A1438D27D54411C7ED5441AA150411E08F55AD47D5441500087D420A15041D78EE5A4D67D5441D9E017A524A15041C0BB3568D77D54411958D6BB24A15041A66C612FD67D54417038EDFA19A1504100A315A8D07D544199FFF9AD18A150413DD33112D07D54413BBF6B3E11A1504129580495CD7D5441CF1E5F8C0CA15041ADE22E88CC7D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>369381 - 80874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001A000000AE47E17ACBA050417B14AEB7CF7D544185EB5148B9A050411F85EB51D07D54411F85EB61B9A050419A999929D57D544133333373C2A050415C8FC2E5D57D54410AD7A380C9A05041713D0AF7D57D54410AD7A310D2A05041A4703D3AD57D5441AE47E13AE2A05041AE47E19AD27D544133333373F0A05041713D0AD7CE7D5441A4703DDAFEA0504152B81E45CB7D544185EB51E800A1504114AE47E1CC7D5441666666E601A150410AD7A3C0CC7D5441F6285C2F07A15041713D0A57CC7D54419A9999E90CA15041B81E858BCC7D544114AE475115A15041EC51B88ECE7D544148E17A541FA150410AD7A310D37D54413D0AD76333A150415C8FC2A5DE7D5441F6285C2F38A1504148E17AE4D27D5441EC51B83E1EA15041C3F528ACC67D5441C3F5280C16A1504152B81E85C47D5441333333D30DA15041295C8FC2C37D544114AE47C106A150415C8FC2F5C37D54411F85EBF1FEA05041713D0A37C57D5441CDCCCC0CE8A050415C8FC2B5CA7D54419A999919E7A0504114AE47F1CA7D5441C3F5285CD7A0504185EB5168CE7D5441AE47E17ACBA050417B14AEB7CF7D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF1E5F8C0CA15041ADE22E88CC7D54417DCC3C7F05A150418283C478CC7D5441C150CFE601A15041FD8B2CC3CC7D544158B9659502A15041B54FACFAD07D5441C870D04B04A15041C0D6D32ACF7D5441A694A29A0DA15041BBDFE351CF7D5441AF67E48915A15041618A1438D27D54411C7ED5441AA150411E08F55AD47D5441500087D420A15041D78EE5A4D67D5441D9E017A524A15041C0BB3568D77D54411958D6BB24A15041A66C612FD67D54417038EDFA19A1504100A315A8D07D544199FFF9AD18A150413DD33112D07D54413BBF6B3E11A1504129580495CD7D5441CF1E5F8C0CA15041ADE22E88CC7D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>393829 - 978656
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D544108FCEE02FFD95041E2C858D2407D5441195A8022F3D95041DB852A17417D5441A5A93ECFECD95041DF47D13B417D544186B0A52AE7D95041137F0841417D5441D87F0139E7D9504198A30010427D54417E441C72E5D950418B4C96CD4C7D5441295F3A72E5D95041C8A6C5D24C7D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345275 - 1234162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003E000000AE47E1CA19845141B81E852B4CB754411F85EBF121845141B81E85EB44B75441AE47E14A218451413D0AD72344B7544185EB51A81E8451413D0AD70343B754414AE58D2D168451419A9040C83EB75441C9AC23C71284514138258C623DB75441787129AD0C845141BBCB75383CB754416A1D6E40088451410F2CAF793BB75441625FC6C703845141449E86F63AB75441353E555AFD8351419BFEBF373AB754417B4AD32EF8835141DA06ABA839B754411E7532BDF6835141CA4470CC39B75441DB8DF30FF5835141C5AE5CD839B754419D3CC856F3835141B0560E083AB7544154BF75B5F1835141BA8235F039B75441C7A324AFF0835141B0560E083AB754416F649731EF835141B5EC21FC39B75441C3C4D072EE835141B5EC21FC39B754417F477ED1EC8351419F94D32B3AB754414DB88DF4EA8351419568AC433AB75441647E5B34E68351416BB80FA33AB7544173F755C8E38351416B22FCAE3AB7544106173A32E0835141122CAF793BB754417AFBE82BDF835141FDD360A93BB75441F275AB19DE835141E87B12D93BB75441D7A3706DDB835141713D0A673CB7544152B81E45D5835141CDCCCC9C3DB754415C8FC2B5CC835141A4703DAA3FB7544152B81E25CD835141713D0A7745B75441D7A370DDD0835141713D0A4744B75441EC51B8AED18351416666661644B754415C8FC245D8835141D7A3702D42B75441AE47E1EADE8351419A9999A940B75441F6285C5FE38351418FC2F51840B754417B14AEF7E38351413D0AD71340B75441D5620A2EE58351410DEA56F23FB7544152BC2058E683514112806AE63FB75441FE5BE716E783514117167EDA3FB75441900D4C11E88351412C6ECCAA3FB7544108D14E47E983514127D8B8B63FB754419982B341EA835141379AF3923FB7544144F65218EB835141376ECCAA3FB75441C6E57C36EC835141376ECCAA3FB7544148D5A654ED835141473007873FB75441C52EBD7EEE8351414CC61A7B3FB754416C387049EF835141429AF3923FB75441E3FB727FF0835141429AF3923FB7544195314D32F1835141429AF3923FB754412C79C520F283514132D8B8B63FB75441451A5439F4835141429AF3923FB75441C9CBB833F58351412C6ECCAA3FB75441295C8F62F58351411F85EBF13FB7544152B81E15F6835141E17A140E40B75441F85AA910F7835141F891082240B754419E645CDBF7835141F3FBF42D40B754414ED8FBB1F8835141E40D936940B754415696A32AFD8351418B17463441B7544194E7CEE3FE83514176BFF76341B754416E5FC6C703845141139D834642B754418B75BC100884514190F6997043B75441071813830B8451412CD4255344B75441AE47E1CA19845141B81E852B4CB75441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000AE47E1CA19845141B81E852B4CB754411F85EBF121845141B81E85EB44B75441AE47E14A218451413D0AD72344B7544185EB51A81E8451413D0AD70343B7544146E58D2D168451419F9040C83EB75441CEAC23C7128451413D258C623DB75441737129AD0C845141BFCB75383CB75441185C75540A845141E475F3CB3BB754416A1D6E4008845141132CAF793BB75441B3E90A7A0384514189EE38E33AB75441353E555AFD8351419EFEBF373AB75441804AD32EF8835141DF06ABA839B754411D7532BDF6835141CC4470CC39B75441D78DF30FF5835141C2AE5CD839B754419A3CC856F3835141B0560E083AB7544155BF75B5F1835141B98235F039B75441C4A324AFF0835141B0560E083AB754416B649731EF835141BAEC21FC39B75441BFC4D072EE835141BAEC21FC39B7544184477ED1EC8351419D94D32B3AB754414FB88DF4EA8351419468AC433AB75441B88C5F37E6835141B0332A9A3AB75441CDCCCCACE38351418FC2F5C83AB7544108173A32E0835141132CAF793BB7544177FBE82BDF83514100D460A93BB754412D88B517DE835141137678E13BB75441D7A3706DDB835141713D0A673CB7544152B81E45D5835141CDCCCC9C3DB754415C8FC2B5CC835141A4703DAA3FB7544152B81E25CD835141713D0A7745B75441D7A370DDD0835141713D0A4744B75441EC51B8AED18351416666661644B754415C8FC245D8835141D7A3702D42B75441AE47E1EADE8351419A9999A940B75441F6285C5FE38351418FC2F51840B754417B14AEF7E38351413D0AD71340B75441D0620A2EE583514112EA56F23FB754414EBC2058E683514111806AE63FB75441FA5BE716E78351411B167EDA3FB75441950D4C11E88351412D6ECCAA3FB7544109D14E47E983514123D8B8B63FB754419982B341EA835141369AF3923FB7544147F65218EB835141386ECCAA3FB75441C4E57C36EC835141386ECCAA3FB754414CD5A654ED8351414B3007873FB75441CA2EBD7EEE8351414AC61A7B3FB754416D387049EF835141419AF3923FB75441E1FB727FF0835141419AF3923FB7544197314D32F1835141419AF3923FB754413179C520F28351412ED8B8B63FB75441491A5439F4835141419AF3923FB75441C4CBB833F58351412D6ECCAA3FB75441295C8F62F58351411F85EBF13FB7544152B81E15F6835141E17A140E40B75441F85AA910F7835141F591082240B754419A645CDBF7835141F6FBF42D40B7544153D8FBB1F8835141E40D936940B754415296A32AFD8351418717463441B754418FE7CEE3FE83514174BFF76341B754416B5FC6C7038451410E9D834642B754418775BC10088451418CF6997043B754410B1813830B84514130D4255344B754418C2296DF0B8451419677F88544B75441F92DFAA40D845141AA73B97C45B75441A27A10951284514163313F2A48B754417764EE12168451419669471A4AB75441EE63E04217845141A14C42C34AB75441AE47E1CA19845141B81E852B4CB75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370176 - 2994765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC295059450418FC2F5784C445541C3F528AC05945041B81E854B4844554166666696059450415C8FC2F53F4455418FC2F528F99350410AD7A3803844554133333313F1935041AE47E10A34445541E17A14CEED935041D7A3707D324455419A9999F9E99350417B14AEB730445541F6285C8FE3935041295C8F323B445541C3F5286CE19350419A9999293F44554152B81E15E093504185EB51284244554133333313DD93504133333393414455411F85EB61DC9350410AD7A37041445541B81E85CBD3935041000000C03F445541EC51B86ED193504185EB514846445541E17A146ED09350410AD7A3304A4455419A999999CF9350418FC2F5884E4455418FC2F568CE935041D7A3700D5444554152B81E45CD935041A4703D0A5B445541B81E857BD793504114AE47F15B445541A4703D0ADB9350411F85EB415C445541CDCCCC6CDA935041666666565E44554148E17A04DC93504152B81E955E4455415C8FC205E79350415C8FC245604455411F85EBC1FD9350418FC2F548644455410AD7A37001945041F6285CEF6444554152B81E6501945041D7A3705D5A44554185EB5128FF935041A4703D0A5A445541EC51B88EFF9350411F85EB015344554148E17AE4FF9350411F85EB214D445541D7A3707D059450417B14AEE74F4455415C8FC295059450418FC2F5784C445541
+</a>
+
+<b>
+010600000001000000010300000001000000130000008FB3769805945041EAB60CD64C4455414F79997D08945041C46E75074D445541293102AF089450416B4252A052445541C2515FE90794504156AC38A683445541E17A146E0A9450410AD7A32084445541EC51B8DE1394504185EB51F8854455419A9999F91E9450413D0AD783874455413D0AD7931F94504148E17A3480445541D7A3705D1F94504185EB5118794455410AD7A3F01E945041EC51B8AE73445541A4703DBA1E94504148E17AF46D445541295C8F321E9450416666669667445541E17A143E1D94504185EB51B85D445541EC51B85E1C945041A4703DEA56445541713D0A771B945041295C8F8250445541F6EF473A0A945041E9B60CD64C4455415C8FC295059450418FC2F5784C445541C6308F9105945041948EBC104D4455418FB3769805945041EAB60CD64C445541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370176 - 3584761
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC295059450418FC2F5784C445541C3F528AC05945041B81E854B4844554166666696059450415C8FC2F53F4455418FC2F528F99350410AD7A3803844554133333313F1935041AE47E10A34445541E17A14CEED935041D7A3707D324455419A9999F9E99350417B14AEB730445541F6285C8FE3935041295C8F323B445541C3F5286CE19350419A9999293F44554152B81E15E093504185EB51284244554133333313DD93504133333393414455411F85EB61DC9350410AD7A37041445541B81E85CBD3935041000000C03F445541EC51B86ED193504185EB514846445541E17A146ED09350410AD7A3304A4455419A999999CF9350418FC2F5884E4455418FC2F568CE935041D7A3700D5444554152B81E45CD935041A4703D0A5B445541B81E857BD793504114AE47F15B445541A4703D0ADB9350411F85EB415C445541CDCCCC6CDA935041666666565E44554148E17A04DC93504152B81E955E4455415C8FC205E79350415C8FC245604455411F85EBC1FD9350418FC2F548644455410AD7A37001945041F6285CEF6444554152B81E6501945041D7A3705D5A44554185EB5128FF935041A4703D0A5A445541EC51B88EFF9350411F85EB015344554148E17AE4FF9350411F85EB214D445541D7A3707D059450417B14AEE74F4455415C8FC295059450418FC2F5784C445541
+</a>
+
+<b>
+010600000001000000010300000001000000130000008FB3769805945041EAB60CD64C4455414F79997D08945041C46E75074D445541293102AF089450416B4252A052445541C2515FE90794504156AC38A683445541E17A146E0A9450410AD7A32084445541EC51B8DE1394504185EB51F8854455419A9999F91E9450413D0AD783874455413D0AD7931F94504148E17A3480445541D7A3705D1F94504185EB5118794455410AD7A3F01E945041EC51B8AE73445541A4703DBA1E94504148E17AF46D445541295C8F321E9450416666669667445541E17A143E1D94504185EB51B85D445541EC51B85E1C945041A4703DEA56445541713D0A771B945041295C8F8250445541F6EF473A0A945041E9B60CD64C4455415C8FC295059450418FC2F5784C445541C6308F9105945041948EBC104D4455418FB3769805945041EAB60CD64C445541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370351 - 3095133
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC592935041EC51B83EE33F55410AD7A3B093935041A4703D6AE33F5541D7A3708D97935041CDCCCC2CC13F55413D0AD7038F935041713D0A77BF3F5541B81E856B88935041295C8F22BD3F55415C8FC21585935041D7A370ADDA3F554148E17AA48A935041666666A6DF3F5541D7A3707D8C9350413D0AD713E13F55417B14AEE78E93504185EB5188E23F554152B81EC592935041EC51B83EE33F5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000000AD7A3B093935041A4703D6AE33F5541F8884B2697935041BDCA26BFC43F5541ED5D5186979350418A9C5F2BC13F5541C60382EE9293504193FFDD3FC03F55414637CA188F935041418D5F91E23F55410AD7A3B093935041A4703D6AE33F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370351 - 3445545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC592935041EC51B83EE33F55410AD7A3B093935041A4703D6AE33F5541D7A3708D97935041CDCCCC2CC13F55413D0AD7038F935041713D0A77BF3F5541B81E856B88935041295C8F22BD3F55415C8FC21585935041D7A370ADDA3F554148E17AA48A935041666666A6DF3F5541D7A3707D8C9350413D0AD713E13F55417B14AEE78E93504185EB5188E23F554152B81EC592935041EC51B83EE33F5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000000AD7A3B093935041A4703D6AE33F5541F8884B2697935041BDCA26BFC43F5541ED5D5186979350418A9C5F2BC13F5541C60382EE9293504193FFDD3FC03F55414637CA188F935041418D5F91E23F55410AD7A3B093935041A4703D6AE33F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 2253555
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000000000404DD65041713D0A1701AA544185EB513859D65041A4703D9A0AAA54413D0AD7636FD650413D0AD7F317AA5441A4703DBA75D6504114AE47D11BAA5441D7A3700D86D65041AE47E1DA24AA5441F6285C9F88D65041E17A14CE1DAA5441A4703D9A8CD65041713D0AF710AA5441000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441EC51B8CE4CD65041713D0A47EAA9544148E17AF443D650410AD7A320F3A95441713D0AC746D650410AD7A380F8A95441C3F528CC4AD650413D0AD7D3FDA95441000000404DD65041713D0A1701AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 3519632
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000000000404DD65041713D0A1701AA544185EB513859D65041A4703D9A0AAA54413D0AD7636FD650413D0AD7F317AA5441A4703DBA75D6504114AE47D11BAA5441D7A3700D86D65041AE47E1DA24AA5441F6285C9F88D65041E17A14CE1DAA5441A4703D9A8CD65041713D0AF710AA5441000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441EC51B8CE4CD65041713D0A47EAA9544148E17AF443D650410AD7A320F3A95441713D0AC746D650410AD7A380F8A95441C3F528CC4AD650413D0AD7D3FDA95441000000404DD65041713D0A1701AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 44245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441000000B05AD6504166666626F6A95441295C8F7268D650418FC2F538FFA95441295C8F6274D650419A99996906AA5441000000A07FD65041D7A3709D0BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 80706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441000000B05AD6504166666626F6A95441295C8F7268D650418FC2F538FFA95441295C8F6274D650419A99996906AA5441000000A07FD65041D7A3709D0BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371442 - 386843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000295C8FD2D4C750419A999919D09E544185EB5108D9C750411F85EB51D69E544133333353D9C750413D0AD7A3D49E54415C8FC215DDC7504185EB51C8D99E5441C3F5281CE1C750417B14AE57DE9E5441EC51B8AEE7C75041000000D0E39E5441AE47E13AEBC75041C3F5281CE69E544114AE47A1F3C75041CDCCCC8CEB9E5441EC51B89E08C85041EC51B83EF39E544114AE47210BC850417B14AE87ED9E544148E17A140AC8504148E17AD4E99E5441C3F5282C0BC8504100000090E49E54411F85EBD103C8504152B81E95E19E54419A9999B902C850411F85EB81DD9E5441C3F5286C03C85041B81E85BBD99E5441666666B604C85041333333A3D89E5441CDCCCCAC0AC85041295C8F22D99E5441F6285C3F0FC850417B14AE07DA9E5441713D0A2713C850418FC2F5F8D89E54413D0AD7E30EC8504152B81E35D79E54417B14AE27FCC7504100000050D39E544166666666EAC75041C3F528DCCF9E5441AE47E15AE1C75041295C8FC2CC9E5441EC51B87EDBC75041000000C0CA9E5441E17A148ECBC750415C8FC285BF9E5441295C8FD2D4C750419A999919D09E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000008DCFE3B4F3C750411B32FD93EB9E5441512111C802C85041CE85C61AF19E5441B55B6F9108C850414884D939F39E5441EF062A9A07C85041E8A8DBF9EE9E5441BA4AB9E107C85041CE9410C3EA9E544142DA960708C85041120D5A3FE89E5441143FC8B9FEC750416642DD23E79E5441B510ECC9EFC7504102C38BF8E29E544143629208EDC75041A6F0BF22E59E54416A5447D6EBC75041BB92CC80E69E54413C76A334F3C75041E9137146EB9E54418DCFE3B4F3C750411B32FD93EB9E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371457 - 316448
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000007B000000B81E856B29E0504152B81E7564A55441CDCCCCFC29E05041B81E85CB5DA5544185EB51C828E050415C8FC2D558A55441CDCCCC3C25E0504152B81EC54EA554410AD7A33022E05041713D0AE746A5544148E17A141FE05041CDCCCC1C3FA554413D0AD7931AE05041C3F5288C3BA554413333338315E050413333336336A55441333333A313E05041AE47E10A34A55441AE47E16A12E05041E17A145E31A55441E17A140E12E05041EC51B88E2DA55441000000E011E0504152B81EF52AA554413D0AD76311E05041D7A3701D28A55441EC51B8BE0EE05041AE47E18A27A55441E17A146E0CE050417B14AEE72CA55441D7A370CD0BE05041E17A141E2FA55441A4703D6A0BE050413D0AD76332A55441000000A00BE0504185EB51F835A55441B81E85BB0CE05041A4703D1A3AA55441C3F528DC06E05041CDCCCC4C3CA55441CDCCCC9C05E050417B14AEB73CA55441EC51B88E08E05041EC51B87E43A554419A9999590CE0504148E17A1443A55441333333F30CE0504148E17A4444A5544185EB51D808E05041E17A14BE44A55441EC51B8EE0BE05041713D0A3753A5544148E17A940DE050415C8FC2155DA55441F6285CFF0DE05041EC51B8BE61A5544185EB516809E05041295C8F1262A55441B81E851B09E050415C8FC2E55DA554417B14AE2705E05041713D0A1755A55441CDCCCC6C02E050413D0AD71346A554411F85EB91FDDF5041E17A141E47A554411F85EB91FCDF5041CDCCCC9C48A55441C3F5287C01E05041D7A3701D5FA55441EC51B8CE02E05041C3F5285C68A554418FC2F59804E0504114AE474168A554411F85EB6103E05041AE47E1CA71A554415C8FC2C503E05041666666A674A55441EC51B8BE01E05041CDCCCC5C80A55441AE47E14A00E050417B14AEF78BA55441C3F5286CFFDF5041B81E854B91A55441EC51B82EFFDF5041713D0AA792A554417B14AEC7FBDF5041F6285C9F99A55441F6285CAFF8DF5041B81E85EB9DA55441333333B3F3DF50419A999919A3A5544152B81EF5E8DF5041B81E85DBABA554418FC2F5D8E0DF50417B14AE77B2A55441C3F5283CE3DF5041F6285C6FB5A55441000000B0E1DF50415C8FC235B9A5544185EB5198D8DF50419A9999D9C3A55441CDCCCC1CCEDF5041AE47E10ACBA55441B81E85FBCCDF5041B81E85BBCBA5544185EB51E8C6DF5041A4703DEAC8A55441B81E85CBC5DF5041713D0A27C8A554418FC2F568C0DF504185EB5178C4A5544100000070B6DF504185EB5128BBA55441D7A3703DAFDF50411F85EB81B2A5544152B81E75AEDF50410AD7A390B1A55441E17A142EADDF504185EB5178B2A554410AD7A360B0DF504100000010B8A5544152B81E35ABDF5041F6285CBFBAA5544152B81EB5A7DF5041D7A3709DBCA554418FC2F598A6DF50413D0AD7C3C0A55441AE47E1AAAADF5041333333F3C6A55441D7A3701DAEDF5041D7A370CDCAA55441295C8F02C0DF5041333333A3DBA55441E17A14FEBFDF504152B81E45DDA55441000000F0C4DF50410AD7A360DEA554411F85EBD1CDDF504100000000E5A55441C3F5282CD4DF5041A4703D5AE7A554410AD7A300D9DF5041666666A6E7A55441666666A6DDDF50413D0AD703E6A55441CDCCCC6CE5DF5041F6285C4FE1A55441C3F5288CEADF5041C3F5282CE2A55441295C8FB200E05041EC51B88ECAA55441D7A370DDEADF5041EC51B83ED9A5544152B81EC5E1DF50415C8FC2C5DDA5544152B81EE5DCDF5041E17A14DEDFA554419A9999F9D8DF50418FC2F538E1A554411F85EB01D4DF5041EC51B8FEE1A55441713D0AD7D0DF5041713D0A07DFA55441A4703DEAD0DF50417B14AEC7DDA5544152B81E95CFDF50418FC2F568D8A55441EC51B87ED0DF50413D0AD723D7A55441333333F3D0DF50411F85EB81D6A55441CDCCCC5CD7DF50419A999979D4A554411F85EBC1DADF5041EC51B8FED2A55441000000F0DDDF5041000000C0D0A5544133333313E3DF5041C3F5286CCAA55441295C8FF2EADF50413D0AD793C2A55441EC51B82EFADF504185EB5148B6A554417B14AEA7F8DF50413D0AD7D3B3A5544152B81EC5F9DF504133333343B3A55441713D0AC704E050410AD7A390ACA55441666666460CE05041AE47E18AA7A554415C8FC2C513E050413D0AD753A6A55441295C8FA213E050410AD7A3F0A1A55441EC51B8DE10E05041D7A3702D99A554410AD7A3D010E05041EC51B8DE90A554413D0AD77312E05041A4703D0A88A55441CDCCCC9C1CE05041D7A3705D94A55441E17A14FE1DE05041333333439AA554417B14AE471DE050418FC2F5E8AFA554410AD7A3301BE050413D0AD713B6A55441B81E85CB18E05041C3F5282CBAA55441666666160EE0504100000030C3A554410AD7A38007E0504166666646C9A55441C3F5281C09E05041295C8F82C9A55441C3F5286C0AE0504148E17A54C8A55441AE47E1BA0FE050415C8FC2B5C5A5544114AE47610FE05041B81E852BC5A55441EC51B8CE1BE05041A4703DBAB9A554419A9999091DE0504114AE4741B7A55441A4703D9A1EE05041D7A370FDAFA554418FC2F5881FE050418FC2F5389AA55441666666861EE050417B14AE0794A554419A99998922E05041EC51B85E92A5544148E17A3421E05041EC51B89E80A55441C3F5283C22E050418FC2F5A880A554413D0AD78323E050417B14AE5778A55441D7A370ED25E05041333333736EA55441B81E856B29E0504152B81E7564A55441
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000DC68AEA7F8DF5041DB91D7D3B3A5544152B81EC5F9DF504133333343B3A554416EC37FC5FCDF50415F41AE6FB1A55441280C0AC704E05041D921A390ACA55441370A38E908E0504164CDC6CBA9A55441666666460CE05041AE47E18AA7A55441E1E5029E10E05041CD29BDD6A6A554417688C2C513E05041252ED653A6A55441295C8FA213E050410AD7A3F0A1A55441EC51B8DE10E05041D7A3702D99A55441F0E673D910E05041E63ED81196A55441F457A3D010E05041E9FAB8DE90A55441ED48D67312E0504182DE3E0A88A554417E10BCFB1BE050411B990D9A93A5544179021BF01AE0504177D59BC390A55441266714E317E05041E2F2092486A554414A40B2ED15E05041787AB54786A55441A64416AF14E05041070F02BC83A554419B4948E10BE05041EF8DC2157DA55441018FE28A0AE05041EE1B29AC8EA554412D60E14A00E050419718AEF78BA554413D4B296CFFDF5041B1A5854B91A55441AD9B0031FFDF5041465C219A92A55441EC51B82EFFDF5041713D0AA792A55441F4B94508FFDF504149BBCCF592A554417680AFC7FBDF504109965B9F99A554411122A9F7F9DF5041BE29AA239CA55441F6285CAFF8DF5041B81E85EB9DA5544184ECBCD0F4DF50419A7CE4F0A1A55441A11E32B3F3DF504187F09A19A3A554416389FC3BF1DF50411D872D1CA5A5544152B81EF5E8DF5041B81E85DBABA5544140D4723AE5DF504181519EE5AEA554419AA3F6D8E0DF5041322CAF77B2A55441B8C098F3E0DF5041BB9FC998B2A5544175F43F10E1DF5041E9C766BCB2A55441A3EC4B89E1DF5041C1B7DA52B3A55441CDE8283CE3DF5041F0BC5A6FB5A55441000000B0E1DF50415C8FC235B9A5544185EB5198D8DF50419A9999D9C3A5544162D47BAFD3DF5041445BF837C7A554412FC1CC1CCEDF5041A7ABE20ACBA554419CF484FBCCDF50415F0686BBCBA554410EBAB4CAC7DF504189113C53C9A5544185EB51E8C6DF5041A4703DEAC8A55441B81E85CBC5DF5041713D0A27C8A55441EE46CFEAC2DF50410FBC3E2FC6A554416372F468C0DF504113CE5178C4A55441D9714C41BADF50419864F0B8BEA5544100000070B6DF504185EB5128BBA55441F81AF510B4DF5041AAC2C54EB8A55441C51A703DAFDF5041CDE2EC81B2A5544108B51D75AEDF5041B98EA490B1A55441E73F5872AEDF5041D5259B92B1A55441609D296BAEDF504101AAB197B1A55441AC518A5AAEDF5041C92D78A3B1A55441B5DBAB53AEDF50410DE655A8B1A554417EE9BFE7ADDF504154F2C9F4B1A554419FB9142EADDF504142595278B2A55441B52C5FDCADDF5041530729A9B3A554415FD3DD0AAFDF50412FFC3ABAB5A55441013AA560B0DF5041411D0110B8A55441634D1D35ABDF50413A615DBFBAA554416CDC709DB7DF50415C5D4871C8A55441DED5FE8FBBDF5041BBC58FA2CBA5544175D7297CC1DF50412A6C4801CFA55441BC838E02C7DF5041A0C7A220D2A5544191D3D5D3CEDF5041126D0180DBA5544162288E02CDDF5041B2C333B3D6A55441DB2BB74ED9DF5041C68BA410D1A554415521D6D3E1DF5041CC48B77EC8A55441AEED5028EBDF50413581E0BABDA554410EA85248F5DF50416BBAFFBFB5A55441DC68AEA7F8DF5041DB91D7D3B3A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371826 - 232923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000F6285C4F27D65041C3F528BC7EAA5441D7A3707D26D650410AD7A35080AA5441713D0A3728D65041EC51B8CE83AA544152B81E752AD650417B14AE2787AA544152B81EF52AD65041000000C087AA54417B14AEC74DD6504185EB51F876AA5441AE47E11A4BD65041333333F372AA5441CDCCCCFC46D650413D0AD7436FAA54418FC2F5F844D6504185EB51E86BAA54413D0AD7133FD65041C3F528EC76AA5441F6285C4F27D65041C3F528BC7EAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000042D7170345D65041B55034F96BAA54415FE5F5F844D650418C2E52E86BAA54411643203D43D650413266A3256FAA54413D0AD7133FD65041C3F528EC76AA5441F6285C4F27D65041C3F528BC7EAA5441D7A3707D26D650410AD7A35080AA5441D9A1339D27D65041E8CE409782AA544154A40A3728D650414304B7CE83AA54414CFA1E752AD650412F6FAD2787AA544152B81EF52AD65041000000C087AA54414D0F1AC64DD650412F2502F976AA54415472ADC74DD650413F3252F876AA5441784424F64BD65041CB0EB53C74AA5441735DE11A4BD65041EA5333F372AA5441242880EE4AD6504170717BCB72AA5441CDCCCCFC46D650413D0AD7436FAA544142D7170345D65041B55034F96BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>777984 - 5222569
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000002900000085EB51D8AA5E51419A9999E9E984544152B81EC5B25E514114AE4761E6845441E17A14EEBE5E5141F6285C7FE1845441C3F528CCCB5E51419A9999B9DB845441A4703DFACD5E514185EB51E8DA845441440E3FDEE75E5141AAD0586FCB8454413063D51BCB5E5141CFA0D25A98845441DCE44966C85E51413DB3D2ED9384544134527CBCC65E514123CA28D190845441702136F7C45E514108E17EB48D8454413E780DC4C25E5141EA19DB92898454410DCFE490C05E5141508B98F5848454413393EEB3BC5E51413DEA85DB7C8454410AD7A300965E5141295C8F028D845441D7A3707D915E514114AE47218F845441295C8FF2875E5141E17A145E938454418FC2F528835E5141C3F5282C9584544152B81E857B5E51416666663696845441000000B0775E5141295C8FF296845441713D0A376F5E5141E17A14CE9F84544114AE4781685E5141A4703DFAA5845441F6285CEF645E514100000030A9845441CDCCCCDC615E514133333353AD845441F6285C1F615E5141E17A141EB08454419A9999E95F5E5141295C8FE2B4845441295C8F425F5E5141D7A370EDB78454413D0AD7D35D5E5141295C8F92BC845441AE47E18A5D5E514152B81E85BD8454413D0AD7E35C5E5141333333B3BF845441D7A3706D5B5E514114AE47E1C2845441C3F528DC585E514185EB5178C884544114AE4741565E51411F85EB51D1845441333333E3525E51419A9999A9E2845441666666D6525E51410AD7A3A0E4845441713D0AA76F5E5141E17A14BEE38454419A9999598D5E514148E17A44E284544114AE47A18E5E5141333333D3E7845441C3F528FC9E5E5141A4703D1AEF84544114AE4761A25E514100000050EE84544185EB5178A85E5141A4703D2AEB84544185EB51D8AA5E51419A9999E9E9845441060000008FC2F528A85E51415C8FC255C98454411F85EB51A95E51417B14AED7C884544133333393A95E5141295C8FC2C8845441E17A144EAA5E5141D7A3702DCA8454413D0AD7E3A85E514185EB51E8CA8454418FC2F528A85E51415C8FC255C9845441
+</a>
+
+<b>
+010600000001000000010300000001000000580000000FF00C1FE25E51410CEE8CDECE84544166666696EB5E5141B81E857BC98454413D0AD793EE5E514133333383C4845441333333B3F75E51417B14AE37C18454410AD7A350FE5E514114AE47B1BF845441295C8F32FF5E51417B14AE47BF84544148E17AF4FF5E51417B14AEB7BE8454411F85EBA1005F51410AD7A3A0BE8454419A9999190E5F5141D7A370ADB7845441AE47E1BA155F514166666616B3845441EC51B8BE1C5F514100000060AF8454410AD7A3C0215F51415C8FC2A5AC84544185EB51A8235F5141C3F5289CAB845441666666D62A5F5141666666D6A6845441000000702A5F5141B81E85DBA584544152B81E45215F5141295C8F829284544148E17A741F5F5141EC51B88E8C84544114AE47311A5F514148E17A148384544166666666195F51410AD7A3D08184544152B81E25165F51410AD7A3A07C84544114AE47D1145F5141E17A144E7A8454413D0AD7C3125F5141713D0AB776845441713D0A370E5F5141E17A145E6F84544185EB5168065F51418FC2F5986484544100000020035F5141D7A3700D61845441CDCCCCEC015F5141F6285C0F61845441B81E856BF35E51417B14AEE766845441713D0A57E05E51410AD7A3506E8454410AD7A330E15E5141D7A370CD72845441713D0A97E25E5141666666F678845441AE47E1FAE25E51419A9999B97C845441000000C0E25E5141B81E85CB7D8454410AD7A380E25E51410AD7A3007F845441000000B0E15E51410AD7A34081845441A4703D8ADF5E51417B14AE2783845441A4703D7ADC5E5141295C8FB283845441AE47E1DACF5E5141713D0A07838454410AD7A340CE5E5141CDCCCC7C828454418FC2F5A8CD5E5141713D0A4781845441713D0AF7CC5E5141F6285C8F7D8454411F85EBF1CC5E5141EC51B82E7D845441666666A6CC5E514114AE479176845441295C8FF2CB5E51418FC2F5C876845441AE47E1AACB5E514148E17A0477845441A4703D2AC85E51413D0AD70378845441F6285C3FC45E5141B81E85AB79845441DFF4532FBE5E5141DF6618057C8454413EC410BBBC5E51418E3654B67C845441A03A50AEBC5E5141834210D17C84544140A071B3BC5E5141B710BADB7C8454413193EEB3BC5E51413AEA85DB7C8454415852C2F4BC5E51413BE27A637D845441AFDBD859BD5E51414EA595357E8454417428034CBE5E5141EE6F182E8084544109F38544C05E5141A177344E848454414797F3C3C15E514132226C7587845441F9621D3DC25E5141D0C7D0778884544143780DC4C25E5141ED19DB9289845441466C89ABC35E5141212F98458B8454410FD5B527C55E5141DDE9F1F28D845441327DD08BC65E5141D8B09D7B9084544136527CBCC65E514124CA28D190845441BDD08DFBC65E5141127D284791845441CE874A52C85E5141B5EF7AB7938454413128FE5AC95E51412A9B947D95845441FEE13E20CA5E51417ADCD1BF96845441C8EDB48ACA5E514110D1815E97845441634BBA05CB5E514148BBB536988454413463D51BCB5E5141CCA0D25A98845441A0BE68AECB5E51413C97285F998454417D6F1BA1CD5E5141550298CB9C845441BB44B734CF5E514176E0B99E9F845441F8E824B4D05E514149542246A28454414EE5FEFCD35E5141886A6511A884544194149AB5D55E51410EE46E24AB845441C92DDAFBD65E5141C26A4D6AAD845441489600CCD85E51418D4E10A9B084544181F35A92D95E51415986F10AB2845441538B0D8ADB5E514117129289B5845441C0EA46DEDD5E51415D0F8B9BB98454416E895E50DF5E5141A625DD3DBC845441F7E8B297DF5E51410BC08DBCBC8454414A05D99CE15E51414C41CA44C08454417A034641E35E5141B258772FC3845441E1C56B36E55E514185C767A7C6845441D46A02F2E75E514195A9978ACB8454415FA1754EE25E5141FCE637C2CE8454410FF00C1FE25E51410CEE8CDECE845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>372269 - 2887542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000005C8FC2556ED650413D0AD7D318AA5441295C8F926BD65041AE47E1AA16AA54411F85EB7161D650413333334311AA5441AE47E10A5CD6504148E17A240EAA54413D0AD7A357D650419A9999190BAA5441EC51B88E53D65041A4703DFA07AA544152B81E654DD65041333333F302AA54419A9999294ED650411F85EB910AAA544148E17AF451D65041E17A142E0DAA544114AE475155D650418FC2F5380FAA54413D0AD7A359D65041D7A370DD11AA5441CDCCCCEC60D65041B81E851B16AA544148E17A5469D65041EC51B8DE1AAA54418FC2F5F86CD650415C8FC2451DAA5441713D0A3770D650419A9999E91EAA544114AE476175D6504114AE47C121AA5441713D0A7780D65041333333A326AA5441CDCCCC4C78D65041B81E85CB23AA54415C8FC2556FD65041AE47E1CA1FAA5441A4703DDA6AD65041000000501DAA544148E17A5468D65041713D0A971BAA544148E17AC464D650413D0AD76319AA544114AE470160D65041F6285CBF16AA5441CDCCCC5C5BD65041C3F528FC13AA5441713D0AD756D65041D7A3704D11AA5441CDCCCCCC4ED650419A9999790CAA54413333339351D65041A4703DEA14AA5441E17A143E57D65041CDCCCC9C18AA54411F85EB1169D650417B14AE6722AA544148E17AE47DD6504114AE47412CAA54419A99994982D65041E17A144E2EAA54419A99998984D650410000008028AA5441D7A3700D86D65041AE47E1DA24AA54419A99993980D6504114AE47A121AA5441C3F5286C79D650411F85EBA11EAA54416666665673D650411F85EB111CAA54415C8FC2556ED650413D0AD7D318AA5441
+</a>
+
+<b>
+010600000001000000010300000001000000130000003327FE6669D65041FC5FEC8F22AA54411F85EB1169D650417B14AE6722AA544141DAF6C361D650419C5287641EAA544179C107EB5FD6504184F5BF601DAA5441E17A143E57D65041CDCCCC9C18AA54411F85EB0157D65041D7A370ED18AA5441A4703D6A56D650419A9999B919AA54417B14AE8755D650418FC2F5D81AAA544148E17A445BD650413D0AD7C320AA5441D7A3709D5FD6504152B81E8524AA54415C8FC2F56BD65041666666062BAA5441E17A14EE73D650415C8FC23530AA5441295C8FE279D65041D7A3705D34AA544148E17AE47DD6504114AE47412CAA54417B14AE8775D65041CDCCCC4C28AA54418CB37FC16DD6504197CD229F24AA54411BF24E136CD6504167D6A2D323AA5441A95FF09C6AD6504131C98A2223AA54413327FE6669D65041FC5FEC8F22AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>372269 - 3311764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000005C8FC2556ED650413D0AD7D318AA5441295C8F926BD65041AE47E1AA16AA54411F85EB7161D650413333334311AA5441AE47E10A5CD6504148E17A240EAA54413D0AD7A357D650419A9999190BAA5441EC51B88E53D65041A4703DFA07AA544152B81E654DD65041333333F302AA54419A9999294ED650411F85EB910AAA544148E17AF451D65041E17A142E0DAA544114AE475155D650418FC2F5380FAA54413D0AD7A359D65041D7A370DD11AA5441CDCCCCEC60D65041B81E851B16AA544148E17A5469D65041EC51B8DE1AAA54418FC2F5F86CD650415C8FC2451DAA5441713D0A3770D650419A9999E91EAA544114AE476175D6504114AE47C121AA5441713D0A7780D65041333333A326AA5441CDCCCC4C78D65041B81E85CB23AA54415C8FC2556FD65041AE47E1CA1FAA5441A4703DDA6AD65041000000501DAA544148E17A5468D65041713D0A971BAA544148E17AC464D650413D0AD76319AA544114AE470160D65041F6285CBF16AA5441CDCCCC5C5BD65041C3F528FC13AA5441713D0AD756D65041D7A3704D11AA5441CDCCCCCC4ED650419A9999790CAA54413333339351D65041A4703DEA14AA5441E17A143E57D65041CDCCCC9C18AA54411F85EB1169D650417B14AE6722AA544148E17AE47DD6504114AE47412CAA54419A99994982D65041E17A144E2EAA54419A99998984D650410000008028AA5441D7A3700D86D65041AE47E1DA24AA54419A99993980D6504114AE47A121AA5441C3F5286C79D650411F85EBA11EAA54416666665673D650411F85EB111CAA54415C8FC2556ED650413D0AD7D318AA5441
+</a>
+
+<b>
+010600000001000000010300000001000000130000003327FE6669D65041FC5FEC8F22AA54411F85EB1169D650417B14AE6722AA544141DAF6C361D650419C5287641EAA544179C107EB5FD6504184F5BF601DAA5441E17A143E57D65041CDCCCC9C18AA54411F85EB0157D65041D7A370ED18AA5441A4703D6A56D650419A9999B919AA54417B14AE8755D650418FC2F5D81AAA544148E17A445BD650413D0AD7C320AA5441D7A3709D5FD6504152B81E8524AA54415C8FC2F56BD65041666666062BAA5441E17A14EE73D650415C8FC23530AA5441295C8FE279D65041D7A3705D34AA544148E17AE47DD6504114AE47412CAA54417B14AE8775D65041CDCCCC4C28AA54418CB37FC16DD6504197CD229F24AA54411BF24E136CD6504167D6A2D323AA5441A95FF09C6AD6504131C98A2223AA54413327FE6669D65041FC5FEC8F22AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>417296 - 1382174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000150000000AD7A3E01330514133333303A91055419A9999D901305141A4703DDAA71055419A9999690030514114AE4701A7105541CDCCCC0CFE2F5141A4703D2AAA105541A4703DCAFD2F514185EB51B8AB105541B81E857BFE2F514185EB51D8AC105541B81E855B03305141713D0AE7AE105541F6285C4F073051419A9999F9B010554114AE47410F30514148E17A24B51055417B14AE8712305141EC51B8CEB6105541666666B61E3051418FC2F5F8B7105541333333232D305141713D0A47BB105541CDCCCC4C293051419A999999B6105541F6285CAF24305141EC51B86EB21055415C8FC2B52030514148E17A64AF10554148E17AE41E30514114AE4771B0105541AE47E15A1E30514166666666AF1055419A9999F91E3051413D0AD713AF1055417B14AE471F305141EC51B86EAE105541A4703D6A19305141C3F5284CAB1055410AD7A3E01330514133333303A9105541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000B2B0AEB61B3051417A73F67FAC105541CFC476611930514123E48948AB105541A192FEEF17305141E79014B0AA105541432301ED13305141F7544D08A91055413097973A09305141CC12CA53A8105541EC584E8403305141BC0730EBA71055415B77D1DC01305141DE7372DAA7105541F5A5196C00305141BD48A502A71055412789210BFE2F514113CF3834AA105541E1D0C1D2FD2F51410A0748B0AB105541876F7F77FE2F5141C925C9D1AC105541F082EFF40230514184ED08BAAE105541480CFE5F04305141117F9E6FAF105541D09700F10D30514106701674B41055416A3A388112305141BD816FCBB6105541F0C36FA71A305141C8E09A95B7105541BED265CB1E30514141EFC4FDB7105541DDA482AB27305141AB395906BA105541E5FD6C162D305141FC8CDC39BB105541867B6DEE293051410D549B5EB7105541D4D3F8E92830514105E05A40B6105541C8C3728E243051414FBF8C55B2105541A52181B52130514194741128B0105541919E2495203051415353954EAF105541988AC9D61E305141BD346032AE105541B2B0AEB61B3051417A73F67FAC105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>372624 - 392552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A9476D050411F85EB7149935441CDCCCCAC79D0504152B81EE54F935441295C8FE279D0504148E17A54509354418FC2F55880D050417B14AEA75D9354415C8FC22584D05041D7A3707D65935441713D0AE797D05041C3F5288C6A935441000000A09AD050411F85EB6164935441713D0A679FD05041D7A3708D599354415C8FC2A5A1D0504185EB51785493544148E17A9476D050411F85EB7149935441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000000000A09AD050411F85EB6164935441713D0A679FD05041D7A3708D599354415C8FC2A5A1D0504185EB517854935441A7FD96499ED05041E93C1F9C5393544173D1D6FC94D050410AD01FCD699354410A87B3FD94D05041135158CD69935441B25AEC4695D05041783317E069935441713D0AE797D05041C3F5288C6A935441000000A09AD050411F85EB6164935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373242 - 234899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000004400000085EB511872E45041D7A370ED66A054419A99997974E4504148E17A145FA054418FC2F51875E45041EC51B8BE59A054411F85EB5176E45041000000005AA054410AD7A3307BE45041F6285CCF5BA054419A9999697FE450415C8FC2B55DA05441EC51B8AE83E450415C8FC2D560A054413D0AD7238AE450415C8FC25563A054418FC2F50894E450415C8FC22566A05441295C8F129DE4504185EB516868A05441E17A142EA4E45041000000E06BA054413D0AD7D3A7E45041000000B06EA05441E17A140EABE45041AE47E14A71A054413D0AD703AFE45041AE47E11A74A0544100000020AFE45041D7A370AD78A05441713D0A87B8E45041333333237BA05441B81E85FBBBE450415C8FC2857BA05441C3F5287CCBE45041713D0A577DA05441AE47E12AD6E45041E17A144E7EA054418FC2F5E8DFE450410AD7A37080A05441EC51B86EEBE450410000005085A0544166666606EBE450411F85EB8181A0544185EB51C8E3E45041C3F5280C68A05441F6285C2FE3E450415C8FC2C560A05441B81E853BCBE45041333333A361A054413D0AD703C4E4504148E17A7461A05441AE47E1BAC2E450415C8FC23561A05441333333F3ADE45041AE47E1CA5CA0544114AE4701A6E45041E17A14BE5AA05441E17A14FE8DE45041D7A3708D4CA0544114AE477188E45041A4703D1A4AA05441333333F388E450417B14AE0748A05441AE47E1FA8AE45041295C8FE23FA05441EC51B85E80E4504185EB51383FA054411F85EBA179E45041B81E853B41A054417B14AE8777E450413D0AD7F340A05441CDCCCC9C6FE45041E17A144E3EA0544185EB51D873E450417B14AE3743A0544114AE47B165E45041F6285C0F4BA05441C3F5280C5CE45041C3F5282C53A0544114AE472158E4504148E17A4451A05441B81E85EB56E450413D0AD7D358A05441EC51B8DE4FE45041295C8F1266A054417B14AEE74BE45041AE47E15A70A054417B14AE374CE45041F6285CBF74A0544185EB51A84DE4504185EB515879A05441713D0AE74FE450417B14AE677CA05441CDCCCC5C52E45041EC51B83E7EA05441B81E854B54E45041EC51B82E72A054417B14AE5759E450413333331374A05441EC51B89E5FE4504152B81E057CA054415C8FC2E562E45041C3F5285C7DA05441CDCCCC1C62E4504152B81E8582A05441F6285C2F68E4504152B81E7583A05441D7A3705D69E4504148E17A9486A05441295C8F8275E45041AE47E1BA87A054418FC2F54878E4504152B81E0588A054416666667678E45041666666867DA05441AE47E11A67E450410000002074A054410000004064E45041713D0AB773A054418FC2F5A85EE4504148E17AD470A054413D0AD7835AE450415C8FC2B569A05441666666665DE45041295C8FC263A054413D0AD71363E45041EC51B86E5FA054415C8FC29567E45041D7A370CD5EA054419A9999E96BE45041713D0A2760A05441D7A3706D6FE45041F6285C4F63A0544185EB511872E45041D7A370ED66A05441
+</a>
+
+<b>
+010600000001000000010300000001000000630000003D0AD7835AE450415C8FC2B569A05441699D65585DE450414B9770DF63A05441666666665DE45041295C8FC263A054416FB9F2EF5DE45041E5D8B75963A054417F30441761E450419B585DF260A054413D0AD71363E45041EC51B86E5FA054415C8FC29567E45041D7A370CD5EA054419A9999E96BE45041713D0A2760A05441D7A3706D6FE45041F6285C4F63A0544185EB511872E45041D7A370ED66A054411AAAF4B472E45041F24BF8E864A054419A99997974E4504148E17A145FA0544149C5A1D574E450412098BDFF5BA054418FC2F51875E45041EC51B8BE59A054411F85EB5176E45041000000005AA054410AD7A3307BE45041F6285CCF5BA05441295C8F129DE4504185EB516868A05441295C8F02B1E4504152B81ED56FA05441B32B6B93AFE45041B173CB0A74A0544100000020AFE45041D7A370AD78A05441953B8645AFE4504170F141B778A05441A61A12FBB5E450416FA59F787AA05441351578B2B8E4504160170A287BA05441B81E85FBBBE450415C8FC2857BA0544107219855BFE450416F225CEA7BA05441C3F5287CCBE45041713D0A577DA05441AE47E12AD6E45041E17A144E7EA05441C6D8BA69DAE450413066413C7FA054418FC2F5E8DFE450410AD7A37080A05441EC51B86EEBE450410000005085A0544166666606EBE450411F85EB8181A0544185EB51C8E3E45041C3F5280C68A05441F6285C2FE3E450415C8FC2C560A05441B62AE619DEE45041EE84C2F460A05441B81E853BCBE45041333333A361A054417A77E425CBE450419533A7A261A054413D0AD703C4E4504148E17A7461A05441AE47E1BAC2E450415C8FC23561A054411C2A6942B8E45041283FEFFB5EA05441333333F3ADE45041AE47E1CA5CA054416C82E14CA9E45041EECBBF975BA0544114AE4701A6E45041E17A14BE5AA05441C78D2DB3A5E45041531BED8F5AA05441295580319AE450411B9633C353A05441DAC5C75D96E4504147383E8051A05441C6EA999E8FE45041DC7994834DA05441E17A14FE8DE45041D7A3708D4CA0544114AE477188E45041A4703D1A4AA05441328C207588E45041297E870A4AA05441333333F388E450417B14AE0748A05441AE47E1FA8AE45041295C8FE23FA05441EC51B85E80E4504185EB51383FA054411F85EBA179E45041B81E853B41A054417B14AE8777E450413D0AD7F340A05441CDCCCC9C6FE45041E17A144E3EA0544185EB51D873E450417B14AE3743A0544114AE47B165E45041F6285C0F4BA05441C3F5280C5CE45041C3F5282C53A05441107FB04458E450411DEAB25551A05441D332773C58E45041BC26B35151A0544114AE472158E4504148E17A4451A0544177EEAD7C57E4504121BFE44855A05441B81E85EB56E450413D0AD7D358A05441BD2667C655E45041C2A086FA5AA05441CC58CE3053E45041CEC37BD55FA05441EC51B8DE4FE45041295C8F1266A0544185D6F0034EE450416F14D0E16AA054417B14AEE74BE45041AE47E15A70A054417B14AE374CE45041F6285CBF74A0544185EB51A84DE4504185EB515879A05441713D0AE74FE450417B14AE677CA05441CDCCCC5C52E45041EC51B83E7EA054411F644CFE53E45041B409BB1074A05441B81E854B54E45041EC51B82E72A054417B14AE5759E450413333331374A05441D7C763E75BE450419A35165177A05441EC51B89E5FE4504152B81E057CA054410FA105DC60E450416C2DD9867CA054415C8FC2E562E45041C3F5285C7DA05441CDCCCC1C62E4504152B81E8582A054415409CCAD65E450415996121283A05441FB6F291268E450412CC5655F83A054414B4E021A68E4504171E0D27183A05441F6285C2F68E4504152B81E7583A05441C07883CC68E450417D45FA1485A05441D7A3705D69E4504148E17A9486A05441295C8F8275E45041AE47E1BA87A054418FC2F54878E4504152B81E0588A054411D8C8D6C78E45041AE40A0CC7FA054416666667678E45041666666867DA05441F07A9A8174E4504124D7EA617BA054417FC73A7E71E45041D3842DC079A05441A0AEAB1F6EE45041F6840EED77A05441AE47E11A67E450410000002074A054416EDF079E66E450417C18120E74A054410DA69C5266E45041F26D3D0374A054410000004064E45041713D0AB773A054418FC2F5A85EE4504148E17AD470A054413D0AD7835AE450415C8FC2B569A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373295 - 190308
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D00000052B81EF5B4CB5041333333F3E99E5441333333B3A1CB5041D7A370BDF09E5441EC51B8FEA9CB50411F85EB61FB9E5441D7A3707DD0CB5041295C8FE2FA9E5441F6285C8FEACB50413D0AD703F99E54410AD7A3C0E8CB504114AE4751F69E54417B14AED7E2CB5041E17A147EED9E544166666686E2CB50419A9999A9EC9E5441D7A370EDDFCB5041000000E0E59E544133333333DDCB50419A999919E69E5441CDCCCCCCCECB50417B14AEE7E79E5441AE47E13AC1CB5041AE47E13AE69E544152B81EF5B4CB5041333333F3E99E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000023CCAE80BACB50414B22E844E89E54410A46D854BACB50415EDE3152E89E54413162FC27B2CB5041F05E03FBEA9E5441846869B6A1CB5041DF888FC1F09E5441650B782BA5CB5041E4331731F59E5441D62EC19BA9CB50414D7EF2E2FA9E5441239A88CDD9CB50419B8F8C37FA9E544117A1B3A6DACB504168BBF827FA9E54417BFA23EADACB50416D5C2223FA9E5441073716DADBCB50417B42EC11FA9E5441C781F8E0E7CB5041712005C4F89E54418FDF7A67E5CB5041CF81083BF59E54416A97FE83E1CB504159EA0D93EF9E5441144AB681DDCB50412B7A1438E69E544144B40608D9CB504100CD1A11E89E5441C06F0B15D4CB504175A99390E99E5441596038E5CCCB504122CBDD2AE99E5441B88C4027C4CB50411155B4C5E89E544177D5C79BBCCB50411FD256A6E79E544196CA7CDDBBCB50418EA12DDBE79E544122D60B43BBCB50417DF1FD09E89E544123CCAE80BACB50414B22E844E89E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373520 - 3147768
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A38027D150418FC2F598EF8F544185EB51582CD1504114AE4711D88F54413D0AD78337D15041D7A370CDA48F54417B14AED741D15041295C8F12748F544152B81E254AD1504114AE4731458F5441B81E857B4FD150419A9999A9268F54413333333353D1504114AE47F10E8F5441295C8FA250D1504100000020148F54413D0AD7834DD15041E17A144E268F54419A99993948D15041C3F528EC448F5441C3F528BC3FD15041AE47E16A738F5441713D0A6735D15041E17A144EA48F5441666666562AD150413D0AD7A3D78F54417B14AEA725D15041D7A3704DEF8F5441B81E850B1FD1504114AE47110C905441CDCCCCEC20D15041666666A60C9054410AD7A38027D150418FC2F598EF8F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000007B21D6A50D150412696B569158F54411EC3DE164ED15041E4F5FB47188F54415C8FC2B54BD150413D0AD713268F54418FC2F56846D1504185EB5178448F5441666666D63DD1504133333313738F5441713D0A9733D15041E17A141EA48F54410AD7A31028D150411F85EB11D78F544148E17AB423D15041A4703D0AEF8F54419A9999291DD150415C8FC2850B905441B81E850B1FD1504114AE47110C90544153E3AA9825D150412E36C58EEF8F5441316E096B27D1504139C88E64E68F5441ED9431FD28D150418A614D74DE8F5441C79209DA2AD150418C1C7EB2D58F54419B44001A2DD150416C75AF1ECB8F54410A352A0032D15041C7CF6B16B48F54413F75881833D150417919AE01AF8F54412F15B63935D150411CD96020A58F5441B96220B237D15041E8415274998F54410FDE02F939D150418C7671AE8E8F5441CC2093A63BD150412757FEBD868F544101390DC03ED15041C386B613788F544173D53CBE3FD15041EF80805F738F54415D50ED9143D15041EB7459445F8F5441460DA19245D15041485B8172538F5441915A781049D15041B4798810408F5441C0EC834D49D15041881B37AF3E8F5441CA2B35424DD150413275F2C9278F544107B21D6A50D150412696B569158F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373520 - 400731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A38027D150418FC2F598EF8F544185EB51582CD1504114AE4711D88F54413D0AD78337D15041D7A370CDA48F54417B14AED741D15041295C8F12748F544152B81E254AD1504114AE4731458F5441B81E857B4FD150419A9999A9268F54413333333353D1504114AE47F10E8F5441295C8FA250D1504100000020148F54413D0AD7834DD15041E17A144E268F54419A99993948D15041C3F528EC448F5441C3F528BC3FD15041AE47E16A738F5441713D0A6735D15041E17A144EA48F5441666666562AD150413D0AD7A3D78F54417B14AEA725D15041D7A3704DEF8F5441B81E850B1FD1504114AE47110C905441CDCCCCEC20D15041666666A60C9054410AD7A38027D150418FC2F598EF8F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000007B21D6A50D150412696B569158F54411EC3DE164ED15041E4F5FB47188F54415C8FC2B54BD150413D0AD713268F54418FC2F56846D1504185EB5178448F5441666666D63DD1504133333313738F5441713D0A9733D15041E17A141EA48F54410AD7A31028D150411F85EB11D78F544148E17AB423D15041A4703D0AEF8F54413656152C20D1504180347E6BFE8F544136E0A10922D15041EC9407D0FE8F544153E3AA9825D150412E36C58EEF8F5441316E096B27D1504139C88E64E68F5441ED9431FD28D150418A614D74DE8F5441C79209DA2AD150418C1C7EB2D58F54419B44001A2DD150416C75AF1ECB8F54410A352A0032D15041C7CF6B16B48F54413F75881833D150417919AE01AF8F54412F15B63935D150411CD96020A58F5441B96220B237D15041E8415274998F54410FDE02F939D150418C7671AE8E8F5441CC2093A63BD150412757FEBD868F544101390DC03ED15041C386B613788F544173D53CBE3FD15041EF80805F738F54415D50ED9143D15041EB7459445F8F5441460DA19245D15041485B8172538F5441915A781049D15041B4798810408F5441C0EC834D49D15041881B37AF3E8F5441CA2B35424DD150413275F2C9278F544107B21D6A50D150412696B569158F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893650 - 3079127
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554114AE4711CF6B50416666669695195541333333B3D46B5041713D0A379519554166666676D76B504185EB5108951955417B14AEA7DB6B504152B81EC594195541713D0A87DE6B5041A4703D3A941955411F85EBE1E06B504185EB51C893195541A4703D3AE36B5041713D0A579319554185EB5158E76B50410AD7A3909219554114AE47C1E76B5041CDCCCC7C921955410AD7A350EE6B5041EC51B84E91195541AE47E15AEE6B5041333333638C195541295C8F72EE6B50410000000084195541AE47E10AEE6B50411F85EBB17B19554152B81EE5ED6B5041EC51B8CE79195541F6285C7FEC6B5041E17A14DE79195541F6285CBFE66B5041EC51B81E7A1955417B14AE27E26B50411F85EB517A195541D7A370CDDF6B5041C3F5286C7A1955415C8FC295DF6B50410AD7A3707A1955415C8FC285DE6B5041D7A3707D7A19554133333333DD6B5041AE47E18A7A1955418FC2F598D66B50415C8FC2C57A195541CDCCCC1CD66B5041A4703DCA7A19554148E17AF4D26B5041666666E67A195541D7A3701DD16B5041666666F67A195541A4703D7ACD6B5041C3F5280C7B195541295C8FD2CC6B504114AE47117B19554114AE47C1CA6B50419A9999197B1955410AD7A3C0C76B5041C3F5281C7B19554148E17A04C86B5041333333837D19554114AE4701C96B5041E17A14CE86195541AE47E13AC96B5041E17A14EE92195541C3F5284CC96B504114AE47F195195541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000001972B001C96B5041DC2F22E486195541572F2A04C96B5041AEB0896987195541123C5608C96B50410CB45D4A88195541C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554152B81E45CC6B5041AE47E1BA92195541F6285CFFCB6B504185EB518886195541C3F528DCCA6B50419A9999A97C19554114AE47C1CA6B50419A9999197B1955410AD7A3C0C76B5041C3F5281C7B19554148E17A04C86B5041333333837D19554198D814C7C86B50411E916CAA8419554114AE4701C96B5041E17A14CE861955411972B001C96B5041DC2F22E486195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893650 - 3393140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554114AE4711CF6B50416666669695195541333333B3D46B5041713D0A379519554166666676D76B504185EB5108951955417B14AEA7DB6B504152B81EC594195541713D0A87DE6B5041A4703D3A941955411F85EBE1E06B504185EB51C893195541A4703D3AE36B5041713D0A579319554185EB5158E76B50410AD7A3909219554114AE47C1E76B5041CDCCCC7C921955410AD7A350EE6B5041EC51B84E91195541AE47E15AEE6B5041333333638C195541295C8F72EE6B50410000000084195541AE47E10AEE6B50411F85EBB17B19554152B81EE5ED6B5041EC51B8CE79195541F6285C7FEC6B5041E17A14DE79195541F6285CBFE66B5041EC51B81E7A1955417B14AE27E26B50411F85EB517A195541D7A370CDDF6B5041C3F5286C7A1955415C8FC295DF6B50410AD7A3707A1955415C8FC285DE6B5041D7A3707D7A19554133333333DD6B5041AE47E18A7A1955418FC2F598D66B50415C8FC2C57A195541CDCCCC1CD66B5041A4703DCA7A19554148E17AF4D26B5041666666E67A195541D7A3701DD16B5041666666F67A195541A4703D7ACD6B5041C3F5280C7B195541295C8FD2CC6B504114AE47117B19554114AE47C1CA6B50419A9999197B1955410AD7A3C0C76B5041C3F5281C7B19554148E17A04C86B5041333333837D19554114AE4701C96B5041E17A14CE86195541AE47E13AC96B5041E17A14EE92195541C3F5284CC96B504114AE47F195195541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000001972B001C96B5041DC2F22E486195541572F2A04C96B5041AEB0896987195541123C5608C96B50410CB45D4A88195541C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554152B81E45CC6B5041AE47E1BA92195541F6285CFFCB6B504185EB518886195541C3F528DCCA6B50419A9999A97C19554114AE47C1CA6B50419A9999197B1955410AD7A3C0C76B5041C3F5281C7B19554148E17A04C86B5041333333837D19554198D814C7C86B50411E916CAA8419554114AE4701C96B5041E17A14CE861955411972B001C96B5041DC2F22E486195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>374782 - 24824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE47E10EC75041B81E850B604A5441713D0AE70FC750418FC2F5E8604A544152B81E4510C75041295C8F12624A54415C8FC25511C750419A999969624A5441B81E850B12C7504100000010634A5441AE47E16A12C75041EC51B8CE634A5441F6285CBF12C750411F85EBA1644A5441EC51B81E13C75041B81E850B654A5441295C8FD213C750415C8FC255654A5441000000F014C750410AD7A320654A5441D7A370ED15C75041713D0AB7644A54410AD7A3E016C75041CDCCCC6C644A54418FC2F58817C75041E17A142E644A54411F85EB2117C750417B14AEB7564A54410AD7A3C00DC75041CDCCCCEC584A54417B14AEA70DC750411F85EBB1564A5441A4703D3AEEC65041C3F528EC5D4A54417B14AE57C6C6504185EB5118674A544114AE4731C7C650419A999929784A54411F85EB91EFC65041F6285CDF6E4A5441AE47E16A10C7504114AE4751674A544185EB51380FC7504100000040674A5441E17A143E0EC75041CDCCCCEC664A54413D0AD7630DC75041295C8F12664A54411F85EB210DC75041713D0AD7644A5441333333830CC750418FC2F598624A54411F85EBB10CC7504185EB51C8604A544114AE47E10EC75041B81E850B604A5441
+</a>
+
+<b>
+010600000001000000010300000001000000070000006E76AC08C7C6504101C03FFA744A54416F00000FC7C65041C3585401754A5441B889DC45C8C65041C75592FA744A54410F4830B1C7C65041B725533B694A5441CBBB9173C6C65041B3281542694A5441B8EB4973C6C650415B01B042694A54416E76AC08C7C6504101C03FFA744A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>374782 - 70211
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE47E10EC75041B81E850B604A5441713D0AE70FC750418FC2F5E8604A544152B81E4510C75041295C8F12624A54415C8FC25511C750419A999969624A5441B81E850B12C7504100000010634A5441AE47E16A12C75041EC51B8CE634A5441F6285CBF12C750411F85EBA1644A5441EC51B81E13C75041B81E850B654A5441295C8FD213C750415C8FC255654A5441000000F014C750410AD7A320654A5441D7A370ED15C75041713D0AB7644A54410AD7A3E016C75041CDCCCC6C644A54418FC2F58817C75041E17A142E644A54411F85EB2117C750417B14AEB7564A54410AD7A3C00DC75041CDCCCCEC584A54417B14AEA70DC750411F85EBB1564A5441A4703D3AEEC65041C3F528EC5D4A54417B14AE57C6C6504185EB5118674A544114AE4731C7C650419A999929784A54411F85EB91EFC65041F6285CDF6E4A5441AE47E16A10C7504114AE4751674A544185EB51380FC7504100000040674A5441E17A143E0EC75041CDCCCCEC664A54413D0AD7630DC75041295C8F12664A54411F85EB210DC75041713D0AD7644A5441333333830CC750418FC2F598624A54411F85EBB10CC7504185EB51C8604A544114AE47E10EC75041B81E850B604A5441
+</a>
+
+<b>
+010600000001000000010300000001000000070000006E76AC08C7C6504101C03FFA744A54416F00000FC7C65041C3585401754A5441B889DC45C8C65041C75592FA744A54410F4830B1C7C65041B725533B694A5441CBBB9173C6C65041B3281542694A5441B8EB4973C6C650415B01B042694A54416E76AC08C7C6504101C03FFA744A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>417628 - 1380825
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C554148E17A84A0455141C3F528BC0F0C55415C8FC2C5AD455141A4703D9A0D0C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B55413D0AD783974551417B14AEC7E20B5541D7A3705D9845514185EB5188E90B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074B39DB0AB455141B1E2F4AD080C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B55413D0AD783974551417B14AEC7E20B5541D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C554148E17A84A0455141C3F528BC0F0C554117298FBEAD455141D502669B0D0C554174B39DB0AB455141B1E2F4AD080C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>417628 - 3621310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C554148E17A84A0455141C3F528BC0F0C55415C8FC2C5AD455141A4703D9A0D0C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B55413D0AD783974551417B14AEC7E20B5541D7A3705D9845514185EB5188E90B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074B39DB0AB455141B1E2F4AD080C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B55413D0AD783974551417B14AEC7E20B5541D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C554148E17A84A0455141C3F528BC0F0C554117298FBEAD455141D502669B0D0C554174B39DB0AB455141B1E2F4AD080C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>380289 - 215129
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000001F85EBF11E465141C3F5287CE4095541A4703D0A28465141EC51B81EE9095541C3F5285C284651418FC2F528E8095541295C8FE2294651418FC2F5A8E90955415C8FC2F52B465141D7A370CDE8095541D7A370BD2D4651410AD7A350E80955418FC2F50830465141A4703DFAE709554148E17A24324651417B14AED7E70955417B14AEA73B4651418FC2F578E8095541713D0A973E465141EC51B8BEE00955410AD7A38039465141B81E852BE0095541713D0AF7354651411F85EBB1DF09554100000070354651411F85EB71DB095541666666163C4651415C8FC245D1095541F6285C4F3E4651413D0AD763CD095541E17A14FE40465141295C8F72CB095541666666E642465141E17A141EC6095541295C8FF244465141E17A14EEBD095541A4703D7A404651419A999949BC095541D7A3709D37465141333333B3BC095541713D0AD7354651411F85EBD1C3095541B81E853B33465141295C8FA2CB0955415C8FC29530465141CDCCCC9CD609554185EB51C82F4651411F85EB71D6095541CDCCCC4C2A46514100000080D6095541F6285CBF2746514114AE4711DA09554133333323274651415C8FC2E5DA0955411F85EBF11E465141C3F5287CE4095541
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000BB0FA8BF3A4651419D7DDC8DBC0955413B118EA8394651410217DA9ABC095541D7A3709D37465141333333B3BC095541713D0AD7354651411F85EBD1C3095541B81E853B33465141295C8FA2CB0955415C8FC29530465141CDCCCC9CD609554185EB51C82F4651411F85EB71D60955411B2D964D2E465141182CB875D6095541D9D00D852D46514120104307D7095541A547F4C82B4651419DC89708D80955412939FBAE2A465141F3BEF483D8095541A083C2A0284651417D0540D6D8095541F6285CBF2746514114AE4711DA09554133333323274651415C8FC2E5DA09554177094422274651417972DAE6DA0955418F9AB10926465141DA51332FDC0955410889C201224651416982D9E6E009554171B608161F4651415480908EE40955411B964CEA27465141FF72900DE90955415510AAEB27465141C253230FE9095541A4703D0A28465141EC51B81EE9095541EF5F704E28465141FF831F52E80955414D610A5C284651415F2F6628E8095541C3F5285C284651418FC2F528E8095541295C8FE2294651418FC2F5A8E90955415C8FC2F52B465141D7A370CDE8095541D7A370BD2D4651410AD7A350E809554147330BD92E4651412EFEEE26E809554140AC8E2F30465141C6A4E2EBE7095541FFA70D8A304651412B7EF8F1E709554148E17A24324651417B14AED7E7095541469C8C813746514126D49D32E80955418038DD8237465141371FB432E8095541207D958537465141203CE232E8095541ADBD328837465141FA8E0E33E8095541C30EC48837465141C02E1833E80955413599B18D374651419BBB6B33E8095541CC2D279E37465141E1CA8234E80955413A7BC2E03946514160CCD45AE80955417B14AEA73B4651418FC2F578E80955410CAD3DAC3B465141FC9EF36CE809554172644EAC3B465141D69BC76CE809554118B160AC3B465141BD6D976CE809554198340DAD3B4651419438D16AE80955413F3BBFAD3B465141F97FFC68E8095541713D0A973E465141EC51B8BEE00955410AD7A38039465141B81E852BE0095541B347621936465141A01388B6DF095541E060750736465141D2314CBCDF095541BAB59209364651412D9668B4DF095541713D0AF7354651411F85EBB1DF09554100000070354651411F85EB71DB095541C33F51A336465141271CD19BD9095541666666163C4651415C8FC245D1095541F6285C4F3E4651413D0AD763CD095541E17A14FE40465141295C8F72CB095541666666E642465141E17A141EC6095541295C8FF244465141E17A14EEBD095541A4703D7A404651419A999949BC0955411DF64EE83C465141A76F2374BC0955414850DB2F3C465141673FB97CBC09554176CE7EF43B465141758F7C7FBC095541BB0FA8BF3A4651419D7DDC8DBC095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>424153 - 4301646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000050000007B14AE2764C05041333333A3FC365541A4703D9A36C050410AD7A3D0F4365541EC51B88E36C05041C3F5281CF636554152B81ED563C0504100000010FE3655417B14AE2764C05041333333A3FC365541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000093BEA1D65DC050418B0E7802FD36554152B81ED563C0504100000010FE3655417B14AE2764C05041333333A3FC365541A4703D9A36C050410AD7A3D0F4365541C3F5289C36C05041EC51B86EF5365541F6285C5F49C05041713D0AB7F8365541713D0A4754C050410AD7A3E0FA36554193BEA1D65DC050418B0E7802FD365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>380669 - 215121
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002000000085EB5148CA4B51418FC2F528CB0B5541EC51B8EECE4B514114AE4721CC0B5541E17A14EED64B5141C3F5283CB20B5541D7A370DDD74B51418FC2F538AF0B55410AD7A3E0D84B5141666666F6AB0B5541EC51B85ED94B5141AE47E1AAAA0B55411F85EB51DB4B51415C8FC285A50B5541295C8F82DB4B514152B81E05A50B5541A4703DAADC4B5141B81E85EB9C0B5541F6285C1FDC4B5141713D0A67970B554185EB51B8DC4B5141CDCCCC0C920B55415C8FC2A5DB4B51411F85EB51900B5541295C8F22DA4B51418FC2F5488F0B554100000020D54B5141A4703D5A8E0B55419A999999C64B5141666666A68B0B554148E17AB4C44B5141295C8FF2970B55415C8FC2A5C44B51417B14AEA7990B5541E17A141EC54B5141CDCCCC4C9B0B5541C3F5283CC74B51417B14AE97A00B55411F85EBF1C74B5141AE47E1EAA10B5541CDCCCC3CCA4B5141666666D6A50B5541EC51B89ECA4B5141B81E85FBA60B55419A9999C9CA4B514148E17AF4A70B55410AD7A390CA4B5141E17A147EA90B5541AE47E13AC74B5141295C8FD2A90B5541713D0A27BF4B51410AD7A350AA0B5541295C8FB2BD4B5141C3F5285CAA0B55415C8FC295B64B51419A999909A90B5541D7A3700DB54B51415C8FC275B90B5541666666D6B34B514185EB5178C60B554166666616C04B51417B14AE07C90B554185EB5148CA4B51418FC2F528CB0B5541
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F94A62EEB44B514102704DC2BA0B5541666666D6B34B514185EB5178C60B5541750209EBBC4B51416F0E1F5EC80B5541A07EC450C04B51410ACFD30CC90B554135EBBC7AC14B514185C16628C60B5541656ADCECC34B514169446773BD0B5541E069947DC54B5141D7456D25B90B55419FD17FE2C64B51415D378E99B50B55410869BF08C84B514146C80ECFB10B5541BDE826EAC84B51411FC9E343AF0B5541342AD53AC94B5141B5A09E9CAC0B554156914616BC4B514174EF7F0FAA0B55414515272DB94B5141B08EF384A90B5541B399A4A1B64B5141DF3CCF0BA90B5541F7F5B0DEB54B5141BC1DA726B10B5541483358A9B54B5141504A10EFB20B5541D7A3700DB54B51415C8FC275B90B5541B6796DF1B44B51417A17B6A1BA0B5541E838AFF0B44B51414BE9B8AABA0B5541F94A62EEB44B514102704DC2BA0B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>186114 - 4489536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E85FB3FDD50411F85EB01BD905441E17A146E41DD5041D7A370EDB19054415C8FC2A543DD5041CDCCCC1CA19054413333338315DD504152B81EA5AA905441CDCCCC4C15DD5041EC51B8FEAD9054413333338312DD504100000060BE90544148E17A7411DD5041D7A3705DC6905441C3F5284C11DD504100000090C7905441EC51B86E10DD504148E17A04D090544185EB51F810DD50418FC2F5E8CF9054418FC2F5B83EDD504185EB51A8C6905441B81E85FB3FDD50411F85EB01BD905441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ED0A181812DD504168F73E89C1905441556EEC9811DD504101B3164AC590544148E17A7411DD5041D7A3705DC6905441C3F5284C11DD504100000090C7905441EC51B86E10DD504148E17A04D090544185EB51F810DD50418FC2F5E8CF9054418FC2F5B83EDD504185EB51A8C6905441B81E85FB3FDD50411F85EB01BD905441524EC11240DD50416DAC1050BC905441B1706B9D40DD5041FE79A52AB8905441ED0A181812DD504168F73E89C1905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>394356 - 3186204
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000008400000052B81EB50C9C50417B14AE67AA1354410AD7A3C0119C5041A4703D7AAC135441666666F6159C5041AE47E17AAD135441D7A370BD1A9C50417B14AE57AC1354410AD7A3D01E9C504114AE4701AA1354418FC2F538269C5041D7A370FDA5135441666666462B9C50418FC2F5D8A0135441000000F0289C50410AD7A3209F135441D7A370FD059C50413D0AD7238513544148E17AA4049C5041D7A3703D84135441EC51B8FE009C5041B81E85BB7E135441E17A141EF69B50418FC2F5C8751354413D0AD713F69B504152B81E9574135441F6285C4FF69B5041713D0A17731354419A999969F79B5041AE47E11A6E13544152B81EC5F89B504148E17AB4621354413D0AD783F69B504185EB51E863135441F6285CDFF49B5041CDCCCCAC641354419A9999D9F39B504114AE47116513544133333313F39B504148E17AC4641354418FC2F588F19B5041EC51B8CE6313544114AE4701EF9B5041713D0AA7621354419A999929EC9B50418FC2F588601354410AD7A390E99B504185EB51D85E135441E17A147EE89B50415C8FC2655E135441295C8F42EB9B5041666666965B135441B81E854BEB9B504152B81E755A1354411F85EB01EC9B5041B81E856B53135441E17A141EEC9B504148E17A9451135441D7A370CDEA9B50416666663651135441333333A3E59B5041666666664F135441CDCCCC3CDE9B5041C3F528CC4D13544133333353D89B50410AD7A3304A13544185EB5178D49B5041D7A3709D46135441713D0A97CA9B5041CDCCCCFC42135441D7A3707DC99B5041EC51B87E4213544166666686BE9B504185EB51884013544152B81E05AB9B504148E17AD43C135441B81E856BA99B5041E17A14FE3B13544166666626A89B504148E17A04391354411F85EB81A49B5041E17A142E371354415C8FC255A29B5041E17A14BE37135441D7A3704DA29B5041C3F5287C40135441C3F5285CA69B50419A999949451354410AD7A340A99B5041D7A3700D481354410AD7A3B0AB9B5041D7A3709D46135441C3F5284CAE9B50418FC2F5284B13544100000010AE9B5041B81E853B4E135441E17A142EB29B50410AD7A3C056135441713D0A27B89B5041EC51B89E5713544148E17A74B99B5041EC51B87E5B13544166666676BC9B5041B81E85DB591354415C8FC265BD9B5041666666E65C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D771354413D0AD7A3899B5041295C8F6278135441B81E858B899B5041D7A370CD78135441CDCCCCCC8A9B5041666666C6791354419A9999E98B9B50411F85EBF17A1354418FC2F5888C9B504152B81EF57B135441A4703DCA8C9B5041295C8FE27C1354418FC2F5E88C9B50417B14AE177E135441CDCCCCCC8C9B50413D0AD7037F1354417B14AE978C9B5041E17A145E7F13544114AE47918B9B5041295C8FE27F1354417B14AEE78A9B5041AE47E15A80135441F6285C2F8A9B504152B81E758413544133333363939B50418FC2F5288A13544185EB51E8989B50415C8FC2C58D135441D7A3705DB09B50413D0AD7139F135441D7A3706DB29B5041C3F528BCA013544114AE4731BC9B504114AE47F1A91354415C8FC245C39B5041000000F0B01354418FC2F558C99B5041AE47E1AAB6135441E17A14DECF9B5041D7A3707DBD13544152B81E65D39B50418FC2F548C113544185EB5118D89B5041E17A141EC6135441E17A147EDD9B504152B81EE5CB1354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441B81E852BED9B504114AE4741C5135441713D0AD7ED9B5041713D0A17C1135441D7A3709DF19B50410AD7A3E0BB1354419A999989ED9B50419A999989B8135441EC51B86EEA9B50415C8FC255B71354419A9999B9E79B504100000000B71354415C8FC215E59B50411F85EB21B6135441A4703DEAE29B504152B81EE5B41354410AD7A3E0E09B5041C3F5285CB3135441CDCCCC3CDE9B50410AD7A340B0135441AE47E1AADC9B50413D0AD713AD1354410AD7A390DB9B5041CDCCCC4CA81354415C8FC265DB9B50413D0AD763A31354410AD7A310DC9B50419A9999B9951354415C8FC225D39B504185EB51389113544133333353D29B5041D7A3707D8C135441CDCCCC4CD19B5041D7A3703D88135441A4703DBACC9B5041D7A3707D7E1354417B14AEB7D59B5041EC51B86E74135441D7A3701DDB9B5041AE47E11A77135441A4703DBAD79B5041D7A3709D801354413D0AD753DD9B5041E17A140E8213544114AE4721E19B5041713D0A6787135441C3F5288CE39B504114AE47B18A135441713D0A57F79B5041AE47E1AA80135441EC51B81EFC9B50413D0AD7438413544185EB5168E99B5041666666F690135441666666F6E89B50413D0AD7F39213544133333393EE9B50410000002095135441EC51B8BEF09B5041B81E853B98135441D7A3700DF49B5041EC51B8DE9A135441AE47E14AF79B5041E17A14CE9B13544100000060FE9B50417B14AE1796135441666666B6FF9B5041EC51B8CE9C135441295C8F72009C5041F6285CAFA0135441713D0AA7029C5041B81E855BA313544148E17A64059C5041333333C3A5135441713D0AF7079C504185EB5188A713544152B81EB50C9C50417B14AE67AA13544113000000666666F6CD9B50411F85EB116913544148E17A04D49B5041B81E855B6B1354419A999919D59B50413D0AD70372135441C3F5287CD09B5041713D0A477213544166666686D09B504114AE4771781354413D0AD713CB9B5041333333237A135441D7A370FDC89B50417B14AEB76E135441000000D0CA9B50413D0AD7F36913544100000000C19B50419A999929651354410AD7A330C29B5041AE47E12A5E13544114AE4701C59B50419A99990957135441A4703D1AC99B5041CDCCCC6C55135441295C8F42D09B50418FC2F5D859135441B81E856BD79B504148E17A6455135441666666A6DD9B5041E17A14FE5F135441C3F5284CD89B5041295C8F7264135441AE47E17AD39B5041000000A05E135441E17A14DED09B504148E17AD465135441666666F6CD9B50411F85EB1169135441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441E59B024BDE9B504123D85D51B0135441F9AD8717DE9B504127E644F5AF13544158E3B8A3DC9B5041C7ACD2F4AC1354411BC93F8FDB9B5041619F0724A8135441DA7A8466DB9B5041647F0B7AA31354417ADFB801D49B50412A2AD1BA9F1354417A873B4DD39B504199CDF2E39E1354415F9BCD63D09B504117612F9D9B135441A9FB552ACB9B5041080BC2309E135441F31E55DAC69B5041E4BB6962A0135441FDB21D9CC29B504160DF9127A31354416AAF3553BE9B50412902B12CA713544136CC654EBC9B5041BD0F470EAA1354416E8EF9B5C29B504192E9F061B0135441B7BF1612C89B504107699276B513544178C238C4CD9B50417A9DA04ABB135441BA4959FDD09B5041C93F7EB2BE135441D486F4A6D59B5041C3D0159BC3135441C49E9DE4D89B5041EE3BC2F8C61354413A9556ACDA9B50418CC190E0C81354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>394356 - 3591106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000008400000052B81EB50C9C50417B14AE67AA1354410AD7A3C0119C5041A4703D7AAC135441666666F6159C5041AE47E17AAD135441D7A370BD1A9C50417B14AE57AC1354410AD7A3D01E9C504114AE4701AA1354418FC2F538269C5041D7A370FDA5135441666666462B9C50418FC2F5D8A0135441000000F0289C50410AD7A3209F135441D7A370FD059C50413D0AD7238513544148E17AA4049C5041D7A3703D84135441EC51B8FE009C5041B81E85BB7E135441E17A141EF69B50418FC2F5C8751354413D0AD713F69B504152B81E9574135441F6285C4FF69B5041713D0A17731354419A999969F79B5041AE47E11A6E13544152B81EC5F89B504148E17AB4621354413D0AD783F69B504185EB51E863135441F6285CDFF49B5041CDCCCCAC641354419A9999D9F39B504114AE47116513544133333313F39B504148E17AC4641354418FC2F588F19B5041EC51B8CE6313544114AE4701EF9B5041713D0AA7621354419A999929EC9B50418FC2F588601354410AD7A390E99B504185EB51D85E135441E17A147EE89B50415C8FC2655E135441295C8F42EB9B5041666666965B135441B81E854BEB9B504152B81E755A1354411F85EB01EC9B5041B81E856B53135441E17A141EEC9B504148E17A9451135441D7A370CDEA9B50416666663651135441333333A3E59B5041666666664F135441CDCCCC3CDE9B5041C3F528CC4D13544133333353D89B50410AD7A3304A13544185EB5178D49B5041D7A3709D46135441713D0A97CA9B5041CDCCCCFC42135441D7A3707DC99B5041EC51B87E4213544166666686BE9B504185EB51884013544152B81E05AB9B504148E17AD43C135441B81E856BA99B5041E17A14FE3B13544166666626A89B504148E17A04391354411F85EB81A49B5041E17A142E371354415C8FC255A29B5041E17A14BE37135441D7A3704DA29B5041C3F5287C40135441C3F5285CA69B50419A999949451354410AD7A340A99B5041D7A3700D481354410AD7A3B0AB9B5041D7A3709D46135441C3F5284CAE9B50418FC2F5284B13544100000010AE9B5041B81E853B4E135441E17A142EB29B50410AD7A3C056135441713D0A27B89B5041EC51B89E5713544148E17A74B99B5041EC51B87E5B13544166666676BC9B5041B81E85DB591354415C8FC265BD9B5041666666E65C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D771354413D0AD7A3899B5041295C8F6278135441B81E858B899B5041D7A370CD78135441CDCCCCCC8A9B5041666666C6791354419A9999E98B9B50411F85EBF17A1354418FC2F5888C9B504152B81EF57B135441A4703DCA8C9B5041295C8FE27C1354418FC2F5E88C9B50417B14AE177E135441CDCCCCCC8C9B50413D0AD7037F1354417B14AE978C9B5041E17A145E7F13544114AE47918B9B5041295C8FE27F1354417B14AEE78A9B5041AE47E15A80135441F6285C2F8A9B504152B81E758413544133333363939B50418FC2F5288A13544185EB51E8989B50415C8FC2C58D135441D7A3705DB09B50413D0AD7139F135441D7A3706DB29B5041C3F528BCA013544114AE4731BC9B504114AE47F1A91354415C8FC245C39B5041000000F0B01354418FC2F558C99B5041AE47E1AAB6135441E17A14DECF9B5041D7A3707DBD13544152B81E65D39B50418FC2F548C113544185EB5118D89B5041E17A141EC6135441E17A147EDD9B504152B81EE5CB1354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441B81E852BED9B504114AE4741C5135441713D0AD7ED9B5041713D0A17C1135441D7A3709DF19B50410AD7A3E0BB1354419A999989ED9B50419A999989B8135441EC51B86EEA9B50415C8FC255B71354419A9999B9E79B504100000000B71354415C8FC215E59B50411F85EB21B6135441A4703DEAE29B504152B81EE5B41354410AD7A3E0E09B5041C3F5285CB3135441CDCCCC3CDE9B50410AD7A340B0135441AE47E1AADC9B50413D0AD713AD1354410AD7A390DB9B5041CDCCCC4CA81354415C8FC265DB9B50413D0AD763A31354410AD7A310DC9B50419A9999B9951354415C8FC225D39B504185EB51389113544133333353D29B5041D7A3707D8C135441CDCCCC4CD19B5041D7A3703D88135441A4703DBACC9B5041D7A3707D7E1354417B14AEB7D59B5041EC51B86E74135441D7A3701DDB9B5041AE47E11A77135441A4703DBAD79B5041D7A3709D801354413D0AD753DD9B5041E17A140E8213544114AE4721E19B5041713D0A6787135441C3F5288CE39B504114AE47B18A135441713D0A57F79B5041AE47E1AA80135441EC51B81EFC9B50413D0AD7438413544185EB5168E99B5041666666F690135441666666F6E89B50413D0AD7F39213544133333393EE9B50410000002095135441EC51B8BEF09B5041B81E853B98135441D7A3700DF49B5041EC51B8DE9A135441AE47E14AF79B5041E17A14CE9B13544100000060FE9B50417B14AE1796135441666666B6FF9B5041EC51B8CE9C135441295C8F72009C5041F6285CAFA0135441713D0AA7029C5041B81E855BA313544148E17A64059C5041333333C3A5135441713D0AF7079C504185EB5188A713544152B81EB50C9C50417B14AE67AA13544113000000666666F6CD9B50411F85EB116913544148E17A04D49B5041B81E855B6B1354419A999919D59B50413D0AD70372135441C3F5287CD09B5041713D0A477213544166666686D09B504114AE4771781354413D0AD713CB9B5041333333237A135441D7A370FDC89B50417B14AEB76E135441000000D0CA9B50413D0AD7F36913544100000000C19B50419A999929651354410AD7A330C29B5041AE47E12A5E13544114AE4701C59B50419A99990957135441A4703D1AC99B5041CDCCCC6C55135441295C8F42D09B50418FC2F5D859135441B81E856BD79B504148E17A6455135441666666A6DD9B5041E17A14FE5F135441C3F5284CD89B5041295C8F7264135441AE47E17AD39B5041000000A05E135441E17A14DED09B504148E17AD465135441666666F6CD9B50411F85EB1169135441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441E59B024BDE9B504123D85D51B0135441F9AD8717DE9B504127E644F5AF13544158E3B8A3DC9B5041C7ACD2F4AC1354411BC93F8FDB9B5041619F0724A8135441DA7A8466DB9B5041647F0B7AA31354417ADFB801D49B50412A2AD1BA9F1354417A873B4DD39B504199CDF2E39E1354415F9BCD63D09B504117612F9D9B135441A9FB552ACB9B5041080BC2309E135441F31E55DAC69B5041E4BB6962A0135441FDB21D9CC29B504160DF9127A31354416AAF3553BE9B50412902B12CA713544136CC654EBC9B5041BD0F470EAA1354416E8EF9B5C29B504192E9F061B0135441B7BF1612C89B504107699276B513544178C238C4CD9B50417A9DA04ABB135441BA4959FDD09B5041C93F7EB2BE135441D486F4A6D59B5041C3D0159BC3135441C49E9DE4D89B5041EE3BC2F8C61354413A9556ACDA9B50418CC190E0C81354418FC2F5B8DE9B5041EC51B84ECD1354410AD7A390DE9B5041AE47E1DACD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>381490 - 3178374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E852BFCF650415C8FC2D55E765441C3F5285CF7F650410AD7A3F0477654415C8FC2D5F1F65041000000D0497654418FC2F5E8DBF65041295C8FA253765441A4703DBAE5F650419A99992985765441A4703D7A02F750418FC2F5D880765441C3F5282C03F75041E17A14BE807654416666661600F750419A99999972765441B81E852BFCF650415C8FC2D55E765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF83CA50F6F65041378CCC014A7654416C01ECCEF6F65041E34901074B7654417B7BDD08F7F65041AA22007F4B7654417227AD64F7F6504117CD8D634C765441933B018BF7F65041073744B84C765441BB6F0DC1F7F65041507583494D7654412BE1143EF8F65041B5929F804E765441852A0D9AF8F6504166D517AB4F76544109429C91F9F650418D5D898152765441C5F4B195F9F65041F3648E8752765441C3F5285CF7F650410AD7A3F04776544122A17992F5F6504161C5E6884876544101B1B493F5F6504182B6568B487654412D6AC0A4F5F650412FC98F8548765441CF83CA50F6F65041378CCC014A765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>381490 - 3575359
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E852BFCF650415C8FC2D55E765441C3F5285CF7F650410AD7A3F0477654415C8FC2D5F1F65041000000D0497654418FC2F5E8DBF65041295C8FA253765441A4703DBAE5F650419A99992985765441A4703D7A02F750418FC2F5D880765441C3F5282C03F75041E17A14BE807654416666661600F750419A99999972765441B81E852BFCF650415C8FC2D55E765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF83CA50F6F65041378CCC014A7654416C01ECCEF6F65041E34901074B7654417B7BDD08F7F65041AA22007F4B7654417227AD64F7F6504117CD8D634C765441933B018BF7F65041073744B84C765441BB6F0DC1F7F65041507583494D7654412BE1143EF8F65041B5929F804E765441852A0D9AF8F6504166D517AB4F76544109429C91F9F650418D5D898152765441C5F4B195F9F65041F3648E8752765441C3F5285CF7F650410AD7A3F04776544122A17992F5F6504161C5E6884876544101B1B493F5F6504182B6568B487654412D6AC0A4F5F650412FC98F8548765441CF83CA50F6F65041378CCC014A765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382954 - 3159147
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE27EBF504114AE475129F9544148E17AF493BF504152B81E1533F95441A4703D0A9FBF50413333332336F954417B14AE079FBF5041666666E630F95441B81E856B90BF5041295C8F3228F9544152B81E5584BF504148E17AF420F95441295C8FE27EBF504114AE475129F95441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D2E4E15582BF5041550AA9EA2AF95441295C8FE27EBF504114AE475129F954412D3D6BAD7CBF50418852A69E2CF95441A24507E47CBF5041E98AB60A2EF954419438FD7989BF50412DDD179336F9544148E17AF491BF5041C3F5284C3CF95441FF7107D797BF50410FD82CE73CF9544184B523909DBF50411FFD46033DF954411668469E9EBF5041684591D63BF954411806C7089FBF50416333F83636F954416B3EEAFB9BBF504160D3974B35F95441F5D6DAED93BF50410D53231733F95441E5DEF9AB8DBF50414CE2023F30F954416E1AAFD987BF50419E8FF7782DF95441F4ED026283BF5041F114ED662BF954412527489482BF504184142E0E2BF95441D2E4E15582BF5041550AA9EA2AF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382954 - 3567028
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE27EBF504114AE475129F9544148E17AF493BF504152B81E1533F95441A4703D0A9FBF50413333332336F954417B14AE079FBF5041666666E630F95441B81E856B90BF5041295C8F3228F9544152B81E5584BF504148E17AF420F95441295C8FE27EBF504114AE475129F95441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D2E4E15582BF5041550AA9EA2AF95441295C8FE27EBF504114AE475129F954412D3D6BAD7CBF50418852A69E2CF95441A24507E47CBF5041E98AB60A2EF954419438FD7989BF50412DDD179336F9544148E17AF491BF5041C3F5284C3CF95441FF7107D797BF50410FD82CE73CF9544184B523909DBF50411FFD46033DF954411668469E9EBF5041684591D63BF954411806C7089FBF50416333F83636F954416B3EEAFB9BBF504160D3974B35F95441F5D6DAED93BF50410D53231733F95441E5DEF9AB8DBF50414CE2023F30F954416E1AAFD987BF50419E8FF7782DF95441F4ED026283BF5041F114ED662BF954412527489482BF504184142E0E2BF95441D2E4E15582BF5041550AA9EA2AF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382958 - 3027631
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D55418FC2F5F86BBE50419A999929A20D5541713D0A2757BE50419A999999940D55416666664644BE5041D7A3704D880D5541E17A143E2EBE5041333333F3810D554152B81E3516BE504148E17A047B0D5541F6285CCF0EBE504185EB51C8920D5541
+</a>
+
+<b>
+010600000001000000010300000001000000100000004D843CB612BE5041209C5B3F860D5541B85F8BF211BE5041754708B4880D5541A5202DF633BE504187C5CF35930D554143EB433D47BE504108A5151E9A0D55415410EF4A45BE50415791EB519D0D5541862064E610BE5041557D7E118C0D5541F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D55411C2342643EBE5041B1540594920D55414D843CB612BE5041209C5B3F860D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382958 - 3270269
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D55418FC2F5F86BBE50419A999929A20D5541713D0A2757BE50419A999999940D55416666664644BE5041D7A3704D880D5541E17A143E2EBE5041333333F3810D554152B81E3516BE504148E17A047B0D5541F6285CCF0EBE504185EB51C8920D5541
+</a>
+
+<b>
+010600000001000000010300000001000000100000004D843CB612BE5041209C5B3F860D5541B85F8BF211BE5041754708B4880D5541A5202DF633BE504187C5CF35930D554143EB433D47BE504108A5151E9A0D55415410EF4A45BE50415791EB519D0D5541862064E610BE5041557D7E118C0D5541F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D55411C2342643EBE5041B1540594920D55414D843CB612BE5041209C5B3F860D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383010 - 182094
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002F000000295C8F2271A950419A9999399DFD544185EB51F875A95041A4703D1A97FD5441EC51B84E7CA950411F85EB0192FD5441333333C37CA95041EC51B87E92FD54417B14AE2782A950413333334398FD5441AE47E17A88A9504185EB51C89EFD54419A99990989A95041F6285CFF9CFD5441713D0A5790A95041713D0A9797FD544148E17A4497A950418FC2F56892FD5441CDCCCC0C9AA9504114AE475191FD544148E17A8498A95041A4703DDA90FD5441F6285C0F94A95041A4703DBA8AFD544148E17A948CA950413333337380FD54410AD7A3E08AA95041E17A149E7FFD544114AE474188A950411F85EB817FFD544152B81E0584A95041713D0A6781FD5441E17A140E7EA95041E17A144E85FD5441EC51B8DE78A95041713D0AA789FD54413D0AD7F370A950410AD7A32092FD5441E17A14FE6BA950413333333397FD5441333333436AA95041CDCCCC0C9CFD54415C8FC29566A95041295C8F32A6FD544185EB517865A9504133333343A9FD544152B81E0564A95041D7A3700DADFD544148E17A7461A95041A4703D6AB5FD54413333332361A95041E17A14FEB9FD544152B81E7562A95041F6285C5FBBFD5441713D0A1768A950419A9999F9BCFD5441C3F528BC70A95041AE47E17ABEFD54415C8FC23573A9504166666646BBFD5441713D0A9775A95041C3F528ACB9FD544114AE47C176A950415C8FC2B5B6FD544185EB518877A9504166666636AEFD5441295C8F2279A9504152B81E85AAFD54410AD7A3607BA95041EC51B85EA8FD544152B81EC57CA9504148E17AF4A9FD54411F85EBF17EA9504100000050A7FD5441295C8FD275A950418FC2F5A8A0FD54411F85EBA174A95041713D0A77A3FD5441295C8F1273A95041D7A370DDA6FD5441333333F36FA9504148E17AC4AAFD5441B81E851B6DA9504148E17AE4AEFD5441AE47E18A6AA9504148E17A64AEFD544114AE47D169A9504114AE47F1ACFD5441A4703D9A6BA95041D7A3707DAAFD54410AD7A3006FA950418FC2F568A3FD5441295C8F2271A950419A9999399DFD544105000000295C8F9283A95041D7A370AD90FD54419A99996985A95041AE47E12A8EFD5441713D0A9788A95041295C8F8290FD5441EC51B84E87A95041B81E85CB92FD5441295C8F9283A95041D7A370AD90FD5441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000094C450F875A95041415F3E1A97FD5441851636FE75A95041CDF4801597FD5441339B64277CA95041712CDCD791FD54415C8FC2B578A950418FC2F5288EFD54413333330377A9504185EB51288EFD5441E17A145E72A95041E17A141E93FD5441F6285C2F6BA950417B14AE379BFD5441B81E854B67A9504185EB51C8A5FD5441A4703D2A66A9504185EB5148A9FD5441F6285CDF64A950419A999909ACFD5441F6285C2F62A950410AD7A3B0B4FD5441D48E5F9561A9504163D158BBB7FD54414D929B1262A950419D2BD2D8B7FD54416549B20562A95041B22801B1B9FD544152B81E7562A95041F6285C5FBBFD5441713D0A1768A950419A9999F9BCFD5441C3F528BC70A95041AE47E17ABEFD54415C8FC23573A9504166666646BBFD5441713D0A9775A95041C3F528ACB9FD544114AE47C176A950415C8FC2B5B6FD544185EB518877A9504166666636AEFD5441295C8F2279A9504152B81E85AAFD54410AD7A3607BA95041EC51B85EA8FD5441E21862907CA9504119C8FB9AA5FD5441A045443D76A95041805EC6F6A0FD5441BB92C1C175A95041B1CC46EAA3FD54419FEB6B6974A9504181AB63B5A5FD5441171957D773A95041A954E541A7FD544157F8969470A950418D7B2921ABFD5441D03EB5666DA9504148E0B80FB0FD5441AC3831CA6CA95041E413281AB0FD5441C0998B426CA950415C411388AFFD5441F45D6C676BA95041E0702A2AAFFD54414885D3386AA9504170A26D00AFFD544144E2D54869A95041E8CF586EAEFD544138E0A91469A95041ACC57C69ADFD5441E015455369A95041E0895D8EACFD5441F0BA6E776AA9504155144B0CABFD5441C8DF86226EA95041B92B752EA3FD5441295C8F2271A950419A9999399DFD544194C450F875A95041415F3E1A97FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383010 - 356418
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002F000000295C8F2271A950419A9999399DFD544185EB51F875A95041A4703D1A97FD5441EC51B84E7CA950411F85EB0192FD5441333333C37CA95041EC51B87E92FD54417B14AE2782A950413333334398FD5441AE47E17A88A9504185EB51C89EFD54419A99990989A95041F6285CFF9CFD5441713D0A5790A95041713D0A9797FD544148E17A4497A950418FC2F56892FD5441CDCCCC0C9AA9504114AE475191FD544148E17A8498A95041A4703DDA90FD5441F6285C0F94A95041A4703DBA8AFD544148E17A948CA950413333337380FD54410AD7A3E08AA95041E17A149E7FFD544114AE474188A950411F85EB817FFD544152B81E0584A95041713D0A6781FD5441E17A140E7EA95041E17A144E85FD5441EC51B8DE78A95041713D0AA789FD54413D0AD7F370A950410AD7A32092FD5441E17A14FE6BA950413333333397FD5441333333436AA95041CDCCCC0C9CFD54415C8FC29566A95041295C8F32A6FD544185EB517865A9504133333343A9FD544152B81E0564A95041D7A3700DADFD544148E17A7461A95041A4703D6AB5FD54413333332361A95041E17A14FEB9FD544152B81E7562A95041F6285C5FBBFD5441713D0A1768A950419A9999F9BCFD5441C3F528BC70A95041AE47E17ABEFD54415C8FC23573A9504166666646BBFD5441713D0A9775A95041C3F528ACB9FD544114AE47C176A950415C8FC2B5B6FD544185EB518877A9504166666636AEFD5441295C8F2279A9504152B81E85AAFD54410AD7A3607BA95041EC51B85EA8FD544152B81EC57CA9504148E17AF4A9FD54411F85EBF17EA9504100000050A7FD5441295C8FD275A950418FC2F5A8A0FD54411F85EBA174A95041713D0A77A3FD5441295C8F1273A95041D7A370DDA6FD5441333333F36FA9504148E17AC4AAFD5441B81E851B6DA9504148E17AE4AEFD5441AE47E18A6AA9504148E17A64AEFD544114AE47D169A9504114AE47F1ACFD5441A4703D9A6BA95041D7A3707DAAFD54410AD7A3006FA950418FC2F568A3FD5441295C8F2271A950419A9999399DFD544105000000295C8F9283A95041D7A370AD90FD54419A99996985A95041AE47E12A8EFD5441713D0A9788A95041295C8F8290FD5441EC51B84E87A95041B81E85CB92FD5441295C8F9283A95041D7A370AD90FD5441
+</a>
+
+<b>
+0106000000010000000103000000010000002900000094C450F875A95041415F3E1A97FD5441851636FE75A95041CDF4801597FD5441339B64277CA95041712CDCD791FD54415C8FC2B578A950418FC2F5288EFD54413333330377A9504185EB51288EFD5441E17A145E72A95041E17A141E93FD5441F6285C2F6BA950417B14AE379BFD5441B81E854B67A9504185EB51C8A5FD5441A4703D2A66A9504185EB5148A9FD5441F6285CDF64A950419A999909ACFD5441F6285C2F62A950410AD7A3B0B4FD5441D48E5F9561A9504163D158BBB7FD54414D929B1262A950419D2BD2D8B7FD54416549B20562A95041B22801B1B9FD544152B81E7562A95041F6285C5FBBFD5441713D0A1768A950419A9999F9BCFD5441C3F528BC70A95041AE47E17ABEFD54415C8FC23573A9504166666646BBFD5441713D0A9775A95041C3F528ACB9FD544114AE47C176A950415C8FC2B5B6FD544185EB518877A9504166666636AEFD5441295C8F2279A9504152B81E85AAFD54410AD7A3607BA95041EC51B85EA8FD5441E21862907CA9504119C8FB9AA5FD5441A045443D76A95041805EC6F6A0FD5441BB92C1C175A95041B1CC46EAA3FD54419FEB6B6974A9504181AB63B5A5FD5441171957D773A95041A954E541A7FD544157F8969470A950418D7B2921ABFD5441D03EB5666DA9504148E0B80FB0FD5441AC3831CA6CA95041E413281AB0FD5441C0998B426CA950415C411388AFFD5441F45D6C676BA95041E0702A2AAFFD54414885D3386AA9504170A26D00AFFD544144E2D54869A95041E8CF586EAEFD544138E0A91469A95041ACC57C69ADFD5441E015455369A95041E0895D8EACFD5441F0BA6E776AA9504155144B0CABFD5441C8DF86226EA95041B92B752EA3FD5441295C8F2271A950419A9999399DFD544194C450F875A95041415F3E1A97FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383095 - 182096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F5289C41A95041CDCCCC7C46FE5441666666863BA95041D7A3700D44FE54411F85EBB13CA95041333333C34EFE54418FC2F5083DA9504152B81EB55DFE54417B14AE273EA950410AD7A36064FE54419A99994944A9504185EB51F86BFE5441AE47E16A4CA950410AD7A33078FE5441F6285C3F4EA95041713D0A7778FE5441333333D350A95041F6285CAF75FE5441C3F5287C50A9504152B81EB573FE544114AE47214FA950411F85EBD170FE544114AE47014BA95041AE47E15A6CFE544148E17A5448A950410AD7A3506AFE5441AE47E12A45A95041B81E853B60FE5441666666C644A95041333333835DFE5441713D0A7741A95041EC51B84E56FE544152B81ED540A95041333333334FFE5441C3F5289C41A95041CDCCCC7C46FE5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000AE47E12A45A95041B81E853B60FE54414166865B44A95041CF87C2255DFE5441C30AD8C340A950414A1E340356FE5441EC5FE11A40A95041695AFFDF4EFE5441CCADD61341A95041063EAF4746FE5441EFA9D7F840A95041ED35723B46FE54414976D7F33CA9504130C9F56844FE5441D19F0BA73DA95041BFEDCDDC4EFE5441D19F0BA73DA95041CFCCE16A5AFE5441BBB4842B3EA950419AA58F1262FE54412969323345A950415B6F46216BFE5441EA03AE074DA95041EB7A799478FE54418DC65B3F4EA95041BC460A7778FE5441242B33D350A950411AFA5BAF75FE54419895F8AB50A95041018932CB74FE544112A0287C50A95041C7261EB573FE5441E8BCB82D50A9504140D7F70D73FE544114AE47214FA950411F85EBD170FE544114AE47014BA95041AE47E15A6CFE5441E13DAEB747A9504193E8FEEF69FE5441AE47E12A45A95041B81E853B60FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383095 - 375784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F5289C41A95041CDCCCC7C46FE5441666666863BA95041D7A3700D44FE54411F85EBB13CA95041333333C34EFE54418FC2F5083DA9504152B81EB55DFE54417B14AE273EA950410AD7A36064FE54419A99994944A9504185EB51F86BFE5441AE47E16A4CA950410AD7A33078FE5441F6285C3F4EA95041713D0A7778FE5441333333D350A95041F6285CAF75FE5441C3F5287C50A9504152B81EB573FE544114AE47214FA950411F85EBD170FE544114AE47014BA95041AE47E15A6CFE544148E17A5448A950410AD7A3506AFE5441AE47E12A45A95041B81E853B60FE5441666666C644A95041333333835DFE5441713D0A7741A95041EC51B84E56FE544152B81ED540A95041333333334FFE5441C3F5289C41A95041CDCCCC7C46FE5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000AE47E12A45A95041B81E853B60FE54414166865B44A95041CF87C2255DFE5441C30AD8C340A950414A1E340356FE5441EC5FE11A40A95041695AFFDF4EFE5441CCADD61341A95041063EAF4746FE5441EFA9D7F840A95041ED35723B46FE54414976D7F33CA9504130C9F56844FE5441D19F0BA73DA95041BFEDCDDC4EFE5441D19F0BA73DA95041CFCCE16A5AFE5441BBB4842B3EA950419AA58F1262FE54412969323345A950415B6F46216BFE5441EA03AE074DA95041EB7A799478FE54418DC65B3F4EA95041BC460A7778FE5441242B33D350A950411AFA5BAF75FE54419895F8AB50A95041018932CB74FE544112A0287C50A95041C7261EB573FE5441E8BCB82D50A9504140D7F70D73FE544114AE47214FA950411F85EBD170FE544114AE47014BA95041AE47E15A6CFE5441E13DAEB747A9504193E8FEEF69FE5441AE47E12A45A95041B81E853B60FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383362 - 32482
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000005C8FC2B509B7504148E17A54FF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541D7A370DD06B75041E17A145EFF1155417B14AEE705B750410AD7A370FF1155419A99991905B750411F85EBA1FF115541C3F528DC04B75041333333B3FF1155418FC2F55804B750413D0AD7C3FF115541713D0A0702B75041EC51B82E001255411F85EBC101B75041713D0A57001255418FC2F54801B7504152B81E75001255410000009000B75041295C8F72001255411F85EB0100B75041CDCCCC2C0012554152B81E15FEB650417B14AEC7FF11554185EB51E8FEB650413D0AD7030212554114AE47C100B7504148E17A0407125541CDCCCC5C03B750415C8FC2D50A1255410AD7A3800AB75041713D0AE709125541F6285CCF0DB750419A9999F9081255415C8FC23511B7504148E17A3407125541C3F528FC1AB750417B14AE6700125541B81E85AB1BB7504185EB51D8FE115541E17A14DE1AB750413D0AD703F91155418FC2F5881AB75041AE47E19AF6115541E17A147E1AB75041EC51B8AEF611554148E17A141AB75041A4703DEAF6115541666666A618B7504148E17A24F7115541713D0A8713B75041CDCCCC4CFB11554152B81E0513B75041F6285C9FFB11554152B81E3512B75041AE47E1BAFB11554185EB511811B75041D7A3702DFC115541E17A149E10B750413D0AD763FC115541AE47E15A10B7504185EB51F8FC115541CDCCCC3C10B7504114AE4771FD115541B81E85CB0FB750413D0AD7D3FD115541666666860EB7504185EB5128FE115541F6285C4F0DB75041713D0A27FE1155415C8FC2B509B7504148E17A54FF115541
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000083F400D010B75041DD649F4DFC115541B4C0BB3D10B75041F0C8866DFD115541CDCCCC3C10B7504114AE4771FD1155417D1E0E3B10B750415051CC72FD115541B81E85CB0FB750413D0AD7D3FD1155413AEB8FBD0FB75041748277D7FD11554180D7DF910FB75041BD9BD1E2FD115541666666860EB7504185EB5128FE115541E508CA810EB7504102104D28FE115541BB1650D309B750415652D04AFF115541D2F13F7F09B75041C087266EFF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541D7A370DD06B75041E17A145EFF11554147C343FE05B75041D733EF6EFF115541984701B405B75041B03FFF7CFF1155419A99991905B750411F85EBA1FF115541C3F528DC04B75041333333B3FF1155418FC2F55804B750413D0AD7C3FF1155410FFCDE3802B75041E5A7C0250012554114F228FF01B7504138135133001255411F85EBC101B75041713D0A57001255418FC2F54801B7504152B81E75001255410000009000B75041295C8F72001255413CF7423E00B75041515B6D4A00125541790DC328FEB6504124DEB5CBFF115541ED9E4546FFB650411AC0D0E6021255412255A17D08B75041D723E190011255414DBF38AB08B750413794AF6E01125541E85C08F514B75041373C1DABFC115541D20B9D5B15B75041DE67EE4FFC115541302AADE01AB7504128D7B316F9115541E17A14DE1AB750413D0AD703F9115541312C288B1AB75041E0B6CDAAF6115541416E6D7E1AB75041A71D16AEF6115541E17A147E1AB75041EC51B8AEF611554148E17A141AB75041A4703DEAF611554152F62FC818B7504134D01A1FF71155413DBF8ED613B750411D25430CFB115541713D0A8713B75041CDCCCC4CFB11554104EBCA3E13B7504123FCB57AFB11554152B81E0513B75041F6285C9FFB115541BF022AB212B75041A4F055AAFB11554183F400D010B75041DD649F4DFC115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383362 - 71405
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000005C8FC2B509B7504148E17A54FF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541D7A370DD06B75041E17A145EFF1155417B14AEE705B750410AD7A370FF1155419A99991905B750411F85EBA1FF115541C3F528DC04B75041333333B3FF1155418FC2F55804B750413D0AD7C3FF115541713D0A0702B75041EC51B82E001255411F85EBC101B75041713D0A57001255418FC2F54801B7504152B81E75001255410000009000B75041295C8F72001255411F85EB0100B75041CDCCCC2C0012554152B81E15FEB650417B14AEC7FF11554185EB51E8FEB650413D0AD7030212554114AE47C100B7504148E17A0407125541CDCCCC5C03B750415C8FC2D50A1255410AD7A3800AB75041713D0AE709125541F6285CCF0DB750419A9999F9081255415C8FC23511B7504148E17A3407125541C3F528FC1AB750417B14AE6700125541B81E85AB1BB7504185EB51D8FE115541E17A14DE1AB750413D0AD703F91155418FC2F5881AB75041AE47E19AF6115541E17A147E1AB75041EC51B8AEF611554148E17A141AB75041A4703DEAF6115541666666A618B7504148E17A24F7115541713D0A8713B75041CDCCCC4CFB11554152B81E0513B75041F6285C9FFB11554152B81E3512B75041AE47E1BAFB11554185EB511811B75041D7A3702DFC115541E17A149E10B750413D0AD763FC115541AE47E15A10B7504185EB51F8FC115541CDCCCC3C10B7504114AE4771FD115541B81E85CB0FB750413D0AD7D3FD115541666666860EB7504185EB5128FE115541F6285C4F0DB75041713D0A27FE1155415C8FC2B509B7504148E17A54FF115541
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000083F400D010B75041DD649F4DFC115541B4C0BB3D10B75041F0C8866DFD115541CDCCCC3C10B7504114AE4771FD1155417D1E0E3B10B750415051CC72FD115541B81E85CB0FB750413D0AD7D3FD1155413AEB8FBD0FB75041748277D7FD11554180D7DF910FB75041BD9BD1E2FD115541666666860EB7504185EB5128FE115541E508CA810EB7504102104D28FE115541BB1650D309B750415652D04AFF115541D2F13F7F09B75041C087266EFF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541D7A370DD06B75041E17A145EFF11554147C343FE05B75041D733EF6EFF115541984701B405B75041B03FFF7CFF1155419A99991905B750411F85EBA1FF115541C3F528DC04B75041333333B3FF1155418FC2F55804B750413D0AD7C3FF1155410FFCDE3802B75041E5A7C0250012554114F228FF01B7504138135133001255411F85EBC101B75041713D0A57001255418FC2F54801B7504152B81E75001255410000009000B75041295C8F72001255413CF7423E00B75041515B6D4A00125541790DC328FEB6504124DEB5CBFF115541ED9E4546FFB650411AC0D0E6021255412255A17D08B75041D723E190011255414DBF38AB08B750413794AF6E01125541E85C08F514B75041373C1DABFC115541D20B9D5B15B75041DE67EE4FFC115541302AADE01AB7504128D7B316F9115541E17A14DE1AB750413D0AD703F9115541312C288B1AB75041E0B6CDAAF6115541416E6D7E1AB75041A71D16AEF6115541E17A147E1AB75041EC51B8AEF611554148E17A141AB75041A4703DEAF611554152F62FC818B7504134D01A1FF71155413DBF8ED613B750411D25430CFB115541713D0A8713B75041CDCCCC4CFB11554104EBCA3E13B7504123FCB57AFB11554152B81E0513B75041F6285C9FFB115541BF022AB212B75041A4F055AAFB11554183F400D010B75041DD649F4DFC115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>384255 - 2925933
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001400000000000010A0A35041713D0AF756FD54418FC2F5C8ABA35041EC51B8DE56FD544114AE47C1AFA35041713D0AD756FD5441AE47E14ABAA35041D7A3708D5DFD544114AE4701C0A350418FC2F5B857FD54418FC2F5C8D5A3504148E17A6441FD544114AE47C1D5A35041713D0AF73FFD544148E17AE4C3A35041A4703D5A2EFD544185EB5188C1A3504185EB51782DFD5441CDCCCC2CB1A35041B81E855B31FD54418FC2F54898A350416666664637FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD54410AD7A3A084A35041C3F528CC3EFD54413333337384A35041713D0AC745FD54418FC2F5E884A3504148E17AC44BFD5441EC51B89E86A350417B14AE1752FD5441666666A68AA35041D7A3703D5CFD544100000010A0A35041713D0AF756FD5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003A14B58086A3504156896C1A4EFD54412F700AE195A35041FC8E22EC36FD54410A44265095A350416DE9DFD636FD54419A061C9994A35041BFA1FEBB36FD544135F26D3194A35041CB78A2AC36FD5441123263B68EA350410CAE42DF35FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD54410AD7A3A084A35041C3F528CC3EFD54413333337384A35041713D0AC745FD54418FC2F5E884A3504148E17AC44BFD5441EC51B89E86A350417B14AE1752FD5441666666A68AA35041D7A3703D5CFD54414E21C1588BA3504183E6D1005CFD54413A14B58086A3504156896C1A4EFD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>384255 - 3725721
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001400000000000010A0A35041713D0AF756FD54418FC2F5C8ABA35041EC51B8DE56FD544114AE47C1AFA35041713D0AD756FD5441AE47E14ABAA35041D7A3708D5DFD544114AE4701C0A350418FC2F5B857FD54418FC2F5C8D5A3504148E17A6441FD544114AE47C1D5A35041713D0AF73FFD544148E17AE4C3A35041A4703D5A2EFD544185EB5188C1A3504185EB51782DFD5441CDCCCC2CB1A35041B81E855B31FD54418FC2F54898A350416666664637FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD54410AD7A3A084A35041C3F528CC3EFD54413333337384A35041713D0AC745FD54418FC2F5E884A3504148E17AC44BFD5441EC51B89E86A350417B14AE1752FD5441666666A68AA35041D7A3703D5CFD544100000010A0A35041713D0AF756FD5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000003A14B58086A3504156896C1A4EFD54412F700AE195A35041FC8E22EC36FD54410A44265095A350416DE9DFD636FD54419A061C9994A35041BFA1FEBB36FD544135F26D3194A35041CB78A2AC36FD5441123263B68EA350410CAE42DF35FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD54410AD7A3A084A35041C3F528CC3EFD54413333337384A35041713D0AC745FD54418FC2F5E884A3504148E17AC44BFD5441EC51B89E86A350417B14AE1752FD5441666666A68AA35041D7A3703D5CFD54414E21C1588BA3504183E6D1005CFD54413A14B58086A3504156896C1A4EFD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387015 - 1720912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999D92EB45041B81E858BCE2C5541295C8F6234B45041A4703DEAC62C5541B81E851B2EB45041713D0AF7C52C554185EB514820B45041F6285CDFC42C5541AE47E19A1FB45041E17A14CEC42C5541E17A14CE1BB45041AE47E11ACA2C5541D7A370AD16B45041B81E85EBD02C5541F6285C7F13B450411F85EB41D42C55413D0AD75318B4504100000060DA2C55413D0AD7131AB4504185EB5118DC2C55417B14AE0720B45041CDCCCC6CE02C5541AE47E10A22B4504166666626DE2C55415C8FC2052BB45041B81E856BD32C55419A9999D92EB45041B81E858BCE2C5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCE3AE9E1AB45041E48820AECB2C55411283C0EA16B45041BA490CE2D02C554196438BDC13B450412DB29D67D42C55417B14AE5719B4504160E5D092DA2C55415EBA493422B450415C8FC2C5DF2C55419318047624B4504137894150E02C5541C520B0DA2CB45041F2D24D72E32C5541AAF1D23530B45041CBA145D6E22C5541AAF1D22D35B45041D578E9FEE32C55413AF67A963BB45041AFACD04AD92C5541713D0ABF3EB45041736891F5D32C55414E6210F843B450419EEFA75EC92C55416891ED043DB450412B8716C1C82C5541FED4780930B450411D5A6473C62C5541295C8F4225B4504196438BCCC52C55410CD3132B1FB45041ECE0036AC52C5541E17A14CE1BB45041AE47E11ACA2C5541BCE3AE9E1AB45041E48820AECB2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387015 - 4366387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999D92EB45041B81E858BCE2C5541295C8F6234B45041A4703DEAC62C5541B81E851B2EB45041713D0AF7C52C554185EB514820B45041F6285CDFC42C5541AE47E19A1FB45041E17A14CEC42C5541E17A14CE1BB45041AE47E11ACA2C5541D7A370AD16B45041B81E85EBD02C5541F6285C7F13B450411F85EB41D42C55413D0AD75318B4504100000060DA2C55413D0AD7131AB4504185EB5118DC2C55417B14AE0720B45041CDCCCC6CE02C5541AE47E10A22B4504166666626DE2C55415C8FC2052BB45041B81E856BD32C55419A9999D92EB45041B81E858BCE2C5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCE3AE9E1AB45041E48820AECB2C55411283C0EA16B45041BA490CE2D02C554196438BDC13B450412DB29D67D42C55417B14AE5719B4504160E5D092DA2C55415EBA493422B450415C8FC2C5DF2C55419318047624B4504137894150E02C5541C520B0DA2CB45041F2D24D72E32C5541AAF1D23530B45041CBA145D6E22C5541AAF1D22D35B45041D578E9FEE32C55413AF67A963BB45041AFACD04AD92C5541713D0ABF3EB45041736891F5D32C55414E6210F843B450419EEFA75EC92C55416891ED043DB450412B8716C1C82C5541FED4780930B450411D5A6473C62C5541295C8F4225B4504196438BCCC52C55410CD3132B1FB45041ECE0036AC52C5541E17A14CE1BB45041AE47E11ACA2C5541BCE3AE9E1AB45041E48820AECB2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387424 - 2991175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F58856F6504148E17AF42B765441713D0A275FF650415C8FC2A52976544152B81E0563F650410AD7A3601A7654411F85EB915DF65041D7A3709DF87554413D0AD76358F650417B14AE87D875544114AE47C155F650415C8FC2B5D87554417B14AEE74EF650418FC2F5B8D975544114AE47514AF65041E17A14CEDA7554419A99997945F65041C3F5286CDC75544152B81E1543F65041000000E0DD755441000000504FF65041295C8F022E7654418FC2F58856F6504148E17AF42B765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000096A3F43B4FF650413EEF9DDD2D765441D8A3192C5FF65041F1F2C79129765441FC017F0363F65041D3909A671A765441FF0416BF5CF65041C7F18783F3755441CC43887158F650412C7F7DDCD875544117219A2E53F65041608C1E17D9755441392333FC4DF65041349086F0D9755441E80472DC49F650418BF41AF5DA755441D3AE1B2547F6504168EE5CDDDB7554417313134245F650411643E18DDC75544145ADB41B44F65041D878A540DD75544182935F1843F650414C01CBEDDD75544118FDB38C49F65041BC5FED3F08765441DFFC0ED04CF6504144C373A11D76544196A3F43B4FF650413EEF9DDD2D765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387424 - 3306376
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F58856F6504148E17AF42B765441713D0A275FF650415C8FC2A52976544152B81E0563F650410AD7A3601A7654411F85EB915DF65041D7A3709DF87554413D0AD76358F650417B14AE87D875544114AE47C155F650415C8FC2B5D87554417B14AEE74EF650418FC2F5B8D975544114AE47514AF65041E17A14CEDA7554419A99997945F65041C3F5286CDC75544152B81E1543F65041000000E0DD755441000000504FF65041295C8F022E7654418FC2F58856F6504148E17AF42B765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000096A3F43B4FF650413EEF9DDD2D765441D8A3192C5FF65041F1F2C79129765441FC017F0363F65041D3909A671A765441FF0416BF5CF65041C7F18783F3755441CC43887158F650412C7F7DDCD875544117219A2E53F65041608C1E17D9755441392333FC4DF65041349086F0D9755441E80472DC49F650418BF41AF5DA755441D3AE1B2547F6504168EE5CDDDB7554417313134245F650411643E18DDC75544145ADB41B44F65041D878A540DD75544182935F1843F650414C01CBEDDD75544118FDB38C49F65041BC5FED3F08765441DFFC0ED04CF6504144C373A11D76544196A3F43B4FF650413EEF9DDD2D765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>388207 - 2959703
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81EF5B68150418FC2F508570F5541CDCCCCACC08150415C8FC295620F554148E17A14C3815041F6285C4F630F55413D0AD773D6815041E17A149E5D0F5541A4703D3ADB8150411F85EB715D0F55418FC2F588DF815041A4703D4A5D0F55417B14AE37EE81504148E17AC45C0F5541F6285C2FDF81504114AE47D1400F554152B81EF5B68150418FC2F508570F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000064652ADECF815041CE4EAC9E3D0F5541AA0B09C1B38150411359F01D530F55412452536DB9815041C17F8EF8590F55411736068ED68150419FEC7C95450F554164652ADECF815041CE4EAC9E3D0F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>388207 - 3618854
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81EF5B68150418FC2F508570F5541CDCCCCACC08150415C8FC295620F554148E17A14C3815041F6285C4F630F55413D0AD773D6815041E17A149E5D0F5541A4703D3ADB8150411F85EB715D0F55418FC2F588DF815041A4703D4A5D0F55417B14AE37EE81504148E17AC45C0F5541F6285C2FDF81504114AE47D1400F554152B81EF5B68150418FC2F508570F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000064652ADECF815041CE4EAC9E3D0F5541AA0B09C1B38150411359F01D530F55412452536DB9815041C17F8EF8590F55411736068ED68150419FEC7C95450F554164652ADECF815041CE4EAC9E3D0F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133745 - 2988031
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000002000000270000009A999919ED08514133333373198B5441EC51B8BEF8085141295C8F92228B54411F85EBB1FF08514185EB5168268B54413D0AD763060951418FC2F5882A8B544114AE479114095141713D0A77348B5441EC51B8FE2C095141713D0AB7428B5441713D0A072E09514185EB5118428B544114AE47112C095141AE47E1DA0E8B54415C8FC2852A095141D7A3700DE78A5441AE47E17A2A095141F6285CEFE58A5441D7A3707D290951410AD7A3F0DA8A54413D0AD723290951413D0AD703D18A54410AD7A32025095141D7A3707DC28A544114AE473124095141D7A3701DBF8A5441295C8FB220095141EC51B88EB28A5441D7A3705D1F095141D7A370DDAD8A544185EB51C8EC085141EC51B8FEB88A54413D0AD703EE085141EC51B8EEBA8A54417B14AEB7F10851411F85EBB1C58A5441EC51B88EF008514152B81EC5CB8A5441A4703DAAF30851419A999919CD8A5441AE47E17AF40851417B14AEB7CD8A54411F85EB21F5085141D7A3709DCF8A5441AE47E15AF40851410AD7A310D68A5441F6285C0FF30851415C8FC295D68A54411F85EBF1EC085141E17A144ED88A544166666656E50851417B14AE17DA8A54410AD7A350E408514185EB51D8DA8A54418FC2F5B8DF085141713D0AA7DF8A5441666666D6DE08514166666636E48A544166666676E00851413D0AD753E88A5441A4703DAAE20851419A999959EE8A5441AE47E1DAE2085141295C8FB2F38A5441AE47E15AE2085141A4703D0AF88A544152B81E45E40851419A9999F9FD8A544139B6E478E6085141105836EA028B544178FE5732E9085141349AAD06098B54413D0AD753EA0851418FC2F5C80C8B54419A999919ED08514133333373198B5441110000008FC2F5681709514152B81E45CE8A54417B14AE2712095141CDCCCC0CD28A5441AE47E10A0E09514133333323D48A54413D0AD7230B0951418FC2F518D98A54418FC2F5A80C0951413D0AD7F3DF8A544114AE47610D0951419A999919E78A54413333339309095141E17A14BEE78A54419A9999490609514152B81E15D98A54417B14AEC70C09514185EB51F8C98A54419A9999C91609514152B81EE5C58A5441333333631C095141F6285C9FC38A5441B81E85CB1C095141CDCCCC7CC48A5441E17A14FE1E09514185EB5118C98A544148E17A4421095141713D0A97D58A54415C8FC2251B095141CDCCCC4CD68A5441713D0AB7190951410AD7A300CE8A54418FC2F5681709514152B81E45CE8A5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BB5F400FF4085141C78DEAE61E8B5441DA537DA2F5085141BB67CE22208B54413ED8884FF3085141B1B6FD7BD68A54411F85EBF1EC085141E17A144ED88A544166666656E50851417B14AE17DA8A54410AD7A350E408514185EB51D8DA8A54418FC2F5B8DF085141713D0AA7DF8A5441666666D6DE08514166666636E48A544166666676E00851413D0AD753E88A5441A4703DAAE20851419A999959EE8A5441AE47E1DAE2085141295C8FB2F38A5441AE47E15AE2085141A4703D0AF88A544152B81E45E40851419A9999F9FD8A544138B6E478E60851410C5836EA028B544179FE5732E9085141379AAD06098B54413D0AD753EA0851418FC2F5C80C8B54419A999919ED08514133333373198B5441BB5F400FF4085141C78DEAE61E8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133745 - 3408736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000002000000270000009A999919ED08514133333373198B5441EC51B8BEF8085141295C8F92228B54411F85EBB1FF08514185EB5168268B54413D0AD763060951418FC2F5882A8B544114AE479114095141713D0A77348B5441EC51B8FE2C095141713D0AB7428B5441713D0A072E09514185EB5118428B544114AE47112C095141AE47E1DA0E8B54415C8FC2852A095141D7A3700DE78A5441AE47E17A2A095141F6285CEFE58A5441D7A3707D290951410AD7A3F0DA8A54413D0AD723290951413D0AD703D18A54410AD7A32025095141D7A3707DC28A544114AE473124095141D7A3701DBF8A5441295C8FB220095141EC51B88EB28A5441D7A3705D1F095141D7A370DDAD8A544185EB51C8EC085141EC51B8FEB88A54413D0AD703EE085141EC51B8EEBA8A54417B14AEB7F10851411F85EBB1C58A5441EC51B88EF008514152B81EC5CB8A5441A4703DAAF30851419A999919CD8A5441AE47E17AF40851417B14AEB7CD8A54411F85EB21F5085141D7A3709DCF8A5441AE47E15AF40851410AD7A310D68A5441F6285C0FF30851415C8FC295D68A54411F85EBF1EC085141E17A144ED88A544166666656E50851417B14AE17DA8A54410AD7A350E408514185EB51D8DA8A54418FC2F5B8DF085141713D0AA7DF8A5441666666D6DE08514166666636E48A544166666676E00851413D0AD753E88A5441A4703DAAE20851419A999959EE8A5441AE47E1DAE2085141295C8FB2F38A5441AE47E15AE2085141A4703D0AF88A544152B81E45E40851419A9999F9FD8A544139B6E478E6085141105836EA028B544178FE5732E9085141349AAD06098B54413D0AD753EA0851418FC2F5C80C8B54419A999919ED08514133333373198B5441110000008FC2F5681709514152B81E45CE8A54417B14AE2712095141CDCCCC0CD28A5441AE47E10A0E09514133333323D48A54413D0AD7230B0951418FC2F518D98A54418FC2F5A80C0951413D0AD7F3DF8A544114AE47610D0951419A999919E78A54413333339309095141E17A14BEE78A54419A9999490609514152B81E15D98A54417B14AEC70C09514185EB51F8C98A54419A9999C91609514152B81EE5C58A5441333333631C095141F6285C9FC38A5441B81E85CB1C095141CDCCCC7CC48A5441E17A14FE1E09514185EB5118C98A544148E17A4421095141713D0A97D58A54415C8FC2251B095141CDCCCC4CD68A5441713D0AB7190951410AD7A300CE8A54418FC2F5681709514152B81E45CE8A5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BB5F400FF4085141C78DEAE61E8B5441DA537DA2F5085141BB67CE22208B54413ED8884FF3085141B1B6FD7BD68A54411F85EBF1EC085141E17A144ED88A544166666656E50851417B14AE17DA8A54410AD7A350E408514185EB51D8DA8A54418FC2F5B8DF085141713D0AA7DF8A5441666666D6DE08514166666636E48A544166666676E00851413D0AD753E88A5441A4703DAAE20851419A999959EE8A5441AE47E1DAE2085141295C8FB2F38A5441AE47E15AE2085141A4703D0AF88A544152B81E45E40851419A9999F9FD8A544138B6E478E60851410C5836EA028B544179FE5732E9085141379AAD06098B54413D0AD753EA0851418FC2F5C80C8B54419A999919ED08514133333373198B5441BB5F400FF4085141C78DEAE61E8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>394916 - 261968
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000030000000103000000050000002C010000AE47E1CAE19E5041EC51B8FEF81B544148E17AD4E09E5041295C8F42F91B5441D7A3706DDE9E5041F6285C1FFA1B54417B14AEA7D29E50411F85EB91FF1B54415C8FC2C5CC9E5041295C8F62021C5441AE47E10AC49E5041AE47E17A051C54417B14AEE7BB9E504133333373081C5441AE47E1FAB79E5041713D0A37091C5441B81E851BB19E504114AE47910A1C5441D7A370CDAC9E5041B81E857B0A1C5441AE47E1EAAB9E5041CDCCCC9C0A1C54418FC2F508A89E50418FC2F5B80B1C544152B81EC59F9E5041000000300E1C5441666666F6A09E5041A4703D6A0A1C5441CDCCCC9C9C9E5041EC51B8EE091C5441B81E858B9C9E5041CDCCCCEC091C54415C8FC205989E504114AE47F1081C54418FC2F5D8949E5041295C8F42081C544185EB51C8949E5041C3F528FC0C1C544185EB51F8929E50413D0AD7D30D1C544185EB51A88F9E5041666666760F1C54411F85EB118D9E50419A999929111C54413D0AD7A38B9E5041D7A3703D121C544114AE47B1899E50415C8FC2E5131C544185EB51A8899E5041F6285CEF131C544133333313879E50410AD7A390161C5441AE47E12A859E5041CDCCCC9C171C54419A999959839E5041C3F528DC191C54413D0AD7F3829E5041B81E851B1C1C544166666696829E50418FC2F5F81F1C5441713D0A27839E504166666666221C54418FC2F5C8839E5041B81E856B241C5441E17A144E849E5041C3F528DC251C5441A4703D3A859E504133333343291C54410AD7A3B0859E5041295C8F822B1C5441F6285C7F869E50411F85EBB12D1C54417B14AE37879E50415C8FC2E5301C5441EC51B80E879E50410AD7A360331C544185EB51A8869E5041B81E85DB351C5441D7A3707D859E5041C3F5289C371C544185EB5158829E50411F85EBB1391C5441D7A3705D819E50411F85EB713A1C54413D0AD753809E50410AD7A3403B1C5441CDCCCC3C7F9E5041E17A14BE3B1C54419A9999397F9E504114AE47A13C1C5441C3F528BC809E5041C3F528DC3D1C54417B14AE37839E50415C8FC2753D1C5441B81E85DB839E50411F85EBD13E1C5441B81E85DB839E50418FC2F538411C54411F85EBD1849E5041713D0AA7461C5441713D0AE7859E5041E17A144E4B1C54415C8FC2D5879E504114AE47A14F1C5441B81E85AB899E50419A999959521C5441000000C08C9E50419A9999B9551C544114AE47818B9E504148E17A045A1C5441333333538C9E5041F6285C4F5E1C5441B81E855B8A9E50413D0AD763611C5441D7A3707D8A9E50417B14AE67641C5441C3F528DC8A9E5041E17A14CE641C5441AE47E1DA899E50417B14AE87661C54410AD7A3A0889E50413D0AD7C3671C544148E17AF4859E50418FC2F5C8681C54411F85EB61839E50418FC2F5C8681C54419A999919819E504152B81E256A1C54410AD7A320809E504114AE47F16B1C544148E17A84809E5041295C8FE26D1C5441666666867E9E50413D0AD7D36F1C544148E17A547E9E504185EB5108731C5441295C8F027F9E50415C8FC2C5761C5441B81E856B809E5041666666367C1C5441B81E851B779E50418FC2F5387D1C5441295C8F02739E5041F6285C3F7E1C54415C8FC2156C9E50419A9999297E1C544152B81E956A9E5041295C8F927E1C54418FC2F5B86A9E50413D0AD733801C5441C3F5286C6D9E5041AE47E17A801C5441D7A3706D719E5041D7A3708D811C544185EB5168769E50418FC2F5C8811C544114AE47817A9E50411F85EB51831C54411F85EB817C9E5041295C8F22831C5441295C8F527E9E5041713D0AB7821C5441666666A6809E50417B14AE87821C5441713D0A07859E5041D7A3708D831C54411F85EBD1879E5041333333C3821C54415C8FC225899E504185EB51287F1C5441E17A14FE889E5041EC51B83E7C1C544114AE47118A9E5041333333A3791C5441EC51B8BE8E9E504114AE4791771C5441AE47E16A949E5041F6285C7F751C544114AE4741979E5041295C8F32731C544114AE4781919E5041CDCCCCAC6D1C5441AE47E11A8E9E5041CDCCCC1C6B1C544152B81E858A9E50419A999969681C5441C3F5282C8C9E5041B81E85EB651C54415C8FC2458F9E5041EC51B80E691C5441E17A14AE929E5041E17A14AE691C544114AE47F1929E5041EC51B86E6C1C544166666606949E50410AD7A3F06D1C5441295C8FC2959E504148E17AF46E1C54411F85EB11999E50417B14AE376F1C5441B81E85DB999E5041B81E853B701C54411F85EBC19B9E50417B14AE97721C5441713D0A379E9E5041EC51B8DE751C5441295C8FE29F9E504152B81E75781C5441F6285C4FA29E5041D7A370DD7B1C54413D0AD703A49E5041A4703D4A7E1C544148E17A74A59E50410AD7A330801C544148E17A74A59E504100000080831C5441C3F528BCA49E5041B81E857B861C544100000010A59E5041D7A3705D891C5441713D0AA7A59E504148E17AF48B1C5441E17A14EEA59E5041713D0A978D1C54413D0AD773A99E504152B81E158E1C5441D7A370FDAB9E504114AE47018E1C5441C3F528FCAF9E50413D0AD7638F1C5441CDCCCCACB39E504185EB5128911C5441B81E85FBB49E50410AD7A300931C54413D0AD7D3B59E504166666676931C54415C8FC235B79E50413D0AD713931C54413D0AD783BA9E5041F6285C4F931C5441AE47E1AABD9E5041B81E853B941C5441E17A143EC19E504114AE4771951C544152B81EE5C09E5041E17A149E931C54411F85EBD1BF9E504148E17A14921C54410AD7A320BE9E5041000000508E1C54417B14AE97BC9E5041333333B38C1C5441CDCCCC5CBA9E5041333333B38B1C5441000000C0B69E50413D0AD7638D1C544133333323B49E5041F6285C9F8D1C544185EB51E8B19E50418FC2F5288D1C544100000010B09E50411F85EB018C1C5441B81E854BAF9E5041333333B38A1C5441AE47E19AAC9E5041713D0A17861C54419A9999E9AC9E5041F6285CEF841C54413D0AD723AF9E50417B14AE17821C5441AE47E14AB09E5041E17A148E801C544100000010B09E5041D7A370DD7E1C54410AD7A310AE9E5041A4703DCA7B1C544185EB5138AC9E504100000090781C5441EC51B8AEAB9E5041B81E85CB741C54411F85EBC1AB9E504166666656701C544100000060AB9E50419A9999B96B1C5441C3F5285CBE9E50413D0AD7E35D1C5441D7A3700DBE9E5041A4703D5A5C1C54415C8FC295C39E504152B81EE5581C54418FC2F5A8C59E5041C3F5280C5A1C5441713D0AF7CA9E504152B81EE5571C544133333343D79E50418FC2F548511C54417B14AE07D89E5041EC51B8BE521C5441CDCCCCCCD69E50411F85EBD1551C5441F6285CCFD69E5041666666B6561C5441C3F5287CD59E504148E17A54571C54417B14AE87D49E5041AE47E10A581C544152B81EE5D39E5041B81E85BB581C5441D7A3703DD39E50411F85EBB1591C544100000070D29E5041000000F05A1C544185EB51B8D19E50419A9999D95B1C54410AD7A3D0CF9E5041713D0AA75D1C544148E17A64CF9E5041C3F5287C5E1C5441295C8FE2CE9E504152B81E255F1C5441D7A3704DCE9E50410AD7A3C05F1C54411F85EBE1CF9E5041B81E85BB631C5441AE47E16AD59E504185EB51A8601C54413D0AD7F3D99E5041000000D05D1C544152B81E55DE9E50419A999959611C5441295C8F42DB9E50411F85EBE1661C5441B81E851BD99E50419A9999B96B1C5441B81E851BD79E50413D0AD7F3701C54418FC2F5B8D89E5041D7A3707D721C544148E17AA4DC9E504114AE4791701C544114AE4741E09E504152B81EF56A1C5441295C8FA2E59E50417B14AEA7631C544152B81E45E99E5041AE47E16A681C544152B81E05EE9E5041CDCCCC3C6E1C5441AE47E1FAEF9E5041B81E85DB711C5441295C8FA2F09E50418FC2F508781C5441F6285CEFF09E50413D0AD7537C1C5441E17A143EF19E5041713D0A677D1C5441CDCCCC8CF09E5041B81E852B801C54411F85EB51EF9E5041D7A3708D821C5441CDCCCC8CEE9E50411F85EB51851C5441A4703DDAEE9E504148E17A94871C5441A4703D2AF19E50418FC2F578861C544185EB5178F39E50415C8FC265861C5441333333B3F49E5041CDCCCC8C871C5441B81E858BF59E50415C8FC2158C1C5441EC51B8DEF69E504166666636911C5441A4703DFAF59E504148E17A84921C54415C8FC2C5F29E50411F85EBE1931C544133333363EF9E5041AE47E16A941C544100000010EC9E50419A999989941C544152B81E15E89E5041CDCCCC4C941C54418FC2F538E49E5041000000E0921C5441666666D6E09E50411F85EBB1921C5441E17A142EDD9E50411F85EBB1921C5441AE47E11ADB9E50417B14AE27941C5441F6285C2FD89E50419A999989951C544100000070D59E5041D7A370CD971C5441F6285C4FD49E50418FC2F558991C544185EB5158D19E5041000000B0991C544152B81E45CE9E50417B14AED7981C54413D0AD743CB9E5041666666C6971C5441F6285CCFCB9E5041000000B09A1C544148E17A44CF9E5041EC51B8FE9B1C5441CDCCCC1CD29E5041AE47E1EA9C1C54415C8FC2A5D59E50410AD7A3609E1C54411F85EB91D69E5041AE47E19AA01C5441F6285C2FD69E504100000060A11C5441A4703DAAD49E5041D7A370FDA11C54419A999939DC9E504133333363A41C5441A4703DAAE29E5041C3F5282CA51C544152B81E55EB9E5041C3F5285CA41C544100000010EF9E5041333333A3A41C5441CDCCCC9CF49E504133333393A41C5441E17A14DEF99E5041EC51B89EA31C544114AE4741FD9E50419A9999D9A21C54415C8FC235029F504148E17AC4A11C54410AD7A3B0099F5041000000A09F1C5441F6285C4F119F50417B14AEB79A1C54417B14AEA7159F50411F85EB21971C5441333333631C9F50417B14AE57941C5441000000E01A9F504114AE47318B1C5441AE47E1FA179F5041000000A08A1C54411F85EB71149F5041AE47E1DA881C5441EC51B82E129F504148E17AC4871C5441EC51B82E129F504133333383861C54415C8FC2C5149F50417B14AE87851C5441713D0A07149F5041295C8F22831C5441D7A3703D119F5041D7A3706D801C544152B81E650D9F5041C3F5287C7F1C5441C3F5284C0C9F5041AE47E17A7D1C544148E17A240C9F5041F6285C8F7A1C54415C8FC2D50C9F504114AE4741781C54417B14AE370E9F50413D0AD7A3761C5441666666860E9F504148E17AC4731C5441000000100F9F504114AE4791721C5441CDCCCCAC149F50410AD7A390741C54413D0AD7D3179F5041CDCCCC1C771C5441713D0A77169F5041000000106E1C544152B81ED50F9F5041295C8F926A1C5441295C8FC2099F5041CDCCCC1C681C5441A4703DEA089F50411F85EBE1671C54419A999939079F5041666666A6691C5441D7A370FD099F5041F6285C2F6D1C5441C3F5283C0B9F50419A9999D9701C5441C3F5280C0A9F50419A999939731C5441D7A370CD089F5041C3F5289C761C5441CDCCCC4C089F5041F6285C8F7B1C5441CDCCCCFC049F50411F85EB91821C5441295C8F12039F50413D0AD703811C54418FC2F588019F50419A9999C97F1C544100000000009F5041C3F5282C7D1C5441C3F528ECFD9E50418FC2F5187A1C5441E17A149EFA9E5041CDCCCC7C751C54410AD7A360F99E5041F6285CBF711C5441E17A142EF99E5041E17A141E6D1C544114AE47A1F89E5041CDCCCCCC681C5441666666F6F79E50417B14AEB7641C5441F6285CBFF69E504185EB51E85E1C5441AE47E1AAF49E504152B81E05591C5441A4703DCAF79E50410AD7A3F0581C544114AE47A1FB9E504114AE47E15A1C5441EC51B8CEF79E5041E17A146E541C5441D7A370FDF49E504148E17A44501C5441B81E858BF39E5041C3F5286C4D1C544166666676F29E5041713D0A074B1C544114AE47B1F19E504100000080481C54410AD7A360F19E504114AE47B1461C5441CDCCCCACED9E5041D7A3703D461C54418FC2F568EC9E504148E17AB4441C5441000000E0EA9E50411F85EB913D1C54410AD7A3C0E89E50419A9999F93D1C5441C3F528CCE89E50415C8FC2453A1C544114AE47E1E99E504148E17A54381C54415C8FC265E79E50418FC2F5D8351C5441713D0A57E69E50419A9999E9321C5441F6285C4FE49E50419A999959301C54419A999949E69E5041666666362E1C5441F6285CDFE79E5041713D0A972C1C5441E17A141EE99E5041EC51B83E291C54415C8FC2E5EB9E50417B14AED7201C5441D7A3702DED9E5041CDCCCC6C191C54411F85EB41EA9E5041C3F528CC121C5441AE47E12AE99E504152B81E55121C5441C3F5285CE59E504185EB51D8141C544152B81E15E39E5041CDCCCC3C151C5441B81E85FBDF9E50413D0AD7C3141C54418FC2F578DF9E5041A4703D5A131C5441C3F5289CE09E5041000000A0111C5441EC51B87EE29E5041295C8F72101C54410AD7A360E49E5041D7A3706D0F1C5441F6285C7FE69E504185EB5118101C5441295C8F02E99E50413D0AD763111C5441B81E856BE89E50411F85EBD10D1C5441CDCCCCACE79E50413D0AD7F3081C5441A4703D2AE79E5041CDCCCCFC041C5441D7A3704DE69E5041B81E850B021C544114AE4701E59E5041C3F5284CFF1B54410AD7A310E49E504114AE4741FD1B5441AE47E1CAE19E5041EC51B8FEF81B54410B0000009A9999C9E89E5041CDCCCCBC5C1C544133333353E89E5041295C8F82581C5441EC51B83EEB9E504100000020581C5441000000F0ED9E504166666696591C5441000000A0F19E5041A4703D0A621C544114AE4751F29E5041D7A3701D651C544152B81E65F29E50417B14AE57691C54419A999979EE9E504152B81EF5681C544114AE47A1EB9E5041F6285CCF631C5441E17A148EE89E504114AE47815E1C54419A9999C9E89E5041CDCCCCBC5C1C54411B00000048E17AC4B79E50411F85EBD1201C544185EB5108B69E5041713D0AD71E1C5441E17A141EB59E504152B81E451E1C54417B14AEC7B39E5041B81E858B1D1C5441D7A3708DB19E50417B14AEE71C1C54410AD7A330B09E50415C8FC2B51C1C544114AE47A1AE9E5041B81E85CB1C1C5441EC51B82EAD9E5041295C8F121D1C5441A4703DCAAB9E504148E17A441D1C54419A999949AA9E5041A4703D5A1D1C54415C8FC275AC9E504152B81E351B1C54413D0AD783AC9E5041AE47E1CA1B1C54410AD7A3E0AC9E50417B14AE271C1C544114AE47E1AE9E5041EC51B82E1C1C5441333333A3B19E50411F85EB111C1C544114AE47F1B19E50413D0AD7031C1C544100000000B29E5041A4703DCA1A1C544100000080B29E5041D7A370ED191C54419A9999E9B39E5041000000D0181C54419A9999E9B59E504114AE47F1161C5441A4703D5AB89E5041D7A3708D191C5441C3F5285CBA9E50413D0AD7B31B1C5441EC51B81EB99E5041CDCCCCDC1C1C5441C3F5285CB89E5041295C8F921D1C544152B81EF5B79E504114AE47E11D1C5441F6285C4FB99E50418FC2F5781F1C544148E17AC4B79E50411F85EBD1201C5441120000005C8FC2E5829E5041AE47E15A771C5441713D0A77809E50415C8FC265711C544100000030829E5041295C8F12711C544100000060849E5041AE47E19A701C54418FC2F548869E5041CDCCCCAC6F1C54411F85EB01889E5041666666D66E1C54413D0AD713899E5041EC51B88E6E1C5441A4703DEA899E5041333333536E1C544185EB51D88A9E5041CDCCCC4C6D1C54415C8FC2858C9E50418FC2F5586D1C54413D0AD7A38D9E5041CDCCCCAC6F1C54410AD7A3F08C9E5041A4703D8A731C544148E17A148B9E50410AD7A360761C5441295C8F62889E5041A4703DAA781C5441D7A3707D869E5041A4703D8A791C544185EB5178859E5041713D0A97791C544114AE47B1849E504114AE4701791C54415C8FC2E5829E5041AE47E15A771C5441100000001F85EB41D29E5041295C8FD2331C5441C3F5289CCD9E5041EC51B80E321C5441C3F5283CCD9E5041C3F528EC2F1C54411F85EBD1D49E50419A9999692D1C544133333333D99E504185EB51F82B1C54417B14AEC7DC9E50411F85EB11281C5441666666A6DE9E5041D7A3702D281C54415C8FC265DF9E50410AD7A300271C5441EC51B81EE29E504148E17A54241C5441295C8F82E39E5041F6285C8F251C5441B81E85BBE09E50410AD7A3802C1C5441000000A0E09E5041AE47E17A2E1C54417B14AEA7E29E50417B14AE97321C54415C8FC285D29E5041AE47E1AA371C54417B14AEA7D09E50415C8FC295351C54411F85EB41D29E5041295C8FD2331C54410103000000030000009C0000005C8FC2D5569E504114AE47A1801C54411F85EBD15D9E50410AD7A330811C54410AD7A3905D9E5041666666A67F1C5441295C8FC25C9E504185EB51A87E1C5441F6285C6F599E5041EC51B88E7D1C544185EB51F8559E5041713D0A777C1C5441D7A3700D539E504148E17AA47B1C5441D7A370AD4F9E50411F85EBD1791C5441EC51B84E4D9E50411F85EBA1771C5441333333634A9E5041CDCCCCFC741C54410AD7A390489E5041713D0A57711C54415C8FC2D5479E50417B14AEC76C1C5441D7A370BD469E50413D0AD7F3691C544114AE47D1459E5041000000D0671C544148E17A04489E504152B81E65661C544185EB5148459E50410AD7A3C0631C54419A999919459E50419A999979621C54410AD7A390489E504152B81EA55E1C5441EC51B81E4C9E50415C8FC2755D1C5441333333934B9E5041E17A142E5B1C54413D0AD7934C9E504114AE47A1591C5441333333F34F9E5041AE47E12A571C544185EB5198529E504148E17AE4561C5441295C8F82549E504148E17A14581C5441D7A3703D559E5041CDCCCC5C5B1C5441AE47E19A559E504152B81EA55E1C5441F6285C0F569E50417B14AE77601C5441CDCCCCCC579E50418FC2F578601C5441666666F65A9E50419A999909601C54410AD7A3905D9E5041AE47E18A5F1C5441A4703D8A609E5041CDCCCCAC5E1C54413D0AD783639E5041EC51B89E5D1C5441D7A3707D669E5041295C8F025C1C54418FC2F5A8689E504114AE47915C1C5441713D0A67699E5041AE47E1AA5F1C544148E17AC46A9E50417B14AE07611C5441000000006D9E50418FC2F558601C5441AE47E15A6F9E5041B81E851B5F1C54415C8FC295719E5041C3F5280C5F1C54411F85EB51739E50419A999929601C5441C3F5283C769E504152B81E25621C54417B14AE47789E5041295C8F62631C54413D0AD7F3799E504133333343631C54411F85EBE17A9E504148E17AA4621C5441000000E07B9E5041713D0A77611C5441F6285C3F7C9E5041F6285C6F5D1C5441EC51B88E7C9E5041C3F5285C571C54411F85EB71809E504166666636551C54418FC2F5387F9E504152B81EE54B1C5441713D0AF77F9E504114AE4721461C54415C8FC2D57F9E50410AD7A360411C54419A9999C97E9E5041EC51B88E3D1C5441CDCCCC3C7D9E504148E17A343D1C5441713D0A67789E504185EB51583B1C544114AE47D1739E50419A9999993A1C544114AE47C16E9E5041AE47E12A3A1C5441295C8FA26C9E504185EB5128381C544114AE47916A9E5041EC51B8CE341C54417B14AEB7669E50410AD7A320321C5441B81E85FB639E50415C8FC265301C5441EC51B8AE5F9E50417B14AE07351C5441666666565D9E5041EC51B8CE341C54410AD7A320549E5041A4703DDA321C5441B81E852B519E504152B81E05331C5441AE47E19A4F9E504148E17A94331C544148E17A444E9E504152B81E15341C544148E17A344D9E5041D7A3705D351C5441AE47E1EA499E50413D0AD7F3351C5441B81E857B499E50410AD7A340371C54419A9999594A9E5041B81E85EB391C5441E17A145E4C9E5041C3F5281C3A1C5441295C8FC24C9E504152B81E653B1C5441333333334C9E5041F6285C9F3C1C544114AE47B14A9E5041B81E85CB3D1C544152B81EF5479E5041C3F528BC3C1C544185EB5148469E50411F85EB013C1C5441713D0A47459E5041B81E85AB3A1C54410AD7A3F0439E50418FC2F5383A1C5441AE47E18A429E50418FC2F5383A1C544152B81EA5409E504185EB51483B1C544114AE47A13D9E5041AE47E14A3D1C5441E17A149E3A9E504185EB51D83C1C54415C8FC2A5379E50413D0AD7033A1C544133333373369E504114AE4731381C544185EB5188349E5041C3F528FC361C54413D0AD793329E50419A999989361C5441666666B6319E50415C8FC245381C54413D0AD763319E5041CDCCCC5C3A1C5441F6285C4F319E50419A9999493C1C5441CDCCCC8C319E5041713D0A373E1C54418FC2F548319E5041CDCCCC3C3F1C5441D7A370DD2F9E5041295C8F423F1C5441D7A3702D2E9E5041E17A140E3E1C5441C3F528AC2C9E50417B14AEE73B1C544152B81E25299E50410AD7A3803A1C544148E17A94279E50419A999919381C54418FC2F558259E5041F6285CDF361C5441AE47E1DA229E5041E17A147E321C544152B81E351F9E5041B81E854B321C5441F6285C3F1C9E50418FC2F5B82E1C54418FC2F5D8199E5041713D0AA72B1C544152B81ED5169E5041AE47E10A2C1C544185EB51F80F9E50411F85EB11241C54417B14AE770E9E5041D7A3704D241C54413D0AD7E30A9E5041C3F5281C261C544185EB51E8069E5041AE47E11A281C54415C8FC285029E5041333333F3291C544185EB5198FF9D50419A9999192B1C5441EC51B88EFC9D50417B14AE172C1C5441666666B6FC9D5041C3F528CC2E1C54411F85EBC1FD9D5041E17A143E301C5441F6285C8FFE9D504152B81EA5301C5441CDCCCCECFF9D5041E17A145E311C54413D0AD773019E50410AD7A3B0311C5441C3F528DC039E5041713D0A87311C54418FC2F5B8099E5041CDCCCCCC391C54418FC2F5480A9E50419A9999D93C1C5441F6285CCF0B9E5041B81E858B401C5441F6285C5F0C9E5041AE47E10A451C544185EB51F80B9E5041A4703D4A471C54413D0AD7E30B9E5041713D0A574A1C5441CDCCCC9C0C9E5041666666B64D1C54410AD7A3800F9E504185EB51B84F1C54419A999959119E50415C8FC215511C54411F85EB71159E504133333393531C5441AE47E1FA189E50410AD7A310561C5441B81E85FB129E504152B81ED55C1C544166666686109E50418FC2F5385D1C5441F6285C9F0D9E5041E17A140E5D1C54419A9999290A9E5041D7A3708D5C1C5441F6285C4F069E50410AD7A3F05B1C5441AE47E1CA029E5041E17A147E5B1C54417B14AEB7FE9D50417B14AEA75A1C54418FC2F558FB9D5041E17A148E581C544100000030F09D5041713D0A97571C54411F85EB71F09D504152B81EA5591C5441F6285CDFF19D5041C3F5286C601C5441D7A370ADFD9D5041C3F528AC621C5441D7A370CD099E5041B81E859B661C544114AE47910D9E5041295C8F32631C5441CDCCCC8C159E5041AE47E10A661C54413D0AD7B3179E504152B81E35641C544152B81E75299E50419A9999896B1C5441713D0A872B9E50415C8FC2A56C1C54415C8FC2152C9E5041B81E85BB6F1C5441713D0AA72D9E5041D7A3706D6F1C5441666666C62F9E504152B81ED56F1C54418FC2F5C8309E50410AD7A3C0711C5441CDCCCC1C329E504148E17A74731C54410AD7A390359E5041F6285C7F741C54415C8FC2D5379E5041EC51B82E771C54411F85EB31449E50410AD7A3F07B1C54415C8FC2F54A9E504185EB51287E1C5441CDCCCC7C4F9E5041713D0A277F1C54419A999939559E5041EC51B87E801C54415C8FC2D5569E504114AE47A1801C54410F000000000000A0799E504152B81E954A1C54418FC2F588799E504148E17AF44C1C54418FC2F558789E504185EB51984E1C5441B81E85CB759E50410AD7A3B04F1C54418FC2F5F8749E5041C3F528AC4E1C544100000010749E5041B81E850B4D1C5441B81E859B739E504114AE47214B1C5441295C8FB2739E5041CDCCCC7C491C54415C8FC255749E504133333363461C5441B81E85CB759E5041E17A14BE431C544185EB5158779E5041713D0AA7431C54410AD7A370789E504152B81E05451C5441666666B6789E50411F85EB91461C5441C3F528FC779E50418FC2F5084A1C5441000000A0799E504152B81E954A1C544127000000A4703DAA689E5041D7A3709D541C544185EB51086A9E5041D7A3709D541C5441EC51B84E6B9E5041EC51B83E531C54410AD7A3506D9E50418FC2F5C8501C54418FC2F598709E5041333333534F1C544148E17A54729E504148E17A244F1C544185EB51C8739E5041713D0A774F1C54415C8FC225749E5041F6285C0F501C544100000010749E5041A4703D9A501C54411F85EBB1729E5041333333B3521C5441295C8F82719E50417B14AE57551C54419A999999719E5041A4703D5A581C5441666666F6709E504114AE47A1591C544114AE47516E9E50417B14AEE75A1C54411F85EB216D9E504152B81E455B1C54415C8FC2956C9E504148E17A445A1C54410AD7A3506D9E50410AD7A3A0581C5441E17A14AE6D9E5041AE47E12A571C5441C3F528AC6D9E50413D0AD753551C544185EB51386C9E504152B81EB5551C5441F6285C1F6A9E504148E17AE4561C544114AE47C1689E5041713D0AB7571C544114AE4791669E5041713D0AB7571C54411F85EB31649E5041B81E852B581C54410AD7A330629E5041D7A370FD581C5441D7A3705D609E504185EB51B8591C5441333333735E9E504148E17A445A1C5441666666E65C9E5041D7A3702D5A1C5441AE47E12A5B9E50419A999989591C544114AE47415A9E5041CDCCCCFC571C544152B81EE55A9E5041EC51B89E561C54415C8FC2E55B9E5041B81E85FB551C544152B81E155D9E5041F6285C6F551C5441E17A145E619E50413D0AD7E3551C54410AD7A300619E5041D7A3706D531C54411F85EB01629E504148E17A84521C54415C8FC2A5639E504133333383511C5441D7A370ED659E5041D7A3706D531C5441A4703DAA689E5041D7A3709D541C54410103000000010000001B000000D7A3708DF99E5041B81E852B511C544185EB51E8FA9E5041333333E3521C5441A4703D5AFC9E50419A999979531C5441713D0A87FD9E5041EC51B8EE521C5441A4703DFAFD9E5041CDCCCC4C521C5441B81E851BFF9E50415C8FC235521C5441CDCCCC0C019F50417B14AEA7531C54417B14AE07049F50415C8FC2A5541C5441D7A370BD069F504152B81E25551C544166666646089F5041713D0AF7541C544185EB51B8099F50418FC2F5C8541C5441333333130B9F50410AD7A330551C5441333333E30B9F50413D0AD723561C5441C3F5288C0F9F50410AD7A300561C544114AE47A1109F50410AD7A330551C5441A4703D8A109F5041295C8F32541C54410AD7A350109F50415C8FC235521C544148E17A640B9F5041B81E855B501C5441F6285C5F079F5041666666464F1C5441C3F5282C039F504152B81E554D1C54417B14AE77FF9E5041D7A3709D4B1C5441E17A146EF79E504148E17A74481C54415C8FC235F69E5041B81E855B491C54410AD7A3F0F59E5041CDCCCC4C4B1C54419A9999A9F69E5041E17A143E4D1C5441D7A370EDF79E5041000000804F1C5441D7A3708DF99E5041B81E852B511C5441
+</a>
+
+<b>
+01060000000100000001030000000300000090000000AE47E1DA229E5041E17A147E321C54411313DA69209E5041299F3C5C321C544152B81E351F9E5041B81E854B321C5441CC5962111F9E5041E1B76320321C5441F6285C3F1C9E50418FC2F5B82E1C54418FC2F5D8199E5041713D0AA72B1C544152B81ED5169E5041AE47E10A2C1C544185EB51F80F9E50411F85EB11241C54417B14AE770E9E5041D7A3704D241C54413D0AD7E30A9E5041C3F5281C261C544185EB51E8069E5041AE47E11A281C544199F56C1B069E50416DFF1671281C54415C8FC285029E5041333333F3291C544185EB5198FF9D50419A9999192B1C5441EC51B88EFC9D50417B14AE172C1C5441666666B6FC9D5041C3F528CC2E1C54411F85EBC1FD9D5041E17A143E301C5441529FFA6DFE9D5041EFA36094301C54416344A12C009E50416B6E8E6B311C54413D0AD773019E50410AD7A3B0311C54416700A636039E5041712B3692311C5441C3F528DC039E5041713D0A87311C54410A6F7ABF069E50417A5E489A351C5441E328FD63099E5041B9FAE554391C54418FC2F5B8099E5041CDCCCCCC391C5441C6D4FF340A9E5041236E5E6D3C1C5441844EBE600A9E504168D939133D1C5441F6285CCF0B9E5041B81E858B401C5441A8D816430C9E5041B1EFD628441C5441F6285C5F0C9E5041AE47E10A451C5441DC52DB130C9E5041EC9E7AB0461C5441A5F826EF0B9E504143DCC2A7481C54413D0AD7E30B9E5041713D0A574A1C54413D499BC70C9E5041FD9022D44D1C5441C4810A41139E5041C718273E521C54411F85EB71159E504133333393531C54413B20EAFE199E5041251F7C05561C54419CF2A79C469E5041E06E1F0D671C544148E17A04489E504152B81E65661C544185EB5148459E50410AD7A3C0631C54419A999919459E50419A999979621C54410AD7A390489E504152B81EA55E1C5441EC51B81E4C9E50415C8FC2755D1C5441333333934B9E5041E17A142E5B1C54413D0AD7934C9E504114AE47A1591C5441333333F34F9E5041AE47E12A571C54412B348E15519E5041931AB10C571C544185EB5198529E504148E17AE4561C5441295C8F82549E504148E17A14581C5441B6E63DA5549E5041D6E86DB0581C54419650FD8F569E50413AB40C78601C5441BECD54F25C9E5041A697FDA85F1C5441B55323AB629E50414C3891EB5D1C544166E69966669E5041667AEB0E5C1C5441D7A3707D669E5041295C8F025C1C54418FC2F5A8689E504114AE47915C1C5441D54DCD46699E5041DE9348245F1C5441E66A750A6B9E5041426849F2601C54419EDCED996D9E5041A606E907601C5441AE47E15A6F9E5041B81E851B5F1C5441657485866F9E5041FB85581A5F1C544105137B8F719E5041F335540C5F1C54415C8FC295719E5041C3F5280C5F1C54415A9040A2719E50414E2930145F1C54411F85EB51739E50419A999929601C544116991BE8759E504108B3F4EB611C544158223A51769E5041A2E8E431621C54417B14AE47789E5041295C8F62631C54413D0AD7F3799E504133333343631C54411F85EBE17A9E504148E17AA4621C5441000000E07B9E5041713D0A77611C54414C752D417C9E504104D1BD4B5D1C5441EC51B88E7C9E5041C3F5285C571C54411F85EB71809E504166666636551C54417F410837809E5041869B9375531C5441AA8A8C04809E5041DB3BCFF4511C5441343C30DC7F9E504171BB31C1501C54418FC2F5387F9E504152B81EE54B1C544150BD5E3E7F9E5041614F1DBB4B1C5441E4C21BD57F9E50410531BC28471C5441D11743EA7F9E5041F617264E441C54411521161B7F9E50415B918CA33E1C54419A9999C97E9E5041EC51B88E3D1C54417C3FEB8C7D9E5041555AB3463D1C5441CDCCCC3C7D9E504148E17A343D1C544111823BBF7B9E5041C961B1A13C1C5441160A27EF779E5041AD04D7443B1C5441882D31CD719E50416870826D3A1C544114AE47C16E9E5041AE47E12A3A1C54419FB363AC6C9E50415EB2A331381C5441295C8FA26C9E504185EB5128381C5441DF3ADD9A6C9E5041A1B0D91B381C544114AE47916A9E5041EC51B8CE341C5441B81E85FB639E50415C8FC265301C5441EC51B8AE5F9E50417B14AE07351C5441666666565D9E5041EC51B8CE341C5441E58F87FE5C9E50416D5B11BC341C5441270809FB539E504127A95EDC321C54412C7ECCAE509E5041FAA8BF31331C544148E17A444E9E504152B81E15341C544148E17A344D9E5041D7A3705D351C5441AE47E1EA499E50413D0AD7F3351C5441B81E857B499E50410AD7A340371C544187A63CC4499E50414E413D20381C54419A9999594A9E5041B81E85EB391C5441433886154C9E504112B653153A1C5441E17A145E4C9E5041C3F5281C3A1C5441295C8FC24C9E504152B81E653B1C5441333333334C9E5041F6285C9F3C1C54416E5EB01F4C9E5041570789AE3C1C544114AE47B14A9E5041B81E85CB3D1C54410C0C9F164A9E5041AC42948F3D1C544152B81EF5479E5041C3F528BC3C1C544185EB5148469E50411F85EB013C1C5441268F9544469E504152C0F2FC3B1C54418CE1502C459E5041572494A23A1C54410AD7A3F0439E50418FC2F5383A1C5441AE47E18A429E50418FC2F5383A1C544114FD80ED419E5041CCFFDF903A1C544152B81EA5409E504185EB51483B1C544114AE47A13D9E5041AE47E14A3D1C544131074B243D9E5041194050383D1C5441E17A149E3A9E504185EB51D83C1C54415C8FC2A5379E50413D0AD7033A1C544133333373369E504114AE4731381C544185EB5188349E5041C3F528FC361C54413D0AD793329E50419A999989361C5441666666B6319E50415C8FC245381C54418E31CB96319E50416F989612391C5441D0291956319E504116B575A73B1C54416644165A319E5041F545C09F3C1C5441CDCCCC8C319E5041713D0A373E1C54419F3D3563319E504141BF85D73E1C54418FC2F548319E5041CDCCCC3C3F1C5441D7A370DD2F9E5041295C8F423F1C5441D7A3702D2E9E5041E17A140E3E1C5441C3F528AC2C9E50417B14AEE73B1C5441683706112A9E5041BAEA6EDE3A1C544152B81E25299E50410AD7A3803A1C5441BDDF3A0D299E50411823F75B3A1C5441F431BF68279E504199DA8D01381C5441ED9CE780259E504157A952F5361C54418FC2F558259E5041F6285CDF361C5441AE47E1DA229E5041E17A147E321C54410F000000000000A0799E504152B81E954A1C54418FC2F588799E504148E17AF44C1C54418FC2F558789E504185EB51984E1C5441B81E85CB759E50410AD7A3B04F1C54418FC2F5F8749E5041C3F528AC4E1C544100000010749E5041B81E850B4D1C5441B81E859B739E504114AE47214B1C5441295C8FB2739E5041CDCCCC7C491C54415C8FC255749E504133333363461C5441B81E85CB759E5041E17A14BE431C544185EB5158779E5041713D0AA7431C54410AD7A370789E504152B81E05451C5441666666B6789E50411F85EB91461C5441C3F528FC779E50418FC2F5084A1C5441000000A0799E504152B81E954A1C544127000000A4703DAA689E5041D7A3709D541C544185EB51086A9E5041D7A3709D541C5441EC51B84E6B9E5041EC51B83E531C54410AD7A3506D9E50418FC2F5C8501C54418FC2F598709E5041333333534F1C544148E17A54729E504148E17A244F1C544185EB51C8739E5041713D0A774F1C54415C8FC225749E5041F6285C0F501C544100000010749E5041A4703D9A501C54411F85EBB1729E5041333333B3521C5441295C8F82719E50417B14AE57551C54419A999999719E5041A4703D5A581C5441666666F6709E504114AE47A1591C544114AE47516E9E50417B14AEE75A1C54411F85EB216D9E504152B81E455B1C54415C8FC2956C9E504148E17A445A1C54410AD7A3506D9E50410AD7A3A0581C5441E17A14AE6D9E5041AE47E12A571C5441C3F528AC6D9E50413D0AD753551C544185EB51386C9E504152B81EB5551C5441F6285C1F6A9E504148E17AE4561C544114AE47C1689E5041713D0AB7571C544114AE4791669E5041713D0AB7571C54411F85EB31649E5041B81E852B581C54410AD7A330629E5041D7A370FD581C5441D7A3705D609E504185EB51B8591C5441333333735E9E504148E17A445A1C5441666666E65C9E5041D7A3702D5A1C5441AE47E12A5B9E50419A999989591C544114AE47415A9E5041CDCCCCFC571C544152B81EE55A9E5041EC51B89E561C54415C8FC2E55B9E5041B81E85FB551C544152B81E155D9E5041F6285C6F551C5441E17A145E619E50413D0AD7E3551C54410AD7A300619E5041D7A3706D531C54411F85EB01629E504148E17A84521C54415C8FC2A5639E504133333383511C5441D7A370ED659E5041D7A3706D531C5441A4703DAA689E5041D7A3709D541C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389154 - 968671
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002E000000AE47E11A1098504148E17AA465215441E17A142E139850411F85EBE162215441F6285C9F17985041D7A3709D5E2154419A9999A91A985041000000105C215441A4703DAA1C9850415C8FC2E559215441A4703DAA199850417B14AEF754215441666666A6159850419A9999794F215441D7A3707D11985041A4703DFA4921544152B81E150E985041F6285C3F45215441D7A3700D0B9850413333335345215441EC51B88E0B985041A4703D8A422154418FC2F5580C9850418FC2F5D83F2154417B14AE170D985041D7A3704D3E2154411F85EB610E985041A4703D8A3D2154411F85EB911198504185EB51083C2154417B14AE7715985041000000503A2154410AD7A37014985041713D0AA7312154419A9999A9109850413D0AD7D3312154413D0AD7630E985041AE47E1CA312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A21544114AE47D108985041000000302B215441E17A144E08985041EC51B8FE1C2154419A9999A9FA9750415C8FC2151F21544152B81E35FA9750416666663621215441E17A14DEF997504148E17A04242154410AD7A360F9975041B81E85EB262154418FC2F5D8F8975041A4703DFA292154419A999939F897504185EB51582F215441CDCCCC0CF89750415C8FC2F533215441B81E854BF897504152B81E5538215441B81E85EBF897504185EB51183B21544114AE4791FA975041B81E85FB3C2154411F85EB01FA975041295C8F2243215441B81E854BF89750419A9999F943215441E17A148EF7975041C3F5284C49215441CDCCCC0CF897504148E17A544C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A146821544152B81E250E9850410AD7A34067215441AE47E11A1098504148E17AA465215441
+</a>
+
+<b>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A2154418E380675F69750418DA24BEF4121544170260DF7F89750418DA24BEF41215441A7EBEEC6F79750412634D00646215441B9828F61F79750416931424548215441B9828F61F7975041AD2EB4834A215441577324A5F7975041F02B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A2E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D842266B1A985041393312BA4621544198C29C6F19985041E952A67F4521544159896640199850412CA703F2442154415DF100091898504133BFB60A432154413197E9FB1798504107659FFD42215441AB1901F417985041382BDAE94221544114AE479117985041F6285C4F422154417961FC0616985041BF451F9B3D2154418C8A0C0116985041562032943D215441DB02D722169850418CE513643C2154413D1242DF15985041629B8A773B2154414FA9E27915985041ABF70CE2392154414E36937314985041F7F8C6BF31215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389215 - 968671
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441C3F528EC1A985041A4703D5A06215441EC51B81E1C985041C3F5287C022154419A9999291D9850418FC2F568FF205441000000D01F9850415C8FC295F920544114AE47D1249850411F85EB61F22054413D0AD743249850419A999989F1205441000000C01F985041EC51B87EEA205441E17A146E1B985041713D0A77E3205441B81E857B17985041295C8F52E6205441A4703DBA1398504185EB51C8E9205441713D0A97109850417B14AE57ED205441A4703DCA0C98504152B81E65F220544114AE478109985041B81E85DBF6205441CDCCCCDC05985041F6285C8FFC205441F6285C9F03985041C3F528AC00215441AE47E1AA0198504148E17A6405215441AE47E10A00985041713D0AF709215441AE47E1BAFD975041AE47E15A10215441AE47E13AFC97504152B81EB5162154411F85EB51FB97504114AE47911B2154419A9999A9FA9750415C8FC2151F215441E17A144E08985041EC51B8FE1C21544114AE47D108985041000000302B215441713D0A670D9850413D0AD7E32A2154418FC2F5F80D985041D7A3701D302154413D0AD7630E985041AE47E1CA312154419A9999A9109850413D0AD7D3312154410AD7A37014985041713D0AA7312154417B14AE7715985041000000503A215441CDCCCCAC159850417B14AE873C21544114AE479117985041F6285C4F42215441C3F528DC199850415C8FC2E545215441666666261D98504185EB51C84A2154416666665620985041A4703DAA4F215441713D0A87239850413D0AD77353215441CDCCCC6C2498504100000090542154417B14AE87259850416666668653215441E17A14CE2898504148E17A745021544148E17A942A985041AE47E1CA4E215441
+</a>
+
+<b>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A2154418E380675F69750418DA24BEF4121544170260DF7F89750418DA24BEF41215441A7EBEEC6F79750412634D00646215441B9828F61F79750416931424548215441B9828F61F7975041AD2EB4834A215441577324A5F7975041F02B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A2E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D842266B1A985041393312BA4621544198C29C6F19985041E952A67F4521544159896640199850412CA703F2442154415DF100091898504133BFB60A432154413197E9FB1798504107659FFD42215441AB1901F417985041382BDAE94221544114AE479117985041F6285C4F422154417961FC0616985041BF451F9B3D2154418C8A0C0116985041562032943D215441DB02D722169850418CE513643C2154413D1242DF15985041629B8A773B2154414FA9E27915985041ABF70CE2392154414E36937314985041F7F8C6BF31215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389215 - 1819783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441C3F528EC1A985041A4703D5A06215441EC51B81E1C985041C3F5287C022154419A9999291D9850418FC2F568FF205441000000D01F9850415C8FC295F920544114AE47D1249850411F85EB61F22054413D0AD743249850419A999989F1205441000000C01F985041EC51B87EEA205441E17A146E1B985041713D0A77E3205441B81E857B17985041295C8F52E6205441A4703DBA1398504185EB51C8E9205441713D0A97109850417B14AE57ED205441A4703DCA0C98504152B81E65F220544114AE478109985041B81E85DBF6205441CDCCCCDC05985041F6285C8FFC205441F6285C9F03985041C3F528AC00215441AE47E1AA0198504148E17A6405215441AE47E10A00985041713D0AF709215441AE47E1BAFD975041AE47E15A10215441AE47E13AFC97504152B81EB5162154411F85EB51FB97504114AE47911B2154419A9999A9FA9750415C8FC2151F215441E17A144E08985041EC51B8FE1C21544114AE47D108985041000000302B215441713D0A670D9850413D0AD7E32A2154418FC2F5F80D985041D7A3701D302154413D0AD7630E985041AE47E1CA312154419A9999A9109850413D0AD7D3312154410AD7A37014985041713D0AA7312154417B14AE7715985041000000503A215441CDCCCCAC159850417B14AE873C21544114AE479117985041F6285C4F42215441C3F528DC199850415C8FC2E545215441666666261D98504185EB51C84A2154416666665620985041A4703DAA4F215441713D0A87239850413D0AD77353215441CDCCCC6C2498504100000090542154417B14AE87259850416666668653215441E17A14CE2898504148E17A745021544148E17A942A985041AE47E1CA4E215441
+</a>
+
+<b>
+010600000001000000010300000001000000390000005336937314985041F8F8C6BF312154411262536F14985041BCD319A7312154419A9999A9109850413D0AD7D331215441C5677A7910985041304E19D33121544198482D590E98504113C598F6312154413B6770430E9850414DBAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AB879E5B09985041061706272B215441938BF5CD089850414FCD423B2B215441317A0D27089850413AEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A21544189380675F69750418BA24BEF412154416F260DF7F89750418BA24BEF41215441A6EBEEC6F79750412B34D00646215441B5828F61F79750416831424548215441B5828F61F7975041B12EB4834A215441527324A5F7975041EE2B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A5E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D542266B1A9850413E3312BA4621544199C29C6F19985041E652A67F45215441578966401998504129A703F24421544162F10009189850412FBFB60A432154413397E9FB179850410B659FFD42215441A61901F4179850413A2BDAE94221544114AE479117985041F6285C4F422154417A61FC0616985041C0451F9B3D215441888A0C0116985041592032943D215441DC02D7221698504190E513643C2154413E1242DF15985041649B8A773B2154414DA9E27915985041AAF70CE2392154415336937314985041F8F8C6BF31215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389215 - 4450309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441C3F528EC1A985041A4703D5A06215441EC51B81E1C985041C3F5287C022154419A9999291D9850418FC2F568FF205441000000D01F9850415C8FC295F920544114AE47D1249850411F85EB61F22054413D0AD743249850419A999989F1205441000000C01F985041EC51B87EEA205441E17A146E1B985041713D0A77E3205441B81E857B17985041295C8F52E6205441A4703DBA1398504185EB51C8E9205441713D0A97109850417B14AE57ED205441A4703DCA0C98504152B81E65F220544114AE478109985041B81E85DBF6205441CDCCCCDC05985041F6285C8FFC205441F6285C9F03985041C3F528AC00215441AE47E1AA0198504148E17A6405215441AE47E10A00985041713D0AF709215441AE47E1BAFD975041AE47E15A10215441AE47E13AFC97504152B81EB5162154411F85EB51FB97504114AE47911B2154419A9999A9FA9750415C8FC2151F215441E17A144E08985041EC51B8FE1C21544114AE47D108985041000000302B215441713D0A670D9850413D0AD7E32A2154418FC2F5F80D985041D7A3701D302154413D0AD7630E985041AE47E1CA312154419A9999A9109850413D0AD7D3312154410AD7A37014985041713D0AA7312154417B14AE7715985041000000503A215441CDCCCCAC159850417B14AE873C21544114AE479117985041F6285C4F42215441C3F528DC199850415C8FC2E545215441666666261D98504185EB51C84A2154416666665620985041A4703DAA4F215441713D0A87239850413D0AD77353215441CDCCCC6C2498504100000090542154417B14AE87259850416666668653215441E17A14CE2898504148E17A745021544148E17A942A985041AE47E1CA4E215441
+</a>
+
+<b>
+010600000001000000010300000001000000390000005336937314985041F8F8C6BF312154411262536F14985041BCD319A7312154419A9999A9109850413D0AD7D331215441C5677A7910985041304E19D33121544198482D590E98504113C598F6312154413B6770430E9850414DBAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AB879E5B09985041061706272B215441938BF5CD089850414FCD423B2B215441317A0D27089850413AEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B2421544148E17AD4F8975041AE47E15A27215441CDCCCC4CF89750410AD7A3F029215441CDCCCCDCF79750415C8FC2152E21544133333363F7975041666666D632215441713D0A47F7975041CDCCCC7C362154419A9999F9F69750413D0AD7E33A21544189380675F69750418BA24BEF412154416F260DF7F89750418BA24BEF41215441A6EBEEC6F79750412B34D00646215441B5828F61F79750416831424548215441B5828F61F7975041B12EB4834A215441527324A5F7975041EE2B26C24C21544114AE4791F8975041B81E859B4E21544148E17A44FC9750411F85EBC153215441B81E85DB00985041C3F528BC5A2154417B14AEB705985041F6285C5F62215441333333B309985041AE47E1BA67215441713D0AF70A98504152B81E35682154419A9999890C98504148E17A1468215441A4703DEA0D98504152B81E95672154417B14AEB70F9850413D0AD74366215441333333C3129850415C8FC2C563215441D7A370CD169850419A9999096021544152B81EB5189850411F85EB715E21544114AE47111B9850415C8FC2555C2154410AD7A3201C985041333333635B215441AE47E1FA1C985041A4703D6A5A21544191DE058623985041A5E6A172532154416666665620985041A4703DAA4F215441666666261D98504185EB51C84A215441D542266B1A9850413E3312BA4621544199C29C6F19985041E652A67F45215441578966401998504129A703F24421544162F10009189850412FBFB60A432154413397E9FB179850410B659FFD42215441A61901F4179850413A2BDAE94221544114AE479117985041F6285C4F422154417A61FC0616985041C0451F9B3D215441888A0C0116985041592032943D215441DC02D7221698504190E513643C2154413E1242DF15985041649B8A773B2154414DA9E27915985041AAF70CE2392154415336937314985041F8F8C6BF31215441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389277 - 396354
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3808A98504148E17A145E1C54413333335396985041713D0A97621C54410AD7A3A0A5985041E17A146E681C5441D7A370BDB2985041EC51B86E6D1C5441295C8F22C3985041E17A141E731C5441A4703D5AC3985041A4703D3A721C54410AD7A3C0C3985041D7A370CD6F1C5441CDCCCC0CA49850417B14AE57641C5441F6285CFF89985041E17A14FE5A1C54410AD7A3808A98504148E17A145E1C5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000000AD7A3A0A5985041E17A146E681C54415CCDB47EAA9850418C4576496A1C5441E10B72BDB29850414317B76E6D1C5441ABF07D41BF985041D54ABBC5711C54418DB0FED2C2985041049A7D02731C54418B538E22C39850411C1F141E731C5441A3F13C5AC398504163C83D3A721C5441A5185AA6C398504101B6CF6C701C54418FF857AEC398504192985C3C701C544119C0A3C0C3985041CC2E71CD6F1C5441C90D1627B69850411D7AE8E26A1C5441CDCCCC0CA49850417B14AE57641C54417A905CFF899850410BA014FE5A1C5441A412A4808A985041CA6A7A145E1C5441CA1D32539698504165CE0897621C5441EFFAD2E49D9850417250827A651C54410AD7A3A0A5985041E17A146E681C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395054 - 2130970
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E0000005C8FC265BCAF50411F85EB11B71F54415C8FC2E5C2AF50411F85EB51BD1F544185EB5148C9AF50411F85EBF1C11F544114AE47C1CCAF504152B81ED5C31F54419A999949D6AF5041EC51B88EC61F54418FC2F578DEAF50417B14AED7C91F5441EC51B8AEE2AF504133333323CB1F5441A4703D3AE5AF504148E17A64C71F544114AE4701E9AF5041AE47E1BAC81F544185EB51C8ECAF50415C8FC225CA1F544148E17AF4EEAF50410AD7A300CB1F54410AD7A380F2AF5041E17A147ECC1F54418FC2F598F5AF50419A9999E9CD1F5441C3F5287CFCAF5041F6285C2FD11F544114AE47B102B0504148E17A14D41F5441F6285C3F06B0504152B81EF5D51F5441713D0AA70CB05041A4703D7AD91F5441295C8FE210B0504166666626DC1F5441E17A148E16B05041CDCCCC7CE11F5441CDCCCC0C18B05041B81E853BE31F5441AE47E1DA1BB05041295C8FF2E81F544152B81E151EB050411F85EBB1EB1F5441D7A370BD1FB0504185EB51C8EB1F54410000003023B050417B14AE47F01F5441B81E85AB22B0504148E17A44F11F5441F6285C3F2CB05041C3F5284CFA1F544152B81E852CB0504148E17A74FA1F5441666666C62DB05041B81E85EBF71F54411F85EB512FB05041CDCCCCCCF41F5441E17A14FE30B0504148E17A64F11F5441713D0A9732B050413D0AD723EE1F544152B81EE535B050418FC2F568E71F54410AD7A3D02FB0504114AE47E1E31F544148E17A442AB0504152B81E65E11F54411F85EBA122B05041B81E85CBDA1F5441713D0A271DB05041C3F5282CD61F5441713D0A9717B0504100000040D11F5441B81E851B15B05041E17A140ECD1F5441F6285C6F15B05041D7A3707DCB1F5441E17A140E10B05041295C8F42C81F5441E17A14BE08B0504114AE47F1C31F5441E17A140E06B0504100000080C21F544185EB51F804B05041713D0A57C31F5441CDCCCCDC00B05041F6285C2FC21F5441D7A370BDFAAF504133333393BF1F544100000090F5AF504152B81EB5BC1F544114AE4741F0AF5041000000A0B91F5441295C8F22EAAF5041A4703D1AB41F5441C3F5289CE7AF5041AE47E1CAB11F5441EC51B8AEE7AF50419A999919B01F54419A999969C9AF5041AE47E10A9C1F5441C3F5281CC5AF5041E17A147E991F5441CDCCCCCCB5AF50418FC2F5C8901F54415C8FC245B4AF50413D0AD7F38F1F544148E17A14A5AF50419A999949871F54419A999979A5AF50415C8FC2E58C1F544185EB5198A6AF5041A4703D5A941F54413D0AD7B3A6AF504133333313951F5441A4703DEAABAF5041B81E858B9D1F5441B81E85EBB3AF5041D7A370ADA91F5441AE47E17AB9AF5041D7A3704DB31F54415C8FC265BCAF50411F85EB11B71F5441050000000AD7A350CEAF504148E17A34BE1F54415C8FC245CEAF5041C3F5283CBC1F5441000000A0D0AF50411F85EB51BC1F544152B81E95D0AF50419A999929BE1F54410AD7A350CEAF504148E17A34BE1F5441
+</a>
+
+<b>
+01060000000100000001030000000100000067000000043EFFEB31B05041212B6D1AE51F5441ADA0761743B05041665B5949ED1F54419A99991943B05041A4703D4AED1F5441B81E859B49B05041F6285C1FEF1F5441F6285CDF4CB050411F85EB31F01F5441295C8F5251B05041C3F5280CF21F54411F85EBF157B0504185EB5178F51F5441F6285C2F5AB05041CDCCCCFCF61F544158FD99895BB05041B9E121EDF71F5441F6285C9F61B0504166666626FC1F544148E17A5469B05041EC51B82E03205441D839935069B050412A40853403205441C1FE02B569B05041106BBE86032054416FD66CCB71B050416A30BE6BFB1F544192AE933071B05041D251B0E1FA1F5441B81E850B71B0504148E17A14FB1F5441333333E370B0504152B81E05FB1F54410AD7A3406EB05041A4703D8AF81F544111DBC5E868B050412AD0C97FF31F5441A4703D8A63B050417B14AE97F71F544136EAD6E356B05041840F5DF9EC1F54416B53A4ED42B05041872C2CC0E61F544148E17AF441B050417B14AE87E61F544150C7D0B13EB050416B2937ABE61F54413D0AD7533CB050410AD7A340E51F544185EB51D839B050417B14AEF7E31F5441150BE13C3AB050414D28FB48E31F54418FC2F54835B05041F6285C4FE11F54412166D86F3AB05041FE827C4CDD1F54412923EBC23DB050414CC6EE5ED91F5441D5F08B9744B050418CA077C9D21F5441C75E667E3FB05041D5EBB78DCD1F54410A906CE03BB05041B3226B77CA1F5441B27A481134B05041341C3977C51F54417B14AE0734B050411F85EB71C51F54417B14AE6732B05041CDCCCC1CC41F5441AE47E12A2FB0504166666606C11F5441828F04BB2EB050418F617C8DC01F5441CDCCCCCC2BB05041295C8F62BD1F54419514CBE629B05041CF6354F5BA1F54412CECDFE128B05041D5BA0EC7B91F54419A99994929B05041CDCCCC4CB91F5441CDCCCC9C2BB05041CDCCCC3CB61F5441A4703DCA2CB050411F85EBA1B41F54411F85EB912DB050411F85EB91B31F544185EB51282FB050418FC2F528B11F54419A9999C92FB05041F6285CCFAF1F5441AE47E18A2EB050413D0AD763AC1F5441666666E62BB050419A999969A51F54415C8FC2352BB050419A999979A51F54417B14AE6726B050419A9999D9A51F54415C8FC20520B05041713D0A47A01F54410AD7A3B01FB05041F6285C8FA01F5441A4703D3A1FB0504166666626A11F5441EC51B8DE1EB05041F6285C1FA21F5441B81E85EB1DB0504152B81E05A21F54411F85EBF11DB050419A9999A99F1F544114AE47D11DB05041295C8FA29E1F5441AE47E1CA1CB050417B14AEF79C1F5441B81E85EB1BB05041A4703DCA9B1F5441333333A31BB0504114AE47F19A1F5441295C8F821BB050418FC2F5A8991F54419A9999A91BB05041B81E859B971F54415C8FC2051CB050419A999939961F544185EB51681CB05041C3F5282C951F5441713D0AB71CB050413D0AD7E3941F54413D0AD7431DB050417B14AEB7931F5441C3F528FC1AB0504148E17A94911F5441AE47E19A18B05041A4703D1A8F1F5441D7A3706D15B05041B81E859B8B1F54411F85EB7112B05041F6285C2F881F544185EB51080EB05041000000F08D1F5441AE47E1CA03B050419A9999499B1F5441CDCCCC1CFDAF50413D0AD7B3A11F5441C3F5289CFDAF50411F85EB91A21F544166666636FEAF50415C8FC225A41F5441333333E3FDAF50411F85EBD1A51F54413D0AD793FDAF504100000010A71F54419A9999E9FCAF504185EB51E8A71F5441CDCCCC9CFBAF50411F85EBE1A81F544148E17A14FAAF50417B14AEB7A91F54413D0AD7F3F7AF50415C8FC225AA1F5441CDCCCCECF6AF5041B81E85DBA91F544152B81E95F5AF50417B14AEE7A81F5441D7A3709DF3AF504185EB51B8AA1F5441B81E853BEEAF5041CDCCCC3CB01F5441A4703DDAECAF50415C8FC2B5B11F54413D0AD703ECAF504185EB51F8B21F544114AE47B1F6AF50411F85EB11BA1F54411F85EB2101B05041C3F528DCBF1F5441E17A140E06B0504100000080C21F5441E17A14BE08B0504114AE47F1C31F5441E17A140E10B05041295C8F42C81F5441F6285C6F15B05041D7A3707DCB1F5441B81E851B15B05041E17A140ECD1F5441B5A6FE0F16B050412C5033ABCE1F54417A4777BA17B050411797595FD11F544151364DB919B050418D2C6923D31F5441369197BB1EB05041FF7D2381D71F544196BF635D27B050411DCDDD80DE1F54412F50FA182BB0504199224889E11F544198D3F1A92DB05041ACF4BA00E21F5441043EFFEB31B05041212B6D1AE51F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395097 - 235229
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A01000066666676F2B65041E17A148E7D185441295C8F02EDB65041B81E857B81185441F6285C1FEAB650411F85EB9183185441666666A6F3B65041E17A149E8A1854413D0AD743F4B65041295C8F828B18544133333363F7B650417B14AE0792185441666666F6FAB65041F6285C4F8F185441C3F528ACFEB6504152B81E858C1854413D0AD793FFB650417B14AED78B18544185EB519802B750411F85EB81891854418FC2F5B805B750418FC2F528871854413333333308B75041EC51B84E8518544114AE47110CB75041EC51B84E821854413333338309B75041F6285CDF7E185441666666260BB750411F85EBC17D1854418FC2F5280FB750417B14AEE77A18544152B81EE513B750417B14AEA7771854411F85EBD116B7504148E17A9475185441C3F5288C17B7504114AE471175185441AE47E12A18B75041E17A14AE741854419A9999A918B75041C3F5286C74185441000000001DB7504185EB510872185441713D0AB721B750417B14AE676F1854417B14AE8726B75041C3F528CC6C185441C3F5286C2BB75041A4703D1A6A1854410AD7A32030B750413D0AD77367185441E17A14FE33B750415C8FC275651854410AD7A3B033B750415C8FC2F5631854418FC2F56833B75041D7A370ED611854413D0AD71333B75041295C8F825F1854413D0AD70333B75041333333735E185441B81E852B33B75041E17A14EE5D1854413333335333B750411F85EB915D185441295C8F8233B750419A9999395D185441E17A14BE33B750415C8FC2D55C18544152B81E2534B75041D7A3706D5C18544185EB51A834B750411F85EBE15B1854410AD7A39036B75041666666065A1854415C8FC2A537B75041333333D3591854413D0AD7C339B750418FC2F5F85818544185EB51983AB750418FC2F59858185441C3F528FC3BB75041D7A3703D58185441713D0A573DB75041F6285CEF57185441B81E856B3EB75041C3F5287C57185441AE47E17A3FB750419A9999F956185441D7A370DD40B7504185EB51485618544185EB51C843B75041295C8F52561854416666665646B750413333335356185441A4703D6A47B750413D0AD75356185441A4703DAA49B750418FC2F5185618544114AE479149B750419A9999E953185441C3F528AC48B75041D7A3709D531854413333336349B7504114AE47F151185441713D0A674EB7504114AE47A150185441295C8FC24EB75041A4703D3A51185441295C8FA24FB75041713D0A1751185441713D0A674FB75041333333A34F18544185EB51D84EB750410AD7A3504C1854419A9999A94EB75041295C8F424B185441AE47E17A4EB750419A9999A94A185441295C8F224EB75041666666464A185441295C8F624DB75041B81E854B4A1854417B14AEE74CB750410AD7A3904A1854417B14AE874CB750411F85EBB14A185441C3F5283C4BB75041A4703D8A4A1854410AD7A3004AB75041F6285C3F4A1854413333335349B750418FC2F5384A18544148E17A3449B75041A4703DAA4B185441AE47E1FA48B75041C3F528FC4B185441E17A14AE48B75041F6285C1F4C1854415C8FC24548B75041A4703D1A4C185441A4703DDA47B7504152B81EF54B18544152B81E8547B750415C8FC2B54B1854418FC2F51847B750415C8FC2554B18544114AE47C146B75041EC51B8CE4A185441F6285C7F46B750417B14AE474A1854410AD7A32046B75041E17A143E49185441B81E85BB44B7504148E17AB44918544185EB515842B75041D7A3704D4A185441A4703D8A3FB75041C3F5286C4A185441333333D33AB750410AD7A3104A185441333333C339B7504114AE47A14A1854417B14AE1739B750415C8FC2454B1854413D0AD71338B7504148E17AA44C185441F6285C0F37B75041713D0AB74E18544152B81EC535B750419A9999B951185441295C8FA234B750416666662654185441295C8F0234B7504148E17A345518544185EB515833B750418FC2F53856185441C3F5288C31B750418FC2F51858185441F6285C6F2FB750419A9999F959185441713D0A672DB75041E17A149E5B185441295C8FC22BB75041A4703D1A5D1854411F85EBE129B750418FC2F5C85E1854413D0AD78328B75041713D0AD75F18544152B81E7527B75041F6285C4F601854413333334327B75041D7A370CD5F1854411F85EB5128B75041713D0A375F1854417B14AE8729B75041CDCCCC3C5E18544185EB51682BB75041E17A148E5C185441295C8F022DB750417B14AE075B18544114AE47012FB75041B81E858B591854413D0AD71331B75041713D0A9757185441000000E032B750410AD7A3C0551854410AD7A3D033B75041C3F5286C54185441AE47E11A35B75041D7A3707D511854418FC2F57836B75041EC51B83E4E185441D7A3702D37B7504185EB51B84C1854413D0AD71338B750413D0AD7634B1854415C8FC2E538B750417B14AE874A18544114AE47A139B75041295C8FE249185441F6285C1F37B750419A99994949185441000000C035B750418FC2F5584918544152B81E0534B7504114AE47014A18544152B81EB532B750415C8FC2F54A1854411F85EBA131B7504114AE47A14C1854418FC2F5B82FB75041C3F528BC4F185441B81E852B2EB750419A99994951185441A4703DEA2CB75041666666365218544114AE47812BB750415C8FC2C552185441666666F628B750413D0AD76353185441C3F5282C26B75041A4703DDA531854415C8FC20524B750411F85EB915418544152B81EC522B7504185EB51585518544114AE47C121B750418FC2F5E85518544152B81E5521B75041F6285C2F55185441A4703D5A22B750411F85EB91541854415C8FC20524B75041B81E85BB53185441C3F5282C26B75041333333235318544114AE47B129B75041A4703D8A5218544148E17A142CB75041295C8FD2511854410AD7A3C02DB75041F6285CCF501854410AD7A3102FB7504114AE47514F185441EC51B88E30B75041D7A370FD4C185441E17A14EE31B75041C3F5286C4A18544185EB51B833B750419A9999494918544114AE47A135B750411F85EBA1481854417B14AEC737B7504114AE47B148185441713D0A773AB75041A4703D3A49185441F6285CBF3DB750415C8FC2A5491854413D0AD71340B750413D0AD7C349185441EC51B81E43B750417B14AE77491854417B14AE8745B75041000000B0481854410AD7A35045B75041D7A3708D48185441F6285CFF44B75041CDCCCC5C481854419A9999D944B75041CDCCCC2C48185441F6285CBF44B75041D7A370DD471854418FC2F5A844B75041A4703D6A47185441AE47E17A44B75041295C8F12471854410000001044B75041295C8FA246185441CDCCCCDC43B750415C8FC215461854411F85EBA143B75041D7A370BD451854415C8FC2F542B75041D7A3702D45185441C3F528AC41B75041B81E853B44185441EC51B88E3FB7504185EB51B842185441C3F5280C3DB75041713D0AE740185441713D0AC738B75041D7A3700D3E18544152B81E3537B75041713D0AB7401854417B14AE0736B75041D7A3702D4218544152B81E5534B75041333333A343185441CDCCCC1C32B7504148E17A4445185441D7A3702D31B75041B81E854B4618544148E17A2431B75041CDCCCC4C46185441000000D030B7504148E17A2446185441295C8F2230B750411F85EB61451854418FC2F5C82FB750416666661645185441333333232FB75041C3F528AC44185441295C8F322DB75041A4703D7A431854410000007029B75041D7A3702D43185441B81E85AB26B75041000000D042185441713D0A4725B75041CDCCCCAC42185441B81E851B23B750417B14AEA743185441D7A370DD22B750413D0AD7D3431854417B14AE4722B7504152B81EE543185441295C8FB221B75041A4703DCA43185441EC51B86E21B75041EC51B8DE43185441AE47E1FA20B75041B81E853B4418544152B81E6520B75041C3F528AC44185441F6285CCF1FB750410000000045185441D7A3707D1FB75041AE47E10A45185441EC51B80E1EB7504185EB5128451854410AD7A3301DB7504148E17A34451854419A9999791BB7504185EB51F843185441000000D01AB75041C3F5285C43185441F6285CCF19B75041E17A14AE421854410000009019B75041B81E859B421854416666665619B75041C3F5289C421854410000003019B75041333333C342185441E17A140E19B750410AD7A3E042185441713D0AE718B7504114AE47E142185441EC51B89E18B75041A4703DCA421854411F85EB0117B750415C8FC2A541185441F6285CAF16B75041C3F5287C4118544152B81E4516B750415C8FC26541185441295C8FF215B7504152B81E4541185441C3F5288C15B75041000000F040185441CDCCCCFC14B750413D0AD753401854419A99997914B750411F85EB513F1854419A99990914B75041666666D63E185441CDCCCC3C13B7504148E17A443E1854411F85EBA112B750411F85EBE13D1854413333332312B75041F6285CAF3D18544148E17AA411B75041E17A149E3D1854413D0AD7D310B75041D7A3708D3D18544152B81ED50FB75041333333833D185441713D0AE70EB75041EC51B86E3D1854413D0AD7630EB750411F85EB613D1854418FC2F5B80DB750415C8FC2253D1854415C8FC2350DB7504152B81E153D185441AE47E1CA0CB75041666666163D185441AE47E14A0CB75041B81E852B3D185441A4703D1A0CB75041D7A3701D3D185441CDCCCCDC0BB750411F85EB013D185441F6285C3F0BB75041D7A3707D3C1854418FC2F5D80AB75041295C8F323C1854413D0AD7930AB75041AE47E11A3C185441C3F5283C0AB750418FC2F5083C185441666666060AB750419A9999093C1854418FC2F5B809B75041713D0A273C185441EC51B87E09B75041B81E853B3C18544152B81E0509B750411F85EB413C18544185EB510808B75041D7A370FD3B1854415C8FC24507B75041F6285CCF3B185441333333F306B75041B81E85CB3B185441000000A006B750419A9999E93B185441F6285C3F06B750415C8FC2153C1854411F85EBF105B75041A4703D2A3C1854417B14AE6705B750410AD7A3003C1854417B14AE0704B75041333333233B18544114AE47A103B7504152B81EE53A1854418FC2F55803B750411F85EBE13A185441333333C302B7504152B81E353B18544185EB515802B750417B14AE573B185441CDCCCCBC01B7504114AE47713B185441CDCCCC1C01B75041666666863B1854410AD7A39000B750417B14AEB73B1854413333331300B75041AE47E10A3C18544185EB5198FFB65041D7A3702D3C185441000000C0FDB650415C8FC2153C185441000000D0FEB65041E17A140E3F18544114AE4791FFB65041295C8FF240185441295C8FD2FFB65041E17A14CE4118544185EB51F8FFB650418FC2F5A843185441C3F5285C00B75041713D0AE7461854411F85EB2101B75041000000804E185441713D0A6701B750418FC2F598501854413D0AD76302B7504100000070501854418FC2F52803B750415C8FC2255018544185EB511804B75041666666C64F185441EC51B8BE04B750417B14AE674F1854410000006005B75041EC51B8FE4E18544114AE470106B75041A4703DBA4E185441713D0AB707B75041000000204E1854415C8FC2B509B750419A9999994D18544148E17AE40AB75041333333534D18544114AE47D10BB75041F6285CCF4C18544185EB51680CB75041AE47E18A4C1854410AD7A3E00CB7504152B81E754C185441666666B60DB7504185EB51584C185441E17A141E0EB750413D0AD7234C185441666666960EB75041EC51B8DE4B1854418FC2F5180FB75041A4703D9A4B185441D7A3701D11B75041713D0A574B185441713D0A9716B75041AE47E1AA4A18544152B81E4518B7504114AE47514B185441713D0A671BB7504152B81E2553185441713D0AF71CB7504148E17A34571854413D0AD7931EB75041F6285C4F5A185441A4703DEA1EB7504185EB51985A185441AE47E1DA1EB75041A4703DEA5A185441F6285C7F1EB7504185EB51F85B185441CDCCCCFC1DB75041C3F528AC5C185441295C8FB21DB750411F85EB915E185441A4703D1A1CB75041D7A3703D611854417B14AEC71BB75041333333C361185441E17A14BE1AB75041713D0A67631854415C8FC2551AB750417B14AED76318544148E17A041AB7504114AE47C163185441EC51B89E19B75041EC51B8AE63185441E17A143E19B750417B14AEA7631854418FC2F5D818B75041713D0AB763185441E17A142E18B7504185EB51E8631854410AD7A3C016B7504152B81E9564185441713D0A1715B750415C8FC28565185441666666C611B750411F85EB316718544185EB51380FB750419A99993968185441EC51B8FE0DB750410AD7A30069185441C3F528BC0AB7504114AE47316B1854415C8FC25509B7504148E17AB46C185441295C8F2207B7504185EB51586E185441C3F528FC04B750411F85EBF16F1854411F85EB0104B7504152B81EB57018544185EB510803B750411F85EBF17218544148E17A0403B75041CDCCCCAC76185441333333A3F7B65041666666667D185441713D0A27F6B6504185EB51687B185441A4703D4AF3B65041666666067D18544166666676F2B65041E17A148E7D185441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A3702D31B75041B81E854B4618544193D3EC2831B75041793C2A4C461854419D71126A31B750414D951A634B185441E17A14EE31B75041C3F5286C4A18544185EB51B833B750419A999949491854413177CEF033B75041F69D3A3649185441A1B75D0D34B75041036125FE491854419FB75D0D34B75041046125FE491854419FB75D0D34B75041076125FE4918544152B81E0534B7504114AE47014A18544152B81EB532B750415C8FC2F54A1854411F85EBA131B7504114AE47A14C1854412746BB3431B75041805FC8524D1854412D2EC41431B750417C184ED04F185441FC49C6F130B7504199CFC15C51185441B2E3353B32B75041C2FB280754185441629D8F6834B75041FFEBF9F74E1854414544D25C36B7504167B497B24C1854415C8FC2E538B750417B14AE874A18544114AE47A139B75041295C8FE249185441F6285C1F37B750419A99994949185441000000C035B750418FC2F55849185441774FF52434B7504109FC2DF549185441774FF52434B750419F2F58244918544114AE47A135B750411F85EBA1481854417B14AEC737B7504114AE47B1481854411C925E0E39B750412AEC1CE548185441BE701F6C38B750419F0D71E245185441DFC9E34035B75041C0BFD69E45185441D7A3702D31B75041B81E854B46185441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395097 - 397580
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A01000066666676F2B65041E17A148E7D185441295C8F02EDB65041B81E857B81185441F6285C1FEAB650411F85EB9183185441666666A6F3B65041E17A149E8A1854413D0AD743F4B65041295C8F828B18544133333363F7B650417B14AE0792185441666666F6FAB65041F6285C4F8F185441C3F528ACFEB6504152B81E858C1854413D0AD793FFB650417B14AED78B18544185EB519802B750411F85EB81891854418FC2F5B805B750418FC2F528871854413333333308B75041EC51B84E8518544114AE47110CB75041EC51B84E821854413333338309B75041F6285CDF7E185441666666260BB750411F85EBC17D1854418FC2F5280FB750417B14AEE77A18544152B81EE513B750417B14AEA7771854411F85EBD116B7504148E17A9475185441C3F5288C17B7504114AE471175185441AE47E12A18B75041E17A14AE741854419A9999A918B75041C3F5286C74185441000000001DB7504185EB510872185441713D0AB721B750417B14AE676F1854417B14AE8726B75041C3F528CC6C185441C3F5286C2BB75041A4703D1A6A1854410AD7A32030B750413D0AD77367185441E17A14FE33B750415C8FC275651854410AD7A3B033B750415C8FC2F5631854418FC2F56833B75041D7A370ED611854413D0AD71333B75041295C8F825F1854413D0AD70333B75041333333735E185441B81E852B33B75041E17A14EE5D1854413333335333B750411F85EB915D185441295C8F8233B750419A9999395D185441E17A14BE33B750415C8FC2D55C18544152B81E2534B75041D7A3706D5C18544185EB51A834B750411F85EBE15B1854410AD7A39036B75041666666065A1854415C8FC2A537B75041333333D3591854413D0AD7C339B750418FC2F5F85818544185EB51983AB750418FC2F59858185441C3F528FC3BB75041D7A3703D58185441713D0A573DB75041F6285CEF57185441B81E856B3EB75041C3F5287C57185441AE47E17A3FB750419A9999F956185441D7A370DD40B7504185EB51485618544185EB51C843B75041295C8F52561854416666665646B750413333335356185441A4703D6A47B750413D0AD75356185441A4703DAA49B750418FC2F5185618544114AE479149B750419A9999E953185441C3F528AC48B75041D7A3709D531854413333336349B7504114AE47F151185441713D0A674EB7504114AE47A150185441295C8FC24EB75041A4703D3A51185441295C8FA24FB75041713D0A1751185441713D0A674FB75041333333A34F18544185EB51D84EB750410AD7A3504C1854419A9999A94EB75041295C8F424B185441AE47E17A4EB750419A9999A94A185441295C8F224EB75041666666464A185441295C8F624DB75041B81E854B4A1854417B14AEE74CB750410AD7A3904A1854417B14AE874CB750411F85EBB14A185441C3F5283C4BB75041A4703D8A4A1854410AD7A3004AB75041F6285C3F4A1854413333335349B750418FC2F5384A18544148E17A3449B75041A4703DAA4B185441AE47E1FA48B75041C3F528FC4B185441E17A14AE48B75041F6285C1F4C1854415C8FC24548B75041A4703D1A4C185441A4703DDA47B7504152B81EF54B18544152B81E8547B750415C8FC2B54B1854418FC2F51847B750415C8FC2554B18544114AE47C146B75041EC51B8CE4A185441F6285C7F46B750417B14AE474A1854410AD7A32046B75041E17A143E49185441B81E85BB44B7504148E17AB44918544185EB515842B75041D7A3704D4A185441A4703D8A3FB75041C3F5286C4A185441333333D33AB750410AD7A3104A185441333333C339B7504114AE47A14A1854417B14AE1739B750415C8FC2454B1854413D0AD71338B7504148E17AA44C185441F6285C0F37B75041713D0AB74E18544152B81EC535B750419A9999B951185441295C8FA234B750416666662654185441295C8F0234B7504148E17A345518544185EB515833B750418FC2F53856185441C3F5288C31B750418FC2F51858185441F6285C6F2FB750419A9999F959185441713D0A672DB75041E17A149E5B185441295C8FC22BB75041A4703D1A5D1854411F85EBE129B750418FC2F5C85E1854413D0AD78328B75041713D0AD75F18544152B81E7527B75041F6285C4F601854413333334327B75041D7A370CD5F1854411F85EB5128B75041713D0A375F1854417B14AE8729B75041CDCCCC3C5E18544185EB51682BB75041E17A148E5C185441295C8F022DB750417B14AE075B18544114AE47012FB75041B81E858B591854413D0AD71331B75041713D0A9757185441000000E032B750410AD7A3C0551854410AD7A3D033B75041C3F5286C54185441AE47E11A35B75041D7A3707D511854418FC2F57836B75041EC51B83E4E185441D7A3702D37B7504185EB51B84C1854413D0AD71338B750413D0AD7634B1854415C8FC2E538B750417B14AE874A18544114AE47A139B75041295C8FE249185441F6285C1F37B750419A99994949185441000000C035B750418FC2F5584918544152B81E0534B7504114AE47014A18544152B81EB532B750415C8FC2F54A1854411F85EBA131B7504114AE47A14C1854418FC2F5B82FB75041C3F528BC4F185441B81E852B2EB750419A99994951185441A4703DEA2CB75041666666365218544114AE47812BB750415C8FC2C552185441666666F628B750413D0AD76353185441C3F5282C26B75041A4703DDA531854415C8FC20524B750411F85EB915418544152B81EC522B7504185EB51585518544114AE47C121B750418FC2F5E85518544152B81E5521B75041F6285C2F55185441A4703D5A22B750411F85EB91541854415C8FC20524B75041B81E85BB53185441C3F5282C26B75041333333235318544114AE47B129B75041A4703D8A5218544148E17A142CB75041295C8FD2511854410AD7A3C02DB75041F6285CCF501854410AD7A3102FB7504114AE47514F185441EC51B88E30B75041D7A370FD4C185441E17A14EE31B75041C3F5286C4A18544185EB51B833B750419A9999494918544114AE47A135B750411F85EBA1481854417B14AEC737B7504114AE47B148185441713D0A773AB75041A4703D3A49185441F6285CBF3DB750415C8FC2A5491854413D0AD71340B750413D0AD7C349185441EC51B81E43B750417B14AE77491854417B14AE8745B75041000000B0481854410AD7A35045B75041D7A3708D48185441F6285CFF44B75041CDCCCC5C481854419A9999D944B75041CDCCCC2C48185441F6285CBF44B75041D7A370DD471854418FC2F5A844B75041A4703D6A47185441AE47E17A44B75041295C8F12471854410000001044B75041295C8FA246185441CDCCCCDC43B750415C8FC215461854411F85EBA143B75041D7A370BD451854415C8FC2F542B75041D7A3702D45185441C3F528AC41B75041B81E853B44185441EC51B88E3FB7504185EB51B842185441C3F5280C3DB75041713D0AE740185441713D0AC738B75041D7A3700D3E18544152B81E3537B75041713D0AB7401854417B14AE0736B75041D7A3702D4218544152B81E5534B75041333333A343185441CDCCCC1C32B7504148E17A4445185441D7A3702D31B75041B81E854B4618544148E17A2431B75041CDCCCC4C46185441000000D030B7504148E17A2446185441295C8F2230B750411F85EB61451854418FC2F5C82FB750416666661645185441333333232FB75041C3F528AC44185441295C8F322DB75041A4703D7A431854410000007029B75041D7A3702D43185441B81E85AB26B75041000000D042185441713D0A4725B75041CDCCCCAC42185441B81E851B23B750417B14AEA743185441D7A370DD22B750413D0AD7D3431854417B14AE4722B7504152B81EE543185441295C8FB221B75041A4703DCA43185441EC51B86E21B75041EC51B8DE43185441AE47E1FA20B75041B81E853B4418544152B81E6520B75041C3F528AC44185441F6285CCF1FB750410000000045185441D7A3707D1FB75041AE47E10A45185441EC51B80E1EB7504185EB5128451854410AD7A3301DB7504148E17A34451854419A9999791BB7504185EB51F843185441000000D01AB75041C3F5285C43185441F6285CCF19B75041E17A14AE421854410000009019B75041B81E859B421854416666665619B75041C3F5289C421854410000003019B75041333333C342185441E17A140E19B750410AD7A3E042185441713D0AE718B7504114AE47E142185441EC51B89E18B75041A4703DCA421854411F85EB0117B750415C8FC2A541185441F6285CAF16B75041C3F5287C4118544152B81E4516B750415C8FC26541185441295C8FF215B7504152B81E4541185441C3F5288C15B75041000000F040185441CDCCCCFC14B750413D0AD753401854419A99997914B750411F85EB513F1854419A99990914B75041666666D63E185441CDCCCC3C13B7504148E17A443E1854411F85EBA112B750411F85EBE13D1854413333332312B75041F6285CAF3D18544148E17AA411B75041E17A149E3D1854413D0AD7D310B75041D7A3708D3D18544152B81ED50FB75041333333833D185441713D0AE70EB75041EC51B86E3D1854413D0AD7630EB750411F85EB613D1854418FC2F5B80DB750415C8FC2253D1854415C8FC2350DB7504152B81E153D185441AE47E1CA0CB75041666666163D185441AE47E14A0CB75041B81E852B3D185441A4703D1A0CB75041D7A3701D3D185441CDCCCCDC0BB750411F85EB013D185441F6285C3F0BB75041D7A3707D3C1854418FC2F5D80AB75041295C8F323C1854413D0AD7930AB75041AE47E11A3C185441C3F5283C0AB750418FC2F5083C185441666666060AB750419A9999093C1854418FC2F5B809B75041713D0A273C185441EC51B87E09B75041B81E853B3C18544152B81E0509B750411F85EB413C18544185EB510808B75041D7A370FD3B1854415C8FC24507B75041F6285CCF3B185441333333F306B75041B81E85CB3B185441000000A006B750419A9999E93B185441F6285C3F06B750415C8FC2153C1854411F85EBF105B75041A4703D2A3C1854417B14AE6705B750410AD7A3003C1854417B14AE0704B75041333333233B18544114AE47A103B7504152B81EE53A1854418FC2F55803B750411F85EBE13A185441333333C302B7504152B81E353B18544185EB515802B750417B14AE573B185441CDCCCCBC01B7504114AE47713B185441CDCCCC1C01B75041666666863B1854410AD7A39000B750417B14AEB73B1854413333331300B75041AE47E10A3C18544185EB5198FFB65041D7A3702D3C185441000000C0FDB650415C8FC2153C185441000000D0FEB65041E17A140E3F18544114AE4791FFB65041295C8FF240185441295C8FD2FFB65041E17A14CE4118544185EB51F8FFB650418FC2F5A843185441C3F5285C00B75041713D0AE7461854411F85EB2101B75041000000804E185441713D0A6701B750418FC2F598501854413D0AD76302B7504100000070501854418FC2F52803B750415C8FC2255018544185EB511804B75041666666C64F185441EC51B8BE04B750417B14AE674F1854410000006005B75041EC51B8FE4E18544114AE470106B75041A4703DBA4E185441713D0AB707B75041000000204E1854415C8FC2B509B750419A9999994D18544148E17AE40AB75041333333534D18544114AE47D10BB75041F6285CCF4C18544185EB51680CB75041AE47E18A4C1854410AD7A3E00CB7504152B81E754C185441666666B60DB7504185EB51584C185441E17A141E0EB750413D0AD7234C185441666666960EB75041EC51B8DE4B1854418FC2F5180FB75041A4703D9A4B185441D7A3701D11B75041713D0A574B185441713D0A9716B75041AE47E1AA4A18544152B81E4518B7504114AE47514B185441713D0A671BB7504152B81E2553185441713D0AF71CB7504148E17A34571854413D0AD7931EB75041F6285C4F5A185441A4703DEA1EB7504185EB51985A185441AE47E1DA1EB75041A4703DEA5A185441F6285C7F1EB7504185EB51F85B185441CDCCCCFC1DB75041C3F528AC5C185441295C8FB21DB750411F85EB915E185441A4703D1A1CB75041D7A3703D611854417B14AEC71BB75041333333C361185441E17A14BE1AB75041713D0A67631854415C8FC2551AB750417B14AED76318544148E17A041AB7504114AE47C163185441EC51B89E19B75041EC51B8AE63185441E17A143E19B750417B14AEA7631854418FC2F5D818B75041713D0AB763185441E17A142E18B7504185EB51E8631854410AD7A3C016B7504152B81E9564185441713D0A1715B750415C8FC28565185441666666C611B750411F85EB316718544185EB51380FB750419A99993968185441EC51B8FE0DB750410AD7A30069185441C3F528BC0AB7504114AE47316B1854415C8FC25509B7504148E17AB46C185441295C8F2207B7504185EB51586E185441C3F528FC04B750411F85EBF16F1854411F85EB0104B7504152B81EB57018544185EB510803B750411F85EBF17218544148E17A0403B75041CDCCCCAC76185441333333A3F7B65041666666667D185441713D0A27F6B6504185EB51687B185441A4703D4AF3B65041666666067D18544166666676F2B65041E17A148E7D185441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A3702D31B75041B81E854B4618544193D3EC2831B75041793C2A4C461854419D71126A31B750414D951A634B185441E17A14EE31B75041C3F5286C4A18544185EB51B833B750419A999949491854413177CEF033B75041F69D3A3649185441A1B75D0D34B75041036125FE491854419FB75D0D34B75041046125FE491854419FB75D0D34B75041076125FE4918544152B81E0534B7504114AE47014A18544152B81EB532B750415C8FC2F54A1854411F85EBA131B7504114AE47A14C1854412746BB3431B75041805FC8524D1854412D2EC41431B750417C184ED04F185441FC49C6F130B7504199CFC15C51185441B2E3353B32B75041C2FB280754185441629D8F6834B75041FFEBF9F74E1854414544D25C36B7504167B497B24C1854415C8FC2E538B750417B14AE874A18544114AE47A139B75041295C8FE249185441F6285C1F37B750419A99994949185441000000C035B750418FC2F55849185441774FF52434B7504109FC2DF549185441774FF52434B750419F2F58244918544114AE47A135B750411F85EBA1481854417B14AEC737B7504114AE47B1481854411C925E0E39B750412AEC1CE548185441BE701F6C38B750419F0D71E245185441DFC9E34035B75041C0BFD69E45185441D7A3702D31B75041B81E854B46185441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395171 - 1746675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000030000006A000000C3F528CCB4A05041A4703DFA091A5441F6285CBFBBA05041CDCCCCACFF195441F6285C2FBFA050418FC2F5A8FA19544100000040BEA0504100000070F9195441B81E856BBBA05041AE47E12AF6195441713D0A67B8A050415C8FC2E5F21954417B14AEB7B3A05041EC51B87EEE195441666666E6ADA05041EC51B85EE9195441F6285C8FA9A050418FC2F598E51954413D0AD753A7A05041D7A3707DE31954418FC2F5C8A5A05041AE47E1DAE1195441713D0A77A4A0504100000040E0195441C3F528BCA2A0504148E17AF4DD19544114AE47F1A0A0504185EB5148DB195441713D0A379FA050413D0AD793D819544148E17AB49DA050417B14AEC7D51954418FC2F5989BA050418FC2F5D8D1195441E17A14EE99A050413D0AD753CE19544148E17AC498A0504185EB5108CC1954411F85EB2197A0504152B81E65CA1954413333330398A050418FC2F5C8CC1954410AD7A3F093A05041F6285C7FD0195441CDCCCCFC8EA050417B14AEB7CB1954418FC2F5788CA05041295C8FD2CD195441EC51B81E8BA050410AD7A360CC195441F6285C9F8BA05041000000E0CB195441000000F08EA0504148E17AC4C81954411F85EBE18CA050418FC2F5A8C719544148E17AC48EA050413D0AD763C4195441B81E850B8EA05041AE47E1EAC3195441E17A14AE8AA0504185EB5148C219544114AE47D187A0504166666606C1195441666666A685A05041CDCCCC1CC0195441C3F5284C84A05041C3F528BCBF195441000000B081A05041B81E851BBF195441333333A37EA05041A4703D4ABE195441666666B67BA050419A9999C9BD195441AE47E15A79A0504185EB5148BD195441713D0A3777A0504185EB51F8BC1954410AD7A3C074A05041666666E6BC195441666666B670A050411F85EB91C2195441B81E857B62A050418FC2F578C21954410AD7A30061A05041C3F528BCC31954410AD7A3F05EA05041C3F5283CC71954410AD7A3805EA05041C3F5280CCB1954410AD7A3A05BA05041C3F5286CCE1954410AD7A3C05AA05041C3F528DCD21954410AD7A39057A05041C3F528BCD51954410AD7A3D055A05041C3F5280CDB1954410AD7A3404DA05041C3F528ECE81954410AD7A3904AA05041C3F5285CF01954410AD7A3A04AA05041C3F5284CF51954410AD7A3404CA05041C3F528ECFC1954413D0AD7F348A05041A4703DBA021A544114AE47C149A05041F6285C7F031A5441F6285C4F4DA05041295C8FB2061A5441AE47E12A4DA050411F85EB11091A5441666666B64EA05041E17A140E0A1A5441AE47E15A53A05041A4703D6A051A5441AE47E1DA57A0504148E17AD4011A5441CDCCCC4C5BA050411F85EBF1FE1954418FC2F5885EA0504166666666FD19544148E17A1460A0504166666666FD195441295C8F4262A0504148E17A74FE195441295C8F9260A05041A4703DEA001A5441AE47E15A5CA0504185EB5138041A5441EC51B8FE57A0504166666616081A54418FC2F54853A0504185EB51380D1A5441AE47E1AA51A05041000000C00F1A5441AE47E1DA4EA05041C3F528FC121A5441CDCCCC5C4EA05041E17A144E151A5441EC51B88E4FA0504185EB5108191A5441295C8F1253A05041000000B01C1A5441AE47E1BA56A05041666666C61B1A54415C8FC2555AA05041295C8F521B1A54418FC2F5185FA0504185EB5168251A5441E17A142E64A05041C3F528DC261A5441295C8FB269A05041E17A144E271A5441CDCCCCEC6BA05041C3F528FC231A5441AE47E12A6FA05041A4703D3A221A54410AD7A3E072A0504100000080221A5441666666E676A0504185EB51D8241A5441EC51B81E7BA050413D0AD7132A1A5441CDCCCC0C7EA050411F85EBA12D1A5441EC51B81E7BA0504185EB5158311A54413D0AD7A37DA0504166666606341A5441F6285C1F81A05041C3F5281C351A54410000006085A0504148E17AF4341A5441F6285CEF88A05041E17A14CE351A544152B81E558BA050417B14AEA7361A544114AE470188A0504185EB51F8371A5441D7A3705D83A05041AE47E1AA381A5441E17A14DE7CA0504148E17AE4371A5441D7A3702D7DA05041000000C0391A54417B14AEF780A050411F85EB513F1A5441B81E85FB83A050415C8FC205411A5441CDCCCC9C86A05041EC51B82E421A5441666666B68AA05041E17A147E421A544114AE47B18CA0504133333393441A544114AE47A193A05041D7A3705D3A1A544148E17AF496A0504152B81E85351A5441000000609CA05041713D0A972D1A544114AE4701A5A050413D0AD7F3201A54415C8FC2C5ACA050411F85EB81151A54411F85EB71B1A0504152B81EB50E1A5441C3F528CCB4A05041A4703DFA091A54410A000000EC51B87E9BA0504166666696151A5441EC51B85E9AA05041E17A146E161A54410AD7A35099A05041C3F5283C151A54410AD7A31097A0504148E17AD4131A54416666667694A0504148E17A94111A5441CDCCCCFC92A050411F85EB410F1A54418FC2F58894A05041000000F00C1A54418FC2F53896A0504185EB51580E1A544148E17A7499A0504148E17A94111A5441EC51B87E9BA0504166666696151A54410D00000048E17AC473A0504100000010FC1954418FC2F51871A0504148E17A34FC1954410AD7A3206FA0504185EB5188F9195441AE47E13A6DA050411F85EB91FB195441CDCCCCEC69A0504166666646FC1954418FC2F5A868A0504185EB51F8F81954418FC2F5E86AA0504100000090F71954410AD7A3506CA0504148E17A34F3195441295C8F126EA05041C3F528ACF0195441CDCCCC3C71A05041C3F528ACF0195441AE47E1FA73A0504100000080F2195441EC51B81E74A0504185EB51D8F719544148E17AC473A0504100000010FC1954410103000000010000004400000033333313D6A050415C8FC2E5D81954417B14AE47DDA050418FC2F538CE195441AE47E18ADFA0504148E17AF4CA195441E17A144EDEA0504185EB5138C91954413D0AD7A3DCA05041C3F5282CC7195441295C8FF2D8A0504100000090C3195441B81E853BD5A05041F6285CAFBF195441295C8FD2D3A05041295C8F22BE1954410AD7A390D1A0504148E17A24BA195441CDCCCC6CCFA05041295C8F72B71954410AD7A350CEA0504152B81E85B6195441A4703D8ACCA05041C3F528BCB4195441CDCCCC2CCDA050410AD7A350B31954413D0AD733CBA050410AD7A3B0B11954411F85EB21C4A0504133333323B519544152B81E85BAA050417B14AE47A91954415C8FC285AEA050417B14AEB7A719544114AE47C1AFA0504166666626A51954411F85EB51AFA050418FC2F548A51954410AD7A3F0ABA05041CDCCCC4CA619544100000000ABA050411F85EBD1A61954419A999919A9A05041B81E855BA7195441EC51B86EA8A05041C3F528ECA71954419A9999D9A5A05041A4703DDAA8195441EC51B82EA4A05041E17A14DEA9195441AE47E12A9FA050410AD7A3F0AC1954410AD7A30096A0504185EB51F8AD19544152B81E558FA05041713D0A07AF19544148E17A8489A05041D7A370BDAF1954413D0AD76385A05041CDCCCC9CB01954411F85EB717AA0504185EB51E8B4195441AE47E13A78A0504148E17A04B81954417B14AE2775A0504166666656BC195441F6285C4F77A05041713D0A67BC1954413D0AD7237AA050417B14AEC7BC195441000000907CA050410AD7A330BD1954415C8FC25580A050411F85EB11BE195441A4703D0A83A05041295C8FB2BE195441E17A14BE85A050413D0AD783BF195441A4703D2A88A050415C8FC275C0195441666666D68AA050417B14AE97C1195441AE47E1AA8DA050419A9999F9C2195441EC51B81E90A05041B81E854BC4195441333333C392A05041666666D6C5195441D7A3702D94A0504148E17AC4C41954410AD7A34096A05041CDCCCC0CC51954411F85EB0197A0504100000010C71954410AD7A32096A050411F85EB21C8195441A4703D6A97A0504148E17AA4C9195441D7A3705D99A050417B14AEC7CB1954417B14AED79AA050413D0AD793CE195441295C8F829CA050419A999939D219544152B81E259EA05041713D0A57D5195441666666269FA0504114AE47E1D6195441295C8F92A1A0504185EB5128DB195441EC51B80EA4A05041D7A3709DDE1954411F85EB01A6A050411F85EB31E1195441C3F5288CA7A0504148E17AE4E219544185EB5128AAA0504185EB5138E51954417B14AEF7AEA05041713D0A77E919544114AE47F1B4A05041713D0AC7EE195441713D0A87B8A05041CDCCCC2CF21954413D0AD763BBA050419A999939F51954410AD7A370BEA05041EC51B89EF81954418FC2F598BFA05041F6285C0FFA1954410AD7A3E0C3A05041F6285CCFF319544114AE47A1CDA0504114AE4771E519544133333313D6A050415C8FC2E5D8195441
+</a>
+
+<b>
+010600000001000000010300000003000000BB00000026266E09B7A05041C52026C3F0195441713D0A87B8A05041CDCCCC2CF21954413D0AD763BBA050419A999939F51954410AD7A370BEA05041EC51B89EF81954418FC2F598BFA05041F6285C0FFA195441E17A148EC1A05041A4703D3AFC195441EC51B8FEC3A05041D7A3702DFF1954417B14AE37C6A0504133333333021A544132A254D7D0A050412CC45232F21954416982E619DDA05041D47A38A7E019544100708831DBA05041448B5B50D11954417B14AE47DDA050418FC2F538CE195441AE47E18ADFA0504148E17AF4CA195441E17A144EDEA0504185EB5138C91954413D0AD7A3DCA05041C3F5282CC7195441295C8FF2D8A0504100000090C3195441B81E853BD5A05041F6285CAFBF195441295C8FD2D3A05041295C8F22BE1954410AD7A390D1A0504148E17A24BA195441CDCCCC6CCFA05041295C8F72B71954410AD7A350CEA0504152B81E85B6195441A4703D8ACCA05041C3F528BCB4195441CDCCCC2CCDA050410AD7A350B31954411F85EB21D3A05041B81E859BA61954415C8FC2A5D0A05041295C8F82A7195441F6285C1FCEA05041B81E853BA81954410AD7A330CCA05041A4703D4AA8195441C57F4D15CBA050411188DD2BAB195441ADDC896BC8A0504181DDFA90AC1954413B4191CAC3A050416B801223AD1954418C6F035EC0A0504130C6952FAC19544152B81E85BAA050417B14AE47A91954415C8FC285AEA050417B14AEB7A719544114AE47C1AFA0504166666626A51954411F85EB51AFA050418FC2F548A51954410AD7A3F0ABA05041CDCCCC4CA619544100000000ABA050411F85EBD1A61954419A999919A9A05041B81E855BA7195441EC51B86EA8A05041C3F528ECA71954419A9999D9A5A05041A4703DDAA8195441EC51B82EA4A05041E17A14DEA9195441AE47E12A9FA050410AD7A3F0AC1954410AD7A30096A0504185EB51F8AD19544152B81E558FA05041713D0A07AF19544148E17A8489A05041D7A370BDAF1954413D0AD76385A05041CDCCCC9CB01954411F85EB717AA0504185EB51E8B4195441AE47E13A78A0504148E17A04B81954417B14AE2775A0504166666656BC195441F6285C4F77A05041713D0A67BC1954413D0AD7237AA050417B14AEC7BC195441000000907CA050410AD7A330BD1954415C8FC25580A050411F85EB11BE195441A4703D0A83A05041295C8FB2BE195441E17A14BE85A050413D0AD783BF195441A4703D2A88A050415C8FC275C0195441666666D68AA050417B14AE97C1195441AE47E1AA8DA050419A9999F9C2195441EC51B81E90A05041B81E854BC4195441333333C392A05041666666D6C5195441D7A3702D94A0504148E17AC4C41954410AD7A34096A05041CDCCCC0CC51954411F85EB0197A0504100000010C71954410AD7A32096A050411F85EB21C8195441A4703D6A97A0504148E17AA4C9195441D7A3705D99A050417B14AEC7CB1954417B14AED79AA050413D0AD793CE195441295C8F829CA050419A999939D219544152B81E259EA05041713D0A57D5195441666666269FA0504114AE47E1D6195441295C8F92A1A0504185EB5128DB195441EC51B80EA4A05041D7A3709DDE1954411F85EB01A6A050411F85EB31E1195441C3F5288CA7A0504148E17AE4E219544185EB5128AAA0504185EB5138E51954417B14AEF7AEA05041713D0A77E919544114AE47F1B4A05041713D0AC7EE19544143DE7D4FB5A0504146045320EF1954417B14AEB7B3A05041EC51B87EEE195441666666E6ADA05041EC51B85EE9195441F6285C8FA9A050418FC2F598E51954413D0AD753A7A05041D7A3707DE31954418FC2F5C8A5A05041AE47E1DAE1195441713D0A77A4A0504100000040E0195441C3F528BCA2A0504148E17AF4DD19544114AE47F1A0A0504185EB5148DB195441713D0A379FA050413D0AD793D819544148E17AB49DA050417B14AEC7D51954418FC2F5989BA050418FC2F5D8D1195441E17A14EE99A050413D0AD753CE19544148E17AC498A0504185EB5108CC1954411F85EB2197A0504152B81E65CA1954413333330398A050418FC2F5C8CC1954410AD7A3F093A05041F6285C7FD0195441CDCCCCFC8EA050417B14AEB7CB1954418FC2F5788CA05041295C8FD2CD195441EC51B81E8BA050410AD7A360CC195441F6285C9F8BA05041000000E0CB195441000000F08EA0504148E17AC4C81954411F85EBE18CA050418FC2F5A8C719544148E17AC48EA050413D0AD763C4195441B81E850B8EA05041AE47E1EAC3195441E17A14AE8AA0504185EB5148C219544114AE47D187A0504166666606C1195441666666A685A05041CDCCCC1CC0195441C3F5284C84A05041C3F528BCBF195441000000B081A05041B81E851BBF195441333333A37EA05041A4703D4ABE195441666666B67BA050419A9999C9BD195441AE47E15A79A0504185EB5148BD195441713D0A3777A0504185EB51F8BC1954410AD7A3C074A05041666666E6BC195441666666B670A050411F85EB91C2195441B81E857B62A050418FC2F578C21954410AD7A30061A05041C3F528BCC31954410AD7A3F05EA05041C3F5283CC71954410AD7A3805EA05041C3F5280CCB1954410AD7A3A05BA05041C3F5286CCE1954410AD7A3C05AA05041C3F528DCD21954410AD7A39057A05041C3F528BCD51954410AD7A3D055A05041C3F5280CDB1954410AD7A3404DA05041C3F528ECE81954410AD7A3904AA05041C3F5285CF01954410AD7A3A04AA05041C3F5284CF51954410AD7A3404CA05041C3F528ECFC1954413D0AD7F348A05041A4703DBA021A544114AE47C149A05041F6285C7F031A5441F6285C4F4DA05041295C8FB2061A5441AE47E12A4DA050411F85EB11091A5441666666B64EA05041E17A140E0A1A5441AE47E15A53A05041A4703D6A051A5441AE47E1DA57A0504148E17AD4011A5441CDCCCC4C5BA050411F85EBF1FE1954418FC2F5885EA0504166666666FD19544148E17A1460A0504166666666FD195441295C8F4262A0504148E17A74FE195441295C8F9260A05041A4703DEA001A5441AE47E15A5CA0504185EB5138041A5441EC51B8FE57A0504166666616081A54418FC2F54853A0504185EB51380D1A5441AE47E1AA51A05041000000C00F1A5441AE47E1DA4EA05041C3F528FC121A5441CDCCCC5C4EA05041E17A144E151A5441EC51B88E4FA0504185EB5108191A5441295C8F1253A05041000000B01C1A5441AE47E1BA56A05041666666C61B1A54415C8FC2555AA05041295C8F521B1A54418FC2F5185FA0504185EB5168251A5441E17A142E64A05041C3F528DC261A5441295C8FB269A05041E17A144E271A5441CDCCCCEC6BA05041C3F528FC231A5441AE47E12A6FA05041A4703D3A221A54410AD7A3E072A0504100000080221A5441666666E676A0504185EB51D8241A5441EC51B81E7BA050413D0AD7132A1A5441CDCCCC0C7EA050411F85EBA12D1A5441EC51B81E7BA0504185EB5158311A54413D0AD7A37DA0504166666606341A5441F6285C1F81A05041C3F5281C351A54410000006085A0504148E17AF4341A5441F6285CEF88A05041E17A14CE351A544152B81E558BA050417B14AEA7361A544114AE470188A0504185EB51F8371A5441D7A3705D83A05041AE47E1AA381A5441E17A14DE7CA0504148E17AE4371A5441D7A3702D7DA05041000000C0391A54417B14AEF780A050411F85EB513F1A5441B81E85FB83A050415C8FC205411A5441CDCCCC9C86A05041EC51B82E421A5441666666B68AA05041E17A147E421A544114AE47B18CA0504133333393441A54413972FF0C92A05041E20853D5441A54418852BC5D99A050419C4B6E473F1A5441CD2BA34EA2A0504176B18C8A361A54415FE54690B2A050413E6F736D1E1A544128D09962BCA05041F256B256101A54413F8197BAC5A050418DBDC1E8021A54419A999969C3A050417B14AE77FF195441CDCCCC4CC1A0504148E17AF4FC195441F6285C2FBFA050418FC2F5A8FA19544100000040BEA0504100000070F9195441B81E856BBBA05041AE47E12AF6195441713D0A67B8A050415C8FC2E5F2195441584F7732B5A05041CAAF61E0EF195441B3B289C3B3A0504115A76A8BEE19544199F8DC62B5A05041F406EF30EF19544126266E09B7A05041C52026C3F01954410A000000EC51B87E9BA0504166666696151A5441EC51B85E9AA05041E17A146E161A54410AD7A35099A05041C3F5283C151A54410AD7A31097A0504148E17AD4131A54416666667694A0504148E17A94111A5441CDCCCCFC92A050411F85EB410F1A54418FC2F58894A05041000000F00C1A54418FC2F53896A0504185EB51580E1A544148E17A7499A0504148E17A94111A5441EC51B87E9BA0504166666696151A54410D00000048E17AC473A0504100000010FC1954418FC2F51871A0504148E17A34FC1954410AD7A3206FA0504185EB5188F9195441AE47E13A6DA050411F85EB91FB195441CDCCCCEC69A0504166666646FC1954418FC2F5A868A0504185EB51F8F81954418FC2F5E86AA0504100000090F71954410AD7A3506CA0504148E17A34F3195441295C8F126EA05041C3F528ACF0195441CDCCCC3C71A05041C3F528ACF0195441AE47E1FA73A0504100000080F2195441EC51B81E74A0504185EB51D8F719544148E17AC473A0504100000010FC195441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395171 - 3214062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000030000006A000000C3F528CCB4A05041A4703DFA091A5441F6285CBFBBA05041CDCCCCACFF195441F6285C2FBFA050418FC2F5A8FA19544100000040BEA0504100000070F9195441B81E856BBBA05041AE47E12AF6195441713D0A67B8A050415C8FC2E5F21954417B14AEB7B3A05041EC51B87EEE195441666666E6ADA05041EC51B85EE9195441F6285C8FA9A050418FC2F598E51954413D0AD753A7A05041D7A3707DE31954418FC2F5C8A5A05041AE47E1DAE1195441713D0A77A4A0504100000040E0195441C3F528BCA2A0504148E17AF4DD19544114AE47F1A0A0504185EB5148DB195441713D0A379FA050413D0AD793D819544148E17AB49DA050417B14AEC7D51954418FC2F5989BA050418FC2F5D8D1195441E17A14EE99A050413D0AD753CE19544148E17AC498A0504185EB5108CC1954411F85EB2197A0504152B81E65CA1954413333330398A050418FC2F5C8CC1954410AD7A3F093A05041F6285C7FD0195441CDCCCCFC8EA050417B14AEB7CB1954418FC2F5788CA05041295C8FD2CD195441EC51B81E8BA050410AD7A360CC195441F6285C9F8BA05041000000E0CB195441000000F08EA0504148E17AC4C81954411F85EBE18CA050418FC2F5A8C719544148E17AC48EA050413D0AD763C4195441B81E850B8EA05041AE47E1EAC3195441E17A14AE8AA0504185EB5148C219544114AE47D187A0504166666606C1195441666666A685A05041CDCCCC1CC0195441C3F5284C84A05041C3F528BCBF195441000000B081A05041B81E851BBF195441333333A37EA05041A4703D4ABE195441666666B67BA050419A9999C9BD195441AE47E15A79A0504185EB5148BD195441713D0A3777A0504185EB51F8BC1954410AD7A3C074A05041666666E6BC195441666666B670A050411F85EB91C2195441B81E857B62A050418FC2F578C21954410AD7A30061A05041C3F528BCC31954410AD7A3F05EA05041C3F5283CC71954410AD7A3805EA05041C3F5280CCB1954410AD7A3A05BA05041C3F5286CCE1954410AD7A3C05AA05041C3F528DCD21954410AD7A39057A05041C3F528BCD51954410AD7A3D055A05041C3F5280CDB1954410AD7A3404DA05041C3F528ECE81954410AD7A3904AA05041C3F5285CF01954410AD7A3A04AA05041C3F5284CF51954410AD7A3404CA05041C3F528ECFC1954413D0AD7F348A05041A4703DBA021A544114AE47C149A05041F6285C7F031A5441F6285C4F4DA05041295C8FB2061A5441AE47E12A4DA050411F85EB11091A5441666666B64EA05041E17A140E0A1A5441AE47E15A53A05041A4703D6A051A5441AE47E1DA57A0504148E17AD4011A5441CDCCCC4C5BA050411F85EBF1FE1954418FC2F5885EA0504166666666FD19544148E17A1460A0504166666666FD195441295C8F4262A0504148E17A74FE195441295C8F9260A05041A4703DEA001A5441AE47E15A5CA0504185EB5138041A5441EC51B8FE57A0504166666616081A54418FC2F54853A0504185EB51380D1A5441AE47E1AA51A05041000000C00F1A5441AE47E1DA4EA05041C3F528FC121A5441CDCCCC5C4EA05041E17A144E151A5441EC51B88E4FA0504185EB5108191A5441295C8F1253A05041000000B01C1A5441AE47E1BA56A05041666666C61B1A54415C8FC2555AA05041295C8F521B1A54418FC2F5185FA0504185EB5168251A5441E17A142E64A05041C3F528DC261A5441295C8FB269A05041E17A144E271A5441CDCCCCEC6BA05041C3F528FC231A5441AE47E12A6FA05041A4703D3A221A54410AD7A3E072A0504100000080221A5441666666E676A0504185EB51D8241A5441EC51B81E7BA050413D0AD7132A1A5441CDCCCC0C7EA050411F85EBA12D1A5441EC51B81E7BA0504185EB5158311A54413D0AD7A37DA0504166666606341A5441F6285C1F81A05041C3F5281C351A54410000006085A0504148E17AF4341A5441F6285CEF88A05041E17A14CE351A544152B81E558BA050417B14AEA7361A544114AE470188A0504185EB51F8371A5441D7A3705D83A05041AE47E1AA381A5441E17A14DE7CA0504148E17AE4371A5441D7A3702D7DA05041000000C0391A54417B14AEF780A050411F85EB513F1A5441B81E85FB83A050415C8FC205411A5441CDCCCC9C86A05041EC51B82E421A5441666666B68AA05041E17A147E421A544114AE47B18CA0504133333393441A544114AE47A193A05041D7A3705D3A1A544148E17AF496A0504152B81E85351A5441000000609CA05041713D0A972D1A544114AE4701A5A050413D0AD7F3201A54415C8FC2C5ACA050411F85EB81151A54411F85EB71B1A0504152B81EB50E1A5441C3F528CCB4A05041A4703DFA091A54410A000000EC51B87E9BA0504166666696151A5441EC51B85E9AA05041E17A146E161A54410AD7A35099A05041C3F5283C151A54410AD7A31097A0504148E17AD4131A54416666667694A0504148E17A94111A5441CDCCCCFC92A050411F85EB410F1A54418FC2F58894A05041000000F00C1A54418FC2F53896A0504185EB51580E1A544148E17A7499A0504148E17A94111A5441EC51B87E9BA0504166666696151A54410D00000048E17AC473A0504100000010FC1954418FC2F51871A0504148E17A34FC1954410AD7A3206FA0504185EB5188F9195441AE47E13A6DA050411F85EB91FB195441CDCCCCEC69A0504166666646FC1954418FC2F5A868A0504185EB51F8F81954418FC2F5E86AA0504100000090F71954410AD7A3506CA0504148E17A34F3195441295C8F126EA05041C3F528ACF0195441CDCCCC3C71A05041C3F528ACF0195441AE47E1FA73A0504100000080F2195441EC51B81E74A0504185EB51D8F719544148E17AC473A0504100000010FC1954410103000000010000004400000033333313D6A050415C8FC2E5D81954417B14AE47DDA050418FC2F538CE195441AE47E18ADFA0504148E17AF4CA195441E17A144EDEA0504185EB5138C91954413D0AD7A3DCA05041C3F5282CC7195441295C8FF2D8A0504100000090C3195441B81E853BD5A05041F6285CAFBF195441295C8FD2D3A05041295C8F22BE1954410AD7A390D1A0504148E17A24BA195441CDCCCC6CCFA05041295C8F72B71954410AD7A350CEA0504152B81E85B6195441A4703D8ACCA05041C3F528BCB4195441CDCCCC2CCDA050410AD7A350B31954413D0AD733CBA050410AD7A3B0B11954411F85EB21C4A0504133333323B519544152B81E85BAA050417B14AE47A91954415C8FC285AEA050417B14AEB7A719544114AE47C1AFA0504166666626A51954411F85EB51AFA050418FC2F548A51954410AD7A3F0ABA05041CDCCCC4CA619544100000000ABA050411F85EBD1A61954419A999919A9A05041B81E855BA7195441EC51B86EA8A05041C3F528ECA71954419A9999D9A5A05041A4703DDAA8195441EC51B82EA4A05041E17A14DEA9195441AE47E12A9FA050410AD7A3F0AC1954410AD7A30096A0504185EB51F8AD19544152B81E558FA05041713D0A07AF19544148E17A8489A05041D7A370BDAF1954413D0AD76385A05041CDCCCC9CB01954411F85EB717AA0504185EB51E8B4195441AE47E13A78A0504148E17A04B81954417B14AE2775A0504166666656BC195441F6285C4F77A05041713D0A67BC1954413D0AD7237AA050417B14AEC7BC195441000000907CA050410AD7A330BD1954415C8FC25580A050411F85EB11BE195441A4703D0A83A05041295C8FB2BE195441E17A14BE85A050413D0AD783BF195441A4703D2A88A050415C8FC275C0195441666666D68AA050417B14AE97C1195441AE47E1AA8DA050419A9999F9C2195441EC51B81E90A05041B81E854BC4195441333333C392A05041666666D6C5195441D7A3702D94A0504148E17AC4C41954410AD7A34096A05041CDCCCC0CC51954411F85EB0197A0504100000010C71954410AD7A32096A050411F85EB21C8195441A4703D6A97A0504148E17AA4C9195441D7A3705D99A050417B14AEC7CB1954417B14AED79AA050413D0AD793CE195441295C8F829CA050419A999939D219544152B81E259EA05041713D0A57D5195441666666269FA0504114AE47E1D6195441295C8F92A1A0504185EB5128DB195441EC51B80EA4A05041D7A3709DDE1954411F85EB01A6A050411F85EB31E1195441C3F5288CA7A0504148E17AE4E219544185EB5128AAA0504185EB5138E51954417B14AEF7AEA05041713D0A77E919544114AE47F1B4A05041713D0AC7EE195441713D0A87B8A05041CDCCCC2CF21954413D0AD763BBA050419A999939F51954410AD7A370BEA05041EC51B89EF81954418FC2F598BFA05041F6285C0FFA1954410AD7A3E0C3A05041F6285CCFF319544114AE47A1CDA0504114AE4771E519544133333313D6A050415C8FC2E5D8195441
+</a>
+
+<b>
+010600000001000000010300000003000000BB00000026266E09B7A05041C52026C3F0195441713D0A87B8A05041CDCCCC2CF21954413D0AD763BBA050419A999939F51954410AD7A370BEA05041EC51B89EF81954418FC2F598BFA05041F6285C0FFA195441E17A148EC1A05041A4703D3AFC195441EC51B8FEC3A05041D7A3702DFF1954417B14AE37C6A0504133333333021A544132A254D7D0A050412CC45232F21954416982E619DDA05041D47A38A7E019544100708831DBA05041448B5B50D11954417B14AE47DDA050418FC2F538CE195441AE47E18ADFA0504148E17AF4CA195441E17A144EDEA0504185EB5138C91954413D0AD7A3DCA05041C3F5282CC7195441295C8FF2D8A0504100000090C3195441B81E853BD5A05041F6285CAFBF195441295C8FD2D3A05041295C8F22BE1954410AD7A390D1A0504148E17A24BA195441CDCCCC6CCFA05041295C8F72B71954410AD7A350CEA0504152B81E85B6195441A4703D8ACCA05041C3F528BCB4195441CDCCCC2CCDA050410AD7A350B31954411F85EB21D3A05041B81E859BA61954415C8FC2A5D0A05041295C8F82A7195441F6285C1FCEA05041B81E853BA81954410AD7A330CCA05041A4703D4AA8195441C57F4D15CBA050411188DD2BAB195441ADDC896BC8A0504181DDFA90AC1954413B4191CAC3A050416B801223AD1954418C6F035EC0A0504130C6952FAC19544152B81E85BAA050417B14AE47A91954415C8FC285AEA050417B14AEB7A719544114AE47C1AFA0504166666626A51954411F85EB51AFA050418FC2F548A51954410AD7A3F0ABA05041CDCCCC4CA619544100000000ABA050411F85EBD1A61954419A999919A9A05041B81E855BA7195441EC51B86EA8A05041C3F528ECA71954419A9999D9A5A05041A4703DDAA8195441EC51B82EA4A05041E17A14DEA9195441AE47E12A9FA050410AD7A3F0AC1954410AD7A30096A0504185EB51F8AD19544152B81E558FA05041713D0A07AF19544148E17A8489A05041D7A370BDAF1954413D0AD76385A05041CDCCCC9CB01954411F85EB717AA0504185EB51E8B4195441AE47E13A78A0504148E17A04B81954417B14AE2775A0504166666656BC195441F6285C4F77A05041713D0A67BC1954413D0AD7237AA050417B14AEC7BC195441000000907CA050410AD7A330BD1954415C8FC25580A050411F85EB11BE195441A4703D0A83A05041295C8FB2BE195441E17A14BE85A050413D0AD783BF195441A4703D2A88A050415C8FC275C0195441666666D68AA050417B14AE97C1195441AE47E1AA8DA050419A9999F9C2195441EC51B81E90A05041B81E854BC4195441333333C392A05041666666D6C5195441D7A3702D94A0504148E17AC4C41954410AD7A34096A05041CDCCCC0CC51954411F85EB0197A0504100000010C71954410AD7A32096A050411F85EB21C8195441A4703D6A97A0504148E17AA4C9195441D7A3705D99A050417B14AEC7CB1954417B14AED79AA050413D0AD793CE195441295C8F829CA050419A999939D219544152B81E259EA05041713D0A57D5195441666666269FA0504114AE47E1D6195441295C8F92A1A0504185EB5128DB195441EC51B80EA4A05041D7A3709DDE1954411F85EB01A6A050411F85EB31E1195441C3F5288CA7A0504148E17AE4E219544185EB5128AAA0504185EB5138E51954417B14AEF7AEA05041713D0A77E919544114AE47F1B4A05041713D0AC7EE19544143DE7D4FB5A0504146045320EF1954417B14AEB7B3A05041EC51B87EEE195441666666E6ADA05041EC51B85EE9195441F6285C8FA9A050418FC2F598E51954413D0AD753A7A05041D7A3707DE31954418FC2F5C8A5A05041AE47E1DAE1195441713D0A77A4A0504100000040E0195441C3F528BCA2A0504148E17AF4DD19544114AE47F1A0A0504185EB5148DB195441713D0A379FA050413D0AD793D819544148E17AB49DA050417B14AEC7D51954418FC2F5989BA050418FC2F5D8D1195441E17A14EE99A050413D0AD753CE19544148E17AC498A0504185EB5108CC1954411F85EB2197A0504152B81E65CA1954413333330398A050418FC2F5C8CC1954410AD7A3F093A05041F6285C7FD0195441CDCCCCFC8EA050417B14AEB7CB1954418FC2F5788CA05041295C8FD2CD195441EC51B81E8BA050410AD7A360CC195441F6285C9F8BA05041000000E0CB195441000000F08EA0504148E17AC4C81954411F85EBE18CA050418FC2F5A8C719544148E17AC48EA050413D0AD763C4195441B81E850B8EA05041AE47E1EAC3195441E17A14AE8AA0504185EB5148C219544114AE47D187A0504166666606C1195441666666A685A05041CDCCCC1CC0195441C3F5284C84A05041C3F528BCBF195441000000B081A05041B81E851BBF195441333333A37EA05041A4703D4ABE195441666666B67BA050419A9999C9BD195441AE47E15A79A0504185EB5148BD195441713D0A3777A0504185EB51F8BC1954410AD7A3C074A05041666666E6BC195441666666B670A050411F85EB91C2195441B81E857B62A050418FC2F578C21954410AD7A30061A05041C3F528BCC31954410AD7A3F05EA05041C3F5283CC71954410AD7A3805EA05041C3F5280CCB1954410AD7A3A05BA05041C3F5286CCE1954410AD7A3C05AA05041C3F528DCD21954410AD7A39057A05041C3F528BCD51954410AD7A3D055A05041C3F5280CDB1954410AD7A3404DA05041C3F528ECE81954410AD7A3904AA05041C3F5285CF01954410AD7A3A04AA05041C3F5284CF51954410AD7A3404CA05041C3F528ECFC1954413D0AD7F348A05041A4703DBA021A544114AE47C149A05041F6285C7F031A5441F6285C4F4DA05041295C8FB2061A5441AE47E12A4DA050411F85EB11091A5441666666B64EA05041E17A140E0A1A5441AE47E15A53A05041A4703D6A051A5441AE47E1DA57A0504148E17AD4011A5441CDCCCC4C5BA050411F85EBF1FE1954418FC2F5885EA0504166666666FD19544148E17A1460A0504166666666FD195441295C8F4262A0504148E17A74FE195441295C8F9260A05041A4703DEA001A5441AE47E15A5CA0504185EB5138041A5441EC51B8FE57A0504166666616081A54418FC2F54853A0504185EB51380D1A5441AE47E1AA51A05041000000C00F1A5441AE47E1DA4EA05041C3F528FC121A5441CDCCCC5C4EA05041E17A144E151A5441EC51B88E4FA0504185EB5108191A5441295C8F1253A05041000000B01C1A5441AE47E1BA56A05041666666C61B1A54415C8FC2555AA05041295C8F521B1A54418FC2F5185FA0504185EB5168251A5441E17A142E64A05041C3F528DC261A5441295C8FB269A05041E17A144E271A5441CDCCCCEC6BA05041C3F528FC231A5441AE47E12A6FA05041A4703D3A221A54410AD7A3E072A0504100000080221A5441666666E676A0504185EB51D8241A5441EC51B81E7BA050413D0AD7132A1A5441CDCCCC0C7EA050411F85EBA12D1A5441EC51B81E7BA0504185EB5158311A54413D0AD7A37DA0504166666606341A5441F6285C1F81A05041C3F5281C351A54410000006085A0504148E17AF4341A5441F6285CEF88A05041E17A14CE351A544152B81E558BA050417B14AEA7361A544114AE470188A0504185EB51F8371A5441D7A3705D83A05041AE47E1AA381A5441E17A14DE7CA0504148E17AE4371A5441D7A3702D7DA05041000000C0391A54417B14AEF780A050411F85EB513F1A5441B81E85FB83A050415C8FC205411A5441CDCCCC9C86A05041EC51B82E421A5441666666B68AA05041E17A147E421A544114AE47B18CA0504133333393441A54413972FF0C92A05041E20853D5441A54418852BC5D99A050419C4B6E473F1A5441CD2BA34EA2A0504176B18C8A361A54415FE54690B2A050413E6F736D1E1A544128D09962BCA05041F256B256101A54413F8197BAC5A050418DBDC1E8021A54419A999969C3A050417B14AE77FF195441CDCCCC4CC1A0504148E17AF4FC195441F6285C2FBFA050418FC2F5A8FA19544100000040BEA0504100000070F9195441B81E856BBBA05041AE47E12AF6195441713D0A67B8A050415C8FC2E5F2195441584F7732B5A05041CAAF61E0EF195441B3B289C3B3A0504115A76A8BEE19544199F8DC62B5A05041F406EF30EF19544126266E09B7A05041C52026C3F01954410A000000EC51B87E9BA0504166666696151A5441EC51B85E9AA05041E17A146E161A54410AD7A35099A05041C3F5283C151A54410AD7A31097A0504148E17AD4131A54416666667694A0504148E17A94111A5441CDCCCCFC92A050411F85EB410F1A54418FC2F58894A05041000000F00C1A54418FC2F53896A0504185EB51580E1A544148E17A7499A0504148E17A94111A5441EC51B87E9BA0504166666696151A54410D00000048E17AC473A0504100000010FC1954418FC2F51871A0504148E17A34FC1954410AD7A3206FA0504185EB5188F9195441AE47E13A6DA050411F85EB91FB195441CDCCCCEC69A0504166666646FC1954418FC2F5A868A0504185EB51F8F81954418FC2F5E86AA0504100000090F71954410AD7A3506CA0504148E17A34F3195441295C8F126EA05041C3F528ACF0195441CDCCCC3C71A05041C3F528ACF0195441AE47E1FA73A0504100000080F2195441EC51B81E74A0504185EB51D8F719544148E17AC473A0504100000010FC195441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>390579 - 4074305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B00000066666626BF27514148E17A64B4C9544114AE4741C12751410AD7A310A6C95441AE47E1AAC227514133333313A6C95441F6285CEFC227514152B81E45A3C954417B14AE07C3275141CDCCCCDCA0C954415C8FC2F5C2275141E17A142E9EC9544185EB51A8C2275141713D0A179BC9544114AE47F1C127514185EB513896C95441713D0A77BF275141E17A146E8DC95441295C8F92BE2751413D0AD7738AC95441F6285C8FBD275141666666D687C95441D7A370BDB727514152B81E4589C954411F85EB31B8275141B81E859B8AC95441B81E85ABB82751418FC2F5C88CC954413D0AD7D3B82751413D0AD7D38FC954417B14AEE7B8275141713D0A9793C954419A9999C9B82751415C8FC2E595C9544152B81E15B82751411F85EB819BC95441000000F0B62751417B14AEC7A1C9544100000020B62751411F85EBC1A5C9544152B81EF5B4275141D7A370CDAAC9544114AE4761B4275141AE47E10AADC95441AE47E1EAB82751410AD7A3A0AFC954418FC2F528BB275141F6285C2FB1C954411F85EB71BD2751410AD7A3E0B2C954415C8FC255BE275141B81E859BB3C9544166666626BF27514148E17A64B4C95441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000F6285C8FBD275141666666D687C95441D7A370BDB727514152B81E4589C954411F85EB31B8275141B81E859B8AC95441B81E85ABB82751418FC2F5C88CC954413D0AD7D3B82751413D0AD7D38FC954417B14AEE7B8275141713D0A9793C954419A9999C9B82751415C8FC2E595C9544152B81E15B82751411F85EB819BC95441000000F0B62751417B14AEC7A1C9544100000020B62751411F85EBC1A5C9544152B81EF5B4275141D7A370CDAAC9544114AE4761B4275141AE47E10AADC95441AE47E1EAB82751410AD7A3A0AFC954418FC2F528BB275141F6285C2FB1C954411F85EB71BD2751410AD7A3E0B2C954415C8FC255BE275141B81E859BB3C9544166666626BF27514148E17A64B4C9544114AE4741C12751410AD7A310A6C95441AE47E1AAC227514133333313A6C9544190CE6FEFC2275141191E7DED9DC95441DA82DD47C2275141C194118698C954411C027677C0275141BD10D8FB90C95441F6285C8FBD275141666666D687C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>390579 - 5186262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B00000066666626BF27514148E17A64B4C9544114AE4741C12751410AD7A310A6C95441AE47E1AAC227514133333313A6C95441F6285CEFC227514152B81E45A3C954417B14AE07C3275141CDCCCCDCA0C954415C8FC2F5C2275141E17A142E9EC9544185EB51A8C2275141713D0A179BC9544114AE47F1C127514185EB513896C95441713D0A77BF275141E17A146E8DC95441295C8F92BE2751413D0AD7738AC95441F6285C8FBD275141666666D687C95441D7A370BDB727514152B81E4589C954411F85EB31B8275141B81E859B8AC95441B81E85ABB82751418FC2F5C88CC954413D0AD7D3B82751413D0AD7D38FC954417B14AEE7B8275141713D0A9793C954419A9999C9B82751415C8FC2E595C9544152B81E15B82751411F85EB819BC95441000000F0B62751417B14AEC7A1C9544100000020B62751411F85EBC1A5C9544152B81EF5B4275141D7A370CDAAC9544114AE4761B4275141AE47E10AADC95441AE47E1EAB82751410AD7A3A0AFC954418FC2F528BB275141F6285C2FB1C954411F85EB71BD2751410AD7A3E0B2C954415C8FC255BE275141B81E859BB3C9544166666626BF27514148E17A64B4C95441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000AE47E1AAC227514133333313A6C954410AD7A330C72751419A999919A6C95441D4AC8C47C6275141D8F1C5179CC954412B2F759FC42751417FFE5AFD93C9544103685B7EC22751419CF487EA8AC954411F85EB81C127514152B81ED586C95441F6285C8FBD275141666666D687C954411C027677C0275141BD10D8FB90C95441DA82DD47C2275141C194118698C9544190CE6FEFC2275141191E7DED9DC95441AE47E1AAC227514133333313A6C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 1353179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441000000301B225141CDCCCC4C94BE5441000000901B225141F6285CCF90BE544152B81EE51B225141295C8F528FBE5441713D0A171D225141CDCCCC1C8CBE544114AE47711D225141C3F528CC89BE5441B81E85BB1D22514148E17AC485BE5441666666961E225141F6285C7F7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441F6285C6F102251411F85EB7155BE5441EC51B89E0F225141333333F351BE5441713D0A770B2251410AD7A38051BE54418FC2F5C803225141A4703DCA50BE5441C3F5287CFF215141EC51B8AE4FBE5441EC51B81EFE2151418FC2F5684FBE5441E17A149EFC215141AE47E15A4FBE5441C3F528ACF9215141EC51B89E4FBE544148E17AE4F9215141F6285C4F57BE544152B81EC5F92151418FC2F5685EBE5441F6285CDFF8215141F6285CEF66BE544114AE4721F8215141713D0A576ABE5441B81E85DBF7215141EC51B8BE6CBE5441D7A370ADF72151415C8FC21573BE5441713D0A57F7215141713D0A877ABE54417B14AE17F82151419A99990982BE5441E17A14EEF7215141CDCCCC0C85BE544166666606F8215141CDCCCC3C88BE54418FC2F5D8F82151415C8FC2F58EBE544185EB51B8F92151410000005096BE54419A9999C9F9215141D7A3708D9BBE5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F44F7FF6192251415CA8570798BE54410248432D192251416AF2F0139CBE5441EC51B8CE1F225141295C8FC29CBE544185EB51E8242251413D0AD7B37FBE5441B81E858B27225141713D0AF76BBE54411F85EBD128225141AE47E13A60BE54413D0AD7B327225141B81E85BB57BE5441DDC5BA2321225141A816F28A56BE5441257509F0202251411BF6FAA557BE5441333333A320225141B81E858B58BE5441C3F528CC20225141D7A3709D59BE5441A3B40E2F222251415FF6F3475DBE5441666666D62222514152B81ED561BE54410AD7A3E01E225141666666B67EBE54414E74E1131E2251419FE527D582BE5441F44F7FF6192251415CA8570798BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 1353182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441000000301B225141CDCCCC4C94BE5441000000901B225141F6285CCF90BE544152B81EE51B225141295C8F528FBE5441713D0A171D225141CDCCCC1C8CBE544114AE47711D225141C3F528CC89BE5441B81E85BB1D22514148E17AC485BE5441666666961E225141F6285C7F7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441F6285C6F102251411F85EB7155BE5441EC51B89E0F225141333333F351BE5441713D0A770B2251410AD7A38051BE54418FC2F5C803225141A4703DCA50BE5441C3F5287CFF215141EC51B8AE4FBE5441EC51B81EFE2151418FC2F5684FBE5441E17A149EFC215141AE47E15A4FBE5441C3F528ACF9215141EC51B89E4FBE544148E17AE4F9215141F6285C4F57BE544152B81EC5F92151418FC2F5685EBE5441F6285CDFF8215141F6285CEF66BE544114AE4721F8215141713D0A576ABE5441B81E85DBF7215141EC51B8BE6CBE5441D7A370ADF72151415C8FC21573BE5441713D0A57F7215141713D0A877ABE54417B14AE17F82151419A99990982BE5441E17A14EEF7215141CDCCCC0C85BE544166666606F8215141CDCCCC3C88BE54418FC2F5D8F82151415C8FC2F58EBE544185EB51B8F92151410000005096BE54419A9999C9F9215141D7A3708D9BBE5441
+</a>
+
+<b>
+010600000001000000010300000001000000330000000AD7A3E01E225141666666B67EBE54416C45EA901E2251414A5CFFAD7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441F6285C6F102251411F85EB7155BE5441EC51B89E0F225141333333F351BE5441713D0A770B2251410AD7A38051BE54418FC2F5C803225141A4703DCA50BE5441C3F5287CFF215141EC51B8AE4FBE5441EC51B81EFE2151418FC2F5684FBE5441E17A149EFC215141AE47E15A4FBE5441C3F528ACF9215141EC51B89E4FBE544148E17AE4F9215141F6285C4F57BE544152B81EC5F92151418FC2F5685EBE5441F6285CDFF8215141F6285CEF66BE544114AE4721F8215141713D0A576ABE5441B81E85DBF7215141EC51B8BE6CBE5441D7A370ADF72151415C8FC21573BE5441713D0A57F7215141713D0A877ABE54417B14AE17F82151419A99990982BE5441E17A14EEF7215141CDCCCC0C85BE544166666606F8215141CDCCCC3C88BE54418FC2F5D8F82151415C8FC2F58EBE544185EB51B8F92151410000005096BE54419A9999C9F9215141D7A3708D9BBE544162DF99CDF9215141FF0E3CBB9CBE54411ED88DC7FC21514176087BA29CBE54412581572CFF215141C438952F9CBE54416E94532A02225141ABAD20429BBE544149D0FD1805225141FFF9FD639ABE54419F3743D5062251410A16C1F899BE5441315F96CB09225141797B74D299BE5441A25150750C22514177ED12089ABE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE54413D0AD7231922514148E17A449CBE54410248432D192251416AF2F0139CBE5441F34F7FF61922514160A8570798BE54414E74E1131E2251419FE527D582BE54410AD7A3E01E225141666666B67EBE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 3468495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441000000301B225141CDCCCC4C94BE5441000000901B225141F6285CCF90BE544152B81EE51B225141295C8F528FBE5441713D0A171D225141CDCCCC1C8CBE544114AE47711D225141C3F528CC89BE5441B81E85BB1D22514148E17AC485BE5441666666961E225141F6285C7F7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441F6285C6F102251411F85EB7155BE5441EC51B89E0F225141333333F351BE5441713D0A770B2251410AD7A38051BE54418FC2F5C803225141A4703DCA50BE5441C3F5287CFF215141EC51B8AE4FBE5441EC51B81EFE2151418FC2F5684FBE5441E17A149EFC215141AE47E15A4FBE5441C3F528ACF9215141EC51B89E4FBE544148E17AE4F9215141F6285C4F57BE544152B81EC5F92151418FC2F5685EBE5441F6285CDFF8215141F6285CEF66BE544114AE4721F8215141713D0A576ABE5441B81E85DBF7215141EC51B8BE6CBE5441D7A370ADF72151415C8FC21573BE5441713D0A57F7215141713D0A877ABE54417B14AE17F82151419A99990982BE5441E17A14EEF7215141CDCCCC0C85BE544166666606F8215141CDCCCC3C88BE54418FC2F5D8F82151415C8FC2F58EBE544185EB51B8F92151410000005096BE54419A9999C9F9215141D7A3708D9BBE5441
+</a>
+
+<b>
+010600000001000000010300000001000000330000000AD7A3E01E225141666666B67EBE54416C45EA901E2251414A5CFFAD7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441F6285C6F102251411F85EB7155BE5441EC51B89E0F225141333333F351BE5441713D0A770B2251410AD7A38051BE54418FC2F5C803225141A4703DCA50BE5441C3F5287CFF215141EC51B8AE4FBE5441EC51B81EFE2151418FC2F5684FBE5441E17A149EFC215141AE47E15A4FBE5441C3F528ACF9215141EC51B89E4FBE544148E17AE4F9215141F6285C4F57BE544152B81EC5F92151418FC2F5685EBE5441F6285CDFF8215141F6285CEF66BE544114AE4721F8215141713D0A576ABE5441B81E85DBF7215141EC51B8BE6CBE5441D7A370ADF72151415C8FC21573BE5441713D0A57F7215141713D0A877ABE54417B14AE17F82151419A99990982BE5441E17A14EEF7215141CDCCCC0C85BE544166666606F8215141CDCCCC3C88BE54418FC2F5D8F82151415C8FC2F58EBE544185EB51B8F92151410000005096BE54419A9999C9F9215141D7A3708D9BBE544162DF99CDF9215141FF0E3CBB9CBE54411ED88DC7FC21514176087BA29CBE54412581572CFF215141C438952F9CBE54416E94532A02225141ABAD20429BBE544149D0FD1805225141FFF9FD639ABE54419F3743D5062251410A16C1F899BE5441315F96CB09225141797B74D299BE5441A25150750C22514177ED12089ABE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE54413D0AD7231922514148E17A449CBE54410248432D192251416AF2F0139CBE5441F34F7FF61922514160A8570798BE54414E74E1131E2251419FE527D582BE54410AD7A3E01E225141666666B67EBE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 3469099
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441000000301B225141CDCCCC4C94BE5441000000901B225141F6285CCF90BE544152B81EE51B225141295C8F528FBE5441713D0A171D225141CDCCCC1C8CBE544114AE47711D225141C3F528CC89BE5441B81E85BB1D22514148E17AC485BE5441666666961E225141F6285C7F7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441F6285C6F102251411F85EB7155BE5441EC51B89E0F225141333333F351BE5441713D0A770B2251410AD7A38051BE54418FC2F5C803225141A4703DCA50BE5441C3F5287CFF215141EC51B8AE4FBE5441EC51B81EFE2151418FC2F5684FBE5441E17A149EFC215141AE47E15A4FBE5441C3F528ACF9215141EC51B89E4FBE544148E17AE4F9215141F6285C4F57BE544152B81EC5F92151418FC2F5685EBE5441F6285CDFF8215141F6285CEF66BE544114AE4721F8215141713D0A576ABE5441B81E85DBF7215141EC51B8BE6CBE5441D7A370ADF72151415C8FC21573BE5441713D0A57F7215141713D0A877ABE54417B14AE17F82151419A99990982BE5441E17A14EEF7215141CDCCCC0C85BE544166666606F8215141CDCCCC3C88BE54418FC2F5D8F82151415C8FC2F58EBE544185EB51B8F92151410000005096BE54419A9999C9F9215141D7A3708D9BBE5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F44F7FF6192251415CA8570798BE54410248432D192251416AF2F0139CBE5441EC51B8CE1F225141295C8FC29CBE544185EB51E8242251413D0AD7B37FBE5441B81E858B27225141713D0AF76BBE54411F85EBD128225141AE47E13A60BE54413D0AD7B327225141B81E85BB57BE5441DDC5BA2321225141A816F28A56BE5441257509F0202251411BF6FAA557BE5441333333A320225141B81E858B58BE5441C3F528CC20225141D7A3709D59BE5441A3B40E2F222251415FF6F3475DBE5441666666D62222514152B81ED561BE54410AD7A3E01E225141666666B67EBE54414E74E1131E2251419FE527D582BE5441F44F7FF6192251415CA8570798BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392178 - 432615
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000051000000AE47E19AB027514133333333BBC6544166666686AB275141F6285C6FBDC654418FC2F5D8A027514148E17A94C6C6544185EB5118A12751417B14AEF7C9C65441295C8F02A127514114AE4701CDC6544166666656A12751415C8FC285CFC65441B81E85EBA1275141CDCCCCACD1C6544114AE47B1A3275141333333A3D5C654410AD7A310A427514114AE4781D6C65441E17A140EA5275141B81E859BD8C654411F85EB21A5275141AE47E1FADAC65441CDCCCC8CA1275141A4703DFAE0C65441EC51B8AEA0275141D7A370BDE3C654415C8FC205A02751419A999939E5C65441D7A3709D9F27514148E17AA4E6C654411F85EB219F27514148E17A14E7C6544185EB51389F275141F6285C8FE7C654415C8FC2759F27514114AE4731E8C65441EC51B82EA02751413D0AD7D3E8C654410AD7A3D0A02751417B14AE27E9C6544100000010A227514133333363E9C654411F85EB61A32751413D0AD7E3E9C65441F6285C4FA427514166666666EAC65441B81E85BBA5275141CDCCCCCCEBC6544133333313A6275141CDCCCC9CECC65441D7A3705DA6275141E17A144EEDC65441CDCCCCACA6275141E17A143EEFC65441C3F528DCA62751415C8FC2B5EFC65441295C8F32A727514166666656F0C6544152B81E95A7275141713D0A27F1C65441AE47E1EAA72751417B14AE97F1C654415C8FC235A82751419A999929F2C65441E17A146EA7275141666666D6F2C65441666666B6A627514185EB5198F3C6544148E17A74A52751419A999909F5C654413D0AD7E3A42751413D0AD7D3F6C654413D0AD7B3A4275141EC51B8CEF8C6544148E17A94A527514166666606F9C65441E17A14DEA6275141EC51B80EF9C65441D7A370CDA82751410AD7A3C0F8C65441AE47E18AAA2751415C8FC235F8C65441CDCCCCBCAB275141CDCCCC8CF7C6544166666636AD27514148E17AD4F6C6544185EB51F8AE275141AE47E1FAF5C65441333333F3B0275141A4703D2AF5C65441713D0AE7B327514185EB51F8F3C654410AD7A330B5275141F6285C3FF3C6544166666656B6275141713D0A77F2C65441295C8FF2B82751411F85EBB1EFC65441F6285C8FB8275141666666F6EEC654411F85EB71B827514166666646EEC65441C3F528ACB8275141713D0AD7EDC654410AD7A350B9275141CDCCCC2CEDC65441713D0A87BA275141E17A144EECC65441C3F528ACBB275141666666F6EBC65441000000C0BC27514185EB5198EBC654411F85EB11BD275141713D0A87EBC65441A4703D5ABE275141B81E85CBEAC6544185EB51E8BF275141D7A3707DE9C6544114AE47C1C0275141295C8F52E8C654418FC2F578C22751417B14AEC7E5C654419A999959C4275141A4703D1AE3C6544100000040C62751411F85EB31E0C65441E17A143EC8275141F6285C4FDDC65441F6285CFFC8275141CDCCCC0CDCC6544152B81EB5C9275141EC51B8BEDAC65441F6285C6FC9275141CDCCCC3CD6C654410AD7A390C92751417B14AEB7D1C654411F85EBF1C82751417B14AEF7D1C6544152B81E25C8275141333333A3CCC65441B81E859BC527514114AE4701C8C65441EC51B81EC2275141E17A140EC7C6544148E17A74BF27514133333323C4C65441EC51B84EBF275141EC51B89EC1C654413D0AD743BF275141713D0AE7C0C65441B81E858BB427514152B81E55C0C6544148E17AD4B3275141B81E853BC0C65441A4703D5AB42751413D0AD783BEC65441CDCCCC6CB4275141B81E85DBBCC654410AD7A320B327514148E17AB4BBC65441AE47E19AB027514133333333BBC65441
+</a>
+
+<b>
+0106000000010000000103000000010000004E00000095A6157CA5275141EB6F5A00F9C6544177881292A62751410626CD0CF9C65441F0D64AFCA7275141C73E9BE1F8C65441D85BF47FAA275141AF962A39F8C654412AA772F6AA2751411114EDECF7C654413F85AB8EA42751412AA52D0FE3C65441EAC44C26A7275141062B526ADBC654411A3B3CE2A627514192E672D3D7C6544105E33BC3A227514135867157C7C654411B1256A5B3275141CFD0098FC1C65441141B9A57BF2751419BD55036C2C65441EC51B84EBF275141EC51B89EC1C654413D0AD743BF275141713D0AE7C0C65441E4BAA153BA2751410DCC7D9FC0C654417E70096BB82751414030D789C0C65441421F4606B7275141D0F3DE76C0C65441E29D4610B6275141FE70CA69C0C65441D50D5E3CB5275141CCF4855EC0C65441B81E858BB427514152B81E55C0C6544148E17AD4B3275141B81E853BC0C65441A4703D5AB42751413D0AD783BEC65441CDCCCC6CB4275141B81E85DBBCC6544148E284F5B22751419C4603A9BBC654413717E573B22751412D964590BBC654419330C2C5B1275141B3F2086FBBC6544140D29B7AB0275141A5EA6541BBC65441D167DC63AB275141F118F18CBDC6544159917401A6275141439D8229C2C65441E0EF512EA32751418F50DB94C4C654410332E4F1A12751411D9EDEA3C5C654418FC2F5D8A027514148E17A94C6C65441F56BAD17A12751419B79A40ECAC654412A314E2CA12751414B9A2D42CEC65441CEF07654A1275141E1F3E176CFC6544179F360EFA12751418C236DB5D1C65441473FFEFBA22751419EEAEC0DD4C6544114AE47B1A3275141333333A3D5C654411094ACF6A32751410025CF44D6C6544135025F1DA4275141584C519CD6C654416AF56207A5275141F80C4E8DD8C65441D7878B0EA52751413A65C633D9C65441F2BA5115A5275141F0184FD1D9C654410D824D21A5275141F712FCE7DAC6544187FAA945A42751414427A45EDCC6544161DF46ABA3275141B513FE65DDC65441D7799122A3275141F41C304FDEC65441726C23ACA227514192313419DFC65441CDCCCC8CA1275141A4703DFAE0C65441EC51B8AEA0275141D7A370BDE3C654415C8FC205A02751419A999939E5C65441D7A3709D9F27514148E17AA4E6C654411F85EB219F27514148E17A14E7C6544185EB51389F275141F6285C8FE7C654415C8FC2759F27514114AE4731E8C65441EC51B82EA02751413D0AD7D3E8C654410AD7A3D0A02751417B14AE27E9C6544100000010A227514133333363E9C65441A1DB680CA3275141A59400BEE9C654411F85EB61A32751413D0AD7E3E9C65441F6285C4FA427514166666666EAC65441B81E85BBA5275141CDCCCCCCEBC6544133333313A6275141CDCCCC9CECC65441526EA01DA62751414ABDB2B5ECC654415838603FA6275141984AA329EDC654413EFB4765A627514126F1DAABEDC654415FB72F75A6275141F2B47EE2EDC654415508AEA6A6275141F12ED417EFC65441295C8F32A727514166666656F0C6544137EBDB99A7275141F6B1432DF1C6544153C024E7A7275141A4B35AAAF1C654415C8FC235A82751419A999929F2C65441E17A146EA7275141666666D6F2C6544156FC7C02A72751418D6BFD47F3C65441F70F601BA6275141E8CD264AF4C6544148E17A74A52751419A999909F5C654413D0AD7E3A42751413D0AD7D3F6C654413D0AD7B3A4275141EC51B8CEF8C6544195A6157CA5275141EB6F5A00F9C65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>396251 - 236110
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000295C8F62C320514166666666E2CA54410AD7A360C0205141AE47E1EAE7CA544148E17A84BB2051418FC2F528FCCA544166666636BD205141EC51B8FEFBCA54418FC2F548BF2051411F85EBE1FBCA54413D0AD793C920514152B81E55FBCA5441B81E852BCE205141AE47E1FAFBCA5441CDCCCCFCD420514148E17A14FDCA544152B81E45D8205141713D0A07FDCA54415C8FC2F5DB20514100000090FBCA54411F85EBA1DE2051411F85EB71F8CA5441AE47E10AE3205141F6285C8FEBCA5441C3F5288CE52051413D0AD7F3E3CA5441AE47E15AE9205141333333C3DBCA5441E17A146EEC2051410AD7A330D5CA544185EB51B8EC205141D7A3706DD4CA54415C8FC2B5D9205141B81E852BD6CA5441713D0A07CB2051410AD7A3B0D8CA544152B81E75C9205141D7A370BDDACA5441295C8F62C320514166666666E2CA5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E2A1A7F8BF20514135BBFD9BE9CA5441EF24145EC0205141EB1994EFE7CA54415C8FC275BE205141F6285C6FEBCA5441CB75A82ABE205141220DB6F5EBCA54415485EB71BA205141EC7A149EF2CA544184EED491AE20514167DAD9F5F7CA54419A999979A92051410AD7A340FACA5441B43BC50EA92051416E7F93FCFBCA54410B0000B0A820514165666686FDCA544141FB0E91A9205141520B247AFDCA54415475EAEFAF205141585B4E21FDCA54414884AB91B0205141BCC17E18FDCA5441330AD7B3B3205141B7CCCCECFCCA5441F3484F61BB205141241C672CFCCA5441D29A1966BB2051413211EF2BFCCA544148E17A84BB2051418FC2F528FCCA5441ACFBCBF6BB2051410AFED04CFACA54415EEB7935BD205141EF277A1DF5CA54417758F47BBD2051413E39EDF7F3CA5441E3F7949DBD205141433FDD6BF3CA5441E2A1A7F8BF20514135BBFD9BE9CA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>397509 - 1008901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC4FFA5041A4703D7A3B3854418FC2F5C84FFA5041666666964C38544152B81E154FFA5041E17A14CE55385441CDCCCC9C4EFA5041A4703D7A5938544114AE474150FA50411F85EBE15A38544114AE474150FA50416666669660385441CDCCCC0C57FA5041A4703DBA643854418FC2F5485CFA5041666666F65F38544114AE47B15DFA5041666666D6573854418FC2F5885DFA5041666666565038544152B81E9560FA5041A4703D5A4738544152B81E8561FA504166666656413854418FC2F5285EFA5041E17A145E3E38544152B81E755DFA5041A4703DCA3B38544114AE47E15FFA5041E17A140E3938544152B81EE55BFA504166666616363854418FC2F5285EFA5041A4703DFA3338544152B81E155EFA5041A4703DCA31385441CDCCCC0C57FA5041A4703DBA2D38544114AE471158FA5041E17A141E293854411F85EB8152FA5041D7A370AD29385441CDCCCCDC4FFA50411F85EB5127385441CDCCCCDC4FFA5041A4703D7A3B385441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000E904B8D050FA5041081D56603B385441A12ECCF750FA5041613B5C5C3D385441E572F14750FA5041D43314524C3854415134530D50FA504168BC2F4055385441760B853A50FA504189D3B6755838544114AE474150FA50411F85EBE15A3854414F55A40551FA50419FF572B55C385441E904B8D050FA5041C2B679786038544177564EDC54FA5041B3A5E437633854416D6946AD58FA50416E61BFE7633854415E18A3995CFA5041B3F931FE6138544114AE47B15DFA5041666666D657385441594C2CED5CFA504152A9524A51385441A7C675B85CFA50411EC845CE4D385441061D2F735EFA504140E9E88C4A38544152B81E9560FA5041A4703D5A47385441D2E25E9D60FA50418B13ABC5433854419DAFCE8D5EFA50419A244006413854418FC2F5285EFA5041E17A145E3E38544152B81E755DFA5041A4703DCA3B385441F32AC4B55CFA5041C240F2BC3838544152B81EE55BFA504166666616363854411C148C1C5CFA5041AAB4D2B030385441E1F3F3DD5DFA50417A13092A2F385441B4E4F0DF5CFA50411D633CA52C385441DB2AA87258FA5041C9B26F202A385441347EF32C56FA5041B37FDC4E29385441C2FF22C354FA5041A5954D732938544109F0DA0153FA504181B27A842A3854419308B2B051FA504181407E602B38544155C6199650FA5041D0D6FC312B385441E904B8D050FA5041081D56603B385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>397509 - 3488896
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC4FFA5041A4703D7A3B3854418FC2F5C84FFA5041666666964C38544152B81E154FFA5041E17A14CE55385441CDCCCC9C4EFA5041A4703D7A5938544114AE474150FA50411F85EBE15A38544114AE474150FA50416666669660385441CDCCCC0C57FA5041A4703DBA643854418FC2F5485CFA5041666666F65F38544114AE47B15DFA5041666666D6573854418FC2F5885DFA5041666666565038544152B81E9560FA5041A4703D5A4738544152B81E8561FA504166666656413854418FC2F5285EFA5041E17A145E3E38544152B81E755DFA5041A4703DCA3B38544114AE47E15FFA5041E17A140E3938544152B81EE55BFA504166666616363854418FC2F5285EFA5041A4703DFA3338544152B81E155EFA5041A4703DCA31385441CDCCCC0C57FA5041A4703DBA2D38544114AE471158FA5041E17A141E293854411F85EB8152FA5041D7A370AD29385441CDCCCCDC4FFA50411F85EB5127385441CDCCCCDC4FFA5041A4703D7A3B385441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000E904B8D050FA5041081D56603B385441A12ECCF750FA5041613B5C5C3D385441E572F14750FA5041D43314524C3854415134530D50FA504168BC2F4055385441760B853A50FA504189D3B6755838544114AE474150FA50411F85EBE15A3854414F55A40551FA50419FF572B55C385441E904B8D050FA5041C2B679786038544177564EDC54FA5041B3A5E437633854416D6946AD58FA50416E61BFE7633854415E18A3995CFA5041B3F931FE6138544114AE47B15DFA5041666666D657385441594C2CED5CFA504152A9524A51385441A7C675B85CFA50411EC845CE4D385441061D2F735EFA504140E9E88C4A38544152B81E9560FA5041A4703D5A47385441D2E25E9D60FA50418B13ABC5433854419DAFCE8D5EFA50419A244006413854418FC2F5285EFA5041E17A145E3E38544152B81E755DFA5041A4703DCA3B385441F32AC4B55CFA5041C240F2BC3838544152B81EE55BFA504166666616363854411C148C1C5CFA5041AAB4D2B030385441E1F3F3DD5DFA50417A13092A2F385441B4E4F0DF5CFA50411D633CA52C385441DB2AA87258FA5041C9B26F202A385441347EF32C56FA5041B37FDC4E29385441C2FF22C354FA5041A5954D732938544109F0DA0153FA504181B27A842A3854419308B2B051FA504181407E602B38544155C6199650FA5041D0D6FC312B385441E904B8D050FA5041081D56603B385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>397613 - 3584717
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000050000000103000000010000000E000000000000E0A3FB5041E17A145E633C5441F6285C8FA5FB5041666666A6603C5441E17A142EAAFB5041B81E853B5A3C544148E17AB4ACFB50413D0AD763553C5441F6285C4FA9FB5041C3F528AC523C5441E17A144EAAFB504152B81E954C3C5441EC51B87EABFB504152B81E35473C544152B81E05ADFB5041EC51B8AE443C544148E17A34A9FB50411F85EB81433C5441000000C0A0FB50415C8FC2E5403C544185EB5168A1FB504114AE47A14D3C5441CDCCCC0CA2FB50419A9999195A3C5441F6285CAFA2FB5041295C8F62663C5441000000E0A3FB5041E17A145E633C5441010300000001000000370000008FC2F55856FB5041EC51B86E2E3C5441713D0A7745FB5041E17A14EE3C3C54415C8FC2353BFB50419A999929473C54413D0AD7C339FB5041333333E3483C5441713D0A2736FB50411F85EB314D3C544185EB51E833FB5041295C8FA2503C5441666666C631FB504152B81E75543C54413333336330FB5041EC51B83E573C5441B81E850B2FFB5041000000E05A3C5441AE47E1DA2DFB504185EB51B85E3C5441C3F5284C2DFB5041666666D6613C5441D7A3704D2DFB5041C3F5280C673C544114AE47612DFB5041AE47E1CA673C544114AE47E12DFB5041D7A370AD6D3C5441A4703D6A2FFB5041A4703D5A6D3C544148E17A6430FB504152B81E256D3C5441AE47E1FA30FB504152B81E056D3C5441B81E858B31FB5041E17A143E703C5441B81E85AB32FB5041713D0AB7743C54418FC2F51834FB50413D0AD7337A3C54410AD7A38034FB5041295C8F227C3C54411F85EB6136FB5041EC51B86E813C54415C8FC2F537FB50411F85EBC1853C54416666664639FB50417B14AE17893C5441CDCCCC9C43FB50417B14AEF7863C5441A4703D3A44FB5041F6285CDF813C54411F85EB3144FB504152B81E35803C54419A99990943FB5041AE47E13A7A3C54411F85EB5142FB50411F85EB31753C5441295C8F1242FB50410AD7A3A0723C5441A4703DFA41FB5041CDCCCC0C703C544114AE470142FB5041666666666D3C54418FC2F52842FB5041E17A14AE6A3C5441AE47E19A42FB5041B81E85CB673C5441000000B043FB504185EB5108633C544148E17A7444FB504185EB5178603C54413333336345FB5041C3F528DC5D3C5441E17A147E45FB504152B81E955D3C54411F85EB4146FB5041713D0AD75B3C5441AE47E14A47FB5041AE47E10A5A3C5441CDCCCC5C48FB5041713D0A37583C54413D0AD7D349FB5041A4703DDA553C544152B81E854BFB50418FC2F548533C544152B81E154DFB50411F85EB01513C5441000000804EFB5041D7A3702D4F3C5441A4703D4A50FB5041713D0AE74C3C5441C3F5287C53FB5041AE47E1BA493C54413D0AD78356FB5041EC51B80E473C54417B14AE575CFB5041EC51B8CE423C544152B81E4561FB50411F85EBD13E3C5441E17A142E64FB50417B14AE473C3C5441F6285C2F66FB5041E17A145E3A3C544152B81EC561FB504148E17A04373C544152B81E655CFB50417B14AEA7323C54418FC2F55856FB5041EC51B86E2E3C5441010300000001000000230000000AD7A3401EFB50413D0AD7734D3C54419A9999F91DFB5041F6285CDF4E3C5441F6285C5F1DFB5041F6285CEF513C5441AE47E1EA1CFB504114AE4741543C544114AE47411CFB50411F85EBF1583C5441D7A3709D1CFB50418FC2F5C85E3C5441AE47E11A1DFB5041F6285CCF613C544152B81E951DFB5041A4703DEA633C5441CDCCCC8C1FFB5041F6285C4F6C3C5441E17A140E21FB50418FC2F508723C54419A99999927FB5041295C8F32703C5441D7A3702D27FB504152B81E956E3C5441A4703DBA25FB50411F85EB416A3C5441F6285C1F25FB5041666666D6673C544148E17AA424FB50411F85EB61653C54411F85EB5124FB504100000020633C54418FC2F54824FB5041333333C3613C5441B81E85FB22FB504148E17AC4613C54411F85EB8120FB5041AE47E15A613C5441713D0A6720FB50417B14AE175F3C54413D0AD74320FB5041333333235C3C54413333335320FB5041333333D3593C5441C3F5286C20FB504133333373573C544148E17AC420FB50417B14AEA7553C5441D7A3703D21FB5041A4703DBA533C544152B81E0522FB504185EB5118513C544114AE471123FB5041333333534E3C54410AD7A36024FB504152B81E054B3C5441713D0A1725FB50419A999989493C54417B14AEA725FB50411F85EB41483C5441C3F528AC26FB5041B81E85FB463C5441EC51B82E27FB5041C3F5282C443C5441666666B61EFB5041EC51B89E493C5441295C8FE21EFB5041C3F5283C4A3C54410AD7A3401EFB50413D0AD7734D3C544101030000000100000014000000000000B06AFB50419A999979593C5441295C8F1269FB5041B81E858B593C54411F85EBC160FB5041713D0A975D3C544152B81E7563FB5041AE47E12A653C5441F6285C5F66FB5041E17A140E6D3C54417B14AE976AFB5041C3F5281C793C5441C3F5283C6CFB5041D7A370CD7D3C5441E17A14CE6EFB504148E17A04853C54410AD7A38071FB5041B81E852B843C544148E17A7473FB5041B81E856B853C544148E17A0475FB5041B81E851B853C54410AD7A39075FB50417B14AE47863C544148E17AE476FB5041F6285C7F853C54413333333377FB504114AE4731863C5441D7A3705D81FB50410AD7A3807F3C5441F6285C9F7EFB504152B81EA5773C54413D0AD7E379FB5041713D0A176A3C544114AE476176FB50417B14AE07603C54418FC2F59872FB504114AE4731553C5441000000B06AFB50419A999979593C5441010300000001000000200000008FC2F5B8B9FB5041333333D36F3C54417B14AE37BAFB50417B14AE676E3C5441666666F6B9FB50418FC2F5486B3C5441713D0A37BAFB5041713D0A87693C54411F85EBE1BAFB5041295C8F42683C544152B81EA5BBFB5041D7A370DD663C5441666666D6BBFB5041C3F5289C643C544148E17AD4BBFB5041A4703DDA623C544152B81EA5BBFB5041295C8F425F3C54410AD7A3F0BAFB5041333333135F3C54418FC2F5F8B9FB504148E17AB45E3C544152B81E05B2FB5041713D0A07593C5441713D0A37B1FB504100000080583C5441333333C3ADFB5041CDCCCC3C563C5441CDCCCC6CADFB50417B14AEF7553C544148E17AE4AAFB5041EC51B8BE5A3C5441D7A3704DA6FB50411F85EB21613C5441C3F528ACA4FB50413D0AD7C3633C54419A999989A3FB50417B14AE97663C544185EB5138A2FB5041EC51B8FE6D3C54415C8FC295A1FB5041713D0A27703C5441295C8FF2A4FB50417B14AEA7723C54419A9999F9A7FB5041713D0AF7743C544185EB51E8A8FB5041C3F528CC753C544100000020A6FB5041A4703D1A793C544148E17AF49FFB5041000000A07F3C5441AE47E1DA99FB5041CDCCCC2C853C5441666666D698FB50418FC2F528863C5441000000C097FB5041EC51B80E8E3C54410AD7A3509FFB504148E17A64863C544152B81E35AFFB5041295C8FB2773C54418FC2F5B8B9FB5041333333D36F3C5441
+</a>
+
+<b>
+010600000001000000010300000001000000410000002EACA7B5BBFB50410FB9A683603C5441948E54C1BBFB50417207B4C9603C5441261F9870E0FB5041FEE91324563C5441261F9870E0FB504147F37815533C5441F6285CBFFBFB5041000000404F3C5441CDCCCC0CFBFB5041EC51B8AE473C5441B81E853B03FC5041713D0AC7463C5441B81E85AB02FC50411F85EBF1403C5441295C8F62FCFB5041EC51B8AE383C54410AD7A310F6FB5041C3F528DC383C544185EB51E8F4FB5041713D0A67303C5441F6285C4FF9FB5041666666B62F3C544133333323F9FB50418FC2F5A82E3C5441A4703D2AFEFB50411F85EB812B3C544114AE473101FC5041A4703DBA293C5441CDCCCCDC03FC50410AD7A3E0263C5441D7A370AD02FC50413D0AD7A3243C5441A4703D9A01FC504114AE47C1233C5441C3F5284C00FC5041EC51B88E223C54410AD7A350FFFB5041A4703D8A213C54418FC2F5A8FDFB5041666666B61F3C5441B81E85EBFBFB5041F6285C8F1D3C5441CDCCCCACFAFB504114AE47E11B3C54417B14AE47FAFB50419A9999391B3C54419A9999C9F9FB5041CDCCCC2C1A3C54410AD7A320F9FB5041CDCCCCAC183C54411F85EBE1F8FB504148E17AE4173C544100000040F8FB50419A999979153C54411F85EBE1F7FB504114AE4751143C5441AE47E16AF7FB5041295C8FF2123C544152B81EF5F5FB5041B81E850B103C544152B81E35F4FB5041295C8F420E3C54410AD7A3E0F2FB5041D7A370CD0D3C5441B81E85EBF2FB50418FC2F5B80E3C544185EB51A8F4FB5041EC51B89E153C544152B81E45EFFB5041EC51B86E183C54413D0AD703EAFB504185EB51881B3C5441B81E85BBE4FB5041C3F5288C1E3C54419A999979DFFB5041666666C6213C544148E17A84DCFB5041F6285CAF233C54411F85EB21D9FB50411F85EB01263C5441F6285C5FD7FB50411F85EB61273C5441666666D6D5FB5041295C8F82283C544152B81E75D4FB5041666666A6293C54419A999979D3FB50411F85EB712A3C54417B14AE47D3FB5041EC51B89E293C5441C3F5283CD1FB504185EB51682B3C5441AE47E10ACEFB5041B81E858B2E3C54419A999979CDFB5041A4703D1A2F3C544152B81EA5C7FB5041EC51B81E353C54415C8FC2F5C4FB504114AE4711383C5441713D0A77C3FB50410AD7A3D0393C54417B14AEC7C2FB50410AD7A3C03A3C5441E17A144EBBFB504114AE47A1463C5441333333D3B7FB50415C8FC2954C3C5441B81E85FBB6FB50415C8FC2854E3C544185EB5198B6FB5041713D0A574F3C54412BB1FEE5B2FB5041F777D358573C5441A1E6E9D5B1FB5041454E1BE8583C544152B81E05B2FB5041713D0A07593C5441BF2C2E14B8FB5041A90C625A5D3C5441D4539FA7BAFB504169A446F75E3C54410AD7A3F0BAFB5041333333135F3C544152B81EA5BBFB5041295C8F425F3C54412EACA7B5BBFB50410FB9A683603C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418788 - 16153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000052000000713D0AF725D150413D0AD75391245441A4703D3A22D15041AE47E1CA8B2454411F85EBA117D150419A9999797E2454417B14AE7716D15041666666E67B2454410AD7A3A015D1504133333393792454411F85EB1115D150410AD7A3907724544185EB517814D15041C3F5285C7524544114AE473114D15041B81E853B73245441B81E856B14D150413333336370245441AE47E11A15D15041713D0AA76B2454410AD7A33011D1504152B81E256B245441000000D00CD1504152B81E856A245441D7A3702D0BD1504114AE47D16A2454418FC2F5C805D150415C8FC2F56C245441CDCCCC4C02D15041E17A14FE6B24544133333363FDD050415C8FC2956B24544148E17A84FBD05041F6285CEF6924544185EB5148F9D05041AE47E1CA67245441D7A3709DF6D050419A999939672454417B14AEB7F4D05041D7A370ED66245441000000E0F2D05041D7A3701D6724544148E17AC4EDD05041C3F5281C6724544185EB5198E9D05041AE47E12A66245441E17A14AEE5D05041A4703D2A6824544148E17AA4E3D050410AD7A3206B245441AE47E11AE4D050418FC2F5A86D24544100000020E5D0504114AE47F16F245441333333B3E6D05041C3F5281C7424544114AE4741E7D0504114AE47A177245441C3F528ECE8D0504114AE47417A24544148E17A54EBD050419A9999197A2454410AD7A3B0F1D05041F6285CCF7A2454415C8FC285F7D0504114AE47A17C24544100000060F9D05041CDCCCC0C7E245441B81E85ABF0D050415C8FC2E57D24544100000040EAD05041E17A14AE7D24544148E17AB4E8D05041333333A37E24544185EB5178E7D050411F85EB81812454417B14AE37E5D0504148E17AF485245441F6285CAFE2D05041F6285CEF89245441EC51B86EE0D05041EC51B8BE8C245441EC51B8DEDDD050415C8FC2858F24544166666666DBD05041C3F528BC92245441295C8F12DAD050413D0AD7439524544152B81E55D9D0504166666606972454415C8FC215D9D0504148E17A149A24544100000070D8D0504148E17AC49C2454411F85EBB1D7D05041EC51B8FEA0245441A4703DBAD7D050410AD7A310A324544152B81E35D8D05041713D0AA7A524544148E17A74D9D050418FC2F518A8245441295C8FC2DAD05041EC51B86EAA2454417B14AE17DDD050410AD7A3A0AD2454411F85EB01E2D0504185EB5108B324544152B81EE5E4D050419A999979B6245441B81E850BE7D05041F6285CBFB8245441000000B0E9D0504114AE47F1BB245441666666D6EBD050417B14AE17BE245441AE47E1FAEDD05041F6285CBFC0245441D7A370BDEFD050410AD7A350BF24544185EB51E8F5D0504185EB5148C1245441AE47E18AFBD050417B14AE27C22454415C8FC2F5FED0504114AE47C1C124544148E17AD401D1504185EB51E8BD2454416666661605D1504133333313BF2454418FC2F51808D150417B14AEA7C1245441EC51B80E0ED1504114AE4771BF2454417B14AE3713D15041A4703D7ABD2454413D0AD79317D15041295C8F92BB2454410AD7A3F01BD15041CDCCCC5CB92454411F85EB411FD150413D0AD7C3B72454415C8FC2F521D150415C8FC245B7245441A4703DFA24D150417B14AE07B7245441B81E859B1FD15041CDCCCC9CB3245441A4703D0A18D15041F6285C4FB0245441E17A14FE16D150413D0AD7F3A9245441A4703D7A17D150411F85EB91A42454415C8FC2F51AD15041295C8FC2A4245441F6285CAF1ED15041D7A3708DA42454417B14AEC722D15041AE47E19AA324544185EB512827D15041CDCCCC4CA3245441713D0AF725D150413D0AD75391245441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000B113D4E03D15041F6B68C456C2454410B20EBC504D150414866D8AD6C245441F70FE9CA04D150414D05A3C56B24544186635D7706D15041303CBD4E6A245441128CCA6E03D1504113E2D8C869245441121DC97D02D1504113E2D8C869245441833856C201D1504184FD650D69245441113FC69B00D15041F687F442692454414A158CC5FFD0504113E2D8C869245441BB30190AFFD050416812837869245441D7ACFAADFDD050416812837869245441305BC74EFED05041A7384DA96B245441D6ABDEE900D15041EE50A3E06B245441CDCCCC4C02D15041E17A14FE6B2454410B113D4E03D15041F6B68C456C245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418788 - 62741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000052000000713D0AF725D150413D0AD75391245441A4703D3A22D15041AE47E1CA8B2454411F85EBA117D150419A9999797E2454417B14AE7716D15041666666E67B2454410AD7A3A015D1504133333393792454411F85EB1115D150410AD7A3907724544185EB517814D15041C3F5285C7524544114AE473114D15041B81E853B73245441B81E856B14D150413333336370245441AE47E11A15D15041713D0AA76B2454410AD7A33011D1504152B81E256B245441000000D00CD1504152B81E856A245441D7A3702D0BD1504114AE47D16A2454418FC2F5C805D150415C8FC2F56C245441CDCCCC4C02D15041E17A14FE6B24544133333363FDD050415C8FC2956B24544148E17A84FBD05041F6285CEF6924544185EB5148F9D05041AE47E1CA67245441D7A3709DF6D050419A999939672454417B14AEB7F4D05041D7A370ED66245441000000E0F2D05041D7A3701D6724544148E17AC4EDD05041C3F5281C6724544185EB5198E9D05041AE47E12A66245441E17A14AEE5D05041A4703D2A6824544148E17AA4E3D050410AD7A3206B245441AE47E11AE4D050418FC2F5A86D24544100000020E5D0504114AE47F16F245441333333B3E6D05041C3F5281C7424544114AE4741E7D0504114AE47A177245441C3F528ECE8D0504114AE47417A24544148E17A54EBD050419A9999197A2454410AD7A3B0F1D05041F6285CCF7A2454415C8FC285F7D0504114AE47A17C24544100000060F9D05041CDCCCC0C7E245441B81E85ABF0D050415C8FC2E57D24544100000040EAD05041E17A14AE7D24544148E17AB4E8D05041333333A37E24544185EB5178E7D050411F85EB81812454417B14AE37E5D0504148E17AF485245441F6285CAFE2D05041F6285CEF89245441EC51B86EE0D05041EC51B8BE8C245441EC51B8DEDDD050415C8FC2858F24544166666666DBD05041C3F528BC92245441295C8F12DAD050413D0AD7439524544152B81E55D9D0504166666606972454415C8FC215D9D0504148E17A149A24544100000070D8D0504148E17AC49C2454411F85EBB1D7D05041EC51B8FEA0245441A4703DBAD7D050410AD7A310A324544152B81E35D8D05041713D0AA7A524544148E17A74D9D050418FC2F518A8245441295C8FC2DAD05041EC51B86EAA2454417B14AE17DDD050410AD7A3A0AD2454411F85EB01E2D0504185EB5108B324544152B81EE5E4D050419A999979B6245441B81E850BE7D05041F6285CBFB8245441000000B0E9D0504114AE47F1BB245441666666D6EBD050417B14AE17BE245441AE47E1FAEDD05041F6285CBFC0245441D7A370BDEFD050410AD7A350BF24544185EB51E8F5D0504185EB5148C1245441AE47E18AFBD050417B14AE27C22454415C8FC2F5FED0504114AE47C1C124544148E17AD401D1504185EB51E8BD2454416666661605D1504133333313BF2454418FC2F51808D150417B14AEA7C1245441EC51B80E0ED1504114AE4771BF2454417B14AE3713D15041A4703D7ABD2454413D0AD79317D15041295C8F92BB2454410AD7A3F01BD15041CDCCCC5CB92454411F85EB411FD150413D0AD7C3B72454415C8FC2F521D150415C8FC245B7245441A4703DFA24D150417B14AE07B7245441B81E859B1FD15041CDCCCC9CB3245441A4703D0A18D15041F6285C4FB0245441E17A14FE16D150413D0AD7F3A9245441A4703D7A17D150411F85EB91A42454415C8FC2F51AD15041295C8FC2A4245441F6285CAF1ED15041D7A3708DA42454417B14AEC722D15041AE47E19AA324544185EB512827D15041CDCCCC4CA3245441713D0AF725D150413D0AD75391245441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000B113D4E03D15041F6B68C456C2454410B20EBC504D150414866D8AD6C245441F70FE9CA04D150414D05A3C56B24544186635D7706D15041303CBD4E6A245441128CCA6E03D1504113E2D8C869245441121DC97D02D1504113E2D8C869245441833856C201D1504184FD650D69245441113FC69B00D15041F687F442692454414A158CC5FFD0504113E2D8C869245441BB30190AFFD050416812837869245441D7ACFAADFDD050416812837869245441305BC74EFED05041A7384DA96B245441D6ABDEE900D15041EE50A3E06B245441CDCCCC4C02D15041E17A14FE6B2454410B113D4E03D15041F6B68C456C245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418898 - 148565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD7232CBC5041333333039E2C54410AD7A34028BC504185EB51E89A2C54419A99992927BC5041C3F528BC9B2C54417B14AE9728BC50410AD7A3A0A02C5441AE47E1CA2EBC5041713D0AF7A42C5441A4703DDA30BC50415C8FC2B5A82C54417B14AED72FBC5041EC51B8DEAA2C5441CDCCCC4C26BC5041295C8FD2AF2C54417B14AE1726BC50419A999999B32C54419A9999B927BC5041333333F3B42C5441F6285CEF2DBC50417B14AE17B22C5441A4703D2A31BC5041D7A370BDAE2C54411F85EB3136BC504152B81EB5AA2C5441E17A14AE41BC5041B81E852BAE2C5441B81E855B46BC5041F6285CBFAF2C5441666666164ABC5041EC51B8BEB12C544185EB51084CBC50417B14AE87B32C5441F6285CDF4DBC504166666636B62C5441333333734FBC5041F6285CFFB82C5441CDCCCC3C51BC50415C8FC285BA2C5441CDCCCC8C53BC50415C8FC2D5BB2C54411F85EB6154BC5041666666E6BB2C544148E17A7457BC5041AE47E10ABC2C54411F85EB8156BC5041B81E855BAA2C5441B81E855B55BC5041000000A0AA2C5441A4703D2A53BC5041E17A149EA72C54418FC2F5A851BC5041713D0AE7A72C544114AE47B14DBC50410AD7A3A0AB2C5441CDCCCC2C4BBC5041F6285CDFAB2C5441333333F347BC504185EB51D8AB2C54410000001043BC5041C3F5281CAB2C5441E17A147E3FBC504185EB5168A92C5441000000203CBC50410AD7A3D0A62C544148E17A6437BC5041C3F5282CA32C54410000009034BC5041E17A145E9D2C54411F85EB1137BC5041000000B09C2C5441B81E857B32BC5041E17A14FE972C5441AE47E1CA31BC5041A4703D5A9A2C5441D7A3708D31BC50417B14AE779B2C54413D0AD7232CBC5041333333039E2C5441
+</a>
+
+<b>
+01060000000100000001030000000100000052000000FDE8959927BC5041DCAB4C3B9D2C544152EAE49927BC50415EF95A3C9D2C54418E6CA59D27BC5041AD3031499D2C5441734011A527BC50410A2095629D2C5441443FBEBF27BC5041E35CD9BD9D2C5441BD9460F827BC50419FED9C7F9E2C5441A9C3F19528BC50419EB0B39AA02C5441603626DE28BC50418FA8F0D1A02C5441AE47E1CA2EBC5041713D0AF7A42C5441A4703DDA30BC50415C8FC2B5A82C54417B14AED72FBC5041EC51B8DEAA2C5441CDCCCC4C26BC5041295C8FD2AF2C5441C0AE714626BC5041F0BC4446B02C544194961C1926BC5041C079D285B32C54417FF50D5126BC5041ABD8C3BDB32C54413C6C603328BC5041831C43E6B42C54412C20BFAB2ABC5041DD7D3815B42C54417E07BBC031BC5041CBD77588AE2C54412108C8FB31BC5041981AA053AE2C54411BC1838D35BC50411EE95F09AB2C5441319C418837BC504194FBD401AC2C54410A45F26C39BC50417DA97665AC2C54410AD8D7A93BBC504134520AEEAC2C5441A1567E043EBC5041A6C1D92BAD2C54414222764544BC5041C7E7EDDCAE2C5441A7F9E40148BC504137349066B02C54413B14FC5E4ABC50410EC128C9B12C5441C5F0DBDE4BBC504109EC3316B32C544118AE260A4DBC5041EB5A5374B42C5441B5A5B3D14DBC50410C885035B62C5441F6285CDF4DBC504166666636B62C5441C6A20E674EBC5041FD7FF725B72C5441A8AED5664FBC5041DC8232D2B82C54410885A2FA50BC5041C5ED402CBA2C5441937BEA7A52BC50419625651DBB2C54412603568953BC50410F985FC7BB2C54411F85EB6154BC5041666666E6BB2C54411BA87A7457BC50410745E10ABC2C54415F43C28256BC50410B482D6BAA2C54415514B1AF55BC5041DCC16B8CAA2C5441B81E855B55BC5041000000A0AA2C5441B8D8625755BC5041E157549AAA2C54418E86A5FE53BC5041435771C1A82C5441F085D86F53BC5041F34D8FFDA72C5441A4703D2A53BC5041E17A149EA72C5441900BA92F52BC5041C42E88CDA72C54418FC2F5A851BC5041713D0AE7A72C544114AE47B14DBC50410AD7A3A0AB2C5441CDCCCC2C4BBC5041F6285CDFAB2C5441333333F347BC504185EB51D8AB2C54410DFF265E47BC5041FDD9E7C1AB2C54417E68744743BC504110DE7F24AB2C54410000001043BC5041C3F5281CAB2C5441E17A147E3FBC504185EB5168A92C5441EF9E14A83CBC5041CB1F6739A72C5441244612A437BC5041F6D81A5DA32C544148E17A6437BC5041C3F5282CA32C5441C194D69C34BC50412F096A789D2C54410000009034BC5041E17A145E9D2C5441F9EFDC1435BC5041F0A10C3A9D2C5441774A0C1037BC50417E8A15AE9C2C5441B189C05535BC50419C7E6CE99A2C54413AB8760E33BC5041FC947794982C54410F2270F832BC504172DDEC7D982C5441F795C4EF32BC50417C4E0D75982C5441B81E857B32BC5041E17A14FE972C5441290C9C5C32BC5041497BCD67982C5441A996A35232BC504193A1E789982C544103A172E431BC50410C73CA029A2C54416FF6B0AC31BC50411AEA7DE69A2C5441D7A3708D31BC50417B14AE779B2C54413D0AD7232CBC5041333333039E2C5441CA69786629BC5041F86021D39B2C54414417C69728BC5041233BEA2D9B2C5441F5A9649228BC50419F0F9E299B2C5441DE3D4F9128BC5041E57AC0289B2C54413DF75D8828BC5041F5009C219B2C5441D7CF928728BC5041EEBDF9209B2C54415608534228BC5041250009EA9A2C544164F41FD727BC504144A66C389B2C54419A99992927BC5041C3F528BC9B2C5441FDE8959927BC5041DCAB4C3B9D2C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418918 - 148609
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002500000085EB51485DBB504100000060A72C5441000000F03BBB50415C8FC205992C5441B81E853B3DBB50411F85EB919D2C5441713D0A473DBB5041B81E859B9E2C54410AD7A3F03DBB50417B14AE979F2C5441E17A140E3EBB5041C3F5286CA02C5441A4703D6A3FBB50410AD7A380A12C5441CDCCCCFC40BB5041295C8F92A32C544114AE47D141BB50415C8FC2C5A42C54413D0AD7C341BB50415C8FC215A62C54413D0AD77341BB5041E17A146EA82C54411F85EBE141BB504185EB5158AA2C54417B14AEC742BB50415C8FC205AC2C5441E17A14EE44BB5041A4703D0AAD2C5441295C8F9245BB5041C3F5284CAF2C54415C8FC2C545BB5041B81E85FBAF2C5441B81E85BB45BB50415C8FC295B02C5441A4703DDA45BB5041C3F5287CB52C544185EB510846BB5041EC51B8DEB62C5441EC51B89E46BB50415C8FC225B92C54417B14AE6748BB50415C8FC2A5BB2C5441E17A144E4ABB5041295C8F72BE2C54411F85EB914BBB504185EB5198BF2C544185EB51384CBB5041EC51B8CEBF2C544148E17AD44CBB50418FC2F548C02C54418FC2F5C84DBB5041A4703DFAC12C5441EC51B84E4EBB504166666666C22C5441C3F528BC4FBB5041CDCCCCECC32C54410AD7A31050BB5041B81E85CBC42C5441D7A370FD50BB50411F85EB81C52C544185EB51D852BB504152B81E65C52C5441666666F657BB50411F85EB81C52C5441CDCCCC7C5EBB5041EC51B87EC42C544152B81E555FBB5041295C8F22C32C5441A4703D5A5EBB5041A4703DDAB52C5441713D0A475EBB5041D7A370DDB42C544185EB51485DBB504100000060A72C5441
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000004ED7AB7841BB50411E8F9883A82C5441D29460E341BB5041A6330B5BAA2C54412BAC6EE341BB5041128A255BAA2C5441EB9DB1E341BB5041E9A9A25BAA2C5441761A85E641BB50411DEBEA60AA2C54417B05E3E641BB504176759A61AA2C5441FB0B951042BB5041141389AFAA2C5441DDEF3ECC42BB50415989ECFEAB2C54418A48E14643BB5041AFB53D3CAC2C5441A21FD3E244BB504142D2E904AD2C5441E17A14EE44BB5041A4703D0AAD2C5441295C8F9245BB5041C3F5284CAF2C54415C8FC2C545BB5041B81E85FBAF2C544192FD13C545BB5041AA92CA05B02C54417CAE01D045BB5041BD7D4BDAB32C5441A4703DDA45BB5041C3F5287CB52C5441B22A41FC45BB50417714E281B62C54410CDB462046BB5041753B973BB72C5441C6315F9E46BB5041600E6924B92C5441E41D04C546BB5041265E655BB92C54417B14AE6748BB50415C8FC2A5BB2C5441EFB1741F49BB5041EC6996B4BC2C5441F0A85F584ABB50412EC5E57BBE2C5441A0C1B6884ABB5041B566BFA7BE2C544197AE8EDB4ABB5041B36BE5F2BE2C5441D253055C4BBB5041B2606D67BF2C5441A914BC7D4BBB5041D2750286BF2C5441F5B027A64BBB50410170EF9EBF2C544185EB51384CBB5041EC51B8CEBF2C54413FB5F47B4CBB504160CE8C03C02C54415AEABFDB4CBB5041D0BF5F4EC02C5441C49F34D24DBB5041D550B701C22C5441EC51B84E4EBB504166666666C22C5441C3F528BC4FBB5041CDCCCCECC32C5441507CBBBC4FBB504140184FEEC32C54413A350B0250BB5041C2FF09A5C42C54413147250E50BB50417CA3F1C4C42C54411CBC432A50BB50410E0342DFC42C5441AD5050BD50BB50414288F84DC52C5441D6EBC7F450BB5041250C407BC52C54412E4970FC50BB5041DB0E2681C52C5441811F658951BB504131A26E79C52C544185EB51D852BB504152B81E65C52C54419D5E2C9F54BB504113851E6FC52C5441347FCAFD57BB504134EBC580C52C5441168DE7AE5DBB50416557AB9EC42C5441CC7D6B7D5EBB504150E9B87DC42C5441ABA360885EBB5041F91D166CC42C5441F15616A95EBB504141EB7037C42C5441158E5A545FBB5041AC17BB23C32C54417CFB5B625EBB50410196394BB62C54416D9B22525EBB5041A7CE866FB52C5441713D0A475EBB5041D7A370DDB42C544181E8BEAE5DBB5041CF9FAACCAC2C544185EB51485DBB504100000060A72C5441AF0DCE014ABB5041798510149F2C5441A7F6FFA649BB504193D6FAEC9E2C5441ABC8C10748BB50419DCA3F3A9E2C54411AC57BF23BBB5041FB35D406992C5441318FDAF43CBB5041B703C5999C2C54418B72ACF63CBB5041EC0429A09C2C544108F02B063DBB5041BC3095D69C2C5441C270F61C3DBB50410B889D269D2C5441F247D4363DBB5041A0AC72819D2C5441B81E853B3DBB50411F85EB919D2C5441AA23D33E3DBB50411DF71CDE9D2C5441301A5D503DBB50418BE361A99E2C54410AD7A3F03DBB50417B14AE979F2C5441AB7D670D3EBB5041106E4867A02C54418881AD313FBB5041A111B953A12C5441A4703D6A3FBB50410AD7A380A12C5441CDCCCCFC40BB5041295C8F92A32C544114AE47D141BB50415C8FC2C5A42C54413D0AD7C341BB50415C8FC215A62C5441D632A08241BB504166A620FFA72C54414ED7AB7841BB50411E8F9883A82C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419022 - 3115680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666A6FFCB5041333333D3FB4E5441CDCCCCDCE3CB5041AE47E1CADA4E544114AE4771DDCB50418FC2F518DA4E5441C3F5283CBCCB50417B14AED7D94E54417B14AE07E9CB50419A9999190F4F5441713D0A47EECB5041AE47E19A0A4F5441666666A6FFCB5041333333D3FB4E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007E27A829E7CB5041FCF734B7DE4E5441666666A6FFCB5041333333D3FB4E544185EB512814CC50411F85EB61EA4E54410000004019CC5041C3F5283CE64E54417B14AEA719CC5041B81E859BE04E5441CDCCCCDCE3CB5041AE47E1CADA4E544140B6B9F3E6CB50418A811877DE4E5441E46BB53BE6CB504149EFE660DD4E54416B8EA7DFE6CB50417EBBFB6ADC4E54415B563535E8CB50418D00E0B2DD4E54417E27A829E7CB5041FCF734B7DE4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419022 - 3415349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666A6FFCB5041333333D3FB4E5441CDCCCCDCE3CB5041AE47E1CADA4E544114AE4771DDCB50418FC2F518DA4E5441C3F5283CBCCB50417B14AED7D94E54417B14AE07E9CB50419A9999190F4F5441713D0A47EECB5041AE47E19A0A4F5441666666A6FFCB5041333333D3FB4E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007E27A829E7CB5041FCF734B7DE4E5441666666A6FFCB5041333333D3FB4E544185EB512814CC50411F85EB61EA4E54410000004019CC5041C3F5283CE64E54417B14AEA719CC5041B81E859BE04E5441CDCCCCDCE3CB5041AE47E1CADA4E544140B6B9F3E6CB50418A811877DE4E5441E46BB53BE6CB504149EFE660DD4E54416B8EA7DFE6CB50417EBBFB6ADC4E54415B563535E8CB50418D00E0B2DD4E54417E27A829E7CB5041FCF734B7DE4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419286 - 222666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000333333231DD55041D7A370CD3A235441CDCCCC1C21D55041AE47E1AA37235441000000F023D5504100000070352354417B14AE3725D550410AD7A39034235441F6285C6F29D55041000000B031235441F6285C4F25D55041666666062F2354411F85EB611DD55041295C8FF22E23544114AE470119D550418FC2F5E82F235441295C8FD213D55041D7A370CD31235441E17A142E13D550415C8FC2E5302354413D0AD70312D550411F85EB4131235441F6285C3F0BD55041CDCCCC8C34235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD3523544148E17A4404D55041AE47E15A38235441333333E3F1D4504114AE47614223544148E17AD4E7D45041D7A370DD47235441333333A3EAD45041A4703D0A4D235441C3F5285CECD450416666667650235441F6285C0FEED4504152B81E0550235441E17A149EF5D45041C3F5280C4E2354413333338309D55041B81E85DB48235441CDCCCC0C0AD550410000005041235441666666C60BD55041333333B3402354417B14AE8710D55041EC51B87E402354410000005013D5504100000060402354419A9999D916D55041000000803F2354410000005019D550419A9999193E235441000000F01BD55041000000C03B235441333333231DD55041D7A370CD3A235441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000333333231DD55041D7A370CD3A235441DD29DB8A1DD55041BA46B07B3A235441CADE71411DD55041E975F4D3382354419380C5BA12D55041E39BF74D31235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD35235441F78D9C7808D5504174CBC0BE362354416506245D08D550413E0C46C936235441576CC00708D55041C4A2F9E9362354414CD015B107D5504144752A0B372354419B47038307D55041646BCF1C37235441AC09A43C07D55041E7BAC23737235441EB8A3C2F07D5504171E4E43C3723544145E42A89F2D45041D7C0B3D742235441A863FE2CF5D4504153C7AE2846235441967DB24D00D55041D7A671B2452354410D482BD300D55041DD42D9434A2354418E3849CE00D5504118D25F434A2354411D2E83D500D550415CC910854A235441E347A5C601D550417FDE947A4A2354410C9B7A8609D5504105357EAD48235441CDCCCC0C0AD550410000005041235441666666C60BD55041333333B3402354417B14AE8710D55041EC51B87E40235441941FE58E11D550410D505E7340235441A67BCD5F13D55041BA59175C4023544117BD45A613D55041B118A94A402354418558813514D55041C65E3B27402354419A9999D916D55041000000803F235441BA1BBAE618D55041A55D73553E2354410000005019D550419A9999193E235441000000F01BD55041000000C03B235441333333231DD55041D7A370CD3A235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419286 - 359939
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000333333231DD55041D7A370CD3A235441CDCCCC1C21D55041AE47E1AA37235441000000F023D5504100000070352354417B14AE3725D550410AD7A39034235441F6285C6F29D55041000000B031235441F6285C4F25D55041666666062F2354411F85EB611DD55041295C8FF22E23544114AE470119D550418FC2F5E82F235441295C8FD213D55041D7A370CD31235441E17A142E13D550415C8FC2E5302354413D0AD70312D550411F85EB4131235441F6285C3F0BD55041CDCCCC8C34235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD3523544148E17A4404D55041AE47E15A38235441333333E3F1D4504114AE47614223544148E17AD4E7D45041D7A370DD47235441333333A3EAD45041A4703D0A4D235441C3F5285CECD450416666667650235441F6285C0FEED4504152B81E0550235441E17A149EF5D45041C3F5280C4E2354413333338309D55041B81E85DB48235441CDCCCC0C0AD550410000005041235441666666C60BD55041333333B3402354417B14AE8710D55041EC51B87E402354410000005013D5504100000060402354419A9999D916D55041000000803F2354410000005019D550419A9999193E235441000000F01BD55041000000C03B235441333333231DD55041D7A370CD3A235441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000333333231DD55041D7A370CD3A235441DD29DB8A1DD55041BA46B07B3A235441CADE71411DD55041E975F4D3382354419380C5BA12D55041E39BF74D31235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD35235441F78D9C7808D5504174CBC0BE362354416506245D08D550413E0C46C936235441576CC00708D55041C4A2F9E9362354414CD015B107D5504144752A0B372354419B47038307D55041646BCF1C37235441AC09A43C07D55041E7BAC23737235441EB8A3C2F07D5504171E4E43C3723544145E42A89F2D45041D7C0B3D742235441A863FE2CF5D4504153C7AE2846235441967DB24D00D55041D7A671B2452354410D482BD300D55041DD42D9434A2354418E3849CE00D5504118D25F434A2354411D2E83D500D550415CC910854A235441E347A5C601D550417FDE947A4A2354410C9B7A8609D5504105357EAD48235441CDCCCC0C0AD550410000005041235441666666C60BD55041333333B3402354417B14AE8710D55041EC51B87E40235441941FE58E11D550410D505E7340235441A67BCD5F13D55041BA59175C4023544117BD45A613D55041B118A94A402354418558813514D55041C65E3B27402354419A9999D916D55041000000803F235441BA1BBAE618D55041A55D73553E2354410000005019D550419A9999193E235441000000F01BD55041000000C03B235441333333231DD55041D7A370CD3A235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419312 - 26866
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000300000013000000B81E856B58D35041D7A370FD7A245441F6285C4F59D350410AD7A37079245441AE47E17A5AD350415C8FC2B5772454417B14AE575BD350418FC2F5D876245441AE47E1CA5CD350417B14AEC775245441E17A148E5DD35041B81E852B75245441AE47E14A5ED35041A4703D1A7424544114AE47515ED3504114AE47717324544185EB51985DD350410AD7A3307324544114AE47115AD350411F85EB517424544185EB517853D35041C3F5281C78245441B81E857B4DD3504148E17A847B245441000000E04DD3504185EB51087C2454413D0AD73351D350417B14AEB77C24544114AE479153D35041333333337D2454419A99999955D35041E17A146E7D24544152B81EC556D3504152B81EE57C2454411F85EBA157D350411F85EB217C245441B81E856B58D35041D7A370FD7A24544107000000666666565AD350417B14AE27762454413D0AD7F359D35041C3F5288C75245441F6285CFF59D350417B14AE5775245441CDCCCC2C5AD35041C3F5283C75245441EC51B85E5AD3504185EB514875245441295C8FC25AD35041333333E375245441666666565AD350417B14AE277624544106000000AE47E18A53D350415C8FC2657B245441D7A3707D56D35041CDCCCC0C7A2454413333331357D35041CDCCCC8C7B245441713D0AF754D35041333333637C2454418FC2F5F853D35041A4703D8A7C245441AE47E18A53D350415C8FC2657B24544101030000000100000033000000CDCCCC8C67D3504148E17AA48D2454413333331368D35041000000F0922454419A9999696AD35041A4703D0A96245441713D0AA76AD35041295C8FC2992454413D0AD7736CD350413D0AD7239C245441295C8F6271D350419A9999D99C2454419A9999F96ED350415C8FC29590245441D7A3708D6ED35041713D0A078C245441E17A14AE6BD35041EC51B8CE8624544148E17A5469D3504185EB5128832454417B14AE5769D35041B81E850B7A245441713D0A776AD35041F6285C9F72245441B81E850B64D3504166666636722454419A9999D960D35041295C8FB2722454417B14AEF75FD35041C3F5287C7324544152B81E855FD35041A4703D8A74245441CDCCCCDC5ED35041AE47E17A7524544148E17AA45DD35041713D0A477624544185EB51785CD3504114AE473177245441A4703D0A5BD350411F85EBE17824544114AE47D15ED350411F85EBA17924544152B81ED55FD35041713D0AD77A245441EC51B8DE5FD35041EC51B83E7E245441F6285CEF5ED350413D0AD7A37F24544152B81E355ED35041A4703DFA80245441A4703D9A5DD35041AE47E1DA81245441C3F5285C5ED35041B81E85FB83245441B81E851B5AD35041F6285C7F852454415C8FC2B558D35041AE47E10A86245441CDCCCC6C57D35041000000208324544152B81EC556D3504148E17A0483245441E17A14DE54D3504185EB518883245441A4703D6A53D35041713D0A3784245441295C8F424FD35041EC51B84E842454415C8FC2C54ED35041713D0A2786245441AE47E11A4ED35041CDCCCCBC862454415C8FC2354DD35041E17A14DE86245441295C8F824CD35041B81E855B86245441666666C64BD350418FC2F55886245441B81E858B4AD35041F6285C7F892454419A9999294DD35041333333A3972454417B14AE7766D350417B14AE479B2454415C8FC2D566D350413333335396245441E17A14EE65D35041B81E85CB9224544185EB519865D35041B81E858B8C2454418FC2F59866D350415C8FC2658A24544152B81EA566D3504114AE477188245441D7A370BD66D350411F85EBD186245441F6285C1F68D3504185EB5158872454415C8FC2A568D350413D0AD7D38A245441CDCCCC8C67D3504148E17AA48D245441
+</a>
+
+<b>
+01060000000100000001030000000100000024000000ED66E3DA66D350414E571ADD8624544132780CA366D3504185AC87C6882454414435E08566D350416E1EA48E8A24544130E93AE465D35041BFD7E8E88B245441F93A989E65D35041D99895008D24544109696ABD65D35041183AE03A9024544107EEEFE765D350412F7FEA5892245441A456362566D3504135F790A293245441E2F309C366D3504131622D0A96245441E69007CD66D35041D79BE9C896245441DFC4FEBC66D35041018F1AA1972454412FAA26A366D3504172728FFD982454414F2B1C7F66D350417B3980E39A245441ED8EE69966D350411DAF16A49C245441EAD323DA66D350410C41951A9E245441B08F1A1467D350416CE932A79F24544123F4C98567D35041D42E6459A2245441716A9D336BD35041989CDC70A22454413C6C3D5E6CD3504114FA5BA19C245441FD1BC9976BD35041A410E1009B245441D506EFF56AD350410C00E02A9A24544117B19EA06AD35041B65C0C5F992454415640D2886AD3504109892BEE97245441EAA16D6F6AD3504181F1936496245441EA02C6066AD350416CFC118795245441B36F026969D35041BCA8ACB59424544185B4DB3068D3504134535D17932454419560D80468D35041BAC9385F92245441454912E667D35041C69CD82891245441A1D0B3C167D3504101DC09BA8F24544165BBD49367D35041DE7A64EB8D245441F4BD233268D35041F9A565FC8B2454411FD40BA268D350418D8534BB8A24544164DC8B6968D35041DD336C448924544186103F2068D35041AF0D335E87245441ED66E3DA66D350414E571ADD86245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419312 - 68202
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000300000013000000B81E856B58D35041D7A370FD7A245441F6285C4F59D350410AD7A37079245441AE47E17A5AD350415C8FC2B5772454417B14AE575BD350418FC2F5D876245441AE47E1CA5CD350417B14AEC775245441E17A148E5DD35041B81E852B75245441AE47E14A5ED35041A4703D1A7424544114AE47515ED3504114AE47717324544185EB51985DD350410AD7A3307324544114AE47115AD350411F85EB517424544185EB517853D35041C3F5281C78245441B81E857B4DD3504148E17A847B245441000000E04DD3504185EB51087C2454413D0AD73351D350417B14AEB77C24544114AE479153D35041333333337D2454419A99999955D35041E17A146E7D24544152B81EC556D3504152B81EE57C2454411F85EBA157D350411F85EB217C245441B81E856B58D35041D7A370FD7A24544107000000666666565AD350417B14AE27762454413D0AD7F359D35041C3F5288C75245441F6285CFF59D350417B14AE5775245441CDCCCC2C5AD35041C3F5283C75245441EC51B85E5AD3504185EB514875245441295C8FC25AD35041333333E375245441666666565AD350417B14AE277624544106000000AE47E18A53D350415C8FC2657B245441D7A3707D56D35041CDCCCC0C7A2454413333331357D35041CDCCCC8C7B245441713D0AF754D35041333333637C2454418FC2F5F853D35041A4703D8A7C245441AE47E18A53D350415C8FC2657B24544101030000000100000033000000CDCCCC8C67D3504148E17AA48D2454413333331368D35041000000F0922454419A9999696AD35041A4703D0A96245441713D0AA76AD35041295C8FC2992454413D0AD7736CD350413D0AD7239C245441295C8F6271D350419A9999D99C2454419A9999F96ED350415C8FC29590245441D7A3708D6ED35041713D0A078C245441E17A14AE6BD35041EC51B8CE8624544148E17A5469D3504185EB5128832454417B14AE5769D35041B81E850B7A245441713D0A776AD35041F6285C9F72245441B81E850B64D3504166666636722454419A9999D960D35041295C8FB2722454417B14AEF75FD35041C3F5287C7324544152B81E855FD35041A4703D8A74245441CDCCCCDC5ED35041AE47E17A7524544148E17AA45DD35041713D0A477624544185EB51785CD3504114AE473177245441A4703D0A5BD350411F85EBE17824544114AE47D15ED350411F85EBA17924544152B81ED55FD35041713D0AD77A245441EC51B8DE5FD35041EC51B83E7E245441F6285CEF5ED350413D0AD7A37F24544152B81E355ED35041A4703DFA80245441A4703D9A5DD35041AE47E1DA81245441C3F5285C5ED35041B81E85FB83245441B81E851B5AD35041F6285C7F852454415C8FC2B558D35041AE47E10A86245441CDCCCC6C57D35041000000208324544152B81EC556D3504148E17A0483245441E17A14DE54D3504185EB518883245441A4703D6A53D35041713D0A3784245441295C8F424FD35041EC51B84E842454415C8FC2C54ED35041713D0A2786245441AE47E11A4ED35041CDCCCCBC862454415C8FC2354DD35041E17A14DE86245441295C8F824CD35041B81E855B86245441666666C64BD350418FC2F55886245441B81E858B4AD35041F6285C7F892454419A9999294DD35041333333A3972454417B14AE7766D350417B14AE479B2454415C8FC2D566D350413333335396245441E17A14EE65D35041B81E85CB9224544185EB519865D35041B81E858B8C2454418FC2F59866D350415C8FC2658A24544152B81EA566D3504114AE477188245441D7A370BD66D350411F85EBD186245441F6285C1F68D3504185EB5158872454415C8FC2A568D350413D0AD7D38A245441CDCCCC8C67D3504148E17AA48D245441
+</a>
+
+<b>
+01060000000100000001030000000100000024000000ED66E3DA66D350414E571ADD8624544132780CA366D3504185AC87C6882454414435E08566D350416E1EA48E8A24544130E93AE465D35041BFD7E8E88B245441F93A989E65D35041D99895008D24544109696ABD65D35041183AE03A9024544107EEEFE765D350412F7FEA5892245441A456362566D3504135F790A293245441E2F309C366D3504131622D0A96245441E69007CD66D35041D79BE9C896245441DFC4FEBC66D35041018F1AA1972454412FAA26A366D3504172728FFD982454414F2B1C7F66D350417B3980E39A245441ED8EE69966D350411DAF16A49C245441EAD323DA66D350410C41951A9E245441B08F1A1467D350416CE932A79F24544123F4C98567D35041D42E6459A2245441716A9D336BD35041989CDC70A22454413C6C3D5E6CD3504114FA5BA19C245441FD1BC9976BD35041A410E1009B245441D506EFF56AD350410C00E02A9A24544117B19EA06AD35041B65C0C5F992454415640D2886AD3504109892BEE97245441EAA16D6F6AD3504181F1936496245441EA02C6066AD350416CFC118795245441B36F026969D35041BCA8ACB59424544185B4DB3068D3504134535D17932454419560D80468D35041BAC9385F92245441454912E667D35041C69CD82891245441A1D0B3C167D3504101DC09BA8F24544165BBD49367D35041DE7A64EB8D245441F4BD233268D35041F9A565FC8B2454411FD40BA268D350418D8534BB8A24544164DC8B6968D35041DD336C448924544186103F2068D35041AF0D335E87245441ED66E3DA66D350414E571ADD86245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>462059 - 5241514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002200000085EB516853F05041E17A140E06FE544114AE47F154F050413D0AD75303FE54415C8FC2355BF05041C3F5282CF7FD54417B14AEF76AF05041B81E856BE9FD54411F85EBE16EF05041E17A148EE1FD54413D0AD7B372F050419A9999A9DCFD54411F85EB4176F050419A999939D6FD54410000005076F050419A999929D5FD54413D0AD76375F05041AE47E1DAD4FD54410000009072F0504152B81EC5D4FD54418FC2F56870F05041AE47E12AD5FD5441B81E854B6CF0504152B81EA5D6FD5441CDCCCC7C6AF05041295C8F62D7FD54411F85EB8163F05041713D0A97DAFD54417B14AE2761F05041295C8F42DBFD54413D0AD7D35EF0504185EB5168DCFD5441D7A3701D5DF05041E17A14AEDCFD544185EB51D85AF05041AE47E13ADDFD5441CDCCCCEC5AF05041AE47E1BADDFD5441F6285C7F5BF050413D0AD7E3E1FD5441CDCCCC5C54F05041D7A3705DE3FD54417B14AEA742F05041713D0AD7E7FD54413D0AD75341F0504114AE4721E8FD54410000005041F050419A9999E9EBFD5441AE47E16A40F05041EC51B89EF1FD5441666666C63FF05041AE47E12AF4FD54411F85EB913EF050413D0AD7C3FDFD5441666666263EF050410000005000FE5441333333433EF05041A4703DEA02FE54411F85EB913EF050415C8FC26504FE54415C8FC2853FF05041713D0AE704FE54411F85EB5142F05041713D0A2705FE5441CDCCCC3C4EF05041333333D305FE544185EB516853F05041E17A140E06FE5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000008968804376F05041B4E40B1BD6FD5441A4564F4476F050415FE80C51D5FD54410AD7A36075F0504100000010D5FD54418FC2F58873F0504133333313D5FD54410AD7A33070F050411F85EBA1D5FD5441C3F5284C6EF05041F6285C3FD6FD5441E17A14AE63F0504148E17AE4DAFD54418FC2F5785EF05041CDCCCC7CDCFD54410D16EFE85AF05041B1DEC544DDFD54413EE51A895BF05041230F0AE6E1FD54411F127EBE51F05041357A56FEE3FD5441710CB74D41F050411D149E17E8FD54417C5CFEFC40F050418190F0FAEDFD5441684A027C3FF050415C79627BF6FD5441308802E63EF0504111321626FBFD544109C3BE2C3EF05041BB78832900FE5441FE5C59403EF0504121E249A802FE544190B3979C3EF050413C1E6B6B04FE5441CF51A07C3FF05041AAE921EE04FE544185EB516853F05041E17A140E06FE544176DCB20B57F050413BA8A53FFFFD54415C8FC2355BF05041C3F5282CF7FD54412BC26A196BF050412E8DBE27E9FD544107EEA1076FF050419481C75DE1FD54414F969A1B73F050416F89B3EDDBFD54418968804376F05041B4E40B1BD6FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508987 - 1606794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003E000000F6285C6F66635041F6285C0F5F2A5541295C8FB263635041295C8F525E2A55410AD7A3305F6350418FC2F5C85B2A5541B81E854B5A635041B81E85DB5A2A554152B81EA559635041B81E85BB5A2A55411F85EB31586350411F85EB615A2A55411F85EB514F63504114AE4721582A55417B14AEC74C635041A4703D0A582A5541E17A14EE4663504152B81EC55B2A5541EC51B81E4663504185EB51085B2A55411F85EBA1476350411F85EBB1552A5541CDCCCC6C47635041000000F0502A5541C3F5285C49635041B81E859B4F2A554185EB51F84B635041EC51B82E4F2A55413D0AD79353635041666666864E2A5541000000905A635041CDCCCC6C4D2A55410AD7A3F05A6350413D0AD7134A2A5541EC51B88E47635041666666F64D2A554185EB5198466350415C8FC2354E2A5541295C8F9245635041AE47E1DA4A2A554185EB515844635041A4703D1A4B2A55419A9999E93C635041333333334C2A5541B81E850B38635041666666164D2A55415C8FC265336350411F85EBD14E2A5541C3F528EC3163504185EB51A84F2A5541000000103163504185EB5188502A55417B14AEB73063504114AE47B1512A5541000000E030635041E17A14AE522A5541F6285C2F31635041713D0AA7542A5541B81E857B31635041713D0AF7562A5541295C8F42326350411F85EBF1572A55418FC2F5D833635041295C8FF2592A5541295C8F5236635041666666D65B2A55410000000037635041666666465C2A5541333333C33A635041A4703DBA5E2A5541000000303E6350410AD7A370602A5541B81E85EB3F635041EC51B84E612A5541C3F5287C416350419A9999E9612A5541CDCCCC7C436350415C8FC2B5622A5541AE47E11A4963504185EB5198642A55419A9999F94C635041CDCCCCFC652A55411F85EB914F6350410AD7A330672A55419A99991953635041AE47E10A692A554152B81E456263504148E17AF4712A5541B81E850B66635041C3F5282C742A5541F6285C4F6B63504114AE47A1762A5541C3F528AC79635041EC51B83E7B2A5541B81E854B7963504185EB51586B2A5541F6285CEF6A635041333333C3692A5541B81E85EB67635041CDCCCCEC692A55419A9999896563504185EB5128692A5541295C8F22636350411F85EB61682A5541CDCCCC9C6063504166666636662A55417B14AEB767635041AE47E19A662A55411F85EB216B635041AE47E1CA662A55410AD7A31075635041A4703DFA672A554185EB519874635041EC51B80E5F2A5541713D0A977463504152B81EF55E2A55410AD7A360736350415C8FC2955F2A5541333333537063504148E17AF45E2A554114AE47616B6350419A9999D95E2A5541F6285C6F66635041F6285C0F5F2A5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000FF7FEC62486350419DBDDDCB4D2A5541C57160984C635041B130E7F34C2A55417A87CCBE4D63504138B8E3B84C2A5541C19FC8A651635041733C74F04B2A5541BAF7F079546350419461815F4B2A55410AD7A3F05A6350413D0AD7134A2A5541B3468FF05A6350410A648D144A2A55412ACF76F35A635041C3ABF8134A2A554114AE47215B6350410AD7A360482A55415C8FC2855A63504152B81E35442A554148E17AF456635041E17A143E462A55417B14AE6753635041B81E85AB472A55417B14AE374F635041713D0AE7482A5541FCAA6B9645635041FC168CE74A2A554185EB5198466350415C8FC2354E2A5541EC51B88E47635041666666F64D2A5541FF7FEC62486350419DBDDDCB4D2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508987 - 3270319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003E000000F6285C6F66635041F6285C0F5F2A5541295C8FB263635041295C8F525E2A55410AD7A3305F6350418FC2F5C85B2A5541B81E854B5A635041B81E85DB5A2A554152B81EA559635041B81E85BB5A2A55411F85EB31586350411F85EB615A2A55411F85EB514F63504114AE4721582A55417B14AEC74C635041A4703D0A582A5541E17A14EE4663504152B81EC55B2A5541EC51B81E4663504185EB51085B2A55411F85EBA1476350411F85EBB1552A5541CDCCCC6C47635041000000F0502A5541C3F5285C49635041B81E859B4F2A554185EB51F84B635041EC51B82E4F2A55413D0AD79353635041666666864E2A5541000000905A635041CDCCCC6C4D2A55410AD7A3F05A6350413D0AD7134A2A5541EC51B88E47635041666666F64D2A554185EB5198466350415C8FC2354E2A5541295C8F9245635041AE47E1DA4A2A554185EB515844635041A4703D1A4B2A55419A9999E93C635041333333334C2A5541B81E850B38635041666666164D2A55415C8FC265336350411F85EBD14E2A5541C3F528EC3163504185EB51A84F2A5541000000103163504185EB5188502A55417B14AEB73063504114AE47B1512A5541000000E030635041E17A14AE522A5541F6285C2F31635041713D0AA7542A5541B81E857B31635041713D0AF7562A5541295C8F42326350411F85EBF1572A55418FC2F5D833635041295C8FF2592A5541295C8F5236635041666666D65B2A55410000000037635041666666465C2A5541333333C33A635041A4703DBA5E2A5541000000303E6350410AD7A370602A5541B81E85EB3F635041EC51B84E612A5541C3F5287C416350419A9999E9612A5541CDCCCC7C436350415C8FC2B5622A5541AE47E11A4963504185EB5198642A55419A9999F94C635041CDCCCCFC652A55411F85EB914F6350410AD7A330672A55419A99991953635041AE47E10A692A554152B81E456263504148E17AF4712A5541B81E850B66635041C3F5282C742A5541F6285C4F6B63504114AE47A1762A5541C3F528AC79635041EC51B83E7B2A5541B81E854B7963504185EB51586B2A5541F6285CEF6A635041333333C3692A5541B81E85EB67635041CDCCCCEC692A55419A9999896563504185EB5128692A5541295C8F22636350411F85EB61682A5541CDCCCC9C6063504166666636662A55417B14AEB767635041AE47E19A662A55411F85EB216B635041AE47E1CA662A55410AD7A31075635041A4703DFA672A554185EB519874635041EC51B80E5F2A5541713D0A977463504152B81EF55E2A55410AD7A360736350415C8FC2955F2A5541333333537063504148E17AF45E2A554114AE47616B6350419A9999D95E2A5541F6285C6F66635041F6285C0F5F2A5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000FF7FEC62486350419DBDDDCB4D2A5541C57160984C635041B130E7F34C2A55417A87CCBE4D63504138B8E3B84C2A5541C19FC8A651635041733C74F04B2A5541BAF7F079546350419461815F4B2A55410AD7A3F05A6350413D0AD7134A2A5541B3468FF05A6350410A648D144A2A55412ACF76F35A635041C3ABF8134A2A554114AE47215B6350410AD7A360482A55415C8FC2855A63504152B81E35442A554148E17AF456635041E17A143E462A55417B14AE6753635041B81E85AB472A55417B14AE374F635041713D0AE7482A5541FCAA6B9645635041FC168CE74A2A554185EB5198466350415C8FC2354E2A5541EC51B88E47635041666666F64D2A5541FF7FEC62486350419DBDDDCB4D2A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508994 - 1607062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3703DD2605041F6285CCFF42A55419A999969D86050418FC2F5B8C62A55415C8FC245D66050419A999979C62A55410AD7A3D0D46050410AD7A3D0C72A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000572F7F73D4605041B929D94CE42A5541BADB2830D3605041CA5F8C13E32A55411459DB2FD3605041F0C7D210E32A554168E3F306D3605041EBA4AFA0E12A5541BA7662F8D2605041CBD2921DE12A5541F4DAF8C6D2605041756426B7E02A554191F410C0D1605041DD9AB9B0DE2A55417794F765D16050410C20B551E12A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541572F7F73D4605041B929D94CE42A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508994 - 3318542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3703DD2605041F6285CCFF42A55419A999969D86050418FC2F5B8C62A55415C8FC245D66050419A999979C62A55410AD7A3D0D46050410AD7A3D0C72A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000572F7F73D4605041B929D94CE42A5541BADB2830D3605041CA5F8C13E32A55411459DB2FD3605041F0C7D210E32A554168E3F306D3605041EBA4AFA0E12A5541BA7662F8D2605041CBD2921DE12A5541F4DAF8C6D2605041756426B7E02A554191F410C0D1605041DD9AB9B0DE2A55417794F765D16050410C20B551E12A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541572F7F73D4605041B929D94CE42A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398796 - 2984513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000050000008FC2F538661C51418FC2F5382367544114AE4771661C5141CDCCCCBC20675441EC51B8CE231C514114AE47A11667544148E17AA4231C514166666606196754418FC2F538661C51418FC2F53823675441
+</a>
+
+<b>
+010600000001000000010300000001000000090000003ACF7B0D231C5141D76A2FC51D6754419DE3E7E13C1C51413F10EECD2167544141B40215571C5141A4B38FE525675441B202E8C7651C51410D54B92E2867544154556438661C5141ABF64D3F23675441BCF4CD7C561C5141F94F00D0206754413D4048BF3D1C51413FE1F2051D675441E5BB2773231C514140D393FE186754413ACF7B0D231C5141D76A2FC51D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399023 - 960015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000090000000AD7A3E075215141D7A370FDBA6F54410AD7A38088215141713D0A47C66F544185EB51A893215141E17A149EB16F544185EB51B89E215141D7A3701D9D6F5441713D0A178A2151419A999989926F5441A4703DAA8521514148E17A44906F54410AD7A3107B21514185EB51E8A36F54416666666670215141AE47E1AAB76F54410AD7A3E075215141D7A370FDBA6F5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000666666B6992151415C8FC2B5D06F5441B81E859BB02151419A999949A66F5441D7A370BDAB215141AE47E1CAA36F5441ED71D1D59E215141328D912C9D6F544108D0786C88215141CD3CD13AC66F54417B14AE0795215141F6285CDFCD6F5441666666B6992151415C8FC2B5D06F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399047 - 3374563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000000D0000005C8FC285232151413D0AD79349705441C3F5285C28215141AE47E1BA3F705441A4703D5A292151415C8FC2B53D705441000000E028215141000000903D705441713D0A77EA205141333333532A7054415C8FC265E9205141EC51B82E2E7054417B14AE17E72051413D0AD7B33470544148E17A14FD205141E17A148E3B705441B81E850B0D215141713D0A3740705441F6285CBF15215141000000F042705441CDCCCCFC1A2151415C8FC2F5447054411F85EB211D21514185EB51E8457054415C8FC285232151413D0AD793497054410103000000010000001A000000EC51B89EE1205141B81E85EB467054410AD7A320EA2051419A99995949705441B81E85CBEF20514185EB51F84A705441E17A14AEF520514185EB51C84C705441CDCCCC9CFB20514148E17A844E705441C3F5283CFD205141D7A370FD4E705441F6285CDF10215141EC51B8DE54705441A4703DDA1521514152B81E1557705441EC51B8DE1A215141F6285C4F59705441C3F528BC1C2151415C8FC21556705441000000501F215141333333735170544152B81E3523215141333333334A705441000000E01C21514152B81E65467054410AD7A3C01A21514114AE476145705441D7A370AD152151411F85EB71437054417B14AE770D215141C3F528DC40705441CDCCCCDCFC205141713D0A573C705441000000F0E82051410AD7A34036705441A4703DDAE720514185EB51D8387054418FC2F568E7205141D7A3708D3A70544100000030E72051417B14AE273E705441EC51B89EE6205141CDCCCCCC3F70544152B81E35E6205141295C8FA2417054410AD7A3C0E4205141CDCCCC6C427054418FC2F5B8E22051415C8FC2F541705441EC51B89EE1205141B81E85EB46705441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000E29FA3CF12215141A69934BB55705441FBEA4B15112151416ECAAEF6547054410E995BDF10215141D826B8DE54705441C3F5283CFD205141D7A370FD4E705441E296CB9CFB20514138247D844E705441E3B715AEF52051413A0E53C84C705441E2B884CBEF205141575B52F84A7054412695E17AE82051411580717D6870544193C4D673EB2051419BBB48A16870544138BF21D4ED20514142BB7B8664705441E9E6097FEE205141D656AA5A647054419FD644AAEF205141A8D7D40164705441F939C8E3EF205141FB6AE72A647054414DDFA5D0F6205141E4FCC73C63705441B0F18D9201215141DE61EAD1617054414FA86F5D07215141B709B7EE607054412244E80B30215141CC87357482705441FA30969F322151419112965F84705441352AAEC1352151419893080387705441B9EBD9B639215141BE64E9FA897054413919EA963D215141038638478D705441E82A84E0412151416363DAD29070544162C478AB452151419F5CF2F4937054410142F7DF49215141F9A5786B97705441713D0A4751215141295C8F829D705441E25007F8522151419D0C71689B705441B274720D52215141D560B5439B705441276A679B50215141B856BD509970544102C118A84D2151411897CB749870544182F0762E46215141011F72CE90705441B07E228A4121514181C075E78C705441223B2D523F215141588E4EB88A705441C56D57D53E215141AB30683D8A705441E5B40AC73E21514158D562378A705441452492B03E21514167B3EC2D8A7054418B64F88B3C215141200854098970544129B002403B2151413962CE7088705441A4C896AC3821514179C9E23886705441637427DD35215141E0B86FA2847054419A42E522342151414D66DBC2837054412028D8DB332151412A45028F8370544164854FE0332151418FC1AD8983705441EC14ABA933215141E87FC15A837054411AB2CFBC3F2151412BAADB617570544119A8B1AC4C215141598CB6608070544143FB5CBB4C215141D84B2E6D80705441FA2651D94C2151416DACA3868070544153F19AA65D2151415D746ACE8E705441CDCCCC5C5E2151417B14AE678D705441CCF233CF222151411808023A5B705441C3F528BC1C2151415C8FC21556705441524AC67A1B21514192C58141587054417DB4B2E71A2151417AF6055259705441414546DF1A2151412BB2664E59705441EC51B8DE1A215141F6285C4F597054414ECADE881A215141C7513F2959705441F082102919215141208AF891587054418F1E7DDC1621514181BFC48757705441A4703DDA1521514152B81E1557705441E29FA3CF12215141A69934BB55705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45552 - 365909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000048000000E339DA5D30DE50414D878498B2F754416ADF7B9A31DE50417973CC88B0F754416C5193D92FDE50416E48292AB3F75441FEBC829331DE504101B418E4B4F754415EF1B7F531DE50419F1F089EB6F7544141444FF933DE5041433BE549B7F75441248CE80A32DE5041AE31047FB6F754414DBBD59E31DE504186A2BDE9B4F75441C7E3051032DE5041046E027CB6F754418EB9859A33DE5041334CB910B7F754417D289DEE33DE5041746AA827B7F75441A7B1246336DE5041F3FDADCEB7F7544155A0C87438DE504197583F9EB8F75441AA1B66563ADE50414BB57D83B8F75441B81BB8F939DE5041A0D23F34B8F7544196BE125837DE504110937636B6F754417FB8E13535DE5041015A11AAB3F75441B0C5117434DE50410E14F4C7B2F75441CD17473A34DE50416F4F46D0B1F75441170E96C133DE504120A936F4AFF754413C4D644535DE50413D61AD0EA9F754419774DE4835DE504130C5F44BA8F75441642E7C3835DE504109BD82E3A6F754414B7E554F35DE50419AA5EAE1A6F754411AE3984F35DE504163982CD3A6F75441DDE304F236DE5041C5D68EB4A6F75441455014CF3BDE5041EB91B558A6F75441BD33DD9641DE5041D6C9A0BFA5F7544100611EF044DE504149FB14ACA4F75441E3852EDA47DE504169E5CC13A4F754418209B20C48DE5041842D5E05A4F75441EB755BA449DE504113C9341DA4F7544173D007CD49DE5041A84B7ED8A3F754419F0F47D349DE50417852BBDEA3F754417A26CEA049DE5041CD8348C0A0F7544113E96C4648DE50418EC64166A1F75441C83D9DE847DE5041953D26E8A1F75441FE7FA8172DDE50414FE471D89DF754416974458B2BDE50412F3050899DF75441F4D4A6A729DE5041AD90D6D79CF75441C3F5282C27DE5041000000E09BF754412560592A27DE504104075DE59BF754410003091229DE5041F1D9EEA09CF7544157A4E13227DE50414CC518F19BF75441DF0BBEE325DE5041DF163A4EA0F75441D44F5ACF25DE5041F3047743A0F7544114B39EC725DE5041F242FA5DA0F75441E1E7485929DE50411DE7B514A1F754415302C34927DE5041ADFE789EA0F75441A673D9E829DE50418E76012AA1F75441739AA3C72CDE50412096E8EBA1F75441FDF96E782DDE5041FD65F220A2F75441C7E06F7B2ADE504147A3BE55A1F75441627168582ADE504108B2E44DA1F7544175615CAF2CDE504180615CFFA1F75441276AEB8F2FDE5041441754DCA2F75441F35B1B8730DE50417122B818A3F75441831D492630DE50410CD7B3EEA2F75441F24A205E30DE5041AD6474FFA2F75441377B2F5832DE50418F5A427CA3F75441F4A3CACB33DE50411378D96EA4F75441F4A3CACB33DE50416311CF83A4F7544138ADCA4933DE5041C9D1644BA4F754410CAA34C833DE5041FCCFD0AEA4F7544195C1DDBA33DE5041889BF6EEA5F75441F4A3CACB33DE5041BCD7161DA5F75441F4A3CACB33DE50410BAB25A0A6F75441B64B8C0032DE5041627DCDDFAFF754415BFAA9F831DE5041EBE560EFAFF754415EF1B7F531DE50417858F2FFAFF75441652C1EDF31DE5041EEFFD821B0F75441E339DA5D30DE50414D878498B2F754410103000000010000000400000017DB194326DE504188279DB69EF7544129A3882127DE5041A9F378FF9BF754413970F79026DE50413E71A5AB9DF7544117DB194326DE504188279DB69EF754410103000000010000000700000071DF494333DE5041815B9248A4F7544138ADCA4933DE5041C9D1644BA4F75441EFAE975232DE50415F22FA88A3F75441F35B1B8730DE50417122B818A3F754418D3249D630DE5041BD7A143BA3F75441E8BF078932DE504113CD4BB9A3F7544171DF494333DE5041815B9248A4F75441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000914C03BB47DE5041824E0E34A4F75441049101F344DE50410C1D5EC7A4F75441E406B09741DE5041106D70D5A5F754416E4829DA3DDE50417FEE3250A6F754413921385839DE5041C4D5DA99A6F75441642E7C3835DE504109BD82E3A6F754417F7B095135DE5041FC5CA7FFA8F75441CB129F8C34DE50414781138CACF754410CAA34C833DE5041680B65E7AFF75441B0C5117434DE50410E14F4C7B2F7544157CEA05437DE50412F9E4523B6F7544133714A663ADE504167251289B8F754416B6B407B38DE504181729FA1B8F754414E31012E36DE5041B2BCA7C4B7F7544141444FF933DE5041433BE549B7F754415EF1B7F531DE50419F1F089EB6F75441FEBC829331DE504101B418E4B4F754416C5193D92FDE50416E48292AB3F754415EF1B7F531DE50417858F2FFAFF75441125A22BA32DE504178CB1BAFABF75441FC5CA7AF33DE5041190A10FCA6F754410CAA34C833DE5041FCCFD0AEA4F75441E8BF078932DE504113CD4BB9A3F75441276AEB8F2FDE5041441754DCA2F7544175615CAF2CDE504180615CFFA1F75441134075182ADE5041C1F8F13AA1F7544114B39EC725DE5041F242FA5DA0F754413970F79026DE50413E71A5AB9DF75441D7A3709D21DE50415C8FC255ACF754415C8FC2D51EDE504185EB5148ACF75441000000301DDE5041D7A370EDB2F7544148E17AE422DE504114AE47C1B6F7544185EB51F827DE5041D7A3703DB8F754410000008030DE504185EB5128B7F75441D7A370ED33DE50413D0AD723B8F75441F6285CBF3ADE504148E17A34BAF754410AD7A3D03CDE5041000000C0BAF75441E17A140E40DE50411F85EBA1BBF75441713D0A6750DE504152B81E15BEF75441713D0AB751DE5041D7A3705DB6F7544152B81E2552DE5041C3F5284CB0F754415C8FC2E550DE5041AE47E12AACF75441AE47E10A4FDE504148E17A14A9F754410B0A3C054ADE5041569C7C0FA4F754411C3779CF49DE5041A1D35333A4F75441914C03BB47DE5041824E0E34A4F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45552 - 1527257
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000048000000E339DA5D30DE50414D878498B2F754416ADF7B9A31DE50417973CC88B0F754416C5193D92FDE50416E48292AB3F75441FEBC829331DE504101B418E4B4F754415EF1B7F531DE50419F1F089EB6F7544141444FF933DE5041433BE549B7F75441248CE80A32DE5041AE31047FB6F754414DBBD59E31DE504186A2BDE9B4F75441C7E3051032DE5041046E027CB6F754418EB9859A33DE5041334CB910B7F754417D289DEE33DE5041746AA827B7F75441A7B1246336DE5041F3FDADCEB7F7544155A0C87438DE504197583F9EB8F75441AA1B66563ADE50414BB57D83B8F75441B81BB8F939DE5041A0D23F34B8F7544196BE125837DE504110937636B6F754417FB8E13535DE5041015A11AAB3F75441B0C5117434DE50410E14F4C7B2F75441CD17473A34DE50416F4F46D0B1F75441170E96C133DE504120A936F4AFF754413C4D644535DE50413D61AD0EA9F754419774DE4835DE504130C5F44BA8F75441642E7C3835DE504109BD82E3A6F754414B7E554F35DE50419AA5EAE1A6F754411AE3984F35DE504163982CD3A6F75441DDE304F236DE5041C5D68EB4A6F75441455014CF3BDE5041EB91B558A6F75441BD33DD9641DE5041D6C9A0BFA5F7544100611EF044DE504149FB14ACA4F75441E3852EDA47DE504169E5CC13A4F754418209B20C48DE5041842D5E05A4F75441EB755BA449DE504113C9341DA4F7544173D007CD49DE5041A84B7ED8A3F754419F0F47D349DE50417852BBDEA3F754417A26CEA049DE5041CD8348C0A0F7544113E96C4648DE50418EC64166A1F75441C83D9DE847DE5041953D26E8A1F75441FE7FA8172DDE50414FE471D89DF754416974458B2BDE50412F3050899DF75441F4D4A6A729DE5041AD90D6D79CF75441C3F5282C27DE5041000000E09BF754412560592A27DE504104075DE59BF754410003091229DE5041F1D9EEA09CF7544157A4E13227DE50414CC518F19BF75441DF0BBEE325DE5041DF163A4EA0F75441D44F5ACF25DE5041F3047743A0F7544114B39EC725DE5041F242FA5DA0F75441E1E7485929DE50411DE7B514A1F754415302C34927DE5041ADFE789EA0F75441A673D9E829DE50418E76012AA1F75441739AA3C72CDE50412096E8EBA1F75441FDF96E782DDE5041FD65F220A2F75441C7E06F7B2ADE504147A3BE55A1F75441627168582ADE504108B2E44DA1F7544175615CAF2CDE504180615CFFA1F75441276AEB8F2FDE5041441754DCA2F75441F35B1B8730DE50417122B818A3F75441831D492630DE50410CD7B3EEA2F75441F24A205E30DE5041AD6474FFA2F75441377B2F5832DE50418F5A427CA3F75441F4A3CACB33DE50411378D96EA4F75441F4A3CACB33DE50416311CF83A4F7544138ADCA4933DE5041C9D1644BA4F754410CAA34C833DE5041FCCFD0AEA4F7544195C1DDBA33DE5041889BF6EEA5F75441F4A3CACB33DE5041BCD7161DA5F75441F4A3CACB33DE50410BAB25A0A6F75441B64B8C0032DE5041627DCDDFAFF754415BFAA9F831DE5041EBE560EFAFF754415EF1B7F531DE50417858F2FFAFF75441652C1EDF31DE5041EEFFD821B0F75441E339DA5D30DE50414D878498B2F754410103000000010000000400000017DB194326DE504188279DB69EF7544129A3882127DE5041A9F378FF9BF754413970F79026DE50413E71A5AB9DF7544117DB194326DE504188279DB69EF754410103000000010000000700000071DF494333DE5041815B9248A4F7544138ADCA4933DE5041C9D1644BA4F75441EFAE975232DE50415F22FA88A3F75441F35B1B8730DE50417122B818A3F754418D3249D630DE5041BD7A143BA3F75441E8BF078932DE504113CD4BB9A3F7544171DF494333DE5041815B9248A4F75441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000914C03BB47DE5041824E0E34A4F75441049101F344DE50410C1D5EC7A4F75441E406B09741DE5041106D70D5A5F754416E4829DA3DDE50417FEE3250A6F754413921385839DE5041C4D5DA99A6F75441642E7C3835DE504109BD82E3A6F754417F7B095135DE5041FC5CA7FFA8F75441CB129F8C34DE50414781138CACF754410CAA34C833DE5041680B65E7AFF75441B0C5117434DE50410E14F4C7B2F7544157CEA05437DE50412F9E4523B6F7544133714A663ADE504167251289B8F754416B6B407B38DE504181729FA1B8F754414E31012E36DE5041B2BCA7C4B7F7544141444FF933DE5041433BE549B7F754415EF1B7F531DE50419F1F089EB6F75441FEBC829331DE504101B418E4B4F754416C5193D92FDE50416E48292AB3F754415EF1B7F531DE50417858F2FFAFF75441125A22BA32DE504178CB1BAFABF75441FC5CA7AF33DE5041190A10FCA6F754410CAA34C833DE5041FCCFD0AEA4F75441E8BF078932DE504113CD4BB9A3F75441276AEB8F2FDE5041441754DCA2F7544175615CAF2CDE504180615CFFA1F75441134075182ADE5041C1F8F13AA1F7544114B39EC725DE5041F242FA5DA0F75441D2EFCDA825DE50412438785EA0F75441D7A3709D21DE50415C8FC255ACF754415C8FC2D51EDE504185EB5148ACF75441000000301DDE5041D7A370EDB2F7544148E17AE422DE504114AE47C1B6F7544185EB51F827DE5041D7A3703DB8F754410000008030DE504185EB5128B7F75441D7A370ED33DE50413D0AD723B8F75441F6285CBF3ADE504148E17A34BAF754410AD7A3D03CDE5041000000C0BAF75441E17A140E40DE50411F85EBA1BBF75441713D0A6750DE504152B81E15BEF75441713D0AB751DE5041D7A3705DB6F7544152B81E2552DE5041C3F5284CB0F754415C8FC2E550DE5041AE47E12AACF75441AE47E10A4FDE504148E17A14A9F75441070A3C054ADE5041539C7C0FA4F75441193779CF49DE50419CD35333A4F75441914C03BB47DE5041824E0E34A4F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45552 - 4200663
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000048000000E339DA5D30DE50414D878498B2F754416ADF7B9A31DE50417973CC88B0F754416C5193D92FDE50416E48292AB3F75441FEBC829331DE504101B418E4B4F754415EF1B7F531DE50419F1F089EB6F7544141444FF933DE5041433BE549B7F75441248CE80A32DE5041AE31047FB6F754414DBBD59E31DE504186A2BDE9B4F75441C7E3051032DE5041046E027CB6F754418EB9859A33DE5041334CB910B7F754417D289DEE33DE5041746AA827B7F75441A7B1246336DE5041F3FDADCEB7F7544155A0C87438DE504197583F9EB8F75441AA1B66563ADE50414BB57D83B8F75441B81BB8F939DE5041A0D23F34B8F7544196BE125837DE504110937636B6F754417FB8E13535DE5041015A11AAB3F75441B0C5117434DE50410E14F4C7B2F75441CD17473A34DE50416F4F46D0B1F75441170E96C133DE504120A936F4AFF754413C4D644535DE50413D61AD0EA9F754419774DE4835DE504130C5F44BA8F75441642E7C3835DE504109BD82E3A6F754414B7E554F35DE50419AA5EAE1A6F754411AE3984F35DE504163982CD3A6F75441DDE304F236DE5041C5D68EB4A6F75441455014CF3BDE5041EB91B558A6F75441BD33DD9641DE5041D6C9A0BFA5F7544100611EF044DE504149FB14ACA4F75441E3852EDA47DE504169E5CC13A4F754418209B20C48DE5041842D5E05A4F75441EB755BA449DE504113C9341DA4F7544173D007CD49DE5041A84B7ED8A3F754419F0F47D349DE50417852BBDEA3F754417A26CEA049DE5041CD8348C0A0F7544113E96C4648DE50418EC64166A1F75441C83D9DE847DE5041953D26E8A1F75441FE7FA8172DDE50414FE471D89DF754416974458B2BDE50412F3050899DF75441F4D4A6A729DE5041AD90D6D79CF75441C3F5282C27DE5041000000E09BF754412560592A27DE504104075DE59BF754410003091229DE5041F1D9EEA09CF7544157A4E13227DE50414CC518F19BF75441DF0BBEE325DE5041DF163A4EA0F75441D44F5ACF25DE5041F3047743A0F7544114B39EC725DE5041F242FA5DA0F75441E1E7485929DE50411DE7B514A1F754415302C34927DE5041ADFE789EA0F75441A673D9E829DE50418E76012AA1F75441739AA3C72CDE50412096E8EBA1F75441FDF96E782DDE5041FD65F220A2F75441C7E06F7B2ADE504147A3BE55A1F75441627168582ADE504108B2E44DA1F7544175615CAF2CDE504180615CFFA1F75441276AEB8F2FDE5041441754DCA2F75441F35B1B8730DE50417122B818A3F75441831D492630DE50410CD7B3EEA2F75441F24A205E30DE5041AD6474FFA2F75441377B2F5832DE50418F5A427CA3F75441F4A3CACB33DE50411378D96EA4F75441F4A3CACB33DE50416311CF83A4F7544138ADCA4933DE5041C9D1644BA4F754410CAA34C833DE5041FCCFD0AEA4F7544195C1DDBA33DE5041889BF6EEA5F75441F4A3CACB33DE5041BCD7161DA5F75441F4A3CACB33DE50410BAB25A0A6F75441B64B8C0032DE5041627DCDDFAFF754415BFAA9F831DE5041EBE560EFAFF754415EF1B7F531DE50417858F2FFAFF75441652C1EDF31DE5041EEFFD821B0F75441E339DA5D30DE50414D878498B2F754410103000000010000000400000017DB194326DE504188279DB69EF7544129A3882127DE5041A9F378FF9BF754413970F79026DE50413E71A5AB9DF7544117DB194326DE504188279DB69EF754410103000000010000000700000071DF494333DE5041815B9248A4F7544138ADCA4933DE5041C9D1644BA4F75441EFAE975232DE50415F22FA88A3F75441F35B1B8730DE50417122B818A3F754418D3249D630DE5041BD7A143BA3F75441E8BF078932DE504113CD4BB9A3F7544171DF494333DE5041815B9248A4F75441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000914C03BB47DE5041824E0E34A4F75441049101F344DE50410C1D5EC7A4F75441E406B09741DE5041106D70D5A5F754416E4829DA3DDE50417FEE3250A6F754413921385839DE5041C4D5DA99A6F75441642E7C3835DE504109BD82E3A6F754417F7B095135DE5041FC5CA7FFA8F75441CB129F8C34DE50414781138CACF754410CAA34C833DE5041680B65E7AFF75441B0C5117434DE50410E14F4C7B2F7544157CEA05437DE50412F9E4523B6F7544133714A663ADE504167251289B8F754416B6B407B38DE504181729FA1B8F754414E31012E36DE5041B2BCA7C4B7F7544141444FF933DE5041433BE549B7F754415EF1B7F531DE50419F1F089EB6F75441FEBC829331DE504101B418E4B4F754416C5193D92FDE50416E48292AB3F754415EF1B7F531DE50417858F2FFAFF75441125A22BA32DE504178CB1BAFABF75441FC5CA7AF33DE5041190A10FCA6F754410CAA34C833DE5041FCCFD0AEA4F75441E8BF078932DE504113CD4BB9A3F75441276AEB8F2FDE5041441754DCA2F7544175615CAF2CDE504180615CFFA1F75441134075182ADE5041C1F8F13AA1F7544114B39EC725DE5041F242FA5DA0F754413970F79026DE50413E71A5AB9DF75441D7A3709D21DE50415C8FC255ACF754415C8FC2D51EDE504185EB5148ACF75441000000301DDE5041D7A370EDB2F7544148E17AE422DE504114AE47C1B6F7544185EB51F827DE5041D7A3703DB8F754410000008030DE504185EB5128B7F75441D7A370ED33DE50413D0AD723B8F75441F6285CBF3ADE504148E17A34BAF754410AD7A3D03CDE5041000000C0BAF75441E17A140E40DE50411F85EBA1BBF75441713D0A6750DE504152B81E15BEF75441713D0AB751DE5041D7A3705DB6F7544152B81E2552DE5041C3F5284CB0F754415C8FC2E550DE5041AE47E12AACF75441AE47E10A4FDE504148E17A14A9F75441070A3C054ADE5041539C7C0FA4F75441193779CF49DE50419CD35333A4F75441914C03BB47DE5041824E0E34A4F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399599 - 4070820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000000000F0E43A5141666666C6FEAD544166666676E23A5141A4703D5A20AE5441AE47E10AE03A5141C3F5282C41AE5441AE47E18AEF3A51417B14AEA742AE5441EC51B8FEF13A51413D0AD76321AE544133333383F43A5141B81E853BFFAD5441000000F0E43A5141666666C6FEAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000F0E43A5141666666C6FEAD544165584496E33A5141B83FD81811AE544160E2A4BCE23A5141E51143A11CAE5441FA32BD12E23A5141660CD7A125AE5441632DE77AE13A514163A409AD2DAE5441AE47E10AE03A5141C3F5282C41AE5441AE47E18AEF3A51417B14AEA742AE5441EC51B8FEF13A51413D0AD76321AE544133333383F43A5141B81E853BFFAD5441000000F0E43A5141666666C6FEAD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>420037 - 3038563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F0000000AD7A3C08B1A5141C3F5286CCB4A5441AE47E1CA911A5141E17A147EC94A54411F85EB11981A5141CDCCCC7CC74A5441E17A145E9E1A51419A999979C54A54413D0AD7B3A41A514133333373C34A5441A4703D0AAB1A5141CDCCCC6CC14A544152B81E65B11A514152B81E65BF4A544152B81ED5B71A514166666656BD4A544114AE47B1BD1A5141713D0A77BB4A54411F85EB81C91A51410AD7A3B0B74A5441C3F528ACC21A51418FC2F538A44A5441D7A3709D791A514152B81ED5BB4A54415C8FC2E57E1A51417B14AE87CF4A54413D0AD7237F1A514133333373CF4A54410AD7A3C08B1A5141C3F5286CCB4A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000AE47E18A741A5141713D0AE7A84A54414896DB227F1A51414F278673CF4A544191069F139D1A5141D48334E3C54A5441B96A2109BD1A5141EA35C5ACBB4A5441BF24FA7BC91A5141CCA4B69FB74A5441C3F528ACC21A51418FC2F538A44A5441EC51B82EBC1A5141000000C0914A5441CDCCCC7C981A51418FC2F5489D4A5441AE47E18A741A5141713D0AE7A84A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971413 - 394123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000025000000295C8F4297BC50418FC2F5682DE85441666666C68DBC5041F6285C2F29E854412F7B89608DBC50411EC156F628E85441E39C4CD68CBC50418DADE5CA28E8544169C8D9D08ABC5041D9615A6E30E854410A2069FE88BC5041B5EE45EF36E85441F7E8B04A87BC5041C298BB0936E85441F6285C3F86BC504152B81E6535E85441A4703D8A7FBC5041CDCCCCEC4EE8544148E17A2486BC5041A4703D2A50E854410AD7A37082BC50413D0AD7E359E854411F85EB218ABC504152B81E055DE854413333335390BC5041A4703D7A5EE85441EC51B8AE9ABC50413D0AD7735EE85441000000D0A2BC50415C8FC2255FE854415C8FC2A5C7BC504152B81E456BE85441E17A14BECABC5041713D0AB76AE854415C8FC225CBBC50413333337369E854413D0AD753CDBC50411F85EBA162E8544185EB5168CEBC50415C8FC2A55DE8544185EB5108CFBC504148E17AC45AE854415C8FC215D0BC5041E17A143E55E854415C8FC205D5BC50413333337342E85441B81E857BD7BC5041000000403BE854417B14AE37D6BC5041C3F5283C3AE85441B81E85FBBABC5041000000502EE85441A4703D2AB9BC50419A9999692DE85441B81E85BBB0BC50411F85EB814DE8544100000050C4BC50417B14AE3750E854418FC2F548C1BC5041295C8FE25BE85441D7A3707DBABC50418FC2F5F85AE85441B81E85EBAEBC5041CDCCCC1C56E85441CDCCCC5C9FBC50413D0AD7534FE8544133333313A2BC5041EC51B8FE44E8544180B7462193BC504112DB9D6E3CE85441AE47E1DA94BC50410AD7A39036E85441295C8F4297BC50418FC2F5682DE85441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000F829701A86BC504134B19D4450E85441A6E9FBAF85BC50416C6FE09851E85441ACB45CAE84BC5041BC683E2B54E85441A9C9E55F83BC504144B4676F57E854412D18851E83BC5041185D201B58E854410AD7A37082BC50413D0AD7E359E854412442C87283BC5041181EE04C5AE85441310AE9A783BC504121237E625AE854413E209DAF84BC5041A37DCACD5AE854418CBD78B689BC5041E59F57C75CE85441D5CE0DAA8EBC50414DE32C165EE854416DC3AAEF8EBC5041CF528F265EE85441D07D18C28FBC50413B6416585EE85441BF420BD29ABC50413B6416585EE854418142BBCE9FBC5041A798FFE35EE85441000000D0A2BC50415C8FC2255FE854415C8FC2A5C7BC504152B81E456BE854419A7AEB96CABC504127F00FBE6AE8544175F78CBECABC5041A9E791B56AE854415C8FC225CBBC50413333337369E854413C39EB36CBBC5041290D8A3D69E854412E3FEC2DC2BC5041CFA6DFE566E85441869D948EB7BC5041D6F0A1FD63E85441E53E20CCA8BC504156D125125FE85441BC3A2C9799BC50416666AA4159E8544165FB33C08FBC50416DECADC854E85441523638628ABC5041FDDCEF5252E854414AF1A55786BC50417B99435B50E85441FA3AF53486BC504179E7272950E85441A2778D4D84BC50414271D3C14FE85441B445948481BC50417A106DEB4DE854417D44E1C783BC5041BE94DFFF45E8544128DB7A0787BC50414C4B70783DE8544197D2672E9FBC5041EBDD466F49E85441FDC2A9B89CBC5041BD50A17A50E85441B09E05FAA1BC50413977BFD352E8544183BFBEB2AABC5041E3BB1C4B56E85441C3DA12CBB9BC50419F3DF8FE5BE85441AA20AD0FC1BC50414D5C371D5DE85441FDDC8C65C1BC5041A05458E25BE854414C01254AC1BC5041C5B3FEDD5BE854418FC2F548C1BC5041295C8FE25BE85441D7A3707DBABC50418FC2F5F85AE85441B81E85EBAEBC5041CDCCCC1C56E85441CDCCCC5C9FBC50413D0AD7534FE854419C04060FA2BC5041C710A10E45E85441461C5B2788BC5041B60FFB7D36E85441F6E8B04A87BC5041BD98BB0936E8544127FC8CB886BC504188AFBEAF35E85441F8781B3F86BC504175A3766B35E85441812BB4B285BC504128DE7B7C37E85441FA23BFAF85BC50415143BD8737E854417C80BE8C7FBC50416ACC44E34EE8544169E4EF8A7FBC5041E39325EA4EE854419C99496F80BC50418B1ED1174FE854418487CDE080BC5041DDCB222D4FE85441638E13E582BC50414A96188E4FE854418AB8AC6F84BC50411B6234D84FE8544148E17A2486BC5041A4703D2A50E85441F829701A86BC504134B19D4450E85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423029 - 194893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A74BB0E514148E17A24D0F754419A9999E9BF0E5141EC51B83ECAF75441D7A3703DBE0E5141F6285CAFC8F754418FC2F588BA0E514114AE4751C5F754419A999949B70E51410AD7A360C2F7544114AE47E1B40E5141D7A3701DC0F75441C3F528CCB10E51410AD7A340BDF75441C3F5288CAF0E514114AE4761BBF75441713D0A57AE0E5141B81E858BBAF754411F85EB41AB0E51411F85EB71B8F754419A999919A80E51413D0AD7B3B6F7544148E17AC4A60E514114AE4761B8F75441A4703DDAA50E514114AE47F1B9F754419A999989A50E514148E17A54BBF7544114AE47C1A50E5141A4703DBABCF75441A4703DCAA70E5141295C8FB2BEF7544185EB5118AB0E5141C3F5282CC0F7544100000060AD0E51419A9999D9C1F75441D7A3702DB00E514185EB51F8C4F75441D7A370FDB50E5141D7A370CDCBF75441000000B0B80E51418FC2F5D8CEF75441A4703D5ABA0E5141EC51B80ED1F7544148E17A74BB0E514148E17A24D0F75441
+</a>
+
+<b>
+0106000000010000000103000000010000002800000038EF9AA8A60E51411F61E190B8F75441E5751E9BA60E514156FFE8A7B8F7544163B9A399A60E51412BBF6FAAB8F75441DC02B682A60E5141E82997D1B8F7544198081D7FA60E51410EDFBBD7B8F754413A631A6FA60E5141DBEC12F3B8F75441BD47C76BA60E5141AA51C0F8B8F7544140CD3DDAA50E51410C5747F1B9F75441990E5FC2A50E514161766A5ABAF754419A999989A50E514148E17A54BBF75441C1E978C1AB0E5141C5C725A7BFF754417B7071E8AB0E5141919A38DBBFF75441295C8F02AC0E51417B14AEE7BFF75441F5CD052CAC0E5141C6A4FD0CC0F75441167C62B0AC0E514186D01884C0F754412278B6E1AD0E514149C3E197C1F75441D5A10712AE0E5141EF1264CBC1F754414864C614B10E514104C4EA01C5F75441C5DEF0B6B60E5141BE90E50DCBF754417B9BE580B90E514170E93B0CCEF7544148E17A74BB0E514148E17A24D0F75441704117E9BF0E5141B2C5643FCAF754412C6898E9BF0E51410B35B73ECAF75441D7A3703DBE0E5141F6285CAFC8F754418FC2F588BA0E514114AE4751C5F7544175524414B90E51416464E0FFC3F75441CED49849B70E5141CC56A460C2F75441B08B47E1B40E51417641711DC0F75441B4D027CCB10E51416DBFA340BDF7544143F6ECB6B00E5141BC5DEB59BCF75441C3F5288CAF0E514114AE4761BBF7544159EE79C2AE0E51414E3CD0D5BAF7544166B80957AE0E5141F03F858BBAF754419061BC2DAD0E51410B1FFAC0B9F754411F85EB41AB0E51411F85EB71B8F7544157F5AA2EAA0E5141BAE604DAB7F754417A1B9919A80E514195FBD7B3B6F75441B0B97AC4A60E5141BCF14761B8F75441747FAFA8A60E5141A843BE90B8F7544138EF9AA8A60E51411F61E190B8F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>400748 - 3079198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000062000000333333D3050351413D0AD7F378F75441F6285CDF06035141713D0A3777F75441C3F5286C0703514114AE478175F754410000009007035141EC51B83E74F75441295C8F920703514148E17AF472F75441000000800703514185EB517871F75441666666F60603514148E17A546DF7544114AE4731060351415C8FC29567F75441E17A14EE05035141EC51B86E65F754419A9999C9050351417B14AEF763F754419A9999C90503514114AE47E162F754410AD7A3E0050351416666663661F75441CDCCCCFC050351415C8FC2655EF75441EC51B83E060351417B14AEF759F7544114AE4791060351413333333356F75441A4703DCA060351419A9999C952F7544114AE4721070351419A9999894FF754411F85EBF107035141295C8F624BF75441333333B308035141C3F528EC47F7544148E17AC4090351413D0AD7A344F7544185EB51080B0351418FC2F59841F75441D7A370AD0C035141A4703D4A3DF754410AD7A3D00D03514185EB51883AF75441EC51B86E0F0351417B14AE5736F75441A4703DCA0F0351413333339335F754418FC2F56810035141D7A3708D34F7544152B81EA511035141713D0AA732F7544152B81E35140351419A9999392FF7544152B81EF5160351410AD7A3A02BF75441F6285C9F1A035141C3F5280C26F75441000000401C03514148E17A6423F75441AE47E17A1D035141713D0AA721F75441B81E853B1E035141713D0A1721F75441C3F5283C20035141E17A148E1FF7544148E17A5422035141D7A370DD1DF75441E17A142E2403514152B81E751CF7544148E17A5426035141C3F528CC1AF7544148E17AC420035141CDCCCC8C16F75441CDCCCC9C0F03514152B81ED51FF7544185EB51E80A03514185EB51A822F75441EC51B8CE020351413D0AD78324F75441EC51B8BEF2025141F6285C6F23F7544166666616E80251413333336322F7544148E17A34E1025141CDCCCC2C21F75441F6285C8FDD025141D7A3705D20F75441C3F5287CD6025141C3F5284C1FF75441295C8F42D30251418FC2F5A81FF7544114AE4731D00251417B14AE0720F754413D0AD793CD0251411F85EBC120F75441A4703DDACB025141D7A3704D21F7544148E17AF4C7025141D7A3707D22F75441000000F0C0025141295C8FC222F75441D7A3700DBA025141AE47E15A22F75441713D0A77B5025141C3F528BC20F7544152B81EF5B00251418FC2F5681DF7544100000010B1025141EC51B87E1EF754415C8FC245B102514114AE47E11FF754411F85EB91B1025141A4703DDA20F75441EC51B8FEB102514185EB51C822F75441D7A3704DB30251417B14AE0724F7544152B81ED5B6025141333333532AF75441B81E852BBA025141C3F5280C2FF75441EC51B8BEBC0251417B14AEE731F754410AD7A310C10251416666668633F7544148E17A64C402514185EB51F832F75441295C8FF2C70251415C8FC25534F7544148E17AE4C80251418FC2F53836F754418FC2F538C8025141713D0AC73CF75441AE47E14ACE0251416666663640F754419A999919CF025141295C8F523EF7544152B81E65D1025141000000303EF75441E17A14EED6025141EC51B8CE3FF7544166666626E902514114AE474149F7544114AE4741EC02514185EB51784AF7544148E17AF4EE0251410AD7A3A04CF75441A4703DFAF002514185EB516850F754410AD7A380F4025141B81E851B53F7544148E17A44F8025141B81E857B56F75441EC51B8BEFE025141C3F5284C52F75441C3F5289CFE0251416666663656F75441C3F5289CFE025141D7A370FD59F7544114AE47E1FE025141B81E856B5CF754413D0AD703FF0251413D0AD7635FF754410AD7A3B0FF0251418FC2F53862F7544185EB5118000351411F85EB6164F7544185EB5118000351410AD7A30066F75441333333D3FF025141F6285C9F67F754418FC2F548FF025141CDCCCCDC6AF75441D7A370FDFC025141E17A142E6FF75441F6285C7FFD025141AE47E18A70F7544133333383FF0251417B14AED778F7544114AE4711000351415C8FC20582F7544185EB514800035141F6285C3F84F75441D7A3708D010351413D0AD77381F75441A4703D6A020351413D0AD7337FF7544185EB513803035141333333337DF75441E17A144E04035141B81E854B7BF75441333333D3050351413D0AD7F378F75441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000A75D891F14035141B9F94B641DF754410CC5F25E1E0351416C8BC7D817F754417650B6811D035141A51F130615F7544106D888E61C035141B60D4B5B12F75441CD1BF2981C035141BB6FFEA00FF75441AB77646A1C035141CB5D36F60CF75441FA4B04D71C035141683E584B08F754413E941F341D03514118A29A5A02F7544198F443B01D035141F8CAD70CFEF65441485886BF170351419E6AB390FDF65441C9BEEBAF1503514110ABFEAF03F75441A1F08CB7120351419E2D24B80CF75441D382523B1003514162D7F7A814F754412DE376B710035141A0BD5FC017F75441A75D891F14035141B9F94B641DF75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 1606630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000446AAD4D006250419CA2C5E69C2955411D116A24FA615041396A8855A029554113C6A342F86150410B730BFD9C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C295541446AAD4D006250419CA2C5E69C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3148390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3408798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000446AAD4D006250419CA2C5E69C2955411D116A24FA615041396A8855A029554113C6A342F86150410B730BFD9C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C295541446AAD4D006250419CA2C5E69C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3409349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960487 - 960495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000DD872898FD585141C82D91567BBB54410AD7A380FC585141333333137CBB5441713D0AE7FD58514114AE47D17FBB54417B14AED7FF585141CDCCCC7C82BB5441295C8FB2015951411F85EBA183BB54411F85EB3105595141CDCCCC8C85BB544148E17AB40759514148E17AB486BB544152B81E9507595141CDCCCC5C85BB54413D0AD7430B595141D7A370ED84BB5441713D0A870B5951410AD7A34086BB5441AE47E15A115951419A99999984BB5441F6285C5F1A59514114AE47C181BB54413D0AD7631D595141AE47E1BA7FBB5441666666E622595141295C8FB276BB54415C8FC2D525595141D7A370DD73BB5441B81E85EB28595141EC51B86E72BB5441E17A143E2A59514114AE47D171BB544148E17A74205951418FC2F5486ABB544185EB51F81E59514148E17A2469BB5441AE47E17A225951418FC2F5F861BB54418FC2F5781F5951417B14AE1758BB5441295C8F821E595141A4703D2A56BB5441A161EDD91A595141B44D8B1757BB544117235AFF165951419C62EDDF60BB54413BCE9C9613595141DC47D88166BB544167366183115951410BB3BF7869BB544103A6334A0F595141C91699956CBB544116D7723609595141F3C7214173BB5441259BA6C70C595141B267E9B276BB54416D53674006595141C80596C47BBB54418A2D0CB302595141474A303078BB5441470A48C4FF585141B1CC4F5C7ABB5441DD872898FD585141C82D91567BBB5441
+</a>
+
+<b>
+01060000000200000001030000000100000042000000DD898464F2585141B656351A5ABB54411FFF4804F4585141EB75F4635BBB54418988F5D0F558514184FE91085DBB544187244FD1F65851416007A1F25DBB5441D3896F2EFA585141A86E532C60BB54413ECA7A3DFB585141E14F98D060BB5441705E3751FC585141D944B57761BB5441D9D98774FE5851414D01A21E63BB5441BDBA0294FF5851415AC6C6FC63BB5441355A94CBFF585141B0CD3C4264BB54412EE9A9FA0059514167C017BD65BB544173615A5B01595141BE56F43566BB54410498182A025951413AD1D9AD67BB54419A0FC0FC02595141EDC1DB2C69BB544104D6253303595141D32EA4A96ABB544147F9956E03595141AB25B5496CBB5441221CFC9A03595141575BE5406EBB544154D72DB803595141E1A4C38B6FBB5441F5E26BE003595141AE28D85371BB5441F5E26BE003595141F58D518B72BB5441F5E26BE003595141F78C356374BB5441F5E26BE003595141CC8CDBB174BB544116D7723609595141F3C7214173BB5441F73734F90B59514186C16C3970BB54415863FD600D5951415FB789AE6EBB544174AB1F100F5951412D9A57D56CBB544134A0F6C10F5951415285EEED6BBB5441E756D6F8105951415852B53A6ABB54411C8D9866125951415280273468BB54416E464AD712595141269C299367BB54419AD67FAF145951416B5BC5B164BB54411278BD441659514120243E1462BB5441985475C51759514140D10AE95EBB54414476071C19595141C77B70835BBB5441B827A6DC195951417A2F7B9A59BB5441A161EDD91A595141B44D8B1757BB544187D39E2B1B595141A14A2C6055BB54417171B3271A59514139A03AC354BB544179ED295419595141CDD5549E53BB54419525A59B18595141AE59D29852BB544100A9DB2F18595141FDB59E8151BB54419E7C4B5B17595141A10A045B4FBB544173E4A6F61559514174BB98904DBB5441E8EB879F14595141753B8DA04CBB5441A643917213595141ACF4FFCD4BBB5441D3733DB0115951419CE276B14ABB5441296E94B60C5951416544400749BB544124B32E6208595141CC37579447BB54415969F272065951413AE49DEE46BB54413FC36BEA0359514166A2981546BB54412AAA51B401595141E664285845BB5441710C9DDCFF58514117CF4EBA44BB5441662C1B34FE585141208D402C44BB5441E0E6D167FC5851416439399243BB5441504DFE5CFB585141BB7A521346BB5441BBB8D924F95851416C2AB84A4BBB544180BBDF8AF7585141B1B6DCA54EBB544161AB0F99F658514168D3626850BB5441439B3FA7F558514120F0E82A52BB54412E553BB4F4585141EA47ADEF53BB5441D7A3707DF45851415C8FC25554BB5441256F1A2AF3585141442BD3F053BB5441DF27D7A9F15851417F9D5DAA55BB544107294D83EF585141819C418257BB54418D12FE21F05851411FC3604F58BB5441DD898464F2585141B656351A5ABB54410103000000010000000400000085D55CCB03595141EA3C38D574BB5441C3B3DB2C035951415F9A61DF75BB544185EE1AC4035951413DC282FC74BB544185D55CCB03595141EA3C38D574BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>894883 - 3333084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000210000008FC2F528056A5141F6285CAFDCAC54413D0AD773046A514133333343DCAC544148E17AA4FC6951419A9999E9E6AC54415C8FC235FD695141A4703D2AE7AC5441C3F528BC056A51417B14AEF7EAAC5441666666F6056A51411F85EB11EBAC54413D0AD7F30A6A51413D0AD733EDAC544148E17AE40D6A5141000000B0EEAC54415C8FC2A5116A51413D0AD763F0AC5441EC51B89E126A51410AD7A3A0F0AC54418FC2F578146A5141C3F5287CF1AC544152B81E15156A51411F85EBF1F1AC5441B81E85AB156A514100000000F1AC5441CDCCCC3C166A5141F6285C3FF0AC5441CDCCCCCC166A5141AE47E12AEFAC5441713D0A57176A51411F85EB51EEAC544100000010186A51417B14AE77EDAC5441F6285C9F186A514152B81EA5ECAC54415C8FC265196A5141AE47E19AEBAC5441A4703DFA196A514114AE47C1EAAC54419A9999891A6A5141333333B3E9AC54415C8FC2451B6A514148E17AC4E8AC5441295C8FD21B6A5141E17A14DEE7AC5441000000301C6A51417B14AE17E7AC5441A4703D1A1D6A514185EB51D8E5AC5441A4703D7A1A6A51411F85EB81E5AC54418FC2F558186A514152B81EE5E5AC544148E17A04156A5141C3F5280CE5AC5441666666F6126A514114AE47B1E3AC5441B81E855B116A5141F6285C8FE2AC54411F85EB310F6A514114AE4791E2AC544152B81EE50B6A51415C8FC2B5E0AC54418FC2F528056A5141F6285CAFDCAC54410103000000010000006A00000085EB5198436A514152B81E25DFAC5441CDCCCC6C476A51415C8FC225DEAC5441E17A143E496A5141A4703D1AE1AC5441666666764F6A51415C8FC285DFAC54415C8FC275516A51413D0AD703DFAC54418FC2F5F8586A51419A9999C9DCAC5441713D0AB7606A514152B81ED5DAAC5441295C8FF25E6A514148E17A54D7AC54419A999929656A5141EC51B86ED5AC5441AE47E13A626A51413D0AD763CCAC5441C3F5285C5E6A51418FC2F5B8C3AC54410AD7A3F05A6A51410AD7A370BEAC5441F6285C3F536A5141666666E6B6AC54417B14AE57506A514152B81E05B8AC5441A4703D9A4E6A5141E17A14CEB9AC544114AE47C14D6A514152B81E15BCAC5441C3F528EC556A5141000000A0C3AC54415C8FC2954F6A51418FC2F5B8CAAC5441CDCCCC7C486A514148E17A44C3AC544185EB5198426A5141295C8F82C2AC544148E17AD43A6A514148E17A44C3AC54418FC2F558376A5141B81E85FBBEAC544166666686376A5141E17A14CEB9AC5441713D0AD7326A5141F6285C3FB7AC544114AE4741306A5141E17A145EB7AC544152B81E252E6A5141D7A3700DB9AC5441333333932B6A5141D7A3706DBFAC5441A4703D0A2A6A5141B81E85BBC4AC54418FC2F5D8296A51419A999919CDAC54419A9999F9286A5141E17A14DED2AC5441B81E851B286A5141EC51B8BED4AC5441EC51B86E276A5141D7A370FDD5AC54413D0AD7F3266A514152B81E05D7AC5441D7A3703D266A514133333333D8AC5441E17A148E256A51411F85EB91D9AC5441333333E3246A51418FC2F5F8DAAC544100000030246A5141713D0A47DCAC544148E17A94236A514100000080DDAC54415C8FC205236A5141C3F528ACDEAC5441EC51B81E226A5141B81E859BE0AC544114AE4791216A5141F6285C6FE1AC5441B81E85DB206A5141AE47E16AE2AC5441713D0A17206A514114AE4751E3AC544114AE47411F6A5141B81E855BE4AC5441666666861E6A514114AE4741E5AC54417B14AEC71D6A51415C8FC255E6AC5441333333631D6A514185EB51D8E6AC5441333333031D6A514185EB5198E7AC5441666666661C6A514114AE4751E8AC5441EC51B8CE1B6A5141CDCCCC2CE9AC5441EC51B82E1B6A514133333313EAAC54415C8FC2851A6A51413D0AD703EBAC54415C8FC2E5196A5141EC51B81EECAC544148E17A44196A5141EC51B8FEECAC5441C3F528AC186A514152B81EE5EDAC54410AD7A310186A51419A9999B9EEAC544100000080176A514133333393EFAC544185EB51E8166A5141CDCCCC6CF0AC5441EC51B86E166A51415C8FC275F1AC5441B81E85AB156A514133333363F2AC5441EC51B85E166A51417B14AE47F3AC5441AE47E12A176A51419A9999A9F4AC5441AE47E18A176A51417B14AED7F5AC5441B81E852B1A6A5141333333C3FAAC5441D7A3702D1D6A51417B14AE9700AD5441E17A14EE1E6A5141B81E850B04AD544152B81E55206A5141E17A144E07AD5441000000D0206A5141A4703D0A09AD5441A4703DEA206A51413D0AD76309AD54411F85EBA1226A5141AE47E1AA10AD5441CDCCCCCC226A5141000000A017AD544152B81ED5226A51417B14AED717AD5441B81E85FB226A5141E17A149E1AAD5441333333D3226A51410AD7A3C01CAD54418FC2F588226A51419A9999A920AD54415C8FC255246A5141B81E85DB20AD5441EC51B8BE286A5141666666C616AD54415C8FC2552D6A514185EB51480CAD544148E17AA4316A5141F6285C6F02AD54417B14AEC7356A51419A9999F9F8AC54419A999929326A5141CDCCCC6CFAAC54418FC2F5E8306A51410AD7A390FAAC5441F6285C0F306A5141EC51B89EFAAC544185EB51782F6A51411F85EBA1FAAC54419A9999C92E6A5141AE47E16AFAAC54418FC2F5B82D6A5141E17A140EFAAC5441AE47E13A2D6A5141713D0AB7F9AC54419A9999692C6A51413D0AD713F9AC544152B81E452B6A51415C8FC235F8AC54417B14AE77296A51411F85EB21F8AC5441713D0A87286A514114AE4731F8AC544114AE4791276A5141C3F5288CF8AC54417B14AEC7256A5141B81E854BF5AC5441F6285CEF236A5141AE47E1EAF1AC5441B81E854B226A51415C8FC205EFAC5441CDCCCC2C286A5141C3F5281CEBAC54419A9999792B6A514148E17A84E9AC5441AE47E18A2F6A51411F85EB31E8AC54417B14AE67366A514152B81E95E7AC5441000000303A6A5141D7A370DDE6AC54411F85EBB1396A514185EB5128E6AC544148E17AF43D6A51417B14AE77E4AC54417B14AE173E6A514152B81EC5E3AC54417B14AE27406A514148E17AA4E2AC5441713D0A173F6A5141713D0A57E0AC544185EB5198436A514152B81E25DFAC5441
+</a>
+
+<b>
+010600000001000000010300000001000000130000007686E695276A5141DF4A036D19AD544105148A1F2A6A51415F95DF9F13AD5441C9CB83972C6A514151E435FB0DAD54411AA855122E6A51413CD436990AAD5441A9BCABE62E6A5141EC40C9B308AD5441E25D03AE216A51415AE661A10CAD544148C92E0F226A51412B9B1D3D0EAD54416879F4A0226A5141677BCAA610AD544151C419B1226A5141B388712113AD544193905FB4226A5141296861A913AD5441672BE7B6226A5141A02B751214AD544100F0D7BC226A51412DC9350915AD5441E1FD3BCB226A51412A80F75E17AD544128FFC5EA226A5141FEB2446819AD5441B81E85FB226A5141E17A149E1AAD5441811ACBDE226A514139427C231CAD54418FC2F588226A51419A9999A920AD54415C8FC255246A5141B81E85DB20AD54417686E695276A5141DF4A036D19AD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943907 - 19058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000EC51B88E80C05041713D0A873D385441A4703DAA81C05041B81E85EB353854419A99991983C050417B14AE372F385441000000C081C050416666660627385441000000C080C050410AD7A32027385441713D0A5770C05041F6285CCF28385441D7A3704D72C05041F6285CBF2D385441713D0A2773C05041C3F528CC36385441333333B372C0504148E17A343E3854419A9999796FC0504114AE47314D385441E17A146E6DC05041EC51B82E52385441E17A146E70C05041A4703D4A5A3854419A9999B977C050413D0AD7A3593854413D0AD7D379C05041666666864F3854417B14AEE77AC050417B14AE674A38544148E17AC47AC050415C8FC235473854411F85EB317DC05041713D0AF741385441EC51B88E80C05041713D0A873D385441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C9DA110F7EC05041289BAB8E4338544157CBE34380C05041828E9F3B3E385441019A19497DC050412F4C1CF541385441544F8FC67AC0504146B76E67473854419DFD08D27AC05041D43E6D234A385441D8E59D817AC050419D0CE08C4B38544199271B9C79C05041333A4F6B4E38544153BB405779C05041E9C67FBC51385441C3033DBA77C05041D171EF8E59385441E6414D4079C05041743FA2D158385441721A02CA79C0504172F8D1504F385441B886DC0E7AC050415A47683D4E385441BA6DFF267AC050415E8241FB4D385441B06362DB7AC0504176161BA24A3854416367A3687CC05041E46B198A47385441C9DA110F7EC05041289BAB8E43385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943907 - 65501
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000EC51B88E80C05041713D0A873D385441A4703DAA81C05041B81E85EB353854419A99991983C050417B14AE372F385441000000C081C050416666660627385441000000C080C050410AD7A32027385441713D0A5770C05041F6285CCF28385441D7A3704D72C05041F6285CBF2D385441713D0A2773C05041C3F528CC36385441333333B372C0504148E17A343E3854419A9999796FC0504114AE47314D385441E17A146E6DC05041EC51B82E52385441E17A146E70C05041A4703D4A5A3854419A9999B977C050413D0AD7A3593854413D0AD7D379C05041666666864F3854417B14AEE77AC050417B14AE674A38544148E17AC47AC050415C8FC235473854411F85EB317DC05041713D0AF741385441EC51B88E80C05041713D0A873D385441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C9DA110F7EC05041289BAB8E4338544157CBE34380C05041828E9F3B3E385441019A19497DC050412F4C1CF541385441544F8FC67AC0504146B76E67473854419DFD08D27AC05041D43E6D234A385441D8E59D817AC050419D0CE08C4B38544199271B9C79C05041333A4F6B4E38544153BB405779C05041E9C67FBC51385441C3033DBA77C05041D171EF8E59385441E6414D4079C05041743FA2D158385441721A02CA79C0504172F8D1504F385441B886DC0E7AC050415A47683D4E385441BA6DFF267AC050415E8241FB4D385441B06362DB7AC0504176161BA24A3854416367A3687CC05041E46B198A47385441C9DA110F7EC05041289BAB8E43385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895052 - 2567602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000003D0AD713656F51411F85EB61E3A65441A4703D2A666F5141F6285C6FE3A6544152B81E95646F5141666666D6DAA654418FC2F5A8626F514166666666D0A65441AE47E1FA5E6F5141713D0A67D0A65441B81E85FB556F5141F6285C6FD0A65441D7A3708D506F5141D7A3702DD0A654415C8FC245496F514166666686CFA654410AD7A370446F5141E17A14DECEA65441AE47E10A396F51415C8FC245CDA65441B81E854B366F5141000000F0D5A654415C8FC2C5336F5141D7A3700DDCA6544114AE47B1326F514114AE4721DEA6544166666686306F5141295C8F52E2A65441D7A370DD3C6F5141713D0A67E5A65441AE47E14A466F514100000090E7A65441000000C04B6F51411F85EB81E8A65441E17A14DE576F51417B14AEF7E9A65441D7A370DD616F5141AE47E14AEBA654417B14AE17666F5141AE47E1BAEBA65441A4703D6A656F5141A4703D2AE6A654413D0AD713656F51411F85EB61E3A65441
+</a>
+
+<b>
+010600000001000000010300000001000000640000008E85B63B5E6F51419B170E1DB6A65441F5E219FC5C6F5141C4322AB3AEA65441E300D91D5C6F51415046668BA9A654412E1177C15B6F51417E6D9EBDA7A6544126E54B0C596F51413AB86C7CA8A65441BE48AC41556F514126947667A9A654414F68C4B64C6F51419BDF95E1ABA654410EFF82EC466F5141FD80AE27ADA65441EAF493FC426F5141F1A65345ADA6544157C2030F426F51415E30952BADA654416C1DA0D2416F51416E48E7F5ACA65441A83AE0F3406F5141F6669014ADA6544190A509E33F6F51418BBB895AACA654419D3C970A3F6F5141E25D2A7BABA6544152B81ED53D6F514166666616AAA65441000000103D6F514100000080A9A654419A9999A93B6F514185EB5118A9A654419A999989396F5141295C8FD2A8A654415C8FC2C5376F51410AD7A300A9A654415C8FC2F5366F51417B14AE97A9A654413D0AD7D3346F514148E17AD4AAA654418FC2F548346F514148E17A24ABA6544185EB5138306F5141EC51B86EADA6544114AE47712E6F51413D0AD723AEA6544114AE47312D6F51418FC2F528AEA65441AE47E14A2C6F514148E17A04AEA6544148E17A542B6F514114AE4761ADA65441B81E85DB296F5141F6285C0FACA65441D7A370CD286F5141295C8F42AAA65441EC51B8FE276F51413D0AD7D3A7A6544114AE4751276F5141EC51B83EA6A65441333333D3256F51410AD7A340A5A654411F85EBE1236F5141CDCCCCCCA4A6544166666676226F51410AD7A380A4A654417B14AED7206F51415C8FC2E5A4A654419603DE731F6F514191D2CF35A5A65441333333A31E6F5141A4703D7AA5A654419A9999191D6F51417B14AE27A6A65441FBF40E791B6F51417622F9C7A6A65441B7FD807A136F514125762BFEA9A654410814184C0A6F51417CBFEC72ADA65441C31677C5066F5141CB65A7B4AEA65441F757D15C046F51410805A543AFA654416C316CD0016F5141F7B88455AFA65441984CB670FF6E51413677D528AFA654411E7271D2FC6E5141DD8BB7ABAEA65441E0362AC3FA6E5141622E6949AEA654414386FEBFF96E51416A547940AEA65441F4DF437EF86E5141727A8937AEA65441B7A4FC6EF66E5141EED7D799AEA65441217E97E2F36E51417316D3B7AFA65441E34250D3F16E5141007BDECCB0A65441348B671DF06E51414540EC52B1A65441F736E051EA6E5141837B3362B3A6544126F486FAE46E5141FE74CB44B5A654418FC2F5E8E96E51413D0AD7A3B7A65441E17A140EEF6E51417B14AEE7B9A654418FC2F5A8F26E5141EC51B87EBCA654414E4DF843F66E51411E1524EBBDA65441666666B6F66E514185EB5118BEA6544117BD11FFF76E5141B6617BABBEA6544177630588F96E5141BD2B6D5BBFA6544133333353FA6E5141666666B6BFA65441AE2A1AAEFA6E514129B97BECBFA65441D7A3709DFB6E5141AE47E17AC0A65441DD2D01E2FC6E5141403605C6C0A65441B81E852BFD6E5141713D0AD7C0A654417C84F3B7FE6E5141F91BA787C1A654418FC2F5C8FF6E514114AE4701C2A654417B14AED7016F51418FC2F588C2A65441C3F5289C036F51410AD7A3C0C2A6544133333343056F51419A999949C3A65441713D0AF7076F5141C3F528ECC3A6544148E17AF40D6F5141E17A144EC5A65441B81E856B116F514148E17A54C6A65441C3F5283C166F514185EB5168C7A65441EFD55EB01C6F51419DB84138C9A65441333333631F6F5141A4703DFAC9A65441CDCCCC3C286F514133333333CCA654412D1CB1C82A6F5141FC8AB733CCA65441ECFAC19F2B6F5141B561E033CCA65441EC51B87E2F6F514148E17A34CCA65441320953F3306F5141F294D55DCCA65441F95AE13C366F51414AC80FF4CCA65441AE47E10A396F51415C8FC245CDA6544164CA4995406F51414935E853CEA654410A8F8D51426F5141662B1492CEA654410AD7A370446F5141E17A14DECEA654415C8FC245496F514166666686CFA65441DFC026E24C6F5141689C40D9CFA654411C0E282A4F6F5141C6A3980DD0A65441AFC6E32E516F51414EA21835D0A6544191759DA0526F5141FA15A146D0A65441F3AAAF86566F51410D79DB6ED0A65441DA115A8D586F5141B0DCFB6CD0A65441BBF853375B6F5141E13C856AD0A6544185C2F5A8626F514166666666D0A65441B7214E04606F5141B88559B4C0A654415F8B069D5E6F5141C47F155CB8A654418E85B63B5E6F51419B170E1DB6A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895052 - 3324649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000003D0AD713656F51411F85EB61E3A65441A4703D2A666F5141F6285C6FE3A6544152B81E95646F5141666666D6DAA654418FC2F5A8626F514166666666D0A65441AE47E1FA5E6F5141713D0A67D0A65441B81E85FB556F5141F6285C6FD0A65441D7A3708D506F5141D7A3702DD0A654415C8FC245496F514166666686CFA654410AD7A370446F5141E17A14DECEA65441AE47E10A396F51415C8FC245CDA65441B81E854B366F5141000000F0D5A654415C8FC2C5336F5141D7A3700DDCA6544114AE47B1326F514114AE4721DEA6544166666686306F5141295C8F52E2A65441D7A370DD3C6F5141713D0A67E5A65441AE47E14A466F514100000090E7A65441000000C04B6F51411F85EB81E8A65441E17A14DE576F51417B14AEF7E9A65441D7A370DD616F5141AE47E14AEBA654417B14AE17666F5141AE47E1BAEBA65441A4703D6A656F5141A4703D2AE6A654413D0AD713656F51411F85EB61E3A65441
+</a>
+
+<b>
+010600000001000000010300000001000000640000008E85B63B5E6F51419B170E1DB6A65441F5E219FC5C6F5141C4322AB3AEA65441E300D91D5C6F51415046668BA9A654412E1177C15B6F51417E6D9EBDA7A6544126E54B0C596F51413AB86C7CA8A65441BE48AC41556F514126947667A9A654414F68C4B64C6F51419BDF95E1ABA654410EFF82EC466F5141FD80AE27ADA65441EAF493FC426F5141F1A65345ADA6544157C2030F426F51415E30952BADA654416C1DA0D2416F51416E48E7F5ACA65441A83AE0F3406F5141F6669014ADA6544190A509E33F6F51418BBB895AACA654419D3C970A3F6F5141E25D2A7BABA6544152B81ED53D6F514166666616AAA65441000000103D6F514100000080A9A654419A9999A93B6F514185EB5118A9A654419A999989396F5141295C8FD2A8A654415C8FC2C5376F51410AD7A300A9A654415C8FC2F5366F51417B14AE97A9A654413D0AD7D3346F514148E17AD4AAA654418FC2F548346F514148E17A24ABA6544185EB5138306F5141EC51B86EADA6544114AE47712E6F51413D0AD723AEA6544114AE47312D6F51418FC2F528AEA65441AE47E14A2C6F514148E17A04AEA6544148E17A542B6F514114AE4761ADA65441B81E85DB296F5141F6285C0FACA65441D7A370CD286F5141295C8F42AAA65441EC51B8FE276F51413D0AD7D3A7A6544114AE4751276F5141EC51B83EA6A65441333333D3256F51410AD7A340A5A654411F85EBE1236F5141CDCCCCCCA4A6544166666676226F51410AD7A380A4A654417B14AED7206F51415C8FC2E5A4A654419603DE731F6F514191D2CF35A5A65441333333A31E6F5141A4703D7AA5A654419A9999191D6F51417B14AE27A6A65441FBF40E791B6F51417622F9C7A6A65441B7FD807A136F514125762BFEA9A654410814184C0A6F51417CBFEC72ADA65441C31677C5066F5141CB65A7B4AEA65441F757D15C046F51410805A543AFA654416C316CD0016F5141F7B88455AFA65441984CB670FF6E51413677D528AFA654411E7271D2FC6E5141DD8BB7ABAEA65441E0362AC3FA6E5141622E6949AEA654414386FEBFF96E51416A547940AEA65441F4DF437EF86E5141727A8937AEA65441B7A4FC6EF66E5141EED7D799AEA65441217E97E2F36E51417316D3B7AFA65441E34250D3F16E5141007BDECCB0A65441348B671DF06E51414540EC52B1A65441F736E051EA6E5141837B3362B3A6544126F486FAE46E5141FE74CB44B5A654418FC2F5E8E96E51413D0AD7A3B7A65441E17A140EEF6E51417B14AEE7B9A654418FC2F5A8F26E5141EC51B87EBCA654414E4DF843F66E51411E1524EBBDA65441666666B6F66E514185EB5118BEA6544117BD11FFF76E5141B6617BABBEA6544177630588F96E5141BD2B6D5BBFA6544133333353FA6E5141666666B6BFA65441AE2A1AAEFA6E514129B97BECBFA65441D7A3709DFB6E5141AE47E17AC0A65441DD2D01E2FC6E5141403605C6C0A65441B81E852BFD6E5141713D0AD7C0A654417C84F3B7FE6E5141F91BA787C1A654418FC2F5C8FF6E514114AE4701C2A654417B14AED7016F51418FC2F588C2A65441C3F5289C036F51410AD7A3C0C2A6544133333343056F51419A999949C3A65441713D0AF7076F5141C3F528ECC3A6544148E17AF40D6F5141E17A144EC5A65441B81E856B116F514148E17A54C6A65441C3F5283C166F514185EB5168C7A65441EFD55EB01C6F51419DB84138C9A65441333333631F6F5141A4703DFAC9A65441CDCCCC3C286F514133333333CCA654412D1CB1C82A6F5141FC8AB733CCA65441ECFAC19F2B6F5141B561E033CCA65441EC51B87E2F6F514148E17A34CCA65441320953F3306F5141F294D55DCCA65441F95AE13C366F51414AC80FF4CCA65441AE47E10A396F51415C8FC245CDA6544164CA4995406F51414935E853CEA654410A8F8D51426F5141662B1492CEA654410AD7A370446F5141E17A14DECEA654415C8FC245496F514166666686CFA65441DFC026E24C6F5141689C40D9CFA654411C0E282A4F6F5141C6A3980DD0A65441AFC6E32E516F51414EA21835D0A6544191759DA0526F5141FA15A146D0A65441F3AAAF86566F51410D79DB6ED0A65441DA115A8D586F5141B0DCFB6CD0A65441BBF853375B6F5141E13C856AD0A6544185C2F5A8626F514166666666D0A65441B7214E04606F5141B88559B4C0A654415F8B069D5E6F5141C47F155CB8A654418E85B63B5E6F51419B170E1DB6A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895410 - 3574466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000038000000E17A147E577F51411F85EB71FDA55441333333F3587F514152B81EC5FDA55441F6285C5F5A7F5141E17A141EFEA554410AD7A3E05B7F5141295C8F72FEA5544185EB51985D7F5141B81E851BFFA554418FC2F5185F7F51415C8FC2C5FFA554417B14AE17617F5141EC51B87E00A65441D7A3709D617F5141000000B0FEA5544100000060617F514148E17AB4FDA55441CDCCCCEC607F5141F6285CCFFCA55441EC51B84E607F51411F85EB81FBA554410AD7A3A05F7F51413D0AD773FAA554415C8FC2255F7F5141713D0AA7F9A55441713D0A375E7F5141D7A370DDF8A55441000000605D7F5141A4703D4AF8A55441000000505C7F514133333333F7A554411F85EB715B7F514166666656F6A55441000000505A7F5141B81E855BF5A554418FC2F558597F5141CDCCCC0CF4A55441295C8F72587F51418FC2F5E8F2A5544185EB51B8577F5141F6285CBFF1A554410AD7A3E0567F5141B81E856BF0A55441D7A3703D577F5141EC51B86EF1A5544133333373557F51413D0AD753F5A5544114AE4721547F514166666666F7A55441F6285C7F527F51410AD7A360F9A554415C8FC225517F51419A999989FAA554418FC2F5184D7F51411F85EB71FAA554413D0AD7D3417F51410AD7A3A0F9A55441713D0A17377F514100000020F9A554417B14AE37317F5141F6285C5FF8A554418FC2F5C8247F514152B81E55F6A554415C8FC225227F514148E17AD4F5A55441B81E854B207F5141B81E853BF5A55441D7A3708D217F5141D7A3705DF0A55441EC51B8CE227F51418FC2F568ECA554415C8FC205257F514152B81E45E7A55441A4703DBA217F5141713D0AB7E6A554418FC2F5A81D7F51415C8FC225E6A5544185EB51C81B7F5141EC51B8EEE5A554411F85EB111B7F5141D7A3702DF2A554417B14AE871C7F51418FC2F588F3A55441295C8F121D7F5141CDCCCCECF4A55441AE47E13A1D7F514114AE4741F6A5544152B81ED5237F514100000010F7A5544152B81EC52D7F51417B14AE87F8A55441E17A144E337F5141A4703D4AF9A5544148E17A24377F5141713D0AE7F9A55441C3F5288C387F514114AE4701FAA5544114AE47C13D7F51411F85EB71FAA55441AE47E1BA417F51418FC2F5C8FAA554410AD7A3A0477F51410AD7A350FBA554410AD7A3D04C7F5141B81E85EBFBA55441D7A3703D537F51417B14AE97FCA5544185EB51D8547F5141D7A370EDFCA55441E17A147E577F51411F85EB71FDA55441
+</a>
+
+<b>
+01060000000100000001030000000100000040000000332DC408527F5141CD2E5124FAA55441CB88DB94527F5141C0503B95F9A5544160A53E03537F51415D387C24F9A554411D5A646B537F514108AC1CBAF8A55441AD387BA3537F5141C5BF8B63F8A554416DE331D5537F514177E7D116F8A5544154E7BF22547F514168FC1F9FF7A554418E9BD254557F5141D65EBEC6F5A55441CB171CC2557F5141D100131EF5A554411700DF51567F5141A05CED29F4A554410B059F47577F514183D76E6DF1A55441553A3B5D577F5141AAA6D52FF1A554411904567E577F5141FED478D1F0A554410AD7A3E0567F5141B81E856BF0A55441AA12C0DE557F5141F821F8E6EFA55441B18E4CDC4E7F514102E9B71AEDA554419FD254CE4D7F514119E19CAFECA55441B6E16F8F4D7F51415413A996ECA554418FC2F5384D7F5141AC1C5A74ECA55441F2F4F0DE4C7F5141D2E2F963ECA55441B556C551467F5141A416DF32EBA554419149259F447F51413B57CEE3EAA5544178B872EE437F5141652161D9EAA55441BC1B2DF2437F51419C0D57C4EAA55441A4703DAA437F51417B14AE67EBA55441333333F33A7F51417B14AE07EAA55441295C8F02377F51417B14AE77E9A5544133333323327F51415C8FC2C5E8A55441666666A62F7F5141713D0A67E8A5544185EB51682E7F51419A999939E8A55441B81E85BB2C7F5141C3F528FCE7A55441A4703D7A287F5141CDCCCC9CE7A554411F984D5A257F51410B3B804DE7A5544197E8402B247F5141BCE7D975E9A5544110207623237F5141A6E6C112ECA554414836CF8F227F514199943A7CEDA55441BD862D27227F51417719DD8CEEA554412F31CEE7217F51413C0C5888EFA55441E078DDA5217F514198D53293F0A554413D0AD77B207F514114AE4749F5A55441CF810D0A227F51417FA5179AF5A55441BA16A48D247F5141665EB31CF6A5544122ED2ED3267F514157AEB792F6A55441BAC225C9287F514119BF95F8F6A55441E970E0502A7F514136E11448F7A554416C385F412B7F51412B19E378F7A55441DFB189672C7F51415C9E95B4F7A5544134C729182D7F514142AA6DD8F7A5544116F455DC2D7F514123DBACF3F7A554417B14AE37317F5141F6285C5FF8A55441B34CF013377F5141BCA3CB0FF9A55441BADFABCE377F514136FC9728F9A5544183B39590387F5141390FA13DF9A55441203CC347397F514143658350F9A554414D5380773B7F5141D41CA973F9A554411F409EC53F7F5141317BDDB8F9A554419FEF29DA417F514130134EDAF9A5544117521B82447F5141E70E0005FAA554418D79C8C7457F514137427319FAA5544192A424B4477F5141DDDF5D38FAA5544178F208A44A7F5141086D9467FAA5544123D1381F4D7F5141DCF6768FFAA55441E336803B507F5141170877C1FAA55441332DC408527F5141CD2E5124FAA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>896444 - 3141514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001E00000048E17AA4FD6C5141333333235A96544166666646FE6C51410AD7A3A0659654418FC2F548FD6C51417B14AE8772965441E17A142EFD6C514133333333749654417B14AEB7FB6C51411F85EB718B96544152B81E55FA6C5141D7A3709D9496544185EB5158F86C51417B14AE57A09654413D0AD793F66C5141EC51B83EA796544148E17AA4F36C514114AE4731B1965441AE47E15AF46C5141EC51B80EB29654415C8FC2D5156D5141EC51B8FEAE96544152B81ED52B6D5141CDCCCCFCAC96544148E17A44476D5141B81E857BAA965441F6285CBF656D5141295C8FB2A796544133333353666D5141AE47E1BAA696544148E17AE45D6D5141713D0AC797965441F6285C0F556D51411F85EBF185965441B81E85CB506D5141333333537A9654417B14AEF74B6D51411F85EBC16B96544152B81EA5436D514114AE476154965441295C8FA2366D5141F6285CEF309654410AD7A370346D5141A4703D3A2A965441333333F3326D5141F6285C0F22965441A4703D6A1D6D5141D7A370BD25965441C3F5283C136D51419A999979279654417B14AE97076D514152B81E7529965441D7A3701DF86C514185EB51182C96544148E17AA4F96C51419A9999C9389654413D0AD7A3FD6C51410AD7A3005A96544148E17AA4FD6C5141333333235A965441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000AE47E15AF46C5141EC51B80EB2965441F6285CBF656D5141295C8FB2A796544133333353666D5141AE47E1BAA69654419854D264656D5141E30B3014A5965441D7F9E6AA636D51413CA69304A296544173C4B227626D514164B5FC559F9654411930C5B55F6D5141869A17009B965441AD6D79B25E6D5141C1154F34999654410144F367596D5141EB82A99C8E965441145FA97F556D5141961F83A8869654418F5CF157536D51413ABE4514819654410C0C6AF4506D514168CF9DC27A9654419C0F20E5506D5141F125F6987A965441F5E2E605FD6C514167D12BC081965441143B60F9FC6C51415F64A42A829654417A4A491FFC6C51412D05D6888B9654411D913520FB6C514104B80DE091965441E46A2876FA6C5141C23A79F49496544185EB5158F86C51417B14AE57A0965441BE225B3FF66C514180120F5DA8965441F53586B5F36C5141E4BE7A2CB1965441AE47E15AF46C5141EC51B80EB2965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898261 - 2952727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000031000000D7A3702DF36B5141666666D67DA15441C3F5287CFA6B51418FC2F5287FA1544148E17AD4FB6B514152B81E657EA15441A4703D7AFC6B5141AE47E1DA7CA15441AE47E1FAFB6B5141713D0A4778A15441C3F528BCFA6B5141333333B373A154419A999949FA6B51418FC2F56871A1544166666696FA6B5141F6285CDF6EA15441E17A14EEFB6B5141EC51B8BE6AA15441CDCCCC2CFD6B51417B14AE3766A154415C8FC245FD6B51415C8FC29562A15441CDCCCC2CFD6B5141666666A65FA15441666666C6FC6B51418FC2F5685DA15441E17A142EFC6B5141B81E85AB5BA1544133333363FA6B51417B14AE0759A15441EC51B85EE26B51415C8FC27542A15441333333F3DC6B5141EC51B85E3DA154419A9999A9CB6B514114AE47512DA154417B14AEC7B96B51410AD7A3C01DA15441CDCCCC1CB16B5141D7A3702D1AA154410AD7A3E0AD6B5141A4703DFA17A1544166666696AF6B5141295C8FE23DA15441C3F5282C786B5141AE47E13A09A1544148E17A14776B5141295C8FB209A15441C3F5280C776B5141B81E853B14A15441B81E850B786B5141B81E853B19A154418FC2F5087A6B514152B81E5545A1544114AE47817B6B51411F85EB8147A15441295C8F327E6B5141D7A3701D4AA154411F85EB51806B514185EB51A84BA154418FC2F5E8886B51411F85EB614EA15441F6285CEF8A6B514114AE47D14FA15441333333E38B6B5141713D0AC750A15441B81E859B8C6B51415C8FC2D551A1544133333343B36B5141A4703DBA8BA1544114AE47D1B46B51418FC2F5488DA15441A4703D1ABC6B514152B81ED591A15441F6285C6FBE6B5141A4703D5A92A15441B81E858BC16B51416666661692A1544133333303C56B51413D0AD70391A15441E17A14EEC86B51415C8FC2758FA15441B81E859BD66B51410AD7A39089A154418FC2F548DB6B51411F85EBF186A1544152B81EB5E46B51417B14AE7780A1544100000060E76B5141000000007FA154411F85EB61E96B5141333333237EA15441B81E85EBEB6B5141EC51B87E7DA15441333333D3EE6B514152B81E557DA15441D7A3702DF36B5141666666D67DA15441
+</a>
+
+<b>
+0106000000010000000103000000020000007D000000DCC05CEFA76B51414E1B189D36A1544119E9927FA36B51416BF3DF6532A1544181B75416936B5141B506E1CD22A15441597E134A866B5141EE28CDA416A15441F92B1B1D826B5141409112AD12A154418BAF15F87D6B5141AD76E5BC0EA15441C3F5282C786B5141AE47E13A09A1544148E17A14776B5141295C8FB209A15441C3F5280C776B5141B81E853B14A15441B81E850B786B5141B81E853B19A15441778403D4786B5141D45A9F962AA15441BA47FF56796B5141612D52ED35A154418FC2F5087A6B514152B81E5545A1544114AE47817B6B51411F85EB8147A15441295C8F327E6B5141D7A3701D4AA154411F85EB51806B514185EB51A84BA154415A643B87816B5141BC7493084CA154418FC2F5E8886B51411F85EB614EA15441F6285CEF8A6B514114AE47D14FA15441333333E38B6B5141713D0AC750A15441B81E859B8C6B51415C8FC2D551A154416264C2C3916B5141DB8C0B8F59A1544113F453A49A6B514194589BDA66A15441C338BD3FA16B5141B618C9BF70A1544139246DD1A66B5141F634FF1679A1544142B94D0BAB6B5141653C4B6B7FA1544133333343B36B5141A4703DBA8BA1544114AE47D1B46B51418FC2F5488DA15441B38AE7EDB56B5141B569A1FA8DA154410BDE69CFB96B5141A57BCE6690A15441A4703D1ABC6B514152B81ED591A15441F6285C6FBE6B5141A4703D5A92A15441B81E858BC16B51416666661692A1544133333303C56B51413D0AD70391A15441E17A14EEC86B51415C8FC2758FA15441B81E859BD66B51410AD7A39089A154418FC2F548DB6B51411F85EBF186A1544117DB2ED9DF6B5141FE24D3CE83A15441A384C610E16B51414FD89EF882A154413F355E9AE16B51416ABC745B82A1544127DAF1B4E16B5141A3A8C4E381A15441D122DB01E26B5141250681E581A1544139B4C80EE46B5141295C8FB280A154414E621060E46B5141E3A59B8480A154415A643BAFE46B514179E9264980A15441643BDFFFE46B5141508D971680A15441C1CAA155E56B51413BDF4FE57FA15441E17A14A6E56B51414260E5B87FA15441F6285CF7E56B514104560E857FA154413F355E4AE66B51413108AC5C7FA154411F85EB61E96B5141333333237EA15441508D9716EC6B5141AC1C5A3C7DA15441DF4F8D8FF56B5141A01A2FD579A1544100000078FB6B5141C1CAA16577A15441F0A7C693FA6B5141CFF753CB73A154414E621050FA6B51414C3789B96FA15441A06FB356FA6B5141582D09336EA154417B14AE37FC6B51415839B4A869A15441986E12BBFC6B5141295C8FDA67A15441D34D62D8FC6B5141C976BEAF67A154418D976EE2FC6B5141A8C64B7F67A15441D34D62F0FC6B5141295C8F3267A15441FED47801FD6B5141D9CEF7DB66A1544139B4C80EFD6B51414C37898166A154411B2FDD1CFD6B5141DBF97E2266A1544181954323FD6B5141B81E85C365A154414260E528FD6B5141F2D24D6A65A15441CDCCCC34FD6B51413789411065A1544181954343FD6B51411B2FDDBC64A154412731082CFD6B5141355EBA6164A154418FC2F530FD6B51411058391464A1544179E92639FD6B51410AD7A3C063A154411B2FDD3CFD6B51414260E57063A15441022B873EFD6B5141DD24062163A154417B14AE3FFD6B5141A8C64BCF62A1544189416045FD6B514121B0727862A154411B2FDD44FD6B5141EE7C3F2562A154417F6ABC44FD6B5141643BDFCF61A1544110583944FD6B514179E9267961A1544175931844FD6B514139B4C81E61A154410AD7A340FD6B5141D122DBC160A154414260E538FD6B5141B4C8766E60A154419A999931FD6B514148E17A1460A1544100000030FD6B514104560EB55FA15441A8C64B27FD6B51416ABC74535FA154411283C01AFD6B514146B6F3F55EA154414260E510FD6B51417D3F35965EA1544152B81EFDFC6B5141000000305EA15441A4703DEAFC6B5141D9CEF7CB5DA15441E7FBA9D1FC6B5141BA490C6A5DA15441F6285CB7FC6B51416ABC74135DA15441CDCCCC94FC6B51413F355EBA5CA1544123DBF96EFC6B51415839B4685CA1544185EB5148FC6B5141736891155CA154419CC42018FC6B51413BDF4FC55BA154411F85EBE9FB6B51412506816D5BA15441295C8FBAFB6B5141D122DB195BA1544189416085FB6B5141F2D24DCA5AA154414A0C0253FB6B5141AAF1D2855AA1544114AE4721FB6B5141D122DB415AA154418B6CE7F3FA6B51417F6ABCFC59A15441B29DEF07FA6B5141CDCCCCEC58A15441355EBA09F96B51413D0AD7FB57A15441FF7B2DD3F56B51411A7D0DBE54A15441629E8BAFF06B51413B2FB6E94FA15441CC83BAB8EB6B514103327C3F4BA15441E01068CAE56B5141CE8EABAC45A1544111E5B1E8DE6B5141345BAE353FA15441030A5E7BDA6B5141665706143BA15441F2AC089FD06B5141B1E406EC31A154410FEFDCFBCC6B514104BD608B2EA154418C044AB3CB6B514141E6465A2DA154410D27C7FEC96B514164B9C5DD2BA15441444CC26DC56B51417EE840E427A154411A77D569C16B5141CE1A8B6524A15441A8B53C39BD6B5141876DF3BF20A154417B14AEC7B96B51410AD7A3C01DA15441D057A91BB16B5141666EAA2C1AA15441B26C591CAF6B51413D1DF1D018A154410AD7A3E0AD6B5141A4703DFA17A154418B6CE7D3AD6B514114AE47C919A15441CFF75373AF6B5141C3F528A43DA154411D78D163A96B51412BE2FFFE37A15441997C5198A86B51410F98A23D37A15441DCC05CEFA76B51414E1B189D36A1544104000000C25D71DFA86B5141A5E409863FA15441B29DEFEFA86B5141CBA1451E40A154417FB153F4A86B5141B1A5618340A15441C25D71DFA86B5141A5E409863FA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898261 - 3394804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000031000000D7A3702DF36B5141666666D67DA15441C3F5287CFA6B51418FC2F5287FA1544148E17AD4FB6B514152B81E657EA15441A4703D7AFC6B5141AE47E1DA7CA15441AE47E1FAFB6B5141713D0A4778A15441C3F528BCFA6B5141333333B373A154419A999949FA6B51418FC2F56871A1544166666696FA6B5141F6285CDF6EA15441E17A14EEFB6B5141EC51B8BE6AA15441CDCCCC2CFD6B51417B14AE3766A154415C8FC245FD6B51415C8FC29562A15441CDCCCC2CFD6B5141666666A65FA15441666666C6FC6B51418FC2F5685DA15441E17A142EFC6B5141B81E85AB5BA1544133333363FA6B51417B14AE0759A15441EC51B85EE26B51415C8FC27542A15441333333F3DC6B5141EC51B85E3DA154419A9999A9CB6B514114AE47512DA154417B14AEC7B96B51410AD7A3C01DA15441CDCCCC1CB16B5141D7A3702D1AA154410AD7A3E0AD6B5141A4703DFA17A1544166666696AF6B5141295C8FE23DA15441C3F5282C786B5141AE47E13A09A1544148E17A14776B5141295C8FB209A15441C3F5280C776B5141B81E853B14A15441B81E850B786B5141B81E853B19A154418FC2F5087A6B514152B81E5545A1544114AE47817B6B51411F85EB8147A15441295C8F327E6B5141D7A3701D4AA154411F85EB51806B514185EB51A84BA154418FC2F5E8886B51411F85EB614EA15441F6285CEF8A6B514114AE47D14FA15441333333E38B6B5141713D0AC750A15441B81E859B8C6B51415C8FC2D551A1544133333343B36B5141A4703DBA8BA1544114AE47D1B46B51418FC2F5488DA15441A4703D1ABC6B514152B81ED591A15441F6285C6FBE6B5141A4703D5A92A15441B81E858BC16B51416666661692A1544133333303C56B51413D0AD70391A15441E17A14EEC86B51415C8FC2758FA15441B81E859BD66B51410AD7A39089A154418FC2F548DB6B51411F85EBF186A1544152B81EB5E46B51417B14AE7780A1544100000060E76B5141000000007FA154411F85EB61E96B5141333333237EA15441B81E85EBEB6B5141EC51B87E7DA15441333333D3EE6B514152B81E557DA15441D7A3702DF36B5141666666D67DA15441
+</a>
+
+<b>
+0106000000010000000103000000020000007D000000DCC05CEFA76B51414E1B189D36A1544119E9927FA36B51416BF3DF6532A1544181B75416936B5141B506E1CD22A15441597E134A866B5141EE28CDA416A15441F92B1B1D826B5141409112AD12A154418BAF15F87D6B5141AD76E5BC0EA15441C3F5282C786B5141AE47E13A09A1544148E17A14776B5141295C8FB209A15441C3F5280C776B5141B81E853B14A15441B81E850B786B5141B81E853B19A15441778403D4786B5141D45A9F962AA15441BA47FF56796B5141612D52ED35A154418FC2F5087A6B514152B81E5545A1544114AE47817B6B51411F85EB8147A15441295C8F327E6B5141D7A3701D4AA154411F85EB51806B514185EB51A84BA154415A643B87816B5141BC7493084CA154418FC2F5E8886B51411F85EB614EA15441F6285CEF8A6B514114AE47D14FA15441333333E38B6B5141713D0AC750A15441B81E859B8C6B51415C8FC2D551A154416264C2C3916B5141DB8C0B8F59A1544113F453A49A6B514194589BDA66A15441C338BD3FA16B5141B618C9BF70A1544139246DD1A66B5141F634FF1679A1544142B94D0BAB6B5141653C4B6B7FA1544133333343B36B5141A4703DBA8BA1544114AE47D1B46B51418FC2F5488DA15441B38AE7EDB56B5141B569A1FA8DA154410BDE69CFB96B5141A57BCE6690A15441A4703D1ABC6B514152B81ED591A15441F6285C6FBE6B5141A4703D5A92A15441B81E858BC16B51416666661692A1544133333303C56B51413D0AD70391A15441E17A14EEC86B51415C8FC2758FA15441B81E859BD66B51410AD7A39089A154418FC2F548DB6B51411F85EBF186A1544117DB2ED9DF6B5141FE24D3CE83A15441A384C610E16B51414FD89EF882A154413F355E9AE16B51416ABC745B82A1544127DAF1B4E16B5141A3A8C4E381A15441D122DB01E26B5141250681E581A1544139B4C80EE46B5141295C8FB280A154414E621060E46B5141E3A59B8480A154415A643BAFE46B514179E9264980A15441643BDFFFE46B5141508D971680A15441C1CAA155E56B51413BDF4FE57FA15441E17A14A6E56B51414260E5B87FA15441F6285CF7E56B514104560E857FA154413F355E4AE66B51413108AC5C7FA154411F85EB61E96B5141333333237EA15441508D9716EC6B5141AC1C5A3C7DA15441DF4F8D8FF56B5141A01A2FD579A1544100000078FB6B5141C1CAA16577A15441F0A7C693FA6B5141CFF753CB73A154414E621050FA6B51414C3789B96FA15441A06FB356FA6B5141582D09336EA154417B14AE37FC6B51415839B4A869A15441986E12BBFC6B5141295C8FDA67A15441D34D62D8FC6B5141C976BEAF67A154418D976EE2FC6B5141A8C64B7F67A15441D34D62F0FC6B5141295C8F3267A15441FED47801FD6B5141D9CEF7DB66A1544139B4C80EFD6B51414C37898166A154411B2FDD1CFD6B5141DBF97E2266A1544181954323FD6B5141B81E85C365A154414260E528FD6B5141F2D24D6A65A15441CDCCCC34FD6B51413789411065A1544181954343FD6B51411B2FDDBC64A154412731082CFD6B5141355EBA6164A154418FC2F530FD6B51411058391464A1544179E92639FD6B51410AD7A3C063A154411B2FDD3CFD6B51414260E57063A15441022B873EFD6B5141DD24062163A154417B14AE3FFD6B5141A8C64BCF62A1544189416045FD6B514121B0727862A154411B2FDD44FD6B5141EE7C3F2562A154417F6ABC44FD6B5141643BDFCF61A1544110583944FD6B514179E9267961A1544175931844FD6B514139B4C81E61A154410AD7A340FD6B5141D122DBC160A154414260E538FD6B5141B4C8766E60A154419A999931FD6B514148E17A1460A1544100000030FD6B514104560EB55FA15441A8C64B27FD6B51416ABC74535FA154411283C01AFD6B514146B6F3F55EA154414260E510FD6B51417D3F35965EA1544152B81EFDFC6B5141000000305EA15441A4703DEAFC6B5141D9CEF7CB5DA15441E7FBA9D1FC6B5141BA490C6A5DA15441F6285CB7FC6B51416ABC74135DA15441CDCCCC94FC6B51413F355EBA5CA1544123DBF96EFC6B51415839B4685CA1544185EB5148FC6B5141736891155CA154419CC42018FC6B51413BDF4FC55BA154411F85EBE9FB6B51412506816D5BA15441295C8FBAFB6B5141D122DB195BA1544189416085FB6B5141F2D24DCA5AA154414A0C0253FB6B5141AAF1D2855AA1544114AE4721FB6B5141D122DB415AA154418B6CE7F3FA6B51417F6ABCFC59A15441B29DEF07FA6B5141CDCCCCEC58A15441355EBA09F96B51413D0AD7FB57A15441FF7B2DD3F56B51411A7D0DBE54A15441629E8BAFF06B51413B2FB6E94FA15441CC83BAB8EB6B514103327C3F4BA15441E01068CAE56B5141CE8EABAC45A1544111E5B1E8DE6B5141345BAE353FA15441030A5E7BDA6B5141665706143BA15441F2AC089FD06B5141B1E406EC31A154410FEFDCFBCC6B514104BD608B2EA154418C044AB3CB6B514141E6465A2DA154410D27C7FEC96B514164B9C5DD2BA15441444CC26DC56B51417EE840E427A154411A77D569C16B5141CE1A8B6524A15441A8B53C39BD6B5141876DF3BF20A154417B14AEC7B96B51410AD7A3C01DA15441D057A91BB16B5141666EAA2C1AA15441B26C591CAF6B51413D1DF1D018A154410AD7A3E0AD6B5141A4703DFA17A154418B6CE7D3AD6B514114AE47C919A15441CFF75373AF6B5141C3F528A43DA154411D78D163A96B51412BE2FFFE37A15441997C5198A86B51410F98A23D37A15441DCC05CEFA76B51414E1B189D36A1544104000000C25D71DFA86B5141A5E409863FA15441B29DEFEFA86B5141CBA1451E40A154417FB153F4A86B5141B1A5618340A15441C25D71DFA86B5141A5E409863FA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>799215 - 162271
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000200000022000000CF261D377AFB50411CF287DB2F89544144059ACD7FFB5041D8FD55AA318954411F85EBD180FB5041EC51B83E2B89544152B81ED582FB504114AE47A12B8954413333333384FB5041A4703D9A27895441AE47E1AA82FB50413D0AD7A327895441EC51B83E7CFB5041EC51B8BE0F895441D7A3708D75FB504152B81EC50C895441713D0A876BFB50418FC2F588098954419A9999196CFB504114AE479105895441F6285C3F6FFB504100000000F6885441E17A148E6FFB50410AD7A390F08854418FC2F52872FB5041CDCCCCBCE988544114AE470177FB504166666626E488544152B81E457AFB5041713D0A17E2885441B81E85DB89FB5041AE47E12ABA8854419A99995982FB50413D0AD753BA885441A4703D9A81FB5041AE47E19ABC8854415C8FC26576FB5041A4703D5ADB8854411F85EBC16EFB504114AE4701EF8854411F85EBD165FB50413333330307895441BC58A78565FB504153317ACD078954416666668665FB5041D7A370CD078954416C7607C25FFB50413F50593A1789544141C0A99D60FB5041B5E24171178954419F59B5B660FB504144EFBE94178954419A9999B960FB50415C8FC28517895441DD1D53C060FB50413A2A688F17895441730B572161FB5041064A8B5917895441D116EF3665FB5041504476A91D8954412E22874C69FB50417DAE7A5D228954413246DCE06DFB5041FEA4DD50278954416BA5DC3773FB5041EA4158812D895441CF261D377AFB50411CF287DB2F89544108000000D7A3702D78FB50415C8FC295218954410000004074FB50419A999989218954418FC2F59870FB50415C8FC2351E895441333333F36FFB5041666666C61989544185EB514876FB5041B81E853B178954417B14AE9778FB5041666666C619895441295C8F127AFB5041C3F5289C1D895441D7A3702D78FB50415C8FC29521895441
+</a>
+
+<b>
+010600000001000000010300000001000000210000001F85EBC16EFB504114AE4701EF8854411F85EBD165FB504133333303078954417862068C65FB50419B4594BC0789544174A5D28565FB5041170778CD078954416666668665FB5041D7A370CD078954416C7607C25FFB50413E50593A178954417CF885CD5FFB5041C2F0383D17895441FDF197D866FB50410B66E6070F895441F83B2CED69FB5041F6E7CE760B89544198D48A886BFB5041747F8C7E098954419A9999196CFB504114AE479105895441EE11BD3A6FFB5041C08CDB16F6885441E83A267E6FFB5041B9C71FE0F08854419716B38B6FFB50411DB7B6BAF0885441E17A148E6FFB50410AD7A390F0885441C5CBC18B70FB5041EAC2C5F7ED885441E0EF8BFA71FB5041D73D1D03EA88544126F3231F72FB5041794C89D6E98854418FC2F52872FB5041CDCCCCBCE988544169EC18FD72FB50418D0527C8E8885441F1D874F374FB50414D0F3064E68854410DDE73EF75FB50412A103162E588544114AE470177FB504166666626E4885441EE5F608178FB5041F4770F34E388544127B56C317AFB5041D7EA6811E28854413087A74C80FB5041E88DC2A5D28854413EF7CA8984FB50415F8884CAC78854417F78EB7D89FB504154775DDDBA885441939553A589FB5041FEF3082CBA885441DC8CA08582FB504151D5E652BA88544118D240A37FFB50414CA81EFFC18854415C8FC26576FB5041A4703D5ADB8854411F85EBC16EFB504114AE4701EF885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898997 - 3059403
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000570000007B14AEE795815141EC51B88EAF97544100000070958151410AD7A320AF975441CDCCCC5C8E8151419A999999A89754413D0AD7237E81514166666626DE975441666666867F8151410AD7A3E0DE97544152B81EF58081514185EB5198DF975441A4703DFA81815141295C8F02E09754418FC2F568838151419A999989E09754417B14AEA784815141A4703DEAE0975441CDCCCCDC8581514114AE4741E1975441EC51B82E878151411F85EBA1E1975441295C8FA2898151418FC2F558E29754413D0AD7C38A815141333333C3E2975441F6285CBF8B8151410AD7A310E3975441A4703DBA8C8151413D0AD723E397544152B81EB58D8151410AD7A3E0E2975441666666468E8151418FC2F558E2975441A4703DEA8E8151417B14AE37E19754411F85EBA18F8151417B14AE07DF975441295C8F329081514114AE47E1DC975441F6285CBF90815141B81E85FBDA975441333333739181514133333343DB975441713D0A0791815141D7A3709DDC9754419A9999B990815141B81E85ABDD975441295C8F6290815141713D0AD7DE9754415C8FC21590815141C3F528DCDF9754411F85EBD18F815141D7A370FDE097544114AE47718F815141295C8F32E29754410AD7A3108F8151410AD7A3E0E29754419A9999898E815141E17A145EE39754415C8FC2E58D81514185EB51C8E3975441F6285C1F90815141000000E0E4975441C3F5283C9281514152B81EE5E59754417B14AE67938151418FC2F558E697544152B81EE59381514100000080E697544114AE47A195815141A4703DDAE1975441F6285CBF9881514114AE4741D9975441666666669B815141D7A370DDD1975441C3F528CC9A81514185EB51D8D2975441EC51B84E9A815141F6285C2FD3975441713D0AC7998151418FC2F568D3975441CDCCCCFC98815141CDCCCCACD3975441E17A14EE97815141D7A370DDD3975441713D0A67978151410AD7A3F0D397544185EB512896815141A4703DFAD3975441E17A148E958151410AD7A320D49754419A9999E99481514148E17A64D49754415C8FC275948151417B14AEA7D4975441B81E850B94815141EC51B8FED49754417B14AE9793815141C3F5287CD59754413D0AD753938151413D0AD703D6975441713D0A07938151417B14AEA7D6975441CDCCCCCC928151411F85EB41D7975441F6285C7F92815141A4703D2AD8975441C3F5283C92815141E17A14CED8975441B81E85DB91815141CDCCCC0CDA9754416666667691815141C3F5283CDB975441333333C39081514148E17AF4DA9754413D0AD72391815141295C8FA2D9975441B81E85DB91815141C3F5287CD7975441F6285C7F92815141D7A3700DD6975441E17A148E93815141D7A3700DD49754411F85EB3194815141EC51B89ED2975441A4703DCA9481514166666656D1975441F6285C4F918151415C8FC2E5CB975441333333F3928151419A999919C7975441713D0A97938151418FC2F5A8C4975441CDCCCCFC9581514100000080C59754415C8FC2259A815141666666E6C6975441CDCCCCFC9A81514100000080C4975441295C8F629F815141E17A142EC6975441B81E858B9F8151411F85EBD1C5975441F6285C2FA0815141F6285C0FC49754411F85EBC1A0815141713D0AC7C2975441F6285C3FA181514114AE4761C19754419A9999D9A1815141295C8FC2BF975441A4703D3AA2815141CDCCCC5CBE975441D7A3704DA28151417B14AE27BD9754413D0AD743A28151418FC2F5B8BB9754413D0AD703A2815141AE47E17ABA97544152B81E75998151410AD7A3B0B69754418FC2F5D89A815141CDCCCC3CB297544133333323998151419A999959B197544148E17AE49781514185EB5198B0975441000000D096815141EC51B8EEAF975441295C8FC296815141AE47E1EAAF9754417B14AEE795815141EC51B88EAF975441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000A3EC8D5A9181514140591892DB975441713D0A0791815141D7A3709DDC9754419A9999B990815141B81E85ABDD975441295C8F6290815141713D0AD7DE9754415C8FC21590815141C3F528DCDF9754411F85EBD18F815141D7A370FDE097544114AE47718F815141295C8F32E29754410AD7A3108F8151410AD7A3E0E29754419A9999898E815141E17A145EE39754415C8FC2E58D81514185EB51C8E3975441F6285C1F90815141000000E0E4975441C3F5283C9281514152B81EE5E59754417B14AE67938151418FC2F558E697544152B81EE59381514100000080E697544114AE47A195815141A4703DDAE1975441F6285CBF9881514114AE4741D9975441666666669B815141D7A370DDD1975441C3F528CC9A81514185EB51D8D2975441EC51B84E9A815141F6285C2FD3975441713D0AC7998151418FC2F568D3975441CDCCCCFC98815141CDCCCCACD3975441E17A14EE97815141D7A370DDD3975441713D0A67978151410AD7A3F0D397544185EB512896815141A4703DFAD3975441E17A148E958151410AD7A320D49754419A9999E99481514148E17A64D49754415C8FC275948151417B14AEA7D4975441B81E850B94815141EC51B8FED49754417B14AE9793815141C3F5287CD59754413D0AD753938151413D0AD703D6975441713D0A07938151417B14AEA7D6975441CDCCCCCC928151411F85EB41D7975441F6285C7F92815141A4703D2AD8975441C3F5283C92815141E17A14CED8975441B81E85DB91815141CDCCCC0CDA9754416666667691815141C3F5283CDB975441A3EC8D5A9181514140591892DB975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898997 - 3343688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000570000007B14AEE795815141EC51B88EAF97544100000070958151410AD7A320AF975441CDCCCC5C8E8151419A999999A89754413D0AD7237E81514166666626DE975441666666867F8151410AD7A3E0DE97544152B81EF58081514185EB5198DF975441A4703DFA81815141295C8F02E09754418FC2F568838151419A999989E09754417B14AEA784815141A4703DEAE0975441CDCCCCDC8581514114AE4741E1975441EC51B82E878151411F85EBA1E1975441295C8FA2898151418FC2F558E29754413D0AD7C38A815141333333C3E2975441F6285CBF8B8151410AD7A310E3975441A4703DBA8C8151413D0AD723E397544152B81EB58D8151410AD7A3E0E2975441666666468E8151418FC2F558E2975441A4703DEA8E8151417B14AE37E19754411F85EBA18F8151417B14AE07DF975441295C8F329081514114AE47E1DC975441F6285CBF90815141B81E85FBDA975441333333739181514133333343DB975441713D0A0791815141D7A3709DDC9754419A9999B990815141B81E85ABDD975441295C8F6290815141713D0AD7DE9754415C8FC21590815141C3F528DCDF9754411F85EBD18F815141D7A370FDE097544114AE47718F815141295C8F32E29754410AD7A3108F8151410AD7A3E0E29754419A9999898E815141E17A145EE39754415C8FC2E58D81514185EB51C8E3975441F6285C1F90815141000000E0E4975441C3F5283C9281514152B81EE5E59754417B14AE67938151418FC2F558E697544152B81EE59381514100000080E697544114AE47A195815141A4703DDAE1975441F6285CBF9881514114AE4741D9975441666666669B815141D7A370DDD1975441C3F528CC9A81514185EB51D8D2975441EC51B84E9A815141F6285C2FD3975441713D0AC7998151418FC2F568D3975441CDCCCCFC98815141CDCCCCACD3975441E17A14EE97815141D7A370DDD3975441713D0A67978151410AD7A3F0D397544185EB512896815141A4703DFAD3975441E17A148E958151410AD7A320D49754419A9999E99481514148E17A64D49754415C8FC275948151417B14AEA7D4975441B81E850B94815141EC51B8FED49754417B14AE9793815141C3F5287CD59754413D0AD753938151413D0AD703D6975441713D0A07938151417B14AEA7D6975441CDCCCCCC928151411F85EB41D7975441F6285C7F92815141A4703D2AD8975441C3F5283C92815141E17A14CED8975441B81E85DB91815141CDCCCC0CDA9754416666667691815141C3F5283CDB975441333333C39081514148E17AF4DA9754413D0AD72391815141295C8FA2D9975441B81E85DB91815141C3F5287CD7975441F6285C7F92815141D7A3700DD6975441E17A148E93815141D7A3700DD49754411F85EB3194815141EC51B89ED2975441A4703DCA9481514166666656D1975441F6285C4F918151415C8FC2E5CB975441333333F3928151419A999919C7975441713D0A97938151418FC2F5A8C4975441CDCCCCFC9581514100000080C59754415C8FC2259A815141666666E6C6975441CDCCCCFC9A81514100000080C4975441295C8F629F815141E17A142EC6975441B81E858B9F8151411F85EBD1C5975441F6285C2FA0815141F6285C0FC49754411F85EBC1A0815141713D0AC7C2975441F6285C3FA181514114AE4761C19754419A9999D9A1815141295C8FC2BF975441A4703D3AA2815141CDCCCC5CBE975441D7A3704DA28151417B14AE27BD9754413D0AD743A28151418FC2F5B8BB9754413D0AD703A2815141AE47E17ABA97544152B81E75998151410AD7A3B0B69754418FC2F5D89A815141CDCCCC3CB297544133333323998151419A999959B197544148E17AE49781514185EB5198B0975441000000D096815141EC51B8EEAF975441295C8FC296815141AE47E1EAAF9754417B14AEE795815141EC51B88EAF975441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000A3EC8D5A9181514140591892DB975441713D0A0791815141D7A3709DDC9754419A9999B990815141B81E85ABDD975441295C8F6290815141713D0AD7DE9754415C8FC21590815141C3F528DCDF9754411F85EBD18F815141D7A370FDE097544114AE47718F815141295C8F32E29754410AD7A3108F8151410AD7A3E0E29754419A9999898E815141E17A145EE39754415C8FC2E58D81514185EB51C8E3975441F6285C1F90815141000000E0E4975441C3F5283C9281514152B81EE5E59754417B14AE67938151418FC2F558E697544152B81EE59381514100000080E697544114AE47A195815141A4703DDAE1975441F6285CBF9881514114AE4741D9975441666666669B815141D7A370DDD1975441C3F528CC9A81514185EB51D8D2975441EC51B84E9A815141F6285C2FD3975441713D0AC7998151418FC2F568D3975441CDCCCCFC98815141CDCCCCACD3975441E17A14EE97815141D7A370DDD3975441713D0A67978151410AD7A3F0D397544185EB512896815141A4703DFAD3975441E17A148E958151410AD7A320D49754419A9999E99481514148E17A64D49754415C8FC275948151417B14AEA7D4975441B81E850B94815141EC51B8FED49754417B14AE9793815141C3F5287CD59754413D0AD753938151413D0AD703D6975441713D0A07938151417B14AEA7D6975441CDCCCCCC928151411F85EB41D7975441F6285C7F92815141A4703D2AD8975441C3F5283C92815141E17A14CED8975441B81E85DB91815141CDCCCC0CDA9754416666667691815141C3F5283CDB975441A3EC8D5A9181514140591892DB975441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899053 - 1173608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A354411F85EB11CC625141F6285CEF96A35441C3F5288CC9625141AE47E18A9AA3544148E17AF4C3625141F6285C6F9FA354413D0AD773BB625141D7A3705DA6A35441D7A3705DB2625141D7A3705DACA35441E17A147EAB6251410AD7A3A0AFA35441D7A3703DAD6251419A999969B3A3544100000040B26251413D0AD7E3B2A35441B81E857BB8625141713D0A27B0A3544185EB51C8BD625141EC51B84EACA35441B81E85BBC2625141F6285CFFA7A354413D0AD793C6625141CDCCCC8CA5A3544148E17A84CC62514185EB5188A1A35441B81E85DBCD625141D7A3708D9FA3544148E17A84D26251413D0AD7A39CA35441D7A370DDD8625141D7A3708D99A35441D7A3706DDB6251411F85EBE195A35441CDCCCC0CDE625141CDCCCC9C93A3544148E17AD4E0625141000000F091A354419A999909DB6251413D0AD7938BA35441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A3544194D3E7FECB625141C2968D0A97A3544147632915CB6251410D44D65898A3544183492E5ACA62514110633E6499A354418D3B8392C8625141F49347659BA354415F13BCC5C26251414F291D66A0A354412E7D659DBB625141B3B9913BA6A35441070FEAA7B3625141C8C13E83ABA35441560FBBEDB1625141A56D7892ACA35441D9081A5DB162514191E020D7ACA35441A5C10985AB62514183FFB5AFAFA354410E2CEA6BAD6251411ECAC064B3A354419AD368E3B1625141DA137FEDB2A35441F70F25C4B762514199789577B0A354412D7184BDB8625141782929F7AFA3544185EB51C8BD625141EC51B84EACA35441B81E85BBC2625141F6285CFFA7A354413D0AD793C6625141CDCCCC8CA5A3544148E17A84CC62514185EB5188A1A35441B81E85DBCD625141D7A3708D9FA3544148E17A84D26251413D0AD7A39CA35441D7A370DDD8625141D7A3708D99A35441D7A3706DDB6251411F85EBE195A35441CDCCCC0CDE625141CDCCCC9C93A3544148E17AD4E0625141000000F091A354419A999909DB6251413D0AD7938BA35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899053 - 3277169
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A354411F85EB11CC625141F6285CEF96A35441C3F5288CC9625141AE47E18A9AA3544148E17AF4C3625141F6285C6F9FA354413D0AD773BB625141D7A3705DA6A35441D7A3705DB2625141D7A3705DACA35441E17A147EAB6251410AD7A3A0AFA35441D7A3703DAD6251419A999969B3A3544100000040B26251413D0AD7E3B2A35441B81E857BB8625141713D0A27B0A3544185EB51C8BD625141EC51B84EACA35441B81E85BBC2625141F6285CFFA7A354413D0AD793C6625141CDCCCC8CA5A3544148E17A84CC62514185EB5188A1A35441B81E85DBCD625141D7A3708D9FA3544148E17A84D26251413D0AD7A39CA35441D7A370DDD8625141D7A3708D99A35441D7A3706DDB6251411F85EBE195A35441CDCCCC0CDE625141CDCCCC9C93A3544148E17AD4E0625141000000F091A354419A999909DB6251413D0AD7938BA35441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A3544194D3E7FECB625141C2968D0A97A3544147632915CB6251410D44D65898A3544183492E5ACA62514110633E6499A354418D3B8392C8625141F49347659BA354415F13BCC5C26251414F291D66A0A354412E7D659DBB625141B3B9913BA6A35441070FEAA7B3625141C8C13E83ABA35441560FBBEDB1625141A56D7892ACA35441D9081A5DB162514191E020D7ACA35441A5C10985AB62514183FFB5AFAFA354410E2CEA6BAD6251411ECAC064B3A354419AD368E3B1625141DA137FEDB2A35441F70F25C4B762514199789577B0A354412D7184BDB8625141782929F7AFA3544185EB51C8BD625141EC51B84EACA35441B81E85BBC2625141F6285CFFA7A354413D0AD793C6625141CDCCCC8CA5A3544148E17A84CC62514185EB5188A1A35441B81E85DBCD625141D7A3708D9FA3544148E17A84D26251413D0AD7A39CA35441D7A370DDD8625141D7A3708D99A35441D7A3706DDB6251411F85EBE195A35441CDCCCC0CDE625141CDCCCC9C93A3544148E17AD4E0625141000000F091A354419A999909DB6251413D0AD7938BA35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261893 - 2943241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5184C6F51419A999969033954413D0AD783346F5141D7A3701D08395441B81E85FB1C6F5141E17A14CE0C395441EC51B84E116F51411F85EB210F3954411F85EBC1126F5141AE47E16A15395441CDCCCC7C116F51419A99998915395441D7A3707D0F6F5141000000D0143954415C8FC2350A6F5141C3F5288C10395441D7A370DD076F51413D0AD70311395441CDCCCC8C116F514185EB5188173954417B14AE471E6F514133333343183954413D0AD7732E6F51418FC2F5B818395441CDCCCC9C3F6F5141AE47E1DA1C39544148E17AB4476F5141E17A14CE1E3954418FC2F5184C6F51419A99996903395441
+</a>
+
+<b>
+0106000000010000000103000000020000002900000069235AD3FC6E514169F06A3613395441C1DEF14E026F5141AE5BD23810395441A98ECAFC046F514104882C8A0E395441179063BB066F51410F2BADAB0C39544162193DEB066F5141B9FE525A0E395441798933060A6F51413F2DA49510395441BF36A71C0A6F514164512A91103954415C8FC2350A6F5141C3F5288C103954412DDEB94E116F5141AC3AF2210F395441B81E85FB1C6F5141E17A14CE0C395441EDCC3D82206F5141DF2D2B1A0C39544135BE22B3396F514166D1C4140739544121D5203A436F514131126B2E05395441E38B73014C6F514181AB496E03395441F9DAB93B566F5141244F127400395441211EDF41576F5141A31B8A2700395441000000004A6F51413D0AD793FB385441E21C40E4496F5141DC2D3E9DFB385441333333C34C6F5141EC51B86EF0385441B81E853B3E6F5141AE47E1DAEC385441A01B47F7416F5141D9228C22D738544142E62BB13D6F5141E1156469D638544157C9E57B396F514156240784D8385441CD880DD72F6F51415705686DE9385441AE47E15A306F5141A4703D0AF838544111A3FAF8226F514138032DB6F93854413E9BB940196F51414F07FDECFA3854419A9999F9136F51415C8FC295FB385441EC51B83E156F51418FC2F5980439544185EB51A80B6F5141B81E850B08395441D3EE205B0A6F5141478C4379F138544171954E3E046F5141C8B963C5F3385441B1A018E4FC6E5141A93419F1FC3854413718842DFC6E5141F9FF8F7DFD3854413A0CCFD7FA6E5141F18F73F4FD385441C2A2F8F7F96E514115D95406FE385441B81E856BEF6E51413D0AD7D3FB385441F7220129F06E5141807D4F3308395441AE47E12AF06E5141295C8F520839544157F264FCF76E51419B0BA8390F39544169235AD3FC6E514169F06A361339544105000000E356BA040F6F514150A03ABD0A395441C4E820850E6F51414B8CEE9E08395441556C9FE1126F51410CB0BB9F07395441ED7E5241136F51418968219E09395441E356BA040F6F514150A03ABD0A395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261893 - 3810164
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5184C6F51419A999969033954413D0AD783346F5141D7A3701D08395441B81E85FB1C6F5141E17A14CE0C395441EC51B84E116F51411F85EB210F3954411F85EBC1126F5141AE47E16A15395441CDCCCC7C116F51419A99998915395441D7A3707D0F6F5141000000D0143954415C8FC2350A6F5141C3F5288C10395441D7A370DD076F51413D0AD70311395441CDCCCC8C116F514185EB5188173954417B14AE471E6F514133333343183954413D0AD7732E6F51418FC2F5B818395441CDCCCC9C3F6F5141AE47E1DA1C39544148E17AB4476F5141E17A14CE1E3954418FC2F5184C6F51419A99996903395441
+</a>
+
+<b>
+0106000000010000000103000000020000002900000069235AD3FC6E514169F06A3613395441C1DEF14E026F5141AE5BD23810395441A98ECAFC046F514104882C8A0E395441179063BB066F51410F2BADAB0C39544162193DEB066F5141B9FE525A0E395441798933060A6F51413F2DA49510395441BF36A71C0A6F514164512A91103954415C8FC2350A6F5141C3F5288C103954412DDEB94E116F5141AC3AF2210F395441B81E85FB1C6F5141E17A14CE0C395441EDCC3D82206F5141DF2D2B1A0C39544135BE22B3396F514166D1C4140739544121D5203A436F514131126B2E05395441E38B73014C6F514181AB496E03395441F9DAB93B566F5141244F127400395441211EDF41576F5141A31B8A2700395441000000004A6F51413D0AD793FB385441E21C40E4496F5141DC2D3E9DFB385441333333C34C6F5141EC51B86EF0385441B81E853B3E6F5141AE47E1DAEC385441A01B47F7416F5141D9228C22D738544142E62BB13D6F5141E1156469D638544157C9E57B396F514156240784D8385441CD880DD72F6F51415705686DE9385441AE47E15A306F5141A4703D0AF838544111A3FAF8226F514138032DB6F93854413E9BB940196F51414F07FDECFA3854419A9999F9136F51415C8FC295FB385441EC51B83E156F51418FC2F5980439544185EB51A80B6F5141B81E850B08395441D3EE205B0A6F5141478C4379F138544171954E3E046F5141C8B963C5F3385441B1A018E4FC6E5141A93419F1FC3854413718842DFC6E5141F9FF8F7DFD3854413A0CCFD7FA6E5141F18F73F4FD385441C2A2F8F7F96E514115D95406FE385441B81E856BEF6E51413D0AD7D3FB385441F7220129F06E5141807D4F3308395441AE47E12AF06E5141295C8F520839544157F264FCF76E51419B0BA8390F39544169235AD3FC6E514169F06A361339544105000000E356BA040F6F514150A03ABD0A395441C4E820850E6F51414B8CEE9E08395441556C9FE1126F51410CB0BB9F07395441ED7E5241136F51418968219E09395441E356BA040F6F514150A03ABD0A395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 1290235
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441CDCCCCDC242D51413D0AD7B3FCEC54415C8FC2C5342D51419A9999F90CED544152B81E053F2D51413D0AD743FCEC544152B81EA5392D51413D0AD773F8EC5441295C8F32312D51419A999959F2EC5441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000A4703D9A3A2D5141F6285C5F20ED5441D7A3701D3E2D51417B14AE771DED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441AE307972322D51416B09C0980AED544110FFE2A72F2D51417CCBE1BD07ED5441746C305B2B2D514120101B5803ED544135DEDBEE262D514122D7F9D1FEEC5441D53FD208252D5141D241DDE0FCEC544148007785242D51415BDCD970FCEC54416E5F7DC1212D5141F978CF51FAEC544185C7FA27202D5141A7D5B317F9EC5441078E57471D2D5141C643ADE2F6EC5441F5D3D9BB192D514127CD992AF4EC5441779F4F65182D5141EE363810F3EC5441D989F84D162D5141E0299336F1EC5441F3F47BE7142D5141FEF066F9EFEC54410414970D132D514186431F56EEEC54413D8C9F95112D514145CF7B09EDEC54418B835DFC0D2D5141E25E9027EAEC544166C937270A2D51418C87BD18E7EC5441026143BC072D514177DAAB23E5EC54418835974A052D5141387E9727E3EC54413D93D4DBFE2C5141D49C55EEDDEC5441E17A52F5FB2C514174CB6093DBEC5441F9BD83ADF92C5141D08F4BB9D9EC5441D7A3700DFA2C514114AE4741DBEC54417B14AEC7FC2C5141C3F5286CE5EC54418FC2F5C8FF2C5141F6285CEFF0EC54419A9999F9F22C514166666686FEEC54411F85EB210B2D51413333330310ED54413F336FCB0C2D5141ABC4A7820EED5441000000A00F2D514185EB51380AED54417B14AEE7122D51419A9999E90CED5441B81E85EB152D5141D7A3707D10ED544148E17AA41A2D5141CDCCCCEC16ED544148E17AE41E2D5141EC51B8FE1DED5441AE47E12A1E2D51415C8FC2551EED54415C8FC2651F2D5141E17A146E22ED54419A999929212D51410AD7A35028ED544152B81EA5262D5141713D0AC72AED5441666666462E2D5141666666E629ED5441AE47E18A352D5141AE47E19A26ED5441CDCCCC4C382D5141713D0A4722ED5441A4703D9A3A2D5141F6285C5F20ED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 3427508
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441CDCCCCDC242D51413D0AD7B3FCEC54415C8FC2C5342D51419A9999F90CED544152B81E053F2D51413D0AD743FCEC544152B81EA5392D51413D0AD773F8EC5441295C8F32312D51419A999959F2EC5441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000A4703D9A3A2D5141F6285C5F20ED5441D7A3701D3E2D51417B14AE771DED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441AE307972322D51416B09C0980AED544110FFE2A72F2D51417CCBE1BD07ED5441746C305B2B2D514120101B5803ED544135DEDBEE262D514122D7F9D1FEEC5441D53FD208252D5141D241DDE0FCEC544148007785242D51415BDCD970FCEC54416E5F7DC1212D5141F978CF51FAEC544185C7FA27202D5141A7D5B317F9EC5441078E57471D2D5141C643ADE2F6EC5441F5D3D9BB192D514127CD992AF4EC5441779F4F65182D5141EE363810F3EC5441D989F84D162D5141E0299336F1EC5441F3F47BE7142D5141FEF066F9EFEC54410414970D132D514186431F56EEEC54413D8C9F95112D514145CF7B09EDEC54418B835DFC0D2D5141E25E9027EAEC544166C937270A2D51418C87BD18E7EC5441026143BC072D514177DAAB23E5EC54418835974A052D5141387E9727E3EC54413D93D4DBFE2C5141D49C55EEDDEC5441E17A52F5FB2C514174CB6093DBEC5441F9BD83ADF92C5141D08F4BB9D9EC5441D7A3700DFA2C514114AE4741DBEC54417B14AEC7FC2C5141C3F5286CE5EC54418FC2F5C8FF2C5141F6285CEFF0EC54419A9999F9F22C514166666686FEEC54411F85EB210B2D51413333330310ED54413F336FCB0C2D5141ABC4A7820EED5441000000A00F2D514185EB51380AED54417B14AEE7122D51419A9999E90CED5441B81E85EB152D5141D7A3707D10ED544148E17AA41A2D5141CDCCCCEC16ED544148E17AE41E2D5141EC51B8FE1DED5441AE47E12A1E2D51415C8FC2551EED54415C8FC2651F2D5141E17A146E22ED54419A999929212D51410AD7A35028ED544152B81EA5262D5141713D0AC72AED5441666666462E2D5141666666E629ED5441AE47E18A352D5141AE47E19A26ED5441CDCCCC4C382D5141713D0A4722ED5441A4703D9A3A2D5141F6285C5F20ED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 28250
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441CDCCCCDC242D51413D0AD7B3FCEC54415C8FC2C5342D51419A9999F90CED544152B81E053F2D51413D0AD743FCEC544152B81EA5392D51413D0AD773F8EC5441295C8F32312D51419A999959F2EC5441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A3700DFA2C514114AE4741DBEC5441E17A14AE082D514114AE47B1E7EC544185EB51D8102D5141E17A140EEEEC544152B81E55182D514114AE47C1F4EC54418FC2F588232D514148E17A24FDEC5441E17A14CE332D5141666666860DED5441E17A147E392D5141666666A612ED544114AE47C1402D5141713D0AB717ED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441AE307972322D51416B09C0980AED544110FFE2A72F2D51417CCBE1BD07ED5441746C305B2B2D514120101B5803ED544135DEDBEE262D514122D7F9D1FEEC5441D53FD208252D5141D241DDE0FCEC544148007785242D51415BDCD970FCEC54416E5F7DC1212D5141F978CF51FAEC544185C7FA27202D5141A7D5B317F9EC5441078E57471D2D5141C643ADE2F6EC5441F5D3D9BB192D514127CD992AF4EC5441779F4F65182D5141EE363810F3EC5441D989F84D162D5141E0299336F1EC5441F3F47BE7142D5141FEF066F9EFEC54410414970D132D514186431F56EEEC54413D8C9F95112D514145CF7B09EDEC54418B835DFC0D2D5141E25E9027EAEC544166C937270A2D51418C87BD18E7EC5441026143BC072D514177DAAB23E5EC54418835974A052D5141387E9727E3EC54413D93D4DBFE2C5141D49C55EEDDEC5441E17A52F5FB2C514174CB6093DBEC5441F9BD83ADF92C5141D08F4BB9D9EC5441D7A3700DFA2C514114AE4741DBEC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 71601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441CDCCCCDC242D51413D0AD7B3FCEC54415C8FC2C5342D51419A9999F90CED544152B81E053F2D51413D0AD743FCEC544152B81EA5392D51413D0AD773F8EC5441295C8F32312D51419A999959F2EC5441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A3700DFA2C514114AE4741DBEC5441E17A14AE082D514114AE47B1E7EC544185EB51D8102D5141E17A140EEEEC544152B81E55182D514114AE47C1F4EC54418FC2F588232D514148E17A24FDEC5441E17A14CE332D5141666666860DED5441E17A147E392D5141666666A612ED544114AE47C1402D5141713D0AB717ED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441AE307972322D51416B09C0980AED544110FFE2A72F2D51417CCBE1BD07ED5441746C305B2B2D514120101B5803ED544135DEDBEE262D514122D7F9D1FEEC5441D53FD208252D5141D241DDE0FCEC544148007785242D51415BDCD970FCEC54416E5F7DC1212D5141F978CF51FAEC544185C7FA27202D5141A7D5B317F9EC5441078E57471D2D5141C643ADE2F6EC5441F5D3D9BB192D514127CD992AF4EC5441779F4F65182D5141EE363810F3EC5441D989F84D162D5141E0299336F1EC5441F3F47BE7142D5141FEF066F9EFEC54410414970D132D514186431F56EEEC54413D8C9F95112D514145CF7B09EDEC54418B835DFC0D2D5141E25E9027EAEC544166C937270A2D51418C87BD18E7EC5441026143BC072D514177DAAB23E5EC54418835974A052D5141387E9727E3EC54413D93D4DBFE2C5141D49C55EEDDEC5441E17A52F5FB2C514174CB6093DBEC5441F9BD83ADF92C5141D08F4BB9D9EC5441D7A3700DFA2C514114AE4741DBEC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944087 - 5181184
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000A000000A4703D7A2CC05041E17A145EC9355441295C8F0226C050419A999959C8355441A4703D9A1EC05041000000F0C635544152B81E8518C05041713D0AF710365441E17A14FE1FC05041AE47E1CA1136544148E17AF42BC05041F6285C1F13365441D7A3705D31C05041295C8FB2133654411F85EBA137C0504185EB51F8C9355441713D0AE736C0504148E17AF4C9355441A4703D7A2CC05041E17A145EC93554410B0000007B14AE1725C05041EC51B81ED8355441E17A142E24C050419A9999C9E23554410000008022C050418FC2F538F535544185EB51C821C05041F6285CFFFC355441EC51B81E20C0504152B81E1511365441F6285C8F1FC05041D7A370FD10365441CDCCCC6C21C0504133333313FA355441A4703DAA23C05041C3F5288CE0355441000000A025C0504166666666C93554413D0AD72326C0504166666696C93554417B14AE1725C05041EC51B81ED8355441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000052B81E8518C05041713D0AF710365441E17A14FE1FC05041AE47E1CA1136544130E6BC7021C05041BE45111F00365441B175232426C050416EFBE15EC835544120EFFAC61EC05041C70288F8C635544166642D141EC05041E5969E4FCD355441F2DCECF61BC05041D163F70AE735544111ED6CD719C05041C03BABE10036544152B81E8518C05041713D0AF710365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403503 - 1970941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C0000001F85EBB1ED235141666666F6EBF95441B81E852BED2351410AD7A370E9F954419A999989E3235141295C8FB2EBF9544114AE4701D12351419A999959EEF954419A9999A9CB23514133333323F0F95441C3F5286CC323514148E17A24F4F95441666666B6B8235141D7A3708DF8F95441EC51B87EAF235141A4703D7AFAF95441CDCCCC9CA02351418FC2F54804FA5441CDCCCC6CAB2351413333339313FA54418FC2F568CC235141666666D6FDF954411F85EBB1ED235141666666F6EBF95441
+</a>
+
+<b>
+0106000000010000000103000000010000007C000000BCC89FA8392351413696DB28EBF954419374B1FD3623514127668772EAF95441438B9EF83523514183A09731EAF9544176F08E81302351417DC5B192E9F95441B9D7092A2E2351418BA99A4EE9F954411B98F1652223514118BA55B7E7F95441F41D7113202351414A674E62E7F954415CA0D789122351414529F17FE5F95441F3B2F8B711235141E02A6263E5F95441322E71280A2351414F4C7F46E3F95441EF1E1F8F0223514141090026E1F954414E18DA2401235141A4F9E5B6E0F95441CDFDF34600235141AC626B63E0F95441B4715475FC22514112A4A2F3DEF954410623148DFA225141B13DF43BDEF954419072E8CFF4225141D96CE631DAF9544135939925F222514109DC4A85DAF95441BACBD24AEB225141B4F526C1DBF954411F0977F3E6225141307059E8DEF95441940024A9E5225141CAD42DABE0F954410E057E12E6225141F1FC5483E2F9544199649BDDE62251418749B176E8F95441AF4B7539E7225141AD8E9327EBF9544105B4D2D4E7225141311DD0B4EFF95441F12A5FDAE72251412BB85C27F0F954414C77DCECE72251410B2903A7F2F954414F00B029E822514158F552DFFAF954418C23C1E5E8225141051700AD01FA5441CF04C214EA225141E6ADFAF805FA5441E53BB08BEB2251414DCAC8EA09FA544103B947ABED22514171E278350FFA5441B1E2D88FEE225141B788689C11FA54417A7A574FF82251415B632A2A10FA544113D89FA9FD225141AA2E501511FA54417509FA1FFF225141E272BD4210FA544116183BAA062351411BB72A700FFA5441813BEDEC0C235141779C9FB30DFA5441D7A370AD24235141AE47E1BA06FA54410AD7A3002D2351410AD7A3A006FA5441AE47E15A2D235141295C8F4208FA5441295C8F722F235141B81E857B08FA5441184E577C3A2351418F4B4FFD07FA54418FC2F5F83C235141B81E85BB08FA54415C8FC2F5412351418FC2F5280AFA54411F85EB414B2351410AD7A3600AFA5441CDCCCC4C4F2351410AD7A3D00BFA54416F0A3A3057235141D1558B3B10FA5441BB4B98AA57235141E5E33E4110FA5441D992856B592351419157582110FA544100000040672351415C8FC2250FFA5441295C8F726D23514185EB51480FFA54410000004070235141713D0A970FFA5441D7A3705D722351411F85EBD10FFA544148E17AB476235141AE47E12A11FA5441BAA5F9CF7A235141B89216BA11FA54410A48192285235141C488B62113FA5441E82D94FA86235141059F036213FA54415CD8F46A89235141A8C7FCB613FA5441C542043E8C2351412704641914FA544100417FD28C23514135A05F0714FA54419D074F698F23514196485BA813FA5441FA9D99C1902351415B8811A112FA54412B62923492235141AFAEDF8411FA5441B4BE17A892235141400DB30011FA54410EDAAEAA942351417FC0BFA30EFA54415E642EA499235141E809F5E008FA5441AC2908069C23514101AB104F07FA5441F65A4451A12351416C7608D203FA544136D83B2DA923514192F527A4FEF954415808A9EEAF235141E7B7DC62FAF95441CC1BA17BB32351417A0808A5F9F95441BB382CD5B8235141C3D4C480F8F9544106E9DA9FBF235141E140D7B4F5F95441CE0A43D3C3235141F2335EF2F3F95441BED7DF60C723514129AE4138F2F95441E1035C5FCB2351419DBE4847F0F954414539C228CD235141799700A3EFF95441EB5A346AD1235141211D954AEEF954411410539EDB235141F6BDB7D4ECF95441AC121DA5E3235141B8A11CACEBF95441BB869331E7235141D6B233D7EAF95441356FFB2EED23514167BE7A60E9F95441000000F0ED235141B81E85DBE5F95441CDCCCCDCED2351415C8FC2D5E4F9544154EB3E30EA235141CAA0EEF8E3F954418CB95C53E0235141A39B1099E4F9544154108662CB235141701E0FEDE5F954419DCDABEDC9235141BEBFB404E6F95441266E6B79C12351417797828AE6F95441B67C03B0B6235141314F3A42E6F95441F60CDDB2AE23514189CE5C0CE6F95441E47FF4EC972351417AF9ED2FE5F9544141170A6291235141AB8F99F0E4F95441842378FD8C235141DF7B649EE4F95441F1DE3C858C2351415EA360A2E4F95441B063D57B8B235141447B2D29E5F95441E1194E0F8B23514152A8DA8EE5F95441425292AE8623514128D15980EAF95441FEEAFE30862351410AA5250EEBF954418CF180EF84235141156C2A79ECF9544159C0232583235141436F4BEEEFF95441E3E4CE1382235141B8A9D80BF2F95441D8E0960B812351410FEF9ADAF2F954414A5709E87E23514190D33862F4F95441328561107E2351412D9344C4F4F95441B8292A1C7B23514159AA0E8FF5F95441BD8A7042722351413462CDE8F7F954411A68E2BE6B2351419B077064F6F954411FFDD90D6A235141C84B2F60F6F954411239548564235141EF3EEB4CF6F95441333333136023514114AE4771F5F954417466ABD55B2351414AF3B604F6F954411B4CC011592351417ADDDC64F6F954410C3CB8D35723514182C4F482F6F95441720D58D05623514146B4517EF6F954410D885414542351414E02CE71F6F954411CF0EF7951235141F42EE465F6F95441FD1A6FFE4E235141C1FA593EF6F9544136E66E6A492351410041706BF4F9544149725A57472351411D9DCABDF3F95441B0D322CE462351412B458D7DF3F95441C1DA1880422351410C04B4F8F0F954410BA4DDF93B235141DDBB6CCBEBF95441BCC89FA8392351413696DB28EBF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403503 - 3201137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C0000001F85EBB1ED235141666666F6EBF95441B81E852BED2351410AD7A370E9F954419A999989E3235141295C8FB2EBF9544114AE4701D12351419A999959EEF954419A9999A9CB23514133333323F0F95441C3F5286CC323514148E17A24F4F95441666666B6B8235141D7A3708DF8F95441EC51B87EAF235141A4703D7AFAF95441CDCCCC9CA02351418FC2F54804FA5441CDCCCC6CAB2351413333339313FA54418FC2F568CC235141666666D6FDF954411F85EBB1ED235141666666F6EBF95441
+</a>
+
+<b>
+0106000000010000000103000000010000007C000000BCC89FA8392351413696DB28EBF954419374B1FD3623514127668772EAF95441438B9EF83523514183A09731EAF9544176F08E81302351417DC5B192E9F95441B9D7092A2E2351418BA99A4EE9F954411B98F1652223514118BA55B7E7F95441F41D7113202351414A674E62E7F954415CA0D789122351414529F17FE5F95441F3B2F8B711235141E02A6263E5F95441322E71280A2351414F4C7F46E3F95441EF1E1F8F0223514141090026E1F954414E18DA2401235141A4F9E5B6E0F95441CDFDF34600235141AC626B63E0F95441B4715475FC22514112A4A2F3DEF954410623148DFA225141B13DF43BDEF954419072E8CFF4225141D96CE631DAF9544135939925F222514109DC4A85DAF95441BACBD24AEB225141B4F526C1DBF954411F0977F3E6225141307059E8DEF95441940024A9E5225141CAD42DABE0F954410E057E12E6225141F1FC5483E2F9544199649BDDE62251418749B176E8F95441AF4B7539E7225141AD8E9327EBF9544105B4D2D4E7225141311DD0B4EFF95441F12A5FDAE72251412BB85C27F0F954414C77DCECE72251410B2903A7F2F954414F00B029E822514158F552DFFAF954418C23C1E5E8225141051700AD01FA5441CF04C214EA225141E6ADFAF805FA5441E53BB08BEB2251414DCAC8EA09FA544103B947ABED22514171E278350FFA5441B1E2D88FEE225141B788689C11FA54417A7A574FF82251415B632A2A10FA544113D89FA9FD225141AA2E501511FA54417509FA1FFF225141E272BD4210FA544116183BAA062351411BB72A700FFA5441813BEDEC0C235141779C9FB30DFA5441D7A370AD24235141AE47E1BA06FA54410AD7A3002D2351410AD7A3A006FA5441AE47E15A2D235141295C8F4208FA5441295C8F722F235141B81E857B08FA5441184E577C3A2351418F4B4FFD07FA54418FC2F5F83C235141B81E85BB08FA54415C8FC2F5412351418FC2F5280AFA54411F85EB414B2351410AD7A3600AFA5441CDCCCC4C4F2351410AD7A3D00BFA54416F0A3A3057235141D1558B3B10FA5441BB4B98AA57235141E5E33E4110FA5441D992856B592351419157582110FA544100000040672351415C8FC2250FFA5441295C8F726D23514185EB51480FFA54410000004070235141713D0A970FFA5441D7A3705D722351411F85EBD10FFA544148E17AB476235141AE47E12A11FA5441BAA5F9CF7A235141B89216BA11FA54410A48192285235141C488B62113FA5441E82D94FA86235141059F036213FA54415CD8F46A89235141A8C7FCB613FA5441C542043E8C2351412704641914FA544100417FD28C23514135A05F0714FA54419D074F698F23514196485BA813FA5441FA9D99C1902351415B8811A112FA54412B62923492235141AFAEDF8411FA5441B4BE17A892235141400DB30011FA54410EDAAEAA942351417FC0BFA30EFA54415E642EA499235141E809F5E008FA5441AC2908069C23514101AB104F07FA5441F65A4451A12351416C7608D203FA544136D83B2DA923514192F527A4FEF954415808A9EEAF235141E7B7DC62FAF95441CC1BA17BB32351417A0808A5F9F95441BB382CD5B8235141C3D4C480F8F9544106E9DA9FBF235141E140D7B4F5F95441CE0A43D3C3235141F2335EF2F3F95441BED7DF60C723514129AE4138F2F95441E1035C5FCB2351419DBE4847F0F954414539C228CD235141799700A3EFF95441EB5A346AD1235141211D954AEEF954411410539EDB235141F6BDB7D4ECF95441AC121DA5E3235141B8A11CACEBF95441BB869331E7235141D6B233D7EAF95441356FFB2EED23514167BE7A60E9F95441000000F0ED235141B81E85DBE5F95441CDCCCCDCED2351415C8FC2D5E4F9544154EB3E30EA235141CAA0EEF8E3F954418CB95C53E0235141A39B1099E4F9544154108662CB235141701E0FEDE5F954419DCDABEDC9235141BEBFB404E6F95441266E6B79C12351417797828AE6F95441B67C03B0B6235141314F3A42E6F95441F60CDDB2AE23514189CE5C0CE6F95441E47FF4EC972351417AF9ED2FE5F9544141170A6291235141AB8F99F0E4F95441842378FD8C235141DF7B649EE4F95441F1DE3C858C2351415EA360A2E4F95441B063D57B8B235141447B2D29E5F95441E1194E0F8B23514152A8DA8EE5F95441425292AE8623514128D15980EAF95441FEEAFE30862351410AA5250EEBF954418CF180EF84235141156C2A79ECF9544159C0232583235141436F4BEEEFF95441E3E4CE1382235141B8A9D80BF2F95441D8E0960B812351410FEF9ADAF2F954414A5709E87E23514190D33862F4F95441328561107E2351412D9344C4F4F95441B8292A1C7B23514159AA0E8FF5F95441BD8A7042722351413462CDE8F7F954411A68E2BE6B2351419B077064F6F954411FFDD90D6A235141C84B2F60F6F954411239548564235141EF3EEB4CF6F95441333333136023514114AE4771F5F954417466ABD55B2351414AF3B604F6F954411B4CC011592351417ADDDC64F6F954410C3CB8D35723514182C4F482F6F95441720D58D05623514146B4517EF6F954410D885414542351414E02CE71F6F954411CF0EF7951235141F42EE465F6F95441FD1A6FFE4E235141C1FA593EF6F9544136E66E6A492351410041706BF4F9544149725A57472351411D9DCABDF3F95441B0D322CE462351412B458D7DF3F95441C1DA1880422351410C04B4F8F0F954410BA4DDF93B235141DDBB6CCBEBF95441BCC89FA8392351413696DB28EBF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403540 - 3335992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000350000001F85EB41B00E5141000000409BE85441333333E3A70E5141713D0AC79AE8544114AE4711A00E514152B81E259AE854417B14AEA7980E5141CDCCCC1C99E854413D0AD7438C0E5141EC51B8EE96E85441B81E850B820E5141D7A370DD94E854411F85EB91780E51419A99994993E85441F6285C4F690E5141333333C391E85441C3F528EC650E5141AE47E1AA91E854417B14AE77670E51417B14AEE792E8544166666636690E5141CDCCCCCC94E85441713D0AE76C0E5141A4703D4A99E85441AE47E13A760E514148E17AC4A1E85441EC51B8BE710E5141B81E85DBA2E8544114AE4711760E51415C8FC255A9E854418FC2F578780E514114AE47F1AAE85441A4703D6A770E51419A9999F9ACE854419A999989770E514100000070AEE854415C8FC205790E51410AD7A320B1E854418FC2F5C8770E5141EC51B86EB1E85441F6285CDF770E51410AD7A380B2E85441333333137C0E514166666606C3E85441E17A14EE7E0E514133333393C3E85441000000F0900E5141333333C3C7E854419A9999E9940E514152B81EF5C7E8544152B81ED59C0E51418FC2F528C7E854419A9999799E0E5141295C8F12C6E85441B81E85AB9F0E514166666686C5E8544100000020A60E514185EB5108C8E85441D7A3706DAD0E51413D0AD753C9E8544114AE4731B00E51415C8FC245C9E8544152B81E85B30E51411F85EBF1C7E85441A4703D0AB20E5141AE47E1FAC6E854411F85EB61B60E514185EB5138C0E85441A4703DEAB40E5141A4703D8ABFE85441E17A141EB40E514148E17A24BEE854413D0AD703B50E51419A999919BBE8544100000090B60E51410AD7A340BAE85441D7A370CDB90E51413D0AD733BAE85441D7A3706DC00E51411F85EB91BCE8544152B81EF5C80E5141D7A3702DBDE85441B81E85DBCA0E5141CDCCCCECB1E8544114AE4751D20E5141EC51B86EB1E854410AD7A390D20E5141D7A3701DB0E85441B81E857BD30E51415C8FC275AAE854413D0AD743D30E5141EC51B8FEA9E854417B14AE57D40E514114AE4751A5E85441F6285C7FD40E5141295C8F22A3E85441F6285CEFD30E51411F85EB71A2E8544100000070CE0E5141000000E0A0E854415C8FC2C5C40E514152B81E659EE85441E17A14CEBD0E51418FC2F5F89CE854411F85EB41B00E5141000000409BE854410C0000008FC2F5A87B0E5141713D0A07A6E85441713D0A67800E5141713D0AE7A6E854415C8FC225820E5141D7A3704DA7E85441EC51B8FE820E514133333333A8E85441AE47E14A840E5141295C8FB2A9E8544133333363860E514148E17A74ABE8544148E17A24890E51413D0AD7D3ADE854419A999959810E514152B81E15AFE85441A4703D9A800E51419A9999C9ACE8544114AE47417F0E5141EC51B87EAAE85441F6285C8F7D0E51419A999959A8E854418FC2F5A87B0E5141713D0A07A6E85441
+</a>
+
+<b>
+0106000000010000000103000000010000004000000099F456B9C70E5141D370460CB7E85441C39D2C25CC0E514173426C49A0E854415C8FC2C5C40E514152B81E659EE85441E17A14CEBD0E51418FC2F5F89CE854411F85EB41B00E5141000000409BE854412632F9F2A70E5141DCD519C69AE85441B3CF151BA00E5141A866FD4F9AE85441DB5E6FA8980E514140CE953999E854413D0AD7438C0E5141EC51B8EE96E85441B81E850B820E5141D7A370DD94E854410A33F875780E514171A1C26C93E85441BD199D55690E5141D0993EE091E854418666AD39670E51419D58AEE891E8544190B48CFE670E5141C7A771EB92E8544148E4537A690E5141393853B194E85441ED6531506D0E51415CC7A82499E85441F69F121B760E5141DCF31152A1E854418B6A7DC2710E5141187EB646A3E854415FA48A8D760E5141661C05E6A8E8544124A88CE4780E5141711052D3AAE85441B1882211780E5141211B6EC9ACE854410C725308780E5141F2605C0FAEE854418E10FD45780E51415EB880EAB0E85441DE741986780E5141205925F0B1E85441F6285CDF770E51410AD7A380B2E85441333333137C0E514166666606C3E854412B3EFEDF7E0E5141727A7C90C3E8544149A0030D800E514135A883D1C3E85441B4B7C9D3840E5141AD3F45F2C4E854415E3FF56B8A0E514124684F3FC6E8544181D739FF900E5141356AF2C3C7E85441E00CD492940E5141DEC039EBC7E85441CDC601FE940E5141C5CFD2EFC7E8544120CE1541950E5141EB8B4FECC7E8544176E641E3960E5141CDFE33C2C7E85441286BBC2F9B0E5141541A6453C7E854414E93A7CD9C0E51419E33B629C7E8544154685F699E0E51414DDA4D1DC6E85441B81E85AB9F0E514166666686C5E85441A1C629A4A20E5141F9DBE0ADC6E85441F130DA3BA60E5141055D420DC8E8544136DA807BA90E51413FC8BDA0C8E854416E277F2FAC0E51417200751BC9E85441D7A3706DAD0E51413D0AD753C9E85441F96F45D1AF0E51414875AB47C9E8544126AA2D28B00E514152E8F045C9E85441A2166AF5B10E514151BE6191C8E8544152B81E85B30E51411F85EBF1C7E85441A4703D0AB20E5141AE47E1FAC6E85441362D3B76B30E51411D9F40C4C4E85441CF743F71B50E51414AD9F9AEC1E854411F85EB61B60E514185EB5138C0E85441A4703DEAB40E5141A4703D8ABFE85441E17A141EB40E514148E17A24BEE85441F61E27B1B40E51418741E831BCE854414B203EFFB40E51411F4E2F29BBE8544100000090B60E51410AD7A340BAE85441F3F52B73B80E514171032F39BAE8544120D9C881B90E5141F9EC0135BAE8544174B0B1B2B90E5141ECB34034BAE85441E3F29E94BC0E5141468DFC31BBE85441D7A3706DC00E51411F85EB91BCE85441B7DB289BC60E5141E69F9102BDE8544199F456B9C70E5141D370460CB7E85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403763 - 1277859
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002C000000B81E859BAF1251411F85EB31DCDA5441E17A142EB31251413D0AD763DFDA54410AD7A320BA1251411F85EB91DBDA544166666656C412514114AE4791D6DA5441C3F5280CC61251415C8FC225D3DA544185EB51A8C5125141000000D0D0DA5441D7A3707DC31251418FC2F578CDDA5441000000F0C5125141CDCCCC5CCEDA54413D0AD753C8125141CDCCCC5CCEDA5441000000F0C91251418FC2F538CEDA544185EB51E8C81251410AD7A3F0CBDA544152B81E75C5125141AE47E1FAC7DA5441D7A3706DC2125141CDCCCC6CC4DA544152B81E25BF125141AE47E12AC3DA544114AE4741BC1251413D0AD763C2DA5441B81E856BB61251410AD7A3A0C0DA5441A4703D2AB3125141EC51B8BEBFDA5441713D0AB7B3125141CDCCCCECC1DA5441295C8FC2B2125141E17A148EC2DA544185EB5128AC125141AE47E1EAC6DA544148E17AD48B12514152B81E95C6DA5441D7A3703D8312514166666636CADA5441713D0A677B125141A4703D5ACDDA5441AE47E15A74125141A4703DAACFDA5441B81E85EB7A125141C3F5289CD1DA54419A9999197D125141AE47E1DAD2DA544148E17A8479125141D7A370CDD4DA544152B81E6575125141B81E855BD6DA544166666606701251413D0AD723DEDA54418FC2F5386D1251413D0AD793E2DA5441C3F5289C6D12514114AE4711E5DA54415C8FC2A5701251413D0AD763E6DA54410AD7A350751251417B14AE77E6DA5441F6285CAF7A125141F6285C1FE3DA5441C3F5283C821251417B14AED7DEDA544185EB514886125141295C8F02E0DA5441A4703D8A88125141AE47E1EAEBDA5441F6285C7F8B1251418FC2F578EDDA5441B81E850B931251415C8FC215EDDA544185EB51E89A125141D7A3703DEDDA54413D0AD7F39E12514166666626ECDA5441A4703DCAA41251417B14AEC7E6DA544152B81E15AA125141E17A148EE0DA5441B81E859BAF1251411F85EB31DCDA54410103000000010000003B0000005C8FC205D11251419A9999293ADB544185EB5148CE12514185EB51E83BDB54410AD7A370D01251418FC2F5B843DB5441E17A14EED7125141713D0A9742DB544100000010DF1251418FC2F5E841DB5441B81E851BE5125141C3F5284C41DB544185EB51F8EB1251411F85EB0140DB5441295C8FB2EB12514148E17A343CDB544114AE4751F01251419A9999E93ADB54411F85EBA1F61251418FC2F5183ADB54411F85EBE1FC125141D7A370BD38DB5441F6285CDFFF125141E17A148E39DB5441000000D0031351417B14AE073ADB544148E17A6406135141713D0AA737DB5441A4703D3A081351415C8FC20536DB54415C8FC29509135141B81E85DB37DB544152B81EE50B135141EC51B8CE38DB54418FC2F5C810135141EC51B8CE38DB544152B81E4515135141F6285C0F38DB54419A9999D9171351417B14AEC733DB544114AE47911A13514185EB510833DB5441B81E851B2213514185EB510833DB5441AE47E1DA22135141D7A3702D37DB544185EB51182513514114AE47813ADB544114AE47E127135141D7A3704D3ADB5441666666E628135141D7A3702D37DB5441A4703D3A2C13514185EB512836DB5441713D0AF72F1351410AD7A39036DB5441CDCCCC2C34135141AE47E10A37DB5441F6285C9F361351415C8FC29537DB544114AE4711391351416666664635DB54418FC2F5A8381351411F85EBB132DB5441AE47E1FA37135141C3F528DC30DB54411F85EB3135135141F6285C3F30DB54415C8FC2E52F1351413D0AD70332DB5441666666962D135141EC51B8FE30DB544114AE4771291351418FC2F5E82FDB544185EB513828135141E17A149E2EDB5441713D0A7723135141C3F528BC2DDB544185EB51981F1351418FC2F5C82CDB5441B81E856B1D1351411F85EBE12ADB5441000000801A1351417B14AE9729DB54418FC2F5E813135141AE47E1FA28DB544152B81E750D135141D7A3701D29DB54418FC2F598061351411F85EB5129DB54413D0AD7E30013514114AE47112ADB5441AE47E1EAF31251415C8FC2A52CDB54419A999979EA1251413D0AD7E32EDB5441295C8F72E5125141AE47E1CA30DB5441E17A146EE4125141AE47E15A32DB544152B81EA5E112514152B81EA533DB5441AE47E19ADF1251413D0AD79333DB5441713D0AD7DD125141C3F528FC33DB54417B14AE87DB12514148E17AF435DB54415C8FC285D71251411F85EB3138DB54411F85EB51D71251413D0AD7D339DB5441C3F5287CD5125141AE47E1FA3ADB5441D7A370FDD3125141295C8F923ADB54415C8FC205D11251419A9999293ADB5441
+</a>
+
+<b>
+0106000000010000000103000000010000003600000002616D72B5125141B0885B66DDDA5441FE24A83AC112514171B92917D8DA54413AC7E7F5C312514170B9B43DD7DA5441367B3932C6125141A1517478D9DA5441AD9962F9C71251414EC66A86DDDA5441FB461253C8125141F6A77FA6DDDA5441E819A5E3C91251417DD20FBEDDDA54410F04C668CB12514106A4F3D4DDDA5441BCC019C7CF125141A9C9E3A4DADA54414CEF66AECE12514116A51C9AD9DA544105656EB6CC1251413E6322BBD7DA54417BCE9F14CC125141011E683AD4DA5441164C7CBEC8125141ECE2D18DCCDA5441B3A8D7DFC412514178BED9E4C7DA5441D110274BC2125141FADE36CBC4DA5441BA7EE8A2BE1251415C005A64C3DA5441DD7A2CF3B312514162C60A9CBFDA5441DD97D649B3125141BEBED634C2DA5441552625BFAB1251413C657B1CC7DA54413C343DC7A2125141B792FFD1C6DA54419E02777E9C125141A5BC53C1C6DA5441435359C69712514167C9CEB4C6DA544148E17AD48B12514152B81E95C6DA5441D7A3703D8312514166666636CADA544145A8299E7B125141945A7B3FCDDA5441B1892DAE741251411923EBC2CFDA5441C7FD5D0B70125141BED4C4EED0DA5441E7FD22456D1251411DCE35A2D1DA54414F849C3E6B1251417E7C3725D2DA5441618437CD68125141BF63598ED2DA5441B7AAE4DE61125141A98C729BD3DA544169DAF8F163125141A022BBA2D5DA5441565E536D64125141F9D1B9B5D5DA54416B7030F36B125141B98B9D1BD6DA5441E013687E6C125141C6D8EFA9D8DA54418BCB29F96D12514137EB179EDFDA544139F25D60701251415269DBEAE5DA5441D99A387F721251413954AC91E8DA5441804C73D173125141864FBE24EADA5441D44B55EE78125141B3278D7CEDDA5441321EBF8D821251416FF8D5F4EDDA5441E7CE9BBF8A125141D5743154EEDA544153BC72878B125141A6D0726EEEDA5441B6B04C98921251412CBBBB84EFDA5441B6C61262981251413FD2B268F0DA54414AC8BFFF9A1251412D0D82CBF0DA5441158CA881A0125141BEE8EA2EF1DA544141945346A4125141E1139E39ECDA544147A9F890A7125141C211F1E8E7DA54413CCF66CFAA12514187A69B0AE4DA54411D711D96AD12514141A70BDFE0DA544124A0D39BAF125141A0B0A4FADFDA5441E358E2AEB31251414B8C782EDEDA544102616D72B5125141B0885B66DDDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403763 - 3291502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002C000000B81E859BAF1251411F85EB31DCDA5441E17A142EB31251413D0AD763DFDA54410AD7A320BA1251411F85EB91DBDA544166666656C412514114AE4791D6DA5441C3F5280CC61251415C8FC225D3DA544185EB51A8C5125141000000D0D0DA5441D7A3707DC31251418FC2F578CDDA5441000000F0C5125141CDCCCC5CCEDA54413D0AD753C8125141CDCCCC5CCEDA5441000000F0C91251418FC2F538CEDA544185EB51E8C81251410AD7A3F0CBDA544152B81E75C5125141AE47E1FAC7DA5441D7A3706DC2125141CDCCCC6CC4DA544152B81E25BF125141AE47E12AC3DA544114AE4741BC1251413D0AD763C2DA5441B81E856BB61251410AD7A3A0C0DA5441A4703D2AB3125141EC51B8BEBFDA5441713D0AB7B3125141CDCCCCECC1DA5441295C8FC2B2125141E17A148EC2DA544185EB5128AC125141AE47E1EAC6DA544148E17AD48B12514152B81E95C6DA5441D7A3703D8312514166666636CADA5441713D0A677B125141A4703D5ACDDA5441AE47E15A74125141A4703DAACFDA5441B81E85EB7A125141C3F5289CD1DA54419A9999197D125141AE47E1DAD2DA544148E17A8479125141D7A370CDD4DA544152B81E6575125141B81E855BD6DA544166666606701251413D0AD723DEDA54418FC2F5386D1251413D0AD793E2DA5441C3F5289C6D12514114AE4711E5DA54415C8FC2A5701251413D0AD763E6DA54410AD7A350751251417B14AE77E6DA5441F6285CAF7A125141F6285C1FE3DA5441C3F5283C821251417B14AED7DEDA544185EB514886125141295C8F02E0DA5441A4703D8A88125141AE47E1EAEBDA5441F6285C7F8B1251418FC2F578EDDA5441B81E850B931251415C8FC215EDDA544185EB51E89A125141D7A3703DEDDA54413D0AD7F39E12514166666626ECDA5441A4703DCAA41251417B14AEC7E6DA544152B81E15AA125141E17A148EE0DA5441B81E859BAF1251411F85EB31DCDA54410103000000010000003B0000005C8FC205D11251419A9999293ADB544185EB5148CE12514185EB51E83BDB54410AD7A370D01251418FC2F5B843DB5441E17A14EED7125141713D0A9742DB544100000010DF1251418FC2F5E841DB5441B81E851BE5125141C3F5284C41DB544185EB51F8EB1251411F85EB0140DB5441295C8FB2EB12514148E17A343CDB544114AE4751F01251419A9999E93ADB54411F85EBA1F61251418FC2F5183ADB54411F85EBE1FC125141D7A370BD38DB5441F6285CDFFF125141E17A148E39DB5441000000D0031351417B14AE073ADB544148E17A6406135141713D0AA737DB5441A4703D3A081351415C8FC20536DB54415C8FC29509135141B81E85DB37DB544152B81EE50B135141EC51B8CE38DB54418FC2F5C810135141EC51B8CE38DB544152B81E4515135141F6285C0F38DB54419A9999D9171351417B14AEC733DB544114AE47911A13514185EB510833DB5441B81E851B2213514185EB510833DB5441AE47E1DA22135141D7A3702D37DB544185EB51182513514114AE47813ADB544114AE47E127135141D7A3704D3ADB5441666666E628135141D7A3702D37DB5441A4703D3A2C13514185EB512836DB5441713D0AF72F1351410AD7A39036DB5441CDCCCC2C34135141AE47E10A37DB5441F6285C9F361351415C8FC29537DB544114AE4711391351416666664635DB54418FC2F5A8381351411F85EBB132DB5441AE47E1FA37135141C3F528DC30DB54411F85EB3135135141F6285C3F30DB54415C8FC2E52F1351413D0AD70332DB5441666666962D135141EC51B8FE30DB544114AE4771291351418FC2F5E82FDB544185EB513828135141E17A149E2EDB5441713D0A7723135141C3F528BC2DDB544185EB51981F1351418FC2F5C82CDB5441B81E856B1D1351411F85EBE12ADB5441000000801A1351417B14AE9729DB54418FC2F5E813135141AE47E1FA28DB544152B81E750D135141D7A3701D29DB54418FC2F598061351411F85EB5129DB54413D0AD7E30013514114AE47112ADB5441AE47E1EAF31251415C8FC2A52CDB54419A999979EA1251413D0AD7E32EDB5441295C8F72E5125141AE47E1CA30DB5441E17A146EE4125141AE47E15A32DB544152B81EA5E112514152B81EA533DB5441AE47E19ADF1251413D0AD79333DB5441713D0AD7DD125141C3F528FC33DB54417B14AE87DB12514148E17AF435DB54415C8FC285D71251411F85EB3138DB54411F85EB51D71251413D0AD7D339DB5441C3F5287CD5125141AE47E1FA3ADB5441D7A370FDD3125141295C8F923ADB54415C8FC205D11251419A9999293ADB5441
+</a>
+
+<b>
+0106000000010000000103000000010000003600000002616D72B5125141B0885B66DDDA5441FE24A83AC112514171B92917D8DA54413AC7E7F5C312514170B9B43DD7DA5441367B3932C6125141A1517478D9DA5441AD9962F9C71251414EC66A86DDDA5441FB461253C8125141F6A77FA6DDDA5441E819A5E3C91251417DD20FBEDDDA54410F04C668CB12514106A4F3D4DDDA5441BCC019C7CF125141A9C9E3A4DADA54414CEF66AECE12514116A51C9AD9DA544105656EB6CC1251413E6322BBD7DA54417BCE9F14CC125141011E683AD4DA5441164C7CBEC8125141ECE2D18DCCDA5441B3A8D7DFC412514178BED9E4C7DA5441D110274BC2125141FADE36CBC4DA5441BA7EE8A2BE1251415C005A64C3DA5441DD7A2CF3B312514162C60A9CBFDA5441DD97D649B3125141BEBED634C2DA5441552625BFAB1251413C657B1CC7DA54413C343DC7A2125141B792FFD1C6DA54419E02777E9C125141A5BC53C1C6DA5441435359C69712514167C9CEB4C6DA544148E17AD48B12514152B81E95C6DA5441D7A3703D8312514166666636CADA544145A8299E7B125141945A7B3FCDDA5441B1892DAE741251411923EBC2CFDA5441C7FD5D0B70125141BED4C4EED0DA5441E7FD22456D1251411DCE35A2D1DA54414F849C3E6B1251417E7C3725D2DA5441618437CD68125141BF63598ED2DA5441B7AAE4DE61125141A98C729BD3DA544169DAF8F163125141A022BBA2D5DA5441565E536D64125141F9D1B9B5D5DA54416B7030F36B125141B98B9D1BD6DA5441E013687E6C125141C6D8EFA9D8DA54418BCB29F96D12514137EB179EDFDA544139F25D60701251415269DBEAE5DA5441D99A387F721251413954AC91E8DA5441804C73D173125141864FBE24EADA5441D44B55EE78125141B3278D7CEDDA5441321EBF8D821251416FF8D5F4EDDA5441E7CE9BBF8A125141D5743154EEDA544153BC72878B125141A6D0726EEEDA5441B6B04C98921251412CBBBB84EFDA5441B6C61262981251413FD2B268F0DA54414AC8BFFF9A1251412D0D82CBF0DA5441158CA881A0125141BEE8EA2EF1DA544141945346A4125141E1139E39ECDA544147A9F890A7125141C211F1E8E7DA54413CCF66CFAA12514187A69B0AE4DA54411D711D96AD12514141A70BDFE0DA544124A0D39BAF125141A0B0A4FADFDA5441E358E2AEB31251414B8C782EDEDA544102616D72B5125141B0885B66DDDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>404073 - 54306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A14AEAE225141666666D6EDFA54419A999949AB2251410AD7A3E0E9FA5441E17A148EA722514185EB51A8E3FA5441295C8FD2A3225141713D0AC7DDFA54411F85EBE1A0225141000000B0D8FA54415C8FC2959C2251415C8FC285D5FA54410000001098225141295C8F42D3FA54410AD7A380912251419A999939D1FA54415C8FC29589225141D7A3704DCFFA5441AE47E17A83225141D7A370EDCCFA54419A9999297E2251417B14AE57CBFA5441D7A3701D7C225141295C8F12CBFA54418FC2F5987B225141713D0AD7D0FA5441E17A147E7B225141666666F6D4FA5441295C8F927B225141D7A370ADD9FA544148E17A247C22514148E17A94DDFA5441CDCCCC5C7D225141CDCCCC0CE2FA54419A9999498022514185EB51D8E6FA54417B14AE17832251419A9999C9EAFA54418FC2F56885225141CDCCCCDCECFA54410AD7A3008A225141B81E858BEFFA54415C8FC2858C22514152B81E55F1FA54410AD7A3D08F225141E17A140EF9FA5441C3F5282C92225141B81E850B00FB544100000030932251413333330303FB54413D0AD783932251419A9999B904FB54411F85EBA1932251413D0AD76307FB54419A99994994225141713D0A9709FB544114AE473196225141AE47E14A0DFB54418FC2F598992251413333339312FB54418FC2F5E89C2251413D0AD76318FB5441EC51B84EA12251417B14AE3720FB5441666666E6A4225141D7A3703D23FB54413D0AD7F3AB225141D7A370AD23FB5441713D0A47AE22514114AE47C124FB5441713D0A77B122514185EB517824FB54419A999989B72251411F85EBD120FB5441D7A3704DBA22514114AE476122FB54411F85EB91BB2251418FC2F54823FB544185EB51B8BB225141E17A146E23FB54417B14AEC7BC2251411F85EB7124FB544114AE47D1BF22514152B81E1528FB5441C3F528CCC1225141295C8FE226FB544148E17A14C2225141D7A370AD25FB54411F85EBF1C02251416666665623FB5441295C8F92C0225141E17A144E21FB544185EB51E8C0225141D7A3708D20FB5441D7A3708DC6225141E17A148E17FB54419A999979C7225141B81E851B0FFB5441CDCCCC4CC32251419A9999F909FB544148E17A14B7225141CDCCCCBCFAFA5441E17A14BEB1225141D7A3704DF2FA5441E17A14AEAE225141666666D6EDFA5441
+</a>
+
+<b>
+01060000000100000001030000000100000085000000224CE57B7C225141A304041FCBFA54413E044E1C7C2251414A56361FCBFA5441119592197C225141447BA93DCBFA54416B02B9067C2251412024BE0FCCFA544180A031017C225141FB795C4DCCFA5441998869D17B2251414A45E261CEFA54415B6AD3CB7B22514165D524A0CEFA5441480C11977B22514102F56021D1FA54417FBA87807B225141CD6D3396D4FA544189F274887B22514196F2FB59D7FA544158D6C8947B225141AA8FABBCD9FA544104CA70AD7B225141BF487A65DAFA5441A0BEF8227C2251412235278ADDFA54419881354F7D22514150E500DBE1FA5441B69154857D22514188F73D4FE2FA54418AC17E897E2251416C03BCF9E3FA5441C91954F17F225141F2789D47E6FA5441116D84128322514130FB57C2EAFA5441901A594685225141834FCFBDECFA54417CCF7FC389225141E7B2CE67EFFA54410AD7A3008A225141B81E858BEFFA5441E87D96058A2251419B96078FEFFA5441E3D562828C225141EB0EBA52F1FA54415C8FC2858C22514152B81E55F1FA54416B63973E8D225141217FA306F3FA5441BC1F83988D2251412FE08BD9F3FA5441555C00478E225141FCC5CE72F5FA54412E2CE1008F225141C219C826F7FA5441068BFE508F2251418E76B0E2F7FA54410AD7A3D08F225141E17A140EF9FA5441D6988D89912251419DC46329FEFA544103F63FED9122514166B6FD50FFFA5441C3F5282C92225141B81E850B00FB544100000030932251413333330303FB544185BA8F4093225141EDC5CC5903FB5441ED7B27679322514110179A2304FB54413D0AD783932251419A9999B904FB5441D60F1A8F9322514149FD06B905FB544170EADAAE932251410949498F07FB54415CB2C53F94225141B8E0077609FB54415A6FBA919522514191B4C7140CFB544136A2E3D396225141F0AD26470EFB54414D85C8F797225141057FFE0B10FB54418FC2F598992251413333339312FB5441C7088AC399225141B152F2DD12FB54418FC2F5E89C2251413D0AD76318FB5441EC51B84EA12251417B14AE3720FB5441372114E8A4225141554C8B3D23FB54413D0AD7F3AB225141D7A370AD23FB54413DD6F232AE2251414E04F8B724FB5441E7756682AF2251410A4515A524FB54418DF98C59B02251413F9AD89124FB544152EF4F06B12251412631668224FB5441F0C3AF50B1225141A1CEBF7B24FB5441F76ABE87B42251411363A8A022FB54419A999989B72251411F85EBD120FB54413A315AAFB82251413257A77721FB54416D48EA1CB922514103F177B521FB5441D7A3704DBA22514114AE476122FB54411F85EB91BB2251418FC2F54823FB5441530B8FAABB2251418F08C76023FB54412E3C10B1BC2251416B78435C24FB54417B14AEC7BC2251411F85EB7124FB54410AC71930BE2251417EEF882126FB544155FA95D4BF22514179E11E1328FB5441026C9DD1C122514189693ECB26FB5441872D31DBC12251416AC84EA226FB5441D7A4F9DDC12251419C76699626FB5441F398C605C2225141A1EA1F8F25FB54410CBCE03FC1225141A9AB1FF723FB54411F85EBF1C02251416666665623FB5441819A30F0C022514167AEF54C23FB5441A1E232A9C0225141470B9BC921FB5441DA6F419DC0225141EE74708821FB5441295C8F92C0225141E17A144E21FB544185EB51E8C0225141D7A3708D20FB5441C9F17C3EC222514166F20F6C1EFB5441ABEB7B3AC32251418DA668DA1CFB54414A8A24EEC4225141567A04241AFB5441CEC1ADB4C522514124C192E718FB54411C8BDCCCC5225141F95407C118FB54412F9FD41CC6225141A91F914118FB544163B6E484C6225141D6CAB39B17FB5441A168B5C5C6225141BD65D18A15FB544110D31E06C7225141CBD2FC3C13FB544179FB1634C722514147AA099811FB5441AC34FB6FC72251413BFFB10F0FFB5441CDCCCC4CC32251419A9999F909FB5441EFBFBC9BBB2251417C6D506200FB544148E17A14B7225141CDCCCCBCFAFA5441005E0C70B622514114ABF1B8F9FA5441EEB724FDB42251417FEECA6EF7FA5441883C11AFB4225141212868F3F6FA5441A064D24AB32251413C156CC0F4FA5441FABC11B2B022514198FAB0C6F0FA544105CA67DFAE2251415780501EEEFA5441EE169556AD2251412D1C7145ECFA54411E4857F9AB2251411E6EC7ADEAFA5441641A7959AB225141C8162BF3E9FA54419A999949AB2251410AD7A3E0E9FA5441AB62A7BFAA22514139B3C2FAE8FA5441C09731A4A722514113D82BCDE3FA54412938F5DFA522514103F7B902E1FA5441CFF7AE76A522514198D7E15CE0FA5441217AA0F4A4225141AD4FFF8FDFFA54417FF53164A4225141887177ACDEFA5441295C8FD2A3225141713D0AC7DDFA54413BB11197A1225141EB419FE9D9FA5441D1A5941AA12251417C9E1812D9FA54411CFDBD49A022514198C3EC3FD8FA5441E07BDBC29D225141BBB58263D6FA5441726B135C9C22514185E8E668D5FA5441B1BF51979B2251419F267806D5FA5441764181609A22514173E9F96AD4FA5441F62EFAA599225141772DA90DD4FA5441F77081D6972251413477B930D3FA54417D699343962251415FF1BAB3D2FA54419BD8BCEB95225141F74E7B98D2FA544166A5A00F94225141D031C904D2FA544122693B659122514117E5F132D1FA5441DA5B676A8E2251412CB2B779D0FA54411134B23C8D225141993C7530D0FA54412345FA358B2251417E2881B2CFFA5441C564D1E78A22514102AC869FCFFA54415C8FC29589225141D7A3704DCFFA54410EB29C618722514135DEF871CEFA544194757C6D85225141D61369AFCDFA5441ABC08A1784225141E5AF622ACDFA5441E8E6154D8222514168C07B93CCFA54410388DD9E8022514194233F13CCFA544136CDB85B7F225141182EEDB2CBFA5441BD51A6447E225141D125BE5FCBFA5441224CE57B7C225141A304041FCBFA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>404310 - 2917974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004200000052B81E75272C5141D7A3708DECE85441D7A3701D282C5141A4703D0AEEE85441CDCCCCBC292C514133333313F0E854411F85EBD12C2C514148E17A84F2E8544148E17AB42C2C51410AD7A3C0F3E854418FC2F5A82E2C51415C8FC2C5F6E854410AD7A360302C514152B81E25F9E854418FC2F5F8312C51410AD7A350FBE85441CDCCCC4C332C514114AE4741FDE854417B14AEC7342C514133333373FFE854419A999959362C51419A9999B901E9544133333313382C5141295C8F1204E95441EC51B8EE392C5141C3F5286C06E95441CDCCCC0C3C2C5141295C8FC208E95441D7A3706D3E2C5141333333E30AE954417B14AE37412C51415C8FC2550DE954410AD7A340442C51417B14AEF70FE954419A9999F9472C5141CDCCCC2C13E9544152B81EF54B2C5141D7A3702D16E95441713D0A774F2C5141666666A618E9544152B81EE54F2C51410000003018E95441EC51B8FE502C5141295C8FE218E9544148E17A04522C5141A4703D2A17E9544148E17A14532C5141AE47E1FA14E95441A4703D9A532C51410AD7A31013E95441713D0A17512C5141F6285CFF11E95441C3F528DC4F2C51410000005011E95441E17A142E4E2C51411F85EB2110E954413D0AD7334C2C51411F85EBB10EE9544185EB51284A2C5141C3F5283C0DE95441713D0A47482C51417B14AEE70BE95441713D0A77462C51410AD7A3900AE9544166666676442C5141713D0AF708E95441EC51B87E422C51418FC2F55807E95441D7A3708D402C5141713D0A5705E95441A4703DDA3E2C5141295C8F8203E95441EC51B89E3C2C5141000000E000E95441CDCCCCDC3A2C5141000000A0FEE85441E17A146E392C514114AE47C1FCE854415C8FC265372C5141F6285C3FFAE854419A999909352C5141F6285C7FF7E8544185EB51E8302C5141CDCCCC8CF1E854413D0AD7632F2C51417B14AE97EFE85441E17A142E2D2C514152B81EB5F0E854418FC2F5782C2C514133333373EEE85441B81E852B2C2C5141A4703D3AE9E85441000000002C2C5141B81E85CBE5E854417B14AED72B2C5141CDCCCC9CE3E854411F85EBE12B2C5141000000D0E1E85441F6285CBF2C2C514114AE4751D8E85441C3F528DC2C2C5141A4703D6AD5E85441295C8FF22C2C514114AE47E1D3E854417B14AEF72C2C51418FC2F558D2E85441666666262C2C5141C3F5280CD1E85441AE47E19A2A2C5141CDCCCCBCCFE854410AD7A310262C5141EC51B86ECFE8544114AE4771242C514166666696D0E85441E17A145E242C514148E17AD4D4E85441EC51B84E242C5141295C8FA2D8E854411F85EB41242C51415C8FC2C5DAE8544148E17AE4242C514152B81E15DCE8544185EB5118252C51418FC2F538DEE854415C8FC225252C5141E17A14BEE1E85441CDCCCC4C252C5141295C8F72E4E854418FC2F578262C51418FC2F528EAE8544152B81E75272C5141D7A3708DECE85441
+</a>
+
+<b>
+0106000000010000000103000000010000008E000000333333D32C2C5141CDCCCCDCCEE85441652946E52C2C51414EBED5D4D0E854414184F6F62C2C51419EF7D649D2E85441C3DB4CFA2C2C5141FF88C957D2E85441C3DB4CFA2C2C5141AA0017F1D2E85441ECE593F82C2C5141CF963985D3E8544140FA21F52C2C5141BAD703D1D3E85441680469F32C2C5141F32E6C44D4E854413737CCEA2C2C514138D3F52CD5E85441DE5FE8E32C2C5141C93CDC71D5E854415A7EBDDE2C2C51410E1AF0F9D5E8544150BB67D42C2C5141056D41F0D6E8544146F811CA2C2C51418A6413F6D7E854416F0259C82C2C5141C5B96B3ED8E85441693F03BE2C2C5141E5C7D292D8E85441607CADB32C2C5141BE4757FFD8E854414833AC942C2C5141EAF11069DAE854412EEAAA752C2C51418EF53998DBE85441AA0880702C2C51411C5F20DDDBE854414F319C692C2C5141F4193F14DCE854413AABF0542C2C5141FB2DD6E9DCE8544132E89A4A2C2C5141E833066BDDE85441C28A0B2F2C2C51417F76E9BADEE854419A7EB4052C2C51416459369DE0E8544169B117FD2B2C5141C9B8D5E3E0E854410117DEEB2B2C5141A1FFCFB0E1E854417D35B3E62B2C5141DC5428F9E1E854411A13BDDE2B2C5141C1A5F92AE3E85441452B8ADC2B2C51416C05B896E3E854411A13BDDE2B2C5141AFF117C7E3E85441D10C97ED2B2C514196B90973E4E85441BA88FB032C2C51414F7E7881E5E854413E6A26092C2C51415ACB99F6E5E85441EC55980C2C2C51415C90FF2BE6E854414CF0D11D2C2C5141009848B1E7E854412BA9E0292C2C514117328B9BE8E854416DFC28472C2C5141FD9C93BDEAE85441DDAB83802C2C5141ECF24D8BEEE854410228B5B22C2C5141BA3F762BEFE85441E17A142E2D2C514152B81EB5F0E854411D30D79E2D2C514159BF3A7CF0E854419A49CC612F2C514155D2B598EFE8544142727A01312C514132A007B1F1E85441F5CB545A332C514139394D12F5E854418B52C47C342C51414BD28CB4F6E85441BB6FE90D352C5141F6686284F7E85441EAE899FA352C5141E10B3098F8E854410FF2957A372C5141BC800D59FAE85441E39BF7F1382C5141276A2928FCE85441218500133D2C514137DD536401E95441639E033F422C51411D561F1707E95441569F98A8422C51412105637B07E9544106F76844432C5141B0987BFB07E95441224768B0432C514177B5445408E954414AD5396D442C514120767FEF08E95441A6728344452C51414094B99B09E95441EF04F609462C51414F5A7C390AE9544168BECBB9462C51417449FEC10AE9544157AE0B87472C51413390BC590BE95441E2F33AFF472C5141202097B20BE954411A0FA3E5482C5141F4FFE0570CE9544168764EF8492C51415C68311A0DE9544111A797F34A2C5141D49748CD0DE95441D90CAEC14D2C51410EF51ED30FE95441627C7D37502C5141B0DCDC8211E9544152280F15512C5141A3C241FE11E95441A4703D9A532C51410AD7A31013E95441B87B14C7532C5141C138BA5311E95441998784D4532C514109A639E80CE9544140892CD0532C5141EEA839A70BE95441E8391C8E512C514148DC27BD09E95441CB31D52D4F2C5141E1C9B4ED07E95441CA02C31F4C2C5141CE19305806E95441D12B73DC492C5141E09AA2DF04E95441B5232C7C472C514117F549B902E95441981BE51B452C51418CB1DFCC00E95441AA9C57A3432C514154D0631AFFE85441BB1DCA2A422C51411DEFE767FDE854410B2F3DDA412C51412F90FB06FCE8544145F0FF58402C514134FE3596FAE85441C631717B3F2C51413BC11FC2F9E8544152B81E553F2C5141D7A3709DF9E8544148E17A14422C5141A4703DCAF4E85441D7A370ED432C5141CDCCCCECF0E85441410E88D3492C5141076B54C9F2E8544148450E564D2C51412B6987E7F3E854418FC2F5F8502C514114AE4711F5E854419C9F8953522C5141C963BAA5F5E85441027815F7532C514140376E59F6E8544152B81E55552C5141F6285CEFF6E85441CF5463D5552C5141DB77DEB6F4E854410DE1985D562C514121B02E5BF2E8544148E17AC4562C514133333393F0E854414C9F65DA562C514109596F5DF0E85441E24AAA66572C514128E45605EFE85441BBB28F1F582C51416221C43FEDE85441AE47E12A592C5141000000B0EAE85441A53B9D29592C5141F7089265EAE8544148E17A24592C51417B14AE37E9E854417B77770D592C51414D3F915EE8E854413D0AD7F3582C5141CDCCCC6CE7E85441C3B4B390582C51413D3CD33BE7E8544120C3D575522C5141330010DFE5E85441B058A0DB4F2C51417D0A3C4EE5E85441EE33BA3C4C2C514198E370A0E4E85441BE7BEE46482C51413B29C09BE3E85441B1A17CAE472C51416472CBCCE2E85441CAD74A5C452C51416ED08941E2E854413D0AD793442C5141295C8F12E2E85441AE47E15A462C5141295C8F72DBE854418289669A442C5141DDF8C71ADAE854411F526305432C51413A5052E4D8E854411F85EBA1412C51413D0AD7D3D7E854411229D513412C5141DA6B0951DBE85441045AFADD402C51414A8E4786DCE85441D5C44A4E402C514168F758BFDFE8544183F50112402C51413603DC1AE1E854410CA96821402C514144818266E4E85441E7777104402C5141227F9D57E7E85441027BB36E3F2C5141AE3F6EF2E9E85441CEBBB7BE3F2C514145AC5301EDE85441F6285CFF3F2C51415C8FC215EFE85441B4B2F7B43D2C5141A649C40DF4E854416A155CB83C2C5141A36F1634F6E8544110457D253B2C51411429C9E7F3E85441641BFEDE3A2C51416EB2FC80F3E85441666666A63A2C5141295C8F12F3E8544134B254473A2C5141B11FBB51F3E85441FF4ADBE2382C51413AC65B90F4E854417E07DA18382C51413C93A85AF4E85441189DA47E352C5141A8F77BA3F1E854413376D9D0342C5141260CD481F0E8544145F74B58332C51419318E5FFECE8544145F74B58332C51411A56ED9AE9E85441BD8A31AF332C51414ED94431E5E8544190308AD5352C5141E083B450D3E854413E8F57EE352C5141AE06D11CD2E854413DB3075D342C5141C8112581D1E854413DE30CBE332C514180BEA943D1E85441F7D39AFC302C51411E106E65D0E854416DB83ABF2F2C514100F70401D0E85441333333D32C2C5141CDCCCCDCCEE85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>404310 - 3210588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004200000052B81E75272C5141D7A3708DECE85441D7A3701D282C5141A4703D0AEEE85441CDCCCCBC292C514133333313F0E854411F85EBD12C2C514148E17A84F2E8544148E17AB42C2C51410AD7A3C0F3E854418FC2F5A82E2C51415C8FC2C5F6E854410AD7A360302C514152B81E25F9E854418FC2F5F8312C51410AD7A350FBE85441CDCCCC4C332C514114AE4741FDE854417B14AEC7342C514133333373FFE854419A999959362C51419A9999B901E9544133333313382C5141295C8F1204E95441EC51B8EE392C5141C3F5286C06E95441CDCCCC0C3C2C5141295C8FC208E95441D7A3706D3E2C5141333333E30AE954417B14AE37412C51415C8FC2550DE954410AD7A340442C51417B14AEF70FE954419A9999F9472C5141CDCCCC2C13E9544152B81EF54B2C5141D7A3702D16E95441713D0A774F2C5141666666A618E9544152B81EE54F2C51410000003018E95441EC51B8FE502C5141295C8FE218E9544148E17A04522C5141A4703D2A17E9544148E17A14532C5141AE47E1FA14E95441A4703D9A532C51410AD7A31013E95441713D0A17512C5141F6285CFF11E95441C3F528DC4F2C51410000005011E95441E17A142E4E2C51411F85EB2110E954413D0AD7334C2C51411F85EBB10EE9544185EB51284A2C5141C3F5283C0DE95441713D0A47482C51417B14AEE70BE95441713D0A77462C51410AD7A3900AE9544166666676442C5141713D0AF708E95441EC51B87E422C51418FC2F55807E95441D7A3708D402C5141713D0A5705E95441A4703DDA3E2C5141295C8F8203E95441EC51B89E3C2C5141000000E000E95441CDCCCCDC3A2C5141000000A0FEE85441E17A146E392C514114AE47C1FCE854415C8FC265372C5141F6285C3FFAE854419A999909352C5141F6285C7FF7E8544185EB51E8302C5141CDCCCC8CF1E854413D0AD7632F2C51417B14AE97EFE85441E17A142E2D2C514152B81EB5F0E854418FC2F5782C2C514133333373EEE85441B81E852B2C2C5141A4703D3AE9E85441000000002C2C5141B81E85CBE5E854417B14AED72B2C5141CDCCCC9CE3E854411F85EBE12B2C5141000000D0E1E85441F6285CBF2C2C514114AE4751D8E85441C3F528DC2C2C5141A4703D6AD5E85441295C8FF22C2C514114AE47E1D3E854417B14AEF72C2C51418FC2F558D2E85441666666262C2C5141C3F5280CD1E85441AE47E19A2A2C5141CDCCCCBCCFE854410AD7A310262C5141EC51B86ECFE8544114AE4771242C514166666696D0E85441E17A145E242C514148E17AD4D4E85441EC51B84E242C5141295C8FA2D8E854411F85EB41242C51415C8FC2C5DAE8544148E17AE4242C514152B81E15DCE8544185EB5118252C51418FC2F538DEE854415C8FC225252C5141E17A14BEE1E85441CDCCCC4C252C5141295C8F72E4E854418FC2F578262C51418FC2F528EAE8544152B81E75272C5141D7A3708DECE85441
+</a>
+
+<b>
+0106000000010000000103000000010000008E000000333333D32C2C5141CDCCCCDCCEE85441652946E52C2C51414EBED5D4D0E854414184F6F62C2C51419EF7D649D2E85441C3DB4CFA2C2C5141FF88C957D2E85441C3DB4CFA2C2C5141AA0017F1D2E85441ECE593F82C2C5141CF963985D3E8544140FA21F52C2C5141BAD703D1D3E85441680469F32C2C5141F32E6C44D4E854413737CCEA2C2C514138D3F52CD5E85441DE5FE8E32C2C5141C93CDC71D5E854415A7EBDDE2C2C51410E1AF0F9D5E8544150BB67D42C2C5141056D41F0D6E8544146F811CA2C2C51418A6413F6D7E854416F0259C82C2C5141C5B96B3ED8E85441693F03BE2C2C5141E5C7D292D8E85441607CADB32C2C5141BE4757FFD8E854414833AC942C2C5141EAF11069DAE854412EEAAA752C2C51418EF53998DBE85441AA0880702C2C51411C5F20DDDBE854414F319C692C2C5141F4193F14DCE854413AABF0542C2C5141FB2DD6E9DCE8544132E89A4A2C2C5141E833066BDDE85441C28A0B2F2C2C51417F76E9BADEE854419A7EB4052C2C51416459369DE0E8544169B117FD2B2C5141C9B8D5E3E0E854410117DEEB2B2C5141A1FFCFB0E1E854417D35B3E62B2C5141DC5428F9E1E854411A13BDDE2B2C5141C1A5F92AE3E85441452B8ADC2B2C51416C05B896E3E854411A13BDDE2B2C5141AFF117C7E3E85441D10C97ED2B2C514196B90973E4E85441BA88FB032C2C51414F7E7881E5E854413E6A26092C2C51415ACB99F6E5E85441EC55980C2C2C51415C90FF2BE6E854414CF0D11D2C2C5141009848B1E7E854412BA9E0292C2C514117328B9BE8E854416DFC28472C2C5141FD9C93BDEAE85441DDAB83802C2C5141ECF24D8BEEE854410228B5B22C2C5141BA3F762BEFE85441E17A142E2D2C514152B81EB5F0E854411D30D79E2D2C514159BF3A7CF0E854419A49CC612F2C514155D2B598EFE8544142727A01312C514132A007B1F1E85441F5CB545A332C514139394D12F5E854418B52C47C342C51414BD28CB4F6E85441BB6FE90D352C5141F6686284F7E85441EAE899FA352C5141E10B3098F8E854410FF2957A372C5141BC800D59FAE85441E39BF7F1382C5141276A2928FCE85441218500133D2C514137DD536401E95441639E033F422C51411D561F1707E95441569F98A8422C51412105637B07E9544106F76844432C5141B0987BFB07E95441224768B0432C514177B5445408E954414AD5396D442C514120767FEF08E95441A6728344452C51414094B99B09E95441EF04F609462C51414F5A7C390AE9544168BECBB9462C51417449FEC10AE9544157AE0B87472C51413390BC590BE95441E2F33AFF472C5141202097B20BE954411A0FA3E5482C5141F4FFE0570CE9544168764EF8492C51415C68311A0DE9544111A797F34A2C5141D49748CD0DE95441D90CAEC14D2C51410EF51ED30FE95441627C7D37502C5141B0DCDC8211E9544152280F15512C5141A3C241FE11E95441A4703D9A532C51410AD7A31013E95441B87B14C7532C5141C138BA5311E95441998784D4532C514109A639E80CE9544140892CD0532C5141EEA839A70BE95441E8391C8E512C514148DC27BD09E95441CB31D52D4F2C5141E1C9B4ED07E95441CA02C31F4C2C5141CE19305806E95441D12B73DC492C5141E09AA2DF04E95441B5232C7C472C514117F549B902E95441981BE51B452C51418CB1DFCC00E95441AA9C57A3432C514154D0631AFFE85441BB1DCA2A422C51411DEFE767FDE854410B2F3DDA412C51412F90FB06FCE8544145F0FF58402C514134FE3596FAE85441C631717B3F2C51413BC11FC2F9E8544152B81E553F2C5141D7A3709DF9E8544148E17A14422C5141A4703DCAF4E85441D7A370ED432C5141CDCCCCECF0E85441410E88D3492C5141076B54C9F2E8544148450E564D2C51412B6987E7F3E854418FC2F5F8502C514114AE4711F5E854419C9F8953522C5141C963BAA5F5E85441027815F7532C514140376E59F6E8544152B81E55552C5141F6285CEFF6E85441CF5463D5552C5141DB77DEB6F4E854410DE1985D562C514121B02E5BF2E8544148E17AC4562C514133333393F0E854414C9F65DA562C514109596F5DF0E85441E24AAA66572C514128E45605EFE85441BBB28F1F582C51416221C43FEDE85441AE47E12A592C5141000000B0EAE85441A53B9D29592C5141F7089265EAE8544148E17A24592C51417B14AE37E9E854417B77770D592C51414D3F915EE8E854413D0AD7F3582C5141CDCCCC6CE7E85441C3B4B390582C51413D3CD33BE7E8544120C3D575522C5141330010DFE5E85441B058A0DB4F2C51417D0A3C4EE5E85441EE33BA3C4C2C514198E370A0E4E85441BE7BEE46482C51413B29C09BE3E85441B1A17CAE472C51416472CBCCE2E85441CAD74A5C452C51416ED08941E2E854413D0AD793442C5141295C8F12E2E85441AE47E15A462C5141295C8F72DBE854418289669A442C5141DDF8C71ADAE854411F526305432C51413A5052E4D8E854411F85EBA1412C51413D0AD7D3D7E854411229D513412C5141DA6B0951DBE85441045AFADD402C51414A8E4786DCE85441D5C44A4E402C514168F758BFDFE8544183F50112402C51413603DC1AE1E854410CA96821402C514144818266E4E85441E7777104402C5141227F9D57E7E85441027BB36E3F2C5141AE3F6EF2E9E85441CEBBB7BE3F2C514145AC5301EDE85441F6285CFF3F2C51415C8FC215EFE85441B4B2F7B43D2C5141A649C40DF4E854416A155CB83C2C5141A36F1634F6E8544110457D253B2C51411429C9E7F3E85441641BFEDE3A2C51416EB2FC80F3E85441666666A63A2C5141295C8F12F3E8544134B254473A2C5141B11FBB51F3E85441FF4ADBE2382C51413AC65B90F4E854417E07DA18382C51413C93A85AF4E85441189DA47E352C5141A8F77BA3F1E854413376D9D0342C5141260CD481F0E8544145F74B58332C51419318E5FFECE8544145F74B58332C51411A56ED9AE9E85441BD8A31AF332C51414ED94431E5E8544190308AD5352C5141E083B450D3E854413E8F57EE352C5141AE06D11CD2E854413DB3075D342C5141C8112581D1E854413DE30CBE332C514180BEA943D1E85441F7D39AFC302C51411E106E65D0E854416DB83ABF2F2C514100F70401D0E85441333333D32C2C5141CDCCCCDCCEE85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405074 - 1966925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370CD482351417B14AE17BEE554417B14AEB74823514148E17A54C8E554413D0AD78348235141713D0AA7CCE554411F85EBE1472351413D0AD773D3E55441B81E858B47235141D7A3709DDAE55441AE47E17A4923514166666616DBE55441EC51B85E4C2351418FC2F528DCE554417B14AE7752235141333333D3DDE55441F6285CFF59235141E17A14DEDFE5544185EB51A85A2351419A999919DBE5544114AE47015E235141333333F3D0E55441295C8F725F235141295C8F02CBE554415C8FC295602351419A9999F9C1E554418FC2F5A861235141D7A3708DAEE5544185EB51B8612351410AD7A310A8E55441A4703D6A6C235141EC51B8BEA7E55441295C8F126D235141295C8F3299E55441EC51B8CE6C23514185EB512897E554415C8FC2E55F235141713D0AC79AE55441AE47E14A5723514114AE47319DE55441666666464A235141666666D6A0E55441E17A143E462351418FC2F5F8A1E55441000000B0462351413D0AD773A3E5544185EB51C8482351410AD7A3A0ACE554410AD7A3F04823514166666646B0E55441D7A370CD482351417B14AE17BEE55441
+</a>
+
+<b>
+0106000000010000000103000000010000009F0000007B14AE173A2351418FC2F528A5E55441B81E854B25235141D7A3709DAAE5544152B81EE5252351418FC2F5A8ADE554411F85EBE1262351410AD7A340B5E554411F85EB11272351415C8FC275B7E554411F85EB31272351413D0AD703BAE5544185EB513827235141713D0AD7BDE55441AE47E11A27235141713D0AB7C4E554418FC2F538272351411F85EBC1CEE554415C8FC2E5272351418FC2F578D6E5544114AE47E128235141B81E850BDEE5544114AE47712923514148E17A74E3E55441F6285C0F2A23514185EB5178E6E55441295C8F322B23514114AE4741E9E5544185EB51182923514100000070E9E554419A9999992A23514185EB5138ECE55441F6285C6F2D23514185EB5128F2E55441333333832F235141F6285C0FF7E5544185EB5178312351411F85EB61FCE5544185EB51C833235141D7A3701D05E65441A4703DBA342351411F85EBF10AE65441E17A145E352351413D0AD71311E65441E17A149E3523514152B81E5515E654410000009035235141B81E85BB1CE65441B81E854B3523514114AE477120E65441C3F5280C352351415C8FC2A522E65441CDCCCC6C36235141713D0A3725E65441295C8FD23823514185EB51F828E6544185EB51883C235141713D0A572FE65441A4703DEA40235141D7A3701D37E654419A999979452351411F85EB113FE65441CDCCCC8C47235141AE47E1EA42E654419A9999394A235141CDCCCCAC47E654413D0AD7534B235141713D0A574AE65441CDCCCC2C4C23514114AE47A14BE65441E17A143E4D235141EC51B89E4CE65441B81E85CB4E235141E17A142E4DE65441B81E855B52235141666666364DE654415C8FC2555423514148E17A044BE654418FC2F55854235141D7A3703D48E65441C3F5288C54235141D7A3703D46E65441713D0A67552351415C8FC27544E65441D7A370BD56235141AE47E1DA41E654411F85EBE157235141EC51B8EE3FE654413D0AD763592351415C8FC2553DE65441B81E857B5A235141C3F5285C3BE654411F85EBA15B235141CDCCCCDC39E654413D0AD7635C235141713D0AB738E654410AD7A3805D2351413333335337E65441A4703DCA602351418FC2F5F835E6544133333393632351418FC2F5B834E65441A4703DCA65235141C3F528BC33E6544114AE4771682351419A99999932E65441295C8FD2692351417B14AEE731E65441E17A14BE6A2351410AD7A37031E65441F6285C1F6C235141EC51B8BE30E6544148E17A746D235141E17A14FE2FE6544152B81E056F235141000000F02EE65441B81E858B72235141CDCCCC4C2BE65441295C8F4274235141E17A146E29E654410AD7A360772351410000000026E654418FC2F5E87B23514148E17A2422E65441E17A146E7D235141E17A14DE20E654417B14AE477F235141713D0A671FE65441295C8F2282235141F6285C5F1DE6544152B81E6585235141C3F528EC1AE654416666660688235141713D0AA718E65441CDCCCC4C89235141713D0A6717E65441333333038B2351417B14AE7715E654417B14AE678F2351418FC2F5C80FE6544114AE475190235141C3F5289C0EE65441B81E854B91235141666666060DE65441A4703D9A9223514185EB51A80AE654413D0AD783932351415C8FC28508E65441295C8F4294235141E17A140E06E65441CDCCCC1C95235141CDCCCC1C02E65441A4703D9A95235141CDCCCC4C00E654417B14AE0796235141D7A370FDFEE55441B81E853B9623514133333353FEE554410AD7A34096235141F6285CDFFDE5544185EB513896235141CDCCCC3CFDE554413D0AD7D39523514148E17A94FCE55441D7A3705D95235141713D0A17FCE55441CDCCCC9C94235141C3F5286CFBE554416666663693235141B81E857BFAE554419A999909922351415C8FC2C5F9E55441D7A370AD9023514133333303F9E55441EC51B89E8E235141A4703D2AF8E55441F6285C3F87235141A4703D1AF5E5544185EB51987F2351411F85EBD1F1E55441CDCCCCAC7B235141D7A370EDEFE5544114AE4781782351410AD7A360EEE55441AE47E18A7623514148E17A74EDE55441AE47E17A742351418FC2F568ECE55441713D0A6772235141EC51B83EEBE55441333333F36F235141B81E85FBE9E55441A4703D4A6E235141EC51B89EE8E554419A9999A96C2351413D0AD7D3E6E55441000000806B23514148E17AC4E4E55441E17A14DE6A235141D7A370BDE2E5544185EB51786A235141AE47E1FAE0E55441333333236A235141C3F5286CDEE554411F85EB116A23514152B81EE5DCE5544114AE47016A235141713D0AE7DAE554418FC2F5F869235141AE47E10AD9E5544114AE47016A235141A4703D5AD6E55441D7A3704D6A235141713D0A67D1E55441D7A370CD6A23514185EB5128CBE55441000000006B235141713D0AD7C6E5544114AE47116B2351417B14AEB7C3E55441E17A145E6B235141EC51B8CEBDE5544185EB51886B235141CDCCCCECB8E55441C3F5284C6C23514114AE4791ACE55441A4703D6A6C235141EC51B8BEA7E5544185EB51B8612351410AD7A310A8E554418FC2F5A861235141D7A3708DAEE554415C8FC295602351419A9999F9C1E55441295C8F725F235141295C8F02CBE5544114AE47015E235141333333F3D0E5544185EB51A85A2351419A999919DBE55441F6285CFF59235141E17A14DEDFE554417B14AE7752235141333333D3DDE55441EC51B85E4C2351418FC2F528DCE55441AE47E17A4923514166666616DBE55441B81E858B47235141D7A3709DDAE554415E806DC6472351411A6F49BBD5E55441D92357DC47235141F56F40EAD3E554416E8002E147235141ED342887D3E55441806E8CE147235141C806B97BD3E55441F37A38E44723514197221B5BD3E554418BF52809482351418CA4F8CDD1E55441BC0E29744823514183849C4FCDE554412A831585482351412D3B7C8CCCE5544171B397A748235141377AE0ABC9E5544137B512B948235141F332B2ACC7E55441F1E2FECC482351412FDC59F4BEE554417C291AD448235141609E307ABBE55441D90C37D6482351413147DEA5BAE5544121D021D748235141CBBFB649BAE55441C7AE01DB482351411DDC5CC4B8E55441E56BBEDC48235141C4A8C815B8E55441053104E348235141B55E739FB5E55441F7896DE848235141958BA47FB3E5544137BFACEB48235141A5B25B39B2E554417932A3EF48235141F0AB24ABB0E554413462A5EF482351415E83612FB0E55441EA3396ED48235141BEACB0FFAFE55441E98AAEEB48235141A61593D3AFE55441459A98D048235141D2D64D60ADE5544130EF79C8482351415C8542A4ACE554413F409EBB48235141A73C0369ACE55441FED544024823514178B6473DA9E5544117E7E79647235141F2221667A7E55441FD10163647235141FB2F11BFA5E554412E9E59FA46235141E74A74B9A4E55441E78F0DE1462351419091AA4AA4E55441724B30AB46235141F994D663A3E55441A8E7933F462351410CD789F8A1E554417B14AE173A2351418FC2F528A5E55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405074 - 3820600
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370CD482351417B14AE17BEE554417B14AEB74823514148E17A54C8E554413D0AD78348235141713D0AA7CCE554411F85EBE1472351413D0AD773D3E55441B81E858B47235141D7A3709DDAE55441AE47E17A4923514166666616DBE55441EC51B85E4C2351418FC2F528DCE554417B14AE7752235141333333D3DDE55441F6285CFF59235141E17A14DEDFE5544185EB51A85A2351419A999919DBE5544114AE47015E235141333333F3D0E55441295C8F725F235141295C8F02CBE554415C8FC295602351419A9999F9C1E554418FC2F5A861235141D7A3708DAEE5544185EB51B8612351410AD7A310A8E55441A4703D6A6C235141EC51B8BEA7E55441295C8F126D235141295C8F3299E55441EC51B8CE6C23514185EB512897E554415C8FC2E55F235141713D0AC79AE55441AE47E14A5723514114AE47319DE55441666666464A235141666666D6A0E55441E17A143E462351418FC2F5F8A1E55441000000B0462351413D0AD773A3E5544185EB51C8482351410AD7A3A0ACE554410AD7A3F04823514166666646B0E55441D7A370CD482351417B14AE17BEE55441
+</a>
+
+<b>
+0106000000010000000103000000010000009F0000007B14AE173A2351418FC2F528A5E55441B81E854B25235141D7A3709DAAE5544152B81EE5252351418FC2F5A8ADE554411F85EBE1262351410AD7A340B5E554411F85EB11272351415C8FC275B7E554411F85EB31272351413D0AD703BAE5544185EB513827235141713D0AD7BDE55441AE47E11A27235141713D0AB7C4E554418FC2F538272351411F85EBC1CEE554415C8FC2E5272351418FC2F578D6E5544114AE47E128235141B81E850BDEE5544114AE47712923514148E17A74E3E55441F6285C0F2A23514185EB5178E6E55441295C8F322B23514114AE4741E9E5544185EB51182923514100000070E9E554419A9999992A23514185EB5138ECE55441F6285C6F2D23514185EB5128F2E55441333333832F235141F6285C0FF7E5544185EB5178312351411F85EB61FCE5544185EB51C833235141D7A3701D05E65441A4703DBA342351411F85EBF10AE65441E17A145E352351413D0AD71311E65441E17A149E3523514152B81E5515E654410000009035235141B81E85BB1CE65441B81E854B3523514114AE477120E65441C3F5280C352351415C8FC2A522E65441CDCCCC6C36235141713D0A3725E65441295C8FD23823514185EB51F828E6544185EB51883C235141713D0A572FE65441A4703DEA40235141D7A3701D37E654419A999979452351411F85EB113FE65441CDCCCC8C47235141AE47E1EA42E654419A9999394A235141CDCCCCAC47E654413D0AD7534B235141713D0A574AE65441CDCCCC2C4C23514114AE47A14BE65441E17A143E4D235141EC51B89E4CE65441B81E85CB4E235141E17A142E4DE65441B81E855B52235141666666364DE654415C8FC2555423514148E17A044BE654418FC2F55854235141D7A3703D48E65441C3F5288C54235141D7A3703D46E65441713D0A67552351415C8FC27544E65441D7A370BD56235141AE47E1DA41E654411F85EBE157235141EC51B8EE3FE654413D0AD763592351415C8FC2553DE65441B81E857B5A235141C3F5285C3BE654411F85EBA15B235141CDCCCCDC39E654413D0AD7635C235141713D0AB738E654410AD7A3805D2351413333335337E65441A4703DCA602351418FC2F5F835E6544133333393632351418FC2F5B834E65441A4703DCA65235141C3F528BC33E6544114AE4771682351419A99999932E65441295C8FD2692351417B14AEE731E65441E17A14BE6A2351410AD7A37031E65441F6285C1F6C235141EC51B8BE30E6544148E17A746D235141E17A14FE2FE6544152B81E056F235141000000F02EE65441B81E858B72235141CDCCCC4C2BE65441295C8F4274235141E17A146E29E654410AD7A360772351410000000026E654418FC2F5E87B23514148E17A2422E65441E17A146E7D235141E17A14DE20E654417B14AE477F235141713D0A671FE65441295C8F2282235141F6285C5F1DE6544152B81E6585235141C3F528EC1AE654416666660688235141713D0AA718E65441CDCCCC4C89235141713D0A6717E65441333333038B2351417B14AE7715E654417B14AE678F2351418FC2F5C80FE6544114AE475190235141C3F5289C0EE65441B81E854B91235141666666060DE65441A4703D9A9223514185EB51A80AE654413D0AD783932351415C8FC28508E65441295C8F4294235141E17A140E06E65441CDCCCC1C95235141CDCCCC1C02E65441A4703D9A95235141CDCCCC4C00E654417B14AE0796235141D7A370FDFEE55441B81E853B9623514133333353FEE554410AD7A34096235141F6285CDFFDE5544185EB513896235141CDCCCC3CFDE554413D0AD7D39523514148E17A94FCE55441D7A3705D95235141713D0A17FCE55441CDCCCC9C94235141C3F5286CFBE554416666663693235141B81E857BFAE554419A999909922351415C8FC2C5F9E55441D7A370AD9023514133333303F9E55441EC51B89E8E235141A4703D2AF8E55441F6285C3F87235141A4703D1AF5E5544185EB51987F2351411F85EBD1F1E55441CDCCCCAC7B235141D7A370EDEFE5544114AE4781782351410AD7A360EEE55441AE47E18A7623514148E17A74EDE55441AE47E17A742351418FC2F568ECE55441713D0A6772235141EC51B83EEBE55441333333F36F235141B81E85FBE9E55441A4703D4A6E235141EC51B89EE8E554419A9999A96C2351413D0AD7D3E6E55441000000806B23514148E17AC4E4E55441E17A14DE6A235141D7A370BDE2E5544185EB51786A235141AE47E1FAE0E55441333333236A235141C3F5286CDEE554411F85EB116A23514152B81EE5DCE5544114AE47016A235141713D0AE7DAE554418FC2F5F869235141AE47E10AD9E5544114AE47016A235141A4703D5AD6E55441D7A3704D6A235141713D0A67D1E55441D7A370CD6A23514185EB5128CBE55441000000006B235141713D0AD7C6E5544114AE47116B2351417B14AEB7C3E55441E17A145E6B235141EC51B8CEBDE5544185EB51886B235141CDCCCCECB8E55441C3F5284C6C23514114AE4791ACE55441A4703D6A6C235141EC51B8BEA7E5544185EB51B8612351410AD7A310A8E554418FC2F5A861235141D7A3708DAEE554415C8FC295602351419A9999F9C1E55441295C8F725F235141295C8F02CBE5544114AE47015E235141333333F3D0E5544185EB51A85A2351419A999919DBE55441F6285CFF59235141E17A14DEDFE554417B14AE7752235141333333D3DDE55441EC51B85E4C2351418FC2F528DCE55441AE47E17A4923514166666616DBE55441B81E858B47235141D7A3709DDAE554415E806DC6472351411A6F49BBD5E55441D92357DC47235141F56F40EAD3E554416E8002E147235141ED342887D3E55441806E8CE147235141C806B97BD3E55441F37A38E44723514197221B5BD3E554418BF52809482351418CA4F8CDD1E55441BC0E29744823514183849C4FCDE554412A831585482351412D3B7C8CCCE5544171B397A748235141377AE0ABC9E5544137B512B948235141F332B2ACC7E55441F1E2FECC482351412FDC59F4BEE554417C291AD448235141609E307ABBE55441D90C37D6482351413147DEA5BAE5544121D021D748235141CBBFB649BAE55441C7AE01DB482351411DDC5CC4B8E55441E56BBEDC48235141C4A8C815B8E55441053104E348235141B55E739FB5E55441F7896DE848235141958BA47FB3E5544137BFACEB48235141A5B25B39B2E554417932A3EF48235141F0AB24ABB0E554413462A5EF482351415E83612FB0E55441EA3396ED48235141BEACB0FFAFE55441E98AAEEB48235141A61593D3AFE55441459A98D048235141D2D64D60ADE5544130EF79C8482351415C8542A4ACE554413F409EBB48235141A73C0369ACE55441FED544024823514178B6473DA9E5544117E7E79647235141F2221667A7E55441FD10163647235141FB2F11BFA5E554412E9E59FA46235141E74A74B9A4E55441E78F0DE1462351419091AA4AA4E55441724B30AB46235141F994D663A3E55441A8E7933F462351410CD789F8A1E554417B14AE173A2351418FC2F528A5E55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405193 - 1287131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A145E291551415C8FC24559DB54417B14AE7740155141713D0A4763DB5441AE47E1AA47155141AE47E12A66DB5441295C8F124815514152B81ED564DB54419A9999494915514114AE47D160DB5441CDCCCCAC4C15514114AE47A158DB5441A4703DEA4F155141333333634EDB544114AE4721531551418FC2F5D841DB54419A9999C9541551413D0AD7833CDB544152B81EF55C155141F6285C0F2DDB54413D0AD7934C1551413333337326DB54415C8FC28546155141295C8F9223DB5441295C8FB23E155141CDCCCC8C1EDB544114AE47313A155141666666B61ADB544185EB51082F1551418FC2F54812DB5441F6285C3F1F155141E17A14BE2BDB5441295C8F922015514185EB51B82EDB54415C8FC2651D1551410AD7A37035DB5441000000301C15514152B81E0532DB54417B14AE471B1551413D0AD72334DB54418FC2F5C8131551410AD7A39048DB54413D0AD7531A155141EC51B8DE4CDB54411F85EB21181551418FC2F5D852DB54419A999949191551413333337353DB544185EB518823155141AE47E18A57DB5441E17A145E291551415C8FC24559DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000539A85374F155141E982DD8327DB54419BAD2A71581551416CB4E23C2BDB54417D09269F5C15514197C1AAEC2CDB5441333333C361155141C3F5284C23DB5441AE47E1DA61155141C3F528CC22DB544148E17A245F1551415C8FC23520DB5441333333C35515514148E17A9417DB54410AD7A320451551410AD7A30009DB54411F85EB61391551415C8FC2D5FEDA5441713D0A773715514133333393FFDA5441CDCCCCEC2F155141E17A144E10DB544151CC1D142F155141715CD5CE11DB5441C87AB8113A1551417D5F919E1ADB544114AE47313A155141666666B61ADB54417ED89C4E3A1551413DF162CF1ADB54411BBEA5C23B1551414BDEA7F91BDB54415D6EA7453D1551412030F6551DDB5441295C8FB23E155141CDCCCC8C1EDB54415ECB5D4046155141C5FD046623DB5441539A85374F155141E982DD8327DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405193 - 3506291
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A145E291551415C8FC24559DB54417B14AE7740155141713D0A4763DB5441AE47E1AA47155141AE47E12A66DB5441295C8F124815514152B81ED564DB54419A9999494915514114AE47D160DB5441CDCCCCAC4C15514114AE47A158DB5441A4703DEA4F155141333333634EDB544114AE4721531551418FC2F5D841DB54419A9999C9541551413D0AD7833CDB544152B81EF55C155141F6285C0F2DDB54413D0AD7934C1551413333337326DB54415C8FC28546155141295C8F9223DB5441295C8FB23E155141CDCCCC8C1EDB544114AE47313A155141666666B61ADB544185EB51082F1551418FC2F54812DB5441F6285C3F1F155141E17A14BE2BDB5441295C8F922015514185EB51B82EDB54415C8FC2651D1551410AD7A37035DB5441000000301C15514152B81E0532DB54417B14AE471B1551413D0AD72334DB54418FC2F5C8131551410AD7A39048DB54413D0AD7531A155141EC51B8DE4CDB54411F85EB21181551418FC2F5D852DB54419A999949191551413333337353DB544185EB518823155141AE47E18A57DB5441E17A145E291551415C8FC24559DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000539A85374F155141E982DD8327DB54419BAD2A71581551416CB4E23C2BDB54417D09269F5C15514197C1AAEC2CDB5441333333C361155141C3F5284C23DB5441AE47E1DA61155141C3F528CC22DB544148E17A245F1551415C8FC23520DB5441333333C35515514148E17A9417DB54410AD7A320451551410AD7A30009DB54411F85EB61391551415C8FC2D5FEDA5441713D0A773715514133333393FFDA5441CDCCCCEC2F155141E17A144E10DB544151CC1D142F155141715CD5CE11DB5441C87AB8113A1551417D5F919E1ADB544114AE47313A155141666666B61ADB54417ED89C4E3A1551413DF162CF1ADB54411BBEA5C23B1551414BDEA7F91BDB54415D6EA7453D1551412030F6551DDB5441295C8FB23E155141CDCCCC8C1EDB54415ECB5D4046155141C5FD046623DB5441539A85374F155141E982DD8327DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406251 - 1279852
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000B81E85FB430F5141AE47E1DA53EA544185EB51583E0F5141AE47E18A37EA544152B81E553C0F51410000003035EA5441EC51B8EE3A0F5141D7A3701D33EA5441CDCCCCEC390F514148E17A4431EA54418FC2F5F8380F51417B14AE872FEA544152B81E05380F51415C8FC2E52CEA544114AE4711370F51418FC2F5182AEA54411F85EB81360F5141B81E85AB25EA544185EB5148360F51416666668621EA544185EB5148360F5141B81E851B1EEA5441B81E85BB360F51410AD7A3A019EA54413D0AD783370F5141713D0A1715EA544185EB51E8370F514152B81EE511EA54418FC2F558370F51410000000011EA54410AD7A3F0340F5141E17A140E11EA544185EB51F8310F51410000000011EA54413D0AD7532E0F5141666666C610EA54417B14AEB7270F51417B14AE2710EA544185EB51081D0F51410AD7A38010EA5441C3F528DC100F5141C3F5289C11EA5441D7A3705D0C0F5141F6285CFF12EA5441CDCCCCEC070F51413D0AD70316EA5441E17A14CE010F5141713D0A471AEA544152B81E95F90E5141333333631EEA5441713D0A27F40E51410000004020EA5441E17A14CEEE0E5141CDCCCC9C21EA544185EB51F8EA0E514152B81E3522EA5441CDCCCCDCE70E51413D0AD74323EA5441713D0AE7E20E5141C3F528FC24EA5441000000D0DD0E5141295C8F9226EA544148E17AB4DA0E5141AE47E12A27EA54419A999989D60E514114AE47A127EA544185EB51E8CD0E51419A99992928EA54410AD7A3A0D50E5141D7A370DD34EA54413D0AD7D3DF0E5141295C8F0244EA5441D7A370DDE70E51410AD7A3F04BEA54419A999909EB0E5141A4703D0A4EEA54419A9999C9EF0E51410AD7A33050EA5441713D0AF7F40E5141C3F528CC51EA5441CDCCCCBC050F51413333337356EA5441AE47E10A250F5141E17A14CE5EEA544166666626260F51418FC2F5185FEA5441B81E855B260F51419A99996959EA54418FC2F5A8250F5141A4703D8A54EA5441000000602A0F5141B81E85AB54EA5441CDCCCCAC330F51411F85EB8155EA5441A4703DDA3B0F514152B81EF556EA544152B81EC5440F5141A4703DFA59EA5441B81E85FB430F5141AE47E1DA53EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000AD9CC76D0C0F5141C4F950FA12EA5441B34EDB680E0F5141502ECB5D12EA5441C3F528DC100F5141C3F5289C11EA544185EB51081D0F51410AD7A38010EA54417B14AEB7270F51417B14AE2710EA54413D0AD7532E0F5141666666C610EA544185EB51F8310F51410000000011EA54410AD7A3F0340F5141E17A140E11EA54418FC2F558370F51410000000011EA544185EB51E8370F514152B81EE511EA54413D0AD783370F5141713D0A1715EA5441B81E85BB360F51410AD7A3A019EA544185EB5148360F5141B81E851B1EEA544185EB5148360F51416666668621EA54411F85EB81360F5141B81E85AB25EA544114AE4711370F51418FC2F5182AEA544152B81E05380F51415C8FC2E52CEA54418FC2F5F8380F51417B14AE872FEA5441CDCCCCEC390F514148E17A4431EA5441EC51B8EE3A0F5141D7A3701D33EA54419A9999093A0F514152B81E152FEA54411F85EBC1390F51411F85EBF12BEA5441295C8F32390F51411F85EB0126EA54410AD7A340390F5141F6285CAF20EA54413D0AD7433A0F51415C8FC2E519EA54415C8FC2753A0F5141000000F018EA544148E17A64380F51418FC2F5C818EA5441E17A149E380F514114AE479116EA5441E17A14DE3A0F5141CDCCCCEC16EA5441F6285CEF3B0F51418FC2F5A811EA54411F85EB51380F5141E17A141E11EA54415C8FC295370F5141A4703D5A10EA5441295C8FB2320F5141A4703D1A10EA5441F6285C2F2C0F5141D7A370DD0FEA544114AE47C12B0F51411F85EBE10CEA5441C3F528DC130F5141CDCCCC3C0BEA54417B14AEB7120F5141AE47E16A0CEA5441C3F5289C000F5141666666960CEA5441E1A8FF67FD0E5141EEB091411AEA5441A27D4DAEFC0E5141F3AEBAD61CEA5441783A74DFFF0E5141BC1D473E1BEA54411F3D01D6010F51416E3C85411AEA5441ED24104A040F51414B0B168C18EA5441B83B96E2060F5141D40441BD16EA544143A1B4F4080F514143301A5215EA5441180426E60A0F5141771E6AFE13EA5441AD9CC76D0C0F5141C4F950FA12EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406251 - 3409613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000B81E85FB430F5141AE47E1DA53EA544185EB51583E0F5141AE47E18A37EA544152B81E553C0F51410000003035EA5441EC51B8EE3A0F5141D7A3701D33EA5441CDCCCCEC390F514148E17A4431EA54418FC2F5F8380F51417B14AE872FEA544152B81E05380F51415C8FC2E52CEA544114AE4711370F51418FC2F5182AEA54411F85EB81360F5141B81E85AB25EA544185EB5148360F51416666668621EA544185EB5148360F5141B81E851B1EEA5441B81E85BB360F51410AD7A3A019EA54413D0AD783370F5141713D0A1715EA544185EB51E8370F514152B81EE511EA54418FC2F558370F51410000000011EA54410AD7A3F0340F5141E17A140E11EA544185EB51F8310F51410000000011EA54413D0AD7532E0F5141666666C610EA54417B14AEB7270F51417B14AE2710EA544185EB51081D0F51410AD7A38010EA5441C3F528DC100F5141C3F5289C11EA5441D7A3705D0C0F5141F6285CFF12EA5441CDCCCCEC070F51413D0AD70316EA5441E17A14CE010F5141713D0A471AEA544152B81E95F90E5141333333631EEA5441713D0A27F40E51410000004020EA5441E17A14CEEE0E5141CDCCCC9C21EA544185EB51F8EA0E514152B81E3522EA5441CDCCCCDCE70E51413D0AD74323EA5441713D0AE7E20E5141C3F528FC24EA5441000000D0DD0E5141295C8F9226EA544148E17AB4DA0E5141AE47E12A27EA54419A999989D60E514114AE47A127EA544185EB51E8CD0E51419A99992928EA54410AD7A3A0D50E5141D7A370DD34EA54413D0AD7D3DF0E5141295C8F0244EA5441D7A370DDE70E51410AD7A3F04BEA54419A999909EB0E5141A4703D0A4EEA54419A9999C9EF0E51410AD7A33050EA5441713D0AF7F40E5141C3F528CC51EA5441CDCCCCBC050F51413333337356EA5441AE47E10A250F5141E17A14CE5EEA544166666626260F51418FC2F5185FEA5441B81E855B260F51419A99996959EA54418FC2F5A8250F5141A4703D8A54EA5441000000602A0F5141B81E85AB54EA5441CDCCCCAC330F51411F85EB8155EA5441A4703DDA3B0F514152B81EF556EA544152B81EC5440F5141A4703DFA59EA5441B81E85FB430F5141AE47E1DA53EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000AD9CC76D0C0F5141C4F950FA12EA5441B34EDB680E0F5141502ECB5D12EA5441C3F528DC100F5141C3F5289C11EA544185EB51081D0F51410AD7A38010EA54417B14AEB7270F51417B14AE2710EA54413D0AD7532E0F5141666666C610EA544185EB51F8310F51410000000011EA54410AD7A3F0340F5141E17A140E11EA54418FC2F558370F51410000000011EA544185EB51E8370F514152B81EE511EA54413D0AD783370F5141713D0A1715EA5441B81E85BB360F51410AD7A3A019EA544185EB5148360F5141B81E851B1EEA544185EB5148360F51416666668621EA54411F85EB81360F5141B81E85AB25EA544114AE4711370F51418FC2F5182AEA544152B81E05380F51415C8FC2E52CEA54418FC2F5F8380F51417B14AE872FEA5441CDCCCCEC390F514148E17A4431EA5441EC51B8EE3A0F5141D7A3701D33EA54419A9999093A0F514152B81E152FEA54411F85EBC1390F51411F85EBF12BEA5441295C8F32390F51411F85EB0126EA54410AD7A340390F5141F6285CAF20EA54413D0AD7433A0F51415C8FC2E519EA54415C8FC2753A0F5141000000F018EA544148E17A64380F51418FC2F5C818EA5441E17A149E380F514114AE479116EA5441E17A14DE3A0F5141CDCCCCEC16EA5441F6285CEF3B0F51418FC2F5A811EA54411F85EB51380F5141E17A141E11EA54415C8FC295370F5141A4703D5A10EA5441295C8FB2320F5141A4703D1A10EA5441F6285C2F2C0F5141D7A370DD0FEA544114AE47C12B0F51411F85EBE10CEA5441C3F528DC130F5141CDCCCC3C0BEA54417B14AEB7120F5141AE47E16A0CEA5441C3F5289C000F5141666666960CEA5441E1A8FF67FD0E5141EEB091411AEA5441A27D4DAEFC0E5141F3AEBAD61CEA5441783A74DFFF0E5141BC1D473E1BEA54411F3D01D6010F51416E3C85411AEA5441ED24104A040F51414B0B168C18EA5441B83B96E2060F5141D40441BD16EA544143A1B4F4080F514143301A5215EA5441180426E60A0F5141771E6AFE13EA5441AD9CC76D0C0F5141C4F950FA12EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406888 - 59319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000120000003D0AD7B364A3504148E17A34A24D5541E17A147E65A350410AD7A3F0A34D554148E17A4466A350418FC2F5A8A54D554152B81ED566A35041AE47E17AA74D554185EB51A867A350419A999929AA4D55411F85EBC163A35041D7A370CDAD4D5541E17A14DE61A350418FC2F558AE4D5541A4703D8A63A35041713D0A87B04D55410AD7A3F065A3504148E17A74B04D55413333339369A350415C8FC2B5AE4D55419A9999196DA35041333333A3AE4D5541E17A141E71A350415C8FC265AD4D5541C3F528DC6EA3504166666666A44D5541333333436CA35041666666769C4D55413D0AD74368A3504114AE47E19D4D55411F85EB3166A35041D7A370FD9D4D55419A9999D962A3504152B81E35A04D55413D0AD7B364A3504148E17A34A24D5541010300000001000000120000000AD7A3907AA350410AD7A390AC4D5541EC51B8CE7BA35041AE47E13AAD4D554148E17A7479A350418FC2F5C8A34D55413333330378A35041EC51B8DE9E4D5541E17A14DE75A3504152B81EC5994D5541295C8F5275A35041E17A14DE994D55410000006074A350418FC2F5089A4D5541295C8FD273A3504114AE47219A4D55410000007073A35041333333339A4D5541A4703DAA72A35041CDCCCC5C9A4D554152B81EE571A35041713D0A879A4D55410000000071A350417B14AEB79A4D55418FC2F58873A350410AD7A370A24D5541295C8F8275A350415C8FC215A94D5541D7A3700D77A350418FC2F5A8AE4D55411F85EB4177A350418FC2F598AE4D5541E17A14FE78A35041C3F5282CAD4D55410AD7A3907AA350410AD7A390AC4D5541
+</a>
+
+<b>
+0106000000020000000103000000010000000F000000242E227A6FA35041171205DCA64D5541944F4D7F6EA350413534D04AA34D5541F946D7426CA35041D9FE86769C4D55413D0AD74368A3504114AE47E19D4D55412A54ED3466A3504177BB47FD9D4D5541F5C98E5865A35041FD2F898D9E4D55419A9999D962A3504152B81E35A04D55413D0AD7B364A3504148E17A34A24D5541E17A147E65A350410AD7A3F0A34D554148E17A4466A350418FC2F5A8A54D554152B81ED566A35041AE47E17AA74D554185EB51A867A350419A999929AA4D55416F5D62E363A3504104EB34AEAD4D554139F1917870A3504100F4E806AB4D5541242E227A6FA35041171205DCA64D55410103000000010000000C0000008FC2F58873A350410AD7A370A24D5541635EACB173A35041F74C9FF9A24D5541295C8F8275A350415C8FC215A94D55411FBA277D76A35041F20E7A9FAC4D55410B62BDA376A350410680EE2AAD4D55418C0DC05F7BA35041DD3D8293AB4D55417A43CC3C78A35041B7DDF8A29F4D55412CD17C4D77A35041FD2BAD2E9D4D5541ABDC55DE75A35041772CBAC5994D5541958CAF0171A350415C7752B79A4D55417E978ACE71A350415EA6E02C9D4D55418FC2F58873A350410AD7A370A24D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407189 - 203144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47D15AA55041295C8F329C4C5541AE47E11A5AA55041EC51B81E9C4C554152B81E3559A55041C3F5288CA04C55411F85EB5157A55041C3F5284CAA4C5541EC51B8AE58A550410AD7A360AA4C55418FC2F5385DA5504148E17AA4AA4C5541F6285C3F60A550419A9999A9AA4C5541333333735EA550419A999969B14C5541295C8F025DA55041295C8FE2B74C55411F85EBB15EA55041666666E6B84C5541C3F528EC5EA5504114AE47D1B84C55417B14AE375FA55041E17A14DEB84C554148E17AF45FA55041295C8F62B54C55413333331362A55041EC51B82EAC4C5541C3F5286C62A55041CDCCCCACAA4C55410000002063A5504114AE4781A64C55417B14AE2764A550417B14AEC7A14C5541B81E85DB64A55041666666D69F4C55411F85EBE160A55041E17A14DE9D4C5541CDCCCC0C5FA550413D0AD7E39C4C554114AE47D15AA55041295C8F329C4C5541
+</a>
+
+<b>
+010600000001000000010300000001000000160000000000002063A5504114AE4781A64C55417B14AE2764A550417B14AEC7A14C55412A13482D64A55041D4E730B8A14C5541DD8C648B63A55041322C56709F4C554170F2F6C861A55041D7165CEF9E4C55411F85EBE160A55041E17A14DE9D4C5541CDCCCC0C5FA550413D0AD7E39C4C554114AE47D15AA55041295C8F329C4C5541C6528D235AA5504164CCA91F9C4C5541B50CE11A5AA55041EC74B91E9C4C554174F598B559A550416C8E5C129E4C5541969EA0AB59A55041819F8B439E4C55410E3B1F3559A550412650298CA04C55411883817058A550410650C883A44C55411F85EB5157A55041C3F5284CAA4C55415CD0355F57A5504148BAF04CAA4C55412DFEDE1D5DA55041EB18E6A2AA4C55418FC2F5385DA5504148E17AA4AA4C55415BFD5B3F60A55041583D9AA9AA4C55418283286C62A550416AA8CBACAA4C5541DD0D60F362A5504155922B8AA74C55410000002063A5504114AE4781A64C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408198 - 59907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000003D0AD7A3AE155141D7A3707D7AE45441333333C3A71551416666668674E45441713D0A17A5155141C3F5285C76E454418FC2F518A31551410AD7A38078E454415C8FC265A2155141333333F37AE45441C3F528FCA11551419A9999797DE45441295C8F12A215514152B81E2580E45441000000B0A21551410AD7A3E082E45441713D0A27B0155141E17A143E88E45441713D0A07B6155141AE47E13A89E45441CDCCCC0CB5155141B81E850B82E45441713D0AA7B4155141E17A14AE7BE454413D0AD7A3AE155141D7A3707D7AE45441
+</a>
+
+<b>
+010600000001000000010300000001000000100000002690D811A2155141590FDBF47CE454416CB09E03A2155141EB9E3B5D7EE45441BF705F37A215514188C0AEC880E454411B60F3D4A21551415BD65CEF82E4544122FC64F4AB1551418BD6E59186E45441989E85F3AF155141CB998D2988E45441B4D42F05B6155141DE30422D89E45441CDCCCC0CB5155141B81E850B82E45441DA77C9C1B415514168425E5A7DE45441F6F19D93B4155141C35B3CAA7BE454413D0AD7A3AE155141D7A3707D7AE454419C7CCAA1AE15514119AFA97B7AE454419ACD6FC7A71551415B19138A74E45441B9672135A515514120CA7F4776E45441E9BB4C1EA3155141FFF4E57A78E454412690D811A2155141590FDBF47CE45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408830 - 422088
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000048E17A4487CE50419A9999797CC95441666666668FCE50419A9999197CC954419A99993995CE50411F85EB417BC95441EC51B83EA3CE5041CDCCCCBC7BC95441C3F5281CAFCE504114AE47217BC954418FC2F5D8AFCE5041000000B06BC954413333332395CE5041295C8FC26AC9544148E17AE495CE5041C3F5283C5CC95441AE47E1FA7CCE5041295C8F825AC95441A4703D6A82CE504114AE474169C9544152B81EB586CE5041EC51B83E77C9544148E17A4487CE50419A9999797CC95441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000052DB21D786CE5041F1C15E7C78C9544148E17A4487CE50419A9999797CC95441666666668FCE50419A9999197CC954412375FDDC90CE5041C2CC6BE37BC95441B199993995CE50410985EB417BC954411D52B83EA3CE5041ACCCCCBC7BC954417C775696A8CE504170CEC6767BC95441C3F5281CAFCE504114AE47217BC954418DC2F5D8AFCE5041240000B06BC954410C33332395CE5041565C8FC26AC954419C97CD8B95CE5041C4A729E662C9544146E17AE495CE5041E9F5283C5CC95441AE47E1FA7CCE5041295C8F825AC95441AA703D6A82CE50411BAE474169C9544162B81EB586CE50411A52B83E77C9544152DB21D786CE5041F1C15E7C78C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102847 - 1271851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000250000008E85D7E517555141D4CD87DC2B8D5441919A50A2145551418B73F0F02F8D54412DA7FFAC12555141A1E0E9E0328D54418F6E90881155514160B1AB3E358D5441DBDE07010F555141D511F6233A8D54414F280B890D5551410E429B963C8D54419EAE628E0C555141A84FB1713F8D544149FC4A6F0A55514180A34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D54419D0A7F032655514102B7CC09668D5441FE2AF7E22F5551416B046CD3778D54419F6366073155514161D9128A798D54411FD929A932555141361667077A8D54414FDE75D23655514128D52D317A8D54415C36F6053D55514128D52D317A8D5441DED779C1415551415DD9128A798D54418FC2F5C83F555141E17A14CE718D5441A4703DDA3D55514152B81ED5668D544185EB51983C55514185EB51785C8D5441A4703D5A3B55514152B81E25578D54412BB9866B55555141DF697657408D5441A4703DDA48555141CDCCCC5C2D8D54412E74B15342555141C25F271C248D5441AE47E15A3D555141295C8F621B8D5441F116E5F637555141FB1E375D108D54413F59CEB4285551417CD701761B8D5441CDF883CF23555141B0DC4D9F1F8D5441011349B52455514145D483ED208D54410628C27121555141C549478F228D54415ED972C01E555141B61EEE45248D5441B78A230F1C55514191712250268D54419ADCF0481955514112FDC57E298D54418E85D7E517555141D4CD87DC2B8D54410500000066666646155551413D0AD7134D8D54413D0AD7731755514152B81E554D8D5441B81E853B17555141AE47E17A4F8D5441B81E850B15555141A4703D4A4F8D544166666646155551413D0AD7134D8D5441
+</a>
+
+<b>
+010600000001000000010300000002000000250000008D85D7E517555141D5CD87DC2B8D54418D9A50A2145551419073F0F02F8D54412AA7FFAC12555141A4E0E9E0328D54418D6E9088115551415FB1AB3E358D5441DCDE07010F555141D511F6233A8D544152280B890D55514110429B963C8D5441A1AE628E0C555141A44FB1713F8D544148FC4A6F0A5551417CA34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D5441A20A7F0326555141FDB6CC09668D5441FA2AF7E22F5551416B046CD3778D5441A26366073155514161D9128A798D544122D929A9325551413A1667077A8D544154DE75D23655514125D52D317A8D54415D36F6053D55514125D52D317A8D5441DDD779C14155514161D9128A798D54418FC2F5C83F555141E17A14CE718D5441A4703DDA3D55514152B81ED5668D544185EB51983C55514185EB51785C8D5441A4703D5A3B55514152B81E25578D54412DB9866B55555141DF697657408D5441A4703DDA48555141CDCCCC5C2D8D54412C74B15342555141C05F271C248D5441AE47E15A3D555141295C8F621B8D5441F116E5F637555141FB1E375D108D54413F59CEB4285551417BD701761B8D5441C8F883CF23555141ADDC4D9F1F8D5441041349B52455514140D483ED208D54410328C27121555141C149478F228D54415CD972C01E555141B71EEE45248D5441B48A230F1C5551418F712250268D544197DCF048195551410FFDC57E298D54418D85D7E517555141D5CD87DC2B8D54410500000066666646155551413D0AD7134D8D54413D0AD7731755514152B81E554D8D5441B81E853B17555141AE47E17A4F8D5441B81E850B15555141A4703D4A4F8D544166666646155551413D0AD7134D8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102847 - 4024556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000250000008E85D7E517555141D4CD87DC2B8D5441919A50A2145551418B73F0F02F8D54412DA7FFAC12555141A1E0E9E0328D54418F6E90881155514160B1AB3E358D5441DBDE07010F555141D511F6233A8D54414F280B890D5551410E429B963C8D54419EAE628E0C555141A84FB1713F8D544149FC4A6F0A55514180A34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D54419D0A7F032655514102B7CC09668D5441FE2AF7E22F5551416B046CD3778D54419F6366073155514161D9128A798D54411FD929A932555141361667077A8D54414FDE75D23655514128D52D317A8D54415C36F6053D55514128D52D317A8D5441DED779C1415551415DD9128A798D54418FC2F5C83F555141E17A14CE718D5441A4703DDA3D55514152B81ED5668D544185EB51983C55514185EB51785C8D5441A4703D5A3B55514152B81E25578D54412BB9866B55555141DF697657408D5441A4703DDA48555141CDCCCC5C2D8D54412E74B15342555141C25F271C248D5441AE47E15A3D555141295C8F621B8D5441F116E5F637555141FB1E375D108D54413F59CEB4285551417CD701761B8D5441CDF883CF23555141B0DC4D9F1F8D5441011349B52455514145D483ED208D54410628C27121555141C549478F228D54415ED972C01E555141B61EEE45248D5441B78A230F1C55514191712250268D54419ADCF0481955514112FDC57E298D54418E85D7E517555141D4CD87DC2B8D54410500000066666646155551413D0AD7134D8D54413D0AD7731755514152B81E554D8D5441B81E853B17555141AE47E17A4F8D5441B81E850B15555141A4703D4A4F8D544166666646155551413D0AD7134D8D5441
+</a>
+
+<b>
+010600000001000000010300000002000000250000008D85D7E517555141D5CD87DC2B8D54418D9A50A2145551419073F0F02F8D54412AA7FFAC12555141A4E0E9E0328D54418D6E9088115551415FB1AB3E358D5441DCDE07010F555141D511F6233A8D544152280B890D55514110429B963C8D5441A1AE628E0C555141A44FB1713F8D544148FC4A6F0A5551417CA34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D5441A20A7F0326555141FDB6CC09668D5441FA2AF7E22F5551416B046CD3778D5441A26366073155514161D9128A798D544122D929A9325551413A1667077A8D544154DE75D23655514125D52D317A8D54415D36F6053D55514125D52D317A8D5441DDD779C14155514161D9128A798D54418FC2F5C83F555141E17A14CE718D5441A4703DDA3D55514152B81ED5668D544185EB51983C55514185EB51785C8D5441A4703D5A3B55514152B81E25578D54412DB9866B55555141DF697657408D5441A4703DDA48555141CDCCCC5C2D8D54412C74B15342555141C05F271C248D5441AE47E15A3D555141295C8F621B8D5441F116E5F637555141FB1E375D108D54413F59CEB4285551417BD701761B8D5441C8F883CF23555141ADDC4D9F1F8D5441041349B52455514140D483ED208D54410328C27121555141C149478F228D54415CD972C01E555141B71EEE45248D5441B48A230F1C5551418F712250268D544197DCF048195551410FFDC57E298D54418D85D7E517555141D5CD87DC2B8D54410500000066666646155551413D0AD7134D8D54413D0AD7731755514152B81E554D8D5441B81E853B17555141AE47E17A4F8D5441B81E850B15555141A4703D4A4F8D544166666646155551413D0AD7134D8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>66868 - 67010
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000310000008FC2F55877ED5041E17A14CEA4F75441666666E674ED50419A9999D9A4F75441E17A14BE71ED50419A999989A4F754419A9999096EED5041AE47E1EAA3F7544152B81E4568ED50417B14AEF7A2F75441E17A14AE62ED50418FC2F568A2F7544152B81E555DED5041B81E851BA2F754415C8FC23556ED5041C3F5284CA2F7544148E17A0452ED5041E17A14AEA2F754415C8FC24552ED504133333313A6F75441B01BB8E852ED50411C469875A9F754417888C05653ED50412A19E453ADF7544114AE472153ED5041CDCCCC7CB1F75441C3F5285C53ED50417B14AE87B4F75441C5C9266353ED50417E77F7E2B8F75441C3F5286C53ED504100000080BEF7544140CAC98F53ED5041394949A2C3F75441C67A81A753ED5041FBB9FD3DC5F7544141AC81B954ED50411E7F225AC7F75441B81E859B55ED50417B14AE17C9F7544129220FB25AED50414FE0AE4DC7F7544151CA2B4960ED50411B467A56C5F7544177E4EFE965ED5041106D2F59C3F754413C7DAE856BED50417ED9EB5BC1F754419E0DD06973ED5041008A5F8FBEF75441F88BA39578ED5041D19DCEB9BCF7544148E17A047EED5041E17A147EBAF75441B113411185ED5041F5B9DB9EB7F75441C3F528BC8AED5041295C8F52B5F754418EFEBB868BED50413FB5A5ADB5F75441EC7565BC91ED50413E86D22DB3F754413C63BE3C95ED5041BA37D621B3F75441BBC8C1C8A0ED5041FB7E622EB2F75441C5B44CECA8ED5041131D81BFB1F754411EE453CAAAED504191E65663B1F75441F6285CBFAAED5041CDCCCCFCABF75441AE47E14A92ED50410AD7A3D0AAF754412B531B2192ED50419DED9973A9F75441C90D76B28CED5041CA11064DAAF75441EE02B0278BED5041A65BEF95AAF75441B67528F484ED504178630FCBABF7544179A988337EED504138715E75ADF754410F2DF7747AED50419E1748AEAEF754418A39573775ED50418FB46504B1F7544185EB51B86FED50411F85EB91B3F754416666663673ED5041F6285CAFAEF75441F6285C4F78ED5041F6285CCFA8F754413D0AD7637BED504185EB51B8A4F754418FC2F55877ED5041E17A14CEA4F75441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB51B86FED50411F85EB91B3F75441F6285CBF79ED50419A9999E9AEF75441E17A14BE7AED504166666696AEF75441AE47E17A7EED5041E17A145EADF7544148E17A1485ED5041333333C3ABF754415C8FC2658CED504185EB5158AAF75441295C8F2292ED504100000080A9F75441000000F091ED50410AD7A3D0A7F7544185EB51D88FED5041CDCCCCFC95F754411F85EB0182ED50413D0AD76396F75441295C8F327FED50413D0AD7739DF75441EC51B8BE7DED5041713D0AD7A0F754413D0AD7637BED504185EB51B8A4F75441F6285C4F78ED5041F6285CCFA8F754416666663673ED5041F6285CAFAEF7544185EB51B86FED50411F85EB91B3F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>66868 - 1431339
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000310000008FC2F55877ED5041E17A14CEA4F75441666666E674ED50419A9999D9A4F75441E17A14BE71ED50419A999989A4F754419A9999096EED5041AE47E1EAA3F7544152B81E4568ED50417B14AEF7A2F75441E17A14AE62ED50418FC2F568A2F7544152B81E555DED5041B81E851BA2F754415C8FC23556ED5041C3F5284CA2F7544148E17A0452ED5041E17A14AEA2F754415C8FC24552ED504133333313A6F75441B01BB8E852ED50411C469875A9F754417888C05653ED50412A19E453ADF7544114AE472153ED5041CDCCCC7CB1F75441C3F5285C53ED50417B14AE87B4F75441C5C9266353ED50417E77F7E2B8F75441C3F5286C53ED504100000080BEF7544140CAC98F53ED5041394949A2C3F75441C67A81A753ED5041FBB9FD3DC5F7544141AC81B954ED50411E7F225AC7F75441B81E859B55ED50417B14AE17C9F7544129220FB25AED50414FE0AE4DC7F7544151CA2B4960ED50411B467A56C5F7544177E4EFE965ED5041106D2F59C3F754413C7DAE856BED50417ED9EB5BC1F754419E0DD06973ED5041008A5F8FBEF75441F88BA39578ED5041D19DCEB9BCF7544148E17A047EED5041E17A147EBAF75441B113411185ED5041F5B9DB9EB7F75441C3F528BC8AED5041295C8F52B5F754418EFEBB868BED50413FB5A5ADB5F75441EC7565BC91ED50413E86D22DB3F754413C63BE3C95ED5041BA37D621B3F75441BBC8C1C8A0ED5041FB7E622EB2F75441C5B44CECA8ED5041131D81BFB1F754411EE453CAAAED504191E65663B1F75441F6285CBFAAED5041CDCCCCFCABF75441AE47E14A92ED50410AD7A3D0AAF754412B531B2192ED50419DED9973A9F75441C90D76B28CED5041CA11064DAAF75441EE02B0278BED5041A65BEF95AAF75441B67528F484ED504178630FCBABF7544179A988337EED504138715E75ADF754410F2DF7747AED50419E1748AEAEF754418A39573775ED50418FB46504B1F7544185EB51B86FED50411F85EB91B3F754416666663673ED5041F6285CAFAEF75441F6285C4F78ED5041F6285CCFA8F754413D0AD7637BED504185EB51B8A4F754418FC2F55877ED5041E17A14CEA4F75441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB51B86FED50411F85EB91B3F75441F6285CBF79ED50419A9999E9AEF75441E17A14BE7AED504166666696AEF75441AE47E17A7EED5041E17A145EADF7544148E17A1485ED5041333333C3ABF754415C8FC2658CED504185EB5158AAF75441295C8F2292ED504100000080A9F75441000000F091ED50410AD7A3D0A7F7544185EB51D88FED5041CDCCCCFC95F754411F85EB0182ED50413D0AD76396F75441295C8F327FED50413D0AD7739DF75441EC51B8BE7DED5041713D0AD7A0F754413D0AD7637BED504185EB51B8A4F75441F6285C4F78ED5041F6285CCFA8F754416666663673ED5041F6285CAFAEF7544185EB51B86FED50411F85EB91B3F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>66868 - 4120200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000310000008FC2F55877ED5041E17A14CEA4F75441666666E674ED50419A9999D9A4F75441E17A14BE71ED50419A999989A4F754419A9999096EED5041AE47E1EAA3F7544152B81E4568ED50417B14AEF7A2F75441E17A14AE62ED50418FC2F568A2F7544152B81E555DED5041B81E851BA2F754415C8FC23556ED5041C3F5284CA2F7544148E17A0452ED5041E17A14AEA2F754415C8FC24552ED504133333313A6F75441B01BB8E852ED50411C469875A9F754417888C05653ED50412A19E453ADF7544114AE472153ED5041CDCCCC7CB1F75441C3F5285C53ED50417B14AE87B4F75441C5C9266353ED50417E77F7E2B8F75441C3F5286C53ED504100000080BEF7544140CAC98F53ED5041394949A2C3F75441C67A81A753ED5041FBB9FD3DC5F7544141AC81B954ED50411E7F225AC7F75441B81E859B55ED50417B14AE17C9F7544129220FB25AED50414FE0AE4DC7F7544151CA2B4960ED50411B467A56C5F7544177E4EFE965ED5041106D2F59C3F754413C7DAE856BED50417ED9EB5BC1F754419E0DD06973ED5041008A5F8FBEF75441F88BA39578ED5041D19DCEB9BCF7544148E17A047EED5041E17A147EBAF75441B113411185ED5041F5B9DB9EB7F75441C3F528BC8AED5041295C8F52B5F754418EFEBB868BED50413FB5A5ADB5F75441EC7565BC91ED50413E86D22DB3F754413C63BE3C95ED5041BA37D621B3F75441BBC8C1C8A0ED5041FB7E622EB2F75441C5B44CECA8ED5041131D81BFB1F754411EE453CAAAED504191E65663B1F75441F6285CBFAAED5041CDCCCCFCABF75441AE47E14A92ED50410AD7A3D0AAF754412B531B2192ED50419DED9973A9F75441C90D76B28CED5041CA11064DAAF75441EE02B0278BED5041A65BEF95AAF75441B67528F484ED504178630FCBABF7544179A988337EED504138715E75ADF754410F2DF7747AED50419E1748AEAEF754418A39573775ED50418FB46504B1F7544185EB51B86FED50411F85EB91B3F754416666663673ED5041F6285CAFAEF75441F6285C4F78ED5041F6285CCFA8F754413D0AD7637BED504185EB51B8A4F754418FC2F55877ED5041E17A14CEA4F75441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB51B86FED50411F85EB91B3F75441F6285CBF79ED50419A9999E9AEF75441E17A14BE7AED504166666696AEF75441AE47E17A7EED5041E17A145EADF7544148E17A1485ED5041333333C3ABF754415C8FC2658CED504185EB5158AAF75441295C8F2292ED504100000080A9F75441000000F091ED50410AD7A3D0A7F7544185EB51D88FED5041CDCCCCFC95F754411F85EB0182ED50413D0AD76396F75441295C8F327FED50413D0AD7739DF75441EC51B8BE7DED5041713D0AD7A0F754413D0AD7637BED504185EB51B8A4F75441F6285C4F78ED5041F6285CCFA8F754416666663673ED5041F6285CAFAEF7544185EB51B86FED50411F85EB91B3F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>410985 - 53142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666F611AC5041D7A3707D134555411F85EB810FAC5041D7A3703D11455541333333B30CAC50419A9999E90E45554152B81E5509AC5041666666960C4555417B14AE1703AC50418FC2F54808455541B81E85EBF8AB504148E17A4401455541F6285C4FF8AB50418FC2F5D8004555419A999909E9AB5041D7A3709D1345554100000090F3AB5041B81E855B1B455541F6285C1FF9AB5041AE47E16A2045554152B81E5505AC50413D0AD7632B455541666666960AAC50417B14AE57304555415C8FC2450FAC504148E17AC43445554185EB51181FAC504152B81E7521455541000000B01AAC5041B81E85BB1C4555410AD7A3B014AC5041CDCCCC4C16455541666666F611AC5041D7A3707D13455541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000037CC27A5F4AB50418AA4DD590545554163E52E22EDAB5041456EE5940E4555414CA22F0DE9AB50414B85089913455541D94D6478F3AB50410333274A1B45554116BD648DF3AB50414B439A591B4555419034E91B03AC5041AF91654F084555412C109DD401AC504170B2176A07455541B81E85EBF8AB504148E17A440145554163255B55F8AB5041B8A216DD0045554137CC27A5F4AB50418AA4DD5905455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411091 - 299140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000230000005C8FC295C19F5041EC51B87E374A554148E17AE4C09F50415C8FC2F5374A5541E17A143EC09F5041B81E853B384A55419A999959BF9F504152B81E55384A5541295C8FE2BE9F504166666676384A55411F85EB81BE9F504114AE47E1384A5541B81E85DBBD9F5041F6285C1F394A5541713D0A57BD9F504148E17AD4394A55417B14AE17BD9F5041C3F5283C3A4A554152B81E75BC9F5041F6285CAF3A4A5541000000E0BB9F5041713D0A373B4A55418FC2F578BB9F50413D0AD7F33B4A554166666606BB9F5041666666063D4A554185EB51C8BA9F5041D7A3708D3D4A55417B14AE97BA9F5041E17A14CE3D4A5541C3F5284CBA9F5041EC51B82E3E4A5541666666B6B99F504114AE47113E4A5541D7A3701DB99F5041295C8FF23D4A55415C8FC255B89F5041B81E851B3E4A554152B81E15B89F504114AE47813E4A55410AD7A310B89F5041A4703D3A3F4A55415C8FC245B89F5041C3F528BC3F4A5541F6285CAFB89F5041A4703D5A404A5541D7A3702DB99F50413D0AD7E3404A5541295C8FF2B99F50419A999969414A55418FC2F548BA9F5041CDCCCC0C424A5541C3F5285CBA9F5041B81E858B424A5541333333E3C29F50418FC2F5D8434A554152B81E55C39F5041295C8FE2434A554114AE4761C39F504166666626434A5541713D0A87C39F504133333353404A554185EB5138C19F50411F85EBF13D4A5541A4703DAAC09F50410AD7A3F03A4A55418FC2F588C19F504152B81ED5394A55415C8FC295C19F5041EC51B87E374A554101030000000100000028000000F6285C2FA29F504185EB51D82E4A5541D7A3700DA39F504114AE47713F4A5541F6285CCFB99F5041295C8F82424A55413D0AD7B3B99F5041D7A370ED414A5541AE47E14AB99F5041295C8F72414A55419A999999B89F5041CDCCCCCC404A5541F6285C6FB89F504133333373404A55415C8FC215B89F504166666616404A5541713D0AA7B79F5041AE47E17A3F4A5541AE47E18AB79F50413D0AD7A33E4A55419A9999E9B79F5041295C8FE23D4A55417B14AE67B89F50417B14AE873D4A5541333333F3B89F504185EB51983D4A554152B81E55B99F5041666666763D4A55413D0AD7B3B99F5041F6285C8F3D4A554166666606BA9F5041713D0A973D4A554100000040BA9F504148E17A743D4A5541C3F5286CBA9F5041C3F5283C3D4A554133333393BA9F5041713D0AF73C4A5541A4703DFABA9F504152B81E253C4A55419A999929BB9F5041295C8F923B4A554185EB5158BB9F5041000000303B4A5541D7A370ADBB9F50410AD7A3D03A4A5541EC51B81EBC9F5041D7A3706D3A4A5541AE47E16ABC9F5041CDCCCC2C3A4A5541C3F528ACBC9F50415C8FC2E5394A5541AE47E1EABC9F504133333383394A554100000060BD9F5041CDCCCCFC384A55411F85EBF1BD9F50419A9999B9384A5541B81E852BBE9F504114AE47B1384A554114AE47B1BE9F50415C8FC225384A55410AD7A390BF9F5041F6285CFF374A5541CDCCCC3CC09F5041EC51B8EE374A5541AE47E1DAC09F5041B81E859B374A554114AE4751C19F50410AD7A350374A55415C8FC275C19F50419A999919374A5541D7A3708DC09F5041295C8F22344A554148E17A94B99F504185EB5168324A5541295C8FD2AE9F504152B81EC5304A5541F6285C2FA29F504185EB51D82E4A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000001D470B81A29F5041AB3C25F3344A5541FE2173CBA29F5041E88CBF79394A5541179A400BBB9F5041AA47C5FA3C4A554191666606BB9F50413B6666063D4A55416A5DD383C09F504135E2B4C83D4A55412DDE5C85C09F50418ADA5FC53D4A5541A15EDA9AC09F5041F0D07AC83D4A5541F29A08ACC09F50410C26CD973D4A5541A4703DAAC09F50410AD7A3F03A4A5541903A9195C09F5041EE6788C1394A554179A32CBEC09F5041A620AD7C384A5541DFAD47B1BE9F5041928FC225384A55417E54C31EB99F504161009F5B374A55417F893A76A29F50414D203824344A55411D470B81A29F5041AB3C25F3344A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411122 - 359634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000001F85EBB15E9E5041000000E0854A55410AD7A3D05D9E5041B81E859B8F4A5541A4703D3A5F9E504185EB51B88F4A5541EC51B84E699E5041C3F5288C934A55417B14AED76F9E504185EB5198934A554114AE4701749E50411F85EB51994A554185EB51087C9E504133333313894A5541F6285C7F759E504152B81EF5824A5541A4703DCA719E504114AE4741844A5541713D0A07709E50413D0AD7E3814A5541666666B6669E5041295C8F02814A554114AE47C15F9E5041D7A3707D7E4A5541C3F5284C5F9E50418FC2F5E8824A55411F85EBB15E9E5041000000E0854A5541
+</a>
+
+<b>
+010600000001000000010300000001000000160000000AD7A3D05D9E5041B81E859B8F4A5541A4703D3A5F9E504185EB51B88F4A554184517F925F9E50416B3A2BD88F4A55415845ACA65F9E50419D27A2DA8F4A55412D270A8E609E5041E4FAF032904A55414A3EADB7629E50414492BAFA904A554131BB5FF7639E5041C88B186E914A55411F53ED25649E504184198D80914A5541B40EDC35669E50414FEC80258C4A5541B2A4882A6A9E504100D31556814A5541666666B6669E5041295C8F02814A5541F87965B0639E5041CBD294EB7F4A5541B2AE79AD629E504189866F8C7F4A554188B8B2D4609E50416D3932E17E4A5541D88432C8609E504175FBB6DC7E4A554193FC8CD65F9E5041441BFA877E4A55419A2929B95F9E50413AB28DCC7E4A55413DF44C7A5F9E50419B031031814A5541514D5F485F9E504136549017834A5541EF170AE55E9E504136220726854A55411E7D5FB35E9E50411E8A422D864A55410AD7A3D05D9E5041B81E859B8F4A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411616 - 201714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE4771CCA250417B14AE879D565541D7A3707DC3A250415C8FC2458E56554114AE4781BFA25041666666D68F5655418FC2F558C8A25041000000A09F56554114AE47B1C8A25041E17A145EA056554114AE47D1D1A25041A4703DFAB3565541713D0A47D6A25041F6285C4FB356554100000000D5A25041C3F5284CB05655419A999949CFA250410AD7A380A35655418FC2F5D8CCA250411F85EB619E56554114AE4771CCA250417B14AE879D565541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000079C23AA1BFA25041274ADAC98F565541158CE3E3C0A25041A315234B8F5655410B603D22C2A2504162091DCE8E5655411D2E2EFBBEA2504113BBCB3989565541E17A143EBEA25041CDCCCC6C895655410C0FA95FBDA250413E92688789565541CDCCCC9CBCA25041EC51B89E895655413D0AD7F3BAA2504114AE47D189565541D7A3703DB9A250417B14AE478A565541E68123ABB9A2504134FF69278B5655415FE781A3C4A25041B2472C87A15655415B1C5954C8A25041320EC4979F565541EE65B1D5C5A25041B3F380239B56554114AE4781BFA25041666666D68F56554179C23AA1BFA25041274ADAC98F565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411635 - 55718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000001F85EBC1B3AB5041713D0A27FA50554133333323A3AB50415C8FC2F502515541AE47E10AA0AB50413D0AD773045155411F85EB81ACAB504152B81E65205155419A999989C9AB5041EC51B88E135155417B14AED7DBAB5041E17A14CE125155415C8FC205DEAB5041C3F5285C1251554114AE47A10AAC5041000000B0FE5055413D0AD7830DAC504114AE4731FD505541295C8F32FFAB5041E17A14FEEB5055410AD7A3A0FEAB504148E17AE4EA50554133333333FEAB504100000080EB505541000000C0FBAB5041D7A370BDE5505541C3F5284CF5AB50419A9999C9DF5055410AD7A330D6AB5041C3F5285CEB5055411F85EBC1B3AB5041713D0A27FA505541
+</a>
+
+<b>
+0106000000010000000103000000010000005600000058E06FDD79AB5041BB035EB35A5155413D0AD7D37BAB504152B81EC55A515541B32B198E7FAB5041A40F8C7D59515541BCE38D1E80AB5041E07ADF485951554165E75A7D80AB5041378784E458515541289E39CF80AB504157D4D98D585155410E93C9B282AB50411CD2F48D565155414722BEDA82AB504133FA016056515541EB4EC33A83AB5041CC8F03FE55515541295C8F4283AB50415C8FC2F5555155413333333387AB5041000000F052515541713D0A9788AB5041F6285C9F505155413333330387AB5041B81E85DB49515541666666A687AB5041D7A3703D475155410AD7A3A089AB504148E17AF444515541295C8FC290AB5041C3F528FC3D5155416666664694AB5041EC51B85E3C515541295C8FD299AB5041713D0A273B51554185EB51789BAB50419A9999093A515541D7A3700D9CAB50415C8FC2B53751554114AE47719DAB5041EC51B81E33515541AE47E14AA3AB504152B81E752D515541E17A147EA5AB5041CDCCCC6C2A51554114AE4761A8AB504152B81E452851554100000090ABAB50418FC2F5682851554114AE47B1B1AB5041666666D62D515541713D0AA7B5AB5041F6285C0F2D515541713D0AF7BDAB5041713D0AC724515541E17A147EC0AB5041F6285CBF205155413D0AD7B3C2AB5041CDCCCC4C1A515541E17A14EEC6AB5041333333E31751554148E17A54CDAB504114AE47B118515541EC51B8FED3AB5041E17A14BE16515541E17A146EDAAB5041295C8FB2175155410AD7A320DFAB50418FC2F5481A515541333333A3E1AB504148E17A541B5155415C8FC2A5E4AB5041666666461B5155413D0AD7D3E8AB5041C3F528CC185155413D0AD7A3ECAB5041E17A148E17515541A4703DFAEEAB50417B14AEE71751554100000050F2AB5041F6285C0F1B5155415EF47A37F5AB5041E91B9E561F5155411156D5C6F5AB5041F6FC962120515541A4703D4AFAAB5041D7A3703D1F515541FF5882D2FCAB50411D01354E1C515541B81E851BFDAB50419A9999F91B515541728DC8F4FEAB5041EF22DE7F1A51554166652FBDFFAB50415916EBDF19515541713D0A5700AC504152B81E65195155414151DEC300AC5041E703F4A81751554124DF876F01AC5041C0DC56EC145155419A99999901AC50410AD7A34014515541767F626003AC504198BE8FFD0E515541B81E853B04AC504148E17A740C515541CDCCCC1C06AC5041B81E858B08515541E17A142E09AC5041333333A30451554185EB51780CAC5041B81E858B01515541A4703DAA0CAC5041CDCCCC5C015155418A6CC26D0FAC50415FCB1149FF505541DD48594B0FAC504104843F04FF5055413D0AD7830DAC504114AE4731FD50554114AE47A10AAC5041000000B0FE50554103B6D673E6AB5041D12A6BA40E5155414E24AE11DEAB5041A102255F12515541A0C83384DDAB504191AE707B125155415CB8856CDDAB504191AE707B1251554199CBC1F0DBAB50419508F6C8125155417B14AED7DBAB5041E17A14CE125155419A999989C9AB5041EC51B88E135155411F85EB81ACAB504152B81E65205155415056F606ACAB5041019CC54A2051554175B152F4ABAB504117ABEF5220515541C508074A73AB50412D1207D44B515541AE47E19A5FAB5041295C8FF25A5155414589B89E5FAB5041327618FE5A5155417B14AE5760AB50419A9999295D5155414503D6D560AB50411EF90F5C5D51554111DB052462AB504167F9A5DA5D515541D1C77F0F65AB5041A15458585D51554148E17AA467AB504152B81EE55C515541A4703DAA6BAB5041F6285C0F5B51554125654FF46DAB50416146E3205B5155419404E2A171AB504170EFF13B5B5155412DA2611C75AB50415FA307E05A51554152B81E9577AB5041EC51B89E5A51554158E06FDD79AB5041BB035EB35A515541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411664 - 55721
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000333333532EAB50415C8FC24579515541EC51B85E2FAB504114AE478177515541B81E853B33AB50419A9999D9745155418FC2F5C836AB50413D0AD78374515541E17A14BE39AB5041EC51B8EE74515541EC51B8AE3CAB5041A4703D3A755155410AD7A3E03FAB5041C3F5282C765155417B14AED740AB50410AD7A3D075515541AE47E1DA43AB504148E17AF47351554114AE475145AB5041CDCCCC0C73515541333333E345AB504114AE47B1725155411F85EBC14BAB5041C3F528FC70515541B81E851B4DAB50419A9999796F515541C3F528BC4CAB50415C8FC2356A515541EC51B81E4DAB5041333333C365515541F6285C2F4DAB5041295C8F0265515541295C8F1248AB50413D0AD75364515541AE47E1FA3BAB5041C3F528EC6A515541EC51B84E32AB50415C8FC2356F515541AE47E11A26AB5041C3F528DC7051554114AE479124AB5041E17A149E72515541EC51B85E1BAB504152B81EC57651554185EB51B81AAB50411F85EB3177515541295C8F421DAB5041EC51B84E7C5155417B14AE871DAB50419A9999E97C515541B81E851B27AB504152B81E4578515541AE47E19A27AB50410AD7A300795155413D0AD7C32BAB50410000008081515541666666F62DAB50416666660686515541AE47E19A2EAB5041B81E85FB84515541666666762EAB50416666669680515541333333532EAB50415C8FC24579515541
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000EB0C31A848AB5041AB5B0BE3715155411F85EBC14BAB5041C3F528FC705155411B29D1074CAB50417897FAAD705155412281EF6F4CAB5041E736853970515541E34338934CAB50417FE70D1270515541D0EED99E4CAB5041ED530B0570515541B81E851B4DAB50419A9999796F515541D216280A4DAB5041FE842E846E51554170A5C7014DAB50416D79C80D6E515541C36FE6F04CAB5041C182331F6D515541B42944C44CAB50418DF355A86A515541AB4F89C04CAB504107DC9D736A515541C3F528BC4CAB50415C8FC2356A5155411692B6D84CAB50414D51EAEB68515541D2E483034DAB5041ADE377FD665155412132A82C4DAB5041172DDA2165515541975C6FE949AB5041DD38B39264515541BF8B131648AB504125364F5464515541AA08A1A947AB5041CD32118D64515541AE47E1FA3BAB5041C3F528EC6A515541EC51B84E32AB50415C8FC2356F5155415BE9F68026AB5041B3375BCE70515541ED2C5F1626AB5041100E5BFA705155410BE897D424AB50410D8122517251554114AE479124AB5041E17A149E72515541E8A60EF620AB50410FDCE53E74515541EC51B85E1BAB504152B81EC57651554185EB51B81AAB50411F85EB3177515541295C8F421DAB5041EC51B84E7C5155417B14AE871DAB50419A9999E97C5155412C83ED521FAB50416828FD0A7C51554144E2AFD026AB50417E1C7A47785155414204A9E626AB50415E22BE5E78515541B81E851B27AB504152B81E4578515541AE47E19A27AB50410AD7A30079515541A4AFB9822BAB50412B0AFEFA8051554183565EF62DAB50419F208FF385515541AE47E19A2EAB5041B81E85FB84515541666666762EAB50416666669680515541DF3D0C672EAB504140FAA9657D515541265781572EAB504154B2B98C7B515541265781572EAB5041436ECC2A7A515541333333532EAB50415C8FC24579515541265781572EAB5041D4697A3E795155410CC02F5C2EAB5041AC283B1E79515541086F56572FAB50413C34BF8D77515541EC51B85E2FAB504114AE478177515541B81E853B33AB50419A9999D9745155418FC2F5C836AB50413D0AD78374515541E17A14BE39AB5041EC51B8EE74515541EC51B8AE3CAB5041A4703D3A755155410AD7A3E03FAB5041C3F5282C765155413D261FA340AB50414C701CE475515541DF15548441AB5041F2C70A6675515541F25A6CAF41AB5041D0276F4B75515541AE47E1DA43AB504148E17AF47351554114AE475145AB5041CDCCCC0C73515541333333E345AB504114AE47B172515541EB0C31A848AB5041AB5B0BE371515541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>412343 - 399555
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000F6285C9F2AF05041F6285C6F8338544114AE47F121F050415C8FC2C5813854419A9999890FF05041EC51B83E7E385441000000100FF05041666666C6803854419A9999F90DF05041CDCCCC7C80385441A4703DBA09F05041713D0A87903854418FC2F5F807F050418FC2F5D8953854417B14AE0704F05041295C8F829F385441713D0AB7FEEF504148E17A64AB385441CDCCCC4CFBEF5041CDCCCCACB4385441F6285CAF36F0504152B81E85C43854413D0AD70337F05041CDCCCCECC3385441EC51B87E3AF0504114AE4721B9385441EC51B85E3DF0504185EB51E8AD385441E17A14FE43F0504114AE47A1963854410AD7A37040F050419A999989953854410AD7A30040F05041A4703D3A94385441A4703D5A40F05041EC51B8DE913854410AD7A3E040F05041B81E854B903854413D0AD74340F05041F6285C5F8E385441E17A14DE3EF050419A9999F98C3854411F85EB613DF050410AD7A3308C385441F6285CEF3AF05041A4703DAA8B385441CDCCCCEC38F05041A4703D3A8B385441713D0AF737F050417B14AE878A385441713D0AA736F050411F85EBD187385441E17A144E36F050415C8FC2E585385441B81E850B36F05041333333E383385441F6285C9F2AF05041F6285C6F83385441
+</a>
+
+<b>
+010600000001000000010300000001000000220000008354A3A51BF050413276DF9080385441DD4A1FB518F050415B54A5008038544126B3BBA618F050415B54A500803854414BFAA46314F05041CDCCCC4C8C3854411758359510F05041FD84BAF8963854413B40A2EE0FF05041D8E9926B9A385441719CC5F40EF05041007905539E3854413CF35C220DF05041FD5FD5B7A6385441DA1F64342CF050417735F14CB238544124B3FE9C31F05041F8D75908A73854412F406EE533F05041DC17E908A238544100DA5E0034F050414DDCA60EA2385441F9D97E3D34F0504172D851EDA03854410075CF2540F05041712597B9A3385441E17A14FE43F0504114AE47A1963854410AD7A37040F050419A999989953854410AD7A30040F05041A4703D3A94385441A4703D5A40F05041EC51B8DE913854415BFFB6DD40F05041C6A54B54903854415BFFB6DD40F05041E9AB564290385441144FEA9440F050412B4AD65D8F3854416C1F285440F05041C41593928E38544139FB37943FF05041F219BDAF8D385441E17A14DE3EF050419A9999F98C3854411F85EB613DF050410AD7A3308C385441F6285CEF3AF05041A4703DAA8B385441CDCCCCEC38F05041A4703D3A8B385441713D0AF737F050417B14AE878A385441713D0AA736F050411F85EBD187385441E17A144E36F050415C8FC2E585385441B81E850B36F05041333333E383385441F6285C9F2AF05041F6285C6F8338544114AE47F121F050415C8FC2C5813854418354A3A51BF050413276DF9080385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941916 - 3114712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E3F0BD7E2AF050412F774770A119554145BDC54D43F05041C051149CA1195541BAE85EEF41F0504192FF78229C1955410053929E42F05041C1C0DE149A1955410053929E42F05041A91711589719554191BE94514AF050412427A5B8851955413F4895074CF05041484B09897E195541A845F7FF3DF05041BD54371C6E195541A33F91323FF050413DFB66D162195541D7065DF23BF05041F7903322621955416950F49634F05041DAE1FF976019554123E6C0E733F05041B74ED14E6F195541E98759D330F05041760C6F7B7C195541BB35BE592BF050411E43AAF995195541E3F0BD7E2AF050412F774770A1195541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000600364F233F050411E5A1E6A6E195541D30451AC33F05041CA88BF636E195541C9C7125432F05041C776CD44751955412BFF527132F05041B6078A71751955410A5F977231F050413FC44EC6791955415B805DB430F05041C0DB73937D195541B332954F2DF050413439F9D88C1955416F55E5C82BF0504180171CF49319554179FD3F992AF05041D8DF4E5BA119554130DD9FE730F05041CC78987BA11955419B4C73FF42F05041510A8A9BA1195541CFFBDF2A42F050418D42858A991955418EE272E642F05041D2C0A6E09519554181D6DB7C44F0504161FF17D392195541EE32B6784AF050417F9F80838519554121408C534BF05041DAD01B9B811955416607596846F0504108EF633C7B1955417C157CF43FF05041C01DE64F721955410E4406953EF05041A2DC1FB46F19554150E2E0713EF050417E22EFA46D1955414FE2E0713EF05041675A937C6A195541BCAD1A7B3FF050412582387762195541906AADC338F05041669BA5BB611955418A4D183F35F05041E663A52661195541910B361434F0504105AAFA926B195541600364F233F050411E5A1E6A6E195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941916 - 3503575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E3F0BD7E2AF050412F774770A119554145BDC54D43F05041C051149CA1195541BAE85EEF41F0504192FF78229C1955410053929E42F05041C1C0DE149A1955410053929E42F05041A91711589719554191BE94514AF050412427A5B8851955413F4895074CF05041484B09897E195541A845F7FF3DF05041BD54371C6E195541A33F91323FF050413DFB66D162195541D7065DF23BF05041F7903322621955416950F49634F05041DAE1FF976019554123E6C0E733F05041B74ED14E6F195541E98759D330F05041760C6F7B7C195541BB35BE592BF050411E43AAF995195541E3F0BD7E2AF050412F774770A1195541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000600364F233F050411E5A1E6A6E195541D30451AC33F05041CA88BF636E195541C9C7125432F05041C776CD44751955412BFF527132F05041B6078A71751955410A5F977231F050413FC44EC6791955415B805DB430F05041C0DB73937D195541B332954F2DF050413439F9D88C1955416F55E5C82BF0504180171CF49319554179FD3F992AF05041D8DF4E5BA119554130DD9FE730F05041CC78987BA11955419B4C73FF42F05041510A8A9BA1195541CFFBDF2A42F050418D42858A991955418EE272E642F05041D2C0A6E09519554181D6DB7C44F0504161FF17D392195541EE32B6784AF050417F9F80838519554121408C534BF05041DAD01B9B811955416607596846F0504108EF633C7B1955417C157CF43FF05041C01DE64F721955410E4406953EF05041A2DC1FB46F19554150E2E0713EF050417E22EFA46D1955414FE2E0713EF05041675A937C6A195541BCAD1A7B3FF050412582387762195541906AADC338F05041669BA5BB611955418A4D183F35F05041E663A52661195541910B361434F0504105AAFA926B195541600364F233F050411E5A1E6A6E195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 164648
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 1343563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 4066720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>462290 - 3059051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000022000000CDCCCC8CCAF05041666666F619FD5441C3F5282CC7F05041D7A3703D24FD5441C3F528ECC6F05041F6285CDF25FD54410AD7A310C7F05041713D0A5727FD5441A4703D1ACAF050411F85EB6126FD54419A999949D4F05041C3F5282C23FD544114AE4751D6F05041D7A3704D35FD5441C3F5288CD6F050416666661639FD5441C3F5288CD6F05041AE47E1CA3DFD5441713D0A27D6F05041CDCCCCCC3FFD5441666666D6D6F05041A4703DAA3FFD5441CDCCCCECDAF050415C8FC2A53EFD5441C3F528BCDCF05041E17A146E45FD5441AE47E11AE2F0504114AE47A145FD5441295C8F52E3F0504152B81EB542FD5441A4703DAAE3F05041AE47E15A3FFD54418FC2F5E8E3F05041333333533AFD5441C3F5281CE4F05041CDCCCC3C38FD5441666666B6E3F05041D7A370AD34FD5441333333C3E3F05041000000202FFD544152B81E35E4F05041CDCCCC9C2BFD5441295C8F02E4F050411F85EB9129FD5441666666B6E3F05041E17A147E24FD54419A9999A9E3F0504114AE47211FFD5441E17A145EE3F0504114AE47011AFD54415C8FC2C5E2F0504114AE477117FD544148E17AE4E0F05041713D0A470FFD544148E17AB4DFF050417B14AE570AFD5441AE47E11ADAF05041295C8FD20EFD54411F85EBD1D5F050413D0AD70311FD5441295C8F22D2F050413D0AD79313FD54419A999929CEF050411F85EBD115FD5441C3F5285CCBF05041000000D017FD5441CDCCCC8CCAF05041666666F619FD5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000AB3BA958CCF05041AD4CE1AC25FD54410D8817ADD2F050414A0766DE16FD54419015D647D7F050417F7B2B7C16FD54417E66A7DAD8F050412BDE68760FFD544158F75A19D8F05041E37F50D90FFD54411F85EBD1D5F050413D0AD70311FD5441295C8F22D2F050413D0AD79313FD54419A999929CEF050411F85EBD115FD5441C3F5285CCBF05041000000D017FD5441CDCCCC8CCAF05041666666F619FD5441C3F5282CC7F05041D7A3703D24FD5441C3F528ECC6F05041F6285CDF25FD54410AD7A310C7F05041713D0A5727FD5441A4703D1ACAF050411F85EB6126FD5441610038DFCBF0504146AC27D325FD5441AB3BA958CCF05041AD4CE1AC25FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426206 - 243967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000066666686DBAA5041713D0A2751F95441713D0A57DEAA5041F6285C9F4BF95441000000C0E0AA504114AE47E145F954413D0AD7C3E2AA5041E17A14FE3FF954415C8FC265E4AA5041E17A14FE39F95441AE47E15AE5AA5041A4703DDA33F95441C3F528DCE5AA5041B81E85CB2DF954415C8FC2D5DFAA5041E17A144E2CF9544114AE47D1C7AA5041000000D027F95441000000C0B4AA50418FC2F5F823F9544100000080B2AA50410AD7A31024F95441B81E85BBB0AA5041CDCCCCCC24F9544148E17AB4AEAA50417B14AE7726F9544114AE478186AA504185EB51F84CF95441A4703D7A84AA504152B81E854EF954411F85EBE183AA50415C8FC25550F9544114AE477183AA5041A4703D7A56F9544152B81E7589AA50415C8FC29551F95441E17A14BE93AA5041F6285CEF4AF95441F6285CFF96AA50411F85EBD148F95441CDCCCCFCA1AA5041CDCCCCBC41F95441666666B69CAA5041E17A149E4EF95441333333B398AA50417B14AE3752F95441EC51B8EE83AA50413333334364F954417B14AEC784AA5041000000C065F954413D0AD71387AA5041000000B067F954419A9999C999AA50416666660675F954419A999979B2AA5041B81E85DB86F95441CDCCCCDCB3AA5041CDCCCCBC86F95441295C8F62B5AA5041CDCCCC2C84F95441E17A148EB9AA5041A4703D3A7EF95441AE47E1BABFAA5041A4703D3A77F954413D0AD7E3C5AA504148E17A7470F954411F85EB61CBAA50415C8FC2A569F95441F6285CFFD4AA5041F6285CEF5BF9544100000060D8AA50410AD7A38056F9544166666686DBAA5041713D0A2751F95441
+</a>
+
+<b>
+010600000001000000010300000001000000100000007B14AEC784AA5041000000C065F95441FA8B6BFD86AA5041883F619367F95441776DE97C8FAA5041E273DC555DF95441C3AD269C8FAA50414D15F82F5DF9544126ABFFDF8FAA50415224ACDD5CF95441DB19BEA595AA5041734D39DD55F95441CD62111D96AA5041C9937C4C55F9544193A9009996AA5041E79028B654F954418FF0441798AA5041DB7D35C852F95441D3AE6B2C95AA50414B341C4855F9544183E906BD91AA50410869384458F95441331F85918CAA5041412239C25CF954415A026F0A89AA5041DC8CEBD25FF95441C3DB96FF83AA5041F64A4E3E64F95441EC51B8EE83AA50413333334364F954417B14AEC784AA5041000000C065F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426206 - 315249
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000066666686DBAA5041713D0A2751F95441713D0A57DEAA5041F6285C9F4BF95441000000C0E0AA504114AE47E145F954413D0AD7C3E2AA5041E17A14FE3FF954415C8FC265E4AA5041E17A14FE39F95441AE47E15AE5AA5041A4703DDA33F95441C3F528DCE5AA5041B81E85CB2DF954415C8FC2D5DFAA5041E17A144E2CF9544114AE47D1C7AA5041000000D027F95441000000C0B4AA50418FC2F5F823F9544100000080B2AA50410AD7A31024F95441B81E85BBB0AA5041CDCCCCCC24F9544148E17AB4AEAA50417B14AE7726F9544114AE478186AA504185EB51F84CF95441A4703D7A84AA504152B81E854EF954411F85EBE183AA50415C8FC25550F9544114AE477183AA5041A4703D7A56F9544152B81E7589AA50415C8FC29551F95441E17A14BE93AA5041F6285CEF4AF95441F6285CFF96AA50411F85EBD148F95441CDCCCCFCA1AA5041CDCCCCBC41F95441666666B69CAA5041E17A149E4EF95441333333B398AA50417B14AE3752F95441EC51B8EE83AA50413333334364F954417B14AEC784AA5041000000C065F954413D0AD71387AA5041000000B067F954419A9999C999AA50416666660675F954419A999979B2AA5041B81E85DB86F95441CDCCCCDCB3AA5041CDCCCCBC86F95441295C8F62B5AA5041CDCCCC2C84F95441E17A148EB9AA5041A4703D3A7EF95441AE47E1BABFAA5041A4703D3A77F954413D0AD7E3C5AA504148E17A7470F954411F85EB61CBAA50415C8FC2A569F95441F6285CFFD4AA5041F6285CEF5BF9544100000060D8AA50410AD7A38056F9544166666686DBAA5041713D0A2751F95441
+</a>
+
+<b>
+010600000001000000010300000001000000100000007B14AEC784AA5041000000C065F95441FA8B6BFD86AA5041883F619367F95441776DE97C8FAA5041E273DC555DF95441C3AD269C8FAA50414D15F82F5DF9544126ABFFDF8FAA50415224ACDD5CF95441DB19BEA595AA5041734D39DD55F95441CD62111D96AA5041C9937C4C55F9544193A9009996AA5041E79028B654F954418FF0441798AA5041DB7D35C852F95441D3AE6B2C95AA50414B341C4855F9544183E906BD91AA50410869384458F95441331F85918CAA5041412239C25CF954415A026F0A89AA5041DC8CEBD25FF95441C3DB96FF83AA5041F64A4E3E64F95441EC51B8EE83AA50413333334364F954417B14AEC784AA5041000000C065F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426315 - 2983535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000CDCCCC8C5D9850417B14AE373C3855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A343855413D0AD7335C985041AE47E17A3A385541295C8F825C985041EC51B8BE3B385541CDCCCC8C5D9850417B14AE373C385541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CDCCCC8C5D9850417B14AE373C3855416AA24D9262985041809E650C3938554133FB5FAA66985041F313F57636385541DF36309A68985041627A0C3E353855410A3626E86B985041AB592928333855418C7E99C96D985041704751F831385541073D82546E985041EFD6A6A0313855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A34385541B25B55125C985041C92885003A385541DFF08A906D985041EBE8F2972E38554100A805436E985041ADB22556303855413EA7A8215E985041AAB91CBB3A385541295C8F825C985041EC51B8BE3B385541CDCCCC8C5D9850417B14AE373C385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426315 - 3699392
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000CDCCCC8C5D9850417B14AE373C3855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A343855413D0AD7335C985041AE47E17A3A385541295C8F825C985041EC51B8BE3B385541CDCCCC8C5D9850417B14AE373C385541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CDCCCC8C5D9850417B14AE373C3855416AA24D9262985041809E650C3938554133FB5FAA66985041F313F57636385541DF36309A68985041627A0C3E353855410A3626E86B985041AB592928333855418C7E99C96D985041704751F831385541073D82546E985041EFD6A6A0313855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A34385541B25B55125C985041C92885003A385541DFF08A906D985041EBE8F2972E38554100A805436E985041ADB22556303855413EA7A8215E985041AAB91CBB3A385541295C8F825C985041EC51B8BE3B385541CDCCCC8C5D9850417B14AE373C385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524104 - 2927826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51687BBA50411F85EBC15E255441B81E852B7DBA50418FC2F5185D255441CDCCCC3C7FBA50410AD7A3205C2554419A9999597DBA50410AD7A3405B255441B81E850B66BA504114AE47017B255441000000306ABA50417B14AE677D255441CDCCCCBC6CBA50415C8FC2957A2554411F85EBB16EBA5041666666067A255441EC51B86E76BA5041D7A3702D6D255441713D0AF77ABA50419A9999C96525544185EB51687BBA50411F85EBC15E255441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000F5D5EDD26FBA5041292E54B778255441C4C6B4C571BA504184378B9179255441089F0BD174BA50419D15E4CF792554418DA2407878BA504184378B917925544138F3FA7C7CBA5041507BD914792554412E3147CD7EBA50415DEA0534792554419956233682BA5041292E54B778255441348B38AC83BA5041A7D7977F772554416847EA2884BA5041A42A1F107525544110EB2BBE85BA504109F6099A732554412007D14C88BA50413A0543A771255441B27932138CBA504181455C836D255441A8B77E638EBA5041E0B6552E672554411030E25C8FBA50419CDEFE2264255441EC8FD56E91BA5041FEFC703D60255441B03644D691BA504136D26FB35B2554411B1C486186BA504170F09CE55325544151EEF4AE74BA504190E0BFD747255441DAA52F1A69BA5041024C46F43F255441A53FD31B61BA5041068E61823A255441D1D7504F58BA5041D16A11843425544158E0867245BA50417546BB9D27255441BD66BB5D3ABA504145F2CBF11F255441167EC3292FBA5041FBBF8307182554412233FCE92DBA50411774EAEA1E255441375AE7922CBA504139EC214B34255441CBBCDBF42BBA50418C03F58A3F255441D175B3042BBA5041AF91CCD14B25544113D14ABA2CBA5041D7257FA24C25544188B8DAD22DBA5041F003D8E04C25544123EDEF482FBA5041E494ABC14C255441E56E8A1C31BA5041BA9AADF44925544167C5465432BA50414206A56C462554410F6988E933BA5041DA8D41734525544105A7D43936BA504180840A99442554416D1F383337BA5041BE0270C5422554416D1F383337BA5041C7C423754025544156EE576439BA504139FF3A1E3F255441BD66BB5D3ABA5041EB6430633E255441737929123CBA5041029610323C255441737929123CBA5041CB2CE64539255441CD8260EC3CBA50413D67FDEE372554417626A2813EBA5041D5EE99F5362554411ECAE31640BA504194C3BB5936255441C76D25AC41BA5041A132E8783625544148C4E1E342BA50417BE5621B36255441A67A912D46BA504120DC2B41352554415B8DFFE147BA50412D4B5860352554419F6556ED4ABA50417BE5621B362554417BC549FF4CBA50415498DDBD3525544123698B944EBA50413ABA847F352554419BFD931C52BA50414AD6290E38255441C24A197A52BA504126361D203A25544119A7D7E450BA5041F526E4123C255441F359528750BA50411F21E2DF3E255441F359528750BA50417A2A19BA3F2554419BFD931C52BA504139FF3A1E3F2554416AEE5A0F54BA504184ECCC693D25544153BD7A4056BA50410F053D513C2554417DB7780D59BA50419A1DAD383B25544132CAE6C15ABA5041DB488BD43B255441C18FCF185CBA50411C7469703C2554419080960B5EBA504174D027DB3A25544186BEE25B60BA504129E3958F3C2554418C18D43A65BA5041604CC07B3F25544125A0704164BA504163F938EB412554410DC2170364BA5041F66B9AB145255441CF43B2D665BA5041A1BC54B649255441208B350169BA50419AA719764E255441C2193C566FBA504179B485F752255441DA15DFA26FBA5041F9E131F1542554416053DF467BBA504173B9BF4A5A2554416666668680BA50418FC2F5B85C255441246F931D81BA50416F3788E65E2554417CCB51887FBA50416575D436612554412E3147CD7EBA5041CF9AB09F642554414562279C7CBA5041DFB6552E672554417512D3B379BA504173F69BD86725544120C282CA75BA50414AA6183E6E2554416ABD7DEB70BA50412581DB4776255441F5D5EDD26FBA5041292E54B778255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524104 - 3733261
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51687BBA50411F85EBC15E255441B81E852B7DBA50418FC2F5185D255441CDCCCC3C7FBA50410AD7A3205C2554419A9999597DBA50410AD7A3405B255441B81E850B66BA504114AE47017B255441000000306ABA50417B14AE677D255441CDCCCCBC6CBA50415C8FC2957A2554411F85EBB16EBA5041666666067A255441EC51B86E76BA5041D7A3702D6D255441713D0AF77ABA50419A9999C96525544185EB51687BBA50411F85EBC15E255441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000F5D5EDD26FBA5041292E54B778255441C4C6B4C571BA504184378B9179255441089F0BD174BA50419D15E4CF792554418DA2407878BA504184378B917925544138F3FA7C7CBA5041507BD914792554412E3147CD7EBA50415DEA0534792554419956233682BA5041292E54B778255441348B38AC83BA5041A7D7977F772554416847EA2884BA5041A42A1F107525544110EB2BBE85BA504109F6099A732554412007D14C88BA50413A0543A771255441B27932138CBA504181455C836D255441A8B77E638EBA5041E0B6552E672554411030E25C8FBA50419CDEFE2264255441EC8FD56E91BA5041FEFC703D60255441B03644D691BA504136D26FB35B2554411B1C486186BA504170F09CE55325544151EEF4AE74BA504190E0BFD747255441DAA52F1A69BA5041024C46F43F255441A53FD31B61BA5041068E61823A255441D1D7504F58BA5041D16A11843425544158E0867245BA50417546BB9D27255441BD66BB5D3ABA504145F2CBF11F255441167EC3292FBA5041FBBF8307182554412233FCE92DBA50411774EAEA1E255441375AE7922CBA504139EC214B34255441CBBCDBF42BBA50418C03F58A3F255441D175B3042BBA5041AF91CCD14B25544113D14ABA2CBA5041D7257FA24C25544188B8DAD22DBA5041F003D8E04C25544123EDEF482FBA5041E494ABC14C255441E56E8A1C31BA5041BA9AADF44925544167C5465432BA50414206A56C462554410F6988E933BA5041DA8D41734525544105A7D43936BA504180840A99442554416D1F383337BA5041BE0270C5422554416D1F383337BA5041C7C423754025544156EE576439BA504139FF3A1E3F255441BD66BB5D3ABA5041EB6430633E255441737929123CBA5041029610323C255441737929123CBA5041CB2CE64539255441CD8260EC3CBA50413D67FDEE372554417626A2813EBA5041D5EE99F5362554411ECAE31640BA504194C3BB5936255441C76D25AC41BA5041A132E8783625544148C4E1E342BA50417BE5621B36255441A67A912D46BA504120DC2B41352554415B8DFFE147BA50412D4B5860352554419F6556ED4ABA50417BE5621B362554417BC549FF4CBA50415498DDBD3525544123698B944EBA50413ABA847F352554419BFD931C52BA50414AD6290E38255441C24A197A52BA504126361D203A25544119A7D7E450BA5041F526E4123C255441F359528750BA50411F21E2DF3E255441F359528750BA50417A2A19BA3F2554419BFD931C52BA504139FF3A1E3F2554416AEE5A0F54BA504184ECCC693D25544153BD7A4056BA50410F053D513C2554417DB7780D59BA50419A1DAD383B25544132CAE6C15ABA5041DB488BD43B255441C18FCF185CBA50411C7469703C2554419080960B5EBA504174D027DB3A25544186BEE25B60BA504129E3958F3C2554418C18D43A65BA5041604CC07B3F25544125A0704164BA504163F938EB412554410DC2170364BA5041F66B9AB145255441CF43B2D665BA5041A1BC54B649255441208B350169BA50419AA719764E255441C2193C566FBA504179B485F752255441DA15DFA26FBA5041F9E131F1542554416053DF467BBA504173B9BF4A5A2554416666668680BA50418FC2F5B85C255441246F931D81BA50416F3788E65E2554417CCB51887FBA50416575D436612554412E3147CD7EBA5041CF9AB09F642554414562279C7CBA5041DFB6552E672554417512D3B379BA504173F69BD86725544120C282CA75BA50414AA6183E6E2554416ABD7DEB70BA50412581DB4776255441F5D5EDD26FBA5041292E54B778255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>427751 - 54226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000C3F528BC0C4B5141333333232AB154411F85EBD1094B5141B81E85EB2DB15441295C8FB2064B5141295C8FC233B15441E17A14DE054B5141AE47E18A38B154417B14AEA7064B5141AE47E16A3EB154419A9999A9084B5141F6285C4F4AB154417B14AE570A4B51415C8FC29551B15441EC51B88E0C4B51419A9999D958B154415C8FC2650F4B51418FC2F50860B1544100000020134B514148E17A0467B15441B81E85AB174B51411F85EB716DB154413D0AD7931C4B5141A4703D9A73B154410AD7A370224B5141AE47E10A7AB15441E17A146E244B5141F6285C3F7AB15441A4703D3A224B5141E17A140E78B15441713D0A571E4B5141295C8FC253B15441F6285C6F1D4B514114AE47514BB15441CDCCCC4C1D4B5141CDCCCCAC46B1544152B81EB51C4B51417B14AE5732B15441D7A3708D1C4B5141666666062DB15441B81E859B1C4B514148E17A042CB15441333333F31C4B5141F6285C9F25B1544185EB51F81C4B51415C8FC24525B154419A9999491D4B5141713D0A571FB1544114AE4721204B51418FC2F56819B1544114AE4701214B514114AE478118B15441000000402A4B514114AE47F10EB154411F85EB51284B5141AE47E1CA0EB154417B14AEF7204B51410AD7A32016B15441EC51B80E1D4B514114AE47711AB154419A999939194B5141EC51B80E20B15441C3F528BC0C4B5141333333232AB15441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000624A4FB01C4B51412BCC4D802AB15441E4DC539D1C4B5141ECC2BAE22BB154417B14AEC75B4B514152B81E0532B15441E17A146E5C4B5141000000502BB1544185EB51F81C4B51415C8FC24525B15441333333F31C4B5141F6285C9F25B15441624A4FB01C4B51412BCC4D802AB15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>427867 - 5316048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A000000295C8F92E1425141B81E85BBB8A5544133333353DD425141713D0A07B9A5544152B81E35D64251418FC2F588B9A5544148E17A04D4425141D7A370FDB9A55441E17A143ED342514185EB51C8BAA554415C8FC215D3425141C3F5281CBCA554411F85EB01D34251410AD7A3C0CDA55441E17A149ED2425141CDCCCCFCE2A55441666666E6D0425141A4703DCAEFA55441A4703D5AD0425141CDCCCCDCF4A55441713D0A57CF425141C3F528CCFAA55441713D0A27CD425141EC51B8BE01A6544100000080C64251418FC2F5380DA65441333333F3C342514114AE471112A6544148E17A14C2425141A4703DEA16A6544114AE47F1C14251410000005019A6544166666606C3425141CDCCCC3C1BA6544148E17A84C642514152B81E851CA65441000000B0C742514152B81E251DA65441000000B0C7425141CDCCCCEC1DA6544185EB5198C642514148E17A041FA654411F85EB01C3425141F6285CFF20A6544148E17AB4C34251417B14AE6721A654418FC2F588C7425141666666F61FA6544100000050CA425141EC51B81E1EA654418FC2F598CE425141295C8F2216A65441F6285CDFD5425141EC51B86E0CA65441AE47E10ADE425141E17A148E04A65441AE47E12AE4425141C3F5281CFEA55441295C8FB2E8425141CDCCCC1CF8A5544152B81E45ED4251413D0AD743F0A5544133333353EF425141AE47E18AE8A55441666666B6F0425141E17A141EE6A55441F6285CFFF0425141F6285CBFE3A554411F85EB41F0425141C3F5281CE1A554417B14AEE7EE425141EC51B8CEDEA5544152B81ED5E6425141EC51B86ED4A55441295C8F52E5425141EC51B8DED1A55441AE47E13AE442514152B81EA5CEA55441C3F528FCE2425141666666D6C9A5544152B81E05E24251413D0AD783C2A55441295C8F92E1425141B81E85BBB8A55441
+</a>
+
+<b>
+0106000000010000000103000000010000006800000048E17AB4C34251417B14AE6721A65441E247CE45C74251413842B10F20A65441C0FA877FC7425141066ACCFE1FA6544100000050CA425141EC51B81E1EA65441B2657B65CC425141F7A0963C1AA65441F911602DCE42514121AC0AEB16A654417C180E96CE4251419DD32E1916A6544107F41D03D0425141163E8F3F14A65441242C091FD34251411A990F1A10A654416888D76FD542514184F772030DA6544121F4FF2BD6425141E1F2D2240CA654414B2023D5D84251411090129409A6544152DF0779DC425141EBD78A1106A654411397CAA8DE4251415627EBE703A654412579AAABE2425141502365AFFFA554418A2A113CE44251415C248606FEA5544137738232E54251419E9320BFFCA5544188EFA708E842514125A1BEFDF8A55441E320998DE8425141C755BC4DF8A55441EE974F51EA425141B012FD54F5A554419FA5D0B3EB425141033393F4F2A55441DAB14B47ED425141F0FAA93BF0A55441A83165D7EE425141A76C205CEAA5544129E4AF4EEF425141CBD2D69BE8A55441FDD41B98EF425141B9E77112E8A554414586D1A1EF425141B08A7901E8A554411E1649B4F0425141468FC621E6A5544188456FC6F04251418A3BBD98E5A55441298AC2FEF042514148A259C4E3A5544196DA7FB5F04251413A611BB8E2A554411F85EB41F0425141C3F5281CE1A554416E2B83EEEF425141D4A72A8EE0A554416B0FD868EE4251411EF4B42BDEA5544121E50A2AE84251413912E224D6A5544184B832B8E64251411296A33DD4A554414B6648A0E5425141D7FD9D62D2A554418AFC004FE54251419BF238D4D1A55441803BBDCCE44251417D35B053D0A55441FED30D5BE4425141CD8E1804CFA55441B90F672FE4425141CDF2CC78CEA55441F01F43F7E34251417F7E04A0CDA55441545A79FBE2425141B8E031D1C9A5544121934AE6E24251414F637530C9A55441BA65EC27E24251412A69EE8BC3A554418F085FFFE1425141987A2B06C2A554419F1197DDE1425141F9AC7E22BFA55441FEC62CABE1425141C638DCD2BAA55441A25EB48DE142514141D352B7B8A554410B399D1BDE42514101E71EF9B8A55441743DB619DA425141CF5EE641B9A554417375705BD6425141804B3A86B9A55441667AD5ADD4425141872D41DAB9A55441E4723412D4425141EBA696FAB9A55441C258999CD342514126ACAA67BAA55441D0413C3ED3425141421355C3BAA554419E83FE28D3425141880F0B7ABBA55441BD28EE15D34251416C7BB91ABCA55441BE31E311D34251413590B88DBFA55441A3D9A70ED3425141A6766D6DC2A55441CC8DF10CD34251419B7C2DF3C3A5544192D9AE0AD34251418BA5C8F5C5A55441A33635FFD242514110F24F54CEA554417D1636E1D2425141F87B96B5D4A554417B41F4AAD2425141E108D23FE0A554413ECE159ED2425141579F84FCE2A554413CBEFD8FD2425141DEF3D165E3A554415FA5B1E2D1425141E7849A71E8A554413F928C4CD1425141212ECED0ECA55441088BD0E9D04251419072C9B0EFA55441CCF91696D042514117384DB2F2A5544145928B70D04251415F58250EF4A5544149884D59D0425141D9124BE2F4A554417B856646D04251418E0A1851F5A55441BA5D56A5CF425141A6BC3301F9A5544177B5815ACF425141E5DBD6B7FAA5544146541335CF42514128FF0738FBA554419450D93DCD4251412E6B477601A65441FA315E28CD425141429F80BA01A6544127544B1ECD4251411618CFCD01A6544185AB47F8CA425141DE69BE8205A65441490CA7C8C7425141644CF0010BA654417A027EA0C642514151C5E6000DA6544136BD1572C5425141AD74CC390FA65441A4776483C4425141DF7850FF10A6544186557C1CC44251414953D6C211A654417E9873F1C3425141F5FACF1512A65441AA1A9089C24251414678BBBA15A6544148E17A14C2425141A4703DEA16A65441CC2C5D0EC242514115A4E15417A65441CD6ACBF7C14251411EBA68DE18A654414BB75BF1C14251417CA5A24E19A654416C4F1A30C2425141BE98B7BF19A6544166666606C3425141CDCCCC3C1BA654413EF3EACFC54251410C94D0421CA654414DD4B97AC6425141AEC389811CA65441BEB5DBAAC7425141D8925F221DA65441000000B0C7425141FECD6EE81DA654411B52DC82C7425141B27AF0191EA654410255F19EC642514171783BFF1EA654416EC9644BC6425141BFD7EF2E1FA6544136FEE9CBC442514156E9950220A654412B2EB379C34251413B6240BD20A654418529C602C34251419B5B5DFE20A6544148E17AB4C34251417B14AE6721A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428334 - 88539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000713D0A870661514133333363EAA05441AE47E11A0D615141EC51B86EE8A05441000000702861514114AE47A1DEA0544148E17AB4296151413D0AD733DEA0544152B81E2521615141B81E857BBEA05441AE47E15AF96051410AD7A3F0CAA05441C3F528DCF8605141E17A146EC9A0544148E17AD4E9605141CDCCCC3CCEA0544133333303EB605141000000C0D9A0544114AE47E1F260514152B81E95DAA05441AE47E1AAF6605141713D0AB7D8A0544166666696F8605141713D0A47D8A054413D0AD773FA6051415C8FC2A5D9A05441295C8F62FB605141713D0A77E8A054419A9999190561514148E17A64E5A05441713D0A870661514133333363EAA05441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000060C966602061514106C540F4BCA054415C0AF66320615141871B87FFBCA05441C3F528DCF8605141E17A146EC9A05441AE47E15AF96051410AD7A3F0CAA0544152B81E2521615141B81E857BBEA05441508B8AA32961514154978D39DEA05441B281F8A6296151413F796538DEA05441E9032AB7296151413BD0E282DEA05441666666F62B6151410AD7A370DDA05441FA120FC92261514111FE9031BCA0544160C966602061514106C540F4BCA05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428708 - 3612013
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000130000001F85EBE198855141AE47E16A28AC5441CDCCCC5C9985514185EB51D829AC5441CDCCCC2C9C8551415C8FC23532AC54410AD7A350A08551417B14AE873EAC544166666666A4855141EC51B8AE4AAC5441666666F6A98551418FC2F5385BAC5441EC51B8EEAC85514148E17AF458AC54419A999949AF855141AE47E12A58AC544185EB5198B28551411F85EB1158AC5441CDCCCC5CB785514148E17AB453AC54410AD7A380B4855141C3F5286C4BAC54410AD7A3B0B185514148E17A7443AC54410AD7A360AF8551415C8FC2B53CAC5441713D0AE7AD85514152B81E9538AC544114AE4751A88551417B14AEE729AC5441E17A146EA5855141713D0A8724AC54411F85EBA1A4855141CDCCCCEC22AC544100000020A485514185EB51E821AC54411F85EBE198855141AE47E16A28AC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000700000088A626E298855141520ABF6A28AC5441682E5138A485514177E8DEEA21AC5441296FDC5D9D855141EF4FC12518AC5441A4703D0A9B8551419A9999191AAC54413D0AD7D398855141EC51B83E1CAC54415C8FC2D5958551418FC2F5581FAC544188A626E298855141520ABF6A28AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510167 - 149100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E00000085EB5158A85D5141666666860DC7544114AE4761A45D5141F6285CBF16C7544152B81E959F5D51413D0AD7B313C754417B14AE179D5D51413D0AD79317C75441EC51B86E9B5D5141666666D616C7544152B81EA5955D51417B14AED718C75441EC51B8EE925D5141C3F5287C20C7544148E17A94925D51411F85EB3121C75441333333D39A5D5141E17A142E29C75441295C8F429D5D51417B14AE5729C75441F6285C7F9F5D514148E17A3422C7544100000080A65D51417B14AEE721C75441E17A14CEA85D51410AD7A3A021C754419A9999E9A95D51417B14AEF71FC7544152B81E05AB5D5141CDCCCCEC1CC754417B14AE27AE5D514152B81E3517C754418FC2F518AF5D5141AE47E13A14C75441E17A14DEB05D5141295C8F9210C75441EC51B8FEB15D5141333333130CC7544152B81E15AB5D51416666667606C754417B14AE57AA5D514152B81E0506C754417B14AEF7AC5D5141C3F528BC02C7544148E17A54BD5D514133333363F2C6544152B81EC5C75D51413D0AD783E7C65441666666C6C35D5141D7A3709DE3C654411F85EB61C25D5141713D0AA7E3C6544133333353B55D51419A999999F1C654411F85EB21A35D5141A4703D5A04C75441B81E858BA95D51418FC2F51809C7544185EB5158A85D5141666666860DC75441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000E27BC5D0AA5D5141252E956D05C754417B14AEF7AC5D5141C3F528BC02C7544148E17A54BD5D514133333363F2C65441FAE82B91C65D51416FC18BC4E8C6544152B81EC5C75D51413D0AD783E7C6544139EE3410C45D514124DD7DE5E3C65441666666C6C35D5141D7A3709DE3C65441B854CEA0C25D514106B358A5E3C654410ACD52F6C05D5141BB586B2BE5C65441CF7FA6C3C05D514156D78B61E5C654419E8603F2BF5D51413EC27841E6C65441E80CAD39BE5D51417BADD217E8C654418B0E8E25BD5D51417AB3C33EE9C65441DFE6DFEAB85D5141A5843DC3EDC6544133333353B55D51419A999999F1C65441A7860DF4B15D514150055113F5C65441C2E43BD0AA5D5141682D666FFCC65441DB8AF196A85D51415AA236BAFEC654418B526077A75D5141E6EEA1E2FFC6544133197C11A45D5141EA0C4D6303C754411F85EB21A35D5141A4703D5A04C75441B81E858BA95D51418FC2F51809C7544185EB5158A85D5141666666860DC7544126D6320BA85D5141315DC8390EC7544199B6EF61A65D514152D2EE1612C7544135AE2682A55D5141BACF731F14C75441A199AC01A55D51414F64494A15C7544114AE4761A45D5141F6285CBF16C754410C0859C3A05D51417768AA7314C754419A2ED809A05D514177F8ECFD13C7544134A2E0B69F5D51415A1C44C913C7544166C0084D9F5D5141B090052414C754417B14AE179D5D51413D0AD79317C7544102840E869B5D51417C98CDE016C75441A039713F9B5D5141A5441E1117C75441D4BF93BF9B5D5141A5441E1117C754412A22DB39995D514136E2169A17C7544136962A8A955D5141F0489F2319C75441EC51B8EE925D5141C3F5287C20C7544148E17A94925D51411F85EB3121C754415FF977C29A5D51418E52E01D29C754416FB34EBF9A5D5141B623F91529C75441C45DCF519B5D51417382873629C75441295C8F429D5D51417B14AE5729C75441F6285C7F9F5D514148E17A3422C7544100000080A65D51417B14AEE721C75441E17A14CEA85D51410AD7A3A021C754419A9999E9A95D51417B14AEF71FC7544152B81E05AB5D5141CDCCCCEC1CC754414462CB14AE5D51418810905717C754417B14AE27AE5D514152B81E3517C75441480527BDAE5D5141B4FCE95C15C754418FC2F518AF5D5141AE47E13A14C75441E68264C4AF5D51412D64A2D812C75441E17A14DEB05D5141295C8F9210C75441EC51B8FEB15D5141333333130CC7544152B81E15AB5D51416666667606C754417B14AE57AA5D514152B81E0506C75441E27BC5D0AA5D5141252E956D05C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510167 - 310494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E00000085EB5158A85D5141666666860DC7544114AE4761A45D5141F6285CBF16C7544152B81E959F5D51413D0AD7B313C754417B14AE179D5D51413D0AD79317C75441EC51B86E9B5D5141666666D616C7544152B81EA5955D51417B14AED718C75441EC51B8EE925D5141C3F5287C20C7544148E17A94925D51411F85EB3121C75441333333D39A5D5141E17A142E29C75441295C8F429D5D51417B14AE5729C75441F6285C7F9F5D514148E17A3422C7544100000080A65D51417B14AEE721C75441E17A14CEA85D51410AD7A3A021C754419A9999E9A95D51417B14AEF71FC7544152B81E05AB5D5141CDCCCCEC1CC754417B14AE27AE5D514152B81E3517C754418FC2F518AF5D5141AE47E13A14C75441E17A14DEB05D5141295C8F9210C75441EC51B8FEB15D5141333333130CC7544152B81E15AB5D51416666667606C754417B14AE57AA5D514152B81E0506C754417B14AEF7AC5D5141C3F528BC02C7544148E17A54BD5D514133333363F2C6544152B81EC5C75D51413D0AD783E7C65441666666C6C35D5141D7A3709DE3C654411F85EB61C25D5141713D0AA7E3C6544133333353B55D51419A999999F1C654411F85EB21A35D5141A4703D5A04C75441B81E858BA95D51418FC2F51809C7544185EB5158A85D5141666666860DC75441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000E27BC5D0AA5D5141252E956D05C754417B14AEF7AC5D5141C3F528BC02C7544148E17A54BD5D514133333363F2C65441FAE82B91C65D51416FC18BC4E8C6544152B81EC5C75D51413D0AD783E7C6544139EE3410C45D514124DD7DE5E3C65441666666C6C35D5141D7A3709DE3C65441B854CEA0C25D514106B358A5E3C654410ACD52F6C05D5141BB586B2BE5C65441CF7FA6C3C05D514156D78B61E5C654419E8603F2BF5D51413EC27841E6C65441E80CAD39BE5D51417BADD217E8C654418B0E8E25BD5D51417AB3C33EE9C65441DFE6DFEAB85D5141A5843DC3EDC6544133333353B55D51419A999999F1C65441A7860DF4B15D514150055113F5C65441C2E43BD0AA5D5141682D666FFCC65441DB8AF196A85D51415AA236BAFEC654418B526077A75D5141E6EEA1E2FFC6544133197C11A45D5141EA0C4D6303C754411F85EB21A35D5141A4703D5A04C75441B81E858BA95D51418FC2F51809C7544185EB5158A85D5141666666860DC7544126D6320BA85D5141315DC8390EC7544199B6EF61A65D514152D2EE1612C7544135AE2682A55D5141BACF731F14C75441A199AC01A55D51414F64494A15C7544114AE4761A45D5141F6285CBF16C754410C0859C3A05D51417768AA7314C754419A2ED809A05D514177F8ECFD13C7544134A2E0B69F5D51415A1C44C913C7544166C0084D9F5D5141B090052414C754417B14AE179D5D51413D0AD79317C7544102840E869B5D51417C98CDE016C75441A039713F9B5D5141A5441E1117C75441D4BF93BF9B5D5141A5441E1117C754412A22DB39995D514136E2169A17C7544136962A8A955D5141F0489F2319C75441EC51B8EE925D5141C3F5287C20C7544148E17A94925D51411F85EB3121C754415FF977C29A5D51418E52E01D29C754416FB34EBF9A5D5141B623F91529C75441C45DCF519B5D51417382873629C75441295C8F429D5D51417B14AE5729C75441F6285C7F9F5D514148E17A3422C7544100000080A65D51417B14AEE721C75441E17A14CEA85D51410AD7A3A021C754419A9999E9A95D51417B14AEF71FC7544152B81E05AB5D5141CDCCCCEC1CC754414462CB14AE5D51418810905717C754417B14AE27AE5D514152B81E3517C75441480527BDAE5D5141B4FCE95C15C754418FC2F518AF5D5141AE47E13A14C75441E68264C4AF5D51412D64A2D812C75441E17A14DEB05D5141295C8F9210C75441EC51B8FEB15D5141333333130CC7544152B81E15AB5D51416666667606C754417B14AE57AA5D514152B81E0506C75441E27BC5D0AA5D5141252E956D05C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429293 - 3471453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002E000000B81E85AB1A625141C3F5287C0AC354415C8FC2C51A625141713D0AF707C35441AE47E10A1B62514114AE471106C354410AD7A3A01B62514148E17A4403C3544185EB51081C625141CDCCCC9C01C354417B14AEA71C625141EC51B8DEFFC254410AD7A3B01D625141A4703DEAFDC25441295C8FD21E6251411F85EB11FCC25441A4703D0A20625141713D0A47FAC254413D0AD77321625141B81E856BF8C25441CDCCCCDC2262514148E17AD4F6C254413D0AD7B324625141295C8F12F5C25441C3F528AC27625141F6285C6FF2C2544152B81EA529625141EC51B8CEF0C2544114AE47F12A625141666666A6EFC25441A4703D5A2C625141EC51B8FEEDC2544185EB51A82D62514133333333ECC2544148E17A642F6251417B14AE37E9C254413D0AD7C32D6251410AD7A390E8C254415C8FC2C52C6251418FC2F5E8E8C254411F85EB812C625141713D0A27E8C25441000000A02C62514133333313E8C25441713D0A8729625141CDCCCC4CE0C25441EC51B8AE28625141EC51B8DEDCC254410000000026625141D7A3701DDEC254413D0AD753236251417B14AEF7DEC2544148E17AA41C625141A4703D4AE1C2544152B81E351962514133333333E2C25441EC51B8FE11625141E17A14BEE3C25441000000801162514152B81E55E2C25441C3F528CC106251413D0AD773E4C2544114AE477110625141A4703DDAE5C25441D7A3704D106251415C8FC225E7C25441666666761062514148E17A14E8C25441CDCCCC7C156251418FC2F558F4C2544148E17AC40662514148E17AA4FDC25441D7A3709D0B625141333333730AC35441D7A370DD11625141B81E850B15C3544185EB5188176251417B14AEA71EC35441B81E856B18625141EC51B8DE1BC3544133333393196251417B14AE9717C35441000000401A62514185EB51D814C3544148E17A941A62514148E17AC412C354415C8FC2A51A62514152B81E0511C3544152B81E951A625141EC51B8FE0EC35441B81E85AB1A625141C3F5287C0AC35441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000CB20815F05625141779C0995F9C2544122424D0606625141B3579348FBC25441883F9289066251412D06589FFCC254410CC0DCE206625141A8834B91FDC25441914735320862514142228ABDFCC25441099F1CB309625141129E7DCAFBC254412DCA92080B625141B29BDFF2FAC25441A0C76A660C6251419D9CF615FAC25441E38D267B0D625141760A3867F9C25441EDA3510F0F625141115B0168F8C254412D6891BB10625141AAF59559F7C25441F2597467116251410B220CEDF6C254413C7CF4A813625141FFEA6180F5C25441CDCCCC7C156251418FC2F558F4C254418663AE22156251413F1DF47CF3C25441D3B1097814625141F8F35CDCF1C25441BA93E046146251411C468178F1C2544185EB51A813625141A4703D3AF0C254412F35A13B1362514180B6154DEFC2544185EB51B81162514100000000ECC254412D554E8E11625141AF056270EBC254412033881611625141A336F5D6E9C2544156E5CC17106251414FF6620CE7C25441881632050E625141168DB124E8C25441AFF0EA1E0C625141173F3426E9C2544116D2CC9D0962514142EDB579EAC25441B6A79E4B05625141523D7EC3ECC2544170FFBABC04625141CCB8C69DEBC25441397C92D30362514106AB81BEE9C25441D960E1C502625141F9CC065DEAC2544152B81E3500625141EC51B8DEEBC25441C436145101625141A70EEAB4EEC2544176B695030262514100766C7DF0C254411471618F0262514197B3EFE2F1C25441C9A1702C03625141673C9974F3C254419509A053046251418C32C3E2F6C2544121383ADF046251411E4E1546F8C25441CB20815F05625141779C0995F9C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429340 - 1230325
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000012000000F6285C1FAA8551418FC2F51841AA54415C8FC2E5A6855141B81E85CB33AA54411F85EB71A685514148E17A9432AA5441333333F3A58551411F85EB3130AA5441666666B6A485514152B81E452CAA5441333333A3A285514148E17A6425AA5441D7A3707DA18551419A99993921AA5441713D0A87A0855141C3F528BC22AA5441C3F5286C9F855141000000B024AA5441E17A143E9E855141E17A140E27AA54411F85EBE19E855141EC51B8FE28AA544166666626A08551415C8FC2B52DAA544133333373A1855141D7A3700D32AA5441295C8F52A28551416666668635AA544148E17A44A3855141333333F339AA5441E17A149EA585514152B81EF544AA5441CDCCCCBCAA85514185EB51E843AA5441F6285C1FAA8551418FC2F51841AA54410A000000CDCCCC6CA58551413D0AD7B339AA54415C8FC235A3855141B81E85BB35AA5441D7A3704DA38551415C8FC24535AA5441295C8FF2A385514185EB518834AA5441D7A3703DA585514148E17A8433AA5441CDCCCC4CA6855141CDCCCC7C34AA5441AE47E1DAA68551415C8FC22536AA54415C8FC215A785514148E17A9437AA54410AD7A370A68551411F85EB3139AA5441CDCCCC6CA58551413D0AD7B339AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000001883DC5FA88551413F7330D01FAA54416485B82AA78551414A93D5331BAA544175A53737A6855141832CDD9916AA5441C323244DA58551418D63C85810AA5441D4CD7E9AA48551417D5FD8920BAA54419023E261A38551415D75FEA304AA54419850E42BA2855141C99BFC2BFEA954414857810BA185514188246527F8A9544115F56F5F9B8551410C3EC1EEF9A95441E7A527A397855141E1AF8733FBA954417B33E09F98855141BAA4427700AA5441E635FC4E998551410140A28805AA544113C78C9399855141ABA8EE130AAA54419F30AED899855141D07CB5120EAA54411C79A53E9A855141E9F23C8D12AA5441BFBDAF1B9B855141A3DE803118AA544135E791E19B8551418FEBC9421CAA5441F2F22C619C85514127F690BF1EAA5441C263E3E09C8551414F88D40121AA5441CA35E4B09D8551418B71EA7024AA5441CF7212679E8551416B52568A27AA5441441BF50EA0855141C0388E5E2DAA544146EBEE39A1855141BBA9254E31AA5441D80E7802A2855141D828604234AA54412EF70015A38551416303E41439AA5441D0E78308A8855141817281BB38AA5441FE9BB93AA98551416AF78DB63EAA544108B7D9B7A5855141815C1B9144AA5441B2859A2FA68551417843A2BD46AA544185FC4212A8855141807058D04FAA5441A0DCC653A98551418DBFBFD758AA5441295C8FD2AD855141B81E850B5BAA5441C818E2BDAF855141FFADC92E5CAA544188C30BA5B18551412139BCBB5DAA5441FD540944B385514143C4AE485FAA54416D8FF552B48551417C8779B360AA5441EFC60E20B385514199986CAB55AA5441A4D27257B2855141983656BC4EAA5441A60D069EB1855141A0869B5348AA544193B4A27CB185514173722C2C47AA54413F846627B0855141CD64375C40AA54410D5B97A0AD8551416EC58A8034AA5441D32026D7A985514107FC1A6925AA54411883DC5FA88551413F7330D01FAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429340 - 3535346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000012000000F6285C1FAA8551418FC2F51841AA54415C8FC2E5A6855141B81E85CB33AA54411F85EB71A685514148E17A9432AA5441333333F3A58551411F85EB3130AA5441666666B6A485514152B81E452CAA5441333333A3A285514148E17A6425AA5441D7A3707DA18551419A99993921AA5441713D0A87A0855141C3F528BC22AA5441C3F5286C9F855141000000B024AA5441E17A143E9E855141E17A140E27AA54411F85EBE19E855141EC51B8FE28AA544166666626A08551415C8FC2B52DAA544133333373A1855141D7A3700D32AA5441295C8F52A28551416666668635AA544148E17A44A3855141333333F339AA5441E17A149EA585514152B81EF544AA5441CDCCCCBCAA85514185EB51E843AA5441F6285C1FAA8551418FC2F51841AA54410A000000CDCCCC6CA58551413D0AD7B339AA54415C8FC235A3855141B81E85BB35AA5441D7A3704DA38551415C8FC24535AA5441295C8FF2A385514185EB518834AA5441D7A3703DA585514148E17A8433AA5441CDCCCC4CA6855141CDCCCC7C34AA5441AE47E1DAA68551415C8FC22536AA54415C8FC215A785514148E17A9437AA54410AD7A370A68551411F85EB3139AA5441CDCCCC6CA58551413D0AD7B339AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000001883DC5FA88551413F7330D01FAA54416485B82AA78551414A93D5331BAA544175A53737A6855141832CDD9916AA5441C323244DA58551418D63C85810AA5441D4CD7E9AA48551417D5FD8920BAA54419023E261A38551415D75FEA304AA54419850E42BA2855141C99BFC2BFEA954414857810BA185514188246527F8A9544115F56F5F9B8551410C3EC1EEF9A95441E7A527A397855141E1AF8733FBA954417B33E09F98855141BAA4427700AA5441E635FC4E998551410140A28805AA544113C78C9399855141ABA8EE130AAA54419F30AED899855141D07CB5120EAA54411C79A53E9A855141E9F23C8D12AA5441BFBDAF1B9B855141A3DE803118AA544135E791E19B8551418FEBC9421CAA5441F2F22C619C85514127F690BF1EAA5441C263E3E09C8551414F88D40121AA5441CA35E4B09D8551418B71EA7024AA5441CF7212679E8551416B52568A27AA5441441BF50EA0855141C0388E5E2DAA544146EBEE39A1855141BBA9254E31AA5441D80E7802A2855141D828604234AA54412EF70015A38551416303E41439AA5441D0E78308A8855141817281BB38AA5441FE9BB93AA98551416AF78DB63EAA544108B7D9B7A5855141815C1B9144AA5441B2859A2FA68551417843A2BD46AA544185FC4212A8855141807058D04FAA5441A0DCC653A98551418DBFBFD758AA5441295C8FD2AD855141B81E850B5BAA5441C818E2BDAF855141FFADC92E5CAA544188C30BA5B18551412139BCBB5DAA5441FD540944B385514143C4AE485FAA54416D8FF552B48551417C8779B360AA5441EFC60E20B385514199986CAB55AA5441A4D27257B2855141983656BC4EAA5441A60D069EB1855141A0869B5348AA544193B4A27CB185514173722C2C47AA54413F846627B0855141CD64375C40AA54410D5B97A0AD8551416EC58A8034AA5441D32026D7A985514107FC1A6925AA54411883DC5FA88551413F7330D01FAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 1264104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441F6285C5F09625141D7A370DD5EC154416666663604625141AE47E1BA64C15441F6285CDF00625141295C8FF269C15441B81E85BBFF6151419A9999B96BC154413D0AD783FE6151410AD7A3C06CC1544152B81E75FD615141713D0A076FC15441295C8FA2FD61514152B81EF570C1544152B81E95FC6151417B14AED772C15441EC51B8FEF9615141AE47E1AA77C15441F6285CCFF86151411F85EB717CC154413D0AD7E3F7615141713D0AC77FC154411F85EBC1F76151413D0AD7E382C154418FC2F548F8615141B81E85AB87C154413D0AD753F8615141EC51B8DE8AC15441F6285C5FF86151411F85EBA18DC15441713D0A27F8615141AE47E12A94C154410AD7A320F9615141295C8F5298C1544148E17A44F8615141EC51B87E9CC1544148E17A24F861514166666666A2C15441F6285CDFF86151418FC2F5A8A7C1544152B81ED5FA61514166666676ACC15441333333F3FC615141F6285C3FAFC15441F6285C4FFE61514114AE4701B2C15441CDCCCC6C00625141C3F5286CB9C154419A99999904625141AE47E19AC1C1544148E17A24086251410AD7A3E0C7C154411F85EBB109625141C3F528BCC9C15441295C8F1210625141666666A6CEC1544185EB513813625141C3F528CCCCC15441A4703D3A166251410AD7A3C0CBC15441E17A146E136251417B14AE97C6C15441295C8F320F625141CDCCCCECBCC15441713D0A470A625141713D0AA7B1C1544152B81E650862514148E17A34AAC15441E17A147E06625141CDCCCCECA1C15441295C8F2205625141713D0A479AC15441C3F528DC0A625141F6285C8F99C15441C3F5288C09625141E17A144E92C154418FC2F51809625141000000508DC1544152B81E1509625141D7A3703D83C154417B14AE770962514148E17A347FC1544148E17A940A625141E17A148E78C15441713D0AF70B625141F6285C8F71C154410AD7A36012625141713D0A3773C15441F6285CCF1662514185EB516874C15441AE47E1BA1F62514114AE47216FC154411F85EBF11F6251410AD7A3006FC15441D7A3707D20625141333333B372C15441CDCCCC7C206251411F85EB0175C15441A4703D3A20625141E17A145E77C1544148E17A64236251410AD7A3B075C154415C8FC23527625141A4703DEA73C15441B81E855B2D625141295C8F6271C15441713D0AB733625141713D0AB76EC154411F85EBC13362514114AE47C16AC154411F85EB6138625141295C8F526AC15441C3F528CC386251410AD7A3A06EC15441C3F5289C3962514148E17A2475C15441000000B03A6251411F85EB217BC15441AE47E19A42625141C3F528BC79C15441C3F5280C4162514152B81E3570C154419A99999941625141295C8F0270C15441C3F528BC51625141E17A147E6BC154418FC2F51850625141E17A142E61C15441D7A3704D4962514185EB51E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C1544148E17A84576251415C8FC24537C1544114AE4781566251417B14AE3737C1544148E17AD455625141E17A14FE36C15441B81E856B54625141295C8FD236C15441713D0A7753625141E17A14FE36C1544152B81E655262514114AE47E136C15441C3F528FC506251417B14AE3737C15441F6285C4F50625141C3F5289C37C154410AD7A3B04F625141AE47E13A38C15441F6285C2F4F6251413333338338C154411F85EBF14D6251413333338338C15441A4703DAA4D625141E17A14AE38C15441666666A64C6251411F85EB2139C1544114AE47B14B6251413333331339C15441295C8F824A625141333333A339C15441C3F5289C49625141333333A339C154410AD7A350486251416666668639C1544100000030476251410000003039C15441AE47E1AA4562514114AE479138C15441F6285CEF4462514148E17AE437C154415C8FC225446251415C8FC2D537C154415C8FC20543625141E17A148E37C154410AD7A310426251418FC2F5B837C154411F85EBE1406251416666666638C15441000000D03F625141295C8FF237C15441F6285C3F3F625141AE47E13A38C154418FC2F5583E6251417B14AEE738C154413D0AD7F33D625141E17A14AE38C154418FC2F5383D625141AE47E13A38C15441EC51B86E3C625141000000A038C154419A9999793B6251410000003039C15441CDCCCCCC3A625141CDCCCCBC38C154417B14AEE739625141333333D338C154411F85EBA137625141C3F5288C39C15441A4703DEA346251413D0AD7433CC15441EC51B88E2A6251416666662639C154417B14AE6729625141EC51B86E36C154411F85EBB12762514148E17A7436C15441
+</a>
+
+<b>
+010600000001000000010300000001000000CD000000FD148F9B4A625141FF7607EA47C15441D7A3704D4962514185EB51E841C15441951D4354496251418E9F40E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C1544148E17A84576251415C8FC24537C1544114AE4781566251417B14AE3737C1544148E17AD455625141E17A14FE36C15441B81E856B54625141295C8FD236C15441713D0A7753625141E17A14FE36C1544152B81E655262514114AE47E136C15441C3F528FC506251417B14AE3737C15441F6285C4F50625141C3F5289C37C154410AD7A3B04F625141AE47E13A38C15441F6285C2F4F6251413333338338C154411F85EBF14D6251413333338338C15441A4703DAA4D625141E17A14AE38C15441666666A64C6251411F85EB2139C1544114AE47B14B6251413333331339C15441295C8F824A625141333333A339C15441C3F5289C49625141333333A339C154410AD7A350486251416666668639C1544100000030476251410000003039C15441AE47E1AA4562514114AE479138C15441F6285CEF4462514148E17AE437C154415C8FC225446251415C8FC2D537C154415C8FC20543625141E17A148E37C154410AD7A310426251418FC2F5B837C154411F85EBE1406251416666666638C15441000000D03F625141295C8FF237C15441F6285C3F3F625141AE47E13A38C154418FC2F5583E6251417B14AEE738C154413D0AD7F33D625141E17A14AE38C154418FC2F5383D625141AE47E13A38C15441EC51B86E3C625141000000A038C154419A9999793B6251410000003039C15441CDCCCCCC3A625141CDCCCCBC38C154417B14AEE739625141333333D338C154411F85EBA137625141C3F5288C39C15441A4703DEA346251413D0AD7433CC15441EC51B88E2A6251416666662639C154417B14AE6729625141EC51B86E36C154411F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441F6285C5F09625141D7A370DD5EC154416666663604625141AE47E1BA64C15441F10BAEE70162514177BCA85568C1544198F2031CFF615141B5F798BD6CC154419E518B9501625141515CA4316BC154419954782904625141C450460F6AC15441955765BD066251414BFD1CB868C15441A3462E370E6251413F9E953E66C15441E8CD5312106251418E509B7865C15441463B7BAB11625141E1306EA564C15441E8FE0D991262514115FD712164C1544137E2CD591462514169DD444E63C15441B563C4A315625141AC33B0A262C154416183F17616625141E62D811162C15441B066B137186251413E3C213161C15441D5D907621A6251418CEE266B60C154415CB798911B625141A0788E4360C154413DA3C9E01B6251414C98BB1661C15441C54FA0891A6251413C0E543E61C1544166E278F0186251411DFA848D61C1544104A31E4A17625141BFEBE46D62C15441AB63C4A3156251416C0B124163C154418B1E3B6C13625141E45E3B9864C1544170077F27116251417CC633A065C154415B1E90D50E6251410F005FB566C15441601BA3410C625141AB9524B067C15441E299ACF70A6251417DF7ED2668C15441842C855E096251415387849068C154412AED2AB807625141145FE62E69C154410BA8A18005625141B622791C6AC15441FAEC7F2103625141495CA4316BC1544181689C43FF6151415917C6906DC1544152B81E75FD615141713D0A076FC15441295C8FA2FD61514152B81EF570C1544152B81E95FC6151417B14AED772C15441EC51B8FEF9615141AE47E1AA77C15441F6285CCFF86151411F85EB717CC154413D0AD7E3F7615141713D0AC77FC154411F85EBC1F76151413D0AD7E382C154418FC2F548F8615141B81E85AB87C154413D0AD753F8615141EC51B8DE8AC15441F6285C5FF86151411F85EBA18DC15441713D0A27F8615141AE47E12A94C154410AD7A320F9615141295C8F5298C1544148E17A44F8615141EC51B87E9CC1544148E17A24F861514166666666A2C15441F6285CDFF86151418FC2F5A8A7C1544152B81ED5FA61514166666676ACC15441333333F3FC615141F6285C3FAFC15441F6285C4FFE61514114AE4701B2C15441CDCCCC6C00625141C3F5286CB9C154419A99999904625141AE47E19AC1C1544148E17A24086251410AD7A3E0C7C154411F85EBB109625141C3F528BCC9C15441295C8F1210625141666666A6CEC1544185EB513813625141C3F528CCCCC15441A4703D3A166251410AD7A3C0CBC15441E17A146E136251417B14AE97C6C15441295C8F320F625141CDCCCCECBCC15441713D0A470A625141713D0AA7B1C1544152B81E650862514148E17A34AAC15441E17A147E06625141CDCCCCECA1C154417A542E2A056251414810F9719AC15441B450703C04625141A23A295E9AC15441F76DA389036251416F878F8D99C1544198FC3C30036251414849C2F195C15441DB19707D02625141A0508EA88FC154417CA8092402625141DC03275388C154417CA80924026251417C1DF39E82C15441DB19707D02625141398BF2F67DC154410DCD094E0362514122B7BED778C15441B450703C04625141A67C571772C154414575706605625141D2C556456CC15441A3E6D6BF0562514184BE89686AC15441CB24A45B09625141F399893E69C15441D60E3EEB0B625141942823E568C154417E92A4D90C625141942823E568C154413580A4440C6251415DF589276CC15441A45BA41A0B625141155857ED70C15441B7A655F00B625141E6DC39B171C15441713D0AF70B625141F6285C8F71C154410AD7A36012625141713D0A3773C15441F6285CCF1662514185EB516874C15441AE47E1BA1F62514114AE47216FC154411F85EBF11F6251410AD7A3006FC15441D7A3707D20625141333333B372C15441CDCCCC7C206251411F85EB0175C15441A4703D3A20625141E17A145E77C1544148E17A64236251410AD7A3B075C154415C8FC23527625141A4703DEA73C15441B81E855B2D625141295C8F6271C15441713D0AB733625141713D0AB76EC154411F85EBC13362514114AE47C16AC154411F85EB6138625141295C8F526AC15441C3F528CC386251410AD7A3A06EC15441C3F5289C3962514148E17A2475C15441000000B03A6251411F85EB217BC15441AE47E19A42625141C3F528BC79C15441C3F5280C4162514152B81E3570C154419A99999941625141295C8F0270C15441C3F528BC51625141E17A147E6BC154419BB667DA4F625141F3552F0E60C15441F16FCA744E62514132B3206460C15441F70F09414B625141B2A66A7C61C154411008CCA6476251419909BFB762C1544111909D4933625141F6AB39AE69C154418BE33DED31625141032657256AC154414DC248D931625141E80C2A2C6AC154417C1209D6306251410CBD866269C15441970BB91A3062514199E6495C68C154410AA3F8B02E625141788C4AB366C15441181F4CD92D625141104C851B66C1544104C639262D625141F8DD819D65C154414A4E56662B62514171952A7364C15441B5D3B5152A625141162E73A563C1544187FED9612862514155522A5662C15441E3344E3F266251410F65646861C15441DC5ACDF5256251414C13D44C61C15441060865D524625141E1E99FBC60C15441FFEA9D9A236251418E71715560C1544101348370206251417D982ADA5FC15441111ADCAC1E62514121FCB2DF5FC15441AC35D4171D625141362671EF5FC15441EE4F2C8E1C6251418EDCCAF45FC15441ACC07F5D1C6251416F2EAFF65FC15441122DF3E01D625141239D18D45EC15441C8116591216251417111936A5CC154416C09B6A728625141909DEEBF57C15441A1FC01802B62514121B1ADDF55C15441CA86BC3A2C6251417CF8B56455C15441232BE7152E6251412FD7CB2B54C15441890D90133462514190E6748350C15441B167EC08376251412B72302A4FC15441F3D6CDC23A625141973E696C4DC15441B46608B63D625141DB501DB64CC1544131B87B1342625141769562A84BC1544146BB18CC45625141276D9DF74AC1544128DA00DB4A62514100E353074AC1544114247A0D4B6251413B0F50F649C15441FD148F9B4A625141FF7607EA47C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 3189466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441F6285C5F09625141D7A370DD5EC154416666663604625141AE47E1BA64C15441F6285CDF00625141295C8FF269C15441B81E85BBFF6151419A9999B96BC154413D0AD783FE6151410AD7A3C06CC1544152B81E75FD615141713D0A076FC15441295C8FA2FD61514152B81EF570C1544152B81E95FC6151417B14AED772C15441EC51B8FEF9615141AE47E1AA77C15441F6285CCFF86151411F85EB717CC154413D0AD7E3F7615141713D0AC77FC154411F85EBC1F76151413D0AD7E382C154418FC2F548F8615141B81E85AB87C154413D0AD753F8615141EC51B8DE8AC15441F6285C5FF86151411F85EBA18DC15441713D0A27F8615141AE47E12A94C154410AD7A320F9615141295C8F5298C1544148E17A44F8615141EC51B87E9CC1544148E17A24F861514166666666A2C15441F6285CDFF86151418FC2F5A8A7C1544152B81ED5FA61514166666676ACC15441333333F3FC615141F6285C3FAFC15441F6285C4FFE61514114AE4701B2C15441CDCCCC6C00625141C3F5286CB9C154419A99999904625141AE47E19AC1C1544148E17A24086251410AD7A3E0C7C154411F85EBB109625141C3F528BCC9C15441295C8F1210625141666666A6CEC1544185EB513813625141C3F528CCCCC15441A4703D3A166251410AD7A3C0CBC15441E17A146E136251417B14AE97C6C15441295C8F320F625141CDCCCCECBCC15441713D0A470A625141713D0AA7B1C1544152B81E650862514148E17A34AAC15441E17A147E06625141CDCCCCECA1C15441295C8F2205625141713D0A479AC15441C3F528DC0A625141F6285C8F99C15441C3F5288C09625141E17A144E92C154418FC2F51809625141000000508DC1544152B81E1509625141D7A3703D83C154417B14AE770962514148E17A347FC1544148E17A940A625141E17A148E78C15441713D0AF70B625141F6285C8F71C154410AD7A36012625141713D0A3773C15441F6285CCF1662514185EB516874C15441AE47E1BA1F62514114AE47216FC154411F85EBF11F6251410AD7A3006FC15441D7A3707D20625141333333B372C15441CDCCCC7C206251411F85EB0175C15441A4703D3A20625141E17A145E77C1544148E17A64236251410AD7A3B075C154415C8FC23527625141A4703DEA73C15441B81E855B2D625141295C8F6271C15441713D0AB733625141713D0AB76EC154411F85EBC13362514114AE47C16AC154411F85EB6138625141295C8F526AC15441C3F528CC386251410AD7A3A06EC15441C3F5289C3962514148E17A2475C15441000000B03A6251411F85EB217BC15441AE47E19A42625141C3F528BC79C15441C3F5280C4162514152B81E3570C154419A99999941625141295C8F0270C15441C3F528BC51625141E17A147E6BC154418FC2F51850625141E17A142E61C15441D7A3704D4962514185EB51E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C1544148E17A84576251415C8FC24537C1544114AE4781566251417B14AE3737C1544148E17AD455625141E17A14FE36C15441B81E856B54625141295C8FD236C15441713D0A7753625141E17A14FE36C1544152B81E655262514114AE47E136C15441C3F528FC506251417B14AE3737C15441F6285C4F50625141C3F5289C37C154410AD7A3B04F625141AE47E13A38C15441F6285C2F4F6251413333338338C154411F85EBF14D6251413333338338C15441A4703DAA4D625141E17A14AE38C15441666666A64C6251411F85EB2139C1544114AE47B14B6251413333331339C15441295C8F824A625141333333A339C15441C3F5289C49625141333333A339C154410AD7A350486251416666668639C1544100000030476251410000003039C15441AE47E1AA4562514114AE479138C15441F6285CEF4462514148E17AE437C154415C8FC225446251415C8FC2D537C154415C8FC20543625141E17A148E37C154410AD7A310426251418FC2F5B837C154411F85EBE1406251416666666638C15441000000D03F625141295C8FF237C15441F6285C3F3F625141AE47E13A38C154418FC2F5583E6251417B14AEE738C154413D0AD7F33D625141E17A14AE38C154418FC2F5383D625141AE47E13A38C15441EC51B86E3C625141000000A038C154419A9999793B6251410000003039C15441CDCCCCCC3A625141CDCCCCBC38C154417B14AEE739625141333333D338C154411F85EBA137625141C3F5288C39C15441A4703DEA346251413D0AD7433CC15441EC51B88E2A6251416666662639C154417B14AE6729625141EC51B86E36C154411F85EBB12762514148E17A7436C15441
+</a>
+
+<b>
+010600000001000000010300000001000000CD000000FD148F9B4A625141FF7607EA47C15441D7A3704D4962514185EB51E841C15441951D4354496251418E9F40E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C1544148E17A84576251415C8FC24537C1544114AE4781566251417B14AE3737C1544148E17AD455625141E17A14FE36C15441B81E856B54625141295C8FD236C15441713D0A7753625141E17A14FE36C1544152B81E655262514114AE47E136C15441C3F528FC506251417B14AE3737C15441F6285C4F50625141C3F5289C37C154410AD7A3B04F625141AE47E13A38C15441F6285C2F4F6251413333338338C154411F85EBF14D6251413333338338C15441A4703DAA4D625141E17A14AE38C15441666666A64C6251411F85EB2139C1544114AE47B14B6251413333331339C15441295C8F824A625141333333A339C15441C3F5289C49625141333333A339C154410AD7A350486251416666668639C1544100000030476251410000003039C15441AE47E1AA4562514114AE479138C15441F6285CEF4462514148E17AE437C154415C8FC225446251415C8FC2D537C154415C8FC20543625141E17A148E37C154410AD7A310426251418FC2F5B837C154411F85EBE1406251416666666638C15441000000D03F625141295C8FF237C15441F6285C3F3F625141AE47E13A38C154418FC2F5583E6251417B14AEE738C154413D0AD7F33D625141E17A14AE38C154418FC2F5383D625141AE47E13A38C15441EC51B86E3C625141000000A038C154419A9999793B6251410000003039C15441CDCCCCCC3A625141CDCCCCBC38C154417B14AEE739625141333333D338C154411F85EBA137625141C3F5288C39C15441A4703DEA346251413D0AD7433CC15441EC51B88E2A6251416666662639C154417B14AE6729625141EC51B86E36C154411F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441F6285C5F09625141D7A370DD5EC154416666663604625141AE47E1BA64C15441F10BAEE70162514177BCA85568C1544198F2031CFF615141B5F798BD6CC154419E518B9501625141515CA4316BC154419954782904625141C450460F6AC15441955765BD066251414BFD1CB868C15441A3462E370E6251413F9E953E66C15441E8CD5312106251418E509B7865C15441463B7BAB11625141E1306EA564C15441E8FE0D991262514115FD712164C1544137E2CD591462514169DD444E63C15441B563C4A315625141AC33B0A262C154416183F17616625141E62D811162C15441B066B137186251413E3C213161C15441D5D907621A6251418CEE266B60C154415CB798911B625141A0788E4360C154413DA3C9E01B6251414C98BB1661C15441C54FA0891A6251413C0E543E61C1544166E278F0186251411DFA848D61C1544104A31E4A17625141BFEBE46D62C15441AB63C4A3156251416C0B124163C154418B1E3B6C13625141E45E3B9864C1544170077F27116251417CC633A065C154415B1E90D50E6251410F005FB566C15441601BA3410C625141AB9524B067C15441E299ACF70A6251417DF7ED2668C15441842C855E096251415387849068C154412AED2AB807625141145FE62E69C154410BA8A18005625141B622791C6AC15441FAEC7F2103625141495CA4316BC1544181689C43FF6151415917C6906DC1544152B81E75FD615141713D0A076FC15441295C8FA2FD61514152B81EF570C1544152B81E95FC6151417B14AED772C15441EC51B8FEF9615141AE47E1AA77C15441F6285CCFF86151411F85EB717CC154413D0AD7E3F7615141713D0AC77FC154411F85EBC1F76151413D0AD7E382C154418FC2F548F8615141B81E85AB87C154413D0AD753F8615141EC51B8DE8AC15441F6285C5FF86151411F85EBA18DC15441713D0A27F8615141AE47E12A94C154410AD7A320F9615141295C8F5298C1544148E17A44F8615141EC51B87E9CC1544148E17A24F861514166666666A2C15441F6285CDFF86151418FC2F5A8A7C1544152B81ED5FA61514166666676ACC15441333333F3FC615141F6285C3FAFC15441F6285C4FFE61514114AE4701B2C15441CDCCCC6C00625141C3F5286CB9C154419A99999904625141AE47E19AC1C1544148E17A24086251410AD7A3E0C7C154411F85EBB109625141C3F528BCC9C15441295C8F1210625141666666A6CEC1544185EB513813625141C3F528CCCCC15441A4703D3A166251410AD7A3C0CBC15441E17A146E136251417B14AE97C6C15441295C8F320F625141CDCCCCECBCC15441713D0A470A625141713D0AA7B1C1544152B81E650862514148E17A34AAC15441E17A147E06625141CDCCCCECA1C154417A542E2A056251414810F9719AC15441B450703C04625141A23A295E9AC15441F76DA389036251416F878F8D99C1544198FC3C30036251414849C2F195C15441DB19707D02625141A0508EA88FC154417CA8092402625141DC03275388C154417CA80924026251417C1DF39E82C15441DB19707D02625141398BF2F67DC154410DCD094E0362514122B7BED778C15441B450703C04625141A67C571772C154414575706605625141D2C556456CC15441A3E6D6BF0562514184BE89686AC15441CB24A45B09625141F399893E69C15441D60E3EEB0B625141942823E568C154417E92A4D90C625141942823E568C154413580A4440C6251415DF589276CC15441A45BA41A0B625141155857ED70C15441B7A655F00B625141E6DC39B171C15441713D0AF70B625141F6285C8F71C154410AD7A36012625141713D0A3773C15441F6285CCF1662514185EB516874C15441AE47E1BA1F62514114AE47216FC154411F85EBF11F6251410AD7A3006FC15441D7A3707D20625141333333B372C15441CDCCCC7C206251411F85EB0175C15441A4703D3A20625141E17A145E77C1544148E17A64236251410AD7A3B075C154415C8FC23527625141A4703DEA73C15441B81E855B2D625141295C8F6271C15441713D0AB733625141713D0AB76EC154411F85EBC13362514114AE47C16AC154411F85EB6138625141295C8F526AC15441C3F528CC386251410AD7A3A06EC15441C3F5289C3962514148E17A2475C15441000000B03A6251411F85EB217BC15441AE47E19A42625141C3F528BC79C15441C3F5280C4162514152B81E3570C154419A99999941625141295C8F0270C15441C3F528BC51625141E17A147E6BC154419BB667DA4F625141F3552F0E60C15441F16FCA744E62514132B3206460C15441F70F09414B625141B2A66A7C61C154411008CCA6476251419909BFB762C1544111909D4933625141F6AB39AE69C154418BE33DED31625141032657256AC154414DC248D931625141E80C2A2C6AC154417C1209D6306251410CBD866269C15441970BB91A3062514199E6495C68C154410AA3F8B02E625141788C4AB366C15441181F4CD92D625141104C851B66C1544104C639262D625141F8DD819D65C154414A4E56662B62514171952A7364C15441B5D3B5152A625141162E73A563C1544187FED9612862514155522A5662C15441E3344E3F266251410F65646861C15441DC5ACDF5256251414C13D44C61C15441060865D524625141E1E99FBC60C15441FFEA9D9A236251418E71715560C1544101348370206251417D982ADA5FC15441111ADCAC1E62514121FCB2DF5FC15441AC35D4171D625141362671EF5FC15441EE4F2C8E1C6251418EDCCAF45FC15441ACC07F5D1C6251416F2EAFF65FC15441122DF3E01D625141239D18D45EC15441C8116591216251417111936A5CC154416C09B6A728625141909DEEBF57C15441A1FC01802B62514121B1ADDF55C15441CA86BC3A2C6251417CF8B56455C15441232BE7152E6251412FD7CB2B54C15441890D90133462514190E6748350C15441B167EC08376251412B72302A4FC15441F3D6CDC23A625141973E696C4DC15441B46608B63D625141DB501DB64CC1544131B87B1342625141769562A84BC1544146BB18CC45625141276D9DF74AC1544128DA00DB4A62514100E353074AC1544114247A0D4B6251413B0F50F649C15441FD148F9B4A625141FF7607EA47C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 264122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB8754415C8FC2150D165141AE47E10AFB8754417B14AEB70C1651418FC2F5E8F4875441333333F30C1651410AD7A360EB8754415C8FC2D50C1651419A999999E8875441A4703D5A0C1651419A999999E687544152B81E750B16514152B81E65E4875441333333E30416514152B81E15E9875441E17A146E0016514133333343EB875441AE47E12AFD1551417B14AEA7EB8754417A9A1F82F5155141A84C7F2FEA875441B0862AB3F4155141E93AF349F187544105D19D92F41551410B2AAF02F787544102B0F730F415514177BE9FB2FA875441821DD3ACF3155141E3847C88FE875441E258A1ADF3155141A95BA81604885441378C2864F3155141FF699A8E1088544123AF1E49F3155141FACC38B218885441A923388EF31551415A82DE75208854415B22B874F21551418FC9210227885441509778EBF2155141DF81F25728885441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000E1ED24BAF3155141A60DE604028854411C826CF4F315514113E442C3FA875441CF129602F4155141B0743800F787544181A3BF10F41551417B108365F58754419B2B4244F4155141EE742D0BF18754415F770BA4F41551412121064FEA875441F43994B4F31551412121064FEA87544100000090F315514133333333E9875441713D0AE7F0155141295C8F72E9875441713D0A57EC155141AE47E1DAE98754417B14AE67E815514148E17AB4EA875441AE47E1CAE315514152B81E55EC8754410AD7A3E0E5155141295C8FD2F287544133333373E7155141E17A140EF887544166666616E8155141000000E0F7875441CDCCCC1CE815514133333323FC875441B81E85FBE7155141F6285C1F0588544152B81EF5E715514114AE47B11488544148E17A44E7155141713D0A971488544185EB5158E71551419A9999B918885441713D0A17E7155141666666662488544114AE4731EF155141B81E859B27885441E0C0DE6AF21551411F9B07AC27885441DDDE624AF3155141B795609C188854419E625366F3155141C46937E10F885441E1ED24BAF3155141A60DE60402885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 265321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB8754415C8FC2150D165141AE47E10AFB8754417B14AEB70C1651418FC2F5E8F4875441333333F30C1651410AD7A360EB8754415C8FC2D50C1651419A999999E8875441A4703D5A0C1651419A999999E687544152B81E750B16514152B81E65E4875441333333E30416514152B81E15E9875441E17A146E0016514133333343EB875441AE47E12AFD1551417B14AEA7EB8754417A9A1F82F5155141A84C7F2FEA875441B0862AB3F4155141E93AF349F187544105D19D92F41551410B2AAF02F787544102B0F730F415514177BE9FB2FA875441821DD3ACF3155141E3847C88FE875441E258A1ADF3155141A95BA81604885441378C2864F3155141FF699A8E1088544123AF1E49F3155141FACC38B218885441A923388EF31551415A82DE75208854415B22B874F21551418FC9210227885441509778EBF2155141DF81F25728885441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FC2FD155141AE47E14AFD87544148E17AF4FD1551411F85EB6102885441E17A14AEFD1551417B14AEC70C885441713D0A17FD155141D7A370DD158854418FC2F5E8FC1551413D0AD7731B885441C3F5282CFD155141CDCCCC3C208854411F85EB41FE155141713D0A772588544152B81E15031651410000009023885441EC51B8CE021651411F85EB61218854410AD7A33002165141D7A3705D1F885441666666E601165141000000101D885441000000F001165141333333F3178854418FC2F54802165141295C8FF211885441295C8F120316514152B81E55048854417B14AE27031651410AD7A3C000885441C3F528DC02165141F6285C3FFD875441295C8FC2FD155141AE47E14AFD875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 1053480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB8754415C8FC2150D165141AE47E10AFB8754417B14AEB70C1651418FC2F5E8F4875441333333F30C1651410AD7A360EB8754415C8FC2D50C1651419A999999E8875441A4703D5A0C1651419A999999E687544152B81E750B16514152B81E65E4875441333333E30416514152B81E15E9875441E17A146E0016514133333343EB875441AE47E12AFD1551417B14AEA7EB8754417A9A1F82F5155141A84C7F2FEA875441B0862AB3F4155141E93AF349F187544105D19D92F41551410B2AAF02F787544102B0F730F415514177BE9FB2FA875441821DD3ACF3155141E3847C88FE875441E258A1ADF3155141A95BA81604885441378C2864F3155141FF699A8E1088544123AF1E49F3155141FACC38B218885441A923388EF31551415A82DE75208854415B22B874F21551418FC9210227885441509778EBF2155141DF81F25728885441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000E1ED24BAF3155141A60DE604028854411F826CF4F315514116E442C3FA875441D1129602F4155141B1743800F787544184A3BF10F415514176108365F58754419F2B4244F4155141EE742D0BF187544162770BA4F41551412221064FEA875441F43994B4F31551412221064FEA87544100000090F315514133333333E9875441713D0AE7F0155141295C8F72E9875441713D0A57EC155141AE47E1DAE98754417B14AE67E815514148E17AB4EA875441AE47E1CAE315514152B81E55EC8754410AD7A3E0E5155141295C8FD2F287544133333373E7155141E17A140EF887544166666616E8155141000000E0F7875441CDCCCC1CE815514133333323FC875441B81E85FBE7155141F6285C1F0588544152B81EF5E715514114AE47B11488544148E17A44E7155141713D0A971488544185EB5158E71551419A9999B918885441713D0A17E7155141666666662488544114AE4731EF155141B81E859B27885441E0C0DE6AF21551411F9B07AC27885441DDDE624AF3155141B795609C188854419E625366F3155141C46937E10F885441E1ED24BAF3155141A60DE60402885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 1053586
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB8754415C8FC2150D165141AE47E10AFB8754417B14AEB70C1651418FC2F5E8F4875441333333F30C1651410AD7A360EB8754415C8FC2D50C1651419A999999E8875441A4703D5A0C1651419A999999E687544152B81E750B16514152B81E65E4875441333333E30416514152B81E15E9875441E17A146E0016514133333343EB875441AE47E12AFD1551417B14AEA7EB8754417A9A1F82F5155141A84C7F2FEA875441B0862AB3F4155141E93AF349F187544105D19D92F41551410B2AAF02F787544102B0F730F415514177BE9FB2FA875441821DD3ACF3155141E3847C88FE875441E258A1ADF3155141A95BA81604885441378C2864F3155141FF699A8E1088544123AF1E49F3155141FACC38B218885441A923388EF31551415A82DE75208854415B22B874F21551418FC9210227885441509778EBF2155141DF81F25728885441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FC2FD155141AE47E14AFD87544148E17AF4FD1551411F85EB6102885441E17A14AEFD1551417B14AEC70C885441713D0A17FD155141D7A370DD158854418FC2F5E8FC1551413D0AD7731B885441C3F5282CFD155141CDCCCC3C208854411F85EB41FE155141713D0A772588544152B81E15031651410000009023885441EC51B8CE021651411F85EB61218854410AD7A33002165141D7A3705D1F885441666666E601165141000000101D885441000000F001165141333333F3178854418FC2F54802165141295C8FF211885441295C8F120316514152B81E55048854417B14AE27031651410AD7A3C000885441C3F528DC02165141F6285C3FFD875441295C8FC2FD155141AE47E14AFD875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 3864988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB8754415C8FC2150D165141AE47E10AFB8754417B14AEB70C1651418FC2F5E8F4875441333333F30C1651410AD7A360EB8754415C8FC2D50C1651419A999999E8875441A4703D5A0C1651419A999999E687544152B81E750B16514152B81E65E4875441333333E30416514152B81E15E9875441E17A146E0016514133333343EB875441AE47E12AFD1551417B14AEA7EB8754417A9A1F82F5155141A84C7F2FEA875441B0862AB3F4155141E93AF349F187544105D19D92F41551410B2AAF02F787544102B0F730F415514177BE9FB2FA875441821DD3ACF3155141E3847C88FE875441E258A1ADF3155141A95BA81604885441378C2864F3155141FF699A8E1088544123AF1E49F3155141FACC38B218885441A923388EF31551415A82DE75208854415B22B874F21551418FC9210227885441509778EBF2155141DF81F25728885441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000E1ED24BAF3155141A60DE604028854411F826CF4F315514116E442C3FA875441D1129602F4155141B1743800F787544184A3BF10F415514176108365F58754419F2B4244F4155141EE742D0BF187544162770BA4F41551412221064FEA875441F43994B4F31551412221064FEA87544100000090F315514133333333E9875441713D0AE7F0155141295C8F72E9875441713D0A57EC155141AE47E1DAE98754417B14AE67E815514148E17AB4EA875441AE47E1CAE315514152B81E55EC8754410AD7A3E0E5155141295C8FD2F287544133333373E7155141E17A140EF887544166666616E8155141000000E0F7875441CDCCCC1CE815514133333323FC875441B81E85FBE7155141F6285C1F0588544152B81EF5E715514114AE47B11488544148E17A44E7155141713D0A971488544185EB5158E71551419A9999B918885441713D0A17E7155141666666662488544114AE4731EF155141B81E859B27885441E0C0DE6AF21551411F9B07AC27885441DDDE624AF3155141B795609C188854419E625366F3155141C46937E10F885441E1ED24BAF3155141A60DE60402885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 3865071
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB8754415C8FC2150D165141AE47E10AFB8754417B14AEB70C1651418FC2F5E8F4875441333333F30C1651410AD7A360EB8754415C8FC2D50C1651419A999999E8875441A4703D5A0C1651419A999999E687544152B81E750B16514152B81E65E4875441333333E30416514152B81E15E9875441E17A146E0016514133333343EB875441AE47E12AFD1551417B14AEA7EB8754417A9A1F82F5155141A84C7F2FEA875441B0862AB3F4155141E93AF349F187544105D19D92F41551410B2AAF02F787544102B0F730F415514177BE9FB2FA875441821DD3ACF3155141E3847C88FE875441E258A1ADF3155141A95BA81604885441378C2864F3155141FF699A8E1088544123AF1E49F3155141FACC38B218885441A923388EF31551415A82DE75208854415B22B874F21551418FC9210227885441509778EBF2155141DF81F25728885441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FC2FD155141AE47E14AFD87544148E17AF4FD1551411F85EB6102885441E17A14AEFD1551417B14AEC70C885441713D0A17FD155141D7A370DD158854418FC2F5E8FC1551413D0AD7731B885441C3F5282CFD155141CDCCCC3C208854411F85EB41FE155141713D0A772588544152B81E15031651410000009023885441EC51B8CE021651411F85EB61218854410AD7A33002165141D7A3705D1F885441666666E601165141000000101D885441000000F001165141333333F3178854418FC2F54802165141295C8FF211885441295C8F120316514152B81E55048854417B14AE27031651410AD7A3C000885441C3F528DC02165141F6285C3FFD875441295C8FC2FD155141AE47E14AFD875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429850 - 5147451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000060000003D0AD713BB845141D7A370BDC4AB54415C8FC2B5CD84514148E17A54A7AB544114AE47A1CC845141E17A144EA6AB54411F85EB81C4845141A4703DBAB3AB5441AE47E1BAB984514166666686C3AB54413D0AD713BB845141D7A370BDC4AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000032B2CA13BB845141868265BDC4AB54411F85EBF1BB845141D7A3708DC5AB54418FC2F5B8BC8451417B14AE47C6AB5441D7A3707DBE845141EC51B89EC7AB5441E8432A94CF845141C371BA72AAAB5441AA011946CE845141BF332072A9AB544195EBBDD6CD845141B9DE2216A9AB5441401ABE00CD8451419ECE3372A8AB5441F18C5601CD845141EB2D4371A8AB54415CAC6B83CA845141CA228982A6AB54412824E012C98451410EA89764A5AB5441B5E5E0E7C7845141123CA079A4AB54410AD7A350C1845141666666C6AEAB544148E17AF4BD845141CDCCCCDCB2AB5441C3F5286CBA845141CDCCCC9CB8AB54413D0AD763B88451418FC2F5A8BBAB5441C3F5286CBA8451417B14AEC7BEAB5441E17A140EB88451415C8FC215C2AB5441AE47E1BAB984514166666686C3AB544132B2CA13BB845141868265BDC4AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510345 - 55630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000005F000000F6285C5FF86951418FC2F5F8A1D7544133333393F4695141333333E3A3D75441713D0A37F6695141CDCCCC8CA4D75441F6285C8FF76951411F85EB81A6D7544114AE4791FA6951415C8FC2D5A4D75441A4703D0AFD6951417B14AE97A4D75441E17A145EFF6951411F85EB81A5D7544114AE4731006A51413D0AD7C3A7D75441CDCCCC8CFF695141AE47E17AA9D7544166666656006A51411F85EBC1AAD75441B81E85FB016A5141295C8F62ABD75441F6285C0F036A5141295C8F02ABD754418FC2F5B8056A514148E17A74ACD754417B14AEB70A6A51419A9999D9B0D75441A4703D1A0C6A514152B81E25B4D7544114AE47C1096A5141CDCCCC6CB6D754415C8FC2250C6A514185EB51D8B8D75441AE47E1FA0C6A51417B14AE27BBD75441EC51B86E0B6A514148E17AB4BCD75441295C8F120E6A514148E17AE4BDD75441000000800D6A51419A999969C0D754413D0AD7B30F6A5141B81E854BC2D75441C3F5284C146A5141D7A370FDC3D75441F6285C7F146A5141EC51B85EC7D75441B81E856B186A514133333313CAD754413D0AD7131C6A514133333333CBD75441666666E61D6A5141E17A149ECCD7544148E17A74206A5141295C8F32CDD75441D7A3708D226A514166666656D0D754410AD7A370246A5141CDCCCC1CCFD75441000000A0286A5141295C8F52CCD75441AE47E14A2C6A514133333303CAD754415C8FC2F52F6A5141C3F5281CC8D754419A999929316A5141EC51B8BEC7D75441D7A370ED2F6A5141CDCCCCDCC6D7544114AE47B12D6A5141A4703D0AC4D7544152B81E752B6A5141E17A14CEBFD754418FC2F5C8296A5141C3F528ACBBD7544166666666286A51417B14AE37B8D75441EC51B8DE276A5141295C8F92B6D7544114AE47B1276A514152B81E65B5D75441C3F5280C266A514133333383B3D7544166666666246A5141EC51B8CEB1D75441000000D0236A5141713D0A47B0D754419A999939246A51410AD7A3B0AED75441000000D0246A5141E17A14DEACD75441EC51B8DE236A5141000000C0AAD754415C8FC275226A5141E17A14DEA8D7544148E17A84206A51417B14AE47A7D75441F6285CDF1E6A51417B14AE47A6D75441E17A14EE1C6A5141CDCCCCFCA4D75441AE47E12A1C6A5141AE47E11AA4D75441F6285CDF1C6A5141CDCCCCFCA2D75441000000D01E6A5141B81E850BA2D7544148E17A84226A5141F6285CCFA2D75441AE47E1DA256A51419A999939A4D75441AE47E11A296A5141AE47E11AA6D75441D7A370DD2A6A514114AE47C1A6D75441B81E856B2A6A514152B81E259ED75441EC51B8BE2B6A51413333337395D75441333333132F6A51415C8FC2F58AD75441D7A3706D336A5141EC51B87E80D75441CDCCCCBC2E6A5141EC51B8EE80D75441000000A0286A51410AD7A34080D75441E17A140E236A5141E17A141E80D754411F85EBC11D6A5141295C8FC27ED75441295C8F52186A51411F85EBF17DD7544100000010156A5141666666667DD754417B14AEB7106A51415C8FC2957CD754417B14AE970D6A514185EB51E87BD754415C8FC205086A514148E17AF47AD754417B14AE67036A51413D0AD7237AD75441EC51B80E006A514148E17A1479D75441295C8FA2FC69514185EB51587AD75441AE47E1AAF96951417B14AE577AD75441713D0AC7F7695141F6285CFF7AD7544100000090F56951418FC2F5687DD75441B81E856BF56951419A9999697FD754415C8FC265F6695141A4703D8A80D7544185EB51C8F9695141000000F081D75441295C8FF2FA6951413D0AD7E382D75441B81E850B026A514152B81E158FD754415C8FC2C5016A5141D7A3709D93D75441713D0A87006A5141E17A14DE95D754418FC2F548FD695141000000E097D754410AD7A390F769514152B81EC596D75441EC51B81EF1695141F6285C1F8FD75441EC51B87EEF6951419A9999598ED7544148E17A44ED6951419A9999C98ED75441E17A147EEC695141713D0AC78FD7544100000090EC695141E17A148E91D75441EC51B81EEF695141295C8F8294D75441EC51B8CEF2695141295C8FB297D7544185EB5188F76951413D0AD7E39ED75441F6285C5FF86951418FC2F5F8A1D75441
+</a>
+
+<b>
+0106000000010000000103000000010000009F000000A9494598226A5141EAEE5E4FD0D7544148E5C59A286A5141F96D0B56CCD75441000000A0286A5141295C8F52CCD75441AE47E14A2C6A514133333303CAD7544130AB8D8A2D6A514109EC5E5DC9D75441DB2D87C52E6A5141CCA1FAB9C8D754415C8FC2F52F6A5141C3F5281CC8D754419A999929316A5141EC51B8BEC7D75441D7A370ED2F6A5141CDCCCCDCC6D7544114AE47B12D6A5141A4703D0AC4D75441F8F069FA2C6A51416836BCAFC2D75441542B046C2C6A5141899DE9A1C1D7544152B81E752B6A5141E17A14CEBFD754418FC2F5C8296A5141C3F528ACBBD7544166666666286A51417B14AE37B8D75441E00308EF276A5141B3C52FC5B6D75441EC51B8DE276A5141295C8F92B6D75441BC86BBC5276A5141BF4ACCECB5D75441912251AA276A514114D1265DB5D75441E0DCAF77246A5141CD3C9CE0B1D7544166666666246A5141EC51B8CEB1D75441000000D0236A5141713D0A47B0D754419A999939246A51410AD7A3B0AED7544152B226CE246A514149BAD0E3ACD75441B47AF35B246A5141BECF5AD9ABD75441D4EB248F236A5141F403C255AAD7544131D5280E236A514143AF8CA9A9D75441AC07327F226A5141AE63ADEAA8D754411446CB02226A514169E21F80A8D754410AC2F8EC206A51414E4E139DA7D754416C92C8241F6A514154FAE171A6D75441F6285CDF1E6A51417B14AE47A6D754419629E8811D6A51417E37295FA5D75441E17A14EE1C6A5141CDCCCCFCA4D75441AE47E12A1C6A5141AE47E11AA4D75441B6D262911C6A51417EA46578A3D754411C9FFFC61C6A514180606A23A3D75441F6285CDF1C6A5141CDCCCCFCA2D75441000000D01E6A5141B81E850BA2D754413F5010BC216A5141187FFAA5A2D754411C9566E5216A5141D77F83AEA2D7544148E17A84226A5141F6285CCFA2D75441AE47E1DA256A51419A999939A4D75441119D9FFE286A5141D6E1880AA6D75441ECD67A49296A51414F15172CA6D75441C86D6EDD2A6A514106DD46C1A6D75441497FC1A82A6A5141B732EEC5A2D75441B81E856B2A6A514152B81E259ED7544107D69EA22A6A5141044989BB9CD75441524D76D82A6A5141638A365A9BD75441EC51B8BE2B6A51413333337395D75441855CEEBA2C6A51419779B25892D75441D215FE7D2E6A5141F034C9CB8CD75441333333132F6A51415C8FC2F58AD7544107BAABDC2F6A5141A4BF591189D75441949588F22F6A5141B9DBC8DC88D75441D7A3706D336A5141EC51B87E80D754413A749CE92E6A5141FA338AEA80D75441CDCCCCBC2E6A5141EC51B8EE80D75441FBFAB7732A6A51416829AC7480D7544158CB06DB266A5141464AA93580D754413C1A9741236A51417E15541F80D75441E17A140E236A5141E17A141E80D75441373F58161E6A51415EAF31D87ED75441259BE492186A51413C2691FB7DD75441295C8F52186A51411F85EBF17DD7544100000010156A5141666666667DD7544181674217136A5141BB8EB9077DD75441BB0311AB056A51413A661A8A7AD754417B14AE67036A51413D0AD7237AD7544101029C11006A5141F31A651579D7544144A194ACFF69514139EBC03879D75441295C8FA2FC69514185EB51587AD7544198980877FC6951415D8848587AD75441F6A742B6F9695141CF88B0577AD754410A6E78B5F769514136047F127BD7544147F63987F7695141080FDD447BD75441E145E7ACF6695141A43AA7327CD7544121006C8FF5695141DF8A15717DD7544119992184F5695141AB4DBF0F7ED75441EBD4C680F5695141EA3AE33E7ED754416B8FD792F569514134C3F4967FD754410AD39430F6695141DCA3E64C80D75441125A35CCF66951413C3189B480D75441C27191B5F9695141A71E42E881D7544185EB51C8F9695141000000F081D75441295C8FF2FA6951413D0AD7E382D75441B81E850B026A514152B81E158FD754413D9694EE016A5141300E79F690D754415C8FC2C5016A5141D7A3709D93D75441C4BBB5AC016A514175F6C2CA93D75441713D0A87006A5141E17A14DE95D754414665196A006A51419773FFEF95D754418FC2F548FD695141000000E097D7544175D1CE14FD6951413ED7ECD597D7544175268205FC6951411ED983A197D754410AD7A390F769514152B81EC596D7544121859961F2695141C06F7B9E90D754411ADC3A2FF16951414248F3328FD754414BEBFAFCEF69514130449F958ED7544178F25C2EEF6951413CFE61698ED7544174E083C1ED69514190C20AB18ED75441BBC2CADDEC6951416D8DC64C8FD75441D43DB3DAEC69514182A7B9508FD75441A147A7D0EC695141C5208F5D8FD75441BE116282EC6951416B0C8BC18FD7544161E2E584EC695141BA0A2B7490D7544100000090EC695141E17A148E91D75441EC51B81EEF695141295C8F8294D75441EC51B8CEF2695141295C8FB297D75441D923BBD2F26951418368AAB897D7544169E9F019F56951410CE270309BD7544185EB5188F76951413D0AD7E39ED754417FA5469BF769514121D066299FD75441F6285C5FF86951418FC2F5F8A1D75441E25CB038F86951416805760CA2D754415F481899F46951416FD094E5A3D75441713D0A37F6695141CDCCCC8CA4D75441F6285C8FF76951411F85EB81A6D7544114AE4791FA6951415C8FC2D5A4D754416522A5D8FA6951416DB6C2CEA4D754411C6D3BE7FC6951416D101D9BA4D75441A4703D0AFD6951417B14AE97A4D75441E17A145EFF6951411F85EB81A5D7544114AE4731006A51413D0AD7C3A7D7544162B4392A006A5141BAA8ABD6A7D754414C8EEF90FF69514137D19681A9D754418024E74D006A5141E2C422B4AAD75441EA7FFF12026A51419E94635AABD75441F6285C0F036A5141295C8F02ABD754414AB2B114036A5141D1777405ABD754418FC2F5B8056A514148E17A74ACD75441C874C2BC056A51415DBCD277ACD75441A7492C9E076A514165BE681FAED754417B14AEB70A6A51419A9999D9B0D75441E32B54D20A6A514132C6FF18B1D7544186FC63E60A6A51417A31BA48B1D75441A4703D1A0C6A514152B81E25B4D7544114AE47C1096A5141CDCCCC6CB6D754415C8FC2250C6A514185EB51D8B8D75441AE47E1FA0C6A51417B14AE27BBD75441C30745DB0C6A51411D675747BBD75441EC51B86E0B6A514148E17AB4BCD75441295C8F120E6A514148E17AE4BDD754415BB9D50D0E6A5141216447F9BDD75441000000800D6A51419A999969C0D7544152BA2CC20F6A5141A4CACE50C2D75441C3F5284C146A5141D7A370FDC3D75441777A084E146A51411A80181DC4D7544195244981146A51415B490C60C7D75441304A0687166A5141F02516C5C8D75441E9E55678186A5141FDA12417CAD754413D0AD7131C6A514133333333CBD75441036944201C6A51415B99DD3CCBD754411071BFF81D6A51416CBC3EA2CCD75441039694E51E6A514161E801D8CCD7544148E17A74206A5141295C8F32CDD754412D3ACD3A216A51413B99735BCED75441A9494598226A5141EAEE5E4FD0D75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>430060 - 1229604
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441295C8FE2226E5141333333A386BA544133333363246E5141713D0A977EBA54419A999939206E514152B81E557EBA544185EB51E81B6E514114AE47E17EBA5441A4703DAA1A6E51418FC2F56881BA54417B14AE571A6E5141713D0A1785BA5441F6285C1F1B6E51413333337386BA544148E17AD4176E51413333334386BA5441F6285C8F116E5141F6285CAF83BA5441C3F5281C0B6E51415C8FC2B581BA5441295C8FA20D6E5141333333238DBA5441666666C60F6E51410AD7A3E096BA5441C3F5283C126E5141C3F528FCA1BA54415C8FC2B5146E51418FC2F5B8A0BA5441000000301F6E51410AD7A3109BBA5441C3F5281C236E514152B81E5597BA5441E17A14CE226E514152B81E5596BA54410AD7A340226E5141F6285CDF95BA544152B81E751C6E5141D7A3708D95BA544114AE47811C6E5141CDCCCCFC93BA5441CDCCCCFC1A6E51419A9999D993BA5441CDCCCCFC1A6E5141C3F528BC91BA5441C3F5286C196E514148E17AA491BA5441C3F5286C196E51413D0AD76393BA544166666646186E5141EC51B87E94BA5441EC51B84E176E51415C8FC29594BA544152B81E05166E5141CDCCCCFC93BA544185EB5178156E5141B81E859B92BA544185EB5178156E51416666666690BA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441295C8FE2226E5141333333A386BA544133333363246E5141713D0A977EBA544170574E68206E5141E46202587EBA54414CFD33DA1C6E5141A25F9BC27EBA544155BB107A1A6E5141354003FB7EBA5441439A1D2B196E51413A95889482BA544100B662D9176E51419221B43586BA5441BC087045106E5141A956564A83BA5441C3F5281C0B6E51415C8FC2B581BA5441295C8FA20D6E5141333333238DBA5441666666C60F6E51410AD7A3E096BA5441C3F5283C126E5141C3F528FCA1BA54415C8FC2B5146E51418FC2F5B8A0BA5441000000301F6E51410AD7A3109BBA5441C3F5281C236E514152B81E5597BA5441E17A14CE226E514152B81E5596BA54410AD7A340226E5141F6285CDF95BA544152B81E751C6E5141D7A3708D95BA544114AE47811C6E5141CDCCCCFC93BA5441CDCCCCFC1A6E51419A9999D993BA5441CDCCCCFC1A6E5141C3F528BC91BA5441C3F5286C196E514148E17AA491BA5441C3F5286C196E51413D0AD76393BA544166666646186E5141EC51B87E94BA5441EC51B84E176E51415C8FC29594BA544152B81E05166E5141CDCCCCFC93BA544185EB5178156E5141B81E859B92BA544185EB5178156E51416666666690BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>430060 - 3390601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441295C8FE2226E5141333333A386BA544133333363246E5141713D0A977EBA54419A999939206E514152B81E557EBA544185EB51E81B6E514114AE47E17EBA5441A4703DAA1A6E51418FC2F56881BA54417B14AE571A6E5141713D0A1785BA5441F6285C1F1B6E51413333337386BA544148E17AD4176E51413333334386BA5441F6285C8F116E5141F6285CAF83BA5441C3F5281C0B6E51415C8FC2B581BA5441295C8FA20D6E5141333333238DBA5441666666C60F6E51410AD7A3E096BA5441C3F5283C126E5141C3F528FCA1BA54415C8FC2B5146E51418FC2F5B8A0BA5441000000301F6E51410AD7A3109BBA5441C3F5281C236E514152B81E5597BA5441E17A14CE226E514152B81E5596BA54410AD7A340226E5141F6285CDF95BA544152B81E751C6E5141D7A3708D95BA544114AE47811C6E5141CDCCCCFC93BA5441CDCCCCFC1A6E51419A9999D993BA5441CDCCCCFC1A6E5141C3F528BC91BA5441C3F5286C196E514148E17AA491BA5441C3F5286C196E51413D0AD76393BA544166666646186E5141EC51B87E94BA5441EC51B84E176E51415C8FC29594BA544152B81E05166E5141CDCCCCFC93BA544185EB5178156E5141B81E859B92BA544185EB5178156E51416666666690BA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441295C8FE2226E5141333333A386BA544133333363246E5141713D0A977EBA544170574E68206E5141E46202587EBA54414CFD33DA1C6E5141A25F9BC27EBA544155BB107A1A6E5141354003FB7EBA5441439A1D2B196E51413A95889482BA544100B662D9176E51419221B43586BA5441BC087045106E5141A956564A83BA5441C3F5281C0B6E51415C8FC2B581BA5441295C8FA20D6E5141333333238DBA5441666666C60F6E51410AD7A3E096BA5441C3F5283C126E5141C3F528FCA1BA54415C8FC2B5146E51418FC2F5B8A0BA5441000000301F6E51410AD7A3109BBA5441C3F5281C236E514152B81E5597BA5441E17A14CE226E514152B81E5596BA54410AD7A340226E5141F6285CDF95BA544152B81E751C6E5141D7A3708D95BA544114AE47811C6E5141CDCCCCFC93BA5441CDCCCCFC1A6E51419A9999D993BA5441CDCCCCFC1A6E5141C3F528BC91BA5441C3F5286C196E514148E17AA491BA5441C3F5286C196E51413D0AD76393BA544166666646186E5141EC51B87E94BA5441EC51B84E176E51415C8FC29594BA544152B81E05166E5141CDCCCCFC93BA544185EB5178156E5141B81E859B92BA544185EB5178156E51416666666690BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>430858 - 264038
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000290000005C8FC2B5954751413D0AD783AE835441B81E85FBA4475141713D0A97A98354410AD7A380A9475141E17A144EA983544148E17A44B247514185EB51B8A88354411F85EB11C94751417B14AE87A183544185EB5108D24751419A999919A083544185EB51B8DC475141EC51B8AE9F835441F6285C9FE8475141D7A3700D9C835441F6285C0FEA4751419A9999299A835441E17A149EE74751419A9999698583544185EB51B8E24751413333339373835441713D0A87DE475141F6285CBF64835441713D0AE7D7475141000000F04D835441E17A148ED6475141AE47E16A49835441AE47E14AD64751419A99998948835441B81E853BCF475141B81E85BB4C835441713D0A77C8475141333333A35283544152B81E65C1475141E17A14CE5A83544166666646BC475141713D0AD75F8354418FC2F548B54751411F85EB0166835441CDCCCCBCAC4751418FC2F5586C835441666666A6A247514114AE4771728354417B14AE27A2475141B81E853B74835441000000E0A5475141000000207C83544152B81ED5A7475141D7A3705D7B835441D7A3709DAA475141E17A140E81835441D7A3705DAF475141713D0AC77F8354410AD7A340B147514185EB51A886835441C3F528FCA64751411F85EB118A835441A4703D9AA34751413D0AD72381835441F6285C1FA2475141333333D37D835441AE47E1BAA34751411F85EB117A8354419A999939A1475141EC51B8CE74835441B81E858B9F47514114AE4751748354411F85EB719C475141A4703D2A768354417B14AE877C475141EC51B89E888354411F85EB717B4751418FC2F5A88A8354415C8FC2E58B4751415C8FC2E5AA835441333333838D4751413D0AD7D3AC8354411F85EBC1904751413D0AD783AE8354415C8FC2B5954751413D0AD783AE835441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000067159449C047514113669E4CA48354416C63B0A5C14751413193DADEA38354415EADF1DDBB4751411FEA3ED78683544127C590A2B3475141B032CD6989835441411F6A37A9475141E91BB5248D8354417C09D971A8475141EE379AAC92835441977D898FAC47514144AF090EA9835441370318DEAC475141BC8F9514A983544148E17A44B247514185EB51B8A883544167159449C047514113669E4CA4835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431121 - 205513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000900000048E17A54144F51415C8FC2855C84544114AE4751144F5141295C8FC25B845441C3F5284C114F51411F85EB81598454417B14AE37034F5141AE47E12A6F845441D7A3706D074F5141CDCCCCDC708454418FC2F508014F514148E17AB47A84544100000020034F51413D0AD7B37B845441EC51B8AE0B4F514114AE47316C84544148E17A54144F51415C8FC2855C845441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ABED85B9014F5141A568A0A4798454417A19706D074F5141D7A1CDDC708454414E7BAD37034F51410B82E22A6F845441ADB4809CFE4E51417678BB41768454413D0AD703F94E5141EC51B8DE7E8454417D3E7F8FF74E51417301BC467E845441FD7CA3E0F64E51410C435CFF7D845441A2F3D6C3F54E5141B49534E37D8454418D50C355F54E5141CAAFF6987E845441F5987BB2F44E51419F58BE547F8454413D0AD7F3F34E51410000003080845441B81E85DBF24E51411F85EBB1818454415F87CDC8F24E5141290424EF81845441697ECCBCF24E514162D2671682845441479664FCF14E5141279FDF69838454414CCD1E15F14E51411C60EB0185845441913FD692F34E5141EF1A81C48584544100000040FC4E5141A4703D6A8884544100000020034F51413D0AD7B37B845441834B6482014F5141A5A26FEE7A8454416F63F508014F5141EE1D7BB47A845441ABED85B9014F5141A568A0A479845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431121 - 265341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000900000048E17A54144F51415C8FC2855C84544114AE4751144F5141295C8FC25B845441C3F5284C114F51411F85EB81598454417B14AE37034F5141AE47E12A6F845441D7A3706D074F5141CDCCCCDC708454418FC2F508014F514148E17AB47A84544100000020034F51413D0AD7B37B845441EC51B8AE0B4F514114AE47316C84544148E17A54144F51415C8FC2855C845441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ABED85B9014F5141A568A0A4798454417A19706D074F5141D7A1CDDC708454414E7BAD37034F51410B82E22A6F845441ADB4809CFE4E51417678BB41768454413D0AD703F94E5141EC51B8DE7E8454417D3E7F8FF74E51417301BC467E845441FD7CA3E0F64E51410C435CFF7D845441A2F3D6C3F54E5141B49534E37D8454418D50C355F54E5141CAAFF6987E845441F5987BB2F44E51419F58BE547F8454413D0AD7F3F34E51410000003080845441B81E85DBF24E51411F85EBB1818454415F87CDC8F24E5141290424EF81845441697ECCBCF24E514162D2671682845441479664FCF14E5141279FDF69838454414CCD1E15F14E51411C60EB0185845441913FD692F34E5141EF1A81C48584544100000040FC4E5141A4703D6A8884544100000020034F51413D0AD7B37B845441834B6482014F5141A5A26FEE7A8454416F63F508014F5141EE1D7BB47A845441ABED85B9014F5141A568A0A479845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431122 - 205497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002100000048E17AF4FA4E5141CDCCCCCC5184544100000050F94E5141295C8FE2518454413D0AD723F84E5141713D0AC75184544114AE4751F74E51419A9999C951845441713D0AD7F64E51411F85EB81518454411F85EBD1F54E514152B81E8551845441AE47E14AF34E5141D7A3707D51845441E17A14FEF04E514152B81EA5518454419A9999D9EF4E51411F85EBB1518454410AD7A3A0EE4E51415C8FC225528454410AD7A380ED4E5141C3F5288C528454417B14AEE7EC4E5141D7A3707D5284544185EB5178E74E5141713D0A775C845441E17A14FEE54E5141E17A14DE5E8454418FC2F5A8E04E51410AD7A35067845441E17A149EE04E5141B81E85AB698454411F85EB41E04E5141295C8F726C8454417B14AEF7D94E5141000000E071845441D7A3706DD34E51417B14AE777984544152B81E65D04E5141333333B37D845441CDCCCCACD54E5141E17A14AE87845441CDCCCC0CD74E5141CDCCCC0C898454411F85EB11D84E51411F85EB118A8454415C8FC2B5E04E5141713D0A878F8454419A999949E14E514148E17AE48F8454413D0AD7C3EA4E5141C3F5284C7E8454415C8FC235F64E514148E17A3469845441EC51B88EF04E5141295C8FE264845441CDCCCC5CF14E5141CDCCCC8C638454417B14AEE7F44E5141333333535E845441000000A0F74E51417B14AE275A845441CDCCCC6CFD4E514148E17AD45184544148E17AF4FA4E5141CDCCCCCC51845441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000072ABAB00E74E51410643494885845441072CD6C3EA4E51416B79294C7E8454419616C235F64E5141FB847A3469845441A5E2B78EF04E5141EE488EE26484544139C1CC5CF14E51417A0ACC8C6384544136CFACE7F44E5141879434535E845441A999FF9FF74E5141D007AE275A845441AFC4CB6CFD4E51419F937BD451845441F48B1C3FFC4E514121D6D0D05184544148E17AF4FA4E5141CDCCCCCC5184544100000050F94E5141295C8FE2518454413D0AD723F84E5141713D0AC7518454416FB4A4E3F74E5141AF0CD2C751845441E2EE4751F74E5141C8989AC951845441687A09D7F64E5141C721EC8151845441BEBF827DF64E514168650483518454411F85EBD1F54E514152B81E8551845441FBE85BAFF34E5141FFF3A17E518454412974E24AF34E51418FDE707D518454413D5C15FEF04E51411CE11FA551845441AADD0F07F04E5141CC2FEEAF518454419A9999D9EF4E51411F85EBB1518454410AD7A3A0EE4E51415C8FC225528454410AD7A380ED4E5141C3F5288C528454417B14AEE7EC4E5141D7A3707D5284544185EB5178E74E5141713D0A775C845441E17A14FEE54E5141E17A14DE5E845441860430C2E34E51415AA90B68628454413B0FF6A8E04E5141D1ABA450678454416414159EE04E51413E2B84AB69845441F79FEB41E04E5141A3B78F726C8454412E06E8BFDB4E5141AC1F5556708454417B14AEF7D94E5141000000E071845441C81E15A8D84E51418D2A9B657384544177C0716DD34E51411E20AF7779845441146958DCD14E5141E8387EA77B84544152B81E65D04E5141333333B37D845441821217FFD24E51417504FC9D82845441BC0ECDACD54E51412A3113AE87845441E1CBCC0CD74E51410DF6CB0C8984544125EBEC11D84E51415215EC118A845441E1706979DB4E51410AFC66388C8454415C8FC2B5E04E5141713D0A878F845441A8DBF502E14E51412C54D5B78F845441FEC79949E14E5141288B7AE48F8454411B6B5F3FE64E5141A5E224AF8684544172ABAB00E74E51410643494885845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431180 - 969329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000047000000F6285C4FE3425141B81E853B119654419A9999B9EC4251413D0AD7830A965441A4703DDAEE425141E17A142E0996544166666646F4425141713D0AD70396544185EB5138F8425141C3F5288CFF955441D7A3709DFA4251419A9999C9FA9554418FC2F528FD42514185EB51A8F59554419A99994900435141B81E859BEE955441000000600243514152B81E85EB955441666666B606435141EC51B84EE7955441295C8FC20B43514185EB5178E49554417B14AE570D435141333333B3E3955441B81E851B11435141713D0AA7E59554410AD7A380124351415C8FC205E49554410AD7A37014435141713D0A77E1955441295C8FC21543514185EB51E8DE9554418FC2F57818435141713D0A57DB955441AE47E17A194351419A9999D9D7955441AE47E1CA1B435141A4703DEAD2955441E17A149E1B4351419A999969D0955441000000301D4351417B14AE57CC95544148E17AA41E4351418FC2F518C89554413D0AD7831F435141C3F5286CC595544152B81E751F4351410AD7A3B0C295544148E17AA41E4351415C8FC215BF9554411F85EBF11D435141D7A3702DBC955441CDCCCC8C1C43514152B81E15B59554410AD7A3801B43514152B81E65AE95544114AE47A11A4351418FC2F588AC955441295C8FE218435141B81E858BAB9554410AD7A34016435141C3F5283CAB955441333333230D435141E17A141EAD955441B81E85CB01435141E17A14FEAE955441CDCCCC1CF7425141C3F5288CB09554411F85EB81F04251419A999999B1955441713D0A17E1425141000000D0B2955441AE47E17AD642514133333303B39554413D0AD7A3CB42514133333343B39554415C8FC285C04251410AD7A390B3955441713D0A07B5425141F6285CBFB3955441666666B6A94251418FC2F518B4955441000000609D4251413D0AD793B59554415C8FC22591425141C3F5285CB795544185EB51088F425141AE47E1AAB7955441D7A370DD8E42514148E17AC4C395544152B81E758C42514152B81EF5CE95544152B81ED58A425141D7A3708DD49554419A9999298042514152B81E45D59554418FC2F5F874425141713D0A77D595544152B81E057342514148E17A34D5955441A4703D5A704251410AD7A3D0D49554419A9999496F42514185EB5108D6955441B81E859B7142514114AE4741E795544114AE4761744251415C8FC235F8955441E17A144E814251413D0AD713F8955441B81E854B8F425141F6285CEFF7955441D7A3706D9D425141AE47E1CAF795544166666606A9425141CDCCCC0CF79554410AD7A300B342514100000080F5955441713D0AF7BC42514166666626F2955441333333F3C1425141CDCCCCECF095544185EB5128CF425141AE47E1BAF0955441E17A14CED5425141E17A148EF09554413D0AD793D8425141B81E854BF1955441C3F5288CDA4251413D0AD773FC9554410AD7A390DB425141666666860296544185EB51B8DC42514148E17A94069654413D0AD733DF425141713D0A570C965441AE47E12AE0425141295C8F520E965441CDCCCC6CE1425141CDCCCC7C0F965441F6285C4FE3425141B81E853B11965441
+</a>
+
+<b>
+01060000000100000001030000000100000037000000CFD2EEC8814251410DB19612F89554414894BB2C7A4251412EE69B33F89554419C8AA66F74425141658C068AF8955441A2A17B2979425141BCA84FC01696544194793B337C42514114BF2E7928965441B8819AD57C42514171CB296F309654419CAFB4EE7F425141A995AAA8349654413972E5B389425141352CEE9C33965441BB033A8E98425141AB8CE3C432965441D55CD936A542514120EDD8EC319654418169A332B1425141E9466E96319654415F7B5E4BB14251413F17DDFB3096544100000050B142514148E17AA430965441E3DBB76FB1425141027CAE1830965441EFB578DFB14251413629395E2D965441D0456120B2425141D4D10A0E2D965441D7A3702DB242514148E17AD42C9654417B75E437B44251413DE286782A965441C53A03BEB4425141F157D9D229965441F54EBFD3B442514127F55BC429965441333333F3B4425141000000A029965441028B7555B5425141C877E26D29965441112083C4B642514114BF2E7928965441F9931C1FBC425141E31BA0F72596544185EB5108C24251413D0AD7F322965441AE47E10ACB425141666666461E965441A242A70BD0425141BFF67E501B96544199CB6197D04251416FC684F81A965441FD65214AD6425141A5CE2897179654414F35C0B5DB425141FC9A902214965441BC47BB91DE425141A4F2FAD811965441A0967643E1425141584EF69E0F965441520321C8DF4251411DC77AF90D965441AC10E1C4DE4251419A3B909C0B965441602B61BEDC42514178D185B706965441435A32DBDB42514110C2278C039654410AD7A390DB4251416666668602965441C3F5288CDA4251413D0AD773FC9554413D0AD793D8425141B81E854BF19554415C5A3F91D64251413DED2BC2F0955441D788A1A7D5425141514A3C9BF0955441F3D82194CF4251416D9D71C6F0955441163DC2FBC742514189F0A6F1F0955441CE7374DFC142514189F0A6F1F09554418EBA7AA0BF42514131EAF17EF195544103F842CEB94251410C7C914EF3955441275CE335B2425141C6ADE601F69554419C39475CAA425141FC7AB0D7F695544166666606A9425141CDCCCC0CF7955441128544A0A7425141E77EBA23F79554411A2B8483A2425141DBECFBB1F795544160B027459E42514150C411BDF7955441D7A3706D9D425141AE47E1CAF7955441B81E854B8F425141F6285CEFF7955441CFD2EEC8814251410DB19612F8955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431185 - 1269386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002B0000008FC2F59872435141F6285CDF9E955441EC51B81E784351411F85EB119C955441B81E850B7E43514133333363989554418FC2F56883435141000000A0949554410AD7A340874351416666660693955441333333038743514185EB5118879554415C8FC2C58643514152B81EE585955441AE47E1BA85435141C3F5282C85955441000000108443514148E17A2484955441E17A14DE8043514185EB517884955441AE47E13A7A435141295C8F8285955441CDCCCCDC7343514114AE478187955441333333D366435141D7A3706D8D955441EC51B84E604351410000006090955441666666D658435141AE47E1DA93955441CDCCCC9C4F43514152B81E1598955441CDCCCCFC4443514185EB51D89C955441666666363A43514185EB51D8A195544152B81ED52D435141E17A145EA69554410AD7A39023435141CDCCCCFCA89554415C8FC2D51F4351410AD7A370AA955441CDCCCCFC1E4351415C8FC2D5AD95544114AE470120435141EC51B8FEB195544148E17AF4224351419A9999E9B595544100000040284351419A999919B49554418FC2F5082B43514148E17AA4B3955441F6285C3F2E435141D7A3704DB29554411F85EB1133435141666666B6AF9554411F85EBD136435141C3F5286CAD955441EC51B8AE3A435141295C8F12AB955441333333C341435141E17A14FEA6955441666666F6444351410AD7A310A5955441E17A146E47435141713D0A37A3955441295C8F524A435141EC51B83EA0955441000000404C435141333333039F955441F6285CDF4E4351415C8FC2959D9554415C8FC2155A4351413D0AD703989554413333332359435141D7A3701DA1955441A4703D8A5B435141CDCCCCCCA8955441D7A370DD61435141A4703D7AA695544114AE47A169435141CDCCCCACA3955441F6285C4F6B4351418FC2F508A39554418FC2F59872435141F6285CDF9E955441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000B35211E5864351418FF7A63C93955441A7A13693844351418B00CF239495544164F81C57834351412B1D84AC94955441F93D76987F43514119A1D24C97955441F393B0BA7C4351414BE08B3499955441122AEA447843514173672EFA9B9554412B92A4637243514188D82AFF9E955441C6A11C406B4351411CA9BF07A3955441EC51B83E66435141D7A3704DA5955441CDCCCC0C5B435141E17A14CEA8955441B81E852B59435141713D0A37A195544114AE478159435141D7A370DD9D9554415C8FC2155A4351413D0AD70398955441D01B9F2553435141ACBF2A769B9554412151BE554F4351411976F35A9D95544193EE360C4D4351412F510A949E955441D29BFF0D4C4351413B252C239F955441645936124B435141AE012CC49F955441295C8F524A435141EC51B83EA0955441FEF4515E474351413F1CDB42A3955441D84CEB8C45435141CBECC99FA4955441B050F58D4443514185C18C4FA59554416F17591B4343514134DBC82EA695544104F1F3873F43514176F34547A8955441EC51B8AE3A435141295C8F12AB9554419866F0C636435141E89DDD72AD955441D507F45733435141630EA28BAF9554413130F98D2E435141C32C3823B29554413B98F7652C435141CCE3E612B3955441CEA541DD2A43514197C8A8ABB395544100000040284351419A999919B49554410AD7A31021435141F6285C8FB6955441E17A14DE2243514114AE4741C095544148E17A342B43514152B81EF5BE955441713D0A1736435141AE47E12ABE9554418FC2F5E83A435141B81E850BBD955441C3F5284C43435141E17A148EB8955441A4703D0A49435141D7A370DDB395544114AE47E14B4351419A999969B2955441F6285CEF534351411F85EB51AE955441CDCCCC0C5643514166666656B39554415C8FC2B5564351417B14AE47B995544185EB51084A43514114AE4781BD9554410AD7A3504143514166666636C095544152B81EA53A435141713D0A67C1955441295C8F72334351411F85EB31C2955441A4703D2A35435141C3F5289CC795544148E17A143743514185EB5108CC955441D7A370BD37435141AE47E18ACE9554416666663637435141CDCCCC2CD2955441713D0A173643514152B81E25D5955441295C8F9234435141C3F528FCD7955441F6285C8F3C435141713D0A77D69554417B14AED748435141F6285C8FD39554411F85EBF1524351413D0AD763D09554410AD7A3005B435141295C8FF2CD955441A4703D8A5E43514133333343DE955441D7A3700D9143514100000060C79554417B14AEE79F435141F6285C0FC0955441B81E856B9E435141B81E853BBD955441F6285C6F9D435141A4703D3ABA9554410AD7A3609C435141F6285C5FB79554415C8FC2559C43514133333343B49554411F85EB119C4351413D0AD7D3B0955441C458533C9B43514147955B3BAE955441A03E9D089B4351412CB41EEBAD955441365900049A435141ADFE9966AC9554413547EA8698435141568F7C1FAB9554419638E48F9343514118238781A6955441BE08A3EB924351417E0D70F2A5955441A57FE6AC9043514112D5FB42A2955441A4703DAA8E435141A4703DEA9E955441ED5A15F38C435141FEC5E9889C955441FD4156F089435141AA3A5F399895544184BFA88E88435141D669F18592955441B35211E5864351418FF7A63C93955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431185 - 3424705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002B0000008FC2F59872435141F6285CDF9E955441EC51B81E784351411F85EB119C955441B81E850B7E43514133333363989554418FC2F56883435141000000A0949554410AD7A340874351416666660693955441333333038743514185EB5118879554415C8FC2C58643514152B81EE585955441AE47E1BA85435141C3F5282C85955441000000108443514148E17A2484955441E17A14DE8043514185EB517884955441AE47E13A7A435141295C8F8285955441CDCCCCDC7343514114AE478187955441333333D366435141D7A3706D8D955441EC51B84E604351410000006090955441666666D658435141AE47E1DA93955441CDCCCC9C4F43514152B81E1598955441CDCCCCFC4443514185EB51D89C955441666666363A43514185EB51D8A195544152B81ED52D435141E17A145EA69554410AD7A39023435141CDCCCCFCA89554415C8FC2D51F4351410AD7A370AA955441CDCCCCFC1E4351415C8FC2D5AD95544114AE470120435141EC51B8FEB195544148E17AF4224351419A9999E9B595544100000040284351419A999919B49554418FC2F5082B43514148E17AA4B3955441F6285C3F2E435141D7A3704DB29554411F85EB1133435141666666B6AF9554411F85EBD136435141C3F5286CAD955441EC51B8AE3A435141295C8F12AB955441333333C341435141E17A14FEA6955441666666F6444351410AD7A310A5955441E17A146E47435141713D0A37A3955441295C8F524A435141EC51B83EA0955441000000404C435141333333039F955441F6285CDF4E4351415C8FC2959D9554415C8FC2155A4351413D0AD703989554413333332359435141D7A3701DA1955441A4703D8A5B435141CDCCCCCCA8955441D7A370DD61435141A4703D7AA695544114AE47A169435141CDCCCCACA3955441F6285C4F6B4351418FC2F508A39554418FC2F59872435141F6285CDF9E955441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000B35211E5864351418FF7A63C93955441A7A13693844351418B00CF239495544164F81C57834351412B1D84AC94955441F93D76987F43514119A1D24C97955441F393B0BA7C4351414BE08B3499955441122AEA447843514173672EFA9B9554412B92A4637243514188D82AFF9E955441C6A11C406B4351411CA9BF07A3955441EC51B83E66435141D7A3704DA5955441CDCCCC0C5B435141E17A14CEA8955441B81E852B59435141713D0A37A195544114AE478159435141D7A370DD9D9554415C8FC2155A4351413D0AD70398955441D01B9F2553435141ACBF2A769B9554412151BE554F4351411976F35A9D95544193EE360C4D4351412F510A949E955441D29BFF0D4C4351413B252C239F955441645936124B435141AE012CC49F955441295C8F524A435141EC51B83EA0955441FEF4515E474351413F1CDB42A3955441D84CEB8C45435141CBECC99FA4955441B050F58D4443514185C18C4FA59554416F17591B4343514134DBC82EA695544104F1F3873F43514176F34547A8955441EC51B8AE3A435141295C8F12AB9554419866F0C636435141E89DDD72AD955441D507F45733435141630EA28BAF9554413130F98D2E435141C32C3823B29554413B98F7652C435141CCE3E612B3955441CEA541DD2A43514197C8A8ABB395544100000040284351419A999919B49554410AD7A31021435141F6285C8FB6955441E17A14DE2243514114AE4741C095544148E17A342B43514152B81EF5BE955441713D0A1736435141AE47E12ABE9554418FC2F5E83A435141B81E850BBD955441C3F5284C43435141E17A148EB8955441A4703D0A49435141D7A370DDB395544114AE47E14B4351419A999969B2955441F6285CEF534351411F85EB51AE955441CDCCCC0C5643514166666656B39554415C8FC2B5564351417B14AE47B995544185EB51084A43514114AE4781BD9554410AD7A3504143514166666636C095544152B81EA53A435141713D0A67C1955441295C8F72334351411F85EB31C2955441A4703D2A35435141C3F5289CC795544148E17A143743514185EB5108CC955441D7A370BD37435141AE47E18ACE9554416666663637435141CDCCCC2CD2955441713D0A173643514152B81E25D5955441295C8F9234435141C3F528FCD7955441F6285C8F3C435141713D0A77D69554417B14AED748435141F6285C8FD39554411F85EBF1524351413D0AD763D09554410AD7A3005B435141295C8FF2CD955441A4703D8A5E43514133333343DE955441D7A3700D9143514100000060C79554417B14AEE79F435141F6285C0FC0955441B81E856B9E435141B81E853BBD955441F6285C6F9D435141A4703D3ABA9554410AD7A3609C435141F6285C5FB79554415C8FC2559C43514133333343B49554411F85EB119C4351413D0AD7D3B0955441C458533C9B43514147955B3BAE955441A03E9D089B4351412CB41EEBAD955441365900049A435141ADFE9966AC9554413547EA8698435141568F7C1FAB9554419638E48F9343514118238781A6955441BE08A3EB924351417E0D70F2A5955441A57FE6AC9043514112D5FB42A2955441A4703DAA8E435141A4703DEA9E955441ED5A15F38C435141FEC5E9889C955441FD4156F089435141AA3A5F399895544184BFA88E88435141D669F18592955441B35211E5864351418FF7A63C93955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431628 - 407546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000EC51B8DE4E4D51410AD7A34092835441666666762A4D514133333383828354410AD7A3E0304D51413D0AD70376835441A4703D3A2E4D5141CDCCCC3C74835441AE47E10A2B4D5141F6285CDF7A8354419A9999B9294D51418FC2F5887D83544166666606264D5141A4703D6A8083544114AE47C1224D5141CDCCCC6C818354418FC2F5881E4D514133333313808354413D0AD7131D4D51417B14AEE781835441E17A148E1A4D514114AE47E18083544114AE47710C4D5141AE47E16A95835441713D0AF7124D5141B81E856B988354410AD7A380154D51413D0AD7F3998354415C8FC295184D5141E17A149E9B835441EC51B87E1C4D5141CDCCCC6C9D835441C3F5280C224D51416666660693835441A4703DEA2A4D5141295C8F7296835441295C8F22384D5141CDCCCCEC9B83544152B81EF5384D5141D7A3704D9C835441C3F528DC3B4D5141713D0A77998354419A9999693C4D5141713D0A2799835441C3F5284C3D4D5141E17A140E9983544152B81E05474D5141000000309A83544114AE47D14A4D5141E17A147E99835441EC51B8DE4E4D51410AD7A34092835441
+</a>
+
+<b>
+010600000001000000010300000001000000160000000C53DE6E304D51417E48DCBB98835441295C8F22384D5141CDCCCCEC9B8354414B3E687F384D514139EC69179C8354418B321FF5384D5141558C6F4D9C8354417D5005C6394D5141DBAB37819B835441C3F528DC3B4D5141713D0A7799835441DF71C2253C4D5141A54A694D99835441B3CE99693C4D5141D81E092799835441E7AAD3CF3C4D5141D318C71B99835441C3F5284C3D4D5141E17A140E9983544152B81E05474D5141000000309A835441E35F690A494D5141C5EA53D199835441ECE446D14A4D5141E8D3137E99835441BC0C5C774D4D51416AEAA7C294835441EAF3B7DE4E4D5141FD7EA44092835441F18E76A83A4D5141A148A98389835441165066762A4D5141698232838283544170CE6776294D51418CEF326384835441C3F5280C224D514166666606938354418998E47A254D514104458E5994835441A52E3CEA2A4D5141811B8E72968354410C53DE6E304D51417E48DCBB98835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963296 - 962790
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003C000000B0B1FBE965D15041E6FFC8358C365541AA71B5DC65D150419812C5458C365541613CA8D965D15041A82EC4438C365541A51FB9B665D150419FFD988E8E365541495D70F965D150411576592A92365541059675C36CD150413739351AA6365541FCB2484B71D15041954E2FE3B0365541C36FCB2874D15041B0AB6DA8B4365541B440ADAC80D150418975A8ADBE365541549049C581D15041CB8C175FBE365541AAF30B4787D15041BC0B30FBB8365541AFDBE0948DD15041F3EE4389B3365541BDF9E55A95D150413FDF9326AE3655410DD8BC639BD150410D250DEFA936554195FECBAAA2D1504114555220A63655418E392199A9D15041114D2F88A3365541D8778F32BDD15041F2CB25B89D365541A02B13ABC3D150416299B52C9B365541E57BD048CAD15041C7D82B3699365541CCC6F3F6CCD15041E9BF9086983655412B5BED1CCBD15041B9763A449736554104DA18E4C8D150413B29EEEE953655411D329E00C6D150418D924B5793365541858E1930C3D15041AFB2527D8F36554102DEB226C0D1504153850D4E8A36554158AC77E4BAD15041E164AA57853655412CCAD598B2D15041780CC96A7F365541193E6CC8ABD1504106EC65747A3655419AF4B9B5A1D15041D141421F73365541B34E8C739AD150418A071BB76D36554100571CC991D1504113849D0C673655419600887D87D1504183AAE7E65E365541A69425D37CD150411DB76D4F563655418278B8EF77D150410F8E1E3351365541E571196B73D15041B360D9034C365541C723157560D15041CEB6117F4D365541C0C6E1A451D15041BD260E6C4F3655412B6DE9BC4BD15041ECBCEEB047365541E4D60C4C48D150415520E550493655410326D2F142D15041A12D94454A3655411AC8144D43D15041608AB9E14A365541F09FF24F43D15041849D01E14A365541D6BCAFEA43D15041CA1D76E64B365541EDE49F3745D15041EA9D83F24D3655417281BFEB46D15041AEFA1D0950365541DA0203C248D1504155A6F80852365541472BEB054BD15041C2CEE04C5436554105D7A0005ED150410205645368365541D8587C9161D15041E3ACB73A6B365541D8AF1D716AD15041A4F644E071365541B488CACA73D1504131F4D86E78365541D4F90D1874D1504148F9BCA5783655412A8B83E473D150412710F80179365541FC327DF873D1504199AC3C1079365541799C5E7973D15041706AB3C17936554171CBC00C73D15041563111847A36554149E6A95E70D150415C4A24177E365541F312ADF965D15041A25FFC998C36554162F2CAFD65D15041AD0B89438C365541B0B1FBE965D15041E6FFC8358C365541
+</a>
+
+<b>
+01060000000100000001030000000200000026000000F512ADF965D15041A45FFC998C365541FC327DF873D1504198AC3C1079365541C43FA87668D15041024812D87036554105D7A0005ED150410005645368365541452BEB054BD15041C6CEE04C54365541E576E7CA45D15041661ADD114F365541EF9FF24F43D15041899D01E14A365541E17A148E40D150411F85EB914B3655410000005040D150418FC2F5684C3655415C8FC21541D150411F85EB01513655417B14AE6742D150419A9999595536554114AE479141D15041A4703DAA573655417B14AEB73AD15041CDCCCC4C5B365541BEAA87BA38D1504147A6337F5B365541F5A98E1E36D15041C38E02205C365541C4FE3D6134D1504150B041555D3655419858F48E33D15041815B92125F3655419C5DFB7934D15041A483CA6A66365541A162026535D15041C6D056AB6A36554152B81E0537D15041AE47E1EA6E365541295C8FF238D1504152B81E65713655418FC2F5F83BD150415C8FC2D57436554185EB51283ED1504166666626773655411F85EB8140D1504148E17A047936554148E17A2443D1504114AE47C1793655416AAA567747D15041506853157A365541E76DD12F4BD15041402FE38079365541C8D69C1E4DD15041E0B3ED1D79365541295C8F1250D15041AE47E13A7A3655412B0DF19B54D15041C826C7E27C3655416CF1B1ED56D15041050681497E3655414226143359D15041F1A2B5E17F365541246A8B395ED15041224E069F8136554152B81E055ED15041B81E85CB82365541BD3C15D75BD15041DBC7664685365541F594E31C5CD15041BCB82D688536554163F2CAFD65D15041A80B89438C365541F512ADF965D15041A45FFC998C365541110000003D0AD7D359D150417B14AEE778365541F6285C1F58D15041666666A677365541F6285C3F57D15041C3F5287C76365541A4703DAA56D150411F85EBC1743655411F85EBB152D15041B81E855B7236554114AE47E155D15041EC51B83E723655418FC2F5A858D15041B81E850B7236554148E17A645DD150415C8FC20572365541CDCCCC9C5FD15041295C8F42713655419A99991962D15041295C8F72723655417B14AE0764D150413D0AD783723655417B14AE5764D15041A4703D5A74365541C3F5283C62D1504148E17AC475365541A4703D8A61D15041E17A147E77365541D7A3703D60D1504185EB51187A36554148E17AD45CD150418FC2F5D8793655413D0AD7D359D150417B14AEE778365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432302 - 3074835
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000042000000CDCCCCAC18535141B81E85FB9B5654417B14AE7721535141666666869E5654413D0AD7F32B53514148E17A34A1565441295C8F723653514100000060A4565441F6285C2F415351410AD7A340A756544152B81EB54153514133333363A5565441A4703D3A4253514152B81E85A356544152B81E1543535141D7A3704D9F565441F6285CEF435351417B14AEE79A565441B81E857B44535141F6285C1F96565441A4703DAA4453514100000060935654418FC2F588445351410AD7A3F0905654413D0AD743445351410AD7A300895654411F85EB515353514148E17A648756544148E17AD4635351416666661687565441333333B36B53514185EB51288756544185EB51D86853514100000080775654413D0AD7C3655351418FC2F5986656544148E17A84625351418FC2F5C854565441F6285C9F5B5351411F85EB3155565441C3F5281C58535141CDCCCCFC55565441AE47E10A545351413D0AD733575654413D0AD72351535141A4703D3A58565441D7A370FD4D5351417B14AE4759565441D7A3700D4853514152B81E855A565441295C8FD245535141CDCCCCAC5A56544152B81E653D535141B81E859B5B565441EC51B84E385351415C8FC2155C56544185EB512834535141A4703DAA5C565441F6285CDF335351417B14AEF75B565441713D0A972E535141000000E05C565441EC51B8CE24535141E17A148E5E5654415C8FC22524535141EC51B82E6F565441A4703D8A235351418FC2F5E8745654413D0AD733235351419A99991978565441713D0AF72C53514152B81ED578565441B81E859B2C53514148E17AB480565441D7A3703D2C535141A4703D8A8656544152B81ED52B53514152B81ED58856544185EB51C82D5351417B14AE478856544152B81EC52F535141CDCCCC2C875654410AD7A380315351411F85EBC1855654417B14AE8735535141F6285CDF8156544133333393355351411F85EB017F5654410000006036535141CDCCCC0C7F56544152B81E7537535141B81E850B775654418FC2F5983E535141666666367556544114AE47B13F535141713D0AD77756544148E17A7443535141D7A3701D83565441F6285CCF4353514114AE47B18556544185EB513832535141F6285C7F8656544185EB515830535141333333038856544148E17A242E5351411F85EB4189565441000000902B5351410AD7A3008A565441EC51B82E2853514114AE478189565441E17A140E25535141AE47E1EA88565441A4703D7A22535141F6285CAF885654415C8FC2352053514152B81EA588565441000000001F535141713D0AD7885654413D0AD7D31D53514133333363895654417B14AEF71C535141333333038A565441B81E857B1B535141713D0AA78B565441F6285CBF18535141F6285C8F8F565441333333B3155351413D0AD75394565441F6285C1F125351413D0AD7239A565441CDCCCCAC18535141B81E85FB9B565441
+</a>
+
+<b>
+010600000001000000010300000001000000070000009CA35DE55753514119B8E7CC5556544114AE47E152535141000000D02156544122862528485351413FE75E01235654411BE602714D535141D55CFB44595654410DAC1D4453535141D445087A57565441E4044B8753535141B5224F62575654419CA35DE55753514119B8E7CC55565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432302 - 3364861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000042000000CDCCCCAC18535141B81E85FB9B5654417B14AE7721535141666666869E5654413D0AD7F32B53514148E17A34A1565441295C8F723653514100000060A4565441F6285C2F415351410AD7A340A756544152B81EB54153514133333363A5565441A4703D3A4253514152B81E85A356544152B81E1543535141D7A3704D9F565441F6285CEF435351417B14AEE79A565441B81E857B44535141F6285C1F96565441A4703DAA4453514100000060935654418FC2F588445351410AD7A3F0905654413D0AD743445351410AD7A300895654411F85EB515353514148E17A648756544148E17AD4635351416666661687565441333333B36B53514185EB51288756544185EB51D86853514100000080775654413D0AD7C3655351418FC2F5986656544148E17A84625351418FC2F5C854565441F6285C9F5B5351411F85EB3155565441C3F5281C58535141CDCCCCFC55565441AE47E10A545351413D0AD733575654413D0AD72351535141A4703D3A58565441D7A370FD4D5351417B14AE4759565441D7A3700D4853514152B81E855A565441295C8FD245535141CDCCCCAC5A56544152B81E653D535141B81E859B5B565441EC51B84E385351415C8FC2155C56544185EB512834535141A4703DAA5C565441F6285CDF335351417B14AEF75B565441713D0A972E535141000000E05C565441EC51B8CE24535141E17A148E5E5654415C8FC22524535141EC51B82E6F565441A4703D8A235351418FC2F5E8745654413D0AD733235351419A99991978565441713D0AF72C53514152B81ED578565441B81E859B2C53514148E17AB480565441D7A3703D2C535141A4703D8A8656544152B81ED52B53514152B81ED58856544185EB51C82D5351417B14AE478856544152B81EC52F535141CDCCCC2C875654410AD7A380315351411F85EBC1855654417B14AE8735535141F6285CDF8156544133333393355351411F85EB017F5654410000006036535141CDCCCC0C7F56544152B81E7537535141B81E850B775654418FC2F5983E535141666666367556544114AE47B13F535141713D0AD77756544148E17A7443535141D7A3701D83565441F6285CCF4353514114AE47B18556544185EB513832535141F6285C7F8656544185EB515830535141333333038856544148E17A242E5351411F85EB4189565441000000902B5351410AD7A3008A565441EC51B82E2853514114AE478189565441E17A140E25535141AE47E1EA88565441A4703D7A22535141F6285CAF885654415C8FC2352053514152B81EA588565441000000001F535141713D0AD7885654413D0AD7D31D53514133333363895654417B14AEF71C535141333333038A565441B81E857B1B535141713D0AA78B565441F6285CBF18535141F6285C8F8F565441333333B3155351413D0AD75394565441F6285C1F125351413D0AD7239A565441CDCCCCAC18535141B81E85FB9B565441
+</a>
+
+<b>
+010600000001000000010300000001000000070000009CA35DE55753514119B8E7CC5556544114AE47E152535141000000D02156544122862528485351413FE75E01235654411BE602714D535141D55CFB44595654410DAC1D4453535141D445087A57565441E4044B8753535141B5224F62575654419CA35DE55753514119B8E7CC55565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432655 - 340787
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000001F85EB615C4751413D0AD7D3A051544152B81EF55547514152B81EA59E5154418FC2F53849475141A4703D4A9B515441C3F5282C47475141EC51B8AE9A51544114AE47B1414751419A9999B99E515441A4703DEA4547514114AE4701A451544152B81E9550475141295C8F32AF51544185EB512854475141F6285CCFAD515441B81E851B57475141AE47E16AAC5154415C8FC225584751411F85EBE1AB51544148E17AA45D475141333333F3B0515441CDCCCC1C60475141A4703D0AAD515441D7A370FD6347514114AE4731A651544114AE479164475141C3F5282CA5515441F6285C0F6347514148E17A24A4515441CDCCCC9C5F475141C3F5284CA25154411F85EB615C4751413D0AD7D3A0515441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000CDCCCC9C5F475141C3F5284CA251544138516ABB5E475141C2E0349CA35154418B6A4B265E475141521BBA70A45154410850AC375D4751417C8494BAA551544105E42D7D5C475141AD3360BCA6515441C3CFED3C5B475141C491C86BA8515441192030815A47514102D69A55A9515441D1794C70594751419F4D79A9AA515441D7A370AD58475141C3F5289CAB51544108F1E780584751417A78CBC0AB5154414FC15A2858475141020696E0AB51544148E17AA45D475141333333F3B05154412E22CAFD5F4751412151543BAD5154419782DB286147514170A7DC30AB51544142559B1362475141F0FC4D92A9515441207FECFF624751415292FAF0A751544177851983634751412AE95309A7515441D16E0AAC63475141291107C1A651544104923E26644751419CB935E9A55154415B3AE24364475141E525DCB4A551544114AE479164475141C3F5282CA5515441369B500E6347514174B1EB23A451544118C1504B62475141BA1090BBA3515441704D9EDD61475141032BDB80A3515441CDCCCC9C5F475141C3F5284CA2515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>433151 - 42456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000AC000000E17A14FE515E51419A999949CC4154415C8FC2354E5E51417B14AEE7C74154418FC2F5284D5E5141B81E85BBC5415441666666264C5E514100000000C3415441CDCCCCBC4B5E51410AD7A320C1415441000000404B5E5141AE47E1BABE415441333333F34A5E514185EB51C8BC415441666666A64A5E5141295C8FF2BA415441666666A64A5E5141295C8FD2B94154419A9999B94A5E51419A9999E9B7415441000000E04A5E5141D7A370BDB5415441666666664B5E514152B81EE5B2415441000000004C5E51415C8FC275B041544185EB5148485E51418FC2F528B341544133333313465E5141666666F6B341544152B81E95425E5141D7A3703DB641544114AE4771375E5141D7A3706DBD415441CDCCCCFC335E5141F6285CEFBF4154418FC2F5E8305E5141000000F0C24154411F85EBB12E5E5141295C8F52C54154410AD7A3002D5E51417B14AE67C7415441A4703DBA285E5141C3F528DCCC4154417B14AEE7275E5141F6285C1FCE41544133333373265E51411F85EBD1CF41544148E17A94245E5141CDCCCCBCD14154419A9999F9225E5141E17A141ED341544100000050215E514148E17A94D44154418FC2F5881E5E514148E17A44D641544148E17AF41B5E5141C3F528CCD741544185EB51D8195E5141AE47E1DAD841544166666626165E5141AE47E16ADA415441295C8F32115E5141B81E857BDC415441D7A3703D095E51419A9999E9DE4154413D0AD773095E5141AE47E1DAE04154410AD7A3100D5E5141D7A370ADE741544166666676145E514185EB51C8F54154413D0AD7B3255E5141333333D3EA4154410AD7A390365E5141B81E851BE0415441C3F5283C3F5E51419A999929EC41544148E17AB4455E5141B81E85BBF5415441666666B64D5E514148E17A9401425441C3F528DC4F5E51417B14AE770342544114AE47D1535E51418FC2F51807425441AE47E13A565E5141C3F528AC0A425441E17A14EE565E514152B81EB50B42544166666626595E51416666663610425441000000205B5E51418FC2F53810425441D7A3705D5E5E5141713D0A47104254411F85EB31605E5141B81E859B10425441C3F5283C635E514114AE4731114254415C8FC2E5655E51419A999929124254411F85EBA1685E51413D0AD783134254410AD7A3006B5E5141C3F5281C154254413D0AD7336C5E51418FC2F538164254413D0AD7636D5E5141F6285C5F174254417B14AE176F5E5141AE47E1BA184254417B14AE97705E5141713D0A271A425441D7A370AD715E5141D7A370DD1A425441CDCCCCCC725E5141A4703D2A1B4254419A999969745E5141A4703D5A1B425441295C8F92755E5141D7A3703D1B425441EC51B88E775E5141713D0AB71A4254410AD7A3807A5E514100000000194254419A9999797D5E5141713D0AD71642544114AE4751815E51410AD7A350144254413D0AD7D3845E51418FC2F51812425441CDCCCCAC885E5141E17A148E0F425441E17A146E8D5E51411F85EBD10C4254419A9999E9905E5141295C8F220B42544185EB5108955E5141333333A3094254410AD7A360995E51419A99997908425441F6285CEF9C5E51413D0AD7C3074254411F85EB91A05E5141713D0A17074254410AD7A3D0A35E5141713D0A8706425441E17A14DEA25E514148E17A0404425441295C8F52A25E51419A999929024254411F85EB31A15E514133333373FE4154413D0AD793A05E5141E17A14DEFB4154417B14AE07A05E514133333393F9415441000000609F5E5141713D0A07F74154415C8FC2A59E5E5141F6285CEFF34154413D0AD7B39D5E514114AE4791EF4154413D0AD7439D5E5141C3F5286CED415441000000F09C5E514114AE4721EB415441C3F5289C9C5E514148E17A74E9415441713D0A779C5E51419A999909E84154415C8FC2359C5E5141B81E85FBE64154419A9999199C5E5141713D0A87E54154419A9999199C5E5141A4703D4AE441544185EB51489C5E514166666686E3415441EC51B8AE9C5E5141713D0A37E241544114AE47319D5E5141AE47E18AE041544114AE47A19D5E51415C8FC285DF4154417B14AE079E5E5141C3F528ECDD4154418FC2F5489E5E5141E17A14DEDC415441333333939E5E5141000000D0DB4154419A9999F99E5E51415C8FC235DA415441713D0A579F5E5141EC51B81ED9415441666666C69F5E5141713D0A97D7415441B81E855BA05E5141713D0A97D541544148E17AD4A05E51418FC2F518D441544133333303A15E514133333343D3415441D7A3709DA25E51413D0AD7A3CE4154411F85EB31A35E514133333313CD415441A4703D9AA35E5141A4703D8ACB4154417B14AED7A15E5141713D0AB7CA4154418FC2F5789E5E5141AE47E14AC9415441666666C69B5E514148E17A04C84154417B14AE97985E51411F85EB11C6415441EC51B85E955E514133333343C3415441666666C6915E514114AE4771BF41544148E17AB48E5E5141F6285C9FBB41544114AE47C18C5E5141000000A0B8415441D7A3706D8B5E51418FC2F508B5415441F6285C9F8A5E5141E17A149EB2415441B81E85BB8A5E51418FC2F548B1415441333333538B5E514148E17AD4AF41544114AE47A18E5E514114AE4711AB415441D7A370BD8E5E5141AE47E12AAA4154417B14AE678E5E514152B81E45A94154417B14AE078E5E514152B81E85A841544148E17A648D5E514152B81EF5A7415441B81E853B8C5E5141F6285C3FA74154415C8FC2058A5E5141295C8F92A6415441000000B0865E5141295C8F32A6415441000000907E5E5141F6285CBFA54154418FC2F5B8755E51418FC2F5F8A54154417B14AE37705E5141295C8F62A6415441333333436A5E5141F6285C0FA74154417B14AE17655E514152B81E25A8415441CDCCCC1C605E51417B14AE47AA415441EC51B82E595E5141666666F6AE415441A4703DCA535E5141B81E853BB341544148E17AC4515E514148E17AC4B4415441B81E85DB4F5E5141D7A370DDB641544185EB51A84E5E5141CDCCCC1CB9415441F6285C3F4E5E5141C3F5289CBA415441C3F528FC4D5E5141EC51B88EBC415441C3F5282C4E5E51417B14AED7BE415441EC51B8FE4E5E51413D0AD733C1415441EC51B81E505E5141CDCCCC7CC341544148E17A24525E514152B81EA5C7415441D7A3703D545E5141713D0A57CA415441713D0A175E5E5141333333F3D541544185EB5158645E5141AE47E18ADC415441AE47E15A655E5141AE47E14ADD4154413D0AD7E3665E51417B14AE37DD4154410AD7A320685E514148E17A54DD415441CDCCCCFC685E5141E17A14BEDD415441CDCCCCEC695E5141A4703D2ADF415441AE47E1EA6F5E5141295C8F82ED415441EC51B82E6D5E51411F85EB01EF4154418FC2F5E86B5E51411F85EB91EF4154419A9999D9695E5141AE47E12AF041544114AE47E1655E514114AE47E1F0415441333333835F5E51410AD7A300F2415441333333F35E5E5141AE47E17AF1415441713D0A775E5E514148E17A94F0415441713D0A475E5E5141B81E856BEF415441D7A3706D5E5E514185EB5108EE415441666666D65E5E51419A9999C9EB415441000000705F5E5141D7A370DDE841544166666626605E5141AE47E12AE6415441295C8F92615E51418FC2F518E3415441295C8F82625E514100000060E1415441EC51B8CE625E51419A999979E04154417B14AE07635E5141F6285C6FDF41544185EB51D8625E5141713D0AE7DE415441295C8F52625E514148E17AB4DD415441713D0A875D5E5141295C8F62D8415441000000E0545E5141EC51B8FECF415441E17A14FE515E51419A999949CC415441
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000C3249DB99F5E5141DBD84AD4D7415441160E45F89D5E5141F0E34859DE4154415C2C51F49D5E5141391A8864DE415441ADADADED9D5E51410EDA6B77DE4154414E5440D89D5E514188E263B4DE41544156A584D09D5E5141D9437BD1DE4154415B8FABC89D5E51414E0A33E8DE41544114AE47A19D5E51415C8FC285DF4154411C3C19549D5E5141B2F6B339E041544127EA1AF99C5E514128BB1943E1415441EC51B8AE9C5E5141713D0A37E241544138A5677E9C5E51413EA645D5E2415441EFDE403A9C5E51411CF37BD2E3415441B0986A1E9C5E51414523E939E44154413AC1061E9C5E5141DC2B56F6E44154419A9999199C5E5141A361CC43E54154419A9999199C5E5141DF3BCC85E54154419CA3CA249C5E514162D861D5E5415441C1C9F6249C5E51412DCB9BD6E5415441F2C017709C5E51416E8CDBECE7415441713D0A779C5E51419A999909E8415441E406CB7E9C5E5141549A6455E8415441C6B05AC39C5E5141C86EF03CEA415441000000F09C5E514114AE4721EB415441F6760F369D5E5141D0EEB30BED4154417E1C8D369D5E5141E5D5140EED415441ED9D70B09D5E514108D3C55CEF415441BAC95ECD9D5E5141D044F9E8EF41544118D923EA9D5E514154D4EE6EF04154410BE618859E5E514176206758F34154413D0228879E5E5141B244EB61F3415441659D55879E5E5141B30BBE62F3415441148E09889E5E514186ACFD65F34154412521D0909E5E51419984F48AF3415441D2723F989E5E51413E8745AAF3415441DE7593DB9E5E51410FB3DDC5F44154414C900F9C9F5E5141709EA2F0F74154417B14AE07A05E514133333393F941544104F8D975A05E514169EF8260FB415441E6EE0EAAA05E5141C8C0EE36FC4154414166C66FA15E51415D864126FF415441E59A2387A15E5141371B0A7FFF415441403A10B5A15E5141EDAD352100425441D5D170FFA15E51413AF0721301425441EBBF9CD1A25E514146D4F4BF034254415BB97C05A35E51411169DF6C044254410D8EFB4DA35E5141632CEB2C054254411B0E4D67A35E5141CC29FD6F0542544169A8D58BA35E5141387427BC054254413DB80BC6A35E5141813F833506425441834579E4A35E514196E4F27406425441ADFCEEE5A35E5141A603FE770642544146FC968BA45E514175AEE846064254416327DB04A35E51416BF5CF58004254418889E137A25E51411BB1811EFD41544145B74131A15E51410B02D210F941544108E38CCA9F5E51415C4CDCC2F34154417A0FDF839E5E51410FC9774EEE415441E23F5BFD9D5E5141EF233121EC415441423D3F7D9D5E514159DCBF46E841544161A15A109D5E5141B39663CCE4415441A473FA169E5E5141E7B52905E1415441A0AEE6909F5E51418D0142F7DB4154417C4CE05DA05E5141B0264750D9415441A7E9D20AA15E51417119BBCFD6415441605A73FEA25E51411D5B6AE1CF415441ED2D2145A45E51412D10D666CB4154419EEDEEB9A35E514170E48B3ACB415441CE8341B5A35E514173F8DE48CB415441CE1631B0A35E514141466158CB415441B55B813EA35E5141C7183107CD4154411057505EA25E51414FF21D6ECF4154418383A217A15E5141DD06F74ED3415441C3249DB99F5E5141DBD84AD4D7415441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>433151 - 76942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000AC000000E17A14FE515E51419A999949CC4154415C8FC2354E5E51417B14AEE7C74154418FC2F5284D5E5141B81E85BBC5415441666666264C5E514100000000C3415441CDCCCCBC4B5E51410AD7A320C1415441000000404B5E5141AE47E1BABE415441333333F34A5E514185EB51C8BC415441666666A64A5E5141295C8FF2BA415441666666A64A5E5141295C8FD2B94154419A9999B94A5E51419A9999E9B7415441000000E04A5E5141D7A370BDB5415441666666664B5E514152B81EE5B2415441000000004C5E51415C8FC275B041544185EB5148485E51418FC2F528B341544133333313465E5141666666F6B341544152B81E95425E5141D7A3703DB641544114AE4771375E5141D7A3706DBD415441CDCCCCFC335E5141F6285CEFBF4154418FC2F5E8305E5141000000F0C24154411F85EBB12E5E5141295C8F52C54154410AD7A3002D5E51417B14AE67C7415441A4703DBA285E5141C3F528DCCC4154417B14AEE7275E5141F6285C1FCE41544133333373265E51411F85EBD1CF41544148E17A94245E5141CDCCCCBCD14154419A9999F9225E5141E17A141ED341544100000050215E514148E17A94D44154418FC2F5881E5E514148E17A44D641544148E17AF41B5E5141C3F528CCD741544185EB51D8195E5141AE47E1DAD841544166666626165E5141AE47E16ADA415441295C8F32115E5141B81E857BDC415441D7A3703D095E51419A9999E9DE4154413D0AD773095E5141AE47E1DAE04154410AD7A3100D5E5141D7A370ADE741544166666676145E514185EB51C8F54154413D0AD7B3255E5141333333D3EA4154410AD7A390365E5141B81E851BE0415441C3F5283C3F5E51419A999929EC41544148E17AB4455E5141B81E85BBF5415441666666B64D5E514148E17A9401425441C3F528DC4F5E51417B14AE770342544114AE47D1535E51418FC2F51807425441AE47E13A565E5141C3F528AC0A425441E17A14EE565E514152B81EB50B42544166666626595E51416666663610425441000000205B5E51418FC2F53810425441D7A3705D5E5E5141713D0A47104254411F85EB31605E5141B81E859B10425441C3F5283C635E514114AE4731114254415C8FC2E5655E51419A999929124254411F85EBA1685E51413D0AD783134254410AD7A3006B5E5141C3F5281C154254413D0AD7336C5E51418FC2F538164254413D0AD7636D5E5141F6285C5F174254417B14AE176F5E5141AE47E1BA184254417B14AE97705E5141713D0A271A425441D7A370AD715E5141D7A370DD1A425441CDCCCCCC725E5141A4703D2A1B4254419A999969745E5141A4703D5A1B425441295C8F92755E5141D7A3703D1B425441EC51B88E775E5141713D0AB71A4254410AD7A3807A5E514100000000194254419A9999797D5E5141713D0AD71642544114AE4751815E51410AD7A350144254413D0AD7D3845E51418FC2F51812425441CDCCCCAC885E5141E17A148E0F425441E17A146E8D5E51411F85EBD10C4254419A9999E9905E5141295C8F220B42544185EB5108955E5141333333A3094254410AD7A360995E51419A99997908425441F6285CEF9C5E51413D0AD7C3074254411F85EB91A05E5141713D0A17074254410AD7A3D0A35E5141713D0A8706425441E17A14DEA25E514148E17A0404425441295C8F52A25E51419A999929024254411F85EB31A15E514133333373FE4154413D0AD793A05E5141E17A14DEFB4154417B14AE07A05E514133333393F9415441000000609F5E5141713D0A07F74154415C8FC2A59E5E5141F6285CEFF34154413D0AD7B39D5E514114AE4791EF4154413D0AD7439D5E5141C3F5286CED415441000000F09C5E514114AE4721EB415441C3F5289C9C5E514148E17A74E9415441713D0A779C5E51419A999909E84154415C8FC2359C5E5141B81E85FBE64154419A9999199C5E5141713D0A87E54154419A9999199C5E5141A4703D4AE441544185EB51489C5E514166666686E3415441EC51B8AE9C5E5141713D0A37E241544114AE47319D5E5141AE47E18AE041544114AE47A19D5E51415C8FC285DF4154417B14AE079E5E5141C3F528ECDD4154418FC2F5489E5E5141E17A14DEDC415441333333939E5E5141000000D0DB4154419A9999F99E5E51415C8FC235DA415441713D0A579F5E5141EC51B81ED9415441666666C69F5E5141713D0A97D7415441B81E855BA05E5141713D0A97D541544148E17AD4A05E51418FC2F518D441544133333303A15E514133333343D3415441D7A3709DA25E51413D0AD7A3CE4154411F85EB31A35E514133333313CD415441A4703D9AA35E5141A4703D8ACB4154417B14AED7A15E5141713D0AB7CA4154418FC2F5789E5E5141AE47E14AC9415441666666C69B5E514148E17A04C84154417B14AE97985E51411F85EB11C6415441EC51B85E955E514133333343C3415441666666C6915E514114AE4771BF41544148E17AB48E5E5141F6285C9FBB41544114AE47C18C5E5141000000A0B8415441D7A3706D8B5E51418FC2F508B5415441F6285C9F8A5E5141E17A149EB2415441B81E85BB8A5E51418FC2F548B1415441333333538B5E514148E17AD4AF41544114AE47A18E5E514114AE4711AB415441D7A370BD8E5E5141AE47E12AAA4154417B14AE678E5E514152B81E45A94154417B14AE078E5E514152B81E85A841544148E17A648D5E514152B81EF5A7415441B81E853B8C5E5141F6285C3FA74154415C8FC2058A5E5141295C8F92A6415441000000B0865E5141295C8F32A6415441000000907E5E5141F6285CBFA54154418FC2F5B8755E51418FC2F5F8A54154417B14AE37705E5141295C8F62A6415441333333436A5E5141F6285C0FA74154417B14AE17655E514152B81E25A8415441CDCCCC1C605E51417B14AE47AA415441EC51B82E595E5141666666F6AE415441A4703DCA535E5141B81E853BB341544148E17AC4515E514148E17AC4B4415441B81E85DB4F5E5141D7A370DDB641544185EB51A84E5E5141CDCCCC1CB9415441F6285C3F4E5E5141C3F5289CBA415441C3F528FC4D5E5141EC51B88EBC415441C3F5282C4E5E51417B14AED7BE415441EC51B8FE4E5E51413D0AD733C1415441EC51B81E505E5141CDCCCC7CC341544148E17A24525E514152B81EA5C7415441D7A3703D545E5141713D0A57CA415441713D0A175E5E5141333333F3D541544185EB5158645E5141AE47E18ADC415441AE47E15A655E5141AE47E14ADD4154413D0AD7E3665E51417B14AE37DD4154410AD7A320685E514148E17A54DD415441CDCCCCFC685E5141E17A14BEDD415441CDCCCCEC695E5141A4703D2ADF415441AE47E1EA6F5E5141295C8F82ED415441EC51B82E6D5E51411F85EB01EF4154418FC2F5E86B5E51411F85EB91EF4154419A9999D9695E5141AE47E12AF041544114AE47E1655E514114AE47E1F0415441333333835F5E51410AD7A300F2415441333333F35E5E5141AE47E17AF1415441713D0A775E5E514148E17A94F0415441713D0A475E5E5141B81E856BEF415441D7A3706D5E5E514185EB5108EE415441666666D65E5E51419A9999C9EB415441000000705F5E5141D7A370DDE841544166666626605E5141AE47E12AE6415441295C8F92615E51418FC2F518E3415441295C8F82625E514100000060E1415441EC51B8CE625E51419A999979E04154417B14AE07635E5141F6285C6FDF41544185EB51D8625E5141713D0AE7DE415441295C8F52625E514148E17AB4DD415441713D0A875D5E5141295C8F62D8415441000000E0545E5141EC51B8FECF415441E17A14FE515E51419A999949CC415441
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000C3249DB99F5E5141DBD84AD4D7415441160E45F89D5E5141F0E34859DE4154415C2C51F49D5E5141391A8864DE415441ADADADED9D5E51410EDA6B77DE4154414E5440D89D5E514188E263B4DE41544156A584D09D5E5141D9437BD1DE4154415B8FABC89D5E51414E0A33E8DE41544114AE47A19D5E51415C8FC285DF4154411C3C19549D5E5141B2F6B339E041544127EA1AF99C5E514128BB1943E1415441EC51B8AE9C5E5141713D0A37E241544138A5677E9C5E51413EA645D5E2415441EFDE403A9C5E51411CF37BD2E3415441B0986A1E9C5E51414523E939E44154413AC1061E9C5E5141DC2B56F6E44154419A9999199C5E5141A361CC43E54154419A9999199C5E5141DF3BCC85E54154419CA3CA249C5E514162D861D5E5415441C1C9F6249C5E51412DCB9BD6E5415441F2C017709C5E51416E8CDBECE7415441713D0A779C5E51419A999909E8415441E406CB7E9C5E5141549A6455E8415441C6B05AC39C5E5141C86EF03CEA415441000000F09C5E514114AE4721EB415441F6760F369D5E5141D0EEB30BED4154417E1C8D369D5E5141E5D5140EED415441ED9D70B09D5E514108D3C55CEF415441BAC95ECD9D5E5141D044F9E8EF41544118D923EA9D5E514154D4EE6EF04154410BE618859E5E514176206758F34154413D0228879E5E5141B244EB61F3415441659D55879E5E5141B30BBE62F3415441148E09889E5E514186ACFD65F34154412521D0909E5E51419984F48AF3415441D2723F989E5E51413E8745AAF3415441DE7593DB9E5E51410FB3DDC5F44154414C900F9C9F5E5141709EA2F0F74154417B14AE07A05E514133333393F941544104F8D975A05E514169EF8260FB415441E6EE0EAAA05E5141C8C0EE36FC4154414166C66FA15E51415D864126FF415441E59A2387A15E5141371B0A7FFF415441403A10B5A15E5141EDAD352100425441D5D170FFA15E51413AF0721301425441EBBF9CD1A25E514146D4F4BF034254415BB97C05A35E51411169DF6C044254410D8EFB4DA35E5141632CEB2C054254411B0E4D67A35E5141CC29FD6F0542544169A8D58BA35E5141387427BC054254413DB80BC6A35E5141813F833506425441834579E4A35E514196E4F27406425441ADFCEEE5A35E5141A603FE770642544146FC968BA45E514175AEE846064254416327DB04A35E51416BF5CF58004254418889E137A25E51411BB1811EFD41544145B74131A15E51410B02D210F941544108E38CCA9F5E51415C4CDCC2F34154417A0FDF839E5E51410FC9774EEE415441E23F5BFD9D5E5141EF233121EC415441423D3F7D9D5E514159DCBF46E841544161A15A109D5E5141B39663CCE4415441A473FA169E5E5141E7B52905E1415441A0AEE6909F5E51418D0142F7DB4154417C4CE05DA05E5141B0264750D9415441A7E9D20AA15E51417119BBCFD6415441605A73FEA25E51411D5B6AE1CF415441ED2D2145A45E51412D10D666CB4154419EEDEEB9A35E514170E48B3ACB415441CE8341B5A35E514173F8DE48CB415441CE1631B0A35E514141466158CB415441B55B813EA35E5141C7183107CD4154411057505EA25E51414FF21D6ECF4154418383A217A15E5141DD06F74ED3415441C3249DB99F5E5141DBD84AD4D7415441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510683 - 1301192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002A00000014AE47F1E651514114AE474151DC54417B14AEB7E75151411F85EB0150DC5441F6285C6FEA5151419A9999A94EDC544114AE47C1EC515141D7A370BD4DDC5441CDCCCC9CEF5151413D0AD7934ADC5441C3F5287CF2515141E17A14BE4DDC5441CDCCCC5CF7515141E17A14EE4DDC5441D7A3706DFA515141D7A370CD4DDC544100000020FE5151410AD7A3504DDC5441CDCCCC5CFA515141AE47E12A45DC54410AD7A320F6515141EC51B8FE3BDC5441333333B3EB5151417B14AE7740DC54410AD7A3C0E35151411F85EB1148DC544185EB5168D65151415C8FC2354CDC544152B81E05DE5151413D0AD79361DC5441000000E0E0515141B81E858B60DC5441666666D6E25151415C8FC2D55FDC544185EB5128E95151418FC2F5385DDC544148E17A94EA5151413D0AD7E35CDC544152B81EF5ED5151419A9999C95BDC54411F85EBB1F0515141295C8F025ADC5441F6285CEFF2515141333333F357DC5441F6285CBFF9515141295C8FF268DC544148E17A24FB51514114AE471166DC544152B81EC5FC5151419A99995963DC5441AE47E1DAFF515141295C8F625EDC54418FC2F5180152514148E17A345CDC5441E17A144E0252514152B81E3559DC544148E17AE4025251416666660656DC54413D0AD783035251418FC2F5E84FDC544185EB51C803525141E17A141E4DDC54417B14AE87FE515141666666264EDC5441F6285C8FFA515141B81E85CB4EDC544100000060F7515141F6285C1F4FDC5441CDCCCCFCF3515141C3F528FC4EDC5441C3F528ECF351514114AE47B14FDC5441F6285CBFF2515141B81E85FB53DC54411F85EB01F15151416666668656DC5441295C8F12EA515141A4703D5A5CDC5441A4703DAAE6515141B81E85DB58DC5441713D0AE7E3515141713D0A7752DC544114AE47F1E651514114AE474151DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000E0B67AB0EC5151413AB2C5E75CDC544114ACF0CCEC5151416DC214BD5CDC5441336C7CCEEC515141FD636FBB5CDC544146BC3FA2EC51514104F3013D5CDC544185EB5128E95151418FC2F5385DDC5441666666D6E25151415C8FC2D55FDC544156788BE3DD5151410510993561DC54415B9DE04DE8515141941FFA717EDC5441EC51B8DEEC51514185EB51D87CDC5441713D0A17F45151415C8FC2B579DC5441CDCCCC5CF55151415C8FC22579DC54412506CC6AF65151419757E43278DC5441908E4057F65151411BA908FB77DC544156161B40F6515141CB4C5A4F78DC5441D41804D3EC515141A7F0CECE5CDC5441E0B67AB0EC5151413AB2C5E75CDC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510683 - 3567531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002A00000014AE47F1E651514114AE474151DC54417B14AEB7E75151411F85EB0150DC5441F6285C6FEA5151419A9999A94EDC544114AE47C1EC515141D7A370BD4DDC5441CDCCCC9CEF5151413D0AD7934ADC5441C3F5287CF2515141E17A14BE4DDC5441CDCCCC5CF7515141E17A14EE4DDC5441D7A3706DFA515141D7A370CD4DDC544100000020FE5151410AD7A3504DDC5441CDCCCC5CFA515141AE47E12A45DC54410AD7A320F6515141EC51B8FE3BDC5441333333B3EB5151417B14AE7740DC54410AD7A3C0E35151411F85EB1148DC544185EB5168D65151415C8FC2354CDC544152B81E05DE5151413D0AD79361DC5441000000E0E0515141B81E858B60DC5441666666D6E25151415C8FC2D55FDC544185EB5128E95151418FC2F5385DDC544148E17A94EA5151413D0AD7E35CDC544152B81EF5ED5151419A9999C95BDC54411F85EBB1F0515141295C8F025ADC5441F6285CEFF2515141333333F357DC5441F6285CBFF9515141295C8FF268DC544148E17A24FB51514114AE471166DC544152B81EC5FC5151419A99995963DC5441AE47E1DAFF515141295C8F625EDC54418FC2F5180152514148E17A345CDC5441E17A144E0252514152B81E3559DC544148E17AE4025251416666660656DC54413D0AD783035251418FC2F5E84FDC544185EB51C803525141E17A141E4DDC54417B14AE87FE515141666666264EDC5441F6285C8FFA515141B81E85CB4EDC544100000060F7515141F6285C1F4FDC5441CDCCCCFCF3515141C3F528FC4EDC5441C3F528ECF351514114AE47B14FDC5441F6285CBFF2515141B81E85FB53DC54411F85EB01F15151416666668656DC5441295C8F12EA515141A4703D5A5CDC5441A4703DAAE6515141B81E85DB58DC5441713D0AE7E3515141713D0A7752DC544114AE47F1E651514114AE474151DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000E0B67AB0EC5151413AB2C5E75CDC544114ACF0CCEC5151416DC214BD5CDC5441336C7CCEEC515141FD636FBB5CDC544146BC3FA2EC51514104F3013D5CDC544185EB5128E95151418FC2F5385DDC5441666666D6E25151415C8FC2D55FDC544156788BE3DD5151410510993561DC54415B9DE04DE8515141941FFA717EDC5441EC51B8DEEC51514185EB51D87CDC5441713D0A17F45151415C8FC2B579DC5441CDCCCC5CF55151415C8FC22579DC54412506CC6AF65151419757E43278DC5441908E4057F65151411BA908FB77DC544156161B40F6515141CB4C5A4F78DC5441D41804D3EC515141A7F0CECE5CDC5441E0B67AB0EC5151413AB2C5E75CDC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326336 - 107084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000038000000AE47E1CA912251411F85EB013FBB544114AE4741AD225141F6285C4F44BB5441A7FE10D9AE225141515B426D3DBB5441B01773B6B222514113B90A952CBB5441796D7706B42251412FBCA5D727BB5441A60B880EB9225141F811AA2729BB54419A999989C6225141333333732CBB5441713D0AA7CF2251413D0AD7332EBB544149B4F4D4CF225141D5FB4A562DBB54419D816BECCC225141AB23F59F2CBB5441185506ABCA22514188EF02082CBB54412FD92287C622514160BBE44B2BBB544179870FAAC32251413BE3BAB92ABB5441FB1BD931BD225141DCBC791F29BB5441E04BDAB5B52251410C98921727BB54411DCD7F72B2225141CB7ACC5626BB5441666666F6A9225141295C8F9223BB5441295C8F8298225141EC51B82E1EBB5441B81E852B97225141333333A31DBB54410AD7A37094225141A4703DEA1BBB54419A9999199422514148E17A341CBB54415C8FC2A5902251410AD7A3C01ABB544114AE474188225141295C8F5218BB5441C3F528BC8422514185EB514817BB54415C8FC2C57D225141EC51B8DE15BB5441A4703D2A79225141295C8F5215BB54415C8FC2157622514148E17A3415BB5441295C8FA2752251411F85EB0119BB5441A4703D3A74225141295C8FF21BBB5441333333A370225141333333231CBB5441A4703D5A6F22514152B81EE51DBB5441A4703D1A67225141295C8F921DBB5441C3F528AC65225141AE47E1DA22BB54411F85EB41652251418FC2F55825BB54419A999979662251410000002028BB54413D0AD723672251411F85EBA12ABB544114AE4731672251419A9999F92DBB5441D7A3705D672251410AD7A3202FBB5441CDCCCC9C682251415C8FC24535BB544152B81EE5682251419A99999936BB5441E17A14EE69225141AE47E19A3CBB544152B81EA56A225141A4703DDA42BB54411F85EBB16B225141666666F649BB54417B14AEA76C225141666666A650BB54419A99993972225141E17A149E4FBB5441CDCCCC6C75225141000000604FBB54410000003077225141F6285C7F4FBB5441A4703D9A7B22514152B81EA54FBB5441A4703D9A832251419A99997950BB54419A9999F98722514185EB51E850BB5441295C8FE28A22514152B81E2551BB5441F6285C9F91225141A4703D6A51BB5441AE47E15A9222514148E17A8448BB54417B14AE679222514148E17AD445BB544152B81E4592225141B81E85DB43BB5441AE47E1CA912251411F85EB013FBB544106000000713D0AE784225141D7A370ED25BB54419A999959842251410000002027BB5441AE47E10A82225141713D0A6728BB5441EC51B85E7F2251410000004028BB5441CDCCCC3C812251411F85EB4125BB5441713D0AE784225141D7A370ED25BB5441
+</a>
+
+<b>
+0106000000010000000103000000020000002E0000003AA59FB671225141258E9F141CBB5441B983CB217322514176B1200423BB54419943D476652251416EB32F1B24BB54411F85EB41652251418FC2F55825BB54419A999979662251410000002028BB54413D0AD723672251411F85EBA12ABB544114AE4731672251419A9999F92DBB5441CDCCCC9C682251415C8FC24535BB544152B81EE5682251419A99999936BB5441E17A14EE69225141AE47E19A3CBB544152B81EA56A225141A4703DDA42BB54411F85EBB16B225141666666F649BB54417B14AEA76C225141666666A650BB54419A99993972225141E17A149E4FBB5441CDCCCC6C75225141000000604FBB54410000003077225141F6285C7F4FBB5441A4703D9A7B22514152B81EA54FBB5441A4703D9A832251419A99997950BB54419A9999F98722514185EB51E850BB5441295C8FE28A22514152B81E2551BB5441F6285C9F91225141A4703D6A51BB5441AE47E15A9222514148E17A8448BB54417B14AE679222514148E17AD445BB544152B81E4592225141B81E85DB43BB5441AE47E1CA912251411F85EB013FBB544114AE4741AD225141F6285C4F44BB5441AF1773B6B222514117B90A952CBB5441756D7706B422514132BCA5D727BB54415C529CE3AA225141D97FF6B824BB5441ED35167AA92251413476744024BB5441A022FD749F225141B47F541721BB5441C728D1ED9A225141C795C2C41FBB54415D48F042982251413FB5B2EA1EBB544132948D9496225141876C7F551EBB544109E3657394225141BA82ED021DBB544117A7EFE393225141ACAB5FA11CBB54419A9999199422514148E17A341CBB54415C8FC2A5902251410AD7A3C01ABB544114AE474188225141295C8F5218BB5441C3F528BC8422514185EB514817BB54415C8FC2C57D225141EC51B8DE15BB5441A4703D2A79225141295C8F5215BB5441A94B4648792251411771CDBB18BB5441D3E5856C76225141D1FBAF641DBB5441A4703D3A74225141295C8FF21BBB54413AA59FB671225141258E9F141CBB544106000000713D0AE784225141D7A370ED25BB54419A999959842251410000002027BB5441AE47E10A82225141713D0A6728BB5441EC51B85E7F2251410000004028BB5441CDCCCC3C812251411F85EB4125BB5441713D0AE784225141D7A370ED25BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326336 - 385359
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000038000000AE47E1CA912251411F85EB013FBB544114AE4741AD225141F6285C4F44BB5441A7FE10D9AE225141515B426D3DBB5441B01773B6B222514113B90A952CBB5441796D7706B42251412FBCA5D727BB5441A60B880EB9225141F811AA2729BB54419A999989C6225141333333732CBB5441713D0AA7CF2251413D0AD7332EBB544149B4F4D4CF225141D5FB4A562DBB54419D816BECCC225141AB23F59F2CBB5441185506ABCA22514188EF02082CBB54412FD92287C622514160BBE44B2BBB544179870FAAC32251413BE3BAB92ABB5441FB1BD931BD225141DCBC791F29BB5441E04BDAB5B52251410C98921727BB54411DCD7F72B2225141CB7ACC5626BB5441666666F6A9225141295C8F9223BB5441295C8F8298225141EC51B82E1EBB5441B81E852B97225141333333A31DBB54410AD7A37094225141A4703DEA1BBB54419A9999199422514148E17A341CBB54415C8FC2A5902251410AD7A3C01ABB544114AE474188225141295C8F5218BB5441C3F528BC8422514185EB514817BB54415C8FC2C57D225141EC51B8DE15BB5441A4703D2A79225141295C8F5215BB54415C8FC2157622514148E17A3415BB5441295C8FA2752251411F85EB0119BB5441A4703D3A74225141295C8FF21BBB5441333333A370225141333333231CBB5441A4703D5A6F22514152B81EE51DBB5441A4703D1A67225141295C8F921DBB5441C3F528AC65225141AE47E1DA22BB54411F85EB41652251418FC2F55825BB54419A999979662251410000002028BB54413D0AD723672251411F85EBA12ABB544114AE4731672251419A9999F92DBB5441D7A3705D672251410AD7A3202FBB5441CDCCCC9C682251415C8FC24535BB544152B81EE5682251419A99999936BB5441E17A14EE69225141AE47E19A3CBB544152B81EA56A225141A4703DDA42BB54411F85EBB16B225141666666F649BB54417B14AEA76C225141666666A650BB54419A99993972225141E17A149E4FBB5441CDCCCC6C75225141000000604FBB54410000003077225141F6285C7F4FBB5441A4703D9A7B22514152B81EA54FBB5441A4703D9A832251419A99997950BB54419A9999F98722514185EB51E850BB5441295C8FE28A22514152B81E2551BB5441F6285C9F91225141A4703D6A51BB5441AE47E15A9222514148E17A8448BB54417B14AE679222514148E17AD445BB544152B81E4592225141B81E85DB43BB5441AE47E1CA912251411F85EB013FBB544106000000713D0AE784225141D7A370ED25BB54419A999959842251410000002027BB5441AE47E10A82225141713D0A6728BB5441EC51B85E7F2251410000004028BB5441CDCCCC3C812251411F85EB4125BB5441713D0AE784225141D7A370ED25BB5441
+</a>
+
+<b>
+0106000000010000000103000000020000002E0000003AA59FB671225141258E9F141CBB5441B983CB217322514176B1200423BB54419943D476652251416EB32F1B24BB54411F85EB41652251418FC2F55825BB54419A999979662251410000002028BB54413D0AD723672251411F85EBA12ABB544114AE4731672251419A9999F92DBB5441CDCCCC9C682251415C8FC24535BB544152B81EE5682251419A99999936BB5441E17A14EE69225141AE47E19A3CBB544152B81EA56A225141A4703DDA42BB54411F85EBB16B225141666666F649BB54417B14AEA76C225141666666A650BB54419A99993972225141E17A149E4FBB5441CDCCCC6C75225141000000604FBB54410000003077225141F6285C7F4FBB5441A4703D9A7B22514152B81EA54FBB5441A4703D9A832251419A99997950BB54419A9999F98722514185EB51E850BB5441295C8FE28A22514152B81E2551BB5441F6285C9F91225141A4703D6A51BB5441AE47E15A9222514148E17A8448BB54417B14AE679222514148E17AD445BB544152B81E4592225141B81E85DB43BB5441AE47E1CA912251411F85EB013FBB544114AE4741AD225141F6285C4F44BB5441AF1773B6B222514117B90A952CBB5441756D7706B422514132BCA5D727BB54415C529CE3AA225141D97FF6B824BB5441ED35167AA92251413476744024BB5441A022FD749F225141B47F541721BB5441C728D1ED9A225141C795C2C41FBB54415D48F042982251413FB5B2EA1EBB544132948D9496225141876C7F551EBB544109E3657394225141BA82ED021DBB544117A7EFE393225141ACAB5FA11CBB54419A9999199422514148E17A341CBB54415C8FC2A5902251410AD7A3C01ABB544114AE474188225141295C8F5218BB5441C3F528BC8422514185EB514817BB54415C8FC2C57D225141EC51B8DE15BB5441A4703D2A79225141295C8F5215BB5441A94B4648792251411771CDBB18BB5441D3E5856C76225141D1FBAF641DBB5441A4703D3A74225141295C8FF21BBB54413AA59FB671225141258E9F141CBB544106000000713D0AE784225141D7A370ED25BB54419A999959842251410000002027BB5441AE47E10A82225141713D0A6728BB5441EC51B85E7F2251410000004028BB5441CDCCCC3C812251411F85EB4125BB5441713D0AE784225141D7A370ED25BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>753383 - 35258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001500000085EB51F82CB650410AD7A3F02CD654413333336332B65041D7A370FD2AD654410000006040B6504185EB517826D6544185EB519841B65041713D0A7722D6544114AE47E141B6504152B81E251ED6544148E17AE406B65041C3F528BC0DD65441000000F005B6504114AE474137D654415C8FC2E503B65041EC51B88E37D654410AD7A3C004B650413D0AD7230DD65441C3F528DC03B6504148E17AE40CD654413333335301B65041000000300CD65441A4703D5AFBB55041666666160ED6544185EB51A8FAB550411F85EB013ED65441D7A370AD00B650417B14AE073DD65441AE47E12A03B65041F6285C8F3CD65441C3F528BC1CB65041F6285CBF37D65441333333432CB65041666666E633D654419A9999792CB6504114AE47D131D65441713D0AD72AB65041C3F5284C30D65441AE47E16A24B65041EC51B80E30D6544185EB51F82CB650410AD7A3F02CD654410C000000333333731DB650410000006029D65441713D0A671BB65041713D0A972AD6544152B81E9519B6504114AE47D12AD654411F85EB7118B6504148E17AD429D65441AE47E14A18B65041AE47E18A28D654410AD7A32019B650410AD7A34027D65441EC51B8FE1CB650410AD7A33026D65441AE47E10A1FB650417B14AE4725D65441B81E857B20B65041B81E855B25D654411F85EBB121B65041D7A3702D27D65441D7A3703D21B65041B81E85EB28D65441333333731DB650410000006029D65441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000000000F005B6504114AE474137D65441DA4ED6FB06B65041EF69EEC20DD654412795CBBA04B650414B7069220DD65441735C7CA204B65041B7F6D2FB12D6544156108A6C04B650418D282B701DD654415C8FC2E503B65041EC51B88E37D65441A026CDC404B65041A17EA56D37D65441000000F005B6504114AE474137D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>753383 - 73542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001500000085EB51F82CB650410AD7A3F02CD654413333336332B65041D7A370FD2AD654410000006040B6504185EB517826D6544185EB519841B65041713D0A7722D6544114AE47E141B6504152B81E251ED6544148E17AE406B65041C3F528BC0DD65441000000F005B6504114AE474137D654415C8FC2E503B65041EC51B88E37D654410AD7A3C004B650413D0AD7230DD65441C3F528DC03B6504148E17AE40CD654413333335301B65041000000300CD65441A4703D5AFBB55041666666160ED6544185EB51A8FAB550411F85EB013ED65441D7A370AD00B650417B14AE073DD65441AE47E12A03B65041F6285C8F3CD65441C3F528BC1CB65041F6285CBF37D65441333333432CB65041666666E633D654419A9999792CB6504114AE47D131D65441713D0AD72AB65041C3F5284C30D65441AE47E16A24B65041EC51B80E30D6544185EB51F82CB650410AD7A3F02CD654410C000000333333731DB650410000006029D65441713D0A671BB65041713D0A972AD6544152B81E9519B6504114AE47D12AD654411F85EB7118B6504148E17AD429D65441AE47E14A18B65041AE47E18A28D654410AD7A32019B650410AD7A34027D65441EC51B8FE1CB650410AD7A33026D65441AE47E10A1FB650417B14AE4725D65441B81E857B20B65041B81E855B25D654411F85EBB121B65041D7A3702D27D65441D7A3703D21B65041B81E85EB28D65441333333731DB650410000006029D65441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000000000F005B6504114AE474137D65441DA4ED6FB06B65041EF69EEC20DD654412795CBBA04B650414B7069220DD65441735C7CA204B65041B7F6D2FB12D6544156108A6C04B650418D282B701DD654415C8FC2E503B65041EC51B88E37D65441A026CDC404B65041A17EA56D37D65441000000F005B6504114AE474137D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>476297 - 348619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000005C8FC24508FA50411F85EB21B8CC54411F85EB6104FA5041A4703D8ABACC54419A999919FFF950411F85EB61BDCC5441D7A3705DFEF9504148E17AF4BDCC54413D0AD733FBF95041713D0AA7C1CC5441E17A148EF6F950418FC2F558C9CC544133333363F2F950411F85EB11CFCC54413D0AD743F0F95041295C8F52D1CC54410AD7A3F0EDF95041E17A145ED3CC544152B81EB5EBF95041713D0A07D5CC54417B14AE97EBF95041A4703D5AD6CC54419A999979F3F9504148E17AB4DECC54419A999979F9F95041295C8F42E1CC544148E17A84FCF950415C8FC275E1CC54410000003003FA504152B81EA5DECC5441AE47E19A06FA504114AE4781DECC54417B14AE670EFA504133333313DACC54415C8FC29516FA50417B14AE87D9CC5441000000C01DFA50417B14AE27DACC5441F6285CAF22FA5041333333B3CFCC54415C8FC2652EFA50419A9999E9BACC544185EB51A830FA5041666666E6B6CC54413D0AD7D332FA5041CDCCCC4CB0CC544148E17AC433FA5041D7A3706DA8CC5441000000E034FA50411F85EB91A0CC54415C8FC2A52CFA5041CDCCCC7CA5CC5441F6285C4F20FA504185EB5168ACCC5441F6285C7F1CFA5041F6285C8FA7CC5441713D0AF715FA5041E17A144EAACC54419A9999C911FA5041EC51B8DEADCC5441D7A3700D0EFA504114AE47E1B2CC54415C8FC24508FA50411F85EB21B8CC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000D68B1D234FA5041CD81528CA1CC5441CAAF95FB2AFA50418A5F2BA6A7CC544188F7792421FA504149111BC4ACCC5441386CD96920FA504109D5CD2EACCC54414BDBBAA81FFA5041B3FA4E94ABCC54415EEF023D1BFA5041C50AEF0AA8CC54410D68B1EC15FA504169382335AACC54415EAB456F14FA50417046689CABCC5441C8DCABEE11FA5041C01ACEF7ADCC544186D915782EFA504175814390BACC5441EAB70CE330FA5041289F98CDB6CC5441FB0FDFDA32FA50413116FC4EB0CC5441666666A433FA5041C50AEF0AA8CC54410D68B1D234FA5041CD81528CA1CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571749 - 571021
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000300000001030000000100000010000000F6285CEF8C595141A4703D2AE0875441000000008F5951410AD7A340DB875441713D0AA785595141C3F528CCCD87544152B81E158559514114AE4741CB875441295C8F32835951417B14AEB7CB8754410AD7A3207D5951419A999919CC87544152B81E557B5951413D0AD733CD875441B81E85FB775951415C8FC245D487544185EB51F873595141E17A148EE2875441F6285CBF6E5951411F85EB71F1875441A4703DBA6C5951411F85EB61F88754418F843E0D7359514185D06ACAFC875441D7A370BD76595141295C8F52F6875441CDCCCCCC7F595141F6285CDFE38754413D0AD79385595141B81E85ABD8875441F6285CEF8C595141A4703D2AE087544101030000000100000007000000B39CCF0F89595141FB023E41FC875441B81E850B87595141295C8FB2008854413D0AD79382595141C3F5286C0A88544156D3DE617E59514190D18F8C138854416FB096098659514155E8E97B03885441B5BE1F1C89595141FB023E41FC875441B39CCF0F89595141FB023E41FC87544101030000000100000004000000333333A37D595141B81E853BFB8754414E21B8957C5951413930EB14FB875441F606D6637D595141403522CCFB875441333333A37D595141B81E853BFB875441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81E850B87595141295C8FB2008854413D0AD7038A5951417B14AE27FA875441A4703D8A8559514133333343F88754413333336383595141F6285C0FFC875441EC51B80E825951410AD7A360FB875441CDCCCC2C81595141C3F528ECFA875441333333A37D595141B81E853BFB875441CDCCCC1C7A595141713D0A4703885441A4703D2A745951415C8FC2151188544152B81EE570595141B81E856B1A885441713D0A7770595141295C8F521B885441F6285C5F68595141CDCCCC8C178854419A9999B95E595141713D0A471488544148E17A545D595141AE47E1DA14885441C3F528AC5C595141E17A142E16885441F6285CFF56595141295C8FC22288544152B81E0555595141B81E858B268854417B14AEE74F595141CDCCCC1C2F885441A4703D3A3F595141AE47E18A45885441D7A3705D3559514166666616538854416666667632595141D7A3706D56885441E17A14AE485951415C8FC20567885441F6285C3F5D595141713D0AD74C885441B81E85CB64595141AE47E17A41885441CDCCCC5C68595141000000A03C88544148E17A346D59514152B81EF53388544152B81E356F59514152B81E65308854415C8FC2C5785951410AD7A3601F885441AE47E18A7A595141713D0AE71B8854413D0AD79382595141C3F5286C0A885441B81E850B87595141295C8FB200885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571749 - 1274582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000300000001030000000100000010000000F6285CEF8C595141A4703D2AE0875441000000008F5951410AD7A340DB875441713D0AA785595141C3F528CCCD87544152B81E158559514114AE4741CB875441295C8F32835951417B14AEB7CB8754410AD7A3207D5951419A999919CC87544152B81E557B5951413D0AD733CD875441B81E85FB775951415C8FC245D487544185EB51F873595141E17A148EE2875441F6285CBF6E5951411F85EB71F1875441A4703DBA6C5951411F85EB61F88754418F843E0D7359514185D06ACAFC875441D7A370BD76595141295C8F52F6875441CDCCCCCC7F595141F6285CDFE38754413D0AD79385595141B81E85ABD8875441F6285CEF8C595141A4703D2AE087544101030000000100000007000000B39CCF0F89595141FB023E41FC875441B81E850B87595141295C8FB2008854413D0AD79382595141C3F5286C0A88544156D3DE617E59514190D18F8C138854416FB096098659514155E8E97B03885441B5BE1F1C89595141FB023E41FC875441B39CCF0F89595141FB023E41FC87544101030000000100000004000000333333A37D595141B81E853BFB8754414E21B8957C5951413930EB14FB875441F606D6637D595141403522CCFB875441333333A37D595141B81E853BFB875441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81E850B87595141295C8FB2008854413D0AD7038A5951417B14AE27FA875441A4703D8A8559514133333343F88754413333336383595141F6285C0FFC875441EC51B80E825951410AD7A360FB875441CDCCCC2C81595141C3F528ECFA875441333333A37D595141B81E853BFB875441CDCCCC1C7A595141713D0A4703885441A4703D2A745951415C8FC2151188544152B81EE570595141B81E856B1A885441713D0A7770595141295C8F521B885441F6285C5F68595141CDCCCC8C178854419A9999B95E595141713D0A471488544148E17A545D595141AE47E1DA14885441C3F528AC5C595141E17A142E16885441F6285CFF56595141295C8FC22288544152B81E0555595141B81E858B268854417B14AEE74F595141CDCCCC1C2F885441A4703D3A3F595141AE47E18A45885441D7A3705D3559514166666616538854416666667632595141D7A3706D56885441E17A14AE485951415C8FC20567885441F6285C3F5D595141713D0AD74C885441B81E85CB64595141AE47E17A41885441CDCCCC5C68595141000000A03C88544148E17A346D59514152B81EF53388544152B81E356F59514152B81E65308854415C8FC2C5785951410AD7A3601F885441AE47E18A7A595141713D0AE71B8854413D0AD79382595141C3F5286C0A885441B81E850B87595141295C8FB200885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571749 - 4026759
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000300000001030000000100000010000000F6285CEF8C595141A4703D2AE0875441000000008F5951410AD7A340DB875441713D0AA785595141C3F528CCCD87544152B81E158559514114AE4741CB875441295C8F32835951417B14AEB7CB8754410AD7A3207D5951419A999919CC87544152B81E557B5951413D0AD733CD875441B81E85FB775951415C8FC245D487544185EB51F873595141E17A148EE2875441F6285CBF6E5951411F85EB71F1875441A4703DBA6C5951411F85EB61F88754418F843E0D7359514185D06ACAFC875441D7A370BD76595141295C8F52F6875441CDCCCCCC7F595141F6285CDFE38754413D0AD79385595141B81E85ABD8875441F6285CEF8C595141A4703D2AE087544101030000000100000007000000B39CCF0F89595141FB023E41FC875441B81E850B87595141295C8FB2008854413D0AD79382595141C3F5286C0A88544156D3DE617E59514190D18F8C138854416FB096098659514155E8E97B03885441B5BE1F1C89595141FB023E41FC875441B39CCF0F89595141FB023E41FC87544101030000000100000004000000333333A37D595141B81E853BFB8754414E21B8957C5951413930EB14FB875441F606D6637D595141403522CCFB875441333333A37D595141B81E853BFB875441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81E850B87595141295C8FB2008854413D0AD7038A5951417B14AE27FA875441A4703D8A8559514133333343F88754413333336383595141F6285C0FFC875441EC51B80E825951410AD7A360FB875441CDCCCC2C81595141C3F528ECFA875441333333A37D595141B81E853BFB875441CDCCCC1C7A595141713D0A4703885441A4703D2A745951415C8FC2151188544152B81EE570595141B81E856B1A885441713D0A7770595141295C8F521B885441F6285C5F68595141CDCCCC8C178854419A9999B95E595141713D0A471488544148E17A545D595141AE47E1DA14885441C3F528AC5C595141E17A142E16885441F6285CFF56595141295C8FC22288544152B81E0555595141B81E858B268854417B14AEE74F595141CDCCCC1C2F885441A4703D3A3F595141AE47E18A45885441D7A3705D3559514166666616538854416666667632595141D7A3706D56885441E17A14AE485951415C8FC20567885441F6285C3F5D595141713D0AD74C885441B81E85CB64595141AE47E17A41885441CDCCCC5C68595141000000A03C88544148E17A346D59514152B81EF53388544152B81E356F59514152B81E65308854415C8FC2C5785951410AD7A3601F885441AE47E18A7A595141713D0AE71B8854413D0AD79382595141C3F5286C0A885441B81E850B87595141295C8FB200885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910243 - 1877594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000E17A145EF696504152B81E854A1A5441713D0A17FF96504114AE4701531A5441F6285C4F07975041D7A370FD5A1A5441AE47E17A0F975041E17A14EE621A54410AD7A37018975041295C8FA26B1A5441713D0A2723975041C3F5280C761A5441F6285C3F2E975041AE47E12A7F1A5441295C8F9234975041EC51B85E841A54417B14AE673C975041CDCCCC9C791A544185EB5198439750410AD7A3B0701A54418FC2F528479750418FC2F5586C1A544114AE47513397504185EB5108631A54411F85EB5128975041E17A149E5C1A5441CDCCCC4C2297504133333383571A5441B81E853B1B9750415C8FC295531A5441C3F528FC12975041E17A14BE4E1A54419A9999F90F975041C3F5286C4A1A5441713D0A370A975041666666F6421A544114AE47C102975041AE47E13A381A54417B14AE87009750419A999999321A5441F6285C7FFE9650419A999909281A544166666636FD965041295C8FE2271A54419A999909FB96504148E17A54271A5441EC51B8DEF8965041713D0A77261A544185EB5178F796504152B81EB5251A5441E17A142EF6965041295C8FC2241A544133333313F5965041333333E3241A54410AD7A3F0F3965041666666A6251A544152B81E25F396504114AE47E1261A5441A4703D8AF29650411F85EBB1281A5441E17A141EF19650411F85EB412F1A54417B14AE87EF9650417B14AEF7301A5441666666D6EA9650411F85EB91331A544148E17AE4EE96504148E17AA43B1A5441295C8FB2F29650417B14AE37431A5441E17A145EF696504152B81E854A1A5441
+</a>
+
+<b>
+0106000000010000000103000000020000003C010000BDE6EBAFF196504183D2FE78201A544148E17A44F1965041E17A14FE1F1A5441CDCCCC1CEE965041333333431D1A544133333313EB965041AE47E1DA1A1A5441713D0AA7E29650415C8FC245201A5441A4703DBADA96504100000080161A544114AE47C1D596504100000000041A544100000040D696504148E17A94091A54411F85EBC1D5965041CDCCCC6C151A5441B81E85CBD496504185EB5188201A5441AE47E1DAD5965041C3F5287C211A5441295C8FE2D696504166666606241A54418FC2F5D8D79650419A999999261A5441333333A3D8965041E17A14EE291A5441B81E855BD9965041CDCCCCFC2C1A544133333363DA965041713D0A872F1A5441295C8FB2DA965041F6285C9F311A5441F6285C3FDB9650415C8FC255341A5441000000F0DA965041000000D0351A544152B81EC5D996504148E17AD4361A5441EC51B84ED99650417B14AEB7391A5441666666D6D89650417B14AEA73B1A544133333363D8965041CDCCCCAC3C1A54415C8FC255D89650418FC2F5283D1A544185EB51B8D8965041AE47E1BA3F1A544152B81E25D9965041CDCCCC8C401A54417B14AE97DF965041C3F5286C3F1A544152B81E65E09650417B14AE173F1A5441EC51B83EE1965041A4703D9A3E1A5441A4703DCAE1965041AE47E1FA3D1A5441B81E856BE3965041000000503B1A5441666666E6E3965041713D0AE7381A5441A4703D1AE5965041CDCCCCBC361A5441E17A14AEE6965041AE47E1EA341A544166666666E896504100000010341A5441F6285CBFEA9650417B14AEF7311A544185EB51A8EB9650415C8FC265311A544152B81EE5EE965041CDCCCCEC2F1A5441EC51B80EF0965041000000602E1A5441B81E85BBF096504185EB51A82C1A5441A4703DBAF196504133333343281A5441295C8F52F29650415C8FC285261A5441C3F5283CF39650417B14AE17251A5441B81E859BF49650411F85EB01241A54410AD7A300F59650413D0AD783231A5441E054DA4CF3965041A2417605221A544148E17A84F4965041AE47E1BA211A544133333313F696504100000070231A54418FC2F5D8F7965041D7A370BD241A544114AE4731F99650410AD7A380251A544171BB831BF9965041833E4D8F261A5441EC51B8DEF8965041713D0A77261A544185EB5178F796504152B81EB5251A5441E17A142EF6965041295C8FC2241A544133333313F5965041333333E3241A54410AD7A3F0F3965041666666A6251A544152B81E25F396504114AE47E1261A5441A4703D8AF29650411F85EBB1281A5441E17A141EF19650411F85EB412F1A54417B14AE87EF9650417B14AEF7301A5441666666D6EA9650411F85EB91331A544148E17AE4EE96504148E17AA43B1A5441295C8FB2F29650417B14AE37431A5441E17A145EF696504152B81E854A1A5441713D0A17FF96504114AE4701531A5441F6285C4F07975041D7A370FD5A1A5441AE47E17A0F975041E17A14EE621A54410AD7A37018975041295C8FA26B1A5441713D0A2723975041C3F5280C761A5441F6285C3F2E975041AE47E12A7F1A5441295C8F9234975041EC51B85E841A54417B14AE673C975041CDCCCC9C791A544185EB5198439750410AD7A3B0701A54418FC2F528479750418FC2F5586C1A544114AE47513397504185EB5108631A54411F85EB5128975041E17A149E5C1A5441CDCCCC4C2297504133333383571A5441B81E853B1B9750415C8FC295531A5441C3F528FC12975041E17A14BE4E1A54419A9999F90F975041C3F5286C4A1A5441713D0A370A975041666666F6421A544114AE47C102975041AE47E13A381A54417B14AE87009750419A999999321A5441F6285C7FFE9650419A999909281A544166666636FD965041295C8FE2271A54419A999909FB96504148E17A54271A544150AE1681FA965041D15B001E271A5441A4703D5AFB9650410AD7A360261A5441A4703D3AFD965041C3F528DC261A5441EC51B89EFF965041AE47E10A271A544148E17A44009750419A999989261A54417B14AE77FE965041295C8F02211A5441B81E854BFD965041000000D01D1A54410AD7A300FC965041A4703D8A1A1A544133333373F9965041713D0A97141A544148E17A44F7965041F6285C9F0F1A5441EC51B89EF5965041A4703D1A0C1A544184BCCE47F096504104488B31011A5441E515C16FF19650411962359B001A5441AE47E1CAF6965041C3F5288C0B1A544114AE4771F8965041A4703D1A0F1A5441295C8FA2FA965041CDCCCC0C141A54411F85EB31FD965041666666061A1A544100000090FD9650410AD7A3F01A1A5441A4703D8AFD96504100000020191A5441C3F5283CFD96504185EB51A8161A54418FC2F5A8FC965041AE47E1EA141A54418FC2F558FD965041B81E85AB141A5441295C8FA2FD9650418FC2F578151A544133333313FE965041EC51B89E161A5441CDCCCC5CFE9650410AD7A350191A5441A4703D9AFE9650413D0AD7831D1A544185EB51B8FF96504152B81EA5201A5441713D0A4702975041A4703D3A281A5441A4703D2A039750415C8FC2152A1A54419A999929049750413D0AD7A32B1A5441F6285C2F05975041713D0AC72C1A54413D0AD773069750413D0AD7C32D1A544185EB517807975041713D0A672E1A5441A4703D7A089750417B14AEC72E1A5441F6285C8F09975041C3F5280C2F1A5441666666960A9750413D0AD7132F1A5441E17A14BE0B9750415C8FC2052F1A5441000000400D975041AE47E18A2E1A5441A4703D1A0F97504185EB51A82D1A54415C8FC295109750419A9999D92C1A54411F85EB4115975041B81E85AB291A544148E17A9417975041D7A370AD271A544185EB51D8199750417B14AE87251A5441D7A370DD1B975041333333F3231A5441B81E85AB1D975041C3F528BC221A5441AE47E14A1E975041713D0A27221A5441AE47E14A1E97504185EB5128211A54415C8FC2651D9750410AD7A3D01F1A5441B81E859B1B975041A4703DBA1D1A544114AE47111A975041A4703DCA1B1A5441A4703D3A18975041295C8F321A1A54415C8FC2D51697504114AE4701191A5441F6285CBF1497504100000090171A54411F85EB4113975041CDCCCCAC151A5441AE47E16A11975041295C8FA2131A54413D0AD7930F975041A4703D0A131A54419A9999C90D97504166666646121A5441666666E60B9750410AD7A3C0101A5441CDCCCC9C0997504114AE4741101A5441E17A146E06975041295C8F820F1A544114AE477104975041E17A141E0E1A5441295C8FB203975041CDCCCC1C0F1A5441E17A141E039750410AD7A390101A54415C8FC23501975041295C8F72111A54418FC2F538FF965041713D0AA7101A5441F6285CEFFD96504148E17A840E1A5441A4703D7AFE965041D7A3706D0C1A5441C3F5282CFF9650418FC2F5080B1A5441000000E0FE965041D7A3703D0A1A5441E17A14EEFD9650415C8FC2E5081A54411F85EB31FB96504100000050061A54419A999969F8965041D7A370AD031A5441E17A142EF5965041295C8F72001A544100D46424F496504160345C3BFF195441B81E85FBF4965041E17A14CEFE1954410AD7A310F9965041AE47E1FA021A5441A4703D0AFC965041E17A149E051A544148E17A14FE96504185EB5168071A5441C3F5282CFF965041E17A148E071A5441D7A3708D029750415C8FC2C5041A5441CDCCCC7C05975041F6285C6F021A5441333333930797504185EB5198001A54416666667609975041F6285C3F001A5441B81E859B0A975041C3F5284C001A5441295C8F320C975041E17A140EFF195441CDCCCCFC0D9750418FC2F558001A5441333333F310975041333333F3011A5441B81E851B13975041A4703DBA031A544114AE47E11797504148E17AE4091A54413D0AD7231697504152B81E950B1A5441295C8FE216975041E17A141E0E1A54418FC2F508179750417B14AE27101A5441333333D318975041AE47E14A121A5441B81E85AB1997504185EB5148141A5441F6285C5F199750415C8FC2F5171A5441295C8F1219975041E17A14CE181A54413333339318975041D7A3704D191A54418FC2F5681B975041CDCCCC3C1C1A5441A4703DDA1C975041D7A370ED1D1A54410AD7A3F01E9750413D0AD7C31F1A5441EC51B80E209750418FC2F508211A5441295C8FC221975041B81E851B211A544148E17AA4279750413D0AD773201A5441AE47E17A27975041D7A3703D1E1A5441EC51B82E2597504133333353191A54413D0AD7631F975041AE47E1EA0F1A54419A999909189750419A9999F9031A544166666626139750415C8FC215FC19544148E17A6412975041F6285C9FFA1954410AD7A30010975041713D0AC7F61954418FC2F5780F975041C3F5289CF4195441C3F5284C0F975041D7A370ADF1195441E17A145E0F9750410AD7A3A0ED195441713D0A770F9750417B14AE57EB195441D7A370DD0F975041666666D6E7195441EC51B84E10975041AE47E1DAE4195441A4703DEA0B9750417B14AE17E2195441713D0AE708975041EC51B81EE019544185EB51280697504114AE4751DE195441AE47E10A0397504148E17A24DC19544133333343FF9650415C8FC245D9195441D7A370EDFB9650413D0AD793D61954410AD7A3E0F896504114AE4701D4195441B81E854BF59650419A999909D11954418FC2F5B8F296504114AE47E1CE1954417B14AE17F1965041D7A370CDCD195441295C8FE2F0965041A4703DAACD195441AE47E1EAED965041C3F5288CCB195441F6285C8FEA9650418FC2F5D8C819544152B81EB5DA96504152B81EF5BC195441A4703D9ADC965041EC51B85EB919544152B81EB5DD96504114AE4711B6195441713D0AD7DA96504152B81EA5B5195441E17A144ED996504185EB5178B71954418FC2F508D896504166666626B9195441A4703DAAD79650418FC2F508BB195441C3F5282CD8965041666666A6BC195441000000C0D8965041CDCCCCBCBD195441E17A14DED996504133333383BF1954417B14AEF7DD96504152B81E45C519544114AE47E1DE965041D7A370CDC6195441F6285CDFDF965041C3F528CCC81954413D0AD7F3E1965041C3F5287CCD1954417B14AE77E49650411F85EB81D31954415C8FC2E5E596504152B81E65D719544133333373E6965041E17A147ED9195441295C8FB2E696504100000070DB195441AE47E1BAE696504152B81EE5E2195441B81E85DBE69650411F85EB01E5195441CDCCCC2CE7965041333333C3E6195441AE47E10AE89650413D0AD713EA195441E17A143EEA9650410AD7A340EE1954411F85EB21EC96504114AE4721F21954415C8FC2C5ED965041666666F6F419544100000090EF9650411F85EBF1F71954411F85EB71F29650419A9999B9FB195441CD63ECEDF196504169D1AC96FC195441295C8F02F0965041B81E853BFA19544114AE4751ED96504133333323F81954417B14AEF7EE96504100000090FB195441D514EF93F0965041433328DAFE1954413AAFE2C8EF965041F9C93B2E001A54410AD7A330EE965041C3F528ECFC195441EC51B88EED96504133333323FD19544133333313ED965041295C8F22FC195441D7A3706DED9650418FC2F558FB19544166666626EC96504185EB51B8F8195441713D0A87EA9650419A999929F519544100000070E9965041EC51B86EF219544100000040E8965041CDCCCC3CEF19544185EB5128E796504148E17AD4EB195441F6285CDFE5965041D7A3700DE71954410AD7A390E5965041EC51B81EE5195441C3F5286CE5965041E17A14DEE2195441A4703D6AE59650418FC2F598DB195441C3F5282CE596504185EB51A8D919544148E17AA4E4965041C3F528BCD7195441D7A3704DE396504133333313D4195441D7A370BDE0965041E17A14FECD1954410AD7A3B0DE965041713D0A57C91954419A999929DE96504148E17A54C8195441A4703DBADD965041E17A147EC7195441295C8FD2DC9650419A9999F9C5195441F6285CBFD89650419A999939C0195441EC51B88ED7965041C3F5284CBE195441F6285CAFD696504185EB5178BC195441D7A3703DD6965041333333E3BA195441F6285CCFD6965041D7A3709DB819544185EB51C8D7965041E17A14FEB6195441C3F5287CD6965041AE47E1DAB5195441B81E85DBD19650415C8FC2F5B1195441E17A145ECE9650413D0AD7C3AC195441A4703D0ACB96504185EB5138A819544148E17AF4C7965041666666D6A31954410AD7A370C59650415C8FC2D5A01954417B14AE07C2965041B81E85AB9D195441C3F5281CBF965041713D0AF79B195441C3F5289CBD965041CDCCCC0C9E1954410AD7A360BD9650419A9999A99F19544148E17A64BD965041B81E857BA119544185EB51B8BD965041EC51B81EA3195441E17A141EBE9650410AD7A380A4195441A4703DBABE965041D7A370EDA519544152B81E55C0965041B81E85EBA819544133333313C1965041B81E851BAA195441333333F3C1965041295C8F72AB195441D7A370BDC49650419A9999B9AF195441EC51B8AEC59650419A999909B11954418FC2F5A8C69650410AD7A370B2195441333333B3C99650418FC2F5E8B519544148E17A64CC965041295C8FE2B919544148E17A44CE9650413D0AD7C3BE19544166666606D0965041CDCCCCCCCA19544152B81E95D1965041B81E85DBD9195441C3F528FCD29650419A999999E51954418FC2F5D8D39650411F85EBD1EC19544152B81E45D5965041B81E854BFE195441C3F5283CDA9650413D0AD7E3061A54417B14AE27E2965041713D0A77101A5441000000F0E3965041CDCCCCEC101A5441E17A143EE696504114AE4781101A54410AD7A300E7965041D7A3705D101A5441C3F5288CE99650415C8FC2E50F1A54410AD7A330EB965041AE47E19A0F1A54418FC2F598F0965041B81E854B171A544148E17A44EE965041CDCCCCCC181A5441AE47E12AEC965041713D0A271A1A54410AD7A3E0EE965041A4703D8A1C1A5441C3F528ECF19650413D0AD7631F1A5441BDE6EBAFF196504183D2FE78201A54410900000066666646079750415C8FC2851E1A5441000000D009975041EC51B8DE1E1A54419A9999D90B975041666666061E1A54413D0AD7630D97504114AE4781211A5441AE47E1DA0A975041295C8FF2221A54418FC2F5F80797504152B81E35211A5441AE47E14A0497504114AE47911F1A544152B81E2504975041333333131E1A544166666646079750415C8FC2851E1A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910243 - 3776167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000E17A145EF696504152B81E854A1A5441713D0A17FF96504114AE4701531A5441F6285C4F07975041D7A370FD5A1A5441AE47E17A0F975041E17A14EE621A54410AD7A37018975041295C8FA26B1A5441713D0A2723975041C3F5280C761A5441F6285C3F2E975041AE47E12A7F1A5441295C8F9234975041EC51B85E841A54417B14AE673C975041CDCCCC9C791A544185EB5198439750410AD7A3B0701A54418FC2F528479750418FC2F5586C1A544114AE47513397504185EB5108631A54411F85EB5128975041E17A149E5C1A5441CDCCCC4C2297504133333383571A5441B81E853B1B9750415C8FC295531A5441C3F528FC12975041E17A14BE4E1A54419A9999F90F975041C3F5286C4A1A5441713D0A370A975041666666F6421A544114AE47C102975041AE47E13A381A54417B14AE87009750419A999999321A5441F6285C7FFE9650419A999909281A544166666636FD965041295C8FE2271A54419A999909FB96504148E17A54271A5441EC51B8DEF8965041713D0A77261A544185EB5178F796504152B81EB5251A5441E17A142EF6965041295C8FC2241A544133333313F5965041333333E3241A54410AD7A3F0F3965041666666A6251A544152B81E25F396504114AE47E1261A5441A4703D8AF29650411F85EBB1281A5441E17A141EF19650411F85EB412F1A54417B14AE87EF9650417B14AEF7301A5441666666D6EA9650411F85EB91331A544148E17AE4EE96504148E17AA43B1A5441295C8FB2F29650417B14AE37431A5441E17A145EF696504152B81E854A1A5441
+</a>
+
+<b>
+0106000000010000000103000000020000003C010000BDE6EBAFF196504183D2FE78201A544148E17A44F1965041E17A14FE1F1A5441CDCCCC1CEE965041333333431D1A544133333313EB965041AE47E1DA1A1A5441713D0AA7E29650415C8FC245201A5441A4703DBADA96504100000080161A544114AE47C1D596504100000000041A544100000040D696504148E17A94091A54411F85EBC1D5965041CDCCCC6C151A5441B81E85CBD496504185EB5188201A5441AE47E1DAD5965041C3F5287C211A5441295C8FE2D696504166666606241A54418FC2F5D8D79650419A999999261A5441333333A3D8965041E17A14EE291A5441B81E855BD9965041CDCCCCFC2C1A544133333363DA965041713D0A872F1A5441295C8FB2DA965041F6285C9F311A5441F6285C3FDB9650415C8FC255341A5441000000F0DA965041000000D0351A544152B81EC5D996504148E17AD4361A5441EC51B84ED99650417B14AEB7391A5441666666D6D89650417B14AEA73B1A544133333363D8965041CDCCCCAC3C1A54415C8FC255D89650418FC2F5283D1A544185EB51B8D8965041AE47E1BA3F1A544152B81E25D9965041CDCCCC8C401A54417B14AE97DF965041C3F5286C3F1A544152B81E65E09650417B14AE173F1A5441EC51B83EE1965041A4703D9A3E1A5441A4703DCAE1965041AE47E1FA3D1A5441B81E856BE3965041000000503B1A5441666666E6E3965041713D0AE7381A5441A4703D1AE5965041CDCCCCBC361A5441E17A14AEE6965041AE47E1EA341A544166666666E896504100000010341A5441F6285CBFEA9650417B14AEF7311A544185EB51A8EB9650415C8FC265311A544152B81EE5EE965041CDCCCCEC2F1A5441EC51B80EF0965041000000602E1A5441B81E85BBF096504185EB51A82C1A5441A4703DBAF196504133333343281A5441295C8F52F29650415C8FC285261A5441C3F5283CF39650417B14AE17251A5441B81E859BF49650411F85EB01241A54410AD7A300F59650413D0AD783231A5441E054DA4CF3965041A2417605221A544148E17A84F4965041AE47E1BA211A544133333313F696504100000070231A54418FC2F5D8F7965041D7A370BD241A544114AE4731F99650410AD7A380251A544171BB831BF9965041833E4D8F261A5441EC51B8DEF8965041713D0A77261A544185EB5178F796504152B81EB5251A5441E17A142EF6965041295C8FC2241A544133333313F5965041333333E3241A54410AD7A3F0F3965041666666A6251A544152B81E25F396504114AE47E1261A5441A4703D8AF29650411F85EBB1281A5441E17A141EF19650411F85EB412F1A54417B14AE87EF9650417B14AEF7301A5441666666D6EA9650411F85EB91331A544148E17AE4EE96504148E17AA43B1A5441295C8FB2F29650417B14AE37431A5441E17A145EF696504152B81E854A1A5441713D0A17FF96504114AE4701531A5441F6285C4F07975041D7A370FD5A1A5441AE47E17A0F975041E17A14EE621A54410AD7A37018975041295C8FA26B1A5441713D0A2723975041C3F5280C761A5441F6285C3F2E975041AE47E12A7F1A5441295C8F9234975041EC51B85E841A54417B14AE673C975041CDCCCC9C791A544185EB5198439750410AD7A3B0701A54418FC2F528479750418FC2F5586C1A544114AE47513397504185EB5108631A54411F85EB5128975041E17A149E5C1A5441CDCCCC4C2297504133333383571A5441B81E853B1B9750415C8FC295531A5441C3F528FC12975041E17A14BE4E1A54419A9999F90F975041C3F5286C4A1A5441713D0A370A975041666666F6421A544114AE47C102975041AE47E13A381A54417B14AE87009750419A999999321A5441F6285C7FFE9650419A999909281A544166666636FD965041295C8FE2271A54419A999909FB96504148E17A54271A544150AE1681FA965041D15B001E271A5441A4703D5AFB9650410AD7A360261A5441A4703D3AFD965041C3F528DC261A5441EC51B89EFF965041AE47E10A271A544148E17A44009750419A999989261A54417B14AE77FE965041295C8F02211A5441B81E854BFD965041000000D01D1A54410AD7A300FC965041A4703D8A1A1A544133333373F9965041713D0A97141A544148E17A44F7965041F6285C9F0F1A5441EC51B89EF5965041A4703D1A0C1A544184BCCE47F096504104488B31011A5441E515C16FF19650411962359B001A5441AE47E1CAF6965041C3F5288C0B1A544114AE4771F8965041A4703D1A0F1A5441295C8FA2FA965041CDCCCC0C141A54411F85EB31FD965041666666061A1A544100000090FD9650410AD7A3F01A1A5441A4703D8AFD96504100000020191A5441C3F5283CFD96504185EB51A8161A54418FC2F5A8FC965041AE47E1EA141A54418FC2F558FD965041B81E85AB141A5441295C8FA2FD9650418FC2F578151A544133333313FE965041EC51B89E161A5441CDCCCC5CFE9650410AD7A350191A5441A4703D9AFE9650413D0AD7831D1A544185EB51B8FF96504152B81EA5201A5441713D0A4702975041A4703D3A281A5441A4703D2A039750415C8FC2152A1A54419A999929049750413D0AD7A32B1A5441F6285C2F05975041713D0AC72C1A54413D0AD773069750413D0AD7C32D1A544185EB517807975041713D0A672E1A5441A4703D7A089750417B14AEC72E1A5441F6285C8F09975041C3F5280C2F1A5441666666960A9750413D0AD7132F1A5441E17A14BE0B9750415C8FC2052F1A5441000000400D975041AE47E18A2E1A5441A4703D1A0F97504185EB51A82D1A54415C8FC295109750419A9999D92C1A54411F85EB4115975041B81E85AB291A544148E17A9417975041D7A370AD271A544185EB51D8199750417B14AE87251A5441D7A370DD1B975041333333F3231A5441B81E85AB1D975041C3F528BC221A5441AE47E14A1E975041713D0A27221A5441AE47E14A1E97504185EB5128211A54415C8FC2651D9750410AD7A3D01F1A5441B81E859B1B975041A4703DBA1D1A544114AE47111A975041A4703DCA1B1A5441A4703D3A18975041295C8F321A1A54415C8FC2D51697504114AE4701191A5441F6285CBF1497504100000090171A54411F85EB4113975041CDCCCCAC151A5441AE47E16A11975041295C8FA2131A54413D0AD7930F975041A4703D0A131A54419A9999C90D97504166666646121A5441666666E60B9750410AD7A3C0101A5441CDCCCC9C0997504114AE4741101A5441E17A146E06975041295C8F820F1A544114AE477104975041E17A141E0E1A5441295C8FB203975041CDCCCC1C0F1A5441E17A141E039750410AD7A390101A54415C8FC23501975041295C8F72111A54418FC2F538FF965041713D0AA7101A5441F6285CEFFD96504148E17A840E1A5441A4703D7AFE965041D7A3706D0C1A5441C3F5282CFF9650418FC2F5080B1A5441000000E0FE965041D7A3703D0A1A5441E17A14EEFD9650415C8FC2E5081A54411F85EB31FB96504100000050061A54419A999969F8965041D7A370AD031A5441E17A142EF5965041295C8F72001A544100D46424F496504160345C3BFF195441B81E85FBF4965041E17A14CEFE1954410AD7A310F9965041AE47E1FA021A5441A4703D0AFC965041E17A149E051A544148E17A14FE96504185EB5168071A5441C3F5282CFF965041E17A148E071A5441D7A3708D029750415C8FC2C5041A5441CDCCCC7C05975041F6285C6F021A5441333333930797504185EB5198001A54416666667609975041F6285C3F001A5441B81E859B0A975041C3F5284C001A5441295C8F320C975041E17A140EFF195441CDCCCCFC0D9750418FC2F558001A5441333333F310975041333333F3011A5441B81E851B13975041A4703DBA031A544114AE47E11797504148E17AE4091A54413D0AD7231697504152B81E950B1A5441295C8FE216975041E17A141E0E1A54418FC2F508179750417B14AE27101A5441333333D318975041AE47E14A121A5441B81E85AB1997504185EB5148141A5441F6285C5F199750415C8FC2F5171A5441295C8F1219975041E17A14CE181A54413333339318975041D7A3704D191A54418FC2F5681B975041CDCCCC3C1C1A5441A4703DDA1C975041D7A370ED1D1A54410AD7A3F01E9750413D0AD7C31F1A5441EC51B80E209750418FC2F508211A5441295C8FC221975041B81E851B211A544148E17AA4279750413D0AD773201A5441AE47E17A27975041D7A3703D1E1A5441EC51B82E2597504133333353191A54413D0AD7631F975041AE47E1EA0F1A54419A999909189750419A9999F9031A544166666626139750415C8FC215FC19544148E17A6412975041F6285C9FFA1954410AD7A30010975041713D0AC7F61954418FC2F5780F975041C3F5289CF4195441C3F5284C0F975041D7A370ADF1195441E17A145E0F9750410AD7A3A0ED195441713D0A770F9750417B14AE57EB195441D7A370DD0F975041666666D6E7195441EC51B84E10975041AE47E1DAE4195441A4703DEA0B9750417B14AE17E2195441713D0AE708975041EC51B81EE019544185EB51280697504114AE4751DE195441AE47E10A0397504148E17A24DC19544133333343FF9650415C8FC245D9195441D7A370EDFB9650413D0AD793D61954410AD7A3E0F896504114AE4701D4195441B81E854BF59650419A999909D11954418FC2F5B8F296504114AE47E1CE1954417B14AE17F1965041D7A370CDCD195441295C8FE2F0965041A4703DAACD195441AE47E1EAED965041C3F5288CCB195441F6285C8FEA9650418FC2F5D8C819544152B81EB5DA96504152B81EF5BC195441A4703D9ADC965041EC51B85EB919544152B81EB5DD96504114AE4711B6195441713D0AD7DA96504152B81EA5B5195441E17A144ED996504185EB5178B71954418FC2F508D896504166666626B9195441A4703DAAD79650418FC2F508BB195441C3F5282CD8965041666666A6BC195441000000C0D8965041CDCCCCBCBD195441E17A14DED996504133333383BF1954417B14AEF7DD96504152B81E45C519544114AE47E1DE965041D7A370CDC6195441F6285CDFDF965041C3F528CCC81954413D0AD7F3E1965041C3F5287CCD1954417B14AE77E49650411F85EB81D31954415C8FC2E5E596504152B81E65D719544133333373E6965041E17A147ED9195441295C8FB2E696504100000070DB195441AE47E1BAE696504152B81EE5E2195441B81E85DBE69650411F85EB01E5195441CDCCCC2CE7965041333333C3E6195441AE47E10AE89650413D0AD713EA195441E17A143EEA9650410AD7A340EE1954411F85EB21EC96504114AE4721F21954415C8FC2C5ED965041666666F6F419544100000090EF9650411F85EBF1F71954411F85EB71F29650419A9999B9FB195441CD63ECEDF196504169D1AC96FC195441295C8F02F0965041B81E853BFA19544114AE4751ED96504133333323F81954417B14AEF7EE96504100000090FB195441D514EF93F0965041433328DAFE1954413AAFE2C8EF965041F9C93B2E001A54410AD7A330EE965041C3F528ECFC195441EC51B88EED96504133333323FD19544133333313ED965041295C8F22FC195441D7A3706DED9650418FC2F558FB19544166666626EC96504185EB51B8F8195441713D0A87EA9650419A999929F519544100000070E9965041EC51B86EF219544100000040E8965041CDCCCC3CEF19544185EB5128E796504148E17AD4EB195441F6285CDFE5965041D7A3700DE71954410AD7A390E5965041EC51B81EE5195441C3F5286CE5965041E17A14DEE2195441A4703D6AE59650418FC2F598DB195441C3F5282CE596504185EB51A8D919544148E17AA4E4965041C3F528BCD7195441D7A3704DE396504133333313D4195441D7A370BDE0965041E17A14FECD1954410AD7A3B0DE965041713D0A57C91954419A999929DE96504148E17A54C8195441A4703DBADD965041E17A147EC7195441295C8FD2DC9650419A9999F9C5195441F6285CBFD89650419A999939C0195441EC51B88ED7965041C3F5284CBE195441F6285CAFD696504185EB5178BC195441D7A3703DD6965041333333E3BA195441F6285CCFD6965041D7A3709DB819544185EB51C8D7965041E17A14FEB6195441C3F5287CD6965041AE47E1DAB5195441B81E85DBD19650415C8FC2F5B1195441E17A145ECE9650413D0AD7C3AC195441A4703D0ACB96504185EB5138A819544148E17AF4C7965041666666D6A31954410AD7A370C59650415C8FC2D5A01954417B14AE07C2965041B81E85AB9D195441C3F5281CBF965041713D0AF79B195441C3F5289CBD965041CDCCCC0C9E1954410AD7A360BD9650419A9999A99F19544148E17A64BD965041B81E857BA119544185EB51B8BD965041EC51B81EA3195441E17A141EBE9650410AD7A380A4195441A4703DBABE965041D7A370EDA519544152B81E55C0965041B81E85EBA819544133333313C1965041B81E851BAA195441333333F3C1965041295C8F72AB195441D7A370BDC49650419A9999B9AF195441EC51B8AEC59650419A999909B11954418FC2F5A8C69650410AD7A370B2195441333333B3C99650418FC2F5E8B519544148E17A64CC965041295C8FE2B919544148E17A44CE9650413D0AD7C3BE19544166666606D0965041CDCCCCCCCA19544152B81E95D1965041B81E85DBD9195441C3F528FCD29650419A999999E51954418FC2F5D8D39650411F85EBD1EC19544152B81E45D5965041B81E854BFE195441C3F5283CDA9650413D0AD7E3061A54417B14AE27E2965041713D0A77101A5441000000F0E3965041CDCCCCEC101A5441E17A143EE696504114AE4781101A54410AD7A300E7965041D7A3705D101A5441C3F5288CE99650415C8FC2E50F1A54410AD7A330EB965041AE47E19A0F1A54418FC2F598F0965041B81E854B171A544148E17A44EE965041CDCCCCCC181A5441AE47E12AEC965041713D0A271A1A54410AD7A3E0EE965041A4703D8A1C1A5441C3F528ECF19650413D0AD7631F1A5441BDE6EBAFF196504183D2FE78201A54410900000066666646079750415C8FC2851E1A5441000000D009975041EC51B8DE1E1A54419A9999D90B975041666666061E1A54413D0AD7630D97504114AE4781211A5441AE47E1DA0A975041295C8FF2221A54418FC2F5F80797504152B81E35211A5441AE47E14A0497504114AE47911F1A544152B81E2504975041333333131E1A544166666646079750415C8FC2851E1A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910256 - 1877611
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002100000000000020799A50410AD7A3308C1A5441B81E85FB7B9A5041AE47E1BA891A544152B81EC57C9A5041EC51B88E861A544152B81E357E9A5041CDCCCC5C821A5441000000407F9A5041000000007C1A5441B81E854B819A50410AD7A360761A544133333333839A5041713D0AC7711A544148E17AB4849A5041AE47E17A6A1A544114AE4751879A5041713D0A97651A54419A999929829A5041CDCCCCAC601A5441A4703DBA7D9A50411F85EBC15E1A544100000060779A50417B14AED7591A5441B81E85DB749A5041E17A14CE541A54415C8FC275729A50419A9999D9501A54417B14AE076F9A504100000050501A544114AE47E16B9A5041E17A141E4F1A5441D7A370ED6A9A5041713D0A97541A544185EB5178689A5041D7A3706D591A5441B81E852B669A5041295C8FF25D1A54415C8FC2B5639A5041B81E854B641A54419A999999629A5041AE47E16A681A544114AE4771639A5041A4703D9A6A1A5441CDCCCC1C629A5041E17A14BE6D1A54419A999959669A50411F85EBD16E1A5441B81E85AB679A5041C3F5284C721A5441CDCCCCFC689A5041A4703D6A751A5441C3F5287C6C9A504185EB5128771A5441713D0AB76C9A504114AE47517B1A5441EC51B83E6D9A5041666666F6811A5441EC51B84E6D9A50419A999969891A5441EC51B89E719A5041666666468A1A5441A4703DFA749A5041E17A14FE8A1A544100000020799A50410AD7A3308C1A544105000000E17A144E729A5041F6285CBF701A544114AE4761719A5041EC51B82E6C1A544133333393759A5041E17A14BE6D1A544114AE4731769A50417B14AEE7701A5441E17A144E729A5041F6285CBF701A5441
+</a>
+
+<b>
+0106000000050000000103000000010000005F00000063B75782579A504153B8B144531A5441C3F528DC559A50418FC2F5F84F1A5441F6285CBF549A5041C3F528BC4E1A544152B81E75519A5041D7A370BD4D1A544114AE47E14D9A50419A999989491A5441666666D6489A5041E17A141E491A544166666626469A5041EC51B8FE411A54417B14AE97449A5041F6285C0F3E1A544152B81E05419A50411F85EBD13F1A5441B81E856B3D9A5041F6285C3F411A54410AD7A3903B9A5041CDCCCC1C421A544166666636399A5041D7A370ED411A5441D7A3707D369A5041EC51B85E411A544148E17AB4339A50410AD7A3C0401A5441EC51B85E2E9A5041CDCCCC6C401A544185EB51C82A9A504114AE47613F1A5441F6285CFF2A9A5041C3F528EC3D1A5441AE47E1CA279A5041F6285C8F3D1A5441A4703D9A219A5041F6285CEF3C1A5441AE47E1EA1D9A5041F6285CAF3C1A5441AE47E1DA199A5041F6285C7F3B1A5441B81E85BB169A5041F6285C0F3B1A5441B81E854B159A5041F6285CAF3B1A5441B81E85AB149A5041F6285CCF3C1A5441B81E85AB149A5041EC51B87E401A5441B81E85FB149A5041EC51B88E431A5441B81E85BB149A5041E17A149E451A5441B81E85FB129A5041E17A143E471A5441C3F528EC109A5041E17A140E491A54418E3A17E80F9A50419A9215CA491A5441C3F5288C0E9A5041D7A370CD4A1A5441C3F5286C0C9A5041D7A3704D4C1A5441CDCCCCBC0B9A5041D7A3708D4D1A5441CDCCCCEC0B9A5041D7A370DD4F1A5441C3F5283C0C9A5041CDCCCCFC511A5441C3F5288C109A5041CDCCCC9C521A5441B81E851B129A504148E17AE4511A544133333373159A50413D0AD713521A544114AE4721169A5041295C8FA2521A54411F85EBC1159A50419A9999F9551A54418FC2F568139A504148E17A44561A5441000000E0119A5041EC51B8EE561A544148E17AE4109A5041EC51B80E591A5441000000700F9A50413D0AD7535A1A54410AD7A340139A5041D7A3700D5F1A5441333333E3169A5041EC51B8DE601A544185EB51281A9A50413D0AD723631A5441666666561E9A50417B14AE97661A5441713D0A27229A5041C3F5280C681A5441E17A143E269A5041EC51B8AE671A5441C3F5286C279A50418FC2F568691A5441A4703D9A299A50418FC2F5686A1A5441CDCCCC3C2D9A5041713D0A976C1A5441AE47E1CA309A5041EC51B86E6F1A5441000000B0349A504185EB51686E1A5441D7A370FD399A5041C3F5286C711A5441000000003C9A50413D0AD7A3721A5441B81E850B3D9A50413D0AD743711A54411F85EB413E9A5041A4703DCA6E1A5441E17A148E3E9A5041F6285C9F6B1A5441CDCCCC5C3E9A5041666666D6691A5441000000403D9A5041A4703D6A681A5441666666C63A9A5041EC51B8AE681A544100000060359A50410AD7A3E0661A54417B14AE272E9A504152B81E65651A54411F85EB112A9A5041295C8F52641A54410AD7A3F0279A504114AE47A1631A544100000020239A504152B81EC5611A54419A999959239A5041713D0AF7601A54415C8FC2C5229A504166666676591A54418FC2F518229A5041713D0AF7501A54413D0AD7E3219A5041E17A141E4E1A5441C3F5285C299A5041E17A141E4C1A5441666666962E9A504114AE47014B1A5441CDCCCC3C329A50419A9999794A1A5441A4703D9A339A5041000000804A1A544114AE47B1349A5041000000B04A1A54417B14AE17399A5041D7A370BD4B1A5441713D0A273B9A5041CDCCCCDC4C1A54417B14AEE73C9A5041D7A370DD4E1A54417B14AE473D9A5041CDCCCC4C511A54417B14AE473D9A5041CDCCCC1C541A5441713D0AD73E9A5041CDCCCC5C551A5441713D0AB7409A5041CDCCCC4C561A5441713D0A67439A5041C3F5281C571A544166666616479A5041C3F5288C571A54415C8FC2854B9A5041C3F5289C581A544152B81E95529A5041EC51B81E5A1A5441C3F528FC559A5041CDCCCCDC5A1A54415C8FC285589A5041C3F5281C5B1A5441295C8F92599A5041F6285CEF591A544133333363599A50417B14AED7561A54419214EA52589A50413C9FE5D1541A5441B6268982579A5041AE32F548531A544163B75782579A504153B8B144531A5441010300000001000000220000003E7FD3B50F9A5041AC6129FC481A544178A29E43109A504101BA539B481A5441C3F528CC109A5041E17A143E481A54419A999969129A504148E17AD4461A54413D0AD753139A5041C3F5287C451A54411F85EB31149A5041A4703DCA431A5441B81E852B149A5041B81E855B421A5441CDCCCC0C149A5041EC51B8AE3F1A5441B81E852B149A5041A4703D4A3C1A54410AD7A320159A50415C8FC2C53A1A5441295C8FC2169A50418FC2F5683A1A5441AE47E1AA189A50413D0AD7B33A1A54411F85EB211A9A50419A9999C93A1A544114AE47911B9A5041E17A149E3A1A5441295C8F821B9A50410AD7A3B0391A5441333333D3179A5041F6285CDF381A5441B81E854B139A504185EB5148381A5441295C8FD20E9A504152B81ED5371A54419A9999090A9A504166666686371A54418FC2F5B8049A5041295C8F32381A5441AE47E10A059A504152B81E95391A5441D7A3703D059A5041AE47E1BA3B1A54417B14AED7029A50415C8FC2A53D1A5441D7A370ED009A5041C3F5287C3E1A5441A4703D2AFF995041000000F0421A54410AD7A320FF99504100000000461A5441E17A148E029A5041EC51B81E4A1A544185EB5198059A5041713D0A374D1A5441295C8F72099A5041EC51B82E4F1A5441000000400B9A50413D0AD7934F1A5441D7A3700D0B9A5041295C8FA24D1A5441CDCCCC7C0B9A5041D7A370CD4B1A5441C3F5283C0E9A5041E17A14FE491A54413E7FD3B50F9A5041AC6129FC481A5441010300000002000000110000008FBF5618689A504189227C5A561A5441E17A14DE689A5041AE47E1BA541A544185EB51386B9A50415C8FC2454D1A5441713D0A37689A5041B81E854B4A1A5441CDCCCC3C629A50415C8FC275451A54411F85EB415C9A5041CDCCCC6C441A5441AE47E18A559A50418FC2F548421A5441B81E85DB569A5041295C8F02451A54417B14AE97589A504152B81ED54A1A54417B14AEA75A9A5041C3F5283C511A5441000000D05B9A504185EB5108551A54415C8FC2E55C9A50419A999949581A5441000000905E9A5041666666165C1A54418FC2F558619A5041CDCCCC6C5D1A5441EC51B8DE619A5041B81E857B5B1A54418FC2F568659A50419A9999695C1A54418FBF5618689A504189227C5A561A544105000000295C8FF25D9A504148E17A044E1A544152B81E055E9A504152B81ED54A1A5441AE47E11A629A5041CDCCCC0C4B1A54413D0AD7E3619A5041D7A3700D4E1A5441295C8FF25D9A504148E17A044E1A544101030000000200000023000000B7B44FFD699A50419F7DB96F561A544185EB5178689A5041D7A3706D591A5441B81E852B669A5041295C8FF25D1A54415C8FC2B5639A5041B81E854B641A54419A999999629A5041AE47E16A681A544114AE4771639A5041A4703D9A6A1A5441CDCCCC1C629A5041E17A14BE6D1A54419A999959669A50411F85EBD16E1A5441B81E85AB679A5041C3F5284C721A5441CDCCCCFC689A5041A4703D6A751A5441C3F5287C6C9A504185EB5128771A5441713D0AB76C9A504114AE47517B1A5441EC51B83E6D9A5041666666F6811A5441EC51B84E6D9A50419A999969891A5441EC51B89E719A5041666666468A1A5441A4703DFA749A5041E17A14FE8A1A544100000020799A50410AD7A3308C1A5441B81E85FB7B9A5041AE47E1BA891A544152B81EC57C9A5041EC51B88E861A544152B81E357E9A5041CDCCCC5C821A5441000000407F9A5041000000007C1A5441B81E854B819A50410AD7A360761A544133333333839A5041713D0AC7711A544148E17AB4849A5041AE47E17A6A1A544114AE4751879A5041713D0A97651A54419A999929829A5041CDCCCCAC601A5441A4703DBA7D9A50411F85EBC15E1A544100000060779A50417B14AED7591A5441B81E85DB749A5041E17A14CE541A54415C8FC275729A50419A9999D9501A54417B14AE076F9A504100000050501A544114AE47E16B9A5041E17A141E4F1A5441D7A370ED6A9A5041713D0A97541A54412690954A6A9A50418A9E9DD7551A5441B7B44FFD699A50419F7DB96F561A544105000000E17A144E729A5041F6285CBF701A544114AE4761719A5041EC51B82E6C1A544133333393759A5041E17A14BE6D1A544114AE4731769A50417B14AEE7701A5441E17A144E729A5041F6285CBF701A544101030000000100000005000000945E641D689A504133CAB45A561A5441130BD61D689A50414F2DE859561A5441F1D80A1C689A50413A48D359561A54418FBF5618689A504189227C5A561A5441945E641D689A504133CAB45A561A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435144 - 390546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000048E17AF4AAAF5041B81E85CB81E254419A9999F9AAAF5041A4703DCA75E254418FC2F5F8A9AF5041295C8FC274E254413333339394AF5041EC51B82E74E2544185EB51789CAF504114AE4731B1E25441D7A3707D9DAF50413D0AD713B9E25441713D0A679EAF504133333303B9E254418FC2F5989FAF50413D0AD773BEE254418FC2F558A1AF50415C8FC2F5BDE2544100000090A1AF504133333383BEE25441D7A3703DA3AF50417B14AEF7BDE2544152B81E05A4AF50419A999939BDE2544185EB5158A5AF50411F85EB11BDE2544185EB5148A6AF5041D7A3709DBDE2544100000010A7AF504152B81E05BFE2544114AE47E1A7AF50417B14AE97C1E254419A999949ACAF504166666676C0E25441666666A6AAAF504148E17A74BAE25441E17A149EABAF50415C8FC285B9E25441295C8FC2A8AF504114AE4781AFE25441C3F5287CA8AF5041B81E858BAEE254413D0AD7E3A1AF5041295C8FF2AFE25441A4703D3AA1AF504148E17AA4ACE254418FC2F538A0AF50411F85EBB1A6E25441E17A14EE9EAF5041C3F5286C9AE254415C8FC2C59CAF50411F85EBF18CE2544114AE47319BAF5041AE47E11A81E254415C8FC2B5A0AF504152B81EA580E25441AE47E16AA4AF5041295C8FC280E254419A999969A8AF50410AD7A33081E2544148E17AF4AAAF5041B81E85CB81E25441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000BA65850BA0AF50410B537802A5E2544135E4BE209FAF50412E263D4D9CE25441CF15D5AC9EAF504106F891D498E25441F13D5C799EAF5041F9AF089397E2544171E7061A9EAF5041D7F0D9AB97E25441F82F3D5D9DAF5041C799CFCF97E25441FD4DC2F7A0AF50418E17A78BB0E25441A0C499F8A0AF5041206E8A90B0E25441EAF306FAA0AF50419CA0A896B0E25441ABCAD9FBA0AF50415896AB9CB0E254419A4810FEA0AF50411DB88CA2B0E254416CDE22FEA0AF504102BDB5A2B0E2544156ED8CB6A1AF5041028B8877B0E25441704BEFB5A1AF504169144871B0E25441AF55A102A2AF5041C6BC727BB0E25441499DF1E4A1AF5041754453F2AFE254413D0AD7E3A1AF5041295C8FF2AFE25441E75069D5A1AF50414D8E94AAAFE25441A99C5248A1AF5041B88AE21EADE25441295F65B7A0AF5041C925289EA9E254418FC2F538A0AF50411F85EBB1A6E25441BA65850BA0AF50410B537802A5E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 2907374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441A4703DEAE0B45041666666F68BE454415C8FC2F5E3B4504114AE476186E454415C8FC2C5EFB450416666666674E454419A9999C9EEB45041A4703DAA73E454411F85EB01F3B45041C3F5288C6BE454415C8FC295EDB45041EC51B87E68E4544114AE4791EAB45041E17A142E60E454415C8FC285E1B450416666662664E45441C3F528DCDCB45041CDCCCC5C5CE45441C3F528ECD5B45041F6285CCF5CE454411F85EBB1D3B45041713D0A0757E45441F6285C9FD1B4504185EB519851E45441EC51B8BEBBB450410AD7A3E056E454415C8FC2D5A8B450411F85EB715BE454410AD7A360A7B45041CDCCCCCC5BE45441B81E85DBA7B450415C8FC2155FE45441B81E85DBA9B45041A4703DBA66E454417B14AE27ACB45041F6285C3F6BE45441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000AF97BEADB6B45041E51C7D676AE454412EF895E4B8B45041933EFEA76BE45441665C53E3B8B45041412238A96BE4544152B81EE5B8B45041A4703DAA6BE4544166666646C4B450419A99994972E4544103451613C6B450417D953ABC7BE454411D967621C6B450414BA31DF57BE45441833720A3C6B4504142C68C927CE4544197758422C7B45041B72688A37DE454413468F68DC8B45041BDBC195A80E454412A582888CAB45041B86A38EE82E4544168C6A417CEB45041EB807EB986E454413DEA1331D0B45041F6BBEF6388E45441553433FAD2B45041CC8FC8998AE45441D2D62C30D4B450411FF2BD8F8BE45441C0DDC226DBB450417F6C2F1691E45441055A1BA4DEB45041C8B186A592E454415F9B7228DFB4504125C8852091E45441D44D3425E0B45041C76A91398EE454414DBB3CA0E0B45041AC9AECCF8CE454419A4AFCEAE0B45041798108F58BE454411029B252E1B45041F5BEE5368BE45441F366605BE2B450417F4DA65189E454415C8FC2F5E3B4504114AE476186E45441086A6C41E7B45041E23E205D81E4544121715FBDE8B45041E281CC1A7FE4544105BD53D1EFB45041E6FAC85474E45441046F90E7EEB450413F862C9E73E45441218E160FF3B450416593179B6BE454417D2C14A9EDB45041CDC4DBAC68E45441788E15D5EAB4504110F0F90F60E454415C8FC285E1B450416666662664E4544136351428DDB45041D64E777D5CE4544149F7489AD7B45041987290955CE45441C09B8E9BD7B45041C012B99E5CE45441703C63C1B8B4504194F3681B5DE45441AF97BEADB6B45041E51C7D676AE45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 2948513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441A4703DEAE0B45041666666F68BE454415C8FC2F5E3B4504114AE476186E454415C8FC2C5EFB450416666666674E454419A9999C9EEB45041A4703DAA73E454411F85EB01F3B45041C3F5288C6BE454415C8FC295EDB45041EC51B87E68E4544114AE4791EAB45041E17A142E60E454415C8FC285E1B450416666662664E45441C3F528DCDCB45041CDCCCC5C5CE45441C3F528ECD5B45041F6285CCF5CE454411F85EBB1D3B45041713D0A0757E45441F6285C9FD1B4504185EB519851E45441EC51B8BEBBB450410AD7A3E056E454415C8FC2D5A8B450411F85EB715BE454410AD7A360A7B45041CDCCCCCC5BE45441B81E85DBA7B450415C8FC2155FE45441B81E85DBA9B45041A4703DBA66E454417B14AE27ACB45041F6285C3F6BE45441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441055A1BA4DEB45041C8B186A592E45441C0DDC226DBB450417F6C2F1691E45441D2D62C30D4B450411FF2BD8F8BE45441553433FAD2B45041CC8FC8998AE4544169C6A417CEB45041EC807EB986E454412F582888CAB45041BE6A38EE82E454413568F68DC8B45041BFBC195A80E4544199758422C7B45041BA2688A37DE45441F719731AC6B45041F6B621FD7BE45441325406BCC4B45041FF8D83547DE4544107BAE163C2B45041646D98A07FE4544145E07921C0B45041F76260D781E45441A952081BBEB45041848D66D383E454417B403169BDB45041BAE8A6B784E4544177EBD341BDB45041EACFC2CA8CE45441AC426F7DBDB450410F65025E96E45441567F93C7BDB450414ED8D0509DE45441529437D4BDB45041CF0619809EE45441658C841EBEB45041B02CBE9B9FE45441EC51B85EBEB45041EC51B87EA0E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 3811664
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441A4703DEAE0B45041666666F68BE454415C8FC2F5E3B4504114AE476186E454415C8FC2C5EFB450416666666674E454419A9999C9EEB45041A4703DAA73E454411F85EB01F3B45041C3F5288C6BE454415C8FC295EDB45041EC51B87E68E4544114AE4791EAB45041E17A142E60E454415C8FC285E1B450416666662664E45441C3F528DCDCB45041CDCCCC5C5CE45441C3F528ECD5B45041F6285CCF5CE454411F85EBB1D3B45041713D0A0757E45441F6285C9FD1B4504185EB519851E45441EC51B8BEBBB450410AD7A3E056E454415C8FC2D5A8B450411F85EB715BE454410AD7A360A7B45041CDCCCCCC5BE45441B81E85DBA7B450415C8FC2155FE45441B81E85DBA9B45041A4703DBA66E454417B14AE27ACB45041F6285C3F6BE45441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441055A1BA4DEB45041C8B186A592E45441C0DDC226DBB450417F6C2F1691E45441D2D62C30D4B450411FF2BD8F8BE45441553433FAD2B45041CC8FC8998AE4544169C6A417CEB45041EC807EB986E454412F582888CAB45041BE6A38EE82E454413568F68DC8B45041BFBC195A80E4544199758422C7B45041BA2688A37DE45441F719731AC6B45041F6B621FD7BE45441325406BCC4B45041FF8D83547DE4544107BAE163C2B45041646D98A07FE4544145E07921C0B45041F76260D781E45441A952081BBEB45041848D66D383E454417B403169BDB45041BAE8A6B784E4544177EBD341BDB45041EACFC2CA8CE45441AC426F7DBDB450410F65025E96E45441567F93C7BDB450414ED8D0509DE45441529437D4BDB45041CF0619809EE45441658C841EBEB45041B02CBE9B9FE45441EC51B85EBEB45041EC51B87EA0E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 3811700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441A4703DEAE0B45041666666F68BE454415C8FC2F5E3B4504114AE476186E454415C8FC2C5EFB450416666666674E454419A9999C9EEB45041A4703DAA73E454411F85EB01F3B45041C3F5288C6BE454415C8FC295EDB45041EC51B87E68E4544114AE4791EAB45041E17A142E60E454415C8FC285E1B450416666662664E45441C3F528DCDCB45041CDCCCC5C5CE45441C3F528ECD5B45041F6285CCF5CE454411F85EBB1D3B45041713D0A0757E45441F6285C9FD1B4504185EB519851E45441EC51B8BEBBB450410AD7A3E056E454415C8FC2D5A8B450411F85EB715BE454410AD7A360A7B45041CDCCCCCC5BE45441B81E85DBA7B450415C8FC2155FE45441B81E85DBA9B45041A4703DBA66E454417B14AE27ACB45041F6285C3F6BE45441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000AF97BEADB6B45041E51C7D676AE454412EF895E4B8B45041933EFEA76BE45441665C53E3B8B45041412238A96BE4544152B81EE5B8B45041A4703DAA6BE4544166666646C4B450419A99994972E4544103451613C6B450417D953ABC7BE454411D967621C6B450414BA31DF57BE45441833720A3C6B4504142C68C927CE4544197758422C7B45041B72688A37DE454413468F68DC8B45041BDBC195A80E454412A582888CAB45041B86A38EE82E4544168C6A417CEB45041EB807EB986E454413DEA1331D0B45041F6BBEF6388E45441553433FAD2B45041CC8FC8998AE45441D2D62C30D4B450411FF2BD8F8BE45441C0DDC226DBB450417F6C2F1691E45441055A1BA4DEB45041C8B186A592E454415F9B7228DFB4504125C8852091E45441D44D3425E0B45041C76A91398EE454414DBB3CA0E0B45041AC9AECCF8CE454419A4AFCEAE0B45041798108F58BE454411029B252E1B45041F5BEE5368BE45441F366605BE2B450417F4DA65189E454415C8FC2F5E3B4504114AE476186E45441086A6C41E7B45041E23E205D81E4544121715FBDE8B45041E281CC1A7FE4544105BD53D1EFB45041E6FAC85474E45441046F90E7EEB450413F862C9E73E45441218E160FF3B450416593179B6BE454417D2C14A9EDB45041CDC4DBAC68E45441788E15D5EAB4504110F0F90F60E454415C8FC285E1B450416666662664E4544136351428DDB45041D64E777D5CE4544149F7489AD7B45041987290955CE45441C09B8E9BD7B45041C012B99E5CE45441703C63C1B8B4504194F3681B5DE45441AF97BEADB6B45041E51C7D676AE45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435191 - 205097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000060000005C8FC265D8AF50417B14AEF73FE35441295C8F22D8AF50417B14AE7733E35441713D0A67C0AF50418FC2F5E835E3544114AE47B1C0AF50410AD7A36042E354415C8FC295D6AF504114AE478140E354415C8FC265D8AF50417B14AEF73FE354410103000000010000000C000000AE47E1EACEAF5041713D0A77F0E2544148E17AB4CEAF504152B81E75E7E25441713D0A67D6AF504133333323E5E254413D0AD763D6AF50410AD7A3A0E4E254417B14AE87BEAF50415C8FC2A5E5E254413D0AD7E3BEAF50411F85EB21F5E25441A4703DAAC0AF504185EB51F8F4E254413D0AD7D3C4AF504185EB5188F4E254410AD7A390C7AF50418FC2F5D8F3E25441C3F5288CCAAF50419A9999B9F2E2544166666696CDAF5041A4703D2AF1E25441AE47E1EACEAF5041713D0A77F0E25441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000580DD388BEAF5041246EFCD6E5E25441801636E3BEAF50410658E006F5E254411DA545D6C2AF50413FD1E0BDF4E25441D8C6DB01C7AF5041FC1EB0FCF3E2544120D929BFC9AF5041D8BFC006F3E25441F97F48D4CBAF5041AD923811F2E25441877A6796CDAF50414FDF3C2AF1E25441C9DDB1D4CEAF5041B367B782F0E25441152115EACEAF504127A63C55F0E2544148E17AB4CEAF504152B81E75E7E2544187020267D6AF504137AE3523E5E25441B3F94865D6AF50413B3499DBE4E25441580DD388BEAF5041246EFCD6E5E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435245 - 2988182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000150000005C8FC29508B450415C8FC215F5E354419A99997902B45041AE47E12AF3E35441D7A370BDF9B35041666666B6F6E354418FC2F538E9B3504133333343F7E35441A4703D1AE2B35041C3F5281CF8E3544114AE4741E1B35041E17A14FEF8E354410AD7A3C0E0B3504152B81ED5FCE354411F85EBC1E0B35041AE47E1DA05E454415C8FC265E1B35041E17A143E08E45441AE47E14AEBB35041E17A144E09E4544152B81E45F4B3504185EB51080CE45441666666E6FAB35041A4703D6A07E45441EC51B86EFEB350410AD7A3900AE454415C8FC27503B45041AE47E15A08E45441EC51B81E0CB45041333333C305E45441EC51B8CE13B4504114AE47B101E45441EC51B8CE18B45041D7A3705DFEE35441C3F5289C1AB450410AD7A370FCE35441B81E856B15B45041713D0A47F9E35441C3F5280C0FB45041666666A6F6E354415C8FC29508B450415C8FC215F5E354411000000014AE4741F2B350418FC2F5F809E45441F6285C6FEEB35041AE47E13A09E45441E17A145EEDB3504185EB518808E45441A4703DFAECB35041AE47E14A07E454413D0AD793EDB35041295C8F4205E45441E17A14CEEFB350413D0AD74303E454419A999929F3B350419A99991902E45441C3F5280CF6B350413333330302E45441C3F528ACF7B350410AD7A3F002E454411F85EBF1F9B350410000009005E45441D7A3702DFAB35041F6285C8F06E45441B81E85ABF8B35041713D0A4708E45441E17A14BEF6B350410000007009E454418FC2F5F8F4B350413D0AD7630AE454411F85EB81F3B3504114AE47310AE4544114AE4741F2B350418FC2F5F809E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000072FEE4E0F9B350415DD5E1D3FFE35441F0643F08F9B35041316A8A87F7E354416E95D6F3F8B35041986216BEF6E35441B0675664EDB35041CF985622F7E354418CB4DE17EBB3504141FBC932F7E35441681E208BE9B350412DCC7640F7E354418FC2F538E9B3504133333343F7E35441EE8FBFD3E6B350415C18F18BF7E3544117EDA2A8E3B350414F0FBDECF7E35441A4703D1AE2B35041C3F5281CF8E35441CB6975CCE1B35041F54F276DF8E354413BCCDC3FE1B35041CF8CE908F9E35441CA382F3DE1B350410594601DF9E35441531D9232E1B35041F0247C6EF9E3544109A126E8E0B3504167AE7CA3FBE3544185B5DDC2E0B3504151E61BC4FCE354413800E6C0E0B3504190FB79A7FEE354416FE049C1E0B350416CEE7B6701E45441FF79B5C5E0B35041EC01A64002E45441536870FEE0B350418BD7634102E45441F16908C7E1B35041E3E3D12D02E454416943B610E2B3504139C16D2802E45441008F89DBE5B35041AA3013D001E4544160308786E7B350416266429E01E45441ED295A4EEBB35041FF66D63F01E45441FBAA81D5EFB350419717A4E700E454417EE2C2E4F9B350418E66FCFCFFE35441B0D728E0F9B350419430F4D3FFE3544172FEE4E0F9B350415DD5E1D3FFE35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435245 - 3426131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000150000005C8FC29508B450415C8FC215F5E354419A99997902B45041AE47E12AF3E35441D7A370BDF9B35041666666B6F6E354418FC2F538E9B3504133333343F7E35441A4703D1AE2B35041C3F5281CF8E3544114AE4741E1B35041E17A14FEF8E354410AD7A3C0E0B3504152B81ED5FCE354411F85EBC1E0B35041AE47E1DA05E454415C8FC265E1B35041E17A143E08E45441AE47E14AEBB35041E17A144E09E4544152B81E45F4B3504185EB51080CE45441666666E6FAB35041A4703D6A07E45441EC51B86EFEB350410AD7A3900AE454415C8FC27503B45041AE47E15A08E45441EC51B81E0CB45041333333C305E45441EC51B8CE13B4504114AE47B101E45441EC51B8CE18B45041D7A3705DFEE35441C3F5289C1AB450410AD7A370FCE35441B81E856B15B45041713D0A47F9E35441C3F5280C0FB45041666666A6F6E354415C8FC29508B450415C8FC215F5E354411000000014AE4741F2B350418FC2F5F809E45441F6285C6FEEB35041AE47E13A09E45441E17A145EEDB3504185EB518808E45441A4703DFAECB35041AE47E14A07E454413D0AD793EDB35041295C8F4205E45441E17A14CEEFB350413D0AD74303E454419A999929F3B350419A99991902E45441C3F5280CF6B350413333330302E45441C3F528ACF7B350410AD7A3F002E454411F85EBF1F9B350410000009005E45441D7A3702DFAB35041F6285C8F06E45441B81E85ABF8B35041713D0A4708E45441E17A14BEF6B350410000007009E454418FC2F5F8F4B350413D0AD7630AE454411F85EB81F3B3504114AE47310AE4544114AE4741F2B350418FC2F5F809E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000072FEE4E0F9B350415DD5E1D3FFE35441F0643F08F9B35041316A8A87F7E354416E95D6F3F8B35041986216BEF6E35441B0675664EDB35041CF985622F7E354418CB4DE17EBB3504141FBC932F7E35441681E208BE9B350412DCC7640F7E354418FC2F538E9B3504133333343F7E35441EE8FBFD3E6B350415C18F18BF7E3544117EDA2A8E3B350414F0FBDECF7E35441A4703D1AE2B35041C3F5281CF8E35441CB6975CCE1B35041F54F276DF8E354413BCCDC3FE1B35041CF8CE908F9E35441CA382F3DE1B350410594601DF9E35441531D9232E1B35041F0247C6EF9E3544109A126E8E0B3504167AE7CA3FBE3544185B5DDC2E0B3504151E61BC4FCE354413800E6C0E0B3504190FB79A7FEE354416FE049C1E0B350416CEE7B6701E45441FF79B5C5E0B35041EC01A64002E45441536870FEE0B350418BD7634102E45441F16908C7E1B35041E3E3D12D02E454416943B610E2B3504139C16D2802E45441008F89DBE5B35041AA3013D001E4544160308786E7B350416266429E01E45441ED295A4EEBB35041FF66D63F01E45441FBAA81D5EFB350419717A4E700E454417EE2C2E4F9B350418E66FCFCFFE35441B0D728E0F9B350419430F4D3FFE3544172FEE4E0F9B350415DD5E1D3FFE35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435253 - 246839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000006000000295C8FD25DAF50416666661666E25441AE47E14A59AF50411F85EBC164E254418FC2F5B859AF5041EC51B89E6FE2544152B81E355AAF5041E17A14BE7AE254419A9999F95EAF5041C3F528FC77E25441295C8FD25DAF50416666661666E25441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000295C8FD25DAF50416666661666E25441E6C5FA625CAF504144A27AAA65E25441AF47E14A59AF50413F85EBC164E2544180DCF24A59AF504128A7A7C364E25441AA81034B59AF5041D7214CC564E25441C63818A659AF5041655226C26DE2544134159C3C5AAF5041777CBFB97AE254412C3424665AAF50419FEAB9A17AE2544139D238265BAF504194B3A0327AE254418E0943455BAF504191A5AC207AE254419A9999F95EAF5041C3F528FC77E25441EFEF22DA5EAF504178D08D1376E25441295C8FD25DAF50416666661666E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435253 - 366894
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000006000000295C8FD25DAF50416666661666E25441AE47E14A59AF50411F85EBC164E254418FC2F5B859AF5041EC51B89E6FE2544152B81E355AAF5041E17A14BE7AE254419A9999F95EAF5041C3F528FC77E25441295C8FD25DAF50416666661666E25441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000295C8FD25DAF50416666661666E25441E6C5FA625CAF504144A27AAA65E25441AF47E14A59AF50413F85EBC164E2544180DCF24A59AF504128A7A7C364E25441AA81034B59AF5041D7214CC564E25441C63818A659AF5041655226C26DE2544134159C3C5AAF5041777CBFB97AE254412C3424665AAF50419FEAB9A17AE2544139D238265BAF504194B3A0327AE254418E0943455BAF504191A5AC207AE254419A9999F95EAF5041C3F528FC77E25441EFEF22DA5EAF504178D08D1376E25441295C8FD25DAF50416666661666E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435297 - 2949163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000002000000010300000001000000130000009A9999B919B25041666666562FE25441C3F5289C1DB250410AD7A3103CE25441713D0A771FB2504152B81EB542E254410AD7A3C021B250411F85EB714DE254413D0AD7E321B25041D7A3701D4FE254411F85EB5122B25041CDCCCC5C54E2544148E17A3421B25041B81E856B60E254411F85EBC122B25041C3F528DC60E254415C8FC25523B2504152B81EF55BE25441C3F528AC23B250419A9999B956E25441F6285CBF23B25041AE47E1FA51E254415C8FC25523B250413D0AD7234EE25441E17A146E22B2504185EB511849E25441CDCCCCBC20B250417B14AE4742E254413D0AD7231EB25041B81E852B39E254417B14AED71BB25041D7A370AD31E25441EC51B8BE18B25041C3F528DC27E254410AD7A38017B25041D7A3700D28E254419A9999B919B25041666666562FE254410103000000010000000E0000007B14AE976EB25041AE47E17A4EE25441000000A069B25041B81E853B5FE254417B14AEC767B2504152B81E8565E2544152B81EB565B25041F6285CBF6CE2544114AE47B164B25041C3F5286C6FE25441A4703DFA63B25041D7A370ED70E2544185EB51F862B250417B14AEF771E25441EC51B89E66B2504148E17A6471E25441D7A3700D6EB2504152B81E355FE254417B14AE9780B25041000000B033E2544185EB512878B25041F6285C0F30E2544185EB519875B25041713D0AC737E254417B14AEB771B250419A99992944E254417B14AE976EB25041AE47E17A4EE25441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000008BE9C8701DB25041E1F397E336E254414B6645601BB250416B77F93230E2544180C205F21AB2504116E18AD52EE254413144D20B1AB2504126B38B962BE25441F46CAA0019B2504144DF25D227E2544168AF688317B250416049A20F28E254419A9999B919B25041666666562FE2544116270AD81AB25041BC44CB0033E254417061AA0C1CB25041A21ADFF336E25441C3F5289C1DB250410AD7A3103CE254415EFCEDE81DB25041B19F8A233DE25441713D0A771FB2504152B81EB542E25441531E0C9A1FB25041F3AD715943E254414BDB7B1F20B25041FB1DCBCB45E254410AD7A3C021B250411F85EB714DE25441C1838D2522B2504192835D3F52E254411F85EB5122B25041CDCCCC5C54E25441782F492722B250416056D72956E254417350B5CF21B25041C69CE5DC59E25441A442F68D21B250411CF8DEA35CE2544148E17A3421B25041B81E856B60E25441846C02C622B2504140A759DD60E254415C8FC25523B2504152B81EF55BE2544183A938AC23B25041F7B5466156E2544152F9FAAC23B25041BB31481C52E25441B0D37A2823B25041E1DF87384DE254410D66FB5621B25041C9E8B1CD44E2544153B1BD261FB25041E1D58AB73CE254418BE9C8701DB25041E1F397E336E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435297 - 3299938
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000002000000010300000001000000130000009A9999B919B25041666666562FE25441C3F5289C1DB250410AD7A3103CE25441713D0A771FB2504152B81EB542E254410AD7A3C021B250411F85EB714DE254413D0AD7E321B25041D7A3701D4FE254411F85EB5122B25041CDCCCC5C54E2544148E17A3421B25041B81E856B60E254411F85EBC122B25041C3F528DC60E254415C8FC25523B2504152B81EF55BE25441C3F528AC23B250419A9999B956E25441F6285CBF23B25041AE47E1FA51E254415C8FC25523B250413D0AD7234EE25441E17A146E22B2504185EB511849E25441CDCCCCBC20B250417B14AE4742E254413D0AD7231EB25041B81E852B39E254417B14AED71BB25041D7A370AD31E25441EC51B8BE18B25041C3F528DC27E254410AD7A38017B25041D7A3700D28E254419A9999B919B25041666666562FE254410103000000010000000E0000007B14AE976EB25041AE47E17A4EE25441000000A069B25041B81E853B5FE254417B14AEC767B2504152B81E8565E2544152B81EB565B25041F6285CBF6CE2544114AE47B164B25041C3F5286C6FE25441A4703DFA63B25041D7A370ED70E2544185EB51F862B250417B14AEF771E25441EC51B89E66B2504148E17A6471E25441D7A3700D6EB2504152B81E355FE254417B14AE9780B25041000000B033E2544185EB512878B25041F6285C0F30E2544185EB519875B25041713D0AC737E254417B14AEB771B250419A99992944E254417B14AE976EB25041AE47E17A4EE25441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000008BE9C8701DB25041E1F397E336E254414B6645601BB250416B77F93230E2544180C205F21AB2504116E18AD52EE254413144D20B1AB2504126B38B962BE25441F46CAA0019B2504144DF25D227E2544168AF688317B250416049A20F28E254419A9999B919B25041666666562FE2544116270AD81AB25041BC44CB0033E254417061AA0C1CB25041A21ADFF336E25441C3F5289C1DB250410AD7A3103CE254415EFCEDE81DB25041B19F8A233DE25441713D0A771FB2504152B81EB542E25441531E0C9A1FB25041F3AD715943E254414BDB7B1F20B25041FB1DCBCB45E254410AD7A3C021B250411F85EB714DE25441C1838D2522B2504192835D3F52E254411F85EB5122B25041CDCCCC5C54E25441782F492722B250416056D72956E254417350B5CF21B25041C69CE5DC59E25441A442F68D21B250411CF8DEA35CE2544148E17A3421B25041B81E856B60E25441846C02C622B2504140A759DD60E254415C8FC25523B2504152B81EF55BE2544183A938AC23B25041F7B5466156E2544152F9FAAC23B25041BB31481C52E25441B0D37A2823B25041E1DF87384DE254410D66FB5621B25041C9E8B1CD44E2544153B1BD261FB25041E1D58AB73CE254418BE9C8701DB25041E1F397E336E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>517090 - 1441513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E0000000AD7A370E9E750413333338355FE544185EB51F8CCE75041000000A064FE544185EB5198D7E750411F85EB0171FE5441D7A370DDDBE75041EC51B85E76FE5441E17A148EE0E75041713D0AB77CFE5441CDCCCCDCE1E75041295C8F027CFE5441295C8F22E1E75041713D0A977AFE5441EC51B8BEDEE750413D0AD70377FE5441B81E85EBDEE750411F85EB2176FE5441B81E85EBECE75041AE47E1AA6EFE544133333353F7E75041CDCCCCDC68FE54419A9999D9FBE750419A9999E96DFE5441AE47E1EAFDE750417B14AEC76CFE54410AD7A370E9E750413333338355FE5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000057A8726BE9E75041DBC1C69155FE5441D881C40CE0E75041630D73875AFE5441DA50E4A0DEE750412A0827485BFE5441560E2D12DCE75041AE47E1A25CFE5441049370B3D9E750419F343DF45DFE5441358AD7ABD6E750412E2F7DA35FFE5441A7BD751AD4E750419D1E021161FE5441C4DD4694D0E75041817AA40663FE5441E5D02243CDE7504139B4C8DE64FE544185EB5198D7E750411F85EB0171FE544151460B9FD8E750413CB8B03372FE54417A3938ECD9E75041658D48EE73FE54414CAA2E6BDBE75041CEFE40DC75FE54416AE5D4D4DBE75041D9FA6B6676FE54418A9FB447DCE750418852A7FC76FE5441A547C527DEE7504135397B7079FE54416891ED24E1E7504179E926597DFE54414A0C022BE2E75041A69BC4C07CFE5441FCAEE3DAE0E75041D44A0BB87AFE5441F2D24D62DDE75041448B6C5775FE5441E4885AB4E0E750411BC1C67F73FE5441A68D688DECE75041DD5161F06CFE54417B14AED7F6E75041BA490C4A67FE5441E92631E0FCE75041D9CEF70B6EFE544133FD31FAFDE75041FF856ADC6CFE5441ADAFAB83FDE75041E68C0C586CFE5441038AB948FDE750415B34CE106CFE544146304618FDE75041E0E3A3D76BFE5441DA2D2AE6FCE7504128019B9D6BFE5441B784816BFCE75041921CDD1C6BFE54415FF262A0FBE750410FCD67486AFE54417157B16BFAE7504144033D0969FE544181DCAD63F9E75041101FBAF767FE5441F3B4A3C1F8E7504110ADDB4F67FE5441C3D43B13F8E750416E05368466FE54418BCC2614F6E750417945532F64FE544120DDA4CBF4E750417076AAAF62FE5441249B7645F4E750414146F51262FE54413B05529EF3E750419C14C14F61FE5441AC305722F3E75041F9BDF5BE60FE5441B5DA9273F2E7504156C788F55FFE5441E3A7DEE9F1E75041D15920575FFE54413BE64B7CF1E75041481D14D95EFE5441079BB7B1EEE75041E0A10FA35BFE544198F754C4EDE75041D705FC915AFE5441A1B2C8F4ECE7504171393BA359FE544134CD3643ECE750418CA7F6D658FE5441BE0CBA43EBE75041412F10B157FE54413DEA1281EAE7504122DA24D156FE5441B1C155BBE9E75041EDB6ACED55FE544157A8726BE9E75041DBC1C69155FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>517090 - 3827314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E0000000AD7A370E9E750413333338355FE544185EB51F8CCE75041000000A064FE544185EB5198D7E750411F85EB0171FE5441D7A370DDDBE75041EC51B85E76FE5441E17A148EE0E75041713D0AB77CFE5441CDCCCCDCE1E75041295C8F027CFE5441295C8F22E1E75041713D0A977AFE5441EC51B8BEDEE750413D0AD70377FE5441B81E85EBDEE750411F85EB2176FE5441B81E85EBECE75041AE47E1AA6EFE544133333353F7E75041CDCCCCDC68FE54419A9999D9FBE750419A9999E96DFE5441AE47E1EAFDE750417B14AEC76CFE54410AD7A370E9E750413333338355FE5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000057A8726BE9E75041DBC1C69155FE5441D881C40CE0E75041630D73875AFE5441DA50E4A0DEE750412A0827485BFE5441560E2D12DCE75041AE47E1A25CFE5441049370B3D9E750419F343DF45DFE5441358AD7ABD6E750412E2F7DA35FFE5441A7BD751AD4E750419D1E021161FE5441C4DD4694D0E75041817AA40663FE5441E5D02243CDE7504139B4C8DE64FE544185EB5198D7E750411F85EB0171FE544151460B9FD8E750413CB8B03372FE54417A3938ECD9E75041658D48EE73FE54414CAA2E6BDBE75041CEFE40DC75FE54416AE5D4D4DBE75041D9FA6B6676FE54418A9FB447DCE750418852A7FC76FE5441A547C527DEE7504135397B7079FE54416891ED24E1E7504179E926597DFE54414A0C022BE2E75041A69BC4C07CFE5441FCAEE3DAE0E75041D44A0BB87AFE5441F2D24D62DDE75041448B6C5775FE5441E4885AB4E0E750411BC1C67F73FE5441A68D688DECE75041DD5161F06CFE54417B14AED7F6E75041BA490C4A67FE5441E92631E0FCE75041D9CEF70B6EFE544133FD31FAFDE75041FF856ADC6CFE5441ADAFAB83FDE75041E68C0C586CFE5441038AB948FDE750415B34CE106CFE544146304618FDE75041E0E3A3D76BFE5441DA2D2AE6FCE7504128019B9D6BFE5441B784816BFCE75041921CDD1C6BFE54415FF262A0FBE750410FCD67486AFE54417157B16BFAE7504144033D0969FE544181DCAD63F9E75041101FBAF767FE5441F3B4A3C1F8E7504110ADDB4F67FE5441C3D43B13F8E750416E05368466FE54418BCC2614F6E750417945532F64FE544120DDA4CBF4E750417076AAAF62FE5441249B7645F4E750414146F51262FE54413B05529EF3E750419C14C14F61FE5441AC305722F3E75041F9BDF5BE60FE5441B5DA9273F2E7504156C788F55FFE5441E3A7DEE9F1E75041D15920575FFE54413BE64B7CF1E75041481D14D95EFE5441079BB7B1EEE75041E0A10FA35BFE544198F754C4EDE75041D705FC915AFE5441A1B2C8F4ECE7504171393BA359FE544134CD3643ECE750418CA7F6D658FE5441BE0CBA43EBE75041412F10B157FE54413DEA1281EAE7504122DA24D156FE5441B1C155BBE9E75041EDB6ACED55FE544157A8726BE9E75041DBC1C69155FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463445 - 243671
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000005501000048E17A34D7EF5041713D0AE78BA9544185EB51E8D4EF5041AE47E16A8FA9544185EB5108D3EF5041F6285C9F8EA9544148E17A64D1EF5041AE47E14A8EA95441CDCCCC8CD0EF5041333333638EA954410AD7A360CFEF5041333333338EA9544185EB5188CEEF5041F6285C9F8EA9544148E17AA4CDEF5041713D0A0790A9544185EB5178CCEF5041F6285CEF8FA9544185EB51A8CCEF5041713D0AC78DA95441CDCCCCFCCCEF5041F6285CDF8AA95441CDCCCCFCCCEF5041333333F388A9544185EB51D8CCEF5041333333D387A9544148E17A24CCEF5041B81E855B87A954410AD7A310CBEF5041F6285C0F88A9544148E17A74CAEF50413333338389A95441CDCCCCCCC9EF5041333333C38BA9544148E17AC4C8EF5041713D0AF78DA9544148E17AC4C5EF5041AE47E17A91A9544185EB5118C6EF5041713D0AB791A95441CDCCCC9CC6EF5041AE47E1FA92A954410AD7A380C7EF5041F6285C3F94A954410AD7A310C8EF5041713D0AB794A954410AD7A310C8EF50413333335395A954410AD7A380C7EF5041AE47E12A96A95441CDCCCCDCC5EF5041713D0AF796A954410AD7A340C5EF5041F6285C4F96A95441CDCCCC2CC4EF5041713D0A9796A9544148E17AB4C3EF5041F6285C6F97A9544148E17AC4C2EF5041713D0A1798A9544185EB5128C2EF50413333337399A95441CDCCCC1CC2EF5041713D0AA79BA95441CDCCCC8CC1EF5041F6285CAF9CA954410AD7A310C2EF5041333333F39DA95441CDCCCCBCC1EF5041AE47E18A9FA9544185EB51D8C0EF5041333333C3A0A954410AD7A3C0C0EF504133333303A9A954413D0AD7F3C2EF504114AE4741ADA95441CDCCCC2CC4EF5041F6285C8FADA9544185EB51F8C4EF5041713D0A87ACA9544148E17A64C5EF504133333363A9A9544185EB5158C5EF504133333313A8A9544166666676C6EF50411F85EBF1A6A954410AD7A3C0C6EF5041333333E3A7A95441CDCCCC2CC7EF5041AE47E1CAAAA9544185EB5198C7EF504133333373ABA9544148E17A14C7EF5041713D0A57ACA95441CDCCCCFCC6EF5041F6285CFFACA954410AD7A300C9EF5041333333F3AFA95441CDCCCCBCCAEF5041AE47E16AB0A9544185EB5118CCEF5041333333F3AFA9544185EB5148CCEF5041AE47E1AAAFA954410AD7A360CFEF5041F6285CEFB0A9544148E17AE4D2EF504133333343B4A954410AD7A3B0D3EF5041713D0AD7B6A954410AD7A350D3EF5041AE47E1AAB8A9544148E17AC4D1EF5041AE47E17AB8A9544185EB5178CFEF5041713D0AB7B8A954410AD7A300CFEF5041F6285CEFB9A95441CDCCCC2CD0EF5041AE47E14ABBA9544185EB5188D1EF5041AE47E1AABBA954410AD7A380D3EF5041AE47E18ABDA954410AD7A310D4EF5041AE47E1DABEA95441CDCCCCFCD5EF5041AE47E1EAC0A9544148E17AF4D7EF5041713D0A57C1A95441CDCCCC8CD9EF504133333323C2A954410AD7A360DBEF5041713D0A87C1A9544185EB5138DCEF5041F6285C7FC0A95441CDCCCCACDDEF5041AE47E15AC0A95441CDCCCC7CE0EF5041AE47E19ABFA9544148E17AF4E0EF5041F6285C0FBEA9544185EB51E8E0EF5041F6285CEFBCA954410AD7A3B0DFEF5041713D0AB7BBA9544148E17A04E0EF5041713D0A67BAA9544148E17AC4E0EF5041713D0A77B9A9544185EB5168E2EF5041AE47E10AB9A95441CDCCCC1CE3EF5041F6285C2FB9A95441C3F528ACE3EF5041B81E859BB9A954410AD7A330E4EF5041F6285CAFBAA95441C3F5280CE4EF5041713D0A47BCA954410AD7A3B0E2EF5041B81E857BBEA95441C3F5281CE3EF5041B81E859BBFA9544185EB51C8E2EF5041F6285CDFC0A954410AD7A310E0EF5041F6285CCFC4A9544148E17A04DDEF5041B81E852BC6A9544148E17A54DBEF5041F6285CCFC7A95441000000F0D9EF5041B81E85DBC8A95441713D0A87D8EF5041EC51B81ECAA95441C3F528ACD7EF5041B81E850BCBA9544185EB5118D6EF50410AD7A300CCA95441F6285C5FD2EF504152B81E35D1A95441C3F5280CDBEF5041713D0A27CAA954410AD7A3E0DCEF5041B81E851BCAA954410AD7A300DEEF5041713D0A07C9A9544185EB5168DFEF5041B81E853BC8A9544185EB5158E0EF5041B81E85EBC6A95441C3F5280CE1EF504133333323C5A954410AD7A350E2EF5041713D0AC7C3A9544148E17AF4E3EF5041713D0A67C3A95441C3F5288CE5EF5041713D0A67C3A954415C8FC275E7EF5041295C8FE2C1A95441B81E853BEEEF504152B81E35BEA95441295C8FB2F2EF5041AE47E17ABAA95441713D0A37F5EF50410AD7A360B8A954410AD7A320F7EF504185EB51C8B6A9544185EB5178FAEF50419A999939B3A954410AD7A38000F05041F6285C5FADA95441C3F5283CFFEF5041713D0AF7ABA9544185EB5188FEEF5041713D0A17ADA9544185EB51A8FCEF5041B81E853BADA9544148E17AC4FBEF5041B81E85CBADA95441C3F5285CFAEF504133333333AFA954410AD7A330F9EF5041F6285C0FB2A954410AD7A380F7EF5041713D0AB7B2A954410AD7A330F6EF5041F6285CFFB2A9544148E17A74F7EF5041F6285CFFAFA9544185EB51B8F8EF5041333333A3AEA95441C3F528BCFAEF5041713D0AF7ABA9544148E17A24FCEF5041F6285CDFA8A9544100000060FDEF5041C3F528ECA7A9544152B81E05FEEF504152B81E35A8A954418FC2F51800F0504100000020A9A95441C3F5285C00F05041B81E85FBAAA9544148E17A9401F05041F6285C0FACA954419A99994903F0504185EB5188AAA95441D7A3701D07F0504166666686A6A95441AE47E1EA08F0504114AE47F1A3A95441EC51B87E0CF0504114AE47D19EA954410AD7A3700DF05041713D0AC79CA9544148E17A840BF05041B81E85BB9CA9544148E17AE4F6EF5041B81E852B93A9544185EB5188F5EF5041B81E852B93A95441C3F5285CF4EF5041713D0A2794A9544148E17AF4F2EF5041333333C397A95441C3F5285CF1EF5041B81E851B9AA954410AD7A370EFEF5041B81E85CB9EA954410AD7A320EEEF5041713D0A27A0A954410AD7A3B0EBEF5041713D0A47A1A95441C3F5288CE8EF5041B81E85CBA1A9544185EB51D8E4EF5041713D0A77A1A954410AD7A3E0E4EF5041D7A370ADA0A95441EC51B84EE6EF50419A9999C9A0A95441B81E858BE8EF50411F85EB01A1A95441333333A3EAEF5041000000C0A0A95441D7A3702DECEF504133333333A0A954418FC2F588EDEF50411F85EB519FA9544152B81EB5EEEF50413D0AD7E39DA954410AD7A310F0EF50411F85EBE19AA9544152B81E75F1EF50418FC2F58898A95441AE47E13AF2EF5041EC51B8FE96A954410AD7A320F4EF5041F6285CBF92A95441D7A3706DF5EF5041EC51B83E8EA95441CDCCCC2CF7EF5041F6285CAF84A9544148E17A04F8EF5041333333937CA954410AD7A370F8EF5041B81E853B71A954410AD7A3A0F8EF5041F6285CEF68A9544185EB5108FAEF5041333333D35DA954410AD7A310FBEF5041B81E855B51A9544185EB51E8FBEF5041F6285C8F3EA9544148E17A84FCEF5041713D0A5737A95441CDCCCC5CFDEF5041B81E85EB33A954410AD7A3A0FEEF5041F6285CDF30A9544185EB51E801F05041F6285C5F2CA9544185EB515804F05041F6285CCF28A9544185EB513806F05041B81E85BB24A9544148E17AF407F05041333333F31FA954410AD7A36008F05041713D0AE71CA95441CDCCCC9C08F050413333336319A95441CDCCCC9C08F05041B81E852B15A9544185EB518807F05041B81E855B12A9544185EB517805F05041B81E852B0FA9544185EB51C803F05041B81E857B16A9544148E17A3401F05041F6285CEF1AA954410AD7A330FFEF5041713D0A171DA95441CDCCCC9CFFEF5041713D0A371EA95441CDCCCC4CFEEF50413333337321A954410AD7A3E0FDEF5041F6285C2F23A9544185EB5118FFEF5041B81E852B24A9544185EB519800F05041F6285CAF24A954410AD7A3E000F050413333333325A9544148E17AA400F05041713D0A7726A9544148E17AD4FDEF5041B81E85FB26A954410AD7A390FCEF5041B81E851B28A95441CDCCCCACFBEF5041B81E851B2BA954410AD7A370FBEF5041713D0A072DA9544148E17AA4FAEF5041B81E854B2EA9544148E17A44FAEF5041F6285C4F30A95441CDCCCCECF7EF50413333334333A954410AD7A390F6EF5041713D0AD735A95441CDCCCC9CF3EF5041F6285C4F39A954410AD7A370F2EF5041B81E85EB39A9544185EB5168F1EF5041F6285C2F3BA95441CDCCCCCCF0EF5041713D0A973CA9544185EB51F8EEEF5041713D0AD73EA9544185EB51C8EEEF5041F6285C5F41A95441CDCCCC7CEFEF5041B81E858B42A95441CDCCCC7CEFEF5041F6285CEF44A9544148E17AA4EEEF5041B81E851B46A9544185EB5148EDEF5041B81E850B47A9544185EB51B8ECEF5041F6285CAF48A954410AD7A3A0ECEF5041333333234AA9544148E17A54EDEF5041713D0AD74AA9544148E17A44EEEF5041333333934CA9544148E17A44EEEF5041713D0A474DA95441CDCCCCCCEDEF5041B81E858B4EA9544148E17AE4EDEF5041F6285C9F4FA95441CDCCCCCCEDEF5041333333D351A954410AD7A3F0EDEF5041713D0A5752A95441CDCCCCCCEDEF50413333331354A9544148E17AF4ECEF50413333333355A954410AD7A350EBEF50413333330355A9544148E17AB4EAEF5041B81E85CB53A95441CDCCCC6CEAEF5041333333D351A95441CDCCCC9CEAEF5041713D0A7750A9544185EB5158E9EF5041713D0AE74FA9544185EB5108E8EF5041333333F34FA9544185EB51A8E4EF5041F6285C1F51A95441CDCCCCDCE3EF5041333333D351A9544185EB5108E2EF5041713D0A8752A9544148E17A34E0EF50413333331354A9544185EB5148E1EF5041B81E854B55A954410AD7A300E4EF50413333334354A9544185EB5138E5EF5041B81E852B54A95441CDCCCCECE5EF5041713D0A8755A9544185EB5158E3EF50413333331357A9544148E17A14E2EF5041B81E855B57A9544185EB51B8E0EF5041B81E851B58A954410AD7A330DEEF5041713D0A9757A95441CDCCCCBCD9EF5041333333D357A9544148E17A74D6EF5041F6285CCF58A9544185EB5108D3EF5041F6285C8F56A954410AD7A3C0D2EF5041713D0A9757A9544148E17A74D3EF5041F6285C4F5AA9544148E17A94D4EF5041333333A35AA954410AD7A380D6EF5041333333235CA954410AD7A370D7EF5041B81E856B5CA9544148E17AC4D7EF5041B81E852B5DA9544148E17A44D9EF5041B81E85BB5DA9544148E17A34DAEF50413333337360A9544148E17A94DAEF5041B81E851B61A9544185EB51B8DAEF5041713D0AD762A9544185EB5138DCEF5041B81E853B65A95441CDCCCCACDDEF5041713D0A7765A9544148E17A64DDEF5041B81E854B64A954410AD7A390DEEF5041713D0A0763A95441CDCCCCECDFEF5041B81E85CB62A9544185EB5168E2EF5041B81E85CB62A9544148E17A94E3EF50413333331363A9544148E17A64E6EF50413333332362A954410AD7A3C0E7EF50413333338362A9544185EB5198E8EF5041F6285CDF63A9544148E17A14E8EF50413333338365A954410AD7A330E7EF5041F6285C7F66A95441CDCCCCDCE6EF5041713D0AE767A95441CDCCCC5CE8EF5041B81E859B68A95441CDCCCCBCE8EF5041F6285C5F6BA9544185EB51F8E8EF5041713D0AB770A95441CDCCCC8CE8EF5041B81E853B74A95441CDCCCC3CE7EF5041B81E856B74A954410AD7A340E6EF5041713D0A8773A9544185EB51F8E5EF5041713D0A0772A9544185EB51B8E6EF5041333333C370A954410AD7A360E7EF5041713D0AD76BA9544148E17AC4E6EF5041B81E854B6AA9544148E17A14E5EF5041333333D369A9544148E17AF4E3EF5041713D0A0769A95441CDCCCCECE2EF5041F6285CBF68A9544148E17A44E2EF5041F6285C6F67A9544148E17A54E1EF5041713D0A1768A954410AD7A340E0EF5041713D0A9769A9544185EB5138DFEF5041F6285C6F6AA954410AD7A3F0DEEF5041713D0A376CA9544148E17AD4DFEF5041713D0A976FA9544148E17A04E0EF5041F6285CFF70A9544148E17A74DFEF5041F6285C1F72A9544148E17AA4DFEF50413333336373A954410AD7A320DFEF5041713D0A5776A95441CDCCCC3CDEEF5041F6285C9F76A95441CDCCCC7CDDEF5041713D0A8776A9544185EB51C8DCEF5041B81E856B77A954410AD7A3C0DBEF5041F6285CBF77A95441CDCCCC7CDAEF5041333333D378A9544185EB5138D9EF5041713D0A8779A95441CDCCCCCCD8EF5041B81E858B7BA954410AD7A370D7EF5041F6285C3F7CA95441CDCCCC8CD6EF5041F6285CEF7DA95441CDCCCC6CD5EF5041B81E85CB7DA9544148E17AD4D3EF5041F6285CEF7DA954410AD7A360D2EF5041713D0AA77DA9544185EB5188D1EF5041333333537DA9544185EB5198D0EF5041B81E857B7CA9544148E17A64CEEF5041F6285CAF7BA9544185EB51F8CDEF5041B81E85AB7CA95441CDCCCC7CCEEF5041F6285CBF7DA954410AD7A3A0CEEF5041333333937FA9544148E17AD4CDEF5041B81E85FB80A954410AD7A350CDEF5041B81E85DB82A9544185EB5148CCEF5041713D0A9784A954410AD7A390CCEF5041713D0A7786A9544148E17A14CDEF5041F6285C8F86A9544185EB5178CFEF5041B81E854B85A95441CDCCCC5CD0EF5041B81E858B84A9544185EB5188D1EF5041333333F385A9544185EB51C8D0EF5041B81E85FB86A95441CDCCCC9CCFEF50413333337387A95441CDCCCC6CCFEF5041F6285C9F88A9544185EB51A8CFEF5041F6285CAF8AA9544148E17A24D2EF5041333333938BA9544185EB5138D3EF5041F6285C6F8BA954410AD7A310D4EF5041B81E850B8CA9544185EB5188D4EF5041B81E85AB8BA9544148E17A24D5EF5041B81E858B8AA9544148E17AF4D4EF5041713D0A1789A9544185EB51C8D6EF50413333334387A95441CDCCCCACD7EF50413333334387A95441CDCCCCFCD8EF5041B81E85FB86A95441CDCCCC1CDAEF5041713D0AE785A9544148E17A24DBEF5041B81E851B85A9544185EB5178DBEF50413333334384A9544185EB5118DBEF5041713D0A1783A95441CDCCCC9CDBEF5041333333A381A9544148E17AA4DCEF5041713D0A7780A95441CDCCCCFCDBEF5041713D0A077EA954410AD7A320DCEF5041F6285CFF7CA9544148E17A94DDEF5041B81E85AB7CA9544185EB51C8DFEF50413333335380A954410AD7A340E0EF5041B81E851B82A95441CDCCCC1CE0EF5041713D0A0784A954410AD7A380DFEF50413333333385A9544185EB5118DEEF5041333333D384A954410AD7A380DCEF5041B81E857B85A95441CDCCCC6CDBEF5041B81E859B86A954410AD7A3A0DAEF5041713D0A4789A9544185EB51E8DAEF5041B81E856B89A9544148E17A74DCEF5041333333F388A9544185EB5108DFEF5041333333B389A954410AD7A3C0DEEF5041333333D38AA9544148E17AA4DCEF5041F6285CCF8BA9544185EB5118DBEF5041B81E853B8CA95441CDCCCC3CD8EF5041713D0A878BA9544148E17A34D7EF5041713D0AE78BA9544116000000F6285C8FF8EF5041666666869DA9544185EB51C8F8EF50410AD7A3B09DA95441A4703D3AFAEF5041D7A370CD9DA9544185EB5108FBEF5041295C8FA29CA95441D7A3705DFCEF504148E17A149DA954417B14AE47FBEF5041666666869EA95441B81E85EBFAEF50410AD7A330A0A9544148E17AA4F9EF50411F85EB61A1A9544185EB5188FAEF50418FC2F528A3A95441F6285C8FFBEF50413D0AD753A4A95441D7A3701DFBEF5041A4703DDAA5A9544185EB51C8F9EF504114AE4721A6A95441C3F5282CF6EF50418FC2F5A8A4A954418FC2F5C8F4EF504166666676A7A954413D0AD773F4EF504133333393A7A954417B14AE57F3EF5041C3F528CCA6A954418FC2F588F4EF50411F85EB21A5A9544100000050F5EF504100000070A3A95441E17A145EF6EF50417B14AEF7A1A9544114AE47C1F6EF5041CDCCCC4CA0A95441333333B3F7EF50419A9999699EA95441F6285C8FF8EF5041666666869DA954411C000000CDCCCC5CD0EF5041333333A3AEA9544148E17AF4D1EF5041F6285C7FAEA95441B81E850BD2EF50415C8FC285ADA9544185EB51F8D0EF5041F6285CCFACA9544148E17A14D0EF5041AE47E18AABA95441CDCCCC5CD0EF5041713D0AE7A9A9544148E17A04D1EF5041F6285CAFA8A9544148E17AA4D0EF5041F6285C8FA7A95441CDCCCCDCD1EF5041713D0AE7A6A9544148E17AE4D2EF5041333333B3A7A95441CDCCCCDCD4EF5041713D0AA7A7A954410AD7A3B0D9EF5041AE47E1AAA9A95441CDCCCC4CDAEF5041713D0AA7AAA9544148E17A44D9EF504133333343ABA954410AD7A3A0D7EF5041F6285C4FABA9544185EB5198D6EF5041713D0A27ACA9544148E17AA4D6EF5041F6285C5FADA9544148E17A14D3EF5041713D0AA7ADA95441CDCCCC1CD4EF5041AE47E1EAAEA9544148E17A24D5EF5041713D0A87AFA9544185EB5178D5EF5041AE47E19AB0A9544185EB5108D6EF5041F6285C7FB1A9544148E17AB4D5EF5041AE47E17AB2A9544185EB5168D3EF504133333303B2A95441CDCCCC3CD2EF5041713D0A27B2A9544148E17AE4CFEF5041333333B3B0A9544148E17AE4CFEF5041AE47E17AAFA95441CDCCCC5CD0EF5041333333A3AEA95441
+</a>
+
+<b>
+0106000000010000000103000000010000007502000048E17AA4DCEF5041713D0A7780A954410FF1FB49DCEF5041986545267FA95441CDCCCCFCDBEF5041713D0A077EA95441C466B1FEDBEF504147F51CF97DA9544122DE3CEBDBEF5041C2D24AAB7DA954419F997B14DCEF50418A5ACD587DA954410AD7A320DCEF5041F6285CFF7CA954419F6B5745DCEF504110B515F77CA9544189E8FA49DCEF504119BBCEED7CA9544191F917D8DCEF5041B2B0108F7CA95441B4073566DDEF5041B2B0108F7CA954412DEC7C81DDEF5041985CCDAF7CA9544148E17A94DDEF5041B81E85AB7CA954416F8166CFDDEF504114104C0D7DA95441923EEB3FDFEF5041D2F484C77EA9544170833BBEDFEF5041E2C0754280A9544185EB51C8DFEF50413333335380A95441C511A9D6DFEF5041BB3A968980A954414367848BE0EF5041A95FF17A82A95441A260255CE0EF504175858AC683A95441BF1C64AADFEF50415DF0F2E284A954410AD7A380DFEF50413333333385A9544188206F79DFEF5041A3B6473185A9544133454A6FDFEF504112AF824185A95441A2A9E7C0DEEF5041E1B51D0085A9544185EB5118DEEF5041333333D384A95441C31C00CEDCEF50414B79945B85A95441E6F2B8A8DCEF5041B2B5E17085A9544181D7DDBBDBEF5041C2D71B8D86A954411ACD1F5DDBEF504186EC974A87A95441B3C261FEDAEF50415C12319688A95441B47DC0B3DAEF5041FA3FC45089A95441FAE69EDBDAEF50418D950E6589A95441B3C261FEDAEF50412B27AD5389A95441578ED336DBEF50412B27AD5389A9544169E4E5F5DBEF5041431AA51989A9544189E8FA49DCEF5041231690C588A95441EE03D636DDEF504164234E2489A954412B342DE1DEEF5041CB2D0C8389A95441923EEB3FDFEF50413238CAE189A954414DB617CDDEEF504106C92AA18AA954410AD7A3C0DEEF5041333333D38AA9544148E17AA4DCEF5041F6285CCF8BA9544185EB5118DBEF5041B81E853B8CA95441F1116DD7DAEF50416069822B8CA95441E4ADE540DAEF5041347D9D498CA95441181E49BBD9EF5041561268E58BA95441CDCCCC3CD8EF5041713D0A878BA9544148E17A34D7EF5041713D0AE78BA95441A7931B21D6EF504132AF568C8DA95441001022E3D4EF50417EE04B9E8FA95441D2010555D4EF504117D68D3F8FA9544165F35059D3EF504124D0B3C18EA9544112279D44D3EF5041DAB2ECB88EA95441132F962AD3EF50419399E3AD8EA954414D47178ED2EF504155DFC3868EA9544193E64BA0D1EF5041FD8EEA568EA95441808D3972D0EF50416EBE11828EA95441C1C34B54D0EF50412D072A5A8EA954410AD7A360CFEF5041333333338EA954417733D5D6CEEF5041FD841A788EA954414D5DE2C7CEEF50416EBE11828EA95441DE4107DBCDEF50411FE7AACD8FA954413D9AD2C8CDEF50411FE7AACD8FA9544148E17AA4CDEF5041713D0A0790A9544185EB5178CCEF5041F6285CEF8FA954412D196E8FCCEF5041F8AA70E58EA954412D196E8FCCEF5041ECB653238EA954412D196E8FCCEF50413C8EBAD78CA95441A822CDBECCEF5041425A04FE8AA954416F262CEECCEF50415C12319688A95441114BEAEFCCEF5041685B7A8D88A9544185EB51D8CCEF5041333333D387A9544148E17A24CCEF5041B81E855B87A95441AAE29325CBEF5041448FB50188A9544142CA2F0ECBEF5041BAA3331588A9544189273EE8CAEF50413A3D8D6F88A95441795281C4CAEF50416AF5A5C488A95441CDDAF956CAEF5041DB4F469F8AA95441F7B4600BC9EF5041ABA995C48DA95441C3F5654DC8EF5041946790828EA954412AE4A034C7EF5041C15E88CB8FA95441FAFDB714C6EF504195F1DD1C91A954410EB134FAC5EF5041626D6EA191A9544185EB5118C6EF5041713D0AB791A954415B131E8FC6EF504197106FD992A954411B6D8DA3C6EF5041EF40FAF292A95441648B6890C7EF50419F69933E94A95441787D4A9CC7EF5041054E575694A954410AD7A310C8EF5041713D0AB794A954410AD7A310C8EF504188030A3F95A954418799851EC8EF5041CA88CD5A95A954413A05B978C7EF504139A4A84796A9544104E67E5CC6EF504107B9240597A954416F9D671AC6EF50414E3315D996A95441CDCCCCDCC5EF5041713D0AF796A954410AD7A340C5EF5041F6285C4F96A95441AA02CC1FC5EF50417606E55796A95441A4A70A24C4EF504141B5C5D596A9544126A2F4F4C3EF50412BEC70FB96A9544148E17AB4C3EF5041F6285C6F97A95441E82AD1E5C2EF5041249EBFFF97A95441CAEFDEACC2EF5041DE42AD4B98A9544185EB5128C2EF50413333337399A954418629C427C2EF5041EE744D8E99A95441EB6D544AC2EF50415A2DF0E79AA95441DEBF761EC2EF504124619A559BA95441CDCCCC1CC2EF5041713D0AA79BA95441200AE2E0C1EF5041116305159CA95441BE5F37BCC1EF5041F46705F19CA95441C8C613D5C1EF50410038E5609DA954410AD7A310C2EF5041333333F39DA95441E374A303C2EF50412DC86B329EA95441256AF51AC2EF504131985C9B9EA9544131F5CFD4C1EF504187231E169FA95441CDCCCCBCC1EF5041AE47E18A9FA95441D7C9084AC1EF50413231C227A0A95441F02EB7D5C0EF504189E67CABA1A954418477F9D4C0EF5041988F95EDA1A954411548BBFEC0EF50416D1EA43BA3A9544157AACFCEC0EF504117654813A4A95441694B00CDC0EF5041CE0FB8B4A4A954413C4791C7C0EF5041C9AD5799A6A9544159445CCFC0EF50411F8C10EFA6A9544159445CCFC0EF5041FDC2C6C8A8A954411D59D88CC1EF504174EFBE43AAA954412D7B12A9C2EF5041D52D337CACA95441C293ED95C3EF504144490E69ADA95441DD154B4AC4EF504144490E69ADA954418AE45F5AC4EF5041739D2B54ADA9544126AFC882C4EF5041163BF1DAACA9544108278CEFC4EF5041B6E96E92ACA9544185EB51F8C4EF5041713D0A87ACA9544148E17A64C5EF504133333363A9A9544185EB5158C5EF504133333313A8A95441E6A0BAB7C5EF5041D248B9B2A7A9544164DF1F2DC6EF50411F8C10EFA6A9544140C16253C6EF5041FB6D5315A7A9544166666676C6EF50411F85EBF1A6A95441B74FC9B1C6EF504167FBECB2A7A95441D3FAFA19C7EF5041FDC2C6C8A8A95441D3FAFA19C7EF5041D4E85F14AAA954417619224EC7EF504105F50FFFAAA9544185EB5198C7EF504133333373ABA95441F3875D75C7EF5041FA679BAFABA954413A05B978C7EF5041E11BB7BEABA95441D3FAFA19C7EF5041163BF1DAACA95441472E7F66C7EF5041DFBC3B9AADA9544150BA75CAC8EF50412FDFCFA3AFA954417D574A3FCAEF5041879B9F2FB0A954418C79845BCBEF5041879B9F2FB0A95441BFD7532BCCEF504159E08FD6AFA9544185EB5148CCEF5041AE47E1AAAFA9544164529D6DCCEF5041E83D27BAAFA95441589F1DA7CCEF50417F8A82A1AFA9544195CF7451CEEF5041879B9F2FB0A9544128F96CCCCFEF50412FB31BEDB0A9544136E9B6B5D1EF504129965B12B3A95441AD8AAC24D2EF50413A537034B2A954410C3BAFE3CFEF5041CA262DBBB0A954410C3BAFE3CFEF5041D0D06479AFA95441E854D1FACFEF5041B7A6D652AFA95441CDCCCC5CD0EF5041333333A3AEA95441DFE99C64D0EF5041A85D83A2AEA95441F501D668D0EF5041068B799BAEA954419882EEF4D1EF50411180777AAEA95441781825FED1EF50416A28A816AEA95441A9D96203D2EF50413D458EBDADA9544154842373D1EF504108846738ADA95441A04F301AD1EF504185D0CEE5ACA9544185EB51F8D0EF5041F6285CCFACA954410F0328E6D0EF5041A2F57DB5ACA954416DA3CBD7D0EF5041B32E28A8ACA95441E43D1848D0EF5041872F63D4ABA9544148E17A14D0EF5041AE47E18AABA95441D1C8D414D0EF5041605BD788ABA9544110ECF804D0EF504125677871ABA95441F1508C47D0EF50418F3D35F8A9A95441507D7369D0EF5041B23B86CFA9A95441640497BAD0EF5041C48FB438A9A95441E58C57F5D0EF5041368A7FCBA8A95441705415F9D0EF50410C7685C1A8A95441A1AF01BCD0EF50410294F0D5A7A9544148E17AA4D0EF5041F6285C8FA7A95441891B9CEED0EF5041C3AD6867A7A95441F308E8CBD1EF5041921C34CEA6A95441C861B00DD3EF5041A942EE95A7A954413D0AB8DFD4EF504115D106A1A7A95441CE9CA0FED7EF504152079ECCA8A95441AA57FC82D9EF5041179C3F89A9A954415F94E196D9EF50416AD520A0A9A954410AD7A3B0D9EF5041AE47E1AAA9A95441FE7D3ED9D9EF5041501672ECA9A95441999AE760DAEF5041EF927488AAA95441819DE544DAEF50414C4B479AAAA95441CDCCCC4CDAEF5041713D0AA7AAA9544148E17A44D9EF504133333343ABA95441EB35C6B1D7EF5041A11DDD4EABA9544151D1E163D7EF5041E3F0EF80ABA95441D0958E9BD6EF5041B4106624ACA95441D0958E9BD6EF504102DA2D7AACA9544148E17AA4D6EF5041F6285C5FADA954412EED972FD5EF504118E6AA7CADA95441CB12FA2ED3EF50413D458EBDADA954416D6239BFD3EF5041D92BE658AEA95441C2B7784FD4EF5041129E56FFAEA95441874C1A0CD5EF5041CC1F1B58AFA9544106AA561AD5EF5041DFAC0881AFA9544148E17A24D5EF5041713D0A87AFA95441811F415CD5EF5041E6BF8A3EB0A954414CCEDE64D5EF504199165057B0A9544112638021D6EF504127DEFF8DB1A954419AC18AB2D5EF5041AD431C82B2A954417888F386D4EF50416301BA55B2A954415B09D33DD3EF50415DF24808B2A954410AB4BDCDD2EF50414956B215B2A954410A60A472D2EF50415FEC9820B2A95441FB6A7B0ED2EF5041C81A206BB3A95441E0DA8560D2EF5041662648C6B3A9544148E17AE4D2EF504133333343B4A954410A427FF7D2EF50416D2E8680B4A95441725C1B21D3EF5041632846FFB4A95441F6D320B4D3EF5041C8EC6AB6B6A954416738DCAED3EF504149B049D1B6A954410AD7A3B0D3EF5041713D0AD7B6A95441EACC656FD3EF50419BD8FC14B8A9544139607A50D3EF50411596B2B2B8A954416EB9A513D3EF50419F6C7DA3B8A9544172FE300AD2EF504159925383B8A954414907E771D1EF504159925383B8A95441F4F0FB87D0EF504103B8409BB8A9544128F96CCCCFEF50411596B2B2B8A9544159E4F00ECFEF504111B94BFEB9A954413FFAAD13CFEF5041E9596705BAA954418864142CD0EF5041C5C60B4ABBA954419F256547D1EF504188E54379BBA95441E171E183D1EF50412B56A7A9BBA9544185EB5188D1EF5041AE47E1AABBA954419FB7A397D1EF50417FF475B9BBA954410E414034D2EF504126FDBF36BCA954413EF178BDD2EF5041BBC21FD1BCA954410AD7A380D3EF5041AE47E18ABDA954416D619E9CD3EF5041EADF29CCBDA954417A6D38AFD3EF5041632D17E1BDA95441ADF8E74BD4EF50412646761ABFA95441D0E82BDCD4EF5041FAA93BB5BFA95441B89D8F59D5EF5041C46B8B19C0A954418E7F8037D6EF504117527CF7C0A9544165638E59D7EF5041AE90C535C1A9544193E562C1D7EF5041AE90C535C1A95441300F5B3CD9EF50417CA541F3C1A95441F323D7F9D9EF50417CA541F3C1A95441FEA9A683DAEF504132C3CDD0C1A954410AD7A360DBEF5041713D0A87C1A95441B6BDDBA5DBEF5041A4BD6A32C1A95441D25A8DD3DBEF50416D8307D7C0A95441E9B2B704DCEF5041615772BEC0A9544185EB5138DCEF5041F6285C7FC0A95441CDCCCCACDDEF5041AE47E15AC0A954410361CDC9DEEF50412820E10EC0A9544183C8F986DFEF50413764CDBABFA95441C310A28DE0EF5041D2F63F63BFA9544148E17AF4E0EF5041F6285C0FBEA9544185EB51E8E0EF5041F6285CEFBCA954410AD7A3B0DFEF5041713D0AB7BBA954414ACC58B6DFEF504171412BA0BBA954414ACC58B6DFEF5041FBDD851ABBA95441A373EAF8DFEF5041488D6295BAA9544148E17A04E0EF5041713D0A67BAA9544172CA2040E0EF5041FCD97A1CBAA95441F3E3D473E0EF50414AB5ECCEB9A9544107528388E0EF504182B0FFC1B9A9544148E17AC4E0EF5041713D0A77B9A9544184A47F2AE1EF504118FDC15CB9A954415F10CDEEE1EF5041DB9911E2B8A95441532249ACE2EF50417CA07011B9A9544177DCAE9DE4EF5041042FA52EB5A954413EE5DEAEEDEF504105CF1275A0A95441D2A66A76EBEF504115F14C91A1A95441E50AB2EDE9EF504115F14C91A1A95441C3F5288CE8EF5041B81E85CBA1A95441DA067212E8EF5041DBF4ABC0A1A954415D248205E7EF5041DBF4ABC0A1A9544109864F2DE6EF5041F3A06E95A1A9544185EB51D8E4EF5041713D0A77A1A95441C0F430D9E4EF50419AE7ED61A1A954417EA8F8C3E2EF50419AE7ED61A1A95441DC5CC62CE0EF5041DBF4ABC0A1A95441BC1852F4DDEF5041840C287EA2A954411ACD1F5DDBEF5041752FC1C9A3A95441B27D8E96D8EF5041B35F1874A5A95441AA6C7108D8EF5041AB4EFBE5A4A95441C4249EA0D5EF504126585A15A5A954412AEA8897D3EF5041E44A9CB6A4A95441EFA8145FD1EF5041E44A9CB6A4A95441B3BD901CD2EF50410E25036BA3A954411AC84E7BD2EF5041840C287EA2A95441F7B931EDD1EF50419AE7ED61A1A954415EC4EF4BD2EF5041CBD271A4A0A954415BD50CDAD2EF504100ADD8589FA95441E8DCCA38D3EF5041CA8D9E3C9EA95441CAF0E7C6D3EF5041FC78227F9DA95441D2010555D4EF5041F46705F19CA95441C7138112D5EF50418D5D47929CA95441671AE041D5EF5041E734AE469BA9544108213F71D5EF5041521CD3599AA954416F2BFDCFD5EF504142FA983D99A954411CB96A46D6EF504177D4FFF197A954411CB96A46D6EF504100A8077796A9544183C328A5D6EF5041CA88CD5A95A9544124CA87D4D6EF50415E5CD5DF93A9544124CA87D4D6EF5041283D9BC392A9544152D8A462D7EF50417F251F0692A9544193E562C1D7EF50415C17027891A9544193E562C1D7EF5041EDFB268B90A9544193E562C1D7EF504117D68D3F8FA95441FAEF2020D8EF504167ADF4F38DA954418C19199BD9EF5041439FD7658DA95441A44C7045DBEF5041ABA995C48DA95441D39F603BDEEF5041ECB653238EA954417CB7DCF8DEEF5041ECB653238EA954411D030F90E1EF50416EBE11828EA95441015CFF85E4EF504117D68D3F8FA954410590B55FE6EF5041DED9EC6E8FA9544115B2EF7BE7EF5041DED9EC6E8FA954419FCACA68E8EF504117D68D3F8FA954414FF363B4E9EF50410FC570B18EA95441C61F5C2FEBEF504117D68D3F8FA95441B842F57AECEF504150D22E108FA95441CF754C25EEEF5041B0CBCFE08EA95441629F44A0EFEF504150D22E108FA954410AB7C05DF0EF5041E5EA09FD8FA9544179D29B4AF1EF504187363C9492A954416BF53496F2EF5041283D9BC392A95441AC02F3F4F2EF50417D9B78368DA95441CCDFF131F6EF50415C6DCB7471A95441193283F8F8EF5041FF539A7056A954415473F730FBEF50417E2C4CDE3AA954416495314DFCEF5041ABF0C42230A9544165DA04B5FEEF50414EE135E226A95441F6BE29C8FDEF504114E5941127A95441C170C5A1FDEF5041E5E09D2827A95441EEEC74C2FCEF5041737137EF27A95441228873EEFBEF5041254CA2952AA954413A03EF8DFBEF50418167B4172CA954410AD7A370FBEF5041713D0A072DA95441C6FAF63DFBEF5041468C94572DA95441ED6839D2FAEF504180D18A062FA9544172E2EA51FAEF504170DE270730A9544148E17A44FAEF5041F6285C4F30A95441A8D13007FAEF504101009C9C30A954417E4D5EE5F9EF5041530841E030A95441A5B54E85F9EF5041599F504031A954417BD4D646F8EF504174D0B6D132A954410A1049DCF7EF5041BC57D2A633A95441D4F00EC0F6EF50419A8E888035A95441E925D9BAF6EF504133CC0B8735A954410AD7A390F6EF5041713D0AD735A954419B3DB810F5EF50411684409A37A954412A94BF9AF3EF50411200546339A95441F540E75EF2EF5041A92940013AA95441200EE9E1F1EF50414BC4639A3AA95441B71AF575F1EF50413FD3A61E3BA9544188488D03F1EF50411B5644593CA954416A14AED8F0EF5041967F907B3CA95441CDCCCCCCF0EF5041713D0A973CA9544117806677EFEF5041732ACB3A3EA95441E30D78FAEEEF50415EA8D51F3FA95441798AFAE7EEEF50413CBFC1B33FA95441C8A22ED4EEEF5041494024BF40A9544143632F21EFEF5041874427F341A95441CDCCCC7CEFEF5041B81E858B42A95441CDCCCC7CEFEF5041BE350AA042A95441B222F4B7EFEF5041D619A10243A95441B222F4B7EFEF5041A23F3A4E44A95441CDCCCC7CEFEF50411608ADBA44A95441CDCCCC7CEFEF5041F6285CEF44A954416A489C06EFEF5041C1505B9345A954418703BA9BEEEF5041467A4F5746A95441DC23CF7FEDEF50412DEB44E546A9544185EB5148EDEF5041B81E850B47A95441B7871213EDEF5041C731C4A647A954411F4DB3D9ECEF5041F8E7BB0A4AA954412F6FEDF5EDEF50412B1813B54BA95441527D0A84EEEF50413B3A4DD14CA9544183524937EEEF50415993CF6A4DA95441CDCCCCCCEDEF5041B81E858B4EA9544148E17AE4EDEF5041F6285C9F4FA9544191F0EBE3EDEF50412EAFA7AC4FA954412F6FEDF5EDEF504112A5B98450A954412F6FEDF5EDEF5041E6DB6F5E52A954412F6FEDF5EDEF50415D0868D953A95441B359C2CDEDEF50411121500754A95441CDCCCCCCEDEF50413333331354A9544148E17AF4ECEF50413333333355A95441092476CBECEF50417DA8822E55A95441584954AAECEF5041D434605455A95441E92D79BDEBEF5041D434605455A9544199BB7393EBEF5041F1ACD60A55A954410AD7A350EBEF50413333330355A9544148E17AB4EAEF5041B81E85CB53A95441CDCCCC6CEAEF5041333333D351A95441CDCCCC9CEAEF5041713D0A7750A95441D5BA3FC1E9EF50415A299B1550A95441492E04ECE8EF5041D0A5F5EA4FA9544185EB5108E8EF5041333333F34FA954418CFF1F89E7EF5041EC73631F50A954410590B55FE6EF5041B3AB18B450A954416970FF49E4EF50410B25B57251A95441CDCCCCDCE3EF5041333333D351A9544185EB5108E2EF5041713D0A8752A95441FD632E4EE0EF504185C46FFD53A9544152DD7544E0EF5041230CC70854A95441B6F85031E1EF5041332E012555A95441DDA2E4F8E1EF50414C5E7E0855A95441B3B07C6FE2EF504166D379DB54A95441BDD6C9E9E2EF5041D8020DAD54A954419C402499E3EF5041C412263854A954417077DA72E5EF5041230CC70854A954413E8C5630E6EF5041D434605455A95441BCDAE1EBE5EF504144D8458555A95441CDCCCCECE5EF5041713D0A8755A95441A91EA3D7E5EF504158CCBB9355A954416866BDE4E4EF504138503B4156A95441E1310C69E4EF50410AC49D6F56A9544185EB5158E3EF50413333331357A954417C2FD29EE2EF50411B2BA03C57A95441F0F4F101E1EF50413C84F11A58A9544103935DB9E0EF50413C84F11A58A9544185EB51B8E0EF5041B81E851B58A95441994D80B5E0EF50413C84F11A58A9544152DD7544E0EF50413C84F11A58A95441038F56F1DEEF5041419D74BE57A954410AD7A330DEEF5041713D0A9757A95441E17EF7DDD9EF5041141173D157A95441E64C1EAFD9EF504176374ED757A95441A17E7FA5D8EF50418909032758A9544107212E5DD8EF5041FA74B63C58A9544183C328A5D6EF5041AB9FCC0759A95441BC581DECD5EF50415823B67558A9544156E046C7D4EF50413E1E32B557A954412F43D50CD3EF5041D1B2539256A95441D155BCF1D2EF50410765B7FE56A95441D155BCF1D2EF50413C84F11A58A954414B2CA77FD3EF5041B5D29C525AA95441CB0BAC8AD3EF5041B502D2555AA9544119DB8D91D3EF50419AE4D2575AA95441A87B553DD4EF504118CCC4825AA9544165EB8656D4EF504174302A915AA9544148E17A94D4EF5041333333A35AA954418992A6E7D4EF50412EB417E45AA954417EA1EE88D5EF5041E6E040405BA95441FCB39ED0D5EF504139F7DC995BA954410AD7A380D6EF5041333333235CA954410AD7A370D7EF5041B81E856B5CA95441E46271B6D7EF5041BEBE5F0B5DA9544193E562C1D7EF5041BA17F7195DA95441C9049DDDD8EF50412122B5785DA954419B2FD7FFD8EF504117BCC7A15DA9544148E17A44D9EF5041B81E85BB5DA95441AE03D165D9EF504117BB261C5EA954412D2078CAD9EF50413144EF945EA9544135319558DAEF5041CB7E049E60A954413D40E45EDAEF504154CA8FBD60A9544148E17A94DAEF5041B81E851B61A95441F42D12ACDAEF50418C73753F62A954412DB8D9D2DAEF5041FC285B0163A954415C5CC672DBEF5041AA7B6F0064A95441CAA3F21CDCEF50411182DC0F65A95441A06F0991DCEF5041EB074C3E65A954414367199FDDEF5041EB074C3E65A9544148E17A64DDEF5041B81E854B64A954417AD53D02DEEF504127E0F9A063A954410C9C010CDEEF5041B9D7F49363A95441AACE2011DEEF5041BD1FE29063A954410AD7A390DEEF5041713D0A0763A954410CC5375FDFEF5041CF6BB9E362A95441B1D61615E0EF50416FB919A762A954411D030F90E1EF50416FB919A762A9544126F92746E2EF5041B81E85CB62A9544185EB5168E2EF5041B81E85CB62A954413C496518E3EF5041F36291F562A95441FC39C569E3EF5041B1C6D70563A95441C75F5EB5E4EF50416FB919A762A954410590B55FE6EF504142ABFC1862A95441D0B54EABE7EF504108AF5B4862A95441E0D788C7E8EF5041B9D7F49363A954419FCACA68E8EF504171FEEC0E65A9544174AB904CE7EF5041883144B966A95441918419DFE6EF504177982CDD67A95441CDCCCCDCE6EF5041713D0AE767A95441CDCCCC5CE8EF5041B81E859B68A95441771D3884E8EF5041FFBF2BBE69A95441E0D788C7E8EF5041A1A96ECB6AA95441E0D788C7E8EF5041A90E06566CA9544185EB51F8E8EF5041713D0AB770A95441D5233BF5E8EF5041D605E9D070A95441A7DBE7F6E8EF5041545CAEE670A95441E0D788C7E8EF504106CA1A9A74A95441D0B54EABE7EF504165C3BB6A74A95441A01BC798E7EF50419A5C615E74A95441CDCCCC3CE7EF5041B81E856B74A954410AD7A340E6EF5041713D0A8773A9544158FBFB0FE6EF50419EF0B08472A954419E85F700E6EF5041CB88A66172A95441ECEB1407E6EF50412FBC6B5572A9544185EB51F8E5EF5041713D0A0772A954415D2A259DE6EF50410BED08F170A954416C9A73BEE6EF5041AC44322970A95441671CECE9E6EF504154C1D74F6FA954410AD7A360E7EF5041713D0AD76BA9544148E17AC4E6EF5041B81E854B6AA95441699E68E7E5EF5041F991F20D6AA95441367B39A2E5EF5041F991F20D6AA954417835566DE5EF504199C0F2EB69A9544148E17A14E5EF5041333333D369A9544148E17AF4E3EF5041713D0A0769A95441CDCCCCECE2EF5041F6285CBF68A9544184FECA49E2EF50418437F77967A95441F0F4F101E1EF50418265FA9268A95441B1D61615E0EF5041F991F20D6AA954414ACC58B6DFEF5041F991F20D6AA9544142BB3B28DFEF5041A9BA8B596BA9544142BB3B28DFEF50419ADD24A56CA9544183C8F986DFEF50410AF9FF916DA954418336D2B1DFEF5041E2E39B136FA9544148E17AD4DFEF5041713D0A976FA954413787B1F4DFEF50413814DB8870A95441565367FDDFEF5041B3554FB770A954411C7861FCDFEF50418EC18FC270A9544148E17A04E0EF5041F6285CFF70A954419A55D3F3DFEF50415240AB2071A954419A4F08CEDFEF50414D9064C072A954419A4F08CEDFEF50415DB29EDC73A95441923EEB3FDFEF504198F3121576A95441607F8C2ADFEF5041BB8E3B1E76A954410AD7A320DFEF5041713D0A5776A95441CDCCCC3CDEEF5041F6285C9F76A9544185BDBF0BDEEF50415F99259976A95441BC1852F4DDEF5041A00430A376A95441E6F2B8A8DCEF50410F200B9077A9544181D7DDBBDBEF50411731281E78A95441242B09F3DAEF5041EF3F7D6E78A95441CDCCCC7CDAEF5041333333D378A95441AB240D3DDAEF5041843788F678A95441DD9CC8B2D9EF50410854C16979A9544119884CF5D8EF50417F80B9E47AA95441AF5974ECD8EF5041202377F37AA95441CDCCCCCCD8EF5041B81E858B7BA954416DBF7676D8EF504119CE1DB87BA9544111772F67D8EF5041EE9B94D17BA954410DC12859D7EF50418795E16B7CA95441A9729B0BD7EF504186CAECFE7CA95441744D37ECD6EF504188D6A9DA7DA954419D2CB797D6EF504188D6A9DA7DA95441CDCCCC8CD6EF5041F6285CEF7DA9544193FF7CE6D5EF504188D6A9DA7DA95441CEE745C0D4EF504188D6A9DA7DA9544148E17AD4D3EF5041F6285CEF7DA95441AE10116AD3EF504188D6A9DA7DA95441E8DCCA38D3EF504188D6A9DA7DA95441B265B303D3EF5041E009C1C67DA954410AD7A360D2EF5041713D0AA77DA9544185EB5188D1EF5041333333537DA95441BD6AD4F5D0EF504169D98DCF7CA95441B989DA42D0EF5041F6ACB15F7CA95441FADC2C51CFEF5041F18B10057CA95441D6B4D6C6CEEF5041897CF9D27BA95441454CC539CEEF5041B2B0108F7CA95441E6522469CEEF504153B76FBE7CA95441E6522469CEEF504199E96D967DA95441CDCCCC7CCEEF5041F6285CBF7DA95441DF37658ACEEF5041500CD4707EA95441096141F7CEEF50415FFC42267FA95441EF067791CEEF5041F377FBAD7FA95441B5061A3BCEEF5041EB6D674680A954416DF095BACDEF5041039DCB5981A954410AD7A350CDEF5041B81E85DB82A9544185EB5148CCEF5041713D0A9784A95441536F096FCCEF504173A1029885A9544118264EADCCEF50419BE8537C86A9544148E17A14CDEF5041F6285C8F86A95441CE9180B5CEEF50415E85A2B285A954414A6EFF55CFEF50414BAB231285A95441B989DA42D0EF50417D96A75484A954414EA2B52FD1EF504112AF824185A95441F7B931EDD1EF504153BC40A085A95441EFA8145FD1EF5041FCD3BC5D86A95441F987C808D1EF50417C86C6A286A9544185EB51C8D0EF5041B81E85FB86A9544107CABA6DD0EF50415EA9B71F87A9544111725E85CFEF50415401140888A95441C8B87B6FCFEF504133D229B788A954416ECDDA83CFEF504125A2E06B89A9544172F8C397CFEF50415872811C8AA95441080B1DDFCFEF504168F5FBC28AA954416401DBF4CFEF5041E166C5CA8AA954415E40AA17D0EF50416BF43CD78AA95441889E5600D1EF5041425A04FE8AA954411AC84E7BD2EF5041FE5D632D8BA95441CC5A2426D3EF5041B1CCB8718BA9544185EB5138D3EF5041F6285C6F8BA95441CA0B3F56D3EF504152ADF6848BA9544163E62968D3EF50413F6B218C8BA9544182D88C42D4EF5041572F7CE38BA95441967BF165D4EF5041544B18C78BA9544145C0D574D4EF5041355326BB8BA95441B693D1AFD4EF50417F92AC628BA9544115DA8CB2D4EF50410BEDA25D8BA95441D5B9EFB4D4EF504163503C598BA95441C7138112D5EF50419A4288408AA95441C7138112D5EF5041732107008AA9544148E17AF4D4EF5041713D0A1789A95441610BBA72D6EF50415713CB9887A95441F943D8BCD6EF504129E2D9EB86A954414362B3A9D7EF5041E5E5381B87A9544178B89809D9EF50417A3C3CEF86A9544152550E92D9EF5041D2F73B6C86A95441E4ADE540DAEF504153BC40A085A954411077CDDEDAEF50415DD54C5185A95441E7C4AB0DDBEF5041AC01202D85A954410072C02EDBEF5041A670040185A9544185EB5178DBEF50413333334384A9544185EB5118DBEF5041713D0A1783A954411ACD1F5DDBEF5041B93EEC5582A954411ACD1F5DDBEF5041A14ED4EC81A9544181D7DDBBDBEF5041F936582F81A954416D328366DCEF5041E8A794BD80A9544148E17AA4DCEF5041713D0A7780A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463445 - 271326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000005501000048E17A34D7EF5041713D0AE78BA9544185EB51E8D4EF5041AE47E16A8FA9544185EB5108D3EF5041F6285C9F8EA9544148E17A64D1EF5041AE47E14A8EA95441CDCCCC8CD0EF5041333333638EA954410AD7A360CFEF5041333333338EA9544185EB5188CEEF5041F6285C9F8EA9544148E17AA4CDEF5041713D0A0790A9544185EB5178CCEF5041F6285CEF8FA9544185EB51A8CCEF5041713D0AC78DA95441CDCCCCFCCCEF5041F6285CDF8AA95441CDCCCCFCCCEF5041333333F388A9544185EB51D8CCEF5041333333D387A9544148E17A24CCEF5041B81E855B87A954410AD7A310CBEF5041F6285C0F88A9544148E17A74CAEF50413333338389A95441CDCCCCCCC9EF5041333333C38BA9544148E17AC4C8EF5041713D0AF78DA9544148E17AC4C5EF5041AE47E17A91A9544185EB5118C6EF5041713D0AB791A95441CDCCCC9CC6EF5041AE47E1FA92A954410AD7A380C7EF5041F6285C3F94A954410AD7A310C8EF5041713D0AB794A954410AD7A310C8EF50413333335395A954410AD7A380C7EF5041AE47E12A96A95441CDCCCCDCC5EF5041713D0AF796A954410AD7A340C5EF5041F6285C4F96A95441CDCCCC2CC4EF5041713D0A9796A9544148E17AB4C3EF5041F6285C6F97A9544148E17AC4C2EF5041713D0A1798A9544185EB5128C2EF50413333337399A95441CDCCCC1CC2EF5041713D0AA79BA95441CDCCCC8CC1EF5041F6285CAF9CA954410AD7A310C2EF5041333333F39DA95441CDCCCCBCC1EF5041AE47E18A9FA9544185EB51D8C0EF5041333333C3A0A954410AD7A3C0C0EF504133333303A9A954413D0AD7F3C2EF504114AE4741ADA95441CDCCCC2CC4EF5041F6285C8FADA9544185EB51F8C4EF5041713D0A87ACA9544148E17A64C5EF504133333363A9A9544185EB5158C5EF504133333313A8A9544166666676C6EF50411F85EBF1A6A954410AD7A3C0C6EF5041333333E3A7A95441CDCCCC2CC7EF5041AE47E1CAAAA9544185EB5198C7EF504133333373ABA9544148E17A14C7EF5041713D0A57ACA95441CDCCCCFCC6EF5041F6285CFFACA954410AD7A300C9EF5041333333F3AFA95441CDCCCCBCCAEF5041AE47E16AB0A9544185EB5118CCEF5041333333F3AFA9544185EB5148CCEF5041AE47E1AAAFA954410AD7A360CFEF5041F6285CEFB0A9544148E17AE4D2EF504133333343B4A954410AD7A3B0D3EF5041713D0AD7B6A954410AD7A350D3EF5041AE47E1AAB8A9544148E17AC4D1EF5041AE47E17AB8A9544185EB5178CFEF5041713D0AB7B8A954410AD7A300CFEF5041F6285CEFB9A95441CDCCCC2CD0EF5041AE47E14ABBA9544185EB5188D1EF5041AE47E1AABBA954410AD7A380D3EF5041AE47E18ABDA954410AD7A310D4EF5041AE47E1DABEA95441CDCCCCFCD5EF5041AE47E1EAC0A9544148E17AF4D7EF5041713D0A57C1A95441CDCCCC8CD9EF504133333323C2A954410AD7A360DBEF5041713D0A87C1A9544185EB5138DCEF5041F6285C7FC0A95441CDCCCCACDDEF5041AE47E15AC0A95441CDCCCC7CE0EF5041AE47E19ABFA9544148E17AF4E0EF5041F6285C0FBEA9544185EB51E8E0EF5041F6285CEFBCA954410AD7A3B0DFEF5041713D0AB7BBA9544148E17A04E0EF5041713D0A67BAA9544148E17AC4E0EF5041713D0A77B9A9544185EB5168E2EF5041AE47E10AB9A95441CDCCCC1CE3EF5041F6285C2FB9A95441C3F528ACE3EF5041B81E859BB9A954410AD7A330E4EF5041F6285CAFBAA95441C3F5280CE4EF5041713D0A47BCA954410AD7A3B0E2EF5041B81E857BBEA95441C3F5281CE3EF5041B81E859BBFA9544185EB51C8E2EF5041F6285CDFC0A954410AD7A310E0EF5041F6285CCFC4A9544148E17A04DDEF5041B81E852BC6A9544148E17A54DBEF5041F6285CCFC7A95441000000F0D9EF5041B81E85DBC8A95441713D0A87D8EF5041EC51B81ECAA95441C3F528ACD7EF5041B81E850BCBA9544185EB5118D6EF50410AD7A300CCA95441F6285C5FD2EF504152B81E35D1A95441C3F5280CDBEF5041713D0A27CAA954410AD7A3E0DCEF5041B81E851BCAA954410AD7A300DEEF5041713D0A07C9A9544185EB5168DFEF5041B81E853BC8A9544185EB5158E0EF5041B81E85EBC6A95441C3F5280CE1EF504133333323C5A954410AD7A350E2EF5041713D0AC7C3A9544148E17AF4E3EF5041713D0A67C3A95441C3F5288CE5EF5041713D0A67C3A954415C8FC275E7EF5041295C8FE2C1A95441B81E853BEEEF504152B81E35BEA95441295C8FB2F2EF5041AE47E17ABAA95441713D0A37F5EF50410AD7A360B8A954410AD7A320F7EF504185EB51C8B6A9544185EB5178FAEF50419A999939B3A954410AD7A38000F05041F6285C5FADA95441C3F5283CFFEF5041713D0AF7ABA9544185EB5188FEEF5041713D0A17ADA9544185EB51A8FCEF5041B81E853BADA9544148E17AC4FBEF5041B81E85CBADA95441C3F5285CFAEF504133333333AFA954410AD7A330F9EF5041F6285C0FB2A954410AD7A380F7EF5041713D0AB7B2A954410AD7A330F6EF5041F6285CFFB2A9544148E17A74F7EF5041F6285CFFAFA9544185EB51B8F8EF5041333333A3AEA95441C3F528BCFAEF5041713D0AF7ABA9544148E17A24FCEF5041F6285CDFA8A9544100000060FDEF5041C3F528ECA7A9544152B81E05FEEF504152B81E35A8A954418FC2F51800F0504100000020A9A95441C3F5285C00F05041B81E85FBAAA9544148E17A9401F05041F6285C0FACA954419A99994903F0504185EB5188AAA95441D7A3701D07F0504166666686A6A95441AE47E1EA08F0504114AE47F1A3A95441EC51B87E0CF0504114AE47D19EA954410AD7A3700DF05041713D0AC79CA9544148E17A840BF05041B81E85BB9CA9544148E17AE4F6EF5041B81E852B93A9544185EB5188F5EF5041B81E852B93A95441C3F5285CF4EF5041713D0A2794A9544148E17AF4F2EF5041333333C397A95441C3F5285CF1EF5041B81E851B9AA954410AD7A370EFEF5041B81E85CB9EA954410AD7A320EEEF5041713D0A27A0A954410AD7A3B0EBEF5041713D0A47A1A95441C3F5288CE8EF5041B81E85CBA1A9544185EB51D8E4EF5041713D0A77A1A954410AD7A3E0E4EF5041D7A370ADA0A95441EC51B84EE6EF50419A9999C9A0A95441B81E858BE8EF50411F85EB01A1A95441333333A3EAEF5041000000C0A0A95441D7A3702DECEF504133333333A0A954418FC2F588EDEF50411F85EB519FA9544152B81EB5EEEF50413D0AD7E39DA954410AD7A310F0EF50411F85EBE19AA9544152B81E75F1EF50418FC2F58898A95441AE47E13AF2EF5041EC51B8FE96A954410AD7A320F4EF5041F6285CBF92A95441D7A3706DF5EF5041EC51B83E8EA95441CDCCCC2CF7EF5041F6285CAF84A9544148E17A04F8EF5041333333937CA954410AD7A370F8EF5041B81E853B71A954410AD7A3A0F8EF5041F6285CEF68A9544185EB5108FAEF5041333333D35DA954410AD7A310FBEF5041B81E855B51A9544185EB51E8FBEF5041F6285C8F3EA9544148E17A84FCEF5041713D0A5737A95441CDCCCC5CFDEF5041B81E85EB33A954410AD7A3A0FEEF5041F6285CDF30A9544185EB51E801F05041F6285C5F2CA9544185EB515804F05041F6285CCF28A9544185EB513806F05041B81E85BB24A9544148E17AF407F05041333333F31FA954410AD7A36008F05041713D0AE71CA95441CDCCCC9C08F050413333336319A95441CDCCCC9C08F05041B81E852B15A9544185EB518807F05041B81E855B12A9544185EB517805F05041B81E852B0FA9544185EB51C803F05041B81E857B16A9544148E17A3401F05041F6285CEF1AA954410AD7A330FFEF5041713D0A171DA95441CDCCCC9CFFEF5041713D0A371EA95441CDCCCC4CFEEF50413333337321A954410AD7A3E0FDEF5041F6285C2F23A9544185EB5118FFEF5041B81E852B24A9544185EB519800F05041F6285CAF24A954410AD7A3E000F050413333333325A9544148E17AA400F05041713D0A7726A9544148E17AD4FDEF5041B81E85FB26A954410AD7A390FCEF5041B81E851B28A95441CDCCCCACFBEF5041B81E851B2BA954410AD7A370FBEF5041713D0A072DA9544148E17AA4FAEF5041B81E854B2EA9544148E17A44FAEF5041F6285C4F30A95441CDCCCCECF7EF50413333334333A954410AD7A390F6EF5041713D0AD735A95441CDCCCC9CF3EF5041F6285C4F39A954410AD7A370F2EF5041B81E85EB39A9544185EB5168F1EF5041F6285C2F3BA95441CDCCCCCCF0EF5041713D0A973CA9544185EB51F8EEEF5041713D0AD73EA9544185EB51C8EEEF5041F6285C5F41A95441CDCCCC7CEFEF5041B81E858B42A95441CDCCCC7CEFEF5041F6285CEF44A9544148E17AA4EEEF5041B81E851B46A9544185EB5148EDEF5041B81E850B47A9544185EB51B8ECEF5041F6285CAF48A954410AD7A3A0ECEF5041333333234AA9544148E17A54EDEF5041713D0AD74AA9544148E17A44EEEF5041333333934CA9544148E17A44EEEF5041713D0A474DA95441CDCCCCCCEDEF5041B81E858B4EA9544148E17AE4EDEF5041F6285C9F4FA95441CDCCCCCCEDEF5041333333D351A954410AD7A3F0EDEF5041713D0A5752A95441CDCCCCCCEDEF50413333331354A9544148E17AF4ECEF50413333333355A954410AD7A350EBEF50413333330355A9544148E17AB4EAEF5041B81E85CB53A95441CDCCCC6CEAEF5041333333D351A95441CDCCCC9CEAEF5041713D0A7750A9544185EB5158E9EF5041713D0AE74FA9544185EB5108E8EF5041333333F34FA9544185EB51A8E4EF5041F6285C1F51A95441CDCCCCDCE3EF5041333333D351A9544185EB5108E2EF5041713D0A8752A9544148E17A34E0EF50413333331354A9544185EB5148E1EF5041B81E854B55A954410AD7A300E4EF50413333334354A9544185EB5138E5EF5041B81E852B54A95441CDCCCCECE5EF5041713D0A8755A9544185EB5158E3EF50413333331357A9544148E17A14E2EF5041B81E855B57A9544185EB51B8E0EF5041B81E851B58A954410AD7A330DEEF5041713D0A9757A95441CDCCCCBCD9EF5041333333D357A9544148E17A74D6EF5041F6285CCF58A9544185EB5108D3EF5041F6285C8F56A954410AD7A3C0D2EF5041713D0A9757A9544148E17A74D3EF5041F6285C4F5AA9544148E17A94D4EF5041333333A35AA954410AD7A380D6EF5041333333235CA954410AD7A370D7EF5041B81E856B5CA9544148E17AC4D7EF5041B81E852B5DA9544148E17A44D9EF5041B81E85BB5DA9544148E17A34DAEF50413333337360A9544148E17A94DAEF5041B81E851B61A9544185EB51B8DAEF5041713D0AD762A9544185EB5138DCEF5041B81E853B65A95441CDCCCCACDDEF5041713D0A7765A9544148E17A64DDEF5041B81E854B64A954410AD7A390DEEF5041713D0A0763A95441CDCCCCECDFEF5041B81E85CB62A9544185EB5168E2EF5041B81E85CB62A9544148E17A94E3EF50413333331363A9544148E17A64E6EF50413333332362A954410AD7A3C0E7EF50413333338362A9544185EB5198E8EF5041F6285CDF63A9544148E17A14E8EF50413333338365A954410AD7A330E7EF5041F6285C7F66A95441CDCCCCDCE6EF5041713D0AE767A95441CDCCCC5CE8EF5041B81E859B68A95441CDCCCCBCE8EF5041F6285C5F6BA9544185EB51F8E8EF5041713D0AB770A95441CDCCCC8CE8EF5041B81E853B74A95441CDCCCC3CE7EF5041B81E856B74A954410AD7A340E6EF5041713D0A8773A9544185EB51F8E5EF5041713D0A0772A9544185EB51B8E6EF5041333333C370A954410AD7A360E7EF5041713D0AD76BA9544148E17AC4E6EF5041B81E854B6AA9544148E17A14E5EF5041333333D369A9544148E17AF4E3EF5041713D0A0769A95441CDCCCCECE2EF5041F6285CBF68A9544148E17A44E2EF5041F6285C6F67A9544148E17A54E1EF5041713D0A1768A954410AD7A340E0EF5041713D0A9769A9544185EB5138DFEF5041F6285C6F6AA954410AD7A3F0DEEF5041713D0A376CA9544148E17AD4DFEF5041713D0A976FA9544148E17A04E0EF5041F6285CFF70A9544148E17A74DFEF5041F6285C1F72A9544148E17AA4DFEF50413333336373A954410AD7A320DFEF5041713D0A5776A95441CDCCCC3CDEEF5041F6285C9F76A95441CDCCCC7CDDEF5041713D0A8776A9544185EB51C8DCEF5041B81E856B77A954410AD7A3C0DBEF5041F6285CBF77A95441CDCCCC7CDAEF5041333333D378A9544185EB5138D9EF5041713D0A8779A95441CDCCCCCCD8EF5041B81E858B7BA954410AD7A370D7EF5041F6285C3F7CA95441CDCCCC8CD6EF5041F6285CEF7DA95441CDCCCC6CD5EF5041B81E85CB7DA9544148E17AD4D3EF5041F6285CEF7DA954410AD7A360D2EF5041713D0AA77DA9544185EB5188D1EF5041333333537DA9544185EB5198D0EF5041B81E857B7CA9544148E17A64CEEF5041F6285CAF7BA9544185EB51F8CDEF5041B81E85AB7CA95441CDCCCC7CCEEF5041F6285CBF7DA954410AD7A3A0CEEF5041333333937FA9544148E17AD4CDEF5041B81E85FB80A954410AD7A350CDEF5041B81E85DB82A9544185EB5148CCEF5041713D0A9784A954410AD7A390CCEF5041713D0A7786A9544148E17A14CDEF5041F6285C8F86A9544185EB5178CFEF5041B81E854B85A95441CDCCCC5CD0EF5041B81E858B84A9544185EB5188D1EF5041333333F385A9544185EB51C8D0EF5041B81E85FB86A95441CDCCCC9CCFEF50413333337387A95441CDCCCC6CCFEF5041F6285C9F88A9544185EB51A8CFEF5041F6285CAF8AA9544148E17A24D2EF5041333333938BA9544185EB5138D3EF5041F6285C6F8BA954410AD7A310D4EF5041B81E850B8CA9544185EB5188D4EF5041B81E85AB8BA9544148E17A24D5EF5041B81E858B8AA9544148E17AF4D4EF5041713D0A1789A9544185EB51C8D6EF50413333334387A95441CDCCCCACD7EF50413333334387A95441CDCCCCFCD8EF5041B81E85FB86A95441CDCCCC1CDAEF5041713D0AE785A9544148E17A24DBEF5041B81E851B85A9544185EB5178DBEF50413333334384A9544185EB5118DBEF5041713D0A1783A95441CDCCCC9CDBEF5041333333A381A9544148E17AA4DCEF5041713D0A7780A95441CDCCCCFCDBEF5041713D0A077EA954410AD7A320DCEF5041F6285CFF7CA9544148E17A94DDEF5041B81E85AB7CA9544185EB51C8DFEF50413333335380A954410AD7A340E0EF5041B81E851B82A95441CDCCCC1CE0EF5041713D0A0784A954410AD7A380DFEF50413333333385A9544185EB5118DEEF5041333333D384A954410AD7A380DCEF5041B81E857B85A95441CDCCCC6CDBEF5041B81E859B86A954410AD7A3A0DAEF5041713D0A4789A9544185EB51E8DAEF5041B81E856B89A9544148E17A74DCEF5041333333F388A9544185EB5108DFEF5041333333B389A954410AD7A3C0DEEF5041333333D38AA9544148E17AA4DCEF5041F6285CCF8BA9544185EB5118DBEF5041B81E853B8CA95441CDCCCC3CD8EF5041713D0A878BA9544148E17A34D7EF5041713D0AE78BA9544116000000F6285C8FF8EF5041666666869DA9544185EB51C8F8EF50410AD7A3B09DA95441A4703D3AFAEF5041D7A370CD9DA9544185EB5108FBEF5041295C8FA29CA95441D7A3705DFCEF504148E17A149DA954417B14AE47FBEF5041666666869EA95441B81E85EBFAEF50410AD7A330A0A9544148E17AA4F9EF50411F85EB61A1A9544185EB5188FAEF50418FC2F528A3A95441F6285C8FFBEF50413D0AD753A4A95441D7A3701DFBEF5041A4703DDAA5A9544185EB51C8F9EF504114AE4721A6A95441C3F5282CF6EF50418FC2F5A8A4A954418FC2F5C8F4EF504166666676A7A954413D0AD773F4EF504133333393A7A954417B14AE57F3EF5041C3F528CCA6A954418FC2F588F4EF50411F85EB21A5A9544100000050F5EF504100000070A3A95441E17A145EF6EF50417B14AEF7A1A9544114AE47C1F6EF5041CDCCCC4CA0A95441333333B3F7EF50419A9999699EA95441F6285C8FF8EF5041666666869DA954411C000000CDCCCC5CD0EF5041333333A3AEA9544148E17AF4D1EF5041F6285C7FAEA95441B81E850BD2EF50415C8FC285ADA9544185EB51F8D0EF5041F6285CCFACA9544148E17A14D0EF5041AE47E18AABA95441CDCCCC5CD0EF5041713D0AE7A9A9544148E17A04D1EF5041F6285CAFA8A9544148E17AA4D0EF5041F6285C8FA7A95441CDCCCCDCD1EF5041713D0AE7A6A9544148E17AE4D2EF5041333333B3A7A95441CDCCCCDCD4EF5041713D0AA7A7A954410AD7A3B0D9EF5041AE47E1AAA9A95441CDCCCC4CDAEF5041713D0AA7AAA9544148E17A44D9EF504133333343ABA954410AD7A3A0D7EF5041F6285C4FABA9544185EB5198D6EF5041713D0A27ACA9544148E17AA4D6EF5041F6285C5FADA9544148E17A14D3EF5041713D0AA7ADA95441CDCCCC1CD4EF5041AE47E1EAAEA9544148E17A24D5EF5041713D0A87AFA9544185EB5178D5EF5041AE47E19AB0A9544185EB5108D6EF5041F6285C7FB1A9544148E17AB4D5EF5041AE47E17AB2A9544185EB5168D3EF504133333303B2A95441CDCCCC3CD2EF5041713D0A27B2A9544148E17AE4CFEF5041333333B3B0A9544148E17AE4CFEF5041AE47E17AAFA95441CDCCCC5CD0EF5041333333A3AEA95441
+</a>
+
+<b>
+0106000000010000000103000000010000007502000048E17AA4DCEF5041713D0A7780A954410FF1FB49DCEF5041986545267FA95441CDCCCCFCDBEF5041713D0A077EA95441C466B1FEDBEF504147F51CF97DA9544122DE3CEBDBEF5041C2D24AAB7DA954419F997B14DCEF50418A5ACD587DA954410AD7A320DCEF5041F6285CFF7CA954419F6B5745DCEF504110B515F77CA9544189E8FA49DCEF504119BBCEED7CA9544191F917D8DCEF5041B2B0108F7CA95441B4073566DDEF5041B2B0108F7CA954412DEC7C81DDEF5041985CCDAF7CA9544148E17A94DDEF5041B81E85AB7CA954416F8166CFDDEF504114104C0D7DA95441923EEB3FDFEF5041D2F484C77EA9544170833BBEDFEF5041E2C0754280A9544185EB51C8DFEF50413333335380A95441C511A9D6DFEF5041BB3A968980A954414367848BE0EF5041A95FF17A82A95441A260255CE0EF504175858AC683A95441BF1C64AADFEF50415DF0F2E284A954410AD7A380DFEF50413333333385A9544188206F79DFEF5041A3B6473185A9544133454A6FDFEF504112AF824185A95441A2A9E7C0DEEF5041E1B51D0085A9544185EB5118DEEF5041333333D384A95441C31C00CEDCEF50414B79945B85A95441E6F2B8A8DCEF5041B2B5E17085A9544181D7DDBBDBEF5041C2D71B8D86A954411ACD1F5DDBEF504186EC974A87A95441B3C261FEDAEF50415C12319688A95441B47DC0B3DAEF5041FA3FC45089A95441FAE69EDBDAEF50418D950E6589A95441B3C261FEDAEF50412B27AD5389A95441578ED336DBEF50412B27AD5389A9544169E4E5F5DBEF5041431AA51989A9544189E8FA49DCEF5041231690C588A95441EE03D636DDEF504164234E2489A954412B342DE1DEEF5041CB2D0C8389A95441923EEB3FDFEF50413238CAE189A954414DB617CDDEEF504106C92AA18AA954410AD7A3C0DEEF5041333333D38AA9544148E17AA4DCEF5041F6285CCF8BA9544185EB5118DBEF5041B81E853B8CA95441F1116DD7DAEF50416069822B8CA95441E4ADE540DAEF5041347D9D498CA95441181E49BBD9EF5041561268E58BA95441CDCCCC3CD8EF5041713D0A878BA9544148E17A34D7EF5041713D0AE78BA95441A7931B21D6EF504132AF568C8DA95441001022E3D4EF50417EE04B9E8FA95441D2010555D4EF504117D68D3F8FA9544165F35059D3EF504124D0B3C18EA9544112279D44D3EF5041DAB2ECB88EA95441132F962AD3EF50419399E3AD8EA954414D47178ED2EF504155DFC3868EA9544193E64BA0D1EF5041FD8EEA568EA95441808D3972D0EF50416EBE11828EA95441C1C34B54D0EF50412D072A5A8EA954410AD7A360CFEF5041333333338EA954417733D5D6CEEF5041FD841A788EA954414D5DE2C7CEEF50416EBE11828EA95441DE4107DBCDEF50411FE7AACD8FA954413D9AD2C8CDEF50411FE7AACD8FA9544148E17AA4CDEF5041713D0A0790A9544185EB5178CCEF5041F6285CEF8FA954412D196E8FCCEF5041F8AA70E58EA954412D196E8FCCEF5041ECB653238EA954412D196E8FCCEF50413C8EBAD78CA95441A822CDBECCEF5041425A04FE8AA954416F262CEECCEF50415C12319688A95441114BEAEFCCEF5041685B7A8D88A9544185EB51D8CCEF5041333333D387A9544148E17A24CCEF5041B81E855B87A95441AAE29325CBEF5041448FB50188A9544142CA2F0ECBEF5041BAA3331588A9544189273EE8CAEF50413A3D8D6F88A95441795281C4CAEF50416AF5A5C488A95441CDDAF956CAEF5041DB4F469F8AA95441F7B4600BC9EF5041ABA995C48DA95441C3F5654DC8EF5041946790828EA954412AE4A034C7EF5041C15E88CB8FA95441FAFDB714C6EF504195F1DD1C91A954410EB134FAC5EF5041626D6EA191A9544185EB5118C6EF5041713D0AB791A954415B131E8FC6EF504197106FD992A954411B6D8DA3C6EF5041EF40FAF292A95441648B6890C7EF50419F69933E94A95441787D4A9CC7EF5041054E575694A954410AD7A310C8EF5041713D0AB794A954410AD7A310C8EF504188030A3F95A954418799851EC8EF5041CA88CD5A95A954413A05B978C7EF504139A4A84796A9544104E67E5CC6EF504107B9240597A954416F9D671AC6EF50414E3315D996A95441CDCCCCDCC5EF5041713D0AF796A954410AD7A340C5EF5041F6285C4F96A95441AA02CC1FC5EF50417606E55796A95441A4A70A24C4EF504141B5C5D596A9544126A2F4F4C3EF50412BEC70FB96A9544148E17AB4C3EF5041F6285C6F97A95441E82AD1E5C2EF5041249EBFFF97A95441CAEFDEACC2EF5041DE42AD4B98A9544185EB5128C2EF50413333337399A954418629C427C2EF5041EE744D8E99A95441EB6D544AC2EF50415A2DF0E79AA95441DEBF761EC2EF504124619A559BA95441CDCCCC1CC2EF5041713D0AA79BA95441200AE2E0C1EF5041116305159CA95441BE5F37BCC1EF5041F46705F19CA95441C8C613D5C1EF50410038E5609DA954410AD7A310C2EF5041333333F39DA95441E374A303C2EF50412DC86B329EA95441256AF51AC2EF504131985C9B9EA9544131F5CFD4C1EF504187231E169FA95441CDCCCCBCC1EF5041AE47E18A9FA95441D7C9084AC1EF50413231C227A0A95441F02EB7D5C0EF504189E67CABA1A954418477F9D4C0EF5041988F95EDA1A954411548BBFEC0EF50416D1EA43BA3A9544157AACFCEC0EF504117654813A4A95441694B00CDC0EF5041CE0FB8B4A4A954413C4791C7C0EF5041C9AD5799A6A9544159445CCFC0EF50411F8C10EFA6A9544159445CCFC0EF5041FDC2C6C8A8A954411D59D88CC1EF504174EFBE43AAA954412D7B12A9C2EF5041D52D337CACA95441C293ED95C3EF504144490E69ADA95441DD154B4AC4EF504144490E69ADA954418AE45F5AC4EF5041739D2B54ADA9544126AFC882C4EF5041163BF1DAACA9544108278CEFC4EF5041B6E96E92ACA9544185EB51F8C4EF5041713D0A87ACA9544148E17A64C5EF504133333363A9A9544185EB5158C5EF504133333313A8A95441E6A0BAB7C5EF5041D248B9B2A7A9544164DF1F2DC6EF50411F8C10EFA6A9544140C16253C6EF5041FB6D5315A7A9544166666676C6EF50411F85EBF1A6A95441B74FC9B1C6EF504167FBECB2A7A95441D3FAFA19C7EF5041FDC2C6C8A8A95441D3FAFA19C7EF5041D4E85F14AAA954417619224EC7EF504105F50FFFAAA9544185EB5198C7EF504133333373ABA95441F3875D75C7EF5041FA679BAFABA954413A05B978C7EF5041E11BB7BEABA95441D3FAFA19C7EF5041163BF1DAACA95441472E7F66C7EF5041DFBC3B9AADA9544150BA75CAC8EF50412FDFCFA3AFA954417D574A3FCAEF5041879B9F2FB0A954418C79845BCBEF5041879B9F2FB0A95441BFD7532BCCEF504159E08FD6AFA9544185EB5148CCEF5041AE47E1AAAFA9544164529D6DCCEF5041E83D27BAAFA95441589F1DA7CCEF50417F8A82A1AFA9544195CF7451CEEF5041879B9F2FB0A9544128F96CCCCFEF50412FB31BEDB0A9544136E9B6B5D1EF504129965B12B3A95441AD8AAC24D2EF50413A537034B2A954410C3BAFE3CFEF5041CA262DBBB0A954410C3BAFE3CFEF5041D0D06479AFA95441E854D1FACFEF5041B7A6D652AFA95441CDCCCC5CD0EF5041333333A3AEA95441DFE99C64D0EF5041A85D83A2AEA95441F501D668D0EF5041068B799BAEA954419882EEF4D1EF50411180777AAEA95441781825FED1EF50416A28A816AEA95441A9D96203D2EF50413D458EBDADA9544154842373D1EF504108846738ADA95441A04F301AD1EF504185D0CEE5ACA9544185EB51F8D0EF5041F6285CCFACA954410F0328E6D0EF5041A2F57DB5ACA954416DA3CBD7D0EF5041B32E28A8ACA95441E43D1848D0EF5041872F63D4ABA9544148E17A14D0EF5041AE47E18AABA95441D1C8D414D0EF5041605BD788ABA9544110ECF804D0EF504125677871ABA95441F1508C47D0EF50418F3D35F8A9A95441507D7369D0EF5041B23B86CFA9A95441640497BAD0EF5041C48FB438A9A95441E58C57F5D0EF5041368A7FCBA8A95441705415F9D0EF50410C7685C1A8A95441A1AF01BCD0EF50410294F0D5A7A9544148E17AA4D0EF5041F6285C8FA7A95441891B9CEED0EF5041C3AD6867A7A95441F308E8CBD1EF5041921C34CEA6A95441C861B00DD3EF5041A942EE95A7A954413D0AB8DFD4EF504115D106A1A7A95441CE9CA0FED7EF504152079ECCA8A95441AA57FC82D9EF5041179C3F89A9A954415F94E196D9EF50416AD520A0A9A954410AD7A3B0D9EF5041AE47E1AAA9A95441FE7D3ED9D9EF5041501672ECA9A95441999AE760DAEF5041EF927488AAA95441819DE544DAEF50414C4B479AAAA95441CDCCCC4CDAEF5041713D0AA7AAA9544148E17A44D9EF504133333343ABA95441EB35C6B1D7EF5041A11DDD4EABA9544151D1E163D7EF5041E3F0EF80ABA95441D0958E9BD6EF5041B4106624ACA95441D0958E9BD6EF504102DA2D7AACA9544148E17AA4D6EF5041F6285C5FADA954412EED972FD5EF504118E6AA7CADA95441CB12FA2ED3EF50413D458EBDADA954416D6239BFD3EF5041D92BE658AEA95441C2B7784FD4EF5041129E56FFAEA95441874C1A0CD5EF5041CC1F1B58AFA9544106AA561AD5EF5041DFAC0881AFA9544148E17A24D5EF5041713D0A87AFA95441811F415CD5EF5041E6BF8A3EB0A954414CCEDE64D5EF504199165057B0A9544112638021D6EF504127DEFF8DB1A954419AC18AB2D5EF5041AD431C82B2A954417888F386D4EF50416301BA55B2A954415B09D33DD3EF50415DF24808B2A954410AB4BDCDD2EF50414956B215B2A954410A60A472D2EF50415FEC9820B2A95441FB6A7B0ED2EF5041C81A206BB3A95441E0DA8560D2EF5041662648C6B3A9544148E17AE4D2EF504133333343B4A954410A427FF7D2EF50416D2E8680B4A95441725C1B21D3EF5041632846FFB4A95441F6D320B4D3EF5041C8EC6AB6B6A954416738DCAED3EF504149B049D1B6A954410AD7A3B0D3EF5041713D0AD7B6A95441EACC656FD3EF50419BD8FC14B8A9544139607A50D3EF50411596B2B2B8A954416EB9A513D3EF50419F6C7DA3B8A9544172FE300AD2EF504159925383B8A954414907E771D1EF504159925383B8A95441F4F0FB87D0EF504103B8409BB8A9544128F96CCCCFEF50411596B2B2B8A9544159E4F00ECFEF504111B94BFEB9A954413FFAAD13CFEF5041E9596705BAA954418864142CD0EF5041C5C60B4ABBA954419F256547D1EF504188E54379BBA95441E171E183D1EF50412B56A7A9BBA9544185EB5188D1EF5041AE47E1AABBA954419FB7A397D1EF50417FF475B9BBA954410E414034D2EF504126FDBF36BCA954413EF178BDD2EF5041BBC21FD1BCA954410AD7A380D3EF5041AE47E18ABDA954416D619E9CD3EF5041EADF29CCBDA954417A6D38AFD3EF5041632D17E1BDA95441ADF8E74BD4EF50412646761ABFA95441D0E82BDCD4EF5041FAA93BB5BFA95441B89D8F59D5EF5041C46B8B19C0A954418E7F8037D6EF504117527CF7C0A9544165638E59D7EF5041AE90C535C1A9544193E562C1D7EF5041AE90C535C1A95441300F5B3CD9EF50417CA541F3C1A95441F323D7F9D9EF50417CA541F3C1A95441FEA9A683DAEF504132C3CDD0C1A954410AD7A360DBEF5041713D0A87C1A95441B6BDDBA5DBEF5041A4BD6A32C1A95441D25A8DD3DBEF50416D8307D7C0A95441E9B2B704DCEF5041615772BEC0A9544185EB5138DCEF5041F6285C7FC0A95441CDCCCCACDDEF5041AE47E15AC0A954410361CDC9DEEF50412820E10EC0A9544183C8F986DFEF50413764CDBABFA95441C310A28DE0EF5041D2F63F63BFA9544148E17AF4E0EF5041F6285C0FBEA9544185EB51E8E0EF5041F6285CEFBCA954410AD7A3B0DFEF5041713D0AB7BBA954414ACC58B6DFEF504171412BA0BBA954414ACC58B6DFEF5041FBDD851ABBA95441A373EAF8DFEF5041488D6295BAA9544148E17A04E0EF5041713D0A67BAA9544172CA2040E0EF5041FCD97A1CBAA95441F3E3D473E0EF50414AB5ECCEB9A9544107528388E0EF504182B0FFC1B9A9544148E17AC4E0EF5041713D0A77B9A9544184A47F2AE1EF504118FDC15CB9A954415F10CDEEE1EF5041DB9911E2B8A95441532249ACE2EF50417CA07011B9A9544177DCAE9DE4EF5041042FA52EB5A954413EE5DEAEEDEF504105CF1275A0A95441D2A66A76EBEF504115F14C91A1A95441E50AB2EDE9EF504115F14C91A1A95441C3F5288CE8EF5041B81E85CBA1A95441DA067212E8EF5041DBF4ABC0A1A954415D248205E7EF5041DBF4ABC0A1A9544109864F2DE6EF5041F3A06E95A1A9544185EB51D8E4EF5041713D0A77A1A95441C0F430D9E4EF50419AE7ED61A1A954417EA8F8C3E2EF50419AE7ED61A1A95441DC5CC62CE0EF5041DBF4ABC0A1A95441BC1852F4DDEF5041840C287EA2A954411ACD1F5DDBEF5041752FC1C9A3A95441B27D8E96D8EF5041B35F1874A5A95441AA6C7108D8EF5041AB4EFBE5A4A95441C4249EA0D5EF504126585A15A5A954412AEA8897D3EF5041E44A9CB6A4A95441EFA8145FD1EF5041E44A9CB6A4A95441B3BD901CD2EF50410E25036BA3A954411AC84E7BD2EF5041840C287EA2A95441F7B931EDD1EF50419AE7ED61A1A954415EC4EF4BD2EF5041CBD271A4A0A954415BD50CDAD2EF504100ADD8589FA95441E8DCCA38D3EF5041CA8D9E3C9EA95441CAF0E7C6D3EF5041FC78227F9DA95441D2010555D4EF5041F46705F19CA95441C7138112D5EF50418D5D47929CA95441671AE041D5EF5041E734AE469BA9544108213F71D5EF5041521CD3599AA954416F2BFDCFD5EF504142FA983D99A954411CB96A46D6EF504177D4FFF197A954411CB96A46D6EF504100A8077796A9544183C328A5D6EF5041CA88CD5A95A9544124CA87D4D6EF50415E5CD5DF93A9544124CA87D4D6EF5041283D9BC392A9544152D8A462D7EF50417F251F0692A9544193E562C1D7EF50415C17027891A9544193E562C1D7EF5041EDFB268B90A9544193E562C1D7EF504117D68D3F8FA95441FAEF2020D8EF504167ADF4F38DA954418C19199BD9EF5041439FD7658DA95441A44C7045DBEF5041ABA995C48DA95441D39F603BDEEF5041ECB653238EA954417CB7DCF8DEEF5041ECB653238EA954411D030F90E1EF50416EBE11828EA95441015CFF85E4EF504117D68D3F8FA954410590B55FE6EF5041DED9EC6E8FA9544115B2EF7BE7EF5041DED9EC6E8FA954419FCACA68E8EF504117D68D3F8FA954414FF363B4E9EF50410FC570B18EA95441C61F5C2FEBEF504117D68D3F8FA95441B842F57AECEF504150D22E108FA95441CF754C25EEEF5041B0CBCFE08EA95441629F44A0EFEF504150D22E108FA954410AB7C05DF0EF5041E5EA09FD8FA9544179D29B4AF1EF504187363C9492A954416BF53496F2EF5041283D9BC392A95441AC02F3F4F2EF50417D9B78368DA95441CCDFF131F6EF50415C6DCB7471A95441193283F8F8EF5041FF539A7056A954415473F730FBEF50417E2C4CDE3AA954416495314DFCEF5041ABF0C42230A9544165DA04B5FEEF50414EE135E226A95441F6BE29C8FDEF504114E5941127A95441C170C5A1FDEF5041E5E09D2827A95441EEEC74C2FCEF5041737137EF27A95441228873EEFBEF5041254CA2952AA954413A03EF8DFBEF50418167B4172CA954410AD7A370FBEF5041713D0A072DA95441C6FAF63DFBEF5041468C94572DA95441ED6839D2FAEF504180D18A062FA9544172E2EA51FAEF504170DE270730A9544148E17A44FAEF5041F6285C4F30A95441A8D13007FAEF504101009C9C30A954417E4D5EE5F9EF5041530841E030A95441A5B54E85F9EF5041599F504031A954417BD4D646F8EF504174D0B6D132A954410A1049DCF7EF5041BC57D2A633A95441D4F00EC0F6EF50419A8E888035A95441E925D9BAF6EF504133CC0B8735A954410AD7A390F6EF5041713D0AD735A954419B3DB810F5EF50411684409A37A954412A94BF9AF3EF50411200546339A95441F540E75EF2EF5041A92940013AA95441200EE9E1F1EF50414BC4639A3AA95441B71AF575F1EF50413FD3A61E3BA9544188488D03F1EF50411B5644593CA954416A14AED8F0EF5041967F907B3CA95441CDCCCCCCF0EF5041713D0A973CA9544117806677EFEF5041732ACB3A3EA95441E30D78FAEEEF50415EA8D51F3FA95441798AFAE7EEEF50413CBFC1B33FA95441C8A22ED4EEEF5041494024BF40A9544143632F21EFEF5041874427F341A95441CDCCCC7CEFEF5041B81E858B42A95441CDCCCC7CEFEF5041BE350AA042A95441B222F4B7EFEF5041D619A10243A95441B222F4B7EFEF5041A23F3A4E44A95441CDCCCC7CEFEF50411608ADBA44A95441CDCCCC7CEFEF5041F6285CEF44A954416A489C06EFEF5041C1505B9345A954418703BA9BEEEF5041467A4F5746A95441DC23CF7FEDEF50412DEB44E546A9544185EB5148EDEF5041B81E850B47A95441B7871213EDEF5041C731C4A647A954411F4DB3D9ECEF5041F8E7BB0A4AA954412F6FEDF5EDEF50412B1813B54BA95441527D0A84EEEF50413B3A4DD14CA9544183524937EEEF50415993CF6A4DA95441CDCCCCCCEDEF5041B81E858B4EA9544148E17AE4EDEF5041F6285C9F4FA9544191F0EBE3EDEF50412EAFA7AC4FA954412F6FEDF5EDEF504112A5B98450A954412F6FEDF5EDEF5041E6DB6F5E52A954412F6FEDF5EDEF50415D0868D953A95441B359C2CDEDEF50411121500754A95441CDCCCCCCEDEF50413333331354A9544148E17AF4ECEF50413333333355A95441092476CBECEF50417DA8822E55A95441584954AAECEF5041D434605455A95441E92D79BDEBEF5041D434605455A9544199BB7393EBEF5041F1ACD60A55A954410AD7A350EBEF50413333330355A9544148E17AB4EAEF5041B81E85CB53A95441CDCCCC6CEAEF5041333333D351A95441CDCCCC9CEAEF5041713D0A7750A95441D5BA3FC1E9EF50415A299B1550A95441492E04ECE8EF5041D0A5F5EA4FA9544185EB5108E8EF5041333333F34FA954418CFF1F89E7EF5041EC73631F50A954410590B55FE6EF5041B3AB18B450A954416970FF49E4EF50410B25B57251A95441CDCCCCDCE3EF5041333333D351A9544185EB5108E2EF5041713D0A8752A95441FD632E4EE0EF504185C46FFD53A9544152DD7544E0EF5041230CC70854A95441B6F85031E1EF5041332E012555A95441DDA2E4F8E1EF50414C5E7E0855A95441B3B07C6FE2EF504166D379DB54A95441BDD6C9E9E2EF5041D8020DAD54A954419C402499E3EF5041C412263854A954417077DA72E5EF5041230CC70854A954413E8C5630E6EF5041D434605455A95441BCDAE1EBE5EF504144D8458555A95441CDCCCCECE5EF5041713D0A8755A95441A91EA3D7E5EF504158CCBB9355A954416866BDE4E4EF504138503B4156A95441E1310C69E4EF50410AC49D6F56A9544185EB5158E3EF50413333331357A954417C2FD29EE2EF50411B2BA03C57A95441F0F4F101E1EF50413C84F11A58A9544103935DB9E0EF50413C84F11A58A9544185EB51B8E0EF5041B81E851B58A95441994D80B5E0EF50413C84F11A58A9544152DD7544E0EF50413C84F11A58A95441038F56F1DEEF5041419D74BE57A954410AD7A330DEEF5041713D0A9757A95441E17EF7DDD9EF5041141173D157A95441E64C1EAFD9EF504176374ED757A95441A17E7FA5D8EF50418909032758A9544107212E5DD8EF5041FA74B63C58A9544183C328A5D6EF5041AB9FCC0759A95441BC581DECD5EF50415823B67558A9544156E046C7D4EF50413E1E32B557A954412F43D50CD3EF5041D1B2539256A95441D155BCF1D2EF50410765B7FE56A95441D155BCF1D2EF50413C84F11A58A954414B2CA77FD3EF5041B5D29C525AA95441CB0BAC8AD3EF5041B502D2555AA9544119DB8D91D3EF50419AE4D2575AA95441A87B553DD4EF504118CCC4825AA9544165EB8656D4EF504174302A915AA9544148E17A94D4EF5041333333A35AA954418992A6E7D4EF50412EB417E45AA954417EA1EE88D5EF5041E6E040405BA95441FCB39ED0D5EF504139F7DC995BA954410AD7A380D6EF5041333333235CA954410AD7A370D7EF5041B81E856B5CA95441E46271B6D7EF5041BEBE5F0B5DA9544193E562C1D7EF5041BA17F7195DA95441C9049DDDD8EF50412122B5785DA954419B2FD7FFD8EF504117BCC7A15DA9544148E17A44D9EF5041B81E85BB5DA95441AE03D165D9EF504117BB261C5EA954412D2078CAD9EF50413144EF945EA9544135319558DAEF5041CB7E049E60A954413D40E45EDAEF504154CA8FBD60A9544148E17A94DAEF5041B81E851B61A95441F42D12ACDAEF50418C73753F62A954412DB8D9D2DAEF5041FC285B0163A954415C5CC672DBEF5041AA7B6F0064A95441CAA3F21CDCEF50411182DC0F65A95441A06F0991DCEF5041EB074C3E65A954414367199FDDEF5041EB074C3E65A9544148E17A64DDEF5041B81E854B64A954417AD53D02DEEF504127E0F9A063A954410C9C010CDEEF5041B9D7F49363A95441AACE2011DEEF5041BD1FE29063A954410AD7A390DEEF5041713D0A0763A954410CC5375FDFEF5041CF6BB9E362A95441B1D61615E0EF50416FB919A762A954411D030F90E1EF50416FB919A762A9544126F92746E2EF5041B81E85CB62A9544185EB5168E2EF5041B81E85CB62A954413C496518E3EF5041F36291F562A95441FC39C569E3EF5041B1C6D70563A95441C75F5EB5E4EF50416FB919A762A954410590B55FE6EF504142ABFC1862A95441D0B54EABE7EF504108AF5B4862A95441E0D788C7E8EF5041B9D7F49363A954419FCACA68E8EF504171FEEC0E65A9544174AB904CE7EF5041883144B966A95441918419DFE6EF504177982CDD67A95441CDCCCCDCE6EF5041713D0AE767A95441CDCCCC5CE8EF5041B81E859B68A95441771D3884E8EF5041FFBF2BBE69A95441E0D788C7E8EF5041A1A96ECB6AA95441E0D788C7E8EF5041A90E06566CA9544185EB51F8E8EF5041713D0AB770A95441D5233BF5E8EF5041D605E9D070A95441A7DBE7F6E8EF5041545CAEE670A95441E0D788C7E8EF504106CA1A9A74A95441D0B54EABE7EF504165C3BB6A74A95441A01BC798E7EF50419A5C615E74A95441CDCCCC3CE7EF5041B81E856B74A954410AD7A340E6EF5041713D0A8773A9544158FBFB0FE6EF50419EF0B08472A954419E85F700E6EF5041CB88A66172A95441ECEB1407E6EF50412FBC6B5572A9544185EB51F8E5EF5041713D0A0772A954415D2A259DE6EF50410BED08F170A954416C9A73BEE6EF5041AC44322970A95441671CECE9E6EF504154C1D74F6FA954410AD7A360E7EF5041713D0AD76BA9544148E17AC4E6EF5041B81E854B6AA95441699E68E7E5EF5041F991F20D6AA95441367B39A2E5EF5041F991F20D6AA954417835566DE5EF504199C0F2EB69A9544148E17A14E5EF5041333333D369A9544148E17AF4E3EF5041713D0A0769A95441CDCCCCECE2EF5041F6285CBF68A9544184FECA49E2EF50418437F77967A95441F0F4F101E1EF50418265FA9268A95441B1D61615E0EF5041F991F20D6AA954414ACC58B6DFEF5041F991F20D6AA9544142BB3B28DFEF5041A9BA8B596BA9544142BB3B28DFEF50419ADD24A56CA9544183C8F986DFEF50410AF9FF916DA954418336D2B1DFEF5041E2E39B136FA9544148E17AD4DFEF5041713D0A976FA954413787B1F4DFEF50413814DB8870A95441565367FDDFEF5041B3554FB770A954411C7861FCDFEF50418EC18FC270A9544148E17A04E0EF5041F6285CFF70A954419A55D3F3DFEF50415240AB2071A954419A4F08CEDFEF50414D9064C072A954419A4F08CEDFEF50415DB29EDC73A95441923EEB3FDFEF504198F3121576A95441607F8C2ADFEF5041BB8E3B1E76A954410AD7A320DFEF5041713D0A5776A95441CDCCCC3CDEEF5041F6285C9F76A9544185BDBF0BDEEF50415F99259976A95441BC1852F4DDEF5041A00430A376A95441E6F2B8A8DCEF50410F200B9077A9544181D7DDBBDBEF50411731281E78A95441242B09F3DAEF5041EF3F7D6E78A95441CDCCCC7CDAEF5041333333D378A95441AB240D3DDAEF5041843788F678A95441DD9CC8B2D9EF50410854C16979A9544119884CF5D8EF50417F80B9E47AA95441AF5974ECD8EF5041202377F37AA95441CDCCCCCCD8EF5041B81E858B7BA954416DBF7676D8EF504119CE1DB87BA9544111772F67D8EF5041EE9B94D17BA954410DC12859D7EF50418795E16B7CA95441A9729B0BD7EF504186CAECFE7CA95441744D37ECD6EF504188D6A9DA7DA954419D2CB797D6EF504188D6A9DA7DA95441CDCCCC8CD6EF5041F6285CEF7DA9544193FF7CE6D5EF504188D6A9DA7DA95441CEE745C0D4EF504188D6A9DA7DA9544148E17AD4D3EF5041F6285CEF7DA95441AE10116AD3EF504188D6A9DA7DA95441E8DCCA38D3EF504188D6A9DA7DA95441B265B303D3EF5041E009C1C67DA954410AD7A360D2EF5041713D0AA77DA9544185EB5188D1EF5041333333537DA95441BD6AD4F5D0EF504169D98DCF7CA95441B989DA42D0EF5041F6ACB15F7CA95441FADC2C51CFEF5041F18B10057CA95441D6B4D6C6CEEF5041897CF9D27BA95441454CC539CEEF5041B2B0108F7CA95441E6522469CEEF504153B76FBE7CA95441E6522469CEEF504199E96D967DA95441CDCCCC7CCEEF5041F6285CBF7DA95441DF37658ACEEF5041500CD4707EA95441096141F7CEEF50415FFC42267FA95441EF067791CEEF5041F377FBAD7FA95441B5061A3BCEEF5041EB6D674680A954416DF095BACDEF5041039DCB5981A954410AD7A350CDEF5041B81E85DB82A9544185EB5148CCEF5041713D0A9784A95441536F096FCCEF504173A1029885A9544118264EADCCEF50419BE8537C86A9544148E17A14CDEF5041F6285C8F86A95441CE9180B5CEEF50415E85A2B285A954414A6EFF55CFEF50414BAB231285A95441B989DA42D0EF50417D96A75484A954414EA2B52FD1EF504112AF824185A95441F7B931EDD1EF504153BC40A085A95441EFA8145FD1EF5041FCD3BC5D86A95441F987C808D1EF50417C86C6A286A9544185EB51C8D0EF5041B81E85FB86A9544107CABA6DD0EF50415EA9B71F87A9544111725E85CFEF50415401140888A95441C8B87B6FCFEF504133D229B788A954416ECDDA83CFEF504125A2E06B89A9544172F8C397CFEF50415872811C8AA95441080B1DDFCFEF504168F5FBC28AA954416401DBF4CFEF5041E166C5CA8AA954415E40AA17D0EF50416BF43CD78AA95441889E5600D1EF5041425A04FE8AA954411AC84E7BD2EF5041FE5D632D8BA95441CC5A2426D3EF5041B1CCB8718BA9544185EB5138D3EF5041F6285C6F8BA95441CA0B3F56D3EF504152ADF6848BA9544163E62968D3EF50413F6B218C8BA9544182D88C42D4EF5041572F7CE38BA95441967BF165D4EF5041544B18C78BA9544145C0D574D4EF5041355326BB8BA95441B693D1AFD4EF50417F92AC628BA9544115DA8CB2D4EF50410BEDA25D8BA95441D5B9EFB4D4EF504163503C598BA95441C7138112D5EF50419A4288408AA95441C7138112D5EF5041732107008AA9544148E17AF4D4EF5041713D0A1789A95441610BBA72D6EF50415713CB9887A95441F943D8BCD6EF504129E2D9EB86A954414362B3A9D7EF5041E5E5381B87A9544178B89809D9EF50417A3C3CEF86A9544152550E92D9EF5041D2F73B6C86A95441E4ADE540DAEF504153BC40A085A954411077CDDEDAEF50415DD54C5185A95441E7C4AB0DDBEF5041AC01202D85A954410072C02EDBEF5041A670040185A9544185EB5178DBEF50413333334384A9544185EB5118DBEF5041713D0A1783A954411ACD1F5DDBEF5041B93EEC5582A954411ACD1F5DDBEF5041A14ED4EC81A9544181D7DDBBDBEF5041F936582F81A954416D328366DCEF5041E8A794BD80A9544148E17AA4DCEF5041713D0A7780A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463568 - 1022765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2E5ADF350417B14AE073AA35441295C8FC2AAF35041A4703D1A25A3544114AE47C1A2F350413333335327A35441C3F5289CA8F350417B14AEE74FA35441D7A3709DA6F3504148E17A1450A35441333333C3A6F35041295C8F1251A3544166666696ADF35041713D0A977EA3544114AE47F1B7F35041CDCCCC0C7DA3544148E17A04AFF35041295C8F8241A3544166666646AEF35041B81E858B3CA354415C8FC2E5ADF350417B14AE073AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006A970705AFF3504127113A8641A35441886A5A7FAFF350416776FC6F41A35441E8025669C0F350419276DA263FA35441DE829EFBC0F3504125909F7E3FA35441ACE81836C9F35041B425DD4377A35441BB4A40B6C9F35041E7E9BC677AA35441A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA35441B480A35BDFF35041BA08B4BF2BA35441542344B4CAF350413A49054A2EA35441284ABBEFCBF3504111B8F5DD36A354417771DA33C1F350412C57246438A3544189C1E974C0F3504118E0FF0832A354419003025CC0F35041C47A88CD30A354419155F194B9F35041B32A798C31A3544160D1C0C6B9F350415B8D25E932A354412657BC1AADF35041C8D27BBD34A3544148E17A04AFF35041295C8F8241A354416A970705AFF3504127113A8641A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463568 - 3384606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2E5ADF350417B14AE073AA35441295C8FC2AAF35041A4703D1A25A3544114AE47C1A2F350413333335327A35441C3F5289CA8F350417B14AEE74FA35441D7A3709DA6F3504148E17A1450A35441333333C3A6F35041295C8F1251A3544166666696ADF35041713D0A977EA3544114AE47F1B7F35041CDCCCC0C7DA3544148E17A04AFF35041295C8F8241A3544166666646AEF35041B81E858B3CA354415C8FC2E5ADF350417B14AE073AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006A970705AFF3504127113A8641A35441886A5A7FAFF350416776FC6F41A35441E8025669C0F350419276DA263FA35441DE829EFBC0F3504125909F7E3FA35441ACE81836C9F35041B425DD4377A35441BB4A40B6C9F35041E7E9BC677AA35441A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA35441B480A35BDFF35041BA08B4BF2BA35441542344B4CAF350413A49054A2EA35441284ABBEFCBF3504111B8F5DD36A354417771DA33C1F350412C57246438A3544189C1E974C0F3504118E0FF0832A354419003025CC0F35041C47A88CD30A354419155F194B9F35041B32A798C31A3544160D1C0C6B9F350415B8D25E932A354412657BC1AADF35041C8D27BBD34A3544148E17A04AFF35041295C8F8241A354416A970705AFF3504127113A8641A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463640 - 243750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000070000000103000000010000000800000048E17A4439F05041713D0A27BBA95441C3F5284C34F05041713D0A67BAA9544148E17AD430F0504133333383BFA9544148E17A0434F05041B81E859BC5A95441A4703D1A35F05041E17A148EC4A954410AD7A3003BF05041B81E858BBDA954410AD7A3D03AF05041F6285CCFBBA9544148E17A4439F05041713D0A27BBA954410103000000020000002D000000B81E855B39F050419A9999B9B9A95441D7A3703D3BF05041B81E857BBAA95441D7A3706D3EF05041F6285CCFB7A954418FC2F5183FF050411F85EB01B6A954417B14AE2741F050410AD7A300B4A95441AE47E18A42F05041CDCCCC7CB3A9544148E17A144BF05041333333A3A8A9544148E17AD44CF05041333333C3A7A95441295C8F9255F05041CDCCCC8C9CA954411F85EB6156F0504148E17A7499A95441A4703D8A56F050417B14AED797A95441E17A14FE55F050413D0AD74391A9544148E17A2455F0504152B81E1589A954410000001055F050418FC2F54886A954417B14AE6755F050419A99994984A95441E17A14CE55F05041E17A14AE82A954413333330357F05041F6285C9F80A95441713D0A4756F050419A99992981A95441333333D353F05041B81E850B85A954410AD7A32052F050419A99998986A9544152B81E5549F05041295C8FC28CA9544114AE47113EF05041B81E85FB92A954413D0AD7E335F05041AE47E13A98A954410AD7A36031F050411F85EB019CA954419A9999192FF05041EC51B81E9FA954415C8FC2052EF0504114AE47D1A0A9544152B81EE52EF05041333333F3A1A95441000000202EF050419A999949A3A954418FC2F5382CF05041F6285C2FA3A95441666666862AF05041E17A143EA5A9544152B81ED52AF05041F6285C5FA6A954418FC2F5382CF05041D7A3701DA6A95441C3F528BC2CF050411F85EB11A8A954417B14AE5729F050418FC2F5D8AAA9544185EB510829F050411F85EBF1A8A9544148E17A7428F0504148E17A34A8A954418FC2F5F826F05041A4703D3AAAA9544114AE479125F0504166666626ACA95441CDCCCC3C24F050417B14AEF7ADA95441F6285C4F22F05041A4703D9AB0A954413D0AD7F323F050415C8FC2B5B2A9544114AE47A129F05041D7A3705DB6A95441666666062DF05041A4703DFAB7A954411F85EBF12FF05041000000B0B8A95441B81E855B39F050419A9999B9B9A95441150000006666668633F050419A999939B1A954411F85EB5133F050415C8FC295B1A95441AE47E1BA33F0504185EB5148B3A95441B81E85DB32F05041F6285C2FB5A95441D7A3708D34F05041A4703D9AB7A9544185EB51E832F050415C8FC245B8A95441C3F528AC31F05041666666F6B7A95441B81E85FB31F05041D7A370CDB5A954415C8FC25530F05041CDCCCC1CB6A954418FC2F5682FF05041713D0A57B5A95441000000202EF05041EC51B89EB4A954417B14AE672DF05041B81E853BB3A954410AD7A3D02DF0504133333383B2A954415C8FC2452CF05041F6285CFFB1A95441D7A3708D2BF050418FC2F5A8B0A95441CDCCCCDC2BF050417B14AEA7AEA95441CDCCCC2C2EF050418FC2F5E8AEA9544114AE47412FF050417B14AEC7ADA95441C3F5288C32F05041EC51B8CEAEA95441B81E85DB32F0504185EB5118B0A954416666668633F050419A999939B1A9544101030000000100000039000000C3F5285CFDEF5041F6285CCFD0A9544148E17A94FEEF5041F6285CFFD0A95441C3F5281C01F05041F6285CCFD0A9544185EB513803F05041333333A3D2A954417B14AEB70DF05041F6285C0FD5A95441E17A142E11F05041A4703DDACDA95441295C8FE214F05041D7A370EDC2A954418FC2F54818F05041CDCCCCDCBBA954418FC2F57819F05041C3F5281CBAA95441CDCCCCAC1AF050415C8FC255B8A9544148E17A341CF050415C8FC275B6A95441666666361FF0504148E17AC4B2A9544148E17AA420F0504114AE4721B1A954419A99994921F0504148E17A64B0A954419A9999A920F05041000000B0AEA95441A4703D5A1FF05041C3F5280CABA954413D0AD7B31DF0504152B81E75A6A95441295C8F3219F05041F6285C5F94A95441C3F5281C18F050419A99993991A954410AD7A3D016F05041F6285CCF8BA954410AD7A35015F05041F6285CCF8BA954410AD7A3D010F05041713D0AE797A9544148E17A240EF05041B81E85CB9EA9544185EB51C80CF05041B81E856BA1A9544148E17AC40AF05041333333B3A4A95441C3F528EC06F05041F6285C7FA8A9544148E17A8402F05041B81E85DBACA954410AD7A32003F05041713D0A37AEA954410AD7A3D001F05041713D0A87AFA9544185EB516800F0504133333323B0A954417B14AEF7FEEF5041F6285CFFAFA9544185EB51F8FCEF50415C8FC2F5B1A954417B14AEF7FAEF5041CDCCCCECB3A95441C3F5285CF7EF5041713D0A27B8A9544185EB5198F4EF5041F6285C0FBBA9544148E17A54F0EF504133333363BEA954410AD7A3D0ECEF5041B81E85BBC0A954410AD7A3B0E8EF5041B81E855BC3A954410AD7A3D0E3EF5041713D0AF7C6A9544148E17AC4E0EF5041713D0A37C9A95441E17A145EDEEF504185EB51A8CAA9544148E17A54E0EF5041C3F5283CCDA954410AD7A370E0EF5041713D0A97CCA95441C3F5283CE1EF5041F6285CEFCBA95441C3F5286CE1EF5041B81E85EBC9A954410AD7A3B0E2EF5041713D0A77C8A95441C3F528DCE3EF5041B81E85DBC7A954410AD7A360E4EF5041F6285CCFC7A95441C3F528FCE4EF5041713D0A77C8A9544148E17A74E8EF5041B81E85BBC9A954410AD7A310E9EF5041B81E859BCBA9544185EB51B8E9EF5041F6285C1FCCA9544114AE4711E9EF50417B14AEB7CCA95441A4703D7AEDEF504114AE4761CDA9544185EB5148F9EF5041713D0A27D0A9544185EB5198FAEF5041713D0A97CFA95441C3F5285CFDEF5041F6285CCFD0A954410103000000010000002400000014AE476152F05041C3F5282CC3A95441B81E851B55F05041713D0AE7C0A9544148E17AC456F05041D7A3705DBFA9544114AE47F157F05041295C8FD2BDA954413D0AD7E353F0504114AE4721BCA95441F6285CCF4AF05041F6285CDFBCA954410AD7A3B048F0504133333373BDA95441CDCCCC8C48F05041713D0A77BCA954417B14AE974AF0504100000010BCA95441CDCCCC0C4EF05041F6285C7FBAA9544185EB511850F05041F6285C4FB7A9544148E17A744EF05041333333F3B5A9544148E17A4451F05041AE47E11AB2A9544148E17AB456F05041713D0AF7AEA9544148E17A1460F05041AE47E18AABA95441EC51B82E65F0504152B81EC5A6A954413D0AD72368F050410AD7A340A4A9544148E17AD46FF05041713D0AB79AA954418FC2F5086DF050419A9999D998A954410AD7A38066F05041F6285C6F9DA954417B14AEE75DF050410AD7A320A2A95441713D0A074DF05041666666D6A9A954413333336342F050413D0AD793B6A95441F6285C9F3CF05041AE47E19ABDA95441E17A14DE3BF05041E17A148EBEA954410000000031F05041F6285C1FCCA954410AD7A33033F05041EC51B86ECBA95441E17A14BE35F050417B14AEE7CAA95441CDCCCC0C38F05041F6285C6FCAA9544185EB51683CF05041AE47E15AC6A954410AD7A3D043F0504133333303C4A95441AE47E13A47F050413D0AD7A3C7A95441713D0A174AF05041666666D6C6A9544185EB51E84DF05041666666E6C4A954410AD7A3D051F050417B14AEB7C2A9544114AE476152F05041C3F5282CC3A9544101030000000100000067000000CDCCCC6CE1EF5041F6285C7FE4A95441CDCCCCFCE4EF5041F6285CBFE6A9544185EB5108E5EF5041AE47E10AE9A9544148E17A84E7EF504133333333EBA954410AD7A3E0E8EF5041AE47E1EAEDA954410AD7A3B0E8EF5041AE47E11AEEA954410AD7A310E6EF5041AE47E11AEEA954410AD7A310E6EF5041F6285CCFEEA9544185EB51C8E2EF5041333333D3F0A9544152B81EC5D7EF5041666666A6EBA95441713D0AB7D6EF504114AE47A1EDA9544114AE47C1D5EF50411F85EB31EFA9544148E17A84DBEF5041713D0A47F2A954410AD7A340DDEF5041AE47E17AF1A9544148E17A54E1EF5041F6285CDFF3A954417B14AE07E1EF504166666606F5A954410AD7A360E1EF504133333353F8A954410AD7A380DFEF5041F6285C7FF9A9544148E17A84DBEF5041F6285C9FF7A95441CDCCCC2CD9EF504133333363FAA95441CDCCCC0CD2EF5041F6285C6FF7A9544148E17A84D2EF5041713D0A57FAA95441CDCCCCCCD5EF5041F6285C5F01AA544148E17A84D6EF50418FC2F57805AA544148E17AE4D6EF50415C8FC2D509AA54410AD7A350D7EF504114AE47110DAA5441000000F0D8EF50419A9999E90AAA5441A4703DAADCEF504148E17AA408AA54415C8FC275DFEF5041000000F006AA5441295C8F02E6EF5041C3F5289C01AA544152B81EE5E7EF5041CDCCCCECFFA95441D7A3707DEAEF5041A4703D9AFDA954417B14AE17EDEF504133333343FBA9544185EB51A8EDEF5041F6285C6FFAA95441CDCCCCBCE2EF5041F6285C9FF4A9544148E17AE4E1EF5041F6285CEFF2A954410AD7A3A0E3EF5041713D0A87F1A95441CDCCCCDCEFEF5041713D0A27F7A9544148E17AA4F0EF5041295C8F32F6A954417B14AEE7F1EF504148E17A64F4A95441AE47E12AF3EF5041713D0A97F2A95441B81E852BF4EF50418FC2F528F1A954417B14AE97F5EF50415C8FC2C5EFA954411F85EB01F7EF50413D0AD763EEA954413D0AD773F9EF50410AD7A300ECA954418FC2F538FBEF5041C3F528BCEAA954417B14AEE7FCEF50418FC2F588E9A95441D7A3706DFEEF50411F85EB71E8A954413D0AD7F3FFEF5041AE47E15AE7A9544185EB514801F050417B14AE67E6A95441AE47E19A02F050415C8FC275E5A95441CDCCCCBC03F05041666666A6E4A95441E17A143E05F05041A4703D9AE3A95441F6285C2F06F05041E17A144EE2A95441B81E858B07F05041E17A146EE0A954410AD7A3F008F05041AE47E1BADEA95441000000F00AF05041333333C3DBA9544148E17A040DF0504133333353D7A9544148E17A24FCEF5041AE47E11AD3A954413D0AD753F9EF5041A4703D3AD2A95441CDCCCCCCF3EF5041AE47E1AAD0A954410AD7A3B0EEEF5041333333D3CFA9544148E17AA4EEEF5041713D0A37CFA954410AD7A310ECEF5041713D0A37CFA954410AD7A310E6EF5041333333D3D2A954411F85EB41E3EF5041EC51B85ED6A9544148E17A24EAEF5041713D0A77DAA95441E17A14AEF0EF50419A999989DDA954419A999969F1EF504133333333DCA9544148E17AB4F3EF5041F6285CFFD9A9544185EB51D8F0EF504133333393D6A9544185EB5128F2EF5041713D0A67D5A9544148E17A74F4EF5041F6285C0FD6A9544148E17AD4F4EF5041713D0A37D5A9544185EB51E8F2EF5041AE47E16AD4A95441713D0A97F3EF5041295C8F52D3A95441CDCCCCDCF5EF5041AE47E18AD2A9544185EB510800F05041F6285CBFD7A954416666668602F05041295C8F02DBA9544185EB5188FEEF504133333393DCA954410AD7A380FDEF5041713D0AC7DBA9544148E17AF4FBEF5041F6285CCFDCA95441CDCCCC4CFDEF50415C8FC255DFA954410AD7A3D0F8EF5041F6285C6FE5A954410AD7A360F6EF504166666636E4A9544185EB5138F1EF504133333373E7A95441CDCCCC4CEFEF5041F6285CCFE5A9544185EB5148F0EF5041F6285CEFE3A9544148E17AD4EEEF5041713D0A27E2A9544148E17AB4EAEF5041713D0A17E3A95441CDCCCC6CE7EF5041F6285C5FE3A95441CDCCCCFCE4EF5041F6285C4FE1A95441CDCCCC0CE7EF5041AE47E15ADEA9544148E17AB4E4EF5041713D0A57DCA9544185EB51B8E3EF5041713D0A87D9A95441713D0A97E1EF50419A999949D9A954413D0AD7B3E0EF5041666666D6DAA95441333333F3DFEF504166666626DCA95441A4703D0ADFEF5041D7A370BDDDA95441D7A3701DDEEF5041AE47E15ADFA95441CDCCCC0CDEEF5041713D0A77E0A9544185EB5158E0EF5041713D0AC7E1A95441CDCCCC6CE1EF5041F6285C7FE4A95441010300000001000000390000003333330308F05041E17A146EF6A954415C8FC2850BF05041E17A14CEF3A9544152B81E850FF0504148E17AD4F0A9544185EB51F812F05041713D0A37EDA954413333335319F050419A9999D9E6A9544152B81EA519F050410AD7A370E6A954411F85EB511FF050419A999949DFA954419A99994921F0504148E17A54E1A9544148E17A0422F05041713D0A37DEA9544185EB518822F05041713D0AC7DBA9544148E17AD421F0504133333313D8A95441AE47E12A25F05041CDCCCCECD4A95441713D0AC725F05041666666D6D1A9544148E17A6426F050419A9999B9CEA95441713D0AF728F05041000000F0CEA95441B81E859B29F050410AD7A3C0C9A95441C3F5285C2AF05041713D0AC7C6A9544148E17AE426F05041F6285CAFC6A9544148E17A2426F05041B81E856BC5A954418FC2F5682BF05041666666D6C3A95441AE47E1BA2BF050419A999959C3A95441713D0A272DF05041D7A3702DC1A95441EC51B8FE2DF050410AD7A340C0A95441C3F5282C33F0504133333343BAA95441C3F528BC2DF05041F6285C8FB9A9544148E17A042BF05041B81E85ABB8A954410AD7A30026F05041713D0AE7B5A954415C8FC22525F05041B81E851BB5A95441713D0AE720F0504148E17A54B5A954410AD7A3D01FF05041F6285C2FB6A954410AD7A3E018F05041B81E85DBC4A9544148E17A6416F05041713D0AF7C9A9544148E17AF413F05041713D0A17D1A95441C3F5285C12F05041F6285CEFD4A9544148E17A140FF05041713D0A17DAA954410AD7A3200CF05041F6285C0FDFA9544148E17A6407F05041713D0AC7E4A954410AD7A3B006F05041F6285C4FE4A9544148E17A4409F05041F6285CAFE1A9544148E17AC40AF05041713D0AB7DFA9544148E17A540EF0504133333323DAA9544148E17A340DF05041F6285C9FD9A9544185EB51D80BF05041295C8F62DCA954419A99990906F05041A4703D5AE4A954413D0AD723FAEF504152B81ED5ECA95441C3F5283CF9EF5041333333A3EDA9544185EB5178F9EF5041F6285CCFEEA95441C3F5283CF6EF5041713D0AE7F1A954413D0AD703F5EF5041713D0AC7F1A95441C3F5286CF3EF504133333303F4A954410AD7A350F4EF5041B81E850BF5A95441C3F5284CF2EF5041713D0A57FAA95441C3F5281CF2EF5041713D0AA7FBA954415C8FC285F9EF5041000000A002AA5441295C8F42FDEF504133333353FFA95441A4703D5A03F05041E17A14EEF9A954413333330308F05041E17A146EF6A9544101030000000100000015000000713D0A97D8EF5041B81E858B0CAA5441E17A143ED9EF504148E17A0414AA5441713D0A77DCEF5041000000601AAA5441C3F5281CE0EF5041F6285CDF20AA544185EB5188E6EF5041F6285CBF1CAA5441C3F5282CE5EF5041F6285CCF1BAA544185EB51C8E2EF5041F6285CCF1BAA54410AD7A310E3EF5041B81E855B1AAA54410AD7A390E4EF5041713D0A071AAA544185EB5158E6EF5041333333D31AAA5441C3F528FCE7EF5041F6285C9F18AA544185EB51B8E9EF50413333334317AA5441C3F5287CE6EF5041B81E85FB13AA544148E17A84E3EF504185EB517810AA544185EB5128E9EF5041F6285CEF07AA5441C3F5287CE6EF50413333338304AA54410AD7A360E1EF5041713D0A770AAA544148E17A14DFEF5041B81E859B0AAA544148E17AC4DDEF50413333330309AA5441F6285CDFDAEF504148E17AA40AAA5441713D0A97D8EF5041B81E858B0CAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000007200000085EB51B8E9EF5041F6285C1FCCA95441561519B5E9EF5041564F4C22CCA95441E91E40BFE9EF5041116CC140CCA95441F88C405FEDEF5041C991D0FFCCA95441EE45A9B2F9EF5041B21677F9CFA9544185EB5198FAEF5041713D0A97CFA9544117FD49A8FAEF50416204169ECFA95441BA3351CEFAEF504188EEDF8ECFA9544191938DFAFBEF504125775817D0A95441EDA3721AFDEF504157A75DB2D0A95441C3F5285CFDEF5041F6285CCFD0A9544148E17A94FEEF5041F6285CFFD0A95441BD66A7A7FFEF50411D78F7EAD0A954413E8A062300F05041DD9C67D6D0A954418D9BF73301F05041554E1CBBD0A95441DDACE84402F0504195C27695D1A9544122BED95503F050415C851C8BD2A95441426E719C0CF0504179F649C8D4A954417E6AF09F0EF05041EC5FE42BD3A954410AC9A00C0FF050412C7DA549D2A95441EE64EAC410F0504108062BDACDA954411E3CAE6811F0504169E348B8CBA95441EE64EAC410F050416CAC48E8C9A95441797C35100FF050415C0FB2B1C9A9544182E2CB760DF05041F4FA9303CAA95441FD5C808B0BF05041D4C06696C9A95441B6B125E108F05041C423D05FC9A95441A9DD8EDA06F050416CAC48E8C9A954419109F8D304F0504104982A3ACAA95441FDE615B202F0504104982A3ACAA95441F5AF15E200F0504180B7DFBECDA95441662ACAF6FEEF5041905476F5CDA9544169F3C926FDEF5041C991D0FFCCA9544169F3C926FDEF5041116CC140CCA95441A1302431FCEF5041F4FA9303CAA954419AF92361FAEF50416CAC48E8C9A9544125116FACF8EF5041C423D05FC9A95441E59C14D2F7EF50414C721B7BC9A95441B98E505EF5EF5041F4FA9303CAA95441D1917DFBF3EF5041F4FA9303CAA95441EA94AA98F2EF5041F4FA9303CAA95441CA5A7D2BF2EF5041954C0CBCC8A954412DD204A3F1EF50413001EE3DC7A9544195E62251F1EF5041D05266F6C5A954411D356E6CF1EF504128CAED6DC5A95441326F9BD9F1EF5041516AB141C4A9544152A9C846F2EF5041A9E138B9C3A9544181808CEAF2EF50410159C030C3A95441C1F4E6C4F3EF5041CCE46556C2A95441697D5F4DF4EF504114BF5697C1A954416117C9E6F5EF50415C9947D8C0A954417D88F623F8EF50412CC28334C0A9544185BFF6F3F9EF504185390BACBFA9544181F6F6C3FBEF50411C25EDFDBFA9544131B66F1CFEEF5041FDEABF90BFA95441F5AF15E200F0504165FFDD3EBFA954410D84ACE802F0504145C5B0D1BEA95441CA4652DE03F05041A83C3849BEA954413992705C05F0504140281A9BBEA95441C917BC4707F0504120EEEC2DBEA954419DAEF8430AF0504100B4BFC0BDA954419AE5F8130CF05041F016298ABDA9544162A89E090DF05041D0DCFB1CBDA95441AEF08FEA0FF0504118B7EC5DBCA95441A68AF98311F05041B0A2CEAFBCA954410270819B14F05041488EB001BDA95441E106BE9717F05041B0A2CEAFBCA95441992CCD5618F050414157B031BBA95441B143254105F05041645ADDCEB9A95441F5AF15E200F05041A96BCEDFBAA95441A1302431FCEF5041E8DF28BABBA9544125116FACF8EF5041786574A5BDA954410BEF9758F0EF5041DC9EFD5FBEA9544148E17A54F0EF504133333363BEA95441083C7CC9EFEF5041E2D5EDBFBEA95441D58913C2EEEF50410C8856C7BFA9544176DB8B7AEDEF50413C5F1A6BC0A95441861FE217EDEF5041E29DFD8BC0A954410AD7A3D0ECEF5041B81E85BBC0A95441F307A397EBEF5041242EB482C1A95441596A5E3DEBEF5041245CEDCDC1A9544190BFC979EAEF5041C08A9B38C2A954410AD7A3B0E8EF5041B81E855BC3A95441C628331FE4EF50411EDDE7BCC6A95441518E5DFDE3EF504120645707C7A954417B1957CFE3EF5041D9E7FFF7C6A9544148E17AC4E0EF5041713D0A37C9A9544177113B69DFEF5041AE53C007CAA95441FD0E6C4CDFEF504104982A3ACAA954419FBC73E3DEEF504168662858CAA9544145A18C9BDEEF504194D65F83CAA95441C4D11142E0EF504131A6EEADCCA954418194B737E1EF50417980DFEECBA95441A9F2EE3CE1EF50413E730CE7CBA954417248A149E1EF5041AF2E9A5ECBA9544186C09961E1EF50414E98FF5CCAA9544109E30253E1EF50416CAC48E8C9A9544191314E6EE1EF5041D4C06696C9A95441B16B7BDBE1EF50412C38EE0DC9A95441D1A5A848E2EF504185AF7585C8A9544131543090E3EF504155D8B1E1C7A95441D9DCA818E4EF5041BDECCF8FC7A95441806521A1E4EF5041DD26FDFCC7A95441153F8005E5EF5041D7B6737AC8A954415E07727BE7EF504117E08D60C9A954416599F4D3E7EF50414C721B7BC9A95441248F3A2FE8EF5041E76D39A2C9A9544148E17A74E8EF5041B81E85BBC9A95441081B2376E8EF504192179DC0C9A954411DBF0393E8EF5041E45DFDCCC9A95441C4477C1BE9EF504154A91B4BCBA9544162D0F4A3E9EF50417980DFEECBA954411F5CA0B2E9EF5041B123E21ACCA9544185EB51B8E9EF5041F6285C1FCCA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463640 - 340557
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000070000000103000000010000000800000048E17A4439F05041713D0A27BBA95441C3F5284C34F05041713D0A67BAA9544148E17AD430F0504133333383BFA9544148E17A0434F05041B81E859BC5A95441A4703D1A35F05041E17A148EC4A954410AD7A3003BF05041B81E858BBDA954410AD7A3D03AF05041F6285CCFBBA9544148E17A4439F05041713D0A27BBA954410103000000020000002D000000B81E855B39F050419A9999B9B9A95441D7A3703D3BF05041B81E857BBAA95441D7A3706D3EF05041F6285CCFB7A954418FC2F5183FF050411F85EB01B6A954417B14AE2741F050410AD7A300B4A95441AE47E18A42F05041CDCCCC7CB3A9544148E17A144BF05041333333A3A8A9544148E17AD44CF05041333333C3A7A95441295C8F9255F05041CDCCCC8C9CA954411F85EB6156F0504148E17A7499A95441A4703D8A56F050417B14AED797A95441E17A14FE55F050413D0AD74391A9544148E17A2455F0504152B81E1589A954410000001055F050418FC2F54886A954417B14AE6755F050419A99994984A95441E17A14CE55F05041E17A14AE82A954413333330357F05041F6285C9F80A95441713D0A4756F050419A99992981A95441333333D353F05041B81E850B85A954410AD7A32052F050419A99998986A9544152B81E5549F05041295C8FC28CA9544114AE47113EF05041B81E85FB92A954413D0AD7E335F05041AE47E13A98A954410AD7A36031F050411F85EB019CA954419A9999192FF05041EC51B81E9FA954415C8FC2052EF0504114AE47D1A0A9544152B81EE52EF05041333333F3A1A95441000000202EF050419A999949A3A954418FC2F5382CF05041F6285C2FA3A95441666666862AF05041E17A143EA5A9544152B81ED52AF05041F6285C5FA6A954418FC2F5382CF05041D7A3701DA6A95441C3F528BC2CF050411F85EB11A8A954417B14AE5729F050418FC2F5D8AAA9544185EB510829F050411F85EBF1A8A9544148E17A7428F0504148E17A34A8A954418FC2F5F826F05041A4703D3AAAA9544114AE479125F0504166666626ACA95441CDCCCC3C24F050417B14AEF7ADA95441F6285C4F22F05041A4703D9AB0A954413D0AD7F323F050415C8FC2B5B2A9544114AE47A129F05041D7A3705DB6A95441666666062DF05041A4703DFAB7A954411F85EBF12FF05041000000B0B8A95441B81E855B39F050419A9999B9B9A95441150000006666668633F050419A999939B1A954411F85EB5133F050415C8FC295B1A95441AE47E1BA33F0504185EB5148B3A95441B81E85DB32F05041F6285C2FB5A95441D7A3708D34F05041A4703D9AB7A9544185EB51E832F050415C8FC245B8A95441C3F528AC31F05041666666F6B7A95441B81E85FB31F05041D7A370CDB5A954415C8FC25530F05041CDCCCC1CB6A954418FC2F5682FF05041713D0A57B5A95441000000202EF05041EC51B89EB4A954417B14AE672DF05041B81E853BB3A954410AD7A3D02DF0504133333383B2A954415C8FC2452CF05041F6285CFFB1A95441D7A3708D2BF050418FC2F5A8B0A95441CDCCCCDC2BF050417B14AEA7AEA95441CDCCCC2C2EF050418FC2F5E8AEA9544114AE47412FF050417B14AEC7ADA95441C3F5288C32F05041EC51B8CEAEA95441B81E85DB32F0504185EB5118B0A954416666668633F050419A999939B1A9544101030000000100000039000000C3F5285CFDEF5041F6285CCFD0A9544148E17A94FEEF5041F6285CFFD0A95441C3F5281C01F05041F6285CCFD0A9544185EB513803F05041333333A3D2A954417B14AEB70DF05041F6285C0FD5A95441E17A142E11F05041A4703DDACDA95441295C8FE214F05041D7A370EDC2A954418FC2F54818F05041CDCCCCDCBBA954418FC2F57819F05041C3F5281CBAA95441CDCCCCAC1AF050415C8FC255B8A9544148E17A341CF050415C8FC275B6A95441666666361FF0504148E17AC4B2A9544148E17AA420F0504114AE4721B1A954419A99994921F0504148E17A64B0A954419A9999A920F05041000000B0AEA95441A4703D5A1FF05041C3F5280CABA954413D0AD7B31DF0504152B81E75A6A95441295C8F3219F05041F6285C5F94A95441C3F5281C18F050419A99993991A954410AD7A3D016F05041F6285CCF8BA954410AD7A35015F05041F6285CCF8BA954410AD7A3D010F05041713D0AE797A9544148E17A240EF05041B81E85CB9EA9544185EB51C80CF05041B81E856BA1A9544148E17AC40AF05041333333B3A4A95441C3F528EC06F05041F6285C7FA8A9544148E17A8402F05041B81E85DBACA954410AD7A32003F05041713D0A37AEA954410AD7A3D001F05041713D0A87AFA9544185EB516800F0504133333323B0A954417B14AEF7FEEF5041F6285CFFAFA9544185EB51F8FCEF50415C8FC2F5B1A954417B14AEF7FAEF5041CDCCCCECB3A95441C3F5285CF7EF5041713D0A27B8A9544185EB5198F4EF5041F6285C0FBBA9544148E17A54F0EF504133333363BEA954410AD7A3D0ECEF5041B81E85BBC0A954410AD7A3B0E8EF5041B81E855BC3A954410AD7A3D0E3EF5041713D0AF7C6A9544148E17AC4E0EF5041713D0A37C9A95441E17A145EDEEF504185EB51A8CAA9544148E17A54E0EF5041C3F5283CCDA954410AD7A370E0EF5041713D0A97CCA95441C3F5283CE1EF5041F6285CEFCBA95441C3F5286CE1EF5041B81E85EBC9A954410AD7A3B0E2EF5041713D0A77C8A95441C3F528DCE3EF5041B81E85DBC7A954410AD7A360E4EF5041F6285CCFC7A95441C3F528FCE4EF5041713D0A77C8A9544148E17A74E8EF5041B81E85BBC9A954410AD7A310E9EF5041B81E859BCBA9544185EB51B8E9EF5041F6285C1FCCA9544114AE4711E9EF50417B14AEB7CCA95441A4703D7AEDEF504114AE4761CDA9544185EB5148F9EF5041713D0A27D0A9544185EB5198FAEF5041713D0A97CFA95441C3F5285CFDEF5041F6285CCFD0A954410103000000010000002400000014AE476152F05041C3F5282CC3A95441B81E851B55F05041713D0AE7C0A9544148E17AC456F05041D7A3705DBFA9544114AE47F157F05041295C8FD2BDA954413D0AD7E353F0504114AE4721BCA95441F6285CCF4AF05041F6285CDFBCA954410AD7A3B048F0504133333373BDA95441CDCCCC8C48F05041713D0A77BCA954417B14AE974AF0504100000010BCA95441CDCCCC0C4EF05041F6285C7FBAA9544185EB511850F05041F6285C4FB7A9544148E17A744EF05041333333F3B5A9544148E17A4451F05041AE47E11AB2A9544148E17AB456F05041713D0AF7AEA9544148E17A1460F05041AE47E18AABA95441EC51B82E65F0504152B81EC5A6A954413D0AD72368F050410AD7A340A4A9544148E17AD46FF05041713D0AB79AA954418FC2F5086DF050419A9999D998A954410AD7A38066F05041F6285C6F9DA954417B14AEE75DF050410AD7A320A2A95441713D0A074DF05041666666D6A9A954413333336342F050413D0AD793B6A95441F6285C9F3CF05041AE47E19ABDA95441E17A14DE3BF05041E17A148EBEA954410000000031F05041F6285C1FCCA954410AD7A33033F05041EC51B86ECBA95441E17A14BE35F050417B14AEE7CAA95441CDCCCC0C38F05041F6285C6FCAA9544185EB51683CF05041AE47E15AC6A954410AD7A3D043F0504133333303C4A95441AE47E13A47F050413D0AD7A3C7A95441713D0A174AF05041666666D6C6A9544185EB51E84DF05041666666E6C4A954410AD7A3D051F050417B14AEB7C2A9544114AE476152F05041C3F5282CC3A9544101030000000100000067000000CDCCCC6CE1EF5041F6285C7FE4A95441CDCCCCFCE4EF5041F6285CBFE6A9544185EB5108E5EF5041AE47E10AE9A9544148E17A84E7EF504133333333EBA954410AD7A3E0E8EF5041AE47E1EAEDA954410AD7A3B0E8EF5041AE47E11AEEA954410AD7A310E6EF5041AE47E11AEEA954410AD7A310E6EF5041F6285CCFEEA9544185EB51C8E2EF5041333333D3F0A9544152B81EC5D7EF5041666666A6EBA95441713D0AB7D6EF504114AE47A1EDA9544114AE47C1D5EF50411F85EB31EFA9544148E17A84DBEF5041713D0A47F2A954410AD7A340DDEF5041AE47E17AF1A9544148E17A54E1EF5041F6285CDFF3A954417B14AE07E1EF504166666606F5A954410AD7A360E1EF504133333353F8A954410AD7A380DFEF5041F6285C7FF9A9544148E17A84DBEF5041F6285C9FF7A95441CDCCCC2CD9EF504133333363FAA95441CDCCCC0CD2EF5041F6285C6FF7A9544148E17A84D2EF5041713D0A57FAA95441CDCCCCCCD5EF5041F6285C5F01AA544148E17A84D6EF50418FC2F57805AA544148E17AE4D6EF50415C8FC2D509AA54410AD7A350D7EF504114AE47110DAA5441000000F0D8EF50419A9999E90AAA5441A4703DAADCEF504148E17AA408AA54415C8FC275DFEF5041000000F006AA5441295C8F02E6EF5041C3F5289C01AA544152B81EE5E7EF5041CDCCCCECFFA95441D7A3707DEAEF5041A4703D9AFDA954417B14AE17EDEF504133333343FBA9544185EB51A8EDEF5041F6285C6FFAA95441CDCCCCBCE2EF5041F6285C9FF4A9544148E17AE4E1EF5041F6285CEFF2A954410AD7A3A0E3EF5041713D0A87F1A95441CDCCCCDCEFEF5041713D0A27F7A9544148E17AA4F0EF5041295C8F32F6A954417B14AEE7F1EF504148E17A64F4A95441AE47E12AF3EF5041713D0A97F2A95441B81E852BF4EF50418FC2F528F1A954417B14AE97F5EF50415C8FC2C5EFA954411F85EB01F7EF50413D0AD763EEA954413D0AD773F9EF50410AD7A300ECA954418FC2F538FBEF5041C3F528BCEAA954417B14AEE7FCEF50418FC2F588E9A95441D7A3706DFEEF50411F85EB71E8A954413D0AD7F3FFEF5041AE47E15AE7A9544185EB514801F050417B14AE67E6A95441AE47E19A02F050415C8FC275E5A95441CDCCCCBC03F05041666666A6E4A95441E17A143E05F05041A4703D9AE3A95441F6285C2F06F05041E17A144EE2A95441B81E858B07F05041E17A146EE0A954410AD7A3F008F05041AE47E1BADEA95441000000F00AF05041333333C3DBA9544148E17A040DF0504133333353D7A9544148E17A24FCEF5041AE47E11AD3A954413D0AD753F9EF5041A4703D3AD2A95441CDCCCCCCF3EF5041AE47E1AAD0A954410AD7A3B0EEEF5041333333D3CFA9544148E17AA4EEEF5041713D0A37CFA954410AD7A310ECEF5041713D0A37CFA954410AD7A310E6EF5041333333D3D2A954411F85EB41E3EF5041EC51B85ED6A9544148E17A24EAEF5041713D0A77DAA95441E17A14AEF0EF50419A999989DDA954419A999969F1EF504133333333DCA9544148E17AB4F3EF5041F6285CFFD9A9544185EB51D8F0EF504133333393D6A9544185EB5128F2EF5041713D0A67D5A9544148E17A74F4EF5041F6285C0FD6A9544148E17AD4F4EF5041713D0A37D5A9544185EB51E8F2EF5041AE47E16AD4A95441713D0A97F3EF5041295C8F52D3A95441CDCCCCDCF5EF5041AE47E18AD2A9544185EB510800F05041F6285CBFD7A954416666668602F05041295C8F02DBA9544185EB5188FEEF504133333393DCA954410AD7A380FDEF5041713D0AC7DBA9544148E17AF4FBEF5041F6285CCFDCA95441CDCCCC4CFDEF50415C8FC255DFA954410AD7A3D0F8EF5041F6285C6FE5A954410AD7A360F6EF504166666636E4A9544185EB5138F1EF504133333373E7A95441CDCCCC4CEFEF5041F6285CCFE5A9544185EB5148F0EF5041F6285CEFE3A9544148E17AD4EEEF5041713D0A27E2A9544148E17AB4EAEF5041713D0A17E3A95441CDCCCC6CE7EF5041F6285C5FE3A95441CDCCCCFCE4EF5041F6285C4FE1A95441CDCCCC0CE7EF5041AE47E15ADEA9544148E17AB4E4EF5041713D0A57DCA9544185EB51B8E3EF5041713D0A87D9A95441713D0A97E1EF50419A999949D9A954413D0AD7B3E0EF5041666666D6DAA95441333333F3DFEF504166666626DCA95441A4703D0ADFEF5041D7A370BDDDA95441D7A3701DDEEF5041AE47E15ADFA95441CDCCCC0CDEEF5041713D0A77E0A9544185EB5158E0EF5041713D0AC7E1A95441CDCCCC6CE1EF5041F6285C7FE4A95441010300000001000000390000003333330308F05041E17A146EF6A954415C8FC2850BF05041E17A14CEF3A9544152B81E850FF0504148E17AD4F0A9544185EB51F812F05041713D0A37EDA954413333335319F050419A9999D9E6A9544152B81EA519F050410AD7A370E6A954411F85EB511FF050419A999949DFA954419A99994921F0504148E17A54E1A9544148E17A0422F05041713D0A37DEA9544185EB518822F05041713D0AC7DBA9544148E17AD421F0504133333313D8A95441AE47E12A25F05041CDCCCCECD4A95441713D0AC725F05041666666D6D1A9544148E17A6426F050419A9999B9CEA95441713D0AF728F05041000000F0CEA95441B81E859B29F050410AD7A3C0C9A95441C3F5285C2AF05041713D0AC7C6A9544148E17AE426F05041F6285CAFC6A9544148E17A2426F05041B81E856BC5A954418FC2F5682BF05041666666D6C3A95441AE47E1BA2BF050419A999959C3A95441713D0A272DF05041D7A3702DC1A95441EC51B8FE2DF050410AD7A340C0A95441C3F5282C33F0504133333343BAA95441C3F528BC2DF05041F6285C8FB9A9544148E17A042BF05041B81E85ABB8A954410AD7A30026F05041713D0AE7B5A954415C8FC22525F05041B81E851BB5A95441713D0AE720F0504148E17A54B5A954410AD7A3D01FF05041F6285C2FB6A954410AD7A3E018F05041B81E85DBC4A9544148E17A6416F05041713D0AF7C9A9544148E17AF413F05041713D0A17D1A95441C3F5285C12F05041F6285CEFD4A9544148E17A140FF05041713D0A17DAA954410AD7A3200CF05041F6285C0FDFA9544148E17A6407F05041713D0AC7E4A954410AD7A3B006F05041F6285C4FE4A9544148E17A4409F05041F6285CAFE1A9544148E17AC40AF05041713D0AB7DFA9544148E17A540EF0504133333323DAA9544148E17A340DF05041F6285C9FD9A9544185EB51D80BF05041295C8F62DCA954419A99990906F05041A4703D5AE4A954413D0AD723FAEF504152B81ED5ECA95441C3F5283CF9EF5041333333A3EDA9544185EB5178F9EF5041F6285CCFEEA95441C3F5283CF6EF5041713D0AE7F1A954413D0AD703F5EF5041713D0AC7F1A95441C3F5286CF3EF504133333303F4A954410AD7A350F4EF5041B81E850BF5A95441C3F5284CF2EF5041713D0A57FAA95441C3F5281CF2EF5041713D0AA7FBA954415C8FC285F9EF5041000000A002AA5441295C8F42FDEF504133333353FFA95441A4703D5A03F05041E17A14EEF9A954413333330308F05041E17A146EF6A9544101030000000100000015000000713D0A97D8EF5041B81E858B0CAA5441E17A143ED9EF504148E17A0414AA5441713D0A77DCEF5041000000601AAA5441C3F5281CE0EF5041F6285CDF20AA544185EB5188E6EF5041F6285CBF1CAA5441C3F5282CE5EF5041F6285CCF1BAA544185EB51C8E2EF5041F6285CCF1BAA54410AD7A310E3EF5041B81E855B1AAA54410AD7A390E4EF5041713D0A071AAA544185EB5158E6EF5041333333D31AAA5441C3F528FCE7EF5041F6285C9F18AA544185EB51B8E9EF50413333334317AA5441C3F5287CE6EF5041B81E85FB13AA544148E17A84E3EF504185EB517810AA544185EB5128E9EF5041F6285CEF07AA5441C3F5287CE6EF50413333338304AA54410AD7A360E1EF5041713D0A770AAA544148E17A14DFEF5041B81E859B0AAA544148E17AC4DDEF50413333330309AA5441F6285CDFDAEF504148E17AA40AAA5441713D0A97D8EF5041B81E858B0CAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000007200000085EB51B8E9EF5041F6285C1FCCA95441561519B5E9EF5041564F4C22CCA95441E91E40BFE9EF5041116CC140CCA95441F88C405FEDEF5041C991D0FFCCA95441EE45A9B2F9EF5041B21677F9CFA9544185EB5198FAEF5041713D0A97CFA9544117FD49A8FAEF50416204169ECFA95441BA3351CEFAEF504188EEDF8ECFA9544191938DFAFBEF504125775817D0A95441EDA3721AFDEF504157A75DB2D0A95441C3F5285CFDEF5041F6285CCFD0A9544148E17A94FEEF5041F6285CFFD0A95441BD66A7A7FFEF50411D78F7EAD0A954413E8A062300F05041DD9C67D6D0A954418D9BF73301F05041554E1CBBD0A95441DDACE84402F0504195C27695D1A9544122BED95503F050415C851C8BD2A95441426E719C0CF0504179F649C8D4A954417E6AF09F0EF05041EC5FE42BD3A954410AC9A00C0FF050412C7DA549D2A95441EE64EAC410F0504108062BDACDA954411E3CAE6811F0504169E348B8CBA95441EE64EAC410F050416CAC48E8C9A95441797C35100FF050415C0FB2B1C9A9544182E2CB760DF05041F4FA9303CAA95441FD5C808B0BF05041D4C06696C9A95441B6B125E108F05041C423D05FC9A95441A9DD8EDA06F050416CAC48E8C9A954419109F8D304F0504104982A3ACAA95441FDE615B202F0504104982A3ACAA95441F5AF15E200F0504180B7DFBECDA95441662ACAF6FEEF5041905476F5CDA9544169F3C926FDEF5041C991D0FFCCA9544169F3C926FDEF5041116CC140CCA95441A1302431FCEF5041F4FA9303CAA954419AF92361FAEF50416CAC48E8C9A9544125116FACF8EF5041C423D05FC9A95441E59C14D2F7EF50414C721B7BC9A95441B98E505EF5EF5041F4FA9303CAA95441D1917DFBF3EF5041F4FA9303CAA95441EA94AA98F2EF5041F4FA9303CAA95441CA5A7D2BF2EF5041954C0CBCC8A954412DD204A3F1EF50413001EE3DC7A9544195E62251F1EF5041D05266F6C5A954411D356E6CF1EF504128CAED6DC5A95441326F9BD9F1EF5041516AB141C4A9544152A9C846F2EF5041A9E138B9C3A9544181808CEAF2EF50410159C030C3A95441C1F4E6C4F3EF5041CCE46556C2A95441697D5F4DF4EF504114BF5697C1A954416117C9E6F5EF50415C9947D8C0A954417D88F623F8EF50412CC28334C0A9544185BFF6F3F9EF504185390BACBFA9544181F6F6C3FBEF50411C25EDFDBFA9544131B66F1CFEEF5041FDEABF90BFA95441F5AF15E200F0504165FFDD3EBFA954410D84ACE802F0504145C5B0D1BEA95441CA4652DE03F05041A83C3849BEA954413992705C05F0504140281A9BBEA95441C917BC4707F0504120EEEC2DBEA954419DAEF8430AF0504100B4BFC0BDA954419AE5F8130CF05041F016298ABDA9544162A89E090DF05041D0DCFB1CBDA95441AEF08FEA0FF0504118B7EC5DBCA95441A68AF98311F05041B0A2CEAFBCA954410270819B14F05041488EB001BDA95441E106BE9717F05041B0A2CEAFBCA95441992CCD5618F050414157B031BBA95441B143254105F05041645ADDCEB9A95441F5AF15E200F05041A96BCEDFBAA95441A1302431FCEF5041E8DF28BABBA9544125116FACF8EF5041786574A5BDA954410BEF9758F0EF5041DC9EFD5FBEA9544148E17A54F0EF504133333363BEA95441083C7CC9EFEF5041E2D5EDBFBEA95441D58913C2EEEF50410C8856C7BFA9544176DB8B7AEDEF50413C5F1A6BC0A95441861FE217EDEF5041E29DFD8BC0A954410AD7A3D0ECEF5041B81E85BBC0A95441F307A397EBEF5041242EB482C1A95441596A5E3DEBEF5041245CEDCDC1A9544190BFC979EAEF5041C08A9B38C2A954410AD7A3B0E8EF5041B81E855BC3A95441C628331FE4EF50411EDDE7BCC6A95441518E5DFDE3EF504120645707C7A954417B1957CFE3EF5041D9E7FFF7C6A9544148E17AC4E0EF5041713D0A37C9A9544177113B69DFEF5041AE53C007CAA95441FD0E6C4CDFEF504104982A3ACAA954419FBC73E3DEEF504168662858CAA9544145A18C9BDEEF504194D65F83CAA95441C4D11142E0EF504131A6EEADCCA954418194B737E1EF50417980DFEECBA95441A9F2EE3CE1EF50413E730CE7CBA954417248A149E1EF5041AF2E9A5ECBA9544186C09961E1EF50414E98FF5CCAA9544109E30253E1EF50416CAC48E8C9A9544191314E6EE1EF5041D4C06696C9A95441B16B7BDBE1EF50412C38EE0DC9A95441D1A5A848E2EF504185AF7585C8A9544131543090E3EF504155D8B1E1C7A95441D9DCA818E4EF5041BDECCF8FC7A95441806521A1E4EF5041DD26FDFCC7A95441153F8005E5EF5041D7B6737AC8A954415E07727BE7EF504117E08D60C9A954416599F4D3E7EF50414C721B7BC9A95441248F3A2FE8EF5041E76D39A2C9A9544148E17A74E8EF5041B81E85BBC9A95441081B2376E8EF504192179DC0C9A954411DBF0393E8EF5041E45DFDCCC9A95441C4477C1BE9EF504154A91B4BCBA9544162D0F4A3E9EF50417980DFEECBA954411F5CA0B2E9EF5041B123E21ACCA9544185EB51B8E9EF5041F6285C1FCCA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436979 - 3014056
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8FF2A9105141CDCCCC8C61F85441F6285CAFA8105141295C8F0263F85441AE47E1FAA91051418FC2F52864F8544114AE4731AB1051413333331365F85441C3F528FCAB105141B81E85FB65F854415C8FC2D5AC105141713D0A1767F8544148E17AC4AD1051411F85EB6168F85441B81E85EBAE1051411F85EB316AF85441B81E85BBAF105141EC51B8BE6BF8544148E17AD4B0105141713D0A476EF85441C3F5284CB210514148E17AF469F85441B81E853BB31051418FC2F5C866F854411F85EBB1B31051417B14AEF764F85441F6285CAFB4105141EC51B89E62F85441EC51B8FEB510514185EB51F85FF85441CDCCCCBCB710514152B81E255DF8544133333313B9105141000000205BF85441E17A146EBB105141A4703D6A57F8544166666656BD105141AE47E16A54F85441666666F6BE105141CDCCCCDC51F8544185EB5158BC10514152B81E8550F8544185EB51B8B5105141713D0A274DF85441AE47E13AB41051411F85EB814FF8544114AE47C1B210514114AE47F151F85441E17A147EB11051419A99990954F854410AD7A300B010514185EB515856F8544114AE4771AF105141295C8F3257F854418FC2F558AE105141F6285CFF58F85441713D0A07AD105141666666665BF854413D0AD753AC1051415C8FC2B55CF854419A9999C9AB1051417B14AE375EF854417B14AEC7AA105141A4703D2A60F85441295C8FF2A9105141CDCCCC8C61F85441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000048E17AD4B0105141713D0A476EF854412F9CC7A2B1105141685F4CF370F85441295C8F12B2105141333333F373F85441A4703D7AB31051413333333375F85441EB6B2348B41051416BCB897972F8544152EA3910B510514120406A0670F85441407CEA29B6105141777FCAAE6CF85441508EAF80B7105141F80F234D69F854417A191BE4B81051418BDE5D2968F854418026693FBA1051418C13F59065F854414566D140BC1051417BEC0A7F61F854415745545DBE105141A20766155DF85441D7E08BECC010514156247E5458F854410AD7A340C3105141333333F353F85441666666F6BE105141CDCCCCDC51F8544161863A56B6105141F6B4726A5FF85441E24A17C3B4105141CD15725262F8544167843162B3105141F2DFFB3066F854410EDB55D6B1105141F5DD874F6BF8544158CB46C0B0105141D79D962D6EF8544148E17AD4B0105141713D0A476EF85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436979 - 3322893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8FF2A9105141CDCCCC8C61F85441F6285CAFA8105141295C8F0263F85441AE47E1FAA91051418FC2F52864F8544114AE4731AB1051413333331365F85441C3F528FCAB105141B81E85FB65F854415C8FC2D5AC105141713D0A1767F8544148E17AC4AD1051411F85EB6168F85441B81E85EBAE1051411F85EB316AF85441B81E85BBAF105141EC51B8BE6BF8544148E17AD4B0105141713D0A476EF85441C3F5284CB210514148E17AF469F85441B81E853BB31051418FC2F5C866F854411F85EBB1B31051417B14AEF764F85441F6285CAFB4105141EC51B89E62F85441EC51B8FEB510514185EB51F85FF85441CDCCCCBCB710514152B81E255DF8544133333313B9105141000000205BF85441E17A146EBB105141A4703D6A57F8544166666656BD105141AE47E16A54F85441666666F6BE105141CDCCCCDC51F8544185EB5158BC10514152B81E8550F8544185EB51B8B5105141713D0A274DF85441AE47E13AB41051411F85EB814FF8544114AE47C1B210514114AE47F151F85441E17A147EB11051419A99990954F854410AD7A300B010514185EB515856F8544114AE4771AF105141295C8F3257F854418FC2F558AE105141F6285CFF58F85441713D0A07AD105141666666665BF854413D0AD753AC1051415C8FC2B55CF854419A9999C9AB1051417B14AE375EF854417B14AEC7AA105141A4703D2A60F85441295C8FF2A9105141CDCCCC8C61F85441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000048E17AD4B0105141713D0A476EF854412F9CC7A2B1105141685F4CF370F85441295C8F12B2105141333333F373F85441A4703D7AB31051413333333375F85441EB6B2348B41051416BCB897972F8544152EA3910B510514120406A0670F85441407CEA29B6105141777FCAAE6CF85441508EAF80B7105141F80F234D69F854417A191BE4B81051418BDE5D2968F854418026693FBA1051418C13F59065F854414566D140BC1051417BEC0A7F61F854415745545DBE105141A20766155DF85441D7E08BECC010514156247E5458F854410AD7A340C3105141333333F353F85441666666F6BE105141CDCCCCDC51F8544161863A56B6105141F6B4726A5FF85441E24A17C3B4105141CD15725262F8544167843162B3105141F2DFFB3066F854410EDB55D6B1105141F5DD874F6BF8544158CB46C0B0105141D79D962D6EF8544148E17AD4B0105141713D0A476EF85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437114 - 3039942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E1BAF5615141A4703D2A4DD1544148E17AE4F2615141E17A14CE4BD1544114AE4701DE615141D7A3709D40D1544133333383C46151415C8FC2F532D1544185EB5168AF6151417B14AEA727D154419A999929AF6151410AD7A36029D15441295C8F82AE615141D7A3705D31D15441F6285C1FAE6151417B14AEF740D154411F85EBB1AE61514152B81E354DD154413D0AD7D3AD615141F6285C8F54D15441295C8F32AE61514185EB514860D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441AE47E1DABA615141666666466DD15441EC51B87EBD61514148E17A5468D15441A4703DFAC76151413D0AD7F36DD154417B14AE37D5615141713D0A7764D154418FC2F578E56151410AD7A3D058D15441AE47E1BAF5615141A4703D2A4DD15441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C07E0463BD615141C79E5E8868D15441952E3985BB615141579CC32A67D154412FF62496B7615141E621B25265D1544177372854B4615141AE05285B63D15441600CDF35B06151413D8B168361D1544165B0BD3AAE61514177E7DEBD60D15441085C9352AE615141158D581462D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441AE47E1DABA615141666666466DD154416A392B09BD615141A270AA3069D15441C07E0463BD615141C79E5E8868D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437114 - 3269749
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E1BAF5615141A4703D2A4DD1544148E17AE4F2615141E17A14CE4BD1544114AE4701DE615141D7A3709D40D1544133333383C46151415C8FC2F532D1544185EB5168AF6151417B14AEA727D154419A999929AF6151410AD7A36029D15441295C8F82AE615141D7A3705D31D15441F6285C1FAE6151417B14AEF740D154411F85EBB1AE61514152B81E354DD154413D0AD7D3AD615141F6285C8F54D15441295C8F32AE61514185EB514860D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441AE47E1DABA615141666666466DD15441EC51B87EBD61514148E17A5468D15441A4703DFAC76151413D0AD7F36DD154417B14AE37D5615141713D0A7764D154418FC2F578E56151410AD7A3D058D15441AE47E1BAF5615141A4703D2A4DD15441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C07E0463BD615141C79E5E8868D15441952E3985BB615141579CC32A67D154412FF62496B7615141E621B25265D1544177372854B4615141AE05285B63D15441600CDF35B06151413D8B168361D1544165B0BD3AAE61514177E7DEBD60D15441085C9352AE615141158D581462D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441AE47E1DABA615141666666466DD154416A392B09BD615141A270AA3069D15441C07E0463BD615141C79E5E8868D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437573 - 3179685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000160000008FC2F508855F514185EB51F819D55441E17A14BE7F5F51415C8FC2E51ED554418FC2F5F87E5F51417B14AEC71FD55441E17A141E855F51410000003027D55441000000A08A5F51413D0AD7D32DD554411F85EBD18E5F5141333333E332D554418FC2F5E89B5F5141AE47E1AA42D55441A4703DDAB35F51417B14AE875FD554413D0AD7F3B65F5141000000105CD55441A4703D2ABC5F5141666666F654D55441F6285C0FBF5F5141A4703DAA4FD554411F85EBC1C05F51415C8FC2B549D554418FC2F558C15F5141666666B644D55441A4703D8ABB5F5141D7A370AD3DD5544133333313B55F51418FC2F5D835D554417B14AE77B45F5141B81E851B35D55441295C8F82BD5F5141EC51B89E2DD5544114AE4711AF5F5141EC51B81E1CD55441666666B69E5F5141E17A144E08D55441E17A141E905F5141C3F5284C11D5544152B81E758A5F51415C8FC23515D554418FC2F508855F514185EB51F819D55441
+</a>
+
+<b>
+0106000000010000000103000000010000008E0000008FC2F508855F514185EB51F819D554410B3066C1845F5141D712F23A1AD554414D14A14C845F51419D96A9A71AD55441C498D1B2825F5141D4CB35251CD55441D2C5C9CD7F5F5141079922D71ED554418FC2F5F87E5F51417B14AEC71FD554419B589C62855F514168639F8227D554419CAB412A865F51418141527328D554419E6F34D2865F51418AFACD3D29D55441E1FA2446885F514195C639FE2AD55441EA42ACA9895F5141F768DCAA2CD55441E564627D8A5F5141DB3B1BAA2DD55441D455AAF18A5F51417A3758362ED55441812A8B558B5F51411349D1AE2ED55441F0CE4EF38B5F5141DEC51C6D2FD554412367DF318C5F514174F493B82FD55441FB4BDEDB8C5F5141FD59A08530D55441A49BEF4C8D5F5141AA1F020E31D55441E4B577DA8D5F51414035B9B831D5544178FAD6228E5F514147C2041032D55441857B86908E5F51414732529432D55441540DCC058F5F5141F5E2BC2133D554410EA80E858F5F5141096826BB33D5544166A0B6E68F5F514147E1DF3034D554417220FF44905F5141A77088A234D554414730FCE2905F514147FAFC6035D55441341F822C915F514155D39EB935D554417DCCAA89915F5141216AEC2936D55441FB33EE28925F5141A95BEAE936D554415FD96095925F51410B3DA66C37D55441A8FDDA20935F51418C01CA1438D554412A016F14945F514146346C3A39D55441B0FCBB5A945F5141D6922B8F39D55441D2B19AA8945F51410CDF0AED39D554418568E51D955F5141FD15707A3AD5544117DE5BE1955F5141B77711663BD554414A60BC73965F51411869D9213CD554413D0209D7965F5141662C3B8E3CD5544143BF9D15975F5141FC2DACD93CD554415850602A975F51414EE4B2F23CD55441DCA7D995975F5141663C42743DD55441A466384E985F51415D5784523ED55441E74A8EAA985F514128D4D3C13ED5544195BE6D5E995F5141B90CAA9A3FD55441A10EED7D9A5F5141A00C3EF540D554418FC2F5E89B5F5141AE47E1AA42D55441CFA871319C5F51413646420243D554419553CED29C5F5141348EC7C443D5544117F49C7A9D5F5141BCD9118F44D55441F5E299A29F5F514153AF7C2847D55441C09D5F34A05F5141F0EB36D847D55441EB21732CA15F5141C1BE440349D55441296A9B3EA25F5141CA5BC34D4AD5544177F37533A35F5141DCACEE744BD55441F1C7C249A55F514180EA06F94DD5544115CB6915A75F51410F6B222350D554415F083952AC5F5141BB54787356D55441F5122313AD5F51412ED3065C57D55441A753649BAD5F514141E8470058D554411524CDBAB15F514191A091F85CD55441BBBE0744B25F5141FD4CFF9D5DD554412CA966FCB25F5141493B417C5ED55441A4703DDAB35F51417B14AE875FD5544149452947B45F514191AAD80D5FD554417A2EFABBB45F514191932E8B5ED5544165F7683CB55F5141901086FB5DD55441EB9DDFA2B55F51411ED0E9885DD554413D0AD7F3B65F5141000000105CD55441C48B6E4AB95F514184E3A6E058D554412C388F9BB95F514113AA257258D554414A940137BA5F51414E5B699E57D554418D27E53BBB5F5141CA4F0D3B56D55441A4703D2ABC5F5141666666F654D554415B7B5D5CBE5F5141B166C7F150D55441045247A4BE5F5141559F2F6E50D55441F6285C0FBF5F5141A4703DAA4FD55441D6E9FAFDBF5F5141BCFD22654CD55441A389DE22C05F5141C5CFB9E34BD554411F85EBC1C05F51415C8FC2B549D55441BA23CE49C15F5141A019C43645D554418FC2F558C15F5141666666B644D5544148A1EEC1C05F5141FDE377FF43D55441FEA59A02C05F51415D26B91743D55441D8D6EC9CBF5F5141C4AE909C42D55441255F24A1BE5F51417F21986B41D5544175638F22BE5F5141B0C445D240D55441BD8F6376BD5F51419528BB0140D5544120F4878DBC5F5141CFEAAEE73ED55441A4703D8ABB5F5141D7A370AD3DD554411D2CF385BA5F5141A5E557723CD55441298658D2B95F51416381CC983BD5544193F2C571B85F5141C87DA7ED39D5544168FBFEB6B75F51417AAA830B39D5544134BB3023B75F514172497C5838D55441DF0718DAB55F5141BD7FDEC936D5544133333313B55F51418FC2F5D835D554417B14AE77B45F5141B81E851B35D55441990F0812B55F51417330B69B34D55441DAF049AEB55F5141DE42531A34D554415C8F821DB65F5141DEF43ABE33D55441BD13BB30BC5F51416C4574B62ED554412EE8189CBC5F5141D30F8D5D2ED55441295C8F82BD5F5141EC51B89E2DD554418E90E2ACBC5F5141BC47CF9B2CD5544139829263BC5F51414AFFF9422CD5544188F8C5B3BB5F514178EDF56D2BD55441296C3372BB5F514105A4811E2BD5544188FF8953BA5F5141146828C329D55441D37FF91DB95F514122E00E4C28D554419D951BE6B75F5141F4252BD226D55441B859FCA5B65F514187B5464E25D5544183CCC2C5B55F51419C28953E24D5544149F4D11BB05F5141CCE5AF611DD5544114AE4711AF5F5141EC51B81E1CD55441F3C87EB7AB5F51417635770F18D554414A70B4D8A15F5141B4081E1A0CD55441D5BB4D6BA15F5141055792950BD55441CABB72209F5F51418D3590CE08D5544141DC2E6C9E5F514121C6CE7B08D5544169F6CA999D5F514123C76FFD08D55441106FA3ED9B5F51419FE23C050AD55441FEF30FFE9A5F5141CD65D9980AD554417DBFC56F9A5F5141B1E184F00AD554414FD215F2995F5141129EF53D0BD5544129490DEF985F5141BD228FDD0BD55441AE780F6C985F5141BE83442E0CD554410B78BE7E975F5141269B7CC00CD55441E89500E3955F51410AEE2CBE0DD55441FF28E206955F5141C56FCC450ED55441CF6937FA935F5141AF7955EB0ED55441C644D671925F51419BC617DD0FD55441310BE962915F51414A3C058410D55441A3F62E32905F51412B07C63F11D55441CF3527948E5F5141BAB2765C12D5544148ECC7BD8D5F51416F3FA6F012D5544113795A388D5F514173BCE14C13D55441EE5CF92B8B5F5141077F5CB714D5544152B81E758A5F51415C8FC23515D55441FB8E27E8895F514167BB80B115D5544172E45EBB885F514180C189B916D554418299842F865F5141D3FEBFF518D554418FC2F508855F514185EB51F819D55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437573 - 3585168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000160000008FC2F508855F514185EB51F819D55441E17A14BE7F5F51415C8FC2E51ED554418FC2F5F87E5F51417B14AEC71FD55441E17A141E855F51410000003027D55441000000A08A5F51413D0AD7D32DD554411F85EBD18E5F5141333333E332D554418FC2F5E89B5F5141AE47E1AA42D55441A4703DDAB35F51417B14AE875FD554413D0AD7F3B65F5141000000105CD55441A4703D2ABC5F5141666666F654D55441F6285C0FBF5F5141A4703DAA4FD554411F85EBC1C05F51415C8FC2B549D554418FC2F558C15F5141666666B644D55441A4703D8ABB5F5141D7A370AD3DD5544133333313B55F51418FC2F5D835D554417B14AE77B45F5141B81E851B35D55441295C8F82BD5F5141EC51B89E2DD5544114AE4711AF5F5141EC51B81E1CD55441666666B69E5F5141E17A144E08D55441E17A141E905F5141C3F5284C11D5544152B81E758A5F51415C8FC23515D554418FC2F508855F514185EB51F819D55441
+</a>
+
+<b>
+0106000000010000000103000000010000008E0000008FC2F508855F514185EB51F819D554410B3066C1845F5141D712F23A1AD554414D14A14C845F51419D96A9A71AD55441C498D1B2825F5141D4CB35251CD55441D2C5C9CD7F5F5141079922D71ED554418FC2F5F87E5F51417B14AEC71FD554419B589C62855F514168639F8227D554419CAB412A865F51418141527328D554419E6F34D2865F51418AFACD3D29D55441E1FA2446885F514195C639FE2AD55441EA42ACA9895F5141F768DCAA2CD55441E564627D8A5F5141DB3B1BAA2DD55441D455AAF18A5F51417A3758362ED55441812A8B558B5F51411349D1AE2ED55441F0CE4EF38B5F5141DEC51C6D2FD554412367DF318C5F514174F493B82FD55441FB4BDEDB8C5F5141FD59A08530D55441A49BEF4C8D5F5141AA1F020E31D55441E4B577DA8D5F51414035B9B831D5544178FAD6228E5F514147C2041032D55441857B86908E5F51414732529432D55441540DCC058F5F5141F5E2BC2133D554410EA80E858F5F5141096826BB33D5544166A0B6E68F5F514147E1DF3034D554417220FF44905F5141A77088A234D554414730FCE2905F514147FAFC6035D55441341F822C915F514155D39EB935D554417DCCAA89915F5141216AEC2936D55441FB33EE28925F5141A95BEAE936D554415FD96095925F51410B3DA66C37D55441A8FDDA20935F51418C01CA1438D554412A016F14945F514146346C3A39D55441B0FCBB5A945F5141D6922B8F39D55441D2B19AA8945F51410CDF0AED39D554418568E51D955F5141FD15707A3AD5544117DE5BE1955F5141B77711663BD554414A60BC73965F51411869D9213CD554413D0209D7965F5141662C3B8E3CD5544143BF9D15975F5141FC2DACD93CD554415850602A975F51414EE4B2F23CD55441DCA7D995975F5141663C42743DD55441A466384E985F51415D5784523ED55441E74A8EAA985F514128D4D3C13ED5544195BE6D5E995F5141B90CAA9A3FD55441A10EED7D9A5F5141A00C3EF540D554418FC2F5E89B5F5141AE47E1AA42D55441CFA871319C5F51413646420243D554419553CED29C5F5141348EC7C443D5544117F49C7A9D5F5141BCD9118F44D55441F5E299A29F5F514153AF7C2847D55441C09D5F34A05F5141F0EB36D847D55441EB21732CA15F5141C1BE440349D55441296A9B3EA25F5141CA5BC34D4AD5544177F37533A35F5141DCACEE744BD55441F1C7C249A55F514180EA06F94DD5544115CB6915A75F51410F6B222350D554415F083952AC5F5141BB54787356D55441F5122313AD5F51412ED3065C57D55441A753649BAD5F514141E8470058D554411524CDBAB15F514191A091F85CD55441BBBE0744B25F5141FD4CFF9D5DD554412CA966FCB25F5141493B417C5ED55441A4703DDAB35F51417B14AE875FD5544149452947B45F514191AAD80D5FD554417A2EFABBB45F514191932E8B5ED5544165F7683CB55F5141901086FB5DD55441EB9DDFA2B55F51411ED0E9885DD554413D0AD7F3B65F5141000000105CD55441C48B6E4AB95F514184E3A6E058D554412C388F9BB95F514113AA257258D554414A940137BA5F51414E5B699E57D554418D27E53BBB5F5141CA4F0D3B56D55441A4703D2ABC5F5141666666F654D554415B7B5D5CBE5F5141B166C7F150D55441045247A4BE5F5141559F2F6E50D55441F6285C0FBF5F5141A4703DAA4FD55441D6E9FAFDBF5F5141BCFD22654CD55441A389DE22C05F5141C5CFB9E34BD554411F85EBC1C05F51415C8FC2B549D55441BA23CE49C15F5141A019C43645D554418FC2F558C15F5141666666B644D5544148A1EEC1C05F5141FDE377FF43D55441FEA59A02C05F51415D26B91743D55441D8D6EC9CBF5F5141C4AE909C42D55441255F24A1BE5F51417F21986B41D5544175638F22BE5F5141B0C445D240D55441BD8F6376BD5F51419528BB0140D5544120F4878DBC5F5141CFEAAEE73ED55441A4703D8ABB5F5141D7A370AD3DD554411D2CF385BA5F5141A5E557723CD55441298658D2B95F51416381CC983BD5544193F2C571B85F5141C87DA7ED39D5544168FBFEB6B75F51417AAA830B39D5544134BB3023B75F514172497C5838D55441DF0718DAB55F5141BD7FDEC936D5544133333313B55F51418FC2F5D835D554417B14AE77B45F5141B81E851B35D55441990F0812B55F51417330B69B34D55441DAF049AEB55F5141DE42531A34D554415C8F821DB65F5141DEF43ABE33D55441BD13BB30BC5F51416C4574B62ED554412EE8189CBC5F5141D30F8D5D2ED55441295C8F82BD5F5141EC51B89E2DD554418E90E2ACBC5F5141BC47CF9B2CD5544139829263BC5F51414AFFF9422CD5544188F8C5B3BB5F514178EDF56D2BD55441296C3372BB5F514105A4811E2BD5544188FF8953BA5F5141146828C329D55441D37FF91DB95F514122E00E4C28D554419D951BE6B75F5141F4252BD226D55441B859FCA5B65F514187B5464E25D5544183CCC2C5B55F51419C28953E24D5544149F4D11BB05F5141CCE5AF611DD5544114AE4711AF5F5141EC51B81E1CD55441F3C87EB7AB5F51417635770F18D554414A70B4D8A15F5141B4081E1A0CD55441D5BB4D6BA15F5141055792950BD55441CABB72209F5F51418D3590CE08D5544141DC2E6C9E5F514121C6CE7B08D5544169F6CA999D5F514123C76FFD08D55441106FA3ED9B5F51419FE23C050AD55441FEF30FFE9A5F5141CD65D9980AD554417DBFC56F9A5F5141B1E184F00AD554414FD215F2995F5141129EF53D0BD5544129490DEF985F5141BD228FDD0BD55441AE780F6C985F5141BE83442E0CD554410B78BE7E975F5141269B7CC00CD55441E89500E3955F51410AEE2CBE0DD55441FF28E206955F5141C56FCC450ED55441CF6937FA935F5141AF7955EB0ED55441C644D671925F51419BC617DD0FD55441310BE962915F51414A3C058410D55441A3F62E32905F51412B07C63F11D55441CF3527948E5F5141BAB2765C12D5544148ECC7BD8D5F51416F3FA6F012D5544113795A388D5F514173BCE14C13D55441EE5CF92B8B5F5141077F5CB714D5544152B81E758A5F51415C8FC23515D55441FB8E27E8895F514167BB80B115D5544172E45EBB885F514180C189B916D554418299842F865F5141D3FEBFF518D554418FC2F508855F514185EB51F819D55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>438468 - 5178037
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DDAADE6504133333343AB715441AE47E15AB3E6504185EB51D8AD7154417B14AE37B5E6504114AE47D1A5715441AE47E15ABBE6504152B81EB58F7154410AD7A3A0BDE65041AE47E1DA84715441D7A3703DB9E65041EC51B80E7F715441CDCCCC7CB8E65041000000107E71544114AE47E1B4E65041666666A68E7154410AD7A310AFE65041A4703DDAA4715441AE47E16AAEE650413D0AD7A3A8715441A4703DDAADE6504133333343AB715441
+</a>
+
+<b>
+010600000001000000010300000001000000190000008FC2F5D8AAE650416666664661715441AE47E14AA8E650415C8FC235627154419A999919A5E6504114AE473163715441713D0A27A7E6504185EB51886C715441713D0A97AAE65041295C8F12777154413D0AD773AEE65041C3F5287C807154417B14AE37B1E650413D0AD7B37D715441CDCCCCCCB1E650417B14AE077F71544133333393AEE65041F6285CAF8D715441DF584754AEE65041FE633CBC8E7154419CD602C2ABE65041056211B9997154417F1A3F5EA8E6504128914A35A87154419B74385DA8E65041BEEAAC39A8715441691CA62FA8E65041D9A669FCA87154411FC52DF2ADE65041A1FC15D4AA715441689B6A09AEE65041E9938E68AA7154410AD7A310AFE65041A4703DDAA471544114AE47E1B4E65041666666A68E715441CDCCCC7CB8E65041000000107E715441295C8F22B5E650413D0AD7B3797154418FC2F5A8B3E650415C8FC2357B715441814867A1B3E65041398286287B71544114AE47E1B1E650417B14AE17787154413D0AD773ADE65041295C8F226C7154418FC2F5D8AAE650416666664661715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>439015 - 1750386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE479169E95041713D0A47CE71544152B81EB562E95041A4703DDACE715441C3F5289C60E95041D7A370EDF3715441C3F5284C61E95041CDCCCC8CF5715441C3F5283C64E95041713D0A97F37154418FC2F5186AE95041E17A14BEF071544148E17AE46AE950415C8FC255F17154415C8FC2456FE950418FC2F548EF715441F6285C0F75E95041295C8F62EC715441C3F5281C79E9504185EB51E8E9715441B81E853B7DE95041E17A14BEE671544148E17AA482E9504133333383E0715441C3F5288C82E950419A9999B9D77154419A9999697BE95041295C8F32D8715441000000B070E95041E17A149ED87154410AD7A35070E9504133333353CD71544114AE479169E95041713D0A47CE715441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000042C0186874E950415D622580D97154413F9369D772E95041C3BE1CC4D97154419E34EBCE6EE950414979A1BDD97154419E34EBCE6EE950411FEBADA3D97154419E34EBCE6EE950411A757153D97154419E34EBCE6EE95041970216DAD8715441C86377A66EE95041B19DC6E6D47154415EE0C8806EE9504126B4501CD37154418EE1973A6EE95041A109EB1BD1715441BAAC4C756CE9504128E36428D17154412E93D27C68E9504106BB565FD1715441937315C264E950416E4A7C92D1715441885491B162E95041F94CBABDD1715441C3F5289C60E95041D7A370EDF3715441C3F5284C61E95041CDCCCC8CF5715441C3F5283C64E95041713D0A97F37154418FC2F5186AE95041E17A14BEF071544148E17AE46AE950415C8FC255F17154415C8FC2456FE950418FC2F548EF715441F6285C0F75E95041295C8F62EC715441C3F5281C79E9504185EB51E8E9715441B81E853B7DE95041E17A14BEE6715441B0D073EE82E95041C016254AE1715441F77DBC8F82E9504172506804D97154416C816E0075E95041C671D577D971544142C0186874E950415D622580D9715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>439015 - 3386200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE479169E95041713D0A47CE71544152B81EB562E95041A4703DDACE715441C3F5289C60E95041D7A370EDF3715441C3F5284C61E95041CDCCCC8CF5715441C3F5283C64E95041713D0A97F37154418FC2F5186AE95041E17A14BEF071544148E17AE46AE950415C8FC255F17154415C8FC2456FE950418FC2F548EF715441F6285C0F75E95041295C8F62EC715441C3F5281C79E9504185EB51E8E9715441B81E853B7DE95041E17A14BEE671544148E17AA482E9504133333383E0715441C3F5288C82E950419A9999B9D77154419A9999697BE95041295C8F32D8715441000000B070E95041E17A149ED87154410AD7A35070E9504133333353CD71544114AE479169E95041713D0A47CE715441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000042C0186874E950415D622580D97154413F9369D772E95041C3BE1CC4D97154419E34EBCE6EE950414979A1BDD97154419E34EBCE6EE950411FEBADA3D97154419E34EBCE6EE950411A757153D97154419E34EBCE6EE95041970216DAD8715441C86377A66EE95041B19DC6E6D47154415EE0C8806EE9504126B4501CD37154418EE1973A6EE95041A109EB1BD1715441BAAC4C756CE9504128E36428D17154412E93D27C68E9504106BB565FD1715441937315C264E950416E4A7C92D1715441885491B162E95041F94CBABDD1715441C3F5289C60E95041D7A370EDF3715441C3F5284C61E95041CDCCCC8CF5715441C3F5283C64E95041713D0A97F37154418FC2F5186AE95041E17A14BEF071544148E17AE46AE950415C8FC255F17154415C8FC2456FE950418FC2F548EF715441F6285C0F75E95041295C8F62EC715441C3F5281C79E9504185EB51E8E9715441B81E853B7DE95041E17A14BEE6715441B0D073EE82E95041C016254AE1715441F77DBC8F82E9504172506804D97154416C816E0075E95041C671D577D971544142C0186874E950415D622580D9715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441191 - 301319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000010000000295C8FA24CFF5041CDCCCC6CD41C5541AE47E1AA45FF504166666606DC1C5541A4703D0A4AFF5041EC51B8FEDF1C55415C8FC2A54DFF5041A4703D5AE01C5541EC51B81E53FF504152B81E15D91C5541AE47E1DA56FF504133333343D51C5541666666865BFF5041A4703DAAD61C554152B81E9563FF504152B81EC5BA1C55411F85EBB161FF504152B81E65B81C554148E17A1461FF5041CDCCCC6CB61C5541E17A145E56FF50411F85EBC1B81C55418FC2F5585CFF5041A4703D4AB91C554185EB51F858FF5041713D0A27C01C5541295C8F5255FF5041713D0AF7C61C55410000007051FF504185EB51E8CD1C5541295C8FA24CFF5041CDCCCC6CD41C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000A7FC542B63FF504122765B33BC1C5541BCF5A39163FF504163E5BDC0BA1C554110C1BA5D63FF5041FD606C7FBA1C55411F85EBB161FF504152B81E65B81C554148E17A1461FF5041CDCCCC6CB61C5541F45B12AA5DFF50410EBF302BB71C554171914DD559FF50417046BD00B81C5541B89D23C159FF5041FCFC200FB91C55413648F9DC57FF50415A032B0AC01C554109F1E30B57FF5041F4598BC0C31C55410838CF4156FF504170A89D9CC51C554146C6D6D554FF5041E27ABFE1C81C55412073019F51FF5041AA8F5DF5CD1C5541B030880B50FF504182B215CCCF1C5541D7CC26374CFF5041FFA6DC43D41C554115FF568946FF50415BB43300DB1C55413ADAACA248FF50411EF16C66DC1C55415CB502BC4AFF5041D2B2582EDE1C554119C9CC424CFF50411EADB863DF1C554189E944964DFF5041AE72B458E01C554187B5EA034EFF5041CA0728DDDF1C554155B4754C52FF50417640712CDA1C55411011AD4F52FF504171A6B01DDA1C5541EC51B81E53FF504152B81E15D91C5541AE47E1DA56FF504133333343D51C554152A9441258FF50413C6BB7A0D51C5541666666865BFF5041A4703DAAD61C5541A7FC542B63FF504122765B33BC1C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441643 - 3229681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000CC0100001F85EBC134105141000000E06A27554114AE470131105141A4703DEA64275541000000102E105141000000106A2755417B14AED72C105141CDCCCCBC6E27554148E17AF42910514114AE478176275541E17A143E2810514114AE47217827554148E17A642710514152B81ED578275541EC51B86E2610514152B81E5579275541666666062410514114AE47617A275541713D0A272210514148E17A547B275541713D0AF71F1051413D0AD7D37C275541333333B3171051419A999929802755413D0AD70315105141C3F528DC7F2755413333332315105141AE47E1FA7F2755418FC2F5181F1051418FC2F5B8892755410AD7A300221051415C8FC2F58B2755415C8FC20524105141713D0A879127554152B81E85241051417B14AE2792275541CDCCCC6C25105141666666E692275541E17A146E2610514133333383932755418FC2F5B828105141CDCCCC3CA42755417B14AE072D10514166666636A52755415C8FC2B52E10514152B81ED5A7275541E17A140E30105141CDCCCC4CA7275541D7A3700D311051411F85EB11A727554114AE47513210514185EB51E8A62755410AD7A3303310514152B81EA5A6275541B81E850B34105141C3F5289CA6275541295C8F2235105141B81E85ABA6275541F6285C4F36105141B81E85DBA6275541A4703DCA37105141B81E852BA7275541713D0A373910514166666666A7275541713D0A273A10514152B81E85A7275541713D0A273B105141AE47E1AAA72755417B14AEA73B1051410AD7A3B0A7275541A4703DDA3B105141333333B3A7275541EC51B84E3D1051415C8FC295A7275541A4703D0A3E10514148E17AA4A7275541A4703DFA3E105141B81E85BBA7275541295C8FF23F1051418FC2F5E8A72755418FC2F59840105141713D0AF7A72755419A99996941105141CDCCCCFCA72755411F85EB714210514133333313A82755410AD7A33043105141E17A143EA82755413D0AD7C343105141CDCCCC7CA827554152B81EC544105141B81E85EBA8275541C3F5289C45105141713D0A37A927554152B81E75461051415C8FC2A5A9275541CDCCCC1C4710514152B81EF5A9275541EC51B89E4710514100000030AA2755417B14AE47481051415C8FC265AA275541713D0A37491051413D0AD783AA275541AE47E1DA491051418FC2F598AA2755419A9999794A10514166666696AA2755410AD7A3304B105141333333C3AA275541CDCCCCCC4B105141A4703DFAAA27554152B81E954C1051415C8FC275AB275541EC51B83E4D105141C3F528DCAB2755418FC2F5C84D105141EC51B81EAC2755410AD7A3804E1051413D0AD753AC2755419A9999394F10514100000050AC27554114AE47015010514148E17A54AC275541B81E858B50105141A4703D4AAC27554114AE47015110514185EB5108AC27554152B81EA5511051418FC2F5C8AB275541A4703D2A52105141CDCCCC9CAB275541CDCCCC9C521051411F85EB51AB275541A4703D2A531051417B14AE37AB275541D7A370CD53105141CDCCCCFCAA275541C3F5288C5410514152B81ED5AA27554148E17A34551051418FC2F598AA275541E17A14AE551051417B14AE57AA275541AE47E1FA5510514152B81E25AA2755413D0AD76356105141EC51B8CEA927554148E17AA456105141CDCCCC6CA9275541A4703D2A571051419A999909A92755413D0AD79357105141B81E85CBA827554185EB51085810514185EB5198A82755411F85EB8158105141EC51B86EA827554114AE472159105141CDCCCC8CA82755415C8FC2D559105141C3F528ACA82755417B14AEA75A105141EC51B8DEA8275541713D0A875B105141C3F528FCA8275541EC51B80E5C105141C3F5283CA9275541AE47E1DA5C105141A4703D5AA927554185EB51385D1051418FC2F558A9275541333333B35D1051417B14AE37A92755418FC2F5485E10514152B81EE5A82755410AD7A3905E1051417B14AEA7A82755418FC2F5E85E105141D7A3703DA8275541CDCCCC2C5F105141666666B6A7275541AE47E10A5F105141D7A3704DA7275541CDCCCCDC5E105141CDCCCCDCA6275541EC51B86E5E105141000000A0A527554185EB51185E1051411F85EB81A42755417B14AED75D10514148E17AB4A3275541C3F5288C5D10514114AE47E1A22755417B14AE675D1051413D0AD743A2275541D7A3702D5D1051417B14AEC7A1275541C3F528CC5C105141E17A143EA12755417B14AE375C105141333333C3A0275541C3F528DC5B105141295C8F72A0275541333333235B105141333333F39F275541B81E858B5A105141713D0AB79F27554185EB51085A10514185EB51B89F275541B81E85BB59105141A4703DCA9F275541A4703D4A5910514185EB51F89F275541295C8FF25810514114AE4751A0275541EC51B8BE5810514133333393A0275541713D0A2758105141295C8F22A1275541A4703D9A571051415C8FC285A12755418FC2F52857105141713D0AB7A1275541295C8F9256105141295C8FD2A12755416666660656105141A4703DAAA127554114AE47A155105141B81E859BA1275541E17A141E55105141B81E854BA1275541EC51B8CE5410514152B81E15A12755415C8FC285541051418FC2F5D8A02755419A99994954105141EC51B83EA02755415C8FC205541051419A9999A99F275541333333D3531051410AD7A3109F275541B81E85BB5310514114AE47319E27554114AE47A153105141333333B39D27554148E17A6453105141D7A370ED9C2755418FC2F52853105141666666069C2755415C8FC205531051413D0AD7439B275541F6285CCF5210514148E17A249A2755418FC2F5A852105141713D0A9799275541CDCCCCDC53105141E17A140E96275541B81E850B54105141C3F5288C95275541295C8F625410514148E17A149527554152B81EB554105141A4703DBA9427554152B81E25551051417B14AE67942755411F85EBA155105141EC51B83E94275541713D0AB75510514148E17A3494275541D7A370AD56105141E17A14BE93275541E17A144E5710514152B81E7593275541AE47E1FA571051411F85EB4193275541EC51B8AE5810514185EB5118932755410AD7A36059105141A4703D0A93275541666666365A1051415C8FC22593275541D7A3700D5B105141B81E854B93275541B81E85AB5B1051413D0AD77393275541666666465C105141AE47E17A9327554152B81E055D10514114AE47C1932755415C8FC2255E1051415C8FC23594275541E17A14DE5E105141D7A3706D942755417B14AE575F10514148E17A9494275541C3F528BC5F1051413D0AD7A39427554185EB513860105141C3F528EC942755419A9999096210514185EB51B8952755419A99999962105141AE47E1DA952755419A999989641051411F85EB51962755411F85EBB1651051417B14AE8796275541D7A3706D66105141000000B096275541C3F528EC66105141EC51B8BE96275541AE47E16A67105141E17A14DE96275541713D0A37681051410AD7A310972755415C8FC2C5681051410000002097275541B81E858B69105141EC51B81E972755415C8FC2C5691051417B14AE17972755418FC2F5386B105141666666F6962755417B14AE076D1051410AD7A37096275541666666966D10514185EB512896275541F6285CCF6D1051419A9999C995275541EC51B8BE6D1051417B14AE679527554148E17AA46D105141333333E394275541EC51B86E6D1051417B14AED7932755413D0AD7936D105141B81E85FB92275541D7A370DD6D105141D7A3709D92275541F6285C5F6E105141CDCCCC4C922755415C8FC2C56E1051415C8FC245922755417B14AE576F105141F6285C3F92275541EC51B8CE6F1051410AD7A330922755410AD7A33070105141C3F528FC9127554185EB511871105141295C8F2291275541B81E852B721051417B14AEE78F275541333333E3721051410AD7A3108F275541AE47E17A7310514185EB51688E2755413D0AD7A373105141666666168E275541E17A14BE7310514185EB51B88D275541713D0AC77310514114AE47F18C275541F6285CCF73105141F6285C9F8C275541000000E0731051415C8FC2458C275541295C8F227410514114AE47F18B275541AE47E16A741051410AD7A3C08B275541295C8FC2741051419A9999798B275541B81E851B75105141333333E38A275541F6285C7F751051410AD7A3208A275541EC51B8BE75105141295C8F92892755417B14AEF77510514114AE474189275541AE47E15A761051413D0AD79388275541C3F5286C76105141D7A370FD872755415C8FC265761051411F85EB5187275541D7A3700D761051411F85EBB186275541713D0AE775105141295C8FF285275541000000E075105141713D0A778527554114AE471176105141AE47E1FA84275541C3F5284C761051419A99998984275541CDCCCCDC76105141A4703DBA83275541E17A14FE761051418FC2F55883275541713D0A0777105141C3F528FC82275541000000E0761051410AD7A3808227554114AE47E176105141B81E85FB81275541295C8FF2761051419A99998981275541D7A3706D771051418FC2F52881275541B81E850B78105141AE47E15A81275541713D0A9778105141E17A149E812755413D0AD713791051417B14AEB781275541AE47E18A791051418FC2F5A88127554152B81EE57910514185EB517881275541666666267A105141B81E850B81275541295C8F827A1051418FC2F54880275541295C8F027B105141D7A370FD7F275541CDCCCC6C7B10514152B81EE57F2755413D0AD7F37B105141EC51B8CE7F275541C3F5284C7C1051417B14AEE77F275541333333C37C1051410AD7A3C07F275541666666367D1051410AD7A3907F2755418FC2F5587D105141C3F5283C7F2755410AD7A3D07D10514114AE47517E275541B81E851B7E1051413D0AD7037E275541E17A146E7E10514148E17AC47D275541C3F528CC7E1051413D0AD7937D275541EC51B84E7F105141D7A3706D7D275541000000308010514185EB51887D2755417B14AED781105141EC51B8EE7D275541C3F5286C8210514185EB51E87D2755419A9999C9821051419A9999D97D275541CDCCCC0C8310514185EB51987D27554185EB515883105141295C8FF27C2755411F85EB61831051410AD7A3707C2755413333335383105141A4703DDA7B275541A4703D0A83105141F6285C5F7B27554148E17A9482105141F6285CBF7A2755413333333382105141CDCCCC5C7A275541A4703DEA8110514152B81ED57927554185EB51C881105141713D0A37792755415C8FC29581105141295C8F4278275541E17A148E81105141EC51B8AE77275541E17A14AE811051417B14AE27772755418FC2F52882105141CDCCCC8C76275541B81E857B82105141F6285C3F7627554185EB519882105141D7A370ED752755410AD7A3A08210514166666646752755418FC2F5B882105141A4703D9A74275541333333F382105141333333337427554166666676831051418FC2F5C873275541E17A14EE83105141B81E855B732755418FC2F558841051410AD7A3F072275541EC51B8BE84105141EC51B88E722755419A9999198510514100000040722755413D0AD77385105141F6285CEF712755411F85EBC18510514152B81EA571275541666666368610514152B81E857127554148E17AA4861051417B14AE67712755417B14AE27871051415C8FC205712755419A9999E987105141333333837027554152B81E758810514148E17A3470275541CDCCCCDC88105141A4703DDA6F27554100000050891051419A9999B96F275541AE47E1AA89105141F6285C7F6F275541AE47E14A8A10514114AE47916F27554114AE47D18A105141C3F5287C6F275541666666668B105141C3F5285C6F2755417B14AE378C1051419A9999E96E275541295C8F128D105141F6285CAF6E275541333333A38D105141666666866E275541EC51B82E8E1051419A9999796E275541666666968E1051419A9999696E2755411F85EB218F1051418FC2F5686E275541CDCCCC0C90105141E17A148E6E275541F6285CDF90105141E17A14BE6E275541AE47E17A911051417B14AEE76E275541B81E851B92105141F6285CFF6E2755413D0AD7C392105141F6285CFF6E27554114AE474193105141713D0AE76E2755417B14AEB79310514152B81ED56E275541AE47E13A94105141EC51B8DE6E275541333333B394105141666666F66E275541D7A370FD94105141F6285C3F6F2755415C8FC225951051415C8FC2956F275541F6285C4F9510514185EB5108702755417B14AE7795105141A4703D4A7027554152B81EB595105141A4703D4A70275541666666D69510514100000000702755410AD7A3F095105141D7A3708D6F2755419A99991996105141666666066F275541CDCCCC5C96105141C3F528BC6E275541295C8FA296105141B81E858B6E275541E17A140E97105141666666766E27554114AE478197105141666666766E2755419A99990998105141333333A36E27554152B81E9598105141333333C36E275541295C8FD298105141AE47E1CA6E2755410000006099105141A4703DAA6E27554114AE47119A1051411F85EB916E27554148E17AE49A10514114AE47816E27554185EB51789B105141C3F5285C6E2755418FC2F5089C105141B81E854B6E275541C3F5288C9C1051411F85EB216E275541CDCCCC0C9D1051418FC2F5086E275541000000709D1051418FC2F5E86D275541333333739E105141295C8F426E275541B81E85EB9E105141AE47E14A6E275541EC51B85E9F1051410AD7A3306E275541CDCCCCBC9F10514185EB51186E27554185EB5138A0105141000000006E27554114AE47D1A01051417B14AE076E275541EC51B87EA1105141F6285CFF6D275541713D0A07A21051415C8FC2D56D275541295C8F92A2105141CDCCCCAC6D27554133333323A3105141C3F5287C6D275541EC51B89EA3105141D7A3703D6D275541EC51B80EA4105141C3F528FC6C2755419A999959A41051419A9999A96C275541AE47E19AA4105141C3F5284C6C2755418FC2F5E8A4105141F6285CCF6B27554166666666A5105141666666866B27554148E17AD4A51051418FC2F5686B275541F6285C4FA6105141E17A148E6B275541000000E0A6105141EC51B89E6B27554152B81E85A71051418FC2F5586B275541D7A3700DA81051415C8FC2F56A2755418FC2F588A8105141B81E85AB6A27554114AE4711A91051415C8FC2656A275541C3F5289CA9105141D7A3703D6A2755413D0AD703AA105141CDCCCC2C6A275541CDCCCC6CAA105141A4703D6A6A275541D7A3700DAB105141AE47E17A6A275541A4703DAAAB105141333333836A275541000000F0AB1051415C8FC2656A275541295C8F32AC105141CDCCCC2C6A27554152B81EA5AC105141A4703DDA69275541E17A144EAD1051411F85EB21692755418FC2F5B8AD105141666666B668275541EC51B8FEAD105141C3F5287C682755418FC2F558AE105141EC51B84E682755413D0AD7C3AE1051416666663668275541B81E854BAF105141F6285C4F68275541333333F3AF105141CDCCCC7C6827554100000090B010514148E17A64682755415C8FC2D5B0105141713D0A376827554185EB5118B1105141A4703DAA67275541EC51B80EB11051413D0AD7336727554114AE4731B11051410AD7A3C0662755413D0AD7A3B1105141E17A148E662755418FC2F5D8B11051418FC2F56866275541B81E852BB210514185EB5148662755413D0AD763B2105141E17A146E66275541333333C3B2105141EC51B88E662755415C8FC235B3105141EC51B88E66275541E17A145EB31051410AD7A34066275541713D0A77B3105141D7A3705D652755418FC2F588B3105141295C8F126527554114AE47C1B3105141A4703DEA64275541EC51B80EB41051419A9999D96427554133333383B4105141AE47E1FA642755410AD7A300B51051416666666665275541AE47E16AB51051416666666665275541CDCCCC7CB5105141D7A3701D6527554133333373B5105141A4703DBA6427554152B81E85B51051419A999949642755415C8FC2B5B5105141713D0AF763275541B81E85FBB5105141E17A14BE632755415C8FC245B6105141C3F5288C63275541000000B0B6105141C3F5287C632755417B14AE47B71051413D0AD763632755417B14AEE7B710514166666626632755411F85EB61B8105141B81E85DB622755419A9999D9B81051419A9999A9622755413D0AD743B91051418FC2F57862275541EC51B8AEB9105141B81E854B622755415C8FC225BA105141000000C0612755415C8FC2D5BA105141D7A3705D612755410AD7A360BB10514152B81ED560275541AE47E1BABB1051411F85EB816027554100000000BC105141C3F5283C602755410AD7A310BC10514114AE47F15F27554185EB51F8BB105141000000B05F2755410AD7A3F0BB1051417B14AE475F2755410AD7A3F0BB105141CDCCCC0C5F275541295C8F42BC1051419A9999A95E275541D7A370BDBC1051419A9999895E27554148E17A24BD10514114AE47715E275541EC51B87EBD10514148E17A545E275541713D0AC7BD105141C3F5283C5E27554166666626BE105141B81E851B5E2755410AD7A3B0BE1051410AD7A3C05D27554166666606BF1051410AD7A3405D2755410AD7A360BF105141CDCCCCBC5C27554152B81EA5BF105141EC51B86E5C275541713D0AC7C010514185EB51A85A275541EC51B84EC1105141F6285CFF5927554166666666C1105141AE47E1FA58275541EC51B85EC1105141F6285C7F58275541EC51B84EC1105141666666F65727554185EB5188C110514133333373572755415C8FC2F5C1105141AE47E1EA56275541E17A140EC21051419A99994956275541E17A14EEC1105141C3F5289C55275541E17A140EC2105141333333135527554185EB5158C2105141A4703D5A54275541295C8FC2C210514100000000542755419A999949C310514148E17A64532755411F85EB51C31051413D0AD7E3522755411F85EB51C310514185EB5158522755413D0AD783C310514185EB51C85127554114AE47F1C31051417B14AE27512755415C8FC295C4105141D7A370DD50275541CDCCCC3CC5105141B81E858B50275541713D0A87C5105141AE47E1EA4F27554152B81E65C5105141000000804F27554148E17AF4C5105141A4703D2A4F2755418FC2F598C6105141000000504E275541E17A14DEC6105141D7A370CD4D275541E17A14FEC6105141CDCCCC1C4D275541C3F528DCC5105141A4703D0A4D275541295C8FD2C41051419A9999F94C2755411F85EB61C3105141333333234D27554166666606C21051413D0AD7534D27554152B81E65C010514185EB51884D2755413D0AD7D3BE105141295C8FB24D2755410AD7A3B0BC105141B81E850B4E275541E17A145EBC105141D7A3705D4F2755413D0AD7E3BB105141AE47E11A50275541C3F5283CBB1051410AD7A32052275541A4703D6ABA10514152B81E65542755411F85EBA1B9105141CDCCCCAC56275541000000B0B81051417B14AE17592755415C8FC2B5B71051413D0AD7B35C27554133333333AA10514185EB51D861275541CDCCCC6C9E10514185EB514865275541EC51B8BE9110514114AE472168275541000000808D10514148E17A1460275541666666568B105141713D0A175C275541E17A14AE891051419A99999958275541B81E855B80105141666666665D275541A4703DAA751051413D0AD7336327554152B81E15761051418FC2F54867275541C3F5283C77105141AE47E1BA6E275541C3F5287C781051413D0AD75377275541E17A14EE74105141AE47E1EA76275541713D0A7771105141C3F5284C76275541CDCCCC1C6D105141295C8F92752755415C8FC275681051418FC2F58876275541295C8F4264105141666666B6772755410AD7A320651051419A9999897B2755419A99992961105141666666B67C275541F6285C3F5D105141000000E07D27554133333313581051418FC2F5687F275541000000E052105141295C8F52812755411F85EBD147105141F6285C3F84275541EC51B8FE41105141333333338627554185EB51F83F1051410000008081275541000000F03D105141A4703D2A7E275541AE47E16A3910514148E17A4476275541E17A14AE381051415C8FC2257327554185EB51B837105141713D0AE76F2755411F85EBC134105141000000E06A2755410103000000010000001B000000E17A141E8410514148E17A6474275541D7A3704D831051416666665675275541295C8FF2821051413D0AD7D3752755410AD7A3B082105141000000507627554185EB51988210514152B81EC576275541AE47E16A82105141713D0A1777275541A4703D4A82105141666666A677275541295C8F42821051418FC2F51878275541295C8F528210514100000090782755413D0AD76382105141666666D6782755417B14AE8782105141000000C0782755417B14AEB785105141B81E85CB7527554185EB51288A105141333333A3702755417B14AE67891051413333338370275541CDCCCCFC88105141AE47E19A7027554148E17A6488105141B81E85CB702755411F85EB01881051415C8FC22571275541713D0AA78710514133333373712755410AD7A3408710514152B81EB571275541C3F528CC86105141713D0AF771275541E17A145E861051417B14AE3772275541B81E85EB8510514114AE4761722755418FC2F59885105141EC51B8AE72275541AE47E13A851051418FC2F5F87227554185EB51D88410514133333363732755415C8FC285841051418FC2F5D873275541E17A141E8410514148E17A6474275541
+</a>
+
+<b>
+010600000001000000010300000001000000E6010000713D0A279A105141000000606F275541B81E853B9910514152B81EA56F275541CDCCCCCC98105141CDCCCC8C6F275541B81E856B981051417B14AE776F27554185EB5108981051417B14AE576F2755410AD7A390971051417B14AE476F275541D7A3701D9710514185EB51586F2755413D0AD7E396105141D7A3708D6F275541C3F5289C961051417B14AEE76F275541B81E856B961051410AD7A330702755410AD7A33096105141713D0A77702755417B14AEF7951051417B14AEB770275541CDCCCCAC95105141A4703DEA70275541EC51B86E951051411F85EBF170275541C3F5281C951051411F85EBF1702755419A9999C9941051411F85EBE1702755418FC2F5989410514185EB519870275541C3F5286C941051418FC2F538702755411F85EB3194105141666666B66F27554114AE47F193105141666666866F2755419A9999799310514114AE47716F275541D7A370ED921051419A9999796F275541D7A3707D92105141713D0A976F275541A4703DFA91105141F6285C8F6F2755411F85EB61911051411F85EB616F2755416666666690105141295C8F626F275541333333638F105141295C8F526F27554185EB51688E105141AE47E14A6F27554148E17A548D105141333333636F2755417B14AEC78C10514185EB51886F275541EC51B80E8C10514114AE47C16F275541D7A3705D8B105141B81E851B7027554185EB51C88A105141D7A3704D7027554185EB51288A105141333333A370275541A4A0D63C891051418B952AA77027554160DACACE8810514151F832AA70275541613D39B18710514112BE856A71275541C0DEF3C0861051410CFF9EFD71275541B1F227FA851051418C39736572275541588B15688510514116E164E172275541AF6B201185105141B7299F3E7327554151E2D47784105141E903B4EB7327554190C09CD783105141431C30B67427554179361A4A8310514103F78D607527554118ECC3B0821051415D013D6476275541B4B3F0808210514105064FF8762755416B18264782105141B49F82D4772755415D7FC84282105141EE71830E782755413D0AD76382105141666666D678275541295C8F7282105141295C8F12792755417B14AE978210514114AE4791792755419A9999E9821051413D0AD7237A275541C3F5285C83105141333333B37A275541B81E85DB83105141713D0A477B275541E17A143E84105141666666D67B275541E17A144E8410514185EB51487C275541E17A143E84105141E17A149E7C2755413D0AD72384105141000000107D2755413D0AD7F383105141713D0A777D275541E17A147E83105141B81E850B7E275541CDCCCC4C83105141A4703D2A7E275541AE47E10A831051413D0AD7537E275541295C8F7282105141F6285C9F7E2755415C8FC2D581105141713D0AC77E27554185EB5168811051415C8FC2C57E27554148E17AD4801051413D0AD7B37E275541E17A147E7F105141666666667E2755413D0AD7137F10514152B81E657E2755419A9999B97E10514148E17A847E275541B81E856B7E105141CDCCCCAC7E2755410AD7A3207E1051415C8FC2057F27554152B81EE57D1051413D0AD7A37F275541295C8F927D105141B81E85AB80275541AE47E12A7D105141AE47E1FA80275541000000D07C10514133333323812755419A9999497C1051419A99990981275541EC51B88E7B1051417B14AE07812755417B14AE177B1051416666661681275541D7A370AD7A1051411F85EB4181275541F6285C4F7A10514133333393812755413D0AD7037A1051413D0AD713822755418FC2F5A8791051417B14AE7782275541B81E852B7910514166666686822755410AD7A3B07810514152B81E3582275541A4703DFA771051416666661682275541713D0A97771051413D0AD79382275541E17A14AE77105141C3F528DC82275541713D0AC77710514166666626832755413D0AD7937710514148E17AD4832755415C8FC25577105141295C8F3284275541AE47E10A7710514133333393842755410AD7A3C076105141C3F528EC8427554114AE477176105141295C8FB2852755410AD7A360761051413D0AD72386275541EC51B87E76105141B81E85DB86275541295C8FD276105141666666268827554114AE47F1761051415C8FC2D58827554185EB51D8761051413D0AD753892755415C8FC2A576105141D7A370AD8927554185EB516876105141EC51B8FE892755417B14AE2776105141AE47E14A8A27554152B81EF5751051413D0AD7A38A275541C3F528EC75105141AE47E11A8B275541B81E85DB7510514148E17A848B2755410AD7A3807510514152B81EE58B27554114AE4711751051418FC2F5188C275541EC51B89E741051411F85EB718C2755418FC2F55874105141AE47E1DA8C2755418FC2F558741051417B14AE278D2755417B14AE6774105141B81E85DB8D275541F6285C4F7410514185EB51288E27554152B81E15741051419A9999898E275541C3F528DC7310514185EB51388F27554148E17A5473105141295C8FF28F275541A4703DBA7210514185EB5198902755410AD7A30072105141713D0A67912755419A99996971105141CDCCCC0C922755415C8FC2A57010514152B81EA592275541EC51B80E70105141D7A370FD92275541CDCCCCAC6F10514114AE471193275541000000306F1051410000002093275541666666C66E1051410AD7A37093275541CDCCCCAC6E105141295C8FC293275541CDCCCC8C6E1051417B14AE3794275541D7A3708D6E1051413D0AD7C394275541E17A149E6E1051419A99995995275541713D0AB76E105141AE47E11A962755417B14AE976E10514152B81E9596275541B81E857B6E105141C3F5281C97275541C3F5284C6E105141E17A146E97275541A4703DFA6D105141D7A3709D972755418FC2F5986D10514148E17AC497275541C3F5282C6D105141D7A370DD972755411F85EB216C105141295C8FF297275541333333436B1051415C8FC23598275541A4703D0A6B105141713D0A879827554152B81ED56B105141333333A399275541666666E66B105141AE47E12A9A275541000000206C105141CDCCCC0C9B275541333333736C105141AE47E1DA9B2755413D0AD7E36C105141B81E85AB9C27554148E17A246D105141B81E852B9D275541F6285C6F6D1051418FC2F5E89D275541666666066E105141F6285C3F9E275541E17A14CE6E105141B81E858B9E275541666666966F1051415C8FC2C59E2755411F85EB41701051411F85EB019F275541F6285CBF7010514185EB51389F275541295C8F8271105141A4703D5A9F2755413333335372105141E17A146E9F275541B81E853B73105141000000709F2755419A9999F973105141000000209F2755417B14AE9774105141A4703DBA9E275541AE47E16A75105141A4703D2A9E275541A4703D6A76105141AE47E11A9D275541666666967610514148E17AB49C275541E17A149E761051411F85EB519C2755415C8FC2A576105141AE47E1BA9B275541C3F5288C7610514114AE47D19A27554152B81E25761051411F85EB1199275541A4703D1A76105141C3F5288C982755413D0AD75376105141295C8F229827554100000090761051413D0AD7A3972755411F85EBD176105141AE47E14A9727554114AE471177105141C3F528CC962755411F85EBD1771051413D0AD723962755413D0AD77378105141666666D695275541AE47E10A7910514166666676952755413D0AD7F37910514185EB514895275541AE47E18A7A1051419A99992995275541F6285C3F7B105141EC51B80E95275541666666E67B1051410AD7A300952755415C8FC2757C105141295C8F0295275541295C8F427D10514148E17A04952755419A9999E97D1051416666661695275541B81E85DB7E10514166666656952755415C8FC2757F1051417B14AE7795275541713D0A5780105141C3F528BC95275541E17A149E811051411F85EB3196275541F6285C7F8210514114AE4771962755410AD7A370831051415C8FC2E596275541295C8FF2831051418FC2F5289727554152B81E6584105141713D0A4797275541C3F528FC841051410AD7A37097275541B81E859B85105141C3F528AC97275541D7A3700D861051415C8FC2F59727554148E17A84861051410AD7A320982755410000004087105141713D0A5798275541713D0AC7871051410AD7A37098275541713D0A1788105141B81E85DB98275541000000C088105141713D0A379927554114AE47C189105141666666669927554185EB51788A10514185EB518899275541295C8FE28A10514114AE4791992755419A9999698B105141295C8F8299275541C3F528EC8B105141B81E856B99275541666666668C10514100000040992755415C8FC2C58C105141EC51B8FE982755418FC2F5588D10514166666686982755413D0AD7538E1051411F85EBC1972755419A99993990105141C3F528AC95275541000000A09010514185EB514895275541295C8FF2901051417B14AEF794275541D7A3704D91105141EC51B87E94275541AE47E18A911051410AD7A30094275541E17A14FE911051419A9999B9932755415C8FC2959210514114AE476193275541F6285C7F93105141D7A370DD922755411F85EBF193105141CDCCCC9C92275541CDCCCC4C941051410AD7A36092275541295C8FA2941051417B14AEE791275541D7A3701D95105141295C8F529127554152B81E85951051411F85EBC19027554185EB51F89510514148E17A5490275541295C8F7296105141C3F5280C9027554148E17A449710514148E17A848F2755415C8FC2659810514114AE47018F275541713D0A47991051411F85EBA18E275541CDCCCC9C99105141E17A147E8E2755417B14AE079A105141C3F528BC8D2755411F85EB419A105141F6285C5F8D275541A4703D4A9A105141E17A14FE8C27554114AE47019A1051413D0AD7C38C2755417B14AEA799105141295C8FA28C275541A4703D4A991051419A9999A98C275541EC51B8AE98105141000000D08C27554114AE47519810514185EB51E88C275541F6285CEF97105141F6285CFF8C27554152B81E8597105141EC51B8FE8C275541EC51B80E97105141CDCCCCDC8C275541F6285C5F961051419A9999C98C275541B81E85BB95105141000000C08C27554148E17A1495105141000000008D27554148E17A5494105141F6285C4F8D2755417B14AE97931051411F85EB918D27554185EB510893105141295C8FD28D275541666666E691105141F6285CDF8D275541AE47E1AA90105141C3F528EC8D275541333333D38F1051419A9999C98D275541A4703D1A8F105141D7A3706D8D275541B81E857B8E105141D7A3700D8D2755417B14AEB78C1051418FC2F5288B2755418FC2F5088C105141666666468A275541F6285C7F8B10514114AE47818927554114AE47F18A105141EC51B87E88275541295C8F728A10514148E17AA4872755410AD7A3108A105141EC51B83E87275541000000D0891051411F85EB71862755418FC2F5C889105141AE47E1BA85275541A4703DCA8910514148E17A3485275541CDCCCCDC891051418FC2F59884275541666666168A105141AE47E1EA83275541AE47E17A8A1051413D0AD7F3822755419A9999D98B105141F6285C6F7F275541000000E08B105141F6285C5F7F27554152B81EC58D105141295C8FF27B27554185EB51188E105141CDCCCC6C7B275541B81E857B8E1051413D0AD7137B27554114AE47C18E105141AE47E1BA7A275541CDCCCC2C8F1051417B14AE677A27554148E17A74911051416666666679275541D7A3704D92105141EC51B8FE78275541713D0AF792105141713D0AB7782755411F85EB919310514148E17A84782755418FC2F5F89310514152B81E75782755413D0AD78394105141EC51B86E78275541295C8F02951051410AD7A38078275541295C8FC295105141AE47E16A782755416666667696105141B81E855B78275541000000A097105141713D0A4778275541666666F699105141E17A147E782755415C8FC2859B1051418FC2F508792755411F85EB019D1051418FC2F5A879275541F6285CDF9E1051413D0AD7837A2755411F85EB11A1105141713D0A977B275541E17A143EA21051411F85EB117C275541713D0AD7A2105141CDCCCC5C7C2755411F85EB31A3105141295C8FD27C2755419A999909A5105141666666367D27554166666636A610514114AE47617D2755411F85EB31A7105141A4703D7A7D2755418FC2F578A810514114AE47417D275541AE47E1BAA9105141A4703D1A7D275541295C8F62AB10514114AE47C17C275541EC51B8CEAC105141A4703D8A7C275541666666D6AE10514148E17AF47B2755415C8FC205B11051417B14AE877B27554148E17A04B3105141713D0A177B275541AE47E10AB5105141713D0AB77A27554185EB5128B6105141295C8F827A2755413D0AD783B7105141A4703D4A7A275541713D0A07B9105141333333137A27554114AE47D1B9105141A4703DEA7927554148E17A64BA105141295C8FC2792755413D0AD7F3BA1051413D0AD74379275541EC51B8DEBB1051411F85EBA1782755413D0AD7C3BC1051413333332378275541B81E85DBBD1051411F85EBB1772755410AD7A3B0BE1051415C8FC2957727554114AE4781BF105141666666867727554133333353C0105141F6285C8F77275541295C8FD2C0105141D7A370AD772755415C8FC255C11051418FC2F59877275541E17A141EC210514166666606772755419A999939C310514152B81E0576275541C3F5284CC4105141A4703DFA74275541B81E85DBC41051413333335374275541E17A144EC5105141333333937327554100000090C5105141666666E67227554185EB51B8C510514185EB5178722755417B14AEB7C51051413D0AD7E371275541000000B0C51051413D0AD75371275541D7A3706DC510514185EB51C8702755411F85EBE1C4105141A4703DFA6E275541F6285C4FC3105141F6285C7F6B275541C3F528ECC21051418FC2F5B86A275541713D0AB7C2105141F6285CFF692755413D0AD7D3C2105141F6285C6F69275541E17A146EC310514114AE4711682755415C8FC215C4105141CDCCCCDC662755419A999989C41051419A9999E9652755418FC2F548C5105141B81E859B64275541B81E85ABC51051415C8FC24564275541A4703DEAC6105141C3F528DC6327554148E17A24C71051415C8FC2C562275541CDCCCC6CC7105141F6285C3F622755413D0AD703C8105141C3F5286C612755410AD7A3C0C810514114AE47F1602755417B14AE57C9105141EC51B87E602755411F85EBC1C9105141F6285C2F602755419A999949CA105141713D0AF75F275541C3F528CCCA105141F6285CEF5F275541B81E855BCB10514185EB51D85F27554152B81E55CC10514114AE47715F275541EC51B84ECD1051417B14AE275F27554185EB51D8CE105141666666B65E27554148E17AA4D31051417B14AE775E275541CDCCCC2CD91051417B14AE675E2755413D0AD7F3DF105141295C8F525E2755411F85EB51E3105141AE47E19A5E2755410AD7A3F0E4105141A4703DFA5F2755410AD7A360E5105141AE47E1CA612755415C8FC2C5EB105141333333136127554100000080ED105141C3F528FC64275541A4703D7AEF105141000000E068275541D7A370ADF31051410AD7A3D064275541295C8FF2F71051417B14AE775C27554185EB5118031151415C8FC2B55C2755419A9999F9FE1051411F85EBB147275541EC51B8CEF510514114AE47E149275541CDCCCC3CE91051415C8FC2554D27554152B81E75E0105141333333C34B27554148E17AA4D9105141AE47E18A4A275541EC51B81ED9105141713D0A774B275541713D0AA7D810514114AE47E14B275541CDCCCC3CD8105141C3F5284C4C2755415C8FC295D71051410AD7A3A04C275541B81E852BD7105141295C8FE24C2755419A999959D61051419A9999C94C2755417B14AED7D510514185EB51C84C27554100000060D510514185EB51E84C275541D7A370DDD410514185EB51184D275541E17A143ED41051419A9999394D275541EC51B88ED3105141EC51B81E4D275541295C8FE2D2105141D7A370ED4C275541AE47E12AD21051419A9999994C27554133333383D110514185EB51684C275541EC51B8CED01051411F85EB414C275541713D0A37D010514114AE47314C2755417B14AEA7CF10514185EB51284C2755415C8FC235CF1051410AD7A3404C275541EC51B8CECE105141D7A3706D4C275541C3F5285CCE1051417B14AEB74C2755411F85EB01CE1051411F85EB214D27554148E17A94CD105141F6285C6F4D275541A4703D2ACD105141000000B04D275541333333C3CC10514114AE47C14D2755418FC2F558CC1051418FC2F5D84D275541666666D6CB1051418FC2F5D84D275541F6285C6FCB10514185EB51C84D2755417B14AEA7CA105141D7A3709D4D275541AE47E1DAC9105141CDCCCCFC4C275541D7A3708DC91051418FC2F5684C2755413D0AD753C91051418FC2F5E84B2755419A9999E9C810514185EB51384B275541295C8F72C8105141E17A14FE4A275541000000F0C71051415C8FC2F54A275541A4703D8AC7105141000000404B275541E17A14FEC61051417B14AED74B275541E17A14FEC6105141000000A04C275541E17A14FEC6105141CDCCCC1C4D275541E17A14DEC6105141D7A370CD4D2755418FC2F598C6105141000000504E27554148E17AF4C5105141A4703D2A4F27554152B81E65C5105141000000804F275541713D0A87C5105141AE47E1EA4F275541CDCCCC3CC5105141B81E858B502755415C8FC295C4105141D7A370DD5027554114AE47F1C31051417B14AE27512755413D0AD783C310514185EB51C8512755411F85EB51C310514185EB5158522755411F85EB51C31051413D0AD7E3522755419A999949C310514148E17A6453275541295C8FC2C2105141000000005427554185EB5158C2105141A4703D5A54275541E17A140EC21051413333331355275541E17A14EEC1105141C3F5289C55275541E17A140EC21051419A999949562755415C8FC2F5C1105141AE47E1EA5627554185EB5188C11051413333337357275541EC51B84EC1105141666666F657275541EC51B85EC1105141F6285C7F5827554166666666C1105141AE47E1FA58275541EC51B84EC1105141F6285CFF59275541713D0AC7C010514185EB51A85A27554152B81EA5BF105141EC51B86E5C27554152B81E95BF105141333333135D27554133333353BF105141C3F5289C5D275541B81E85CBBE105141F6285C1F5E2755418FC2F528BE105141713D0A775E2755417B14AE67BD105141F6285CBF5E2755417B14AEC7BC1051419A9999095F2755417B14AEA7BC105141295C8FA25F275541000000B0BC1051410AD7A330602755415C8FC265BC105141EC51B88E60275541AE47E1FABB1051419A9999F960275541AE47E12ABB1051411F85EB9161275541B81E858BBA105141CDCCCC0C622755410AD7A320BA105141D7A3708D62275541F6285C6FB9105141333333536327554148E17AF4B81051413333337363275541CDCCCC5CB81051410000009063275541D7A370CDB710514185EB51B863275541295C8FC2B610514114AE47D1632755417B14AE27B6105141CDCCCC5C642755415C8FC205B610514152B81EF564275541D7A370FDB5105141E17A149E652755417B14AE87B51051419A999929662755415C8FC2B5B41051418FC2F50866275541B81E855BB4105141D7A3709D65275541333333B3B3105141D7A370BD652755410AD7A3E0B3105141AE47E14A66275541B81E85CBB3105141AE47E1DA66275541E17A141EB31051413D0AD7236727554185EB51A8B21051413333330367275541666666C6B1105141295C8FF2662755413D0AD783B1105141295C8F826727554133333373B11051410AD7A3406827554185EB51F8B01051410AD7A3D0682755410AD7A370B01051410AD7A3E0682755415C8FC205B01051410AD7A300692755415C8FC265AF1051418FC2F51869275541A4703D4AAE1051410000000069275541A4703DBAAD1051417B14AE876927554148E17AE4AC10514152B81E656A275541B81E853BAC105141B81E85DB6A27554185EB51C8AB105141D7A3700D6B27554185EB5138AB10514152B81E056B2755410AD7A3B0AA105141CDCCCCFC6A27554152B81E35AA105141AE47E1CA6A275541D7A370ADA91051411F85EBB16A275541A4703D3AA9105141C3F528EC6A275541EC51B83EA8105141713D0A676B275541666666A6A7105141CDCCCCAC6B2755410AD7A3F0A6105141CDCCCCDC6B2755419A999969A6105141713D0A176C27554148E17AF4A51051417B14AE476C27554166666696A5105141EC51B88E6C27554133333323A510514114AE47016D275541000000C0A41051413D0AD7636D275541713D0A37A410514114AE47C16D2755413D0AD7D3A31051413D0AD7036E27554133333343A31051413D0AD7336E2755411F85EB81A2105141E17A145E6E275541C3F528DCA1105141666666766E27554133333323A1105141333333936E2755419A999959A0105141B81E85AB6E275541713D0AA79F105141B81E85BB6E275541333333139F105141B81E85BB6E275541A4703D7A9E1051413D0AD7D36E275541C3F528BC9D105141D7A370ED6E275541333333139D10514152B81EF56E275541A4703D8A9C105141D7A370FD6E27554148E17AC49B1051415C8FC2056F275541295C8F029B1051415C8FC2256F275541713D0A279A105141000000606F275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463873 - 243738
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000061010000AE47E13AB1F15041C3F528ECD4A95441295C8FD2AFF150413D0AD713D5A95441295C8F92AEF150415C8FC2E5D5A9544148E17A34ADF15041C3F5282CD6A95441295C8F72ABF15041C3F5288CD5A954418FC2F528AAF15041A4703DAAD5A9544166666616A8F15041C3F5281CD7A954418FC2F5C8A5F150415C8FC225D7A95441EC51B87EA4F15041000000C0D8A95441CDCCCC5CA3F15041C3F528FCD8A954410AD7A330A2F15041C3F5286CD7A95441EC51B80EA1F1504100000080D7A95441295C8F32A0F15041E17A144ED7A9544148E17A249FF15041E17A145ED6A95441AE47E1DA9DF150411F85EB71D6A95441EC51B8FE9CF15041E17A140ED6A95441295C8FC29CF150411F85EB31D5A95441CDCCCC2C9CF150411F85EBE1D4A9544148E17AC49AF150413D0AD7A3D6A95441295C8FA299F15041A4703D1AD9A954410AD7A3D098F1504185EB51A8DCA9544148E17A3499F150411F85EB31DFA95441666666B699F150413D0AD713DFA95441AE47E16A9AF1504185EB51A8DCA9544148E17AA49CF150413D0AD7E3DCA954418FC2F5B89CF15041C3F5283CDFA9544148E17AD49EF150415C8FC2F5DEA95441AE47E10AA0F15041A4703D6ADEA954410AD7A3A0A0F15041A4703DBADEA954410AD7A3A0A0F15041E17A141EDFA954418FC2F528A0F1504185EB5168E0A95441EC51B8BEA0F1504100000080E1A95441EC51B81EA0F15041E17A143EE2A95441666666669EF15041A4703DCAE2A95441666666169EF15041E17A14FEE5A95441666666869CF15041C3F5286CE6A954418FC2F5B89CF150413D0AD7D3E7A954418FC2F5A89DF15041E17A14DEE7A954410AD7A3C09EF150415C8FC2D5E5A95441CDCCCC3CA0F15041C3F5287CE5A95441295C8F22A1F150413D0AD7A3E5A95441AE47E13AA2F15041E17A145EE5A95441295C8FB2A2F150415C8FC2F5E3A954410AD7A310A4F15041A4703D1AE3A9544148E17AC4A4F1504100000060E3A95441EC51B8CEA4F15041C3F5281CE6A9544148E17AD4A3F150411F85EBA1E7A95441AE47E1EAA1F15041E17A141EE9A95441295C8F22A1F15041E17A142EE8A9544148E17A64A0F150411F85EB41E8A95441666666F69FF150417B14AE47E7A95441CDCCCC9C9FF150415C8FC265E7A9544148E17AD49EF1504100000090EAA95441EC51B8DE9EF15041000000D0EBA954418FC2F5389FF150415C8FC265ECA9544148E17AE49DF150413D0AD713EEA954418FC2F5089DF150411F85EBE1EDA954418FC2F5B89CF15041E17A14BEEEA95441AE47E13A9DF15041A4703DEAEFA954410AD7A3709EF1504100000090EFA95441295C8FA29EF15041000000A0EEA954418FC2F5389FF15041A4703DBAEDA954410AD7A350A0F150413D0AD7B3EEA95441CDCCCCDCA0F150415C8FC2F5EDA95441295C8F72A1F1504100000070ECA95441AE47E1EAA1F1504100000020ECA95441EC51B8EEA2F15041C3F5284CEDA95441CDCCCC3CA5F150413D0AD773EDA95441CDCCCCCCA6F150411F85EB31EEA954418FC2F5B8A6F1504100000030F0A95441CDCCCC8CA5F1504100000080F0A954410AD7A3A0A5F15041E17A143EF1A95441AE47E19AA6F15041A4703DCAF1A954418FC2F538A9F150415C8FC2D5F4A954418FC2F518ABF1504100000020F6A954418FC2F548ADF15041C3F528ACF6A95441295C8F32AFF1504100000010F7A9544148E17A44B1F150413D0AD763F8A95441AE47E10AB4F1504100000090F9A9544148E17A74B8F15041E17A149EFAA95441AE47E1AAB9F150417B14AE47FBA9544148E17AF4BAF150417B14AEF7FAA95441AE47E10ABEF15041E17A14DEFBA95441EC51B85EBFF150411F85EBA1FBA95441295C8FC2BFF15041C3F5280CFBA9544166666636BFF15041A4703D5AF8A95441295C8F82C3F150415C8FC205F7A9544148E17A94C5F15041C3F528FCF6A954418FC2F598C6F150417B14AED7F7A95441CDCCCC7CC9F1504100000060F7A95441AE47E13ACAF15041A4703D7AF6A954410AD7A3E0C9F15041C3F528BCF5A9544148E17AB4C8F150411F85EBC1F4A9544148E17AC4C7F15041E17A146EF3A95441EC51B88EC6F15041A4703D3AF5A95441295C8FB2C5F150413D0AD753F4A95441AE47E1DAC5F15041A4703D0AF3A95441295C8FF2C6F15041C3F5284CF2A9544148E17A14C8F15041E17A147EF2A9544148E17A14C8F150411F85EB51F1A9544148E17A24C7F150415C8FC275F0A954418FC2F5F8C5F15041C3F5280CF1A954418FC2F5B8C4F150415C8FC275F0A95441CDCCCCECC2F150417B14AE07F0A9544148E17A84C1F15041A4703D2AF1A9544166666626C0F150417B14AE47F1A95441AE47E1FABEF15041A4703D8AF0A954410AD7A3B0BDF15041C3F5281CF0A95441AE47E15ABEF15041E17A140EEFA95441CDCCCC4CBDF150413D0AD7B3EEA95441295C8FF2BCF150413D0AD703EFA95441EC51B89EBBF15041C3F528FCF1A95441AE47E19ABAF150415C8FC205F2A95441EC51B86EB9F150417B14AE27F3A95441666666F6B8F15041C3F528DCF3A954410AD7A370B7F15041A4703DAAF3A95441EC51B85EB5F15041E17A140EF4A95441295C8F52B2F15041E17A142EF2A95441CDCCCC1CB1F15041C3F528FCF1A95441295C8FC2B0F150411F85EB51F1A95441EC51B8EEB1F15041A4703D3AF0A954410AD7A3C0B2F1504100000030F0A9544166666686B5F150411F85EB01F1A95441EC51B8EEB6F15041A4703DDAF0A95441666666F6B8F150415C8FC2D5EFA95441CDCCCC7CBAF15041000000F0EEA95441AE47E16ABDF1504100000050EEA95441666666A6BDF150411F85EBE1EDA95441295C8F22BFF15041C3F5284CEDA9544166666676C0F150413D0AD773EDA95441295C8FF2C1F15041E17A148EECA9544166666646C3F150413D0AD733ECA954418FC2F5D8C2F15041E17A14FEEAA95441AE47E15AC3F15041A4703D5AE9A954410AD7A390C4F15041000000B0E8A95441AE47E12AC6F150413D0AD7C3E8A954418FC2F588C7F15041000000C0E7A954418FC2F578C8F15041E17A147EE8A954418FC2F508CAF150411F85EB41E8A95441CDCCCC5CCBF150415C8FC2F5E8A95441B81E859BCFF150411F85EBF1E7A954418FC2F598D0F150413D0AD793E6A9544148E17AC4D1F15041E17A144EE6A95441CDCCCCECD6F15041A4703D5AE4A954418FC2F568D8F15041E17A147EE3A95441295C8FA2DAF15041000000B0E3A954410AD7A360DBF150413D0AD773E3A95441295C8F72DDF150411F85EB41E3A954418FC2F588E0F1504100000080E1A95441295C8F02E4F15041E17A145EE0A95441AE47E1FAE6F15041C3F528ECDEA95441666666A6EFF15041E17A14AEDBA95441AE47E1FAF0F150415C8FC2E5DAA95441295C8F32F5F15041E17A141EDAA95441EC51B8BEF5F15041E17A14CED9A95441CDCCCCBCF7F15041E17A14CED9A9544166666656F9F150411F85EBF1D8A95441295C8F22FBF150411F85EBF1D8A95441295C8F02FDF150413D0AD7E3D7A9544166666656FEF15041E17A149ED7A95441295C8FB201F25041A4703DFAD5A95441EC51B8DE02F25041000000F0D5A9544148E17A5405F25041C3F528ECD4A95441295C8FB206F25041C3F528ECD4A95441666666860AF2504185EB5148D3A95441CDCCCCBC0BF250415C8FC265D3A95441AE47E1BA0DF250413D0AD7F3D1A95441666666D60FF25041A4703D9AD1A9544148E17AE410F250415C8FC235D1A95441666666360FF250413D0AD723CFA95441AE47E1BA0DF25041E17A142ECFA95441CDCCCCAC0CF25041C3F528ECCFA954418FC2F5680AF250415C8FC295D0A95441EC51B82E08F250411F85EB31D0A95441AE47E16A08F250413D0AD7E3CDA9544148E17A040AF25041A4703D8ACDA95441EC51B89E10F250415C8FC2A5CAA954418FC2F54811F250413D0AD7E3C8A9544148E17A1413F25041A4703D8AC8A95441AE47E17A16F25041C3F5285CC9A954410AD7A36017F250413D0AD7F3C7A95441666666D619F250413D0AD703C7A954410AD7A3C01BF250411F85EB21C7A95441666666F61CF25041A4703DEAC7A95441666666E61DF250415C8FC2E5C6A954418FC2F5581FF25041C3F5287CC7A95441CDCCCC9C21F250415C8FC235C7A954418FC2F59825F2504185EB51D8C5A95441295C8F8227F25041E17A14BEC6A95441295C8F8227F25041E17A140EC7A95441AE47E12A2AF2504185EB5118C7A95441295C8F522AF25041E17A14CEC5A95441AE47E11A2BF2504185EB5138C5A95441EC51B80E2DF25041E17A142EC5A954418FC2F5582EF25041C3F528ACC4A95441295C8FE230F25041E17A144EC3A95441666666D632F250413D0AD7D3C4A95441AE47E1DA33F25041E17A148EC4A9544148E17A3434F25041E17A14EEC3A954416666665635F25041E17A14EEC3A9544148E17A7435F25041A4703DEAC2A95441AE47E13A33F25041A4703D5AC1A954410AD7A38033F250413D0AD773C0A95441EC51B8DE2FF25041E17A14FEBDA95441C3F5283C2FF25041713D0A57BEA9544148E17A042DF2504100000090BDA95441CDCCCC2C2DF25041000000A0BCA95441EC51B8CE2BF250415C8FC265BAA95441EC51B88E2AF2504100000020BAA954410AD7A3F027F25041000000C0BAA9544148E17AD425F2504185EB51C8BCA954418FC2F55824F25041A4703D5ABCA95441EC51B8AE23F2504185EB5138BBA95441EC51B84E24F2504100000020BAA95441CDCCCCFC25F25041000000D0B9A9544148E17AC426F250411F85EBD1B7A9544148E17A0428F2504100000050B7A954410AD7A34028F250411F85EBC1B3A95441295C8F7228F250411F85EBC1B3A95441EC51B8DE2AF25041A4703DBAB6A9544148E17AC42BF25041000000A0B7A95441EC51B86E2CF250413D0AD7C3B6A954418FC2F5782CF2504100000020B5A95441CDCCCC2C2DF25041E17A149EB4A9544148E17AA42DF25041E17A145EB3A954410AD7A3902DF250411F85EB41B1A95441EC51B8FE2DF250415C8FC2B5B0A954418FC2F5082EF2504185EB5138AFA954417B14AE572EF2504166666686ADA9544148E17AF42DF250411F85EBA1ABA95441295C8F622EF250415C8FC235A9A954413333334325F250413D0AD7A3A8A95441B81E856B1EF2504185EB5138A8A95441666666B61AF25041EC51B8FEA7A95441EC51B8DE1BF250415C8FC275AAA954418FC2F5781DF25041C3F5284CACA95441666666F61CF250411F85EB81ADA95441295C8F421CF250415C8FC295ADA9544148E17AE41AF250411F85EB21A9A95441EC51B85E19F25041C3F5288CA8A954418FC2F58817F25041A4703D4AA9A95441666666B616F25041E17A149EAAA95441EC51B87E17F25041E17A14DEABA9544148E17A5419F25041000000A0ADA95441CDCCCCDC18F25041E17A14FEAEA95441295C8F7219F250413D0AD733B0A95441EC51B80E19F250411F85EB41B1A95441AE47E15A18F2504100000060B1A95441EC51B8CE17F250415C8FC2C5AFA954418FC2F54816F250415C8FC2E5ADA95441713D0A6716F250417B14AEA7AAA954416666663614F2504185EB5198ABA954410AD7A39014F25041A4703D0AADA95441EC51B8FE14F250411F85EB31ADA95441EC51B85E14F25041E17A140EAEA954418FC2F56814F25041A4703D3AAFA95441AE47E13A15F2504185EB5148B0A954410AD7A38015F25041C3F5282CB3A954410AD7A35013F250411F85EBA1B0A9544148E17A1413F250411F85EB11AFA95441295C8F4212F25041C3F528DCADA95441EC51B87E12F25041000000B0ACA95441AE47E12A11F2504185EB5188ACA95441AE47E18A10F25041000000F0ADA954418FC2F5680FF25041E17A14FEAEA95441EC51B81E0EF25041C3F5286CAFA954418FC2F5380DF250413D0AD7F3AEA95441666666E609F25041E17A143EB0A954418FC2F5B80AF250411F85EBE1B1A95441CDCCCCCC0AF250413D0AD7A3B3A954418FC2F5C809F25041C3F5281CB4A9544148E17AC408F2504185EB5178B2A954418FC2F59807F250415C8FC295B2A954410AD7A35004F250411F85EB61B4A954418FC2F59802F250415C8FC2D5B3A954418FC2F50801F250413D0AD7E3B4A95441AE47E1FAFFF1504185EB5138B6A95441EC51B85EFBF1504185EB5138B6A95441CDCCCCFCF8F15041E17A14BEB7A95441CDCCCCACF8F150413D0AD753B8A954410AD7A360F9F1504100000090B8A954410AD7A3F0FAF150413D0AD753B8A95441EC51B84EFCF15041A4703D9AB8A9544148E17A64FAF15041E17A14EEB9A954410AD7A370F8F1504185EB5198BAA954410AD7A380F7F150411F85EBB1B9A954410AD7A340F6F1504185EB51F8B9A9544166666696F5F15041C3F528ECBBA95441EC51B82EF4F15041C3F528DCBCA9544166666666F3F150413D0AD7F3BDA9544166666626F2F1504185EB5158BEA95441666666E6F0F150413D0AD783BFA95441AE47E12AEEF1504185EB51D8C0A95441CDCCCC3CEBF15041E17A141EC1A9544166666626E8F1504185EB51B8C2A95441CDCCCC1CE3F150413D0AD7A3C2A954410AD7A3A0E1F150413D0AD743C3A954418FC2F5E8DFF15041C3F5289CC5A954418FC2F5A8DEF1504185EB51D8C5A95441295C8FD2DCF1504185EB51E8C4A954418FC2F5D8DBF15041E17A14EEC3A95441295C8FB2D9F150411F85EB41C5A9544148E17AA4D8F15041E17A140EC7A9544166666656D6F150413D0AD7E3C8A9544148E17AE4D4F1504100000070C9A9544148E17AD4D0F150411F85EBA1C9A954418FC2F5F8CFF150415C8FC2F5CAA95441295C8F02D0F1504185EB5178CBA95441EC51B82ED1F150411F85EB81CBA95441AE47E1AAD2F150413D0AD7C3CAA954418FC2F508D4F15041C3F5288CCBA9544148E17AD4D5F1504185EB51C8CBA95441AE47E17AD5F1504185EB5108CDA95441666666D6D3F1504100000080CDA95441295C8F22D3F1504185EB5108CDA95441AE47E15AD2F15041000000D0CDA954410AD7A3C0D0F15041A4703D2ACEA95441295C8FD2CDF1504100000030CDA954418FC2F578C8F15041A4703D2ACEA95441CDCCCCACC6F1504100000000D0A954410AD7A380C5F150411F85EB81D0A95441295C8F72C4F15041A4703D9AD1A95441666666A6C7F15041000000E0D1A95441AE47E12AC6F15041C3F5284CD4A9544148E17AF4C4F150415C8FC2F5D4A954418FC2F598C1F150415C8FC2F5D4A95441EC51B84EC0F150411F85EBD1D5A954410AD7A390BFF15041A4703DEAD6A95441AE47E11ABDF150413D0AD7E3D7A95441EC51B89EBBF150415C8FC2C5D7A95441295C8F62BBF15041C3F5281CD7A95441EC51B85EBAF150415C8FC285D6A95441295C8F22BAF15041A4703DFAD5A95441666666A6B8F150415C8FC235D6A95441666666A6B8F150411F85EBC1D6A95441AE47E10AB9F150411F85EB61D7A95441666666A6B8F15041C3F5285CD8A95441EC51B88EB7F15041A4703D2AD8A954410AD7A3D0B6F15041E17A148ED8A954410AD7A320B7F150415C8FC2A5D9A95441EC51B89EB6F15041A4703DFADAA95441AE47E14AB5F150411F85EBC1DBA9544166666636B5F150411F85EB61DCA954418FC2F588B3F1504100000010DEA95441EC51B83EB2F1504100000010DEA9544148E17AE4B1F15041E17A143EDDA95441AE47E12AB2F150411F85EBC1DBA95441CDCCCC1CB1F150413D0AD753DBA9544166666636B0F15041A4703D4ADBA9544148E17AB4AFF1504185EB51C8DAA95441CDCCCCCCB0F15041E17A14DED8A95441EC51B89EB1F150413D0AD703D6A95441AE47E13AB1F15041C3F528ECD4A9544117000000CDCCCCFC16F250411F85EB01BAA954418FC2F5F815F25041E17A14AEB8A95441AE47E14A14F25041E17A141EB7A954410AD7A3F013F25041C3F528ACB5A954410AD7A3E014F25041000000D0B4A95441295C8F3218F25041C3F5286CB4A95441CDCCCC7C19F25041A4703DEAB3A95441AE47E12A1BF25041E17A143EB5A95441AE47E14A1EF250411F85EB31B2A9544148E17A1422F25041A4703D6AB1A95441AE47E1FA22F25041C3F5289CB1A95441295C8F7223F25041A4703D5AB2A95441AE47E1FA27F25041A4703DCAB0A954410AD7A34028F250411F85EBD1B2A954410AD7A3A027F250411F85EB21B3A9544148E17AC426F25041000000A0B2A95441295C8F5225F2504100000040B3A95441EC51B8AE23F250411F85EB71B3A95441666666D61EF25041C3F528FCB5A95441295C8F221EF25041E17A14CEB6A95441295C8F921CF25041E17A14CEB6A95441666666D619F25041A4703DEAB8A95441CDCCCCFC16F250411F85EB01BAA954410B000000CDCCCCFC20F2504185EB5128BCA95441EC51B84E1FF25041E17A144EBEA95441AE47E16A1CF25041E17A143EBFA95441CDCCCCBC1AF2504185EB5168BDA95441B81E85EB19F25041CDCCCC5CBDA954416666663619F250415C8FC2F5BBA95441AE47E18A1AF2504185EB5188BBA95441295C8F921CF2504185EB5198BAA954418FC2F5581FF250413D0AD7C3BBA95441AE47E12A20F250413D0AD763BCA95441CDCCCCFC20F2504185EB5128BCA9544196000000295C8F62CAF15041A4703DBAD9A95441295C8F72C9F150413D0AD703DBA9544148E17A14C8F15041C3F528CCDBA954410AD7A370C6F150415C8FC265DDA954418FC2F568C4F15041000000B0DEA95441AE47E1AAC3F150413D0AD763DFA95441666666B6C1F15041A4703D9AE0A954418FC2F568BFF15041C3F5281CE1A954418FC2F598BCF1504100000080E1A95441295C8F62BBF150417B14AEE7E2A95441666666B6B7F150415C8FC2A5E3A954418FC2F5A8B6F150413D0AD703E5A95441EC51B85EB5F15041A4703D4AE5A95441CDCCCC9CB3F150413D0AD7C3E8A95441CDCCCC8CAFF15041E17A144EEBA95441AE47E1BAAEF150415C8FC2B5ECA9544148E17AD4ADF150415C8FC225F0A954410AD7A320ADF1504100000030F0A954410AD7A3E0ABF15041E17A14AEEFA954410AD7A390ABF15041C3F528ACECA9544148E17A04ABF150413D0AD733ECA954410AD7A3F0AAF150411F85EB61EBA9544148E17A44ACF150413D0AD793EBA95441EC51B89EACF150413D0AD7B3E9A954410AD7A3F0AFF1504100000040E5A95441AE47E10AAFF150413D0AD713E4A9544148E17A54B0F150417B14AE27E4A9544166666636B0F15041A4703DAAE4A95441F6285C1FB1F15041AE47E12AE5A954418FC2F538B3F150413D0AD7D3E2A95441EC51B8BEB4F15041E17A143EE2A9544166666676B6F150415C8FC225E1A95441EC51B8CEB8F150415C8FC245DFA9544148E17A54BAF15041E17A147EDEA95441295C8F62BBF150413D0AD783DDA95441CDCCCC8CBEF15041A4703D3ADCA95441666666B6C1F150413D0AD7E3DCA95441666666F6C2F15041C3F5283CDAA954410AD7A3A0C3F1504100000060D9A95441EC51B8BEC3F150415C8FC2B5D8A954410AD7A3E0C4F150413D0AD733D8A9544148E17AD4C6F15041000000D0D7A95441EC51B8EEC5F15041C3F5287CD6A95441CDCCCCACC6F15041A4703D5AD5A954418FC2F5D8C7F150411F85EB31D5A95441AE47E1AAC8F15041E17A146ED5A9544166666686C9F15041E17A14DED3A95441295C8FC2C9F150411F85EBB1D2A954410AD7A380CAF15041A4703D9AD1A95441295C8FA2CBF150411F85EB21D1A95441AE47E19ACEF150415C8FC295D0A95441EC51B8EECFF150415C8FC2F5CFA954418FC2F5E8D0F150413D0AD713D0A95441EC51B88ED0F150415C8FC2E5D0A9544148E17A44CFF15041E17A14AED1A954410AD7A3F0CDF1504100000030D2A95441EC51B82ECCF150411F85EB61D2A954418FC2F558CAF1504100000020D3A954410AD7A370CBF15041E17A14DED3A9544166666606CCF15041E17A14DED3A95441AE47E15ACDF1504100000020D3A954418FC2F548D0F150411F85EB61D2A954418FC2F508D4F15041C3F5288CD0A954418FC2F5C8D7F150411F85EBA1CEA95441295C8F72D8F150415C8FC285CCA95441CDCCCC4CDBF15041C3F528ECCAA9544148E17A64DCF150413D0AD783C9A9544166666626DEF15041A4703D7AC9A95441295C8F52DFF150415C8FC2B5C9A954418FC2F568E2F1504100000040C7A954410AD7A340E2F1504185EB51D8C5A9544148E17A44E3F1504185EB5138C5A95441AE47E17AE4F1504100000050C6A95441AE47E1AAE6F1504185EB5138C5A95441EC51B8FEE7F1504185EB5138C5A9544166666656EAF15041E17A14EEC3A9544148E17AB4F0F150415C8FC2F5C0A9544166666626F2F1504100000010C0A95441AE47E15AF5F15041000000C0BFA954410AD7A320F8F15041A4703D3ABEA95441295C8F22FBF1504100000090BDA95441666666C6FCF15041A4703D9ABDA95441295C8F82FFF15041C3F5283CBCA954416666668600F250413D0AD713BCA954410AD7A36003F2504100000060BBA95441295C8F1206F25041A4703D6ABBA95441713D0A6706F25041713D0AE7BBA954410AD7A37007F25041C3F5284CBBA954418FC2F54807F250415C8FC2B5BAA9544148E17A8407F25041E17A149EB9A95441AE47E16A0DF250411F85EBD1B7A95441AE47E1BA0DF2504100000090B8A95441EC51B89E10F25041E17A149EB9A95441EC51B83E11F25041000000C0BAA95441EC51B81E13F250415C8FC255BBA9544148E17AB413F25041A4703D5ABCA95441AE47E13A15F250415C8FC2E5BCA954416666666616F2504185EB5118BDA95441CDCCCC4C17F25041E17A14FEBDA95441EC51B88E16F2504185EB51D8C0A95441CDCCCC7C14F250413D0AD7B3C1A95441666666A612F25041000000A0C1A95441295C8F0211F25041E17A141EC1A954418FC2F5780EF25041C3F5286CC3A9544148E17A240DF2504100000020C4A954418FC2F5F80BF250413D0AD733C4A954410AD7A35009F25041000000E0C2A95441AE47E1BA08F25041000000A0C1A95441EC51B81E09F25041C3F5284CC0A95441AE47E11A08F2504185EB51B8BDA95441CDCCCC6C06F25041000000E0BDA95441295C8F2205F25041A4703D8ABEA95441666666A603F2504100000080BEA9544148E17A3402F25041E17A14DEBFA954418FC2F55801F250413D0AD763C1A95441AE47E19A00F25041C3F5287CC2A954410AD7A3E000F250413D0AD793C3A95441CDCCCCDCFFF150411F85EB51C4A95441EC51B8BEFFF15041A4703DBAC5A95441AE47E19A00F25041E17A14CEC5A95441AE47E1EA00F25041E17A140EC7A95441CDCCCC5CFDF150413D0AD743C8A9544148E17A04FBF15041A4703D9AC7A95441EC51B8BEFAF15041A4703D4AC7A95441CDCCCC6CF7F15041C3F528BCC8A9544148E17A04F6F1504185EB5138CAA954410AD7A3F0F5F1504100000050CBA954418FC2F5C8F5F15041A4703D4ACCA954418FC2F588F4F15041A4703DEACCA954418FC2F548F3F15041A4703DEACCA95441295C8F62F2F150415C8FC235CCA95441EC51B85EF1F15041A4703DAACBA954410AD7A300F0F1504185EB5118CCA954418FC2F548EEF150411F85EBD1CBA95441EC51B89EEDF15041C3F5281CCDA95441EC51B8CEEAF1504100000020CEA95441EC51B88EE9F15041A4703DDACDA95441CDCCCC3CE6F150411F85EBF1CEA95441666666B6E4F1504100000010CFA954410AD7A320E4F150415C8FC2B5CEA95441EC51B8AEE2F15041C3F5285CCEA954418FC2F598DFF150411F85EB41CFA9544148E17A54DDF15041A4703D5AD0A95441AE47E12ADAF15041C3F528ACD3A95441CDCCCCCCD8F150415C8FC255D4A95441EC51B8CED6F150411F85EBF1D3A9544148E17A84D5F150411F85EB31D5A95441EC51B84ED4F1504185EB5128D5A95441AE47E1BAD1F15041E17A146ED5A95441295C8F62CAF15041A4703DBAD9A95441
+</a>
+
+<b>
+010600000001000000010300000002000000A6020000781F360BE3F150415BD3B0AEE0A9544138DE382EE4F15041CA43D648E0A95441AE47E1FAE6F15041C3F528ECDEA95441B5BCDF15E7F15041478310E2DEA954414BD8E964E8F15041C4F77656DEA9544105E7C298E9F1504135CCB7EADDA95441122BC842EAF1504134600BB2DDA95441CC14C3A1EAF150419CD2858EDDA9544195D04C0AEBF15041682E6D67DDA95441ABA847D2EBF1504117753913DDA95441EE17FD8AECF1504160A5A7D5DCA95441F4E2DF71EDF15041BAED4C79DCA95441B9F1B8A5EEF1504150DAC4EEDBA954410FB8EC35F0F1504100DF7345DBA954415227A2EEF0F1504171B3B4D9DAA95441707E20C6F1F1504196CBEBBADAA954412A8DF9F9F2F15041D5FB597DDAA9544173C79199F4F150412E44FF20DAA9544197E45D69F5F1504160E8D1F2D9A954410CF8E5F3F5F150419F1840B5D9A95441F8AA91F9F6F150419F1840B5D9A95441F1E9D8EFF7F15041C4307796D9A954418DA1334CF8F150410361E558D9A95441EA2820E6F8F150413505B82AD9A954417954DF51F9F15041743526EDD8A95441DDE4F845FBF150416EA5FEDDD8A95441E6029ADFFBF150417E768D87D8A9544175FA5AF1FBF150415229907DD8A954417A11B534FCF15041243AD543D8A954410FD4308BFCF15041A04E0127D8A95441EAEB2394FCF15041742FF821D8A95441BF0C06DEFCF15041950E16D8D7A954410F085787FDF15041BA264DB9D7A9544120D3396EFEF15041F956BB7BD7A954417D5A2608FFF150415013C52ED7A95441E76DAE92FFF150418F4333F1D6A95441851D96E400F250414F55C65ED6A95441295C8FB201F25041A4703DFAD5A95441C1808A4302F2504173404BF5D5A95441916E7AC202F25041A39087EBD5A9544169FA431203F250413273BBDAD5A95441C847951405F25041D8218606D5A95441108C2C2A05F250419F5140F5D4A9544118C07F4A05F25041ED3547F0D4A9544148E17A5405F25041C3F528ECD4A954412E61446505F25041C3F528ECD4A954413B6F46F205F25041C46977D6D4A954417DDEFBAA06F25041B7DDDBE5D4A954419F46C5D406F250417B6280DDD4A95441666666860AF2504185EB5148D3A95441AFA303130BF250415617A855D3A95441453BDBA00BF250415617A855D3A95441D4669A0C0CF25041BA5F4DF9D2A9544131EE86A60CF2504113A8F29CD2A954412A2DCE9C0DF25041B6200603D2A954414417E2AB0DF250418B4BB7FED1A95441AE47E1BA0DF250413D0AD7F3D1A9544109B4F8F10DF25041A0D5B0EAD1A95441B9588D080EF25041DB383DE4D1A9544116E079A20EF25041F55074C5D1A954418BF3012D0FF250410DDD0FB6D1A95441F5068AB70FF2504127F54697D1A9544106D26C9E10F250418B3DEC3AD1A95441B87179D610F2504179CA8024D1A95441B36316E90FF250417C2B0200D0A9544155BE72210FF250415DC26724CFA9544117C974E20EF2504168DC1A26CFA954413BF8B0830EF25041B3D7942FCFA95441DE70C4E90DF25041B3D7942FCFA954412676A38C0DF25041EED59F4ECFA95441CBBE73260DF250411FD28A96CFA95441DA317DF30CF25041105F81C9CFA95441E1F235FD0BF2504192FEA444D0A95441453BDBA00BF250416DE66D63D0A954416614CB8B0AF250413B429B91D0A95441DA7E11800AF25041713D008FD0A954418FC2F5680AF250415C8FC295D0A95441EC51B82E08F250411F85EB31D0A95441FF86CB3308F25041303B2400D0A95441E7F6182408F2504103D3E5D8CFA95441E7F6182408F250418EBF5D4ECFA95441DA6A7D3308F2504117203AD3CEA95441C052465208F25041AF984D39CEA95441A8C6AA6108F2504113E1F2DCCDA95441D27AABAC08F250410DCF72D5CDA9544128BB49FA08F25041FA3078C4CDA954410F6C8B8709F2504148D291A5CDA9544123A515D309F250416A9DFC8FCDA954414396CB6A0AF250415FA26A5DCDA954413A3238E90BF250415432E1B5CCA95441701EF5680CF250418B76EC7ACCA954415CD1A06E0DF2504109D7C8FFCBA95441EBFC5FDA0DF25041480737C2CBA95441FCC742C10EF250419FC34075CBA954410D9325A80FF2504110988109CBA9544106D26C9E10F250418EF85D8ECAA95441D42D9ACC10F2504124E5D503CAA95441580DCCE910F25041BE8D57DFC9A954418FC2F54811F250413D0AD7E3C8A954412F7A3C6E12F250415DBCA7AAC8A954410250FB8A12F25041927ACFA1C8A954419F0756E712F25041B6920683C8A954413BBFB04313F25041B6920683C8A954419B85E4D314F2504145BEC5EEC8A95441622059F815F25041131AF31CC9A954412B34767D16F2504132781C58C9A954419FADEEB116F25041950ED305C9A954418077D7CF16F2504160D6FCCFC8A95441533C0ADC16F250418D11CAC3C8A954410AD7A36017F250413D0AD7F3C7A95441BC573B6019F25041E6A4DF30C7A95441AF9ECD7C19F2504124280021C7A95441565628D919F2504156CCD2F2C6A95441B3DD14731AF2504149403702C7A95441434ACBDD1AF250415F520014C7A95441757287331BF25041A0024319C7A95441DEC02E3B1BF250413CB49B11C7A954413B481BD51BF2504124280021C7A95441C2C72BFD1BF25041ABA71049C7A9544133C6AE0B1CF25041BA1E7352C7A9544122A2B58F1CF250418DA5D4A7C7A954412786839A1CF250410B55D1AEC7A954411A6F2BEA1CF250416797B5D9C7A95441EDEE5B311DF25041D9EC3FAAC7A95441CD3536501DF250417BA9C388C7A954419B0E4F651DF25041E5F7915EC7A95441455245B21DF2504149403702C7A954412C14E3BF1DF25041BF358F0FC7A95441666666E61DF250415C8FC2E5C6A954418FC2F5581FF25041C3F5287CC7A95441CDCCCC9C21F250415C8FC235C7A954418FC2F59825F2504185EB51D8C5A95441295C8F8227F25041E17A14BEC6A95441295C8F8227F25041E17A140EC7A95441AE47E12A2AF2504185EB5118C7A95441295C8F522AF25041E17A14CEC5A95441AE47E11A2BF2504185EB5138C5A95441EC51B80E2DF25041E17A142EC5A954418FC2F5582EF25041C3F528ACC4A95441295C8FE230F25041E17A144EC3A95441B85B848331F25041CAE196CBC3A954412EA9FF8A31F2504167A85F92C3A95441EFC983492FF25041D3D02F5CBEA954411E9C12472FF25041806E1151BEA95441C3F5283C2FF25041713D0A57BEA9544148E17A042DF2504100000090BDA95441CDCCCC2C2DF25041000000A0BCA95441EC51B8CE2BF250415C8FC265BAA95441EC51B88E2AF2504100000020BAA954410AD7A3F027F25041000000C0BAA9544148E17AD425F2504185EB51C8BCA954418FC2F55824F25041A4703D5ABCA95441EC51B8AE23F2504185EB5138BBA95441EC51B84E24F2504100000020BAA95441CDCCCCFC25F25041000000D0B9A9544148E17AC426F250411F85EBD1B7A9544148E17A0428F2504100000050B7A954410AD7A34028F250411F85EBC1B3A95441295C8F7228F250411F85EBC1B3A95441EC51B8DE2AF25041A4703DBAB6A9544148E17AC42BF25041000000A0B7A95441EC51B86E2CF250413D0AD7C3B6A954418FC2F5782CF2504100000020B5A95441CDCCCC2C2DF25041E17A149EB4A9544148E17AA42DF25041E17A145EB3A954410AD7A3902DF250411F85EB41B1A95441EC51B8FE2DF250415C8FC2B5B0A954418FC2F5082EF2504185EB5138AFA95441E5E3E4762AF25041A01E53E4AFA95441AE47E1FA27F25041A4703DCAB0A954410AD7A34028F250411F85EBD1B2A954410AD7A3A027F250411F85EB21B3A9544148E17AC426F25041000000A0B2A95441295C8F5225F2504100000040B3A95441EC51B8AE23F250411F85EB71B3A95441666666D61EF25041C3F528FCB5A95441295C8F221EF25041E17A14CEB6A95441295C8F921CF25041E17A14CEB6A95441666666D619F25041A4703DEAB8A95441E484527E18F250417DED226EB9A954410656424118F250412A9EE3C7B9A9544159D304FE16F25041D1553E24BAA95441BD1BAAA116F250412A9EE3C7B9A9544109D8B35416F25041B3FEBF4CB9A954413B7C862616F25041FFBAC9FFB8A954417AACF4E815F2504163036FA3B8A95441DEF4998C15F25041A233DD65B8A954412AB1A33F15F25041EEEFE618B8A954419B85E4D314F2504152388CBCB7A954413EFEF73914F25041023D3B13B7A9544156CDBD4711F25041EEEFE618B8A95441CA2370EF0EF250410C4765F0B8A954418BF3012D0FF25041FFBAC9FFB8A954416A1A124210F25041815AED7AB9A95441DC1EEF4B10F25041B9DCDB7FB9A95441EC51B89E10F25041E17A149EB9A95441EC51B83E11F25041000000C0BAA95441516AC5BB11F25041F21504E7BAA95441A5C80EF111F25041FC3858ECBAA954412768326C12F25041D720210BBBA95441917BBAF612F25041A57C4E39BBA95441DD0EF30D13F25041F10F8750BBA95441EC51B81E13F250415C8FC255BBA95441BC95532E13F25041D096E770BBA95441068F428113F250411A90D6C3BBA95441D4EA6FAF13F25041B6473120BCA95441FFCD897714F2504138E7549BBCA9544118E5778614F250419EF648A5BCA95441AE47E13A15F250415C8FC2E5BCA95441371B13A515F25041D49EAFF7BCA954415594BD0716F25041D49EAFF7BCA95441FC4B186416F25041C7121407BDA95441980373C016F2504170560A54BDA9544134BBCD1C17F25041249A00A1BDA95441F58A5F5A17F25041F2F52DCFBDA954414C47690D17F2504192ECCF21BFA95441BD1BAAA116F25041CE9ACCD0C0A954414808221716F2504177DEC21DC1A9544169E1110215F25041F97DE698C1A9544131725C4914F25041C7D913C7C1A954412E2E806412F25041ECF14AA8C1A95441B34F15F310F250415DC68B3CC1A9544186D433AF10F2504124C3CC69C1A954418FC2F5780EF25041C3F5286CC3A9544136DF669A0DF25041C0D6B6E1C3A95441B953F8190DF250413BF7C52EC4A95441A76573450CF250413BF7C52EC4A954418FC2F5F80BF250413D0AD733C4A95441362BD1EE0BF250413BF7C52EC4A9544131E9F1B70BF250413BF7C52EC4A95441B2CB3F5009F2504181E8ECFAC2A95441554453B608F25041ECF14AA8C1A95441F1FBAD1209F250416613E036C0A95441902082FE08F250413F815CFABFA9544162C2AD8708F25041C0C09ACCBEA954413007192508F25041B65F44D2BDA95441F8BC661C08F25041FF81C9BFBDA954413CFA254D07F250410C1B4DCBBDA954410DF19EF306F25041D9A88FD3BDA954410BBC0E3106F250416826CCFEBDA95441295C8F2205F25041A4703D8ABEA95441EB915D6204F25041A7231085BEA95441BAC5F89903F250411DD94797BEA954413826D51E03F25041AC040703BFA95441B63FA20E03F250419F62A00FBFA954411D586ED602F25041CB9ED044BFA9544113EC876902F2504134D5DFABBFA9544134E78D2802F2504198B7B208C0A95441BD476AAD01F25041B60E31E0C0A95441023E266801F2504138AE545BC1A954416686CB0B01F25041A2C1DCE5C1A9544128479FE900F25041E0000908C2A95441AE47E19A00F25041C3F5287CC2A95441F790F4B400F25041A358B3E4C2A95441731267FC00F25041F6FB7485C3A95441E4E6A79000F2504192B3CFE1C3A95441875FBBF6FFF1504121DF8E4DC4A9544194EB56E7FFF15041CA22859AC4A95441EC9F6AC9FFF15041A90B1C3AC5A95441007CD1C1FFF15041EB572095C5A95441AC77F2D7FFF15041C1D530A0C5A95441CACE70AF00F25041A94995AFC5A95441809E02ED00F2504149403702C7A95441C80490E800F250414A6FCF04C7A95441AE47E1EA00F25041E17A140EC7A95441E4042ABF00F25041E599F51CC7A95441482F4D3400F25041D86BF66DC7A954417694D80FFFF150416797B5D9C7A95441BC85FFDBFDF15041034F1036C8A954415FFE1242FDF15041E836D954C8A95441F5EA8AB7FCF1504128674717C8A95441CD930CE0FBF15041590B1AE9C7A95441AF3C8E08FBF15041993B88ABC7A954412A11CF9CFAF15041E5F7915EC7A954412064A882FAF1504193AC6164C7A954412DCDC429F8F1504115BEE969C8A954418E9C9E5DF7F1504160D6FCCFC8A95441C510BE40F7F15041E0B9A4EAC8A9544148E17A04F6F1504185EB5138CAA9544184AAD401F6F15041778CAA5DCAA95441EEA5FC0AF6F15041816CC29DCAA95441063298FBF5F15041DEF3AE37CBA95441204ACFDCF5F150413B7B9BD1CBA954414BA047DBF5F15041AC06B5D6CBA954418FC2F5C8F5F15041A4703D4ACCA95441E883BCB5F5F15041F80FDA53CCA9544152EEA1AEF5F150419802886BCCA95441C3C2E242F5F15041665EB599CCA95441663BF6A8F4F150410D1610F6CCA95441E49BD22DF4F15041F5897405CDA954418714E693F3F150410D1610F6CCA95441FFAE7420F3F150411AA2ABE6CCA95441FF2B22D2F2F150413CC3288DCCA95441295C8F62F2F150415C8FC235CCA954419AB8FDEAF1F15041B2D78EF5CBA95441522C37DDF1F15041166364F0CBA95441DA8C1362F1F150416093D2B2CBA9544159EDEFE6F0F150413B7B9BD1CBA954412E0AD61EF0F15041EFBE911ECCA9544110B35747EFF15041FC4A2D0FCCA954412400AC41EEF150412EEFFFE0CBA95441D032EE39EEF15041F43513EFCBA95441EC51B89EEDF15041C3F5281CCDA954413D23E510EDF1504197D1574FCDA95441D0C513A2ECF150416A9DFC8FCDA9544198565EE9EBF15041206D8ECDCDA95441ABCA217CEBF15041ACE36AE1CDA95441EC51B8CEEAF1504100000020CEA95441EC51B88EE9F15041A4703DDACDA954410917E53CE9F150417D772AF5CDA9544120FA648BE8F15041A20CB248CEA954413447B985E7F1504124ACD5C3CEA9544109649FBDE6F15041E57B6701CFA954414455C689E5F15041C0633020CFA954411972ACC1E4F15041C0633020CFA95441AF5E2437E4F1504117203AD3CEA954415F63D38DE3F150415650A895CEA95441DDC3AF12E3F150417068DF76CEA95441BF6C313BE2F1504163DC4386CEA954410C24A6FFE0F15041FF939EE2CEA9544113E55E09E0F15041B3D7942FCFA954419ED1D67EDFF150418133C25DCFA95441021A7C22DFF15041105F81C9CFA95441B21E2B79DEF15041B9A27716D0A95441480BA3EEDDF1504192FEA444D0A95441C66B7F73DDF150416DE66D63D0A954413740C007DDF15041099EC8BFD0A95441E97F8E72DCF1504193356A47D1A95441AE47E12ADAF15041C3F528ACD3A954413CC824CFD9F15041B1469AD8D3A95441CC6F629AD9F15041A612F9FED3A95441A18C48D2D8F15041353EB86AD4A9544105D5ED75D8F1504142CA535BD4A95441E77D6F9ED7F1504181FAC11DD4A95441A40EBAE5D6F15041A612F9FED3A95441E8EF5262D6F15041F874F45AD4A95441AD9B6E88D5F15041CF29172ED5A954411CA4B383D5F150416021D232D5A9544155F6D36CD5F150411BDE2F31D5A95441005BCD84D4F150416E00FF29D5A95441BCDD7FF3D3F1504153953642D5A95441B5129D0CD3F150411465C87FD5A95441F103C4D8D1F150411465C87FD5A954415C0D2286D0F1504159601929D6A95441C3705154D0F150414824DF3FD6A9544194C13B9FCDF150410DD063D5D7A95441298D993ACCF1504119A70DA6D8A9544130689DECCBF1504181C1C1DDD8A954411B31F529CBF15041F4EF9245D9A954418704F070CAF15041C1EAD3B1D9A9544105BA193ACAF1504154ECCDF1D9A9544100E49726CAF15041E71F980CDAA954419E98DA15CAF1504129439523DAA954419732B4A3C9F150413F0FE207DBA954410807F537C9F150410D6B0F36DBA954411C544932C8F15041827E97C0DBA95441DAE49379C7F15041AD61B188DCA95441584570FEC6F150412E01D503DDA9544120D6BA45C6F1504199145D8EDDA95441831E60E9C5F1504167708ABCDDA954414E3B4621C5F15041C4F77656DEA9544123582C59C4F15041532336C2DEA954410501AE81C3F150418806508ADFA95441A879C1E7C2F1504100A67305E0A9544197AEDE00C2F1504174B9FB8FE0A954415F3F2948C1F150411DFDF1DCE0A95441D0136ADCC0F15041107156ECE0A954419A305014C0F15041EB581F0BE1A954413DA9637ABFF15041D140E829E1A95441A54CE399BEF150416FBEDF38E1A954411A680563BEF15041E6707B40E1A9544112C1B4C3BDF150419F9C1558E1A95441901626B2BDF15041552C0259E1A954418FC2F598BCF1504100000080E1A95441295C8F62BBF150417B14AEE7E2A95441C32DA757BBF150413E99E2E9E2A95441A12F9E4CBBF15041E8D6ADF7E2A9544144A8B1B2BAF15041CEBE7616E3A95441C2088E37BAF15041A9A63F35E3A954418A99D87EB9F15041848E0854E3A95441993AE2CCB8F150413EE5746DE3A95441AF26D3BDB7F15041EF4442A4E3A95441636F883EB7F15041A8728041E4A954418FC2F5A8B6F150413D0AD703E5A954415C09B71EB6F15041F6924F21E5A95441E759C558B5F150414F68C46EE5A954419E1F2DB9B3F15041ECDCF4ADE8A954410D25DE9FB3F150418439C6BDE8A95441CDCCCC9CB3F150413D0AD7C3E8A9544108D891CBAFF150418D9ED526EBA95441E3537EA2AFF150412E56D443EBA9544161B45A27AFF150414CAD521BECA95441510550B7AEF15041F2B362C3ECA95441C07392A4AEF15041EFBFF60AEDA9544138E3479EAEF150412E36FE22EDA954411CB9097EAEF150417BCFB3D9EDA95441435DDC4FAEF15041E5E23B64EEA9544168751331AEF15041B77DB088EFA954419A19E602AEF15041EFEC6541F0A9544130573EA0ADF1504159FCBB28F0A9544192EB916CADF150419534AD2BF0A954417CC2672BADF15041EFEC6541F0A9544112AFDFA0ACF1504121913813F0A95441CF3F2AE8ABF15041784D42C6EFA95441762091E3ABF15041C1B044AFEFA954410AD7A3E0ABF15041E17A14AEEFA954411B6ABBDDABF15041F9201892EFA95441DCCBC5D8ABF15041C4094C79EFA95441F45761C9ABF15041740EFBCFEEA95441F45761C9ABF1504107683ACEEEA954410AD7A390ABF15041C3F528ACECA9544125296E2FABF150413FE9B558ECA9544148E17A04ABF150413D0AD733ECA954410AD7A3F0AAF150411F85EB61EBA95441B1E8AB10ABF15041C70CA066EBA95441B1E8AB10ABF15041143E9D62EBA954411BFC339BABF15041143E9D62EBA9544183832035ACF15041EF256681EBA954416531374CACF150412E56D443EBA954416531374CACF150419F2A15D8EAA95441F11385E4A9F15041F61F1FCBE5A95441E39113D1ABF1504148E00BA5E1A954411F401080ADF1504156627DB8DFA954417C84D2FCB0F1504106672C0FDFA954413354643AB1F15041DBC63C64DBA95441F04868D2B0F15041BF84BD50DBA9544166666636B0F15041A4703D4ADBA954417AABF1BCAFF15041B8B5C8D0DAA954414E9B717EAAF150412BC28D0DDCA954418D09756FA6F15041314A46D7DFA954418AE00589A4F150417FC4EF48E3A9544148E17AC4A4F1504100000060E3A95441B5F7EAC4A4F1504161FDEF7DE3A95441374341DFA4F1504113BAC7BFE3A95441122B0AFEA4F1504163B51869E4A95441374341DFA4F15041E5543CE4E4A95441374341DFA4F15041F61F1FCBE5A95441BACA6FCEA4F15041B2D9C908E6A95441EC51B8CEA4F15041C3F5281CE6A95441BEF60AC5A4F150419A8D3B2BE6A954415EE713B1A4F150413B1B7074E6A95441C22FB954A4F15041CA462FE0E6A9544119ECC207A4F150411A428089E7A954418AC0039CA3F15041CE8576D6E7A95441B164D66DA3F150416A3DD132E8A9544147514EE3A2F150411E81C77FE8A95441B49A2F30A2F15041461644E8E8A95441E4145A2AA2F1504172C3CBECE8A954419308C3A7A1F15041E299CA90EBA95441867C27B7A1F1504132951B3AECA9544166B96DD6A1F150416E16992DECA95441AE47E1EAA1F1504100000020ECA954414F0E5DEEA1F15041A8270624ECA954412FC01D04A2F150414CAD521BECA954414D179CDBA2F150414360FE20EDA954411B73C909A3F150412BD46230EDA9544139E37B44A3F15041615DED51EDA95441CDCCCC3CA5F150413D0AD773EDA954410AA65C79A5F1504106789E90EDA9544143D471BEA5F15041BAFF219CEDA95441D2FF302AA6F150417BCFB3D9EDA95441549F54A5A6F15041492BE107EEA95441F056AF01A7F150412F13AA26EEA9544108E34AF2A6F15041F6AD1E4BEFA954414713B9B4A6F15041FAEC6541F0A95441D5B73292A5F1504159AF8F7EF0A9544112BA4690A5F150410CD0127FF0A95441EFDF6C9EA5F150414896DC28F1A95441C29DFC9FA5F15041545ED237F1A95441D2FF302AA6F15041B4FB3E75F1A95441612BF095A6F1504175CBD0B2F1A95441156FE6E2A6F150412B9B62F0F1A95441EFAC913DA7F150414E028087F2A95441626FF640A7F150415DA8728BF2A954414DDE9B9BA7F1504149F2E0C7F2A954410EAE2DD9A7F15041D81DA033F3A95441C2F12326A8F150417ED5FA8FF3A95441E048A2FDA8F1504185A0DD76F4A954417C00FD59A9F1504138E4D3C3F4A95441FE9F20D5A9F15041EC27CA10F5A95441046B03BCAAF1504149AFB6AAF5A95441AB225E18ABF15041F2F2ACF7F5A954411536E6A2ABF15041B3C23E35F6A9544191B30C18ACF15041B264D85FF6A95441D29BDC3BACF1504154FDCE68F6A9544195B67ED4ACF1504103AE028FF6A954417CC2672BADF1504142EEFDA0F6A95441D94954C5ADF1504128D6C6BFF6A954415F5C352AAEF15041DBCF17DAF6A95441295C8F32AFF1504100000010F7A954416205F6D4B0F150415988521CF8A954411F027B51B1F1504171105F5FF8A9544130CD5D38B2F150413F6C8C8DF8A95441A76C81B3B2F15041E8AF82DAF8A95441EADB366CB3F1504177DB4146F9A9544168440E04B4F1504106D91D8DF9A95441AE47E10AB4F1504100000090F9A954413FFF2E3AB5F15041C59584D8F9A95441CFCD2968B5F15041DF622EE0F9A95441911F8099B6F1504147F7832CFAA95441F0DD2F9CB6F15041A566282DFAA95441CC4BB854B7F150417B1A893CFAA95441B8FE635AB8F15041245E7F89FAA954414B696ABCB9F1504167CD3442FBA95441755A4E22BAF150415F6EB12AFBA9544148E17AF4BAF150417B14AEF7FAA95441484224F5BAF150412074DFF7FAA95441F8EBA7FFBAF15041B3893EF5FAA95441154326D7BBF150418CE56B23FBA9544190219148BDF150411B112B8FFBA95441BB04AB10BEF15041C45421DCFBA95441AF957322BEF15041A542E8D9FBA95441393A3627BEF15041DE8710D9FBA954412BF69DCBBEF15041ADF8F5BBFBA95441ED67CAF1BEF150416E0234B5FBA954416887E853BFF1504103858F9EFBA954411497A38EBFF15041629D0A5AFBA95441DF0577B3BFF150413277CD22FBA95441CB423CBDBFF15041A246F3F1FAA95441A531E79FBFF150412BD69061FAA9544129577A91BFF150416E8EED4BFAA95441E573058DBFF150413D5A9F04FAA954414F2F3E6EBFF1504145A51E6DF9A95441D2FAE659BFF150412BD5FE08F9A95441A1F1081EBFF1504171105F5FF8A954414A35FF6ABFF15041A3B43131F8A95441FE78F5B7BFF15041BDCC6812F8A954419A305014C0F15041FCFCD6D4F7A95441ABFB32FBC0F1504121150EB6F7A95441EE6AE8B3C1F1504160457C78F7A95441587E703EC2F15041855DB359F7A95441EF78650EC3F1504198E8B529F7A95441295C8F82C3F150415C8FC205F7A95441ACC18EADC3F150419026FB04F7A95441AE44A4CEC3F15041DEA558FDF6A95441FE3FF577C4F15041DEA558FDF6A95441EAF2A07DC5F15041F631F4EDF6A95441781A558EC5F15041707845FCF6A9544148E17A94C5F15041C3F528FCF6A95441C0E3F358C6F150418ADBBCA1F7A9544126A19D2CC7F150414F7A9991F6A9544180DF18F3C4F150416A88A695F4A9544147B38D57C1F15041F32BAD37F1A95441D9FBB3E4C0F15041F32BAD37F1A95441451548D5C0F15041AF2BF938F1A9544180181933C0F15041CE137656F1A954413DA9637ABFF150413FE8B6EAF0A95441E02177E0BEF15041A3305C8EF0A9544126139EACBDF1504114059D22F0A95441C2CAF808BEF15041C4094C79EFA95441D74ED235BEF150418EA9B201EFA9544120736D56BDF1504165890EB7EEA95441FF7C124DBDF150411053EEB3EEA95441B559C341BDF1504106DF9FBDEEA95441295C8FF2BCF150413D0AD703EFA9544109DC52D3BCF150410384B949EFA954413A60F2A6BCF1504153350BE5EFA95441AB34333BBCF150416400EECBF0A954413621ABB0BBF150411E0FC7FFF1A954414A6EFFAABAF1504104F78F1EF2A954419DEBC167B9F15041D81DA033F3A954410EC002FCB8F150412819F1DCF3A954414CF9FCEFB8F1504164BA56DBF3A95441FE6CF415B8F1504183CF69BFF3A9544109FF2AECB7F150414CB20FBAF3A95441A06D337BB7F150415ABDC3AEF3A954410EEEEB26B7F150416C0421B8F3A954419A83D6E6B6F1504189E433C4F3A9544115CDA24EB6F15041D2E1E0E0F3A9544118032D19B6F150411B8D55ECF3A95441ED1F1351B5F15041E9E8821AF4A95441C23CF988B4F1504167495F9FF3A954414E2971FEB3F15041CB910443F3A954416276C5F8B2F150417B96B399F2A95441030B8990B2F1504192F93554F2A95441DFC6E368B2F15041B48DD13BF2A95441864C7B17B2F150419E218F24F2A954417322B5D5B1F15041F88AF519F2A95441D7BD88A4B1F15041BBD50812F2A95441586C9B1BB1F150411E0FC7FFF1A954414D505616B1F1504101BBF7EFF1A95441295C8FC2B0F150411F85EB51F1A954418C1F16D7B0F150416D4ACB3EF1A95441A428A5CEB0F1504100B84828F1A9544165F8360CB1F150413FE8B6EAF0A95441F423F677B1F1504196A4C09DF0A9544190DB50D4B1F1504114059D22F0A954411F071040B2F1504114059D22F0A95441F7623D6EB2F15041391DD403F0A95441A1A633BBB2F1504114059D22F0A95441A4E57AB1B3F15041E260CA50F0A95441C23CF988B4F1504196A4C09DF0A9544183C5A189B5F1504101689001F1A95441F5078237B6F15041F9856AEEF0A954418D16B5A3B6F15041577452DBF0A95441D82D337DB7F150413717D392F0A954418A03269FB7F1504166F8CE81F0A95441463958B6B8F15041CAD7DDF5EFA954419DEBC167B9F15041B77DB088EFA95441E28DC0DCB9F15041952C314EEFA95441FDD76DE4B9F150418F8DAC49EFA95441F787DBE9B9F1504110B07A46EFA9544162FA9A9BBAF15041740EFBCFEEA954411C0974CFBBF15041CBCA0483EEA9544101F6D1DCBCF15041E5E23B64EEA954416C095A67BDF150412F13AA26EEA954412DD9EBA4BDF150417BCFB3D9EDA95441AE780F20BEF15041AD7386ABEDA95441B621C88ABEF15041AA90F387EDA954415FA5C3D0BEF1504131F0616CEDA954418D9F1F35BFF150411E48C73FEDA954411CCBDEA0BFF1504111BC2B4FEDA95441BF3357E6BFF150418AFE0463EDA9544166666676C0F150413D0AD773EDA95441295C8FF2C1F15041E17A148EECA95441AB022111C2F15041807BF685ECA954416BD05927C2F15041F364AD77ECA95441D35746C1C2F1504132951B3AECA95441DEF4C738C3F150414DFA4A0DECA95441BB18642EC3F15041417CE2EFEBA954416F0FA11DC3F15041A3695CCEEBA9544115661118C3F15041178DB3B0EBA954418FC2F5D8C2F15041E17A14FEEAA95441D91CFBFBC2F150412BB3E88CEAA954418927D8FEC2F150410373BA7BEAA954416F0FA11DC3F15041995F32F1E9A954413D6BCE4BC3F150413CD84557E9A954419AF2BAE5C3F150419520EBFAE8A9544158CEEA35C4F15041EB2BDCE1E8A954410AD7A390C4F15041000000B0E8A9544100B83ECCC4F15041EBF2E1B2E8A95441933102DCC4F15041ECDCF4ADE8A95441269C083EC6F15041F968909EE8A954416AE727CFC6F1504164D2E849E8A954418FC2F588C7F15041000000C0E7A9544183308A8EC7F15041F0506BC4E7A95441AE060FA0C7F15041E89DADB7E7A954414FD2FB8FC8F150415D039E7AE8A9544166A9169CC8F1504194F2CB78E8A95441D7411CACC8F1504150116376E8A95441B7BFD8AEC8F15041B3B6F975E8A954415B894CE3C8F150413899FE60E8A9544164F3583AC9F150413899FE60E8A95441A1A9CF8AC9F15041608DE454E8A954412D24C107CAF150416A3DD132E8A954417D1F12B1CAF150411E81C77FE8A9544111294A75CBF150419186E7EFE8A954415228DD18CDF150419C09958BE8A95441CC248D37CDF150411E81C77FE8A95441413815C2CDF1504150259A51E8A95441C3D7383DCEF1504177C96C23E8A95441AF8AE442CFF150419CE1A304E8A95441447CF1A6CFF150411A428089E7A95441E0334C03D0F150417E8A252DE7A954417CEBA65FD0F15041EF5E66C1E6A95441302F9DACD0F15041461B7074E6A954416090DB88D1F15041CA65F75BE6A9544148E17AC4D1F15041E17A144EE6A9544189F819CDD3F15041DB5CFC88E5A954414443F166D4F15041810C9740E5A95441BF215CD8D5F1504117F90EB6E4A954410F1DAD81D6F1504156297D78E4A95441FBCF5887D7F15041D48959FDE3A954410C9B3B6ED8F150416A76D172E3A95441833A5FE9D8F150416A76D172E3A95441E6AD289BD9F150414758EA98E3A954414D865AF7D9F1504138D2FEA0E3A95441B25CC0A7DAF1504138D2FEA0E3A954410FE4AC41DBF1504177026D63E3A954418AC217B3DCF150419C1AA444E3A95441A819968ADDF15041B632DB25E3A954419ADCDEF0DDF15041512805FAE2A9544174CE7536DEF15041C15768D2E2A95441301EA967DEF1504136B466B6E2A95441B8012B3ADFF15041CDEB923EE2A95441C2EEA24EE0F150416DF84286E1A95441D3B98535E1F15041D140E829E1A95441781F360BE3F150415BD3B0AEE0A954410B000000CDCCCCFC20F2504185EB5128BCA95441EC51B84E1FF25041E17A144EBEA95441AE47E16A1CF25041E17A143EBFA95441CDCCCCBC1AF2504185EB5168BDA95441B81E85EB19F25041CDCCCC5CBDA954416666663619F250415C8FC2F5BBA95441AE47E18A1AF2504185EB5188BBA95441295C8F921CF2504185EB5198BAA954418FC2F5581FF250413D0AD7C3BBA95441AE47E12A20F250413D0AD763BCA95441CDCCCCFC20F2504185EB5128BCA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463873 - 260102
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000061010000AE47E13AB1F15041C3F528ECD4A95441295C8FD2AFF150413D0AD713D5A95441295C8F92AEF150415C8FC2E5D5A9544148E17A34ADF15041C3F5282CD6A95441295C8F72ABF15041C3F5288CD5A954418FC2F528AAF15041A4703DAAD5A9544166666616A8F15041C3F5281CD7A954418FC2F5C8A5F150415C8FC225D7A95441EC51B87EA4F15041000000C0D8A95441CDCCCC5CA3F15041C3F528FCD8A954410AD7A330A2F15041C3F5286CD7A95441EC51B80EA1F1504100000080D7A95441295C8F32A0F15041E17A144ED7A9544148E17A249FF15041E17A145ED6A95441AE47E1DA9DF150411F85EB71D6A95441EC51B8FE9CF15041E17A140ED6A95441295C8FC29CF150411F85EB31D5A95441CDCCCC2C9CF150411F85EBE1D4A9544148E17AC49AF150413D0AD7A3D6A95441295C8FA299F15041A4703D1AD9A954410AD7A3D098F1504185EB51A8DCA9544148E17A3499F150411F85EB31DFA95441666666B699F150413D0AD713DFA95441AE47E16A9AF1504185EB51A8DCA9544148E17AA49CF150413D0AD7E3DCA954418FC2F5B89CF15041C3F5283CDFA9544148E17AD49EF150415C8FC2F5DEA95441AE47E10AA0F15041A4703D6ADEA954410AD7A3A0A0F15041A4703DBADEA954410AD7A3A0A0F15041E17A141EDFA954418FC2F528A0F1504185EB5168E0A95441EC51B8BEA0F1504100000080E1A95441EC51B81EA0F15041E17A143EE2A95441666666669EF15041A4703DCAE2A95441666666169EF15041E17A14FEE5A95441666666869CF15041C3F5286CE6A954418FC2F5B89CF150413D0AD7D3E7A954418FC2F5A89DF15041E17A14DEE7A954410AD7A3C09EF150415C8FC2D5E5A95441CDCCCC3CA0F15041C3F5287CE5A95441295C8F22A1F150413D0AD7A3E5A95441AE47E13AA2F15041E17A145EE5A95441295C8FB2A2F150415C8FC2F5E3A954410AD7A310A4F15041A4703D1AE3A9544148E17AC4A4F1504100000060E3A95441EC51B8CEA4F15041C3F5281CE6A9544148E17AD4A3F150411F85EBA1E7A95441AE47E1EAA1F15041E17A141EE9A95441295C8F22A1F15041E17A142EE8A9544148E17A64A0F150411F85EB41E8A95441666666F69FF150417B14AE47E7A95441CDCCCC9C9FF150415C8FC265E7A9544148E17AD49EF1504100000090EAA95441EC51B8DE9EF15041000000D0EBA954418FC2F5389FF150415C8FC265ECA9544148E17AE49DF150413D0AD713EEA954418FC2F5089DF150411F85EBE1EDA954418FC2F5B89CF15041E17A14BEEEA95441AE47E13A9DF15041A4703DEAEFA954410AD7A3709EF1504100000090EFA95441295C8FA29EF15041000000A0EEA954418FC2F5389FF15041A4703DBAEDA954410AD7A350A0F150413D0AD7B3EEA95441CDCCCCDCA0F150415C8FC2F5EDA95441295C8F72A1F1504100000070ECA95441AE47E1EAA1F1504100000020ECA95441EC51B8EEA2F15041C3F5284CEDA95441CDCCCC3CA5F150413D0AD773EDA95441CDCCCCCCA6F150411F85EB31EEA954418FC2F5B8A6F1504100000030F0A95441CDCCCC8CA5F1504100000080F0A954410AD7A3A0A5F15041E17A143EF1A95441AE47E19AA6F15041A4703DCAF1A954418FC2F538A9F150415C8FC2D5F4A954418FC2F518ABF1504100000020F6A954418FC2F548ADF15041C3F528ACF6A95441295C8F32AFF1504100000010F7A9544148E17A44B1F150413D0AD763F8A95441AE47E10AB4F1504100000090F9A9544148E17A74B8F15041E17A149EFAA95441AE47E1AAB9F150417B14AE47FBA9544148E17AF4BAF150417B14AEF7FAA95441AE47E10ABEF15041E17A14DEFBA95441EC51B85EBFF150411F85EBA1FBA95441295C8FC2BFF15041C3F5280CFBA9544166666636BFF15041A4703D5AF8A95441295C8F82C3F150415C8FC205F7A9544148E17A94C5F15041C3F528FCF6A954418FC2F598C6F150417B14AED7F7A95441CDCCCC7CC9F1504100000060F7A95441AE47E13ACAF15041A4703D7AF6A954410AD7A3E0C9F15041C3F528BCF5A9544148E17AB4C8F150411F85EBC1F4A9544148E17AC4C7F15041E17A146EF3A95441EC51B88EC6F15041A4703D3AF5A95441295C8FB2C5F150413D0AD753F4A95441AE47E1DAC5F15041A4703D0AF3A95441295C8FF2C6F15041C3F5284CF2A9544148E17A14C8F15041E17A147EF2A9544148E17A14C8F150411F85EB51F1A9544148E17A24C7F150415C8FC275F0A954418FC2F5F8C5F15041C3F5280CF1A954418FC2F5B8C4F150415C8FC275F0A95441CDCCCCECC2F150417B14AE07F0A9544148E17A84C1F15041A4703D2AF1A9544166666626C0F150417B14AE47F1A95441AE47E1FABEF15041A4703D8AF0A954410AD7A3B0BDF15041C3F5281CF0A95441AE47E15ABEF15041E17A140EEFA95441CDCCCC4CBDF150413D0AD7B3EEA95441295C8FF2BCF150413D0AD703EFA95441EC51B89EBBF15041C3F528FCF1A95441AE47E19ABAF150415C8FC205F2A95441EC51B86EB9F150417B14AE27F3A95441666666F6B8F15041C3F528DCF3A954410AD7A370B7F15041A4703DAAF3A95441EC51B85EB5F15041E17A140EF4A95441295C8F52B2F15041E17A142EF2A95441CDCCCC1CB1F15041C3F528FCF1A95441295C8FC2B0F150411F85EB51F1A95441EC51B8EEB1F15041A4703D3AF0A954410AD7A3C0B2F1504100000030F0A9544166666686B5F150411F85EB01F1A95441EC51B8EEB6F15041A4703DDAF0A95441666666F6B8F150415C8FC2D5EFA95441CDCCCC7CBAF15041000000F0EEA95441AE47E16ABDF1504100000050EEA95441666666A6BDF150411F85EBE1EDA95441295C8F22BFF15041C3F5284CEDA9544166666676C0F150413D0AD773EDA95441295C8FF2C1F15041E17A148EECA9544166666646C3F150413D0AD733ECA954418FC2F5D8C2F15041E17A14FEEAA95441AE47E15AC3F15041A4703D5AE9A954410AD7A390C4F15041000000B0E8A95441AE47E12AC6F150413D0AD7C3E8A954418FC2F588C7F15041000000C0E7A954418FC2F578C8F15041E17A147EE8A954418FC2F508CAF150411F85EB41E8A95441CDCCCC5CCBF150415C8FC2F5E8A95441B81E859BCFF150411F85EBF1E7A954418FC2F598D0F150413D0AD793E6A9544148E17AC4D1F15041E17A144EE6A95441CDCCCCECD6F15041A4703D5AE4A954418FC2F568D8F15041E17A147EE3A95441295C8FA2DAF15041000000B0E3A954410AD7A360DBF150413D0AD773E3A95441295C8F72DDF150411F85EB41E3A954418FC2F588E0F1504100000080E1A95441295C8F02E4F15041E17A145EE0A95441AE47E1FAE6F15041C3F528ECDEA95441666666A6EFF15041E17A14AEDBA95441AE47E1FAF0F150415C8FC2E5DAA95441295C8F32F5F15041E17A141EDAA95441EC51B8BEF5F15041E17A14CED9A95441CDCCCCBCF7F15041E17A14CED9A9544166666656F9F150411F85EBF1D8A95441295C8F22FBF150411F85EBF1D8A95441295C8F02FDF150413D0AD7E3D7A9544166666656FEF15041E17A149ED7A95441295C8FB201F25041A4703DFAD5A95441EC51B8DE02F25041000000F0D5A9544148E17A5405F25041C3F528ECD4A95441295C8FB206F25041C3F528ECD4A95441666666860AF2504185EB5148D3A95441CDCCCCBC0BF250415C8FC265D3A95441AE47E1BA0DF250413D0AD7F3D1A95441666666D60FF25041A4703D9AD1A9544148E17AE410F250415C8FC235D1A95441666666360FF250413D0AD723CFA95441AE47E1BA0DF25041E17A142ECFA95441CDCCCCAC0CF25041C3F528ECCFA954418FC2F5680AF250415C8FC295D0A95441EC51B82E08F250411F85EB31D0A95441AE47E16A08F250413D0AD7E3CDA9544148E17A040AF25041A4703D8ACDA95441EC51B89E10F250415C8FC2A5CAA954418FC2F54811F250413D0AD7E3C8A9544148E17A1413F25041A4703D8AC8A95441AE47E17A16F25041C3F5285CC9A954410AD7A36017F250413D0AD7F3C7A95441666666D619F250413D0AD703C7A954410AD7A3C01BF250411F85EB21C7A95441666666F61CF25041A4703DEAC7A95441666666E61DF250415C8FC2E5C6A954418FC2F5581FF25041C3F5287CC7A95441CDCCCC9C21F250415C8FC235C7A954418FC2F59825F2504185EB51D8C5A95441295C8F8227F25041E17A14BEC6A95441295C8F8227F25041E17A140EC7A95441AE47E12A2AF2504185EB5118C7A95441295C8F522AF25041E17A14CEC5A95441AE47E11A2BF2504185EB5138C5A95441EC51B80E2DF25041E17A142EC5A954418FC2F5582EF25041C3F528ACC4A95441295C8FE230F25041E17A144EC3A95441666666D632F250413D0AD7D3C4A95441AE47E1DA33F25041E17A148EC4A9544148E17A3434F25041E17A14EEC3A954416666665635F25041E17A14EEC3A9544148E17A7435F25041A4703DEAC2A95441AE47E13A33F25041A4703D5AC1A954410AD7A38033F250413D0AD773C0A95441EC51B8DE2FF25041E17A14FEBDA95441C3F5283C2FF25041713D0A57BEA9544148E17A042DF2504100000090BDA95441CDCCCC2C2DF25041000000A0BCA95441EC51B8CE2BF250415C8FC265BAA95441EC51B88E2AF2504100000020BAA954410AD7A3F027F25041000000C0BAA9544148E17AD425F2504185EB51C8BCA954418FC2F55824F25041A4703D5ABCA95441EC51B8AE23F2504185EB5138BBA95441EC51B84E24F2504100000020BAA95441CDCCCCFC25F25041000000D0B9A9544148E17AC426F250411F85EBD1B7A9544148E17A0428F2504100000050B7A954410AD7A34028F250411F85EBC1B3A95441295C8F7228F250411F85EBC1B3A95441EC51B8DE2AF25041A4703DBAB6A9544148E17AC42BF25041000000A0B7A95441EC51B86E2CF250413D0AD7C3B6A954418FC2F5782CF2504100000020B5A95441CDCCCC2C2DF25041E17A149EB4A9544148E17AA42DF25041E17A145EB3A954410AD7A3902DF250411F85EB41B1A95441EC51B8FE2DF250415C8FC2B5B0A954418FC2F5082EF2504185EB5138AFA954417B14AE572EF2504166666686ADA9544148E17AF42DF250411F85EBA1ABA95441295C8F622EF250415C8FC235A9A954413333334325F250413D0AD7A3A8A95441B81E856B1EF2504185EB5138A8A95441666666B61AF25041EC51B8FEA7A95441EC51B8DE1BF250415C8FC275AAA954418FC2F5781DF25041C3F5284CACA95441666666F61CF250411F85EB81ADA95441295C8F421CF250415C8FC295ADA9544148E17AE41AF250411F85EB21A9A95441EC51B85E19F25041C3F5288CA8A954418FC2F58817F25041A4703D4AA9A95441666666B616F25041E17A149EAAA95441EC51B87E17F25041E17A14DEABA9544148E17A5419F25041000000A0ADA95441CDCCCCDC18F25041E17A14FEAEA95441295C8F7219F250413D0AD733B0A95441EC51B80E19F250411F85EB41B1A95441AE47E15A18F2504100000060B1A95441EC51B8CE17F250415C8FC2C5AFA954418FC2F54816F250415C8FC2E5ADA95441713D0A6716F250417B14AEA7AAA954416666663614F2504185EB5198ABA954410AD7A39014F25041A4703D0AADA95441EC51B8FE14F250411F85EB31ADA95441EC51B85E14F25041E17A140EAEA954418FC2F56814F25041A4703D3AAFA95441AE47E13A15F2504185EB5148B0A954410AD7A38015F25041C3F5282CB3A954410AD7A35013F250411F85EBA1B0A9544148E17A1413F250411F85EB11AFA95441295C8F4212F25041C3F528DCADA95441EC51B87E12F25041000000B0ACA95441AE47E12A11F2504185EB5188ACA95441AE47E18A10F25041000000F0ADA954418FC2F5680FF25041E17A14FEAEA95441EC51B81E0EF25041C3F5286CAFA954418FC2F5380DF250413D0AD7F3AEA95441666666E609F25041E17A143EB0A954418FC2F5B80AF250411F85EBE1B1A95441CDCCCCCC0AF250413D0AD7A3B3A954418FC2F5C809F25041C3F5281CB4A9544148E17AC408F2504185EB5178B2A954418FC2F59807F250415C8FC295B2A954410AD7A35004F250411F85EB61B4A954418FC2F59802F250415C8FC2D5B3A954418FC2F50801F250413D0AD7E3B4A95441AE47E1FAFFF1504185EB5138B6A95441EC51B85EFBF1504185EB5138B6A95441CDCCCCFCF8F15041E17A14BEB7A95441CDCCCCACF8F150413D0AD753B8A954410AD7A360F9F1504100000090B8A954410AD7A3F0FAF150413D0AD753B8A95441EC51B84EFCF15041A4703D9AB8A9544148E17A64FAF15041E17A14EEB9A954410AD7A370F8F1504185EB5198BAA954410AD7A380F7F150411F85EBB1B9A954410AD7A340F6F1504185EB51F8B9A9544166666696F5F15041C3F528ECBBA95441EC51B82EF4F15041C3F528DCBCA9544166666666F3F150413D0AD7F3BDA9544166666626F2F1504185EB5158BEA95441666666E6F0F150413D0AD783BFA95441AE47E12AEEF1504185EB51D8C0A95441CDCCCC3CEBF15041E17A141EC1A9544166666626E8F1504185EB51B8C2A95441CDCCCC1CE3F150413D0AD7A3C2A954410AD7A3A0E1F150413D0AD743C3A954418FC2F5E8DFF15041C3F5289CC5A954418FC2F5A8DEF1504185EB51D8C5A95441295C8FD2DCF1504185EB51E8C4A954418FC2F5D8DBF15041E17A14EEC3A95441295C8FB2D9F150411F85EB41C5A9544148E17AA4D8F15041E17A140EC7A9544166666656D6F150413D0AD7E3C8A9544148E17AE4D4F1504100000070C9A9544148E17AD4D0F150411F85EBA1C9A954418FC2F5F8CFF150415C8FC2F5CAA95441295C8F02D0F1504185EB5178CBA95441EC51B82ED1F150411F85EB81CBA95441AE47E1AAD2F150413D0AD7C3CAA954418FC2F508D4F15041C3F5288CCBA9544148E17AD4D5F1504185EB51C8CBA95441AE47E17AD5F1504185EB5108CDA95441666666D6D3F1504100000080CDA95441295C8F22D3F1504185EB5108CDA95441AE47E15AD2F15041000000D0CDA954410AD7A3C0D0F15041A4703D2ACEA95441295C8FD2CDF1504100000030CDA954418FC2F578C8F15041A4703D2ACEA95441CDCCCCACC6F1504100000000D0A954410AD7A380C5F150411F85EB81D0A95441295C8F72C4F15041A4703D9AD1A95441666666A6C7F15041000000E0D1A95441AE47E12AC6F15041C3F5284CD4A9544148E17AF4C4F150415C8FC2F5D4A954418FC2F598C1F150415C8FC2F5D4A95441EC51B84EC0F150411F85EBD1D5A954410AD7A390BFF15041A4703DEAD6A95441AE47E11ABDF150413D0AD7E3D7A95441EC51B89EBBF150415C8FC2C5D7A95441295C8F62BBF15041C3F5281CD7A95441EC51B85EBAF150415C8FC285D6A95441295C8F22BAF15041A4703DFAD5A95441666666A6B8F150415C8FC235D6A95441666666A6B8F150411F85EBC1D6A95441AE47E10AB9F150411F85EB61D7A95441666666A6B8F15041C3F5285CD8A95441EC51B88EB7F15041A4703D2AD8A954410AD7A3D0B6F15041E17A148ED8A954410AD7A320B7F150415C8FC2A5D9A95441EC51B89EB6F15041A4703DFADAA95441AE47E14AB5F150411F85EBC1DBA9544166666636B5F150411F85EB61DCA954418FC2F588B3F1504100000010DEA95441EC51B83EB2F1504100000010DEA9544148E17AE4B1F15041E17A143EDDA95441AE47E12AB2F150411F85EBC1DBA95441CDCCCC1CB1F150413D0AD753DBA9544166666636B0F15041A4703D4ADBA9544148E17AB4AFF1504185EB51C8DAA95441CDCCCCCCB0F15041E17A14DED8A95441EC51B89EB1F150413D0AD703D6A95441AE47E13AB1F15041C3F528ECD4A9544117000000CDCCCCFC16F250411F85EB01BAA954418FC2F5F815F25041E17A14AEB8A95441AE47E14A14F25041E17A141EB7A954410AD7A3F013F25041C3F528ACB5A954410AD7A3E014F25041000000D0B4A95441295C8F3218F25041C3F5286CB4A95441CDCCCC7C19F25041A4703DEAB3A95441AE47E12A1BF25041E17A143EB5A95441AE47E14A1EF250411F85EB31B2A9544148E17A1422F25041A4703D6AB1A95441AE47E1FA22F25041C3F5289CB1A95441295C8F7223F25041A4703D5AB2A95441AE47E1FA27F25041A4703DCAB0A954410AD7A34028F250411F85EBD1B2A954410AD7A3A027F250411F85EB21B3A9544148E17AC426F25041000000A0B2A95441295C8F5225F2504100000040B3A95441EC51B8AE23F250411F85EB71B3A95441666666D61EF25041C3F528FCB5A95441295C8F221EF25041E17A14CEB6A95441295C8F921CF25041E17A14CEB6A95441666666D619F25041A4703DEAB8A95441CDCCCCFC16F250411F85EB01BAA954410B000000CDCCCCFC20F2504185EB5128BCA95441EC51B84E1FF25041E17A144EBEA95441AE47E16A1CF25041E17A143EBFA95441CDCCCCBC1AF2504185EB5168BDA95441B81E85EB19F25041CDCCCC5CBDA954416666663619F250415C8FC2F5BBA95441AE47E18A1AF2504185EB5188BBA95441295C8F921CF2504185EB5198BAA954418FC2F5581FF250413D0AD7C3BBA95441AE47E12A20F250413D0AD763BCA95441CDCCCCFC20F2504185EB5128BCA9544196000000295C8F62CAF15041A4703DBAD9A95441295C8F72C9F150413D0AD703DBA9544148E17A14C8F15041C3F528CCDBA954410AD7A370C6F150415C8FC265DDA954418FC2F568C4F15041000000B0DEA95441AE47E1AAC3F150413D0AD763DFA95441666666B6C1F15041A4703D9AE0A954418FC2F568BFF15041C3F5281CE1A954418FC2F598BCF1504100000080E1A95441295C8F62BBF150417B14AEE7E2A95441666666B6B7F150415C8FC2A5E3A954418FC2F5A8B6F150413D0AD703E5A95441EC51B85EB5F15041A4703D4AE5A95441CDCCCC9CB3F150413D0AD7C3E8A95441CDCCCC8CAFF15041E17A144EEBA95441AE47E1BAAEF150415C8FC2B5ECA9544148E17AD4ADF150415C8FC225F0A954410AD7A320ADF1504100000030F0A954410AD7A3E0ABF15041E17A14AEEFA954410AD7A390ABF15041C3F528ACECA9544148E17A04ABF150413D0AD733ECA954410AD7A3F0AAF150411F85EB61EBA9544148E17A44ACF150413D0AD793EBA95441EC51B89EACF150413D0AD7B3E9A954410AD7A3F0AFF1504100000040E5A95441AE47E10AAFF150413D0AD713E4A9544148E17A54B0F150417B14AE27E4A9544166666636B0F15041A4703DAAE4A95441F6285C1FB1F15041AE47E12AE5A954418FC2F538B3F150413D0AD7D3E2A95441EC51B8BEB4F15041E17A143EE2A9544166666676B6F150415C8FC225E1A95441EC51B8CEB8F150415C8FC245DFA9544148E17A54BAF15041E17A147EDEA95441295C8F62BBF150413D0AD783DDA95441CDCCCC8CBEF15041A4703D3ADCA95441666666B6C1F150413D0AD7E3DCA95441666666F6C2F15041C3F5283CDAA954410AD7A3A0C3F1504100000060D9A95441EC51B8BEC3F150415C8FC2B5D8A954410AD7A3E0C4F150413D0AD733D8A9544148E17AD4C6F15041000000D0D7A95441EC51B8EEC5F15041C3F5287CD6A95441CDCCCCACC6F15041A4703D5AD5A954418FC2F5D8C7F150411F85EB31D5A95441AE47E1AAC8F15041E17A146ED5A9544166666686C9F15041E17A14DED3A95441295C8FC2C9F150411F85EBB1D2A954410AD7A380CAF15041A4703D9AD1A95441295C8FA2CBF150411F85EB21D1A95441AE47E19ACEF150415C8FC295D0A95441EC51B8EECFF150415C8FC2F5CFA954418FC2F5E8D0F150413D0AD713D0A95441EC51B88ED0F150415C8FC2E5D0A9544148E17A44CFF15041E17A14AED1A954410AD7A3F0CDF1504100000030D2A95441EC51B82ECCF150411F85EB61D2A954418FC2F558CAF1504100000020D3A954410AD7A370CBF15041E17A14DED3A9544166666606CCF15041E17A14DED3A95441AE47E15ACDF1504100000020D3A954418FC2F548D0F150411F85EB61D2A954418FC2F508D4F15041C3F5288CD0A954418FC2F5C8D7F150411F85EBA1CEA95441295C8F72D8F150415C8FC285CCA95441CDCCCC4CDBF15041C3F528ECCAA9544148E17A64DCF150413D0AD783C9A9544166666626DEF15041A4703D7AC9A95441295C8F52DFF150415C8FC2B5C9A954418FC2F568E2F1504100000040C7A954410AD7A340E2F1504185EB51D8C5A9544148E17A44E3F1504185EB5138C5A95441AE47E17AE4F1504100000050C6A95441AE47E1AAE6F1504185EB5138C5A95441EC51B8FEE7F1504185EB5138C5A9544166666656EAF15041E17A14EEC3A9544148E17AB4F0F150415C8FC2F5C0A9544166666626F2F1504100000010C0A95441AE47E15AF5F15041000000C0BFA954410AD7A320F8F15041A4703D3ABEA95441295C8F22FBF1504100000090BDA95441666666C6FCF15041A4703D9ABDA95441295C8F82FFF15041C3F5283CBCA954416666668600F250413D0AD713BCA954410AD7A36003F2504100000060BBA95441295C8F1206F25041A4703D6ABBA95441713D0A6706F25041713D0AE7BBA954410AD7A37007F25041C3F5284CBBA954418FC2F54807F250415C8FC2B5BAA9544148E17A8407F25041E17A149EB9A95441AE47E16A0DF250411F85EBD1B7A95441AE47E1BA0DF2504100000090B8A95441EC51B89E10F25041E17A149EB9A95441EC51B83E11F25041000000C0BAA95441EC51B81E13F250415C8FC255BBA9544148E17AB413F25041A4703D5ABCA95441AE47E13A15F250415C8FC2E5BCA954416666666616F2504185EB5118BDA95441CDCCCC4C17F25041E17A14FEBDA95441EC51B88E16F2504185EB51D8C0A95441CDCCCC7C14F250413D0AD7B3C1A95441666666A612F25041000000A0C1A95441295C8F0211F25041E17A141EC1A954418FC2F5780EF25041C3F5286CC3A9544148E17A240DF2504100000020C4A954418FC2F5F80BF250413D0AD733C4A954410AD7A35009F25041000000E0C2A95441AE47E1BA08F25041000000A0C1A95441EC51B81E09F25041C3F5284CC0A95441AE47E11A08F2504185EB51B8BDA95441CDCCCC6C06F25041000000E0BDA95441295C8F2205F25041A4703D8ABEA95441666666A603F2504100000080BEA9544148E17A3402F25041E17A14DEBFA954418FC2F55801F250413D0AD763C1A95441AE47E19A00F25041C3F5287CC2A954410AD7A3E000F250413D0AD793C3A95441CDCCCCDCFFF150411F85EB51C4A95441EC51B8BEFFF15041A4703DBAC5A95441AE47E19A00F25041E17A14CEC5A95441AE47E1EA00F25041E17A140EC7A95441CDCCCC5CFDF150413D0AD743C8A9544148E17A04FBF15041A4703D9AC7A95441EC51B8BEFAF15041A4703D4AC7A95441CDCCCC6CF7F15041C3F528BCC8A9544148E17A04F6F1504185EB5138CAA954410AD7A3F0F5F1504100000050CBA954418FC2F5C8F5F15041A4703D4ACCA954418FC2F588F4F15041A4703DEACCA954418FC2F548F3F15041A4703DEACCA95441295C8F62F2F150415C8FC235CCA95441EC51B85EF1F15041A4703DAACBA954410AD7A300F0F1504185EB5118CCA954418FC2F548EEF150411F85EBD1CBA95441EC51B89EEDF15041C3F5281CCDA95441EC51B8CEEAF1504100000020CEA95441EC51B88EE9F15041A4703DDACDA95441CDCCCC3CE6F150411F85EBF1CEA95441666666B6E4F1504100000010CFA954410AD7A320E4F150415C8FC2B5CEA95441EC51B8AEE2F15041C3F5285CCEA954418FC2F598DFF150411F85EB41CFA9544148E17A54DDF15041A4703D5AD0A95441AE47E12ADAF15041C3F528ACD3A95441CDCCCCCCD8F150415C8FC255D4A95441EC51B8CED6F150411F85EBF1D3A9544148E17A84D5F150411F85EB31D5A95441EC51B84ED4F1504185EB5128D5A95441AE47E1BAD1F15041E17A146ED5A95441295C8F62CAF15041A4703DBAD9A95441
+</a>
+
+<b>
+010600000001000000010300000002000000A6020000781F360BE3F150415BD3B0AEE0A9544138DE382EE4F15041CA43D648E0A95441AE47E1FAE6F15041C3F528ECDEA95441B5BCDF15E7F15041478310E2DEA954414BD8E964E8F15041C4F77656DEA9544105E7C298E9F1504135CCB7EADDA95441122BC842EAF1504134600BB2DDA95441CC14C3A1EAF150419CD2858EDDA9544195D04C0AEBF15041682E6D67DDA95441ABA847D2EBF1504117753913DDA95441EE17FD8AECF1504160A5A7D5DCA95441F4E2DF71EDF15041BAED4C79DCA95441B9F1B8A5EEF1504150DAC4EEDBA954410FB8EC35F0F1504100DF7345DBA954415227A2EEF0F1504171B3B4D9DAA95441707E20C6F1F1504196CBEBBADAA954412A8DF9F9F2F15041D5FB597DDAA9544173C79199F4F150412E44FF20DAA9544197E45D69F5F1504160E8D1F2D9A954410CF8E5F3F5F150419F1840B5D9A95441F8AA91F9F6F150419F1840B5D9A95441F1E9D8EFF7F15041C4307796D9A954418DA1334CF8F150410361E558D9A95441EA2820E6F8F150413505B82AD9A954417954DF51F9F15041743526EDD8A95441DDE4F845FBF150416EA5FEDDD8A95441E6029ADFFBF150417E768D87D8A9544175FA5AF1FBF150415229907DD8A954417A11B534FCF15041243AD543D8A954410FD4308BFCF15041A04E0127D8A95441EAEB2394FCF15041742FF821D8A95441BF0C06DEFCF15041950E16D8D7A954410F085787FDF15041BA264DB9D7A9544120D3396EFEF15041F956BB7BD7A954417D5A2608FFF150415013C52ED7A95441E76DAE92FFF150418F4333F1D6A95441851D96E400F250414F55C65ED6A95441295C8FB201F25041A4703DFAD5A95441C1808A4302F2504173404BF5D5A95441916E7AC202F25041A39087EBD5A9544169FA431203F250413273BBDAD5A95441C847951405F25041D8218606D5A95441108C2C2A05F250419F5140F5D4A9544118C07F4A05F25041ED3547F0D4A9544148E17A5405F25041C3F528ECD4A954412E61446505F25041C3F528ECD4A954413B6F46F205F25041C46977D6D4A954417DDEFBAA06F25041B7DDDBE5D4A954419F46C5D406F250417B6280DDD4A95441666666860AF2504185EB5148D3A95441AFA303130BF250415617A855D3A95441453BDBA00BF250415617A855D3A95441D4669A0C0CF25041BA5F4DF9D2A9544131EE86A60CF2504113A8F29CD2A954412A2DCE9C0DF25041B6200603D2A954414417E2AB0DF250418B4BB7FED1A95441AE47E1BA0DF250413D0AD7F3D1A9544109B4F8F10DF25041A0D5B0EAD1A95441B9588D080EF25041DB383DE4D1A9544116E079A20EF25041F55074C5D1A954418BF3012D0FF250410DDD0FB6D1A95441F5068AB70FF2504127F54697D1A9544106D26C9E10F250418B3DEC3AD1A95441B87179D610F2504179CA8024D1A95441B36316E90FF250417C2B0200D0A9544155BE72210FF250415DC26724CFA9544117C974E20EF2504168DC1A26CFA954413BF8B0830EF25041B3D7942FCFA95441DE70C4E90DF25041B3D7942FCFA954412676A38C0DF25041EED59F4ECFA95441CBBE73260DF250411FD28A96CFA95441DA317DF30CF25041105F81C9CFA95441E1F235FD0BF2504192FEA444D0A95441453BDBA00BF250416DE66D63D0A954416614CB8B0AF250413B429B91D0A95441DA7E11800AF25041713D008FD0A954418FC2F5680AF250415C8FC295D0A95441EC51B82E08F250411F85EB31D0A95441FF86CB3308F25041303B2400D0A95441E7F6182408F2504103D3E5D8CFA95441E7F6182408F250418EBF5D4ECFA95441DA6A7D3308F2504117203AD3CEA95441C052465208F25041AF984D39CEA95441A8C6AA6108F2504113E1F2DCCDA95441D27AABAC08F250410DCF72D5CDA9544128BB49FA08F25041FA3078C4CDA954410F6C8B8709F2504148D291A5CDA9544123A515D309F250416A9DFC8FCDA954414396CB6A0AF250415FA26A5DCDA954413A3238E90BF250415432E1B5CCA95441701EF5680CF250418B76EC7ACCA954415CD1A06E0DF2504109D7C8FFCBA95441EBFC5FDA0DF25041480737C2CBA95441FCC742C10EF250419FC34075CBA954410D9325A80FF2504110988109CBA9544106D26C9E10F250418EF85D8ECAA95441D42D9ACC10F2504124E5D503CAA95441580DCCE910F25041BE8D57DFC9A954418FC2F54811F250413D0AD7E3C8A954412F7A3C6E12F250415DBCA7AAC8A954410250FB8A12F25041927ACFA1C8A954419F0756E712F25041B6920683C8A954413BBFB04313F25041B6920683C8A954419B85E4D314F2504145BEC5EEC8A95441622059F815F25041131AF31CC9A954412B34767D16F2504132781C58C9A954419FADEEB116F25041950ED305C9A954418077D7CF16F2504160D6FCCFC8A95441533C0ADC16F250418D11CAC3C8A954410AD7A36017F250413D0AD7F3C7A95441BC573B6019F25041E6A4DF30C7A95441AF9ECD7C19F2504124280021C7A95441565628D919F2504156CCD2F2C6A95441B3DD14731AF2504149403702C7A95441434ACBDD1AF250415F520014C7A95441757287331BF25041A0024319C7A95441DEC02E3B1BF250413CB49B11C7A954413B481BD51BF2504124280021C7A95441C2C72BFD1BF25041ABA71049C7A9544133C6AE0B1CF25041BA1E7352C7A9544122A2B58F1CF250418DA5D4A7C7A954412786839A1CF250410B55D1AEC7A954411A6F2BEA1CF250416797B5D9C7A95441EDEE5B311DF25041D9EC3FAAC7A95441CD3536501DF250417BA9C388C7A954419B0E4F651DF25041E5F7915EC7A95441455245B21DF2504149403702C7A954412C14E3BF1DF25041BF358F0FC7A95441666666E61DF250415C8FC2E5C6A954418FC2F5581FF25041C3F5287CC7A95441CDCCCC9C21F250415C8FC235C7A954418FC2F59825F2504185EB51D8C5A95441295C8F8227F25041E17A14BEC6A95441295C8F8227F25041E17A140EC7A95441AE47E12A2AF2504185EB5118C7A95441295C8F522AF25041E17A14CEC5A95441AE47E11A2BF2504185EB5138C5A95441EC51B80E2DF25041E17A142EC5A954418FC2F5582EF25041C3F528ACC4A95441295C8FE230F25041E17A144EC3A95441B85B848331F25041CAE196CBC3A954412EA9FF8A31F2504167A85F92C3A95441EFC983492FF25041D3D02F5CBEA954411E9C12472FF25041806E1151BEA95441C3F5283C2FF25041713D0A57BEA9544148E17A042DF2504100000090BDA95441CDCCCC2C2DF25041000000A0BCA95441EC51B8CE2BF250415C8FC265BAA95441EC51B88E2AF2504100000020BAA954410AD7A3F027F25041000000C0BAA9544148E17AD425F2504185EB51C8BCA954418FC2F55824F25041A4703D5ABCA95441EC51B8AE23F2504185EB5138BBA95441EC51B84E24F2504100000020BAA95441CDCCCCFC25F25041000000D0B9A9544148E17AC426F250411F85EBD1B7A9544148E17A0428F2504100000050B7A954410AD7A34028F250411F85EBC1B3A95441295C8F7228F250411F85EBC1B3A95441EC51B8DE2AF25041A4703DBAB6A9544148E17AC42BF25041000000A0B7A95441EC51B86E2CF250413D0AD7C3B6A954418FC2F5782CF2504100000020B5A95441CDCCCC2C2DF25041E17A149EB4A9544148E17AA42DF25041E17A145EB3A954410AD7A3902DF250411F85EB41B1A95441EC51B8FE2DF250415C8FC2B5B0A954418FC2F5082EF2504185EB5138AFA95441E5E3E4762AF25041A01E53E4AFA95441AE47E1FA27F25041A4703DCAB0A954410AD7A34028F250411F85EBD1B2A954410AD7A3A027F250411F85EB21B3A9544148E17AC426F25041000000A0B2A95441295C8F5225F2504100000040B3A95441EC51B8AE23F250411F85EB71B3A95441666666D61EF25041C3F528FCB5A95441295C8F221EF25041E17A14CEB6A95441295C8F921CF25041E17A14CEB6A95441666666D619F25041A4703DEAB8A95441E484527E18F250417DED226EB9A954410656424118F250412A9EE3C7B9A9544159D304FE16F25041D1553E24BAA95441BD1BAAA116F250412A9EE3C7B9A9544109D8B35416F25041B3FEBF4CB9A954413B7C862616F25041FFBAC9FFB8A954417AACF4E815F2504163036FA3B8A95441DEF4998C15F25041A233DD65B8A954412AB1A33F15F25041EEEFE618B8A954419B85E4D314F2504152388CBCB7A954413EFEF73914F25041023D3B13B7A9544156CDBD4711F25041EEEFE618B8A95441CA2370EF0EF250410C4765F0B8A954418BF3012D0FF25041FFBAC9FFB8A954416A1A124210F25041815AED7AB9A95441DC1EEF4B10F25041B9DCDB7FB9A95441EC51B89E10F25041E17A149EB9A95441EC51B83E11F25041000000C0BAA95441516AC5BB11F25041F21504E7BAA95441A5C80EF111F25041FC3858ECBAA954412768326C12F25041D720210BBBA95441917BBAF612F25041A57C4E39BBA95441DD0EF30D13F25041F10F8750BBA95441EC51B81E13F250415C8FC255BBA95441BC95532E13F25041D096E770BBA95441068F428113F250411A90D6C3BBA95441D4EA6FAF13F25041B6473120BCA95441FFCD897714F2504138E7549BBCA9544118E5778614F250419EF648A5BCA95441AE47E13A15F250415C8FC2E5BCA95441371B13A515F25041D49EAFF7BCA954415594BD0716F25041D49EAFF7BCA95441FC4B186416F25041C7121407BDA95441980373C016F2504170560A54BDA9544134BBCD1C17F25041249A00A1BDA95441F58A5F5A17F25041F2F52DCFBDA954414C47690D17F2504192ECCF21BFA95441BD1BAAA116F25041CE9ACCD0C0A954414808221716F2504177DEC21DC1A9544169E1110215F25041F97DE698C1A9544131725C4914F25041C7D913C7C1A954412E2E806412F25041ECF14AA8C1A95441B34F15F310F250415DC68B3CC1A9544186D433AF10F2504124C3CC69C1A954418FC2F5780EF25041C3F5286CC3A9544136DF669A0DF25041C0D6B6E1C3A95441B953F8190DF250413BF7C52EC4A95441A76573450CF250413BF7C52EC4A954418FC2F5F80BF250413D0AD733C4A95441362BD1EE0BF250413BF7C52EC4A9544131E9F1B70BF250413BF7C52EC4A95441B2CB3F5009F2504181E8ECFAC2A95441554453B608F25041ECF14AA8C1A95441F1FBAD1209F250416613E036C0A95441902082FE08F250413F815CFABFA9544162C2AD8708F25041C0C09ACCBEA954413007192508F25041B65F44D2BDA95441F8BC661C08F25041FF81C9BFBDA954413CFA254D07F250410C1B4DCBBDA954410DF19EF306F25041D9A88FD3BDA954410BBC0E3106F250416826CCFEBDA95441295C8F2205F25041A4703D8ABEA95441EB915D6204F25041A7231085BEA95441BAC5F89903F250411DD94797BEA954413826D51E03F25041AC040703BFA95441B63FA20E03F250419F62A00FBFA954411D586ED602F25041CB9ED044BFA9544113EC876902F2504134D5DFABBFA9544134E78D2802F2504198B7B208C0A95441BD476AAD01F25041B60E31E0C0A95441023E266801F2504138AE545BC1A954416686CB0B01F25041A2C1DCE5C1A9544128479FE900F25041E0000908C2A95441AE47E19A00F25041C3F5287CC2A95441F790F4B400F25041A358B3E4C2A95441731267FC00F25041F6FB7485C3A95441E4E6A79000F2504192B3CFE1C3A95441875FBBF6FFF1504121DF8E4DC4A9544194EB56E7FFF15041CA22859AC4A95441EC9F6AC9FFF15041A90B1C3AC5A95441007CD1C1FFF15041EB572095C5A95441AC77F2D7FFF15041C1D530A0C5A95441CACE70AF00F25041A94995AFC5A95441809E02ED00F2504149403702C7A95441C80490E800F250414A6FCF04C7A95441AE47E1EA00F25041E17A140EC7A95441E4042ABF00F25041E599F51CC7A95441482F4D3400F25041D86BF66DC7A954417694D80FFFF150416797B5D9C7A95441BC85FFDBFDF15041034F1036C8A954415FFE1242FDF15041E836D954C8A95441F5EA8AB7FCF1504128674717C8A95441CD930CE0FBF15041590B1AE9C7A95441AF3C8E08FBF15041993B88ABC7A954412A11CF9CFAF15041E5F7915EC7A954412064A882FAF1504193AC6164C7A954412DCDC429F8F1504115BEE969C8A954418E9C9E5DF7F1504160D6FCCFC8A95441C510BE40F7F15041E0B9A4EAC8A9544148E17A04F6F1504185EB5138CAA9544184AAD401F6F15041778CAA5DCAA95441EEA5FC0AF6F15041816CC29DCAA95441063298FBF5F15041DEF3AE37CBA95441204ACFDCF5F150413B7B9BD1CBA954414BA047DBF5F15041AC06B5D6CBA954418FC2F5C8F5F15041A4703D4ACCA95441E883BCB5F5F15041F80FDA53CCA9544152EEA1AEF5F150419802886BCCA95441C3C2E242F5F15041665EB599CCA95441663BF6A8F4F150410D1610F6CCA95441E49BD22DF4F15041F5897405CDA954418714E693F3F150410D1610F6CCA95441FFAE7420F3F150411AA2ABE6CCA95441FF2B22D2F2F150413CC3288DCCA95441295C8F62F2F150415C8FC235CCA954419AB8FDEAF1F15041B2D78EF5CBA95441522C37DDF1F15041166364F0CBA95441DA8C1362F1F150416093D2B2CBA9544159EDEFE6F0F150413B7B9BD1CBA954412E0AD61EF0F15041EFBE911ECCA9544110B35747EFF15041FC4A2D0FCCA954412400AC41EEF150412EEFFFE0CBA95441D032EE39EEF15041F43513EFCBA95441EC51B89EEDF15041C3F5281CCDA954413D23E510EDF1504197D1574FCDA95441D0C513A2ECF150416A9DFC8FCDA9544198565EE9EBF15041206D8ECDCDA95441ABCA217CEBF15041ACE36AE1CDA95441EC51B8CEEAF1504100000020CEA95441EC51B88EE9F15041A4703DDACDA954410917E53CE9F150417D772AF5CDA9544120FA648BE8F15041A20CB248CEA954413447B985E7F1504124ACD5C3CEA9544109649FBDE6F15041E57B6701CFA954414455C689E5F15041C0633020CFA954411972ACC1E4F15041C0633020CFA95441AF5E2437E4F1504117203AD3CEA954415F63D38DE3F150415650A895CEA95441DDC3AF12E3F150417068DF76CEA95441BF6C313BE2F1504163DC4386CEA954410C24A6FFE0F15041FF939EE2CEA9544113E55E09E0F15041B3D7942FCFA954419ED1D67EDFF150418133C25DCFA95441021A7C22DFF15041105F81C9CFA95441B21E2B79DEF15041B9A27716D0A95441480BA3EEDDF1504192FEA444D0A95441C66B7F73DDF150416DE66D63D0A954413740C007DDF15041099EC8BFD0A95441E97F8E72DCF1504193356A47D1A95441AE47E12ADAF15041C3F528ACD3A954413CC824CFD9F15041B1469AD8D3A95441CC6F629AD9F15041A612F9FED3A95441A18C48D2D8F15041353EB86AD4A9544105D5ED75D8F1504142CA535BD4A95441E77D6F9ED7F1504181FAC11DD4A95441A40EBAE5D6F15041A612F9FED3A95441E8EF5262D6F15041F874F45AD4A95441AD9B6E88D5F15041CF29172ED5A954411CA4B383D5F150416021D232D5A9544155F6D36CD5F150411BDE2F31D5A95441005BCD84D4F150416E00FF29D5A95441BCDD7FF3D3F1504153953642D5A95441B5129D0CD3F150411465C87FD5A95441F103C4D8D1F150411465C87FD5A954415C0D2286D0F1504159601929D6A95441C3705154D0F150414824DF3FD6A9544194C13B9FCDF150410DD063D5D7A95441298D993ACCF1504119A70DA6D8A9544130689DECCBF1504181C1C1DDD8A954411B31F529CBF15041F4EF9245D9A954418704F070CAF15041C1EAD3B1D9A9544105BA193ACAF1504154ECCDF1D9A9544100E49726CAF15041E71F980CDAA954419E98DA15CAF1504129439523DAA954419732B4A3C9F150413F0FE207DBA954410807F537C9F150410D6B0F36DBA954411C544932C8F15041827E97C0DBA95441DAE49379C7F15041AD61B188DCA95441584570FEC6F150412E01D503DDA9544120D6BA45C6F1504199145D8EDDA95441831E60E9C5F1504167708ABCDDA954414E3B4621C5F15041C4F77656DEA9544123582C59C4F15041532336C2DEA954410501AE81C3F150418806508ADFA95441A879C1E7C2F1504100A67305E0A9544197AEDE00C2F1504174B9FB8FE0A954415F3F2948C1F150411DFDF1DCE0A95441D0136ADCC0F15041107156ECE0A954419A305014C0F15041EB581F0BE1A954413DA9637ABFF15041D140E829E1A95441A54CE399BEF150416FBEDF38E1A954411A680563BEF15041E6707B40E1A9544112C1B4C3BDF150419F9C1558E1A95441901626B2BDF15041552C0259E1A954418FC2F598BCF1504100000080E1A95441295C8F62BBF150417B14AEE7E2A95441C32DA757BBF150413E99E2E9E2A95441A12F9E4CBBF15041E8D6ADF7E2A9544144A8B1B2BAF15041CEBE7616E3A95441C2088E37BAF15041A9A63F35E3A954418A99D87EB9F15041848E0854E3A95441993AE2CCB8F150413EE5746DE3A95441AF26D3BDB7F15041EF4442A4E3A95441636F883EB7F15041A8728041E4A954418FC2F5A8B6F150413D0AD703E5A954415C09B71EB6F15041F6924F21E5A95441E759C558B5F150414F68C46EE5A954419E1F2DB9B3F15041ECDCF4ADE8A954410D25DE9FB3F150418439C6BDE8A95441CDCCCC9CB3F150413D0AD7C3E8A9544108D891CBAFF150418D9ED526EBA95441E3537EA2AFF150412E56D443EBA9544161B45A27AFF150414CAD521BECA95441510550B7AEF15041F2B362C3ECA95441C07392A4AEF15041EFBFF60AEDA9544138E3479EAEF150412E36FE22EDA954411CB9097EAEF150417BCFB3D9EDA95441435DDC4FAEF15041E5E23B64EEA9544168751331AEF15041B77DB088EFA954419A19E602AEF15041EFEC6541F0A9544130573EA0ADF1504159FCBB28F0A9544192EB916CADF150419534AD2BF0A954417CC2672BADF15041EFEC6541F0A9544112AFDFA0ACF1504121913813F0A95441CF3F2AE8ABF15041784D42C6EFA95441762091E3ABF15041C1B044AFEFA954410AD7A3E0ABF15041E17A14AEEFA954411B6ABBDDABF15041F9201892EFA95441DCCBC5D8ABF15041C4094C79EFA95441F45761C9ABF15041740EFBCFEEA95441F45761C9ABF1504107683ACEEEA954410AD7A390ABF15041C3F528ACECA9544125296E2FABF150413FE9B558ECA9544148E17A04ABF150413D0AD733ECA954410AD7A3F0AAF150411F85EB61EBA95441B1E8AB10ABF15041C70CA066EBA95441B1E8AB10ABF15041143E9D62EBA954411BFC339BABF15041143E9D62EBA9544183832035ACF15041EF256681EBA954416531374CACF150412E56D443EBA954416531374CACF150419F2A15D8EAA95441F11385E4A9F15041F61F1FCBE5A95441E39113D1ABF1504148E00BA5E1A954411F401080ADF1504156627DB8DFA954417C84D2FCB0F1504106672C0FDFA954413354643AB1F15041DBC63C64DBA95441F04868D2B0F15041BF84BD50DBA9544166666636B0F15041A4703D4ADBA954417AABF1BCAFF15041B8B5C8D0DAA954414E9B717EAAF150412BC28D0DDCA954418D09756FA6F15041314A46D7DFA954418AE00589A4F150417FC4EF48E3A9544148E17AC4A4F1504100000060E3A95441B5F7EAC4A4F1504161FDEF7DE3A95441374341DFA4F1504113BAC7BFE3A95441122B0AFEA4F1504163B51869E4A95441374341DFA4F15041E5543CE4E4A95441374341DFA4F15041F61F1FCBE5A95441BACA6FCEA4F15041B2D9C908E6A95441EC51B8CEA4F15041C3F5281CE6A95441BEF60AC5A4F150419A8D3B2BE6A954415EE713B1A4F150413B1B7074E6A95441C22FB954A4F15041CA462FE0E6A9544119ECC207A4F150411A428089E7A954418AC0039CA3F15041CE8576D6E7A95441B164D66DA3F150416A3DD132E8A9544147514EE3A2F150411E81C77FE8A95441B49A2F30A2F15041461644E8E8A95441E4145A2AA2F1504172C3CBECE8A954419308C3A7A1F15041E299CA90EBA95441867C27B7A1F1504132951B3AECA9544166B96DD6A1F150416E16992DECA95441AE47E1EAA1F1504100000020ECA954414F0E5DEEA1F15041A8270624ECA954412FC01D04A2F150414CAD521BECA954414D179CDBA2F150414360FE20EDA954411B73C909A3F150412BD46230EDA9544139E37B44A3F15041615DED51EDA95441CDCCCC3CA5F150413D0AD773EDA954410AA65C79A5F1504106789E90EDA9544143D471BEA5F15041BAFF219CEDA95441D2FF302AA6F150417BCFB3D9EDA95441549F54A5A6F15041492BE107EEA95441F056AF01A7F150412F13AA26EEA9544108E34AF2A6F15041F6AD1E4BEFA954414713B9B4A6F15041FAEC6541F0A95441D5B73292A5F1504159AF8F7EF0A9544112BA4690A5F150410CD0127FF0A95441EFDF6C9EA5F150414896DC28F1A95441C29DFC9FA5F15041545ED237F1A95441D2FF302AA6F15041B4FB3E75F1A95441612BF095A6F1504175CBD0B2F1A95441156FE6E2A6F150412B9B62F0F1A95441EFAC913DA7F150414E028087F2A95441626FF640A7F150415DA8728BF2A954414DDE9B9BA7F1504149F2E0C7F2A954410EAE2DD9A7F15041D81DA033F3A95441C2F12326A8F150417ED5FA8FF3A95441E048A2FDA8F1504185A0DD76F4A954417C00FD59A9F1504138E4D3C3F4A95441FE9F20D5A9F15041EC27CA10F5A95441046B03BCAAF1504149AFB6AAF5A95441AB225E18ABF15041F2F2ACF7F5A954411536E6A2ABF15041B3C23E35F6A9544191B30C18ACF15041B264D85FF6A95441D29BDC3BACF1504154FDCE68F6A9544195B67ED4ACF1504103AE028FF6A954417CC2672BADF1504142EEFDA0F6A95441D94954C5ADF1504128D6C6BFF6A954415F5C352AAEF15041DBCF17DAF6A95441295C8F32AFF1504100000010F7A954416205F6D4B0F150415988521CF8A954411F027B51B1F1504171105F5FF8A9544130CD5D38B2F150413F6C8C8DF8A95441A76C81B3B2F15041E8AF82DAF8A95441EADB366CB3F1504177DB4146F9A9544168440E04B4F1504106D91D8DF9A95441AE47E10AB4F1504100000090F9A954413FFF2E3AB5F15041C59584D8F9A95441CFCD2968B5F15041DF622EE0F9A95441911F8099B6F1504147F7832CFAA95441F0DD2F9CB6F15041A566282DFAA95441CC4BB854B7F150417B1A893CFAA95441B8FE635AB8F15041245E7F89FAA954414B696ABCB9F1504167CD3442FBA95441755A4E22BAF150415F6EB12AFBA9544148E17AF4BAF150417B14AEF7FAA95441484224F5BAF150412074DFF7FAA95441F8EBA7FFBAF15041B3893EF5FAA95441154326D7BBF150418CE56B23FBA9544190219148BDF150411B112B8FFBA95441BB04AB10BEF15041C45421DCFBA95441AF957322BEF15041A542E8D9FBA95441393A3627BEF15041DE8710D9FBA954412BF69DCBBEF15041ADF8F5BBFBA95441ED67CAF1BEF150416E0234B5FBA954416887E853BFF1504103858F9EFBA954411497A38EBFF15041629D0A5AFBA95441DF0577B3BFF150413277CD22FBA95441CB423CBDBFF15041A246F3F1FAA95441A531E79FBFF150412BD69061FAA9544129577A91BFF150416E8EED4BFAA95441E573058DBFF150413D5A9F04FAA954414F2F3E6EBFF1504145A51E6DF9A95441D2FAE659BFF150412BD5FE08F9A95441A1F1081EBFF1504171105F5FF8A954414A35FF6ABFF15041A3B43131F8A95441FE78F5B7BFF15041BDCC6812F8A954419A305014C0F15041FCFCD6D4F7A95441ABFB32FBC0F1504121150EB6F7A95441EE6AE8B3C1F1504160457C78F7A95441587E703EC2F15041855DB359F7A95441EF78650EC3F1504198E8B529F7A95441295C8F82C3F150415C8FC205F7A95441ACC18EADC3F150419026FB04F7A95441AE44A4CEC3F15041DEA558FDF6A95441FE3FF577C4F15041DEA558FDF6A95441EAF2A07DC5F15041F631F4EDF6A95441781A558EC5F15041707845FCF6A9544148E17A94C5F15041C3F528FCF6A95441C0E3F358C6F150418ADBBCA1F7A9544126A19D2CC7F150414F7A9991F6A9544180DF18F3C4F150416A88A695F4A9544147B38D57C1F15041F32BAD37F1A95441D9FBB3E4C0F15041F32BAD37F1A95441451548D5C0F15041AF2BF938F1A9544180181933C0F15041CE137656F1A954413DA9637ABFF150413FE8B6EAF0A95441E02177E0BEF15041A3305C8EF0A9544126139EACBDF1504114059D22F0A95441C2CAF808BEF15041C4094C79EFA95441D74ED235BEF150418EA9B201EFA9544120736D56BDF1504165890EB7EEA95441FF7C124DBDF150411053EEB3EEA95441B559C341BDF1504106DF9FBDEEA95441295C8FF2BCF150413D0AD703EFA9544109DC52D3BCF150410384B949EFA954413A60F2A6BCF1504153350BE5EFA95441AB34333BBCF150416400EECBF0A954413621ABB0BBF150411E0FC7FFF1A954414A6EFFAABAF1504104F78F1EF2A954419DEBC167B9F15041D81DA033F3A954410EC002FCB8F150412819F1DCF3A954414CF9FCEFB8F1504164BA56DBF3A95441FE6CF415B8F1504183CF69BFF3A9544109FF2AECB7F150414CB20FBAF3A95441A06D337BB7F150415ABDC3AEF3A954410EEEEB26B7F150416C0421B8F3A954419A83D6E6B6F1504189E433C4F3A9544115CDA24EB6F15041D2E1E0E0F3A9544118032D19B6F150411B8D55ECF3A95441ED1F1351B5F15041E9E8821AF4A95441C23CF988B4F1504167495F9FF3A954414E2971FEB3F15041CB910443F3A954416276C5F8B2F150417B96B399F2A95441030B8990B2F1504192F93554F2A95441DFC6E368B2F15041B48DD13BF2A95441864C7B17B2F150419E218F24F2A954417322B5D5B1F15041F88AF519F2A95441D7BD88A4B1F15041BBD50812F2A95441586C9B1BB1F150411E0FC7FFF1A954414D505616B1F1504101BBF7EFF1A95441295C8FC2B0F150411F85EB51F1A954418C1F16D7B0F150416D4ACB3EF1A95441A428A5CEB0F1504100B84828F1A9544165F8360CB1F150413FE8B6EAF0A95441F423F677B1F1504196A4C09DF0A9544190DB50D4B1F1504114059D22F0A954411F071040B2F1504114059D22F0A95441F7623D6EB2F15041391DD403F0A95441A1A633BBB2F1504114059D22F0A95441A4E57AB1B3F15041E260CA50F0A95441C23CF988B4F1504196A4C09DF0A9544183C5A189B5F1504101689001F1A95441F5078237B6F15041F9856AEEF0A954418D16B5A3B6F15041577452DBF0A95441D82D337DB7F150413717D392F0A954418A03269FB7F1504166F8CE81F0A95441463958B6B8F15041CAD7DDF5EFA954419DEBC167B9F15041B77DB088EFA95441E28DC0DCB9F15041952C314EEFA95441FDD76DE4B9F150418F8DAC49EFA95441F787DBE9B9F1504110B07A46EFA9544162FA9A9BBAF15041740EFBCFEEA954411C0974CFBBF15041CBCA0483EEA9544101F6D1DCBCF15041E5E23B64EEA954416C095A67BDF150412F13AA26EEA954412DD9EBA4BDF150417BCFB3D9EDA95441AE780F20BEF15041AD7386ABEDA95441B621C88ABEF15041AA90F387EDA954415FA5C3D0BEF1504131F0616CEDA954418D9F1F35BFF150411E48C73FEDA954411CCBDEA0BFF1504111BC2B4FEDA95441BF3357E6BFF150418AFE0463EDA9544166666676C0F150413D0AD773EDA95441295C8FF2C1F15041E17A148EECA95441AB022111C2F15041807BF685ECA954416BD05927C2F15041F364AD77ECA95441D35746C1C2F1504132951B3AECA95441DEF4C738C3F150414DFA4A0DECA95441BB18642EC3F15041417CE2EFEBA954416F0FA11DC3F15041A3695CCEEBA9544115661118C3F15041178DB3B0EBA954418FC2F5D8C2F15041E17A14FEEAA95441D91CFBFBC2F150412BB3E88CEAA954418927D8FEC2F150410373BA7BEAA954416F0FA11DC3F15041995F32F1E9A954413D6BCE4BC3F150413CD84557E9A954419AF2BAE5C3F150419520EBFAE8A9544158CEEA35C4F15041EB2BDCE1E8A954410AD7A390C4F15041000000B0E8A9544100B83ECCC4F15041EBF2E1B2E8A95441933102DCC4F15041ECDCF4ADE8A95441269C083EC6F15041F968909EE8A954416AE727CFC6F1504164D2E849E8A954418FC2F588C7F15041000000C0E7A9544183308A8EC7F15041F0506BC4E7A95441AE060FA0C7F15041E89DADB7E7A954414FD2FB8FC8F150415D039E7AE8A9544166A9169CC8F1504194F2CB78E8A95441D7411CACC8F1504150116376E8A95441B7BFD8AEC8F15041B3B6F975E8A954415B894CE3C8F150413899FE60E8A9544164F3583AC9F150413899FE60E8A95441A1A9CF8AC9F15041608DE454E8A954412D24C107CAF150416A3DD132E8A954417D1F12B1CAF150411E81C77FE8A9544111294A75CBF150419186E7EFE8A954415228DD18CDF150419C09958BE8A95441CC248D37CDF150411E81C77FE8A95441413815C2CDF1504150259A51E8A95441C3D7383DCEF1504177C96C23E8A95441AF8AE442CFF150419CE1A304E8A95441447CF1A6CFF150411A428089E7A95441E0334C03D0F150417E8A252DE7A954417CEBA65FD0F15041EF5E66C1E6A95441302F9DACD0F15041461B7074E6A954416090DB88D1F15041CA65F75BE6A9544148E17AC4D1F15041E17A144EE6A9544189F819CDD3F15041DB5CFC88E5A954414443F166D4F15041810C9740E5A95441BF215CD8D5F1504117F90EB6E4A954410F1DAD81D6F1504156297D78E4A95441FBCF5887D7F15041D48959FDE3A954410C9B3B6ED8F150416A76D172E3A95441833A5FE9D8F150416A76D172E3A95441E6AD289BD9F150414758EA98E3A954414D865AF7D9F1504138D2FEA0E3A95441B25CC0A7DAF1504138D2FEA0E3A954410FE4AC41DBF1504177026D63E3A954418AC217B3DCF150419C1AA444E3A95441A819968ADDF15041B632DB25E3A954419ADCDEF0DDF15041512805FAE2A9544174CE7536DEF15041C15768D2E2A95441301EA967DEF1504136B466B6E2A95441B8012B3ADFF15041CDEB923EE2A95441C2EEA24EE0F150416DF84286E1A95441D3B98535E1F15041D140E829E1A95441781F360BE3F150415BD3B0AEE0A954410B000000CDCCCCFC20F2504185EB5128BCA95441EC51B84E1FF25041E17A144EBEA95441AE47E16A1CF25041E17A143EBFA95441CDCCCCBC1AF2504185EB5168BDA95441B81E85EB19F25041CDCCCC5CBDA954416666663619F250415C8FC2F5BBA95441AE47E18A1AF2504185EB5188BBA95441295C8F921CF2504185EB5198BAA954418FC2F5581FF250413D0AD7C3BBA95441AE47E12A20F250413D0AD763BCA95441CDCCCCFC20F2504185EB5128BCA95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 1479388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541CDCCCCDCA2F250413D0AD7535624554114AE4781A3F25041000000505A245541295C8F92A8F25041D7A3705D61245541CDCCCC1CB0F250418FC2F5486D245541B81E852BB3F2504185EB51F871245541AE47E12AB5F250417B14AE87722455417B14AEA7B7F2504152B81ED57024554133333343B9F25041C3F528CC6F245541EC51B80EBBF25041A4703DBA6E245541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000713D0A17CFF250416666669658245541713D0A17D0F2504152B81EA5552455418FC2F5B8D5F25041E17A140E4524554100000000D8F250418FC2F5583E24554148E17A64CBF25041AE47E1DA3A2455418FC2F548BFF250410000008037245541A4703D5AB4F250418FC2F57834245541713D0AA7B2F25041E17A148E3424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541E015DFCBB4F250411EB8A0EC4D2455418BA36573B2F2504152609C214E245541299C5812B3F2504161F27033502455414C9F3204B8F25041D97D265652245541713D0A17CFF250416666669658245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 3318461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541CDCCCCDCA2F250413D0AD7535624554114AE4781A3F25041000000505A245541295C8F92A8F25041D7A3705D61245541CDCCCC1CB0F250418FC2F5486D245541B81E852BB3F2504185EB51F871245541AE47E12AB5F250417B14AE87722455417B14AEA7B7F2504152B81ED57024554133333343B9F25041C3F528CC6F245541EC51B80EBBF25041A4703DBA6E245541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000713D0A17CFF250416666669658245541713D0A17D0F2504152B81EA5552455418FC2F5B8D5F25041E17A140E4524554100000000D8F250418FC2F5583E24554148E17A64CBF25041AE47E1DA3A2455418FC2F548BFF250410000008037245541A4703D5AB4F250418FC2F57834245541713D0AA7B2F25041E17A148E3424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541E015DFCBB4F250411EB8A0EC4D2455418BA36573B2F2504152609C214E245541299C5812B3F2504161F27033502455414C9F3204B8F25041D97D265652245541713D0A17CFF250416666669658245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 3871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541CDCCCCDCA2F250413D0AD7535624554114AE4781A3F25041000000505A245541295C8F92A8F25041D7A3705D61245541CDCCCC1CB0F250418FC2F5486D245541B81E852BB3F2504185EB51F871245541AE47E12AB5F250417B14AE87722455417B14AEA7B7F2504152B81ED57024554133333343B9F25041C3F528CC6F245541EC51B80EBBF25041A4703DBA6E245541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A4703D5AB4F250418FC2F57834245541F2F63405B3F2504147988289342455417A046E97B2F2504155B3B5A53424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541E015DFCBB4F250411EB8A0EC4D2455418BA36573B2F2504152609C214E245541299C5812B3F2504161F270335024554162574124B7F2504186866EF551245541F2134EC9B7F25041916E89EC5124554185EB51F8B6F250415C8FC275502455418FC2F508B6F25041C3F528EC4D245541000000F0B4F250410AD7A380492455411F85EB71B4F25041F6285C3F46245541F6285CEFB3F2504185EB5178412455419A999969B3F250411F85EB213C245541A4703D5AB4F250418FC2F57834245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 56473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541CDCCCCDCA2F250413D0AD7535624554114AE4781A3F25041000000505A245541295C8F92A8F25041D7A3705D61245541CDCCCC1CB0F250418FC2F5486D245541B81E852BB3F2504185EB51F871245541AE47E12AB5F250417B14AE87722455417B14AEA7B7F2504152B81ED57024554133333343B9F25041C3F528CC6F245541EC51B80EBBF25041A4703DBA6E245541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A4703D5AB4F250418FC2F57834245541F2F63405B3F2504147988289342455417A046E97B2F2504155B3B5A53424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541E015DFCBB4F250411EB8A0EC4D2455418BA36573B2F2504152609C214E245541299C5812B3F2504161F270335024554162574124B7F2504186866EF551245541F2134EC9B7F25041916E89EC5124554185EB51F8B6F250415C8FC275502455418FC2F508B6F25041C3F528EC4D245541000000F0B4F250410AD7A380492455411F85EB71B4F25041F6285C3F46245541F6285CEFB3F2504185EB5178412455419A999969B3F250411F85EB213C245541A4703D5AB4F250418FC2F57834245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442216 - 1480455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001200000000000090D7F25041AE47E12A4A295541A4703D9ADDF250415C8FC2F549295541CDCCCCACE2F2504148E17AD44A295541295C8F62E6F250415C8FC2A54B295541C3F528ACE5F25041A4703DEA49295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554114AE4771CCF250410AD7A33032295541295C8F62CBF25041C3F5283C352955417B14AEE7C9F25041D7A3707D3929554114AE4771C9F25041A4703D2A3B2955413D0AD733C7F250410AD7A34043295541B81E855BD2F25041C3F5287C4B29554100000090D7F25041AE47E12A4A295541
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541AE47E18AF1F25041CDCCCCCC502955419A9999F9ECF25041B81E856B4E2955419CB40FFAECF25041814FA4AE4D295541A4E73B83EBF2504172CDCFE44C29554157799149EBF25041624BFB1A4C2955415EACBDD2E9F25041055B7C174B295541A4CBBFCBE7F250411D107D6A4A295541BC80C01EE7F25041C01FFE6649295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554133333383CBF25041666666862B295541E17A143EC8F250411F85EBC128295541A4703D2AC3F25041AE47E18A24295541713D0A37BEF25041AE47E1BA202955410039D0DBB5F250415390AAF21A2955412A0B984DB5F25041CCC596981B2955411522B494B5F250414D4F3F431D295541EFEAC449BAF2504111196497232955413B8BB219BFF25041F228A36C2929554136984752C0F250410B8C1B692A2955415B29A414C2F25041B7E78B852B295541A01D433FCBF250418AFAFA0E352955411312C435CEF250418C0D4C643829554138A320F8CFF2504186CCE0B43A295541D287A1D1D0F250413C464ED13B295541BDF66CD9D5F2504140A857E941295541AE004337D8F250413AD740C7442955419280A3DBD8F250414C4A288A45295541BE65BCA2DBF25041AA55C5C7482955414B0208EADCF250415D43D0FB492955411060EDC0D9F250418F179C174A29554181D82AD2D6F25041D0E6218A4A295541CD762853D5F25041EEA57BC44B29554158D1A8FCD4F25041C86EA6A74B295541329AD3DFD4F25041C86EA6A74B295541CD762853D5F250419904A5014D2955418EA6CE9AD9F25041FD5F48FD532955414887CCA1DBF25041FC7BC4B4572955419611F392DFF25041BDC7E6B35F295541383DF046E2F25041D49863BE622955418E16BF78E8F250410A8A05146B295541FAA48EFDEDF250413F7BA76973295541575542BDEFF25041965207F275295541EA3E36EBF0F250419C87A224782955417DE85ED5F2F2504165EA74F57A29554166666686F5F25041F6285C1F7F295541EC51B84EF8F25041000000D082295541AE47E13AFAF250419A9999D98529554185EB51E8FCF25041295C8F228A29554114AE47B1FEF25041000000808D29554152B81E45FFF25041B81E85CB8F2955418FC2F5C8FFF25041AE47E12A92295541930D500601F350415B7BAD709629554154217A9601F3504124DE7F419929554152B81EE502F35041A4703D0A982955417B14AEB707F3504148E17A3495295541F6285C5F09F35041C3F5281C942955414C0ACAC406F35041E881B9F38A29554152B81ED50CF35041B81E85CB9129554144F319F30BF3504192FC5EE88F2955411AB327C90BF35041C62FB0AB8F295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442216 - 3474701
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001200000000000090D7F25041AE47E12A4A295541A4703D9ADDF250415C8FC2F549295541CDCCCCACE2F2504148E17AD44A295541295C8F62E6F250415C8FC2A54B295541C3F528ACE5F25041A4703DEA49295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554114AE4771CCF250410AD7A33032295541295C8F62CBF25041C3F5283C352955417B14AEE7C9F25041D7A3707D3929554114AE4771C9F25041A4703D2A3B2955413D0AD733C7F250410AD7A34043295541B81E855BD2F25041C3F5287C4B29554100000090D7F25041AE47E12A4A295541
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541AE47E18AF1F25041CDCCCCCC502955419A9999F9ECF25041B81E856B4E2955419CB40FFAECF25041814FA4AE4D295541A4E73B83EBF2504172CDCFE44C29554157799149EBF25041624BFB1A4C2955415EACBDD2E9F25041055B7C174B295541A4CBBFCBE7F250411D107D6A4A295541BC80C01EE7F25041C01FFE6649295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554133333383CBF25041666666862B295541E17A143EC8F250411F85EBC128295541A4703D2AC3F25041AE47E18A24295541713D0A37BEF25041AE47E1BA202955410039D0DBB5F250415390AAF21A2955412A0B984DB5F25041CCC596981B2955411522B494B5F250414D4F3F431D295541EFEAC449BAF2504111196497232955413B8BB219BFF25041F228A36C2929554136984752C0F250410B8C1B692A2955415B29A414C2F25041B7E78B852B295541A01D433FCBF250418AFAFA0E352955411312C435CEF250418C0D4C643829554138A320F8CFF2504186CCE0B43A295541D287A1D1D0F250413C464ED13B295541BDF66CD9D5F2504140A857E941295541AE004337D8F250413AD740C7442955419280A3DBD8F250414C4A288A45295541BE65BCA2DBF25041AA55C5C7482955414B0208EADCF250415D43D0FB492955411060EDC0D9F250418F179C174A29554181D82AD2D6F25041D0E6218A4A295541CD762853D5F25041EEA57BC44B29554158D1A8FCD4F25041C86EA6A74B295541329AD3DFD4F25041C86EA6A74B295541CD762853D5F250419904A5014D2955418EA6CE9AD9F25041FD5F48FD532955414887CCA1DBF25041FC7BC4B4572955419611F392DFF25041BDC7E6B35F295541383DF046E2F25041D49863BE622955418E16BF78E8F250410A8A05146B295541FAA48EFDEDF250413F7BA76973295541575542BDEFF25041965207F275295541EA3E36EBF0F250419C87A224782955417DE85ED5F2F2504165EA74F57A29554166666686F5F25041F6285C1F7F295541EC51B84EF8F25041000000D082295541AE47E13AFAF250419A9999D98529554185EB51E8FCF25041295C8F228A29554114AE47B1FEF25041000000808D29554152B81E45FFF25041B81E85CB8F2955418FC2F5C8FFF25041AE47E12A92295541930D500601F350415B7BAD709629554154217A9601F3504124DE7F419929554152B81EE502F35041A4703D0A982955417B14AEB707F3504148E17A3495295541F6285C5F09F35041C3F5281C942955414C0ACAC406F35041E881B9F38A29554152B81ED50CF35041B81E85CB9129554144F319F30BF3504192FC5EE88F2955411AB327C90BF35041C62FB0AB8F295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442684 - 147491
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000E17A142EF5065141A4703DEA592455413D0AD763FA065141C3F5285C592455419A9999F9040751418FC2F5F8562455418FC2F51801075141D7A3702D4C2455416666661601075141713D0AE73D245541F6285CFFFF065141295C8FC231245541A4703D8AFD0651413333334326245541E17A14FEFF065141E17A14DE242455410AD7A3D00107514148E17A0424245541D7A3709D03075141713D0A672324554114AE4791050751411F85EB71232455418FC2F518060751415C8FC29523245541CDCCCC2C0B075141AE47E11A262455415C8FC2A50D075141E17A144E25245541E17A141E110751416666665623245541CDCCCC8C0B075141333333E31D245541C3F528EC0A075141AE47E17A1B245541666666C60A075141A4703DEA1A2455411F85EBC1080751419A99992913245541E17A148E08075141333333631224554185EB5158060751415C8FC285132455410AD7A34005075141295C8FE2132455410AD7A310040751413D0AD7E313245541666666B6FE0651410AD7A31013245541E17A147EFD065141713D0AB712245541A4703D1AF406514114AE47910F2455413D0AD7A3F10651410AD7A3A00C24554185EB51C8EE0651410AD7A3B0092455417B14AEC7EC0651413D0AD733082455419A9999C9EC065141B81E85BB0824554148E17AE4EC065141D7A3708D0F2455418FC2F5D8EC0651410AD7A320152455417B14AED7EC0651417B14AED71524554148E17AB4EC065141A4703DEA17245541666666E6EB0651413D0AD703242455413D0AD7B3EB065141000000002724554148E17A04EC0651413D0AD7233024554148E17AA4EC0651419A99992939245541D7A3708DED0651418FC2F5684024554114AE4731EF065141C3F528BC492455413D0AD7E3EF06514152B81EB54C2455411F85EBA1F0065141000000E04F245541B81E852BF2065141713D0A97562455415C8FC265F306514185EB512859245541E17A142EF5065141A4703DEA59245541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A1194E61010751415FDF6738242455414200AB63FF0651414523E93525245541AED4BF55FF06514128E5D33D252455418B6A44E4FE065141918D607E25245541A7DAB345FE06514176E691D825245541FA85769EFD065141B85DD0A126245541F6285CFFFF065141295C8FC23124554152A0C15B0707514128115BFD3024554180A4EEC50B0751411DDE1487302455412B7771410D075141A0805D5F3024554190DC0E390B0751417A17C91D262455410DEAA0300B075141B227A41926245541CDCCCC2C0B075141AE47E11A262455411378DB8F0807514161FFE0CE2424554178ACB4D105075141EC28F0822324554172ECCB6C04075141B7B38D6B2324554133A1AAF402075141254BB4A023245541A1194E61010751415FDF673824245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442684 - 341341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000E17A142EF5065141A4703DEA592455413D0AD763FA065141C3F5285C592455419A9999F9040751418FC2F5F8562455418FC2F51801075141D7A3702D4C2455416666661601075141713D0AE73D245541F6285CFFFF065141295C8FC231245541A4703D8AFD0651413333334326245541E17A14FEFF065141E17A14DE242455410AD7A3D00107514148E17A0424245541D7A3709D03075141713D0A672324554114AE4791050751411F85EB71232455418FC2F518060751415C8FC29523245541CDCCCC2C0B075141AE47E11A262455415C8FC2A50D075141E17A144E25245541E17A141E110751416666665623245541CDCCCC8C0B075141333333E31D245541C3F528EC0A075141AE47E17A1B245541666666C60A075141A4703DEA1A2455411F85EBC1080751419A99992913245541E17A148E08075141333333631224554185EB5158060751415C8FC285132455410AD7A34005075141295C8FE2132455410AD7A310040751413D0AD7E313245541666666B6FE0651410AD7A31013245541E17A147EFD065141713D0AB712245541A4703D1AF406514114AE47910F2455413D0AD7A3F10651410AD7A3A00C24554185EB51C8EE0651410AD7A3B0092455417B14AEC7EC0651413D0AD733082455419A9999C9EC065141B81E85BB0824554148E17AE4EC065141D7A3708D0F2455418FC2F5D8EC0651410AD7A320152455417B14AED7EC0651417B14AED71524554148E17AB4EC065141A4703DEA17245541666666E6EB0651413D0AD703242455413D0AD7B3EB065141000000002724554148E17A04EC0651413D0AD7233024554148E17AA4EC0651419A99992939245541D7A3708DED0651418FC2F5684024554114AE4731EF065141C3F528BC492455413D0AD7E3EF06514152B81EB54C2455411F85EBA1F0065141000000E04F245541B81E852BF2065141713D0A97562455415C8FC265F306514185EB512859245541E17A142EF5065141A4703DEA59245541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A1194E61010751415FDF6738242455414200AB63FF0651414523E93525245541AED4BF55FF06514128E5D33D252455418B6A44E4FE065141918D607E25245541A7DAB345FE06514176E691D825245541FA85769EFD065141B85DD0A126245541F6285CFFFF065141295C8FC23124554152A0C15B0707514128115BFD3024554180A4EEC50B0751411DDE1487302455412B7771410D075141A0805D5F3024554190DC0E390B0751417A17C91D262455410DEAA0300B075141B227A41926245541CDCCCC2C0B075141AE47E11A262455411378DB8F0807514161FFE0CE2424554178ACB4D105075141EC28F0822324554172ECCB6C04075141B7B38D6B2324554133A1AAF402075141254BB4A023245541A1194E61010751415FDF673824245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442971 - 2985999
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000035000000EC51B84E2D0751411F85EBA1713C554152B81E552C07514148E17A44713C55415C8FC2C52B075141EC51B80E713C554114AE47F1270751419A999929783C5541EC51B82E27075141AE47E18A803C554148E17AB42607514185EB51D8873C5541F6285C2F2607514185EB51289C3C55419A999939260751413D0AD7B3A23C5541F6285C2F26075141A4703DFAA43C55413D0AD72329075141B81E85DBA43C5541333333932A07514114AE47D1A43C55410AD7A3902F07514152B81E95A23C5541333333F33407514100000030A03C55417B14AEE7370751415C8FC225A03C5541B81E854B3C07514148E17A44A03C554148E17A34400751410AD7A3A0A03C55410AD7A3E042075141A4703D1AA23C554166666626460751410AD7A390A93C5541295C8FF247075141AE47E15AAE3C55413333334349075141AE47E1AAB03C5541666666764907514185EB5158B23C5541D7A3702D4B075141AE47E1FAB33C55415C8FC2E54B07514133333303B83C5541333333234C075141C3F5287CBA3C55410000002051075141B81E85ABC03C5541CDCCCCCC5207514152B81E45C13C5541AE47E11A59075141000000B0CA3C5541295C8F225E075141C3F528FCD33C55419A9999495F0751410AD7A340D53C554114AE47B1620751417B14AEF7D33C5541B81E85BB5E075141D7A370CDCC3C5541CDCCCCAC55075141295C8F32BE3C55410AD7A30052075141EC51B8EEB73C554114AE47414D07514148E17A84AC3C5541666666564B07514114AE47B1A63C5541C3F528FC4807514185EB51C8A23C5541713D0A674607514152B81EA5A03C5541AE47E1AA460751410AD7A3309E3C5541CDCCCCDC47075141A4703DAA9C3C5541D7A370FD48075141F6285CEF9B3C554133333333470751418FC2F518963C5541713D0A7747075141C3F5280C933C5541CDCCCCCC4607514148E17A84923C5541C3F528AC45075141A4703D9A8E3C5541E17A14DE45075141295C8FE28D3C5541AE47E1EA4607514148E17A04893C55415C8FC2D54707514114AE47D1873C5541E17A14BE49075141295C8F52853C55417B14AE77400751417B14AE47783C5541000000E03E07514185EB51D8773C554148E17AA438075141E17A14BE753C5541000000103307514114AE4701743C5541EC51B84E2D0751411F85EBA1713C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000002D66EE333407514132715AD44B3C5541F6285CCF33075141A4703DCA4F3C5541E17A145E330751413D0AD7A3513C55413D0AD74333075141713D0A87543C5541BB863C4D340751412535F976553C5541280B6AE236075141A9AC6942563C55415EBA30743B075141D07D6EA6573C55418578651F40075141F74E730A593C55418452C5AD4607514182B5C46C5B3C5541BC160D48460751412600EBEB5B3C554117D5765346075141E2ABF451603C55415F60F99143075141D3F2010C693C5541C50BEAE43E075141AA6D33CB773C554146ED97DC3F075141CA38511D783C55418D7923F23F075141DAD23323783C5541DFD285D93F0751415B503216783C5541C8DFA0B54507514167F280646D3C554101E2AAE0470751417B396A78683C55412432CE23490751410B14EDD55C3C5541A9FDC99D4E075141631937655D3C5541E357CBE84E075141E7A337835D3C55410000007050075141C3F528FC5D3C5541713D0A2752075141000000F05E3C55410AD7A370540751419A999919603C554112AECC60530751418567C5D45A3C5541E29FB8905007514164A6A560563C55411364A02A4D075141B8E18038513C5541679F7B0248075141A0DA76D04F3C5541A2D34C7241075141D67B69F04D3C55412D66EE333407514132715AD44B3C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442971 - 3700741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000035000000EC51B84E2D0751411F85EBA1713C554152B81E552C07514148E17A44713C55415C8FC2C52B075141EC51B80E713C554114AE47F1270751419A999929783C5541EC51B82E27075141AE47E18A803C554148E17AB42607514185EB51D8873C5541F6285C2F2607514185EB51289C3C55419A999939260751413D0AD7B3A23C5541F6285C2F26075141A4703DFAA43C55413D0AD72329075141B81E85DBA43C5541333333932A07514114AE47D1A43C55410AD7A3902F07514152B81E95A23C5541333333F33407514100000030A03C55417B14AEE7370751415C8FC225A03C5541B81E854B3C07514148E17A44A03C554148E17A34400751410AD7A3A0A03C55410AD7A3E042075141A4703D1AA23C554166666626460751410AD7A390A93C5541295C8FF247075141AE47E15AAE3C55413333334349075141AE47E1AAB03C5541666666764907514185EB5158B23C5541D7A3702D4B075141AE47E1FAB33C55415C8FC2E54B07514133333303B83C5541333333234C075141C3F5287CBA3C55410000002051075141B81E85ABC03C5541CDCCCCCC5207514152B81E45C13C5541AE47E11A59075141000000B0CA3C5541295C8F225E075141C3F528FCD33C55419A9999495F0751410AD7A340D53C554114AE47B1620751417B14AEF7D33C5541B81E85BB5E075141D7A370CDCC3C5541CDCCCCAC55075141295C8F32BE3C55410AD7A30052075141EC51B8EEB73C554114AE47414D07514148E17A84AC3C5541666666564B07514114AE47B1A63C5541C3F528FC4807514185EB51C8A23C5541713D0A674607514152B81EA5A03C5541AE47E1AA460751410AD7A3309E3C5541CDCCCCDC47075141A4703DAA9C3C5541D7A370FD48075141F6285CEF9B3C554133333333470751418FC2F518963C5541713D0A7747075141C3F5280C933C5541CDCCCCCC4607514148E17A84923C5541C3F528AC45075141A4703D9A8E3C5541E17A14DE45075141295C8FE28D3C5541AE47E1EA4607514148E17A04893C55415C8FC2D54707514114AE47D1873C5541E17A14BE49075141295C8F52853C55417B14AE77400751417B14AE47783C5541000000E03E07514185EB51D8773C554148E17AA438075141E17A14BE753C5541000000103307514114AE4701743C5541EC51B84E2D0751411F85EBA1713C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000002D66EE333407514132715AD44B3C5541F6285CCF33075141A4703DCA4F3C5541E17A145E330751413D0AD7A3513C55413D0AD74333075141713D0A87543C5541BB863C4D340751412535F976553C5541280B6AE236075141A9AC6942563C55415EBA30743B075141D07D6EA6573C55418578651F40075141F74E730A593C55418452C5AD4607514182B5C46C5B3C5541BC160D48460751412600EBEB5B3C554117D5765346075141E2ABF451603C55415F60F99143075141D3F2010C693C5541C50BEAE43E075141AA6D33CB773C554146ED97DC3F075141CA38511D783C55418D7923F23F075141DAD23323783C5541DFD285D93F0751415B503216783C5541C8DFA0B54507514167F280646D3C554101E2AAE0470751417B396A78683C55412432CE23490751410B14EDD55C3C5541A9FDC99D4E075141631937655D3C5541E357CBE84E075141E7A337835D3C55410000007050075141C3F528FC5D3C5541713D0A2752075141000000F05E3C55410AD7A370540751419A999919603C554112AECC60530751418567C5D45A3C5541E29FB8905007514164A6A560563C55411364A02A4D075141B8E18038513C5541679F7B0248075141A0DA76D04F3C5541A2D34C7241075141D67B69F04D3C55412D66EE333407514132715AD44B3C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443433 - 1467304
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000D00000048E17A041B0751413D0AD7131D245541000000100F0751413D0AD7B31D2455419A99993911075141000000501F24554148E17A74130751413333339320245541B81E851B15075141A4703D2A21245541B81E85DB19075141D7A3704D22245541000000001D0751411F85EB01232455415C8FC26520075141C3F528FC23245541713D0A9723075141D7A3700D252455417B14AEB725075141B81E85DB25245541A4703D2A270751410000007026245541A4703DEA220751418FC2F5C81C24554148E17A041B0751413D0AD7131D24554101030000000100000017000000B81E855B0E075141D7A370BD1D245541CDCCCC8C0B075141333333E31D245541E17A141E11075141666666562324554185EB51D811075141CDCCCC0C24245541E17A145E17075141C3F528FC29245541B81E858B1C075141B81E855B2F245541713D0AF721075141713D0A4736245541000000B028075141333333433F2455416666660631075141333333333A2455419A9999B92B075141F6285C1F3024554148E17A04280751410000006028245541C3F5286C270751415C8FC2052724554148E17AC425075141F6285C5F26245541AE47E1BA22075141A4703D4A25245541A4703D4A200751410AD7A380242455417B14AE171E075141000000E02324554148E17AA41A07514114AE470123245541000000E0160751418FC2F50822245541CDCCCCEC14075141A4703D7A21245541CDCCCC8C13075141666666F6202455410AD7A3A012075141D7A3707D20245541713D0A0711075141B81E859B1F245541B81E855B0E075141D7A370BD1D245541
+</a>
+
+<b>
+01060000000100000001030000000100000025000000A022FC5F260751415776F79926245541AE47E1BA22075141A4703D4A25245541A4703D4A200751410AD7A380242455417B14AE171E075141000000E02324554148E17AA41A07514114AE470123245541000000E0160751418FC2F50822245541CDCCCCEC14075141A4703D7A21245541CDCCCC8C13075141666666F6202455410AD7A3A012075141D7A3707D20245541713D0A0711075141B81E859B1F245541B81E855B0E075141D7A370BD1D245541CDCCCC8C0B075141333333E31D245541E17A141E11075141666666562324554185EB51D811075141CDCCCC0C24245541E17A145E17075141C3F528FC29245541B81E858B1C075141B81E855B2F245541713D0AF721075141713D0A4736245541000000B028075141333333433F2455416666660631075141333333333A2455419A9999B92B075141F6285C1F3024554148E17A04280751410000006028245541C3F5286C270751415C8FC20527245541A92CF76626075141BF122D9F2624554133ED476E260751415CA6782126245541A4703D2A270751410000007026245541A4703DEA220751418FC2F5C81C24554148E17A041B0751413D0AD7131D245541000000100F0751413D0AD7B31D2455419A99993911075141000000501F24554148E17A74130751413333339320245541B81E851B15075141A4703D2A21245541B81E85DB19075141D7A3704D22245541000000001D0751411F85EB01232455415C8FC26520075141C3F528FC23245541713D0A9723075141D7A3700D25245541049E1C66260751415CA6782126245541A022FC5F260751415776F79926245541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978515 - 54992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A248EA650410AD7A3E0165C554148E17AA48EA6504185EB51A8145C55416666663693A65041F6285C7FF15B55411F85EBD17FA65041EC51B80EEB5B5541A4703D0A83A6504166666686145C5541000000808AA650411F85EB41155C554152B81EE583A65041713D0AA7415C5541CDCCCC3C86A6504166666646405C55419A9999C989A65041713D0A073A5C554148E17A248EA650410AD7A3E0165C5541
+</a>
+
+<b>
+010600000001000000010300000001000000170000002255A9AD84A650414AB31D633C5C554100B64EE783A65041D24D5698415C5541BCD6AF7F84A6504173BD254C415C5541CDCCCC3C86A6504166666646405C55419A9999C989A65041713D0A073A5C554100F874678DA65041B2A547D61C5C5541ED5F62128EA650410A1CC504175C55412F0A8C2C8EA65041D487D2BC165C554148E17AA48EA6504185EB51A8145C5541B217206E91A650417381C735FF5B5541CC5A472793A65041B7A2567AF15B55417A24756391A65041895F4BE4F05B554132D689D88DA6504141441EB7EF5B5541D96220D77FA65041501CC551EB5B55417A6794FC81A6504100ADAFF5065C5541BE223A7D82A6504163BF6B6E0D5C554159DA4D0983A6504111029C54145C5541BBB467B786A650415A36D0E2145C5541000000808AA650411F85EB41155C554119A190788AA6504146E1E473155C5541E9ECE8888AA65041CB785C76155C5541ED17994185A65041BF91C580385C55412255A9AD84A650414AB31D633C5C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>446746 - 2914902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000000AD7A38013295141A4703D5A323654413D0AD79319295141295C8F122D365441D7A3706D1B295141666666762B365441C3F528BC26295141F6285CCF213654418FC2F53826295141C3F5286C21365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441EC51B84E13295141EC51B86E12365441B81E856B0D29514148E17AC41336544185EB51B80B295141333333731636544114AE47A10B29514185EB515816365441D7A3707D0A295141EC51B8CE16365441A4703D8A04295141AE47E13A1936544100000040FD285141000000301C3654419A9999F9FA2851419A999909223654417B14AEE7F8285141B81E855B27365441EC51B8CEF628514148E17AC42C365441B81E858BF4285141AE47E19A323654410AD7A350F42851413333333333365441E17A14EEF82851410AD7A370343654418FC2F598FB28514185EB51283536544152B81E25FD28514152B81EB52D365441E17A148E02295141AE47E1AA2E365441AE47E14A05295141F6285CDF28365441CDCCCCEC0A2951411F85EB912B3654411F85EBE107295141E17A14EE30365441A4703D5A09295141333333E3323654415C8FC2650F29514114AE47A12D3654410AD7A38013295141A4703D5A32365441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C187245920295141E93A124327365441DF4ED50A222951412660DBD02536544182F7187523295141E65F9D9B24365441C3F528BC26295141F6285CCF21365441CA4FDAC61E295141DD4B00DE1B365441D9B1C61B19295141B7F357A317365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441BBAFC09D132951411571F18C1236544176A0A6FE0F295141B461052F13365441B81E856B0D29514148E17AC41336544185EB51B80B2951413333337316365441C187245920295141E93A124327365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>446746 - 3657658
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000000AD7A38013295141A4703D5A323654413D0AD79319295141295C8F122D365441D7A3706D1B295141666666762B365441C3F528BC26295141F6285CCF213654418FC2F53826295141C3F5286C21365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441EC51B84E13295141EC51B86E12365441B81E856B0D29514148E17AC41336544185EB51B80B295141333333731636544114AE47A10B29514185EB515816365441D7A3707D0A295141EC51B8CE16365441A4703D8A04295141AE47E13A1936544100000040FD285141000000301C3654419A9999F9FA2851419A999909223654417B14AEE7F8285141B81E855B27365441EC51B8CEF628514148E17AC42C365441B81E858BF4285141AE47E19A323654410AD7A350F42851413333333333365441E17A14EEF82851410AD7A370343654418FC2F598FB28514185EB51283536544152B81E25FD28514152B81EB52D365441E17A148E02295141AE47E1AA2E365441AE47E14A05295141F6285CDF28365441CDCCCCEC0A2951411F85EB912B3654411F85EBE107295141E17A14EE30365441A4703D5A09295141333333E3323654415C8FC2650F29514114AE47A12D3654410AD7A38013295141A4703D5A32365441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C187245920295141E93A124327365441DF4ED50A222951412660DBD02536544182F7187523295141E65F9D9B24365441C3F528BC26295141F6285CCF21365441CA4FDAC61E295141DD4B00DE1B365441D9B1C61B19295141B7F357A317365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441BBAFC09D132951411571F18C1236544176A0A6FE0F295141B461052F13365441B81E856B0D29514148E17AC41336544185EB51B80B2951413333337316365441C187245920295141E93A124327365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447131 - 47454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AD47C2B5141295C8F9234345441A4703D0AD32B5141CDCCCCFC4E345441CDCCCC1CD72B51410AD7A3D04134544148E17A74CA2B5141C3F5281C3E345441295C8FB2AA2B514114AE47D134345441F6285C5F992B5141F6285CBF2F345441F6285C3F882B5141CDCCCCBC2A345441B81E85CB862B5141000000502A345441C3F528EC802B51418FC2F59828345441A4703D9A802B51418FC2F5882934544148E17AD47C2B5141295C8F9234345441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F75C079A12B5141E27002CD3F3454418900DEA8A12B5141322272DB3F345441C4D0B85AA22B5141F6E8F0114034544152B1547AA32B514150471DB33C3454410B02ABC3A32B5141292D33CA3A3454410FDAC3B6A22B5141FE3A30EE39345441FBCC4EC2A12B5141B78B86373A345441FBC27D6AA12B51414171F1A33B34544151294F9FA02B514144FD138A3F3454417F75C079A12B5141E27002CD3F345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447131 - 84610
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AD47C2B5141295C8F9234345441A4703D0AD32B5141CDCCCCFC4E345441CDCCCC1CD72B51410AD7A3D04134544148E17A74CA2B5141C3F5281C3E345441295C8FB2AA2B514114AE47D134345441F6285C5F992B5141F6285CBF2F345441F6285C3F882B5141CDCCCCBC2A345441B81E85CB862B5141000000502A345441C3F528EC802B51418FC2F59828345441A4703D9A802B51418FC2F5882934544148E17AD47C2B5141295C8F9234345441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F75C079A12B5141E27002CD3F3454418900DEA8A12B5141322272DB3F345441C4D0B85AA22B5141F6E8F0114034544152B1547AA32B514150471DB33C3454410B02ABC3A32B5141292D33CA3A3454410FDAC3B6A22B5141FE3A30EE39345441FBCC4EC2A12B5141B78B86373A345441FBC27D6AA12B51414171F1A33B34544151294F9FA02B514144FD138A3F3454417F75C079A12B5141E27002CD3F345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447256 - 266837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB5148E046514185EB51686C3F544166666696E14651418FC2F598683F544133333363E2465141713D0A87653F5441AE47E17AE2465141CDCCCC2C653F54418FC2F578DD46514152B81EE5633F5441A4703DCAD74651415C8FC2A5623F5441EC51B8CECE4651415C8FC215613F5441CDCCCC1CCA4651410AD7A370603F5441D7A3706DC4465141AE47E19A5F3F5441D7A3705DC24651410AD7A3705F3F5441AE47E15ABF465141F6285C4F5F3F5441F6285CBFBE4651417B14AEC7633F5441E17A149EBE465141E17A14EE663F5441C3F528BCBE465141A4703D4A6A3F5441E17A145EBF4651411F85EB616A3F544185EB5158C4465141000000F06A3F54417B14AE07CA465141295C8F126B3F544148E17A24CB465141295C8F226B3F5441295C8F52D5465141713D0AC76C3F54413D0AD7D3DF465141AE47E1BA6E3F5441F6285C3FE046514148E17A946C3F544185EB5148E046514185EB51686C3F5441
+</a>
+
+<b>
+010600000001000000010300000001000000270000001A32EF5ABF465141BB3070806A3F544177FAA3B2BE465141CB534A7C733F5441F6285C9FBE465141F6285C2F763F5441E17A144EBE46514152B81EA57D3F544166666626BE465141EC51B88E813F5441DC8FE3D5BD465141412FFF94883F5441BA07B5DCBD4651413855BE918A3F54414BC233AABD465141241D5E808F3F54419F7DA33EC64651414C506AE38F3F5441DDD11460CB46514109E3BCF58F3F54414DA6BEF3CE465141F467D301903F544151FF620AD046514155168105903F54414FA94EE6D04651412F516808903F54413E61EA3CD2465141B4F217B4853F5441DD2341ECD2465141AF9457857E3F544114AE47F1D24651410AD7A3507E3F54416B68A173D44651411C2462447E3F54417DBAA2E5D646514127637BDC7D3F54417E017459D94651417D5A4A277D3F5441B5A329ECD946514125B809F67C3F5441DCEE82CCDA465141CD8AB8AA7C3F5441A13C57C1DE465141F6BFD2FB7A3F5441295C8FC2DE465141666666A6783F5441D7A370EDDE46514166666656763F54412C46F519DF465141372F19DE743F54410210C681DF465141707F9170713F5441E9C788ABDF4651412E3B930F703F5441365F39B5DF465141B558ABBD6F3F544194DD69D3DF465141811B7CBE6E3F5441997FA5A1D7465141C3D0E6346D3F544100F0EE98D2465141651B7B566C3F5441D24AD87CCE4651418319BBAC6B3F544152F9EF52CD4651418D2CAA7C6B3F54410C9A437FCC465141EC1B835A6B3F5441F39F2784CA465141248F8D196B3F544169E63EA7C6465141505408FE6A3F544185EB5158C4465141000000F06A3F5441F6E2B75EC1465141A07F149B6A3F54411A32EF5ABF465141BB3070806A3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447349 - 208864
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000036000000713D0AF7BB445141000000B06B42544148E17AB4BD445141B81E855B6E4254415C8FC255C04451419A9999B96F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D42544152B81E55CD4451411F85EB816A42544152B81E05D34451411F85EB216B42544114AE47C1D44451410AD7A3506C42544114AE47C1D44451419A9999596D42544152B81E05D34451413D0AD7C36E42544148E17A94CD445141295C8FE26F42544114AE4751CD4451413D0AD7537142544152B81EE5C944514152B81E25844254418FC2F5C8C34451410AD7A3C084425441EC51B86EBB445141CDCCCC6C854254417B14AED7BA445141D7A370ED86425441333333A3C0445141A4703D2A89425441AE47E19AC64451419A9999A98B4254418FC2F5B8CD445141666666268F4254418FC2F5D8D5445141E17A141E94425441E17A142ED8445141F6285C1F95425441EC51B81ED9445141E17A14DE8F4254413D0AD753E94451410AD7A3D092425441C3F528BCE94451413D0AD7338A4254410AD7A350EA4451419A9999B980425441CDCCCC0CEA4451415C8FC2657D4254418FC2F588E944514185EB517879425441713D0A97E84451410AD7A3B073425441CDCCCC9CE744514148E17AE46D42544152B81E45E7445141D7A3703D6C42544148E17A74E6445141295C8FE268425441713D0A57E6445141CDCCCC4C68425441F6285CFFE5445141A4703D8A664254417B14AEB7E5445141CDCCCCBC62425441B81E85FBE5445141B81E855B5D4254419A999909E64451410AD7A3205D4254411F85EB61E5445141295C8FC25C4254410AD7A360E3445141CDCCCC4C5C4254413D0AD703DF445141333333835B4254413D0AD703D844514152B81E855C425441CDCCCCECD54451419A9999495D42544114AE4791D44451418FC2F5C85E42544152B81E35D3445141A4703D5A6042544100000030D14451418FC2F53861425441E17A145ECE44514152B81E1561425441AE47E1EAC84451417B14AE375C425441713D0A77C4445141666666465B42544185EB5118BF4451417B14AE575B425441A4703D9ABC445141D7A3707D5E4254413D0AD7F3BB445141E17A141E60425441295C8F42BC4451418FC2F548654254419A999929BB445141C3F528CC67425441CDCCCC9CBB4451418FC2F51869425441713D0AF7BB445141000000B06B425441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000295C8F42BC4451418FC2F54865425441D2083C30BB44514196BEF8BC674254418BE75C40BB4451412765EB0D68425441CDCCCC9CBB4451418FC2F51869425441713D0AF7BB445141000000B06B425441978DACB0BD4451413A08AE556E4254411A9504C8BE445141100BCAEA6E42544171086640C0445141F2C724AB6F42544122DDF7F1C0445141984DFBB66F425441B11A9D07C444514194E5BEA96F425441BF65BB99C4445141F6C4A0A16F4254410E5EC148C5445141D7DC5CA46F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D425441589C335ACA445141BF37BA4E6C425441C490DFE3CA445141D73B24F36B425441B7D80568CC445141BF55330F6B42544115F3AC15CD44514143A63DA86A42544152B81E55CD4451411F85EB816A425441C56EDD7BCD4451410A7D2D866A425441476E0089CD445141337DCC816A425441D8F1451CD1445141CE5833EC6A42544152B81E05D34451411F85EB216B42544185009F0AD3445141E557AB256B4254410AFEE73ED3445141B85EBF2B6B4254411377620BD3445141B143FC226B425441FEA85525D3445141987CF3256B425441CB30ACE0D34451410A1D675A6A425441D22FF60DD4445141FC178A0467425441707224F2C7445141D2AA75BE65425441D05BDF51BC4451416061B98964425441660BA33ABC4451416B2AD0C364425441295C8F42BC4451418FC2F54865425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447349 - 341479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000036000000713D0AF7BB445141000000B06B42544148E17AB4BD445141B81E855B6E4254415C8FC255C04451419A9999B96F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D42544152B81E55CD4451411F85EB816A42544152B81E05D34451411F85EB216B42544114AE47C1D44451410AD7A3506C42544114AE47C1D44451419A9999596D42544152B81E05D34451413D0AD7C36E42544148E17A94CD445141295C8FE26F42544114AE4751CD4451413D0AD7537142544152B81EE5C944514152B81E25844254418FC2F5C8C34451410AD7A3C084425441EC51B86EBB445141CDCCCC6C854254417B14AED7BA445141D7A370ED86425441333333A3C0445141A4703D2A89425441AE47E19AC64451419A9999A98B4254418FC2F5B8CD445141666666268F4254418FC2F5D8D5445141E17A141E94425441E17A142ED8445141F6285C1F95425441EC51B81ED9445141E17A14DE8F4254413D0AD753E94451410AD7A3D092425441C3F528BCE94451413D0AD7338A4254410AD7A350EA4451419A9999B980425441CDCCCC0CEA4451415C8FC2657D4254418FC2F588E944514185EB517879425441713D0A97E84451410AD7A3B073425441CDCCCC9CE744514148E17AE46D42544152B81E45E7445141D7A3703D6C42544148E17A74E6445141295C8FE268425441713D0A57E6445141CDCCCC4C68425441F6285CFFE5445141A4703D8A664254417B14AEB7E5445141CDCCCCBC62425441B81E85FBE5445141B81E855B5D4254419A999909E64451410AD7A3205D4254411F85EB61E5445141295C8FC25C4254410AD7A360E3445141CDCCCC4C5C4254413D0AD703DF445141333333835B4254413D0AD703D844514152B81E855C425441CDCCCCECD54451419A9999495D42544114AE4791D44451418FC2F5C85E42544152B81E35D3445141A4703D5A6042544100000030D14451418FC2F53861425441E17A145ECE44514152B81E1561425441AE47E1EAC84451417B14AE375C425441713D0A77C4445141666666465B42544185EB5118BF4451417B14AE575B425441A4703D9ABC445141D7A3707D5E4254413D0AD7F3BB445141E17A141E60425441295C8F42BC4451418FC2F548654254419A999929BB445141C3F528CC67425441CDCCCC9CBB4451418FC2F51869425441713D0AF7BB445141000000B06B425441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000295C8F42BC4451418FC2F54865425441D2083C30BB44514196BEF8BC674254418BE75C40BB4451412765EB0D68425441CDCCCC9CBB4451418FC2F51869425441713D0AF7BB445141000000B06B425441978DACB0BD4451413A08AE556E4254411A9504C8BE445141100BCAEA6E42544171086640C0445141F2C724AB6F42544122DDF7F1C0445141984DFBB66F425441B11A9D07C444514194E5BEA96F425441BF65BB99C4445141F6C4A0A16F4254410E5EC148C5445141D7DC5CA46F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D425441589C335ACA445141BF37BA4E6C425441C490DFE3CA445141D73B24F36B425441B7D80568CC445141BF55330F6B42544115F3AC15CD44514143A63DA86A42544152B81E55CD4451411F85EB816A425441C56EDD7BCD4451410A7D2D866A425441476E0089CD445141337DCC816A425441D8F1451CD1445141CE5833EC6A42544152B81E05D34451411F85EB216B42544185009F0AD3445141E557AB256B4254410AFEE73ED3445141B85EBF2B6B4254411377620BD3445141B143FC226B425441FEA85525D3445141987CF3256B425441CB30ACE0D34451410A1D675A6A425441D22FF60DD4445141FC178A0467425441707224F2C7445141D2AA75BE65425441D05BDF51BC4451416061B98964425441660BA33ABC4451416B2AD0C364425441295C8F42BC4451418FC2F54865425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447447 - 447285
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000200000078000000AE47E1EA864651415C8FC2653B33544185EB5148884651417B14AEF73C335441666666E688465141EC51B8EE3D335441E17A145E89465141295C8F123F3354415C8FC295894651413D0AD7933F335441AE47E11A8A46514114AE4751403354411F85EB018B4651410AD7A32041335441B81E857B8B46514185EB5168433354411F85EB118C465141D7A3700D453354419A9999798C4651417B14AEF7453354411F85EB318D465141CDCCCC2C463354413333334391465141A4703D5A47335441666666E69446514185EB51D84A33544152B81EE595465141E17A14FE4B335441F6285C9F964651419A9999B94A33544166666676954651413D0AD7A34933544166666646974651418FC2F5F8473354411F85EBB1964651418FC2F598463354413333330399465141000000704533544148E17AF49946514114AE47C14733544148E17A549B4651413D0AD77346335441F6285CFF9C4651419A99998947335441F6285CFF9C465141713D0A4749335441AE47E11A9F4651410AD7A320493354411F85EB41A0465141AE47E1DA493354413D0AD7A3A0465141333333E34E335441F6285CFF974651411F85EB814F33544152B81EB597465141333333734B335441D7A370BD9646514148E17A944C335441666666F694465141333333334F3354418FC2F56893465141EC51B8CE51335441EC51B87E9246514100000070543354417B14AE17924651418FC2F5D855335441CDCCCCAC91465141C3F5280C58335441CDCCCC7C91465141000000605A335441B81E858B914651419A9999795E335441A4703D4A934651410000008061335441333333D39446514114AE4751643354419A9999E997465141295C8F026A335441B81E85DB9846514185EB51A869335441295C8F229C4651411F85EB9168335441B81E85FBA04651411F85EBE1663354418FC2F508A4465141295C8FB2653354410AD7A390A6465141295C8FC264335441AE47E14AA9465141E17A149E63335441713D0AE7AB46514114AE47B162335441D7A3704DAF465141333333B361335441AE47E19AB146514114AE472161335441D7A3708DB0465141000000A05D335441AE47E11AAF4651410AD7A3E057335441666666D6AF465141E17A14BE523354413D0AD773B0465141000000604D3354411F85EBF1B04651416666668646335441CDCCCC3CB1465141C3F5284C403354411F85EB61B24651411F85EB81373354418FC2F508AF465141F6285CFF37335441C3F5283CAD4651410000005038335441C3F528FCAA4651410AD7A3B03833544100000080AB465141F6285C6F32335441713D0AE7AA465141F6285C0F3133544185EB51C8AA46514185EB5118303354419A9999B9AA465141AE47E1AA2E33544152B81E75AA465141295C8F722D3354411F85EBF1A9465141EC51B8FE2B335441C3F5284CA9465141E17A148E2B33544148E17A54A846514185EB51082B335441B81E85FBA6465141E17A146E2A3354413D0AD703A1465141B81E858B2A33544148E17A849C465141000000B02A33544152B81EB598465141A4703DFA2A33544185EB51B893465141000000302B33544166666656924651415C8FC2F5243354418FC2F5C88F465141A4703DBA193354415C8FC26591465141F6285C0F213354413D0AD7A38D4651419A9999591B33544114AE47618A465141E17A14BE18335441E17A14EE88465141666666C610335441CDCCCC6C8846514185EB51B807335441295C8FA27C4651410000004008335441D7A3702D83465141A4703D1A13335441713D0A577D465141EC51B88E10335441EC51B85E7A46514185EB51E80A335441000000D076465141E17A148E0A33544185EB51A8734651419A99991909335441F6285C9F7046514148E17AC40B335441D7A3707D6E4651413333332311335441EC51B88E6A465141E17A149E0C3354413D0AD763654651410AD7A3300D335441EC51B85E614651419A9999C907335441CDCCCC9C5F465141B81E854B0933544148E17AF463465141666666B60F33544152B81EF564465141E17A141E1233544148E17AC465465141E17A146E14335441AE47E17A6646514152B81E851533544114AE4791674651410AD7A3901633544114AE47E168465141EC51B8AE173354417B14AED76946514148E17AB418335441B81E85CB6A4651413D0AD7531A3354418FC2F5486B465141A4703D1A1B33544148E17A446D465141E17A143E1C335441D7A370FD6D4651413D0AD7131D335441C3F5285C6F4651413D0AD7D31E33544114AE47E170465141713D0A771E33544185EB51087346514114AE47111C33544148E17A4478465141B81E857B1D335441EC51B82E7F465141B81E859B21335441AE47E18A86465141CDCCCC4C1D33544114AE47918846514185EB51C820335441B81E854B844651411F85EBB124335441A4703D5A83465141713D0A372633544114AE47418546514114AE47E12933544185EB510886465141EC51B85E2D335441E17A148E87465141295C8F322F335441A4703D1A8A465141666666B62E33544148E17AE48C4651418FC2F5482C3354413D0AD7038F46514148E17A842C3354413D0AD7A38D46514148E17AB42F3354417B14AEA789465141B81E858B3333544114AE4701844651413333335338335441AE47E1EA864651415C8FC2653B335441050000008FC2F5A8A1465141A4703D7A4F335441D7A3700DA3465141295C8F724F335441D7A3700DA34651417B14AEC75033544114AE47A1A14651417B14AEC7503354418FC2F5A8A1465141A4703D7A4F335441
+</a>
+
+<b>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF373354411F85EB61B24651411F85EB8137335441CDCCCC3CB1465141C3F5284C403354411F85EBF1B046514166666686463354413D0AD773B0465141000000604D335441666666D6AF465141E17A14BE52335441AE47E11AAF4651410AD7A3E057335441D7A3708DB0465141000000A05D335441AE47E19AB146514114AE472161335441A4703DAAB1465141EC51B8BE613354413D0AD7C3B0465141333333E362335441EC51B81EAE465141295C8F8264335441295C8F92AA4651411F85EB2166335441000000D0AA465141C3F528BC663354419A999909AD4651413D0AD7F3653354415C8FC265AD4651415C8FC25567335441C3F528BCAC465141F6285C8F693354413D0AD703AC465141C3F528DC693354410AD7A350AC4651413D0AD7B36A33544114AE4771AF4651410AD7A37069335441E17A14BEAF465141295C8FD26A335441D7A3703DAE4651417B14AE076F335441D7A370EDA746514152B81EE570335441F6285CAFA746514148E17A646F335441CDCCCCCCA4465141AE47E14A70335441A4703D7AA34651417B14AEE76B335441000000F0A24651415C8FC2156C335441713D0A37A24651417B14AEB768335441B81E85CBA1465141F6285CFF6733544114AE4731A14651410AD7A3E067335441E17A145E9E46514185EB51A86833544148E17A349C465141295C8F4269335441E17A142E98465141333333136B335441713D0AC798465141CDCCCC0C703354417B14AE379B4651411F85EBB17B3354413D0AD7839B465141EC51B81E7D3354418FC2F5389C4651415C8FC2757E335441B81E850B9D465141000000D07F335441B81E85AB9D4651417B14AE67803354415C8FC2A59E465141AE47E11A813354415C8FC2959F465141666666A681335441C3F5281CA34651417B14AE57833354411F85EBF1A4465141B81E852B84335441E17A144EA74651413D0AD73385335441C3F528ECAB465141AE47E1BA833354419A9999B9AB465141F6285C3F8333544152B81E95AA465141000000A07F3354411F85EB91B0465141000000407D33544133333303B74651413D0AD7037A3354417B14AE77BC465141666666B67733544114AE47D1BD4651410AD7A33077335441AE47E14AC14651410AD7A3D0753354411E6C7D48C746514191C70FD872335441A4703D0AC54651413D0AD7336D335441C3F5289CBE465141D7A3709D5E33544148E17AD4BD465141666666165D335441CDCCCC7CB7465141AE47E18A5E335441333333B3B1465141CDCCCCFC5F3354419A9999F9B0465141C3F528BC5D335441713D0A87AF46514114AE47015833544148E17A64B04651419A9999D95233544152B81EE5B0465141A4703D8A4D335441CDCCCC5CB1465141F6285C7F46335441CDCCCC7CB1465141A4703DEA42335441B81E85ABB14651416666665640335441295C8FF2B2465141E17A145E373354416799DC85B346514163F7F56F3033544110AD7EE7AB465141919CF48D3033544105000000333333B3B1465141713D0A17683354418FC2F568B1465141B81E852B673354410AD7A300B3465141B81E859B66335441A4703D4AB34651413D0AD78367335441333333B3B1465141713D0A176833544101030000000100000005000000AE47E12A904651417B14AE67A13354417B14AE67964651410AD7A3709E3354410AD7A3908E465141713D0A477C3354416666662689465141A4703D6A7E335441AE47E12A904651417B14AE67A13354410103000000020000000D0000000AD7A39089465141D7A3701DA5335441E17A14CE83465141A4703DCAA73354411F85EB617F4651418FC2F5A8A93354413D0AD7A37B4651415C8FC2A5AA335441EC51B85E7846514166666676AA3354413333332378465141D7A3704DAB335441CDCCCC1C774651417B14AE67B13354417B14AEC778465141D7A370BDB3335441D7A3703D7A46514166666666B53354419A9999697F465141B81E85DBB0335441C3F5289C82465141CDCCCC0CAE335441AE47E1CA86465141C3F528ACA83354410AD7A39089465141D7A3701DA533544105000000B81E853B80465141F6285CBFAA335441B81E853B80465141D7A370DDA9335441E17A141E814651415C8FC2E5A933544152B81E1581465141F6285CBFAA335441B81E853B80465141F6285CBFAA3354410103000000010000000A000000666666965E46514148E17AF478365441AE47E10A6146514114AE47617136544148E17A145E4651415C8FC275703654415C8FC29544465141D7A3706D73365441E17A149E44465141295C8F2278365441E17A14FE43465141A4703D9A7A3654413D0AD7F33F465141F6285CFF7F3654411F85EBE14D4651415C8FC2557E365441295C8F725D465141A4703D7A7C365441666666965E46514148E17AF478365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447621 - 251262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000700000033333363F14751417B14AEA7263F5441B81E853B174851418FC2F5F8153F54413D0AD7F31348514185EB5188103F5441666666A610485141E17A140E0B3F5441AE47E1CAE447514152B81EB51B3F5441A4703DBAE6475141A4703DEA213F544133333363F14751417B14AEA7263F544101030000000100000007000000AE47E1BA154851419A9999D90F3F54415C8FC2F5184851415C8FC235153F5441D7A3704D19485141EC51B80E153F5441713D0AA7194851417B14AE570E3F54411F85EB011A4851410AD7A380073F5441EC51B86E124851410AD7A3600A3F5441AE47E1BA154851419A9999D90F3F5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AEA7FD4751411F85EB21273F5441136BCCAC004851412CD0D583283F5441C2C8C3250348514180B6B86E293F544132A7AEA705485141566DCC7C2A3F5441DCC11EF205485141DF36604C2A3F5441CE4B8D4B064851415C0E33122A3F54410E25A4AF0B48514168876F90263F5441A8413D2A1B485141FE03B87E1C3F5441C49A517818485141F02C6806183F54418AEE843B17485141CCD7F5F8153F5441502730FF0D485141021A2F0B1A3F5441173AC06D094851413B5DAF0E1C3F5441ED7CC1BFFA47514155584087223F54419FB197EAF7475141E853E9C6233F544108C13463F14751411E65ADA7263F5441E4710B87F44751417499B70E273F5441F92229BCF847514118DAAD27273F54418DA67605FB47514117C60025273F544135EEBC19FC4751413F67BD23273F54417B14AEA7FD4751411F85EB21273F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447621 - 387843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000700000033333363F14751417B14AEA7263F5441B81E853B174851418FC2F5F8153F54413D0AD7F31348514185EB5188103F5441666666A610485141E17A140E0B3F5441AE47E1CAE447514152B81EB51B3F5441A4703DBAE6475141A4703DEA213F544133333363F14751417B14AEA7263F544101030000000100000007000000AE47E1BA154851419A9999D90F3F54415C8FC2F5184851415C8FC235153F5441D7A3704D19485141EC51B80E153F5441713D0AA7194851417B14AE570E3F54411F85EB011A4851410AD7A380073F5441EC51B86E124851410AD7A3600A3F5441AE47E1BA154851419A9999D90F3F5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AEA7FD4751411F85EB21273F5441136BCCAC004851412CD0D583283F5441C2C8C3250348514180B6B86E293F544132A7AEA705485141566DCC7C2A3F5441DCC11EF205485141DF36604C2A3F5441CE4B8D4B064851415C0E33122A3F54410E25A4AF0B48514168876F90263F5441A8413D2A1B485141FE03B87E1C3F5441C49A517818485141F02C6806183F54418AEE843B17485141CCD7F5F8153F5441502730FF0D485141021A2F0B1A3F5441173AC06D094851413B5DAF0E1C3F5441ED7CC1BFFA47514155584087223F54419FB197EAF7475141E853E9C6233F544108C13463F14751411E65ADA7263F5441E4710B87F44751417499B70E273F5441F92229BCF847514118DAAD27273F54418DA67605FB47514117C60025273F544135EEBC19FC4751413F67BD23273F54417B14AEA7FD4751411F85EB21273F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>511639 - 186437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6285C7F85975041B81E855B7924544185EB51688297504114AE47C1792454417B14AEB779975041295C8F6297245441D7A3706D80975041AE47E19A952454417B14AED782975041CDCCCC6C9524544152B81E2585975041CDCCCC9C95245441F6285CEF8B975041C3F5284C98245441D7A3709D90975041AE47E17A9724544148E17A34939750413D0AD7239624544100000020959750410AD7A3F0942454410000006096975041333333B394245441EC51B83E97975041713D0A577F24544114AE47A19397504114AE47117E245441F6285C9F8D975041CDCCCCAC7B245441F6285C7F85975041B81E855B79245441
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F6285C7F85975041B81E855B79245441A696526882975041109847C17924544118F454D17F975041022DD99582245441C0F873A47A9750419E373E3B94245441652A7E057D975041989A3CD6932454414F89716D80975041897AE09A95245441D546ADD78297504153C0CB6C952454411423AEF183975041CBA1C3839524544152B81E2585975041CDCCCC9C952454413CE4DCAF8B97504145DAC2C297245441F34573EA8C975041006E98F596245441D1587C2D8E9750412C3CDFE79724544175EEEA828E9750417EE4F2D89724544163B04DEF8E975041691A04C697245441E236E2498F9750411D8B31B6972454413EC46F9D90975041ACE7E07A972454410B93509F91975041565176F59624544148E17A34939750413D0AD7239624544119CCBABD9497504175170F2E952454411A060120959750417BD7A2F094245441520B006096975041491D32B3942454416F59A76C96975041A196877C932454413A8F908B9697504183A29C8590245441EE4CB83E9797504189B70A577F245441C3CC48A193975041709548117E2454416BCA5DA4909750411FC7A6E07C245441F6285C9F8D975041CDCCCCAC7B245441F6285C7F85975041B81E855B79245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>448176 - 3886834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703DAA882B5141713D0AD7FF32544148E17A848B2B514114AE4731D73254418FC2F5B8892B51413D0AD713D4325441713D0AD7852B51411F85EB61CF32544166666696822B5141F6285C4FCA325441EC51B8CE802B51415C8FC255C83254410AD7A340792B514148E17AB4C2325441713D0AA7742B51417B14AE27C03254413D0AD7A3722B5141B81E856BBF3254415C8FC2656F2B51418FC2F5A8ED3254417B14AEE7762B5141CDCCCCDCF2325441713D0A87822B514148E17A94FB325441A4703DAA882B5141713D0AD7FF325441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000379D442F8B2B514128F7D2D9FB325441466A2D748D2B514194584A00FE3254410223B89E8D2B5141EBAA21F4FA32544176EF080F902B5141E195410CFA32544114590EC3902B51416DD32F55F63254416F311C18912B5141ECAE85ADF4325441A2644F4B912B51417B717B36F4325441FECAB5F1912B5141E2003EACF2325441B5C0DE8D942B51414867A492EC325441F445CAFF932B51415E67A4D2E83254418D8DABDA912B5141A4F66648E332544139624A38912B514185A2ADAAE132544195B93B88902B51414AD939E7DF32544120BF8E23902B5141C1D95838DF32544184B005178F2B51414B20E365DD325441406495728E2B51411FAD3F48DC32544170025BED8D2B5141C21FD360DB3254412B8C0AB08D2B51417E8E51F6DA3254414750A1838D2B514101AF85ADDA325441ECCEC5418D2B514143C6C636DA3254414750A1638C2B5141A51FC3B7D83254419908C0288C2B51415367A452D8325441EBC0DE8D8B2B514134E2B840D732544148E17A848B2B514114AE4731D73254418FC2F5B8892B51413D0AD713D43254414DE52F70882B51418C8B9027D33254412A7179C5862B51410A065166D33254419780EBE2852B514187DD7710D33254411C3A222E842B5141E161DA9CD03254410DD174E7832B5141892D5471CE325441A86F9D36842B514151BD77DECC32544166666696822B5141F6285C4FCA325441EC51B8CE802B51415C8FC255C83254412F5B7C43792B514149B702B7C23254410AE9BCB0782B5141C77BBA66C2325441B276945A772B5141302C3A3FC2325441198A546A762B5141302C3A3FC232544195ABB4CB742B5141AF293A5EC232544108DD7467722B5141BE23DAA7C232544190DAD0F5702B51411A57EC5FD73254411B416C4E702B5141DF2D0CB3E0325441E3C80DB56F2B51419D9B2E3EE9325441AF1FBA8F6F2B514163147C52EB325441154E9A816F2B514167D4E71BEC32544116DC1473722B51414FAF966EED325441935DE334732B514168AACE58EE325441E5F3849D732B51411706D1B8EF325441DEF4197E742B51415578A11CF0325441F8357539752B51412A4502B3EE3254410B5A2BB3762B514147AE7A67EE325441DD5ED24B7A2B51410CD4DCB3F0325441CA1FE3177A2B5141988D671FF23254414E92F29B792B514100988418F3325441B1532A3B792B51413FEC3D2DF4325441FF4673817B2B5141C9D731ECF53254416A185DB77B2B51418D5B3154F4325441F35EB1CB7D2B5141A366FAE4F132544163586ED17F2B5141524512B7F1325441EE393469822B5141346C4E6DF2325441B516EAAE832B51414F0A103DF4325441C8035992852B5141CAFFA249F5325441D736E486862B5141FC95A76FF632544177001BEB872B514111D92C23F7325441915B173D882B51415F28C14AF732544159DD2CB3882B5141B834A399F73254411361A408892B5141B0E002B9F73254412B4B7634892B5141B0E002B9F7325441379D442F8B2B514128F7D2D9FB325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464026 - 6704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464026 - 57022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449732 - 12953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005000000000000030F81B514114AE47F1A72E554114AE4701FA1B51415C8FC255A32E55419A9999B9F61B5141F6285CBF982E554114AE47E1F51B51411F85EBB1952E554152B81ED5F31B5141F6285C2F922E5541CDCCCC7CF21B514152B81E15902E554133333393F01B514166666666912E5541E17A14FEE91B5141A4703D1A912E5541A4703D2AE61B51419A999939902E55415C8FC2B5E41B5141EC51B89E912E5541C3F5284CE41B514114AE4791922E5541295C8F32E21B51411F85EB61932E55418FC2F518E31B514185EB51E8942E554152B81EC5E11B51413D0AD7B3962E554166666626E01B514114AE47A1962E5541EC51B8BEDE1B5141F6285C6F962E554148E17A24DD1B51417B14AEE7962E554148E17A94DB1B514114AE4731982E554166666686DA1B51419A999999992E55410AD7A3B0D81B5141F6285CCF9A2E5541C3F528BCD61B51415C8FC2659B2E55410AD7A360D31B5141F6285C3F9E2E5541EC51B8AED01B51415C8FC255A12E5541E17A14AECE1B51419A9999E9A12E55417B14AE97CC1B514114AE47D1A52E55415C8FC225C81B5141000000D0A72E554166666656C41B51415C8FC2C5AC2E55417B14AE87BE1B514114AE4711B52E5541AE47E1FABB1B5141713D0A37B92E55417B14AE27B91B5141D7A370ADBD2E5541F6285C2FB61B5141AE47E11AC22E5541CDCCCC8CB21B514114AE4771C82E55410AD7A390B11B51418FC2F568CA2E5541000000B0B01B514114AE4761CC2E554148E17A74B41B514166666666CB2E5541295C8F52B81B51413D0AD7E3CA2E55410AD7A390BB1B51411F85EB51CB2E55410AD7A310BE1B5141000000C0CB2E55410AD7A340C01B5141E17A14DECB2E55418FC2F548C21B514185EB5198CB2E5541000000F0C31B51410AD7A300CB2E5541AE47E1FAC41B5141A4703D9AC92E5541295C8F52C71B51413D0AD763C82E5541295C8F52CC1B51413D0AD7D3C62E5541B81E85BBD11B5141D7A3708DC42E55410AD7A380D51B5141C3F528DCC32E5541CDCCCCFCD61B5141C3F5288CC32E55417B14AE57D91B51418FC2F568C32E5541AE47E16ADC1B51411F85EB21C42E5541295C8FF2E01B514166666676C52E5541295C8FC2E31B514166666626C52E554133333303E81B51419A999969C42E554185EB5158ED1B5141295C8F22C32E55413D0AD723F21B5141D7A3702DC12E554148E17AE4F51B51413D0AD7C3C02E55410AD7A3C0F91B5141E17A144EC02E5541CDCCCCBCFD1B5141000000D0C02E5541F6285C7F001C5141D7A3708DC22E5541713D0A27021C5141C3F5283CC32E5541D7A370BD031C51419A9999C9C32E5541000000B0041C514133333383C32E5541A4703DDA051C514100000080C32E5541D7A3707D061C5141713D0AA7C32E55419A999949071C5141EC51B81EC42E5541AE47E1BA081C514148E17A44C52E5541D7A3704D0B1C514133333363C32E55413D0AD7230C1C5141CDCCCC6CC22E5541D7A370BD0D1C5141EC51B8CEBE2E55411F85EBE10E1C5141295C8F92BC2E5541CDCCCCFC0E1C5141EC51B85EBB2E554185EB5188111C5141295C8F52BB2E554114AE4771101C51419A999929BA2E55413D0AD7830F1C514133333393B92E5541295C8F920B1C5141AE47E16AB72E5541F6285CEF091C5141B81E857BB62E5541B81E856B081C514185EB5108B62E554100000040071C514133333323B62E5541AE47E19AFD1B51418FC2F5D8B32E5541000000D0F41B5141D7A3703DB22E554100000030F81B514114AE47F1A72E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000650968ECC1B51410E6D5CD5A52E5541933B57FDCA1B5141B1B07289A62E554148984467C91B5141057FB33FA72E55415C8FC225C81B5141000000D0A72E5541E27E2799C61B514176EC50D4A92E55415546C538C51B514190F30F9FAB2E55417068F58EC31B5141898FA0E2AD2E5541F33FF973C11B5141872179E4B02E5541CB3A8173C01B51417F4BCB52B22E5541A38B5AE1BF1B5141E5A38B23B32E55418F1A5406BF1B5141877A625CB42E554134B81729BE1B514106A01FABB52E5541AE47E1FABB1B5141713D0A37B92E55412D1617CFBB1B51419960367CB92E55417B14AE27B91B5141D7A370ADBD2E55413F727812B91B5141F3D00ECDBD2E5541047BEA2DB61B5141C0CD651DC22E5541D1A25534B31B51419670304DC72E5541B968F146B21B51419212D1FCC82E5541A6EFEEE2B11B51419B0995C4C92E5541236BB7A7B11B5141CB98DD3ACA2E554168DC1D16B11B51416AD4067CCB2E5541000000B0B01B514114AE4761CC2E5541CDCCCC1CB11B5141AE47E17ACC2E55415834726CB11B51415219C206CD2E5541EC51B87EB11B51413D0AD7A3CD2E5541CDCCCC8CB11B514152B81EF5CD2E554176FEEEF6B11B5141EE86B925CE2E5541EC51B88EB21B5141D7A3700DCE2E5541333333C3B21B514152B81E85CD2E5541DDBC337DB21B51411D74F40FCD2E5541D17BCE00B31B514185DB56EDCC2E5541679F4F3BB31B5141CAFBE614CD2E5541AE47E19AB31B5141E17A14EECC2E5541B81E858BB31B51413D0AD773CC2E55411F85EB11B41B514166666606CC2E5541561442C8B41B5141B131C911CC2E55415C0743A1B41B5141197D5AB0CB2E554143709EA4B21B5141A1242EA6CB2E55411B26C16AB31B514166DEC969C92E5541159FAFE4B31B5141C2B98A09C82E554120D6F68CB51B5141C8E2E541C52E5541D9B0A8A0B71B51410694F89FC12E5541C9090BC5B91B514122E6ABD5BD2E5541CD1C3518BC1B51415293C7BFB92E5541A0200891BF1B5141E70D419CB42E5541BCE657BCC01B5141C36449DBB22E5541EA44C095C11B5141CE9B77C0B12E55410BD6D581C31B5141F6262767AF2E5541D6B8ED58C41B5141B1666C9FAE2E5541086B4E7CC61B514165A0D955AC2E55412FFB5284C81B514173BA8B29AA2E55418893A4EBC91B5141AEE02F31A82E55417C8B7B27CA1B5141A9644413A82E55416D9FDD07CC1B5141B05A1323A72E5541C269E29ACC1B5141CD7F219DA62E554141F234F3CC1B514186F9DB47A62E55410650968ECC1B51410E6D5CD5A52E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449732 - 62689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005000000000000030F81B514114AE47F1A72E554114AE4701FA1B51415C8FC255A32E55419A9999B9F61B5141F6285CBF982E554114AE47E1F51B51411F85EBB1952E554152B81ED5F31B5141F6285C2F922E5541CDCCCC7CF21B514152B81E15902E554133333393F01B514166666666912E5541E17A14FEE91B5141A4703D1A912E5541A4703D2AE61B51419A999939902E55415C8FC2B5E41B5141EC51B89E912E5541C3F5284CE41B514114AE4791922E5541295C8F32E21B51411F85EB61932E55418FC2F518E31B514185EB51E8942E554152B81EC5E11B51413D0AD7B3962E554166666626E01B514114AE47A1962E5541EC51B8BEDE1B5141F6285C6F962E554148E17A24DD1B51417B14AEE7962E554148E17A94DB1B514114AE4731982E554166666686DA1B51419A999999992E55410AD7A3B0D81B5141F6285CCF9A2E5541C3F528BCD61B51415C8FC2659B2E55410AD7A360D31B5141F6285C3F9E2E5541EC51B8AED01B51415C8FC255A12E5541E17A14AECE1B51419A9999E9A12E55417B14AE97CC1B514114AE47D1A52E55415C8FC225C81B5141000000D0A72E554166666656C41B51415C8FC2C5AC2E55417B14AE87BE1B514114AE4711B52E5541AE47E1FABB1B5141713D0A37B92E55417B14AE27B91B5141D7A370ADBD2E5541F6285C2FB61B5141AE47E11AC22E5541CDCCCC8CB21B514114AE4771C82E55410AD7A390B11B51418FC2F568CA2E5541000000B0B01B514114AE4761CC2E554148E17A74B41B514166666666CB2E5541295C8F52B81B51413D0AD7E3CA2E55410AD7A390BB1B51411F85EB51CB2E55410AD7A310BE1B5141000000C0CB2E55410AD7A340C01B5141E17A14DECB2E55418FC2F548C21B514185EB5198CB2E5541000000F0C31B51410AD7A300CB2E5541AE47E1FAC41B5141A4703D9AC92E5541295C8F52C71B51413D0AD763C82E5541295C8F52CC1B51413D0AD7D3C62E5541B81E85BBD11B5141D7A3708DC42E55410AD7A380D51B5141C3F528DCC32E5541CDCCCCFCD61B5141C3F5288CC32E55417B14AE57D91B51418FC2F568C32E5541AE47E16ADC1B51411F85EB21C42E5541295C8FF2E01B514166666676C52E5541295C8FC2E31B514166666626C52E554133333303E81B51419A999969C42E554185EB5158ED1B5141295C8F22C32E55413D0AD723F21B5141D7A3702DC12E554148E17AE4F51B51413D0AD7C3C02E55410AD7A3C0F91B5141E17A144EC02E5541CDCCCCBCFD1B5141000000D0C02E5541F6285C7F001C5141D7A3708DC22E5541713D0A27021C5141C3F5283CC32E5541D7A370BD031C51419A9999C9C32E5541000000B0041C514133333383C32E5541A4703DDA051C514100000080C32E5541D7A3707D061C5141713D0AA7C32E55419A999949071C5141EC51B81EC42E5541AE47E1BA081C514148E17A44C52E5541D7A3704D0B1C514133333363C32E55413D0AD7230C1C5141CDCCCC6CC22E5541D7A370BD0D1C5141EC51B8CEBE2E55411F85EBE10E1C5141295C8F92BC2E5541CDCCCCFC0E1C5141EC51B85EBB2E554185EB5188111C5141295C8F52BB2E554114AE4771101C51419A999929BA2E55413D0AD7830F1C514133333393B92E5541295C8F920B1C5141AE47E16AB72E5541F6285CEF091C5141B81E857BB62E5541B81E856B081C514185EB5108B62E554100000040071C514133333323B62E5541AE47E19AFD1B51418FC2F5D8B32E5541000000D0F41B5141D7A3703DB22E554100000030F81B514114AE47F1A72E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000650968ECC1B51410E6D5CD5A52E5541933B57FDCA1B5141B1B07289A62E554148984467C91B5141057FB33FA72E55415C8FC225C81B5141000000D0A72E5541E27E2799C61B514176EC50D4A92E55415546C538C51B514190F30F9FAB2E55417068F58EC31B5141898FA0E2AD2E5541F33FF973C11B5141872179E4B02E5541CB3A8173C01B51417F4BCB52B22E5541A38B5AE1BF1B5141E5A38B23B32E55418F1A5406BF1B5141877A625CB42E554134B81729BE1B514106A01FABB52E5541AE47E1FABB1B5141713D0A37B92E55412D1617CFBB1B51419960367CB92E55417B14AE27B91B5141D7A370ADBD2E55413F727812B91B5141F3D00ECDBD2E5541047BEA2DB61B5141C0CD651DC22E5541D1A25534B31B51419670304DC72E5541B968F146B21B51419212D1FCC82E5541A6EFEEE2B11B51419B0995C4C92E5541236BB7A7B11B5141CB98DD3ACA2E554168DC1D16B11B51416AD4067CCB2E5541000000B0B01B514114AE4761CC2E5541CDCCCC1CB11B5141AE47E17ACC2E55415834726CB11B51415219C206CD2E5541EC51B87EB11B51413D0AD7A3CD2E5541CDCCCC8CB11B514152B81EF5CD2E554176FEEEF6B11B5141EE86B925CE2E5541EC51B88EB21B5141D7A3700DCE2E5541333333C3B21B514152B81E85CD2E5541DDBC337DB21B51411D74F40FCD2E5541D17BCE00B31B514185DB56EDCC2E5541679F4F3BB31B5141CAFBE614CD2E5541AE47E19AB31B5141E17A14EECC2E5541B81E858BB31B51413D0AD773CC2E55411F85EB11B41B514166666606CC2E5541561442C8B41B5141B131C911CC2E55415C0743A1B41B5141197D5AB0CB2E554143709EA4B21B5141A1242EA6CB2E55411B26C16AB31B514166DEC969C92E5541159FAFE4B31B5141C2B98A09C82E554120D6F68CB51B5141C8E2E541C52E5541D9B0A8A0B71B51410694F89FC12E5541C9090BC5B91B514122E6ABD5BD2E5541CD1C3518BC1B51415293C7BFB92E5541A0200891BF1B5141E70D419CB42E5541BCE657BCC01B5141C36449DBB22E5541EA44C095C11B5141CE9B77C0B12E55410BD6D581C31B5141F6262767AF2E5541D6B8ED58C41B5141B1666C9FAE2E5541086B4E7CC61B514165A0D955AC2E55412FFB5284C81B514173BA8B29AA2E55418893A4EBC91B5141AEE02F31A82E55417C8B7B27CA1B5141A9644413A82E55416D9FDD07CC1B5141B05A1323A72E5541C269E29ACC1B5141CD7F219DA62E554141F234F3CC1B514186F9DB47A62E55410650968ECC1B51410E6D5CD5A52E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968098 - 548942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000700000003115A2C5790F51419EF59FD19F3C55411B9C75A7790F51417F3569A39D3C55412E3A36AD790F514101DC5C309D3C5541C458D9CD790F51414E789EA39A3C554112CE18687B0F5141A57205EE983C554194E71ED07B0F51411A02107F983C5541668740927D0F51416C24EC9E963C55412F10E65D7E0F5141F053705C953C554142D434A07E0F51417422D50F933C5541E5F658937E0F514115F00F318F3C554128FD64007E0F5141AC11DC1C8C3C554127FBEF767D0F5141E806973B893C5541478F6B1A7D0F514138675C4B873C554197C6BA227D0F514111C95073863C554164326F367D0F51412ED6FD72843C5541EF4BCF407D0F5141123E3B65833C5541152DA2DC7D0F51417CB9EFF5803C5541AA6B56EE7D0F5141691D07A47F3C55413E3B8DD67D0F5141F5A046AA7E3C5541A1D52F797D0F51410CF6F1D57A3C5541C9844ED17C0F51416B34C64A763C5541034752CF7B0F514159ED0255703C5541CF16335E7B0F514157FC661F6E3C55412848E3CF7A0F514114F3D7576B3C554160340F50790F51416BC799D8663C554172F8BFE3780F5141FE7498A4653C55418BABC49C760F51414ED2BD2A5F3C5541AEA54509760F5141A3994C875D3C55413D2D8A4E740F51414EEA92B6593C554177069701720F5141F20C11C2543C5541998E0BC8710F51414FAC1BE4533C5541D9DDDCF4700F514123278CB5503C5541ACB05760700F51418B9013F44D3C5541FC65463C6F0F51410D660237493C5541A3563D686E0F5141A14DAA5C463C554172AA03DA6D0F514106DD5356433C5541B562268D6D0F51412201D8B3413C554159316F616D0F5141472DD6C5403C55413147CF146D0F5141546BA8243F3C5541ACEDC6556C0F51411BE211CC3D3C554102A965386A0F51415CA4453C3A3C55412AB454356A0F5141339C1B373A3C5541C8E19838670F51415DD64DCF343C5541503A260F670F5141239B4D84343C55414AE240A5640F514116EB82B02F3C5541C288DA90630F51410638B6872D3C5541FD645D2B610F5141280D2F7D2A3C55419C50957C5F0F5141BFFD1EB5283C554193B3AA5C5E0F5141268A82DB283C5541ECE431A35C0F514137C4571B2B3C554175D0ACBD5B0F51417DA18AEC2B3C55411CBAC63D5B0F5141214DC56F2C3C55414DA63ADD5A0F5141BEAD6EF52C3C55416B8DA1A2580F5141C8DF600B303C554155DEEA09590F514140F8FFD42F3C554158BDE369590F514143D7F834303C55415117766A5A0F5141F5B1FE53323C5541C03D1E5A5B0F514180501AA1333C554123F3116A5C0F51412CF0AE3E353C5541DDA7778B5D0F5141505E040D373C5541E08AE6C65E0F514195719929393C5541CC2447FF5F0F5141CD3540493B3C55418544C6F4600F5141C609CC463D3C5541260F4EC4610F51412E9071F63E3C55415AE07E17630F514100644868423C554149AD96B3630F514185D28311443C5541B69E36DC640F51418C4F9639473C554161EC0478650F51418CC1BED8483C5541567AFA93660F51415077D3C64B3C55416A184D0D670F5141FC89CB164D3C5541B9A87264670F5141EE1610964E3C55419BED67C5670F514194047B40503C554190A27811680F514183A7B4B4513C5541CBA14158680F5141329D557F533C5541E547C988680F51416581C4B9543C5541F3C862A0680F5141EBAB08BF553C55416C6D86B1680F51410C912E28573C5541B5C89DC3680F5141A7DD63A5583C55416EE168C4680F5141C32E9CFE593C5541315A51A0680F5141BE570C845B3C55410137414F680F51418D9CBBEE5E3C55418A0649E9670F5141C579003B633C55416D19F2AC670F5141E0165ACA653C55412A6C9D6B670F51414CE6BBE6683C5541B5F87400670F5141327AFD006E3C55411CBEF1C8660F51418C5BB0A5703C554118A35B87660F5141862AFCBA733C554137FCFF34660F5141D0B74192773C5541BF3AEA88660F5141248503097B3C5541F021233C660F51417501EEDB7E3C55418E53B1D5660F51419875985B833C55419132AA35670F51414E9FEDF4863C5541128224D5670F51415C5B710C8C3C55419612AB71690F5141CF7C4B24903C554186BC25B26A0F51419A5AB632933C55416DBBBB1A6C0F51410189E099963C554189DC51A56D0F514114BD872B9A3C5541C2DCF81F6F0F5141775456599D3C55419A886EA4700F5141B6C90B6AA03C5541A3446F31720F514110C70E3EA33C5541C66409BE730F51413FBF7FD3A53C554126C8D14E750F51416FB45207A83C5541AFEA549C760F514141AE82DCA93C55414030E1B4770F51417CF32F67AB3C55417EF7F753790F5141762F23AFAD3C55418E2CA27A7A0F5141B2FE3905AE3C55415B6670677A0F514144F6F25EAC3C5541BB707D4D7A0F51411213FAA2A93C554193BDAD1D7A0F5141B4A0772EA63C5541CBCCF8F2790F51413F3A6418A33C55417DFEF9E1790F51419D51FADDA13C55413115A2C5790F51419EF59FD19F3C5541
+</a>
+
+<b>
+0106000000010000000103000000010000009B000000B7DB408F650F51418B9918F82B3C5541EDBF900F610F5141BCB393EB273C5541C779DC6F5E0F51418479FBE1273C5541142F80365B0F51411171B43B263C5541BDF4A3A3560F514167C34222243C5541CD4E5F3D520F51412BF89C37223C554192BFF2CA4F0F51412685FDC2263C55414D9E1455520F51419D9BC977293C554103C4B6F9550F514147DD152F2D3C55416B8DA1A2580F5141C8DF600B303C5541DCBEC25C5B0F5141D912E0442C3C5541ECE431A35C0F514137C4571B2B3C554193B3AA5C5E0F5141268A82DB283C55419C50957C5F0F5141BFFD1EB5283C554144032DE9600F51419DC16B2B2A3C55417C8ACC75630F51417A3B9A512D3C5541503A260F670F5141239B4D84343C55412AB454356A0F5141339C1B373A3C5541B3B4BB0E6D0F51414F3193033F3C5541A3563D686E0F5141A14DAA5C463C554193F8BEC16F0F51411326BE024B3C5541D9DDDCF4700F514123278CB5503C554177069701720F5141F20C11C2543C55419D2FB8E7750F5141E251E2275D3C5541B9C42FB47A0F5141E76156CD6A3C5541512315347C0F5141E13AD14C723C5541980833677D0F51412E8D13197A3C55413CFBC1007E0F5141E1807065803C5541EF4BCF407D0F5141123E3B65833C5541478F6B1A7D0F514138675C4B873C554188AAB4C07E0F514122E25824903C5541DFED509A7E0F51414ED54E97933C55418D74894D7E0F514132E326D7953C5541C458D9CD790F51414E789EA39A3C55411B9C75A7790F51417F3569A39D3C55411008CC8D7A0F5141B502A848AE3C554152B81EC57E0F5141C3F528ACB43C5541AE47E1EA7E0F5141C3F5287CAD3C5541D7A3702D7F0F5141CDCCCC0CA63C554166666656810F5141B81E85BB9D3C5541C3F5283C830F5141CDCCCCEC963C55411F85EBA1840F5141A4703D2A8D3C5541713D0A07870F5141A4703DAA873C554114AE4781890F5141D7A3704D833C5541EC51B85E8E0F51417B14AEA77E3C5541713D0AF7910F5141EC51B86E7A3C554166666676920F5141AE47E16A793C5541C3F5287C930F5141EC51B8CE763C5541E17A147E950F5141C3F528BC6F3C55415C8FC295950F51417B14AE476F3C554185EB51A8950F5141713D0AB76E3C5541C3F528AC950F51419A9999696D3C5541295C8FE2950F5141F6285C0F6B3C55418FC2F538950F5141A4703DDA683C55417B14AE67940F5141E17A140E653C5541B81E85EB930F514148E17A14623C55418FC2F598930F514148E17AE45F3C55410AD7A310930F51418FC2F5285C3C5541AE47E1DA920F514133333373583C5541713D0A27920F51419A9999E9513C55411F85EB31900F5141000000904A3C5541F6285CDF8B0F5141713D0A57443C554185EB51B88A0F51415C8FC2C5413C55418FC2F5888A0F5141295C8FF2403C554114AE47218A0F5141A4703D0A3F3C55411F85EBE1890F51419A9999193E3C5541EC51B8CE890F514152B81E153D3C5541333333D3890F514185EB51B83C3C55415C8FC2F5890F5141B81E858B3C3C5541333333F3890F51418FC2F5583C3C5541EC51B8FE890F5141C3F528BC3B3C554148E17A348A0F5141B81E853B3B3C554152B81E758A0F5141B81E85CB3A3C5541666666E68A0F5141D7A3706D3A3C554114AE47318B0F514185EB51E8393C5541713D0A778B0F5141EC51B85E393C55415C8FC2B58B0F51419A9999A9383C55413D0AD7B38B0F5141AE47E12A383C5541C3F5286C8B0F51410AD7A3F0363C5541B81E853B8B0F5141CDCCCCFC353C5541295C8F028C0F5141AE47E1CA353C5541D7A3709D8C0F5141C3F5288C353C5541A4703DEA8C0F5141E17A143E353C55418FC2F5588D0F51411F85EBD1343C5541666666A68D0F514166666666343C5541EC51B8DE8D0F51419A9999E9333C55415C8FC2158E0F5141EC51B85E333C55417B14AE278E0F514148E17AE4323C55411F85EB118E0F5141E17A146E323C5541E17A14EE8D0F51417B14AEF7313C55410AD7A3A08D0F5141D7A3702D313C5541333333438D0F514100000060303C5541D7A370ED8C0F5141333333B32F3C5541E17A144E8C0F514114AE47B12E3C55415C8FC2C58B0F514148E17A042E3C55417B14AE678B0F51410AD7A3A02D3C55418FC2F5088B0F5141000000502D3C554148E17AC48A0F5141295C8FD22C3C554148E17A948A0F51418FC2F5682C3C5541AE47E17A8A0F51419A9999B92B3C5541CDCCCC7C8A0F5141666666162B3C55417B14AE978A0F5141EC51B81E2A3C55411F85EBD18A0F5141D7A370ED283C55418FC2F5688B0F51411F85EBA1253C5541295C8F628B0F51417B14AEA7223C5541B81E85EB890F5141EC51B8AE1D3C554148E17A74880F5141D7A3705D173C55414EC66440830F5141EBE41FBA0E3C5541E681FAB37D0F514153E3EA2D063C5541D059A7807F0F5141DB4002FB013C55418FE1ADE6840F514117EF2608FD3B5541CB8FD2F37F0F51411282026FF63B55417973BB9A780F51410C15DED5EF3B55413BAF8DFA740F5141F5833A2EF73B55417264D5B0710F51411AEC8EB4FD3B5541936BBFB4700F5141C4A36516FF3B554130CF8B66690F5141A08305C6023C554107626088630F514191E4F3BB053C5541B81E85EB5A0F5141EC51B8DE073C5541C72A9859530F51419C1A23060E3C55414C1A6F9F4B0F51418942434E143C5541A4703D3A4A0F51410AD7A370153C5541C24CD6714C0F5141E335B74C173C5541A7D716BB500F51410A3124E2143C5541B127B627520F5141C7089614143C55416FB08343560F51415DBD3360133C5541181037765D0F514131CA3DED0F3C5541B06E1CF65E0F5141000D73ED0C3C5541D6973DDC620F51411635C6200B3C55418A8B9A28690F514183A0B52D093C5541F73C294E750F51411CFF9AAD0A3C554169153DF4790F514194A183E00E3C55418974894D7E0F5141F61B19E0143C55413231ED737E0F5141FB883D791B3C554168153DF4790F51417EBFCFC51E3C5541C57F5E4E720F5141E03965C5243C5541B5C42FB47A0F5141377D019F243C55414232BB26840F5141842CF45E253C554127409366860F514148211F5E313C5541DB90A0A6850F514168806BB7353C5541C5C5FD66800F5141A4D1DFD0373C5541DBED509A7E0F5141DA587F5D3A3C5541734C361A800F51418982071D413C5541B5677FC0810F514194B90043473C5541539039CD820F51412DBB35CF4F3C554132D43C80850F51413DBC0382553C5541FBEFECFF890F5141A4A3BD1A623C5541179C75A7790F51414D602141623C554158146F41740F514184A121B5563C5541AA8D368E740F514111C90D0F523C554118F9259B720F5141C676CB424A3C5541C77F5E4E720F51418A82071D413C554196C2934E6F0F51419B3D36B7383C554123EA7FA86A0F51418A3C6804333C5541B7DB408F650F51418B9918F82B3C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452164 - 3158771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D2A26285141D7A3704DC73755419A9999292C285141F6285C2FBA375541AE47E17A2A2851418FC2F548BA375541AE47E1EA242851417B14AE07B9375541666666761E28514152B81EF5B1375541B81E85CB1B28514166666606AF375541F6285C3F1A285141E17A144EB2375541666666C6152851417B14AEC7BB375541CDCCCCBC112851417B14AEF7C43755410AD7A3B00D28514100000080CD375541E17A141E092851419A999959D4375541C3F5285C0428514166666666DA37554114AE47F1FE2751411F85EB31E037554100000020F9275141D7A3702DE5375541C3F528FCF0275141295C8FC2EB37554148E17A14EA2751419A9999A9F1375541D7A3707DEF2751413D0AD7E3F53755418FC2F518F42751418FC2F578F93755415C8FC215F92751410AD7A300FE375541713D0A0701285141666666560738554166666696052851419A9999C90B3855415C8FC2750C28514185EB5148F337554114AE47A114285141295C8FC2F4375541D7A3702D1F2851415C8FC295D6375541A4703D2A26285141D7A3704DC7375541
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000EEB55E59242851419BBE817B06385541E7D51E5627285141D5D47D96003855413A7BD3A12A2851414E51AE15FA375541F47193ED2B2851410B641187F73755413D211D7A302851415FEE2F8DEE37554187C23B013228514109CE6C89EB375541135B9629342851415D6C8347E7375541746809CD35285141E6B9D90BE43755412F3ECF3437285141043AF145E1375541238014E138285141399CDFF8DD3755416E057B323A285141B6511C5FDB3755419B142A293B285141B7DA5978D93755416E851EBA3A285141F4EF8203D93755415C0E5ACE39285141F68F6E38D8375541CCDB4574372851411BF1D331D6375541B7BFC55534285141D8FE0882D3375541263DA209332851416014F263D23755415CAE93AF2B2851414B56D30ECC375541A85691B32928514164C13F59CA3755414135D92926285141FFDB4B4EC73755418AF96FDC24285141549C8127CA37554149C2468A22285141D5F2013BCF375541E0EACAE52028514181EEA7D2D237554117483A1E20285141D2E62087D43755416FC776EF1E285141A1AF1047D73755412F9BE7451E28514136DB262CD9375541FF2684FB1C285141A57759DDDC37554196224AF11B2851419E14FDD6DF375541819933FE1A285141B2656E8EE2375541EB56DDB619285141D21DE636E63755418BB09E9817285141FC6F3046EC375541B56299AE14285141F6A734CCF4375541057A722A14285141971B244BF737554130F0753814285141ADB9A043F937554125672D1F172851416F302B74FB3755410940680D18285141F91C5F46FC3755416A7BAD2519285141DF7FC3DCFD3755417105D7CD192851411CCF2E8FFF3755416A7BAD2519285141646DD83D023855418318498F172851414DD03CD403385541FEF02911172851410F47C70406385541A43F0EA116285141AED177CF0838554114C9B02615285141D9477BDD08385541BA1795B61428514121E6248C0B385541F766006916285141CEBE32C40B38554163F1837D1828514150213DEE0B38554166B698D118285141D582668908385541B6DE6B281C28514157E570B3083855413FCB9FFA1C2851419434DC650A385541CB7CE8201E28514145D2FEF10A385541FD7C15D71E285141EEE5F7D50A38554129F318E51E2851413A83C0F509385541FD7C15D71E28514157E570B30838554183A434551F28514149D11D6307385541E11A651920285141C3A9FEE406385541BC2E8BB32028514174472171073855418918B846212851415BA8CF77083855417191C2932128514137BEABA10938554117E0A62321285141CEBE32C40B38554114D37B9E2128514167D98EDE0B385541EEB55E59242851419BBE817B06385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452164 - 3565551
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D2A26285141D7A3704DC73755419A9999292C285141F6285C2FBA375541AE47E17A2A2851418FC2F548BA375541AE47E1EA242851417B14AE07B9375541666666761E28514152B81EF5B1375541B81E85CB1B28514166666606AF375541F6285C3F1A285141E17A144EB2375541666666C6152851417B14AEC7BB375541CDCCCCBC112851417B14AEF7C43755410AD7A3B00D28514100000080CD375541E17A141E092851419A999959D4375541C3F5285C0428514166666666DA37554114AE47F1FE2751411F85EB31E037554100000020F9275141D7A3702DE5375541C3F528FCF0275141295C8FC2EB37554148E17A14EA2751419A9999A9F1375541D7A3707DEF2751413D0AD7E3F53755418FC2F518F42751418FC2F578F93755415C8FC215F92751410AD7A300FE375541713D0A0701285141666666560738554166666696052851419A9999C90B3855415C8FC2750C28514185EB5148F337554114AE47A114285141295C8FC2F4375541D7A3702D1F2851415C8FC295D6375541A4703D2A26285141D7A3704DC7375541
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000EEB55E59242851419BBE817B06385541E7D51E5627285141D5D47D96003855413A7BD3A12A2851414E51AE15FA375541F47193ED2B2851410B641187F73755413D211D7A302851415FEE2F8DEE37554187C23B013228514109CE6C89EB375541135B9629342851415D6C8347E7375541746809CD35285141E6B9D90BE43755412F3ECF3437285141043AF145E1375541238014E138285141399CDFF8DD3755416E057B323A285141B6511C5FDB3755419B142A293B285141B7DA5978D93755416E851EBA3A285141F4EF8203D93755415C0E5ACE39285141F68F6E38D8375541CCDB4574372851411BF1D331D6375541B7BFC55534285141D8FE0882D3375541263DA209332851416014F263D23755415CAE93AF2B2851414B56D30ECC375541A85691B32928514164C13F59CA3755414135D92926285141FFDB4B4EC73755418AF96FDC24285141549C8127CA37554149C2468A22285141D5F2013BCF375541E0EACAE52028514181EEA7D2D237554117483A1E20285141D2E62087D43755416FC776EF1E285141A1AF1047D73755412F9BE7451E28514136DB262CD9375541FF2684FB1C285141A57759DDDC37554196224AF11B2851419E14FDD6DF375541819933FE1A285141B2656E8EE2375541EB56DDB619285141D21DE636E63755418BB09E9817285141FC6F3046EC375541B56299AE14285141F6A734CCF4375541057A722A14285141971B244BF737554130F0753814285141ADB9A043F937554125672D1F172851416F302B74FB3755410940680D18285141F91C5F46FC3755416A7BAD2519285141DF7FC3DCFD3755417105D7CD192851411CCF2E8FFF3755416A7BAD2519285141646DD83D023855418318498F172851414DD03CD403385541FEF02911172851410F47C70406385541A43F0EA116285141AED177CF0838554114C9B02615285141D9477BDD08385541BA1795B61428514121E6248C0B385541F766006916285141CEBE32C40B38554163F1837D1828514150213DEE0B38554166B698D118285141D582668908385541B6DE6B281C28514157E570B3083855413FCB9FFA1C2851419434DC650A385541CB7CE8201E28514145D2FEF10A385541FD7C15D71E285141EEE5F7D50A38554129F318E51E2851413A83C0F509385541FD7C15D71E28514157E570B30838554183A434551F28514149D11D6307385541E11A651920285141C3A9FEE406385541BC2E8BB32028514174472171073855418918B846212851415BA8CF77083855417191C2932128514137BEABA10938554117E0A62321285141CEBE32C40B38554114D37B9E2128514167D98EDE0B385541EEB55E59242851419BBE817B06385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452491 - 6388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000400000034000000F6285CFFD23151410AD7A33024285541E17A14DECF315141000000202528554152B81E65C7315141713D0A8724285541A4703D6AC1315141AE47E1BA2328554185EB5108BC3151411F85EB2123285541C3F5281CBA315141F6285C8F20285541E17A14BEB3315141AE47E12A1F285541B81E85CBAC315141666666A61D28554185EB5198AA315141AE47E12A1D285541E17A145EA8315141F6285CAF1C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C2855413D0AD7539F315141F6285C8F1C2855413333330398315141AE47E10A1D285541E17A141E963151417B14AE971D28554185EB512894315141CDCCCC6C1E28554114AE476192315141666666861F2855410AD7A3D0903151411F85EBD120285541000000A08A315141666666A62928554152B81E75803151419A99995938285541D7A370AD75315141333333933F28554166666686773151413D0AD72344285541B81E85AB7C315141D7A370CD4E285541333333937D315141A4703D7A4F285541EC51B8DE7E315141713D0AA74F28554152B81E55813151417B14AE774F285541AE47E1FA82315141333333334F285541713D0A0783315141666666864E285541000000B0833151411F85EB714E28554185EB51E8833151415C8FC2854F285541713D0AB786315141333333F34E2855413D0AD7438C315141333333434E2855413D0AD79397315141C3F5280C4C285541F6285CCF9B315141B81E852B4B2855418FC2F508AD3151419A999999472855415C8FC295B031514114AE471147285541EC51B8DEAF3151413333335344285541D7A3708DB53151410AD7A3A043285541C3F5283CBB31514114AE47A14228554148E17A84C0315141295C8FA24128554114AE4701C4315141C3F5283C4128554133333363C93151413D0AD7A33F2855415C8FC245CE315141F6285CBF3D285541D7A3705DD03151418FC2F5A83928554152B81EC5CE3151417B14AE77372855411F85EB11CF315141AE47E17A33285541295C8F12D2315141AE47E1EA3128554148E17A74D2315141666666162D28554185EB51D8D2315141E17A143E2A2855418FC2F588D33151417B14AE67272855413D0AD753D431514152B81EE524285541F6285CFFD23151410AD7A330242855410F0000005C8FC2B5A33151413D0AD71334285541295C8F82A331514185EB514832285541F6285C4FA33151410AD7A33030285541D7A3709DA1315141C3F528CC2D2855415C8FC2859F3151410AD7A3802C2855413D0AD7D39D31514148E17A342B28554148E17A549D3151416666663629285541D7A370ED9D315141EC51B89E262855411F85EB51A03151411F85EB2123285541713D0A47AD31514185EB510823285541D7A370ADAD315141A4703D3A24285541D7A370ADAD3151419A999969292855411F85EB61AC31514114AE47812B285541A4703D1AA63151410AD7A3E0332855415C8FC2B5A33151413D0AD7133428554146000000B81E857BCB31514114AE47B12F28554152B81E15CB315141F6285C7F2D28554166666696C9315141C3F528CC2D28554152B81E65C7315141B81E85CB2E285541A4703D9AC43151410AD7A33030285541F6285C4FC231514166666696302855417B14AE37C0315141295C8F62312855415C8FC285BE3151417B14AE4733285541713D0A07BD315141333333933428554152B81E55BB315141F6285C5F35285541C3F5280CB7315141713D0A473428554148E17A74B4315141333333933428554100000010B2315141333333133528554148E17AC4B031514152B81EC53628554133333393AE315141A4703D2A3828554185EB51C8AB315141713D0AF73728554166666696AA3151410AD7A3103828554114AE47B1A8315141D7A370DD372855410AD7A300A631514152B81EC536285541AE47E11AA53151417B14AE773728554133333383A231514114AE47413B28554148E17A04A1315141333333733C285541295C8F529F31514148E17A743B28554114AE47A19D315141F6285C8F392855418FC2F5089C3151418FC2F5A839285541713D0AD799315141EC51B88E3A2855410000004097315141B81E855B3A28554152B81EF5943151410AD7A3C03B2855410AD7A31092315141666666A63C285541E17A14FE89315141A4703D0A402855415C8FC2658831514152B81E554228554166666666873151419A99993944285541AE47E11A863151413D0AD7D343285541CDCCCC4C87315141B81E853B4228554185EB5118893151417B14AE573F28554148E17AC491315141713D0AA73B28554185EB51A894315141AE47E1DA3A285541333333F3963151415C8FC27539285541713D0AD799315141F6285C8F39285541F6285CEF9B3151410000009038285541A4703D3A9E3151416666667638285541295C8FD29F31514152B81E753A285541E17A141EA131514148E17A743B2855413D0AD703A2315141B81E855B3A285541F6285CCFA331514185EB517836285541A4703D9AA5315141F6285C5F3528554152B81EE5A73151418FC2F5F835285541D7A370FDA9315141E17A14DE36285541F6285CAFAB31514152B81EC536285541CDCCCC2CAE3151417B14AEF736285541EC51B8DEAF3151411F85EB113628554114AE4791B0315141CDCCCCAC3428554100000010B2315141A4703DFA3328554148E17A74B431514114AE4761332855418FC2F558B731514148E17A1433285541C3F5283CBB315141713D0A473428554114AE47A1BC31514148E17A94332855419A9999B9BD3151411F85EB613228554185EB5138BF315141D7A3707D3028554166666636C231514148E17A642F285541E17A144EC431514152B81EE52E2855415C8FC2E5C6315141295C8FB22D285541B81E85FBCA315141A4703D1A2C285541D7A370ADCC31514148E17AB42B2855411F85EB11CF31514148E17A342B285541713D0AF7D0315141713D0A672C28554100000010D1315141EC51B87E2E28554185EB5178CF315141000000303128554100000060CD315141CDCCCCFC30285541B81E857BCB31514114AE47B12F2855410B0000000AD7A310923151419A999989402855413D0AD77396315141E17A143E3F285541295C8FF2973151410000007040285541EC51B8BE983151413D0AD7D343285541C3F5280C98315141AE47E16A462855411F85EBC194315141A4703D6A47285541CDCCCCAC8F315141A4703D6A47285541EC51B82E8D31514152B81E054628554152B81E158D315141713D0A87432855410AD7A3608E31514152B81ED5412855410AD7A310923151419A99998940285541
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000007EE36D36A731514104D30A901C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C285541DA7D9CA69D3151414F0DACAB1C2855413333330398315141AE47E10A1D28554155F915EF96315141F5C7045B1D2855418A98C0C096315141B76577681D285541523AC3799631514167FD117D1D285541AA6C735696315141E2AD51871D285541DA8D119E95315141135D0DCE1D285541C18C119E953151418B5D0DCE1D2855414E64411094315141FD38B17B1E2855417A211924933151414061D60D1F285541C64EBA369231514195679CA91F2855410AD7A3D0903151411F85EBD1202855415E70803992315141CCF09B2322285541AAC10F2794315141280D166F1F2855416114EBBA95315141CC6328A51E285541F1D764D59731514171BA3ADB1D285541F9D32D339A315141351E93B91D2855415C79E45A9D315141351E93B91D28554180040F329F31514171BA3ADB1D285541BF1E9B82A031514171BA3ADB1D2855410BB3D45FA5315141AD56E2FC1D285541F3A15715A7315141E8F2891E1E2855417EE36D36A731514104D30A901C285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452491 - 59990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000400000034000000F6285CFFD23151410AD7A33024285541E17A14DECF315141000000202528554152B81E65C7315141713D0A8724285541A4703D6AC1315141AE47E1BA2328554185EB5108BC3151411F85EB2123285541C3F5281CBA315141F6285C8F20285541E17A14BEB3315141AE47E12A1F285541B81E85CBAC315141666666A61D28554185EB5198AA315141AE47E12A1D285541E17A145EA8315141F6285CAF1C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C2855413D0AD7539F315141F6285C8F1C2855413333330398315141AE47E10A1D285541E17A141E963151417B14AE971D28554185EB512894315141CDCCCC6C1E28554114AE476192315141666666861F2855410AD7A3D0903151411F85EBD120285541000000A08A315141666666A62928554152B81E75803151419A99995938285541D7A370AD75315141333333933F28554166666686773151413D0AD72344285541B81E85AB7C315141D7A370CD4E285541333333937D315141A4703D7A4F285541EC51B8DE7E315141713D0AA74F28554152B81E55813151417B14AE774F285541AE47E1FA82315141333333334F285541713D0A0783315141666666864E285541000000B0833151411F85EB714E28554185EB51E8833151415C8FC2854F285541713D0AB786315141333333F34E2855413D0AD7438C315141333333434E2855413D0AD79397315141C3F5280C4C285541F6285CCF9B315141B81E852B4B2855418FC2F508AD3151419A999999472855415C8FC295B031514114AE471147285541EC51B8DEAF3151413333335344285541D7A3708DB53151410AD7A3A043285541C3F5283CBB31514114AE47A14228554148E17A84C0315141295C8FA24128554114AE4701C4315141C3F5283C4128554133333363C93151413D0AD7A33F2855415C8FC245CE315141F6285CBF3D285541D7A3705DD03151418FC2F5A83928554152B81EC5CE3151417B14AE77372855411F85EB11CF315141AE47E17A33285541295C8F12D2315141AE47E1EA3128554148E17A74D2315141666666162D28554185EB51D8D2315141E17A143E2A2855418FC2F588D33151417B14AE67272855413D0AD753D431514152B81EE524285541F6285CFFD23151410AD7A330242855410F0000005C8FC2B5A33151413D0AD71334285541295C8F82A331514185EB514832285541F6285C4FA33151410AD7A33030285541D7A3709DA1315141C3F528CC2D2855415C8FC2859F3151410AD7A3802C2855413D0AD7D39D31514148E17A342B28554148E17A549D3151416666663629285541D7A370ED9D315141EC51B89E262855411F85EB51A03151411F85EB2123285541713D0A47AD31514185EB510823285541D7A370ADAD315141A4703D3A24285541D7A370ADAD3151419A999969292855411F85EB61AC31514114AE47812B285541A4703D1AA63151410AD7A3E0332855415C8FC2B5A33151413D0AD7133428554146000000B81E857BCB31514114AE47B12F28554152B81E15CB315141F6285C7F2D28554166666696C9315141C3F528CC2D28554152B81E65C7315141B81E85CB2E285541A4703D9AC43151410AD7A33030285541F6285C4FC231514166666696302855417B14AE37C0315141295C8F62312855415C8FC285BE3151417B14AE4733285541713D0A07BD315141333333933428554152B81E55BB315141F6285C5F35285541C3F5280CB7315141713D0A473428554148E17A74B4315141333333933428554100000010B2315141333333133528554148E17AC4B031514152B81EC53628554133333393AE315141A4703D2A3828554185EB51C8AB315141713D0AF73728554166666696AA3151410AD7A3103828554114AE47B1A8315141D7A370DD372855410AD7A300A631514152B81EC536285541AE47E11AA53151417B14AE773728554133333383A231514114AE47413B28554148E17A04A1315141333333733C285541295C8F529F31514148E17A743B28554114AE47A19D315141F6285C8F392855418FC2F5089C3151418FC2F5A839285541713D0AD799315141EC51B88E3A2855410000004097315141B81E855B3A28554152B81EF5943151410AD7A3C03B2855410AD7A31092315141666666A63C285541E17A14FE89315141A4703D0A402855415C8FC2658831514152B81E554228554166666666873151419A99993944285541AE47E11A863151413D0AD7D343285541CDCCCC4C87315141B81E853B4228554185EB5118893151417B14AE573F28554148E17AC491315141713D0AA73B28554185EB51A894315141AE47E1DA3A285541333333F3963151415C8FC27539285541713D0AD799315141F6285C8F39285541F6285CEF9B3151410000009038285541A4703D3A9E3151416666667638285541295C8FD29F31514152B81E753A285541E17A141EA131514148E17A743B2855413D0AD703A2315141B81E855B3A285541F6285CCFA331514185EB517836285541A4703D9AA5315141F6285C5F3528554152B81EE5A73151418FC2F5F835285541D7A370FDA9315141E17A14DE36285541F6285CAFAB31514152B81EC536285541CDCCCC2CAE3151417B14AEF736285541EC51B8DEAF3151411F85EB113628554114AE4791B0315141CDCCCCAC3428554100000010B2315141A4703DFA3328554148E17A74B431514114AE4761332855418FC2F558B731514148E17A1433285541C3F5283CBB315141713D0A473428554114AE47A1BC31514148E17A94332855419A9999B9BD3151411F85EB613228554185EB5138BF315141D7A3707D3028554166666636C231514148E17A642F285541E17A144EC431514152B81EE52E2855415C8FC2E5C6315141295C8FB22D285541B81E85FBCA315141A4703D1A2C285541D7A370ADCC31514148E17AB42B2855411F85EB11CF31514148E17A342B285541713D0AF7D0315141713D0A672C28554100000010D1315141EC51B87E2E28554185EB5178CF315141000000303128554100000060CD315141CDCCCCFC30285541B81E857BCB31514114AE47B12F2855410B0000000AD7A310923151419A999989402855413D0AD77396315141E17A143E3F285541295C8FF2973151410000007040285541EC51B8BE983151413D0AD7D343285541C3F5280C98315141AE47E16A462855411F85EBC194315141A4703D6A47285541CDCCCCAC8F315141A4703D6A47285541EC51B82E8D31514152B81E054628554152B81E158D315141713D0A87432855410AD7A3608E31514152B81ED5412855410AD7A310923151419A99998940285541
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000007EE36D36A731514104D30A901C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C285541DA7D9CA69D3151414F0DACAB1C2855413333330398315141AE47E10A1D28554155F915EF96315141F5C7045B1D2855418A98C0C096315141B76577681D285541523AC3799631514167FD117D1D285541AA6C735696315141E2AD51871D285541DA8D119E95315141135D0DCE1D285541C18C119E953151418B5D0DCE1D2855414E64411094315141FD38B17B1E2855417A211924933151414061D60D1F285541C64EBA369231514195679CA91F2855410AD7A3D0903151411F85EBD1202855415E70803992315141CCF09B2322285541AAC10F2794315141280D166F1F2855416114EBBA95315141CC6328A51E285541F1D764D59731514171BA3ADB1D285541F9D32D339A315141351E93B91D2855415C79E45A9D315141351E93B91D28554180040F329F31514171BA3ADB1D285541BF1E9B82A031514171BA3ADB1D2855410BB3D45FA5315141AD56E2FC1D285541F3A15715A7315141E8F2891E1E2855417EE36D36A731514104D30A901C285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464090 - 4493802
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000006A000000000000F0EFA4504185EB5128BA335441B81E85DBF1A450418FC2F548B9335441C3F528BCF4A45041295C8FC2B8335441D7A370BDF6A4504114AE47C1B6335441A4703DEAF6A45041295C8F72B5335441F6285C7FF8A4504114AE47C1B1335441C3F5281C04A5504152B81ED5B13354411F85EB2108A5504133333393A2335441AE47E18A00A55041C3F5286CA23354410AD7A300FBA45041A4703DBAA233544185EB5148F7A45041A4703DBAA233544114AE4701F1A4504114AE4751A53354418FC2F548F0A45041CDCCCCCC9B335441713D0A87EDA450418FC2F5588E335441E17A142EEAA45041EC51B8AE853354417B14AEB7E5A45041C3F5282C84335441295C8F72E5A45041713D0A07843354413D0AD773E4A45041A4703D9A863354413D0AD703E4A45041C3F5286C88335441B81E853BE4A45041C3F528BC89335441D7A370DDE4A45041AE47E12A8B33544152B81EF5E5A45041CDCCCC8C8C335441CDCCCC2CE6A450410AD7A3D08D335441C3F528DCE5A4504114AE47918E33544166666616E4A45041D7A3709D8E335441AE47E17AE3A45041295C8F328F3354411F85EB61E3A4504185EB51889033544114AE4781E3A45041B81E853B92335441E17A14DEE3A450416666662694335441E17A14DEE3A450419A99996995335441000000A0E3A45041333333439633544166666636E3A45041295C8FD296335441EC51B8FEE2A45041EC51B84E97335441F6285CDFE2A450417B14AED797335441D7A3701DE3A45041295C8FE298335441F6285CBFE3A45041C3F5280C9B3354418FC2F528E4A45041333333D39B335441E17A14BEE4A45041D7A3701D9C335441CDCCCCBCE5A45041B81E855B9C3354411F85EBC1E6A4504185EB51689C335441CDCCCC7CE7A45041333333039D33544152B81E05E8A450417B14AE279E3354411F85EB81E8A4504185EB51E89E3354415C8FC235E9A4504185EB51E89E335441B81E85EBE9A4504152B81EF59E33544100000060EAA4504185EB51A89F3354417B14AE87EBA4504148E17A24A233544114AE4701EBA45041EC51B8AEA3335441F6285C9FE9A4504114AE4771A43354413D0AD763E7A4504114AE4771A4335441713D0AE7E5A4504133333313A433544148E17AB4E4A45041F6285CEFA33354418FC2F548E3A450419A999999A3335441F6285C8FE2A45041F6285C6FA43354415C8FC2D5E1A450410AD7A330A63354413D0AD763E1A450411F85EB31A8335441713D0A07E1A450411F85EB41AA335441F6285CFFE0A45041F6285C2FAC3354410AD7A3B0E1A45041713D0A57AF335441D7A3709DE2A450417B14AEC7B0335441E17A14FEE2A45041713D0A97B23354410AD7A380E2A450410AD7A300B53354411F85EB61E1A45041F6285C3FB533544185EB51B8DFA4504166666676B83354418FC2F5B8DEA45041D7A3703DB9335441D7A3700DDEA45041A4703D1ABA33544166666636DDA450419A999929BB335441CDCCCC9CDBA4504114AE4741BC3354419A999909DBA4504100000080BD3354413D0AD7B3DAA4504148E17A14BF335441D7A370FDDAA450413D0AD783C0335441E17A146EDBA45041713D0AE7C1335441666666C6DBA4504133333323C3335441C3F5288CDCA4504152B81E45C43354413D0AD7D3DBA45041295C8FC2C5335441CDCCCC0CD9A4504114AE47F1C633544152B81E95D6A4504133333353C6335441A4703D9AD3A450417B14AEF7C4335441B81E858BCEA45041D7A3706DD5335441F6285CDFD9A45041B81E853BDB335441666666C6E0A45041E17A14FEDE3354419A9999B9E9A450415C8FC2E5E33354418FC2F5E8F4A45041D7A370FDE83354411F85EB31F6A45041713D0A47E6335441A4703D3AFDA4504185EB5178E8335441F6285C9FFEA450413D0AD7E3E133544114AE47C1F7A450410AD7A340E133544148E17A44F5A45041B81E854BE0335441D7A370BDF4A450411F85EB71E1335441E17A141EF4A450419A999929E2335441F6285CDFF2A450411F85EB41E23354419A9999B9F1A45041EC51B8AEE1335441C3F5287CF1A45041CDCCCC7CE03354419A9999B9F1A450413D0AD793DF335441CDCCCC4CF2A45041A4703D7ADE3354418FC2F558F2A45041D7A3703DD533544114AE47B1F4A4504114AE4731D53354411F85EB11F4A4504185EB51D8D233544185EB51C8F3A45041CDCCCC8CD0335441A4703D2AF4A4504185EB51F8CE33544100000080F4A450413D0AD783CC33544100000030F3A450415C8FC295C7335441AE47E12AF1A4504152B81E85C23354413D0AD7C3EFA45041713D0A37BF33544133333393EFA45041000000D0BC335441000000F0EFA4504185EB5128BA335441
+</a>
+
+<b>
+01060000000100000001030000000100000086000000F418A5D4E7A450419D288F92833354417B14AEB7E5A45041C3F5282C84335441295C8F72E5A45041713D0A07843354413D0AD773E4A45041A4703D9A863354413D0AD703E4A45041C3F5286C88335441B81E853BE4A45041C3F528BC89335441D7A370DDE4A45041AE47E12A8B33544152B81EF5E5A45041CDCCCC8C8C335441CDCCCC2CE6A450410AD7A3D08D335441C3F528DCE5A4504114AE47918E33544166666616E4A45041D7A3709D8E335441AE47E17AE3A45041295C8F328F3354411F85EB61E3A4504185EB51889033544114AE4781E3A45041B81E853B92335441E17A14DEE3A450416666662694335441E17A14DEE3A450419A99996995335441000000A0E3A45041333333439633544166666636E3A45041295C8FD296335441EC51B8FEE2A45041EC51B84E97335441F6285CDFE2A450417B14AED797335441D7A3701DE3A45041295C8FE298335441F6285CBFE3A45041C3F5280C9B3354418FC2F528E4A45041333333D39B335441E17A14BEE4A45041D7A3701D9C335441CDCCCCBCE5A45041B81E855B9C3354411F85EBC1E6A4504185EB51689C335441CDCCCC7CE7A45041333333039D33544152B81E05E8A450417B14AE279E3354411F85EB81E8A4504185EB51E89E3354415C8FC235E9A4504185EB51E89E335441B81E85EBE9A4504152B81EF59E33544100000060EAA4504185EB51A89F3354417B14AE87EBA4504148E17A24A233544114AE4701EBA45041EC51B8AEA3335441F6285C9FE9A4504114AE4771A43354413D0AD763E7A4504114AE4771A4335441713D0AE7E5A4504133333313A433544148E17AB4E4A45041F6285CEFA33354418FC2F548E3A450419A999999A3335441F6285C8FE2A45041F6285C6FA43354415C8FC2D5E1A450410AD7A330A63354413D0AD763E1A450411F85EB31A8335441713D0A07E1A450411F85EB41AA335441F6285CFFE0A45041F6285C2FAC3354410AD7A3B0E1A45041713D0A57AF335441D7A3709DE2A450417B14AEC7B0335441E17A14FEE2A45041713D0A97B23354410AD7A380E2A450410AD7A300B53354411F85EB61E1A45041F6285C3FB533544185EB51B8DFA4504166666676B83354418FC2F5B8DEA45041D7A3703DB9335441D7A3700DDEA45041A4703D1ABA33544166666636DDA450419A999929BB335441CDCCCC9CDBA4504114AE4741BC335441FE45E7B1DAA450414DA2AD7DBC335441B08A8D40DAA4504180E13552BD335441DC1B3724DAA4504112F1EFDEBE335441D7A370FDDAA450413D0AD783C0335441E17A146EDBA45041713D0AE7C1335441666666C6DBA4504133333323C3335441419A47CDDBA45041DEE2D4BCC43354410F5BBFF8DAA45041B8FF09CAC53354412F90ABFAD8A45041EB3E929EC6335441A7E7EAC3D6A45041C914E210C6335441A4703D9AD3A450417B14AEF7C4335441DE6C6145D3A4504124E6D70DC63354414ED132D4D3A4504176971B32C63354417D94533FD2A45041498D4116CC33544129E02838D1A450419E6F554ED1335441E98AE5D5CFA4504176C9B4F8D5335441295C8F2AD0A45041E7FBA939D633544162D9E1A5DAA45041961A20B7DB335441666666C6E0A45041E17A14FEDE33544101F20C35EAA45041157AF71DE433544128972B70EEA4504127B77378E533544100F18A1AF3A450412D3D7F75E6335441739B11DFF5A45041A0509121E73354414180CEA7FAA4504138BE3851E8335441A4703D3AFDA4504185EB5178E8335441F6285C9FFEA450413D0AD7E3E133544114AE47C1F7A450410AD7A340E133544148E17A44F5A45041B81E854BE0335441D7A370BDF4A450411F85EB71E1335441E17A141EF4A450419A999929E2335441F6285CDFF2A450411F85EB41E23354419A9999B9F1A45041EC51B8AEE1335441C3F5287CF1A45041CDCCCC7CE03354419A9999B9F1A450413D0AD793DF335441CDCCCC4CF2A45041A4703D7ADE3354418FC2F558F2A45041D7A3703DD533544114AE47B1F4A4504114AE4731D53354411F85EB11F4A4504185EB51D8D233544185EB51C8F3A45041CDCCCC8CD0335441A4703D2AF4A4504185EB51F8CE33544100000080F4A450413D0AD783CC33544100000030F3A450415C8FC295C7335441AE47E12AF1A4504152B81E85C23354413D0AD7C3EFA45041713D0A37BF33544133333393EFA45041000000D0BC335441000000F0EFA4504185EB5128BA335441B81E85DBF1A450418FC2F548B9335441C3F528BCF4A45041295C8FC2B8335441D7A370BDF6A4504114AE47C1B6335441A4703DEAF6A45041295C8F72B5335441F6285C7FF8A4504114AE47C1B13354416646199F00A55041E4EB28CFB133544149AF572504A5504137544AB2B13354411B4CBF7F04A5504144B3615BB0335441C6272CA005A55041519B5F15AC335441625766C407A550411F07EDF5A33354411F85EB2108A5504133333393A2335441646D5EBB05A550414730DA86A2335441CC7F04D004A5504127A21F82A2335441E10EEF5802A55041AF957175A2335441FFDAAC22FEA450416BAA158EA2335441E716E02EFDA4504161BF819BA2335441CC26461FFCA45041C9A875AAA23354410AD7A300FBA45041A4703DBAA23354413354C375FAA45041A4703DBAA2335441390711D7F8A45041A4703DBAA23354413B38F548F7A45041A4703DBAA23354418E4A20C3F6A45041F49831F1A23354417C512F3BF5A450411017E792A333544114AE4701F1A4504114AE4751A5335441C8B7088DF0A450415266A7509F3354418327273FF0A45041FEC6F49C9B3354419B536212F0A450417AFA8CC29A33544123030EBDEFA450414734452299335441F0171470EFA45041D29EBDAA97335441F75F043BEEA450415408FBC6913354412ED458A7EDA45041B1EF91F68E335441EF78D20CEDA450416728F7208D33544146799242EAA45041B286A50186335441F418A5D4E7A450419D288F9283335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464772 - 58084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000016000000000000906FD25041713D0A67D44B5441B81E85FB79D2504114AE47D1D74B5441B81E853B7DD250411F85EBE1D84B5441B81E85AB7FD25041EC51B8EED94B5441CDCCCCEC81D2504166666636DB4B5441295C8FA288D250410AD7A350DD4B5441F6285CDF8AD2504133333303DD4B5441A4703D7A8BD25041CDCCCCFCDB4B544114AE47A18BD250419A9999A9DA4B544185EB51788AD2504133333313D94B54415C8FC2E575D2504185EB51D8CE4B544148E17A2473D2504185EB5118CD4B54410000001070D250413D0AD7C3C94B54415C8FC2056DD25041EC51B84EC64B54418FC2F5886CD25041666666B6C64B544148E17A8463D2504166666636CE4B5441AE47E1FA62D250418FC2F5A8CE4B54416666660664D2504166666606D04B544152B81E5566D250415C8FC235D24B5441EC51B89E68D2504100000080D24B54413D0AD7836CD250411F85EB81D34B5441000000906FD25041713D0A67D44B544101030000000300000024000000713D0AD760D25041295C8F42AF4B54417B14AE6763D250411F85EB71B24B5441666666A665D250418FC2F5E8B44B5441A4703D5A62D250411F85EB41B24B5441F6285C5F5ED25041CDCCCC3CAE4B5441F6285C4F63D250411F85EB61B84B5441D7A3708D64D250411F85EB61B94B544185EB513866D2504114AE4781BB4B5441EC51B8BE69D25041713D0AE7BF4B5441A4703D1A6ED25041F6285C6FC54B5441E17A14AE70D25041CDCCCC1CC94B5441000000C073D2504100000090CC4B5441D7A3700D76D250417B14AE87CE4B5441A4703DDA79D250417B14AE67CF4B5441EC51B8EE83D250415C8FC265D54B5441E17A14EE86D250418FC2F5D8D54B5441B81E852B8ED250413D0AD7D3D94B5441666666E692D25041B81E859BDC4B5441333333E39DD25041A4703D5ADD4B544185EB51F89DD25041B81E855BDD4B544185EB51D89DD25041A4703DDADB4B544148E17A649ED2504148E17A44D94B5441000000609DD25041F6285C5FD44B544152B81E159DD25041713D0A07CD4B5441F6285CDF9CD25041666666B6C54B5441713D0AA79CD25041295C8F42C24B5441CDCCCC3C9CD25041713D0A27C24B54410000005087D2504114AE47C1BC4B54416666665686D2504114AE4781BC4B544185EB51A884D25041295C8F12BC4B544185EB51287AD250411F85EB41B84B5441295C8F1273D25041713D0AD7B44B5441B81E854B6DD25041E17A147EB14B5441B81E855B68D2504152B81E05AE4B544185EB518865D2504152B81E95AB4B5441713D0AD760D25041295C8F42AF4B544114000000F6285CCF89D250410AD7A330CE4B5441666666B688D2504148E17A44CE4B5441666666A687D250419A999919CF4B5441AE47E1DA86D25041A4703D5AD04B544152B81E0586D2504185EB51D8D04B5441295C8F7280D2504133333333D04B544114AE47A17ED25041E17A148ECF4B5441000000807FD25041E17A144ECE4B544114AE472181D25041295C8F82CD4B5441AE47E17A83D25041A4703DFACC4B54413D0AD7A385D2504148E17AF4CB4B544152B81E4587D250419A999989CB4B5441D7A3700D89D25041B81E855BCD4B5441C3F528BC89D2504148E17A34CD4B544114AE47618AD250419A999999CC4B544185EB51B88AD2504114AE47E1CB4B5441333333238BD25041E17A143ECD4B5441D7A3705D8BD250415C8FC2D5CE4B544185EB51B88AD2504185EB5188CE4B5441F6285CCF89D250410AD7A330CE4B54411C000000000000D08ED2504100000060D14B54410AD7A3C08DD250410AD7A350D04B54410AD7A3B08CD25041D7A3705DCF4B5441CDCCCC6C8CD25041F6285C9FCD4B54410AD7A3B08CD250413D0AD7D3CC4B54419A9999698DD25041666666B6CC4B5441000000D08ED25041E17A140ECD4B54419A9999E98FD250418FC2F5A8CD4B5441C3F528DC90D2504166666606CF4B54415C8FC2F591D2504133333333D04B54415C8FC23593D25041AE47E1BAD04B5441A4703DBA94D250410AD7A380D04B5441CDCCCCDC95D250410AD7A380D04B54411F85EB9197D25041AE47E1CAD14B5441A4703D8A99D2504166666696D24B5441A4703DCA9AD25041C3F528ACD44B5441333333839BD250411F85EBB1D54B54410000005099D25041EC51B8DED64B5441AE47E17A98D2504185EB51B8D64B5441CDCCCC2C98D25041A4703D3AD64B5441666666F696D2504148E17A64D54B5441000000C095D2504114AE4751D54B54413333339394D250410AD7A320D54B5441713D0A9793D2504152B81E55D44B5441AE47E1CA92D25041666666A6D34B5441E17A149E91D25041C3F5286CD34B54419A9999E98FD2504114AE47C1D14B5441000000D08ED2504100000060D14B5441
+</a>
+
+<b>
+01060000000100000001030000000100000047000000D5121EF06CD25041872FB360C64B5441A67EA56B6BD25041462AB3A3C74B5441FF608EDE69D25041C55CF7EDC84B54416ED2A4C569D25041DFADAF02C94B5441327BCA8067D25041FF7BCAE5CA4B54414312F7D766D2504184C33472CB4B5441C943D1E165D25041955CEE3ECC4B544168AED70365D25041621D8DF7CC4B5441BD03F7AF64D250410B47503DCD4B54415964D20864D250412F32E1DCCD4B5441F0E8071863D25041DF9809CFCE4B5441C3D34E3165D2504182877021D14B5441892FD71566D25041CB05D7F9D14B544196EF2D5566D250412F7DC435D24B5441EC51B89E68D2504100000080D24B5441FDA40AA36BD2504151C4C547D34B544188AAAFC06BD25041E3C7704FD34B54413D0AD7836CD250411F85EB81D34B5441000000906FD25041713D0A67D44B5441FA64F37D70D25041BA5A06B5D44B5441E8E83F047AD25041E00024D4D74B5441B81E853B7DD250411F85EBE1D84B5441B81E85AB7FD25041EC51B8EED94B54416EAAA06481D250414FD41AE9DA4B54410FC0817E82D2504164370E64DB4B5441546E92BD83D25041F0E607C8DB4B5441003B0ED583D250410FA163CFDB4B544164C89DF084D25041C2573D28DC4B544142A1003F85D25041FA0DCD40DC4B5441F780751B86D2504186E3E085DC4B5441E51D56E987D250419A339A16DD4B54417A421C2388D250411285B428DD4B5441AA15881B89D25041C0014940DD4B544178EFB36989D250417A7EB735DD4B544112EEBACB89D2504150C37628DD4B5441BD4C2A3E8AD25041ED28FE18DD4B544147687BCF8AD2504184BC5805DD4B5441527EEFED8AD25041F68481EADC4B5441FF9495688BD250411F69B61ADC4B54410CEA09878BD25041AB12998DDB4B54411280F89A8BD25041F3206BE0DA4B5441B143C4658BD250418F682758DA4B5441D7C8C6F98AD25041AC9D5DC4D94B544163EC87788AD25041021B7D13D94B544123E7C6E089D25041377605C8D84B5441F4C8F6B787D25041F0A7F2B4D74B5441EB992A1986D2504147E8AEE6D64B544117A2F60283D250415507DC5DD54B5441A61118BD81D2504199EECDBBD44B54411D4CC4627FD250418D922E90D34B5441C15890927DD250413C136BA9D24B5441A91398557BD2504124E17A8CD14B54413AEA425479D25041D906338DD04B5441BB26F23578D250410535CBFECF4B54412C224FC876D250418FA7FB48CF4B54415AFB06EF75D250411ABAEDDCCE4B54415C8FC2E575D2504185EB51D8CE4B5441613C846E74D250417C4BF6E9CD4B54410839AA6674D250415D84F9E4CD4B544148E17A2473D2504185EB5118CD4B5441AE26CBE272D250412D474DD1CC4B54418F6B7E1572D25041249456F3CB4B54412A50582D71D250416E9958F8CA4B544107F83B0C71D25041773D8CD4CA4B54419E61AC6970D2504193C3CA24CA4B5441D0E99E2370D2504147A80DD9C94B54410000001070D250413D0AD7C3C94B5441F5387A836FD25041EAC80424C94B5441621698756FD250416E8A3A14C94B544159969BD66DD25041B6FE3F3CC74B5441D5121EF06CD25041872FB360C64B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453004 - 1542313
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003A000000EC51B87E1D00514166666616B2F35441F6285CCF1B00514152B81E85AEF35441713D0AA71A005141EC51B82EAFF3544152B81EF51800514185EB51F8AFF35441333333931700514166666656B0F35441C3F5283C15005141E17A140EB0F35441713D0A2713005141A4703DDAAFF354418FC2F57811005141EC51B82EAFF3544152B81E750F005141A4703D0AAEF3544114AE47710D0051411F85EBB1ACF35441C3F5282C0A005141295C8FC2AAF35441295C8F92070051415C8FC2F5A8F354413D0AD753050051413D0AD7C3A7F354411F85EB2105005141EC51B8AEA8F3544148E17A1405005141EC51B8BEA9F35441713D0AF7040051419A999939ABF3544133333373040051417B14AE57AEF35441AE47E11A040051419A9999C9AFF35441713D0AE703005141A4703D7AB0F354413D0AD713030051413D0AD7C3B2F354418FC2F538020051411F85EB91B4F354418FC2F5D804005141D7A370CDB2F35441666666060700514133333313B6F35441000000F008005141000000B0B9F354418FC2F578080051417B14AE47BCF35441CDCCCCEC09005141F6285C1FBEF3544152B81E350B00514166666646BFF354410AD7A3C00C005141EC51B89EC0F35441D7A3708D0E0051415C8FC275C2F35441D7A3707D10005141E17A143EC4F35441F6285C4F1300514148E17AF4C6F35441D7A3705D16005141A4703DDAC9F3544114AE47E11900514133333303CDF3544114AE47011B005141713D0A17CEF35441E17A149E1C0051410AD7A3D0CFF35441333333931D005141EC51B8EED0F3544148E17A741E005141666666F6D1F354413D0AD7E31E00514114AE47A1D0F354410AD7A3B01F005141F6285CDFCDF354419A9999F91E005141D7A370DDCBF354410AD7A340200051411F85EB71C9F35441713D0A5722005141E17A140EC7F3544152B81E1524005141295C8F82C6F35441CDCCCC9C26005141B81E853BC6F35441B81E85AB2700514148E17AA4C3F35441C3F5280C2800514114AE47A1C2F354415C8FC26528005141AE47E11AC1F3544185EB51A828005141EC51B89EBFF35441C3F5288C280051410AD7A3F0BEF3544148E17A54280051419A999949BEF35441CDCCCC1C280051410AD7A340BDF354419A9999C927005141713D0AF7BAF35441AE47E19A27005141AE47E1DAB8F3544148E17A342700514166666616B7F3544114AE472126005141C3F528BCB3F354413D0AD723230051413D0AD713B3F354410AD7A340200051419A999969B3F35441EC51B87E1D00514166666616B2F35441
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000EC51B87E1D00514166666616B2F35441F2BC6CE11B00514114ED5DABAEF354415F3081EB1A0051416CB28807AFF35441C4D867571A005141D9DFB753AFF35441347BAFAC19005141FDFF08A3AFF354413ED5E905190051416A493786AFF3544153AC855718005141B4773755AFF3544158F17FAE170051414F22CA3AAFF354412948CD1017005141458ED221AFF354412E33CB7516005141FAAA2208AFF35441C587D06815005141439FAD8FAEF3544149EC47E114005141444F6546AEF354419394EEF71300514133DD74DAADF35441B178491C130051418249B768ADF3544146B5B23B1200514153B72623ADF35441C1523EA711005141394013E2ACF35441C7A8D21B1100514185D101A2ACF354417CA81F2310005141A2D8B82FACF354412DDD327E0F0051412813EFE3ABF35441C02538BD0E00514176FC408BABF35441E9EA782A0E00514133ACD147ABF354416D2419670D00514147DD09EEAAF354412C25D2CB0C005141AE0AAFA6AAF35441D5C8ED120C005141C110E04FAAF35441073021680B00514113C0B800AAF3544105A1458F0A0051419824399CA9F354413F4249F3090051413EE47053A9F35441689B665809005141D6262B0BA9F354410C7622A507005141DAAE1040A8F354418F37654407005141C3A8BD1DA8F3544145C8057A06005141E12180C4A7F35441A4CED4D9050051412EDFBE69A7F354415CCD2DB405005141D97236D1A7F354410E0C081C0500514158B3E425A9F3544166281E1005005141990CDCF6A9F354419863D402050051419255DFA1AAF354410C5FB3E304005141DD2DABAEABF354413EDAF5C4040051413B82C068ACF35441A76D909F040051419041204BADF3544133333373040051417B14AE57AEF3544102865940040051415064A92CAFF35441AE47E11A040051419A9999C9AFF35441713D0AE703005141A4703D7AB0F35441F4FABACC030051414C62D24CB1F354419076ED8502005141CDE27E22B4F35441612166E6040051410312A3E1B2F35441BB0C160C0600514141BF029BB4F35441541F1F12070051412D3B5729B6F354415624850208005141A2446DEFB7F354419B23FA1909005141D4DD2DE3B9F354418FC2F578080051417B14AE47BCF35441CDCCCCEC09005141F6285C1FBEF3544152B81E350B00514166666646BFF354410AD7A3C00C005141EC51B89EC0F35441D7A3708D0E0051415C8FC275C2F35441D7A3707D10005141E17A143EC4F35441F6285C4F1300514148E17AF4C6F35441D7A3705D16005141A4703DDAC9F3544114AE47E11900514133333303CDF3544114AE47011B005141713D0A17CEF35441E17A149E1C0051410AD7A3D0CFF35441333333931D005141EC51B8EED0F3544148E17A741E005141666666F6D1F354411B85A7A71E0051415F47A459D1F35441C7FDB5E61E0051413AFDAE8ED0F35441480B613F1F005141B5915265CFF35441CC217A8B1F005141C627365FCEF35441121990A91F00514182587DCBCDF354413068995F20005141816F6C1FCDF3544199C271EF20005141637F1087CCF35441EE74056B210051417E1DC903CCF354419506DDFA21005141A65ECC89CBF354417814658C2200514159D9600ECBF3544127B061EC2200514100B4F9BCCAF354415A22ED1D230051410C54F592CAF3544131EA66F923005141A03EF9CAC9F354411DCF667024005141C3C5915BC9F35441D559D3F924005141E3B3EADAC8F35441F6285C8F25005141EC51B84EC8F35441CDCCCC9C26005141B81E853BC6F35441B81E85AB2700514148E17AA4C3F35441C3F5280C2800514114AE47A1C2F354415C8FC26528005141AE47E11AC1F3544185EB51A828005141EC51B89EBFF35441C3F5288C280051410AD7A3F0BEF3544148E17A54280051419A999949BEF35441CDCCCC1C280051410AD7A340BDF354419A9999C927005141713D0AF7BAF35441AE47E19A27005141AE47E1DAB8F3544148E17A342700514166666616B7F3544114AE472126005141C3F528BCB3F354413D0AD723230051413D0AD713B3F354410AD7A340200051419A999969B3F35441EC51B87E1D00514166666616B2F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453004 - 3504019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003A000000EC51B87E1D00514166666616B2F35441F6285CCF1B00514152B81E85AEF35441713D0AA71A005141EC51B82EAFF3544152B81EF51800514185EB51F8AFF35441333333931700514166666656B0F35441C3F5283C15005141E17A140EB0F35441713D0A2713005141A4703DDAAFF354418FC2F57811005141EC51B82EAFF3544152B81E750F005141A4703D0AAEF3544114AE47710D0051411F85EBB1ACF35441C3F5282C0A005141295C8FC2AAF35441295C8F92070051415C8FC2F5A8F354413D0AD753050051413D0AD7C3A7F354411F85EB2105005141EC51B8AEA8F3544148E17A1405005141EC51B8BEA9F35441713D0AF7040051419A999939ABF3544133333373040051417B14AE57AEF35441AE47E11A040051419A9999C9AFF35441713D0AE703005141A4703D7AB0F354413D0AD713030051413D0AD7C3B2F354418FC2F538020051411F85EB91B4F354418FC2F5D804005141D7A370CDB2F35441666666060700514133333313B6F35441000000F008005141000000B0B9F354418FC2F578080051417B14AE47BCF35441CDCCCCEC09005141F6285C1FBEF3544152B81E350B00514166666646BFF354410AD7A3C00C005141EC51B89EC0F35441D7A3708D0E0051415C8FC275C2F35441D7A3707D10005141E17A143EC4F35441F6285C4F1300514148E17AF4C6F35441D7A3705D16005141A4703DDAC9F3544114AE47E11900514133333303CDF3544114AE47011B005141713D0A17CEF35441E17A149E1C0051410AD7A3D0CFF35441333333931D005141EC51B8EED0F3544148E17A741E005141666666F6D1F354413D0AD7E31E00514114AE47A1D0F354410AD7A3B01F005141F6285CDFCDF354419A9999F91E005141D7A370DDCBF354410AD7A340200051411F85EB71C9F35441713D0A5722005141E17A140EC7F3544152B81E1524005141295C8F82C6F35441CDCCCC9C26005141B81E853BC6F35441B81E85AB2700514148E17AA4C3F35441C3F5280C2800514114AE47A1C2F354415C8FC26528005141AE47E11AC1F3544185EB51A828005141EC51B89EBFF35441C3F5288C280051410AD7A3F0BEF3544148E17A54280051419A999949BEF35441CDCCCC1C280051410AD7A340BDF354419A9999C927005141713D0AF7BAF35441AE47E19A27005141AE47E1DAB8F3544148E17A342700514166666616B7F3544114AE472126005141C3F528BCB3F354413D0AD723230051413D0AD713B3F354410AD7A340200051419A999969B3F35441EC51B87E1D00514166666616B2F35441
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000EC51B87E1D00514166666616B2F35441F2BC6CE11B00514114ED5DABAEF354415F3081EB1A0051416CB28807AFF35441C4D867571A005141D9DFB753AFF35441347BAFAC19005141FDFF08A3AFF354413ED5E905190051416A493786AFF3544153AC855718005141B4773755AFF3544158F17FAE170051414F22CA3AAFF354412948CD1017005141458ED221AFF354412E33CB7516005141FAAA2208AFF35441C587D06815005141439FAD8FAEF3544149EC47E114005141444F6546AEF354419394EEF71300514133DD74DAADF35441B178491C130051418249B768ADF3544146B5B23B1200514153B72623ADF35441C1523EA711005141394013E2ACF35441C7A8D21B1100514185D101A2ACF354417CA81F2310005141A2D8B82FACF354412DDD327E0F0051412813EFE3ABF35441C02538BD0E00514176FC408BABF35441E9EA782A0E00514133ACD147ABF354416D2419670D00514147DD09EEAAF354412C25D2CB0C005141AE0AAFA6AAF35441D5C8ED120C005141C110E04FAAF35441073021680B00514113C0B800AAF3544105A1458F0A0051419824399CA9F354413F4249F3090051413EE47053A9F35441689B665809005141D6262B0BA9F354410C7622A507005141DAAE1040A8F354418F37654407005141C3A8BD1DA8F3544145C8057A06005141E12180C4A7F35441A4CED4D9050051412EDFBE69A7F354415CCD2DB405005141D97236D1A7F354410E0C081C0500514158B3E425A9F3544166281E1005005141990CDCF6A9F354419863D402050051419255DFA1AAF354410C5FB3E304005141DD2DABAEABF354413EDAF5C4040051413B82C068ACF35441A76D909F040051419041204BADF3544133333373040051417B14AE57AEF3544102865940040051415064A92CAFF35441AE47E11A040051419A9999C9AFF35441713D0AE703005141A4703D7AB0F35441F4FABACC030051414C62D24CB1F354419076ED8502005141CDE27E22B4F35441612166E6040051410312A3E1B2F35441BB0C160C0600514141BF029BB4F35441541F1F12070051412D3B5729B6F354415624850208005141A2446DEFB7F354419B23FA1909005141D4DD2DE3B9F354418FC2F578080051417B14AE47BCF35441CDCCCCEC09005141F6285C1FBEF3544152B81E350B00514166666646BFF354410AD7A3C00C005141EC51B89EC0F35441D7A3708D0E0051415C8FC275C2F35441D7A3707D10005141E17A143EC4F35441F6285C4F1300514148E17AF4C6F35441D7A3705D16005141A4703DDAC9F3544114AE47E11900514133333303CDF3544114AE47011B005141713D0A17CEF35441E17A149E1C0051410AD7A3D0CFF35441333333931D005141EC51B8EED0F3544148E17A741E005141666666F6D1F354411B85A7A71E0051415F47A459D1F35441C7FDB5E61E0051413AFDAE8ED0F35441480B613F1F005141B5915265CFF35441CC217A8B1F005141C627365FCEF35441121990A91F00514182587DCBCDF354413068995F20005141816F6C1FCDF3544199C271EF20005141637F1087CCF35441EE74056B210051417E1DC903CCF354419506DDFA21005141A65ECC89CBF354417814658C2200514159D9600ECBF3544127B061EC2200514100B4F9BCCAF354415A22ED1D230051410C54F592CAF3544131EA66F923005141A03EF9CAC9F354411DCF667024005141C3C5915BC9F35441D559D3F924005141E3B3EADAC8F35441F6285C8F25005141EC51B84EC8F35441CDCCCC9C26005141B81E853BC6F35441B81E85AB2700514148E17AA4C3F35441C3F5280C2800514114AE47A1C2F354415C8FC26528005141AE47E11AC1F3544185EB51A828005141EC51B89EBFF35441C3F5288C280051410AD7A3F0BEF3544148E17A54280051419A999949BEF35441CDCCCC1C280051410AD7A340BDF354419A9999C927005141713D0AF7BAF35441AE47E19A27005141AE47E1DAB8F3544148E17A342700514166666616B7F3544114AE472126005141C3F528BCB3F354413D0AD723230051413D0AD713B3F354410AD7A340200051419A999969B3F35441EC51B87E1D00514166666616B2F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453074 - 177780
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000210000009A9999D92CAE5041D7A370FD79C75441666666062EAE504114AE47E172C754417B14AE172FAE50415C8FC2556BC754418FC2F5780FAE5041CDCCCCBC6BC75441E17A14FE0AAE5041A4703D0A6EC7544114AE47610FAE5041713D0A0773C754410AD7A38011AE50411F85EBC175C75441295C8FD212AE5041CDCCCC7C77C75441CDCCCC0C16AE50415C8FC2357BC754415C8FC27514AE5041C3F5280C7DC75441295C8FA223AE5041AE47E16A7FC754410AD7A3802AAE50415C8FC2B580C754410AD7A35031AE50411F85EB5182C75441E17A14EE31AE5041E17A147E83C75441295C8F322FAE5041000000108BC75441B81E854B2AAE50419A99993992C754417B14AE2725AE50410AD7A35096C754418FC2F5281FAE5041E17A147E99C754417B14AE171CAE5041EC51B83E9BC754411F85EB4117AE50417B14AE579CC754415C8FC29514AE5041666666E69CC754413D0AD7630EAE5041333333A3AAC7544114AE472106AE5041295C8FD2BBC7544152B81EF507AE5041CDCCCCDCBFC7544185EB51680EAE5041E17A141EB4C75441EC51B86E10AE50411F85EB71B0C75441EC51B86E13AE50415C8FC2D5AFC7544114AE47B117AE5041713D0A17A2C7544185EB51D81BAE504148E17A04A0C754411F85EB6122AE504185EB51F89DC75441AE47E18A2CAE50410AD7A3809AC75441B81E852B37AE504152B81EA57EC754419A9999D92CAE5041D7A370FD79C75441
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000059B27FDA10AE50410386B42CA5C754416135D8630EAE50417A4032A3AAC7544196F7482106AE5041345F8ED2BBC7544154931EF507AE5041FEA0CBDCBFC75441629A50680EAE50411E17151EB4C75441499EA07A0FAE504142FB992CB2C75441EC51B86E10AE50411F85EB71B0C7544167ABB76E13AE504138B1C2D5AFC75441B3EF46B117AE50413B170A17A2C754413E3952D81BAE5041AAAC7904A0C75441B68CC22D21AE50410A67D5589EC754411F85EB6122AE504185EB51F89DC7544128FFEB5F25AE5041E946E4F29CC75441FA92E18A2CAE5041A911A3809AC754412BE7842B37AE5041EE491FA57EC754414076396C32AE5041EF0EF1807CC75441C19D99D92CAE50415EDD6FFD79C754415BE165062EAE5041832B47E172C75441BDA59EFF2EAE504105E9D0FF6BC7544112E5AD172FAE504176DEC3556BC75441A95BA3AB1FAE5041480804886BC754418FC2F5780FAE5041CDCCCCBC6BC7544148A914FE0AAE5041CB583D0A6EC7544178C648610FAE504171DB080773C7544153A0A48011AE5041A874ECC175C754418FB7EA411AAE50416CFE486178C754410304B75E1FAE504104A7E10A7AC7544113DCC2B524AE504121DE65C67CC75441BB4E5DEF27AE5041CCFD00307FC75441B192A4802AAE5041DF6AC2B580C754419E09E79A2CAE5041AABCF73481C754410AD7A35031AE50411F85EB5182C754415C72D38C31AE5041522FAAC482C7544123BE15EE31AE504186EF147E83C75441CCDAD3CC2FAE5041BEB29F6489C75441295C8F322FAE5041000000108BC75441B81E854B2AAE50419A99993992C754418497B9C825AE50416A4A7ED095C754413946AE2725AE50412EFFA35096C7544141DFADDA23AE5041EF85230197C754418FC2F5281FAE5041E17A147E99C754417B14AE171CAE5041EC51B83E9BC754411F85EB4117AE50417B14AE579CC754415C8FC29514AE5041666666E69CC7544159B27FDA10AE50410386B42CA5C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>816880 - 1149674
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000430703AAAE505141C0177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B535441AE47E1FA915051417B14AE47615354417B14AE579450514114AE47016D5354415C8FC2559950514133333313735354413D0AD703A1505141000000207C5354419A999999A45051415C8FC225825354415C8FC2C5A550514148E17AA48753544185EB5108A7505141A4703DAA97535441295C8F52AD505141B81E851BA353544152B81EF5B15051413D0AD713A5535441B81E852BBF505141B81E850BA7535441B81E85CBC750514148E17A44A8535441EC51B88ECD505141F6285C2FA953544152B81E85D5505141295C8FC2A35354418FC2F5A8D650514185EB51C8A15354410B353980E1505141C40D35CAA2535441E3ACC67FE1505141CA3A69C7A253544197DAA8C3E0505141D73373B79C535441B89383D8DF505141352FCFAC98535441D94C5EEDDE505141D59CE0CB92535441FA053902DE5051419CF300498D535441D41C2AA4DD505141D4054EE088535441D41C2AA4DD5051419A5C6E5D83535441679131D3DD5051413BCA7F7C7D535441D94C5EEDDE505141DB37919B77535441FF356D4BDF505141A6BEE56173535441B89383D8DF5051413DCC8EEE6A53544192AA747ADF5051415425017167535441B3634F8FDE5051414AC598DE64535441D41C2AA4DD505141ADF0281D62535441F5D504B9DC505141154CEDA4605354416392A098DC5051418F35219A60535441115FAB84DA505141C979CFE85F535441B7FCF0ECD550514157BEA2CE5E535441E847774FC6505141940024AF5B53544175F5B749BB50514164B7ACBE58535441C4607763B3505141A72962E856535441430703AAAE505141C0177EF655535441
+</a>
+
+<b>
+01060000000100000001030000000100000037000000460703AAAE505141BE177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B53544116CD79C5925051414B5CC36860535441542F07B792505141A4DED5916353544116CD79C592505141AD2231E265535441F44616BB93505141345D97D96A535441102340A294505141669E206E6C535441E49CDC9795505141E42FCC676E5354414B0D8434995051419F6760A3725354413886A1049F505141B8CB402B78535441D2F376E5A1505141AD77CDE47B535441C2493DC2A3505141366ED88B7E535441BD9F039FA5505141367FC4F2825354416BA5A716A7505141F283E9448953544100BDB61AA85051417D695DD0965354411D99E001A95051410660687799535441C427BA3FAA505141D42FCB499C535441B806B6E2AB505141E4EAF0D39E5354410FBC37F5AC50514112A344A2A0535441F4AC9E24AE5051418ABD2562A2535441E88B9AC7AF505141E4FBDC3AA3535441D2372781B35051418413EC3EA45354417F9212B0BB505141E23F388BA5535441C9377CCCC2505141BDCB3F0DA6535441540C04F1CB5051414B6C84D7A6535441D29DAFEACD5051419145DC02A7535441AAA081A6CE505141C8309FBAA65354414DB71185D45051411470D5B8A253544102348036D6505141BDBA53A6A15354410B353980E1505141C90D35CAA2535441E3ACC67FE1505141CC3A69C7A253544195DAA8C3E0505141D43373B79C535441B39383D8DF505141322FCFAC98535441DD4C5EEDDE505141D99CE0CB92535441FB053902DE5051419BF300498D535441D41C2AA4DD505141D2054EE088535441D41C2AA4DD5051419F5C6E5D83535441467647C1DD505141972A8A6C7D535441DD4C5EEDDE505141D637919B7753544104366D4BDF505141A1BEE56173535441B39383D8DF50514141CC8EEE6A53544197AA747ADF5051414F25017167535441B6634F8FDE50514149C598DE64535441D41C2AA4DD505141AFF0281D62535441F3D504B9DC505141134CEDA4605354416792A098DC5051419035219A60535441145FAB84DA505141C679CFE85F535441B8FCF0ECD55051415BBEA2CE5E535441EB47774FC6505141900024AF5B5354417AF5B749BB50514163B7ACBE58535441BF607763B3505141AB2962E856535441460703AAAE505141BE177EF655535441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>816880 - 3494713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000430703AAAE505141C0177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B535441AE47E1FA915051417B14AE47615354417B14AE579450514114AE47016D5354415C8FC2559950514133333313735354413D0AD703A1505141000000207C5354419A999999A45051415C8FC225825354415C8FC2C5A550514148E17AA48753544185EB5108A7505141A4703DAA97535441295C8F52AD505141B81E851BA353544152B81EF5B15051413D0AD713A5535441B81E852BBF505141B81E850BA7535441B81E85CBC750514148E17A44A8535441EC51B88ECD505141F6285C2FA953544152B81E85D5505141295C8FC2A35354418FC2F5A8D650514185EB51C8A15354410B353980E1505141C40D35CAA2535441E3ACC67FE1505141CA3A69C7A253544197DAA8C3E0505141D73373B79C535441B89383D8DF505141352FCFAC98535441D94C5EEDDE505141D59CE0CB92535441FA053902DE5051419CF300498D535441D41C2AA4DD505141D4054EE088535441D41C2AA4DD5051419A5C6E5D83535441679131D3DD5051413BCA7F7C7D535441D94C5EEDDE505141DB37919B77535441FF356D4BDF505141A6BEE56173535441B89383D8DF5051413DCC8EEE6A53544192AA747ADF5051415425017167535441B3634F8FDE5051414AC598DE64535441D41C2AA4DD505141ADF0281D62535441F5D504B9DC505141154CEDA4605354416392A098DC5051418F35219A60535441115FAB84DA505141C979CFE85F535441B7FCF0ECD550514157BEA2CE5E535441E847774FC6505141940024AF5B53544175F5B749BB50514164B7ACBE58535441C4607763B3505141A72962E856535441430703AAAE505141C0177EF655535441
+</a>
+
+<b>
+01060000000100000001030000000100000037000000460703AAAE505141BE177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B53544116CD79C5925051414B5CC36860535441542F07B792505141A4DED5916353544116CD79C592505141AD2231E265535441F44616BB93505141345D97D96A535441102340A294505141669E206E6C535441E49CDC9795505141E42FCC676E5354414B0D8434995051419F6760A3725354413886A1049F505141B8CB402B78535441D2F376E5A1505141AD77CDE47B535441C2493DC2A3505141366ED88B7E535441BD9F039FA5505141367FC4F2825354416BA5A716A7505141F283E9448953544100BDB61AA85051417D695DD0965354411D99E001A95051410660687799535441C427BA3FAA505141D42FCB499C535441B806B6E2AB505141E4EAF0D39E5354410FBC37F5AC50514112A344A2A0535441F4AC9E24AE5051418ABD2562A2535441E88B9AC7AF505141E4FBDC3AA3535441D2372781B35051418413EC3EA45354417F9212B0BB505141E23F388BA5535441C9377CCCC2505141BDCB3F0DA6535441540C04F1CB5051414B6C84D7A6535441D29DAFEACD5051419145DC02A7535441AAA081A6CE505141C8309FBAA65354414DB71185D45051411470D5B8A253544102348036D6505141BDBA53A6A15354410B353980E1505141C90D35CAA2535441E3ACC67FE1505141CC3A69C7A253544195DAA8C3E0505141D43373B79C535441B39383D8DF505141322FCFAC98535441DD4C5EEDDE505141D99CE0CB92535441FB053902DE5051419BF300498D535441D41C2AA4DD505141D2054EE088535441D41C2AA4DD5051419F5C6E5D83535441467647C1DD505141972A8A6C7D535441DD4C5EEDDE505141D637919B7753544104366D4BDF505141A1BEE56173535441B39383D8DF50514141CC8EEE6A53544197AA747ADF5051414F25017167535441B6634F8FDE50514149C598DE64535441D41C2AA4DD505141AFF0281D62535441F3D504B9DC505141134CEDA4605354416792A098DC5051419035219A60535441145FAB84DA505141C679CFE85F535441B8FCF0ECD55051415BBEA2CE5E535441EB47774FC6505141900024AF5B5354417AF5B749BB50514163B7ACBE58535441BF607763B3505141AB2962E856535441460703AAAE505141BE177EF655535441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453438 - 177106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002E0000000AD7A35041B65041333333D375DA5441E17A140E3FB650410AD7A33074DA5441CDCCCC8C3BB65041CDCCCCCC73DA54411F85EB613AB650419A99997972DA544152B81E0536B65041EC51B89E71DA5441F6285CBF32B65041295C8F1271DA5441666666662FB65041666666C671DA5441C3F528AC2CB65041CDCCCC7C73DA5441D7A370CD2AB650410AD7A39079DA5441EC51B8DE29B6504114AE47017EDA544152B81E3526B65041E17A14FE7CDA544185EB513827B650416666668676DA5441C3F5284C27B650410AD7A33074DA54417B14AEC722B65041CDCCCC7C73DA5441713D0AA71EB650415C8FC26572DA544148E17AA417B65041C3F528AC6FDA5441000000D013B650411F85EB916FDA5441F6285CFF14B65041E17A144E74DA5441E17A145E15B650411F85EBC176DA54413D0AD79315B65041D7A3706D79DA5441E17A14EE15B65041B81E85EB7CDA54417B14AEF719B6504148E17AA4A3DA5441295C8FD21AB650411F85EBC1A6DA5441666666461CB65041C3F5281CA9DA5441666666B61EB6504166666666AADA54413D0AD77321B650410AD7A3B0AADA5441000000902BB650418FC2F548ABDA5441D7A3701D2EB65041713D0A2799DA5441A4703D6A3EB65041295C8F2294DA5441AE47E15A43B65041D7A3709D92DA5441A4703DAA4EB650418FC2F50896DA544152B81EE550B650415C8FC2E595DA5441EC51B8AE55B650418FC2F51887DA54417B14AE9757B650410000005084DA5441D7A370DD5AB65041000000807ADA5441D7A3702D5BB65041B81E85DB77DA54413D0AD72358B650413D0AD72377DA5441EC51B88E57B650410AD7A30077DA5441AE47E11A55B65041CDCCCC8C76DA5441AE47E15A52B650410AD7A31076DA54418FC2F55850B6504185EB516879DA5441AE47E12A4EB650417B14AE677FDA54415C8FC2E544B65041713D0A5780DA5441A4703D4A3FB6504148E17A047FDA54419A99993940B65041713D0AF77ADA54410AD7A35041B65041333333D375DA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002000000038616D7017B650416E56C4AA6FDA5441000000D013B650411F85EB916FDA5441F6285CFF14B65041E17A144E74DA5441E17A145E15B650411F85EBC176DA5441DACA348315B650413010F49978DA5441530AD79315B650418CA3706D79DA54417C34AFCD15B6504196FF8CAA7BDA5441E17A14EE15B65041B81E85EB7CDA5441763227F517B65041DFFFCC5D90DA54418614AEF719B6504112E17AA4A3DA54415F5C8FD21AB650413485EBC1A6DA54417E6666461CB65041D0F5281CA9DA54411E635F201DB65041338F848FA9DA54415C6666B61EB650413B666666AADA54411DDD15B71FB6504150439181AADA54413D0AD77321B650410AD7A3B0AADA544183FCCC5A2AB65041AC47C336ABDA5441000000902BB6504185C2F548ABDA5441E7AED3C12BB650416DAFFFE6A9DA5441D1A3701D2EB65041993D0A2799DA54414186065E25B65041FE65379997DA54414CDE44312AB650416BE1871B80DA544139EE16A326B650415DC17A177FDA54412FF6FFDB24B6504150DDDEEE7CDA54412B527EBB24B6504146B13F857ADA544163BA8E0026B6504156AD965877DA5441F49981FC24B650411FC9FA2F75DA54411C825D3122B65041265901B275DA5441422EC88A20B6504151A9ED2B74DA5441FAEDAD821EB650415C2D624873DA5441119E58E817B650413BCD3A3C70DA544138616D7017B650416E56C4AA6FDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453438 - 342203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002E0000000AD7A35041B65041333333D375DA5441E17A140E3FB650410AD7A33074DA5441CDCCCC8C3BB65041CDCCCCCC73DA54411F85EB613AB650419A99997972DA544152B81E0536B65041EC51B89E71DA5441F6285CBF32B65041295C8F1271DA5441666666662FB65041666666C671DA5441C3F528AC2CB65041CDCCCC7C73DA5441D7A370CD2AB650410AD7A39079DA5441EC51B8DE29B6504114AE47017EDA544152B81E3526B65041E17A14FE7CDA544185EB513827B650416666668676DA5441C3F5284C27B650410AD7A33074DA54417B14AEC722B65041CDCCCC7C73DA5441713D0AA71EB650415C8FC26572DA544148E17AA417B65041C3F528AC6FDA5441000000D013B650411F85EB916FDA5441F6285CFF14B65041E17A144E74DA5441E17A145E15B650411F85EBC176DA54413D0AD79315B65041D7A3706D79DA5441E17A14EE15B65041B81E85EB7CDA54417B14AEF719B6504148E17AA4A3DA5441295C8FD21AB650411F85EBC1A6DA5441666666461CB65041C3F5281CA9DA5441666666B61EB6504166666666AADA54413D0AD77321B650410AD7A3B0AADA5441000000902BB650418FC2F548ABDA5441D7A3701D2EB65041713D0A2799DA5441A4703D6A3EB65041295C8F2294DA5441AE47E15A43B65041D7A3709D92DA5441A4703DAA4EB650418FC2F50896DA544152B81EE550B650415C8FC2E595DA5441EC51B8AE55B650418FC2F51887DA54417B14AE9757B650410000005084DA5441D7A370DD5AB65041000000807ADA5441D7A3702D5BB65041B81E85DB77DA54413D0AD72358B650413D0AD72377DA5441EC51B88E57B650410AD7A30077DA5441AE47E11A55B65041CDCCCC8C76DA5441AE47E15A52B650410AD7A31076DA54418FC2F55850B6504185EB516879DA5441AE47E12A4EB650417B14AE677FDA54415C8FC2E544B65041713D0A5780DA5441A4703D4A3FB6504148E17A047FDA54419A99993940B65041713D0AF77ADA54410AD7A35041B65041333333D375DA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002000000038616D7017B650416E56C4AA6FDA5441000000D013B650411F85EB916FDA5441F6285CFF14B65041E17A144E74DA5441E17A145E15B650411F85EBC176DA5441DACA348315B650413010F49978DA5441530AD79315B650418CA3706D79DA54417C34AFCD15B6504196FF8CAA7BDA5441E17A14EE15B65041B81E85EB7CDA5441763227F517B65041DFFFCC5D90DA54418614AEF719B6504112E17AA4A3DA54415F5C8FD21AB650413485EBC1A6DA54417E6666461CB65041D0F5281CA9DA54411E635F201DB65041338F848FA9DA54415C6666B61EB650413B666666AADA54411DDD15B71FB6504150439181AADA54413D0AD77321B650410AD7A3B0AADA544183FCCC5A2AB65041AC47C336ABDA5441000000902BB6504185C2F548ABDA5441E7AED3C12BB650416DAFFFE6A9DA5441D1A3701D2EB65041993D0A2799DA54414186065E25B65041FE65379997DA54414CDE44312AB650416BE1871B80DA544139EE16A326B650415DC17A177FDA54412FF6FFDB24B6504150DDDEEE7CDA54412B527EBB24B6504146B13F857ADA544163BA8E0026B6504156AD965877DA5441F49981FC24B650411FC9FA2F75DA54411C825D3122B65041265901B275DA5441422EC88A20B6504151A9ED2B74DA5441FAEDAD821EB650415C2D624873DA5441119E58E817B650413BCD3A3C70DA544138616D7017B650416E56C4AA6FDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453613 - 376919
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000004000000A8000000713D0A37D2AF50415C8FC2F51AD35441E17A14AECCAF504185EB51E80BD3544114AE4751CCAF504148E17AF40AD3544148E17AF4C8AF5041D7A3705D02D3544152B81E35D0AF504114AE4711F7D254411F85EBC1D5AF5041C3F5286CEED25441AE47E19AD8AF5041F6285CCFEDD254413D0AD7F3E0AF50413D0AD703ECD2544185EB5108E5AF504133333323EBD254419A999929E9AF504100000040EAD2544133333313EDAF50418FC2F568E9D254418FC2F5E8F4AF50419A9999B9E7D254418FC2F5B8FBAF5041295C8F12E4D254416666662600B0504100000030E0D25441A4703D4A03B050417B14AE47D9D25441AE47E1EA0AB0504100000080D2D254418FC2F59810B0504100000090CBD254416666667616B050410AD7A390C4D25441666666661FB05041295C8F52BAD254417B14AE0724B0504148E17A84B4D254417B14AE3728B05041C3F5286CAED25441B81E853B2BB0504114AE4741ABD2544152B81E253CB05041000000C09CD25441EC51B82E37B05041E17A141E97D25441B81E853B33B050410AD7A32092D25441295C8F022FB050410000005090D2544185EB51582BB05041713D0AE78DD25441F6285CBF25B050418FC2F5B889D254413D0AD73320B05041CDCCCC4C86D2544185EB51981AB0504185EB51E883D25441E17A14EE1EB050415C8FC2B588D25441A4703D2A24B0504152B81E458ED254413D0AD78328B05041B81E85FB92D2544148E17AC42AB050418FC2F5789CD2544114AE47A128B05041A4703D4AA4D25441A4703DCA25B0504100000040A7D254415C8FC2A51FB05041AE47E18AADD2544148E17AC418B05041EC51B8FEB1D254411F85EBD113B0504133333333B5D25441000000800FB050410AD7A300B8D25441A4703D5A0BB050419A9999A9BAD2544148E17A7407B0504152B81E25BDD25441EC51B8FE03B0504114AE4761BFD2544114AE47D101B050417B14AEC7C3D254418FC2F5D8FFAF504148E17AB4C7D25441B81E850BFEAF5041AE47E19ACBD25441E17A148EFAAF5041E17A142ED3D2544114AE47D1F8AF50418FC2F5C8D6D25441E17A143EF5AF504114AE4741D8D254411F85EB41F1AF5041295C8FE2D9D2544148E17AE4ECAF50410AD7A3B0DBD25441A4703D5AE8AF504114AE4791DDD2544133333333E4AF504133333343DFD25441B81E85EBDFAF504100000010E1D2544185EB5168DCAF504166666686E2D25441AE47E11AD9AF504185EB51D8E3D25441A4703D0AD6AF5041295C8F12E5D254418FC2F5F8D3AF5041CDCCCCECE5D254413D0AD743D2AF504148E17A24E6D254417B14AE37CEAF5041F6285C9FE6D2544133333343C9AF5041F6285C1FE7D25441F6285CDFC6AF5041AE47E1CAEAD2544114AE47A1C4AF50410AD7A340EED25441B81E856BC2AF504114AE4791F1D2544148E17A34C0AF50418FC2F5F8F4D2544148E17A14BEAF504152B81E55F8D2544148E17AF4BBAF5041F6285C8FFBD254411F85EBF1B9AF504185EB51A8FED25441AE47E14AB8AF5041D7A370AD01D354410AD7A360B7AF5041713D0A0705D35441713D0AB7B6AF5041A4703D9A07D35441A4703D1AB6AF5041666666260AD354415C8FC275B5AF504148E17AB40CD354415C8FC2E5B4AF504114AE47310FD35441AE47E14AB4AF5041B81E85CB11D35441333333B3B3AF50418FC2F55814D35441B81E853BB3AF504152B81EE516D3544148E17AA4B2AF5041E17A148E19D354415C8FC2F5B6AF50417B14AE8724D35441F6285C3FB6AF5041295C8FD227D35441C3F5286CBDAF5041713D0AA728D354418FC2F528C3AF50411F85EB612CD3544152B81E05C5AF5041C3F528FC2FD354415C8FC215C4AF5041666666C63BD35441F6285C4FC7AF5041D7A3704D40D354419A999989CFAF5041E17A14AE3FD35441EC51B80EDDAF50413333336341D3544148E17AD4E2AF504185EB510844D35441AE47E1CAE8AF5041F6285CCF41D354413D0AD713F7AF504185EB515843D354410AD7A36001B050415C8FC2C546D35441F6285CCF02B050410AD7A32047D35441333333930EB050419A9999094AD354415C8FC2850EB05041713D0A074DD35441F6285C9F01B05041C3F5281C56D35441B81E85BBFFAF50410AD7A37057D354418FC2F548FAAF5041B81E852B5ED35441AE47E14AE5AF5041295C8F126AD3544133333363DCAF5041295C8F5272D3544100000050E5AF50416666661679D354417B14AE17F0AF5041EC51B8EE84D35441713D0AE704B050419A99995993D3544152B81E1515B050411F85EBB19AD35441713D0AB726B05041B81E85AB99D35441B81E85DB2CB050417B14AED79AD3544185EB510846B0504100000040A5D354416666668649B050415C8FC215A5D35441F6285C6F4EB05041666666F69BD35441C3F5288C55B050410AD7A3808ED35441AE47E10A5BB050415C8FC21586D35441C3F528AC5FB050418FC2F55880D35441333333536FB05041CDCCCCBC70D354419A9999B973B05041333333336AD3544185EB511876B05041AE47E1DA63D35441C3F5285C77B05041713D0A175DD354413333335377B050410AD7A35057D354410000005076B05041295C8F8248D35441713D0AA776B050411F85EBF142D354416666664674B05041A4703DAA40D354417B14AEF76FB0504148E17AE448D35441E17A14FE6CB05041666666D64FD3544152B81E1563B050411F85EBB159D35441C3F5280C5EB05041295C8F3262D35441E17A14EE59B05041EC51B8BE65D35441F6285CBF54B05041C3F5280C68D3544152B81EC548B0504148E17AA46ED35441AE47E1AA47B05041000000406FD35441D7A370AD49B05041A4703D8A74D3544114AE478145B050413333330376D35441E17A14CE3CB0504152B81E1579D35441A4703D8A32B0504148E17AB47CD354418FC2F5582EB05041F6285C2F7ED35441E17A145E2CB050418FC2F5787ED354411F85EB7125B05041B81E857B7FD354419A9999691BB05041D7A370FD81D354410AD7A3A012B050413D0AD7A380D3544152B81EF50BB05041000000207ED354410AD7A3800AB05041333333937DD35441C3F5286CFCAF50415C8FC2156FD354419A99995902B05041E17A14CE6AD3544185EB51A806B050411F85EBB167D35441F6285CEF0AB05041AE47E19A64D35441666666260FB050410000009061D354410000001013B05041CDCCCCBC5ED354419A99999917B050415C8FC2755BD3544152B81E8519B05041CDCCCC1C5AD354418FC2F51820B05041E17A147E55D35441D7A370FD22B050417B14AEF753D354413D0AD7832BB0504185EB51784FD354417B14AE272EB050413D0AD7134ED35441EC51B84E39B05041AE47E13A43D35441C3F528EC42B050410AD7A3A044D35441B81E856B41B050418FC2F57838D354417B14AEE739B05041F6285CCF38D35441B81E856B37B05041B81E85EB38D354419A9999F92CB05041295C8F6239D35441C3F5288C0BB05041C3F5284C2DD35441CDCCCCFC0EB05041C3F5287C17D354415C8FC2C5FAAF5041EC51B8CE16D35441EC51B89EF6AF50415C8FC27518D35441B81E856BF0AF5041C3F528FC1BD35441C3F5283CEFAF5041AE47E1FA19D354410AD7A3D0E7AF5041E17A144E1AD3544114AE47B1E5AF50415C8FC2651AD354415C8FC215E4AF504152B81EA520D3544152B81EE5E0AF5041295C8FC220D35441EC51B8EED9AF5041295C8F021ED35441713D0A37D2AF50415C8FC2F51AD354410A00000085EB51C80FB05041AE47E18A41D354410AD7A3300FB0504114AE47B145D35441EC51B89E0CB05041F6285C5F47D354419A999999FDAF5041CDCCCCEC42D354419A999969FCAF5041333333C33FD354410AD7A310F8AF50411F85EB313DD354410AD7A3A0F6AF5041F6285C8F38D3544148E17A9407B0504148E17A343CD3544185EB51880BB050418FC2F5F83ED3544185EB51C80FB05041AE47E18A41D354410B000000B81E859B4FB05041EC51B81E7BD35441713D0A5750B05041D7A370CD79D354418FC2F5A854B05041EC51B8AE7AD354413D0AD71357B0504148E17AD47DD35441A4703D1A58B05041713D0A2782D35441295C8F3256B05041C3F5288C86D354416666667652B050418FC2F59888D354413D0AD74350B050416666666686D354413D0AD74350B05041333333C383D3544185EB51884FB05041EC51B8EE81D35441B81E859B4FB05041EC51B81E7BD3544111000000F6285C5FCDAF5041A4703D5A38D35441295C8FA2D0AF5041713D0A1735D3544148E17A14D5AF50417B14AEB732D35441666666A6D7AF50410000005033D3544152B81E65DCAF5041295C8F9236D35441F6285C2FDDAF50417B14AE373BD35441B81E855BDFAF5041713D0A673CD3544152B81EB5E3AF504148E17A2439D354413D0AD713E6AF50410AD7A3903FD35441A4703D1AE4AF504114AE47A142D3544185EB5148DDAF5041713D0AA740D35441CDCCCCACD5AF5041295C8F123FD35441B81E853BD9AF50419A9999993CD3544152B81EF5D6AF5041C3F528BC39D354413D0AD733D3AF5041A4703D5A38D354410AD7A310CEAF50419A99998939D35441F6285C5FCDAF5041A4703D5A38D35441
+</a>
+
+<b>
+010600000001000000010300000004000000000100002298381702B0504198C801F346D35441A7D75CCF02B05041EC26A32047D35441333333930EB050419A9999094AD35441E322AD8A0EB0504132540BEF4BD354415C8FC2850EB05041713D0A074DD35441F6285C9F01B05041C3F5281C56D35441B81E85BBFFAF50410AD7A37057D3544143C44FB6FBAF5041AD6D27685CD354418FC2F548FAAF5041B81E852B5ED354411DABFF60F4AF504133C3C88461D35441042FE14AE5AF50417E1990126AD354419AB03CB4E1AF5041BD05A2656DD35441DCCFFF27DFAF5041C058E5C16FD35441E09F3363DCAF50417FF78E5272D3544162EEFF4FE5AF5041028D651679D354411F43AE17F0AF50413772B8EE84D35441713D0AE704B050419A99995993D3544152B81E1515B050411F85EBB19AD35441713D0AB726B05041B81E85AB99D35441B81E85DB2CB050417B14AED79AD35441DC2CA0F332B05041CA25A35C9DD35441B3DD520846B050412344FF3FA5D354419481668649B05041DC5CC215A5D35441F6285C6F4EB05041666666F69BD35441C3F5288C55B050410AD7A3808ED35441344EA27859B05041BC7AF07D88D3544191FDE00A5BB0504104BAC21586D3544154DD27AC5FB050412849F65880D354419F6DA42263B050418F7BE2E47CD35441333333536FB05041CDCCCCBC70D35441339C3AEE71B050419A3EBBDD6CD35441647698B973B050410E0A33336AD35441F5A56F1C75B0504176323A7D66D3544185EB511876B05041AE47E1DA63D354417281619F76B05041A40F990861D35441C3CC275C77B050418DB30A175DD35441CCA3345777B05041496991E559D354413333335377B050410AD7A35057D354410000005076B05041295C8F8248D354415D951B8176B05041321EC85E45D35441C82E09A776B05041802DEBF142D35441EDCA76F475B05041B9D6AA4642D3544184E3664674B05041A4E83DAA40D354418081797671B05041A8A2530946D354417B14AEF76FB0504148E17AE448D35441F96FF98D6EB050416876DD304CD354412E7C14FE6CB050416BA567D64FD35441BA901E1563B05041FAC7EBB159D354412DF2E0C661B05041AAAA58E65BD354414637290C5EB05041C007903262D354412D6B2C5D5CB05041072EE2A563D35441E17A14EE59B05041EC51B8BE65D35441F6285CBF54B05041C3F5280C68D3544152B81EC548B0504148E17AA46ED35441152B36F547B05041B5B10A176FD354419052E2AA47B050414D9CFF3F6FD35441EB251D2F49B05041C30BC53D73D35441D7A370AD49B05041A4703D8A74D35441365B5B7047B0504136047C5475D3544104FA488145B05041A524330376D354414A4A15CE3CB05041B6941E1579D354410180FCF63BB0504105B3066179D35441A4703D8A32B0504148E17AB47CD354419BE65DF12FB05041E111309F7DD354416B6AF6582EB050419CF05C2F7ED354413C48155E2CB0504110DCF5787ED3544100C5EB7125B05041852C857B7FD3544120AFAE9623B05041F7BF4CF27FD354419A9999691BB05041D7A370FD81D354410AD7A3A012B050413D0AD7A380D3544112249F480EB05041F66C8A007FD35441A46D1FF50BB050418DB200207ED3544108B3A4800AB05041509334937DD354418DAC276CFCAF504128A9C2156FD354416FA6995902B050410D6F14CE6AD35441451451A806B050414C80EBB167D3544139D25BEF0AB05041DE50E19A64D35441F8D566260FB050419314FF8F61D354413227011013B050411495CBBC5ED3544193BE989917B050410737C2755BD35441B3A21D8519B050419EADCB1C5AD354411C9CC2EC1DB050415C6FC00457D354418FC2F51820B05041E17A147E55D35441B30FDDB921B05041C51D47A254D3544188AA6FFD22B050413BD5ADF753D354418476D8832BB0504154DE50784FD354414965AD272EB05041EEDDD5134ED3544109C8D74F36B05041C1D1C82446D3544155B3B94E39B05041CE9CE03A43D35441B8C828EC42B05041AE6AA2A044D35441936BCC1642B050413DDA93E23DD35441F162846B41B05041DF27F77838D354410A5DCF5D3CB05041318D0FB338D354417B14AEE739B05041F6285CCF38D354416F289FDE38B0504164CC17DB38D354413CFB846B37B050412C0E86EB38D3544161299AF92CB05041A637906239D35441ABAB278C0BB050414F9E284C2DD3544163E89CEE0DB05041FCB45F2D1ED354418FC7CCFC0EB05041F016297C17D354416B6EC3F40CB05041BB2ABB6A17D354415C8FC2C5FAAF5041EC51B8CE16D35441EC51B89EF6AF50415C8FC27518D354417223DDACF2AF5041767FE9B31AD3544130E7846BF0AF5041058F29FC1BD35441C6D4273CEFAF504137B5E2FA19D35441FEFBA3D0E7AF504135A3154E1AD35441C7D6D651E6AF50419E41C35E1AD35441AC0148B1E5AF5041B78BC2651AD35441F9F01FEDE4AF50416D811C601DD3544121E1C115E4AF5041EBFC1FA520D35441B1FB0719E2AF504169B275B720D3544152B81EE5E0AF5041295C8FC220D354417D6DA806DDAF5041AFA95A3B1FD35441FCF2B6EED9AF50413C288F021ED35441F05F0937D2AF50417F77C2F51AD35441DAE413AECCAF50416F0153E80BD3544146F44651CCAF5041AC9479F40AD35441A29DF09DCBAF50413453542A09D3544148E17AF4C8AF5041D7A3705D02D3544152B81E35D0AF504114AE4711F7D254411F85EBC1D5AF5041C3F5286CEED25441128CFD1DD8AF5041824F39EAEDD254413107E29AD8AF504162AB5BCFEDD25441DBB6D6F3E0AF5041B63BD603ECD25441E1FB8DC1E3AF504160847A69EBD2544185EB5108E5AF504133333323EBD254419A999929E9AF504100000040EAD25441C1736B7EEAAF50416CC3D3F6E9D2544160F83113EDAF50412AF5F468E9D254418D1762A5F3AF5041604A30FFE7D254412C991624F4AF5041A979F0E3E7D254410E2FF5E8F4AF504153B999B9E7D2544181D7FEEDF6AF50418AA164A4E6D254418FC2F5B8FBAF5041295C8F12E4D254416666662600B0504100000030E0D25441A4703D4A03B050417B14AE47D9D2544140B4E0EA0AB0504108830080D2D25441BCF359CB0BB05041F42CD56DD1D254418FC2F59810B0504100000090CBD254416666667616B050410AD7A390C4D25441666666661FB05041295C8F52BAD254417B14AE0724B0504148E17A84B4D254411458886025B0504177118A8EB2D25441D87AAD3728B050414A75286CAED254417CEEC43E2AB050415AA2D04AACD25441B81E853B2BB0504114AE4741ABD25441CDD7B88C36B05041B2E17E8CA1D254417D9F1E253CB0504188F1FFBF9CD254411D7FB72E37B05041CD35141E97D254413539179235B050410820CF1495D25441B81E853B33B050410AD7A32092D25441295C8F022FB050410000005090D2544196E56FF12CB05041CC5410F48ED25441DBAC51582BB050414FED0AE78DD2544185775CBF25B05041FF6FF6B889D254411231882B22B050417CADB08387D254413D0AD73320B05041CDCCCC4C86D25441BA08BAA11BB050413A018F5984D25441BA0753981AB05041E77D52E883D254417FF9A2AC1BB05041027B6F1A85D25441E17A14EE1EB050415C8FC2B588D254413A7C6B0B22B05041B4B599048CD2544159CC3E2A24B050412FD61E458ED254411B35D78328B050417A2F84FB92D25441C8595E1029B05041EC93944B95D2544148E17AC42AB050418FC2F5789CD25441552AAE4A29B050410CC3B0DEA1D2544114AE47A128B05041A4703D4AA4D25441F533F3CB26B05041FF9C6633A6D2544167723DCA25B050412F090040A7D254411F16C3A51FB05041C26FE28AADD25441B091A2641AB05041911366F1B0D2544148E17AC418B05041EC51B8FEB1D254417C163CFF15B05041FCA22BCAB3D254416C34EBD113B05041B3C43333B5D25441A17BFF7F0FB05041B908A500B8D25441792881E20CB05041826405AEB9D25441A4703D5A0BB050419A9999A9BAD2544148E17A7407B0504152B81E25BDD25441EC51B8FE03B0504114AE4761BFD25441CE020AFF02B0504166F8EC65C1D2544169CA48D101B05041E19CAEC7C3D254415632385000B05041DC78DEC6C6D254418FC2F5D8FFAF504148E17AB4C7D25441F0948493FEAF50412967A074CAD25441B5B4850BFEAF50411E61E09ACBD25441E929D521FDAF5041E0671896CDD25441E17A148EFAAF5041E17A142ED3D2544150A4A06CF9AF50411851A486D5D254415BE447D1F8AF5041F1E2F5C8D6D2544115CC143EF5AF50419E644841D8D2544131600A39F3AF5041C143C414D9D254411F85EB41F1AF5041295C8FE2D9D2544148E17AE4ECAF50410AD7A3B0DBD25441A4D3A7AEECAF5041AC1DE6C6DBD2544187AE3E5AE8AF5041A72A4891DDD25441FD643333E4AF504188DD3343DFD25441E22A85EBDFAF504180450010E1D25441733ADE1FDFAF50411569CB64E1D2544185EB5168DCAF504166666686E2D2544138588BDDD9AF50414B62838AE3D25441E3D8DF1AD9AF504127CA52D8E3D25441DC841870D8AF5041079FB71CE4D25441A4703D0AD6AF5041295C8F12E5D2544118A70E9BD4AF5041303BF6A9E5D2544111CDF4F8D3AF504120A9CDECE5D2544108742458D3AF5041EAE94801E6D254413D0AD743D2AF504148E17A24E6D254417B14AE37CEAF5041F6285C9FE6D25441FB85864DC9AF5041546D511EE7D25441464B3343C9AF504134285C1FE7D2544160455DDFC6AF50410305E2CAEAD2544168EF48A1C4AF50416D99A340EED25441D370615DC3AF5041F1327D26F0D25441B81E856BC2AF504114AE4791F1D2544148E17A34C0AF50418FC2F5F8F4D2544148E17A14BEAF504152B81E55F8D2544148E17AF4BBAF5041F6285C8FFBD254411F85EBF1B9AF504185EB51A8FED2544126C990E2B8AF5041D7BD3A9800D35441336DE24AB8AF5041F99170AD01D3544148264CBFB7AF5041FDDA7AAC03D354410AD7A360B7AF5041713D0A0705D35441713D0AB7B6AF5041A4703D9A07D35441A4703D1AB6AF5041666666260AD354415C8FC275B5AF504148E17AB40CD354415C8FC2E5B4AF504114AE47310FD35441B92D2590B4AF5041A7A590A110D3544124AAE24AB4AF50414A9E84CB11D354419C47EEC9B3AF50410B1109F713D35441333333B3B3AF50418FC2F55814D35441EA131653B3AF504176F0B36416D354412E0C853BB3AF5041157E1FE516D35441406E7BA4B2AF50412D2C138E19D35441E5AAC3F5B6AF5041283CAE8724D3544156FEE491B6AF504189E8295526D35441F6285C3FB6AF5041295C8FD227D35441CF87A307B8AF50414E92570728D35441E9FC296CBDAF504185F709A728D35441D2FC7386C2AF50410ED645F82BD35441BB6DF628C3AF50416212EC612CD35441C1131F05C5AF50416E5E28FC2FD3544177C8C315C4AF50418C3D66C63BD35441C8F6EEC6C6AF504121FFE98D3FD35441F43DAA1FC7AF5041F56D7B0A40D354411F9D5B4FC7AF504181DF6F4D40D35441A16E9A89CFAF50411D3C13AE3FD354419E65730ADCAF50417057544241D35441EC51B80EDDAF50413333336341D35441C9DB7AD4E2AF504101E9510844D35441AE47E1CAE8AF5041F6285CCF41D354417CBAD713F7AF5041A920525843D35441455C2658F7AF50417C1F0D6F43D354410AD7A36001B050415C8FC2C546D354412298381702B0504198C801F346D35441110000003D0AD733D3AF5041A4703D5A38D354410AD7A310CEAF50419A99998939D35441F6285C5FCDAF5041A4703D5A38D35441295C8FA2D0AF5041713D0A1735D3544148E17A14D5AF50417B14AEB732D35441666666A6D7AF50410000005033D3544152B81E65DCAF5041295C8F9236D35441F6285C2FDDAF50417B14AE373BD35441B81E855BDFAF5041713D0A673CD3544152B81EB5E3AF504148E17A2439D354413D0AD713E6AF50410AD7A3903FD35441A4703D1AE4AF504114AE47A142D3544185EB5148DDAF5041713D0AA740D35441CDCCCCACD5AF5041295C8F123FD35441B81E853BD9AF50419A9999993CD3544152B81EF5D6AF5041C3F528BC39D354413D0AD733D3AF5041A4703D5A38D354410A00000085EB51C80FB05041AE47E18A41D354410AD7A3300FB0504114AE47B145D35441EC51B89E0CB05041F6285C5F47D354419A999999FDAF5041CDCCCCEC42D354419A999969FCAF5041333333C33FD354410AD7A310F8AF50411F85EB313DD354410AD7A3A0F6AF5041F6285C8F38D3544148E17A9407B0504148E17A343CD3544185EB51880BB050418FC2F5F83ED3544185EB51C80FB05041AE47E18A41D354410B000000B81E859B4FB05041EC51B81E7BD35441713D0A5750B05041D7A370CD79D354418FC2F5A854B05041EC51B8AE7AD354413D0AD71357B0504148E17AD47DD35441A4703D1A58B05041713D0A2782D35441295C8F3256B05041C3F5288C86D354416666667652B050418FC2F59888D354413D0AD74350B050416666666686D354413D0AD74350B05041333333C383D3544185EB51884FB05041EC51B8EE81D35441B81E859B4FB05041EC51B81E7BD35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454171 - 372842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001D0000000AD7A38020B05041CDCCCC1C20D854410AD7A39023B050419A9999E928D85441AE47E10A2BB050418FC2F5783ED854417B14AE072CB050415C8FC2553FD854418FC2F5782FB05041C3F528BC40D85441295C8FD237B050415C8FC2A542D854415C8FC2A53DB05041713D0A2744D854410000008040B05041D7A3703D45D85441E17A149E43B050416666660647D854419A99995952B05041C3F5285C53D85441CDCCCC5C56B05041D7A370DD55D85441666666C65AB05041A4703D1A58D85441A4703DCA6FB0504152B81EF560D85441A4703DEA76B05041E17A144E64D85441AE47E1FA7CB050410AD7A39067D85441A4703DEA81B050413D0AD7C36AD854415C8FC23584B050419A9999396ED854418FC2F5C8C5B05041C3F5286C9FD85441EC51B80EA7B05041333333D379D854415C8FC2A589B05041EC51B80E60D854417B14AEF785B050418FC2F5C85ED854410AD7A3F056B05041333333834ED854410AD7A37065B05041B81E859B28D854419A9999A95DB050419A99997927D854411F85EB613AB05041EC51B89E23D85441C3F5280C30B05041D7A3707D22D85441D7A3706D29B050416666667621D854415C8FC21523B0504148E17AC41FD854410AD7A38020B05041CDCCCC1C20D85441
+</a>
+
+<b>
+0106000000010000000103000000010000003000000079ABEB613AB050411D56B89E23D85441C3F5280C30B05041D7A3707D22D85441D7A3706D29B050416666667621D85441CB7F079A25B05041BB58A87020D85441FC8EC21523B0504155E17AC41FD85441F7350B2C22B05041ACD6B3E31FD854413CD7A38020B05041C6CCCC1C20D854410AD7A39023B050419A9999E928D85441AE47E10A2BB050418FC2F5783ED854414114AE072CB05041298FC2553FD85441D6C2F5782FB050418DF528BC40D85441CE4B0A1933B050418EB1BA9041D85441295C8FD237B050415C8FC2A542D854415C8FC2A53DB05041713D0A2744D854412C56EC623FB0504149B3BA6E44D854415172149E43B050417F61660647D854415496E7F94AB05041DEDAA82F4DD85441269A995952B05041BCF5285C53D85441281DA08954B05041678AC8B954D85441CDCCCC5C56B05041D7A370DD55D85441FE33DB7E5AB050416A21F6F557D854419E6666C65AB05041BB703D1A58D85441A00380295CB050416BF2DDAF58D854412F713DCA6FB050414DB81EF560D85441CDDC91B872B0504116B3A45562D85441A4703DEA76B05041E17A144E64D8544172ECCEF579B050414E221BF165D854411C48E1FA7CB05041DAD6A39067D85441CF703DEA81B05041460AD7C36AD8544118EC975982B050410F22B86B6BD854415C8FC23584B050419A9999396ED8544172C1F5C8C5B05041EDF4286C9FD85441D9B76799B9B0504196FE238390D85441EC51B80EA7B05041333333D379D85441D53ABF6396B0504173B4B3386BD85441538FC2A589B050417252B80E60D85441C514AEF785B050412FC3F5C85ED854415D9EAC3C6CB05041B2D2B7E155D854410AD7A3F056B05041333333834ED85441180253C860B05041ECD765C834D854410AD7A37065B05041B81E859B28D8544151ED27C760B05041F7E6BBED27D85441409999A95DB05041A199997927D85441A341840F4CB050417AE1398D25D85441D9A4788C4BB05041872A8B2229D8544107CE4A9A45B050417D895ADD28D85441116F7BDF45B05041F8BAB11425D8544179ABEB613AB050411D56B89E23D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454180 - 52692
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB51E87CB55041AE47E1BAF2E254416666669680B5504148E17AE4D2E25441333333E35BB5504152B81E15D2E25441AE47E18A23B55041295C8FC2D0E25441F6285C7F21B5504114AE4711D2E254417B14AED717B55041EC51B8CEEEE254411F85EB510FB550418FC2F50808E3544114AE47B13FB55041295C8F1209E354417B14AE3753B5504152B81E8509E3544148E17A845DB5504148E17A2413E35441000000B05FB550413333337313E35441EC51B8AE69B55041000000000AE354417B14AEE76AB550418FC2F5080AE354418FC2F5C876B550413D0AD703FFE254410AD7A3C079B550419A999969FBE2544114AE47E17BB55041CDCCCC4CF7E2544185EB51E87CB55041AE47E1BAF2E25441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D71219BD7DB550410964088AEBE25441B67430E97DB55041FBA9930CEAE25441BC5E09ED7DB550413DAF4AEBE9E254412A8591147EB55041C2424895E8E254418DDA1F557EB55041A5C6C666E6E2544185DF1B517FB5504124FFBBE2DDE254416A1EB9777FB55041EAD8A994DCE2544193DB22BA7FB5504147651756DAE254415B465F9380B5504109DFACFED2E2544168A903474BB55041187FF4F9D1E25441F072557E23B55041DEE394CAD0E254410089E58021B55041832B4C10D2E25441EFF9956B21B550411543244CD2E25441851DA8CA1EB55041C39B5D28DAE2544148288A9D78B55041265EE6D6DAE254411DE1EF9176B5504116C85A5FEBE25441D71219BD7DB550410964088AEBE25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454205 - 3028404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000007B14AE77FDB950417B14AE4738C95441713D0A27FEB950417B14AEA732C95441AE47E1EAFEB950419A9999992DC954419A99992900BA5041B81E85AB2DC954410AD7A3C00EBA50415C8FC23538C954413333335315BA50411F85EBB128C95441E17A14CE0CBA50417B14AEB721C9544152B81ED506BA504185EB51A81BC954419A9999D9FEB950410AD7A3C015C954413D0AD7B3F9B950410AD7A30011C9544166666686F3B950419A9999D90CC954415C8FC285F3B95041666666160EC954419A999979F3B9504148E17AB42FC95441295C8FD2E7B950411F85EB512EC95441B81E855BE6B950413D0AD7A331C954417B14AED7DDB9504185EB512831C954413D0AD793CCB950413D0AD7232EC95441EC51B86ECAB950413D0AD7C32DC9544185EB5158C3B9504152B81EB52BC9544152B81E55C3B950416666663635C95441295C8F32C9B95041C3F528DC33C954417B14AE77FDB950417B14AE4738C95441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000004D4F209BCCB95041BC29DF5117C95441EA86FB97DFB9504158E4BAB516C9544126512980F3B950414653B8321FC954415C8FC285F3B95041466666160EC95441F6285C2FEAB9504116295CCF07C954415B14AE97E2B95041CB51B83E08C95441F77A146EE2B9504114AE47A106C95441666666A6D8B95041D91E859B07C9544120D7A3A0CCB95041F5FFFFDF08C954414D4F209BCCB95041BC29DF5117C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454205 - 177328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000007B14AE77FDB950417B14AE4738C95441713D0A27FEB950417B14AEA732C95441AE47E1EAFEB950419A9999992DC954419A99992900BA5041B81E85AB2DC954410AD7A3C00EBA50415C8FC23538C954413333335315BA50411F85EBB128C95441E17A14CE0CBA50417B14AEB721C9544152B81ED506BA504185EB51A81BC954419A9999D9FEB950410AD7A3C015C954413D0AD7B3F9B950410AD7A30011C9544166666686F3B950419A9999D90CC954415C8FC285F3B95041666666160EC954419A999979F3B9504148E17AB42FC95441295C8FD2E7B950411F85EB512EC95441B81E855BE6B950413D0AD7A331C954417B14AED7DDB9504185EB512831C954413D0AD793CCB950413D0AD7232EC95441EC51B86ECAB950413D0AD7C32DC9544185EB5158C3B9504152B81EB52BC9544152B81E55C3B950416666663635C95441295C8F32C9B95041C3F528DC33C954417B14AE77FDB950417B14AE4738C95441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000026512980F3B950414353B8321FC954415C8FC285F3B95041466666160EC95441F6285C2FEAB9504116295CCF07C954415B14AE97E2B95041CB51B83E08C95441F77A146EE2B9504114AE47A106C95441666666A6D8B95041D91E859B07C9544120D7A3A0CCB95041F5FFFFDF08C95441CEB1209BCCB950412C1CDD5017C95441EA86FB97DFB9504158E4BAB516C9544126512980F3B950414353B8321FC95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454464 - 58231
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D0000003D0AD7D335B35041EC51B84EC8D55441EC51B8BE39B350413D0AD783C6D55441A4703DDA3CB35041713D0A17C4D554410AD7A3303FB35041A4703DEAC0D5544114AE47E140B350415C8FC225BCD55441CDCCCC0C45B35041713D0AF7ADD55441EC51B8EE47B350418FC2F5E8A5D5544114AE474122B35041F6285CDFA0D554417B14AE1718B35041C3F5289CCAD5544152B81E5520B350418FC2F578CBD5544148E17AF426B35041D7A3707DCBD55441B81E85BB31B3504152B81EB5C9D554413D0AD7D335B35041EC51B84EC8D55441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000921F1CF124B3504141BC523BA1D55441A20511C125B35041D5882057A1D554417384ED0628B350411017ECA4A1D55441198B55652CB350418A25743AA2D55441D3AA40C734B350415B315D59A3D554416EC24D8C3BB350414EE51241A4D554410F5968A946B35041F82F77BDA5D55441EC51B8EE47B350418FC2F5E8A5D5544161FC273948B350418B6F6E62A5D5544124A1D48448B35041BB3CAAD9A4D5544198DA25BD4AB35041F7698BD6A0D55441E9276C224BB350412BC8821FA0D554418EABE31B4CB350418EBC125C9ED554414540B8484BB35041B12A58189ED554413EBEDDCD4AB35041DEFDF0F09DD55441293DB0B447B350412B121AF79CD55441EF95732D46B3504193B184909CD55441FFA0ABB345B35041754396709CD55441713679DC43B3504106A709F59BD55441BF6CB80943B350417D11C7BD9BD554419A84D77042B35041C540B1959BD55441A632C8E840B35041B74D058B9BD55441C68E59923DB35041C25C23959BD55441D7A370AD3BB35041AE47E19A9BD55441924BE46739B35041372AEF6D9BD55441744A1F4C38B35041E1B100589BD55441F5C1789937B35041B509324A9BD55441AE47E1DA35B350417B14AE279BD554411A45133835B350412C91F1029BD55441B96DB11733B350419F001B889AD554410A45326F30B350415AB38DEE99D554418FC2F5482FB35041C3F528AC99D554418C4C10002AB350417B8444FC97D55441AC91B52B27B35041A431071597D55441AB36E1AD25B350414776229B96D554419276E15825B35041EDFAFF7F96D55441663EB1E224B35041FC1F455A96D55441596DEAB724B3504137D289C296D55441C68BB33B24B350417E4FA4C098D5544102EFE37E22B350410FC951E39FD55441E8F94C4122B350413CDE5CDFA0D5544123DDF0A722B350418EF715EDA0D55441921F1CF124B3504141BC523BA1D55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454465 - 58231
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000014AE474122B35041F6285CDFA0D55441EC51B8EE47B350418FC2F5E8A5D55441C3F5281C4CB35041C3F5285C9ED55441295C8F0248B35041B81E850B9DD554418FC2F53842B35041713D0A879BD55441D7A370AD3BB35041AE47E19A9BD55441AE47E1DA35B350417B14AE279BD554418FC2F5482FB35041C3F528AC99D55441295C8FD224B3504152B81E5596D5544114AE474122B35041F6285CDFA0D55441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000921F1CF124B3504141BC523BA1D55441A20511C125B35041D5882057A1D554417384ED0628B350411017ECA4A1D55441198B55652CB350418A25743AA2D55441D3AA40C734B350415B315D59A3D554416EC24D8C3BB350414EE51241A4D554410F5968A946B35041F82F77BDA5D55441EC51B8EE47B350418FC2F5E8A5D5544161FC273948B350418B6F6E62A5D5544124A1D48448B35041BB3CAAD9A4D5544198DA25BD4AB35041F7698BD6A0D55441E9276C224BB350412BC8821FA0D554418EABE31B4CB350418EBC125C9ED554414540B8484BB35041B12A58189ED554413EBEDDCD4AB35041DEFDF0F09DD55441293DB0B447B350412B121AF79CD55441EF95732D46B3504193B184909CD55441FFA0ABB345B35041754396709CD55441713679DC43B3504106A709F59BD55441BF6CB80943B350417D11C7BD9BD554419A84D77042B35041C540B1959BD55441A632C8E840B35041B74D058B9BD55441C68E59923DB35041C25C23959BD55441D7A370AD3BB35041AE47E19A9BD55441924BE46739B35041372AEF6D9BD55441744A1F4C38B35041E1B100589BD55441F5C1789937B35041B509324A9BD55441AE47E1DA35B350417B14AE279BD554411A45133835B350412C91F1029BD55441B96DB11733B350419F001B889AD554410A45326F30B350415AB38DEE99D554418FC2F5482FB35041C3F528AC99D554418C4C10002AB350417B8444FC97D55441AC91B52B27B35041A431071597D55441AB36E1AD25B350414776229B96D554419276E15825B35041EDFAFF7F96D55441663EB1E224B35041FC1F455A96D55441596DEAB724B3504137D289C296D55441C68BB33B24B350417E4FA4C098D5544102EFE37E22B350410FC951E39FD55441E8F94C4122B350413CDE5CDFA0D5544123DDF0A722B350418EF715EDA0D55441921F1CF124B3504141BC523BA1D55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454657 - 177978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000005C8FC2C5C1B450411F85EB31A2DD5441EC51B85EC5B450419A999929A5DD5441E17A145EC7B4504133333373A6DD5441333333C3C9B450418FC2F588A7DD5441B81E85CBCCB450417B14AE17A8DD544148E17AD4CCB4504114AE47D1A7DD5441CDCCCC6CD0B45041A4703D1A8DDD544148E17A04D4B450410AD7A36072DD54419A9999A9BFB45041F6285C1F71DD544114AE47A1BEB450419A9999A971DD5441713D0A67BBB450417B14AE0777DD5441D7A370EDB8B45041666666267CDD5441CDCCCC5CB6B45041EC51B89E83DD544133333323B5B45041000000F089DD5441EC51B8EEB3B45041A4703DBA93DD544114AE47C1B3B450419A9999699BDD5441EC51B83EB4B45041000000309DDD5441713D0A57B4B45041B81E858B9DDD5441295C8F82B5B45041D7A3700D9DDD544114AE4741B9B450411F85EB819CDD54413D0AD753BBB45041A4703D8A9CDD544114AE4761BDB4504114AE47819DDD54415C8FC2C5C1B450411F85EB31A2DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000002200000014AE4761BDB4504114AE47819DDD5441B417BA61BDB4504176D7C1819DDD54414D40FCC8C1B4504132C26334A2DD54415804B95EC5B45041F5899929A5DD54411FBC3440C7B4504162CDF15FA6DD5441E17A145EC7B4504133333373A6DD5441333333C3C9B450418FC2F588A7DD5441C44CD39CCCB450411C78180FA8DD54416DD583CBCCB450417FBEAD17A8DD5441DC5B7AD4CCB45041CB3F46D1A7DD54418033CC6CD0B4504164B93E1A8DDD5441D5847A04D4B4504157D1A36072DD5441AE61A307D0B45041280AB32172DD5441712A29DCC5B450414F2D2E8171DD5441AF6099A9BFB45041BD465C1F71DD5441F6D32D9ABFB45041B6DA6C2771DD54410A86C796BFB450419006342971DD54417AB747A1BEB4504194739AA971DD5441B6C80967BBB450416A7FAF0777DD544117CD71EDB8B45041464066267CDD54413C05CE5CB6B450419966B89E83DD544121743323B5B45041CB8400F089DD544105ACDAB2B4B45041855FC0808DDD5441EC51B8EEB3B45041A4703DBA93DD544114AE47C1B3B450419A9999699BDD54417C9D7307B4B45041DF09CB679CDD5441B823B93EB4B450416CBBFF2F9DDD5441D3D15C48B4B45041875A49549DDD5441713D0A57B4B45041B81E858B9DDD54413352AF64B4B45041EABDC6859DDD544143558E82B5B4504133786F0D9DDD54413C374841B9B450414251EA819CDD54413D0AD753BBB45041A4703D8A9CDD544114AE4761BDB4504114AE47819DDD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454671 - 426297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002400000052B81E75C4AF504185EB5168D8C5544100000000A9AF50417B14AE17D5C55441EC51B80EBAAF5041AE47E16AECC5544152B81E25BCAF5041000000A0F2C554411F85EB31C0AF504100000090F7C554418FC2F508C4AF504133333363F5C55441B81E852BC7AF5041CDCCCC4CF4C55441295C8F62C8AF5041D7A370BDF1C55441EC51B85ECAAF50419A999919F1C55441B81E857BCCAF5041A4703D3AF1C55441E17A14EECCAF5041D7A3707DF4C55441295C8F52C8AF50417B14AE77FBC5544100000090C2AF5041C3F5283CFCC554418FC2F5E8C3AF50410AD7A370FEC5544152B81ED5C9AF5041B81E859B00C654413D0AD7C3D0AF50411F85EB1101C6544114AE47B1D0AF504152B81E95FFC5544148E17A54D7AF504185EB51F8FCC554419A999969D3AF50415C8FC215FAC554415C8FC2E5D0AF504148E17A44F8C554418FC2F578D1AF5041295C8F92F2C55441CDCCCC1CDFAF5041CDCCCC1CEEC55441D7A370FDDCAF504185EB51B8EBC5544114AE4731D0AF504133333313F0C55441D7A370ADCEAF50415C8FC275EDC5544114AE4701CFAF5041E17A144EEAC554411F85EB91CEAF5041000000E0E6C5544185EB5198CEAF50417B14AE77E3C55441CDCCCC0CD2AF504166666646E3C55441666666A6D3AF5041B81E855BE1C55441B81E85DBD1AF50410AD7A3A0DFC55441C3F5284CCFAF50418FC2F548DEC554415C8FC295CBAF5041D7A3706DDCC554411F85EB41C8AF5041F6285CFFD9C55441295C8FA2C5AF5041A4703D3AD9C5544152B81E75C4AF504185EB5168D8C55441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000295C8FA2C5AF5041A4703D3AD9C55441D22A0692C4AF504172D3727CD8C55441FBB33CB8C3AF5041DB06451FDAC55441D077BBF0C1AF5041956AB61FDCC55441B03B3A29C0AF504150CE2720DEC55441E33A21B7BEAF504156D05904E1C55441F6D7C828BEAF5041F8819204E2C554413061F87DBDAF504123D17276E2C55441BA86B6D2BAAF504155AA9BAFE3C554415D5EAD27B9AF504110216C5AE4C55441B9DCC19CB6AF504127BEDAB4E7C554416B9EC2FEB9AF5041C15A0E55ECC55441EC51B80EBAAF5041AE47E16AECC5544152B81E25BCAF5041000000A0F2C554411F85EB31C0AF504100000090F7C554418FC2F508C4AF504133333363F5C55441B81E852BC7AF5041CDCCCC4CF4C55441295C8F62C8AF5041D7A370BDF1C55441EC51B85ECAAF50419A999919F1C55441B81E857BCCAF5041A4703D3AF1C554413A5CF1CECCAF5041572B6F9AF3C55441E17A14EECCAF5041D7A3707DF4C55441CBAB088CCCAF5041C241EB11F5C554417BBA3557C8AF50414E69A370FBC55441295C8F52C8AF50417B14AE77FBC554415D3BC67CC4AF504195794B2EFBC5544117652739C2AF5041D55AD3DFFCC55441E5C2F5E8C3AF5041D5D6A370FEC55441EA4BE195C6AF5041151D4E6BFFC554417B9CE409C8AF5041651174F3FFC55441C11E0FCFC8AF50416E969C3B00C6544130A8A59ED0AF50415C193909F7C55441F1466682D1AF504112B49524F2C554412E208FBBD2AF5041BC15D540F1C5544109D3E02DD5AF50412CEEE407F1C55441AFD876DADDAF5041CFD83A07EEC55441D7A370FDDCAF504185EB51B8EBC554414D5B0E93DBAF504154FA4D65E9C554417F876484DAAF504148E967CDE9C5544154388412DAAF504103603878EAC5544135996F1FDAAF5041D9291AB2ECC5544167FBE9D8D6AF5041B6260207EDC55441A4FAD066D5AF5041844DD9CDEBC554413CAC0967D6AF5041734BA7E9E8C554412272BA83D7AF504129C045B0E6C55441BC99AABCD7AF5041430DF43DE4C554417998914AD6AF5041B30BC259E1C55441F120A82DD4AF5041E0E2B8AEDFC55441B81E85DBD1AF50410AD7A3A0DFC554417B2C5F11CEAF5041CEBB75ABDDC554416297311FCCAF5041760034B2DCC554415C8FC295CBAF5041D7A3706DDCC554411F85EB41C8AF5041F6285CFFD9C55441295C8FA2C5AF5041A4703D3AD9C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454743 - 398793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000006000000713D0A678DB0504133333353C1C55441B81E85FB8DB0504185EB5178C5C554413333339399B0504133333323C0C5544114AE47C1ADB05041F6285C6FBAC55441E17A149EABB0504148E17A94B9C55441713D0A678DB0504133333353C1C55441010300000001000000240000007B14AED768B0504148E17AD4D5C5544152B81E7567B050410AD7A3F0D3C55441F6285C4F66B05041000000D0D3C55441CDCCCC9C66B05041713D0AD7D0C55441E17A14AE61B05041D7A3708DD0C55441C3F528AC63B0504148E17A84D3C5544185EB518861B05041C3F5281CD7C554413D0AD75365B05041D7A3701DDCC554419A99990966B05041B81E858BDFC554410AD7A3206DB05041F6285C6FE5C554418FC2F5786FB05041713D0A97E3C5544185EB51A874B050417B14AE67E7C554413D0AD76376B05041B81E85FBE5C554418FC2F5A878B05041B81E85CBE3C55441CDCCCC4C78B050415C8FC285E1C55441295C8F927AB050411F85EBF1DEC55441A4703DAA7EB050418FC2F598E0C5544185EB515880B05041000000E0DEC55441295C8FA281B0504133333363DEC5544148E17A6482B05041AE47E1DAC9C554410AD7A38083B05041AE47E14AC8C55441713D0AB78BB0504148E17A14C6C55441A4703D6A8BB050411F85EB21C5C55441295C8F728CB050413D0AD793C3C5544114AE47318CB05041295C8FA2C1C55441CDCCCC7C8AB0504133333373C1C554418FC2F58884B05041F6285CBFC2C5544185EB51B880B05041F6285C6FC3C55441D7A3709D7AB0504185EB5148C3C55441B81E85FB73B050419A9999F9C2C55441EC51B8FE73B050419A999919C6C55441B81E854B72B05041D7A3707DCEC55441713D0A1771B05041CDCCCC5CD0C55441CDCCCC2C6EB05041E17A142ED3C5544148E17AC46AB050418FC2F518D6C554417B14AED768B0504148E17AD4D5C55441
+</a>
+
+<b>
+010600000001000000010300000001000000210000006C34854B72B05041BC38707DCEC55441713D0A1771B05041CDCCCC5CD0C55441CDCCCC2C6EB05041E17A142ED3C5544148E17AC46AB050418FC2F518D6C55441CAAEACD768B05041EBEC7BD4D5C55441873D03A967B05041B32C7437D4C5544152B81E7567B050410AD7A3F0D3C55441F6285C4F66B05041000000D0D3C55441CDCCCC9C66B05041713D0AD7D0C55441E17A14AE61B05041D7A3708DD0C55441C3F528AC63B0504148E17A84D3C5544185EB518861B05041C3F5281CD7C554413D0AD75365B05041D7A3701DDCC554419A99990966B05041B81E858BDFC554410AD7A3206DB05041F6285C6FE5C554418FC2F5786FB05041713D0A97E3C5544185EB51A874B050417B14AE67E7C554413D0AD76376B05041B81E85FBE5C554418FC2F5A878B05041B81E85CBE3C55441CDCCCC4C78B050415C8FC285E1C55441295C8F927AB050411F85EBF1DEC55441C719EEA97EB050414AB9D598E0C554415C98505780B05041A5D507E1DEC554416EEE505880B050417E0301E0DEC55441E743843B81B05041BEDE5ADFC7C55441A4703D6A8BB050411F85EB21C5C55441295C8F728CB050413D0AD793C3C5544127091E428CB05041FE20D222C2C55441C78C47318CB050412F9C90A2C1C554419060347382B050414DE5E10AC4C5544156A779447CB0504131E0D733C4C55441D6FCB8FE73B05041CD889A19C6C554416C34854B72B05041BC38707DCEC55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454922 - 177680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E2545B35041CDCCCC1C5CCD54419A9999A934B35041F6285C3F54CD5441E17A14BE32B350418FC2F51857CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54410000009029B350413D0AD7535BCD5441AE47E1DA3FB35041713D0AF765CD54417B14AE8741B350410000008062CD544152B81E2545B35041CDCCCC1C5CCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000903E019029B3504140A2D7535BCD5441E81F9B7F2EB350411535CEAE5DCD544171FCE1DA3FB3504181C708F765CD54417B14AE8741B350410000008062CD544165631E2545B35041DC62CD1C5CCD54418A7099A934B35041E9655C3F54CD5441E17A14BE32B350418FC2F51857CD5441CF0729B630B350415726AC2758CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54411620E3F42BB35041ACC8CD125ACD5441903E019029B3504140A2D7535BCD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454922 - 365061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E2545B35041CDCCCC1C5CCD54419A9999A934B35041F6285C3F54CD5441E17A14BE32B350418FC2F51857CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54410000009029B350413D0AD7535BCD5441AE47E1DA3FB35041713D0AF765CD54417B14AE8741B350410000008062CD544152B81E2545B35041CDCCCC1C5CCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000903E019029B3504140A2D7535BCD5441E81F9B7F2EB350411535CEAE5DCD544171FCE1DA3FB3504181C708F765CD54417B14AE8741B350410000008062CD544165631E2545B35041DC62CD1C5CCD54418A7099A934B35041E9655C3F54CD5441E17A14BE32B350418FC2F51857CD5441CF0729B630B350415726AC2758CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54411620E3F42BB35041ACC8CD125ACD5441903E019029B3504140A2D7535BCD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 2914345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441699DEC10BCB4504134A90CF3A2E454417D8E66D5BBB450415C77FFE1A2E45441FBB8AC24BBB45041FA70FE8FA2E4544138336C6AB8B45041100EFE4BA1E45441D731FD80B5B45041030919F29FE45441270BD6E2B4B45041282D8E9AA0E454419689EF13B4B450412FDCE0B6A1E45441EC4B2E9BB2B45041E99B9DBCA3E45441EB8925F8AFB4504124C43F5CA7E45441F1929914AAB45041EB47EC73AFE4544123351855A7B450419475AE3AB3E454419AB26045A9B4504166C3EE5EB4E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 3315465
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441699DEC10BCB4504134A90CF3A2E454417D8E66D5BBB450415C77FFE1A2E45441FBB8AC24BBB45041FA70FE8FA2E4544138336C6AB8B45041100EFE4BA1E45441D731FD80B5B45041030919F29FE45441270BD6E2B4B45041282D8E9AA0E454419689EF13B4B450412FDCE0B6A1E45441EC4B2E9BB2B45041E99B9DBCA3E45441EB8925F8AFB4504124C43F5CA7E45441F1929914AAB45041EB47EC73AFE4544123351855A7B450419475AE3AB3E454419AB26045A9B4504166C3EE5EB4E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 142906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441699DEC10BCB4504134A90CF3A2E454417D8E66D5BBB450415C77FFE1A2E45441FBB8AC24BBB45041FA70FE8FA2E4544138336C6AB8B45041100EFE4BA1E45441D731FD80B5B45041030919F29FE45441270BD6E2B4B45041282D8E9AA0E454419689EF13B4B450412FDCE0B6A1E45441EC4B2E9BB2B45041E99B9DBCA3E45441EB8925F8AFB4504124C43F5CA7E45441F1929914AAB45041EB47EC73AFE4544123351855A7B450419475AE3AB3E454419AB26045A9B4504166C3EE5EB4E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 289552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441699DEC10BCB4504134A90CF3A2E454417D8E66D5BBB450415C77FFE1A2E45441FBB8AC24BBB45041FA70FE8FA2E4544138336C6AB8B45041100EFE4BA1E45441D731FD80B5B45041030919F29FE45441270BD6E2B4B45041282D8E9AA0E454419689EF13B4B450412FDCE0B6A1E45441EC4B2E9BB2B45041E99B9DBCA3E45441EB8925F8AFB4504124C43F5CA7E45441F1929914AAB45041EB47EC73AFE4544123351855A7B450419475AE3AB3E454419AB26045A9B4504166C3EE5EB4E45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455159 - 18977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000300000006666661652B05041CDCCCC3C86DA5441E17A144E56B05041A4703D1A8BDA54415C8FC2855AB05041EC51B8BE90DA54418FC2F5B85BB050418FC2F5588DDA5441EC51B89E5DB05041D7A3708D89DA544152B81E055FB050413D0AD7F387DA544148E17A8461B0504114AE47C186DA5441A4703D6A63B050417B14AEA786DA544152B81E8567B05041C3F528DC87DA5441EC51B88E6CB05041F6285C1F76DA544114AE47216FB050417B14AE276CDA54413D0AD79370B050419A99993967DA544185EB51F871B05041B81E854B65DA5441AE47E18A74B0504152B81E5564DA54417B14AE977BB050410AD7A37062DA544148E17A5477B05041333333F339DA5441C3F5280C85B050418FC2F54837DA5441295C8FE281B0504152B81E7527DA5441F6285C8F6FB05041713D0A072ADA54413D0AD7F36DB0504152B81EB529DA5441333333336DB05041713D0A2725DA54411F85EB6165B0504114AE475126DA54417B14AEC765B05041D7A3704D28DA5441E17A140E69B0504148E17A743ADA54411F85EBE14CB0504185EB514843DA5441B81E855B37B05041E17A14EE49DA54415C8FC2052CB0504185EB51D84ADA54413D0AD7732DB05041E17A145E58DA5441666666D610B05041A4703DFA58DA5441333333E3E7AF5041A4703DFA5EDA54418FC2F508EBAF50411F85EBA164DA544185EB51C8FBAF5041713D0A6784DA544148E17AF4FFAF50417B14AEE789DA544114AE474111B0504152B81E4596DA54413D0AD75329B05041CDCCCC4CA2DA544148E17A7437B0504152B81E1581DA5441713D0AA737B05041C3F5285C7FDA5441713D0AA737B05041666666767CDA5441AE47E15A36B05041D7A3704D4EDA5441A4703DDA37B05041713D0A674EDA5441A4703D5A38B05041B81E857B66DA5441A4703DDA38B05041CDCCCC5C7DDA54413333337344B050411F85EBB17FDA54411F85EBD14BB050411F85EBF181DA5441C3F5285C4BB0504148E17A647CDA54410AD7A32052B050411F85EB1178DA5441EC51B83E55B0504185EB51F87DDA54416666661652B05041CDCCCC3C86DA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000004386075C36B0504174B654764EDA544110B58F1536B0504174B425674EDA5441BF3E456A34B050419B6D17D94EDA544197D9DBB533B05041F193408E51DA5441E14758D233B05041B331F9C753DA54419BDD427D34B0504197843CAC55DA54410F0918D335B050419830B4EE55DA54415BCF837436B050419830B4EE55DA54413001D79136B0504187AEB2F055DA54414386075C36B0504174B654764EDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455159 - 64730
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000300000006666661652B05041CDCCCC3C86DA5441E17A144E56B05041A4703D1A8BDA54415C8FC2855AB05041EC51B8BE90DA54418FC2F5B85BB050418FC2F5588DDA5441EC51B89E5DB05041D7A3708D89DA544152B81E055FB050413D0AD7F387DA544148E17A8461B0504114AE47C186DA5441A4703D6A63B050417B14AEA786DA544152B81E8567B05041C3F528DC87DA5441EC51B88E6CB05041F6285C1F76DA544114AE47216FB050417B14AE276CDA54413D0AD79370B050419A99993967DA544185EB51F871B05041B81E854B65DA5441AE47E18A74B0504152B81E5564DA54417B14AE977BB050410AD7A37062DA544148E17A5477B05041333333F339DA5441C3F5280C85B050418FC2F54837DA5441295C8FE281B0504152B81E7527DA5441F6285C8F6FB05041713D0A072ADA54413D0AD7F36DB0504152B81EB529DA5441333333336DB05041713D0A2725DA54411F85EB6165B0504114AE475126DA54417B14AEC765B05041D7A3704D28DA5441E17A140E69B0504148E17A743ADA54411F85EBE14CB0504185EB514843DA5441B81E855B37B05041E17A14EE49DA54415C8FC2052CB0504185EB51D84ADA54413D0AD7732DB05041E17A145E58DA5441666666D610B05041A4703DFA58DA5441333333E3E7AF5041A4703DFA5EDA54418FC2F508EBAF50411F85EBA164DA544185EB51C8FBAF5041713D0A6784DA544148E17AF4FFAF50417B14AEE789DA544114AE474111B0504152B81E4596DA54413D0AD75329B05041CDCCCC4CA2DA544148E17A7437B0504152B81E1581DA5441713D0AA737B05041C3F5285C7FDA5441713D0AA737B05041666666767CDA5441AE47E15A36B05041D7A3704D4EDA5441A4703DDA37B05041713D0A674EDA5441A4703D5A38B05041B81E857B66DA5441A4703DDA38B05041CDCCCC5C7DDA54413333337344B050411F85EBB17FDA54411F85EBD14BB050411F85EBF181DA5441C3F5285C4BB0504148E17A647CDA54410AD7A32052B050411F85EB1178DA5441EC51B83E55B0504185EB51F87DDA54416666661652B05041CDCCCC3C86DA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000004386075C36B0504174B654764EDA544110B58F1536B0504174B425674EDA5441BF3E456A34B050419B6D17D94EDA544197D9DBB533B05041F193408E51DA5441E14758D233B05041B331F9C753DA54419BDD427D34B0504197843CAC55DA54410F0918D335B050419830B4EE55DA54415BCF837436B050419830B4EE55DA54413001D79136B0504187AEB2F055DA54414386075C36B0504174B654764EDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464972 - 2941840
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE47E1B950417B14AE3762155541A4703DFA08BA50413D0AD7C35C155541713D0AE736BA50413D0AD7735615554152B81E1540BA5041713D0A17341555418FC2F5283FBA5041F6285C0F33155541F6285CEF2EBA5041C3F5284C351555410000005016BA5041E17A14AE381555415C8FC2450FBA504152B81E35391555413D0AD73308BA504148E17AC438155541E17A144EFFB95041713D0AD737155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC2754915554100000040EBB95041F6285C2F4E1555413D0AD723E7B950411F85EB61561555417B14AE47E1B950417B14AE3762155541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000AF04D86F21BA5041A78C05AA391555416904D57515BA5041F9C7944D3B155541ABF10E0A10BA5041E5D72E043C15554123CC823205BA504167C1DD4C3D155541CC85635704BA5041C7F762713D15554123CC823205BA5041078B58283D15554123CC823205BA5041018627203D155541625F78E904BA5041078B58283D1555418099503005BA5041FCCB689738155541FC0F7AC6FFB95041BF2A97E337155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC2754915554100000040EBB95041F6285C2F4E1555413D0AD723E7B950411F85EB61561555417B14AE47E1B950417B14AE3762155541A4703DFA08BA50413D0AD7C35C155541713D0AE736BA50413D0AD7735615554152B81E1540BA5041713D0A17341555418FC2F5283FBA5041F6285C0F33155541413D438F30BA504120EB0E21351555418C28758B30BA504187F6982135155541E2B3337630BA504146F8CFB636155541F8CEBDD930BA50417D0B8873371555414DB6A68D30BA5041038D217E371555412D62B39030BA5041DD410D9837155541AF04D86F21BA5041A78C05AA39155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464972 - 3703666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE47E1B950417B14AE3762155541A4703DFA08BA50413D0AD7C35C155541713D0AE736BA50413D0AD7735615554152B81E1540BA5041713D0A17341555418FC2F5283FBA5041F6285C0F33155541F6285CEF2EBA5041C3F5284C351555410000005016BA5041E17A14AE381555415C8FC2450FBA504152B81E35391555413D0AD73308BA504148E17AC438155541E17A144EFFB95041713D0AD737155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC2754915554100000040EBB95041F6285C2F4E1555413D0AD723E7B950411F85EB61561555417B14AE47E1B950417B14AE3762155541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000AF04D86F21BA5041A78C05AA391555416904D57515BA5041F9C7944D3B155541ABF10E0A10BA5041E5D72E043C15554123CC823205BA504167C1DD4C3D155541CC85635704BA5041C7F762713D15554123CC823205BA5041078B58283D15554123CC823205BA5041018627203D155541625F78E904BA5041078B58283D1555418099503005BA5041FCCB689738155541FC0F7AC6FFB95041BF2A97E337155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC2754915554100000040EBB95041F6285C2F4E1555413D0AD723E7B950411F85EB61561555417B14AE47E1B950417B14AE3762155541A4703DFA08BA50413D0AD7C35C155541713D0AE736BA50413D0AD7735615554152B81E1540BA5041713D0A17341555418FC2F5283FBA5041F6285C0F33155541413D438F30BA504120EB0E21351555418C28758B30BA504187F6982135155541E2B3337630BA504146F8CFB636155541F8CEBDD930BA50417D0B8873371555414DB6A68D30BA5041038D217E371555412D62B39030BA5041DD410D9837155541AF04D86F21BA5041A78C05AA39155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455692 - 4178754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000330000009A9999B908B3504133333343C2D25441CDCCCC7C0DB35041EC51B84EC3D254410000007019B3504185EB51D8C8D2544114AE47E119B350419A9999E9C7D254410AD7A36017B350418FC2F5A8C6D25441AE47E11A12B35041EC51B86EC4D25441A4703D3A11B35041713D0A67C3D25441295C8F6212B35041EC51B8EEBFD25441AE47E15A14B35041A4703DCABDD25441EC51B89E15B350417B14AE77BDD25441CDCCCC5C18B3504152B81E95BED2544185EB51C81CB35041E17A14CEC1D25441E17A145E1FB3504133333363BCD25441B81E85AB1FB35041C3F5282CBBD25441CDCCCC2C24B350419A999909BCD25441F6285C6F26B3504114AE4791BBD254419A9999092AB3504114AE4721B9D25441713D0A4730B3504114AE47E1B1D2544114AE47C136B35041333333F3A9D254419A99999936B35041A4703D2AA8D254418FC2F5282CB350417B14AE579FD25441713D0AC727B350410AD7A300A5D25441A4703DBA22B350413D0AD713A9D254415C8FC2251EB350419A999929AED25441EC51B88E18B35041EC51B8FEB7D254415C8FC2A517B35041D7A370CDB8D254411F85EB310AB35041E17A148EB6D254410AD7A3900BB350417B14AE17B3D25441A4703DBA0FB35041C3F5287CABD254419A99996915B350415C8FC2B5A3D254410AD7A3C01BB35041A4703D1A9CD254413D0AD7E320B350410AD7A34096D25441C3F528DC1FB350418FC2F57895D25441295C8F8216B350415C8FC2E58DD25441E17A145E0CB3504114AE479185D25441F6285C0F08B350417B14AE3782D25441333333C302B35041EC51B81E84D25441F6285C0FFFB2504148E17A3488D25441C3F5284CFCB2504148E17AF48DD25441B81E855BFBB25041E17A143E92D254418FC2F5C8FBB25041CDCCCCFC99D254410AD7A380FCB250417B14AE27A1D25441C3F528BCFCB250411F85EBA1A6D2544185EB513801B3504114AE4781B5D25441B81E853BFFB2504166666626B5D2544148E17AC4FCB2504185EB5138B5D254417B14AEC7FCB25041CDCCCC5CBBD25441713D0A17FDB2504148E17AB4C0D25441B81E854BFFB2504166666616C2D25441B81E85EB01B35041D7A3704DC2D254419A9999B908B3504133333343C2D254411300000033333323FEB250419A9999B9BDD2544133333323FEB250411F85EB51BAD25441EC51B8FEFEB25041CDCCCC5CB7D25441000000E0FFB25041D7A370ADB6D25441C3F5282C03B3504148E17AF4B6D25441713D0A3709B35041295C8F22B8D254419A9999190EB3504133333303B9D2544148E17A3411B35041D7A3706DBAD25441E17A147E12B35041666666B6BBD254413333337312B35041295C8F72BDD25441F6285CEF11B35041E17A140EBFD25441666666F60FB3504166666646C0D254418FC2F5480DB35041713D0A17C1D254413333336309B350417B14AE37C1D25441F6285C8F03B35041C3F5280CC1D254419A99998900B35041E17A148EC0D254410AD7A340FFB25041E17A14CEBFD2544166666686FEB25041CDCCCCECBED2544133333323FEB250419A9999B9BDD25441
+</a>
+
+<b>
+010600000001000000010300000002000000560000001D5A64D309B35041355EBA41B6D254410AD7A3900BB350417B14AE17B3D254415F95E2550DB35041C959CF83AFD25441A4703DBA0FB35041C3F5287CABD25441F2E42C6113B350418B2C321FA6D254419A99996915B350415C8FC2B5A3D254415ED0F77E1AB3504118BA81EC9CD2544131B8348420B350418C233DE895D254419539DAAE20B35041A51A89B695D25441C15A4B3519B350415A76ECF78FD2544183BFAA7C12B3504124867D1B8AD25441952430390DB350415987233386D254418196AAFA0BB35041D239A67086D2544152B81EBD08B35041F6285CA786D2544196438BFC06B350414260E5A085D254411283C09206B350411D5A641384D25441921A641705B35041C480D14183D25441B6F3FDCC02B35041AC1C5A0482D25441B6F3FDA400B350419EEFA7B681D254411B2FDD2401B3504196438BC484D25441378941B800B35041931804F685D25441666666D6FFB25041022B877E86D25441378941F0FEB250413BDF4F8D87D25441448B6CDFFDB250414C37891989D2544121B07250FCB250410E2DB2958CD2544114AE4761FBB25041508D97EE8FD254411283C0FAFAB250418941609D93D25441C1CAA11DFBB2504114AE479996D25441C520B05AFBB25041C3F528DC97D25441D4146687FBB250418CFDB54E9AD2544157DB5520FCB2504190209DE0A0D25441295C8F8AFCB25041CFF753A3A8D25441CFF75383FEB2504108AC1C6AA9D2544123DBF946FFB2504117D9CEFFA9D254418960BBEA01B35041D18BED6AB5D25441B81E853BFFB2504166666626B5D2544148E17AC4FCB2504185EB5138B5D254417B14AEC7FCB25041CDCCCC5CBBD25441713D0A17FDB2504148E17AB4C0D25441B81E854BFFB2504166666616C2D25441B81E85EB01B35041D7A3704DC2D254419A9999B908B3504133333343C2D25441CDCCCC7C0DB35041EC51B84EC3D254410000007019B3504185EB51D8C8D2544114AE47E119B350419A9999E9C7D254410AD7A36017B350418FC2F5A8C6D25441AE47E11A12B35041EC51B86EC4D25441A4703D3A11B35041713D0A67C3D25441295C8F6212B35041EC51B8EEBFD25441AE47E15A14B35041A4703DCABDD25441EC51B89E15B350417B14AE77BDD25441CDCCCC5C18B3504152B81E95BED25441931804E61AB350414260E5B0C0D25441A69BC4B01CB350413F355EFAC0D25441B4C876F61EB35041E5D022E3BBD25441B81E85AB1FB35041C3F5282CBBD25441CDCCCC2C24B350419A999909BCD25441F6285C6F26B3504114AE4791BBD254414A0C02DB27B35041736891BDBAD254419A9999092AB3504114AE4721B9D25441D122DB992CB35041F6285CC7B6D2544192D8064430B350410CBDAB56B2D25441D34D62A834B35041A69BC4F8ADD25441168FE40434B35041E0106109ADD2544196438B1C37B35041000000E0A9D25441A245B64B37B3504146B6F32DA8D25441018DCB672CB35041AC745E069FD25441833C90262CB35041C86EB4559FD25441DB2D85F72AB35041195745C6A0D2544186154C8027B350410D738FF7A4D25441313A4A0526B350419F2C321FA6D2544107B8547A23B35041C727B91EA9D254410559EC6323B35041DE82AB35A9D254418875B04223B350415B08AF5CA9D254410C5C7B2820B350414F795A61ACD25441F3C9A0C91FB35041287C26E6ACD2544174E3E8BD1FB35041900AFDF4ACD25441362D1CB41EB3504100208D45AED25441C5DDE48E1EB35041F9DDAC74AED25441129493AB1DB350419ECE8294AFD2544131D7C46A1DB350415A4622E6AFD25441967FBEDA18B350410F7E47E9B7D2544196438B0418B350413D0AD75BB9D2544183554E5215B350414439F569B8D25441508D97D611B35041FED47831B7D254411D5A64D309B35041355EBA41B6D254411300000033333323FEB250419A9999B9BDD2544133333323FEB250411F85EB51BAD25441EC51B8FEFEB25041CDCCCC5CB7D25441000000E0FFB25041D7A370ADB6D25441C3F5282C03B3504148E17AF4B6D25441713D0A3709B35041295C8F22B8D254419A9999190EB3504133333303B9D2544148E17A3411B35041D7A3706DBAD25441E17A147E12B35041666666B6BBD254413333337312B35041295C8F72BDD25441F6285CEF11B35041E17A140EBFD25441666666F60FB3504166666646C0D254418FC2F5480DB35041713D0A17C1D254413333336309B350417B14AE37C1D25441F6285C8F03B35041C3F5280CC1D254419A99998900B35041E17A148EC0D254410AD7A340FFB25041E17A14CEBFD2544166666686FEB25041CDCCCCECBED2544133333323FEB250419A9999B9BDD25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455692 - 4178760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000330000009A9999B908B3504133333343C2D25441CDCCCC7C0DB35041EC51B84EC3D254410000007019B3504185EB51D8C8D2544114AE47E119B350419A9999E9C7D254410AD7A36017B350418FC2F5A8C6D25441AE47E11A12B35041EC51B86EC4D25441A4703D3A11B35041713D0A67C3D25441295C8F6212B35041EC51B8EEBFD25441AE47E15A14B35041A4703DCABDD25441EC51B89E15B350417B14AE77BDD25441CDCCCC5C18B3504152B81E95BED2544185EB51C81CB35041E17A14CEC1D25441E17A145E1FB3504133333363BCD25441B81E85AB1FB35041C3F5282CBBD25441CDCCCC2C24B350419A999909BCD25441F6285C6F26B3504114AE4791BBD254419A9999092AB3504114AE4721B9D25441713D0A4730B3504114AE47E1B1D2544114AE47C136B35041333333F3A9D254419A99999936B35041A4703D2AA8D254418FC2F5282CB350417B14AE579FD25441713D0AC727B350410AD7A300A5D25441A4703DBA22B350413D0AD713A9D254415C8FC2251EB350419A999929AED25441EC51B88E18B35041EC51B8FEB7D254415C8FC2A517B35041D7A370CDB8D254411F85EB310AB35041E17A148EB6D254410AD7A3900BB350417B14AE17B3D25441A4703DBA0FB35041C3F5287CABD254419A99996915B350415C8FC2B5A3D254410AD7A3C01BB35041A4703D1A9CD254413D0AD7E320B350410AD7A34096D25441C3F528DC1FB350418FC2F57895D25441295C8F8216B350415C8FC2E58DD25441E17A145E0CB3504114AE479185D25441F6285C0F08B350417B14AE3782D25441333333C302B35041EC51B81E84D25441F6285C0FFFB2504148E17A3488D25441C3F5284CFCB2504148E17AF48DD25441B81E855BFBB25041E17A143E92D254418FC2F5C8FBB25041CDCCCCFC99D254410AD7A380FCB250417B14AE27A1D25441C3F528BCFCB250411F85EBA1A6D2544185EB513801B3504114AE4781B5D25441B81E853BFFB2504166666626B5D2544148E17AC4FCB2504185EB5138B5D254417B14AEC7FCB25041CDCCCC5CBBD25441713D0A17FDB2504148E17AB4C0D25441B81E854BFFB2504166666616C2D25441B81E85EB01B35041D7A3704DC2D254419A9999B908B3504133333343C2D254411300000033333323FEB250419A9999B9BDD2544133333323FEB250411F85EB51BAD25441EC51B8FEFEB25041CDCCCC5CB7D25441000000E0FFB25041D7A370ADB6D25441C3F5282C03B3504148E17AF4B6D25441713D0A3709B35041295C8F22B8D254419A9999190EB3504133333303B9D2544148E17A3411B35041D7A3706DBAD25441E17A147E12B35041666666B6BBD254413333337312B35041295C8F72BDD25441F6285CEF11B35041E17A140EBFD25441666666F60FB3504166666646C0D254418FC2F5480DB35041713D0A17C1D254413333336309B350417B14AE37C1D25441F6285C8F03B35041C3F5280CC1D254419A99998900B35041E17A148EC0D254410AD7A340FFB25041E17A14CEBFD2544166666686FEB25041CDCCCCECBED2544133333323FEB250419A9999B9BDD25441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000086154C8027B350410D738FF7A4D25441DB2D85F72AB35041195745C6A0D25441833C90262CB35041C86EB4559FD25441295C8FE223B350415C8FC28598D2544131B8348420B350418C233DE895D254415ED0F77E1AB3504118BA81EC9CD254419A99996915B350415C8FC2B5A3D25441F2E42C6113B350418B2C321FA6D25441A4703DBA0FB35041C3F5287CABD254415F95E2550DB35041C959CF83AFD254410AD7A3900BB350417B14AE17B3D254411D5A64D309B35041355EBA41B6D25441508D97D611B35041FED47831B7D2544183554E5215B350414439F569B8D2544196438B0418B350413D0AD75BB9D25441967FBEDA18B350410F7E47E9B7D2544131D7C46A1DB350415A4622E6AFD25441129493AB1DB350419ECE8294AFD25441C5DDE48E1EB35041F9DDAC74AED25441362D1CB41EB3504100208D45AED2544174E3E8BD1FB35041900AFDF4ACD25441F3C9A0C91FB35041287C26E6ACD254410C5C7B2820B350414F795A61ACD254418875B04223B350415B08AF5CA9D254410559EC6323B35041DE82AB35A9D25441313A4A0526B350419F2C321FA6D2544186154C8027B350410D738FF7A4D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456193 - 1053647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003500000085EB5108471651413333332339825441C3F5287C4816514185EB51083882544114AE47C14E165141CDCCCC3C36825441C3F5284C53165141B81E858B34825441F6285C9F531651413333331330825441F6285CEF56165141EC51B8FE2E825441CDCCCC3C6216514148E17AF42C82544148E17AF4611651418FC2F5A823825441AE47E11A51165141713D0A7724825441C3F528BC51165141333333831B825441AE47E10A5316514185EB51680A825441000000B06C1651411F85EBB10A82544148E17A4470165141C3F528BC0A825441C3F5284C701651413D0AD7C3F581544185EB51C87016514133333373E38154415C8FC2E56D165141713D0AF7E281544148E17A64621651418FC2F568E2815441D7A3706D56165141B81E853BE3815441A4703DFA4C165141A4703DCAE28154419A9999F93D1651413D0AD743DF815441CDCCCC3C3D1651417B14AE17DF8154417B14AE673C1651417B14AE37DF81544114AE4731301651417B14AEA7DE815441A4703D8A25165141EC51B8FEDD815441666666A623165141E17A140EDE815441E17A148E1616514148E17A84DD81544114AE47210F165141A4703D7ADC8154410AD7A3D00D165141AE47E1CAE48154413D0AD7C30B165141F6285CBFF1815441F6285C2F0A1651413D0AD743FB815441E17A146E24165141E17A140EFD815441C3F5280C231651411F85EB9103825441295C8FC23A1651413333339305825441EC51B8CE371651410AD7A3B017825441AE47E12A26165141CDCCCC6C17825441A4703DCA24165141295C8F023582544152B81E952516514185EB51F8348254419A9999A9271651419A99993935825441AE47E11A2A165141AE47E15A35825441F6285C8F2C165141F6285C2F36825441F6285CAF2D165141B81E858B36825441EC51B83E30165141D7A3702D37825441F6285CFF31165141E17A14AE3782544114AE471134165141295C8F0238825441295C8F1236165141333333133882544185EB515839165141D7A3701D38825441666666B63B165141F6285C5F388254417B14AE773D1651410AD7A37038825441000000003F1651419A99994938825441D7A370ED4016514152B81E7538825441CDCCCC6C4316514133333393388254411F85EB51461651417B14AE273982544185EB5108471651413333332339825441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000005307CAD4616514124586E2539825441A4703D4A451651419A9999D9398254419A9999994116514148E17A543B825441B81E85AB40165141333333033D82544185EB51A83E165141E17A145E40825441E17A141E4F16514148E17AB44D8254411F85EB0141165141AE47E19A6E8254411F85EB713C165141EC51B86E78825441333333533B16514185EB51887A825441CDCCCC8C3B165141D7A370BD7A825441A4703DDA3F165141EC51B8AE7E825441295C8FD243165141295C8FE276825441AE47E1AA46165141295C8FC271825441295C8FB24A165141713D0A376A8254411F85EBD14B1651417B14AE676882544148E17A344D1651410000008065825441AE47E16A4E165141E17A14AE62825441F6285C0F50165141D7A3701D5E8254410000007051165141F6285C0F5A8254410AD7A3E05216514114AE473156825441713D0AC753165141666666D652825441B81E857B5516514152B81E954E825441594F4852571651411976C0E8468254412CEE333947165141381303FE3882544185EB510847165141333333233982544105307CAD4616514124586E2539825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456193 - 3433153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003500000085EB5108471651413333332339825441C3F5287C4816514185EB51083882544114AE47C14E165141CDCCCC3C36825441C3F5284C53165141B81E858B34825441F6285C9F531651413333331330825441F6285CEF56165141EC51B8FE2E825441CDCCCC3C6216514148E17AF42C82544148E17AF4611651418FC2F5A823825441AE47E11A51165141713D0A7724825441C3F528BC51165141333333831B825441AE47E10A5316514185EB51680A825441000000B06C1651411F85EBB10A82544148E17A4470165141C3F528BC0A825441C3F5284C701651413D0AD7C3F581544185EB51C87016514133333373E38154415C8FC2E56D165141713D0AF7E281544148E17A64621651418FC2F568E2815441D7A3706D56165141B81E853BE3815441A4703DFA4C165141A4703DCAE28154419A9999F93D1651413D0AD743DF815441CDCCCC3C3D1651417B14AE17DF8154417B14AE673C1651417B14AE37DF81544114AE4731301651417B14AEA7DE815441A4703D8A25165141EC51B8FEDD815441666666A623165141E17A140EDE815441E17A148E1616514148E17A84DD81544114AE47210F165141A4703D7ADC8154410AD7A3D00D165141AE47E1CAE48154413D0AD7C30B165141F6285CBFF1815441F6285C2F0A1651413D0AD743FB815441E17A146E24165141E17A140EFD815441C3F5280C231651411F85EB9103825441295C8FC23A1651413333339305825441EC51B8CE371651410AD7A3B017825441AE47E12A26165141CDCCCC6C17825441A4703DCA24165141295C8F023582544152B81E952516514185EB51F8348254419A9999A9271651419A99993935825441AE47E11A2A165141AE47E15A35825441F6285C8F2C165141F6285C2F36825441F6285CAF2D165141B81E858B36825441EC51B83E30165141D7A3702D37825441F6285CFF31165141E17A14AE3782544114AE471134165141295C8F0238825441295C8F1236165141333333133882544185EB515839165141D7A3701D38825441666666B63B165141F6285C5F388254417B14AE773D1651410AD7A37038825441000000003F1651419A99994938825441D7A370ED4016514152B81E7538825441CDCCCC6C4316514133333393388254411F85EB51461651417B14AE273982544185EB5108471651413333332339825441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000005307CAD4616514124586E2539825441A4703D4A451651419A9999D9398254419A9999994116514148E17A543B825441B81E85AB40165141333333033D82544185EB51A83E165141E17A145E40825441E17A141E4F16514148E17AB44D8254411F85EB0141165141AE47E19A6E8254411F85EB713C165141EC51B86E78825441333333533B16514185EB51887A825441CDCCCC8C3B165141D7A370BD7A825441A4703DDA3F165141EC51B8AE7E825441295C8FD243165141295C8FE276825441AE47E1AA46165141295C8FC271825441295C8FB24A165141713D0A376A8254411F85EBD14B1651417B14AE676882544148E17A344D1651410000008065825441AE47E16A4E165141E17A14AE62825441F6285C0F50165141D7A3701D5E8254410000007051165141F6285C0F5A8254410AD7A3E05216514114AE473156825441713D0AC753165141666666D652825441B81E857B5516514152B81E954E825441594F4852571651411976C0E8468254412CEE333947165141381303FE3882544185EB510847165141333333233982544105307CAD4616514124586E2539825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456219 - 142571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A0000008FC2F54806195141295C8FE2FD7E5441C3F5281C191951417B14AE27F57E5441666666361C19514185EB5118F67E54415C8FC2B51F195141A4703D3AF17E54419A99996927195141A4703DFAE87E544185EB51682E195141F6285CAFE27E544148E17AE42A1951415C8FC255E27E54411F85EB8128195141295C8F22E17E54415C8FC29525195141E17A14FEDE7E5441F6285C9F24195141F6285C3FDD7E5441AE47E1CA22195141F6285CEFD97E5441713D0A671B1951417B14AE47D87E5441E17A14FE1219514185EB5168D67E54411F85EBF10719514152B81EF5D57E54410AD7A380051951411F85EBF1D57E54413D0AD7E3011951413D0AD703D67E5441AE47E14A0119514166666616D67E54418FC2F598001951419A999949D67E5441EC51B84EFE185141713D0A37D77E544114AE4731F9185141F6285CCFD97E54417B14AE27ED185141EC51B8FEDC7E54419A9999C9E31851419A9999B9DF7E5441666666D6DA1851411F85EB01E27E544185EB5158DB185141E17A14EEE87E544114AE4731DA1851410AD7A320EC7E544114AE47B1D91851418FC2F538EE7E5441A4703DBADA1851411F85EB21F17E544185EB51E8DC185141EC51B8AEF47E54415C8FC2B5DF18514133333383F77E5441666666D6E018514166666686F87E54411F85EB21F21851418FC2F508047F544166666636F218514185EB5118037F544133333303F21851411F85EB91FF7E5441E17A140EF6185141D7A3705DFF7E544148E17A84FA185141A4703D7AFB7E5441E17A14DEFE185141A4703D4A017F544152B81EC5FE185141AE47E15A077F5441AE47E11AFF1851411F85EBF1087F5441295C8F72FF1851413D0AD7430E7F54418FC2F558001951418FC2F528107F5441AE47E1EAFF1851413D0AD7830D7F54418FC2F54806195141295C8FE2FD7E5441
+</a>
+
+<b>
+01060000000100000001030000000100000023000000666666D6E018514166666686F87E54415D3CE720E518514122177761FB7E54417BECA0E2E5185141DD3264E2FB7E544186A6702EE7185141DB1E37BFFC7E544137FC9121EC185141D6E3800A007F54417ECE53D2ED185141BCFD812A017F54410FDB24DCEE185141EF5469DB017F544138143917F0185141C78919AD027F5441FFB8D87EF018514111F50FF2027F5441721F4B27F1185141715B2A62037F5441587A31B7F11851411BA9EEC1037F54416B5CF01EF21851416B1F4EF8037F54415BB82AF6F118514104466EF4027F54411FDDC4A2F1185141D38B56E5007F54410B11AA6BF118514155861089FF7E5441125231BCF018514195A80B34FB7E54411D46D448F01851412150F865F87E5441AA48BE30E61851418461259CF07E5441E046A868DB185141C29C723DE87E544122D7F856DB1851413075B1DBE87E544185EB5158DB185141E17A14EEE87E54416571A682DA18514154826B5CEB7E544173443A52DA1851415741372AEC7E54410DDA10D7D9185141A92BA39AED7E544114AE47B1D91851418FC2F538EE7E54413E9B4D2EDA185141E36F7998EF7E5441A4703DBADA1851411F85EB21F17E544185EB51E8DC185141EC51B8AEF47E5441CF14B676DD185141962C823EF57E5441411BEFA8DD1851416D5C3971F57E544187FE64D8DD185141BB7826A1F57E5441229FBC54DE185141C573B61EF67E54415C8FC2B5DF18514133333383F77E5441E3A43582E0185141FBEDCB3AF87E5441666666D6E018514166666686F87E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456279 - 346029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000A4703DFAB815514185EB51F8997954415C8FC225B21551411F85EB519B795441333333E3B2155141295C8F52A1795441333333D3B6155141A4703D8AB97954410AD7A380B81551419A9999F9C37954413D0AD783BF1551417B14AE37C3795441666666E6BD1551417B14AE87B8795441E17A14FEB9155141713D0A37A0795441A4703DFAB815514185EB51F899795441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000077E1D00B8155141345D1ADAC0795441333333D3B6155141A4703D8AB9795441333333E3B2155141295C8F52A1795441F9B1C225B2155141E19DEC519B795441F19C2C3EAF155141C48716E59B795441D7A3706DAB155141666666A69C79544158E4C8B9AB155141BEF6A9BE9E795441F3E8A340AC155141F630EA71A2795441CF7A1F25B0155141074F138EBA795441357B651AB115514137923CDAC0795441F6A9A3B0B11551410F67C1B5C4795441C3C3AD7AB81551411F8C84D4C3795441077E1D00B8155141345D1ADAC0795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456507 - 28568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000007B14AED79D155141A4703D4A0D845441B81E85BB9D155141C3F5286C0F8454411F85EBE1AA1551415C8FC2C50B845441666666B6B9155141AE47E1BA0884544152B81E85BE155141E17A14BE0784544114AE47B1C515514185EB51080684544133333353C4155141F6285C5F0A8454417B14AEC7C1155141666666860E8454413D0AD7D3BE155141000000A012845441A4703D4ABC155141AE47E14A16845441333333C3BA15514114AE4781188454418FC2F5F8B6155141713D0A171E845441C3F528BCB215514114AE476124845441A4703D6AAC15514148E17A942C8454417B14AEF7A4155141C3F5288C35845441713D0A379D155141C3F5285C3E84544152B81EA59C1551410AD7A3103F8454417B14AE27951551413D0AD753488454419A9999A9921551410AD7A3204B845441EC51B85E89155141B81E850B5484544152B81E15871551417B14AE07568454410AD7A3D08A1551410000005059845441666666668B155141D7A370DD58845441A4703D8A9215514148E17AD452845441AE47E12A99155141333333634C845441295C8FB2A21551411F85EB01438454410AD7A360B0155141713D0AA7358454415C8FC245B2155141EC51B8CE3384544114AE47B1BA155141AE47E1FA2B84544152B81E35C0155141A4703DFA2684544185EB5108C515514152B81E75228454419A999919CF155141A4703D1A1984544166666666D915514152B81EA50F84544185EB5198E31551415C8FC23506845441C3F5281CE51551419A9999D904845441D7A3705DE5155141F6285C9F0484544133333353E3155141B81E853B02845441D7A370EDE31551415C8FC275038454413D0AD713E01551410AD7A3F0FE835441F6285C5FDF155141A4703D9AFD8354418FC2F528DC155141713D0AD7F9835441F6285CEFD71551415C8FC295FB8354410AD7A3B0D4155141B81E85EBFC835441F6285CDFD015514148E17A24FE8354410AD7A3C0CA15514152B81ED5FF835441C3F5281CC4155141F6285C6F01845441AE47E11ABE155141F6285CBF028454411F85EBD1B6155141AE47E1DA03845441EC51B83EB21551411F85EBC1048454419A999939AE155141713D0AC705845441D7A370EDA115514152B81E5509845441CDCCCCEC9E1551419A9999690A845441666666669E155141F6285CEF0A845441333333239E155141295C8FA20B8454417B14AED79D155141A4703D4A0D845441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A8454410F04192BF815514190142177188454410B838262F715514109533F4A178454419D17C968E415514173238716288454416BD37547CA155141F6E7E0153D845441B7C1690FAF1551419E2898C55184544133FD0F109A155141045E6E6460845441BC090B998B155141DE8FA891698454416740FBAF851551418190B54D5F84544132ABA7EDA2155141610A9104458454411CF73FAEBD155141D50F54AA2B845441E5CC5ECFE61551418132A92C05845441E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F8454414543400FBA155141ED7FB3942C845441483FCAEAAB155141893FC3013A84544150BBB0B7A015514108C7CFF444845441303A63649C1551418C89AF3649845441C9A15872951551413B308A005084544197213526951551412979284B50845441A2D420239515514135A0F74D508454418FEE75009515514123EFD96F5084544141DD54AD941551419E5F6EB950845441BCF4673690155141D2FD19CC548454415424522C8D1551417FCFC45D57845441CFC947FD8C1551416F77878557845441BCDCBFC98C155141A854FAAA5784544159AF815E86155141DF1719B25C8454413AA9791486155141949E20EE5C8454412082CDAE83155141A4AD328D5E8454416D0B9E3184155141098C68815F845441730051B58A1551418CB975496B845441F54A96BD8C1551417DF5D8406A845441FDF5C03B9515514106902BE464845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456507 - 72134
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000007B14AED79D155141A4703D4A0D845441B81E85BB9D155141C3F5286C0F8454411F85EBE1AA1551415C8FC2C50B845441666666B6B9155141AE47E1BA0884544152B81E85BE155141E17A14BE0784544114AE47B1C515514185EB51080684544133333353C4155141F6285C5F0A8454417B14AEC7C1155141666666860E8454413D0AD7D3BE155141000000A012845441A4703D4ABC155141AE47E14A16845441333333C3BA15514114AE4781188454418FC2F5F8B6155141713D0A171E845441C3F528BCB215514114AE476124845441A4703D6AAC15514148E17A942C8454417B14AEF7A4155141C3F5288C35845441713D0A379D155141C3F5285C3E84544152B81EA59C1551410AD7A3103F8454417B14AE27951551413D0AD753488454419A9999A9921551410AD7A3204B845441EC51B85E89155141B81E850B5484544152B81E15871551417B14AE07568454410AD7A3D08A1551410000005059845441666666668B155141D7A370DD58845441A4703D8A9215514148E17AD452845441AE47E12A99155141333333634C845441295C8FB2A21551411F85EB01438454410AD7A360B0155141713D0AA7358454415C8FC245B2155141EC51B8CE3384544114AE47B1BA155141AE47E1FA2B84544152B81E35C0155141A4703DFA2684544185EB5108C515514152B81E75228454419A999919CF155141A4703D1A1984544166666666D915514152B81EA50F84544185EB5198E31551415C8FC23506845441C3F5281CE51551419A9999D904845441D7A3705DE5155141F6285C9F0484544133333353E3155141B81E853B02845441D7A370EDE31551415C8FC275038454413D0AD713E01551410AD7A3F0FE835441F6285C5FDF155141A4703D9AFD8354418FC2F528DC155141713D0AD7F9835441F6285CEFD71551415C8FC295FB8354410AD7A3B0D4155141B81E85EBFC835441F6285CDFD015514148E17A24FE8354410AD7A3C0CA15514152B81ED5FF835441C3F5281CC4155141F6285C6F01845441AE47E11ABE155141F6285CBF028454411F85EBD1B6155141AE47E1DA03845441EC51B83EB21551411F85EBC1048454419A999939AE155141713D0AC705845441D7A370EDA115514152B81E5509845441CDCCCCEC9E1551419A9999690A845441666666669E155141F6285CEF0A845441333333239E155141295C8FA20B8454417B14AED79D155141A4703D4A0D845441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A8454410F04192BF815514190142177188454410B838262F715514109533F4A178454419D17C968E415514173238716288454416BD37547CA155141F6E7E0153D845441B7C1690FAF1551419E2898C55184544133FD0F109A155141045E6E6460845441BC090B998B155141DE8FA891698454416740FBAF851551418190B54D5F84544132ABA7EDA2155141610A9104458454411CF73FAEBD155141D50F54AA2B845441E5CC5ECFE61551418132A92C05845441E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F8454414543400FBA155141ED7FB3942C845441483FCAEAAB155141893FC3013A84544150BBB0B7A015514108C7CFF444845441303A63649C1551418C89AF3649845441C9A15872951551413B308A005084544197213526951551412979284B50845441A2D420239515514135A0F74D508454418FEE75009515514123EFD96F5084544141DD54AD941551419E5F6EB950845441BCF4673690155141D2FD19CC548454415424522C8D1551417FCFC45D57845441CFC947FD8C1551416F77878557845441BCDCBFC98C155141A854FAAA5784544159AF815E86155141DF1719B25C8454413AA9791486155141949E20EE5C8454412082CDAE83155141A4AD328D5E8454416D0B9E3184155141098C68815F845441730051B58A1551418CB975496B845441F54A96BD8C1551417DF5D8406A845441FDF5C03B9515514106902BE464845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457657 - 2961234
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC2C57F10514152B81EF5953454416666669680105141333333339634544185EB5128811051411F85EB1194345441666666768010514152B81EE59334544148E17A447D105141713D0A179334544114AE47617910514148E17A0492345441CDCCCCBC7410514152B81EB590345441D7A3700D711051419A9999A98F3454413D0AD7836B1051415C8FC2258E3454418FC2F5F8641051417B14AE278C345441E17A14FE5C105141E17A14FE8934544114AE4751561051413D0AD7238834544114AE47B1511051413D0AD7C3863454411F85EBD14F10514148E17A44863454419A9999A94D1051411F85EB91853454417B14AE374D1051411F85EBE186345441D7A3700D4D105141B81E85CB87345441CDCCCC2C4F10514148E17A7488345441F6285C9F5210514185EB516889345441713D0A7758105141EC51B8FE8A3454418FC2F5F85E105141C3F528BC8C345441666666566410514148E17A148E345441F6285C2F6A105141C3F528BC8F345441AE47E14A701051411F85EB919134544152B81E25751051415C8FC2E592345441713D0A177A10514185EB5168943454415C8FC2C57F10514152B81EF595345441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000222C4FDC60105141EE66D88C863454410B04947F60105141F270ECAE843454414291EB1A5F1051413AF331E783345441374A8B425B10514152F233A682345441A1316DB9581051419541AC1E8234544139400C4C55105141363B252C81345441FDFAA7F55310514155C97A08813454415FD8754A531051410E7A029081345441C8E8105F521051410814681082345441E17A146E50105141000000B083345441333333C34F1051416666665684345441D2F556A44E10514176069DD68534544129296F845010514106B5E873863454412A4A642A51105141E43C88FD85345441F191EEA651105141641B51E58434544171B325BF52105141641B51E5843454419F7A2C72531051419999C68885345441F50E5DB75210514120726C918634544121C873B952105141D4D6C2FE863454410A6E50EE5510514148F06A068834544118ACF0135A105141D143C410893454416F49AB355D105141AF5A7DF289345441A3FDE80E64105141783C41E88B345441EF071190671051414C51B2DC8C345441D590654970105141BA70C1518F3454414DA1EEC179105141D023B2FC9134544185EB5128811051411F85EB11943454417B14AEC781105141EC51B8BE9134544152B81E6582105141D7A3707D8F345441E6FAE8726B105141F851B20789345441FEF9EA316A10514123A228C189345441E675A97768105141B0CF6CCF8934544119D0335367105141914117F389345441340203D26510514165F1A039893454410C89D37A63105141AD73E6718834544163A480F26110514187563D7887345441222C4FDC60105141EE66D88C86345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457657 - 3812892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC2C57F10514152B81EF5953454416666669680105141333333339634544185EB5128811051411F85EB1194345441666666768010514152B81EE59334544148E17A447D105141713D0A179334544114AE47617910514148E17A0492345441CDCCCCBC7410514152B81EB590345441D7A3700D711051419A9999A98F3454413D0AD7836B1051415C8FC2258E3454418FC2F5F8641051417B14AE278C345441E17A14FE5C105141E17A14FE8934544114AE4751561051413D0AD7238834544114AE47B1511051413D0AD7C3863454411F85EBD14F10514148E17A44863454419A9999A94D1051411F85EB91853454417B14AE374D1051411F85EBE186345441D7A3700D4D105141B81E85CB87345441CDCCCC2C4F10514148E17A7488345441F6285C9F5210514185EB516889345441713D0A7758105141EC51B8FE8A3454418FC2F5F85E105141C3F528BC8C345441666666566410514148E17A148E345441F6285C2F6A105141C3F528BC8F345441AE47E14A701051411F85EB919134544152B81E25751051415C8FC2E592345441713D0A177A10514185EB5168943454415C8FC2C57F10514152B81EF595345441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000222C4FDC60105141EE66D88C863454410B04947F60105141F270ECAE843454414291EB1A5F1051413AF331E783345441374A8B425B10514152F233A682345441A1316DB9581051419541AC1E8234544139400C4C55105141363B252C81345441FDFAA7F55310514155C97A08813454415FD8754A531051410E7A029081345441C8E8105F521051410814681082345441E17A146E50105141000000B083345441333333C34F1051416666665684345441D2F556A44E10514176069DD68534544129296F845010514106B5E873863454412A4A642A51105141E43C88FD85345441F191EEA651105141641B51E58434544171B325BF52105141641B51E5843454419F7A2C72531051419999C68885345441F50E5DB75210514120726C918634544121C873B952105141D4D6C2FE863454410A6E50EE5510514148F06A068834544118ACF0135A105141D143C410893454416F49AB355D105141AF5A7DF289345441A3FDE80E64105141783C41E88B345441EF071190671051414C51B2DC8C345441D590654970105141BA70C1518F3454414DA1EEC179105141D023B2FC9134544185EB5128811051411F85EB11943454417B14AEC781105141EC51B8BE9134544152B81E6582105141D7A3707D8F345441E6FAE8726B105141F851B20789345441FEF9EA316A10514123A228C189345441E675A97768105141B0CF6CCF8934544119D0335367105141914117F389345441340203D26510514165F1A039893454410C89D37A63105141AD73E6718834544163A480F26110514187563D7887345441222C4FDC60105141EE66D88C86345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457689 - 239831
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC2B57D10514185EB51689E345441000000707E105141F6285C7F9C345441000000607D105141295C8F329C34544185EB51887A1051415C8FC2659B3454413333334375105141A4703DDA993454410AD7A3106F105141EC51B83E98345441D7A3707D6510514148E17A7495345441CDCCCCDC5E105141295C8FC293345441E17A14DE57105141CDCCCCBC91345441295C8FB250105141A4703DAA8F345441CDCCCC1C4B105141B81E851B8E345441AE47E1BA47105141713D0A578D3454418FC2F5D847105141295C8FC28E3454413D0AD78348105141F6285CDF8F3454410AD7A3204A105141666666269134544185EB51684B1051417B14AE5792345441000000E0511051415C8FC23594345441EC51B87E5C105141EC51B83E9734544148E17A0467105141000000F099345441000000906E1051413D0AD7139C345441C3F5285C78105141C3F528BC9E345441C3F528DC7B1051419A9999E99F3454417B14AE977C1051418FC2F528A03454415C8FC2B57D10514185EB51689E3454410103000000010000000C00000052B81E55611051417B14AE378634544148E17A9451105141D7A370CD81345441E17A146E50105141000000B083345441EC51B86E641051418FC2F578893454417B14AEC781105141EC51B8BE9134544152B81E6582105141D7A3707D8F3454411F85EB716A10514152B81EC588345441F6285CDF69105141B81E852B89345441666666166810514185EB513889345441295C8F62651051417B14AE9788345441295C8F42631051413D0AD7938734544152B81E55611051417B14AE378634544101030000000100000053000000666666366C105141F6285CDFB2345441000000D06A105141C3F528CCB13454418FC2F53866105141713D0A07B03454415C8FC295671051410AD7A310AD345441000000306C1051417B14AEB7AA3454419A9999A96F1051415C8FC235A9345441AE47E1BA7410514166666616AA345441B81E852B7610514166666696A8345441000000C07710514114AE47F1A6345441713D0A8772105141295C8F42A5345441333333236F10514148E17AB4A3345441E17A145E6D1051418FC2F568A13454417B14AE7769105141E17A146E9E345441C3F528AC64105141000000309D3454417B14AED75F10514148E17AF49B345441F6285C5F5A1051413D0AD7639A3454413D0AD75354105141666666C698345441CDCCCCCC4F105141A4703D9A973454419A9999794A1051410AD7A32096345441000000E04710514185EB517895345441C3F528FC441051419A9999A994345441B81E85CB44105141E17A14CE963454413333331344105141C3F5283C983454410000007042105141666666769A3454411F85EB4141105141B81E858B9D345441A4703D9A40105141C3F5284CA034544148E17A2440105141EC51B88EA43454410000009040105141D7A370BDA73454416666662649105141CDCCCC1CAA345441E17A141E5110514152B81E55AC34544100000050581051419A999989AE345441C3F528DC60105141C3F528BCB0345441B81E85CB661051418FC2F558B2345441E17A14FE68105141666666F6B2345441AE47E1BA65105141000000C0B4345441D7A370BD641051417B14AE77B4345441F6285C9F61105141F6285C9FB3345441F6285C6F5C1051418FC2F538B23454418FC2F52856105141EC51B86EB03454417B14AEA74C1051418FC2F5E8AD3454416666665645105141AE47E1DAAB3454413D0AD7933C1051415C8FC285A93454413D0AD7F33D1051418FC2F578AA345441F6285CDF3F1051411F85EBA1AB34544185EB51A841105141666666C6AC3454415C8FC26545105141E17A14EEAE3454417B14AE6746105141CDCCCC6CAF345441E17A147E49105141AE47E19AB0345441713D0A974C105141000000E0B134544114AE47F14E1051413D0AD7E3B234544114AE47915010514152B81EC5B3345441E17A14FE51105141C3F5286CB23454417B14AE27531051419A9999A9B134544185EB51F8541051419A9999C9B134544114AE4701561051411F85EB91B23454419A9999D95610514185EB5158B4345441C3F5281C56105141AE47E12AB5345441B81E85BB55105141EC51B88EB63454417B14AEC758105141295C8F32B8345441D7A3708D59105141D7A3709DBB34544152B81E954B105141713D0AC7BF34544148E17AE44A10514100000050C23454410AD7A3904A105141A4703DDAC53454415C8FC2A5491051413D0AD703C83454410000003048105141CDCCCCCCCA345441CDCCCC9C4D105141713D0A77CA3454410000003052105141CDCCCC1CCA345441B81E858B5510514114AE4761C9345441EC51B87E571051415C8FC2B5C8345441000000F0581051417B14AEF7C7345441E17A148E5910514152B81E45C7345441B81E859B571051410AD7A310C534544152B81EB555105141666666D6C234544114AE476155105141713D0A87C134544152B81E1557105141A4703D1ABF3454410AD7A36059105141E17A141EBE3454419A9999795B105141C3F528ECBD34544152B81E255F1051415C8FC205BC34544148E17A746010514166666666B93454417B14AE6763105141B81E852BB73454415C8FC29564105141D7A370ADB8345441EC51B8AE66105141C3F5287CB8345441666666366C105141F6285CDFB2345441
+</a>
+
+<b>
+0106000000010000000103000000010000001800000052B81E6582105141D7A3707D8F3454413B2295766B1051418B60490E89345441FFF9EA316A10514120A228C189345441E575A97768105141ACCF6CCF893454411CD0335367105141904117F389345441330203D26510514167F1A039893454410989D37A63105141B273E6718834544160A480F26110514182563D7887345441232C4FDC60105141EA66D88C86345441174ED0C360105141FD50990E8634544106ED10685C105141E5B1FCD58434544108F33C2E571051415F07275F833454416E39C82253105141D170093D8234544109546D6B521051411008AA0982345441C6E8105F521051410614681082345441E17A146E50105141000000B08334544111C3A46D5010514101CA6CB08334544125A65A915010514162A633BA833454410993912560105141000DA63B8834544188B296536410514160FD1C718934544159DF02EC6F105141CCC80DB68C345441333AF95C7F105141B0865110913454417B14AEC781105141EC51B8BE9134544152B81E6582105141D7A3707D8F345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457836 - 975929
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000600000048E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA16655441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441498023D44BDE50416EF82104F164544150E62ACB49DE504137C6DF50F0645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>458427 - 1102726
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D9AAFE55041F6285CBF778D5441D7A3706DB0E55041E17A147E798D54418FC2F5A8D6E55041713D0A978B8D5441B81E857BF1E55041C3F5285CA28D5441713D0A37FBE5504148E17A34A48D54419A9999C9FDE550413D0AD773A38D5441A4703D4A04E650411F85EB61968D544148E17AB409E650418FC2F508898D544152B81E950DE65041CDCCCC8C798D5441E17A145E11E650418FC2F5D86B8D5441C3F5284C14E6504148E17A945D8D5441333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D54418FC2F598B6E5504114AE47115C8D5441F6285C5FBBE55041000000205C8D54413D0AD763CCE55041D7A3707D5F8D544100000080CFE55041666666A6618D544166666606CDE5504152B81E55618D54411F85EBF1C7E55041666666B6618D544152B81ED5C0E5504100000020608D544148E17A04B6E55041CDCCCC5C5E8D5441A4703D9AAFE55041F6285CBF778D5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D54418FC2F598B6E5504114AE47115C8D54414AF3514FB6E550415517690E5D8D544148E17A04B6E55041CDCCCC5C5E8D5441A4703D9AAFE55041F6285CBF778D544175519334B0E55041EB8A8866798D544184B3C5FBD5E550416B2DB13E8B8D54417AB04151E0E55041BFFC93C5938D544113CDD5F9F0E55041820DFF0EA28D5441651F1674F6E550414E267D5BA38D544136B6625BF7E550416F15C5A3A38D54417A1195F8FAE5504191040DECA38D54419A9999C9FDE550413D0AD773A38D54410686054704E65041C6966368968D544123791B0609E6504168FBC5B68A8D54412E9379EF09E65041F968CB88888D544103DE567F0AE65041E1A3D4DE858D5441C18AF13B0DE650416B52EEF07A8D54419D86A85511E650410FC572F76B8D54414D90F54414E65041297ECD555D8D5441333333D310E6504114AE47215B8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>458427 - 3272977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D9AAFE55041F6285CBF778D5441D7A3706DB0E55041E17A147E798D54418FC2F5A8D6E55041713D0A978B8D5441B81E857BF1E55041C3F5285CA28D5441713D0A37FBE5504148E17A34A48D54419A9999C9FDE550413D0AD773A38D5441A4703D4A04E650411F85EB61968D544148E17AB409E650418FC2F508898D544152B81E950DE65041CDCCCC8C798D5441E17A145E11E650418FC2F5D86B8D5441C3F5284C14E6504148E17A945D8D5441333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D54418FC2F598B6E5504114AE47115C8D5441F6285C5FBBE55041000000205C8D54413D0AD763CCE55041D7A3707D5F8D544100000080CFE55041666666A6618D544166666606CDE5504152B81E55618D54411F85EBF1C7E55041666666B6618D544152B81ED5C0E5504100000020608D544148E17A04B6E55041CDCCCC5C5E8D5441A4703D9AAFE55041F6285CBF778D5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D54418FC2F598B6E5504114AE47115C8D54414AF3514FB6E550415517690E5D8D544148E17A04B6E55041CDCCCC5C5E8D5441A4703D9AAFE55041F6285CBF778D544175519334B0E55041EB8A8866798D544184B3C5FBD5E550416B2DB13E8B8D54417AB04151E0E55041BFFC93C5938D544113CDD5F9F0E55041820DFF0EA28D5441651F1674F6E550414E267D5BA38D544136B6625BF7E550416F15C5A3A38D54417A1195F8FAE5504191040DECA38D54419A9999C9FDE550413D0AD773A38D54410686054704E65041C6966368968D544123791B0609E6504168FBC5B68A8D54412E9379EF09E65041F968CB88888D544103DE567F0AE65041E1A3D4DE858D5441C18AF13B0DE650416B52EEF07A8D54419D86A85511E650410FC572F76B8D54414D90F54414E65041297ECD555D8D5441333333D310E6504114AE47215B8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460136 - 4785763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000713D0AD701E350413D0AD7638D925441F6285C5FD7E25041A4703DBA9B925441EC51B87EDEE25041666666C6B7925441713D0AC714E350418FC2F568A5925441B81E852B14E350417B14AED7A39254419A9999A90AE350416666667691925441295C8FD207E3504185EB51688C925441295C8F6206E35041AE47E1DA8B925441713D0AD701E350413D0AD7638D925441
+</a>
+
+<b>
+010600000001000000010300000001000000110000001B111542EFE25041BFED881AB29254415615537BDEE25041EA1D14CAB7925441DCECA4AADFE250416A354DD9BE92544185EB51B8E0E250419A9999E9C592544185EB5148E1E25041713D0AA7CD9254415C8FC215E1E250415C8FC2A5D1925441B81E85FBE1E25041295C8F52D29254410AD7A3601DE350411F85EB51BE925441713D0AF71DE3504114AE4711BD92544162932ECC14E35041A1F76B6DA5925441FDC8F5C914E35041A8035062A5925441A46450C914E35041742D8862A5925441961D310610E3504149758400A79254414855579CF7E25041D80A1D47AF925441D813FAE4F3E250417A46FB88B0925441CD41376FF2E2504127F16E07B19254411B111542EFE25041BFED881AB2925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460445 - 1103142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000200000005C8FC2E5C8EC504114AE47A1618E544185EB5108CCEC5041B81E853B638E544114AE4791CDEC504185EB5188638E5441B81E855BCFEC5041F6285C7F638E5441713D0A67D0EC5041B81E851B648E5441295C8F22D1EC5041D7A370ED668E5441E17A14BED0EC5041EC51B89E678E5441333333D3D9EC504185EB51E86D8E5441AE47E19AE1EC5041CDCCCC7C738E544148E17A14E2EC50418FC2F5A8728E5441C3F528ECE2EC50417B14AEC7728E5441EC51B84EE3EC5041AE47E12A728E5441C3F5282CF1EC5041E17A14AE5E8E5441EC51B8DEC3EC5041E17A14BE3C8E544133333393B6EC50410AD7A3A04F8E544166666666BAEC50418FC2F588508E5441F6285C3FBBEC50419A999949518E54413D0AD7E3BBEC5041CDCCCCFC528E5441295C8F82BCEC5041295C8F92548E544148E17A44BDEC5041EC51B8FE558E5441AE47E11ABEEC5041EC51B89E568E5441F6285CAFBFEC5041B81E850B578E5441EC51B8AEC0EC50410AD7A300588E54415C8FC255C1EC504185EB51A8598E5441E17A14FEC1EC5041333333A35A8E54410AD7A3F0C2EC504152B81E655B8E5441A4703D6AC4EC50410AD7A3D05B8E54415C8FC2D5C4EC5041000000605C8E5441C3F5288CC4EC5041A4703D8A5D8E5441666666B6C4EC504114AE47B15E8E54418FC2F5E8C5EC50417B14AE27608E54415C8FC2E5C8EC504114AE47A1618E5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C54AD8F7BFEC5041D4E327735A8E54415ED68408D1EC50410C76411B678E544170157635D3EC504195B530B6688E5441B70D5EC8D4EC5041A6D803396A8E5441956C959DD5EC50419C4B38F66A8E5441E948029DD7EC504106945D606C8E54414F24D056D9EC5041081336926D8E5441B28CA6B3E1EC504106BDB767738E544148E17A14E2EC50418FC2F5A8728E5441B81E859BE3EC5041F6285CBF718E5441A2293B30E9EC50419999DBE6698E54414A74BF7CF0EC504127F49FA45F8E5441C3F5282CF1EC5041E17A14AE5E8E5441383D34B2F1EC50414DC0E9335E8E5441CC19C005C4EC50414C18EC643C8E5441C2C75A9FC3EC50410813CE193D8E544190BB48E8BFEC5041CD80887A428E54410B0E0C8BBCEC50414963D742478E54414E317F51B4EC5041D6EA06F4528E5441C54AD8F7BFEC5041D4E327735A8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460445 - 3683280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000200000005C8FC2E5C8EC504114AE47A1618E544185EB5108CCEC5041B81E853B638E544114AE4791CDEC504185EB5188638E5441B81E855BCFEC5041F6285C7F638E5441713D0A67D0EC5041B81E851B648E5441295C8F22D1EC5041D7A370ED668E5441E17A14BED0EC5041EC51B89E678E5441333333D3D9EC504185EB51E86D8E5441AE47E19AE1EC5041CDCCCC7C738E544148E17A14E2EC50418FC2F5A8728E5441C3F528ECE2EC50417B14AEC7728E5441EC51B84EE3EC5041AE47E12A728E5441C3F5282CF1EC5041E17A14AE5E8E5441EC51B8DEC3EC5041E17A14BE3C8E544133333393B6EC50410AD7A3A04F8E544166666666BAEC50418FC2F588508E5441F6285C3FBBEC50419A999949518E54413D0AD7E3BBEC5041CDCCCCFC528E5441295C8F82BCEC5041295C8F92548E544148E17A44BDEC5041EC51B8FE558E5441AE47E11ABEEC5041EC51B89E568E5441F6285CAFBFEC5041B81E850B578E5441EC51B8AEC0EC50410AD7A300588E54415C8FC255C1EC504185EB51A8598E5441E17A14FEC1EC5041333333A35A8E54410AD7A3F0C2EC504152B81E655B8E5441A4703D6AC4EC50410AD7A3D05B8E54415C8FC2D5C4EC5041000000605C8E5441C3F5288CC4EC5041A4703D8A5D8E5441666666B6C4EC504114AE47B15E8E54418FC2F5E8C5EC50417B14AE27608E54415C8FC2E5C8EC504114AE47A1618E5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C54AD8F7BFEC5041D4E327735A8E54415ED68408D1EC50410C76411B678E544170157635D3EC504195B530B6688E5441B70D5EC8D4EC5041A6D803396A8E5441956C959DD5EC50419C4B38F66A8E5441E948029DD7EC504106945D606C8E54414F24D056D9EC5041081336926D8E5441B28CA6B3E1EC504106BDB767738E544148E17A14E2EC50418FC2F5A8728E5441B81E859BE3EC5041F6285CBF718E5441A2293B30E9EC50419999DBE6698E54414A74BF7CF0EC504127F49FA45F8E5441C3F5282CF1EC5041E17A14AE5E8E5441383D34B2F1EC50414DC0E9335E8E5441CC19C005C4EC50414C18EC643C8E5441C2C75A9FC3EC50410813CE193D8E544190BB48E8BFEC5041CD80887A428E54410B0E0C8BBCEC50414963D742478E54414E317F51B4EC5041D6EA06F4528E5441C54AD8F7BFEC5041D4E327735A8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460629 - 2917228
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000060000005C8FC24544EE504114AE47412291544148E17AD445EE504185EB51D8219154419A9999A958EE5041CDCCCC9C23915441C3F5288C47EE5041B81E85BBF29054410000005036EE5041A4703D3AF99054415C8FC24544EE504114AE474122915441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000091DB910A43EE50416004F5A21E9154417E2EA63C44EE5041FE087E0C229154414859C77D45EE5041B080DAB7219154419A9999A958EE5041CDCCCC9C23915441A62113FB47EE504148BCBAFAF39054410DC495EC36EE5041C3E43AB9FA905441D70F89D43BEE5041B21F96710991544191DB910A43EE50416004F5A21E915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460629 - 3678246
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000060000005C8FC24544EE504114AE47412291544148E17AD445EE504185EB51D8219154419A9999A958EE5041CDCCCC9C23915441C3F5288C47EE5041B81E85BBF29054410000005036EE5041A4703D3AF99054415C8FC24544EE504114AE474122915441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000091DB910A43EE50416004F5A21E9154417E2EA63C44EE5041FE087E0C229154414859C77D45EE5041B080DAB7219154419A9999A958EE5041CDCCCC9C23915441A62113FB47EE504148BCBAFAF39054410DC495EC36EE5041C3E43AB9FA905441D70F89D43BEE5041B21F96710991544191DB910A43EE50416004F5A21E915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 1811476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B544166666606F89C5041713D0A77EC7B54411F85EB51019D50413D0AD743EB7B544185EB5188099D504185EB5138EB7B5441B81E859B139D504152B81E85EB7B54415C8FC2351D9D504114AE47F1EB7B5441333333F31E9D50415C8FC295E67B544152B81E35209D5041713D0AB7E27B544185EB51B8189D504152B81E35E27B54418FC2F5180C9D5041E17A144EE17B54418FC2F5C8059D50417B14AE77E17B54419A999919F89C5041EC51B83EE37B54418FC2F548EE9C504133333363E57B5441AE47E1CAE49C50417B14AE07E97B5441CDCCCCFCE69C5041333333B3EA7B54411F85EB51ED9C50419A999999E87B544148E17A34F29C504148E17AF4E67B54418FC2F578F79C50415C8FC205E67B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000010ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B54410A1E724E069D504143653E74E17B5441D2B451C00D9D50412F92596CE17B5441D3538403199D50416C81373AE27B544152B81E35209D5041713D0AB7E27B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B54418D55D7ECE29C504105C1E44AE87B5441AE47E1CAE49C50417B14AE07E97B54411E67F240ED9C50412E1782C8E57B544110ABFC5DF59C5041CCF66FD7E37B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 3505472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B544166666606F89C5041713D0A77EC7B54411F85EB51019D50413D0AD743EB7B544185EB5188099D504185EB5138EB7B5441B81E859B139D504152B81E85EB7B54415C8FC2351D9D504114AE47F1EB7B5441333333F31E9D50415C8FC295E67B544152B81E35209D5041713D0AB7E27B544185EB51B8189D504152B81E35E27B54418FC2F5180C9D5041E17A144EE17B54418FC2F5C8059D50417B14AE77E17B54419A999919F89C5041EC51B83EE37B54418FC2F548EE9C504133333363E57B5441AE47E1CAE49C50417B14AE07E97B5441CDCCCCFCE69C5041333333B3EA7B54411F85EB51ED9C50419A999999E87B544148E17A34F29C504148E17AF4E67B54418FC2F578F79C50415C8FC205E67B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000010ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B54410A1E724E069D504143653E74E17B5441D2B451C00D9D50412F92596CE17B5441D3538403199D50416C81373AE27B544152B81E35209D5041713D0AB7E27B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B54418D55D7ECE29C504105C1E44AE87B5441AE47E1CAE49C50417B14AE07E97B54411E67F240ED9C50412E1782C8E57B544110ABFC5DF59C5041CCF66FD7E37B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 39794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B544166666606F89C5041713D0A77EC7B54411F85EB51019D50413D0AD743EB7B544185EB5188099D504185EB5138EB7B5441B81E859B139D504152B81E85EB7B54415C8FC2351D9D504114AE47F1EB7B5441333333F31E9D50415C8FC295E67B544152B81E35209D5041713D0AB7E27B544185EB51B8189D504152B81E35E27B54418FC2F5180C9D5041E17A144EE17B54418FC2F5C8059D50417B14AE77E17B54419A999919F89C5041EC51B83EE37B54418FC2F548EE9C504133333363E57B5441AE47E1CAE49C50417B14AE07E97B5441CDCCCCFCE69C5041333333B3EA7B54411F85EB51ED9C50419A999999E87B544148E17A34F29C504148E17AF4E67B54418FC2F578F79C50415C8FC205E67B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 42774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B544166666606F89C5041713D0A77EC7B54411F85EB51019D50413D0AD743EB7B544185EB5188099D504185EB5138EB7B5441B81E859B139D504152B81E85EB7B54415C8FC2351D9D504114AE47F1EB7B5441333333F31E9D50415C8FC295E67B544152B81E35209D5041713D0AB7E27B544185EB51B8189D504152B81E35E27B54418FC2F5180C9D5041E17A144EE17B54418FC2F5C8059D50417B14AE77E17B54419A999919F89C5041EC51B83EE37B54418FC2F548EE9C504133333363E57B5441AE47E1CAE49C50417B14AE07E97B5441CDCCCCFCE69C5041333333B3EA7B54411F85EB51ED9C50419A999999E87B544148E17A34F29C504148E17AF4E67B54418FC2F578F79C50415C8FC205E67B5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3706DE89C5041B81E85CBEB7B544146172777E89C5041FAAEEFD2EB7B5441FBC85D94EF9C5041AB23FB18E97B5441965988B0F99C504114B07C64E67B54414B583AEF009D504183F458B5E57B5441EB6AF36E039D5041DD0CF478E57B54410370B96D099D5041934E6C63E57B544181061BC70F9D50415FF93F7CE57B5441645313AA169D5041F6BF02DBE57B54419E1339730F9D50413DB8D670E47B54410F88E7A4079D50412C2CBA70E47B544172A3EDF9FE9C5041722F97FEE47B5441911DB6CFFC9C50415A65B634E57B544191649290F79C504143052602E67B5441F7077C3BF29C5041BA703DF3E67B54410F1690F4E69C504126D9EEACEA7B5441CDCCCCFCE69C5041333333B3EA7B5441D7A3706DE89C5041B81E85CBEB7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 79078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B544166666606F89C5041713D0A77EC7B54411F85EB51019D50413D0AD743EB7B544185EB5188099D504185EB5138EB7B5441B81E859B139D504152B81E85EB7B54415C8FC2351D9D504114AE47F1EB7B5441333333F31E9D50415C8FC295E67B544152B81E35209D5041713D0AB7E27B544185EB51B8189D504152B81E35E27B54418FC2F5180C9D5041E17A144EE17B54418FC2F5C8059D50417B14AE77E17B54419A999919F89C5041EC51B83EE37B54418FC2F548EE9C504133333363E57B5441AE47E1CAE49C50417B14AE07E97B5441CDCCCCFCE69C5041333333B3EA7B54411F85EB51ED9C50419A999999E87B544148E17A34F29C504148E17AF4E67B54418FC2F578F79C50415C8FC205E67B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 84976
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B544166666606F89C5041713D0A77EC7B54411F85EB51019D50413D0AD743EB7B544185EB5188099D504185EB5138EB7B5441B81E859B139D504152B81E85EB7B54415C8FC2351D9D504114AE47F1EB7B5441333333F31E9D50415C8FC295E67B544152B81E35209D5041713D0AB7E27B544185EB51B8189D504152B81E35E27B54418FC2F5180C9D5041E17A144EE17B54418FC2F5C8059D50417B14AE77E17B54419A999919F89C5041EC51B83EE37B54418FC2F548EE9C504133333363E57B5441AE47E1CAE49C50417B14AE07E97B5441CDCCCCFCE69C5041333333B3EA7B54411F85EB51ED9C50419A999999E87B544148E17A34F29C504148E17AF4E67B54418FC2F578F79C50415C8FC205E67B5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3706DE89C5041B81E85CBEB7B544146172777E89C5041FAAEEFD2EB7B5441FBC85D94EF9C5041AB23FB18E97B5441965988B0F99C504114B07C64E67B54414B583AEF009D504183F458B5E57B5441EB6AF36E039D5041DD0CF478E57B54410370B96D099D5041934E6C63E57B544181061BC70F9D50415FF93F7CE57B5441645313AA169D5041F6BF02DBE57B54419E1339730F9D50413DB8D670E47B54410F88E7A4079D50412C2CBA70E47B544172A3EDF9FE9C5041722F97FEE47B5441911DB6CFFC9C50415A65B634E57B544191649290F79C504143052602E67B5441F7077C3BF29C5041BA703DF3E67B54410F1690F4E69C504126D9EEACEA7B5441CDCCCCFCE69C5041333333B3EA7B5441D7A3706DE89C5041B81E85CBEB7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 2352473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541333333A3F7A850415C8FC2458A1C554114AE4771F9A85041B81E850B921C55418FC2F5D81CA95041AE47E10A8E1C5541666666063DA9504185EB51688A1C5541EC51B81E3AA950418FC2F5B8821C5541CDCCCC4C2CA95041AE47E14A841C554156CF09CF2AA950412E3F1F76841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 4808782
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541333333A3F7A850415C8FC2458A1C554114AE4771F9A85041B81E850B921C55418FC2F5D81CA95041AE47E10A8E1C5541666666063DA9504185EB51688A1C5541EC51B81E3AA950418FC2F5B8821C5541CDCCCC4C2CA95041AE47E14A841C554156CF09CF2AA950412E3F1F76841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 18155
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EC51B8CEFFA8504185EB5158891C5541EC51B84E06A95041713D0A27891C5541E17A14FE13A9504114AE47B1871C55411F85EB5121A95041713D0AD7851C55413D0AD7F328A95041C3F528AC841C5541CDCCCCDC29A950411F85EB91841C5541E9D27EA42AA9504166792F7B841C5541117E61A42AA95041557AF77A841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 62532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EC51B8CEFFA8504185EB5158891C5541EC51B84E06A95041713D0A27891C5541E17A14FE13A9504114AE47B1871C55411F85EB5121A95041713D0AD7851C55413D0AD7F328A95041C3F528AC841C5541CDCCCCDC29A950411F85EB91841C5541E9D27EA42AA9504166792F7B841C5541117E61A42AA95041557AF77A841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468666 - 1716952
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD1555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD155541D8B3D33BD2BC5041064CCADBD015554139A83CBED4BC5041AC0D114ED4155541B7BC3890D4BC504131ADFBF6D31555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468666 - 3394579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD1555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD155541D8B3D33BD2BC5041064CCADBD015554139A83CBED4BC5041AC0D114ED4155541B7BC3890D4BC504131ADFBF6D31555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>469351 - 5219716
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470166 - 3002256
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000003D0AD7E3B3A45041295C8FB2B81C5541713D0A5773A450413D0AD723B31C5541713D0AA772A450418FC2F5E8B91C55411F85EB0172A4504185EB5148C01C55417B14AE5771A4504185EB51D8C61C5541B81E855B70A45041AE47E1DAC61C554114AE47F138A450413D0AD7B3C71C5541CDCCCCAC38A450418FC2F518DA1C5541CDCCCC9C38A45041B81E856BDE1C55411F85EB7138A45041E17A14FEE91C55415C8FC2556AA45041C3F5283CE91C5541CDCCCC9CACA45041B81E85EBEE1C55411F85EB91AEA450418FC2F578E31C5541D7A3704DAFA45041295C8F32DF1C5541D7A3709DAFA45041EC51B85EDD1C5541C3F5285CB2A45041333333D3C51C5541A4703D1AB3A4504148E17A74BF1C55413D0AD7E3B3A45041295C8FB2B81C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001500000015B848B4ADA45041B2EF6F83E81C55417C45740C9AA4504162130F9BE61C5541330118E284A45041372B2A8DE41C5541765923887EA4504153605AEFE31C5541CC5E837F6BA4504101E346B9E21C554194B5273D6AA450418C61C3A4E21C554164677EC567A45041E39F9FA7E21C5541121052E45DA450415EDA21BCE21C5541B3CD0FA238A45041B2037A09E31C5541D0A0D29F38A4504171C20E01E31C5541D744FE8A38A4504136673401E31C55411F85EB7138A45041E17A14FEE91C55415C8FC2556AA45041C3F5283CE91C5541CD631B3A73A450419C506AFFE91C554121A0665380A45041D9E50B1FEB1C554143C04A5584A4504166030B77EB1C554112115CAF85A45041182BBA94EB1C5541EC4EF4A4A0A45041EB68B7E4ED1C55413CE6F4BAACA450419C9F26EDEE1C554103CB21D7ADA450413E239585E81C554115B848B4ADA45041B2EF6F83E81C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470853 - 5173681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000003300000085EB5108D3305141C3F528ECDE755441295C8FC2D4305141713D0A87DA755441B81E85BBD530514133333363D8755441EC51B88ED4305141D7A3702DD87554417B14AE77D2305141713D0A47D875544185EB5198D1305141AE47E14AD8755441A4703D7ACC305141295C8F12D87554417B14AEF7C83051413D0AD763D8755441A4703DCAC530514185EB51C8D9755441295C8F32C23051411F85EBC1DD755441D7A3701DC030514114AE4781DE75544148E17A14BB305141CDCCCC5CE07554418FC2F5B8B5305141F6285C9FE27554417B14AE07AF305141EC51B89EE57554410AD7A3E0A7305141B81E85ABE875544133333353A7305141D7A3709DEF7554411F85EBA1A3305141CDCCCC8C0976544133333363A2305141CDCCCC6C0976544152B81EF59D305141B81E85FB08765441666666E69C3051410000009040765441C3F528DC9D305141B81E859B407654413D0AD733AB305141E17A143E417654419A999909B030514148E17A5441765441B81E85FBB430514148E17A34417654410AD7A340BA305141000000B040765441A4703DAABF3051410AD7A3E03F7654418FC2F508C5305141295C8FC23E76544185EB5108C73051419A9999393E76544185EB51B8C63051413333335335765441EC51B86EC3305141713D0AB7357654418FC2F538BD3051417B14AE473676544148E17A54BB305141E17A142E36765441CDCCCC0CB93051415C8FC2C53576544133333303BA305141F6285C3F2E765441F6285CDFBA305141C3F5283C287654419A999919BC3051417B14AE67227654417B14AEE7BC3051410AD7A3901E765441333333E3BD305141333333B317765441CDCCCC7CBE3051417B14AE270F7654413D0AD703BF305141295C8F720A76544114AE47C1C0305141C3F5289C0A765441E17A148EC23051417B14AEC70A7654411F85EB91C63051411F85EB110B7654411F85EB41C7305141713D0AD708765441A4703D1AC930514148E17AC4047654417B14AEA7CA305141A4703D2A01765441C3F528CCCB3051418FC2F5F8FD755441AE47E14ACD305141000000E0F8755441B81E851BCF3051415C8FC285F1755441333333F3D1305141C3F5289CE375544185EB5108D3305141C3F528ECDE7554410103000000010000003300000014AE4771E1305141CDCCCC8CE775544166666636E0305141F6285C7FE97554415C8FC295DD30514152B81EC5ED7554417B14AEE7DC3051413D0AD703EF7554413D0AD743DC3051417B14AE77EF75544152B81E75DC3051418FC2F558EB7554417B14AEB7DC305141B81E852BE97554413D0AD743DC305141B81E853BE4755441713D0A27DC3051417B14AE07DF755441F6285C3FDB30514152B81EF5DA755441B81E859BD83051410AD7A320DA755441D7A3705DD63051413D0AD7F3D875544152B81E05D6305141666666A6D975544100000070D43051413D0AD713DD755441AE47E1BAD3305141CDCCCCBCDE755441295C8F52D33051419A9999F9E0755441CDCCCC5CD2305141F6285C9FE5755441713D0AB7D13051413D0AD7C3E87554419A999929D0305141A4703DDAEF7554418FC2F5C8CE305141AE47E1FAF47554413D0AD7B3CD305141333333A3F975544100000050CC305141333333E3FD75544152B81E45CB305141AE47E11A01765441713D0A67C7305141000000A00A765441333333B3C6305141666666F60E765441D7A3701DC6305141C3F5283C147654417B14AE87C5305141F6285CEF1C765441B81E854BC530514114AE47F121765441D7A3702DC5305141AE47E18A267654419A9999D9C530514185EB51582B7654411F85EB41C7305141F6285CCF33765441B81E859BC730514185EB51E838765441D7A370FDC73051417B14AEF73D76544114AE47B1C9305141333333833D7654411F85EB31CE305141AE47E10A3C765441E17A14BED3305141AE47E13A3A765441B81E85ABD6305141B81E854B39765441295C8F62E030514114AE473136765441B81E856BE53051410AD7A3E03476544148E17A34E6305141713D0AB7347654417B14AE17E6305141000000F02D7654418FC2F538E73051411F85EBE12076544152B81E95E83051417B14AEB716765441666666C6E9305141000000000C7654417B14AEC7EB30514185EB5128FD755441A4703DEAED305141B81E85CBF47554411F85EB21EE30514114AE47F1F37554419A999999EC305141E17A142EF2755441F6285C0FE93051415C8FC215EF755441B81E852BE630514185EB51C8EC75544114AE4771E1305141CDCCCC8CE7755441
+</a>
+
+<b>
+0106000000010000000103000000010000003E000000C9E8EFD9A030514143A2844509765441D06CB9F49D305141DBF8501009765441653CF5CD9D305141F1B4CB0511765441815725F89C3051414DF3D4904076544112A55747A5305141190BE8F5407654411917F514AE305141D1756B4B417654417D466C88B33051412251DC3D41765441306C95B6B83051411BFEB1D6407654414CC2D48ABE3051418CDAA60B407654410C529D39C73051417CDA632C3E765441257CDE05C7305141E53FCCF33D76544189F1DAB8C630514123A171623576544124D72994C630514177427D5735765441EC51B86EC3305141713D0AB7357654418FC2F538BD3051417B14AE473676544148E17A54BB305141E17A142E36765441CDCCCC0CB93051415C8FC2C53576544133333303BA305141F6285C3F2E765441F6285CDFBA305141C3F5283C287654419A999919BC3051417B14AE67227654417B14AEE7BC3051410AD7A3901E765441333333E3BD305141333333B317765441CDCCCC7CBE3051417B14AE270F7654413D0AD703BF305141295C8F720A76544114AE47C1C0305141C3F5289C0A765441E17A148EC23051417B14AEC70A7654411F85EB91C63051411F85EB110B76544172BC458EC6305141BA29B0380B7654415D6F2A46C7305141ED12ABCD087654419EB4922EC8305141B3F0ABCC0676544176997CACCA3051417EFCCE1C01765441F961F672CB30514108AA34F2FE75544155A5D64FCD3051412FD8E9CBF8755441DA19DE54CE305141B96B7EAAF47554417F9C8270CF3051419968C7E5EF755441FE0B5D42D130514189DFADFDE67554415BF5D60BD3305141D39734E3DE755441A84BD399D3305141A55FF979DD755441855305B5D5305141369C2F6BD8755441C1E2DD6AD43051413A76D132D87554418B36C8EDD130514168A5C045D8755441EE86E199D13051417862D64AD8755441DAE2DA8AD1305141DA4D4042D8755441A7542E67CD305141E9FBBE1CD8755441A412D000CC305141F28FB622D875544184FD850ECA305141CAF29D4AD87554410072B7F3C8305141A5E22867D8755441D0A76791C7305141E3272F04D975544115EB83D6C530514142F371C5D97554412E097D8AC5305141BAFCDB0EDA755441A05E8D44C2305141D52B03B4DD755441555AA1EEC1305141278D4DDADD755441AE000686BB305141736DE932E07554419A9A1906AF305141F02CBA99E57554417B14AE07AF305141EC51B89EE5755441F546BB26AB305141F22A2346E77554418DCE3EE0A7305141D81E7BB0E875544133333353A7305141D7A3709DEF7554419388C3A4A33051413E74D378097654411F85EBA1A3305141CDCCCC8C0976544133333363A2305141CDCCCC6C09765441C9E8EFD9A030514143A2844509765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470902 - 3186412
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000120000005C8FC2E561225141B81E856B8674544152B81EC55F225141B81E853B857454418FC2F5185D22514185EB51D883745441CDCCCC9C58225141B81E850B8E74544152B81E15512251419A9999299F74544114AE47414E225141D7A370EDA5745441AE47E10A4B22514152B81EE5AF745441AE47E1CA422251415C8FC235C4745441333333A3422251417B14AE77C4745441EC51B83E472251411F85EB61C7745441D7A370FD4A2251415C8FC275BE745441AE47E14A4A22514133333323BD74544148E17AF44D225141B81E853BB47454415C8FC2A552225141B81E854BA774544185EB51E85522514152B81EF5A07454417B14AE075822514185EB51489F74544148E17AC45B225141EC51B8DE947454415C8FC2E561225141B81E856B867454410103000000010000000A0000001F85EB01A8225141EC51B8CEA27554417B14AE17902251419A999909EF755441AE47E19A9522514148E17A44EF7554417B14AE579B22514133333323F07554413D0AD793A122514114AE47B1F1755441D7A3704DB32251411F85EB31B9755441B81E85BBC02251413D0AD7638E7554417B14AE87B5225141333333738775544148E17A54B122514166666616857554411F85EB01A8225141EC51B8CEA2755441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B5DA337DA1225141C92198C0F1755441D688E122A22251415F2A58E9EF7554416D797F79A3225141195F45A5EB7554419689D3CFAD22514149FCEEACCA755441840B4199B222514114CA4070BB75544107631AD9BA2251417F843125A1755441D7668EADC0225141EBCEDE5B8E7554410493665CB122514160FADA1A857554410FDF8DB2A0225141FA9AC51BBA7554412A7D4C379122514100C9CD74EB755441C8A9DF25902251418E34310AEF755441923FE3A693225141605F9E2FEF755441B11C06C79B2251418010F83EF0755441C804DC6EA0225141AB173568F1755441B5DA337DA1225141C92198C0F1755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470902 - 3593208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000120000005C8FC2E561225141B81E856B8674544152B81EC55F225141B81E853B857454418FC2F5185D22514185EB51D883745441CDCCCC9C58225141B81E850B8E74544152B81E15512251419A9999299F74544114AE47414E225141D7A370EDA5745441AE47E10A4B22514152B81EE5AF745441AE47E1CA422251415C8FC235C4745441333333A3422251417B14AE77C4745441EC51B83E472251411F85EB61C7745441D7A370FD4A2251415C8FC275BE745441AE47E14A4A22514133333323BD74544148E17AF44D225141B81E853BB47454415C8FC2A552225141B81E854BA774544185EB51E85522514152B81EF5A07454417B14AE075822514185EB51489F74544148E17AC45B225141EC51B8DE947454415C8FC2E561225141B81E856B867454410103000000010000000A0000001F85EB01A8225141EC51B8CEA27554417B14AE17902251419A999909EF755441AE47E19A9522514148E17A44EF7554417B14AE579B22514133333323F07554413D0AD793A122514114AE47B1F1755441D7A3704DB32251411F85EB31B9755441B81E85BBC02251413D0AD7638E7554417B14AE87B5225141333333738775544148E17A54B122514166666616857554411F85EB01A8225141EC51B8CEA2755441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B5DA337DA1225141C92198C0F1755441D688E122A22251415F2A58E9EF7554416D797F79A3225141195F45A5EB7554419689D3CFAD22514149FCEEACCA755441840B4199B222514114CA4070BB75544107631AD9BA2251417F843125A1755441D7668EADC0225141EBCEDE5B8E7554410493665CB122514160FADA1A857554410FDF8DB2A0225141FA9AC51BBA7554412A7D4C379122514100C9CD74EB755441C8A9DF25902251418E34310AEF755441923FE3A693225141605F9E2FEF755441B11C06C79B2251418010F83EF0755441C804DC6EA0225141AB173568F1755441B5DA337DA1225141C92198C0F1755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470902 - 384832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000120000005C8FC2E561225141B81E856B8674544152B81EC55F225141B81E853B857454418FC2F5185D22514185EB51D883745441CDCCCC9C58225141B81E850B8E74544152B81E15512251419A9999299F74544114AE47414E225141D7A370EDA5745441AE47E10A4B22514152B81EE5AF745441AE47E1CA422251415C8FC235C4745441333333A3422251417B14AE77C4745441EC51B83E472251411F85EB61C7745441D7A370FD4A2251415C8FC275BE745441AE47E14A4A22514133333323BD74544148E17AF44D225141B81E853BB47454415C8FC2A552225141B81E854BA774544185EB51E85522514152B81EF5A07454417B14AE075822514185EB51489F74544148E17AC45B225141EC51B8DE947454415C8FC2E561225141B81E856B867454410103000000010000000A0000001F85EB01A8225141EC51B8CEA27554417B14AE17902251419A999909EF755441AE47E19A9522514148E17A44EF7554417B14AE579B22514133333323F07554413D0AD793A122514114AE47B1F1755441D7A3704DB32251411F85EB31B9755441B81E85BBC02251413D0AD7638E7554417B14AE87B5225141333333738775544148E17A54B122514166666616857554411F85EB01A8225141EC51B8CEA2755441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B5DA337DA1225141C92198C0F1755441D688E122A22251415F2A58E9EF7554416D797F79A3225141195F45A5EB7554419689D3CFAD22514149FCEEACCA755441840B4199B222514114CA4070BB75544107631AD9BA2251417F843125A1755441D7668EADC0225141EBCEDE5B8E7554410493665CB122514160FADA1A857554410FDF8DB2A0225141FA9AC51BBA7554412A7D4C379122514100C9CD74EB755441C8A9DF25902251418E34310AEF755441923FE3A693225141605F9E2FEF755441B11C06C79B2251418010F83EF0755441C804DC6EA0225141AB173568F1755441B5DA337DA1225141C92198C0F1755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470903 - 153275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C8FA72151410AD7A3C0607554415C8FC295B4215141333333E3657554413D0AD7C3C42151413D0AD7D33C75544114AE47C1BB2151415C8FC245397554411F85EBF1C7215141A4703D5A1A75544114AE47C1C32151418FC2F53819755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001AAD3044C7215141571EE8121C7554415253EBF1C7215141F6EE3D5A1A755441C6F448C1C32151417826F638197554419DAF779AC2215141988354251C755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441A162BE95B4215141DC8D31E36575544169A0C195B42151415C2232E3657554411CE5E83FBD2151417F1033E64F7554413D0AD7C3C42151413D0AD7D33C755441E1ED066ABF215141A14A5DB73A7554415D9046C1BB215141AD8CC245397554411AAD3044C7215141571EE8121C755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470903 - 344216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C8FA72151410AD7A3C0607554415C8FC295B4215141333333E3657554413D0AD7C3C42151413D0AD7D33C75544114AE47C1BB2151415C8FC245397554411F85EBF1C7215141A4703D5A1A75544114AE47C1C32151418FC2F53819755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001AAD3044C7215141571EE8121C7554415253EBF1C7215141F6EE3D5A1A755441C6F448C1C32151417826F638197554419DAF779AC2215141988354251C755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441A162BE95B4215141DC8D31E36575544169A0C195B42151415C2232E3657554411CE5E83FBD2151417F1033E64F7554413D0AD7C3C42151413D0AD7D33C755441E1ED066ABF215141A14A5DB73A7554415D9046C1BB215141AD8CC245397554411AAD3044C7215141571EE8121C755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471162 - 2947466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7B327385141D7A3703DA4735441B81E85AB2C385141C3F5289CA2735441B81E853B3138514152B81E05A07354419A9999A93D38514185EB51F8977354410000005045385141333333E36D735441AE47E10A4738514133333353667354418FC2F5C83138514114AE47515A735441F6285C5F2E3851415C8FC2455B73544152B81E452C38514185EB51A85D73544148E17A34293851415C8FC2C561735441713D0A3725385141F6285CBF69735441295C8F2218385141C3F5284CA37354417B14AEE718385141713D0A57A4735441AE47E17A22385141F6285CDFA47354413D0AD7B327385141D7A3703DA4735441
+</a>
+
+<b>
+010600000001000000010300000001000000140000006F5A231018385141F8470118A47354419D680D561D385141AC622096A4735441D75B03AC2238514154D268D9A4735441C475E60528385141456A8322A47354416C13F4C52B385141C6037DE7A2735441F2BB50942F385141BE705CF5A0735441A89DBD2A313851417627A50EA07354411E1D6CDA31385141E612BC899B7354419CB1125D35385141B0BD62B5847354415A5BBDCC3938514127B49B416F735441D2FC91F23C385141289E6D9F60735441BDC0BBC03C3851411A0247836073544197A2B2FD3C385141600CF25C5F7354415B640E982F3851414DDE86FD57735441629C62322B38514108ABDD165C735441E218C4672838514125F2F22E607354419CB994B92638514146C1460F637354417285F1722338514193068484717354417E14B1061F385141E70B40FA847354416F5A231018385141F8470118A4735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471162 - 3703044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7B327385141D7A3703DA4735441B81E85AB2C385141C3F5289CA2735441B81E853B3138514152B81E05A07354419A9999A93D38514185EB51F8977354410000005045385141333333E36D735441AE47E10A4738514133333353667354418FC2F5C83138514114AE47515A735441F6285C5F2E3851415C8FC2455B73544152B81E452C38514185EB51A85D73544148E17A34293851415C8FC2C561735441713D0A3725385141F6285CBF69735441295C8F2218385141C3F5284CA37354417B14AEE718385141713D0A57A4735441AE47E17A22385141F6285CDFA47354413D0AD7B327385141D7A3703DA4735441
+</a>
+
+<b>
+010600000001000000010300000001000000140000006F5A231018385141F8470118A47354419D680D561D385141AC622096A4735441D75B03AC2238514154D268D9A4735441C475E60528385141456A8322A47354416C13F4C52B385141C6037DE7A2735441F2BB50942F385141BE705CF5A0735441A89DBD2A313851417627A50EA07354411E1D6CDA31385141E612BC899B7354419CB1125D35385141B0BD62B5847354415A5BBDCC3938514127B49B416F735441D2FC91F23C385141289E6D9F60735441BDC0BBC03C3851411A0247836073544197A2B2FD3C385141600CF25C5F7354415B640E982F3851414DDE86FD57735441629C62322B38514108ABDD165C735441E218C4672838514125F2F22E607354419CB994B92638514146C1460F637354417285F1722338514193068484717354417E14B1061F385141E70B40FA847354416F5A231018385141F8470118A4735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471250 - 36690
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000027000000C3F5280CC419514133333303566C54413D0AD723CA1951417B14AEC7616C5441E17A147ED01951413D0AD7736C6C5441D7A3704DD31951410AD7A390706C5441AE47E1DAD51951415C8FC255726C544152B81E65D91951415C8FC245736C54419A9999D9DF195141B81E852B736C5441EC51B85EE519514133333303736C54410AD7A390EB1951410AD7A3D0716C5441AE47E1EAF6195141E17A141E6E6C5441666666B6F8195141F6285C4F6F6C5441666666E6FA1951411F85EB216F6C544166666606181A51413D0AD7C36C6C5441666666863B1A51411F85EBE1696C5441000000D0371A51417B14AE47606C5441B81E85DB171A51413D0AD703636C544152B81EA5F71951415C8FC2C5656C54415C8FC2B5F6195141AE47E12A626C5441CDCCCC5CF619514148E17A745F6C54417B14AE27F6195141D7A3709D5D6C5441A4703D3AF619514152B81E95596C5441F6285C3FF7195141D7A3701D576C5441000000000E1A514148E17A344D6C54413D0AD723261A514114AE47B1426C54410AD7A3A02C1A5141E17A14DE3F6C5441A4703DBA241A5141A4703D6A2B6C5441333333C31F1A5141000000901E6C5441EC51B8DE021A514148E17A642A6C5441666666D6DD195141EC51B88E396C5441CDCCCC7CD9195141EC51B8AE336C5441D7A3703DC11951411F85EBD1366C544100000070A91951415C8FC2E5396C54410AD7A300A9195141C3F528EC3C6C5441C3F5281CA81951413D0AD753406C5441EC51B80EA4195141C3F528EC4D6C54417B14AEC7A2195141295C8FA2526C5441000000D0AF1951410AD7A3E0516C5441C3F5289CC01951418FC2F5084F6C5441C3F5280CC419514133333303566C5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000690EB2B6CE1951415EC8C576696C5441D9B743DACA195141BE6C29FA626C5441C061EB01C6195141C4BC55CC596C5441FCE96A4CC0195141DA5A2F4C4F6C54412E95E687BA195141460D5010506C5441000000D0AF1951410AD7A3E0516C54412360BCCBA21951419C0253A2526C5441DDA3391DA2195141FB6B8770576C544138003306A2195141BC942C9A586C5441283A15F3A1195141C8AFD5C65C6C54419DE6DFCFA2195141144557B35C6C544199AF41D0A2195141D2CB54C05C6C5441946EF780A3195141829AEBD4546C54410E9EC742BF195141B1D4BB8B516C54419D440230CF19514177791C2F6E6C54410B409481D11951412EAA5DD26D6C5441919CE5DFCF195141AABF156A6B6C5441690EB2B6CE1951415EC8C576696C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471250 - 77090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000027000000C3F5280CC419514133333303566C54413D0AD723CA1951417B14AEC7616C5441E17A147ED01951413D0AD7736C6C5441D7A3704DD31951410AD7A390706C5441AE47E1DAD51951415C8FC255726C544152B81E65D91951415C8FC245736C54419A9999D9DF195141B81E852B736C5441EC51B85EE519514133333303736C54410AD7A390EB1951410AD7A3D0716C5441AE47E1EAF6195141E17A141E6E6C5441666666B6F8195141F6285C4F6F6C5441666666E6FA1951411F85EB216F6C544166666606181A51413D0AD7C36C6C5441666666863B1A51411F85EBE1696C5441000000D0371A51417B14AE47606C5441B81E85DB171A51413D0AD703636C544152B81EA5F71951415C8FC2C5656C54415C8FC2B5F6195141AE47E12A626C5441CDCCCC5CF619514148E17A745F6C54417B14AE27F6195141D7A3709D5D6C5441A4703D3AF619514152B81E95596C5441F6285C3FF7195141D7A3701D576C5441000000000E1A514148E17A344D6C54413D0AD723261A514114AE47B1426C54410AD7A3A02C1A5141E17A14DE3F6C5441A4703DBA241A5141A4703D6A2B6C5441333333C31F1A5141000000901E6C5441EC51B8DE021A514148E17A642A6C5441666666D6DD195141EC51B88E396C5441CDCCCC7CD9195141EC51B8AE336C5441D7A3703DC11951411F85EBD1366C544100000070A91951415C8FC2E5396C54410AD7A300A9195141C3F528EC3C6C5441C3F5281CA81951413D0AD753406C5441EC51B80EA4195141C3F528EC4D6C54417B14AEC7A2195141295C8FA2526C5441000000D0AF1951410AD7A3E0516C5441C3F5289CC01951418FC2F5084F6C5441C3F5280CC419514133333303566C5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000690EB2B6CE1951415EC8C576696C5441D9B743DACA195141BE6C29FA626C5441C061EB01C6195141C4BC55CC596C5441FCE96A4CC0195141DA5A2F4C4F6C54412E95E687BA195141460D5010506C5441000000D0AF1951410AD7A3E0516C54412360BCCBA21951419C0253A2526C5441DDA3391DA2195141FB6B8770576C544138003306A2195141BC942C9A586C5441283A15F3A1195141C8AFD5C65C6C54419DE6DFCFA2195141144557B35C6C544199AF41D0A2195141D2CB54C05C6C5441946EF780A3195141829AEBD4546C54410E9EC742BF195141B1D4BB8B516C54419D440230CF19514177791C2F6E6C54410B409481D11951412EAA5DD26D6C5441919CE5DFCF195141AABF156A6B6C5441690EB2B6CE1951415EC8C576696C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472208 - 3076926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E17A14DE0FFD504185EB51982E595441B81E851B10FD5041000000D02E595441D7A370FD11FD50416666668630595441E17A145E14FD5041B81E85FB3259544114AE47F115FD5041666666B634595441666666E61DFD504185EB51E813595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB095954410000006008FD5041295C8F8228595441333333630DFD5041666666562C595441E17A14DE0FFD504185EB51982E595441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000DE9C901F20FD50418440ADBE0A5954418CCEC72720FD5041C090D19C0A595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB09595441F7A294CE0FFD504181696E260C595441DE9C901F20FD50418440ADBE0A595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472208 - 3383062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E17A14DE0FFD504185EB51982E595441B81E851B10FD5041000000D02E595441D7A370FD11FD50416666668630595441E17A145E14FD5041B81E85FB3259544114AE47F115FD5041666666B634595441666666E61DFD504185EB51E813595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB095954410000006008FD5041295C8F8228595441333333630DFD5041666666562C595441E17A14DE0FFD504185EB51982E595441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000DE9C901F20FD50418440ADBE0A5954418CCEC72720FD5041C090D19C0A595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB09595441F7A294CE0FFD504181696E260C595441DE9C901F20FD50418440ADBE0A595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472352 - 1106268
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000E17A143E62FC5041E17A14CE41625441713D0A975DFC5041E17A144E40625441713D0AF75AFC5041D7A3702D39625441F6285C8F4FFC50418FC2F5182D62544185EB512847FC504152B81EA526625441AE47E11A43FC504148E17AC421625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441C3F528FC50FC50417B14AEF75F6254415C8FC2F551FC5041295C8F9262625441F6285C8F4FFC504114AE47B1646254413D0AD7E35AFC5041D7A370ED7962544152B81E6568FC504185EB5168886254410AD7A3807CFC50419A9999B972625441A4703DDA7DFC50415C8FC20570625441D7A370ED7DFC50411F85EB116B625441A4703DBA7CFC50411F85EB1168625441B81E850B6AFC50418FC2F5484D6254417B14AE9752FC50413D0AD703626254410AD7A38051FC504152B81E855F625441CDCCCCFC67FC5041A4703D1A4C6254410000009068FC5041A4703D9A49625441E17A143E62FC5041E17A14CE41625441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000DA00B31E43FC5041C7B8F3B021625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441E0B9DA5847FC50417938A8D14C6254416F17D6454BFC50412276BD2D4A625441399D03B054FC5041D922CC735C6254414D2A1E6351FC5041E4FC493B5F625441C3F528FC50FC50417B14AEF75F6254415C8FC2F551FC5041295C8F9262625441F6285C8F4FFC504114AE47B1646254413D0AD7E35AFC5041D7A370ED7962544152B81E6568FC504185EB5168886254410AD7A3807CFC50419A9999B972625441A4703DDA7DFC50415C8FC20570625441D7A370ED7DFC50411F85EB116B625441A4703DBA7CFC50411F85EB1168625441B81E850B6AFC50418FC2F5484D6254417B14AE9752FC50413D0AD703626254410AD7A38051FC504152B81E855F625441CDCCCCFC67FC5041A4703D1A4C6254410000009068FC5041A4703D9A49625441B944E02B68FC50414206B402496254414270243368FC50411B86AC27496254410AD1696964FC504183763D7B44625441E17A143E62FC5041E17A14CE41625441786769965DFC5041B43F75AB40625441D1445F795CFC5041287B6C463D625441713D0AF75AFC5041D7A3702D39625441F6285C8F4FFC50418FC2F5182D6254418CD0A4DA4CFC5041C64C01052B625441B2BA1A3E4BFC50410C8C34C8296254411536B9B049FC50419AC80B9728625441F7D3A84148FC5041BBFF2A7D27625441FC505A0147FC5041734D387626625441610B3D1A45FC50412097F02B24625441DA00B31E43FC5041C7B8F3B021625441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472352 - 3319415
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000E17A143E62FC5041E17A14CE41625441713D0A975DFC5041E17A144E40625441713D0AF75AFC5041D7A3702D39625441F6285C8F4FFC50418FC2F5182D62544185EB512847FC504152B81EA526625441AE47E11A43FC504148E17AC421625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441C3F528FC50FC50417B14AEF75F6254415C8FC2F551FC5041295C8F9262625441F6285C8F4FFC504114AE47B1646254413D0AD7E35AFC5041D7A370ED7962544152B81E6568FC504185EB5168886254410AD7A3807CFC50419A9999B972625441A4703DDA7DFC50415C8FC20570625441D7A370ED7DFC50411F85EB116B625441A4703DBA7CFC50411F85EB1168625441B81E850B6AFC50418FC2F5484D6254417B14AE9752FC50413D0AD703626254410AD7A38051FC504152B81E855F625441CDCCCCFC67FC5041A4703D1A4C6254410000009068FC5041A4703D9A49625441E17A143E62FC5041E17A14CE41625441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000DA00B31E43FC5041C7B8F3B021625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441E0B9DA5847FC50417938A8D14C6254416F17D6454BFC50412276BD2D4A625441399D03B054FC5041D922CC735C6254414D2A1E6351FC5041E4FC493B5F625441C3F528FC50FC50417B14AEF75F6254415C8FC2F551FC5041295C8F9262625441F6285C8F4FFC504114AE47B1646254413D0AD7E35AFC5041D7A370ED7962544152B81E6568FC504185EB5168886254410AD7A3807CFC50419A9999B972625441A4703DDA7DFC50415C8FC20570625441D7A370ED7DFC50411F85EB116B625441A4703DBA7CFC50411F85EB1168625441B81E850B6AFC50418FC2F5484D6254417B14AE9752FC50413D0AD703626254410AD7A38051FC504152B81E855F625441CDCCCCFC67FC5041A4703D1A4C6254410000009068FC5041A4703D9A49625441B944E02B68FC50414206B402496254414270243368FC50411B86AC27496254410AD1696964FC504183763D7B44625441E17A143E62FC5041E17A14CE41625441786769965DFC5041B43F75AB40625441D1445F795CFC5041287B6C463D625441713D0AF75AFC5041D7A3702D39625441F6285C8F4FFC50418FC2F5182D6254418CD0A4DA4CFC5041C64C01052B625441B2BA1A3E4BFC50410C8C34C8296254411536B9B049FC50419AC80B9728625441F7D3A84148FC5041BBFF2A7D27625441FC505A0147FC5041734D387626625441610B3D1A45FC50412097F02B24625441DA00B31E43FC5041C7B8F3B021625441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472466 - 2511005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51787DE9504133333373FB635441A4703D0A86E950411F85EB81FA635441A4703DFA8AE9504114AE4791F96354417B14AE4792E9504148E17AC4F8635441CDCCCC3C98E950411F85EB81F8635441E17A14BE9DE950410AD7A3A0F863544133333383ACE9504152B81E55FA635441A4703D8ABDE950419A999959FC635441B81E85FBC2E95041A4703D1AFC6354411F85EBA1C0E95041666666D6F7635441EC51B85EC0E95041EC51B8BEF6635441EC51B81EC0E95041E17A14FEF3635441295C8FE2C0E9504185EB51E8F0635441D7A3702DC2E95041D7A3704DED635441A4703D3AC1E95041295C8FA2E8635441A4703D3AC0E9504166666606E6635441F6285CAFBFE9504152B81E55E46354410AD7A3F0BEE95041F6285CEFDF6354410AD7A320BEE950410AD7A360DC635441A4703D3ABDE95041AE47E18AD76354418FC2F5C8BCE950419A999989D363544166666616BCE9504185EB5198D1635441CDCCCC6CBBE95041A4703D6AD06354419A999969BAE95041295C8FC2CE635441CDCCCC3CB9E9504133333393CD6354419A999909B7E95041F6285CCFCB635441CDCCCC9CB5E950419A9999B9CA635441E17A141EB5E950419A999969CA6354418FC2F5D8B2E950415C8FC285C86354419A999929B2E95041713D0A37C9635441F6285CAFABE950418FC2F578CF6354411F85EBB1A4E950419A999989D5635441D7A3706D9EE95041AE47E19ADA635441CDCCCC7C96E9504114AE4741E0635441666666A68EE950415C8FC2F5E4635441E17A141E89E950413D0AD713E8635441D7A370ED80E950411F85EBF1EB6354419A9999697CE9504133333323EE635441EC51B80E7BE95041D7A3702DEF6354410AD7A3407AE9504185EB5198F0635441E17A144E79E950413D0AD793F56354410AD7A3E077E9504185EB5118FB63544185EB51787DE9504133333373FB635441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000009A999949D0E95041B81E853BC1635441F6285C3FD1E95041E17A14EEBD635441EC51B8CED1E95041D7A3702DBC635441C3F5288CD3E950410AD7A3F0B8635441E17A149ED4E95041CDCCCC3CB6635441713D0AB7D5E950418FC2F538B363544148E17A74D6E95041E17A14EEB063544148E17A84D4E9504148E17AA4AF6354417B14AEF7D2E9504185EB51E8AE635441713D0AB7CFE95041EC51B8CEAC635441295C8FD2CBE95041295C8F52AB6354418FC2F5F8C8E9504166666666AF6354417B14AEF7C3E950415C8FC2A5B5635441AE47E11AC2E950418FC2F5F8B76354410AD7A380BCE95041CDCCCC4CBE63544114AE4701B7E9504100000040C463544133333313B4E950418FC2F548C76354418FC2F5D8B2E950415C8FC285C863544197604D44B5E95041CA5D115CCA6354419A999909B7E95041F6285CCFCB6354417BD03F75B8E95041F81B1BF3CC6354419EFD266DB9E95041ABBCF6C3CD635441471B7B8EBAE95041BE24D8FECE63544171D46079BBE950410BBDA480D063544159A34A51BCE95041B96E543CD2635441B151A3C4BCE95041BD38907DD36354410FC8F73EBDE95041DE8047A4D76354414F773D1BBEE95041826BA143DC635441666B029EBEE95041D9B89085DE635441F6285CAFBFE9504152B81E55E4635441A4703D3AC1E95041295C8FA2E8635441D7A3702DC2E95041D7A3704DED635441D7A3702DC3E95041000000E0EA635441A4703DFAC4E9504114AE4731E76354413D0AD753C6E95041D7A3709DE36354417B14AEF7C7E95041B81E85FBDE6354419A999929CAE9504152B81E35D66354415C8FC2B5CCE95041713D0A27CB6354410AD7A340CDE95041295C8FC2C8635441CDCCCCDCCDE95041C3F528ECC6635441713D0A07CFE95041295C8FA2C46354419A999949D0E95041B81E853BC1635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472466 - 3331409
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51787DE9504133333373FB635441A4703D0A86E950411F85EB81FA635441A4703DFA8AE9504114AE4791F96354417B14AE4792E9504148E17AC4F8635441CDCCCC3C98E950411F85EB81F8635441E17A14BE9DE950410AD7A3A0F863544133333383ACE9504152B81E55FA635441A4703D8ABDE950419A999959FC635441B81E85FBC2E95041A4703D1AFC6354411F85EBA1C0E95041666666D6F7635441EC51B85EC0E95041EC51B8BEF6635441EC51B81EC0E95041E17A14FEF3635441295C8FE2C0E9504185EB51E8F0635441D7A3702DC2E95041D7A3704DED635441A4703D3AC1E95041295C8FA2E8635441A4703D3AC0E9504166666606E6635441F6285CAFBFE9504152B81E55E46354410AD7A3F0BEE95041F6285CEFDF6354410AD7A320BEE950410AD7A360DC635441A4703D3ABDE95041AE47E18AD76354418FC2F5C8BCE950419A999989D363544166666616BCE9504185EB5198D1635441CDCCCC6CBBE95041A4703D6AD06354419A999969BAE95041295C8FC2CE635441CDCCCC3CB9E9504133333393CD6354419A999909B7E95041F6285CCFCB635441CDCCCC9CB5E950419A9999B9CA635441E17A141EB5E950419A999969CA6354418FC2F5D8B2E950415C8FC285C86354419A999929B2E95041713D0A37C9635441F6285CAFABE950418FC2F578CF6354411F85EBB1A4E950419A999989D5635441D7A3706D9EE95041AE47E19ADA635441CDCCCC7C96E9504114AE4741E0635441666666A68EE950415C8FC2F5E4635441E17A141E89E950413D0AD713E8635441D7A370ED80E950411F85EBF1EB6354419A9999697CE9504133333323EE635441EC51B80E7BE95041D7A3702DEF6354410AD7A3407AE9504185EB5198F0635441E17A144E79E950413D0AD793F56354410AD7A3E077E9504185EB5118FB63544185EB51787DE9504133333373FB635441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000009A999949D0E95041B81E853BC1635441F6285C3FD1E95041E17A14EEBD635441EC51B8CED1E95041D7A3702DBC635441C3F5288CD3E950410AD7A3F0B8635441E17A149ED4E95041CDCCCC3CB6635441713D0AB7D5E950418FC2F538B363544148E17A74D6E95041E17A14EEB063544148E17A84D4E9504148E17AA4AF6354417B14AEF7D2E9504185EB51E8AE635441713D0AB7CFE95041EC51B8CEAC635441295C8FD2CBE95041295C8F52AB6354418FC2F5F8C8E9504166666666AF6354417B14AEF7C3E950415C8FC2A5B5635441AE47E11AC2E950418FC2F5F8B76354410AD7A380BCE95041CDCCCC4CBE63544114AE4701B7E9504100000040C463544133333313B4E950418FC2F548C76354418FC2F5D8B2E950415C8FC285C863544197604D44B5E95041CA5D115CCA6354419A999909B7E95041F6285CCFCB6354417BD03F75B8E95041F81B1BF3CC6354419EFD266DB9E95041ABBCF6C3CD635441471B7B8EBAE95041BE24D8FECE63544171D46079BBE950410BBDA480D063544159A34A51BCE95041B96E543CD2635441B151A3C4BCE95041BD38907DD36354410FC8F73EBDE95041DE8047A4D76354414F773D1BBEE95041826BA143DC635441666B029EBEE95041D9B89085DE635441F6285CAFBFE9504152B81E55E4635441A4703D3AC1E95041295C8FA2E8635441D7A3702DC2E95041D7A3704DED635441D7A3702DC3E95041000000E0EA635441A4703DFAC4E9504114AE4731E76354413D0AD753C6E95041D7A3709DE36354417B14AEF7C7E95041B81E85FBDE6354419A999929CAE9504152B81E35D66354415C8FC2B5CCE95041713D0A27CB6354410AD7A340CDE95041295C8FC2C8635441CDCCCCDCCDE95041C3F528ECC6635441713D0A07CFE95041295C8FA2C46354419A999949D0E95041B81E853BC1635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473007 - 3513480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002E000000C3F5280C23FB5041E17A148E235654418FC2F5982BFB50410AD7A3202756544148E17A1432FB5041C3F5283C2A565441AE47E1AA31FB5041333333A32A565441F6285CAF63FB5041E17A147E41565441E17A140E69FB5041666666A61B5654419A9999896DFB50411F85EBA1F65554413D0AD78372FB50418FC2F5B8D75554410AD7A3F015FB5041F6285C7FCC555441333333F3EDFA504148E17A94C7555441F6285CCFEAFA5041E17A146EC75554413D0AD713E8FA5041C3F5289CC75554410AD7A390E3FA5041EC51B80EC85554418FC2F558DAFA50413D0AD743C95554410AD7A3E0D4FA5041A4703D8ACA55544152B81EB5D0FA5041000000A0CC5554419A9999D9CDFA5041A4703D9ACF555441713D0AB7C7FA50411F85EBE1D75554411F85EB11C3FA50419A999959DC555441B81E853BBDFA504152B81E75E055544166666696B8FA50417B14AE57E555544114AE47E1B7FA5041713D0AA7E8555441EC51B8CEB6FA5041E17A146EEE555441AE47E16AB4FA5041D7A3704DF5555441C3F528ACB2FA5041AE47E13AF9555441D7A3702DAFFA5041F6285C4FFF55544152B81E45ADFA5041EC51B86E04565441A4703D9AABFA50418FC2F5A808565441EC51B84EABFA5041A4703D3A0B565441CDCCCC9CABFA504100000030105654417B14AE57AEFA5041F6285CCF14565441CDCCCCBCB1FA50417B14AE37195654415C8FC295B3FA50417B14AE3719565441666666C6B4FA50417B14AE771A565441D7A3703DB4FA5041A4703D8A1B5654415C8FC2D5B4FA50413D0AD7531D56544152B81EB5B8FA504148E17A14215654410AD7A390BBFA504114AE479122565441AE47E16ABEFA5041000000F0225654418FC2F5F8FDFA5041666666E6205654411F85EB6107FB5041B81E857B205654418FC2F50812FB504152B81EB51F565441295C8F9213FB50418FC2F5E81F565441E17A148E16FB5041D7A3704D2056544114AE47E11DFB5041CDCCCCBC21565441C3F5280C23FB5041E17A148E23565441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E5F18B3C1DFB5041000BDA66CD5554412C327D8DEEFA50410FE173A7C7555441EE7295E1EDFA5041A8CB7F8EC7555441AD7D6C25D8FA5041A8F4DB1D2256544106B939A4E3FA5041392235BF21565441729BD595E8FA5041E932809621565441D764096DF5FA5041459BC52C2156544136F6C829FAFA504119ECC30521565441AC15D2F801FB50411142F9B82056544194DA4C570CFB50414AB9431720565441F12BBE9213FB50417CAB9BF11F565441E5F18B3C1DFB5041000BDA66CD555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473008 - 3629401
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000D0000000AD7A3F015FB5041F6285C7FCC5554413D0AD78372FB50418FC2F5B8D7555441EC51B85E73FB5041B81E850BB6555441713D0AD775FB5041713D0A97A6555441C3F5280C59FB5041B81E856B98555441F6285C1F25FB5041C3F5287C89555441666666D614FB50413D0AD70384555441CDCCCCBCF9FA504148E17A84B85554418FC2F578F7FA5041A4703DDABB5554419A9999E9EFFA50411F85EB51C45554417B14AE17EEFA5041EC51B8AEC6555441333333F3EDFA504148E17A94C75554410AD7A3F015FB5041F6285C7FCC555441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000002B9D7E551DFB5041A8E8629DCC555441F6285C1F25FB5041C3F5287C89555441666666D614FB50413D0AD7038455544124B1555F05FB50411C2AFBF9A15554412C30EBC3FDFA50419687D4B6B0555441CDCCCCBCF9FA504148E17A84B85554418FC2F578F7FA5041A4703DDABB55544104B4B9A2F4FA50411FCDA607BF555441188A558BEFFA50417BCA48CCC455544144957E71EEFA50414948223AC6555441DED35B17EEFA504144A542C6C6555441A5016DEEEFFA5041505F2F18C7555441BC8C55030DFB5041DC5D5B9DCA5554412B9D7E551DFB5041A8E8629DCC555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473255 - 1015996
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000000000006018F55041295C8FE217665441EC51B81E1DF5504114AE47A119665441B81E85FB21F55041D7A3703D1B665441D7A3709D22F550413D0AD7035966544148E17A242AF550413D0AD7D35C66544114AE47912DF55041CDCCCC9C5D665441295C8F722CF550410AD7A3601D665441333333E32BF55041D7A3708D1B6654413D0AD7F320F55041295C8F12EE655441B81E854B12F5504114AE4731EB65544148E17AC416F55041A4703D1A166654417B14AE1717F55041295C8F82176654410000006018F55041295C8FE217665441
+</a>
+
+<b>
+010600000001000000010300000001000000260000000710C8E42BF55041C329BAAE33665441E11FA5072CF550417B9DC43E39665441FC53572B2CF550413D15D1F03E66544163EFDC2F2CF55041C9E084A93F66544148E17A642CF55041EC51B80E48665441DB23E6792CF550410892817B4B6654417EC66B882CF55041A0F8F6CD4D665441F1D06BAC2CF550411E9AA18F53665441F6C518CD2CF550410F1F35C95866544169EB56E42CF55041FF5BA6805C665441C52924C92CF550417335C47B5E665441435C49A22DF5504153458B765E66544138483B992DF5504183C87FCA5D6654412D342D902DF55041577847A65D665441876BF8802DF550410D7566F559665441C6EF347B2DF550411E88D7AA5866544115B229732DF55041A98B80DD5666544188B43C6A2DF550413A3996DD5466544188A7E0612DF55041249424FE52665441DF4E5F5A2DF550417F38B24F51665441119F23512DF550416874263E4F66544176D58F492DF55041BC71928B4D665441CD7C0E422DF55041151620DD4B665441F7F4A4402DF550414456218C4B665441FEA68F3D2DF55041ED9A4CDB4A66544197DFCC372DF55041A515E69049665441F621C0292DF55041795E1B6B466654411BE8231E2DF55041F43E3AD143665441293583142DF550411C280DA941665441C305EF092DF55041EB7B534A3F66544113F3B3FA2CF550411834CDE03B665441295C8F722CF550410AD7A3601D66544114AE47112BF55041F6285C0F1D665441DFE547482BF55041CA91299B22665441472DB05A2BF55041B93A5576246654412868F88A2BF55041738BB25429665441EC51B8CE2BF550419A999929306654410710C8E42BF55041C329BAAE33665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473255 - 3426901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000000000006018F55041295C8FE217665441EC51B81E1DF5504114AE47A119665441B81E85FB21F55041D7A3703D1B665441D7A3709D22F550413D0AD7035966544148E17A242AF550413D0AD7D35C66544114AE47912DF55041CDCCCC9C5D665441295C8F722CF550410AD7A3601D665441333333E32BF55041D7A3708D1B6654413D0AD7F320F55041295C8F12EE655441B81E854B12F5504114AE4731EB65544148E17AC416F55041A4703D1A166654417B14AE1717F55041295C8F82176654410000006018F55041295C8FE217665441
+</a>
+
+<b>
+010600000001000000010300000001000000260000000710C8E42BF55041C329BAAE33665441E11FA5072CF550417B9DC43E39665441FC53572B2CF550413D15D1F03E66544163EFDC2F2CF55041C9E084A93F66544148E17A642CF55041EC51B80E48665441DB23E6792CF550410892817B4B6654417EC66B882CF55041A0F8F6CD4D665441F1D06BAC2CF550411E9AA18F53665441F6C518CD2CF550410F1F35C95866544169EB56E42CF55041FF5BA6805C665441C52924C92CF550417335C47B5E665441435C49A22DF5504153458B765E66544138483B992DF5504183C87FCA5D6654412D342D902DF55041577847A65D665441876BF8802DF550410D7566F559665441C6EF347B2DF550411E88D7AA5866544115B229732DF55041A98B80DD5666544188B43C6A2DF550413A3996DD5466544188A7E0612DF55041249424FE52665441DF4E5F5A2DF550417F38B24F51665441119F23512DF550416874263E4F66544176D58F492DF55041BC71928B4D665441CD7C0E422DF55041151620DD4B665441F7F4A4402DF550414456218C4B665441FEA68F3D2DF55041ED9A4CDB4A66544197DFCC372DF55041A515E69049665441F621C0292DF55041795E1B6B466654411BE8231E2DF55041F43E3AD143665441293583142DF550411C280DA941665441C305EF092DF55041EB7B534A3F66544113F3B3FA2CF550411834CDE03B665441295C8F722CF550410AD7A3601D66544114AE47112BF55041F6285C0F1D665441DFE547482BF55041CA91299B22665441472DB05A2BF55041B93A5576246654412868F88A2BF55041738BB25429665441EC51B8CE2BF550419A999929306654410710C8E42BF55041C329BAAE33665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50195 - 182560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000D4ECC3E1EAB850410F9911BC050D5541713D0A47EBB85041000000A0090D5541B81E855BECB8504148E17A540A0D5541C3F528EC19B95041AE47E11AFE0C55411F85EB011BB95041A4703D1AFD0C5541FE5D21F21AB95041A9FD140AF80C55410EA4EAF20FB95041705BDB18FB0C5541DCEA814700B95041071F0EBFFF0C5541421CD444F4B85041C131B43B030D5541D4ECC3E1EAB850410F9911BC050D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D41E855BECB8504140E17A540A0D5541F0A2A8D20DB950413353EF59010D5541A2F528EC19B95041AE47E11AFE0C554123597C0F1AB95041D5853DFAFD0C554147646E4C1AB9504148CFEDC1FD0C5541C87BF6FE1AB9504117C94BF2FC0C55414F4DDB001BB95041EA52F3C2FC0C55417F9F38F21AB95041080B8A11F80C55418DA1D611EBB85041754A5108060D55415CC31478EBB85041430310BA090D5541D41E855BECB8504140E17A540A0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50195 - 383462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000D4ECC3E1EAB850410F9911BC050D5541713D0A47EBB85041000000A0090D5541B81E855BECB8504148E17A540A0D5541C3F528EC19B95041AE47E11AFE0C55411F85EB011BB95041A4703D1AFD0C5541FE5D21F21AB95041A9FD140AF80C55410EA4EAF20FB95041705BDB18FB0C5541DCEA814700B95041071F0EBFFF0C5541421CD444F4B85041C131B43B030D5541D4ECC3E1EAB850410F9911BC050D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D41E855BECB8504140E17A540A0D5541F0A2A8D20DB950413353EF59010D5541A2F528EC19B95041AE47E11AFE0C554123597C0F1AB95041D5853DFAFD0C554147646E4C1AB9504148CFEDC1FD0C5541C87BF6FE1AB9504117C94BF2FC0C55414F4DDB001BB95041EA52F3C2FC0C55417F9F38F21AB95041080B8A11F80C55418DA1D611EBB85041754A5108060D55415CC31478EBB85041430310BA090D5541D41E855BECB8504140E17A540A0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>476649 - 247696
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A14FE55DB5041E17A141E3ACF5441EC51B8CE4CDB50411F85EBE13CCF54410AD7A39043DB5041000000503DCF5441B81E859B37DB504148E17A443DCF5441B81E857B2FDB50418FC2F5183DCF5441F6285CCF2DDB5041E17A140E40CF5441E17A14BE2BDB5041AE47E13A42CF5441333333C326DB50415C8FC23546CF5441CDCCCC5C25DB5041AE47E1EA47CF54418FC2F58823DB5041B81E850B4BCF5441295C8F3222DB504114AE47714CCF54413D0AD72321DB50415C8FC2054DCF5441EC51B8DE19DB5041295C8FF24DCF5441D7A3702D17DB504114AE47514FCF5441333333A314DB50411F85EBF152CF54417B14AE2715DB504114AE475155CF54411F85EBE11FDB504148E17A745CCF54410AD7A3601DDB504152B81EB561CF5441666666C61CDB5041333333D362CF5441E17A14AE1BDB504114AE47C163CF544148E17A241ADB5041F6285CAF64CF54418FC2F54818DB504185EB51E864CF5441EC51B8AE13DB5041295C8FE264CF5441B81E850B07DB5041713D0A4765CF5441AE47E1EAFADA5041A4703D9A65CF5441AE47E11AF9DA504185EB512866CF5441F6285CEFF4DA5041AE47E16A69CF5441A4703D7AF1DA5041333333836CCF5441CDCCCC5CEFDA504114AE47F16ECF5441E17A141EEEDA5041713D0AD770CF5441713D0A77EDDA50417B14AEF772CF5441A4703D1AEDDA5041EC51B86E76CF544100000010EDDA50411F85EBD176CF5441CDCCCC7CFBDA5041713D0A3776CF54415C8FC20504DB50417B14AEF775CF5441D7A3709D08DB50415C8FC29575CF54418FC2F5F80BDB5041F6285CDF74CF54419A99996915DB5041C3F528EC70CF54418FC2F5481BDB50410AD7A3106ECF5441295C8F1222DB5041295C8FF269CF5441AE47E1FA22DB50411F85EB916BCF5441C3F5288C27DB5041C3F528DC6ACF5441B81E853B2DDB504185EB51086ACF5441CDCCCCFC2CDB5041F6285C9F69CF54418FC2F54833DB5041AE47E19A64CF54410AD7A3D039DB50417B14AE475FCF5441E17A143E3BDB5041E17A147E56CF5441C3F528CC3BDB5041B81E859B54CF54417B14AEF749DB50410AD7A3E053CF5441E17A147E4BDB50410AD7A3F053CF5441D7A370FD4DDB50418FC2F5F848CF54413333336350DB5041E17A148E42CF5441E17A14FE55DB5041E17A141E3ACF5441
+</a>
+
+<b>
+01060000000100000001030000000100000049000000E17A147E4BDB50410AD7A3F053CF54412B07D0BC4CDB504157DAF5784ECF544165253C124CDB5041493427464DCF54415A070B1E4CDB5041817D86FB4BCF5441D59EBDAB4CDB5041F05CDB754ACF5441F745E7974DDB5041C8D9028048CF54410ADE6AC44EDB5041570859E446CF54416AF4CB9C4FDB504118C627A144CF54417C9F7EE541DB5041D3768C064ECF5441D1FE8A7240DB504165068A3F4FCF54411CD7F1D83EDB5041E73F239950CF54413A669D1E3EDB5041267F5A3651CF5441C573B7833DDB5041B9830CB951CF544108C1F0573CDB50418A2AFCB552CF5441EEFD38B43BDB504128371F4053CF5441B1C1829D38DB5041AD9E17EB56CF54414F6B43D931DB50414D182AFC54CF54414F87DD8228DB5041E1AC90AD51CF5441E5EF1EBB1FDB504147FBA7334DCF5441DC2902D21ADB504196EA9AD34DCF54411099E6DB19DB50415496FEF34DCF5441CD96726717DB504191B7C3334FCF544124C9962C17DB5041FBCE7E524FCF5441A126C9A314DB5041E0F99AF452CF544113E059AE14DB504167E50A2553CF5441FCEB87B914DB5041DE104C5853CF54413D89392915DB50418FCB4E5255CF54411F85EBE11FDB504148E17A745CCF54410AD7A3601DDB504152B81EB561CF5441666666C61CDB5041333333D362CF5441E17A14AE1BDB504114AE47C163CF544148E17A241ADB5041F6285CAF64CF54418FC2F54818DB504185EB51E864CF5441637F45B814DB50412EB2DBE364CF544162825D330DDB504112CA181665CF5441B81E850B07DB5041713D0A4765CF544107AC619B03DB5041D060A05E65CF5441F096E7D4FADA5041B110F8A065CF54419C936B0BF9DA5041B1F3673466CF5441F2179566F4DA5041393551E569CF5441BDF5AF0FF2DA504186E06BFD6BCF544128D74962EFDA5041D260F9EA6ECF54417C4E2326EEDA5041214BC2CA70CF54419C0025EBEDDA504171EE1D7D71CF544161721676EDDA50418287CB0073CF5441D22B391BEDDA5041200473D176CF5441ED5812BDF3DA5041D55C3D8A76CF54414D7F58A7F9DA504125BBBA4A76CF5441FF8FB4BB07DB5041949C8FA875CF5441FD21AD210CDB504167AF52CE74CF5441FA8BBD7421DB5041254E4C526ACF5441295C8F1222DB5041295C8FF269CF5441A9F9841A22DB50417A5ECA006ACF544117A0057C23DB5041306BD87D6BCF54411A3786AC2CDB5041700DA87669CF54417159CEE839DB50416DC0EAB25ECF54417A75DCE839DB504138E593B25ECF5441C4F23DE939DB504174C33BB05ECF54416598DDEA39DB504192183DA65ECF5441E63539EC39DB50410739E19D5ECF54415B730CFF39DB5041529FFE295ECF54411C5470143ADB5041BAD851A65DCF54417079C3193ADB50419C808A855DCF54412AB5794A3ADB5041EC67AD595CCF54413E981B273BDB5041576D7E0B57CF5441E17A143E3BDB5041E17A147E56CF5441C3F528CC3BDB5041B81E859B54CF5441CC2BA2D23BDB5041B6BE2F9B54CF54411773CC583FDB50413E9BB56C54CF54412AD9E23247DB50413AB7270554CF5441AD78FDE049DB50417215CFE153CF54417B14AEF749DB50410AD7A3E053CF5441E17A147E4BDB50410AD7A3F053CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>476649 - 364591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A14FE55DB5041E17A141E3ACF5441EC51B8CE4CDB50411F85EBE13CCF54410AD7A39043DB5041000000503DCF5441B81E859B37DB504148E17A443DCF5441B81E857B2FDB50418FC2F5183DCF5441F6285CCF2DDB5041E17A140E40CF5441E17A14BE2BDB5041AE47E13A42CF5441333333C326DB50415C8FC23546CF5441CDCCCC5C25DB5041AE47E1EA47CF54418FC2F58823DB5041B81E850B4BCF5441295C8F3222DB504114AE47714CCF54413D0AD72321DB50415C8FC2054DCF5441EC51B8DE19DB5041295C8FF24DCF5441D7A3702D17DB504114AE47514FCF5441333333A314DB50411F85EBF152CF54417B14AE2715DB504114AE475155CF54411F85EBE11FDB504148E17A745CCF54410AD7A3601DDB504152B81EB561CF5441666666C61CDB5041333333D362CF5441E17A14AE1BDB504114AE47C163CF544148E17A241ADB5041F6285CAF64CF54418FC2F54818DB504185EB51E864CF5441EC51B8AE13DB5041295C8FE264CF5441B81E850B07DB5041713D0A4765CF5441AE47E1EAFADA5041A4703D9A65CF5441AE47E11AF9DA504185EB512866CF5441F6285CEFF4DA5041AE47E16A69CF5441A4703D7AF1DA5041333333836CCF5441CDCCCC5CEFDA504114AE47F16ECF5441E17A141EEEDA5041713D0AD770CF5441713D0A77EDDA50417B14AEF772CF5441A4703D1AEDDA5041EC51B86E76CF544100000010EDDA50411F85EBD176CF5441CDCCCC7CFBDA5041713D0A3776CF54415C8FC20504DB50417B14AEF775CF5441D7A3709D08DB50415C8FC29575CF54418FC2F5F80BDB5041F6285CDF74CF54419A99996915DB5041C3F528EC70CF54418FC2F5481BDB50410AD7A3106ECF5441295C8F1222DB5041295C8FF269CF5441AE47E1FA22DB50411F85EB916BCF5441C3F5288C27DB5041C3F528DC6ACF5441B81E853B2DDB504185EB51086ACF5441CDCCCCFC2CDB5041F6285C9F69CF54418FC2F54833DB5041AE47E19A64CF54410AD7A3D039DB50417B14AE475FCF5441E17A143E3BDB5041E17A147E56CF5441C3F528CC3BDB5041B81E859B54CF54417B14AEF749DB50410AD7A3E053CF5441E17A147E4BDB50410AD7A3F053CF5441D7A370FD4DDB50418FC2F5F848CF54413333336350DB5041E17A148E42CF5441E17A14FE55DB5041E17A141E3ACF5441
+</a>
+
+<b>
+01060000000100000001030000000100000049000000E17A147E4BDB50410AD7A3F053CF54412B07D0BC4CDB504157DAF5784ECF544165253C124CDB5041493427464DCF54415A070B1E4CDB5041817D86FB4BCF5441D59EBDAB4CDB5041F05CDB754ACF5441F745E7974DDB5041C8D9028048CF54410ADE6AC44EDB5041570859E446CF54416AF4CB9C4FDB504118C627A144CF54417C9F7EE541DB5041D3768C064ECF5441D1FE8A7240DB504165068A3F4FCF54411CD7F1D83EDB5041E73F239950CF54413A669D1E3EDB5041267F5A3651CF5441C573B7833DDB5041B9830CB951CF544108C1F0573CDB50418A2AFCB552CF5441EEFD38B43BDB504128371F4053CF5441B1C1829D38DB5041AD9E17EB56CF54414F6B43D931DB50414D182AFC54CF54414F87DD8228DB5041E1AC90AD51CF5441E5EF1EBB1FDB504147FBA7334DCF5441DC2902D21ADB504196EA9AD34DCF54411099E6DB19DB50415496FEF34DCF5441CD96726717DB504191B7C3334FCF544124C9962C17DB5041FBCE7E524FCF5441A126C9A314DB5041E0F99AF452CF544113E059AE14DB504167E50A2553CF5441FCEB87B914DB5041DE104C5853CF54413D89392915DB50418FCB4E5255CF54411F85EBE11FDB504148E17A745CCF54410AD7A3601DDB504152B81EB561CF5441666666C61CDB5041333333D362CF5441E17A14AE1BDB504114AE47C163CF544148E17A241ADB5041F6285CAF64CF54418FC2F54818DB504185EB51E864CF5441637F45B814DB50412EB2DBE364CF544162825D330DDB504112CA181665CF5441B81E850B07DB5041713D0A4765CF544107AC619B03DB5041D060A05E65CF5441F096E7D4FADA5041B110F8A065CF54419C936B0BF9DA5041B1F3673466CF5441F2179566F4DA5041393551E569CF5441BDF5AF0FF2DA504186E06BFD6BCF544128D74962EFDA5041D260F9EA6ECF54417C4E2326EEDA5041214BC2CA70CF54419C0025EBEDDA504171EE1D7D71CF544161721676EDDA50418287CB0073CF5441D22B391BEDDA5041200473D176CF5441ED5812BDF3DA5041D55C3D8A76CF54414D7F58A7F9DA504125BBBA4A76CF5441FF8FB4BB07DB5041949C8FA875CF5441FD21AD210CDB504167AF52CE74CF5441FA8BBD7421DB5041254E4C526ACF5441295C8F1222DB5041295C8FF269CF5441A9F9841A22DB50417A5ECA006ACF544117A0057C23DB5041306BD87D6BCF54411A3786AC2CDB5041700DA87669CF54417159CEE839DB50416DC0EAB25ECF54417A75DCE839DB504138E593B25ECF5441C4F23DE939DB504174C33BB05ECF54416598DDEA39DB504192183DA65ECF5441E63539EC39DB50410739E19D5ECF54415B730CFF39DB5041529FFE295ECF54411C5470143ADB5041BAD851A65DCF54417079C3193ADB50419C808A855DCF54412AB5794A3ADB5041EC67AD595CCF54413E981B273BDB5041576D7E0B57CF5441E17A143E3BDB5041E17A147E56CF5441C3F528CC3BDB5041B81E859B54CF5441CC2BA2D23BDB5041B6BE2F9B54CF54411773CC583FDB50413E9BB56C54CF54412AD9E23247DB50413AB7270554CF5441AD78FDE049DB50417215CFE153CF54417B14AEF749DB50410AD7A3E053CF5441E17A147E4BDB50410AD7A3F053CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 1070063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD628544123ED12DF4AF95041A94905A5D7285441D8401E104FF95041D6146073D82854415C7B8E8350F95041FC6ADA5AD6285441AE9C63394FF950411E9AB44AD3285441073319D650F95041C503FFADD128544190BBC93854F9504171BB8900D2285441BFADC4FE55F95041EFA7B984D128544195090A2856F950410D895385CC2854413B73548B54F9504135066E64CB2854413E9AF48255F950415D838843CA2854419EA58A065AF9504164F8682ACD28544124079B715CF9504191C3C3F8CD285441C827245A5DF95041A4690E08CF285441A96DB3BD5DF95041FF7CED02CF2854414FEC7B6660F95041A270F930CC285441A3F3CAF55BF9504129434D8EC6285441CD9785CC5BF9504174EF415DC2285441FFB0208A5EF95041C3E9761BC0285441B72BCCB263F95041C837B70AC228544110C2814F65F950411A598CC0C028544110C2814F65F95041150B4CD1BE28544133F15B3F62F950413B61C6B8BC285441B2DD8BC361F9504188345B7FB928544102D8C0815FF95041A615F57FB4285441D2E5C5BB5DF95041C944CF6FB128544154F995375EF950416D8779DBAE28544104FF607960F9504140BC1E0DAE2854418A6071E462F95041C4F68E80AF2854410E9BE15764F950414A589FEBB1285441BC790CA265F950417C713AA9B4285441994A32B268F950412C7705EBB6285441F72E283E6CF9504107218B03B928544103F2481471F950418A5BFB76BA285441E17A147E74F95041E17A147EBA28544110EDA72B75F95041AEE73164BA2854419E8B86A094F95041C2DC06EE9D285441333333D391F95041F6285CEF9B285441C615B9E482F95041A40885529228544130B05F1969F9504151CD270A82285441DCD7D69662F95041969535E187285441C6CB7CE643F950417F3F677BA1285441CB70B97041F95041D1C6C7BBA32854414A5DE9F440F950410EA3834FAB2854416A6523ED3CF95041C4F68E80AF2854410B0000008C31C7C15AF950419B5392C0A02854411C609F665EF95041C867E8869B285441B642AC8662F95041BEB3B30B9B285441DB127F7364F95041C69687509D2854412884858366F950417D669318A128544194B3EB7166F95041F178CD4BA32854415498DB4961F950414F81DC1BA8285441FE72A0BE5EF950412AB1092FA6285441D9A2CDD15CF95041F95BA190A5285441200261D35AF9504137070017A32854418C31C7C15AF950419B5392C0A028544101030000000100000004000000C827245A5DF95041A4690E08CF285441D7A370ED5CF95041CDCCCC5CCF285441272E3B695DF950416946A919CF285441C827245A5DF95041A4690E08CF285441
+</a>
+
+<b>
+0106000000010000000103000000020000003D000000C3E783DC5FF950417B6C49C3CC2854414AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE2854418B6071E462F95041C9F68E80AF285441109BE15764F950414A589FEBB1285441C1790CA265F9504180713AA9B4285441954A32B268F950412E7705EBB6285441F32E283E6CF9504106218B03B928544102F2481471F950418B5BFB76BA285441DD97357E74F95041B78A0F7EBA285441DE8BF1808EF95041759A5C78A3285441E17A14DE94F95041666666D69D285441333333D391F95041F6285CEF9B285441DCDF4FB582F95041AFDEF44392285441A4703D9A69F95041CDCCCC4C82285441B9A44B1D61F950411C546E708928544188FE628154F950414464600B94285441439601524CF950417E02C5ED9A2854410BD24CEE45F95041FD310C45A028544116B284D644F95041B97D452BA12854419CFE076C41F95041AE6E4E05A4285441475DE9F440F950410DA3834FAB2854416B6523ED3CF95041C9F68E80AF2854419609DEC33CF95041A83C9577B5285441E978F3683DF950410D482BFBB9285441C1AD989A3CF950410DBD0BE2BC285441A42757EE32F950419D6C5C3CC12854414A91A15131F950414A72277EC32854414EDFE14033F9504179642244C5285441020C4D7A36F9504179642244C528544110CF6D503BF950419A93FC33C22854411B444E373EF950417616E254C3285441B6DD5F5F48F9504102EDD2A6C8285441E985373246F950413CC98E3AD0285441BDE17C5B46F95041473E6F21D3285441F3FA171949F95041FB6ADA5AD628544122ED12DF4AF95041AB4905A5D7285441D3401E104FF95041D3146073D8285441587B8E8350F95041FB6ADA5AD6285441B29C63394FF950411B9AB44AD3285441023319D650F95041C103FFADD12854418BBBC93854F9504175BB8900D2285441BAADC4FE55F95041ECA7B984D128544199090A2856F9504109895385CC2854413F73548B54F9504138066E64CB2854413C9AF48255F950415C838843CA285441A0A58A065AF9504167F8682ACD28544122079B715CF950418FC3C3F8CD285441469B0D545DF950410E1BF400CF285441C3E783DC5FF950417B6C49C3CC2854410B0000008D31C7C15AF950419F5392C0A028544118609F665EF95041C867E8869B285441B442AC8662F95041C1B3B30B9B285441DB127F7364F95041C29687509D2854412384858366F950417A669318A128544198B3EB7166F95041EF78CD4BA32854415798DB4961F950414B81DC1BA8285441FD72A0BE5EF950412FB1092FA6285441D6A2CDD15CF95041FB5BA190A5285441230261D35AF9504137070017A32854418D31C7C15AF950419F5392C0A0285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 5252531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD628544123ED12DF4AF95041A94905A5D7285441D8401E104FF95041D6146073D82854415C7B8E8350F95041FC6ADA5AD6285441AE9C63394FF950411E9AB44AD3285441073319D650F95041C503FFADD128544190BBC93854F9504171BB8900D2285441BFADC4FE55F95041EFA7B984D128544195090A2856F950410D895385CC2854413B73548B54F9504135066E64CB2854413E9AF48255F950415D838843CA2854419EA58A065AF9504164F8682ACD28544124079B715CF9504191C3C3F8CD285441C827245A5DF95041A4690E08CF285441A96DB3BD5DF95041FF7CED02CF2854414FEC7B6660F95041A270F930CC285441A3F3CAF55BF9504129434D8EC6285441CD9785CC5BF9504174EF415DC2285441FFB0208A5EF95041C3E9761BC0285441B72BCCB263F95041C837B70AC228544110C2814F65F950411A598CC0C028544110C2814F65F95041150B4CD1BE28544133F15B3F62F950413B61C6B8BC285441B2DD8BC361F9504188345B7FB928544102D8C0815FF95041A615F57FB4285441D2E5C5BB5DF95041C944CF6FB128544154F995375EF950416D8779DBAE28544104FF607960F9504140BC1E0DAE2854418A6071E462F95041C4F68E80AF2854410E9BE15764F950414A589FEBB1285441BC790CA265F950417C713AA9B4285441994A32B268F950412C7705EBB6285441F72E283E6CF9504107218B03B928544103F2481471F950418A5BFB76BA285441E17A147E74F95041E17A147EBA28544110EDA72B75F95041AEE73164BA2854419E8B86A094F95041C2DC06EE9D285441333333D391F95041F6285CEF9B285441C615B9E482F95041A40885529228544130B05F1969F9504151CD270A82285441DCD7D69662F95041969535E187285441C6CB7CE643F950417F3F677BA1285441CB70B97041F95041D1C6C7BBA32854414A5DE9F440F950410EA3834FAB2854416A6523ED3CF95041C4F68E80AF2854410B0000008C31C7C15AF950419B5392C0A02854411C609F665EF95041C867E8869B285441B642AC8662F95041BEB3B30B9B285441DB127F7364F95041C69687509D2854412884858366F950417D669318A128544194B3EB7166F95041F178CD4BA32854415498DB4961F950414F81DC1BA8285441FE72A0BE5EF950412AB1092FA6285441D9A2CDD15CF95041F95BA190A5285441200261D35AF9504137070017A32854418C31C7C15AF950419B5392C0A028544101030000000100000004000000C827245A5DF95041A4690E08CF285441D7A370ED5CF95041CDCCCC5CCF285441272E3B695DF950416946A919CF285441C827245A5DF95041A4690E08CF285441
+</a>
+
+<b>
+0106000000010000000103000000020000003D000000C3E783DC5FF950417B6C49C3CC2854414AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE2854418B6071E462F95041C9F68E80AF285441109BE15764F950414A589FEBB1285441C1790CA265F9504180713AA9B4285441954A32B268F950412E7705EBB6285441F32E283E6CF9504106218B03B928544102F2481471F950418B5BFB76BA285441DD97357E74F95041B78A0F7EBA285441DE8BF1808EF95041759A5C78A3285441E17A14DE94F95041666666D69D285441333333D391F95041F6285CEF9B285441DCDF4FB582F95041AFDEF44392285441A4703D9A69F95041CDCCCC4C82285441B9A44B1D61F950411C546E708928544188FE628154F950414464600B94285441439601524CF950417E02C5ED9A2854410BD24CEE45F95041FD310C45A028544116B284D644F95041B97D452BA12854419CFE076C41F95041AE6E4E05A4285441475DE9F440F950410DA3834FAB2854416B6523ED3CF95041C9F68E80AF2854419609DEC33CF95041A83C9577B5285441E978F3683DF950410D482BFBB9285441C1AD989A3CF950410DBD0BE2BC285441A42757EE32F950419D6C5C3CC12854414A91A15131F950414A72277EC32854414EDFE14033F9504179642244C5285441020C4D7A36F9504179642244C528544110CF6D503BF950419A93FC33C22854411B444E373EF950417616E254C3285441B6DD5F5F48F9504102EDD2A6C8285441E985373246F950413CC98E3AD0285441BDE17C5B46F95041473E6F21D3285441F3FA171949F95041FB6ADA5AD628544122ED12DF4AF95041AB4905A5D7285441D3401E104FF95041D3146073D8285441587B8E8350F95041FB6ADA5AD6285441B29C63394FF950411B9AB44AD3285441023319D650F95041C103FFADD12854418BBBC93854F9504175BB8900D2285441BAADC4FE55F95041ECA7B984D128544199090A2856F9504109895385CC2854413F73548B54F9504138066E64CB2854413C9AF48255F950415C838843CA285441A0A58A065AF9504167F8682ACD28544122079B715CF950418FC3C3F8CD285441469B0D545DF950410E1BF400CF285441C3E783DC5FF950417B6C49C3CC2854410B0000008D31C7C15AF950419F5392C0A028544118609F665EF95041C867E8869B285441B442AC8662F95041C1B3B30B9B285441DB127F7364F95041C29687509D2854412384858366F950417A669318A128544198B3EB7166F95041EF78CD4BA32854415798DB4961F950414B81DC1BA8285441FD72A0BE5EF950412FB1092FA6285441D6A2CDD15CF95041FB5BA190A5285441230261D35AF9504137070017A32854418D31C7C15AF950419F5392C0A0285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 405986
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD628544123ED12DF4AF95041A94905A5D7285441D8401E104FF95041D6146073D82854415C7B8E8350F95041FC6ADA5AD6285441AE9C63394FF950411E9AB44AD3285441073319D650F95041C503FFADD128544190BBC93854F9504171BB8900D2285441BFADC4FE55F95041EFA7B984D128544195090A2856F950410D895385CC2854413B73548B54F9504135066E64CB2854413E9AF48255F950415D838843CA2854419EA58A065AF9504164F8682ACD28544124079B715CF9504191C3C3F8CD285441C827245A5DF95041A4690E08CF285441A96DB3BD5DF95041FF7CED02CF2854414FEC7B6660F95041A270F930CC285441A3F3CAF55BF9504129434D8EC6285441CD9785CC5BF9504174EF415DC2285441FFB0208A5EF95041C3E9761BC0285441B72BCCB263F95041C837B70AC228544110C2814F65F950411A598CC0C028544110C2814F65F95041150B4CD1BE28544133F15B3F62F950413B61C6B8BC285441B2DD8BC361F9504188345B7FB928544102D8C0815FF95041A615F57FB4285441D2E5C5BB5DF95041C944CF6FB128544154F995375EF950416D8779DBAE28544104FF607960F9504140BC1E0DAE2854418A6071E462F95041C4F68E80AF2854410E9BE15764F950414A589FEBB1285441BC790CA265F950417C713AA9B4285441994A32B268F950412C7705EBB6285441F72E283E6CF9504107218B03B928544103F2481471F950418A5BFB76BA285441E17A147E74F95041E17A147EBA28544110EDA72B75F95041AEE73164BA2854419E8B86A094F95041C2DC06EE9D285441333333D391F95041F6285CEF9B285441C615B9E482F95041A40885529228544130B05F1969F9504151CD270A82285441DCD7D69662F95041969535E187285441C6CB7CE643F950417F3F677BA1285441CB70B97041F95041D1C6C7BBA32854414A5DE9F440F950410EA3834FAB2854416A6523ED3CF95041C4F68E80AF2854410B0000008C31C7C15AF950419B5392C0A02854411C609F665EF95041C867E8869B285441B642AC8662F95041BEB3B30B9B285441DB127F7364F95041C69687509D2854412884858366F950417D669318A128544194B3EB7166F95041F178CD4BA32854415498DB4961F950414F81DC1BA8285441FE72A0BE5EF950412AB1092FA6285441D9A2CDD15CF95041F95BA190A5285441200261D35AF9504137070017A32854418C31C7C15AF950419B5392C0A028544101030000000100000004000000C827245A5DF95041A4690E08CF285441D7A370ED5CF95041CDCCCC5CCF285441272E3B695DF950416946A919CF285441C827245A5DF95041A4690E08CF285441
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000004AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE2854418B6071E462F95041C9F68E80AF285441109BE15764F950414A589FEBB1285441C1790CA265F9504180713AA9B4285441954A32B268F950412E7705EBB6285441F32E283E6CF9504106218B03B928544102F2481471F950418B5BFB76BA285441DD97357E74F95041B78A0F7EBA285441DE8BF1808EF95041759A5C78A3285441E17A14DE94F95041666666D69D285441333333D391F95041F6285CEF9B285441DCDF4FB582F95041AFDEF44392285441A4703D9A69F95041CDCCCC4C82285441B9A44B1D61F950411C546E708928544188FE628154F950414464600B94285441439601524CF950417E02C5ED9A2854410BD24CEE45F95041FD310C45A028544116B284D644F95041B97D452BA12854419CFE076C41F95041AE6E4E05A4285441475DE9F440F950410DA3834FAB2854416B6523ED3CF95041C9F68E80AF2854419609DEC33CF95041A83C9577B5285441E978F3683DF950410D482BFBB9285441C1AD989A3CF950410DBD0BE2BC285441A42757EE32F950419D6C5C3CC12854414A91A15131F950414A72277EC32854414EDFE14033F9504179642244C5285441020C4D7A36F9504179642244C528544110CF6D503BF950419A93FC33C22854411B444E373EF950417616E254C3285441B6DD5F5F48F9504102EDD2A6C8285441E985373246F950413CC98E3AD0285441BDE17C5B46F95041473E6F21D3285441F3FA171949F95041FB6ADA5AD628544122ED12DF4AF95041AB4905A5D7285441D3401E104FF95041D3146073D8285441587B8E8350F95041FB6ADA5AD6285441B29C63394FF950411B9AB44AD3285441023319D650F95041C103FFADD12854418BBBC93854F9504175BB8900D2285441BAADC4FE55F95041ECA7B984D128544199090A2856F9504109895385CC2854413F73548B54F9504138066E64CB2854413C9AF48255F950415C838843CA285441A0A58A065AF9504167F8682ACD28544122079B715CF950418FC3C3F8CD285441469B0D545DF950410E1BF400CF285441C1E783DC5FF950417D6C49C3CC2854414AEC7B6660F95041A570F930CC2854410B0000008D31C7C15AF950419F5392C0A028544118609F665EF95041C867E8869B285441B442AC8662F95041C1B3B30B9B285441DB127F7364F95041C29687509D2854412384858366F950417A669318A128544198B3EB7166F95041EF78CD4BA32854415798DB4961F950414B81DC1BA8285441FD72A0BE5EF950412FB1092FA6285441D6A2CDD15CF95041FB5BA190A5285441230261D35AF9504137070017A32854418D31C7C15AF950419F5392C0A0285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 412623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD628544123ED12DF4AF95041A94905A5D7285441D8401E104FF95041D6146073D82854415C7B8E8350F95041FC6ADA5AD6285441AE9C63394FF950411E9AB44AD3285441073319D650F95041C503FFADD128544190BBC93854F9504171BB8900D2285441BFADC4FE55F95041EFA7B984D128544195090A2856F950410D895385CC2854413B73548B54F9504135066E64CB2854413E9AF48255F950415D838843CA2854419EA58A065AF9504164F8682ACD28544124079B715CF9504191C3C3F8CD285441C827245A5DF95041A4690E08CF285441A96DB3BD5DF95041FF7CED02CF2854414FEC7B6660F95041A270F930CC285441A3F3CAF55BF9504129434D8EC6285441CD9785CC5BF9504174EF415DC2285441FFB0208A5EF95041C3E9761BC0285441B72BCCB263F95041C837B70AC228544110C2814F65F950411A598CC0C028544110C2814F65F95041150B4CD1BE28544133F15B3F62F950413B61C6B8BC285441B2DD8BC361F9504188345B7FB928544102D8C0815FF95041A615F57FB4285441D2E5C5BB5DF95041C944CF6FB128544154F995375EF950416D8779DBAE28544104FF607960F9504140BC1E0DAE2854418A6071E462F95041C4F68E80AF2854410E9BE15764F950414A589FEBB1285441BC790CA265F950417C713AA9B4285441994A32B268F950412C7705EBB6285441F72E283E6CF9504107218B03B928544103F2481471F950418A5BFB76BA285441E17A147E74F95041E17A147EBA28544110EDA72B75F95041AEE73164BA2854419E8B86A094F95041C2DC06EE9D285441333333D391F95041F6285CEF9B285441C615B9E482F95041A40885529228544130B05F1969F9504151CD270A82285441DCD7D69662F95041969535E187285441C6CB7CE643F950417F3F677BA1285441CB70B97041F95041D1C6C7BBA32854414A5DE9F440F950410EA3834FAB2854416A6523ED3CF95041C4F68E80AF2854410B0000008C31C7C15AF950419B5392C0A02854411C609F665EF95041C867E8869B285441B642AC8662F95041BEB3B30B9B285441DB127F7364F95041C69687509D2854412884858366F950417D669318A128544194B3EB7166F95041F178CD4BA32854415498DB4961F950414F81DC1BA8285441FE72A0BE5EF950412AB1092FA6285441D9A2CDD15CF95041F95BA190A5285441200261D35AF9504137070017A32854418C31C7C15AF950419B5392C0A028544101030000000100000004000000C827245A5DF95041A4690E08CF285441D7A370ED5CF95041CDCCCC5CCF285441272E3B695DF950416946A919CF285441C827245A5DF95041A4690E08CF285441
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000004AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE2854418B6071E462F95041C9F68E80AF285441109BE15764F950414A589FEBB1285441C1790CA265F9504180713AA9B4285441954A32B268F950412E7705EBB6285441F32E283E6CF9504106218B03B928544102F2481471F950418B5BFB76BA285441DD97357E74F95041B78A0F7EBA285441DE8BF1808EF95041759A5C78A3285441E17A14DE94F95041666666D69D285441333333D391F95041F6285CEF9B285441DCDF4FB582F95041AFDEF44392285441A4703D9A69F95041CDCCCC4C82285441B9A44B1D61F950411C546E708928544188FE628154F950414464600B94285441439601524CF950417E02C5ED9A2854410BD24CEE45F95041FD310C45A028544116B284D644F95041B97D452BA12854419CFE076C41F95041AE6E4E05A4285441475DE9F440F950410DA3834FAB2854416B6523ED3CF95041C9F68E80AF2854419609DEC33CF95041A83C9577B5285441E978F3683DF950410D482BFBB9285441C1AD989A3CF950410DBD0BE2BC285441A42757EE32F950419D6C5C3CC12854414A91A15131F950414A72277EC32854414EDFE14033F9504179642244C5285441020C4D7A36F9504179642244C528544110CF6D503BF950419A93FC33C22854411B444E373EF950417616E254C3285441B6DD5F5F48F9504102EDD2A6C8285441E985373246F950413CC98E3AD0285441BDE17C5B46F95041473E6F21D3285441F3FA171949F95041FB6ADA5AD628544122ED12DF4AF95041AB4905A5D7285441D3401E104FF95041D3146073D8285441587B8E8350F95041FB6ADA5AD6285441B29C63394FF950411B9AB44AD3285441023319D650F95041C103FFADD12854418BBBC93854F9504175BB8900D2285441BAADC4FE55F95041ECA7B984D128544199090A2856F9504109895385CC2854413F73548B54F9504138066E64CB2854413C9AF48255F950415C838843CA285441A0A58A065AF9504167F8682ACD28544122079B715CF950418FC3C3F8CD285441469B0D545DF950410E1BF400CF285441C1E783DC5FF950417D6C49C3CC2854414AEC7B6660F95041A570F930CC2854410B0000008D31C7C15AF950419F5392C0A028544118609F665EF95041C867E8869B285441B442AC8662F95041C1B3B30B9B285441DB127F7364F95041C29687509D2854412384858366F950417A669318A128544198B3EB7166F95041EF78CD4BA32854415798DB4961F950414B81DC1BA8285441FD72A0BE5EF950412FB1092FA6285441D6A2CDD15CF95041FB5BA190A5285441230261D35AF9504137070017A32854418D31C7C15AF950419F5392C0A0285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>479245 - 3091360
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D2A724851418FC2F578B3525441A4703DAA6F485141295C8FC2B3525441295C8F426F485141C3F528BCB6525441C3F5283C6E4851410AD7A3D0BF525441C3F5287C6D485141B81E85CBCA52544148E17AF46C4851418FC2F5A8DA525441A4703D7A6C4851411F85EBD1E65254411F85EBA16B485141B81E85ABEF525441CDCCCC6C6A485141EC51B84EF8525441AE47E17A69485141713D0A47FC525441F6285CBF6D48514185EB51A8FC525441295C8F728548514114AE47F1FD5254417B14AE078B4851413D0AD723B15254410AD7A3108B485141295C8F02B0525441A4703D2A724851418FC2F578B3525441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8F728548514114AE47F1FD5254413D1AD2998F4851416D88757EFE525441DB12B3C996485141036F64E2FE5254410AD7A3609948514166666606FF525441F6285CAF994851415C8FC275FD52544199986E199A48514148E6404FF7525441A970E9859A4851419C7E17A3F0525441BEC4D2A89A4851414C19E033ED5254410880F58B9A485141602B4984EA525441E184AB459A4851410BAE35C4E7525441AA7ECAEB984851416ACF34FFE15254417EAA29C698485141E57F4DB6DF525441521DC2B898485141DCB74495DC5254419BC9F7BB98485141F1705A21DA5254412DBFE0D6984851416CA93E68D752544191681935994851414D0B668FD5525441AD1C3E4E9A4851419564BD0BD2525441BEA319219B485141E9EA5DCECE525441470FC2B89C4851417EC038DDC95254412351806F9D48514143FE5C1EC7525441297EC9B59D485141F6B4A58CC3525441CA4D210A9E4851411A237279C05254411797D89BA148514182A0A340B25254415FC3E6D19D4851419B319C43B1525441A1C2ABC199485141EE07B262B05254412A56B38796485141D20664F5AF5254411E2149C593485141F3FA1CB6AF52544183447AB290485141CE4D32AAAF5254417F1E45F38D48514132019C30B0525441C98BB60D8B485141D5D90E61B052544144B326ED8A485141A1F9D090B252544158FA8D728A485141FD5A7727B9525441AD63EBA989485141CBB9BFEFC352544182DDE82989485141E395DFD0CA525441F9FD599D884851418A0FA25ED2525441767CE439884851412D75F6B6D75254415BE3208B87485141D08B511BE152544181305DEE86485141CB6B0A88E9525441531845C2854851414030A7A8F9525441189068AC8548514129BD6AD5FA5254413D49BFA8854851412A7AC253FC525441A2A6B09A85485141CB491AA8FC525441295C8F728548514114AE47F1FD525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>479245 - 3436803
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D2A724851418FC2F578B3525441A4703DAA6F485141295C8FC2B3525441295C8F426F485141C3F528BCB6525441C3F5283C6E4851410AD7A3D0BF525441C3F5287C6D485141B81E85CBCA52544148E17AF46C4851418FC2F5A8DA525441A4703D7A6C4851411F85EBD1E65254411F85EBA16B485141B81E85ABEF525441CDCCCC6C6A485141EC51B84EF8525441AE47E17A69485141713D0A47FC525441F6285CBF6D48514185EB51A8FC525441295C8F728548514114AE47F1FD5254417B14AE078B4851413D0AD723B15254410AD7A3108B485141295C8F02B0525441A4703D2A724851418FC2F578B3525441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8F728548514114AE47F1FD5254413D1AD2998F4851416D88757EFE525441DB12B3C996485141036F64E2FE5254410AD7A3609948514166666606FF525441F6285CAF994851415C8FC275FD52544199986E199A48514148E6404FF7525441A970E9859A4851419C7E17A3F0525441BEC4D2A89A4851414C19E033ED5254410880F58B9A485141602B4984EA525441E184AB459A4851410BAE35C4E7525441AA7ECAEB984851416ACF34FFE15254417EAA29C698485141E57F4DB6DF525441521DC2B898485141DCB74495DC5254419BC9F7BB98485141F1705A21DA5254412DBFE0D6984851416CA93E68D752544191681935994851414D0B668FD5525441AD1C3E4E9A4851419564BD0BD2525441BEA319219B485141E9EA5DCECE525441470FC2B89C4851417EC038DDC95254412351806F9D48514143FE5C1EC7525441297EC9B59D485141F6B4A58CC3525441CA4D210A9E4851411A237279C05254411797D89BA148514182A0A340B25254415FC3E6D19D4851419B319C43B1525441A1C2ABC199485141EE07B262B05254412A56B38796485141D20664F5AF5254411E2149C593485141F3FA1CB6AF52544183447AB290485141CE4D32AAAF5254417F1E45F38D48514132019C30B0525441C98BB60D8B485141D5D90E61B052544144B326ED8A485141A1F9D090B252544158FA8D728A485141FD5A7727B9525441AD63EBA989485141CBB9BFEFC352544182DDE82989485141E395DFD0CA525441F9FD599D884851418A0FA25ED2525441767CE439884851412D75F6B6D75254415BE3208B87485141D08B511BE152544181305DEE86485141CB6B0A88E9525441531845C2854851414030A7A8F9525441189068AC8548514129BD6AD5FA5254413D49BFA8854851412A7AC253FC525441A2A6B09A85485141CB491AA8FC525441295C8F728548514114AE47F1FD525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>513266 - 1227654
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F00000048E17A14D68F514152B81E5593985441AE47E19AD58F51418FC2F5C889985441A4703D0AD48F51410AD7A3B08798544185EB51D8D28F5141EC51B8FE86985441000000A0D28F5141713D0A9785985441CDCCCCACCF8F5141295C8F2284985441AE47E10ACE8F5141CDCCCCCC83985441AE47E17AC88F5141CDCCCC5C8498544185EB5108C08F51416666660686985441295C8F22BC8F5141D7A3704D8898544148E17A24B78F5141B81E856B8C985441333333C3B88F514114AE47119C9854413D0AD773B98F51419A999979A49854419A999999B88F51410AD7A3F0A49854410AD7A3C0B58F5141295C8F22A79854415C8FC215AE8F514133333363AF9854413D0AD7A3A58F514114AE4751B898544100000020A68F514148E17A24BE98544185EB5118A78F51419A999949CD9854410AD7A310A88F5141F6285CCFD9985441F6285C8FAB8F51415C8FC295DA9854417B14AE87B68F5141000000C0DB985441CDCCCC1CB98F51411F85EB71DC985441E17A14FEBB8F514185EB51A8DA985441AE47E1FABC8F5141B81E850BDA985441F6285C3FC78F5141CDCCCCACD3985441B81E85DBDA8F514133333353C7985441EC51B8FED98F5141AE47E17AB198544152B81EC5D98F51410AD7A360AC985441AE47E19AD88F514166666616A298544148E17A14D68F514152B81E5593985441
+</a>
+
+<b>
+01060000000100000001030000000400000055000000921396EAA78F51417D7BF6FDE2985441C157A207958F5141FE891292E7985441E17A147E958F51410AD7A380E7985441B81E85EBA08F5141E17A14BEE498544148E17AC4A28F5141C3F5284CE49854413D0AD743AD8F5141333333C3E1985441CDCCCC5CB28F5141EC51B8EEDF985441CDCCCC1CB98F51411F85EB71DC9854417B14AE87B68F5141000000C0DB985441F6285C8FAB8F51415C8FC295DA9854410AD7A310A88F5141F6285CCFD998544185EB5118A78F51419A999949CD98544100000020A68F514148E17A24BE9854413D0AD7A3A58F514114AE4751B89854415C8FC215AE8F514133333363AF9854410AD7A3C0B58F5141295C8F22A79854419A999999B88F51410AD7A3F0A49854413D0AD773B98F51419A999979A4985441333333C3B88F514114AE47119C985441681D5F18BC8F5141F132A78C9A9854419954D656BE8F514158046F8C99985441DB25509FC18F5141BD0BCD1098985441DCFFECB4C68F51412D530500969854411AF6C7D8C88F51415832F9B69598544125491F48CA8F5141BD9EFE8595985441563C0F35CF8F5141AC1C9EBA949854411E4FDA82D18F51413C689740949854411EAE2814D68F5141B880AA4E9398544148E17A14D68F514152B81E5593985441AE47E19AD88F514166666616A298544152B81EC5D98F51410AD7A360AC985441EC51B8FED98F5141AE47E17AB198544166666656F78F514114AE4701BA985441A4703D7AFC8F51417B14AE77BA9854418FC2F5A800905141B81E85DBBB98544114AE47410490514166666696BE985441A4703D4A04905141AE47E19AB598544114AE476104905141CDCCCCACB49854411F85EBA10090514114AE47A1B39854413D0AD793FC8F5141D7A3702DB2985441000000A0F88F51410AD7A340B0985441CDCCCC7CF48F514114AE47B1AD98544100000050F18F5141713D0A37AB985441D7A3704DEE8F51410AD7A370A8985441A4703DEAEB8F5141CDCCCCBCA598544100000080EA8F514166666696A398544185EB5178E48F5141CDCCCCAC9A985441F6285C0FE18F514152B81E7595985441AE47E1BADD8F5141D7A3709D919854418FC2F548DA8F5141666666168D985441EC51B87ED68F5141333333D38898544152B81EA5D48F5141EC51B8EE869854411F85EBB1D38F5141E17A147E869854415C8FC285D38F5141295C8FB2849854418C20FEEECF8F51413CBF3C2C8498544196D7C2D7CF8F5141C1E40920849854410D60AB2CCE8F5141B9A359BA839854410C19408CC68F514139DAC0FF84985441B9218F08C08F5141B910284586985441F0A1F52FBB8F5141FA18AA728998544148E17A24B78F5141B81E856B8C985441666666B6B18F5141666666E69098544114AE47D1A98F5141000000609C98544152B81EC5A38F514100000030A69854413D0AD7739E8F5141295C8FD2AC985441F6285C6F9B8F51411F85EB91B0985441AE47E14A938F514185EB51B8BC985441EC51B8DE908F51415C8FC275C29854411F85EBB18E8F51417B14AEA7CB98544148E17A948D8F5141713D0A47D298544114AE47E18B8F514152B81EE5D5985441295C8FF2818F51417B14AE37D8985441CDCCCC3C7B8F5141EC51B82ED89854411F85EBC1768F5141713D0A87DA985441D7A370ED7A8F514114AE4701E798544148E17AA47C8F5141EC51B8DEE8985441AE47E10A818F514148E17A04E9985441A4703DBA8C8F5141AE47E1CAE898544171827B418E8F514195634C91E89854415C0A44DF8D8F51415687D03BD4985441C98BFA388F8F5141E05D839ACF9854410CBC52A2918F514155903DC6C2985441B159A2DF938F5141E0742DBABE985441E5FD7805A58F5141F5E8CE8BBB985441921396EAA78F51417D7BF6FDE2985441040000007B69F905D48F51413EBA28AE87985441A4703D0AD48F51410AD7A3B0879854418E784E16D48F514115FFCAC0879854417B69F905D48F51413EBA28AE87985441040000004529B621D38F51414816111E87985441685798D5D28F51410CEEABE886985441B5ADEAD3D28F5141FAD93CDD869854414529B621D38F51414816111E87985441040000000F864380D38F5141D9F76460879854419BF739D0D38F5141605FE68E879854411EC264A4D38F5141BA3CBD79879854410F864380D38F5141D9F7646087985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>513266 - 3491503
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F00000048E17A14D68F514152B81E5593985441AE47E19AD58F51418FC2F5C889985441A4703D0AD48F51410AD7A3B08798544185EB51D8D28F5141EC51B8FE86985441000000A0D28F5141713D0A9785985441CDCCCCACCF8F5141295C8F2284985441AE47E10ACE8F5141CDCCCCCC83985441AE47E17AC88F5141CDCCCC5C8498544185EB5108C08F51416666660686985441295C8F22BC8F5141D7A3704D8898544148E17A24B78F5141B81E856B8C985441333333C3B88F514114AE47119C9854413D0AD773B98F51419A999979A49854419A999999B88F51410AD7A3F0A49854410AD7A3C0B58F5141295C8F22A79854415C8FC215AE8F514133333363AF9854413D0AD7A3A58F514114AE4751B898544100000020A68F514148E17A24BE98544185EB5118A78F51419A999949CD9854410AD7A310A88F5141F6285CCFD9985441F6285C8FAB8F51415C8FC295DA9854417B14AE87B68F5141000000C0DB985441CDCCCC1CB98F51411F85EB71DC985441E17A14FEBB8F514185EB51A8DA985441AE47E1FABC8F5141B81E850BDA985441F6285C3FC78F5141CDCCCCACD3985441B81E85DBDA8F514133333353C7985441EC51B8FED98F5141AE47E17AB198544152B81EC5D98F51410AD7A360AC985441AE47E19AD88F514166666616A298544148E17A14D68F514152B81E5593985441
+</a>
+
+<b>
+01060000000100000001030000000400000055000000921396EAA78F51417D7BF6FDE2985441C157A207958F5141FE891292E7985441E17A147E958F51410AD7A380E7985441B81E85EBA08F5141E17A14BEE498544148E17AC4A28F5141C3F5284CE49854413D0AD743AD8F5141333333C3E1985441CDCCCC5CB28F5141EC51B8EEDF985441CDCCCC1CB98F51411F85EB71DC9854417B14AE87B68F5141000000C0DB985441F6285C8FAB8F51415C8FC295DA9854410AD7A310A88F5141F6285CCFD998544185EB5118A78F51419A999949CD98544100000020A68F514148E17A24BE9854413D0AD7A3A58F514114AE4751B89854415C8FC215AE8F514133333363AF9854410AD7A3C0B58F5141295C8F22A79854419A999999B88F51410AD7A3F0A49854413D0AD773B98F51419A999979A4985441333333C3B88F514114AE47119C985441681D5F18BC8F5141F132A78C9A9854419954D656BE8F514158046F8C99985441DB25509FC18F5141BD0BCD1098985441DCFFECB4C68F51412D530500969854411AF6C7D8C88F51415832F9B69598544125491F48CA8F5141BD9EFE8595985441563C0F35CF8F5141AC1C9EBA949854411E4FDA82D18F51413C689740949854411EAE2814D68F5141B880AA4E9398544148E17A14D68F514152B81E5593985441AE47E19AD88F514166666616A298544152B81EC5D98F51410AD7A360AC985441EC51B8FED98F5141AE47E17AB198544166666656F78F514114AE4701BA985441A4703D7AFC8F51417B14AE77BA9854418FC2F5A800905141B81E85DBBB98544114AE47410490514166666696BE985441A4703D4A04905141AE47E19AB598544114AE476104905141CDCCCCACB49854411F85EBA10090514114AE47A1B39854413D0AD793FC8F5141D7A3702DB2985441000000A0F88F51410AD7A340B0985441CDCCCC7CF48F514114AE47B1AD98544100000050F18F5141713D0A37AB985441D7A3704DEE8F51410AD7A370A8985441A4703DEAEB8F5141CDCCCCBCA598544100000080EA8F514166666696A398544185EB5178E48F5141CDCCCCAC9A985441F6285C0FE18F514152B81E7595985441AE47E1BADD8F5141D7A3709D919854418FC2F548DA8F5141666666168D985441EC51B87ED68F5141333333D38898544152B81EA5D48F5141EC51B8EE869854411F85EBB1D38F5141E17A147E869854415C8FC285D38F5141295C8FB2849854418C20FEEECF8F51413CBF3C2C8498544196D7C2D7CF8F5141C1E40920849854410D60AB2CCE8F5141B9A359BA839854410C19408CC68F514139DAC0FF84985441B9218F08C08F5141B910284586985441F0A1F52FBB8F5141FA18AA728998544148E17A24B78F5141B81E856B8C985441666666B6B18F5141666666E69098544114AE47D1A98F5141000000609C98544152B81EC5A38F514100000030A69854413D0AD7739E8F5141295C8FD2AC985441F6285C6F9B8F51411F85EB91B0985441AE47E14A938F514185EB51B8BC985441EC51B8DE908F51415C8FC275C29854411F85EBB18E8F51417B14AEA7CB98544148E17A948D8F5141713D0A47D298544114AE47E18B8F514152B81EE5D5985441295C8FF2818F51417B14AE37D8985441CDCCCC3C7B8F5141EC51B82ED89854411F85EBC1768F5141713D0A87DA985441D7A370ED7A8F514114AE4701E798544148E17AA47C8F5141EC51B8DEE8985441AE47E10A818F514148E17A04E9985441A4703DBA8C8F5141AE47E1CAE898544171827B418E8F514195634C91E89854415C0A44DF8D8F51415687D03BD4985441C98BFA388F8F5141E05D839ACF9854410CBC52A2918F514155903DC6C2985441B159A2DF938F5141E0742DBABE985441E5FD7805A58F5141F5E8CE8BBB985441921396EAA78F51417D7BF6FDE2985441040000007B69F905D48F51413EBA28AE87985441A4703D0AD48F51410AD7A3B0879854418E784E16D48F514115FFCAC0879854417B69F905D48F51413EBA28AE87985441040000004529B621D38F51414816111E87985441685798D5D28F51410CEEABE886985441B5ADEAD3D28F5141FAD93CDD869854414529B621D38F51414816111E87985441040000000F864380D38F5141D9F76460879854419BF739D0D38F5141605FE68E879854411EC264A4D38F5141BA3CBD79879854410F864380D38F5141D9F7646087985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>480002 - 4557116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000E17A142E671751415C8FC2350DA1544166666606621751410AD7A3D006A15441295C8F125F175141D7A370BD05A15441666666F642175141EC51B8DE0DA154413D0AD7834E175141D7A3702D34A15441295C8F1253175141D7A3706D34A154415C8FC27554175141A4703D5A34A1544152B81E35551751413D0AD76333A15441295C8FC255175141713D0A7732A15441E17A147E56175141666666462FA154417B14AE0757175141F6285C1F26A154418FC2F52857175141A4703DBA23A15441295C8F1258175141D7A370ED1FA1544185EB515859175141713D0AF71BA15441D7A3708D5B17514148E17AF418A154417B14AE075F175141000000E014A15441EC51B83E69175141C3F528EC0EA15441E17A142E671751415C8FC2350DA15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009A999919731751418FC2F5F84BA15441333333D37E175141000000603FA1544148E17A3482175141D7A3700D49A154413D0AD7F386175141D7A370BD43A154413D0AD7F386175141D7A370BD43A1544130CBC9088917514106902F6441A154415E6ECBED721751414D6532F732A1544181E7B1035B1751410BDFF54E22A1544188173E265717514157C94DEC23A15441E17A147E56175141666666462FA15441295C8FC255175141713D0A7732A1544152B81E35551751413D0AD76333A154415C8FC27554175141A4703D5A34A15441295C8F1253175141D7A3706D34A154413D0AD7834E175141D7A3702D34A154412D2420204B17514185BE6CF228A15441A4703DAA38175141A4703D3A30A15441C3F528AC2F1751410AD7A3F03AA15441666666862E1751419A9999F939A15441A4703DAA28175141000000803DA15441C3F5282C32175141A4703D2A45A154413D0AD75340175141666666E651A15441A4703DAA501751415C8FC2155EA154413D0AD793561751411F85EBC158A154411F85EB4157175141EC51B85E58A15441A4703D8A571751417B14AEA758A15441A4703DDA721751413D0AD7734DA154413D0AD70374175141000000C04CA154419A999919731751418FC2F5F84BA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>480678 - 388971
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000D7A3704DB9EC50417B14AE87F2975441AE47E12AA3EC5041295C8F02EF975441A4703DFAA0EC504152B81E35F7975441C3F5285C9CEC5041F6285C5FFF975441EC51B8CE9CEC504133333393FF97544148E17AC49EEC504152B81E7500985441C3F528BC9DEC50418FC2F51804985441AE47E13A9AEC50413333332303985441B81E855B95EC504114AE47010D9854410AD7A36094EC5041713D0A070F98544152B81E35AFEC50410AD7A35014985441EC51B8EEB6EC50419A99993915985441A4703DAAC4EC5041EC51B87E1598544166666666C7EC5041C3F5282C15985441EC51B81ECCEC5041295C8F82139854417B14AE77D0EC50411F85EB0112985441295C8F32D7EC5041A4703D5A119854415C8FC215D6EC504152B81EA50E985441C3F528DCD5EC504152B81E2509985441CDCCCC9CD2EC50417B14AEC7F7975441D7A3702DD1EC5041D7A3707DF49754411F85EBD1CFEC50411F85EB61F1975441A4703DAAC0EC5041CDCCCCFCF1975441C3F5284CBEEC504148E17A54F2975441D7A3704DB9EC50417B14AE87F2975441
+</a>
+
+<b>
+010600000001000000010300000001000000260000009A7D79C49EEC5041BCC71D7500985441C3F528BC9DEC50418FC2F51804985441AE47E13A9AEC50413333332303985441B81E855B95EC504114AE47010D9854412676C66094EC50411E1011070F9854413093D165AEEC50413E48C927149854417659A7F5B0EC5041651B7A8514985441426FD83FB4EC504177C6AFE814985441C97DC647B9EC5041A9E66A451598544108657146C1EC5041866CA86D15985441C5AC99DBC4EC504157C8835C1598544162A9E827C7EC50414115AF21159854415C146449C8EC50417F4D35DC14985441EC51B81ECCEC5041295C8F82139854417B14AE77D0EC50411F85EB0112985441295C8F32D7EC5041A4703D5A119854418D4DE35FD8EC5041F464C44B11985441A19526ADDBEC5041FF452B231198544189A3DFB7EBEC504105AEC62B10985441343159B0E9EC5041A5E4AC0D089854412A6E0908E9EC5041F232D39704985441B85F3667E6EC5041EE359044F99754410F9D393CD4EC50417D8B3723FA975441722BA9D0D4EC5041F905C755F7975441DB21B46DD4EC5041CAF2DC8FF697544181A4702DD1EC504143A4707DF49754414ECDCC9CD0EC504156295CDFF4975441D55C8FD2CEEC5041A63D0A17F6975441E384EC11C0EC504134CF7A24F797544128347FAAC0EC5041B72CCAFCF197544160322A4CBEEC50417AB37A54F2975441D7A3704DB9EC50417B14AE87F29754413D0AD7B3A3EC504166666666F3975441A4703DFAA0EC504152B81E35F7975441C3F5285C9CEC5041F6285C5FFF975441EC51B8CE9CEC504133333393FF9754414E6B07739EEC50414D3E7250009854419A7D79C49EEC5041BCC71D7500985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910540 - 3156778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3C092CC50410AD7A300B3445441D7A3706DA7CC5041CDCCCC1CB8445441666666A6B0CC504148E17A64BA445441713D0A77B2CC5041AE47E13AAF445441B81E85DBB1CC5041EC51B84EAE4454413D0AD76396CC504148E17A84A744544148E17A147ACC504166666686A0445441AE47E10A79CC5041713D0A07A14454410000005074CC5041A4703D7AAB4454410AD7A3C092CC50410AD7A300B3445441
+</a>
+
+<b>
+010600000001000000010300000001000000140000009242975574CC5041965AE36DAB445441C9DDC84275CC50412E1A42B6AB4454418F769BB982CC50414DCB560AAF44544145EC791B92CC5041876DCFD7B2445441616A46F89ECC5041454AA905B6445441E080E3E0ADCC504181D512B5B94454416C4BE8A4B0CC50411991AC6DBA445441D05B7173B2CC5041C8D30051AF44544157F38BEEB1CC504133C49C6BAE44544114F166A7AACC5041050EDA86AC4454413DFF828E9DCC5041A35B034AA944544192C997F790CC50418E1E962DA6445441760903A58ACC5041CC06CD9DA444544171D7F94984CC50413952ED0BA3445441468B9E457CCC50417D010011A14454415019DD487ACC5041DFB05693A04454416466149D79CC5041B7A7F9F8A044544104291B2079CC50419690EA42A14454417841019F77CC50414F39F32AA44454419242975574CC5041965AE36DAB445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910540 - 3555039
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3C092CC50410AD7A300B3445441D7A3706DA7CC5041CDCCCC1CB8445441666666A6B0CC504148E17A64BA445441713D0A77B2CC5041AE47E13AAF445441B81E85DBB1CC5041EC51B84EAE4454413D0AD76396CC504148E17A84A744544148E17A147ACC504166666686A0445441AE47E10A79CC5041713D0A07A14454410000005074CC5041A4703D7AAB4454410AD7A3C092CC50410AD7A300B3445441
+</a>
+
+<b>
+010600000001000000010300000001000000140000009242975574CC5041965AE36DAB445441C9DDC84275CC50412E1A42B6AB4454418F769BB982CC50414DCB560AAF44544145EC791B92CC5041876DCFD7B2445441616A46F89ECC5041454AA905B6445441E080E3E0ADCC504181D512B5B94454416C4BE8A4B0CC50411991AC6DBA445441D05B7173B2CC5041C8D30051AF44544157F38BEEB1CC504133C49C6BAE44544114F166A7AACC5041050EDA86AC4454413DFF828E9DCC5041A35B034AA944544192C997F790CC50418E1E962DA6445441760903A58ACC5041CC06CD9DA444544171D7F94984CC50413952ED0BA3445441468B9E457CCC50417D010011A14454415019DD487ACC5041DFB05693A04454416466149D79CC5041B7A7F9F8A044544104291B2079CC50419690EA42A14454417841019F77CC50414F39F32AA44454419242975574CC5041965AE36DAB445441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>584730 - 58132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000021000000C3F5288C85E350415C8FC2E563E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E25441713D0A976EE350411F85EBD157E25441333333F35AE3504185EB51C863E254410AD7A3C05BE35041C3F5288C65E254419A9999A960E350415C8FC2456DE25441EC51B84E68E35041666666467BE25441E17A145E72E35041AE47E16A8CE25441295C8F5278E350417B14AEB796E25441295C8F7279E35041F6285C3F98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E25441AE47E1EA7EE35041B81E854B97E25441EC51B8AE8AE3504114AE476192E2544114AE47F18CE350416666665691E25441E17A141E8FE350413333332390E2544114AE474191E350411F85EBC18EE25441EC51B8DE92E35041AE47E18A8DE254418FC2F57894E350411F85EB318CE25441AE47E15A96E350418FC2F5688AE254418FC2F5F897E35041D7A3709D88E254413D0AD78399E35041EC51B8AE86E25441C3F5280CA2E35041A4703DFA7AE254415C8FC2B5A3E35041C3F5281C79E25441000000A0A5E350416666668677E254410AD7A350A3E350411F85EBE16DE25441A4703D7AA1E35041666666366DE254411F85EB11A0E35041A4703D9A6CE25441713D0A979AE35041D7A370DD69E25441666666C68EE350411F85EBF162E2544185EB51588BE35041713D0A7763E25441C3F5288C85E350415C8FC2E563E25441
+</a>
+
+<b>
+0106000000010000000103000000010000007D000000295C8F7279E35041F6285C3F98E254415BCB85E779E350417F3A3FEE98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E254414AA902557EE3504142A9D28A97E25441AE47E1EA7EE35041B81E854B97E25441CBF247F182E3504118120E9D95E25441E141FCB983E35041E032354995E2544119AB785689E350410C4A18F192E254418902AAC18AE350417E998A5892E25441D11B66918EE35041AE32D17090E254418A007D768FE3504179531FEA8FE254418359FFA490E35041A875D1268FE25441D4E4DB1F91E3504170417FD78EE254418120131892E35041444153208EE2544112BCB13494E3504122A6526B8CE254411D021AC394E35041FF4F9EEB8BE25441FEFB140E95E350419E7F85A48BE254416E48AE7495E35041D58D3C438BE254412154C0B896E35041369CC9008AE254419D3171B897E3504150B009E588E2544190E2709898E3504181EFA2D587E254412C26B8A998E35041494FFDBF87E25441E275070A99E35041943D544787E2544181ABC02499E350413053D92587E25441AD1BCEB099E350419347097186E2544165E538369AE350416F4603BA85E2544107D654EF9AE3504120DA13BC84E25441DEDAB5399BE35041521F0B5684E25441DB9B85419BE350412BD5534B84E2544194943E829BE35041914A8AF283E25441CFC4C6279CE35041B30E760F83E25441E943FDB19DE350419FAFACF280E254414BC6F7E39DE35041E3001DAE80E25441EE685F099FE350412DD69D1B7FE254415F9D8B219FE35041D1C574FA7EE25441280329BA9FE35041F3D618297EE25441C2A182E29FE35041CB86BEF17DE25441D8F6DCCEA0E35041191D83AD7CE254410AFDF609A1E35041358A6F5C7CE254415EBF7660A1E35041C66DC6E57BE25441F06B18E6A1E350417B21752E7BE25441C3F5280CA2E35041A4703DFA7AE2544143B298EDA2E35041885E01FD79E25441A6BC5930A3E35041D01B05B279E254412DDF195DA3E350416C56C07F79E254415C8FC2B5A3E35041C3F5281C79E254417414D79CA4E350419783E65C78E254412573DBBDA4E3504134B0924178E25441000000A0A5E350416666668677E254410AD7A350A3E350411F85EBE16DE25441A4703D7AA1E35041666666366DE254411F85EB11A0E35041A4703D9A6CE25441D79514529DE35041432CA43A6BE2544184F174F59CE35041582B5F0C6BE25441E9FA94699CE35041FE857FC66AE25441713D0A979AE35041D7A370DD69E25441A8B1C1129AE35041494EF68F69E25441B494FAC098E35041048220CA68E25441FA98194F98E35041C2B76D8768E254416E726F8497E35041C28ABA1068E2544156F9A44497E35041CCD85DEB67E2544168F0E47196E350410A59EE6F67E25441909E0E0E95E350416DC1849F66E254414DE133F093E35041F13F18F865E2544142B2387A92E35041B52D0E1D65E25441D945307391E35041A07EFF8264E254419C66936A90E3504140ED03E863E25441666666C68EE350411F85EBF162E25441725690888DE3504154E61A2263E2544170EBC4978BE3504193BE6B6D63E2544185EB51588BE35041713D0A7763E254413F130F188AE35041F18CEE8E63E25441663A51E989E3504156376B9263E25441B268335E89E35041080CCC9C63E25441C3F5288C85E350415C8FC2E563E254415BA79B6183E350417649927E63E25441A9B0D6F382E350417462256A63E25441B3DBBB1082E35041522BE33F63E254417E9C588881E35041994B822663E25441F053483781E350417BCD6C1763E25441002B310281E35041EFD18B0D63E25441A341B09F80E35041BB9137FB62E2544128D7222E80E350412A7616E662E2544155F2DDF57EE350415B6AFBAB62E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E2544103D2295775E350417B62995F5DE254416C5D9C0E75E35041A084E9235DE25441F99DD87374E350414C7397A45CE25441B496115073E3504115EC8DB45BE254416AFE16F472E35041AACAE2685BE25441C3A9702F72E350416F8D1BC75AE25441298C073071E350410408FDF459E25441713D0A976EE350411F85EBD157E2544123B3152569E350410F55F6225BE254415613227768E350416409EA8C5BE254413EA3CF3467E35041C2A33C515CE25441BEFC694460E350418056388B60E254412F59AEB55FE35041173728E260E25441E27F94A65EE35041FB16488761E2544126FD923D5EE35041B44F3DC761E2544121B2AC9E5DE35041E5FE052862E25441451421205DE35041DACB197562E254416AE6A31A5DE35041C4AC717862E25441737AC1ED5CE35041155CC89362E25441333333F35AE3504185EB51C863E25441A7E020745DE350417092523968E25441BA7D9E965FE35041638B20956BE254419A9999A960E350415C8FC2456DE254416DB6748B64E35041CB87186274E25441381149E565E350410F7183DB76E254414E7E381B69E3504140DBDFA27CE254412D96336C6AE35041823619E17EE25441274D1AE06AE35041B0E098A67FE254415B7D4D156DE35041EF66B66983E254411E64935F6EE35041899E819C85E254417EE4D0E171E35041488321978BE25441E17A145E72E35041AE47E16A8CE25441738EC1F974E3504186F3B7ED90E25441DC88053275E3504110A2094F91E25441DF181CD175E35041DFE1336292E25441C9A1443978E350415E23EF8B96E25441A12A19D978E35041D6EFA66E97E25441295C8F7279E35041F6285C3F98E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>584730 - 123375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000C3F5288C85E350415C8FC2E563E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E25441713D0A976EE350411F85EBD157E25441333333F35AE3504185EB51C863E254410AD7A3C05BE35041C3F5288C65E254419A9999A960E350415C8FC2456DE25441EC51B84E68E35041666666467BE25441E17A145E72E35041AE47E16A8CE25441295C8F5278E350417B14AEB796E25441295C8F7279E35041F6285C3F98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E25441AE47E1EA7EE35041B81E854B97E25441EC51B8AE8AE3504114AE476192E2544114AE47F18CE350416666665691E25441E17A141E8FE350413333332390E2544114AE474191E350411F85EBC18EE25441EC51B8DE92E35041AE47E18A8DE254418FC2F57894E350411F85EB318CE25441AE47E15A96E350418FC2F5688AE254418FC2F5F897E35041D7A3709D88E254413D0AD78399E35041EC51B8AE86E25441C3F5280CA2E35041A4703DFA7AE254415C8FC2B5A3E35041C3F5281C79E25441000000A0A5E350416666668677E254410AD7A350A3E350411F85EBE16DE25441A4703D7AA1E35041666666366DE254411F85EB11A0E35041A4703D9A6CE25441713D0A979AE35041D7A370DD69E25441666666C68EE350411F85EBF162E2544185EB51588BE35041713D0A7763E25441C3F5288C85E350415C8FC2E563E25441
+</a>
+
+<b>
+0106000000010000000103000000010000007D000000295C8F7279E35041F6285C3F98E254415CCB85E779E350417D3A3FEE98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E2544148A902557EE3504145A9D28A97E25441AE47E1EA7EE35041B81E854B97E25441C8F247F182E350411C120E9D95E25441E541FCB983E35041DD32354995E2544117AB785689E350410E4A18F192E254418802AAC18AE3504181998A5892E25441D31B66918EE35041AD32D17090E2544187007D768FE3504178531FEA8FE254418759FFA490E35041A975D1268FE25441D8E4DB1F91E3504174417FD78EE254418420131892E35041464153208EE2544110BCB13494E3504120A6526B8CE254411F021AC394E3504102509EEB8BE25441FBFB140E95E350419C7F85A48BE254417348AE7495E35041D08D3C438BE254412354C0B896E35041369CC9008AE254419C3171B897E350414DB009E588E254418BE2709898E3504184EFA2D587E254412C26B8A998E350414C4FFDBF87E25441E075070A99E350418F3D544787E2544181ABC02499E350412D53D92587E25441AC1BCEB099E350419247097186E2544164E538369AE35041714603BA85E2544106D654EF9AE350411DDA13BC84E25441E3DAB5399BE350414E1F0B5684E25441D69B85419BE350412AD5534B84E2544190943E829BE35041914A8AF283E25441CBC4C6279CE35041B00E760F83E25441EE43FDB19DE35041A1AFACF280E254414BC6F7E39DE35041E2001DAE80E25441F1685F099FE350412AD69D1B7FE25441629D8B219FE35041D0C574FA7EE25441240329BA9FE35041F1D618297EE25441C6A182E29FE35041CE86BEF17DE25441DCF6DCCEA0E35041161D83AD7CE254410DFDF609A1E35041318A6F5C7CE254415ABF7660A1E35041C36DC6E57BE25441F26B18E6A1E350418021752E7BE25441C3F5280CA2E35041A4703DFA7AE254413EB298EDA2E35041855E01FD79E25441AABC5930A3E35041D31B05B279E254412FDF195DA3E350416756C07F79E254415C8FC2B5A3E35041C3F5281C79E254416F14D79CA4E350419883E65C78E254412373DBBDA4E3504131B0924178E25441000000A0A5E350416666668677E254410AD7A350A3E350411F85EBE16DE25441A4703D7AA1E35041666666366DE254411F85EB11A0E35041A4703D9A6CE25441D99514529DE35041452CA43A6BE2544184F174F59CE35041542B5F0C6BE25441E4FA94699CE35041FD857FC66AE25441713D0A979AE35041D7A370DD69E25441A6B1C1129AE35041464EF68F69E25441B194FAC098E35041018220CA68E25441F998194F98E35041BEB76D8768E2544169726F8497E35041C08ABA1068E2544154F9A44497E35041CED85DEB67E2544165F0E47196E350410F59EE6F67E25441949E0E0E95E3504170C1849F66E254414EE133F093E35041F33F18F865E2544143B2387A92E35041B52D0E1D65E25441D845307391E350419B7EFF8264E254419A66936A90E3504140ED03E863E25441666666C68EE350411F85EBF162E254416F5690888DE3504156E61A2263E254416CEBC4978BE3504195BE6B6D63E2544185EB51588BE35041713D0A7763E2544143130F188AE35041F18CEE8E63E25441653A51E989E3504151376B9263E25441AD68335E89E35041080CCC9C63E25441C3F5288C85E350415C8FC2E563E254415BA79B6183E350417949927E63E25441A6B0D6F382E350417062256A63E25441AEDBBB1082E35041532BE33F63E25441799C588881E35041944B822663E25441EC53483781E350417ECD6C1763E25441FB2A310281E35041F0D18B0D63E25441A741B09F80E35041BD9137FB62E2544125D7222E80E350412E7616E662E2544159F2DDF57EE350415A6AFBAB62E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E2544101D2295775E350417D62995F5DE254416E5D9C0E75E350419E84E9235DE25441FC9DD87374E350414F7397A45CE25441B696115073E3504111EC8DB45BE2544169FE16F472E35041A6CAE2685BE25441C1A9702F72E350416F8D1BC75AE25441268C073071E350410908FDF459E25441713D0A976EE350411F85EBD157E2544125B3152569E350411155F6225BE254415B13227768E350416909EA8C5BE2544141A3CF3467E35041C0A33C515CE25441BEFC694460E350417E56388B60E254412F59AEB55FE35041163728E260E25441DF7F94A65EE35041FB16488761E2544128FD923D5EE35041B74F3DC761E2544125B2AC9E5DE35041E8FE052862E25441421421205DE35041D9CB197562E254416FE6A31A5DE35041C1AC717862E25441747AC1ED5CE350411A5CC89362E25441333333F35AE3504185EB51C863E25441ABE020745DE350417492523968E25441BA7D9E965FE35041668B20956BE254419A9999A960E350415C8FC2456DE254416BB6748B64E35041CC87186274E25441361149E565E350410E7183DB76E254414C7E381B69E350413DDBDFA27CE254413096336C6AE350417D3619E17EE25441284D1AE06AE35041ACE098A67FE25441577D4D156DE35041EF66B66983E254412064935F6EE35041869E819C85E254417FE4D0E171E35041488321978BE25441E17A145E72E35041AE47E16A8CE25441758EC1F974E3504182F3B7ED90E25441E188053275E3504115A2094F91E25441DB181CD175E35041DAE1336292E25441C6A1443978E350415923EF8B96E254419E2A19D978E35041D9EFA66E97E25441295C8F7279E35041F6285C3F98E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>584730 - 323272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000C3F5288C85E350415C8FC2E563E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E25441713D0A976EE350411F85EBD157E25441333333F35AE3504185EB51C863E254410AD7A3C05BE35041C3F5288C65E254419A9999A960E350415C8FC2456DE25441EC51B84E68E35041666666467BE25441E17A145E72E35041AE47E16A8CE25441295C8F5278E350417B14AEB796E25441295C8F7279E35041F6285C3F98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E25441AE47E1EA7EE35041B81E854B97E25441EC51B8AE8AE3504114AE476192E2544114AE47F18CE350416666665691E25441E17A141E8FE350413333332390E2544114AE474191E350411F85EBC18EE25441EC51B8DE92E35041AE47E18A8DE254418FC2F57894E350411F85EB318CE25441AE47E15A96E350418FC2F5688AE254418FC2F5F897E35041D7A3709D88E254413D0AD78399E35041EC51B8AE86E25441C3F5280CA2E35041A4703DFA7AE254415C8FC2B5A3E35041C3F5281C79E25441000000A0A5E350416666668677E254410AD7A350A3E350411F85EBE16DE25441A4703D7AA1E35041666666366DE254411F85EB11A0E35041A4703D9A6CE25441713D0A979AE35041D7A370DD69E25441666666C68EE350411F85EBF162E2544185EB51588BE35041713D0A7763E25441C3F5288C85E350415C8FC2E563E25441
+</a>
+
+<b>
+0106000000010000000103000000010000007D000000295C8F7279E35041F6285C3F98E254415CCB85E779E350417D3A3FEE98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E2544148A902557EE3504145A9D28A97E25441AE47E1EA7EE35041B81E854B97E25441C8F247F182E350411C120E9D95E25441E541FCB983E35041DD32354995E2544117AB785689E350410E4A18F192E254418802AAC18AE3504181998A5892E25441D31B66918EE35041AD32D17090E2544187007D768FE3504178531FEA8FE254418759FFA490E35041A975D1268FE25441D8E4DB1F91E3504174417FD78EE254418420131892E35041464153208EE2544110BCB13494E3504120A6526B8CE254411F021AC394E3504102509EEB8BE25441FBFB140E95E350419C7F85A48BE254417348AE7495E35041D08D3C438BE254412354C0B896E35041369CC9008AE254419C3171B897E350414DB009E588E254418BE2709898E3504184EFA2D587E254412C26B8A998E350414C4FFDBF87E25441E075070A99E350418F3D544787E2544181ABC02499E350412D53D92587E25441AC1BCEB099E350419247097186E2544164E538369AE35041714603BA85E2544106D654EF9AE350411DDA13BC84E25441E3DAB5399BE350414E1F0B5684E25441D69B85419BE350412AD5534B84E2544190943E829BE35041914A8AF283E25441CBC4C6279CE35041B00E760F83E25441EE43FDB19DE35041A1AFACF280E254414BC6F7E39DE35041E2001DAE80E25441F1685F099FE350412AD69D1B7FE25441629D8B219FE35041D0C574FA7EE25441240329BA9FE35041F1D618297EE25441C6A182E29FE35041CE86BEF17DE25441DCF6DCCEA0E35041161D83AD7CE254410DFDF609A1E35041318A6F5C7CE254415ABF7660A1E35041C36DC6E57BE25441F26B18E6A1E350418021752E7BE25441C3F5280CA2E35041A4703DFA7AE254413EB298EDA2E35041855E01FD79E25441AABC5930A3E35041D31B05B279E254412FDF195DA3E350416756C07F79E254415C8FC2B5A3E35041C3F5281C79E254416F14D79CA4E350419883E65C78E254412373DBBDA4E3504131B0924178E25441000000A0A5E350416666668677E254410AD7A350A3E350411F85EBE16DE25441A4703D7AA1E35041666666366DE254411F85EB11A0E35041A4703D9A6CE25441D99514529DE35041452CA43A6BE2544184F174F59CE35041542B5F0C6BE25441E4FA94699CE35041FD857FC66AE25441713D0A979AE35041D7A370DD69E25441A6B1C1129AE35041464EF68F69E25441B194FAC098E35041018220CA68E25441F998194F98E35041BEB76D8768E2544169726F8497E35041C08ABA1068E2544154F9A44497E35041CED85DEB67E2544165F0E47196E350410F59EE6F67E25441949E0E0E95E3504170C1849F66E254414EE133F093E35041F33F18F865E2544143B2387A92E35041B52D0E1D65E25441D845307391E350419B7EFF8264E254419A66936A90E3504140ED03E863E25441666666C68EE350411F85EBF162E254416F5690888DE3504156E61A2263E254416CEBC4978BE3504195BE6B6D63E2544185EB51588BE35041713D0A7763E2544143130F188AE35041F18CEE8E63E25441653A51E989E3504151376B9263E25441AD68335E89E35041080CCC9C63E25441C3F5288C85E350415C8FC2E563E254415BA79B6183E350417949927E63E25441A6B0D6F382E350417062256A63E25441AEDBBB1082E35041532BE33F63E25441799C588881E35041944B822663E25441EC53483781E350417ECD6C1763E25441FB2A310281E35041F0D18B0D63E25441A741B09F80E35041BD9137FB62E2544125D7222E80E350412E7616E662E2544159F2DDF57EE350415A6AFBAB62E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E2544101D2295775E350417D62995F5DE254416E5D9C0E75E350419E84E9235DE25441FC9DD87374E350414F7397A45CE25441B696115073E3504111EC8DB45BE2544169FE16F472E35041A6CAE2685BE25441C1A9702F72E350416F8D1BC75AE25441268C073071E350410908FDF459E25441713D0A976EE350411F85EBD157E2544125B3152569E350411155F6225BE254415B13227768E350416909EA8C5BE2544141A3CF3467E35041C0A33C515CE25441BEFC694460E350417E56388B60E254412F59AEB55FE35041163728E260E25441DF7F94A65EE35041FB16488761E2544128FD923D5EE35041B74F3DC761E2544125B2AC9E5DE35041E8FE052862E25441421421205DE35041D9CB197562E254416FE6A31A5DE35041C1AC717862E25441747AC1ED5CE350411A5CC89362E25441333333F35AE3504185EB51C863E25441ABE020745DE350417492523968E25441BA7D9E965FE35041668B20956BE254419A9999A960E350415C8FC2456DE254416BB6748B64E35041CC87186274E25441361149E565E350410E7183DB76E254414C7E381B69E350413DDBDFA27CE254413096336C6AE350417D3619E17EE25441284D1AE06AE35041ACE098A67FE25441577D4D156DE35041EF66B66983E254412064935F6EE35041869E819C85E254417FE4D0E171E35041488321978BE25441E17A145E72E35041AE47E16A8CE25441758EC1F974E3504182F3B7ED90E25441E188053275E3504115A2094F91E25441DB181CD175E35041DAE1336292E25441C6A1443978E350415923EF8B96E254419E2A19D978E35041D9EFA66E97E25441295C8F7279E35041F6285C3F98E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481096 - 2937132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000E17A14FE2D125141CDCCCCFC137B54410000001030125141E17A14AE337B5441713D0A473712514166666636337B5441000000603E12514114AE47C1327B5441333333533B125141295C8F62157B5441295C8F3234125141713D0AB7147B5441E17A14FE2D125141CDCCCCFC137B5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000C239075930125141EB34B284387B5441CE9ABB3C301251413086545C367B54418B60DDAC2F1251419BF447C02D7B5441E298725E2E12514120D439C0197B5441E17A14FE2D125141CDCCCCFC137B5441295C8F7226125141EC51B80E137B54411B36748F2812514189524871337B5441713D0A0729125141A4703D9A3A7B5441C239075930125141EB34B284387B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481096 - 3735146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000E17A14FE2D125141CDCCCCFC137B54410000001030125141E17A14AE337B5441713D0A473712514166666636337B5441000000603E12514114AE47C1327B5441333333533B125141295C8F62157B5441295C8F3234125141713D0AB7147B5441E17A14FE2D125141CDCCCCFC137B5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000C239075930125141EB34B284387B5441CE9ABB3C301251413086545C367B54418B60DDAC2F1251419BF447C02D7B5441E298725E2E12514120D439C0197B5441E17A14FE2D125141CDCCCCFC137B5441295C8F7226125141EC51B80E137B54411B36748F2812514189524871337B5441713D0A0729125141A4703D9A3A7B5441C239075930125141EB34B284387B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481211 - 2925323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002B000000CDCCCC3C701D51419A99998934765441A4703DBA651D5141B81E85BB34765441AE47E1AA661D5141713D0A1729765441D7A3707D6A1D5141713D0AB7F9755441F6285C8F671D5141AE47E19AEC7554415C8FC215651D5141A4703D8AEB755441295C8FE25F1D514100000010EB755441000000B05A1D514185EB5118EB755441F6285C7F571D5141713D0A67EB755441295C8F42551D5141E17A149EEB7554410AD7A3E04C1D5141C3F5286CED755441CDCCCC7C431D5141AE47E1FAEF75544114AE47E12B1D5141D7A370CDFA7554411F85EB612B1D514148E17AC4FA755441333333F3291D514148E17A8405765441D7A3707D271D514148E17AC4257654415C8FC265271D514185EB51F82676544185EB5138271D514148E17A4429765441713D0A47241D5141E17A146E4F7654411F85EB31251D5141AE47E1DA517654417B14AEE7281D5141295C8F425476544133333373301D514152B81E25597654417B14AEC7301D5141C3F5285C59765441CDCCCCAC371D51415C8FC2155D765441713D0AB73B1D5141D7A370DD5E7654415C8FC2753F1D5141C3F5280C2E765441E17A14EE491D5141C3F528AC30765441B81E85EB471D5141333333E34A76544148E17A54631D51415C8FC26559765441AE47E12A641D51410000006059765441AE47E15A631D5141A4703D1A65765441CDCCCC9C621D5141E17A14CE6F765441666666B6631D51410AD7A370717654411F85EBD1971D5141CDCCCC8C827654417B14AEF7981D514148E17AB4817654411F85EB51981D5141B81E859B6E76544148E17AF4971D5141CDCCCCEC63765441C3F5288C971D5141666666365876544148E17A84971D5141A4703D1A57765441F6285C2F9A1D5141333333E335765441EC51B85E9A1D5141EC51B89E33765441AE47E11A991D5141295C8FB233765441CDCCCC3C701D51419A99998934765441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EC6B48B04A1D5141686EE8D82F7654418EB2B8434A1D5141D0E7C2BD2F765441ADA6E545491D51416376A63D3976544103D25E0C481D51411276C13649765441B81E85EB471D5141333333E34A76544148E17A54631D51415C8FC26559765441AE47E12A641D51410000006059765441FD592818681D5141554B414959765441E0C4F6E3691D51417708DA3E59765441510AE6A5711D51413A3AEB11597654412ECF98D9781D5141304634E85876544105A6FDF77C1D5141891459D05876544115EFF7FB851D514110F5209C58765441A7E943378E1D51419C34736C58765441EB0D8F97921D5141DB4F1A535876544102AB1E88971D51418098E9A0577654416C123DEC971D51417C18440E52765441A1934257991D5141AED40466407654418C0E6BEB991D5141C47D313139765441E02D245A9A1D5141085A31D93376544135C7783D981D514153621CB733765441B10697BE8F1D5141925BD0E3337654416E001C2F851D514182C1611B34765441EB493903661D5141E2762ABA34765441013552BA651D514126E883BA34765441A4703DBA651D5141B81E85BB3476544113D3505B5F1D5141E5A9BBD9347654419C6EFBF85E1D5141B296CDC2347654410BB9CDED561D514132A7A6E932765441806A50A84F1D51418E186F1731765441EC6B48B04A1D5141686EE8D82F765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481211 - 3352428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002B000000CDCCCC3C701D51419A99998934765441A4703DBA651D5141B81E85BB34765441AE47E1AA661D5141713D0A1729765441D7A3707D6A1D5141713D0AB7F9755441F6285C8F671D5141AE47E19AEC7554415C8FC215651D5141A4703D8AEB755441295C8FE25F1D514100000010EB755441000000B05A1D514185EB5118EB755441F6285C7F571D5141713D0A67EB755441295C8F42551D5141E17A149EEB7554410AD7A3E04C1D5141C3F5286CED755441CDCCCC7C431D5141AE47E1FAEF75544114AE47E12B1D5141D7A370CDFA7554411F85EB612B1D514148E17AC4FA755441333333F3291D514148E17A8405765441D7A3707D271D514148E17AC4257654415C8FC265271D514185EB51F82676544185EB5138271D514148E17A4429765441713D0A47241D5141E17A146E4F7654411F85EB31251D5141AE47E1DA517654417B14AEE7281D5141295C8F425476544133333373301D514152B81E25597654417B14AEC7301D5141C3F5285C59765441CDCCCCAC371D51415C8FC2155D765441713D0AB73B1D5141D7A370DD5E7654415C8FC2753F1D5141C3F5280C2E765441E17A14EE491D5141C3F528AC30765441B81E85EB471D5141333333E34A76544148E17A54631D51415C8FC26559765441AE47E12A641D51410000006059765441AE47E15A631D5141A4703D1A65765441CDCCCC9C621D5141E17A14CE6F765441666666B6631D51410AD7A370717654411F85EBD1971D5141CDCCCC8C827654417B14AEF7981D514148E17AB4817654411F85EB51981D5141B81E859B6E76544148E17AF4971D5141CDCCCCEC63765441C3F5288C971D5141666666365876544148E17A84971D5141A4703D1A57765441F6285C2F9A1D5141333333E335765441EC51B85E9A1D5141EC51B89E33765441AE47E11A991D5141295C8FB233765441CDCCCC3C701D51419A99998934765441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EC6B48B04A1D5141686EE8D82F7654418EB2B8434A1D5141D0E7C2BD2F765441ADA6E545491D51416376A63D3976544103D25E0C481D51411276C13649765441B81E85EB471D5141333333E34A76544148E17A54631D51415C8FC26559765441AE47E12A641D51410000006059765441FD592818681D5141554B414959765441E0C4F6E3691D51417708DA3E59765441510AE6A5711D51413A3AEB11597654412ECF98D9781D5141304634E85876544105A6FDF77C1D5141891459D05876544115EFF7FB851D514110F5209C58765441A7E943378E1D51419C34736C58765441EB0D8F97921D5141DB4F1A535876544102AB1E88971D51418098E9A0577654416C123DEC971D51417C18440E52765441A1934257991D5141AED40466407654418C0E6BEB991D5141C47D313139765441E02D245A9A1D5141085A31D93376544135C7783D981D514153621CB733765441B10697BE8F1D5141925BD0E3337654416E001C2F851D514182C1611B34765441EB493903661D5141E2762ABA34765441013552BA651D514126E883BA34765441A4703DBA651D5141B81E85BB3476544113D3505B5F1D5141E5A9BBD9347654419C6EFBF85E1D5141B296CDC2347654410BB9CDED561D514132A7A6E932765441806A50A84F1D51418E186F1731765441EC6B48B04A1D5141686EE8D82F765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481364 - 1062608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47E19D1B514133333343F88354410AD7A3C09D1B51410AD7A330F7835441B81E857B9C1B5141666666C6F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A118454410AD7A3F05C1B514152B81EF516845441E17A140E5D1B5141666666C617845441D7A370CD5E1B5141F6285C2F1784544185EB5138601B514152B81EB516845441D7A3706D651B5141713D0AA713845441F6285C4F671B5141D7A3707D128454411F85EB416A1B51411F85EB5110845441713D0A976D1B51419A9999991384544185EB51C86F1B5141CDCCCC7C158454413D0AD733751B5141C3F5280C1984544152B81EA5861B5141E17A140E1384544114AE47B18E1B5141333333F30F845441CDCCCC4C941B5141C3F528FC0C8454419A9999E9971B51413D0AD7130B845441B81E851BA01B5141666666A604845441EC51B80E9F1B514114AE47C1FD83544114AE47E19D1B514133333343F8835441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007F8823B09E1B5141E6FF98B105845441A4993AD79E1B51410D76BFA405845441DA545F1AA01B5141FBAC32AB04845441C32996969F1B51410E73783D018454413C6FFCDC9E1B514141676FB5FD8354416477E2A59D1B514177648D45FA835441E3BFC4DC9C1B51411EB55545F8835441F6DF56719C1B51416017ECB1F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A118454410AD7A3F05C1B514152B81EF516845441E17A140E5D1B5141666666C617845441D7A370CD5E1B5141F6285C2F1784544185EB5138601B514152B81EB516845441D7A3706D651B5141713D0AA713845441F6285C4F671B5141D7A3707D128454416DDE3E416A1B51410A47734E1084544182CCE9046C1B514173F0CE0D12845441C92014CB6D1B5141AF4566C61384544117BCA4776F1B51411CB1583715845441EC64B27A6F1B514157BE573615845441173F1413A01B5141BF14CE8E048454417F8823B09E1B5141E6FF98B105845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481364 - 3602455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47E19D1B514133333343F88354410AD7A3C09D1B51410AD7A330F7835441B81E857B9C1B5141666666C6F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A118454410AD7A3F05C1B514152B81EF516845441E17A140E5D1B5141666666C617845441D7A370CD5E1B5141F6285C2F1784544185EB5138601B514152B81EB516845441D7A3706D651B5141713D0AA713845441F6285C4F671B5141D7A3707D128454411F85EB416A1B51411F85EB5110845441713D0A976D1B51419A9999991384544185EB51C86F1B5141CDCCCC7C158454413D0AD733751B5141C3F5280C1984544152B81EA5861B5141E17A140E1384544114AE47B18E1B5141333333F30F845441CDCCCC4C941B5141C3F528FC0C8454419A9999E9971B51413D0AD7130B845441B81E851BA01B5141666666A604845441EC51B80E9F1B514114AE47C1FD83544114AE47E19D1B514133333343F8835441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007F8823B09E1B5141E6FF98B105845441A4993AD79E1B51410D76BFA405845441DA545F1AA01B5141FBAC32AB04845441C32996969F1B51410E73783D018454413C6FFCDC9E1B514141676FB5FD8354416477E2A59D1B514177648D45FA835441E3BFC4DC9C1B51411EB55545F8835441F6DF56719C1B51416017ECB1F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A118454410AD7A3F05C1B514152B81EF516845441E17A140E5D1B5141666666C617845441D7A370CD5E1B5141F6285C2F1784544185EB5138601B514152B81EB516845441D7A3706D651B5141713D0AA713845441F6285C4F671B5141D7A3707D128454416DDE3E416A1B51410A47734E1084544182CCE9046C1B514173F0CE0D12845441C92014CB6D1B5141AF4566C61384544117BCA4776F1B51411CB1583715845441EC64B27A6F1B514157BE573615845441173F1413A01B5141BF14CE8E048454417F8823B09E1B5141E6FF98B105845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481832 - 48625
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF129175141A4703D4A9687544148E17AD42F175141D7A3700D938754413333336336175141A4703D1A8F8754416666663638175141A4703D4A8E875441EC51B80E36175141000000B0848754411F85EB91341751419A9999397E87544114AE4791311751413D0AD7937F875441A4703D0A30175141AE47E17A81875441B81E851B2E1751411F85EB1182875441333333532C17514114AE47F181875441E17A14DE25175141000000C085875441D7A3701D2617514166666656888754410000008026175141B81E851B8C87544185EB51E8261751419A9999A98E8754419A9999F925175141F6285C7F93875441AE47E18A2417514114AE47219887544185EB51B82417514148E17A84998754411F85EBF129175141A4703D4A96875441
+</a>
+
+<b>
+010600000001000000010300000001000000120000003A106BD825175141083B9B9185875441D90652F02517514192B83EB5858754417DFE9E582C1751417AF2AAF1818754419D98B1292E17514150BB970D8287544145BF7B0A301751412FAD937A8187544102F440983117514179D9B2907F8754410690FA8834175141D8ADA03D7E875441C2F2BF73341751412B332E207D87544117B34447341751418F0145817B875441B580AB1A331751412851165D7B875441CBB823FE3217514112199E797B875441717BAB793217514158D232B17C8754418754726D2F1751416D60CDC17E87544147F93BCC2C1751415FC51474808754415DC611C828175141A99B550B8387544195F8A78826175141054F867E84875441850B30C225175141920B72DB848754413A106BD825175141083B9B9185875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481832 - 85571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF129175141A4703D4A9687544148E17AD42F175141D7A3700D938754413333336336175141A4703D1A8F8754416666663638175141A4703D4A8E875441EC51B80E36175141000000B0848754411F85EB91341751419A9999397E87544114AE4791311751413D0AD7937F875441A4703D0A30175141AE47E17A81875441B81E851B2E1751411F85EB1182875441333333532C17514114AE47F181875441E17A14DE25175141000000C085875441D7A3701D2617514166666656888754410000008026175141B81E851B8C87544185EB51E8261751419A9999A98E8754419A9999F925175141F6285C7F93875441AE47E18A2417514114AE47219887544185EB51B82417514148E17A84998754411F85EBF129175141A4703D4A96875441
+</a>
+
+<b>
+010600000001000000010300000001000000120000003A106BD825175141083B9B9185875441D90652F02517514192B83EB5858754417DFE9E582C1751417AF2AAF1818754419D98B1292E17514150BB970D8287544145BF7B0A301751412FAD937A8187544102F440983117514179D9B2907F8754410690FA8834175141D8ADA03D7E875441C2F2BF73341751412B332E207D87544117B34447341751418F0145817B875441B580AB1A331751412851165D7B875441CBB823FE3217514112199E797B875441717BAB793217514158D232B17C8754418754726D2F1751416D60CDC17E87544147F93BCC2C1751415FC51474808754415DC611C828175141A99B550B8387544195F8A78826175141054F867E84875441850B30C225175141920B72DB848754413A106BD825175141083B9B9185875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>482151 - 352642
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD793371C514185EB5168FB7254410AD7A320391C514166666656F57254418FC2F598E51B5141713D0AD7FA7254410AD7A3D0E31B51418FC2F5D8007354411F85EB21ED1B514152B81E4500735441E17A14CE071C51410AD7A390FE725441D7A370FD201C5141B81E85CBFC7254413D0AD793371C514185EB5168FB725441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E89C1D391C5141BF729956F572544152A1C795E51B51411313C2E1FA72544130E6D101E51B5141211F6CD4FC7254416149A6D0E31B5141BD9BF5D800735441D9A38521ED1B5141D7082545007354413F706123021C5141C2B15FEDFE7254417CAD15CE071C51418C6CA390FE7254415D5271FD201C514180B483CBFC7254416AB0A3FA301C5141C67615D0FB725441BD4AD693371C514148F75168FB725441A57EA320391C5141396C6656F5725441E8B7541E391C514101578D56F5725441A7E89C1D391C5141BF729956F5725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>484761 - 214036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000160000005C8FC2552A195141CDCCCCDC2E0A5541EC51B83E2A19514166666666310A5541CDCCCC7C2A19514185EB5178390A5541B81E85BB30195141333333A3660A554148E17A3431195141C3F5280C6A0A554148E17AE4341951411F85EBE1690A55418FC2F5783619514114AE47B1630A5541295C8FB250195141E17A14AE5F0A554114AE47E170195141295C8FD2500A55411F85EB2172195141EC51B83E500A554114AE4701601951417B14AE870C0A554114AE47115E195141000000700D0A554185EB51985819514114AE47D1100A5541AE47E15A561951418FC2F5D8110A5541666666C64D1951415C8FC285130A55410AD7A3804B19514166666666130A554100000020471951419A9999D90F0A5541AE47E1CA331951415C8FC225100A554100000000301951417B14AE771B0A5541B81E85AB2C19514114AE4711260A55417B14AE372B195141333333132B0A55415C8FC2552A195141CDCCCCDC2E0A5541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000CDCCCC7C2A19514185EB5178390A5541BAD0459B3019514180FFF7B9650A5541C39558F0331951410BCB2548660A55418175E2EC3519514154025EE0620A554132D2E2BF4F1951410B4CFE555E0A5541E123E62172195141F0CCBA3E500A5541EECD455C701951415F9820A0490A5541D632005C701951416D951C9F490A554136FE460160195141DB66AE870C0A554114AE47115E195141000000700D0A554185EB51985819514114AE47D1100A554123320B8B58195141777C62D7100A554191B1E25A561951412849F6D8110A5541097E67C64D195141AB3CC385130A5541E399A3804B19514168446766130A5541251FFF1F47195141C1E399D90F0A5541C3B171E933195141C01A2E4B100A554100000000301951417B14AE771B0A5541FD9C86AB2C19514145ED4211260A55417B14AE372B195141333333132B0A5541D4791ADB2A19514163CC84A02C0A554111B2C3552A195141B1C5CDDC2E0A5541CD5D2B452A195141651090B0300A5541EC51B83E2A19514166666666310A5541CDCCCC7C2A19514185EB5178390A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485212 - 391214
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000800000052B81E4524D3504114AE476189C05441CDCCCC5C24D35041CDCCCC9C89C05441EC51B84E26D350417B14AEC788C054417B14AEF728D35041EC51B83E88C05441F6285CDF28D350413D0AD70388C05441D7A370CD19D35041D7A3700D63C0544185EB513815D350416666667664C0544152B81E4524D3504114AE476189C05441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000708BFC5424D350419821298989C05441CDCCCC5C24D35041CDCCCC9C89C05441EC51B84E26D350417B14AEC788C0544189F32A9F28D350417EB3855088C054418A85ADF728D350419E43B83E88C054410CC15ADF28D350411D1AD80388C054417A5370CD19D3504196BC700D63C0544185EB513815D350416666667664C05441844B184524D3504164EB376189C0544150F31F4524D350417D08476189C05441708BFC5424D350419821298989C05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485414 - 101095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000E17A147E0C6A5141C3F528FCE9D6544114AE4781126A5141713D0AB7EBD65441EC51B83E196A5141666666F6EDD6544114AE4751206A5141AE47E14AF0D654413D0AD763266A5141F6285CDFF1D654411F85EB612A6A51419A9999C9F2D654415C8FC2B52E6A51418FC2F5C8F3D65441CDCCCCDC316A5141AE47E14AF4D654415C8FC255326A5141295C8F32F3D654410AD7A3C0326A514185EB51E8F0D6544185EB51D8316A5141E17A14EEEED65441666666362E6A514185EB5138EBD6544185EB51F82C6A51418FC2F578EAD654415C8FC275296A5141713D0A57EAD6544148E17A84266A514152B81E65EBD65441EC51B8DE246A514133333313EBD65441295C8FD2206A51410AD7A340E8D6544152B81E551E6A514133333343E5D65441000000201E6A5141C3F528CCE3D65441713D0A971E6A514100000020E2D65441D7A3700D206A5141EC51B88EE0D654411F85EBD1216A514114AE4771DFD65441AE47E15A166A51418FC2F5E8C6D65441000000100C6A514148E17AA4B7D65441666666260A6A51411F85EB21BBD654410AD7A300086A514100000000C9D65441A4703DDA026A51413D0AD7B3CAD6544148E17A34FF695141000000F0CED6544148E17AB4FC6951411F85EBE1D2D65441CDCCCCAC076A5141E17A144ED4D6544148E17A34126A51418FC2F518D5D654417B14AE67106A5141AE47E1BADED65441666666B60C6A514133333393E8D65441E17A147E0C6A5141C3F528FCE9D65441
+</a>
+
+<b>
+010600000001000000010300000001000000680000001778B6680C6A514134B81228B8D65441000000100C6A514148E17AA4B7D65441666666260A6A51411F85EB21BBD654412A4EDC140A6A514163582E93BBD654418EBC62130A6A5141EF7FB49CBBD65441FE1869F4096A51415D36BA64BCD65441908EE1E7096A514123EFA2B5BCD65441EB1A31A3096A514135AF3271BED654410AD7A300086A514100000000C9D65441A4703DDA026A51413D0AD7B3CAD654410F95A9A3026A5141825535F3CAD654417CF33803016A5141B755B9D6CCD654414D8D06AA006A514133A7493ECDD65441EBD9B946006A51419FD894B1CDD6544155ACB144006A514115CFF0B3CDD65441510F7412006A51414D0846EECDD654410D66DD48FE69514148FCCC63D0D654417F192BD9FC695141216DADE6D2D654417ED5FEC8FD69514142B9C605D3D6544120A508E0FD695141F480C308D3D65441620314C8FF695141D59E0C48D3D65441E530B1CF006A5141128C3B6AD3D65441700D892E036A5141BD4EECB8D3D65441CC4BD7E7046A51417DE225F2D3D654418C460218056A514190DD64F8D3D65441F94F961F096A51411162FC69D4D654415BB970F30D6A51418D63FFC6D4D6544148E17A34126A51418FC2F518D5D654411A2ACEC8116A5141B4452B59D7D65441F3B62BB3116A5141EAABF1CCD7D654417B14AE67106A5141AE47E1BADED65441DE8CA04B106A5141D6C8AC05DFD65441A12F9AA50F6A5141F33C55C0E0D65441BAA4098E0F6A5141B44B29FFE0D65441B25D296F0D6A51411BF995A6E6D65441742502690D6A514114D9FDB6E6D654410E349BAC0C6A5141380DF8D1E8D65441CD8F64920C6A514126330102EAD65441A74DE83B0D6A514112A0C732EAD654412E40B4410E6A5141FD881B7EEAD654415880E568106A51412D4CB41CEBD6544114AE4781126A5141713D0AB7EBD654412C246867176A51417CC13C59EDD654417385339F1B6A5141DD72DCBEEED65441FED9ECF01F6A5141B9A6C02AF0D65441ED7ED7E1206A514115527E70F0D6544136C17D65226A5141BB0F5BD5F0D65441649AA57E246A51410A2F1E61F1D65441AC21CE0B276A514153405A04F2D65441D80E27352A6A5141351857BFF2D654411F85EB612A6A51419A9999C9F2D6544169CD07E62D6A514104EB1399F3D65441B6F871FC2E6A51413E69B6D3F3D65441B3361592316A51419F0EDA3EF4D65441CDCCCCDC316A5141AE47E14AF4D65441D8CC291C326A51416AC109B8F3D65441C5251E5D326A51416CD3330AF3D654411C6EB485326A514187D0942BF2D65441F0EC5DAD326A5141A7960852F1D65441DF5401BF326A51415DEEA1E5F0D65441BF36B20D326A514196D76362EFD65441E92BA5CF316A51415DEEA1E5EED65441861E50812F6A51414C054B8AECD65441569206722E6A514162C13775EBD65441E8086A2C2E6A51416DFC4F32EBD6544185EB51F82C6A51418FC2F578EAD654418A3011CE2A6A5141C18F0964EAD6544150920B76296A51419021D558EAD654416B41F3FC286A5141CBDF5A82EAD654415F87FFF5286A5141A1F9D884EAD654413E66F943286A5141EE0FADC4EAD6544110278B09286A5141052CA0D9EAD654417AB7E688276A514129B9BF07EBD654410BCF6C87276A5141CD374708EBD65441ECCCF578276A5141B7E3760DEBD6544148E17A84266A514152B81E65EBD65441EC51B8DE246A514133333313EBD654412E301269226A5141F0381E5CE9D654416F1E3DD8216A5141BEBF1EF7E8D65441295C8FD2206A51410AD7A340E8D6544138D27E55206A5141044776AAE7D65441EA6E05DB1F6A51414B076517E7D65441ACDBC9A81E6A5141B35EABA7E5D6544152B81E551E6A514133333343E5D6544110B868401E6A51417ECBF9B0E4D65441000000201E6A5141C3F528CCE3D65441713D0A971E6A514100000020E2D6544136F704E31E6A5141DCCF90CEE1D65441D7A3700D206A5141EC51B88EE0D6544114EA4836216A514149C575D3DFD65441521BE854216A514182D227BDDFD65441FED9ECD0216A5141005FDF6FDFD6544166BA1DC1216A51412AD2524DDFD6544158EE3DAF216A51411CA71327DFD654410680AAA8216A5141047E0119DFD654417E486A79216A5141D354E6B3DED6544198301C4B216A51417342D150DED65441471059FE1E6A514140F3FF64D9D65441AE47E15A166A51418FC2F5E8C6D654413A715E28166A5141A2A6089EC6D6544183540856136A51410F368C6EC2D65441AD1423A50E6A514129722F79BBD654411691F6BF0C6A5141093B7FA9B8D654411778B6680C6A514134B81228B8D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485414 - 302625
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000E17A147E0C6A5141C3F528FCE9D6544114AE4781126A5141713D0AB7EBD65441EC51B83E196A5141666666F6EDD6544114AE4751206A5141AE47E14AF0D654413D0AD763266A5141F6285CDFF1D654411F85EB612A6A51419A9999C9F2D654415C8FC2B52E6A51418FC2F5C8F3D65441CDCCCCDC316A5141AE47E14AF4D654415C8FC255326A5141295C8F32F3D654410AD7A3C0326A514185EB51E8F0D6544185EB51D8316A5141E17A14EEEED65441666666362E6A514185EB5138EBD6544185EB51F82C6A51418FC2F578EAD654415C8FC275296A5141713D0A57EAD6544148E17A84266A514152B81E65EBD65441EC51B8DE246A514133333313EBD65441295C8FD2206A51410AD7A340E8D6544152B81E551E6A514133333343E5D65441000000201E6A5141C3F528CCE3D65441713D0A971E6A514100000020E2D65441D7A3700D206A5141EC51B88EE0D654411F85EBD1216A514114AE4771DFD65441AE47E15A166A51418FC2F5E8C6D65441000000100C6A514148E17AA4B7D65441666666260A6A51411F85EB21BBD654410AD7A300086A514100000000C9D65441A4703DDA026A51413D0AD7B3CAD6544148E17A34FF695141000000F0CED6544148E17AB4FC6951411F85EBE1D2D65441CDCCCCAC076A5141E17A144ED4D6544148E17A34126A51418FC2F518D5D654417B14AE67106A5141AE47E1BADED65441666666B60C6A514133333393E8D65441E17A147E0C6A5141C3F528FCE9D65441
+</a>
+
+<b>
+010600000001000000010300000001000000680000001778B6680C6A514134B81228B8D65441000000100C6A514148E17AA4B7D65441666666260A6A51411F85EB21BBD654412A4EDC140A6A514163582E93BBD654418EBC62130A6A5141EF7FB49CBBD65441FE1869F4096A51415D36BA64BCD65441908EE1E7096A514123EFA2B5BCD65441EB1A31A3096A514135AF3271BED654410AD7A300086A514100000000C9D65441A4703DDA026A51413D0AD7B3CAD654410F95A9A3026A5141825535F3CAD654417CF33803016A5141B755B9D6CCD654414D8D06AA006A514133A7493ECDD65441EBD9B946006A51419FD894B1CDD6544155ACB144006A514115CFF0B3CDD65441510F7412006A51414D0846EECDD654410D66DD48FE69514148FCCC63D0D654417F192BD9FC695141216DADE6D2D654417ED5FEC8FD69514142B9C605D3D6544120A508E0FD695141F480C308D3D65441620314C8FF695141D59E0C48D3D65441E530B1CF006A5141128C3B6AD3D65441700D892E036A5141BD4EECB8D3D65441CC4BD7E7046A51417DE225F2D3D654418C460218056A514190DD64F8D3D65441F94F961F096A51411162FC69D4D654415BB970F30D6A51418D63FFC6D4D6544148E17A34126A51418FC2F518D5D654411A2ACEC8116A5141B4452B59D7D65441F3B62BB3116A5141EAABF1CCD7D654417B14AE67106A5141AE47E1BADED65441DE8CA04B106A5141D6C8AC05DFD65441A12F9AA50F6A5141F33C55C0E0D65441BAA4098E0F6A5141B44B29FFE0D65441B25D296F0D6A51411BF995A6E6D65441742502690D6A514114D9FDB6E6D654410E349BAC0C6A5141380DF8D1E8D65441CD8F64920C6A514126330102EAD65441A74DE83B0D6A514112A0C732EAD654412E40B4410E6A5141FD881B7EEAD654415880E568106A51412D4CB41CEBD6544114AE4781126A5141713D0AB7EBD654412C246867176A51417CC13C59EDD654417385339F1B6A5141DD72DCBEEED65441FED9ECF01F6A5141B9A6C02AF0D65441ED7ED7E1206A514115527E70F0D6544136C17D65226A5141BB0F5BD5F0D65441649AA57E246A51410A2F1E61F1D65441AC21CE0B276A514153405A04F2D65441D80E27352A6A5141351857BFF2D654411F85EB612A6A51419A9999C9F2D6544169CD07E62D6A514104EB1399F3D65441B6F871FC2E6A51413E69B6D3F3D65441B3361592316A51419F0EDA3EF4D65441CDCCCCDC316A5141AE47E14AF4D65441D8CC291C326A51416AC109B8F3D65441C5251E5D326A51416CD3330AF3D654411C6EB485326A514187D0942BF2D65441F0EC5DAD326A5141A7960852F1D65441DF5401BF326A51415DEEA1E5F0D65441BF36B20D326A514196D76362EFD65441E92BA5CF316A51415DEEA1E5EED65441861E50812F6A51414C054B8AECD65441569206722E6A514162C13775EBD65441E8086A2C2E6A51416DFC4F32EBD6544185EB51F82C6A51418FC2F578EAD654418A3011CE2A6A5141C18F0964EAD6544150920B76296A51419021D558EAD654416B41F3FC286A5141CBDF5A82EAD654415F87FFF5286A5141A1F9D884EAD654413E66F943286A5141EE0FADC4EAD6544110278B09286A5141052CA0D9EAD654417AB7E688276A514129B9BF07EBD654410BCF6C87276A5141CD374708EBD65441ECCCF578276A5141B7E3760DEBD6544148E17A84266A514152B81E65EBD65441EC51B8DE246A514133333313EBD654412E301269226A5141F0381E5CE9D654416F1E3DD8216A5141BEBF1EF7E8D65441295C8FD2206A51410AD7A340E8D6544138D27E55206A5141044776AAE7D65441EA6E05DB1F6A51414B076517E7D65441ACDBC9A81E6A5141B35EABA7E5D6544152B81E551E6A514133333343E5D6544110B868401E6A51417ECBF9B0E4D65441000000201E6A5141C3F528CCE3D65441713D0A971E6A514100000020E2D6544136F704E31E6A5141DCCF90CEE1D65441D7A3700D206A5141EC51B88EE0D6544114EA4836216A514149C575D3DFD65441521BE854216A514182D227BDDFD65441FED9ECD0216A5141005FDF6FDFD6544166BA1DC1216A51412AD2524DDFD6544158EE3DAF216A51411CA71327DFD654410680AAA8216A5141047E0119DFD654417E486A79216A5141D354E6B3DED6544198301C4B216A51417342D150DED65441471059FE1E6A514140F3FF64D9D65441AE47E15A166A51418FC2F5E8C6D654413A715E28166A5141A2A6089EC6D6544183540856136A51410F368C6EC2D65441AD1423A50E6A514129722F79BBD654411691F6BF0C6A5141093B7FA9B8D654411778B6680C6A514134B81228B8D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485651 - 1294856
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000026000000AE47E1BAA16F5141EC51B8DEE6D65441000000E0A06F51417B14AEC7E4D65441A4703DDA9F6F51411F85EB11E1D65441B81E853B9E6F514114AE47A1DAD65441000000C09D6F5141666666E6D7D65441C3F5287C916F5141C3F528FCD8D654415C8FC2458D6F514133333383D9D65441CDCCCCEC856F514152B81E75DAD654419A999989866F51418FC2F5B8DED65441C3F5285C886F51415C8FC235E5D65441EC51B83E8A6F5141295C8F12E9D6544185EB51988B6F51415C8FC215ECD654418FC2F5D88C6F5141A4703DEAEFD65441713D0AA78D6F51417B14AE77F3D65441F6285C1F8E6F51411F85EBD1F6D6544148E17AA48E6F5141A4703D0AFDD65441AE47E14A8F6F51411F85EB2101D75441AE47E17A906F5141A4703DBA07D7544148E17A84916F5141666666D60ED754418FC2F588926F5141000000E015D754410AD7A380946F51411F85EB3117D7544100000070966F51416666667618D75441E17A143E996F514185EB51981AD75441333333639C6F51417B14AE071DD754415C8FC285A06F51416666664620D75441F6285CFFA26F5141C3F528FC20D75441E17A141EA46F514148E17AD420D7544114AE47A1A46F5141F6285CEF1FD7544100000080A46F51413D0AD77319D75441E17A141EA46F5141F6285CAF0FD75441E17A141EA46F51413D0AD73309D7544100000050A56F51411F85EBC100D75441713D0AA7A56F5141333333D3F8D6544166666686A56F5141713D0AC7F6D65441295C8FE2A46F51410AD7A3B0F4D65441A4703D6AA46F51411F85EB41F2D65441A4703D7AA36F5141AE47E18AECD65441AE47E1BAA16F5141EC51B8DEE6D654410103000000010000002B0000005C8FC265C06F5141713D0A97A2D65441000000D0B96F514185EB51B8A3D65441713D0AD7B56F5141B81E852BA4D654410AD7A330B66F5141295C8F92A7D6544148E17A54B66F51410AD7A310AAD654413D0AD7E3B66F5141D7A3701DADD65441AE47E16AB76F5141CDCCCC3CB0D654419A9999A9B76F514100000080B5D65441CDCCCC0CB86F514133333333BCD65441713D0AB7B86F514152B81E25C1D65441A4703DFAB96F514114AE4771C8D65441295C8F22BB6F51419A999979CED654413D0AD753BC6F5141295C8FD2D8D654418FC2F588BD6F5141D7A3703DE1D65441EC51B89EBD6F51411F85EBB1E4D65441CDCCCC3CBD6F51417B14AE87E6D654418FC2F598BC6F5141F6285CCFE7D654410AD7A330BB6F514185EB5158E9D6544100000060B86F514185EB5138EBD65441A4703DBAB36F5141333333F3EDD6544152B81E25B06F5141A4703D0AF0D65441E17A140EAE6F5141D7A3707DF1D65441EC51B88EAA6F514185EB5138F4D65441F6285C0FA76F51417B14AEB7F7D6544114AE4781A66F5141CDCCCC9CF8D65441D7A3707DA66F5141713D0A57FED65441D7A3702DB56F514114AE47E1FFD65441333333F3CA6F51411F85EBC102D75441295C8FB2D16F5141295C8FA203D7544114AE4741D26F5141D7A3703DFBD6544114AE4781D26F514114AE4711F0D654418FC2F518D26F5141F6285C6FE7D65441E17A149ED16F5141A4703D3AE4D65441F6285CDFD06F51410AD7A340DFD65441AE47E13ACF6F51413D0AD773D7D65441CDCCCC8CCD6F5141CDCCCC9CCED65441E17A143ECC6F5141713D0AB7C7D65441B81E85EBCA6F5141AE47E1BAC0D65441CDCCCCBCC86F5141F6285C8FB2D65441A4703D6AC76F5141D7A3704DAAD65441000000F0C56F5141713D0A77A2D654417B14AED7C56F5141E17A14FEA1D654415C8FC265C06F5141713D0A97A2D65441010300000001000000160000001F85EBE1BC6F51411F85EBB1E1D65441333333D3B26F5141E17A140EE3D65441666666D6AD6F514133333363E3D65441B81E85DBA36F514100000030E4D6544148E17A54A16F51415C8FC295E4D6544133333353A26F51417B14AE87E6D6544185EB5108A46F5141B81E85BBEBD654413D0AD723A56F514114AE4721F2D65441713D0AA7A56F51411F85EBF1F4D6544133333303A66F514114AE47D1F5D654410AD7A320A66F514152B81ED5F4D654415C8FC2A5A66F5141E17A145EF4D65441295C8FA2A76F514148E17A14F4D654410AD7A380A86F5141A4703DCAF3D65441C3F5281CAB6F51410AD7A3E0F1D65441000000B0AF6F514166666666EED65441A4703D2AB36F5141CDCCCC7CECD654410AD7A300BA6F5141C3F5288CE8D65441B81E85DBBB6F5141B81E85FBE6D65441E17A148EBC6F51419A9999F9E5D6544152B81EE5BC6F51419A999949E3D654411F85EBE1BC6F51411F85EBB1E1D65441
+</a>
+
+<b>
+010600000001000000010300000001000000750000009C1A9EABA66F5141F09E8658F8D6544114AE4781A66F5141CDCCCC9CF8D65441D7A3707DA66F5141713D0A57FED65441D7A3702DB56F514114AE47E1FFD65441333333F3CA6F51411F85EBC102D75441295C8FB2D16F5141295C8FA203D7544114AE4741D26F5141D7A3703DFBD6544114AE4781D26F514114AE4711F0D654418FC2F518D26F5141F6285C6FE7D65441E17A149ED16F5141A4703D3AE4D65441F6285CDFD06F51410AD7A340DFD65441AE47E13ACF6F51413D0AD773D7D65441CDCCCC8CCD6F5141CDCCCC9CCED65441E17A143ECC6F5141713D0AB7C7D65441B81E85EBCA6F5141AE47E1BAC0D65441CDCCCCBCC86F5141F6285C8FB2D65441A4703D6AC76F5141D7A3704DAAD65441000000F0C56F5141713D0A77A2D654417B14AED7C56F5141E17A14FEA1D654415C8FC265C06F5141713D0A97A2D65441000000D0B96F514185EB51B8A3D65441713D0AD7B56F5141B81E852BA4D654410AD7A330B66F5141295C8F92A7D6544148E17A54B66F51410AD7A310AAD654413D0AD7E3B66F5141D7A3701DADD65441AE47E16AB76F5141CDCCCC3CB0D654419A9999A9B76F514100000080B5D65441CDCCCC0CB86F514133333333BCD65441713D0AB7B86F514152B81E25C1D65441A4703DFAB96F514114AE4771C8D65441295C8F22BB6F51419A999979CED654413D0AD753BC6F5141295C8FD2D8D654418FC2F588BD6F5141D7A3703DE1D65441EC51B89EBD6F51411F85EBB1E4D65441CDCCCC3CBD6F51417B14AE87E6D654418FC2F598BC6F5141F6285CCFE7D654410AD7A330BB6F514185EB5158E9D6544100000060B86F514185EB5138EBD65441A4703DBAB36F5141333333F3EDD6544152B81E25B06F5141A4703D0AF0D65441E17A140EAE6F5141D7A3707DF1D6544125E1B93AAD6F51417FF46922F2D654419DCAEB38AA6F5141D4721E8EF4D6544152E4A65BA96F51411F59636BF5D65441F227FEC1A86F51417F150C05F6D65441B9316E5AA76F5141B80B9C6CF7D654415B618575A66F514159671AE8F6D65441A9020414A66F51410B0B4041F5D654414100E21EA66F51415DB02BE4F4D654410F010A4CA66F514199B5F284F4D6544161ECD1C0A66F514173425016F4D654415FB3ACB6A76F5141B390D9D8F3D65441359B0393A86F5141FB68C3BCF3D65441D0C939FDA86F5141A477DC6EF3D65441C3F5281CAB6F51410AD7A3E0F1D65441000000B0AF6F514166666666EED65441A4703D2AB36F5141CDCCCC7CECD654410AD7A300BA6F5141C3F5288CE8D65441B81E85DBBB6F5141B81E85FBE6D65441E17A148EBC6F51419A9999F9E5D6544152B81EE5BC6F51419A999949E3D654411F85EBE1BC6F51411F85EBB1E1D65441333333D3B26F5141E17A140EE3D65441666666D6AD6F514133333363E3D65441B81E85DBA36F514100000030E4D6544148E17A54A16F51415C8FC295E4D6544133333353A26F51417B14AE87E6D6544185EB5108A46F5141B81E85BBEBD654413D0AD723A56F514114AE4721F2D654412AF06791A56F51414862177BF4D654413A9BA7A9A56F5141C1CD41F8F4D6544161B4DAFFA56F514146DE2BC9F5D65441F65E4802A66F514155F51EAEF6D65441AC801F89A56F514154E3C4F2F6D65441E96AB180A56F514129ED6CB4F6D65441295C8FE2A46F51410AD7A3B0F4D65441A4703D6AA46F51411F85EB41F2D65441A4703D7AA36F5141AE47E18AECD65441AE47E1BAA16F5141EC51B8DEE6D65441000000E0A06F51417B14AEC7E4D65441A4703DDA9F6F51411F85EB11E1D65441B81E853B9E6F514114AE47A1DAD65441000000C09D6F5141666666E6D7D65441C3F5287C916F5141C3F528FCD8D654415C8FC2458D6F514133333383D9D65441CDCCCCEC856F514152B81E75DAD654419A999989866F51418FC2F5B8DED65441C3F5285C886F51415C8FC235E5D65441EC51B83E8A6F5141295C8F12E9D6544185EB51988B6F51415C8FC215ECD654418FC2F5D88C6F5141A4703DEAEFD65441713D0AA78D6F51417B14AE77F3D65441F6285C1F8E6F51411F85EBD1F6D6544148E17AA48E6F5141A4703D0AFDD65441AE47E14A8F6F51411F85EB2101D75441AE47E17A906F5141A4703DBA07D7544148E17A84916F5141666666D60ED754418FC2F588926F5141000000E015D754410AD7A380946F51411F85EB3117D7544100000070966F51416666667618D75441E17A143E996F514185EB51981AD75441333333639C6F51417B14AE071DD754412057E988A06F5141C142741220D75441F6285CFFA26F5141C3F528FC20D75441E17A141EA46F514148E17AD420D7544114AE47A1A46F5141F6285CEF1FD7544100000080A46F51413D0AD77319D75441E17A141EA46F5141F6285CAF0FD75441E17A141EA46F51413D0AD73309D7544100000050A56F51411F85EBC100D75441713D0AA7A56F5141333333D3F8D65441B5AC9594A56F5141153DD4AAF7D6544188C19A8FA56F51417E8BDA5AF7D6544189989939A66F514121787610F7D65441CC07D216A76F5141A53538B0F7D65441206D01FAA66F5141C4CD1DDAF7D654419C1A9EABA66F5141F09E8658F8D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485651 - 3368781
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000026000000AE47E1BAA16F5141EC51B8DEE6D65441000000E0A06F51417B14AEC7E4D65441A4703DDA9F6F51411F85EB11E1D65441B81E853B9E6F514114AE47A1DAD65441000000C09D6F5141666666E6D7D65441C3F5287C916F5141C3F528FCD8D654415C8FC2458D6F514133333383D9D65441CDCCCCEC856F514152B81E75DAD654419A999989866F51418FC2F5B8DED65441C3F5285C886F51415C8FC235E5D65441EC51B83E8A6F5141295C8F12E9D6544185EB51988B6F51415C8FC215ECD654418FC2F5D88C6F5141A4703DEAEFD65441713D0AA78D6F51417B14AE77F3D65441F6285C1F8E6F51411F85EBD1F6D6544148E17AA48E6F5141A4703D0AFDD65441AE47E14A8F6F51411F85EB2101D75441AE47E17A906F5141A4703DBA07D7544148E17A84916F5141666666D60ED754418FC2F588926F5141000000E015D754410AD7A380946F51411F85EB3117D7544100000070966F51416666667618D75441E17A143E996F514185EB51981AD75441333333639C6F51417B14AE071DD754415C8FC285A06F51416666664620D75441F6285CFFA26F5141C3F528FC20D75441E17A141EA46F514148E17AD420D7544114AE47A1A46F5141F6285CEF1FD7544100000080A46F51413D0AD77319D75441E17A141EA46F5141F6285CAF0FD75441E17A141EA46F51413D0AD73309D7544100000050A56F51411F85EBC100D75441713D0AA7A56F5141333333D3F8D6544166666686A56F5141713D0AC7F6D65441295C8FE2A46F51410AD7A3B0F4D65441A4703D6AA46F51411F85EB41F2D65441A4703D7AA36F5141AE47E18AECD65441AE47E1BAA16F5141EC51B8DEE6D654410103000000010000002B0000005C8FC265C06F5141713D0A97A2D65441000000D0B96F514185EB51B8A3D65441713D0AD7B56F5141B81E852BA4D654410AD7A330B66F5141295C8F92A7D6544148E17A54B66F51410AD7A310AAD654413D0AD7E3B66F5141D7A3701DADD65441AE47E16AB76F5141CDCCCC3CB0D654419A9999A9B76F514100000080B5D65441CDCCCC0CB86F514133333333BCD65441713D0AB7B86F514152B81E25C1D65441A4703DFAB96F514114AE4771C8D65441295C8F22BB6F51419A999979CED654413D0AD753BC6F5141295C8FD2D8D654418FC2F588BD6F5141D7A3703DE1D65441EC51B89EBD6F51411F85EBB1E4D65441CDCCCC3CBD6F51417B14AE87E6D654418FC2F598BC6F5141F6285CCFE7D654410AD7A330BB6F514185EB5158E9D6544100000060B86F514185EB5138EBD65441A4703DBAB36F5141333333F3EDD6544152B81E25B06F5141A4703D0AF0D65441E17A140EAE6F5141D7A3707DF1D65441EC51B88EAA6F514185EB5138F4D65441F6285C0FA76F51417B14AEB7F7D6544114AE4781A66F5141CDCCCC9CF8D65441D7A3707DA66F5141713D0A57FED65441D7A3702DB56F514114AE47E1FFD65441333333F3CA6F51411F85EBC102D75441295C8FB2D16F5141295C8FA203D7544114AE4741D26F5141D7A3703DFBD6544114AE4781D26F514114AE4711F0D654418FC2F518D26F5141F6285C6FE7D65441E17A149ED16F5141A4703D3AE4D65441F6285CDFD06F51410AD7A340DFD65441AE47E13ACF6F51413D0AD773D7D65441CDCCCC8CCD6F5141CDCCCC9CCED65441E17A143ECC6F5141713D0AB7C7D65441B81E85EBCA6F5141AE47E1BAC0D65441CDCCCCBCC86F5141F6285C8FB2D65441A4703D6AC76F5141D7A3704DAAD65441000000F0C56F5141713D0A77A2D654417B14AED7C56F5141E17A14FEA1D654415C8FC265C06F5141713D0A97A2D65441010300000001000000160000001F85EBE1BC6F51411F85EBB1E1D65441333333D3B26F5141E17A140EE3D65441666666D6AD6F514133333363E3D65441B81E85DBA36F514100000030E4D6544148E17A54A16F51415C8FC295E4D6544133333353A26F51417B14AE87E6D6544185EB5108A46F5141B81E85BBEBD654413D0AD723A56F514114AE4721F2D65441713D0AA7A56F51411F85EBF1F4D6544133333303A66F514114AE47D1F5D654410AD7A320A66F514152B81ED5F4D654415C8FC2A5A66F5141E17A145EF4D65441295C8FA2A76F514148E17A14F4D654410AD7A380A86F5141A4703DCAF3D65441C3F5281CAB6F51410AD7A3E0F1D65441000000B0AF6F514166666666EED65441A4703D2AB36F5141CDCCCC7CECD654410AD7A300BA6F5141C3F5288CE8D65441B81E85DBBB6F5141B81E85FBE6D65441E17A148EBC6F51419A9999F9E5D6544152B81EE5BC6F51419A999949E3D654411F85EBE1BC6F51411F85EBB1E1D65441
+</a>
+
+<b>
+010600000001000000010300000001000000750000009C1A9EABA66F5141F09E8658F8D6544114AE4781A66F5141CDCCCC9CF8D65441D7A3707DA66F5141713D0A57FED65441D7A3702DB56F514114AE47E1FFD65441333333F3CA6F51411F85EBC102D75441295C8FB2D16F5141295C8FA203D7544114AE4741D26F5141D7A3703DFBD6544114AE4781D26F514114AE4711F0D654418FC2F518D26F5141F6285C6FE7D65441E17A149ED16F5141A4703D3AE4D65441F6285CDFD06F51410AD7A340DFD65441AE47E13ACF6F51413D0AD773D7D65441CDCCCC8CCD6F5141CDCCCC9CCED65441E17A143ECC6F5141713D0AB7C7D65441B81E85EBCA6F5141AE47E1BAC0D65441CDCCCCBCC86F5141F6285C8FB2D65441A4703D6AC76F5141D7A3704DAAD65441000000F0C56F5141713D0A77A2D654417B14AED7C56F5141E17A14FEA1D654415C8FC265C06F5141713D0A97A2D65441000000D0B96F514185EB51B8A3D65441713D0AD7B56F5141B81E852BA4D654410AD7A330B66F5141295C8F92A7D6544148E17A54B66F51410AD7A310AAD654413D0AD7E3B66F5141D7A3701DADD65441AE47E16AB76F5141CDCCCC3CB0D654419A9999A9B76F514100000080B5D65441CDCCCC0CB86F514133333333BCD65441713D0AB7B86F514152B81E25C1D65441A4703DFAB96F514114AE4771C8D65441295C8F22BB6F51419A999979CED654413D0AD753BC6F5141295C8FD2D8D654418FC2F588BD6F5141D7A3703DE1D65441EC51B89EBD6F51411F85EBB1E4D65441CDCCCC3CBD6F51417B14AE87E6D654418FC2F598BC6F5141F6285CCFE7D654410AD7A330BB6F514185EB5158E9D6544100000060B86F514185EB5138EBD65441A4703DBAB36F5141333333F3EDD6544152B81E25B06F5141A4703D0AF0D65441E17A140EAE6F5141D7A3707DF1D6544125E1B93AAD6F51417FF46922F2D654419DCAEB38AA6F5141D4721E8EF4D6544152E4A65BA96F51411F59636BF5D65441F227FEC1A86F51417F150C05F6D65441B9316E5AA76F5141B80B9C6CF7D654415B618575A66F514159671AE8F6D65441A9020414A66F51410B0B4041F5D654414100E21EA66F51415DB02BE4F4D654410F010A4CA66F514199B5F284F4D6544161ECD1C0A66F514173425016F4D654415FB3ACB6A76F5141B390D9D8F3D65441359B0393A86F5141FB68C3BCF3D65441D0C939FDA86F5141A477DC6EF3D65441C3F5281CAB6F51410AD7A3E0F1D65441000000B0AF6F514166666666EED65441A4703D2AB36F5141CDCCCC7CECD654410AD7A300BA6F5141C3F5288CE8D65441B81E85DBBB6F5141B81E85FBE6D65441E17A148EBC6F51419A9999F9E5D6544152B81EE5BC6F51419A999949E3D654411F85EBE1BC6F51411F85EBB1E1D65441333333D3B26F5141E17A140EE3D65441666666D6AD6F514133333363E3D65441B81E85DBA36F514100000030E4D6544148E17A54A16F51415C8FC295E4D6544133333353A26F51417B14AE87E6D6544185EB5108A46F5141B81E85BBEBD654413D0AD723A56F514114AE4721F2D654412AF06791A56F51414862177BF4D654413A9BA7A9A56F5141C1CD41F8F4D6544161B4DAFFA56F514146DE2BC9F5D65441F65E4802A66F514155F51EAEF6D65441AC801F89A56F514154E3C4F2F6D65441E96AB180A56F514129ED6CB4F6D65441295C8FE2A46F51410AD7A3B0F4D65441A4703D6AA46F51411F85EB41F2D65441A4703D7AA36F5141AE47E18AECD65441AE47E1BAA16F5141EC51B8DEE6D65441000000E0A06F51417B14AEC7E4D65441A4703DDA9F6F51411F85EB11E1D65441B81E853B9E6F514114AE47A1DAD65441000000C09D6F5141666666E6D7D65441C3F5287C916F5141C3F528FCD8D654415C8FC2458D6F514133333383D9D65441CDCCCCEC856F514152B81E75DAD654419A999989866F51418FC2F5B8DED65441C3F5285C886F51415C8FC235E5D65441EC51B83E8A6F5141295C8F12E9D6544185EB51988B6F51415C8FC215ECD654418FC2F5D88C6F5141A4703DEAEFD65441713D0AA78D6F51417B14AE77F3D65441F6285C1F8E6F51411F85EBD1F6D6544148E17AA48E6F5141A4703D0AFDD65441AE47E14A8F6F51411F85EB2101D75441AE47E17A906F5141A4703DBA07D7544148E17A84916F5141666666D60ED754418FC2F588926F5141000000E015D754410AD7A380946F51411F85EB3117D7544100000070966F51416666667618D75441E17A143E996F514185EB51981AD75441333333639C6F51417B14AE071DD754412057E988A06F5141C142741220D75441F6285CFFA26F5141C3F528FC20D75441E17A141EA46F514148E17AD420D7544114AE47A1A46F5141F6285CEF1FD7544100000080A46F51413D0AD77319D75441E17A141EA46F5141F6285CAF0FD75441E17A141EA46F51413D0AD73309D7544100000050A56F51411F85EBC100D75441713D0AA7A56F5141333333D3F8D65441B5AC9594A56F5141153DD4AAF7D6544188C19A8FA56F51417E8BDA5AF7D6544189989939A66F514121787610F7D65441CC07D216A76F5141A53538B0F7D65441206D01FAA66F5141C4CD1DDAF7D654419C1A9EABA66F5141F09E8658F8D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>486673 - 180575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F000000EC51B80E44B650413D0AD763F8F95441AE47E18A43B6504114AE47B1F7F95441295C8FA241B6504152B81EC5F2F954410AD7A33042B6504114AE4721E9F95441295C8FA242B65041C3F5286CE1F95441C3F5283C43B650415C8FC215DDF95441F6285C2F45B65041B81E859BD5F954419A99998942B650415C8FC2D5D4F95441295C8F023CB65041B81E85ABE1F95441333333E336B6504152B81EB5E9F954416666662632B6504148E17AD4F5F9544148E17AA437B65041EC51B8AEF5F9544152B81E2538B65041713D0AD7F2F95441295C8F123BB65041AE47E12AF1F95441666666A639B65041E17A143EEFF954417B14AEA73AB650417B14AEE7EDF95441B81E85EB3EB65041295C8F82F3F95441000000003EB6504114AE4761FDF95441C3F528FC39B6504114AE475103FA5441EC51B84E37B650418FC2F5A805FA5441B81E85CB33B650417B14AE2704FA5441295C8F3230B650410AD7A34008FA54410AD7A3F02DB650410000004007FA544148E17A442CB650417B14AEA704FA5441B81E852B28B650419A99996906FA54410000004027B650417B14AE2704FA544185EB51982AB650411F85EBD103FA544185EB51982AB65041EC51B8CE00FA5441F6285CFF26B65041EC51B84E00FA544152B81EA521B65041EC51B8CE00FA5441666666B61DB650415C8FC2A502FA54418FC2F5481AB65041E17A14BE05FA544114AE47F117B650417B14AE6704FA54418FC2F51815B650415C8FC2850DFA54418FC2F5B813B650418FC2F5880DFA5441F6285C1F13B65041713D0AC70FFA5441D7A3709D09B650419A9999A919FA544152B81ED518B650415C8FC25513FA5441295C8FF21EB65041A4703D5A11FA5441C3F5289C2BB650419A9999D90EFA54415C8FC28538B65041CDCCCCCC08FA5441CDCCCC3C39B65041D7A370BD08FA5441713D0AB73CB650415C8FC27508FA5441E17A141E45B65041713D0AC707FA54413333334346B650411F85EBB1FAF9544148E17A7445B6504185EB5148FAF95441EC51B80E44B650413D0AD763F8F95441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000E17A141E45B65041713D0AC707FA54413CF2086545B650410455539C04FA54413333334346B650411F85EBB1FAF95441F95A615A45B65041AC62B043FAF9544111A2BE9043B65041E31039B9F7F95441AE47E18A43B6504114AE47B1F7F9544178422A1543B65041DA288181F6F95441D7BD38C442B6504170FE54B5F5F95441C47AA00A42B65041B5DEACD1F3F95441295C8FA241B6504152B81EC5F2F954415901DA8C41B6504100D93FB5F1F95441539517FC40B65041E6CAF3A9F0F954419C663BE83DB650417CA674DEECF95441BDF6E17E3CB65041010A58B0EBF95441E9D9535339B6504174026710EBF95441C626644536B65041F09E833EECF9544197DAA6AC34B650418A1C8993EFF954416666662632B6504148E17AD4F5F9544152B81E2538B65041713D0AD7F2F95441295C8F123BB65041AE47E12AF1F95441666666A639B65041E17A143EEFF954417B14AEA73AB650417B14AEE7EDF9544140370C7B3FB65041152FBA76F3F95441020C7F0A3FB6504110F4F76CF6F95441080C7F0A3FB65041CA22D480F9F9544157A2E0EC3EB6504146BFF0AEFAF954412D6E2C883EB650417897B2E1FCF95441DE91C8583EB650411BDC7EDAFDF95441D261B6F03BB650418EB1D46401FA5441C3F528FC39B6504114AE475103FA5441EC51B84E37B650418FC2F5A805FA5441B8F651DD33B65041342FDAB904FA5441295C8F3230B650410AD7A34008FA54410AD7A3F02DB650410000004007FA544148E17A442CB650417B14AEA704FA5441B81E852B28B650419A99996906FA5441787AF23A27B6504130A3D51F04FA544185EB51982AB650411F85EBD103FA544185EB51982AB65041EC51B8CE00FA54410B87631429B65041EF9FCD9800FA5441F6285CFF26B65041EC51B84E00FA5441B819986525B650411F7CFF7400FA544131C1C08E21B650418D792FD900FA5441232EB91D21B650418D4E120E01FA5441666666B61DB650415C8FC2A502FA54418FC2F5481AB65041E17A14BE05FA544114AE47F117B650417B14AE6704FA5441EF23B81615B650412B87BA900DFA54418FC2F5B813B650418FC2F5880DFA5441F6285C1F13B65041713D0AC70FFA54412786A62E11B65041A2BB78CB11FA5441A805F49612B65041EE507D7E12FA5441C4A0DA7014B650417DE472B813FA544126373C5314B6504101C7913315FA5441BD283D0E17B6504199214E1114FA54418D73C45219B6504181586E1E13FA5441A7337D511AB6504177126CD112FA544191F6A1F819B65041C0D6C6CC11FA5441332C8CB119B65041171CE61E0EFA544119FAF09B1CB65041FB80FF440CFA54410A19ABA31FB650414FE93C3711FA5441B88DB66324B650414FF8E84610FA5441DE8BE88424B650413E81594010FA54413F2524DA24B65041B047812F10FA5441150E344525B6504109A2581A10FA54412494095326B6504166C904E50FFA54415725A6AE26B650414DD6E9D20FFA544131F6EDF627B650412AFB08920FFA5441121B46AA2BB65041FCB3FCD20EFA544158EE850F2FB650416AE8B53B0DFA54415C8FC28538B65041CDCCCCCC08FA5441CDCCCC3C39B65041D7A370BD08FA54414C8AA6AE3CB65041D77C6F7608FA544186B38ADE3CB65041BF2A8D7208FA544133CA40753FB65041A2DFB83C08FA5441E17A141E45B65041713D0AC707FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>486673 - 355868
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F000000EC51B80E44B650413D0AD763F8F95441AE47E18A43B6504114AE47B1F7F95441295C8FA241B6504152B81EC5F2F954410AD7A33042B6504114AE4721E9F95441295C8FA242B65041C3F5286CE1F95441C3F5283C43B650415C8FC215DDF95441F6285C2F45B65041B81E859BD5F954419A99998942B650415C8FC2D5D4F95441295C8F023CB65041B81E85ABE1F95441333333E336B6504152B81EB5E9F954416666662632B6504148E17AD4F5F9544148E17AA437B65041EC51B8AEF5F9544152B81E2538B65041713D0AD7F2F95441295C8F123BB65041AE47E12AF1F95441666666A639B65041E17A143EEFF954417B14AEA73AB650417B14AEE7EDF95441B81E85EB3EB65041295C8F82F3F95441000000003EB6504114AE4761FDF95441C3F528FC39B6504114AE475103FA5441EC51B84E37B650418FC2F5A805FA5441B81E85CB33B650417B14AE2704FA5441295C8F3230B650410AD7A34008FA54410AD7A3F02DB650410000004007FA544148E17A442CB650417B14AEA704FA5441B81E852B28B650419A99996906FA54410000004027B650417B14AE2704FA544185EB51982AB650411F85EBD103FA544185EB51982AB65041EC51B8CE00FA5441F6285CFF26B65041EC51B84E00FA544152B81EA521B65041EC51B8CE00FA5441666666B61DB650415C8FC2A502FA54418FC2F5481AB65041E17A14BE05FA544114AE47F117B650417B14AE6704FA54418FC2F51815B650415C8FC2850DFA54418FC2F5B813B650418FC2F5880DFA5441F6285C1F13B65041713D0AC70FFA5441D7A3709D09B650419A9999A919FA544152B81ED518B650415C8FC25513FA5441295C8FF21EB65041A4703D5A11FA5441C3F5289C2BB650419A9999D90EFA54415C8FC28538B65041CDCCCCCC08FA5441CDCCCC3C39B65041D7A370BD08FA5441713D0AB73CB650415C8FC27508FA5441E17A141E45B65041713D0AC707FA54413333334346B650411F85EBB1FAF9544148E17A7445B6504185EB5148FAF95441EC51B80E44B650413D0AD763F8F95441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000E17A141E45B65041713D0AC707FA54413CF2086545B650410455539C04FA54413333334346B650411F85EBB1FAF95441F95A615A45B65041AC62B043FAF9544111A2BE9043B65041E31039B9F7F95441AE47E18A43B6504114AE47B1F7F9544178422A1543B65041DA288181F6F95441D7BD38C442B6504170FE54B5F5F95441C47AA00A42B65041B5DEACD1F3F95441295C8FA241B6504152B81EC5F2F954415901DA8C41B6504100D93FB5F1F95441539517FC40B65041E6CAF3A9F0F954419C663BE83DB650417CA674DEECF95441BDF6E17E3CB65041010A58B0EBF95441E9D9535339B6504174026710EBF95441C626644536B65041F09E833EECF9544197DAA6AC34B650418A1C8993EFF954416666662632B6504148E17AD4F5F9544152B81E2538B65041713D0AD7F2F95441295C8F123BB65041AE47E12AF1F95441666666A639B65041E17A143EEFF954417B14AEA73AB650417B14AEE7EDF9544140370C7B3FB65041152FBA76F3F95441020C7F0A3FB6504110F4F76CF6F95441080C7F0A3FB65041CA22D480F9F9544157A2E0EC3EB6504146BFF0AEFAF954412D6E2C883EB650417897B2E1FCF95441DE91C8583EB650411BDC7EDAFDF95441D261B6F03BB650418EB1D46401FA5441C3F528FC39B6504114AE475103FA5441EC51B84E37B650418FC2F5A805FA5441B8F651DD33B65041342FDAB904FA5441295C8F3230B650410AD7A34008FA54410AD7A3F02DB650410000004007FA544148E17A442CB650417B14AEA704FA5441B81E852B28B650419A99996906FA5441787AF23A27B6504130A3D51F04FA544185EB51982AB650411F85EBD103FA544185EB51982AB65041EC51B8CE00FA54410B87631429B65041EF9FCD9800FA5441F6285CFF26B65041EC51B84E00FA5441B819986525B650411F7CFF7400FA544131C1C08E21B650418D792FD900FA5441232EB91D21B650418D4E120E01FA5441666666B61DB650415C8FC2A502FA54418FC2F5481AB65041E17A14BE05FA544114AE47F117B650417B14AE6704FA5441EF23B81615B650412B87BA900DFA54418FC2F5B813B650418FC2F5880DFA5441F6285C1F13B65041713D0AC70FFA54412786A62E11B65041A2BB78CB11FA5441A805F49612B65041EE507D7E12FA5441C4A0DA7014B650417DE472B813FA544126373C5314B6504101C7913315FA5441BD283D0E17B6504199214E1114FA54418D73C45219B6504181586E1E13FA5441A7337D511AB6504177126CD112FA544191F6A1F819B65041C0D6C6CC11FA5441332C8CB119B65041171CE61E0EFA544119FAF09B1CB65041FB80FF440CFA54410A19ABA31FB650414FE93C3711FA5441B88DB66324B650414FF8E84610FA5441DE8BE88424B650413E81594010FA54413F2524DA24B65041B047812F10FA5441150E344525B6504109A2581A10FA54412494095326B6504166C904E50FFA54415725A6AE26B650414DD6E9D20FFA544131F6EDF627B650412AFB08920FFA5441121B46AA2BB65041FCB3FCD20EFA544158EE850F2FB650416AE8B53B0DFA54415C8FC28538B65041CDCCCCCC08FA5441CDCCCC3C39B65041D7A370BD08FA54414C8AA6AE3CB65041D77C6F7608FA544186B38ADE3CB65041BF2A8D7208FA544133CA40753FB65041A2DFB83C08FA5441E17A141E45B65041713D0AC707FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487770 - 3094096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999A9F2B85041713D0A7747FA5441A4703D2AEFB850410AD7A33053FA5441E17A144EF0B85041AE47E11A56FA5441C3F5283CFDB850413333338358FA54413333335308B950416666665659FA5441C3F528DC0AB95041A4703DDA4CFA54419A9999A9F2B85041713D0A7747FA5441
+</a>
+
+<b>
+010600000001000000010300000001000000050000001FF6E7E809B950415A07478851FA54413DBF6E50F1B8504169632DFC4BFA544135614EF6EFB85041F698878450FA54419DE4F60209B95041A664C0F455FA54411FF6E7E809B950415A07478851FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487770 - 3442352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999A9F2B85041713D0A7747FA5441A4703D2AEFB850410AD7A33053FA5441E17A144EF0B85041AE47E11A56FA5441C3F5283CFDB850413333338358FA54413333335308B950416666665659FA5441C3F528DC0AB95041A4703DDA4CFA54419A9999A9F2B85041713D0A7747FA5441
+</a>
+
+<b>
+010600000001000000010300000001000000050000001FF6E7E809B950415A07478851FA54413DBF6E50F1B8504169632DFC4BFA544135614EF6EFB85041F698878450FA54419DE4F60209B95041A664C0F455FA54411FF6E7E809B950415A07478851FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489092 - 43752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000007D00000014AE47B10C355141713D0A8768385541AE47E1EA07355141B81E856B6D385541AE47E1CA023551411F85EB3172385541AE47E1EAFF3451418FC2F56874385541A4703DAAFD3451417B14AE77763855413D0AD773FB3451416666668678385541C3F528BCF8345141333333D37B385541EC51B86EF5345141C3F528CC8038554152B81EF5F334514185EB51F882385541295C8FD2F1345141666666168738554114AE47E1EF345141295C8F228C38554185EB5118EE345141F6285CDF90385541CDCCCCDCED34514148E17A0494385541EC51B89EEC3451413D0AD73397385541A4703D6AEB345141E17A14EE9A385541666666C6E8345141295C8FD29F385541A4703DFAE534514148E17A24A5385541A4703DBAE3345141713D0A27AA3855419A999999E23451417B14AE67AC385541F6285C9FE1345141CDCCCCDCAE38554114AE4731E034514166666676B23855419A999979DD345141CDCCCC2CB93855417B14AEF7DC34514152B81E75BA38554114AE4761DC345141F6285CEFBB385541295C8F52DB3451418FC2F598BE385541F6285CFFD9345141F6285C5FC2385541A4703DFAD8345141E17A140EC63855417B14AE17DF34514100000010C53855415C8FC295E8345141000000C0C43855413D0AD723EC3451417B14AEE7C4385541CDCCCC9CEE345141F6285CDFC53855418FC2F598F134514133333313C6385541B81E850BF434514152B81EA5BF385541D7A3706DF73451411F85EBE1B638554100000020FA3451413D0AD7D3B038554133333323FB345141D7A370FDAE385541B81E853BFC34514100000000AD3855419A9999E9FD3451417B14AE67A9385541D7A370EDFE345141C3F528ACA63855413D0AD733FF3451415C8FC275A53855419A99991900355141C3F5287CA4385541D7A370FD02355141C3F528ACA1385541B81E85DB063551417B14AE879D3855415C8FC2050A3551411F85EB8199385541B81E858B0B3551415C8FC265973855413D0AD7A30C3551413D0AD7A3953855413D0AD7230F3551413D0AD793913855415C8FC295103551413D0AD7C38E3855415C8FC22512355141C3F5286C8C3855411F85EB81153551418FC2F5C8873855419A9999A919355141A4703D0A823855413D0AD7D31E355141A4703D7A7738554185EB5128253551417B14AEE773385541D7A3706D2D35514148E17AA47038554114AE47F136355141666666666B385541B81E859B40355141F6285CCF66385541EC51B86E4735514114AE47D16E385541000000304C3551411F85EB81733855410AD7A3F050355141713D0A97773855415C8FC2154B355141A4703D2A7A3855419A9999C946355141E17A142E7C385541E17A144E3E3551417B14AE7781385541F6285C6F353551410000001089385541F6285CCF2D355141E17A143E8F3855417B14AE87243551413D0AD7D3973855419A9999491935514166666636A5385541F6285C7F173551413D0AD7A3A738554148E17AC4173551415C8FC2E5A738554152B81ED515355141A4703D6AAB385541AE47E10A133551418FC2F5D8B13855411F85EB2112355141333333D3B33855415C8FC2F5113551413D0AD733B43855415C8FC2A5153551419A999999B53855415C8FC265183551419A9999B9B6385541D7A3707D1B3551411F85EB81BA385541D7A3702D1D3551419A999939BC385541D7A370ED1D3551419A999979BC385541D7A370BD1E3551419A999969BC385541666666B6203551415C8FC2D5BB38554185EB51782635514114AE4701BA385541666666162C35514152B81E75B7385541B81E854B31355141EC51B80EB4385541713D0A47363551411F85EB71B0385541EC51B8EE3935514148E17A14AD385541E17A144E3D3551411F85EB31A7385541E17A14DE3F3551419A9999C9A1385541E17A14AE413551419A9999A99E385541E17A142E45355141F6285C9F993855411F85EB41453551410000007097385541713D0A4744355141C3F5288C95385541F6285C2F423551411F85EB9193385541AE47E1FA413551413D0AD763933855411F85EB7143355141C3F528BC913855413D0AD773463551415C8FC2558E385541000000204A355141C3F528DC8A3855417B14AE174D3551419A99997988385541000000704F3551415C8FC2858638554148E17AC45235514185EB51988A3855413D0AD7235735514114AE47E18F38554148E17A945A355141F6285C7F94385541333333936B3551419A999919873855410AD7A30068355141A4703D8A82385541E17A14AE65355141EC51B86E803855411F85EBA1613551415C8FC2257C3855410AD7A3905D355141AE47E16A7738554152B81E355935514185EB51C8723855410AD7A3A05E355141D7A370CD6F38554152B81E55623551410AD7A3606D385541EC51B86E65355141D7A3701D6B3855413D0AD7036835514152B81ED568385541713D0AE76335514114AE47216738554114AE47715F35514185EB516864385541333333D35A355141B81E85CB603855413D0AD7C3543551411F85EBA15F38554185EB5138523551418FC2F5385F3855417B14AEF74E355141C3F5289C5E3855417B14AE974A355141F6285C5F5E385541C3F5287C47355141E17A14FE5D3855415C8FC2154235514152B81EF55D38554185EB51083F3551413D0AD7335E3855410AD7A3E039355141666666265F38554114AE4771323551413D0AD73360385541000000A01C355141CDCCCCAC61385541295C8F6212355141EC51B8BE6138554114AE47B10C355141713D0A8768385541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000FB8BC5423E355141A05926585E38554185EB51083F3551413D0AD7335E385541919D0B1A4035514188C7DE1D5E385541BB54E457403551414303E8185E3855415C8FC2154235514152B81EF55D3855418B315ECC43355141FA7BF6F75D38554155B423C444355141FB9991F95D385541C717991845355141BE9017D75D385541DA4A2B9341355141548E7F745D38554192190CE0333551418F01DB555E3855413DDD333F2A35514199518D6F5F38554155CBCC8D21355141D1307C0A60385541B8A44C641B3551416C56BD346038554145E52F2F14355141077CFE5E603855414D11375D0D35514151CB017960385541C77CEA810F3551418EF50C0461385541C8E7090E11355141891E6E68613855412132CB291235514187CB55B061385541FE2687DD123551414920E1BD613855410EB6247B163551418F4C8DB761385541EA2662E1163551410961DAB661385541CACDC8A11935514165AD09B26138554137C4C96F1C355141B62B21AD613855410DA8D64A1E3551413FF0FD8F61385541C2D7BAFC1E355141AE5AFC83613855411908964C2435514157EE3428613855413AC2C215263551419AEC590961385541E0F7D7952735514117CA6DEF60385541C6D2652D29355141F71EECD360385541C7EEBEB129355141746DFDCA6038554118DA8D952B355141DB3F56AA60385541FA4152992C3551414506CE98603855410FF5FD592E355141F0F2857A60385541155DF0082F355141163DB76E6038554171762E09323551410AA4DD3A60385541688D176633355141AC322F1160385541E800ECD434355141FA7F41DD5F385541185BE20C37355141BCE1DA8C5F385541CFE39C8538355141607586575F385541B0B841F83A355141587F01F35E38554197E176C73D355141DF5ED06E5E385541FB8BC5423E355141A05926585E385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489197 - 215468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000050000000000000A0052E5141D7A370DD9F2555417B14AE47052E514185EB51D8A1255541D7A370FD062E5141AE47E1CAA42555410AD7A380092E5141EC51B86EA52555411F85EBA10B2E5141713D0A17A32555417B14AE870E2E5141A4703DCAA2255541F6285CEF0F2E514148E17A94A4255541D7A3707D122E514185EB5148A4255541F6285CBF122E5141C3F528ECA62555415C8FC225102E5141E17A14FEAD255541E17A148E112E5141713D0A87AF255541D7A3707D122E5141A4703D1AB1255541E17A148E132E5141713D0A67B3255541E17A147E142E5141CDCCCC5CB5255541A4703DFA132E51415C8FC205B72555411F85EB91142E51411F85EBB1B7255541F6285C2F152E5141E17A140EB82555418FC2F5A8172E5141D7A3707DB72555417B14AEE71A2E514100000070B62555413D0AD7331D2E51418FC2F5F8B5255541E17A145E202E5141AE47E12AB6255541A4703D3A212E51410AD7A320B625554148E17A14222E514148E17AD4B525554185EB51B8222E51418FC2F5A8B525554166666666232E514114AE4731B525554100000020242E51411F85EB61B425554148E17AE4242E5141295C8F92B3255541E17A14BE252E5141D7A370ADB22555411F85EB61262E514148E17A04B1255541AE47E1FA262E5141D7A370CDAE2555419A999979272E5141AE47E14AAB2555419A999949272E5141EC51B8DEA8255541AE47E10A272E5141B81E858BA52555418FC2F538262E514148E17A84A22555419A999949252E5141EC51B8EE9F255541B81E852B242E5141295C8F829D255541295C8FB2222E5141D7A3701D9B255541E17A142E212E514114AE47F198255541C3F5284C1F2E5141A4703D7A96255541CDCCCCEC1A2E514185EB51D88F25554166666646162E51411F85EBB184255541D7A370CD102E514185EB51487D2555411F85EB710C2E514148E17AB4772555418FC2F5F8092E5141295C8F8273255541AE47E16A072E514114AE47616F255541B81E85DB022E514185EB51A870255541AE47E1BA002E5141AE47E15A6C255541295C8F52FF2D5141AE47E17A68255541000000C0FF2D514148E17A8464255541E17A14FEFB2D514185EB514857255541333333B3F92D514152B81EC556255541713D0A17F72D5141EC51B87E55255541D7A370FDF42D51417B14AE3754255541000000F0F32D514152B81E8553255541D7A370EDF22D51417B14AEC752255541D7A3705DF12D51417B14AE17522555419A999949F02D5141333333D351255541EC51B84EEF2D5141C3F5289C512555413D0AD703EF2D5141CDCCCC5C52255541E17A14EEEE2D51415C8FC2455325554185EB5158EF2D51411F85EB3154255541713D0A07F02D51410000004055255541C3F5287CF12D5141D7A370AD562555418FC2F5C8F22D5141F6285C1F59255541E17A143EF42D5141B81E852B5E2555415C8FC2A5F52D5141F6285CBF62255541A4703D8AF62D51419A99990966255541AE47E12AF92D51419A9999396B255541F6285C9FFA2D51415C8FC2856E255541AE47E13AFB2D5141295C8FA2702555411F85EBD1FB2D514148E17A147D255541E17A14FEFB2D5141CDCCCC1C81255541295C8FB2FB2D51418FC2F598852555411F85EBE1FB2D51418FC2F54888255541713D0A97FC2D5141D7A370ED8B2555415C8FC2E5FD2D5141B81E851B8F255541CDCCCC5CFF2D5141C3F528AC9125554185EB5118022E51419A999989962555418FC2F5A8032E5141A4703D9A99255541000000A0052E5141D7A370DD9F255541
+</a>
+
+<b>
+01060000000100000001030000000100000065000000000000A0052E5141D7A370DD9F2555417B14AE47052E514185EB51D8A1255541D7A370FD062E5141AE47E1CAA42555416C76A940072E514125D200DCA42555410AD7A380092E5141EC51B86EA525554159FD913A0B2E51410F50B388A32555411F85EBA10B2E5141713D0A17A32555418CA19EFA0C2E514117C459F3A2255541DFDDABD10E2E5141C65A5556A225554161B41A7D0F2E5141FB72EA02A4255541F6285CEF0F2E514148E17A94A4255541D7A3707D122E514185EB5148A4255541F6285CBF122E5141C3F528ECA62555417DB156780F2E5141F654B570AE255541A8DD8639102E5141FD5BA2CCAF2555419E28151F112E514163FE662FB1255541D39296AB122E51412D43F0F4B3255541A4703DFA132E51415C8FC205B72555412F3AD529142E5141626AC73BB72555419585EB91142E51419E84EBB1B72555417265D8E2142E5141CA784AE1B7255541F6285C2F152E5141E17A140EB82555418FC2F5A8172E5141D7A3707DB7255541DC6D3258182E5141A84C9A44B72555417B14AEE71A2E5141AAFFFF6FB6255541280AD7331D2E5141E4C1F5F8B52555411A0BB55F1F2E5141962E351BB6255541E17A145E202E5141AE47E12AB6255541A4703D3A212E51410AD7A320B625554148E17A14222E514148E17AD4B525554185EB51B8222E51418FC2F5A8B525554166666666232E514114AE4731B525554100000020242E51411F85EB61B425554148E17AE4242E5141295C8F92B3255541E17A14BE252E5141D7A370ADB22555411F85EB61262E514148E17A04B1255541AE47E1FA262E5141D7A370CDAE2555419A999979272E5141AE47E14AAB2555419A999949272E5141EC51B8DEA8255541AE47E10A272E5141B81E858BA52555418FC2F538262E514148E17A84A22555410B2682F3252E5141E27B77C4A12555410E999949252E51410C52B8EE9F255541A31E852B242E51417F5C8F829D255541B35B8FB2222E514142A4701D9B255541F845B205222E5141EF8CF6259A255541E17A142E212E514114AE47F1982555417E4E640B202E5141FAFCA4749725554157F5284C1F2E5141FA703D7A9625554177CCCCEC1A2E514126EC51D88F255541C824A7B7172E5141AA3755278825554166666646162E51411F85EBB184255541D7A370CD102E514185EB51487D2555411F85EB710C2E514148E17AB4772555418FC2F5F8092E5141295C8F8273255541AE47E16A072E514114AE47616F255541B81E85DB022E514185EB51A870255541AE47E1BA002E5141AE47E15A6C25554117307D14002E5141869FC9906A255541295C8F52FF2D5141AE47E17A68255541000000C0FF2D514148E17A8464255541E17A14FEFB2D514185EB514857255541333333B3F92D514152B81EC5562555415BCA3F37F82D51419E2058F85525554159EBD714F72D51417440D45B552555414C3D0786F62D51417AFD8B5452255541DFBAC768F62D51419682C5B551255541A90AD723F62D5141F3323313512555413615B5AAF22D5141A82B883151255541EC51B84EEF2D5141C3F5289C512555413D0AD703EF2D5141CDCCCC5C52255541E65E5EF0EE2D51415915422D53255541EC7A14EEEE2D5141728FC245532555413E8E89F2EE2D51411D0CAB4F53255541E5E2C902EF2D5141EA02CB73532555416F46670AEF2D5141974AB884532555413CEC5158EF2D51411F85EB3154255541503D0A07F02D51419FFFFF3F55255541C3F5287CF12D5141D7A370AD562555418FC2F5C8F22D5141F6285C1F59255541E17A143EF42D5141B81E852B5E2555415C8FC2A5F52D5141F6285CBF622555418D6F3D8AF62D514193959909662555419947E12AF92D51414E9999396B255541F6285C9FFA2D51415C8FC2856E255541AE47E13AFB2D5141295C8FA2702555411CDE9E6FFB2D51419A5207FB74255541CB85EBD1FB2D5141FDE07A147D255541F77A14FEFB2D5141E2CCCC1C81255541689661C5FB2D51411E5FD07A842555419A104AB7FB2D514135F10E51852555412A5C8FB2FB2D51417FC2F59885255541F69DBCB7FB2D5141DACD29E4852555411F85EBE1FB2D51418FC2F548882555417E6E0B19FC2D514144AAC36489255541E73D0A97FC2D5141ACA370ED8B2555415C8FC2E5FD2D5141B81E851B8F255541CDCCCC5CFF2D5141C3F528AC9125554185EB5118022E51419A999989962555418FC2F5A8032E5141A4703D9A99255541000000A0052E5141D7A370DD9F255541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489312 - 243328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000030000006D00000066666606182C5141EC51B89E82265541AE47E17A1A2C514152B81E45892655411F85EBC11A2C51415C8FC2058A265541D7A370ED172C514114AE47718D26554152B81EC5102C51410AD7A3609026554148E17A94062C51419A99993993265541A4703D3AFE2B5141B81E853B94265541000000E0F52B5141000000E094265541000000F0EC2B5141EC51B80E952655411F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE932655411F85EB91182C5141A4703D1A902655411F85EB211A2C514185EB51888D265541666666C61A2C5141295C8FF2922655413D0AD733122C5141D7A370ED94265541E17A144E062C5141F6285CFF9726554114AE4781FE2B51411F85EB019926554185EB5168F42B51411F85EB619A26554100000080EC2B51419A9999F99A26554185EB5148EC2B5141295C8FA29D265541AE47E12AEC2B5141AE47E1FA9F26554133333333FB2B5141C3F5286C9E265541333333A3082C514148E17A649D26554148E17A44152C51419A9999799A265541AE47E16A1B2C5141C3F5288C98265541333333531B2C5141CDCCCCEC99265541E17A146E132C51418FC2F5089C265541000000E0082C5141CDCCCC3C9E265541AE47E1AAFC2B51415C8FC2859F26554133333313EC2B514152B81E75A12655410AD7A3B0EB2B5141EC51B8DEA62655413D0AD7D3F22B5141295C8F12A62655419A9999E9F82B5141295C8F62A5265541CDCCCCECFF2B51415C8FC245A5265541F6285C8F092C514148E17A44A42655415C8FC275112C51418FC2F598A32655418FC2F5E81A2C5141D7A370DDA1265541CDCCCC0C202C51410AD7A300A0265541666666C6222C5141EC51B84E9F26554133333333232C5141EC51B84E9F26554100000010242C5141666666E699265541AE47E15A242C51419A9999D996265541EC51B85E242C5141000000D0952655410AD7A390232C51419A9999799126554166666626222C5141000000A08D265541CDCCCCCC212C5141295C8FD28C265541CDCCCCBC222C51419A9999998C26554114AE4771242C5141713D0AA790265541EC51B89E252C5141AE47E15A95265541AE47E17A242C51419A9999799C26554114AE4771232C5141B81E852BA326554185EB51A8252C5141333333B3A12655418FC2F5C8282C514185EB5108A02655419A9999292C2C5141D7A3704D9E265541CDCCCC3C352C5141CDCCCC4C9B2655410AD7A3403D2C51410AD7A380992655413D0AD7E3432C51417B14AE67982655419A999989492C51413333339397265541713D0A47502C5141B81E857B96265541CDCCCC4C562C514166666696942655419A999929552C51413D0AD713902655413D0AD743552C5141AE47E1CA902655411F85EB91512C5141713D0A3792265541F6285C3F4C2C51411F85EB2193265541CDCCCC5C452C5141E17A14DE9326554114AE4721402C5141295C8F82942655410AD7A380372C5141295C8FE295265541295C8FF22C2C514185EB514899265541D7A3707D2C2C51415C8FC2459826554148E17A842F2C514148E17A14972655413D0AD713382C51411F85EB4195265541295C8F123D2C51410AD7A340942655413D0AD7A34E2C514185EB51F89126554114AE47B1542C5141C3F528BC8F2655411F85EB81542C514148E17A448E265541713D0A67492C5141333333738E2655410AD7A3603D2C5141A4703D1A9026554114AE4701332C51410AD7A3F0912655411F85EB912B2C514148E17A2494265541EC51B8BE2A2C5141295C8FF292265541295C8FD2322C514185EB5178902655418FC2F5E83B2C5141A4703DBA8E26554114AE47F1482C5141A4703D2A8D2655417B14AED7472C51415C8FC2258B265541EC51B8AE402C5141666666F68A2655410AD7A350402C5141EC51B87E8926554100000030342C514114AE47E1892655417B14AED7342C5141CDCCCC4C862655419A999919352C5141F6285CDF84265541B81E858B352C51415C8FC265822655410AD7A330332C51418FC2F5C881265541AE47E17A2B2C5141295C8FE28226554185EB5198242C5141713D0A87832655418FC2F518202C51419A999999812655417B14AED7212C5141A4703D0A802655415C8FC285262C5141F6285C1F7F265541000000E02E2C51417B14AE077F2655413D0AD713362C514152B81E857F265541E17A140E372C5141CDCCCC0C7C26554152B81E452E2C514114AE47F17B265541C3F5286C282C5141AE47E16A7B265541666666161F2C5141295C8FA27B26554166666636192C5141713D0A477C265541EC51B8BE172C51418FC2F5D87E2655413D0AD763172C514114AE47A18126554166666606182C5141EC51B89E82265541040000003D0AD7131E2C51411F85EB11832655413D0AD7B31C2C5141000000B08A2655410AD7A3501A2C5141000000D0842655413D0AD7131E2C51411F85EB1183265541050000008FC2F5381A2C5141713D0A2795265541D7A370DD1A2C5141EC51B89E96265541E17A14FE142C5141A4703DEA982655418FC2F5F8122C51418FC2F5B8972655418FC2F5381A2C5141713D0A2795265541
+</a>
+
+<b>
+010600000001000000010300000003000000770000001F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE932655411F85EB91182C5141A4703D1A902655411F85EB211A2C514185EB51888D265541666666C61A2C5141295C8FF292265541EC7B50DB122C5141BB1CC2C69426554150994EB20E2C5141E67D09D595265541E17A144E062C5141F6285CFF9726554185EB5168F42B51411F85EB619A26554100000080EC2B51419A9999F99A26554185EB5148EC2B5141295C8FA29D265541AE47E12AEC2B5141AE47E1FA9F265541BC40E32BF12B51412C0128769F26554164511AE3F62B51418AE28DDE9E26554120B8F6F5FB2B51417D2B3B5D9E2655412A86D015012C5141451EADF89D2655416A337B7E042C5141150BC9B59D265541523AE041082C51413FA4F06B9D265541333333A3082C514148E17A649D2655410AEF6459132C5141A0250AEB9A26554148E17A44152C51419A9999799A265541AE47E16A1B2C5141C3F5288C98265541333333531B2C5141CDCCCCEC99265541E17A146E132C51418FC2F5089C265541000000E0082C5141CDCCCC3C9E26554133333313EC2B514152B81E75A1265541C28790BEEB2B5141455B5862A62655410AD7A3B0EB2B5141EC51B8DEA62655413D0AD7D3F22B5141295C8F12A62655419A9999E9F82B5141295C8F62A5265541CDCCCCECFF2B51415C8FC245A5265541F6285C8F092C514148E17A44A42655415C8FC275112C51418FC2F598A32655418FC2F5E81A2C5141D7A370DDA1265541CDCCCC0C202C51410AD7A300A0265541666666C6222C5141EC51B84E9F26554133333333232C5141EC51B84E9F26554100000010242C5141666666E699265541EC51B85E242C5141000000D0952655410AD7A390232C51419A99997991265541CDCCCCCC212C5141295C8FD28C265541CDCCCCBC222C51419A9999998C26554114AE4771242C5141713D0AA790265541EC51B89E252C5141AE47E15A9526554114AE4771232C5141B81E852BA326554185EB51A8252C5141333333B3A12655418FC2F5C8282C514185EB5108A02655419A9999292C2C5141D7A3704D9E265541CDCCCC3C352C5141CDCCCC4C9B2655410AD7A3403D2C51410AD7A380992655413D0AD7E3432C51417B14AE67982655419A999989492C51413333339397265541713D0A47502C5141B81E857B96265541CDCCCC4C562C514166666696942655413D0AD743552C5141AE47E1CA902655411F85EB91512C5141713D0A3792265541F6285C3F4C2C51411F85EB2193265541CDCCCC5C452C5141E17A14DE9326554114AE4721402C5141295C8F82942655410AD7A380372C5141295C8FE295265541295C8FF22C2C514185EB514899265541D7A3707D2C2C51415C8FC2459826554148E17A842F2C514148E17A14972655410AD7A3B0342C5141295C8F22962655413D0AD713382C51411F85EB4195265541295C8F123D2C51410AD7A34094265541C32BA8DF3F2C5141962D78E3932655418D854978422C514193A11D8D93265541FB3B65DA452C5141FEA3951C932655416B8960F3472C514146DED0D692265541D3B14A484B2C5141F6B6FF6792265541E85196AC4D2C514153E6711892265541DA22A1764F2C514172657BAA912655413A9D73DC512C5141360BD1C7902655417B20F3BF542C514123B72ACC8F26554148958BBF542C514157E39CC98F265541C2B8449E542C514172ACE6888F2655411F85EB81542C514148E17A448E265541713D0A67492C5141333333738E2655410AD7A3603D2C5141A4703D1A9026554114AE4701332C51410AD7A3F0912655411F85EB912B2C514148E17A2494265541EC51B8BE2A2C5141295C8FF292265541295C8FD2322C514185EB5178902655418FC2F5E83B2C5141A4703DBA8E26554114AE47F1482C5141A4703D2A8D2655417B14AED7472C51415C8FC2258B265541EC51B8AE402C5141666666F68A2655410AD7A350402C5141EC51B87E8926554100000030342C514114AE47E189265541B81E858B352C51415C8FC265822655410AD7A330332C51418FC2F5C881265541AE47E17A2B2C5141295C8FE28226554185EB5198242C5141713D0A87832655418FC2F518202C51419A999999812655417B14AED7212C5141A4703D0A802655415C8FC285262C5141F6285C1F7F265541000000E02E2C51417B14AE077F2655413D0AD713362C514152B81E857F265541E17A140E372C5141CDCCCC0C7C26554152B81E452E2C514114AE47F17B265541C3F5286C282C5141AE47E16A7B265541666666161F2C5141295C8FA27B26554166666636192C5141713D0A477C265541EC51B8BE172C51418FC2F5D87E2655413D0AD763172C514114AE47A18126554166666606182C5141EC51B89E82265541AE47E17A1A2C514152B81E45892655411F85EBC11A2C51415C8FC2058A265541D7A370ED172C514114AE47718D26554152B81EC5102C51410AD7A3609026554148E17A94062C51419A99993993265541A4703D3AFE2B5141B81E853B94265541000000E0F52B5141000000E094265541000000F0EC2B5141EC51B80E952655411F85EBA1EC2B51418FC2F54899265541050000008FC2F5F8122C51418FC2F5B8972655418FC2F5381A2C5141713D0A2795265541D7A370DD1A2C5141EC51B89E96265541E17A14FE142C5141A4703DEA982655418FC2F5F8122C51418FC2F5B897265541040000000AD7A3501A2C5141000000D0842655413D0AD7131E2C51411F85EB11832655413D0AD7B31C2C5141000000B08A2655410AD7A3501A2C5141000000D084265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489312 - 339499
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000030000006D00000066666606182C5141EC51B89E82265541AE47E17A1A2C514152B81E45892655411F85EBC11A2C51415C8FC2058A265541D7A370ED172C514114AE47718D26554152B81EC5102C51410AD7A3609026554148E17A94062C51419A99993993265541A4703D3AFE2B5141B81E853B94265541000000E0F52B5141000000E094265541000000F0EC2B5141EC51B80E952655411F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE932655411F85EB91182C5141A4703D1A902655411F85EB211A2C514185EB51888D265541666666C61A2C5141295C8FF2922655413D0AD733122C5141D7A370ED94265541E17A144E062C5141F6285CFF9726554114AE4781FE2B51411F85EB019926554185EB5168F42B51411F85EB619A26554100000080EC2B51419A9999F99A26554185EB5148EC2B5141295C8FA29D265541AE47E12AEC2B5141AE47E1FA9F26554133333333FB2B5141C3F5286C9E265541333333A3082C514148E17A649D26554148E17A44152C51419A9999799A265541AE47E16A1B2C5141C3F5288C98265541333333531B2C5141CDCCCCEC99265541E17A146E132C51418FC2F5089C265541000000E0082C5141CDCCCC3C9E265541AE47E1AAFC2B51415C8FC2859F26554133333313EC2B514152B81E75A12655410AD7A3B0EB2B5141EC51B8DEA62655413D0AD7D3F22B5141295C8F12A62655419A9999E9F82B5141295C8F62A5265541CDCCCCECFF2B51415C8FC245A5265541F6285C8F092C514148E17A44A42655415C8FC275112C51418FC2F598A32655418FC2F5E81A2C5141D7A370DDA1265541CDCCCC0C202C51410AD7A300A0265541666666C6222C5141EC51B84E9F26554133333333232C5141EC51B84E9F26554100000010242C5141666666E699265541AE47E15A242C51419A9999D996265541EC51B85E242C5141000000D0952655410AD7A390232C51419A9999799126554166666626222C5141000000A08D265541CDCCCCCC212C5141295C8FD28C265541CDCCCCBC222C51419A9999998C26554114AE4771242C5141713D0AA790265541EC51B89E252C5141AE47E15A95265541AE47E17A242C51419A9999799C26554114AE4771232C5141B81E852BA326554185EB51A8252C5141333333B3A12655418FC2F5C8282C514185EB5108A02655419A9999292C2C5141D7A3704D9E265541CDCCCC3C352C5141CDCCCC4C9B2655410AD7A3403D2C51410AD7A380992655413D0AD7E3432C51417B14AE67982655419A999989492C51413333339397265541713D0A47502C5141B81E857B96265541CDCCCC4C562C514166666696942655419A999929552C51413D0AD713902655413D0AD743552C5141AE47E1CA902655411F85EB91512C5141713D0A3792265541F6285C3F4C2C51411F85EB2193265541CDCCCC5C452C5141E17A14DE9326554114AE4721402C5141295C8F82942655410AD7A380372C5141295C8FE295265541295C8FF22C2C514185EB514899265541D7A3707D2C2C51415C8FC2459826554148E17A842F2C514148E17A14972655413D0AD713382C51411F85EB4195265541295C8F123D2C51410AD7A340942655413D0AD7A34E2C514185EB51F89126554114AE47B1542C5141C3F528BC8F2655411F85EB81542C514148E17A448E265541713D0A67492C5141333333738E2655410AD7A3603D2C5141A4703D1A9026554114AE4701332C51410AD7A3F0912655411F85EB912B2C514148E17A2494265541EC51B8BE2A2C5141295C8FF292265541295C8FD2322C514185EB5178902655418FC2F5E83B2C5141A4703DBA8E26554114AE47F1482C5141A4703D2A8D2655417B14AED7472C51415C8FC2258B265541EC51B8AE402C5141666666F68A2655410AD7A350402C5141EC51B87E8926554100000030342C514114AE47E1892655417B14AED7342C5141CDCCCC4C862655419A999919352C5141F6285CDF84265541B81E858B352C51415C8FC265822655410AD7A330332C51418FC2F5C881265541AE47E17A2B2C5141295C8FE28226554185EB5198242C5141713D0A87832655418FC2F518202C51419A999999812655417B14AED7212C5141A4703D0A802655415C8FC285262C5141F6285C1F7F265541000000E02E2C51417B14AE077F2655413D0AD713362C514152B81E857F265541E17A140E372C5141CDCCCC0C7C26554152B81E452E2C514114AE47F17B265541C3F5286C282C5141AE47E16A7B265541666666161F2C5141295C8FA27B26554166666636192C5141713D0A477C265541EC51B8BE172C51418FC2F5D87E2655413D0AD763172C514114AE47A18126554166666606182C5141EC51B89E82265541040000003D0AD7131E2C51411F85EB11832655413D0AD7B31C2C5141000000B08A2655410AD7A3501A2C5141000000D0842655413D0AD7131E2C51411F85EB1183265541050000008FC2F5381A2C5141713D0A2795265541D7A370DD1A2C5141EC51B89E96265541E17A14FE142C5141A4703DEA982655418FC2F5F8122C51418FC2F5B8972655418FC2F5381A2C5141713D0A2795265541
+</a>
+
+<b>
+010600000001000000010300000003000000770000001F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE932655411F85EB91182C5141A4703D1A902655411F85EB211A2C514185EB51888D265541666666C61A2C5141295C8FF292265541EC7B50DB122C5141BB1CC2C69426554150994EB20E2C5141E67D09D595265541E17A144E062C5141F6285CFF9726554185EB5168F42B51411F85EB619A26554100000080EC2B51419A9999F99A26554185EB5148EC2B5141295C8FA29D265541AE47E12AEC2B5141AE47E1FA9F265541BC40E32BF12B51412C0128769F26554164511AE3F62B51418AE28DDE9E26554120B8F6F5FB2B51417D2B3B5D9E2655412A86D015012C5141451EADF89D2655416A337B7E042C5141150BC9B59D265541523AE041082C51413FA4F06B9D265541333333A3082C514148E17A649D2655410AEF6459132C5141A0250AEB9A26554148E17A44152C51419A9999799A265541AE47E16A1B2C5141C3F5288C98265541333333531B2C5141CDCCCCEC99265541E17A146E132C51418FC2F5089C265541000000E0082C5141CDCCCC3C9E26554133333313EC2B514152B81E75A1265541C28790BEEB2B5141455B5862A62655410AD7A3B0EB2B5141EC51B8DEA62655413D0AD7D3F22B5141295C8F12A62655419A9999E9F82B5141295C8F62A5265541CDCCCCECFF2B51415C8FC245A5265541F6285C8F092C514148E17A44A42655415C8FC275112C51418FC2F598A32655418FC2F5E81A2C5141D7A370DDA1265541CDCCCC0C202C51410AD7A300A0265541666666C6222C5141EC51B84E9F26554133333333232C5141EC51B84E9F26554100000010242C5141666666E699265541EC51B85E242C5141000000D0952655410AD7A390232C51419A99997991265541CDCCCCCC212C5141295C8FD28C265541CDCCCCBC222C51419A9999998C26554114AE4771242C5141713D0AA790265541EC51B89E252C5141AE47E15A9526554114AE4771232C5141B81E852BA326554185EB51A8252C5141333333B3A12655418FC2F5C8282C514185EB5108A02655419A9999292C2C5141D7A3704D9E265541CDCCCC3C352C5141CDCCCC4C9B2655410AD7A3403D2C51410AD7A380992655413D0AD7E3432C51417B14AE67982655419A999989492C51413333339397265541713D0A47502C5141B81E857B96265541CDCCCC4C562C514166666696942655413D0AD743552C5141AE47E1CA902655411F85EB91512C5141713D0A3792265541F6285C3F4C2C51411F85EB2193265541CDCCCC5C452C5141E17A14DE9326554114AE4721402C5141295C8F82942655410AD7A380372C5141295C8FE295265541295C8FF22C2C514185EB514899265541D7A3707D2C2C51415C8FC2459826554148E17A842F2C514148E17A14972655410AD7A3B0342C5141295C8F22962655413D0AD713382C51411F85EB4195265541295C8F123D2C51410AD7A34094265541C32BA8DF3F2C5141962D78E3932655418D854978422C514193A11D8D93265541FB3B65DA452C5141FEA3951C932655416B8960F3472C514146DED0D692265541D3B14A484B2C5141F6B6FF6792265541E85196AC4D2C514153E6711892265541DA22A1764F2C514172657BAA912655413A9D73DC512C5141360BD1C7902655417B20F3BF542C514123B72ACC8F26554148958BBF542C514157E39CC98F265541C2B8449E542C514172ACE6888F2655411F85EB81542C514148E17A448E265541713D0A67492C5141333333738E2655410AD7A3603D2C5141A4703D1A9026554114AE4701332C51410AD7A3F0912655411F85EB912B2C514148E17A2494265541EC51B8BE2A2C5141295C8FF292265541295C8FD2322C514185EB5178902655418FC2F5E83B2C5141A4703DBA8E26554114AE47F1482C5141A4703D2A8D2655417B14AED7472C51415C8FC2258B265541EC51B8AE402C5141666666F68A2655410AD7A350402C5141EC51B87E8926554100000030342C514114AE47E189265541B81E858B352C51415C8FC265822655410AD7A330332C51418FC2F5C881265541AE47E17A2B2C5141295C8FE28226554185EB5198242C5141713D0A87832655418FC2F518202C51419A999999812655417B14AED7212C5141A4703D0A802655415C8FC285262C5141F6285C1F7F265541000000E02E2C51417B14AE077F2655413D0AD713362C514152B81E857F265541E17A140E372C5141CDCCCC0C7C26554152B81E452E2C514114AE47F17B265541C3F5286C282C5141AE47E16A7B265541666666161F2C5141295C8FA27B26554166666636192C5141713D0A477C265541EC51B8BE172C51418FC2F5D87E2655413D0AD763172C514114AE47A18126554166666606182C5141EC51B89E82265541AE47E17A1A2C514152B81E45892655411F85EBC11A2C51415C8FC2058A265541D7A370ED172C514114AE47718D26554152B81EC5102C51410AD7A3609026554148E17A94062C51419A99993993265541A4703D3AFE2B5141B81E853B94265541000000E0F52B5141000000E094265541000000F0EC2B5141EC51B80E952655411F85EBA1EC2B51418FC2F54899265541050000008FC2F5F8122C51418FC2F5B8972655418FC2F5381A2C5141713D0A2795265541D7A370DD1A2C5141EC51B89E96265541E17A14FE142C5141A4703DEA982655418FC2F5F8122C51418FC2F5B897265541040000000AD7A3501A2C5141000000D0842655413D0AD7131E2C51411F85EB11832655413D0AD7B31C2C5141000000B08A2655410AD7A3501A2C5141000000D084265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489407 - 3128321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000350000001F85EB317E2A514148E17A742B2655410AD7A3C07E2A5141F6285CBF2B265541713D0A97832A5141AE47E14A2E26554114AE47C1882A51411F85EB01312655419A9999D9892A51411F85EBC12E26554152B81EB58E2A51415C8FC25531265541000000C08C2A5141AE47E15A352655418FC2F5888C2A5141C3F528DC38265541333333938B2A514152B81EA53A2655410AD7A3B0962A514133333333402655410AD7A3209A2A5141B81E851B3B265541F6285C0F9C2A5141000000F03B265541B81E853B9D2A5141A4703D8A3C265541CDCCCC6CA62A51411F85EB41412655410AD7A320A72A5141AE47E13A4026554166666646AE2A514152B81E9535265541D7A3703DB32A5141713D0A372E265541295C8F82B42A514185EB51782E265541000000C0B42A514148E17A842E26554166666666B32A5141AE47E18A2C2655418FC2F518AD2A51413333334324265541E17A14DEA92A514148E17AA41F26554114AE4741A82A5141D7A3700D1E265541295C8FB2A32A5141F6285C2F1B26554166666606A12A5141666666C6182655415C8FC2F59F2A5141CDCCCC3C18265541CDCCCCCC9E2A5141713D0AA7172655419A9999499C2A51419A99995915265541000000309C2A5141295C8F32152655417B14AED79A2A51416666662613265541A4703D5A9A2A5141AE47E13A0F265541C3F528EC982A5141295C8FE20B2655419A999949982A51419A9999290B2655417B14AEE7962A51411F85EBD10A2655419A9999E9952A5141713D0A670C265541295C8F028D2A5141B81E859B1A2655417B14AE57862A514114AE4741172655419A9999E9852A5141EC51B81E18265541AE47E1CA7D2A5141F6285CBF13265541E17A14CE752A5141F6285C8F0F2655417B14AEB7742A514185EB51681126554148E17AC4732A51410AD7A3A013265541295C8F92722A51411F85EBB116265541C3F5288C712A5141000000201A265541C3F528CC702A51415C8FC2E51C2655419A999979702A51413D0AD7B31F26554148E17AA4702A5141A4703D2A2126554100000000712A51417B14AE7722265541E17A149E712A514148E17AF42326554152B81E25722A5141F6285CAF24265541AE47E15A732A5141B81E859B25265541C3F528EC792A514166666626292655411F85EB317E2A514148E17A742B265541
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000AE7FDACA892A5141E0B159FD182655417B14AE57862A514114AE4741172655419A9999E9852A5141EC51B81E18265541E17A14CE752A5141F6285C8F0F265541E2F4B50A752A5141A35C43DB1026554166829964742A51411B36772A12265541ECCB0A39732A514199BE91061526554152269155722A5141D7FF057E172655419703139C712A5141F8D2BEEA192655417220F833712A5141E70603661B2655410577A1FB702A5141D8CC46361C265541BDD2E9D3702A5141B12E19C91C265541E20B2DBC702A51412DB1C8701D265541A77374AA702A5141EF83EA0A1E265541E8101495702A5141768BD7C41E265541F914F87D702A5141B8E3FCD91F2655412D5B5D85702A514181B78F1A20265541344E2A99702A5141177472C7202655416EB6CCEB702A51415C3C152E222655415EA56E40712A51416E25E41223265541C8F73650712A51415BD6FF1C2326554106D69977712A51418F98C99723265541B74E20AA712A5141E68B26052426554190BB09F5712A5141EEEBD16C24265541610E4F07722A514141D79F7324265541B0A0B338722A5141F8FB49BE24265541CA1903C6722A5141990B062A25265541AE47E15A732A5141B81E859B252655414F9AF210742A51410C1FBAFD25265541E65F31D5742A514196D794672626554105ACBB62752A5141D891EDB326265541DD3F64657E2A5141393B7C8F2B26554114AE47C1882A51411F85EB01312655419A9999D9892A51411F85EBC12E26554152B81EB58E2A51415C8FC25531265541D5A80F538D2A5141DC8BDE2C3426554180B21CA1932A5141296824B7362655410CC3988B9C2A5141292860B93A2655410AD7A320A72A5141AE47E13A4026554166666646AE2A514152B81E9535265541D7A3703DB32A5141713D0A372E265541000000C0B42A514148E17A842E26554184299D53B42A5141AF48EAE52D265541A0330EB1B32A5141532319F82C26554175F178ADB22A5141A9C2ED972B26554122705D24B12A51411D6B7A9329265541828A0194AF2A51410B37808527265541492572A6AE2A5141651D674D2626554133219254AD2A5141E9BA8391242655413CEA3F0DAC2A5141417648C422265541E95E46FAAA2A51417CB8F93A2126554116848F90A92A51418BD20A581F2655416D09475BA82A5141A22113271E265541156D294DA72A5141B756D8731D26554146CBEAE4A52A51410D752F911C2655414B320471A42A5141C91D31A71B265541DD369678A32A514134C014FB1A265541F039C071A22A514121C50F0E1A26554122AFFB7BA12A51417C0E6F30192655415C8FC2F59F2A5141CDCCCC3C18265541522813C19E2A5141267B4B9C172655411573ECA39D2A51415B28FA96162655419A9999499C2A51419A9999591526554191EFA9969B2A514158B522491426554173D92DDF9A2A5141CFDFD0311326554193E215AE9A2A514124D7A4D91126554180C7A0919A2A51418EFEFBF510265541FD6727739A2A51417702310210265541D40B6B559A2A514198D5992F0F265541EB4E740F9A2A5141D3BCF18B0E2655419046FC6E992A514118EF94140D26554114D26411992A514141EAA7390C2655418C9591FB982A51416A789A060C265541C3F528EC982A5141295C8FE20B26554149AD8FD2982A5141C1106FC50B265541F2F525BC982A514116B8EEAB0B265541712D2785982A514131F25B6D0B2655419A999949982A51419A9999290B265541AB4878FD972A51411753BD160B265541E687A064972A5141A3D4DFF00A2655417B14AEE7962A51411F85EBD10A265541F9A6A0CC942A5141615DBF2D0E2655415966C6AD942A5141D4F7F95E0E2655417C431646942A5141384D6C040F265541E9A56202942A5141D3F572700F265541D54A3FAA932A5141EF7B15FD0F2655419E2F958B932A5141BA43032E1026554100AD7F70932A5141B3813A5910265541BD3ADA2E932A51418099F9C1102655411DB56706932A514148798302112655418C0864EB922A514194419E2D1126554192682BC6922A514127500269112655417CF5F793922A514136551CB9112655411B73B967922A5141EE20B5FF1126554120CA437A912A514125479A7A13265541E0E42152902A5141DC001E53152655416944033D902A5141C3EBD0741526554196600920902A5141720C0DA315265541D71C1904902A5141E656A1CF152655413E8347E08F2A51418187C80816265541765187CB8F2A5141D2C4E42916265541E92CF09F8F2A5141EB82726F16265541CE8BFF6C8F2A5141D863BAC016265541B524394F8F2A51419BD73CF0162655418536ED9E8E2A5141A0378A0918265541295C8F028D2A5141B81E859B1A265541AE7FDACA892A5141E0B159FD18265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489407 - 3512736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000350000001F85EB317E2A514148E17A742B2655410AD7A3C07E2A5141F6285CBF2B265541713D0A97832A5141AE47E14A2E26554114AE47C1882A51411F85EB01312655419A9999D9892A51411F85EBC12E26554152B81EB58E2A51415C8FC25531265541000000C08C2A5141AE47E15A352655418FC2F5888C2A5141C3F528DC38265541333333938B2A514152B81EA53A2655410AD7A3B0962A514133333333402655410AD7A3209A2A5141B81E851B3B265541F6285C0F9C2A5141000000F03B265541B81E853B9D2A5141A4703D8A3C265541CDCCCC6CA62A51411F85EB41412655410AD7A320A72A5141AE47E13A4026554166666646AE2A514152B81E9535265541D7A3703DB32A5141713D0A372E265541295C8F82B42A514185EB51782E265541000000C0B42A514148E17A842E26554166666666B32A5141AE47E18A2C2655418FC2F518AD2A51413333334324265541E17A14DEA92A514148E17AA41F26554114AE4741A82A5141D7A3700D1E265541295C8FB2A32A5141F6285C2F1B26554166666606A12A5141666666C6182655415C8FC2F59F2A5141CDCCCC3C18265541CDCCCCCC9E2A5141713D0AA7172655419A9999499C2A51419A99995915265541000000309C2A5141295C8F32152655417B14AED79A2A51416666662613265541A4703D5A9A2A5141AE47E13A0F265541C3F528EC982A5141295C8FE20B2655419A999949982A51419A9999290B2655417B14AEE7962A51411F85EBD10A2655419A9999E9952A5141713D0A670C265541295C8F028D2A5141B81E859B1A2655417B14AE57862A514114AE4741172655419A9999E9852A5141EC51B81E18265541AE47E1CA7D2A5141F6285CBF13265541E17A14CE752A5141F6285C8F0F2655417B14AEB7742A514185EB51681126554148E17AC4732A51410AD7A3A013265541295C8F92722A51411F85EBB116265541C3F5288C712A5141000000201A265541C3F528CC702A51415C8FC2E51C2655419A999979702A51413D0AD7B31F26554148E17AA4702A5141A4703D2A2126554100000000712A51417B14AE7722265541E17A149E712A514148E17AF42326554152B81E25722A5141F6285CAF24265541AE47E15A732A5141B81E859B25265541C3F528EC792A514166666626292655411F85EB317E2A514148E17A742B265541
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000AE7FDACA892A5141E0B159FD182655417B14AE57862A514114AE4741172655419A9999E9852A5141EC51B81E18265541E17A14CE752A5141F6285C8F0F265541E2F4B50A752A5141A35C43DB1026554166829964742A51411B36772A12265541ECCB0A39732A514199BE91061526554152269155722A5141D7FF057E172655419703139C712A5141F8D2BEEA192655417220F833712A5141E70603661B2655410577A1FB702A5141D8CC46361C265541BDD2E9D3702A5141B12E19C91C265541E20B2DBC702A51412DB1C8701D265541A77374AA702A5141EF83EA0A1E265541E8101495702A5141768BD7C41E265541F914F87D702A5141B8E3FCD91F2655412D5B5D85702A514181B78F1A20265541344E2A99702A5141177472C7202655416EB6CCEB702A51415C3C152E222655415EA56E40712A51416E25E41223265541C8F73650712A51415BD6FF1C2326554106D69977712A51418F98C99723265541B74E20AA712A5141E68B26052426554190BB09F5712A5141EEEBD16C24265541610E4F07722A514141D79F7324265541B0A0B338722A5141F8FB49BE24265541CA1903C6722A5141990B062A25265541AE47E15A732A5141B81E859B252655414F9AF210742A51410C1FBAFD25265541E65F31D5742A514196D794672626554105ACBB62752A5141D891EDB326265541DD3F64657E2A5141393B7C8F2B26554114AE47C1882A51411F85EB01312655419A9999D9892A51411F85EBC12E26554152B81EB58E2A51415C8FC25531265541D5A80F538D2A5141DC8BDE2C3426554180B21CA1932A5141296824B7362655410CC3988B9C2A5141292860B93A2655410AD7A320A72A5141AE47E13A4026554166666646AE2A514152B81E9535265541D7A3703DB32A5141713D0A372E265541000000C0B42A514148E17A842E26554184299D53B42A5141AF48EAE52D265541A0330EB1B32A5141532319F82C26554175F178ADB22A5141A9C2ED972B26554122705D24B12A51411D6B7A9329265541828A0194AF2A51410B37808527265541492572A6AE2A5141651D674D2626554133219254AD2A5141E9BA8391242655413CEA3F0DAC2A5141417648C422265541E95E46FAAA2A51417CB8F93A2126554116848F90A92A51418BD20A581F2655416D09475BA82A5141A22113271E265541156D294DA72A5141B756D8731D26554146CBEAE4A52A51410D752F911C2655414B320471A42A5141C91D31A71B265541DD369678A32A514134C014FB1A265541F039C071A22A514121C50F0E1A26554122AFFB7BA12A51417C0E6F30192655415C8FC2F59F2A5141CDCCCC3C18265541522813C19E2A5141267B4B9C172655411573ECA39D2A51415B28FA96162655419A9999499C2A51419A9999591526554191EFA9969B2A514158B522491426554173D92DDF9A2A5141CFDFD0311326554193E215AE9A2A514124D7A4D91126554180C7A0919A2A51418EFEFBF510265541FD6727739A2A51417702310210265541D40B6B559A2A514198D5992F0F265541EB4E740F9A2A5141D3BCF18B0E2655419046FC6E992A514118EF94140D26554114D26411992A514141EAA7390C2655418C9591FB982A51416A789A060C265541C3F528EC982A5141295C8FE20B26554149AD8FD2982A5141C1106FC50B265541F2F525BC982A514116B8EEAB0B265541712D2785982A514131F25B6D0B2655419A999949982A51419A9999290B265541AB4878FD972A51411753BD160B265541E687A064972A5141A3D4DFF00A2655417B14AEE7962A51411F85EBD10A265541F9A6A0CC942A5141615DBF2D0E2655415966C6AD942A5141D4F7F95E0E2655417C431646942A5141384D6C040F265541E9A56202942A5141D3F572700F265541D54A3FAA932A5141EF7B15FD0F2655419E2F958B932A5141BA43032E1026554100AD7F70932A5141B3813A5910265541BD3ADA2E932A51418099F9C1102655411DB56706932A514148798302112655418C0864EB922A514194419E2D1126554192682BC6922A514127500269112655417CF5F793922A514136551CB9112655411B73B967922A5141EE20B5FF1126554120CA437A912A514125479A7A13265541E0E42152902A5141DC001E53152655416944033D902A5141C3EBD0741526554196600920902A5141720C0DA315265541D71C1904902A5141E656A1CF152655413E8347E08F2A51418187C80816265541765187CB8F2A5141D2C4E42916265541E92CF09F8F2A5141EB82726F16265541CE8BFF6C8F2A5141D863BAC016265541B524394F8F2A51419BD73CF0162655418536ED9E8E2A5141A0378A0918265541295C8F028D2A5141B81E859B1A265541AE7FDACA892A5141E0B159FD18265541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489588 - 12356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000450000007B14AEC7DF265141EC51B85E6D2055415C8FC2F5E4265141F6285C2F6F20554100000010F026514133333303732055413D0AD7A3F4265141C3F528DC6E2055413D0AD783F7265141C3F5289C6B2055413D0AD7A3F9265141C3F528CC662055413D0AD783FA265141C3F5283C622055413D0AD723FA265141C3F528CC5C2055413D0AD7D3F926514148E17A145A205541A4703D1AF8265141000000D059205541D7A3701DF62651413D0AD7935920554152B81E45F42651413333337359205541AE47E1FAF026514152B81E755920554166666626EF265141000000505B2055415C8FC265EB265141EC51B8AE59205541713D0A27E7265141C3F5284C58205541E17A149EE9265141666666D650205541CDCCCC3CEA265141B81E853B4E205541CDCCCC5CE8265141A4703DAA4D20554152B81EF5E42651410AD7A3504C2055418FC2F548E2265141EC51B84E4B205541666666A6E0265141CDCCCCAC4A20554166666676DF265141666666664A2055413D0AD763DE265141F6285C6F4A20554114AE4751DB265141F6285CBF4A205541C3F528ECDC265141B81E851B45205541A4703DAADE26514152B81E553F20554114AE4721E0265141EC51B89E3A205541E17A141EE2265141713D0A273520554152B81EB5DA265141D7A370DD32205541AE47E12AD9265141D7A3709D3720554185EB5198D7265141F6285C0F3B20554148E17A84D6265141E17A149E3D205541D7A370ADD42651417B14AE9742205541EC51B81ED42651410000003044205541AE47E1EAD3265141713D0A4745205541EC51B8BED3265141B81E85AB4620554114AE4781D22651417B14AE87502055410AD7A370D22651415C8FC22551205541C3F528ACD1265141B81E859B542055418FC2F5F8CF2651418FC2F5D85920554148E17AD4CE265141A4703D1A5C2055410AD7A3A0CD2651411F85EB715F2055411F85EB11CC265141CDCCCCAC62205541D7A3707DCA265141A4703DEA64205541D7A3707DC9265141A4703D4A6620554152B81E65C82651417B14AE7768205541A4703D7AC52651415C8FC2156F2055411F85EB61C326514114AE477172205541666666A6C0265141CDCCCC6C762055410AD7A380D1265141A4703D9A7F205541C3F528BCD226514152B81E057E205541E17A14BED3265141CDCCCC7C7C205541E17A143ED52651410AD7A35079205541B81E859BD62651410AD7A310772055413D0AD7C3D6265141C3F5288C7220554114AE47C1D5265141AE47E1DA6D205541E17A145ED426514152B81E956B205541A4703DFAD32651415C8FC2156A205541F6285CAFD1265141A4703D7A66205541C3F5282CDE26514152B81E256D205541F6285C5FE4265141AE47E1AA672055417B14AE27E5265141295C8FE26620554185EB5148E6265141A4703D7A65205541E17A142EE7265141C3F528DC65205541713D0A87E52651411F85EBC16720554100000010E426514100000040692055415C8FC205E126514185EB51E86B2055417B14AEC7DF265141EC51B85E6D205541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000006C2C7B5BE0265141804B739B4A205541B70CA57BDF265141BFD3996C4A20554168DB36FBDE26514190371D7E4A205541FD00DDE3DE265141F5C046784A20554109A33D1EDF26514133EB299C4B2055419A63B9E4DF26514100EA828B4C205541E9942765E026514184089E174D205541EB802D60E12651411F7F741D4D205541F4BD6378E2265141427990D14C2055415B33936DE3265141A702BACB4C2055417AC884FFE32651417CCB67FF4B205541847EDF3EE3265141044FADAD4B205541216EDA6BE126514179DF61044B205541DF362A7AE0265141655B8EA24A2055416C2C7B5BE0265141804B739B4A205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489588 - 55060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000450000007B14AEC7DF265141EC51B85E6D2055415C8FC2F5E4265141F6285C2F6F20554100000010F026514133333303732055413D0AD7A3F4265141C3F528DC6E2055413D0AD783F7265141C3F5289C6B2055413D0AD7A3F9265141C3F528CC662055413D0AD783FA265141C3F5283C622055413D0AD723FA265141C3F528CC5C2055413D0AD7D3F926514148E17A145A205541A4703D1AF8265141000000D059205541D7A3701DF62651413D0AD7935920554152B81E45F42651413333337359205541AE47E1FAF026514152B81E755920554166666626EF265141000000505B2055415C8FC265EB265141EC51B8AE59205541713D0A27E7265141C3F5284C58205541E17A149EE9265141666666D650205541CDCCCC3CEA265141B81E853B4E205541CDCCCC5CE8265141A4703DAA4D20554152B81EF5E42651410AD7A3504C2055418FC2F548E2265141EC51B84E4B205541666666A6E0265141CDCCCCAC4A20554166666676DF265141666666664A2055413D0AD763DE265141F6285C6F4A20554114AE4751DB265141F6285CBF4A205541C3F528ECDC265141B81E851B45205541A4703DAADE26514152B81E553F20554114AE4721E0265141EC51B89E3A205541E17A141EE2265141713D0A273520554152B81EB5DA265141D7A370DD32205541AE47E12AD9265141D7A3709D3720554185EB5198D7265141F6285C0F3B20554148E17A84D6265141E17A149E3D205541D7A370ADD42651417B14AE9742205541EC51B81ED42651410000003044205541AE47E1EAD3265141713D0A4745205541EC51B8BED3265141B81E85AB4620554114AE4781D22651417B14AE87502055410AD7A370D22651415C8FC22551205541C3F528ACD1265141B81E859B542055418FC2F5F8CF2651418FC2F5D85920554148E17AD4CE265141A4703D1A5C2055410AD7A3A0CD2651411F85EB715F2055411F85EB11CC265141CDCCCCAC62205541D7A3707DCA265141A4703DEA64205541D7A3707DC9265141A4703D4A6620554152B81E65C82651417B14AE7768205541A4703D7AC52651415C8FC2156F2055411F85EB61C326514114AE477172205541666666A6C0265141CDCCCC6C762055410AD7A380D1265141A4703D9A7F205541C3F528BCD226514152B81E057E205541E17A14BED3265141CDCCCC7C7C205541E17A143ED52651410AD7A35079205541B81E859BD62651410AD7A310772055413D0AD7C3D6265141C3F5288C7220554114AE47C1D5265141AE47E1DA6D205541E17A145ED426514152B81E956B205541A4703DFAD32651415C8FC2156A205541F6285CAFD1265141A4703D7A66205541C3F5282CDE26514152B81E256D205541F6285C5FE4265141AE47E1AA672055417B14AE27E5265141295C8FE26620554185EB5148E6265141A4703D7A65205541E17A142EE7265141C3F528DC65205541713D0A87E52651411F85EBC16720554100000010E426514100000040692055415C8FC205E126514185EB51E86B2055417B14AEC7DF265141EC51B85E6D205541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000006C2C7B5BE0265141804B739B4A205541B70CA57BDF265141BFD3996C4A20554168DB36FBDE26514190371D7E4A205541FD00DDE3DE265141F5C046784A20554109A33D1EDF26514133EB299C4B2055419A63B9E4DF26514100EA828B4C205541E9942765E026514184089E174D205541EB802D60E12651411F7F741D4D205541F4BD6378E2265141427990D14C2055415B33936DE3265141A702BACB4C2055417AC884FFE32651417CCB67FF4B205541847EDF3EE3265141044FADAD4B205541216EDA6BE126514179DF61044B205541DF362A7AE0265141655B8EA24A2055416C2C7B5BE0265141804B739B4A205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489733 - 376336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000090000003D0AD7D34D2A514185EB5188E12A5541AE47E13A4B2A5141295C8FE2DF2A55410AD7A3B04B2A51413D0AD783F22A5541E17A140E4C2A51417B14AE67F82A55418FC2F5E8512A51410AD7A380F82A5541F6285CCF512A5141D7A370DDF52A554100000060512A5141B81E854BED2A55419A9999B9502A5141AE47E1FAE22A55413D0AD7D34D2A514185EB5188E12A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C8D8FC714B2A5141C0D06B9AE82A55410AD7A3B04B2A51413D0AD783F22A55410E3AE4E24B2A51412B79BFAEF52A5541A19D78CE512A51419EC1EDCBF52A55415D291CA5512A5141F509119DF22A5541DF18EEA4512A514149848599F22A554100000060512A5141B81E854BED2A5541EA7B3705512A51414C02DCAAE72A5541C68A1D05512A5141855440A9E72A5541C30812ED502A5141BF27AD2BE62A5541A37420CD502A5141EB45C130E42A5541037A8F444B2A514199529E6AE12A5541C8D8FC714B2A5141C0D06B9AE82A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490010 - 33104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E11A8A34514148E17A94892A55417B14AED78D345141295C8F82772A5541E17A143E8E345141CDCCCC8C752A5541000000B0873451415C8FC225742A55413D0AD703863451417B14AE57732A554185EB51E8803451410AD7A320722A55419A9999297B3451418FC2F598702A554148E17A547434514114AE47316F2A55419A999939723451413D0AD7436F2A5541713D0AE771345141E17A143E712A5541AE47E12A6E345141F6285C6F832A55411F85EBF16E34514114AE47A1842A5541AE47E1DA8834514152B81E558A2A5541AE47E11A8A34514148E17A94892A5541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000000000B0873451415C8FC225742A5541D89E6A778C345141EE4E852B752A5541E17A143E8E345141CDCCCC8C752A5541ECD142C38E34514151CF4EA9752A5541899883469334514133FD97A0762A55415D0067BA9B3451410909C86F782A5541A5BA3512A1345141E8B49094792A5541C3F5289CA7345141AE47E1FA7A2A55410AD7A350A93451410AD7A3D0782A5541F34978ABA4345141FA190867782A55415D337EA99F3451418C6B5E91772A55412EB85FA39934514113723381762A5541CFB5518095345141016C379D752A55415CD4342492345141715CA3B9742A5541A4703DCA8C345141A4703DCA722A5541BAAA28708834514120CC9EF3712A55417A249E89833451413C27F101712A554173C4679A7D345141F8FE38B36F2A554119DE7FFE7A345141B0FBF61B6F2A554181F7452C78345141577CAA876E2A55419C03AB4576345141A7D4B4366E2A5541CEAC2D1C73345141B648DAC66D2A5541F405E3D770345141D0948CE26D2A5541F1765B566E3451416D2AF00B6E2A5541687DBDC4653451417F16E2DA6E2A5541E0DA75016D3451415A1DFD236F2A554112EBED237134514110ED1D3E6F2A55416BB19E5E72345141BDA190426F2A554197DF8EFF72345141879F053D6F2A5541CDB62EF07434514115404C516F2A5541DD72DE39783451419CBE60FE6F2A55410170EA707C345141955821F0702A5541C43E31208034514103A157EB712A5541B5AB00AF83345141EB78B3C9722A55417C4857CB833451413A3D71D0722A55419C58AD188434514119E9D6E2722A5541C79DD2C38534514125837348732A55416FECA14A873451417E63F8F4732A5541000000B0873451415C8FC225742A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490010 - 75242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E11A8A34514148E17A94892A55417B14AED78D345141295C8F82772A5541E17A143E8E345141CDCCCC8C752A5541000000B0873451415C8FC225742A55413D0AD703863451417B14AE57732A554185EB51E8803451410AD7A320722A55419A9999297B3451418FC2F598702A554148E17A547434514114AE47316F2A55419A999939723451413D0AD7436F2A5541713D0AE771345141E17A143E712A5541AE47E12A6E345141F6285C6F832A55411F85EBF16E34514114AE47A1842A5541AE47E1DA8834514152B81E558A2A5541AE47E11A8A34514148E17A94892A5541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000000000B0873451415C8FC225742A5541D89E6A778C345141EE4E852B752A5541E17A143E8E345141CDCCCC8C752A5541ECD142C38E34514151CF4EA9752A5541899883469334514133FD97A0762A55415D0067BA9B3451410909C86F782A5541A5BA3512A1345141E8B49094792A5541C3F5289CA7345141AE47E1FA7A2A55410AD7A350A93451410AD7A3D0782A5541F34978ABA4345141FA190867782A55415D337EA99F3451418C6B5E91772A55412EB85FA39934514113723381762A5541CFB5518095345141016C379D752A55415CD4342492345141715CA3B9742A5541A4703DCA8C345141A4703DCA722A5541BAAA28708834514120CC9EF3712A55417A249E89833451413C27F101712A554173C4679A7D345141F8FE38B36F2A554119DE7FFE7A345141B0FBF61B6F2A554181F7452C78345141577CAA876E2A55419C03AB4576345141A7D4B4366E2A5541CEAC2D1C73345141B648DAC66D2A5541F405E3D770345141D0948CE26D2A5541F1765B566E3451416D2AF00B6E2A5541687DBDC4653451417F16E2DA6E2A5541E0DA75016D3451415A1DFD236F2A554112EBED237134514110ED1D3E6F2A55416BB19E5E72345141BDA190426F2A554197DF8EFF72345141879F053D6F2A5541CDB62EF07434514115404C516F2A5541DD72DE39783451419CBE60FE6F2A55410170EA707C345141955821F0702A5541C43E31208034514103A157EB712A5541B5AB00AF83345141EB78B3C9722A55417C4857CB833451413A3D71D0722A55419C58AD188434514119E9D6E2722A5541C79DD2C38534514125837348732A55416FECA14A873451417E63F8F4732A5541000000B0873451415C8FC225742A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490933 - 1486567
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F0000003D0AD7B38E2E5141713D0AE7F9345541B81E85CBAC2E5141F6285C0FEA345541F6285C1FC22E5141F6285C2FDE345541A4703D4AD62E5141CDCCCCFCD234554185EB51D8DA2E5141CDCCCC3CD934554148E17A04DC2E5141EC51B8DED734554152B81EA5DD2E51419A999959D73455413D0AD713DF2E51418FC2F5D8D834554148E17A84E82E5141D7A3709DD4345541C3F528ECEF2E514185EB5158D1345541B81E85FBED2E5141AE47E1DACE3455411F85EBE1EC2E514148E17A34CD3455411F85EBC1EB2E51411F85EB31CB345541713D0A47EB2E5141D7A370EDC9345541EC51B8DEEA2E5141E17A142EC83455411F85EBE1E62E5141713D0AC7C93455415C8FC255E72E5141333333D3C23455413D0AD7C3E72E514152B81E65C2345541C3F5283CE82E514133333333C2345541E17A14FEE92E514133333333C23455413D0AD7F3E92E5141D7A370FDC0345541713D0AD7E92E51419A9999E9BF345541AE47E17AE42E5141295C8F82C1345541EC51B8FEE32E51415C8FC2A5C1345541A4703D2ADB2E5141295C8F22C4345541D7A370EDDA2E51418FC2F5E8C43455411F85EB61DA2E5141AE47E1BAC53455419A999999D92E514133333383C63455417B14AEC7D82E514152B81E05C7345541F6285C6FD12E514152B81EC5CA3455410AD7A3B0C52E5141333333F3D03455419A999939BD2E514133333323D5345541000000A0B82E5141B81E851BD73455413D0AD763B62E514114AE4711D834554100000050B12E5141333333D3D934554152B81EF5A92E5141CDCCCC5CDC3455413D0AD773A02E51415C8FC295DF345541295C8F42962E5141F6285C4FE2345541F6285C7F952E51415C8FC2D5E3345541C3F528FC972E5141EC51B87EE5345541AE47E17A962E5141C3F528FCE6345541B81E85CB942E5141D7A3702DE634554166666626942E514148E17AA4E7345541E17A14CE912E51415C8FC255EB345541CDCCCCFC8C2E5141713D0AD7F23455417B14AE778D2E514114AE47E1F43455413D0AD7B38E2E5141713D0AE7F9345541
+</a>
+
+<b>
+01060000000100000001030000000100000078000000713D0A47062F51411F85EB614C345541401836FE072F5141C89307034C345541D1B4C0FA0C2F5141C737CA99463455417B14AE270F2F5141D7A3703D443455417398B53C0C2F51413F6E649442345541C3F5288C032F5141295C8FA23D345541CDCCCCAC012F5141CDCCCC3C3E34554114AE4731002F51417B14AE573F3455411D1B4329F92E51417E656FC042345541AE47E19AF32E514152B81EC544345541545F0E97EC2E5141828DAB2F463455417FC42900EA2E514117CCE9EF4634554120378B6FE72E51418039E32548345541A82E8733E62E5141B876A2F74834554136AC8830E42E514141DB434F4A345541E18AF80AE22E5141F9AA0FEB4B3455411CE952F0DD2E514117D053FE4E34554126CE0227DD2E514121CF8B694F3455410AD7A3B0DD2E5141AE47E1BA503455413D0AD743DF2E514100000070553455413460B5A4E12E51412448E19858345541CBA4002AE22E514138C3A84B5A345541EB2BD970E22E5141BD367C0E5B345541106AF19DE32E51416CB8005F5C3455410B9A583DE42E51417C6F40455D3455415AFF7A72E42E514171CF0E845E3455415AFF7A72E42E514146A8047C5F34554160CF13D3E32E51417BB6B5096034554100B3B1B7E22E514106FA212D603455417B3FDEF4E12E5141CB1BD83E603455411C237CD9E02E5141E67249E65F34554162A1F788DF2E51419BDDBF115F3455413D63DF5BDE2E5141903D8E50603455418FC2F588DD2E514152B81EE5613455419A9999E9DC2E51415C8FC2A5623455418FC2F538DD2E5141F6285C7F653455413D0AD7E3DB2E5141AE47E1DA6634554166666636DB2E51410AD7A32069345541E17A149EDC2E51418FC2F5686B345541D7A3703DDC2E5141B81E859B6D345541295C8FF2DC2E5141333333F36F3455419A9999C9DB2E5141E17A148E71345541CDCCCC8CDB2E5141F6285C6F73345541AE47E19ADA2E51417B14AE37743455412ABA9E98D92E51411266FF6F793455411F85EBB1D82E514114AE47317D3455416E5FF005D92E514141FBAA748034554102EA177BDA2E5141CAF6A300853455415C7E188FDA2E51410871A77885345541AD4576A2DB2E5141590E7CEE87345541FB2CC77FDC2E5141C6B828ED8934554140866DC6DC2E51416C2B702D8B3455412DE13BBCDC2E5141BFADA2ED8B345541C654F84FDC2E5141ADFCB035913455411D197108DC2E51417C45F9B294345541A1722138DB2E51418B37AE2B96345541713D0AB7D92E5141AE47E13A97345541C3AB1B39DC2E5141C60620BA9C3455419A9999B9DE2E51410AD7A320A2345541F61D0B24E02E51417C45984EA5345541D6DF58E7E02E5141106B5E82A63455418C9D13D7E32E5141B8DBFF22AB3455415FC21772E52E5141ABA675B2AD3455417A8FB106E72E5141FB0087B3B03455413D0AD773E82E51419A999969B3345541FBBF931DE92E5141D091E4E7B53455418480BC9AE92E51418405FD1EBA34554136A56524EA2E5141CD0721D0BF3455412993DE5EEA2E51418B5D0F3BC23455410B3DC9A4EA2E51411497E19AC33455415D75F820EB2E51418A160995C53455414749D9F2EA2E5141BD89252BC7345541B503AAEDEB2E51410F2EFA2FCA3455416AB810F6EC2E5141739788B3CC3455412B838FF0ED2E51415ADE70CACE3455413EB1EB5FEF2E51410678D84DD13455414F204F9DEF2E514104B2B0D4D1345541112CF990F02E51415BDABE67D33455417F73D609F22E514176FEEB31D6345541F8E17D3FF22E51415367A494D2345541B81E85ABF22E5141E17A144ED0345541D1ADD9FDF22E51413B75DF47C8345541F2AF8A01F32E5141702F9F21C13455412A68202BF22E5141B188C0CBBC34554174000E89F12E51417EF7B3CEB93455413E3ADCBCF02E5141F888B9EEB734554114AE47B1EE2E514100000020B33455415C8FC2B5EC2E514133333333AD3455410AD7A380E92E5141A4703D6AA13455410AD7A330E92E5141CDCCCCAC9C345541333333C3E92E5141EC51B89E97345541B81E859BEE2E51410AD7A3908D345541EC51B8AEF12E5141D7A370AD873455418FC2F538F02E514152B81EC583345541E17A145EEC2E5141295C8F0281345541E17A141EEB2E514148E17AD47D3455410AD7A320EA2E5141713D0A3777345541AE47E18AEA2E514114AE47C1703455413D0AD7E3EA2E51419A9999496D345541B81E850BEB2E5141AE47E1BA6B3455415C8FC2E5EB2E514185EB51686934554148E17A54FA2E5141333333E36D345541CDCCCC0CFC2E514185EB51086A34554114AE47C1FA2E5141E17A141E69345541713D0A67F82E51411F85EB115C34554129A07F52F32E5141E0B18A765C345541A1A012BFF12E51411FED262C5C34554110D0983CF22E5141DA76D4E159345541BFDA0D79F22E514196B8298158345541D948CE3EEF2E514144C39EBD583455411EF5BC8FEA2E5141C8A6661C58345541CE16B379E82E51411F0C4285573455418938A963E62E514101255312583455417240DE96E22E5141C98DC3E85734554100000030E42E5141EC51B81E57345541E17A141EEB2E5141713D0AB7553455413D0AD783F22E5141EC51B88E553455411F85EB71F92E51413D0AD7D354345541CDCCCCDCFE2E5141C3F528BC53345541713D0A47062F51411F85EB614C345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490933 - 3337101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F0000003D0AD7B38E2E5141713D0AE7F9345541B81E85CBAC2E5141F6285C0FEA345541F6285C1FC22E5141F6285C2FDE345541A4703D4AD62E5141CDCCCCFCD234554185EB51D8DA2E5141CDCCCC3CD934554148E17A04DC2E5141EC51B8DED734554152B81EA5DD2E51419A999959D73455413D0AD713DF2E51418FC2F5D8D834554148E17A84E82E5141D7A3709DD4345541C3F528ECEF2E514185EB5158D1345541B81E85FBED2E5141AE47E1DACE3455411F85EBE1EC2E514148E17A34CD3455411F85EBC1EB2E51411F85EB31CB345541713D0A47EB2E5141D7A370EDC9345541EC51B8DEEA2E5141E17A142EC83455411F85EBE1E62E5141713D0AC7C93455415C8FC255E72E5141333333D3C23455413D0AD7C3E72E514152B81E65C2345541C3F5283CE82E514133333333C2345541E17A14FEE92E514133333333C23455413D0AD7F3E92E5141D7A370FDC0345541713D0AD7E92E51419A9999E9BF345541AE47E17AE42E5141295C8F82C1345541EC51B8FEE32E51415C8FC2A5C1345541A4703D2ADB2E5141295C8F22C4345541D7A370EDDA2E51418FC2F5E8C43455411F85EB61DA2E5141AE47E1BAC53455419A999999D92E514133333383C63455417B14AEC7D82E514152B81E05C7345541F6285C6FD12E514152B81EC5CA3455410AD7A3B0C52E5141333333F3D03455419A999939BD2E514133333323D5345541000000A0B82E5141B81E851BD73455413D0AD763B62E514114AE4711D834554100000050B12E5141333333D3D934554152B81EF5A92E5141CDCCCC5CDC3455413D0AD773A02E51415C8FC295DF345541295C8F42962E5141F6285C4FE2345541F6285C7F952E51415C8FC2D5E3345541C3F528FC972E5141EC51B87EE5345541AE47E17A962E5141C3F528FCE6345541B81E85CB942E5141D7A3702DE634554166666626942E514148E17AA4E7345541E17A14CE912E51415C8FC255EB345541CDCCCCFC8C2E5141713D0AD7F23455417B14AE778D2E514114AE47E1F43455413D0AD7B38E2E5141713D0AE7F9345541
+</a>
+
+<b>
+01060000000100000001030000000100000078000000713D0A47062F51411F85EB614C345541401836FE072F5141C89307034C345541D1B4C0FA0C2F5141C737CA99463455417B14AE270F2F5141D7A3703D443455417398B53C0C2F51413F6E649442345541C3F5288C032F5141295C8FA23D345541CDCCCCAC012F5141CDCCCC3C3E34554114AE4731002F51417B14AE573F3455411D1B4329F92E51417E656FC042345541AE47E19AF32E514152B81EC544345541545F0E97EC2E5141828DAB2F463455417FC42900EA2E514117CCE9EF4634554120378B6FE72E51418039E32548345541A82E8733E62E5141B876A2F74834554136AC8830E42E514141DB434F4A345541E18AF80AE22E5141F9AA0FEB4B3455411CE952F0DD2E514117D053FE4E34554126CE0227DD2E514121CF8B694F3455410AD7A3B0DD2E5141AE47E1BA503455413D0AD743DF2E514100000070553455413460B5A4E12E51412448E19858345541CBA4002AE22E514138C3A84B5A345541EB2BD970E22E5141BD367C0E5B345541106AF19DE32E51416CB8005F5C3455410B9A583DE42E51417C6F40455D3455415AFF7A72E42E514171CF0E845E3455415AFF7A72E42E514146A8047C5F34554160CF13D3E32E51417BB6B5096034554100B3B1B7E22E514106FA212D603455417B3FDEF4E12E5141CB1BD83E603455411C237CD9E02E5141E67249E65F34554162A1F788DF2E51419BDDBF115F3455413D63DF5BDE2E5141903D8E50603455418FC2F588DD2E514152B81EE5613455419A9999E9DC2E51415C8FC2A5623455418FC2F538DD2E5141F6285C7F653455413D0AD7E3DB2E5141AE47E1DA6634554166666636DB2E51410AD7A32069345541E17A149EDC2E51418FC2F5686B345541D7A3703DDC2E5141B81E859B6D345541295C8FF2DC2E5141333333F36F3455419A9999C9DB2E5141E17A148E71345541CDCCCC8CDB2E5141F6285C6F73345541AE47E19ADA2E51417B14AE37743455412ABA9E98D92E51411266FF6F793455411F85EBB1D82E514114AE47317D3455416E5FF005D92E514141FBAA748034554102EA177BDA2E5141CAF6A300853455415C7E188FDA2E51410871A77885345541AD4576A2DB2E5141590E7CEE87345541FB2CC77FDC2E5141C6B828ED8934554140866DC6DC2E51416C2B702D8B3455412DE13BBCDC2E5141BFADA2ED8B345541C654F84FDC2E5141ADFCB035913455411D197108DC2E51417C45F9B294345541A1722138DB2E51418B37AE2B96345541713D0AB7D92E5141AE47E13A97345541C3AB1B39DC2E5141C60620BA9C3455419A9999B9DE2E51410AD7A320A2345541F61D0B24E02E51417C45984EA5345541D6DF58E7E02E5141106B5E82A63455418C9D13D7E32E5141B8DBFF22AB3455415FC21772E52E5141ABA675B2AD3455417A8FB106E72E5141FB0087B3B03455413D0AD773E82E51419A999969B3345541FBBF931DE92E5141D091E4E7B53455418480BC9AE92E51418405FD1EBA34554136A56524EA2E5141CD0721D0BF3455412993DE5EEA2E51418B5D0F3BC23455410B3DC9A4EA2E51411497E19AC33455415D75F820EB2E51418A160995C53455414749D9F2EA2E5141BD89252BC7345541B503AAEDEB2E51410F2EFA2FCA3455416AB810F6EC2E5141739788B3CC3455412B838FF0ED2E51415ADE70CACE3455413EB1EB5FEF2E51410678D84DD13455414F204F9DEF2E514104B2B0D4D1345541112CF990F02E51415BDABE67D33455417F73D609F22E514176FEEB31D6345541F8E17D3FF22E51415367A494D2345541B81E85ABF22E5141E17A144ED0345541D1ADD9FDF22E51413B75DF47C8345541F2AF8A01F32E5141702F9F21C13455412A68202BF22E5141B188C0CBBC34554174000E89F12E51417EF7B3CEB93455413E3ADCBCF02E5141F888B9EEB734554114AE47B1EE2E514100000020B33455415C8FC2B5EC2E514133333333AD3455410AD7A380E92E5141A4703D6AA13455410AD7A330E92E5141CDCCCCAC9C345541333333C3E92E5141EC51B89E97345541B81E859BEE2E51410AD7A3908D345541EC51B8AEF12E5141D7A370AD873455418FC2F538F02E514152B81EC583345541E17A145EEC2E5141295C8F0281345541E17A141EEB2E514148E17AD47D3455410AD7A320EA2E5141713D0A3777345541AE47E18AEA2E514114AE47C1703455413D0AD7E3EA2E51419A9999496D345541B81E850BEB2E5141AE47E1BA6B3455415C8FC2E5EB2E514185EB51686934554148E17A54FA2E5141333333E36D345541CDCCCC0CFC2E514185EB51086A34554114AE47C1FA2E5141E17A141E69345541713D0A67F82E51411F85EB115C34554129A07F52F32E5141E0B18A765C345541A1A012BFF12E51411FED262C5C34554110D0983CF22E5141DA76D4E159345541BFDA0D79F22E514196B8298158345541D948CE3EEF2E514144C39EBD583455411EF5BC8FEA2E5141C8A6661C58345541CE16B379E82E51411F0C4285573455418938A963E62E514101255312583455417240DE96E22E5141C98DC3E85734554100000030E42E5141EC51B81E57345541E17A141EEB2E5141713D0AB7553455413D0AD783F22E5141EC51B88E553455411F85EB71F92E51413D0AD7D354345541CDCCCCDCFE2E5141C3F528BC53345541713D0A47062F51411F85EB614C345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 1367982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441F6285C2F203E51410AD7A3E079DF5441F6285CDF1E3E51410AD7A3207CDF5441EC51B8CE1A3E514114AE477180DF5441E17A149E153E51411F85EB4185DF544148E17A540B3E5141333333338EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF54418C17E9CF0B3E51418502B36F8EDF544129F0F69C153E5141DA2FCEA885DF54410AF9F1901A3E514188C0A24A81DF5441F6285CDF1E3E51410AD7A3207CDF5441B34FF51C203E51417C920ED179DF54416F82EBCA203E5141C0F39DE476DF54417E704589213E514107E6644974DF5441F39BBFC5213E51411BD0424E73DF54415A5BC801223E5141E58D2BD071DF5441379F0637223E5141B3E8007270DF5441F6F740E3223E5141C73A09656EDF54419553A01D233E514199CB33BE6DDF544139C2FD3D233E5141D7BEC9406DDF5441A91739AB233E5141663351B46BDF54419E7C9DB1243E5141B1C00BF467DF544157CC84D9253E5141910B99D563DF5441F8C74F05213E514156FC71AA60DF544146D027C0173E51410526D7895ADF54414C3B88420D3E5141AC6CC94553DF544152958A54103E5141D2E986684FDF5441C6DDF7AF103E51411B60C5004FDF5441FB86D06D183E5141DCCEFF5B45DF5441B235C424163E51417C0AAAF641DF54410B68F21B143E514193D927FA3EDF544107012FBB113E51417891E85C3CDF5441000000D00B3E5141F6285CAF35DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 1367993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441F6285C2F203E51410AD7A3E079DF5441F6285CDF1E3E51410AD7A3207CDF5441EC51B8CE1A3E514114AE477180DF5441E17A149E153E51411F85EB4185DF544148E17A540B3E5141333333338EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544107012FBB113E51417891E85C3CDF54410B68F21B143E514193D927FA3EDF5441B235C424163E51417C0AAAF641DF5441FB86D06D183E5141DCCEFF5B45DF54414C3B88420D3E5141AC6CC94553DF544146D027C0173E51410526D7895ADF5441F8C74F05213E514156FC71AA60DF544157CC84D9253E5141910B99D563DF54419E7C9DB1243E5141B1C00BF467DF5441A91739AB233E5141663351B46BDF544139C2FD3D233E5141D7BEC9406DDF54419553A01D233E514199CB33BE6DDF5441F6F740E3223E5141C73A09656EDF5441379F0637223E5141B3E8007270DF54415A5BC801223E5141E58D2BD071DF5441F39BBFC5213E51411BD0424E73DF54417E704589213E514107E6644974DF54416F82EBCA203E5141C0F39DE476DF5441B34FF51C203E51417C920ED179DF5441F6285CDF1E3E51410AD7A3207CDF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 3650447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441F6285C2F203E51410AD7A3E079DF5441F6285CDF1E3E51410AD7A3207CDF5441EC51B8CE1A3E514114AE477180DF5441E17A149E153E51411F85EB4185DF544148E17A540B3E5141333333338EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF544185EB5108EE3D5141D7A3700D3ADF5441F6285CFFEA3D51418FC2F5083DDF54417B14AEE7E83D5141713D0AE73FDF544114AE4761E73D514152B81E6542DF5441D7A3700DE73D514148E17A6444DF5441AE47E14AE73D51415C8FC27546DF5441713D0AC7E73D51416666669648DF544148E17AB4E83D51417B14AEA74ADF544133333363E93D51419A9999994BDF54411F85EBE1EB3D5141CDCCCCDC4DDF54410AD7A390EB3D5141CDCCCC7C4EDF5441EC51B8BEEA3D5141C3F5286C4FDF544185EB5158E83D51418FC2F57851DF544148E17AD4E73D514185EB51F852DF544114AE4711E73D514185EB515854DF54410AD7A3B0E63D51417B14AEB754DF544185EB5128E43D514152B81E1558DF544133333383E23D5141333333635ADF5441F6285CDFE13D5141295C8F425CDF5441AE47E1BAE13D5141333333735EDF5441AE47E1CAE13D5141333333235FDF54418FC2F518E23D514148E17AF45FDF544185EB5178E23D514152B81E8560DF5441713D0A07E53D514185EB51D862DF544152B81E45E83D5141D7A370CD65DF544133333393EA3D51410AD7A34068DF54410AD7A300ED3D51413D0AD7336BDF5441D7A370EDEE3D51415C8FC2256EDF5441AE47E1AAF03D514185EB51E870DF54413D0AD753F63D5141EC51B8DE77DF5441C3F5284CFC3D514148E17A147FDF5441333333E3023E5141B81E85FB87DF5441000000C0043E5141D7A3706D8ADF5441F6285C4F053E5141E17A14EE8ADF5441F6285C6F063E5141EC51B87E8BDF544100000080093E514114AE47318DDF544148E17A540B3E5141333333338EDF54418C17E9CF0B3E51418502B36F8EDF544129F0F69C153E5141DA2FCEA885DF54410AF9F1901A3E514188C0A24A81DF5441F6285CDF1E3E51410AD7A3207CDF5441B34FF51C203E51417C920ED179DF54416F82EBCA203E5141C0F39DE476DF54417E704589213E514107E6644974DF5441F39BBFC5213E51411BD0424E73DF54415A5BC801223E5141E58D2BD071DF5441379F0637223E5141B3E8007270DF5441F6F740E3223E5141C73A09656EDF54419553A01D233E514199CB33BE6DDF544139C2FD3D233E5141D7BEC9406DDF5441A91739AB233E5141663351B46BDF54419E7C9DB1243E5141B1C00BF467DF544157CC84D9253E5141910B99D563DF5441F8C74F05213E514156FC71AA60DF544146D027C0173E51410526D7895ADF54414C3B88420D3E5141AC6CC94553DF544152958A54103E5141D2E986684FDF5441C6DDF7AF103E51411B60C5004FDF5441FB86D06D183E5141DCCEFF5B45DF5441B235C424163E51417C0AAAF641DF54410B68F21B143E514193D927FA3EDF544107012FBB113E51417891E85C3CDF5441000000D00B3E5141F6285CAF35DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 3653884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441F6285C2F203E51410AD7A3E079DF5441F6285CDF1E3E51410AD7A3207CDF5441EC51B8CE1A3E514114AE477180DF5441E17A149E153E51411F85EB4185DF544148E17A540B3E5141333333338EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441666666A66D3E5141CDCCCC6C9CDF5441A4703D0A703E5141D7A3706D97DF5441D7A370BD6F3E514152B81E8594DF54410AD7A3406D3E51415C8FC2D593DF5441295C8F826B3E51417B14AEB793DF54413D0AD7E3693E51418FC2F58893DF544152B81EE5683E51419A99995993DF5441666666E6673E5141B81E857B93DF54417B14AE97663E5141B81E854B93DF544185EB5188653E5141CDCCCC6C93DF544185EB5148643E5141EC51B89E93DF54418FC2F5A8633E5141EC51B87E93DF5441CDCCCC0C643E5141AE47E14A91DF54410AD7A360643E51418FC2F5388FDF5441D7A370BD5A3E5141C3F5284C8BDF544114AE4711533E5141C3F5288C89DF5441D7A370DD4E3E5141CDCCCCFC8ADF5441B81E854B4C3E5141D7A3705D8BDF5441C3F528CC4A3E5141CDCCCCDC8ADF5441EC51B83E453E5141A4703DEA87DF544148E17A44403E51417B14AEF783DF5441B81E851B393E5141333333237EDF54410AD7A3D0313E5141EC51B82E78DF54411F85EB91313E5141E17A148E77DF54415C8FC205313E5141D7A3705D75DF5441EC51B8AE303E5141C3F528EC70DF5441295C8FB2303E5141AE47E12A6FDF5441C3F5289C313E5141A4703D0A6BDF5441B81E850B333E51418FC2F52864DF544114AE4731333E514185EB518861DF544133333333353E514185EB51C861DF5441CDCCCCFC353E514185EB51285DDF544148E17AB4363E51417B14AEA759DF54417B14AE27393E5141713D0A3750DF5441F6285C1F3C3E514185EB512844DF5441666666E63C3E51419A99990940DF544148E17AD43D3E5141E17A14FE37DF544114AE47813A3E5141CDCCCC1C38DF5441C3F5285C353E5141C3F5287C38DF54417B14AE77313E5141B81E85CB38DF54413D0AD7532F3E5141B81E853B39DF5441F6285CEF2C3E5141AE47E1FA39DF5441C3F5282C2B3E5141A4703DFA3ADF5441666666A6283E51419A9999C93CDF5441F6285C3F263E514185EB51383FDF5441B81E85AB243E51417B14AE6740DF54418FC2F568233E51417B14AE1741DF544166666626223E51417B14AE7741DF54413D0AD713203E5141713D0A9741DF544114AE47711D3E51416666663641DF5441000000B01B3E51415C8FC2A540DF5441EC51B8DE193E514152B81EC53FDF5441F6285C9F173E514152B81E653EDF5441F6285C6F143E51413D0AD7F33BDF5441F6285C9F103E5141295C8F0239DF5441000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544107012FBB113E51417891E85C3CDF54410B68F21B143E514193D927FA3EDF5441B235C424163E51417C0AAAF641DF5441FB86D06D183E5141DCCEFF5B45DF54414C3B88420D3E5141AC6CC94553DF544146D027C0173E51410526D7895ADF5441F8C74F05213E514156FC71AA60DF544157CC84D9253E5141910B99D563DF54419E7C9DB1243E5141B1C00BF467DF5441A91739AB233E5141663351B46BDF544139C2FD3D233E5141D7BEC9406DDF54419553A01D233E514199CB33BE6DDF5441F6F740E3223E5141C73A09656EDF5441379F0637223E5141B3E8007270DF54415A5BC801223E5141E58D2BD071DF5441F39BBFC5213E51411BD0424E73DF54417E704589213E514107E6644974DF54416F82EBCA203E5141C0F39DE476DF5441B34FF51C203E51417C920ED179DF5441F6285CDF1E3E51410AD7A3207CDF54410D00000066666666293E51418FC2F5683DDF54417B14AEB72A3E51418FC2F5783DDF54418FC2F5382C3E51419A9999F93DDF54417B14AE572D3E514185EB51F83EDF5441E17A14FE313E51416666664648DF5441666666662F3E51415C8FC2254BDF544148E17AE42E3E51415C8FC2454BDF54411F85EBF1253E5141666666A646DF544152B81E25243E5141713D0AE743DF5441713D0A77243E5141666666E642DF5441D7A3703D263E514185EB517840DF54413D0AD773283E51418FC2F5383EDF544166666666293E51418FC2F5683DDF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492829 - 4031513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D00000085EB5128B3535141B81E85BBD0DC544152B81E75BC53514133333353D0DC544152B81EA5C153514185EB51A8D0DC5441D7A370EDC6535141AE47E1FAD0DC5441F6285C4FC753514148E17A34CDDC5441000000B0C653514148E17A74CBDC5441EC51B8AEC5535141295C8F92C7DC5441295C8F12C4535141F6285C5FC1DC544148E17A94C3535141E17A14DEBFDC5441B81E85DBC253514114AE47A1BEDC5441D7A3701DC253514114AE4791BDDC5441CDCCCC5CC1535141D7A370CDBCDC5441000000D0BE5351413D0AD7E3BADC5441AE47E1BABD535141000000F0B9DC54413D0AD763BD535141F6285C4FB9DC5441CDCCCC5CBD535141D7A3709DB8DC5441713D0A87BD535141E17A14BEB7DC5441E17A14FEBD5351415C8FC205B7DC54419A999929BF535141666666D6B5DC5441AE47E11AC0535141713D0A07B5DC5441F6285CCFC1535141713D0AD7B3DC544152B81E05C4535141C3F5288CB2DC54415C8FC235BD53514166666646A7DC54415C8FC2F5AF53514133333353A7DC54419A999949AA5351410AD7A3A0A7DC54417B14AE07A8535141EC51B86EA9DC5441AE47E16AA4535141EC51B88EAFDC54415C8FC2B5A2535141295C8F52B3DC54418FC2F5589F5351413D0AD773BBDC54418FC2F5889C535141C3F5283CC4DC5441A4703D7A9A535141713D0AB7CBDC5441B81E851B95535141D7A3701DCCDC54413D0AD7B3935351410AD7A390CBDC5441666666E692535141C3F5285CCADC544148E17A24915351411F85EBC1C9DC544133333393895351418FC2F5F8DADC54410000005095535141D7A370FDD9DC54410AD7A3D09953514185EB5158DDDC5441E17A142E9E53514114AE4751D8DC5441AE47E1AAA153514114AE4791D6DC544152B81E65A353514100000010D6DC5441C3F5284CA65351417B14AEA7D5DC5441C3F5289CA55351411F85EB61D1DC544100000050AC5351417B14AE17D1DC544185EB5128B3535141B81E85BBD0DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000FC0AE5EA9A5351412A717C1DCADC5441D18E7E9B9A5351410B88FD70CBDC5441291E998D9A53514102F9A970CBDC54410666A25D955351413ADF7851CBDC54412D3DA3A8945351410CE077F0CBDC5441293F29479453514173A51846CCDC5441508F6B3C90535141C1977A54D7DC5441315AECA092535141AD4D65A1D7DC544113AF7CDF98535141BCB5E7D2D7DC5441FACA8DE29C535141C6587D33D9DC5441E17A142E9E53514114AE4751D8DC5441AE47E1AAA153514114AE4791D6DC544152B81E65A353514100000010D6DC5441C3F5284CA65351417B14AEA7D5DC5441C3F5289CA55351411F85EB61D1DC544100000050AC5351417B14AE17D1DC544185EB5128B3535141B81E85BBD0DC5441AE47E13AB65351418FC2F598D0DC544152B81E75BC53514133333353D0DC544152B81EA5C153514185EB51A8D0DC54411B508650C753514179F30A2FD1DC544164B2F85BC45351412700D8AAC5DC54418707204BC45351419DFBC453C5DC5441BAA5F0A4C3535141801A0C86C3DC5441DEFEA01AC353514199138F9DC1DC5441DB445493C2535141D892A145BFDC5441CC3A0C1EC15351419F5FED4FBDDC5441AA435390BC535141CC76C9A2B9DC5441CDCCCC5CBD535141D7A3709DB8DC5441713D0A87BD535141E17A14BEB7DC5441E17A14FEBD5351415C8FC205B7DC54419A999929BF535141666666D6B5DC5441AE47E11AC0535141713D0A07B5DC5441F6285CCFC1535141713D0AD7B3DC5441BA654999C3535141193FAAD9B1DC5441E16478E0BC5351415A5C0A76A7DC5441D38C7584AD5351412AB38B74A7DC544115DEA796AB535141153C832AA8DC5441799E6E20A95351410D21C012A9DC54414B54751AA75351419E05EE00ABDC5441282FAE5CA2535141ECCEC71AB3DC5441C43B04399D53514111093642C0DC5441FC0AE5EA9A5351412A717C1DCADC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492829 - 4031532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000085EB5128B3535141B81E85BBD0DC544152B81E75BC53514133333353D0DC544152B81EA5C153514185EB51A8D0DC5441D7A370EDC6535141AE47E1FAD0DC5441F6285C4FC753514148E17A34CDDC5441000000B0C653514148E17A74CBDC5441EC51B8AEC5535141295C8F92C7DC5441295C8F12C4535141F6285C5FC1DC544148E17A94C3535141E17A14DEBFDC5441B81E85DBC253514114AE47A1BEDC5441D7A3701DC253514114AE4791BDDC5441CDCCCC5CC1535141D7A370CDBCDC5441000000D0BE5351413D0AD7E3BADC5441AE47E1BABD535141000000F0B9DC54413D0AD763BD535141F6285C4FB9DC5441CDCCCC5CBD535141D7A3709DB8DC5441713D0A87BD535141E17A14BEB7DC5441E17A14FEBD5351415C8FC205B7DC54419A999929BF535141666666D6B5DC5441AE47E11AC0535141713D0A07B5DC5441F6285CCFC1535141713D0AD7B3DC544152B81E05C4535141C3F5288CB2DC54415C8FC235BD53514166666646A7DC54415C8FC2F5AF53514133333353A7DC54419A999949AA5351410AD7A3A0A7DC54417B14AE07A8535141EC51B86EA9DC5441AE47E16AA4535141EC51B88EAFDC54415C8FC2B5A2535141295C8F52B3DC54418FC2F5589F5351413D0AD773BBDC54418FC2F5889C535141C3F5283CC4DC5441A4703D7A9A535141713D0AB7CBDC5441B81E851B95535141D7A3701DCCDC54413D0AD7B3935351410AD7A390CBDC5441666666E692535141C3F5285CCADC544148E17A24915351411F85EBC1C9DC544133333393895351418FC2F5F8DADC54410000005095535141D7A370FDD9DC54410AD7A3D09953514185EB5158DDDC5441E17A142E9E53514114AE4751D8DC5441AE47E1AAA153514114AE4791D6DC544152B81E65A353514100000010D6DC5441C3F5284CA65351417B14AEA7D5DC5441C3F5289CA55351411F85EB61D1DC544100000050AC5351417B14AE17D1DC544185EB5128B3535141B81E85BBD0DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000E16478E0BC5351415A5C0A76A7DC5441D82E2B0EB95351419155BA15A0DC544170FD8373B753514184C4CF8E9DDC544155D97B39B75351418277AE6A9CDC54417E294FB5B35351411F86D2D09EDC544131C17E2AAD53514154A9DB53A3DC54413F74BDE89D535141A31BC82DAEDC5441547DBCA199535141626C1F54B3DC5441D12C5E409653514192CF67B4BBDC5441A733E05B91535141E08DF92EC8DC5441E22B309D91535141413FBABAC9DC54415A2DAE079353514130C6782CCBDC54410666A25D955351413ADF7851CBDC5441D18E7E9B9A5351410B88FD70CBDC5441FC0AE5EA9A5351412A717C1DCADC5441C43B04399D53514111093642C0DC5441282FAE5CA2535141ECCEC71AB3DC54414B54751AA75351419E05EE00ABDC5441799E6E20A95351410D21C012A9DC544115DEA796AB535141153C832AA8DC5441D38C7584AD5351412AB38B74A7DC5441E16478E0BC5351415A5C0A76A7DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492880 - 4031513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000001F85EB41C0535141EC51B88EA1DC5441AE47E11ABF5351415C8FC2259DDC5441D7A3704DBE53514185EB51E89ADC544114AE4731BD535141333333A398DC54415C8FC205BB5351417B14AEE794DC5441D7A3708DB75351418FC2F5A89BDC5441F6285C1FB753514152B81E659CDC5441713D0AB7B6535141666666169DDC5441A4703D2AB6535141295C8FF29DDC544166666666B5535141295C8FC29EDC544148E17A74B3535141AE47E14AA0DC54419A9999A9AE5351418FC2F558A2DC5441EC51B89EA553514148E17AD4A8DC544166666626A05351411F85EBB1ACDC5441F6285C6F9E5351410AD7A380AEDC544114AE47B198535141A4703D1AB8DC54410AD7A3B095535141A4703D1ABEDC544148E17A24915351411F85EBC1C9DC5441666666E692535141C3F5285CCADC54413D0AD7B3935351410AD7A390CBDC5441B81E851B95535141D7A3701DCCDC5441A4703D7A9A535141713D0AB7CBDC54418FC2F5889C535141C3F5283CC4DC54418FC2F5589F5351413D0AD773BBDC54415C8FC2B5A2535141295C8F52B3DC5441AE47E16AA4535141EC51B88EAFDC54417B14AE07A8535141EC51B86EA9DC54419A999949AA5351410AD7A3A0A7DC54415C8FC2F5AF53514133333353A7DC54415C8FC235BD53514166666646A7DC544152B81E05C4535141C3F5288CB2DC544152B81EF5C453514100000000B2DC54417B14AE27CA53514133333333AFDC54415C8FC2E5C85351413D0AD733ADDC5441713D0AE7C553514148E17A64AEDC544185EB51D8C45351413D0AD703AEDC544185EB5128C35351411F85EBF1ABDC5441D7A370DDC3535141C3F528DCA9DC5441D7A3700DC6535141E17A146EA8DC544148E17AB4C45351410AD7A300A6DC54411F85EB01C4535141AE47E18AA4DC54411F85EB41C0535141EC51B88EA1DC54410F000000666666B6C3535141713D0AA7A8DC54410AD7A3D0C25351419A999979A9DC5441F6285C5FC1535141F6285CEFA9DC54415C8FC2E5BD535141F6285C4FA4DC54410AD7A340B9535141666666969DDC5441B81E850BB95351411F85EBE19BDC54413D0AD7F3BA535141F6285C9F99DC5441B81E850BBC535141B81E853B9ADC54413D0AD753BE5351418FC2F5789DDC54418FC2F588BE535141713D0A379FDC5441E17A143EBF53514152B81EF5A1DC5441D7A3703DC05351419A999969A3DC544114AE47B1C1535141E17A145EA4DC5441A4703DFAC35351410AD7A370A7DC5441666666B6C3535141713D0AA7A8DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000FC0AE5EA9A5351412A717C1DCADC5441D18E7E9B9A5351410B88FD70CBDC5441291E998D9A53514102F9A970CBDC54410666A25D955351413ADF7851CBDC54412D3DA3A8945351410CE077F0CBDC5441293F29479453514173A51846CCDC5441508F6B3C90535141C1977A54D7DC5441315AECA092535141AD4D65A1D7DC544113AF7CDF98535141BCB5E7D2D7DC5441FACA8DE29C535141C6587D33D9DC5441E17A142E9E53514114AE4751D8DC5441AE47E1AAA153514114AE4791D6DC544152B81E65A353514100000010D6DC5441C3F5284CA65351417B14AEA7D5DC5441C3F5289CA55351411F85EB61D1DC544100000050AC5351417B14AE17D1DC544185EB5128B3535141B81E85BBD0DC5441AE47E13AB65351418FC2F598D0DC544152B81E75BC53514133333353D0DC544152B81EA5C153514185EB51A8D0DC54411B508650C753514179F30A2FD1DC544164B2F85BC45351412700D8AAC5DC54418707204BC45351419DFBC453C5DC5441BAA5F0A4C3535141801A0C86C3DC5441DEFEA01AC353514199138F9DC1DC5441DB445493C2535141D892A145BFDC5441CC3A0C1EC15351419F5FED4FBDDC5441AA435390BC535141CC76C9A2B9DC5441CDCCCC5CBD535141D7A3709DB8DC5441713D0A87BD535141E17A14BEB7DC5441E17A14FEBD5351415C8FC205B7DC54419A999929BF535141666666D6B5DC5441AE47E11AC0535141713D0A07B5DC5441F6285CCFC1535141713D0AD7B3DC5441BA654999C3535141193FAAD9B1DC5441E16478E0BC5351415A5C0A76A7DC5441D38C7584AD5351412AB38B74A7DC544115DEA796AB535141153C832AA8DC5441799E6E20A95351410D21C012A9DC54414B54751AA75351419E05EE00ABDC5441282FAE5CA2535141ECCEC71AB3DC5441C43B04399D53514111093642C0DC5441FC0AE5EA9A5351412A717C1DCADC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492880 - 4031532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000002A0000001F85EB41C0535141EC51B88EA1DC5441AE47E11ABF5351415C8FC2259DDC5441D7A3704DBE53514185EB51E89ADC544114AE4731BD535141333333A398DC54415C8FC205BB5351417B14AEE794DC5441D7A3708DB75351418FC2F5A89BDC5441F6285C1FB753514152B81E659CDC5441713D0AB7B6535141666666169DDC5441A4703D2AB6535141295C8FF29DDC544166666666B5535141295C8FC29EDC544148E17A74B3535141AE47E14AA0DC54419A9999A9AE5351418FC2F558A2DC5441EC51B89EA553514148E17AD4A8DC544166666626A05351411F85EBB1ACDC5441F6285C6F9E5351410AD7A380AEDC544114AE47B198535141A4703D1AB8DC54410AD7A3B095535141A4703D1ABEDC544148E17A24915351411F85EBC1C9DC5441666666E692535141C3F5285CCADC54413D0AD7B3935351410AD7A390CBDC5441B81E851B95535141D7A3701DCCDC5441A4703D7A9A535141713D0AB7CBDC54418FC2F5889C535141C3F5283CC4DC54418FC2F5589F5351413D0AD773BBDC54415C8FC2B5A2535141295C8F52B3DC5441AE47E16AA4535141EC51B88EAFDC54417B14AE07A8535141EC51B86EA9DC54419A999949AA5351410AD7A3A0A7DC54415C8FC2F5AF53514133333353A7DC54415C8FC235BD53514166666646A7DC544152B81E05C4535141C3F5288CB2DC544152B81EF5C453514100000000B2DC54417B14AE27CA53514133333333AFDC54415C8FC2E5C85351413D0AD733ADDC5441713D0AE7C553514148E17A64AEDC544185EB51D8C45351413D0AD703AEDC544185EB5128C35351411F85EBF1ABDC5441D7A370DDC3535141C3F528DCA9DC5441D7A3700DC6535141E17A146EA8DC544148E17AB4C45351410AD7A300A6DC54411F85EB01C4535141AE47E18AA4DC54411F85EB41C0535141EC51B88EA1DC54410F000000666666B6C3535141713D0AA7A8DC54410AD7A3D0C25351419A999979A9DC5441F6285C5FC1535141F6285CEFA9DC54415C8FC2E5BD535141F6285C4FA4DC54410AD7A340B9535141666666969DDC5441B81E850BB95351411F85EBE19BDC54413D0AD7F3BA535141F6285C9F99DC5441B81E850BBC535141B81E853B9ADC54413D0AD753BE5351418FC2F5789DDC54418FC2F588BE535141713D0A379FDC5441E17A143EBF53514152B81EF5A1DC5441D7A3703DC05351419A999969A3DC544114AE47B1C1535141E17A145EA4DC5441A4703DFAC35351410AD7A370A7DC5441666666B6C3535141713D0AA7A8DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000E16478E0BC5351415A5C0A76A7DC5441D82E2B0EB95351419155BA15A0DC544170FD8373B753514184C4CF8E9DDC544155D97B39B75351418277AE6A9CDC54417E294FB5B35351411F86D2D09EDC544131C17E2AAD53514154A9DB53A3DC54413F74BDE89D535141A31BC82DAEDC5441547DBCA199535141626C1F54B3DC5441D12C5E409653514192CF67B4BBDC5441A733E05B91535141E08DF92EC8DC5441E22B309D91535141413FBABAC9DC54415A2DAE079353514130C6782CCBDC54410666A25D955351413ADF7851CBDC5441D18E7E9B9A5351410B88FD70CBDC5441FC0AE5EA9A5351412A717C1DCADC5441C43B04399D53514111093642C0DC5441282FAE5CA2535141ECCEC71AB3DC54414B54751AA75351419E05EE00ABDC5441799E6E20A95351410D21C012A9DC544115DEA796AB535141153C832AA8DC5441D38C7584AD5351412AB38B74A7DC5441E16478E0BC5351415A5C0A76A7DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>493825 - 1368502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B81E8F3B5141B81E85DBCBCB5441E17A14EE8F3B5141B81E85BBD9CB544114AE47719B3B514100000060D8CB5441A4703D4AB13B51418FC2F5A8D7CB5441295C8F22C13B51418FC2F5D8D7CB5441B81E859BDE3B5141B81E857BD4CB544148E17AB4D93B51411F85EB41CDCB54415C8FC2A5D43B51413D0AD723CDCB5441E17A14EECE3B5141AE47E17ACCCB54415C8FC2A5C93B51417B14AE37CBCB544133333383B93B5141C3F528FCC9CB54419A999929B23B51417B14AE27C9CB5441C3F528ECAB3B51417B14AEA7C8CB5441333333739F3B51410AD7A3A0C9CB5441EC51B81E8F3B5141B81E85DBCBCB5441
+</a>
+
+<b>
+01060000000100000001030000000100000038000000741EB1F4D83B514181D52E45CDCB54417595CB39D73B51419871AE2ECDCB5441FFE1153AD43B51410E1C6917CDCB5441288276ECCF3B51414DA53E98CCCB544193D00E12CA3B5141C2159051CBCB54417F611E77C73B5141A8D8010DCBCB5441F12BD6D3B93B51412BCF5102CACB54412D19F21DAF3B5141D12B35E9C8CB5441E12A8B2DAA3B514194DC80CAC8CB54419F301127A53B51419DD9CF2EC9CB544123090C559F3B514118F5C1A4C9CB544138E6EBBC9A3B51418F185E45CACB5441F5FD8C03963B5141D87384EACACB54418C66C41E8F3B5141989791DFCBCB544101FB45298F3B51417781F564CFCB544162DEBC3C8F3B514131B9EEEAD5CB5441D327017C8C3B5141737D63A4D6CB54412095E8568A3B5141448D7E68D7CB5441780CF033863B5141F0ACB4F0D8CB54419A203038823B5141516923A0DACB5441EB2455787D3B5141CE9874ECDCCB54411843B57E773B514141C8C538DFCB5441098B6B0F713B51418F073249E2CB5441A6FC772A6A3B5141CBD3BBBCE4CB54416FC72B1C653B5141B5C99BBAE6CB54412AB63AD65C3B5141E00B5789DDCB544114AE4731573B51419A9999D9DFCB544148E17AB45B3B51411F85EB01E5CB5441D7A3708D603B5141EC51B8DEEACB5441CDCCCCEC5B3B514148E17A24F5CB5441D7A370ED5D3B5141B81E857BF7CB5441295C8F62673B5141A4703D2AFDCB5441EC51B88E803B514133333353FACB5441A4703D6A8B3B5141A4703D5AF7CB5441C3F5286C9E3B514148E17A24F0CB5441CDCCCCECAC3B514152B81ED5ECCB5441666666C6BD3B5141666666F6EACB544152B81E15C63B5141C3F5282CE9CB5441E17A14FEC53B514185EB5118E8CB544100000080C73B5141666666C6E7CB54415C8FC2E5C73B5141295C8FF2E8CB544148E17AE4D13B51415C8FC2B5E5CB54413D0AD773D33B5141B81E850BE8CB54418FC2F588EF3B514148E17AA4DECB544152B81E35F83B5141B81E85DBDACB54413E0D9E34F93B5141C8B123DED9CB54412C7DB7E9F53B514151C9B80FDACB5441F71F264EF53B51412858EC1BDACB544111A55DF9F03B514162F8E272DACB54416D0FAEE2F03B5141D1FCF071DACB5441DB556600EA3B514115558328DACB544191FF9743E63B51410E2AB78FD7CB54419FDEB1F0DF3B5141A27B8497D2CB54419DC997C8DF3B51414070F678D2CB544111843179D83B514119B84847CDCB5441741EB1F4D83B514181D52E45CDCB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>493825 - 3513405
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B81E8F3B5141B81E85DBCBCB5441E17A14EE8F3B5141B81E85BBD9CB544114AE47719B3B514100000060D8CB5441A4703D4AB13B51418FC2F5A8D7CB5441295C8F22C13B51418FC2F5D8D7CB5441B81E859BDE3B5141B81E857BD4CB544148E17AB4D93B51411F85EB41CDCB54415C8FC2A5D43B51413D0AD723CDCB5441E17A14EECE3B5141AE47E17ACCCB54415C8FC2A5C93B51417B14AE37CBCB544133333383B93B5141C3F528FCC9CB54419A999929B23B51417B14AE27C9CB5441C3F528ECAB3B51417B14AEA7C8CB5441333333739F3B51410AD7A3A0C9CB5441EC51B81E8F3B5141B81E85DBCBCB5441
+</a>
+
+<b>
+01060000000100000001030000000100000038000000741EB1F4D83B514181D52E45CDCB54417595CB39D73B51419871AE2ECDCB5441FFE1153AD43B51410E1C6917CDCB5441288276ECCF3B51414DA53E98CCCB544193D00E12CA3B5141C2159051CBCB54417F611E77C73B5141A8D8010DCBCB5441F12BD6D3B93B51412BCF5102CACB54412D19F21DAF3B5141D12B35E9C8CB5441E12A8B2DAA3B514194DC80CAC8CB54419F301127A53B51419DD9CF2EC9CB544123090C559F3B514118F5C1A4C9CB544138E6EBBC9A3B51418F185E45CACB5441F5FD8C03963B5141D87384EACACB54418C66C41E8F3B5141989791DFCBCB544101FB45298F3B51417781F564CFCB544162DEBC3C8F3B514131B9EEEAD5CB5441D327017C8C3B5141737D63A4D6CB54412095E8568A3B5141448D7E68D7CB5441780CF033863B5141F0ACB4F0D8CB54419A203038823B5141516923A0DACB5441EB2455787D3B5141CE9874ECDCCB54411843B57E773B514141C8C538DFCB5441098B6B0F713B51418F073249E2CB5441A6FC772A6A3B5141CBD3BBBCE4CB54416FC72B1C653B5141B5C99BBAE6CB54412AB63AD65C3B5141E00B5789DDCB544114AE4731573B51419A9999D9DFCB544148E17AB45B3B51411F85EB01E5CB5441D7A3708D603B5141EC51B8DEEACB5441CDCCCCEC5B3B514148E17A24F5CB5441D7A370ED5D3B5141B81E857BF7CB5441295C8F62673B5141A4703D2AFDCB5441EC51B88E803B514133333353FACB5441A4703D6A8B3B5141A4703D5AF7CB5441C3F5286C9E3B514148E17A24F0CB5441CDCCCCECAC3B514152B81ED5ECCB5441666666C6BD3B5141666666F6EACB544152B81E15C63B5141C3F5282CE9CB5441E17A14FEC53B514185EB5118E8CB544100000080C73B5141666666C6E7CB54415C8FC2E5C73B5141295C8FF2E8CB544148E17AE4D13B51415C8FC2B5E5CB54413D0AD773D33B5141B81E850BE8CB54418FC2F588EF3B514148E17AA4DECB544152B81E35F83B5141B81E85DBDACB54413E0D9E34F93B5141C8B123DED9CB54412C7DB7E9F53B514151C9B80FDACB5441F71F264EF53B51412858EC1BDACB544111A55DF9F03B514162F8E272DACB54416D0FAEE2F03B5141D1FCF071DACB5441DB556600EA3B514115558328DACB544191FF9743E63B51410E2AB78FD7CB54419FDEB1F0DF3B5141A27B8497D2CB54419DC997C8DF3B51414070F678D2CB544111843179D83B514119B84847CDCB5441741EB1F4D83B514181D52E45CDCB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494967 - 64062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000000B6D75041333333034F6D5441D7A3707DB6D750419A999969516D54419A999989B7D750418FC2F5F8526D5441CDCCCCDCB8D75041295C8FD2536D5441CDCCCC7CC5D75041D7A370CD576D5441EC51B80EC7D75041B81E85AB586D5441B81E85EBC7D7504152B81E655A6D5441295C8F92CCD75041C3F5280C696D544114AE47C1CFD750411F85EB11736D5441713D0AC7E6D75041B81E855B716D5441F6285C0FE7D75041F6285C6F706D54419A999949EFD75041AE47E1DA6E6D5441295C8F82EFD750410AD7A3E06E6D544185EB51A8EFD75041EC51B8CE696D5441295C8F72F0D750418FC2F508666D5441333333B3F0D75041AE47E12A646D54413D0AD703EED750413D0AD7035F6D5441333333E3EDD75041B81E855B5C6D5441CDCCCC2CEED75041CDCCCC1C596D54415C8FC2E5EED750413D0AD7E3526D5441E17A140EEFD75041A4703D4A516D54413D0AD763EFD75041713D0AE74D6D5441B81E85CBEFD75041A4703D2A4B6D544114AE4781F0D75041B81E85FB486D5441C3F5282CF1D750419A999929476D5441713D0A97F1D7504114AE4791456D544148E17A44F1D750418FC2F588456D544148E17A64DCD75041AE47E1BA456D544185EB5188C3D750415C8FC2F5456D5441295C8F72B4D75041A4703D1A466D544100000000B6D75041333333034F6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000063A12FDED7D75041E5926E77726D5441751DAAFED2D75041152E3AD4726D544156F6E13BD0D75041F6E3CC08736D54417B14AE97D0D75041713D0A17746D544114AE4701D5D7504133333333816D54410AD7A370D8D75041EC51B8DE8D6D544185EB51A8E6D7504152B81E05886D5441B81E85BBE9D750413D0AD743866D5441333333F3EBD75041E17A142E826D5441D7A3702DECD75041EC51B83E816D54419A9999D9EDD75041D7A3703D7B6D54410AD7A3F0EED7504114AE4751766D5441295C8F32EFD750413D0AD7D3736D5441295C8F82EFD750410AD7A3E06E6D54419A999949EFD75041AE47E1DA6E6D5441F6285C0FE7D75041F6285C6F706D5441713D0AC7E6D75041B81E855B716D544163A12FDED7D75041E5926E77726D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494967 - 359090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000000B6D75041333333034F6D5441D7A3707DB6D750419A999969516D54419A999989B7D750418FC2F5F8526D5441CDCCCCDCB8D75041295C8FD2536D5441CDCCCC7CC5D75041D7A370CD576D5441EC51B80EC7D75041B81E85AB586D5441B81E85EBC7D7504152B81E655A6D5441295C8F92CCD75041C3F5280C696D544114AE47C1CFD750411F85EB11736D5441713D0AC7E6D75041B81E855B716D5441F6285C0FE7D75041F6285C6F706D54419A999949EFD75041AE47E1DA6E6D5441295C8F82EFD750410AD7A3E06E6D544185EB51A8EFD75041EC51B8CE696D5441295C8F72F0D750418FC2F508666D5441333333B3F0D75041AE47E12A646D54413D0AD703EED750413D0AD7035F6D5441333333E3EDD75041B81E855B5C6D5441CDCCCC2CEED75041CDCCCC1C596D54415C8FC2E5EED750413D0AD7E3526D5441E17A140EEFD75041A4703D4A516D54413D0AD763EFD75041713D0AE74D6D5441B81E85CBEFD75041A4703D2A4B6D544114AE4781F0D75041B81E85FB486D5441C3F5282CF1D750419A999929476D5441713D0A97F1D7504114AE4791456D544148E17A44F1D750418FC2F588456D544148E17A64DCD75041AE47E1BA456D544185EB5188C3D750415C8FC2F5456D5441295C8F72B4D75041A4703D1A466D544100000000B6D75041333333034F6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000063A12FDED7D75041E5926E77726D5441751DAAFED2D75041152E3AD4726D544156F6E13BD0D75041F6E3CC08736D54417B14AE97D0D75041713D0A17746D544114AE4701D5D7504133333333816D54410AD7A370D8D75041EC51B8DE8D6D544185EB51A8E6D7504152B81E05886D5441B81E85BBE9D750413D0AD743866D5441333333F3EBD75041E17A142E826D5441D7A3702DECD75041EC51B83E816D54419A9999D9EDD75041D7A3703D7B6D54410AD7A3F0EED7504114AE4751766D5441295C8F32EFD750413D0AD7D3736D5441295C8F82EFD750410AD7A3E06E6D54419A999949EFD75041AE47E1DA6E6D5441F6285C0FE7D75041F6285C6F706D5441713D0AC7E6D75041B81E855B716D544163A12FDED7D75041E5926E77726D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>495699 - 3137797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000270000007B14AE8767CF50418FC2F548B3655441666666C667CF5041D7A370BDB26554417B14AEC767CF5041A4703D6AB26554419A9999A967CF504133333323B26554417B14AE2767CF5041E17A14BEB1655441713D0A9766CF50415C8FC245B16554411F85EB3166CF504185EB5198B06554416666662666CF5041333333F3AF655441D7A3705D66CF50418FC2F538AF655441AE47E19A66CF5041EC51B8CEAE655441E17A14BE66CF50411F85EB61AE655441A4703DBA66CF504185EB5118AE6554413D0AD78366CF5041CDCCCC6CAD6554418FC2F57866CF5041AE47E1DAAC655441CDCCCC7C66CF504152B81E85AC655441000000C066CF5041295C8F32AC65544148E17AF467CF50413D0AD773AB6554416666665668CF5041EC51B8DEAA6554413333334368CF50417B14AE77AA6554410AD7A34068CF504152B81E15AA6554419A99996968CF5041F6285CCFA965544148E17AE468CF50413D0AD773A9655441D7A3703D69CF504100000020A965544152B81E5569CF5041B81E85CBA865544114AE476169CF504133333373A865544114AE479168CF5041A4703D0AA76554410AD7A31068CF5041F6285CFFA5655441EC51B80E68CF5041713D0A87A5655441CDCCCC1C68CF5041295C8F32A5655441F6285C7F68CF5041AE47E1FAA4655441D7A370DD68CF5041295C8F92A4655441B81E851B69CF504100000020A46554417B14AE2769CF50413D0AD7E3A36554413333331369CF50417B14AEB7A365544185EB51185DCF5041AE47E1EAA46554417B14AE175DCF5041EC51B84EA5655441C3F528DC59CF5041AE47E15AAD6554415C8FC24555CF5041000000D0B46554417B14AE8767CF50418FC2F548B3655441
+</a>
+
+<b>
+010600000001000000010300000001000000370000000CABE87A66CF50417AFF5AAFAC6554416467FE3365CF50412211C7EBB465544116AAD22F65CF504159669D73B56554418C650B2465CF5041103037F3B665544100DE7BAC64CF50411639E31CBE655441797770A661CF5041984367F9C565544187F3BEB35ECF50411CD31035CA655441A43D98395BCF5041FF8837AFCD655441BF5ED38956CF5041647CCBF9D2655441A0C2BD9857CF50418693BB8BD565544143C5DE8F59CF50419C2E5D10DB655441F4958AFF5ACF5041922DE9A3E1655441333333435CCF5041E17A142EE96554415C8FC2255DCF5041713D0A77EB655441CDCCCCBC60CF504133333323F0655441EC51B8DE65CF50411F85EBD1F6655441000000A070CF5041D7A3709DEF6554411495BC2D71CF5041D9982B1AEF655441C3F5282C71CF5041A4703D2AEF6554413528BB1574CF50414AD60237ED655441C8ED417770CF50419B5687D9E2655441A5D651E56DCF504166F6312EDD655441C349C9A06BCF50412E1B02E2D3655441F1816AA46BCF504191B13ECCD3655441C049C9A06BCF504103564EBBD36554419F84157A6BCF5041EEBAAC36CE6554419E5B77446ACF5041F8BB20A3C7655441B52902BD69CF50416C5EECEEC3655441C87267D66CCF50416316FB41BA6554418B63DA2970CF5041FA7EEE20B0655441DE36A79073CF5041D29AE782A7655441FF4D972276CF50418C4C407BA065544151F8C55378CF504167E3137E9B6554415D4B762B74CF504103F07F33966554419948AD3972CF5041152D436D95655441B5BD9DC971CF5041924D30E594655441295C8F0271CF50410000006094655441C3F528BC70CF50411F85EBC1936554410AD7A38070CF5041A4703D7A9365544148E17A7470CF50417B14AE179365544148E17AB470CF5041333333C392655441D7A3701D71CF50411F85EB71926554413D0AD71371CF5041AE47E17A91655441C3F5283C6DCF5041A4703D3A90655441B81E85DB6DCF504152B81E158D655441295C8FB26ACF5041C3F5286C8C6554411F85EBB16ACF5041295C8F728B655441F6285C3F5ACF50410AD7A3708C65544152B81E2559CF5041A4703DAA8C655441F6285C8F5ACF504185EB510892655441A4703DFA5BCF5041713D0A679765544182353F265DCF504139D378F39B65544185EB51185DCF5041AE47E1EAA46554410314B50669CF5041F0BCE8B5A36554410CABE87A66CF50417AFF5AAFAC655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>495699 - 3350456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000270000007B14AE8767CF50418FC2F548B3655441666666C667CF5041D7A370BDB26554417B14AEC767CF5041A4703D6AB26554419A9999A967CF504133333323B26554417B14AE2767CF5041E17A14BEB1655441713D0A9766CF50415C8FC245B16554411F85EB3166CF504185EB5198B06554416666662666CF5041333333F3AF655441D7A3705D66CF50418FC2F538AF655441AE47E19A66CF5041EC51B8CEAE655441E17A14BE66CF50411F85EB61AE655441A4703DBA66CF504185EB5118AE6554413D0AD78366CF5041CDCCCC6CAD6554418FC2F57866CF5041AE47E1DAAC655441CDCCCC7C66CF504152B81E85AC655441000000C066CF5041295C8F32AC65544148E17AF467CF50413D0AD773AB6554416666665668CF5041EC51B8DEAA6554413333334368CF50417B14AE77AA6554410AD7A34068CF504152B81E15AA6554419A99996968CF5041F6285CCFA965544148E17AE468CF50413D0AD773A9655441D7A3703D69CF504100000020A965544152B81E5569CF5041B81E85CBA865544114AE476169CF504133333373A865544114AE479168CF5041A4703D0AA76554410AD7A31068CF5041F6285CFFA5655441EC51B80E68CF5041713D0A87A5655441CDCCCC1C68CF5041295C8F32A5655441F6285C7F68CF5041AE47E1FAA4655441D7A370DD68CF5041295C8F92A4655441B81E851B69CF504100000020A46554417B14AE2769CF50413D0AD7E3A36554413333331369CF50417B14AEB7A365544185EB51185DCF5041AE47E1EAA46554417B14AE175DCF5041EC51B84EA5655441C3F528DC59CF5041AE47E15AAD6554415C8FC24555CF5041000000D0B46554417B14AE8767CF50418FC2F548B3655441
+</a>
+
+<b>
+010600000001000000010300000001000000370000000CABE87A66CF50417AFF5AAFAC6554416467FE3365CF50412211C7EBB465544116AAD22F65CF504159669D73B56554418C650B2465CF5041103037F3B665544100DE7BAC64CF50411639E31CBE655441797770A661CF5041984367F9C565544187F3BEB35ECF50411CD31035CA655441A43D98395BCF5041FF8837AFCD655441BF5ED38956CF5041647CCBF9D2655441A0C2BD9857CF50418693BB8BD565544143C5DE8F59CF50419C2E5D10DB655441F4958AFF5ACF5041922DE9A3E1655441333333435CCF5041E17A142EE96554415C8FC2255DCF5041713D0A77EB655441CDCCCCBC60CF504133333323F0655441EC51B8DE65CF50411F85EBD1F6655441000000A070CF5041D7A3709DEF6554411495BC2D71CF5041D9982B1AEF655441C3F5282C71CF5041A4703D2AEF6554413528BB1574CF50414AD60237ED655441C8ED417770CF50419B5687D9E2655441A5D651E56DCF504166F6312EDD655441C349C9A06BCF50412E1B02E2D3655441F1816AA46BCF504191B13ECCD3655441C049C9A06BCF504103564EBBD36554419F84157A6BCF5041EEBAAC36CE6554419E5B77446ACF5041F8BB20A3C7655441B52902BD69CF50416C5EECEEC3655441C87267D66CCF50416316FB41BA6554418B63DA2970CF5041FA7EEE20B0655441DE36A79073CF5041D29AE782A7655441FF4D972276CF50418C4C407BA065544151F8C55378CF504167E3137E9B6554415D4B762B74CF504103F07F33966554419948AD3972CF5041152D436D95655441B5BD9DC971CF5041924D30E594655441295C8F0271CF50410000006094655441C3F528BC70CF50411F85EBC1936554410AD7A38070CF5041A4703D7A9365544148E17A7470CF50417B14AE179365544148E17AB470CF5041333333C392655441D7A3701D71CF50411F85EB71926554413D0AD71371CF5041AE47E17A91655441C3F5283C6DCF5041A4703D3A90655441B81E85DB6DCF504152B81E158D655441295C8FB26ACF5041C3F5286C8C6554411F85EBB16ACF5041295C8F728B655441F6285C3F5ACF50410AD7A3708C65544152B81E2559CF5041A4703DAA8C655441F6285C8F5ACF504185EB510892655441A4703DFA5BCF5041713D0A679765544182353F265DCF504139D378F39B65544185EB51185DCF5041AE47E1EAA46554410314B50669CF5041F0BCE8B5A36554410CABE87A66CF50417AFF5AAFAC655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496440 - 249178
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000030000000103000000010000000B000000D7A3704D6ADC5041000000D0B066544185EB51C863DC5041A4703D8AA2665441E17A145E63DC50419A9999F99A665441AE47E16A21DC5041713D0A979D66544152B81EB521DC504152B81EC59F665441713D0A1723DC504148E17A34A166544114AE479138DC5041B81E856BA566544185EB51084BDC50410AD7A380A96654417B14AED758DC5041295C8F12AD6654419A99998969DC50418FC2F5D8B1665441D7A3704D6ADC5041000000D0B066544101030000000100000021000000E17A148EE0DB5041B81E850B9B665441000000E0F5DB5041AE47E18A9C66544185EB51F808DC50413D0AD7339E66544152B81EE51EDC5041AE47E1BAA0665441CDCCCCCC19DC50417B14AE377966544114AE470115DC5041A4703D3A5466544185EB51E812DC5041666666D63C6654413333336310DC5041000000C0366654416666660614DC50417B14AEF734665441EC51B8EE11DC50415C8FC2F5176654410000001010DC50410AD7A3F00866544185EB51B80EDC504185EB5198006654419A9999090CDC504133333353F46554415C8FC2E50ADC50410AD7A3A0F26554410AD7A310F0DB5041AE47E19AF465544133333333EFDB5041EC51B8BEF5655441A4703D9AF0DB5041295C8FC20066544148E17AD4EDDB5041295C8F12016654419A999929EBDB5041713D0AF704665441C3F528CCE7DB50419A99999906665441A4703DAAE5DB50410AD7A3C00866544114AE4731E4DB5041EC51B89E0E66544152B81ED5DBDB5041AE47E14A0E6654410AD7A310D7DB50417B14AEC70E6654410AD7A310D2DB504114AE47D10D665441B81E855BD6DB5041B81E852B1A6654410AD7A350D9DB504114AE47E12E66544148E17A44DBDB5041295C8F12406654413D0AD763DEDB50413D0AD723586654419A999959E1DB50411F85EB916D665441B81E85EBE1DB504152B81E0578665441EC51B86EDFDB5041CDCCCCBC99665441E17A148EE0DB5041B81E850B9B66544101030000000100000007000000AE47E11AE0DB50410AD7A3B06D665441713D0A27DDDB5041F6285C4F586654413D0AD7C3DBDB5041E17A149E4D665441A4703DAAA2DB50418FC2F5484D66544152B81E45A0DB50410000006061665441000000809EDB5041F6285C5F6D665441AE47E11AE0DB50410AD7A3B06D665441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000000AD7A350D9DB504114AE47E12E66544113D4D3BBDADB50417760485F3B6654413B1F033BDBDB5041564131BF3F66544177A4205ADBDB504123F869B94066544113315D1FDCDB504107BCAAA946665441F126C578DCDB504140C8C95A49665441E49EF6F2DCDB50416307A0084D6654412D6B2C5CDDDB504159728F335066544122A1F29BDDDB504169FEA81352665441FC0298F4DDDB50417F52FFAE54665441AD711E6ADEDB5041BB5CBD2358665441EE712C08DFDB5041DAD897C95C6654419A999959E1DB50411F85EB916D665441B81E85EBE1DB504152B81E0578665441EC51B86EDFDB5041CDCCCCBC99665441E17A148EE0DB5041B81E850B9B665441000000E0F5DB5041AE47E18A9C66544185EB51F808DC50413D0AD7339E66544152B81EE51EDC5041AE47E1BAA0665441CDCCCCCC19DC50417B14AE377966544114AE470115DC5041A4703D3A5466544185EB51E812DC5041666666D63C6654413333336310DC5041000000C0366654416666660614DC50417B14AEF734665441EC51B8EE11DC50415C8FC2F5176654410000001010DC50410AD7A3F00866544185EB51B80EDC504185EB5198006654419A9999090CDC504133333353F46554415C8FC2E50ADC50410AD7A3A0F26554410AD7A310F0DB5041AE47E19AF465544133333333EFDB5041EC51B8BEF5655441A4703D9AF0DB5041295C8FC20066544148E17AD4EDDB5041295C8F12016654419A999929EBDB5041713D0AF704665441C3F528CCE7DB50419A99999906665441A4703DAAE5DB50410AD7A3C00866544114AE4731E4DB5041EC51B89E0E66544152B81ED5DBDB5041AE47E14A0E6654410AD7A310D7DB50417B14AEC70E6654410AD7A310D2DB504114AE47D10D665441B81E855BD6DB5041B81E852B1A6654410AD7A350D9DB504114AE47E12E665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496440 - 296406
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000030000000103000000010000000B000000D7A3704D6ADC5041000000D0B066544185EB51C863DC5041A4703D8AA2665441E17A145E63DC50419A9999F99A665441AE47E16A21DC5041713D0A979D66544152B81EB521DC504152B81EC59F665441713D0A1723DC504148E17A34A166544114AE479138DC5041B81E856BA566544185EB51084BDC50410AD7A380A96654417B14AED758DC5041295C8F12AD6654419A99998969DC50418FC2F5D8B1665441D7A3704D6ADC5041000000D0B066544101030000000100000021000000E17A148EE0DB5041B81E850B9B665441000000E0F5DB5041AE47E18A9C66544185EB51F808DC50413D0AD7339E66544152B81EE51EDC5041AE47E1BAA0665441CDCCCCCC19DC50417B14AE377966544114AE470115DC5041A4703D3A5466544185EB51E812DC5041666666D63C6654413333336310DC5041000000C0366654416666660614DC50417B14AEF734665441EC51B8EE11DC50415C8FC2F5176654410000001010DC50410AD7A3F00866544185EB51B80EDC504185EB5198006654419A9999090CDC504133333353F46554415C8FC2E50ADC50410AD7A3A0F26554410AD7A310F0DB5041AE47E19AF465544133333333EFDB5041EC51B8BEF5655441A4703D9AF0DB5041295C8FC20066544148E17AD4EDDB5041295C8F12016654419A999929EBDB5041713D0AF704665441C3F528CCE7DB50419A99999906665441A4703DAAE5DB50410AD7A3C00866544114AE4731E4DB5041EC51B89E0E66544152B81ED5DBDB5041AE47E14A0E6654410AD7A310D7DB50417B14AEC70E6654410AD7A310D2DB504114AE47D10D665441B81E855BD6DB5041B81E852B1A6654410AD7A350D9DB504114AE47E12E66544148E17A44DBDB5041295C8F12406654413D0AD763DEDB50413D0AD723586654419A999959E1DB50411F85EB916D665441B81E85EBE1DB504152B81E0578665441EC51B86EDFDB5041CDCCCCBC99665441E17A148EE0DB5041B81E850B9B66544101030000000100000007000000AE47E11AE0DB50410AD7A3B06D665441713D0A27DDDB5041F6285C4F586654413D0AD7C3DBDB5041E17A149E4D665441A4703DAAA2DB50418FC2F5484D66544152B81E45A0DB50410000006061665441000000809EDB5041F6285C5F6D665441AE47E11AE0DB50410AD7A3B06D665441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000000AD7A350D9DB504114AE47E12E66544113D4D3BBDADB50417760485F3B6654413B1F033BDBDB5041564131BF3F66544177A4205ADBDB504123F869B94066544113315D1FDCDB504107BCAAA946665441F126C578DCDB504140C8C95A49665441E49EF6F2DCDB50416307A0084D6654412D6B2C5CDDDB504159728F335066544122A1F29BDDDB504169FEA81352665441FC0298F4DDDB50417F52FFAE54665441AD711E6ADEDB5041BB5CBD2358665441EE712C08DFDB5041DAD897C95C6654419A999959E1DB50411F85EB916D665441B81E85EBE1DB504152B81E0578665441EC51B86EDFDB5041CDCCCCBC99665441E17A148EE0DB5041B81E850B9B665441000000E0F5DB5041AE47E18A9C66544185EB51F808DC50413D0AD7339E66544152B81EE51EDC5041AE47E1BAA0665441CDCCCCCC19DC50417B14AE377966544114AE470115DC5041A4703D3A5466544185EB51E812DC5041666666D63C6654413333336310DC5041000000C0366654416666660614DC50417B14AEF734665441EC51B8EE11DC50415C8FC2F5176654410000001010DC50410AD7A3F00866544185EB51B80EDC504185EB5198006654419A9999090CDC504133333353F46554415C8FC2E50ADC50410AD7A3A0F26554410AD7A310F0DB5041AE47E19AF465544133333333EFDB5041EC51B8BEF5655441A4703D9AF0DB5041295C8FC20066544148E17AD4EDDB5041295C8F12016654419A999929EBDB5041713D0AF704665441C3F528CCE7DB50419A99999906665441A4703DAAE5DB50410AD7A3C00866544114AE4731E4DB5041EC51B89E0E66544152B81ED5DBDB5041AE47E14A0E6654410AD7A310D7DB50417B14AEC70E6654410AD7A310D2DB504114AE47D10D665441B81E855BD6DB5041B81E852B1A6654410AD7A350D9DB504114AE47E12E665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496767 - 1768142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441AE47E10A2BD8504185EB51D8477A5441F6285C7F2DD85041EC51B89E377A5441A4703D0A18D85041EC51B8FE4A7A5441B81E85CB03D850415C8FC2455D7A5441AE47E17AF1D75041F6285CCF6D7A5441C3F5288CF0D7504148E17A746F7A5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441363643670CD850415234E880637A54414431AE9005D8504125C5A3AC5B7A54410D543C630ED8504169BF94B5537A544133CDA27B0ED85041457B8946527A544192B89B6617D85041CAFA1F394A7A5441666666F62CD8504114AE47C1367A5441295C8FE22DD8504100000010357A544185EB51682FD85041EC51B8FE2A7A5441AE47E12A1BD85041333333433D7A5441E17A14EE06D8504185EB51884F7A54410AD7A3B0F2D75041CDCCCCCC617A544152B81EF5F0D750410AD7A3106D7A5441D7A370BDF0D75041AE47E17A6E7A5441C3F5288CF0D7504148E17A746F7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496767 - 3323200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441AE47E10A2BD8504185EB51D8477A5441F6285C7F2DD85041EC51B89E377A5441A4703D0A18D85041EC51B8FE4A7A5441B81E85CB03D850415C8FC2455D7A5441AE47E17AF1D75041F6285CCF6D7A5441C3F5288CF0D7504148E17A746F7A5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441363643670CD850415234E880637A54414431AE9005D8504125C5A3AC5B7A54410D543C630ED8504169BF94B5537A544133CDA27B0ED85041457B8946527A544192B89B6617D85041CAFA1F394A7A5441666666F62CD8504114AE47C1367A5441295C8FE22DD8504100000010357A544185EB51682FD85041EC51B8FE2A7A5441AE47E12A1BD85041333333433D7A5441E17A14EE06D8504185EB51884F7A54410AD7A3B0F2D75041CDCCCCCC617A544152B81EF5F0D750410AD7A3106D7A5441D7A370BDF0D75041AE47E17A6E7A5441C3F5288CF0D7504148E17A746F7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899599 - 150780
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000027000000CDCCCCDC62FE50410AD7A3B0B1315441CDCCCC8C63FE5041A4703D5AB3315441A4703DFA62FE5041D7A3700DB6315441D7A3706D61FE50419A9999E9B6315441D7A370FD5FFE50417B14AEA7B6315441713D0AD75FFE504185EB5128B7315441F6285CFF5FFE50418FC2F5C8B731544148E17AB460FE50411F85EB81B8315441F6285CAF61FE5041EC51B83EB9315441E17A146E63FE5041295C8F62BA31544114AE479164FE504133333323BB31544185EB514865FE50411F85EB71BB315441C3F528FC67FE5041A4703DCABB3154413333332369FE5041666666E6B93154418FC2F5B868FE50417B14AE57B831544185EB513868FE50411F85EB81B4315441A4703D8A68FE504166666616B231544148E17AF469FE5041D7A370ADB1315441F6285CAF6AFE5041EC51B82EB331544148E17A246BFE50419A9999D9B9315441C3F528EC6CFE504152B81EE5B9315441C3F5284C6FFE5041EC51B81EB9315441E17A14CE74FE5041A4703D8AB8315441666666A675FE504133333393B3315441000000F076FE5041713D0AF7AE3154415C8FC24579FE50419A999919A83154415C8FC2A57BFE5041295C8F22A3315441000000807BFE50418FC2F598A231544148E17AC47AFE50413D0AD7C3A13154417B14AE7779FE504152B81EB5A131544148E17A6473FE504185EB51A8A13154410AD7A3006DFE5041F6285CFFA131544148E17A3467FE5041C3F528BCA2315441CDCCCCEC63FE504166666666A3315441C3F528FC61FE504185EB51C8A8315441C3F5287C61FE50413D0AD733AB315441EC51B85E61FE50417B14AE27AD3154417B14AEA761FE50418FC2F5E8AF315441CDCCCCDC62FE50410AD7A3B0B131544101030000000100000031000000CDCCCC8C4EFE5041F6285C2F583154415C8FC2D54BFE504185EB51785B31544152B81E0565FE50411F85EB5169315441EC51B88E68FE5041295C8F526A31544152B81E456BFE504152B81E1569315441D7A370DD6DFE50417B14AED766315441000000D06FFE50415C8FC2F5663154419A99993970FE50419A9999C968315441A4703DDA68FE5041D7A370BD6C315441AE47E1AA65FE5041F6285CCF703154419A99998960FE50410AD7A30077315441295C8FE25EFE5041713D0AA777315441713D0A875DFE50418FC2F59879315441A4703D5A5DFE5041713D0AD77B315441F6285C0F5EFE5041713D0AE77D3154419A9999695EFE5041295C8F5280315441D7A3702D5EFE50410AD7A3A08431544114AE47F15DFE5041B81E850B87315441E17A141E5EFE50418FC2F5588A3154411F85EBE15DFE5041666666B68E315441A4703D5A5DFE50418FC2F5B89231544114AE47E15CFE5041333333439631544148E17A645EFE5041A4703D7AA231544148E17AC463FE504166666686A2315441713D0AF766FE5041295C8FE2A1315441AE47E1BA6AFE5041713D0AE7A0315441AE47E1DA6EFE5041F6285CBFA03154413D0AD75373FE50410AD7A3D0A03154418FC2F59879FE5041D7A3704DA03154411F85EBB17CFE50418FC2F5789F315441A4703DCA7EFE5041C3F5289C9B3154410AD7A32084FE504152B81E2591315441C3F5280C87FE5041333333C38C3154411F85EB118BFE50411F85EB6184315441A4703D5A8EFE5041666666367D315441333333D391FE5041B81E857B74315441CDCCCC3C93FE5041A4703DBA70315441D7A3709D8CFE50417B14AE076E315441AE47E1AA71FE5041713D0AD7613154417B14AE4766FE50411F85EBD15C315441F6285CFF64FE5041AE47E1CA5B3154413333336364FE5041E17A14AE5A3154413D0AD70364FE5041CDCCCCEC59315441E17A145E63FE5041AE47E10A5931544114AE47C159FE504152B81E35553154415C8FC24555FE5041CDCCCCAC53315441EC51B89E53FE5041EC51B88E533154411F85EB8152FE504152B81E1554315441CDCCCC8C4EFE5041F6285C2F58315441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000EAFDE7E45FFE50410695905FB73154412C41022660FE5041949F6DF0B7315441203ECC9260FE50411112865FB8315441C7D1BB9860FE504151DD9565B8315441921EC89960FE504153DAA766B8315441A1D0334962FE50416FCDC6F8B8315441EAB25C7163FE504129E48809B9315441DDE5D57A63FE5041C1ADD409B9315441D79CCAE664FE504140BA2325B83154418D8A2E1A65FE50414814A101B8315441F58B7FC765FE5041916DDE89B7315441AA98100967FE5041A932ABABB631544157F7DB1769FE50413EB341EDB631544162EA671C6AFE504156E1CBAEB8315441100D69506AFE504116E2A3E9B831544148E17A246BFE50419A9999D9B9315441C3F528EC6CFE504152B81EE5B9315441B7556C066EFE504156580389B9315441C3F5284C6FFE5041EC51B81EB93154418A29E3C274FE504176306B8BB8315441E02AF2A475FE50411502186DB33154412E78CFEC76FE5041ADACA3E6AE315441E381AFD677FE50412BE80906AC315441BA99BA6B66FE50412C7C4355AA3154414FEDA57963FE50415FFBF645AA315441D982AFA061FE5041625F0E83AA315441C3F5287C61FE50413D0AD733AB315441EC51B85E61FE50417B14AE27AD315441AD2A746D61FE5041C1431BB6AD315441AE22849B61FE5041D04B6073AF315441697D729C61FE50418F63607CAF31544106D4B8A661FE504125FEB2DFAF315441D1F59B3762FE5041120321BDB0315441CDCCCCDC62FE50410AD7A3B0B13154415028B7E962FE5041266045D4B1315441DE4F464163FE50417A02D4C5B2315441874F3CCD61FE50411E07333CB6315441B6A190CB61FE5041250E573FB6315441E1D2058A61FE504143BEBDD9B6315441E3BC7A7A61FE50412E75C7D7B6315441CDA47D7261FE50410431CCE6B6315441A673DCF95FFE5041864FABB3B6315441EAFDE7E45FFE50410695905FB7315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899599 - 290019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000027000000CDCCCCDC62FE50410AD7A3B0B1315441CDCCCC8C63FE5041A4703D5AB3315441A4703DFA62FE5041D7A3700DB6315441D7A3706D61FE50419A9999E9B6315441D7A370FD5FFE50417B14AEA7B6315441713D0AD75FFE504185EB5128B7315441F6285CFF5FFE50418FC2F5C8B731544148E17AB460FE50411F85EB81B8315441F6285CAF61FE5041EC51B83EB9315441E17A146E63FE5041295C8F62BA31544114AE479164FE504133333323BB31544185EB514865FE50411F85EB71BB315441C3F528FC67FE5041A4703DCABB3154413333332369FE5041666666E6B93154418FC2F5B868FE50417B14AE57B831544185EB513868FE50411F85EB81B4315441A4703D8A68FE504166666616B231544148E17AF469FE5041D7A370ADB1315441F6285CAF6AFE5041EC51B82EB331544148E17A246BFE50419A9999D9B9315441C3F528EC6CFE504152B81EE5B9315441C3F5284C6FFE5041EC51B81EB9315441E17A14CE74FE5041A4703D8AB8315441666666A675FE504133333393B3315441000000F076FE5041713D0AF7AE3154415C8FC24579FE50419A999919A83154415C8FC2A57BFE5041295C8F22A3315441000000807BFE50418FC2F598A231544148E17AC47AFE50413D0AD7C3A13154417B14AE7779FE504152B81EB5A131544148E17A6473FE504185EB51A8A13154410AD7A3006DFE5041F6285CFFA131544148E17A3467FE5041C3F528BCA2315441CDCCCCEC63FE504166666666A3315441C3F528FC61FE504185EB51C8A8315441C3F5287C61FE50413D0AD733AB315441EC51B85E61FE50417B14AE27AD3154417B14AEA761FE50418FC2F5E8AF315441CDCCCCDC62FE50410AD7A3B0B131544101030000000100000031000000CDCCCC8C4EFE5041F6285C2F583154415C8FC2D54BFE504185EB51785B31544152B81E0565FE50411F85EB5169315441EC51B88E68FE5041295C8F526A31544152B81E456BFE504152B81E1569315441D7A370DD6DFE50417B14AED766315441000000D06FFE50415C8FC2F5663154419A99993970FE50419A9999C968315441A4703DDA68FE5041D7A370BD6C315441AE47E1AA65FE5041F6285CCF703154419A99998960FE50410AD7A30077315441295C8FE25EFE5041713D0AA777315441713D0A875DFE50418FC2F59879315441A4703D5A5DFE5041713D0AD77B315441F6285C0F5EFE5041713D0AE77D3154419A9999695EFE5041295C8F5280315441D7A3702D5EFE50410AD7A3A08431544114AE47F15DFE5041B81E850B87315441E17A141E5EFE50418FC2F5588A3154411F85EBE15DFE5041666666B68E315441A4703D5A5DFE50418FC2F5B89231544114AE47E15CFE5041333333439631544148E17A645EFE5041A4703D7AA231544148E17AC463FE504166666686A2315441713D0AF766FE5041295C8FE2A1315441AE47E1BA6AFE5041713D0AE7A0315441AE47E1DA6EFE5041F6285CBFA03154413D0AD75373FE50410AD7A3D0A03154418FC2F59879FE5041D7A3704DA03154411F85EBB17CFE50418FC2F5789F315441A4703DCA7EFE5041C3F5289C9B3154410AD7A32084FE504152B81E2591315441C3F5280C87FE5041333333C38C3154411F85EB118BFE50411F85EB6184315441A4703D5A8EFE5041666666367D315441333333D391FE5041B81E857B74315441CDCCCC3C93FE5041A4703DBA70315441D7A3709D8CFE50417B14AE076E315441AE47E1AA71FE5041713D0AD7613154417B14AE4766FE50411F85EBD15C315441F6285CFF64FE5041AE47E1CA5B3154413333336364FE5041E17A14AE5A3154413D0AD70364FE5041CDCCCCEC59315441E17A145E63FE5041AE47E10A5931544114AE47C159FE504152B81E35553154415C8FC24555FE5041CDCCCCAC53315441EC51B89E53FE5041EC51B88E533154411F85EB8152FE504152B81E1554315441CDCCCC8C4EFE5041F6285C2F58315441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000EAFDE7E45FFE50410695905FB73154412C41022660FE5041949F6DF0B7315441203ECC9260FE50411112865FB8315441C7D1BB9860FE504151DD9565B8315441921EC89960FE504153DAA766B8315441A1D0334962FE50416FCDC6F8B8315441EAB25C7163FE504129E48809B9315441DDE5D57A63FE5041C1ADD409B9315441D79CCAE664FE504140BA2325B83154418D8A2E1A65FE50414814A101B8315441F58B7FC765FE5041916DDE89B7315441AA98100967FE5041A932ABABB631544157F7DB1769FE50413EB341EDB631544162EA671C6AFE504156E1CBAEB8315441100D69506AFE504116E2A3E9B831544148E17A246BFE50419A9999D9B9315441C3F528EC6CFE504152B81EE5B9315441B7556C066EFE504156580389B9315441C3F5284C6FFE5041EC51B81EB93154418A29E3C274FE504176306B8BB8315441E02AF2A475FE50411502186DB33154412E78CFEC76FE5041ADACA3E6AE315441E381AFD677FE50412BE80906AC315441BA99BA6B66FE50412C7C4355AA3154414FEDA57963FE50415FFBF645AA315441D982AFA061FE5041625F0E83AA315441C3F5287C61FE50413D0AD733AB315441EC51B85E61FE50417B14AE27AD315441AD2A746D61FE5041C1431BB6AD315441AE22849B61FE5041D04B6073AF315441697D729C61FE50418F63607CAF31544106D4B8A661FE504125FEB2DFAF315441D1F59B3762FE5041120321BDB0315441CDCCCCDC62FE50410AD7A3B0B13154415028B7E962FE5041266045D4B1315441DE4F464163FE50417A02D4C5B2315441874F3CCD61FE50411E07333CB6315441B6A190CB61FE5041250E573FB6315441E1D2058A61FE504143BEBDD9B6315441E3BC7A7A61FE50412E75C7D7B6315441CDA47D7261FE50410431CCE6B6315441A673DCF95FFE5041864FABB3B6315441EAFDE7E45FFE50410695905FB7315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>497867 - 3174181
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DCA56005141AE47E11A19325441CDCCCCDC640051418FC2F5780C3254411F85EB8168005141295C8FE207325441D7A370FD67005141713D0A87073254418FC2F52866005141F6285C4F06325441E17A14CE6400514148E17A040832544114AE4791610051417B14AEA70B325441E17A145E5F005141F6285C4F0E32544114AE47115E0051417B14AE270D325441D7A370CD59005141713D0A471032544185EB51285200514152B81EA5153254418FC2F5C84A005141A4703D1A1B3254417B14AEE7440051411F85EB411F325441333333333E005141D7A3708D2332544152B81EF536005141000000C027325441C3F5286C310051419A9999D92A325441A4703DEA2A0051413D0AD7832D325441E17A141E2B005141D7A3705D2E3254410AD7A3803A005141295C8F8230325441F6285C1F54005141D7A3704D2F32544114AE4781560051415C8FC2151B325441A4703DCA56005141AE47E11A19325441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E8E07ACC560051411485DE1819325441F6F9B06C5600514174E078C41B325441D3A9DD2C550051417E35755E26325441AEF63621540051411289B33D2F325441461B31636D0051411BF54D7B2C3254418BBFA9A978005141C9D09DC42B3254419AF840CD7C005141AA5E6F7D23325441EFEFC4A7800051415FFADA7E1D3254418F72DD2080005141DCAD83161B325441238424EE7C0051411DF0B6E61532544199F3ACAB790051415A54D4B2113254410994CA9372005141B45AB08E0D325441E0D899026F00514140B0CB530C32544186789B4E68005141BE0A2423083254416403D7A565005141EDC0EF7B0B325441F039B1FF640051413901AF650C325441926C002B64005141319290180D325441185E314662005141BDAFC3CB0E32544113DC03955E0051418288391C12325441E8E07ACC560051411485DE1819325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>497867 - 3568344
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DCA56005141AE47E11A19325441CDCCCCDC640051418FC2F5780C3254411F85EB8168005141295C8FE207325441D7A370FD67005141713D0A87073254418FC2F52866005141F6285C4F06325441E17A14CE6400514148E17A040832544114AE4791610051417B14AEA70B325441E17A145E5F005141F6285C4F0E32544114AE47115E0051417B14AE270D325441D7A370CD59005141713D0A471032544185EB51285200514152B81EA5153254418FC2F5C84A005141A4703D1A1B3254417B14AEE7440051411F85EB411F325441333333333E005141D7A3708D2332544152B81EF536005141000000C027325441C3F5286C310051419A9999D92A325441A4703DEA2A0051413D0AD7832D325441E17A141E2B005141D7A3705D2E3254410AD7A3803A005141295C8F8230325441F6285C1F54005141D7A3704D2F32544114AE4781560051415C8FC2151B325441A4703DCA56005141AE47E11A19325441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E8E07ACC560051411485DE1819325441F6F9B06C5600514174E078C41B325441D3A9DD2C550051417E35755E26325441AEF63621540051411289B33D2F325441461B31636D0051411BF54D7B2C3254418BBFA9A978005141C9D09DC42B3254419AF840CD7C005141AA5E6F7D23325441EFEFC4A7800051415FFADA7E1D3254418F72DD2080005141DCAD83161B325441238424EE7C0051411DF0B6E61532544199F3ACAB790051415A54D4B2113254410994CA9372005141B45AB08E0D325441E0D899026F00514140B0CB530C32544186789B4E68005141BE0A2423083254416403D7A565005141EDC0EF7B0B325441F039B1FF640051413901AF650C325441926C002B64005141319290180D325441185E314662005141BDAFC3CB0E32544113DC03955E0051418288391C12325441E8E07ACC560051411485DE1819325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498556 - 151371
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000050000000103000000010000001D000000CDCCCC4C95FF5041D7A370BD8F315441D7A370ED8FFF5041713D0AA78E31544148E17AC495FF5041C3F528DC843154416666664694FF5041C3F5286C84315441AE47E16A8FFF5041F6285C2F823154419A9999398FFF5041AE47E16A81315441C3F528DC8CFF5041666666A6803154417B14AE278CFF5041E17A14FE8131544185EB51488CFF504152B81E3583315441B81E85CB8CFF5041AE47E13A843154413D0AD7338EFF50411F85EB71853154411F85EBE18DFF504185EB514889315441F6285C7F8DFF5041000000708D3154413D0AD7C38CFF50419A9999499131544148E17AC48BFF5041AE47E13A953154413D0AD7E38BFF5041E17A147E9731544152B81EA58BFF5041EC51B8FE9A315441A4703DDA89FF504148E17A049C315441D7A3709D87FF504114AE47719B3154411F85EB5188FF5041C3F5286C9D315441C3F5281C8AFF5041C3F5282CA0315441E17A14CE92FF5041000000D0A0315441B81E85EB97FF504114AE4711A1315441A4703D9A97FF5041666666269F31544185EB518894FF5041333333A39E3154411F85EBB190FF5041E17A14BE9D315441E17A140E90FF504148E17A149C3154418FC2F5E891FF50413333334396315441CDCCCC4C95FF5041D7A370BD8F31544101030000000100000043000000295C8F22BDFF5041000000C09531544114AE47B1BFFF50410AD7A3D09531544148E17AF4C2FF5041295C8F22963154418FC2F588C6FF504133333343963154411F85EBE1CAFF50415C8FC2B59631544166666696CBFF50411F85EB01963154415C8FC285CBFF5041D7A3703D9531544148E17A84C8FF504185EB516894315441EC51B8BEC4FF50413D0AD793933154411F85EB81C2FF504185EB51A891315441D7A3703DBCFF504185EB519891315441AE47E1CABBFF50417B14AEB78E315441CDCCCC5CB9FF5041295C8FD28D3154417B14AE67B8FF504185EB51D88E315441C3F528ACB3FF504152B81E558E3154413D0AD743B2FF5041C3F528CC8C315441D7A3701DB1FF50418FC2F5288C31544185EB5148B0FF5041C3F528CC8C315441EC51B88EAEFF50410AD7A3808D31544152B81EF5ACFF5041B81E859B8C315441295C8FC2A9FF5041713D0AD78B315441666666A6A7FF50411F85EB018B31544152B81E95A4FF5041E17A145E8A3154417B14AE47A2FF5041713D0A278931544100000000A1FF50411F85EB7185315441666666569FFF50410AD7A38082315441A4703D2A9DFF504133333323803154410AD7A3909BFF50413333331380315441C3F528CC9AFF5041C3F528EC7E315441B81E85DB97FF5041A4703D8A7E31544185EB514897FF5041CDCCCC4C7C31544185EB515897FF50415C8FC2157B315441295C8F8293FF5041EC51B8CE7931544148E17A1491FF5041B81E853B793154418FC2F5288FFF5041AE47E11A79315441C3F528DC8CFF5041713D0A8778315441CDCCCC4C8DFF50410AD7A3A0793154411F85EBE18EFF5041F6285CEF7D31544185EB51588FFF50419A99993980315441E17A14BE92FF5041B81E858B813154410AD7A30096FF50415C8FC25583315441E17A144E98FF50410AD7A3308531544114AE47A197FF50411F85EBA1853154417B14AE7796FF50410AD7A3108531544148E17A1491FF504152B81E458E315441EC51B89E95FF504185EB51E88E3154417B14AE3797FF5041000000708D315441713D0AD799FF5041C3F528BC8C315441C3F528CC9AFF5041C3F528CC8C3154413D0AD7139CFF5041295C8FE28D315441A4703D2A9DFF50415C8FC2658E3154411F85EB819EFF5041AE47E14A8F31544114AE47619EFF50413D0AD7D3903154410AD7A3409EFF50418FC2F5C89131544148E17A049FFF5041E17A149E92315441B81E852BA0FF5041D7A3707D92315441713D0A37A2FF50413D0AD7E390315441D7A3704DA3FF50411F85EB8190315441666666D6A4FF50417B14AEB78E315441F6285C5FA6FF5041713D0A978E315441295C8FC2A9FF504185EB51D88E3154415C8FC245AAFF5041F6285C0F9031544148E17A14AAFF50415C8FC22591315441B81E853BABFF5041C3F5284C92315441A4703D8AB0FF5041295C8F7293315441A4703D1AB6FF50419A9999A994315441295C8F22BDFF5041000000C09531544101030000000100000023000000C3F528BC5EFF5041666666764C31544114AE472161FF5041713D0A974C3154419A99999962FF50419A9999694B315441CDCCCCFC63FF504100000090493154413D0AD7B364FF5041B81E85AB47315441AE47E18A65FF5041CDCCCCBC45315441A4703D2A65FF504148E17A8444315441B81E854B60FF5041713D0A5741315441AE47E18A60FF50415C8FC2F53D31544148E17A3460FF50419A9999D93A31544114AE47B15EFF5041B81E851B37315441713D0A975CFF5041AE47E14A3431544185EB51A85AFF5041E17A145E333154413333336358FF504185EB514833315441295C8FF255FF5041EC51B89E3331544148E17A4454FF504114AE47C13431544185EB519853FF5041AE47E19A36315441713D0A3753FF50413D0AD75338315441C3F528EC52FF5041666666763931544148E17A1452FF5041E17A146E3A31544185EB516851FF504114AE47F13B315441CDCCCCFC50FF5041A4703D6A3D31544185EB514851FF5041333333233F315441CDCCCCFC50FF5041B81E855B40315441295C8F3251FF5041EC51B8BE413154418FC2F58851FF504114AE47014331544152B81E5552FF5041D7A370AD43315441713D0A3753FF5041E17A140E44315441EC51B82E54FF50419A999959443154417B14AEE755FF5041295C8FD24531544114AE47A157FF5041B81E856B473154415C8FC2A559FF504185EB519848315441B81E852B5CFF5041D7A370DD4A3154419A9999995DFF5041AE47E10A4C315441C3F528BC5EFF5041666666764C3154410103000000010000001B000000666666F695FF50413D0AD7F36D31544148E17A1495FF50410AD7A3806C31544185EB519893FF50410AD7A3B06B3154410AD7A34092FF5041D7A3704D6B315441AE47E1EA8FFF5041D7A3704D6B31544185EB51988CFF50411F85EB416C315441B81E858B8AFF5041AE47E11A6D3154410AD7A3A089FF504114AE47216E315441B81E85EB88FF5041AE47E18A6F3154417B14AE5789FF50410AD7A3D0703154411F85EBF189FF5041B81E85FB71315441C3F5284C8AFF504152B81EA573315441A4703D0A8BFF50411F85EBE174315441666666B68BFF5041713D0A5775315441666666268EFF50418FC2F57876315441D7A370CD90FF5041AE47E18A76315441713D0A1794FF50411F85EB21783154415C8FC20597FF5041EC51B85E7931544148E17A9498FF50413333338379315441295C8F5299FF50415C8FC2857831544185EB518899FF504148E17A2477315441AE47E19A99FF504114AE47F17531544185EB518899FF50413D0AD72374315441EC51B8EE98FF5041C3F5288C72315441AE47E1EA96FF504152B81EF57031544114AE475196FF504114AE47C16F315441666666F695FF50413D0AD7F36D3154410103000000070000002C00000048E17A6485FF504152B81EC5443154415C8FC21584FF5041AE47E10A453154411F85EB1182FF50416666669645315441295C8FF27FFF5041F6285CEF44315441333333637DFF5041A4703D3A44315441333333437BFF5041E17A141E4431544148E17AB478FF5041E17A141E4431544185EB51E876FF504152B81EC544315441D7A370ED75FF50415C8FC22548315441AE47E16A76FF5041C3F528AC493154419A99994977FF5041AE47E1FA4A315441713D0A3778FF5041D7A3702D4C31544148E17AB478FF50413D0AD7434D3154410AD7A3107AFF5041C3F5282C4F315441000000F07AFF5041AE47E17A50315441666666067CFF50416666664652315441000000A07CFF50416666666654315441F6285C0F7DFF5041295C8F3256315441B81E85DB7EFF50415C8FC2A558315441CDCCCCAC7FFF504114AE47E15A315441A4703D2A80FF50415C8FC2755C31544152B81E2581FF50418FC2F5C85C315441CDCCCC7C83FF5041E17A146E583154419A99993988FF504100000060583154411F85EB618BFF504185EB510856315441F6285C8F8DFF5041CDCCCCCC5331544114AE47F18DFF5041D7A370AD51315441666666A68EFF50410AD7A35050315441EC51B81E90FF50417B14AE974D315441E17A14FE90FF5041E17A144E4B315441EC51B83E92FF5041713D0A8748315441295C8FD293FF5041EC51B80E47315441D7A370CD94FF50410AD7A35045315441295C8FD293FF5041D7A370DD42315441D7A3706D91FF50418FC2F548413154417B14AE778FFF50413D0AD793403154415C8FC2658DFF5041CDCCCC9C413154417B14AEA78BFF504114AE47C14231544114AE47218AFF504114AE47C142315441CDCCCCFC88FF5041C3F528BC433154413D0AD7F387FF50410AD7A3504531544185EB516887FF5041000000C04531544114AE475186FF5041295C8F424531544148E17A6485FF504152B81EC544315441050000007B14AEA78BFF50411F85EB514D315441D7A370ED8BFF5041666666C64C3154418FC2F5288EFF5041EC51B88E4C31544114AE47F18DFF5041713D0A774E3154417B14AEA78BFF50411F85EB514D315441040000003D0AD77382FF5041A4703DBA4931544152B81EF584FF50410AD7A32049315441E17A14DE83FF504185EB51784B3154413D0AD77382FF5041A4703DBA49315441050000001F85EB3184FF50413333337357315441A4703D8A83FF5041B81E85CB563154418FC2F5A888FF5041A4703DBA493154413D0AD7A389FF5041A4703DBA493154411F85EB3184FF5041333333735731544104000000A4703DDA81FF50410AD7A38057315441CDCCCC5C81FF5041A4703DBA54315441713D0AC782FF50419A99992955315441A4703DDA81FF50410AD7A3805731544108000000E17A14DE8EFF5041D7A3708D44315441000000408FFF5041AE47E15A433154413D0AD7D390FF50419A9999F9423154413D0AD74391FF504148E17AD44131544152B81EA591FF50419A9999F942315441E17A148E90FF504185EB51D843315441E17A14FE90FF50416666669645315441E17A14DE8EFF5041D7A3708D44315441070000009A9999E989FF50410AD7A3504531544185EB51C88AFF5041AE47E10A45315441AE47E1BA8AFF5041295C8F12493154419A9999C987FF5041713D0AF748315441295C8F2287FF50410AD7A370473154416666662689FF504148E17A54473154419A9999E989FF50410AD7A35045315441
+</a>
+
+<b>
+010600000001000000010300000001000000370000008EB1DA7E63FF5041B04CA06D43315441B81E854B60FF5041713D0A5741315441AE47E18A60FF50415C8FC2F53D3154410762E73760FF50417B6926F93A315441013C06EC5FFF5041FF3251263A315441673C5FD95EFF50412B0FB97E37315441D6E760E15DFF50411F172A0536315441B7CE8CC75DFF5041EF4495E23531544153383AAD5CFF5041C81A9668343154414149B2CD5BFF50419F8781EA33315441A8DF14085BFF5041D7ACEA8B3331544140FCA88D5AFF5041B8EB145D33315441E025C0DD59FF5041C7D8875833315441459F909858FF50419778514A333154411A13FD5357FF5041E178D56D33315441F6B9689355FF504199E500DF33315441D643E17C55FF5041C85D39EE33315441ABD4F2BD54FF50415D67376F343154413A86D93554FF504192E386E9343154414604FADE53FF5041203482D83531544104A0D58A53FF5041682B02D836315441FE34418C53FF5041961B145237315441C3F528EC52FF50416666667639315441E4C7793852FF50411A62BE443A3154412D4E3A6651FF5041F6849DF83B3154412138D30051FF5041D5D6205C3D31544109D4B82951FF5041FDE889703E31544185EB514851FF5041333333233F315441AFA0BC4551FF50413D09E22D3F3154419623540751FF50411F9C15A1403154414892EC3D51FF50413F6025E941315441AFE8EC8E51FF5041C1764F0643315441D49C345D52FF5041BD0FE6B043315441EC51B82E54FF50419A999959443154417B14AEE755FF5041295C8FD2453154411504878956FF50418EDC716846315441BCF9AB0658FF5041602B92A6473154414CC2741759FF5041360F7145483154415C8FC2A559FF504185EB5198483154411FD3F9105AFF5041ECBCCDF848315441E1EFC7265BFF50419FFDCCF24931544194E584F55BFF50418F35D8AC4A3154416C2B523E5DFF5041B7EAB7BF4B315441028ED6BF5DFF5041DE9F07194C315441D0906CA15EFF50412EAC816C4C315441CF97552C5FFF5041F2275F7C4C31544114AE472161FF5041713D0A974C3154419A99999962FF50419A9999694B315441EE9A68F562FF50417F4230EF4A315441BAF4DC0F64FF50419FF18A5D493154413D0AD7B364FF5041B81E85AB473154415CBF6BEA64FF50415D93F32D47315441A55F6F8565FF50416FFD33AB45315441A4703D2A65FF504148E17A84443154418EB1DA7E63FF5041B04CA06D43315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498674 - 3669847
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000190000000AD7A360A50151415C8FC215552C544148E17A74A4015141295C8FE2532C5441EC51B80EA4015141F6285C8F532C5441A4703D4AA30151419A999979552C544148E17AF49F0151419A9999A95E2C5441C3F5284C9F01514185EB51D8642C5441295C8F429E015141A4703D6A672C54419A9999099E015141295C8FB2692C5441C3F528FCA30151413D0AD7536F2C544166666696A501514114AE47F16F2C544148E17A54A70151413D0AD7E36C2C54410AD7A300AB0151417B14AEE7682C5441C3F528FCAB015141A4703DDA652C5441D7A370DDAC015141E17A14AE632C54418FC2F5E8B001514148E17A54622C54410AD7A3C0AF01514185EB5148612C5441713D0A97AE015141AE47E15A602C54413D0AD7E3AD015141295C8FD25F2C544166666656AC015141000000A05E2C5441713D0A67AB015141E17A14CE5D2C5441000000A0AA015141D7A370DD5C2C5441295C8FA2A9015141D7A3706D5B2C544114AE4781A8015141000000D0592C5441713D0AB7A601514166666626572C54410AD7A360A50151415C8FC215552C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000026ED1FA49F015141A5939746612C544181AAEE739F01514194E95662632C54413A64B04F9F0151416FEA22B7642C5441D16262159F015141385B0160652C5441AD7894AA9E015141D8F4D06C662C544113EA564F9E015141F371954A672C5441582DEA3A9E015141C40EABB8672C5441E1AC45179E0151415859385F682C5441CED34A789F015141442776E3692C5441F8981B36A401514128978AFC6E2C54411EF2E03AA5015141B23852F46D2C54417A1BDB37A7015141EEA4F2916B2C54416B6DB35DA9015141F638FCBD682C5441F46512E3AA0151415CBA7883662C5441DAAC57A1AA015141FCBEC70B622C544197ECF1BAA80151410E7461AE5D2C5441550ED280A7015141B24E53195C2C5441EC7B41BAA60151417488CB025B2C5441F54F8D5CA6015141F10215F75A2C54418C36C17EA5015141C37F5BDB5A2C5441350B91B9A4015141B3E0F00F5B2C5441DFDF60F4A301514126913B2A5B2C5441440E1BBFA10151415E51A1105D2C5441F4007392A1015141096CF1695D2C544126ED1FA49F015141A5939746612C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498917 - 238041
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000EF0000001F85EBD1300851415C8FC2D5073454418FC2F5D82E085141B81E85EB0634544148E17AA42D085141B81E854B06345441F6285CDF2C085141D7A3706D05345441295C8F322C0851411F85EB5104345441EC51B8FE2A085141EC51B8AE023454419A9999392A085141000000A00134544152B81E05290851410AD7A39000345441000000A02708514100000050FF3354417B14AE77260851415C8FC2C5FD335441EC51B8BE2508514100000060FC335441666666A625085141E17A14EEFA3354416666664626085141A4703D1AF9335441EC51B80E28085141CDCCCC8CF63354418FC2F598290851419A9999E9F43354419A9999792B08514133333393F43354417B14AE572C0851410AD7A390F3335441CDCCCC1C2D0851419A9999F9F133544185EB51883008514185EB5128F13354417B14AED7320851417B14AE87F03354419A999949340851418FC2F518F03354415C8FC2053608514114AE47F1EE3354415C8FC2453708514133333373ED335441EC51B8FE370851419A999979EB3354415C8FC2253D0851410AD7A3C0EA335441666666663E0851411F85EB91EB335441A4703D5A3E08514185EB5138EE335441D7A370AD3D08514114AE4791EF335441A4703D0A3C0851411F85EB71F13354419A9999C93A08514152B81E15F333544148E17A6439085141666666E6F3335441A4703D7A38085141713D0A27F5335441A4703D1A39085141CDCCCC8CF633544114AE47B13A085141666666D6F63354415C8FC2853C085141AE47E1BAF5335441C3F5281C3E0851410AD7A330F43354417B14AE973E085141E17A142EF333544114AE479140085141C3F528FCF2335441F6285C0F4208514185EB5168F23354419A99993944085141713D0A37F2335441E17A140E46085141E17A14DEF0335441D7A370BD47085141333333B3EE335441AE47E15A470851418FC2F528ED3354410AD7A3E042085141000000E0E83354411F85EB214008514100000050E53354415C8FC2C53D085141B81E852BE1335441333333C33C08514148E17AF4DE3354418FC2F5383B085141F6285C8FDD335441E17A14AE3908514152B81EA5DC335441B81E85AB3808514185EB51F8DB335441AE47E16A370851418FC2F548DA335441B81E855B36085141EC51B8BED8335441295C8FA2350851418FC2F5F8D733544148E17A7436085141AE47E1DAD53354419A99993937085141E17A14EED3335441EC51B85E37085141E17A143ED23354418FC2F548380851410AD7A360D1335441C3F528EC39085141B81E853BD13354419A9999C93A085141F6285C6FD233544148E17AA43A085141C3F5281CD33354415C8FC295390851413D0AD743D4335441E17A146E3808514148E17AE4D4335441713D0AD7360851419A999949D63354415C8FC2A5360851411F85EB71D733544185EB51A837085141A4703D2AD8335441295C8F923808514148E17A14D93354411F85EBA1390851417B14AE17DA3354411F85EB413A08514166666686DA335441666666163C0851410AD7A3D0DA33544185EB51E83C085141B81E854BDB335441000000B03E08514166666676DD335441F6285C1F3F085141713D0AB7DE3354410AD7A3F03F085141CDCCCCBCE0335441B81E85CB3F08514185EB51D8E13354419A9999A94008514152B81E25E3335441CDCCCC4C42085141D7A3703DE33354415C8FC20543085141A4703D4AE3335441713D0AC7460851413D0AD7F3E2335441EC51B8EE47085141C3F5280CE3335441A4703D6A48085141CDCCCCACE3335441CDCCCCCC48085141B81E85BBE4335441C3F528DC490851419A999999E53354413D0AD7034B085141C3F528FCE533544148E17A444C08514185EB5108E63354413D0AD7534D0851413D0AD7E3E5335441A4703D4A4E085141D7A3708DE53354411F85EB714F08514185EB51C8E433544148E17A7450085141CDCCCCACE333544152B81E15510851419A9999A9E23354415C8FC2F552085141713D0A47E233544152B81EA55308514133333393E2335441713D0A17550851419A999989E0335441666666D65508514185EB5198DF3354413D0AD7735608514114AE47B1DD3354413D0AD7F356085141CDCCCC1CDC335441666666665708514148E17AB4DA335441CDCCCCEC5708514114AE4791D8335441000000705808514185EB5188D83354419A9999195B0851413D0AD723D7335441EC51B84E5E08514166666696D5335441AE47E10A62085141713D0AF7D33354417B14AE5763085141713D0A57D3335441AE47E10A6508514152B81E95D233544166666636660851418FC2F548D23354417B14AEA767085141B81E85EBD13354410000000069085141EC51B8BED1335441666666066A0851413D0AD7A3D1335441666666E66A085141295C8FC2D133544148E17A446C085141295C8F62D1335441F6285CCF5E08514114AE47F1CA335441EC51B80E550851411F85EB51C23354411F85EBC14608514152B81EC5B03354417B14AE1743085141D7A3705DAA335441F6285C3F420851410AD7A3A0A833544100000010420851417B14AE27AE33544148E17AB448085141AE47E13AB733544148E17AF449085141000000F0BA3354410AD7A30044085141EC51B86EBF33544148E17AC44408514148E17A34C0335441AE47E16A45085141E17A14EEC03354415C8FC215470851410AD7A350C3335441C3F5288C4708514152B81EE5C33354411F85EB6145085141D7A370BDC2335441F6285C4F4308514148E17A04C23354416666665641085141666666C6C133544185EB51D83F085141A4703DBAC1335441000000B03E0851417B14AEF7C1335441D7A370AD3D085141C3F528DCC03354418FC2F5D83B085141C3F5289CBF335441C3F5288C3A08514152B81E65BD335441333333D339085141333333F3BB335441AE47E10A38085141A4703D9ABA3354413333334336085141C3F528BCB9335441CDCCCC4C35085141713D0A97B93354419A9999493408514148E17AD4B93354419A9999A933085141EC51B81EBA335441B81E85CB320851410AD7A340B933544185EB5128310851417B14AE47B7335441EC51B8FE2A08514100000060B73354419A9999292D085141B81E85FBB1335441A4703D1A2C08514185EB5158B033544185EB51482B085141A4703D7AAF33544148E17AB42A08514148E17A34AC335441EC51B8FE2A085141E17A14EEA8335441EC51B8FE2A0851410AD7A360A63354418FC2F5E82B085141713D0AC7A3335441CDCCCC7C2C08514185EB5168A0335441000000302B0851415C8FC205A03354418FC2F55828085141E17A146EA23354419A999949270851415C8FC235A4335441F6285CFF26085141EC51B89EA6335441CDCCCCFC25085141E17A144EA833544185EB51C8240851417B14AE87AB335441F6285CCF2208514100000000AB33544185EB513821085141AE47E13AAA335441C3F528FC1E0851419A999999AB335441F6285CDF1D085141A4703D5AAC335441F6285CDF1C085141713D0A17AD3354417B14AEE71B085141713D0A37AE33544185EB51C81A085141C3F528CCAF3354419A9999691A085141CDCCCC9CB1335441F6285CDF180851419A9999F9B233544148E17A5417085141CDCCCC5CB333544152B81E6515085141A4703DFAB23354415C8FC2C5130851415C8FC275B23354413333334313085141B81E85FBB1335441EC51B83E12085141EC51B85EB23354413333330310085141B81E85DBB23354419A999979110851417B14AE57B43354417B14AE8713085141E17A142EB5335441C3F528CC1408514166666616B73354419A999959170851418FC2F568BA33544185EB51C8170851410AD7A330BC335441CDCCCC0C19085141EC51B8CEBD3354410AD7A3D01A085141CDCCCC8CBE335441E17A14AE1F085141AE47E10AC0335441A4703DAA220851410AD7A370C1335441C3F5281C24085141B81E85EBC13354410AD7A3902608514114AE4751C3335441000000402808514152B81E85C4335441F6285CEF290851417B14AEE7C43354417B14AE572C085141713D0A57C5335441E17A14AE2C0851418FC2F568C73354411F85EBE12D08514133333353C8335441A4703D0A2F085141AE47E17AC9335441CDCCCCFC32085141AE47E16ACC3354417B14AE2735085141AE47E15ACF335441D7A370CD330851417B14AE37D6335441CDCCCCFC32085141A4703D8AD73354419A9999B92B08514148E17A74D3335441A4703D2A2A08514148E17AC4D5335441D7A3701D29085141AE47E13AD733544152B81E75280851411F85EB41D8335441C3F5284C2808514114AE47C1D93354410AD7A38029085141CDCCCC7CDB335441D7A3706D2B085141F6285CDFDB335441000000202E085141CDCCCC2CDD3354410AD7A300300851410AD7A360DE335441F6285CBF3208514166666666E0335441AE47E17A340851413D0AD7F3E233544152B81E65350851417B14AE27E4335441666666F63408514185EB5108E6335441CDCCCC5C32085141AE47E11AE8335441F6285C6F30085141295C8F42E9335441000000202E085141C3F5288CE9335441666666862B085141295C8FE2E933544148E17A142A0851417B14AEA7EA3354417B14AE2728085141000000D0EB335441F6285C5F260851411F85EB41ED3354417B14AE7726085141CDCCCC0CF03354410000004028085141EC51B81EF2335441D7A3708D250851411F85EB01F533544148E17A342408514185EB5148F83354410AD7A300230851411F85EB41FA3354417B14AEE722085141C3F528CCFB33544185EB518823085141A4703D4AFD335441333333A324085141295C8F12FF335441CDCCCCFC25085141A4703D3A00345441F6285CFF260851419A99994901345441295C8F42290851411F85EBB1033454413D0AD7232B085141CDCCCC7C06345441E17A140E2C0851410000002008345441F6285C7F2D0851417B14AEE709345441D7A3705D2E08514148E17A340B3454417B14AEE72F085141333333B30C345441EC51B87E310851419A9999A90D345441E17A142E3308514114AE47D10E3454415C8FC2B53308514152B81E650F345441000000A034085141295C8FA20F3454413D0AD7D3350851413D0AD7330F34544185EB516836085141713D0A870E345441F6285CEF36085141CDCCCC9C0D345441AE47E1CA36085141A4703D9A0C3454411F85EB11360851417B14AE970B345441EC51B80E35085141EC51B8DE0A34544114AE473134085141C3F5287C0A3454419A9999A933085141AE47E14A0A345441CDCCCC5C32085141D7A370FD083454411F85EBD1300851415C8FC2D5073454410103000000010000001D000000295C8F126C0851418FC2F578CF335441D7A370FD6A0851410AD7A300CA3354415C8FC2256B08514100000010C13354419A9999996B085141E17A14BEBC3354411F85EB916B085141F6285C5FBA335441EC51B86E6B0851411F85EB91B1335441EC51B83E6B085141B81E851BA333544185EB5138690851416666669696335441666666A665085141333333A397335441D7A370FD6308514133333313983354418FC2F52865085141CDCCCC2CA13354418FC2F58864085141D7A3701DA3335441A4703D6A610851419A999949A9335441A4703D9A5D085141B81E858BAC335441295C8F8259085141B81E852BAD335441A4703DAA5508514185EB5168AD335441EC51B80E520851410AD7A300A833544185EB51984D0851411F85EBD19C335441E17A14FE480851413D0AD7939D33544148E17A6444085141000000709E3354410AD7A320400851417B14AE179F335441AE47E15A3C0851418FC2F5E89F3354413D0AD7833C08514148E17AF4A2335441333333E3420851418FC2F5E8A7335441EC51B89E4708514100000020B033544185EB51C8550851413D0AD783C133544148E17A545F0851417B14AE07CA3354413D0AD7236C0851415C8FC265D0335441295C8F126C0851418FC2F578CF335441
+</a>
+
+<b>
+010600000001000000010300000001000000E60000009A9999493408514148E17AD4B93354419CF152ED33085141E1CA4BFFB93354419A9999A933085141EC51B81EBA335441B81E85CB320851410AD7A340B93354414F09E52E32085141012D5FE1B83354410A2029CC30085141E8E1BC63B7335441EC51B8FE2A08514100000060B73354419A9999292D085141B81E85FBB1335441A4703D1A2C08514185EB5158B033544185EB51482B085141A4703D7AAF335441BC864DCE2A085141804E3BF5AC3354411C1570522A085141BFA14BF6AB335441D43BE8CE2A085141C13F1FBFAA335441EC51B8FE2A085141E17A14EEA8335441EC51B8FE2A0851410AD7A360A633544132E9CA3F2B085141F752809BA5335441DD0CF5F12A085141AD5FBC53A3335441C93E04E92B085141F1A2AB5CA2335441919C6B0E2C085141B5C62031A133544117D4D6BF2B085141B26C6245A0335441ECF69B212B08514159E667B6A03354410A1C3D762908514104B020F1A13354416BACF1E6280851419BB1E4EBA23354419FA2136827085141C23CDA41A5335441ED199BE3270851415103BC0FA633544110DC319A260851415162FC63A933544110DC319A2608514161D3330CAB3354413E769B2725085141F09915DAAB3354413E48A83324085141FCFA42F0AB33544113B2DA462308514197BCEAFAAB3354410134E7C621085141504BBB87AB335441234038D620085141A8154D50AC3354417D2A61B81F0851418478EC0FAD3354412A8C50721E08514111E24CE9AD335441E8105B2B1D0851418A8B48AEAE335441FFC028CD1C085141E721CDE6AE3354413AAEE5591C0851419FE904E0AF33544102D96BF71B085141E0B659B9B03354417EAF7E051B085141C06DD8EDB2335441F79842E5190851419D5DE7E4B3335441BCD16017190851413DAC4137B4335441A6B56B2718085141C0C3404BB4335441BC9D5421170851414ACA6365B43354418DB5E2F215085141F7FB6A22B533544177B7D9DF15085141CD9A502EB533544107A6E8D61608514130EFF597B733544140459D7B17085141DC429B01BA3354411B5BD99B18085141F46F1342BC335441007115BC1908514166FCD6DDBD335441E17A14AE1F085141AE47E10AC03354417145D8CF200851411478A970C0335441D4997D39230851410CC803C3C0335441C7749F9F23085141359A86CBC03354413E769B272508514156EF30ECC033544143F36DBA270851417F7CF487C2335441E341C80C2808514151E28AFAC3335441BF7F315629085141B06B037FC333544192E5C7C82A08514151E28AFAC3335441642331122C085141480AB823C433544140619A5B2D085141D8F8C61AC5335441EA396D322D085141A3AEB7DFC6335441C54FA9522E0851411663A8A4C8335441B76A308A310851417667F3BBCA335441A77750C033085141C7193D9ACB3354414EBED5F333085141D05502B3CB3354416AFC3E3D35085141614411AACC335441EC4B998F35085141D5202F98CE335441E3B864D4340851412EDF2A65D1335441E91A0D95340851411188DD42D2335441A1EF9687340851413E2D2B87D2335441CA7B262334085141758BCA84D43354413A8B281834085141484C90BCD43354412221FA0934085141EACA8404D53354414EBED5F3330851417695A650D6335441B0F489B1330851415E82F464D6335441CDCCCCFC32085141A4703D8AD7335441A271244B2C0851417281FD06D4335441DEDEFD8D2A0851413FF19418D7335441ADA246402A0851416A6903B4D7335441B7F52E7629085141FA836E2CD93354414A816057290851410B232065D9335441E4AD08F22A085141E938692DDB3354410F4B5E3B2C085141C903D3F1DB335441C2FF4E002E0851410B7B5A6DDC335441F1D679733108514191D8CBD4DE3354417EF7F325330851415396E1A4DF33544142D458643408514107D7B5CAE03354410343545B350851419C58D855E3335441008E3BED34085141475FB99FE43354418B73ADE3330851416A3437CFE5335441B82F503F330851418625DA68E6335441D2F6F773320851412A455FD8E633544183CE982E3108514102FE7C71E73354411D8851642F085141F54BE53BE83354418EF282872D085141D1DF93F7E833544153F801152C085141E5247537E9335441E1AF4D512B085141DEEAD466E9335441ED8B5DEB2A0851419F5B249BE93354414F505291290851417398B74CEA3354410B82C36E28085141DBAD40D3EA335441CF94A71D2708514157AB9F51EB33544107A83A42260851412D8E33A3EC3354415201419925085141F2B79C4EED33544198FC8D2D24085141EEC82085EE335441C26682B223085141D4DF4351EF335441C26682B2230851412479F47AF03354410764AB8124085141D7A289D8F133544186D31BE524085141724C377AF2335441AF986EE4250851419C118A79F33354411ED4EE0427085141C223DC00F4335441714CBF5D29085141AA3F06F8F33354411E86BBC32B085141A652E226F2335441D8009BB52C08514189F4D36CF13354417AEC40F42E085141B1728323F13354417430535C30085141F0FB37B4F03354412DC06B16320851411F528830F03354413B88239D330851416FD7A83EEF3354413F75476E35085141F1779A84EE335441CEDDF03A36085141CFF21F80ED3354411F29C9CF360851411B51D443EC3354410F36A7D4360851418EE1F9EBEB335441EC51B8FE370851419A999979EB335441CF72B0063908514114B6DDC0EB335441DE593B2A3B08514183B6E8C5EA335441ED10FDA33E085141F4597781EA33544185CE4EFF3E0851416ECDEBC8EB3354412E8106403F08514196A4FCB0EC335441DDB68C743E085141A9FF6664EE33544178C1B5183E085141A2B3CC26EF335441D7A370AD3D08514114AE4791EF335441A4703D0A3C0851411F85EB71F13354417D6A0AA23A0851416BF5F407F33354416573B00639085141AA686821F4335441F13152C538085141E0571711F53354419767AFDB38085141520720E0F53354416E6E080339085141AE488C1BF6335441386214763908514160581F57F6335441A76961363A085141311B70B4F633544199F36BC53B0851412C0E482FF6335441A5BC162F3C085141102855EFF5335441681316DC3C085141B5895511F53354413BF82E503D0851417BA1A172F4335441BE93A64E3E085141A11BF3C6F3335441D24CFDF73E0851418DAA4F6CF3335441B5DED0874008514165713BB1F233544127FBC2CF4108514121D568A0F233544114C8B00543085141C07331E1F2335441F251714244085141C52BBB9CF233544181CBE3C045085141B5F08488F1335441CFE519E54608514133C259F7EF335441D7A370BD47085141333333B3EE335441F65BBFDF4708514162A29E3EEE335441C5187B2247085141D664DB16ED3354418570734E45085141AAEE1369EA335441E851ABCB430851414F388182E9335441B420D2F4420851412AE2F68FE8335441B178012F41085141992A39ADE63354417A07CDCE400851413782DC41E5335441CBC0E0B13F0851411AD39FAAE33354419474010D3F0851419639E160E23354415C8FC2C53D085141B81E852BE1335441639D49793D085141C5E36413E0335441AA2D106B3D085141914F9DA6DE33544134DA09753C085141E0494D8CDD335441AE2ABD4B3B085141E91DFA41DD335441015AE7E739085141A8A904E9DC335441FB16C674380851410B7B5A6DDC335441176BC01F3808514169BC4B90DB33544161080EA7370851415AEF7B56DA3354414862D5AF36085141C8D75AB1D9335441B81E855B36085141EC51B8BED8335441CC862F9336085141B139E22DD8335441DED85C2B37085141DCD20F9AD7335441A6FCF906380851415BE6D911D83354418F089FF13808514142B83A93D83354418C05AEA7390851419FE685B6D93354413CF1835E3A0851419E74C752DA335441666666163C0851410AD7A3D0DA33544185EB51E83C085141B81E854BDB335441000000B03E08514166666676DD335441F6285C1F3F085141713D0AB7DE3354410AD7A3F03F085141CDCCCCBCE0335441B81E85CB3F08514185EB51D8E1335441B0253B67410851417ED59FC0E2335441412B913742085141125A649CE23354411298F573430851414D045E65E2335441D2DEC3C3460851411A2155E4E2335441EC51B8EE47085141C3F5280CE3335441A4703D6A48085141CDCCCCACE3335441ED04455B490851416489942AE43354410EBE0DF949085141CBE40827E533544130DCF7394A085141FBF76C7CE53354413D0AD7034B085141C3F528FCE533544148E17A444C08514185EB5108E6335441E9EBDE914D085141CC68BFD6E533544170E468024E085141A6040E46E5335441845828FF4E085141107FE668E43354412828243A50085141DD135C4BE333544105C3395051085141954D7359E2335441798468E05208514156B17EDAE13354415A9A5F62540851413E995888E1335441713D0A17550851419A999989E0335441666666D65508514185EB5198DF3354413D0AD7735608514114AE47B1DD3354413D0AD7F356085141CDCCCC1CDC335441666666665708514148E17AB4DA335441CDCCCCEC5708514114AE4791D8335441B5B23AED560851418ED982A6D7335441BAF42F52510851411D279C3ED2335441102026D84F085141691D5511D1335441A4DBD6464F085141B88B1505D0335441AF5CBA794E085141FA8B8AE0CE335441E0D66D4B4A085141F18730C5C833544128EAEEC047085141640BF319C5335441E05E2142460851410DAA0D35C33354411F85EB6145085141D7A370BDC2335441F6285C4F4308514148E17A04C23354416666665641085141666666C6C133544185EB51D83F085141A4703DBAC1335441000000B03E0851417B14AEF7C1335441B441F1AB3D0851417D22B7FDC03354414FFFFE163D085141B7D36575C03354419AD001513C085141C2EF30ECC0335441696B6BDE3A085141270122F5BF33544162390E8B3A085141960FA4B2BD33544118552FBE390851418847E618BC3354413696D2CA370851413F52C698BA3354413333334336085141C3F528BCB9335441CDCCCC4C35085141713D0A97B93354419A9999493408514148E17AD4B9335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498917 - 260570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000EF0000001F85EBD1300851415C8FC2D5073454418FC2F5D82E085141B81E85EB0634544148E17AA42D085141B81E854B06345441F6285CDF2C085141D7A3706D05345441295C8F322C0851411F85EB5104345441EC51B8FE2A085141EC51B8AE023454419A9999392A085141000000A00134544152B81E05290851410AD7A39000345441000000A02708514100000050FF3354417B14AE77260851415C8FC2C5FD335441EC51B8BE2508514100000060FC335441666666A625085141E17A14EEFA3354416666664626085141A4703D1AF9335441EC51B80E28085141CDCCCC8CF63354418FC2F598290851419A9999E9F43354419A9999792B08514133333393F43354417B14AE572C0851410AD7A390F3335441CDCCCC1C2D0851419A9999F9F133544185EB51883008514185EB5128F13354417B14AED7320851417B14AE87F03354419A999949340851418FC2F518F03354415C8FC2053608514114AE47F1EE3354415C8FC2453708514133333373ED335441EC51B8FE370851419A999979EB3354415C8FC2253D0851410AD7A3C0EA335441666666663E0851411F85EB91EB335441A4703D5A3E08514185EB5138EE335441D7A370AD3D08514114AE4791EF335441A4703D0A3C0851411F85EB71F13354419A9999C93A08514152B81E15F333544148E17A6439085141666666E6F3335441A4703D7A38085141713D0A27F5335441A4703D1A39085141CDCCCC8CF633544114AE47B13A085141666666D6F63354415C8FC2853C085141AE47E1BAF5335441C3F5281C3E0851410AD7A330F43354417B14AE973E085141E17A142EF333544114AE479140085141C3F528FCF2335441F6285C0F4208514185EB5168F23354419A99993944085141713D0A37F2335441E17A140E46085141E17A14DEF0335441D7A370BD47085141333333B3EE335441AE47E15A470851418FC2F528ED3354410AD7A3E042085141000000E0E83354411F85EB214008514100000050E53354415C8FC2C53D085141B81E852BE1335441333333C33C08514148E17AF4DE3354418FC2F5383B085141F6285C8FDD335441E17A14AE3908514152B81EA5DC335441B81E85AB3808514185EB51F8DB335441AE47E16A370851418FC2F548DA335441B81E855B36085141EC51B8BED8335441295C8FA2350851418FC2F5F8D733544148E17A7436085141AE47E1DAD53354419A99993937085141E17A14EED3335441EC51B85E37085141E17A143ED23354418FC2F548380851410AD7A360D1335441C3F528EC39085141B81E853BD13354419A9999C93A085141F6285C6FD233544148E17AA43A085141C3F5281CD33354415C8FC295390851413D0AD743D4335441E17A146E3808514148E17AE4D4335441713D0AD7360851419A999949D63354415C8FC2A5360851411F85EB71D733544185EB51A837085141A4703D2AD8335441295C8F923808514148E17A14D93354411F85EBA1390851417B14AE17DA3354411F85EB413A08514166666686DA335441666666163C0851410AD7A3D0DA33544185EB51E83C085141B81E854BDB335441000000B03E08514166666676DD335441F6285C1F3F085141713D0AB7DE3354410AD7A3F03F085141CDCCCCBCE0335441B81E85CB3F08514185EB51D8E13354419A9999A94008514152B81E25E3335441CDCCCC4C42085141D7A3703DE33354415C8FC20543085141A4703D4AE3335441713D0AC7460851413D0AD7F3E2335441EC51B8EE47085141C3F5280CE3335441A4703D6A48085141CDCCCCACE3335441CDCCCCCC48085141B81E85BBE4335441C3F528DC490851419A999999E53354413D0AD7034B085141C3F528FCE533544148E17A444C08514185EB5108E63354413D0AD7534D0851413D0AD7E3E5335441A4703D4A4E085141D7A3708DE53354411F85EB714F08514185EB51C8E433544148E17A7450085141CDCCCCACE333544152B81E15510851419A9999A9E23354415C8FC2F552085141713D0A47E233544152B81EA55308514133333393E2335441713D0A17550851419A999989E0335441666666D65508514185EB5198DF3354413D0AD7735608514114AE47B1DD3354413D0AD7F356085141CDCCCC1CDC335441666666665708514148E17AB4DA335441CDCCCCEC5708514114AE4791D8335441000000705808514185EB5188D83354419A9999195B0851413D0AD723D7335441EC51B84E5E08514166666696D5335441AE47E10A62085141713D0AF7D33354417B14AE5763085141713D0A57D3335441AE47E10A6508514152B81E95D233544166666636660851418FC2F548D23354417B14AEA767085141B81E85EBD13354410000000069085141EC51B8BED1335441666666066A0851413D0AD7A3D1335441666666E66A085141295C8FC2D133544148E17A446C085141295C8F62D1335441F6285CCF5E08514114AE47F1CA335441EC51B80E550851411F85EB51C23354411F85EBC14608514152B81EC5B03354417B14AE1743085141D7A3705DAA335441F6285C3F420851410AD7A3A0A833544100000010420851417B14AE27AE33544148E17AB448085141AE47E13AB733544148E17AF449085141000000F0BA3354410AD7A30044085141EC51B86EBF33544148E17AC44408514148E17A34C0335441AE47E16A45085141E17A14EEC03354415C8FC215470851410AD7A350C3335441C3F5288C4708514152B81EE5C33354411F85EB6145085141D7A370BDC2335441F6285C4F4308514148E17A04C23354416666665641085141666666C6C133544185EB51D83F085141A4703DBAC1335441000000B03E0851417B14AEF7C1335441D7A370AD3D085141C3F528DCC03354418FC2F5D83B085141C3F5289CBF335441C3F5288C3A08514152B81E65BD335441333333D339085141333333F3BB335441AE47E10A38085141A4703D9ABA3354413333334336085141C3F528BCB9335441CDCCCC4C35085141713D0A97B93354419A9999493408514148E17AD4B93354419A9999A933085141EC51B81EBA335441B81E85CB320851410AD7A340B933544185EB5128310851417B14AE47B7335441EC51B8FE2A08514100000060B73354419A9999292D085141B81E85FBB1335441A4703D1A2C08514185EB5158B033544185EB51482B085141A4703D7AAF33544148E17AB42A08514148E17A34AC335441EC51B8FE2A085141E17A14EEA8335441EC51B8FE2A0851410AD7A360A63354418FC2F5E82B085141713D0AC7A3335441CDCCCC7C2C08514185EB5168A0335441000000302B0851415C8FC205A03354418FC2F55828085141E17A146EA23354419A999949270851415C8FC235A4335441F6285CFF26085141EC51B89EA6335441CDCCCCFC25085141E17A144EA833544185EB51C8240851417B14AE87AB335441F6285CCF2208514100000000AB33544185EB513821085141AE47E13AAA335441C3F528FC1E0851419A999999AB335441F6285CDF1D085141A4703D5AAC335441F6285CDF1C085141713D0A17AD3354417B14AEE71B085141713D0A37AE33544185EB51C81A085141C3F528CCAF3354419A9999691A085141CDCCCC9CB1335441F6285CDF180851419A9999F9B233544148E17A5417085141CDCCCC5CB333544152B81E6515085141A4703DFAB23354415C8FC2C5130851415C8FC275B23354413333334313085141B81E85FBB1335441EC51B83E12085141EC51B85EB23354413333330310085141B81E85DBB23354419A999979110851417B14AE57B43354417B14AE8713085141E17A142EB5335441C3F528CC1408514166666616B73354419A999959170851418FC2F568BA33544185EB51C8170851410AD7A330BC335441CDCCCC0C19085141EC51B8CEBD3354410AD7A3D01A085141CDCCCC8CBE335441E17A14AE1F085141AE47E10AC0335441A4703DAA220851410AD7A370C1335441C3F5281C24085141B81E85EBC13354410AD7A3902608514114AE4751C3335441000000402808514152B81E85C4335441F6285CEF290851417B14AEE7C43354417B14AE572C085141713D0A57C5335441E17A14AE2C0851418FC2F568C73354411F85EBE12D08514133333353C8335441A4703D0A2F085141AE47E17AC9335441CDCCCCFC32085141AE47E16ACC3354417B14AE2735085141AE47E15ACF335441D7A370CD330851417B14AE37D6335441CDCCCCFC32085141A4703D8AD73354419A9999B92B08514148E17A74D3335441A4703D2A2A08514148E17AC4D5335441D7A3701D29085141AE47E13AD733544152B81E75280851411F85EB41D8335441C3F5284C2808514114AE47C1D93354410AD7A38029085141CDCCCC7CDB335441D7A3706D2B085141F6285CDFDB335441000000202E085141CDCCCC2CDD3354410AD7A300300851410AD7A360DE335441F6285CBF3208514166666666E0335441AE47E17A340851413D0AD7F3E233544152B81E65350851417B14AE27E4335441666666F63408514185EB5108E6335441CDCCCC5C32085141AE47E11AE8335441F6285C6F30085141295C8F42E9335441000000202E085141C3F5288CE9335441666666862B085141295C8FE2E933544148E17A142A0851417B14AEA7EA3354417B14AE2728085141000000D0EB335441F6285C5F260851411F85EB41ED3354417B14AE7726085141CDCCCC0CF03354410000004028085141EC51B81EF2335441D7A3708D250851411F85EB01F533544148E17A342408514185EB5148F83354410AD7A300230851411F85EB41FA3354417B14AEE722085141C3F528CCFB33544185EB518823085141A4703D4AFD335441333333A324085141295C8F12FF335441CDCCCCFC25085141A4703D3A00345441F6285CFF260851419A99994901345441295C8F42290851411F85EBB1033454413D0AD7232B085141CDCCCC7C06345441E17A140E2C0851410000002008345441F6285C7F2D0851417B14AEE709345441D7A3705D2E08514148E17A340B3454417B14AEE72F085141333333B30C345441EC51B87E310851419A9999A90D345441E17A142E3308514114AE47D10E3454415C8FC2B53308514152B81E650F345441000000A034085141295C8FA20F3454413D0AD7D3350851413D0AD7330F34544185EB516836085141713D0A870E345441F6285CEF36085141CDCCCC9C0D345441AE47E1CA36085141A4703D9A0C3454411F85EB11360851417B14AE970B345441EC51B80E35085141EC51B8DE0A34544114AE473134085141C3F5287C0A3454419A9999A933085141AE47E14A0A345441CDCCCC5C32085141D7A370FD083454411F85EBD1300851415C8FC2D5073454410103000000010000001D000000295C8F126C0851418FC2F578CF335441D7A370FD6A0851410AD7A300CA3354415C8FC2256B08514100000010C13354419A9999996B085141E17A14BEBC3354411F85EB916B085141F6285C5FBA335441EC51B86E6B0851411F85EB91B1335441EC51B83E6B085141B81E851BA333544185EB5138690851416666669696335441666666A665085141333333A397335441D7A370FD6308514133333313983354418FC2F52865085141CDCCCC2CA13354418FC2F58864085141D7A3701DA3335441A4703D6A610851419A999949A9335441A4703D9A5D085141B81E858BAC335441295C8F8259085141B81E852BAD335441A4703DAA5508514185EB5168AD335441EC51B80E520851410AD7A300A833544185EB51984D0851411F85EBD19C335441E17A14FE480851413D0AD7939D33544148E17A6444085141000000709E3354410AD7A320400851417B14AE179F335441AE47E15A3C0851418FC2F5E89F3354413D0AD7833C08514148E17AF4A2335441333333E3420851418FC2F5E8A7335441EC51B89E4708514100000020B033544185EB51C8550851413D0AD783C133544148E17A545F0851417B14AE07CA3354413D0AD7236C0851415C8FC265D0335441295C8F126C0851418FC2F578CF335441
+</a>
+
+<b>
+010600000001000000010300000001000000E60000009A9999493408514148E17AD4B93354419CF152ED33085141E1CA4BFFB93354419A9999A933085141EC51B81EBA335441B81E85CB320851410AD7A340B93354414F09E52E32085141012D5FE1B83354410A2029CC30085141E8E1BC63B7335441EC51B8FE2A08514100000060B73354419A9999292D085141B81E85FBB1335441A4703D1A2C08514185EB5158B033544185EB51482B085141A4703D7AAF335441BC864DCE2A085141804E3BF5AC3354411C1570522A085141BFA14BF6AB335441D43BE8CE2A085141C13F1FBFAA335441EC51B8FE2A085141E17A14EEA8335441EC51B8FE2A0851410AD7A360A633544132E9CA3F2B085141F752809BA5335441DD0CF5F12A085141AD5FBC53A3335441C93E04E92B085141F1A2AB5CA2335441919C6B0E2C085141B5C62031A133544117D4D6BF2B085141B26C6245A0335441ECF69B212B08514159E667B6A03354410A1C3D762908514104B020F1A13354416BACF1E6280851419BB1E4EBA23354419FA2136827085141C23CDA41A5335441ED199BE3270851415103BC0FA633544110DC319A260851415162FC63A933544110DC319A2608514161D3330CAB3354413E769B2725085141F09915DAAB3354413E48A83324085141FCFA42F0AB33544113B2DA462308514197BCEAFAAB3354410134E7C621085141504BBB87AB335441234038D620085141A8154D50AC3354417D2A61B81F0851418478EC0FAD3354412A8C50721E08514111E24CE9AD335441E8105B2B1D0851418A8B48AEAE335441FFC028CD1C085141E721CDE6AE3354413AAEE5591C0851419FE904E0AF33544102D96BF71B085141E0B659B9B03354417EAF7E051B085141C06DD8EDB2335441F79842E5190851419D5DE7E4B3335441BCD16017190851413DAC4137B4335441A6B56B2718085141C0C3404BB4335441BC9D5421170851414ACA6365B43354418DB5E2F215085141F7FB6A22B533544177B7D9DF15085141CD9A502EB533544107A6E8D61608514130EFF597B733544140459D7B17085141DC429B01BA3354411B5BD99B18085141F46F1342BC335441007115BC1908514166FCD6DDBD335441E17A14AE1F085141AE47E10AC03354417145D8CF200851411478A970C0335441D4997D39230851410CC803C3C0335441C7749F9F23085141359A86CBC03354413E769B272508514156EF30ECC033544143F36DBA270851417F7CF487C2335441E341C80C2808514151E28AFAC3335441BF7F315629085141B06B037FC333544192E5C7C82A08514151E28AFAC3335441642331122C085141480AB823C433544140619A5B2D085141D8F8C61AC5335441EA396D322D085141A3AEB7DFC6335441C54FA9522E0851411663A8A4C8335441B76A308A310851417667F3BBCA335441A77750C033085141C7193D9ACB3354414EBED5F333085141D05502B3CB3354416AFC3E3D35085141614411AACC335441EC4B998F35085141D5202F98CE335441E3B864D4340851412EDF2A65D1335441E91A0D95340851411188DD42D2335441A1EF9687340851413E2D2B87D2335441CA7B262334085141758BCA84D43354413A8B281834085141484C90BCD43354412221FA0934085141EACA8404D53354414EBED5F3330851417695A650D6335441B0F489B1330851415E82F464D6335441CDCCCCFC32085141A4703D8AD7335441A271244B2C0851417281FD06D4335441DEDEFD8D2A0851413FF19418D7335441ADA246402A0851416A6903B4D7335441B7F52E7629085141FA836E2CD93354414A816057290851410B232065D9335441E4AD08F22A085141E938692DDB3354410F4B5E3B2C085141C903D3F1DB335441C2FF4E002E0851410B7B5A6DDC335441F1D679733108514191D8CBD4DE3354417EF7F325330851415396E1A4DF33544142D458643408514107D7B5CAE03354410343545B350851419C58D855E3335441008E3BED34085141475FB99FE43354418B73ADE3330851416A3437CFE5335441B82F503F330851418625DA68E6335441D2F6F773320851412A455FD8E633544183CE982E3108514102FE7C71E73354411D8851642F085141F54BE53BE83354418EF282872D085141D1DF93F7E833544153F801152C085141E5247537E9335441E1AF4D512B085141DEEAD466E9335441ED8B5DEB2A0851419F5B249BE93354414F505291290851417398B74CEA3354410B82C36E28085141DBAD40D3EA335441CF94A71D2708514157AB9F51EB33544107A83A42260851412D8E33A3EC3354415201419925085141F2B79C4EED33544198FC8D2D24085141EEC82085EE335441C26682B223085141D4DF4351EF335441C26682B2230851412479F47AF03354410764AB8124085141D7A289D8F133544186D31BE524085141724C377AF2335441AF986EE4250851419C118A79F33354411ED4EE0427085141C223DC00F4335441714CBF5D29085141AA3F06F8F33354411E86BBC32B085141A652E226F2335441D8009BB52C08514189F4D36CF13354417AEC40F42E085141B1728323F13354417430535C30085141F0FB37B4F03354412DC06B16320851411F528830F03354413B88239D330851416FD7A83EEF3354413F75476E35085141F1779A84EE335441CEDDF03A36085141CFF21F80ED3354411F29C9CF360851411B51D443EC3354410F36A7D4360851418EE1F9EBEB335441EC51B8FE370851419A999979EB335441CF72B0063908514114B6DDC0EB335441DE593B2A3B08514183B6E8C5EA335441ED10FDA33E085141F4597781EA33544185CE4EFF3E0851416ECDEBC8EB3354412E8106403F08514196A4FCB0EC335441DDB68C743E085141A9FF6664EE33544178C1B5183E085141A2B3CC26EF335441D7A370AD3D08514114AE4791EF335441A4703D0A3C0851411F85EB71F13354417D6A0AA23A0851416BF5F407F33354416573B00639085141AA686821F4335441F13152C538085141E0571711F53354419767AFDB38085141520720E0F53354416E6E080339085141AE488C1BF6335441386214763908514160581F57F6335441A76961363A085141311B70B4F633544199F36BC53B0851412C0E482FF6335441A5BC162F3C085141102855EFF5335441681316DC3C085141B5895511F53354413BF82E503D0851417BA1A172F4335441BE93A64E3E085141A11BF3C6F3335441D24CFDF73E0851418DAA4F6CF3335441B5DED0874008514165713BB1F233544127FBC2CF4108514121D568A0F233544114C8B00543085141C07331E1F2335441F251714244085141C52BBB9CF233544181CBE3C045085141B5F08488F1335441CFE519E54608514133C259F7EF335441D7A370BD47085141333333B3EE335441F65BBFDF4708514162A29E3EEE335441C5187B2247085141D664DB16ED3354418570734E45085141AAEE1369EA335441E851ABCB430851414F388182E9335441B420D2F4420851412AE2F68FE8335441B178012F41085141992A39ADE63354417A07CDCE400851413782DC41E5335441CBC0E0B13F0851411AD39FAAE33354419474010D3F0851419639E160E23354415C8FC2C53D085141B81E852BE1335441639D49793D085141C5E36413E0335441AA2D106B3D085141914F9DA6DE33544134DA09753C085141E0494D8CDD335441AE2ABD4B3B085141E91DFA41DD335441015AE7E739085141A8A904E9DC335441FB16C674380851410B7B5A6DDC335441176BC01F3808514169BC4B90DB33544161080EA7370851415AEF7B56DA3354414862D5AF36085141C8D75AB1D9335441B81E855B36085141EC51B8BED8335441CC862F9336085141B139E22DD8335441DED85C2B37085141DCD20F9AD7335441A6FCF906380851415BE6D911D83354418F089FF13808514142B83A93D83354418C05AEA7390851419FE685B6D93354413CF1835E3A0851419E74C752DA335441666666163C0851410AD7A3D0DA33544185EB51E83C085141B81E854BDB335441000000B03E08514166666676DD335441F6285C1F3F085141713D0AB7DE3354410AD7A3F03F085141CDCCCCBCE0335441B81E85CB3F08514185EB51D8E1335441B0253B67410851417ED59FC0E2335441412B913742085141125A649CE23354411298F573430851414D045E65E2335441D2DEC3C3460851411A2155E4E2335441EC51B8EE47085141C3F5280CE3335441A4703D6A48085141CDCCCCACE3335441ED04455B490851416489942AE43354410EBE0DF949085141CBE40827E533544130DCF7394A085141FBF76C7CE53354413D0AD7034B085141C3F528FCE533544148E17A444C08514185EB5108E6335441E9EBDE914D085141CC68BFD6E533544170E468024E085141A6040E46E5335441845828FF4E085141107FE668E43354412828243A50085141DD135C4BE333544105C3395051085141954D7359E2335441798468E05208514156B17EDAE13354415A9A5F62540851413E995888E1335441713D0A17550851419A999989E0335441666666D65508514185EB5198DF3354413D0AD7735608514114AE47B1DD3354413D0AD7F356085141CDCCCC1CDC335441666666665708514148E17AB4DA335441CDCCCCEC5708514114AE4791D8335441B5B23AED560851418ED982A6D7335441BAF42F52510851411D279C3ED2335441102026D84F085141691D5511D1335441A4DBD6464F085141B88B1505D0335441AF5CBA794E085141FA8B8AE0CE335441E0D66D4B4A085141F18730C5C833544128EAEEC047085141640BF319C5335441E05E2142460851410DAA0D35C33354411F85EB6145085141D7A370BDC2335441F6285C4F4308514148E17A04C23354416666665641085141666666C6C133544185EB51D83F085141A4703DBAC1335441000000B03E0851417B14AEF7C1335441B441F1AB3D0851417D22B7FDC03354414FFFFE163D085141B7D36575C03354419AD001513C085141C2EF30ECC0335441696B6BDE3A085141270122F5BF33544162390E8B3A085141960FA4B2BD33544118552FBE390851418847E618BC3354413696D2CA370851413F52C698BA3354413333334336085141C3F528BCB9335441CDCCCC4C35085141713D0A97B93354419A9999493408514148E17AD4B9335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498982 - 1007621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000060000000103000000010000000F0000008FC2F588E5005141D7A3709D691F5441A4703D1AE4005141C3F5281C641F54411F85EB21DB005141C3F528AC5E1F5441AE47E1EAD6005141A4703D4A611F544114AE4711D5005141F6285C0F681F54419A9999B9D50051413D0AD7F36F1F5441F6285C5FD30051411F85EB617A1F544152B81EC5D2005141F6285C7F8D1F54417B14AE97CF00514148E17AC4931F544185EB5118D90051410AD7A350921F54419A9999A9D80051410AD7A3D0901F54411F85EB21DA0051410AD7A3608B1F54411F85EBC1E0005141333333F37B1F544133333333E4005141C3F528DC711F54418FC2F588E5005141D7A3709D691F54410103000000010000000D000000333333D3E0005141333333B3941F5441A4703DEADB0051410AD7A3C0951F54410AD7A3B0DF0051415C8FC2359C1F54417B14AE17E600514152B81EE5A21F5441F6285C0FEC0051411F85EB81A71F5441EC51B82EEE005141B81E859BA91F544152B81E95EF005141EC51B8BEA61F5441333333E3EE005141333333B39F1F5441CDCCCCBCEA0051411F85EB71961F544148E17A24E900514152B81E75921F54411F85EB01EA00514152B81EA5901F5441EC51B81EE900514133333393901F5441333333D3E0005141333333B3941F5441010300000001000000100000003D0AD7C35801514114AE4781161F544152B81ED5540151413D0AD7D3181F5441713D0AD7480151419A999909201F54415C8FC2F5460151410AD7A310211F54415C8FC2D545015141A4703DAA241F5441666666164501514133333333291F54415C8FC2A54401514114AE47412A1F54419A9999394201514152B81E952F1F5441E17A14BE41015141E17A141E341F54413333331342015141295C8FD2351F544152B81E4547015141E17A141E341F54415C8FC2E54C0151413D0AD7832A1F544114AE4711520151410AD7A3B0211F5441C3F5283C5C0151413D0AD7A31B1F54411F85EB515C0151415C8FC245151F54413D0AD7C35801514114AE4781161F54410103000000010000001700000014AE4731ED005141666666B6AB1F5441F6285C9FED005141B81E85CBAA1F54415C8FC245E50051419A9999D9A31F544148E17A04DF00514148E17A649D1F54418FC2F518DA0051418FC2F5C8951F54413D0AD763D8005141AE47E11A961F544185EB5158D8005141295C8F12981F54418FC2F598CE005141295C8FA2981F544166666686CE005141F6285CDF951F5441333333A3CA005141AE47E1EA9F1F544114AE4721C500514166666686A71F544148E17AA4CF00514185EB51D8AB1F54415C8FC255E2005141D7A370DDB41F54415C8FC225E50051418FC2F598B71F5441295C8FE2E400514148E17A64BE1F54413D0AD703EA005141B81E85FBC11F54415C8FC245F2005141AE47E18ABD1F5441A4703D7AFD005141CDCCCC7CC01F544185EB51E8FF0051417B14AE77BD1F54415C8FC275FB0051417B14AEB7B81F544148E17A84F7005141C3F528BCB41F544152B81E95F2005141C3F528DCB21F544114AE4731ED005141666666B6AB1F544101030000000100000018000000B81E856BF1005141B81E859B6C1F5441D7A3702DE7005141EC51B8FE691F5441D7A3709DE50051410AD7A310721F544166666606E2005141000000607C1F5441A4703D5ADB0051418FC2F5188C1F54411F85EBA1DA0051417B14AEA7901F5441CDCCCC7CDB00514185EB5198941F5441333333D3E0005141EC51B89E931F5441EC51B8BEE8005141333333A38F1F5441A4703D7AEA0051418FC2F5A88F1F5441AE47E13AEC005141E17A14FE8B1F5441EC51B8CEF3005141E17A14CE871F54419A999969F9005141295C8FF2851F544185EB51D8FF005141E17A14FE851F544133333313120151419A9999E97A1F5441C3F5283C1F01514152B81E45701F5441F6285C4F2301514114AE4751691F54415C8FC285200151419A9999C9611F5441B81E854B1D015141713D0A475E1F5441C3F528DC15015141F6285C0F5D1F5441D7A3709D0F01514114AE47315E1F5441713D0AC7020151417B14AE27671F5441C3F5285CFD00514114AE47D16D1F5441B81E856BF1005141B81E859B6C1F5441010300000001000000140000008FC2F5E8390151410AD7A380381F5441A4703D3A410151419A999919361F5441C3F528DC4001514166666656341F5441C3F528DC4001514148E17A44321F5441D7A3704D4101514152B81E952F1F5441AE47E11A430151417B14AE172B1F54417B14AE0744015141CDCCCC1C291F5441D7A3706D4401514114AE4721271F5441295C8FD2440151411F85EB71241F5441295C8F8245015141C3F528DC211F5441CDCCCC6C3F0151410AD7A330251F54410AD7A35040015141333333B3261F5441D7A370DD3E0151417B14AEA7271F5441A4703DEA3D01514148E17A04261F54410AD7A3A03C0151418FC2F5B8261F544185EB51282D01514148E17A84341F5441CDCCCC0C260151410AD7A390391F5441CDCCCC4C2B015141713D0AE7421F54410AD7A3302D01514114AE47E1411F54418FC2F5E8390151410AD7A380381F5441
+</a>
+
+<b>
+01060000000100000001030000000100000056000000D3AD95D6DE0051411ECC831D9D1F54418FC2F518DA0051418FC2F5C8951F54413D0AD763D8005141AE47E11A961F544185EB5158D8005141295C8F12981F54418FC2F598CE005141295C8FA2981F544166666686CE005141F6285CDF951F5441333333A3CA005141AE47E1EA9F1F544114AE4721C500514166666686A71F544148E17AA4CF00514185EB51D8AB1F54415C8FC255E2005141D7A370DDB41F54415C8FC225E50051418FC2F598B71F5441295C8FE2E400514148E17A64BE1F54413D0AD703EA005141B81E85FBC11F54415C8FC245F2005141AE47E18ABD1F5441A4703D7AFD005141CDCCCC7CC01F544185EB51E8FF0051417B14AE77BD1F54415C8FC275FB0051417B14AEB7B81F544148E17A84F7005141C3F528BCB41F544152B81E95F2005141C3F528DCB21F544114AE4731ED005141666666B6AB1F5441F6285C9FED005141B81E85CBAA1F54415C8FC245E50051419A9999D9A31F544148E17A04DF00514148E17A649D1F54416B415EE8DE0051412D2C03399D1F544182EC98C0DF005141B4C97D479C1F54417B14AE17E600514152B81EE5A21F5441F6285C0FEC0051411F85EB81A71F5441EC51B82EEE005141B81E859BA91F544152B81E95EF005141EC51B8BEA61F5441333333E3EE005141333333B39F1F5441CDCCCCBCEA0051411F85EB71961F544148E17A24E900514152B81E75921F54411F85EB01EA00514152B81EA5901F5441EC51B81EE900514133333393901F5441A0EA41C6E6005141AD71CDBD911F544134E728E9E300514189334540931F54415BDA176BE3005141D8192344921F5441EC51B8BEE8005141333333A38F1F5441A4703D7AEA0051418FC2F5A88F1F5441AE47E13AEC005141E17A14FE8B1F5441EC51B8CEF3005141E17A14CE871F54419A999969F9005141295C8FF2851F544185EB51D8FF005141E17A14FE851F544133333313120151419A9999E97A1F5441C3F5283C1F01514152B81E45701F5441F6285C4F2301514114AE4751691F54415C8FC285200151419A9999C9611F5441B81E854B1D015141713D0A475E1F5441C3F528DC15015141F6285C0F5D1F5441D7A3709D0F01514114AE47315E1F5441713D0AC7020151417B14AE27671F5441C3F5285CFD00514114AE47D16D1F5441B81E856BF1005141B81E859B6C1F544164AE7CD3E7005141B89E12296A1F5441669B912DE7005141A11DEDFD691F54418FC2F588E5005141D7A3709D691F5441A4703D1AE4005141C3F5281C641F54411F85EB21DB005141C3F528AC5E1F5441AE47E1EAD6005141A4703D4A611F544114AE4711D5005141F6285C0F681F54419A9999B9D50051413D0AD7F36F1F5441F6285C5FD30051411F85EB617A1F544152B81EC5D2005141F6285C7F8D1F54417B14AE97CF00514148E17AC4931F544185EB5118D90051410AD7A350921F54419A9999A9D80051410AD7A3D0901F54411F85EB21DA0051410AD7A3608B1F54411F85EBC1E0005141333333F37B1F54413FF5DB9EE1005141B405A06B791F5441A6814537E4005141E7A403C3711F544141399275E5005141D6962F156A1F544171C58816E70051417E0706756A1F5441D7A3709DE50051410AD7A310721F544166666606E2005141000000607C1F5441A4703D5ADB0051418FC2F5188C1F54411F85EBA1DA0051417B14AEA7901F5441CDCCCC7CDB00514185EB5198941F5441333333D3E0005141EC51B89E931F544157141469E20051412BB2A0D2921F54417A970A09E3005141C3922C8A921F54414A6E1FA3E30051418518474E931F5441FC717A87E2005141C9863EDA931F5441333333D3E0005141333333B3941F5441A4703DEADB0051410AD7A3C0951F5441903D9396DF005141CE6B72F39B1F5441D3AD95D6DE0051411ECC831D9D1F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498982 - 3514171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000060000000103000000010000000F0000008FC2F588E5005141D7A3709D691F5441A4703D1AE4005141C3F5281C641F54411F85EB21DB005141C3F528AC5E1F5441AE47E1EAD6005141A4703D4A611F544114AE4711D5005141F6285C0F681F54419A9999B9D50051413D0AD7F36F1F5441F6285C5FD30051411F85EB617A1F544152B81EC5D2005141F6285C7F8D1F54417B14AE97CF00514148E17AC4931F544185EB5118D90051410AD7A350921F54419A9999A9D80051410AD7A3D0901F54411F85EB21DA0051410AD7A3608B1F54411F85EBC1E0005141333333F37B1F544133333333E4005141C3F528DC711F54418FC2F588E5005141D7A3709D691F54410103000000010000000D000000333333D3E0005141333333B3941F5441A4703DEADB0051410AD7A3C0951F54410AD7A3B0DF0051415C8FC2359C1F54417B14AE17E600514152B81EE5A21F5441F6285C0FEC0051411F85EB81A71F5441EC51B82EEE005141B81E859BA91F544152B81E95EF005141EC51B8BEA61F5441333333E3EE005141333333B39F1F5441CDCCCCBCEA0051411F85EB71961F544148E17A24E900514152B81E75921F54411F85EB01EA00514152B81EA5901F5441EC51B81EE900514133333393901F5441333333D3E0005141333333B3941F5441010300000001000000100000003D0AD7C35801514114AE4781161F544152B81ED5540151413D0AD7D3181F5441713D0AD7480151419A999909201F54415C8FC2F5460151410AD7A310211F54415C8FC2D545015141A4703DAA241F5441666666164501514133333333291F54415C8FC2A54401514114AE47412A1F54419A9999394201514152B81E952F1F5441E17A14BE41015141E17A141E341F54413333331342015141295C8FD2351F544152B81E4547015141E17A141E341F54415C8FC2E54C0151413D0AD7832A1F544114AE4711520151410AD7A3B0211F5441C3F5283C5C0151413D0AD7A31B1F54411F85EB515C0151415C8FC245151F54413D0AD7C35801514114AE4781161F54410103000000010000001700000014AE4731ED005141666666B6AB1F5441F6285C9FED005141B81E85CBAA1F54415C8FC245E50051419A9999D9A31F544148E17A04DF00514148E17A649D1F54418FC2F518DA0051418FC2F5C8951F54413D0AD763D8005141AE47E11A961F544185EB5158D8005141295C8F12981F54418FC2F598CE005141295C8FA2981F544166666686CE005141F6285CDF951F5441333333A3CA005141AE47E1EA9F1F544114AE4721C500514166666686A71F544148E17AA4CF00514185EB51D8AB1F54415C8FC255E2005141D7A370DDB41F54415C8FC225E50051418FC2F598B71F5441295C8FE2E400514148E17A64BE1F54413D0AD703EA005141B81E85FBC11F54415C8FC245F2005141AE47E18ABD1F5441A4703D7AFD005141CDCCCC7CC01F544185EB51E8FF0051417B14AE77BD1F54415C8FC275FB0051417B14AEB7B81F544148E17A84F7005141C3F528BCB41F544152B81E95F2005141C3F528DCB21F544114AE4731ED005141666666B6AB1F544101030000000100000018000000B81E856BF1005141B81E859B6C1F5441D7A3702DE7005141EC51B8FE691F5441D7A3709DE50051410AD7A310721F544166666606E2005141000000607C1F5441A4703D5ADB0051418FC2F5188C1F54411F85EBA1DA0051417B14AEA7901F5441CDCCCC7CDB00514185EB5198941F5441333333D3E0005141EC51B89E931F5441EC51B8BEE8005141333333A38F1F5441A4703D7AEA0051418FC2F5A88F1F5441AE47E13AEC005141E17A14FE8B1F5441EC51B8CEF3005141E17A14CE871F54419A999969F9005141295C8FF2851F544185EB51D8FF005141E17A14FE851F544133333313120151419A9999E97A1F5441C3F5283C1F01514152B81E45701F5441F6285C4F2301514114AE4751691F54415C8FC285200151419A9999C9611F5441B81E854B1D015141713D0A475E1F5441C3F528DC15015141F6285C0F5D1F5441D7A3709D0F01514114AE47315E1F5441713D0AC7020151417B14AE27671F5441C3F5285CFD00514114AE47D16D1F5441B81E856BF1005141B81E859B6C1F5441010300000001000000140000008FC2F5E8390151410AD7A380381F5441A4703D3A410151419A999919361F5441C3F528DC4001514166666656341F5441C3F528DC4001514148E17A44321F5441D7A3704D4101514152B81E952F1F5441AE47E11A430151417B14AE172B1F54417B14AE0744015141CDCCCC1C291F5441D7A3706D4401514114AE4721271F5441295C8FD2440151411F85EB71241F5441295C8F8245015141C3F528DC211F5441CDCCCC6C3F0151410AD7A330251F54410AD7A35040015141333333B3261F5441D7A370DD3E0151417B14AEA7271F5441A4703DEA3D01514148E17A04261F54410AD7A3A03C0151418FC2F5B8261F544185EB51282D01514148E17A84341F5441CDCCCC0C260151410AD7A390391F5441CDCCCC4C2B015141713D0AE7421F54410AD7A3302D01514114AE47E1411F54418FC2F5E8390151410AD7A380381F5441
+</a>
+
+<b>
+01060000000100000001030000000100000056000000D3AD95D6DE0051411ECC831D9D1F54418FC2F518DA0051418FC2F5C8951F54413D0AD763D8005141AE47E11A961F544185EB5158D8005141295C8F12981F54418FC2F598CE005141295C8FA2981F544166666686CE005141F6285CDF951F5441333333A3CA005141AE47E1EA9F1F544114AE4721C500514166666686A71F544148E17AA4CF00514185EB51D8AB1F54415C8FC255E2005141D7A370DDB41F54415C8FC225E50051418FC2F598B71F5441295C8FE2E400514148E17A64BE1F54413D0AD703EA005141B81E85FBC11F54415C8FC245F2005141AE47E18ABD1F5441A4703D7AFD005141CDCCCC7CC01F544185EB51E8FF0051417B14AE77BD1F54415C8FC275FB0051417B14AEB7B81F544148E17A84F7005141C3F528BCB41F544152B81E95F2005141C3F528DCB21F544114AE4731ED005141666666B6AB1F5441F6285C9FED005141B81E85CBAA1F54415C8FC245E50051419A9999D9A31F544148E17A04DF00514148E17A649D1F54416B415EE8DE0051412D2C03399D1F544182EC98C0DF005141B4C97D479C1F54417B14AE17E600514152B81EE5A21F5441F6285C0FEC0051411F85EB81A71F5441EC51B82EEE005141B81E859BA91F544152B81E95EF005141EC51B8BEA61F5441333333E3EE005141333333B39F1F5441CDCCCCBCEA0051411F85EB71961F544148E17A24E900514152B81E75921F54411F85EB01EA00514152B81EA5901F5441EC51B81EE900514133333393901F5441A0EA41C6E6005141AD71CDBD911F544134E728E9E300514189334540931F54415BDA176BE3005141D8192344921F5441EC51B8BEE8005141333333A38F1F5441A4703D7AEA0051418FC2F5A88F1F5441AE47E13AEC005141E17A14FE8B1F5441EC51B8CEF3005141E17A14CE871F54419A999969F9005141295C8FF2851F544185EB51D8FF005141E17A14FE851F544133333313120151419A9999E97A1F5441C3F5283C1F01514152B81E45701F5441F6285C4F2301514114AE4751691F54415C8FC285200151419A9999C9611F5441B81E854B1D015141713D0A475E1F5441C3F528DC15015141F6285C0F5D1F5441D7A3709D0F01514114AE47315E1F5441713D0AC7020151417B14AE27671F5441C3F5285CFD00514114AE47D16D1F5441B81E856BF1005141B81E859B6C1F544164AE7CD3E7005141B89E12296A1F5441669B912DE7005141A11DEDFD691F54418FC2F588E5005141D7A3709D691F5441A4703D1AE4005141C3F5281C641F54411F85EB21DB005141C3F528AC5E1F5441AE47E1EAD6005141A4703D4A611F544114AE4711D5005141F6285C0F681F54419A9999B9D50051413D0AD7F36F1F5441F6285C5FD30051411F85EB617A1F544152B81EC5D2005141F6285C7F8D1F54417B14AE97CF00514148E17AC4931F544185EB5118D90051410AD7A350921F54419A9999A9D80051410AD7A3D0901F54411F85EB21DA0051410AD7A3608B1F54411F85EBC1E0005141333333F37B1F54413FF5DB9EE1005141B405A06B791F5441A6814537E4005141E7A403C3711F544141399275E5005141D6962F156A1F544171C58816E70051417E0706756A1F5441D7A3709DE50051410AD7A310721F544166666606E2005141000000607C1F5441A4703D5ADB0051418FC2F5188C1F54411F85EBA1DA0051417B14AEA7901F5441CDCCCC7CDB00514185EB5198941F5441333333D3E0005141EC51B89E931F544157141469E20051412BB2A0D2921F54417A970A09E3005141C3922C8A921F54414A6E1FA3E30051418518474E931F5441FC717A87E2005141C9863EDA931F5441333333D3E0005141333333B3941F5441A4703DEADB0051410AD7A3C0951F5441903D9396DF005141CE6B72F39B1F5441D3AD95D6DE0051411ECC831D9D1F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499013 - 91337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000200000020000000666666E6691351413D0AD713F72454411F85EB1167135141D7A370BDF4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441666666A663135141E17A147E2E25544185EB5198631351419A9999D9322554410AD7A3D063135141A4703D9A36255441713D0A1764135141713D0A073925544148E17AA464135141A4703D5A3A2554413D0AD72365135141666666663B2554417B14AE87751351411F85EB71382554411F85EB81881351411F85EBB12C25544114AE47F188135141AE47E19A2B2554419A9999098A13514152B81E952A255441713D0A778B1351413D0AD7E3292554417B14AEA78D1351417B14AE57292554410AD7A3A08E135141A4703D2A29255441295C8FB29013514148E17A942725544133333343921351413D0AD79326255441AE47E12A8C135141C3F5282C192554417B14AEA785135141A4703D9A0A255441666666168413514152B81E6507255441666666E6691351413D0AD713F7245441090000008FC2F5286813514152B81E751825544114AE47D166135141EC51B87E18255441295C8FC266135141B81E85DB152554415C8FC28567135141333333D31525544185EB516867135141AE47E17A11255441A4703D1A691351413333337311255441EC51B83E691351418FC2F5E8162554410AD7A32068135141333333F3162554418FC2F5286813514152B81E75182554410103000000010000000C000000D7A3706D5D1351419A999929D5245441C3F5286C571351419A999969DB24544114AE47815C13514133333353F12454417B14AE675E1351415C8FC225F42454411F85EBC15F1351418FC2F5E8F5245441D7A370ED6013514114AE47D1F7245441C3F5282C621351415C8FC2E5F22454419A9999196313514166666616ED2454418FC2F5B8611351419A9999A9E6245441E17A145E5F135141295C8F02E0245441EC51B83E5E135141F6285C6FDB245441D7A3706D5D1351419A999929D52454410103000000010000002A000000E17A147E60135141F6285C4F3C2554413D0AD73364135141295C8F823B2554411F85EB5163135141713D0A0739255441EC51B8EE6213514133333353362554410AD7A3E0621351418FC2F57831255441CDCCCCFC62135141B81E851B2E255441333333436313514152B81E9529255441A4703D8A631351418FC2F5B8252554413D0AD71364135141295C8FF21E255441AE47E1FA63135141295C8F921B2554410AD7A3D06313514152B81E5516255441713D0A17641351419A9999E9122554410AD7A3A064135141F6285C2F0E255441A4703D7A64135141C3F528EC09255441A4703D6A65135141F6285C1F052554410AD7A3B065135141EC51B8CE02255441A4703D5A6613514148E17A64FE245441D7A370BD66135141E17A144EFB2454419A9999D96613514152B81E55F7245441E17A143E66135141CDCCCC4CF4245441AE47E1EA6413514100000070F02454410AD7A3D0631351418FC2F5A8F0245441CDCCCCFC62135141F6285CAFF424544114AE47F161135141713D0A57F9245441EC51B8AE6213514148E17A64FA2454419A9999E9631351415C8FC275FC24544114AE4791641351413D0AD703FE245441000000D0641351418FC2F538FF245441A4703DFA641351417B14AEC700255441A4703DEA641351413D0AD7C302255441713D0A77641351418FC2F5080425544148E17AE463135141EC51B8FE0425544185EB510863135141713D0AB7062554410000005061135141AE47E13A0825544114AE47D15F1351417B14AE0709255441F6285CFF5D13514185EB51A80925544152B81EF55A135141B81E85AB0A2554415C8FC215581351410AD7A3C00C255441CDCCCCDC561351411F85EB610E2554415C8FC265561351419A9999A90F2554411F85EB11561351418FC2F5A810255441E17A147E60135141F6285C4F3C255441
+</a>
+
+<b>
+0106000000010000000103000000020000005D000000DA391056661351413DFF84C4F4245441EC100E1A67135141419BA2F2F4245441F193062567135141CA6E37F5F4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441666666A663135141E17A147E2E25544185EB5198631351419A9999D9322554410AD7A3D063135141A4703D9A36255441713D0A1764135141713D0A073925544148E17AA464135141A4703D5A3A2554413D0AD72365135141666666663B2554417B14AE87751351411F85EB71382554411F85EB81881351411F85EBB12C25544114AE47F188135141AE47E19A2B2554419A9999098A13514152B81E952A255441713D0A778B1351413D0AD7E3292554417B14AEA78D1351417B14AE57292554410AD7A3A08E135141A4703D2A29255441295C8FB29013514148E17A942725544133333343921351413D0AD79326255441AE47E12A8C135141C3F5282C192554417B14AEA785135141A4703D9A0A255441666666168413514152B81E6507255441666666E6691351413D0AD713F72454411F85EB1167135141D7A370BDF424544123F9E54E6613514171D4C0A0F424544159310E4E6613514124B48B9CF4245441E17A143E66135141CDCCCC4CF4245441AE47E1EA6413514100000070F02454410AD7A3D0631351418FC2F5A8F0245441870FE21C6313514194764E13F42454414024C7EC61135141D2DD3BE0F3245441C3F5282C621351415C8FC2E5F22454419A9999196313514166666616ED2454418FC2F5B8611351419A9999A9E6245441E17A145E5F135141295C8F02E0245441EC51B83E5E135141F6285C6FDB245441D7A3706D5D1351419A999929D5245441C3F5286C571351419A999969DB24544114AE47815C13514133333353F12454417B14AE675E1351415C8FC225F42454411F85EBC15F1351418FC2F5E8F5245441D7A370ED6013514114AE47D1F72454418E4A23E061135141C7522F12F424544172F7E81363135141C8A3F33EF4245441CDCCCCFC62135141F6285CAFF424544114AE47F161135141713D0A57F9245441EC51B8AE6213514148E17A64FA2454419A9999E9631351415C8FC275FC24544114AE4791641351413D0AD703FE245441000000D0641351418FC2F538FF245441A4703DFA641351417B14AEC700255441A4703DEA641351413D0AD7C302255441713D0A77641351418FC2F5080425544148E17AE463135141EC51B8FE0425544185EB510863135141713D0AB7062554410000005061135141AE47E13A0825544114AE47D15F1351417B14AE0709255441F6285CFF5D13514185EB51A80925544152B81EF55A135141B81E85AB0A2554415C8FC215581351410AD7A3C00C255441CDCCCCDC561351411F85EB610E2554415C8FC265561351419A9999A90F2554411F85EB11561351418FC2F5A810255441E17A147E60135141F6285C4F3C2554413D0AD73364135141295C8F823B2554411F85EB5163135141713D0A0739255441EC51B8EE6213514133333353362554410AD7A3E0621351418FC2F57831255441CDCCCCFC62135141B81E851B2E255441333333436313514152B81E9529255441A4703D8A631351418FC2F5B8252554413D0AD71364135141295C8FF21E255441AE47E1FA63135141295C8F921B2554410AD7A3D06313514152B81E5516255441713D0A17641351419A9999E9122554410AD7A3A064135141F6285C2F0E255441A4703D7A64135141C3F528EC09255441A4703D6A65135141F6285C1F052554410AD7A3B065135141EC51B8CE02255441A4703D5A6613514148E17A64FE245441D7A370BD66135141E17A144EFB2454419A9999D96613514152B81E55F7245441DA391056661351413DFF84C4F424544109000000EC51B83E691351418FC2F5E8162554410AD7A32068135141333333F3162554418FC2F5286813514152B81E751825544114AE47D166135141EC51B87E18255441295C8FC266135141B81E85DB152554415C8FC28567135141333333D31525544185EB516867135141AE47E17A11255441A4703D1A691351413333337311255441EC51B83E691351418FC2F5E816255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499013 - 360732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000200000020000000666666E6691351413D0AD713F72454411F85EB1167135141D7A370BDF4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441666666A663135141E17A147E2E25544185EB5198631351419A9999D9322554410AD7A3D063135141A4703D9A36255441713D0A1764135141713D0A073925544148E17AA464135141A4703D5A3A2554413D0AD72365135141666666663B2554417B14AE87751351411F85EB71382554411F85EB81881351411F85EBB12C25544114AE47F188135141AE47E19A2B2554419A9999098A13514152B81E952A255441713D0A778B1351413D0AD7E3292554417B14AEA78D1351417B14AE57292554410AD7A3A08E135141A4703D2A29255441295C8FB29013514148E17A942725544133333343921351413D0AD79326255441AE47E12A8C135141C3F5282C192554417B14AEA785135141A4703D9A0A255441666666168413514152B81E6507255441666666E6691351413D0AD713F7245441090000008FC2F5286813514152B81E751825544114AE47D166135141EC51B87E18255441295C8FC266135141B81E85DB152554415C8FC28567135141333333D31525544185EB516867135141AE47E17A11255441A4703D1A691351413333337311255441EC51B83E691351418FC2F5E8162554410AD7A32068135141333333F3162554418FC2F5286813514152B81E75182554410103000000010000000C000000D7A3706D5D1351419A999929D5245441C3F5286C571351419A999969DB24544114AE47815C13514133333353F12454417B14AE675E1351415C8FC225F42454411F85EBC15F1351418FC2F5E8F5245441D7A370ED6013514114AE47D1F7245441C3F5282C621351415C8FC2E5F22454419A9999196313514166666616ED2454418FC2F5B8611351419A9999A9E6245441E17A145E5F135141295C8F02E0245441EC51B83E5E135141F6285C6FDB245441D7A3706D5D1351419A999929D52454410103000000010000002A000000E17A147E60135141F6285C4F3C2554413D0AD73364135141295C8F823B2554411F85EB5163135141713D0A0739255441EC51B8EE6213514133333353362554410AD7A3E0621351418FC2F57831255441CDCCCCFC62135141B81E851B2E255441333333436313514152B81E9529255441A4703D8A631351418FC2F5B8252554413D0AD71364135141295C8FF21E255441AE47E1FA63135141295C8F921B2554410AD7A3D06313514152B81E5516255441713D0A17641351419A9999E9122554410AD7A3A064135141F6285C2F0E255441A4703D7A64135141C3F528EC09255441A4703D6A65135141F6285C1F052554410AD7A3B065135141EC51B8CE02255441A4703D5A6613514148E17A64FE245441D7A370BD66135141E17A144EFB2454419A9999D96613514152B81E55F7245441E17A143E66135141CDCCCC4CF4245441AE47E1EA6413514100000070F02454410AD7A3D0631351418FC2F5A8F0245441CDCCCCFC62135141F6285CAFF424544114AE47F161135141713D0A57F9245441EC51B8AE6213514148E17A64FA2454419A9999E9631351415C8FC275FC24544114AE4791641351413D0AD703FE245441000000D0641351418FC2F538FF245441A4703DFA641351417B14AEC700255441A4703DEA641351413D0AD7C302255441713D0A77641351418FC2F5080425544148E17AE463135141EC51B8FE0425544185EB510863135141713D0AB7062554410000005061135141AE47E13A0825544114AE47D15F1351417B14AE0709255441F6285CFF5D13514185EB51A80925544152B81EF55A135141B81E85AB0A2554415C8FC215581351410AD7A3C00C255441CDCCCCDC561351411F85EB610E2554415C8FC265561351419A9999A90F2554411F85EB11561351418FC2F5A810255441E17A147E60135141F6285C4F3C255441
+</a>
+
+<b>
+0106000000010000000103000000020000005D000000DA391056661351413DFF84C4F4245441EC100E1A67135141419BA2F2F4245441F193062567135141CA6E37F5F4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441666666A663135141E17A147E2E25544185EB5198631351419A9999D9322554410AD7A3D063135141A4703D9A36255441713D0A1764135141713D0A073925544148E17AA464135141A4703D5A3A2554413D0AD72365135141666666663B2554417B14AE87751351411F85EB71382554411F85EB81881351411F85EBB12C25544114AE47F188135141AE47E19A2B2554419A9999098A13514152B81E952A255441713D0A778B1351413D0AD7E3292554417B14AEA78D1351417B14AE57292554410AD7A3A08E135141A4703D2A29255441295C8FB29013514148E17A942725544133333343921351413D0AD79326255441AE47E12A8C135141C3F5282C192554417B14AEA785135141A4703D9A0A255441666666168413514152B81E6507255441666666E6691351413D0AD713F72454411F85EB1167135141D7A370BDF424544123F9E54E6613514171D4C0A0F424544159310E4E6613514124B48B9CF4245441E17A143E66135141CDCCCC4CF4245441AE47E1EA6413514100000070F02454410AD7A3D0631351418FC2F5A8F0245441870FE21C6313514194764E13F42454414024C7EC61135141D2DD3BE0F3245441C3F5282C621351415C8FC2E5F22454419A9999196313514166666616ED2454418FC2F5B8611351419A9999A9E6245441E17A145E5F135141295C8F02E0245441EC51B83E5E135141F6285C6FDB245441D7A3706D5D1351419A999929D5245441C3F5286C571351419A999969DB24544114AE47815C13514133333353F12454417B14AE675E1351415C8FC225F42454411F85EBC15F1351418FC2F5E8F5245441D7A370ED6013514114AE47D1F72454418E4A23E061135141C7522F12F424544172F7E81363135141C8A3F33EF4245441CDCCCCFC62135141F6285CAFF424544114AE47F161135141713D0A57F9245441EC51B8AE6213514148E17A64FA2454419A9999E9631351415C8FC275FC24544114AE4791641351413D0AD703FE245441000000D0641351418FC2F538FF245441A4703DFA641351417B14AEC700255441A4703DEA641351413D0AD7C302255441713D0A77641351418FC2F5080425544148E17AE463135141EC51B8FE0425544185EB510863135141713D0AB7062554410000005061135141AE47E13A0825544114AE47D15F1351417B14AE0709255441F6285CFF5D13514185EB51A80925544152B81EF55A135141B81E85AB0A2554415C8FC215581351410AD7A3C00C255441CDCCCCDC561351411F85EB610E2554415C8FC265561351419A9999A90F2554411F85EB11561351418FC2F5A810255441E17A147E60135141F6285C4F3C2554413D0AD73364135141295C8F823B2554411F85EB5163135141713D0A0739255441EC51B8EE6213514133333353362554410AD7A3E0621351418FC2F57831255441CDCCCCFC62135141B81E851B2E255441333333436313514152B81E9529255441A4703D8A631351418FC2F5B8252554413D0AD71364135141295C8FF21E255441AE47E1FA63135141295C8F921B2554410AD7A3D06313514152B81E5516255441713D0A17641351419A9999E9122554410AD7A3A064135141F6285C2F0E255441A4703D7A64135141C3F528EC09255441A4703D6A65135141F6285C1F052554410AD7A3B065135141EC51B8CE02255441A4703D5A6613514148E17A64FE245441D7A370BD66135141E17A144EFB2454419A9999D96613514152B81E55F7245441DA391056661351413DFF84C4F424544109000000EC51B83E691351418FC2F5E8162554410AD7A32068135141333333F3162554418FC2F5286813514152B81E751825544114AE47D166135141EC51B87E18255441295C8FC266135141B81E85DB152554415C8FC28567135141333333D31525544185EB516867135141AE47E17A11255441A4703D1A691351413333337311255441EC51B83E691351418FC2F5E816255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499121 - 226669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000CDCCCC5C66065141000000109F31544185EB516865065141C3F5289C9E31544114AE477162065141F6285C4FA23154416666664663065141000000E0A33154415C8FC2B5610651410AD7A370A531544148E17AD460065141295C8FD2A431544185EB515860065141B81E850BA63154415C8FC2655E0651417B14AED7AC315441C3F528BC5B065141D7A3701DB23154418FC2F53858065141CDCCCCBCB83154411F85EB3155065141A4703D2ABF315441666666D6530651419A9999E9C1315441E17A145E54065141F6285C5FC63154418FC2F56853065141000000F0C63154419A999999510651411F85EB71C63154413333335350065141713D0A07C9315441000000504D0651415C8FC2A5CE3154415C8FC2A54A0651419A999909D43154417B14AE7748065141E17A14EED83154419A9999F957065141B81E853BD931544185EB517860065141AE47E11ACF315441713D0A8763065141EC51B89ECA31544185EB51E8630651413D0AD793C731544152B81E85600651417B14AE57C7315441CDCCCC1C60065141C3F528FCC7315441AE47E12A60065141AE47E12ACB315441AE47E1AA5A065141713D0AF7C731544152B81E755E0651410AD7A370BC315441295C8F82600651419A9999F9B23154417B14AEB7630651417B14AE97A6315441B81E853B67065141D7A370FDA7315441EC51B84E690651410AD7A330A9315441295C8FE26B06514185EB51A8AA31544185EB51586E0651410AD7A370AB3154418FC2F56872065141E17A144EAB315441AE47E19A740651413D0AD7C3AB315441F6285C6F78065141C3F5284CAD315441F6285C5F7B065141A4703DAAAE31544152B81EA57F0651415C8FC2A5B03154415C8FC27580065141CDCCCC5CAF315441D7A370BD7E065141666666B6AE315441CDCCCC7C7B065141C3F5281CAD3154411F85EB11770651410AD7A310AA3154419A9999696E065141F6285C2FA4315441CDCCCC5C66065141000000109F315441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B331544152B81EA57F0651415C8FC2A5B03154415C8FC27580065141CDCCCC5CAF315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499121 - 364997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000CDCCCC5C66065141000000109F31544185EB516865065141C3F5289C9E31544114AE477162065141F6285C4FA23154416666664663065141000000E0A33154415C8FC2B5610651410AD7A370A531544148E17AD460065141295C8FD2A431544185EB515860065141B81E850BA63154415C8FC2655E0651417B14AED7AC315441C3F528BC5B065141D7A3701DB23154418FC2F53858065141CDCCCCBCB83154411F85EB3155065141A4703D2ABF315441666666D6530651419A9999E9C1315441E17A145E54065141F6285C5FC63154418FC2F56853065141000000F0C63154419A999999510651411F85EB71C63154413333335350065141713D0A07C9315441000000504D0651415C8FC2A5CE3154415C8FC2A54A0651419A999909D43154417B14AE7748065141E17A14EED83154419A9999F957065141B81E853BD931544185EB517860065141AE47E11ACF315441713D0A8763065141EC51B89ECA31544185EB51E8630651413D0AD793C731544152B81E85600651417B14AE57C7315441CDCCCC1C60065141C3F528FCC7315441AE47E12A60065141AE47E12ACB315441AE47E1AA5A065141713D0AF7C731544152B81E755E0651410AD7A370BC315441295C8F82600651419A9999F9B23154417B14AEB7630651417B14AE97A6315441B81E853B67065141D7A370FDA7315441EC51B84E690651410AD7A330A9315441295C8FE26B06514185EB51A8AA31544185EB51586E0651410AD7A370AB3154418FC2F56872065141E17A144EAB315441AE47E19A740651413D0AD7C3AB315441F6285C6F78065141C3F5284CAD315441F6285C5F7B065141A4703DAAAE31544152B81EA57F0651415C8FC2A5B03154415C8FC27580065141CDCCCC5CAF315441D7A370BD7E065141666666B6AE315441CDCCCC7C7B065141C3F5281CAD3154411F85EB11770651410AD7A310AA3154419A9999696E065141F6285C2FA4315441CDCCCC5C66065141000000109F315441
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B331544152B81EA57F0651415C8FC2A5B03154415C8FC27580065141CDCCCC5CAF315441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499168 - 386182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000078010000B81E853B8F055141A4703D2A41325441C3F5283C9505514114AE4741433254411F85EBF1970551415C8FC2D543325441A4703DBA990551410AD7A36044325441F6285C1F9B0551416666664646325441666666969B055141D7A3704D48325441F6285CEF9E055141B81E85DB49325441295C8FB2A00551411F85EB414C325441AE47E10AA4055141CDCCCC0C50325441666666A6A705514114AE4761543254418FC2F5B8A9055141295C8FB256325441EC51B8DEA8055141CDCCCC2C59325441333333B3A605514148E17AF45A325441713D0A27A5055141A4703DDA5C3254415C8FC2D5A3055141000000F05D325441EC51B85EA30551418FC2F5685F32544114AE4741A3055141F6285CFF603254417B14AEB7A30551411F85EB81623254418FC2F568A3055141C3F5282C643254419A999919A3055141CDCCCC6C67325441E17A14DEA2055141EC51B86E683254411F85EBF1A2055141D7A3700D69325441B81E85EBA40551411F85EB216F325441C3F5286CA5055141AE47E13A7232544100000080A5055141CDCCCC0C7432544185EB5158A5055141A4703D1A763254419A9999B9A405514114AE47617732544100000090A3055141A4703DDA783254415C8FC2E5A1055141D7A3700D7A3254417B14AE579F0551415C8FC2B57A3254419A9999099A055141CDCCCC3C8432544166666626940551413D0AD7C38232544133333323920551410AD7A360823254413D0AD7538C0551410AD7A3C080325441AE47E17A8605514114AE47B17D325441EC51B8CE83055141F6285CAF7C3254413D0AD7D38005514148E17A547B325441333333937D055141C3F5288C79325441B81E854B7C055141E17A14EE78325441000000407B0551413333336378325441666666167A055141D7A3704D7732544148E17A4478055141B81E857B75325441666666A677055141B81E85AB743254413D0AD7F376055141295C8F32733254416666668676055141CDCCCC4C71325441295C8F7276055141B81E85FB6F32544185EB51B876055141333333836E325441295C8F9277055141E17A144E6C325441F6285CFF770551413D0AD783693254413D0AD7937805514148E17AC466325441AE47E10A7905514185EB51E864325441D7A370BD79055141666666E6633254413D0AD7837A055141F6285C9F62325441AE47E1CA7B055141B81E85EB60325441D7A3707D7C0551413D0AD7A35F3254419A9999697C0551410AD7A3705E3254413D0AD7237C05514185EB51F85C325441B81E857B7B05514114AE47815C325441AE47E1FA7A05514148E17AC45B325441295C8F227B055141333333C35A325441C3F5282C7B0551416666663659325441666666F678055141295C8F025732544152B81E4577055141F6285C2F563254418FC2F5B87305514185EB518854325441000000807305514185EB5148553254417B14AE677305514152B81E55563254418FC2F55872055141D7A3707D58325441D7A3707D71055141000000705A32544185EB51C870055141EC51B86E5C325441333333437005514152B81E155E325441713D0AC76F055141AE47E16A5F325441AE47E18A6F055141D7A3702D6032544152B81E956F05514114AE471161325441F6285C8F6F055141E17A14CE613254413D0AD7936F055141E17A14AE62325441E17A141E6F0551410AD7A3B0633254417B14AE376E05514185EB51086532544185EB51A86C0551411F85EBD166325441B81E854B6B0551415C8FC2356832544114AE47D1690551415C8FC22569325441A4703D4A68055141000000206A325441C3F528BC66055141666666866A32544114AE47B1640551415C8FC2056B3254419A9999F962055141F6285C6F6B325441C3F528BC610551413D0AD7236C325441F6285CDF60055141295C8FD26C325441A4703D5A600551411F85EB216E325441AE47E15A60055141EC51B81E6F325441A4703D1A61055141713D0AE7703254411F85EBA161055141E17A147E713254417B14AEF7620551410AD7A3807232544100000040640551415C8FC2B573325441B81E853B65055141713D0AB774325441AE47E10A66055141EC51B80E7632544152B81E0566055141AE47E1EA763254418FC2F598650551413D0AD703783254416666661665055141295C8FC2783254410AD7A3906405514185EB51A879325441D7A370ED630551413D0AD7337A325441713D0A6763055141000000F07A32544114AE474163055141F6285C8F7B3254415C8FC2456305514185EB51987C325441713D0A47630551411F85EB117E325441F6285C1F630551413D0AD7D37F3254410AD7A3E0620551416666662681325441AE47E1DA610551417B14AE97823254417B14AEA760055141F6285C7F8332544148E17AB45F05514148E17A24843254417B14AE775E0551410000001085325441E17A140E5D055141E17A142E8632544152B81E555C055141713D0A0787325441000000605B0551415C8FC2958832544148E17AE45A05514148E17AF489325441333333B35A055141D7A3706D8B325441AE47E18A5A055141666666D68C325441D7A3708D5B055141CDCCCC5C8E325441C3F5285C5C055141666666268F325441333333135D055141713D0A378F325441666666C65D055141AE47E11A8F3254419A9999695E055141EC51B88E8E3254415C8FC2955F055141333333438D325441AE47E16A6005514114AE47318C325441AE47E15A61055141F6285C4F8B32544148E17A4462055141D7A370CD8A325441E17A14AE63055141C3F5281C8A32544185EB51E86505514152B81E4589325441F6285CAF6705514114AE47818832544133333323690551413333330388325441000000806A055141B81E857B87325441666666166B055141333333F3863254418FC2F5F86B055141EC51B8BE853254418FC2F5C86C055141666666E6843254415C8FC2E56D055141EC51B80E843254418FC2F5186F0551413D0AD753833254413333335370055141C3F528EC82325441D7A3708D71055141E17A14DE823254418FC2F5887305514133333363833254417B14AEC7740551410AD7A320843254415C8FC2A575055141E17A14BE843254413D0AD7437605514148E17AA485325441F6285C8F77055141E17A14EE86325441E17A148E780551413D0AD743883254411F85EB517B055141713D0A878A325441F6285CFF7C055141A4703D2A8C32544114AE47B17D05514152B81E458D325441295C8FA27E05514185EB51D88D3254418FC2F5887F0551411F85EB318F325441F6285C5F800551416666665691325441333333F3800551419A9999D991325441E17A144E82055141CDCCCC9C923254418FC2F588830551419A9999F992325441666666A6840551410000005093325441D7A3708D850551416666668693325441A4703D2A86055141A4703D3A933254413D0AD733870551418FC2F54892325441295C8F328805514152B81ED590325441F6285CBF88055141CDCCCC0C90325441295C8FA289055141713D0A878F325441F6285C4F8A055141EC51B83E8F325441C3F5287C8B0551415C8FC2058F3254419A9999A98C055141666666D68E325441000000408D055141D7A3707D8E325441CDCCCC0C8E0551417B14AE378E325441333333F38E055141B81E85EB8D3254413D0AD7D38F0551411F85EB218E32544148E17AA490055141B81E854B8E325441EC51B86E91055141AE47E17A8E325441AE47E1EA930551417B14AE078F325441333333A3950551417B14AE3790325441713D0A279705514152B81E05923254413D0AD733980551411F85EB3194325441F6285C8F99055141295C8FA295325441A4703DDA9A0551419A9999E996325441295C8FB29B055141AE47E11A9832544114AE47A19C0551411F85EB7199325441F6285C6F9D055141666666569A3254413D0AD7839E055141AE47E15A9B325441EC51B88E9F055141F6285C4F9C32544100000070A0055141AE47E1FA9C32544185EB5118A2055141B81E853B9E325441CDCCCC5CA30551415C8FC2359F3254411F85EB81A4055141A4703D6AA0325441333333C3A40551418FC2F538A13254418FC2F5A8A605514152B81E75A0325441295C8FC2A7055141B81E850BA03254413D0AD7A3A805514148E17A449E325441B81E854BA9055141000000C09C3254413D0AD723AA0551417B14AE779B325441000000A0AA0551418FC2F5B89A3254418FC2F558AB055141CDCCCC1C9A325441C3F5283CAC0551419A9999C9993254418FC2F518AD055141C3F5289C99325441295C8FA2AF055141E17A145E99325441F6285C7FB00551410AD7A33099325441295C8F22B1055141D7A370FD9832544148E17AA4B3055141AE47E19A9732544100000000B60551417B14AE87963254418FC2F578B90551416666664695325441E17A14AEBA0551417B14AE179432544100000060BC0551415C8FC2759232544152B81EF5BD055141666666069132544148E17AC4BE0551413333336390325441D7A370EDBF055141CDCCCCAC8F32544148E17AD4C3055141295C8F128D3254419A9999C9C5055141295C8F628B325441AE47E1FAC7055141C3F5284C8932544152B81E75CA05514152B81E0587325441F6285C9FCC05514152B81E258432544152B81E75CD055141EC51B8FE823254419A999909CF055141EC51B82E81325441AE47E18AD0055141D7A3708D7F325441F6285C4FD4055141F6285C4F7A3254411F85EBF1D60551419A99990977325441EC51B83ED905514114AE472174325441B81E850BDB05514185EB51F8713254410AD7A300DC05514148E17AC4703254413D0AD7C3DD05514185EB51986E325441D7A3707DDF055141295C8F626C3254418FC2F5F8DF055141EC51B88E6B325441AE47E12ADF055141295C8FE262325441D7A370CDDB055141713D0A0763325441C3F5285CD9055141713D0A87633254415C8FC285D7055141713D0A776432544100000040D6055141B81E853B653254417B14AEC7D4055141E17A14CE6632544148E17A24D3055141000000E0673254419A999929CF055141CDCCCC8C6A325441295C8F52CD05514185EB51B86B325441295C8FC2CB0551418FC2F5D86C325441E17A145ECA055141F6285C6F6E325441CDCCCCDCC905514185EB51F86D3254411F85EB11CC05514152B81EA56B325441E17A140ECD055141C3F528FC6A32544100000080D0055141EC51B8BE68325441E17A14BED3055141CDCCCCBC6632544100000040D6055141F6285C7F64325441D7A370FDD7055141295C8F426332544152B81E25D8055141F6285C5F6032544100000090D9055141B81E85AB5B325441AE47E1DAD8055141CDCCCC8C553254415C8FC245DA0551419A9999F9503254413D0AD713E90551411F85EB514E3254417B14AE87EB055141AE47E11A50325441D7A370BDED055141666666B6513254413D0AD723F30551413333332350325441E17A142EF50551417B14AEB752325441F6285CBFF605514148E17A645232544114AE4791FA055141A4703D1A573254418FC2F5E8FE055141E17A14EE54325441295C8F5201065141A4703D9A53325441333333B304065141713D0A4752325441CDCCCC3C08065141F6285CBF50325441333333E309065141C3F528FC4F3254415C8FC2E50B065141295C8F424F3254419A9999590E065141F6285C7F4E325441B81E850B11065141295C8F924D325441713D0AA712065141333333E34C325441713D0AC713065141A4703D2A4C3254411F85EB8115065141333333A34A325441A4703D0A180651410000001048325441CDCCCC0C1A0651418FC2F5F8453254417B14AE371B065141AE47E17A433254418FC2F5081706514152B81E553E325441C3F5288C15065141333333933E325441D7A3704D14065141666666A63D325441F6285CEF12065141295C8FC23B32544185EB518812065141B81E853B3A325441713D0AA7120651417B14AE57383254417B14AE4710065141AE47E15A33325441CDCCCCBC130651413D0AD7D331325441666666E6130651415C8FC275303254417B14AE7715065141D7A3700D2F32544114AE47E117065141333333932F3254419A9999D919065141333333E32D325441666666361A0651410AD7A3702C32544152B81E8519065141AE47E11A2B325441C3F5281C17065141333333E3293254413D0AD76314065141C3F5286C293254416666666611065141000000902932544185EB51680D0651411F85EB912A325441295C8F320B065141D7A370ED2A3254410AD7A3700A065141CDCCCC0C2B325441333333A3070651418FC2F5482B3254411F85EB1104065141E17A14FE2A3254413D0AD753000651411F85EB312A325441A4703DFAFB055141666666E6283254415C8FC275EA0551416666667622325441713D0A77E5055141F6285CDF2032544100000040E2055141C3F528FC1F325441CDCCCCCCE1055141E17A149E20325441D7A3701DE10551417B14AE07233254418FC2F548DB0551411F85EB61213254413D0AD733DC055141000000501E325441333333C3D405514114AE47411C325441F6285C9FD40551418FC2F5081F3254418FC2F558D405514114AE476125325441713D0AC7D2055141000000A0313254419A999929CC0551417B14AE872E32544152B81ED5C6055141CDCCCC2C2C325441AE47E15ABE0551413D0AD75328325441F6285C3FBD055141F6285C0F29325441AE47E12ABC05514185EB51282A325441B81E857BBB055141CDCCCCAC2A32544152B81EE5BA055141D7A370DD2A3254411F85EB01BA05514114AE47E12A3254411F85EB71B905514185EB51882A32544114AE4701B9055141B81E853B2A32544133333343B805514152B81EA5293254418FC2F598B7055141EC51B8EE283254413D0AD7A3B6055141B81E85CB27325441295C8F22B60551417B14AE0727325441E17A146EB5055141E17A144E2632544166666626B405514114AE47412532544148E17AD4B205514148E17A24243254415C8FC235B105514148E17A3423325441713D0A37AF05514148E17A142232544133333353AE055141D7A370CD23325441295C8FB2AC05514114AE47D12532544185EB5118AF0551419A9999992B325441F6285C2FB005514185EB51182E3254415C8FC245B40551415C8FC2253732544148E17A74B2055141D7A3706D36325441D7A370DDB0055141EC51B8EE35325441CDCCCCECAF0551415C8FC2C5353254419A9999B9AE055141713D0AC735325441CDCCCC5CAD055141B81E850B36325441A4703D7AAC055141333333B33632544148E17A64AB0551417B14AE873732544152B81E85AA055141F6285C0F383254415C8FC2D5AA055141C3F528CC383254415C8FC2A5A60551416666666639325441EC51B87EA3055141CDCCCCFC3932544185EB51A8A20551419A9999093A325441AE47E15AA1055141D7A370AD3932544166666676A0055141713D0A1739325441EC51B8DE9D05514148E17AC43932544148E17A349C0551419A9999093A325441B81E850B9B05514152B81E453A325441F6285CFF9905514152B81E453A325441E17A14FE9805514152B81E453A3254411F85EBF197055141CDCCCC6C3A325441EC51B8BE9605514114AE47313A325441E17A146E95055141B81E853B3A325441B81E856B94055141D7A370AD393254413D0AD79393055141CDCCCC6C393254410000009092055141C3F528FC38325441B81E859B9105514148E17A84383254413D0AD7A3900551413D0AD74338325441C3F528AC8E055141B81E85EB37325441D7A370CD8C0551419A9999A937325441666666B68B05514152B81E9537325441E17A14CE8A055141333333C336325441F6285C0F8A055141713D0AC735325441C3F528CC87055141295C8F02363254419A9999798505514148E17A3436325441EC51B8CE8305514148E17A3436325441295C8F42820551413D0AD78336325441295C8F7281055141666666363732544114AE47F1800551411F85EB4138325441295C8F5280055141B81E856B393254411F85EB017F055141F6285C1F3B325441333333937D055141713D0A173C325441E17A14FE7C0551417B14AEE73C3254411F85EB417C0551417B14AE873E325441000000107C055141295C8FE23F325441EC51B8AE7C055141C3F5280C413254417B14AE577D05514114AE47A141325441C3F5281C7D0551415C8FC2354232544114AE47917C055141D7A3705D423254419A9999697C05514114AE474143325441E17A14CE7D055141EC51B87E44325441333333337F0551415C8FC2F544325441A4703D0A81055141B81E858B4532544148E17A8486055141A4703D2A433254411F85EB418C0551410AD7A38040325441B81E853B8F055141A4703D2A41325441
+</a>
+
+<b>
+01060000000100000001030000000100000072000000CDCCCCECAF0551415C8FC2C535325441999E72D7AF055141F455D9C535325441E25A8E6BAE05514166EFD219363254414D616D55AD0551416A8BA7C736325441AD674C3FAC0551419746409837325441E8EA3BB4AB055141605F25D138325441C3B329C7A40551415D97CE2C3A3254415AA12378A205514134780A0A3A3254415D697A1CA105514191B6924F3A325441945095E39F05514191B6924F3A325441FF5674CD9E055141955267FD3A32544106E721169C055141928A10593C325441D8570B3C9905514131B0B3653B325441157A4E0F97055141345146593C3254418F5F303B9705514173BE35363C32544174721BAA94055141F1FCD4CF39325441B81E856B94055141D7A370AD393254413D0AD79393055141CDCCCC6C393254410000009092055141C3F528FC38325441B81E859B9105514148E17A84383254413D0AD7A3900551413D0AD74338325441F9FAD8BB8E055141AE5345EE373254415E7A6E818E0551419BE2A2E537325441D7A370CD8C0551419A9999A937325441666666B68B05514152B81E9537325441ACED4E6B8B0551414EC04451373254418A4D12B48A05514106E9F32F373254417E5CD30489055141C2C43E8A36325441E962B2EE87055141F4277F53363254412F2FE5FF840551411276DDFF36325441F3C689268205514143CD4A7E383254419FF1F3287F055141955267FD3A3254416CDE02517D055141A143A6AC3C3254416F1212AD7C055141414DC89A3D3254411F85EB417C0551417B14AE873E325441000000107C055141295C8FE23F325441EC51B8AE7C055141C3F5280C413254417B14AE577D05514114AE47A141325441C3F5281C7D0551415C8FC2354232544114AE47917C055141D7A3705D423254418B5D117A7C055141EE06B9E242325441E859FBE77C055141EAE0E66843325441B172E0207E055141A3D00D244432544100CC501C800551414BBB435C4432544139D3441C810551417EFAB62A44325441668EDDEC81055141C32A3F1B4332544122CE7D26830551413C7A8B2E4232544193D198978405514143BAE9854132544143F4772B86055141DCEB896A413254412C55C10088055141C7A32C98413254411F85EB418C0551410AD7A38040325441AA12191F8D0551415ED7E4B140325441365389218F0551414D45AA3A40325441B320F94E92055141BD51D08E40325441EFDEBE359505514159E5B07042325441A438471999055141E74412BB423254419A0CC5229B0551414BBB435C443254419EA899D09B055141B03175FD45325441363E8F949D0551417DE62EE447325441945095E39F0551413810929149325441B00D89D0A1055141C773EAA1493254411A51773AA3055141A51BD79F49325441CFBDC713A5055141FD0CD46C4932544173D38B87A705514121DF0C174932544146ECB479A905514170E5918A4832544131CB6096AB05514169A8B00648325441F2F58E99AE0551413CED1736473254415750A47FB1055141B083161E4632544182338070B40551414B3F3E774532544163015A70B6055141B6893BFA44325441121D591DBA0551415B049DB74432544161E3B86DB905514183A70ED9403254413822D21CB90551412D45AD194032544193EEDF50BA0551415A1750B03F325441EEE38F54C2055141AE5CD6053B325441A43E839ECA055141F63134313632544195D79B59CE05514189D6B18D2F325441123FF94ACE05514149E5D8862F325441471C7208CE0551416C6FB8672F32544165653F33CA055141ECA7B8A92D32544152B81ED5C6055141CDCCCC2C2C325441F8FF66E1C40551418D01014A2B325441ABD0B43DBE055141E7AD226728325441FD3FDDFBBD05514147F1AE9228325441E3930891BC05514198DC68E52932544137E930B0BB055141448740C62A325441E43374EBBA0551419E7C5BE22A325441E073D242BA0551419E7C5BE22A3254410A5E6240BA055141836939E02A3254411F85EB01BA05514114AE47E12A3254411F85EB71B905514185EB51882A32544114AE4701B9055141B81E853B2A32544133333343B805514152B81EA5293254413632431EB80551418D498B7D293254413849B710B80551413D07FD74293254416D91CC04B8055141FE0A4362293254418FC2F598B7055141EC51B8EE283254413D0AD7A3B6055141B81E85CB27325441295C8F22B60551417B14AE0727325441E17A146EB5055141E17A144E2632544166666626B405514114AE47412532544148E17AD4B205514148E17A24243254415C8FC235B105514148E17A3423325441AA98F981AF055141E98FBC3E22325441874ED1C9AE05514192ECEE2423325441DEF37267AE0551418D8CE121243254417F5E654EAD055141EC21EF3A253254417D7E14FAAC0551413FD7ABFF2532544186AE656FB0055141F5A1C7732E325441BD73BA14B10551411E154C14303254415C8FC245B40551415C8FC2253732544148E17A74B2055141D7A3706D36325441D7A370DDB0055141EC51B8EE35325441CDCCCCECAF0551415C8FC2C535325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499619 - 138492
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000583B09596C6D5141BEEB14DCE16E5441977E56CC696D5141ADDF6340E26E5441977E56CC696D5141290D3A55E26E544105D0DCBE696D5141F2169AF9E26E5441FCBCD0536B6D51417E1B8CAFE76E54415B9FE5596D6D5141F16C67B6ED6E54410CD8D0856E6D514154B29F33F16E54411A4CAD056F6D51412EA86BB0F26E5441912385F16A6D51416FB78BD5F36E544189820DC0646D51418BFB338CF56E5441D36C8986606D5141C4B21CB7F66E5441CDDF1201606D51419AA3FFDBF66E54415F7698B45F6D51417D89672BF76E5441661E5806606D5141A4993191F86E54417E4759C6606D51415E9D21EBFA6E5441FADC009F616D5141A3EA5892FD6E5441020CFF3C626D51413968A881FF6E5441CC910FF6626D5141237554AB016F54417922504C6D6D5141AEB48993FE6E5441C2CCDC846E6D5141AEB48993FE6E544104D215E76F6D5141B4C96D1C046F5441EEE21A64706D51410CBEA101056F5441F4F7FEEC756D51414E8B928A036F5441558DB156776D5141F6F590D7086F544127B390A2776D51414DFB223D096F54414CF471947D6D5141B0ED5243096F5441B570E176826D5141B7D8313A096F54412493B107836D5141D872A0FE086F5441865AD919836D51412E593DCB066F544142270061826D5141E84CB7F8026F5441C5F9294C826D51414876AE01FE6E54415071A70D826D514107392DC6F96E54416F9565B47B6D514141991252FB6E5441216664406F6D5141A06AE2E6FE6E54411AC1106A6F6D51414F1B02D8FD6E5441DD78941C7C6D5141F8EE8519FA6E54413A82AC8A826D51412C72CFF5F86E54418EB62ABF866D51411058F31BF66E54418BB8A323896D5141EC56A4B6F46E5441C7E9C48E8B6D5141EDB29175F36E5441A4703D5A8B6D514148E17AD4F16E544114AE4761846D5141295C8FB2F16E54413687821A846D5141EF7BEE32E76E5441B76888FE836D5141378E730CE36E54418E76E06F836D5141B4290BEDE16E5441794F9D13816D5141AD84B716E26E5441784F9D13816D51418A13CD0DE06E5441C249F10C806D51410E8DBB98DF6E54411DEDEFDE7C6D5141F9B39EA2DF6E54418214D084756D51416D7F7EB4E06E5441D3F31FE1706D5141D3BD5946E16E5441583B09596C6D5141BEEB14DCE16E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000020836D51418FC2F538096F5441CDCCCC3C836D51419A999979146F54410AD7A3B0866D51411F85EB91136F544100000060946D514185EB51F80F6F5441713D0AB7946D5141CDCCCCCC0D6F54411F85EB81946D5141EC51B8FEFE6E54413D0AD753936D51419A999979F06E5441F6285CEF8C6D5141EC51B8BEF26E5441E17A148E876D51418FC2F588F56E5441666666F6826D5141C3F528CCF86E544100000020836D51418FC2F538096F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499619 - 1250040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000583B09596C6D5141BEEB14DCE16E5441977E56CC696D5141ADDF6340E26E5441977E56CC696D5141290D3A55E26E544105D0DCBE696D5141F2169AF9E26E5441FCBCD0536B6D51417E1B8CAFE76E54415B9FE5596D6D5141F16C67B6ED6E54410CD8D0856E6D514154B29F33F16E54411A4CAD056F6D51412EA86BB0F26E5441912385F16A6D51416FB78BD5F36E544189820DC0646D51418BFB338CF56E5441D36C8986606D5141C4B21CB7F66E5441CDDF1201606D51419AA3FFDBF66E54415F7698B45F6D51417D89672BF76E5441661E5806606D5141A4993191F86E54417E4759C6606D51415E9D21EBFA6E5441FADC009F616D5141A3EA5892FD6E5441020CFF3C626D51413968A881FF6E5441CC910FF6626D5141237554AB016F54417922504C6D6D5141AEB48993FE6E5441C2CCDC846E6D5141AEB48993FE6E544104D215E76F6D5141B4C96D1C046F5441EEE21A64706D51410CBEA101056F5441F4F7FEEC756D51414E8B928A036F5441558DB156776D5141F6F590D7086F544127B390A2776D51414DFB223D096F54414CF471947D6D5141B0ED5243096F5441B570E176826D5141B7D8313A096F54412493B107836D5141D872A0FE086F5441865AD919836D51412E593DCB066F544142270061826D5141E84CB7F8026F5441C5F9294C826D51414876AE01FE6E54415071A70D826D514107392DC6F96E54416F9565B47B6D514141991252FB6E5441216664406F6D5141A06AE2E6FE6E54411AC1106A6F6D51414F1B02D8FD6E5441DD78941C7C6D5141F8EE8519FA6E54413A82AC8A826D51412C72CFF5F86E54418EB62ABF866D51411058F31BF66E54418BB8A323896D5141EC56A4B6F46E5441C7E9C48E8B6D5141EDB29175F36E5441A4703D5A8B6D514148E17AD4F16E544114AE4761846D5141295C8FB2F16E54413687821A846D5141EF7BEE32E76E5441B76888FE836D5141378E730CE36E54418E76E06F836D5141B4290BEDE16E5441794F9D13816D5141AD84B716E26E5441784F9D13816D51418A13CD0DE06E5441C249F10C806D51410E8DBB98DF6E54411DEDEFDE7C6D5141F9B39EA2DF6E54418214D084756D51416D7F7EB4E06E5441D3F31FE1706D5141D3BD5946E16E5441583B09596C6D5141BEEB14DCE16E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000020836D51418FC2F538096F5441CDCCCC3C836D51419A999979146F54410AD7A3B0866D51411F85EB91136F544100000060946D514185EB51F80F6F5441713D0AB7946D5141CDCCCCCC0D6F54411F85EB81946D5141EC51B8FEFE6E54413D0AD753936D51419A999979F06E5441F6285CEF8C6D5141EC51B8BEF26E5441E17A148E876D51418FC2F588F56E5441666666F6826D5141C3F528CCF86E544100000020836D51418FC2F538096F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499619 - 3222462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000583B09596C6D5141BEEB14DCE16E5441977E56CC696D5141ADDF6340E26E5441977E56CC696D5141290D3A55E26E544105D0DCBE696D5141F2169AF9E26E5441FCBCD0536B6D51417E1B8CAFE76E54415B9FE5596D6D5141F16C67B6ED6E54410CD8D0856E6D514154B29F33F16E54411A4CAD056F6D51412EA86BB0F26E5441912385F16A6D51416FB78BD5F36E544189820DC0646D51418BFB338CF56E5441D36C8986606D5141C4B21CB7F66E5441CDDF1201606D51419AA3FFDBF66E54415F7698B45F6D51417D89672BF76E5441661E5806606D5141A4993191F86E54417E4759C6606D51415E9D21EBFA6E5441FADC009F616D5141A3EA5892FD6E5441020CFF3C626D51413968A881FF6E5441CC910FF6626D5141237554AB016F54417922504C6D6D5141AEB48993FE6E5441C2CCDC846E6D5141AEB48993FE6E544104D215E76F6D5141B4C96D1C046F5441EEE21A64706D51410CBEA101056F5441F4F7FEEC756D51414E8B928A036F5441558DB156776D5141F6F590D7086F544127B390A2776D51414DFB223D096F54414CF471947D6D5141B0ED5243096F5441B570E176826D5141B7D8313A096F54412493B107836D5141D872A0FE086F5441865AD919836D51412E593DCB066F544142270061826D5141E84CB7F8026F5441C5F9294C826D51414876AE01FE6E54415071A70D826D514107392DC6F96E54416F9565B47B6D514141991252FB6E5441216664406F6D5141A06AE2E6FE6E54411AC1106A6F6D51414F1B02D8FD6E5441DD78941C7C6D5141F8EE8519FA6E54413A82AC8A826D51412C72CFF5F86E54418EB62ABF866D51411058F31BF66E54418BB8A323896D5141EC56A4B6F46E5441C7E9C48E8B6D5141EDB29175F36E5441A4703D5A8B6D514148E17AD4F16E544114AE4761846D5141295C8FB2F16E54413687821A846D5141EF7BEE32E76E5441B76888FE836D5141378E730CE36E54418E76E06F836D5141B4290BEDE16E5441794F9D13816D5141AD84B716E26E5441784F9D13816D51418A13CD0DE06E5441C249F10C806D51410E8DBB98DF6E54411DEDEFDE7C6D5141F9B39EA2DF6E54418214D084756D51416D7F7EB4E06E5441D3F31FE1706D5141D3BD5946E16E5441583B09596C6D5141BEEB14DCE16E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000020836D51418FC2F538096F5441CDCCCC3C836D51419A999979146F54410AD7A3B0866D51411F85EB91136F544100000060946D514185EB51F80F6F5441713D0AB7946D5141CDCCCCCC0D6F54411F85EB81946D5141EC51B8FEFE6E54413D0AD753936D51419A999979F06E5441F6285CEF8C6D5141EC51B8BEF26E5441E17A148E876D51418FC2F588F56E5441666666F6826D5141C3F528CCF86E544100000020836D51418FC2F538096F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>500586 - 3022788
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E85DBE640514152B81E75726654418FC2F598E0405141333333636666544148E17A14DD405141F6285C3F5E665441F6285C2FDB405141CDCCCC7C56665441C3F528CCD940514114AE4771556654417B14AE37D74051417B14AEC755665441B81E850BDD4051413D0AD713756654417B14AE17E1405141D7A370DD8A665441D7A3704DE3405141295C8F6296665441F6285C4FE7405141E17A148E95665441EC51B83EE9405141D7A3700D9C665441B81E854BEE4051415C8FC2459A665441C3F5282CF74051417B14AE1797665441AE47E1DAF04051415C8FC2458A6654410AD7A3D0EF405141F6285C6F8766544152B81E75EB405141A4703D4A8A665441295C8F82E9405141EC51B8EE80665441D7A3708DED4051411F85EB617F665441B81E85DBE640514152B81E7572665441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B81E854BEE4051415C8FC2459A665441C3F5282CF74051417B14AE1797665441BAC462FBF54051416BEA34AD94665441755443BCF4405141E2B09D2592665441AE47E1DAF04051415C8FC2458A6654411A76DE44F0405141AC6C207A88665441EB95BCCCEF405141C776F9738766544152B81EE5F040514185EB511887665441863E77FFEF40514139326A068566544130841CB5EF4051417660D95A846654410787715EEE40514136DB367A8466544187D39C90EA405141D1314A0086665441EBB01CA6EA40514100989767866654411694EFCCEA4051414BBC222287665441B81E854BEE4051415C8FC2459A665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515244 - 386688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000D7A370FDCEF65041A4703D9ADCFA5441D7A3705DC1F65041A4703D8AF9FA5441333333C3B8F65041333333330CFB54415C8FC2B5BEF65041D7A3704D0EFB544114AE47F1C2F650413D0AD7530FFB5441A4703D7ACEF650418FC2F5D8FAFA54417B14AE47DDF65041A4703D3AE0FA544185EB5158DEF6504152B81E45DEFA54417B14AE47DFF65041CDCCCC7CDCFA5441D7A370CDDEF650415C8FC2B5DAFA5441713D0A27D3F6504185EB5158D3FA5441D7A370FDCEF65041A4703D9ADCFA5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D7A370FDCEF65041A4703D9ADCFA5441DACA6A31C3F65041777F5FCCF5FA5441D7A3705DC1F65041A4703D8AF9FA5441333333C3B8F65041333333330CFB54415C8FC2B5BEF65041D7A3704D0EFB544114AE47F1C2F650413D0AD7530FFB54418B38BA62C9F6504161E8ACE103FB5441B4D25C38CBF65041A8207BA100FB5441A4703D7ACEF650418FC2F5D8FAFA54417B14AE47DDF65041A4703D3AE0FA54410B0000D0DDF650416514AE3FDFFA54411AEB5158DEF650419DB81E45DEFA54415517EEE7DEF6504101E05633DDFA5441B1760BE8DEF65041F9E01E33DDFA5441C3ECAB10DFF65041F642ABE5DCFA54419A200B1EDFF65041AE352DCCDCFA54417014AE47DFF65041E2CCCC7CDCFA544181A370CDDEF65041728FC2B5DAFA5441713D0A27D3F6504185EB5158D3FA5441D7A370FDCEF65041A4703D9ADCFA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>500894 - 373792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000295C8FE2CF3F5141000000E0C96654415C8FC255C93F514114AE4741CC66544114AE47A1C83F514133333383CC665441F6285C7FC43F514133333303CE6654413D0AD783C63F51418FC2F5A8D666544185EB5148C83F5141295C8FF2DC6654410AD7A3B0C93F5141A4703D5ADE665441295C8F92CD3F514185EB5138DE66544166666636CE3F514185EB5128E1665441D7A3704DD13F51415C8FC265EE665441B81E85EBD23F514166666656F566544114AE4741D53F51417B14AE57FF665441E17A14AEDB3F5141A4703D0AFD6654415C8FC2D5E63F5141AE47E10AF966544114AE4731DF3F51415C8FC2F5D86654415C8FC2E5DA3F5141E17A14EEC66654419A9999B9D93F5141C3F5284CC6665441295C8FE2CF3F5141000000E0C9665441
+</a>
+
+<b>
+010600000001000000010300000001000000290000002E0B0593CD3F5141D6116E3ADE665441DA1415E3CD3F51419F67DE37DE66544145B54AC4CD3F5141F6891383DD665441F86896B7CE3F5141DCC52CD4DD665441A25596FFCF3F51419F63D7AEDE6654411F4796F5D03F5141BCF7812DE0665441608CEB06D23F5141C1DA8119E26654418387EB58D23F514198C281B3E36654416AD640C6D23F514142AF81FBE4665441C4CC406AD33F51419DA5819FE5665441E260EBE8D43F5141D3EAD6B0E6665441A5FE95C3D53F51411E7A8181E8665441D2F99515D63F5141AFB5D636EA665441FFF49567D63F51411C408159EC665441FFF49567D63F5141AD7BD60EEE665441D2F99515D63F5141F80A81DFEF6654416EB940B2D43F51419D902B54F2665441C4CC406AD33F51416411D61AF5665441C4CC406AD33F5141D29B803DF7665441E7CCA201D43F514120FA11FEF966544114AE4741D53F51417B14AE57FF665441BF6AA442D63F51410A3F73FBFE665441E17A14AEDB3F5141A4703D0AFD665441ED402AB0DB3F51413C287E09FD6654415C8FC2D5E63F5141AE47E10AF9665441B34E43D4E63F5141E86B9804F9665441E217B6F0E33F514197E206E4EC665441AF6DA9DFE03F5141B5707604E0665441EDDEED9DDC3F51411343DE25CE6654415C8FC2E5DA3F5141E17A14EEC66654419A9999B9D93F5141C3F5284CC6665441295C8FE2CF3F5141000000E0C96654419BCFF3A8CF3F5141C3A6EEF4C9665441B147C655C93F514161C35741CC66544114AE47A1C83F514133333383CC665441F6285C7FC43F514133333303CE66544148842078C63F5141855AC176D666544185EB5148C83F5141295C8FF2DC6654410AD7A3B0C93F5141A4703D5ADE665441295C8F92CD3F514185EB5138DE6654412E0B0593CD3F5141D6116E3ADE665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501146 - 5236319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000A4703D6AA18551411F85EB8151775441333333C39F855141295C8FC257775441F6285C2F9F8551413333339358775441D7A3700D9D855141E17A14EE58775441F6285CFF988551410AD7A3505977544185EB519894855141EC51B87E597754417B14AEF78F8551419A999939597754418FC2F5B88B855141CDCCCC7C58775441713D0A27868551411F85EBE156775441295C8F32808551410AD7A31055775441AE47E1CA778551415C8FC27552775441AE47E11A70855141A4703DFA4F775441AE47E1CA6F855141EC51B8EE4F775441000000E06285514152B81E454E77544114AE473163855141333333A34F77544166666646608551413D0AD7335B7754410AD7A3905D8551413D0AD7036577544148E17A645E8551410AD7A3B066775441AE47E1EA68855141CDCCCC8C697754411F85EB3177855141F6285C6F6D775441F6285C8F888551419A9999297277544152B81E159E85514152B81E057877544166666636AD855141333333237C775441F6285CDFAD855141A4703DCA7377544100000050B68551410AD7A38073775441A4703D4AB585514148E17A04617754417B14AE97B4855141713D0AF7597754413D0AD7C3BE855141CDCCCC3C58775441EC51B81EC78551411F85EBD1567754413D0AD733C6855141F6285C4F53775441F6285CDFC9855141000000B052775441CDCCCCDCCE855141713D0AD751775441CDCCCCACC88551410AD7A3B0357754417B14AE07C5855141AE47E1AA367754413D0AD793C3855141B81E850B3777544133333333C38551417B14AE9735775441295C8FB2C2855141295C8FA23277544133333383C1855141666666E6327754413D0AD7E3BC855141EC51B82E34775441713D0A37BB85514100000040307754419A9999E9BA85514185EB5118317754413D0AD7E3B9855141CDCCCC3C3377544152B81ED5B8855141666666C634775441C3F5285CB785514152B81E553677544100000010B58551417B14AE4739775441295C8FB2A7855141E17A143E4877544148E17AC4A68551417B14AE3748775441713D0AD7A3855141A4703D9A4C7754419A999939A2855141A4703D7A4F775441A4703D6AA18551411F85EB8151775441
+</a>
+
+<b>
+01060000000100000001030000000100000047000000AE47E1AA56855141AE47E14A7C77544152B81ED5538551419A9999C985775441883C36C04F855141D10FFA1F8E77544160C80B9F4B8551413F0E969196775441FCCCB202498551419F3C0B209C775441BE68B0D247855141AD5B14299F775441C9948DAB4785514144BB6FEFA07754413A451E3D4B85514135F95E26A277544185EB51E84B8551410AD7A360A277544164C6C2264C855141387FB620A3775441E5417A004F8551416CCA1BB3AB775441E8F9B26D518551415C88BEAEAF77544116C1A0E354855141BF1CC9FEB377544148E17A345B855141EC51B88EBA775441A6D07D975A8551413B8AD4E7C1775441E896A9B559855141C1B4DEC1CC775441FDD567B55885514181845718DF775441CBD3DE4357855141A82C92ABEA775441F34DC3B2568551413E3A9C38EE775441D0C9FBF653855141B56F4D7CFC77544130807432558551416DF32F4AFE775441397B29955B85514120492645FB7754411509FBE262855141C9C60734F77754415554568870855141C818CA48EE7754415833EA0A7B85514146CD12E4E7775441C3F5280C7D8551413D0AD7B3E67754419A8700C17F8551412F3F056BE577544198802511858551419C589A51E277544118039230838551414D31E6BBCF775441BFC3C6308E855141E2440F67D0775441DBACB2E5938551418C71D78BCF77544121EB88A69C855141C8B15694CC77544195D95AC9A2855141786769D0CB775441CC082F47A4855141803C438ACB775441BD6855B0A785514185847D00C57754415B94FA84AB85514137859B86C0775441B35CB6ECAE855141E42DBA0B957754416F5C2FBBAF855141755D72BD8A7754418B0A07B3B085514111E7FE5D7E775441F584C208B185514145DD20177A775441574FD8E5B285514163FD114762775441CF471B3AB6855141947E082C387754416479729FB0855141715B15403E775441AFD3C490AB855141F74983E9437754412A82079EA78551419831873D48775441F549F0B4A5855141DA8E69CE49775441476FBC26A485514186B4DD224C7754418A9F5494A28551412606B9D84E77544199211A8FA18551416C8A8925517754418BE7E61EA18551410C3CF99E52775441318643C19F855141DEB8FFCD5777544131010F569F85514144D5805C58775441909647FE9E8551412C3225C75877544160C7C1D8998551418ED5FF3B597754412311CC5A968551415A464D6C59775441FFB46E2994855141120440785977544178D1BA86918551416F1FE250597754411CDA3BFB8F855141ADAECE39597754417F7BA67B8D85514114A319CB58775441B547169E8B855141EA780E7558775441EC144CC6898551410C231CED57775441874E2ED07D855141E560765354775441A2FBE4926F855141D7BB83E74F7754416F2736A664855141D3E0937F4E7754419CC6F425638551415D5E6D724F775441C8A29F1A60855141910959D25B775441DE2FB0AD5D8551412127A99A64775441DDE526395D8551419FE6E64766775441EC51B8EE5C85514114AE476167775441295C8F325A855141A4703DAA70775441AE47E1AA56855141AE47E14A7C775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501661 - 3079306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285CCF3E5951411F85EB018EB65441CDCCCC3C3D5951417B14AE6790B65441D7A3706D3B59514148E17A9494B65441C3F5282C3B595141EC51B82E9CB65441666666A63D5951410AD7A310ACB65441E17A14EE3E595141CDCCCCCCB5B65441713D0AA7445951413D0AD7D3BDB654418FC2F5684859514148E17A54C1B654413D0AD7F3575951417B14AE77CAB65441713D0A9764595141000000C0D2B6544185EB510869595141B81E851BD7B6544114AE47B16F59514114AE47C1D9B654411F85EB317359514166666666DCB65441F6285C1F77595141666666F6DEB654418FC2F5287C595141F6285C8FDFB654419A9999598E595141EC51B8AEDDB65441A4703D5A95595141CDCCCC7CDCB65441B81E85BB9A59514185EB51A8DCB6544114AE47F19F5951419A9999F9DBB65441000000B0A2595141295C8F92DAB65441B81E856BA25951410AD7A340D6B65441000000A0A05951413D0AD723CEB6544148E17AE49D59514185EB5168CBB654411F85EBD19A595141F6285C1FC3B654418FC2F5A897595141E17A142EBBB654413333330395595141AE47E12AB7B654418FC2F588925951419A999959B4B65441CDCCCC6C91595141713D0AB7B5B65441AE47E13A9059514185EB5108B5B65441B81E851B92595141B81E85FBB2B65441CDCCCC6C91595141D7A370ADB0B654411F85EB91905951415C8FC2D5ACB654416666666690595141F6285C3FA9B65441B81E859B9059514114AE4761A4B65441666666669059514114AE47419FB6544152B81E15915951411F85EBB19CB6544114AE473192595141333333639AB654410AD7A3D0935951417B14AEA797B65441E17A143E945951418FC2F5F896B654410000007095595141666666D694B65441CDCCCC7C97595141F6285C4F90B65441AE47E1CA925951415C8FC2E593B65441D7A370AD8A5951415C8FC2F599B654417B14AE078859514114AE47C19BB65441B81E85FB85595141000000709CB654419A9999A97F5951413D0AD7E39DB654413D0AD7037D595141000000009FB65441295C8F227B595141AE47E1CAA0B65441666666067A595141F6285C2FA3B654416666661679595141C3F528BCA8B654419A9999F97759514185EB5168ACB6544152B81E35775951418FC2F558ADB65441C3F5289C765951417B14AE87B1B6544148E17A54755951419A9999C9B1B6544148E17AC472595141A4703D2AB0B654419A9999E971595141EC51B86EADB6544148E17A746259514114AE4761A4B6544152B81E3558595141D7A370DD9CB654411F85EB01575951417B14AEB79AB654411F85EB1155595141C3F5280C99B65441713D0A3753595141D7A370ED96B654411F85EBA151595141D7A3703D94B65441713D0AD74F595141F6285C4F90B654417B14AE374E5951410AD7A3108DB65441F6285CEF4C59514114AE47818AB65441A4703D3A4B595141EC51B85E88B65441CDCCCC4C4A595141B81E850B87B65441000000504859514114AE477184B65441666666C6465951413333336382B65441295C8F9245595141C3F5289C84B654411F85EB2143595141F6285C1F88B65441B81E854B4059514148E17A348CB65441F6285CCF3E5951411F85EB018EB65441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000494CF33977595141EC17525DB4B654418C0E7CDA7D5951412EC1E731B6B65441C92613D384595141B3919B7BB7B65441C73ECDC78A595141B71F7D1AB8B6544199F767588E595141B71F7D1AB8B6544185F85E608F59514117753826B8B654419A3CE501905951413A3F662DB8B65441A12909A4915951413BC1FB3FB8B65441791F24B7915951417D21D540B8B65441729AEEC8915951419513BE45B5B654418FEF66CC91595141ADA5A433B3B6544146CE63B99159514168F73387B0B65441A8838C869059514114C7CBE5ABB65441FDBC76919059514115DAB377A7B65441F593B18E90595141D0257C24A3B65441EEFCE06C9059514139CE4CE19FB65441E55088EF90595141C558E83E9DB654419017185D92595141754F69199AB65441E88AA06D94595141944DB1C295B654413ED15471975951417504D9FF8FB65441728D7763925951412160043394B65441D91B276A8C59514186E686A998B65441E7DCB37987595141868FC7BB9BB6544110EC3CA784595141CF99E0539CB654411876B98881595141A6E6FF119DB65441AE2B52157F59514137121CBD9DB65441677DE1687C595141154851009FB654414326A9127B595141121A7D0AA0B6544146547D087A59514159DFD731A2B65441498251FE7859514105068447A6B65441017838667859514100651DEBA9B654414AC70F6F77595141923491AAACB65441B99BF3C3765951412349C3DAADB654414B0CCEDF755951411F04056AAFB65441631584C7765951411B373058B0B6544101D4E05176595141AF014D1FB1B65441C06D1E9A75595141D83297BBB1B6544145145FAD74595141A6AECA5FB1B654419AB74DD472595141B118379AB0B6544153C41EB771595141D486596BB1B65441494CF33977595141EC17525DB4B65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501661 - 3394869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285CCF3E5951411F85EB018EB65441CDCCCC3C3D5951417B14AE6790B65441D7A3706D3B59514148E17A9494B65441C3F5282C3B595141EC51B82E9CB65441666666A63D5951410AD7A310ACB65441E17A14EE3E595141CDCCCCCCB5B65441713D0AA7445951413D0AD7D3BDB654418FC2F5684859514148E17A54C1B654413D0AD7F3575951417B14AE77CAB65441713D0A9764595141000000C0D2B6544185EB510869595141B81E851BD7B6544114AE47B16F59514114AE47C1D9B654411F85EB317359514166666666DCB65441F6285C1F77595141666666F6DEB654418FC2F5287C595141F6285C8FDFB654419A9999598E595141EC51B8AEDDB65441A4703D5A95595141CDCCCC7CDCB65441B81E85BB9A59514185EB51A8DCB6544114AE47F19F5951419A9999F9DBB65441000000B0A2595141295C8F92DAB65441B81E856BA25951410AD7A340D6B65441000000A0A05951413D0AD723CEB6544148E17AE49D59514185EB5168CBB654411F85EBD19A595141F6285C1FC3B654418FC2F5A897595141E17A142EBBB654413333330395595141AE47E12AB7B654418FC2F588925951419A999959B4B65441CDCCCC6C91595141713D0AB7B5B65441AE47E13A9059514185EB5108B5B65441B81E851B92595141B81E85FBB2B65441CDCCCC6C91595141D7A370ADB0B654411F85EB91905951415C8FC2D5ACB654416666666690595141F6285C3FA9B65441B81E859B9059514114AE4761A4B65441666666669059514114AE47419FB6544152B81E15915951411F85EBB19CB6544114AE473192595141333333639AB654410AD7A3D0935951417B14AEA797B65441E17A143E945951418FC2F5F896B654410000007095595141666666D694B65441CDCCCC7C97595141F6285C4F90B65441AE47E1CA925951415C8FC2E593B65441D7A370AD8A5951415C8FC2F599B654417B14AE078859514114AE47C19BB65441B81E85FB85595141000000709CB654419A9999A97F5951413D0AD7E39DB654413D0AD7037D595141000000009FB65441295C8F227B595141AE47E1CAA0B65441666666067A595141F6285C2FA3B654416666661679595141C3F528BCA8B654419A9999F97759514185EB5168ACB6544152B81E35775951418FC2F558ADB65441C3F5289C765951417B14AE87B1B6544148E17A54755951419A9999C9B1B6544148E17AC472595141A4703D2AB0B654419A9999E971595141EC51B86EADB6544148E17A746259514114AE4761A4B6544152B81E3558595141D7A370DD9CB654411F85EB01575951417B14AEB79AB654411F85EB1155595141C3F5280C99B65441713D0A3753595141D7A370ED96B654411F85EBA151595141D7A3703D94B65441713D0AD74F595141F6285C4F90B654417B14AE374E5951410AD7A3108DB65441F6285CEF4C59514114AE47818AB65441A4703D3A4B595141EC51B85E88B65441CDCCCC4C4A595141B81E850B87B65441000000504859514114AE477184B65441666666C6465951413333336382B65441295C8F9245595141C3F5289C84B654411F85EB2143595141F6285C1F88B65441B81E854B4059514148E17A348CB65441F6285CCF3E5951411F85EB018EB65441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000494CF33977595141EC17525DB4B654418C0E7CDA7D5951412EC1E731B6B65441C92613D384595141B3919B7BB7B65441C73ECDC78A595141B71F7D1AB8B6544199F767588E595141B71F7D1AB8B6544185F85E608F59514117753826B8B654419A3CE501905951413A3F662DB8B65441A12909A4915951413BC1FB3FB8B65441791F24B7915951417D21D540B8B65441729AEEC8915951419513BE45B5B654418FEF66CC91595141ADA5A433B3B6544146CE63B99159514168F73387B0B65441A8838C869059514114C7CBE5ABB65441FDBC76919059514115DAB377A7B65441F593B18E90595141D0257C24A3B65441EEFCE06C9059514139CE4CE19FB65441E55088EF90595141C558E83E9DB654419017185D92595141754F69199AB65441E88AA06D94595141944DB1C295B654413ED15471975951417504D9FF8FB65441728D7763925951412160043394B65441D91B276A8C59514186E686A998B65441E7DCB37987595141868FC7BB9BB6544110EC3CA784595141CF99E0539CB654411876B98881595141A6E6FF119DB65441AE2B52157F59514137121CBD9DB65441677DE1687C595141154851009FB654414326A9127B595141121A7D0AA0B6544146547D087A59514159DFD731A2B65441498251FE7859514105068447A6B65441017838667859514100651DEBA9B654414AC70F6F77595141923491AAACB65441B99BF3C3765951412349C3DAADB654414B0CCEDF755951411F04056AAFB65441631584C7765951411B373058B0B6544101D4E05176595141AF014D1FB1B65441C06D1E9A75595141D83297BBB1B6544145145FAD74595141A6AECA5FB1B654419AB74DD472595141B118379AB0B6544153C41EB771595141D486596BB1B65441494CF33977595141EC17525DB4B65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502349 - 1070288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD71390235441D7A3704DE5F2504185EB51388E235441295C8F02EAF25041D7A370CD8B23544148E17AB4EDF25041F6285CCF8B23544114AE4781F1F25041B81E85AB8C235441B81E85DBF3F25041C3F5286C8C2354413D0AD743F5F25041EC51B85E8A235441F6285C3FF2F25041D7A370ED842354415C8FC2A5EBF25041E17A141E7D235441EC51B80EEAF250411F85EBF1782354418FC2F5F8E9F250417B14AEE776235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE475723544114AE47C1E6F25041000000B04C235441D7A3706DE5F2504185EB5118502354413D0AD7A3E2F25041AE47E12A4F235441C3F5281CDFF25041B81E85BB4E235441CDCCCCBCDEF250417B14AE074D235441A4703DAADDF25041666666F64F23544185EB5108DCF25041E17A14DE522354411F85EB31D8F250413D0AD7A358235441713D0AF7D6F250415C8FC2755B23544166666666D5F250418FC2F5F85F2354413D0AD783D4F25041EC51B83E64235441AE47E1BAD3F250413333339369235441AE47E14AD3F25041000000606F2354411F85EB31D3F25041666666A67523544152B81EB5D3F250419A9999697A2354417B14AEC7D4F25041A4703DAA8123544100000070D7F25041E17A14FE8F235441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE47572354416601648BE8F250418C2127D850235441D0C7083AE1F250415DBCC2DD4F235441BAA763F1DDF2504143E5DB334F235441A4703DAADDF25041666666F64F23544185EB5108DCF25041E17A14DE522354411F85EB31D8F250413D0AD7A358235441713D0AF7D6F250415C8FC2755B23544166666666D5F250418FC2F5F85F2354413D0AD783D4F25041EC51B83E64235441AE47E1BAD3F250413333339369235441AE47E14AD3F25041000000606F2354411F85EB31D3F25041666666A67523544152B81EB5D3F250419A9999697A2354417B14AEC7D4F25041A4703DAA8123544100000070D7F25041E17A14FE8F235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502349 - 5257195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD71390235441D7A3704DE5F2504185EB51388E235441295C8F02EAF25041D7A370CD8B23544148E17AB4EDF25041F6285CCF8B23544114AE4781F1F25041B81E85AB8C235441B81E85DBF3F25041C3F5286C8C2354413D0AD743F5F25041EC51B85E8A235441F6285C3FF2F25041D7A370ED842354415C8FC2A5EBF25041E17A141E7D235441EC51B80EEAF250411F85EBF1782354418FC2F5F8E9F250417B14AEE776235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE475723544114AE47C1E6F25041000000B04C235441D7A3706DE5F2504185EB5118502354413D0AD7A3E2F25041AE47E12A4F235441C3F5281CDFF25041B81E85BB4E235441CDCCCCBCDEF250417B14AE074D235441A4703DAADDF25041666666F64F23544185EB5108DCF25041E17A14DE522354411F85EB31D8F250413D0AD7A358235441713D0AF7D6F250415C8FC2755B23544166666666D5F250418FC2F5F85F2354413D0AD783D4F25041EC51B83E64235441AE47E1BAD3F250413333339369235441AE47E14AD3F25041000000606F2354411F85EB31D3F25041666666A67523544152B81EB5D3F250419A9999697A2354417B14AEC7D4F25041A4703DAA8123544100000070D7F25041E17A14FE8F235441
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE47572354416601648BE8F250418C2127D850235441D0C7083AE1F250415DBCC2DD4F235441BAA763F1DDF2504143E5DB334F235441A4703DAADDF25041666666F64F23544185EB5108DCF25041E17A14DE522354411F85EB31D8F250413D0AD7A358235441713D0AF7D6F250415C8FC2755B23544166666666D5F250418FC2F5F85F2354413D0AD783D4F25041EC51B83E64235441AE47E1BAD3F250413333339369235441AE47E14AD3F25041000000606F2354411F85EB31D3F25041666666A67523544152B81EB5D3F250419A9999697A2354417B14AEC7D4F25041A4703DAA8123544100000070D7F25041E17A14FE8F235441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502359 - 156677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000035000000B81E858B76EF5041295C8F9221225441D7A3709D76EF50416666666622225441000000D076EF5041000000702322544148E17A4477EF5041295C8FE2232254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441A4703DBA92EF5041AE47E12AFD21544185EB514896EF504114AE47F1F9215441B81E85AB99EF5041F6285C5FF821544185EB51F89DEF5041F6285C5FF8215441A4703D1AA2EF504152B81E35F821544148E17A24A6EF504114AE4731F7215441295C8FA2A4EF5041C3F5289CF0215441B81E85EB9BEF504133333343F42154418FC2F5B885EF50410AD7A390FD2154410AD7A3C07EEF5041C3F5287C002254413D0AD78374EF5041666666C604225441EC51B87E74EF50415C8FC225062254413333334375EF50417B14AED706225441295C8F6276EF50411F85EB0108225441713D0A1777EF50413D0AD7930822544185EB515877EF5041D7A3701D092254419A99991977EF5041295C8F120A225441C3F5281C77EF50411F85EB810B225441E17A145E77EF50415C8FC2450C2254418FC2F5A877EF5041333333F30C2254410000009078EF5041AE47E16A0E22544148E17AF478EF504152B81E350F2254419A99997979EF50418FC2F54811225441CDCCCC7C79EF5041CDCCCCCC122254410AD7A34079EF504185EB5198142254413D0AD7E378EF50419A999909162254415C8FC20579EF5041E17A14AE1622544185EB513879EF5041D7A370DD17225441AE47E12A79EF5041295C8FD218225441D7A3704D79EF50411F85EB011A225441CDCCCCDC78EF504114AE47111B2254410000004078EF5041B81E856B1C22544148E17AA477EF50417B14AE171D2254411F85EBD176EF5041E17A14BE1D2254410000000076EF50413D0AD7731E225441295C8F2276EF5041000000F01E2254416666664676EF504114AE47A11F22544185EB517876EF504152B81E7520225441B81E858B76EF5041295C8F922122544116000000295C8F227FEF5041EC51B8BE1C225441C3F5283C7DEF5041000000D01E225441EC51B8FE7BEF5041C3F528FC1D225441E17A143E7CEF5041CDCCCC2C1B225441333333537CEF5041295C8FA215225441713D0A277DEF5041B81E856B1122544114AE47117DEF50415C8FC2750C22544152B81EE57DEF504148E17AD4072254413D0AD7A37EEF504114AE47A101225441295C8FB281EF504185EB51F80022544185EB511884EF5041A4703DFAFF2154419A99992986EF5041295C8F22012254419A99992986EF50417B14AEC7032254415C8FC25585EF504185EB51180622544114AE470185EF5041D7A370BD08225441CDCCCC6C84EF5041F6285C8F0A225441000000F082EF5041666666360C2254418FC2F54881EF5041713D0A870E225441F6285C9F80EF5041EC51B87E12225441D7A3700D7FEF50416666667616225441EC51B88E7EEF50416666660619225441295C8F227FEF5041EC51B8BE1C225441
+</a>
+
+<b>
+0106000000010000000103000000020000003700000036C95A8F79EF50419DE0D194222254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441A4703DBA92EF5041AE47E12AFD21544185EB514896EF504114AE47F1F9215441B81E85AB99EF5041F6285C5FF821544185EB51F89DEF5041F6285C5FF8215441A4703D1AA2EF504152B81E35F821544148E17A24A6EF504114AE4731F7215441295C8FA2A4EF5041C3F5289CF0215441B81E85EB9BEF504133333343F42154418FC2F5B885EF50410AD7A390FD2154410AD7A3C07EEF5041C3F5287C002254413D0AD78374EF5041666666C604225441EC51B87E74EF50415C8FC225062254413333334375EF50417B14AED706225441295C8F6276EF50411F85EB0108225441713D0A1777EF50413D0AD7930822544185EB515877EF5041D7A3701D092254419A99991977EF5041295C8F120A225441C3F5281C77EF50411F85EB810B225441E17A145E77EF50415C8FC2450C2254418FC2F5A877EF5041333333F30C2254410000009078EF5041AE47E16A0E22544148E17AF478EF504152B81E350F2254419A99997979EF50418FC2F54811225441CDCCCC7C79EF5041CDCCCCCC122254410AD7A34079EF504185EB5198142254413D0AD7E378EF50419A999909162254415C8FC20579EF5041E17A14AE1622544185EB513879EF5041D7A370DD17225441AE47E12A79EF5041295C8FD218225441D7A3704D79EF50411F85EB011A225441CDCCCCDC78EF504114AE47111B2254410000004078EF5041B81E856B1C22544148E17AA477EF50417B14AE171D2254411F85EBD176EF5041E17A14BE1D2254410000000076EF50413D0AD7731E225441295C8F2276EF5041000000F01E2254416666664676EF504114AE47A11F22544185EB517876EF504152B81E7520225441B81E858B76EF5041295C8F9221225441D7A3709D76EF50416666666622225441000000D076EF5041000000702322544148E17A4477EF5041295C8FE223225441B55F080A78EF50415A8B37722322544136C95A8F79EF50419DE0D1942222544116000000295C8F227FEF5041EC51B8BE1C225441C3F5283C7DEF5041000000D01E225441EC51B8FE7BEF5041C3F528FC1D225441E17A143E7CEF5041CDCCCC2C1B225441333333537CEF5041295C8FA215225441713D0A277DEF5041B81E856B1122544114AE47117DEF50415C8FC2750C22544152B81EE57DEF504148E17AD4072254413D0AD7A37EEF504114AE47A101225441295C8FB281EF504185EB51F80022544185EB511884EF5041A4703DFAFF2154419A99992986EF5041295C8F22012254419A99992986EF50417B14AEC7032254415C8FC25585EF504185EB51180622544114AE470185EF5041D7A370BD08225441CDCCCC6C84EF5041F6285C8F0A225441000000F082EF5041666666360C2254418FC2F54881EF5041713D0A870E225441F6285C9F80EF5041EC51B87E12225441D7A3700D7FEF50416666667616225441EC51B88E7EEF50416666660619225441295C8F227FEF5041EC51B8BE1C225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502359 - 414288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000035000000B81E858B76EF5041295C8F9221225441D7A3709D76EF50416666666622225441000000D076EF5041000000702322544148E17A4477EF5041295C8FE2232254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441A4703DBA92EF5041AE47E12AFD21544185EB514896EF504114AE47F1F9215441B81E85AB99EF5041F6285C5FF821544185EB51F89DEF5041F6285C5FF8215441A4703D1AA2EF504152B81E35F821544148E17A24A6EF504114AE4731F7215441295C8FA2A4EF5041C3F5289CF0215441B81E85EB9BEF504133333343F42154418FC2F5B885EF50410AD7A390FD2154410AD7A3C07EEF5041C3F5287C002254413D0AD78374EF5041666666C604225441EC51B87E74EF50415C8FC225062254413333334375EF50417B14AED706225441295C8F6276EF50411F85EB0108225441713D0A1777EF50413D0AD7930822544185EB515877EF5041D7A3701D092254419A99991977EF5041295C8F120A225441C3F5281C77EF50411F85EB810B225441E17A145E77EF50415C8FC2450C2254418FC2F5A877EF5041333333F30C2254410000009078EF5041AE47E16A0E22544148E17AF478EF504152B81E350F2254419A99997979EF50418FC2F54811225441CDCCCC7C79EF5041CDCCCCCC122254410AD7A34079EF504185EB5198142254413D0AD7E378EF50419A999909162254415C8FC20579EF5041E17A14AE1622544185EB513879EF5041D7A370DD17225441AE47E12A79EF5041295C8FD218225441D7A3704D79EF50411F85EB011A225441CDCCCCDC78EF504114AE47111B2254410000004078EF5041B81E856B1C22544148E17AA477EF50417B14AE171D2254411F85EBD176EF5041E17A14BE1D2254410000000076EF50413D0AD7731E225441295C8F2276EF5041000000F01E2254416666664676EF504114AE47A11F22544185EB517876EF504152B81E7520225441B81E858B76EF5041295C8F922122544116000000295C8F227FEF5041EC51B8BE1C225441C3F5283C7DEF5041000000D01E225441EC51B8FE7BEF5041C3F528FC1D225441E17A143E7CEF5041CDCCCC2C1B225441333333537CEF5041295C8FA215225441713D0A277DEF5041B81E856B1122544114AE47117DEF50415C8FC2750C22544152B81EE57DEF504148E17AD4072254413D0AD7A37EEF504114AE47A101225441295C8FB281EF504185EB51F80022544185EB511884EF5041A4703DFAFF2154419A99992986EF5041295C8F22012254419A99992986EF50417B14AEC7032254415C8FC25585EF504185EB51180622544114AE470185EF5041D7A370BD08225441CDCCCC6C84EF5041F6285C8F0A225441000000F082EF5041666666360C2254418FC2F54881EF5041713D0A870E225441F6285C9F80EF5041EC51B87E12225441D7A3700D7FEF50416666667616225441EC51B88E7EEF50416666660619225441295C8F227FEF5041EC51B8BE1C225441
+</a>
+
+<b>
+0106000000010000000103000000020000003700000036C95A8F79EF50419DE0D194222254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441A4703DBA92EF5041AE47E12AFD21544185EB514896EF504114AE47F1F9215441B81E85AB99EF5041F6285C5FF821544185EB51F89DEF5041F6285C5FF8215441A4703D1AA2EF504152B81E35F821544148E17A24A6EF504114AE4731F7215441295C8FA2A4EF5041C3F5289CF0215441B81E85EB9BEF504133333343F42154418FC2F5B885EF50410AD7A390FD2154410AD7A3C07EEF5041C3F5287C002254413D0AD78374EF5041666666C604225441EC51B87E74EF50415C8FC225062254413333334375EF50417B14AED706225441295C8F6276EF50411F85EB0108225441713D0A1777EF50413D0AD7930822544185EB515877EF5041D7A3701D092254419A99991977EF5041295C8F120A225441C3F5281C77EF50411F85EB810B225441E17A145E77EF50415C8FC2450C2254418FC2F5A877EF5041333333F30C2254410000009078EF5041AE47E16A0E22544148E17AF478EF504152B81E350F2254419A99997979EF50418FC2F54811225441CDCCCC7C79EF5041CDCCCCCC122254410AD7A34079EF504185EB5198142254413D0AD7E378EF50419A999909162254415C8FC20579EF5041E17A14AE1622544185EB513879EF5041D7A370DD17225441AE47E12A79EF5041295C8FD218225441D7A3704D79EF50411F85EB011A225441CDCCCCDC78EF504114AE47111B2254410000004078EF5041B81E856B1C22544148E17AA477EF50417B14AE171D2254411F85EBD176EF5041E17A14BE1D2254410000000076EF50413D0AD7731E225441295C8F2276EF5041000000F01E2254416666664676EF504114AE47A11F22544185EB517876EF504152B81E7520225441B81E858B76EF5041295C8F9221225441D7A3709D76EF50416666666622225441000000D076EF5041000000702322544148E17A4477EF5041295C8FE223225441B55F080A78EF50415A8B37722322544136C95A8F79EF50419DE0D1942222544116000000295C8F227FEF5041EC51B8BE1C225441C3F5283C7DEF5041000000D01E225441EC51B8FE7BEF5041C3F528FC1D225441E17A143E7CEF5041CDCCCC2C1B225441333333537CEF5041295C8FA215225441713D0A277DEF5041B81E856B1122544114AE47117DEF50415C8FC2750C22544152B81EE57DEF504148E17AD4072254413D0AD7A37EEF504114AE47A101225441295C8FB281EF504185EB51F80022544185EB511884EF5041A4703DFAFF2154419A99992986EF5041295C8F22012254419A99992986EF50417B14AEC7032254415C8FC25585EF504185EB51180622544114AE470185EF5041D7A370BD08225441CDCCCC6C84EF5041F6285C8F0A225441000000F082EF5041666666360C2254418FC2F54881EF5041713D0A870E225441F6285C9F80EF5041EC51B87E12225441D7A3700D7FEF50416666667616225441EC51B88E7EEF50416666660619225441295C8F227FEF5041EC51B8BE1C225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224834 - 800588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002A0000009C17808415FA5041AD01C80E6288544104CF247F12FA50414CA1BEEC6688544110FEF2020DFA50411E1EE03F7088544113462E6409FA504175B2E8D4768854412CB3AB6A07FA504162E4C28F7A885441E8FBA91906FA504143D8EDC77A8854418AD72AC206FA50414DBF80EA78885441716AADBB08FA50419EA550BF74885441CC46F1B10BFA50417B425F976F885441D2E548730DFA504121661BA16C8854413C48774D10FA50412D95E92467885441E5C24FB712FA5041D3B8A52E648854418D6959C713FA5041AAA46FFC618854414CCE613110FA50412A3ECDC46188544136A91F8C0EFA504114198B1F6088544110FEF2020DFA50415C18C8D15D885441F1F11D3B0DFA5041E8CE06D55C885441F79075FC0EFA5041CC0A6D6E59885441B091384A11FA50412490940457885441FAE7915C14FA50419A2191625488544193DC7FE216FA5041F2A6B8F8518854414CDD423019FA5041213978A451885441B0A019491AFA504184FC4EBD5288544168A1DC961CFA504111B38DC051885441EEB8C3D819FA5041B046D307568854418AF5ECBF18FA50413AB5D6A9588854412093BEE515FA5041D9481CF15C8854413448FB0414FA5041B70B107D61885441FAE7915C14FA5041B7F40BC860885441B4B0805F16FA504196DFD7916088544148E17AE421FA504185EB51884C8854418FC2F5781BFA5041F6285C3F4A885441666666760DFA50418FC2F50855885441333333C30BFA50410000003058885441C3F5287CF6F950417B14AED7838854418FC2F5C8F7F95041333333138588544114AE4731F9F950419A99997986885441AE47E1DAFAF95041D7A370ED8788544114AE4701FCF95041AE47E1CA88885441AE47E1FAFCF950419A9999D98888544148E17A24FFF95041A4703DFA888854419C17808415FA5041AD01C80E628854410A0000009706F94501FA504188800E1A73885441178E69C505FA5041696558536A8854415B456B1607FA50418E1085DC6B885441FE20ECBE07FA50418529F2B96D885441FE20ECBE07FA50412DA4CA23708854413C39964E07FA504182E1B65871885441C9EFD45106FA50416974395273885441652CFE3805FA5041CD37106B748854419DA5500703FA50411BD6A4DE738854419706F94501FA504188800E1A73885441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AE421FA504185EB51884C88544148E17A24FFF95041A4703DFA88885441EC51B8FE00FA50416666661689885441295C8F1203FA5041AE47E1AA89885441B81E855B24FA50410AD7A3704D88544148E17AE421FA504185EB51884C885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224834 - 1109045
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002A0000009C17808415FA5041AD01C80E6288544104CF247F12FA50414CA1BEEC6688544110FEF2020DFA50411E1EE03F7088544113462E6409FA504175B2E8D4768854412CB3AB6A07FA504162E4C28F7A885441E8FBA91906FA504143D8EDC77A8854418AD72AC206FA50414DBF80EA78885441716AADBB08FA50419EA550BF74885441CC46F1B10BFA50417B425F976F885441D2E548730DFA504121661BA16C8854413C48774D10FA50412D95E92467885441E5C24FB712FA5041D3B8A52E648854418D6959C713FA5041AAA46FFC618854414CCE613110FA50412A3ECDC46188544136A91F8C0EFA504114198B1F6088544110FEF2020DFA50415C18C8D15D885441F1F11D3B0DFA5041E8CE06D55C885441F79075FC0EFA5041CC0A6D6E59885441B091384A11FA50412490940457885441FAE7915C14FA50419A2191625488544193DC7FE216FA5041F2A6B8F8518854414CDD423019FA5041213978A451885441B0A019491AFA504184FC4EBD5288544168A1DC961CFA504111B38DC051885441EEB8C3D819FA5041B046D307568854418AF5ECBF18FA50413AB5D6A9588854412093BEE515FA5041D9481CF15C8854413448FB0414FA5041B70B107D61885441FAE7915C14FA5041B7F40BC860885441B4B0805F16FA504196DFD7916088544148E17AE421FA504185EB51884C8854418FC2F5781BFA5041F6285C3F4A885441666666760DFA50418FC2F50855885441333333C30BFA50410000003058885441C3F5287CF6F950417B14AED7838854418FC2F5C8F7F95041333333138588544114AE4731F9F950419A99997986885441AE47E1DAFAF95041D7A370ED8788544114AE4701FCF95041AE47E1CA88885441AE47E1FAFCF950419A9999D98888544148E17A24FFF95041A4703DFA888854419C17808415FA5041AD01C80E628854410A0000009706F94501FA504188800E1A73885441178E69C505FA5041696558536A8854415B456B1607FA50418E1085DC6B885441FE20ECBE07FA50418529F2B96D885441FE20ECBE07FA50412DA4CA23708854413C39964E07FA504182E1B65871885441C9EFD45106FA50416974395273885441652CFE3805FA5041CD37106B748854419DA5500703FA50411BD6A4DE738854419706F94501FA504188800E1A73885441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AE421FA504185EB51884C88544148E17A24FFF95041A4703DFA88885441EC51B8FE00FA50416666661689885441295C8F1203FA5041AE47E1AA89885441B81E855B24FA50410AD7A3704D88544148E17AE421FA504185EB51884C885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224834 - 3910566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002A0000009C17808415FA5041AD01C80E6288544104CF247F12FA50414CA1BEEC6688544110FEF2020DFA50411E1EE03F7088544113462E6409FA504175B2E8D4768854412CB3AB6A07FA504162E4C28F7A885441E8FBA91906FA504143D8EDC77A8854418AD72AC206FA50414DBF80EA78885441716AADBB08FA50419EA550BF74885441CC46F1B10BFA50417B425F976F885441D2E548730DFA504121661BA16C8854413C48774D10FA50412D95E92467885441E5C24FB712FA5041D3B8A52E648854418D6959C713FA5041AAA46FFC618854414CCE613110FA50412A3ECDC46188544136A91F8C0EFA504114198B1F6088544110FEF2020DFA50415C18C8D15D885441F1F11D3B0DFA5041E8CE06D55C885441F79075FC0EFA5041CC0A6D6E59885441B091384A11FA50412490940457885441FAE7915C14FA50419A2191625488544193DC7FE216FA5041F2A6B8F8518854414CDD423019FA5041213978A451885441B0A019491AFA504184FC4EBD5288544168A1DC961CFA504111B38DC051885441EEB8C3D819FA5041B046D307568854418AF5ECBF18FA50413AB5D6A9588854412093BEE515FA5041D9481CF15C8854413448FB0414FA5041B70B107D61885441FAE7915C14FA5041B7F40BC860885441B4B0805F16FA504196DFD7916088544148E17AE421FA504185EB51884C8854418FC2F5781BFA5041F6285C3F4A885441666666760DFA50418FC2F50855885441333333C30BFA50410000003058885441C3F5287CF6F950417B14AED7838854418FC2F5C8F7F95041333333138588544114AE4731F9F950419A99997986885441AE47E1DAFAF95041D7A370ED8788544114AE4701FCF95041AE47E1CA88885441AE47E1FAFCF950419A9999D98888544148E17A24FFF95041A4703DFA888854419C17808415FA5041AD01C80E628854410A0000009706F94501FA504188800E1A73885441178E69C505FA5041696558536A8854415B456B1607FA50418E1085DC6B885441FE20ECBE07FA50418529F2B96D885441FE20ECBE07FA50412DA4CA23708854413C39964E07FA504182E1B65871885441C9EFD45106FA50416974395273885441652CFE3805FA5041CD37106B748854419DA5500703FA50411BD6A4DE738854419706F94501FA504188800E1A73885441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AE421FA504185EB51884C88544148E17A24FFF95041A4703DFA88885441EC51B8FE00FA50416666661689885441295C8F1203FA5041AE47E1AA89885441B81E855B24FA50410AD7A3704D88544148E17AE421FA504185EB51884C885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900018 - 3011957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001A0000001F85EB4156F65041295C8F9277155441E17A147E55F650417B14AED7761554417B14AEB754F65041CDCCCC8C7715544152B81E7554F650417B14AE4777155441666666E64FF650419A999989721554417B14AEA74FF650415C8FC2D572155441C3F5282C4FF65041AE47E16A7315544185EB51084BF65041EC51B86E781554415C8FC2A545F65041333333F37E1554410000005040F650418FC2F56885155441CDCCCC2C3EF65041F6285CFF871554413D0AD7A33AF65041666666468C155441D7A370FD39F65041000000108D155441CDCCCC1C37F65041AE47E18A90155441000000C034F650417B14AE679315544185EB51C833F6504152B81E1595155441F6285C9F38F650415C8FC23599155441EC51B8EE38F6504166666676991554415C8FC22540F65041666666569F155441E17A144E44F650417B14AE579A1554411F85EB4153F65041D7A3705D881554416666661659F65041B81E855B81155441A4703D5A5CF65041EC51B86E7D155441000000605CF65041713D0A677D1554417B14AE2759F650415C8FC2557A1554411F85EB4156F65041295C8F927715544105000000333333433AF65041295C8F7296155441A4703DAA38F650410AD7A3E095155441D7A3702D39F650418FC2F53894155441333333E33AF650419A9999D994155441333333433AF65041295C8F7296155441
+</a>
+
+<b>
+01060000000100000001030000000200000049000000CDCCCCAC63F65041A4703D2A8A155441D7A3702D65F650418FC2F558881554417B14AEB765F650411F85EBB187155441D7A370ED66F65041AE47E13A86155441F6285C2F6AF65041AE47E14A821554419A9999296EF65041AE47E17A7D155441168E704F6DF650418C2A4A2C7D1554418071AF8D6CF650415ED07DE67C155441666666166CF65041B81E85BB7C1554410C270FBF6BF65041FB9DF1767C1554419C4461696BF650413017AC337C155441EC51B8CE6AF65041A4703DBA7B15544144F31B196AF65041230F662B7B15544123831B8869F6504147EE59B97A15544146884DF267F65041F6132D7A79155441F6285C0F67F650417B14AEC778155441104AFF2366F65041AF23EA6878155441B582AA3964F65041776A7DA3771554415BD4678D62F65041D59B0EF776155441000000F061F650417B14AEB776155441EC51B89E5FF6504114AE478179155441000000605CF65041713D0A677D155441A4703D5A5CF65041EC51B86E7D1554416666661659F65041B81E855B81155441D12CC3F556F6504161D128EA83155441E03D531D56F6504118A24FEE84155441729C980E55F65041134DB833861554410A46C92554F65041B1118D4B87155441A141E0AB53F65041897315DE871554411F85EB4153F65041D7A3705D8815544145462DA652F6504171EDB01889155441D614E5CB51F650418917221F8A15544114DCEEE650F6504122666A328B155441E39A2B3950F65041E9F054038C15544183A7EC714FF6504175F8E2F28C155441636EDB884EF650417EE71A0B8E155441BE459FAD4DF65041F363B1128F155441A7923ED84CF65041DA103D13901554417E7AD70A4CF65041BA1A320A911554412207D25B4BF650416906A0DC911554417158A48A4AF650410E331FD89215544174BE259849F6504171C1ACFB93155441675056D148F65041EDB3B4EA94155441F938B2DB47F650419DB40A12961554419CB8D5F046F6504138D56A2C971554410F11FDF645F65041F331CF5898155441AE8C213345F65041894D4A449915544187B58D7D44F65041F3299A1E9A155441E17A144E44F650417B14AE579A15544111CD2DE840F650410715D16C9E155441F40DAF2B40F65041046B484F9F1554415F275C2740F650413AD2AA589F1554410FD66BFA42F650412C04E8D7A1155441C3767E0346F650419F57CF87A4155441C75AB1FC46F65041ECC36964A51554417B0D4DE647F650413FFC3633A61554411F72DDDB48F650417DAF990CA71554419796BE2D4AF650418946B537A8155441CDCCCC4C4AF6504133333353A81554416899A96A4BF650411232C41BA7155441E397CC884CF65041BD1E09E4A515544188F1BED24DF650412D82937CA415544171EBD9F04EF65041022BE144A3155441673EB05650F65041B403467AA115544152B81EE550F65041333333C3A0155441D7A370BD53F65041B81E851B9D155441333333835EF6504148E17A04A6155441AE47E16A61F6504100000020A31554417B14AE3756F65041CDCCCCEC991554417B14AEC75BF650417B14AEB793155441333333F35BF6504133333383931554418FC2F5585FF65041713D0A678F155441CDCCCCAC63F65041A4703D2A8A155441050000002F0B909746F65041262FE95B991554418427EC0648F65041D00D4223971554417F68D42F49F65041575995F1971554418AEB4EA747F650411AA7231B9A1554412F0B909746F65041262FE95B99155441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900018 - 5257575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001A0000001F85EB4156F65041295C8F9277155441E17A147E55F650417B14AED7761554417B14AEB754F65041CDCCCC8C7715544152B81E7554F650417B14AE4777155441666666E64FF650419A999989721554417B14AEA74FF650415C8FC2D572155441C3F5282C4FF65041AE47E16A7315544185EB51084BF65041EC51B86E781554415C8FC2A545F65041333333F37E1554410000005040F650418FC2F56885155441CDCCCC2C3EF65041F6285CFF871554413D0AD7A33AF65041666666468C155441D7A370FD39F65041000000108D155441CDCCCC1C37F65041AE47E18A90155441000000C034F650417B14AE679315544185EB51C833F6504152B81E1595155441F6285C9F38F650415C8FC23599155441EC51B8EE38F6504166666676991554415C8FC22540F65041666666569F155441E17A144E44F650417B14AE579A1554411F85EB4153F65041D7A3705D881554416666661659F65041B81E855B81155441A4703D5A5CF65041EC51B86E7D155441000000605CF65041713D0A677D1554417B14AE2759F650415C8FC2557A1554411F85EB4156F65041295C8F927715544105000000333333433AF65041295C8F7296155441A4703DAA38F650410AD7A3E095155441D7A3702D39F650418FC2F53894155441333333E33AF650419A9999D994155441333333433AF65041295C8F7296155441
+</a>
+
+<b>
+01060000000100000001030000000200000049000000CDCCCCAC63F65041A4703D2A8A155441D7A3702D65F650418FC2F558881554417B14AEB765F650411F85EBB187155441D7A370ED66F65041AE47E13A86155441F6285C2F6AF65041AE47E14A821554419A9999296EF65041AE47E17A7D155441168E704F6DF650418C2A4A2C7D1554418071AF8D6CF650415ED07DE67C155441666666166CF65041B81E85BB7C1554410C270FBF6BF65041FB9DF1767C1554419C4461696BF650413017AC337C155441EC51B8CE6AF65041A4703DBA7B15544144F31B196AF65041230F662B7B15544123831B8869F6504147EE59B97A15544146884DF267F65041F6132D7A79155441F6285C0F67F650417B14AEC778155441104AFF2366F65041AF23EA6878155441B582AA3964F65041776A7DA3771554415BD4678D62F65041D59B0EF776155441000000F061F650417B14AEB776155441EC51B89E5FF6504114AE478179155441000000605CF65041713D0A677D155441A4703D5A5CF65041EC51B86E7D1554416666661659F65041B81E855B81155441D12CC3F556F6504161D128EA83155441E03D531D56F6504118A24FEE84155441729C980E55F65041134DB833861554410A46C92554F65041B1118D4B87155441A141E0AB53F65041897315DE871554411F85EB4153F65041D7A3705D8815544145462DA652F6504171EDB01889155441D614E5CB51F650418917221F8A15544114DCEEE650F6504122666A328B155441E39A2B3950F65041E9F054038C15544183A7EC714FF6504175F8E2F28C155441636EDB884EF650417EE71A0B8E155441BE459FAD4DF65041F363B1128F155441A7923ED84CF65041DA103D13901554417E7AD70A4CF65041BA1A320A911554412207D25B4BF650416906A0DC911554417158A48A4AF650410E331FD89215544174BE259849F6504171C1ACFB93155441675056D148F65041EDB3B4EA94155441F938B2DB47F650419DB40A12961554419CB8D5F046F6504138D56A2C971554410F11FDF645F65041F331CF5898155441AE8C213345F65041894D4A449915544187B58D7D44F65041F3299A1E9A155441E17A144E44F650417B14AE579A15544111CD2DE840F650410715D16C9E155441F40DAF2B40F65041046B484F9F1554415F275C2740F650413AD2AA589F1554410FD66BFA42F650412C04E8D7A1155441C3767E0346F650419F57CF87A4155441C75AB1FC46F65041ECC36964A51554417B0D4DE647F650413FFC3633A61554411F72DDDB48F650417DAF990CA71554419796BE2D4AF650418946B537A8155441CDCCCC4C4AF6504133333353A81554416899A96A4BF650411232C41BA7155441E397CC884CF65041BD1E09E4A515544188F1BED24DF650412D82937CA415544171EBD9F04EF65041022BE144A3155441673EB05650F65041B403467AA115544152B81EE550F65041333333C3A0155441D7A370BD53F65041B81E851B9D155441333333835EF6504148E17A04A6155441AE47E16A61F6504100000020A31554417B14AE3756F65041CDCCCCEC991554417B14AEC75BF650417B14AEB793155441333333F35BF6504133333383931554418FC2F5585FF65041713D0A678F155441CDCCCCAC63F65041A4703D2A8A155441050000002F0B909746F65041262FE95B991554418427EC0648F65041D00D4223971554417F68D42F49F65041575995F1971554418AEB4EA747F650411AA7231B9A1554412F0B909746F65041262FE95B99155441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900039 - 3176529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000000F0000007B14AE47ECE05041295C8F829C2A5441E17A149EE8E05041B81E851B9A2A5441295C8FD2E2E05041F6285C9F982A5441CDCCCC9CDDE050415C8FC275962A544133333323D9E050410AD7A380A92A544114AE47C1DBE05041713D0A27AA2A5441B81E856BE3E0504185EB5118AA2A5441A4703D7AE7E050411F85EB01AB2A5441000000B0EAE050415C8FC275AB2A544152B81E45F0E0504148E17A14B02A54410AD7A380F1E0504133333393B02A54419A999969F6E05041E17A146EB02A5441B81E853BF7E05041B81E85DBAF2A5441B81E850BF2E050415C8FC2B5A82A54417B14AE47ECE05041295C8F829C2A544101030000000100000027000000AE47E1AAB7E050417B14AE97712A5441E17A143EBAE050418FC2F5686E2A5441E17A14DEBBE05041F6285CBF6B2A5441C3F5280CBFE05041A4703D5A642A544114AE4731C1E05041C3F5284C5A2A5441713D0AB7C2E05041C3F5281C582A544100000080C6E0504166666646552A544100000080CEE05041666666A64F2A5441295C8F62D1E050415C8FC2354D2A5441666666B6D4E050419A9999A9492A54410AD7A3A0D7E05041A4703DFA442A54418FC2F538D9E0504185EB5128412A54419A9999C9DBE05041D7A370ED342A54411F85EBE1DCE0504114AE4791312A54411F85EB31DEE0504185EB51882D2A544148E17A24D5E05041C3F5280C2D2A5441EC51B8DEC8E050419A999909292A54410AD7A390B4E05041A4703D8A242A544148E17AB4AEE050419A9999991B2A54418FC2F5D8A8E05041CDCCCCFC162A5441295C8FC2A4E0504114AE47D1162A54418FC2F5189EE05041E17A14DE212A544152B81EC599E050417B14AEC7212A5441AE47E1EA97E05041A4703D7A292A5441CDCCCC7C97E050413D0AD7F32D2A5441333333C397E050417B14AE17322A5441EC51B88E98E0504114AE47A1362A54411F85EBD19AE050419A9999E93D2A54418FC2F5A89AE0504100000090432A5441000000F09BE05041333333634A2A544152B81EA59AE05041EC51B8FE502A544148E17A0499E05041E17A140E542A5441713D0A3797E0504114AE47B1562A5441C3F5286CA3E05041EC51B8FE682A5441666666B6A8E050415C8FC2C5722A544100000090AAE050417B14AED7762A544148E17A34ABE050413D0AD7037A2A5441D7A3706DABE05041C3F528CC7C2A5441AE47E1AAB7E050417B14AE97712A54410103000000010000000A000000295C8F82E7E050413D0AD7F3212A544166666676EAE050415C8FC2051F2A544166666626EBE0504185EB51A81C2A5441D7A3703DEDE050415C8FC2D5192A544148E17AA4F3E050415C8FC2950C2A54417B14AE17F5E05041295C8F32092A54415C8FC235F8E050418FC2F588042A5441CDCCCC0CECE05041D7A370FD022A54418FC2F548E7E050413D0AD7B30D2A5441295C8F82E7E050413D0AD7F3212A54410103000000060000004B01000033333363B8E050410AD7A340722A544185EB51D8B4E0504133333323752A544166666686ADE050419A9999297C2A54418FC2F528A9E0504166666626802A54415C8FC2D5AEE05041A4703DFA812A54418FC2F578B4E05041295C8F02832A5441F6285CBFBBE05041333333E3852A544100000010C3E05041EC51B82E872A54411F85EBF1D1E050417B14AE678E2A5441C3F5280CDCE050417B14AE77942A54415C8FC235E3E050411F85EB71972A54415C8FC225E9E05041D7A370FD982A544152B81E35EDE05041CDCCCCAC9B2A54415C8FC225F3E0504166666606A82A5441295C8F02F9E05041F6285CEFAF2A5441295C8F22FBE05041CDCCCC8CAF2A5441295C8F32FCE05041B81E850BAF2A5441C3F528ACFCE050413D0AD723AF2A54413D0AD743FEE05041AE47E15AAE2A5441AE47E1FAFEE0504152B81E95AC2A544133333393FEE05041D7A3709DA82A5441D7A3709DFEE05041E17A142EA72A5441713D0A3700E15041333333F3A52A5441F6285CBF00E15041A4703DBAA12A544152B81ED5FCE0504100000090992A5441CDCCCC3CFDE050411F85EB31982A5441F6285C5F04E1504100000080942A544152B81E2507E150417B14AE17942A54419A9999E908E15041713D0A67962A544152B81E350DE150410AD7A3B0912A54410000006015E15041F6285CCF8D2A5441F6285C9F1BE150415C8FC2F58B2A54415C8FC20520E15041713D0AB7842A5441000000802BE15041CDCCCC0C752A5441B81E855B2CE15041EC51B82E742A54419A9999492DE15041295C8FA2732A54419A9999192FE15041713D0A27732A54415C8FC20532E15041713D0A476F2A5441EC51B8DE34E150411F85EB216D2A5441A4703DCA37E1504133333333702A5441B81E85AB3BE15041D7A3703D6F2A5441CDCCCCEC3DE15041AE47E18A6B2A5441295C8F8241E1504166666666682A544148E17A6445E15041AE47E17A652A5441F6285C7F48E15041333333B3662A5441C3F528DC4BE150415C8FC225652A544152B81EE54DE15041B81E854B652A544152B81E854FE1504152B81E15612A5441000000904DE150417B14AE875F2A544114AE47D14EE15041AE47E19A5E2A54418FC2F50852E1504114AE47915E2A5441A4703D4A53E15041666666E65F2A54415C8FC26555E15041B81E859B5D2A5441CDCCCCBC52E15041EC51B8AE5C2A54410AD7A34054E150417B14AEA7582A5441D7A370FD55E15041E17A143E5B2A54417B14AE4758E15041666666A65A2A54419A99998959E150418FC2F548582A5441D7A3709D57E150418FC2F578572A5441E17A143E59E15041713D0A67552A54410AD7A3F05BE150417B14AE37552A5441000000C05EE15041295C8F52572A54416666668660E15041EC51B89E572A5441D7A3708D64E15041E17A145E532A54410AD7A3E068E15041B81E853B4D2A54410AD7A3506DE15041B81E852B472A54413D0AD7D371E15041CDCCCC1C472A5441000000C079E150417B14AE673F2A544185EB515874E1504114AE47C1342A54411F85EBE165E15041B81E851B2A2A5441000000E054E1504133333333282A5441CDCCCCDC4AE150419A9999F9252A54418FC2F5483BE15041F6285C7F252A5441A4703DDA32E15041EC51B88E252A544185EB51D832E150411F85EB71282A5441713D0AC72FE1504148E17A24292A5441E17A143E2BE150417B14AEA7282A5441AE47E1EA26E1504152B81EF5272A54410AD7A35025E15041A4703D5A262A5441EC51B80E27E1504166666666242A5441E17A14CE2DE15041C3F5285C1E2A54417B14AED730E15041295C8FF2132A54410AD7A3404DE150410AD7A330FD2954411F85EB315AE150411F85EBD1042A54416666668683E150415C8FC295FC295441D7A3706D9FE15041CDCCCCACFF295441E17A145E9EE1504100000030FD29544152B81E759DE15041295C8F42FC2954418FC2F5389CE150411F85EBD1F92954419A9999D99BE15041A4703D5AF929544148E17A249BE15041CDCCCC0CF9295441C3F5285C9AE1504152B81E95F82954419A9999A999E150417B14AE47F82954410000009098E15041333333F3F7295441AE47E18A97E15041666666F6F62954417B14AEC796E15041713D0A87F6295441CDCCCC0C96E15041713D0A37F6295441295C8F5295E15041E17A141EF6295441AE47E1BA94E1504100000070F6295441D7A370BD93E150419A999909F7295441000000F092E15041F6285CDFF729544152B81EC591E15041E17A14FEF7295441EC51B87E90E15041C3F5280CF829544148E17A848FE150413D0AD7C3F7295441AE47E18A8EE15041713D0A67F8295441F6285C8F8DE1504100000090F829544148E17AA48BE150417B14AEA7F8295441CDCCCC7C8AE15041C3F528BCF8295441713D0A0788E15041AE47E17AF7295441F6285C6F86E1504114AE47A1F62954413333336385E150411F85EB61F629544148E17A4484E150419A999939F6295441CDCCCC7C83E1504166666606F62954413333339382E150410AD7A3E0F5295441EC51B80E81E150410AD7A300F62954415C8FC25580E1504148E17A44F6295441B81E858B7FE150411F85EB41F629544114AE47817EE15041295C8F02F6295441AE47E18A7DE15041D7A3703DF629544148E17AC47CE15041AE47E12AF6295441AE47E18A7BE150415C8FC205F6295441333333037BE15041F6285CAFF52954418FC2F5387AE150413D0AD763F6295441A4703D6A79E15041F6285CFFF6295441F6285C5F78E1504100000050F7295441EC51B84E77E1504185EB5188F72954417B14AE0776E15041AE47E1EAF6295441A4703D5A75E150419A9999C9F6295441C3F528DC73E150418FC2F5A8F6295441000000C072E15041000000F0F62954418FC2F5F871E15041CDCCCC4CF72954415C8FC2E570E1504185EB5168F7295441EC51B8CE6FE15041B81E851BF7295441A4703D7A6EE15041C3F5286CF729544148E17A846DE15041D7A3700DF829544185EB51686BE15041000000E0F3295441EC51B8AE69E15041CDCCCCBCF4295441295C8FC268E1504185EB51F8F42954413D0AD74367E150415C8FC215F52954415C8FC27566E15041F6285C5FF5295441AE47E17A65E150418FC2F5A8F5295441A4703DCA64E15041295C8FF2F5295441EC51B8DE63E15041E17A146EF529544114AE470163E150415C8FC215F52954411F85EB4162E15041E17A14AEF4295441CDCCCC0C61E15041713D0A07F529544148E17AF45FE15041CDCCCC7CF5295441C3F5289C5FE150419A999959F6295441AE47E1AA5FE15041C3F528ACF7295441CDCCCCDC5EE1504100000040F8295441AE47E17A5DE150415C8FC2B5F82954411F85EB715CE1504152B81E75F9295441C3F528FC5BE15041C3F5289CFA29544152B81E955BE1504166666696FB295441B81E858B5AE1504185EB5138FC295441A4703D2A59E15041B81E85CBFC295441E17A143E58E15041F6285C9FFC29544185EB51C857E15041CDCCCC4CFB295441E17A14CE56E150418FC2F578FB2954410AD7A3B056E150415C8FC2E5FA2954413D0AD74357E1504152B81E75F92954413333339356E1504185EB5198F8295441B81E857B55E1504100000080F7295441E17A149E54E150418FC2F518F7295441EC51B8DE53E15041713D0A77F62954413D0AD7A353E150418FC2F5A8F5295441E17A142E53E150411F85EB81F4295441713D0AC752E15041EC51B8EEF3295441713D0AC752E1504148E17AF4F2295441B81E858B52E150419A9999F9F1295441295C8F8251E15041EC51B8BEF129544148E17AB450E150413D0AD743F22954417B14AED74FE15041D7A3708DF22954418FC2F5084FE1504114AE4761F229544185EB51584EE15041C3F5289CF229544152B81EC54DE15041AE47E1AAF229544148E17A544CE1504100000070F2295441666666864BE1504114AE4761F22954415C8FC2D54AE15041D7A3708DF22954419A9999E949E15041D7A3708DF2295441D7A370BD49E15041D7A370CDF12954417B14AE4749E150411F85EBE1F02954410000003048E15041EC51B84EF029544148E17A1445E15041713D0AA7F0295441D7A370ED43E150410AD7A3F0F0295441C3F5288C42E15041295C8F92F1295441D7A370BD41E15041A4703D3AF1295441333333C340E150418FC2F5D8EF2954410000003040E15041F6285C8FEF29544185EB51183FE15041F6285C8FEF295441AE47E1FA3EE150411F85EBB1EE295441EC51B80E3EE150415C8FC285EE295441E17A145E3DE1504114AE4701EE295441713D0AF73CE150415C8FC215ED29544114AE47813CE150419A9999E9EC295441666666463CE1504133333373EC29544114AE47C13BE15041C3F528CCEC2954411F85EB013BE150419A9999E9EC2954419A9999A93AE150411F85EB41ED295441EC51B86E3AE15041EC51B81EEE295441295C8F423AE150418FC2F518EF295441B81E85DB39E15041E17A149EEF295441CDCCCC0C39E15041A4703DCAEF2954418FC2F5C837E15041A4703D0AEF295441EC51B8CE36E15041D7A3702DEE29544114AE47F135E150413D0AD7E3ED29544114AE478134E150413D0AD7E3ED295441B81E850B34E150418FC2F5A8ED29544152B81E9533E15041EC51B81EEE29544152B81E2532E1504100000010EE295441E17A14BE31E1504148E17A94EE295441F6285CAF31E1504148E17A54EF295441713D0A5731E15041666666F6EF295441333333C330E15041EC51B84EF0295441EC51B83E30E1504148E17AC4F02954417B14AED72FE150417B14AE57F1295441F6285C7F2FE15041AE47E1EAF1295441D7A370DD2EE1504166666626F2295441A4703D4A2EE150419A9999F9F1295441CDCCCCFC2BE150418FC2F508F2295441AE47E15A2BE1504114AE4761F22954415C8FC2D52AE1504148E17AF4F2295441D7A3707D2AE15041F6285C2FF3295441666666162AE15041F6285C2FF32954410AD7A3A029E15041713D0AD7F22954410AD7A3A029E1504166666626F2295441E17A14BE29E1504152B81E75F129544152B81E252AE150419A999989F02954413D0AD7332AE15041CDCCCCACEF295441B81E85DB29E15041F6285CCFEE295441AE47E12A29E15041D7A3702DEE295441666666A628E15041B81E858BED295441B81E856B28E1504114AE4791EC2954417B14AE9728E1504114AE47D1EB295441D7A3704D28E15041CDCCCC4CEB295441666666E627E15041F6285C2FEB2954413333335327E15041A4703D6AEB2954417B14AE6726E150418FC2F578EB29544185EB51A825E1504166666696EB2954413333332325E150419A999929EC29544114AE478124E1504185EB51F8EC2954415C8FC29523E15041A4703D9AED2954410000002023E15041D7A3702DEE2954419A9999A922E150411F85EBB1EE29544114AE475122E15041CDCCCCECEE295441B81E85DB21E15041F6285CCFEE2954411F85EB9121E15041D7A3702DEE295441C3F5281C21E1504148E17A24ED2954413D0AD7C320E1504114AE4791EC295441B81E856B20E1504152B81E65EC2954411F85EB2120E15041000000A0EC2954418FC2F5C81FE1504148E17A24ED2954410AD7A3701FE150417B14AEB7ED295441D7A370DD1EE1504100000010EE295441E17A141E1EE15041333333A3EE295441AE47E18A1DE15041B81E85FBEE295441295C8F321DE15041E17A149EEF29544185EB51E81CE15041EC51B84EF0295441EC51B89E1CE15041CDCCCC1CF12954418FC2F5281CE1504152B81E75F1295441C3F5284C1BE15041D7A370CDF1295441F6285C6F1AE150417B14AE17F22954413333338319E150418FC2F508F2295441B81E856B18E15041000000B0F1295441B81E856B18E15041713D0AA7F02954417B14AE9718E15041B81E85BBEF295441713D0A5719E15041333333A3EE29544185EB514819E15041C3F5283CEE295441A4703DEA19E150413D0AD7E3ED295441A4703DAA1AE15041CDCCCC7CED29544152B81EE51AE1504185EB51F8EC295441CDCCCC8C1AE15041AE47E11AEC2954417B14AE071AE150419A9999B9EA2954411F85EB9119E150418FC2F548E9295441B81E85DB19E150418FC2F5D8E729544148E17A7419E1504100000010E6295441C3F5281C19E150411F85EB41E5295441A4703D7A18E15041F6285C5FE529544185EB51D817E1504100000010E6295441C3F528EC16E1504185EB5128E7295441B81E853B16E15041A4703DCAE7295441AE47E18A15E15041295C8F22E82954418FC2F5E814E150415C8FC2B5E8295441A4703D1A14E150417B14AE57E9295441295C8F0213E1504166666666E9295441E17A14BE11E15041B81E852BE92954413D0AD7C310E15041CDCCCC1CE929544152B81E450FE15041EC51B84EE8295441A4703DEA0DE1504100000070E72954413D0AD7C30CE15041CDCCCCECE7295441D7A370FD0BE150418FC2F538E8295441A4703DFA0BE15041AE47E19AE829544114AE47110CE150413D0AD783E9295441C3F5287C0CE15041CDCCCCCCEA29544185EB51280CE15041F6285CFFEB295441666666960AE1504100000030ED295441D7A3702D09E150417B14AE67ED2954419A99990908E15041B81E851BED2954415C8FC26507E15041EC51B83EEC295441D7A370AD06E15041666666E6EB2954418FC2F59805E150411F85EBC1EB295441CDCCCC5C04E15041666666A6EB29544114AE470103E150417B14AE67EA295441295C8F4204E15041C3F5283CEF295441713D0AD704E150417B14AEB7F2295441000000700BE15041713D0A57FD29544152B81E3500E15041A4703DAAFE295441D7A3703DFAE0504166666696032A54413D0AD703F9E050418FC2F528052A544114AE4771F5E05041C3F5280C0A2A5441713D0AF7F2E05041713D0A770F2A5441295C8F52EEE05041713D0A37192A5441F6285C4FECE0504185EB51781D2A54419A999939EBE05041A4703DAA1F2A544166666676E4E05041000000E0252A5441295C8FF2E2E05041E17A14DE272A54410AD7A310DFE0504185EB51082E2A54410AD7A3C0DCE0504166666636352A5441E17A14CED8E05041AE47E15A452A54419A999939D7E05041000000D0472A54413D0AD743D6E050410AD7A370492A5441000000C0D3E0504185EB51784C2A54410AD7A320D0E050417B14AE474F2A54415C8FC215C7E0504152B81E15562A544152B81E75C3E0504148E17AC4582A5441A4703DBAC1E05041E17A148E5B2A544152B81EE5C0E0504152B81E95602A5441B81E852BBFE0504114AE47A1652A54418FC2F5F8BEE05041E17A14DE662A5441295C8FF2BBE05041333333F36C2A544133333363B8E050410AD7A340722A54410D00000066666676D2E050417B14AEC7792A544152B81E95D5E05041D7A370BD7A2A5441D7A3706DD9E0504185EB51487B2A54417B14AE77DBE0504114AE47717D2A54418FC2F5E8DCE05041295C8F62802A54419A999949DBE050411F85EB01822A54419A9999C9D9E05041E17A14CE802A5441D7A370DDD7E05041AE47E11A7E2A5441CDCCCCDCD4E050410AD7A3807D2A5441333333B3CFE050413D0AD7C37E2A544133333323CEE050415C8FC2057D2A5441CDCCCC4CD0E05041F6285C8F7A2A544166666676D2E050417B14AEC7792A544105000000CDCCCC1CB0E05041D7A370AD7E2A54419A999909B0E05041EC51B8EE7F2A54410AD7A300AFE050411F85EB01802A5441D7A370EDAEE05041A4703D9A7E2A5441CDCCCC1CB0E05041D7A370AD7E2A544119000000333333C337E15041C3F5287C2D2A5441E17A146E35E15041EC51B89E2C2A544114AE47A132E15041713D0A272C2A544148E17AD42BE150411F85EBD12A2A54411F85EBB127E15041D7A3708D2A2A54419A99992925E15041A4703D5A2A2A54415C8FC2F522E15041A4703D5A292A5441B81E854B21E150418FC2F548272A54410AD7A3A01EE150413D0AD7F3222A544148E17AE41BE1504114AE47D11F2A54413D0AD7D318E15041CDCCCC8C1E2A5441295C8FC214E1504148E17A041D2A54415C8FC2F514E150419A9999591C2A54415C8FC2F519E15041333333F31D2A54413D0AD7D31CE150419A9999591F2A544152B81EE51EE15041000000C0212A5441B81E854B21E15041C3F5287C252A54410AD7A3A023E15041295C8FE2282A54410AD7A3A025E150410AD7A3C0292A5441CDCCCC5C28E150410AD7A3C0292A54417B14AE072CE1504152B81E052A2A54411F85EBB131E150418FC2F5482B2A54417B14AE0736E1504152B81E052C2A54417B14AE0738E15041F6285CAF2C2A5441333333C337E15041C3F5287C2D2A544127000000B81E851BE0E050410AD7A360752A5441A4703D0ADDE05041F6285C6F552A544148E17A04D4E050415C8FC2F5572A5441CDCCCC5CDBE0504185EB51E84E2A544152B81EB5EEE0504166666646472A5441E17A14DEF0E05041000000703A2A5441A4703D6AEBE050413D0AD713302A544114AE47B1ECE0504148E17AF4292A544166666676FDE0504114AE4741262A5441AE47E12A00E150419A9999992B2A54410AD7A3B003E1504114AE47D12A2A54419A9999F908E150417B14AE672B2A5441CDCCCC3C0FE15041A4703D2A2D2A5441A4703D7A16E15041EC51B88E2D2A54413D0AD7E315E15041E17A147E302A5441295C8FD20FE15041EC51B80E322A54410AD7A3F006E15041B81E852B362A54415C8FC245FDE050410AD7A3C03B2A5441B81E851BF5E05041B81E856B422A5441C3F528CCF3E0504185EB51D8462A5441666666D6F8E05041333333C3482A544185EB519819E15041D7A370AD3F2A5441000000601AE15041B81E853B392A5441C3F5284C22E150413D0AD7B3302A5441E17A14BE25E150419A9999992B2A54418FC2F5382BE15041000000302C2A54419A99997930E15041000000302D2A54419A99991934E15041B81E859B2D2A5441D7A3709D34E1504114AE47512F2A5441C3F5281C38E15041D7A3706D312A5441333333B34AE1504152B81EC53F2A5441713D0AA74BE15041EC51B80E4E2A5441AE47E10A47E15041C3F528BC562A54415C8FC29539E150415C8FC295612A54417B14AEA722E150410AD7A3F06E2A544114AE470119E15041D7A3705D782A54418FC2F5F8F7E05041C3F528EC832A5441AE47E14AE9E0504152B81E857F2A5441B81E851BE0E050410AD7A360752A54410600000014AE4731F0E0504166666666852A54418FC2F548F3E05041CDCCCC7C8E2A5441333333E3EDE05041EC51B8DE912A544185EB5178E8E05041EC51B87E902A5441C3F528CCE6E0504133333353882A544114AE4731F0E0504166666666852A54410103000000010000001C00000000000000C4E15041C3F528FC202A5441295C8F92C3E1504114AE47A11E2A54417B14AEB7C2E15041AE47E1EA1C2A54417B14AEF7C1E15041D7A370BD1B2A5441713D0AB7C1E15041CDCCCCDC192A54417B14AEF7C1E150417B14AE87182A5441000000E0C1E150411F85EBC1152A544152B81E65C1E1504152B81EA5142A5441000000F0BCE15041CDCCCCEC162A54417B14AEE7BAE150415C8FC245172A5441333333B3B5E15041B81E85AB142A544185EB5118B5E1504100000090172A544100000010B3E15041CDCCCC9C1A2A544114AE47C1B1E150417B14AE671F2A544148E17AA4B3E15041E17A142E232A54415C8FC255B2E150410AD7A3F0252A54411F85EBE1B0E150418FC2F568282A544114AE47C1B1E15041F6285C2F2C2A54418FC2F5A8B4E15041F6285C2F2C2A54410AD7A320B7E150413D0AD7C32C2A5441D7A3702DBAE150417B14AE372E2A5441666666C6BBE150410AD7A3502B2A5441CDCCCC0CBBE15041EC51B81E282A54413D0AD763BEE150415C8FC215262A5441A4703D2AC2E150417B14AE57242A544152B81E25C3E15041000000E0232A5441713D0A37C4E15041295C8FB2222A544100000000C4E15041C3F528FC202A54410103000000010000000E000000B81E853BFFE05041E17A145EF0295441C3F528ACFEE050410AD7A3E0F22954413D0AD7F3FEE0504100000040F5295441E17A14EEFFE05041F6285C6FF62954413D0AD7F301E150418FC2F5C8F32954415C8FC20504E1504133333353F5295441EC51B82E04E150419A999969F32954410AD7A39003E150411F85EB31EF295441B81E85CB01E1504133333333E9295441295C8F8200E1504133333333E9295441E17A147EFFE0504148E17A14EA295441E17A146EFEE0504133333373EB2954419A999929FFE050413D0AD793ED295441B81E853BFFE05041E17A145EF0295441
+</a>
+
+<b>
+010600000001000000010300000006000000D60100005EEFE29DD0E150411B64FA052E2A5441E6C82FFECDE15041D5B2921F2B2A54417EE7151ACCE15041D1E699E8272A5441801EB4B2C8E15041B1170AE2242A5441A9277921C8E150412630C25E232A54419824E251C8E15041AD4B11AB212A544139C70AC4C8E15041093D7220212A5441308E401FC7E15041DF5A9C0B202A54417C084F64C4E15041F57DFE481F2A54412BBF8E8BC3E15041E47168C41D2A5441783D017FC2E15041CF8FB7741C2A5441F98682C4C1E15041636D44F81A2A5441D86621AEC1E150417D75FA5D192A5441DB1114B2C1E15041DAFF8226182A54413764CD7BC1E15041D2144583162A5441876A6D62C1E15041325727A9152A54416F6B6463C1E15041AD5594A7152A5441D1559FACC1E1504101EDF7A6132A5441095D3694C1E1504133188214132A54412E35E9B7BEE15041CD095445132A5441DC248E3DBDE1504191DEC9D7132A54410D9A2B62BDE15041944CD014142A5441D06EA1F4BDE1504144D95F9B152A54410D9A2B62BDE15041376D8609172A544192A62C86BBE1504102D4F55E172A544144BAC491B9E15041B179872D152A54410BA9EEA5B8E15041F65E1BF9132A5441E290B0A2B6E150410657EFAF142A54411F85EB31B6E15041C3F5281C142A5441D7A370EDB4E15041666666A6112A5441EC51B83EB3E150413D0AD7130F2A54411F85EB21B2E15041000000500C2A544133333313AFE1504114AE47E1082A54413D0AD703ADE15041C3F528AC072A544148E17A44ABE15041C3F528BC052A5441F6285C0FAAE150410AD7A310032A54410AD7A370A8E15041E17A149E002A5441B81E854BA7E1504148E17A64FE29544185EB5188A6E1504100000070FB295441EC51B86EA2E15041C3F5288CFA29544152B81E25A0E1504166666616FB295441E17A145E9EE1504100000030FD29544152B81E759DE15041295C8F42FC2954418FC2F5389CE150411F85EBD1F92954419A9999D99BE15041A4703D5AF929544148E17A249BE15041CDCCCC0CF9295441C3F5285C9AE1504152B81E95F82954419A9999A999E150417B14AE47F82954410000009098E15041333333F3F7295441AE47E18A97E15041666666F6F62954417B14AEC796E15041713D0A87F6295441CDCCCC0C96E15041713D0A37F6295441295C8F5295E15041E17A141EF6295441AE47E1BA94E1504100000070F6295441D7A370BD93E150419A999909F7295441000000F092E15041F6285CDFF729544152B81EC591E15041E17A14FEF7295441EC51B87E90E15041C3F5280CF829544148E17A848FE150413D0AD7C3F7295441AE47E18A8EE15041713D0A67F8295441F6285C8F8DE1504100000090F829544148E17AA48BE150417B14AEA7F8295441CDCCCC7C8AE15041C3F528BCF8295441713D0A0788E15041AE47E17AF7295441F6285C6F86E1504114AE47A1F62954413333336385E150411F85EB61F629544148E17A4484E150419A999939F6295441CDCCCC7C83E1504166666606F62954413333339382E150410AD7A3E0F5295441EC51B80E81E150410AD7A300F62954415C8FC25580E1504148E17A44F6295441B81E858B7FE150411F85EB41F629544114AE47817EE15041295C8F02F6295441AE47E18A7DE15041D7A3703DF629544148E17AC47CE15041AE47E12AF6295441AE47E18A7BE150415C8FC205F6295441333333037BE15041F6285CAFF52954418FC2F5387AE150413D0AD763F6295441A4703D6A79E15041F6285CFFF6295441F6285C5F78E1504100000050F7295441EC51B84E77E1504185EB5188F72954417B14AE0776E15041AE47E1EAF6295441A4703D5A75E150419A9999C9F6295441C3F528DC73E150418FC2F5A8F6295441000000C072E15041000000F0F62954418FC2F5F871E15041CDCCCC4CF72954415C8FC2E570E1504185EB5168F7295441EC51B8CE6FE15041B81E851BF7295441A4703D7A6EE15041C3F5286CF729544148E17A846DE15041D7A3700DF829544185EB51686BE15041000000E0F3295441EC51B8AE69E15041CDCCCCBCF4295441295C8FC268E1504185EB51F8F42954413D0AD74367E150415C8FC215F52954415C8FC27566E15041F6285C5FF5295441AE47E17A65E150418FC2F5A8F5295441A4703DCA64E15041295C8FF2F5295441EC51B8DE63E15041E17A146EF529544114AE470163E150415C8FC215F52954411F85EB4162E15041E17A14AEF4295441CDCCCC0C61E15041713D0A07F529544148E17AF45FE15041CDCCCC7CF5295441C3F5289C5FE150419A999959F6295441AE47E1AA5FE15041C3F528ACF7295441CDCCCCDC5EE1504100000040F8295441AE47E17A5DE150415C8FC2B5F82954411F85EB715CE1504152B81E75F9295441C3F528FC5BE15041C3F5289CFA29544152B81E955BE1504166666696FB295441B81E858B5AE1504185EB5138FC295441A4703D2A59E15041B81E85CBFC295441E17A143E58E15041F6285C9FFC29544185EB51C857E15041CDCCCC4CFB295441E17A14CE56E150418FC2F578FB2954410AD7A3B056E150415C8FC2E5FA2954413D0AD74357E1504152B81E75F92954413333339356E1504185EB5198F8295441B81E857B55E1504100000080F7295441E17A149E54E150418FC2F518F7295441EC51B8DE53E15041713D0A77F62954413D0AD7A353E150418FC2F5A8F5295441E17A142E53E150411F85EB81F4295441713D0AC752E15041EC51B8EEF3295441713D0AC752E1504148E17AF4F2295441B81E858B52E150419A9999F9F1295441295C8F8251E15041EC51B8BEF129544148E17AB450E150413D0AD743F22954417B14AED74FE15041D7A3708DF22954418FC2F5084FE1504114AE4761F229544185EB51584EE15041C3F5289CF229544152B81EC54DE15041AE47E1AAF229544148E17A544CE1504100000070F2295441666666864BE1504114AE4761F22954415C8FC2D54AE15041D7A3708DF22954419A9999E949E15041D7A3708DF2295441D7A370BD49E15041D7A370CDF12954417B14AE4749E150411F85EBE1F02954410000003048E15041EC51B84EF029544148E17A1445E15041713D0AA7F0295441D7A370ED43E150410AD7A3F0F0295441C3F5288C42E15041295C8F92F1295441D7A370BD41E15041A4703D3AF1295441333333C340E150418FC2F5D8EF2954410000003040E15041F6285C8FEF29544185EB51183FE15041F6285C8FEF295441AE47E1FA3EE150411F85EBB1EE295441EC51B80E3EE150415C8FC285EE295441E17A145E3DE1504114AE4701EE295441713D0AF73CE150415C8FC215ED29544114AE47813CE150419A9999E9EC295441666666463CE1504133333373EC29544114AE47C13BE15041C3F528CCEC2954411F85EB013BE150419A9999E9EC2954419A9999A93AE150411F85EB41ED295441EC51B86E3AE15041EC51B81EEE295441295C8F423AE150418FC2F518EF295441B81E85DB39E15041E17A149EEF295441CDCCCC0C39E15041A4703DCAEF2954418FC2F5C837E15041A4703D0AEF295441EC51B8CE36E15041D7A3702DEE29544114AE47F135E150413D0AD7E3ED29544114AE478134E150413D0AD7E3ED295441B81E850B34E150418FC2F5A8ED29544152B81E9533E15041EC51B81EEE29544152B81E2532E1504100000010EE295441E17A14BE31E1504148E17A94EE295441F6285CAF31E1504148E17A54EF295441713D0A5731E15041666666F6EF295441333333C330E15041EC51B84EF0295441EC51B83E30E1504148E17AC4F02954417B14AED72FE150417B14AE57F1295441F6285C7F2FE15041AE47E1EAF1295441D7A370DD2EE1504166666626F2295441A4703D4A2EE150419A9999F9F1295441CDCCCCFC2BE150418FC2F508F2295441AE47E15A2BE1504114AE4761F22954415C8FC2D52AE1504148E17AF4F2295441D7A3707D2AE15041F6285C2FF3295441666666162AE15041F6285C2FF32954410AD7A3A029E15041713D0AD7F22954410AD7A3A029E1504166666626F2295441E17A14BE29E1504152B81E75F129544152B81E252AE150419A999989F02954413D0AD7332AE15041CDCCCCACEF295441B81E85DB29E15041F6285CCFEE295441AE47E12A29E15041D7A3702DEE295441666666A628E15041B81E858BED295441B81E856B28E1504114AE4791EC2954417B14AE9728E1504114AE47D1EB295441D7A3704D28E15041CDCCCC4CEB295441666666E627E15041F6285C2FEB2954413333335327E15041A4703D6AEB2954417B14AE6726E150418FC2F578EB29544185EB51A825E1504166666696EB2954413333332325E150419A999929EC29544114AE478124E1504185EB51F8EC2954415C8FC29523E15041A4703D9AED2954410000002023E15041D7A3702DEE2954419A9999A922E150411F85EBB1EE29544114AE475122E15041CDCCCCECEE295441B81E85DB21E15041F6285CCFEE2954411F85EB9121E15041D7A3702DEE295441C3F5281C21E1504148E17A24ED2954413D0AD7C320E1504114AE4791EC295441B81E856B20E1504152B81E65EC2954411F85EB2120E15041000000A0EC2954418FC2F5C81FE1504148E17A24ED2954410AD7A3701FE150417B14AEB7ED295441D7A370DD1EE1504100000010EE295441E17A141E1EE15041333333A3EE295441AE47E18A1DE15041B81E85FBEE295441295C8F321DE15041E17A149EEF29544185EB51E81CE15041EC51B84EF0295441EC51B89E1CE15041CDCCCC1CF12954418FC2F5281CE1504152B81E75F1295441C3F5284C1BE15041D7A370CDF1295441F6285C6F1AE150417B14AE17F22954413333338319E150418FC2F508F2295441B81E856B18E15041000000B0F1295441B81E856B18E15041713D0AA7F02954417B14AE9718E15041B81E85BBEF295441713D0A5719E15041333333A3EE29544185EB514819E15041C3F5283CEE295441A4703DEA19E150413D0AD7E3ED295441A4703DAA1AE15041CDCCCC7CED29544152B81EE51AE1504185EB51F8EC295441CDCCCC8C1AE15041AE47E11AEC2954417B14AE071AE150419A9999B9EA2954411F85EB9119E150418FC2F548E9295441B81E85DB19E150418FC2F5D8E729544148E17A7419E1504100000010E6295441C3F5281C19E150411F85EB41E5295441A4703D7A18E15041F6285C5FE529544185EB51D817E1504100000010E6295441C3F528EC16E1504185EB5128E7295441B81E853B16E15041A4703DCAE7295441AE47E18A15E15041295C8F22E82954418FC2F5E814E150415C8FC2B5E8295441A4703D1A14E150417B14AE57E9295441295C8F0213E1504166666666E9295441E17A14BE11E15041B81E852BE92954413D0AD7C310E15041CDCCCC1CE929544152B81E450FE15041EC51B84EE8295441A4703DEA0DE1504100000070E72954413D0AD7C30CE15041CDCCCCECE7295441D7A370FD0BE150418FC2F538E8295441A4703DFA0BE15041AE47E19AE829544114AE47110CE150413D0AD783E9295441C3F5287C0CE15041CDCCCCCCEA29544185EB51280CE15041F6285CFFEB295441666666960AE1504100000030ED295441D7A3702D09E150417B14AE67ED2954419A99990908E15041B81E851BED2954415C8FC26507E15041EC51B83EEC295441D7A370AD06E15041666666E6EB2954418FC2F59805E150411F85EBC1EB295441CDCCCC5C04E15041666666A6EB29544114AE470103E150417B14AE67EA295441295C8F4204E15041C3F5283CEF295441C249FFA304E15041B60B3485F12954417C393DCA07E150413A38FFEAF22954414887AA1409E15041FC065E2FF62954416B2E56080BE15041A424F9FFF72954416C81D6270DE150412A4EB90FF9295441B471A91E0CE15041069BDBFBFD295441B0856A9E07E15041C5BD85FCFE295441776B38F003E1504187CB413EFF295441B9BAE9F801E15041661EEF74FE29544152B81E3500E15041A4703DAAFE295441D7A3703DFAE0504166666696032A54413D0AD703F9E050418FC2F528052A544114AE4771F5E05041C3F5280C0A2A5441713D0AF7F2E05041713D0A770F2A5441295C8F52EEE05041713D0A37192A5441F6285C4FECE0504185EB51781D2A54419A999939EBE05041A4703DAA1F2A544166666676E4E05041000000E0252A5441295C8FF2E2E05041E17A14DE272A54410AD7A310DFE0504185EB51082E2A5441C661BA0BDEE050415D77882D312A54415BDC5234DDE050415C802E45352A5441D04A5649DCE05041C3F7D771382A5441A6C6B4D6D9E0504145D7A6BB422A5441E17A14CED8E05041AE47E15A452A54419A999939D7E05041000000D0472A54413D0AD743D6E050410AD7A370492A5441000000C0D3E0504185EB51784C2A54410AD7A320D0E050417B14AE474F2A54415C8FC215C7E0504152B81E15562A544152B81E75C3E0504148E17AC4582A5441A4703DBAC1E05041E17A148E5B2A544152B81EE5C0E0504152B81E95602A5441B81E852BBFE0504114AE47A1652A54418FC2F5F8BEE05041E17A14DE662A5441295C8FF2BBE05041333333F36C2A544133333363B8E050410AD7A340722A544185EB51D8B4E0504133333323752A544166666686ADE050419A9999297C2A54418FC2F528A9E0504166666626802A54415C8FC2D5AEE05041A4703DFA812A54418FC2F578B4E05041295C8F02832A5441F6285CBFBBE05041333333E3852A544100000010C3E05041EC51B82E872A54411F85EBF1D1E050417B14AE678E2A5441C3F5280CDCE050417B14AE77942A54415C8FC235E3E050411F85EB71972A54415C8FC225E9E05041D7A370FD982A544152B81E35EDE05041CDCCCCAC9B2A54415C8FC225F3E0504166666606A82A5441295C8F02F9E05041F6285CEFAF2A5441295C8F22FBE05041CDCCCC8CAF2A5441295C8F32FCE05041B81E850BAF2A5441C3F528ACFCE050413D0AD723AF2A54413D0AD743FEE05041AE47E15AAE2A5441AE47E1FAFEE0504152B81E95AC2A544133333393FEE05041D7A3709DA82A5441D7A3709DFEE05041E17A142EA72A5441713D0A3700E15041333333F3A52A5441F6285CBF00E15041A4703DBAA12A544152B81ED5FCE0504100000090992A5441CDCCCC3CFDE050411F85EB31982A5441F6285C5F04E1504100000080942A544152B81E2507E150417B14AE17942A5441257A343D07E15041D4BBB60B912A54411BA98C5A09E15041E1A7FB688F2A544191F03BD80AE15041A7F0D80B912A54412367A33D0EE1504190F8D1B08F2A544150D9998511E1504162B223498F2A5441377A8AC814E150413B214D998D2A5441EA420B4D16E1504173EB3F588D2A5441403ACE9E1AE15041663CBE288A2A5441FF28852C1FE150412CA6EB37852A54418F085BE720E15041CE584D68822A54414498B04522E15041D8981B837F2A5441C5F6A29821E15041FF275C7F7E2A544177FADAA221E15041120355797E2A544124C487E625E15041526A6B537D2A544111F54A0429E15041353BD8BF772A5441805A31542AE1504135D83128732A54416D8BF4712DE1504135D83128732A54410989B4B930E1504108405830712A54410AEC5A5135E150414AAABEF06B2A5441F71C1E6F38E1504199DA71E06F2A5441E34DE18C3BE150412CDB810E6F2A5441F2167EA240E150411E12E5F8692A54414D4A817840E150412E7B2B5D662A5441DE4741C043E1504112AF3E61652A5441AA43D17D49E15041DD472887662A5441144071694EE15041B1AF4E8F642A544168D96ABD4EE1504181B17E19622A5441F50D8EEF4CE15041E5B3BED15E2A5441337254E34FE15041F319B54F5F2A5441733C115553E15041251BD5AB5D2A54416270245952E1504138EA118E5A2A54410AD7A34054E150417B14AEA7582A5441D7A370FD55E15041E17A143E5B2A54417B14AE4758E15041666666A65A2A54419A99998959E150418FC2F548582A5441D7A3709D57E150418FC2F578572A5441E17A143E59E15041713D0A67552A54410AD7A3F05BE150417B14AE37552A5441000000C05EE15041295C8F52572A54416666668660E15041EC51B89E572A54413823969064E1504194DEF528572A5441ECD88EF469E150412942A85F4F2A54410521709B70E15041B05AB4A1472A544105CC557471E150417357041E472A54418631106F72E150418B07CA85462A5441000000C079E150417B14AE673F2A54418F54C04678E1504162CCCA663D2A544103DCDE9473E15041883958A2342A5441B8124DB06CE15041388C1D6F2C2A5441B262380165E15041A0DC7A42272A54410C8029E75EE1504141FB09FF232A544193B347624EE1504162507F48232A5441717AB09C44E1504116E0568B222A5441497D7CB740E15041C4E29EDA1E2A5441373B6BF139E15041BCD9B230142A5441A080D4343CE15041E8F016950B2A5441877648F149E150411FF8D6BD012A544143684C6B5DE1504191F5123A052A5441025DA0CB6CE15041C3F63296032A5441364A2C6C86E1504198F6AECA032A5441993DDCA497E15041A6F1AA8E0A2A54418730007BA9E1504199EA6E31142A54413EC8D59BB2E1504159EF41171C2A544163878677B3E150413D5F75FF1D2A54416311A0F9B1E150411815A7B3202A544112772BFDB1E15041468E59C3202A544194FC239CB3E150418132DBAB232A54419C8E1D5FB3E15041379B77AC252A54411D2D1846B1E1504117E7B70E282A5441B4B0E339B1E1504135146F27292A5441EE755469B1E150410DD647FA292A5441137C93CAAFE15041F2AA98842A2A544170402A7EADE15041F03A55012C2A5441823D240FABE150410E08FE01312A544179AD6792A9E1504125B52D09332A5441F71E2E4DA9E15041D18053D2362A544167B06D01ACE150417BDC35183C2A54416FD0E6FAAEE1504182FCAE113F2A54413BBC4E9AB3E1504182FCAE113F2A5441CDCCCC9CB3E150418FC2F5083F2A54419A9999C9B3E150410AD7A3703E2A544148E17AF4B3E150410AD7A3E03D2A5441D7A3705DB4E15041713D0A373D2A5441EC51B8BEB4E150417B14AE173D2A5441AE47E12AB5E15041EC51B8EE3C2A5441D7A370DDB5E15041666666963C2A5441F6285C1FB6E1504152B81E453C2A544148E17A34B6E150418FC2F5083C2A5441B81E856BB6E1504152B81EB53B2A5441000000C0B6E15041AE47E12A3B2A5441713D0A07B7E15041CDCCCCDC3A2A5441D7A3706DB7E15041666666863A2A5441CDCCCCACB7E150417B14AE473A2A54410AD7A3F0B7E15041C3F5280C3A2A544152B81E35B8E1504185EB51C8392A544114AE4791B8E150415C8FC235392A5441666666B6B8E1504148E17AE4382A54411F85EB31B9E15041666666A6382A5441295C8FB2B9E1504185EB5168382A54413D0AD713BAE15041CDCCCC0C382A544133333353BAE15041EC51B89E372A544152B81E65BAE1504100000060372A5441CDCCCC8CBAE15041713D0A07372A54418FC2F5E8BAE15041666666B6362A5441F6285C3FBBE15041F6285C9F362A5441A4703DDABBE150411F85EBD1362A5441EF133240BCE1504121E82AFB362A5441EC51B80EBDE15041EC51B84E372A54419A999929BEE150415C8FC2E5372A5441E5B97EC7BEE15041F52A15D7372A54418FC2F5E8BEE15041F6285CCF372A5441CDCCCC3CBFE150418FC2F598372A54415C8FC2A5BFE15041AE47E14A372A544152B81EE5BFE15041F6285CFF362A5441F6285CFFBFE15041666666A6362A544114AE4741C0E1504114AE4711362A5441A4703D8AC0E150411F85EBF1352A5441B81E85DBC0E15041666666B6352A54419A999949C1E1504185EB5178352A54415C8FC295C1E15041713D0A27352A5441F6285CDFC1E15041E17A14DE342A5441C3F5280CC2E1504185EB5178342A5441B81E852BC2E1504148E17A34342A5441295C8F62C2E150418FC2F5D8332A5441E17A14CEC2E150411F85EBD1332A54418C60CA53C3E1504155A39529342A5441CDCCCC0CC4E1504185EB5198342A5441B81E854BC4E15041295C8FD2342A5441EC51B8CEC4E1504152B81E05352A5441AC15565EC5E1504120D780D7342A54413D0AD773C6E15041F6285C7F342A54410AD7A320C7E150413D0AD763342A544114AE4791C7E15041713D0A67342A5441D7A370DDC7E150415C8FC235342A544114AE4721C8E150419A999919342A544152B81EF5C8E15041D7A3709D332A5441D7A3707DC9E1504152B81E55332A54410AD7A3E0C9E15041C3F5280C332A54413D0AD763CAE15041666666D6322A54417B14AE37CBE15041713D0A67322A544133333383CBE1504152B81E45322A5441B81E850BCCE150411F85EB11322A5441D7A3707DCDE150410AD7A3E0312A5441CDCCCC5CCDE15041E17A140E312A5441D7A3708DCEE150410AD7A3B02F2A5441A4703D2AD0E150418FC2F5382E2A54415EEFE29DD0E150411B64FA052E2A54410D00000066666676D2E050417B14AEC7792A544152B81E95D5E05041D7A370BD7A2A5441D7A3706DD9E0504185EB51487B2A54417B14AE77DBE0504114AE47717D2A54418FC2F5E8DCE05041295C8F62802A54419A999949DBE050411F85EB01822A54419A9999C9D9E05041E17A14CE802A5441D7A370DDD7E05041AE47E11A7E2A5441CDCCCCDCD4E050410AD7A3807D2A5441333333B3CFE050413D0AD7C37E2A544133333323CEE050415C8FC2057D2A5441CDCCCC4CD0E05041F6285C8F7A2A544166666676D2E050417B14AEC7792A544105000000CDCCCC1CB0E05041D7A370AD7E2A54419A999909B0E05041EC51B8EE7F2A54410AD7A300AFE050411F85EB01802A5441D7A370EDAEE05041A4703D9A7E2A5441CDCCCC1CB0E05041D7A370AD7E2A544119000000333333C337E15041C3F5287C2D2A5441E17A146E35E15041EC51B89E2C2A544114AE47A132E15041713D0A272C2A544148E17AD42BE150411F85EBD12A2A54411F85EBB127E15041D7A3708D2A2A54419A99992925E15041A4703D5A2A2A54415C8FC2F522E15041A4703D5A292A5441B81E854B21E150418FC2F548272A54410AD7A3A01EE150413D0AD7F3222A544148E17AE41BE1504114AE47D11F2A54413D0AD7D318E15041CDCCCC8C1E2A5441295C8FC214E1504148E17A041D2A54415C8FC2F514E150419A9999591C2A54415C8FC2F519E15041333333F31D2A54413D0AD7D31CE150419A9999591F2A544152B81EE51EE15041000000C0212A5441B81E854B21E15041C3F5287C252A54410AD7A3A023E15041295C8FE2282A54410AD7A3A025E150410AD7A3C0292A5441CDCCCC5C28E150410AD7A3C0292A54417B14AE072CE1504152B81E052A2A54411F85EBB131E150418FC2F5482B2A54417B14AE0736E1504152B81E052C2A54417B14AE0738E15041F6285CAF2C2A5441333333C337E15041C3F5287C2D2A54410600000014AE4731F0E0504166666666852A54418FC2F548F3E05041CDCCCC7C8E2A5441333333E3EDE05041EC51B8DE912A544185EB5178E8E05041EC51B87E902A5441C3F528CCE6E0504133333353882A544114AE4731F0E0504166666666852A544144000000D631159DE2E050419561BD93762A54410731A9E4E1E0504175A52BF2712A5441A7A7F4B6E9E0504184A0A39F6D2A5441E7F22E91EBE0504102E6E96E6A2A54410F160855EAE050412499D723672A544166387560E8E0504143043BE0642A544196E6DAC2E0E05041D3DDB13A632A5441A4703D0ADDE05041F6285C6F552A544148E17A04D4E050415C8FC2F5572A5441D4080175D1E0504172A04D7C552A54414E375AE6D1E0504194914C17522A5441BD6C9E79D6E050417EE713D84E2A54412C4D466DD9E05041300641C3502A5441E78840C3DCE050415DA21FFF4F2A5441D241CD6DE0E05041585232B74E2A54418CC8A823E4E05041AE1B44494C2A54412FB39903EAE050415AA3B97D4B2A54414152D9DEEBE05041A598E843472A54417643E84FECE050416EED92C9432A5441393FEC7BEBE05041EDBEC05B412A5441F484A720EFE0504155334CC0402A54410D50DCCBEEE05041110976263F2A5441AF6DBEE9EDE050415F443A623D2A5441EDF03ADDECE050418B334A123A2A54414295BBC5EAE05041F1174A22362A54417DB5E1BEE9E050415C653B08322A5441D83F9970E9E05041F1E0DD612E2A544114AE47B1ECE0504148E17AF4292A544166666676FDE0504114AE4741262A5441AE47E12A00E150419A9999992B2A54410AD7A3B003E1504114AE47D12A2A54419A9999F908E150417B14AE672B2A5441CDCCCC3C0FE15041A4703D2A2D2A5441A4703D7A16E15041EC51B88E2D2A54413D0AD7E315E15041E17A147E302A5441295C8FD20FE15041EC51B80E322A54410AD7A3F006E15041B81E852B362A54415C8FC245FDE050410AD7A3C03B2A5441B81E851BF5E05041B81E856B422A544162D60D6DF3E05041DDF847F2432A54416D2E67BAF2E0504100B65581462A5441747FF368F1E05041086C9671482A54418386C007F2E05041743F4A264A2A54416F3BC2AEF6E050411B22D7614A2A544186A076F0F9E0504101C3B0754A2A5441159D787E06E1504124355F1A482A5441E5573B870EE150410790E701472A5441484C540A1CE15041BCD7FD15442A544185CDC0981EE15041DFE5BDAF3B2A5441778FE0E827E150411FD188F1362A5441D7A3709D34E1504114AE47512F2A5441C3F5281C38E15041D7A3706D312A5441333333B34AE1504152B81EC53F2A544101CAB6ED4AE1504173F2E2584E2A54412D54678C47E15041C1892EEB552A54416D6449D23EE15041FFD1149A612A5441EBB977D733E1504112AF3E61652A5441F2C2678A27E15041EF76BB1A6C2A544148FC0A2D1FE15041C8D84156722A5441BF6AE12F14E15041C6D5F16F762A5441B80DDB6407E15041F5D3C1E5782A54417DAC645700E150410137687D7D2A5441BF16CB17FBE05041BB660B3F822A544121FB66C5F2E05041C16E7D1A822A544152FAFA0CF2E05041B8B60713812A5441B817E0C5EBE050414F006A7C812A5441065E924DE9E050414748F474802A5441D631159DE2E050419561BD93762A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900039 - 5310386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000000F0000007B14AE47ECE05041295C8F829C2A5441E17A149EE8E05041B81E851B9A2A5441295C8FD2E2E05041F6285C9F982A5441CDCCCC9CDDE050415C8FC275962A544133333323D9E050410AD7A380A92A544114AE47C1DBE05041713D0A27AA2A5441B81E856BE3E0504185EB5118AA2A5441A4703D7AE7E050411F85EB01AB2A5441000000B0EAE050415C8FC275AB2A544152B81E45F0E0504148E17A14B02A54410AD7A380F1E0504133333393B02A54419A999969F6E05041E17A146EB02A5441B81E853BF7E05041B81E85DBAF2A5441B81E850BF2E050415C8FC2B5A82A54417B14AE47ECE05041295C8F829C2A544101030000000100000027000000AE47E1AAB7E050417B14AE97712A5441E17A143EBAE050418FC2F5686E2A5441E17A14DEBBE05041F6285CBF6B2A5441C3F5280CBFE05041A4703D5A642A544114AE4731C1E05041C3F5284C5A2A5441713D0AB7C2E05041C3F5281C582A544100000080C6E0504166666646552A544100000080CEE05041666666A64F2A5441295C8F62D1E050415C8FC2354D2A5441666666B6D4E050419A9999A9492A54410AD7A3A0D7E05041A4703DFA442A54418FC2F538D9E0504185EB5128412A54419A9999C9DBE05041D7A370ED342A54411F85EBE1DCE0504114AE4791312A54411F85EB31DEE0504185EB51882D2A544148E17A24D5E05041C3F5280C2D2A5441EC51B8DEC8E050419A999909292A54410AD7A390B4E05041A4703D8A242A544148E17AB4AEE050419A9999991B2A54418FC2F5D8A8E05041CDCCCCFC162A5441295C8FC2A4E0504114AE47D1162A54418FC2F5189EE05041E17A14DE212A544152B81EC599E050417B14AEC7212A5441AE47E1EA97E05041A4703D7A292A5441CDCCCC7C97E050413D0AD7F32D2A5441333333C397E050417B14AE17322A5441EC51B88E98E0504114AE47A1362A54411F85EBD19AE050419A9999E93D2A54418FC2F5A89AE0504100000090432A5441000000F09BE05041333333634A2A544152B81EA59AE05041EC51B8FE502A544148E17A0499E05041E17A140E542A5441713D0A3797E0504114AE47B1562A5441C3F5286CA3E05041EC51B8FE682A5441666666B6A8E050415C8FC2C5722A544100000090AAE050417B14AED7762A544148E17A34ABE050413D0AD7037A2A5441D7A3706DABE05041C3F528CC7C2A5441AE47E1AAB7E050417B14AE97712A54410103000000010000000A000000295C8F82E7E050413D0AD7F3212A544166666676EAE050415C8FC2051F2A544166666626EBE0504185EB51A81C2A5441D7A3703DEDE050415C8FC2D5192A544148E17AA4F3E050415C8FC2950C2A54417B14AE17F5E05041295C8F32092A54415C8FC235F8E050418FC2F588042A5441CDCCCC0CECE05041D7A370FD022A54418FC2F548E7E050413D0AD7B30D2A5441295C8F82E7E050413D0AD7F3212A54410103000000060000004B01000033333363B8E050410AD7A340722A544185EB51D8B4E0504133333323752A544166666686ADE050419A9999297C2A54418FC2F528A9E0504166666626802A54415C8FC2D5AEE05041A4703DFA812A54418FC2F578B4E05041295C8F02832A5441F6285CBFBBE05041333333E3852A544100000010C3E05041EC51B82E872A54411F85EBF1D1E050417B14AE678E2A5441C3F5280CDCE050417B14AE77942A54415C8FC235E3E050411F85EB71972A54415C8FC225E9E05041D7A370FD982A544152B81E35EDE05041CDCCCCAC9B2A54415C8FC225F3E0504166666606A82A5441295C8F02F9E05041F6285CEFAF2A5441295C8F22FBE05041CDCCCC8CAF2A5441295C8F32FCE05041B81E850BAF2A5441C3F528ACFCE050413D0AD723AF2A54413D0AD743FEE05041AE47E15AAE2A5441AE47E1FAFEE0504152B81E95AC2A544133333393FEE05041D7A3709DA82A5441D7A3709DFEE05041E17A142EA72A5441713D0A3700E15041333333F3A52A5441F6285CBF00E15041A4703DBAA12A544152B81ED5FCE0504100000090992A5441CDCCCC3CFDE050411F85EB31982A5441F6285C5F04E1504100000080942A544152B81E2507E150417B14AE17942A54419A9999E908E15041713D0A67962A544152B81E350DE150410AD7A3B0912A54410000006015E15041F6285CCF8D2A5441F6285C9F1BE150415C8FC2F58B2A54415C8FC20520E15041713D0AB7842A5441000000802BE15041CDCCCC0C752A5441B81E855B2CE15041EC51B82E742A54419A9999492DE15041295C8FA2732A54419A9999192FE15041713D0A27732A54415C8FC20532E15041713D0A476F2A5441EC51B8DE34E150411F85EB216D2A5441A4703DCA37E1504133333333702A5441B81E85AB3BE15041D7A3703D6F2A5441CDCCCCEC3DE15041AE47E18A6B2A5441295C8F8241E1504166666666682A544148E17A6445E15041AE47E17A652A5441F6285C7F48E15041333333B3662A5441C3F528DC4BE150415C8FC225652A544152B81EE54DE15041B81E854B652A544152B81E854FE1504152B81E15612A5441000000904DE150417B14AE875F2A544114AE47D14EE15041AE47E19A5E2A54418FC2F50852E1504114AE47915E2A5441A4703D4A53E15041666666E65F2A54415C8FC26555E15041B81E859B5D2A5441CDCCCCBC52E15041EC51B8AE5C2A54410AD7A34054E150417B14AEA7582A5441D7A370FD55E15041E17A143E5B2A54417B14AE4758E15041666666A65A2A54419A99998959E150418FC2F548582A5441D7A3709D57E150418FC2F578572A5441E17A143E59E15041713D0A67552A54410AD7A3F05BE150417B14AE37552A5441000000C05EE15041295C8F52572A54416666668660E15041EC51B89E572A5441D7A3708D64E15041E17A145E532A54410AD7A3E068E15041B81E853B4D2A54410AD7A3506DE15041B81E852B472A54413D0AD7D371E15041CDCCCC1C472A5441000000C079E150417B14AE673F2A544185EB515874E1504114AE47C1342A54411F85EBE165E15041B81E851B2A2A5441000000E054E1504133333333282A5441CDCCCCDC4AE150419A9999F9252A54418FC2F5483BE15041F6285C7F252A5441A4703DDA32E15041EC51B88E252A544185EB51D832E150411F85EB71282A5441713D0AC72FE1504148E17A24292A5441E17A143E2BE150417B14AEA7282A5441AE47E1EA26E1504152B81EF5272A54410AD7A35025E15041A4703D5A262A5441EC51B80E27E1504166666666242A5441E17A14CE2DE15041C3F5285C1E2A54417B14AED730E15041295C8FF2132A54410AD7A3404DE150410AD7A330FD2954411F85EB315AE150411F85EBD1042A54416666668683E150415C8FC295FC295441D7A3706D9FE15041CDCCCCACFF295441E17A145E9EE1504100000030FD29544152B81E759DE15041295C8F42FC2954418FC2F5389CE150411F85EBD1F92954419A9999D99BE15041A4703D5AF929544148E17A249BE15041CDCCCC0CF9295441C3F5285C9AE1504152B81E95F82954419A9999A999E150417B14AE47F82954410000009098E15041333333F3F7295441AE47E18A97E15041666666F6F62954417B14AEC796E15041713D0A87F6295441CDCCCC0C96E15041713D0A37F6295441295C8F5295E15041E17A141EF6295441AE47E1BA94E1504100000070F6295441D7A370BD93E150419A999909F7295441000000F092E15041F6285CDFF729544152B81EC591E15041E17A14FEF7295441EC51B87E90E15041C3F5280CF829544148E17A848FE150413D0AD7C3F7295441AE47E18A8EE15041713D0A67F8295441F6285C8F8DE1504100000090F829544148E17AA48BE150417B14AEA7F8295441CDCCCC7C8AE15041C3F528BCF8295441713D0A0788E15041AE47E17AF7295441F6285C6F86E1504114AE47A1F62954413333336385E150411F85EB61F629544148E17A4484E150419A999939F6295441CDCCCC7C83E1504166666606F62954413333339382E150410AD7A3E0F5295441EC51B80E81E150410AD7A300F62954415C8FC25580E1504148E17A44F6295441B81E858B7FE150411F85EB41F629544114AE47817EE15041295C8F02F6295441AE47E18A7DE15041D7A3703DF629544148E17AC47CE15041AE47E12AF6295441AE47E18A7BE150415C8FC205F6295441333333037BE15041F6285CAFF52954418FC2F5387AE150413D0AD763F6295441A4703D6A79E15041F6285CFFF6295441F6285C5F78E1504100000050F7295441EC51B84E77E1504185EB5188F72954417B14AE0776E15041AE47E1EAF6295441A4703D5A75E150419A9999C9F6295441C3F528DC73E150418FC2F5A8F6295441000000C072E15041000000F0F62954418FC2F5F871E15041CDCCCC4CF72954415C8FC2E570E1504185EB5168F7295441EC51B8CE6FE15041B81E851BF7295441A4703D7A6EE15041C3F5286CF729544148E17A846DE15041D7A3700DF829544185EB51686BE15041000000E0F3295441EC51B8AE69E15041CDCCCCBCF4295441295C8FC268E1504185EB51F8F42954413D0AD74367E150415C8FC215F52954415C8FC27566E15041F6285C5FF5295441AE47E17A65E150418FC2F5A8F5295441A4703DCA64E15041295C8FF2F5295441EC51B8DE63E15041E17A146EF529544114AE470163E150415C8FC215F52954411F85EB4162E15041E17A14AEF4295441CDCCCC0C61E15041713D0A07F529544148E17AF45FE15041CDCCCC7CF5295441C3F5289C5FE150419A999959F6295441AE47E1AA5FE15041C3F528ACF7295441CDCCCCDC5EE1504100000040F8295441AE47E17A5DE150415C8FC2B5F82954411F85EB715CE1504152B81E75F9295441C3F528FC5BE15041C3F5289CFA29544152B81E955BE1504166666696FB295441B81E858B5AE1504185EB5138FC295441A4703D2A59E15041B81E85CBFC295441E17A143E58E15041F6285C9FFC29544185EB51C857E15041CDCCCC4CFB295441E17A14CE56E150418FC2F578FB2954410AD7A3B056E150415C8FC2E5FA2954413D0AD74357E1504152B81E75F92954413333339356E1504185EB5198F8295441B81E857B55E1504100000080F7295441E17A149E54E150418FC2F518F7295441EC51B8DE53E15041713D0A77F62954413D0AD7A353E150418FC2F5A8F5295441E17A142E53E150411F85EB81F4295441713D0AC752E15041EC51B8EEF3295441713D0AC752E1504148E17AF4F2295441B81E858B52E150419A9999F9F1295441295C8F8251E15041EC51B8BEF129544148E17AB450E150413D0AD743F22954417B14AED74FE15041D7A3708DF22954418FC2F5084FE1504114AE4761F229544185EB51584EE15041C3F5289CF229544152B81EC54DE15041AE47E1AAF229544148E17A544CE1504100000070F2295441666666864BE1504114AE4761F22954415C8FC2D54AE15041D7A3708DF22954419A9999E949E15041D7A3708DF2295441D7A370BD49E15041D7A370CDF12954417B14AE4749E150411F85EBE1F02954410000003048E15041EC51B84EF029544148E17A1445E15041713D0AA7F0295441D7A370ED43E150410AD7A3F0F0295441C3F5288C42E15041295C8F92F1295441D7A370BD41E15041A4703D3AF1295441333333C340E150418FC2F5D8EF2954410000003040E15041F6285C8FEF29544185EB51183FE15041F6285C8FEF295441AE47E1FA3EE150411F85EBB1EE295441EC51B80E3EE150415C8FC285EE295441E17A145E3DE1504114AE4701EE295441713D0AF73CE150415C8FC215ED29544114AE47813CE150419A9999E9EC295441666666463CE1504133333373EC29544114AE47C13BE15041C3F528CCEC2954411F85EB013BE150419A9999E9EC2954419A9999A93AE150411F85EB41ED295441EC51B86E3AE15041EC51B81EEE295441295C8F423AE150418FC2F518EF295441B81E85DB39E15041E17A149EEF295441CDCCCC0C39E15041A4703DCAEF2954418FC2F5C837E15041A4703D0AEF295441EC51B8CE36E15041D7A3702DEE29544114AE47F135E150413D0AD7E3ED29544114AE478134E150413D0AD7E3ED295441B81E850B34E150418FC2F5A8ED29544152B81E9533E15041EC51B81EEE29544152B81E2532E1504100000010EE295441E17A14BE31E1504148E17A94EE295441F6285CAF31E1504148E17A54EF295441713D0A5731E15041666666F6EF295441333333C330E15041EC51B84EF0295441EC51B83E30E1504148E17AC4F02954417B14AED72FE150417B14AE57F1295441F6285C7F2FE15041AE47E1EAF1295441D7A370DD2EE1504166666626F2295441A4703D4A2EE150419A9999F9F1295441CDCCCCFC2BE150418FC2F508F2295441AE47E15A2BE1504114AE4761F22954415C8FC2D52AE1504148E17AF4F2295441D7A3707D2AE15041F6285C2FF3295441666666162AE15041F6285C2FF32954410AD7A3A029E15041713D0AD7F22954410AD7A3A029E1504166666626F2295441E17A14BE29E1504152B81E75F129544152B81E252AE150419A999989F02954413D0AD7332AE15041CDCCCCACEF295441B81E85DB29E15041F6285CCFEE295441AE47E12A29E15041D7A3702DEE295441666666A628E15041B81E858BED295441B81E856B28E1504114AE4791EC2954417B14AE9728E1504114AE47D1EB295441D7A3704D28E15041CDCCCC4CEB295441666666E627E15041F6285C2FEB2954413333335327E15041A4703D6AEB2954417B14AE6726E150418FC2F578EB29544185EB51A825E1504166666696EB2954413333332325E150419A999929EC29544114AE478124E1504185EB51F8EC2954415C8FC29523E15041A4703D9AED2954410000002023E15041D7A3702DEE2954419A9999A922E150411F85EBB1EE29544114AE475122E15041CDCCCCECEE295441B81E85DB21E15041F6285CCFEE2954411F85EB9121E15041D7A3702DEE295441C3F5281C21E1504148E17A24ED2954413D0AD7C320E1504114AE4791EC295441B81E856B20E1504152B81E65EC2954411F85EB2120E15041000000A0EC2954418FC2F5C81FE1504148E17A24ED2954410AD7A3701FE150417B14AEB7ED295441D7A370DD1EE1504100000010EE295441E17A141E1EE15041333333A3EE295441AE47E18A1DE15041B81E85FBEE295441295C8F321DE15041E17A149EEF29544185EB51E81CE15041EC51B84EF0295441EC51B89E1CE15041CDCCCC1CF12954418FC2F5281CE1504152B81E75F1295441C3F5284C1BE15041D7A370CDF1295441F6285C6F1AE150417B14AE17F22954413333338319E150418FC2F508F2295441B81E856B18E15041000000B0F1295441B81E856B18E15041713D0AA7F02954417B14AE9718E15041B81E85BBEF295441713D0A5719E15041333333A3EE29544185EB514819E15041C3F5283CEE295441A4703DEA19E150413D0AD7E3ED295441A4703DAA1AE15041CDCCCC7CED29544152B81EE51AE1504185EB51F8EC295441CDCCCC8C1AE15041AE47E11AEC2954417B14AE071AE150419A9999B9EA2954411F85EB9119E150418FC2F548E9295441B81E85DB19E150418FC2F5D8E729544148E17A7419E1504100000010E6295441C3F5281C19E150411F85EB41E5295441A4703D7A18E15041F6285C5FE529544185EB51D817E1504100000010E6295441C3F528EC16E1504185EB5128E7295441B81E853B16E15041A4703DCAE7295441AE47E18A15E15041295C8F22E82954418FC2F5E814E150415C8FC2B5E8295441A4703D1A14E150417B14AE57E9295441295C8F0213E1504166666666E9295441E17A14BE11E15041B81E852BE92954413D0AD7C310E15041CDCCCC1CE929544152B81E450FE15041EC51B84EE8295441A4703DEA0DE1504100000070E72954413D0AD7C30CE15041CDCCCCECE7295441D7A370FD0BE150418FC2F538E8295441A4703DFA0BE15041AE47E19AE829544114AE47110CE150413D0AD783E9295441C3F5287C0CE15041CDCCCCCCEA29544185EB51280CE15041F6285CFFEB295441666666960AE1504100000030ED295441D7A3702D09E150417B14AE67ED2954419A99990908E15041B81E851BED2954415C8FC26507E15041EC51B83EEC295441D7A370AD06E15041666666E6EB2954418FC2F59805E150411F85EBC1EB295441CDCCCC5C04E15041666666A6EB29544114AE470103E150417B14AE67EA295441295C8F4204E15041C3F5283CEF295441713D0AD704E150417B14AEB7F2295441000000700BE15041713D0A57FD29544152B81E3500E15041A4703DAAFE295441D7A3703DFAE0504166666696032A54413D0AD703F9E050418FC2F528052A544114AE4771F5E05041C3F5280C0A2A5441713D0AF7F2E05041713D0A770F2A5441295C8F52EEE05041713D0A37192A5441F6285C4FECE0504185EB51781D2A54419A999939EBE05041A4703DAA1F2A544166666676E4E05041000000E0252A5441295C8FF2E2E05041E17A14DE272A54410AD7A310DFE0504185EB51082E2A54410AD7A3C0DCE0504166666636352A5441E17A14CED8E05041AE47E15A452A54419A999939D7E05041000000D0472A54413D0AD743D6E050410AD7A370492A5441000000C0D3E0504185EB51784C2A54410AD7A320D0E050417B14AE474F2A54415C8FC215C7E0504152B81E15562A544152B81E75C3E0504148E17AC4582A5441A4703DBAC1E05041E17A148E5B2A544152B81EE5C0E0504152B81E95602A5441B81E852BBFE0504114AE47A1652A54418FC2F5F8BEE05041E17A14DE662A5441295C8FF2BBE05041333333F36C2A544133333363B8E050410AD7A340722A54410D00000066666676D2E050417B14AEC7792A544152B81E95D5E05041D7A370BD7A2A5441D7A3706DD9E0504185EB51487B2A54417B14AE77DBE0504114AE47717D2A54418FC2F5E8DCE05041295C8F62802A54419A999949DBE050411F85EB01822A54419A9999C9D9E05041E17A14CE802A5441D7A370DDD7E05041AE47E11A7E2A5441CDCCCCDCD4E050410AD7A3807D2A5441333333B3CFE050413D0AD7C37E2A544133333323CEE050415C8FC2057D2A5441CDCCCC4CD0E05041F6285C8F7A2A544166666676D2E050417B14AEC7792A544105000000CDCCCC1CB0E05041D7A370AD7E2A54419A999909B0E05041EC51B8EE7F2A54410AD7A300AFE050411F85EB01802A5441D7A370EDAEE05041A4703D9A7E2A5441CDCCCC1CB0E05041D7A370AD7E2A544119000000333333C337E15041C3F5287C2D2A5441E17A146E35E15041EC51B89E2C2A544114AE47A132E15041713D0A272C2A544148E17AD42BE150411F85EBD12A2A54411F85EBB127E15041D7A3708D2A2A54419A99992925E15041A4703D5A2A2A54415C8FC2F522E15041A4703D5A292A5441B81E854B21E150418FC2F548272A54410AD7A3A01EE150413D0AD7F3222A544148E17AE41BE1504114AE47D11F2A54413D0AD7D318E15041CDCCCC8C1E2A5441295C8FC214E1504148E17A041D2A54415C8FC2F514E150419A9999591C2A54415C8FC2F519E15041333333F31D2A54413D0AD7D31CE150419A9999591F2A544152B81EE51EE15041000000C0212A5441B81E854B21E15041C3F5287C252A54410AD7A3A023E15041295C8FE2282A54410AD7A3A025E150410AD7A3C0292A5441CDCCCC5C28E150410AD7A3C0292A54417B14AE072CE1504152B81E052A2A54411F85EBB131E150418FC2F5482B2A54417B14AE0736E1504152B81E052C2A54417B14AE0738E15041F6285CAF2C2A5441333333C337E15041C3F5287C2D2A544127000000B81E851BE0E050410AD7A360752A5441A4703D0ADDE05041F6285C6F552A544148E17A04D4E050415C8FC2F5572A5441CDCCCC5CDBE0504185EB51E84E2A544152B81EB5EEE0504166666646472A5441E17A14DEF0E05041000000703A2A5441A4703D6AEBE050413D0AD713302A544114AE47B1ECE0504148E17AF4292A544166666676FDE0504114AE4741262A5441AE47E12A00E150419A9999992B2A54410AD7A3B003E1504114AE47D12A2A54419A9999F908E150417B14AE672B2A5441CDCCCC3C0FE15041A4703D2A2D2A5441A4703D7A16E15041EC51B88E2D2A54413D0AD7E315E15041E17A147E302A5441295C8FD20FE15041EC51B80E322A54410AD7A3F006E15041B81E852B362A54415C8FC245FDE050410AD7A3C03B2A5441B81E851BF5E05041B81E856B422A5441C3F528CCF3E0504185EB51D8462A5441666666D6F8E05041333333C3482A544185EB519819E15041D7A370AD3F2A5441000000601AE15041B81E853B392A5441C3F5284C22E150413D0AD7B3302A5441E17A14BE25E150419A9999992B2A54418FC2F5382BE15041000000302C2A54419A99997930E15041000000302D2A54419A99991934E15041B81E859B2D2A5441D7A3709D34E1504114AE47512F2A5441C3F5281C38E15041D7A3706D312A5441333333B34AE1504152B81EC53F2A5441713D0AA74BE15041EC51B80E4E2A5441AE47E10A47E15041C3F528BC562A54415C8FC29539E150415C8FC295612A54417B14AEA722E150410AD7A3F06E2A544114AE470119E15041D7A3705D782A54418FC2F5F8F7E05041C3F528EC832A5441AE47E14AE9E0504152B81E857F2A5441B81E851BE0E050410AD7A360752A54410600000014AE4731F0E0504166666666852A54418FC2F548F3E05041CDCCCC7C8E2A5441333333E3EDE05041EC51B8DE912A544185EB5178E8E05041EC51B87E902A5441C3F528CCE6E0504133333353882A544114AE4731F0E0504166666666852A54410103000000010000001C00000000000000C4E15041C3F528FC202A5441295C8F92C3E1504114AE47A11E2A54417B14AEB7C2E15041AE47E1EA1C2A54417B14AEF7C1E15041D7A370BD1B2A5441713D0AB7C1E15041CDCCCCDC192A54417B14AEF7C1E150417B14AE87182A5441000000E0C1E150411F85EBC1152A544152B81E65C1E1504152B81EA5142A5441000000F0BCE15041CDCCCCEC162A54417B14AEE7BAE150415C8FC245172A5441333333B3B5E15041B81E85AB142A544185EB5118B5E1504100000090172A544100000010B3E15041CDCCCC9C1A2A544114AE47C1B1E150417B14AE671F2A544148E17AA4B3E15041E17A142E232A54415C8FC255B2E150410AD7A3F0252A54411F85EBE1B0E150418FC2F568282A544114AE47C1B1E15041F6285C2F2C2A54418FC2F5A8B4E15041F6285C2F2C2A54410AD7A320B7E150413D0AD7C32C2A5441D7A3702DBAE150417B14AE372E2A5441666666C6BBE150410AD7A3502B2A5441CDCCCC0CBBE15041EC51B81E282A54413D0AD763BEE150415C8FC215262A5441A4703D2AC2E150417B14AE57242A544152B81E25C3E15041000000E0232A5441713D0A37C4E15041295C8FB2222A544100000000C4E15041C3F528FC202A54410103000000010000000E000000B81E853BFFE05041E17A145EF0295441C3F528ACFEE050410AD7A3E0F22954413D0AD7F3FEE0504100000040F5295441E17A14EEFFE05041F6285C6FF62954413D0AD7F301E150418FC2F5C8F32954415C8FC20504E1504133333353F5295441EC51B82E04E150419A999969F32954410AD7A39003E150411F85EB31EF295441B81E85CB01E1504133333333E9295441295C8F8200E1504133333333E9295441E17A147EFFE0504148E17A14EA295441E17A146EFEE0504133333373EB2954419A999929FFE050413D0AD793ED295441B81E853BFFE05041E17A145EF0295441
+</a>
+
+<b>
+010600000001000000010300000006000000D60100005EEFE29DD0E150411B64FA052E2A5441E6C82FFECDE15041D5B2921F2B2A54417EE7151ACCE15041D1E699E8272A5441801EB4B2C8E15041B1170AE2242A5441A9277921C8E150412630C25E232A54419824E251C8E15041AD4B11AB212A544139C70AC4C8E15041093D7220212A5441308E401FC7E15041DF5A9C0B202A54417C084F64C4E15041F57DFE481F2A54412BBF8E8BC3E15041E47168C41D2A5441783D017FC2E15041CF8FB7741C2A5441F98682C4C1E15041636D44F81A2A5441D86621AEC1E150417D75FA5D192A5441DB1114B2C1E15041DAFF8226182A54413764CD7BC1E15041D2144583162A5441876A6D62C1E15041325727A9152A54416F6B6463C1E15041AD5594A7152A5441D1559FACC1E1504101EDF7A6132A5441095D3694C1E1504133188214132A54412E35E9B7BEE15041CD095445132A5441DC248E3DBDE1504191DEC9D7132A54410D9A2B62BDE15041944CD014142A5441D06EA1F4BDE1504144D95F9B152A54410D9A2B62BDE15041376D8609172A544192A62C86BBE1504102D4F55E172A544144BAC491B9E15041B179872D152A54410BA9EEA5B8E15041F65E1BF9132A5441E290B0A2B6E150410657EFAF142A54411F85EB31B6E15041C3F5281C142A5441D7A370EDB4E15041666666A6112A5441EC51B83EB3E150413D0AD7130F2A54411F85EB21B2E15041000000500C2A544133333313AFE1504114AE47E1082A54413D0AD703ADE15041C3F528AC072A544148E17A44ABE15041C3F528BC052A5441F6285C0FAAE150410AD7A310032A54410AD7A370A8E15041E17A149E002A5441B81E854BA7E1504148E17A64FE29544185EB5188A6E1504100000070FB295441EC51B86EA2E15041C3F5288CFA29544152B81E25A0E1504166666616FB295441E17A145E9EE1504100000030FD29544152B81E759DE15041295C8F42FC2954418FC2F5389CE150411F85EBD1F92954419A9999D99BE15041A4703D5AF929544148E17A249BE15041CDCCCC0CF9295441C3F5285C9AE1504152B81E95F82954419A9999A999E150417B14AE47F82954410000009098E15041333333F3F7295441AE47E18A97E15041666666F6F62954417B14AEC796E15041713D0A87F6295441CDCCCC0C96E15041713D0A37F6295441295C8F5295E15041E17A141EF6295441AE47E1BA94E1504100000070F6295441D7A370BD93E150419A999909F7295441000000F092E15041F6285CDFF729544152B81EC591E15041E17A14FEF7295441EC51B87E90E15041C3F5280CF829544148E17A848FE150413D0AD7C3F7295441AE47E18A8EE15041713D0A67F8295441F6285C8F8DE1504100000090F829544148E17AA48BE150417B14AEA7F8295441CDCCCC7C8AE15041C3F528BCF8295441713D0A0788E15041AE47E17AF7295441F6285C6F86E1504114AE47A1F62954413333336385E150411F85EB61F629544148E17A4484E150419A999939F6295441CDCCCC7C83E1504166666606F62954413333339382E150410AD7A3E0F5295441EC51B80E81E150410AD7A300F62954415C8FC25580E1504148E17A44F6295441B81E858B7FE150411F85EB41F629544114AE47817EE15041295C8F02F6295441AE47E18A7DE15041D7A3703DF629544148E17AC47CE15041AE47E12AF6295441AE47E18A7BE150415C8FC205F6295441333333037BE15041F6285CAFF52954418FC2F5387AE150413D0AD763F6295441A4703D6A79E15041F6285CFFF6295441F6285C5F78E1504100000050F7295441EC51B84E77E1504185EB5188F72954417B14AE0776E15041AE47E1EAF6295441A4703D5A75E150419A9999C9F6295441C3F528DC73E150418FC2F5A8F6295441000000C072E15041000000F0F62954418FC2F5F871E15041CDCCCC4CF72954415C8FC2E570E1504185EB5168F7295441EC51B8CE6FE15041B81E851BF7295441A4703D7A6EE15041C3F5286CF729544148E17A846DE15041D7A3700DF829544185EB51686BE15041000000E0F3295441EC51B8AE69E15041CDCCCCBCF4295441295C8FC268E1504185EB51F8F42954413D0AD74367E150415C8FC215F52954415C8FC27566E15041F6285C5FF5295441AE47E17A65E150418FC2F5A8F5295441A4703DCA64E15041295C8FF2F5295441EC51B8DE63E15041E17A146EF529544114AE470163E150415C8FC215F52954411F85EB4162E15041E17A14AEF4295441CDCCCC0C61E15041713D0A07F529544148E17AF45FE15041CDCCCC7CF5295441C3F5289C5FE150419A999959F6295441AE47E1AA5FE15041C3F528ACF7295441CDCCCCDC5EE1504100000040F8295441AE47E17A5DE150415C8FC2B5F82954411F85EB715CE1504152B81E75F9295441C3F528FC5BE15041C3F5289CFA29544152B81E955BE1504166666696FB295441B81E858B5AE1504185EB5138FC295441A4703D2A59E15041B81E85CBFC295441E17A143E58E15041F6285C9FFC29544185EB51C857E15041CDCCCC4CFB295441E17A14CE56E150418FC2F578FB2954410AD7A3B056E150415C8FC2E5FA2954413D0AD74357E1504152B81E75F92954413333339356E1504185EB5198F8295441B81E857B55E1504100000080F7295441E17A149E54E150418FC2F518F7295441EC51B8DE53E15041713D0A77F62954413D0AD7A353E150418FC2F5A8F5295441E17A142E53E150411F85EB81F4295441713D0AC752E15041EC51B8EEF3295441713D0AC752E1504148E17AF4F2295441B81E858B52E150419A9999F9F1295441295C8F8251E15041EC51B8BEF129544148E17AB450E150413D0AD743F22954417B14AED74FE15041D7A3708DF22954418FC2F5084FE1504114AE4761F229544185EB51584EE15041C3F5289CF229544152B81EC54DE15041AE47E1AAF229544148E17A544CE1504100000070F2295441666666864BE1504114AE4761F22954415C8FC2D54AE15041D7A3708DF22954419A9999E949E15041D7A3708DF2295441D7A370BD49E15041D7A370CDF12954417B14AE4749E150411F85EBE1F02954410000003048E15041EC51B84EF029544148E17A1445E15041713D0AA7F0295441D7A370ED43E150410AD7A3F0F0295441C3F5288C42E15041295C8F92F1295441D7A370BD41E15041A4703D3AF1295441333333C340E150418FC2F5D8EF2954410000003040E15041F6285C8FEF29544185EB51183FE15041F6285C8FEF295441AE47E1FA3EE150411F85EBB1EE295441EC51B80E3EE150415C8FC285EE295441E17A145E3DE1504114AE4701EE295441713D0AF73CE150415C8FC215ED29544114AE47813CE150419A9999E9EC295441666666463CE1504133333373EC29544114AE47C13BE15041C3F528CCEC2954411F85EB013BE150419A9999E9EC2954419A9999A93AE150411F85EB41ED295441EC51B86E3AE15041EC51B81EEE295441295C8F423AE150418FC2F518EF295441B81E85DB39E15041E17A149EEF295441CDCCCC0C39E15041A4703DCAEF2954418FC2F5C837E15041A4703D0AEF295441EC51B8CE36E15041D7A3702DEE29544114AE47F135E150413D0AD7E3ED29544114AE478134E150413D0AD7E3ED295441B81E850B34E150418FC2F5A8ED29544152B81E9533E15041EC51B81EEE29544152B81E2532E1504100000010EE295441E17A14BE31E1504148E17A94EE295441F6285CAF31E1504148E17A54EF295441713D0A5731E15041666666F6EF295441333333C330E15041EC51B84EF0295441EC51B83E30E1504148E17AC4F02954417B14AED72FE150417B14AE57F1295441F6285C7F2FE15041AE47E1EAF1295441D7A370DD2EE1504166666626F2295441A4703D4A2EE150419A9999F9F1295441CDCCCCFC2BE150418FC2F508F2295441AE47E15A2BE1504114AE4761F22954415C8FC2D52AE1504148E17AF4F2295441D7A3707D2AE15041F6285C2FF3295441666666162AE15041F6285C2FF32954410AD7A3A029E15041713D0AD7F22954410AD7A3A029E1504166666626F2295441E17A14BE29E1504152B81E75F129544152B81E252AE150419A999989F02954413D0AD7332AE15041CDCCCCACEF295441B81E85DB29E15041F6285CCFEE295441AE47E12A29E15041D7A3702DEE295441666666A628E15041B81E858BED295441B81E856B28E1504114AE4791EC2954417B14AE9728E1504114AE47D1EB295441D7A3704D28E15041CDCCCC4CEB295441666666E627E15041F6285C2FEB2954413333335327E15041A4703D6AEB2954417B14AE6726E150418FC2F578EB29544185EB51A825E1504166666696EB2954413333332325E150419A999929EC29544114AE478124E1504185EB51F8EC2954415C8FC29523E15041A4703D9AED2954410000002023E15041D7A3702DEE2954419A9999A922E150411F85EBB1EE29544114AE475122E15041CDCCCCECEE295441B81E85DB21E15041F6285CCFEE2954411F85EB9121E15041D7A3702DEE295441C3F5281C21E1504148E17A24ED2954413D0AD7C320E1504114AE4791EC295441B81E856B20E1504152B81E65EC2954411F85EB2120E15041000000A0EC2954418FC2F5C81FE1504148E17A24ED2954410AD7A3701FE150417B14AEB7ED295441D7A370DD1EE1504100000010EE295441E17A141E1EE15041333333A3EE295441AE47E18A1DE15041B81E85FBEE295441295C8F321DE15041E17A149EEF29544185EB51E81CE15041EC51B84EF0295441EC51B89E1CE15041CDCCCC1CF12954418FC2F5281CE1504152B81E75F1295441C3F5284C1BE15041D7A370CDF1295441F6285C6F1AE150417B14AE17F22954413333338319E150418FC2F508F2295441B81E856B18E15041000000B0F1295441B81E856B18E15041713D0AA7F02954417B14AE9718E15041B81E85BBEF295441713D0A5719E15041333333A3EE29544185EB514819E15041C3F5283CEE295441A4703DEA19E150413D0AD7E3ED295441A4703DAA1AE15041CDCCCC7CED29544152B81EE51AE1504185EB51F8EC295441CDCCCC8C1AE15041AE47E11AEC2954417B14AE071AE150419A9999B9EA2954411F85EB9119E150418FC2F548E9295441B81E85DB19E150418FC2F5D8E729544148E17A7419E1504100000010E6295441C3F5281C19E150411F85EB41E5295441A4703D7A18E15041F6285C5FE529544185EB51D817E1504100000010E6295441C3F528EC16E1504185EB5128E7295441B81E853B16E15041A4703DCAE7295441AE47E18A15E15041295C8F22E82954418FC2F5E814E150415C8FC2B5E8295441A4703D1A14E150417B14AE57E9295441295C8F0213E1504166666666E9295441E17A14BE11E15041B81E852BE92954413D0AD7C310E15041CDCCCC1CE929544152B81E450FE15041EC51B84EE8295441A4703DEA0DE1504100000070E72954413D0AD7C30CE15041CDCCCCECE7295441D7A370FD0BE150418FC2F538E8295441A4703DFA0BE15041AE47E19AE829544114AE47110CE150413D0AD783E9295441C3F5287C0CE15041CDCCCCCCEA29544185EB51280CE15041F6285CFFEB295441666666960AE1504100000030ED295441D7A3702D09E150417B14AE67ED2954419A99990908E15041B81E851BED2954415C8FC26507E15041EC51B83EEC295441D7A370AD06E15041666666E6EB2954418FC2F59805E150411F85EBC1EB295441CDCCCC5C04E15041666666A6EB29544114AE470103E150417B14AE67EA295441295C8F4204E15041C3F5283CEF295441C249FFA304E15041B60B3485F12954417C393DCA07E150413A38FFEAF22954414887AA1409E15041FC065E2FF62954416B2E56080BE15041A424F9FFF72954416C81D6270DE150412A4EB90FF9295441B471A91E0CE15041069BDBFBFD295441B0856A9E07E15041C5BD85FCFE295441776B38F003E1504187CB413EFF295441B9BAE9F801E15041661EEF74FE29544152B81E3500E15041A4703DAAFE295441D7A3703DFAE0504166666696032A54413D0AD703F9E050418FC2F528052A544114AE4771F5E05041C3F5280C0A2A5441713D0AF7F2E05041713D0A770F2A5441295C8F52EEE05041713D0A37192A5441F6285C4FECE0504185EB51781D2A54419A999939EBE05041A4703DAA1F2A544166666676E4E05041000000E0252A5441295C8FF2E2E05041E17A14DE272A54410AD7A310DFE0504185EB51082E2A5441C661BA0BDEE050415D77882D312A54415BDC5234DDE050415C802E45352A5441D04A5649DCE05041C3F7D771382A5441A6C6B4D6D9E0504145D7A6BB422A5441E17A14CED8E05041AE47E15A452A54419A999939D7E05041000000D0472A54413D0AD743D6E050410AD7A370492A5441000000C0D3E0504185EB51784C2A54410AD7A320D0E050417B14AE474F2A54415C8FC215C7E0504152B81E15562A544152B81E75C3E0504148E17AC4582A5441A4703DBAC1E05041E17A148E5B2A544152B81EE5C0E0504152B81E95602A5441B81E852BBFE0504114AE47A1652A54418FC2F5F8BEE05041E17A14DE662A5441295C8FF2BBE05041333333F36C2A544133333363B8E050410AD7A340722A544185EB51D8B4E0504133333323752A544166666686ADE050419A9999297C2A54418FC2F528A9E0504166666626802A54415C8FC2D5AEE05041A4703DFA812A54418FC2F578B4E05041295C8F02832A5441F6285CBFBBE05041333333E3852A544100000010C3E05041EC51B82E872A54411F85EBF1D1E050417B14AE678E2A5441C3F5280CDCE050417B14AE77942A54415C8FC235E3E050411F85EB71972A54415C8FC225E9E05041D7A370FD982A544152B81E35EDE05041CDCCCCAC9B2A54415C8FC225F3E0504166666606A82A5441295C8F02F9E05041F6285CEFAF2A5441295C8F22FBE05041CDCCCC8CAF2A5441295C8F32FCE05041B81E850BAF2A5441C3F528ACFCE050413D0AD723AF2A54413D0AD743FEE05041AE47E15AAE2A5441AE47E1FAFEE0504152B81E95AC2A544133333393FEE05041D7A3709DA82A5441D7A3709DFEE05041E17A142EA72A5441713D0A3700E15041333333F3A52A5441F6285CBF00E15041A4703DBAA12A544152B81ED5FCE0504100000090992A5441CDCCCC3CFDE050411F85EB31982A5441F6285C5F04E1504100000080942A544152B81E2507E150417B14AE17942A5441257A343D07E15041D4BBB60B912A54411BA98C5A09E15041E1A7FB688F2A544191F03BD80AE15041A7F0D80B912A54412367A33D0EE1504190F8D1B08F2A544150D9998511E1504162B223498F2A5441377A8AC814E150413B214D998D2A5441EA420B4D16E1504173EB3F588D2A5441403ACE9E1AE15041663CBE288A2A5441FF28852C1FE150412CA6EB37852A54418F085BE720E15041CE584D68822A54414498B04522E15041D8981B837F2A5441C5F6A29821E15041FF275C7F7E2A544177FADAA221E15041120355797E2A544124C487E625E15041526A6B537D2A544111F54A0429E15041353BD8BF772A5441805A31542AE1504135D83128732A54416D8BF4712DE1504135D83128732A54410989B4B930E1504108405830712A54410AEC5A5135E150414AAABEF06B2A5441F71C1E6F38E1504199DA71E06F2A5441E34DE18C3BE150412CDB810E6F2A5441F2167EA240E150411E12E5F8692A54414D4A817840E150412E7B2B5D662A5441DE4741C043E1504112AF3E61652A5441AA43D17D49E15041DD472887662A5441144071694EE15041B1AF4E8F642A544168D96ABD4EE1504181B17E19622A5441F50D8EEF4CE15041E5B3BED15E2A5441337254E34FE15041F319B54F5F2A5441733C115553E15041251BD5AB5D2A54416270245952E1504138EA118E5A2A54410AD7A34054E150417B14AEA7582A5441D7A370FD55E15041E17A143E5B2A54417B14AE4758E15041666666A65A2A54419A99998959E150418FC2F548582A5441D7A3709D57E150418FC2F578572A5441E17A143E59E15041713D0A67552A54410AD7A3F05BE150417B14AE37552A5441000000C05EE15041295C8F52572A54416666668660E15041EC51B89E572A54413823969064E1504194DEF528572A5441ECD88EF469E150412942A85F4F2A54410521709B70E15041B05AB4A1472A544105CC557471E150417357041E472A54418631106F72E150418B07CA85462A5441000000C079E150417B14AE673F2A54418F54C04678E1504162CCCA663D2A544103DCDE9473E15041883958A2342A5441B8124DB06CE15041388C1D6F2C2A5441B262380165E15041A0DC7A42272A54410C8029E75EE1504141FB09FF232A544193B347624EE1504162507F48232A5441717AB09C44E1504116E0568B222A5441497D7CB740E15041C4E29EDA1E2A5441373B6BF139E15041BCD9B230142A5441A080D4343CE15041E8F016950B2A5441877648F149E150411FF8D6BD012A544143684C6B5DE1504191F5123A052A5441025DA0CB6CE15041C3F63296032A5441364A2C6C86E1504198F6AECA032A5441993DDCA497E15041A6F1AA8E0A2A54418730007BA9E1504199EA6E31142A54413EC8D59BB2E1504159EF41171C2A544163878677B3E150413D5F75FF1D2A54416311A0F9B1E150411815A7B3202A544112772BFDB1E15041468E59C3202A544194FC239CB3E150418132DBAB232A54419C8E1D5FB3E15041379B77AC252A54411D2D1846B1E1504117E7B70E282A5441B4B0E339B1E1504135146F27292A5441EE755469B1E150410DD647FA292A5441137C93CAAFE15041F2AA98842A2A544170402A7EADE15041F03A55012C2A5441823D240FABE150410E08FE01312A544179AD6792A9E1504125B52D09332A5441F71E2E4DA9E15041D18053D2362A544167B06D01ACE150417BDC35183C2A54416FD0E6FAAEE1504182FCAE113F2A54413BBC4E9AB3E1504182FCAE113F2A5441CDCCCC9CB3E150418FC2F5083F2A54419A9999C9B3E150410AD7A3703E2A544148E17AF4B3E150410AD7A3E03D2A5441D7A3705DB4E15041713D0A373D2A5441EC51B8BEB4E150417B14AE173D2A5441AE47E12AB5E15041EC51B8EE3C2A5441D7A370DDB5E15041666666963C2A5441F6285C1FB6E1504152B81E453C2A544148E17A34B6E150418FC2F5083C2A5441B81E856BB6E1504152B81EB53B2A5441000000C0B6E15041AE47E12A3B2A5441713D0A07B7E15041CDCCCCDC3A2A5441D7A3706DB7E15041666666863A2A5441CDCCCCACB7E150417B14AE473A2A54410AD7A3F0B7E15041C3F5280C3A2A544152B81E35B8E1504185EB51C8392A544114AE4791B8E150415C8FC235392A5441666666B6B8E1504148E17AE4382A54411F85EB31B9E15041666666A6382A5441295C8FB2B9E1504185EB5168382A54413D0AD713BAE15041CDCCCC0C382A544133333353BAE15041EC51B89E372A544152B81E65BAE1504100000060372A5441CDCCCC8CBAE15041713D0A07372A54418FC2F5E8BAE15041666666B6362A5441F6285C3FBBE15041F6285C9F362A5441A4703DDABBE150411F85EBD1362A5441EF133240BCE1504121E82AFB362A5441EC51B80EBDE15041EC51B84E372A54419A999929BEE150415C8FC2E5372A5441E5B97EC7BEE15041F52A15D7372A54418FC2F5E8BEE15041F6285CCF372A5441CDCCCC3CBFE150418FC2F598372A54415C8FC2A5BFE15041AE47E14A372A544152B81EE5BFE15041F6285CFF362A5441F6285CFFBFE15041666666A6362A544114AE4741C0E1504114AE4711362A5441A4703D8AC0E150411F85EBF1352A5441B81E85DBC0E15041666666B6352A54419A999949C1E1504185EB5178352A54415C8FC295C1E15041713D0A27352A5441F6285CDFC1E15041E17A14DE342A5441C3F5280CC2E1504185EB5178342A5441B81E852BC2E1504148E17A34342A5441295C8F62C2E150418FC2F5D8332A5441E17A14CEC2E150411F85EBD1332A54418C60CA53C3E1504155A39529342A5441CDCCCC0CC4E1504185EB5198342A5441B81E854BC4E15041295C8FD2342A5441EC51B8CEC4E1504152B81E05352A5441AC15565EC5E1504120D780D7342A54413D0AD773C6E15041F6285C7F342A54410AD7A320C7E150413D0AD763342A544114AE4791C7E15041713D0A67342A5441D7A370DDC7E150415C8FC235342A544114AE4721C8E150419A999919342A544152B81EF5C8E15041D7A3709D332A5441D7A3707DC9E1504152B81E55332A54410AD7A3E0C9E15041C3F5280C332A54413D0AD763CAE15041666666D6322A54417B14AE37CBE15041713D0A67322A544133333383CBE1504152B81E45322A5441B81E850BCCE150411F85EB11322A5441D7A3707DCDE150410AD7A3E0312A5441CDCCCC5CCDE15041E17A140E312A5441D7A3708DCEE150410AD7A3B02F2A5441A4703D2AD0E150418FC2F5382E2A54415EEFE29DD0E150411B64FA052E2A54410D00000066666676D2E050417B14AEC7792A544152B81E95D5E05041D7A370BD7A2A5441D7A3706DD9E0504185EB51487B2A54417B14AE77DBE0504114AE47717D2A54418FC2F5E8DCE05041295C8F62802A54419A999949DBE050411F85EB01822A54419A9999C9D9E05041E17A14CE802A5441D7A370DDD7E05041AE47E11A7E2A5441CDCCCCDCD4E050410AD7A3807D2A5441333333B3CFE050413D0AD7C37E2A544133333323CEE050415C8FC2057D2A5441CDCCCC4CD0E05041F6285C8F7A2A544166666676D2E050417B14AEC7792A544105000000CDCCCC1CB0E05041D7A370AD7E2A54419A999909B0E05041EC51B8EE7F2A54410AD7A300AFE050411F85EB01802A5441D7A370EDAEE05041A4703D9A7E2A5441CDCCCC1CB0E05041D7A370AD7E2A544119000000333333C337E15041C3F5287C2D2A5441E17A146E35E15041EC51B89E2C2A544114AE47A132E15041713D0A272C2A544148E17AD42BE150411F85EBD12A2A54411F85EBB127E15041D7A3708D2A2A54419A99992925E15041A4703D5A2A2A54415C8FC2F522E15041A4703D5A292A5441B81E854B21E150418FC2F548272A54410AD7A3A01EE150413D0AD7F3222A544148E17AE41BE1504114AE47D11F2A54413D0AD7D318E15041CDCCCC8C1E2A5441295C8FC214E1504148E17A041D2A54415C8FC2F514E150419A9999591C2A54415C8FC2F519E15041333333F31D2A54413D0AD7D31CE150419A9999591F2A544152B81EE51EE15041000000C0212A5441B81E854B21E15041C3F5287C252A54410AD7A3A023E15041295C8FE2282A54410AD7A3A025E150410AD7A3C0292A5441CDCCCC5C28E150410AD7A3C0292A54417B14AE072CE1504152B81E052A2A54411F85EBB131E150418FC2F5482B2A54417B14AE0736E1504152B81E052C2A54417B14AE0738E15041F6285CAF2C2A5441333333C337E15041C3F5287C2D2A54410600000014AE4731F0E0504166666666852A54418FC2F548F3E05041CDCCCC7C8E2A5441333333E3EDE05041EC51B8DE912A544185EB5178E8E05041EC51B87E902A5441C3F528CCE6E0504133333353882A544114AE4731F0E0504166666666852A544144000000D631159DE2E050419561BD93762A54410731A9E4E1E0504175A52BF2712A5441A7A7F4B6E9E0504184A0A39F6D2A5441E7F22E91EBE0504102E6E96E6A2A54410F160855EAE050412499D723672A544166387560E8E0504143043BE0642A544196E6DAC2E0E05041D3DDB13A632A5441A4703D0ADDE05041F6285C6F552A544148E17A04D4E050415C8FC2F5572A5441D4080175D1E0504172A04D7C552A54414E375AE6D1E0504194914C17522A5441BD6C9E79D6E050417EE713D84E2A54412C4D466DD9E05041300641C3502A5441E78840C3DCE050415DA21FFF4F2A5441D241CD6DE0E05041585232B74E2A54418CC8A823E4E05041AE1B44494C2A54412FB39903EAE050415AA3B97D4B2A54414152D9DEEBE05041A598E843472A54417643E84FECE050416EED92C9432A5441393FEC7BEBE05041EDBEC05B412A5441F484A720EFE0504155334CC0402A54410D50DCCBEEE05041110976263F2A5441AF6DBEE9EDE050415F443A623D2A5441EDF03ADDECE050418B334A123A2A54414295BBC5EAE05041F1174A22362A54417DB5E1BEE9E050415C653B08322A5441D83F9970E9E05041F1E0DD612E2A544114AE47B1ECE0504148E17AF4292A544166666676FDE0504114AE4741262A5441AE47E12A00E150419A9999992B2A54410AD7A3B003E1504114AE47D12A2A54419A9999F908E150417B14AE672B2A5441CDCCCC3C0FE15041A4703D2A2D2A5441A4703D7A16E15041EC51B88E2D2A54413D0AD7E315E15041E17A147E302A5441295C8FD20FE15041EC51B80E322A54410AD7A3F006E15041B81E852B362A54415C8FC245FDE050410AD7A3C03B2A5441B81E851BF5E05041B81E856B422A544162D60D6DF3E05041DDF847F2432A54416D2E67BAF2E0504100B65581462A5441747FF368F1E05041086C9671482A54418386C007F2E05041743F4A264A2A54416F3BC2AEF6E050411B22D7614A2A544186A076F0F9E0504101C3B0754A2A5441159D787E06E1504124355F1A482A5441E5573B870EE150410790E701472A5441484C540A1CE15041BCD7FD15442A544185CDC0981EE15041DFE5BDAF3B2A5441778FE0E827E150411FD188F1362A5441D7A3709D34E1504114AE47512F2A5441C3F5281C38E15041D7A3706D312A5441333333B34AE1504152B81EC53F2A544101CAB6ED4AE1504173F2E2584E2A54412D54678C47E15041C1892EEB552A54416D6449D23EE15041FFD1149A612A5441EBB977D733E1504112AF3E61652A5441F2C2678A27E15041EF76BB1A6C2A544148FC0A2D1FE15041C8D84156722A5441BF6AE12F14E15041C6D5F16F762A5441B80DDB6407E15041F5D3C1E5782A54417DAC645700E150410137687D7D2A5441BF16CB17FBE05041BB660B3F822A544121FB66C5F2E05041C16E7D1A822A544152FAFA0CF2E05041B8B60713812A5441B817E0C5EBE050414F006A7C812A5441065E924DE9E050414748F474802A5441D631159DE2E050419561BD93762A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911023 - 293542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A94CCF9504148E17AE4879E5441713D0A97BDF95041B81E85BB869E5441000000F0BAF950417B14AE87869E5441B81E85DBBEF95041EC51B8CE899E5441713D0A37C2F950415C8FC2F5919E5441F6285C1FC3F9504185EB5128949E54417B14AE87C3F9504166666626959E544166666616C4F950410AD7A380969E5441B81E857BC5F95041295C8FA2959E5441F6285C1FCFF9504114AE4741909E544148E17A94D8F95041666666868C9E54413D0AD7D3DAF950418FC2F5A88B9E544114AE4701DEF95041EC51B82E8B9E5441CDCCCCDCEBF9504185EB51788D9E54413D0AD733EDF95041E17A141E8D9E5441CDCCCC4CEEF95041CDCCCCFC8C9E544133333303E8F950417B14AE677B9E5441EC51B8EED2F95041A4703D3A839E54415C8FC2B5C6F9504152B81EB56F9E5441E17A14DEC1F9504114AE47816F9E5441C3F528ECCEF95041EC51B8AE849E5441C3F5281CCFF95041CDCCCCFC849E544148E17A94CCF9504148E17AE4879E5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000362017CCD9F95041314A780E8C9E54413D0AD7D3DAF950418FC2F5A88B9E5441C67B7ED4DAF95041E898DCA88B9E5441E67FCB7CDDF950415B37713D8B9E54416A68C78DDDF95041FCB313408B9E544114AE4701DEF95041EC51B82E8B9E544132E6CBDCEBF95041684251788D9E5441FB81C04CEEF950418C41CEFC8C9E54411F85EB21F0F95041EC51B8AE8B9E5441FFC4FCB1EAF95041471B3AE8829E54417B14AE17E7F950417B14AE177D9E544114AE4731DCF950413D0AD783809E5441F048A3F0D2F95041D0A9F56B839E5441F4F8FFEFD2F9504190E7296C839E544118C7C1B5C6F95041F2AF1EB56F9E5441518645E8C2F950416251698C6F9E544111523B1CC2F950410C07E1836F9E5441B60216DEC1F950417BBE47816F9E5441DD32B51CCCF95041A370A41F809E544105F1C9BECDF95041B5D5D7C5829E5441C3F528ECCEF95041EC51B8AE849E5441C3F5281CCFF95041CDCCCCFC849E5441CF373DAAD5F9504171DE4791879E544148A57994D8F950414E2865868C9E5441362017CCD9F95041314A780E8C9E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900251 - 226076
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000200000001030000000100000014000000666666B65DFB5041295C8F62622954416666666646FB50411F85EB314229544114AE47A144FB5041AE47E1DA3F295441A4703D3A42FB5041B81E855B412954419A9999D940FB504114AE476142295441F6285C2F3FFB50415C8FC28543295441EC51B8FE3CFB504148E17AD444295441713D0A273AFB504185EB513846295441D7A3701D40FB5041295C8FF250295441000000704DFB5041A4703D6A6829544114AE47214EFB50418FC2F5A869295441D7A3707D4FFB50419A99992969295441CDCCCCBC51FB5041CDCCCC7C682954416666667653FB50416666665668295441F6285CCF57FB5041000000306829544185EB51685BFB5041666666F66729544148E17A945DFB5041666666F667295441E17A14AE5FFB5041666666F66729544185EB519861FB504114AE47E167295441666666B65DFB5041295C8F62622954410103000000010000000B0000008FC2F51844FB5041666666263F2954410000001037FB5041F6285CEF2D2954417B14AE7735FB50416666665633295441A4703DAA2EFB5041F6285C8F312954417B14AE172FFB50413333335332295441A4703DAA39FB5041713D0A5745295441000000303CFB50418FC2F54844295441CDCCCC9C3EFB50415C8FC20543295441C3F5281C41FB5041B81E855B41295441666666C642FB5041F6285C1F402954418FC2F51844FB5041666666263F295441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000001F85EBC138FB504114AE4731282954411474622B38FB5041B29F472F2A295441E69B882137FB5041070DBB022E295441241AD30E37FB5041775857F32D295441D5FF810C37FB5041A34530FB2D2954414DE4F40737FB5041B0A99A0A2E2954412885A7FA36FB50418D28A9372E2954412015758535FB50419009E330332954411FF8377935FB50413F3D3051332954417B14AE7735FB50416666665633295441C97572B62EFB50411ABB8C9231295441234BC5B939FB504139658B5045295441000000303CFB50418FC2F54844295441CDCCCC9C3EFB50415C8FC20543295441C3F5281C41FB5041B81E855B41295441666666C642FB5041F6285C1F40295441567197CE43FB50419C38165D3F295441D77FA31344FB5041A41546283F29544105F1A01444FB5041F6C495293F2954418FC2F51844FB5041666666263F295441A4703D0A46FB504185EB51F83D295441564941AB46FB5041D13DCE9B3D2954412181F7F746FB50418F31FD6A3D295441066CA0A349FB50411A9C2FDF3B295441E17A148E4AFB504114AE47513B295441D3F43A664BFB5041DD674FDA3A295441569A9FC94BFB50416B4BC4A03A295441333333F348FB50411F85EBF13729544114AE47E13EFB5041CDCCCC3C2E2954411F85EBC138FB504114AE473128295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900342 - 3106511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B0000003D0AD753F7EA5041000000F0AC3554411F85EB61F9EA5041F6285CDFB435544166666696FBEA50418FC2F5F8C7355441295C8F52FCEA50417B14AEF7CC3554419A999959FDEA5041D7A3700DD035544166666686FEEA50413D0AD723D33554415C8FC21503EB5041A4703D5ADF3554415C8FC26528EB504114AE4751DE355441E17A14BE34EB50417B14AE57D53554413D0AD7E334EB50417B14AE77AB3554413D0AD753F7EA5041000000F0AC355441
+</a>
+
+<b>
+010600000001000000010300000001000000130000001E4DA916F7EA50411192A624AD355441231567C1F8EA5041C2BDE662B1355441CAB02BAAF9EA50410A583944B935544129DD246CFAEA5041476210D0BD35544189091E2EFBEA5041E498E01DC3355441591E1935FDEA5041AB75D89FCF35544164EA4851FFEA50417EB93343D5355441D38839DB00EB504105763E62D935544193938DC901EB504152AE87E0DB3554413E4B1B3003EB5041ED3E5C59DF3554415ABC3EC428EB504129E3B74EDE355441DDA59B6E31EB504128C183C9D83554417514AE1135EB504163A0D39AD5355441E83517C434EB504120CE3E64CF355441E83517C434EB5041CDA3702DC4355441E145A1D834EB5041861330E6B7355441025B7B9834EB50416F74BB00B13554412FA5E2EA34EB5041C55A1D53AB3554411E4DA916F7EA50411192A624AD355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900702 - 3172806
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000003E0000003333333397F450418FC2F5E820385441A4703D1A9BF45041666666B6193854411F85EB119EF450418FC2F5D814385441B81E850B9FF4504185EB51D812385441C3F528DC9FF4504114AE4721113854413D0AD7A3A0F450413D0AD7631038544185EB5128A2F45041EC51B86E0F385441EC51B8CEA3F4504185EB51B80E3854417B14AE87A4F45041C3F5289C0E385441AE47E12AA5F45041333333830E38544148E17AB4A5F4504114AE47810E3854418FC2F558A6F450419A9999990E385441E17A142EA7F45041713D0AC70E38544152B81EF5A7F45041D7A370FD0E385441CDCCCCCCA8F45041A4703D5A0F3854417B14AE27AAF450411F85EBF10F3854411F85EBA1AAF4504114AE47411038544114AE47D1AAF45041713D0AD70F38544100000060ABF4504148E17A140C38544185EB5188A5F450417B14AE17FB375441295C8F7298F450415C8FC2D5F6375441333333038FF450417B14AE17F937544148E17A048EF45041C3F5285CF53754410AD7A35099F450411F85EB51F23754417B14AE679BF450415C8FC215F3375441666666469EF450415C8FC2B5F1375441000000309FF45041CDCCCC4CF0375441AE47E19A9EF45041F6285C8FEE375441713D0AC79DF45041B81E85FBEC3754419A99996999F450410AD7A300E83754410AD7A3A090F450417B14AE27EB3754410AD7A3108DF4504185EB51C8E7375441AE47E1BA8AF45041A4703D2AEA3754417B14AE0788F45041C3F5283CEE3754411F85EBD17DF450413D0AD7D3FE375441000000307CF45041EC51B81E01385441D7A370BD7AF450418FC2F5B8023854413333336373F4504152B81E9513385441F6285C6F6EF45041C3F5288C1E38544185EB51C86BF45041CDCCCCBC243854413D0AD7F36AF4504114AE476127385441A4703D9A6AF4504166666686293854415C8FC2A56AF4504114AE47312C385441F6285CFF6AF4504114AE47D12E385441C3F5289C6BF45041333333B330385441C3F5287C6CF450419A99998932385441F6285C0F6EF4504114AE478134385441D7A370AD6FF4504114AE47D1353854415C8FC21572F4504114AE472137385441EC51B83E75F45041EC51B85E383854417B14AE8779F45041F6285CDF39385441CDCCCC6C7CF45041C3F5288C33385441C3F5282C83F450415C8FC2F5363854415C8FC2457EF4504114AE47D141385441EC51B83E7DF450419A99991944385441EC51B87E82F45041E17A14BE4438544152B81E2584F45041B81E856B40385441A4703D3A86F450419A9999D93C3854411F85EB8189F4504133333343373854417B14AE278EF4504148E17A442F3854413333330393F45041EC51B8EE263854413333333397F450418FC2F5E820385441010300000001000000180000003D0AD7F3F3F3504185EB519835385441EC51B8CEF6F35041D7A370AD35385441F6285CBFFAF350415C8FC20537385441AE47E13A02F45041AE47E1AA38385441295C8FA20FF450417B14AE373A3854411F85EBA112F45041AE47E16A3A3854411F85EB1116F45041C3F528BC3C385441CDCCCCFC2AF450419A9999592C3854417B14AE0728F45041D7A3704D27385441CDCCCCDC23F450417B14AE6721385441AE47E17A1CF45041A4703D1A233854419A9999E90EF45041E17A14EE2638544114AE47E109F45041F6285CDF2738544114AE4711FCF3504152B81E95283854411F85EB11F4F35041F6285CDF273854410AD7A3A0F1F35041C3F528FC27385441A4703D3AEEF35041B81E85EB2838544114AE4731EBF35041EC51B84E2A38544100000060E8F350415C8FC2052C385441E17A146EE7F350411F85EBD12C385441333333B3ECF3504148E17A44323854410AD7A3F0F1F35041EC51B85E37385441F6285C8FF2F35041AE47E10A363854413D0AD7F3F3F3504185EB519835385441010300000002000000410000007B14AE2768F45041E17A149E393854413D0AD74369F450418FC2F5683B3854411F85EB816BF45041B81E85FB3D385441F6285CEF75F45041C3F528BC413854413D0AD75377F45041000000B03E385441F6285C3F79F45041D7A3707D3A385441D7A370ED74F450417B14AEF738385441713D0AC771F450417B14AEA7373854413D0AD7536FF450417B14AE5736385441D7A3707D6DF450415C8FC2E5343854410AD7A3706CF450419A9999D933385441295C8FB26BF4504148E17A9432385441295C8FD26AF45041000000E030385441713D0A576AF45041000000202F385441D7A370FD69F4504148E17A542D385441A4703DBA69F450419A9999192B3854415C8FC2C569F4504148E17A64293854415C8FC2356AF4504148E17A3427385441A4703D0A6BF45041CDCCCC5C24385441713D0AD76DF4504114AE47311E385441295C8FB272F450416666663613385441A4703D7A79F45041CDCCCCFC03385441E17A14AE79F450411F85EB81033854419A9999E978F450413333331304385441CDCCCCFC75F450413D0AD793053854415C8FC2A573F45041CDCCCC3C0638544148E17AD463F450415C8FC255093854411F85EBE160F450410AD7A3100A3854415C8FC2A55EF450418FC2F5C80A385441000000E05CF450411F85EBC10B38544185EB51885AF45041B81E856B0D385441E17A141E58F4504152B81E750F385441295C8F8254F45041C3F5283C13385441B81E85FB50F450415C8FC29517385441F6285C5F4EF450417B14AE471A3854418FC2F5284CF4504148E17A441B3854413D0AD76349F45041CDCCCC6C1B3854418FC2F54846F45041D7A3706D1A3854410AD7A39043F4504114AE478119385441CDCCCCEC37F450413D0AD7A323385441A4703D6A30F45041D7A370CD2E3854419A99992933F45041A4703D5A32385441E17A14FE36F450413333335334385441C3F5286C39F45041666666B63438544148E17A943DF450411F85EBF1343854416666665644F45041A4703D5A36385441F6285C6F47F45041B81E850B38385441CDCCCCCC49F450413D0AD7B33B385441295C8F724CF45041B81E851B413854415C8FC2E550F450413333334340385441F6285CAF51F45041EC51B8DE3B385441D7A370BD55F450410AD7A3403B3854418FC2F59857F45041333333033A385441AE47E13A59F450411F85EB313B38544148E17AE45CF45041B81E85FB3B3854417B14AE775EF45041AE47E12A393854411F85EB415FF45041B81E854B36385441D7A370FD5EF45041713D0AA732385441B81E857B5FF45041AE47E1EA2E385441C3F5282C61F450419A9999892F3854413D0AD72361F45041F6285C1F333854417B14AE7762F450413D0AD7033638544152B81E4564F450410AD7A320363854413D0AD70366F4504148E17AD4383854417B14AE2768F45041E17A149E393854411B000000A4703DAA5CF450418FC2F52828385441713D0AA75BF45041AE47E11A28385441A4703DFA5AF45041000000A0293854419A99990959F450411F85EBF129385441E17A146E57F450419A9999492938544114AE47915AF4504114AE478123385441A4703DCA61F45041666666D624385441F6285C6F68F450410AD7A330263854411F85EB0168F4504114AE47312A38544148E17A1468F450419A9999292D385441C3F528FC67F45041000000E02F385441F6285C4F67F45041D7A370AD31385441D7A3703D66F45041295C8F82313854410AD7A39065F45041EC51B87E30385441B81E854B66F4504114AE47412F3854418FC2F5F866F450417B14AEE72D385441D7A3703D66F4504114AE47912D385441EC51B87E64F45041CDCCCC4C2E385441CDCCCC6C63F450413D0AD7532C385441F6285C2F62F4504152B81E252B385441F6285C2F62F4504166666666293854415C8FC26561F45041333333F328385441D7A3708D60F45041666666F62938544152B81EB55FF4504185EB51982B38544114AE47B15EF45041EC51B8EE2B385441E17A14AE5DF45041E17A146E2B385441A4703DAA5CF450418FC2F52828385441
+</a>
+
+<b>
+01060000000100000001030000000200000049000000E058615E68F45041D55E44723A385441F4DEE0EA68F45041F58D4CD93A38544158D1D97E6BF45041D46147BD3C3854410C80887574F450413CC2A73D3F3854410B838BC076F4504166EFD4323E385441FB6D766B78F450417701E73C3A385441D7A370ED74F450417B14AEF738385441037A82DF6FF45041FF886E1C3738544148BCC4296DF450415EE3C806353854410AD7A3706CF450419A9999D93338544158D1D97E6BF4504198250B5132385441944C031C6BF450418DD1206F31385441295C8FD26AF45041000000E030385441D0434C096AF45041C34F35FB2E38544172E6EED369F45041089277452C385441B62B346969F45041098F74FA29385441D0434C096AF4504143D1B6442738544124A1A93E6AF4504133B99EA426385441A4703D0A6BF45041CDCCCC5C24385441713D0AD76DF4504114AE47311E385441295C8FB272F450416666663613385441A4703D7A79F45041CDCCCCFC03385441E17A14AE79F450411F85EB81033854419A9999E978F450413333331304385441CDCCCCFC75F450413D0AD793053854415C8FC2A573F45041CDCCCC3C0638544148E17AD463F450415C8FC255093854411F85EBE160F450410AD7A3100A3854415C8FC2A55EF450418FC2F5C80A385441000000E05CF450411F85EBC10B38544185EB51885AF45041B81E856B0D385441E17A141E58F4504152B81E750F385441295C8F8254F45041C3F5283C13385441B81E85FB50F450415C8FC29517385441F6285C5F4EF450417B14AE471A3854418FC2F5284CF4504148E17A441B3854413D0AD76349F45041CDCCCC6C1B385441148C947948F4504122AA8F2D1B385441D0434C9946F45041AA341A581A385441C73D460342F450419A1F05031C38544160DAE2373DF4504154E0C50321385441BF343D223BF450416DFBE0EE23385441E9616A173AF450418713F98E2438544148BCC40138F4504119A186042638544124A1A91635F4504118A78C9A2A38544158CED60B34F4504122AA8FE52C385441B62B344134F45041DD674D9B2F38544124A1A91635F450416FF5DA103138544158D1D95636F4504154E0C5BB323854419D10190E43F45041CB583EDC353854416666665644F45041A4703D5A363854418C010A4F49F45041D55B41273838544147BFC7044CF45041089277FD3D3854417BEFF7444DF45041A9371D1340385441940A133050F45041A9371D13403854416ADDE53A51F450419119FFDC3A38544182FB037156F4504133BCA1A73A38544124A1A98658F45041A12E14323938544172E9F1665AF450419119FFDC3A38544171ECF4B15CF4504167ECD1E73B385441E9616A875DF45041D55B412738385441A5457C2E5FF45041570DE242353854417BEFF7FC5EF45041CC553B91333854417BEFF7FC5EF45041CD52384631385441D94C55325FF4504165F2D7C52E385441BE3740DD60F45041C34F35FB2E3854416CE05F2A61F4504123698D4E30385441940A13E861F45041CC553B9133385441AE222B8862F45041CB583EDC35385441930D163364F45041CB583EDC35385441259BA3A865F4504177FEE3F1373854418F40620467F450418ABEE23239385441E058615E68F45041D55E44723A3854411E000000A4703DAA5CF450418FC2F52828385441713D0AA75BF45041AE47E11A28385441A4703DFA5AF45041000000A0293854419A99990959F450411F85EBF129385441E17A146E57F450419A9999492938544114AE47915AF4504114AE478123385441A4703DCA61F45041666666D624385441F6285C6F68F450410AD7A330263854411F85EB0168F4504114AE47312A385441249EA6F367F45041089277452C3854410B64DC1168F45041A2A94EBE2C3854413EB6BE9368F4504165F2D7C52E385441FA7079FE68F45041F77F653B3038544182FB032968F450413AC8AD1B32385441F6285C4F67F45041D7A370AD31385441D7A3703D66F45041295C8F82313854410AD7A39065F45041EC51B87E30385441B81E854B66F4504114AE47412F3854418FC2F5F866F450417B14AEE72D385441D7A3703D66F4504114AE47912D385441EC51B87E64F45041CDCCCC4C2E385441CDCCCC6C63F450413D0AD7532C385441F6285C2F62F4504152B81E252B385441F6285C2F62F4504166666666293854415C8FC26561F45041333333F328385441D7A3708D60F45041666666F62938544152B81EB55FF4504185EB51982B38544114AE47B15EF45041EC51B8EE2B385441E17A14AE5DF45041E17A146E2B385441A4703DAA5CF450418FC2F52828385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900966 - 1006371
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3700D6CEF504148E17AB467355441E17A14BE46EF5041F6285CEF63355441CDCCCCAC3BEF5041C3F5285C7D35544152B81E7587EF50416666661685355441AE47E1EA8CEF5041CDCCCC0C7635544148E17A748FEF5041D7A3705D6E35544148E17A7490EF50411F85EB616B355441D7A3700D6CEF504148E17AB467355441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000CDCCCCAC3BEF5041C3F5285C7D355441713D0A2737EF5041000000C08735544185EB51C836EF50419A99990989355441A4703DEA37EF5041713D0A27893554419A9999395DEF5041C3F528EC8C355441C3F5286C83EF504185EB51C890355441C3F5285C86EF5041B81E851B8835544152B81E7587EF50416666661685355441DD990A6981EF504109148B7884355441A4AD091778EF50414E693E8583355441915FBDC167EF50411E0EE1DA813554412F256CF445EF5041224E81687E355441CDCCCCAC3BEF5041C3F5285C7D355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900966 - 3407303
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3700D6CEF504148E17AB467355441E17A14BE46EF5041F6285CEF63355441CDCCCCAC3BEF5041C3F5285C7D35544152B81E7587EF50416666661685355441AE47E1EA8CEF5041CDCCCC0C7635544148E17A748FEF5041D7A3705D6E35544148E17A7490EF50411F85EB616B355441D7A3700D6CEF504148E17AB467355441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000CDCCCCAC3BEF5041C3F5285C7D355441713D0A2737EF5041000000C08735544185EB51C836EF50419A99990989355441A4703DEA37EF5041713D0A27893554419A9999395DEF5041C3F528EC8C355441C3F5286C83EF504185EB51C890355441C3F5285C86EF5041B81E851B8835544152B81E7587EF50416666661685355441DD990A6981EF504109148B7884355441A4AD091778EF50414E693E8583355441915FBDC167EF50411E0EE1DA813554412F256CF445EF5041224E81687E355441CDCCCCAC3BEF5041C3F5285C7D355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>901538 - 1158003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000B81E859B77FD5041B81E85CB9D2F544185EB51F879FD504185EB5118A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F544152B81EF58CFD5041C3F5288C9F2F54417B14AE5792FD5041333333D39E2F54410AD7A31093FD5041000000509D2F544114AE47F197FD5041B81E856B9C2F5441A4703D1A95FD50417B14AE37892F5441CDCCCCAC93FD50411F85EB21802F54413D0AD75393FD50411F85EB317E2F5441D7A3707D8BFD50417B14AEE77E2F5441E17A148E85FD504148E17A347C2F5441A4703DEA7DFD5041E17A14CE812F5441B81E857B72FD50415C8FC2E5812F5441666666266EFD5041B81E852B812F544114AE47716EFD5041B81E852B912F544185EB51186FFD504185EB51F8992F5441666666A674FD50417B14AE079A2F5441B81E859B77FD5041B81E85CB9D2F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000038C76F1179FD504122A06B55A02F54416FDAABA57AFD50416A92AD69A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F54418E3F95F887FD50412C86BD39A12F5441A20780FD8AFD504166CF9204A02F544152B81EF58CFD5041C3F5288C9F2F54419E5D1FD58DFD5041182EE1629F2F5441CBE7056F8EFD5041540675599F2F54411A00F0B391FD50416B4E2BE99E2F5441F829580492FD50418D24C3989E2F54412197D39192FD5041FDE15F559D2F5441AA45278294FD5041CDA2620C9D2F544114AE47F197FD5041B81E856B9C2F5441A4703D1A95FD50417B14AE37892F5441F7F24DF693FD504168FFB8F5812F5441096A804893FD504130ECB1347E2F544158119EC78BFD5041504AD20A802F5441D344659887FD50412AFE50FD7D2F54415E9DC60A7EFD504127672C69822F544192F696C078FD50410A12FCD4832F5441D61622FD72FD5041DF160B3A842F5441B81E857B72FD50415C8FC2E5812F5441666666266EFD5041B81E852B812F544114AE47716EFD5041B81E852B912F5441A75B0FF16EFD50410F8ED1CA972F544185EB51186FFD504185EB51F8992F54410BB93DA574FD504125E0AA079A2F5441D2C1B9C074FD5041E38331299A2F54419065FB5C75FD504120FD1CF09A2F5441B81E859B77FD5041B81E85CB9D2F544138C76F1179FD504122A06B55A02F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>901538 - 5255631
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000B81E859B77FD5041B81E85CB9D2F544185EB51F879FD504185EB5118A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F544152B81EF58CFD5041C3F5288C9F2F54417B14AE5792FD5041333333D39E2F54410AD7A31093FD5041000000509D2F544114AE47F197FD5041B81E856B9C2F5441A4703D1A95FD50417B14AE37892F5441CDCCCCAC93FD50411F85EB21802F54413D0AD75393FD50411F85EB317E2F5441D7A3707D8BFD50417B14AEE77E2F5441E17A148E85FD504148E17A347C2F5441A4703DEA7DFD5041E17A14CE812F5441B81E857B72FD50415C8FC2E5812F5441666666266EFD5041B81E852B812F544114AE47716EFD5041B81E852B912F544185EB51186FFD504185EB51F8992F5441666666A674FD50417B14AE079A2F5441B81E859B77FD5041B81E85CB9D2F5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000038C76F1179FD504122A06B55A02F54416FDAABA57AFD50416A92AD69A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F54418E3F95F887FD50412C86BD39A12F5441A20780FD8AFD504166CF9204A02F544152B81EF58CFD5041C3F5288C9F2F54419E5D1FD58DFD5041182EE1629F2F5441CBE7056F8EFD5041540675599F2F54411A00F0B391FD50416B4E2BE99E2F5441F829580492FD50418D24C3989E2F54412197D39192FD5041FDE15F559D2F5441AA45278294FD5041CDA2620C9D2F544114AE47F197FD5041B81E856B9C2F5441A4703D1A95FD50417B14AE37892F5441F7F24DF693FD504168FFB8F5812F5441096A804893FD504130ECB1347E2F544158119EC78BFD5041504AD20A802F5441D344659887FD50412AFE50FD7D2F54415E9DC60A7EFD504127672C69822F544192F696C078FD50410A12FCD4832F5441D61622FD72FD5041DF160B3A842F5441B81E857B72FD50415C8FC2E5812F5441666666266EFD5041B81E852B812F544114AE47716EFD5041B81E852B912F5441A75B0FF16EFD50410F8ED1CA972F544185EB51186FFD504185EB51F8992F54410BB93DA574FD504125E0AA079A2F5441D2C1B9C074FD5041E38331299A2F54419065FB5C75FD504120FD1CF09A2F5441B81E859B77FD5041B81E85CB9D2F544138C76F1179FD504122A06B55A02F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911967 - 410306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000D7000000C3F528BC34E25041E17A140EFDA65441CDCCCC9C24E250418FC2F54800A75441C3F528FC25E2504114AE47D105A754417B14AE1726E250417B14AEA70AA754411F85EB7125E25041666666260DA75441295C8F7222E25041D7A3703D14A754415C8FC21520E250413333333316A7544114AE47911CE25041E17A146E16A754410AD7A3F019E25041E17A145E16A7544185EB51F818E25041A4703DBA17A75441713D0AC71DE25041B81E851B24A7544185EB51B81FE25041EC51B84E26A75441295C8F4223E250410000006028A754411F85EBF126E25041D7A370FD28A754410000006036E25041333333D327A7544114AE472141E25041295C8FC226A75441666666C64BE250419A99993924A754413D0AD7634CE25041E17A140E24A7544152B81EF54BE25041F6285CFF22A754415C8FC2654DE2504152B81E4521A75441333333834DE250418FC2F55820A75441E17A14FE4FE25041295C8FE21FA75441295C8F4251E2504114AE47B120A7544185EB513853E25041CDCCCC2C20A7544185EB51B854E25041E17A149E1EA75441333333B355E25041F6285C8F1EA754415C8FC2C557E2504152B81E551FA7544114AE47C159E250415C8FC2751AA75441295C8FC25FE2504114AE473114A754413333332361E2504114AE47C112A754419A99997962E25041C3F5285C11A7544185EB51D863E250411F85EB910FA75441AE47E1EA64E250411F85EBE10DA75441295C8F9264E25041EC51B8FE0BA754413D0AD74365E250413D0AD7030BA75441AE47E16A66E250413D0AD7030BA754417B14AE6767E25041295C8F9208A754419A9999E967E250417B14AE3707A754411F85EB1169E25041295C8FC202A75441333333636AE25041F6285CAFFDA6544152B81E456EE25041E17A147EF6A65441000000D06EE25041C3F528DCF3A65441F6285C1F6FE25041D7A370DDECA6544148E17AA46FE25041D7A3709DEAA65441B81E85FB70E250413D0AD753E9A65441E17A141E72E25041A4703D4AE6A65441C3F5284C6FE25041D7A370ADE4A65441A4703D1A70E25041A4703D9AE2A65441F6285C5F71E25041CDCCCCFCE0A65441EC51B8DE72E250411F85EB01E0A65441C3F528BC73E250413D0AD7B3DDA65441713D0AB774E25041EC51B82EDDA65441AE47E18A74E2504148E17AB4DAA65441AE47E14A75E25041000000F0D7A654416666663679E250418FC2F518D0A65441C3F528AC79E250411F85EB71CDA654411F85EB617CE25041000000A0C4A65441713D0A277CE250410AD7A3A0C1A654411F85EBA17BE2504148E17AF4BFA65441E17A148E7AE250417B14AE17BFA65441C3F5284C76E2504148E17AE4BEA654413D0AD7A372E2504152B81E65C1A654410AD7A35071E2504114AE4751C2A65441CDCCCCDC6DE250411F85EB11C2A65441A4703DEA6AE25041E17A14FEC0A65441A4703DEA6AE250419A9999B9BCA654413D0AD7336BE2504114AE4761BCA65441A4703D2A6AE250415C8FC235B9A654415C8FC22568E25041333333D3B7A654419A99993967E2504166666676B5A6544114AE472166E250418FC2F5D8B3A65441E17A14CE64E250417B14AE27B3A65441A4703D7A63E25041EC51B85EB1A65441F6285CBF61E250418FC2F568AFA654418FC2F5185FE250415C8FC2D5ABA65441666666B65DE2504133333373AAA65441F6285C4F5DE250413D0AD7F3A8A65441333333635CE25041C3F5284CA9A654411F85EBB15BE250415C8FC255AAA65441E17A141E5BE250415C8FC255AAA65441D7A3706D5AE25041713D0A07ABA65441A4703D5A58E250419A9999A9ABA654417B14AEB757E250411F85EB41ABA65441666666C657E250410AD7A390AAA6544114AE474157E25041000000E0A9A654415C8FC29555E250417B14AEC7A8A654410AD7A3D055E25041000000A0A7A65441F6285C1F55E25041F6285C2FA6A6544185EB51B854E25041A4703D2AA7A6544185EB51F853E250410AD7A320A6A654416666669652E250417B14AEC7A5A65441D7A3707D51E2504133333383A4A6544152B81E2551E25041CDCCCCCCA4A654418FC2F5B851E25041E17A143EA6A6544114AE475151E25041CDCCCC0CA7A65441F6285C2F4FE25041A4703D2AA7A65441AE47E12A4DE2504152B81E25A8A654410AD7A3604EE2504166666616A8A65441333333434EE25041295C8F02A9A65441713D0AD74EE25041D7A3703DA9A6544152B81EE551E25041295C8F82A7A65441D7A3703D52E2504185EB5178A9A654413333337353E250411F85EB41ABA6544148E17A2454E250418FC2F528ADA6544148E17AE454E250410AD7A390ADA654411F85EBC155E25041CDCCCC7CAEA65441E17A14EE55E2504114AE4781B0A654418FC2F5E856E250410AD7A300B2A6544152B81E9558E25041CDCCCCECB2A654418FC2F5E856E250413D0AD713B4A65441B81E85CB56E25041EC51B80EB5A654418FC2F56855E2504100000000B5A654415C8FC2D554E25041C3F528ACB6A65441AE47E1DA53E25041295C8F22B7A654419A99996952E2504114AE4731B7A65441000000A053E25041D7A3701DB8A654415C8FC21554E2504148E17AC4B7A65441D7A3707D54E25041EC51B80EB8A65441D7A3707D54E25041CDCCCC9CB9A654415C8FC29555E2504133333313BAA654410AD7A3D055E2504166666666BBA65441B81E85CB56E250417B14AE17BCA6544152B81ED557E25041B81E85EBBBA654410000001058E25041295C8F52BCA65441EC51B8DE58E2504166666626BCA6544185EB512859E250418FC2F548BBA65441713D0AF759E250410AD7A3F0BAA654411F85EB315AE250417B14AED7B9A6544185EB51E859E25041713D0A67B8A654411F85EB715CE250415C8FC275B8A654418FC2F5D85CE25041713D0A27B9A65441CDCCCC6C5DE25041F6285CBFB8A654418FC2F5585EE25041CDCCCCDCB8A65441333333235DE25041EC51B88EB6A65441333333A35BE2504114AE47B1B5A65441AE47E18A5AE250413D0AD793B5A65441333333235AE250419A999909B6A654410000009059E2504114AE47B1B5A654419A99991959E250413D0AD7D3B4A654419A9999995AE25041F6285C4FB4A654415C8FC2855BE2504114AE47F1B4A654417B14AEE75CE2504152B81EC5B4A6544152B81E055DE25041B81E85BBB3A65441666666B65DE25041713D0A77B2A6544114AE47B15EE25041F6285C0FB2A654413D0AD7535FE2504133333323B1A654410000004060E250415C8FC205B1A654415C8FC2B560E250419A999999B1A654413333339361E25041E17A141EB2A654411F85EB2163E2504114AE47F1B4A65441B81E85EB64E25041CDCCCC2CB5A65441F6285CBF64E250413D0AD713B7A65441EC51B87E65E25041EC51B80EB8A65441295C8FD266E2504133333393B8A65441EC51B8BE67E250410AD7A3F0BAA65441713D0A9766E25041000000B0BBA654410000003066E250419A999939BEA654413D0AD74365E25041713D0A17BFA6544152B81EF565E25041A4703D6AC0A65441295C8F5265E2504152B81E65C1A6544114AE472166E25041295C8F82C1A65441713D0A9766E250413D0AD733C2A65441AE47E16A66E25041D7A3703DC3A654411F85EBE163E250413D0AD773C4A654418FC2F58863E25041C3F5280CC4A654410AD7A37062E25041295C8F82C4A654418FC2F5C862E250419A9999E9C4A65441E17A148E62E25041E17A142EC6A6544148E17A0463E2504148E17AA4C6A65441A4703DBA62E250411F85EB81C7A654413333331363E250413D0AD7E3C8A65441713D0A2762E2504114AE47C1C9A6544185EB515861E250413D0AD7A3C9A6544152B81E0560E25041295C8F72CAA6544114AE47B15EE250410AD7A300CCA65441713D0A375CE250419A999919CDA65441AE47E14A58E2504100000000D2A65441D7A370AD59E2504100000070D6A65441C3F528AC5FE250411F85EB01E0A65441B81E85BB5CE25041EC51B86EDFA65441AE47E1CA59E25041EC51B88EEAA65441333333235AE250411F85EBA1EFA6544114AE47415AE25041EC51B83EF4A65441295C8F7259E250417B14AE07F6A6544114AE478159E2504152B81EA5F7A654417B14AE7758E25041D7A370FDF7A654417B14AEF756E250413D0AD733F9A65441EC51B81E58E25041C3F5288CF9A654419A99991959E250415C8FC295FAA654416666668658E250411F85EB81FBA6544152B81E5556E2504185EB51F8FBA65441A4703D5A55E250410AD7A38001A75441713D0A8752E2504152B81E0505A7544114AE475151E2504152B81E0505A7544114AE479150E250417B14AEA705A75441B81E855B4FE2504114AE477107A75441000000F04CE250419A99994909A754418FC2F5084BE2504185EB515809A75441B81E856B49E2504185EB51D807A75441333333D346E250419A9999C907A75441EC51B82E47E25041CDCCCC3C06A75441AE47E18A45E25041E17A14DE02A754418FC2F55844E25041A4703D0A04A75441CDCCCC6C43E25041CDCCCCEC03A75441A4703D0A42E250417B14AEE704A7544185EB51F839E25041713D0A2707A75441295C8FC238E250419A99990907A754417B14AE0737E25041AE47E1BA07A75441B81E859B34E250415C8FC2F507A7544114AE47E12FE25041F6285CBF09A754419A9999492AE250410AD7A3300BA754417B14AEA729E2504185EB515809A754416666662631E250413D0AD79306A7544114AE473136E25041713D0A1706A75441C3F528BC34E25041E17A140EFDA65441
+</a>
+
+<b>
+01060000000100000001030000000100000077010000C3F528FC25E2504114AE47D105A754410721E6FE25E25041CF48884C06A754419C40E42826E25041619D55BA0AA754412622F61525E25041CA27F91F14A75441917CC84325E250410BDD190116A75441698404213FE25041AD70E8280CA75441AA75091D40E250414845EF2712A75441B91567AD2DE25041DB3860BF1AA754418A41DC3329E25041E6DE09171CA7544112407D0626E2504181448D331CA75441EDC0520324E25041A2B92B8028A754411F85EBF126E25041D7A370FD28A75441B29D92A52EE250412B64936828A754410000006036E25041333333D327A7544114AE472141E25041295C8FC226A75441666666C64BE250419A99993924A754413D0AD7634CE25041E17A140E24A7544152B81EF54BE25041F6285CFF22A754415C8FC2654DE2504152B81E4521A75441333333834DE250418FC2F55820A75441E17A14FE4FE25041295C8FE21FA754417291D2B850E250413FB4875920A75441149E784851E250413922B8AF20A75441A5C3E07851E25041453AF0A220A754414918C0D351E2504101FFF18A20A7544185EB513853E25041CDCCCC2C20A7544185EB51B854E25041E17A149E1EA75441CC6436EF54E25041FAF8DB9A1EA7544136DDBA0F55E25041CABC998A1EA75441749C785A55E2504159E790941EA75441333333B355E25041F6285C8F1EA754415C8FC2C557E2504152B81E551FA754412F9F938459E250419738F40A1BA7544114AE47C159E250415C8FC2751AA75441295C8FC25FE2504114AE473114A75441F71448C65FE25041D175652D14A754413333332361E2504114AE47C112A754419A99997962E25041C3F5285C11A7544185EB51D863E250411F85EB910FA75441AE47E1EA64E250411F85EBE10DA75441295C8F9264E25041EC51B8FE0BA754413D0AD74365E250413D0AD7030BA75441AE47E16A66E250413D0AD7030BA754417B14AE6767E25041295C8F9208A75441F9A1B38067E250418FD9C04F08A754417B5E9C4669E25041A30248DEFFA65441C47399356BE250411AD84D00FCA654414C4218006CE2504135D5CFAEFAA65441739B15C26DE250418310568DF6A654414901967E6DE250418651D80EF5A65441BDF49FEF6EE2504148A18F12F1A65441B9FDB01C6FE25041C003A819EDA65441F6285C1F6FE25041D7A370DDECA65441012E4A486FE25041F90D572CECA65441B79D91656FE25041CAE0A6ADEBA654417BB849896FE25041880A1913EBA6544148E17AA46FE25041D7A3709DEAA65441B81E85FB70E250413D0AD753E9A65441E17A141E72E25041A4703D4AE6A65441C3F5284C6FE25041D7A370ADE4A654410B8156FB6FE25041A2FBE4E9E2A65441A4703D1A70E25041A4703D9AE2A65441659F0FB470E25041D408A2D6E1A65441AF6F902F71E250417148F631E1A654419609FD3E71E250411226F725E1A65441F6285C5F71E25041CDCCCCFCE0A65441EC51B8DE72E250411F85EB01E0A65441C3F528BC73E250413D0AD7B3DDA65441713D0AB774E25041EC51B82EDDA65441A342928E74E2504121FD7EE9DAA65441E5658B8674E250414CD4FFDDDAA654412F3E568C74E25041F87D67C9DAA65441AE47E18A74E2504148E17AB4DAA65441AE47E14A75E25041000000F0D7A654416666663679E250418FC2F518D0A65441F6A2EEA479E25041560C999BCDA65441C3F528AC79E250411F85EB71CDA654412240FED57BE250415C5A6867C6A654418BB5EC5D7CE250417C1BEE6BC4A65441713D0A277CE250410AD7A3A0C1A6544199D59ED37BE2504195765594C0A65441B5CEACA17BE2504111BB3E1AC0A65441B98E6DE37AE25041157BFF5BBFA65441E17A148E7AE250417B14AE17BFA654414B4924327AE2504111725C13BFA654412E6E8AC779E25041A3993E1CBFA654419602351E79E250417FA84F0BBFA65441C3F5284C76E2504148E17AE4BEA654413D0AD7A372E2504152B81E65C1A654410AD7A35071E2504114AE4751C2A65441CDCCCCDC6DE250411F85EB11C2A654418529C6F16BE2504102286B5EC1A65441A4703DEA6AE25041E17A14FEC0A65441A4703DEA6AE250419595EED6C0A65441D57888E56AE25041D81783D4C0A65441A4703DEA6AE25041E30B64B5BFA65441A4703DEA6AE250419A9999B9BCA654413D0AD7336BE2504114AE4761BCA65441C8FFCB536AE2504133D8BBB4B9A65441A4703D2A6AE250415C8FC235B9A654415C8FC22568E25041333333D3B7A65441376B480368E25041EEAAE77AB7A654416D7CFF7467E25041264F1B50B6A65441A1C6542067E25041AE7B4E1DB6A6544170D0184E67E250413963E4AAB5A654419A99993967E2504166666676B5A654412CEAFAEC66E2504176FA6405B5A65441FF5AFF7666E25041F2D0D697B4A654417883241E66E25041EFFD51D7B3A654414B4750B265E2504170DFF69EB3A65441AFC0BC7465E250412B33C87EB3A6544129BF98E064E25041B9F92B45B3A65441BB9D98E263E25041F7F54D25B2A654415F854C7863E250412B56855CB1A65441F32696B462E250418DF5C97EB0A65441F6285CBF61E250418FC2F568AFA65441B695C9FA5FE25041F2FB6906ADA65441E27DB0A65FE25041D404F694ACA654418FC2F5185FE250415C8FC2D5ABA65441666666B65DE2504133333373AAA65441F6285C4F5DE250413D0AD7F3A8A65441333333635CE25041C3F5284CA9A654411F85EBB15BE250415C8FC255AAA65441E17A141E5BE250415C8FC255AAA65441D7A3706D5AE25041713D0A07ABA65441A4703D5A58E250419A9999A9ABA6544149677F5158E25041DC3006A4ABA6544149D1523E58E2504121A4D5A9ABA65441FA47DBB657E2504156EE2A55ABA6544125F2D5BB57E25041720C9244ABA654417B14AEB757E250411F85EB41ABA65441666666C657E250410AD7A390AAA65441E0A1A86257E25041947E4A0CAAA654413B02133857E25041E9C1F6D9A9A654418145490557E2504192AAA9B8A9A654411D0BC20157E25041106E59B6A9A654413944FD9656E25041CE8D087BA9A65441200E4C0D56E25041DC210F16A9A654415C8FC29555E250417B14AEC7A8A654410AD7A3D055E25041000000A0A7A65441307AB47E55E25041875C9FF5A6A65441F6285C1F55E25041F6285C2FA6A65441EF8C38D254E25041D34B2DEBA6A65441BCE3DABC54E2504156864C3BA7A654414F6B85A754E25041F3690013A7A6544185EB51F853E250410AD7A320A6A654416666669652E250417B14AEC7A5A654417DEE61F351E25041595B690BA5A65441D7A3707D51E2504133333383A4A654411930D23351E25041AC938CC0A4A6544161D4DE2751E25041CC8CABD3A4A654418FC2F5B851E25041E17A143EA6A6544114AE475151E25041CDCCCC0CA7A65441F6285C2F4FE25041A4703D2AA7A65441AE47E12A4DE2504152B81E25A8A654410AD7A3604EE2504166666616A8A65441333333434EE25041295C8F02A9A65441713D0AD74EE25041D7A3703DA9A6544152B81EE551E25041295C8F82A7A65441D7A3703D52E2504185EB5178A9A654413333337353E250411F85EB41ABA65441C5D304DD53E25041BDA5A264ACA654414969742454E25041AE5D5E1EADA65441AC8A742255E25041FDE6D5A5ADA65441586113A955E250415CE04D62AEA654411F85EBC155E25041CDCCCC7CAEA65441418EB9C255E250418E853686AEA654414EF6C9CB55E250413B17E792AEA65441E17A14EE55E2504114AE4781B0A654418FC2F5E856E250410AD7A300B2A654414478ECA358E25041ED4381F0B2A654418FC2F5E856E250413D0AD713B4A65441E008B9DA56E25041ED7770FDB4A65441767969CD56E250412CC798FEB4A65441B81E85CB56E25041EC51B80EB5A654414D324D4F56E250414B1B9009B5A654416FFE785E55E25041EE2A811EB5A65441119B7A1D55E25041CF2C8DDBB5A654415C8FC2D554E25041C3F528ACB6A65441AE47E1DA53E25041295C8F22B7A654419D983B7952E25041657F2C3DB7A65441585F572353E250412AB998BEB7A65441D8E9EE9353E250410264280EB8A65441F586960254E25041B308A4C4B7A65441A098270D54E250415113FBCAB7A654415C8FC21554E2504148E17AC4B7A65441D7A3707D54E25041EC51B80EB8A65441D7A3707D54E25041CDCCCC9CB9A654415C8FC29555E2504133333313BAA654410AD7A3D055E2504166666666BBA654418F0C66C056E25041283FD20FBCA65441BC17CAC956E2504136444F11BCA65441550B157C57E2504171E952FABBA6544152B81ED557E25041B81E85EBBBA65441C1BEE3D657E25041F6E99DEEBBA654415A67BCDA57E2504169F81EEEBBA65441F7B3A32958E25041EC34154DBCA65441EC51B8DE58E2504166666626BCA6544185EB512859E250418FC2F548BBA65441DA66F44B59E25041A43ABC39BBA65441DBE3414D59E250411C052D35BBA654413F1028AB59E250418E910F11BBA65441713D0AF759E250410AD7A3F0BAA654411F85EB315AE250417B14AED7B9A6544185EB51E859E25041713D0A67B8A654411F85EB715CE250415C8FC275B8A654418FC2F5D85CE25041713D0A27B9A65441CDCCCC6C5DE25041F6285CBFB8A65441F1FED13F5EE250417582AAD9B8A654416CAC294C5EE250419FFD6BC4B8A65441EA45E5BD5DE2504100A268B5B7A65441392EFE885DE25041E852F96FB7A65441F8E0B5085DE250411AC2717FB6A65441016DA6565CE25041DA4CC318B6A6544123FE30E95BE250411846A4D9B5A65441D8C843AE5BE250411A23A9B7B5A65441978EB9D25AE2504184E3C5A6B5A654412414533A5AE250415B9970FBB5A65441C78948335AE25041FF1D55F7B5A65441333333235AE250419A999909B6A654410000009059E2504114AE47B1B5A65441A5EF6B7C59E2504112C4A98CB5A654412EC61F6F59E250413B01E884B5A65441A4BB166759E2504110D7C364B5A654419A99991959E250413D0AD7D3B4A6544101E6943F59E250418480BCC6B4A65441B6F2523C59E2504146B3B4B9B4A65441F0C9FD8E5AE25041261B2C43B4A65441E3C7F5B95AE250417E198C65B4A654415C8FC2855BE2504114AE47F1B4A65441F4A2BCB55CE25041AB025ACBB4A6544108A338EA5CE25041DD9031AEB4A6544152B81E055DE25041B81E85BBB3A65441FA9A86065DE25041AA69F2B8B3A65441EC340E045DE250418394CE8AB3A65441595631875DE25041CFD471CDB2A65441666666B65DE25041713D0A77B2A65441D3ED17C85DE25041C057BA6FB2A65441E0F2B9CC5DE250419FBA0969B2A65441017170BB5EE250416BE39900B2A654413D0AD7535FE2504133333323B1A65441D62F7F675FE25041E4E2BF20B1A654410A71FE845FE25041120181F4B0A65441FFBE315060E25041E20F92E3B0A65441A258D3E860E25041F1EDA59DB1A654416887CBB361E25041F7F54D25B2A654411F85EB2163E2504114AE47F1B4A65441B81E85EB64E25041CDCCCC2CB5A6544137B282D764E2504146F07B09B6A6544129BF98E064E25041408E3D2CB7A65441F01BDD9A65E250415BCD5F08B8A65441F5826EF665E25041F123633DB8A65441295C8FD266E2504133333393B8A65441EC51B8BE67E250410AD7A3F0BAA65441ED9D32A167E25041B314BF03BBA654414831C09066E25041C64CA6D7BBA654410000003066E250419A999939BEA65441CEEDF95965E2504162924802BFA65441B16EFCA265E250410FA316CDBFA6544152B81EF565E25041A4703D6AC0A654410579B0E465E25041A2F89883C0A65441BBD187EF65E250416044B6A1C0A65441EA83136765E2504112087545C1A65441295C8F5265E2504152B81E65C1A6544114AE472166E25041295C8F82C1A65441BAFA4E4E66E2504119F558C6C1A65441822ECCA966E2504165D10B49C2A65441A3BF9F9366E250418EA96248C2A65441AE47E16A66E25041D7A3703DC3A654411F85EBE163E250413D0AD773C4A65441818E25DE63E25041B13D716FC4A6544168BBBAC063E25041B8E7D877C4A65441C1F6FE7C63E25041BD403F12C4A65441CA92D07362E25041878C4386C4A654418FC2F5C862E250419A9999E9C4A6544106F993C762E25041934637F1C4A654411F8BA9D362E25041077150FFC4A65441C1683DB162E250419E88516CC5A65441E17A148E62E25041E17A142EC6A65441BFE6C7E062E25041BFE6C780C6A65441A15E760663E25041E70CB795C6A65441C3BC450363E25041C3BC45A3C6A6544148E17A0463E2504148E17AA4C6A6544176257AFF62E25041E9FF66B3C6A65441642FE7C462E25041BE9557ACC7A654413333331363E250413D0AD7E3C8A65441713D0A2762E2504114AE47C1C9A6544185EB515861E250413D0AD7A3C9A6544152B81E0560E25041295C8F72CAA654419F6720455FE2504186CC7453CBA6544114AE47B15EE250410AD7A300CCA65441543C0D6F5DE250415A06628FCCA65441713D0A375CE250419A999919CDA65441AE47E14A58E2504100000000D2A65441D7A370AD59E2504100000070D6A65441C3F528AC5FE250411F85EB01E0A65441608B0C965FE25041487798FDDFA65441539DA79D5FE250414E63DC09E0A65441D0F681C05CE250410D546580DFA654418FC1EB9D5CE250410F2BB9DEDFA65441AE47E1CA59E25041EC51B88EEAA65441333333235AE250411F85EBA1EFA6544114AE47415AE25041EC51B83EF4A654412CE4803F5AE2504175A4A542F4A65441295C8F7259E250417B14AE07F6A65441951F237459E250410990FA33F6A65441CD20F17559E2504127DFAA66F6A6544114AE478159E2504152B81EA5F7A654417B14AE7758E25041D7A370FDF7A65441164B36E357E25041D6997375F8A6544102CCC46157E250416EBE15DEF8A65441E20E6BFA56E25041846AA031F9A65441EC51B81E58E25041C3F5288CF9A654419ADFBA3D58E25041BB4BFDACF9A654419A99991959E250415C8FC295FAA6544126D3F89858E25041D7C41F64FBA654416666668658E250411F85EB81FBA654414E75126158E25041CA4FCB89FBA654410C7DC97458E25041FDC5669AFBA654413F1A0F4458E25041EA15EA8FFBA6544152B81E5556E2504185EB51F8FBA6544156CF2EEC55E250414DA8BB48FEA65441BFD4917455E25041EB94FFEB00A754411F7CD16955E250416D6D848201A75441AF34FA3354E25041F03909EF02A75441713D0A8752E2504152B81E0505A754414289016E52E2504152B81E0505A75441317BD95E52E25041917DF31605A75441C8C689AC51E2504152B81E0505A7544136A8C17251E2504152B81E0505A754412500628F50E25041A38F7BAA05A75441B81E855B4FE2504114AE477107A75441000000F04CE250419A99994909A75441F88628D44CE250413304714A09A754418C8860D24CE250412ACAC24B09A75441F3A280A84CE250412ACAC24B09A754418FC2F5084BE2504185EB515809A75441E82270FB4AE250412ACAC24B09A7544114A656DA4AE250412ACAC24B09A75441A5ACDDD34AE250411FB1012709A75441B81E856B49E2504185EB51D807A754411E03AE1048E25041AD7CA2D007A75441333333D346E250419A9999C907A75441D03CA7F446E25041D0CE8E3807A75441EC51B82E47E25041CDCCCC3C06A754411D8BB1F545E25041539B91B903A75441E8B4D9AE45E2504183ACFE2703A75441DA0DB07B45E25041AF4017F102A75441A41CAB7F44E25041255F050404A7544137614C5F44E25041255F050404A754418FC2F55844E25041A4703D0A04A75441619A122744E25041255F050404A754410A8BFB4B43E25041255F050404A75441A4703D0A42E250417B14AEE704A75441652329A541E2504169A5D40305A75441E0A2F23340E250416632987205A75441355AD4CE3FE250411C74D18605A7544185EB51F839E25041713D0A2707A75441295C8FC238E250419A99990907A754417B14AE0737E25041AE47E1BA07A7544191FC58C634E25041719DB1F107A754415FAE899134E250414951020B08A7544130DAFE1730E250412AAC50BE09A75441B72449432AE25041EDB15D400BA754419CBEC1C629E25041F48FF8B209A754417B14AEA729E2504185EB515809A7544137C012AA29E2504193B16F5709A754418A236AA629E250411FCAC24B09A75441828DADDA2DE25041019261CB07A754416666662631E250413D0AD79306A75441E8D4FCB731E25041E9CCC38506A75441C17BBF2536E25041F6A88DCF05A75441C3F528BC34E25041E17A140EFDA65441CDCCCC9C24E250418FC2F54800A75441C3F528FC25E2504114AE47D105A75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 410313
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441295C8F6205E75041295C8FA22BAA5441666666D604E7504148E17A942AAA5441C3F5282C04E75041AE47E13A2AAA5441295C8F8203E75041295C8FE227AA5441666666A602E750418FC2F58827AA54416666664603E75041CDCCCCFC26AA544185EB51C803E750418FC2F51824AA5441295C8F0201E750410AD7A3B022AA5441666666D6FFE6504148E17AF424AA544148E17AC4FDE65041EC51B8AE24AA5441EC51B8FEFAE6504148E17A4425AA5441295C8FD2F9E65041EC51B8AE24AA544185EB5188F8E65041CDCCCCCC24AA5441EC51B88EF7E65041CDCCCCBC25AA5441295C8F62F1E650410AD7A33025AA544185EB51A8E7E65041295C8F0221AA5441C3F5281CE7E650418FC2F54821AA544101030000000100000080010000A4703D1A94E65041666666263EAA5441C3F5288C95E6504148E17A643CAA54410AD7A31094E650418FC2F5183DAA5441A4703D7A93E65041EC51B84E39AA544185EB512895E65041295C8F7238AA5441666666D696E6504148E17A5438AA5441A4703D4A96E65041CDCCCC6C34AA54416666660699E650418FC2F55834AA544148E17AC499E65041EC51B85E33AA544148E17A549BE65041EC51B80E33AA5441E17A145E9BE65041295C8FA235AA54410AD7A3609EE65041CDCCCC4C36AA54410AD7A3F09FE6504148E17A3435AA5441A4703DAA9FE650416666662634AA54410AD7A3F09FE650410AD7A34033AA5441A4703D3AA1E65041666666F631AA544185EB51E8A2E650410AD7A31031AA544185EB51D8A3E65041AE47E11A31AA5441295C8F32A4E65041CDCCCC5C30AA544185EB51A8A6E65041666666A631AA544148E17A84A7E650410AD7A36031AA5441C3F5284CA8E650410AD7A32030AA5441A4703D0AA9E650410AD7A32030AA5441295C8F32A9E650418FC2F5B82EAA5441295C8F72AAE65041295C8FD22DAA54410AD7A320ACE65041EC51B8DE2BAA5441295C8FC2AAE6504148E17AB428AA54410AD7A3C0ACE65041CDCCCCDC28AA544148E17A04AFE6504148E17A1428AA544185EB5158B0E65041AE47E11A27AA5441EC51B8EEB0E6504148E17A4425AA54410AD7A350B3E650410AD7A30028AA5441EC51B81EB3E65041CDCCCC3C28AA5441C3F5281CB5E65041EC51B84E2AAA544166666656B7E650418FC2F5482BAA5441C3F5289CB7E65041AE47E13A2AAA54410AD7A3C0B6E650416666669628AA544166666606B7E65041EC51B82E27AA5441A4703D4AB9E65041666666A627AA544166666646B8E65041AE47E1CA26AA544148E17AA4B9E650416666669623AA544185EB5148BBE650410AD7A34024AA5441A4703D6AB7E65041AE47E12A21AA5441666666E6B8E6504148E17A141EAA54410AD7A330BAE65041AE47E1AA1EAA544148E17AC4BCE65041EC51B81E1EAA54410AD7A300BDE6504148E17AD41CAA5441295C8F72BEE65041295C8FB21BAA5441C3F5286CBFE65041EC51B8DE1CAA5441295C8F42C1E6504148E17A441BAA544185EB5188C1E65041EC51B87E18AA54410AD7A3A0C2E65041AE47E11A18AA544166666616C5E65041EC51B87E18AA544185EB51D8C6E650416666669619AA5441A4703DFAC7E6504148E17AB419AA5441A4703D3AC9E65041EC51B8AE1AAA5441A4703D1ACBE65041295C8F121BAA544185EB51A8CEE65041295C8F721AAA544185EB5188D0E650416666669619AA5441EC51B84ED3E6504148E17A941BAA5441A4703DEAD2E650410AD7A3001EAA5441A4703D0AD6E650410AD7A3201CAA5441C3F528CCD7E65041AE47E1CA1CAA544185EB5108DDE65041CDCCCC0C1CAA54410AD7A3F0D6E650410AD7A3A019AA5441295C8F92D5E65041CDCCCC7C1AAA544166666676D3E65041EC51B80E1AAA544148E17AA4D2E65041AE47E15A19AA5441295C8F22D2E650418FC2F58818AA54410AD7A350D1E65041AE47E18A16AA544148E17A34CFE650410AD7A39015AA5441713D0A77CBE650416666664613AA544185EB5168C8E650410AD7A32012AA544166666616C5E65041EC51B85E10AA5441295C8FB2BFE65041CDCCCCEC0EAA54410AD7A370BBE650418FC2F5D80EAA5441295C8F12BAE65041295C8F6211AA54410AD7A390B9E65041295C8FB211AA5441295C8F82B8E650416666660613AA5441EC51B86EB8E6504148E17A7413AA5441A4703D0AB8E65041AE47E10A14AA5441A4703D6AB7E65041295C8F3214AA5441EC51B89EB5E6504148E17A4416AA544185EB51C8B3E65041AE47E17A17AA544185EB5198B1E650418FC2F52819AA5441295C8FB2B0E650418FC2F52819AA5441EC51B8FEAFE65041EC51B8BE19AA5441C3F5283CAEE65041295C8F521CAA544148E17AD4ACE65041AE47E1CA1CAA5441295C8FB2ABE65041EC51B86E1EAA5441A4703D8AABE6504148E17A041FAA5441295C8F22AAE65041AE47E1DA20AA5441295C8F82A9E6504148E17AA424AA5441295C8F12A6E65041666666D629AA5441295C8F32A4E65041EC51B8DE2BAA5441E17A149EA1E650418FC2F5382CAA5441666666969FE650410AD7A3B02CAA5441C3F5286C9CE65041295C8F222EAA54410AD7A38097E650410AD7A3002DAA5441A4703D3A97E65041EC51B87E2CAA544185EB512895E65041CDCCCC4C2CAA544185EB51E893E650410AD7A3502DAA5441A4703D3A92E65041666666762FAA54410AD7A30090E65041295C8FA230AA5441C3F5289C8FE6504148E17A2431AA5441E17A145E8CE65041EC51B8AE33AA544185EB51888AE65041CDCCCC1C34AA544148E17A1486E650418FC2F5D836AA5441C3F5280C84E65041EC51B86E37AA544185EB51C881E65041295C8F7238AA5441295C8FF27FE6504148E17AA438AA5441E17A14AE7DE650418FC2F55839AA544185EB51287CE65041AE47E17A3AAA544185EB515879E65041666666563BAA5441666666E677E650410AD7A3103BAA5441295C8F5275E65041295C8F923BAA54410AD7A35072E65041EC51B8BE3CAA5441E17A148E70E65041295C8FC23DAA5441A4703D5A6DE650418FC2F5A83EAA54410AD7A3C06BE6504148E17A543DAA5441295C8F2269E65041EC51B83E3FAA5441C3F528EC67E650410AD7A3D03EAA5441C3F528AC66E65041CDCCCC5C3FAA544148E17A4465E6504148E17A943EAA5441295C8FE262E65041666666163FAA5441A4703DEA5FE65041EC51B87E40AA5441A4703D5A5EE65041666666A640AA5441666666565DE650410AD7A3203FAA5441C3F528EC53E65041AE47E19A3DAA5441E17A144E51E65041295C8F723DAA544148E17AB44FE65041666666663AAA5441295C8F124CE65041AE47E13A39AA5441C3F5283C4AE650410AD7A34038AA54416666666648E65041295C8F2238AA544148E17A9447E65041AE47E14A38AA5441295C8FB247E65041666666B635AA544185EB510847E65041AE47E1CA35AA5441E17A14AE46E650418FC2F53836AA5441A4703DDA42E65041295C8F8237AA5441E17A145E41E65041666666A636AA544185EB51C83BE65041CDCCCC3C37AA544148E17A0437E65041666666B635AA5441295C8F3236E650416666663633AA544148E17A8434E65041295C8F1234AA544148E17AE433E6504148E17A5433AA544185EB51C831E65041AE47E15A32AA5441C3F5286C2EE65041AE47E1AA32AA5441666666E62CE6504148E17AA42EAA54410AD7A3702AE65041EC51B82E2CAA5441666666E627E65041295C8FF22BAA54416666666625E65041CDCCCCFC2BAA5441E17A14EE24E650418FC2F5F82AAA544185EB518821E65041666666162BAA5441C3F5283C1DE65041666666A627AA544185EB51D817E65041EC51B84E25AA5441A4703DBA17E650410AD7A39024AA54410AD7A37016E650410AD7A35023AA5441C3F5280C16E650416666665622AA5441A4703DEA14E65041295C8FF221AA5441E17A144E15E65041EC51B81E1EAA5441E17A140E14E650410AD7A3D01BAA5441C3F5288C0EE65041AE47E11A1DAA544185EB51880DE65041666666661CAA54410AD7A3100DE650410AD7A3F019AA5441A4703D5A0EE650416666661617AA5441E17A14DE0CE65041CDCCCC6C16AA544185EB511800E65041CDCCCCEC13AA544166666656FEE55041295C8F2215AA5441C3F5284CFEE55041666666D615AA5441A4703D2A02E65041EC51B8FE15AA5441C3F528CC05E65041295C8F4218AA544148E17AA40AE65041666666361AAA544185EB51680AE650418FC2F5981CAA5441A4703D2A0CE65041CDCCCC1C1BAA544148E17A340CE65041295C8F021CAA5441666666560DE65041666666561DAA544148E17AB40EE65041666666B621AA544148E17A640EE65041295C8FA221AA5441C3F5282C0AE65041666666061DAA544166666676F7E5504148E17AE41BAA544185EB51B8F6E55041295C8FE222AA5441295C8F72F6E5504148E17A6423AA5441E17A146EF5E55041295C8FE222AA544148E17A54F6E5504148E17A3421AA5441C3F528FCF3E550418FC2F5C81EAA54410AD7A370F3E55041666666E61EAA5441666666D6F1E5504148E17A241DAA544166666686F1E55041666666261BAA544166666666EEE550416666668615AA54410AD7A320EEE550410AD7A3B013AA5441A4703D4AECE55041295C8F1211AA5441666666F6EAE550418FC2F5E80DAA544148E17AC4EAE55041EC51B86E0AAA544185EB5168E7E55041295C8FC206AA544148E17AD4E4E5504148E17AE402AA544185EB5108E3E55041295C8F2201AA544185EB5128E1E55041295C8FA2FEA95441C3F528ECE0E55041EC51B84EFDA95441666666D6DDE55041CDCCCC3CFBA95441C3F528CCDDE5504166666666F9A9544148E17A64DCE55041EC51B82EF5A95441A4703DAADCE55041666666D6F2A9544185EB51D8DBE550418FC2F528F1A95441295C8F42DBE550410AD7A310F0A95441666666D6D8E55041CDCCCC1CEEA95441C3F528BCD9E55041AE47E1BAEBA95441E17A14EED9E55041AE47E1DAE9A954415C8FC2D5DDE5504152B81E25E8A95441295C8FE2DBE55041AE47E1AAE5A95441333333F3D7E5504133333363DDA954410AD7A350D9E5504166666606DCA95441E17A149ED9E550419A999999D9A9544185EB5128D7E5504148E17AA4D4A9544166666606D6E55041CDCCCC8CD3A95441A4703D3AD4E5504148E17AE4D0A9544185EB5198D0E550410AD7A350CEA9544148E17A54CFE55041295C8F72CAA9544133333353CFE5504114AE47B1CBA9544148E17A64D0E5504114AE4731D0A9544185EB5198D0E55041EC51B8CED7A9544148E17AE4CFE5504148E17A14D8A9544166666636CEE5504166666676DAA95441A4703D1ACCE5504148E17A94DAA954410AD7A3D0CAE55041AE47E12ADBA95441C3F528ACCBE55041666666E6DDA9544166666676CAE550418FC2F5A8DFA95441C3F528BCC5E55041AE47E1FAE2A95441E17A145EC4E55041EC51B8AEE3A95441295C8FD2C3E55041EC51B88EE5A95441C3F5287CBFE55041AE47E18AE9A9544148E17AE4BBE55041AE47E10AECA95441295C8FC2BAE5504166666646ECA954410AD7A390BAE55041EC51B85EEDA95441A4703DDAB6E55041CDCCCC5CEFA954415C8FC2D5B4E5504100000020EFA9544133333383B0E55041D7A370EDF0A95441E17A145EB0E55041295C8F62F3A95441C3F5283CB1E55041295C8F92F4A95441295C8F02B2E55041AE47E1AAF6A95441666666A6B8E55041AE47E1BAFFA95441C3F528DCB9E55041AE47E1BAFFA95441E17A145EBAE55041EC51B8BE00AA54419A999969BAE55041713D0AF701AA54415C8FC275BCE5504185EB51F804AA54418FC2F558C0E55041E17A14DE0AAA5441AE47E1DAC5E55041CDCCCC9C05AA544100000040C7E55041666666B605AA5441A4703DAAD2E550410AD7A3F0FBA95441A4703D6AD1E55041CDCCCC5CF9A9544148E17A74D6E5504148E17A54F7A9544148E17A44D9E55041EC51B8FEF7A9544185EB5198DAE55041666666A6FAA95441A4703DAADCE55041CDCCCC6CFDA9544166666606E0E55041666666E600AA5441C3F528FCDFE55041EC51B8EE02AA5441295C8FA2E0E550413333338307AA5441F6285C4FE7E55041EC51B89E12AA54410AD7A3D0E8E550416666668615AA5441295C8F82E1E55041EC51B84E16AA5441295C8F42E5E55041666666D61AAA5441295C8F12E8E5504148E17A841CAA5441C3F5286CE8E55041666666561DAA54410AD7A3C0E4E550410AD7A3901FAA5441295C8F22E2E55041666666461EAA5441A4703D1AD6E55041AE47E1EA29AA544148E17AC4D6E55041295C8FB22AAA54411F85EB81D6E55041C3F528DC2BAA5441CDCCCC3CD4E55041AE47E1FA2CAA5441D7A3704DD2E5504114AE47A12EAA5441295C8FD2D2E55041D7A370AD2FAA5441295C8FC2D3E55041EC51B84E2FAA544166666666D5E55041CDCCCC8C32AA5441E17A149ED4E55041CDCCCC2C33AA5441295C8F52D5E55041CDCCCCBC34AA544148E17A84DFE550418FC2F5D82CAA544185EB51C8E1E5504148E17AF429AA544185EB5158E3E550410AD7A3302AAA544166666676E8E55041EC51B8FE24AA5441C3F5282CECE550418FC2F54826AA5441295C8F12EDE5504148E17A1428AA5441666666D6ECE55041AE47E14A29AA54410AD7A330E8E55041666666462DAA544148E17A94E8E55041295C8FC22EAA5441C3F528DCE6E550410AD7A3802FAA5441A4703DCAE4E550418FC2F58831AA544185EB51A8E3E550416666665631AA54410AD7A330DEE55041295C8FE236AA5441295C8F12DEE55041CDCCCC1C39AA5441E17A145EDDE55041EC51B8EE39AA54410AD7A3D0D8E55041000000803CAA544114AE47C1DBE5504114AE475144AA5441A4703DBADBE55041EC51B85E42AA5441A4703D9ADDE550410AD7A3A041AA544166666656E0E55041AE47E13A3EAA5441D7A370CDE1E55041B81E859B3EAA5441B81E85EBE9E5504114AE47F136AA544185EB5198E9E550418FC2F58836AA5441666666F6EAE55041666666E632AA544148E17A84EEE5504148E17A2431AA5441666666C6EDE55041AE47E18A2FAA5441295C8FF2EEE5504148E17AE42FAA54410AD7A3B0F4E55041666666662BAA5441E17A140EF6E55041CDCCCC5C2BAA5441666666D6F6E55041EC51B87E2CAA5441C3F528CCFBE55041295C8F622FAA5441A4703D7AFDE55041AE47E1AA32AA544185EB5178FFE55041CDCCCC3C32AA5441A4703D1AFEE55041295C8F9231AA5441295C8F42FEE55041666666B630AA5441C3F5285CFDE55041AE47E1EA2EAA544166666676FCE55041295C8FD22DAA5441E17A146EFAE55041666666062CAA544148E17AA4FBE55041CDCCCCBC2AAA544148E17AC4F9E550416666669628AA5441E17A143EF8E5504148E17A5424AA5441A4703DEAF6E550416666669623AA5441666666E60EE650418FC2F53822AA5441666666D60FE650410AD7A38025AA5441C3F528BC10E65041CDCCCC1C25AA5441295C8F2214E65041CDCCCC9C27AA5441C3F5287C14E650410AD7A3302AAA5441A4703DDA15E65041295C8F422CAA5441E17A14DE16E6504148E17A542EAA5441A4703DFA18E65041AE47E13A2FAA5441666666661BE650418FC2F5B82EAA54410AD7A3D01AE65041AE47E13A2FAA5441E17A14BE1DE65041AE47E10A32AA54410AD7A3C020E650410AD7A35032AA5441A4703D1A21E65041EC51B84E34AA544148E17A8425E65041295C8F1234AA544185EB518826E65041AE47E18A34AA54410AD7A3202AE65041295C8F6234AA54410AD7A3602BE65041295C8F023AAA54410AD7A3202FE650418FC2F5E83AAA544185EB51F833E65041AE47E14A3DAA5441A4703D8A33E65041295C8F523FAA54416666666634E65041295C8F4240AA54410AD7A3103AE65041CDCCCC6C3EAA5441E17A144E3DE65041EC51B8EE3EAA5441C3F5287C3CE65041295C8F7242AA54410AD7A3D03DE650410AD7A32044AA5441C3F5280C3EE65041CDCCCCBC43AA5441C3F528FC3EE6504148E17AD444AA544185EB51A842E65041CDCCCC1C43AA544148E17AD443E6504148E17A4443AA54410AD7A33047E650416666666644AA5441E17A142E49E650410AD7A35046AA544185EB51184BE650418FC2F51847AA5441A4703D4A4BE65041AE47E19A47AA5441E17A149E4CE650410AD7A33048AA5441C3F5284C4EE650418FC2F57841AA5441C3F5289C53E650418FC2F5B842AA5441C3F5281C56E65041CDCCCC0C44AA544148E17A2458E65041295C8F8241AA54410AD7A35059E65041AE47E14A42AA5441666666765BE650418FC2F51842AA5441295C8FF25CE65041AE47E13A43AA544148E17AF464E65041295C8FD241AA5441E17A144E65E6504148E17A5442AA54410AD7A3C066E65041CDCCCCDC41AA5441A4703DCA66E6504148E17A1441AA5441C3F528EC67E65041CDCCCCAC3FAA544185EB512868E65041EC51B81E41AA5441A4703DEA69E65041EC51B80E42AA5441295C8FA26BE650410AD7A3B040AA5441E17A141E6DE650416666668642AA544148E17AB46DE650410AD7A34042AA5441C3F5282C6EE650410AD7A3B040AA5441295C8FE271E6504148E17AB441AA54410AD7A39078E65041EC51B81E41AA5441A4703DEA78E65041CDCCCC2C42AA54410AD7A3207AE65041EC51B85E42AA5441295C8F027FE65041AE47E1CA3FAA5441666666B67FE65041CDCCCC9C40AA54416666662683E65041EC51B86E3CAA54410AD7A31085E650410AD7A3603BAA5441E17A14AE87E65041CDCCCC4C3BAA544148E17A8489E65041666666863DAA5441C3F528AC8EE650410AD7A3F03CAA5441A4703D6A8FE65041CDCCCC2C3DAA5441E17A146E90E650418FC2F5B83DAA5441A4703D8A92E650410AD7A3003CAA54410AD7A32093E650418FC2F5B83DAA5441A4703D1A94E65041666666263EAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000004000000066666666EEE550416666668615AA544159E3563AEEE55041A0C9B25D14AA5441D2306515ECE55041846E69E013AA54412F6CAA4AE7E5504139D76EC812AA5441E6ECF8D8E8E550413936319115AA5441D1A825B9E1E550419D23DD4D16AA544167468168E5E55041D2FFD1E31AAA544151AE5FF2E7E55041FC3133481CAA5441794A1E85E8E550411EBFB9581DAA5441B9D9233AE6E55041054624A81EAA5441070E223DE6E55041B0660FAF1EAA5441E5E81A4AE6E55041E22D04A81EAA5441534B69AAE7E550411B476CFB21AA54410B0B8F8EE8E55041B8B3CC0A24AA544199839E8EE8E550419DBBBC0A24AA54417ACDE1F1E8E55041D4D4D15F24AA544184F032B5EAE55041122D95C625AA54414E9C53C1EAE55041A3B2CCCA25AA54413696AC1EECE55041A982132A26AA5441CB5E002DECE550413B62A34A26AA544106875FAEECE55041EDB3A94C27AA544119BACA67F3E55041D37FAA672CAA54411EAB712AF4E55041FB8462CF2BAA5441260DC18EF4E55041BBF8726E2BAA544115ED41AAF4E55041BDA6646B2BAA54410AD7A3B0F4E55041666666662BAA5441CF40DCE3F4E550413B2BFE642BAA544149E51808F6E55041E5A485442BAA54412966142DF7E550417B287A9F2CAA54418D3AA34EF9E5504132646DB92DAA544163CD4EF2F9E550418803F4162EAA5441E7722074FAE550419CAB22612EAA54419EF36E02FCE550411A36A9712FAA544190A75255FDE55041CDAEBF6232AA5441A4703D7AFDE55041AE47E1AA32AA54416AFDFA15FEE550419A0F458932AA5441A8C2A350FFE550411000812932AA5441EC6177FFFEE55041F7BB070232AA5441F467850EFEE550413BFEACA731AA544125B97238FEE55041A5BF13C130AA5441D225D066FDE55041BDEDD7082FAA54417B994F75FCE550416D31A6DD2DAA5441111F334AFAE55041499231012CAA5441A8A89D99FBE55041570BC7B12AAA54418E8574B7F9E5504179EEB99028AA5441A2F07A43F8E55041445D966324AA544117495A75F5E550417C823EEA22AA54411DE9E976F5E55041124CF7E622AA5441E17A146EF5E55041295C8FE222AA5441E56377D0F5E5504156CBE72A22AA54410EDFFC46F6E5504194B0023221AA54416C8AB2EAF3E55041390FA5CC1EAA5441DD67ACE7F3E55041BA6848CD1EAA54415A439072F3E55041972C5B1B1FAA54416E5B8520F2E550411E2BC5751DAA5441666666D6F1E5504148E17A241DAA54415EEB39D4F1E550416EC29E161DAA544177ABFEC5F1E55041601FDF041DAA5441BF26718DF1E5504134BE4C531BAA544166666686F1E55041666666261BAA54412307341DF1E55041F4BA0B691AAA5441E914E079EEE5504139D410C915AA5441342A7C75EEE55041A7938DA115AA544166666666EEE550416666668615AA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 410314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441295C8F6205E75041295C8FA22BAA5441666666D604E7504148E17A942AAA5441C3F5282C04E75041AE47E13A2AAA5441295C8F8203E75041295C8FE227AA5441666666A602E750418FC2F58827AA54416666664603E75041CDCCCCFC26AA544185EB51C803E750418FC2F51824AA5441295C8F0201E750410AD7A3B022AA5441666666D6FFE6504148E17AF424AA544148E17AC4FDE65041EC51B8AE24AA5441EC51B8FEFAE6504148E17A4425AA5441295C8FD2F9E65041EC51B8AE24AA544185EB5188F8E65041CDCCCCCC24AA5441EC51B88EF7E65041CDCCCCBC25AA5441295C8F62F1E650410AD7A33025AA544185EB51A8E7E65041295C8F0221AA5441C3F5281CE7E650418FC2F54821AA544101030000000100000080010000A4703D1A94E65041666666263EAA5441C3F5288C95E6504148E17A643CAA54410AD7A31094E650418FC2F5183DAA5441A4703D7A93E65041EC51B84E39AA544185EB512895E65041295C8F7238AA5441666666D696E6504148E17A5438AA5441A4703D4A96E65041CDCCCC6C34AA54416666660699E650418FC2F55834AA544148E17AC499E65041EC51B85E33AA544148E17A549BE65041EC51B80E33AA5441E17A145E9BE65041295C8FA235AA54410AD7A3609EE65041CDCCCC4C36AA54410AD7A3F09FE6504148E17A3435AA5441A4703DAA9FE650416666662634AA54410AD7A3F09FE650410AD7A34033AA5441A4703D3AA1E65041666666F631AA544185EB51E8A2E650410AD7A31031AA544185EB51D8A3E65041AE47E11A31AA5441295C8F32A4E65041CDCCCC5C30AA544185EB51A8A6E65041666666A631AA544148E17A84A7E650410AD7A36031AA5441C3F5284CA8E650410AD7A32030AA5441A4703D0AA9E650410AD7A32030AA5441295C8F32A9E650418FC2F5B82EAA5441295C8F72AAE65041295C8FD22DAA54410AD7A320ACE65041EC51B8DE2BAA5441295C8FC2AAE6504148E17AB428AA54410AD7A3C0ACE65041CDCCCCDC28AA544148E17A04AFE6504148E17A1428AA544185EB5158B0E65041AE47E11A27AA5441EC51B8EEB0E6504148E17A4425AA54410AD7A350B3E650410AD7A30028AA5441EC51B81EB3E65041CDCCCC3C28AA5441C3F5281CB5E65041EC51B84E2AAA544166666656B7E650418FC2F5482BAA5441C3F5289CB7E65041AE47E13A2AAA54410AD7A3C0B6E650416666669628AA544166666606B7E65041EC51B82E27AA5441A4703D4AB9E65041666666A627AA544166666646B8E65041AE47E1CA26AA544148E17AA4B9E650416666669623AA544185EB5148BBE650410AD7A34024AA5441A4703D6AB7E65041AE47E12A21AA5441666666E6B8E6504148E17A141EAA54410AD7A330BAE65041AE47E1AA1EAA544148E17AC4BCE65041EC51B81E1EAA54410AD7A300BDE6504148E17AD41CAA5441295C8F72BEE65041295C8FB21BAA5441C3F5286CBFE65041EC51B8DE1CAA5441295C8F42C1E6504148E17A441BAA544185EB5188C1E65041EC51B87E18AA54410AD7A3A0C2E65041AE47E11A18AA544166666616C5E65041EC51B87E18AA544185EB51D8C6E650416666669619AA5441A4703DFAC7E6504148E17AB419AA5441A4703D3AC9E65041EC51B8AE1AAA5441A4703D1ACBE65041295C8F121BAA544185EB51A8CEE65041295C8F721AAA544185EB5188D0E650416666669619AA5441EC51B84ED3E6504148E17A941BAA5441A4703DEAD2E650410AD7A3001EAA5441A4703D0AD6E650410AD7A3201CAA5441C3F528CCD7E65041AE47E1CA1CAA544185EB5108DDE65041CDCCCC0C1CAA54410AD7A3F0D6E650410AD7A3A019AA5441295C8F92D5E65041CDCCCC7C1AAA544166666676D3E65041EC51B80E1AAA544148E17AA4D2E65041AE47E15A19AA5441295C8F22D2E650418FC2F58818AA54410AD7A350D1E65041AE47E18A16AA544148E17A34CFE650410AD7A39015AA5441713D0A77CBE650416666664613AA544185EB5168C8E650410AD7A32012AA544166666616C5E65041EC51B85E10AA5441295C8FB2BFE65041CDCCCCEC0EAA54410AD7A370BBE650418FC2F5D80EAA5441295C8F12BAE65041295C8F6211AA54410AD7A390B9E65041295C8FB211AA5441295C8F82B8E650416666660613AA5441EC51B86EB8E6504148E17A7413AA5441A4703D0AB8E65041AE47E10A14AA5441A4703D6AB7E65041295C8F3214AA5441EC51B89EB5E6504148E17A4416AA544185EB51C8B3E65041AE47E17A17AA544185EB5198B1E650418FC2F52819AA5441295C8FB2B0E650418FC2F52819AA5441EC51B8FEAFE65041EC51B8BE19AA5441C3F5283CAEE65041295C8F521CAA544148E17AD4ACE65041AE47E1CA1CAA5441295C8FB2ABE65041EC51B86E1EAA5441A4703D8AABE6504148E17A041FAA5441295C8F22AAE65041AE47E1DA20AA5441295C8F82A9E6504148E17AA424AA5441295C8F12A6E65041666666D629AA5441295C8F32A4E65041EC51B8DE2BAA5441E17A149EA1E650418FC2F5382CAA5441666666969FE650410AD7A3B02CAA5441C3F5286C9CE65041295C8F222EAA54410AD7A38097E650410AD7A3002DAA5441A4703D3A97E65041EC51B87E2CAA544185EB512895E65041CDCCCC4C2CAA544185EB51E893E650410AD7A3502DAA5441A4703D3A92E65041666666762FAA54410AD7A30090E65041295C8FA230AA5441C3F5289C8FE6504148E17A2431AA5441E17A145E8CE65041EC51B8AE33AA544185EB51888AE65041CDCCCC1C34AA544148E17A1486E650418FC2F5D836AA5441C3F5280C84E65041EC51B86E37AA544185EB51C881E65041295C8F7238AA5441295C8FF27FE6504148E17AA438AA5441E17A14AE7DE650418FC2F55839AA544185EB51287CE65041AE47E17A3AAA544185EB515879E65041666666563BAA5441666666E677E650410AD7A3103BAA5441295C8F5275E65041295C8F923BAA54410AD7A35072E65041EC51B8BE3CAA5441E17A148E70E65041295C8FC23DAA5441A4703D5A6DE650418FC2F5A83EAA54410AD7A3C06BE6504148E17A543DAA5441295C8F2269E65041EC51B83E3FAA5441C3F528EC67E650410AD7A3D03EAA5441C3F528AC66E65041CDCCCC5C3FAA544148E17A4465E6504148E17A943EAA5441295C8FE262E65041666666163FAA5441A4703DEA5FE65041EC51B87E40AA5441A4703D5A5EE65041666666A640AA5441666666565DE650410AD7A3203FAA5441C3F528EC53E65041AE47E19A3DAA5441E17A144E51E65041295C8F723DAA544148E17AB44FE65041666666663AAA5441295C8F124CE65041AE47E13A39AA5441C3F5283C4AE650410AD7A34038AA54416666666648E65041295C8F2238AA544148E17A9447E65041AE47E14A38AA5441295C8FB247E65041666666B635AA544185EB510847E65041AE47E1CA35AA5441E17A14AE46E650418FC2F53836AA5441A4703DDA42E65041295C8F8237AA5441E17A145E41E65041666666A636AA544185EB51C83BE65041CDCCCC3C37AA544148E17A0437E65041666666B635AA5441295C8F3236E650416666663633AA544148E17A8434E65041295C8F1234AA544148E17AE433E6504148E17A5433AA544185EB51C831E65041AE47E15A32AA5441C3F5286C2EE65041AE47E1AA32AA5441666666E62CE6504148E17AA42EAA54410AD7A3702AE65041EC51B82E2CAA5441666666E627E65041295C8FF22BAA54416666666625E65041CDCCCCFC2BAA5441E17A14EE24E650418FC2F5F82AAA544185EB518821E65041666666162BAA5441C3F5283C1DE65041666666A627AA544185EB51D817E65041EC51B84E25AA5441A4703DBA17E650410AD7A39024AA54410AD7A37016E650410AD7A35023AA5441C3F5280C16E650416666665622AA5441A4703DEA14E65041295C8FF221AA5441E17A144E15E65041EC51B81E1EAA5441E17A140E14E650410AD7A3D01BAA5441C3F5288C0EE65041AE47E11A1DAA544185EB51880DE65041666666661CAA54410AD7A3100DE650410AD7A3F019AA5441A4703D5A0EE650416666661617AA5441E17A14DE0CE65041CDCCCC6C16AA544185EB511800E65041CDCCCCEC13AA544166666656FEE55041295C8F2215AA5441C3F5284CFEE55041666666D615AA5441A4703D2A02E65041EC51B8FE15AA5441C3F528CC05E65041295C8F4218AA544148E17AA40AE65041666666361AAA544185EB51680AE650418FC2F5981CAA5441A4703D2A0CE65041CDCCCC1C1BAA544148E17A340CE65041295C8F021CAA5441666666560DE65041666666561DAA544148E17AB40EE65041666666B621AA544148E17A640EE65041295C8FA221AA5441C3F5282C0AE65041666666061DAA544166666676F7E5504148E17AE41BAA544185EB51B8F6E55041295C8FE222AA5441295C8F72F6E5504148E17A6423AA5441E17A146EF5E55041295C8FE222AA544148E17A54F6E5504148E17A3421AA5441C3F528FCF3E550418FC2F5C81EAA54410AD7A370F3E55041666666E61EAA5441666666D6F1E5504148E17A241DAA544166666686F1E55041666666261BAA544166666666EEE550416666668615AA54410AD7A320EEE550410AD7A3B013AA5441A4703D4AECE55041295C8F1211AA5441666666F6EAE550418FC2F5E80DAA544148E17AC4EAE55041EC51B86E0AAA544185EB5168E7E55041295C8FC206AA544148E17AD4E4E5504148E17AE402AA544185EB5108E3E55041295C8F2201AA544185EB5128E1E55041295C8FA2FEA95441C3F528ECE0E55041EC51B84EFDA95441666666D6DDE55041CDCCCC3CFBA95441C3F528CCDDE5504166666666F9A9544148E17A64DCE55041EC51B82EF5A95441A4703DAADCE55041666666D6F2A9544185EB51D8DBE550418FC2F528F1A95441295C8F42DBE550410AD7A310F0A95441666666D6D8E55041CDCCCC1CEEA95441C3F528BCD9E55041AE47E1BAEBA95441E17A14EED9E55041AE47E1DAE9A954415C8FC2D5DDE5504152B81E25E8A95441295C8FE2DBE55041AE47E1AAE5A95441333333F3D7E5504133333363DDA954410AD7A350D9E5504166666606DCA95441E17A149ED9E550419A999999D9A9544185EB5128D7E5504148E17AA4D4A9544166666606D6E55041CDCCCC8CD3A95441A4703D3AD4E5504148E17AE4D0A9544185EB5198D0E550410AD7A350CEA9544148E17A54CFE55041295C8F72CAA9544133333353CFE5504114AE47B1CBA9544148E17A64D0E5504114AE4731D0A9544185EB5198D0E55041EC51B8CED7A9544148E17AE4CFE5504148E17A14D8A9544166666636CEE5504166666676DAA95441A4703D1ACCE5504148E17A94DAA954410AD7A3D0CAE55041AE47E12ADBA95441C3F528ACCBE55041666666E6DDA9544166666676CAE550418FC2F5A8DFA95441C3F528BCC5E55041AE47E1FAE2A95441E17A145EC4E55041EC51B8AEE3A95441295C8FD2C3E55041EC51B88EE5A95441C3F5287CBFE55041AE47E18AE9A9544148E17AE4BBE55041AE47E10AECA95441295C8FC2BAE5504166666646ECA954410AD7A390BAE55041EC51B85EEDA95441A4703DDAB6E55041CDCCCC5CEFA954415C8FC2D5B4E5504100000020EFA9544133333383B0E55041D7A370EDF0A95441E17A145EB0E55041295C8F62F3A95441C3F5283CB1E55041295C8F92F4A95441295C8F02B2E55041AE47E1AAF6A95441666666A6B8E55041AE47E1BAFFA95441C3F528DCB9E55041AE47E1BAFFA95441E17A145EBAE55041EC51B8BE00AA54419A999969BAE55041713D0AF701AA54415C8FC275BCE5504185EB51F804AA54418FC2F558C0E55041E17A14DE0AAA5441AE47E1DAC5E55041CDCCCC9C05AA544100000040C7E55041666666B605AA5441A4703DAAD2E550410AD7A3F0FBA95441A4703D6AD1E55041CDCCCC5CF9A9544148E17A74D6E5504148E17A54F7A9544148E17A44D9E55041EC51B8FEF7A9544185EB5198DAE55041666666A6FAA95441A4703DAADCE55041CDCCCC6CFDA9544166666606E0E55041666666E600AA5441C3F528FCDFE55041EC51B8EE02AA5441295C8FA2E0E550413333338307AA5441F6285C4FE7E55041EC51B89E12AA54410AD7A3D0E8E550416666668615AA5441295C8F82E1E55041EC51B84E16AA5441295C8F42E5E55041666666D61AAA5441295C8F12E8E5504148E17A841CAA5441C3F5286CE8E55041666666561DAA54410AD7A3C0E4E550410AD7A3901FAA5441295C8F22E2E55041666666461EAA5441A4703D1AD6E55041AE47E1EA29AA544148E17AC4D6E55041295C8FB22AAA54411F85EB81D6E55041C3F528DC2BAA5441CDCCCC3CD4E55041AE47E1FA2CAA5441D7A3704DD2E5504114AE47A12EAA5441295C8FD2D2E55041D7A370AD2FAA5441295C8FC2D3E55041EC51B84E2FAA544166666666D5E55041CDCCCC8C32AA5441E17A149ED4E55041CDCCCC2C33AA5441295C8F52D5E55041CDCCCCBC34AA544148E17A84DFE550418FC2F5D82CAA544185EB51C8E1E5504148E17AF429AA544185EB5158E3E550410AD7A3302AAA544166666676E8E55041EC51B8FE24AA5441C3F5282CECE550418FC2F54826AA5441295C8F12EDE5504148E17A1428AA5441666666D6ECE55041AE47E14A29AA54410AD7A330E8E55041666666462DAA544148E17A94E8E55041295C8FC22EAA5441C3F528DCE6E550410AD7A3802FAA5441A4703DCAE4E550418FC2F58831AA544185EB51A8E3E550416666665631AA54410AD7A330DEE55041295C8FE236AA5441295C8F12DEE55041CDCCCC1C39AA5441E17A145EDDE55041EC51B8EE39AA54410AD7A3D0D8E55041000000803CAA544114AE47C1DBE5504114AE475144AA5441A4703DBADBE55041EC51B85E42AA5441A4703D9ADDE550410AD7A3A041AA544166666656E0E55041AE47E13A3EAA5441D7A370CDE1E55041B81E859B3EAA5441B81E85EBE9E5504114AE47F136AA544185EB5198E9E550418FC2F58836AA5441666666F6EAE55041666666E632AA544148E17A84EEE5504148E17A2431AA5441666666C6EDE55041AE47E18A2FAA5441295C8FF2EEE5504148E17AE42FAA54410AD7A3B0F4E55041666666662BAA5441E17A140EF6E55041CDCCCC5C2BAA5441666666D6F6E55041EC51B87E2CAA5441C3F528CCFBE55041295C8F622FAA5441A4703D7AFDE55041AE47E1AA32AA544185EB5178FFE55041CDCCCC3C32AA5441A4703D1AFEE55041295C8F9231AA5441295C8F42FEE55041666666B630AA5441C3F5285CFDE55041AE47E1EA2EAA544166666676FCE55041295C8FD22DAA5441E17A146EFAE55041666666062CAA544148E17AA4FBE55041CDCCCCBC2AAA544148E17AC4F9E550416666669628AA5441E17A143EF8E5504148E17A5424AA5441A4703DEAF6E550416666669623AA5441666666E60EE650418FC2F53822AA5441666666D60FE650410AD7A38025AA5441C3F528BC10E65041CDCCCC1C25AA5441295C8F2214E65041CDCCCC9C27AA5441C3F5287C14E650410AD7A3302AAA5441A4703DDA15E65041295C8F422CAA5441E17A14DE16E6504148E17A542EAA5441A4703DFA18E65041AE47E13A2FAA5441666666661BE650418FC2F5B82EAA54410AD7A3D01AE65041AE47E13A2FAA5441E17A14BE1DE65041AE47E10A32AA54410AD7A3C020E650410AD7A35032AA5441A4703D1A21E65041EC51B84E34AA544148E17A8425E65041295C8F1234AA544185EB518826E65041AE47E18A34AA54410AD7A3202AE65041295C8F6234AA54410AD7A3602BE65041295C8F023AAA54410AD7A3202FE650418FC2F5E83AAA544185EB51F833E65041AE47E14A3DAA5441A4703D8A33E65041295C8F523FAA54416666666634E65041295C8F4240AA54410AD7A3103AE65041CDCCCC6C3EAA5441E17A144E3DE65041EC51B8EE3EAA5441C3F5287C3CE65041295C8F7242AA54410AD7A3D03DE650410AD7A32044AA5441C3F5280C3EE65041CDCCCCBC43AA5441C3F528FC3EE6504148E17AD444AA544185EB51A842E65041CDCCCC1C43AA544148E17AD443E6504148E17A4443AA54410AD7A33047E650416666666644AA5441E17A142E49E650410AD7A35046AA544185EB51184BE650418FC2F51847AA5441A4703D4A4BE65041AE47E19A47AA5441E17A149E4CE650410AD7A33048AA5441C3F5284C4EE650418FC2F57841AA5441C3F5289C53E650418FC2F5B842AA5441C3F5281C56E65041CDCCCC0C44AA544148E17A2458E65041295C8F8241AA54410AD7A35059E65041AE47E14A42AA5441666666765BE650418FC2F51842AA5441295C8FF25CE65041AE47E13A43AA544148E17AF464E65041295C8FD241AA5441E17A144E65E6504148E17A5442AA54410AD7A3C066E65041CDCCCCDC41AA5441A4703DCA66E6504148E17A1441AA5441C3F528EC67E65041CDCCCCAC3FAA544185EB512868E65041EC51B81E41AA5441A4703DEA69E65041EC51B80E42AA5441295C8FA26BE650410AD7A3B040AA5441E17A141E6DE650416666668642AA544148E17AB46DE650410AD7A34042AA5441C3F5282C6EE650410AD7A3B040AA5441295C8FE271E6504148E17AB441AA54410AD7A39078E65041EC51B81E41AA5441A4703DEA78E65041CDCCCC2C42AA54410AD7A3207AE65041EC51B85E42AA5441295C8F027FE65041AE47E1CA3FAA5441666666B67FE65041CDCCCC9C40AA54416666662683E65041EC51B86E3CAA54410AD7A31085E650410AD7A3603BAA5441E17A14AE87E65041CDCCCC4C3BAA544148E17A8489E65041666666863DAA5441C3F528AC8EE650410AD7A3F03CAA5441A4703D6A8FE65041CDCCCC2C3DAA5441E17A146E90E650418FC2F5B83DAA5441A4703D8A92E650410AD7A3003CAA54410AD7A32093E650418FC2F5B83DAA5441A4703D1A94E65041666666263EAA5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000BED4A5D9D8E550415AA9F3973CAA5441AC09DAAEDBE55041B367472044AA5441E4CDA984DBE5504137307D8F42AA54415D2395BADBE5504119F2FA7642AA5441A4703DBADBE55041EC51B85E42AA5441F672485BDDE550411B2B92B941AA5441E61ACD98DDE550413FB09B9D41AA5441607476B6DFE550416D178F013FAA544166666656E0E55041AE47E13A3EAA544166B75A57E0E55041363C203B3EAA54414E9B716EE0E550412A23A61E3EAA5441BA8B49F1E1E55041F5C4AB793EAA5441ADFAE565E5E55041C8175F363BAA5441D63546DAE9E550416B7C900137AA544144028080E9E55041D948CAA736AA54415A5CEF4DEAE5504199E733A634AA5441666666F6EAE55041666666E632AA544148E17A84EEE5504148E17A2431AA5441666666C6EDE55041AE47E18A2FAA5441C1323ACAEDE55041CBC1058C2FAA5441C0C2F6C0EDE55041D3E17E792FAA54414C8FC5CDEEE55041A7987FD92FAA5441295C8FF2EEE5504148E17AE42FAA54419B3733F9F2E55041724B2FBE2CAA5441969C0F54F3E55041DA147A732CAA54410C85DEAEECE550415CFBA64D27AA5441295C8F12EDE5504148E17A1428AA5441D1C0FAF1ECE55041A6DC94BC28AA5441F66845E7ECE5504104FB143D29AA54418D009CC6ECE55041B042695829AA54419DD8454BE8E550416EF7932F2DAA544128CFFEBEE8E5504125D52DD02EAA5441F9CE3BDBE6E5504112550FC22FAA54415BA848DFE4E550417108727531AA544153C134DEE4E55041880A5B7531AA5441A4703DCAE4E550418FC2F58831AA54410A27ADE0E3E5504151683A6031AA544191DB06BDE3E5504102E2415D31AA5441DE271E42DEE5504124BC5AF036AA544102DBBD11DEE550410156DE3439AA5441ADD20684DDE55041365E95C239AA5441E17A145EDDE55041EC51B8EE39AA54419E41E24FDDE550412FEFB9F639AA5441CA5ADC1FDDE55041F9D5BF263AAA544104E18FD8DBE55041D61266CA3AAA5441F799A48ADAE550419D93B8863BAA544147342640D9E550413A9673833CAA5441BED4A5D9D8E550415AA9F3973CAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911975 - 207995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000005C000000A4703D8ADBE1504114AE47F10BA8544166666636DAE15041CDCCCCBC14A854411F85EBD1DCE150411F85EBA11DA8544166666676DEE150417B14AE6722A854418FC2F518E0E15041EC51B82E25A854417B14AE27E4E15041A4703DEA26A8544148E17A34E6E15041D7A3709D25A85441EC51B8AEE3E1504185EB516823A85441AE47E1CAE1E150410AD7A38022A854413D0AD773E0E15041666666A620A854413D0AD783E1E15041A4703DAA1FA854411F85EB31E4E15041666666961FA854419A9999E9E6E150413333332320A8544152B81E65E9E1504185EB519821A85441713D0A17EBE15041B81E85DB22A85441CDCCCC4CF2E15041D7A3700D2BA854410AD7A3B0EDE15041000000802AA8544114AE4761EAE1504185EB51682BA8544148E17A64E4E15041A4703D8A2AA85441D7A3700DE3E15041E17A148E29A85441000000F0E0E15041AE47E19A29A8544152B81E55E1E150410AD7A3C02AA85441C3F5286CD5E15041F6285C6F2AA85441000000B0CBE1504185EB51682BA854418FC2F578C7E15041B81E855B29A8544185EB51F8C8E15041E17A143E2EA8544100000040CEE150411F85EBD12FA85441A4703D6AD0E15041666666662EA85441295C8F22D3E1504114AE47C12EA854417B14AEA7D5E15041F6285CCF2DA8544152B81EC5D8E150410AD7A3702EA854415C8FC2F5DBE150415C8FC2D52EA85441000000A0DFE15041F6285CCF2DA8544148E17AA4E3E150417B14AEF72DA85441713D0A97E4E15041000000F02FA854413D0AD7E3E5E15041C3F528EC30A85441D7A370ADE6E15041F6285C7F32A8544148E17A14E9E15041F6285C3F33A8544166666606EAE15041713D0A4731A854417B14AE37EDE150416666660632A85441AE47E1BAEDE15041EC51B8FE33A85441F6285CDFEEE15041AE47E1FA34A854411F85EBA1E9E15041EC51B85E38A8544114AE47E1E3E1504148E17A343BA8544185EB51A8E2E150416666664639A85441295C8FA2E1E15041EC51B86E39A85441000000A0DFE15041E17A14BE3CA8544148E17A24DDE1504114AE47413DA8544185EB5128DCE15041EC51B8DE3EA85441A4703D3ADAE15041A4703DFA44A85441C3F5282CDBE15041E17A14CE45A85441A4703DDADDE15041F6285C8F43A85441F6285C5FE0E150419A9999B945A854417B14AE87E0E15041CDCCCCFC46A85441EC51B8AEE3E150410000008047A85441713D0AA7E5E15041EC51B84E44A85441C3F528DCE7E150419A9999D942A8544185EB51E8E9E1504148E17A3443A85441EC51B8CEEDE15041E17A143E43A8544114AE4701EEE15041333333F33EA854411F85EBD1E7E150410AD7A3003EA85441E17A143EE6E150410AD7A3003EA854411F85EB41E5E150411F85EBC13BA85441CDCCCC3CE9E15041B81E85AB39A8544114AE4761EAE150417B14AEE739A85441D7A3701DECE150410AD7A3203BA854410AD7A3A0ECE15041EC51B8FE3BA854417B14AED7F0E150418FC2F5483BA8544100000010F2E15041666666063AA8544148E17A04F5E1504114AE47813CA854415C8FC2E5FCE15041C3F5287C40A85441E17A14AE00E250410AD7A3C03EA85441713D0AE701E250410AD7A3603AA854411F85EB5103E250419A9999F937A85441C3F5285C03E25041AE47E12A33A8544185EB512806E250413D0AD79332A854419A99998907E25041C3F5288C34A8544185EB51980BE25041F6285C1F36A854419A9999390CE250413D0AD77335A854418FC2F5180AE25041A4703DCA31A85441AE47E1DA0CE250418FC2F56830A854417B14AE270EE25041000000C031A8544148E17A3410E2504152B81E6531A8544114AE473111E2504114AE47C12FA854413333337310E250415C8FC2452FA85441C3F5286C08E25041E17A148E2AA85441CDCCCC4CFAE15041AE47E15A24A85441713D0A77E8E15041F6285CCF19A85441D7A3703DE3E15041AE47E18A14A85441CDCCCC3CE3E15041B81E850B0DA8544133333343E1E150410AD7A3200BA85441A4703D8ADBE1504114AE47F10BA85441
+</a>
+
+<b>
+010600000001000000010300000001000000B7000000F44B5451DAE150418B1C630A14A8544128B5DB63DAE150414565A4B114A85441900258F8DAE15041922F675217A854411F85EBD1DCE150411F85EBA11DA8544160FE2C91DDE150412587A3CD1FA854412B690771DEE15041C32D3C3522A85441EC1CFF35E0E150411879382E25A854419773861AE4E1504120C911E126A85441B6CC641BE6E15041C32D59AD25A8544148E17A34E6E15041D7A3709D25A85441767059CCE5E15041B113504225A854414FFD0BABE3E15041A8A4F18923A85441505502D0E1E150413C29978C22A85441D8EBA573E0E1504132818DB120A8544198CE7078E0E15041729EC2AC20A854413D0AD773E0E15041666666A620A85441BD331C0AE1E150414D39171B20A8544139670071E1E15041D10533B41FA854417EB58379E1E150419FF6CFB31FA854413D0AD783E1E15041A4703DAA1FA8544118C750AAE3E150411E47529A1FA854410A3BB929E4E150412DB687941FA85441CD25CA37E4E15041098596971FA854419A9999E9E6E150413333332320A85441857C529FE7E150411C11E48D20A854411145D45BE9E15041DBAD3C8F21A85441199781A5E9E15041EEFB46C821A85441713D0A17EBE15041B81E85DB22A854417F7BD2ECEEE15041F9DD6D3727A854412B6F6254F2E15041F6AC120E2BA85441F5B9414CF2E150411591D20C2BA85441CDCCCC4CF2E15041D7A3700D2BA8544166A21875EEE15041A97F8B972AA85441340D5084EDE1504150F63D8F2AA8544139FB1667EAE15041E39DAA682BA85441C5393B62EAE15041B4250F682BA8544114AE4761EAE1504185EB51682BA85441CAD02E4EEAE1504194988D652BA85441180C8B4EE5E15041CC1F99C52AA85441C367DB99E4E15041283AF9912AA8544148E17A64E4E15041A4703D8A2AA85441636EC053E4E150414285F17D2AA85441099DE150E4E1504197921F7D2AA85441A5E27E0CE3E15041FB311A8E29A854412E0A6E99E1E1504195E3DF9629A85441FFFC73F2E0E150412AA001A229A8544152B81E55E1E150410AD7A3C02AA85441CC908D2CE1E1504160FD8EBF2AA85441198BA833E1E150418583B7D72AA85441BFD76F0FD6E1504115076B772AA8544110F7C7C5D1E150411F4AF4FB2AA85441DF9892AFCBE15041E39DAA682BA854410DAE4B44CBE1504111E5EF332BA8544110C57184C7E150419B041B6129A854416C3E2E11C9E15041A9226A3D2EA854418E2DBA29CEE150415348E8B92FA854413C34685BD0E1504143E9A6612EA854413E297934D3E150412C0190BA2EA854417B14AEA7D5E15041F6285CCF2DA8544152E4E7ABD5E1504113F436D02DA85441B3E96DB0D5E1504112697CCE2DA8544123AB0A3CD7E15041681924212EA8544152B81EC5D8E150410AD7A3702EA854417D7849A6D9E15041066C858C2EA854415DD5DFF6DBE15041073D5DCE2EA85441AB010CA5DFE15041216B95BE2DA85441AAAD608BE3E15041B6B827EE2DA8544117DD1990E3E15041068EE1F62DA8544148E17AA4E3E150417B14AEF72DA854411D5C7843E4E15041EACA3E422FA854410C88D0A8E4E1504187B877FD2FA8544147905108E5E150417D90D44530A85441469417E5E5E15041C62B37E630A85441C23109CBE6E15041426A897C32A854416638B7FCE8E150413B4BB93133A8544163658AB0E9E150412FFD06FA31A8544166666606EAE15041713D0A4731A854417B14AE37EDE150416666660632A854418FF2063AEDE1504176136C0F32A85441FF7FD63BEDE150417316D30F32A85441E7B3344CEDE150413BA84C5532A85441AE47E1BAEDE15041EC51B8FE33A8544175A76DF4EDE1504111C1553034A85441DE32CE00EFE150411AFEB0F634A8544198C45317EAE15041140D0E1738A85441EC2A45E3E9E15041C621713438A854411F85EBA1E9E15041EC51B85E38A8544156A6C656E9E15041BDCFC08338A854411A47F469E8E150416060710939A854414BED7DDEE3E1504136DE653A3BA85441F68BC6ADE2E15041851D8C5C39A85441820657B0E1E15041F396636F39A8544173D9402CE0E15041B3961DD73BA85441000000A0DFE15041E17A14BE3CA854418044B5F0DDE15041873C1E173DA854412102861BDDE15041F70EF74F3DA8544140F293F6DCE1504179708A8C3DA854418762593FDCE150415CEC30CD3EA8544170E4479CDBE150419AB91B2341A8544137BFD774DAE15041EB85CA4044A85441A4703D3ADAE15041A4703DFA44A854416F422F89DAE15041FA655E3F45A85441CA2D731DDBE1504115F2D2BC45A854418600C571DDE15041CE9DDFE643A85441A4703DDADDE15041F6285C8F43A85441F6285C5FE0E150419A9999B945A8544175C2937BE0E150419F0EC99B46A85441BD819890E0E150414DDA3FFE46A8544105916CB4E1E15041AC18B12D47A854414FFD0BABE3E1504190AA016A47A8544124FC22A9E5E150416BCC544044A854413D1BE9D0E6E15041F71B0D8A43A85441C3F528DCE7E150419A9999D942A854411546FB3FE9E150415D094B1743A85441E7D0BB30EAE1504185FA8C3043A8544136D2D883EAE1504131B7F93543A854414ACB9D73EDE150419639343D43A854410D7B2DC5EDE1504123C74E3C43A85441ACFE99F8EDE1504119B3D1AF3FA8544114AE4701EEE15041333333F33EA854413C325E7BE8E150419C28991A3EA854419185BF37E7E15041A0A7E2053EA85441AA4A11E9E6E150410AD7A3003EA85441E17A143EE6E150410AD7A3003EA85441D489ED38E6E150416FB9E5F43DA85441ABB3F727E6E15041C944C4F33DA854417E454E2AE5E15041443D16C23BA85441C7FD4D33E8E15041578AC5363AA85441CDCCCC3CE9E15041B81E85AB39A8544114AE4761EAE150417B14AEE739A8544124AB8065EAE15041A1C1A7EA39A854411710DA78EAE15041A4D410EE39A854413C47165AEBE15041D0FDFD963AA854415D1A3C7EEBE15041735676B03AA854414F6A1AFCEBE150411CEB24F53AA85441D4891814ECE15041C9560E1A3BA85441D7A3701DECE150410AD7A3203BA854415F5CF64FECE15041468728763BA854417A0C2256ECE1504150D1A67F3BA854419FC93CA9ECE15041730862F53BA8544138CF9B22EDE15041FAC9D3E83BA85441B28FA650EFE15041C8CCD38A3BA8544127D2E4C5F0E1504130F978333BA85441E3FFAB04F2E150414924BC0D3AA85441CD5D0307F2E15041D576AE0F3AA8544100000010F2E15041666666063AA8544148E17A04F5E1504114AE47813CA854414BFB78C2F5E15041ED9F3DE13CA8544158CB19B8F6E15041AC3622453DA8544157732393F8E150410DB27C423EA854411FA230F2FCE15041A1D8EB6D40A85441DD3939AF00E250412E2E8CBC3EA85441713D0AE701E250410AD7A3603AA8544158A7143A02E250410D44E5D339A85441A38CDF5003E25041514AADEF37A854417C755B5603E250418111EE3F33A85441EABBFE5B03E250411B50B43E33A85441C3F5285C03E25041AE47E12A33A8544185EB512806E250413D0AD79332A85441242A397606E2504188BE0C0333A8544141031C8B07E25041352C9F7C34A85441B7A2B8A60BE25041025E0B1036A854419A9999390CE250413D0AD77335A85441170064130CE25041D8F90F3235A85441A0387E040AE250418D57E6C331A85441B0EDE5DE0CE2504175C6F95C30A85441AB8581330EE2504152BCF3BD31A85441C79C98FE0EE250418666C89A31A85441FD297A3210E25041A334A35A31A854410C9BF7F110E25041DF5F31C92FA854416F2844B810E25041C134A4722FA854413333337310E250415C8FC2452FA8544115D2491A10E25041847082112FA85441FD2ECB6808E25041B95616972AA85441611B2D6EFAE15041EB204C8724A85441A5C9795EE8E150416A6EBFE319A854414CCD9632E3E15041750B579814A85441BDBE5E2CE3E15041A015F99114A85441EC24623DE3E150416F7010E113A85441CDCCCC3CE3E15041B81E850B0DA8544133333343E1E150410AD7A3200BA85441A4703D8ADBE1504114AE47F10BA85441F44B5451DAE150418B1C630A14A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911975 - 263105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000005C000000A4703D8ADBE1504114AE47F10BA8544166666636DAE15041CDCCCCBC14A854411F85EBD1DCE150411F85EBA11DA8544166666676DEE150417B14AE6722A854418FC2F518E0E15041EC51B82E25A854417B14AE27E4E15041A4703DEA26A8544148E17A34E6E15041D7A3709D25A85441EC51B8AEE3E1504185EB516823A85441AE47E1CAE1E150410AD7A38022A854413D0AD773E0E15041666666A620A854413D0AD783E1E15041A4703DAA1FA854411F85EB31E4E15041666666961FA854419A9999E9E6E150413333332320A8544152B81E65E9E1504185EB519821A85441713D0A17EBE15041B81E85DB22A85441CDCCCC4CF2E15041D7A3700D2BA854410AD7A3B0EDE15041000000802AA8544114AE4761EAE1504185EB51682BA8544148E17A64E4E15041A4703D8A2AA85441D7A3700DE3E15041E17A148E29A85441000000F0E0E15041AE47E19A29A8544152B81E55E1E150410AD7A3C02AA85441C3F5286CD5E15041F6285C6F2AA85441000000B0CBE1504185EB51682BA854418FC2F578C7E15041B81E855B29A8544185EB51F8C8E15041E17A143E2EA8544100000040CEE150411F85EBD12FA85441A4703D6AD0E15041666666662EA85441295C8F22D3E1504114AE47C12EA854417B14AEA7D5E15041F6285CCF2DA8544152B81EC5D8E150410AD7A3702EA854415C8FC2F5DBE150415C8FC2D52EA85441000000A0DFE15041F6285CCF2DA8544148E17AA4E3E150417B14AEF72DA85441713D0A97E4E15041000000F02FA854413D0AD7E3E5E15041C3F528EC30A85441D7A370ADE6E15041F6285C7F32A8544148E17A14E9E15041F6285C3F33A8544166666606EAE15041713D0A4731A854417B14AE37EDE150416666660632A85441AE47E1BAEDE15041EC51B8FE33A85441F6285CDFEEE15041AE47E1FA34A854411F85EBA1E9E15041EC51B85E38A8544114AE47E1E3E1504148E17A343BA8544185EB51A8E2E150416666664639A85441295C8FA2E1E15041EC51B86E39A85441000000A0DFE15041E17A14BE3CA8544148E17A24DDE1504114AE47413DA8544185EB5128DCE15041EC51B8DE3EA85441A4703D3ADAE15041A4703DFA44A85441C3F5282CDBE15041E17A14CE45A85441A4703DDADDE15041F6285C8F43A85441F6285C5FE0E150419A9999B945A854417B14AE87E0E15041CDCCCCFC46A85441EC51B8AEE3E150410000008047A85441713D0AA7E5E15041EC51B84E44A85441C3F528DCE7E150419A9999D942A8544185EB51E8E9E1504148E17A3443A85441EC51B8CEEDE15041E17A143E43A8544114AE4701EEE15041333333F33EA854411F85EBD1E7E150410AD7A3003EA85441E17A143EE6E150410AD7A3003EA854411F85EB41E5E150411F85EBC13BA85441CDCCCC3CE9E15041B81E85AB39A8544114AE4761EAE150417B14AEE739A85441D7A3701DECE150410AD7A3203BA854410AD7A3A0ECE15041EC51B8FE3BA854417B14AED7F0E150418FC2F5483BA8544100000010F2E15041666666063AA8544148E17A04F5E1504114AE47813CA854415C8FC2E5FCE15041C3F5287C40A85441E17A14AE00E250410AD7A3C03EA85441713D0AE701E250410AD7A3603AA854411F85EB5103E250419A9999F937A85441C3F5285C03E25041AE47E12A33A8544185EB512806E250413D0AD79332A854419A99998907E25041C3F5288C34A8544185EB51980BE25041F6285C1F36A854419A9999390CE250413D0AD77335A854418FC2F5180AE25041A4703DCA31A85441AE47E1DA0CE250418FC2F56830A854417B14AE270EE25041000000C031A8544148E17A3410E2504152B81E6531A8544114AE473111E2504114AE47C12FA854413333337310E250415C8FC2452FA85441C3F5286C08E25041E17A148E2AA85441CDCCCC4CFAE15041AE47E15A24A85441713D0A77E8E15041F6285CCF19A85441D7A3703DE3E15041AE47E18A14A85441CDCCCC3CE3E15041B81E850B0DA8544133333343E1E150410AD7A3200BA85441A4703D8ADBE1504114AE47F10BA85441
+</a>
+
+<b>
+010600000001000000010300000001000000B7000000F44B5451DAE150418B1C630A14A8544128B5DB63DAE150414565A4B114A85441900258F8DAE15041922F675217A854411F85EBD1DCE150411F85EBA11DA8544160FE2C91DDE150412587A3CD1FA854412B690771DEE15041C32D3C3522A85441EC1CFF35E0E150411879382E25A854419773861AE4E1504120C911E126A85441B6CC641BE6E15041C32D59AD25A8544148E17A34E6E15041D7A3709D25A85441767059CCE5E15041B113504225A854414FFD0BABE3E15041A8A4F18923A85441505502D0E1E150413C29978C22A85441D8EBA573E0E1504132818DB120A8544198CE7078E0E15041729EC2AC20A854413D0AD773E0E15041666666A620A85441BD331C0AE1E150414D39171B20A8544139670071E1E15041D10533B41FA854417EB58379E1E150419FF6CFB31FA854413D0AD783E1E15041A4703DAA1FA8544118C750AAE3E150411E47529A1FA854410A3BB929E4E150412DB687941FA85441CD25CA37E4E15041098596971FA854419A9999E9E6E150413333332320A85441857C529FE7E150411C11E48D20A854411145D45BE9E15041DBAD3C8F21A85441199781A5E9E15041EEFB46C821A85441713D0A17EBE15041B81E85DB22A854417F7BD2ECEEE15041F9DD6D3727A854412B6F6254F2E15041F6AC120E2BA85441F5B9414CF2E150411591D20C2BA85441CDCCCC4CF2E15041D7A3700D2BA8544166A21875EEE15041A97F8B972AA85441340D5084EDE1504150F63D8F2AA8544139FB1667EAE15041E39DAA682BA85441C5393B62EAE15041B4250F682BA8544114AE4761EAE1504185EB51682BA85441CAD02E4EEAE1504194988D652BA85441180C8B4EE5E15041CC1F99C52AA85441C367DB99E4E15041283AF9912AA8544148E17A64E4E15041A4703D8A2AA85441636EC053E4E150414285F17D2AA85441099DE150E4E1504197921F7D2AA85441A5E27E0CE3E15041FB311A8E29A854412E0A6E99E1E1504195E3DF9629A85441FFFC73F2E0E150412AA001A229A8544152B81E55E1E150410AD7A3C02AA85441CC908D2CE1E1504160FD8EBF2AA85441198BA833E1E150418583B7D72AA85441BFD76F0FD6E1504115076B772AA8544110F7C7C5D1E150411F4AF4FB2AA85441DF9892AFCBE15041E39DAA682BA854410DAE4B44CBE1504111E5EF332BA8544110C57184C7E150419B041B6129A854416C3E2E11C9E15041A9226A3D2EA854418E2DBA29CEE150415348E8B92FA854413C34685BD0E1504143E9A6612EA854413E297934D3E150412C0190BA2EA854417B14AEA7D5E15041F6285CCF2DA8544152E4E7ABD5E1504113F436D02DA85441B3E96DB0D5E1504112697CCE2DA8544123AB0A3CD7E15041681924212EA8544152B81EC5D8E150410AD7A3702EA854417D7849A6D9E15041066C858C2EA854415DD5DFF6DBE15041073D5DCE2EA85441AB010CA5DFE15041216B95BE2DA85441AAAD608BE3E15041B6B827EE2DA8544117DD1990E3E15041068EE1F62DA8544148E17AA4E3E150417B14AEF72DA854411D5C7843E4E15041EACA3E422FA854410C88D0A8E4E1504187B877FD2FA8544147905108E5E150417D90D44530A85441469417E5E5E15041C62B37E630A85441C23109CBE6E15041426A897C32A854416638B7FCE8E150413B4BB93133A8544163658AB0E9E150412FFD06FA31A8544166666606EAE15041713D0A4731A854417B14AE37EDE150416666660632A854418FF2063AEDE1504176136C0F32A85441FF7FD63BEDE150417316D30F32A85441E7B3344CEDE150413BA84C5532A85441AE47E1BAEDE15041EC51B8FE33A8544175A76DF4EDE1504111C1553034A85441DE32CE00EFE150411AFEB0F634A8544198C45317EAE15041140D0E1738A85441EC2A45E3E9E15041C621713438A854411F85EBA1E9E15041EC51B85E38A8544156A6C656E9E15041BDCFC08338A854411A47F469E8E150416060710939A854414BED7DDEE3E1504136DE653A3BA85441F68BC6ADE2E15041851D8C5C39A85441820657B0E1E15041F396636F39A8544173D9402CE0E15041B3961DD73BA85441000000A0DFE15041E17A14BE3CA854418044B5F0DDE15041873C1E173DA854412102861BDDE15041F70EF74F3DA8544140F293F6DCE1504179708A8C3DA854418762593FDCE150415CEC30CD3EA8544170E4479CDBE150419AB91B2341A8544137BFD774DAE15041EB85CA4044A85441A4703D3ADAE15041A4703DFA44A854416F422F89DAE15041FA655E3F45A85441CA2D731DDBE1504115F2D2BC45A854418600C571DDE15041CE9DDFE643A85441A4703DDADDE15041F6285C8F43A85441F6285C5FE0E150419A9999B945A8544175C2937BE0E150419F0EC99B46A85441BD819890E0E150414DDA3FFE46A8544105916CB4E1E15041AC18B12D47A854414FFD0BABE3E1504190AA016A47A8544124FC22A9E5E150416BCC544044A854413D1BE9D0E6E15041F71B0D8A43A85441C3F528DCE7E150419A9999D942A854411546FB3FE9E150415D094B1743A85441E7D0BB30EAE1504185FA8C3043A8544136D2D883EAE1504131B7F93543A854414ACB9D73EDE150419639343D43A854410D7B2DC5EDE1504123C74E3C43A85441ACFE99F8EDE1504119B3D1AF3FA8544114AE4701EEE15041333333F33EA854413C325E7BE8E150419C28991A3EA854419185BF37E7E15041A0A7E2053EA85441AA4A11E9E6E150410AD7A3003EA85441E17A143EE6E150410AD7A3003EA85441D489ED38E6E150416FB9E5F43DA85441ABB3F727E6E15041C944C4F33DA854417E454E2AE5E15041443D16C23BA85441C7FD4D33E8E15041578AC5363AA85441CDCCCC3CE9E15041B81E85AB39A8544114AE4761EAE150417B14AEE739A8544124AB8065EAE15041A1C1A7EA39A854411710DA78EAE15041A4D410EE39A854413C47165AEBE15041D0FDFD963AA854415D1A3C7EEBE15041735676B03AA854414F6A1AFCEBE150411CEB24F53AA85441D4891814ECE15041C9560E1A3BA85441D7A3701DECE150410AD7A3203BA854415F5CF64FECE15041468728763BA854417A0C2256ECE1504150D1A67F3BA854419FC93CA9ECE15041730862F53BA8544138CF9B22EDE15041FAC9D3E83BA85441B28FA650EFE15041C8CCD38A3BA8544127D2E4C5F0E1504130F978333BA85441E3FFAB04F2E150414924BC0D3AA85441CD5D0307F2E15041D576AE0F3AA8544100000010F2E15041666666063AA8544148E17A04F5E1504114AE47813CA854414BFB78C2F5E15041ED9F3DE13CA8544158CB19B8F6E15041AC3622453DA8544157732393F8E150410DB27C423EA854411FA230F2FCE15041A1D8EB6D40A85441DD3939AF00E250412E2E8CBC3EA85441713D0AE701E250410AD7A3603AA8544158A7143A02E250410D44E5D339A85441A38CDF5003E25041514AADEF37A854417C755B5603E250418111EE3F33A85441EABBFE5B03E250411B50B43E33A85441C3F5285C03E25041AE47E12A33A8544185EB512806E250413D0AD79332A85441242A397606E2504188BE0C0333A8544141031C8B07E25041352C9F7C34A85441B7A2B8A60BE25041025E0B1036A854419A9999390CE250413D0AD77335A85441170064130CE25041D8F90F3235A85441A0387E040AE250418D57E6C331A85441B0EDE5DE0CE2504175C6F95C30A85441AB8581330EE2504152BCF3BD31A85441C79C98FE0EE250418666C89A31A85441FD297A3210E25041A334A35A31A854410C9BF7F110E25041DF5F31C92FA854416F2844B810E25041C134A4722FA854413333337310E250415C8FC2452FA8544115D2491A10E25041847082112FA85441FD2ECB6808E25041B95616972AA85441611B2D6EFAE15041EB204C8724A85441A5C9795EE8E150416A6EBFE319A854414CCD9632E3E15041750B579814A85441BDBE5E2CE3E15041A015F99114A85441EC24623DE3E150416F7010E113A85441CDCCCC3CE3E15041B81E850B0DA8544133333343E1E150410AD7A3200BA85441A4703D8ADBE1504114AE47F10BA85441F44B5451DAE150418B1C630A14A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911977 - 208020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000770000005C8FC27534E35041C3F528FC19A9544148E17AD434E35041CDCCCCBC19A95441295C8F3238E35041A4703D9A1AA954411F85EB113CE35041EC51B8AE18A954411F85EB813FE35041295C8F5201A954415C8FC26542E35041295C8F4202A95441E17A140E45E35041AE47E10A03A9544152B81E6546E35041EC51B8BE03A954417B14AEB748E350413D0AD773FEA8544148E17AB449E35041E17A140EFDA85441CDCCCC3C4AE35041C3F5283CF9A85441CDCCCC3C4AE35041713D0A27F6A85441E17A14DE49E35041F6285C3FF5A85441CDCCCC5C47E35041AE47E12AF2A854410AD7A3B047E350413D0AD793EFA85441A4703D1A48E35041CDCCCCACEEA85441A4703D1A45E3504152B81EC5EDA85441C3F5287C41E35041C3F528CCF1A854413333331341E350419A999989F2A85441713D0A6741E350419A999989F2A854418FC2F5783FE350413D0AD793F5A8544148E17A243CE35041A4703DBAF6A85441E17A14FE37E35041AE47E12AF5A85441C3F5289C38E35041F6285CCFF3A85441EC51B84E36E350417B14AE07F3A85441A4703D1A36E35041E17A14BEF2A854415C8FC25534E35041D7A370DDF2A854410AD7A3D032E350418FC2F538F1A854410AD7A3D02CE350418FC2F518F1A8544148E17A442AE350417B14AE07F0A85441333333A327E35041F6285CEFEDA8544185EB51B827E35041295C8FF2ECA854419A99995927E35041CDCCCC8CEBA85441D7A3703D26E35041295C8FF2E9A854413333333326E35041EC51B89EE9A85441F6285CDF25E35041713D0AD7E8A85441A4703DAA28E35041E17A14BEE6A8544152B81EB528E3504185EB5158E5A85441713D0AA729E350413D0AD723E5A854415C8FC2752BE3504152B81E55E3A85441E17A148E2AE35041CDCCCCACE2A854410AD7A3F029E3504152B81E55E3A85441713D0AA729E350417B14AE27E1A85441C3F5282C2BE350413D0AD743DFA854419A9999592AE35041F6285CEFDEA854411F85EB9129E3504100000060E0A85441333333A327E35041CDCCCCACDFA85441E17A141E26E3504166666666E1A8544185EB51B824E35041EC51B82EE2A854410000001024E35041713D0AD7E2A85441295C8FE221E35041D7A370FDE3A854419A9999E91FE3504133333363E2A854413D0AD7231FE35041AE47E1DAE2A854411F85EBA11EE350419A999939E5A854413D0AD7A31EE35041713D0AB7E5A854415C8FC2951FE350410AD7A320E6A85441B81E85DB1DE350413D0AD7B3E9A85441B81E851B1DE35041A4703D9AE9A85441A4703D7A1CE350418FC2F568EBA85441CDCCCC4C1CE3504114AE47E1EBA85441E17A143E1DE35041B81E857BEDA85441B81E85DB1AE35041295C8F62F1A854418FC2F5281DE3504100000040F2A85441AE47E11A1EE35041F6285CCFF3A854419A9999791EE350418FC2F5A8F5A85441C3F5282C1CE35041E17A14BEF5A854417B14AE871DE350415C8FC215FBA8544114AE47411CE35041D7A370DDFBA85441295C8FE21BE350410AD7A3E0FAA854419A9999791BE35041A4703D2AFBA85441295C8F7216E35041E17A14CEFAA85441F6285C5F14E3504185EB515800A9544114AE47F114E350410000009002A954413D0AD71314E350419A99996904A954410000005012E350411F85EBF104A954410000005012E35041EC51B85E07A95441333333D30FE35041A4703D3A09A95441713D0AC714E3504114AE47110BA954410000003018E35041E17A149E0AA95441D7A3705D1AE3504185EB51380CA95441666666761CE35041F6285CAF08A954419A99990920E350413D0AD7E308A954419A9999E922E35041A4703D9A0BA95441C3F528BC20E3504152B81E150DA95441713D0A371FE35041713D0A770CA95441713D0AA71DE350411F85EB810CA9544148E17AD41CE35041D7A370BD0DA95441B81E85DB1DE350410AD7A3C00FA954410AD7A3F01DE3504148E17AA411A954418FC2F5B81EE350413333339313A95441E17A141E1DE35041D7A3702D15A95441CDCCCC0C1FE35041AE47E1EA15A95441AE47E11A21E350413D0AD75316A95441D7A3705D20E350418FC2F5D817A9544185EB51B821E35041295C8F221BA95441333333A324E35041E17A147E1FA954410000003027E350410AD7A33023A954418FC2F52829E350415C8FC2D521A95441AE47E18A28E350413D0AD7C320A954415C8FC20527E35041EC51B8AE20A9544148E17AD425E35041CDCCCCDC1FA9544148E17AD425E35041AE47E1EA1EA9544185EB51B827E35041D7A3702D1EA9544114AE47D126E350411F85EBD11CA95441F6285CBF25E35041000000001CA954411F85EB2125E3504148E17A341CA954417B14AEF724E3504152B81EF51BA95441A4703DAA25E350410AD7A3301AA954410AD7A36025E35041F6285CAF17A9544114AE47D126E35041713D0A0717A95441666666C626E35041000000E015A95441D7A370CD27E35041A4703D9A14A95441F6285CBF28E35041E17A14EE14A95441A4703DCA28E350413D0AD75316A95441B81E85DB29E35041EC51B8CE17A95441D7A370CD2DE35041F6285C8F17A954417B14AEF730E3504114AE47A118A95441AE47E1FA32E35041E17A14EE17A954415C8FC27534E35041C3F528FC19A95441
+</a>
+
+<b>
+01060000000100000001030000000200000021010000070420771EE35041EC5F9CF012A954418FC2F5B81EE350413333339313A95441874FDBA71EE350414FD446A413A954414C21D0A81EE35041AB70CDA713A954414E93A9261DE35041A9FEF32915A9544176444FD61DE350414963FC7315A954411CD92E591FE35041D894F1F415A95441D6A20F1121E3504131E0BA4816A95441FE567F0D21E35041E2842B5116A95441AE47E11A21E350413D0AD75316A95441A3308BAD20E35041A7326C3417A95441ECEDB06220E350411F46B3E517A954419617AD7120E35041B3910E0A18A954412BE7D27420E350417AA0B11118A954410CFF0C8220E35041C0F6C83118A95441DC1CAB8720E35041F71E6A3F18A954414F94829820E350411999466818A954415E07FFB220E35041C95189A818A95441EF3DD7C821E3504183293C3B1BA9544151DEA01922E35041C3AFE5B31BA954413D22B37B22E35041B4BB5F461CA954410AC0243027E350413B988A3023A954416DE320FE27E35041537D0AA322A954416CF8FF3228E3504138A0B87E22A9544111DA0F4228E3504170D85F7422A95441C22A63BE28E35041E836F81E22A954418FB9062829E35041875C24D421A9544197A2BAD328E350419185124221A9544184BE90BA28E350410E0E781621A954413EEB519F28E35041711F42E720A95441AB7F7D9928E35041161128DD20A9544113884D9728E3504160C25DD920A9544101EDB19528E35041108894D620A954419772A83127E350416A451AB120A954415C8FC20527E35041EC51B8AE20A9544148E17AD425E35041CDCCCCDC1FA9544148E17AD425E35041622AAFC41FA95441701004BB25E35041BE0D96B11FA954412963F6CF25E3504108D21EE01EA95441F52FF3B527E350411C05E0291EA9544131648A2027E35041C3E523491DA95441AA4CF0B526E350413E82F7BC1CA9544153A52FB526E350411DDE63BC1CA95441C69AF2B026E350413A5724B91CA95441421C71C425E35041C240230D1CA9544101725B1C25E350410A3D4B401CA95441AE7533E924E35041891F4AE11BA95441CF3CAF7925E35041C698AEAB1AA95441A4703DAA25E350410AD7A3301AA954412BBF756E25E350416A18C62718A954419C23215E25E35041E424A0BD17A954410103096225E35041813684BB17A954410AD7A36025E35041F6285CAF17A954419FF06DFB25E350412BFEAE6817A9544105E487CB26E350419D0F4FF816A95441472EEABC26E35041E9DBFCD315A95441AED04FCB27E35041D317BE9914A95441D7A370CD27E35041A4703D9A14A9544195B0BCD527E35041708D1D9D14A9544129E3C8C328E35041A27F21EA14A954418A73B5D928E35041AF1AD75E16A95441BA8C0FE629E35041E2060FCE17A9544138485F732AE350415C7231C517A95441D3B4351C2BE3504112C699BA17A954417B709CE22BE35041694827AE17A95441EC83B0C22DE35041634E298317A95441965203502FE3504102BD0C1218A954417B14AEF730E3504114AE47A118A9544157E5232E31E350414D5A568E18A95441945DBCF632E350417601EDE717A95441E68AEDD633E350417C969E1F19A954415C8FC27534E35041C3F528FC19A95441432D59C434E35041923C97C719A9544182B8C2D234E350416EB7ACB619A954410CDEA5D736E35041BD3321411AA95441295C8F3238E35041A4703D9A1AA954417F2C085938E350417A5C2A871AA954417DF2EA853BE35041A2AF47E018A954411F85EB113CE35041EC51B8AE18A95441E5AAFE703CE3504100C2FBB115A9544154E641093DE350418A9BCBDA11A95441B1ADE3493DE350415E8AB06610A954411F85EB813FE35041295C8F5201A95441390000CE3FE350412D6C3D6B01A95441C01AFC0343E350414934267102A95441E17A140E45E35041AE47E10A03A954414328ED5846E3504140D453B803A954419BCDC03A47E350415ADDE4D701A954417B14AEB748E350413D0AD773FEA8544123563CFE48E350417E84FD0FFEA85441E7E379B349E3504156D2CC05FDA85441C00E14F049E35041097AFB20FBA85441B44D9B224AE35041693D10F8F9A85441CDCCCC3C4AE35041C3F5283CF9A85441CDCCCC3C4AE350410347A994F6A85441830C86324AE35041233C502CF6A85441BB27E1114AE35041040E0FBEF5A85441547A26EA49E35041B320E25CF5A854410DB747E749E3504108F0DC55F5A85441E17A14DE49E35041F6285C3FF5A85441F8D7CCC347E350415BDE85A9F2A85441D235745547E350415E171922F2A8544148765BB047E350419D282C69EFA85441BBC2F70348E350411CCB14A6EEA85441CF1861E846E350414E328850EEA85441E52F38B346E3504190D77E40EEA85441821A549746E35041B6EA1438EEA85441784AC91445E35041141B31CBEDA854419981E91145E35041624864CEEDA85441A7E540EA44E3504157918BFAEDA8544100715E1844E35041080FEFF4EEA854416233127E41E35041104508CAF1A85441AD5F3B2141E350417DEE4381F2A85441FAD2B74B41E350419A999989F2A85441713D0A6741E350419A999989F2A8544143C5062C41E3504142D28DE6F2A854416FA359CF3FE350418BAA160FF5A85441D8CBD49C3FE350418191565BF5A854418FC2F5783FE350413D0AD793F5A8544148E17A243CE35041A4703DBAF6A854412017951C3CE35041247145B7F6A854413341C1163CE350419F954FB9F6A854411D6B90FE37E35041D548832CF5A85441A48F27FF37E3504119AF482BF5A85441E17A14FE37E35041AE47E12AF5A854417E15D79238E350413B39D9E3F3A85441CA388D8B37E3504114B60273F3A85441EC51B84E36E350417B14AE07F3A85441C35C663D36E3504189B963EFF2A854415FFA16F735E35041C22284C0F2A85441FF6BEAE735E35041C95C91C1F2A85441675DF3D435E35041FFD9E1C2F2A854416E447FB035E350416EA168C5F2A8544177D7ABAF35E35041AA4877C5F2A854412454FE7434E350416C1E6EE8F2A85441EBF5B06834E3504138C020DCF2A854415C8FC25534E35041D7A370DDF2A854410CE2935A33E35041C5AC03CEF1A854410794AE4B33E35041C65E1EBFF1A854412A4243CC32E35041FC0BB33FF1A85441ECB8E5F731E35041FC0BB33FF1A85441D0F895CE30E35041FC0BB33FF1A854415BC635402DE35041E1CC481BF1A854410AD7A3D02CE350418FC2F518F1A85441B18FFFCA2CE350414C8D9816F1A854419F4BC2A82CE35041FDF03915F1A8544167CB22562AE35041564C6316F0A854419601129A29E35041B577EF7FEFA85441C287266328E3504183774388EEA85441B23A40D627E3504118A90618EEA8544146B1C19C27E35041A4268FFDEDA8544136A482B727E350419D7680EFECA854416377C6B627E350418FB8B9ECECA85441DD89FEB527E350418E96C6E9ECA85441900FACB527E3504146118FE8ECA854411E8018B327E35041E8E3D3DEECA85441441B65A927E35041500B30BAECA85441209A73A127E3504161712F9CECA85441B4CF825D27E35041FD66929BEBA85441AE0D5FBB26E3504112C15DA8EAA854410F0D61A526E3504153C19D88EAA8544121AF243126E35041064B52F7E9A8544121AF243126E35041F453D299E9A85441E8AE8EE825E350419EF5F1ECE8A854410A6E3DD625E3504127744FC8E8A85441B3E9E2AA28E350419C57D3A8E6A85441487277AD28E350411B72FB53E6A85441487277AD28E350416F049459E5A85441D91EE09F29E3504135D9F91CE5A85441F11955802AE35041BD2D8C4AE4A854415C8FC2752BE3504152B81E55E3A85441E17A148E2AE35041CDCCCCACE2A854410CC4D8432AE350416CC729FCE2A85441A8497ADC29E35041CCABC274E3A85441D91EE09F29E350410DFEBC16E1A85441C9C076C02AE350416D6AC0C9DFA85441B7DC60242BE350416F0E844DDFA8544122DCD2A22AE35041F70DBD0CDFA85441EBAA8C712AE350418F0AF8F8DEA8544165520FD629E35041E20E34E2DFA854411F85EB9129E3504100000060E0A854418A08418529E350416E7D695BE0A85441FC08938129E35041C07CEE60E0A854414687B5A227E35041B46B5BADDFA85441E17A141E26E3504166666666E1A85441D7E22C1B26E3504166C20668E1A854414499D71226E35041AE3EA471E1A85441A1973AA724E35041EDD4BF45E2A85441DE156CF123E350413A568EFBE2A854412745768F22E35041BD2120A2E3A85441295C8FE221E35041D7A370FDE3A854411B06DAEA1FE35041DC843764E2A854418952FBD91FE350419FDEA66CE2A854410CEBBB301FE3504143A913D3E2A85441337979DA1EE350418142DE48E4A8544185229BA21EE35041641A6B66E5A854413D0AD7A31EE35041713D0AB7E5A854415C8FC2951FE350410AD7A320E6A85441D8059D8F1FE3504128385C2DE6A8544180FA47901FE35041239BAF2DE6A854414881B2771FE350418D8DDA5EE6A85441B81E85DB1DE350413D0AD7B3E9A854417E5019CE1DE35041BEEE0CB2E9A85441BBB7C3C91DE350414220B8BAE9A85441C427631A1DE35041C75C7D9DE9A854414591C0011DE350416B432BE4E9A8544145A1F8FE1CE3504190D825ECE9A85441F08EFBD81CE350411D8A2359EAA8544174CB737C1CE3504192623C81EBA854410EAD184D1CE3504176B0C8E1EBA854416E8180171DE350410758ED39EDA854411F55C33A1DE35041AA95D16EEDA85441E365AB381DE35041FB1C5272EDA85441E17A143E1DE35041B81E857BEDA85441460AF44A1BE35041E4A939ACF0A85441776131DE1AE35041BEC32962F1A85441489A0B431DE350411E99FB47F2A854419D6FDD281EE3504125148DE0F3A85441420152811EE350418BD1ABA8F5A854419D21EE301CE35041DCE6FFC2F5A85441B40E9C911DE350414A7D570AFBA85441BEE076861DE3504185CFF910FBA854417B14AE871DE350415C8FC215FBA8544114AE47411CE35041D7A370DDFBA8544160913D271CE35041C653F197FBA854411E99EFDE1BE350419D672EE3FAA854418C6F699F1BE3504115C0B90FFBA85441732BA5691BE350413FFAA836FBA85441FF8EAA5917E3504109EEA0DEFAA85441295C8F7216E35041E17A14CEFAA85441F079372016E35041CE3AEDA9FBA854410857C15F14E35041AA8BDB5900A9544107830EC014E35041CC0881D001A9544194BB77D214E350410F1E211802A9544114AE47F114E350410000009002A954416B9D3FF014E3504173C3349202A95441FCC9F7F414E3504193488DA502A954418A64C22014E350412F12F84D04A954413D0AD71314E350419A99996904A954419EDFC81214E35041F21BEB6904A95441173B8E0E14E35041FA64607204A954410000005012E35041C960760005A954410000005012E35041064E899406A954416871AD5612E35041B8B5814F07A954410000005012E35041A643D95407A954410000005012E35041EC51B85E07A954413E1CAE9611E35041BDC61AE907A954412C44BAE70FE3504132DADD4109A95441D48FC21410E350415DF4985209A95441D10E072610E35041A34C035909A954415D26365910E35041277C076C09A95441894B719710E350413960268309A9544115C2B5BB10E35041FDD39F9009A9544162DE3BC910E35041B91AA69509A95441E92AE53011E350419E7E29BC09A954415614F7DB11E35041E139B8FB09A95441EEEE2B2D12E3504133E6E3190AA95441FEEABCD514E350419023570F0BA954410000003018E35041E17A149E0AA9544195351D3718E35041E0C550A30AA95441451E924018E35041C46F14A20AA954411D095A0A1AE350416B1F2CFB0BA95441A76801231AE350413BE3500D0CA954411BA20C5C1AE3504101EC4B370CA954412C01F7C61AE35041068A79860BA95441666666761CE35041F6285CAF08A954419A99990920E350413D0AD7E308A954419A9999E922E35041A4703D9A0BA954418EF4BCE722E35041BA67819B0BA954416C12D5F222E3504170D8ACA50BA95441CD60DB1121E35041F2A5DFDA0CA95441C3F528BC20E3504152B81E150DA9544111F826B920E3504142E9E5130DA95441300554A820E35041F6A9B61E0DA95441A7D642631FE35041AF3B01890CA95441713D0A371FE35041713D0A770CA95441F20C7D021FE35041B12A78780CA95441BA6140B61DE35041DF66168C0CA9544169E23CD51CE35041D29FECBE0DA95441404B24111DE35041CC2141340EA95441C10B75591DE35041D6E6E4C10EA95441427E8E801DE35041BAC7790E0FA95441B81E85DB1DE350410AD7A3C00FA95441192AB0DC1DE3504126AD66DB0FA954414CDABCE71DE350413971FAF30FA954414CDABCE71DE35041B914845410A95441D89600EA1DE35041FE966A0C11A954410AD7A3F01DE3504148E17AA411A95441070420771EE35041EC5F9CF012A9544104000000D876050843E3504144D1AC44F3A85441A4B88F0143E3504194A72756F3A854412F25A84D42E3504185AE34F6F2A85441D876050843E3504144D1AC44F3A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911977 - 373518
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000770000005C8FC27534E35041C3F528FC19A9544148E17AD434E35041CDCCCCBC19A95441295C8F3238E35041A4703D9A1AA954411F85EB113CE35041EC51B8AE18A954411F85EB813FE35041295C8F5201A954415C8FC26542E35041295C8F4202A95441E17A140E45E35041AE47E10A03A9544152B81E6546E35041EC51B8BE03A954417B14AEB748E350413D0AD773FEA8544148E17AB449E35041E17A140EFDA85441CDCCCC3C4AE35041C3F5283CF9A85441CDCCCC3C4AE35041713D0A27F6A85441E17A14DE49E35041F6285C3FF5A85441CDCCCC5C47E35041AE47E12AF2A854410AD7A3B047E350413D0AD793EFA85441A4703D1A48E35041CDCCCCACEEA85441A4703D1A45E3504152B81EC5EDA85441C3F5287C41E35041C3F528CCF1A854413333331341E350419A999989F2A85441713D0A6741E350419A999989F2A854418FC2F5783FE350413D0AD793F5A8544148E17A243CE35041A4703DBAF6A85441E17A14FE37E35041AE47E12AF5A85441C3F5289C38E35041F6285CCFF3A85441EC51B84E36E350417B14AE07F3A85441A4703D1A36E35041E17A14BEF2A854415C8FC25534E35041D7A370DDF2A854410AD7A3D032E350418FC2F538F1A854410AD7A3D02CE350418FC2F518F1A8544148E17A442AE350417B14AE07F0A85441333333A327E35041F6285CEFEDA8544185EB51B827E35041295C8FF2ECA854419A99995927E35041CDCCCC8CEBA85441D7A3703D26E35041295C8FF2E9A854413333333326E35041EC51B89EE9A85441F6285CDF25E35041713D0AD7E8A85441A4703DAA28E35041E17A14BEE6A8544152B81EB528E3504185EB5158E5A85441713D0AA729E350413D0AD723E5A854415C8FC2752BE3504152B81E55E3A85441E17A148E2AE35041CDCCCCACE2A854410AD7A3F029E3504152B81E55E3A85441713D0AA729E350417B14AE27E1A85441C3F5282C2BE350413D0AD743DFA854419A9999592AE35041F6285CEFDEA854411F85EB9129E3504100000060E0A85441333333A327E35041CDCCCCACDFA85441E17A141E26E3504166666666E1A8544185EB51B824E35041EC51B82EE2A854410000001024E35041713D0AD7E2A85441295C8FE221E35041D7A370FDE3A854419A9999E91FE3504133333363E2A854413D0AD7231FE35041AE47E1DAE2A854411F85EBA11EE350419A999939E5A854413D0AD7A31EE35041713D0AB7E5A854415C8FC2951FE350410AD7A320E6A85441B81E85DB1DE350413D0AD7B3E9A85441B81E851B1DE35041A4703D9AE9A85441A4703D7A1CE350418FC2F568EBA85441CDCCCC4C1CE3504114AE47E1EBA85441E17A143E1DE35041B81E857BEDA85441B81E85DB1AE35041295C8F62F1A854418FC2F5281DE3504100000040F2A85441AE47E11A1EE35041F6285CCFF3A854419A9999791EE350418FC2F5A8F5A85441C3F5282C1CE35041E17A14BEF5A854417B14AE871DE350415C8FC215FBA8544114AE47411CE35041D7A370DDFBA85441295C8FE21BE350410AD7A3E0FAA854419A9999791BE35041A4703D2AFBA85441295C8F7216E35041E17A14CEFAA85441F6285C5F14E3504185EB515800A9544114AE47F114E350410000009002A954413D0AD71314E350419A99996904A954410000005012E350411F85EBF104A954410000005012E35041EC51B85E07A95441333333D30FE35041A4703D3A09A95441713D0AC714E3504114AE47110BA954410000003018E35041E17A149E0AA95441D7A3705D1AE3504185EB51380CA95441666666761CE35041F6285CAF08A954419A99990920E350413D0AD7E308A954419A9999E922E35041A4703D9A0BA95441C3F528BC20E3504152B81E150DA95441713D0A371FE35041713D0A770CA95441713D0AA71DE350411F85EB810CA9544148E17AD41CE35041D7A370BD0DA95441B81E85DB1DE350410AD7A3C00FA954410AD7A3F01DE3504148E17AA411A954418FC2F5B81EE350413333339313A95441E17A141E1DE35041D7A3702D15A95441CDCCCC0C1FE35041AE47E1EA15A95441AE47E11A21E350413D0AD75316A95441D7A3705D20E350418FC2F5D817A9544185EB51B821E35041295C8F221BA95441333333A324E35041E17A147E1FA954410000003027E350410AD7A33023A954418FC2F52829E350415C8FC2D521A95441AE47E18A28E350413D0AD7C320A954415C8FC20527E35041EC51B8AE20A9544148E17AD425E35041CDCCCCDC1FA9544148E17AD425E35041AE47E1EA1EA9544185EB51B827E35041D7A3702D1EA9544114AE47D126E350411F85EBD11CA95441F6285CBF25E35041000000001CA954411F85EB2125E3504148E17A341CA954417B14AEF724E3504152B81EF51BA95441A4703DAA25E350410AD7A3301AA954410AD7A36025E35041F6285CAF17A9544114AE47D126E35041713D0A0717A95441666666C626E35041000000E015A95441D7A370CD27E35041A4703D9A14A95441F6285CBF28E35041E17A14EE14A95441A4703DCA28E350413D0AD75316A95441B81E85DB29E35041EC51B8CE17A95441D7A370CD2DE35041F6285C8F17A954417B14AEF730E3504114AE47A118A95441AE47E1FA32E35041E17A14EE17A954415C8FC27534E35041C3F528FC19A95441
+</a>
+
+<b>
+01060000000100000001030000000200000021010000070420771EE35041EC5F9CF012A954418FC2F5B81EE350413333339313A95441874FDBA71EE350414FD446A413A954414C21D0A81EE35041AB70CDA713A954414E93A9261DE35041A9FEF32915A9544176444FD61DE350414963FC7315A954411CD92E591FE35041D894F1F415A95441D6A20F1121E3504131E0BA4816A95441FE567F0D21E35041E2842B5116A95441AE47E11A21E350413D0AD75316A95441A3308BAD20E35041A7326C3417A95441ECEDB06220E350411F46B3E517A954419617AD7120E35041B3910E0A18A954412BE7D27420E350417AA0B11118A954410CFF0C8220E35041C0F6C83118A95441DC1CAB8720E35041F71E6A3F18A954414F94829820E350411999466818A954415E07FFB220E35041C95189A818A95441EF3DD7C821E3504183293C3B1BA9544151DEA01922E35041C3AFE5B31BA954413D22B37B22E35041B4BB5F461CA954410AC0243027E350413B988A3023A954416DE320FE27E35041537D0AA322A954416CF8FF3228E3504138A0B87E22A9544111DA0F4228E3504170D85F7422A95441C22A63BE28E35041E836F81E22A954418FB9062829E35041875C24D421A9544197A2BAD328E350419185124221A9544184BE90BA28E350410E0E781621A954413EEB519F28E35041711F42E720A95441AB7F7D9928E35041161128DD20A9544113884D9728E3504160C25DD920A9544101EDB19528E35041108894D620A954419772A83127E350416A451AB120A954415C8FC20527E35041EC51B8AE20A9544148E17AD425E35041CDCCCCDC1FA9544148E17AD425E35041622AAFC41FA95441701004BB25E35041BE0D96B11FA954412963F6CF25E3504108D21EE01EA95441F52FF3B527E350411C05E0291EA9544131648A2027E35041C3E523491DA95441AA4CF0B526E350413E82F7BC1CA9544153A52FB526E350411DDE63BC1CA95441C69AF2B026E350413A5724B91CA95441421C71C425E35041C240230D1CA9544101725B1C25E350410A3D4B401CA95441AE7533E924E35041891F4AE11BA95441CF3CAF7925E35041C698AEAB1AA95441A4703DAA25E350410AD7A3301AA954412BBF756E25E350416A18C62718A954419C23215E25E35041E424A0BD17A954410103096225E35041813684BB17A954410AD7A36025E35041F6285CAF17A954419FF06DFB25E350412BFEAE6817A9544105E487CB26E350419D0F4FF816A95441472EEABC26E35041E9DBFCD315A95441AED04FCB27E35041D317BE9914A95441D7A370CD27E35041A4703D9A14A9544195B0BCD527E35041708D1D9D14A9544129E3C8C328E35041A27F21EA14A954418A73B5D928E35041AF1AD75E16A95441BA8C0FE629E35041E2060FCE17A9544138485F732AE350415C7231C517A95441D3B4351C2BE3504112C699BA17A954417B709CE22BE35041694827AE17A95441EC83B0C22DE35041634E298317A95441965203502FE3504102BD0C1218A954417B14AEF730E3504114AE47A118A9544157E5232E31E350414D5A568E18A95441945DBCF632E350417601EDE717A95441E68AEDD633E350417C969E1F19A954415C8FC27534E35041C3F528FC19A95441432D59C434E35041923C97C719A9544182B8C2D234E350416EB7ACB619A954410CDEA5D736E35041BD3321411AA95441295C8F3238E35041A4703D9A1AA954417F2C085938E350417A5C2A871AA954417DF2EA853BE35041A2AF47E018A954411F85EB113CE35041EC51B8AE18A95441E5AAFE703CE3504100C2FBB115A9544154E641093DE350418A9BCBDA11A95441B1ADE3493DE350415E8AB06610A954411F85EB813FE35041295C8F5201A95441390000CE3FE350412D6C3D6B01A95441C01AFC0343E350414934267102A95441E17A140E45E35041AE47E10A03A954414328ED5846E3504140D453B803A954419BCDC03A47E350415ADDE4D701A954417B14AEB748E350413D0AD773FEA8544123563CFE48E350417E84FD0FFEA85441E7E379B349E3504156D2CC05FDA85441C00E14F049E35041097AFB20FBA85441B44D9B224AE35041693D10F8F9A85441CDCCCC3C4AE35041C3F5283CF9A85441CDCCCC3C4AE350410347A994F6A85441830C86324AE35041233C502CF6A85441BB27E1114AE35041040E0FBEF5A85441547A26EA49E35041B320E25CF5A854410DB747E749E3504108F0DC55F5A85441E17A14DE49E35041F6285C3FF5A85441F8D7CCC347E350415BDE85A9F2A85441D235745547E350415E171922F2A8544148765BB047E350419D282C69EFA85441BBC2F70348E350411CCB14A6EEA85441CF1861E846E350414E328850EEA85441E52F38B346E3504190D77E40EEA85441821A549746E35041B6EA1438EEA85441784AC91445E35041141B31CBEDA854419981E91145E35041624864CEEDA85441A7E540EA44E3504157918BFAEDA8544100715E1844E35041080FEFF4EEA854416233127E41E35041104508CAF1A85441AD5F3B2141E350417DEE4381F2A85441FAD2B74B41E350419A999989F2A85441713D0A6741E350419A999989F2A8544143C5062C41E3504142D28DE6F2A854416FA359CF3FE350418BAA160FF5A85441D8CBD49C3FE350418191565BF5A854418FC2F5783FE350413D0AD793F5A8544148E17A243CE35041A4703DBAF6A854412017951C3CE35041247145B7F6A854413341C1163CE350419F954FB9F6A854411D6B90FE37E35041D548832CF5A85441A48F27FF37E3504119AF482BF5A85441E17A14FE37E35041AE47E12AF5A854417E15D79238E350413B39D9E3F3A85441CA388D8B37E3504114B60273F3A85441EC51B84E36E350417B14AE07F3A85441C35C663D36E3504189B963EFF2A854415FFA16F735E35041C22284C0F2A85441FF6BEAE735E35041C95C91C1F2A85441675DF3D435E35041FFD9E1C2F2A854416E447FB035E350416EA168C5F2A8544177D7ABAF35E35041AA4877C5F2A854412454FE7434E350416C1E6EE8F2A85441EBF5B06834E3504138C020DCF2A854415C8FC25534E35041D7A370DDF2A854410CE2935A33E35041C5AC03CEF1A854410794AE4B33E35041C65E1EBFF1A854412A4243CC32E35041FC0BB33FF1A85441ECB8E5F731E35041FC0BB33FF1A85441D0F895CE30E35041FC0BB33FF1A854415BC635402DE35041E1CC481BF1A854410AD7A3D02CE350418FC2F518F1A85441B18FFFCA2CE350414C8D9816F1A854419F4BC2A82CE35041FDF03915F1A8544167CB22562AE35041564C6316F0A854419601129A29E35041B577EF7FEFA85441C287266328E3504183774388EEA85441B23A40D627E3504118A90618EEA8544146B1C19C27E35041A4268FFDEDA8544136A482B727E350419D7680EFECA854416377C6B627E350418FB8B9ECECA85441DD89FEB527E350418E96C6E9ECA85441900FACB527E3504146118FE8ECA854411E8018B327E35041E8E3D3DEECA85441441B65A927E35041500B30BAECA85441209A73A127E3504161712F9CECA85441B4CF825D27E35041FD66929BEBA85441AE0D5FBB26E3504112C15DA8EAA854410F0D61A526E3504153C19D88EAA8544121AF243126E35041064B52F7E9A8544121AF243126E35041F453D299E9A85441E8AE8EE825E350419EF5F1ECE8A854410A6E3DD625E3504127744FC8E8A85441B3E9E2AA28E350419C57D3A8E6A85441487277AD28E350411B72FB53E6A85441487277AD28E350416F049459E5A85441D91EE09F29E3504135D9F91CE5A85441F11955802AE35041BD2D8C4AE4A854415C8FC2752BE3504152B81E55E3A85441E17A148E2AE35041CDCCCCACE2A854410CC4D8432AE350416CC729FCE2A85441A8497ADC29E35041CCABC274E3A85441D91EE09F29E350410DFEBC16E1A85441C9C076C02AE350416D6AC0C9DFA85441B7DC60242BE350416F0E844DDFA8544122DCD2A22AE35041F70DBD0CDFA85441EBAA8C712AE350418F0AF8F8DEA8544165520FD629E35041E20E34E2DFA854411F85EB9129E3504100000060E0A854418A08418529E350416E7D695BE0A85441FC08938129E35041C07CEE60E0A854414687B5A227E35041B46B5BADDFA85441E17A141E26E3504166666666E1A85441D7E22C1B26E3504166C20668E1A854414499D71226E35041AE3EA471E1A85441A1973AA724E35041EDD4BF45E2A85441DE156CF123E350413A568EFBE2A854412745768F22E35041BD2120A2E3A85441295C8FE221E35041D7A370FDE3A854411B06DAEA1FE35041DC843764E2A854418952FBD91FE350419FDEA66CE2A854410CEBBB301FE3504143A913D3E2A85441337979DA1EE350418142DE48E4A8544185229BA21EE35041641A6B66E5A854413D0AD7A31EE35041713D0AB7E5A854415C8FC2951FE350410AD7A320E6A85441D8059D8F1FE3504128385C2DE6A8544180FA47901FE35041239BAF2DE6A854414881B2771FE350418D8DDA5EE6A85441B81E85DB1DE350413D0AD7B3E9A854417E5019CE1DE35041BEEE0CB2E9A85441BBB7C3C91DE350414220B8BAE9A85441C427631A1DE35041C75C7D9DE9A854414591C0011DE350416B432BE4E9A8544145A1F8FE1CE3504190D825ECE9A85441F08EFBD81CE350411D8A2359EAA8544174CB737C1CE3504192623C81EBA854410EAD184D1CE3504176B0C8E1EBA854416E8180171DE350410758ED39EDA854411F55C33A1DE35041AA95D16EEDA85441E365AB381DE35041FB1C5272EDA85441E17A143E1DE35041B81E857BEDA85441460AF44A1BE35041E4A939ACF0A85441776131DE1AE35041BEC32962F1A85441489A0B431DE350411E99FB47F2A854419D6FDD281EE3504125148DE0F3A85441420152811EE350418BD1ABA8F5A854419D21EE301CE35041DCE6FFC2F5A85441B40E9C911DE350414A7D570AFBA85441BEE076861DE3504185CFF910FBA854417B14AE871DE350415C8FC215FBA8544114AE47411CE35041D7A370DDFBA8544160913D271CE35041C653F197FBA854411E99EFDE1BE350419D672EE3FAA854418C6F699F1BE3504115C0B90FFBA85441732BA5691BE350413FFAA836FBA85441FF8EAA5917E3504109EEA0DEFAA85441295C8F7216E35041E17A14CEFAA85441F079372016E35041CE3AEDA9FBA854410857C15F14E35041AA8BDB5900A9544107830EC014E35041CC0881D001A9544194BB77D214E350410F1E211802A9544114AE47F114E350410000009002A954416B9D3FF014E3504173C3349202A95441FCC9F7F414E3504193488DA502A954418A64C22014E350412F12F84D04A954413D0AD71314E350419A99996904A954419EDFC81214E35041F21BEB6904A95441173B8E0E14E35041FA64607204A954410000005012E35041C960760005A954410000005012E35041064E899406A954416871AD5612E35041B8B5814F07A954410000005012E35041A643D95407A954410000005012E35041EC51B85E07A954413E1CAE9611E35041BDC61AE907A954412C44BAE70FE3504132DADD4109A95441D48FC21410E350415DF4985209A95441D10E072610E35041A34C035909A954415D26365910E35041277C076C09A95441894B719710E350413960268309A9544115C2B5BB10E35041FDD39F9009A9544162DE3BC910E35041B91AA69509A95441E92AE53011E350419E7E29BC09A954415614F7DB11E35041E139B8FB09A95441EEEE2B2D12E3504133E6E3190AA95441FEEABCD514E350419023570F0BA954410000003018E35041E17A149E0AA9544195351D3718E35041E0C550A30AA95441451E924018E35041C46F14A20AA954411D095A0A1AE350416B1F2CFB0BA95441A76801231AE350413BE3500D0CA954411BA20C5C1AE3504101EC4B370CA954412C01F7C61AE35041068A79860BA95441666666761CE35041F6285CAF08A954419A99990920E350413D0AD7E308A954419A9999E922E35041A4703D9A0BA954418EF4BCE722E35041BA67819B0BA954416C12D5F222E3504170D8ACA50BA95441CD60DB1121E35041F2A5DFDA0CA95441C3F528BC20E3504152B81E150DA9544111F826B920E3504142E9E5130DA95441300554A820E35041F6A9B61E0DA95441A7D642631FE35041AF3B01890CA95441713D0A371FE35041713D0A770CA95441F20C7D021FE35041B12A78780CA95441BA6140B61DE35041DF66168C0CA9544169E23CD51CE35041D29FECBE0DA95441404B24111DE35041CC2141340EA95441C10B75591DE35041D6E6E4C10EA95441427E8E801DE35041BAC7790E0FA95441B81E85DB1DE350410AD7A3C00FA95441192AB0DC1DE3504126AD66DB0FA954414CDABCE71DE350413971FAF30FA954414CDABCE71DE35041B914845410A95441D89600EA1DE35041FE966A0C11A954410AD7A3F01DE3504148E17AA411A95441070420771EE35041EC5F9CF012A9544104000000D876050843E3504144D1AC44F3A85441A4B88F0143E3504194A72756F3A854412F25A84D42E3504185AE34F6F2A85441D876050843E3504144D1AC44F3A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911980 - 208018
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000002A0000007B14AE077AE35041B81E853B6CA95441333333D37BE35041B81E853B6CA95441C3F528EC7CE35041713D0A576CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA95441AE47E1DA84E350419A9999396DA954411F85EBF186E3504148E17A046CA954419A99998986E35041CDCCCC1C5EA954411F85EB5185E35041D7A370AD55A95441CDCCCC3C85E35041AE47E15A54A9544185EB519883E35041B81E85BB54A95441F6285CCF80E35041713D0A1754A95441CDCCCC8C7FE35041B81E853B53A9544114AE47917DE35041B81E851B52A954415C8FC2857CE350411F85EBF151A95441A4703D3A7CE35041666666E650A95441A4703D9A7CE35041D7A370AD4EA954415C8FC2457DE3504185EB51D84DA95441CDCCCC3C7EE350413D0AD7134CA95441EC51B85E7EE35041A4703D6A4AA9544114AE47917DE350415C8FC26549A95441EC51B80E7DE350415C8FC2E547A95441EC51B8CE7DE3504114AE47E146A95441CDCCCCDC7DE35041A4703D4A46A9544185EB51587EE3504114AE478146A9544114AE47417FE35041EC51B8CE45A9544185EB51887EE35041A4703DCA44A95441C3F528EC7CE350413333330344A954417B14AEB77BE35041E17A142E43A9544152B81E4577E350410AD7A3D041A9544152B81E9575E35041E17A14AE41A95441295C8F2274E35041C3F528EC41A954418FC2F5C870E350417B14AE0742A9544185EB51E870E35041D7A3701D45A954419A99995971E35041A4703DFA44A95441E17A146E71E35041A4703DDA46A954415C8FC2D572E35041A4703D1A4DA954411F85EB5174E35041295C8F6255A954415C8FC24576E35041295C8F725EA954419A9999E977E35041666666A666A954415C8FC24579E35041CDCCCC7C6CA954417B14AE077AE35041B81E853B6CA954410103000000020000004C000000713D0A2775E35041295C8F5226A954418FC2F5E871E35041713D0A3726A954413D0AD7136EE350418FC2F58826A95441A4703D6A66E3504152B81E9527A95441666666C662E35041B81E854B28A95441295C8FA259E350413333331329A954418FC2F55858E3504152B81E4529A9544148E17A7458E35041295C8F422AA954418FC2F53857E3504152B81E852BA95441F6285CFF51E350410AD7A3402BA95441CDCCCC7C51E350410AD7A3802AA95441A4703D8A4EE3504152B81E252BA954415C8FC2B54DE350419A9999F92BA954417B14AE274CE35041C3F528AC2CA95441C3F5282C4AE35041C3F5288C2BA954410AD7A3C048E35041A4703D4A2DA954410AD7A3A047E350410AD7A3C02CA95441713D0AE746E350410AD7A3702EA954410AD7A32046E350411F85EB612EA954419A99996946E350415C8FC21531A95441E17A147E47E35041CDCCCC4C32A95441C3F5280C49E350415C8FC27532A95441E17A14AE47E35041F6285C8F33A954419A99996947E35041F6285C7F34A954417B14AEC74BE350411F85EB9135A95441333333E34EE350415C8FC29533A9544185EB51C851E350413D0AD70334A95441F6285CEF55E350415C8FC29530A9544148E17AE457E350413D0AD7C331A9544148E17AC459E35041CDCCCC8C31A9544148E17AC45CE3504185EB51C832A95441333333B361E35041E17A141E41A95441E17A149E61E350410AD7A32043A954410AD7A34063E350415C8FC26546A95441EC51B8AE63E35041C3F5283C46A95441C3F5282C63E35041C3F5288C44A954417B14AE4763E35041295C8F2242A95441EC51B81E66E35041713D0A2740A954415C8FC24567E350410AD7A38040A95441F6285CDF69E35041B81E859B3DA95441A4703DEA67E35041295C8F823CA9544114AE477166E3504148E17A243BA95441CDCCCC5C66E350411F85EBD137A95441333333E364E35041AE47E1AA36A954413D0AD7B367E350415C8FC20533A9544185EB512868E350413D0AD7A333A95441CDCCCC0C68E35041AE47E15A35A954415C8FC2B569E350418FC2F5F838A9544185EB517869E350418FC2F55839A9544114AE473167E350418FC2F55839A9544185EB512868E3504148E17A543BA954415C8FC2756AE3504148E17A143CA9544185EB51786CE350418FC2F5583CA954413D0AD7136BE35041000000F039A954411F85EBF16DE35041AE47E11A39A95441295C8FD272E350418FC2F5383BA95441E17A147E73E35041666666F639A954419A9999E974E35041D7A370FD39A9544152B81EC575E3504148E17AB43BA95441C3F5287C77E35041E17A14CE3CA954417B14AE1779E350419A9999F93EA954417B14AE977AE35041B81E857B3FA95441333333837DE35041B81E85BB3EA954415C8FC2E57FE35041295C8F823FA9544185EB51A882E3504152B81E5541A9544114AE471182E350411F85EB5139A95441CDCCCCCC81E3504185EB519835A95441F6285C8F81E3504185EB515833A954413D0AD71381E35041A4703D0A31A95441A4703D5A80E35041333333C32EA95441A4703D0A7FE3504152B81E152CA9544114AE47A17CE35041295C8F8229A954417B14AEF77AE350410000004028A954413333330379E35041E17A142E27A9544152B81E8576E350410000009026A95441713D0A2775E35041295C8F5226A9544105000000D7A3709D78E35041713D0A372CA954417B14AEC778E3504185EB51E82AA954415C8FC2357AE350418FC2F5182BA9544185EB51087AE35041713D0A672CA95441D7A3709D78E35041713D0A372CA95441
+</a>
+
+<b>
+0106000000010000000103000000020000004C000000EEE824547AE35041B81E853B6CA95441CE970FB57BE350411CB6CE1E6CA954410C32D3BA7BE35041B81E853B6CA95441333333D37BE35041B81E853B6CA954414FBFD9807CE350411770874C6CA9544184750EAF7CE350411770874C6CA95441F9FFC6597EE35041E93A7D896CA954414F0967AA7FE350411070D0CC6CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA954419EE68BA184E35041BA75ED426DA95441E67BE80285E35041024479226DA95441F51F941786E35041EC82A0826CA95441237D83CD86E35041038A83196CA95441DF50BB9A86E35041E643616560A954419A99998986E35041CDCCCC1C5EA954416D85BC1886E35041C1C0DD0E5BA9544192BBFC4E85E35041478153E655A954417B278F5685E35041FE2F32E555A95441A9F8A05385E35041605C47B955A954411F85EB5185E35041D7A370AD55A954414846B94485E35041B857E6D954A954411BB1413C85E350416840015B54A9544185EB519883E35041B81E85BB54A95441929B59C481E35041A02A8F4F54A9544167AE3E8881E3504179A8736F54A95441C84768BA80E3504179A8736F54A95441369D2D7E7FE35041E7FD383353A95441354604667FE35041A406832553A95441BFE2BE5D7FE350413D7BD12053A95441EC1A29A27DE35041D96EED3052A954415F5F73937CE35041D8860CF451A954415C8FC2857CE350411F85EBF151A954419F02AC617CE35041C221157251A95441427C3B327CE35041687640ED50A95441C636A5987CE35041EBF296A24EA95441A47BEB4A7DE3504192439DC84DA95441529DB63D7EE35041565461084CA954412F352E4B7EE35041C0CA675F4BA95441A6B7BD597EE350414B18B6A84AA954418782825D7EE3504114AE6C794AA9544105AF0E837DE35041F0DD265349A95441AC6DCE067DE35041A16FA4E147A9544189E74BCF7DE350416C8018DB46A954419D133BD37DE35041784AE4B046A954415E48E8CD7DE3504189113A4146A9544136BB60597EE3504128F0D06746A954415FD59F077FE35041C27FE9FA45A954419BBED8387FE35041C21B2FD545A95441770DDD407FE35041530C0ACF45A95441B25F5A8F7EE35041BDD75CDA44A954411AEB53257DE3504103B4CE1E44A95441C3F528EC7CE350413333330344A95441194FE9807CE3504176E01AB943A95441BDF953AF7BE3504121DA772F43A95441065CC2197BE3504193A59CFD42A954411B2B926678E3504175FF792942A95441F98BD14A78E35041ABA3972142A9544107B1F70677E35041FF192DCE41A954411BA4DC9B75E35041DA34BCB041A9544114B2501374E35041892586F041A95441876A0ABF73E35041F5805AEF41A954413D8FDE2F73E3504139A5F2F341A954415AA0473071E35041CD505D0442A954418E3692CB70E350411DDE180C42A95441B89B16D470E35041438BEE1F43A9544185EB51E870E35041D7A3701D45A954419A99995971E35041A4703DFA44A95441E17A146E71E35041A4703DDA46A954415C8FC2D572E35041A4703D1A4DA954411F85EB5174E35041295C8F6255A954415C8FC24576E35041295C8F725EA954419A9999E977E35041666666A666A954415C8FC24579E35041CDCCCC7C6CA954417B14AE077AE35041B81E853B6CA95441EEE824547AE35041B81E853B6CA95441040000004C5A4AAD7EE35041A5B9B6E356A954410F08D5697BE35041796BCB8C57A95441740D33697BE35041A0E3806057A954414C5A4AAD7EE35041A5B9B6E356A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911980 - 394239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000002A0000007B14AE077AE35041B81E853B6CA95441333333D37BE35041B81E853B6CA95441C3F528EC7CE35041713D0A576CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA95441AE47E1DA84E350419A9999396DA954411F85EBF186E3504148E17A046CA954419A99998986E35041CDCCCC1C5EA954411F85EB5185E35041D7A370AD55A95441CDCCCC3C85E35041AE47E15A54A9544185EB519883E35041B81E85BB54A95441F6285CCF80E35041713D0A1754A95441CDCCCC8C7FE35041B81E853B53A9544114AE47917DE35041B81E851B52A954415C8FC2857CE350411F85EBF151A95441A4703D3A7CE35041666666E650A95441A4703D9A7CE35041D7A370AD4EA954415C8FC2457DE3504185EB51D84DA95441CDCCCC3C7EE350413D0AD7134CA95441EC51B85E7EE35041A4703D6A4AA9544114AE47917DE350415C8FC26549A95441EC51B80E7DE350415C8FC2E547A95441EC51B8CE7DE3504114AE47E146A95441CDCCCCDC7DE35041A4703D4A46A9544185EB51587EE3504114AE478146A9544114AE47417FE35041EC51B8CE45A9544185EB51887EE35041A4703DCA44A95441C3F528EC7CE350413333330344A954417B14AEB77BE35041E17A142E43A9544152B81E4577E350410AD7A3D041A9544152B81E9575E35041E17A14AE41A95441295C8F2274E35041C3F528EC41A954418FC2F5C870E350417B14AE0742A9544185EB51E870E35041D7A3701D45A954419A99995971E35041A4703DFA44A95441E17A146E71E35041A4703DDA46A954415C8FC2D572E35041A4703D1A4DA954411F85EB5174E35041295C8F6255A954415C8FC24576E35041295C8F725EA954419A9999E977E35041666666A666A954415C8FC24579E35041CDCCCC7C6CA954417B14AE077AE35041B81E853B6CA954410103000000020000004C000000713D0A2775E35041295C8F5226A954418FC2F5E871E35041713D0A3726A954413D0AD7136EE350418FC2F58826A95441A4703D6A66E3504152B81E9527A95441666666C662E35041B81E854B28A95441295C8FA259E350413333331329A954418FC2F55858E3504152B81E4529A9544148E17A7458E35041295C8F422AA954418FC2F53857E3504152B81E852BA95441F6285CFF51E350410AD7A3402BA95441CDCCCC7C51E350410AD7A3802AA95441A4703D8A4EE3504152B81E252BA954415C8FC2B54DE350419A9999F92BA954417B14AE274CE35041C3F528AC2CA95441C3F5282C4AE35041C3F5288C2BA954410AD7A3C048E35041A4703D4A2DA954410AD7A3A047E350410AD7A3C02CA95441713D0AE746E350410AD7A3702EA954410AD7A32046E350411F85EB612EA954419A99996946E350415C8FC21531A95441E17A147E47E35041CDCCCC4C32A95441C3F5280C49E350415C8FC27532A95441E17A14AE47E35041F6285C8F33A954419A99996947E35041F6285C7F34A954417B14AEC74BE350411F85EB9135A95441333333E34EE350415C8FC29533A9544185EB51C851E350413D0AD70334A95441F6285CEF55E350415C8FC29530A9544148E17AE457E350413D0AD7C331A9544148E17AC459E35041CDCCCC8C31A9544148E17AC45CE3504185EB51C832A95441333333B361E35041E17A141E41A95441E17A149E61E350410AD7A32043A954410AD7A34063E350415C8FC26546A95441EC51B8AE63E35041C3F5283C46A95441C3F5282C63E35041C3F5288C44A954417B14AE4763E35041295C8F2242A95441EC51B81E66E35041713D0A2740A954415C8FC24567E350410AD7A38040A95441F6285CDF69E35041B81E859B3DA95441A4703DEA67E35041295C8F823CA9544114AE477166E3504148E17A243BA95441CDCCCC5C66E350411F85EBD137A95441333333E364E35041AE47E1AA36A954413D0AD7B367E350415C8FC20533A9544185EB512868E350413D0AD7A333A95441CDCCCC0C68E35041AE47E15A35A954415C8FC2B569E350418FC2F5F838A9544185EB517869E350418FC2F55839A9544114AE473167E350418FC2F55839A9544185EB512868E3504148E17A543BA954415C8FC2756AE3504148E17A143CA9544185EB51786CE350418FC2F5583CA954413D0AD7136BE35041000000F039A954411F85EBF16DE35041AE47E11A39A95441295C8FD272E350418FC2F5383BA95441E17A147E73E35041666666F639A954419A9999E974E35041D7A370FD39A9544152B81EC575E3504148E17AB43BA95441C3F5287C77E35041E17A14CE3CA954417B14AE1779E350419A9999F93EA954417B14AE977AE35041B81E857B3FA95441333333837DE35041B81E85BB3EA954415C8FC2E57FE35041295C8F823FA9544185EB51A882E3504152B81E5541A9544114AE471182E350411F85EB5139A95441CDCCCCCC81E3504185EB519835A95441F6285C8F81E3504185EB515833A954413D0AD71381E35041A4703D0A31A95441A4703D5A80E35041333333C32EA95441A4703D0A7FE3504152B81E152CA9544114AE47A17CE35041295C8F8229A954417B14AEF77AE350410000004028A954413333330379E35041E17A142E27A9544152B81E8576E350410000009026A95441713D0A2775E35041295C8F5226A9544105000000D7A3709D78E35041713D0A372CA954417B14AEC778E3504185EB51E82AA954415C8FC2357AE350418FC2F5182BA9544185EB51087AE35041713D0A672CA95441D7A3709D78E35041713D0A372CA95441
+</a>
+
+<b>
+0106000000010000000103000000020000004C000000EEE824547AE35041B81E853B6CA95441CE970FB57BE350411CB6CE1E6CA954410C32D3BA7BE35041B81E853B6CA95441333333D37BE35041B81E853B6CA954414FBFD9807CE350411770874C6CA9544184750EAF7CE350411770874C6CA95441F9FFC6597EE35041E93A7D896CA954414F0967AA7FE350411070D0CC6CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA954419EE68BA184E35041BA75ED426DA95441E67BE80285E35041024479226DA95441F51F941786E35041EC82A0826CA95441237D83CD86E35041038A83196CA95441DF50BB9A86E35041E643616560A954419A99998986E35041CDCCCC1C5EA954416D85BC1886E35041C1C0DD0E5BA9544192BBFC4E85E35041478153E655A954417B278F5685E35041FE2F32E555A95441A9F8A05385E35041605C47B955A954411F85EB5185E35041D7A370AD55A954414846B94485E35041B857E6D954A954411BB1413C85E350416840015B54A9544185EB519883E35041B81E85BB54A95441929B59C481E35041A02A8F4F54A9544167AE3E8881E3504179A8736F54A95441C84768BA80E3504179A8736F54A95441369D2D7E7FE35041E7FD383353A95441354604667FE35041A406832553A95441BFE2BE5D7FE350413D7BD12053A95441EC1A29A27DE35041D96EED3052A954415F5F73937CE35041D8860CF451A954415C8FC2857CE350411F85EBF151A954419F02AC617CE35041C221157251A95441427C3B327CE35041687640ED50A95441C636A5987CE35041EBF296A24EA95441A47BEB4A7DE3504192439DC84DA95441529DB63D7EE35041565461084CA954412F352E4B7EE35041C0CA675F4BA95441A6B7BD597EE350414B18B6A84AA954418782825D7EE3504114AE6C794AA9544105AF0E837DE35041F0DD265349A95441AC6DCE067DE35041A16FA4E147A9544189E74BCF7DE350416C8018DB46A954419D133BD37DE35041784AE4B046A954415E48E8CD7DE3504189113A4146A9544136BB60597EE3504128F0D06746A954415FD59F077FE35041C27FE9FA45A954419BBED8387FE35041C21B2FD545A95441770DDD407FE35041530C0ACF45A95441B25F5A8F7EE35041BDD75CDA44A954411AEB53257DE3504103B4CE1E44A95441C3F528EC7CE350413333330344A95441194FE9807CE3504176E01AB943A95441BDF953AF7BE3504121DA772F43A95441065CC2197BE3504193A59CFD42A954411B2B926678E3504175FF792942A95441F98BD14A78E35041ABA3972142A9544107B1F70677E35041FF192DCE41A954411BA4DC9B75E35041DA34BCB041A9544114B2501374E35041892586F041A95441876A0ABF73E35041F5805AEF41A954413D8FDE2F73E3504139A5F2F341A954415AA0473071E35041CD505D0442A954418E3692CB70E350411DDE180C42A95441B89B16D470E35041438BEE1F43A9544185EB51E870E35041D7A3701D45A954419A99995971E35041A4703DFA44A95441E17A146E71E35041A4703DDA46A954415C8FC2D572E35041A4703D1A4DA954411F85EB5174E35041295C8F6255A954415C8FC24576E35041295C8F725EA954419A9999E977E35041666666A666A954415C8FC24579E35041CDCCCC7C6CA954417B14AE077AE35041B81E853B6CA95441EEE824547AE35041B81E853B6CA95441040000004C5A4AAD7EE35041A5B9B6E356A954410F08D5697BE35041796BCB8C57A95441740D33697BE35041A0E3806057A954414C5A4AAD7EE35041A5B9B6E356A95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548942 - 968098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000009B000000B7DB408F650F51418B9918F82B3C5541EDBF900F610F5141BCB393EB273C5541C779DC6F5E0F51418479FBE1273C5541142F80365B0F51411171B43B263C5541BDF4A3A3560F514167C34222243C5541CD4E5F3D520F51412BF89C37223C554192BFF2CA4F0F51412685FDC2263C55414D9E1455520F51419D9BC977293C554103C4B6F9550F514147DD152F2D3C55416B8DA1A2580F5141C8DF600B303C5541DCBEC25C5B0F5141D912E0442C3C5541ECE431A35C0F514137C4571B2B3C554193B3AA5C5E0F5141268A82DB283C55419C50957C5F0F5141BFFD1EB5283C554144032DE9600F51419DC16B2B2A3C55417C8ACC75630F51417A3B9A512D3C5541503A260F670F5141239B4D84343C55412AB454356A0F5141339C1B373A3C5541B3B4BB0E6D0F51414F3193033F3C5541A3563D686E0F5141A14DAA5C463C554193F8BEC16F0F51411326BE024B3C5541D9DDDCF4700F514123278CB5503C554177069701720F5141F20C11C2543C55419D2FB8E7750F5141E251E2275D3C5541B9C42FB47A0F5141E76156CD6A3C5541512315347C0F5141E13AD14C723C5541980833677D0F51412E8D13197A3C55413CFBC1007E0F5141E1807065803C5541EF4BCF407D0F5141123E3B65833C5541478F6B1A7D0F514138675C4B873C554188AAB4C07E0F514122E25824903C5541DFED509A7E0F51414ED54E97933C55418D74894D7E0F514132E326D7953C5541C458D9CD790F51414E789EA39A3C55411B9C75A7790F51417F3569A39D3C55411008CC8D7A0F5141B502A848AE3C554152B81EC57E0F5141C3F528ACB43C5541AE47E1EA7E0F5141C3F5287CAD3C5541D7A3702D7F0F5141CDCCCC0CA63C554166666656810F5141B81E85BB9D3C5541C3F5283C830F5141CDCCCCEC963C55411F85EBA1840F5141A4703D2A8D3C5541713D0A07870F5141A4703DAA873C554114AE4781890F5141D7A3704D833C5541EC51B85E8E0F51417B14AEA77E3C5541713D0AF7910F5141EC51B86E7A3C554166666676920F5141AE47E16A793C5541C3F5287C930F5141EC51B8CE763C5541E17A147E950F5141C3F528BC6F3C55415C8FC295950F51417B14AE476F3C554185EB51A8950F5141713D0AB76E3C5541C3F528AC950F51419A9999696D3C5541295C8FE2950F5141F6285C0F6B3C55418FC2F538950F5141A4703DDA683C55417B14AE67940F5141E17A140E653C5541B81E85EB930F514148E17A14623C55418FC2F598930F514148E17AE45F3C55410AD7A310930F51418FC2F5285C3C5541AE47E1DA920F514133333373583C5541713D0A27920F51419A9999E9513C55411F85EB31900F5141000000904A3C5541F6285CDF8B0F5141713D0A57443C554185EB51B88A0F51415C8FC2C5413C55418FC2F5888A0F5141295C8FF2403C554114AE47218A0F5141A4703D0A3F3C55411F85EBE1890F51419A9999193E3C5541EC51B8CE890F514152B81E153D3C5541333333D3890F514185EB51B83C3C55415C8FC2F5890F5141B81E858B3C3C5541333333F3890F51418FC2F5583C3C5541EC51B8FE890F5141C3F528BC3B3C554148E17A348A0F5141B81E853B3B3C554152B81E758A0F5141B81E85CB3A3C5541666666E68A0F5141D7A3706D3A3C554114AE47318B0F514185EB51E8393C5541713D0A778B0F5141EC51B85E393C55415C8FC2B58B0F51419A9999A9383C55413D0AD7B38B0F5141AE47E12A383C5541C3F5286C8B0F51410AD7A3F0363C5541B81E853B8B0F5141CDCCCCFC353C5541295C8F028C0F5141AE47E1CA353C5541D7A3709D8C0F5141C3F5288C353C5541A4703DEA8C0F5141E17A143E353C55418FC2F5588D0F51411F85EBD1343C5541666666A68D0F514166666666343C5541EC51B8DE8D0F51419A9999E9333C55415C8FC2158E0F5141EC51B85E333C55417B14AE278E0F514148E17AE4323C55411F85EB118E0F5141E17A146E323C5541E17A14EE8D0F51417B14AEF7313C55410AD7A3A08D0F5141D7A3702D313C5541333333438D0F514100000060303C5541D7A370ED8C0F5141333333B32F3C5541E17A144E8C0F514114AE47B12E3C55415C8FC2C58B0F514148E17A042E3C55417B14AE678B0F51410AD7A3A02D3C55418FC2F5088B0F5141000000502D3C554148E17AC48A0F5141295C8FD22C3C554148E17A948A0F51418FC2F5682C3C5541AE47E17A8A0F51419A9999B92B3C5541CDCCCC7C8A0F5141666666162B3C55417B14AE978A0F5141EC51B81E2A3C55411F85EBD18A0F5141D7A370ED283C55418FC2F5688B0F51411F85EBA1253C5541295C8F628B0F51417B14AEA7223C5541B81E85EB890F5141EC51B8AE1D3C554148E17A74880F5141D7A3705D173C55414EC66440830F5141EBE41FBA0E3C5541E681FAB37D0F514153E3EA2D063C5541D059A7807F0F5141DB4002FB013C55418FE1ADE6840F514117EF2608FD3B5541CB8FD2F37F0F51411282026FF63B55417973BB9A780F51410C15DED5EF3B55413BAF8DFA740F5141F5833A2EF73B55417264D5B0710F51411AEC8EB4FD3B5541936BBFB4700F5141C4A36516FF3B554130CF8B66690F5141A08305C6023C554107626088630F514191E4F3BB053C5541B81E85EB5A0F5141EC51B8DE073C5541C72A9859530F51419C1A23060E3C55414C1A6F9F4B0F51418942434E143C5541A4703D3A4A0F51410AD7A370153C5541C24CD6714C0F5141E335B74C173C5541A7D716BB500F51410A3124E2143C5541B127B627520F5141C7089614143C55416FB08343560F51415DBD3360133C5541181037765D0F514131CA3DED0F3C5541B06E1CF65E0F5141000D73ED0C3C5541D6973DDC620F51411635C6200B3C55418A8B9A28690F514183A0B52D093C5541F73C294E750F51411CFF9AAD0A3C554169153DF4790F514194A183E00E3C55418974894D7E0F5141F61B19E0143C55413231ED737E0F5141FB883D791B3C554168153DF4790F51417EBFCFC51E3C5541C57F5E4E720F5141E03965C5243C5541B5C42FB47A0F5141377D019F243C55414232BB26840F5141842CF45E253C554127409366860F514148211F5E313C5541DB90A0A6850F514168806BB7353C5541C5C5FD66800F5141A4D1DFD0373C5541DBED509A7E0F5141DA587F5D3A3C5541734C361A800F51418982071D413C5541B5677FC0810F514194B90043473C5541539039CD820F51412DBB35CF4F3C554132D43C80850F51413DBC0382553C5541FBEFECFF890F5141A4A3BD1A623C5541179C75A7790F51414D602141623C554158146F41740F514184A121B5563C5541AA8D368E740F514111C90D0F523C554118F9259B720F5141C676CB424A3C5541C77F5E4E720F51418A82071D413C554196C2934E6F0F51419B3D36B7383C554123EA7FA86A0F51418A3C6804333C5541B7DB408F650F51418B9918F82B3C5541
+</a>
+
+<b>
+010600000001000000010300000001000000700000003115A2C5790F51419EF59FD19F3C55411B9C75A7790F51417F3569A39D3C55412E3A36AD790F514101DC5C309D3C5541C458D9CD790F51414E789EA39A3C554112CE18687B0F5141A57205EE983C554194E71ED07B0F51411A02107F983C5541668740927D0F51416C24EC9E963C55412F10E65D7E0F5141F053705C953C554142D434A07E0F51417422D50F933C5541E5F658937E0F514115F00F318F3C554128FD64007E0F5141AC11DC1C8C3C554127FBEF767D0F5141E806973B893C5541478F6B1A7D0F514138675C4B873C554197C6BA227D0F514111C95073863C554164326F367D0F51412ED6FD72843C5541EF4BCF407D0F5141123E3B65833C5541152DA2DC7D0F51417CB9EFF5803C5541AA6B56EE7D0F5141691D07A47F3C55413E3B8DD67D0F5141F5A046AA7E3C5541A1D52F797D0F51410CF6F1D57A3C5541C9844ED17C0F51416B34C64A763C5541034752CF7B0F514159ED0255703C5541CF16335E7B0F514157FC661F6E3C55412848E3CF7A0F514114F3D7576B3C554160340F50790F51416BC799D8663C554172F8BFE3780F5141FE7498A4653C55418BABC49C760F51414ED2BD2A5F3C5541AEA54509760F5141A3994C875D3C55413D2D8A4E740F51414EEA92B6593C554177069701720F5141F20C11C2543C5541998E0BC8710F51414FAC1BE4533C5541D9DDDCF4700F514123278CB5503C5541ACB05760700F51418B9013F44D3C5541FC65463C6F0F51410D660237493C5541A3563D686E0F5141A14DAA5C463C554172AA03DA6D0F514106DD5356433C5541B562268D6D0F51412201D8B3413C554159316F616D0F5141472DD6C5403C55413147CF146D0F5141546BA8243F3C5541ACEDC6556C0F51411BE211CC3D3C554102A965386A0F51415CA4453C3A3C55412AB454356A0F5141339C1B373A3C5541C8E19838670F51415DD64DCF343C5541503A260F670F5141239B4D84343C55414AE240A5640F514116EB82B02F3C5541C288DA90630F51410638B6872D3C5541FD645D2B610F5141280D2F7D2A3C55419C50957C5F0F5141BFFD1EB5283C554193B3AA5C5E0F5141268A82DB283C5541ECE431A35C0F514137C4571B2B3C554175D0ACBD5B0F51417DA18AEC2B3C55411CBAC63D5B0F5141214DC56F2C3C55414DA63ADD5A0F5141BEAD6EF52C3C55416B8DA1A2580F5141C8DF600B303C554155DEEA09590F514140F8FFD42F3C554158BDE369590F514143D7F834303C55415117766A5A0F5141F5B1FE53323C5541C03D1E5A5B0F514180501AA1333C554123F3116A5C0F51412CF0AE3E353C5541DDA7778B5D0F5141505E040D373C5541E08AE6C65E0F514195719929393C5541CC2447FF5F0F5141CD3540493B3C55418544C6F4600F5141C609CC463D3C5541260F4EC4610F51412E9071F63E3C55415AE07E17630F514100644868423C554149AD96B3630F514185D28311443C5541B69E36DC640F51418C4F9639473C554161EC0478650F51418CC1BED8483C5541567AFA93660F51415077D3C64B3C55416A184D0D670F5141FC89CB164D3C5541B9A87264670F5141EE1610964E3C55419BED67C5670F514194047B40503C554190A27811680F514183A7B4B4513C5541CBA14158680F5141329D557F533C5541E547C988680F51416581C4B9543C5541F3C862A0680F5141EBAB08BF553C55416C6D86B1680F51410C912E28573C5541B5C89DC3680F5141A7DD63A5583C55416EE168C4680F5141C32E9CFE593C5541315A51A0680F5141BE570C845B3C55410137414F680F51418D9CBBEE5E3C55418A0649E9670F5141C579003B633C55416D19F2AC670F5141E0165ACA653C55412A6C9D6B670F51414CE6BBE6683C5541B5F87400670F5141327AFD006E3C55411CBEF1C8660F51418C5BB0A5703C554118A35B87660F5141862AFCBA733C554137FCFF34660F5141D0B74192773C5541BF3AEA88660F5141248503097B3C5541F021233C660F51417501EEDB7E3C55418E53B1D5660F51419875985B833C55419132AA35670F51414E9FEDF4863C5541128224D5670F51415C5B710C8C3C55419612AB71690F5141CF7C4B24903C554186BC25B26A0F51419A5AB632933C55416DBBBB1A6C0F51410189E099963C554189DC51A56D0F514114BD872B9A3C5541C2DCF81F6F0F5141775456599D3C55419A886EA4700F5141B6C90B6AA03C5541A3446F31720F514110C70E3EA33C5541C66409BE730F51413FBF7FD3A53C554126C8D14E750F51416FB45207A83C5541AFEA549C760F514141AE82DCA93C55414030E1B4770F51417CF32F67AB3C55417EF7F753790F5141762F23AFAD3C55418E2CA27A7A0F5141B2FE3905AE3C55415B6670677A0F514144F6F25EAC3C5541BB707D4D7A0F51411213FAA2A93C554193BDAD1D7A0F5141B4A0772EA63C5541CBCCF8F2790F51413F3A6418A33C55417DFEF9E1790F51419D51FADDA13C55413115A2C5790F51419EF59FD19F3C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>913934 - 1025227
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000E17A148E570651410AD7A32067BA54415C8FC20562065141EC51B85E66BA5441F6285CFF6B06514152B81E4565BA5441A4703DAA6D0651415C8FC21565BA54417B14AE277B06514114AE47A163BA5441D7A3703D81065141A4703D8A62BA5441E17A14AE9A0651411F85EBF15CBA54415C8FC2059B065141E17A14DE5CBA5441F6285CEF9F065141F6285CBF5BBA5441713D0A07A1065141A4703D3A5ABA544152B81E15A006514114AE471151BA54415C8FC235990651410AD7A39050BA54413D0AD7B398065141333333A350BA54419A9999C987065141B81E858B51BA54419A9999E980065141713D0A1752BA54411F85EB817A065141333333A352BA54415C8FC24575065141B81E856B53BA5441B81E855B71065141E17A144E54BA54415C8FC2B569065141B81E85AB54BA5441E17A141E570651413333338354BA54411F85EBB154065141F6285C0F55BA5441AE47E1AA4F065141000000B054BA54413D0AD76347065141666666A654BA544148E17A7442065141295C8F5254BA5441CDCCCC3C3C065141713D0A4753BA5441AE47E12A3A0651417B14AE1753BA54418FC2F588290651419A99991951BA54419A9999A90C065141C3F5281C4EBA5441A4703D9A0C0651419A9999A94EBA5441B81E852B0C06514185EB51B852BA54410AD7A3700C0651416666666663BA544185EB51980D0651419A9999D963BA54417B14AE07100651411F85EBD163BA544166666696140651415C8FC2E562BA5441D7A3705D1D065141C3F5284C62BA54419A99999923065141EC51B84E62BA5441666666262A065141CDCCCCDC62BA5441CDCCCCBC3B065141666666F665BA544185EB510843065141F6285C3F67BA54418FC2F5F84806514185EB51A867BA544152B81E354A065141E17A14BE67BA5441A4703D3A51065141B81E856B67BA5441E17A148E570651410AD7A32067BA5441
+</a>
+
+<b>
+0106000000010000000103000000010000006E00000012C7DF787D0651416214536252BA54419A9999E980065141713D0A1752BA5441DF2C86FE8306514112F57FD851BA544136058ECF86065141147E579F51BA54419A9999C987065141B81E858B51BA544128552CDC96065141825581BC50BA544152B81EE596065141AE47E1CA4FBA5441E17A14AE9A065141CDCCCC9C4FBA5441666666F69F065141A4703DEA4FBA5441000000B08C065141F6285CAF2EBA54417B14AEC78D065141AE47E14A24BA5441AE47E1FA87065141AE47E1FA23BA544114AE47217906514185EB517824BA54410000003063065141F6285C4F26BA54413D0AD7435806514114AE478126BA54417B14AE574906514148E17A9426BA5441E17A149E41065141CDCCCC3C26BA54415C8FC2752F0651416666668625BA54417B14AEA71F065141295C8F8226BA54411F85EB4119065141CDCCCC1C27BA5441F6285CAF180651415C8FC2D528BA54419A99993917065141F6285CDF28BA5441295C8F8214065141AE47E1CA28BA5441295C8F52F805514114AE478127BA5441CDCCCCFCED0551416666667627BA5441A4703DBAED055141CDCCCC6C28BA5441B81E851BEF055141C3F5283C29BA5441C3F5289CF105514185EB51982BBA5441666666F6F3055141EC51B82E2DBA544100000000F5055141EC51B80E2EBA544166666646F505514148E17A342FBA5441A4703DBAF405514148E17AA42FBA544148E17AE4E0055141E17A146E2DBA544148E17A54D9055141A4703D5A2DBA54419A9999C9C005514152B81E9528BA5441F6285CBFB805514152B81E9528BA5441AE47E12AB80551419A9999692ABA544133333373B5055141E17A146E2CBA5441C3F5285CB10551417B14AE572CBA54413D0AD7B3A3055141A4703D0A27BA5441666666F6A1055141B81E850B27BA5441AE47E1FA9F0551415C8FC26526BA5441E17A147E98055141C3F5285C26BA5441EC51B8DE940551419A99998925BA5441A4703D8A8F055141B81E857B22BA5441F6285C9F8C0551410AD7A33021BA54411F85EBB189055141CDCCCC6C20BA5441333333F38305514114AE47211FBA5441E17A147E7F055141666666161FBA5441C3F528BC790551417B14AE171FBA5441EC51B87E7B0551417B14AE7724BA5441B81E857B7E0551417B14AE4727BA544114AE475182055141713D0A572ABA54411F85EB4186055141D7A3702D2DBA5441A4703DCA8B055141C3F5284C30BA5441D7A3703D92055141B81E856B32BA5441EC51B84E980551410000006034BA5441B81E858BA0055141D7A370ED36BA54410AD7A3B0A705514152B81E6539BA5441295C8FC2AC0551417B14AEA73ABA544185EB5178B10551411F85EBA13BBA5441E17A149EBB05514148E17A943EBA54419A9999B9BF055141333333B33FBA5441CDCCCCFCC30551417B14AE5740BA54419A9999B9D605514114AE47F142BA54415C8FC215DD0551410000008043BA544100000010E5055141C3F5288C44BA54413D0AD743F4055141AE47E11A47BA54411F85EB61F60551417B14AE7747BA5441F6285CCFFF0551418FC2F56849BA54417B14AE47090651413D0AD7534BBA5441333333F3090651418FC2F5784BBA5441E17A14CE0B0651413333334348BA544148E17A24110651417B14AE573ABA5441F6285CEF12065141713D0A4735BA54418FC2F56813065141EC51B8EE33BA5441CDCCCC0C14065141F6285C2F33BA544133333393140651411F85EB9132BA5441F6285CCF14065141B81E854B32BA54417B14AE17160651418FC2F5482EBA5441666666661606514114AE47D12CBA5441EC51B82E1806514114AE47E12CBA5441EC51B8FE17065141295C8FC22EBA54419A99991913065141A4703D8A3BBA544166666666120651417B14AE573DBA5441333333F30D065141B81E85CB48BA5441EC51B8DE0C065141AE47E12A4CBA54419A9999A90C065141C3F5281C4EBA54414C60A5BB1A06514100F22E914FBA5441AE47E1BA1A06514148E17A344FBA544194725BE3220651418B0A6F624FBA5441000000002C0651415C8FC2954FBA5441DB8029F02B065141366A4C6351BA5441AE47E12A3A0651417B14AE1753BA5441CDCCCC3C3C065141713D0A4753BA544148E17A7442065141295C8F5254BA54413D0AD76347065141666666A654BA5441AE47E1AA4F065141000000B054BA54411F85EBB154065141F6285C0F55BA5441E17A141E570651413333338354BA5441A7BD4F6C57065141A5DADC8354BA5441DF9E26AE5F065141F5F5C49554BA54418855C5F165065141E9985AA354BA5441C738993C68065141913353A854BA5441E499D9816B065141B4918F9554BA5441B81E855B71065141E17A144E54BA54415C8FC24575065141B81E856B53BA544150A477D37606514125A4123053BA54411F85EB817A065141333333A352BA544112C7DF787D0651416214536252BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>913934 - 3435350
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000E17A148E570651410AD7A32067BA54415C8FC20562065141EC51B85E66BA5441F6285CFF6B06514152B81E4565BA5441A4703DAA6D0651415C8FC21565BA54417B14AE277B06514114AE47A163BA5441D7A3703D81065141A4703D8A62BA5441E17A14AE9A0651411F85EBF15CBA54415C8FC2059B065141E17A14DE5CBA5441F6285CEF9F065141F6285CBF5BBA5441713D0A07A1065141A4703D3A5ABA544152B81E15A006514114AE471151BA54415C8FC235990651410AD7A39050BA54413D0AD7B398065141333333A350BA54419A9999C987065141B81E858B51BA54419A9999E980065141713D0A1752BA54411F85EB817A065141333333A352BA54415C8FC24575065141B81E856B53BA5441B81E855B71065141E17A144E54BA54415C8FC2B569065141B81E85AB54BA5441E17A141E570651413333338354BA54411F85EBB154065141F6285C0F55BA5441AE47E1AA4F065141000000B054BA54413D0AD76347065141666666A654BA544148E17A7442065141295C8F5254BA5441CDCCCC3C3C065141713D0A4753BA5441AE47E12A3A0651417B14AE1753BA54418FC2F588290651419A99991951BA54419A9999A90C065141C3F5281C4EBA5441A4703D9A0C0651419A9999A94EBA5441B81E852B0C06514185EB51B852BA54410AD7A3700C0651416666666663BA544185EB51980D0651419A9999D963BA54417B14AE07100651411F85EBD163BA544166666696140651415C8FC2E562BA5441D7A3705D1D065141C3F5284C62BA54419A99999923065141EC51B84E62BA5441666666262A065141CDCCCCDC62BA5441CDCCCCBC3B065141666666F665BA544185EB510843065141F6285C3F67BA54418FC2F5F84806514185EB51A867BA544152B81E354A065141E17A14BE67BA5441A4703D3A51065141B81E856B67BA5441E17A148E570651410AD7A32067BA5441
+</a>
+
+<b>
+0106000000010000000103000000010000006E00000012C7DF787D0651416214536252BA54419A9999E980065141713D0A1752BA5441DF2C86FE8306514112F57FD851BA544136058ECF86065141147E579F51BA54419A9999C987065141B81E858B51BA544128552CDC96065141825581BC50BA544152B81EE596065141AE47E1CA4FBA5441E17A14AE9A065141CDCCCC9C4FBA5441666666F69F065141A4703DEA4FBA5441000000B08C065141F6285CAF2EBA54417B14AEC78D065141AE47E14A24BA5441AE47E1FA87065141AE47E1FA23BA544114AE47217906514185EB517824BA54410000003063065141F6285C4F26BA54413D0AD7435806514114AE478126BA54417B14AE574906514148E17A9426BA5441E17A149E41065141CDCCCC3C26BA54415C8FC2752F0651416666668625BA54417B14AEA71F065141295C8F8226BA54411F85EB4119065141CDCCCC1C27BA5441F6285CAF180651415C8FC2D528BA54419A99993917065141F6285CDF28BA5441295C8F8214065141AE47E1CA28BA5441295C8F52F805514114AE478127BA5441CDCCCCFCED0551416666667627BA5441A4703DBAED055141CDCCCC6C28BA5441B81E851BEF055141C3F5283C29BA5441C3F5289CF105514185EB51982BBA5441666666F6F3055141EC51B82E2DBA544100000000F5055141EC51B80E2EBA544166666646F505514148E17A342FBA5441A4703DBAF405514148E17AA42FBA544148E17AE4E0055141E17A146E2DBA544148E17A54D9055141A4703D5A2DBA54419A9999C9C005514152B81E9528BA5441F6285CBFB805514152B81E9528BA5441AE47E12AB80551419A9999692ABA544133333373B5055141E17A146E2CBA5441C3F5285CB10551417B14AE572CBA54413D0AD7B3A3055141A4703D0A27BA5441666666F6A1055141B81E850B27BA5441AE47E1FA9F0551415C8FC26526BA5441E17A147E98055141C3F5285C26BA5441EC51B8DE940551419A99998925BA5441A4703D8A8F055141B81E857B22BA5441F6285C9F8C0551410AD7A33021BA54411F85EBB189055141CDCCCC6C20BA5441333333F38305514114AE47211FBA5441E17A147E7F055141666666161FBA5441C3F528BC790551417B14AE171FBA5441EC51B87E7B0551417B14AE7724BA5441B81E857B7E0551417B14AE4727BA544114AE475182055141713D0A572ABA54411F85EB4186055141D7A3702D2DBA5441A4703DCA8B055141C3F5284C30BA5441D7A3703D92055141B81E856B32BA5441EC51B84E980551410000006034BA5441B81E858BA0055141D7A370ED36BA54410AD7A3B0A705514152B81E6539BA5441295C8FC2AC0551417B14AEA73ABA544185EB5178B10551411F85EBA13BBA5441E17A149EBB05514148E17A943EBA54419A9999B9BF055141333333B33FBA5441CDCCCCFCC30551417B14AE5740BA54419A9999B9D605514114AE47F142BA54415C8FC215DD0551410000008043BA544100000010E5055141C3F5288C44BA54413D0AD743F4055141AE47E11A47BA54411F85EB61F60551417B14AE7747BA5441F6285CCFFF0551418FC2F56849BA54417B14AE47090651413D0AD7534BBA5441333333F3090651418FC2F5784BBA5441E17A14CE0B0651413333334348BA544148E17A24110651417B14AE573ABA5441F6285CEF12065141713D0A4735BA54418FC2F56813065141EC51B8EE33BA5441CDCCCC0C14065141F6285C2F33BA544133333393140651411F85EB9132BA5441F6285CCF14065141B81E854B32BA54417B14AE17160651418FC2F5482EBA5441666666661606514114AE47D12CBA5441EC51B82E1806514114AE47E12CBA5441EC51B8FE17065141295C8FC22EBA54419A99991913065141A4703D8A3BBA544166666666120651417B14AE573DBA5441333333F30D065141B81E85CB48BA5441EC51B8DE0C065141AE47E12A4CBA54419A9999A90C065141C3F5281C4EBA54414C60A5BB1A06514100F22E914FBA5441AE47E1BA1A06514148E17A344FBA544194725BE3220651418B0A6F624FBA5441000000002C0651415C8FC2954FBA5441DB8029F02B065141366A4C6351BA5441AE47E12A3A0651417B14AE1753BA5441CDCCCC3C3C065141713D0A4753BA544148E17A7442065141295C8F5254BA54413D0AD76347065141666666A654BA5441AE47E1AA4F065141000000B054BA54411F85EBB154065141F6285C0F55BA5441E17A141E570651413333338354BA5441A7BD4F6C57065141A5DADC8354BA5441DF9E26AE5F065141F5F5C49554BA54418855C5F165065141E9985AA354BA5441C738993C68065141913353A854BA5441E499D9816B065141B4918F9554BA5441B81E855B71065141E17A144E54BA54415C8FC24575065141B81E856B53BA544150A477D37606514125A4123053BA54411F85EB817A065141333333A352BA544112C7DF787D0651416214536252BA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>902413 - 233466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000000F000000295C8FA2D8B45041CDCCCC3CF7265441CDCCCC0CDAB450418FC2F5C8EC26544100000040D2B45041A4703D7AEC265441CDCCCCBCCCB45041295C8FC215275441C3F5281CCAB45041E17A146E29275441AE47E1FAC9B45041000000B02A27544100000010D0B45041295C8FD22A275441EC51B8AED1B4504152B81E5529275441000000F0D1B45041713D0A5728275441E17A144ED4B45041D7A370FD162754413333335308B5504185EB515830275441CDCCCC3C07B5504185EB51381B275441000000E0D6B450417B14AE2704275441295C8F52D8B45041E17A148EF9265441295C8FA2D8B45041CDCCCC3CF72654410A0000008FC2F5F8CCB45041AE47E1FA1D27544185EB51B8CCB450410AD7A3401D27544185EB51D8CCB45041666666B61C275441C3F528FCCDB4504152B81E251C275441666666A6CEB45041E17A148E1C275441F6285CFFCEB4504185EB51581D275441EC51B8DECEB45041333333431E27544152B81E65CEB450413D0AD7731E275441333333A3CDB450413D0AD7531E2754418FC2F5F8CCB45041AE47E1FA1D275441070000009A999949F2B450418FC2F5A816275441713D0AB7F1B4504152B81E6516275441C3F5280CF2B450419A99995915275441EC51B84EF0B4504185EB511813275441AE47E1CAF0B450419A9999C91227544185EB5198F2B450415C8FC2A5152754419A999949F2B450418FC2F5A816275441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000EC51B84EF0B4504185EB511813275441E4037131EFB45041845FD1D111275441118EDF87EFB45041C1D3EEE90F275441D15BA726EEB4504101CD79410F275441A0CEB1A8EBB45041818A38110E275441A81FDA61E7B4504176CE11070C27544141F34AFCE2B45041C9D244EE0927544125ADD584E2B450419E074CB509275441000000E0D6B450417B14AE2704275441E383A726D4B45041B0D45AAC16275441D7CF2BE1E3B45041DE69C8941E27544181182C2CE8B45041E40F72AC202754419A999949F2B450418FC2F5A816275441713D0AB7F1B4504152B81E6516275441C3F5280CF2B450419A99995915275441EC51B84EF0B4504185EB511813275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>902413 - 340321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000000F000000295C8FA2D8B45041CDCCCC3CF7265441CDCCCC0CDAB450418FC2F5C8EC26544100000040D2B45041A4703D7AEC265441CDCCCCBCCCB45041295C8FC215275441C3F5281CCAB45041E17A146E29275441AE47E1FAC9B45041000000B02A27544100000010D0B45041295C8FD22A275441EC51B8AED1B4504152B81E5529275441000000F0D1B45041713D0A5728275441E17A144ED4B45041D7A370FD162754413333335308B5504185EB515830275441CDCCCC3C07B5504185EB51381B275441000000E0D6B450417B14AE2704275441295C8F52D8B45041E17A148EF9265441295C8FA2D8B45041CDCCCC3CF72654410A0000008FC2F5F8CCB45041AE47E1FA1D27544185EB51B8CCB450410AD7A3401D27544185EB51D8CCB45041666666B61C275441C3F528FCCDB4504152B81E251C275441666666A6CEB45041E17A148E1C275441F6285CFFCEB4504185EB51581D275441EC51B8DECEB45041333333431E27544152B81E65CEB450413D0AD7731E275441333333A3CDB450413D0AD7531E2754418FC2F5F8CCB45041AE47E1FA1D275441070000009A999949F2B450418FC2F5A816275441713D0AB7F1B4504152B81E6516275441C3F5280CF2B450419A99995915275441EC51B84EF0B4504185EB511813275441AE47E1CAF0B450419A9999C91227544185EB5198F2B450415C8FC2A5152754419A999949F2B450418FC2F5A816275441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000EC51B84EF0B4504185EB511813275441E4037131EFB45041845FD1D111275441118EDF87EFB45041C1D3EEE90F275441D15BA726EEB4504101CD79410F275441A0CEB1A8EBB45041818A38110E275441A81FDA61E7B4504176CE11070C27544141F34AFCE2B45041C9D244EE0927544125ADD584E2B450419E074CB509275441000000E0D6B450417B14AE2704275441E383A726D4B45041B0D45AAC16275441D7CF2BE1E3B45041DE69C8941E27544181182C2CE8B45041E40F72AC202754419A999949F2B450418FC2F5A816275441713D0AB7F1B4504152B81E6516275441C3F5280CF2B450419A99995915275441EC51B84EF0B4504185EB511813275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13600 - 3101259
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A000000CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541A0E0F5AD0B1F514139E2E462572155415DC753A60A1F5141143AB1B556215541A7C9DA5BFD1E5141EAC2332E5C2155419F9825ACFE1E5141E3917E7E5D2155416A9A7C32031F51417347C3335D2155412520463C071F514161E8E95E672155419350DE69041F514102A74D1F69215541093FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE1242068215541A68D170EFB1E51415FB01F4E5F215541C3F5284CF91E514152B81E455D215541CDCCCCCCF31E51418FC2F5A85F2155418FC2F5A8EE1E51411F85EB916221554166666616E81E5141F6285C7F66215541B81E85BBE11E51413D0AD753692155413D0AD7A3DD1E5141CDCCCCAC6A215541D7A3707DD71E5141C3F5280C6D21554185EB5158D11E51410AD7A3207021554133333383C81E51410AD7A3707721554114AE4731CA1E5141CDCCCC5C792155418FC2F538D51E514114AE47F187215541EC51B80EDA1E5141A4703DBA86215541EC51B83EDF1E5141713D0AF788215541666666B6E01E51418FC2F5D8892155410AD7A320FA1E514148E17A34A421554185EB5108FC1E514148E17A94A321554185EB5138FF1E514152B81E95A2215541D7A370ED051F5141CDCCCCFC9E2155417B14AEA70A1F5141B81E859B9C215541F6285CEF0C1F5141C3F5281C9B2155410AD7A340091F51410AD7A340952155419A999959051F5141D7A3703D8F2155411F85EB61011F5141333333D389215541EC51B80E091F5141333333C381215541AE47E19A0B1F5141713D0AE77E215541CDCCCC6C0C1F5141000000007D215541713D0AF70C1F51415C8FC2F579215541DD3CD9B90B1F5141E1E8F0D56A2155416D81EB8C0B1F5141D4C96D3469215541CDCCCC3C0B1F5141C3F5287C67215541
+</a>
+
+<b>
+0106000000010000000103000000010000006D00000044BC3D81CC1E51414860598C75215541BDF9F594CD1E5141BA8BA89874215541B1AE13B4CF1E51414A34D5FE72215541977DE5E4CF1E51418095FED9722155414D98FC4FD01E51413DA42F89722155410DDB1C35D21E5141CA671E1B712155416FE9DD25D41E514179E67CEE6F2155415DC007C3D51E514171FF71F46E215541B720CD2BD71E5141D3301C1A6E215541BC9858F1DC1E5141CE1E4FFD6B21554107B0006EE11E514176915E566A215541C2D88732E81E51419B8A724B672155417A331775E91E5141B7126FA7662155418B91134BED1E5141C07A1EB46421554141A143DCF51E51413E814B4A6021554116D978E5F51E5141242E8D4560215541143EEB7FF71E5141D1363DFB64215541043AF17FF81E5141F0FB1E186621554124EB3E5AF91E51414A4895E5662155419FAF6461F91E5141A06A4FEC66215541BFBAE46EF91E51411551220467215541ADBE211B021F514166D442D973215541FBFA378A031F5141F6E31BDE752155412F6D775C051F5141BF9B926E78215541055C1FDF061F51416B7D13897A215541AEB8F25E0B1F5141F32A16747F215541C2E1BC750C1F51414EF2AECD7C215541A8FF9CC00C1F5141618C29287B215541B5DD5DD30C1F51410D9B4F4278215541CD5584C20C1F51414B31A27477215541D136C39B0C1F5141A557939B75215541BC9FDB850C1F5141C2E7319074215541883579620C1F5141DCBC45E072215541FEC4643F0C1F51416E6111347121554178E5A0100C1F514113E239F96E21554134772FD00B1F51419DDA98E66B215541F9FFDAA90B1F5141E30952416A215541F8E063820B1F514193FD90FA682155414D08F3080B1F51419C4D07B9632155419F8F32F00A1F5141B6AA42ED6121554162E621C70A1F5141F6DB78F25E2155417F7033AE0A1F5141FA68A4885C215541E478A8FB0A1F51416D698FF95A2155413AB360580B1F5141B765D71B59215541E3B15C8B0B1F514144B02715582155411479E85E0B1F5141644FF52E572155413467B2CE0A1F5141C5DE36D0562155413CC3A8AF091F5141C681391B57215541AB5C629E061F5141C2B3745E582155410F3E2B6B051F5141FE0FE9DC58215541470051F6031F514167D86176592155419154FED9021F51417CF469EB59215541960C09FE001F51414A5753AF5A215541203C8928001F51411D8334075B21554137861BA5FE1E51419739ADA65B21554142EA8769FD1E5141C3A492285C215541A19825ACFE1E5141E1917E7E5D215541805871BC001F5141AA2A695C5D21554185A98F41021F5141C36F4E435D215541659A7C32031F51417347C3335D21554174AB7810041F51417C75BC625F215541B778F6D2041F514172C77A4C6121554157218FB1051F5141E044FE7C632155410DE9F840061F5141AB381EE6642155412BF990DB061F5141DB9B656B662155412020463C071F51415CE8E95E672155410D083AF9051F514124006D2768215541ED7C33A7031F5141DDC3D18969215541AB484458021F5141A1DB15416A215541053FBDD5011F5141CB8E81886A2155412EE82BEEFF1E5141917CE27E682155413074E6C8FF1E5141FC9E0257682155411797CD4BFF1E5141093C679067215541C0DE517DFE1E514187E24DFE65215541E8EB2806FE1E5141E382411665215541D314C53BFD1E514117C5208C6321554125D2B47FFC1E51414B28E61D62215541BA129DDFFB1E514186B323E6602155413B4CE96DFB1E51418123B80860215541D3053EE3FA1E51410E66811C5F2155413536D55AFA1E5141BA748C7E5E215541F0A8ECC4F91E51414EE6F5D05D215541A2141A5DF91E5141EBEFBC585D215541A21B7605F41E51418FAD53905F2155416B069C9CF11E5141BE541CE660215541177BB0B7EF1E514117ABA5F86121554125EB4AEBED1E51414239420363215541E4CE0428EA1E514165C6E0426521554166666616E81E5141F6285C7F662155414FBD1820E61E51419A880B5F67215541B05914C5E31E5141E16F946B68215541BC9D6ED9E11E5141A0038546692155419AFCC403E01E5141DAF3A1E46921554197C93A12DE1E5141C3F873886A2155419639AE06DD1E514107826DE96A2155416D2B9C4DDB1E514118A194936B215541FD684149D71E514145E150266D215541BE1AEA26D51E51418F3C27386E21554170C77A14D21E5141C39E54C26F2155419C40DFAAD01E5141402D3DB070215541076468D5CE1E51418B90E9347221554159A0A1D2CC1E5141B09B19DF73215541F9131C03CB1E5141F47CDA5E75215541EC1EE5D2C91E5141671FB75A7621554191527ADBC81E5141CBD68D2777215541EF606A7BC81E5141D682177F772155413300C25BC91E5141BAF77468782155416F2BCD51C91E51419539105D7821554144BC3D81CC1E51414860598C75215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13600 - 3462629
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002A000000CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541A0E0F5AD0B1F514139E2E462572155415DC753A60A1F5141143AB1B556215541A7C9DA5BFD1E5141EAC2332E5C2155419F9825ACFE1E5141E3917E7E5D2155416A9A7C32031F51417347C3335D2155412520463C071F514161E8E95E672155419350DE69041F514102A74D1F69215541093FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE1242068215541A68D170EFB1E51415FB01F4E5F215541C3F5284CF91E514152B81E455D215541CDCCCCCCF31E51418FC2F5A85F2155418FC2F5A8EE1E51411F85EB916221554166666616E81E5141F6285C7F66215541B81E85BBE11E51413D0AD753692155413D0AD7A3DD1E5141CDCCCCAC6A215541D7A3707DD71E5141C3F5280C6D21554185EB5158D11E51410AD7A3207021554133333383C81E51410AD7A3707721554114AE4731CA1E5141CDCCCC5C792155418FC2F538D51E514114AE47F187215541EC51B80EDA1E5141A4703DBA86215541EC51B83EDF1E5141713D0AF788215541666666B6E01E51418FC2F5D8892155410AD7A320FA1E514148E17A34A421554185EB5108FC1E514148E17A94A321554185EB5138FF1E514152B81E95A2215541D7A370ED051F5141CDCCCCFC9E2155417B14AEA70A1F5141B81E859B9C215541F6285CEF0C1F5141C3F5281C9B2155410AD7A340091F51410AD7A340952155419A999959051F5141D7A3703D8F2155411F85EB61011F5141333333D389215541EC51B80E091F5141333333C381215541AE47E19A0B1F5141713D0AE77E215541CDCCCC6C0C1F5141000000007D215541713D0AF70C1F51415C8FC2F579215541DD3CD9B90B1F5141E1E8F0D56A2155416D81EB8C0B1F5141D4C96D3469215541CDCCCC3C0B1F5141C3F5287C67215541
+</a>
+
+<b>
+01060000000100000001030000000100000060000000EB6565CC061F5141616B9B747A2155416F51A83D0B1F51411EB3B24F7F215541AE47E19A0B1F5141713D0AE77E215541CDCCCC6C0C1F5141000000007D215541BDE1BC750C1F514151F2AECD7C215541ABFF9CC00C1F5141618C29287B215541B6DD5DD30C1F5141089B4F4278215541D05584C20C1F51414D31A27477215541CC36C39B0C1F5141A157939B75215541B99FDB850C1F5141C4E73190742155418B3579620C1F5141D8BC45E072215541FCC4643F0C1F5141726111347121554173E5A0100C1F51410EE239F96E21554131772FD00B1F5141A2DA98E66B215541F6FFDAA90B1F5141E30952416A215541FBE063820B1F514194FD90FA68215541CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541E578A8FB0A1F51416A698FF95A2155413EB360580B1F5141B865D71B59215541E7B15C8B0B1F514148B02715582155411079E85E0B1F5141624FF52E572155413067B2CE0A1F5141C4DE36D05621554138C3A8AF091F5141C181391B57215541AC5C629E061F5141C7B3745E58215541123E2B6B051F5141F90FE9DC58215541430051F6031F514162D86176592155418F54FED9021F51417BF469EB59215541990C09FE001F51414B5753AF5A2155411F3C8928001F51411F8334075B21554139861BA5FE1E51419439ADA65B21554145EA8769FD1E5141C8A492285C215541A19825ACFE1E5141E1917E7E5D2155417D5871BC001F5141A62A695C5D21554181A98F41021F5141C56F4E435D215541659A7C32031F51417347C3335D21554178AB7810041F51417C75BC625F215541B878F6D2041F514171C77A4C612155415B218FB1051F5141DF44FE7C632155410AE9F840061F5141B0381EE6642155412CF990DB061F5141DB9B656B662155412020463C071F51415CE8E95E672155410F083AF9051F514129006D2768215541F07C33A7031F5141E2C3D18969215541AF484458021F51419FDB15416A215541053FBDD5011F5141CB8E81886A21554131E82BEEFF1E51418C7CE27E682155413374E6C8FF1E5141019F0257682155411797CD4BFF1E5141043C679067215541C5DE517DFE1E51418CE24DFE65215541E7EB2806FE1E5141E282411665215541D214C53BFD1E514112C5208C6321554124D2B47FFC1E51414828E61D62215541B5129DDFFB1E514184B323E6602155413F4CE96DFB1E51417D23B80860215541D5053EE3FA1E51411166811C5F2155413336D55AFA1E5141B8748C7E5E215541EBA8ECC4F91E51414CE6F5D05D2155419E141A5DF91E5141EBEFBC585D215541A61B7605F41E514192AD53905F21554166069C9CF11E5141C0541CE660215541127BB0B7EF1E514115ABA5F86121554120EB4AEBED1E51414039420363215541E7CE0428EA1E514169C6E0426521554166666616E81E5141F6285C7F6621554151BD1820E61E51419F880B5F67215541B45914C5E31E5141E46F946B68215541B89D6ED9E11E5141A0038546692155419FFCC403E01E5141DBF3A1E46921554195C93A12DE1E5141C0F873886A2155419939AE06DD1E514104826DE96A2155416F2B9C4DDB1E514117A194936B21554101694149D71E514144E150266D215541BB1AEA26D51E5141903C27386E21554171C77A14D21E5141BE9E54C26F2155419840DFAAD01E51413D2D3DB070215541026468D5CE1E51418890E9347221554159A0A1D2CC1E5141B29B19DF73215541FD131C03CB1E5141F97CDA5E75215541E91EE5D2C91E5141661FB75A762155418C527ADBC81E5141CED68D2777215541F2606A7BC81E5141D482177F772155410000C25BC91E514182F77468782155416C2BCD51C91E51419439105D78215541C2F9F594CD1E5141BA8BA898742155410DDB1C35D21E5141CA671E1B71215541BA20CD2BD71E5141CE301C1A6E215541BE9858F1DC1E5141CC1E4FFD6B21554109B0006EE11E514170915E566A215541C7D88732E81E5141978A724B672155418D91134BED1E5141BF7A1EB4642155411AD978E5F51E5141262E8D45602155419231EB95F71E51411F12DD3B65215541A2AF6461F91E5141A16A4FEC662155417DB6129BFB1E5141AE554C366A215541EB6565CC061F5141616B9B747A215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502897 - 1549119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3E05AFD504133333333CEFB5441D7A3701D5EFD5041CDCCCC7CCEFB54413D0AD7C35FFD5041E17A141ECDFB5441B81E85EB60FD5041333333B3C0FB544148E17A5460FD5041F6285C3FB1FB5441666666A661FD50417B14AE07ACFB54419A99990953FD5041D7A3707DA9FB544152B81EA556FD5041E17A14FEC5FB54410AD7A33059FD5041AE47E1EACCFB54410AD7A3E05AFD504133333333CEFB5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000EEC401EE57FD50415007FD7CC9FB5441FA3E368559FD50415007FD7CC9FB5441D02D550C5AFD504157368926BAFB5441152FB69E58FD504118F97B2EBAFB5441BDBAB10758FD5041CE3AA0E7C7FB54412D1EE57157FD504120F5462BC8FB5441EEC401EE57FD50415007FD7CC9FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502897 - 3214904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3E05AFD504133333333CEFB5441D7A3701D5EFD5041CDCCCC7CCEFB54413D0AD7C35FFD5041E17A141ECDFB5441B81E85EB60FD5041333333B3C0FB544148E17A5460FD5041F6285C3FB1FB5441666666A661FD50417B14AE07ACFB54419A99990953FD5041D7A3707DA9FB544152B81EA556FD5041E17A14FEC5FB54410AD7A33059FD5041AE47E1EACCFB54410AD7A3E05AFD504133333333CEFB5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000EEC401EE57FD50415007FD7CC9FB5441FA3E368559FD50415007FD7CC9FB5441D02D550C5AFD504157368926BAFB5441152FB69E58FD504118F97B2EBAFB5441BDBAB10758FD5041CE3AA0E7C7FB54412D1EE57157FD504120F5462BC8FB5441EEC401EE57FD50415007FD7CC9FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516080 - 1441960
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999F9AAF1504152B81E4599105541CDCCCC0CAEF15041AE47E1FAA01055419A9999B9AEF15041C3F528ACA21055410AD7A370AEF1504152B81E95A410554133333373B3F1504148E17A44B0105541295C8F12B4F150413D0AD703B010554185EB51B8C2F150413D0AD723A8105541A4703D1ABDF15041CDCCCCCCA110554185EB51A8B7F15041F6285C8F9F10554148E17AF4B5F1504185EB51B89C105541000000B0B4F150410AD7A3B098105541D7A370BDB4F15041C3F5282C94105541AE47E1FAB5F1504185EB51F88F105541B81E851BB7F15041D7A3709D8E1055413D0AD7C3B7F150415C8FC2858C105541295C8FB2B7F15041AE47E1DA8B105541C3F5284CB7F15041AE47E1DA8A1055411F85EBB1B5F15041E17A141E88105541E17A147EB3F150410AD7A36084105541000000B0B0F15041EC51B85E7F10554148E17A04AEF15041E17A146E7B1055415C8FC235AAF15041295C8FD276105541E17A142EA9F15041295C8F5275105541C3F528EC9CF150419A9999E97B105541A4703D6A9CF15041AE47E19A7D1055413D0AD7F39CF15041AE47E19A7E10554152B81EB5A1F15041CDCCCC2C871055418FC2F5C8A6F150415C8FC285901055419A9999F9AAF1504152B81E4599105541
+</a>
+
+<b>
+01060000000100000001030000000100000046000000B81E851BB7F15041D7A3709D8E1055413D0AD7C3B7F150415C8FC2858C105541295C8FB2B7F15041AE47E1DA8B105541C3F5284CB7F15041AE47E1DA8A1055411F85EBB1B5F15041E17A141E88105541E17A147EB3F150410AD7A36084105541F13A8DB4B1F150416BB0DB2F81105541BF504B60B0F1504149090C3E7F105541AC3EDBBBAFF1504169BA3B377E105541C5193003AEF1504154F265D97B105541781C8E57ABF15041F2933E31781055415C8FC235AAF15041295C8FD276105541FFD66B42A9F15041CCE42E70751055413B55D993A8F150414B66E3D0751055417D82FB02A7F150417D37F3AE76105541385B7C84A5F150410FF8D582771055418C6AAB57A3F15041016049B7781055416B797584A1F1504179DC2CA779105541CBA145CE9EF15041A4703D0A7B10554145EED0689DF15041CFBC100B7C1055411B2FDD5C9CF15041068195CB7C105541ED4FB7529CF1504107D4C3247D105541B8333D039DF1504110F6046C7E10554187E0BB5E9DF15041950CA4157F105541BBCCA1299EF1504129B7CA8D80105541D6B8AF179FF1504193661E4782105541709101B3A0F150410123A94185105541D4F1C2B8A1F150419C38ED26871055411A779166A2F1504120372569881055411B7E2C94A6F150416D1B95249010554152B180C3A6F15041472BC98C9010554113541AD3A7F1504118466FB29210554142D4CB65A9F1504182EA61E1951055412F372F07ABF15041CFA5112E9910554118CBF54FABF150414F416DC499105541538A9CC5ABF1504104EBA3EC9A1055416551356CACF1504146BA15909C105541C6FE0F56ADF150418E70DDDC9E10554156490532AEF1504197A3A806A11055414C3789D9AEF15041FA7E6AACA210554186C25337AEF15041AC0F2286A3105541D6B1839BAEF150417B479F82A41055419C9730D9AFF15041140B38A3A7105541E6CDCA79B1F150416FF720BDAB105541CAC82FD2B2F15041F8EA0F21AF105541D34D6260B3F15041448B6C87B0105541F9841254B5F15041AC579E6AAF10554170673CC4B7F150418FFB1809AE105541B4880B56BAF150417E278594AC105541A8B469B9BBF150410BDE47D1AB10554191ED7CB7C0F1504152B81E1DA91055416418A1F8BFF15041E4C48DB4A8105541295C8F5ABFF1504146B6F35DA8105541525A79F8BEF150416B428FF2A7105541955DE79BBDF1504133B9EA74A6105541418FFCB4BBF150418602CD5FA4105541DF023C26BAF15041E80637ABA2105541C01BE6C1B8F150411DF61125A1105541512F7079B8F15041F91B1EB3A0105541419C76B8B7F15041CC48A57A9F1055419900A923B6F15041B56E1AE99C105541F5CE2DE9B5F150414B96D7439C105541A3898B62B5F15041849C8AAB9A105541E1AF4906B5F15041DCB2511299105541DC0813B3B4F15041D96219A89710554169C5EED9B4F15041A221D8BF941055412711401CB5F1504137B784EA93105541376EA5FFB5F15041EEE80B0F91105541E33AD16AB6F15041A12FAA0B90105541B81E851BB7F15041D7A3709D8E105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516080 - 3352630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999F9AAF1504152B81E4599105541CDCCCC0CAEF15041AE47E1FAA01055419A9999B9AEF15041C3F528ACA21055410AD7A370AEF1504152B81E95A410554133333373B3F1504148E17A44B0105541295C8F12B4F150413D0AD703B010554185EB51B8C2F150413D0AD723A8105541A4703D1ABDF15041CDCCCCCCA110554185EB51A8B7F15041F6285C8F9F10554148E17AF4B5F1504185EB51B89C105541000000B0B4F150410AD7A3B098105541D7A370BDB4F15041C3F5282C94105541AE47E1FAB5F1504185EB51F88F105541B81E851BB7F15041D7A3709D8E1055413D0AD7C3B7F150415C8FC2858C105541295C8FB2B7F15041AE47E1DA8B105541C3F5284CB7F15041AE47E1DA8A1055411F85EBB1B5F15041E17A141E88105541E17A147EB3F150410AD7A36084105541000000B0B0F15041EC51B85E7F10554148E17A04AEF15041E17A146E7B1055415C8FC235AAF15041295C8FD276105541E17A142EA9F15041295C8F5275105541C3F528EC9CF150419A9999E97B105541A4703D6A9CF15041AE47E19A7D1055413D0AD7F39CF15041AE47E19A7E10554152B81EB5A1F15041CDCCCC2C871055418FC2F5C8A6F150415C8FC285901055419A9999F9AAF1504152B81E4599105541
+</a>
+
+<b>
+01060000000100000001030000000100000046000000B81E851BB7F15041D7A3709D8E1055413D0AD7C3B7F150415C8FC2858C105541295C8FB2B7F15041AE47E1DA8B105541C3F5284CB7F15041AE47E1DA8A1055411F85EBB1B5F15041E17A141E88105541E17A147EB3F150410AD7A36084105541F13A8DB4B1F150416BB0DB2F81105541BF504B60B0F1504149090C3E7F105541AC3EDBBBAFF1504169BA3B377E105541C5193003AEF1504154F265D97B105541781C8E57ABF15041F2933E31781055415C8FC235AAF15041295C8FD276105541FFD66B42A9F15041CCE42E70751055413B55D993A8F150414B66E3D0751055417D82FB02A7F150417D37F3AE76105541385B7C84A5F150410FF8D582771055418C6AAB57A3F15041016049B7781055416B797584A1F1504179DC2CA779105541CBA145CE9EF15041A4703D0A7B10554145EED0689DF15041CFBC100B7C1055411B2FDD5C9CF15041068195CB7C105541ED4FB7529CF1504107D4C3247D105541B8333D039DF1504110F6046C7E10554187E0BB5E9DF15041950CA4157F105541BBCCA1299EF1504129B7CA8D80105541D6B8AF179FF1504193661E4782105541709101B3A0F150410123A94185105541D4F1C2B8A1F150419C38ED26871055411A779166A2F1504120372569881055411B7E2C94A6F150416D1B95249010554152B180C3A6F15041472BC98C9010554113541AD3A7F1504118466FB29210554142D4CB65A9F1504182EA61E1951055412F372F07ABF15041CFA5112E9910554118CBF54FABF150414F416DC499105541538A9CC5ABF1504104EBA3EC9A1055416551356CACF1504146BA15909C105541C6FE0F56ADF150418E70DDDC9E10554156490532AEF1504197A3A806A11055414C3789D9AEF15041FA7E6AACA210554186C25337AEF15041AC0F2286A3105541D6B1839BAEF150417B479F82A41055419C9730D9AFF15041140B38A3A7105541E6CDCA79B1F150416FF720BDAB105541CAC82FD2B2F15041F8EA0F21AF105541D34D6260B3F15041448B6C87B0105541F9841254B5F15041AC579E6AAF10554170673CC4B7F150418FFB1809AE105541B4880B56BAF150417E278594AC105541A8B469B9BBF150410BDE47D1AB10554191ED7CB7C0F1504152B81E1DA91055416418A1F8BFF15041E4C48DB4A8105541295C8F5ABFF1504146B6F35DA8105541525A79F8BEF150416B428FF2A7105541955DE79BBDF1504133B9EA74A6105541418FFCB4BBF150418602CD5FA4105541DF023C26BAF15041E80637ABA2105541C01BE6C1B8F150411DF61125A1105541512F7079B8F15041F91B1EB3A0105541419C76B8B7F15041CC48A57A9F1055419900A923B6F15041B56E1AE99C105541F5CE2DE9B5F150414B96D7439C105541A3898B62B5F15041849C8AAB9A105541E1AF4906B5F15041DCB2511299105541DC0813B3B4F15041D96219A89710554169C5EED9B4F15041A221D8BF941055412711401CB5F1504137B784EA93105541376EA5FFB5F15041EEE80B0F91105541E33AD16AB6F15041A12FAA0B90105541B81E851BB7F15041D7A3709D8E105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516351 - 3100958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002C000000000000F03AF55041B81E851B4E1155415C8FC2C530F55041F6285C0F4C1155415C8FC2452DF550417B14AE774B11554148E17AC422F55041666666564A115541713D0A771FF55041B81E852B4A115541EC51B8DE1CF5504114AE47A14A115541AE47E1CA1CF5504114AE47A1511155415C8FC2E51CF55041F6285C2F5511554185EB51081DF550415C8FC2355611554185EB51081DF550416666667658115541A4703DDA1DF55041B81E851B5D115541333333431EF550419A9999395F1155419A9999491FF5504114AE4751601155411F85EBE121F55041D7A3705D62115541D7A3707D24F55041CDCCCCDC63115541D7A3702D28F550413D0AD7D363115541E17A146E30F550411F85EB016611554185EB51B831F55041E17A144E661155417B14AE972EF55041000000506A115541F6285CFF2DF550410AD7A3706B11554185EB51182DF55041C3F5283C6F115541F6285CDF2CF55041713D0A07711155419A9999D92CF550411F85EBB173115541E17A142E2DF5504152B81EF575115541C3F5289C2DF550411F85EB1178115541EC51B85E2EF55041000000C0791155415C8FC27530F55041F6285CFF7E115541B81E854B36F55041C3F5287C7D1155410AD7A3F037F55041295C8F227D115541EC51B8CE3AF55041AE47E1CA7C115541295C8FA240F55041CDCCCC0C7C11554152B81E6547F550413D0AD7B37A115541B81E85CB48F550411F85EB91781155410AD7A30049F550411F85EB41781155410000007045F55041A4703D1A761155413333339344F55041D7A3704D75115541B81E85EB43F55041AE47E18A7411554152B81E8541F550419A9999F9701155410AD7A31040F55041AE47E15A6D115541A4703D1A3FF55041713D0AA769115541C3F528BC3EF550411F85EB9165115541A4703DCA3EF550418FC2F5585C1155411F85EBC13BF550410AD7A3305B115541000000F03AF55041B81E851B4E115541
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E233019C36F55041D51C096B7D115541AEA38A0B34F55041076164B5741155418FD23D5430F55041879D591668115541F6285CFF2DF550410AD7A3706B11554185EB51182DF55041C3F5283C6F115541F6285CDF2CF55041713D0A07711155419A9999D92CF550411F85EBB173115541E17A142E2DF5504152B81EF575115541C3F5289C2DF550411F85EB1178115541EC51B85E2EF55041000000C0791155415C8FC27530F55041F6285CFF7E115541E233019C36F55041D51C096B7D115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516351 - 3454588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002C000000000000F03AF55041B81E851B4E1155415C8FC2C530F55041F6285C0F4C1155415C8FC2452DF550417B14AE774B11554148E17AC422F55041666666564A115541713D0A771FF55041B81E852B4A115541EC51B8DE1CF5504114AE47A14A115541AE47E1CA1CF5504114AE47A1511155415C8FC2E51CF55041F6285C2F5511554185EB51081DF550415C8FC2355611554185EB51081DF550416666667658115541A4703DDA1DF55041B81E851B5D115541333333431EF550419A9999395F1155419A9999491FF5504114AE4751601155411F85EBE121F55041D7A3705D62115541D7A3707D24F55041CDCCCCDC63115541D7A3702D28F550413D0AD7D363115541E17A146E30F550411F85EB016611554185EB51B831F55041E17A144E661155417B14AE972EF55041000000506A115541F6285CFF2DF550410AD7A3706B11554185EB51182DF55041C3F5283C6F115541F6285CDF2CF55041713D0A07711155419A9999D92CF550411F85EBB173115541E17A142E2DF5504152B81EF575115541C3F5289C2DF550411F85EB1178115541EC51B85E2EF55041000000C0791155415C8FC27530F55041F6285CFF7E115541B81E854B36F55041C3F5287C7D1155410AD7A3F037F55041295C8F227D115541EC51B8CE3AF55041AE47E1CA7C115541295C8FA240F55041CDCCCC0C7C11554152B81E6547F550413D0AD7B37A115541B81E85CB48F550411F85EB91781155410AD7A30049F550411F85EB41781155410000007045F55041A4703D1A761155413333339344F55041D7A3704D75115541B81E85EB43F55041AE47E18A7411554152B81E8541F550419A9999F9701155410AD7A31040F55041AE47E15A6D115541A4703D1A3FF55041713D0AA769115541C3F528BC3EF550411F85EB9165115541A4703DCA3EF550418FC2F5585C1155411F85EBC13BF550410AD7A3305B115541000000F03AF55041B81E851B4E115541
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E233019C36F55041D51C096B7D115541AEA38A0B34F55041076164B5741155418FD23D5430F55041879D591668115541F6285CFF2DF550410AD7A3706B11554185EB51182DF55041C3F5283C6F115541F6285CDF2CF55041713D0A07711155419A9999D92CF550411F85EBB173115541E17A142E2DF5504152B81EF575115541C3F5289C2DF550411F85EB1178115541EC51B85E2EF55041000000C0791155415C8FC27530F55041F6285CFF7E115541E233019C36F55041D51C096B7D115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507328 - 51572
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000EC51B80E4EFD50410AD7A3F067495441AE47E16A49FD50410AD7A3D06949544148E17AC444FD504114AE47A16B495441D7A3702D3EFD50415C8FC2156E495441E17A14BE38FD5041F6285C6F704954413333330332FD5041EC51B8BE74495441333333D32AFD504185EB51687949544148E17AF423FD50418FC2F5987E4954418FC2F5E81AFD504114AE47F184495441333333931FFD50418FC2F52886495441E17A147E24FD50416666668686495441EC51B82E2AFD5041EC51B80E87495441F6285C2F30FD5041D7A3704D87495441295C8F5234FD504114AE474187495441D7A3704D3BFD504148E17A348749544152B81E653DFD5041AE47E16A87495441C3F5287C3EFD5041A4703DAA87495441295C8F923FFD5041295C8F42884954411F85EB0141FD50417B14AED789495441AE47E17A43FD50411F85EBD18B4954416666663645FD5041EC51B80E8D4954416666661648FD5041713D0A578E495441F6285C2F4BFD5041D7A3706D904954415C8FC2254EFD5041E17A147E92495441A4703D0A53FD50411F85EBF1954954415C8FC2A556FD5041333333C398495441000000705AFD50418FC2F5689B495441295C8F725EFD5041333333439E4954418FC2F5B860FD504166666606A04954416666668661FD5041CDCCCC6CA0495441713D0A6762FD5041E17A148EA049544185EB51C86CFD5041666666069B495441CDCCCC0C72FD50410AD7A37098495441F6285C9F78FD5041F6285C0F95495441666666467CFD50417B14AEA7924954418FC2F5387EFD5041295C8F12914954419A9999597FFD5041EC51B85E8F4954411F85EB517FFD50413D0AD7638D4954417B14AE777EFD50410AD7A3E0864954419A9999F97CFD5041EC51B89E7C495441F6285CFF7AFD504185EB51886F495441295C8F6279FD50418FC2F5E8644954411F85EB4178FD5041E17A14CE61495441F6285CEF75FD5041C3F5283C5E4954413333337372FD5041B81E853B5D495441713D0AB76FFD5041CDCCCC0C5949544152B81E4568FD5041C3F5285C5C495441CDCCCCFC64FD50411F85EBD15D4954418FC2F5D85EFD5041B81E857B60495441B81E85BB56FD5041C3F5281C64495441AE47E11A53FD504152B81EB565495441EC51B80E4EFD50410AD7A3F067495441
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C0B3EC0660FD50419F20615CA24954411228475F62FD50410518FB93A0495441170CDF9961FD50412A44AF6FA04954413D891E0E61FD504198D4D830A0495441F766F9345FFD5041434FD1D99E4954413F05AA525BFD5041D45F320A9C495441068647FB55FD504170790D3E9849544147A1442851FD50412752CE9D94495441647C8E6B4BFD5041375A669790495441B6F5712248FD50416558285F8E495441CE8B3AD646FD5041E03B37C88D4954418108E4FA44FD504124A136E48C495441A6E7CBE743FD50413EAEB71F8C49544168CCDB4B42FD50410A6C90DF8A495441733A051241FD5041F79C8EE48949544113BFFF4040FD5041DEDCED02894954410CCF1AD43FFD50419086D78A8849544113F80C553FFD5041DD17E8208849544197EBC8A43EFD5041808877C08749544131E96FC73DFD50417E4D34818749544163E695BD3CFD5041D7C8DD59874954414239ABE93AFD504169D7313587495441CE835CD532FD50412A03A845874954411F31860C31FD5041FCA4E64A87495441D192996F2CFD50415320442687495441597D0A7B27FD5041AB32FDCD8649544120FA6B9C1FFD5041ECFCA429864954410A634F231DFD50417E282286854954418FC2F5E81AFD504114AE47F184495441CE22D12A26FD50411FAE1DED7C495441B19D630D2AFD50416306C2FD79495441A4C78C542BFD5041E34869147949544150639A8731FD5041C593E50E75495441E2544AA836FD5041A31B35C571495441759594B438FD5041D995717570495441C828BE3A3BFD50419EF8135C6F4954416DDE82963EFD5041270D9EEE6D495441FB3AF8DB41FD5041C3B1A2B66C4954415CFE4BEC45FD50419EE5D02D6B495441B4FB83B84BFD5041D80E5FE268495441EC51B80E4EFD50410AD7A3F067495441D9EA7E554DFD5041C8A7B5C9664954419182C70C49FD5041D1DD5BE068495441412DF93A44FD5041701B2CC06A49544180A9AE1B3DFD50417851D2D66C495441915F9FF737FD504143E785D66F495441A3CC004631FD50416ED1871174495441833DF7782AFD5041591B9735794954412CB2829023FD5041C2EE1A157E4954417BE4284D17FD50412754BD0F86495441237DF19A16FD50410432800687495441A0BCC1A71FFD5041919522D4874954418C4F605926FD5041CD7EA478884954413CF97C662CFD5041D56BBB018949544127438C8A31FD50413C64913889495441AC4B36EA34FD5041D26BBB018949544131E6FE643BFD5041FD7A0F9488495441923A4DA03CFD504117F9C4A188495441C77F47493EFD50410668261D894954418ADF54323FFD50415ECF5DCF894954411743F7FF3FFD5041562BD6D38A495441C7F576C140FD5041144421808B49544196C94F6441FD5041B36C15AC8C4954414C88F1A841FD5041D24669AA8D495441EF69B12A46FD5041617CE9C18F495441FE57B69649FD5041D85C15C39149544172297E0E4DFD5041132432019449544162F695C551FD50415A2A456F9749544103E3FDD757FD5041D5B5D5D99B495441A6771E105AFD504126DF0C779D4954419FF710E25DFD5041B314278CA0495441C0B3EC0660FD50419F20615CA2495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507328 - 85356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000EC51B80E4EFD50410AD7A3F067495441AE47E16A49FD50410AD7A3D06949544148E17AC444FD504114AE47A16B495441D7A3702D3EFD50415C8FC2156E495441E17A14BE38FD5041F6285C6F704954413333330332FD5041EC51B8BE74495441333333D32AFD504185EB51687949544148E17AF423FD50418FC2F5987E4954418FC2F5E81AFD504114AE47F184495441333333931FFD50418FC2F52886495441E17A147E24FD50416666668686495441EC51B82E2AFD5041EC51B80E87495441F6285C2F30FD5041D7A3704D87495441295C8F5234FD504114AE474187495441D7A3704D3BFD504148E17A348749544152B81E653DFD5041AE47E16A87495441C3F5287C3EFD5041A4703DAA87495441295C8F923FFD5041295C8F42884954411F85EB0141FD50417B14AED789495441AE47E17A43FD50411F85EBD18B4954416666663645FD5041EC51B80E8D4954416666661648FD5041713D0A578E495441F6285C2F4BFD5041D7A3706D904954415C8FC2254EFD5041E17A147E92495441A4703D0A53FD50411F85EBF1954954415C8FC2A556FD5041333333C398495441000000705AFD50418FC2F5689B495441295C8F725EFD5041333333439E4954418FC2F5B860FD504166666606A04954416666668661FD5041CDCCCC6CA0495441713D0A6762FD5041E17A148EA049544185EB51C86CFD5041666666069B495441CDCCCC0C72FD50410AD7A37098495441F6285C9F78FD5041F6285C0F95495441666666467CFD50417B14AEA7924954418FC2F5387EFD5041295C8F12914954419A9999597FFD5041EC51B85E8F4954411F85EB517FFD50413D0AD7638D4954417B14AE777EFD50410AD7A3E0864954419A9999F97CFD5041EC51B89E7C495441F6285CFF7AFD504185EB51886F495441295C8F6279FD50418FC2F5E8644954411F85EB4178FD5041E17A14CE61495441F6285CEF75FD5041C3F5283C5E4954413333337372FD5041B81E853B5D495441713D0AB76FFD5041CDCCCC0C5949544152B81E4568FD5041C3F5285C5C495441CDCCCCFC64FD50411F85EBD15D4954418FC2F5D85EFD5041B81E857B60495441B81E85BB56FD5041C3F5281C64495441AE47E11A53FD504152B81EB565495441EC51B80E4EFD50410AD7A3F067495441
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C0B3EC0660FD50419F20615CA24954411228475F62FD50410518FB93A0495441170CDF9961FD50412A44AF6FA04954413D891E0E61FD504198D4D830A0495441F766F9345FFD5041434FD1D99E4954413F05AA525BFD5041D45F320A9C495441068647FB55FD504170790D3E9849544147A1442851FD50412752CE9D94495441647C8E6B4BFD5041375A669790495441B6F5712248FD50416558285F8E495441CE8B3AD646FD5041E03B37C88D4954418108E4FA44FD504124A136E48C495441A6E7CBE743FD50413EAEB71F8C49544168CCDB4B42FD50410A6C90DF8A495441733A051241FD5041F79C8EE48949544113BFFF4040FD5041DEDCED02894954410CCF1AD43FFD50419086D78A8849544113F80C553FFD5041DD17E8208849544197EBC8A43EFD5041808877C08749544131E96FC73DFD50417E4D34818749544163E695BD3CFD5041D7C8DD59874954414239ABE93AFD504169D7313587495441CE835CD532FD50412A03A845874954411F31860C31FD5041FCA4E64A87495441D192996F2CFD50415320442687495441597D0A7B27FD5041AB32FDCD8649544120FA6B9C1FFD5041ECFCA429864954410A634F231DFD50417E282286854954418FC2F5E81AFD504114AE47F184495441CE22D12A26FD50411FAE1DED7C495441B19D630D2AFD50416306C2FD79495441A4C78C542BFD5041E34869147949544150639A8731FD5041C593E50E75495441E2544AA836FD5041A31B35C571495441759594B438FD5041D995717570495441C828BE3A3BFD50419EF8135C6F4954416DDE82963EFD5041270D9EEE6D495441FB3AF8DB41FD5041C3B1A2B66C4954415CFE4BEC45FD50419EE5D02D6B495441B4FB83B84BFD5041D80E5FE268495441EC51B80E4EFD50410AD7A3F067495441D9EA7E554DFD5041C8A7B5C9664954419182C70C49FD5041D1DD5BE068495441412DF93A44FD5041701B2CC06A49544180A9AE1B3DFD50417851D2D66C495441915F9FF737FD504143E785D66F495441A3CC004631FD50416ED1871174495441833DF7782AFD5041591B9735794954412CB2829023FD5041C2EE1A157E4954417BE4284D17FD50412754BD0F86495441237DF19A16FD50410432800687495441A0BCC1A71FFD5041919522D4874954418C4F605926FD5041CD7EA478884954413CF97C662CFD5041D56BBB018949544127438C8A31FD50413C64913889495441AC4B36EA34FD5041D26BBB018949544131E6FE643BFD5041FD7A0F9488495441923A4DA03CFD504117F9C4A188495441C77F47493EFD50410668261D894954418ADF54323FFD50415ECF5DCF894954411743F7FF3FFD5041562BD6D38A495441C7F576C140FD5041144421808B49544196C94F6441FD5041B36C15AC8C4954414C88F1A841FD5041D24669AA8D495441EF69B12A46FD5041617CE9C18F495441FE57B69649FD5041D85C15C39149544172297E0E4DFD5041132432019449544162F695C551FD50415A2A456F9749544103E3FDD757FD5041D5B5D5D99B495441A6771E105AFD504126DF0C779D4954419FF710E25DFD5041B314278CA0495441C0B3EC0660FD50419F20615CA2495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507333 - 3115326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002E000000EC51B8DEEEFC5041CDCCCC4C1749544133333323F0FC504152B81E2515495441D7A3703D09FD504114AE474104495441EC51B84E0CFD5041295C8F2202495441EC51B87E11FD5041A4703D2AFE4854413D0AD76313FD5041EC51B87EFC485441EC51B8BE14FD5041713D0A47FB4854419A99993917FD5041B81E85CBF84854410AD7A3F018FD5041666666E6F6485441713D0A571AFD5041F6285C2FF5485441EC51B8CE1BFD5041CDCCCC4CF3485441295C8F621CFD5041295C8FC2F2485441F6285C0F1DFD5041713D0AF7F1485441F6285C4F1FFD50418FC2F528EF4854415C8FC2E520FD5041C3F5283CED4854419A99992922FD5041D7A370CDEB485441D7A370DD23FD504166666646E94854413333337325FD504100000010E64854417B14AE9726FD5041CDCCCCACE2485441E17A146E27FD504166666676DF48544185EB513828FD504114AE47C1DA4854419A99991929FD50413D0AD7D3D5485441EC51B83E2AFD5041B81E85EBCE485441333333C31EFD504148E17AA4CD4854413D0AD7F318FD5041D7A3701DCD485441D7A3704D15FD50419A9999D9CC485441333333430EFD5041333333C3CC485441CDCCCC8C05FD5041E17A148ECD48544114AE4771FCFC504114AE4791CE48544185EB5148F6FC5041713D0A67CF485441D7A3704DF4FC50419A9999F9CF485441000000F0F2FC504185EB5178D148544185EB51F8F1FC50419A999919D3485441C3F528CCDCFC5041C3F528CCF5485441295C8F52DCFC50413D0AD763FA485441EC51B80EDFFC50419A9999C9FE485441EC51B8DEDFFC5041713D0AD701495441295C8F72DFFC5041B81E85DB0449544166666656DDFC50411F85EB510C495441AE47E11ADCFC5041333333B310495441713D0AB7DBFC50418FC2F5F81249544148E17A24DDFC504152B81E7513495441EC51B83EE3FC5041E17A145E14495441E17A141EE9FC50416666664615495441CDCCCC3CEDFC504114AE476116495441EC51B8DEEEFC5041CDCCCC4C17495441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000FB897C3DE0FC5041312F554B0249544169CFD98705FD5041FDB09E74CD485441CD54C1350AFD5041D7399121CD485441EB1DF25B0EFD5041C1EF81C3CC485441A8DF9BC515FD5041551853E2CC485441BB932F1319FD5041A1334920CD4854410B6754F51DFD5041C2E6C991CD485441959C63D81FFD50418F61E494CD485441E619E20C20FD504110C437BCCC485441523A65931DFD5041AEAE4DAECA4854417BD542021AFD504190190008C94854415C37095214FD5041BF48D645C8485441323BBC8A06FD5041EE77AC83C7485441CF59DBD1FDFC5041762A5063C74854418676601EFBFC50416036F510C848544162C23C65F9FC504190190008C948544101C37374F3FC504180A4D235CE485441EC51B87EEDFC5041F6285C5FCD485441E0FA3D89E8FC504153AEA93CD0485441C3CD3C8EE7FC5041B5C51CB8D4485441B93DCD03E6FC504117DB06C6D6485441A61F775CE5FC504117DD8F33D94854414D1938A2E3FC5041DF869F18DC485441A00E439BE2FC50415E48C6EADD485441E5F4A240E1FC5041543D2D72E2485441BE3732BBDEFC5041DE0F8805E74854410CAAEF0FDAFC5041C06B6FF7F0485441639EE66CDAFC5041701B1DE5F4485441CC86FBCDDAFC50410CE2918FF8485441295C8F52DCFC50413D0AD763FA485441EC51B80EDFFC50419A9999C9FE485441EC51B8DEDFFC5041713D0AD701495441FB897C3DE0FC5041312F554B02495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507333 - 3383970
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002E000000EC51B8DEEEFC5041CDCCCC4C1749544133333323F0FC504152B81E2515495441D7A3703D09FD504114AE474104495441EC51B84E0CFD5041295C8F2202495441EC51B87E11FD5041A4703D2AFE4854413D0AD76313FD5041EC51B87EFC485441EC51B8BE14FD5041713D0A47FB4854419A99993917FD5041B81E85CBF84854410AD7A3F018FD5041666666E6F6485441713D0A571AFD5041F6285C2FF5485441EC51B8CE1BFD5041CDCCCC4CF3485441295C8F621CFD5041295C8FC2F2485441F6285C0F1DFD5041713D0AF7F1485441F6285C4F1FFD50418FC2F528EF4854415C8FC2E520FD5041C3F5283CED4854419A99992922FD5041D7A370CDEB485441D7A370DD23FD504166666646E94854413333337325FD504100000010E64854417B14AE9726FD5041CDCCCCACE2485441E17A146E27FD504166666676DF48544185EB513828FD504114AE47C1DA4854419A99991929FD50413D0AD7D3D5485441EC51B83E2AFD5041B81E85EBCE485441333333C31EFD504148E17AA4CD4854413D0AD7F318FD5041D7A3701DCD485441D7A3704D15FD50419A9999D9CC485441333333430EFD5041333333C3CC485441CDCCCC8C05FD5041E17A148ECD48544114AE4771FCFC504114AE4791CE48544185EB5148F6FC5041713D0A67CF485441D7A3704DF4FC50419A9999F9CF485441000000F0F2FC504185EB5178D148544185EB51F8F1FC50419A999919D3485441C3F528CCDCFC5041C3F528CCF5485441295C8F52DCFC50413D0AD763FA485441EC51B80EDFFC50419A9999C9FE485441EC51B8DEDFFC5041713D0AD701495441295C8F72DFFC5041B81E85DB0449544166666656DDFC50411F85EB510C495441AE47E11ADCFC5041333333B310495441713D0AB7DBFC50418FC2F5F81249544148E17A24DDFC504152B81E7513495441EC51B83EE3FC5041E17A145E14495441E17A141EE9FC50416666664615495441CDCCCC3CEDFC504114AE476116495441EC51B8DEEEFC5041CDCCCC4C17495441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000FB897C3DE0FC5041312F554B0249544169CFD98705FD5041FDB09E74CD485441CD54C1350AFD5041D7399121CD485441EB1DF25B0EFD5041C1EF81C3CC485441A8DF9BC515FD5041551853E2CC485441BB932F1319FD5041A1334920CD4854410B6754F51DFD5041C2E6C991CD485441959C63D81FFD50418F61E494CD485441E619E20C20FD504110C437BCCC485441523A65931DFD5041AEAE4DAECA4854417BD542021AFD504190190008C94854415C37095214FD5041BF48D645C8485441323BBC8A06FD5041EE77AC83C7485441CF59DBD1FDFC5041762A5063C74854418676601EFBFC50416036F510C848544162C23C65F9FC504190190008C948544101C37374F3FC504180A4D235CE485441EC51B87EEDFC5041F6285C5FCD485441E0FA3D89E8FC504153AEA93CD0485441C3CD3C8EE7FC5041B5C51CB8D4485441B93DCD03E6FC504117DB06C6D6485441A61F775CE5FC504117DD8F33D94854414D1938A2E3FC5041DF869F18DC485441A00E439BE2FC50415E48C6EADD485441E5F4A240E1FC5041543D2D72E2485441BE3732BBDEFC5041DE0F8805E74854410CAAEF0FDAFC5041C06B6FF7F0485441639EE66CDAFC5041701B1DE5F4485441CC86FBCDDAFC50410CE2918FF8485441295C8F52DCFC50413D0AD763FA485441EC51B80EDFFC50419A9999C9FE485441EC51B8DEDFFC5041713D0AD701495441FB897C3DE0FC5041312F554B02495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507337 - 51579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000490000000AD7A3A0E3FC5041C3F5283C3A495441C3F5286CE5FC5041A4703DDA3A49544185EB51F8EFFC5041F6285C6F3D49544133333393FAFC50413D0AD7034049544114AE477109FD5041C3F5281C44495441000000D012FD5041C3F528DC46495441C3F5283C16FD50410AD7A34047495441D7A370AD1BFD5041713D0A9747495441B81E856B23FD5041713D0A9747495441EC51B83E28FD504185EB518847495441A4703DCA2CFD50415C8FC21547495441C3F5284C33FD504148E17A04464954411F85EB2139FD50419A99994945495441AE47E14A3EFD5041713D0AD7444954415C8FC2B540FD5041E17A149E44495441EC51B85E40FD50415C8FC2653F49544114AE47313FFD5041C3F528CC3A495441713D0A573DFD5041A4703DEA35495441F6285C7F3CFD5041295C8F7233495441B81E850B3DFD5041C3F5280C324954413333338343FD504148E17A6429495441713D0AC748FD5041CDCCCCFC224954410AD7A3C04EFD5041EC51B8EE19495441B81E857B53FD5041D7A3702D13495441713D0A1757FD5041713D0A970E4954418FC2F59859FD504114AE47010A4954415C8FC2255AFD5041713D0A1706495441A4703D5A59FD50413D0AD713014954410000005058FD5041D7A370ADF948544114AE472158FD504148E17AC4F248544114AE472158FD5041666666C6EC485441C3F528FC58FD50419A9999B9E34854411F85EBD15AFD5041B81E850BD84854410AD7A3205BFD50413D0AD7B3D3485441333333A35AFD504148E17AB4D04854418FC2F5A859FD504152B81EC5CD485441295C8FE257FD50418FC2F558CA485441F6285C9F55FD50417B14AEA7C7485441C3F5285C53FD5041333333B3C54854415C8FC2D54EFD5041E17A14AEC3485441EC51B86E4AFD50415C8FC255C2485441B81E859B3FFD5041713D0A47BF4854416666660638FD5041F6285CCFBD4854416666665632FD50410AD7A390BD48544152B81EC52FFD504185EB51E8C1485441295C8F622DFD5041A4703D3AC7485441A4703D0A2CFD5041295C8F72CB485441F6285C1F2BFD5041CDCCCC3CCF48544152B81E152AFD50415C8FC225D6485441CDCCCCBC28FD5041C3F5288CDD485441333333A327FD5041E17A14EEE24854419A99997926FD50419A999979E6485441F6285C6F25FD5041C3F528DCE84854418FC2F5B823FD5041C3F528BCEB4854416666665621FD5041AE47E1BAEE4854411F85EB811CFD5041AE47E16AF44854418FC2F56818FD504114AE4701F9485441D7A370CD14FD5041CDCCCC9CFC4854410AD7A36011FD5041CDCCCC7CFF485441295C8F720BFD504133333303044954419A99998904FD50418FC2F5A8084954411F85EB41FCFC5041333333230E4954419A999969F5FC5041000000A012495441E17A146EF1FC504114AE47E115495441EC51B8BEEFFC50417B14AE67184954417B14AE57EEFC5041D7A3707D1B495441295C8FE2ECFC50413D0AD7C320495441CDCCCC6CEBFC504133333343264954417B14AE67E9FC5041AE47E1AA2D4954418FC2F5B8E7FC504152B81E4532495441295C8F32E5FC50411F85EBC1364954413D0AD783E3FC504133333373394954410AD7A3A0E3FC5041C3F5283C3A495441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000005C8FC2B540FD5041E17A149E44495441544E379B3EFD50416566A5CF44495441CCDE3A4839FD5041380F474645495441EE8073A535FD5041FF1241B94549544118B3084E31FD5041D76D29584649544107ED3D7F2CFD5041F2F0241D47495441A313D94628FD50418C0C858747495441E9F47C4526FD50411A45578E47495441EA2CD70A24FD5041463024954749544172C7B5F11FFD5041713D0A97474954411C48A8791AFD50413A2CF4834749544184B17D0B17FD50413B3B7F4D47495441B17E34FA13FD504116DC5BFE4649544185AEFF7912FD5041D164EBC24649544137A097AA0CFD5041647B610E45495441C83A2BBE04FD50418A93C8D04249544119ED2289FCFC50419300178E40495441D174AFC3F7FC5041E7A0CB543F4954413021AB0FE8FC5041F17BA27F3B495441671249B1E3FC5041A1CEF0463A4954413D0AD783E3FC504133333373394954419347E2EAE2FC504160E8B5473A495441E58A3CBDE2FC50411E76C5423B4954417C445BF1E3FC5041D6685CF93B495441F003E848EEFC50415CBA6C783E4954416FF31D2DF8FC5041213DCAA2404954415EF9A495FAFC50412F192334414954418B0F176FFDFC5041F753AFEE414954414687D63102FD5041E891BF1B434954416A88CAD807FD50414785D8F1444954411BFCA55A0DFD50412365531946495441AD515A7012FD5041CE94243347495441D1231E4115FD5041F277A2C44749544183719B2718FD5041DCA41B1248495441E40C4A5A1BFD50413333332348495441FE13A5B01CFD50413333332348495441EEDF059120FD5041945E673548495441DC78F76C23FD5041368B9C7248495441A8788C9C27FD504157914469484954419A1452442BFD5041AAD49E3B48495441A520CE5A32FD504169F9521E4749544142C16DD735FD5041E74C2C7C4649544162AED54838FD50416278BB2846495441872A10DB3DFD504146577F834549544139EB896540FD5041C3094361454954415C8FC2B540FD5041E17A149E44495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507337 - 85445
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000490000000AD7A3A0E3FC5041C3F5283C3A495441C3F5286CE5FC5041A4703DDA3A49544185EB51F8EFFC5041F6285C6F3D49544133333393FAFC50413D0AD7034049544114AE477109FD5041C3F5281C44495441000000D012FD5041C3F528DC46495441C3F5283C16FD50410AD7A34047495441D7A370AD1BFD5041713D0A9747495441B81E856B23FD5041713D0A9747495441EC51B83E28FD504185EB518847495441A4703DCA2CFD50415C8FC21547495441C3F5284C33FD504148E17A04464954411F85EB2139FD50419A99994945495441AE47E14A3EFD5041713D0AD7444954415C8FC2B540FD5041E17A149E44495441EC51B85E40FD50415C8FC2653F49544114AE47313FFD5041C3F528CC3A495441713D0A573DFD5041A4703DEA35495441F6285C7F3CFD5041295C8F7233495441B81E850B3DFD5041C3F5280C324954413333338343FD504148E17A6429495441713D0AC748FD5041CDCCCCFC224954410AD7A3C04EFD5041EC51B8EE19495441B81E857B53FD5041D7A3702D13495441713D0A1757FD5041713D0A970E4954418FC2F59859FD504114AE47010A4954415C8FC2255AFD5041713D0A1706495441A4703D5A59FD50413D0AD713014954410000005058FD5041D7A370ADF948544114AE472158FD504148E17AC4F248544114AE472158FD5041666666C6EC485441C3F528FC58FD50419A9999B9E34854411F85EBD15AFD5041B81E850BD84854410AD7A3205BFD50413D0AD7B3D3485441333333A35AFD504148E17AB4D04854418FC2F5A859FD504152B81EC5CD485441295C8FE257FD50418FC2F558CA485441F6285C9F55FD50417B14AEA7C7485441C3F5285C53FD5041333333B3C54854415C8FC2D54EFD5041E17A14AEC3485441EC51B86E4AFD50415C8FC255C2485441B81E859B3FFD5041713D0A47BF4854416666660638FD5041F6285CCFBD4854416666665632FD50410AD7A390BD48544152B81EC52FFD504185EB51E8C1485441295C8F622DFD5041A4703D3AC7485441A4703D0A2CFD5041295C8F72CB485441F6285C1F2BFD5041CDCCCC3CCF48544152B81E152AFD50415C8FC225D6485441CDCCCCBC28FD5041C3F5288CDD485441333333A327FD5041E17A14EEE24854419A99997926FD50419A999979E6485441F6285C6F25FD5041C3F528DCE84854418FC2F5B823FD5041C3F528BCEB4854416666665621FD5041AE47E1BAEE4854411F85EB811CFD5041AE47E16AF44854418FC2F56818FD504114AE4701F9485441D7A370CD14FD5041CDCCCC9CFC4854410AD7A36011FD5041CDCCCC7CFF485441295C8F720BFD504133333303044954419A99998904FD50418FC2F5A8084954411F85EB41FCFC5041333333230E4954419A999969F5FC5041000000A012495441E17A146EF1FC504114AE47E115495441EC51B8BEEFFC50417B14AE67184954417B14AE57EEFC5041D7A3707D1B495441295C8FE2ECFC50413D0AD7C320495441CDCCCC6CEBFC504133333343264954417B14AE67E9FC5041AE47E1AA2D4954418FC2F5B8E7FC504152B81E4532495441295C8F32E5FC50411F85EBC1364954413D0AD783E3FC504133333373394954410AD7A3A0E3FC5041C3F5283C3A495441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000005C8FC2B540FD5041E17A149E44495441544E379B3EFD50416566A5CF44495441CCDE3A4839FD5041380F474645495441EE8073A535FD5041FF1241B94549544118B3084E31FD5041D76D29584649544107ED3D7F2CFD5041F2F0241D47495441A313D94628FD50418C0C858747495441E9F47C4526FD50411A45578E47495441EA2CD70A24FD5041463024954749544172C7B5F11FFD5041713D0A97474954411C48A8791AFD50413A2CF4834749544184B17D0B17FD50413B3B7F4D47495441B17E34FA13FD504116DC5BFE4649544185AEFF7912FD5041D164EBC24649544137A097AA0CFD5041647B610E45495441C83A2BBE04FD50418A93C8D04249544119ED2289FCFC50419300178E40495441D174AFC3F7FC5041E7A0CB543F4954413021AB0FE8FC5041F17BA27F3B495441671249B1E3FC5041A1CEF0463A4954413D0AD783E3FC504133333373394954419347E2EAE2FC504160E8B5473A495441E58A3CBDE2FC50411E76C5423B4954417C445BF1E3FC5041D6685CF93B495441F003E848EEFC50415CBA6C783E4954416FF31D2DF8FC5041213DCAA2404954415EF9A495FAFC50412F192334414954418B0F176FFDFC5041F753AFEE414954414687D63102FD5041E891BF1B434954416A88CAD807FD50414785D8F1444954411BFCA55A0DFD50412365531946495441AD515A7012FD5041CE94243347495441D1231E4115FD5041F277A2C44749544183719B2718FD5041DCA41B1248495441E40C4A5A1BFD50413333332348495441FE13A5B01CFD50413333332348495441EEDF059120FD5041945E673548495441DC78F76C23FD5041368B9C7248495441A8788C9C27FD504157914469484954419A1452442BFD5041AAD49E3B48495441A520CE5A32FD504169F9521E4749544142C16DD735FD5041E74C2C7C4649544162AED54838FD50416278BB2846495441872A10DB3DFD504146577F834549544139EB896540FD5041C3094361454954415C8FC2B540FD5041E17A149E44495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507494 - 51619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000033000000B81E859B45F350413D0AD7D3004F54418FC2F58848F35041B81E858B064F5441000000104DF35041000000300F4F5441EC51B8FE52F35041B81E850B1B4F5441A4703D6A57F3504100000060244F5441666666565CF35041E17A140E2F4F54411F85EB0162F35041A4703D2A3A4F54411F85EBD165F35041CDCCCC1C414F54410000009067F35041B81E85DB3F4F54413D0AD7F369F3504185EB51983D4F54411F85EBB170F35041E17A147E364F5441E17A14DE7AF35041CDCCCC3C2B4F5441713D0A7780F350418FC2F518254F5441EC51B88E84F3504148E17AB4204F5441666666568AF350410AD7A3901A4F54413D0AD71391F350417B14AE57134F54411F85EBE197F350410AD7A3900B4F5441333333F39AF350417B14AEE7074F5441666666469CF350411F85EB91054F5441D7A3708D9CF35041EC51B83E044F5441E17A142E98F3504185EB5158014F54413333336394F3504185EB5108FE4E54413D0AD75391F35041333333C3FA4E5441F6285C3F8EF35041EC51B8DEF64E5441E17A142E8BF35041C3F5283CF24E54418FC2F5C886F3504152B81ED5EA4E54413333337382F35041E17A146EE34E5441B81E855B7EF350411F85EB81DC4E5441F6285C5F7CF350418FC2F528DA4E54410AD7A3A07AF35041000000D0D74E54410000000079F350415C8FC235D74E544148E17AF476F3504148E17A54D74E5441E17A148E73F35041A4703D0AD84E54418FC2F5F86FF350418FC2F588D84E5441000000606CF35041E17A14CED84E5441333333E368F35041713D0A87D84E5441A4703D0A66F35041F6285CDFD74E54411F85EBA163F35041EC51B8EED74E54419A9999995FF350410AD7A360D94E5441EC51B8CE5BF35041B81E858BDB4E54410AD7A3B056F350413D0AD773DE4E5441AE47E17A52F3504148E17A24E14E54419A9999694AF350415C8FC2E5E54E54410AD7A3D044F35041F6285CCFE94E54419A9999493EF35041295C8F12EE4E5441E17A14DE3DF350411F85EB41EF4E5441EC51B87E3EF350417B14AE47F14E5441666666563FF35041E17A14AEF34E5441666666F640F35041AE47E14AF74E5441D7A3707D43F350415C8FC2B5FC4E5441B81E859B45F350413D0AD7D3004F5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000D7A3708D9CF35041EC51B83E044F5441798ACD379CF3504152DAA4AB054F5441013D69FE9AF350417C50ECD3074F5441ABD2D89E97F350411C654CDD0B4F5441753B54A891F35041CA6FF8AD124F544119FFB19C8BF35041186CFC32194F5441A108CDB984F35041BE41B786204F54415D58CF317CF3504189DE24C8294F5441822CB3C375F350411E9C32E2304F5441A1BBC57C70F350415AB710B6364F5441BCD135D769F3504190256CB33D4F54419D2A26F666F350411DF6534A404F54411F85EBD165F35041CDCCCC1C414F544110C21CB066F35041AEB2A45B424F54410F0CE5C66AF3504130236A333E4F54418D61316371F35041F209B725374F54418EA50ABF7BF35041F2F89DD52B4F54414F80793B81F35041715AC8E7254F544150E00A9885F35041B036D019214F5441D0DD321D8BF35041707541231B4F54419010C6B091F35041F1F362FB134F54418F4C32C798F35041F10080360C4F54411025F6409CF35041F1419C42084F54418F8FCC5D9EF350413159D1C5054F5441D7A3708D9CF35041EC51B83E044F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507494 - 85333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000033000000B81E859B45F350413D0AD7D3004F54418FC2F58848F35041B81E858B064F5441000000104DF35041000000300F4F5441EC51B8FE52F35041B81E850B1B4F5441A4703D6A57F3504100000060244F5441666666565CF35041E17A140E2F4F54411F85EB0162F35041A4703D2A3A4F54411F85EBD165F35041CDCCCC1C414F54410000009067F35041B81E85DB3F4F54413D0AD7F369F3504185EB51983D4F54411F85EBB170F35041E17A147E364F5441E17A14DE7AF35041CDCCCC3C2B4F5441713D0A7780F350418FC2F518254F5441EC51B88E84F3504148E17AB4204F5441666666568AF350410AD7A3901A4F54413D0AD71391F350417B14AE57134F54411F85EBE197F350410AD7A3900B4F5441333333F39AF350417B14AEE7074F5441666666469CF350411F85EB91054F5441D7A3708D9CF35041EC51B83E044F5441E17A142E98F3504185EB5158014F54413333336394F3504185EB5108FE4E54413D0AD75391F35041333333C3FA4E5441F6285C3F8EF35041EC51B8DEF64E5441E17A142E8BF35041C3F5283CF24E54418FC2F5C886F3504152B81ED5EA4E54413333337382F35041E17A146EE34E5441B81E855B7EF350411F85EB81DC4E5441F6285C5F7CF350418FC2F528DA4E54410AD7A3A07AF35041000000D0D74E54410000000079F350415C8FC235D74E544148E17AF476F3504148E17A54D74E5441E17A148E73F35041A4703D0AD84E54418FC2F5F86FF350418FC2F588D84E5441000000606CF35041E17A14CED84E5441333333E368F35041713D0A87D84E5441A4703D0A66F35041F6285CDFD74E54411F85EBA163F35041EC51B8EED74E54419A9999995FF350410AD7A360D94E5441EC51B8CE5BF35041B81E858BDB4E54410AD7A3B056F350413D0AD773DE4E5441AE47E17A52F3504148E17A24E14E54419A9999694AF350415C8FC2E5E54E54410AD7A3D044F35041F6285CCFE94E54419A9999493EF35041295C8F12EE4E5441E17A14DE3DF350411F85EB41EF4E5441EC51B87E3EF350417B14AE47F14E5441666666563FF35041E17A14AEF34E5441666666F640F35041AE47E14AF74E5441D7A3707D43F350415C8FC2B5FC4E5441B81E859B45F350413D0AD7D3004F5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000D7A3708D9CF35041EC51B83E044F5441798ACD379CF3504152DAA4AB054F5441013D69FE9AF350417C50ECD3074F5441ABD2D89E97F350411C654CDD0B4F5441753B54A891F35041CA6FF8AD124F544119FFB19C8BF35041186CFC32194F5441A108CDB984F35041BE41B786204F54415D58CF317CF3504189DE24C8294F5441822CB3C375F350411E9C32E2304F5441A1BBC57C70F350415AB710B6364F5441BCD135D769F3504190256CB33D4F54419D2A26F666F350411DF6534A404F54411F85EBD165F35041CDCCCC1C414F544110C21CB066F35041AEB2A45B424F54410F0CE5C66AF3504130236A333E4F54418D61316371F35041F209B725374F54418EA50ABF7BF35041F2F89DD52B4F54414F80793B81F35041715AC8E7254F544150E00A9885F35041B036D019214F5441D0DD321D8BF35041707541231B4F54419010C6B091F35041F1F362FB134F54418F4C32C798F35041F10080360C4F54411025F6409CF35041F1419C42084F54418F8FCC5D9EF350413159D1C5054F5441D7A3708D9CF35041EC51B83E044F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507677 - 1140593
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000140000006666662690F250410AD7A310984E544185EB51B885F25041713D0A078F4E5441713D0A8785F25041C3F528DC8E4E54418FC2F5A884F2504152B81E05904E5441CDCCCC0C77F250419A999939A14E5441F6285C2F6FF25041C3F5284CAA4E54419A9999B96AF25041F6285CCFB04E5441295C8F626FF2504133333383B34E544152B81E0576F250417B14AE77B74E5441D7A3706D75F2504152B81EB5B84E5441B81E85CB7AF25041333333C3BB4E54418FC2F5487BF2504152B81E15BC4E544114AE47017FF2504133333383BE4E5441E17A142E80F25041CDCCCC7CBF4E54417B14AE9780F25041C3F528DCBE4E54417B14AE5797F25041666666469C4E5441AE47E18A91F25041F6285C3F9A4E54411F85EBA190F25041E17A14EE994E5441333333138FF2504114AE47A1974E54416666662690F250410AD7A310984E5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000000E2DB2A583F250416ABC74A3914E5441A2F26C387DF25041E519DDE6994E5441BAC0FA0777F25041A7FF10DCA14E54418FC2F5286BF2504191ED7C1FB14E54418B6CE74B76F250417F6ABC04B74E54418FC2F50876F25041A69BC408B84E54416DE7FB4180F25041A245B6DBBE4E5441A77E2C588EF250415F553CF4A94E5441E6F8338D91F25041E3401714A54E54419058C53193F250410439BC94A24E5441C1083EC194F25041BC6B7335A04E5441BCA9905196F25041264DDFD49D4E54414A18B5CF96F250412CB51B159D4E5441AA5BE50591F25041C7E92B2F9A4E54411283C01286F25041D7A37025934E54410E2DB2A583F250416ABC74A3914E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507677 - 3802682
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000140000006666662690F250410AD7A310984E544185EB51B885F25041713D0A078F4E5441713D0A8785F25041C3F528DC8E4E54418FC2F5A884F2504152B81E05904E5441CDCCCC0C77F250419A999939A14E5441F6285C2F6FF25041C3F5284CAA4E54419A9999B96AF25041F6285CCFB04E5441295C8F626FF2504133333383B34E544152B81E0576F250417B14AE77B74E5441D7A3706D75F2504152B81EB5B84E5441B81E85CB7AF25041333333C3BB4E54418FC2F5487BF2504152B81E15BC4E544114AE47017FF2504133333383BE4E5441E17A142E80F25041CDCCCC7CBF4E54417B14AE9780F25041C3F528DCBE4E54417B14AE5797F25041666666469C4E5441AE47E18A91F25041F6285C3F9A4E54411F85EBA190F25041E17A14EE994E5441333333138FF2504114AE47A1974E54416666662690F250410AD7A310984E5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000000E2DB2A583F250416ABC74A3914E5441A2F26C387DF25041E519DDE6994E5441BAC0FA0777F25041A7FF10DCA14E54418FC2F5286BF2504191ED7C1FB14E54418B6CE74B76F250417F6ABC04B74E54418FC2F50876F25041A69BC408B84E54416DE7FB4180F25041A245B6DBBE4E5441A77E2C588EF250415F553CF4A94E5441E6F8338D91F25041E3401714A54E54419058C53193F250410439BC94A24E5441C1083EC194F25041BC6B7335A04E5441BCA9905196F25041264DDFD49D4E54414A18B5CF96F250412CB51B159D4E5441AA5BE50591F25041C7E92B2F9A4E54411283C01286F25041D7A37025934E54410E2DB2A583F250416ABC74A3914E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460527 - 342686
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000295C8FC29AE550418FC2F538509F544114AE47E19FE55041713D0A673C9F54413D0AD7F3A1E550413D0AD7632B9F54419A9999F99DE550413D0AD7532F9F5441AE47E13A9BE550419A9999E92E9F54419A9999399BE5504133333373359F54410AD7A3A09CE55041D7A3702D369F5441A4703D5A9DE5504152B81E65399F5441B81E851B9CE55041713D0AB73C9F5441295C8F229AE55041713D0A073D9F544185EB51089AE55041000000804F9F5441295C8FC29AE550418FC2F538509F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000009F92CBBF9BE55041BEABA9644C9F544114AE47E19FE55041713D0A673C9F54413D0AD7F3A1E550413D0AD7632B9F54419A9999F99DE550413D0AD7532F9F5441AE47E13A9BE550419A9999E92E9F54419A9999399BE5504133333373359F54410AD7A3A09CE55041D7A3702D369F5441A4703D5A9DE5504152B81E65399F5441B81E851B9CE55041713D0AB73C9F5441295C8F229AE55041713D0A073D9F54418C0A6F0C9AE55041A1029F9A4C9F54416BDB50149AE550417151DB264D9F54412A3385699BE55041FC00D0394D9F54419F92CBBF9BE55041BEABA9644C9F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508612 - 217147
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCC8C87D2504148E17A2413C15441000000F085D25041E17A140E16C15441AE47E19A84D250415C8FC27518C154413D0AD7F3A2D2504114AE47612AC15441EC51B85EA7D25041EC51B83E24C154417B14AEC7AAD25041EC51B8FE1FC15441F6285CAFAED25041E17A140E1CC15441666666C6AFD25041F6285C0F1BC154415C8FC2E5BFD25041C3F5285C0CC154413D0AD733A4D25041713D0A37E5C05441E17A14DEA0D25041713D0AE7E8C054415C8FC2A5A0D2504114AE4781EBC054417B14AE079FD25041C3F5280CEDC05441D7A3704D9CD250415C8FC235EDC05441333333A398D25041CDCCCCACF0C05441C3F528FC94D25041B81E85EBF8C054413333330394D25041AE47E12AFDC054413D0AD78394D25041EC51B8BE01C1544185EB518890D250419A9999B909C1544148E17A848CD25041295C8FE20EC15441CDCCCC8C87D2504148E17A2413C15441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D072D68394D250415881B9BE01C1544185EB518890D250419A9999B909C1544148E17A848CD25041295C8FE20EC15441CDCCCC8C87D2504148E17A2413C15441000000F085D25041E17A140E16C154418209E29A84D25041D001C37518C1544166194C9B84D25041D4A2017618C15441669AD7F3A2D25041D8E546612AC15441E4E1AAD1A3D250417408352D29C15441BA70A356A4D25041EAB0897428C15441EC15B75EA7D250418F96B73E24C15441173BADC7AAD2504198EAB8FE1FC15441947E8842ABD250410805C4821FC15441F6285CAFAED25041E17A140E1CC1544148FEFBA2AFD250410F60B02F1BC15441CB6567C6AFD25041FDFD5A0F1BC15441D072D68394D250415881B9BE01C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>518335 - 205937
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000008A000000EC51B88EFA2B514185EB51C84D9C5441CDCCCC5CED2B5141EC51B80E519C5441666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C54415C8FC205E12B514114AE47215F9C5441D7A3708DDF2B51415C8FC2055F9C5441AE47E10ADF2B514114AE4721639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C5441AE47E12ADE2B5141D7A3706D669C544152B81EE5DD2B5141C3F5283C679C544114AE4781DD2B51415C8FC245689C544114AE4721DD2B514114AE47C1689C544100000050DC2B5141E17A147E699C5441295C8FC2DA2B5141333333836A9C54417B14AE47DA2B5141CDCCCCAC6B9C54418FC2F588D72B5141E17A14AE729C5441295C8F02D72B5141F6285CAF739C5441000000B0D62B51417B14AE17749C5441AE47E12AD62B5141000000F0749C54419A9999C9D52B5141713D0AC7759C54418FC2F5A8D52B5141D7A3704D769C5441295C8F82D52B514100000000779C5441B81E856BD52B5141000000D0779C544166666666D52B5141713D0A47789C544166666686D52B5141E17A145E799C5441AE47E1DAD52B5141AE47E1DA7A9C54413D0AD7E3D52B51411F85EBF17B9C5441D7A3708DD52B5141AE47E10A7C9C5441295C8FC2D52B5141B81E854B7D9C5441D7A3700DD62B51417B14AE977E9C5441AE47E1AAD62B514152B81E657F9C5441F6285CBFD72B5141D7A3708D809C544148E17A84D82B5141A4703D2A819C54418FC2F528D92B514133333383819C5441713D0A67DA2B5141C3F528FC819C544114AE47C1DA2B5141AE47E11A829C544148E17AE4DB2B514185EB51A8829C5441F6285C4FDC2B5141B81E85EB829C5441D7A370ADDC2B5141CDCCCC3C839C54417B14AEE7DC2B514152B81E95839C5441C3F5289CDD2B51415C8FC2E5849C5441C3F528DCDD2B51413D0AD763859C544114AE4731DE2B514185EB5118869C5441295C8F82DE2B5141B81E857B869C54415C8FC2F5DE2B514148E17AE4869C5441EC51B88EDF2B51410AD7A350879C544133333313E12B5141D7A3705D889C54415C8FC235E32B5141A4703D9A899C544100000010E42B5141B81E850B8A9C5441295C8F02E52B514152B81E758A9C54418FC2F5D8E52B514152B81ED58A9C5441C3F528CCE62B5141D7A3704D8B9C54410AD7A3A0E72B5141F6285CEF8B9C5441D7A3700DE92B5141D7A3708D8D9C5441EC51B8EEEA2B5141713D0AB78C9C54419A999999EB2B5141B81E856B8C9C5441B81E855BEC2B5141EC51B8FE8B9C544152B81E15ED2B5141713D0A878B9C5441D7A3709DEE2B5141E17A14AE8A9C5441666666D6EF2B5141E17A141E8A9C544166666646F02B5141A4703DFA899C544185EB51D8F12B514114AE47A1899C5441E17A144EF42B5141C3F5283C899C5441CDCCCC2CF92B51413D0AD7E3879C5441CDCCCCACF72B5141E17A143E889C544100000010F62B514152B81ED5869C5441EC51B85EF72B5141B81E85FB879C544114AE47F1F62B5141EC51B8DE879C544185EB51A8F62B5141713D0AE7879C5441CDCCCCDCF52B5141A4703D2A889C5441D7A3708DF52B514166666656889C544166666646F52B514133333373889C544114AE47D1F42B51418FC2F578889C5441D7A370FDF32B514148E17AC4879C5441E17A148EF32B5141CDCCCC4C879C5441AE47E15AF32B514148E17AF4869C54417B14AE57F32B5141E17A144E869C544100000030F32B514185EB51C8859C5441D7A370EDF22B51413D0AD793859C5441E17A146EF12B5141295C8F72849C5441F6285C3FF12B5141EC51B82E849C5441D7A3701DF12B5141713D0A97839C5441D7A370FDF02B5141A4703D2A839C5441EC51B8CEF02B5141B81E85DB829C5441713D0A87F02B5141713D0A87829C544114AE47F1EF2B5141CDCCCC0C829C54418FC2F588EF2B5141EC51B8AE819C54415C8FC245EF2B514100000050819C5441A4703D0AEF2B5141E17A14DE809C544114AE47F1EE2B5141E17A144E809C5441A4703DEAEE2B514148E17A947F9C544148E17AD4EE2B514185EB51487F9C54415C8FC295EE2B5141F6285CCF7E9C5441A4703D8AEE2B51415C8FC2757E9C544152B81E95EE2B5141295C8F127E9C544148E17AB4EE2B514114AE47717D9C544100000060EF2B51419A9999497C9C544166666696EF2B51418FC2F5D87B9C5441B81E85CBEF2B514185EB51487B9C54411F85EB01F02B5141713D0AD77A9C544100000040F02B51419A9999897A9C5441B81E850BF12B5141713D0A377A9C544152B81E55F12B5141F6285CFF799C54415C8FC2B5F12B5141E17A145E799C5441C3F528DCF12B51418FC2F5F8789C5441E17A14EEF12B514185EB51A8789C5441E17A140EF22B51417B14AEE7779C54410AD7A330F22B514100000070779C544166666676F22B5141B81E850B779C5441713D0AF7F22B51418FC2F5A8769C54418FC2F558F32B514185EB5178769C544148E17AA4F32B51419A999979769C54419A999959F42B5141666666E6769C5441C3F528BCF42B514166666656779C544185EB51E8F42B5141EC51B8BE779C544152B81E25F52B5141F6285C7F789C5441B81E856BF52B5141713D0AD7799C54411F85EBA1F52B514152B81E357A9C5441F6285CDFF52B51417B14AE877A9C54418FC2F518F62B5141AE47E1CA7A9C5441AE47E16AF62B5141C3F5283C7B9C5441C3F528ACF62B514148E17AA47B9C5441C3F5281CF72B5141B81E856B7D9C54410AD7A360F72B5141AE47E1FA7D9C5441713D0A67F92B5141333333037F9C5441E17A14AEF92B514114AE47417F9C544152B81EE5F92B514148E17A847F9C5441E17A141EFA2B51419A9999E97F9C54410AD7A380FA2B5141E17A144E809C5441713D0AC7FA2B5141EC51B86E809C54413D0AD773FB2B514148E17AB4809C5441A4703DCAFB2B5141333333C3809C544152B81E35FC2B5141B81E85AB809C54418FC2F578F92B51419A9999195F9C544114AE4771FD2B5141CDCCCCDC5E9C5441B81E858BFB2B5141AE47E12A539C5441EC51B88EFA2B514185EB51C84D9C5441
+</a>
+
+<b>
+0106000000010000000103000000010000007E000000666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C544186615309E22B51415CB436225F9C5441EF8DC205E12B51419F3248215F9C54418EE6FE9EE02B51410FD2C3195F9C5441D7A3708DDF2B51415C8FC2055F9C5441F7972923DF2B514148FAB55D629C5441C06BE10ADF2B5141B8F54721639C5441931B5EF7DE2B514179515C72639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C54414600EE42DE2B5141DC80321D669C5441845EE22ADE2B51412313706D669C544176C04FFFDD2B5141BAEB8BEE669C544152B81EE5DD2B5141C3F5283C679C54416EAB73C1DD2B51412EE50B9B679C544192374881DD2B51415AD0C345689C5441A4994754DD2B51410E10A97F689C544114AE4721DD2B514114AE47C1689C544110C5B686DC2B51413E67B84C699C5441CAB00050DC2B5141E78A147E699C54412EDA9BD6DB2B5141C0A8D5CD699C5441295C8FC2DA2B5141333333836A9C54417B14AE47DA2B5141CDCCCCAC6B9C54418FC2F588D72B5141E17A14AE729C544150DB8E02D72B5141C8F75CAF739C54415241C3EBD62B514188762ACC739C5441000000B0D62B51417B14AE17749C5441AE47E12AD62B5141000000F0749C544170E8D3EED52B5141543EBF74759C544191A49AC9D52B5141764309C7759C544198D73ABCD52B5141E2F217FE759C54418FC2F5A8D52B5141D7A3704D769C54417B02258CD52B51416A876ED3769C5441B6A98F82D52B51416A580000779C544144B7BE7DD52B51418209782B779C5441B81E856BD52B5141000000D0779C544166666666D52B5141713D0A47789C54410A897977D52B5141378AEEDB789C5441C8706786D52B5141D722145E799C544116FF53D5D52B514194BCDAC17A9C5441154BE1DAD52B5141AFB1E1DA7A9C544182DDD7E3D52B51419E35ECF17B9C5441B6D3708DD52B5141A268E20A7C9C5441295C8FC2D52B5141B81E854B7D9C54411192EAF1D52B51414E70961D7E9C54418154710DD62B51410177AE977E9C54416197982ED62B514145D2F1C27E9C5441AE47E1AAD62B514152B81E657F9C5441E09C0570D72B51417B9F6838809C544162075DBFD72B5141DDD9708D809C5441925F7B84D82B514144B33C2A819C544127C7F628D92B5141C7DC3183819C5441ECF03317DA2B51412FA6CCDD819C5441713D0A67DA2B5141C3F528FC819C544114AE47C1DA2B5141AE47E11A829C54415E5291D4DA2B51412A903F24829C544143FE7AE4DB2B5141767051A8829C5441A4345D4FDC2B51413FA484EB829C5441841D71ADDC2B5141D51DCD3C839C5441A50231C7DC2B51415D05DA63839C54417B14AEE7DC2B514152B81E95839C54416366076FDD2B5141754D9491849C5441A9EC289CDD2B5141484AC2E5849C54413F5A8AA8DD2B5141654326FE849C5441C3F528DCDD2B51413D0AD763859C5441AF1A9DF8DD2B5141D29D2BA0859C54412F164831DE2B51415CC95018869C5441653F9082DE2B5141C1ED857B869C5441EC984BDADE2B51414EE474CB869C544187B5C2F5DE2B514145FC7AE4869C5441EC51B88EDF2B51410AD7A350879C54410DB85CDCE02B51415B077F37889C544196573413E12B51415B31715D889C54416DBB8BA8E12B5141C12E01B4889C54415C8FC235E32B5141A4703D9A899C5441C07F516DE32B5141710514B7899C5441144E0110E42B51412B1D850B8A9C544113068E02E52B5141097D1D758A9C5441FAEEF5D8E52B514192B81ED58A9C5441560129CCE62B514158DA6F4D8B9C5441D09FAA1CE72B51418A32CA8A8B9C54410AD7A3A0E72B5141F6285CEF8B9C5441BC1144D6E82B51416303D04E8D9C544161CD700DE92B51415691708D8D9C5441A8AB0990EA2B5141EA0A38E18C9C5441A907B9EEEA2B5141129A09B78C9C54418A85CD0FEB2B5141064C6BA88C9C54419A999999EB2B5141B81E856B8C9C5441B81E855BEC2B5141EC51B8FE8B9C5441079EF790EC2B5141E27741DC8B9C54413F151E15ED2B51418D0B09878B9C54412C51709DEE2B5141213213AE8A9C544195DB4679EF2B5141CC0580FF899C54413C2ACEB8F02B514195B7261D849C5441D7A370FDF02B5141A4703D2A839C5441EC51B8CEF02B5141B81E85DB829C544167DC858FF02B514180A60991829C5441D9C00A87F02B5141BF030B87829C54415A0F9A4EF02B51414211F958829C544114AE47F1EF2B5141CDCCCC0C829C54418FC2F588EF2B5141EC51B8AE819C54415C8FC245EF2B514100000050819C54414519233AEF2B5141F407C139819C5441F4FB3C0AEF2B51414DD715DE809C544150BB46F1EE2B5141256D154E809C5441DB81ABEAEE2B514123A7D09F7F9C54419B743DEAEE2B5141DB497B947F9C5441BA998DE7EE2B51411671138B7F9C544148E17AD4EE2B514185EB51487F9C54415C8FC295EE2B5141F6285CCF7E9C54417A434790EE2B5141E0A1B9A47E9C5441014C3C8AEE2B5141EEAFC1757E9C544177B25E8FEE2B5141B7BEFC467E9C544152B81E95EE2B5141295C8F127E9C544148E17AB4EE2B514114AE47717D9C544100000060EF2B51419A9999497C9C5441E53FA681EF2B51413F09ED037C9C5441019F6596EF2B5141FAF4F5D87B9C5441E674A7A8EF2B5141928841A77B9C5441B81E85CBEF2B514185EB51487B9C544167DB57F9EF2B51419F62E6E87A9C54418851EB01F02B5141AB200AD77A9C5441FEC5FF3FF02B5141266E99897A9C5441C3D5830BF12B514143FC09377A9C5441666666E6ED2B51418FC2F5F85D9C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>518335 - 382294
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000008A000000EC51B88EFA2B514185EB51C84D9C5441CDCCCC5CED2B5141EC51B80E519C5441666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C54415C8FC205E12B514114AE47215F9C5441D7A3708DDF2B51415C8FC2055F9C5441AE47E10ADF2B514114AE4721639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C5441AE47E12ADE2B5141D7A3706D669C544152B81EE5DD2B5141C3F5283C679C544114AE4781DD2B51415C8FC245689C544114AE4721DD2B514114AE47C1689C544100000050DC2B5141E17A147E699C5441295C8FC2DA2B5141333333836A9C54417B14AE47DA2B5141CDCCCCAC6B9C54418FC2F588D72B5141E17A14AE729C5441295C8F02D72B5141F6285CAF739C5441000000B0D62B51417B14AE17749C5441AE47E12AD62B5141000000F0749C54419A9999C9D52B5141713D0AC7759C54418FC2F5A8D52B5141D7A3704D769C5441295C8F82D52B514100000000779C5441B81E856BD52B5141000000D0779C544166666666D52B5141713D0A47789C544166666686D52B5141E17A145E799C5441AE47E1DAD52B5141AE47E1DA7A9C54413D0AD7E3D52B51411F85EBF17B9C5441D7A3708DD52B5141AE47E10A7C9C5441295C8FC2D52B5141B81E854B7D9C5441D7A3700DD62B51417B14AE977E9C5441AE47E1AAD62B514152B81E657F9C5441F6285CBFD72B5141D7A3708D809C544148E17A84D82B5141A4703D2A819C54418FC2F528D92B514133333383819C5441713D0A67DA2B5141C3F528FC819C544114AE47C1DA2B5141AE47E11A829C544148E17AE4DB2B514185EB51A8829C5441F6285C4FDC2B5141B81E85EB829C5441D7A370ADDC2B5141CDCCCC3C839C54417B14AEE7DC2B514152B81E95839C5441C3F5289CDD2B51415C8FC2E5849C5441C3F528DCDD2B51413D0AD763859C544114AE4731DE2B514185EB5118869C5441295C8F82DE2B5141B81E857B869C54415C8FC2F5DE2B514148E17AE4869C5441EC51B88EDF2B51410AD7A350879C544133333313E12B5141D7A3705D889C54415C8FC235E32B5141A4703D9A899C544100000010E42B5141B81E850B8A9C5441295C8F02E52B514152B81E758A9C54418FC2F5D8E52B514152B81ED58A9C5441C3F528CCE62B5141D7A3704D8B9C54410AD7A3A0E72B5141F6285CEF8B9C5441D7A3700DE92B5141D7A3708D8D9C5441EC51B8EEEA2B5141713D0AB78C9C54419A999999EB2B5141B81E856B8C9C5441B81E855BEC2B5141EC51B8FE8B9C544152B81E15ED2B5141713D0A878B9C5441D7A3709DEE2B5141E17A14AE8A9C5441666666D6EF2B5141E17A141E8A9C544166666646F02B5141A4703DFA899C544185EB51D8F12B514114AE47A1899C5441E17A144EF42B5141C3F5283C899C5441CDCCCC2CF92B51413D0AD7E3879C5441CDCCCCACF72B5141E17A143E889C544100000010F62B514152B81ED5869C5441EC51B85EF72B5141B81E85FB879C544114AE47F1F62B5141EC51B8DE879C544185EB51A8F62B5141713D0AE7879C5441CDCCCCDCF52B5141A4703D2A889C5441D7A3708DF52B514166666656889C544166666646F52B514133333373889C544114AE47D1F42B51418FC2F578889C5441D7A370FDF32B514148E17AC4879C5441E17A148EF32B5141CDCCCC4C879C5441AE47E15AF32B514148E17AF4869C54417B14AE57F32B5141E17A144E869C544100000030F32B514185EB51C8859C5441D7A370EDF22B51413D0AD793859C5441E17A146EF12B5141295C8F72849C5441F6285C3FF12B5141EC51B82E849C5441D7A3701DF12B5141713D0A97839C5441D7A370FDF02B5141A4703D2A839C5441EC51B8CEF02B5141B81E85DB829C5441713D0A87F02B5141713D0A87829C544114AE47F1EF2B5141CDCCCC0C829C54418FC2F588EF2B5141EC51B8AE819C54415C8FC245EF2B514100000050819C5441A4703D0AEF2B5141E17A14DE809C544114AE47F1EE2B5141E17A144E809C5441A4703DEAEE2B514148E17A947F9C544148E17AD4EE2B514185EB51487F9C54415C8FC295EE2B5141F6285CCF7E9C5441A4703D8AEE2B51415C8FC2757E9C544152B81E95EE2B5141295C8F127E9C544148E17AB4EE2B514114AE47717D9C544100000060EF2B51419A9999497C9C544166666696EF2B51418FC2F5D87B9C5441B81E85CBEF2B514185EB51487B9C54411F85EB01F02B5141713D0AD77A9C544100000040F02B51419A9999897A9C5441B81E850BF12B5141713D0A377A9C544152B81E55F12B5141F6285CFF799C54415C8FC2B5F12B5141E17A145E799C5441C3F528DCF12B51418FC2F5F8789C5441E17A14EEF12B514185EB51A8789C5441E17A140EF22B51417B14AEE7779C54410AD7A330F22B514100000070779C544166666676F22B5141B81E850B779C5441713D0AF7F22B51418FC2F5A8769C54418FC2F558F32B514185EB5178769C544148E17AA4F32B51419A999979769C54419A999959F42B5141666666E6769C5441C3F528BCF42B514166666656779C544185EB51E8F42B5141EC51B8BE779C544152B81E25F52B5141F6285C7F789C5441B81E856BF52B5141713D0AD7799C54411F85EBA1F52B514152B81E357A9C5441F6285CDFF52B51417B14AE877A9C54418FC2F518F62B5141AE47E1CA7A9C5441AE47E16AF62B5141C3F5283C7B9C5441C3F528ACF62B514148E17AA47B9C5441C3F5281CF72B5141B81E856B7D9C54410AD7A360F72B5141AE47E1FA7D9C5441713D0A67F92B5141333333037F9C5441E17A14AEF92B514114AE47417F9C544152B81EE5F92B514148E17A847F9C5441E17A141EFA2B51419A9999E97F9C54410AD7A380FA2B5141E17A144E809C5441713D0AC7FA2B5141EC51B86E809C54413D0AD773FB2B514148E17AB4809C5441A4703DCAFB2B5141333333C3809C544152B81E35FC2B5141B81E85AB809C54418FC2F578F92B51419A9999195F9C544114AE4771FD2B5141CDCCCCDC5E9C5441B81E858BFB2B5141AE47E12A539C5441EC51B88EFA2B514185EB51C84D9C5441
+</a>
+
+<b>
+0106000000010000000103000000010000007E000000666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C544186615309E22B51415CB436225F9C5441EF8DC205E12B51419F3248215F9C54418EE6FE9EE02B51410FD2C3195F9C5441D7A3708DDF2B51415C8FC2055F9C5441F7972923DF2B514148FAB55D629C5441C06BE10ADF2B5141B8F54721639C5441931B5EF7DE2B514179515C72639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C54414600EE42DE2B5141DC80321D669C5441845EE22ADE2B51412313706D669C544176C04FFFDD2B5141BAEB8BEE669C544152B81EE5DD2B5141C3F5283C679C54416EAB73C1DD2B51412EE50B9B679C544192374881DD2B51415AD0C345689C5441A4994754DD2B51410E10A97F689C544114AE4721DD2B514114AE47C1689C544110C5B686DC2B51413E67B84C699C5441CAB00050DC2B5141E78A147E699C54412EDA9BD6DB2B5141C0A8D5CD699C5441295C8FC2DA2B5141333333836A9C54417B14AE47DA2B5141CDCCCCAC6B9C54418FC2F588D72B5141E17A14AE729C544150DB8E02D72B5141C8F75CAF739C54415241C3EBD62B514188762ACC739C5441000000B0D62B51417B14AE17749C5441AE47E12AD62B5141000000F0749C544170E8D3EED52B5141543EBF74759C544191A49AC9D52B5141764309C7759C544198D73ABCD52B5141E2F217FE759C54418FC2F5A8D52B5141D7A3704D769C54417B02258CD52B51416A876ED3769C5441B6A98F82D52B51416A580000779C544144B7BE7DD52B51418209782B779C5441B81E856BD52B5141000000D0779C544166666666D52B5141713D0A47789C54410A897977D52B5141378AEEDB789C5441C8706786D52B5141D722145E799C544116FF53D5D52B514194BCDAC17A9C5441154BE1DAD52B5141AFB1E1DA7A9C544182DDD7E3D52B51419E35ECF17B9C5441B6D3708DD52B5141A268E20A7C9C5441295C8FC2D52B5141B81E854B7D9C54411192EAF1D52B51414E70961D7E9C54418154710DD62B51410177AE977E9C54416197982ED62B514145D2F1C27E9C5441AE47E1AAD62B514152B81E657F9C5441E09C0570D72B51417B9F6838809C544162075DBFD72B5141DDD9708D809C5441925F7B84D82B514144B33C2A819C544127C7F628D92B5141C7DC3183819C5441ECF03317DA2B51412FA6CCDD819C5441713D0A67DA2B5141C3F528FC819C544114AE47C1DA2B5141AE47E11A829C54415E5291D4DA2B51412A903F24829C544143FE7AE4DB2B5141767051A8829C5441A4345D4FDC2B51413FA484EB829C5441841D71ADDC2B5141D51DCD3C839C5441A50231C7DC2B51415D05DA63839C54417B14AEE7DC2B514152B81E95839C54416366076FDD2B5141754D9491849C5441A9EC289CDD2B5141484AC2E5849C54413F5A8AA8DD2B5141654326FE849C5441C3F528DCDD2B51413D0AD763859C5441AF1A9DF8DD2B5141D29D2BA0859C54412F164831DE2B51415CC95018869C5441653F9082DE2B5141C1ED857B869C5441EC984BDADE2B51414EE474CB869C544187B5C2F5DE2B514145FC7AE4869C5441EC51B88EDF2B51410AD7A350879C54410DB85CDCE02B51415B077F37889C544196573413E12B51415B31715D889C54416DBB8BA8E12B5141C12E01B4889C54415C8FC235E32B5141A4703D9A899C5441C07F516DE32B5141710514B7899C5441144E0110E42B51412B1D850B8A9C544113068E02E52B5141097D1D758A9C5441FAEEF5D8E52B514192B81ED58A9C5441560129CCE62B514158DA6F4D8B9C5441C05BAA1CE72B5141ACFEC98A8B9C54410AD7A3A0E72B5141F6285CEF8B9C5441BC1144D6E82B51416303D04E8D9C544161CD700DE92B51415691708D8D9C5441A8AB0990EA2B5141EA0A38E18C9C5441A907B9EEEA2B5141129A09B78C9C54418A85CD0FEB2B5141064C6BA88C9C54419A999999EB2B5141B81E856B8C9C5441B81E855BEC2B5141EC51B8FE8B9C5441079EF790EC2B5141E27741DC8B9C54413F151E15ED2B51418D0B09878B9C54412C51709DEE2B5141213213AE8A9C544146299072EF2B514126C212068A9C544197FE7A87F02B5141DF0364DD849C5441D7A370FDF02B5141A4703D2A839C5441EC51B8CEF02B5141B81E85DB829C544167DC858FF02B514180A60991829C5441D9C00A87F02B5141BF030B87829C54415A0F9A4EF02B51414211F958829C544114AE47F1EF2B5141CDCCCC0C829C54418FC2F588EF2B5141EC51B8AE819C54415C8FC245EF2B514100000050819C54414519233AEF2B5141F407C139819C5441F4FB3C0AEF2B51414DD715DE809C544150BB46F1EE2B5141256D154E809C5441DB81ABEAEE2B514123A7D09F7F9C54419B743DEAEE2B5141DB497B947F9C5441BA998DE7EE2B51411671138B7F9C544148E17AD4EE2B514185EB51487F9C54415C8FC295EE2B5141F6285CCF7E9C54417A434790EE2B5141E0A1B9A47E9C5441014C3C8AEE2B5141EEAFC1757E9C544177B25E8FEE2B5141B7BEFC467E9C544152B81E95EE2B5141295C8F127E9C544148E17AB4EE2B514114AE47717D9C544100000060EF2B51419A9999497C9C5441E53FA681EF2B51413F09ED037C9C5441019F6596EF2B5141FAF4F5D87B9C5441E674A7A8EF2B5141928841A77B9C5441B81E85CBEF2B514185EB51487B9C544167DB57F9EF2B51419F62E6E87A9C54418851EB01F02B5141AB200AD77A9C5441FEC5FF3FF02B5141266E99897A9C5441C3D5830BF12B514143FC09377A9C5441666666E6ED2B51418FC2F5F85D9C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 2008483
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441D7A3704DFF1851413D0AD78363A354419A999989FC1851417B14AE3761A35441EC51B89EF9185141666666765EA3544185EB51D8F41851419A99995959A35441295C8FB2EE185141C3F528FC4FA35441666666C6EB185141C3F5283C49A3544133333313EA18514152B81E4546A3544148E17A44E81851417B14AE8740A35441CDCCCC4CE71851411F85EB313CA35441713D0AD7E6185141AE47E16A35A35441C3F5288CE51851411F85EB412FA354419A999949E418514148E17A1426A354419A999979E318514185EB51081EA3544100000080E21851415C8FC23514A3544152B81E65E11851410AD7A3100DA35441E17A14EEDF185141295C8F1206A35441666666E6DD185141D7A370BD01A35441EC51B83EDC18514152B81EA5FCA25441713D0AD7D91851410AD7A360F9A25441F6285C6FD618514152B81E15F6A25441E17A146EBC1851417B14AE77E4A2544148E17A34B21851419A999949DDA25441E17A148E9C185141A4703D7ACEA2544152B81E25941851411F85EBA1C8A254418FC2F5B886185141B81E857BBFA254413D0AD7E381185141E17A143EBCA25441B81E859B80185141295C8F52BBA25441333333E37F185141EC51B81EBBA2544114AE47C181185141D7A3707DBCA254410AD7A39086185141A4703DBABFA254411F85EBF19318514114AE47E1C8A25441E17A148E9C185141C3F528DCCEA25441B81E85FBB11851417B14AEA7DDA254418FC2F538BC185141713D0AD7E4A25441D7A370CDD518514100000060F6A25441D7A3708DD8185141666666E6F8A25441295C8F62DA185141EC51B82EFBA25441D7A370DDDB1851410AD7A340FDA2544114AE47E1DC185141A4703D3A02A35441E17A145EDE1851413333334306A35441713D0A07DF18514185EB51980AA35441C3F5286CE0185141E17A14BE12A354411F85EBC1E118514114AE47F11EA3544148E17AD4E218514148E17A8428A35441CDCCCC3CE31851415C8FC2552BA35441CDCCCC9CE3185141F6285CCF2EA3544185EB51A8E51851410000004036A3544152B81EB5E61851411F85EBD13BA3544148E17AF4E71851417B14AEE740A35441B81E858BE9185141D7A3705D46A35441AE47E1DAEA185141B81E858B49A354419A999999ED1851410AD7A35050A3544185EB5138F1185141E17A14FE55A35441713D0AD7F3185141C3F528DC59A354418FC2F5E8F8185141B81E852B5FA354411F85EBD1FB185141295C8FE261A354411F85EB31FE185141F6285C0F64A354419A99994905195141EC51B80E6AA3544114AE475109195141A4703D0A6EA35441713D0AB70A195141D7A370FD72A354413D0AD7930B195141F6285C2F76A3544148E17A440A195141713D0A4776A3544114AE47110A1951411F85EB9175A3544152B81EA507195141CDCCCCCC6FA35441B81E85EB0019514152B81ED568A35441295C8FC2F9185141E17A148E62A354417B14AE17F518514148E17A145EA35441E17A144EF11851413D0AD7D359A35441D7A3704DED185141A4703DCA53A354413D0AD793EA185141AE47E1AA4EA354411F85EBE1E81851413D0AD7B34AA35441295C8F42E71851416666667645A354415C8FC2B5E41851411F85EB413CA354411F85EB51E3185141C3F5284C36A3544185EB5188E01851417B14AE873AA3544185EB51C8DC1851410AD7A3703FA354417B14AEC7DB185141E17A140E41A354419A999959DA185141C3F528DC40A35441D7A3703DE218514152B81EE535A35441D7A3702DE31851418FC2F56832A35441713D0A97E21851413D0AD7F32EA35441333333E3E118514152B81E852BA35441E17A14EEDF185141E17A149E1FA35441CDCCCC7CDF185141F6285C4F19A354411F85EBE1DD185141713D0A070DA35441D7A3707DDD185141333333C309A354411F85EB51DC185141CDCCCCCC04A3544133333363DB185141B81E857B02A3544185EB5188DB1851410AD7A350FFA2544148E17AD4DA185141C3F528CCFDA254411F85EBA1D91851415C8FC2F5FBA254417B14AED7D7185141295C8FC2F9A25441F6285C1FD518514185EB5118F7A254413D0AD7C3BB185141EC51B8BEE5A2544133333393B1185141F6285CCFDEA254418FC2F598A81851417B14AE87D8A25441C3F5284C84185141EC51B8AEBFA2544166666606801851413D0AD7B3BCA25441333333537E1851417B14AEB7BCA254417B14AEF77F1851413D0AD7A3BDA25441F6285C8F84185141AE47E1DAC0A25441D7A3707D88185141E17A149EC3A254411F85EBC18B185141666666C6C5A254413D0AD7938C185141D7A370BDC5A25441E17A14AE8C185141AE47E15AC6A25441333333239718514185EB5188CDA254417B14AE379C1851410AD7A310D1A254418FC2F5A8A1185141F6285CAFD4A25441C3F5283CA21851410AD7A370D5A25441E17A149EA31851418FC2F548D7A25441F6285C6FAD185141D7A3709DDDA254417B14AED7B8185141C3F5283CE7A254413D0AD713C31851415C8FC225EEA2544100000000D7185141713D0A57FDA2544185EB5168DA1851418FC2F57803A354410AD7A3E0DC1851419A9999390DA35441713D0A77DE1851413333337319A3544166666636E0185141B81E850B36A35441C3F5288CD9185141713D0A0741A3544133333333DA185141CDCCCC1C41A354410AD7A3A0DB185141C3F5284C41A35441295C8F02D7185141F6285CEF48A354415C8FC245E5185141F6285C4F48A354419A999939E8185141D7A3702D50A3544133333313EF1851411F85EBE15BA354418FC2F518F3185141EC51B86E5FA354418FC2F598F51851413D0AD7A361A3544114AE4781FE185141AE47E13A6AA3544185EB5138081951410AD7A3B076A354413D0AD7530A1951417B14AEF776A35441B81E854B0B19514185EB511877A3544114AE47610C1951415C8FC29586A354411F85EBE10C1951413333337392A3544185EB51980D1951411F85EB91A3A354411F85EB4111195141000000909FA35441F6285CDF121951413D0AD7239EA354416666663612195141B81E851B8FA3544152B81E85111951417B14AE6782A3544148E17AE410195141295C8F4276A354418FC2F57810195141713D0AA771A35441C3F5285C0E19514114AE47E16BA35441B81E85AB0A195141EC51B85E67A354410AD7A320FF185141E17A143E5EA3544114AE4791F71851410000007056A354417B14AEB7F11851410AD7A3D04CA3544166666626EE1851411F85EBB143A354419A999979E81851410AD7A3802AA35441713D0A97E5185141B81E85CB10A354411F85EB41E218514185EB517801A354419A999969DE185141295C8F62F9A254418FC2F588DA18514100000050F5A25441333333D3D41851419A9999C9F1A254417B14AE07CB185141EC51B88EEAA2544133333323C9185141D7A3701DE9A254418FC2F528C51851415C8FC215E6A25441EC51B82EC1185141E17A140EE3A254411F85EB31BF185141A4703D8AE1A25441D7A370FDB8185141CDCCCC4CDDA25441713D0A57B7185141C3F5282CDCA2544152B81EE5B5185141F6285C2FDBA25441CDCCCCDCB4185141AE47E17ADAA254417B14AEE7AA1851418FC2F5A8D3A254410AD7A3A0A0185141713D0AA7CCA25441AE47E15A96185141EC51B89EC5A254419A9999B98A185141B81E853BBEA25441F6285C1F891851411F85EB01BDA25441713D0A0788185141CDCCCC2CBCA254410000009085185141D7A3704DBAA25441E17A149E821851410AD7A310B8A25441A4703D3A8018514100000040B6A25441000000B075185141B81E851BAFA2544148E17A446B185141F6285C0FA8A2544148E17AF4601851411F85EBD1A0A2544166666686561851410000008099A25441CDCCCCEC4B185141F6285C0F92A25441B81E85AB401851419A9999298AA25441713D0A4738185141295C8F4284A2544152B81E7537185141F6285CAF83A25441295C8FD2351851418FC2F58882A25441E17A149E2A185141F6285CAF7AA254413D0AD7A32018514152B81E7573A25441666666F61518514185EB51B86BA2544114AE47510C185141B81E85BB64A25441F6285C4F02185141C3F5287C5DA2544100000020F81751419A99991956A254415C8FC2F5EC1751411F85EB014EA25441295C8F72E21751415C8FC22546A25441AE47E12ADD1751413333333342A25441333333C3D81751417B14AEE73EA2544133333353D217514185EB51383AA2544148E17A74D2175141EC51B8DE33A25441B81E852BD11751413D0AD79334A25441A4703DCAD01751419A9999C934A25441AE47E11ACF175141A4703DAA35A2544166666666CD17514114AE478136A25441EC51B81ECD175141295C8FA236A25441D7A370ADCB175141EC51B84E37A25441000000F0C91751411F85EB1138A254410AD7A3C0C8175141EC51B88E38A25441E17A142EC8175141B81E85CB38A254418FC2F518CA17514185EB51283AA254418FC2F5B8CD175141CDCCCCBC3CA25441E17A142ED0175141CDCCCC7C3EA2544185EB5178D4175141AE47E18A41A254413D0AD713D9175141CDCCCC1C47A25441000000F0E41751419A99994950A25441295C8F720C18514114AE47716DA25441000000D00B1851411F85EBE16DA2544152B81E6538185141B81E85BB8DA254418FC2F5F83A1851419A9999398FA2544152B81EA57A18514152B81EA5BBA2544148E17AF47B18514148E17A84BCA25441F6285C4F7C185141713D0A97BBA25441AE47E11A7C185141AE47E1AABAA2544114AE47B17B185141E17A14AEB9A25441AE47E1AA79185141C3F5282CB8A2544114AE472159185141F6285C8FA1A25441713D0AE746185141D7A370DD94A2544152B81E65431851410AD7A37092A2544185EB51F83C185141B81E85FB8DA25441666666C636185141333333F389A25441333333033A1851410AD7A3708EA25441295C8FC2371851418FC2F5F88CA254415C8FC2753418514152B81E8588A25441295C8FB22E18514148E17AA484A2544114AE47312A185141CDCCCC3C81A25441CDCCCCCC2318514185EB51787CA25441666666F61A1851410AD7A3D075A254418FC2F5F80D18514114AE47616CA254417B14AE17FC1751415C8FC2B55FA2544114AE4791FB17514148E17AC45EA25441C3F5280CE4175141333333A34DA2544148E17AE4D71751418FC2F5C844A25441713D0A47D71751419A9999A944A2544152B81E95D6175141E17A14CE43A2544100000040D7175141295C8FF242A25441D7A3700DD8175141B81E857B43A254410AD7A3E0DE175141AE47E18A48A254419A999919F7175141E17A142E5AA25441AE47E14AFC1751411F85EB015EA254418FC2F5A8FC175141B81E859B5EA25441000000900B1851411F85EB9169A254413D0AD7832718514114AE47B17DA25441EC51B8FE29185141F6285C9F7FA254419A9999D92C185141B81E851B82A254410000004036185141E17A146E88A254411F85EB2138185141E17A147E89A25441D7A3700D39185141333333038AA25441CDCCCCFC3918514148E17AB48AA25441295C8FF2481851418FC2F5F894A25441333333B35E185141CDCCCC2CA4A2544148E17AA470185141000000B0B0A25441A4703DDA7A185141E17A14AEB7A25441295C8F727C1851413D0AD793B8A254411F85EB017B185141D7A3705DB7A2544148E17AE47018514152B81E45B0A25441F6285CDF5E185141EC51B8BEA3A25441AE47E13A49185141A4703D9A94A25441E17A14CE44185141E17A148E91A254418FC2F5583A185141F6285C4F8AA2544152B81E5539185141F6285C9F89A254415C8FC245381851413D0AD7D388A2544148E17A0437185141AE47E1CA87A2544166666686381851410000007089A25441EC51B88E361851416666665688A2544166666676351851415C8FC25587A254413D0AD783331851411F85EB1186A254411F85EBE1301851415C8FC26584A25441B81E854B2D1851413D0AD72382A254419A9999A92A185141CDCCCCFC7FA25441000000202D1851415C8FC21581A25441666666262A185141CDCCCC0C7FA25441D7A370CD271851413D0AD7537DA25441D7A370ED0B18514148E17A3469A254418FC2F5F8FC17514148E17A445EA254411F85EBA1FC175141D7A3709D5DA254419A999979F7175141295C8FB259A254419A999969DF175141D7A3701D48A25441000000A0D71751410AD7A34042A25441F6285C4FD1175141666666D63DA25441CDCCCC4CD0175141000000603EA254411F85EBD1CD1751418FC2F5983CA25441AE47E1AACF17514185EB51C839A2544100000010D2175141295C8F2237A25441CDCCCCBCD1175141B81E852B3AA25441AE47E1AAD0175141295C8F323AA254411F85EB21D01751418FC2F5583BA25441B81E855BE5175141C3F528DC4AA25441C3F5284CFD1751418FC2F5685CA254411F85EB81FD175141A4703D0A5DA254417B14AED70F185141333333736AA2544152B81EB52C1851411F85EB317FA25441D7A3702D5A1851413D0AD7339FA25441EC51B88E80185141A4703D8AB9A254413D0AD71383185141EC51B8BEB9A2544152B81E658518514152B81E45BAA254419A9999D987185141A4703D1ABCA25441E17A141E86185141CDCCCC7CBBA25441F6285C8F82185141A4703DEABAA254413D0AD7C385185141D7A3701DBDA25441713D0AD7A918514152B81ED5D5A254417B14AE07B318514114AE4741DCA25441295C8F22BD185141295C8F62E3A25441295C8F02D71851415C8FC265F5A254417B14AE47DE185141F6285CEFF9A2544148E17AD4DF185141295C8F12FDA25441B81E85FBDE1851415C8FC2E5FDA2544133333343E1185141F6285CFF05A35441E17A14CEE2185141EC51B8DE0CA35441295C8FD2E3185141C3F5283C14A3544148E17AC4E41851419A9999E91DA354413D0AD7B3E5185141295C8FE225A354415C8FC215E7185141AE47E1CA2EA35441E17A149EE7185141295C8F2231A3544152B81EE5E81851410AD7A3C034A35441D7A370BDEA185141B81E85EB39A3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441CDCCCC1C0A19514152B81E2569A354413D0AD7630C195141C3F528AC6BA35441295C8F420E1951413D0AD7736CA35441B81E858B0E19514185EB51E874A35441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000014AE47616D1851413D0AD763B2A254418FC2F5F83A1851419A9999398FA25441EC51B8FE49185141713D0A67A7A25441EC51B82E541851418FC2F5E8B5A254411F85EBF159185141EC51B82EBFA25441CDE994ED5B1851410C1D995FC2A25441B7BB7B397018514185161760B4A2544114AE47616D1851413D0AD763B2A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 3320244
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441D7A3704DFF1851413D0AD78363A354419A999989FC1851417B14AE3761A35441EC51B89EF9185141666666765EA3544185EB51D8F41851419A99995959A35441295C8FB2EE185141C3F528FC4FA35441666666C6EB185141C3F5283C49A3544133333313EA18514152B81E4546A3544148E17A44E81851417B14AE8740A35441CDCCCC4CE71851411F85EB313CA35441713D0AD7E6185141AE47E16A35A35441C3F5288CE51851411F85EB412FA354419A999949E418514148E17A1426A354419A999979E318514185EB51081EA3544100000080E21851415C8FC23514A3544152B81E65E11851410AD7A3100DA35441E17A14EEDF185141295C8F1206A35441666666E6DD185141D7A370BD01A35441EC51B83EDC18514152B81EA5FCA25441713D0AD7D91851410AD7A360F9A25441F6285C6FD618514152B81E15F6A25441E17A146EBC1851417B14AE77E4A2544148E17A34B21851419A999949DDA25441E17A148E9C185141A4703D7ACEA2544152B81E25941851411F85EBA1C8A254418FC2F5B886185141B81E857BBFA254413D0AD7E381185141E17A143EBCA25441B81E859B80185141295C8F52BBA25441333333E37F185141EC51B81EBBA2544114AE47C181185141D7A3707DBCA254410AD7A39086185141A4703DBABFA254411F85EBF19318514114AE47E1C8A25441E17A148E9C185141C3F528DCCEA25441B81E85FBB11851417B14AEA7DDA254418FC2F538BC185141713D0AD7E4A25441D7A370CDD518514100000060F6A25441D7A3708DD8185141666666E6F8A25441295C8F62DA185141EC51B82EFBA25441D7A370DDDB1851410AD7A340FDA2544114AE47E1DC185141A4703D3A02A35441E17A145EDE1851413333334306A35441713D0A07DF18514185EB51980AA35441C3F5286CE0185141E17A14BE12A354411F85EBC1E118514114AE47F11EA3544148E17AD4E218514148E17A8428A35441CDCCCC3CE31851415C8FC2552BA35441CDCCCC9CE3185141F6285CCF2EA3544185EB51A8E51851410000004036A3544152B81EB5E61851411F85EBD13BA3544148E17AF4E71851417B14AEE740A35441B81E858BE9185141D7A3705D46A35441AE47E1DAEA185141B81E858B49A354419A999999ED1851410AD7A35050A3544185EB5138F1185141E17A14FE55A35441713D0AD7F3185141C3F528DC59A354418FC2F5E8F8185141B81E852B5FA354411F85EBD1FB185141295C8FE261A354411F85EB31FE185141F6285C0F64A354419A99994905195141EC51B80E6AA3544114AE475109195141A4703D0A6EA35441713D0AB70A195141D7A370FD72A354413D0AD7930B195141F6285C2F76A3544148E17A440A195141713D0A4776A3544114AE47110A1951411F85EB9175A3544152B81EA507195141CDCCCCCC6FA35441B81E85EB0019514152B81ED568A35441295C8FC2F9185141E17A148E62A354417B14AE17F518514148E17A145EA35441E17A144EF11851413D0AD7D359A35441D7A3704DED185141A4703DCA53A354413D0AD793EA185141AE47E1AA4EA354411F85EBE1E81851413D0AD7B34AA35441295C8F42E71851416666667645A354415C8FC2B5E41851411F85EB413CA354411F85EB51E3185141C3F5284C36A3544185EB5188E01851417B14AE873AA3544185EB51C8DC1851410AD7A3703FA354417B14AEC7DB185141E17A140E41A354419A999959DA185141C3F528DC40A35441D7A3703DE218514152B81EE535A35441D7A3702DE31851418FC2F56832A35441713D0A97E21851413D0AD7F32EA35441333333E3E118514152B81E852BA35441E17A14EEDF185141E17A149E1FA35441CDCCCC7CDF185141F6285C4F19A354411F85EBE1DD185141713D0A070DA35441D7A3707DDD185141333333C309A354411F85EB51DC185141CDCCCCCC04A3544133333363DB185141B81E857B02A3544185EB5188DB1851410AD7A350FFA2544148E17AD4DA185141C3F528CCFDA254411F85EBA1D91851415C8FC2F5FBA254417B14AED7D7185141295C8FC2F9A25441F6285C1FD518514185EB5118F7A254413D0AD7C3BB185141EC51B8BEE5A2544133333393B1185141F6285CCFDEA254418FC2F598A81851417B14AE87D8A25441C3F5284C84185141EC51B8AEBFA2544166666606801851413D0AD7B3BCA25441333333537E1851417B14AEB7BCA254417B14AEF77F1851413D0AD7A3BDA25441F6285C8F84185141AE47E1DAC0A25441D7A3707D88185141E17A149EC3A254411F85EBC18B185141666666C6C5A254413D0AD7938C185141D7A370BDC5A25441E17A14AE8C185141AE47E15AC6A25441333333239718514185EB5188CDA254417B14AE379C1851410AD7A310D1A254418FC2F5A8A1185141F6285CAFD4A25441C3F5283CA21851410AD7A370D5A25441E17A149EA31851418FC2F548D7A25441F6285C6FAD185141D7A3709DDDA254417B14AED7B8185141C3F5283CE7A254413D0AD713C31851415C8FC225EEA2544100000000D7185141713D0A57FDA2544185EB5168DA1851418FC2F57803A354410AD7A3E0DC1851419A9999390DA35441713D0A77DE1851413333337319A3544166666636E0185141B81E850B36A35441C3F5288CD9185141713D0A0741A3544133333333DA185141CDCCCC1C41A354410AD7A3A0DB185141C3F5284C41A35441295C8F02D7185141F6285CEF48A354415C8FC245E5185141F6285C4F48A354419A999939E8185141D7A3702D50A3544133333313EF1851411F85EBE15BA354418FC2F518F3185141EC51B86E5FA354418FC2F598F51851413D0AD7A361A3544114AE4781FE185141AE47E13A6AA3544185EB5138081951410AD7A3B076A354413D0AD7530A1951417B14AEF776A35441B81E854B0B19514185EB511877A3544114AE47610C1951415C8FC29586A354411F85EBE10C1951413333337392A3544185EB51980D1951411F85EB91A3A354411F85EB4111195141000000909FA35441F6285CDF121951413D0AD7239EA354416666663612195141B81E851B8FA3544152B81E85111951417B14AE6782A3544148E17AE410195141295C8F4276A354418FC2F57810195141713D0AA771A35441C3F5285C0E19514114AE47E16BA35441B81E85AB0A195141EC51B85E67A354410AD7A320FF185141E17A143E5EA3544114AE4791F71851410000007056A354417B14AEB7F11851410AD7A3D04CA3544166666626EE1851411F85EBB143A354419A999979E81851410AD7A3802AA35441713D0A97E5185141B81E85CB10A354411F85EB41E218514185EB517801A354419A999969DE185141295C8F62F9A254418FC2F588DA18514100000050F5A25441333333D3D41851419A9999C9F1A254417B14AE07CB185141EC51B88EEAA2544133333323C9185141D7A3701DE9A254418FC2F528C51851415C8FC215E6A25441EC51B82EC1185141E17A140EE3A254411F85EB31BF185141A4703D8AE1A25441D7A370FDB8185141CDCCCC4CDDA25441713D0A57B7185141C3F5282CDCA2544152B81EE5B5185141F6285C2FDBA25441CDCCCCDCB4185141AE47E17ADAA254417B14AEE7AA1851418FC2F5A8D3A254410AD7A3A0A0185141713D0AA7CCA25441AE47E15A96185141EC51B89EC5A254419A9999B98A185141B81E853BBEA25441F6285C1F891851411F85EB01BDA25441713D0A0788185141CDCCCC2CBCA254410000009085185141D7A3704DBAA25441E17A149E821851410AD7A310B8A25441A4703D3A8018514100000040B6A25441000000B075185141B81E851BAFA2544148E17A446B185141F6285C0FA8A2544148E17AF4601851411F85EBD1A0A2544166666686561851410000008099A25441CDCCCCEC4B185141F6285C0F92A25441B81E85AB401851419A9999298AA25441713D0A4738185141295C8F4284A2544152B81E7537185141F6285CAF83A25441295C8FD2351851418FC2F58882A25441E17A149E2A185141F6285CAF7AA254413D0AD7A32018514152B81E7573A25441666666F61518514185EB51B86BA2544114AE47510C185141B81E85BB64A25441F6285C4F02185141C3F5287C5DA2544100000020F81751419A99991956A254415C8FC2F5EC1751411F85EB014EA25441295C8F72E21751415C8FC22546A25441AE47E12ADD1751413333333342A25441333333C3D81751417B14AEE73EA2544133333353D217514185EB51383AA2544148E17A74D2175141EC51B8DE33A25441B81E852BD11751413D0AD79334A25441A4703DCAD01751419A9999C934A25441AE47E11ACF175141A4703DAA35A2544166666666CD17514114AE478136A25441EC51B81ECD175141295C8FA236A25441D7A370ADCB175141EC51B84E37A25441000000F0C91751411F85EB1138A254410AD7A3C0C8175141EC51B88E38A25441E17A142EC8175141B81E85CB38A254418FC2F518CA17514185EB51283AA254418FC2F5B8CD175141CDCCCCBC3CA25441E17A142ED0175141CDCCCC7C3EA2544185EB5178D4175141AE47E18A41A254413D0AD713D9175141CDCCCC1C47A25441000000F0E41751419A99994950A25441295C8F720C18514114AE47716DA25441000000D00B1851411F85EBE16DA2544152B81E6538185141B81E85BB8DA254418FC2F5F83A1851419A9999398FA2544152B81EA57A18514152B81EA5BBA2544148E17AF47B18514148E17A84BCA25441F6285C4F7C185141713D0A97BBA25441AE47E11A7C185141AE47E1AABAA2544114AE47B17B185141E17A14AEB9A25441AE47E1AA79185141C3F5282CB8A2544114AE472159185141F6285C8FA1A25441713D0AE746185141D7A370DD94A2544152B81E65431851410AD7A37092A2544185EB51F83C185141B81E85FB8DA25441666666C636185141333333F389A25441333333033A1851410AD7A3708EA25441295C8FC2371851418FC2F5F88CA254415C8FC2753418514152B81E8588A25441295C8FB22E18514148E17AA484A2544114AE47312A185141CDCCCC3C81A25441CDCCCCCC2318514185EB51787CA25441666666F61A1851410AD7A3D075A254418FC2F5F80D18514114AE47616CA254417B14AE17FC1751415C8FC2B55FA2544114AE4791FB17514148E17AC45EA25441C3F5280CE4175141333333A34DA2544148E17AE4D71751418FC2F5C844A25441713D0A47D71751419A9999A944A2544152B81E95D6175141E17A14CE43A2544100000040D7175141295C8FF242A25441D7A3700DD8175141B81E857B43A254410AD7A3E0DE175141AE47E18A48A254419A999919F7175141E17A142E5AA25441AE47E14AFC1751411F85EB015EA254418FC2F5A8FC175141B81E859B5EA25441000000900B1851411F85EB9169A254413D0AD7832718514114AE47B17DA25441EC51B8FE29185141F6285C9F7FA254419A9999D92C185141B81E851B82A254410000004036185141E17A146E88A254411F85EB2138185141E17A147E89A25441D7A3700D39185141333333038AA25441CDCCCCFC3918514148E17AB48AA25441295C8FF2481851418FC2F5F894A25441333333B35E185141CDCCCC2CA4A2544148E17AA470185141000000B0B0A25441A4703DDA7A185141E17A14AEB7A25441295C8F727C1851413D0AD793B8A254411F85EB017B185141D7A3705DB7A2544148E17AE47018514152B81E45B0A25441F6285CDF5E185141EC51B8BEA3A25441AE47E13A49185141A4703D9A94A25441E17A14CE44185141E17A148E91A254418FC2F5583A185141F6285C4F8AA2544152B81E5539185141F6285C9F89A254415C8FC245381851413D0AD7D388A2544148E17A0437185141AE47E1CA87A2544166666686381851410000007089A25441EC51B88E361851416666665688A2544166666676351851415C8FC25587A254413D0AD783331851411F85EB1186A254411F85EBE1301851415C8FC26584A25441B81E854B2D1851413D0AD72382A254419A9999A92A185141CDCCCCFC7FA25441000000202D1851415C8FC21581A25441666666262A185141CDCCCC0C7FA25441D7A370CD271851413D0AD7537DA25441D7A370ED0B18514148E17A3469A254418FC2F5F8FC17514148E17A445EA254411F85EBA1FC175141D7A3709D5DA254419A999979F7175141295C8FB259A254419A999969DF175141D7A3701D48A25441000000A0D71751410AD7A34042A25441F6285C4FD1175141666666D63DA25441CDCCCC4CD0175141000000603EA254411F85EBD1CD1751418FC2F5983CA25441AE47E1AACF17514185EB51C839A2544100000010D2175141295C8F2237A25441CDCCCCBCD1175141B81E852B3AA25441AE47E1AAD0175141295C8F323AA254411F85EB21D01751418FC2F5583BA25441B81E855BE5175141C3F528DC4AA25441C3F5284CFD1751418FC2F5685CA254411F85EB81FD175141A4703D0A5DA254417B14AED70F185141333333736AA2544152B81EB52C1851411F85EB317FA25441D7A3702D5A1851413D0AD7339FA25441EC51B88E80185141A4703D8AB9A254413D0AD71383185141EC51B8BEB9A2544152B81E658518514152B81E45BAA254419A9999D987185141A4703D1ABCA25441E17A141E86185141CDCCCC7CBBA25441F6285C8F82185141A4703DEABAA254413D0AD7C385185141D7A3701DBDA25441713D0AD7A918514152B81ED5D5A254417B14AE07B318514114AE4741DCA25441295C8F22BD185141295C8F62E3A25441295C8F02D71851415C8FC265F5A254417B14AE47DE185141F6285CEFF9A2544148E17AD4DF185141295C8F12FDA25441B81E85FBDE1851415C8FC2E5FDA2544133333343E1185141F6285CFF05A35441E17A14CEE2185141EC51B8DE0CA35441295C8FD2E3185141C3F5283C14A3544148E17AC4E41851419A9999E91DA354413D0AD7B3E5185141295C8FE225A354415C8FC215E7185141AE47E1CA2EA35441E17A149EE7185141295C8F2231A3544152B81EE5E81851410AD7A3C034A35441D7A370BDEA185141B81E85EB39A3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441CDCCCC1C0A19514152B81E2569A354413D0AD7630C195141C3F528AC6BA35441295C8F420E1951413D0AD7736CA35441B81E858B0E19514185EB51E874A35441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000014AE47616D1851413D0AD763B2A254418FC2F5F83A1851419A9999398FA25441EC51B8FE49185141713D0A67A7A25441EC51B82E541851418FC2F5E8B5A254411F85EBF159185141EC51B82EBFA25441CDE994ED5B1851410C1D995FC2A25441B7BB7B397018514185161760B4A2544114AE47616D1851413D0AD763B2A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 251992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441D7A3704DFF1851413D0AD78363A354419A999989FC1851417B14AE3761A35441EC51B89EF9185141666666765EA3544185EB51D8F41851419A99995959A35441295C8FB2EE185141C3F528FC4FA35441666666C6EB185141C3F5283C49A3544133333313EA18514152B81E4546A3544148E17A44E81851417B14AE8740A35441CDCCCC4CE71851411F85EB313CA35441713D0AD7E6185141AE47E16A35A35441C3F5288CE51851411F85EB412FA354419A999949E418514148E17A1426A354419A999979E318514185EB51081EA3544100000080E21851415C8FC23514A3544152B81E65E11851410AD7A3100DA35441E17A14EEDF185141295C8F1206A35441666666E6DD185141D7A370BD01A35441EC51B83EDC18514152B81EA5FCA25441713D0AD7D91851410AD7A360F9A25441F6285C6FD618514152B81E15F6A25441E17A146EBC1851417B14AE77E4A2544148E17A34B21851419A999949DDA25441E17A148E9C185141A4703D7ACEA2544152B81E25941851411F85EBA1C8A254418FC2F5B886185141B81E857BBFA254413D0AD7E381185141E17A143EBCA25441B81E859B80185141295C8F52BBA25441333333E37F185141EC51B81EBBA2544114AE47C181185141D7A3707DBCA254410AD7A39086185141A4703DBABFA254411F85EBF19318514114AE47E1C8A25441E17A148E9C185141C3F528DCCEA25441B81E85FBB11851417B14AEA7DDA254418FC2F538BC185141713D0AD7E4A25441D7A370CDD518514100000060F6A25441D7A3708DD8185141666666E6F8A25441295C8F62DA185141EC51B82EFBA25441D7A370DDDB1851410AD7A340FDA2544114AE47E1DC185141A4703D3A02A35441E17A145EDE1851413333334306A35441713D0A07DF18514185EB51980AA35441C3F5286CE0185141E17A14BE12A354411F85EBC1E118514114AE47F11EA3544148E17AD4E218514148E17A8428A35441CDCCCC3CE31851415C8FC2552BA35441CDCCCC9CE3185141F6285CCF2EA3544185EB51A8E51851410000004036A3544152B81EB5E61851411F85EBD13BA3544148E17AF4E71851417B14AEE740A35441B81E858BE9185141D7A3705D46A35441AE47E1DAEA185141B81E858B49A354419A999999ED1851410AD7A35050A3544185EB5138F1185141E17A14FE55A35441713D0AD7F3185141C3F528DC59A354418FC2F5E8F8185141B81E852B5FA354411F85EBD1FB185141295C8FE261A354411F85EB31FE185141F6285C0F64A354419A99994905195141EC51B80E6AA3544114AE475109195141A4703D0A6EA35441713D0AB70A195141D7A370FD72A354413D0AD7930B195141F6285C2F76A3544148E17A440A195141713D0A4776A3544114AE47110A1951411F85EB9175A3544152B81EA507195141CDCCCCCC6FA35441B81E85EB0019514152B81ED568A35441295C8FC2F9185141E17A148E62A354417B14AE17F518514148E17A145EA35441E17A144EF11851413D0AD7D359A35441D7A3704DED185141A4703DCA53A354413D0AD793EA185141AE47E1AA4EA354411F85EBE1E81851413D0AD7B34AA35441295C8F42E71851416666667645A354415C8FC2B5E41851411F85EB413CA354411F85EB51E3185141C3F5284C36A3544185EB5188E01851417B14AE873AA3544185EB51C8DC1851410AD7A3703FA354417B14AEC7DB185141E17A140E41A354419A999959DA185141C3F528DC40A35441D7A3703DE218514152B81EE535A35441D7A3702DE31851418FC2F56832A35441713D0A97E21851413D0AD7F32EA35441333333E3E118514152B81E852BA35441E17A14EEDF185141E17A149E1FA35441CDCCCC7CDF185141F6285C4F19A354411F85EBE1DD185141713D0A070DA35441D7A3707DDD185141333333C309A354411F85EB51DC185141CDCCCCCC04A3544133333363DB185141B81E857B02A3544185EB5188DB1851410AD7A350FFA2544148E17AD4DA185141C3F528CCFDA254411F85EBA1D91851415C8FC2F5FBA254417B14AED7D7185141295C8FC2F9A25441F6285C1FD518514185EB5118F7A254413D0AD7C3BB185141EC51B8BEE5A2544133333393B1185141F6285CCFDEA254418FC2F598A81851417B14AE87D8A25441C3F5284C84185141EC51B8AEBFA2544166666606801851413D0AD7B3BCA25441333333537E1851417B14AEB7BCA254417B14AEF77F1851413D0AD7A3BDA25441F6285C8F84185141AE47E1DAC0A25441D7A3707D88185141E17A149EC3A254411F85EBC18B185141666666C6C5A254413D0AD7938C185141D7A370BDC5A25441E17A14AE8C185141AE47E15AC6A25441333333239718514185EB5188CDA254417B14AE379C1851410AD7A310D1A254418FC2F5A8A1185141F6285CAFD4A25441C3F5283CA21851410AD7A370D5A25441E17A149EA31851418FC2F548D7A25441F6285C6FAD185141D7A3709DDDA254417B14AED7B8185141C3F5283CE7A254413D0AD713C31851415C8FC225EEA2544100000000D7185141713D0A57FDA2544185EB5168DA1851418FC2F57803A354410AD7A3E0DC1851419A9999390DA35441713D0A77DE1851413333337319A3544166666636E0185141B81E850B36A35441C3F5288CD9185141713D0A0741A3544133333333DA185141CDCCCC1C41A354410AD7A3A0DB185141C3F5284C41A35441295C8F02D7185141F6285CEF48A354415C8FC245E5185141F6285C4F48A354419A999939E8185141D7A3702D50A3544133333313EF1851411F85EBE15BA354418FC2F518F3185141EC51B86E5FA354418FC2F598F51851413D0AD7A361A3544114AE4781FE185141AE47E13A6AA3544185EB5138081951410AD7A3B076A354413D0AD7530A1951417B14AEF776A35441B81E854B0B19514185EB511877A3544114AE47610C1951415C8FC29586A354411F85EBE10C1951413333337392A3544185EB51980D1951411F85EB91A3A354411F85EB4111195141000000909FA35441F6285CDF121951413D0AD7239EA354416666663612195141B81E851B8FA3544152B81E85111951417B14AE6782A3544148E17AE410195141295C8F4276A354418FC2F57810195141713D0AA771A35441C3F5285C0E19514114AE47E16BA35441B81E85AB0A195141EC51B85E67A354410AD7A320FF185141E17A143E5EA3544114AE4791F71851410000007056A354417B14AEB7F11851410AD7A3D04CA3544166666626EE1851411F85EBB143A354419A999979E81851410AD7A3802AA35441713D0A97E5185141B81E85CB10A354411F85EB41E218514185EB517801A354419A999969DE185141295C8F62F9A254418FC2F588DA18514100000050F5A25441333333D3D41851419A9999C9F1A254417B14AE07CB185141EC51B88EEAA2544133333323C9185141D7A3701DE9A254418FC2F528C51851415C8FC215E6A25441EC51B82EC1185141E17A140EE3A254411F85EB31BF185141A4703D8AE1A25441D7A370FDB8185141CDCCCC4CDDA25441713D0A57B7185141C3F5282CDCA2544152B81EE5B5185141F6285C2FDBA25441CDCCCCDCB4185141AE47E17ADAA254417B14AEE7AA1851418FC2F5A8D3A254410AD7A3A0A0185141713D0AA7CCA25441AE47E15A96185141EC51B89EC5A254419A9999B98A185141B81E853BBEA25441F6285C1F891851411F85EB01BDA25441713D0A0788185141CDCCCC2CBCA254410000009085185141D7A3704DBAA25441E17A149E821851410AD7A310B8A25441A4703D3A8018514100000040B6A25441000000B075185141B81E851BAFA2544148E17A446B185141F6285C0FA8A2544148E17AF4601851411F85EBD1A0A2544166666686561851410000008099A25441CDCCCCEC4B185141F6285C0F92A25441B81E85AB401851419A9999298AA25441713D0A4738185141295C8F4284A2544152B81E7537185141F6285CAF83A25441295C8FD2351851418FC2F58882A25441E17A149E2A185141F6285CAF7AA254413D0AD7A32018514152B81E7573A25441666666F61518514185EB51B86BA2544114AE47510C185141B81E85BB64A25441F6285C4F02185141C3F5287C5DA2544100000020F81751419A99991956A254415C8FC2F5EC1751411F85EB014EA25441295C8F72E21751415C8FC22546A25441AE47E12ADD1751413333333342A25441333333C3D81751417B14AEE73EA2544133333353D217514185EB51383AA2544148E17A74D2175141EC51B8DE33A25441B81E852BD11751413D0AD79334A25441A4703DCAD01751419A9999C934A25441AE47E11ACF175141A4703DAA35A2544166666666CD17514114AE478136A25441EC51B81ECD175141295C8FA236A25441D7A370ADCB175141EC51B84E37A25441000000F0C91751411F85EB1138A254410AD7A3C0C8175141EC51B88E38A25441E17A142EC8175141B81E85CB38A254418FC2F518CA17514185EB51283AA254418FC2F5B8CD175141CDCCCCBC3CA25441E17A142ED0175141CDCCCC7C3EA2544185EB5178D4175141AE47E18A41A254413D0AD713D9175141CDCCCC1C47A25441000000F0E41751419A99994950A25441295C8F720C18514114AE47716DA25441000000D00B1851411F85EBE16DA2544152B81E6538185141B81E85BB8DA254418FC2F5F83A1851419A9999398FA2544152B81EA57A18514152B81EA5BBA2544148E17AF47B18514148E17A84BCA25441F6285C4F7C185141713D0A97BBA25441AE47E11A7C185141AE47E1AABAA2544114AE47B17B185141E17A14AEB9A25441AE47E1AA79185141C3F5282CB8A2544114AE472159185141F6285C8FA1A25441713D0AE746185141D7A370DD94A2544152B81E65431851410AD7A37092A2544185EB51F83C185141B81E85FB8DA25441666666C636185141333333F389A25441333333033A1851410AD7A3708EA25441295C8FC2371851418FC2F5F88CA254415C8FC2753418514152B81E8588A25441295C8FB22E18514148E17AA484A2544114AE47312A185141CDCCCC3C81A25441CDCCCCCC2318514185EB51787CA25441666666F61A1851410AD7A3D075A254418FC2F5F80D18514114AE47616CA254417B14AE17FC1751415C8FC2B55FA2544114AE4791FB17514148E17AC45EA25441C3F5280CE4175141333333A34DA2544148E17AE4D71751418FC2F5C844A25441713D0A47D71751419A9999A944A2544152B81E95D6175141E17A14CE43A2544100000040D7175141295C8FF242A25441D7A3700DD8175141B81E857B43A254410AD7A3E0DE175141AE47E18A48A254419A999919F7175141E17A142E5AA25441AE47E14AFC1751411F85EB015EA254418FC2F5A8FC175141B81E859B5EA25441000000900B1851411F85EB9169A254413D0AD7832718514114AE47B17DA25441EC51B8FE29185141F6285C9F7FA254419A9999D92C185141B81E851B82A254410000004036185141E17A146E88A254411F85EB2138185141E17A147E89A25441D7A3700D39185141333333038AA25441CDCCCCFC3918514148E17AB48AA25441295C8FF2481851418FC2F5F894A25441333333B35E185141CDCCCC2CA4A2544148E17AA470185141000000B0B0A25441A4703DDA7A185141E17A14AEB7A25441295C8F727C1851413D0AD793B8A254411F85EB017B185141D7A3705DB7A2544148E17AE47018514152B81E45B0A25441F6285CDF5E185141EC51B8BEA3A25441AE47E13A49185141A4703D9A94A25441E17A14CE44185141E17A148E91A254418FC2F5583A185141F6285C4F8AA2544152B81E5539185141F6285C9F89A254415C8FC245381851413D0AD7D388A2544148E17A0437185141AE47E1CA87A2544166666686381851410000007089A25441EC51B88E361851416666665688A2544166666676351851415C8FC25587A254413D0AD783331851411F85EB1186A254411F85EBE1301851415C8FC26584A25441B81E854B2D1851413D0AD72382A254419A9999A92A185141CDCCCCFC7FA25441000000202D1851415C8FC21581A25441666666262A185141CDCCCC0C7FA25441D7A370CD271851413D0AD7537DA25441D7A370ED0B18514148E17A3469A254418FC2F5F8FC17514148E17A445EA254411F85EBA1FC175141D7A3709D5DA254419A999979F7175141295C8FB259A254419A999969DF175141D7A3701D48A25441000000A0D71751410AD7A34042A25441F6285C4FD1175141666666D63DA25441CDCCCC4CD0175141000000603EA254411F85EBD1CD1751418FC2F5983CA25441AE47E1AACF17514185EB51C839A2544100000010D2175141295C8F2237A25441CDCCCCBCD1175141B81E852B3AA25441AE47E1AAD0175141295C8F323AA254411F85EB21D01751418FC2F5583BA25441B81E855BE5175141C3F528DC4AA25441C3F5284CFD1751418FC2F5685CA254411F85EB81FD175141A4703D0A5DA254417B14AED70F185141333333736AA2544152B81EB52C1851411F85EB317FA25441D7A3702D5A1851413D0AD7339FA25441EC51B88E80185141A4703D8AB9A254413D0AD71383185141EC51B8BEB9A2544152B81E658518514152B81E45BAA254419A9999D987185141A4703D1ABCA25441E17A141E86185141CDCCCC7CBBA25441F6285C8F82185141A4703DEABAA254413D0AD7C385185141D7A3701DBDA25441713D0AD7A918514152B81ED5D5A254417B14AE07B318514114AE4741DCA25441295C8F22BD185141295C8F62E3A25441295C8F02D71851415C8FC265F5A254417B14AE47DE185141F6285CEFF9A2544148E17AD4DF185141295C8F12FDA25441B81E85FBDE1851415C8FC2E5FDA2544133333343E1185141F6285CFF05A35441E17A14CEE2185141EC51B8DE0CA35441295C8FD2E3185141C3F5283C14A3544148E17AC4E41851419A9999E91DA354413D0AD7B3E5185141295C8FE225A354415C8FC215E7185141AE47E1CA2EA35441E17A149EE7185141295C8F2231A3544152B81EE5E81851410AD7A3C034A35441D7A370BDEA185141B81E85EB39A3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441CDCCCC1C0A19514152B81E2569A354413D0AD7630C195141C3F528AC6BA35441295C8F420E1951413D0AD7736CA35441B81E858B0E19514185EB51E874A35441
+</a>
+
+<b>
+0106000000010000000103000000010000006C01000093FF8BE2ED185141D5B5B48442A35441DEAE4671EC18514148C06F1D3CA354419F9A433CEB18514183F98A773BA3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441CDCCCC1C0A19514152B81E2569A354413D0AD7630C195141C3F528AC6BA35441295C8F420E1951413D0AD7736CA35441B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441D7A3704DFF1851413D0AD78363A354419A999989FC1851417B14AE3761A35441EC51B89EF9185141666666765EA3544185EB51D8F41851419A99995959A35441295C8FB2EE185141C3F528FC4FA35441666666C6EB185141C3F5283C49A3544133333313EA18514152B81E4546A3544148E17A44E81851417B14AE8740A35441CDCCCC4CE71851411F85EB313CA35441F5948515E718514162C7770339A354412C6F5C0CE61851412EAEB15238A3544152B81EB5E61851411F85EBD13BA3544148E17AF4E71851417B14AEE740A35441B81E858BE9185141D7A3705D46A35441AE47E1DAEA185141B81E858B49A354419A999999ED1851410AD7A35050A3544185EB5138F1185141E17A14FE55A35441713D0AD7F3185141C3F528DC59A354418FC2F5E8F8185141B81E852B5FA354411F85EBD1FB185141295C8FE261A354411F85EB31FE185141F6285C0F64A354419A99994905195141EC51B80E6AA3544114AE475109195141A4703D0A6EA35441713D0AB70A195141D7A370FD72A354413D0AD7930B195141F6285C2F76A3544148E17A440A195141713D0A4776A3544114AE47110A1951411F85EB9175A3544152B81EA507195141CDCCCCCC6FA35441B81E85EB0019514152B81ED568A35441295C8FC2F9185141E17A148E62A354417B14AE17F518514148E17A145EA35441E17A144EF11851413D0AD7D359A35441D7A3704DED185141A4703DCA53A354413D0AD793EA185141AE47E1AA4EA354411F85EBE1E81851413D0AD7B34AA35441295C8F42E71851416666667645A354415C8FC2B5E41851411F85EB413CA354411F85EB51E3185141C3F5284C36A3544185EB5188E01851417B14AE873AA3544185EB51C8DC1851410AD7A3703FA354417B14AEC7DB185141E17A140E41A354419A999959DA185141C3F528DC40A35441D7A3703DE218514152B81EE535A35441D7A3702DE31851418FC2F56832A35441713D0A97E21851413D0AD7F32EA35441333333E3E118514152B81E852BA3544135496667E01851412938C27F22A3544166C9D21EE2185141F079B22E22A3544148E17AD4E218514148E17A8428A35441CDCCCC3CE31851415C8FC2552BA35441CDCCCC9CE3185141F6285CCF2EA3544185EB51A8E51851410000004036A354413B80CFD7E51851416812ED3B37A35441658B0504E71851417B45A00138A35441713D0AD7E6185141AE47E16A35A35441C3F5288CE51851411F85EB412FA354419A999949E418514148E17A1426A35441D51D8FDCE31851415DA878DC21A35441DE7F9C33E5185141030D309D21A354413D0AD7B3E5185141295C8FE225A354415C8FC215E7185141AE47E1CA2EA35441E17A149EE7185141295C8F2231A3544152B81EE5E81851410AD7A3C034A35441D7A370BDEA185141B81E85EB39A35441093C4BDDEA18514134C9FC4E3AA35441B423EA2CEC185141EC36F7ED3AA354419A999979E81851410AD7A3802AA35441713D0A97E5185141B81E85CB10A354411F85EB41E218514185EB517801A354419A999969DE185141295C8F62F9A254418FC2F588DA18514100000050F5A25441333333D3D41851419A9999C9F1A254417B14AE07CB185141EC51B88EEAA2544133333323C9185141D7A3701DE9A254418FC2F528C51851415C8FC215E6A25441EC51B82EC1185141E17A140EE3A254411F85EB31BF185141A4703D8AE1A25441D7A370FDB8185141CDCCCC4CDDA25441713D0A57B7185141C3F5282CDCA2544152B81EE5B5185141F6285C2FDBA25441CDCCCCDCB4185141AE47E17ADAA254417B14AEE7AA1851418FC2F5A8D3A254410AD7A3A0A0185141713D0AA7CCA25441AE47E15A96185141EC51B89EC5A254419A9999B98A185141B81E853BBEA25441F6285C1F891851411F85EB01BDA25441713D0A0788185141CDCCCC2CBCA254410000009085185141D7A3704DBAA25441E17A149E821851410AD7A310B8A25441A4703D3A8018514100000040B6A25441000000B075185141B81E851BAFA2544148E17A446B185141F6285C0FA8A2544148E17AF4601851411F85EBD1A0A2544166666686561851410000008099A25441CDCCCCEC4B185141F6285C0F92A25441B81E85AB401851419A9999298AA25441713D0A4738185141295C8F4284A2544152B81E7537185141F6285CAF83A25441295C8FD2351851418FC2F58882A25441E17A149E2A185141F6285CAF7AA254413D0AD7A32018514152B81E7573A25441666666F61518514185EB51B86BA2544114AE47510C185141B81E85BB64A25441F6285C4F02185141C3F5287C5DA2544100000020F81751419A99991956A254415C8FC2F5EC1751411F85EB014EA25441295C8F72E21751415C8FC22546A25441AE47E12ADD1751413333333342A25441333333C3D81751417B14AEE73EA2544133333353D217514185EB51383AA2544148E17A74D2175141EC51B8DE33A25441B81E852BD11751413D0AD79334A25441A4703DCAD01751419A9999C934A25441AE47E11ACF175141A4703DAA35A2544166666666CD17514114AE478136A25441EC51B81ECD175141295C8FA236A25441D7A370ADCB175141EC51B84E37A25441000000F0C91751411F85EB1138A254410AD7A3C0C8175141EC51B88E38A25441E17A142EC8175141B81E85CB38A254418FC2F518CA17514185EB51283AA254418FC2F5B8CD175141CDCCCCBC3CA25441E17A142ED0175141CDCCCC7C3EA2544185EB5178D4175141AE47E18A41A254413D0AD713D9175141CDCCCC1C47A25441000000F0E41751419A99994950A25441295C8F720C18514114AE47716DA25441000000D00B1851411F85EBE16DA2544152B81E6538185141B81E85BB8DA254418FC2F5F83A1851419A9999398FA2544152B81EA57A18514152B81EA5BBA2544148E17AF47B18514148E17A84BCA25441F6285C4F7C185141713D0A97BBA25441AE47E11A7C185141AE47E1AABAA2544114AE47B17B185141E17A14AEB9A25441AE47E1AA79185141C3F5282CB8A2544114AE472159185141F6285C8FA1A25441713D0AE746185141D7A370DD94A2544152B81E65431851410AD7A37092A2544185EB51F83C185141B81E85FB8DA25441666666C636185141333333F389A25441333333033A1851410AD7A3708EA25441295C8FC2371851418FC2F5F88CA254415C8FC2753418514152B81E8588A25441295C8FB22E18514148E17AA484A2544114AE47312A185141CDCCCC3C81A25441CDCCCCCC2318514185EB51787CA25441666666F61A1851410AD7A3D075A254418FC2F5F80D18514114AE47616CA254417B14AE17FC1751415C8FC2B55FA2544114AE4791FB17514148E17AC45EA25441C3F5280CE4175141333333A34DA2544148E17AE4D71751418FC2F5C844A25441713D0A47D71751419A9999A944A2544152B81E95D6175141E17A14CE43A2544100000040D7175141295C8FF242A25441D7A3700DD8175141B81E857B43A254410AD7A3E0DE175141AE47E18A48A254419A999919F7175141E17A142E5AA25441AE47E14AFC1751411F85EB015EA254418FC2F5A8FC175141B81E859B5EA25441000000900B1851411F85EB9169A254413D0AD7832718514114AE47B17DA25441EC51B8FE29185141F6285C9F7FA254419A9999D92C185141B81E851B82A254410000004036185141E17A146E88A254411F85EB2138185141E17A147E89A25441D7A3700D39185141333333038AA25441CDCCCCFC3918514148E17AB48AA25441295C8FF2481851418FC2F5F894A25441333333B35E185141CDCCCC2CA4A2544148E17AA470185141000000B0B0A25441A4703DDA7A185141E17A14AEB7A25441295C8F727C1851413D0AD793B8A254411F85EB017B185141D7A3705DB7A2544148E17AE47018514152B81E45B0A25441F6285CDF5E185141EC51B8BEA3A25441AE47E13A49185141A4703D9A94A25441E17A14CE44185141E17A148E91A254418FC2F5583A185141F6285C4F8AA2544152B81E5539185141F6285C9F89A254415C8FC245381851413D0AD7D388A2544148E17A0437185141AE47E1CA87A2544166666686381851410000007089A25441EC51B88E361851416666665688A2544166666676351851415C8FC25587A254413D0AD783331851411F85EB1186A254411F85EBE1301851415C8FC26584A25441B81E854B2D1851413D0AD72382A254419A9999A92A185141CDCCCCFC7FA25441000000202D1851415C8FC21581A25441666666262A185141CDCCCC0C7FA25441D7A370CD271851413D0AD7537DA25441D7A370ED0B18514148E17A3469A254418FC2F5F8FC17514148E17A445EA254411F85EBA1FC175141D7A3709D5DA254419A999979F7175141295C8FB259A254419A999969DF175141D7A3701D48A25441000000A0D71751410AD7A34042A25441F6285C4FD1175141666666D63DA25441CDCCCC4CD0175141000000603EA254411F85EBD1CD1751418FC2F5983CA25441AE47E1AACF17514185EB51C839A2544100000010D2175141295C8F2237A25441CDCCCCBCD1175141B81E852B3AA25441AE47E1AAD0175141295C8F323AA254411F85EB21D01751418FC2F5583BA25441B81E855BE5175141C3F528DC4AA25441C3F5284CFD1751418FC2F5685CA254411F85EB81FD175141A4703D0A5DA254417B14AED70F185141333333736AA2544152B81EB52C1851411F85EB317FA25441D7A3702D5A1851413D0AD7339FA25441EC51B88E80185141A4703D8AB9A254413D0AD71383185141EC51B8BEB9A2544152B81E658518514152B81E45BAA254419A9999D987185141A4703D1ABCA25441E17A141E86185141CDCCCC7CBBA25441F6285C8F82185141A4703DEABAA254413D0AD7C385185141D7A3701DBDA25441713D0AD7A918514152B81ED5D5A254417B14AE07B318514114AE4741DCA25441295C8F22BD185141295C8F62E3A25441295C8F02D71851415C8FC265F5A254417B14AE47DE185141F6285CEFF9A2544148E17AD4DF185141295C8F12FDA25441B81E85FBDE1851415C8FC2E5FDA2544133333343E1185141F6285CFF05A35441E17A14CEE2185141EC51B8DE0CA35441295C8FD2E3185141C3F5283C14A3544148E17AC4E41851419A9999E91DA35441A4861D21E5185141012C7AFF20A3544159341DCDE3185141D0AD7E4321A354419A999979E318514185EB51081EA3544100000080E21851415C8FC23514A3544152B81E65E11851410AD7A3100DA35441E17A14EEDF185141295C8F1206A35441666666E6DD185141D7A370BD01A35441EC51B83EDC18514152B81EA5FCA25441713D0AD7D91851410AD7A360F9A25441F6285C6FD618514152B81E15F6A25441E17A146EBC1851417B14AE77E4A2544148E17A34B21851419A999949DDA25441E17A148E9C185141A4703D7ACEA2544152B81E25941851411F85EBA1C8A254418FC2F5B886185141B81E857BBFA254413D0AD7E381185141E17A143EBCA25441B81E859B80185141295C8F52BBA25441333333E37F185141EC51B81EBBA2544114AE47C181185141D7A3707DBCA254410AD7A39086185141A4703DBABFA254411F85EBF19318514114AE47E1C8A25441E17A148E9C185141C3F528DCCEA25441B81E85FBB11851417B14AEA7DDA254418FC2F538BC185141713D0AD7E4A25441D7A370CDD518514100000060F6A25441D7A3708DD8185141666666E6F8A25441295C8F62DA185141EC51B82EFBA25441D7A370DDDB1851410AD7A340FDA2544114AE47E1DC185141A4703D3A02A35441E17A145EDE1851413333334306A35441713D0A07DF18514185EB51980AA35441C3F5286CE0185141E17A14BE12A354411F85EBC1E118514114AE47F11EA35441CC787C0EE218514180DCD79C21A3544130F3BE50E0185141199703F621A35441E17A14EEDF185141E17A149E1FA35441CDCCCC7CDF185141F6285C4F19A354411F85EBE1DD185141713D0A070DA35441D7A3707DDD185141333333C309A354411F85EB51DC185141CDCCCCCC04A3544133333363DB185141B81E857B02A3544185EB5188DB1851410AD7A350FFA2544148E17AD4DA185141C3F528CCFDA254411F85EBA1D91851415C8FC2F5FBA254417B14AED7D7185141295C8FC2F9A25441F6285C1FD518514185EB5118F7A254413D0AD7C3BB185141EC51B8BEE5A2544133333393B1185141F6285CCFDEA254418FC2F598A81851417B14AE87D8A25441C3F5284C84185141EC51B8AEBFA2544166666606801851413D0AD7B3BCA25441333333537E1851417B14AEB7BCA254417B14AEF77F1851413D0AD7A3BDA25441F6285C8F84185141AE47E1DAC0A25441D7A3707D88185141E17A149EC3A254411F85EBC18B185141666666C6C5A254413D0AD7938C185141D7A370BDC5A25441E17A14AE8C185141AE47E15AC6A25441333333239718514185EB5188CDA254417B14AE379C1851410AD7A310D1A254418FC2F5A8A1185141F6285CAFD4A25441C3F5283CA21851410AD7A370D5A25441E17A149EA31851418FC2F548D7A25441F6285C6FAD185141D7A3709DDDA254417B14AED7B8185141C3F5283CE7A254413D0AD713C31851415C8FC225EEA2544100000000D7185141713D0A57FDA2544185EB5168DA1851418FC2F57803A354410AD7A3E0DC1851419A9999390DA35441713D0A77DE1851413333337319A3544166666636E0185141B81E850B36A35441C3F5288CD9185141713D0A0741A3544133333333DA185141CDCCCC1C41A354410AD7A3A0DB185141C3F5284C41A35441295C8F02D7185141F6285CEF48A354415C8FC245E5185141F6285C4F48A354419A999939E8185141D7A3702D50A3544133333313EF1851411F85EBE15BA354418FC2F518F3185141EC51B86E5FA354418FC2F598F51851413D0AD7A361A3544114AE4781FE185141AE47E13A6AA3544185EB5138081951410AD7A3B076A354413D0AD7530A1951417B14AEF776A35441B81E854B0B19514185EB511877A3544114AE47610C1951415C8FC29586A354411F85EBE10C1951413333337392A3544185EB51980D1951411F85EB91A3A354411F85EB4111195141000000909FA35441F6285CDF121951413D0AD7239EA354416666663612195141B81E851B8FA3544152B81E85111951417B14AE6782A3544148E17AE410195141295C8F4276A354418FC2F57810195141713D0AA771A35441C3F5285C0E19514114AE47E16BA35441B81E85AB0A195141EC51B85E67A354410AD7A320FF185141E17A143E5EA354418C261DE3F8185141913DC8CC57A3544114AE4791F71851410000007056A354417B14AEB7F11851410AD7A3D04CA35441CAB748C1EE1851412412DE3D45A3544166666626EE1851411F85EBB143A3544193FF8BE2ED185141D5B5B48442A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 398052
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441D7A3704DFF1851413D0AD78363A354419A999989FC1851417B14AE3761A35441EC51B89EF9185141666666765EA3544185EB51D8F41851419A99995959A35441295C8FB2EE185141C3F528FC4FA35441666666C6EB185141C3F5283C49A3544133333313EA18514152B81E4546A3544148E17A44E81851417B14AE8740A35441CDCCCC4CE71851411F85EB313CA35441713D0AD7E6185141AE47E16A35A35441C3F5288CE51851411F85EB412FA354419A999949E418514148E17A1426A354419A999979E318514185EB51081EA3544100000080E21851415C8FC23514A3544152B81E65E11851410AD7A3100DA35441E17A14EEDF185141295C8F1206A35441666666E6DD185141D7A370BD01A35441EC51B83EDC18514152B81EA5FCA25441713D0AD7D91851410AD7A360F9A25441F6285C6FD618514152B81E15F6A25441E17A146EBC1851417B14AE77E4A2544148E17A34B21851419A999949DDA25441E17A148E9C185141A4703D7ACEA2544152B81E25941851411F85EBA1C8A254418FC2F5B886185141B81E857BBFA254413D0AD7E381185141E17A143EBCA25441B81E859B80185141295C8F52BBA25441333333E37F185141EC51B81EBBA2544114AE47C181185141D7A3707DBCA254410AD7A39086185141A4703DBABFA254411F85EBF19318514114AE47E1C8A25441E17A148E9C185141C3F528DCCEA25441B81E85FBB11851417B14AEA7DDA254418FC2F538BC185141713D0AD7E4A25441D7A370CDD518514100000060F6A25441D7A3708DD8185141666666E6F8A25441295C8F62DA185141EC51B82EFBA25441D7A370DDDB1851410AD7A340FDA2544114AE47E1DC185141A4703D3A02A35441E17A145EDE1851413333334306A35441713D0A07DF18514185EB51980AA35441C3F5286CE0185141E17A14BE12A354411F85EBC1E118514114AE47F11EA3544148E17AD4E218514148E17A8428A35441CDCCCC3CE31851415C8FC2552BA35441CDCCCC9CE3185141F6285CCF2EA3544185EB51A8E51851410000004036A3544152B81EB5E61851411F85EBD13BA3544148E17AF4E71851417B14AEE740A35441B81E858BE9185141D7A3705D46A35441AE47E1DAEA185141B81E858B49A354419A999999ED1851410AD7A35050A3544185EB5138F1185141E17A14FE55A35441713D0AD7F3185141C3F528DC59A354418FC2F5E8F8185141B81E852B5FA354411F85EBD1FB185141295C8FE261A354411F85EB31FE185141F6285C0F64A354419A99994905195141EC51B80E6AA3544114AE475109195141A4703D0A6EA35441713D0AB70A195141D7A370FD72A354413D0AD7930B195141F6285C2F76A3544148E17A440A195141713D0A4776A3544114AE47110A1951411F85EB9175A3544152B81EA507195141CDCCCCCC6FA35441B81E85EB0019514152B81ED568A35441295C8FC2F9185141E17A148E62A354417B14AE17F518514148E17A145EA35441E17A144EF11851413D0AD7D359A35441D7A3704DED185141A4703DCA53A354413D0AD793EA185141AE47E1AA4EA354411F85EBE1E81851413D0AD7B34AA35441295C8F42E71851416666667645A354415C8FC2B5E41851411F85EB413CA354411F85EB51E3185141C3F5284C36A3544185EB5188E01851417B14AE873AA3544185EB51C8DC1851410AD7A3703FA354417B14AEC7DB185141E17A140E41A354419A999959DA185141C3F528DC40A35441D7A3703DE218514152B81EE535A35441D7A3702DE31851418FC2F56832A35441713D0A97E21851413D0AD7F32EA35441333333E3E118514152B81E852BA35441E17A14EEDF185141E17A149E1FA35441CDCCCC7CDF185141F6285C4F19A354411F85EBE1DD185141713D0A070DA35441D7A3707DDD185141333333C309A354411F85EB51DC185141CDCCCCCC04A3544133333363DB185141B81E857B02A3544185EB5188DB1851410AD7A350FFA2544148E17AD4DA185141C3F528CCFDA254411F85EBA1D91851415C8FC2F5FBA254417B14AED7D7185141295C8FC2F9A25441F6285C1FD518514185EB5118F7A254413D0AD7C3BB185141EC51B8BEE5A2544133333393B1185141F6285CCFDEA254418FC2F598A81851417B14AE87D8A25441C3F5284C84185141EC51B8AEBFA2544166666606801851413D0AD7B3BCA25441333333537E1851417B14AEB7BCA254417B14AEF77F1851413D0AD7A3BDA25441F6285C8F84185141AE47E1DAC0A25441D7A3707D88185141E17A149EC3A254411F85EBC18B185141666666C6C5A254413D0AD7938C185141D7A370BDC5A25441E17A14AE8C185141AE47E15AC6A25441333333239718514185EB5188CDA254417B14AE379C1851410AD7A310D1A254418FC2F5A8A1185141F6285CAFD4A25441C3F5283CA21851410AD7A370D5A25441E17A149EA31851418FC2F548D7A25441F6285C6FAD185141D7A3709DDDA254417B14AED7B8185141C3F5283CE7A254413D0AD713C31851415C8FC225EEA2544100000000D7185141713D0A57FDA2544185EB5168DA1851418FC2F57803A354410AD7A3E0DC1851419A9999390DA35441713D0A77DE1851413333337319A3544166666636E0185141B81E850B36A35441C3F5288CD9185141713D0A0741A3544133333333DA185141CDCCCC1C41A354410AD7A3A0DB185141C3F5284C41A35441295C8F02D7185141F6285CEF48A354415C8FC245E5185141F6285C4F48A354419A999939E8185141D7A3702D50A3544133333313EF1851411F85EBE15BA354418FC2F518F3185141EC51B86E5FA354418FC2F598F51851413D0AD7A361A3544114AE4781FE185141AE47E13A6AA3544185EB5138081951410AD7A3B076A354413D0AD7530A1951417B14AEF776A35441B81E854B0B19514185EB511877A3544114AE47610C1951415C8FC29586A354411F85EBE10C1951413333337392A3544185EB51980D1951411F85EB91A3A354411F85EB4111195141000000909FA35441F6285CDF121951413D0AD7239EA354416666663612195141B81E851B8FA3544152B81E85111951417B14AE6782A3544148E17AE410195141295C8F4276A354418FC2F57810195141713D0AA771A35441C3F5285C0E19514114AE47E16BA35441B81E85AB0A195141EC51B85E67A354410AD7A320FF185141E17A143E5EA3544114AE4791F71851410000007056A354417B14AEB7F11851410AD7A3D04CA3544166666626EE1851411F85EBB143A354419A999979E81851410AD7A3802AA35441713D0A97E5185141B81E85CB10A354411F85EB41E218514185EB517801A354419A999969DE185141295C8F62F9A254418FC2F588DA18514100000050F5A25441333333D3D41851419A9999C9F1A254417B14AE07CB185141EC51B88EEAA2544133333323C9185141D7A3701DE9A254418FC2F528C51851415C8FC215E6A25441EC51B82EC1185141E17A140EE3A254411F85EB31BF185141A4703D8AE1A25441D7A370FDB8185141CDCCCC4CDDA25441713D0A57B7185141C3F5282CDCA2544152B81EE5B5185141F6285C2FDBA25441CDCCCCDCB4185141AE47E17ADAA254417B14AEE7AA1851418FC2F5A8D3A254410AD7A3A0A0185141713D0AA7CCA25441AE47E15A96185141EC51B89EC5A254419A9999B98A185141B81E853BBEA25441F6285C1F891851411F85EB01BDA25441713D0A0788185141CDCCCC2CBCA254410000009085185141D7A3704DBAA25441E17A149E821851410AD7A310B8A25441A4703D3A8018514100000040B6A25441000000B075185141B81E851BAFA2544148E17A446B185141F6285C0FA8A2544148E17AF4601851411F85EBD1A0A2544166666686561851410000008099A25441CDCCCCEC4B185141F6285C0F92A25441B81E85AB401851419A9999298AA25441713D0A4738185141295C8F4284A2544152B81E7537185141F6285CAF83A25441295C8FD2351851418FC2F58882A25441E17A149E2A185141F6285CAF7AA254413D0AD7A32018514152B81E7573A25441666666F61518514185EB51B86BA2544114AE47510C185141B81E85BB64A25441F6285C4F02185141C3F5287C5DA2544100000020F81751419A99991956A254415C8FC2F5EC1751411F85EB014EA25441295C8F72E21751415C8FC22546A25441AE47E12ADD1751413333333342A25441333333C3D81751417B14AEE73EA2544133333353D217514185EB51383AA2544148E17A74D2175141EC51B8DE33A25441B81E852BD11751413D0AD79334A25441A4703DCAD01751419A9999C934A25441AE47E11ACF175141A4703DAA35A2544166666666CD17514114AE478136A25441EC51B81ECD175141295C8FA236A25441D7A370ADCB175141EC51B84E37A25441000000F0C91751411F85EB1138A254410AD7A3C0C8175141EC51B88E38A25441E17A142EC8175141B81E85CB38A254418FC2F518CA17514185EB51283AA254418FC2F5B8CD175141CDCCCCBC3CA25441E17A142ED0175141CDCCCC7C3EA2544185EB5178D4175141AE47E18A41A254413D0AD713D9175141CDCCCC1C47A25441000000F0E41751419A99994950A25441295C8F720C18514114AE47716DA25441000000D00B1851411F85EBE16DA2544152B81E6538185141B81E85BB8DA254418FC2F5F83A1851419A9999398FA2544152B81EA57A18514152B81EA5BBA2544148E17AF47B18514148E17A84BCA25441F6285C4F7C185141713D0A97BBA25441AE47E11A7C185141AE47E1AABAA2544114AE47B17B185141E17A14AEB9A25441AE47E1AA79185141C3F5282CB8A2544114AE472159185141F6285C8FA1A25441713D0AE746185141D7A370DD94A2544152B81E65431851410AD7A37092A2544185EB51F83C185141B81E85FB8DA25441666666C636185141333333F389A25441333333033A1851410AD7A3708EA25441295C8FC2371851418FC2F5F88CA254415C8FC2753418514152B81E8588A25441295C8FB22E18514148E17AA484A2544114AE47312A185141CDCCCC3C81A25441CDCCCCCC2318514185EB51787CA25441666666F61A1851410AD7A3D075A254418FC2F5F80D18514114AE47616CA254417B14AE17FC1751415C8FC2B55FA2544114AE4791FB17514148E17AC45EA25441C3F5280CE4175141333333A34DA2544148E17AE4D71751418FC2F5C844A25441713D0A47D71751419A9999A944A2544152B81E95D6175141E17A14CE43A2544100000040D7175141295C8FF242A25441D7A3700DD8175141B81E857B43A254410AD7A3E0DE175141AE47E18A48A254419A999919F7175141E17A142E5AA25441AE47E14AFC1751411F85EB015EA254418FC2F5A8FC175141B81E859B5EA25441000000900B1851411F85EB9169A254413D0AD7832718514114AE47B17DA25441EC51B8FE29185141F6285C9F7FA254419A9999D92C185141B81E851B82A254410000004036185141E17A146E88A254411F85EB2138185141E17A147E89A25441D7A3700D39185141333333038AA25441CDCCCCFC3918514148E17AB48AA25441295C8FF2481851418FC2F5F894A25441333333B35E185141CDCCCC2CA4A2544148E17AA470185141000000B0B0A25441A4703DDA7A185141E17A14AEB7A25441295C8F727C1851413D0AD793B8A254411F85EB017B185141D7A3705DB7A2544148E17AE47018514152B81E45B0A25441F6285CDF5E185141EC51B8BEA3A25441AE47E13A49185141A4703D9A94A25441E17A14CE44185141E17A148E91A254418FC2F5583A185141F6285C4F8AA2544152B81E5539185141F6285C9F89A254415C8FC245381851413D0AD7D388A2544148E17A0437185141AE47E1CA87A2544166666686381851410000007089A25441EC51B88E361851416666665688A2544166666676351851415C8FC25587A254413D0AD783331851411F85EB1186A254411F85EBE1301851415C8FC26584A25441B81E854B2D1851413D0AD72382A254419A9999A92A185141CDCCCCFC7FA25441000000202D1851415C8FC21581A25441666666262A185141CDCCCC0C7FA25441D7A370CD271851413D0AD7537DA25441D7A370ED0B18514148E17A3469A254418FC2F5F8FC17514148E17A445EA254411F85EBA1FC175141D7A3709D5DA254419A999979F7175141295C8FB259A254419A999969DF175141D7A3701D48A25441000000A0D71751410AD7A34042A25441F6285C4FD1175141666666D63DA25441CDCCCC4CD0175141000000603EA254411F85EBD1CD1751418FC2F5983CA25441AE47E1AACF17514185EB51C839A2544100000010D2175141295C8F2237A25441CDCCCCBCD1175141B81E852B3AA25441AE47E1AAD0175141295C8F323AA254411F85EB21D01751418FC2F5583BA25441B81E855BE5175141C3F528DC4AA25441C3F5284CFD1751418FC2F5685CA254411F85EB81FD175141A4703D0A5DA254417B14AED70F185141333333736AA2544152B81EB52C1851411F85EB317FA25441D7A3702D5A1851413D0AD7339FA25441EC51B88E80185141A4703D8AB9A254413D0AD71383185141EC51B8BEB9A2544152B81E658518514152B81E45BAA254419A9999D987185141A4703D1ABCA25441E17A141E86185141CDCCCC7CBBA25441F6285C8F82185141A4703DEABAA254413D0AD7C385185141D7A3701DBDA25441713D0AD7A918514152B81ED5D5A254417B14AE07B318514114AE4741DCA25441295C8F22BD185141295C8F62E3A25441295C8F02D71851415C8FC265F5A254417B14AE47DE185141F6285CEFF9A2544148E17AD4DF185141295C8F12FDA25441B81E85FBDE1851415C8FC2E5FDA2544133333343E1185141F6285CFF05A35441E17A14CEE2185141EC51B8DE0CA35441295C8FD2E3185141C3F5283C14A3544148E17AC4E41851419A9999E91DA354413D0AD7B3E5185141295C8FE225A354415C8FC215E7185141AE47E1CA2EA35441E17A149EE7185141295C8F2231A3544152B81EE5E81851410AD7A3C034A35441D7A370BDEA185141B81E85EB39A3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441CDCCCC1C0A19514152B81E2569A354413D0AD7630C195141C3F528AC6BA35441295C8F420E1951413D0AD7736CA35441B81E858B0E19514185EB51E874A35441
+</a>
+
+<b>
+0106000000010000000103000000010000006C01000093FF8BE2ED185141D5B5B48442A35441DEAE4671EC18514148C06F1D3CA354419F9A433CEB18514183F98A773BA3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441CDCCCC1C0A19514152B81E2569A354413D0AD7630C195141C3F528AC6BA35441295C8F420E1951413D0AD7736CA35441B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441D7A3704DFF1851413D0AD78363A354419A999989FC1851417B14AE3761A35441EC51B89EF9185141666666765EA3544185EB51D8F41851419A99995959A35441295C8FB2EE185141C3F528FC4FA35441666666C6EB185141C3F5283C49A3544133333313EA18514152B81E4546A3544148E17A44E81851417B14AE8740A35441CDCCCC4CE71851411F85EB313CA35441F5948515E718514162C7770339A354412C6F5C0CE61851412EAEB15238A3544152B81EB5E61851411F85EBD13BA3544148E17AF4E71851417B14AEE740A35441B81E858BE9185141D7A3705D46A35441AE47E1DAEA185141B81E858B49A354419A999999ED1851410AD7A35050A3544185EB5138F1185141E17A14FE55A35441713D0AD7F3185141C3F528DC59A354418FC2F5E8F8185141B81E852B5FA354411F85EBD1FB185141295C8FE261A354411F85EB31FE185141F6285C0F64A354419A99994905195141EC51B80E6AA3544114AE475109195141A4703D0A6EA35441713D0AB70A195141D7A370FD72A354413D0AD7930B195141F6285C2F76A3544148E17A440A195141713D0A4776A3544114AE47110A1951411F85EB9175A3544152B81EA507195141CDCCCCCC6FA35441B81E85EB0019514152B81ED568A35441295C8FC2F9185141E17A148E62A354417B14AE17F518514148E17A145EA35441E17A144EF11851413D0AD7D359A35441D7A3704DED185141A4703DCA53A354413D0AD793EA185141AE47E1AA4EA354411F85EBE1E81851413D0AD7B34AA35441295C8F42E71851416666667645A354415C8FC2B5E41851411F85EB413CA354411F85EB51E3185141C3F5284C36A3544185EB5188E01851417B14AE873AA3544185EB51C8DC1851410AD7A3703FA354417B14AEC7DB185141E17A140E41A354419A999959DA185141C3F528DC40A35441D7A3703DE218514152B81EE535A35441D7A3702DE31851418FC2F56832A35441713D0A97E21851413D0AD7F32EA35441333333E3E118514152B81E852BA3544135496667E01851412938C27F22A3544166C9D21EE2185141F079B22E22A3544148E17AD4E218514148E17A8428A35441CDCCCC3CE31851415C8FC2552BA35441CDCCCC9CE3185141F6285CCF2EA3544185EB51A8E51851410000004036A354413B80CFD7E51851416812ED3B37A35441658B0504E71851417B45A00138A35441713D0AD7E6185141AE47E16A35A35441C3F5288CE51851411F85EB412FA354419A999949E418514148E17A1426A35441D51D8FDCE31851415DA878DC21A35441DE7F9C33E5185141030D309D21A354413D0AD7B3E5185141295C8FE225A354415C8FC215E7185141AE47E1CA2EA35441E17A149EE7185141295C8F2231A3544152B81EE5E81851410AD7A3C034A35441D7A370BDEA185141B81E85EB39A35441093C4BDDEA18514134C9FC4E3AA35441B423EA2CEC185141EC36F7ED3AA354419A999979E81851410AD7A3802AA35441713D0A97E5185141B81E85CB10A354411F85EB41E218514185EB517801A354419A999969DE185141295C8F62F9A254418FC2F588DA18514100000050F5A25441333333D3D41851419A9999C9F1A254417B14AE07CB185141EC51B88EEAA2544133333323C9185141D7A3701DE9A254418FC2F528C51851415C8FC215E6A25441EC51B82EC1185141E17A140EE3A254411F85EB31BF185141A4703D8AE1A25441D7A370FDB8185141CDCCCC4CDDA25441713D0A57B7185141C3F5282CDCA2544152B81EE5B5185141F6285C2FDBA25441CDCCCCDCB4185141AE47E17ADAA254417B14AEE7AA1851418FC2F5A8D3A254410AD7A3A0A0185141713D0AA7CCA25441AE47E15A96185141EC51B89EC5A254419A9999B98A185141B81E853BBEA25441F6285C1F891851411F85EB01BDA25441713D0A0788185141CDCCCC2CBCA254410000009085185141D7A3704DBAA25441E17A149E821851410AD7A310B8A25441A4703D3A8018514100000040B6A25441000000B075185141B81E851BAFA2544148E17A446B185141F6285C0FA8A2544148E17AF4601851411F85EBD1A0A2544166666686561851410000008099A25441CDCCCCEC4B185141F6285C0F92A25441B81E85AB401851419A9999298AA25441713D0A4738185141295C8F4284A2544152B81E7537185141F6285CAF83A25441295C8FD2351851418FC2F58882A25441E17A149E2A185141F6285CAF7AA254413D0AD7A32018514152B81E7573A25441666666F61518514185EB51B86BA2544114AE47510C185141B81E85BB64A25441F6285C4F02185141C3F5287C5DA2544100000020F81751419A99991956A254415C8FC2F5EC1751411F85EB014EA25441295C8F72E21751415C8FC22546A25441AE47E12ADD1751413333333342A25441333333C3D81751417B14AEE73EA2544133333353D217514185EB51383AA2544148E17A74D2175141EC51B8DE33A25441B81E852BD11751413D0AD79334A25441A4703DCAD01751419A9999C934A25441AE47E11ACF175141A4703DAA35A2544166666666CD17514114AE478136A25441EC51B81ECD175141295C8FA236A25441D7A370ADCB175141EC51B84E37A25441000000F0C91751411F85EB1138A254410AD7A3C0C8175141EC51B88E38A25441E17A142EC8175141B81E85CB38A254418FC2F518CA17514185EB51283AA254418FC2F5B8CD175141CDCCCCBC3CA25441E17A142ED0175141CDCCCC7C3EA2544185EB5178D4175141AE47E18A41A254413D0AD713D9175141CDCCCC1C47A25441000000F0E41751419A99994950A25441295C8F720C18514114AE47716DA25441000000D00B1851411F85EBE16DA2544152B81E6538185141B81E85BB8DA254418FC2F5F83A1851419A9999398FA2544152B81EA57A18514152B81EA5BBA2544148E17AF47B18514148E17A84BCA25441F6285C4F7C185141713D0A97BBA25441AE47E11A7C185141AE47E1AABAA2544114AE47B17B185141E17A14AEB9A25441AE47E1AA79185141C3F5282CB8A2544114AE472159185141F6285C8FA1A25441713D0AE746185141D7A370DD94A2544152B81E65431851410AD7A37092A2544185EB51F83C185141B81E85FB8DA25441666666C636185141333333F389A25441333333033A1851410AD7A3708EA25441295C8FC2371851418FC2F5F88CA254415C8FC2753418514152B81E8588A25441295C8FB22E18514148E17AA484A2544114AE47312A185141CDCCCC3C81A25441CDCCCCCC2318514185EB51787CA25441666666F61A1851410AD7A3D075A254418FC2F5F80D18514114AE47616CA254417B14AE17FC1751415C8FC2B55FA2544114AE4791FB17514148E17AC45EA25441C3F5280CE4175141333333A34DA2544148E17AE4D71751418FC2F5C844A25441713D0A47D71751419A9999A944A2544152B81E95D6175141E17A14CE43A2544100000040D7175141295C8FF242A25441D7A3700DD8175141B81E857B43A254410AD7A3E0DE175141AE47E18A48A254419A999919F7175141E17A142E5AA25441AE47E14AFC1751411F85EB015EA254418FC2F5A8FC175141B81E859B5EA25441000000900B1851411F85EB9169A254413D0AD7832718514114AE47B17DA25441EC51B8FE29185141F6285C9F7FA254419A9999D92C185141B81E851B82A254410000004036185141E17A146E88A254411F85EB2138185141E17A147E89A25441D7A3700D39185141333333038AA25441CDCCCCFC3918514148E17AB48AA25441295C8FF2481851418FC2F5F894A25441333333B35E185141CDCCCC2CA4A2544148E17AA470185141000000B0B0A25441A4703DDA7A185141E17A14AEB7A25441295C8F727C1851413D0AD793B8A254411F85EB017B185141D7A3705DB7A2544148E17AE47018514152B81E45B0A25441F6285CDF5E185141EC51B8BEA3A25441AE47E13A49185141A4703D9A94A25441E17A14CE44185141E17A148E91A254418FC2F5583A185141F6285C4F8AA2544152B81E5539185141F6285C9F89A254415C8FC245381851413D0AD7D388A2544148E17A0437185141AE47E1CA87A2544166666686381851410000007089A25441EC51B88E361851416666665688A2544166666676351851415C8FC25587A254413D0AD783331851411F85EB1186A254411F85EBE1301851415C8FC26584A25441B81E854B2D1851413D0AD72382A254419A9999A92A185141CDCCCCFC7FA25441000000202D1851415C8FC21581A25441666666262A185141CDCCCC0C7FA25441D7A370CD271851413D0AD7537DA25441D7A370ED0B18514148E17A3469A254418FC2F5F8FC17514148E17A445EA254411F85EBA1FC175141D7A3709D5DA254419A999979F7175141295C8FB259A254419A999969DF175141D7A3701D48A25441000000A0D71751410AD7A34042A25441F6285C4FD1175141666666D63DA25441CDCCCC4CD0175141000000603EA254411F85EBD1CD1751418FC2F5983CA25441AE47E1AACF17514185EB51C839A2544100000010D2175141295C8F2237A25441CDCCCCBCD1175141B81E852B3AA25441AE47E1AAD0175141295C8F323AA254411F85EB21D01751418FC2F5583BA25441B81E855BE5175141C3F528DC4AA25441C3F5284CFD1751418FC2F5685CA254411F85EB81FD175141A4703D0A5DA254417B14AED70F185141333333736AA2544152B81EB52C1851411F85EB317FA25441D7A3702D5A1851413D0AD7339FA25441EC51B88E80185141A4703D8AB9A254413D0AD71383185141EC51B8BEB9A2544152B81E658518514152B81E45BAA254419A9999D987185141A4703D1ABCA25441E17A141E86185141CDCCCC7CBBA25441F6285C8F82185141A4703DEABAA254413D0AD7C385185141D7A3701DBDA25441713D0AD7A918514152B81ED5D5A254417B14AE07B318514114AE4741DCA25441295C8F22BD185141295C8F62E3A25441295C8F02D71851415C8FC265F5A254417B14AE47DE185141F6285CEFF9A2544148E17AD4DF185141295C8F12FDA25441B81E85FBDE1851415C8FC2E5FDA2544133333343E1185141F6285CFF05A35441E17A14CEE2185141EC51B8DE0CA35441295C8FD2E3185141C3F5283C14A3544148E17AC4E41851419A9999E91DA35441A4861D21E5185141012C7AFF20A3544159341DCDE3185141D0AD7E4321A354419A999979E318514185EB51081EA3544100000080E21851415C8FC23514A3544152B81E65E11851410AD7A3100DA35441E17A14EEDF185141295C8F1206A35441666666E6DD185141D7A370BD01A35441EC51B83EDC18514152B81EA5FCA25441713D0AD7D91851410AD7A360F9A25441F6285C6FD618514152B81E15F6A25441E17A146EBC1851417B14AE77E4A2544148E17A34B21851419A999949DDA25441E17A148E9C185141A4703D7ACEA2544152B81E25941851411F85EBA1C8A254418FC2F5B886185141B81E857BBFA254413D0AD7E381185141E17A143EBCA25441B81E859B80185141295C8F52BBA25441333333E37F185141EC51B81EBBA2544114AE47C181185141D7A3707DBCA254410AD7A39086185141A4703DBABFA254411F85EBF19318514114AE47E1C8A25441E17A148E9C185141C3F528DCCEA25441B81E85FBB11851417B14AEA7DDA254418FC2F538BC185141713D0AD7E4A25441D7A370CDD518514100000060F6A25441D7A3708DD8185141666666E6F8A25441295C8F62DA185141EC51B82EFBA25441D7A370DDDB1851410AD7A340FDA2544114AE47E1DC185141A4703D3A02A35441E17A145EDE1851413333334306A35441713D0A07DF18514185EB51980AA35441C3F5286CE0185141E17A14BE12A354411F85EBC1E118514114AE47F11EA35441CC787C0EE218514180DCD79C21A3544130F3BE50E0185141199703F621A35441E17A14EEDF185141E17A149E1FA35441CDCCCC7CDF185141F6285C4F19A354411F85EBE1DD185141713D0A070DA35441D7A3707DDD185141333333C309A354411F85EB51DC185141CDCCCCCC04A3544133333363DB185141B81E857B02A3544185EB5188DB1851410AD7A350FFA2544148E17AD4DA185141C3F528CCFDA254411F85EBA1D91851415C8FC2F5FBA254417B14AED7D7185141295C8FC2F9A25441F6285C1FD518514185EB5118F7A254413D0AD7C3BB185141EC51B8BEE5A2544133333393B1185141F6285CCFDEA254418FC2F598A81851417B14AE87D8A25441C3F5284C84185141EC51B8AEBFA2544166666606801851413D0AD7B3BCA25441333333537E1851417B14AEB7BCA254417B14AEF77F1851413D0AD7A3BDA25441F6285C8F84185141AE47E1DAC0A25441D7A3707D88185141E17A149EC3A254411F85EBC18B185141666666C6C5A254413D0AD7938C185141D7A370BDC5A25441E17A14AE8C185141AE47E15AC6A25441333333239718514185EB5188CDA254417B14AE379C1851410AD7A310D1A254418FC2F5A8A1185141F6285CAFD4A25441C3F5283CA21851410AD7A370D5A25441E17A149EA31851418FC2F548D7A25441F6285C6FAD185141D7A3709DDDA254417B14AED7B8185141C3F5283CE7A254413D0AD713C31851415C8FC225EEA2544100000000D7185141713D0A57FDA2544185EB5168DA1851418FC2F57803A354410AD7A3E0DC1851419A9999390DA35441713D0A77DE1851413333337319A3544166666636E0185141B81E850B36A35441C3F5288CD9185141713D0A0741A3544133333333DA185141CDCCCC1C41A354410AD7A3A0DB185141C3F5284C41A35441295C8F02D7185141F6285CEF48A354415C8FC245E5185141F6285C4F48A354419A999939E8185141D7A3702D50A3544133333313EF1851411F85EBE15BA354418FC2F518F3185141EC51B86E5FA354418FC2F598F51851413D0AD7A361A3544114AE4781FE185141AE47E13A6AA3544185EB5138081951410AD7A3B076A354413D0AD7530A1951417B14AEF776A35441B81E854B0B19514185EB511877A3544114AE47610C1951415C8FC29586A354411F85EBE10C1951413333337392A3544185EB51980D1951411F85EB91A3A354411F85EB4111195141000000909FA35441F6285CDF121951413D0AD7239EA354416666663612195141B81E851B8FA3544152B81E85111951417B14AE6782A3544148E17AE410195141295C8F4276A354418FC2F57810195141713D0AA771A35441C3F5285C0E19514114AE47E16BA35441B81E85AB0A195141EC51B85E67A354410AD7A320FF185141E17A143E5EA354418C261DE3F8185141913DC8CC57A3544114AE4791F71851410000007056A354417B14AEB7F11851410AD7A3D04CA35441CAB748C1EE1851412412DE3D45A3544166666626EE1851411F85EBB143A3544193FF8BE2ED185141D5B5B48442A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 230678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441C3F528BC256751418FC2F5A8736D544148E17A341A67514185EB51B8746D54410AD7A380136751417B14AE67786D544185EB51580E67514152B81E057C6D5441B81E850B09675141F6285C5F826D54411F85EB01FF665141EC51B87E836D54410AD7A300FF665141D7A3709D7D6D54419A9999E9F96651415C8FC2857F6D5441713D0A37F6665141A4703DEA806D5441295C8F12F36651417B14AE77826D544185EB5158ED665141A4703D2A866D5441E17A14DEE5665141CDCCCCBC8A6D54415C8FC2F5DC665141295C8FD2906D5441333333A3D6665141E17A141E956D54418FC2F578D66651418FC2F578956D544166666636D666514114AE47F1956D5441EC51B8EED56651411F85EB01976D54417B14AEB7D0665141E17A141E9A6D544133333333CF6651415C8FC2A59A6D54418FC2F588CA6651415C8FC2B59C6D5441EC51B8BECE665141B81E85FB9D6D5441295C8FB2D96651410AD7A3A0996D5441295C8FA2EF665141713D0A57906D544148E17A64F2665141B81E858B8E6D5441A4703D4AF9665141C3F528DC8B6D5441B81E858BFE6651418FC2F5588A6D5441CDCCCCFC016751413D0AD793896D54413D0AD7A307675141B81E853B896D544113000000295C8F12256751419A9999E98E6D54413D0AD73320675141333333D38E6D544152B81E451C6751417B14AE978E6D54410AD7A3D01A67514152B81E758E6D5441CDCCCCDC1167514114AE47618F6D544148E17AB40D67514152B81E45896D54417B14AE170A675141EC51B83E846D544166666636136751419A9999897C6D5441E17A149E176751410AD7A370796D5441000000201C67514133333383776D544114AE47F120675141666666F6756D5441CDCCCC2C26675141F6285C9F746D5441F6285CFF27675141C3F5289C796D544114AE47C1286751411F85EB917C6D5441713D0A57296751415C8FC2C57E6D5441C3F5288C29675141F6285C8F816D544152B81E45296751419A999909846D5441CDCCCC3C286751411F85EB71876D5441295C8F12256751419A9999E98E6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441CE1BFFF82067514151826CF4756D54414CD7366E1F675141A29AEF72766D54412CC18A1B1F675141A903898D766D5441043472991E675141C08A64B7766D5441EE814D371D675141630B5629776D5441E84A402E1D675141FA973F2C776D544169BA10821B6751412F72BCC6776D5441D209DAB8196751418906408A786D54412D3C43BE186751418B3B68F5786D54419B3198711867514110293116796D5441844025C116675141770EFF0B7A6D5441F246824115675141AADFC2197B6D54412DFE64A813675141640971397C6D54417EA125D2116751410340ADB67D6D544140BE991011675141F9303F5A7E6D5441970A31D30F675141AFE77E667F6D5441F03350210E675141B9D92CD5806D5441BCAE01C10C675141E9B7EAFE816D5441A6476C980C6751414B043721826D544110FE29B20A675141619029BC836D54417B14AE170A675141EC51B83E846D5441E37E8D730B67514119B69C22866D5441AFBFE9990B675141A7B7F857866D544148E17AB40D67514152B81E45896D5441FD8FEFDC1067514119E340E98D6D544197BC8AE41167514121747B608F6D544174FFAC1318675141B59C59BD8E6D54410AD7A3D01A67514152B81E758E6D544181FB42011C675141F14462918E6D544198D66FE11D67514135AA0EB08E6D544153C6DE411E6751411D39C2B58E6D54412ED7DB691E6751414D771FB88E6D544114A6D8D91F675141B31BE1CD8E6D5441F0CA348C2267514158A3FCDD8E6D5441C6AA621A236751419E9A8AE08E6D544110928B3F24675141C104CFE58E6D5441AEA2BAFB24675141459630E98E6D544145B1F512256751412528A8E88E6D5441DC788DA125675141922639988D6D54414A2131F3256751411D819AD78C6D5441A6CEBC76266751414B1F3CA18B6D5441CCFEB6C3276751410ABB9B8F886D5441420A566628675141CD40D7E8866D5441313F61FA28675141B9B14200856D54418A86F65629675141B58F4C6A836D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 230680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441C3F528BC256751418FC2F5A8736D544148E17A341A67514185EB51B8746D54410AD7A380136751417B14AE67786D544185EB51580E67514152B81E057C6D5441B81E850B09675141F6285C5F826D54411F85EB01FF665141EC51B87E836D54410AD7A300FF665141D7A3709D7D6D54419A9999E9F96651415C8FC2857F6D5441713D0A37F6665141A4703DEA806D5441295C8F12F36651417B14AE77826D544185EB5158ED665141A4703D2A866D5441E17A14DEE5665141CDCCCCBC8A6D54415C8FC2F5DC665141295C8FD2906D5441333333A3D6665141E17A141E956D54418FC2F578D66651418FC2F578956D544166666636D666514114AE47F1956D5441EC51B8EED56651411F85EB01976D54417B14AEB7D0665141E17A141E9A6D544133333333CF6651415C8FC2A59A6D54418FC2F588CA6651415C8FC2B59C6D5441EC51B8BECE665141B81E85FB9D6D5441295C8FB2D96651410AD7A3A0996D5441295C8FA2EF665141713D0A57906D544148E17A64F2665141B81E858B8E6D5441A4703D4AF9665141C3F528DC8B6D5441B81E858BFE6651418FC2F5588A6D5441CDCCCCFC016751413D0AD793896D54413D0AD7A307675141B81E853B896D544113000000295C8F12256751419A9999E98E6D54413D0AD73320675141333333D38E6D544152B81E451C6751417B14AE978E6D54410AD7A3D01A67514152B81E758E6D5441CDCCCCDC1167514114AE47618F6D544148E17AB40D67514152B81E45896D54417B14AE170A675141EC51B83E846D544166666636136751419A9999897C6D5441E17A149E176751410AD7A370796D5441000000201C67514133333383776D544114AE47F120675141666666F6756D5441CDCCCC2C26675141F6285C9F746D5441F6285CFF27675141C3F5289C796D544114AE47C1286751411F85EB917C6D5441713D0A57296751415C8FC2C57E6D5441C3F5288C29675141F6285C8F816D544152B81E45296751419A999909846D5441CDCCCC3C286751411F85EB71876D5441295C8F12256751419A9999E98E6D5441
+</a>
+
+<b>
+01060000000100000001030000000100000065000000D042511A1867514188F232E0756D5441A011A3A4166751413A87A5AD766D54413031300C16675141DD4D7601776D544118E85B7815675141C5E5BC52776D5441161128E01467514121046BA6776D54413109ED47146751419B161DFA776D5441ED144D2D13675141520F18A2786D5441173819D5126751416FC2EADF786D544173044245126751411BEABC44796D54416C1349EF106751415F006F347A6D544150C84EA510675141B03F49687A6D54413F4C5B680F675141D89D71467B6D544121F981F30E675141637E58987B6D54410AC4936C0E67514113DAEBF67B6D5441111A25760D67514146C435147D6D544109F0A0010D675141A35ADD9F7D6D54419ED12DAE0C675141A6DDE2037E6D544168C2C0850B675141778D2D677F6D544138D6C8340B6751414EBA39C87F6D5441D16216160967514143ABB152826D5441137530290A675141A82BEC2F846D5441EF7FA6760A675141966475EE836D544166666636136751419A9999897C6D5441628C396213675141148AC86A7C6D5441BFDA26E2146751413F74D05C7B6D54417CAF8016166751417617FD837A6D5441E17A149E176751410AD7A370796D54417B0C2EAE19675141D847D08E786D5441925B27021A6751417A96E76A786D5441000000201C67514133333383776D544114AE47F120675141666666F6756D544191125FE62367514146E18334756D5441CDCCCC2C26675141F6285C9F746D5441F26565322667514114A5ACAE746D544108B8026326675141ACD3B633756D5441D3B0F22A27675141AE30DE56776D544114B32D5427675141EA4BB3C7776D5441F6285CFF27675141C3F5289C796D5441AFC81F5128675141212EA9DB7A6D5441B5A1E42529675141A157B90C7E6D5441713D0A57296751415C8FC2C57E6D5441C3F5288C29675141F6285C8F816D544152B81E45296751419A999909846D5441CDCCCC3C286751411F85EB71876D544192744E70266751413B8668B08B6D5441D8180A4E2567514135A4435D8E6D5441295C8F12256751419A9999E98E6D54418F89AC0F2567514152538CE98E6D54417A9618F624675141AB2E15238F6D5441D2964FB12367514198CC40E38E6D54413D0AD73320675141333333D38E6D5441D468D6A51D675141C49A88AC8E6D5441A5D843101B6751411441C6A58E6D5441D04A7C1917675141D76F21D78E6D54416F2AF11E14675141CFBDB4258F6D5441CDCCCCDC1167514114AE47618F6D54413CD0C5D51167514160D4F3568F6D54410B1454F9106751410581CB1B906D544197DE353F17675141E3CFE2918F6D544170B8F02C18675141B069787D8F6D544174C2495E1A6751413966434D8F6D544114AE47F11A6751410AD7A3408F6D5441FC5B1D651D675141F0271A608F6D5441B38B77481F6751419CF252788F6D544104ED9C682167514127A597938F6D5441A45943C122675141A710DDA48F6D544189DAA4EE226751415D3E23A78F6D5441C558D938236751411333DBAA8F6D54415EF073E2256751410EA929C78F6D5441DAD5D376276751413EDD5EA18C6D54411B9FEA672A675141FC842F73866D54415A490C892A6751415529942D866D54418EEBF48E2A675141953A2A21866D54410E87D2BA2A67514110A501C5856D5441788851ED2A675141A47E574A846D54410E28F10A2B675141529664E5826D54419CFBC6F02A67514198958734816D54414B2795C22A675141D90226627F6D544168DF31632A675141B27C36467E6D5441A4080CC729675141A01AAE757C6D54410A790D89296751411CE53FBD7B6D5441228722AC28675141A2B63F7F796D544176CC8C92286751413DDF2F3F796D544148BADF6628675141C3A1D3D1786D5441C9B7BAC227675141C89FCAC1776D5441000000A02767514185EB5188776D5441ACB21136276751415B79CAA5766D54419A9999F92667514148E17A24766D54417F56488F26675141ECFC3990746D5441C3F528BC256751418FC2F5A8736D5441D716E54024675141F3CFD3CB736D5441911342942367514122D7B2DB736D5441ED09C4662267514118806AF7736D54410200765C21675141AC04E60F746D5441FE369E1E21675141BA7F9515746D54413A89D4B8206751417916F11E746D54411DC4E8071D675141FBEBCF75746D544187DD40C91A6751411185A4AA746D54410D92B3B61A675141512459AC746D544144C9D799196751414EB3560D756D5441D042511A1867514188F232E0756D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 343602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441C3F528BC256751418FC2F5A8736D544148E17A341A67514185EB51B8746D54410AD7A380136751417B14AE67786D544185EB51580E67514152B81E057C6D5441B81E850B09675141F6285C5F826D54411F85EB01FF665141EC51B87E836D54410AD7A300FF665141D7A3709D7D6D54419A9999E9F96651415C8FC2857F6D5441713D0A37F6665141A4703DEA806D5441295C8F12F36651417B14AE77826D544185EB5158ED665141A4703D2A866D5441E17A14DEE5665141CDCCCCBC8A6D54415C8FC2F5DC665141295C8FD2906D5441333333A3D6665141E17A141E956D54418FC2F578D66651418FC2F578956D544166666636D666514114AE47F1956D5441EC51B8EED56651411F85EB01976D54417B14AEB7D0665141E17A141E9A6D544133333333CF6651415C8FC2A59A6D54418FC2F588CA6651415C8FC2B59C6D5441EC51B8BECE665141B81E85FB9D6D5441295C8FB2D96651410AD7A3A0996D5441295C8FA2EF665141713D0A57906D544148E17A64F2665141B81E858B8E6D5441A4703D4AF9665141C3F528DC8B6D5441B81E858BFE6651418FC2F5588A6D5441CDCCCCFC016751413D0AD793896D54413D0AD7A307675141B81E853B896D544113000000295C8F12256751419A9999E98E6D54413D0AD73320675141333333D38E6D544152B81E451C6751417B14AE978E6D54410AD7A3D01A67514152B81E758E6D5441CDCCCCDC1167514114AE47618F6D544148E17AB40D67514152B81E45896D54417B14AE170A675141EC51B83E846D544166666636136751419A9999897C6D5441E17A149E176751410AD7A370796D5441000000201C67514133333383776D544114AE47F120675141666666F6756D5441CDCCCC2C26675141F6285C9F746D5441F6285CFF27675141C3F5289C796D544114AE47C1286751411F85EB917C6D5441713D0A57296751415C8FC2C57E6D5441C3F5288C29675141F6285C8F816D544152B81E45296751419A999909846D5441CDCCCC3C286751411F85EB71876D5441295C8F12256751419A9999E98E6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441CE1BFFF82067514151826CF4756D54414CD7366E1F675141A29AEF72766D54412CC18A1B1F675141A903898D766D5441043472991E675141C08A64B7766D5441EE814D371D675141630B5629776D5441E84A402E1D675141FA973F2C776D544169BA10821B6751412F72BCC6776D5441D209DAB8196751418906408A786D54412D3C43BE186751418B3B68F5786D54419B3198711867514110293116796D5441844025C116675141770EFF0B7A6D5441F246824115675141AADFC2197B6D54412DFE64A813675141640971397C6D54417EA125D2116751410340ADB67D6D544140BE991011675141F9303F5A7E6D5441970A31D30F675141AFE77E667F6D5441F03350210E675141B9D92CD5806D5441BCAE01C10C675141E9B7EAFE816D5441A6476C980C6751414B043721826D544110FE29B20A675141619029BC836D54417B14AE170A675141EC51B83E846D5441E37E8D730B67514119B69C22866D5441AFBFE9990B675141A7B7F857866D544148E17AB40D67514152B81E45896D5441FD8FEFDC1067514119E340E98D6D544197BC8AE41167514121747B608F6D544174FFAC1318675141B59C59BD8E6D54410AD7A3D01A67514152B81E758E6D544181FB42011C675141F14462918E6D544198D66FE11D67514135AA0EB08E6D544153C6DE411E6751411D39C2B58E6D54412ED7DB691E6751414D771FB88E6D544114A6D8D91F675141B31BE1CD8E6D5441F0CA348C2267514158A3FCDD8E6D5441C6AA621A236751419E9A8AE08E6D544110928B3F24675141C104CFE58E6D5441AEA2BAFB24675141459630E98E6D544145B1F512256751412528A8E88E6D5441DC788DA125675141922639988D6D54414A2131F3256751411D819AD78C6D5441A6CEBC76266751414B1F3CA18B6D5441CCFEB6C3276751410ABB9B8F886D5441420A566628675141CD40D7E8866D5441313F61FA28675141B9B14200856D54418A86F65629675141B58F4C6A836D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 343729
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441C3F528BC256751418FC2F5A8736D544148E17A341A67514185EB51B8746D54410AD7A380136751417B14AE67786D544185EB51580E67514152B81E057C6D5441B81E850B09675141F6285C5F826D54411F85EB01FF665141EC51B87E836D54410AD7A300FF665141D7A3709D7D6D54419A9999E9F96651415C8FC2857F6D5441713D0A37F6665141A4703DEA806D5441295C8F12F36651417B14AE77826D544185EB5158ED665141A4703D2A866D5441E17A14DEE5665141CDCCCCBC8A6D54415C8FC2F5DC665141295C8FD2906D5441333333A3D6665141E17A141E956D54418FC2F578D66651418FC2F578956D544166666636D666514114AE47F1956D5441EC51B8EED56651411F85EB01976D54417B14AEB7D0665141E17A141E9A6D544133333333CF6651415C8FC2A59A6D54418FC2F588CA6651415C8FC2B59C6D5441EC51B8BECE665141B81E85FB9D6D5441295C8FB2D96651410AD7A3A0996D5441295C8FA2EF665141713D0A57906D544148E17A64F2665141B81E858B8E6D5441A4703D4AF9665141C3F528DC8B6D5441B81E858BFE6651418FC2F5588A6D5441CDCCCCFC016751413D0AD793896D54413D0AD7A307675141B81E853B896D544113000000295C8F12256751419A9999E98E6D54413D0AD73320675141333333D38E6D544152B81E451C6751417B14AE978E6D54410AD7A3D01A67514152B81E758E6D5441CDCCCCDC1167514114AE47618F6D544148E17AB40D67514152B81E45896D54417B14AE170A675141EC51B83E846D544166666636136751419A9999897C6D5441E17A149E176751410AD7A370796D5441000000201C67514133333383776D544114AE47F120675141666666F6756D5441CDCCCC2C26675141F6285C9F746D5441F6285CFF27675141C3F5289C796D544114AE47C1286751411F85EB917C6D5441713D0A57296751415C8FC2C57E6D5441C3F5288C29675141F6285C8F816D544152B81E45296751419A999909846D5441CDCCCC3C286751411F85EB71876D5441295C8F12256751419A9999E98E6D5441
+</a>
+
+<b>
+01060000000100000001030000000100000065000000D042511A1867514188F232E0756D5441A011A3A4166751413A87A5AD766D54413031300C16675141DD4D7601776D544118E85B7815675141C5E5BC52776D5441161128E01467514121046BA6776D54413109ED47146751419B161DFA776D5441ED144D2D13675141520F18A2786D5441173819D5126751416FC2EADF786D544173044245126751411BEABC44796D54416C1349EF106751415F006F347A6D544150C84EA510675141B03F49687A6D54413F4C5B680F675141D89D71467B6D544121F981F30E675141637E58987B6D54410AC4936C0E67514113DAEBF67B6D5441111A25760D67514146C435147D6D544109F0A0010D675141A35ADD9F7D6D54419ED12DAE0C675141A6DDE2037E6D544168C2C0850B675141778D2D677F6D544138D6C8340B6751414EBA39C87F6D5441D16216160967514143ABB152826D5441137530290A675141A82BEC2F846D5441EF7FA6760A675141966475EE836D544166666636136751419A9999897C6D5441628C396213675141148AC86A7C6D5441BFDA26E2146751413F74D05C7B6D54417CAF8016166751417617FD837A6D5441E17A149E176751410AD7A370796D54417B0C2EAE19675141D847D08E786D5441925B27021A6751417A96E76A786D5441000000201C67514133333383776D544114AE47F120675141666666F6756D544191125FE62367514146E18334756D5441CDCCCC2C26675141F6285C9F746D5441F26565322667514114A5ACAE746D544108B8026326675141ACD3B633756D5441D3B0F22A27675141AE30DE56776D544114B32D5427675141EA4BB3C7776D5441F6285CFF27675141C3F5289C796D5441AFC81F5128675141212EA9DB7A6D5441B5A1E42529675141A157B90C7E6D5441713D0A57296751415C8FC2C57E6D5441C3F5288C29675141F6285C8F816D544152B81E45296751419A999909846D5441CDCCCC3C286751411F85EB71876D544192744E70266751413B8668B08B6D5441D8180A4E2567514135A4435D8E6D5441295C8F12256751419A9999E98E6D54418F89AC0F2567514152538CE98E6D54417A9618F624675141AB2E15238F6D5441D2964FB12367514198CC40E38E6D54413D0AD73320675141333333D38E6D5441D468D6A51D675141C49A88AC8E6D5441A5D843101B6751411441C6A58E6D5441D04A7C1917675141D76F21D78E6D54416F2AF11E14675141CFBDB4258F6D5441CDCCCCDC1167514114AE47618F6D54413CD0C5D51167514160D4F3568F6D54410B1454F9106751410581CB1B906D544197DE353F17675141E3CFE2918F6D544170B8F02C18675141B069787D8F6D544174C2495E1A6751413966434D8F6D544114AE47F11A6751410AD7A3408F6D5441FC5B1D651D675141F0271A608F6D5441B38B77481F6751419CF252788F6D544104ED9C682167514127A597938F6D5441A45943C122675141A710DDA48F6D544189DAA4EE226751415D3E23A78F6D5441C558D938236751411333DBAA8F6D54415EF073E2256751410EA929C78F6D5441DAD5D376276751413EDD5EA18C6D54411B9FEA672A675141FC842F73866D54415A490C892A6751415529942D866D54418EEBF48E2A675141953A2A21866D54410E87D2BA2A67514110A501C5856D5441788851ED2A675141A47E574A846D54410E28F10A2B675141529664E5826D54419CFBC6F02A67514198958734816D54414B2795C22A675141D90226627F6D544168DF31632A675141B27C36467E6D5441A4080CC729675141A01AAE757C6D54410A790D89296751411CE53FBD7B6D5441228722AC28675141A2B63F7F796D544176CC8C92286751413DDF2F3F796D544148BADF6628675141C3A1D3D1786D5441C9B7BAC227675141C89FCAC1776D5441000000A02767514185EB5188776D5441ACB21136276751415B79CAA5766D54419A9999F92667514148E17A24766D54417F56488F26675141ECFC3990746D5441C3F528BC256751418FC2F5A8736D5441D716E54024675141F3CFD3CB736D5441911342942367514122D7B2DB736D5441ED09C4662267514118806AF7736D54410200765C21675141AC04E60F746D5441FE369E1E21675141BA7F9515746D54413A89D4B8206751417916F11E746D54411DC4E8071D675141FBEBCF75746D544187DD40C91A6751411185A4AA746D54410D92B3B61A675141512459AC746D544144C9D799196751414EB3560D756D5441D042511A1867514188F232E0756D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962291 - 62744
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541F80CD5B15CD950419C09FA99634B55411BB518095CD950412B15488F644B5541E362B05A5BD950414318188D654B5541F9030BB95AD95041B42D7978664B55418CC5C8F659D950418714A592674B5541EF71CB4959D9504103190A8F684B55410BEA44D158D95041D369DD3E694B554178854B3558D95041C187BC216A4B5541478C8E2D57D95041410A95A06B4B55417FD52CE355D95041452B44816D4B5541A3826C5354D950413DE70ECB6F4B5541412D9A8650D950417564274F754B5541545081624FD950417AC69CEE764B554119F918B145D950410C158AAC844B5541DCF459B545D95041E6EED2D2844B55411BE403C746D95041CC430E838A4B554195E9D8DD46D95041CDD9F5618A4B55418AAFF1AA65D95041353E93E05D4B5541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962291 - 1427019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541F80CD5B15CD950419C09FA99634B55411BB518095CD950412B15488F644B5541E362B05A5BD950414318188D654B5541F9030BB95AD95041B42D7978664B55418CC5C8F659D950418714A592674B5541EF71CB4959D9504103190A8F684B55410BEA44D158D95041D369DD3E694B554178854B3558D95041C187BC216A4B5541478C8E2D57D95041410A95A06B4B55417FD52CE355D95041452B44816D4B5541A3826C5354D950413DE70ECB6F4B5541412D9A8650D950417564274F754B5541545081624FD950417AC69CEE764B554119F918B145D950410C158AAC844B5541DCF459B545D95041E6EED2D2844B55411BE403C746D95041CC430E838A4B554195E9D8DD46D95041CDD9F5618A4B55418AAFF1AA65D95041353E93E05D4B5541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962291 - 4116433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541F80CD5B15CD950419C09FA99634B55411BB518095CD950412B15488F644B5541E362B05A5BD950414318188D654B5541F9030BB95AD95041B42D7978664B55418CC5C8F659D950418714A592674B5541EF71CB4959D9504103190A8F684B55410BEA44D158D95041D369DD3E694B554178854B3558D95041C187BC216A4B5541478C8E2D57D95041410A95A06B4B55417FD52CE355D95041452B44816D4B5541A3826C5354D950413DE70ECB6F4B5541412D9A8650D950417564274F754B5541545081624FD950417AC69CEE764B554119F918B145D950410C158AAC844B5541DCF459B545D95041E6EED2D2844B55411BE403C746D95041CC430E838A4B554195E9D8DD46D95041CDD9F5618A4B55418AAFF1AA65D95041353E93E05D4B5541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945605 - 1167922
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000EC51B8BE407A51413D0AD793168F54417B14AE47437A51411F85EB611A8F5441A4703D7A457A514114AE4721208F544148E17AD4467A5141295C8F82238F54415C8FC215477A51415C8FC2B5258F544148E17AD4467A514152B81E752B8F5441D7A3703D467A5141C3F5285C308F54417B14AE27467A5141EC51B8DE368F5441F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441A4703D6A6A7A5141295C8F321A8F5441B81E853B6C7A51419A999979128F54411F85EB41707A514148E17A84038F5441AE47E18A637A5141D7A3705D038F54418FC2F5A8577A51418FC2F538038F544185EB5158577A514133333363FB8E5441CDCCCC0C3C7A514114AE4781FC8E544185EB51883D7A5141A4703DEA108F54415C8FC2353E7A5141713D0A07138F5441EC51B8BE407A51413D0AD793168F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441A4703D6A6A7A5141295C8F321A8F5441B81E853B6C7A51419A999979128F54411F85EB41707A514148E17A84038F5441AE47E18A637A5141D7A3705D038F54418FC2F5A8577A51418FC2F538038F544185EB5158577A514133333363FB8E5441CDCCCC0C3C7A514114AE4781FC8E5441F8E422893D7A5141080AC9EC108F54416BFE09343E7A5141D884AC01138F54417CABFF773E7A51410DE2CC63138F5441EC51B8BE407A51413D0AD793168F544186236246437A5141E147F95F1A8F5441ECCB9DD1437A51419954B0CA1B8F54417153B095457A51418766E065208F5441DC0308DA467A51411A2274B2238F5441C3859813477A51416A218AE6258F5441B5FC51F8467A51414C004F4D288F5441C9A36BD8467A5141CD104E1C2B8F5441D6C53A9A467A5141913824592D8F5441320CCF42467A51417B908C2F308F5441A180A235467A5141E7C9F2B1328F5441E2C7FE2B467A5141523C3994358F544148DAD450467A51410074DEF1388F5441A200F68C467A51413680F8F93B8F5441F6285CBF467A514148E17A843E8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945605 - 3289386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000EC51B8BE407A51413D0AD793168F54417B14AE47437A51411F85EB611A8F5441A4703D7A457A514114AE4721208F544148E17AD4467A5141295C8F82238F54415C8FC215477A51415C8FC2B5258F544148E17AD4467A514152B81E752B8F5441D7A3703D467A5141C3F5285C308F54417B14AE27467A5141EC51B8DE368F5441F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441A4703D6A6A7A5141295C8F321A8F5441B81E853B6C7A51419A999979128F54411F85EB41707A514148E17A84038F5441AE47E18A637A5141D7A3705D038F54418FC2F5A8577A51418FC2F538038F544185EB5158577A514133333363FB8E5441CDCCCC0C3C7A514114AE4781FC8E544185EB51883D7A5141A4703DEA108F54415C8FC2353E7A5141713D0A07138F5441EC51B8BE407A51413D0AD793168F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441A4703D6A6A7A5141295C8F321A8F5441B81E853B6C7A51419A999979128F54411F85EB41707A514148E17A84038F5441AE47E18A637A5141D7A3705D038F54418FC2F5A8577A51418FC2F538038F544185EB5158577A514133333363FB8E5441CDCCCC0C3C7A514114AE4781FC8E5441F8E422893D7A5141080AC9EC108F54416BFE09343E7A5141D884AC01138F54417CABFF773E7A51410DE2CC63138F5441EC51B8BE407A51413D0AD793168F544186236246437A5141E147F95F1A8F5441ECCB9DD1437A51419954B0CA1B8F54417153B095457A51418766E065208F5441DC0308DA467A51411A2274B2238F5441C3859813477A51416A218AE6258F5441B5FC51F8467A51414C004F4D288F5441C9A36BD8467A5141CD104E1C2B8F5441D6C53A9A467A5141913824592D8F5441320CCF42467A51417B908C2F308F5441A180A235467A5141E7C9F2B1328F5441E2C7FE2B467A5141523C3994358F544148DAD450467A51410074DEF1388F5441A200F68C467A51413680F8F93B8F5441F6285CBF467A514148E17A843E8F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963255 - 13606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000260000002D9C01376C20514123E6134F812155418EAFA6846C20514152AB5F0E81215541CDCCCC1C6D2051415C8FC2A57F21554114AE47416F205141295C8F327B215541D7A370FD6F20514185EB513877215541713D0A676F2051418FC2F598732155419A9999496F2051417B14AEB772215541C3F5287C6E205141000000A06C215541CDCCCCEC6E2051419A999959692155417B14AED76C205141713D0A576521554152B81E356A205141D7A3700D652155419A9999795F2051415C8FC2B56821554133333303562051419A9999696B215541AE47E11A54205141295C8F726C2155419A99990952205141666666266F215541713D0AA74F205141CDCCCC3C7421554148E17A244E2051419A99991977215541AE47E18A4B20514148E17AD479215541C3F528FC492051415C8FC2557B215541C3F528AC48205141666666467C2155411F85EBF14B20514148E17A24812155419A9999495020514114AE47B187215541D7A3706D52205141000000E08A215541C4D4D4A053205141118A80DE8C215541645C33CF532051410ED86CC98C2155418000B0EF53205141A13863B68C215541E31906F153205141DBD703B88C215541A5CC080D542051415EA830A58C215541E40F34175420514143F9D4A08C2155417A61BA8054205141C7C0C6578C215541C2CFFF9A542051416C4E6D478C21554165BFB86655205141B180DDBC8B21554177104E0D58205141DD206A0D8B2155410A81FC455D20514113C45F4689215541FDA6928F60205141EDCA9A3B882155414E6D1E24662051412836449084215541B408253E6B2051419AB370DA812155412D9C01376C20514123E6134F81215541
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000C8CFFF9A54205141684E6D478C2155417A61BA8054205141C7C0C6578C215541E40F34175420514143F9D4A08C215541A5CC080D542051415EA830A58C215541E31906F153205141DBD703B88C2155418000B0EF53205141A13863B68C215541645C33CF532051410ED86CC98C2155414CC5ACA453205141997A58E28C2155417E6113FD53205141B14DB66C8D21554114AE476154205141EC51B81E8E215541295C8FD254205141EC51B83E8F21554152B81E9555205141E17A147E912155417B14AE9756205141D7A3704D942155410AD7A3C059205141B81E858B9C215541C3F5287C5A20514185EB51C89D215541B81E855B5B205141CDCCCCBC9E2155417B14AE775C205141666666569F215541E17A14EE5D205141A4703DDA9F215541713D0A075F205141EC51B81EA021554185EB51586020514148E17A74A02155410AD7A3206220514185EB51E8A0215541B81E856B6320514148E17A54A1215541AE47E12A6B20514114AE47F196215541333333A370205141F6285C6F90215541000000C07620514114AE47518A2155418FC2F5587A205141A4703D0A87215541713D0A177320514185EB51A88521554152B81EB56F2051410000000085215541C3F528CC6D2051417B14AE2784215541666666966C205141D7A3704D832155410AD7A3706C205141000000F0812155414BF08AB46C205141B6FEC608812155412D9C01376C20514123E6134F81215541B408253E6B2051419AB370DA812155414E6D1E24662051412836449084215541FDA6928F60205141EDCA9A3B882155412DBCE08B602051411EA2C63C8821554160DBDA45602051414E04C26A8821554116B975B75E205141452F89E7882155410A81FC455D20514113C45F4689215541DFA355EC5B20514122F40ABC89215541FBCC9B3C58205141DD844E018B2155410F0A2D21582051412E3E96088B21554165BFB86655205141B180DDBC8B215541180D80AE542051419A7A4A3B8C215541C8CFFF9A54205141684E6D478C215541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>522470 - 56857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000008FC2F508C9D65041B81E859B5C7054415C8FC215C8D65041F6285C5F5C70544148E17AF48CD65041F6285CFF65705441713D0A6795D65041000000508A705441F6285CDF96D6504114AE47A1907054415C8FC2659AD65041CDCCCC1C90705441666666D69FD65041000000508F705441AE47E12AA4D65041D7A370AD8E70544114AE47C1A5D6504152B81EE58F7054410AD7A3D0AAD650415C8FC2C5937054419A999979AFD650418FC2F5589770544148E17AA4B3D65041AE47E18A9A7054417B14AE97B8D65041713D0A279A705441EC51B84EC4D65041B81E853B99705441295C8F62C4D65041AE47E1AA98705441EC51B88EC6D65041666666667C7054418FC2F508C9D65041B81E859B5C705441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000AE47E12AA4D65041D7A370AD8E705441F0F2FF8CA6D65041003B3B81907054410AD7A3D0AAD650415C8FC2C59370544147354BC9AED650417120B4D19670544148E17AA4B3D65041AE47E18A9A7054417B14AE97B8D65041713D0A279A705441EC51B84EC4D65041B81E853B99705441EC51B88EC6D65041666666667C705441701450E8C6D65041886FB3E877705441FFE172C292D650419D0666F37E705441F42C5BC593D6504143B56A4C83705441EABBFCF893D6504171BC5F2A84705441F6285CDF96D6504114AE47A190705441C1E0DD4D9BD650413EAAAAFA8F705441666666D69FD65041000000508F705441AE47E12AA4D65041D7A370AD8E705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524118 - 358308
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000E17A143EA2B75041CDCCCCBC352554415C8FC2E599B750413D0AD733352554415C8FC2D59AB75041F6285C6F582554410AD7A310A3B7504152B81EB554255441E17A143EA2B75041CDCCCCBC35255441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000000AD7A310A3B7504152B81EB55425544112A56AB1A2B75041B51CA0B3462554411B12143EA2B7504115C6CCBC35255441F2C5649E9FB7504110EFBC9135255441A8DBC2E599B7504186FFD73335255441FE83ED1D9AB75041095DB3723D255441531814BF9AB75041D976F51A55255441B884C2D59AB7504110995A6F58255441E5543E94A0B750413EB15AD5552554410AD7A310A3B7504152B81EB554255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524119 - 231492
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000003333336379B850417B14AEE7F3245441CDCCCCFC79B850415C8FC2B5F5245441C3F5288C7FB85041A4703D2A06255441295C8F0283B850413D0AD7A3122554419A9999D983B85041F6285C1F15255441CDCCCC6C8CB850418FC2F5081425544148E17A349CB85041713D0AC712255441713D0A77A1B850411F85EB5112255441F6285C0FA1B85041B81E852B102554411F85EB519EB85041E17A148EFF2454413D0AD7E39AB8504133333373FA245441333333D390B85041C3F528CCFA245441AE47E11A90B85041CDCCCC2CF424544185EB51F88FB85041000000E0F22454413333336379B850417B14AEE7F3245441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000DA2D21667CB850411B57C4D8FC245441C3F5288C7FB85041A4703D2A06255441DF7815BC82B850411F23ECA511255441553CA6F582B850411922A56912255441D8FEA14D8BB85041D740A73D0E25544172DD96F490B8504155E813AF0B255441411728AF97B85041A5ED25B9082554415F956E389FB8504126DC507E05255441646A4E999EB85041B60BF53E0125544191FE4E889EB850417199E2D700255441008AC3619EB850418AA527EEFF245441BB8120A59AB85041FC7D5D75FA245441A04CF8A09AB85041093C8275FA245441BB43C99B9AB85041190DB075FA245441155223D290B85041E6D7A8DCFA2454413CD9EE5286B85041E6D7A8DCFA2454419102153B7CB850413DD59F57FC245441DA2D21667CB850411B57C4D8FC245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524119 - 358557
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000003333336379B850417B14AEE7F3245441CDCCCCFC79B850415C8FC2B5F5245441C3F5288C7FB85041A4703D2A06255441295C8F0283B850413D0AD7A3122554419A9999D983B85041F6285C1F15255441CDCCCC6C8CB850418FC2F5081425544148E17A349CB85041713D0AC712255441713D0A77A1B850411F85EB5112255441F6285C0FA1B85041B81E852B102554411F85EB519EB85041E17A148EFF2454413D0AD7E39AB8504133333373FA245441333333D390B85041C3F528CCFA245441AE47E11A90B85041CDCCCC2CF424544185EB51F88FB85041000000E0F22454413333336379B850417B14AEE7F3245441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000DA2D21667CB850411B57C4D8FC245441C3F5288C7FB85041A4703D2A06255441DF7815BC82B850411F23ECA511255441553CA6F582B850411922A56912255441D8FEA14D8BB85041D740A73D0E25544172DD96F490B8504155E813AF0B255441411728AF97B85041A5ED25B9082554415F956E389FB8504126DC507E05255441646A4E999EB85041B60BF53E0125544191FE4E889EB850417199E2D700255441008AC3619EB850418AA527EEFF245441BB8120A59AB85041FC7D5D75FA245441A04CF8A09AB85041093C8275FA245441BB43C99B9AB85041190DB075FA245441155223D290B85041E6D7A8DCFA2454413CD9EE5286B85041E6D7A8DCFA2454419102153B7CB850413DD59F57FC245441DA2D21667CB850411B57C4D8FC245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524196 - 1849081
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002C0000000000008070B650415C8FC255B13D5441C3F528EC71B65041D7A370CDAC3D54418FC2F5E872B65041E17A148EA83D544152B81E3573B65041E17A147EA53D544114AE474173B650411F85EB21A23D5441C3F528DC72B65041C3F528EC9E3D54419A9999A972B6504152B81E059B3D5441A4703D6A71B65041666666C6953D5441D7A3704D6FB6504148E17AB48F3D5441EC51B8DE6DB650417B14AEA78B3D54418FC2F5586CB65041333333B38B3D544152B81E556BB65041666666968A3D54418FC2F5C869B650413D0AD7B3883D54415C8FC26569B65041F6285C0F873D544185EB51B869B65041713D0A87853D54418FC2F59867B65041CDCCCCCC833D54411F85EB9165B65041F6285CDF813D5441295C8FE263B65041AE47E1DA7F3D5441295C8FD261B65041A4703DEA813D54410000008061B650417B14AE27883D5441C3F5283C61B650415C8FC2458E3D54417B14AE6762B65041EC51B8FE913D54410000000064B6504152B81E25963D544185EB519865B6504185EB51589A3D5441C3F528BC68B65041713D0A87A13D54411F85EB5169B65041B81E856BA63D5441713D0AD768B65041295C8FC2AD3D54417B14AEF765B6504114AE4781AE3D544185EB510862B650410AD7A350B03D5441C3F5283C61B650410AD7A3D0B73D5441713D0AE75EB65041B81E85FBBA3D5441666666E65AB65041E17A143EBE3D544148E17A8459B650411F85EB41C13D54410AD7A3B05BB650417B14AE67C53D54418FC2F5385DB65041E17A149EC83D5441C3F5283C60B6504100000010C93D5441E17A14CE62B65041D7A370DDC83D5441F6285C6F64B6504148E17AA4C63D544148E17AF466B650415C8FC215C73D5441A4703D2A6AB6504152B81E25C23D5441CDCCCC7C6CB6504114AE4741BD3D5441A4703D6A6EB65041AE47E12AB83D5441666666F66FB650418FC2F548B33D54410000008070B650415C8FC255B13D54410103000000010000001B000000EC51B8BE70B650413D0AD773B33D54411F85EB216FB65041D7A3708DB93D5441AE47E13A72B65041C3F528BCB13D54410AD7A31073B6504152B81E15AF3D544148E17A8473B650419A9999E9AC3D5441A4703D1A7AB650417B14AE77B03D544114AE47A17AB65041E17A149EA93D5441B81E850B7AB65041EC51B80EA53D5441295C8F0279B65041A4703DAA9E3D5441F6285CFF78B65041D7A3701D9C3D54413D0AD72379B650410AD7A350983D5441295C8FD278B65041295C8FF2953D54411F85EBC177B65041C3F5281C943D54418FC2F57875B650415C8FC215913D5441F6285C5F74B650418FC2F588903D54415C8FC22573B65041EC51B87E903D544148E17AC471B65041CDCCCC5C913D5441295C8F1271B65041F6285CCF923D54415C8FC21572B6504100000070953D5441666666C672B650419A9999C9973D54410000004073B650419A9999F99A3D5441713D0A8773B65041000000F09E3D54411F85EBF173B65041F6285CFFA13D54411F85EBF173B650419A999979A53D54418FC2F59873B65041C3F528ACA83D544114AE47B172B65041F6285C1FAD3D5441EC51B8BE70B650413D0AD773B33D5441
+</a>
+
+<b>
+010600000001000000010300000001000000AC000000EC51B8CE6BB65041B81E85BB613D5441AE47E11A6AB650418FC2F5B8623D5441E17A148E69B65041C3F5280C663D5441AE47E1EA68B6504185EB5158683D5441CDCCCCFC67B65041D7A3706D6A3D544185EB510866B6504148E17A446E3D5441333333E364B65041D7A3705D703D54418FC2F53864B65041F6285CFF723D5441A4703D5A64B6504100000070753D54413D0AD79364B65041C3F528BC773D5441EC51B88E65B65041295C8F127B3D5441295C8F5266B65041B81E856B7D3D54413333331367B6504185EB51387F3D5441EC51B84E68B65041666666267F3D54417B14AE776AB65041D7A370CD7F3D544148E17A046CB65041CDCCCCFC803D5441E17A143E6DB65041A4703D6A823D54417B14AE676CB650418FC2F5E8853D5441E17A14EE6CB65041713D0AB7863D544185EB51486EB65041EC51B87E893D54417B14AEF76FB65041A4703D1A8C3D54411F85EB8171B65041D7A370ED8D3D5441B81E855B72B65041A4703DCA8E3D5441D7A370FD72B650415C8FC2A58E3D54417B14AEC773B65041D7A3703D8E3D54418FC2F57875B650415C8FC215913D5441F6285C5F74B650418FC2F588903D54415C8FC22573B65041EC51B87E903D544148E17AC471B65041CDCCCC5C913D5441295C8F1271B65041F6285CCF923D54414CE63EEF71B6504197920D0C953D5441666666C672B650419A9999C9973D544155B71ABE73B6504172A890199F3D54418ECF9F2174B6504143E8EDD1A43D5441144D52CC73B65041377058C3A83D5441397C4CD972B65041C0839C7BAC3D54410F78E9E471B65041D0229FB7AF3D5441713D0A6770B65041C3F5282CB53D54411F85EB216FB65041D7A3708DB93D5441AEC24BCB6AB65041ED16E981C23D5441988001EE6CB65041726E5676C23D5441E17A149E6CB6504152B81EA5C33D5441333333936BB650411F85EB31C63D54413D0AD7036BB6504185EB5128C93D54419A9999A96BB65041A4703D8AD33D5441666666A66BB65041F6285CAFD63D5441A4703DFA68B6504133333353D93D54419A99998968B65041E17A146EDB3D5441C3F5280C69B650419A999949DE3D54415F153FBC69B65041516B3BF1DF3D54419FD3853E6AB6504126D91394E03D54418D7D49716DB6504117AE752DE23D5441AF15C25B72B6504149FD2F59E13D544179130DF47BB650417CE79D0BE03D54411A18DA2D83B650412904B2FADE3D54411027EAD986B65041C22B8F90DE3D54417A9E07D089B650411BD5CC8EDD3D5441F0A50FA68BB6504197A22652DD3D5441A2FCD1A78CB650418E3DDAD8DC3D544124B61C038DB650419689CB9FDC3D54417B14AE078DB65041CDCCCC5CDC3D544152B81EC58DB650413D0AD7B3D93D54417B14AE078DB65041C3F5284CD83D5441EC51B82E8BB65041AE47E1DAD73D5441B81E85DB87B650410AD7A300D83D54415C8FC2D582B65041666666B6D53D54413D0AD7C380B6504166666646D33D5441AE47E1BA7FB6504148E17A64D03D54419A99991980B65041A4703D1ACE3D5441CDCCCCFC80B65041B81E854BCB3D5441666666B682B65041EC51B8DEC83D5441295C8F9283B650411F85EB01C73D5441EB63D38883B65041FD689B09C53D5441295C8FB281B650410AD7A3D0C13D54418FC2F57884B65041C3F5285CB93D54413CFB04F682B6504153E02E7BB53D54410000002087B650413D0AD773B53D544114AE476188B6504152B81E85B53D54410A65A1FF89B65041844846F6B53D5441216E16678CB650416D282B51B73D5441D2246BB58CB65041A551BB5DB83D5441F6285C3F8BB65041713D0A57B93D5441AE47E19A8BB650418FC2F5D8B93D54416C783AAA8CB650410BA4DB76BA3D54417B5DB1268EB65041C099B733BA3D544195A5ADFC8FB65041FF40561DBA3D5441A8C9ABE790B65041D37A4B6AB93D5441243CE7A591B65041B1B440B7B83D5441CA8FB69A91B65041043D73D7B73D5441295C8FF290B650418FC2F5D8B63D54413D0AD7D38FB6504166666656B63D5441B81E859B8EB650418FC2F578B53D54410AD7A3E08CB65041713D0A97B33D5441A4703DFA8CB65041713D0A67B13D5441B81E853B8DB65041713D0A07B03D5441B81E856B8CB6504148E17AB4AE3D5441333333A38AB65041F6285C3FAE3D5441713D0AA788B6504114AE47F1AD3D5441D7A3702D87B65041F6285CDFAC3D5441B81E85AB86B6504133333373AB3D54419A9999E986B650413D0AD713AA3D54417B14AE3786B6504148E17AF4A83D5441D7A3706D85B6504166666666A63D5441CDCCCCAC84B65041666666D6A33D5441E17A140E83B65041CDCCCCACA03D5441333333D384B650411F85EB71A23D54411F85EB7186B65041F6285C1FA33D54413333332388B6504114AE4711A23D54410AD7A34088B65041F6285CFF9F3D54410AD7A3A088B65041CDCCCC8C9D3D5441713D0A9788B65041D7A3705D9B3D5441CDCCCCFC87B650411F85EB41993D54415C8FC28586B650413D0AD773963D5441CDCCCC5C85B65041D7A3707D943D5441C3F5286C85B650410AD7A320923D5441EC51B84E86B6504185EB51788F3D5441E17A146E87B650418FC2F5488D3D544148E17A2489B65041000000C08B3D54410000003089B6504152B81E45893D5441F6285CAF87B65041713D0A77873D544185EB516886B650419A9999A9853D5441E17A142E86B6504185EB5128843D544152B81EB586B6504148E17A94823D5441B81E853B87B6504100000040803D5441F6285CAF87B65041B81E854B7E3D544152B81E1587B650410AD7A3307C3D5441E17A145E86B65041D7A3703D7A3D5441CDCCCC7C85B65041F6285CCF773D544149FC067584B65041C2323442773D54413C252F0485B6504100C86ACA753D5441829A90F284B65041CF42699C743D544135204AF284B65041BF3479C3733D5441C8109BBC84B650417CDE4393723D5441AFDDA80984B65041C364CBE5703D54414DABB65683B650416D09B1A36F3D54413578C4A382B6504130CCF4CC6E3D54411CD70CEB81B65041AC1AA8EC6D3D5441A4703DEA82B65041666666C66D3D5441F6285CBF80B65041AE47E1BA6B3D5441F6285C4F7FB6504185EB51386B3D5441E17A14FE7CB65041CDCCCC5C6B3D5441B81E85EB7BB650411F85EB916A3D54413D0AD7B37AB650417B14AED7693D544150D54C137AB6504195E32615683D544102B5634A78B6504149AFB417673D54414466999076B6504188182E12653D5441468A77B676B65041C8A58532633D544154CE460B78B650416524F5F6613D54417032078F7AB65041142FF05B623D54418F0262847DB65041616CB142623D5441FA37497D7FB65041069F77C4613D544166EBAFDE80B65041C8CD6EBE603D54410DA0F6F780B65041F016D91A5F3D54412D4F556C80B65041871A7D395C3D54410AD7A3D075B65041333333E3603D54416666665676B650419A999919543D5441000000D080B650411F85EB114D3D5441457D720E84B65041F7ACA518483D5441E17A14AE77B650410AD7A320463D544148E17AB476B65041D7A3709D483D54415C8FC2C574B650418FC2F5E84A3D544148E17A7474B65041B81E853B4D3D5441CDCCCC4C74B6504166666686503D544185EB517873B65041A4703D8A523D5441AE47E11A72B6504133333393543D5441B81E85CB6FB650415C8FC235573D54410AD7A3E06EB65041AE47E19A593D54413D0AD7536DB6504148E17AC45B3D5441AE47E11A6CB65041C3F528AC5D3D5441AE47E18A6BB65041C3F528FC5E3D54411F85EBF16BB6504185EB51C8603D5441EC51B8CE6BB65041B81E85BB613D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524493 - 2885007
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000500000003D0AD7535CA15041295C8F02C62454413D0AD7B35BA15041000000B0C5245441A4703D1A59A1504185EB5158C42454410000009055A15041B81E853BC22454415C8FC2E549A15041B81E85CBBB2454417B14AE973FA15041A4703D9AB724544152B81E753CA15041D7A370BDB62454410AD7A3E039A1504185EB5128B624544114AE47B137A15041666666A6B62454418FC2F54834A15041B81E855BB624544185EB51A82FA15041333333E3B22454411F85EB412BA150415C8FC2F5AD2454411F85EB712BA15041AE47E19AB524544185EB51B82AA150415C8FC2B5B8245441AE47E1FA25A1504185EB5178C22454419A9999B925A15041C3F5281CC4245441C3F5280C27A150410AD7A380C5245441AE47E12A2EA150411F85EB51C6245441713D0AA731A15041AE47E1EAC62454417B14AE4735A150411F85EB21C8245441F6285CCF38A15041295C8F22CA245441C3F5288C3BA15041B81E85ABCC2454419A9999193EA150413D0AD7B3CF2454415C8FC2153FA150413D0AD7C3CF2454410000008040A1504166666666CF2454410AD7A36040A1504100000030CE245441F6285C4F41A150418FC2F548CC245441E17A14CE42A15041EC51B83ECC2454418FC2F53844A15041A4703D8ACD245441EC51B8DE44A15041E17A146ECE245441000000D045A150418FC2F588D2245441713D0AD747A150415C8FC2C5D2245441B81E852B47A1504152B81E25D724544185EB51683FA15041EC51B8FED5245441F6285CCF34A15041CDCCCC3CD62454419A9999D934A15041713D0AE7D424544152B81EA53BA15041295C8FF2D1245441C3F5287C3BA15041B81E85DBD02454413D0AD7B33CA150417B14AEB7CF245441E17A14BE3AA150411F85EB61CD245441295C8F1238A1504185EB51F8CA245441EC51B8CE34A150419A999919C9245441C3F5287C31A150410AD7A300C8245441295C8F122EA15041C3F5286CC724544185EB510829A150419A9999C9C624544148E17A5427A15041D7A3707DCE2454410AD7A31022A1504185EB5158CD245441D7A3703D20A15041295C8FF2CC245441C3F528FC1FA15041666666C6CD24544152B81E751FA1504152B81E75D0245441000000601FA15041EC51B88ED4245441AE47E11A26A150417B14AE77D9245441B81E853B27A15041E17A14AEDA2454419A99996925A1504148E17A04DD245441F6285C3F23A15041C3F528DCE324544185EB519823A15041C3F5280CEB2454418FC2F5F826A15041EC51B84EEB24544152B81E8535A1504185EB5138EB24544148E17A5439A1504100000000EC2454413D0AD71342A1504152B81EC5EE24544185EB51284FA15041666666E6F4245441E17A143E50A1504185EB5168F2245441A4703D4A54A15041B81E85FBED2454419A9999B957A15041E17A14CEEC24544152B81E155DA15041CDCCCC1CEC245441E17A146E66A15041C3F528ECED245441AE47E15A69A15041CDCCCC4CEB2454410AD7A3C06BA1504152B81E55E82454419A9999196CA150418FC2F518E42454417B14AE076CA15041CDCCCCFCDF245441C3F528DC6BA150419A9999F9DB245441AE47E1FA6BA15041295C8F32D6245441666666E66BA150415C8FC245D324544152B81E856AA150411F85EBB1C9245441295C8FF267A150413D0AD7A3C9245441A4703D6A64A15041AE47E1CAC924544148E17A2462A15041333333B3CA245441AE47E1BA5CA15041F6285C5FCD245441333333535CA15041CDCCCC0CC82454413D0AD7535CA15041295C8F02C624544105000000A4703D2A3FA15041E17A148ED924544148E17A343FA150419A9999F9D724544152B81EF541A15041EC51B80ED8245441F6285CFF41A15041CDCCCCACD9245441A4703D2A3FA15041E17A148ED9245441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000853705382DA15041872C0E28B02454419A993A932DA1504168D4328EB02454414CA4816031A15041448BBF24AD24544182438F162FA1504193FCDC06AA245441C3F528BC2DA1504166666626A824544148E17AC42CA15041EC51B8CEA6245441F6285C7F27A15041CDCCCCCCA4245441728A139726A15041DD829092A4245441017112DC25A15041A7EB4460A5245441F4870A4626A150417E353F40A724544162A61DA327A1504198F7CA64A92454419A99999929A150410AD7A3F0AA2454411F85EBB12AA1504185EB51D8AB2454411F85EB412BA150415C8FC2F5AD245441853705382DA15041872C0E28B0245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524493 - 3497589
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000500000003D0AD7535CA15041295C8F02C62454413D0AD7B35BA15041000000B0C5245441A4703D1A59A1504185EB5158C42454410000009055A15041B81E853BC22454415C8FC2E549A15041B81E85CBBB2454417B14AE973FA15041A4703D9AB724544152B81E753CA15041D7A370BDB62454410AD7A3E039A1504185EB5128B624544114AE47B137A15041666666A6B62454418FC2F54834A15041B81E855BB624544185EB51A82FA15041333333E3B22454411F85EB412BA150415C8FC2F5AD2454411F85EB712BA15041AE47E19AB524544185EB51B82AA150415C8FC2B5B8245441AE47E1FA25A1504185EB5178C22454419A9999B925A15041C3F5281CC4245441C3F5280C27A150410AD7A380C5245441AE47E12A2EA150411F85EB51C6245441713D0AA731A15041AE47E1EAC62454417B14AE4735A150411F85EB21C8245441F6285CCF38A15041295C8F22CA245441C3F5288C3BA15041B81E85ABCC2454419A9999193EA150413D0AD7B3CF2454415C8FC2153FA150413D0AD7C3CF2454410000008040A1504166666666CF2454410AD7A36040A1504100000030CE245441F6285C4F41A150418FC2F548CC245441E17A14CE42A15041EC51B83ECC2454418FC2F53844A15041A4703D8ACD245441EC51B8DE44A15041E17A146ECE245441000000D045A150418FC2F588D2245441713D0AD747A150415C8FC2C5D2245441B81E852B47A1504152B81E25D724544185EB51683FA15041EC51B8FED5245441F6285CCF34A15041CDCCCC3CD62454419A9999D934A15041713D0AE7D424544152B81EA53BA15041295C8FF2D1245441C3F5287C3BA15041B81E85DBD02454413D0AD7B33CA150417B14AEB7CF245441E17A14BE3AA150411F85EB61CD245441295C8F1238A1504185EB51F8CA245441EC51B8CE34A150419A999919C9245441C3F5287C31A150410AD7A300C8245441295C8F122EA15041C3F5286CC724544185EB510829A150419A9999C9C624544148E17A5427A15041D7A3707DCE2454410AD7A31022A1504185EB5158CD245441D7A3703D20A15041295C8FF2CC245441C3F528FC1FA15041666666C6CD24544152B81E751FA1504152B81E75D0245441000000601FA15041EC51B88ED4245441AE47E11A26A150417B14AE77D9245441B81E853B27A15041E17A14AEDA2454419A99996925A1504148E17A04DD245441F6285C3F23A15041C3F528DCE324544185EB519823A15041C3F5280CEB2454418FC2F5F826A15041EC51B84EEB24544152B81E8535A1504185EB5138EB24544148E17A5439A1504100000000EC2454413D0AD71342A1504152B81EC5EE24544185EB51284FA15041666666E6F4245441E17A143E50A1504185EB5168F2245441A4703D4A54A15041B81E85FBED2454419A9999B957A15041E17A14CEEC24544152B81E155DA15041CDCCCC1CEC245441E17A146E66A15041C3F528ECED245441AE47E15A69A15041CDCCCC4CEB2454410AD7A3C06BA1504152B81E55E82454419A9999196CA150418FC2F518E42454417B14AE076CA15041CDCCCCFCDF245441C3F528DC6BA150419A9999F9DB245441AE47E1FA6BA15041295C8F32D6245441666666E66BA150415C8FC245D324544152B81E856AA150411F85EBB1C9245441295C8FF267A150413D0AD7A3C9245441A4703D6A64A15041AE47E1CAC924544148E17A2462A15041333333B3CA245441AE47E1BA5CA15041F6285C5FCD245441333333535CA15041CDCCCC0CC82454413D0AD7535CA15041295C8F02C624544105000000A4703D2A3FA15041E17A148ED924544148E17A343FA150419A9999F9D724544152B81EF541A15041EC51B80ED8245441F6285CFF41A15041CDCCCCACD9245441A4703D2A3FA15041E17A148ED9245441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000853705382DA15041872C0E28B02454419A993A932DA1504168D4328EB02454414CA4816031A15041448BBF24AD24544182438F162FA1504193FCDC06AA245441C3F528BC2DA1504166666626A824544148E17AC42CA15041EC51B8CEA6245441F6285C7F27A15041CDCCCCCCA4245441728A139726A15041DD829092A4245441017112DC25A15041A7EB4460A5245441F4870A4626A150417E353F40A724544162A61DA327A1504198F7CA64A92454419A99999929A150410AD7A3F0AA2454411F85EBB12AA1504185EB51D8AB2454411F85EB412BA150415C8FC2F5AD245441853705382DA15041872C0E28B0245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524611 - 231531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000180000003D0AD743E4AD5041D7A3704D8D275441713D0A37F2AD5041E17A14FEA5275441EC51B8EEF5AD504166666656AC27544114AE47910AAE5041B81E856BA72754415C8FC2350BAE5041F6285C3FA7275441C3F5288C0AAE50415C8FC2C5A627544148E17AE408AE50419A999939A3275441C3F528CC08AE504185EB51B8A027544185EB513807AE5041C3F5289CA0275441333333A306AE5041EC51B87EA027544114AE47F105AE5041C3F528CC9F2754411F85EBE105AE5041EC51B8DE9E2754418FC2F55806AE50413D0AD7F39C2754418FC2F52807AE504152B81EE59C27544185EB51A809AE50419A9999399A2754417B14AE270CAE5041A4703D8A9827544152B81E2510AE50419A9999A99827544185EB511810AE5041EC51B8BE902754413D0AD76310AE5041B81E85DB8C275441713D0A9711AE504152B81E658127544148E17AD4D9AD504185EB51A88527544133333303DAAD504185EB51E88627544133333303DBAD5041AE47E1CA8F2754413D0AD743E4AD5041D7A3704D8D2754411300000048E17AC400AE504152B81E559A275441EC51B8DE00AE504114AE47D19927544114AE472101AE50415C8FC22599275441F6285CBF01AE5041666666D698275441E17A145E02AE5041B81E85BB98275441CDCCCCFC02AE5041AE47E10A992754411F85EB6103AE504152B81E8599275441F6285C7F03AE5041295C8FF299275441295C8FC203AE504152B81E559A275441E17A14BE04AE5041AE47E16A9B275441E17A14BE04AE50413D0AD7239C2754411F85EB1104AE5041666666169C275441713D0A1703AE5041295C8FC29C27544114AE475101AE5041A4703DDA9C275441E17A142E01AE5041B81E854B9C2754417B14AE9701AE5041EC51B8EE9B2754410000007001AE504152B81E859B275441C3F528EC00AE5041666666E69A27544148E17AC400AE504152B81E559A275441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006FB17A84D3AD504121A1ADF79F27544103151FD5D5AD50414F15711DA427544185EB51F8D6AD50411F85EB81A5275441666666E6D7AD5041295C8F02A7275441EC51B85ED8AD5041EC51B89EA8275441E17A148ED9AD5041666666C6A92754416C1C39BAD9AD504123699AE4A9275441060DE2FADAAD50415811FFBFAA275441D68A7BB4DBAD5041D5AF3DBAAB275441C1781101DCAD504198B1C8D6AB275441FBFDEA61DCAD5041C09AE0FAAB27544175187CF4DEAD5041745D7AB4AE2754417DC93C67DFAD5041C128AA49AF27544114AE47A1DFAD504152B81E95AF275441513A3D0AE0AD50410E02A330B12754418C0FB7EEF5AD504107936656AC275441A53F0937F2AD5041104115FEA527544126356248EBAD50418F0821B9992754410DD7B902E9AD50416650A8B395275441F920D743E4AD504113CC704D8D27544197D4BC26E3AD5041136E2A9A8D27544133333303DBAD5041AE47E1CA8F275441AE47E14ACCAD50419A9999D993275441A4703DAACDAD5041295C8F1296275441F6285C0FD0AD50413D0AD7C39827544152B81E45D2AD50415C8FC2F59C2754416FB17A84D3AD504121A1ADF79F275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524611 - 368410
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000180000003D0AD743E4AD5041D7A3704D8D275441713D0A37F2AD5041E17A14FEA5275441EC51B8EEF5AD504166666656AC27544114AE47910AAE5041B81E856BA72754415C8FC2350BAE5041F6285C3FA7275441C3F5288C0AAE50415C8FC2C5A627544148E17AE408AE50419A999939A3275441C3F528CC08AE504185EB51B8A027544185EB513807AE5041C3F5289CA0275441333333A306AE5041EC51B87EA027544114AE47F105AE5041C3F528CC9F2754411F85EBE105AE5041EC51B8DE9E2754418FC2F55806AE50413D0AD7F39C2754418FC2F52807AE504152B81EE59C27544185EB51A809AE50419A9999399A2754417B14AE270CAE5041A4703D8A9827544152B81E2510AE50419A9999A99827544185EB511810AE5041EC51B8BE902754413D0AD76310AE5041B81E85DB8C275441713D0A9711AE504152B81E658127544148E17AD4D9AD504185EB51A88527544133333303DAAD504185EB51E88627544133333303DBAD5041AE47E1CA8F2754413D0AD743E4AD5041D7A3704D8D2754411300000048E17AC400AE504152B81E559A275441EC51B8DE00AE504114AE47D19927544114AE472101AE50415C8FC22599275441F6285CBF01AE5041666666D698275441E17A145E02AE5041B81E85BB98275441CDCCCCFC02AE5041AE47E10A992754411F85EB6103AE504152B81E8599275441F6285C7F03AE5041295C8FF299275441295C8FC203AE504152B81E559A275441E17A14BE04AE5041AE47E16A9B275441E17A14BE04AE50413D0AD7239C2754411F85EB1104AE5041666666169C275441713D0A1703AE5041295C8FC29C27544114AE475101AE5041A4703DDA9C275441E17A142E01AE5041B81E854B9C2754417B14AE9701AE5041EC51B8EE9B2754410000007001AE504152B81E859B275441C3F528EC00AE5041666666E69A27544148E17AC400AE504152B81E559A275441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006FB17A84D3AD504121A1ADF79F27544103151FD5D5AD50414F15711DA427544185EB51F8D6AD50411F85EB81A5275441666666E6D7AD5041295C8F02A7275441EC51B85ED8AD5041EC51B89EA8275441E17A148ED9AD5041666666C6A92754416C1C39BAD9AD504123699AE4A9275441060DE2FADAAD50415811FFBFAA275441D68A7BB4DBAD5041D5AF3DBAAB275441C1781101DCAD504198B1C8D6AB275441FBFDEA61DCAD5041C09AE0FAAB27544175187CF4DEAD5041745D7AB4AE2754417DC93C67DFAD5041C128AA49AF27544114AE47A1DFAD504152B81E95AF275441513A3D0AE0AD50410E02A330B12754418C0FB7EEF5AD504107936656AC275441A53F0937F2AD5041104115FEA527544126356248EBAD50418F0821B9992754410DD7B902E9AD50416650A8B395275441F920D743E4AD504113CC704D8D27544197D4BC26E3AD5041136E2A9A8D27544133333303DBAD5041AE47E1CA8F275441AE47E14ACCAD50419A9999D993275441A4703DAACDAD5041295C8F1296275441F6285C0FD0AD50413D0AD7C39827544152B81E45D2AD50415C8FC2F59C2754416FB17A84D3AD504121A1ADF79F275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524777 - 357179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000530000000AD7A3907BB95041A4703DBAE42D544185EB510871B9504185EB5138E02D5441713D0A9769B950415C8FC285DC2D54415C8FC2F567B95041A4703D2ADB2D5441333333E365B95041EC51B8CED92D5441713D0AA764B95041EC51B8DED92D5441AE47E1EA5CB9504114AE47E1E22D544148E17AF45DB950415C8FC2C5E32D5441E17A149E52B95041D7A3703D032E54413D0AD7C34FB9504133333353092E5441EC51B85E4EB95041295C8F520B2E5441D7A3705D47B9504114AE47A1022E54413D0AD7733EB950411F85EB91F72D544185EB51182DB95041B81E85ABFF2D54410AD7A3D022B95041666666B6072E54415C8FC23522B95041AE47E18A072E5441713D0AD71CB950410AD7A3000D2E54410AD7A3601AB95041295C8F42102E544114AE473117B950413D0AD733152E5441D7A3708D13B95041F6285C3F1D2E5441333333B315B95041666666361F2E5441EC51B8AE19B95041EC51B8EE1F2E5441000000E01CB95041295C8F82202E544152B81ED51EB950413D0AD753202E5441AE47E1AA20B95041EC51B89E1F2E5441A4703DFA21B9504148E17AC41E2E54418FC2F58822B95041EC51B8AE1D2E5441295C8F0223B95041F6285C0F142E5441713D0A4728B95041E17A141E142E54413D0AD74328B95041E17A143E152E5441EC51B82E28B95041F6285CCF1C2E54415C8FC20527B950418FC2F5E81E2E54418FC2F5C824B95041333333D31F2E54417B14AE8724B95041B81E850B212E5441F6285C1F27B95041F6285C3F212E5441B81E85BB27B95041C3F528AC222E54418FC2F5C827B9504114AE47F1232E5441A4703DAA26B950419A999959272E5441A4703DDA25B95041E17A142E292E54419A99990925B950417B14AED7292E54411F85EBA124B95041713D0A372B2E5441D7A3706D24B95041AE47E19A2D2E5441B81E85EB23B9504114AE47F12F2E5441CDCCCC2C24B95041EC51B8CE302E544185EB512823B950411F85EB91312E544148E17A9421B95041AE47E13A322E5441A4703DDA1FB95041C3F5287C322E54419A9999391EB9504185EB5148322E544148E17AF41CB95041713D0A07322E5441D7A3709D1AB95041E17A145E312E54410AD7A39017B95041F6285C6F2F2E54419A99996914B950417B14AEA7302E54410000007014B95041E17A145E322E5441000000C012B950415C8FC225342E5441713D0A570EB950410AD7A370342E5441EC51B8FE0CB950415C8FC285402E5441E17A14AE0DB95041A4703D6A412E5441F6285CDF13B95041AE47E16A492E5441A4703DBA17B950419A999959512E5441D7A3702D19B9504152B81E75512E5441E17A14DE34B95041AE47E1AA532E54415C8FC23559B95041CDCCCC5C4D2E5441EC51B8EE59B950413D0AD793472E5441000000D05BB95041E17A14FE432E5441E17A140E5FB95041A4703D9A412E5441713D0AB75EB950413D0AD753282E54415C8FC2D560B950413D0AD7F3202E54418FC2F5D85CB950410AD7A300212E5441B81E85DB5AB95041666666F61F2E54418FC2F5B85AB9504152B81E051E2E5441333333C35BB95041D7A3701D1D2E54419A9999295DB95041E17A14CE1B2E54415C8FC2D55EB95041000000A01B2E5441713D0A2762B95041E17A145E1C2E54411F85EB1164B95041333333B3152E5441F6285C8F67B95041333333F30C2E5441295C8FB26CB9504133333383042E5441CDCCCC4C6FB95041A4703DEA002E544185EB51E871B950411F85EBB1FC2D54411F85EB4175B95041A4703D4AF82D5441713D0A277BB9504100000060EC2D5441EC51B8EE7CB9504114AE4741E62D54410AD7A3907BB95041A4703DBAE42D5441
+</a>
+
+<b>
+010600000001000000010300000001000000440000005C8FC23559B95041CDCCCC5C4D2E5441EC51B8EE59B950413D0AD793472E5441000000D05BB95041E17A14FE432E5441E17A140E5FB95041A4703D9A412E5441645671F15EB95041A93E6549392E544177A4B4E95EB950418ADF3B0A372E5441CA2B9DE65EB95041BB496724362E5441237408E65EB95041FEE437F9352E5441679C04E45EB950412D0F6D63352E5441D0490EDE5EB950415DED34A8332E544186C7FADC5EB95041FC133458332E54418D9F14D75EB950412EBCADA1312E544116CC0ED75EB95041CAA3FC9F312E5441B08CF0D65EB9504191153497312E5441010138D65EB95041BC489D61312E5441287F8BD45EB9504175D02EE5302E54412C6ED2D35EB95041794F71AF302E544132A3E5D05EB95041665F01D62F2E5441D8ECCECF5EB95041B06312852F2E54418EC8FBC25EB95041896CB3CB2B2E54413A21F6C15EB95041D18DB87F2B2E5441713D0AB75EB950413D0AD753282E54415C8FC2D560B950413D0AD7F3202E54418FC2F5D85CB950410AD7A300212E5441B81E85DB5AB95041666666F61F2E54418FC2F5B85AB9504152B81E051E2E54419A9999295DB95041E17A14CE1B2E54415C8FC2D55EB95041000000A01B2E5441713D0A2762B95041E17A145E1C2E54411F85EB1164B95041333333B3152E54418BCE26F165B95041A929B001112E5441E6BE0B2F67B95041CE9C01460D2E5441295C8FB26CB9504133333383042E544185EB51E871B950411F85EBB1FC2D54411F85EB4175B95041A4703D4AF82D5441229603AC75B950413F67BB4EF72D5441713D0A277BB9504100000060EC2D544135486DE47CB950413179AB64E62D54410AD7A3907BB95041A4703DBAE42D5441113A073779B950416F09C6B8E32D54414BAD5A4878B95041ACA779EEE52D54418A87DECB70B95041EACB71C7F12D5441330330C56EB95041B741311CF52D54417C5A0BFC6CB95041B4C1D121F82D544188AA4ED468B95041B85E9196FE2D54413EE386F867B95041E1C8AA8B002E54412A46088F67B95041F275DD55012E54416000655C65B950412EBD4537052E5441087CB65563B950419B0E8FC9082E544142567BE461B95041325A05AC0B2E5441F98EB30861B95041D98513CD0D2E54414706F70060B9504142B7F49D102E5441A6BA801E5DB95041A2F8CADA192E544114FB95295AB95041446F905D1C2E5441FEC1D77159B95041CCD2D0741E2E54418230FF675AB95041700E93F6202E5441B6F7C6435BB95041C372D93B222E54417730FF675AB950418CF84CF1252E5441E6D18BD259B95041B7928208292E54415F73183D59B9504197A5C0C62C2E5441D814A5A758B9504171D86646312E54412F29670958B9504169786F0D352E544127E0F4A757B950414CBCC9FE3B2E54417AA9F78657B950419A37B5F13C2E54411638346057B95041BED79278422E54416C96C95057B950415C855C32442E5441F4E4331157B950410FE2F7BB4D2E54415C8FC23559B95041CDCCCC5C4D2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975328 - 1755529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441
+</a>
+
+<b>
+0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975328 - 3298215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441
+</a>
+
+<b>
+0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525036 - 1873675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000040000000103000000010000000E00000014AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441D7A3705D82B450411F85EBB16B3054413333331370B4504148E17A443F305441D7A370ED6EB45041A4703D6A3F3054413D0AD74366B45041F6285C2F42305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D3054410103000000010000001B000000A4703D7A21B45041666666C63930544148E17A0421B450418FC2F568383054415C8FC2F520B4504152B81EA5363054416666660622B45041A4703DDA263054415C8FC2D524B45041E17A143E1B3054411F85EB3126B450418FC2F588133054410AD7A3001DB45041713D0AD71230544152B81E9518B450415C8FC2551930544114AE47B104B450413333338314305441F6285CFFFAB3504114AE47D110305441A4703D3AFAB35041C3F5288C133054415C8FC255F9B350413D0AD7D3153054410AD7A340F9B350419A999989173054413D0AD753F9B35041D7A370CD193054415C8FC2D5F8B35041333333531B305441CDCCCCFCF7B35041D7A370ED1C305441C3F5282CF7B350411F85EB111E3054415C8FC235F6B350418FC2F5D81E305441AE47E1BAF4B3504114AE47E11F3054419A9999A9F2B350415C8FC2F521305441D7A370CD06B45041F6285C9F2A30544114AE47B11CB4504152B81E0536305441E17A14EE1AB4504152B81ED53B3054419A9999B919B450413333337344305441666666D61AB45041AE47E16A47305441666666B61CB45041B81E858B49305441A4703D7A21B45041666666C639305441010300000001000000090000005C8FC2D567B45041EC51B83EFF2F54418FC2F5C865B45041C3F5287CFE2F54413D0AD75363B4504166666616FE2F5441666666564BB45041B81E857BFF2F54418FC2F5383AB45041295C8F22183054410AD7A3003AB450419A99997918305441000000403AB450413D0AD753183054417B14AE076DB45041333333A30C3054415C8FC2D567B45041EC51B83EFF2F544101030000000100000010000000713D0A477DB4504148E17A2439305441A4703D5A7DB450410AD7A3B037305441666666267DB450410AD7A33036305441E17A148E73B4504148E17A741D305441D7A3700D28B45041F6285C8F33305441E17A14FE23B4504114AE47E139305441000000B023B45041666666363B305441A4703DFA1FB450418FC2F5D841305441E17A147E24B450417B14AED74030544185EB511861B450418FC2F56830305441E17A14BE65B45041B81E85AB4130544185EB51D86FB45041EC51B89E3E3054410AD7A3107AB4504148E17AC43B305441000000C07BB450415C8FC2053B305441AE47E1BA7CB4504152B81E153A305441713D0A477DB4504148E17A2439305441
+</a>
+
+<b>
+0106000000010000000103000000010000002400000085EB511861B450418FC2F56830305441E17A14BE65B45041B81E85AB413054415C8ED6E169B4504143BF926B4030544135BDAF126AB4504141E32EF840305441E7E3473366B45041D33FEF3342305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441D7A3705D82B450411F85EBB16B3054413333331370B4504148E17A443F305441D7A370ED6EB45041A4703D6A3F30544168F0E2256AB45041DA7CC8F140305441EDDB34FE69B45041E5536C624030544185EB51D86FB45041EC51B89E3E3054410AD7A3107AB4504148E17AC43B305441000000C07BB450415C8FC2053B305441AE47E1BA7CB4504152B81E153A305441713D0A477DB4504148E17A2439305441A4703D5A7DB450410AD7A3B037305441666666267DB450410AD7A33036305441E17A148E73B4504148E17A741D305441169DDA1F5CB450418959975024305441F44DE7F059B45041CC713CF424305441D7A3700D28B45041F6285C8F33305441E17A14FE23B4504114AE47E139305441000000B023B45041666666363B305441A4703DFA1FB450418FC2F5D841305441E17A147E24B450417B14AED740305441F13AB0345DB45041627CED763130544185EB511861B450418FC2F56830305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525036 - 3442795
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000040000000103000000010000000E00000014AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441D7A3705D82B450411F85EBB16B3054413333331370B4504148E17A443F305441D7A370ED6EB45041A4703D6A3F3054413D0AD74366B45041F6285C2F42305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D3054410103000000010000001B000000A4703D7A21B45041666666C63930544148E17A0421B450418FC2F568383054415C8FC2F520B4504152B81EA5363054416666660622B45041A4703DDA263054415C8FC2D524B45041E17A143E1B3054411F85EB3126B450418FC2F588133054410AD7A3001DB45041713D0AD71230544152B81E9518B450415C8FC2551930544114AE47B104B450413333338314305441F6285CFFFAB3504114AE47D110305441A4703D3AFAB35041C3F5288C133054415C8FC255F9B350413D0AD7D3153054410AD7A340F9B350419A999989173054413D0AD753F9B35041D7A370CD193054415C8FC2D5F8B35041333333531B305441CDCCCCFCF7B35041D7A370ED1C305441C3F5282CF7B350411F85EB111E3054415C8FC235F6B350418FC2F5D81E305441AE47E1BAF4B3504114AE47E11F3054419A9999A9F2B350415C8FC2F521305441D7A370CD06B45041F6285C9F2A30544114AE47B11CB4504152B81E0536305441E17A14EE1AB4504152B81ED53B3054419A9999B919B450413333337344305441666666D61AB45041AE47E16A47305441666666B61CB45041B81E858B49305441A4703D7A21B45041666666C639305441010300000001000000090000005C8FC2D567B45041EC51B83EFF2F54418FC2F5C865B45041C3F5287CFE2F54413D0AD75363B4504166666616FE2F5441666666564BB45041B81E857BFF2F54418FC2F5383AB45041295C8F22183054410AD7A3003AB450419A99997918305441000000403AB450413D0AD753183054417B14AE076DB45041333333A30C3054415C8FC2D567B45041EC51B83EFF2F544101030000000100000010000000713D0A477DB4504148E17A2439305441A4703D5A7DB450410AD7A3B037305441666666267DB450410AD7A33036305441E17A148E73B4504148E17A741D305441D7A3700D28B45041F6285C8F33305441E17A14FE23B4504114AE47E139305441000000B023B45041666666363B305441A4703DFA1FB450418FC2F5D841305441E17A147E24B450417B14AED74030544185EB511861B450418FC2F56830305441E17A14BE65B45041B81E85AB4130544185EB51D86FB45041EC51B89E3E3054410AD7A3107AB4504148E17AC43B305441000000C07BB450415C8FC2053B305441AE47E1BA7CB4504152B81E153A305441713D0A477DB4504148E17A2439305441
+</a>
+
+<b>
+0106000000010000000103000000010000002400000085EB511861B450418FC2F56830305441E17A14BE65B45041B81E85AB413054415C8ED6E169B4504143BF926B4030544135BDAF126AB4504141E32EF840305441E7E3473366B45041D33FEF3342305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441D7A3705D82B450411F85EBB16B3054413333331370B4504148E17A443F305441D7A370ED6EB45041A4703D6A3F30544168F0E2256AB45041DA7CC8F140305441EDDB34FE69B45041E5536C624030544185EB51D86FB45041EC51B89E3E3054410AD7A3107AB4504148E17AC43B305441000000C07BB450415C8FC2053B305441AE47E1BA7CB4504152B81E153A305441713D0A477DB4504148E17A2439305441A4703D5A7DB450410AD7A3B037305441666666267DB450410AD7A33036305441E17A148E73B4504148E17A741D305441169DDA1F5CB450418959975024305441F44DE7F059B45041CC713CF424305441D7A3700D28B45041F6285C8F33305441E17A14FE23B4504114AE47E139305441000000B023B45041666666363B305441A4703DFA1FB450418FC2F5D841305441E17A147E24B450417B14AED740305441F13AB0345DB45041627CED763130544185EB511861B450418FC2F56830305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525742 - 372882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000500000048E17AB4A5CD5041AE47E1AA34525441713D0A5768CD5041333333B327525441295C8FC267CD5041295C8FD22A5254417B14AE07A5CD5041666666A63952544148E17AB4A5CD5041AE47E1AA34525441
+</a>
+
+<b>
+010600000001000000010300000001000000060000005A6B2C0EA5CD50417ADF777639525441D1A379B4A5CD50419804E1AA34525441D1650B5768CD5041D47133B32752544117F08FC267CD5041F67F8FD22A5254417B14AE07A5CD5041666666A6395254415A6B2C0EA5CD50417ADF777639525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525779 - 188229
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000240000000000008059B950410AD7A37089405441295C8FD257B95041EC51B8AE9740544114AE47D15AB95041713D0AE79740544185EB517864B95041CDCCCC9C98405441333333E36AB950415C8FC21599405441000000C070B950413D0AD783994054418FC2F50873B9504152B81ED590405441B81E850B75B950413333334382405441F6285C3F76B950413D0AD73379405441B81E858B76B950417B14AE476F40544114AE475174B95041666666E66D40544114AE47516DB95041666666F6674054415C8FC2756BB95041D7A3706D644054415C8FC27568B95041A4703D7A644054415C8FC2055FB95041000000C06640544114AE47315FB9504152B81ED5684054419A9999E960B950417B14AE0774405441295C8FD260B950413D0AD74378405441295C8F3260B95041333333437A4054418FC2F50863B95041A4703D2A7D4054410000001065B950411F85EB717B4054413D0AD7436DB95041713D0A3779405441E17A146E6EB95041CDCCCCDC80405441AE47E18A6BB950410AD7A3207E405441D7A3705D69B95041713D0A377D405441CDCCCC1C65B950419A9999E97C405441A4703D4A63B950419A9999F97D4054415C8FC20562B95041C3F5289C804054413D0AD74365B95041E17A143E8340544152B81EC565B9504148E17A34884054413333333364B950410AD7A3F08A40544152B81EB560B95041CDCCCCBC8A405441EC51B8BE5FB950415C8FC285894054419A9999F95EB95041E17A140E85405441000000105BB950410AD7A370854054410000008059B950410AD7A37089405441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000032A3F96276B950419759F88F744054412EC3856B76B950412DF2E372734054410763117476B950414D3DE055724054413EBDE77976B95041F0302F9371405441DB568CF675B95041B0D448DB704054416D99E5D66FB9504137E266956D405441CC348C406AB950412917B44B704054417BB037E466B9504138639E68714054417A1DEF1963B95041AA8162DA7240544162F1DDEA61B95041C1CCD03873405441578F209063B95041E02EFD4475405441073CF62265B95041BCBAD777754054416CB3123D6CB95041B13C02D874405441D7B3123D6CB950411CE8A72B7640544150A422016CB950414E756D0777405441A318A8E56BB95041E3D94E7C77405441C57866016DB950416EA7A96477405441A2FE48376EB95041EE1F8F7B784054417E842B6D6FB95041DFCD680E7A405441F4E34EF96DB95041A23851067B405441735C34106FB95041CBA1014B7E4054417E842B6D6FB950413CC8C0F480405441E293AFCD6DB95041A9EF448581405441BD41AAEE6DB950417EB4EE0E82405441C18805C76EB95041599A02FD844054411408DC2E6EB95041A1C953858A40544188C202796CB95041AB4262FE89405441914982996AB950416466973689405441177FFCCD68B95041BDA6ACE68840544132B9479267B9504172F4DF9A88405441C4B3029766B9504152A6E6E98940544177D0348864B9504171E79FD18C405441356F89D863B95041F3CFE9C58C40544196AADB8665B95041C88859A4914054414676E73466B95041624E0E0395405441CAA2D19765B950412AE8F049974054412250201065B95041B390066D974054413A13262365B950411C8E9997974054419C0FB6BC69B95041CA809C7897405441735C34106FB950419CDE875198405441ACEF136570B95041AB08B761964054416432050071B950418BEFF4D69340544183DE38CB71B950415C9260BF90405441ABED626572B95041C1E86C178F40544124CECC2D73B95041735659588D405441405176FD73B95041C487C8E889405441CBD57AC574B95041C576E73E84405441294C0CA475B950418FE901C67D405441034A7D3376B95041AAD0468D79405441DB568CF675B950413112925C78405441467F835376B95041403CC16C76405441456E1C5576B9504171D5605E7640544132A3F96276B950419759F88F74405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525779 - 269378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000240000000000008059B950410AD7A37089405441295C8FD257B95041EC51B8AE9740544114AE47D15AB95041713D0AE79740544185EB517864B95041CDCCCC9C98405441333333E36AB950415C8FC21599405441000000C070B950413D0AD783994054418FC2F50873B9504152B81ED590405441B81E850B75B950413333334382405441F6285C3F76B950413D0AD73379405441B81E858B76B950417B14AE476F40544114AE475174B95041666666E66D40544114AE47516DB95041666666F6674054415C8FC2756BB95041D7A3706D644054415C8FC27568B95041A4703D7A644054415C8FC2055FB95041000000C06640544114AE47315FB9504152B81ED5684054419A9999E960B950417B14AE0774405441295C8FD260B950413D0AD74378405441295C8F3260B95041333333437A4054418FC2F50863B95041A4703D2A7D4054410000001065B950411F85EB717B4054413D0AD7436DB95041713D0A3779405441E17A146E6EB95041CDCCCCDC80405441AE47E18A6BB950410AD7A3207E405441D7A3705D69B95041713D0A377D405441CDCCCC1C65B950419A9999E97C405441A4703D4A63B950419A9999F97D4054415C8FC20562B95041C3F5289C804054413D0AD74365B95041E17A143E8340544152B81EC565B9504148E17A34884054413333333364B950410AD7A3F08A40544152B81EB560B95041CDCCCCBC8A405441EC51B8BE5FB950415C8FC285894054419A9999F95EB95041E17A140E85405441000000105BB950410AD7A370854054410000008059B950410AD7A37089405441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000031C3856B76B9504132F2E372734054413FBDE77976B95041EF302F9371405441DB568CF675B95041B0D448DB704054416D99E5D66FB9504137E266956D405441CC348C406AB950412917B44B704054417BB037E466B9504138639E68714054417A1DEF1963B95041AA8162DA7240544162F1DDEA61B95041C1CCD038734054415B8F209063B95041DD2EFD4475405441073CF62265B95041BCBAD777754054416CB3123D6CB95041B13C02D874405441D7B3123D6CB950411CE8A72B7640544150A422016CB950414E756D0777405441A318A8E56BB95041E3D94E7C77405441C57866016DB950416EA7A96477405441A2FE48376EB95041EE1F8F7B784054417E842B6D6FB95041DFCD680E7A405441F4E34EF96DB95041A23851067B405441735C34106FB95041CBA1014B7E4054417E842B6D6FB950413CC8C0F480405441E293AFCD6DB95041A9EF448581405441BD41AAEE6DB950417EB4EE0E82405441C18805C76EB95041599A02FD844054411408DC2E6EB95041A1C953858A40544188C202796CB95041AB4262FE89405441914982996AB950416466973689405441177FFCCD68B95041BDA6ACE68840544132B9479267B9504172F4DF9A88405441C4B3029766B9504152A6E6E98940544177D0348864B9504171E79FD18C405441356F89D863B95041F3CFE9C58C40544196AADB8665B95041C88859A4914054414676E73466B95041624E0E0395405441CAA2D19765B950412AE8F049974054412250201065B95041B390066D974054413A13262365B950411C8E9997974054419C0FB6BC69B95041CA809C7897405441735C34106FB950419CDE875198405441ACEF136570B95041AB08B761964054416432050071B950418BEFF4D69340544187DE38CB71B950415D9260BF90405441A9ED626572B95041C0E86C178F40544121CECC2D73B95041785659588D405441405176FD73B95041C387C8E88940544124D57AC574B950417F7BE73E844054412B4C0CA475B950418BE901C67D405441084A7D3376B95041ABD0468D79405441DB568CF675B950413112925C78405441467F835376B95041403CC16C76405441466E1C5576B950413AD5605E7640544131C3856B76B9504132F2E37273405441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457924 - 1757495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000030000000F00000048E17AC41AE150418FC2F5A833635441A4703D2A19E15041295C8FE23663544148E17A2417E150413D0AD7533B635441EC51B8BE13E15041333333834363544152B81EF510E150418FC2F5784B635441295C8FA211E15041CDCCCC9C4C6354411F85EB3126E150410AD7A38050635441333333F33FE15041F6285C5F55635441B81E851B41E1504100000090546354413D0AD75341E150415C8FC25553635441B81E857B43E150411F85EB414163544114AE47A142E1504148E17A0440635441EC51B83E30E15041CDCCCC4C3B6354410AD7A3201CE15041333333233363544148E17AC41AE150418FC2F5A83363544108000000000000E02CE150419A9999F948635441C3F5284C2BE15041CDCCCC6C4C63544114AE474127E1504152B81EC54C63544185EB51C828E15041CDCCCC4C4763544185EB51A82AE150411F85EB91426354410AD7A3A02CE15041000000104363544148E17A442DE150417B14AEE746635441000000E02CE150419A9999F948635441050000003D0AD76321E15041C3F5281C4A635441B81E857B1EE1504133333313496354419A9999E91FE1504152B81E1545635441C3F528AC22E15041E17A141E466354413D0AD76321E15041C3F5281C4A635441
+</a>
+
+<b>
+010600000001000000010300000001000000100000006E1187D742E15041457797A14663544110CCDADE42E15041C4AA206446635441B039A8052CE15041D33F33A040635441E23BB33D2BE15041F44B8A97426354412E45CB342BE150411B065C944263544194D5D9282BE15041A57F0DB2426354410AD7A3A02CE15041000000104363544148E17A442DE150417B14AEE746635441000000E02CE150419A9999F948635441C3F5284C2BE15041CDCCCC6C4C635441651345152AE15041471655874C635441D5671E3928E1504120A6D0E250635441333333F33FE15041F6285C5F55635441B81E851B41E1504100000090546354413D0AD75341E150415C8FC255536354416E1187D742E15041457797A146635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457924 - 3821219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000030000000F00000048E17AC41AE150418FC2F5A833635441A4703D2A19E15041295C8FE23663544148E17A2417E150413D0AD7533B635441EC51B8BE13E15041333333834363544152B81EF510E150418FC2F5784B635441295C8FA211E15041CDCCCC9C4C6354411F85EB3126E150410AD7A38050635441333333F33FE15041F6285C5F55635441B81E851B41E1504100000090546354413D0AD75341E150415C8FC25553635441B81E857B43E150411F85EB414163544114AE47A142E1504148E17A0440635441EC51B83E30E15041CDCCCC4C3B6354410AD7A3201CE15041333333233363544148E17AC41AE150418FC2F5A83363544108000000000000E02CE150419A9999F948635441C3F5284C2BE15041CDCCCC6C4C63544114AE474127E1504152B81EC54C63544185EB51C828E15041CDCCCC4C4763544185EB51A82AE150411F85EB91426354410AD7A3A02CE15041000000104363544148E17A442DE150417B14AEE746635441000000E02CE150419A9999F948635441050000003D0AD76321E15041C3F5281C4A635441B81E857B1EE1504133333313496354419A9999E91FE1504152B81E1545635441C3F528AC22E15041E17A141E466354413D0AD76321E15041C3F5281C4A635441
+</a>
+
+<b>
+010600000001000000010300000001000000100000006E1187D742E15041457797A14663544110CCDADE42E15041C4AA206446635441B039A8052CE15041D33F33A040635441E23BB33D2BE15041F44B8A97426354412E45CB342BE150411B065C944263544194D5D9282BE15041A57F0DB2426354410AD7A3A02CE15041000000104363544148E17A442DE150417B14AEE746635441000000E02CE150419A9999F948635441C3F5284C2BE15041CDCCCC6C4C635441651345152AE15041471655874C635441D5671E3928E1504120A6D0E250635441333333F33FE15041F6285C5F55635441B81E851B41E1504100000090546354413D0AD75341E150415C8FC255536354416E1187D742E15041457797A146635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525923 - 45230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525923 - 81581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526165 - 3088802
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A99995984C950413D0AD793C9465441C3F528ECA2C950410AD7A3D0C84654417B14AE27C1C95041F6285C0FC84654419A999979C1C950411F85EB31AE465441295C8F02A2C95041C3F528FCAE4654416666664682C9504185EB51C8AF4654419A99995984C950413D0AD793C9465441
+</a>
+
+<b>
+010600000001000000010300000001000000180000007AC6C8AF8AC9504135CAF63BD9465441FA76367593C95041A58F6004D9465441BE7FDD269DC95041D322B7C6D8465441BC53764FA9C9504151D8FF78D8465441A3F000A3B5C95041D5EF382AD8465441ADCEA7B8BCC95041CC71F2FCD7465441666666A6C0C950413D0AD7E3D746544164F17771C1C95041A7328801D7465441CADD6B92C1C95041E32490DDD64654418D153B3CC1C95041964412F1CA46544186D85624C1C950410D5E210EC846544122E15E32B2C95041F264FD6EC846544156A928BAA7C95041544FECB1C8465441E007604F9BC95041887C3E01C94654412744C23A91C95041B3439B41C9465441A28DC3AC88C95041A0FE3978C9465441283F6B5984C950419BCE9691C9465441EE0DFA0C85C95041EA451B48D2465441729B636985C9504173C113C4D646544117EB138985C95041D310B94DD8465441D8CE468B85C9504141C3EC5CD8465441CEF7A29A86C950419D52AF52D9465441980D5CAD86C9504139A5C254D94654417AC6C8AF8AC9504135CAF63BD9465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526165 - 3435645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A99995984C950413D0AD793C9465441C3F528ECA2C950410AD7A3D0C84654417B14AE27C1C95041F6285C0FC84654419A999979C1C950411F85EB31AE465441295C8F02A2C95041C3F528FCAE4654416666664682C9504185EB51C8AF4654419A99995984C950413D0AD793C9465441
+</a>
+
+<b>
+010600000001000000010300000001000000180000007AC6C8AF8AC9504135CAF63BD9465441FA76367593C95041A58F6004D9465441BE7FDD269DC95041D322B7C6D8465441BC53764FA9C9504151D8FF78D8465441A3F000A3B5C95041D5EF382AD8465441ADCEA7B8BCC95041CC71F2FCD7465441666666A6C0C950413D0AD7E3D746544164F17771C1C95041A7328801D7465441CADD6B92C1C95041E32490DDD64654418D153B3CC1C95041964412F1CA46544186D85624C1C950410D5E210EC846544122E15E32B2C95041F264FD6EC846544156A928BAA7C95041544FECB1C8465441E007604F9BC95041887C3E01C94654412744C23A91C95041B3439B41C9465441A28DC3AC88C95041A0FE3978C9465441283F6B5984C950419BCE9691C9465441EE0DFA0C85C95041EA451B48D2465441729B636985C9504173C113C4D646544117EB138985C95041D310B94DD8465441D8CE468B85C9504141C3EC5CD8465441CEF7A29A86C950419D52AF52D9465441980D5CAD86C9504139A5C254D94654417AC6C8AF8AC9504135CAF63BD9465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526266 - 187564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000100000007B14AE97C6BA50411F85EB01DE2854417B14AE17C2BA504148E17A54DF2854411F85EB71C2BA5041295C8F02E428544185EB5198C2BA5041CDCCCCECE7285441666666A6C3BA5041D7A370FDEB2854417B14AE77C8BA50415C8FC2A5ED2854417B14AEC7CBBA5041295C8FF2ED285441EC51B83ECFBA5041A4703DDAEE28544133333373D0BA5041B81E85ABF328544152B81EB5D2BA50418FC2F5F8F32854415C8FC2C5D6BA504114AE4711F32854413D0AD743DDBA50419A999989F0285441713D0AB7DBBA5041C3F528DCE2285441CDCCCC9CCFBA5041AE47E1EADC285441C3F5282CC8BA5041AE47E1BADC2854417B14AE97C6BA50411F85EB01DE28544101030000000100000018000000F6285C8FB9BA50410AD7A330DF28544148E17A64C0BA5041E17A143EDC2854415C8FC205C3BA50418FC2F5C8D8285441EC51B88EC1BA5041A4703D7AD0285441C3F5282CC8BA5041C3F5284CD32854417B14AE67CBBA50418FC2F598D32854418FC2F528D2BA5041295C8FC2D4285441E17A146ED7BA5041A4703DDAD5285441E17A143EDABA5041A4703DDAD5285441CDCCCCFCD9BA5041AE47E19AD328544114AE4751D9BA5041E17A14AECD285441713D0A27D9BA504133333333CC285441E17A14BED8BA50411F85EB91C8285441E17A14FED5BA50411F85EB11C92854415C8FC225CCBA504114AE47A1CA285441A4703D1AC8BA5041C3F528ECCA285441AE47E1AAC1BA504148E17A24CA28544185EB5188B5BA504114AE47D1C2285441C3F5281CB0BA5041A4703D0AC5285441D7A3705DB1BA504114AE4751D028544114AE47D1B1BA504185EB5158D4285441EC51B87EB5BA50410AD7A340D5285441A4703D9AB7BA5041333333D3DA285441F6285C8FB9BA50410AD7A330DF285441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000BC698192C2BA5041DA5E7A60D9285441902753AAC2BA5041010B2A41D92854418B2FFF10C2BA504160CD2009D728544104D61C9CC0BA5041209CEE11D2285441E123B3BABFBA5041421A1974D12854419C79D0A1C0BA5041520AB280CC28544181145919C1BA50415D1D6392CC285441B169C824C4BA5041C52C66F6CC285441B83A42E0C7BA50415DC138DCCC285441357F4A5ACBBA50415DC138DCCC285441B4CBB378CEBA5041C834C79ACC28544111708653D2BA50419338CCA3CB285441BC0425D9D8BA50412F6F8A81C9285441E4FEE2D7D8BA5041935A6776C9285441540772D5D8BA5041EE1BCA60C92854418DFB41C8D8BA5041A3C36AECC82854415E9301DFD7BA5041BEC57F3DC92854415CD09610D5BA504190D42518CA2854410F0CE0C7D0BA5041885D44F6CA285441B7D3141DCEBA50411697D37ACB285441310DDEA1CCBA504101A735AECB2854417ED194F1CABA5041CD4489E3CB28544120A66FFAC7BA5041CD4489E3CB285441A6494493C5BA5041CD4489E3CB28544102D435A9C2BA5041199F341FCB285441A2A0AF0DC0BA5041FD8DB240CA285441699E2FE2BCBA5041E58CF2AAC82854419BEFB9E3BABA50415818A456C7285441F7592768B9BA50416030C743C62854419116DF83B7BA50419079F0A0C4285441DD708ABFB6BA50414F3FC9F6C328544133CB35FBB5BA5041DCD39BDCC3285441C66FCA29B5BA50411F16242BC4285441873D0424B4BA5041D9CB3A38C4285441D8A771A8B2BA504192815145C42854417A35A37FB4BA50414117E4C0C528544104A2902FB6BA50417D414922C728544162CDB526B9BA5041BE5BEC3AC9285441475D6729BEBA5041AB2345BCCB285441406F5634BFBA5041383CF328CC28544127CC728BC0BA5041520AB280CC285441AF7C23B4BFBA5041314DD16DD128544161668863BFBA5041A5CCD941D1285441152C61B9BEBA504159722E06D22854414C6D2972BDBA504132412896D22854419DD796F6BBBA5041E9EEDDFED2285441358CED6DBABA5041E6E67C5AD328544121938E7CB8BA5041E3DE1BB6D328544155EC7922B6BA50412721A404D4285441C8772BCEB4BA50416B632C53D428544136F31A31B4BA504100F09D94D428544163145F58B4BA5041443226E3D4285441658D286DB4BA5041910922FDD4285441EC51B87EB5BA50410AD7A340D5285441A4703D9AB7BA5041333333D3DA2854412BA2A436B8BA5041CEFFF52FDC285441352ACF78B8BA504126FA80C3DC285441F6285C8FB9BA50410AD7A330DF28544148E17A64C0BA5041E17A143EDC285441BC698192C2BA5041DA5E7A60D9285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526266 - 356872
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000100000007B14AE97C6BA50411F85EB01DE2854417B14AE17C2BA504148E17A54DF2854411F85EB71C2BA5041295C8F02E428544185EB5198C2BA5041CDCCCCECE7285441666666A6C3BA5041D7A370FDEB2854417B14AE77C8BA50415C8FC2A5ED2854417B14AEC7CBBA5041295C8FF2ED285441EC51B83ECFBA5041A4703DDAEE28544133333373D0BA5041B81E85ABF328544152B81EB5D2BA50418FC2F5F8F32854415C8FC2C5D6BA504114AE4711F32854413D0AD743DDBA50419A999989F0285441713D0AB7DBBA5041C3F528DCE2285441CDCCCC9CCFBA5041AE47E1EADC285441C3F5282CC8BA5041AE47E1BADC2854417B14AE97C6BA50411F85EB01DE28544101030000000100000018000000F6285C8FB9BA50410AD7A330DF28544148E17A64C0BA5041E17A143EDC2854415C8FC205C3BA50418FC2F5C8D8285441EC51B88EC1BA5041A4703D7AD0285441C3F5282CC8BA5041C3F5284CD32854417B14AE67CBBA50418FC2F598D32854418FC2F528D2BA5041295C8FC2D4285441E17A146ED7BA5041A4703DDAD5285441E17A143EDABA5041A4703DDAD5285441CDCCCCFCD9BA5041AE47E19AD328544114AE4751D9BA5041E17A14AECD285441713D0A27D9BA504133333333CC285441E17A14BED8BA50411F85EB91C8285441E17A14FED5BA50411F85EB11C92854415C8FC225CCBA504114AE47A1CA285441A4703D1AC8BA5041C3F528ECCA285441AE47E1AAC1BA504148E17A24CA28544185EB5188B5BA504114AE47D1C2285441C3F5281CB0BA5041A4703D0AC5285441D7A3705DB1BA504114AE4751D028544114AE47D1B1BA504185EB5158D4285441EC51B87EB5BA50410AD7A340D5285441A4703D9AB7BA5041333333D3DA285441F6285C8FB9BA50410AD7A330DF285441
+</a>
+
+<b>
+0106000000010000000103000000010000002300000067F538D6D8BA5041025EAB67C9285441B20B72D5D8BA50419B42CA60C92854418DFB41C8D8BA50419FC36AECC8285441639301DFD7BA5041BFC57F3DC92854415FD09610D5BA504194D42518CA285441130CE0C7D0BA50418D5D44F6CA285441B7D3141DCEBA50411697D37ACB2854412E0DDEA1CCBA5041FCA635AECB2854417ED194F1CABA5041CD4489E3CB28544120A66FFAC7BA5041CD4489E3CB285441A6494493C5BA5041CD4489E3CB28544102D435A9C2BA5041199F341FCB285441A2A0AF0DC0BA5041FD8DB240CA285441699E2FE2BCBA5041E58CF2AAC82854419BEFB9E3BABA50415818A456C7285441F7592768B9BA50416030C743C62854419116DF83B7BA50419079F0A0C4285441DD708ABFB6BA50414F3FC9F6C328544133CB35FBB5BA5041DCD39BDCC3285441C66FCA29B5BA50411F16242BC4285441873D0424B4BA5041D9CB3A38C4285441D8A771A8B2BA504192815145C42854417A35A37FB4BA50414117E4C0C528544104A2902FB6BA50417D414922C728544162CDB526B9BA5041BE5BEC3AC9285441475D6729BEBA5041AB2345BCCB285441B169C824C4BA5041C52C66F6CC285441B83A42E0C7BA50415DC138DCCC285441357F4A5ACBBA50415DC138DCCC285441B4CBB378CEBA5041C834C79ACC2854410E708653D2BA50418F38CCA3CB285441BE0425D9D8BA50412B6F8A81C92854419167A4D6D8BA50412AA8626BC9285441D2D23DD6D8BA50418070D667C928544167F538D6D8BA5041025EAB67C9285441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526595 - 281524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000048000000E17A14BE26D15041B81E857BAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB5154418FC2F5F827D15041C3F528ECAB515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441333333132AD15041C3F528ECAD5154415C8FC2E52AD15041EC51B8BEAD5154410AD7A3F02BD15041A4703D5AAD51544152B81EB52CD1504166666696AD5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544148E17AE430D1504100000080B05154411F85EB1132D15041A4703DAAB051544148E17AB433D1504166666626B15154417B14AEB735D15041666666D6B1515441A4703D5A37D150411F85EBC1B25154415C8FC20538D15041A4703DFAB3515441295C8F0239D15041AE47E13AB551544148E17A143AD15041EC51B8DEB5515441A4703DFA3BD150417B14AE77B65154410AD7A3803DD15041295C8F22B7515441D7A3700D40D15041CDCCCC2CAE515441D7A3701D46D15041F6285CBF8E5154411F85EB2148D15041F6285CCF8451544152B81E054FD150411F85EBB162515441295C8F5252D15041F6285C9F56515441B81E85CB56D15041D7A3700D45515441A4703D5A58D150415C8FC2B53F515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF355154418FC2F5985ED15041EC51B8CE31515441333333735ED150415C8FC2A52F51544114AE47715DD15041CDCCCC6C2D5154410AD7A3403AD15041F6285CFF25515441EC51B8CE39D15041E17A14EE26515441295C8F6237D15041333333A3285154410AD7A37033D150419A9999692B515441CDCCCC1C1FD15041713D0A172751544185EB51181ED150418FC2F5B82B515441EC51B83E1DD15041333333A32F5154417B14AEE71AD1504148E17A543A515441A4703D4A1DD150419A9999993A5154413D0AD70319D150415C8FC2B541515441000000A017D150417B14AE1744515441AE47E19A13D1504148E17A844F5154413333332313D15041AE47E15A525154413D0AD75318D150413D0AD72353515441C3F5281C1DD150410000003053515441CDCCCC1C25D150413D0AD7E35C5154415C8FC25521D15041713D0A6764515441B81E859B24D1504148E17A3468515441F6285C4F2AD150418FC2F5B86D515441AE47E15A2AD15041295C8FE273515441713D0AF727D15041713D0A67755154411F85EBF11BD15041AE47E1EA76515441EC51B88E21D15041A4703D1A855154410000006016D15041713D0AF78C515441B81E856B19D15041000000E094515441333333631DD150418FC2F5289F5154411F85EB711ED15041EC51B8EEA45154411F85EBC11CD15041713D0A47A9515441A4703DEA1DD15041D7A370DDA95154419A99997920D150411F85EB61AB5154419A99999922D15041EC51B80EAC5154418FC2F5A823D15041A4703D5AAC515441EC51B8BE24D1504185EB51C8AC515441CDCCCC9C25D150413D0AD703AD515441CDCCCC3C26D1504114AE47E1AC515441E17A14BE26D15041B81E857BAC515441050000009A99999950D15041EC51B8EE3B5154419A9999D951D15041AE47E16A385154419A9999A954D15041AE47E15A395154415C8FC25553D15041EC51B8DE3C5154419A99999950D15041EC51B8EE3B515441
+</a>
+
+<b>
+010600000001000000010300000001000000340000001F85EBC11CD15041713D0A47A95154410427467E26D1504184A71DCDAB5154417D86C17326D15041784B8BF6A95154418082D2E029D150417E9FFECC755154417C6445AD2AD1504127231CF8735154412FB3158A2AD15041DC1F22B76D515441598912732AD150413B104D1A6D515441D5F0690D2BD150415A466AEC635154419FE0D1C82AD150413E95504E55515441543AF7C515D150410F5756A5505154413FAD1E651FD1504111F1E0A538515441AB7F49061FD1504141EACEA838515441EEB628DC20D15041F7D6D7733751544132E08FC229D15041AA7D5D9F3251544189A299F92AD15041EB9914BE315154415149A3802FD15041B648B92E2E5154412EE7A17033D15041293099692B515441A4AB64E432D15041190BC74B2B5154413CD7A8CC31D15041864A4B102B515441F32AF0242DD15041C207E2122A515441B844006524D15041F0779336285154413176286F20D15041604DFD5E275154415BC6CD1C1FD1504182720A17275154419144895C1ED15041092F62822A515441E5272B5A1ED15041B8B4298D2A5154411594F6591ED15041E514198E2A515441C9BBE8581ED1504171A3E5922A515441938210581ED15041F510BE962A515441B6CF51181ED15041A742F6B82B515441A5EAEB161ED150417FAE66BF2B515441EC51B83E1DD15041333333A32F5154417B14AEE71AD1504148E17A543A515441A4703D4A1DD150419A9999993A5154413D0AD70319D150415C8FC2B541515441000000A017D150417B14AE1744515441AE47E19A13D1504148E17A844F5154413333332313D15041AE47E15A525154413D0AD75318D150413D0AD72353515441C3F5281C1DD150410000003053515441CDCCCC1C25D150413D0AD7E35C5154415C8FC25521D15041713D0A6764515441B81E859B24D1504148E17A3468515441F6285C4F2AD150418FC2F5B86D515441AE47E15A2AD15041295C8FE273515441713D0AF727D15041713D0A67755154411F85EBF11BD15041AE47E1EA76515441EC51B88E21D15041A4703D1A855154416AF2E95617D150419FD96E498C515441281621F119D150416E28BB8F94515441333333631DD150418FC2F5289F5154411F85EB711ED15041EC51B8EEA45154411F85EBC11CD15041713D0A47A9515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526892 - 1829736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000005C0000005C8FC2251ACB504185EB51683C325441C3F528FC18CB5041C3F5288C3E3254410000000018CB504152B81EB5403254413D0AD73317CB5041713D0A974232544148E17AC416CB5041D7A3705D443254419A99999916CB504152B81E05463254410AD7A36016CB5041CDCCCC6C47325441CDCCCCFC16CB5041A4703D9A4A325441295C8FB217CB5041666666164E32544152B81EB519CB50413333335352325441A4703DAA1CCB50417B14AE3757325441713D0A371FCB50418FC2F5B85B325441000000B020CB5041B81E851B5F325441B81E851B23CB5041F6285C0F6432544152B81EE525CB5041E17A148E693254413D0AD75327CB5041C3F5280C6C32544148E17A4428CB504152B81E956E3254410AD7A30029CB5041295C8F5271325441F6285C3F29CB5041A4703D1A74325441CDCCCC4C29CB5041E17A149E753254419A9999E929CB50418FC2F5F875325441666666C62ACB5041C3F5285C76325441E17A142E2CCB504148E17A24773254415C8FC2552DCB5041EC51B8AE77325441B81E852B2ECB504185EB51E877325441A4703DEA2ECB50411F85EB21783254417B14AEB72FCB5041F6285C8F78325441A4703DCA31CB50411F85EB8179325441333333F332CB50415C8FC2357A325441E17A14AE34CB504185EB51A87A32544114AE47A135CB50410AD7A3A07A3254410AD7A30037CB5041EC51B88E7A325441B81E850B38CB5041666666A67A325441666666C638CB5041000000707A325441F6285C8F39CB50419A9999497A325441000000103ACB5041B81E85FB793254410AD7A3D03ACB50411F85EBB1793254410AD7A3803BCB5041C3F5283C793254419A9999B93CCB5041E17A14CE78325441B81E857B3DCB504114AE47A178325441A4703D6A3ECB5041A4703DDA783254413D0AD7133FCB5041AE47E1CA783254413D0AD7B33FCB50415C8FC26578325441B81E859B40CB504148E17A3478325441A4703DEA41CB5041CDCCCC6C78325441666666A643CB504114AE47E1773254415C8FC26544CB50413333339375325441F6285C8F44CB5041E17A146E743254418FC2F5A844CB50419A9999E9723254410000004045CB5041CDCCCCBC72325441CDCCCCBC45CB50411F85EB416F3254411F85EB1148CB5041333333036F3254411F85EB814ACB504152B81E756E325441295C8FC24BCB5041666666366E3254418FC2F5D84DCB5041C3F5286C6E3254417B14AE674ECB50413D0AD7E36C325441666666F650CB50417B14AED76B325441AE47E16A53CB504148E17A646B325441333333A354CB5041D7A3706D6B3254410AD7A31056CB50410AD7A3A06A3254419A9999B956CB5041E17A144E69325441A4703DAA57CB5041D7A3705D68325441EC51B85E59CB50411F85EBA1673254419A9999E95BCB5041000000F0663254419A9999895CCB50418FC2F5F8663254415C8FC2355CCB5041B81E859B6032544148E17A1456CB5041B81E85AB503254413D0AD74351CB504152B81E454F325441A4703DAA52CB50413D0AD7734A325441666666E64ECB50413D0AD7734A3254418FC2F5C84ACB5041AE47E10A2F325441B81E85FB45CB50410000006026325441713D0A7737CB504152B81EA51A325441CDCCCCFC33CB50418FC2F5981632544152B81E4533CB5041295C8F0216325441D7A3703D38CB50411F85EB3112325441333333E330CB50417B14AEC717325441713D0AC724CB50419A9999A9203254413D0AD7B323CB5041CDCCCC6C213254413D0AD73323CB50417B14AE3722325441713D0A3724CB5041F6285C5F23325441EC51B8CE24CB5041D7A370ED24325441EC51B8AE24CB50411F85EB3126325441EC51B82E24CB5041CDCCCC2C28325441713D0A9723CB504152B81EB5293254419A99997922CB5041B81E857B2B32544114AE471120CB50419A9999092F32544148E17A941ECB504185EB51583132544152B81E651DCB5041713D0A9733325441F6285C2F1CCB5041A4703DBA36325441000000201BCB5041E17A14BE393254415C8FC2251ACB504185EB51683C3254410F000000EC51B84E2CCB50419A9999094032544114AE47113ECB50415C8FC2653C3254410000003040CB5041EC51B85E50325441333333F33BCB50415C8FC22559325441C3F5287C3DCB50418FC2F5B86A3254410AD7A3A04ACB50410AD7A3006B325441EC51B8FE4BCB5041713D0A576D32544152B81E054ACB50410AD7A3606D32544148E17AA448CB504185EB51F86C325441EC51B8FE46CB50411F85EB416C3254418FC2F5C845CB5041A4703DBA6D325441AE47E1AA43CB5041F6285C1F6D3254415C8FC2C538CB50419A9999E96B32544114AE479137CB504185EB51586A325441EC51B84E2CCB50419A99990940325441
+</a>
+
+<b>
+01060000000100000001030000000100000091000000695C485537CB504147ABB8DE6A325441F6529D5437CB50419BFD90DD6A3254410BBA3D0433CB504155905DEB62325441D8F9106B22CB504161A1DCD243325441B7ED063128CB5041D92CC75A41325441495E43D031CB50416091513D3D325441555B81D631CB5041C626A63A3D325441EBA52B893BCB504146DBE9045432544175B2A17F3BCB504150AB684D543254410477F8853BCB50410625805C543254410E5966293BCB50419396DD735732544178C9BD153ACB50416A54BA175F325441193AF5333ACB504170AB16A65F32544105CFCC603CCB5041BE4504A56A3254415B9F3CA53CCB50415C4370A86A3254418B11FAA53CCB504144BC79A86A3254416243A77B3DCB50418FCB28B36A32544172A2FA263ECB5041E16A99BC6A32544197C96C453ECB5041AB783FBD6A3254413B2B071D44CB5041C13007086B3254410AD7A3A04ACB50410AD7A3006B325441EC902BA44ACB5041B099AC066B325441F3D1BBB54ACB50412DF5A8066B32544156F4C1184BCB50412D1EBA7C6B32544149AF342F4CCB5041EA8603026D325441E47DDAA44CCB5041F8D98C996D32544146D98BA24CCB5041BF5A8CA06D325441666666F650CB50417B14AED76B325441AE47E16A53CB504148E17A646B325441333333A354CB5041D7A3706D6B3254410AD7A31056CB50410AD7A3A06A3254419A9999B956CB5041E17A144E69325441A4703DAA57CB5041D7A3705D68325441EC51B85E59CB50411F85EBA1673254419A9999E95BCB5041000000F066325441E5B4681B5CCB5041DD0FCAF2663254419A9999895CCB50418FC2F5F866325441C0823C4C5ACB504151E923AF603254416C0C134B58CB50415959E3EF57325441BCC1CB4958CB5041B62A4FEA573254413BBBBCE350CB5041D2E9577D543254410B9E85E24FCB5041A2546F8D4E3254416A6042F64CCB5041A2546F8D4E325441E55998224BCB5041BE1357B74A325441DB089DF249CB5041F7C530714A325441C3F528EC49CB504148E17A44463254411F7FF8B748CB50411EA382494132544155469AA745CB5041A7919A9C343254410BBDABCF42CB5041054FCE012E3254415C8FC22541CB50419A9999F92D3254418FC2F5383FCB5041D7A3704D29325441CE1C4E0543CB50414DCC44ED273254414B8B0E0843CB504104A25BF027325441C7E6ED0843CB5041F26256F1273254416870DF1843CB5041F07D56EA2732544198A617E448CB50411D79FB7E2E3254413252BBFB49CB50416F6452BE2F3254416AA4E97E4ACB504121CF975130325441D0CCE90B4BCB5041FEC7AD82313254411B0608044BCB50410C7DEF3631325441F83F360B4BCB5041920A2FC4303254418D37E5CC4ACB504189F217252F325441B81E85FB45CB50410000006026325441713D0A7737CB504152B81EA51A325441CDCCCCFC33CB50418FC2F5981632544152B81E4533CB5041295C8F0216325441D7A3703D38CB50411F85EB3112325441333333E330CB50417B14AEC717325441713D0AC724CB50419A9999A9203254413D0AD7B323CB5041CDCCCC6C213254413D0AD73323CB50417B14AE3722325441713D0A3724CB5041F6285C5F23325441EC51B8CE24CB5041D7A370ED24325441EC51B8AE24CB50411F85EB3126325441EC51B82E24CB5041CDCCCC2C28325441713D0A9723CB504152B81EB5293254419A99997922CB5041B81E857B2B32544114AE471120CB50419A9999092F32544148E17A941ECB504185EB51583132544152B81E651DCB5041713D0A9733325441F6285C2F1CCB5041A4703DBA36325441000000201BCB5041E17A14BE393254415C8FC2251ACB504185EB51683C325441C3F528FC18CB5041C3F5288C3E3254410000000018CB504152B81EB5403254413D0AD73317CB5041713D0A974232544148E17AC416CB5041D7A3705D443254419A99999916CB504152B81E05463254410AD7A36016CB5041CDCCCC6C47325441CDCCCCFC16CB5041A4703D9A4A325441295C8FB217CB5041666666164E32544152B81EB519CB50413333335352325441A4703DAA1CCB50417B14AE3757325441713D0A371FCB50418FC2F5B85B325441000000B020CB5041B81E851B5F325441B81E851B23CB5041F6285C0F6432544152B81EE525CB5041E17A148E693254413D0AD75327CB5041C3F5280C6C32544148E17A4428CB504152B81E956E3254410AD7A30029CB5041295C8F5271325441F6285C3F29CB5041A4703D1A74325441CDCCCC4C29CB5041E17A149E753254419A9999E929CB50418FC2F5F875325441666666C62ACB5041C3F5285C7632544178946F462CCB50419DD9E84F773254414D7B8E502DCB504139D19DA877325441E4CB31372ECB5041145FCE24783254413C8659FA2ECB5041B056837D78325441F2A1BAF22FCB50418BE4B3F9783254411F4301C031CB5041E39EDBBC7932544133C09BED32CB5041FDC2875C7A325441E334EB7334CB504199BA3CB57A32544114AE47A135CB50410AD7A3A07A32544149C59BF236CB504199BA3CB57A325441B81E850B38CB5041666666A67A325441666666C638CB5041000000707A325441F6285C8F39CB50419A9999497A32544146A6EF573ACB5041809690157A3254417F9559093BCB5041036A99CE79325441D74F81CC3BCB5041863DA287793254418D6BE2C43CCB5041E945ED2E7932544104F1C7993DCB50418BE4B3F978325441FE49B6273ECB50416C19F6E778325441F3FB92433FCB50418BE4B3F9783254414BB6BA0640CB50410EB8BCB278325441A370E2C940CB5041D021418F78325441A4703DEA41CB5041CDCCCC6C78325441666666A643CB504114AE47E177325441BAF8616D44CB50412B20FF2975325441EF26BF3F43CB504140EE96007432544191A4CF3743CB5041B4536AFD73325441549AD4DD42CB5041BACF1DA673325441063B7CBD42CB5041F0F4642673325441F371E70E42CB50414352F8A870325441A0E95FAA41CB50410882436170325441F94D50683FCB50413CC4F0C46E325441B8812FF93ECB5041C394C3A46E3254417D9669DB3ECB5041CCB2249C6E3254419128D5C13ECB504171A3BC946E325441373CFA9D3ECB504123EF5A8A6E325441C1A725913ECB504127E7A3866E325441CC0F952F3ECB5041ED2F506C6E325441FFA1CF6A38CB50419AF27EBE6C325441461FED5737CB5041359D9CE36A325441695C485537CB504147ABB8DE6A325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526892 - 3190521
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000005C0000005C8FC2251ACB504185EB51683C325441C3F528FC18CB5041C3F5288C3E3254410000000018CB504152B81EB5403254413D0AD73317CB5041713D0A974232544148E17AC416CB5041D7A3705D443254419A99999916CB504152B81E05463254410AD7A36016CB5041CDCCCC6C47325441CDCCCCFC16CB5041A4703D9A4A325441295C8FB217CB5041666666164E32544152B81EB519CB50413333335352325441A4703DAA1CCB50417B14AE3757325441713D0A371FCB50418FC2F5B85B325441000000B020CB5041B81E851B5F325441B81E851B23CB5041F6285C0F6432544152B81EE525CB5041E17A148E693254413D0AD75327CB5041C3F5280C6C32544148E17A4428CB504152B81E956E3254410AD7A30029CB5041295C8F5271325441F6285C3F29CB5041A4703D1A74325441CDCCCC4C29CB5041E17A149E753254419A9999E929CB50418FC2F5F875325441666666C62ACB5041C3F5285C76325441E17A142E2CCB504148E17A24773254415C8FC2552DCB5041EC51B8AE77325441B81E852B2ECB504185EB51E877325441A4703DEA2ECB50411F85EB21783254417B14AEB72FCB5041F6285C8F78325441A4703DCA31CB50411F85EB8179325441333333F332CB50415C8FC2357A325441E17A14AE34CB504185EB51A87A32544114AE47A135CB50410AD7A3A07A3254410AD7A30037CB5041EC51B88E7A325441B81E850B38CB5041666666A67A325441666666C638CB5041000000707A325441F6285C8F39CB50419A9999497A325441000000103ACB5041B81E85FB793254410AD7A3D03ACB50411F85EBB1793254410AD7A3803BCB5041C3F5283C793254419A9999B93CCB5041E17A14CE78325441B81E857B3DCB504114AE47A178325441A4703D6A3ECB5041A4703DDA783254413D0AD7133FCB5041AE47E1CA783254413D0AD7B33FCB50415C8FC26578325441B81E859B40CB504148E17A3478325441A4703DEA41CB5041CDCCCC6C78325441666666A643CB504114AE47E1773254415C8FC26544CB50413333339375325441F6285C8F44CB5041E17A146E743254418FC2F5A844CB50419A9999E9723254410000004045CB5041CDCCCCBC72325441CDCCCCBC45CB50411F85EB416F3254411F85EB1148CB5041333333036F3254411F85EB814ACB504152B81E756E325441295C8FC24BCB5041666666366E3254418FC2F5D84DCB5041C3F5286C6E3254417B14AE674ECB50413D0AD7E36C325441666666F650CB50417B14AED76B325441AE47E16A53CB504148E17A646B325441333333A354CB5041D7A3706D6B3254410AD7A31056CB50410AD7A3A06A3254419A9999B956CB5041E17A144E69325441A4703DAA57CB5041D7A3705D68325441EC51B85E59CB50411F85EBA1673254419A9999E95BCB5041000000F0663254419A9999895CCB50418FC2F5F8663254415C8FC2355CCB5041B81E859B6032544148E17A1456CB5041B81E85AB503254413D0AD74351CB504152B81E454F325441A4703DAA52CB50413D0AD7734A325441666666E64ECB50413D0AD7734A3254418FC2F5C84ACB5041AE47E10A2F325441B81E85FB45CB50410000006026325441713D0A7737CB504152B81EA51A325441CDCCCCFC33CB50418FC2F5981632544152B81E4533CB5041295C8F0216325441D7A3703D38CB50411F85EB3112325441333333E330CB50417B14AEC717325441713D0AC724CB50419A9999A9203254413D0AD7B323CB5041CDCCCC6C213254413D0AD73323CB50417B14AE3722325441713D0A3724CB5041F6285C5F23325441EC51B8CE24CB5041D7A370ED24325441EC51B8AE24CB50411F85EB3126325441EC51B82E24CB5041CDCCCC2C28325441713D0A9723CB504152B81EB5293254419A99997922CB5041B81E857B2B32544114AE471120CB50419A9999092F32544148E17A941ECB504185EB51583132544152B81E651DCB5041713D0A9733325441F6285C2F1CCB5041A4703DBA36325441000000201BCB5041E17A14BE393254415C8FC2251ACB504185EB51683C3254410F000000EC51B84E2CCB50419A9999094032544114AE47113ECB50415C8FC2653C3254410000003040CB5041EC51B85E50325441333333F33BCB50415C8FC22559325441C3F5287C3DCB50418FC2F5B86A3254410AD7A3A04ACB50410AD7A3006B325441EC51B8FE4BCB5041713D0A576D32544152B81E054ACB50410AD7A3606D32544148E17AA448CB504185EB51F86C325441EC51B8FE46CB50411F85EB416C3254418FC2F5C845CB5041A4703DBA6D325441AE47E1AA43CB5041F6285C1F6D3254415C8FC2C538CB50419A9999E96B32544114AE479137CB504185EB51586A325441EC51B84E2CCB50419A99990940325441
+</a>
+
+<b>
+01060000000100000001030000000100000091000000695C485537CB504147ABB8DE6A325441F6529D5437CB50419BFD90DD6A3254410BBA3D0433CB504155905DEB62325441D8F9106B22CB504161A1DCD243325441B7ED063128CB5041D92CC75A41325441495E43D031CB50416091513D3D325441555B81D631CB5041C626A63A3D325441EBA52B893BCB504146DBE9045432544175B2A17F3BCB504150AB684D543254410477F8853BCB50410625805C543254410E5966293BCB50419396DD735732544178C9BD153ACB50416A54BA175F325441193AF5333ACB504170AB16A65F32544105CFCC603CCB5041BE4504A56A3254415B9F3CA53CCB50415C4370A86A3254418B11FAA53CCB504144BC79A86A3254416243A77B3DCB50418FCB28B36A32544172A2FA263ECB5041E16A99BC6A32544197C96C453ECB5041AB783FBD6A3254413B2B071D44CB5041C13007086B3254410AD7A3A04ACB50410AD7A3006B325441EC902BA44ACB5041B099AC066B325441F3D1BBB54ACB50412DF5A8066B32544156F4C1184BCB50412D1EBA7C6B32544149AF342F4CCB5041EA8603026D325441E47DDAA44CCB5041F8D98C996D32544146D98BA24CCB5041BF5A8CA06D325441666666F650CB50417B14AED76B325441AE47E16A53CB504148E17A646B325441333333A354CB5041D7A3706D6B3254410AD7A31056CB50410AD7A3A06A3254419A9999B956CB5041E17A144E69325441A4703DAA57CB5041D7A3705D68325441EC51B85E59CB50411F85EBA1673254419A9999E95BCB5041000000F066325441E5B4681B5CCB5041DD0FCAF2663254419A9999895CCB50418FC2F5F866325441C0823C4C5ACB504151E923AF603254416C0C134B58CB50415959E3EF57325441BCC1CB4958CB5041B62A4FEA573254413BBBBCE350CB5041D2E9577D543254410B9E85E24FCB5041A2546F8D4E3254416A6042F64CCB5041A2546F8D4E325441E55998224BCB5041BE1357B74A325441DB089DF249CB5041F7C530714A325441C3F528EC49CB504148E17A44463254411F7FF8B748CB50411EA382494132544155469AA745CB5041A7919A9C343254410BBDABCF42CB5041054FCE012E3254415C8FC22541CB50419A9999F92D3254418FC2F5383FCB5041D7A3704D29325441CE1C4E0543CB50414DCC44ED273254414B8B0E0843CB504104A25BF027325441C7E6ED0843CB5041F26256F1273254416870DF1843CB5041F07D56EA2732544198A617E448CB50411D79FB7E2E3254413252BBFB49CB50416F6452BE2F3254416AA4E97E4ACB504121CF975130325441D0CCE90B4BCB5041FEC7AD82313254411B0608044BCB50410C7DEF3631325441F83F360B4BCB5041920A2FC4303254418D37E5CC4ACB504189F217252F325441B81E85FB45CB50410000006026325441713D0A7737CB504152B81EA51A325441CDCCCCFC33CB50418FC2F5981632544152B81E4533CB5041295C8F0216325441D7A3703D38CB50411F85EB3112325441333333E330CB50417B14AEC717325441713D0AC724CB50419A9999A9203254413D0AD7B323CB5041CDCCCC6C213254413D0AD73323CB50417B14AE3722325441713D0A3724CB5041F6285C5F23325441EC51B8CE24CB5041D7A370ED24325441EC51B8AE24CB50411F85EB3126325441EC51B82E24CB5041CDCCCC2C28325441713D0A9723CB504152B81EB5293254419A99997922CB5041B81E857B2B32544114AE471120CB50419A9999092F32544148E17A941ECB504185EB51583132544152B81E651DCB5041713D0A9733325441F6285C2F1CCB5041A4703DBA36325441000000201BCB5041E17A14BE393254415C8FC2251ACB504185EB51683C325441C3F528FC18CB5041C3F5288C3E3254410000000018CB504152B81EB5403254413D0AD73317CB5041713D0A974232544148E17AC416CB5041D7A3705D443254419A99999916CB504152B81E05463254410AD7A36016CB5041CDCCCC6C47325441CDCCCCFC16CB5041A4703D9A4A325441295C8FB217CB5041666666164E32544152B81EB519CB50413333335352325441A4703DAA1CCB50417B14AE3757325441713D0A371FCB50418FC2F5B85B325441000000B020CB5041B81E851B5F325441B81E851B23CB5041F6285C0F6432544152B81EE525CB5041E17A148E693254413D0AD75327CB5041C3F5280C6C32544148E17A4428CB504152B81E956E3254410AD7A30029CB5041295C8F5271325441F6285C3F29CB5041A4703D1A74325441CDCCCC4C29CB5041E17A149E753254419A9999E929CB50418FC2F5F875325441666666C62ACB5041C3F5285C7632544178946F462CCB50419DD9E84F773254414D7B8E502DCB504139D19DA877325441E4CB31372ECB5041145FCE24783254413C8659FA2ECB5041B056837D78325441F2A1BAF22FCB50418BE4B3F9783254411F4301C031CB5041E39EDBBC7932544133C09BED32CB5041FDC2875C7A325441E334EB7334CB504199BA3CB57A32544114AE47A135CB50410AD7A3A07A32544149C59BF236CB504199BA3CB57A325441B81E850B38CB5041666666A67A325441666666C638CB5041000000707A325441F6285C8F39CB50419A9999497A32544146A6EF573ACB5041809690157A3254417F9559093BCB5041036A99CE79325441D74F81CC3BCB5041863DA287793254418D6BE2C43CCB5041E945ED2E7932544104F1C7993DCB50418BE4B3F978325441FE49B6273ECB50416C19F6E778325441F3FB92433FCB50418BE4B3F9783254414BB6BA0640CB50410EB8BCB278325441A370E2C940CB5041D021418F78325441A4703DEA41CB5041CDCCCC6C78325441666666A643CB504114AE47E177325441BAF8616D44CB50412B20FF2975325441EF26BF3F43CB504140EE96007432544191A4CF3743CB5041B4536AFD73325441549AD4DD42CB5041BACF1DA673325441063B7CBD42CB5041F0F4642673325441F371E70E42CB50414352F8A870325441A0E95FAA41CB50410882436170325441F94D50683FCB50413CC4F0C46E325441B8812FF93ECB5041C394C3A46E3254417D9669DB3ECB5041CCB2249C6E3254419128D5C13ECB504171A3BC946E325441373CFA9D3ECB504123EF5A8A6E325441C1A725913ECB504127E7A3866E325441CC0F952F3ECB5041ED2F506C6E325441FFA1CF6A38CB50419AF27EBE6C325441461FED5737CB5041359D9CE36A325441695C485537CB504147ABB8DE6A325441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527029 - 525343
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000036000000295C8FA26ECC5041C3F5289C9D2D5441000000806ECC5041F6285CDF9C2D54415C8FC2A56ACC5041C3F528FC872D54415C8FC23565CC5041F6285C7F6A2D54413D0AD7F364CC50411F85EB316A2D54418FC2F5C85ECC5041EC51B81E662D5441A4703D0A5BCC5041F6285CCF632D54418FC2F5A855CC504100000010652D544152B81E1552CC504166666636662D544185EB51784FCC50419A999919662D5441D7A3700D4DCC5041A4703DFA642D54410AD7A3D049CC5041CDCCCC9C632D5441EC51B89E46CC5041B81E856B622D5441295C8F6242CC5041295C8F32622D5441333333C341CC5041A4703D2A622D5441295C8FA236CC5041EC51B80E622D54413333336339CC50417B14AEA76B2D54410000000039CC50417B14AE27792D5441A4703D1A39CC5041B81E85BB792D544152B81E753ACC50410AD7A360812D54419A9999593DCC504152B81EB5912D5441C3F5289C3ECC5041713D0AB7942D5441000000B03ECC5041CDCCCC5C952D5441C3F528DC40CC5041000000E0992D54418FC2F58842CC50418FC2F5E89D2D5441EC51B80E44CC50410AD7A370A22D544185EB512845CC50419A999979A52D54419A99992945CC50410AD7A3B0A62D54410AD7A3A04CCC504185EB5158AD2D5441C3F5285C79CC50418FC2F558D52D54419A9999297ECC504114AE4731D92D5441AE47E1BA81CC50418FC2F5D8D22D5441E17A14CE8ACC5041CDCCCCBCD72D544114AE475186CC5041666666C6DE2D544185EB51D88BCC50419A999989E02D54413D0AD7B398CC50415C8FC225E42D5441CDCCCC3C9DCC5041CDCCCC2CE52D5441000000C09DCC5041A4703D7AE32D544100000060A3CC504185EB5168E42D544152B81E55ABCC5041B81E85BBE52D5441666666F6AECC504166666656E62D54410AD7A3B0B0CC5041F6285CEFE42D544152B81EB5B5CC5041A4703D8AE52D5441CDCCCC1CB7CC504100000020DD2D54415C8FC235B4CC504148E17A54DC2D5441333333C3B1CC50410AD7A3C0DB2D544148E17AF49ECC504100000080D62D544185EB514890CC504152B81E15D32D5441333333F389CC50410AD7A360D22D5441A4703D9A89CC504100000050D22D544148E17A448BCC5041713D0AE7C02D5441CDCCCCCC74CC504114AE4701BF2D54418FC2F5A874CC50411F85EB41BE2D5441295C8FA26ECC5041C3F5289C9D2D5441
+</a>
+
+<b>
+010600000001000000010300000001000000230000001F85EB31B6CC5041295C8FF2C22D54417B14AE17B1CC5041713D0A27C32D54418FC2F5D8B0CC5041EC51B8CEBA2D5441666666D6B4CC50410AD7A3A0BA2D5441666666D6B4CC5041CDCCCCECB72D54418FC2F538AFCC50419A999959B32D54415C8FC235A6CC50418FC2F5C8B02D5441A4703DDA9CCC504133333303AE2D54417CB3894591CC5041B8ECFAB4AA2D5441233392778CCC504102095492A82D54419776BFFF8ACC50413D72778D942D544193DD974389CC50412DBF41AB822D54412CAF71BA86CC50414C1698FA692D544138C478B982CC5041D2A01BFA672D54416C0054637FCC5041D2A01BFA672D5441666666E67BCC50411F85EB11682D544148E17AC479CC5041EC51B87E682D54419A99998976CC5041D7A3701D692D5441000000706CCC5041666666866A2D54415C8FC23565CC5041F6285C7F6A2D544113BC6E9E6BCC504180F369408D2D54416FEC337770CC504173F49487A72D5441E4F56E2373CC504195083403B62D54418FC2F5A874CC50411F85EB41BE2D5441CDCCCCCC74CC504114AE4701BF2D544148E17A448BCC5041713D0AE7C02D54417B14AE2795CC5041713D0AA7C32D5441295C8FB296CC504148E17A14C42D544185EB51589BCC5041F6285C5FC52D5441A4703D1AABCC5041EC51B8BEC92D54415C8FC265B1CC5041713D0AB7CB2D54419A9999C9B1CC5041295C8FB2C82D544185EB51A8B3CC504166666636C82D54419A9999E9B5CC5041EC51B81EC92D54411F85EB31B6CC5041295C8FF2C22D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527142 - 3178566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000060000003333338323C85041AE47E1EA39435441A4703D7A1FC8504152B81E95514354418FC2F5F85CC850413D0AD773664354410AD7A3A05CC850413D0AD7434D435441713D0A3740C8504148E17AA4434354413333338323C85041AE47E1EA39435441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000024668F85CC850418E7F7D4B66435441C723BE575DC850417CF2BB34664354414A3CE3B85CC850411E38D64B4D435441A083055F58C850416843D1D24B435441E88134684DC8504129A63A1C4843544131BCB0DA38C8504184FE052641435441D2D05EB324C8504144FEAA503A435441F934987F23C85041317305003A435441C6734E851FC850412470F95251435441944BB81120C85041F46087C85143544155CC464129C85041A5EF97E654435441080821043BC85041C205B1ED5A435441F36B97C243C85041B5E45FE55D4354411D3576FE51C85041336105BA62435441024668F85CC850418E7F7D4B66435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527142 - 3577526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000060000003333338323C85041AE47E1EA39435441A4703D7A1FC8504152B81E95514354418FC2F5F85CC850413D0AD773664354410AD7A3A05CC850413D0AD7434D435441713D0A3740C8504148E17AA4434354413333338323C85041AE47E1EA39435441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000024668F85CC850418E7F7D4B66435441C723BE575DC850417CF2BB34664354414A3CE3B85CC850411E38D64B4D435441A083055F58C850416843D1D24B435441E88134684DC8504129A63A1C4843544131BCB0DA38C8504184FE052641435441D2D05EB324C8504144FEAA503A435441F934987F23C85041317305003A435441C6734E851FC850412470F95251435441944BB81120C85041F46087C85143544155CC464129C85041A5EF97E654435441080821043BC85041C205B1ED5A435441F36B97C243C85041B5E45FE55D4354411D3576FE51C85041336105BA62435441024668F85CC850418E7F7D4B66435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527279 - 57946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000A000000AE47E15A84C45041666666C649395441CDCCCC9C84C450419A9999A94A395441E17A142E85C45041333333A34C395441F6285C5F85C45041EC51B84E4D39544148E17AF485C45041333333534F3954411F85EB4186C450410AD7A3605039544114AE47B1B4C450410AD7A35050395441B81E859BB4C450415C8FC2154C395441AE47E19AB4C45041295C8F0248395441AE47E15A84C45041666666C649395441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000A77947DFB1C450413E9E9C51503954413E18E5A2B4C45041F0CB695050395441363DE39BB4C45041B95E0E284C395441B81E859BB4C450415C8FC2154C3954414542E49AB4C45041A1E88615483954415692CD6AACC45041A5323C4F48395441C3AFB8F1A5C450417C09DA8B483954418F5D63089FC45041140BB1CC483954416983CB2391C45041165CBB4E493954417A0F80E28AC4504124C047894939544193BD163188C450412AC27CA249395441220EF03986C45041483CE0B4493954414FEEC9E984C45041411F2CC149395441B20BE35A84C45041DD5566C6493954411D97295D84C45041F24844CE49395441CDCCCC9C84C450419A9999A94A3954416050FDB984C45041EF432F0F4B39544126D11ACE85C45041355E49CE4E39544148E17AF485C45041333333534F3954414BC1183786C45041EC68FB3A503954416721F04186C4504173D5A3605039544131CE4EEB88C45041470EB95F5039544171AD642B8BC450412C8EF25E50395441E601082D8BC45041554FEB5E5039544128D809658FC450419271715D50395441EB6487E793C450418384DD5B50395441A4EC93F596C450412696E25A50395441F07DBE8C98C45041494A565A50395441605E422A9DC45041A22DBF58503954416DE8F0F6A5C4504118FAB65550395441F900854EA6C45041DACC9855503954410225A932A8C4504116FBF15450395441BE366C29AAC45041CABE4454503954411174FBC6AAC4504192740E54503954412FDCBE5DABC45041D781DA5350395441F7E18161ACC450416D00815350395441B6C10782ADC4504103961D535039544184026C2DAFC4504116528A5250395441A77947DFB1C450413E9E9C5150395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527301 - 3031821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E85AB69BB5041333333731C2B54410AD7A3706ABB50413D0AD7331D2B544152B81E256DBB5041AE47E11A222B54419A9999D96FBB5041EC51B8DE2D2B54410AD7A3A070BB5041A4703D8A302B5441CDCCCC5C72BB5041B81E852B332B54410AD7A3A077BB5041F6285CFF362B544114AE47A17BBB5041666666563B2B54418FC2F5E87EBB50419A9999D93D2B5441CDCCCC9C89BB5041D7A370BD332B5441EC51B81E91BB5041EC51B87E2C2B5441CDCCCCAC88BB50415C8FC2151B2B5441D7A3703D95BB50410AD7A3700F2B54417B14AEA79BBB50418FC2F548092B5441666666069BBB5041000000E0082B54410AD7A3C086BB5041E17A148E0D2B5441C3F528DC80BB5041B81E857B0E2B5441CDCCCC2C84BB504185EB5158102B5441B81E85AB69BB5041333333731C2B5441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000A088C8017FBB5041DDA126C23D2B54419FA27FD483BB504122292044412B5441CA43BA728BBB5041D00AEF37472B5441CE35BB178DBB50419668FA7C472B5441D1E9FF409BBB5041F8BE69E0432B54412181B7AA9BBB5041FCF787B0432B5441360447CF9FBB5041A4F66AE3412B5441E9C83A34A6BB50415A3478BC3E2B5441D28C8384ABBB5041DCF168673B2B54411AD03DEEAFBB5041C4EFA085382B544176D69593B8BB504140ACADBF332B54417A3340CEBBBB50419F7517AD312B5441DE89AF31B8BB504145CA684E2C2B5441A80A437CB5BB5041B2E8B113282B54418FA6DA34B2BB5041876EA877232B544189A6DA34B2BB50418B3682D9222B5441653D0FD4B0BB504183E8BAE6202B5441D9A91F8CAEBB5041D2AE76861E2B54417C47D506ADBB5041A5BA5A7B1C2B5441D25B5899ACBB504150E360A01B2B5441C3BFC9B3A8BB50417C7DDA96162B5441D5B75CAFA0BB504178048D051E2B5441C3384BA2A2BB5041F150C10B212B5441B0B93995A4BB504109E84C32232B5441D5D93334A7BB5041481A24C2262B5441419DF9C1A9BB50411693922F2A2B54419D8D2E99ACBB504146E780FE2C2B54412432A28BB0BB50418E7CEF84322B544196EB0AAEB0BB50416E746FFF332B5441A0CC583FABBB5041922F7640382B54417008D792A5BB5041DCF168673B2B544122C438B89FBB50415A3478BC3E2B5441C0820DD49DBB5041C8F4DB5D3F2B5441BF3F8CC699BB504174756A44402B54419A63AE9A96BB50410988235F412B54413B29578594BB5041DF71862B412B5441C257B34785BB5041FD8123D5372B5441A088C8017FBB5041DDA126C23D2B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527301 - 3621060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E85AB69BB5041333333731C2B54410AD7A3706ABB50413D0AD7331D2B544152B81E256DBB5041AE47E11A222B54419A9999D96FBB5041EC51B8DE2D2B54410AD7A3A070BB5041A4703D8A302B5441CDCCCC5C72BB5041B81E852B332B54410AD7A3A077BB5041F6285CFF362B544114AE47A17BBB5041666666563B2B54418FC2F5E87EBB50419A9999D93D2B5441CDCCCC9C89BB5041D7A370BD332B5441EC51B81E91BB5041EC51B87E2C2B5441CDCCCCAC88BB50415C8FC2151B2B5441D7A3703D95BB50410AD7A3700F2B54417B14AEA79BBB50418FC2F548092B5441666666069BBB5041000000E0082B54410AD7A3C086BB5041E17A148E0D2B5441C3F528DC80BB5041B81E857B0E2B5441CDCCCC2C84BB504185EB5158102B5441B81E85AB69BB5041333333731C2B5441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000A088C8017FBB5041DDA126C23D2B54419FA27FD483BB504122292044412B5441CA43BA728BBB5041D00AEF37472B5441CE35BB178DBB50419668FA7C472B5441D1E9FF409BBB5041F8BE69E0432B54412181B7AA9BBB5041FCF787B0432B5441360447CF9FBB5041A4F66AE3412B5441E9C83A34A6BB50415A3478BC3E2B5441D28C8384ABBB5041DCF168673B2B54411AD03DEEAFBB5041C4EFA085382B544176D69593B8BB504140ACADBF332B54417A3340CEBBBB50419F7517AD312B5441DE89AF31B8BB504145CA684E2C2B5441A80A437CB5BB5041B2E8B113282B54418FA6DA34B2BB5041876EA877232B544189A6DA34B2BB50418B3682D9222B5441653D0FD4B0BB504183E8BAE6202B5441D9A91F8CAEBB5041D2AE76861E2B54417C47D506ADBB5041A5BA5A7B1C2B5441D25B5899ACBB504150E360A01B2B5441C3BFC9B3A8BB50417C7DDA96162B5441D5B75CAFA0BB504178048D051E2B5441C3384BA2A2BB5041F150C10B212B5441B0B93995A4BB504109E84C32232B5441D5D93334A7BB5041481A24C2262B5441419DF9C1A9BB50411693922F2A2B54419D8D2E99ACBB504146E780FE2C2B54412432A28BB0BB50418E7CEF84322B544196EB0AAEB0BB50416E746FFF332B5441A0CC583FABBB5041922F7640382B54417008D792A5BB5041DCF168673B2B544122C438B89FBB50415A3478BC3E2B5441C0820DD49DBB5041C8F4DB5D3F2B5441BF3F8CC699BB504174756A44402B54419A63AE9A96BB50410988235F412B54413B29578594BB5041DF71862B412B5441C257B34785BB5041FD8123D5372B5441A088C8017FBB5041DDA126C23D2B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527400 - 34433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000713D0AF7C2C85041EC51B88E3A3D54413D0AD743C2C850417B14AEF73B3D54417B14AE07C0C850413D0AD7E33D3D544148E17A24BBC850410AD7A3E03E3D5441B81E856BB1C85041EC51B85E3D3D5441C3F5284CAEC8504114AE47413D3D5441E17A14BEAEC85041EC51B89E353D5441295C8FE2B1C8504114AE4751353D5441AE47E1DAB1C85041713D0A07333D5441CDCCCC4CB4C8504185EB51A8323D544114AE47D1B4C85041B81E858B333D54415C8FC2B5B7C850417B14AED7333D54413D0AD703B9C850417B14AE37283D5441CDCCCC4CB4C85041D7A3709D273D544148E17AD4ADC85041AE47E17A273D5441CDCCCCFCACC85041CDCCCC0C353D5441AE47E1AAACC85041C3F5284C493D5441F6285C6FACC85041C3F5280C583D544114AE4751ACC85041B81E858B5F3D544148E17A24BBC850415C8FC2D5623D54415C8FC225C8C85041EC51B86E653D5441E17A142ED4C85041A4703DBA663D544185EB5108D5C85041E17A142E5A3D5441000000E0E1C85041666666D65A3D5441A4703DAAE2C8504152B81E95553D544148E17A54F1C850411F85EBD1563D5441295C8FD2F5C850419A9999C9373D5441B81E854BF7C85041EC51B89E2D3D54411F85EBA1F5C850415C8FC2152E3D5441E17A149EF2C850415C8FC2152E3D5441AE47E16AEDC85041E17A144E2D3D5441333333E3E0C8504114AE47B12B3D54415C8FC2E5DBC85041C3F5282C2B3D544148E17A04D2C850411F85EB212A3D544166666606CBC85041A4703DDA293D5441AE47E1CAC9C85041713D0AA72A3D5441B81E859BC8C850411F85EB512D3D544185EB5188C8C850415C8FC265313D544133333363CEC85041EC51B89E313D5441A4703D2ACEC850413D0AD723343D5441713D0A17CAC850417B14AED7333D5441C3F528DCC9C850410AD7A320373D54419A999909C8C850413D0AD763373D544133333383C3C85041C3F528EC363D5441713D0AF7C2C85041EC51B88E3A3D5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000005CEF3F8AADC8504160637E262C3D5441300D3A49ADC8504125B8CE3D303D5441A5B824DDACC850412EB8D1DF3C3D54416680936AADC85041365BAFFB3C3D544136A6D6DBADC8504135F13B42313D544106CC194DAEC850415659EFBD283D5441B06163C2ADC850419A03489E283D54415CEF3F8AADC8504160637E262C3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527400 - 73827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000713D0AF7C2C85041EC51B88E3A3D54413D0AD743C2C850417B14AEF73B3D54417B14AE07C0C850413D0AD7E33D3D544148E17A24BBC850410AD7A3E03E3D5441B81E856BB1C85041EC51B85E3D3D5441C3F5284CAEC8504114AE47413D3D5441E17A14BEAEC85041EC51B89E353D5441295C8FE2B1C8504114AE4751353D5441AE47E1DAB1C85041713D0A07333D5441CDCCCC4CB4C8504185EB51A8323D544114AE47D1B4C85041B81E858B333D54415C8FC2B5B7C850417B14AED7333D54413D0AD703B9C850417B14AE37283D5441CDCCCC4CB4C85041D7A3709D273D544148E17AD4ADC85041AE47E17A273D5441CDCCCCFCACC85041CDCCCC0C353D5441AE47E1AAACC85041C3F5284C493D5441F6285C6FACC85041C3F5280C583D544114AE4751ACC85041B81E858B5F3D544148E17A24BBC850415C8FC2D5623D54415C8FC225C8C85041EC51B86E653D5441E17A142ED4C85041A4703DBA663D544185EB5108D5C85041E17A142E5A3D5441000000E0E1C85041666666D65A3D5441A4703DAAE2C8504152B81E95553D544148E17A54F1C850411F85EBD1563D5441295C8FD2F5C850419A9999C9373D5441B81E854BF7C85041EC51B89E2D3D54411F85EBA1F5C850415C8FC2152E3D5441E17A149EF2C850415C8FC2152E3D5441AE47E16AEDC85041E17A144E2D3D5441333333E3E0C8504114AE47B12B3D54415C8FC2E5DBC85041C3F5282C2B3D544148E17A04D2C850411F85EB212A3D544166666606CBC85041A4703DDA293D5441AE47E1CAC9C85041713D0AA72A3D5441B81E859BC8C850411F85EB512D3D544185EB5188C8C850415C8FC265313D544133333363CEC85041EC51B89E313D5441A4703D2ACEC850413D0AD723343D5441713D0A17CAC850417B14AED7333D5441C3F528DCC9C850410AD7A320373D54419A999909C8C850413D0AD763373D544133333383C3C85041C3F528EC363D5441713D0AF7C2C85041EC51B88E3A3D5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000005CEF3F8AADC8504160637E262C3D5441300D3A49ADC8504125B8CE3D303D5441A5B824DDACC850412EB8D1DF3C3D54416680936AADC85041365BAFFB3C3D544136A6D6DBADC8504135F13B42313D544106CC194DAEC850415659EFBD283D5441B06163C2ADC850419A03489E283D54415CEF3F8AADC8504160637E262C3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527480 - 187818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E0000006666664633D05041713D0AC7565154416666661637D050411F85EB6158515441C3F5281C39D05041CDCCCCCC58515441B81E858B47D050419A9999F94051544148E17AF438D0504148E17AF43751544185EB51581ED050413D0AD793275154411F85EB210CD05041E17A14FE44515441713D0A170FD05041713D0A07465154410AD7A3F011D0504166666606475154410000009016D05041E17A146E49515441AE47E12A1AD05041F6285C1F4B5154413333330320D05041A4703DEA4D515441A4703DCA2ED05041333333E3545154416666664633D05041713D0AC756515441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3F011D05041666666064751544133C29B7514D050415508F755485154418178009016D050415A89146E495154410F3DAF0A17D05041BDC3ADA749515441AE47E12A1AD05041F6285C1F4B51544155DA432C1ED050419E273F094D51544102C1330320D050414A353DEA4D515441A44D350320D05041B26E3EEA4D515441A4703DCA2ED05041333333E3545154416666664633D05041713D0AC756515441D42F631637D05041D52AEA6158515441BEF8641637D050419F42EA6158515441C3F5281C39D05041CDCCCCCC58515441FFF7B37E47D05041C525C10E415154413F5FED091ED05041FDBD73122851544104CC13011ED0504115DFBE2028515441615EB6D31DD05041C4B6036A285154410BEE284A1DD0504107EC2C48295154414DCAF02C12D0504110E07C3B3B5154413C51460010D05041D4028FBE3E515441310384970FD050410A3EC1673F5154418A6671680FD05041172EC8B33F515441340B59300ED0504154BFD8AB41515441AB314EE50DD05041782E0C254251544112B0EB210CD05041823514FE445154414E5AAE5B0CD050411A3F4B1245515441713D0A170FD05041713D0A07465154410AD7A3F011D050416666660647515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527571 - 187718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000210000000000007070BA50413D0AD7A3312D54415C8FC25573BA50419A999949362D5441AE47E11A75BA504185EB5108342D54411F85EB6176BA5041333333F3322D5441295C8F6274BA50410AD7A380172D544185EB516864BA5041333333B3182D54415C8FC23553BA5041D7A370FD192D544185EB519855BA5041AE47E19A1B2D544148E17A3457BA50417B14AE571C2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D5441F6285CDF59BA504152B81E751E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441666666965CBA5041AE47E1CA1F2D54417B14AEA75CBA5041295C8F72212D54411F85EBF15FBA5041CDCCCC2C252D544152B81EF562BA504152B81E65282D54413D0AD7E364BA5041713D0A27292D5441CDCCCCCC68BA5041C3F5281C2D2D544114AE47C168BA50410AD7A3102F2D544148E17A5469BA5041C3F528FC2F2D5441295C8F4269BA5041AE47E10A312D54418FC2F56868BA50415C8FC2B5312D5441EC51B8DE68BA5041295C8F02342D5441A4703DCA69BA50415C8FC295342D54413D0AD7336ABA5041B81E857B352D5441333333F369BA504185EB5178362D54410AD7A3506ABA504166666666372D5441295C8F726CBA5041B81E852B362D544185EB51086DBA5041C3F528FC312D5441666666466EBA5041D7A3707D302D54410000007070BA50413D0AD7A3312D5441110000000AD7A3A073BA5041B81E858B322D54419A99997970BA504114AE47D12E2D544114AE470172BA504185EB51B82D2D5441A4703DEA6FBA50418FC2F5E82B2D5441666666E66DBA504148E17AB42B2D544152B81E756ABA5041C3F528CC282D544114AE47B169BA50411F85EBC1262D544152B81EB566BA50411F85EB11262D5441D7A370BD65BA504114AE47B1242D54410000003068BA504133333383242D5441B81E856B6CBA5041A4703D6A282D544185EB51F86EBA504185EB51F8292D54410000009070BA5041A4703D8A2B2D5441B81E851B73BA5041A4703D6A2C2D5441CDCCCC8C72BA5041B81E851B2F2D54415C8FC22574BA5041CDCCCCFC312D54410AD7A3A073BA5041B81E858B322D5441
+</a>
+
+<b>
+0106000000010000000103000000010000003600000085EB516864BA5041333333B3182D5441BDE98B8355BA5041A51733D1192D54411AA714E957BA5041BBABAA8A1B2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D54411350E18F59BA504105B3342C1E2D5441C9E3EDC559BA50414FA7E5411E2D5441FBA741005ABA5041A093927D1E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441666666965CBA5041AE47E1CA1F2D5441195F7DA45CBA504184E05624212D54410051F6E25CBA5041F6CAA32A212D544127F7790D5FBA50418D4812BA222D54412F06A4D866BA50411EF9E6002B2D54419DE844D866BA50416204DEEA2A2D5441D697BA3C6ABA50419AEEF3CF2D2D5441F2DF0DF669BA50416FCECE4C342D5441EEEA34636BBA5041AAEAADB3332D54413BD50EEB6DBA5041CF8553312F2D5441F255F80F67BA50418AF239EC272D5441D12984BD66BA5041686C9C90272D5441062A84BD66BA5041AC52FE8D272D54416C2D46E765BA50411813F0AA262D54412C39FC145FBA50415515F9391F2D5441E88329A861BA5041CE5C56D11E2D54415EC9657063BA50412A9D995B1F2D5441D173B92B66BA5041CCA9A213212D54415956D26866BA5041DAC97F3F212D544184D7908166BA50415F342445212D544153A5758466BA5041C6C6FA68212D5441B5D5173867BA5041903D107D242D5441CB29477667BA504124BCB786242D54410000003068BA504133333383242D54414961866868BA504191AB53AC242D5441A2D3140B6ABA504124E74EED242D5441C8957C416CBA5041A8DB5D15272D5441EEBDFB156DBA5041CD3EB7B1282D54414165A85F6DBA50419F0544E2282D5441EFACB2C16DBA50411D90151D292D54414BC9B2E46EBA504102037361292D5441DA4FCCB173BA50419A5B82CB2B2D544183ED14CA74BA5041FFE27E362F2D5441B9E34B1574BA5041FD07054B302D5441CA5B663576BA50419FA5738F302D5441B66006DA75BA5041642AE0A72B2D5441E929739F75BA504157090083282D5441577D688D75BA5041F754D01E282D5441D75D499872BA50413BB9FCA2172D54411DBC2A7670BA5041841CEBCB172D5441058F50EE6FBA5041BFB419D6172D54413D8915A66FBA5041A89783DB172D5441E8ECF8B46ABA5041C344553A182D544185EB516864BA5041333333B3182D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527571 - 359135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000210000000000007070BA50413D0AD7A3312D54415C8FC25573BA50419A999949362D5441AE47E11A75BA504185EB5108342D54411F85EB6176BA5041333333F3322D5441295C8F6274BA50410AD7A380172D544185EB516864BA5041333333B3182D54415C8FC23553BA5041D7A370FD192D544185EB519855BA5041AE47E19A1B2D544148E17A3457BA50417B14AE571C2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D5441F6285CDF59BA504152B81E751E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441666666965CBA5041AE47E1CA1F2D54417B14AEA75CBA5041295C8F72212D54411F85EBF15FBA5041CDCCCC2C252D544152B81EF562BA504152B81E65282D54413D0AD7E364BA5041713D0A27292D5441CDCCCCCC68BA5041C3F5281C2D2D544114AE47C168BA50410AD7A3102F2D544148E17A5469BA5041C3F528FC2F2D5441295C8F4269BA5041AE47E10A312D54418FC2F56868BA50415C8FC2B5312D5441EC51B8DE68BA5041295C8F02342D5441A4703DCA69BA50415C8FC295342D54413D0AD7336ABA5041B81E857B352D5441333333F369BA504185EB5178362D54410AD7A3506ABA504166666666372D5441295C8F726CBA5041B81E852B362D544185EB51086DBA5041C3F528FC312D5441666666466EBA5041D7A3707D302D54410000007070BA50413D0AD7A3312D5441110000000AD7A3A073BA5041B81E858B322D54419A99997970BA504114AE47D12E2D544114AE470172BA504185EB51B82D2D5441A4703DEA6FBA50418FC2F5E82B2D5441666666E66DBA504148E17AB42B2D544152B81E756ABA5041C3F528CC282D544114AE47B169BA50411F85EBC1262D544152B81EB566BA50411F85EB11262D5441D7A370BD65BA504114AE47B1242D54410000003068BA504133333383242D5441B81E856B6CBA5041A4703D6A282D544185EB51F86EBA504185EB51F8292D54410000009070BA5041A4703D8A2B2D5441B81E851B73BA5041A4703D6A2C2D5441CDCCCC8C72BA5041B81E851B2F2D54415C8FC22574BA5041CDCCCCFC312D54410AD7A3A073BA5041B81E858B322D5441
+</a>
+
+<b>
+0106000000010000000103000000010000003600000085EB516864BA5041333333B3182D5441BDE98B8355BA5041A51733D1192D54411AA714E957BA5041BBABAA8A1B2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D54411350E18F59BA504105B3342C1E2D5441C9E3EDC559BA50414FA7E5411E2D5441FBA741005ABA5041A093927D1E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441666666965CBA5041AE47E1CA1F2D5441195F7DA45CBA504184E05624212D54410051F6E25CBA5041F6CAA32A212D544127F7790D5FBA50418D4812BA222D54412F06A4D866BA50411EF9E6002B2D54419DE844D866BA50416204DEEA2A2D5441D697BA3C6ABA50419AEEF3CF2D2D5441F2DF0DF669BA50416FCECE4C342D5441EEEA34636BBA5041AAEAADB3332D54413BD50EEB6DBA5041CF8553312F2D5441F255F80F67BA50418AF239EC272D5441D12984BD66BA5041686C9C90272D5441062A84BD66BA5041AC52FE8D272D54416C2D46E765BA50411813F0AA262D54412C39FC145FBA50415515F9391F2D5441E88329A861BA5041CE5C56D11E2D54415EC9657063BA50412A9D995B1F2D5441D173B92B66BA5041CCA9A213212D54415956D26866BA5041DAC97F3F212D544184D7908166BA50415F342445212D544153A5758466BA5041C6C6FA68212D5441B5D5173867BA5041903D107D242D5441CB29477667BA504124BCB786242D54410000003068BA504133333383242D54414961866868BA504191AB53AC242D5441A2D3140B6ABA504124E74EED242D5441C8957C416CBA5041A8DB5D15272D5441EEBDFB156DBA5041CD3EB7B1282D54414165A85F6DBA50419F0544E2282D5441EFACB2C16DBA50411D90151D292D54414BC9B2E46EBA504102037361292D5441DA4FCCB173BA50419A5B82CB2B2D544183ED14CA74BA5041FFE27E362F2D5441B9E34B1574BA5041FD07054B302D5441CA5B663576BA50419FA5738F302D5441B66006DA75BA5041642AE0A72B2D5441E929739F75BA504157090083282D5441577D688D75BA5041F754D01E282D5441D75D499872BA50413BB9FCA2172D54411DBC2A7670BA5041841CEBCB172D5441058F50EE6FBA5041BFB419D6172D54413D8915A66FBA5041A89783DB172D5441E8ECF8B46ABA5041C344553A182D544185EB516864BA5041333333B3182D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528163 - 2997506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C00000052B81E95560E514166666606899F54419A9999E9620E5141713D0AD7639F5441C3F5283C620E514148E17AC4629F544185EB51D85B0E51418FC2F5F8619F5441EC51B8FE200E51418FC2F5585A9F54410AD7A360200E5141CDCCCC6C5E9F5441F6285C9F1D0E5141AE47E18A709F544152B81E45180E5141E17A14FE809F54413D0AD7F3180E51411F85EB11829F5441AE47E17A350E5141F6285CBF859F5441713D0A47550E514185EB51D8899F544152B81E95560E514166666606899F5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003D0AD7F3180E51411F85EB11829F5441F4CB768C280E514189A99C14849F54412C5B8728430E5141FB329782879F544187B1AED1540E5141447032C9899F5441713D0A47550E514185EB51D8899F5441CEB7E55C560E51415647BA29899F544152B81E95560E514166666606899F54415D9CB8575E0E5141C9A62D9F719F544197829EB85E0E5141F58D818E709F54413BDF0A054B0E51418CE740306E9F5441BFE94159340E5141522B9F766B9F54418988F2C71E0E51415BBCF1DE689F5441BC02F51C1E0E5141E6E5EC506D9F54416863ABBE1D0E5141BC55FBBC6F9F5441B77459A41D0E5141A17E116A709F5441200EEF961D0E514185C6C6A4709F5441283A0F461D0E5141C879549D719F544170A307BF1C0E51414017523C739F5441FF682A0E1B0E5141EBBBA76E789F54412E75081A190E51415F59BA6F7E9F5441110E9C8C180E51412C6F5E22809F544152B81E45180E5141E17A14FE809F54413D0AD7F3180E51411F85EB11829F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583706 - 3076092
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000160000007B14AE97A9DA50418FC2F5184ADE5441AE47E19AA9DA5041E17A141E4BDE5441AE47E1AAA9DA50410AD7A34050DE5441666666C6A9DA5041F6285C0F59DE5441AE47E10AAADA5041C3F5284C6FDE5441AE47E13AAADA5041B81E85BB7EDE5441E17A142EABDA5041295C8F627FDE5441AE47E1DABCDA5041666666D678DE544100000040D1DA50417B14AE4771DE5441D7A3702DD2DA5041EC51B8EE6FDE54418FC2F5F8D1DA50410AD7A3005EDE54413D0AD7D3D1DA50416666667651DE54419A9999C9D1DA5041CDCCCC1C4EDE544185EB51C8D1DA5041EC51B89E4DDE5441AE47E1AAD1DA50413333334343DE5441713D0AB7D0DA50419A99999942DE5441333333D3C6DA50417B14AE2746DE5441713D0A67BEDA50411F85EB2147DE544133333343B9DA50418FC2F53847DE5441B81E853BAADA5041295C8F4243DE544148E17A84A9DA50411F85EBD143DE54417B14AE97A9DA50418FC2F5184ADE544105000000666666F6C4DA5041A4703DEA50DE5441B81E856BC7DA5041E17A148E52DE544185EB5168C5DA5041713D0AB754DE5441C3F5282CC3DA5041D7A370ED52DE5441666666F6C4DA5041A4703DEA50DE5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F441813CAADA50410E59495743DE5441BB3C51ABA9DA5041969657D843DE54416C0473BBA9DA50419F64DBC64ADE5441B0B4D907ABDA504102884E254BDE5441B6AA6189ADDA5041D8D57FAE4BDE54419BA75178B0DA5041E130F57E4CDE544108B02E8FB3DA5041161DDA6A4DDE54416508D69BB6DA50414E345A0C4EDE544185CA268DB9DA50415844C0464EDE544104E7F24BBCDA50410FD0183B4EDE544131E2A8F3BEDA5041D6FFADE34DDE5441BD122492C1DA50413BF762584DDE5441BF3E18F4C2DA504106864B3C4DDE5441CA823265C4DA50418DB810294DDE544173E5554AC6DA50415A3482144DDE54411C789EDEC8DA50419CA425024DDE5441DEDB5771CADA50414385FEF84CDE5441B126E2C3CCDA50415B2273F94CDE5441A4796EC7CEDA5041368281044DDE544143777CDCCFDA5041247376484DDE5441E18F0CC9D1DA5041734895DD4DDE5441FDC8F99ED1DA50410E59495743DE544125B500D0D0DA5041D669F6AA42DE5441E5AB69A2C6DA50418897572D46DE5441206F1663C1DA504171FB3EC946DE54411FC24222BDDA5041F8569B2747DE5441FD8E090CBADA50413282713547DE5441AFBBAA1CB9DA50411619CD2E47DE544155090158B5DA504166607A3046DE5441358BE41FB2DA5041BDB7355745DE5441CBAFE08CAFDA50417BAE77A944DE54410474C1EEACDA5041F504CCF843DE5441004BC916ACDA5041F5E1DBBF43DE5441F441813CAADA50410E59495743DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583706 - 3372839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000160000007B14AE97A9DA50418FC2F5184ADE5441AE47E19AA9DA5041E17A141E4BDE5441AE47E1AAA9DA50410AD7A34050DE5441666666C6A9DA5041F6285C0F59DE5441AE47E10AAADA5041C3F5284C6FDE5441AE47E13AAADA5041B81E85BB7EDE5441E17A142EABDA5041295C8F627FDE5441AE47E1DABCDA5041666666D678DE544100000040D1DA50417B14AE4771DE5441D7A3702DD2DA5041EC51B8EE6FDE54418FC2F5F8D1DA50410AD7A3005EDE54413D0AD7D3D1DA50416666667651DE54419A9999C9D1DA5041CDCCCC1C4EDE544185EB51C8D1DA5041EC51B89E4DDE5441AE47E1AAD1DA50413333334343DE5441713D0AB7D0DA50419A99999942DE5441333333D3C6DA50417B14AE2746DE5441713D0A67BEDA50411F85EB2147DE544133333343B9DA50418FC2F53847DE5441B81E853BAADA5041295C8F4243DE544148E17A84A9DA50411F85EBD143DE54417B14AE97A9DA50418FC2F5184ADE544105000000666666F6C4DA5041A4703DEA50DE5441B81E856BC7DA5041E17A148E52DE544185EB5168C5DA5041713D0AB754DE5441C3F5282CC3DA5041D7A370ED52DE5441666666F6C4DA5041A4703DEA50DE5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F441813CAADA50410E59495743DE5441BB3C51ABA9DA5041969657D843DE54416C0473BBA9DA50419F64DBC64ADE5441B0B4D907ABDA504102884E254BDE5441B6AA6189ADDA5041D8D57FAE4BDE54419BA75178B0DA5041E130F57E4CDE544108B02E8FB3DA5041161DDA6A4DDE54416508D69BB6DA50414E345A0C4EDE544185CA268DB9DA50415844C0464EDE544104E7F24BBCDA50410FD0183B4EDE544131E2A8F3BEDA5041D6FFADE34DDE5441BD122492C1DA50413BF762584DDE5441BF3E18F4C2DA504106864B3C4DDE5441CA823265C4DA50418DB810294DDE544173E5554AC6DA50415A3482144DDE54411C789EDEC8DA50419CA425024DDE5441DEDB5771CADA50414385FEF84CDE5441B126E2C3CCDA50415B2273F94CDE5441A4796EC7CEDA5041368281044DDE544143777CDCCFDA5041247376484DDE5441E18F0CC9D1DA5041734895DD4DDE5441FDC8F99ED1DA50410E59495743DE544125B500D0D0DA5041D669F6AA42DE5441E5AB69A2C6DA50418897572D46DE5441206F1663C1DA504171FB3EC946DE54411FC24222BDDA5041F8569B2747DE5441FD8E090CBADA50413282713547DE5441AFBBAA1CB9DA50411619CD2E47DE544155090158B5DA504166607A3046DE5441358BE41FB2DA5041BDB7355745DE5441CBAFE08CAFDA50417BAE77A944DE54410474C1EEACDA5041F504CCF843DE5441004BC916ACDA5041F5E1DBBF43DE5441F441813CAADA50410E59495743DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528596 - 987105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000D7A370FDED135141C3F528EC8C885441A4703D2AF1135141EC51B8EE8E8854410AD7A360F5135141295C8FB2918854410AD7A330F8135141295C8FB29388544114AE4731FB135141E17A14CE95885441B81E85BBFB13514152B81EA5968854413D0AD7F3FE135141295C8F42988854413D0AD71301145141AE47E15A9988544166666626031451410AD7A3509A885441CDCCCC7C0514514185EB51689B885441EC51B86E0714514148E17A649C8854417B14AE8709145141A4703D4A9D885441B81E854B0B145141AE47E1FA9D885441CDCCCC8C0E14514148E17A449F885441D7A370CD1114514152B81E95A08854415C8FC245141451419A999979A18854411F85EBE117145141295C8FC2A2885441000000F01A145141B81E85CBA38854411F85EBB11C145141A4703D2AA4885441333333731E1451419A999989A48854415C8FC29521145141295C8F52A5885441F6285C4F24145141B81E851BA68854415C8FC2A52414514185EB5108A18854413D0AD783241451415C8FC2B59E88544114AE477124145141D7A3706D9C885441713D0A2724145141CDCCCC5C9A885441E17A140E241451413333335398885441F6285C5F24145141000000F094885441C3F528FC231451410AD7A3D094885441713D0A5720145141666666A693885441295C8F821D145141666666C69288544185EB51981A145141713D0A9791885441333333C316145141C3F5283C908854416666661614145141B81E853B8F885441295C8F92081451418FC2F5588A88544152B81ED502145141A4703DEA87885441D7A3706DFF1351410AD7A36086885441B81E85ABF8135141000000D08E88544148E17AB4F5135141713D0AA78C8854411F85EBA1F2135141E17A14AE8A885441EC51B87EF01351410AD7A34089885441295C8F82EE135141295C8F028888544100000010EC135141000000C0868854410AD7A380E913514114AE47018A885441D7A370FDED135141C3F528EC8C885441
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000009DC38483F1135141831F7ABF7E88544150E83233F1135141E111F2137F885441CF143FCCF01351414696B0AD7F885441B784E548F0135141A960D7718088544160B3B2D3EF135141B922DC2081885441C95EDE73EF1351414888F7AF818854417216A1B7EE135141011413C9828854414626CB37EE135141A669FA87838854416F901DE6ED135141E2C6F3018488544182E12058ED135141DA24FDD5848854416CE93518ED135141ACCF7035858854416ADABC8DEC135141E4B83A048688544100000010EC135141000000C086885441470D99ADEC135141E91322118788544137D191C0ED135141C90CB19E878854413FD4BDE8EE13514124CCA83E88885441375B5D10F01351415CAD88EC888854419D7AAF7CF1135141C1699DD78988544147A936C5F2135141BC4833B48A885441207F4EB4F313514133713B5E8B8854411CB4BFB0F4135141E9E04B008C885441DB691DC8F5135141BF1058B58C885441D88654CEF61351416FC86B698D8854410AE147E8F713514160E3CE388E885441713D0AA7F813514152B81EC58E885441E87E7419F91351417E5A06388E8854417F715F78F91351413234F9C28D88544177DC3444FA13514131C09BC78C8854413CF5B35CFB135141B129B46D8B88544199ACD067FC1351417DF14D248A8854416AE05C86FD1351412C6CA1C088885441E539980AFF13514147D12CE4868854410AD7A31000145141F6285C9F85885441C285FB00FF135141B3B7621C85885441910E4B19FE135141285DAEAC848854413AC398E7FC13514191A54B1984885441227D3BACFB13514191AA3F8183885441215A348DFA1351418E20DDF682885441E43FD507F913514183C8223B82885441FDD41F5DF71351415215686D818854413B3E6CFCF51351412DBF5BC38088544122D507A2F31351412A3AEDA07F8854413D0AD783F1135141B81E859B7E8854419DC38483F1135141831F7ABF7E885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528597 - 369560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000028000000F6285CEF65045141CDCCCC5CC37C5441333333C360045141F6285CCFC67C5441295C8F225E045141CDCCCC8CC77C544152B81E755A045141E17A14BEC67C5441E17A149E5B0451415C8FC2C5C87C5441295C8F725D04514133333343C87C54417B14AE3765045141B81E858BD47C544185EB51D86A0451419A999939DE7C5441CDCCCC2C6C045141B81E859BE07C5441D7A3705D6D04514100000060DF7C544148E17AC46D045141AE47E12ADE7C54415C8FC2E56D0451410AD7A350DD7C544185EB51C86D0451413D0AD713DC7C54413D0AD7D36D0451413D0AD763DB7C5441333333536E045141CDCCCCBCDA7C5441333333136F04514152B81E65DA7C54418FC2F5B86F0451415C8FC275DA7C54419A9999497004514114AE4761DB7C544114AE478170045141AE47E17ADB7C5441713D0AC77004514152B81E55DB7C544185EB51E870045141AE47E1DAD97C5441EC51B83E71045141666666E6D87C5441B81E851B7204514152B81E05D87C54417B14AEC772045141A4703D0AD87C5441F6285C5F7304514100000070D87C5441D7A370DD7304514166666616D97C54411F85EB317404514133333333D97C544166666696740451410AD7A320D97C544185EB5108750451411F85EBD1D87C54419A999969760451418FC2F5A8D77C544166666696770451418FC2F5E8D67C544185EB516878045141CDCCCC5CD67C5441B81E856B7904514114AE47D1D47C5441EC51B83E770451419A9999A9D17C54416666662677045141B81E855BC87C54410AD7A3E0760451419A9999C9BB7C5441CDCCCCCC76045141CDCCCC7CB47C54410AD7A3007204514148E17A54BA7C544148E17AD46C045141B81E851BBE7C5441F6285CEF65045141CDCCCC5CC37C5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000066666696770451418FC2F5E8D67C54419831D95278045141CBDE226BD67C5441E1BF5B6279045141A58A42DFD47C544108CC2F39770451419C2701A8D17C5441A116ED1D77045141C528A2D4C67C54410AD7A3E0760451419A9999C9BB7C544179E224CD7604514192CE359DB47C54413FD8D1007604514171094E76B57C5441DC686F04720451416FAEDB4FBA7C54410AD7A3007204514148E17A54BA7C544133E59B836E045141CC21AAE0BC7C544101B519746604514129E2A1F7C27C5441F6285CEF65045141CDCCCC5CC37C5441333333C360045141F6285CCFC67C5441295C8F225E045141CDCCCC8CC77C5441E508A2995A04514113F318C6C67C5441DD9748865A045141B947D9C1C67C54418AEF4E945B04514183DBA8B4C87C5441C21A1F6F5D04514160842844C87C5441295C8F725D04514133333343C87C54417B14AE3765045141B81E858BD47C544185EB51D86A0451419A999939DE7C544162E9F02B6C045141E538FB99E07C54417823D4606D0451411D81D555DF7C5441FCDE76B66D045141924EED54DE7C54410DC9EACA6D045141C391C92FDC7C544185EB51C86D0451413D0AD713DC7C54413D0AD7D36D0451413D0AD763DB7C5441333333536E045141CDCCCCBCDA7C544183F4DCAC6E045141CD95DA93DA7C5441333333136F04514152B81E65DA7C5441F2E9B37C6F045141FB04B66FDA7C54418FC2F5B86F0451415C8FC275DA7C54418F1FE40E700451415BE7AE01DB7C5441FB7C487770045141DDA34876DB7C5441713D0AC77004514152B81E55DB7C544185EB51E870045141AE47E1DAD97C5441EC51B83E71045141666666E6D87C5441B81E851B7204514152B81E05D87C54417B14AEC772045141A4703D0AD87C5441F6285C5F7304514100000070D87C54417E010CCD73045141EBB1C300D97C54413B6E25E37304514194655818D97C544145E4EBED7304514100C8041CD97C5441D6D1D602740451412B532623D97C544121EE4E2774045141FF16952FD97C5441872E9B2A7404514122E7B430D97C544193A618AA740451418F960713D97C54415681E02475045141F163EAB9D87C54419A999969760451418FC2F5A8D77C544166666696770451418FC2F5E8D67C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528730 - 3008112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000E17A14EE9C175141D7A3702DCA815441333333639D175141A4703D0ACD81544114AE47D19F1751418FC2F548D5815441000000E0A1175141295C8F12DE81544185EB5118A2175141B81E851BE18154413D0AD7A39C17514148E17A14E28154413333337398175141C3F528DCE2815441CDCCCC1C961751418FC2F558E3815441F6285C8F901751413D0AD783E4815441C3F528FC90175141A4703DEAEB8154418FC2F52891175141AE47E15AEE815441D7A3701D91175141B81E85EBEE815441713D0A2791175141A4703D9AF78154410AD7A39091175141F6285CBFFE8154411F85EB919B1751410AD7A380FC815441D7A370DDA41751418FC2F5B8FB815441E17A146EAB175141666666D6FB8154410AD7A3D0B7175141B81E85ABFC8154413D0AD733C6175141333333E3FC8154411F85EBD1C61751411F85EBF1FC815441C3F5287CCD17514114AE4791FD8154413D0AD7A3D1175141295C8F72FE81544100000010D21751417B14AE57FE81544148E17A74D51751413D0AD7A3FF8154415C8FC295D81751413333333301825441C3F5282CDD175141A4703D5A0082544166666616E01751418FC2F5C8FF81544148E17AB4E217514185EB51D8FE815441E17A146EE31751415C8FC295FE81544133333303EA1751415C8FC255FB8154417B14AEF7E6175141713D0A37F581544148E17A74E5175141AE47E19AED8154417B14AEC7E31751419A9999E9E4815441CDCCCCFCE4175141295C8F22DE815441D7A3706DE61751413D0AD763D8815441AE47E17ADD175141E17A14AED281544148E17AB4D81751413D0AD793D0815441EC51B81ED3175141EC51B83ECE815441CDCCCCCCCF17514185EB5108CD81544185EB5118CD1751417B14AE37CC815441F6285C3FC31751411F85EB71CB815441F6285CAFC2175141713D0AA7C9815441AE47E1FABF175141AE47E18AC9815441C3F5285CBC175141AE47E1AAC9815441295C8FE2B2175141F6285CFFCA815441295C8F22B117514100000060CB815441D7A3703DAD175141000000F0CB8154418FC2F508AB175141000000F0CB8154418FC2F5E8A917514100000060CB8154419A9999E9A81751410AD7A330CB8154415C8FC275A3175141CDCCCCCCCA815441E17A14EE9C175141D7A3702DCA815441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000FE63D1E3E917514155CAAF16FB8154411387BB1DE8175141F6C80A86F7815441CD65BD5FC71751418FA91142F581544140E782E2C71751413F2C610BFD8154415CC63633CD175141D2EB5E67FD81544100000010D21751417B14AE57FE81544148E17A74D51751413D0AD7A3FF8154418956030BD81751417DB965CD008254417EAB4A51E3175141CC6178F1FD815441FE63D1E3E917514155CAAF16FB815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528730 - 3215129
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000E17A14EE9C175141D7A3702DCA815441333333639D175141A4703D0ACD81544114AE47D19F1751418FC2F548D5815441000000E0A1175141295C8F12DE81544185EB5118A2175141B81E851BE18154413D0AD7A39C17514148E17A14E28154413333337398175141C3F528DCE2815441CDCCCC1C961751418FC2F558E3815441F6285C8F901751413D0AD783E4815441C3F528FC90175141A4703DEAEB8154418FC2F52891175141AE47E15AEE815441D7A3701D91175141B81E85EBEE815441713D0A2791175141A4703D9AF78154410AD7A39091175141F6285CBFFE8154411F85EB919B1751410AD7A380FC815441D7A370DDA41751418FC2F5B8FB815441E17A146EAB175141666666D6FB8154410AD7A3D0B7175141B81E85ABFC8154413D0AD733C6175141333333E3FC8154411F85EBD1C61751411F85EBF1FC815441C3F5287CCD17514114AE4791FD8154413D0AD7A3D1175141295C8F72FE81544100000010D21751417B14AE57FE81544148E17A74D51751413D0AD7A3FF8154415C8FC295D81751413333333301825441C3F5282CDD175141A4703D5A0082544166666616E01751418FC2F5C8FF81544148E17AB4E217514185EB51D8FE815441E17A146EE31751415C8FC295FE81544133333303EA1751415C8FC255FB8154417B14AEF7E6175141713D0A37F581544148E17A74E5175141AE47E19AED8154417B14AEC7E31751419A9999E9E4815441CDCCCCFCE4175141295C8F22DE815441D7A3706DE61751413D0AD763D8815441AE47E17ADD175141E17A14AED281544148E17AB4D81751413D0AD793D0815441EC51B81ED3175141EC51B83ECE815441CDCCCCCCCF17514185EB5108CD81544185EB5118CD1751417B14AE37CC815441F6285C3FC31751411F85EB71CB815441F6285CAFC2175141713D0AA7C9815441AE47E1FABF175141AE47E18AC9815441C3F5285CBC175141AE47E1AAC9815441295C8FE2B2175141F6285CFFCA815441295C8F22B117514100000060CB815441D7A3703DAD175141000000F0CB8154418FC2F508AB175141000000F0CB8154418FC2F5E8A917514100000060CB8154419A9999E9A81751410AD7A330CB8154415C8FC275A3175141CDCCCCCCCA815441E17A14EE9C175141D7A3702DCA815441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000FE63D1E3E917514155CAAF16FB8154411387BB1DE8175141F6C80A86F7815441CD65BD5FC71751418FA91142F581544140E782E2C71751413F2C610BFD8154415CC63633CD175141D2EB5E67FD81544100000010D21751417B14AE57FE81544148E17A74D51751413D0AD7A3FF8154418956030BD81751417DB965CD008254417EAB4A51E3175141CC6178F1FD815441FE63D1E3E917514155CAAF16FB815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528843 - 985321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E000000295C8F4201075141D7A3703D6877544152B81E05000751413333338367775441295C8F42FC0651419A9999A965775441D7A370CDF8065141C3F5283C6C77544148E17AC4EF06514152B81EB5797754417B14AE77ED06514114AE47F17C775441F6285CDFEB065141EC51B84E7F7754419A999959E90651418FC2F5E8827754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C775441C3F5286CE00651418FC2F56890775441713D0A47DC065141295C8FE2957754419A999939D80651411F85EBC19A775441D7A370BDD7065141713D0A579B7754413D0AD7B3D60651415C8FC2959C775441D7A3703DD50651419A9999299E7754410AD7A330D4065141CDCCCC9C9F77544152B81EB5D306514114AE4761A07754410AD7A350D3065141D7A3708DA2775441A4703DCAD3065141333333D3A3775441F6285C9FD4065141F6285CAFA4775441AE47E12AD80651418FC2F518A6775441F6285CCFD806514185EB51C8A777544152B81EF5D90651411F85EB11A677544114AE4711DF065141713D0A979D775441EC51B81EE6065141D7A3706D927754417B14AEC7ED065141EC51B8EE8577544152B81E95F3065141EC51B83E7D77544114AE474100075141CDCCCCBC69775441295C8F4201075141D7A3703D68775441
+</a>
+
+<b>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE857754410ADC9BE3F2065141E3587D487E77544160019617F70651412106A9D77777544179742F1AF80651410B5E95497677544122081505FA065141510AEB557377544114AE474100075141CDCCCCBC697754416A155842010751412801C33D6877544152B81E050007514133333383677754410ED497EBFC0651413B93C4FC65775441388F7A42FC06514113A4C5BA657754417961B33DF9065141AE56C2666B775441D7A370CDF8065141C3F5283C6C775441C9187A52F70651418EC33F716E77544148E17AC4EF06514152B81EB5797754419ABE997BED0651410701C4EB7C7754414EF36572ED065141D38F1CF97C775441F6285CDFEB065141EC51B84E7F77544136FFDF8FE9065141EF85729B8277544172525776E60651418521FB89877754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C7754418EA66D0DE1065141D86D45878F775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528945 - 3102105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000CDCCCC2C0A2351411F85EBC19584544148E17A94F12251415C8FC2A593845441A4703D0AEF225141CDCCCCCC978454415C8FC275EB22514133333363A184544148E17AE4E82251415C8FC275A8845441C3F528DCE7225141EC51B81EAD8454413D0AD713E7225141000000D0B184544185EB5158D92251417B14AE97B28454419A9999C9CC225141EC51B84EB3845441666666E6CD225141B81E850BBB84544148E17AC4EC2251411F85EB11B7845441EC51B85E0B235141295C8F62B58454419A9999691823514148E17A84B7845441E17A14EE18235141A4703D9AB7845441AE47E16A1B2351417B14AEE7B2845441D7A3708D1E235141713D0A47AE845441B81E85AB2523514114AE47E1A5845441CDCCCCBC2D2351411F85EBB19C845441A4703DFA2D2351411F85EB619B845441F6285C6F2D2351419A9999699A845441A4703D3A2C235141C3F5289C99845441F6285CAF2923514152B81EE59884544148E17A341D23514114AE478197845441CDCCCC2C0A2351411F85EBC195845441
+</a>
+
+<b>
+0106000000010000000103000000010000002600000056A071B9CE225141C843D4EEE5845441E1A203D3D7225141000DCD6BE684544118162DEADA225141F8838F7DE6845441D3BA743DDE22514162A959CFE68454418FC2F5D8E122514166666686E684544148B23103E2225141A6773FEDE6845441DB42F969E5225141840294CFE2845441502A3856E82251415D59E4F0E0845441025AB1F1EB225141BC6AF7A3DF8454416D04D277ED22514154F0A523DF845441885753BFF0225141DB20B837DE8454413CA8F336F3225141927F1199DD8454413BC9C6AEF5225141E21A5EFADC84544164A74675F922514196A421BEDB845441110D6AF8FC225141E9743257DA845441DE91447FFF22514123DCFCFAD88454416CE54A7601235141DB9BD075D78454417F7A8B9102235141265C0592D6845441B964968C04235141030D6B89D48454411303D61B06235141F7087EEFD284544123A8A2D0072351410B49B91CD1845441760069A20923514168E72A08CF84544160E8291F0A235141EFFA8679CE845441A84AB8500E235141CDE3BBDAC88454416053060411235141B121C0B9C48454417A9DB9B713235141912E3873C08454415D0975871623514102E1FC1BBB845441C33131DF1723514120FE708CB884544190BFFB8618235141E6664E89B7845441E08773390A2351411527B572B5845441FE652DC60723514171F13E95B584544194E0BF3DFB2251417198E745B684544160419BDAF2225141B6D220BCB68454418B4D9B8DEE225141F50DC0F8B6845441EDBFD032EF225141FCA9B17AC2845441F7D7CEB2CD2251411291632EC8845441131C30A5CE2251413C4868A3E384544156A071B9CE225141C843D4EEE5845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528945 - 3465935
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000CDCCCC2C0A2351411F85EBC19584544148E17A94F12251415C8FC2A593845441A4703D0AEF225141CDCCCCCC978454415C8FC275EB22514133333363A184544148E17AE4E82251415C8FC275A8845441C3F528DCE7225141EC51B81EAD8454413D0AD713E7225141000000D0B184544185EB5158D92251417B14AE97B28454419A9999C9CC225141EC51B84EB3845441666666E6CD225141B81E850BBB84544148E17AC4EC2251411F85EB11B7845441EC51B85E0B235141295C8F62B58454419A9999691823514148E17A84B7845441E17A14EE18235141A4703D9AB7845441AE47E16A1B2351417B14AEE7B2845441D7A3708D1E235141713D0A47AE845441B81E85AB2523514114AE47E1A5845441CDCCCCBC2D2351411F85EBB19C845441A4703DFA2D2351411F85EB619B845441F6285C6F2D2351419A9999699A845441A4703D3A2C235141C3F5289C99845441F6285CAF2923514152B81EE59884544148E17A341D23514114AE478197845441CDCCCC2C0A2351411F85EBC195845441
+</a>
+
+<b>
+0106000000010000000103000000010000002600000056A071B9CE225141C843D4EEE5845441E1A203D3D7225141000DCD6BE684544118162DEADA225141F8838F7DE6845441D3BA743DDE22514162A959CFE68454418FC2F5D8E122514166666686E684544148B23103E2225141A6773FEDE6845441DB42F969E5225141840294CFE2845441502A3856E82251415D59E4F0E0845441025AB1F1EB225141BC6AF7A3DF8454416D04D277ED22514154F0A523DF845441885753BFF0225141DB20B837DE8454413CA8F336F3225141927F1199DD8454413BC9C6AEF5225141E21A5EFADC84544164A74675F922514196A421BEDB845441110D6AF8FC225141E9743257DA845441DE91447FFF22514123DCFCFAD88454416CE54A7601235141DB9BD075D78454417F7A8B9102235141265C0592D6845441B964968C04235141030D6B89D48454411303D61B06235141F7087EEFD284544123A8A2D0072351410B49B91CD1845441760069A20923514168E72A08CF84544160E8291F0A235141EFFA8679CE845441A84AB8500E235141CDE3BBDAC88454416053060411235141B121C0B9C48454417A9DB9B713235141912E3873C08454415D0975871623514102E1FC1BBB845441C33131DF1723514120FE708CB884544190BFFB8618235141E6664E89B7845441E08773390A2351411527B572B5845441FE652DC60723514171F13E95B584544194E0BF3DFB2251417198E745B684544160419BDAF2225141B6D220BCB68454418B4D9B8DEE225141F50DC0F8B6845441EDBFD032EF225141FCA9B17AC2845441F7D7CEB2CD2251411291632EC8845441131C30A5CE2251413C4868A3E384544156A071B9CE225141C843D4EEE5845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529013 - 3099530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000052B81EF5A51B514148E17A94C98B5441B81E85EBAC1B514100000070CD8B5441D7A3704DB61B51413D0AD713D38B54413D0AD793B81B514100000040CF8B544166666696BA1B51411F85EB61C48B54418FC2F548B81B5141C3F5286CC38B54417B14AE27B71B514166666656B98B544185EB51F8B51B5141F6285CDFAE8B5441CDCCCC2CAB1B5141C3F5289CAF8B5441A4703D5AA31B51411F85EBA1AF8B54410AD7A3B0A51B514100000080BA8B5441EC51B85EA61B5141713D0AA7C28B544152B81EF5A51B514148E17A94C98B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000C48863D8BE1B51413B154701AE8B5441AEE0AD50BE1B5141265FDBE8A68B5441A988B25FBE1B5141A2987CC8A68B54418730DB40BE1B514147D9D6AEA68B5441562FD2A2BC1B5141C50B619CA68B54419EFC6525B61B5141E2F125A1A68B54418D9CA43FAA1B51415CB9CBC6A68B54419F4FC9E0A21B5141ABFD6741A78B5441295C8F12A01B51410AD7A370A78B544103B5F7DA9D1B5141FF63DBAC9E8B5441852CFCC89D1B514151E4C4659E8B54412ACF4648991B5141F1A569209F8B54410CA4F410941B514115D35A30A08B5441FA3B23D88F1B51411E44BCD6A08B544153FDFFC68F1B5141127023E5A08B5441C9C6B3EF911B51413E6E4DC7A88B5441CFD8578F921B514194E0800AAB8B5441048CC192931B51413BE24B26AE8B544172288DA2941B51411A211368B18B54418848CDB2941B514172E73C9FB18B54417C7AB277961B514138474207B78B5441649A8043971B51412A4A1376B98B5441FBCA6246971B51416D27E37EB98B5441CB97F7EC971B51419C0AE426BC8B54411DEFD2F1971B51418EF29D3DBC8B54419D16F826981B514187218B16BD8B5441A7C64E34981B5141C312B674BD8B5441FEB8A83B981B5141EA2C1C97BD8B54412BEC7DAD981B5141A73A53C6C08B5441D1A66CB5981B5141A0263F04C18B5441B5C099E7981B5141EFBB7A66C28B544149F0690B991B514114FEB37DC28B544100EE07E89C1B51411049E3DCC48B5441696DBBCFA51B5141E6A44381C98B54413E79DA43A61B514118603C6AC48B5441F25771EDA51B5141345DF658BD8B54419E1888A2A41B5141FC743698B58B5441A4703D5AA31B51411F85EBA1AF8B54411796E8D1AA1B514125DAE153AF8B54418AC6600AB21B514177A36C08AF8B544185EB51F8B51B5141F6285CDFAE8B54417555C9F9B51B5141FE854FECAE8B5441B41D7868BC1B5141873D3C6CAE8B5441C48863D8BE1B51413B154701AE8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529013 - 3458676
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000052B81EF5A51B514148E17A94C98B5441B81E85EBAC1B514100000070CD8B5441D7A3704DB61B51413D0AD713D38B54413D0AD793B81B514100000040CF8B544166666696BA1B51411F85EB61C48B54418FC2F548B81B5141C3F5286CC38B54417B14AE27B71B514166666656B98B544185EB51F8B51B5141F6285CDFAE8B5441CDCCCC2CAB1B5141C3F5289CAF8B5441A4703D5AA31B51411F85EBA1AF8B54410AD7A3B0A51B514100000080BA8B5441EC51B85EA61B5141713D0AA7C28B544152B81EF5A51B514148E17A94C98B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000C48863D8BE1B51413B154701AE8B5441AEE0AD50BE1B5141265FDBE8A68B5441A988B25FBE1B5141A2987CC8A68B54418730DB40BE1B514147D9D6AEA68B5441562FD2A2BC1B5141C50B619CA68B54419EFC6525B61B5141E2F125A1A68B54418D9CA43FAA1B51415CB9CBC6A68B54419F4FC9E0A21B5141ABFD6741A78B5441295C8F12A01B51410AD7A370A78B544103B5F7DA9D1B5141FF63DBAC9E8B5441852CFCC89D1B514151E4C4659E8B54412ACF4648991B5141F1A569209F8B54410CA4F410941B514115D35A30A08B5441FA3B23D88F1B51411E44BCD6A08B544153FDFFC68F1B5141127023E5A08B5441C9C6B3EF911B51413E6E4DC7A88B5441CFD8578F921B514194E0800AAB8B5441048CC192931B51413BE24B26AE8B544172288DA2941B51411A211368B18B54418848CDB2941B514172E73C9FB18B54417C7AB277961B514138474207B78B5441649A8043971B51412A4A1376B98B5441FBCA6246971B51416D27E37EB98B5441CB97F7EC971B51419C0AE426BC8B54411DEFD2F1971B51418EF29D3DBC8B54419D16F826981B514187218B16BD8B5441A7C64E34981B5141C312B674BD8B5441FEB8A83B981B5141EA2C1C97BD8B54412BEC7DAD981B5141A73A53C6C08B5441D1A66CB5981B5141A0263F04C18B5441B5C099E7981B5141EFBB7A66C28B544149F0690B991B514114FEB37DC28B544100EE07E89C1B51411049E3DCC48B5441696DBBCFA51B5141E6A44381C98B54413E79DA43A61B514118603C6AC48B5441F25771EDA51B5141345DF658BD8B54419E1888A2A41B5141FC743698B58B5441A4703D5AA31B51411F85EBA1AF8B54411796E8D1AA1B514125DAE153AF8B54418AC6600AB21B514177A36C08AF8B544185EB51F8B51B5141F6285CDFAE8B54417555C9F9B51B5141FE854FECAE8B5441B41D7868BC1B5141873D3C6CAE8B5441C48863D8BE1B51413B154701AE8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626538 - 3152509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000333333935C1551418FC2F578E62D5541B81E854B62155141AE47E11ADD2D554114AE47A16B15514114AE47D1CD2D55411F85EB916315514166666666C82D5541713D0A275A155141295C8F82C22D55417B14AE0746155141B81E858BB42D5541333333B344155141EC51B8FEB32D5541333333A34015514114AE4751B22D5541EC51B89E381551418FC2F538B02D5541C3F528FC2815514114AE4771AC2D55415C8FC2F524155141A4703DDAAB2D55417B14AE9726155141A4703D3AAF2D55415C8FC2452815514166666616B32D5541295C8FD22A155141000000B0B82D5541000000602D155141A4703DDABD2D5541D7A3708D2F1551415C8FC2C5C12D5541A4703D5A321551410AD7A310C62D554185EB510834155141E17A147EC82D5541713D0A7735155141C3F5286CCA2D5541EC51B80E36155141713D0AF7CA2D554114AE479139155141E17A142ECE2D554152B81E15321551418FC2F5C8DF2D5541EC51B8DE26155141713D0A27FA2D5541E17A142E26155141713D0A17092E5541666666C6431551415C8FC2150F2E5541333333F35315514185EB5198F42D5541333333935C1551418FC2F578E62D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000864C68353B155141EEA587590D2E554138481E1C3815514157F656030B2E5541621EF8D935155141CE194D66072E55411E30730B3415514142C810D7042E5541B93FDE4730155141FDD98B08032E5541C19E751E2D15514111821F9AFA2D55418F5EAB0727155141CE20BEC6F92D5541EC51B8DE26155141713D0A27FA2D5541E17A142E26155141713D0A17092E55419515FF533115514100447B600B2E5541864C68353B155141EEA587590D2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626538 - 3482201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000333333935C1551418FC2F578E62D5541B81E854B62155141AE47E11ADD2D554114AE47A16B15514114AE47D1CD2D55411F85EB916315514166666666C82D5541713D0A275A155141295C8F82C22D55417B14AE0746155141B81E858BB42D5541333333B344155141EC51B8FEB32D5541333333A34015514114AE4751B22D5541EC51B89E381551418FC2F538B02D5541C3F528FC2815514114AE4771AC2D55415C8FC2F524155141A4703DDAAB2D55417B14AE9726155141A4703D3AAF2D55415C8FC2452815514166666616B32D5541295C8FD22A155141000000B0B82D5541000000602D155141A4703DDABD2D5541D7A3708D2F1551415C8FC2C5C12D5541A4703D5A321551410AD7A310C62D554185EB510834155141E17A147EC82D5541713D0A7735155141C3F5286CCA2D5541EC51B80E36155141713D0AF7CA2D554114AE479139155141E17A142ECE2D554152B81E15321551418FC2F5C8DF2D5541EC51B8DE26155141713D0A27FA2D5541E17A142E26155141713D0A17092E5541666666C6431551415C8FC2150F2E5541333333F35315514185EB5198F42D5541333333935C1551418FC2F578E62D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000864C68353B155141EEA587590D2E554138481E1C3815514157F656030B2E5541621EF8D935155141CE194D66072E55411E30730B3415514142C810D7042E5541B93FDE4730155141FDD98B08032E5541C19E751E2D15514111821F9AFA2D55418F5EAB0727155141CE20BEC6F92D5541EC51B8DE26155141713D0A27FA2D5541E17A142E26155141713D0A17092E55419515FF533115514100447B600B2E5541864C68353B155141EEA587590D2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529354 - 153183
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000013000000333333B36C0F514148E17A64147A5441CDCCCC1C760F5141295C8F72FA795441EC51B83E760F514148E17A04FA79544185EB51786C0F51411F85EB91F67954418FC2F538670F514148E17A34027A5441F6285CFF600F5141F6285C1F0D7A54418FC2F538610F51417B14AE470D7A5441E17A146E610F5141A4703D9A0D7A5441F6285CCF610F5141295C8F320E7A54417B14AE37620F5141666666D60E7A5441C3F5280C660F5141AE47E1CA107A54418FC2F5B8660F5141B81E854B117A5441B81E85AB670F514100000000127A54418FC2F568680F5141A4703D7A127A5441B81E85BB680F5141F6285CAF127A5441713D0A87690F51417B14AE07137A5441000000306B0F5141295C8FC2137A5441333333336C0F51413D0AD733147A5441333333B36C0F514148E17A64147A54410103000000010000000900000085EB5128630F514133333343157A54419A9999F9640F514152B81E05117A5441CDCCCCAC610F5141B81E852B0F7A5441B81E85BB5F0F514166666616137A54419A9999695F0F5141CDCCCCAC137A5441666666E6400F514114AE4741577A54411F85EB31440F51418FC2F508597A54417B14AEE7620F5141B81E85EB157A544185EB5128630F514133333343157A5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000D14DE11A630F5141CAD85E4A0F7A54419FC34066630F51417C19D8700F7A5441CFBB7166630F51417A4A98700F7A54414F91C407660F5141E5C2A2C8107A5441735B2A0C660F5141F369E1CA107A5441F51C2A8A660F514138F0AE28117A54418FC2F5B8660F5141B81E854B117A5441B81E85AB670F514100000000127A544197C033CE670F5141131E6116127A5441942DF768680F51410F4E3C7A127A5441E829A794680F514109405A96127A5441B81E85BB680F5141F6285CAF127A5441713D0A87690F51417B14AE07137A5441000000306B0F5141295C8FC2137A5441333333336C0F51413D0AD733147A5441365DEE736C0F51411115704C147A54413C5833B36C0F5141E3397A64147A5441964A3D066F0F514146FC49FC0D7A5441A8CFD7F5700F514198DE2FA6087A5441299ECC1C760F5141602D8E72FA7954410B100529760F51412743E74AFA795441EC51B83E760F514148E17A04FA795441519152786C0F514198BFEB91F67954410E9FF638670F51415D1D7C34027A5441EFAD3022640F51410E1F589F077A5441F6285CFF600F5141F6285C1F0D7A5441307D730C610F51411B1786280D7A544173FAF638610F5141E20BAE470D7A54416FE8146E610F5141BA7D3D9A0D7A54413B1C5DCF610F5141F5138E320E7A5441CC83AE37620F514163FF65D60E7A5441825B713A620F514118CDCED70E7A5441179DEC1A630F514113E4314A0F7A5441D14DE11A630F5141CAD85E4A0F7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529566 - 59719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17AF44F075141E17A14DEBE765441A4703D2A3807514114AE47D1B4765441A4703DDA280751419A9999B9C07654410000008021075141AE47E13AC67654418FC2F5A8150751417B14AE07CF765441CDCCCCDC12075141CDCCCCBCD07654419A9999190F075141713D0A47D4765441713D0A371A075141C3F5287CE2765441333333E332075141CDCCCC1CD276544148E17AF44F075141E17A14DEBE765441
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000BEB57E6430075141FAF45F7B01775441A4703DAA3807514166666636FE7654418FC2F5083F0751418FC2F5A8FA7654413D0AD723460751410AD7A320F6765441D7A3707D4D075141B81E85FBF07654410AD7A31056075141713D0AB7EB765441E17A14AE5C0751413D0AD733E67654417B14AE0764075141295C8F52E07654410AD7A370680751413D0AD703DD765441000000A06B07514152B81EB5D9765441A4703DCA6F075141F6285CAFD4765441AE47E12A710751413D0AD783D4765441A4703D4A7C075141295C8F02C8765441E17A140E88075141CDCCCCCCBA765441D7A3706D87075141F6285CAFB8765441AE47E1BA83075141713D0A07B6765441000000A081075141D7A370BDB57654413D0AD7A37E075141295C8F32BA765441CDCCCCBC7B0751419A9999D9BC765441A4703D3A75075141B81E857BC27654411F85EBF16F0751419A999959C67654410AD7A3806907514148E17AD4CB765441333333A36807514114AE4781CC76544148E17A5467075141C3F5286CCC765441000000306607514114AE47C1CB7654412CB5AA6164075141174B5D78CA765441940AD41662075141C660DFD6C876544137B0830C61075141C0FC6819C876544197E782356007514113937380C7765441D2D019CD5F07514135D22B36C77654415B40218D5F075141EF1DA908C7765441DD9585525F075141A520F7DEC676544128AA9B005E075141C79D90EEC5765441A737DF705D07514132B04E88C57654418457547C5A0751414775156EC3765441227BE1245A0751414CE0DE2FC37654417473E56359075141DF9793A6C2765441169C862258075141B2DC1CEBC1765441E248C9BF570751414B3FBDC8C1765441328AB68B5707514197829CB6C17654417A056A145707514144A8148DC17654419A15088F5607514101ADA55EC1765441885C444B5607514169890E47C1765441BA65274155075141D0AD6AEAC07654417B14AEB75207514185EB5108C07654413B790AEC51075141DA0171B2BF76544109387C704F075141BD967835BF7654415FE4406C4F07514163D64538BF765441866F2E634607514193F3B533C576544134DDCD7E3F0751417276DEC3C9765441756B36033D075141C465AE68CB765441558DFDE03C07514127CA567FCB7654413D2A43E0380751410366CA25CE7654416C266BD03607514100E84383CF7654414486D3C636075141D9B99D89CF7654415A3F7E221B0751411F38EADFE1765441C4D9C5AD27075141FD7645B2F7765441BEB57E6430075141FAF45F7B01775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529781 - 990563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000005C8FC2A57415514185EB51285E6854413D0AD7535B155141C3F528BC5B685441EC51B83E5A1551411F85EBA15B685441295C8F123A155141E17A148E586854418FC2F5F838155141E17A14AE59685441AE47E19A39155141E17A141E5F6854411F85EB813B155141000000706F6854413D0AD7433D1551417B14AEE77A6854417B14AE773F1551417B14AE87846854413D0AD76344155141666666C683685441713D0AB748155141000000E0846854417B14AE17501551415C8FC2258668544152B81E25531551415C8FC22586685441713D0A875A155141E17A14AE856854415C8FC2D5611551419A9999B984685441E17A142E67155141F6285CAF83685441F6285C2F68155141C3F5288C83685441AE47E19A7415514148E17A14826854419A999919781551415C8FC2E5816854411F85EB517B155141CDCCCC6C846854411F85EBE18A155141AE47E13A96685441666666169A1551415C8FC2C59768544185EB51B899155141CDCCCC7C87685441295C8FD29915514148E17AD475685441295C8F229A155141D7A3703D656854415C8FC2A57415514185EB51285E685441
+</a>
+
+<b>
+01060000000100000001030000000100000047000000F0EF48418115514177481C368B685441ECB14A7A82155141E6DD039C8C6854417EE670BC83155141C09C5F0C8E6854419CA3E59087155141955D776D9268544136FB53018B1551412963F25E966854415D03721D8D155141C5E12D5396685441A152FE638E155141B6A6966796685441DB2B5CD38F15514191F5D0A4966854412731085C91155141894160CD9668544177BE9F1294155141E7FBA911976854413108ACF496155141BE9F1A0797685441560E2DC29915514110583924976854411EFB7CCF9915514119B4AB66946854412DB29DCF99155141B29DEF5F94685441DE11A3CB99155141376C3E2994685441F853E39D99155141FA7E6AB4916854411C66C38A991551411E12821E90685441CDCCCC6C99155141295C8FA28D6854416DE7FB39991551417593187C87685441713D0A479915514160E5D03284685441E926313099155141C976BEE77F6854412FDD24269915514191ED7C2F78685441CBA1453E99155141AE47E15272685441CBA14566991551411283C03A6E6854418FC2F5D8991551414260E5E866685441E815AE7E99155141CD11095C6568544170E01D799915514178689443656854411A387D7899155141142DD240656854418941607599155141E5D0223365685441F2D24DEA92155141EC51B8E66368544139B4C85E8F155141B81E855B63685441B07268F98B1551413D0AD7B3626854410C022B5786155141D578E9C6616854418D976E0A8315514104560E1D61685441A69BC4B07F155141105839A4606854418716D92E7A155141B29DEF775F685441EE7C3F9D431551414C3789D9596854418C58F6263D1551419103DF1859685441E030B0833C155141817AB1025B685441E030B0833C1551410E909C795F685441DBF518983C155141FF066F6361685441A1CE24FE3C155141F4CE15B9686854417D1D5F3B3D15514172A969446D68544143F66AA13D155141DF4826E4716854411E45A5DE3D15514133371DC17668544148E17A843E15514117D9CEA77B685441022B87FE3E155141FA7E6A447E685441581E034E3F155141B66245B88068544104560EA541155141A8C64BF783685441EA5B878B43155141CCEAA388846854415C470D7D481551413180C91E856854410F745D2050155141778C258A86685441194E5FA253155141778C258A8668544142B4D2FB5615514169C0876086685441439E8FFB56155141D564DFE685685441A75FFFAC5B1551414E40D5DF85685441EF75D0CA611551413180C91E856854412506813568155141BE9F1A27836854411174701D6B1551418D5CD81783685441611AB785741551413A12FB1682685441AE47E19A7415514148E17A1482685441830053BF741551410B13D610826854411CBBCF8575155141F13D4C0F82685441B2CD5E5878155141DDF59EF981685441BD2CF93D7B155141DBA2245D846854419F7DCA137C15514138CB7C4A856854415B43952B7D155141F8B8698A86685441D63E52B27E1551418C24C24988685441F271887D7F155141D6268F3189685441B7F25E7E80155141FEEA3C578A685441F0EF48418115514177481C368B685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529781 - 3569144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000005C8FC2A57415514185EB51285E6854413D0AD7535B155141C3F528BC5B685441EC51B83E5A1551411F85EBA15B685441295C8F123A155141E17A148E586854418FC2F5F838155141E17A14AE59685441AE47E19A39155141E17A141E5F6854411F85EB813B155141000000706F6854413D0AD7433D1551417B14AEE77A6854417B14AE773F1551417B14AE87846854413D0AD76344155141666666C683685441713D0AB748155141000000E0846854417B14AE17501551415C8FC2258668544152B81E25531551415C8FC22586685441713D0A875A155141E17A14AE856854415C8FC2D5611551419A9999B984685441E17A142E67155141F6285CAF83685441F6285C2F68155141C3F5288C83685441AE47E19A7415514148E17A14826854419A999919781551415C8FC2E5816854411F85EB517B155141CDCCCC6C846854411F85EBE18A155141AE47E13A96685441666666169A1551415C8FC2C59768544185EB51B899155141CDCCCC7C87685441295C8FD29915514148E17AD475685441295C8F229A155141D7A3703D656854415C8FC2A57415514185EB51285E685441
+</a>
+
+<b>
+01060000000100000001030000000100000047000000F0EF48418115514177481C368B685441ECB14A7A82155141E6DD039C8C6854417EE670BC83155141C09C5F0C8E6854419CA3E59087155141955D776D9268544136FB53018B1551412963F25E966854415D03721D8D155141C5E12D5396685441A152FE638E155141B6A6966796685441DB2B5CD38F15514191F5D0A4966854412731085C91155141894160CD9668544177BE9F1294155141E7FBA911976854413108ACF496155141BE9F1A0797685441560E2DC29915514110583924976854411EFB7CCF9915514119B4AB66946854412DB29DCF99155141B29DEF5F94685441DE11A3CB99155141376C3E2994685441F853E39D99155141FA7E6AB4916854411C66C38A991551411E12821E90685441CDCCCC6C99155141295C8FA28D6854416DE7FB39991551417593187C87685441713D0A479915514160E5D03284685441E926313099155141C976BEE77F6854412FDD24269915514191ED7C2F78685441CBA1453E99155141AE47E15272685441CBA14566991551411283C03A6E6854418FC2F5D8991551414260E5E866685441E815AE7E99155141CD11095C6568544170E01D799915514178689443656854411A387D7899155141142DD240656854418941607599155141E5D0223365685441F2D24DEA92155141EC51B8E66368544139B4C85E8F155141B81E855B63685441B07268F98B1551413D0AD7B3626854410C022B5786155141D578E9C6616854418D976E0A8315514104560E1D61685441A69BC4B07F155141105839A4606854418716D92E7A155141B29DEF775F685441EE7C3F9D431551414C3789D9596854418C58F6263D1551419103DF1859685441E030B0833C155141817AB1025B685441E030B0833C1551410E909C795F685441DBF518983C155141FF066F6361685441A1CE24FE3C155141F4CE15B9686854417D1D5F3B3D15514172A969446D68544143F66AA13D155141DF4826E4716854411E45A5DE3D15514133371DC17668544148E17A843E15514117D9CEA77B685441022B87FE3E155141FA7E6A447E685441581E034E3F155141B66245B88068544104560EA541155141A8C64BF783685441EA5B878B43155141CCEAA388846854415C470D7D481551413180C91E856854410F745D2050155141778C258A86685441194E5FA253155141778C258A8668544142B4D2FB5615514169C0876086685441439E8FFB56155141D564DFE685685441A75FFFAC5B1551414E40D5DF85685441EF75D0CA611551413180C91E856854412506813568155141BE9F1A27836854411174701D6B1551418D5CD81783685441611AB785741551413A12FB1682685441AE47E19A7415514148E17A1482685441830053BF741551410B13D610826854411CBBCF8575155141F13D4C0F82685441B2CD5E5878155141DDF59EF981685441BD2CF93D7B155141DBA2245D846854419F7DCA137C15514138CB7C4A856854415B43952B7D155141F8B8698A86685441D63E52B27E1551418C24C24988685441F271887D7F155141D6268F3189685441B7F25E7E80155141FEEA3C578A685441F0EF48418115514177481C368B685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529794 - 1056684
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000B81E85CBED165141F6285C8F006C5441CDCCCCFCD51651411F85EB81056C54413D0AD723D716514148E17A84076C544148E17AC4D81651410AD7A3600A6C5441713D0AC7DA165141666666E60D6C544166666656DE165141AE47E17A136C5441333333B3E1165141000000C0186C544166666696E316514152B81EB51B6C54418FC2F5F8E416514185EB51181E6C5441295C8F22E51651410AD7A3601E6C544185EB51E8E51651415C8FC2B51F6C5441295C8F12E8165141000000C0236C54413D0AD753E81651413D0AD743246C544114AE47D1EA165141EC51B84E296C5441CDCCCC7CF81651413D0AD7C3246C5441295C8F9206175141E17A144E1F6C5441CDCCCCBC1B175141D7A370BD196C5441C3F5284C2B175141AE47E17A166C5441C3F528AC441751415C8FC2B5116C54413D0AD7D34C1751410AD7A330106C5441000000F049175141F6285CCF096C5441000000B046175141CDCCCC4C026C5441AE47E13A4017514133333323F36B5441C3F5288C39175141E17A14EEF36B544185EB51D82C175141EC51B86EF56B5441EC51B8DE1B17514166666686F86B544185EB514804175141B81E85FBFC6B5441C3F5285CF716514185EB51A8FE6B5441B81E85CBED165141F6285C8F006C5441
+</a>
+
+<b>
+0106000000010000000103000000020000001C000000A5A25AEA49175141D8750FD9096C5441D679E4DC40175141A37D353A0B6C5441A4703DEA411751413D0AD7030B6C544181A25AEA4917514183750FD9096C5441FAB592FC491751419D66BA8E096C5441D730F0B147175141B8B6603C046C54413D0AD7B3401751410AD7A300056C5441A4703DDA27175141D7A3700D0A6C5441000000A01A1751418FC2F5D80C6C5441666666C6081751419A999959116C5441C3F528DCF71651418FC2F5D8166C5441295C8F22E51651410AD7A3601E6C544185EB51E8E51651415C8FC2B51F6C5441295C8F12E8165141000000C0236C5441E17A144EE816514185EB51A8236C5441D7A370BDF9165141333333A31C6C544117B8DBC0F9165141B9D516A21C6C5441DD28A227E81651412F618FEA236C544114AE47D1EA165141EC51B84E296C54417A839712F816514155F521E7246C5441295C8F9206175141E17A144E1F6C5441CDCCCCBC1B175141D7A370BD196C5441C3F5284C2B175141AE47E17A166C5441C3F528AC441751415C8FC2B5116C54413D0AD7D34C1751410AD7A330106C5441D1BCCDFD4C175141EACD1F1E106C5441ECAB0C3F4A175141C9FB0ADF096C5441A5A25AEA49175141D8750FD9096C5441050000009FCC13141D175141C5A96B8D126C5441BFD412790917514136FD6186176C544185EB51A80A1751413D0AD723176C54410AD7A3E01B175141E17A14CE126C54419FCC13141D175141C5A96B8D126C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529795 - 51678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000D000000713D0A47CD15514114AE47810969544152B81E35CC155141AE47E18A10695441AE47E10AC81551411F85EBF12B695441C3F5281CDE155141AE47E10A2869544152B81E95E9155141CDCCCC5C28695441B81E85EBF715514185EB51F8C7685441AE47E11ADD155141EC51B85EC268544100000080DA1551419A999999C26854417B14AE67D9155141295C8FC2C3685441F6285CAFD8155141C3F528CCC5685441AE47E1CAD715514148E17AC4CC685441AE47E1AAD4155141000000C0E4685441713D0A47CD15514114AE478109695441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000210D0DEED215514182D2F853E46854412E4BFB8DCD1551412E74AEAE076954414E82DDB2CE1551417400C16F02695441778DE63BD015514143C4F2CCFA685441A29FADF0D11551418EE09550F268544119714067D4155141645B5B10E66854419E25F75DD51551418B7AA061DF6854416AA78F8DD61551413C38B647D668544159824F58D7155141F445BB33D068544157EF691FD815514190AB4F30CA6854411E625DC3D8155141059C8C93C56854414BA7D683D91551415DE1BAA4C368544100000080DA1551419A999999C2685441AE47E11ADD155141EC51B85EC26854415CBFEF16DA1551416AE463BDC16854412C2781E4D715514162CA8F56C1685441CEF93A87D71551410CDF5E13C468544195AD7D6AD6155141A6C4BD6ECC685441210D0DEED215514182D2F853E4685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529795 - 85649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000D000000713D0A47CD15514114AE47810969544152B81E35CC155141AE47E18A10695441AE47E10AC81551411F85EBF12B695441C3F5281CDE155141AE47E10A2869544152B81E95E9155141CDCCCC5C28695441B81E85EBF715514185EB51F8C7685441AE47E11ADD155141EC51B85EC268544100000080DA1551419A999999C26854417B14AE67D9155141295C8FC2C3685441F6285CAFD8155141C3F528CCC5685441AE47E1CAD715514148E17AC4CC685441AE47E1AAD4155141000000C0E4685441713D0A47CD15514114AE478109695441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000210D0DEED215514182D2F853E46854412E4BFB8DCD1551412E74AEAE076954414E82DDB2CE1551417400C16F02695441778DE63BD015514143C4F2CCFA685441A29FADF0D11551418EE09550F268544119714067D4155141645B5B10E66854419E25F75DD51551418B7AA061DF6854416AA78F8DD61551413C38B647D668544159824F58D7155141F445BB33D068544157EF691FD815514190AB4F30CA6854411E625DC3D8155141059C8C93C56854414BA7D683D91551415DE1BAA4C368544100000080DA1551419A999999C2685441AE47E11ADD155141EC51B85EC26854415CBFEF16DA1551416AE463BDC16854412C2781E4D715514162CA8F56C1685441CEF93A87D71551410CDF5E13C468544195AD7D6AD6155141A6C4BD6ECC685441210D0DEED215514182D2F853E4685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 2951105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA73544152B81E95830A514166666646FE73544148E17AA4840A51415C8FC2C5FE735441713D0A37880A514185EB51D8FC735441295C8FA28D0A51419A999909FB73544100000040980A514100000010F973544185EB51389E0A514148E17AE4F8735441295C8F22B20A514185EB51B8FB73544133333393BC0A51418FC2F5A8FC7354413D0AD733C50A5141D7A3707DFC7354410AD7A330CB0A514185EB51D8FB7354419A9999B9BD0A5141333333D3DC7354417B14AE17BD0A51419A999959DB73544133333323B60A514133333323CB735441A4703DCAB10A514114AE4701C173544133333373AD0A5141295C8FE2B6735441F6285C9FA20A514148E17AA49D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E7354411F85EBD1880A514152B81E4594735441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005F76085E990A5141EA164F08C17354413BA4F82B9B0A514100FAD2FBC07354411ED70AD99E0A514146FAB5FCC0735441C03E9702A20A5141DE4079FDC0735441F4E1D092A70A51417DCCD0FEC073544177EB851BAB0A51413F07ABFFC0735441A4703DCAB10A514114AE4701C1735441B471CD02AF0A5141C0611F86BA735441D80394F7A70A5141A24D401AAA735441ED856AD6A20A5141FF85D5249E735441DCDB394A9E0A51418F0ACC8A93735441A50DDFC59B0A51413104A3AC8D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E735441681FB4A78C0A514172AC20D491735441E73E7AAF8A0A514195BD1C1593735441707870B8840A514115B99310977354415349B80E820A5141F47752E198735441D8E29A967F0A5141F9C237929A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441FE60187B840A51410FE95D58AE7354416501DC33890A51417BA8F4A8B973544183E5A9868B0A51411100993ABF7354411F85EB218C0A5141EC51B8AEC0735441FBAE202F8C0A514182CDDE18C17354413CCB574E8D0A514172078223C1735441F8B6A8C28E0A514182CDDE18C17354417D6D4688950A51410CCBD722C17354415F76085E990A5141EA164F08C1735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 3461119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA73544152B81E95830A514166666646FE73544148E17AA4840A51415C8FC2C5FE735441713D0A37880A514185EB51D8FC735441295C8FA28D0A51419A999909FB73544100000040980A514100000010F973544185EB51389E0A514148E17AE4F8735441295C8F22B20A514185EB51B8FB73544133333393BC0A51418FC2F5A8FC7354413D0AD733C50A5141D7A3707DFC7354410AD7A330CB0A514185EB51D8FB7354419A9999B9BD0A5141333333D3DC7354417B14AE17BD0A51419A999959DB73544133333323B60A514133333323CB735441A4703DCAB10A514114AE4701C173544133333373AD0A5141295C8FE2B6735441F6285C9FA20A514148E17AA49D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E7354411F85EBD1880A514152B81E4594735441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005F76085E990A5141EA164F08C17354413BA4F82B9B0A514100FAD2FBC07354411ED70AD99E0A514146FAB5FCC0735441C03E9702A20A5141DE4079FDC0735441F4E1D092A70A51417DCCD0FEC073544177EB851BAB0A51413F07ABFFC0735441A4703DCAB10A514114AE4701C1735441B471CD02AF0A5141C0611F86BA735441D80394F7A70A5141A24D401AAA735441ED856AD6A20A5141FF85D5249E735441DCDB394A9E0A51418F0ACC8A93735441A50DDFC59B0A51413104A3AC8D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E735441681FB4A78C0A514172AC20D491735441E73E7AAF8A0A514195BD1C1593735441707870B8840A514115B99310977354415349B80E820A5141F47752E198735441D8E29A967F0A5141F9C237929A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441FE60187B840A51410FE95D58AE7354416501DC33890A51417BA8F4A8B973544183E5A9868B0A51411100993ABF7354411F85EB218C0A5141EC51B8AEC0735441FBAE202F8C0A514182CDDE18C17354413CCB574E8D0A514172078223C1735441F8B6A8C28E0A514182CDDE18C17354417D6D4688950A51410CCBD722C17354415F76085E990A5141EA164F08C1735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 21419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA73544152B81E95830A514166666646FE73544148E17AA4840A51415C8FC2C5FE735441713D0A37880A514185EB51D8FC735441295C8FA28D0A51419A999909FB73544100000040980A514100000010F973544185EB51389E0A514148E17AE4F8735441295C8F22B20A514185EB51B8FB73544133333393BC0A51418FC2F5A8FC7354413D0AD733C50A5141D7A3707DFC7354410AD7A330CB0A514185EB51D8FB7354419A9999B9BD0A5141333333D3DC7354417B14AE17BD0A51419A999959DB73544133333323B60A514133333323CB735441A4703DCAB10A514114AE4701C173544133333373AD0A5141295C8FE2B6735441F6285C9FA20A514148E17AA49D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E7354411F85EBD1880A514152B81E4594735441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000B48E94309A0A5141634237ED897354419F6C13ED9A0A5141A26FE1B08B7354416D96498F9C0A514177D730828F735441929120109E0A5141B37D5A0393735441F7E65A9D9F0A5141A36565A19673544143D73FDC9F0A51412BEB0434977354410658F35DA20A5141874FFE0B9D735441AA56DA60A20A5141386DC2129D7354414FDF6571A20A5141FFD754399D735441F1374B9CA30A51417F1C27F29F735441DBD35265A50A5141E412A41BA473544182597511A60A514133C7F1ACA5735441F47516E6A90A51411CF41A9BAE735441DE251EC3AA0A51418593CD99B0735441DF5E4A03AB0A51413A545F8EB0735441FF59DE4AAC0A5141FA164133B0735441BB182782AC0A5141A767E023B0735441FD19B468AC0A51414140AAD8AF735441E14B49E7AB0A5141CDEDF4B5AE735441BCB22194AA0A51418C241EBCAB7354416329FED6A70A514135802895A573544136745ED2A40A51412A016C5A9E735441C03D47DEA10A51412966EF3F97735441EC6C5674A00A51411DC7E82394735441522FB1C09B0A5141110DBADA897354415CB4A17D9B0A5141CE144C3989735441B48E94309A0A5141634237ED89735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 65278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA73544152B81E95830A514166666646FE73544148E17AA4840A51415C8FC2C5FE735441713D0A37880A514185EB51D8FC735441295C8FA28D0A51419A999909FB73544100000040980A514100000010F973544185EB51389E0A514148E17AE4F8735441295C8F22B20A514185EB51B8FB73544133333393BC0A51418FC2F5A8FC7354413D0AD733C50A5141D7A3707DFC7354410AD7A330CB0A514185EB51D8FB7354419A9999B9BD0A5141333333D3DC7354417B14AE17BD0A51419A999959DB73544133333323B60A514133333323CB735441A4703DCAB10A514114AE4701C173544133333373AD0A5141295C8FE2B6735441F6285C9FA20A514148E17AA49D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E7354411F85EBD1880A514152B81E4594735441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000B48E94309A0A5141634237ED897354419F6C13ED9A0A5141A26FE1B08B7354416D96498F9C0A514177D730828F735441929120109E0A5141B37D5A0393735441F7E65A9D9F0A5141A36565A19673544143D73FDC9F0A51412BEB0434977354410658F35DA20A5141874FFE0B9D735441AA56DA60A20A5141386DC2129D7354414FDF6571A20A5141FFD754399D735441F1374B9CA30A51417F1C27F29F735441DBD35265A50A5141E412A41BA473544182597511A60A514133C7F1ACA5735441F47516E6A90A51411CF41A9BAE735441DE251EC3AA0A51418593CD99B0735441DF5E4A03AB0A51413A545F8EB0735441FF59DE4AAC0A5141FA164133B0735441BB182782AC0A5141A767E023B0735441FD19B468AC0A51414140AAD8AF735441E14B49E7AB0A5141CDEDF4B5AE735441BCB22194AA0A51418C241EBCAB7354416329FED6A70A514135802895A573544136745ED2A40A51412A016C5A9E735441C03D47DEA10A51412966EF3F97735441EC6C5674A00A51411DC7E82394735441522FB1C09B0A5141110DBADA897354415CB4A17D9B0A5141CE144C3989735441B48E94309A0A5141634237ED89735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530519 - 352336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000048E17A94210F51415C8FC2E5A57A5441000000401E0F51417B14AE27A47A5441D7A370BD1D0F51413D0AD7E3A37A54410AD7A3001A0F51413D0AD7F3A17A54418FC2F5B8060F5141713D0A77B57A5441EC51B86E090F514114AE47D1B77A544152B81E750C0F5141CDCCCC2CBA7A5441CDCCCC9C0D0F51410AD7A310B97A544148E17A94210F51415C8FC2E5A57A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A8E32277110F51410D46D25DB57A544133E098850E0F5141BF7C2B31B87A54416B957C70110F51410E7E81C7BA7A5441E3BAA40C250F51412486E9B5A77A5441543ACC0C250F51413243C2B5A77A5441CDCCCCBC240F5141C3F5288CA77A5441A46DA1FB220F5141178C70A1A67A5441EE047B94210F5141AF4BC3E5A57A5441A8E32277110F51410D46D25DB57A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531031 - 3102961
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A143E81125141C3F5281CA66E5441EC51B85E801251417B14AE97C06E544100000010A91251419A9999B9BF6E544185EB51C8BB125141713D0A57BF6E5441AE47E19AC41251413D0AD723BF6E5441AE47E13AFF1251413D0AD7E3BD6E5441C3F528CCF712514114AE4771A66E544152B81E25B51251410AD7A340A66E5441E17A143E81125141C3F5281CA66E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008D9F8B3880125141FE821FBDC56E54417B8350FFC1125141FF6E05F6C36E5441F1814EDCC1125141B13AC14FBF6E5441EA1E43ECBF125141F907033FBF6E5441A2390DA2B6125141D1DD2672BF6E5441B4DE31AFA81251417EEAA9BBBF6E54417FB0AAE89C125141D7C0EDFBBF6E5441C8B989258E1251416A697E4CC06E5441015C9DCE88125141296BA269C06E5441013ED91A851251412CDED67DC06E5441EC51B85E801251417B14AE97C06E544117A18D5B80125141C465F923C36E54418D9F8B3880125141FE821FBDC56E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531031 - 3473247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A143E81125141C3F5281CA66E5441EC51B85E801251417B14AE97C06E544100000010A91251419A9999B9BF6E544185EB51C8BB125141713D0A57BF6E5441AE47E19AC41251413D0AD723BF6E5441AE47E13AFF1251413D0AD7E3BD6E5441C3F528CCF712514114AE4771A66E544152B81E25B51251410AD7A340A66E5441E17A143E81125141C3F5281CA66E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008D9F8B3880125141FE821FBDC56E54417B8350FFC1125141FF6E05F6C36E5441F1814EDCC1125141B13AC14FBF6E5441EA1E43ECBF125141F907033FBF6E5441A2390DA2B6125141D1DD2672BF6E5441B4DE31AFA81251417EEAA9BBBF6E54417FB0AAE89C125141D7C0EDFBBF6E5441C8B989258E1251416A697E4CC06E5441015C9DCE88125141296BA269C06E5441013ED91A851251412CDED67DC06E5441EC51B85E801251417B14AE97C06E544117A18D5B80125141C465F923C36E54418D9F8B3880125141FE821FBDC56E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531657 - 153058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E1DA5F13514166666606F47154415C8FC25567135141AE47E1FA02725441EC51B82EA31351413D0AD753DF715441CDCCCCACCB135141AE47E17AC771544148E17AB4C31351413D0AD7B3B7715441A4703D2AA51351411F85EB81C9715441D7A370CD8B135141AE47E14AD87154418FC2F5C88A1351410AD7A310DA7154418FC2F5A889135141000000A0DB7154419A9999898713514100000030DD715441A4703DCA83135141F6285C4FDF715441CDCCCCDC75135141E17A143EE7715441AE47E1DA5F13514166666606F4715441
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A9999898713514100000030DD715441C2355345871351414B5EAB56DD7154417908E300741351411C8B8052E8715441B78D025A7313514167A76DB3E87154418AD63ADE6C1351412B3C7877EC71544106A6EEDA5F135141A3A25E06F4715441FBF6C355671351411EEFDFFA02725441EC51B82EA31351413D0AD753DF715441A123CAACCB135141D9D8E27AC771544183861D20C5135141484FB283BA715441E73605FCC3135141774C7641B8715441996A7BB4C3135141131AD8B3B77154413B236CB4C313514188A2DFB3B7715441A4703D2AA51351411F85EB81C9715441D7A370CD8B135141AE47E14AD87154418FC2F5C88A1351410AD7A310DA715441035656A48A135141916D6C43DA7154418FC2F5A889135141000000A0DB7154419A9999898713514100000030DD715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531657 - 353833
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E1DA5F13514166666606F47154415C8FC25567135141AE47E1FA02725441EC51B82EA31351413D0AD753DF715441CDCCCCACCB135141AE47E17AC771544148E17AB4C31351413D0AD7B3B7715441A4703D2AA51351411F85EB81C9715441D7A370CD8B135141AE47E14AD87154418FC2F5C88A1351410AD7A310DA7154418FC2F5A889135141000000A0DB7154419A9999898713514100000030DD715441A4703DCA83135141F6285C4FDF715441CDCCCCDC75135141E17A143EE7715441AE47E1DA5F13514166666606F4715441
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A9999898713514100000030DD715441C2355345871351414B5EAB56DD7154417908E300741351411C8B8052E8715441B78D025A7313514167A76DB3E87154418AD63ADE6C1351412B3C7877EC71544106A6EEDA5F135141A3A25E06F4715441FBF6C355671351411EEFDFFA02725441EC51B82EA31351413D0AD753DF715441A123CAACCB135141D9D8E27AC771544183861D20C5135141484FB283BA715441E73605FCC3135141774C7641B8715441996A7BB4C3135141131AD8B3B77154413B236CB4C313514188A2DFB3B7715441A4703D2AA51351411F85EB81C9715441D7A370CD8B135141AE47E14AD87154418FC2F5C88A1351410AD7A310DA715441035656A48A135141916D6C43DA7154418FC2F5A889135141000000A0DB7154419A9999898713514100000030DD715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531765 - 352642
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000050000008FC2F598E51B5141713D0AD7FA7254410AD7A320391C514166666656F572544148E17AA43A1C5141A4703D5AEF725441AE47E17AE71B5141CDCCCC7CF47254418FC2F598E51B5141713D0AD7FA725441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E89C1D391C5141BF729956F572544152A1C795E51B51411313C2E1FA72544130E6D101E51B5141211F6CD4FC7254416149A6D0E31B5141BD9BF5D800735441D9A38521ED1B5141D7082545007354413F706123021C5141C2B15FEDFE7254417CAD15CE071C51418C6CA390FE7254415D5271FD201C514180B483CBFC7254416AB0A3FA301C5141C67615D0FB725441BD4AD693371C514148F75168FB725441A57EA320391C5141396C6656F5725441E8B7541E391C514101578D56F5725441A7E89C1D391C5141BF729956F5725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531922 - 1058420
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000000AD7A32057135141F6285C2FB17B54410AD7A33057135141A4703DDAB27B54413D0AD7D35A135141713D0A17B37B5441713D0A375F135141B81E851BB27B54419A9999F95F13514148E17A34B37B5441EC51B8DE6513514114AE4701B47B5441F6285C2F6413514166666676AC7B54411F85EBF1621351418FC2F5E8A67B54410000006062135141C3F5285CA47B5441713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441EC51B85E43135141E17A14EEA37B54415C8FC2C5511351411F85EB91A37B54411F85EB5152135141B81E851BA57B54413D0AD733561351410AD7A390AF7B54410AD7A32057135141F6285C2FB17B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441464A007842135141CDB9FCD3A37B54410F951C8C4413514184E88BE6A37B5441EADE564E4613514183F34ADBA37B544168E3CB2448135141658C88CFA37B54416369E6134E13514112F98FA9A37B54415C8FC2C5511351411F85EB91A37B544152B81E65501351415C8FC2B5987B54410777488F5F135141DED7B7C2977B5441713D0AE75C135141EC51B8DE8B7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531922 - 3868882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000000AD7A32057135141F6285C2FB17B54410AD7A33057135141A4703DDAB27B54413D0AD7D35A135141713D0A17B37B5441713D0A375F135141B81E851BB27B54419A9999F95F13514148E17A34B37B5441EC51B8DE6513514114AE4701B47B5441F6285C2F6413514166666676AC7B54411F85EBF1621351418FC2F5E8A67B54410000006062135141C3F5285CA47B5441713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441EC51B85E43135141E17A14EEA37B54415C8FC2C5511351411F85EB91A37B54411F85EB5152135141B81E851BA57B54413D0AD733561351410AD7A390AF7B54410AD7A32057135141F6285C2FB17B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441464A007842135141CDB9FCD3A37B54410F951C8C4413514184E88BE6A37B5441EADE564E4613514183F34ADBA37B544168E3CB2448135141658C88CFA37B54416369E6134E13514112F98FA9A37B54415C8FC2C5511351411F85EB91A37B544152B81E65501351415C8FC2B5987B54410777488F5F135141DED7B7C2977B5441713D0AE75C135141EC51B8DE8B7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532012 - 3138270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441C3F5288C6915514152B81EF5B9785441713D0A676C15514133333343BA785441666666A677155141000000D0BC785441F6285C8F80155141EC51B80EC0785441F6285CCF8215514114AE4701C2785441AE47E14A8A155141AE47E12AC4785441333333F3911551411F85EB81C578544152B81E95951551417B14AE17C67854417B14AE47AE15514166666646CC7854418FC2F538B2155141C3F5283CCD78544100000010B9155141D7A3705DCC78544185EB5118BB1551419A9999E9CC78544185EB5168BE155141713D0AD7CE785441A4703DAABE1551410AD7A3D0CA7854418FC2F538BF1551413D0AD743C478544114AE47C1BF1551413D0AD703BF7854413D0AD7B3C01551419A999909B97854418FC2F5D8C015514114AE4771B37854418FC2F568CA155141A4703D0AB278544152B81E95CD15514100000060B17854411F85EB81D2155141CDCCCCACAF7854419A9999B9D015514133333333A578544148E17A34CA15514114AE47E1A47854419A999939C3155141A4703DDAA5785441AE47E16ABD155141666666C6A678544133333313B91551418FC2F5F8A6785441A4703DEAB3155141B81E852BA878544114AE4731AF1551415C8FC225A978544166666606AA1551415C8FC2A5A97854419A9999E9A41551418FC2F5C8A9785441713D0AA7A0155141E17A149EA9785441AE47E13A9A15514148E17A94A8785441D7A3701D9915514152B81ED5B078544152B81ED5971551419A9999C9B0785441000000408A155141EC51B86EB2785441F6285CAF81155141F6285CAFB378544185EB51487B1551410AD7A340B3785441AE47E16A7A155141713D0A67A77854418FC2F5787815514133333393A778544148E17AB46C15514148E17AD4A878544114AE471160155141F6285CEFA97854413D0AD7435B1551419A9999C9AA7854410AD7A3C056155141F6285CBFAB78544148E17A34571551417B14AEB7B178544185EB51285815514185EB5138BC785441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441F7884FF464155141C2224D1CBB7854413C450D6765155141457CF077A97854415CB122CE5E1551416DD0B828AA785441A10EDA2C5B155141D5957DCEAA7854418F39F7FA58155141560D0746AB785441435C9C3F57155141261259A4AB78544197BBAE52571551417065B304B3785441C197F507581551417CE0F9DCB778544185EB51285815514185EB5138BC785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532012 - 3362396
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441C3F5288C6915514152B81EF5B9785441713D0A676C15514133333343BA785441666666A677155141000000D0BC785441F6285C8F80155141EC51B80EC0785441F6285CCF8215514114AE4701C2785441AE47E14A8A155141AE47E12AC4785441333333F3911551411F85EB81C578544152B81E95951551417B14AE17C67854417B14AE47AE15514166666646CC7854418FC2F538B2155141C3F5283CCD78544100000010B9155141D7A3705DCC78544185EB5118BB1551419A9999E9CC78544185EB5168BE155141713D0AD7CE785441A4703DAABE1551410AD7A3D0CA7854418FC2F538BF1551413D0AD743C478544114AE47C1BF1551413D0AD703BF7854413D0AD7B3C01551419A999909B97854418FC2F5D8C015514114AE4771B37854418FC2F568CA155141A4703D0AB278544152B81E95CD15514100000060B17854411F85EB81D2155141CDCCCCACAF7854419A9999B9D015514133333333A578544148E17A34CA15514114AE47E1A47854419A999939C3155141A4703DDAA5785441AE47E16ABD155141666666C6A678544133333313B91551418FC2F5F8A6785441A4703DEAB3155141B81E852BA878544114AE4731AF1551415C8FC225A978544166666606AA1551415C8FC2A5A97854419A9999E9A41551418FC2F5C8A9785441713D0AA7A0155141E17A149EA9785441AE47E13A9A15514148E17A94A8785441D7A3701D9915514152B81ED5B078544152B81ED5971551419A9999C9B0785441000000408A155141EC51B86EB2785441F6285CAF81155141F6285CAFB378544185EB51487B1551410AD7A340B3785441AE47E16A7A155141713D0A67A77854418FC2F5787815514133333393A778544148E17AB46C15514148E17AD4A878544114AE471160155141F6285CEFA97854413D0AD7435B1551419A9999C9AA7854410AD7A3C056155141F6285CBFAB78544148E17A34571551417B14AEB7B178544185EB51285815514185EB5138BC785441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441F7884FF464155141C2224D1CBB7854413C450D6765155141457CF077A97854415CB122CE5E1551416DD0B828AA785441A10EDA2C5B155141D5957DCEAA7854418F39F7FA58155141560D0746AB785441435C9C3F57155141261259A4AB78544197BBAE52571551417065B304B3785441C197F507581551417CE0F9DCB778544185EB51285815514185EB5138BC785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532351 - 3180577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532351 - 3587092
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532746 - 3098573
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000333333C3D21A51410AD7A3600B5D544185EB51E8EB1A5141295C8F72B95C544100000080EA1A514185EB5158B85C5441000000B0E71A514133333373B65C544148E17A64E31A51413D0AD7F3B35C5441C3F5280CDB1A5141CDCCCCACAF5C5441F6285CCFDA1A514100000090AF5C544133333363D11A514133333373CE5C54418FC2F5A8C21A5141295C8FB2FE5C5441CDCCCC1CAD1A5141E17A14FEFB5C5441CDCCCCCCAC1A514166666656FE5C5441F6285CDFA71A5141CDCCCC6CFD5C5441D7A3708DA61A5141D7A3709D025D5441CDCCCC8CA41A514185EB51780A5D5441E17A143EA31A514114AE47310F5D5441C3F5282CA71A514185EB51680F5D5441E17A149EAA1A5141D7A370ED0F5D5441666666B6B01A5141295C8FB2105D5441E17A149EB71A51417B14AEA7115D5441F6285C5FB51A51415C8FC2D51D5D54413D0AD713BA1A5141713D0A271F5D5441A4703D1AC61A5141B81E852B155D5441333333C3D21A51410AD7A3600B5D5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000FE956265A31A5141C3E8B4920E5D54415AC17645A71A514106B67D510F5D5441AF7AB49FAA1A5141F6452CED0F5D5441B67AF378AC1A51412E926E29105D5441602ECC9EAF1A514123AA3C8F105D5441C2479491B01A51418A87E8AD105D5441E12DDC32B11A5141B78ED1C3105D544189340397B21A51411B9534F5105D54411A02E280B51A5141E5995E5C115D544175B24307B81A5141F30CC4B5115D5441B6625AF8B91A514106B683FA115D54415D9FA9A5BC1A5141116C4B59125D5441B59678ADBE1A5141EA21A9BE0B5D544128D1C0F6C01A51415F4B2141045D54416CFCB3A5C21A51418414C3B2FE5C5441D0ED8002AD1A5141C6F12C04FC5C544149D96CEFAC1A5141313A6E35FD5C544159335B8BA91A5141826D2065FD5C54414C84B5FAA71A51412411460FFD5C5441FE956265A31A5141C3E8B4920E5D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532746 - 3448425
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000333333C3D21A51410AD7A3600B5D544185EB51E8EB1A5141295C8F72B95C544100000080EA1A514185EB5158B85C5441000000B0E71A514133333373B65C544148E17A64E31A51413D0AD7F3B35C5441C3F5280CDB1A5141CDCCCCACAF5C5441F6285CCFDA1A514100000090AF5C544133333363D11A514133333373CE5C54418FC2F5A8C21A5141295C8FB2FE5C5441CDCCCC1CAD1A5141E17A14FEFB5C5441CDCCCCCCAC1A514166666656FE5C5441F6285CDFA71A5141CDCCCC6CFD5C5441D7A3708DA61A5141D7A3709D025D5441CDCCCC8CA41A514185EB51780A5D5441E17A143EA31A514114AE47310F5D5441C3F5282CA71A514185EB51680F5D5441E17A149EAA1A5141D7A370ED0F5D5441666666B6B01A5141295C8FB2105D5441E17A149EB71A51417B14AEA7115D5441F6285C5FB51A51415C8FC2D51D5D54413D0AD713BA1A5141713D0A271F5D5441A4703D1AC61A5141B81E852B155D5441333333C3D21A51410AD7A3600B5D5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000FE956265A31A5141C3E8B4920E5D54415AC17645A71A514106B67D510F5D5441AF7AB49FAA1A5141F6452CED0F5D5441B67AF378AC1A51412E926E29105D5441602ECC9EAF1A514123AA3C8F105D5441C2479491B01A51418A87E8AD105D5441E12DDC32B11A5141B78ED1C3105D544189340397B21A51411B9534F5105D54411A02E280B51A5141E5995E5C115D544175B24307B81A5141F30CC4B5115D5441B6625AF8B91A514106B683FA115D54415D9FA9A5BC1A5141116C4B59125D5441B59678ADBE1A5141EA21A9BE0B5D544128D1C0F6C01A51415F4B2141045D54416CFCB3A5C21A51418414C3B2FE5C5441D0ED8002AD1A5141C6F12C04FC5C544149D96CEFAC1A5141313A6E35FD5C544159335B8BA91A5141826D2065FD5C54414C84B5FAA71A51412411460FFD5C5441FE956265A31A5141C3E8B4920E5D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532753 - 152403
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A77BD2A5141666666F624515441AE47E11AB62A5141000000A023515441D7A3702DB72A514148E17AA42A5154415C8FC225BE2A514152B81E952851544152B81EF5BF2A51413333337327515441EC51B8EEC52A51411F85EBD125515441713D0A17CC2A51416666667626515441EC51B82ED02A5141C3F5281C2651544185EB5168D02A5141B81E859B2551544148E17A44D12A51415C8FC26525515441713D0A47D52A5141333333D324515441CDCCCCDCDC2A5141295C8FB221515441AE47E11AE32A5141295C8F8220515441EC51B8DEE82A51416666660621515441295C8F22F62A5141295C8F6237515441AE47E11AF82A5141A4703DBA42515441AE47E15AF72A5141666666364B5154417B14AEA7F22A514152B81E65555154415C8FC2E5FA2A5141E17A145E58515441A4703DFAFB2A5141F6285CAF55515441C3F5289CFD2A51419A999999505154419A999999FF2A514114AE47A1485154410AD7A300012B514148E17A0443515441000000C0012B5141AE47E1BA3A515441000000B0002B514114AE471137515441713D0A07012B5141A4703D5A3351544114AE4761002B5141E17A14FE30515441D7A3709DFD2A5141295C8FD22E5154413D0AD7D3F92A514114AE47C12B5154417B14AEF7F42A51413D0AD7E3265154415C8FC2F5EF2A5141CDCCCCAC2151544100000010EC2A5141A4703DCA1D5154418FC2F558E72A51413D0AD7031A515441AE47E16AE42A5141295C8F221D515441AE47E1AAE22A514148E17A241D5154415C8FC275D92A514185EB510820515441AE47E11AD72A5141666666561F515441AE47E11AD12A5141E17A141E21515441295C8FF2CB2A5141E17A148E23515441EC51B86EC82A5141E17A14CE22515441713D0A77BD2A5141666666F624515441
+</a>
+
+<b>
+0106000000010000000103000000020000003B000000AE47E11AE32A5141295C8F82205154414D695429E92A51416B04F9E9205154411E022BE7F52A5141335072FE36515441295C8F22F62A5141295C8F6237515441CAA5513CF62A51415DB9DEF6375154416227F97DF62A51415CDCE17039515441706829ACF62A5141B85AD17A3A5154414B0198E2F62A51417F6337B43B515441AE47E11AF82A5141A4703DBA42515441AE47E15AF72A5141666666364B5154417B14AEA7F22A514152B81E65555154415C8FC2E5FA2A5141E17A145E58515441A299457BFB2A514147BADBCE5551544107925157FD2A5141859681A4505154419A999999FF2A514114AE47A1485154410AD7A300012B514148E17A04435154418B7D550B012B51413AABEA8D42515441267241FC002B514101B2E182425154417317F00B012B5141BE9C3887425154410B47297B012B514155A317B63D515441F45BA873012B5141542010B33D51544145D9877B012B51419E21FFB13D515441870C2592012B5141218546B73C5154410077E295012B514105B1CF8D3C515441461951AF012B5141A193D8733B515441AD0EC4BF012B514190DC79BD3A515441B7AE5BA2012B51411E175AB13A515441000000B0002B514114AE471137515441713D0A07012B5141A4703D5A3351544114AE4761002B5141E17A14FE30515441D7A3709DFD2A5141295C8FD22E5154413D0AD7D3F92A514114AE47C12B515441D1E34AF0F42A51417378B05127515441AC43770CF02A514198F5F73822515441D9090FA4EB2A5141623F16171E515441C5DBB392E92A5141FA1EFFCB1B51544180D58F0BE92A5141C078A9DB1B51544153AAC849E92A51413E7D9D911B5154418FC2F558E72A51413D0AD7031A515441AE47E16AE42A5141295C8F221D515441AE47E1AAE22A514148E17A241D5154415C8FC275D92A514185EB510820515441AE47E11AD72A5141666666561F515441AE47E11AD12A5141E17A141E21515441295C8FF2CB2A5141E17A148E23515441EC51B86EC82A5141E17A14CE22515441713D0A77BD2A5141666666F624515441AE47E11AB62A5141000000A023515441D7A3702DB72A514148E17AA42A5154415C8FC225BE2A514152B81E952851544152B81EF5BF2A51413333337327515441EC51B8EEC52A51411F85EBD125515441713D0A17CC2A51416666667626515441EC51B82ED02A5141C3F5281C2651544185EB5168D02A5141B81E859B2551544148E17A44D12A51415C8FC26525515441713D0A47D52A5141333333D324515441CDCCCCDCDC2A5141295C8FB221515441AE47E11AE32A5141295C8F8220515441040000000ACE76ABF92A5141AEB93DAA37515441FF72D083FA2A5141013BEFE33751544130DF8D8FFA2A5141CD44F7E8375154410ACE76ABF92A5141AEB93DAA37515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532753 - 397760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A77BD2A5141666666F624515441AE47E11AB62A5141000000A023515441D7A3702DB72A514148E17AA42A5154415C8FC225BE2A514152B81E952851544152B81EF5BF2A51413333337327515441EC51B8EEC52A51411F85EBD125515441713D0A17CC2A51416666667626515441EC51B82ED02A5141C3F5281C2651544185EB5168D02A5141B81E859B2551544148E17A44D12A51415C8FC26525515441713D0A47D52A5141333333D324515441CDCCCCDCDC2A5141295C8FB221515441AE47E11AE32A5141295C8F8220515441EC51B8DEE82A51416666660621515441295C8F22F62A5141295C8F6237515441AE47E11AF82A5141A4703DBA42515441AE47E15AF72A5141666666364B5154417B14AEA7F22A514152B81E65555154415C8FC2E5FA2A5141E17A145E58515441A4703DFAFB2A5141F6285CAF55515441C3F5289CFD2A51419A999999505154419A999999FF2A514114AE47A1485154410AD7A300012B514148E17A0443515441000000C0012B5141AE47E1BA3A515441000000B0002B514114AE471137515441713D0A07012B5141A4703D5A3351544114AE4761002B5141E17A14FE30515441D7A3709DFD2A5141295C8FD22E5154413D0AD7D3F92A514114AE47C12B5154417B14AEF7F42A51413D0AD7E3265154415C8FC2F5EF2A5141CDCCCCAC2151544100000010EC2A5141A4703DCA1D5154418FC2F558E72A51413D0AD7031A515441AE47E16AE42A5141295C8F221D515441AE47E1AAE22A514148E17A241D5154415C8FC275D92A514185EB510820515441AE47E11AD72A5141666666561F515441AE47E11AD12A5141E17A141E21515441295C8FF2CB2A5141E17A148E23515441EC51B86EC82A5141E17A14CE22515441713D0A77BD2A5141666666F624515441
+</a>
+
+<b>
+0106000000010000000103000000020000003B000000AE47E11AE32A5141295C8F82205154414D695429E92A51416B04F9E9205154411E022BE7F52A5141335072FE36515441295C8F22F62A5141295C8F6237515441CAA5513CF62A51415DB9DEF6375154416227F97DF62A51415CDCE17039515441706829ACF62A5141B85AD17A3A5154414B0198E2F62A51417F6337B43B515441AE47E11AF82A5141A4703DBA42515441AE47E15AF72A5141666666364B5154417B14AEA7F22A514152B81E65555154415C8FC2E5FA2A5141E17A145E58515441A299457BFB2A514147BADBCE5551544107925157FD2A5141859681A4505154419A999999FF2A514114AE47A1485154410AD7A300012B514148E17A04435154418B7D550B012B51413AABEA8D42515441267241FC002B514101B2E182425154417317F00B012B5141BE9C3887425154410B47297B012B514155A317B63D515441F45BA873012B5141542010B33D51544145D9877B012B51419E21FFB13D515441870C2592012B5141218546B73C5154410077E295012B514105B1CF8D3C515441461951AF012B5141A193D8733B515441AD0EC4BF012B514190DC79BD3A515441B7AE5BA2012B51411E175AB13A515441000000B0002B514114AE471137515441713D0A07012B5141A4703D5A3351544114AE4761002B5141E17A14FE30515441D7A3709DFD2A5141295C8FD22E5154413D0AD7D3F92A514114AE47C12B515441D1E34AF0F42A51417378B05127515441AC43770CF02A514198F5F73822515441D9090FA4EB2A5141623F16171E515441C5DBB392E92A5141FA1EFFCB1B51544180D58F0BE92A5141C078A9DB1B51544153AAC849E92A51413E7D9D911B5154418FC2F558E72A51413D0AD7031A515441AE47E16AE42A5141295C8F221D515441AE47E1AAE22A514148E17A241D5154415C8FC275D92A514185EB510820515441AE47E11AD72A5141666666561F515441AE47E11AD12A5141E17A141E21515441295C8FF2CB2A5141E17A148E23515441EC51B86EC82A5141E17A14CE22515441713D0A77BD2A5141666666F624515441AE47E11AB62A5141000000A023515441D7A3702DB72A514148E17AA42A5154415C8FC225BE2A514152B81E952851544152B81EF5BF2A51413333337327515441EC51B8EEC52A51411F85EBD125515441713D0A17CC2A51416666667626515441EC51B82ED02A5141C3F5281C2651544185EB5168D02A5141B81E859B2551544148E17A44D12A51415C8FC26525515441713D0A47D52A5141333333D324515441CDCCCCDCDC2A5141295C8FB221515441AE47E11AE32A5141295C8F8220515441040000000ACE76ABF92A5141AEB93DAA37515441FF72D083FA2A5141013BEFE33751544130DF8D8FFA2A5141CD44F7E8375154410ACE76ABF92A5141AEB93DAA37515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532782 - 53117
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001200000066666626132351418FC2F548F45D54415C8FC23510235141C3F5281C025E5441B81E856B0C2351418FC2F5A8145E5441666666D63023514148E17A54205E5441B81E855B39235141D7A3709D235E54415C8FC2253A2351413D0AD7E31F5E5441D7A3707D3A2351413D0AD7731C5E54413D0AD7833A235141B81E850B185E5441CDCCCC4C3A23514133333373155E54411F85EBC1392351413D0AD713125E5441CDCCCC9C3823514114AE47F10A5E544185EB511838235141B81E855B065E54411F85EB01382351417B14AE17035E54419A9999193823514152B81E05015E5441C3F5282C38235141CDCCCC4C005E5441AE47E1EA3623514133333303005E5441D7A3702D3623514185EB51D8FF5D544166666626132351418FC2F548F45D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B348A4D70D2351412097A41D155E544136B1EB0C252351414B1A878D1C5E54414F431FBA302351419B186B4B205E5441666666D63023514148E17A54205E54416E2E322E38235141A9B04229235E5441A347D2AC38235141887FA973225E5441ED0B3D3433235141CB90E6BE1F5E54413028474332235141166BEBCD1D5E54417C024C523023514196E504EC1C5E5441674F557F29235141A661FAEB1A5E54415B5A59AC21235141E1B43C37195E54416102BA241D23514193C49DA0175E5441C1EA7A2411235141E75C9DAF145E5441B348A4D70D2351412097A41D155E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626694 - 55424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E857B62085141EC51B8CEAA0F5541666666D65D085141E17A149E9B0F55415C8FC2D55A08514100000000970F55410AD7A34059085141EC51B8CE940F5541A4703DBA580851417B14AEF7910F5541A4703DDA5908514185EB51188B0F5541000000305D085141C3F5285C830F554152B81E4559085141D7A370AD840F5541000000804E0851415C8FC2D5870F5541E17A14BE4808514114AE4701890F5541AE47E19A420851411F85EBD1890F5541333333632F085141C3F528BC8B0F55413D0AD7D3230851415C8FC2858C0F5541D7A3708D24085141295C8F62930F55417B14AEA72508514148E17A74940F554152B81E052F0851411F85EB21950F554148E17AB432085141C3F5287C960F5541CDCCCC6C38085141A4703D4A9B0F55418FC2F5883A0851419A9999399E0F5541A4703DFA3A0851413D0AD7E3AF0F5541C3F5285C440851419A9999D9AF0F55418FC2F5086208514100000080B20F5541B81E857B62085141EC51B8CEAA0F5541
+</a>
+
+<b>
+01060000000100000001030000000100000037000000CB0E6D215E08514102C46D939C0F554182E532C75D08514178CBB3869B0F5541CE3BC0AD5B08514109512B4C980F55410AD7A34059085141EC51B8CE940F5541573C69CD58085141F0EA625F920F5541A0FF7ABC5808514130C2CC03920F5541A4703DBA580851417B14AEF7910F5541A4703DDA5908514185EB51188B0F55415DFB30155D0851417CA2569A830F5541E9A492065D0851418DA9176A830F554153133AE25B085141866669CC830F5541658D4F8E5B085141EA37A2E8830F55413BF291055A0851415182B76C840F554152B81E4559085141D7A370AD840F55411E4D2FF05308514169059B3D860F554160ACF6CE4F08514186908E73870F5541000000804E0851415C8FC2D5870F5541C6C9C93B4B085141EB73B07F880F55418E3B50DF48085141D8CA86FA880F5541E17A14BE4808514114AE4701890F5541AE47E19A420851411F85EBD1890F5541333333632F085141C3F528BC8B0F554125A2D2C22E0851418ED915C78B0F55413D0AD7D3230851415C8FC2858C0F5541D7A3708D24085141295C8F62930F55417B14AEA72508514148E17A74940F554134F5A22928085141D9EDEBA2940F55411078816629085141685AD8B9940F55414065A3282A08514111B1E3C7940F554152B81E052F0851411F85EB21950F554148E17AB432085141C3F5287C960F5541F63DC74833085141FE59BCF8960F554119C3F40E340851414448369F970F55413D47AEDE340851415741B54D980F55411704C61C380851413AD303079B0F55418638EB5238085141C8B87F349B0F5541CDCCCC6C38085141A4703D4A9B0F55418FC2F5883A0851419A9999399E0F5541A4703DFA3A0851413D0AD7E3AF0F5541C3F5285C440851419A9999D9AF0F55417F16CEFA4508514130CCA0FEAF0F554162492A0447085141C8315316B00F554184E893174A0851419A3AA45CB00F5541272451414D085141FAABF3A4B00F55415956BE1350085141920F77E5B00F5541E924D7625108514189B56303B10F5541BD6080E65708514157195098B10F5541268D03075908514178C713B2B10F55416F3C44F55D0851415021CC22B20F554189BAD20A6208514175EFF85FB20F554149F0B24162085141AEFDA8B0AE0F554123CF8555620851411340E45BAD0F5541E32B0B7062085141DD7DFF93AB0F55412CE42E7A620851414F36B3E5AA0F5541CB0E6D215E08514102C46D939C0F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533834 - 1022187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000045000000A4703DDA7E2F5141F6285C9FC5515441333333837E2F514133333343C2515441CDCCCC0C7F2F51410AD7A350C0515441CDCCCC2C7E2F5141295C8F22C0515441B81E857B7D2F51410AD7A380C0515441D7A3709D7C2F514166666626C1515441C3F5287C7B2F5141E17A14FEC15154418FC2F5F8792F5141CDCCCC8CC35154413D0AD7F3722F5141295C8F12CD51544166666656702F514166666686D0515441C3F5284C6C2F5141D7A3701DD6515441C3F5288C6A2F51417B14AEF7D8515441295C8F026A2F5141AE47E10ADA515441D7A370BD682F5141CDCCCC2CDD515441295C8F62672F514148E17A04E1515441B81E85FB642F51410AD7A320EB5154413D0AD7F3622F514114AE47D1F251544185EB51985F2F51415C8FC2F5FF51544152B81EE5732F51410000001001525441EC51B8CE8A2F5141E17A145E02525441F6285CDF9D2F51415C8FC2A5035254417B14AE87AA2F5141AE47E11A0452544166666656BC2F514148E17A34055254418FC2F5E8BC2F51417B14AE0703525441000000A0C12F514148E17A84EA515441D7A3703DC52F5141F6285C7FD7515441713D0A57C52F51410AD7A3E0D6515441713D0A57C32F514114AE4781D55154411F85EB01C12F51415C8FC255D45154411F85EBB1BD2F51419A999959D3515441CDCCCCACB82F5141713D0AD7D2515441B81E858BB32F5141AE47E11AD251544166666676AF2F5141B81E858BD1515441295C8FA2AB2F51413D0AD753D0515441A4703DAAA82F51410AD7A340CF5154418FC2F518A42F51418FC2F548CD51544185EB51D89F2F5141F6285CBFCA5154418FC2F5289D2F514114AE4731C8515441AE47E1AA9C2F51410AD7A390C75154417B14AE079B2F5141EC51B87EC7515441EC51B8EE992F514133333373C75154418FC2F548962F5141B81E857BC7515441EC51B88E952F5141CDCCCC7CC75154415C8FC2F5932F5141CDCCCC2CCF5154418FC2F528892F51413D0AD703D05154415C8FC255862F5141EC51B89ECF515441295C8FC2862F51417B14AE87CD5154410AD7A3A0832F5141D7A3701DCD5154415C8FC2F5832F5141CDCCCC9CCA5154419A999929842F514152B81E85C951544166666616832F514152B81E85C9515441C3F5284C822F5141C3F528DCC95154410AD7A320822F514185EB5178CB515441A4703DAA822F51419A999979CD515441C3F5287C832F5141B81E85DBCE515441AE47E1FA842F51410AD7A370D0515441B81E856B862F514166666666D15154410AD7A310852F51411F85EB91D15154419A999929842F5141B81E85ABD7515441A4703DEA802F5141E17A14FED65154417B14AE47812F514114AE4781D4515441E17A14EE812F5141713D0AF7D151544185EB5108832F5141B81E850BD051544133333353822F5141D7A3707DCE5154410AD7A340812F5141333333F3CB515441CDCCCC1C812F51418FC2F5D8CA51544166666656812F5141AE47E1BAC85154410AD7A360802F51415C8FC225C7515441A4703DDA7E2F5141F6285C9FC5515441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000E4744C927F2F5141944740BA01525441C5577D9C802F5141DC8669C9015254417B14AE87AA2F5141AE47E11A0452544166666656BC2F514148E17A34055254418FC2F5E8BC2F51417B14AE0703525441000000A0C12F514148E17A84EA515441D7A3703DC52F5141F6285C7FD7515441713D0A57C52F51410AD7A3E0D6515441713D0A57C32F514114AE4781D55154411F85EB01C12F51415C8FC255D45154411F85EBB1BD2F51419A999959D3515441CDCCCCACB82F5141713D0AD7D2515441B81E858BB32F5141AE47E11AD251544166666676AF2F5141B81E858BD1515441295C8FA2AB2F51413D0AD753D0515441A4703DAAA82F51410AD7A340CF5154418FC2F518A42F51418FC2F548CD51544185EB51D89F2F5141F6285CBFCA5154418FC2F5289D2F514114AE4731C8515441AE47E1AA9C2F51410AD7A390C751544131E178B2922F5141F15CA007C8515441F614B851912F5141B115C839CF515441A89F181D8C2F51417A9E009DCE51544177A368ED822F5141A96BD5B1CD5154414D2B8D9C842F5141E78C8FD6CF51544151808660852F5141C169AD49D2515441E8E6F0EA842F5141A745B708D7515441AE1A308A832F5141DDBC7EA5D75154410660E0EF802F514142011B57D7515441DCE7049F822F5141E78C8FD6CF51544144DBEA03822F5141C3D7ACC1CD515441191B861D812F514178D325D2CA515441A8B8439B802F5141471D6686C7515441D5AB3F3C7E2F5141F99D8709C551544126B099C7792F5141C665C1CFC3515441D39988E3762F5141896DA4BBC7515441529656FA722F5141FFC9BE09CD5154417C450C316F2F5141ECED4C1CD25154415D79DBD0692F51410B327985DA515441E5AE585E672F5141120E2899E1515441A0AAABDB612F5141478FF719F751544186E5D3195F2F5141E678EB100052544137EA1B8B5F2F51414557B7160052544185EB51985F2F51415C8FC2F5FF51544152B81EE5732F51410000001001525441E4744C927F2F5141944740BA01525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533834 - 3466702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000045000000A4703DDA7E2F5141F6285C9FC5515441333333837E2F514133333343C2515441CDCCCC0C7F2F51410AD7A350C0515441CDCCCC2C7E2F5141295C8F22C0515441B81E857B7D2F51410AD7A380C0515441D7A3709D7C2F514166666626C1515441C3F5287C7B2F5141E17A14FEC15154418FC2F5F8792F5141CDCCCC8CC35154413D0AD7F3722F5141295C8F12CD51544166666656702F514166666686D0515441C3F5284C6C2F5141D7A3701DD6515441C3F5288C6A2F51417B14AEF7D8515441295C8F026A2F5141AE47E10ADA515441D7A370BD682F5141CDCCCC2CDD515441295C8F62672F514148E17A04E1515441B81E85FB642F51410AD7A320EB5154413D0AD7F3622F514114AE47D1F251544185EB51985F2F51415C8FC2F5FF51544152B81EE5732F51410000001001525441EC51B8CE8A2F5141E17A145E02525441F6285CDF9D2F51415C8FC2A5035254417B14AE87AA2F5141AE47E11A0452544166666656BC2F514148E17A34055254418FC2F5E8BC2F51417B14AE0703525441000000A0C12F514148E17A84EA515441D7A3703DC52F5141F6285C7FD7515441713D0A57C52F51410AD7A3E0D6515441713D0A57C32F514114AE4781D55154411F85EB01C12F51415C8FC255D45154411F85EBB1BD2F51419A999959D3515441CDCCCCACB82F5141713D0AD7D2515441B81E858BB32F5141AE47E11AD251544166666676AF2F5141B81E858BD1515441295C8FA2AB2F51413D0AD753D0515441A4703DAAA82F51410AD7A340CF5154418FC2F518A42F51418FC2F548CD51544185EB51D89F2F5141F6285CBFCA5154418FC2F5289D2F514114AE4731C8515441AE47E1AA9C2F51410AD7A390C75154417B14AE079B2F5141EC51B87EC7515441EC51B8EE992F514133333373C75154418FC2F548962F5141B81E857BC7515441EC51B88E952F5141CDCCCC7CC75154415C8FC2F5932F5141CDCCCC2CCF5154418FC2F528892F51413D0AD703D05154415C8FC255862F5141EC51B89ECF515441295C8FC2862F51417B14AE87CD5154410AD7A3A0832F5141D7A3701DCD5154415C8FC2F5832F5141CDCCCC9CCA5154419A999929842F514152B81E85C951544166666616832F514152B81E85C9515441C3F5284C822F5141C3F528DCC95154410AD7A320822F514185EB5178CB515441A4703DAA822F51419A999979CD515441C3F5287C832F5141B81E85DBCE515441AE47E1FA842F51410AD7A370D0515441B81E856B862F514166666666D15154410AD7A310852F51411F85EB91D15154419A999929842F5141B81E85ABD7515441A4703DEA802F5141E17A14FED65154417B14AE47812F514114AE4781D4515441E17A14EE812F5141713D0AF7D151544185EB5108832F5141B81E850BD051544133333353822F5141D7A3707DCE5154410AD7A340812F5141333333F3CB515441CDCCCC1C812F51418FC2F5D8CA51544166666656812F5141AE47E1BAC85154410AD7A360802F51415C8FC225C7515441A4703DDA7E2F5141F6285C9FC5515441
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000E4744C927F2F5141944740BA01525441C5577D9C802F5141DC8669C9015254417B14AE87AA2F5141AE47E11A0452544166666656BC2F514148E17A34055254418FC2F5E8BC2F51417B14AE0703525441000000A0C12F514148E17A84EA515441D7A3703DC52F5141F6285C7FD7515441713D0A57C52F51410AD7A3E0D6515441713D0A57C32F514114AE4781D55154411F85EB01C12F51415C8FC255D45154411F85EBB1BD2F51419A999959D3515441CDCCCCACB82F5141713D0AD7D2515441B81E858BB32F5141AE47E11AD251544166666676AF2F5141B81E858BD1515441295C8FA2AB2F51413D0AD753D0515441A4703DAAA82F51410AD7A340CF5154418FC2F518A42F51418FC2F548CD51544185EB51D89F2F5141F6285CBFCA5154418FC2F5289D2F514114AE4731C8515441AE47E1AA9C2F51410AD7A390C751544131E178B2922F5141F15CA007C8515441F614B851912F5141B115C839CF515441A89F181D8C2F51417A9E009DCE51544177A368ED822F5141A96BD5B1CD5154414D2B8D9C842F5141E78C8FD6CF51544151808660852F5141C169AD49D2515441E8E6F0EA842F5141A745B708D7515441AE1A308A832F5141DDBC7EA5D75154410660E0EF802F514142011B57D7515441DCE7049F822F5141E78C8FD6CF51544144DBEA03822F5141C3D7ACC1CD515441191B861D812F514178D325D2CA515441A8B8439B802F5141471D6686C7515441D5AB3F3C7E2F5141F99D8709C551544126B099C7792F5141C665C1CFC3515441D39988E3762F5141896DA4BBC7515441529656FA722F5141FFC9BE09CD5154417C450C316F2F5141ECED4C1CD25154415D79DBD0692F51410B327985DA515441E5AE585E672F5141120E2899E1515441A0AAABDB612F5141478FF719F751544186E5D3195F2F5141E678EB100052544137EA1B8B5F2F51414557B7160052544185EB51985F2F51415C8FC2F5FF51544152B81EE5732F51410000001001525441E4744C927F2F5141944740BA01525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535510 - 236322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000005B000000666666F6C1555141CDCCCCAC4A5D54413D0AD703C3555141295C8FD2465D54419A9999C9C4555141F6285C9F425D54418FC2F558C7555141666666E63E5D544148E17A04CA55514114AE47513C5D5441B81E85BBCC5551411F85EB51395D5441713D0A57D65551417B14AE572C5D5441B81E85DBD8555141D7A3707D285D544148E17A54DB5551413D0AD7D3235D544148E17AF4DD5551410AD7A3801D5D544185EB5168E0555141333333431A5D544133333373E3555141713D0AF7175D5441666666A6EA5551419A9999A9115D5441CDCCCC7CEC555141A4703D8A0F5D54410AD7A330ED555141333333630C5D54417B14AE57ED555141666666C6085D5441295C8F12EF55514185EB5128075D5441D7A370DDF35551419A999999085D5441C3F5283CF755514148E17A74095D5441AE47E17AFB5551410AD7A3000A5D5441C3F5287C02565141A4703D5A0A5D5441B81E85EB08565141713D0A870A5D5441D7A370ED015651418FC2F548075D544185EB51A8FB55514133333323075D5441000000B0F7555141666666D6065D544185EB5148F455514148E17AA4055D5441F6285C8FEE555141D7A3703D045D54417B14AE97EB5551418FC2F5F8075D544185EB5188EB5551417B14AE170C5D544166666606EB55514148E17A140F5D5441666666B6E95551411F85EBA1105D544185EB5168E255514166666696165D5441B81E850BDF555141AE47E1EA185D5441295C8FF2DB555141D7A370AD1C5D5441000000C0D85551419A9999E9235D544152B81E05D455514148E17A242B5D54411F85EBA1CA5551418FC2F5F8375D5441713D0A17C85551415C8FC2A53A5D5441CDCCCC5CC5555141EC51B8BE3D5D54410AD7A3B0C25551410AD7A3B0415D5441EC51B85EC1555141333333A3445D54413D0AD793BF555141AE47E14A4A5D544148E17AA4BF555141295C8FD24E5D544185EB51E8BF5551417B14AEF7535D544185EB51C8C0555141D7A3701D585D54415C8FC275C25551415C8FC2B55E5D544148E17A54C4555141F6285CEF665D544114AE47C1C55551413D0AD7D36C5D544152B81E95C755514114AE4711715D54418FC2F598C95551415C8FC2E5735D5441A4703DDACB555141EC51B80E775D5441B81E851BCC5551410AD7A3C0795D544152B81E85CC55514148E17A747D5D5441E17A140ED15551418FC2F598865D5441295C8F52D55551418FC2F598855D54418FC2F538E2555141B81E85EB815D54413D0AD7A3E1555141EC51B8EE835D54418FC2F588DD555141E17A142E8A5D5441C3F528ACD85551418FC2F5D88E5D54410AD7A350D25551418FC2F5C8935D5441AE47E1FACE555141EC51B8AE945D5441D7A3705DCD55514114AE47D1965D54410AD7A330CF555141C3F528AC975D5441CDCCCC4CD15551413D0AD703985D5441333333D3D3555141333333A3975D54410AD7A350D555514114AE47C1965D54419A9999D9D7555141D7A370AD945D5441EC51B85EDB5551411F85EBA1905D5441713D0AD7DE555141CDCCCC4C8D5D54415C8FC295E65551415C8FC245865D5441C3F5285CEA555141F6285CCF825D544133333313EE55514100000010805D54410AD7A3D0F1555141B81E85DB7D5D5441CDCCCCCCF0555141C3F5284C7D5D544148E17A14ED555141666666A67D5D5441A4703DCAE8555141A4703D6A7E5D544148E17A24E35551415C8FC2C57F5D5441A4703D1ADD555141EC51B85E815D54417B14AEC7D35551419A9999D9845D544166666666D2555141333333E3835D544100000000D155514148E17AD4815D544148E17A54CE55514148E17A547B5D5441A4703D5ACE555141AE47E1FA775D544148E17A54CB555141000000E0715D5441E17A149EC85551413D0AD7936C5D5441EC51B8EEC655514114AE47A1675D544148E17A44C55551415C8FC205615D5441713D0AB7C3555141F6285C6F5A5D5441B81E85EBC1555141CDCCCCBC535D5441CDCCCC9CC1555141000000D04E5D5441666666F6C1555141CDCCCCAC4A5D54410103000000010000000F00000000000070C155514166666646835D5441333333D3C2555141B81E85FB845D544185EB51C8C3555141D7A3707D855D54413D0AD783C1555141295C8F327F5D544185EB51B8BB555141B81E858B6E5D54413D0AD7D3B855514100000050685D5441AE47E1AAB6555141B81E851B605D54410AD7A3F0B2555141F6285C2F445D5441C3F5281CB1555141AE47E1CA445D54410AD7A310B35551411F85EBD1555D5441295C8F92B455514114AE4751605D54418FC2F5F8B6555141D7A370CD685D5441000000E0B9555141EC51B88E6F5D5441E17A14AEBF55514114AE47B17F5D544100000070C155514166666646835D54410103000000010000002E0000009A9999C9E65551419A9999998E5D5441F6285C9FE9555141C3F528FC895D5441295C8FE2EC55514114AE47C1855D54415C8FC215F05551417B14AE67825D5441F6285CCFF255514166666616805D5441A4703D9AF5555141000000E07D5D5441295C8F92F95551417B14AEB77B5D5441E17A145EF5555141000000507D5D5441295C8F42F25551413D0AD7C37E5D544185EB5198EE5551415C8FC2E5805D5441E17A14FEEA555141EC51B89E835D544114AE4741E755514148E17A04875D54418FC2F588E55551410AD7A390885D544114AE4781E5555141713D0A578A5D5441A4703D1AE4555141EC51B8CE8D5D5441C3F528DCE35551418FC2F5D8905D54410AD7A3D0E1555141666666A6965D5441E17A147EDF555141F6285C3F9A5D5441E17A14BEDF55514114AE4731A15D54411F85EB41E255514114AE4721A65D5441295C8F52E7555141AE47E12AAE5D54418FC2F598E9555141F6285CAFAE5D54411F85EBE1EB55514114AE47D1AE5D544185EB5188F0555141295C8FE2AE5D5441333333E3F255514100000010B05D54411F85EBD1F5555141295C8FF2B25D54413D0AD703F6555141A4703DAAB55D544114AE4701F6555141333333B3B75D544185EB51B8EF555141CDCCCC6CBB5D54418FC2F5C8EF5551418FC2F588BE5D544166666626F255514133333313BE5D5441295C8F62F655514114AE4741BD5D5441333333A3F8555141EC51B82EBC5D5441295C8FF2F7555141F6285C3FB65D544148E17AD4F65551411F85EBC1B25D5441EC51B86EF3555141F6285C3FAE5D544152B81E65F1555141CDCCCC2CAD5D54418FC2F528EF5551419A9999C9AC5D544133333393EB555141F6285CDFAC5D54418FC2F578E9555141F6285C1FAC5D54415C8FC2B5E7555141F6285CFFA95D544100000070E355514114AE47F1A35D5441333333B3E155514166666616A15D5441B81E856BE1555141B81E858B9D5D544166666626E25551417B14AE479A5D54419A9999C9E65551419A9999998E5D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000AD7A3F0B2555141F6285C2F445D5441814B6D67B155514116D3E4B1445D5441F516A61FB15551412D3044E9445D54416E906D3CB155514181D1ECE3455D5441350E5E3DB15551411B6E1BEC455D544103B42067B1555141B6F6D357475D5441674946CBB1555141991A14C04A5D54411BAC43F2B1555141002AAB134C5D5441A766B585B255514194D7DD17515D5441DCD28EE5B2555141FBE3AF5A545D54410AD7A310B35551411F85EBD1555D5441295C8F92B455514114AE4751605D544166B62BE2B4555141C6B7BC6A615D544117E44377B6555141EB32EA02675D54418FC2F5F8B6555141D7A370CD685D5441B72D8DCDB855514133AEFE0F6D5D5441000000E0B9555141EC51B88E6F5D544121B4AF59BB55514179D57FA8735D544155FADBB6BF555141B6FE2CC37F5D5441AFA3FA3FC1555141A08783E4825D54417E1DF154C15551413A973E0F835D544100000070C155514166666646835D5441333333D3C2555141B81E85FB845D544185EB51C8C3555141D7A3707D855D54413D0AD783C1555141295C8F327F5D544185EB51B8BB555141B81E858B6E5D54413D0AD7D3B855514100000050685D5441AE47E1AAB6555141B81E851B605D54410AD7A3F0B2555141F6285C2F445D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535510 - 376183
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000005B000000666666F6C1555141CDCCCCAC4A5D54413D0AD703C3555141295C8FD2465D54419A9999C9C4555141F6285C9F425D54418FC2F558C7555141666666E63E5D544148E17A04CA55514114AE47513C5D5441B81E85BBCC5551411F85EB51395D5441713D0A57D65551417B14AE572C5D5441B81E85DBD8555141D7A3707D285D544148E17A54DB5551413D0AD7D3235D544148E17AF4DD5551410AD7A3801D5D544185EB5168E0555141333333431A5D544133333373E3555141713D0AF7175D5441666666A6EA5551419A9999A9115D5441CDCCCC7CEC555141A4703D8A0F5D54410AD7A330ED555141333333630C5D54417B14AE57ED555141666666C6085D5441295C8F12EF55514185EB5128075D5441D7A370DDF35551419A999999085D5441C3F5283CF755514148E17A74095D5441AE47E17AFB5551410AD7A3000A5D5441C3F5287C02565141A4703D5A0A5D5441B81E85EB08565141713D0A870A5D5441D7A370ED015651418FC2F548075D544185EB51A8FB55514133333323075D5441000000B0F7555141666666D6065D544185EB5148F455514148E17AA4055D5441F6285C8FEE555141D7A3703D045D54417B14AE97EB5551418FC2F5F8075D544185EB5188EB5551417B14AE170C5D544166666606EB55514148E17A140F5D5441666666B6E95551411F85EBA1105D544185EB5168E255514166666696165D5441B81E850BDF555141AE47E1EA185D5441295C8FF2DB555141D7A370AD1C5D5441000000C0D85551419A9999E9235D544152B81E05D455514148E17A242B5D54411F85EBA1CA5551418FC2F5F8375D5441713D0A17C85551415C8FC2A53A5D5441CDCCCC5CC5555141EC51B8BE3D5D54410AD7A3B0C25551410AD7A3B0415D5441EC51B85EC1555141333333A3445D54413D0AD793BF555141AE47E14A4A5D544148E17AA4BF555141295C8FD24E5D544185EB51E8BF5551417B14AEF7535D544185EB51C8C0555141D7A3701D585D54415C8FC275C25551415C8FC2B55E5D544148E17A54C4555141F6285CEF665D544114AE47C1C55551413D0AD7D36C5D544152B81E95C755514114AE4711715D54418FC2F598C95551415C8FC2E5735D5441A4703DDACB555141EC51B80E775D5441B81E851BCC5551410AD7A3C0795D544152B81E85CC55514148E17A747D5D5441E17A140ED15551418FC2F598865D5441295C8F52D55551418FC2F598855D54418FC2F538E2555141B81E85EB815D54413D0AD7A3E1555141EC51B8EE835D54418FC2F588DD555141E17A142E8A5D5441C3F528ACD85551418FC2F5D88E5D54410AD7A350D25551418FC2F5C8935D5441AE47E1FACE555141EC51B8AE945D5441D7A3705DCD55514114AE47D1965D54410AD7A330CF555141C3F528AC975D5441CDCCCC4CD15551413D0AD703985D5441333333D3D3555141333333A3975D54410AD7A350D555514114AE47C1965D54419A9999D9D7555141D7A370AD945D5441EC51B85EDB5551411F85EBA1905D5441713D0AD7DE555141CDCCCC4C8D5D54415C8FC295E65551415C8FC245865D5441C3F5285CEA555141F6285CCF825D544133333313EE55514100000010805D54410AD7A3D0F1555141B81E85DB7D5D5441CDCCCCCCF0555141C3F5284C7D5D544148E17A14ED555141666666A67D5D5441A4703DCAE8555141A4703D6A7E5D544148E17A24E35551415C8FC2C57F5D5441A4703D1ADD555141EC51B85E815D54417B14AEC7D35551419A9999D9845D544166666666D2555141333333E3835D544100000000D155514148E17AD4815D544148E17A54CE55514148E17A547B5D5441A4703D5ACE555141AE47E1FA775D544148E17A54CB555141000000E0715D5441E17A149EC85551413D0AD7936C5D5441EC51B8EEC655514114AE47A1675D544148E17A44C55551415C8FC205615D5441713D0AB7C3555141F6285C6F5A5D5441B81E85EBC1555141CDCCCCBC535D5441CDCCCC9CC1555141000000D04E5D5441666666F6C1555141CDCCCCAC4A5D54410103000000010000000F00000000000070C155514166666646835D5441333333D3C2555141B81E85FB845D544185EB51C8C3555141D7A3707D855D54413D0AD783C1555141295C8F327F5D544185EB51B8BB555141B81E858B6E5D54413D0AD7D3B855514100000050685D5441AE47E1AAB6555141B81E851B605D54410AD7A3F0B2555141F6285C2F445D5441C3F5281CB1555141AE47E1CA445D54410AD7A310B35551411F85EBD1555D5441295C8F92B455514114AE4751605D54418FC2F5F8B6555141D7A370CD685D5441000000E0B9555141EC51B88E6F5D5441E17A14AEBF55514114AE47B17F5D544100000070C155514166666646835D54410103000000010000002E0000009A9999C9E65551419A9999998E5D5441F6285C9FE9555141C3F528FC895D5441295C8FE2EC55514114AE47C1855D54415C8FC215F05551417B14AE67825D5441F6285CCFF255514166666616805D5441A4703D9AF5555141000000E07D5D5441295C8F92F95551417B14AEB77B5D5441E17A145EF5555141000000507D5D5441295C8F42F25551413D0AD7C37E5D544185EB5198EE5551415C8FC2E5805D5441E17A14FEEA555141EC51B89E835D544114AE4741E755514148E17A04875D54418FC2F588E55551410AD7A390885D544114AE4781E5555141713D0A578A5D5441A4703D1AE4555141EC51B8CE8D5D5441C3F528DCE35551418FC2F5D8905D54410AD7A3D0E1555141666666A6965D5441E17A147EDF555141F6285C3F9A5D5441E17A14BEDF55514114AE4731A15D54411F85EB41E255514114AE4721A65D5441295C8F52E7555141AE47E12AAE5D54418FC2F598E9555141F6285CAFAE5D54411F85EBE1EB55514114AE47D1AE5D544185EB5188F0555141295C8FE2AE5D5441333333E3F255514100000010B05D54411F85EBD1F5555141295C8FF2B25D54413D0AD703F6555141A4703DAAB55D544114AE4701F6555141333333B3B75D544185EB51B8EF555141CDCCCC6CBB5D54418FC2F5C8EF5551418FC2F588BE5D544166666626F255514133333313BE5D5441295C8F62F655514114AE4741BD5D5441333333A3F8555141EC51B82EBC5D5441295C8FF2F7555141F6285C3FB65D544148E17AD4F65551411F85EBC1B25D5441EC51B86EF3555141F6285C3FAE5D544152B81E65F1555141CDCCCC2CAD5D54418FC2F528EF5551419A9999C9AC5D544133333393EB555141F6285CDFAC5D54418FC2F578E9555141F6285C1FAC5D54415C8FC2B5E7555141F6285CFFA95D544100000070E355514114AE47F1A35D5441333333B3E155514166666616A15D5441B81E856BE1555141B81E858B9D5D544166666626E25551417B14AE479A5D54419A9999C9E65551419A9999998E5D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000AD7A3F0B2555141F6285C2F445D5441814B6D67B155514116D3E4B1445D5441F516A61FB15551412D3044E9445D54416E906D3CB155514181D1ECE3455D5441350E5E3DB15551411B6E1BEC455D544103B42067B1555141B6F6D357475D5441674946CBB1555141991A14C04A5D54411BAC43F2B1555141002AAB134C5D5441A766B585B255514194D7DD17515D5441DCD28EE5B2555141FBE3AF5A545D54410AD7A310B35551411F85EBD1555D5441295C8F92B455514114AE4751605D544166B62BE2B4555141C6B7BC6A615D544117E44377B6555141EB32EA02675D54418FC2F5F8B6555141D7A370CD685D5441B72D8DCDB855514133AEFE0F6D5D5441000000E0B9555141EC51B88E6F5D544121B4AF59BB55514179D57FA8735D544155FADBB6BF555141B6FE2CC37F5D5441AFA3FA3FC1555141A08783E4825D54417E1DF154C15551413A973E0F835D544100000070C155514166666646835D5441333333D3C2555141B81E85FB845D544185EB51C8C3555141D7A3707D855D54413D0AD783C1555141295C8F327F5D544185EB51B8BB555141B81E858B6E5D54413D0AD7D3B855514100000050685D5441AE47E1AAB6555141B81E851B605D54410AD7A3F0B2555141F6285C2F445D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536080 - 998614
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F00000052B81EF5625B5141C3F5289C274F544133333353615B51417B14AE87254F544114AE4791605B514148E17A34234F54417B14AEF7615B51418FC2F598184F5441AE47E13A625B51411F85EB810D4F5441A4703DAA615B5141000000300D4F544114AE47B1615B5141295C8FF20B4F544100000070645B514148E17AE40B4F54419A9999F96B5B5141CDCCCC6C0C4F54413D0AD7236E5B5141C3F528DC0D4F544148E17AB4715B5141B81E85FB0F4F5441B81E858B765B5141D7A370BD114F54418FC2F5E8775B5141D7A370BD114F54411F85EB21795B51413D0AD7C30F4F5441E17A147E795B5141E17A146E0D4F5441CDCCCC2C7A5B5141713D0A070C4F54415C8FC2E57B5B51411F85EBA10B4F54410AD7A3F07C5B514133333323064F54411F85EB617E5B5141CDCCCC0C014F5441666666F67C5B51411F85EB41014F544100000090785B5141D7A370BD014F544152B81E156F5B5141D7A370BD014F5441EC51B8AE605B5141EC51B8EE014F54417B14AE975A5B5141B81E855B014F5441713D0AE7595B514148E17A741C4F5441CDCCCC5C4C5B5141000000501C4F5441AE47E1CA4B5B5141EC51B84E1C4F5441CDCCCC8C4B5B5141EC51B81E244F544185EB51F8495B5141A4703D0A264F5441D7A370ED485B514166666686284F54413D0AD733495B51415C8FC2952B4F5441E17A14EE495B5141EC51B8BE2B4F5441EC51B81E4A5B51418FC2F5782D4F5441E17A145E4A5B5141000000B02E4F5441000000704B5B51418FC2F518314F5441A4703D5A4D5B5141713D0A77344F5441D7A3707D545B514148E17A54354F5441666666265A5B51415C8FC275354F544185EB51E85E5B51417B14AE47354F544114AE4701605B51411F85EB912F4F544148E17AE4625B5141666666662F4F544166666696635B5141B81E857B2D4F544100000060675B514152B81EF52C4F544148E17A446B5B5141666666862C4F5441333333736B5B5141D7A3706D284F5441F6285C3F695B5141D7A3708D284F544152B81EF5625B5141C3F5289C274F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AE975A5B5141B81E855B014F5441713D0AE7595B514148E17A741C4F5441CDCCCC5C4C5B5141000000501C4F5441AE47E1CA4B5B5141EC51B84E1C4F5441CDCCCC8C4B5B5141EC51B81E244F544185EB51F8495B5141A4703D0A264F544164E918E54B5B5141972B931B2C4F5441D79CA1554D5B5141D387EF6E344F5441BFA5A633535B5141F437832C354F5441693573C0585B514163DD896D354F5441D9CF52CF5E5B5141B430A048354F54418CED2EA35F5B514116F078972F4F54415DEF29905F5B514196D1E55D2C4F544100681A165E5B5141C281B5C5274F54412781136E5D5B5141E3459153244F544199F416C25D5B5141EF733E731C4F5441CF622DE45F5B5141DA0BBD24104F544137D63038605B514137C179BE094F54415193CF506F5B514142C179BE094F54413BBBE79C715B5141313EAFD40E4F54417C15F298725B5141C433D570124F5441767E1B89765B51416D01E3C0134F544186D33853795B514162439C060D4F54418B28561D7C5B5141DB396A44084F544186917F0D805B514169082036014F5441803C62437D5B5141DB7B238A014F5441A4519D8A795B5141ED34F5A1014F544100000090785B5141D7A370BD014F544152B81E156F5B5141D7A370BD014F5441EC51B8AE605B5141EC51B8EE014F54417B14AE975A5B5141B81E855B014F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536080 - 3800384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F00000052B81EF5625B5141C3F5289C274F544133333353615B51417B14AE87254F544114AE4791605B514148E17A34234F54417B14AEF7615B51418FC2F598184F5441AE47E13A625B51411F85EB810D4F5441A4703DAA615B5141000000300D4F544114AE47B1615B5141295C8FF20B4F544100000070645B514148E17AE40B4F54419A9999F96B5B5141CDCCCC6C0C4F54413D0AD7236E5B5141C3F528DC0D4F544148E17AB4715B5141B81E85FB0F4F5441B81E858B765B5141D7A370BD114F54418FC2F5E8775B5141D7A370BD114F54411F85EB21795B51413D0AD7C30F4F5441E17A147E795B5141E17A146E0D4F5441CDCCCC2C7A5B5141713D0A070C4F54415C8FC2E57B5B51411F85EBA10B4F54410AD7A3F07C5B514133333323064F54411F85EB617E5B5141CDCCCC0C014F5441666666F67C5B51411F85EB41014F544100000090785B5141D7A370BD014F544152B81E156F5B5141D7A370BD014F5441EC51B8AE605B5141EC51B8EE014F54417B14AE975A5B5141B81E855B014F5441713D0AE7595B514148E17A741C4F5441CDCCCC5C4C5B5141000000501C4F5441AE47E1CA4B5B5141EC51B84E1C4F5441CDCCCC8C4B5B5141EC51B81E244F544185EB51F8495B5141A4703D0A264F5441D7A370ED485B514166666686284F54413D0AD733495B51415C8FC2952B4F5441E17A14EE495B5141EC51B8BE2B4F5441EC51B81E4A5B51418FC2F5782D4F5441E17A145E4A5B5141000000B02E4F5441000000704B5B51418FC2F518314F5441A4703D5A4D5B5141713D0A77344F5441D7A3707D545B514148E17A54354F5441666666265A5B51415C8FC275354F544185EB51E85E5B51417B14AE47354F544114AE4701605B51411F85EB912F4F544148E17AE4625B5141666666662F4F544166666696635B5141B81E857B2D4F544100000060675B514152B81EF52C4F544148E17A446B5B5141666666862C4F5441333333736B5B5141D7A3706D284F5441F6285C3F695B5141D7A3708D284F544152B81EF5625B5141C3F5289C274F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AE975A5B5141B81E855B014F5441713D0AE7595B514148E17A741C4F5441CDCCCC5C4C5B5141000000501C4F5441AE47E1CA4B5B5141EC51B84E1C4F5441CDCCCC8C4B5B5141EC51B81E244F544185EB51F8495B5141A4703D0A264F544164E918E54B5B5141972B931B2C4F5441D79CA1554D5B5141D387EF6E344F5441BFA5A633535B5141F437832C354F5441693573C0585B514163DD896D354F5441D9CF52CF5E5B5141B430A048354F54418CED2EA35F5B514116F078972F4F54415DEF29905F5B514196D1E55D2C4F544100681A165E5B5141C281B5C5274F54412781136E5D5B5141E3459153244F544199F416C25D5B5141EF733E731C4F5441CF622DE45F5B5141DA0BBD24104F544137D63038605B514137C179BE094F54415193CF506F5B514142C179BE094F54413BBBE79C715B5141313EAFD40E4F54417C15F298725B5141C433D570124F5441767E1B89765B51416D01E3C0134F544186D33853795B514162439C060D4F54418B28561D7C5B5141DB396A44084F544186917F0D805B514169082036014F5441803C62437D5B5141DB7B238A014F5441A4519D8A795B5141ED34F5A1014F544100000090785B5141D7A370BD014F544152B81E156F5B5141D7A370BD014F5441EC51B8AE605B5141EC51B8EE014F54417B14AE975A5B5141B81E855B014F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536104 - 150105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000666666761258514166666646056054418FC2F5880F58514114AE47C108605441333333430D5851411F85EB910C605441E17A143E0B5851410AD7A35011605441000000C0095851419A999929176054411F85EBE108585141B81E854B1D605441D7A3709D08585141D7A3703D23605441B81E858B085851410AD7A3402D6054410AD7A3702258514152B81E052A6054419A999909235851411F85EBF129605441AE47E17A24585141B81E85AB256054418FC2F5E8255851411F85EBB121605441AE47E1FA26585141713D0A171F6054419A9999B927585141F6285C6F1D605441EC51B86E29585141000000301A605441CDCCCC4C155851419A9999890D60544114AE47311658514185EB519808605441A4703D4A175851411F85EB8102605441AE47E17A15585141F6285C8F0260544166666676125851416666664605605441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A3709D08585141D7A3703D236054418515AB96085851416E0D090627605441DA08FCB408585141D8FAFD262D60544189DF45381358514118F181EB2B6054410AD7A3702258514152B81E052A60544106240DE422585141D71AA2F629605441FE60EF1623585141AB6D66CA29605441AE47E17A24585141B81E85AB256054418FC2F5E8255851411F85EBB121605441AE47E1FA26585141713D0A171F6054419A9999B927585141F6285C6F1D605441EC51B86E29585141000000301A605441CDCCCC4C155851419A9999890D60544114AE47311658514185EB519808605441CA2C4853165851412FB9B8DB0760544107DAB685165851410947F7B005605441FD7474041758514198E332AA026054413B117374155851419E57259502605441357A8DF514585141854C5207036054411582C7AE12585141AB30AC1305605441F5032844125851412C57AC8205605441A5129E2212585141419EFEA9056054418FC2F5880F58514114AE47C1086054419E69D9C40D5851417CDB44B80B605441AD759A2E0D585141403D4DC20C60544126E815210D585141B51C0EE20C605441E50533600C5851415D9925A70E60544162A6C63C0C585141214C5BFA0E6054414E1379390B58514104A8B06211605441000000C0095851419A999929176054411F85EBE108585141B81E854B1D605441D7A3709D08585141D7A3703D23605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536773 - 3182010
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7C3A0585141000000F071575441A4703DFA965851415C8FC2F56D575441C3F5280C8D58514114AE47516A575441A4703D8A82585141666666D666575441D7A3700D775851413D0AD7D3625754411F85EB117558514166666626625754413333339374585141295C8F5263575441EC51B8FE7358514114AE4741655754410AD7A33072585141713D0AD76C575441D7A3703D71585141C3F5284C7057544148E17AE4705851411F85EB217357544148E17A0471585141000000607857544166666666715851410AD7A3E07B5754410AD7A3F071585141D7A3703D7E575441CDCCCCAC725851416666661680575441A4703D7A89585141C3F5285C8657544185EB51889F585141B81E85EB8D575441F6285C5FAE585141295C8FD29757544100000030B95851415C8FC205A15754413D0AD733BB5851410AD7A3B0A257544152B81EF5BF58514152B81E15A057544114AE4711CA585141B81E851B9A57544114AE4771B75851415C8FC2558A5754415C8FC205C0585141713D0AA77F57544152B81EB5B658514152B81E857B5754411F85EB21AB58514185EB5188765754413D0AD7C3A0585141000000F071575441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000163A242CE55851415AD435E391575441C342881BDF585141AD1773D18E57544146E3D977D858514127E7307F91575441ED2F5830D7585141685DC98E9157544190A374AAD5585141A5FAFF5F9157544140A2B6DFD45851413672563A92575441F6795A53D4585141BD37E99792575441E8EE3498D35851417CC1508892575441DA630FDDD25851416E362BCD91575441FAEAFA37D1585141D09B709193575441BDE5020DCE5851419C483CE39057544128954AF4CC5851417CC15088925754413A911094CA5851419C483CE390575441E24550A6CC585141AA6BA0448E57544156A75B0ACC585141641CA6F68D575441D422EC44CF585141A0511B6E8A57544178FEC918D158514130C971488B5754418A625112D258514130C971488B575441DE3C711BD3585141A42A7DAC8A575441E8EE3498D358514114B326D2895754416ADB65B7D35851413EECD5A988575441BE4DC466D1585141A99B1D9187575441B789FA92C05851418E4665907F575441455BBA55BF58514134463582805754413B1314BABD585141A320BB828257544183136D21BC585141A4AD857F8457544197C0CCCEBA585141D7AE202586575441A88F0F73B9585141533714D6875754411A026887B7585141245F7F688A575441C0E4B70DBA58514163F7D28B8C5754412AF02519CA585141A72B0C159A575441B0F52ECBCA5851411B84CF8A9A575441EDD6B0EFCE5851413F85605B97575441EEB132F9D0585141B5F0AB009657544120B3092BD35851416013C76B94575441C767493DD5585141BD9FAAF195575441B275E21CD95851410E9B936398575441395477E5DC585141C210417E96575441C1FEA96CDF5851410611F81595575441295C8FD2E3585141333333A392575441163A242CE55851415AD435E391575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536773 - 3562735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7C3A0585141000000F071575441A4703DFA965851415C8FC2F56D575441C3F5280C8D58514114AE47516A575441A4703D8A82585141666666D666575441D7A3700D775851413D0AD7D3625754411F85EB117558514166666626625754413333339374585141295C8F5263575441EC51B8FE7358514114AE4741655754410AD7A33072585141713D0AD76C575441D7A3703D71585141C3F5284C7057544148E17AE4705851411F85EB217357544148E17A0471585141000000607857544166666666715851410AD7A3E07B5754410AD7A3F071585141D7A3703D7E575441CDCCCCAC725851416666661680575441A4703D7A89585141C3F5285C8657544185EB51889F585141B81E85EB8D575441F6285C5FAE585141295C8FD29757544100000030B95851415C8FC205A15754413D0AD733BB5851410AD7A3B0A257544152B81EF5BF58514152B81E15A057544114AE4711CA585141B81E851B9A57544114AE4771B75851415C8FC2558A5754415C8FC205C0585141713D0AA77F57544152B81EB5B658514152B81E857B5754411F85EB21AB58514185EB5188765754413D0AD7C3A0585141000000F071575441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000163A242CE55851415AD435E391575441C342881BDF585141AD1773D18E57544146E3D977D858514127E7307F91575441ED2F5830D7585141685DC98E9157544190A374AAD5585141A5FAFF5F9157544140A2B6DFD45851413672563A92575441F6795A53D4585141BD37E99792575441E8EE3498D35851417CC1508892575441DA630FDDD25851416E362BCD91575441FAEAFA37D1585141D09B709193575441BDE5020DCE5851419C483CE39057544128954AF4CC5851417CC15088925754413A911094CA5851419C483CE390575441E24550A6CC585141AA6BA0448E57544156A75B0ACC585141641CA6F68D575441D422EC44CF585141A0511B6E8A57544178FEC918D158514130C971488B5754418A625112D258514130C971488B575441DE3C711BD3585141A42A7DAC8A575441E8EE3498D358514114B326D2895754416ADB65B7D35851413EECD5A988575441BE4DC466D1585141A99B1D9187575441B789FA92C05851418E4665907F575441455BBA55BF58514134463582805754413B1314BABD585141A320BB828257544183136D21BC585141A4AD857F8457544197C0CCCEBA585141D7AE202586575441A88F0F73B9585141533714D6875754411A026887B7585141245F7F688A575441C0E4B70DBA58514163F7D28B8C5754412AF02519CA585141A72B0C159A575441B0F52ECBCA5851411B84CF8A9A575441EDD6B0EFCE5851413F85605B97575441EEB132F9D0585141B5F0AB009657544120B3092BD35851416013C76B94575441C767493DD5585141BD9FAAF195575441B275E21CD95851410E9B936398575441395477E5DC585141C210417E96575441C1FEA96CDF5851410611F81595575441295C8FD2E3585141333333A392575441163A242CE55851415AD435E391575441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537540 - 3020004
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FB260555141B81E85AB0F5E5441295C8F3261555141000000700F5E5441E17A149E77555141B81E853B055E54413D0AD7B3755551410AD7A350005E54418FC2F5985D5551419A9999490B5E5441F6285C2F5D555141000000700B5E5441295C8FB260555141B81E85AB0F5E5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BC89A3115F555141752C23B50D5E544152C6FABC5D555141642AA61A0C5E54411C74691458555141F84B516A0E5E544161751F7154555141004E4198085E54419BC03E7A38555141F2270947155E54413DAEF66837555141295848811B5E5441D91209273655514127FD98A9225E544131F28D02555551413BCD7AB4145E5441B15D6FBC56555141C3015FFD135E5441056732C356555141B3A34601145E5441A5E0C4F457555141C4D4F17B135E5441A8D81E9F585551411E865A35135E544126ECD17A58555141492A7441135E54413D43F8BA5E555141555B4187105E54418176C9B460555141FD857FB40F5E5441D1F7C7AE605551418FC72BAD0F5E54415F988EB2605551410D0286AB0F5E5441BC89A3115F555141752C23B50D5E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537540 - 3533979
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FB260555141B81E85AB0F5E5441295C8F3261555141000000700F5E5441E17A149E77555141B81E853B055E54413D0AD7B3755551410AD7A350005E54418FC2F5985D5551419A9999490B5E5441F6285C2F5D555141000000700B5E5441295C8FB260555141B81E85AB0F5E5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BC89A3115F555141752C23B50D5E544152C6FABC5D555141642AA61A0C5E54411C74691458555141F84B516A0E5E544161751F7154555141004E4198085E54419BC03E7A38555141F2270947155E54413DAEF66837555141295848811B5E5441D91209273655514127FD98A9225E544131F28D02555551413BCD7AB4145E5441B15D6FBC56555141C3015FFD135E5441056732C356555141B3A34601145E5441A5E0C4F457555141C4D4F17B135E5441A8D81E9F585551411E865A35135E544126ECD17A58555141492A7441135E54413D43F8BA5E555141555B4187105E54418176C9B460555141FD857FB40F5E5441D1F7C7AE605551418FC72BAD0F5E54415F988EB2605551410D0286AB0F5E5441BC89A3115F555141752C23B50D5E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537556 - 150049
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000009A9999F958555141D7A370FD085D5441C3F5289C5755514114AE4751065D544185EB5138555551413D0AD7A3015D54417B14AE7754555141B81E852B005D544114AE47B151555141C3F528BCFA5C5441E17A140E4F555141B81E85CBF55C54415C8FC2A54D555141D7A370CDF35C5441713D0A0745555141713D0A67F75C5441A4703D1A40555141666666D6ED5C54410AD7A35018555141F6285CFFFD5C5441A4703D0A1C55514166666656075D544148E17AA41C5551411F85EBD1085D544148E17A141F55514114AE47D10E5D544148E17A642155514148E17A84145D544152B81EF52155514185EB51E8155D5441A4703D9A235551415C8FC2F5195D54413D0AD7A324555141333333831C5D544148E17A04255551410AD7A3701D5D54419A9999F958555141D7A370FD085D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000052B81EF52155514185EB51E8155D54413AE0C4DE2255514167A3EB27185D5441BF053E9A23555141D1B4C2F5195D5441BCF7FD7B24555141A61A2A211C5D54413D0AD7A324555141333333831C5D5441EA37F8AE24555141C67F8B9E1C5D5441A0417B04255551419908A3701D5D54415AC18AD335555141116FFED2165D5441013C3928515551416EE029110C5D54417F3CCC3255555141A9EDF6790A5D5441347799F95855514161B170FD085D54417B40289C5755514179FF4651065D5441953A5238555551419D2CD8A3015D54418D20DB0655555141E26B3643015D54417B14AE7754555141B81E852B005D5441EB03834D5355514199428AE3FD5C5441681547B15155514198EC29BCFA5C5441FC30416D50555141C8DF435DF85C5441E17A140E4F555141B81E85CBF55C54411D799A004E555141D46B0A4EF45C5441AA3F0A57435551411CBAD554F95C5441CA9040663D5551411EC874EFEE5C54410AD7A35018555141F6285CFFFD5C5441A4703D0A1C55514166666656075D544148E17AA41C5551411F85EBD1085D54418C2729311D5551419A1A112C0A5D544139577B141F555141943547D10E5D5441529B365E20555141E72D07FE115D544148E17A642155514148E17A84145D544152B81EF52155514185EB51E8155D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537576 - 227178
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004C000000EC51B80E8255514148E17A04215E5441E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E544114AE47116B555141E17A147E2F5E544185EB51186B55514148E17AB42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E54418FC2F5386E5551418FC2F5483B5E5441A4703D7A6E55514185EB51D83B5E5441A4703D1A6F555141713D0A173D5E54417B14AE2770555141333333F33D5E54418FC2F57871555141CDCCCC3C3E5E544152B81E8572555141EC51B82E3E5E544114AE47017455514114AE47513E5E544185EB51D874555141713D0A373E5E54415C8FC2C5755551415C8FC2D53D5E5441CDCCCCCC76555141EC51B8AE3D5E54419A9999B97755514152B81E353E5E544185EB5178785551413D0AD7533F5E54410AD7A3B078555141D7A3707D405E5441A4703D4A785551418FC2F5A8415E5441CDCCCC8C77555141000000F0425E5441EC51B8EE76555141F6285CBF435E5441AE47E1BA76555141CDCCCC7C445E544152B81EE57655514114AE4751455E544114AE47B179555141C3F5282C495E5441333333837C5551410AD7A3C04C5E544148E17A747E555141B81E851B4F5E54413D0AD7237F5551411F85EB61505E544152B81E957F555141713D0A77515E54416666665680555141D7A3703D525E54417B14AEB7815551417B14AE17535E54410AD7A3A082555141F6285C6F545E544148E17AD482555141E17A145E555E544114AE47318355514185EB5148565E5441000000B08555514152B81E75535E5441666666968B555141333333734D5E54415C8FC2D590555141666666B6485E5441E17A14DE8D555141CDCCCCDC445E544114AE47C18D55514114AE4731445E5441D7A3707D8C55514152B81E35435E54410AD7A3608B5551413D0AD783425E5441E17A143E8A555141F6285CFF415E5441D7A3704D89555141295C8FF2415E5441295C8FA2865551417B14AE67435E544152B81ED5865551417B14AE77445E54415C8FC29586555141B81E857B455E544148E17A048655514148E17A94455E5441F6285C7F85555141F6285C2F455E54410AD7A3008555514114AE4771445E544148E17AC48355514100000000445E5441713D0AE78255514185EB5118425E54415C8FC2558255514152B81E45425E54413D0AD7D380555141EC51B8EE3E5E5441CDCCCCEC80555141333333733D5E5441CDCCCC2C83555141713D0A373C5E5441295C8F8286555141EC51B8CE3A5E5441CDCCCC7C88555141F6285C7F3B5E544148E17A14895551418FC2F5A83C5E5441CDCCCC8C89555141D7A3703D3E5E5441B81E85EB89555141D7A3706D3F5E5441B81E85EB89555141295C8F02415E5441000000A08B5551419A9999D9415E5441CDCCCCBC8C5551410AD7A390425E5441666666968D555141F6285C2F435E54419A9999398C55514114AE47113B5E54413333333388555141A4703DAA305E5441AE47E19A83555141B81E85FB245E54419A9999C982555141295C8FE2225E5441EC51B80E8255514148E17A04215E5441
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E54413923F17B6B5551415C028FA22E5E5441504348116B555141DDBA157E2F5E544182CBCB146B555141EAE93F992F5E544173E85D186B555141C778D6B42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E54418FC2F5386E5551418FC2F5483B5E5441A4703D7A6E55514185EB51D83B5E5441A4703D1A6F555141713D0A173D5E54417B14AE2770555141333333F33D5E54418FC2F57871555141CDCCCC3C3E5E544152B81E8572555141EC51B82E3E5E544114AE47017455514114AE47513E5E544185EB51D874555141713D0A373E5E54415C8FC2C5755551415C8FC2D53D5E5441CDCCCCCC76555141EC51B8AE3D5E54419A9999B97755514152B81E353E5E544167F7DCE4775551416DEF28763E5E5441E9E6490478555141C55D96813E5E5441F01EC7FC7755514108B61C9A3E5E544185EB5178785551413D0AD7533F5E54410AD7A3B078555141D7A3707D405E5441A4703D4A785551418FC2F5A8415E5441CDCCCC8C77555141000000F0425E5441EC51B8EE76555141F6285CBF435E5441AE47E1BA76555141CDCCCC7C445E544152B81EE57655514114AE4751455E544114AE47B179555141C3F5282C495E5441333333837C5551410AD7A3C04C5E544148E17A747E555141B81E851B4F5E54413D0AD7237F5551411F85EB61505E544152B81E957F555141713D0A77515E54416666665680555141D7A3703D525E54417B14AEB7815551417B14AE17535E54410AD7A3A082555141F6285C6F545E544148E17AD482555141E17A145E555E544114AE47318355514185EB5148565E5441000000B08555514152B81E75535E5441666666968B555141333333734D5E5441C89D6DB790555141E2ACC8D1485E54417D64EDCC90555141A1C9F0AA485E5441E17A14DE8D555141CDCCCCDC445E54417E6CB9D48D555141E6E814A5445E5441D5592D758D555141017E1343445E5441D9ACC2D38A55514183910D68425E54410B16BF8689555141FF42AC22425E544108F7D4DE86555141AB3F258B435E544120D1A31687555141F0DDC920455E544157AFE6A086555141EB86D44D455E54415C8FC29586555141B81E857B455E544148E17A048655514148E17A94455E54412BFA03FB85555141E3674A8D455E5441C2ADD4468555514100AA38D2455E544134A0BBBC82555141E7CA9A72445E5441B8FCCF4880555141E58F7511405E54413F93F7E87F555141C91E00C23E5E5441935785DE80555141FCE7504C3E5E5441CDCCCCEC80555141333333733D5E544134F8B71C8355514124ECDD3F3C5E54416CD5AA9B8255514192FCD0043B5E544149411C738555514125DC39DB395E54413466F106865551412526E4023B5E5441295C8F8286555141EC51B8CE3A5E5441CDCCCC7C88555141F6285C7F3B5E54411A41C48388555141AD57078D3B5E54412AD8D0CE885551414A2714893B5E5441011CD41C8955514191F9D5033C5E54413B6DF210895551413752570D3C5E5441ABB8CCBE8A55514183C90759415E54416A2FAA568B5551419F5478B5415E5441000000A08B5551419A9999D9415E5441B3EE409A8C5551417EEA6F7A425E5441D80B45918D555141C176CB10435E5441FF60703E8D555141CF554E23415E54414EFDF3F88C55514187B352853F5E544199CEB78D8C5551412B0810793D5E5441E47D600E8C5551419EA085DC3A5E5441C7C2AB158C555141A75B53D93A5E5441877474EC8B5551413991E6493A5E54413333333388555141A4703DAA305E5441AE47E19A83555141B81E85FB245E5441A8439C618355514150A19468245E5441D15E98C98255514140B28EE2225E54415D85B70E82555141C6977B04215E5441CAEE5BFF7B555141551056A7235E5441E17A144E70555141D7A370BD285E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537576 - 365583
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004C000000EC51B80E8255514148E17A04215E5441E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E544114AE47116B555141E17A147E2F5E544185EB51186B55514148E17AB42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E54418FC2F5386E5551418FC2F5483B5E5441A4703D7A6E55514185EB51D83B5E5441A4703D1A6F555141713D0A173D5E54417B14AE2770555141333333F33D5E54418FC2F57871555141CDCCCC3C3E5E544152B81E8572555141EC51B82E3E5E544114AE47017455514114AE47513E5E544185EB51D874555141713D0A373E5E54415C8FC2C5755551415C8FC2D53D5E5441CDCCCCCC76555141EC51B8AE3D5E54419A9999B97755514152B81E353E5E544185EB5178785551413D0AD7533F5E54410AD7A3B078555141D7A3707D405E5441A4703D4A785551418FC2F5A8415E5441CDCCCC8C77555141000000F0425E5441EC51B8EE76555141F6285CBF435E5441AE47E1BA76555141CDCCCC7C445E544152B81EE57655514114AE4751455E544114AE47B179555141C3F5282C495E5441333333837C5551410AD7A3C04C5E544148E17A747E555141B81E851B4F5E54413D0AD7237F5551411F85EB61505E544152B81E957F555141713D0A77515E54416666665680555141D7A3703D525E54417B14AEB7815551417B14AE17535E54410AD7A3A082555141F6285C6F545E544148E17AD482555141E17A145E555E544114AE47318355514185EB5148565E5441000000B08555514152B81E75535E5441666666968B555141333333734D5E54415C8FC2D590555141666666B6485E5441E17A14DE8D555141CDCCCCDC445E544114AE47C18D55514114AE4731445E5441D7A3707D8C55514152B81E35435E54410AD7A3608B5551413D0AD783425E5441E17A143E8A555141F6285CFF415E5441D7A3704D89555141295C8FF2415E5441295C8FA2865551417B14AE67435E544152B81ED5865551417B14AE77445E54415C8FC29586555141B81E857B455E544148E17A048655514148E17A94455E5441F6285C7F85555141F6285C2F455E54410AD7A3008555514114AE4771445E544148E17AC48355514100000000445E5441713D0AE78255514185EB5118425E54415C8FC2558255514152B81E45425E54413D0AD7D380555141EC51B8EE3E5E5441CDCCCCEC80555141333333733D5E5441CDCCCC2C83555141713D0A373C5E5441295C8F8286555141EC51B8CE3A5E5441CDCCCC7C88555141F6285C7F3B5E544148E17A14895551418FC2F5A83C5E5441CDCCCC8C89555141D7A3703D3E5E5441B81E85EB89555141D7A3706D3F5E5441B81E85EB89555141295C8F02415E5441000000A08B5551419A9999D9415E5441CDCCCCBC8C5551410AD7A390425E5441666666968D555141F6285C2F435E54419A9999398C55514114AE47113B5E54413333333388555141A4703DAA305E5441AE47E19A83555141B81E85FB245E54419A9999C982555141295C8FE2225E5441EC51B80E8255514148E17A04215E5441
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E54413923F17B6B5551415C028FA22E5E5441504348116B555141DDBA157E2F5E544182CBCB146B555141EAE93F992F5E544173E85D186B555141C778D6B42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E54418FC2F5386E5551418FC2F5483B5E5441A4703D7A6E55514185EB51D83B5E5441A4703D1A6F555141713D0A173D5E54417B14AE2770555141333333F33D5E54418FC2F57871555141CDCCCC3C3E5E544152B81E8572555141EC51B82E3E5E544114AE47017455514114AE47513E5E544185EB51D874555141713D0A373E5E54415C8FC2C5755551415C8FC2D53D5E5441CDCCCCCC76555141EC51B8AE3D5E54419A9999B97755514152B81E353E5E544167F7DCE4775551416DEF28763E5E5441E9E6490478555141C55D96813E5E5441F01EC7FC7755514108B61C9A3E5E544185EB5178785551413D0AD7533F5E54410AD7A3B078555141D7A3707D405E5441A4703D4A785551418FC2F5A8415E5441CDCCCC8C77555141000000F0425E5441EC51B8EE76555141F6285CBF435E5441AE47E1BA76555141CDCCCC7C445E544152B81EE57655514114AE4751455E544114AE47B179555141C3F5282C495E5441333333837C5551410AD7A3C04C5E544148E17A747E555141B81E851B4F5E54413D0AD7237F5551411F85EB61505E544152B81E957F555141713D0A77515E54416666665680555141D7A3703D525E54417B14AEB7815551417B14AE17535E54410AD7A3A082555141F6285C6F545E544148E17AD482555141E17A145E555E544114AE47318355514185EB5148565E5441000000B08555514152B81E75535E5441666666968B555141333333734D5E5441C89D6DB790555141E2ACC8D1485E54417D64EDCC90555141A1C9F0AA485E5441E17A14DE8D555141CDCCCCDC445E54417E6CB9D48D555141E6E814A5445E5441D5592D758D555141017E1343445E5441D9ACC2D38A55514183910D68425E54410B16BF8689555141FF42AC22425E544108F7D4DE86555141AB3F258B435E544120D1A31687555141F0DDC920455E544157AFE6A086555141EB86D44D455E54415C8FC29586555141B81E857B455E544148E17A048655514148E17A94455E54412BFA03FB85555141E3674A8D455E5441C2ADD4468555514100AA38D2455E544134A0BBBC82555141E7CA9A72445E5441B8FCCF4880555141E58F7511405E54413F93F7E87F555141C91E00C23E5E5441935785DE80555141FCE7504C3E5E5441CDCCCCEC80555141333333733D5E544134F8B71C8355514124ECDD3F3C5E54416CD5AA9B8255514192FCD0043B5E544149411C738555514125DC39DB395E54413466F106865551412526E4023B5E5441295C8F8286555141EC51B8CE3A5E5441CDCCCC7C88555141F6285C7F3B5E54411A41C48388555141AD57078D3B5E54412AD8D0CE885551414A2714893B5E5441011CD41C8955514191F9D5033C5E54413B6DF210895551413752570D3C5E5441ABB8CCBE8A55514183C90759415E54416A2FAA568B5551419F5478B5415E5441000000A08B5551419A9999D9415E5441B3EE409A8C5551417EEA6F7A425E5441D80B45918D555141C176CB10435E5441FF60703E8D555141CF554E23415E54414EFDF3F88C55514187B352853F5E544199CEB78D8C5551412B0810793D5E5441E47D600E8C5551419EA085DC3A5E5441C7C2AB158C555141A75B53D93A5E5441877474EC8B5551413991E6493A5E54413333333388555141A4703DAA305E5441AE47E19A83555141B81E85FB245E5441A8439C618355514150A19468245E5441D15E98C98255514140B28EE2225E54415D85B70E82555141C6977B04215E5441CAEE5BFF7B555141551056A7235E5441E17A144E70555141D7A370BD285E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>627435 - 224097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A0000000AD7A3A0A81151415C8FC2A5E9265541CDCCCCACA91151419A9999E9F0265541E17A143EAA115141A4703DBAF72655410AD7A3F0AD115141A4703DCA092755411F85EBA1B0115141B81E85FB152755415C8FC2D5B1115141666666D61927554166666606B211514152B81E651A275541D7A370EDB8115141666666E6172755415C8FC2D5B51151415C8FC2E50A275541A4703D6AB4115141666666860127554152B81EC5BB115141000000E0FC265541B81E857BCC115141295C8F12FD265541713D0A57D011514185EB5168FB26554148E17A44D211514100000020082755417B14AE47DA1151411F85EB610727554185EB5128DA1151413D0AD7F3052755411F85EB81DD1151410AD7A3A00527554166666676D9115141A4703DAAF0265541A4703DDADA115141F6285C7FEC2655418FC2F5A8DD115141E17A147EE9265541F6285C6FDC115141295C8F32E32655410AD7A390E0115141CDCCCC8CE2265541B81E855BE9115141CDCCCC2CE1265541C3F528FCEB115141C3F5285CDE2655418FC2F5B8E91151419A9999C9D1265541AE47E19AE6115141E17A14FED1265541295C8FB2E61151419A9999D9C7265541333333B3E011514185EB51B8C6265541000000A0DC1151410AD7A3C0C52655417B14AEA7D81151415C8FC295C426554148E17A44D61151415C8FC275C3265541295C8F62D211514100000060C426554148E17A44D01151415C8FC255C5265541000000B0CA1151410AD7A3D0C526554100000040CA1151413D0AD763C52655410AD7A3F0BD11514114AE4791C62655413D0AD713A511514114AE47F1C8265541F6285CFFA4115141D7A370CDC9265541666666D6A411514114AE4781CB2655419A9999D9AB115141666666F6E7265541C3F528ECAB115141295C8F42E82655410AD7A3A0A81151415C8FC2A5E9265541
+</a>
+
+<b>
+010600000001000000010300000001000000100000002230DBBAD2115141EFC4071508275541F59A6B3CD4115141AA0E4DF107275541098B5B7CD51151410B35A7D3072755419BC2C3A3D7115141AF368EA007275541232F9254D81151413CD92B9007275541D37C9BADD91151415714866807275541F22641CAD9115141271CD1BA05275541EEFE1A71DD115141D266804905275541D20C4BC9DB11514113462BB5FC265541597EAA57D9115141F829375BF026554141E28B35D6115141B11574B8F42655418F445E69D3115141DC581AA3F82655412CA2039FD1115141F64DB1FCFA26554181480365D011514169FB82C4FB26554148E17A44D211514100000020082755412230DBBAD2115141EFC4071508275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>627435 - 321461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A0000000AD7A3A0A81151415C8FC2A5E9265541CDCCCCACA91151419A9999E9F0265541E17A143EAA115141A4703DBAF72655410AD7A3F0AD115141A4703DCA092755411F85EBA1B0115141B81E85FB152755415C8FC2D5B1115141666666D61927554166666606B211514152B81E651A275541D7A370EDB8115141666666E6172755415C8FC2D5B51151415C8FC2E50A275541A4703D6AB4115141666666860127554152B81EC5BB115141000000E0FC265541B81E857BCC115141295C8F12FD265541713D0A57D011514185EB5168FB26554148E17A44D211514100000020082755417B14AE47DA1151411F85EB610727554185EB5128DA1151413D0AD7F3052755411F85EB81DD1151410AD7A3A00527554166666676D9115141A4703DAAF0265541A4703DDADA115141F6285C7FEC2655418FC2F5A8DD115141E17A147EE9265541F6285C6FDC115141295C8F32E32655410AD7A390E0115141CDCCCC8CE2265541B81E855BE9115141CDCCCC2CE1265541C3F528FCEB115141C3F5285CDE2655418FC2F5B8E91151419A9999C9D1265541AE47E19AE6115141E17A14FED1265541295C8FB2E61151419A9999D9C7265541333333B3E011514185EB51B8C6265541000000A0DC1151410AD7A3C0C52655417B14AEA7D81151415C8FC295C426554148E17A44D61151415C8FC275C3265541295C8F62D211514100000060C426554148E17A44D01151415C8FC255C5265541000000B0CA1151410AD7A3D0C526554100000040CA1151413D0AD763C52655410AD7A3F0BD11514114AE4791C62655413D0AD713A511514114AE47F1C8265541F6285CFFA4115141D7A370CDC9265541666666D6A411514114AE4781CB2655419A9999D9AB115141666666F6E7265541C3F528ECAB115141295C8F42E82655410AD7A3A0A81151415C8FC2A5E9265541
+</a>
+
+<b>
+010600000001000000010300000001000000100000002230DBBAD2115141EFC4071508275541F59A6B3CD4115141AA0E4DF107275541098B5B7CD51151410B35A7D3072755419BC2C3A3D7115141AF368EA007275541232F9254D81151413CD92B9007275541D37C9BADD91151415714866807275541F22641CAD9115141271CD1BA05275541EEFE1A71DD115141D266804905275541D20C4BC9DB11514113462BB5FC265541597EAA57D9115141F829375BF026554141E28B35D6115141B11574B8F42655418F445E69D3115141DC581AA3F82655412CA2039FD1115141F64DB1FCFA26554181480365D011514169FB82C4FB26554148E17A44D211514100000020082755412230DBBAD2115141EFC4071508275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 1242402
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D544100000080B85D514152B81EE58A6D54410AD7A3B0B85D5141666666C68C6D54418FC2F598BB5D514152B81EF58A6D544100000060BC5D51417B14AE77896D544152B81E15BC5D5141EC51B84E886D544166666656B95D51417B14AEB7866D54410AD7A320B85D514114AE4771856D54413D0AD7E3B65D514114AE4781856D5441333333F3B55D51413D0AD7B3846D54417B14AE97B55D5141E17A14DE846D5441295C8FF2B45D51410AD7A3D0846D5441AE47E11AB45D5141713D0A97846D5441CDCCCC7CB35D514148E17AF4846D5441D7A370DDB25D51413D0AD713856D5441000000C0B15D514148E17AE4846D5441295C8F52B05D5141E17A143E856D5441AE47E15AAF5D5141CDCCCC0C856D54413D0AD793AD5D5141000000B0846D544100000090AB5D51417B14AEB7846D5441E17A143EAB5D5141D7A3703D856D5441B81E85ABAA5D51413D0AD753856D54418FC2F5D8A95D5141EC51B81E846D5441333333F3A85D5141E17A144E846D54411F85EB71A85D514114AE4701856D5441295C8FE2A75D5141AE47E1CA846D54419A999929A75D5141F6285C9F846D544148E17AC4A55D514148E17AD4846D5441E17A145EA55D5141713D0AD7856D5441CDCCCC8CA45D5141713D0A17856D5441D7A370BDA35D5141295C8FE2846D5441B81E855BA25D514152B81E05856D5441A4703D4AA05D5141D7A3709D846D54410AD7A3309E5D51410AD7A3E0846D5441CDCCCCCC995D51413D0AD703856D5441CDCCCC6C955D51415C8FC205856D5441B81E85BB8E5D5141C3F5282C856D54413D0AD7738D5D51417B14AE27866D5441713D0AA78C5D514152B81E05876D54410AD7A3A0875D514148E17AE4876D5441CDCCCCDC7E5D514114AE47F1896D54410AD7A3F07D5D51418FC2F5188E6D54411F85EBA17C5D5141F6285C4F956D5441B81E855B7A5D514152B81E55A06D544185EB51D8785D514148E17AD4A86D54415C8FC2B5785D51415C8FC295A96D5441
+</a>
+
+<b>
+01060000000100000001030000000100000054000000BA04F192825D51412B1E23D28A6D5441F6AE7CF4865D51415147935D896D5441244BFE17875D5141BAE0FC5A896D544155B80E56875D5141ADAB0F4A896D5441E3B1A4018C5D5141815256FF886D5441CC2E7A5E905D514124D0F2AD886D54410B833EF9905D5141A95437B0886D5441F6285C6F985D5141EC51B83E886D5441BBC23029A75D514105D9840F896D5441E8984035A75D514145862210896D544185F93750A75D514180D9840F896D5441641957F0AD5D5141EB501F68896D5441920FB7F7AE5D514164EDE57D896D544123AAB468B05D51416846BE87896D5441452D0723B15D5141EC8F958F896D544183DDEA59B65D51410E97C2C7896D544148E17A84B75D5141713D0AC7896D54411ABE9B90B75D514195B9D5D4896D544148E17A34B85D5141A4703DDA896D54412E7A135EB85D514171E788BE8A6D54418BD8B3CEB85D51417204FBE88C6D544134C22BFDB95D514150BF982F8C6D5441801E7BAABB5D51412A3A9DED8A6D5441F4730C42BC5D51416BB6512C8A6D54413C97D773BC5D5141D0405786896D5441A334569DBC5D5141544510D8886D54413C97D773BC5D51419A55623A886D54414BC3901FBC5D5141CA5852FE876D54412FEC3CB4BB5D514137B43C89876D5441FEABA32BBB5D5141E113F044876D54418FCBBD5EBA5D5141EA9C4F95866D54413CEBD791B95D5141C665486E866D54410AD7A320B85D514114AE4771856D54413D0AD7E3B65D514114AE4781856D5441333333F3B55D51413D0AD7B3846D54417B14AE97B55D5141E17A14DE846D5441295C8FF2B45D51410AD7A3D0846D5441AE47E11AB45D5141713D0A97846D5441CDCCCC7CB35D514148E17AF4846D5441D7A370DDB25D51413D0AD713856D5441000000C0B15D514148E17AE4846D544141F47243B05D5141CBB29536856D5441AE47E15AAF5D5141CDCCCC0C856D54413D0AD793AD5D5141000000B0846D544100000090AB5D51417B14AEB7846D5441F35ED134AB5D51410BA7FC25856D54411AF56F9FAA5D51410BA7FC25856D54418FC2F5D8A95D5141EC51B81E846D5441333333F3A85D5141E17A144E846D544120EB6873A85D5141A4097EFC846D5441295C8FE2A75D5141AE47E1CA846D54419A999929A75D5141F6285C9F846D544148E17AC4A55D514148E17AD4846D5441C3306A4EA55D5141B3674681856D5441CDCCCC8CA45D5141713D0A17856D5441D7A370BDA35D5141295C8FE2846D5441B81E855BA25D514152B81E05856D5441A4703D4AA05D5141D7A3709D846D54410AD7A3309E5D51410AD7A3E0846D5441CDCCCCCC995D51413D0AD703856D54413FFB8A7C955D5141EF7798E3846D5441B81E85BB8E5D5141C3F5282C856D54413D0AD7738D5D51417B14AE27866D544128FBF24F8C5D51419B5ED4DD866D54416BACE7A4875D514199714DAD876D5441EE5AB58C815D514135FAC022896D5441CDCCCCDC7E5D514114AE47F1896D54410AD7A3F07D5D51418FC2F5188E6D54411F85EBA17C5D5141F6285C4F956D5441B81E855B7A5D514152B81E55A06D544185EB51D8785D514148E17AD4A86D54415C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D5441AAE9B7AE7A5D5141E6E60AF1A66D54419F56A5B17A5D5141FBE140DDA66D5441C3F528AC7A5D51410AD7A3E0A66D5441A7A750A37B5D514171E8997BA06D5441295C8FF27B5D5141EC51B86E9E6D5441C5082C437F5D5141F3B54A2B8C6D54415E9315527F5D5141645CD7188C6D544198F413557F5D51415E8891088C6D544192A562887F5D51418EE8A7D58B6D5441BA04F192825D51412B1E23D28A6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 3282464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D544100000080B85D514152B81EE58A6D54410AD7A3B0B85D5141666666C68C6D54418FC2F598BB5D514152B81EF58A6D544100000060BC5D51417B14AE77896D544152B81E15BC5D5141EC51B84E886D544166666656B95D51417B14AEB7866D54410AD7A320B85D514114AE4771856D54413D0AD7E3B65D514114AE4781856D5441333333F3B55D51413D0AD7B3846D54417B14AE97B55D5141E17A14DE846D5441295C8FF2B45D51410AD7A3D0846D5441AE47E11AB45D5141713D0A97846D5441CDCCCC7CB35D514148E17AF4846D5441D7A370DDB25D51413D0AD713856D5441000000C0B15D514148E17AE4846D5441295C8F52B05D5141E17A143E856D5441AE47E15AAF5D5141CDCCCC0C856D54413D0AD793AD5D5141000000B0846D544100000090AB5D51417B14AEB7846D5441E17A143EAB5D5141D7A3703D856D5441B81E85ABAA5D51413D0AD753856D54418FC2F5D8A95D5141EC51B81E846D5441333333F3A85D5141E17A144E846D54411F85EB71A85D514114AE4701856D5441295C8FE2A75D5141AE47E1CA846D54419A999929A75D5141F6285C9F846D544148E17AC4A55D514148E17AD4846D5441E17A145EA55D5141713D0AD7856D5441CDCCCC8CA45D5141713D0A17856D5441D7A370BDA35D5141295C8FE2846D5441B81E855BA25D514152B81E05856D5441A4703D4AA05D5141D7A3709D846D54410AD7A3309E5D51410AD7A3E0846D5441CDCCCCCC995D51413D0AD703856D5441CDCCCC6C955D51415C8FC205856D5441B81E85BB8E5D5141C3F5282C856D54413D0AD7738D5D51417B14AE27866D5441713D0AA78C5D514152B81E05876D54410AD7A3A0875D514148E17AE4876D5441CDCCCCDC7E5D514114AE47F1896D54410AD7A3F07D5D51418FC2F5188E6D54411F85EBA17C5D5141F6285C4F956D5441B81E855B7A5D514152B81E55A06D544185EB51D8785D514148E17AD4A86D54415C8FC2B5785D51415C8FC295A96D5441
+</a>
+
+<b>
+01060000000100000001030000000100000054000000BA04F192825D51412B1E23D28A6D5441F6AE7CF4865D51415147935D896D5441244BFE17875D5141BAE0FC5A896D544155B80E56875D5141ADAB0F4A896D5441E3B1A4018C5D5141815256FF886D5441CC2E7A5E905D514124D0F2AD886D54410B833EF9905D5141A95437B0886D5441F6285C6F985D5141EC51B83E886D5441BBC23029A75D514105D9840F896D5441E8984035A75D514145862210896D544185F93750A75D514180D9840F896D5441641957F0AD5D5141EB501F68896D5441920FB7F7AE5D514164EDE57D896D544123AAB468B05D51416846BE87896D5441452D0723B15D5141EC8F958F896D544183DDEA59B65D51410E97C2C7896D544148E17A84B75D5141713D0AC7896D54411ABE9B90B75D514195B9D5D4896D544148E17A34B85D5141A4703DDA896D54412E7A135EB85D514171E788BE8A6D54418BD8B3CEB85D51417204FBE88C6D544134C22BFDB95D514150BF982F8C6D5441801E7BAABB5D51412A3A9DED8A6D5441F4730C42BC5D51416BB6512C8A6D54413C97D773BC5D5141D0405786896D5441A334569DBC5D5141544510D8886D54413C97D773BC5D51419A55623A886D54414BC3901FBC5D5141CA5852FE876D54412FEC3CB4BB5D514137B43C89876D5441FEABA32BBB5D5141E113F044876D54418FCBBD5EBA5D5141EA9C4F95866D54413CEBD791B95D5141C665486E866D54410AD7A320B85D514114AE4771856D54413D0AD7E3B65D514114AE4781856D5441333333F3B55D51413D0AD7B3846D54417B14AE97B55D5141E17A14DE846D5441295C8FF2B45D51410AD7A3D0846D5441AE47E11AB45D5141713D0A97846D5441CDCCCC7CB35D514148E17AF4846D5441D7A370DDB25D51413D0AD713856D5441000000C0B15D514148E17AE4846D544141F47243B05D5141CBB29536856D5441AE47E15AAF5D5141CDCCCC0C856D54413D0AD793AD5D5141000000B0846D544100000090AB5D51417B14AEB7846D5441F35ED134AB5D51410BA7FC25856D54411AF56F9FAA5D51410BA7FC25856D54418FC2F5D8A95D5141EC51B81E846D5441333333F3A85D5141E17A144E846D544120EB6873A85D5141A4097EFC846D5441295C8FE2A75D5141AE47E1CA846D54419A999929A75D5141F6285C9F846D544148E17AC4A55D514148E17AD4846D5441C3306A4EA55D5141B3674681856D5441CDCCCC8CA45D5141713D0A17856D5441D7A370BDA35D5141295C8FE2846D5441B81E855BA25D514152B81E05856D5441A4703D4AA05D5141D7A3709D846D54410AD7A3309E5D51410AD7A3E0846D5441CDCCCCCC995D51413D0AD703856D54413FFB8A7C955D5141EF7798E3846D5441B81E85BB8E5D5141C3F5282C856D54413D0AD7738D5D51417B14AE27866D544128FBF24F8C5D51419B5ED4DD866D54416BACE7A4875D514199714DAD876D5441EE5AB58C815D514135FAC022896D5441CDCCCCDC7E5D514114AE47F1896D54410AD7A3F07D5D51418FC2F5188E6D54411F85EBA17C5D5141F6285C4F956D5441B81E855B7A5D514152B81E55A06D544185EB51D8785D514148E17AD4A86D54415C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D5441AAE9B7AE7A5D5141E6E60AF1A66D54419F56A5B17A5D5141FBE140DDA66D5441C3F528AC7A5D51410AD7A3E0A66D5441A7A750A37B5D514171E8997BA06D5441295C8FF27B5D5141EC51B86E9E6D5441C5082C437F5D5141F3B54A2B8C6D54415E9315527F5D5141645CD7188C6D544198F413557F5D51415E8891088C6D544192A562887F5D51418EE8A7D58B6D5441BA04F192825D51412B1E23D28A6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>303705 - 193944
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000003000000085EB515841B050413D0AD7D3584F54418FC2F53840B0504148E17A24574F54418FC2F5183FB050418FC2F5B8564F5441CDCCCC3C3DB050417B14AE67564F5441713D0A773CB05041A4703D5A554F5441E17A14FE3CB050418FC2F528544F544114AE47D13EB050411F85EBA1534F54419A99998940B0504114AE47C1524F5441B81E852B41B05041713D0AF7504F5441B81E852B41B05041F6285C1F4E4F544152B81E8541B05041F6285CFF4C4F5441713D0A4747B050419A9999A9494F5441B81E856B49B050411F85EBA1494F5441666666E64CB050418FC2F5F84A4F544185EB51084EB0504185EB51984A4F544185EB514850B05041666666A64A4F54411F85EB1156B05041295C8FA24B4F5441F6285CCF57B05041C3F5280C424F54418FC2F5385AB0504114AE4791394F5441CDCCCCCC5BB05041D7A370CD354F5441666666465AB0504152B81EB5344F54416666661658B05041C3F528EC324F544114AE47F153B050419A999919304F5441666666764DB050417B14AED72B4F544114AE477147B05041F6285C9F274F54410000003044B0504185EB5198254F5441EC51B83E39B05041AE47E18A344F54410000000033B05041333333733C4F54415C8FC2D51EB0504152B81EB5404F54417B14AE8717B0504114AE47F1434F5441666666A608B0504114AE4701434F5441EC51B81E00B050411F85EB71404F544114AE4731DEAF504166666666394F5441C3F5284CDEAF5041333333833B4F544166666636F3AF5041295C8F423F4F54413D0AD793FCAF5041CDCCCC3C414F54411F85EBA117B0504100000000484F54411F85EB712CB050413D0AD7834D4F54410AD7A31032B0504133333303504F5441A4703D3A36B050417B14AE57534F544114AE47613BB05041713D0AC7574F5441C3F528FC41B05041A4703D7A5E4F54410AD7A3F045B0504133333333644F54415C8FC29547B05041000000D0634F5441713D0A0747B050415C8FC2E5614F544148E17A5446B05041EC51B89E604F5441666666B642B05041713D0A375B4F544185EB515841B050413D0AD7D3584F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000F1C993E09B050417DF65667444F544111FD3D9E17B050418614CBD4474F544195C6FE3E17B050414458B3EC434F5441666666A608B0504114AE4701434F5441CE33832900B050411B896FEE3F4F54419C90D3DEF5AF5041CAEC35F13D4F544114AE4731DEAF504166666666394F5441C3F5284CDEAF5041333333833B4F5441FB3DBE07EDAF5041C7B9FB263E4F544166666636F3AF5041295C8F423F4F54413D0AD793FCAF5041CDCCCC3C414F54410F1C993E09B050417DF65667444F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>303705 - 345997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000003000000085EB515841B050413D0AD7D3584F54418FC2F53840B0504148E17A24574F54418FC2F5183FB050418FC2F5B8564F5441CDCCCC3C3DB050417B14AE67564F5441713D0A773CB05041A4703D5A554F5441E17A14FE3CB050418FC2F528544F544114AE47D13EB050411F85EBA1534F54419A99998940B0504114AE47C1524F5441B81E852B41B05041713D0AF7504F5441B81E852B41B05041F6285C1F4E4F544152B81E8541B05041F6285CFF4C4F5441713D0A4747B050419A9999A9494F5441B81E856B49B050411F85EBA1494F5441666666E64CB050418FC2F5F84A4F544185EB51084EB0504185EB51984A4F544185EB514850B05041666666A64A4F54411F85EB1156B05041295C8FA24B4F5441F6285CCF57B05041C3F5280C424F54418FC2F5385AB0504114AE4791394F5441CDCCCCCC5BB05041D7A370CD354F5441666666465AB0504152B81EB5344F54416666661658B05041C3F528EC324F544114AE47F153B050419A999919304F5441666666764DB050417B14AED72B4F544114AE477147B05041F6285C9F274F54410000003044B0504185EB5198254F5441EC51B83E39B05041AE47E18A344F54410000000033B05041333333733C4F54415C8FC2D51EB0504152B81EB5404F54417B14AE8717B0504114AE47F1434F5441666666A608B0504114AE4701434F5441EC51B81E00B050411F85EB71404F544114AE4731DEAF504166666666394F5441C3F5284CDEAF5041333333833B4F544166666636F3AF5041295C8F423F4F54413D0AD793FCAF5041CDCCCC3C414F54411F85EBA117B0504100000000484F54411F85EB712CB050413D0AD7834D4F54410AD7A31032B0504133333303504F5441A4703D3A36B050417B14AE57534F544114AE47613BB05041713D0AC7574F5441C3F528FC41B05041A4703D7A5E4F54410AD7A3F045B0504133333333644F54415C8FC29547B05041000000D0634F5441713D0A0747B050415C8FC2E5614F544148E17A5446B05041EC51B89E604F5441666666B642B05041713D0A375B4F544185EB515841B050413D0AD7D3584F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000F1C993E09B050417DF65667444F544111FD3D9E17B050418614CBD4474F544195C6FE3E17B050414458B3EC434F5441666666A608B0504114AE4701434F5441CE33832900B050411B896FEE3F4F54419C90D3DEF5AF5041CAEC35F13D4F544114AE4731DEAF504166666666394F5441C3F5284CDEAF5041333333833B4F5441FB3DBE07EDAF5041C7B9FB263E4F544166666636F3AF5041295C8F423F4F54413D0AD793FCAF5041CDCCCC3C414F54410F1C993E09B050417DF65667444F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538248 - 962306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000025000000CDCCCC9CE85C5141666666F6CB6554415C8FC245E95C5141E17A140ECD65544148E17A24EB5C51410AD7A3F0CE6554413D0AD7E3EB5C5141D7A3702DD06554410AD7A300EC5C5141000000A0D16554410AD7A3D0EB5C5141F6285C4FD26554413D0AD773EB5C51415C8FC2F5D2655441AE47E15AEA5C514185EB51E8D36554419A999969EF5C5141B81E85DBD6655441F6285C1FF35C51418FC2F5C8D66554410AD7A3900F5D5141B81E853BD66554410AD7A310125D5141F6285C2FD6655441333333031F5D5141F6285CEFD5655441333333A3205D51417B14AEE7D5655441B81E85BB2A5D51415C8FC2B5D565544152B81EA5415D51413D0AD743D5655441295C8FB2535D51411F85EBE1D4655441000000005A5D5141000000C0D4655441D7A3709D5A5D5141D7A370BDD465544148E17A34765D5141713D0A27D46554413D0AD7B3775D5141EC51B81ED46554419A999939785D5141666666F6D1655441000000C0735D514152B81EE5CC655441A4703DEA6E5D51417B14AEB7C76554415C8FC285685D514133333373C16554418FC2F508675D51415C8FC2E5C0655441F6285C4F5F5D51413D0AD7C3C06554415C8FC2955A5D5141D7A370DDC0655441C3F528EC555D514185EB51F8C0655441D7A370AD3F5D51411F85EB61C16554418FC2F5D8245D5141B81E85CBC165544185EB5158115D514100000010C2655441713D0AD70E5D5141EC51B8FEC165544148E17AA4E95C5141A4703DCAC26554413D0AD743E95C51415C8FC2C5C56554413D0AD783E85C5141000000B0CA655441CDCCCC9CE85C5141666666F6CB655441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000D905A666655D5141CC99A482D465544117F0ED065B5D51413D6C1ACFD4655441031056FC595D5141AD1869E1DF6554416F182EB6595D5141718620A6E4655441D7200670595D51416F379839E76554413F29DE29595D51415BB9EF55EB6554413643290D825D5141287B175DED655441C7CF67A3775D5141F9A0131FD465544148E17A34765D5141713D0A27D4655441D905A666655D5141CC99A482D4655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 1079811
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD7136229544185EB51D8CB285141C3F5289C56295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441EC51B82E91285141333333F3F8285441333333838F28514152B81ED5F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A29544101030000000100000029000000AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB15029544101030000000100000009000000333333C30D295141A4703D3A7529544114AE47B10E295141666666B66B2954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C562954418FC2F508E0285141CDCCCC9C63295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B295441333333C30D295141A4703D3A75295441
+</a>
+
+<b>
+010600000001000000010300000002000000AB000000C18E326D0D2951412C2003AA672954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C5629544183FFBE10E328514138AC614C61295441E59DFE19E2285141BE7F88D7612954411940FD53E02851416B23052C612954411312158FCB285141FB5E0E0157295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441EC51B82E91285141333333F3F8285441333333838F28514152B81ED5F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD713622954411824A35CCB285141EF3AF26557295441B5E8F7ADE12851419D3B54426229544167DF405EE12851418F0A2D98622954410794D231E02851411D83B7DB63295441FFDCFB29E12851414FB5D05965295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B29544118875C970C2951418DB8E3107529544114AE47B10E295141666666B66B295441A5A247BA0D295141632873E66829544177A9666B0D295141D2052EBE672954416687B837302951416ADF15FD6C2954410E6748693D29514110C199EF6E2954410BC8D1104A295141E0A2E0D1702954411FF07A9B4E29514156541F86712954417D7B07D64E2951410B42D00C722954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954415EA8F7924E295141F2053C7471295441C18E326D0D2951412C2003AA67295441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 3191345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD7136229544185EB51D8CB285141C3F5289C56295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441EC51B82E91285141333333F3F8285441333333838F28514152B81ED5F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A29544101030000000100000029000000AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB15029544101030000000100000009000000333333C30D295141A4703D3A7529544114AE47B10E295141666666B66B2954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C562954418FC2F508E0285141CDCCCC9C63295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B295441333333C30D295141A4703D3A75295441
+</a>
+
+<b>
+010600000001000000010300000002000000AB000000C18E326D0D2951412C2003AA672954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C5629544183FFBE10E328514138AC614C61295441E59DFE19E2285141BE7F88D7612954411940FD53E02851416B23052C612954411312158FCB285141FB5E0E0157295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441EC51B82E91285141333333F3F8285441333333838F28514152B81ED5F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD713622954411824A35CCB285141EF3AF26557295441B5E8F7ADE12851419D3B54426229544167DF405EE12851418F0A2D98622954410794D231E02851411D83B7DB63295441FFDCFB29E12851414FB5D05965295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B29544118875C970C2951418DB8E3107529544114AE47B10E295141666666B66B295441A5A247BA0D295141632873E66829544177A9666B0D295141D2052EBE672954416687B837302951416ADF15FD6C2954410E6748693D29514110C199EF6E2954410BC8D1104A295141E0A2E0D1702954411FF07A9B4E29514156541F86712954417D7B07D64E2951410B42D00C722954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954415EA8F7924E295141F2053C7471295441C18E326D0D2951412C2003AA67295441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 252579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD7136229544185EB51D8CB285141C3F5289C56295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441EC51B82E91285141333333F3F8285441333333838F28514152B81ED5F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A29544101030000000100000029000000AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB15029544101030000000100000009000000333333C30D295141A4703D3A7529544114AE47B10E295141666666B66B2954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C562954418FC2F508E0285141CDCCCC9C63295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B295441333333C30D295141A4703D3A75295441
+</a>
+
+<b>
+010600000001000000010300000002000000AB00000052B81E758A28514148E17AB40629544143F0D3CF9028514100B349B5F9285441F0DC7F758F2851416C0EA0C9F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD713622954411824A35CCB285141EF3AF26557295441B5E8F7ADE12851419D3B54426229544167DF405EE12851418F0A2D98622954410794D231E02851411D83B7DB63295441FFDCFB29E12851414FB5D05965295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B29544118875C970C2951418DB8E3107529544114AE47B10E295141666666B66B295441A5A247BA0D295141632873E66829544177A9666B0D295141D2052EBE672954416687B837302951416ADF15FD6C2954410E6748693D29514110C199EF6E2954410BC8D1104A295141E0A2E0D1702954411FF07A9B4E29514156541F86712954417D7B07D64E2951410B42D00C722954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954415EA8F7924E295141F2053C7471295441C18E326D0D2951412C2003AA672954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C5629544183FFBE10E328514138AC614C61295441E59DFE19E2285141BE7F88D7612954411940FD53E02851416B23052C612954411312158FCB285141FB5E0E0157295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 361953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD7136229544185EB51D8CB285141C3F5289C56295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441EC51B82E91285141333333F3F8285441333333838F28514152B81ED5F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A29544101030000000100000029000000AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB15029544101030000000100000009000000333333C30D295141A4703D3A7529544114AE47B10E295141666666B66B2954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C562954418FC2F508E0285141CDCCCC9C63295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B295441333333C30D295141A4703D3A75295441
+</a>
+
+<b>
+010600000001000000010300000002000000AB00000052B81E758A28514148E17AB40629544143F0D3CF9028514100B349B5F9285441F0DC7F758F2851416C0EA0C9F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B2954410AD7A3805D28514148E17AB43E295441B81E850B5D2851413D0AD75342295441EC51B89E5E285141E17A14CE4D2954410AD7A3805F285141333333C34E295441AE47E12A60285141A4703D5A4F295441C3F528AC632851413D0AD783512954411F85EB91652851418FC2F5585129544148E17A4465285141A4703DFA522954413D0AD743652851418FC2F5C85429544185EB512865285141CDCCCC9C562954418FC2F5886428514133333353582954415C8FC26563285141000000705A295441F6285C2F672851418FC2F5485A295441A4703DAA6B2851417B14AE075C295441713D0A276F2851410AD7A3905D295441EC51B86E72285141666666765E295441333333237528514185EB515860295441CDCCCCFC7728514114AE4751632954418FC2F5E87B285141AE47E10A67295441AE47E13A7F28514148E17AF46829544148E17AE48128514114AE47016C2954415C8FC25586285141B81E857B6E295441B81E85DB8928514152B81EA570295441D7A370DD8A2851418FC2F5F871295441C3F528FC9028514148E17A54752954410AD7A37096285141B81E852B772954415C8FC20598285141E17A149E752954419A9999E998285141B81E85AB742954410AD7A3F09928514152B81EC5732954418FC2F5089B285141333333F372295441CDCCCC2C9C28514148E17AE471295441333333A39E28514148E17A0471295441F6285CEFA128514100000070702954411F85EB21A328514148E17A2470295441EC51B8AEA6285141E17A143E6F29544152B81EA5A9285141AE47E13A6E29544148E17A34AC285141666666166D295441C3F528BCAC285141AE47E16A6D295441D7A370DDA9285141CDCCCC9C6E295441F6285CDFA6285141AE47E1AA6F29544100000050A328514152B81E95702954419A999929A2285141EC51B8DE70295441AE47E10A9F285141AE47E16A7129544152B81E459C285141F6285C0F73295441713D0A479B285141D7A3708D732954417B14AE279A2851411F85EB31742954410AD7A370992851418FC2F5D874295441EC51B86E98285141F6285CCF75295441CDCCCCFC96285141CDCCCC8C7729544114AE47419D285141EC51B80E7B295441C3F528EC9F2851413D0AD7637B295441D7A3701DA32851417B14AE677C295441B81E855BA5285141D7A3709D7C295441333333D3A7285141713D0A777E295441D7A370EDA9285141713D0A777F295441666666F6AA285141D7A3706D7E29544152B81EF5B5285141D7A3704D722954411F85EB41BA2851417B14AEB76D29544152B81EE5C42851413D0AD713622954411824A35CCB285141EF3AF26557295441B5E8F7ADE12851419D3B54426229544167DF405EE12851418F0A2D98622954410794D231E02851411D83B7DB63295441FFDCFB29E12851414FB5D05965295441713D0A47EC28514166666676762954417B14AEB7F228514152B81E057C295441CDCCCC3CFB285141000000A07B29544118875C970C2951418DB8E3107529544114AE47B10E295141666666B66B295441A5A247BA0D295141632873E66829544177A9666B0D295141D2052EBE672954416687B837302951416ADF15FD6C2954410E6748693D29514110C199EF6E2954410BC8D1104A295141E0A2E0D1702954411FF07A9B4E29514156541F86712954417D7B07D64E2951410B42D00C722954418FC2F54854295141295C8F727E2954415C8FC2D55F295141EC51B8CE92295441E17A14FE862951410AD7A3D07B2954415C8FC26592295141AE47E15A6C2954410AD7A3D09129514152B81EC56B295441C3F528DC902951410AD7A3106B2954418FC2F5088F295141EC51B8FE692954417B14AE778D29514152B81E256829544152B81EA58C2951418FC2F5B867295441D7A370AD8B295141AE47E1EA66295441F6285C1F8A2951413D0AD733652954418FC2F5D888295141E17A147E63295441C3F528AC872951410AD7A3406229544185EB5198862951416666667661295441295C8FF284295141B81E85BB60295441C3F528CC82295141D7A3709D5F2954415C8FC26581295141666666F65E295441295C8F728029514185EB51485E295441713D0AF77F2951418FC2F5C85D295441295C8FE27E2951419A9999595C295441C3F5285C7E2951413D0AD7035B2954418FC2F5B87D295141D7A3708D5A2954419A9999897B29514152B81E95572954419A9999597A2951411F85EBE156295441713D0A077829514185EB51B855295441EC51B8AE75295141713D0AC754295441EC51B80E7429514114AE474154295441E17A146E73295141F6285C2F54295441EC51B8CE722951418FC2F57854295441E17A144E722951410000005054295441EC51B8FE702951413D0AD7535329544148E17AC46F2951417B14AE17532954415C8FC2C56E2951419A9999D9522954417B14AE676D295141295C8F4252295441AE47E1BA6A2951411F85EBB1502954417B14AEA768295141AE47E16A4F295441AE47E14A672951417B14AEC74E2954411F85EB516629514114AE47C14E295441333333B35329514148E17A445C2954418FC2F5784C295141C3F528AC6C2954415EA8F7924E295141F2053C7471295441C18E326D0D2951412C2003AA672954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C5629544183FFBE10E328514138AC614C61295441E59DFE19E2285141BE7F88D7612954411940FD53E02851416B23052C612954411312158FCB285141FB5E0E0157295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441D7A3703DD3285141666666D63E295441B81E85FBCE2851419A9999A93A2954411F85EBD1CA285141F6285CBF3729544133333313C62851413D0AD77335295441333333D3C42851415C8FC23534295441A4703D9AC2285141000000003229544166666616C0285141666666262F2954417B14AE47BE285141000000602D295441713D0AD7BC285141295C8FB22C2954419A9999E9B8285141EC51B84E29295441EC51B82EB72851410AD7A3002729544152B81E55B4285141B81E853B25295441295C8FB2B2285141D7A3705D2329544114AE47B1AD285141B81E857B1F295441713D0AD7A828514114AE47811C2954417B14AED7A7285141F6285C5F1B29544152B81ED5A428514185EB51E8192954413333331398285141295C8F521429544152B81EF58D2851410AD7A3600D29544152B81E758A28514148E17AB406295441050000008FC2F5689C285141CDCCCCFC3A2954416666663698285141D7A3706D3D2954418FC2F53896285141CDCCCC3C3A2954418FC2F5E89A28514148E17A84372954418FC2F5689C285141CDCCCCFC3A295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539525 - 159941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000E17A14FE12115141713D0A87703F5441A4703DFA1B115141F6285CAF673F5441000000F021115141C3F5284C613F54413D0AD7F32611514114AE47615B3F54413D0AD7F327115141666666465C3F54413D0AD77329115141713D0AA7583F5441000000002D11514148E17A644B3F54410AD7A3202F115141E17A14BE443F544148E17AC42F11514100000080433F54419A999949271151415C8FC2653E3F544114AE47D1211151415C8FC2D5383F544114AE478120115141F6285C3F383F54417B14AE871F1151410AD7A3D0373F5441A4703DAA0F11514152B81EF5453F5441C3F528FCFF105141EC51B8EE533F5441AE47E1CAF7105141C3F5283C5B3F5441A4703D9AEC1051415C8FC235653F544100000060F1105141A4703D8A6A3F5441713D0AC7F7105141666666966E3F54411F85EB61FA1051418FC2F5786F3F544133333393FE105141F6285CCF713F54410AD7A350FF1051418FC2F568723F54415C8FC2D5FC105141AE47E19A743F544185EB51F8FD1051410AD7A3F0753F5441D7A3706DFE1051419A999979763F544152B81E150111514185EB5198793F544114AE4781041151415C8FC2F57C3F54419A9999790511514152B81E557C3F54413333335309115141E17A140E793F5441E17A14FE12115141713D0A87703F5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000006E39742B06115141038FB6BD7B3F544148339A79051151410E571E557C3F5441FFBA7C6B0511514151E93F5E7C3F54411202816405115141E266C4627C3F54416B7A4881041151412B0BC2F57C3F544194A4A93406115141C7B2FE4C7E3F54413D0AD743061151418FC2F5587E3F54413CBBE74E061151417176AC617E3F5441592CEC610811514186A0D503803F544111533D9108115141A268DF28803F5441C7A785AB081151412C33713D803F54412685C94D0B1151417BB1BAEF7D3F544146E158900D1151411374B0987B3F5441FB9E7B7B0E1151412E335B8C7A3F54412585C98D12115141C969D954763F5441A576D04D171151414D317E54713F5441A114727D1C115141C6A090D26B3F5441D7A3707D1C115141295C8FD26B3F54410DFBEB3D1E115141F30414126A3F5441B9DA50581E11514178FCAEF7693F54414C103DFA1B115141C4275DAF673F544159F113FE12115141158F0B87703F54413A2FD3780D115141468EA465753F54413333335309115141E17A140E793F54416E39742B06115141038FB6BD7B3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539572 - 1126422
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003F000000E17A140EF42851415C8FC2A53C305441333333B3F0285141666666D63F305441B81E857BED2851411F85EB0143305441CDCCCC7CEC285141666666A644305441000000D0EA2851411F85EB914630544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC4930544185EB51C8E5285141CDCCCC9C4C305441D7A370DDE82851416666663650305441A4703D0AE028514114AE4731583054410AD7A3E0DD285141B81E858B5A305441CDCCCC2CDC285141D7A3704D5D3054415C8FC2F5E4285141E17A14FE69305441D7A3709DE42851418FC2F5286F305441F6285C9FF42851411F85EB118D30544133333393F7285141E17A142E8C30544152B81EB5FD285141AE47E1DA8E305441AE47E14A0029514185EB5128983054411F85EBA111295141666666C6A7305441333333030B29514152B81EE5AB305441E17A149E142951410AD7A3E0B0305441F6285C7F1829514185EB51F8B2305441713D0A171F2951410AD7A300B6305441B81E855B2329514185EB51B8B4305441F6285CAF2229514100000010A830544152B81E951F29514185EB51489D3054418FC2F5481B2951415C8FC2159230544166666686262951415C8FC2E599305441000000D0332951417B14AE779F305441D7A3701D382951413D0AD74399305441A4703D0A322951415C8FC2B594305441C3F5286C28295141295C8FB293305441C3F5283C2329514148E17A448F305441CDCCCC6C1E295141000000F092305441D7A370AD1A29514185EB51389030544114AE476116295141AE47E18A853054415C8FC2550F295141C3F5289C7930544148E17A641B29514148E17AC470305441F6285CAF22295141713D0AA76430544114AE475117295141295C8F12513054411F85EBB11A295141CDCCCCCC4E305441B81E853B18295141A4703D9A4B305441B81E855B142951413D0AD73348305441713D0A17112951418FC2F568443054415C8FC2C50D295141F6285C2F4030544152B81E650A295141CDCCCCAC3C305441B81E852B09295141713D0A473A3054415C8FC295072951418FC2F5A83B305441000000B00429514114AE47513D305441713D0A9703295141713D0AE73B3054410AD7A3B0FE285141E17A14AE33305441EC51B8AEFA285141F6285CEF363054419A999929F7285141C3F5280C3A30544114AE47F1FF285141C3F528DC45305441A4703DAAFA285141CDCCCCDC4830544148E17A54FC285141AE47E12A4D305441B81E854BFB285141713D0A574D3054411F85EB31F828514185EB5138463054419A999929F7285141CDCCCC9C44305441295C8FC2F6285141AE47E14A433054417B14AE87F62851419A999939413054410AD7A350F52851410AD7A3903B305441E17A140EF42851415C8FC2A53C305441
+</a>
+
+<b>
+010600000001000000010300000002000000630000000AD7A3C8F42851412DB29D473D30544137894148F2285141CFF753AB3E30544178BA4A8AF02851410A59C22E4030544102CA3945EF285141C17A816941305441516D33E1ED28514173D787CD42305441DE59017AED285141A4B90B3F433054417215EE8BEC285141BC8242D14430544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC49305441ACF9B745E52851412D6A036B4D3054417593185CE6285141986E12535230544133333313E6285141E17A14AE523054415B61FC4FE1285141C195BC07573054410F586CC7DF285141C9A6F779583054410AD7A3E0DD285141B81E858B5A305441A6E55601DB28514188322FAA5C305441C4A181B7DA285141D32591C15C3054414260E5C0DE2851411058398461305441666666EEE0285141EE7C3FED6630544146B6F30DE4285141A69BC4206C3054411D5A6403E42851417593181470305441F2D24D82E62851419EEFA796743054416ABC741BE8285141DBF97E4278305441F6285C1FF3285141F853E3058B30544154E3A553F728514160E5D05A8B305441E17A140EFA285141643BDF6F93305441E3A59B4CFE2851418941608595305441AE47E1FA00295141E7FBA99197305441560E2D2A02295141986E124B993054413108AC6C042951413BDF4F459A305441DEC753AC0B29514192E672F7A0305441B6F3FD8C0E29514185EB5120A43054419EEFA7D610295141FA7E6AA4A43054415839B48013295141DBF97E8AA73054413F355EEA13295141DD240679AA305441AFAC38BF11295141EC097FDDAA305441D34D6228102951411B2FDDC4AA3054418606012B0E2951411AC56E2DA93054418267CCC30C295141798FB7AFA83054419CC420080C2951412FDD2496A8305441437D64280B295141803E17C9A83054413F355E4A0A29514154E3A5FBA83054418D976E42092951418716D996A8305441560E2D82072951413F355EDAA63054412B87162105295141E17A1436A5305441AE47E11A032951413D0AD713A63054416AE293DB03295141FDAFA6D2A630544187290BC804295141EA4FCDBCA73054417E9743D60529514150D6BCC9A8305441632250550629514177004248A9305441C6B8A2D0062951419A2E11C3A9305441B81E854B07295141D7A3703DAA3054412938E44B092951418C238B21AB30544122F6BCF70A295141E56B04E0AB30544157FB0A930C29514193DB88B4AC3054415B77EA5E0E29514158D716A3AD30544163F4C37410295141B8BA04B8AE305441DACF4A85142951412D16C8D3B0305441EE14EC2F18295141D2967ACDB23054416DD80DF51A2951410179F919B43054413F355E4A1E2951412DB29D57B530544117D9CE3F23295141759318C4B23054410AD7A340242951413F355EDAAF305441CBA145EE222951411B2FDDD4A93054417F6ABC4C1E295141F6285C5FA430544154E3A5AB1D295141CFF7537B9F305441E5D022331E295141819543BB983054418FC2F5481B2951415C8FC21592305441D7A370AD1A29514185EB5138903054413B8F46F3182951418C6945368B3054413789415817295141F4FDD4C08A305441448B6C5715295141295C8F7286305441FED478011429514179E926E984305441E5D022F3112951415C8FC23D803054418B6CE7A30D295141250681BD7B305441A98C58891229514161BBC50578305441622CD58C17295141E75A0D46743054416ABC74331B295141F6285C27713054410AD7A3481A295141FED478116F3054412B8716311A295141B81E85B36C3054411B2FDDE41B295141986E127B6B305441FCA9F1FA1E295141508D971E68305441FA7E6AEC202951419CC420F864305441F3748F951E2951414A65A7725F3054419CC420881C295141B81E85F35B3054411D5A643316295141A8C64B2750305441B81E856314295141C3F528F44D3054410C022B3F1329514146B6F3254C305441C976BEA7132951414A0C020B4B305441BE9F1A370F295141508D975643305441F6285CFF0829514191ED7C3F3B305441BA490C1A052951414C3789913D305441B601ED6F032951413303CF4B3B3054413789414801295141C520B05A38305441951D9EECFD2851416B6F4B4D3430544114E05BD2FA285141EAC269D236305441FC1C7736F728514122BAC8003A3054414A3D7210F6285141A751B0F63A3054410AD7A3C8F42851412DB29D473D3054411300000085EB5168F62851417B14AE873D305441D187D72BF828514184A39E523C30544127310824F82851418B6CE7433C3054412DB29D5FFA2851413333335B3F305441C1CAA145FB2851411283C0323F305441F2D24DFAFC285141BA490CB2403054413108AC34FC28514179E9269941305441643BDFCFFD2851419CC4205844305441AE47E1B2FF2851411B2FDDDC473054416ABC748BFB2851413108ACC44930544154E3A533FB285141C3F528144B3054416891ED9CF92851412DB29DC74B3054418B6CE73BF7285141508D976E4930544146B6F325F9285141986E129B4730544191ED7C97F7285141A69BC4B84430544183C0CA39FA2851417D3F357E42305441EC51B85EFA285141C1CAA19D41305441736891DDF828514183C0CA814030544185EB5168F62851417B14AE873D305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539572 - 3570737
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003F000000E17A140EF42851415C8FC2A53C305441333333B3F0285141666666D63F305441B81E857BED2851411F85EB0143305441CDCCCC7CEC285141666666A644305441000000D0EA2851411F85EB914630544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC4930544185EB51C8E5285141CDCCCC9C4C305441D7A370DDE82851416666663650305441A4703D0AE028514114AE4731583054410AD7A3E0DD285141B81E858B5A305441CDCCCC2CDC285141D7A3704D5D3054415C8FC2F5E4285141E17A14FE69305441D7A3709DE42851418FC2F5286F305441F6285C9FF42851411F85EB118D30544133333393F7285141E17A142E8C30544152B81EB5FD285141AE47E1DA8E305441AE47E14A0029514185EB5128983054411F85EBA111295141666666C6A7305441333333030B29514152B81EE5AB305441E17A149E142951410AD7A3E0B0305441F6285C7F1829514185EB51F8B2305441713D0A171F2951410AD7A300B6305441B81E855B2329514185EB51B8B4305441F6285CAF2229514100000010A830544152B81E951F29514185EB51489D3054418FC2F5481B2951415C8FC2159230544166666686262951415C8FC2E599305441000000D0332951417B14AE779F305441D7A3701D382951413D0AD74399305441A4703D0A322951415C8FC2B594305441C3F5286C28295141295C8FB293305441C3F5283C2329514148E17A448F305441CDCCCC6C1E295141000000F092305441D7A370AD1A29514185EB51389030544114AE476116295141AE47E18A853054415C8FC2550F295141C3F5289C7930544148E17A641B29514148E17AC470305441F6285CAF22295141713D0AA76430544114AE475117295141295C8F12513054411F85EBB11A295141CDCCCCCC4E305441B81E853B18295141A4703D9A4B305441B81E855B142951413D0AD73348305441713D0A17112951418FC2F568443054415C8FC2C50D295141F6285C2F4030544152B81E650A295141CDCCCCAC3C305441B81E852B09295141713D0A473A3054415C8FC295072951418FC2F5A83B305441000000B00429514114AE47513D305441713D0A9703295141713D0AE73B3054410AD7A3B0FE285141E17A14AE33305441EC51B8AEFA285141F6285CEF363054419A999929F7285141C3F5280C3A30544114AE47F1FF285141C3F528DC45305441A4703DAAFA285141CDCCCCDC4830544148E17A54FC285141AE47E12A4D305441B81E854BFB285141713D0A574D3054411F85EB31F828514185EB5138463054419A999929F7285141CDCCCC9C44305441295C8FC2F6285141AE47E14A433054417B14AE87F62851419A999939413054410AD7A350F52851410AD7A3903B305441E17A140EF42851415C8FC2A53C305441
+</a>
+
+<b>
+010600000001000000010300000002000000630000000AD7A3C8F42851412DB29D473D30544137894148F2285141CFF753AB3E30544178BA4A8AF02851410A59C22E4030544102CA3945EF285141C17A816941305441516D33E1ED28514173D787CD42305441DE59017AED285141A4B90B3F433054417215EE8BEC285141BC8242D14430544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC49305441ACF9B745E52851412D6A036B4D3054417593185CE6285141986E12535230544133333313E6285141E17A14AE523054415B61FC4FE1285141C195BC07573054410F586CC7DF285141C9A6F779583054410AD7A3E0DD285141B81E858B5A305441A6E55601DB28514188322FAA5C305441C4A181B7DA285141D32591C15C3054414260E5C0DE2851411058398461305441666666EEE0285141EE7C3FED6630544146B6F30DE4285141A69BC4206C3054411D5A6403E42851417593181470305441F2D24D82E62851419EEFA796743054416ABC741BE8285141DBF97E4278305441F6285C1FF3285141F853E3058B30544154E3A553F728514160E5D05A8B305441E17A140EFA285141643BDF6F93305441E3A59B4CFE2851418941608595305441AE47E1FA00295141E7FBA99197305441560E2D2A02295141986E124B993054413108AC6C042951413BDF4F459A305441DEC753AC0B29514192E672F7A0305441B6F3FD8C0E29514185EB5120A43054419EEFA7D610295141FA7E6AA4A43054415839B48013295141DBF97E8AA73054413F355EEA13295141DD240679AA305441AFAC38BF11295141EC097FDDAA305441D34D6228102951411B2FDDC4AA3054418606012B0E2951411AC56E2DA93054418267CCC30C295141798FB7AFA83054419CC420080C2951412FDD2496A8305441437D64280B295141803E17C9A83054413F355E4A0A29514154E3A5FBA83054418D976E42092951418716D996A8305441560E2D82072951413F355EDAA63054412B87162105295141E17A1436A5305441AE47E11A032951413D0AD713A63054416AE293DB03295141FDAFA6D2A630544187290BC804295141EA4FCDBCA73054417E9743D60529514150D6BCC9A8305441632250550629514177004248A9305441C6B8A2D0062951419A2E11C3A9305441B81E854B07295141D7A3703DAA3054412938E44B092951418C238B21AB30544122F6BCF70A295141E56B04E0AB30544157FB0A930C29514193DB88B4AC3054415B77EA5E0E29514158D716A3AD30544163F4C37410295141B8BA04B8AE305441DACF4A85142951412D16C8D3B0305441EE14EC2F18295141D2967ACDB23054416DD80DF51A2951410179F919B43054413F355E4A1E2951412DB29D57B530544117D9CE3F23295141759318C4B23054410AD7A340242951413F355EDAAF305441CBA145EE222951411B2FDDD4A93054417F6ABC4C1E295141F6285C5FA430544154E3A5AB1D295141CFF7537B9F305441E5D022331E295141819543BB983054418FC2F5481B2951415C8FC21592305441D7A370AD1A29514185EB5138903054413B8F46F3182951418C6945368B3054413789415817295141F4FDD4C08A305441448B6C5715295141295C8F7286305441FED478011429514179E926E984305441E5D022F3112951415C8FC23D803054418B6CE7A30D295141250681BD7B305441A98C58891229514161BBC50578305441622CD58C17295141E75A0D46743054416ABC74331B295141F6285C27713054410AD7A3481A295141FED478116F3054412B8716311A295141B81E85B36C3054411B2FDDE41B295141986E127B6B305441FCA9F1FA1E295141508D971E68305441FA7E6AEC202951419CC420F864305441F3748F951E2951414A65A7725F3054419CC420881C295141B81E85F35B3054411D5A643316295141A8C64B2750305441B81E856314295141C3F528F44D3054410C022B3F1329514146B6F3254C305441C976BEA7132951414A0C020B4B305441BE9F1A370F295141508D975643305441F6285CFF0829514191ED7C3F3B305441BA490C1A052951414C3789913D305441B601ED6F032951413303CF4B3B3054413789414801295141C520B05A38305441951D9EECFD2851416B6F4B4D3430544114E05BD2FA285141EAC269D236305441FC1C7736F728514122BAC8003A3054414A3D7210F6285141A751B0F63A3054410AD7A3C8F42851412DB29D473D3054411300000085EB5168F62851417B14AE873D305441D187D72BF828514184A39E523C30544127310824F82851418B6CE7433C3054412DB29D5FFA2851413333335B3F305441C1CAA145FB2851411283C0323F305441F2D24DFAFC285141BA490CB2403054413108AC34FC28514179E9269941305441643BDFCFFD2851419CC4205844305441AE47E1B2FF2851411B2FDDDC473054416ABC748BFB2851413108ACC44930544154E3A533FB285141C3F528144B3054416891ED9CF92851412DB29DC74B3054418B6CE73BF7285141508D976E4930544146B6F325F9285141986E129B4730544191ED7C97F7285141A69BC4B84430544183C0CA39FA2851417D3F357E42305441EC51B85EFA285141C1CAA19D41305441736891DDF828514183C0CA814030544185EB5168F62851417B14AE873D305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540041 - 2544750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E1CA8C635141EC51B8CE9F4D54411F85EB118D635141C3F5284CA94D544152B81E058D63514152B81E75AD4D5441A4703D3A8D63514152B81E85B94D5441B81E854B8D635141AE47E19ABC4D5441D7A370AD8D635141C3F528FCBF4D54419A9999298E63514185EB5138C24D54415C8FC2A58E635141295C8F92C34D54410AD7A3E08F635141CDCCCC0CC64D54411F85EBD1916351418FC2F538C94D5441AE47E1FA9263514114AE4781CA4D5441C3F5285C9663514152B81E85CD4D54418FC2F5F89763514114AE47A1CE4D5441C3F5285C99635141B81E855BCF4D5441CDCCCCFC9A635141EC51B81ED04D5441000000B09C635141AE47E13AD14D5441EC51B87E9F635141AE47E14AD34D54415C8FC2E5A063514114AE47D1D44D544185EB5168A26351415C8FC295D64D5441E17A14CEA263514152B81E05D74D544185EB5138A36351413D0AD723D74D544114AE47D1A3635141A4703D0AD74D5441713D0A07AB6351417B14AE37C94D54419A999919AF6351417B14AE67BD4D544133333383B463514148E17A44B14D5441EC51B8DEB763514152B81EB5A84D5441713D0A07B9635141C3F5281CA14D5441295C8FE2B8635141295C8FF28C4D54418FC2F548B963514114AE4711884D544114AE47F1B9635141C3F528EC824D544166666636BE635141E17A14DE774D54419A999909B8635141AE47E1AA744D544100000000B063514152B81ED56F4D5441D7A370AD9E63514148E17AB4874D54413D0AD7739363514114AE47D1964D5441000000108D635141AE47E1EA9E4D5441AE47E1CA8C635141EC51B8CE9F4D5441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000000000108D635141AE47E1EA9E4D5441400A280B93635141FDEEDFE4944D5441E17A14BE9C6351413D0AD7A3844D54419A5FE1F89F6351414A10B7EB854D5441333333B3A26351410AD7A300874D5441A6E12A95AC63514108B7BE8A744D54411F85EB01AF63514133333303704D54417B14AEF7B36351411F85EB01694D5441A8211347BC635141DC52A4DB6C4D5441666666B6C1635141A4703D5A6F4D5441A4703D0AC863514114AE4711604D5441A4703D5ACE6351413D0AD7D3504D544100000030BB635141A4703D6A474D5441B81E85DBAB63514185EB5118404D544148E17A049B635141000000E0374D5441A4703D0A88635141C3F5288C2E4D5441713D0AA787635141B81E855B2E4D5441000000808163514148E17A54444D5441CDCCCC8C7C635141295C8FD2524D5441333333337C6351415C8FC2C5544D544100000000916351418FC2F5B85E4D54413D0AD713976351417B14AEB7614D5441000000109C6351419A999969644D5441713D0A5798635141CDCCCC2C6B4D544185EB51989463514152B81E25714D5441F6285CAF9163514100000010754D5441E17A148E8D63514148E17A847A4D544185EB51C888635141713D0A67804D54419A9999F984635141EC51B8EE834D5441713D0A7781635141333333E3864D54411F85EB418663514148E17A24924D5441AE47E14A8C635141333333939E4D5441000000108D635141AE47E1EA9E4D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540041 - 3764925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E1CA8C635141EC51B8CE9F4D54411F85EB118D635141C3F5284CA94D544152B81E058D63514152B81E75AD4D5441A4703D3A8D63514152B81E85B94D5441B81E854B8D635141AE47E19ABC4D5441D7A370AD8D635141C3F528FCBF4D54419A9999298E63514185EB5138C24D54415C8FC2A58E635141295C8F92C34D54410AD7A3E08F635141CDCCCC0CC64D54411F85EBD1916351418FC2F538C94D5441AE47E1FA9263514114AE4781CA4D5441C3F5285C9663514152B81E85CD4D54418FC2F5F89763514114AE47A1CE4D5441C3F5285C99635141B81E855BCF4D5441CDCCCCFC9A635141EC51B81ED04D5441000000B09C635141AE47E13AD14D5441EC51B87E9F635141AE47E14AD34D54415C8FC2E5A063514114AE47D1D44D544185EB5168A26351415C8FC295D64D5441E17A14CEA263514152B81E05D74D544185EB5138A36351413D0AD723D74D544114AE47D1A3635141A4703D0AD74D5441713D0A07AB6351417B14AE37C94D54419A999919AF6351417B14AE67BD4D544133333383B463514148E17A44B14D5441EC51B8DEB763514152B81EB5A84D5441713D0A07B9635141C3F5281CA14D5441295C8FE2B8635141295C8FF28C4D54418FC2F548B963514114AE4711884D544114AE47F1B9635141C3F528EC824D544166666636BE635141E17A14DE774D54419A999909B8635141AE47E1AA744D544100000000B063514152B81ED56F4D5441D7A370AD9E63514148E17AB4874D54413D0AD7739363514114AE47D1964D5441000000108D635141AE47E1EA9E4D5441AE47E1CA8C635141EC51B8CE9F4D5441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000000000108D635141AE47E1EA9E4D5441400A280B93635141FDEEDFE4944D5441E17A14BE9C6351413D0AD7A3844D54419A5FE1F89F6351414A10B7EB854D5441333333B3A26351410AD7A300874D5441A6E12A95AC63514108B7BE8A744D54411F85EB01AF63514133333303704D54417B14AEF7B36351411F85EB01694D5441A8211347BC635141DC52A4DB6C4D5441666666B6C1635141A4703D5A6F4D5441A4703D0AC863514114AE4711604D5441A4703D5ACE6351413D0AD7D3504D544100000030BB635141A4703D6A474D5441B81E85DBAB63514185EB5118404D544148E17A049B635141000000E0374D5441A4703D0A88635141C3F5288C2E4D5441713D0AA787635141B81E855B2E4D5441000000808163514148E17A54444D5441CDCCCC8C7C635141295C8FD2524D5441333333337C6351415C8FC2C5544D544100000000916351418FC2F5B85E4D54413D0AD713976351417B14AEB7614D5441000000109C6351419A999969644D5441713D0A5798635141CDCCCC2C6B4D544185EB51989463514152B81E25714D5441F6285CAF9163514100000010754D5441E17A148E8D63514148E17A847A4D544185EB51C888635141713D0A67804D54419A9999F984635141EC51B8EE834D5441713D0A7781635141333333E3864D54411F85EB418663514148E17A24924D5441AE47E14A8C635141333333939E4D5441000000108D635141AE47E1EA9E4D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978239 - 57712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003B0000004AD148DD6E76504134ECA6C3B20F5541D8572CE66F7650414DD62243B10F5541E452170B6C7650418CA39CFDAD0F554187499AC26476504188F862AEA70F55414F9CACBC5C7650414E7B9AC9A00F5541F455B0575B765041C4ED5E0EA30F554103910AC350765041FD2CE1259B0F55417E7FAD4B517650417C7A8F479A0F5541CB06C71945765041771FAF25910F5541B4B3FBE342765041EBBC55E9910F554157665C294776504150CE0562980F55410C7E710447765041F20C6EC59A0F55417066853E46765041A13B8BA39C0F554183668855447650418F6C075F9F0F5541010BB7294B765041B3F9D06EA40F5541561C59014F7650410204BCA5A60F5541EB38BD77547650412B00ED87AA0F5541F2DDD8195B765041129AFA72A30F55419724A6205A765041660C6408A50F5541722861205D7650410C3E9072A70F55410234921F6676504169470DBBAE0F55413226007C6D76504188C37BC4B40F55414C2406826D7650413163BDBBB40F554198FF928C6D7650410AF2D9C4B40F5541F40A4BF46B76504131EC34E0B60F5541EEE826A775765041458B613FBF0F5541953E6CD376765041A4D30B34BE0F55418A00065D87765041E3CDD2EBCF0F554102CEA4CC897650412BFE0723CF0F55416F176B1190765041C6976F25CB0F5541CBD09E7A8F7650411873CAE8C90F554132C8E3AE9A76504145002191C20F5541DB2E01A58776504134A95986B10F5541A74C21168A765041B9CF9727AF0F55414BD5507091765041C9FF045BA80F554136D8E95D88765041412C44C29F0F5541C6F3B1B87B7650419D197AD7930F5541AABC5B66767650411097484B8E0F5541119AB6D37D765041C68B757B880F5541A062D74C7B7650419AF23078820F5541A7A69AC77676504138B8B44D850F55410CA704AD777650411CAAC5C1870F554118E2BCF372765041B9790D668B0F55417AB26D846E7650419938A8C88D0F55415E3FBB576976504101C19A2A890F5541620A6CFC657650412DE7C4458A0F5541A40F7AF66176504109B8A5FB860F5541C28C0E6B5D765041F1EEDA2F8A0F5541D5AD14AD54765041FFFBC22F8D0F5541F24C9B9353765041B00977888E0F5541C908E8A36076504138D884B29B0F55415037987B647650417D810361980F554147B99BB66876504124A617D39D0F55417A9A8AD16B765041D6CAD14A9B0F5541332B556C77765041ADD66660A60F5541A6DBDDC484765041275047C9B20F5541DE0787B87D7650415EA8D7DFB80F554194DB6E15797650413CF73639BC0F55414AD148DD6E76504134ECA6C3B20F5541
+</a>
+
+<b>
+01060000000100000001030000000100000026000000AC4C21168A765041B5CF9727AF0F554120A2EAA98D765041B369B5D8AB0F5541140ACF669176504169B00252A80F554136D8E95D887650413F2C44C29F0F5541C3F3B1B87B765041A2197AD7930F5541AABC5B66767650411397484B8E0F554103E9079B7C7650418AAD2270890F5541109AB6D37D765041C88B757B880F55419D62D74C7B7650419CF23078820F5541AAA69AC77676504139B8B44D850F55410EA704AD7776504119AAC5C1870F554113E2BCF372765041BB790D668B0F5541ADADF8A372765041E417F4908B0F55412EA0918070765041590F5DB78C0F554176B26D846E7650419938A8C88D0F55415C3FBB576976504101C19A2A890F55415F0A6CFC6576504130E7C4458A0F5541A60F7AF6617650410BB8A5FB860F5541C08C0E6B5D765041EFEEDA2F8A0F554147A756A75676504170C484C98C0F5541BB0D6AD15B76504107CF8467950F5541F6D863575C765041690F875D970F5541C808E8A36076504137D884B29B0F55414F37987B647650417F810361980F554144B99BB66876504124A617D39D0F5541789A8AD16B765041D9CAD14A9B0F5541A8DBDDC4847650412B5047C9B20F5541E35E91F87F765041BA3844EEB60F55419FCB4D377F765041708E3495B70F5541DC0787B87D7650415EA8D7DFB80F5541D9EDABBE827650410A6B69A9BD0F5541EF5C6A00877650415BB2C0C3C10F5541B1009C598B7650418FA6CF01C60F55416114E7B78D7650412E4C4B6AC80F5541C6D09E7A8F7650411673CAE8C90F554131C8E3AE9A76504140002191C20F5541DF2E01A58776504134A95986B10F5541AC4C21168A765041B5CF9727AF0F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541052 - 2953110
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000003E000000B81E85BBDE565141F6285C4F9A4A5441E17A14FEDD5651410AD7A3609D4A5441A4703D0ADD56514185EB51A8A04A544166666616DC56514152B81E75A34A54418FC2F558DB565141B81E856BA64A544148E17AC4DA5651417B14AEE7A84A5441666666B6DA565141A4703D9AAB4A5441A4703DFADA565141EC51B83EAE4A5441E17A14EEDB5651413D0AD7E3B04A54413D0AD783DD565141EC51B8BEB34A5441295C8FF2DF5651415C8FC205B74A54413D0AD713E5565141E17A145EBD4A54415C8FC275E8565141E17A14CEC04A54415C8FC295EC565141A4703DFAC34A544148E17A64F05651413D0AD783C64A5441B81E85ABF356514166666686C84A5441F6285CAFF656514166666696CA4A5441F6285C6FF956514148E17A04CD4A5441D7A370FDFA5651419A999969CE4A544114AE4771FB56514114AE47D1CE4A5441A4703D8AF9565141F6285C9FD24A54418FC2F588F85651410AD7A300D54A5441CDCCCC1CF85651410AD7A310D74A5441E17A14BEF7565141A4703D9AD94A544148E17AC4F75651411F85EB41DC4A5441B81E855BFD5651415C8FC2B5DD4A54415C8FC2F50057514152B81E05E04A54413D0AD713045751411F85EB41E14A5441713D0AD7075751417B14AEA7E24A5441295C8FF2075751419A999939E74A54411F85EBD107575141000000E0EA4A5441B81E85EB09575141A4703D1AEA4A54418FC2F5C80C57514114AE4731E84A5441D7A370FD0E5751418FC2F5D8E64A54415C8FC2151157514114AE47E1E54A54417B14AEF71257514133333313E54A54411F85EB6115575141F6285C5FE44A5441713D0A5715575141295C8FB2E34A544148E17A24165751418FC2F568C94A54411F85EB5116575141A4703D3AC14A5441E17A140E175751418FC2F568B64A54417B14AEF718575141A4703D4A9E4A54418FC2F5C81A575141B81E854B844A54418FC2F5C81B57514100000030764A54410AD7A3101C5751413D0AD7D36F4A5441CDCCCCCCFF5651417B14AEA7714A54411F85EB01F7565141EC51B84E724A544152B81EE5F65651419A9999B9764A5441F6285CAFF6565141D7A370BD794A5441666666D6F556514185EB51487D4A5441B81E850BF5565141D7A370ED7F4A5441E17A149EF3565141E17A144E824A544148E17AC4F15651410AD7A300854A5441AE47E1EAEF565141A4703D8A874A5441C3F5282CEE565141F6285C7F894A54410AD7A300EC565141B81E854B8B4A5441000000F0E856514114AE47918D4A5441C3F5283CE5565141EC51B85E904A5441D7A3701DE2565141295C8F62934A5441CDCCCC6CE0565141295C8F72954A544114AE47A1DF565141D7A370ED964A5441B81E85BBDE565141F6285C4F9A4A5441
+</a>
+
+<b>
+01060000000100000001030000000200000057000000E2495325F55651418753D988C94A54414E02436CF1565141F72B9C25C74A544148E17A64F05651413D0AD783C64A54415C8FC295EC565141A4703DFAC34A544102224DF5E95651416DE10EF5C14A54415C8FC275E8565141E17A14CEC04A54410B42C373E6565141B39CB9C3BE4A54413D0AD713E5565141E17A145EBD4A5441295C8FF2DF5651415C8FC205B74A54413D0AD783DD565141EC51B8BEB34A5441E17A14EEDB5651413D0AD7E3B04A5441A4703DFADA565141EC51B83EAE4A544111DCB8BFDA565141BF7E32F7AB4A5441666666B6DA565141A4703D9AAB4A544148E17AC4DA5651417B14AEE7A84A54418FC2F558DB565141B81E856BA64A544166666616DC56514152B81E75A34A5441D86D484DDC56514117CCC8D3A24A54417851EB76DE5651412193BA6B9B4A5441B81E85BBDE565141F6285C4F9A4A544114AE47A1DF565141D7A370ED964A5441CDCCCC6CE0565141295C8F72954A5441D7A3701DE2565141295C8F62934A5441C3F5283CE5565141EC51B85E904A5441212E1B29E7565141C64399E98E4A5441000000F0E856514114AE47918D4A54415DC51525EA565141FC041DAC8C4A54415ACBD3D4EA565141E5FC30288C4A5441A873669EEC565141A93BD7C88A4A5441C3F5282CEE565141F6285C7F894A5441758082EDEE5651410AFB76A6884A544121B4B846F0565141BAA9440C874A5441D064D86DF356514119536994824A5441D07C47C1F3565141A2A77413824A54411C1597B7F4565141E09D3979804A54419272D165F55651413CFC10C07E4A544100415CB9F65651419101DD2D794A54412CDDF4EBF6565141E24727AD754A54412EDEFFEDF6565141E0A8EE5C754A5441C76348F5F6565141DA19F13E744A54410BDB5CF8F6565141E452C842724A5441713D0A47F6565141CDCCCC5C724A54413D0AD7E3EA5651419A999929724A54411F85EB31EA565141A4703D0A7A4A5441EB01F108EA565141937905077A4A5441DFF969A0E956514116ADBB357C4A5441EF04B127E95651411D84EFEF7D4A544104F7A488E8565141319EA3197F4A5441AB64533EE6565141B6F91D89824A5441C04A7FC7E356514162A7D964854A5441ECDFA8A8DF5651412A4C7ED5884A54410EF2DCEED9565141BD0700468E4A54411FFBF611D7565141D8C70E48924A54415DCD395AD5565141315A6092944A54419536182CD456514105AD60F7964A5441A779543FD3565141EA51E51A994A54412570F57ED2565141C6CB6CF49A4A5441D52ACAAFD15651417AACBD269D4A54412D883448D1565141EC859E54A04A5441F6DAE00ED156514109F60608A44A544191DE76F7D056514178B52C1BA64A54419C063BEDD0565141DDFB39D3A74A54418C6E49FED05651416F0A1C58A94A54412DDE9F64D1565141D1965F35AD4A5441C8DDC8D1D156514116AB5631B14A5441810DD51CD25651418950A5ECB34A544141AD0E61D2565141332EF66DB64A5441119BEF10D5565141FB51BC7FB74A5441B55F8BA4D756514109B2C380B94A5441EF88BBCADA565141D93F8839BD4A5441D1548158DE5651412B53F1AEC14A544164DB1B17E1565141A6243AD0C54A5441713B2318E3565141B48441D1C74A54415BAAD81BE556514158339F10CA4A5441AE02C26BE7565141D41682CFC74A54415D89F6D2EA5651418412068ACB4A54413758192FEE5651412A8229A0CB4A54414EC1D143F05651417AC7546FCC4A54412A6EA869F35651417309EC66CE4A544143B7CFB2F5565141A899C598D04A5441A752F515F7565141524F1981D24A5441295C54D6F7565141C2153C2ED44A544184CC7CEFF85651411860E845D24A544198227783F95651418C2B8C3BD14A5441D7A370FDFA5651419A999969CE4A544155ECA583F7565141E44AFC51CB4A5441E2495325F55651418753D988C94A54410F00000035C16ECAD556514181D23928A04A5441216B7436D556514177A73CDE9F4A5441AA8C12C0D45651412762110F9F4A544183F3DB18D55651412F7A50D89D4A54410E283823D65651415E2BC6489C4A5441F8B9FEC5D65651417399FFA59B4A5441963197E3D65651410FFED9429A4A54415E6D63F2D6565141621D8910984A5441CB20C81ED756514167220A59954A5441A69A4FF8D8565141344B18E7934A5441E2898033D956514101A8DFAE994A544175D61B07D956514137928FA19C4A5441B8DD8B0BD8565141CF04A7769F4A5441FCE4FB0FD756514181D23928A04A544135C16ECAD556514181D23928A04A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542768 - 3407520
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000800000000000000C63E5141D7A3701D37FE54418FC2F548833E51411F85EB4139FE5441A4703D9A843E51415C8FC2153DFE5441333333A3853E51418FC2F5A83EFE54419A9999B9A93E5141666666363DFE54418FC2F598C43E51415C8FC2053DFE5441D7A3705DC53E5141A4703DCA39FE544100000000C63E5141D7A3701D37FE5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000BE301BDE9D3E51416EFD27B03DFE54415CE61A70A93E5141A78AC0803CFE5441A245B6F3AC3E514196438B243CFE5441212E3C60B63E5141E6E5B17B3BFE54415C8DA035C53E5141A6B9EB713AFE5441D7A3705DC53E5141A4703DCA39FE544100000000C63E5141D7A3701D37FE5441CDCCCC0CCA3E51413333331326FE544148E17AA4BB3E5141A4703D7A22FE544185EB51F8B53E5141F6285C0F21FE544114AE4761B43E514152B81E8525FE544152B81E85AA3E51417B14AEC724FE5441AE47E15AA43E51416666667623FE5441EC51B8CE973E51419A9999491FFE54417B14AEF7823E5141D7A370BD31FE54415C8FC2B5823E5141F6285C4F35FE544126E5A373833E5141886D664A39FE54415D2A4DE4843E51414349E3873CFE5441C3EF50E4853E51418CA56F733EFE5441B2247DC4863E5141153DABF43FFE5441BE301BDE9D3E51416EFD27B03DFE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542768 - 4069232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000800000000000000C63E5141D7A3701D37FE54418FC2F548833E51411F85EB4139FE5441A4703D9A843E51415C8FC2153DFE5441333333A3853E51418FC2F5A83EFE54419A9999B9A93E5141666666363DFE54418FC2F598C43E51415C8FC2053DFE5441D7A3705DC53E5141A4703DCA39FE544100000000C63E5141D7A3701D37FE5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000BE301BDE9D3E51416EFD27B03DFE5441B2247DC4863E5141153DABF43FFE544114AE47D1893E51416666660645FE54418F912AAD8E3E51411CD4997645FE54413108ACCC8E3E514179E926F943FE54411F85EB91953E5141355EBA4140FE544101497AE99D3E5141904A88583FFE544154E3A51BA43E5141CFF753AB3EFE544144096A5CA73E5141C12904CF3EFE5441A9DCE40FAB3E5141460EC8F73EFE54413F355EAAB23E514196438B743FFE54416ABC74C3BC3E51416891ED6C3EFE54418D976E1AC03E5141AE47E18A3FFE544139B4C8D6C13E5141A69BC49846FE5441CDAC2740C23E51411EEDBE9C46FE5441295C8F02C33E5141333333B343FE54415C8DA035C53E5141A6B9EB713AFE5441A245B6F3AC3E514196438B243CFE54415CE61A70A93E5141A78AC0803CFE5441BE301BDE9D3E51416EFD27B03DFE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542832 - 2929647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703DBA983F5141295C8FA2020055415C8FC2F58D3F51415C8FC2050A005541F6285C3F7C3F5141000000501A005541EC51B85E643F514148E17A4430005541295C8FF2613F51413D0AD7633400554152B81E25603F5141E17A14EE3B005541C3F5283C6E3F5141F6285CCF37005541E17A144E813F5141C3F5283C32005541713D0A57983F5141000000802B0055418FC2F5189A3F5141EC51B88E3C00554100000070AC3F51418FC2F5D83600554152B81EB5B13F5141333333233400554133333383BB3F51417B14AEB72C005541EC51B87EBD3F5141E17A141E2B005541B81E85EBBE3F5141C3F5281C2900554152B81E85CB3F5141A4703DAA15005541295C8F72D73F514114AE474103005541713D0A47D53F51413333333301005541295C8F62D23F5141713D0AA7FEFF544166666646CF3F51419A999999FDFF54413D0AD7F3CB3F514152B81EA5FCFF5441C3F5284CC53F51415C8FC2A5FBFF54418FC2F5B8BE3F51418FC2F5A8FAFF5441C3F5289CA43F5141295C8FE2FEFF5441A4703DBA983F5141295C8FA202005541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009C0C15456D3F51419E4DAF262800554149ECE4186C3F514101640B4229005541601C6F176C3F5141493F6C43290055413C62F4BD783F5141232BB4C725005541557627BD8C3F5141A046B546210055410DC413FC933F5141219C90CB1F0055416FA17930953F5141DB2ED0871F0055415FB3731A973F51418DDE60281F0055414F4B5420B53F51416D435E4F19005541D6C2936EB93F5141D39B9B1E1100554158C10BC3C43F5141BFB42A91FBFF54411AB51BE5BF3F5141FD28FF09FBFF5441C8FCFCDFBD3F5141648F65D0FAFF54413D27B408B43F5141ED9DAF63FCFF54417ABC8A1CAA3F51418216AFFEFDFF544107182504A53F51419339BCD1FEFF544170E985AF993F514196AC2655020055411DB0C443993F5141994C287702005541E074618C913F51417656808F070055415032F02C8B3F5141BDAB55950C00554154FAC9EE843F51418DC022531200554198A596607D3F514147E7FF45190055417B506B87763F5141984812921F005541D0E39E5E723F51413F372365230055419C0C15456D3F51419E4DAF2628005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542832 - 3559840
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703DBA983F5141295C8FA2020055415C8FC2F58D3F51415C8FC2050A005541F6285C3F7C3F5141000000501A005541EC51B85E643F514148E17A4430005541295C8FF2613F51413D0AD7633400554152B81E25603F5141E17A14EE3B005541C3F5283C6E3F5141F6285CCF37005541E17A144E813F5141C3F5283C32005541713D0A57983F5141000000802B0055418FC2F5189A3F5141EC51B88E3C00554100000070AC3F51418FC2F5D83600554152B81EB5B13F5141333333233400554133333383BB3F51417B14AEB72C005541EC51B87EBD3F5141E17A141E2B005541B81E85EBBE3F5141C3F5281C2900554152B81E85CB3F5141A4703DAA15005541295C8F72D73F514114AE474103005541713D0A47D53F51413333333301005541295C8F62D23F5141713D0AA7FEFF544166666646CF3F51419A999999FDFF54413D0AD7F3CB3F514152B81EA5FCFF5441C3F5284CC53F51415C8FC2A5FBFF54418FC2F5B8BE3F51418FC2F5A8FAFF5441C3F5289CA43F5141295C8FE2FEFF5441A4703DBA983F5141295C8FA202005541
+</a>
+
+<b>
+010600000001000000010300000001000000190000009C0C15456D3F51419E4DAF262800554149ECE4186C3F514101640B4229005541601C6F176C3F5141493F6C43290055413C62F4BD783F5141232BB4C725005541557627BD8C3F5141A046B546210055410DC413FC933F5141219C90CB1F0055416FA17930953F5141DB2ED0871F0055415FB3731A973F51418DDE60281F0055414F4B5420B53F51416D435E4F19005541D6C2936EB93F5141D39B9B1E1100554158C10BC3C43F5141BFB42A91FBFF54411AB51BE5BF3F5141FD28FF09FBFF5441C8FCFCDFBD3F5141648F65D0FAFF54413D27B408B43F5141ED9DAF63FCFF54417ABC8A1CAA3F51418216AFFEFDFF544107182504A53F51419339BCD1FEFF544170E985AF993F514196AC2655020055411DB0C443993F5141994C287702005541E074618C913F51417656808F070055415032F02C8B3F5141BDAB55950C00554154FAC9EE843F51418DC022531200554198A596607D3F514147E7FF45190055417B506B87763F5141984812921F005541D0E39E5E723F51413F372365230055419C0C15456D3F51419E4DAF2628005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543053 - 1407068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3708D2BCB50410AD7A3D09A085541AE47E11A2CCB5041AE47E15AA60855415C8FC2752ECB504133333313A60855413333334339CB50418FC2F5F8A00855410AD7A3E032CB5041666666C662085541D7A3709D26CB5041295C8FC2630855413D0AD7D329CB504148E17A8486085541D7A3708D2BCB50410AD7A3D09A085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543053 - 3569419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3708D2BCB50410AD7A3D09A085541AE47E11A2CCB5041AE47E15AA60855415C8FC2752ECB504133333313A60855413333334339CB50418FC2F5F8A00855410AD7A3E032CB5041666666C662085541D7A3709D26CB5041295C8FC2630855413D0AD7D329CB504148E17A8486085541D7A3708D2BCB50410AD7A3D09A085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543053 - 302462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3708D2BCB50410AD7A3D09A085541AE47E11A2CCB5041AE47E15AA60855415C8FC2752ECB504133333313A60855413333334339CB50418FC2F5F8A00855410AD7A3E032CB5041666666C662085541D7A3709D26CB5041295C8FC2630855413D0AD7D329CB504148E17A8486085541D7A3708D2BCB50410AD7A3D09A085541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000390C76FE2BCB50418A644C09A4085541E65836EB2ACB5041507CBB2594085541A5EFBB2729CB50419860633E7F085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543849 - 1407068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000080000003333334339CB50418FC2F5F8A00855419A9999F943CB50419A9999E99B08554152B81E6545CB5041CDCCCC2C9A0855411F85EB3146CB5041D7A3701D98085541333333F341CB5041333333D362085541A4703D9A40CB5041C3F528AC610855410AD7A3E032CB5041666666C6620855413333334339CB50418FC2F5F8A008554101030000000100000009000000D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541D7A3708D2BCB50410AD7A3D09A0855413D0AD7D329CB504148E17A8486085541D7A3709D26CB5041295C8FC263085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543849 - 3569419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000080000003333334339CB50418FC2F5F8A00855419A9999F943CB50419A9999E99B08554152B81E6545CB5041CDCCCC2C9A0855411F85EB3146CB5041D7A3701D98085541333333F341CB5041333333D362085541A4703D9A40CB5041C3F528AC610855410AD7A3E032CB5041666666C6620855413333334339CB50418FC2F5F8A008554101030000000100000009000000D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541D7A3708D2BCB50410AD7A3D09A0855413D0AD7D329CB504148E17A8486085541D7A3709D26CB5041295C8FC263085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543849 - 302462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000002000000010300000001000000080000003333334339CB50418FC2F5F8A00855419A9999F943CB50419A9999E99B08554152B81E6545CB5041CDCCCC2C9A0855411F85EB3146CB5041D7A3701D98085541333333F341CB5041333333D362085541A4703D9A40CB5041C3F528AC610855410AD7A3E032CB5041666666C6620855413333334339CB50418FC2F5F8A008554101030000000100000009000000D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541D7A3708D2BCB50410AD7A3D09A0855413D0AD7D329CB504148E17A8486085541D7A3709D26CB5041295C8FC263085541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000390C76FE2BCB50418A644C09A4085541E65836EB2ACB5041507CBB2594085541A5EFBB2729CB50419860633E7F085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35776 - 1739060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002E000000562B9383428C504123AC6A40ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB065541DBC0B2C8438C50418E10BE57EB065541401D067F458C5041EB2180DCE8065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E6065541DDFE36A1438C5041381F002EE6065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541EC51B86E328C50415C8FC235DF06554185EB5138318C5041EC51B8BEE1065541FA383EE5308C504122BC850CE5065541478BA3B4308C50415F0D5CFBE6065541A5D7747A308C5041054DB64BE906554122C58835308C5041C9C26709EC06554103F9CB472D8C504180DF876FFE065541FCF0E3992D8C50416758D52C03075541093A13F82D8C50410551E59D05075541D7A3703D2E8C5041A4703D6A07075541D4FCD5722F8C5041888627A108075541713D0A47308C5041666666760907554175A9E5CD318C5041023D78B009075541D6D5AFE5328C5041FDBE09DA09075541C3008FFC338C5041C75678030A07554147552948358C5041FA80BC340A0755417DF765CE368C50413EC0B66E0A07554167A050CE378C50413F45BC940A0755415CCF1813398C50419902FDC40A075541072C4CD9398C5041BB5C6FE20A07554114341E353A8C5041DAA713F00A075541DBC759703B8C504147C6DE8B0A075541EC51B8AE3A8C504185EB5128050755418FC2F5583A8C504185EB51D8FE065541C3F5283C3A8C5041C3F5289CFA0655411F85EB913A8C5041B81E850BF6065541713D0A173B8C5041F6285CFFF1065541C3F5289C3B8C5041D7A370FDEE0655417B14AE173C8C504148E17A04EC0655413C347E973D8C50414F2EF0A5EC065541820E4C2A3F8C5041FAA8624FED0655419536A05E3F8C5041D9016665ED065541C3F528EC418C504185EB5178EE065541562B9383428C504123AC6A40ED06554111000000713D0AB7398C50413D0AD7C3EE0655418FC2F5F8388C50413D0AD7C3EE06554152B81E15388C504148E17A94EE06554114AE4731378C50413D0AD793ED06554100000030368C5041D7A3709DED065541A4703DDA348C50417B14AE77ED065541000000D0338C5041F6285C0FEE0655417B14AE37338C5041295C8F52EF06554166666696328C5041AE47E11AF106554185EB51A8318C5041E17A142EF1065541B81E85BB318C5041E17A149EEE065541713D0A67328C50419A9999C9E8065541F6285CCF328C50411F85EBA1E506554114AE4701378C50417B14AE57E8065541C3F5286C3A8C504114AE47F1EA065541C3F5283C3A8C5041C3F5282CEE065541713D0AB7398C50413D0AD7C3EE065541
+</a>
+
+<b>
+010600000001000000010300000001000000210000004A2500433F8C50410802C759ED065541C3F528EC418C504185EB5178EE06554102D7D33D428C50413E5017D0ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB0655417241ECD1448C5041CC5E950CEA065541B3A11374458C5041A0B48311E9065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E6065541E802F012428C5041A0EB104EE5065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541EC51B86E328C50415C8FC235DF0655414340F04E318C5041D8EDC114E5065541B81E852B308C5041F6285C6FEC065541000000E02C8C5041000000C0FE0655413D0AD7132D8C5041333333B3FF065541D7A3703D2E8C5041A4703D6A07075541713D0A47308C5041666666760907554113341E353A8C5041DDA713F00A075541DDC759703B8C504149C6DE8B0A075541EC51B8AE3A8C504185EB5128050755418FC2F5583A8C504185EB51D8FE065541C3F5283C3A8C5041C3F5289CFA0655411F85EB913A8C5041B81E850BF6065541713D0A173B8C5041F6285CFFF1065541C3F5289C3B8C5041D7A370FDEE0655417B14AE173C8C504148E17A04EC065541E69E857D3E8C5041F449B406ED065541810E4C2A3F8C5041F7A8624FED0655414A2500433F8C50410802C759ED065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35776 - 135914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002E000000562B9383428C504123AC6A40ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB065541DBC0B2C8438C50418E10BE57EB065541401D067F458C5041EB2180DCE8065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E6065541DDFE36A1438C5041381F002EE6065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541EC51B86E328C50415C8FC235DF06554185EB5138318C5041EC51B8BEE1065541FA383EE5308C504122BC850CE5065541478BA3B4308C50415F0D5CFBE6065541A5D7747A308C5041054DB64BE906554122C58835308C5041C9C26709EC06554103F9CB472D8C504180DF876FFE065541FCF0E3992D8C50416758D52C03075541093A13F82D8C50410551E59D05075541D7A3703D2E8C5041A4703D6A07075541D4FCD5722F8C5041888627A108075541713D0A47308C5041666666760907554175A9E5CD318C5041023D78B009075541D6D5AFE5328C5041FDBE09DA09075541C3008FFC338C5041C75678030A07554147552948358C5041FA80BC340A0755417DF765CE368C50413EC0B66E0A07554167A050CE378C50413F45BC940A0755415CCF1813398C50419902FDC40A075541072C4CD9398C5041BB5C6FE20A07554114341E353A8C5041DAA713F00A075541DBC759703B8C504147C6DE8B0A075541EC51B8AE3A8C504185EB5128050755418FC2F5583A8C504185EB51D8FE065541C3F5283C3A8C5041C3F5289CFA0655411F85EB913A8C5041B81E850BF6065541713D0A173B8C5041F6285CFFF1065541C3F5289C3B8C5041D7A370FDEE0655417B14AE173C8C504148E17A04EC0655413C347E973D8C50414F2EF0A5EC065541820E4C2A3F8C5041FAA8624FED0655419536A05E3F8C5041D9016665ED065541C3F528EC418C504185EB5178EE065541562B9383428C504123AC6A40ED06554111000000713D0AB7398C50413D0AD7C3EE0655418FC2F5F8388C50413D0AD7C3EE06554152B81E15388C504148E17A94EE06554114AE4731378C50413D0AD793ED06554100000030368C5041D7A3709DED065541A4703DDA348C50417B14AE77ED065541000000D0338C5041F6285C0FEE0655417B14AE37338C5041295C8F52EF06554166666696328C5041AE47E11AF106554185EB51A8318C5041E17A142EF1065541B81E85BB318C5041E17A149EEE065541713D0A67328C50419A9999C9E8065541F6285CCF328C50411F85EBA1E506554114AE4701378C50417B14AE57E8065541C3F5286C3A8C504114AE47F1EA065541C3F5283C3A8C5041C3F5282CEE065541713D0AB7398C50413D0AD7C3EE065541
+</a>
+
+<b>
+010600000001000000010300000002000000220000004A2500433F8C50410802C759ED065541C3F528EC418C504185EB5178EE06554102D7D33D428C50413E5017D0ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB0655418741ECD1448C5041AC5E950CEA065541B3A11374458C5041A0B48311E9065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E60655410803F012428C5041B6EB104EE5065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541EC51B86E328C50415C8FC235DF0655414440F04E318C5041D6EDC114E5065541B81E852B308C5041F6285C6FEC065541000000E02C8C5041000000C0FE0655413D0AD7132D8C5041333333B3FF065541B6F0E3992D8C50417E56D52C03075541D7A3703D2E8C5041A4703D6A07075541713D0A47308C5041666666760907554113341E353A8C5041DDA713F00A075541DDC759703B8C504149C6DE8B0A075541EC51B8AE3A8C504185EB5128050755418FC2F5583A8C504185EB51D8FE065541C3F5283C3A8C5041C3F5289CFA0655411F85EB913A8C5041B81E850BF6065541713D0A173B8C5041F6285CFFF1065541C3F5289C3B8C5041D7A370FDEE0655417B14AE173C8C504148E17A04EC065541E69E857D3E8C5041F449B406ED065541810E4C2A3F8C5041F7A8624FED0655414A2500433F8C50410802C759ED06554111000000713D0AB7398C50413D0AD7C3EE0655418FC2F5F8388C50413D0AD7C3EE06554152B81E15388C504148E17A94EE06554114AE4731378C50413D0AD793ED06554100000030368C5041D7A3709DED065541A4703DDA348C50417B14AE77ED065541000000D0338C5041F6285C0FEE0655417B14AE37338C5041295C8F52EF06554166666696328C5041AE47E11AF106554185EB51A8318C5041E17A142EF1065541B81E85BB318C5041E17A149EEE065541713D0A67328C50419A9999C9E8065541F6285CCF328C50411F85EBA1E506554114AE4701378C50417B14AE57E8065541C3F5286C3A8C504114AE47F1EA065541C3F5283C3A8C5041C3F5282CEE065541713D0AB7398C50413D0AD7C3EE065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>544985 - 180764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000F047BD50411F85EB21ECF95441D7A3700D2BBD504148E17A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954418FC2F51876BD50411F85EB41FAF9544185EB514877BD5041CDCCCCFCF9F9544152B81EA576BD5041F6285C8FE5F954415C8FC2B55BBD5041666666F6E4F954411F85EB4156BD50413D0AD773E5F954415C8FC2B550BD504152B81ED5E6F954411F85EBE14BBD5041E17A143EE9F95441000000F047BD50411F85EB21ECF95441
+</a>
+
+<b>
+010600000001000000010300000001000000130000005C8FC2B550BD504152B81ED5E6F954412737E6BE4FBD504128CD5B50E7F954411F85EBE14BBD5041F77A143EE9F954412B0000F047BD50411485EB21ECF95441AB76DBF33CBD5041A250702FF9F954413C35F7AA37BD5041E0E80177FFF9544123A4700D2BBD5041EEE07A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954417D9B803376BD5041B253DF3BFAF954419BE9514877BD50413DCDCCFCF9F9544175FD3BA576BD504195100693E5F9544154B81EA576BD50412B295C8FE5F9544177A481D55BBD5041EFAE1AF7E4F95441638FC2B55BBD5041666666F6E4F9544190796CA45BBD5041CF3CF5F7E4F954411F85EB4156BD50413D0AD773E5F954415C8FC2B550BD504152B81ED5E6F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>544985 - 299660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000F047BD50411F85EB21ECF95441D7A3700D2BBD504148E17A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954418FC2F51876BD50411F85EB41FAF9544185EB514877BD5041CDCCCCFCF9F9544152B81EA576BD5041F6285C8FE5F954415C8FC2B55BBD5041666666F6E4F954411F85EB4156BD50413D0AD773E5F954415C8FC2B550BD504152B81ED5E6F954411F85EBE14BBD5041E17A143EE9F95441000000F047BD50411F85EB21ECF95441
+</a>
+
+<b>
+010600000001000000010300000001000000130000005C8FC2B550BD504152B81ED5E6F954412737E6BE4FBD504128CD5B50E7F954411F85EBE14BBD5041F77A143EE9F954412B0000F047BD50411485EB21ECF95441AB76DBF33CBD5041A250702FF9F954413C35F7AA37BD5041E0E80177FFF9544123A4700D2BBD5041EEE07A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954417D9B803376BD5041B253DF3BFAF954419BE9514877BD50413DCDCCFCF9F9544175FD3BA576BD504195100693E5F9544154B81EA576BD50412B295C8FE5F9544177A481D55BBD5041EFAE1AF7E4F95441638FC2B55BBD5041666666F6E4F9544190796CA45BBD5041CF3CF5F7E4F954411F85EB4156BD50413D0AD773E5F954415C8FC2B550BD504152B81ED5E6F95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546034 - 3049924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000295C8FB267F25041333333E3953F55419A9999C966F2504152B81E15973F554185EB514865F250417B14AEB7983F554114AE47F162F25041E17A14CE9B3F5541295C8F9260F25041666666369F3F5541CDCCCC1C5FF250415C8FC275A23F55415C8FC2D55EF25041A4703DFAA33F5541B81E85FB65F25041EC51B8EEA83F55413D0AD7936FF25041295C8FF2AD3F55417B14AEA77AF250415C8FC245B33F554148E17AE478F250415C8FC235B73F55418FC2F55886F2504133333373BD3F55410AD7A30094F250413D0AD743C33F5541D7A3704D93F25041666666B6C43F5541713D0A17A6F25041AE47E19ACB3F5541AE47E19AAEF25041D7A3706DCE3F55417B14AE57BDF25041AE47E19AD23F5541AE47E12ACCF250413D0AD773D63F5541AE47E15AD5F2504152B81E55D83F554152B81E75DEF25041AE47E1BADA3F5541D7A3709DE4F25041D7A370ADDC3F5541AE47E1BAF4F25041A4703DCAE13F55417B14AE1700F35041F6285C8FD73F55413333332305F350418FC2F5D8D13F5541B81E853BF7F25041E17A142ECA3F5541F6285C3FEDF25041F6285C1FC53F55415C8FC245E4F2504166666666C13F55419A9999C9DAF2504185EB51E8BC3F5541E17A141EDAF250413D0AD7F3BD3F5541AE47E10AC7F25041B81E85DBB63F5541295C8FB2B3F25041AE47E19AAE3F55419A999919B8F250418FC2F5C8A53F5541EC51B8EEB1F250419A999959A33F5541713D0A97B0F250418FC2F568A23F55418FC2F5D89AF25041000000E0993F5541EC51B80E98F250417B14AEC7983F5541C3F528FC72F2504185EB51B8863F55418FC2F55870F250413D0AD7D38A3F554185EB51E86DF25041666666268E3F55415C8FC2356CF2504114AE47A1903F5541B81E85DB6AF25041E17A143E923F5541295C8FB267F25041333333E3953F5541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8FB2B3F25041AE47E19AAE3F5541DB09EEDCB9F2504172CF343CB13F55411543FC85BFF25041A91C5EA6B33F5541EEF47D7DC4F25041B28BC9C4B53F55410F0E8113CAF250412C3563FCB73F5541C5B518F2CEF2504166A30FCCB93F5541D4313B84D4F25041A21284DEBB3F5541E17A141EDAF250413D0AD7F3BD3F55419A9999C9DAF2504185EB51E8BC3F554167775D05E0F2504121CBE362BF3F5541F71A925FE4F2504183F71A71C13F5541743B5F21E9F25041335C346AC33F5541B710C6B0EEF2504190BD78DAC53F55417CBE0129F4F250416911B49FC83F5541FDCFD939F9F25041529F7C47CB3F5541DAA8826CFEF2504165543D25CE3F55413DE3663802F35041770B293DD03F55413333332305F350418FC2F5D8D13F55415C8FC2550AF350415C8FC2B5CA3F5541DF8BA79806F35041BC5D9CABC83F5541BC634E2103F35041028884C7C63F5541EECECAB8FEF25041F247DB5FC43F5541F28F0025FBF25041E599CE79C23F554126FCF55DF7F25041F0B045A0C03F5541846624DBF3F2504143EE24E8BE3F55416BA1F4B3F1F25041401C3EDABD3F55413D0AD723EFF250418FC2F598BC3F5541B8731D9AECF25041951CC345BB3F5541E4441BAAE9F250419521A4D5B93F5541713D0AE7E6F25041B81E857BB83F55415037B571E5F250410AE65FE6B73F55412CD3B1C0E1F25041A603D86CB63F55413FC88142DCF250411426133BB43F55413304815DD8F250418432C6ACB23F5541A71956B1D2F2504187E4A268B03F5541524CA730CEF250417E56249CAE3F5541DE17CC09CBF2504126F8CD59AD3F55416964580BC8F250410BCF9B27AC3F55414DCFC2A1C3F250419D925764AA3F5541A9CD40BFBEF25041834FC470A83F55419A999919B8F250418FC2F5C8A53F5541EEF7155CB5F25041ECE76046AB3F5541295C8FB2B3F25041AE47E19AAE3F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546034 - 3311909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000295C8FB267F25041333333E3953F55419A9999C966F2504152B81E15973F554185EB514865F250417B14AEB7983F554114AE47F162F25041E17A14CE9B3F5541295C8F9260F25041666666369F3F5541CDCCCC1C5FF250415C8FC275A23F55415C8FC2D55EF25041A4703DFAA33F5541B81E85FB65F25041EC51B8EEA83F55413D0AD7936FF25041295C8FF2AD3F55417B14AEA77AF250415C8FC245B33F554148E17AE478F250415C8FC235B73F55418FC2F55886F2504133333373BD3F55410AD7A30094F250413D0AD743C33F5541D7A3704D93F25041666666B6C43F5541713D0A17A6F25041AE47E19ACB3F5541AE47E19AAEF25041D7A3706DCE3F55417B14AE57BDF25041AE47E19AD23F5541AE47E12ACCF250413D0AD773D63F5541AE47E15AD5F2504152B81E55D83F554152B81E75DEF25041AE47E1BADA3F5541D7A3709DE4F25041D7A370ADDC3F5541AE47E1BAF4F25041A4703DCAE13F55417B14AE1700F35041F6285C8FD73F55413333332305F350418FC2F5D8D13F5541B81E853BF7F25041E17A142ECA3F5541F6285C3FEDF25041F6285C1FC53F55415C8FC245E4F2504166666666C13F55419A9999C9DAF2504185EB51E8BC3F5541E17A141EDAF250413D0AD7F3BD3F5541AE47E10AC7F25041B81E85DBB63F5541295C8FB2B3F25041AE47E19AAE3F55419A999919B8F250418FC2F5C8A53F5541EC51B8EEB1F250419A999959A33F5541713D0A97B0F250418FC2F568A23F55418FC2F5D89AF25041000000E0993F5541EC51B80E98F250417B14AEC7983F5541C3F528FC72F2504185EB51B8863F55418FC2F55870F250413D0AD7D38A3F554185EB51E86DF25041666666268E3F55415C8FC2356CF2504114AE47A1903F5541B81E85DB6AF25041E17A143E923F5541295C8FB267F25041333333E3953F5541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8FB2B3F25041AE47E19AAE3F5541DB09EEDCB9F2504172CF343CB13F55411543FC85BFF25041A91C5EA6B33F5541EEF47D7DC4F25041B28BC9C4B53F55410F0E8113CAF250412C3563FCB73F5541C5B518F2CEF2504166A30FCCB93F5541D4313B84D4F25041A21284DEBB3F5541E17A141EDAF250413D0AD7F3BD3F55419A9999C9DAF2504185EB51E8BC3F554167775D05E0F2504121CBE362BF3F5541F71A925FE4F2504183F71A71C13F5541743B5F21E9F25041335C346AC33F5541B710C6B0EEF2504190BD78DAC53F55417CBE0129F4F250416911B49FC83F5541FDCFD939F9F25041529F7C47CB3F5541DAA8826CFEF2504165543D25CE3F55413DE3663802F35041770B293DD03F55413333332305F350418FC2F5D8D13F55415C8FC2550AF350415C8FC2B5CA3F5541DF8BA79806F35041BC5D9CABC83F5541BC634E2103F35041028884C7C63F5541EECECAB8FEF25041F247DB5FC43F5541F28F0025FBF25041E599CE79C23F554126FCF55DF7F25041F0B045A0C03F5541846624DBF3F2504143EE24E8BE3F55416BA1F4B3F1F25041401C3EDABD3F55413D0AD723EFF250418FC2F598BC3F5541B8731D9AECF25041951CC345BB3F5541E4441BAAE9F250419521A4D5B93F5541713D0AE7E6F25041B81E857BB83F55415037B571E5F250410AE65FE6B73F55412CD3B1C0E1F25041A603D86CB63F55413FC88142DCF250411426133BB43F55413304815DD8F250418432C6ACB23F5541A71956B1D2F2504187E4A268B03F5541524CA730CEF250417E56249CAE3F5541DE17CC09CBF2504126F8CD59AD3F55416964580BC8F250410BCF9B27AC3F55414DCFC2A1C3F250419D925764AA3F5541A9CD40BFBEF25041834FC470A83F55419A999919B8F250418FC2F5C8A53F5541EEF7155CB5F25041ECE76046AB3F5541295C8FB2B3F25041AE47E19AAE3F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546260 - 174646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004100000052B81E35C5055141F6285CBF5E4B55410AD7A3D0C90551413D0AD7035E4B5541B81E85EBCE055141666666B65D4B5541F6285C8FD40551419A9999095C4B554152B81EC5DE0551415C8FC2D5574B5541D7A3709DEA055141EC51B87E524B554114AE47A1F1055141E17A14EE4F4B554114AE47F1F405514152B81E654F4B554148E17A34F705514114AE47114F4B5541713D0A67F7055141333333634E4B5541AE47E14AF8055141E17A14DE4C4B554152B81EA5F8055141A4703D8A4C4B554166666696FE0551411F85EB414B4B55410AD7A34002065141713D0AD74A4B5541333333E3030651417B14AEA7484B5541333333C3020651411F85EBB1454B5541F6285C8F0306514100000050414B5541713D0AF706065141A4703D9A3E4B5541A4703DEA08065141333333533C4B5541EC51B86E0606514166666676394B554114AE4791FF055141D7A3703D344B5541295C8FC2FD05514133333353314B5541CDCCCC9CF5055141C3F5282C3A4B554185EB5108F20551419A9999993C4B55413D0AD7C3EC05514148E17A343E4B55418FC2F548EB055141CDCCCCFC3E4B5541A4703DDAE5055141CDCCCCEC434B5541295C8FB2E10551410AD7A3F0454B5541666666D6D9055141333333C3464B554185EB51E8D0055141CDCCCCBC484B5541A4703D6AC605514148E17AC4494B55417B14AEE7C30551410AD7A3E04A4B554185EB5178BB0551411F85EB21514B5541000000D0B0055141B81E850B584B5541D7A370DDA50551415C8FC285604B5541713D0A679C05514114AE47F1664B5541295C8F629A055141AE47E19A6A4B55410000005096055141A4703DAA6F4B5541713D0AA7950551417B14AE17724B5541295C8F729505514114AE4731744B5541295C8F729505514166666636794B5541AE47E13A960551417B14AEA77D4B5541333333A39D0551417B14AEE78A4B5541295C8F229F055141D7A3703D904B5541713D0A97A0055141295C8F82904B554185EB5148A6055141CDCCCC6C914B5541B81E854BA60551411F85EBD1904B55410AD7A300A9055141666666E6904B554185EB5118A9055141E17A141E8D4B5541333333E3A505514185EB51C8864B5541A4703DDAA4055141AE47E1BA844B5541000000F0A3055141AE47E1CA824B5541713D0A27A30551417B14AE677C4B5541AE47E13AA30551415C8FC2657B4B5541C3F5282CA40551417B14AED7764B55419A999979A40551419A999929764B55410AD7A3B0AA05514148E17A346E4B554100000040AE055141EC51B81E6A4B554185EB51E8B005514166666676674B55413D0AD7A3B10551415C8FC215674B5541F6285C1FB505514166666636654B554148E17AE4B8055141B81E856B634B5541295C8F82BB055141666666B6624B5541E17A148EBF055141AE47E19A604B554152B81E35C5055141F6285CBF5E4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000566A640FBB055141B001FA65514B554162B988A9B9055141E02F077B524B554159CE7124B205514177E5AB38574B554113531679A50551414B2B951C614B5541621D3FC59E055141D190739B654B55419C1233A59C0551418FAB2CFF664B5541D70727859A055141BE5BCBAC6A4B5541027DE86E9605514156B1FCE76F4B55419FC7A89D95055141CE3635EE724B55419FC7A89D95055141D681BFF5794B554158929BC296055141008224E27D4B5541E3A7B3029B055141150DC8E4854B5541E9405A0F9D0551418E9F38DF894B55412B8716419E055141E5D022F38A4B55416DE7FB59A2055141C976BEA7874B55413BDF4FA59E05514196438B8C794B55412506814D9E05514104560E1D764B55414A0C021BA1055141AC1C5A0C754B55416DE7FB59A305514185EB5168784B5541FED47849A505514152B81EF5734B55411904560EAD055141BC7493C86A4B5541A69BC450B0055141A69BC480654B5541BA490CA2B40551418FC2F580644B55413F355EAAB8055141B81E85DB604B5541CFF7532BBA05514160E5D0DA5E4B5541BE9F1AE7BD05514148E17A945E4B5541BC749380C2055141D7A3703D5D4B5541FA7E6A3CC605514108AC1C8A5B4B554181954313CA055141CFF7534B5C4B554169EAEDFECE05514109EB16355C4B55417C7ACD38D00551410F3BDD735C4B5541621058D9D3055141713D0A3F594B5541D7A37045DB055141BE9F1ACF554B5541B29DEF67DE055141A245B61B564B554160E5D05AE1055141CBA145EE544B5541E5D0225BE5055141E5D022CB514B55411D5A64FBE8055141D7A370D54B4B55415A643BF7E9055141931804B6454B5541418669A5F2055141046EA2843F4B5541713D0A67F7055141B29DEF1F3C4B5541FA7E6AC4FE055141F2D24DB2334B554199E5F04CFD055141A5A1ECD2314B5541CDCCCC9CF5055141C3F5282C3A4B554185EB5108F20551419A9999993C4B5541F4F50CD6EC0551413066EE2E3E4B5541E0F21A75EC0551417DBB1B5E3E4B554163944EFCEB0551419EF2F99D3E4B554107A61094EB055141743B17D53E4B554186D97462EB05514165D251EF3E4B5541E1451DA7EA055141D207E68F3F4B5541A4703DDAE5055141CDCCCCEC434B5541195FC441E305514101980A2F454B5541FFE5E08CE10551414B8F4B38464B55414B70F0DDD905514102BAB1DF464B5541D42F0D0AD1055141113AE4D5484B5541AE84AA93C60551411E7AFDD0494B554137B583C3C50551417F11360E4A4B55417B14AEE7C30551410AD7A3E04A4B554185EB5178BB0551411F85EB21514B5541566A640FBB055141B001FA65514B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546394 - 262773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D000000333333A35F085141F6285C7F654B5541AE47E1AA60085141D7A3702D644B55418FC2F5D860085141CDCCCCEC634B5541B81E85DB61085141F6285C7F624B5541F6285C1F5D085141A4703D1A624B5541F6285CCF54085141EC51B85E614B5541A4703DAA4208514148E17A845F4B5541EC51B84E420851417B14AEB7604B55418FC2F5D84108514166666646624B5541EC51B8CE4E08514148E17A34644B554166666686570851410AD7A3F0644B554185EB51085C085141CDCCCC2C654B5541333333A35F085141F6285C7F654B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007AEB51085C085141B7CCCC2C654B5541333333A35F085141F6285C7F654B5541AA47E1AA60085141DDA3702D644B5541961D42B060085141E33EE525644B554178C2F5D860085141EDCCCCEC634B5541CC7A14DE5408514120D7A3D0624B55410C52B84E420851417B14AEB7604B554116EA5BE141085141FC41F629624B5541383A4EDE41085141A3F24C34624B5541AE6D79DB41085141C805E33D624B554192C2F5D8410851415D666646624B5541EC51B8CE4E08514148E17A34644B554166666686570851410AD7A3F0644B55418DD1F84458085141065693FA644B55417AEB51085C085141B7CCCC2C654B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546433 - 239512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC2856F0851410AD7A3E0974D5541B81E85DB720851410AD7A3509F4D55413D0AD7A37B085141CDCCCC2C9A4D554185EB51388508514100000090944D5541666666A6820851411F85EBA18E4D5541333333C37F0851415C8FC2E5874D554148E17A546F08514152B81E958F4D554148E17A946B085141F6285C4F914D5541B81E85BB5C085141E17A14EE974D554148E17A0461085141AE47E10A9E4D55417B14AE7768085141B81E859B9A4D55415C8FC2856F0851410AD7A3E0974D5541
+</a>
+
+<b>
+010600000001000000010300000001000000110000002A7F66A68208514144BEEBA18E4D55416ED233C37F085141C202C4E5874D5541CBA6852C7108514164165CB88E4D554148E17A546F08514152B81E958F4D554141F8B36B6E08514119445A00904D554149F879946B08514109445D4F914D554199A0207D6608514111227B94934D5541377114D36408514147F67052944D5541801FB41661085141B271DBFC954D55416BAB85BB5C085141253C14EE974D5541677ED15C5F085141B82588AE9B4D55413E7E7A046108514166BAE00A9E4D5541578DAD77680851411906859B9A4D55410686C3296A085141FE0F8CF3994D55415C8FC2856F0851410AD7A3E0974D55416DF479647908514166979829934D55412A7F66A68208514144BEEBA18E4D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546433 - 385815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC2856F0851410AD7A3E0974D5541B81E85DB720851410AD7A3509F4D55413D0AD7A37B085141CDCCCC2C9A4D554185EB51388508514100000090944D5541666666A6820851411F85EBA18E4D5541333333C37F0851415C8FC2E5874D554148E17A546F08514152B81E958F4D554148E17A946B085141F6285C4F914D5541B81E85BB5C085141E17A14EE974D554148E17A0461085141AE47E10A9E4D55417B14AE7768085141B81E859B9A4D55415C8FC2856F0851410AD7A3E0974D5541
+</a>
+
+<b>
+010600000001000000010300000001000000110000002A7F66A68208514144BEEBA18E4D55416ED233C37F085141C202C4E5874D5541CBA6852C7108514164165CB88E4D554148E17A546F08514152B81E958F4D554141F8B36B6E08514119445A00904D554149F879946B08514109445D4F914D554199A0207D6608514111227B94934D5541377114D36408514147F67052944D5541801FB41661085141B271DBFC954D55416BAB85BB5C085141253C14EE974D5541677ED15C5F085141B82588AE9B4D55413E7E7A046108514166BAE00A9E4D5541578DAD77680851411906859B9A4D55410686C3296A085141FE0F8CF3994D55415C8FC2856F0851410AD7A3E0974D55416DF479647908514166979829934D55412A7F66A68208514144BEEBA18E4D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546546 - 250578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000006700000066666606DBF25041C3F5286C9C3D5541B81E852BE3F250418FC2F5589B3D55415C8FC2C5EDF25041A4703D5A983D5541295C8F12F4F25041EC51B86E953D5541713D0AD7F4F25041E17A14CE9E3D5541A4703DBAFAF25041D7A3702D9D3D55413D0AD773FFF25041EC51B88E9A3D5541AE47E13A01F350411F85EB91983D55410000008000F350415C8FC2B5943D55418FC2F52805F3504100000040903D5541B81E855B0CF35041C3F5280C8A3D5541000000B014F350417B14AEA7833D554152B81EA518F35041E17A147E883D5541713D0A6724F35041CDCCCC4C813D554152B81E3525F350415C8FC245833D5541A4703D0A27F35041C3F528BC873D5541AE47E14A28F35041F6285C2F8A3D5541F6285CBF2AF35041EC51B8FE8E3D55410AD7A3A037F3504148E17A448E3D55410AD7A30038F35041F6285C3F8E3D55410000009038F35041C3F528FC8C3D5541AE47E17A3AF35041000000B08B3D554114AE47213EF35041F6285C9F893D5541C3F5285C40F3504185EB5108883D5541CDCCCC8C41F35041B81E855B863D55410AD7A33042F3504148E17A74843D55419A99998940F3504114AE47E1813D554185EB51C83EF350418FC2F5787F3D5541666666663CF35041B81E856B813D5541713D0AB73AF35041D7A3705D7B3D5541713D0AB73BF350419A9999697A3D5541D7A370ED37F350418FC2F528733D55415C8FC28534F35041A4703D1A6D3D55419A99997931F35041A4703D4A673D55418FC2F5A830F350413D0AD7C3653D554148E17A642EF35041E17A148E613D554152B81EC52CF350411F85EB41623D5541CDCCCC0C2CF3504185EB5178623D5541D7A3708D22F350419A9999594B3D554114AE473122F350418FC2F5784A3D5541EC51B85E21F35041B81E853B4A3D5541295C8F3220F35041EC51B8EE493D5541000000D01DF350419A9999A9493D5541CDCCCCDC1CF350419A999979493D5541AE47E11A19F350415C8FC275493D5541713D0AF715F3504166666686493D554148E17A0412F350417B14AE174A3D5541AE47E1AA0FF350410AD7A3504A3D55418FC2F5680DF3504114AE47714A3D55417B14AE070BF35041B81E856B4A3D55413333332309F3504152B81E254A3D5541A4703D5A07F35041EC51B85E4A3D55418FC2F54806F35041333333934A3D5541A4703DEA03F3504185EB51A84A3D5541295C8FD201F35041D7A370ED4A3D554185EB5138FFF2504152B81E254B3D554166666676FDF2504114AE47F14A3D554185EB5128FCF2504114AE47A14A3D5541EC51B81EFBF250410AD7A3604A3D55410AD7A3A0F9F2504148E17A944A3D5541F6285CAFF8F250411F85EB014A3D5541B81E856BF7F25041E17A14AE493D55413D0AD793F6F25041E17A14DE493D55413D0AD703F5F250419A9999D9493D5541713D0A57F3F250411F85EBD1493D5541F6285CAFF1F25041E17A14FE493D554185EB51D8EFF25041C3F528EC493D554166666666EEF25041666666F6493D55410AD7A360ECF25041CDCCCCDC493D5541EC51B81EE6F250415C8FC2A5493D5541D7A3702DEAF25041000000F0513D5541295C8F82EAF2504100000010563D5541D7A3708DE8F250410AD7A3505B3D554148E17A24E8F25041B81E853B5F3D5541C3F5283CECF2504185EB5128633D5541EC51B84EF0F250410AD7A310673D55419A999929EBF250410AD7A3A06C3D55417B14AEA7ECF25041E17A141E723D554148E17A44E4F250417B14AEA77A3D554100000010E2F25041F6285CAF813D5541D7A370EDE3F25041E17A14DE813D5541F6285CEFE2F25041A4703DDA863D5541F6285CBFE1F25041F6285C1F893D5541666666A6DDF2504152B81EF5903D5541713D0A57D8F25041F6285CAF9A3D5541A4703DBAD2F25041E17A147EA23D554133333393D2F250415C8FC2F5AD3D5541C3F528CCD3F25041B81E85CBB43D55413D0AD7C3CBF250413D0AD733B53D55413D0AD703C4F250415C8FC265B53D5541C3F5282CBFF2504152B81E85B53D554152B81E55B6F25041E17A14BEB53D554114AE47C1B1F25041B81E85DBB53D55411F85EB61B1F250410AD7A380B83D554148E17A14C0F250411F85EB21B83D5541D7A3704DD4F25041000000A0B73D5541CDCCCCBCD4F250418FC2F518BA3D5541A4703D0AD5F25041B81E85CBBB3D554166666686D6F25041EC51B81EC43D5541A4703D5ADAF25041A4703D3ABE3D55410AD7A370E1F250417B14AEB7BB3D5541000000E0D7F250418FC2F508A03D554166666606DBF25041C3F5286C9C3D55410103000000010000000E00000048E17A641EF3504152B81E45E23D5541333333731CF350418FC2F5A8ED3D5541C3F5288C1BF35041A4703DFAF83D554185EB518825F350415C8FC2F5F93D55411F85EBD130F35041EC51B8FEFA3D554185EB516831F35041B81E858BEE3D5541C3F5287C32F3504152B81E75EC3D554148E17A6432F35041D7A370EDE53D5541EC51B87E35F35041EC51B8DEE23D5541B81E85DB36F3504100000070E13D5541F6285C7F37F35041713D0AD7DF3D5541F6285C6F38F35041EC51B87EDD3D5541AE47E16A25F35041E17A14FED93D554148E17A641EF3504152B81E45E23D55410103000000010000000F00000033333343DAF2504166666686193E55410AD7A300DEF25041E17A143E1F3E55410AD7A3A0ECF2504148E17AD4203E55419A9999C9FDF25041666666D6223E5541B81E854B0EF350411F85EB91243E554185EB51E81BF3504114AE47E1243E5541CDCCCCCC20F35041666666D61A3E5541B81E851B17F350418FC2F5F8183E5541E17A141E12F3504114AE4731183E554185EB51A804F3504133333333163E554185EB51F8F7F2504185EB51E8143E55415C8FC2E5F3F25041000000E0143E55411F85EB91EAF2504114AE47D1143E5541EC51B8FED7F2504152B81EF5143E554133333343DAF2504166666686193E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000ED43900831F35041E4F8BD78F63D55415C90447630F350413AD1CFEEF53D554131A6295D30F3504157729A97F53D55414E54113B30F350416CA68F2AF33D5541AB71BA6030F350411855C242EF3D5541B8CA32E430F35041C31602F8ED3D5541BAF84B3333F35041021AC427E73D5541F31B997333F350416568F5E3E33D5541C16BE12E34F3504144AC3985E03D55415BD63CD335F350412D200F1DDD3D5541D14D48EE35F350416EB2A608DD3D5541F3D10F5735F3504151ECCCECDC3D5541D626958633F3504185964197DC3D5541A9FC099125F350415E9B1B05DA3D5541F14606D822F35041D06D6706DD3D554148E17A641EF3504152B81E45E23D5541BBE6622B1DF350418D16F870E93D55416B087D701CF3504139BBF6CAED3D554101867A4D1CF35041C016FE81EF3D554186A74EDD1BF350417BDCA300F53D55414837368C1BF350415B3597F9F83D554118CBFF241FF35041552ED954F93D55417F1D6A8B21F35041AC2B4E91F93D55411E7E468D22F350413FA1ADAAF93D55414FE6576724F35041F54C53D9F93D5541AB12C70A27F35041DE2B3219FA3D554187EE4EEE29F35041B1BB015DFA3D55419B1F431F2CF350412F6D7190FA3D5541234047CE30F350410FD662FEFA3D5541ED43900831F35041E4F8BD78F63D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546546 - 373060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000006700000066666606DBF25041C3F5286C9C3D5541B81E852BE3F250418FC2F5589B3D55415C8FC2C5EDF25041A4703D5A983D5541295C8F12F4F25041EC51B86E953D5541713D0AD7F4F25041E17A14CE9E3D5541A4703DBAFAF25041D7A3702D9D3D55413D0AD773FFF25041EC51B88E9A3D5541AE47E13A01F350411F85EB91983D55410000008000F350415C8FC2B5943D55418FC2F52805F3504100000040903D5541B81E855B0CF35041C3F5280C8A3D5541000000B014F350417B14AEA7833D554152B81EA518F35041E17A147E883D5541713D0A6724F35041CDCCCC4C813D554152B81E3525F350415C8FC245833D5541A4703D0A27F35041C3F528BC873D5541AE47E14A28F35041F6285C2F8A3D5541F6285CBF2AF35041EC51B8FE8E3D55410AD7A3A037F3504148E17A448E3D55410AD7A30038F35041F6285C3F8E3D55410000009038F35041C3F528FC8C3D5541AE47E17A3AF35041000000B08B3D554114AE47213EF35041F6285C9F893D5541C3F5285C40F3504185EB5108883D5541CDCCCC8C41F35041B81E855B863D55410AD7A33042F3504148E17A74843D55419A99998940F3504114AE47E1813D554185EB51C83EF350418FC2F5787F3D5541666666663CF35041B81E856B813D5541713D0AB73AF35041D7A3705D7B3D5541713D0AB73BF350419A9999697A3D5541D7A370ED37F350418FC2F528733D55415C8FC28534F35041A4703D1A6D3D55419A99997931F35041A4703D4A673D55418FC2F5A830F350413D0AD7C3653D554148E17A642EF35041E17A148E613D554152B81EC52CF350411F85EB41623D5541CDCCCC0C2CF3504185EB5178623D5541D7A3708D22F350419A9999594B3D554114AE473122F350418FC2F5784A3D5541EC51B85E21F35041B81E853B4A3D5541295C8F3220F35041EC51B8EE493D5541000000D01DF350419A9999A9493D5541CDCCCCDC1CF350419A999979493D5541AE47E11A19F350415C8FC275493D5541713D0AF715F3504166666686493D554148E17A0412F350417B14AE174A3D5541AE47E1AA0FF350410AD7A3504A3D55418FC2F5680DF3504114AE47714A3D55417B14AE070BF35041B81E856B4A3D55413333332309F3504152B81E254A3D5541A4703D5A07F35041EC51B85E4A3D55418FC2F54806F35041333333934A3D5541A4703DEA03F3504185EB51A84A3D5541295C8FD201F35041D7A370ED4A3D554185EB5138FFF2504152B81E254B3D554166666676FDF2504114AE47F14A3D554185EB5128FCF2504114AE47A14A3D5541EC51B81EFBF250410AD7A3604A3D55410AD7A3A0F9F2504148E17A944A3D5541F6285CAFF8F250411F85EB014A3D5541B81E856BF7F25041E17A14AE493D55413D0AD793F6F25041E17A14DE493D55413D0AD703F5F250419A9999D9493D5541713D0A57F3F250411F85EBD1493D5541F6285CAFF1F25041E17A14FE493D554185EB51D8EFF25041C3F528EC493D554166666666EEF25041666666F6493D55410AD7A360ECF25041CDCCCCDC493D5541EC51B81EE6F250415C8FC2A5493D5541D7A3702DEAF25041000000F0513D5541295C8F82EAF2504100000010563D5541D7A3708DE8F250410AD7A3505B3D554148E17A24E8F25041B81E853B5F3D5541C3F5283CECF2504185EB5128633D5541EC51B84EF0F250410AD7A310673D55419A999929EBF250410AD7A3A06C3D55417B14AEA7ECF25041E17A141E723D554148E17A44E4F250417B14AEA77A3D554100000010E2F25041F6285CAF813D5541D7A370EDE3F25041E17A14DE813D5541F6285CEFE2F25041A4703DDA863D5541F6285CBFE1F25041F6285C1F893D5541666666A6DDF2504152B81EF5903D5541713D0A57D8F25041F6285CAF9A3D5541A4703DBAD2F25041E17A147EA23D554133333393D2F250415C8FC2F5AD3D5541C3F528CCD3F25041B81E85CBB43D55413D0AD7C3CBF250413D0AD733B53D55413D0AD703C4F250415C8FC265B53D5541C3F5282CBFF2504152B81E85B53D554152B81E55B6F25041E17A14BEB53D554114AE47C1B1F25041B81E85DBB53D55411F85EB61B1F250410AD7A380B83D554148E17A14C0F250411F85EB21B83D5541D7A3704DD4F25041000000A0B73D5541CDCCCCBCD4F250418FC2F518BA3D5541A4703D0AD5F25041B81E85CBBB3D554166666686D6F25041EC51B81EC43D5541A4703D5ADAF25041A4703D3ABE3D55410AD7A370E1F250417B14AEB7BB3D5541000000E0D7F250418FC2F508A03D554166666606DBF25041C3F5286C9C3D55410103000000010000000E00000048E17A641EF3504152B81E45E23D5541333333731CF350418FC2F5A8ED3D5541C3F5288C1BF35041A4703DFAF83D554185EB518825F350415C8FC2F5F93D55411F85EBD130F35041EC51B8FEFA3D554185EB516831F35041B81E858BEE3D5541C3F5287C32F3504152B81E75EC3D554148E17A6432F35041D7A370EDE53D5541EC51B87E35F35041EC51B8DEE23D5541B81E85DB36F3504100000070E13D5541F6285C7F37F35041713D0AD7DF3D5541F6285C6F38F35041EC51B87EDD3D5541AE47E16A25F35041E17A14FED93D554148E17A641EF3504152B81E45E23D55410103000000010000000F00000033333343DAF2504166666686193E55410AD7A300DEF25041E17A143E1F3E55410AD7A3A0ECF2504148E17AD4203E55419A9999C9FDF25041666666D6223E5541B81E854B0EF350411F85EB91243E554185EB51E81BF3504114AE47E1243E5541CDCCCCCC20F35041666666D61A3E5541B81E851B17F350418FC2F5F8183E5541E17A141E12F3504114AE4731183E554185EB51A804F3504133333333163E554185EB51F8F7F2504185EB51E8143E55415C8FC2E5F3F25041000000E0143E55411F85EB91EAF2504114AE47D1143E5541EC51B8FED7F2504152B81EF5143E554133333343DAF2504166666686193E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000ED43900831F35041E4F8BD78F63D55415C90447630F350413AD1CFEEF53D554131A6295D30F3504157729A97F53D55414E54113B30F350416CA68F2AF33D5541AB71BA6030F350411855C242EF3D5541B8CA32E430F35041C31602F8ED3D5541BAF84B3333F35041021AC427E73D5541F31B997333F350416568F5E3E33D5541C16BE12E34F3504144AC3985E03D55415BD63CD335F350412D200F1DDD3D5541D14D48EE35F350416EB2A608DD3D5541F3D10F5735F3504151ECCCECDC3D5541D626958633F3504185964197DC3D5541A9FC099125F350415E9B1B05DA3D5541F14606D822F35041D06D6706DD3D554148E17A641EF3504152B81E45E23D5541BBE6622B1DF350418D16F870E93D55416B087D701CF3504139BBF6CAED3D554101867A4D1CF35041C016FE81EF3D554186A74EDD1BF350417BDCA300F53D55414837368C1BF350415B3597F9F83D554118CBFF241FF35041552ED954F93D55417F1D6A8B21F35041AC2B4E91F93D55411E7E468D22F350413FA1ADAAF93D55414FE6576724F35041F54C53D9F93D5541AB12C70A27F35041DE2B3219FA3D554187EE4EEE29F35041B1BB015DFA3D55419B1F431F2CF350412F6D7190FA3D5541234047CE30F350410FD662FEFA3D5541ED43900831F35041E4F8BD78F63D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546764 - 42460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000025000000000000A070F45041A4703D5A693D5541000000606FF45041F6285CEF693D55419A99995962F45041D7A370DD703D554114AE47A159F45041333333C3663D5541A4703D8A58F45041295C8F62653D5541CDCCCC1C4DF45041B81E85EB553D5541B81E85EB46F4504152B81E75553D554148E17A3443F45041AE47E1BA553D55411F85EBD13EF45041D7A3700D563D5541B81E852B45F45041EC51B8DE5E3D5541C3F5286C4BF450415C8FC2A5663D55415C8FC2A54AF45041E17A14BE673D55413D0AD77353F450411F85EB51713D55419A99996958F45041A4703D3A773D55411F85EBD15BF45041295C8FC2793D5541EC51B88E5EF4504152B81E457C3D55415C8FC2B562F45041CDCCCCBC7E3D554148E17AB464F45041D7A370CD7C3D5541E17A146E67F450410AD7A3207A3D5541B81E857B69F45041713D0A67783D5541713D0A376BF45041AE47E16A7A3D5541000000E076F4504100000050873D5541C3F528EC82F4504166666656953D5541EC51B86E8CF450413D0AD7D38A3D55410AD7A3E08CF450415C8FC215893D55411F85EB618CF4504114AE4721873D55419A9999698BF45041B81E854B853D5541713D0A0789F4504152B81E55823D55410000001087F450415C8FC2F57F3D55419A9999B97EF4504166666606753D5541713D0A877DF45041666666F6723D5541D7A370FD7CF45041B81E859B703D55418FC2F5187CF450418FC2F5F86E3D5541666666E67AF450415C8FC2156E3D5541D7A370BD75F450419A9999696B3D5541666666C671F4504185EB51E8693D5541000000A070F45041A4703D5A693D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000BE04DD286BF45041FBC8842D6C3D5541DBEEED5B69F45041E2A3C2226D3D5541DB4DA90F6AF45041478565476D3D5541EB86785A6DF45041E78BF0B76C3D5541B9EF91506FF450415538F5AA6B3D5541950B3BAA6FF450411A23D7C16A3D5541CC4FA4316FF45041716806086A3D55410844C8B16DF45041254A42D46A3D55417CC243266DF45041EE637D1E6B3D5541BE04DD286BF45041FBC8842D6C3D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546764 - 75156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000025000000000000A070F45041A4703D5A693D5541000000606FF45041F6285CEF693D55419A99995962F45041D7A370DD703D554114AE47A159F45041333333C3663D5541A4703D8A58F45041295C8F62653D5541CDCCCC1C4DF45041B81E85EB553D5541B81E85EB46F4504152B81E75553D554148E17A3443F45041AE47E1BA553D55411F85EBD13EF45041D7A3700D563D5541B81E852B45F45041EC51B8DE5E3D5541C3F5286C4BF450415C8FC2A5663D55415C8FC2A54AF45041E17A14BE673D55413D0AD77353F450411F85EB51713D55419A99996958F45041A4703D3A773D55411F85EBD15BF45041295C8FC2793D5541EC51B88E5EF4504152B81E457C3D55415C8FC2B562F45041CDCCCCBC7E3D554148E17AB464F45041D7A370CD7C3D5541E17A146E67F450410AD7A3207A3D5541B81E857B69F45041713D0A67783D5541713D0A376BF45041AE47E16A7A3D5541000000E076F4504100000050873D5541C3F528EC82F4504166666656953D5541EC51B86E8CF450413D0AD7D38A3D55410AD7A3E08CF450415C8FC215893D55411F85EB618CF4504114AE4721873D55419A9999698BF45041B81E854B853D5541713D0A0789F4504152B81E55823D55410000001087F450415C8FC2F57F3D55419A9999B97EF4504166666606753D5541713D0A877DF45041666666F6723D5541D7A370FD7CF45041B81E859B703D55418FC2F5187CF450418FC2F5F86E3D5541666666E67AF450415C8FC2156E3D5541D7A370BD75F450419A9999696B3D5541666666C671F4504185EB51E8693D5541000000A070F45041A4703D5A693D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000BE04DD286BF45041FBC8842D6C3D5541DBEEED5B69F45041E2A3C2226D3D5541DB4DA90F6AF45041478565476D3D5541EB86785A6DF45041E78BF0B76C3D5541B9EF91506FF450415538F5AA6B3D5541950B3BAA6FF450411A23D7C16A3D5541CC4FA4316FF45041716806086A3D55410844C8B16DF45041254A42D46A3D55417CC243266DF45041EE637D1E6B3D5541BE04DD286BF45041FBC8842D6C3D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546917 - 2977019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000009A99990990FD504185EB5138263B5541EC51B8BE8FFD50415C8FC235273B5541EC51B88E8EFD5041295C8F42313B5541D7A3709D8CFD5041295C8FC23A3B55411F85EB217BFD504185EB5138333B5541666666566EFD50411F85EBE12B3B5541666666B668FD5041B81E852B333B5541295C8F2268FD50418FC2F518343B554114AE47E174FD5041B81E853B3C3B5541A4703DBA7DFD504148E17AB4413B5541295C8FE286FD5041A4703D0A473B554114AE47B18AFD50418FC2F5B8443B55419A9999A990FD50410AD7A370423B5541AE47E18A96FD5041EC51B8AE403B5541666666969BFD50411F85EB613F3B55411F85EBD1A1FD5041AE47E13A3E3B5541C3F528ACB0FD504148E17A243B3B5541AE47E1CAAEFD5041295C8FC2363B5541A4703D0AAEFD5041000000B0343B5541A4703D5AACFD50415C8FC275323B554152B81ED5A5FD50417B14AE772B3B554114AE47419FFD5041B81E852B253B5541A4703DBA9DFD50418FC2F548233B5541EC51B8CE9CFD5041333333A3213B5541E17A144E9BFD5041F6285C8F213B55418FC2F5B891FD5041CDCCCC0C263B55419A99990990FD504185EB5138263B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E9CB034892FD5041950A989E563B55415C8FC26597FD5041C3F528BC563B554111D9D6FD96FD5041644DE8D0553B55419C2515AE96FD5041D9A5006A543B5541400BD0BE95FD5041380AF3EB513B55419E6FC24093FD50410BC7FD064E3B5541CEA1BB0192FD50412405D1B04B3B5541C8A0D5C791FD5041C5FC3DA7493B5541B4AAF1DA90FD50418CC1DAF6483B554114AE47B18AFD50418FC2F5B8443B5541B5C23BB786FD5041D28F5646473B55413642D5E083FD5041A97BCF49453B5541B7DC47047EFD50416F659DDF413B5541F27FC5F978FD504145D00CC43E3B5541176E440373FD50413CD5680A3B3B554187B5E85F6BFD50418B807C59363B55417F8A36816AFD5041FEA6C7D23A3B55415ACD9C3169FD5041E2BCB990413B5541A5BE17AD6CFD5041EC0C30D4433B55416ED2BE6C6FFD5041C8D98F9D453B554140D8A06073FD50415BDE9CB8483B5541FF04C59675FD5041162670754A3B5541EEDA29F478FD5041D58E42924C3B55412C4889E57EFD50410E6CC216503B5541EFE74B1A84FD50413C05A3C0523B554129EF133587FD5041ED08B0D3533B5541180359258CFD504160415260553B5541E9CB034892FD5041950A989E563B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546917 - 3667219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000009A99990990FD504185EB5138263B5541EC51B8BE8FFD50415C8FC235273B5541EC51B88E8EFD5041295C8F42313B5541D7A3709D8CFD5041295C8FC23A3B55411F85EB217BFD504185EB5138333B5541666666566EFD50411F85EBE12B3B5541666666B668FD5041B81E852B333B5541295C8F2268FD50418FC2F518343B554114AE47E174FD5041B81E853B3C3B5541A4703DBA7DFD504148E17AB4413B5541295C8FE286FD5041A4703D0A473B554114AE47B18AFD50418FC2F5B8443B55419A9999A990FD50410AD7A370423B5541AE47E18A96FD5041EC51B8AE403B5541666666969BFD50411F85EB613F3B55411F85EBD1A1FD5041AE47E13A3E3B5541C3F528ACB0FD504148E17A243B3B5541AE47E1CAAEFD5041295C8FC2363B5541A4703D0AAEFD5041000000B0343B5541A4703D5AACFD50415C8FC275323B554152B81ED5A5FD50417B14AE772B3B554114AE47419FFD5041B81E852B253B5541A4703DBA9DFD50418FC2F548233B5541EC51B8CE9CFD5041333333A3213B5541E17A144E9BFD5041F6285C8F213B55418FC2F5B891FD5041CDCCCC0C263B55419A99990990FD504185EB5138263B5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E9CB034892FD5041950A989E563B55415C8FC26597FD5041C3F528BC563B554111D9D6FD96FD5041644DE8D0553B55419C2515AE96FD5041D9A5006A543B5541400BD0BE95FD5041380AF3EB513B55419E6FC24093FD50410BC7FD064E3B5541CEA1BB0192FD50412405D1B04B3B5541C8A0D5C791FD5041C5FC3DA7493B5541B4AAF1DA90FD50418CC1DAF6483B554114AE47B18AFD50418FC2F5B8443B5541B5C23BB786FD5041D28F5646473B55413642D5E083FD5041A97BCF49453B5541B7DC47047EFD50416F659DDF413B5541F27FC5F978FD504145D00CC43E3B5541176E440373FD50413CD5680A3B3B554187B5E85F6BFD50418B807C59363B55417F8A36816AFD5041FEA6C7D23A3B55415ACD9C3169FD5041E2BCB990413B5541A5BE17AD6CFD5041EC0C30D4433B55416ED2BE6C6FFD5041C8D98F9D453B554140D8A06073FD50415BDE9CB8483B5541FF04C59675FD5041162670754A3B5541EEDA29F478FD5041D58E42924C3B55412C4889E57EFD50410E6CC216503B5541EFE74B1A84FD50413C05A3C0523B554129EF133587FD5041ED08B0D3533B5541180359258CFD504160415260553B5541E9CB034892FD5041950A989E563B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>547057 - 2987291
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000033333323CCFA5041333333433E525541C3F5288CC5FA5041A4703DEA385255417B14AE07C2FA5041C3F5285C3652554114AE47E1BDFA50415C8FC2B53352554152B81E25BCFA50411F85EB0133525541CDCCCCECBAFA5041D7A3702D3152554185EB51E8B8FA5041F6285C5F2F52554185EB51E8B5FA5041295C8F122D52554114AE4771B0FA5041E17A14FE28525541713D0A87ACFA50411F85EBC12552554148E17A84A8FA504114AE47C1225255413D0AD7D3A3FA50410AD7A3001F525541713D0A97A0FA5041AE47E1CA1C5255416666667692FA5041295C8F02255255416666666685FA5041A4703DBA2C525541295C8FC2A2FA50410000003042525541F6285CBFCCFA50417B14AE77615255413D0AD713DEFA5041D7A370AD7052554114AE4711E5FA504148E17AE46E52554185EB5198EEFA5041E17A141E6C52554114AE4771F6FA50411F85EB916952554185EB51D8FAFA5041F6285C3F6852554148E17A94FCFA504100000070675255415C8FC205FCFA5041713D0AE7665255411F85EBF1F2FA5041CDCCCC7C5E5255419A999999EAFA5041713D0A1756525541713D0A17DBFA5041713D0A5749525541D7A370DDD5FA5041000000B0455255411F85EBC1CDFA50419A9999393F5255415C8FC2F5CCFA5041333333A33E52554133333323CCFA5041333333433E525541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000910103F9FDFA5041CEBC030E68525541EEDC2F840FFB50416F84BFEF63525541BB5549780FFB5041D8EA76EA6352554136E28FD60FFB5041937ED2D263525541C96B7EFC0AFB50414CF1076B5E525541AA50AE8301FB5041AAB308AA575255412F405450FDFA5041293C4AE95752554112F2FA5BF2FA50410DEEF0F44C5255411F1553EFEBFA5041690581AC48525541CEFE14CEE8FA5041C171A0DC46525541FD5F956DE5FA504118DEBF0C455255412BE31B0AE3FA50411AAB36914352554186E92843DEFA50419CEF6BD6415255416089FA39DAFA50411F34A11B40525541B7172067D9FA5041F53985093F5255418D1D0455D8FA5041795CB4513C5255416501E245D6FA5041512F0FC439525541699BCF4ED3FA50412835F3B13852554117A7972AD1FA5041AA8AAB7537525541A1B9958AC6FA50415CEC5460305255415170CEEDC1FA50410BD6163F2D5255412B212363BEFA50418D1A4C842B52554102270751BDFA5041BAAE559F2952554159A4A9FFBBFA50419381B01127525541DBF961C3BAFA504114E8EB5326525541B4AAB638B7FA50416C438805245255416472721AB3FA5041F2322ED21F525541BEAB08CFAFFA50414E28B88C1A525541D6D8E3DEABFA5041B9122D19165255416770427CA8FA5041B2C0271D18525541080EBBCBA0FA5041B616D9EE1C5255417F1B7719A4FA504181FE58381F5255419921187DA8FA504121E15EBB22525541448C05D8B6FA5041A0B6FBB82D525541A4525CFAC0FA504169CBBC5235525541C57F1E2BCDFA5041905AE89B3E52554137D69B3ED2FA50419BC54B514252554136581735DBFA50418105A0EA48525541870C1DC2E0FA5041AD4CC4144D5255416B01CB8EEEFA5041AA50F9AB58525541389509C3F7FA5041A1588E67615255417306ADD1FAFA50418DD421FD64525541910103F9FDFA5041CEBC030E68525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>547057 - 3735575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000033333323CCFA5041333333433E525541C3F5288CC5FA5041A4703DEA385255417B14AE07C2FA5041C3F5285C3652554114AE47E1BDFA50415C8FC2B53352554152B81E25BCFA50411F85EB0133525541CDCCCCECBAFA5041D7A3702D3152554185EB51E8B8FA5041F6285C5F2F52554185EB51E8B5FA5041295C8F122D52554114AE4771B0FA5041E17A14FE28525541713D0A87ACFA50411F85EBC12552554148E17A84A8FA504114AE47C1225255413D0AD7D3A3FA50410AD7A3001F525541713D0A97A0FA5041AE47E1CA1C5255416666667692FA5041295C8F02255255416666666685FA5041A4703DBA2C525541295C8FC2A2FA50410000003042525541F6285CBFCCFA50417B14AE77615255413D0AD713DEFA5041D7A370AD7052554114AE4711E5FA504148E17AE46E52554185EB5198EEFA5041E17A141E6C52554114AE4771F6FA50411F85EB916952554185EB51D8FAFA5041F6285C3F6852554148E17A94FCFA504100000070675255415C8FC205FCFA5041713D0AE7665255411F85EBF1F2FA5041CDCCCC7C5E5255419A999999EAFA5041713D0A1756525541713D0A17DBFA5041713D0A5749525541D7A370DDD5FA5041000000B0455255411F85EBC1CDFA50419A9999393F5255415C8FC2F5CCFA5041333333A33E52554133333323CCFA5041333333433E525541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000910103F9FDFA5041CEBC030E68525541EEDC2F840FFB50416F84BFEF63525541BB5549780FFB5041D8EA76EA6352554136E28FD60FFB5041937ED2D263525541C96B7EFC0AFB50414CF1076B5E525541AA50AE8301FB5041AAB308AA575255412F405450FDFA5041293C4AE95752554112F2FA5BF2FA50410DEEF0F44C5255411F1553EFEBFA5041690581AC48525541CEFE14CEE8FA5041C171A0DC46525541FD5F956DE5FA504118DEBF0C455255412BE31B0AE3FA50411AAB36914352554186E92843DEFA50419CEF6BD6415255416089FA39DAFA50411F34A11B40525541B7172067D9FA5041F53985093F5255418D1D0455D8FA5041795CB4513C5255416501E245D6FA5041512F0FC439525541699BCF4ED3FA50412835F3B13852554117A7972AD1FA5041AA8AAB7537525541A1B9958AC6FA50415CEC5460305255415170CEEDC1FA50410BD6163F2D5255412B212363BEFA50418D1A4C842B52554102270751BDFA5041BAAE559F2952554159A4A9FFBBFA50419381B01127525541DBF961C3BAFA504114E8EB5326525541B4AAB638B7FA50416C438805245255416472721AB3FA5041F2322ED21F525541BEAB08CFAFFA50414E28B88C1A525541D6D8E3DEABFA5041B9122D19165255416770427CA8FA5041B2C0271D18525541080EBBCBA0FA5041B616D9EE1C5255417F1B7719A4FA504181FE58381F5255419921187DA8FA504121E15EBB22525541448C05D8B6FA5041A0B6FBB82D525541A4525CFAC0FA504169CBBC5235525541C57F1E2BCDFA5041905AE89B3E52554137D69B3ED2FA50419BC54B514252554136581735DBFA50418105A0EA48525541870C1DC2E0FA5041AD4CC4144D5255416B01CB8EEEFA5041AA50F9AB58525541389509C3F7FA5041A1588E67615255417306ADD1FAFA50418DD421FD64525541910103F9FDFA5041CEBC030E68525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628379 - 224602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E250C1C51419A999919E116554148E17A041D1C5141D7A370DDD01655419A999929211C5141713D0A17CE165541333333E3261C51418FC2F5D8CC1655417B14AE07301C5141E17A148ECB1655413D0AD793341C514133333373CA1655410AD7A3502E1C514152B81EB5C2165541C3F5285C1A1C514185EB51F8CB165541713D0A570E1C5141C3F5288CD11655417B14AE070B1C514166666636CE165541B81E854B0A1C51418FC2F578CD165541D7A3702D091C514185EB51E8CE1655415C8FC2A50A1C5141D7A3705DD01655418FC2F5280C1C51411F85EB71D2165541F6285C0F0B1C5141A4703D6AD31655411F85EB110A1C514185EB5148D416554148E17AD4081C514114AE4731D5165541C3F528CC071C514148E17A24D616554185EB51F8061C5141295C8F02D716554148E17A44061C51415C8FC2F5D71655415C8FC285051C5141F6285C9FD8165541713D0AC7041C51413D0AD7C3D81655418FC2F568FE1B5141713D0AE7E5165541D7A3702DFE1B51418FC2F538EA1655415C8FC235FA1B514100000010EE165541A4703D1AF01B5141AE47E12AED16554148E17A64ED1B5141AE47E1BAEB1655415C8FC2B5E41B514185EB51B8FA165541295C8FA2E01B5141CDCCCCDCFB165541000000D0DE1B5141295C8F820217554114AE4741E11B5141713D0AA706175541666666B6E21B51419A9999C9061755418FC2F588EE1B5141713D0A47F9165541AE47E12A021C514185EB5198E816554152B81E250C1C51419A999919E1165541
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B4D80141071C5141EAF45BB6D61655413DE5A56F061C5141552062BBD716554148E17A44061C51415C8FC2F5D71655415C8FC285051C5141F6285C9FD8165541713D0AC7041C51413D0AD7C3D81655418FC2F568FE1B5141713D0AE7E516554154D68A44FE1B5141EE28B48BE8165541E926712DFE1B5141FCF2F638EA1655415710EFB1FA1B51410D0ED197ED1655415C8FC235FA1B514100000010EE165541B823363BF61B51418338CFB5ED165541A4703D1AF01B5141AE47E12AED165541A66B7B64ED1B51411491E1BAEB165541E18EC3B5E41B5141183353B8FA165541E0439437E11B5141641005B3FB165541E5B28FA2E01B51417CB4CCDCFB1655412B2301D0DE1B5141E7708E8202175541B8F24841E11B514197EB08A7061755416FCB66B6E21B5141252699C9061755410F3B7A75E61B5141AD9AA08102175541A034F588EE1B514131E50947F9165541331BE02A021C514191F25198E81655416E216DB5051C51410DD254EFE516554152B81E250C1C51419A999919E116554148E17A041D1C5141D7A370DDD0165541E412BB9D1D1C5141776BD776D0165541EBB99829211C51410CF80817CE165541578CE5BD251C514142A49D18CD165541333333E3261C51418FC2F5D8CC1655417B14AE07301C5141E17A148ECB16554107CA51D0321C5141C44EEAE0CA16554145CBD693341C51415AE53273CA165541D583A4502E1C5141F38D1FB5C21655418D5F59CE261C514160796331C6165541C3F5285C1A1C514185EB51F8CB16554198271D97111C514135FF0F0AD016554138AA09570E1C514191EE298CD11655417B14AE070B1C514166666636CE165541B81E854B0A1C51418FC2F578CD16554196B6D03A091C5141EAB55DD7CE1655410ACF02660A1C514182A93B1ED01655415C8FC2A50A1C5141D7A3705DD01655418FC2F5280C1C51411F85EB71D21655415A0B181B0C1C51414CB9257ED2165541F6285C0F0B1C5141A4703D6AD31655411F85EB110A1C514185EB5148D416554145C59130091C514192C0B2EDD4165541152B6566081C514191959196D5165541B4D80141071C5141EAF45BB6D6165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628379 - 378828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E250C1C51419A999919E116554148E17A041D1C5141D7A370DDD01655419A999929211C5141713D0A17CE165541333333E3261C51418FC2F5D8CC1655417B14AE07301C5141E17A148ECB1655413D0AD793341C514133333373CA1655410AD7A3502E1C514152B81EB5C2165541C3F5285C1A1C514185EB51F8CB165541713D0A570E1C5141C3F5288CD11655417B14AE070B1C514166666636CE165541B81E854B0A1C51418FC2F578CD165541D7A3702D091C514185EB51E8CE1655415C8FC2A50A1C5141D7A3705DD01655418FC2F5280C1C51411F85EB71D2165541F6285C0F0B1C5141A4703D6AD31655411F85EB110A1C514185EB5148D416554148E17AD4081C514114AE4731D5165541C3F528CC071C514148E17A24D616554185EB51F8061C5141295C8F02D716554148E17A44061C51415C8FC2F5D71655415C8FC285051C5141F6285C9FD8165541713D0AC7041C51413D0AD7C3D81655418FC2F568FE1B5141713D0AE7E5165541D7A3702DFE1B51418FC2F538EA1655415C8FC235FA1B514100000010EE165541A4703D1AF01B5141AE47E12AED16554148E17A64ED1B5141AE47E1BAEB1655415C8FC2B5E41B514185EB51B8FA165541295C8FA2E01B5141CDCCCCDCFB165541000000D0DE1B5141295C8F820217554114AE4741E11B5141713D0AA706175541666666B6E21B51419A9999C9061755418FC2F588EE1B5141713D0A47F9165541AE47E12A021C514185EB5198E816554152B81E250C1C51419A999919E1165541
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B4D80141071C5141EAF45BB6D61655413DE5A56F061C5141552062BBD716554148E17A44061C51415C8FC2F5D71655415C8FC285051C5141F6285C9FD8165541713D0AC7041C51413D0AD7C3D81655418FC2F568FE1B5141713D0AE7E516554154D68A44FE1B5141EE28B48BE8165541E926712DFE1B5141FCF2F638EA1655415710EFB1FA1B51410D0ED197ED1655415C8FC235FA1B514100000010EE165541B823363BF61B51418338CFB5ED165541A4703D1AF01B5141AE47E12AED165541A66B7B64ED1B51411491E1BAEB165541E18EC3B5E41B5141183353B8FA165541E0439437E11B5141641005B3FB165541E5B28FA2E01B51417CB4CCDCFB1655412B2301D0DE1B5141E7708E8202175541B8F24841E11B514197EB08A7061755416FCB66B6E21B5141252699C9061755410F3B7A75E61B5141AD9AA08102175541A034F588EE1B514131E50947F9165541331BE02A021C514191F25198E81655416E216DB5051C51410DD254EFE516554152B81E250C1C51419A999919E116554148E17A041D1C5141D7A370DDD0165541E412BB9D1D1C5141776BD776D0165541EBB99829211C51410CF80817CE165541578CE5BD251C514142A49D18CD165541333333E3261C51418FC2F5D8CC1655417B14AE07301C5141E17A148ECB16554107CA51D0321C5141C44EEAE0CA16554145CBD693341C51415AE53273CA165541D583A4502E1C5141F38D1FB5C21655418D5F59CE261C514160796331C6165541C3F5285C1A1C514185EB51F8CB16554198271D97111C514135FF0F0AD016554138AA09570E1C514191EE298CD11655417B14AE070B1C514166666636CE165541B81E854B0A1C51418FC2F578CD16554196B6D03A091C5141EAB55DD7CE1655410ACF02660A1C514182A93B1ED01655415C8FC2A50A1C5141D7A3705DD01655418FC2F5280C1C51411F85EB71D21655415A0B181B0C1C51414CB9257ED2165541F6285C0F0B1C5141A4703D6AD31655411F85EB110A1C514185EB5148D416554145C59130091C514192C0B2EDD4165541152B6566081C514191959196D5165541B4D80141071C5141EAF45BB6D6165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548349 - 3105757
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001600000048E17A54C1FA5041B81E851B542B55410AD7A3C0C1FA5041CDCCCC7C502B55417B14AEA7C0FA5041C3F5282C4C2B554152B81E75BCFA5041713D0A77452B55410AD7A3B0B6FA504114AE4771402B5541713D0AF7B2FA50413D0AD7A33E2B5541AE47E10AADFA50411F85EBC13C2B55417B14AE87A4FA504114AE47C13A2B5541666666E699FA5041666666C6392B5541EC51B8AE90FA50417B14AE07392B5541CDCCCCBC87FA5041000000D0372B55419A9999F97FFA504148E17A34442B554185EB51587EFA504148E17A64482B5541666666D679FA5041000000F0612B5541713D0A677FFA504185EB51E8672B554148E17A248DFA5041713D0A47632B5541CDCCCCDC93FA5041295C8F42612B55411F85EB319DFA5041333333335E2B554114AE4761A6FA5041666666365B2B55417B14AEC7A9FA50418FC2F5285A2B554100000060B7FA50418FC2F588552B554148E17A54C1FA5041B81E851B542B5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EAC99C6991FA5041E233DBFE612B55415A5500738DFA5041AAFFF848632B5541B81174217FFA5041A2610216682B55417F3AA9E180FA5041AD868E616B2B554101C6CA2E84FA50419741929C6A2B55417593187887FA5041F52CB0AF692B554166572B1291FA5041FEE3B3FD662B5541EC75C9B59FFA5041F05A0305662B554118E451B6A2FA5041BCF34068652B5541177DE4BBA6FA5041258B427E642B55416424DCC6A6FA50410C866A9A642B554157C13B9CADFA5041AD8EB7EA622B5541145D0AB3A9FA50418B61592F5A2B554114AE4761A6FA5041666666365B2B55411F85EB319DFA5041333333335E2B5541CDCCCCDC93FA5041295C8F42612B5541EAC99C6991FA5041E233DBFE612B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548349 - 3468098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001600000048E17A54C1FA5041B81E851B542B55410AD7A3C0C1FA5041CDCCCC7C502B55417B14AEA7C0FA5041C3F5282C4C2B554152B81E75BCFA5041713D0A77452B55410AD7A3B0B6FA504114AE4771402B5541713D0AF7B2FA50413D0AD7A33E2B5541AE47E10AADFA50411F85EBC13C2B55417B14AE87A4FA504114AE47C13A2B5541666666E699FA5041666666C6392B5541EC51B8AE90FA50417B14AE07392B5541CDCCCCBC87FA5041000000D0372B55419A9999F97FFA504148E17A34442B554185EB51587EFA504148E17A64482B5541666666D679FA5041000000F0612B5541713D0A677FFA504185EB51E8672B554148E17A248DFA5041713D0A47632B5541CDCCCCDC93FA5041295C8F42612B55411F85EB319DFA5041333333335E2B554114AE4761A6FA5041666666365B2B55417B14AEC7A9FA50418FC2F5285A2B554100000060B7FA50418FC2F588552B554148E17A54C1FA5041B81E851B542B5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EAC99C6991FA5041E233DBFE612B55415A5500738DFA5041AAFFF848632B5541B81174217FFA5041A2610216682B55417F3AA9E180FA5041AD868E616B2B554101C6CA2E84FA50419741929C6A2B55417593187887FA5041F52CB0AF692B554166572B1291FA5041FEE3B3FD662B5541EC75C9B59FFA5041F05A0305662B554118E451B6A2FA5041BCF34068652B5541177DE4BBA6FA5041258B427E642B55416424DCC6A6FA50410C866A9A642B554157C13B9CADFA5041AD8EB7EA622B5541145D0AB3A9FA50418B61592F5A2B554114AE4761A6FA5041666666365B2B55411F85EB319DFA5041333333335E2B5541CDCCCCDC93FA5041295C8F42612B5541EAC99C6991FA5041E233DBFE612B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583501 - 56122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000A4703D2A79E150413D0AD7034FEF5441AE47E1DA78E15041713D0A174FEF54419A99995976E150410AD7A3B04FEF5441AE47E10A76E150413D0AD7C34FEF544185EB51F873E15041713D0A6750EF54419A9999F972E150415C8FC2B550EF544114AE476171E1504114AE475151EF54419A9999F96FE15041A4703DDA51EF54411F85EB016FE15041B81E854B52EF544148E17A4471E150411F85EB6157EF544185EB517871E15041713D0AD757EF5441EC51B8BE7BE15041000000B057EF5441F6285C6F80E15041CDCCCCAC57EF5441C3F528EC86E1504185EB51A857EF5441CDCCCCBC92E150410AD7A3C059EF5441E17A146E97E15041E17A142E5AEF544114AE47D198E15041000000F052EF5441B81E85BB98E150417B14AEC74CEF5441713D0A5799E15041F6285CDF49EF5441713D0A779BE150413D0AD7B348EF5441F6285C5F9DE15041295C8F7246EF5441A4703DFA9EE15041AE47E1FA41EF54415C8FC225A0E15041AE47E1FA41EF54415C8FC2B5A1E150410000003046EF544133333323A4E150410000003046EF5441F6285CDFA5E150411F85EB5145EF54413D0AD703AAE15041CDCCCC7C41EF5441CDCCCC2CADE15041333333733EEF5441F6285C9FADE15041C3F528BC3CEF5441AE47E10AADE15041666666D63AEF54417B14AE97ACE15041EC51B85E39EF544185EB5138ACE15041AE47E16A38EF544185EB5158ABE15041295C8F1236EF54418FC2F568AAE150418FC2F58834EF54419A999919A9E150411F85EBE130EF544114AE4731A8E150413D0AD7132EEF5441B81E85BBA7E15041713D0AF72CEF5441713D0A17A7E15041E17A144E2AEF54419A999959A6E15041D7A370ED21EF544114AE47E1A3E150415C8FC2651FEF544148E17AB49CE15041A4703D4A1DEF5441E17A146E97E15041F6285CAF1AEF5441D7A3705D8FE15041295C8F4217EF5441295C8FA28CE150413D0AD79316EF5441EC51B89E8EE150416666660635EF5441EC51B8DE91E1504114AE47F143EF5441B81E85FB85E150417B14AE4745EF5441D7A3704D85E150411F85EB0148EF544152B81E1586E15041000000004BEF5441C3F528BC85E15041F6285C8F4DEF5441B81E850B84E15041C3F528DC4EEF5441A4703D2A79E150413D0AD7034FEF5441
+</a>
+
+<b>
+0106000000020000000103000000010000002E0000005C8FC225A0E15041AE47E1FA41EF54410F4C4579A0E150417AF1C1DB42EF5441B73AA4DBA9E150414959BD8141EF54417CC4C893ABE15041B3235CFC3FEF5441268E5135ADE150412CAB8D523EEF5441CFCF1361ADE15041A91DDAAA3DEF54416A149275ADE15041834E505C3DEF54416241D57FADE15041AEE9FB343DEF54410E699189ADE15041FAF8AC0F3DEF54412D1C6A8AADE15041FE7D6E0C3DEF5441A94FA98CADE150411417D2033DEF5441C7213A8DADE150412514A7013DEF54419D68768DADE15041FC12C0003DEF5441460BEA4DADE1504129BAB4B13BEF54413318B436ACE150414E3A8C6638EF54415B462952ABE1504190BF6E0836EF54418FC2F568AAE150418FC2F58834EF54419A999919A9E150411F85EBE130EF544114AE4731A8E150413D0AD7132EEF5441B81E85BBA7E15041713D0AF72CEF5441713D0A17A7E15041E17A144E2AEF5441CCAD5508A7E1504153169AA729EF5441A33C9D46A6E1504117FC7CFA21EF5441783BEAD9A3E1504134C098631FEF544148E17AB49CE15041A4703D4A1DEF5441C95144479CE15041916A4E141DEF544188082F009CE15041FA37A0FE1CEF54411354DAF794E1504140F5B7A319EF5441A327B64B94E15041DB539D5A19EF5441AE73EC3392E150414C3F147718EF5441F4857C0792E15041242E356418EF5441AE01C4F091E15041C60D8F5A18EF544134DA73ED91E1504144DD265918EF5441EDDEBC1892E150410770FDC71BEF544139118C4492E15041B2BBDA781EEF5441337322C992E1504105D161AF34EF5441622A10E094E15041CBB0678E34EF544158C83E1098E15041B1453A5E34EF54417DCBF38DA2E15041B3016BDE33EF544115914A29A3E15041428FCE0E35EF54414BDF3A8DA1E150416973E92E38EF54415B01D046A1E150415C69319F38EF5441C54F66C59CE1504136D73DCB38EF54418567EBEE9EE150413AEE631A42EF5441A4703DFA9EE15041AE47E1FA41EF54415C8FC225A0E15041AE47E1FA41EF54410103000000010000000400000020A9D95CA6E150417F5A3C1222EF54417C110D43A6E1504186E257D621EF5441A33C9D46A6E1504117FC7CFA21EF544120A9D95CA6E150417F5A3C1222EF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583501 - 119274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000A4703D2A79E150413D0AD7034FEF5441AE47E1DA78E15041713D0A174FEF54419A99995976E150410AD7A3B04FEF5441AE47E10A76E150413D0AD7C34FEF544185EB51F873E15041713D0A6750EF54419A9999F972E150415C8FC2B550EF544114AE476171E1504114AE475151EF54419A9999F96FE15041A4703DDA51EF54411F85EB016FE15041B81E854B52EF544148E17A4471E150411F85EB6157EF544185EB517871E15041713D0AD757EF5441EC51B8BE7BE15041000000B057EF5441F6285C6F80E15041CDCCCCAC57EF5441C3F528EC86E1504185EB51A857EF5441CDCCCCBC92E150410AD7A3C059EF5441E17A146E97E15041E17A142E5AEF544114AE47D198E15041000000F052EF5441B81E85BB98E150417B14AEC74CEF5441713D0A5799E15041F6285CDF49EF5441713D0A779BE150413D0AD7B348EF5441F6285C5F9DE15041295C8F7246EF5441A4703DFA9EE15041AE47E1FA41EF54415C8FC225A0E15041AE47E1FA41EF54415C8FC2B5A1E150410000003046EF544133333323A4E150410000003046EF5441F6285CDFA5E150411F85EB5145EF54413D0AD703AAE15041CDCCCC7C41EF5441CDCCCC2CADE15041333333733EEF5441F6285C9FADE15041C3F528BC3CEF5441AE47E10AADE15041666666D63AEF54417B14AE97ACE15041EC51B85E39EF544185EB5138ACE15041AE47E16A38EF544185EB5158ABE15041295C8F1236EF54418FC2F568AAE150418FC2F58834EF54419A999919A9E150411F85EBE130EF544114AE4731A8E150413D0AD7132EEF5441B81E85BBA7E15041713D0AF72CEF5441713D0A17A7E15041E17A144E2AEF54419A999959A6E15041D7A370ED21EF544114AE47E1A3E150415C8FC2651FEF544148E17AB49CE15041A4703D4A1DEF5441E17A146E97E15041F6285CAF1AEF5441D7A3705D8FE15041295C8F4217EF5441295C8FA28CE150413D0AD79316EF5441EC51B89E8EE150416666660635EF5441EC51B8DE91E1504114AE47F143EF5441B81E85FB85E150417B14AE4745EF5441D7A3704D85E150411F85EB0148EF544152B81E1586E15041000000004BEF5441C3F528BC85E15041F6285C8F4DEF5441B81E850B84E15041C3F528DC4EEF5441A4703D2A79E150413D0AD7034FEF5441
+</a>
+
+<b>
+010600000001000000010300000001000000270000000DD55C326FE150416DCA91B852EF5441D4F7371970E15041C03840C054EF54412AF16D7270E150412DED128955EF54418D983C3F71E1504163E51D5657EF54415E0AD57871E1504123FB7DD557EF544101A8412572E15041632A79D457EF5441BC2F9B3172E150411C3E4AD457EF544119FC603572E150418EE83BD457EF5441694C6DE072E150414602B2D157EF54415930120A73E1504114C813D157EF544112A5DA0E74E15041D5EE34CD57EF5441C7FA801175E150418D305EC957EF544127024D007BE150411080D3B257EF5441898486207BE15041F10F59B257EF5441EC51B8BE7BE15041000000B057EF54418526091B80E15041B05506AD57EF544148DC656F80E15041F0BBCCAC57EF5441E1CA402780E150410FBFD5B754EF544175289C1A80E1504172022E3354EF544105A2080F80E15041E7D0B7B953EF54416390660B80E15041C8444A9453EF544122D8DD997FE15041850C5EEC4EEF5441DD1212637FE15041A1E425ED4EEF5441D81E66767EE150417A0C85F04EEF5441013C9C427DE150416B92E7F44EEF5441BB7B42C07AE1504124430EFE4EEF544121B04F4779E15041EF036D034FEF54419E61092C79E15041D07CD0034FEF54416AD7670779E150410186440C4FEF5441AE47E1DA78E15041713D0A174FEF5441643EBD5976E15041794D9BB04FEF5441A0FAE6E675E15041C41FE8CE4FEF5441A0AF53D473E15041E5DA297250EF5441A308A7F472E1504186F7A4B750EF544114AE476171E1504114AE475151EF544117E862B570E1504134F2BB9251EF5441E248F5F36FE15041B004D2DC51EF5441424704026FE1504191DABC4B52EF54410DD55C326FE150416DCA91B852EF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583501 - 319490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000A4703D2A79E150413D0AD7034FEF5441AE47E1DA78E15041713D0A174FEF54419A99995976E150410AD7A3B04FEF5441AE47E10A76E150413D0AD7C34FEF544185EB51F873E15041713D0A6750EF54419A9999F972E150415C8FC2B550EF544114AE476171E1504114AE475151EF54419A9999F96FE15041A4703DDA51EF54411F85EB016FE15041B81E854B52EF544148E17A4471E150411F85EB6157EF544185EB517871E15041713D0AD757EF5441EC51B8BE7BE15041000000B057EF5441F6285C6F80E15041CDCCCCAC57EF5441C3F528EC86E1504185EB51A857EF5441CDCCCCBC92E150410AD7A3C059EF5441E17A146E97E15041E17A142E5AEF544114AE47D198E15041000000F052EF5441B81E85BB98E150417B14AEC74CEF5441713D0A5799E15041F6285CDF49EF5441713D0A779BE150413D0AD7B348EF5441F6285C5F9DE15041295C8F7246EF5441A4703DFA9EE15041AE47E1FA41EF54415C8FC225A0E15041AE47E1FA41EF54415C8FC2B5A1E150410000003046EF544133333323A4E150410000003046EF5441F6285CDFA5E150411F85EB5145EF54413D0AD703AAE15041CDCCCC7C41EF5441CDCCCC2CADE15041333333733EEF5441F6285C9FADE15041C3F528BC3CEF5441AE47E10AADE15041666666D63AEF54417B14AE97ACE15041EC51B85E39EF544185EB5138ACE15041AE47E16A38EF544185EB5158ABE15041295C8F1236EF54418FC2F568AAE150418FC2F58834EF54419A999919A9E150411F85EBE130EF544114AE4731A8E150413D0AD7132EEF5441B81E85BBA7E15041713D0AF72CEF5441713D0A17A7E15041E17A144E2AEF54419A999959A6E15041D7A370ED21EF544114AE47E1A3E150415C8FC2651FEF544148E17AB49CE15041A4703D4A1DEF5441E17A146E97E15041F6285CAF1AEF5441D7A3705D8FE15041295C8F4217EF5441295C8FA28CE150413D0AD79316EF5441EC51B89E8EE150416666660635EF5441EC51B8DE91E1504114AE47F143EF5441B81E85FB85E150417B14AE4745EF5441D7A3704D85E150411F85EB0148EF544152B81E1586E15041000000004BEF5441C3F528BC85E15041F6285C8F4DEF5441B81E850B84E15041C3F528DC4EEF5441A4703D2A79E150413D0AD7034FEF5441
+</a>
+
+<b>
+010600000001000000010300000001000000270000000DD55C326FE150416DCA91B852EF5441D4F7371970E15041C03840C054EF54412AF16D7270E150412DED128955EF54418D983C3F71E1504163E51D5657EF54415E0AD57871E1504123FB7DD557EF544101A8412572E15041632A79D457EF5441BC2F9B3172E150411C3E4AD457EF544119FC603572E150418EE83BD457EF5441694C6DE072E150414602B2D157EF54415930120A73E1504114C813D157EF544112A5DA0E74E15041D5EE34CD57EF5441C7FA801175E150418D305EC957EF544127024D007BE150411080D3B257EF5441898486207BE15041F10F59B257EF5441EC51B8BE7BE15041000000B057EF54418526091B80E15041B05506AD57EF544148DC656F80E15041F0BBCCAC57EF5441E1CA402780E150410FBFD5B754EF544175289C1A80E1504172022E3354EF544105A2080F80E15041E7D0B7B953EF54416390660B80E15041C8444A9453EF544122D8DD997FE15041850C5EEC4EEF5441DD1212637FE15041A1E425ED4EEF5441D81E66767EE150417A0C85F04EEF5441013C9C427DE150416B92E7F44EEF5441BB7B42C07AE1504124430EFE4EEF544121B04F4779E15041EF036D034FEF54419E61092C79E15041D07CD0034FEF54416AD7670779E150410186440C4FEF5441AE47E1DA78E15041713D0A174FEF5441643EBD5976E15041794D9BB04FEF5441A0FAE6E675E15041C41FE8CE4FEF5441A0AF53D473E15041E5DA297250EF5441A308A7F472E1504186F7A4B750EF544114AE476171E1504114AE475151EF544117E862B570E1504134F2BB9251EF5441E248F5F36FE15041B004D2DC51EF5441424704026FE1504191DABC4B52EF54410DD55C326FE150416DCA91B852EF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548755 - 4147179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000003D0AD7D3050F5141713D0A57582755415C8FC235070F51415C8FC2B55A2755413D0AD7D3050F514114AE47315C275541AE47E19A070F5141AE47E12A5E275541B81E854B080F5141F6285CBF5F27554152B81E55090F5141333333F35F275541713D0AB70E0F514114AE47C15D2755410AD7A3E0140F51411F85EBC154275541D7A3707D180F5141E17A143E4E27554166666656190F5141EC51B8DE4D275541B81E851B1E0F51411F85EB81442755419A9999D9200F5141E17A14FE3F275541666666C6220F514185EB51883D2755411F85EBB11E0F51413D0AD7F339275541CDCCCCFC180F51417B14AEE73E275541CDCCCCEC130F5141B81E85DB43275541AE47E10A0E0F51410AD7A3E0372755413D0AD7230B0F51418FC2F548332755411F85EB51070F5141000000302D27554185EB5188020F5141C3F5289C382755419A999919FD0E51417B14AE17442755413D0AD703FC0E514185EB51584627554114AE4791030F5141D7A370BD552755413D0AD7D3050F5141713D0A5758275541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000295C8F12170F5141B81E858B18275541713D0A27150F51417B14AEE715275541AE47E19A140F5141666666F617275541000000C0100F5141E17A144E242755413D0AD7230B0F51418FC2F54833275541AE47E10A0E0F51410AD7A3E037275541CDCCCCEC130F5141B81E85DB43275541E7740A93190F51413C4C734E4E27554163A9F9461C0F51417D8BF56148275541B447DC2B1E0F5141E6BF0467442755412E5771C91E0F51413AEF966343275541AD133CC1200F51416E5D312640275541666666C6220F514185EB51883D2755411F85EBB11E0F51413D0AD7F339275541D7A3702D200F514152B81EA5342755413D0AD773230F5141EC51B8FE2F27554152B81E55220F5141000000E02E275541295C8FC2270F5141295C8F722927554148E17A641E0F51419A9999F92027554152B81EF5190F5141333333231C275541295C8F12170F5141B81E858B18275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583793 - 407914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000018000000D7A370BDE2D05041295C8F325AFF544133333373F6D05041666666D65EFF5441B81E853BFED05041D7A3702D48FF54410AD7A370FED050413D0AD79347FF54415C8FC215FDD05041713D0A4747FF54417B14AE97FBD05041AE47E12A46FF54410AD7A3A0FAD05041C3F5286C45FF544148E17AD4F9D05041EC51B80E44FF5441CDCCCC1CF9D05041F6285CCF42FF54411F85EB81F8D0504114AE47C141FF5441EC51B89EF6D05041AE47E12A41FF5441E17A147EF5D0504148E17A8441FF544185EB5168F4D0504148E17A1442FF544100000050F3D05041B81E85EB42FF5441666666A6F2D05041B81E857B43FF544152B81EC5F1D05041713D0A9743FF544185EB51B8F0D05041E17A143E43FF5441666666D6EFD0504152B81E6542FF5441C3F528ECEED0504114AE471141FF5441E17A142EEED05041F6285C7F3FFF544185EB51A8EDD0504114AE47F13DFF5441333333D3ECD05041295C8F523CFF5441000000A0ECD05041A4703DEA3CFF5441D7A370BDE2D05041295C8F325AFF5441
+</a>
+
+<b>
+010600000001000000010300000001000000410000001B52187CF0D05041F5573E0443FF5441531865D6EFD05041531B206542FF5441668C28ECEED050414851481141FF5441FC67132EEED05041D0125C7F3FFF54418F7C50A8EDD050416A9B47F13DFF5441DBC532D3ECD0504121A090523CFF5441000000A0ECD05041A4703DEA3CFF5441FF844A0DE4D0504125A8A94F56FF5441C80C71BDE2D050415CB08E325AFF5441A2743373F6D05041E45E66D65EFF5441D53B419BFCD05041DFC3234760FF54416DC0EF4FFCD0504145EA071A61FF54418FC2F50802D15041713D0A9762FF544159A16D6D02D150411A85AAAE62FF5441E246993904D15041D944E01A63FF5441AC448FC203D15041789365A661FF5441CE25EA2104D15041B380A2305FFF544121951EC504D15041462D28FC5CFF544109726D0C05D15041DEADEEF55BFF54413D0AD76305D1504148E17AB45AFF5441E17A143E06D150411F85EB9158FF54411F85EB2107D15041295C8F8256FF54410AD7A31008D1504185EB516854FF544104E70A1709D15041AB68A07952FF54411F85EB2109D1504152B81E6552FF5441989A2F2B09D150411F37135552FF54410BCD98490AD1504121461F6550FF544106CBDAA80AD150419C36A2CE4FFF54411F85EBE10AD1504148E17A744FFF544159818AF30AD150413CB5A51F4FFF54413025B70E0BD150416121CE9C4EFF54414FB33CDA0AD150410AB26FBD4DFF5441BBC26F7D0AD15041E55951F84CFF5441CB00065C0AD150416277CDD94CFF544114AE47F109D1504185EB51784CFF5441AABC3C8B09D15041288DC5464CFF5441229170FD08D15041D4DAEC014CFF54411300F55008D15041F16A0CB84BFF54410AD7A3C007D15041A4703D7A4BFF5441CDCCCC9C05D150417B14AE974AFF54413C3CC14504D1504117D865064AFF5441A93590CF01D15041831FF3FD48FF544149C0A470FED05041236CD79347FF54414CFD011CFED05041372C1A8147FF54415C8FC215FDD05041713D0A4747FF54417B14AE97FBD05041AE47E12A46FF54410AD7A3A0FAD05041C3F5286C45FF5441E3BA962FFAD050417964A9AA44FF54419F0B7AD4F9D05041ECC3B80E44FF544126D68A6AF9D05041375A875643FF5441CDCCCC1CF9D05041F6285CCF42FF5441C9BFEB81F8D05041601448C141FF54410960B79EF6D05041120EE22A41FF544110125820F6D050415F1B1C5241FF5441E17A147EF5D0504148E17A8441FF544171DBE9D4F4D0504163782EDC41FF54413E985268F4D05041E31D7B1442FF544110520150F3D05041E68286EB42FF5441AC4330BEF2D05041FF7A526743FF5441666666A6F2D05041B81E857B43FF54417CE9B52CF2D0504100AE628A43FF54415E471EC5F1D05041411E0B9743FF5441C5E0B14BF1D0504135A3DA6E43FF544185EB51B8F0D05041E17A143E43FF54411B52187CF0D05041F5573E0443FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>549718 - 313478
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001000000048E17A14321F51410AD7A3F04D145541EC51B8EE371F5141AE47E18A4A145541666666D63E1F5141F6285CEF46145541C3F5280C411F514185EB514846145541EC51B88E4C1F51415C8FC2D544145541D7A3700D4C1F514148E17A44411455411F85EBF14B1F5141C3F5289C3D145541AE47E14A4C1F51410000005037145541D7A3706D4A1F5141B81E85EB38145541AE47E11A481F5141EC51B85E3A145541000000A0441F5141CDCCCC8C3B145541A4703D5A391F514114AE47813C1455415C8FC255351F514148E17AF43D145541A4703D2A2F1F5141713D0A57421455411F85EB712B1F5141E17A140E4714554148E17A14321F51410AD7A3F04D14554101030000000100000009000000B81E85EB431F5141CDCCCC4C6014554152B81ED5441F51411F85EB715F145541333333F34F1F51417B14AE374D145541333333A34C1F51418FC2F5C8451455413D0AD733411F51413D0AD71347145541D7A3703D3F1F51411F85EBA147145541EC51B85E381F5141A4703D3A4B145541A4703D9A321F5141CDCCCC8C4E145541B81E85EB431F5141CDCCCC4C60145541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C3F5280C411F514185EB514846145541BF9A3041451F51412A5CDFC045145541EC81A82B451F51415382E8C745145541858492BF4A1F5141133C301A451455410AB5C8E04A1F514195035EFA451455413D0AD733411F51413D0AD71347145541D7A3703D3F1F51411F85EBA147145541EC51B85E381F5141A4703D3A4B145541A4703D9A321F5141CDCCCC8C4E145541B81E85EB431F5141CDCCCC4C6014554152B81ED5441F51411F85EB715F145541333333F34F1F51417B14AE374D145541333333A34C1F51418FC2F5C84514554128D80DA84B1F514153EBC2E945145541A36921A74B1F51413D9273E545145541C7B899734B1F5141CF7B5DF944145541EC51B88E4C1F51415C8FC2D544145541D7A3700D4C1F514148E17A44411455411F85EBF14B1F5141C3F5289C3D145541AE47E14A4C1F51410000005037145541D7A3706D4A1F5141B81E85EB38145541AE47E11A481F5141EC51B85E3A145541000000A0441F5141CDCCCC8C3B145541A4703D5A391F514114AE47813C1455415C8FC255351F514148E17AF43D145541A4703D2A2F1F5141713D0A57421455411F85EB712B1F5141E17A140E4714554148E17A14321F51410AD7A3F04D1455418FEF061A321F5141B4776BED4D145541BB815A19321F51416E1F95EC4D145541EC51B8EE371F5141AE47E18A4A145541666666D63E1F5141F6285CEF46145541C3F5280C411F514185EB514846145541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>549770 - 2994112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000D000000CDCCCC9C9F1151415C8FC2550A18554114AE4741A4115141C3F5281C081855415C8FC245A711514166666676061855419A9999E9A81151415C8FC2A50518554152B81E95AC115141CDCCCC4C03185541AE47E10AAC115141CDCCCCDC0218554114AE47F1A6115141EC51B87EFF175541A4703D0A9F11514152B81E25F8175541713D0AF79811514152B81EB5FC1755419A99998992115141F6285C6F01185541713D0A07981151417B14AE070718554152B81E459C115141295C8FE20B185541CDCCCC9C9F1151415C8FC2550A1855410103000000010000002C000000AE47E11AB01151416666662606185541A4703D4AAD1151418FC2F5E80318554114AE4751AB115141AE47E1EA041855411F85EBB1AA11514114AE47510518554114AE4771A71151413D0AD7530718554114AE4741A4115141E17A140E09185541D7A370FD9F11514185EB51280B185541333333D39C1151415C8FC2850C185541A4703D1A9A115141295C8F820D1855419A999979961151415C8FC2950E1855419A9999E99311514148E17A340F1855417B14AEB7921151410AD7A3900F1855415C8FC2258F115141B81E859B101855413D0AD7938A115141AE47E19A141855415C8FC29586115141EC51B84E181855415C8FC215821151418FC2F5381C1855413333339380115141333333C323185541713D0A977F115141EC51B8BE29185541C3F5288C7E1151418FC2F5182E185541F6285CEF82115141713D0A372E185541CDCCCCFC851151417B14AED72E18554185EB514888115141333333D32F185541AE47E1BA8A1151411F85EB31321855410AD7A3808C1151415C8FC2A534185541C3F5289C8C11514148E17A6436185541EC51B84E8C1151410000000038185541C3F528AC91115141295C8F423218554114AE476198115141B81E852B2B185541666666E69E1151413333339324185541C3F5281C9F115141C3F5285C24185541F6285CBF9F1151413D0AD723261855418FC2F5E8A2115141D7A3701D32185541A4703D7AA4115141000000C02B18554148E17AC4A71151413D0AD7232218554133333373A9115141E17A14EE1D185541AE47E13AAD115141E17A14DE151855417B14AE57B01151415C8FC2650F185541B81E85CBB11151417B14AE170C185541B81E85EBB1115141713D0A070B1855410AD7A3F0B1115141666666360A185541D7A3709DB1115141EC51B80E091855417B14AE37B1115141713D0AE707185541D7A370CDB01151418FC2F50807185541AE47E11AB01151416666662606185541
+</a>
+
+<b>
+01060000000100000001030000000100000041000000699A999A7E1151419F0DACDC2D185541C2841C7F7F115141558125FF2B185541090D8A458011514151AFE4472A1855411A63C51781115141D398827628185541AE0FB8B081115141C93778A627185541A9D5C67882115141D453ADA62618554144BF78D78311514157E91DE7241855418A6AF31D8511514193AF7BA823185541C97CAE6A86115141FA46AC6F221855419769F543871151416C41769B21185541459C99B787115141C8B3F81A211855415E359705891151413AEDDEA71F1855416A60E14E8A11514140F673291E1855414E36649A8B11514140AD49A41C185541D3F2563A8E115141818929951918554120DE097E8F115141ACD79E2B1818554133E559179011514139D24A8D17185541176B00B591115141B54AA8F4151855414FAC3F3693115141F645425414185541F68B1F2D9411514122D34E5513185541EC60B0789511514165E106571218554179AA40D196115141E8D5DE4F11185541661F438D971151416051E3C510185541AB97115B9811514165C24D4B101855415D2082D599115141E0F5E4690F185541A4DB07049C115141C6E19E240E1855419EBE53949D115141BBB9A6450D1855414B99D0E39E1151418AE3038B0C1855417134F415A011514183C4B4E00B18554139DD83CD9F1151411BE443E70B1855413CDE04A09F1151415DEDC9DE0B185541E2B79D229E115141C81FBF570C18554115A1EF249C115141E773BC060D185541B08DCD149B115141A6E049740D1855416AF7EDAB991151416AA6C3FF0D185541A790141E98115141EE817D5E0E185541DD5D1E2B96115141B8CE7BE10E18554170BBBE1695115141B328F0370F1855418440272394115141284C23840F1855412E6BAFB29211514179CC97CF0F185541620EC3219211514179CC97CF0F1855419C50A130911151410EACF40F101855415813C104901151413F9DFF5F101855414C826B398F11514146BA4596101855415C8FC2258F115141B81E859B10185541726A96F38C115141BD61448712185541EC6E2D038B1151415F7B7D3914185541C042D2088911514184BD3409161855417FD6273E8711514101568EB217185541F7037D6B851151413C6237521918554116FBC2E5831151415B5047A51A18554112C1A6E682115141977839831B1855415C8FC215821151418FC2F5381C185541A5238BD98111514164C6A4651D185541390CA8808111514153897D211F185541C914FD4281115141D8D16B5520185541FEA729ED801151414170FB0122185541B72B5E80801151410639943524185541774B9F358011514117E28DFB251855416CDE36F77F115141685E987627185541F458679E7F11514171ECFE9129185541066EEC567F1151412E6DC6CA2A185541701AB90F7F115141186672F42B18554133A231E47E115141BC816EAA2C185541699A999A7E1151419F0DACDC2D185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>549770 - 3457355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000D000000CDCCCC9C9F1151415C8FC2550A18554114AE4741A4115141C3F5281C081855415C8FC245A711514166666676061855419A9999E9A81151415C8FC2A50518554152B81E95AC115141CDCCCC4C03185541AE47E10AAC115141CDCCCCDC0218554114AE47F1A6115141EC51B87EFF175541A4703D0A9F11514152B81E25F8175541713D0AF79811514152B81EB5FC1755419A99998992115141F6285C6F01185541713D0A07981151417B14AE070718554152B81E459C115141295C8FE20B185541CDCCCC9C9F1151415C8FC2550A1855410103000000010000002C000000AE47E11AB01151416666662606185541A4703D4AAD1151418FC2F5E80318554114AE4751AB115141AE47E1EA041855411F85EBB1AA11514114AE47510518554114AE4771A71151413D0AD7530718554114AE4741A4115141E17A140E09185541D7A370FD9F11514185EB51280B185541333333D39C1151415C8FC2850C185541A4703D1A9A115141295C8F820D1855419A999979961151415C8FC2950E1855419A9999E99311514148E17A340F1855417B14AEB7921151410AD7A3900F1855415C8FC2258F115141B81E859B101855413D0AD7938A115141AE47E19A141855415C8FC29586115141EC51B84E181855415C8FC215821151418FC2F5381C1855413333339380115141333333C323185541713D0A977F115141EC51B8BE29185541C3F5288C7E1151418FC2F5182E185541F6285CEF82115141713D0A372E185541CDCCCCFC851151417B14AED72E18554185EB514888115141333333D32F185541AE47E1BA8A1151411F85EB31321855410AD7A3808C1151415C8FC2A534185541C3F5289C8C11514148E17A6436185541EC51B84E8C1151410000000038185541C3F528AC91115141295C8F423218554114AE476198115141B81E852B2B185541666666E69E1151413333339324185541C3F5281C9F115141C3F5285C24185541F6285CBF9F1151413D0AD723261855418FC2F5E8A2115141D7A3701D32185541A4703D7AA4115141000000C02B18554148E17AC4A71151413D0AD7232218554133333373A9115141E17A14EE1D185541AE47E13AAD115141E17A14DE151855417B14AE57B01151415C8FC2650F185541B81E85CBB11151417B14AE170C185541B81E85EBB1115141713D0A070B1855410AD7A3F0B1115141666666360A185541D7A3709DB1115141EC51B80E091855417B14AE37B1115141713D0AE707185541D7A370CDB01151418FC2F50807185541AE47E11AB01151416666662606185541
+</a>
+
+<b>
+01060000000100000001030000000100000041000000699A999A7E1151419F0DACDC2D185541C2841C7F7F115141558125FF2B185541090D8A458011514151AFE4472A1855411A63C51781115141D398827628185541AE0FB8B081115141C93778A627185541A9D5C67882115141D453ADA62618554144BF78D78311514157E91DE7241855418A6AF31D8511514193AF7BA823185541C97CAE6A86115141FA46AC6F221855419769F543871151416C41769B21185541459C99B787115141C8B3F81A211855415E359705891151413AEDDEA71F1855416A60E14E8A11514140F673291E1855414E36649A8B11514140AD49A41C185541D3F2563A8E115141818929951918554120DE097E8F115141ACD79E2B1818554133E559179011514139D24A8D17185541176B00B591115141B54AA8F4151855414FAC3F3693115141F645425414185541F68B1F2D9411514122D34E5513185541EC60B0789511514165E106571218554179AA40D196115141E8D5DE4F11185541661F438D971151416051E3C510185541AB97115B9811514165C24D4B101855415D2082D599115141E0F5E4690F185541A4DB07049C115141C6E19E240E1855419EBE53949D115141BBB9A6450D1855414B99D0E39E1151418AE3038B0C1855417134F415A011514183C4B4E00B18554139DD83CD9F1151411BE443E70B1855413CDE04A09F1151415DEDC9DE0B185541E2B79D229E115141C81FBF570C18554115A1EF249C115141E773BC060D185541B08DCD149B115141A6E049740D1855416AF7EDAB991151416AA6C3FF0D185541A790141E98115141EE817D5E0E185541DD5D1E2B96115141B8CE7BE10E18554170BBBE1695115141B328F0370F1855418440272394115141284C23840F1855412E6BAFB29211514179CC97CF0F185541620EC3219211514179CC97CF0F1855419C50A130911151410EACF40F101855415813C104901151413F9DFF5F101855414C826B398F11514146BA4596101855415C8FC2258F115141B81E859B10185541726A96F38C115141BD61448712185541EC6E2D038B1151415F7B7D3914185541C042D2088911514184BD3409161855417FD6273E8711514101568EB217185541F7037D6B851151413C6237521918554116FBC2E5831151415B5047A51A18554112C1A6E682115141977839831B1855415C8FC215821151418FC2F5381C185541A5238BD98111514164C6A4651D185541390CA8808111514153897D211F185541C914FD4281115141D8D16B5520185541FEA729ED801151414170FB0122185541B72B5E80801151410639943524185541774B9F358011514117E28DFB251855416CDE36F77F115141685E987627185541F458679E7F11514171ECFE9129185541066EEC567F1151412E6DC6CA2A185541701AB90F7F115141186672F42B18554133A231E47E115141BC816EAA2C185541699A999A7E1151419F0DACDC2D185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>550180 - 415766
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000002000000010300000002000000380000009A9999F9761C5141295C8FA2B72355419A9999497A1C514166666686AE235541EC51B89E7A1C514166666696AC235541B81E853B7A1C51410AD7A390AC235541B81E850B791C5141F6285C8FAC2355417B14AE07791C5141C3F5283CAD2355418FC2F588771C5141713D0A37AD235541AE47E18A771C5141CDCCCC8CAC23554148E17A34721C51415C8FC285AC235541AE47E13A721C5141000000A0A82355413D0AD743721C51413D0AD703A123554133333323721C51410AD7A3609E23554148E17AA4701C51415C8FC2059E235541666666266E1C514148E17A749C2355419A9999F96C1C514185EB51089B2355417B14AEA76C1C51415C8FC2A59823554148E17A346C1C5141295C8FC295235541E17A14EE6A1C514185EB51289323554100000060691C51417B14AE1794235541D7A3707D681C5141333333438E235541E17A144E681C5141333333B38C2355411F85EB41641C5141295C8FF28C23554148E17AB4601C51410AD7A3D08D235541666666465D1C5141713D0A678D235541000000005B1C51419A9999498C235541713D0A37591C51411F85EBC18A235541000000F0501C5141000000A08B235541B81E85DB501C514152B81E858323554148E17AD44D1C5141F6285C3F84235541E17A146E481C51410000005086235541295C8FC2421C5141D7A370AD882355411F85EBA13A1C51413D0AD7738C2355418FC2F598371C514114AE47D18D235541D7A370DD3B1C5141A4703DAA932355411F85EB01441C51419A9999A990235541713D0AF74B1C5141AE47E1DA8D2355418FC2F5584D1C5141C3F5289C91235541C3F5288C4E1C51418FC2F55895235541D7A3703D531C514152B81E9591235541D7A370FD541C51411F85EBE18F235541713D0A57561C5141713D0AD792235541AE47E10A581C5141EC51B8FE962355417B14AEA75B1C5141E17A148E9F235541F6285C6F591C5141F6285C8FA0235541F6285C1F571C5141B81E852BA023554185EB51D8511C51413D0AD7939C2355417B14AE07501C514148E17A149C23554148E17AE4511C5141F6285C2F9F235541AE47E1CA541C5141C3F528CCA3235541713D0A97571C5141713D0AE7A72355410AD7A3F05B1C514133333353AA235541B81E851B621C5141CDCCCC7CAD2355418FC2F5286F1C5141EC51B8CEB6235541C3F5289C6F1C5141295C8FA2B723554133333393751C5141B81E854BBA2355419A9999F9761C5141295C8FA2B72355410500000052B81E255B1C5141AE47E16AA82355411F85EB415C1C5141E17A141EA9235541EC51B8AE5B1C5141B81E850BAA2355410AD7A3905A1C51417B14AE57A923554152B81E255B1C5141AE47E16AA82355410103000000010000001000000085EB51B8331C514152B81EC5832355411F85EBD1361C5141EC51B89E8C235541EC51B8EE371C5141B81E858B8C235541C3F5285C3A1C514185EB51B88B23554152B81E05401C5141B81E852B892355417B14AEA7421C51415C8FC20588235541A4703D8A481C51419A999999852355411F85EB01471C514148E17AC47C235541D7A3704D461C5141295C8FB278235541CDCCCC1C461C514185EB51987723554185EB5118451C5141AE47E1BA71235541EC51B8DE431C51411F85EBE168235541000000603E1C5141F6285C1F66235541000000603F1C514133333313722355419A9999A9401C51417B14AE377E23554185EB51B8331C514152B81EC583235541
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000000000603E1C5141F6285C1F66235541996AE1693E1C51416B0275956623554152E9587B3E1C5141B98D3A6667235541A0530FA73E1C5141E9FDB3706923554145FF0AB63E1C5141E3D7C9236A2355417A91ACC13E1C51412143CFAE6A235541CE6C85DB3E1C5141173EBFE36B2355417088E1E63E1C51411267866B6C235541F8F2AFEE3E1C5141BE78D4C86C23554116EFA8073F1C51416F9F50F36D2355410169D21C3F1C5141F40141F06E235541A09B32363F1C5141A2CF8E1F70235541E5087C533F1C514123CE9B7D71235541BD745B5B3F1C5141BE20B5DB71235541970252613F1C514113FFA61F722355419388BD763F1C51415C7AAAE9722355419A9999A9401C51417B14AE377E23554185EB51B8331C514152B81EC5832355411F85EBD1361C5141EC51B89E8C235541D6550F19371C5141A38EEC998C2355412042BF85371C51417EC998928C235541EC51B8EE371C5141B81E858B8C235541FF4E3349391C5141AB40C4158C23554153384D1B3A1C514132CC5CCE8B235541F7319F4F3A1C5141FAC694BC8B2355410203B2823A1C5141FA6AF5A68B2355415EC0A2493B1C5141B27D544D8B235541BF040FB53C1C5141B9DB98A98A23554152B81E05401C5141B81E852B8923554133A077EA401C5141B598A4C7882355417B14AEA7421C51415C8FC20588235541C9518EA8421C51410D41660588235541A4703D8A481C51419A999999852355411F85EB01471C514148E17AC47C235541D7A3704D461C5141295C8FB278235541CDCCCC1C461C514185EB51987723554185EB5118451C5141AE47E1BA71235541EC51B8DE431C51411F85EBE168235541B38AEE0C431C514114768C78682355410E08DE2A421C5141D78E00076823554113BDBAA5401C51414C4C8C4367235541E4575CBF3E1C514160DD414F66235541000000603E1C5141F6285C1F66235541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>553004 - 984467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441B81E85DB9AE150418FC2F51895F05441666666B681E150413D0AD7B394F054417B14AE7780E15041C3F5286CA0F05441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955962 - 777252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441209EE488C86151415D17F48AB08654414D1FDCACC86151413096FC66B0865441D4A2C218C9615141F2A1A7CEB1865441B52898CCC96151415AAB63EEB28654414AB34B10CB61514168B230C6B3865441479E46D9D7615141A33AF5C1B48654413C9D3CC2DB6151416EAADF9FB5865441528C142FDE615141A37820C0B5865441C614AD06E061514178AFE272B286544161B24637E3615141C7349F36AE865441A786FF4AE86151412537FF8FA88654419019388DF1615141F31B42859F86544193BF9880FA615141B1B0946A94865441E16CA5540562514168F92B3487865441BE0363CB0A625141B466BFBB82865441AFAEF94009625141DB4DA25D818654410467415705625141E96D751E7F865441D9D6F2C2FE6151414B808EA77B865441
+</a>
+
+<b>
+010600000001000000010300000001000000560000003A802ED795615141665C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544156D72951BD615141F075DC5D7786544114AE4711CD615141F6285C7F76865441433ED250D76151416A431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B0A32174DC615141407D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441C4570ADFD561514126F49EB395865441E17A145ECE6151415C8FC23596865441295C8F52CC61514152B81E55968654415C8FC2C5CB615141D7A3707DA286544114AE47D1C5615141713D0A97A4865441EC51B85EC76151410AD7A3B0AB86544166666646C8615141D7A3703DAF8654413D0AD793C8615141F6285C5FB08654418FC2F5C8C96151415C8FC285AC8654411F85EBB1CE6151410AD7A340A6865441E17A14BED8615141F6285CBF97865441E17A14AEE86151413D0AD76381865441E17A14AEF06151417B14AE677686544185EB51F8F8615141E17A14EE788654417B14AE7701625141D7A370ED7C8654410000002009625141295C8F428186544148E17AF40A625141333333C3828654410AD7A3F00C62514148E17A54818654419A99997905625141C3F5282C7D865441AE47E1FA04625141C3F528BC7C86544185EB51780462514152B81E657C865441A4703D1A04625141F6285CEF7B865441000000C003625141EC51B86E7B8654410000001003625141D7A3701D7B8654413D0AD75302625141713D0AB77A865441A4703DDA01625141F6285CEF7986544114AE47210162514185EB51F878865441295C8F2201625141E17A141E78865441A4703DDA00625141A4703D7A778654419A999989006251415C8FC225778654417B14AEC7FF6151417B14AEC7768654410AD7A340006251415C8FC275758654418FC2F568FE6151413D0AD7E3748654417B14AEE7FD615141295C8FE274865441295C8FA2FD615141CDCCCCFC748654415C8FC245FD6151415C8FC2C574865441F6285C7FFC615141CDCCCC8C7486544152B81EC5FB61514185EB5118748654417B14AE77FA6151418FC2F588738654413D0AD753F96151415C8FC26573865441EC51B8CEF86151415C8FC26573865441F6285C5FF8615141EC51B83E7386544185EB5198F761514185EB511872865441B81E850BF66151410AD7A3E071865441D7A370BDF4615141EC51B8DE7086544166666606F26151413D0AD73370865441751B5694EE6151417F3303937086544159126F9ED6615141B1641AB7718654412F9912DFCD6151417D85D4797286544133333383C6615141D7A3702D738654413D0AD723C3615141A4703D9A728654418FDC5FC3C1615141163DC2A5728654412C91E6AABB615141AAF6B4BC7286544145BC1B42B5615141C956F749728654416AC0F72DB16151418683CF8E72865441C810609CAF61514150E0489A72865441FDD0E4B6AE615141E4993BB172865441CDCCCCFCAC615141000000E07286544152B81E85AB615141E17A142E73865441666666E6A9615141A4703DFA73865441333333C3A661514166666666758654417B14AE57A561514185EB51B8758654417B14AE07A361514185EB510876865441A4703DDA9F6151418FC2F56876865441713D0AF797615141713D0A6776865441B81E859B92615141B81E85EB768654410AD7A3D08E6151419A99990977865441713D0A6788615141713D0A2779865441713D0AA78A615141B81E859B7A865441CF4E65B68B61514168DC5A6F7B86544185EB51288C61514152B81E557B8654413A802ED795615141665C036F7A865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955962 - 1274989
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441209EE488C86151415D17F48AB08654414D1FDCACC86151413096FC66B0865441D4A2C218C9615141F2A1A7CEB1865441B52898CCC96151415AAB63EEB28654414AB34B10CB61514168B230C6B3865441479E46D9D7615141A33AF5C1B48654413C9D3CC2DB6151416EAADF9FB5865441528C142FDE615141A37820C0B5865441C614AD06E061514178AFE272B286544161B24637E3615141C7349F36AE865441A786FF4AE86151412537FF8FA88654419019388DF1615141F31B42859F86544193BF9880FA615141B1B0946A94865441E16CA5540562514168F92B3487865441BE0363CB0A625141B466BFBB82865441AFAEF94009625141DB4DA25D818654410467415705625141E96D751E7F865441D9D6F2C2FE6151414B808EA77B865441
+</a>
+
+<b>
+010600000001000000010300000001000000560000003B802ED795615141615C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544154D72951BD615141ED75DC5D7786544114AE4711CD615141F6285C7F76865441463ED250D761514168431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B4A32174DC6151413C7D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441C8570ADFD561514121F49EB395865441E17A145ECE6151415C8FC23596865441295C8F52CC61514152B81E55968654415C8FC2C5CB615141D7A3707DA286544114AE47D1C5615141713D0A97A4865441EC51B85EC76151410AD7A3B0AB86544166666646C8615141D7A3703DAF8654413D0AD793C8615141F6285C5FB08654418FC2F5C8C96151415C8FC285AC8654411F85EBB1CE6151410AD7A340A6865441E17A14BED8615141F6285CBF97865441E17A14AEE86151413D0AD76381865441E17A14AEF06151417B14AE677686544185EB51F8F8615141E17A14EE788654417B14AE7701625141D7A370ED7C8654410000002009625141295C8F428186544148E17AF40A625141333333C3828654410AD7A3F00C62514148E17A54818654419A99997905625141C3F5282C7D865441AE47E1FA04625141C3F528BC7C86544185EB51780462514152B81E657C865441A4703D1A04625141F6285CEF7B865441000000C003625141EC51B86E7B8654410000001003625141D7A3701D7B8654413D0AD75302625141713D0AB77A865441A4703DDA01625141F6285CEF7986544114AE47210162514185EB51F878865441295C8F2201625141E17A141E78865441A4703DDA00625141A4703D7A778654419A999989006251415C8FC225778654417B14AEC7FF6151417B14AEC7768654410AD7A340006251415C8FC275758654418FC2F568FE6151413D0AD7E3748654417B14AEE7FD615141295C8FE274865441295C8FA2FD615141CDCCCCFC748654415C8FC245FD6151415C8FC2C574865441F6285C7FFC615141CDCCCC8C7486544152B81EC5FB61514185EB5118748654417B14AE77FA6151418FC2F588738654413D0AD753F96151415C8FC26573865441EC51B8CEF86151415C8FC26573865441F6285C5FF8615141EC51B83E7386544185EB5198F761514185EB511872865441B81E850BF66151410AD7A3E071865441D7A370BDF4615141EC51B8DE7086544166666606F26151413D0AD73370865441751B5694EE6151417C330393708654415C126F9ED6615141B0641AB7718654412A9912DFCD6151417E85D4797286544133333383C6615141D7A3702D738654413D0AD723C3615141A4703D9A7286544194DC5FC3C1615141113DC2A5728654412F91E6AABB615141ADF6B4BC7286544149BC1B42B5615141C456F749728654416BC0F72DB16151418183CF8E72865441CC10609CAF6151414EE0489A72865441FBD0E4B6AE615141DF993BB172865441CDCCCCFCAC615141000000E07286544152B81E85AB615141E17A142E73865441666666E6A9615141A4703DFA73865441333333C3A661514166666666758654417B14AE57A561514185EB51B8758654417B14AE07A361514185EB510876865441A4703DDA9F6151418FC2F56876865441713D0AF797615141713D0A6776865441B81E859B92615141B81E85EB768654410AD7A3D08E6151419A99990977865441713D0A6788615141713D0A2779865441713D0AA78A615141B81E859B7A865441CF4E65B68B61514165DC5A6F7B86544185EB51288C61514152B81E557B8654413B802ED795615141615C036F7A865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955962 - 4027096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441209EE488C86151415D17F48AB08654414D1FDCACC86151413096FC66B0865441D4A2C218C9615141F2A1A7CEB1865441B52898CCC96151415AAB63EEB28654414AB34B10CB61514168B230C6B3865441479E46D9D7615141A33AF5C1B48654413C9D3CC2DB6151416EAADF9FB5865441528C142FDE615141A37820C0B5865441C614AD06E061514178AFE272B286544161B24637E3615141C7349F36AE865441A786FF4AE86151412537FF8FA88654419019388DF1615141F31B42859F86544193BF9880FA615141B1B0946A94865441E16CA5540562514168F92B3487865441BE0363CB0A625141B466BFBB82865441AFAEF94009625141DB4DA25D818654410467415705625141E96D751E7F865441D9D6F2C2FE6151414B808EA77B865441
+</a>
+
+<b>
+010600000001000000010300000001000000560000003B802ED795615141615C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544154D72951BD615141ED75DC5D7786544114AE4711CD615141F6285C7F76865441463ED250D761514168431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B4A32174DC6151413C7D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441C8570ADFD561514121F49EB395865441E17A145ECE6151415C8FC23596865441295C8F52CC61514152B81E55968654415C8FC2C5CB615141D7A3707DA286544114AE47D1C5615141713D0A97A4865441EC51B85EC76151410AD7A3B0AB86544166666646C8615141D7A3703DAF8654413D0AD793C8615141F6285C5FB08654418FC2F5C8C96151415C8FC285AC8654411F85EBB1CE6151410AD7A340A6865441E17A14BED8615141F6285CBF97865441E17A14AEE86151413D0AD76381865441E17A14AEF06151417B14AE677686544185EB51F8F8615141E17A14EE788654417B14AE7701625141D7A370ED7C8654410000002009625141295C8F428186544148E17AF40A625141333333C3828654410AD7A3F00C62514148E17A54818654419A99997905625141C3F5282C7D865441AE47E1FA04625141C3F528BC7C86544185EB51780462514152B81E657C865441A4703D1A04625141F6285CEF7B865441000000C003625141EC51B86E7B8654410000001003625141D7A3701D7B8654413D0AD75302625141713D0AB77A865441A4703DDA01625141F6285CEF7986544114AE47210162514185EB51F878865441295C8F2201625141E17A141E78865441A4703DDA00625141A4703D7A778654419A999989006251415C8FC225778654417B14AEC7FF6151417B14AEC7768654410AD7A340006251415C8FC275758654418FC2F568FE6151413D0AD7E3748654417B14AEE7FD615141295C8FE274865441295C8FA2FD615141CDCCCCFC748654415C8FC245FD6151415C8FC2C574865441F6285C7FFC615141CDCCCC8C7486544152B81EC5FB61514185EB5118748654417B14AE77FA6151418FC2F588738654413D0AD753F96151415C8FC26573865441EC51B8CEF86151415C8FC26573865441F6285C5FF8615141EC51B83E7386544185EB5198F761514185EB511872865441B81E850BF66151410AD7A3E071865441D7A370BDF4615141EC51B8DE7086544166666606F26151413D0AD73370865441751B5694EE6151417C330393708654415C126F9ED6615141B0641AB7718654412A9912DFCD6151417E85D4797286544133333383C6615141D7A3702D738654413D0AD723C3615141A4703D9A7286544194DC5FC3C1615141113DC2A5728654412F91E6AABB615141ADF6B4BC7286544149BC1B42B5615141C456F749728654416BC0F72DB16151418183CF8E72865441CC10609CAF6151414EE0489A72865441FBD0E4B6AE615141DF993BB172865441CDCCCCFCAC615141000000E07286544152B81E85AB615141E17A142E73865441666666E6A9615141A4703DFA73865441333333C3A661514166666666758654417B14AE57A561514185EB51B8758654417B14AE07A361514185EB510876865441A4703DDA9F6151418FC2F56876865441713D0AF797615141713D0A6776865441B81E859B92615141B81E85EB768654410AD7A3D08E6151419A99990977865441713D0A6788615141713D0A2779865441713D0AA78A615141B81E859B7A865441CF4E65B68B61514165DC5A6F7B86544185EB51288C61514152B81E557B8654413B802ED795615141615C036F7A865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>555101 - 253826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000EC51B8FE9EE1504152B81E854AF1544133333323A1E15041713D0AE75DF1544166666696AFE15041EC51B8EE5EF154413D0AD7B3BCE15041EC51B81E5EF154413D0AD7C3C2E150418FC2F5785DF15441EC51B87EC4E1504152B81E555CF15441CDCCCC5CC3E15041AE47E16A43F154417B14AE57AEE15041713D0AA73EF15441CDCCCCECA2E1504185EB51283CF15441C3F5284C9DE150410AD7A3303BF15441EC51B8FE9EE1504152B81E854AF15441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000A2009E4A9EE15041311F635C3BF15441FA4D9B0F9EE1504193EC3D523BF154419A8144F49DE150412A1F407B3BF1544119B14B519EE150412762D7F33DF1544154A7C374C3E150411B7775F245F1544182B0964FC3E15041DC97E26743F15441D2C13912C3E15041988DF95943F1544162EC1F02C3E15041E52D535643F15441233DF6799FE150418D0F8A903BF15441A2009E4A9EE15041311F635C3BF15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556230 - 1519334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441F6285C8F43C15041AE47E15AF9C7544114AE47D141C1504133333353FAC754417B14AE773FC150410AD7A340FAC75441F6285C4F3EC15041AE47E11AF8C754419A9999C93CC1504148E17A84F4C7544148E17A7438C15041713D0AF7F4C7544114AE47A131C15041D7A370BDF8C7544185EB51282FC150417B14AEE7F9C75441713D0A872DC15041713D0A97F9C75441C3F528AC2BC15041EC51B85EF7C754411F85EB712CC1504114AE47E1F2C75441713D0A272CC150419A9999F9F0C7544185EB51482BC15041CDCCCCDCEFC754419A99994928C15041F6285CBFEFC75441CDCCCCAC28C15041A4703D8AF2C754410AD7A36029C1504185EB51E8FBC75441666666562AC150418FC2F5B808C85441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441C446EBB343C1504149D44944FBC7544122F506B243C15041505AF62AFBC7544145D6443942C15041D3429E49FBC75441F85D3F083FC15041D3429E49FBC754416B93E4813DC15041D0663A1CFBC75441BE312DBA3CC150413575120AFBC75441DF7FC7D139C15041FE91C2E5FAC754412165BE2A36C1504163A09AD3FAC754417471820F31C1504191CB229DFAC75441D83698D32EC15041F6D9FA8AFAC75441CF350E4F2CC15041C1D20E94FAC75441F0CC6A902BC15041C1D20E94FAC7544116402BFF2AC15041C1D20E94FAC7544109ACFF762AC15041C1D20E94FAC754413888664729C15041BF7BC397FAC754412AD8FB4D29C150412B508CEFFAC754418AC1AB4F29C15041A1A50B06FBC754410AD7A36029C1504185EB51E8FBC75441666666562AC150418FC2F5B808C85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556230 - 3330806
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441F6285C8F43C15041AE47E15AF9C7544114AE47D141C1504133333353FAC754417B14AE773FC150410AD7A340FAC75441F6285C4F3EC15041AE47E11AF8C754419A9999C93CC1504148E17A84F4C7544148E17A7438C15041713D0AF7F4C7544114AE47A131C15041D7A370BDF8C7544185EB51282FC150417B14AEE7F9C75441713D0A872DC15041713D0A97F9C75441C3F528AC2BC15041EC51B85EF7C754411F85EB712CC1504114AE47E1F2C75441713D0A272CC150419A9999F9F0C7544185EB51482BC15041CDCCCCDCEFC754419A99994928C15041F6285CBFEFC75441CDCCCCAC28C15041A4703D8AF2C754410AD7A36029C1504185EB51E8FBC75441666666562AC150418FC2F5B808C85441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441C446EBB343C1504149D44944FBC7544122F506B243C15041505AF62AFBC7544145D6443942C15041D3429E49FBC75441F85D3F083FC15041D3429E49FBC754416B93E4813DC15041D0663A1CFBC75441BE312DBA3CC150413575120AFBC75441DF7FC7D139C15041FE91C2E5FAC754412165BE2A36C1504163A09AD3FAC754417471820F31C1504191CB229DFAC75441D83698D32EC15041F6D9FA8AFAC75441CF350E4F2CC15041C1D20E94FAC75441F0CC6A902BC15041C1D20E94FAC7544116402BFF2AC15041C1D20E94FAC7544109ACFF762AC15041C1D20E94FAC754413888664729C15041BF7BC397FAC754412AD8FB4D29C150412B508CEFFAC754418AC1AB4F29C15041A1A50B06FBC754410AD7A36029C1504185EB51E8FBC75441666666562AC150418FC2F5B808C85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556339 - 2983001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001E000000CDCCCCDCBAA35041EC51B82E96F254418FC2F518C0A35041CDCCCC0C92F254411F85EB01C8A3504185EB51488DF25441F6285C2FCEA35041EC51B80E8AF25441D7A370DDE4A35041CDCCCC3C7FF25441C3F528BCE8A35041B81E856B7DF254411F85EBB1CEA350419A99992971F254413D0AD7C3CDA35041B81E85CB70F2544100000020CEA35041CDCCCCDC6FF25441295C8F42D4A350418FC2F5F85FF2544185EB5188C0A3504148E17A5458F254411F85EBC1ACA35041AE47E1AA50F2544114AE47F1ABA350413D0AD7F351F25441AE47E13AABA3504114AE47E151F254419A9999A987A35041E17A144E46F254411F85EBD183A35041295C8F0253F25441C3F528CC83A350413D0AD71353F25441713D0AD780A35041CDCCCC7C5CF25441333333337EA350411F85EB0166F254417B14AE877CA3504152B81EF56EF25441D7A3700D7BA350415C8FC25579F25441F6285C7F7AA35041F6285C3F83F2544185EB51587AA35041CDCCCC1C8EF25441333333437BA35041A4703D7A8FF25441B81E85BB91A35041F6285C2F98F25441666666869FA35041666666869DF2544133333373ABA3504152B81E25A2F25441C3F5286CAEA35041B81E854BA3F2544185EB5188B6A35041333333439AF25441CDCCCCDCBAA35041EC51B82E96F25441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B81E85CBEDA35041C3F5281C1BF254416B8D581AE8A3504113914A8119F25441A1F9A548D9A35041634E65E614F25441F21DA1E7D3A35041CB0D083512F254417D0049C5C8A3504153A5920B2FF25441E2E98F23B8A350414E29A61D5AF2544124541999D1A35041974A49F963F25441B68C33DCD2A350413E1A219963F25441353B5A6AEEA35041E545663B1CF25441B81E85CBEDA35041C3F5281C1BF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556339 - 3438611
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001E000000CDCCCCDCBAA35041EC51B82E96F254418FC2F518C0A35041CDCCCC0C92F254411F85EB01C8A3504185EB51488DF25441F6285C2FCEA35041EC51B80E8AF25441D7A370DDE4A35041CDCCCC3C7FF25441C3F528BCE8A35041B81E856B7DF254411F85EBB1CEA350419A99992971F254413D0AD7C3CDA35041B81E85CB70F2544100000020CEA35041CDCCCCDC6FF25441295C8F42D4A350418FC2F5F85FF2544185EB5188C0A3504148E17A5458F254411F85EBC1ACA35041AE47E1AA50F2544114AE47F1ABA350413D0AD7F351F25441AE47E13AABA3504114AE47E151F254419A9999A987A35041E17A144E46F254411F85EBD183A35041295C8F0253F25441C3F528CC83A350413D0AD71353F25441713D0AD780A35041CDCCCC7C5CF25441333333337EA350411F85EB0166F254417B14AE877CA3504152B81EF56EF25441D7A3700D7BA350415C8FC25579F25441F6285C7F7AA35041F6285C3F83F2544185EB51587AA35041CDCCCC1C8EF25441333333437BA35041A4703D7A8FF25441B81E85BB91A35041F6285C2F98F25441666666869FA35041666666869DF2544133333373ABA3504152B81E25A2F25441C3F5286CAEA35041B81E854BA3F2544185EB5188B6A35041333333439AF25441CDCCCCDCBAA35041EC51B82E96F25441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B81E85CBEDA35041C3F5281C1BF254416B8D581AE8A3504113914A8119F25441A1F9A548D9A35041634E65E614F25441F21DA1E7D3A35041CB0D083512F254417D0049C5C8A3504153A5920B2FF25441E2E98F23B8A350414E29A61D5AF2544124541999D1A35041974A49F963F25441B68C33DCD2A350413E1A219963F25441353B5A6AEEA35041E545663B1CF25441B81E85CBEDA35041C3F5281C1BF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556625 - 2950907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000005C8FC2650EAD5041295C8F42D2F754411F85EB7105AD5041B81E85BBDCF75441333333B304AD50419A999929DFF754419A99992910AD50418FC2F548E4F7544114AE477119AD5041D7A3702DCFF75441D7A3707D20AD504166666676C2F754417B14AEE725AD504152B81ED5BCF75441C3F5282C2CAD50415C8FC215B8F754417B14AE372FAD5041EC51B88EB6F75441295C8F9237AD50417B14AE97B3F75441EC51B86E38AD504133333373B0F754418FC2F5B837AD50415C8FC2B5AFF75441666666662DAD5041E17A141EB2F7544152B81E7527AD5041A4703DDAB4F75441E17A146E21AD5041C3F5287CB8F754410AD7A3D019AD5041CDCCCC9CBCF754411F85EB8112AD5041000000B0CBF754415C8FC2650EAD5041295C8F42D2F75441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000032B8620C13AD50417B44B991CCF754415945A41717AD5041DEC744AAC4F75441B609A6DD1AAD50415B14EC92BDF754414DC6ACF91BAD504156991871BBF75441D65F1FD119AD50418CF7499DBCF75441EE69320718AD504128537B4CC0F75441A8FA3C4217AD50419E2CCCE2C1F754413406DC7812AD50418D5401C6CBF75441E327B92712AD50415DEB3C40CCF75441DE7A874A10AD5041F8320D3CCFF75441D3A07C8B0EAD50414D70E8FDD1F75441893AD50C0EAD504110E795AAD2F75441300990B30CAD504199407A3ED4F754410F4D22BE0AAD50417C8F0A89D6F75441595B16C608AD504190DEAAD6D8F754411F85EB7105AD5041B81E85BBDCF75441333333B304AD50419A999929DFF754417EF01C6906AD5041C250B911DDF75441AAEF03A30EAD504196D3B800D3F7544132B8620C13AD50417B44B991CCF75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556625 - 3621710
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000005C8FC2650EAD5041295C8F42D2F754411F85EB7105AD5041B81E85BBDCF75441333333B304AD50419A999929DFF754419A99992910AD50418FC2F548E4F7544114AE477119AD5041D7A3702DCFF75441D7A3707D20AD504166666676C2F754417B14AEE725AD504152B81ED5BCF75441C3F5282C2CAD50415C8FC215B8F754417B14AE372FAD5041EC51B88EB6F75441295C8F9237AD50417B14AE97B3F75441EC51B86E38AD504133333373B0F754418FC2F5B837AD50415C8FC2B5AFF75441666666662DAD5041E17A141EB2F7544152B81E7527AD5041A4703DDAB4F75441E17A146E21AD5041C3F5287CB8F754410AD7A3D019AD5041CDCCCC9CBCF754411F85EB8112AD5041000000B0CBF754415C8FC2650EAD5041295C8F42D2F75441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000032B8620C13AD50417B44B991CCF754415945A41717AD5041DEC744AAC4F75441B609A6DD1AAD50415B14EC92BDF754414DC6ACF91BAD504156991871BBF75441D65F1FD119AD50418CF7499DBCF75441EE69320718AD504128537B4CC0F75441A8FA3C4217AD50419E2CCCE2C1F754413406DC7812AD50418D5401C6CBF75441E327B92712AD50415DEB3C40CCF75441DE7A874A10AD5041F8320D3CCFF75441D3A07C8B0EAD50414D70E8FDD1F75441893AD50C0EAD504110E795AAD2F75441300990B30CAD504199407A3ED4F754410F4D22BE0AAD50417C8F0A89D6F75441595B16C608AD504190DEAAD6D8F754411F85EB7105AD5041B81E85BBDCF75441333333B304AD50419A999929DFF754417EF01C6906AD5041C250B911DDF75441AAEF03A30EAD504196D3B800D3F7544132B8620C13AD50417B44B991CCF75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557093 - 243793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000A00000000000050B0AC5041333333E361CB544100000090A4AC5041713D0A673ECB54417B14AE879FAC5041B81E85EB3FCB5441C3F528AC97AC504185EB514842CB54417B14AE07A1AC5041B81E858B5ECB544100000030A1AC504152B81E055FCB5441000000B0A2AC5041A4703D0A63CB5441C3F5289CA4AC5041A4703D6A64CB5441EC51B8AEAAAC50417B14AE6762CB544100000050B0AC5041333333E361CB54410103000000010000000E0000007B14AEA7C7AC5041713D0AC758CB54417B14AEE7BCAC5041295C8FF237CB54413D0AD773B0AC50417B14AEC73BCB54410AD7A340A6AC5041666666763FCB544148E17A94B1AC5041CDCCCC0C62CB544133333333B6AC50416666661661CB54413D0AD7F3B7AC50419A9999D962CB5441EC51B8EEBDAC504114AE471164CB5441CDCCCC3CC0AC5041713D0AD762CB54415C8FC285C1AC50413D0AD7C360CB54413D0AD743C2AC5041000000C05CCB54419A999929C4AC5041CDCCCCEC58CB5441F6285CCFC7AC50410AD7A34059CB54417B14AEA7C7AC5041713D0AC758CB5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D1497257C4AC5041B49BEAF058CB54413CA59663C4AC50412DB301F258CB54419D98A768C4AC50416BCCDFE758CB544195FDC5C5C7AC504185FF422359CB5441FA41ACBFC7AC5041EE0A911059CB5441AF259FB6C7AC50415C38D4F458CB544196211471C7AC504176D98F5258CB54416AED50D7AFAC50418C4088BD5CCB54411E247F4FB0AC5041A31C7E2C5ECB54411B1EBE8FB1AC504146BD55FE61CB54417B074C4BB6AC50419C4B62F460CB544128165FEDB7AC5041ABEE2ED262CB5441192838FEBDAC504194D4CEFC63CB5441DFACB875BFAC504131920E4163CB5441CDCCCC3CC0AC5041713D0AD762CB5441C24AB56DC1AC5041C8B5ADEA60CB54413BC37E86C1AC50410C5ADDBF60CB54413D0AD743C2AC5041000000C05CCB544109C2411EC4AC50410965AA0359CB5441D1497257C4AC5041B49BEAF058CB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557093 - 362675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000A00000000000050B0AC5041333333E361CB544100000090A4AC5041713D0A673ECB54417B14AE879FAC5041B81E85EB3FCB5441C3F528AC97AC504185EB514842CB54417B14AE07A1AC5041B81E858B5ECB544100000030A1AC504152B81E055FCB5441000000B0A2AC5041A4703D0A63CB5441C3F5289CA4AC5041A4703D6A64CB5441EC51B8AEAAAC50417B14AE6762CB544100000050B0AC5041333333E361CB54410103000000010000000E0000007B14AEA7C7AC5041713D0AC758CB54417B14AEE7BCAC5041295C8FF237CB54413D0AD773B0AC50417B14AEC73BCB54410AD7A340A6AC5041666666763FCB544148E17A94B1AC5041CDCCCC0C62CB544133333333B6AC50416666661661CB54413D0AD7F3B7AC50419A9999D962CB5441EC51B8EEBDAC504114AE471164CB5441CDCCCC3CC0AC5041713D0AD762CB54415C8FC285C1AC50413D0AD7C360CB54413D0AD743C2AC5041000000C05CCB54419A999929C4AC5041CDCCCCEC58CB5441F6285CCFC7AC50410AD7A34059CB54417B14AEA7C7AC5041713D0AC758CB5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D1497257C4AC5041B49BEAF058CB54413CA59663C4AC50412DB301F258CB54419D98A768C4AC50416BCCDFE758CB544195FDC5C5C7AC504185FF422359CB5441FA41ACBFC7AC5041EE0A911059CB5441AF259FB6C7AC50415C38D4F458CB544196211471C7AC504176D98F5258CB54416AED50D7AFAC50418C4088BD5CCB54411E247F4FB0AC5041A31C7E2C5ECB54411B1EBE8FB1AC504146BD55FE61CB54417B074C4BB6AC50419C4B62F460CB544128165FEDB7AC5041ABEE2ED262CB5441192838FEBDAC504194D4CEFC63CB5441DFACB875BFAC504131920E4163CB5441CDCCCC3CC0AC5041713D0AD762CB5441C24AB56DC1AC5041C8B5ADEA60CB54413BC37E86C1AC50410C5ADDBF60CB54413D0AD743C2AC5041000000C05CCB544109C2411EC4AC50410965AA0359CB5441D1497257C4AC5041B49BEAF058CB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557249 - 145733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000028000000713D0A0761B650413D0AD7F32BF354415C8FC2D567B65041C3F528EC33F35441A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441D7A3705D45B650410AD7A3A005F35441AE47E1CA47B65041CDCCCCBC07F35441E17A14CE4BB65041000000100AF35441E17A142E4EB650418FC2F5380BF354413D0AD7134FB65041AE47E13A0DF354411F85EB8151B650411F85EBB10AF354410AD7A3104BB650415C8FC23507F35441D7A3705D45B65041295C8FE203F354410AD7A39040B650413D0AD72300F354415C8FC2C53EB65041D7A3703DFCF25441B81E85AB42B650411F85EB51F4F2544152B81E9551B650419A9999C9DEF25441000000204DB65041F6285C8FDDF254411F85EB5148B65041B81E85CBE5F25441E17A14FE43B6504152B81E65ECF25441E17A143E3FB65041CDCCCC5CF3F2544185EB51A83DB65041F6285CAFF5F25441666666063DB650411F85EB01F8F2544185EB51983AB6504148E17A04FBF254417B14AE9739B6504185EB5148FCF254411F85EB6139B65041666666B6FEF25441E17A148E37B65041CDCCCCDCFDF2544152B81E4537B650411F85EBD1FFF25441AE47E1AA40B6504114AE470109F35441EC51B81E4BB650419A99990914F35441713D0A0761B650413D0AD7F32BF3544101030000000100000009000000E17A148E41B650413D0AD7530CF3544185EB518837B65041E17A145E02F35441A4703DAA36B65041C3F528FC02F3544185EB512836B650413D0AD79305F35441D7A370ED36B650417B14AE1708F35441000000704BB65041CDCCCCEC1AF3544114AE47B160B65041B81E85DB2DF35441000000504DB650413D0AD7D318F35441E17A148E41B650413D0AD7530CF35441
+</a>
+
+<b>
+01060000000100000001030000000100000049000000A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441D7A3705D45B650410AD7A3A005F35441AE47E1CA47B65041CDCCCCBC07F35441E17A14CE4BB65041000000100AF35441E17A142E4EB650418FC2F5380BF354413D0AD7134FB65041AE47E13A0DF354411F85EB8151B650411F85EBB10AF35441E7866AD948B650411193280406F35441910DDC6047B650412BAF380F05F35441D7A3705D45B65041295C8FE203F354410AD7A39040B650413D0AD72300F3544168661C153FB65041C41D16EAFCF25441296018D43EB65041DDB540AAFCF25441AE1BE5E53EB65041F0675B83FCF254415C8FC2C53EB65041D7A3703DFCF25441B81E85AB42B650411F85EB51F4F25441D96F390E49B650412A658819EBF254413BAE327649B65041F3306783EAF25441BEA1308951B65041D39150C6DEF25441E4484ACE50B65041EFB5D892DEF25441291E1E8550B65041F145B27EDEF254416AF27FFC4DB6504118B714CCDDF25441C8B6EBF74DB650414AE8D1CADDF2544122F0F02A4DB65041B00E1599DDF2544148D06D4349B65041AEC29C2DE4F254411F85EB5148B65041B81E85CBE5F25441F49E8F6046B65041B39D0EC2E8F25441410E693D45B650416D3C7784EAF254410275B39444B650419D44677FEBF25441E17A14FE43B6504152B81E65ECF25441BD3B8FE942B650411A5EBBFAEDF2544198E7589D3DB65041CCD6F4DBF5F25441881F03653DB65041658E82A6F6F25441666666063DB650411F85EB01F8F2544115C56F023DB650417A9FF008F8F254413CED5E5E3CB650419E0F0ED2F8F2544185EB51983AB6504148E17A04FBF2544109EFD7043AB65041CA9292BEFBF2544124E92C9739B65041E197284EFCF254411F85EB6139B65041666666B6FEF25441E24E442039B650419717DD97FEF254415D3B898638B65041BA23AB50FEF25441F3E9AD8D37B650418C448DDFFDF25441E8888F7337B650415B23F292FEF2544152B81E4537B650411F85EBD1FFF2544184BDC9023EB65041DE09916806F35441AE47E1AA40B6504114AE470109F35441854B3D2943B6504132BA0FA30BF354414D9A748743B65041C27105000CF354414F6A678843B65041F704F5000CF35441506A678843B65041F804F5000CF35441526A678843B65041FA04F5000CF354415F6A678843B650410805F5000CF354419C562AFD4AB65041930223E513F35441A13BE70B4EB650415401503517F3544102D66C2755B65041466DB0FD1EF35441713D0A0761B650413D0AD7F32BF354412D9ACE4B65B650413A5737F330F354419941A38565B650412426EC3631F354410DB327F667B65041DC372D0734F35441131AD8646AB65041140E376F36F35441A4703D1A6BB6504114AE472137F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557249 - 290252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000028000000713D0A0761B650413D0AD7F32BF354415C8FC2D567B65041C3F528EC33F35441A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441D7A3705D45B650410AD7A3A005F35441AE47E1CA47B65041CDCCCCBC07F35441E17A14CE4BB65041000000100AF35441E17A142E4EB650418FC2F5380BF354413D0AD7134FB65041AE47E13A0DF354411F85EB8151B650411F85EBB10AF354410AD7A3104BB650415C8FC23507F35441D7A3705D45B65041295C8FE203F354410AD7A39040B650413D0AD72300F354415C8FC2C53EB65041D7A3703DFCF25441B81E85AB42B650411F85EB51F4F2544152B81E9551B650419A9999C9DEF25441000000204DB65041F6285C8FDDF254411F85EB5148B65041B81E85CBE5F25441E17A14FE43B6504152B81E65ECF25441E17A143E3FB65041CDCCCC5CF3F2544185EB51A83DB65041F6285CAFF5F25441666666063DB650411F85EB01F8F2544185EB51983AB6504148E17A04FBF254417B14AE9739B6504185EB5148FCF254411F85EB6139B65041666666B6FEF25441E17A148E37B65041CDCCCCDCFDF2544152B81E4537B650411F85EBD1FFF25441AE47E1AA40B6504114AE470109F35441EC51B81E4BB650419A99990914F35441713D0A0761B650413D0AD7F32BF3544101030000000100000009000000E17A148E41B650413D0AD7530CF3544185EB518837B65041E17A145E02F35441A4703DAA36B65041C3F528FC02F3544185EB512836B650413D0AD79305F35441D7A370ED36B650417B14AE1708F35441000000704BB65041CDCCCCEC1AF3544114AE47B160B65041B81E85DB2DF35441000000504DB650413D0AD7D318F35441E17A148E41B650413D0AD7530CF35441
+</a>
+
+<b>
+01060000000100000001030000000100000049000000A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441D7A3705D45B650410AD7A3A005F35441AE47E1CA47B65041CDCCCCBC07F35441E17A14CE4BB65041000000100AF35441E17A142E4EB650418FC2F5380BF354413D0AD7134FB65041AE47E13A0DF354411F85EB8151B650411F85EBB10AF35441E7866AD948B650411193280406F35441910DDC6047B650412BAF380F05F35441D7A3705D45B65041295C8FE203F354410AD7A39040B650413D0AD72300F3544168661C153FB65041C41D16EAFCF25441296018D43EB65041DDB540AAFCF25441AE1BE5E53EB65041F0675B83FCF254415C8FC2C53EB65041D7A3703DFCF25441B81E85AB42B650411F85EB51F4F25441D96F390E49B650412A658819EBF254413BAE327649B65041F3306783EAF25441BEA1308951B65041D39150C6DEF25441E4484ACE50B65041EFB5D892DEF25441291E1E8550B65041F145B27EDEF254416AF27FFC4DB6504118B714CCDDF25441C8B6EBF74DB650414AE8D1CADDF2544122F0F02A4DB65041B00E1599DDF2544148D06D4349B65041AEC29C2DE4F254411F85EB5148B65041B81E85CBE5F25441F49E8F6046B65041B39D0EC2E8F25441410E693D45B650416D3C7784EAF254410275B39444B650419D44677FEBF25441E17A14FE43B6504152B81E65ECF25441BD3B8FE942B650411A5EBBFAEDF2544198E7589D3DB65041CCD6F4DBF5F25441881F03653DB65041658E82A6F6F25441666666063DB650411F85EB01F8F2544115C56F023DB650417A9FF008F8F254413CED5E5E3CB650419E0F0ED2F8F2544185EB51983AB6504148E17A04FBF2544109EFD7043AB65041CA9292BEFBF2544124E92C9739B65041E197284EFCF254411F85EB6139B65041666666B6FEF25441E24E442039B650419717DD97FEF254415D3B898638B65041BA23AB50FEF25441F3E9AD8D37B650418C448DDFFDF25441E8888F7337B650415B23F292FEF2544152B81E4537B650411F85EBD1FFF2544184BDC9023EB65041DE09916806F35441AE47E1AA40B6504114AE470109F35441854B3D2943B6504132BA0FA30BF354414D9A748743B65041C27105000CF354414F6A678843B65041F704F5000CF35441506A678843B65041F804F5000CF35441526A678843B65041FA04F5000CF354415F6A678843B650410805F5000CF354419C562AFD4AB65041930223E513F35441A13BE70B4EB650415401503517F3544102D66C2755B65041466DB0FD1EF35441713D0A0761B650413D0AD7F32BF354412D9ACE4B65B650413A5737F330F354419941A38565B650412426EC3631F354410DB327F667B65041DC372D0734F35441131AD8646AB65041140E376F36F35441A4703D1A6BB6504114AE472137F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557731 - 359801
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000002000000010300000001000000060000001F85EB2153EF504152B81EB540B95441A4703DCA5CEF50411F85EB2141B95441F6285CFF76EF50413D0AD74338B9544152B81E655DEF5041F6285C3F30B95441EC51B89E5CEF50413D0AD7333BB954411F85EB2153EF504152B81EB540B9544101030000000100000026000000A4703DAAA0EE504152B81E05A6B95441E17A14DEB3EE5041E17A147E8CB954417B14AE57CAEE50411F85EB816FB9544114AE47F1D5EE504185EB51D860B954413D0AD7A3DFEE50410AD7A3605BB95441A4703D4ADEEE504114AE478159B95441A4703DAAE2EE50413D0AD73356B95441A4703D4A16EF504185EB513838B95441CDCCCC5C17EF50418FC2F5983CB95441295C8F5218EF5041E17A144E3CB95441666666862CEF50413D0AD72336B95441F6285CDF40EF50419A9999A930B954417B14AE0748EF50419A9999792FB95441666666465BEF5041295C8F922FB95441A4703DEA36EF5041295C8F8225B95441E17A14BE1AEF5041295C8F8223B954418FC2F5C80CEF5041EC51B86E28B954419A9999D9FFEE5041666666062FB95441295C8FA2EAEE5041A4703D9A39B9544114AE47E1E1EE504114AE47713EB95441D7A3704DDCEE5041E17A141E42B9544152B81E95D1EE5041A4703D3A4AB95441C3F528FCC7EE50411F85EB3153B9544100000050AAEE50413D0AD76373B95441333333E3ADEE504152B81E6576B95441B81E851BABEE5041EC51B83E7DB95441295C8F42A8EE5041AE47E1EA80B9544166666696A3EE504152B81E4585B95441295C8FB2A0EE5041A4703DFA82B95441666666C69FEE5041713D0A7783B95441A4703D7A98EE50410000004090B95441F6285CAF91EE504185EB512897B9544148E17AD48AEE5041A4703D7AA6B9544185EB51C889EE504148E17A14AEB95441B81E855B8EEE50417B14AE77ACB95441B81E853B96EE50411F85EBB1A9B95441B81E857B9DEE50413D0AD723A7B95441A4703DAAA0EE504152B81E05A6B95441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EC51B89E5CEF50413D0AD7333BB954414C78FA8853EF5041C4BB927940B95441D9AB02CC53EF50412CEF9ABC40B95441A5BBB01955EF5041C81F4ACB40B95441603846AB55EF50417140B2D140B954416928C3BB55EF5041164BB4C640B954418BC0DA8757EF5041164BB4C640B95441D28CE66D58EF5041164BB4C640B95441F0415FFF58EF5041CBDC31F740B95441CCB3451C5AEF5041B781BB0341B95441B5575BD35AEF5041164BB4C640B954417561BAEA5AEF50415B68D10C41B95441D5AE23D95BEF5041B9504F1741B954417101C7C95CEF5041DB4EE62141B954412CCB55FF76EF5041B031D94338B9544152B81E655DEF5041F6285C3F30B95441EC51B89E5CEF50413D0AD7333BB95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557733 - 249297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000040000000103000000010000004700000014AE4701BBEE5041713D0A27E8B85441713D0A17BCEE50418FC2F5D8E3B8544166666666ADEE50415C8FC225E0B85441C3F5283CA5EE5041295C8F52DEB854411F85EBB19EEE5041E17A14FEDDB85441333333839AEE5041666666D6DDB854413D0AD7138EEE5041666666C6DDB854415C8FC2457BEE5041713D0A97DEB8544185EB51C879EE5041CDCCCC5CDAB85441333333836FEE50411F85EB61DFB85441713D0AD76DEE504133333333E0B85441000000F05AEE5041AE47E15AE8B854417B14AEF75CEE5041E17A145EEBB85441295C8FA25DEE50418FC2F578EEB85441CDCCCC1C5DEE504148E17AE4FBB854411F85EB315BEE504100000000FFB854411F85EBC154EE5041295C8F7204B954410AD7A3C052EE5041295C8F1207B954418FC2F56850EE50418FC2F5880CB9544185EB51B84FEE50410000004011B95441333333F368EE504152B81E3507B954410AD7A37066EE504148E17A04FFB8544185EB511873EE5041F6285CAFF8B854415C8FC2557DEE5041F6285C2FF2B85441F6285C5F85EE5041EC51B8BEEFB854413D0AD7338EEE504114AE47D1EEB85441333333D3A1EE5041A4703DDAEFB85441AE47E17AA5EE5041C3F5283CF0B8544185EB5168A5EE5041F6285C6FF3B854418FC2F5D8A9EE50419A9999C9F2B85441F6285C6FAEEE50419A9999E9F4B854411F85EB51B4EE504166666676F3B854411F85EBE1B6EE5041A4703D0AF2B854419A9999D9BFEE5041295C8F12F7B854410AD7A3B0C4EE504152B81E75FCB854411F85EBE1D2EE50410000006002B9544148E17A04D6EE5041A4703D5A01B954411F85EBC1E1EE5041295C8FD206B95441E17A149EE1EE50410000007008B95441000000F0E4EE50417B14AEA714B954415C8FC245DAEE5041713D0AF718B954413D0AD743D5EE5041295C8F121CB95441E17A142ED9EE5041713D0AC721B9544114AE4741DCEE50411F85EB7128B9544133333343DEEE504114AE477127B95441E17A14DEEFEE5041A4703D8A1EB954417B14AEF7F1EE50413D0AD7231FB9544152B81EC5F3EE50411F85EB311EB95441EC51B8EEF3EE50415C8FC2D51CB9544100000020F5EE50419A9999B91AB9544114AE4721FAEE50418FC2F56818B9544114AE4741FBEE5041EC51B80E15B954411F85EBC1FEEE50415C8FC22514B95441B81E852B01EF50415C8FC22515B954413D0AD70301EF50413333333318B95441333333730AEF5041713D0A2714B95441713D0AB70BEF504152B81E350AB95441666666860AEF5041F6285C1F08B954411F85EBC107EF50415C8FC2B506B95441B81E85AB02EF504152B81ED504B95441D7A370CDFAEE5041A4703DEA02B954419A9999E9F3EE5041713D0AA7FFB85441A4703D7AE6EE50413D0AD703FEB85441C3F528BCDBEE504166666666FAB85441A4703D9AD8EE50410AD7A3B0F6B85441A4703D4AD2EE504148E17A54F4B8544100000060CDEE50413D0AD763F1B85441AE47E1FAC7EE5041A4703D0AF0B85441EC51B8FEC7EE50411F85EB91EEB8544148E17A34C0EE50419A999949EBB8544114AE4701BBEE5041713D0A27E8B854410103000000010000001D0000008FC2F5584EEE50418FC2F568E3B85441E17A14DE4DEE5041713D0A97E3B8544114AE47A14EEE50411F85EBF1E6B85441D7A3702D3BEE504148E17A54EEB85441E17A14FE22EE504152B81E25F3B854418FC2F5780FEE504152B81EA5F5B854410AD7A380FDED5041295C8FF2F7B8544152B81EA5FBED5041D7A3706DFAB85441EC51B88EF3ED504114AE47C103B9544100000060F3ED5041AE47E1FA06B95441AE47E1DAF4ED5041A4703D3A0AB9544133333363FBED5041F6285CCF0DB95441713D0A7701EE5041A4703D3A10B95441295C8FD206EE504185EB51C811B95441000000701CEE50418FC2F5080FB95441CDCCCC4C1EEE50410AD7A3200CB954415C8FC2351FEE50417B14AE370BB954413333332327EE5041000000100AB95441E17A14AE3BEE5041295C8F6207B95441B81E85AB4DEE5041E17A141E06B95441EC51B88E50EE5041A4703DEA05B95441E17A14EE52EE50418FC2F5B802B9544185EB515859EE5041E17A147EFDB85441A4703D5A5BEE5041B81E855BFBB8544152B81E855CEE504133333383EEB854415C8FC25559EE50410AD7A390EDB85441E17A148E56EE5041EC51B88EEAB8544148E17AA452EE5041295C8FF2E7B854418FC2F5584EEE50418FC2F568E3B854410103000000010000000E000000EC51B8DEC7ED5041F6285CEF04B95441A4703D0AC8ED5041000000C005B954413D0AD7F3D5ED5041333333D307B95441000000B0DAED504185EB519807B95441A4703D8AE4ED50411F85EB6105B954411F85EB71EBED50413D0AD79304B95441EC51B8CEEEED5041C3F5285C03B954413D0AD7A3F2ED5041000000B0FEB85441AE47E17AF4ED50417B14AEE7FBB8544166666626E6ED50411F85EBE1FCB85441CDCCCC9CE3ED504100000010FDB85441AE47E1EAE3ED5041CDCCCC6C00B954418FC2F578D0ED50411F85EB1104B95441EC51B8DEC7ED5041F6285CEF04B95441010300000001000000080000000AD7A360ADED5041E17A142E1FB95441AE47E1CACBED5041CDCCCC8C1CB95441713D0AD7CBED5041CDCCCC5C15B95441A4703DDACAED50417B14AE7714B9544152B81ED5C4ED5041AE47E11A15B95441AE47E10ABBED504152B81ED514B9544114AE4771ADED50410000006013B954410AD7A360ADED5041E17A142E1FB95441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000A4703D0AC8ED5041000000C005B95441E029339BCDED5041B717879406B954419C32D8F3D5ED5041C80F32D307B954416BC7FFAFDAED504147E6519807B95441327F3D8AE4ED50413B40EA6105B9544102A16907E8ED50416FBFCAF904B954411F85EB71EBED50413D0AD79304B954416E735D23EDED5041FEBEE5F603B95441F112B7CEEEED50413523285C03B95441BF66D6A3F2ED50419A4800B0FEB85441E409E07AF4ED5041282AAEE7FBB85441B3742F7DF1ED50413926E91BFCB854415A3C6726E6ED504161E8ECE1FCB85441E402B218E6ED50411464E4E2FCB85441CDCCCC9CE3ED504100000010FDB85441AE47E1EAE3ED5041CDCCCC6C00B954418FC2F578D0ED50411F85EB1104B95441EC51B8DEC7ED5041F6285CEF04B95441A4703D0AC8ED5041000000C005B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557733 - 359123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000040000000103000000010000004700000014AE4701BBEE5041713D0A27E8B85441713D0A17BCEE50418FC2F5D8E3B8544166666666ADEE50415C8FC225E0B85441C3F5283CA5EE5041295C8F52DEB854411F85EBB19EEE5041E17A14FEDDB85441333333839AEE5041666666D6DDB854413D0AD7138EEE5041666666C6DDB854415C8FC2457BEE5041713D0A97DEB8544185EB51C879EE5041CDCCCC5CDAB85441333333836FEE50411F85EB61DFB85441713D0AD76DEE504133333333E0B85441000000F05AEE5041AE47E15AE8B854417B14AEF75CEE5041E17A145EEBB85441295C8FA25DEE50418FC2F578EEB85441CDCCCC1C5DEE504148E17AE4FBB854411F85EB315BEE504100000000FFB854411F85EBC154EE5041295C8F7204B954410AD7A3C052EE5041295C8F1207B954418FC2F56850EE50418FC2F5880CB9544185EB51B84FEE50410000004011B95441333333F368EE504152B81E3507B954410AD7A37066EE504148E17A04FFB8544185EB511873EE5041F6285CAFF8B854415C8FC2557DEE5041F6285C2FF2B85441F6285C5F85EE5041EC51B8BEEFB854413D0AD7338EEE504114AE47D1EEB85441333333D3A1EE5041A4703DDAEFB85441AE47E17AA5EE5041C3F5283CF0B8544185EB5168A5EE5041F6285C6FF3B854418FC2F5D8A9EE50419A9999C9F2B85441F6285C6FAEEE50419A9999E9F4B854411F85EB51B4EE504166666676F3B854411F85EBE1B6EE5041A4703D0AF2B854419A9999D9BFEE5041295C8F12F7B854410AD7A3B0C4EE504152B81E75FCB854411F85EBE1D2EE50410000006002B9544148E17A04D6EE5041A4703D5A01B954411F85EBC1E1EE5041295C8FD206B95441E17A149EE1EE50410000007008B95441000000F0E4EE50417B14AEA714B954415C8FC245DAEE5041713D0AF718B954413D0AD743D5EE5041295C8F121CB95441E17A142ED9EE5041713D0AC721B9544114AE4741DCEE50411F85EB7128B9544133333343DEEE504114AE477127B95441E17A14DEEFEE5041A4703D8A1EB954417B14AEF7F1EE50413D0AD7231FB9544152B81EC5F3EE50411F85EB311EB95441EC51B8EEF3EE50415C8FC2D51CB9544100000020F5EE50419A9999B91AB9544114AE4721FAEE50418FC2F56818B9544114AE4741FBEE5041EC51B80E15B954411F85EBC1FEEE50415C8FC22514B95441B81E852B01EF50415C8FC22515B954413D0AD70301EF50413333333318B95441333333730AEF5041713D0A2714B95441713D0AB70BEF504152B81E350AB95441666666860AEF5041F6285C1F08B954411F85EBC107EF50415C8FC2B506B95441B81E85AB02EF504152B81ED504B95441D7A370CDFAEE5041A4703DEA02B954419A9999E9F3EE5041713D0AA7FFB85441A4703D7AE6EE50413D0AD703FEB85441C3F528BCDBEE504166666666FAB85441A4703D9AD8EE50410AD7A3B0F6B85441A4703D4AD2EE504148E17A54F4B8544100000060CDEE50413D0AD763F1B85441AE47E1FAC7EE5041A4703D0AF0B85441EC51B8FEC7EE50411F85EB91EEB8544148E17A34C0EE50419A999949EBB8544114AE4701BBEE5041713D0A27E8B854410103000000010000001D0000008FC2F5584EEE50418FC2F568E3B85441E17A14DE4DEE5041713D0A97E3B8544114AE47A14EEE50411F85EBF1E6B85441D7A3702D3BEE504148E17A54EEB85441E17A14FE22EE504152B81E25F3B854418FC2F5780FEE504152B81EA5F5B854410AD7A380FDED5041295C8FF2F7B8544152B81EA5FBED5041D7A3706DFAB85441EC51B88EF3ED504114AE47C103B9544100000060F3ED5041AE47E1FA06B95441AE47E1DAF4ED5041A4703D3A0AB9544133333363FBED5041F6285CCF0DB95441713D0A7701EE5041A4703D3A10B95441295C8FD206EE504185EB51C811B95441000000701CEE50418FC2F5080FB95441CDCCCC4C1EEE50410AD7A3200CB954415C8FC2351FEE50417B14AE370BB954413333332327EE5041000000100AB95441E17A14AE3BEE5041295C8F6207B95441B81E85AB4DEE5041E17A141E06B95441EC51B88E50EE5041A4703DEA05B95441E17A14EE52EE50418FC2F5B802B9544185EB515859EE5041E17A147EFDB85441A4703D5A5BEE5041B81E855BFBB8544152B81E855CEE504133333383EEB854415C8FC25559EE50410AD7A390EDB85441E17A148E56EE5041EC51B88EEAB8544148E17AA452EE5041295C8FF2E7B854418FC2F5584EEE50418FC2F568E3B854410103000000010000000E000000EC51B8DEC7ED5041F6285CEF04B95441A4703D0AC8ED5041000000C005B954413D0AD7F3D5ED5041333333D307B95441000000B0DAED504185EB519807B95441A4703D8AE4ED50411F85EB6105B954411F85EB71EBED50413D0AD79304B95441EC51B8CEEEED5041C3F5285C03B954413D0AD7A3F2ED5041000000B0FEB85441AE47E17AF4ED50417B14AEE7FBB8544166666626E6ED50411F85EBE1FCB85441CDCCCC9CE3ED504100000010FDB85441AE47E1EAE3ED5041CDCCCC6C00B954418FC2F578D0ED50411F85EB1104B95441EC51B8DEC7ED5041F6285CEF04B95441010300000001000000080000000AD7A360ADED5041E17A142E1FB95441AE47E1CACBED5041CDCCCC8C1CB95441713D0AD7CBED5041CDCCCC5C15B95441A4703DDACAED50417B14AE7714B9544152B81ED5C4ED5041AE47E11A15B95441AE47E10ABBED504152B81ED514B9544114AE4771ADED50410000006013B954410AD7A360ADED5041E17A142E1FB95441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000A4703D0AC8ED5041000000C005B95441E029339BCDED5041B717879406B954419C32D8F3D5ED5041C80F32D307B954416BC7FFAFDAED504147E6519807B95441327F3D8AE4ED50413B40EA6105B9544102A16907E8ED50416FBFCAF904B954411F85EB71EBED50413D0AD79304B954416E735D23EDED5041FEBEE5F603B95441F112B7CEEEED50413523285C03B95441BF66D6A3F2ED50419A4800B0FEB85441E409E07AF4ED5041282AAEE7FBB85441B3742F7DF1ED50413926E91BFCB854415A3C6726E6ED504161E8ECE1FCB85441E402B218E6ED50411464E4E2FCB85441CDCCCC9CE3ED504100000010FDB85441AE47E1EAE3ED5041CDCCCC6C00B954418FC2F578D0ED50411F85EB1104B95441EC51B8DEC7ED5041F6285CEF04B95441A4703D0AC8ED5041000000C005B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 242068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441B81E85BB16F0504185EB516857B85441A4703DEAF5EF5041A4703D7A6AB854415C8FC2C5ECEF5041CDCCCC4C71B854417B14AEE7E2EF50410AD7A31076B854417B14AE67D3EF50419A9999B97BB854410AD7A330C0EF5041E17A144E7DB854417B14AE57B1EF50419A9999C97AB854413D0AD753B0EF504114AE47317CB85441000000A0B7EF5041CDCCCC8C81B85441D7A370CDB9EF50416666669684B8544100000040BAEF50415C8FC24588B85441A4703DFABBEF50417B14AE2788B85441AE47E1AAC6EF5041B81E850B85B854413D0AD7E3D3EF50413333334387B854410AD7A370DCEF5041AE47E1CA86B85441F6285C5FE5EF5041D7A3706D84B85441F6285C2FE2EF504148E17A347CB85441E17A140EE4EF50417B14AE677BB854418FC2F5A8EAEF50413333339378B85441D7A3707DF7EF5041C3F5282C73B85441E17A146E05F05041A4703DAA6CB85441333333C307F050419A9999396FB85441F6285C6F10F0504185EB51886CB85441295C8FD211F050413D0AD7A36FB85441CDCCCC9C1DF05041EC51B8FE6AB8544148E17A741BF0504148E17A8465B85441CDCCCC9C24F05041713D0AB762B854415C8FC26529F050411F85EB4168B854410103000000010000000C0000003D0AD7F3A3EF5041EC51B8DE8FB85441F6285C8FA9EF50415C8FC2258DB85441295C8F22B7EF50418FC2F5088AB854411F85EB11B9EF504148E17AE487B854413D0AD7A3B8EF50411F85EB0185B854413D0AD7C3B6EF504148E17A6482B85441B81E85ABACEF5041295C8FF27AB854419A999949A6EF50419A9999697FB85441000000B09CEF50418FC2F5288BB854415C8FC2F59BEF50411F85EB718CB854410AD7A3B0A4EF5041C3F528FC8BB854413D0AD7F3A3EF5041EC51B8DE8FB8544101030000000100000009000000295C8F229BEF50417B14AEE789B8544152B81E25A6EF5041000000E07AB85441295C8FF2A9EF50419A99997976B85441C3F528ACA9EF5041B81E85FB72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854419A9999E98EEF50417B14AE2781B8544185EB51E898EF504114AE47518AB85441295C8F229BEF50417B14AEE789B854410103000000010000002F0000008FC2F598EDEF5041713D0AE7D1B85441E17A148EDCEF5041666666E6D2B8544152B81EF5DCEF504185EB51E8CBB85441E17A14FEEEEF504114AE47E1CAB85441E17A149E05F0504114AE4741C6B85441EC51B81E1AF050417B14AEF7C3B85441C3F528AC21F0504148E17AD4C2B854415C8FC29504F050415C8FC275C0B8544166666606F8EF50417B14AEB7BFB85441C3F528FCF6EF50419A9999F9BEB85441E17A149ED9EF50415C8FC2B5BCB85441000000D0D0EF5041E17A146EBDB85441B81E855BC6EF504185EB51E8C2B85441EC51B8AEBFEF5041713D0AD7CCB85441F6285C1FBDEF5041B81E85EBCCB85441B81E85CBBDEF5041713D0AD7D0B854410AD7A370C2EF504152B81E35D7B854411F85EB71C4EF5041AE47E12AD9B854411F85EB61C9EF504133333383DCB8544148E17A44D8EF504114AE4731E4B854419A999979E5EF504114AE4701EBB8544100000080F5EF504114AE47F1F1B85441713D0AF7F5EF5041CDCCCCBCF0B854410AD7A3D0F3EF5041713D0AD7EEB854418FC2F578EFEF504152B81E35EEB8544133333363EFEF50417B14AE97EBB854419A9999D9F6EF50410AD7A3D0ECB854411F85EB21FDEF504133333333F1B85441000000A0FCEF5041CDCCCC2CF6B854418FC2F5B8FDEF5041CDCCCCFCF7B85441666666F603F05041F6285CEFF6B854413333336308F05041A4703DBAFAB8544114AE47F105F05041EC51B8BEFFB85441EC51B83E03F050418FC2F588FFB8544152B81E9503F05041D7A3706DFDB854410AD7A31002F0504148E17A64FAB854410AD7A330FDEF50413D0AD763F9B8544185EB5138FEEF5041AE47E15AFBB85441B81E858B02F050415C8FC2350CB954415C8FC2C503F05041B81E859B0FB95441B81E85EB05F05041F6285C7F12B9544185EB51A815F05041713D0A9706B95441A4703DAA0BF05041EC51B80EF8B85441AE47E1CAFFEF5041000000E0ECB85441D7A370FDF7EF504166666636E7B85441E17A141EEFEF50417B14AEB7E2B854418FC2F598EDEF5041713D0AE7D1B854410103000000010000003100000014AE47E157F050415C8FC2E547B854410AD7A36058F05041AE47E1CA4AB854413D0AD72359F05041000000A058B854417B14AE6755F05041D7A370FD69B854418FC2F5C850F050411F85EB8177B85441B81E856B4EF05041C3F528FC76B85441CDCCCC4C4DF05041B81E85AB7AB854411F85EB5141F05041AE47E12A8CB8544114AE47C13AF05041F6285CFF93B854417B14AED736F05041B81E855B98B85441A4703D9A2DF0504100000050A4B85441295C8F122BF05041AE47E12AA6B85441F6285C2F28F05041A4703D7AA7B854417B14AE671CF050419A999959ABB854411F85EBD1F0EF504100000080B2B85441295C8FC2D9EF504152B81EF5B6B85441AE47E13AD0EF50413D0AD7E3BAB85441EC51B8AED9EF5041EC51B81EBAB85441295C8F52F7EF50410AD7A390BBB854415C8FC29504F0504152B81E05BDB8544152B81EE521F0504114AE4761BFB85441A4703DDA32F0504166666676C0B854413D0AD7F33FF05041D7A370EDC1B854417B14AEB74AF05041AE47E1EAC1B854410000003052F05041D7A3703DBCB85441295C8F0251F05041A4703D1AB9B8544185EB51084DF050410AD7A3D0B2B85441666666F64CF05041B81E85FBADB854417B14AE674FF05041F6285CCFA9B85441000000C058F05041AE47E11A9CB8544148E17AB45BF050415C8FC27598B85441B81E85DB67F05041333333338FB85441666666166FF05041B81E85AB8BB85441CDCCCCAC7AF0504185EB51B888B8544152B81E057FF0504148E17A0487B85441B81E85DB8BF05041EC51B87E7EB854410AD7A3808EF05041000000407BB854419A9999998DF0504148E17A3477B85441D7A3702D7BF05041D7A370FD7AB8544152B81EE565F05041C3F5287C7BB85441F6285C3F53F0504185EB513876B85441E17A14CE56F0504114AE47516CB85441713D0AD759F0504152B81ED55FB8544148E17AD45AF050413333334356B85441B81E857B55F05041000000D038B854419A99991950F05041CDCCCC6C3CB8544185EB51F84CF05041E17A149E3EB854413D0AD7D353F05041F6285C4F48B8544114AE47E157F050415C8FC2E547B8544101030000000100000017000000333333F3D9EF5041D7A370DD8DB854413D0AD713D7EF5041713D0A1788B85441713D0AD7D3EF504148E17A4488B85441333333B3C6EF5041295C8F0286B854413D0AD743BCEF5041D7A3701D89B85441A4703DCAB7EF50418FC2F5188BB8544148E17A14AAEF5041000000908EB854419A9999999FEF5041F6285C9F93B85441713D0A179BEF50415C8FC28599B8544152B81E2590EF5041A4703DAAA9B854413333337392EF5041E17A14EEAAB854413D0AD73399EF504114AE47A1AEB85441C3F5288C99EF50411F85EBD1AEB85441EC51B84E9EEF504152B81E65ABB8544148E17AF4ADEF50413D0AD783A0B854418FC2F5F8B2EF504185EB51E89EB854418FC2F558B8EF504148E17AD49BB854411F85EB01BAEF5041CDCCCCEC9BB85441D7A370EDBBEF5041E17A14BE9AB85441C3F5289CBCEF50419A99997998B85441C3F5284CC8EF5041CDCCCCDC92B85441C3F5287CCEEF50410000003092B85441333333F3D9EF5041D7A370DD8DB854410103000000020000001200000066666666DAEF5041CDCCCC9C65B8544166666676DFEF504114AE47D162B8544114AE4771EFEF5041B81E85FB55B85441B81E850BF0EF504148E17A0454B854411F85EBB1EBEF504152B81E9545B854415C8FC285E6EF504148E17A8434B854415C8FC2C5E3EF5041713D0A8738B8544114AE47A1DEEF5041A4703D1A2EB85441B81E85DBD8EF5041EC51B80E2FB85441E17A149ED9EF50413333336334B854415C8FC2C5D4EF50413333333337B85441E17A142ED2EF5041A4703D2A30B85441D7A3703DCFEF5041713D0AA730B85441E17A148ED5EF50413333330344B854415C8FC2C5D4EF5041B81E850B46B854419A9999C9D5EF5041333333934AB854411F85EB81D7EF5041B81E85AB55B8544166666666DAEF5041CDCCCC9C65B854410B0000001F85EB01DAEF5041713D0A0736B854415C8FC245DCEF5041F6285C3F3AB85441E17A14FEDDEF5041713D0A2739B854411F85EB61E3EF5041F6285C6F3CB854415C8FC265E4EF5041F6285CDF3FB85441E17A14EEE3EF50413333335344B854419A999919E0EF5041B81E85AB46B8544133333303E0EF50410AD7A3E049B854411F85EBE1DBEF5041713D0AC743B854419A999959D7EF5041F6285CBF37B854411F85EB01DAEF5041713D0A0736B854410103000000010000001A00000085EB5138E5EF5041333333032DB85441666666A6ECEF5041295C8F5245B85441E17A148EF1EF5041B81E858B55B8544100000000E0EF5041A4703DAA63B8544148E17A24D2EF50411F85EB516BB85441CDCCCC3CCBEF5041333333636DB8544148E17AE4C6EF5041AE47E1BA6FB85441A4703D5AC3EF5041C3F5284C73B85441CDCCCCFCBEEF50417B14AE7775B8544148E17AF4AEEF504185EB515879B85441D7A3703DC0EF5041D7A3704D7CB854411F85EB31D3EF504114AE47C17AB85441AE47E18AE2EF5041295C8F2275B854413D0AD7F3EBEF504152B81E0570B85441E17A145EF5EF5041333333B369B85441CDCCCC5C12F05041EC51B8CE58B8544148E17A8413F050415C8FC2E556B854413333338311F05041A4703D5A54B85441295C8F120AF050419A9999893CB85441F6285C6FFEEF50415C8FC2052BB85441F6285C2FFBEF50419A9999E927B8544185EB51F8F6EF5041D7A3705D26B85441D7A3709DF1EF50415C8FC24526B85441A4703DEAEBEF50418FC2F53829B85441295C8F12E6EF5041B81E856B2BB8544185EB5138E5EF5041333333032DB8544101030000000100000005000000713D0A87C8EF5041AE47E11A61B85441A4703D0AC3EF5041EC51B8AE32B85441D7A3703DBCEF50410AD7A3D033B85441F6285C4FBBEF50413333333335B85441713D0A87C8EF5041AE47E11A61B8544101030000000100000015000000B81E85DB9CEF50417B14AE574FB85441000000909DEF5041C3F528FC50B854417B14AE07A0EF5041C3F528EC51B85441AE47E11AA2EF5041D7A370ED5AB85441AE47E11AA0EF5041000000905DB85441295C8FD2A0EF50418FC2F53865B85441333333A3A3EF504148E17A346AB854410AD7A3F0ACEF504114AE471173B85441F6285C7FB0EF5041B81E858B74B85441D7A3709DBDEF50417B14AE1772B854419A999959C1EF5041AE47E18A70B854411F85EBA1C4EF5041333333F36DB8544166666606C7EF50410AD7A3B06AB854417B14AE57C7EF5041000000A066B8544133333363C6EF504185EB519861B854410AD7A360BEEF504148E17AE446B854415C8FC2C5BCEF5041A4703D9A45B85441295C8FD2A2EF5041666666A643B85441E17A143E96EF50419A99999939B854413D0AD79391EF50418FC2F56840B85441B81E85DB9CEF50417B14AE574FB854410103000000010000000A000000E17A149ECFEF5041713D0AF759B85441F6285CBFD2EF5041666666D669B85441666666D6D5EF50411F85EB2168B854411F85EB91D1EF50413333333355B85441E17A144ECFEF5041F6285CBF46B8544100000050CAEF504185EB517831B85441AE47E1BAC8EF5041C3F528BC31B854411F85EBC1C9EF5041F6285C5F38B854411F85EB21CEEF5041B81E85BB4FB85441E17A149ECFEF5041713D0AF759B85441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000FAB594A8A9EF504106D86AFD72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854413EFE99E98EEF504174DFAD2781B85441CBF3428997EF50418F36760F89B85441335D51E898EF50419D2B47518AB85441E33D8EC399EF50417E49AE288AB85441295C8F229BEF50417B14AEE789B85441EB2672EDA4EF5041BB2D79897CB85441846D1F25A6EF5041CAB6FEDF7AB85441F97F0B4AA7EF50412AF90B8D79B85441DDE672B6A8EF5041ABFF61E777B85441191F8FF2A9EF504142E0997976B854416FB427ACA9EF5041164086FB72B85441FAB594A8A9EF504106D86AFD72B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 362736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441B81E85BB16F0504185EB516857B85441A4703DEAF5EF5041A4703D7A6AB854415C8FC2C5ECEF5041CDCCCC4C71B854417B14AEE7E2EF50410AD7A31076B854417B14AE67D3EF50419A9999B97BB854410AD7A330C0EF5041E17A144E7DB854417B14AE57B1EF50419A9999C97AB854413D0AD753B0EF504114AE47317CB85441000000A0B7EF5041CDCCCC8C81B85441D7A370CDB9EF50416666669684B8544100000040BAEF50415C8FC24588B85441A4703DFABBEF50417B14AE2788B85441AE47E1AAC6EF5041B81E850B85B854413D0AD7E3D3EF50413333334387B854410AD7A370DCEF5041AE47E1CA86B85441F6285C5FE5EF5041D7A3706D84B85441F6285C2FE2EF504148E17A347CB85441E17A140EE4EF50417B14AE677BB854418FC2F5A8EAEF50413333339378B85441D7A3707DF7EF5041C3F5282C73B85441E17A146E05F05041A4703DAA6CB85441333333C307F050419A9999396FB85441F6285C6F10F0504185EB51886CB85441295C8FD211F050413D0AD7A36FB85441CDCCCC9C1DF05041EC51B8FE6AB8544148E17A741BF0504148E17A8465B85441CDCCCC9C24F05041713D0AB762B854415C8FC26529F050411F85EB4168B854410103000000010000000C0000003D0AD7F3A3EF5041EC51B8DE8FB85441F6285C8FA9EF50415C8FC2258DB85441295C8F22B7EF50418FC2F5088AB854411F85EB11B9EF504148E17AE487B854413D0AD7A3B8EF50411F85EB0185B854413D0AD7C3B6EF504148E17A6482B85441B81E85ABACEF5041295C8FF27AB854419A999949A6EF50419A9999697FB85441000000B09CEF50418FC2F5288BB854415C8FC2F59BEF50411F85EB718CB854410AD7A3B0A4EF5041C3F528FC8BB854413D0AD7F3A3EF5041EC51B8DE8FB8544101030000000100000009000000295C8F229BEF50417B14AEE789B8544152B81E25A6EF5041000000E07AB85441295C8FF2A9EF50419A99997976B85441C3F528ACA9EF5041B81E85FB72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854419A9999E98EEF50417B14AE2781B8544185EB51E898EF504114AE47518AB85441295C8F229BEF50417B14AEE789B854410103000000010000002F0000008FC2F598EDEF5041713D0AE7D1B85441E17A148EDCEF5041666666E6D2B8544152B81EF5DCEF504185EB51E8CBB85441E17A14FEEEEF504114AE47E1CAB85441E17A149E05F0504114AE4741C6B85441EC51B81E1AF050417B14AEF7C3B85441C3F528AC21F0504148E17AD4C2B854415C8FC29504F050415C8FC275C0B8544166666606F8EF50417B14AEB7BFB85441C3F528FCF6EF50419A9999F9BEB85441E17A149ED9EF50415C8FC2B5BCB85441000000D0D0EF5041E17A146EBDB85441B81E855BC6EF504185EB51E8C2B85441EC51B8AEBFEF5041713D0AD7CCB85441F6285C1FBDEF5041B81E85EBCCB85441B81E85CBBDEF5041713D0AD7D0B854410AD7A370C2EF504152B81E35D7B854411F85EB71C4EF5041AE47E12AD9B854411F85EB61C9EF504133333383DCB8544148E17A44D8EF504114AE4731E4B854419A999979E5EF504114AE4701EBB8544100000080F5EF504114AE47F1F1B85441713D0AF7F5EF5041CDCCCCBCF0B854410AD7A3D0F3EF5041713D0AD7EEB854418FC2F578EFEF504152B81E35EEB8544133333363EFEF50417B14AE97EBB854419A9999D9F6EF50410AD7A3D0ECB854411F85EB21FDEF504133333333F1B85441000000A0FCEF5041CDCCCC2CF6B854418FC2F5B8FDEF5041CDCCCCFCF7B85441666666F603F05041F6285CEFF6B854413333336308F05041A4703DBAFAB8544114AE47F105F05041EC51B8BEFFB85441EC51B83E03F050418FC2F588FFB8544152B81E9503F05041D7A3706DFDB854410AD7A31002F0504148E17A64FAB854410AD7A330FDEF50413D0AD763F9B8544185EB5138FEEF5041AE47E15AFBB85441B81E858B02F050415C8FC2350CB954415C8FC2C503F05041B81E859B0FB95441B81E85EB05F05041F6285C7F12B9544185EB51A815F05041713D0A9706B95441A4703DAA0BF05041EC51B80EF8B85441AE47E1CAFFEF5041000000E0ECB85441D7A370FDF7EF504166666636E7B85441E17A141EEFEF50417B14AEB7E2B854418FC2F598EDEF5041713D0AE7D1B854410103000000010000003100000014AE47E157F050415C8FC2E547B854410AD7A36058F05041AE47E1CA4AB854413D0AD72359F05041000000A058B854417B14AE6755F05041D7A370FD69B854418FC2F5C850F050411F85EB8177B85441B81E856B4EF05041C3F528FC76B85441CDCCCC4C4DF05041B81E85AB7AB854411F85EB5141F05041AE47E12A8CB8544114AE47C13AF05041F6285CFF93B854417B14AED736F05041B81E855B98B85441A4703D9A2DF0504100000050A4B85441295C8F122BF05041AE47E12AA6B85441F6285C2F28F05041A4703D7AA7B854417B14AE671CF050419A999959ABB854411F85EBD1F0EF504100000080B2B85441295C8FC2D9EF504152B81EF5B6B85441AE47E13AD0EF50413D0AD7E3BAB85441EC51B8AED9EF5041EC51B81EBAB85441295C8F52F7EF50410AD7A390BBB854415C8FC29504F0504152B81E05BDB8544152B81EE521F0504114AE4761BFB85441A4703DDA32F0504166666676C0B854413D0AD7F33FF05041D7A370EDC1B854417B14AEB74AF05041AE47E1EAC1B854410000003052F05041D7A3703DBCB85441295C8F0251F05041A4703D1AB9B8544185EB51084DF050410AD7A3D0B2B85441666666F64CF05041B81E85FBADB854417B14AE674FF05041F6285CCFA9B85441000000C058F05041AE47E11A9CB8544148E17AB45BF050415C8FC27598B85441B81E85DB67F05041333333338FB85441666666166FF05041B81E85AB8BB85441CDCCCCAC7AF0504185EB51B888B8544152B81E057FF0504148E17A0487B85441B81E85DB8BF05041EC51B87E7EB854410AD7A3808EF05041000000407BB854419A9999998DF0504148E17A3477B85441D7A3702D7BF05041D7A370FD7AB8544152B81EE565F05041C3F5287C7BB85441F6285C3F53F0504185EB513876B85441E17A14CE56F0504114AE47516CB85441713D0AD759F0504152B81ED55FB8544148E17AD45AF050413333334356B85441B81E857B55F05041000000D038B854419A99991950F05041CDCCCC6C3CB8544185EB51F84CF05041E17A149E3EB854413D0AD7D353F05041F6285C4F48B8544114AE47E157F050415C8FC2E547B8544101030000000100000017000000333333F3D9EF5041D7A370DD8DB854413D0AD713D7EF5041713D0A1788B85441713D0AD7D3EF504148E17A4488B85441333333B3C6EF5041295C8F0286B854413D0AD743BCEF5041D7A3701D89B85441A4703DCAB7EF50418FC2F5188BB8544148E17A14AAEF5041000000908EB854419A9999999FEF5041F6285C9F93B85441713D0A179BEF50415C8FC28599B8544152B81E2590EF5041A4703DAAA9B854413333337392EF5041E17A14EEAAB854413D0AD73399EF504114AE47A1AEB85441C3F5288C99EF50411F85EBD1AEB85441EC51B84E9EEF504152B81E65ABB8544148E17AF4ADEF50413D0AD783A0B854418FC2F5F8B2EF504185EB51E89EB854418FC2F558B8EF504148E17AD49BB854411F85EB01BAEF5041CDCCCCEC9BB85441D7A370EDBBEF5041E17A14BE9AB85441C3F5289CBCEF50419A99997998B85441C3F5284CC8EF5041CDCCCCDC92B85441C3F5287CCEEF50410000003092B85441333333F3D9EF5041D7A370DD8DB854410103000000020000001200000066666666DAEF5041CDCCCC9C65B8544166666676DFEF504114AE47D162B8544114AE4771EFEF5041B81E85FB55B85441B81E850BF0EF504148E17A0454B854411F85EBB1EBEF504152B81E9545B854415C8FC285E6EF504148E17A8434B854415C8FC2C5E3EF5041713D0A8738B8544114AE47A1DEEF5041A4703D1A2EB85441B81E85DBD8EF5041EC51B80E2FB85441E17A149ED9EF50413333336334B854415C8FC2C5D4EF50413333333337B85441E17A142ED2EF5041A4703D2A30B85441D7A3703DCFEF5041713D0AA730B85441E17A148ED5EF50413333330344B854415C8FC2C5D4EF5041B81E850B46B854419A9999C9D5EF5041333333934AB854411F85EB81D7EF5041B81E85AB55B8544166666666DAEF5041CDCCCC9C65B854410B0000001F85EB01DAEF5041713D0A0736B854415C8FC245DCEF5041F6285C3F3AB85441E17A14FEDDEF5041713D0A2739B854411F85EB61E3EF5041F6285C6F3CB854415C8FC265E4EF5041F6285CDF3FB85441E17A14EEE3EF50413333335344B854419A999919E0EF5041B81E85AB46B8544133333303E0EF50410AD7A3E049B854411F85EBE1DBEF5041713D0AC743B854419A999959D7EF5041F6285CBF37B854411F85EB01DAEF5041713D0A0736B854410103000000010000001A00000085EB5138E5EF5041333333032DB85441666666A6ECEF5041295C8F5245B85441E17A148EF1EF5041B81E858B55B8544100000000E0EF5041A4703DAA63B8544148E17A24D2EF50411F85EB516BB85441CDCCCC3CCBEF5041333333636DB8544148E17AE4C6EF5041AE47E1BA6FB85441A4703D5AC3EF5041C3F5284C73B85441CDCCCCFCBEEF50417B14AE7775B8544148E17AF4AEEF504185EB515879B85441D7A3703DC0EF5041D7A3704D7CB854411F85EB31D3EF504114AE47C17AB85441AE47E18AE2EF5041295C8F2275B854413D0AD7F3EBEF504152B81E0570B85441E17A145EF5EF5041333333B369B85441CDCCCC5C12F05041EC51B8CE58B8544148E17A8413F050415C8FC2E556B854413333338311F05041A4703D5A54B85441295C8F120AF050419A9999893CB85441F6285C6FFEEF50415C8FC2052BB85441F6285C2FFBEF50419A9999E927B8544185EB51F8F6EF5041D7A3705D26B85441D7A3709DF1EF50415C8FC24526B85441A4703DEAEBEF50418FC2F53829B85441295C8F12E6EF5041B81E856B2BB8544185EB5138E5EF5041333333032DB8544101030000000100000005000000713D0A87C8EF5041AE47E11A61B85441A4703D0AC3EF5041EC51B8AE32B85441D7A3703DBCEF50410AD7A3D033B85441F6285C4FBBEF50413333333335B85441713D0A87C8EF5041AE47E11A61B8544101030000000100000015000000B81E85DB9CEF50417B14AE574FB85441000000909DEF5041C3F528FC50B854417B14AE07A0EF5041C3F528EC51B85441AE47E11AA2EF5041D7A370ED5AB85441AE47E11AA0EF5041000000905DB85441295C8FD2A0EF50418FC2F53865B85441333333A3A3EF504148E17A346AB854410AD7A3F0ACEF504114AE471173B85441F6285C7FB0EF5041B81E858B74B85441D7A3709DBDEF50417B14AE1772B854419A999959C1EF5041AE47E18A70B854411F85EBA1C4EF5041333333F36DB8544166666606C7EF50410AD7A3B06AB854417B14AE57C7EF5041000000A066B8544133333363C6EF504185EB519861B854410AD7A360BEEF504148E17AE446B854415C8FC2C5BCEF5041A4703D9A45B85441295C8FD2A2EF5041666666A643B85441E17A143E96EF50419A99999939B854413D0AD79391EF50418FC2F56840B85441B81E85DB9CEF50417B14AE574FB854410103000000010000000A000000E17A149ECFEF5041713D0AF759B85441F6285CBFD2EF5041666666D669B85441666666D6D5EF50411F85EB2168B854411F85EB91D1EF50413333333355B85441E17A144ECFEF5041F6285CBF46B8544100000050CAEF504185EB517831B85441AE47E1BAC8EF5041C3F528BC31B854411F85EBC1C9EF5041F6285C5F38B854411F85EB21CEEF5041B81E85BB4FB85441E17A149ECFEF5041713D0AF759B85441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000FAB594A8A9EF504106D86AFD72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854413EFE99E98EEF504174DFAD2781B85441CBF3428997EF50418F36760F89B85441335D51E898EF50419D2B47518AB85441E33D8EC399EF50417E49AE288AB85441295C8F229BEF50417B14AEE789B85441EB2672EDA4EF5041BB2D79897CB85441846D1F25A6EF5041CAB6FEDF7AB85441F97F0B4AA7EF50412AF90B8D79B85441DDE672B6A8EF5041ABFF61E777B85441191F8FF2A9EF504142E0997976B854416FB427ACA9EF5041164086FB72B85441FAB594A8A9EF504106D86AFD72B85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558276 - 24299
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB519818CE50417B14AEE7A2AF544185EB518807CE5041295C8FD29DAF5441CDCCCCBC05CE504185EB51289DAF54419A9999C901CE5041B81E859B9BAF544152B81ED5F6CD50417B14AE5797AF54415C8FC235F2CD50419A99998994AF544148E17AD4E6CD50417B14AE478FAF54418FC2F5A8E1CD5041C3F5284C8CAF5441713D0AA7DCCD50418FC2F52889AF54417B14AE07D9CD50415C8FC20588AF54411F85EB71D0CD50416666664687AF5441B81E854BCECD5041E17A140E8BAF5441AE47E17ADCCD5041EC51B8EE93AF5441AE47E1CAE2CD50410000009097AF54415C8FC235EACD5041AE47E17A9AAF5441E17A14EEF2CD504148E17A549EAF5441295C8F82F4CD5041AE47E15A9EAF544185EB5148F7CD50419A999959A0AF5441713D0AC7FBCD5041F6285C9FA3AF5441CDCCCCCCFDCD50417B14AEA7A4AF5441333333D311CE504148E17AE4ABAF5441000000C013CE504114AE4751ABAF5441AE47E10A19CE5041295C8F42A4AF544185EB519818CE50417B14AEE7A2AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004DDF08DEF2CD50410E9A465D9EAF5441D21605E1F2CD5041B51F495B9EAF5441943E7818F2CD504198092BF69DAF54417FFD0117EBCD50415D7A54DE9AAF5441C9B06BBFE6CD5041F858421E99AF5441E0B176BDE6CD5041E74A7D1D99AF5441E0C00BBAE6CD5041A527251C99AF5441FD4515B6E6CD50410522961A99AF5441C36F4E3BE6CD504129DE21279AAF54413250D3CEF1CD504118BFA8E69EAF54417A0A6B12F2CD5041111CE5CC9EAF54414DDF08DEF2CD50410E9A465D9EAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558276 - 64060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB519818CE50417B14AEE7A2AF544185EB518807CE5041295C8FD29DAF5441CDCCCCBC05CE504185EB51289DAF54419A9999C901CE5041B81E859B9BAF544152B81ED5F6CD50417B14AE5797AF54415C8FC235F2CD50419A99998994AF544148E17AD4E6CD50417B14AE478FAF54418FC2F5A8E1CD5041C3F5284C8CAF5441713D0AA7DCCD50418FC2F52889AF54417B14AE07D9CD50415C8FC20588AF54411F85EB71D0CD50416666664687AF5441B81E854BCECD5041E17A140E8BAF5441AE47E17ADCCD5041EC51B8EE93AF5441AE47E1CAE2CD50410000009097AF54415C8FC235EACD5041AE47E17A9AAF5441E17A14EEF2CD504148E17A549EAF5441295C8F82F4CD5041AE47E15A9EAF544185EB5148F7CD50419A999959A0AF5441713D0AC7FBCD5041F6285C9FA3AF5441CDCCCCCCFDCD50417B14AEA7A4AF5441333333D311CE504148E17AE4ABAF5441000000C013CE504114AE4751ABAF5441AE47E10A19CE5041295C8F42A4AF544185EB519818CE50417B14AEE7A2AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004DDF08DEF2CD50410E9A465D9EAF5441D21605E1F2CD5041B51F495B9EAF5441943E7818F2CD504198092BF69DAF54417FFD0117EBCD50415D7A54DE9AAF5441C9B06BBFE6CD5041F858421E99AF5441E0B176BDE6CD5041E74A7D1D99AF5441E0C00BBAE6CD5041A527251C99AF5441FD4515B6E6CD50410522961A99AF5441C36F4E3BE6CD504129DE21279AAF54413250D3CEF1CD504118BFA8E69EAF54417A0A6B12F2CD5041111CE5CC9EAF54414DDF08DEF2CD50410E9A465D9EAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>559978 - 223323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD733B1CF50419A9999C985B05441A4703DBABFCF5041B81E85EB86B05441EC51B8AEC0CF50418FC2F56885B054415C8FC255CECF504152B81EB585B05441295C8FD2D8CF50417B14AE5782B0544166666616DDCF50413D0AD74382B0544152B81EE5DFCF5041EC51B8EE80B054418FC2F518EACF5041CDCCCC0C7BB054415C8FC2F5E9CF5041C3F5283C79B054418FC2F538E0CF5041D7A3700D77B054413D0AD7D3DACF50410000001075B05441D7A3703DD9CF504114AE47717DB054419A999969D3CF504185EB51387FB054419A9999B9BDCF504114AE47217EB05441A4703DCAB1CF5041000000C07CB05441E17A143EA5CF50413333333379B05441D7A3701D98CF5041AE47E1AA71B05441CDCCCC9C94CF504148E17A346EB054418FC2F5F88FCF5041E17A14AE6BB0544114AE474179CF50419A99990965B054417B14AE976ACF50410AD7A3C062B05441295C8FE250CF50413333335366B05441333333D350CF5041F6285C1F67B0544185EB51B850CF5041B81E858B68B054413D0AD70350CF50417B14AEF771B0544114AE479150CF50410000001075B054413D0AD72355CF5041295C8F0280B05441D7A370CD56CF50419A99991985B05441F6285CFF56CF5041295C8FF28AB05441B81E858B59CF5041F6285CEF8DB05441F6285C8F6ACF5041C3F5283CA1B05441A4703D9A6DCF50413333339390B05441713D0A0771CF504152B81E957AB05441D7A3703D72CF5041AE47E1DA7AB0544114AE47B190CF5041000000C081B05441C3F5287C91CF5041AE47E12A80B054419A9999A993CF5041EC51B8DE7FB05441E17A14CE95CF5041CDCCCC5C80B054418FC2F5089ACF5041C3F528DC82B054413D0AD733B1CF50419A9999C985B05441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000C62044DBDCCF5041B61EEA4482B05441B07E41D5DFCF504198D7F8DB80B05441A38A893FE0CF5041957ADCBE7DB054416290E8F1D7CF50418F9FB4FD7EB054416BC82CD0D9CF504191DD1C1181B05441D36AAF59DBCF504195C5EB4B82B05441C62044DBDCCF5041B61EEA4482B05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>559978 - 389882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD733B1CF50419A9999C985B05441A4703DBABFCF5041B81E85EB86B05441EC51B8AEC0CF50418FC2F56885B054415C8FC255CECF504152B81EB585B05441295C8FD2D8CF50417B14AE5782B0544166666616DDCF50413D0AD74382B0544152B81EE5DFCF5041EC51B8EE80B054418FC2F518EACF5041CDCCCC0C7BB054415C8FC2F5E9CF5041C3F5283C79B054418FC2F538E0CF5041D7A3700D77B054413D0AD7D3DACF50410000001075B05441D7A3703DD9CF504114AE47717DB054419A999969D3CF504185EB51387FB054419A9999B9BDCF504114AE47217EB05441A4703DCAB1CF5041000000C07CB05441E17A143EA5CF50413333333379B05441D7A3701D98CF5041AE47E1AA71B05441CDCCCC9C94CF504148E17A346EB054418FC2F5F88FCF5041E17A14AE6BB0544114AE474179CF50419A99990965B054417B14AE976ACF50410AD7A3C062B05441295C8FE250CF50413333335366B05441333333D350CF5041F6285C1F67B0544185EB51B850CF5041B81E858B68B054413D0AD70350CF50417B14AEF771B0544114AE479150CF50410000001075B054413D0AD72355CF5041295C8F0280B05441D7A370CD56CF50419A99991985B05441F6285CFF56CF5041295C8FF28AB05441B81E858B59CF5041F6285CEF8DB05441F6285C8F6ACF5041C3F5283CA1B05441A4703D9A6DCF50413333339390B05441713D0A0771CF504152B81E957AB05441D7A3703D72CF5041AE47E1DA7AB0544114AE47B190CF5041000000C081B05441C3F5287C91CF5041AE47E12A80B054419A9999A993CF5041EC51B8DE7FB05441E17A14CE95CF5041CDCCCC5C80B054418FC2F5089ACF5041C3F528DC82B054413D0AD733B1CF50419A9999C985B05441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000C62044DBDCCF5041B61EEA4482B05441B07E41D5DFCF504198D7F8DB80B05441A38A893FE0CF5041957ADCBE7DB054416290E8F1D7CF50418F9FB4FD7EB054416BC82CD0D9CF504191DD1C1181B05441D36AAF59DBCF504195C5EB4B82B05441C62044DBDCCF5041B61EEA4482B05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629100 - 395993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000AE47E13AD90051410AD7A390FC025541C3F5280CD5005141295C8FB2FA02554166666696D00051413D0AD7D3F8025541C3F528ECCF005141E17A14AEF802554114AE4741CF005141295C8FB2F8025541CDCCCCBCCE0051411F85EBE1F8025541EC51B8AECD0051410AD7A340F902554114AE4701CD0051413D0AD753F902554100000020CA0051418FC2F568FE025541AE47E14AD90051410AD7A3000503554152B81E15D800514114AE47F10B03554114AE47E1E2005141000000F00C0355418FC2F548E40051417B14AEC704035541F6285C3FE40051417B14AE4704035541E17A14EEE3005141EC51B81E0103554152B81EE5DD005141B81E858BFE025541AE47E13AD90051410AD7A390FC025541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000000000F0C9005141295C8F72FF02554166666666CC0051415C8FC2F5000355417B14AED7CC005141B81E853B01035541AE47E16ACC0051411F85EB810203554133333333CC005141B81E857B0303554133333343D1005141713D0A57060355413D0AD723D0005141B81E858B08035541CDCCCC8CCE0051419A9999B908035541755AD462CD005141B6C3D9510B035541ABD31E15D8005141DA0647F10B0355414165FC18D8005141F15B1BDB0B0355419F18E14AD9005141D1E4A400050355414048E5F6CE005141D20B718300035541C5750020CA005141BFF5F568FE025541A14088F4C9005141DAB3C2B5FE02554148E17AA4C900514133333343FF025541000000F0C9005141295C8F72FF025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564415 - 5219044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000041000000EC51B80E40655141295C8F52F0A65441295C8F624165514185EB5188EFA654411F85EBF13F6551413D0AD7B3EAA654419A9999293F6551419A9999B9E6A65441AE47E10A3F65514133333323E5A65441713D0A273F65514148E17A54E3A654419A9999593F6551419A999939E2A65441333333F33F655141D7A370EDE0A654410AD7A3904065514114AE4711E0A65441D7A370AD41655141C3F5285CDFA6544114AE47314565514148E17A04DEA654411F85EB3146655141333333D3DCA65441333333C3466551413D0AD7F3DBA65441AE47E1FA466551413D0AD773DBA65441B81E856B466551413D0AD7C3D9A65441CDCCCCBC4565514166666646D8A6544185EB512842655141CDCCCC3CDAA654419A9999793F6551413D0AD793DBA65441AE47E19A3E65514185EB5128DDA65441AE47E19A3E6551419A9999C9DDA65441713D0A073D65514114AE4721DFA65441B81E859B3B65514166666606E1A65441AE47E19A34655141B81E857BE6A65441713D0AC729655141F6285CFFECA65441D7A3705D1D65514133333393F1A65441B81E850B1C655141333333A3EFA65441B81E85BB17655141713D0A07ECA65441E17A142E15655141A4703D8AE7A65441EC51B8CE11655141000000F0E3A65441CDCCCCBC28655141F6285C0FD8A654411F85EB3129655141333333C3D8A65441E17A142E366551417B14AEC7CCA654413D0AD7333A65514114AE4711C9A65441AE47E1BA3A65514148E17A94C8A65441E17A14BE2C655141713D0A87BEA65441C3F528EC2C655141666666E6BDA65441C3F5286C2E6551410AD7A3A0B8A65441D7A3705D3165514166666646AEA65441000000002D655141A4703DFAA3A65441D7A3708D24655141CDCCCCECA3A654410AD7A3702565514148E17AB4A5A654410000009020655141C3F5289CAFA654411F85EBC1226551411F85EB91B4A6544185EB51D82065514148E17AC4B7A654418FC2F5881B65514114AE4721C2A654410AD7A3101B655141333333C3C2A6544114AE47C11C6551418FC2F5A8C5A65441CDCCCC0C2065514185EB51B8CAA65441333333A31D6551418FC2F538CDA65441666666461B65514133333343CFA65441295C8FC207655141CDCCCC9CDCA654415C8FC255F964514148E17A34E4A65441A4703D0AE9645141EC51B81EEDA65441EC51B83EE46451413D0AD793EFA654415C8FC255EC6451419A9999F9FBA65441E17A144EEE64514185EB5168FAA654419A999959F36451419A9999B9F7A65441C3F5289CF8645141F6285CEFF4A654413D0AD79302655141CDCCCC8CEEA6544148E17A14116551410AD7A350E4A6544148E17A5415655141AE47E16AEDA654411F85EB1117655141A4703D1AF6A65441AE47E1EA2C6551413D0AD703F3A654411F85EBF13E6551417B14AE77F0A65441EC51B80E40655141295C8F52F0A65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000DCF532CB36655141D61B251CF0A654418816E4C0396551413F904B2AEFA6544129388CF13B655141020FB8FBECA65441E6713CDC3B6551410CDDAC58E9A65441E29316F53A6551416BC791A1E4A6544159A30BB7396551419375FB7FE2A65441D11005CC376551415695ABFEE3A6544130CEADFA346551414093DB30E6A6544161573EC7326551412FA1E694E7A65441C7BB61C02F65514192522467E9A65441B6E397582D6551411AC7AAD9EAA654417744C4662A6551414147409FECA65441370934752865514163ABF27BEDA65441CC785F7A24655141EA75ACF3EEA6544154E786CF21655141159F7EEFEFA6544141213AF71F6551416989AB9DF0A654416F60BFC01D655141790F06C8F1A654419932E0CC1F655141CB1765DEF4A65441DCF532CB36655141D61B251CF0A65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564503 - 1262203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA754415C8FC2B5ED6551410AD7A3F05AA754417B14AE17E4655141EC51B88E5CA7544152B81E25E36551410AD7A3705CA75441EC51B88EDC655141713D0A575DA75441295C8F72D8655141CDCCCC8C5DA754418FC2F508CB6551419A9999C95DA7544166666696C6655141333333B35DA754411F85EBA1BC655141B81E853B5EA754415C8FC2E5BA655141C3F5282C5EA754418FC2F5F8B0655141D7A3703D5EA7544100000010A76551411F85EBE15DA75441C3F5282C92655141B81E857B5AA754418FC2F50888655141000000C05CA754419A9999397C6551413D0AD7F35CA754415C8FC2B5796551415C8FC2955CA7544148E17AE476655141B81E852B60A75441A4703DFA76655141D7A370ED60A75441A4703DCA8365514114AE479161A754413D0AD703976551416666660662A7544152B81E059765514114AE474167A754415C8FC225B565514152B81E8567A75441333333D3D4655141A4703D7A66A7544152B81EB5D46551419A99996961A754417B14AE17E26551417B14AE1760A75441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A754413D0AD7B382655141CDCCCC2C52A75441F6285C4F806551410000003054A7544152B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA7544148E17AE476655141B81E852B60A754410595E69278655141911BA84160A75441287F1B308465514160C540B660A754419415C56896655141C83F574561A7544135B6D5B196655141A9AFAC885DA75441A0FB7EBB9A655141863F0AAD5DA754411DC7AA09A2655141863F0AAD5DA754418EC77F19A9655141863F0AAD5DA75441BB92A6F9B3655141144E36385EA75441A07379C4BB65514113A8DC335EA7544160C0EB73C4655141507A6ED05DA7544145C14E4CCA6551410172E3C55DA75441642FBD86D4655141A934939E5DA754416D28689BD46551419ED5B7295EA7544177B44820C1655141BBD29D915EA754414B44ED5CBB655141C06B65A65EA75441BC14A3BBB3655141C4042DBB5EA754419560472EA9655141C06B65A65EA754410F638CB6A1655141B739D67C5EA754419E62B7A69A655141A6D5B7295EA754410245DEA597655141A6D5B7295EA75441AE5BDD0397655141B12B372062A7544152B81E059765514114AE474167A754415C8FC225B565514152B81E8567A75441333333D3D4655141A4703D7A66A7544152B81EB5D46551419A99996961A754417B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564503 - 3667879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA754415C8FC2B5ED6551410AD7A3F05AA754417B14AE17E4655141EC51B88E5CA7544152B81E25E36551410AD7A3705CA75441EC51B88EDC655141713D0A575DA75441295C8F72D8655141CDCCCC8C5DA754418FC2F508CB6551419A9999C95DA7544166666696C6655141333333B35DA754411F85EBA1BC655141B81E853B5EA754415C8FC2E5BA655141C3F5282C5EA754418FC2F5F8B0655141D7A3703D5EA7544100000010A76551411F85EBE15DA75441C3F5282C92655141B81E857B5AA754418FC2F50888655141000000C05CA754419A9999397C6551413D0AD7F35CA754415C8FC2B5796551415C8FC2955CA7544148E17AE476655141B81E852B60A75441A4703DFA76655141D7A370ED60A75441A4703DCA8365514114AE479161A754413D0AD703976551416666660662A7544152B81E059765514114AE474167A754415C8FC225B565514152B81E8567A75441333333D3D4655141A4703D7A66A7544152B81EB5D46551419A99996961A754417B14AE17E26551417B14AE1760A75441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A754413D0AD7B382655141CDCCCC2C52A75441F6285C4F806551410000003054A7544152B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA7544148E17AE476655141B81E852B60A754410595E69278655141911BA84160A75441287F1B308465514160C540B660A754419415C56896655141C83F574561A7544135B6D5B196655141A9AFAC885DA75441A0FB7EBB9A655141863F0AAD5DA754411DC7AA09A2655141863F0AAD5DA754418EC77F19A9655141863F0AAD5DA75441BB92A6F9B3655141144E36385EA75441A07379C4BB65514113A8DC335EA7544160C0EB73C4655141507A6ED05DA7544145C14E4CCA6551410172E3C55DA75441642FBD86D4655141A934939E5DA754416D28689BD46551419ED5B7295EA7544177B44820C1655141BBD29D915EA754414B44ED5CBB655141C06B65A65EA75441BC14A3BBB3655141C4042DBB5EA754419560472EA9655141C06B65A65EA754410F638CB6A1655141B739D67C5EA754419E62B7A69A655141A6D5B7295EA754410245DEA597655141A6D5B7295EA75441AE5BDD0397655141B12B372062A7544152B81E059765514114AE474167A754415C8FC225B565514152B81E8567A75441333333D3D4655141A4703D7A66A7544152B81EB5D46551419A99996961A754417B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564509 - 1262203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002100000052B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA754419A9999397C6551413D0AD7F35CA754418FC2F50888655141000000C05CA75441C3F5282C92655141B81E857B5AA7544100000010A76551411F85EBE15DA754418FC2F5F8B0655141D7A3703D5EA754415C8FC2E5BA655141C3F5282C5EA754411F85EBA1BC655141B81E853B5EA7544166666696C6655141333333B35DA754418FC2F508CB6551419A9999C95DA75441295C8F72D8655141CDCCCC8C5DA75441EC51B88EDC655141713D0A575DA7544152B81E25E36551410AD7A3705CA754417B14AE17E4655141EC51B88E5CA754415C8FC2B5ED6551410AD7A3F05AA75441E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A754413D0AD7B382655141CDCCCC2C52A75441F6285C4F806551410000003054A7544152B81E257F6551419A9999A955A75441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A754413D0AD7B382655141CDCCCC2C52A75441F6285C4F806551410000003054A7544152B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA7544148E17AE476655141B81E852B60A754410595E69278655141911BA84160A75441287F1B308465514160C540B660A754419415C56896655141C83F574561A7544135B6D5B196655141A9AFAC885DA75441A0FB7EBB9A655141863F0AAD5DA754411DC7AA09A2655141863F0AAD5DA754418EC77F19A9655141863F0AAD5DA75441BB92A6F9B3655141144E36385EA75441A07379C4BB65514113A8DC335EA7544160C0EB73C4655141507A6ED05DA7544145C14E4CCA6551410172E3C55DA75441642FBD86D4655141A934939E5DA754416D28689BD46551419ED5B7295EA7544177B44820C1655141BBD29D915EA754414B44ED5CBB655141C06B65A65EA75441BC14A3BBB3655141C4042DBB5EA754419560472EA9655141C06B65A65EA754410F638CB6A1655141B739D67C5EA754419E62B7A69A655141A6D5B7295EA754410245DEA597655141A6D5B7295EA75441AE5BDD0397655141B12B372062A7544152B81E059765514114AE474167A754415C8FC225B565514152B81E8567A75441333333D3D4655141A4703D7A66A7544152B81EB5D46551419A99996961A754417B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564509 - 3667879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002100000052B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA754419A9999397C6551413D0AD7F35CA754418FC2F50888655141000000C05CA75441C3F5282C92655141B81E857B5AA7544100000010A76551411F85EBE15DA754418FC2F5F8B0655141D7A3703D5EA754415C8FC2E5BA655141C3F5282C5EA754411F85EBA1BC655141B81E853B5EA7544166666696C6655141333333B35DA754418FC2F508CB6551419A9999C95DA75441295C8F72D8655141CDCCCC8C5DA75441EC51B88EDC655141713D0A575DA7544152B81E25E36551410AD7A3705CA754417B14AE17E4655141EC51B88E5CA754415C8FC2B5ED6551410AD7A3F05AA75441E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A754413D0AD7B382655141CDCCCC2C52A75441F6285C4F806551410000003054A7544152B81E257F6551419A9999A955A75441
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A754413D0AD7B382655141CDCCCC2C52A75441F6285C4F806551410000003054A7544152B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA7544148E17AE476655141B81E852B60A754410595E69278655141911BA84160A75441287F1B308465514160C540B660A754419415C56896655141C83F574561A7544135B6D5B196655141A9AFAC885DA75441A0FB7EBB9A655141863F0AAD5DA754411DC7AA09A2655141863F0AAD5DA754418EC77F19A9655141863F0AAD5DA75441BB92A6F9B3655141144E36385EA75441A07379C4BB65514113A8DC335EA7544160C0EB73C4655141507A6ED05DA7544145C14E4CCA6551410172E3C55DA75441642FBD86D4655141A934939E5DA754416D28689BD46551419ED5B7295EA7544177B44820C1655141BBD29D915EA754414B44ED5CBB655141C06B65A65EA75441BC14A3BBB3655141C4042DBB5EA754419560472EA9655141C06B65A65EA754410F638CB6A1655141B739D67C5EA754419E62B7A69A655141A6D5B7295EA754410245DEA597655141A6D5B7295EA75441AE5BDD0397655141B12B372062A7544152B81E059765514114AE474167A754415C8FC225B565514152B81E8567A75441333333D3D4655141A4703D7A66A7544152B81EB5D46551419A99996961A754417B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960606 - 130508
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000397FAA4FB7B1504174940310EF49554145AD41D8C1B150416A0089C5DD4955412E9E2166A9B150418DAB54ACCD49554194CE5D6699B15041CCFC8B49DB495541397FAA4FB7B1504174940310EF495541
+</a>
+
+<b>
+01060000000100000001030000000100000007000000018D1072A9B15041877430B4CD495541D7F3776F99B150411BD7FF45DB495541CED7F24FB7B15041CCD28C0FEF49554160257842BEB15041757017A8E34955418BB5ACCEC1B150413D9B38D2DD495541F39C61DFB6B1504179BDC98BD6495541018D1072A9B15041877430B4CD495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960606 - 329675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000397FAA4FB7B1504174940310EF49554145AD41D8C1B150416A0089C5DD4955412E9E2166A9B150418DAB54ACCD49554194CE5D6699B15041CCFC8B49DB495541397FAA4FB7B1504174940310EF495541
+</a>
+
+<b>
+01060000000100000001030000000100000007000000018D1072A9B15041877430B4CD495541D7F3776F99B150411BD7FF45DB495541CED7F24FB7B15041CCD28C0FEF49554160257842BEB15041757017A8E34955418BB5ACCEC1B150413D9B38D2DD495541F39C61DFB6B1504179BDC98BD6495541018D1072A9B15041877430B4CD495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565876 - 903813
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441859A993C436351418221C49D49A55441BC5F54994163514135A216034AA5544177DE83CA396351419DE620E64BA554418599684D3D63514143962D0157A55441DD189CFE29635141DDD4D68F5EA55441587FF1B33B6351414815B91486A55441C184C66844635141045D6E8299A55441072B7CCD51635141B8F3FDB5B6A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>566799 - 1183640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000008FC2F5C87D21514166666686349E5441E17A14BE84215141D7A3705D459E54410000001089215141E17A14EE4D9E5441CDCCCC8C892151417B14AEA7509E54413D0AD7938B215141333333434F9E5441AE47E1EA8D2151417B14AE47519E5441AE47E1CA8D21514152B81E95529E5441295C8F52A721514114AE47916E9E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E54413D0AD793EB21514148E17A54229E5441E17A14CEE321514114AE47D10D9E5441EC51B8EEDB2151411F85EB11109E544152B81EB5CF215141C3F528BC169E5441A4703D8AC92151411F85EBE1189E5441D7A370BDC42151419A999959199E544114AE47B1BA215141E17A143E179E544133333363A52151411F85EBB1189E5441C3F5285C9421514152B81EC5199E5441B81E85CB9221514114AE47111A9E5441666666668E2151417B14AE871C9E5441D7A370AD89215141CDCCCC8C1E9E54419A999959802151411F85EBF11F9E5441AE47E1AA79215141F6285C8F219E5441B81E856B78215141B81E85FB219E5441F6285CEF78215141C3F5283C269E54418FC2F54879215141F6285C4F289E5441CDCCCC1C7A215141000000002B9E54418FC2F5C87D21514166666686349E5441
+</a>
+
+<b>
+01060000000100000001030000000100000024000000253F78619F215141C658AFDC659E5441BD80AA15B0215141149828835E9E5441E50FEC9DB7215141629461CB689E54411ACACE0DB9215141116DEB46689E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E54413D0AD793EB21514148E17A54229E5441E17A14CEE321514114AE47D10D9E5441EC51B8EEDB2151411F85EB11109E544152B81EB5CF215141C3F528BC169E5441A4703D8AC92151411F85EBE1189E5441D7A370BDC42151419A999959199E544114AE47B1BA215141E17A143E179E544133333363A52151411F85EBB1189E5441C3F5285C9421514152B81EC5199E5441B81E85CB9221514114AE47111A9E5441666666668E2151417B14AE871C9E5441D7A370AD89215141CDCCCC8C1E9E54419A999959802151411F85EBF11F9E5441AE47E1AA79215141F6285C8F219E5441B81E856B78215141B81E85FB219E5441F6285CEF78215141C3F5283C269E54418FC2F54879215141F6285C4F289E5441CDCCCC1C7A215141000000002B9E54418FC2F5C87D21514166666686349E5441E17A14BE84215141D7A3705D459E54410000001089215141E17A14EE4D9E5441CDCCCC8C892151417B14AEA7509E54413D0AD7938B215141333333434F9E5441AE47E1EA8D2151417B14AE47519E5441AE47E1CA8D21514152B81E95529E5441253F78619F215141C658AFDC659E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>566799 - 3366854
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000008FC2F5C87D21514166666686349E5441E17A14BE84215141D7A3705D459E54410000001089215141E17A14EE4D9E5441CDCCCC8C892151417B14AEA7509E54413D0AD7938B215141333333434F9E5441AE47E1EA8D2151417B14AE47519E5441AE47E1CA8D21514152B81E95529E5441295C8F52A721514114AE47916E9E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E54413D0AD793EB21514148E17A54229E5441E17A14CEE321514114AE47D10D9E5441EC51B8EEDB2151411F85EB11109E544152B81EB5CF215141C3F528BC169E5441A4703D8AC92151411F85EBE1189E5441D7A370BDC42151419A999959199E544114AE47B1BA215141E17A143E179E544133333363A52151411F85EBB1189E5441C3F5285C9421514152B81EC5199E5441B81E85CB9221514114AE47111A9E5441666666668E2151417B14AE871C9E5441D7A370AD89215141CDCCCC8C1E9E54419A999959802151411F85EBF11F9E5441AE47E1AA79215141F6285C8F219E5441B81E856B78215141B81E85FB219E5441F6285CEF78215141C3F5283C269E54418FC2F54879215141F6285C4F289E5441CDCCCC1C7A215141000000002B9E54418FC2F5C87D21514166666686349E5441
+</a>
+
+<b>
+01060000000100000001030000000100000024000000253F78619F215141C658AFDC659E5441BD80AA15B0215141149828835E9E5441E50FEC9DB7215141629461CB689E54411ACACE0DB9215141116DEB46689E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E54413D0AD793EB21514148E17A54229E5441E17A14CEE321514114AE47D10D9E5441EC51B8EEDB2151411F85EB11109E544152B81EB5CF215141C3F528BC169E5441A4703D8AC92151411F85EBE1189E5441D7A370BDC42151419A999959199E544114AE47B1BA215141E17A143E179E544133333363A52151411F85EBB1189E5441C3F5285C9421514152B81EC5199E5441B81E85CB9221514114AE47111A9E5441666666668E2151417B14AE871C9E5441D7A370AD89215141CDCCCC8C1E9E54419A999959802151411F85EBF11F9E5441AE47E1AA79215141F6285C8F219E5441B81E856B78215141B81E85FB219E5441F6285CEF78215141C3F5283C269E54418FC2F54879215141F6285C4F289E5441CDCCCC1C7A215141000000002B9E54418FC2F5C87D21514166666686349E5441E17A14BE84215141D7A3705D459E54410000001089215141E17A14EE4D9E5441CDCCCC8C892151417B14AEA7509E54413D0AD7938B215141333333434F9E5441AE47E1EA8D2151417B14AE47519E5441AE47E1CA8D21514152B81E95529E5441253F78619F215141C658AFDC659E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>567274 - 4557116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D0000008FC2F5789D175141713D0AE721A15441713D0AE79B1751415C8FC21521A15441333333D3981751415C8FC2B51FA154410000001095175141AE47E1FA1DA15441CDCCCCEC8E175141E17A146E1AA15441333333138B1751418FC2F54818A1544185EB51E885175141A4703D0A15A15441713D0AA7831751411F85EB7113A154411F85EB81811751419A99996911A154419A9999897E175141000000F00EA1544185EB51487C175141B81E853B0DA15441D7A3704D7A1751410AD7A3A00CA15441C3F5280C78175141666666760CA15441000000307517514114AE47110DA15441295C8F62721751410AD7A3000EA154418FC2F5E86F1751415C8FC2C50EA15441C3F528FC6D17514148E17A440FA15441295C8F826B175141295C8F520FA15441EC51B83E69175141C3F528EC0EA15441D7A3706D67175141333333E30DA154417B14AE075F175141000000E014A15441D7A3708D5B17514148E17AF418A1544185EB515859175141713D0AF71BA15441295C8F1258175141D7A370ED1FA154418FC2F52857175141A4703DBA23A154417B14AE0757175141F6285C1F26A15441713D0A7755175141713D0A472FA15441C3F528BC5417514185EB512832A15441CDCCCC1C54175141F6285CFF33A154415C8FC27554175141A4703D5A34A15441AE47E18A5617514152B81EF535A15441EC51B8CE5C175141AE47E16A2DA1544152B81EA5661751413D0AD73322A15441EC51B80E6C175141D7A3704D26A154415C8FC2257B175141A4703DCA31A15441B81E85BB851751411F85EB4138A1544148E17A148A175141295C8FD238A15441F6285C1F90175141713D0AC739A15441713D0AE791175141F6285CCF35A1544185EB51B89317514114AE47E131A154411F85EBB19417514148E17AC42FA15441333333A397175141000000D029A15441B81E85AB98175141713D0AE727A15441AE47E1AA99175141B81E857B26A154418FC2F5789D175141713D0AE721A15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009A999919731751418FC2F5F84BA15441333333D37E175141000000603FA1544148E17A3482175141D7A3700D49A154413D0AD7F386175141D7A370BD43A154413D0AD7F386175141D7A370BD43A1544130CBC9088917514106902F6441A154415E6ECBED721751414D6532F732A1544181E7B1035B1751410BDFF54E22A1544188173E265717514157C94DEC23A15441E17A147E56175141666666462FA15441295C8FC255175141713D0A7732A1544152B81E35551751413D0AD76333A154415C8FC27554175141A4703D5A34A15441295C8F1253175141D7A3706D34A154413D0AD7834E175141D7A3702D34A154412D2420204B17514185BE6CF228A15441A4703DAA38175141A4703D3A30A15441C3F528AC2F1751410AD7A3F03AA15441666666862E1751419A9999F939A15441A4703DAA28175141000000803DA15441C3F5282C32175141A4703D2A45A154413D0AD75340175141666666E651A15441A4703DAA501751415C8FC2155EA154413D0AD793561751411F85EBC158A154411F85EB4157175141EC51B85E58A15441A4703D8A571751417B14AEA758A15441A4703DDA721751413D0AD7734DA154413D0AD70374175141000000C04CA154419A999919731751418FC2F5F84BA15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568100 - 1720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF13A155141000000003A8D54419A999919361551417B14AE473C8D54418FC2F5C8391551411F85EBE14D8D5441B81E85CB391551419A9999B9598D5441666666663E1551410AD7A390688D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D5441F6285CFF531551413D0AD7238D8D5441C3F5284C54155141A4703DAA828D54417B14AE9754155141EC51B85E788D5441D7A370ED54155141AE47E1BA6C8D5441D7A3705D5515514185EB5148638D54417B14AEE750155141295C8F925F8D544152B81E154E155141AE47E1CA5C8D5441F6285C2F4B155141A4703D2A598D5441F6285CCF42155141000000104C8D544152B81E153F155141C3F528AC438D54411F85EBF13A155141000000003A8D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000400000068DFFCD23E1551417E76483D6A8D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D544168DFFCD23E1551417E76483D6A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568100 - 54106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF13A155141000000003A8D54419A999919361551417B14AE473C8D54418FC2F5C8391551411F85EBE14D8D5441B81E85CB391551419A9999B9598D5441666666663E1551410AD7A390688D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D5441F6285CFF531551413D0AD7238D8D5441C3F5284C54155141A4703DAA828D54417B14AE9754155141EC51B85E788D5441D7A370ED54155141AE47E1BA6C8D5441D7A3705D5515514185EB5148638D54417B14AEE750155141295C8F925F8D544152B81E154E155141AE47E1CA5C8D5441F6285C2F4B155141A4703D2A598D5441F6285CCF42155141000000104C8D544152B81E153F155141C3F528AC438D54411F85EBF13A155141000000003A8D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000400000068DFFCD23E1551417E76483D6A8D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D544168DFFCD23E1551417E76483D6A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 3094834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441333333A313195141B81E853B5EA7544114AE475114195141C3F528FC5CA754415C8FC2E50F1951410AD7A3E04DA75441A4703D7AFE185141295C8F0253A75441CDCCCC4CF6185141295C8F0256A75441
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000033333353FE1851415C8FC2054FA75441EC51B84EFD18514185EB51A84BA754415F04B2C5EA18514139D857B552A7544154D2169CE318514141E355DE54A75441EFEF4538DC185141A88DE89256A75441851E1683D518514160E8B08158A754416CFD1B08CF185141CF9D415F5CA7544158F8C064CB185141C9B9E0365FA75441295C8FF2C51851419A99992962A75441724A63D1BB185141EBE5D8DA67A75441BC29BE52B5185141C95763856CA754417B14AE57B51851411F85EB3170A75441AE47E15ABB185141AE47E1FA6BA75441C3F5284CBF1851410AD7A38069A7544185EB51B8C4185141AE47E14A66A75441EC51B8DEC9185141AE47E1AA63A75441A4703D0ACD1851416666667662A7544185EB5168CF1851410AD7A39061A754413D0AD723D61851419A9999895FA754418FC2F5F8E1185141E17A148E5CA7544133A810F4E51851413B66AEB85BA7544140319BD4E7185141888A0E545BA75441C13CD00DED1851411A91518859A7544101F0B362F2185141DD3AB58957A75441B615110CF918514163328F0055A75441A4703D7AFE185141295C8F0253A75441B0F2FA62FF1851417CB4FCBD52A75441A5EFFB30FF185141C5B2150052A7544133333353FE1851415C8FC2054FA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 3447009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441333333A313195141B81E853B5EA7544114AE475114195141C3F528FC5CA754415C8FC2E50F1951410AD7A3E04DA75441A4703D7AFE185141295C8F0253A75441CDCCCC4CF6185141295C8F0256A75441
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000033333353FE1851415C8FC2054FA75441EC51B84EFD18514185EB51A84BA754415F04B2C5EA18514139D857B552A7544154D2169CE318514141E355DE54A75441EFEF4538DC185141A88DE89256A75441851E1683D518514160E8B08158A754416CFD1B08CF185141CF9D415F5CA7544158F8C064CB185141C9B9E0365FA75441295C8FF2C51851419A99992962A75441724A63D1BB185141EBE5D8DA67A75441BC29BE52B5185141C95763856CA754417B14AE57B51851411F85EB3170A75441AE47E15ABB185141AE47E1FA6BA75441C3F5284CBF1851410AD7A38069A7544185EB51B8C4185141AE47E14A66A75441EC51B8DEC9185141AE47E1AA63A75441A4703D0ACD1851416666667662A7544185EB5168CF1851410AD7A39061A754413D0AD723D61851419A9999895FA754418FC2F5F8E1185141E17A148E5CA7544133A810F4E51851413B66AEB85BA7544140319BD4E7185141888A0E545BA75441C13CD00DED1851411A91518859A7544101F0B362F2185141DD3AB58957A75441B615110CF918514163328F0055A75441A4703D7AFE185141295C8F0253A75441B0F2FA62FF1851417CB4FCBD52A75441A5EFFB30FF185141C5B2150052A7544133333353FE1851415C8FC2054FA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 52720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441333333A313195141B81E853B5EA7544114AE475114195141C3F528FC5CA754415C8FC2E50F1951410AD7A3E04DA75441A4703D7AFE185141295C8F0253A75441CDCCCC4CF6185141295C8F0256A75441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000033A810F4E51851413B66AEB85BA7544140319BD4E7185141888A0E545BA75441C13CD00DED1851411A91518859A7544101F0B362F2185141DD3AB58957A75441B615110CF918514163328F0055A75441EFE0E0F1F71851419D382D4954A75441C55ED90CF6185141011B4DBB54A754416E3572D1F2185141FCD09CD855A754418138DBEAEE1851415B690C6857A754415ADB2B77EC185141551F5C8558A75441CE9B5C91E918514150D5ABA259A754417872F555E618514185EB134D59A75441AFADB571E51851417FA1636A5AA7544133A810F4E51851413B66AEB85BA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 81366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441333333A313195141B81E853B5EA7544114AE475114195141C3F528FC5CA754415C8FC2E50F1951410AD7A3E04DA75441A4703D7AFE185141295C8F0253A75441CDCCCC4CF6185141295C8F0256A75441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000033A810F4E51851413B66AEB85BA7544140319BD4E7185141888A0E545BA75441C13CD00DED1851411A91518859A7544101F0B362F2185141DD3AB58957A75441B615110CF918514163328F0055A75441EFE0E0F1F71851419D382D4954A75441C55ED90CF6185141011B4DBB54A754416E3572D1F2185141FCD09CD855A754418138DBEAEE1851415B690C6857A754415ADB2B77EC185141551F5C8558A75441CE9B5C91E918514150D5ABA259A754417872F555E618514185EB134D59A75441AFADB571E51851417FA1636A5AA7544133A810F4E51851413B66AEB85BA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569380 - 3061015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A9999F9BD4B51411F85EB61AF865441713D0A57BF4B5141AE47E1BAAE86544185EB51F8C04B5141CDCCCC6CAD8654415C8FC265C24B5141295C8F62AC8654411F85EB01C44B5141EC51B83EAB865441333333B3C54B51417B14AE97AA8654413D0AD763C74B5141A4703D1AAA865441F6285C2FC94B51415C8FC205AA865441C3F528ACCA4B5141C3F5283CAA8654419A999939C94B5141AE47E1BAA1865441C3F5284CC74B5141EC51B87E9686544148E17A84C44B5141E17A14BE7A865441D7A3702DAE4B514152B81EF57B86544148E17AF4B04B5141666666B697865441295C8F52B64B51413D0AD7F3A4865441AE47E14AB94B51419A999949AC8654419A999929BB4B51411F85EB41B08654418FC2F548BC4B51418FC2F508B08654419A9999F9BD4B51411F85EB61AF865441
+</a>
+
+<b>
+010600000001000000010300000001000000150000007E98A6FFC44B514118E0AE8B7F865441B06FAC7DC44B5141EB4E46EB7B865441B06FAC7DC44B514134E85D607A865441B0E215B9AE4B5141EB4E46EB7B865441786B3CECAF4B51411E63792C8B86544137E3434BB14B5141F2CB190097865441EF492CD6B24B514100CD75249C8654415606DE17B64B51418DBDE006A48654419C7E1309BA4B51411AAE4BE9AB86544164073A3CBB4B514151044332B0865441DBE52926BE4B51417959DE56AF865441D9C447A2C34B514122BF6ABDAB86544160C57534C64B5141522525B6AA865441FFF80043C84B51417369A106AA86544175AC2461CA4B5141F9566383A88654419A999939C94B5141AE47E1BAA1865441FC691A1EC84B5141D87C6F469B8654410F1B3FEBC74B51415888CB419A8654419EC029E2C74B5141A39E0EE999865441C3F5284CC74B5141EC51B87E968654417E98A6FFC44B514118E0AE8B7F865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569380 - 3346136
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A9999F9BD4B51411F85EB61AF865441713D0A57BF4B5141AE47E1BAAE86544185EB51F8C04B5141CDCCCC6CAD8654415C8FC265C24B5141295C8F62AC8654411F85EB01C44B5141EC51B83EAB865441333333B3C54B51417B14AE97AA8654413D0AD763C74B5141A4703D1AAA865441F6285C2FC94B51415C8FC205AA865441C3F528ACCA4B5141C3F5283CAA8654419A999939C94B5141AE47E1BAA1865441C3F5284CC74B5141EC51B87E9686544148E17A84C44B5141E17A14BE7A865441D7A3702DAE4B514152B81EF57B86544148E17AF4B04B5141666666B697865441295C8F52B64B51413D0AD7F3A4865441AE47E14AB94B51419A999949AC8654419A999929BB4B51411F85EB41B08654418FC2F548BC4B51418FC2F508B08654419A9999F9BD4B51411F85EB61AF865441
+</a>
+
+<b>
+010600000001000000010300000001000000150000007E98A6FFC44B514118E0AE8B7F865441B06FAC7DC44B5141EB4E46EB7B865441B06FAC7DC44B514134E85D607A865441B0E215B9AE4B5141EB4E46EB7B865441786B3CECAF4B51411E63792C8B86544137E3434BB14B5141F2CB190097865441EF492CD6B24B514100CD75249C8654415606DE17B64B51418DBDE006A48654419C7E1309BA4B51411AAE4BE9AB86544164073A3CBB4B514151044332B0865441DBE52926BE4B51417959DE56AF865441D9C447A2C34B514122BF6ABDAB86544160C57534C64B5141522525B6AA865441FFF80043C84B51417369A106AA86544175AC2461CA4B5141F9566383A88654419A999939C94B5141AE47E1BAA1865441FC691A1EC84B5141D87C6F469B8654410F1B3FEBC74B51415888CB419A8654419EC029E2C74B5141A39E0EE999865441C3F5284CC74B5141EC51B87E968654417E98A6FFC44B514118E0AE8B7F865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569438 - 3041008
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F508CE595141D7A3705DE18454415C8FC2F5CA595141A4703D2AE4845441713D0AC7C75951410AD7A310E784544185EB51C8C9595141713D0A27EB845441AE47E10ACF59514148E17AB4E8845441E17A141ED75951410AD7A3B0E584544185EB51E8DC59514133333323E4845441CDCCCCACE1595141C3F528DCE28454419A9999A9E25951417B14AED7E68454417B14AEE7E3595141A4703D0AEE8454410AD7A3B0E45951418FC2F568F3845441CDCCCC3CE5595141C3F528FCF9845441E17A14CEE6595141CDCCCC3C0A8554411F85EB61F3595141F6285CDF0885544148E17A54F259514185EB51E8FE8454410AD7A320F159514114AE4751F7845441CDCCCC7CEE595141295C8F02EA8454419A999929EC5951417B14AEC7E0845441AE47E1CAE85951413D0AD713D68454411F85EB41E459514152B81E75D7845441A4703D3ADE595141E17A14AED9845441C3F5287CD65951419A999989DC8454419A999919D159514185EB5158DF8454418FC2F508CE595141D7A3705DE1845441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000AB8DAB57D55951418B7CF8862A855441050A8D89D55951414C98AABD2A855441CCCC709FD5595141ACCD14F92A855441906579D1D5595141D99B87662B855441074EE796D7595141E551703C2F855441BE7D10E4DC595141E5732ABE3A8554413D479139E559514157F29A4E2C855441478F992FED595141AEDC91AE2F8554412D11838AEE595141947B6A3D308554414E552279F6595141EF7C2A68338554415B1A7108F55951419EA6476F258554414661DCEBF459514126D1F25C2485544178FB078DF3595141CA7F8B35178554417C2CC689F3595141D3CEE226178554412674A784F3595141EDA5861715855441E869D080F3595141E2CEE2A61385544191036A7AF35951417A91D80F1285544162A7DA77F35951415D0CED9D10855441EB922C70F3595141E6F73E760E85544196DA0D6BF35951411A2B72E90C8554416F7E7E68F3595141F4CEE2260B85544120C65F63F3595141603549AD09855441FB69D060F35951419F687CE0088554410C932CD0E659514149B05D3B0A855441146AD0A0E659514101F83E760885544173F99276E6595141430216BA06855441C2552239E6595141BB687C2004855441D788552CE65951417A5EA59C03855441C82CC629E6595141FA72538403855441D2036A1AE659514118F83EF60285544118E5E40EE659514130A68677028554417474A704E65951415902161A0285544150C65F03E6595141AD91D8EF01855441C6036AFAE5595141873549AD01855441411818E2E55951413F54CEB80085544122932CD0E5595141D8ED67D2FF845441A55776CAE5595141D980FE91FF8454419C188990E55951410BAAB06BFD84544148FDB568E55951410FA1B8C7FB845441FF77133FE5595141305A521EFA8454417BD81C22E5595141E874748CF88454419BC60F19E55951413D6A2F39F88454417B6E0BC9E45951411CEA098EF4845441861CD4A8E4595141C6192032F38454415A46373CE45951416425017BF084544157074A02E45951414B5A77DCEE845441352393E5E259514189621933E8845441FB9EC7AFE2595141626C8CE2E68454413DD7BAAEE159514194E389DCE28454415BFC84FBD9595141F4BAFAEBE4845441C1194A44D75951419DCF61A9E5845441F5E124C0D6595141E0BED3D4E5845441BF80775FD35951410ED48F16E7845441B6EF2033D1595141010838E7E78454419C8E628BC9595141253CC8F1EA845441E4E9758DC45951410483CDD7ED84544102A370A7C1595141A526F7E1EF8454417A89BA5FBB5951415DE2C511F484544148BBFFD4BA595141CEE782A9F484544122557064BB595141CB8700CAF8845441E5A56AA7BB595141ED34CE9BFE845441889D23BDBB595141A93BC8D6FF845441D7E3D8ACBB595141F6E5C9C406855441DF7909ABBB595141F637433C07855441C8B777B0BB59514135E3FDE0078554412981D160BB595141B2A6D48D0E855441222A8E9CBB595141C31E49BF12855441E922C6E6BB5951419155D24D168554413F2A2B08BC5951413DC9A9CE178554412617EA01BC5951412747BF4B18855441B0FB6212BC595141C6B2587119855441E646134FC15951412CFAC2D51985544161A6586EC159514102BDA6EB19855441C12BA46BC25951418596A8B01A8554419E1E2DFDC6595141F0D90A611E855441C2CE9552C959514185BC36F62185544174FD00FDCD59514190C0900F2585544138B8B635CF595141E45C76EA25855441F76210B4D25951411F86DD4228855441940A85E6D3595141C785611429855441AB8DAB57D55951418B7CF8862A855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569438 - 3279578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F508CE595141D7A3705DE18454415C8FC2F5CA595141A4703D2AE4845441713D0AC7C75951410AD7A310E784544185EB51C8C9595141713D0A27EB845441AE47E10ACF59514148E17AB4E8845441E17A141ED75951410AD7A3B0E584544185EB51E8DC59514133333323E4845441CDCCCCACE1595141C3F528DCE28454419A9999A9E25951417B14AED7E68454417B14AEE7E3595141A4703D0AEE8454410AD7A3B0E45951418FC2F568F3845441CDCCCC3CE5595141C3F528FCF9845441E17A14CEE6595141CDCCCC3C0A8554411F85EB61F3595141F6285CDF0885544148E17A54F259514185EB51E8FE8454410AD7A320F159514114AE4751F7845441CDCCCC7CEE595141295C8F02EA8454419A999929EC5951417B14AEC7E0845441AE47E1CAE85951413D0AD713D68454411F85EB41E459514152B81E75D7845441A4703D3ADE595141E17A14AED9845441C3F5287CD65951419A999989DC8454419A999919D159514185EB5158DF8454418FC2F508CE595141D7A3705DE1845441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000AB8DAB57D55951418B7CF8862A855441050A8D89D55951414C98AABD2A855441CCCC709FD5595141ACCD14F92A855441906579D1D5595141D99B87662B855441074EE796D7595141E551703C2F855441BE7D10E4DC595141E5732ABE3A8554413D479139E559514157F29A4E2C855441478F992FED595141AEDC91AE2F8554412D11838AEE595141947B6A3D308554414E552279F6595141EF7C2A68338554415B1A7108F55951419EA6476F258554414661DCEBF459514126D1F25C2485544178FB078DF3595141CA7F8B35178554417C2CC689F3595141D3CEE226178554412674A784F3595141EDA5861715855441E869D080F3595141E2CEE2A61385544191036A7AF35951417A91D80F1285544162A7DA77F35951415D0CED9D10855441EB922C70F3595141E6F73E760E85544196DA0D6BF35951411A2B72E90C8554416F7E7E68F3595141F4CEE2260B85544120C65F63F3595141603549AD09855441FB69D060F35951419F687CE0088554410C932CD0E659514149B05D3B0A855441146AD0A0E659514101F83E760885544173F99276E6595141430216BA06855441C2552239E6595141BB687C2004855441D788552CE65951417A5EA59C03855441C82CC629E6595141FA72538403855441D2036A1AE659514118F83EF60285544118E5E40EE659514130A68677028554417474A704E65951415902161A0285544150C65F03E6595141AD91D8EF01855441C6036AFAE5595141873549AD01855441411818E2E55951413F54CEB80085544122932CD0E5595141D8ED67D2FF845441A55776CAE5595141D980FE91FF8454419C188990E55951410BAAB06BFD84544148FDB568E55951410FA1B8C7FB845441FF77133FE5595141305A521EFA8454417BD81C22E5595141E874748CF88454419BC60F19E55951413D6A2F39F88454417B6E0BC9E45951411CEA098EF4845441861CD4A8E4595141C6192032F38454415A46373CE45951416425017BF084544157074A02E45951414B5A77DCEE845441352393E5E259514189621933E8845441FB9EC7AFE2595141626C8CE2E68454413DD7BAAEE159514194E389DCE28454415BFC84FBD9595141F4BAFAEBE4845441C1194A44D75951419DCF61A9E5845441F5E124C0D6595141E0BED3D4E5845441BF80775FD35951410ED48F16E7845441B6EF2033D1595141010838E7E78454419C8E628BC9595141253CC8F1EA845441E4E9758DC45951410483CDD7ED84544102A370A7C1595141A526F7E1EF8454417A89BA5FBB5951415DE2C511F484544148BBFFD4BA595141CEE782A9F484544122557064BB595141CB8700CAF8845441E5A56AA7BB595141ED34CE9BFE845441889D23BDBB595141A93BC8D6FF845441D7E3D8ACBB595141F6E5C9C406855441DF7909ABBB595141F637433C07855441C8B777B0BB59514135E3FDE0078554412981D160BB595141B2A6D48D0E855441222A8E9CBB595141C31E49BF12855441E922C6E6BB5951419155D24D168554413F2A2B08BC5951413DC9A9CE178554412617EA01BC5951412747BF4B18855441B0FB6212BC595141C6B2587119855441E646134FC15951412CFAC2D51985544161A6586EC159514102BDA6EB19855441C12BA46BC25951418596A8B01A8554419E1E2DFDC6595141F0D90A611E855441C2CE9552C959514185BC36F62185544174FD00FDCD59514190C0900F2585544138B8B635CF595141E45C76EA25855441F76210B4D25951411F86DD4228855441940A85E6D3595141C785611429855441AB8DAB57D55951418B7CF8862A855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569894 - 3002146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A350645A5141C3F5287C1F9954410AD7A370245A51413D0AD7334A99544185EB51C8255A51410AD7A3605A995441B81E852B265A51419A9999095F9954415C8FC225275A5141C3F5284C68995441A4703D3A285A514185EB51F86B99544148E17AE4295A514148E17A54709954417B14AE67315A5141EC51B8AE7E9954417B14AE177E5A51415C8FC2654B995441D7A3708D735A51411F85EB71399954413D0AD7736B5A514152B81EA52B9954410AD7A350645A5141C3F5287C1F995441
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000041609D69315A51415A136CB27E99544171C9AD1C7E5A5141457130654B995441186F2A047E5A5141189C85444B99544163BF9F6F7D5A5141B6C583474A995441D2CFCDBA7C5A5141F65C87134999544195338A917B5A5141D7EE3419479954416A68CD55795A51412DB2614B43995441FEBC94DD785A51413C9E9C7E4299544111C30275785A5141A30880CC41995441A6F94FDF775A514139DB85CD409954419ABB360F755A51418789FF023C9954414B37FF6B745A51417ACAFEEC3A995441EEF3988F735A51417C42987539995441BF0FF46D6F5A51412FF4E5353C995441D75FB46B6C5A514145E48C3A3E99544196220DEC645A51414D542D42439954412D7BB310615A514112BF73D845995441EA2C83AA5D5A5141F0D22320489954411D5ED12D5A5A5141AA7CEC764A995441130CADFC565A514133A7079B4C995441F9509635555A51418F0749CC4D995441898A08AB525A5141E698A6804F995441EB25A4EC4C5A5141E75AEE5A539954416C5546434A5A514184E7F623559954414329D79B465A5141FA986A97579954411F8A13F2415A5141844B25B85A99544142594D51405A5141A57EB3CF5B99544131D349003F5A51411DABC1B15C9954415ECB5168395A51415D964372609954418A8BD152375A5141517A1DD861995441867CF233325A5141FF2E654765995441FB7EF879305A51411CFEDA6F66995441EE345CC92C5A5141256176E96899544103FD70D6295A5141C6F0D4E36A9954411305213D285A5141F498E2FF6B995441B90D4F9C285A51417DF21FF96C9954414858217F295A5141286B154B6F995441B8145AF0295A51416438296B70995441F9B0083E2A5A5141F13D92FF7099544115001C312B5A5141BC6DF6CF729954418B03FB342D5A51413E8286A976995441D238EE66305A5141416534C47C99544141609D69315A51415A136CB27E995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569894 - 3605733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A350645A5141C3F5287C1F9954410AD7A370245A51413D0AD7334A99544185EB51C8255A51410AD7A3605A995441B81E852B265A51419A9999095F9954415C8FC225275A5141C3F5284C68995441A4703D3A285A514185EB51F86B99544148E17AE4295A514148E17A54709954417B14AE67315A5141EC51B8AE7E9954417B14AE177E5A51415C8FC2654B995441D7A3708D735A51411F85EB71399954413D0AD7736B5A514152B81EA52B9954410AD7A350645A5141C3F5287C1F995441
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000041609D69315A51415A136CB27E99544171C9AD1C7E5A5141457130654B995441186F2A047E5A5141189C85444B99544163BF9F6F7D5A5141B6C583474A995441D2CFCDBA7C5A5141F65C87134999544195338A917B5A5141D7EE3419479954416A68CD55795A51412DB2614B43995441FEBC94DD785A51413C9E9C7E4299544111C30275785A5141A30880CC41995441A6F94FDF775A514139DB85CD409954419ABB360F755A51418789FF023C9954414B37FF6B745A51417ACAFEEC3A995441EEF3988F735A51417C42987539995441BF0FF46D6F5A51412FF4E5353C995441D75FB46B6C5A514145E48C3A3E99544196220DEC645A51414D542D42439954412D7BB310615A514112BF73D845995441EA2C83AA5D5A5141F0D22320489954411D5ED12D5A5A5141AA7CEC764A995441130CADFC565A514133A7079B4C995441F9509635555A51418F0749CC4D995441898A08AB525A5141E698A6804F995441EB25A4EC4C5A5141E75AEE5A539954416C5546434A5A514184E7F623559954414329D79B465A5141FA986A97579954411F8A13F2415A5141844B25B85A99544142594D51405A5141A57EB3CF5B99544131D349003F5A51411DABC1B15C9954415ECB5168395A51415D964372609954418A8BD152375A5141517A1DD861995441867CF233325A5141FF2E654765995441FB7EF879305A51411CFEDA6F66995441EE345CC92C5A5141256176E96899544103FD70D6295A5141C6F0D4E36A9954411305213D285A5141F498E2FF6B995441B90D4F9C285A51417DF21FF96C9954414858217F295A5141286B154B6F995441B8145AF0295A51416438296B70995441F9B0083E2A5A5141F13D92FF7099544115001C312B5A5141BC6DF6CF729954418B03FB342D5A51413E8286A976995441D238EE66305A5141416534C47C99544141609D69315A51415A136CB27E995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569952 - 1275252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002300000033333313885D51413D0AD7E37882544114AE47818B5D51417B14AE577C825441B81E850B8D5D51413D0AD7E37D82544152B81E85915D514185EB514879825441EC51B86E945D514185EB51887682544152B81E35995D514152B81E856E82544152B81E959A5D514148E17A946C825441EC51B87E9D5D5141B81E853B6A8254410AD7A310A05D51411F85EB8168825441E17A14BE9F5D51410AD7A3206782544152B81E859F5D5141EC51B82E66825441000000609F5D5141333333636382544185EB51289F5D51417B14AE775F8254418FC2F5489E5D5141E17A14CE598254418FC2F5289D5D5141A4703D1A56825441CDCCCC5C9C5D5141EC51B8DE52825441D7A3707D9B5D5141EC51B80E4F8254419A9999099A5D5141EC51B8AE4B8254415C8FC295985D514114AE471149825441EC51B8CE965D5141E17A146E46825441EC51B84E975D5141D7A3707D458254413D0AD783975D51411F85EBB14482544185EB51B8955D51413333332344825441AE47E18A965D5141713D0AE742825441E17A14DE965D514148E17A14428254415C8FC2E5965D514185EB51583F8254415C8FC275965D514152B81E053D82544152B81E55935D51418FC2F5483D8254413D0AD7138F5D514185EB51F843825441C3F5286C8C5D5141333333434A8254410AD7A3D0885D5141295C8F92508254417B14AE67785D514152B81E556A82544114AE47417D5D5141EC51B83E6E825441333333A3815D5141AE47E17A7282544133333313885D51413D0AD7E378825441
+</a>
+
+<b>
+0106000000010000000103000000010000004300000017BC2628B65D5141618D0E3044825441322317A5B75D51419EF8039B41825441289065C8B85D5141672A23A13E8254415687D84EB95D51417308C5D53C8254413942469DB95D51416156E4003C8254416739B923BA5D514147A732FF3A825441D76F60B5BA5D51412C404282398254419FE53B52BB5D51412E69D40E37825441D568E643B25D5141C8058A0038825441408D584AAA5D514185DB0EA33982544129C91B899C5D5141A4CBF4813C825441AC57CF948E5D51419A332C1B3E825441A0298505895D5141D62173C73D8254413E51E19C7B5D51414B915FB03C82544118C3289B775D5141EEA368274882544188C58106765D5141D5BB6E2B4C8254410BFE48196C5D5141965A2F69618254412C7E7C036C5D514110C4F9F4618254410969C0126E5D51415A4FD40E638254419E028634715D5141FC39EEC464825441ADA2AD68725D51419A773AB3658254419ED8D666735D51415484907366825441727C4704755D5141252801B16782544154A5A3F3775D51415432D8F4698254411468BDA8795D5141FE3216456B825441139BCC4F7A5D5141DBF4CDBD6B8254415F0B47B67B5D514191A1DBF06C8254414B1D98287D5D51418824CF2A6E82544193861EE87D5D51418A3CAFD86E8254410D35FA717F5D514121484647708254411B9956E4805D514117A11E9F7182544166EA5A84815D5141C420AE3372825441CE93BC0C825D5141EA7836B972825441158A5159835D5141D8C2130174825441E5CE5D34855D51417D0863D575825441835DF194865D51411650F6307782544140AE8064875D51418FEF93FD77825441565DC278885D5141651D2A0D798254411415FC988B5D51414809806F7C8254415720DA268C5D514137B1CAFD7C8254411CB5C0768E5D514172E75B587B825441AFA5D3C8905D5141C093167B79825441889EF7F6925D51410C1FD18177825441ECE99522955D5141681B28D274825441FABB9426965D5141EC911DC4728254415AE33F95975D5141226788167082544143C00A5D995D51414A858C846D82544195DA282D9C5D5141E6C6DB466A825441B62BD76C9E5D5141809B875D68825441EEF373B49F5D51410C716E4B68825441D65D9304A15D5141F176CCF16782544188AD0BE8A35D5141658E448B66825441134BA3F6A55D51410933105B64825441C97BECE1A65D514108597314628254411B6AD2EEA75D5141819CAC0D5E8254418C58B8FBA85D51418C7A4E425C82544184C835F2A95D5141BC2D053259825441EC010C57AA5D5141DB08789357825441F4FEDC83AA5D5141756582DE55825441952F266FAB5D5141FD576DD952825441F3203B4FAC5D514195B148515182544159C43004AE5D5141ADDADADD4E825441C16A558CAF5D51411F3A14FC4C825441F816D8BAB05D514116D0F4AB4B825441AAF9017BB25D5141A777EF4E49825441BA1502A0B45D51417CA90E554682544117BC2628B65D5141618D0E3044825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569952 - 3455564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002300000033333313885D51413D0AD7E37882544114AE47818B5D51417B14AE577C825441B81E850B8D5D51413D0AD7E37D82544152B81E85915D514185EB514879825441EC51B86E945D514185EB51887682544152B81E35995D514152B81E856E82544152B81E959A5D514148E17A946C825441EC51B87E9D5D5141B81E853B6A8254410AD7A310A05D51411F85EB8168825441E17A14BE9F5D51410AD7A3206782544152B81E859F5D5141EC51B82E66825441000000609F5D5141333333636382544185EB51289F5D51417B14AE775F8254418FC2F5489E5D5141E17A14CE598254418FC2F5289D5D5141A4703D1A56825441CDCCCC5C9C5D5141EC51B8DE52825441D7A3707D9B5D5141EC51B80E4F8254419A9999099A5D5141EC51B8AE4B8254415C8FC295985D514114AE471149825441EC51B8CE965D5141E17A146E46825441EC51B84E975D5141D7A3707D458254413D0AD783975D51411F85EBB14482544185EB51B8955D51413333332344825441AE47E18A965D5141713D0AE742825441E17A14DE965D514148E17A14428254415C8FC2E5965D514185EB51583F8254415C8FC275965D514152B81E053D82544152B81E55935D51418FC2F5483D8254413D0AD7138F5D514185EB51F843825441C3F5286C8C5D5141333333434A8254410AD7A3D0885D5141295C8F92508254417B14AE67785D514152B81E556A82544114AE47417D5D5141EC51B83E6E825441333333A3815D5141AE47E17A7282544133333313885D51413D0AD7E378825441
+</a>
+
+<b>
+0106000000010000000103000000010000004300000017BC2628B65D5141618D0E3044825441322317A5B75D51419EF8039B41825441289065C8B85D5141672A23A13E8254415687D84EB95D51417308C5D53C8254413942469DB95D51416156E4003C8254416739B923BA5D514147A732FF3A825441D76F60B5BA5D51412C404282398254419FE53B52BB5D51412E69D40E37825441D568E643B25D5141C8058A0038825441408D584AAA5D514185DB0EA33982544129C91B899C5D5141A4CBF4813C825441AC57CF948E5D51419A332C1B3E825441A0298505895D5141D62173C73D8254413E51E19C7B5D51414B915FB03C82544118C3289B775D5141EEA368274882544188C58106765D5141D5BB6E2B4C8254410BFE48196C5D5141965A2F69618254412C7E7C036C5D514110C4F9F4618254410969C0126E5D51415A4FD40E638254419E028634715D5141FC39EEC464825441ADA2AD68725D51419A773AB3658254419ED8D666735D51415484907366825441727C4704755D5141252801B16782544154A5A3F3775D51415432D8F4698254411468BDA8795D5141FE3216456B825441139BCC4F7A5D5141DBF4CDBD6B8254415F0B47B67B5D514191A1DBF06C8254414B1D98287D5D51418824CF2A6E82544193861EE87D5D51418A3CAFD86E8254410D35FA717F5D514121484647708254411B9956E4805D514117A11E9F7182544166EA5A84815D5141C420AE3372825441CE93BC0C825D5141EA7836B972825441158A5159835D5141D8C2130174825441E5CE5D34855D51417D0863D575825441835DF194865D51411650F6307782544140AE8064875D51418FEF93FD77825441565DC278885D5141651D2A0D798254411415FC988B5D51414809806F7C8254415720DA268C5D514137B1CAFD7C8254411CB5C0768E5D514172E75B587B825441AFA5D3C8905D5141C093167B79825441889EF7F6925D51410C1FD18177825441ECE99522955D5141681B28D274825441FABB9426965D5141EC911DC4728254415AE33F95975D5141226788167082544143C00A5D995D51414A858C846D82544195DA282D9C5D5141E6C6DB466A825441B62BD76C9E5D5141809B875D68825441EEF373B49F5D51410C716E4B68825441D65D9304A15D5141F176CCF16782544188AD0BE8A35D5141658E448B66825441134BA3F6A55D51410933105B64825441C97BECE1A65D514108597314628254411B6AD2EEA75D5141819CAC0D5E8254418C58B8FBA85D51418C7A4E425C82544184C835F2A95D5141BC2D053259825441EC010C57AA5D5141DB08789357825441F4FEDC83AA5D5141756582DE55825441952F266FAB5D5141FD576DD952825441F3203B4FAC5D514195B148515182544159C43004AE5D5141ADDADADD4E825441C16A558CAF5D51411F3A14FC4C825441F816D8BAB05D514116D0F4AB4B825441AAF9017BB25D5141A777EF4E49825441BA1502A0B45D51417CA90E554682544117BC2628B65D5141618D0E3044825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570499 - 52745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F5287F5051413D0AD7E33094544114AE4791855051415C8FC285339454416666660686505141A4703DCA3394544148E17A34915051419A999909389454417B14AEF797505141D7A3705D3B945441CDCCCC6C9E50514148E17AB43D9454419A9999B9A3505141713D0AA72F9454410AD7A350AA505141EC51B8AE1E945441713D0A57AC505141A4703D5A1994544185EB51D8AD505141C3F5289C149454415C8FC275A750514114AE4791139454418FC2F538A2505141EC51B8AE1394544185EB51F89E505141666666161494544152B81E65995051417B14AE371594544148E17A249450514185EB519815945441EC51B8DE8F5051415C8FC2951594544152B81E858F50514152B81E151D945441666666B68D505141EC51B80E1D94544148E17AC4845051413D0AD7C31C945441AE47E18A765051419A9999391B945441F6285C6F76505141713D0AC71B945441C3F528BC72505141000000F029945441EC51B8FE77505141AE47E17A2D9454418FC2F5287F5051413D0AD7E330945441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F8096EF39E505141FE2464171494544181A7CDFE9E505141A09480AE13945441F675F7EA9E50514158298BB612945441FA4C8AD99A5051413C84EE0D129454416F1BB4C59A50514187299B4F10945441765DA4469B50514104D790610F945441D6BAEE4A995051413BA4BABD0D9454412D8B89C09850514114C068AF0D945441B3B3FB4A985051417342DDA30D9454410E906FF1985051414187C12C159454412F8F8AF398505141B45A5131159454411FE0BD4C9B50514182BB6CD114945441CE012B9C9C505141B11DDB9014945441F8096EF39E505141FE24641714945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570499 - 65727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F5287F5051413D0AD7E33094544114AE4791855051415C8FC285339454416666660686505141A4703DCA3394544148E17A34915051419A999909389454417B14AEF797505141D7A3705D3B945441CDCCCC6C9E50514148E17AB43D9454419A9999B9A3505141713D0AA72F9454410AD7A350AA505141EC51B8AE1E945441713D0A57AC505141A4703D5A1994544185EB51D8AD505141C3F5289C149454415C8FC275A750514114AE4791139454418FC2F538A2505141EC51B8AE1394544185EB51F89E505141666666161494544152B81E65995051417B14AE371594544148E17A249450514185EB519815945441EC51B8DE8F5051415C8FC2951594544152B81E858F50514152B81E151D945441666666B68D505141EC51B80E1D94544148E17AC4845051413D0AD7C31C945441AE47E18A765051419A9999391B945441F6285C6F76505141713D0AC71B945441C3F528BC72505141000000F029945441EC51B8FE77505141AE47E17A2D9454418FC2F5287F5051413D0AD7E330945441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F8096EF39E505141FE2464171494544181A7CDFE9E505141A09480AE13945441F675F7EA9E50514158298BB612945441FA4C8AD99A5051413C84EE0D129454416F1BB4C59A50514187299B4F10945441765DA4469B50514104D790610F945441D6BAEE4A995051413BA4BABD0D9454412D8B89C09850514114C068AF0D945441B3B3FB4A985051417342DDA30D9454410E906FF1985051414187C12C159454412F8F8AF398505141B45A5131159454411FE0BD4C9B50514182BB6CD114945441CE012B9C9C505141B11DDB9014945441F8096EF39E505141FE24641714945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570631 - 2951732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C7F45445141A4703DAA7A985441295C8F2249445141EC51B8BE799854413333339354445141F6285C2F7798544152B81EB5544451410000005073985441C3F5287C524451418FC2F5186A9854417B14AEE74F44514114AE4731609854416666669640445141CDCCCC7C63985441F6285C7F45445141A4703DAA7A985441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441F84811D205445141F088A22B929854412E9438140844514111B66AF690985441BF08E87F0E445141CF3957848D985441FA009E6010445141FB59D67F8C9854410C19433414445141911B36678B98544194055DB81B445141326DEFF488985441590CA60420445141A6A8174287985441BE03498D21445141AFCC447D86985441027E5FC7244451413C56B559859854411C2B624F2A4451415230D66283985441CE464D0F3144514183271BF8809854418A1D682B3B4451410F04D4397D985441E63528F944445141D4F21BCC7A9854415BC5CE014744514190D07F487A9854417653FFE24844514194951BCC79985441BECD38034A4451411247D68D79985441C4C6ADBD4E4451417914937D78985441CF85C59154445141E566242F7798544126392AA854445141A34FA1CA74985441026093B354445141CEC0435773985441536834805444514175D999747298544138A21CFA52445141A7802F236C9854418C081A53524451410FE3158769985441E872E250514451410B5EFF9B659854419816B007504451419BA1082D6098544167E01C384D44514143582FC560985441C414806B44445141788CC0A962985441CEF53B9A4044514121146F7963985441867AB07B40445141700CA0FF629854410871E54B3F44514110AF20675D9854411CEEECBC304451414BC4023E62985441016D3BE727445141CC1ED22D659854418FC2F5682244514114AE47016798544114AE47912044514114AE476162985441A5DF4E5F1D4451418FA8CB8A63985441DAC81E571D4451411C0EC68D639854417D5108D9174451419761338D65985441F6A876711644514187FFFB0F669854410C64798F134451416337B71D679854414AA0FE2512445141B39F01AB67985441BC57F1DB0F4451411B47CB926898544127AE21040F4451419CBC6DE468985441095BEE370C44514133D0DBFF6998544159142FB10A445141C7A82E9B6A985441F8CC2B35094451413E2A3D326B985441F366E69F084451418AF3396E6B9854414E2E8288084451418CAC8A786B9854413CEA857F084451411472187C6B985441B3D54894064451410DE51C546C9854412D0A888EFD4351411E94D64B709854412E97C822F743514152234FE4739854413BB67B67F443514138FECA6E759854414650728CF24351411E241F8676985441689D7873EC435141B5FD0C257A98544188B2DCEAEA435141F47F9A0E7B98544148C6A1ACE74351415C4C7CFC7C985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570631 - 3603347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C7F45445141A4703DAA7A985441295C8F2249445141EC51B8BE799854413333339354445141F6285C2F7798544152B81EB5544451410000005073985441C3F5287C524451418FC2F5186A9854417B14AEE74F44514114AE4731609854416666669640445141CDCCCC7C63985441F6285C7F45445141A4703DAA7A985441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441F84811D205445141F088A22B929854412E9438140844514111B66AF690985441BF08E87F0E445141CF3957848D985441FA009E6010445141FB59D67F8C9854410C19433414445141911B36678B98544194055DB81B445141326DEFF488985441590CA60420445141A6A8174287985441BE03498D21445141AFCC447D86985441027E5FC7244451413C56B559859854411C2B624F2A4451415230D66283985441CE464D0F3144514183271BF8809854418A1D682B3B4451410F04D4397D985441E63528F944445141D4F21BCC7A9854415BC5CE014744514190D07F487A9854417653FFE24844514194951BCC79985441BECD38034A4451411247D68D79985441C4C6ADBD4E4451417914937D78985441CF85C59154445141E566242F7798544126392AA854445141A34FA1CA74985441026093B354445141CEC0435773985441536834805444514175D999747298544138A21CFA52445141A7802F236C9854418C081A53524451410FE3158769985441E872E250514451410B5EFF9B659854419816B007504451419BA1082D6098544167E01C384D44514143582FC560985441C414806B44445141788CC0A962985441CEF53B9A4044514121146F7963985441867AB07B40445141700CA0FF629854410871E54B3F44514110AF20675D9854411CEEECBC304451414BC4023E62985441016D3BE727445141CC1ED22D659854418FC2F5682244514114AE47016798544114AE47912044514114AE476162985441A5DF4E5F1D4451418FA8CB8A63985441DAC81E571D4451411C0EC68D639854417D5108D9174451419761338D65985441F6A876711644514187FFFB0F669854410C64798F134451416337B71D679854414AA0FE2512445141B39F01AB67985441BC57F1DB0F4451411B47CB926898544127AE21040F4451419CBC6DE468985441095BEE370C44514133D0DBFF6998544159142FB10A445141C7A82E9B6A985441F8CC2B35094451413E2A3D326B985441F366E69F084451418AF3396E6B9854414E2E8288084451418CAC8A786B9854413CEA857F084451411472187C6B985441B3D54894064451410DE51C546C9854412D0A888EFD4351411E94D64B709854412E97C822F743514152234FE4739854413BB67B67F443514138FECA6E759854414650728CF24351411E241F8676985441689D7873EC435141B5FD0C257A98544188B2DCEAEA435141F47F9A0E7B98544148C6A1ACE74351415C4C7CFC7C985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571410 - 3025436
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000052B81EA5536051415C8FC2254E8E5441A4703D8A4260514114AE4701518E544148E17A243B60514185EB51082F8E54410AD7A300366051419A999959318E5441295C8FF22D60514152B81E75328E5441295C8F721E6051415C8FC2D5328E5441E17A14AE0E6051417B14AE07338E5441C3F528AC0F6051417B14AEF7448E5441295C8FC20F605141D7A3704D648E54411F85EBC1106051415C8FC255648E5441B81E85FB1E605141000000D0648E54419A999959386051419A9999A9658E5441713D0AF750605141C3F5287C668E54418FC2F5F85160514152B81E85668E5441E17A141E536051417B14AE075C8E54413D0AD7B3536051413D0AD753538E544152B81EA5536051415C8FC2254E8E5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C74BF49B3E60514145C0FBF33E8E544192FDD8A73F605141FC65BFB0438E5441CD54DFD04B6051417B42D1DF428E54416815857A50605141F2F071E7438E5441AFDF3CEE4F605141F9889497428E54412F0942794E6051413E93A0CF3E8E5441B48BAFEB4C6051416F7374D4398E544176BD7CFE4B60514121F952C5368E5441D433D4E04B6051416AFEB54F358E54416E0D326A4B6051412C7B759B308E54415E571FC44A6051411CFC92922D8E5441ED469F034A605141603388072A8E54417BD2B65B486051410E8CAA292A8E5441CB494BD4476051411AD147AA288E5441254112273B605141B56B38142F8E5441C74BF49B3E60514145C0FBF33E8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571410 - 3817932
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000052B81EA5536051415C8FC2254E8E5441A4703D8A4260514114AE4701518E544148E17A243B60514185EB51082F8E54410AD7A300366051419A999959318E5441295C8FF22D60514152B81E75328E5441295C8F721E6051415C8FC2D5328E5441E17A14AE0E6051417B14AE07338E5441C3F528AC0F6051417B14AEF7448E5441295C8FC20F605141D7A3704D648E54411F85EBC1106051415C8FC255648E5441B81E85FB1E605141000000D0648E54419A999959386051419A9999A9658E5441713D0AF750605141C3F5287C668E54418FC2F5F85160514152B81E85668E5441E17A141E536051417B14AE075C8E54413D0AD7B3536051413D0AD753538E544152B81EA5536051415C8FC2254E8E5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C74BF49B3E60514145C0FBF33E8E544192FDD8A73F605141FC65BFB0438E5441CD54DFD04B6051417B42D1DF428E54416815857A50605141F2F071E7438E5441AFDF3CEE4F605141F9889497428E54412F0942794E6051413E93A0CF3E8E5441B48BAFEB4C6051416F7374D4398E544176BD7CFE4B60514121F952C5368E5441D433D4E04B6051416AFEB54F358E54416E0D326A4B6051412C7B759B308E54415E571FC44A6051411CFC92922D8E5441ED469F034A605141603388072A8E54417BD2B65B486051410E8CAA292A8E5441CB494BD4476051411AD147AA288E5441254112273B605141B56B38142F8E5441C74BF49B3E60514145C0FBF33E8E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960495 - 1265963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000042000000DD898464F2585141B656351A5ABB54411FFF4804F4585141EB75F4635BBB54418988F5D0F558514184FE91085DBB544187244FD1F65851416007A1F25DBB5441D3896F2EFA585141A86E532C60BB54413ECA7A3DFB585141E14F98D060BB5441705E3751FC585141D944B57761BB5441D9D98774FE5851414D01A21E63BB5441BDBA0294FF5851415AC6C6FC63BB5441355A94CBFF585141B0CD3C4264BB54412EE9A9FA0059514167C017BD65BB544173615A5B01595141BE56F43566BB54410498182A025951413AD1D9AD67BB54419A0FC0FC02595141EDC1DB2C69BB544104D6253303595141D32EA4A96ABB544147F9956E03595141AB25B5496CBB5441221CFC9A03595141575BE5406EBB544154D72DB803595141E1A4C38B6FBB5441F5E26BE003595141AE28D85371BB5441F5E26BE003595141F58D518B72BB5441F5E26BE003595141F78C356374BB5441F5E26BE003595141CC8CDBB174BB544116D7723609595141F3C7214173BB5441F73734F90B59514186C16C3970BB54415863FD600D5951415FB789AE6EBB544174AB1F100F5951412D9A57D56CBB544134A0F6C10F5951415285EEED6BBB5441E756D6F8105951415852B53A6ABB54411C8D9866125951415280273468BB54416E464AD712595141269C299367BB54419AD67FAF145951416B5BC5B164BB54411278BD441659514120243E1462BB5441985475C51759514140D10AE95EBB54414476071C19595141C77B70835BBB5441B827A6DC195951417A2F7B9A59BB5441A161EDD91A595141B44D8B1757BB544187D39E2B1B595141A14A2C6055BB54417171B3271A59514139A03AC354BB544179ED295419595141CDD5549E53BB54419525A59B18595141AE59D29852BB544100A9DB2F18595141FDB59E8151BB54419E7C4B5B17595141A10A045B4FBB544173E4A6F61559514174BB98904DBB5441E8EB879F14595141753B8DA04CBB5441A643917213595141ACF4FFCD4BBB5441D3733DB0115951419CE276B14ABB5441296E94B60C5951416544400749BB544124B32E6208595141CC37579447BB54415969F272065951413AE49DEE46BB54413FC36BEA0359514166A2981546BB54412AAA51B401595141E664285845BB5441710C9DDCFF58514117CF4EBA44BB5441662C1B34FE585141208D402C44BB5441E0E6D167FC5851416439399243BB5441504DFE5CFB585141BB7A521346BB5441BBB8D924F95851416C2AB84A4BBB544180BBDF8AF7585141B1B6DCA54EBB544161AB0F99F658514168D3626850BB5441439B3FA7F558514120F0E82A52BB54412E553BB4F4585141EA47ADEF53BB5441D7A3707DF45851415C8FC25554BB5441256F1A2AF3585141442BD3F053BB5441DF27D7A9F15851417F9D5DAA55BB544107294D83EF585141819C418257BB54418D12FE21F05851411FC3604F58BB5441DD898464F2585141B656351A5ABB54410103000000010000000400000085D55CCB03595141EA3C38D574BB5441C3B3DB2C035951415F9A61DF75BB544185EE1AC4035951413DC282FC74BB544185D55CCB03595141EA3C38D574BB5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F2E26BE003595141915309D274BB5441F2E26BE003595141AB28D85371BB544146F9956E03595141A725B5496CBB54419A0FC0FC02595141E8C1DB2C69BB544175615A5B01595141BF56F43566BB5441BBBA0294FF58514158C6C6FC63BB5441715E3751FC585141DB44B57761BB5441F753066DF7585141A8D9CD805EBB544122FF4804F4585141E975F4635BBB5441EBD6DFB7EF585141142137FB57BB5441A4703DDAEC5851410AD7A3905DBB54418FC2F568F258514148E17AD45FBB5441EC51B84EF55851413D0AD70364BB54415A27B250F858514105F63D2368BB544162A1B5FBFA5851413264482470BB544152B81EA5FE58514114AE47E172BB544114AE470101595141AE47E1EA74BB5441B628188602595141EBEA86D976BB5441F2E26BE003595141915309D274BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960495 - 4019863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000042000000DD898464F2585141B656351A5ABB54411FFF4804F4585141EB75F4635BBB54418988F5D0F558514184FE91085DBB544187244FD1F65851416007A1F25DBB5441D3896F2EFA585141A86E532C60BB54413ECA7A3DFB585141E14F98D060BB5441705E3751FC585141D944B57761BB5441D9D98774FE5851414D01A21E63BB5441BDBA0294FF5851415AC6C6FC63BB5441355A94CBFF585141B0CD3C4264BB54412EE9A9FA0059514167C017BD65BB544173615A5B01595141BE56F43566BB54410498182A025951413AD1D9AD67BB54419A0FC0FC02595141EDC1DB2C69BB544104D6253303595141D32EA4A96ABB544147F9956E03595141AB25B5496CBB5441221CFC9A03595141575BE5406EBB544154D72DB803595141E1A4C38B6FBB5441F5E26BE003595141AE28D85371BB5441F5E26BE003595141F58D518B72BB5441F5E26BE003595141F78C356374BB5441F5E26BE003595141CC8CDBB174BB544116D7723609595141F3C7214173BB5441F73734F90B59514186C16C3970BB54415863FD600D5951415FB789AE6EBB544174AB1F100F5951412D9A57D56CBB544134A0F6C10F5951415285EEED6BBB5441E756D6F8105951415852B53A6ABB54411C8D9866125951415280273468BB54416E464AD712595141269C299367BB54419AD67FAF145951416B5BC5B164BB54411278BD441659514120243E1462BB5441985475C51759514140D10AE95EBB54414476071C19595141C77B70835BBB5441B827A6DC195951417A2F7B9A59BB5441A161EDD91A595141B44D8B1757BB544187D39E2B1B595141A14A2C6055BB54417171B3271A59514139A03AC354BB544179ED295419595141CDD5549E53BB54419525A59B18595141AE59D29852BB544100A9DB2F18595141FDB59E8151BB54419E7C4B5B17595141A10A045B4FBB544173E4A6F61559514174BB98904DBB5441E8EB879F14595141753B8DA04CBB5441A643917213595141ACF4FFCD4BBB5441D3733DB0115951419CE276B14ABB5441296E94B60C5951416544400749BB544124B32E6208595141CC37579447BB54415969F272065951413AE49DEE46BB54413FC36BEA0359514166A2981546BB54412AAA51B401595141E664285845BB5441710C9DDCFF58514117CF4EBA44BB5441662C1B34FE585141208D402C44BB5441E0E6D167FC5851416439399243BB5441504DFE5CFB585141BB7A521346BB5441BBB8D924F95851416C2AB84A4BBB544180BBDF8AF7585141B1B6DCA54EBB544161AB0F99F658514168D3626850BB5441439B3FA7F558514120F0E82A52BB54412E553BB4F4585141EA47ADEF53BB5441D7A3707DF45851415C8FC25554BB5441256F1A2AF3585141442BD3F053BB5441DF27D7A9F15851417F9D5DAA55BB544107294D83EF585141819C418257BB54418D12FE21F05851411FC3604F58BB5441DD898464F2585141B656351A5ABB54410103000000010000000400000085D55CCB03595141EA3C38D574BB5441C3B3DB2C035951415F9A61DF75BB544185EE1AC4035951413DC282FC74BB544185D55CCB03595141EA3C38D574BB5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F2E26BE003595141915309D274BB5441F2E26BE003595141AB28D85371BB544146F9956E03595141A725B5496CBB54419A0FC0FC02595141E8C1DB2C69BB544175615A5B01595141BF56F43566BB5441BBBA0294FF58514158C6C6FC63BB5441715E3751FC585141DB44B57761BB5441F753066DF7585141A8D9CD805EBB544122FF4804F4585141E975F4635BBB5441EBD6DFB7EF585141142137FB57BB5441A4703DDAEC5851410AD7A3905DBB54418FC2F568F258514148E17AD45FBB5441EC51B84EF55851413D0AD70364BB54415A27B250F858514105F63D2368BB544162A1B5FBFA5851413264482470BB544152B81EA5FE58514114AE47E172BB544114AE470101595141AE47E1EA74BB5441B628188602595141EBEA86D976BB5441F2E26BE003595141915309D274BB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572043 - 222901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F82564D514100000070129B54415C8FC2055E4D514166666646219B54413D0AD753654D5141C3F5283C2E9B5441666666F66A4D51411F85EBD1369B5441EC51B80E714D5141D7A3705D3F9B5441CDCCCC8C714D5141EC51B85E409B54415C8FC2758E4D51410AD7A310249B544185EB51888D4D51411F85EBE1239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441C3F5287C764D5141A4703D1A1D9B54411F85EBF1704D5141AE47E12A1B9B544100000060704D5141AE47E1CA1A9B5441EC51B81E6A4D5141CDCCCC8C169B544133333393684D5141713D0A87169B54417B14AEE7654D5141000000C0159B5441CDCCCC7C594D514100000040129B5441295C8F82564D514100000070129B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB46AB97564D5141F9B3AB6E129B544149425E62584D51418322A423169B5441C3CCFCA5784D51415AFD7662239B5441A0A6B7BF834D5141A26ACC8B2E9B5441B410AE958A4D51418C349ABB279B5441E753BB328C4D5141F9088D47269B54413895DA738E4D5141EE9A8112249B54416BFB73588C4D5141040DD1C4239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441D88C938B764D5141799E9E221D9B54412636E8AA754D51414B0E27D11C9B54411F85EBF1704D5141AE47E12A1B9B544100000060704D5141AE47E1CA1A9B544199AF532F6A4D514104521098169B5441FB9D42C5684D51414FDFC487169B544133333393684D5141713D0A87169B54417B14AEE7654D5141000000C0159B544100B32C6F614D5141E6CD687D149B54416B7B4F3F5E4D5141A51F7397139B544131C38A69594D5141AD743641129B5441BC89CA40594D51419865C743129B5441CB31EC87584D51412BA56B4F129B5441DC1DFC52574D5141B300E062129B5441AB46AB97564D5141F9B3AB6E129B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572043 - 395123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F82564D514100000070129B54415C8FC2055E4D514166666646219B54413D0AD753654D5141C3F5283C2E9B5441666666F66A4D51411F85EBD1369B5441EC51B80E714D5141D7A3705D3F9B5441CDCCCC8C714D5141EC51B85E409B54415C8FC2758E4D51410AD7A310249B544185EB51888D4D51411F85EBE1239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441C3F5287C764D5141A4703D1A1D9B54411F85EBF1704D5141AE47E12A1B9B544100000060704D5141AE47E1CA1A9B5441EC51B81E6A4D5141CDCCCC8C169B544133333393684D5141713D0A87169B54417B14AEE7654D5141000000C0159B5441CDCCCC7C594D514100000040129B5441295C8F82564D514100000070129B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB46AB97564D5141F9B3AB6E129B544149425E62584D51418322A423169B5441C3CCFCA5784D51415AFD7662239B5441A0A6B7BF834D5141A26ACC8B2E9B5441B410AE958A4D51418C349ABB279B5441E753BB328C4D5141F9088D47269B54413895DA738E4D5141EE9A8112249B54416BFB73588C4D5141040DD1C4239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441D88C938B764D5141799E9E221D9B54412636E8AA754D51414B0E27D11C9B54411F85EBF1704D5141AE47E12A1B9B544100000060704D5141AE47E1CA1A9B544199AF532F6A4D514104521098169B5441FB9D42C5684D51414FDFC487169B544133333393684D5141713D0A87169B54417B14AEE7654D5141000000C0159B544100B32C6F614D5141E6CD687D149B54416B7B4F3F5E4D5141A51F7397139B544131C38A69594D5141AD743641129B5441BC89CA40594D51419865C743129B5441CB31EC87584D51412BA56B4F129B5441DC1DFC52574D5141B300E062129B5441AB46AB97564D5141F9B3AB6E129B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572056 - 3143182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A0000007B14AE37464D5141CDCCCC2CD986544114AE4741324D51417B14AE27D686544114AE47D1314D51415C8FC245D4865441C3F5289C2D4D51415C8FC225D5865441C3F5283C274D51419A999909D686544185EB51D8164D5141A4703DBAD7865441D7A370FD044D5141666666D6D986544166666626024D514185EB51F8D98654410AD7A3B0FD4C5141B81E85BBD986544152B81E55F74C51411F85EB01D88654415C8FC2C5F24C5141E17A140ED9865441EC51B86EE74C5141713D0AF7DB865441713D0AE7E34C51415C8FC295EF865441D7A3709DFA4C514114AE4741EE8654413D0AD7F30D4D5141C3F528ECF2865441295C8F82204D514133333333F68654413D0AD7532E4D514185EB51880087544114AE47B12F4D514114AE47A1018754419A9999B9324D5141F6285C6F01875441F6285C4F354D514152B81E6501875441CDCCCCBC374D514133333333018754415C8FC2753B4D5141713D0AF700875441000000C03E4D514185EB51880087544148E17AB4424D51413D0AD7D3FF865441F6285C8F494D514133333343FE8654418FC2F5784F4D51419A999989FC8654413D0AD763534D5141CDCCCC5CFB865441E17A145E564D5141A4703D3AFA865441E17A144E594D514100000090F98654418FC2F5D85D4D514152B81E45F8865441A4703DBA5F4D514185EB51B8F7865441EC51B8BE604D514100000040F78654413D0AD7C3614D51413D0AD7B3F6865441A4703DAA624D51417B14AE27F68654411F85EBC1674D5141A4703DFAF186544185EB51E8664D514148E17AD4F1865441D7A370DD644D5141CDCCCC0CED865441666666C6644D51417B14AE97E7865441EC51B85E664D5141D7A3708DE28654418FC2F518584D5141C3F5280CDE865441AE47E17A484D5141E17A141ED98654417B14AE37464D5141CDCCCC2CD9865441
+</a>
+
+<b>
+010600000001000000010300000001000000440000000167670EC24C51410870EC9FBE86544185EB5128C24C51411F85EB51BE865441666666F6C24C5141AE47E12ABD8654410A28DD55C34C51419D92C3F0BC86544148E17A54C44C51415C8FC255BC8654416EBC8291C44C51413196CC3FBC865441D7A370EDC44C5141EC51B81EBC8654418D3CB876C54C5141EC51B81EBC86544148E17AB4C54C5141EC51B81EBC8654410A8E126AC64C51410AF85E5EBC8654413882E1B4C64C5141099D98E2BA865441F6285C0FC54C514148E17A14B98654417F6F8400C44C514182C4ED13BA8654413044F1AFC14C514198012D5ABB8654410AD7A350BC4C5141F6285C4FBE8654416B893452BA4C51416580C034C18654413881B2E1B64C514158D241E4C7865441613F3E4EB44C514113D9992FCD8654410C395528B24C5141AF433AC3D6865441AAB801F3B04C5141B615E948DC865441E22CF279AF4C514119662704E38654415EAFD80DAE4C5141C4872984E9865441EABBC4E2AB4C51415CE8FA6CF3865441C6E0A29AAD4C5141E8ABCCD2F586544119D94B24B24C514102E1C89AF8865441529CF8E5B34C5141B1838311FA865441013FB35CB54C514161263E88FB86544186246FB4B74C51411F49A034FC8654411619CD8AB84C514134DB0537FC8654417691547CBA4C5141F3E7953CFC86544106B9298FBD4C51414A036245FC865441A51D1589C24C5141EF47A053FC8654414CED0C1FC54C5141ACFE065BFC86544128AF9826D44C5141EE9B0B86FC8654417978CEDED64C51413219DBA8FC86544111911134D94C5141284461A9FC865441B60B1730DA4C5141A1825727FC86544160801FCCDD4C514121138F4AFA8654416F7B0D98E04C5141A63927D9F88654413582B07EE14C514180B9EFD9F78654413647990CE44C51413E7801C5EE865441C281AFEEE44C5141FC0266DCE9865441660A3DA7E54C5141EBDAA3DAE586544148E664EFE44C51411B9E4E93E5865441FCE1D397E24C5141C34CF1D7E4865441757F327ED84C51419DCA28ACE38654410FC53E43D44C514189B58B0EE386544185EB5138D44C514114AE4771E386544184E3619ED24C51418ADEDB3BE3865441AFD06AC6CD4C51411BC0459AE28654419C6B1DFEC24C5141EA199032E1865441B81E854BB54C51419A999969DF865441295C8FA2B54C5141000000F0DC865441AE47E17AB74C5141C3F528FCDC8654416D74A7ACB74C51415082D598DB8654412A5F24EEB74C5141E3A054C5D9865441A4703D3AB94C5141295C8F82D086544152B81E85B94C514166666626CF865441438E1BE5B94C51415A1A825ECE8654417B461341BA4C5141E7E9FC9ECD865441B81E85BBBA4C5141000000A0CC865441B3330CE5BC4C51414A5A1003C986544167043A39BF4C5141B18C0BF6C4865441FA386A9EBF4C5141E09C6533C4865441FAB177C4BF4C514107B032EAC3865441D1451F71C14C5141D03F70A1C0865441666666A6C14C51418FC2F5D8BF8654410167670EC24C51410870EC9FBE865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572056 - 3517863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A0000007B14AE37464D5141CDCCCC2CD986544114AE4741324D51417B14AE27D686544114AE47D1314D51415C8FC245D4865441C3F5289C2D4D51415C8FC225D5865441C3F5283C274D51419A999909D686544185EB51D8164D5141A4703DBAD7865441D7A370FD044D5141666666D6D986544166666626024D514185EB51F8D98654410AD7A3B0FD4C5141B81E85BBD986544152B81E55F74C51411F85EB01D88654415C8FC2C5F24C5141E17A140ED9865441EC51B86EE74C5141713D0AF7DB865441713D0AE7E34C51415C8FC295EF865441D7A3709DFA4C514114AE4741EE8654413D0AD7F30D4D5141C3F528ECF2865441295C8F82204D514133333333F68654413D0AD7532E4D514185EB51880087544114AE47B12F4D514114AE47A1018754419A9999B9324D5141F6285C6F01875441F6285C4F354D514152B81E6501875441CDCCCCBC374D514133333333018754415C8FC2753B4D5141713D0AF700875441000000C03E4D514185EB51880087544148E17AB4424D51413D0AD7D3FF865441F6285C8F494D514133333343FE8654418FC2F5784F4D51419A999989FC8654413D0AD763534D5141CDCCCC5CFB865441E17A145E564D5141A4703D3AFA865441E17A144E594D514100000090F98654418FC2F5D85D4D514152B81E45F8865441A4703DBA5F4D514185EB51B8F7865441EC51B8BE604D514100000040F78654413D0AD7C3614D51413D0AD7B3F6865441A4703DAA624D51417B14AE27F68654411F85EBC1674D5141A4703DFAF186544185EB51E8664D514148E17AD4F1865441D7A370DD644D5141CDCCCC0CED865441666666C6644D51417B14AE97E7865441EC51B85E664D5141D7A3708DE28654418FC2F518584D5141C3F5280CDE865441AE47E17A484D5141E17A141ED98654417B14AE37464D5141CDCCCC2CD9865441
+</a>
+
+<b>
+010600000001000000010300000001000000440000000167670EC24C51410870EC9FBE86544185EB5128C24C51411F85EB51BE865441666666F6C24C5141AE47E12ABD8654410A28DD55C34C51419D92C3F0BC86544148E17A54C44C51415C8FC255BC8654416EBC8291C44C51413196CC3FBC865441D7A370EDC44C5141EC51B81EBC8654418D3CB876C54C5141EC51B81EBC86544148E17AB4C54C5141EC51B81EBC8654410A8E126AC64C51410AF85E5EBC8654413882E1B4C64C5141099D98E2BA865441F6285C0FC54C514148E17A14B98654417F6F8400C44C514182C4ED13BA8654413044F1AFC14C514198012D5ABB8654410AD7A350BC4C5141F6285C4FBE8654416B893452BA4C51416580C034C18654413881B2E1B64C514158D241E4C7865441613F3E4EB44C514113D9992FCD8654410C395528B24C5141AF433AC3D6865441AAB801F3B04C5141B615E948DC865441E22CF279AF4C514119662704E38654415EAFD80DAE4C5141C4872984E9865441EABBC4E2AB4C51415CE8FA6CF3865441C6E0A29AAD4C5141E8ABCCD2F586544119D94B24B24C514102E1C89AF8865441529CF8E5B34C5141B1838311FA865441013FB35CB54C514161263E88FB86544186246FB4B74C51411F49A034FC8654411619CD8AB84C514134DB0537FC8654417691547CBA4C5141F3E7953CFC86544106B9298FBD4C51414A036245FC865441A51D1589C24C5141EF47A053FC8654414CED0C1FC54C5141ACFE065BFC86544128AF9826D44C5141EE9B0B86FC8654417978CEDED64C51413219DBA8FC86544111911134D94C5141284461A9FC865441B60B1730DA4C5141A1825727FC86544160801FCCDD4C514121138F4AFA8654416F7B0D98E04C5141A63927D9F88654413582B07EE14C514180B9EFD9F78654413647990CE44C51413E7801C5EE865441C281AFEEE44C5141FC0266DCE9865441660A3DA7E54C5141EBDAA3DAE586544148E664EFE44C51411B9E4E93E5865441FCE1D397E24C5141C34CF1D7E4865441757F327ED84C51419DCA28ACE38654410FC53E43D44C514189B58B0EE386544185EB5138D44C514114AE4771E386544184E3619ED24C51418ADEDB3BE3865441AFD06AC6CD4C51411BC0459AE28654419C6B1DFEC24C5141EA199032E1865441B81E854BB54C51419A999969DF865441295C8FA2B54C5141000000F0DC865441AE47E17AB74C5141C3F528FCDC8654416D74A7ACB74C51415082D598DB8654412A5F24EEB74C5141E3A054C5D9865441A4703D3AB94C5141295C8F82D086544152B81E85B94C514166666626CF865441438E1BE5B94C51415A1A825ECE8654417B461341BA4C5141E7E9FC9ECD865441B81E85BBBA4C5141000000A0CC865441B3330CE5BC4C51414A5A1003C986544167043A39BF4C5141B18C0BF6C4865441FA386A9EBF4C5141E09C6533C4865441FAB177C4BF4C514107B032EAC3865441D1451F71C14C5141D03F70A1C0865441666666A6C14C51418FC2F5D8BF8654410167670EC24C51410870EC9FBE865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574270 - 239787
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000009F000000666666E656B950413D0AD7A3A33F54410AD7A3E051B95041E17A148EA23F5441A4703D9A46B95041295C8FF29E3F5441713D0AE73FB95041C3F5284C9C3F544114AE47B13EB95041C3F528DC9B3F5441EC51B81E3DB95041713D0A47A13F5441295C8FE23EB95041B81E855BA33F54413D0AD7533FB950410AD7A350AC3F5441F6285C9F36B950418FC2F5F8A83F5441A4703D8A2DB95041713D0A37A13F544185EB51C82CB95041E17A143EA43F5441333333C323B9504185EB51E8A13F5441AE47E13A20B95041295C8F829F3F5441D7A3708D1AB950413D0AD7E39F3F544148E17AC416B95041EC51B8AE9D3F5441B81E85BB12B95041CDCCCC2C963F5441D7A370AD13B95041C3F528FC8E3F5441AE47E13A08B95041333333D38B3F5441A4703D8A09B95041F6285C2F8F3F544114AE47510AB95041EC51B88E903F544148E17A740DB95041EC51B8AE923F5441000000E00CB95041295C8F52973F5441F6285CEF0AB950410AD7A3409A3F5441333333230AB950415C8FC205983F54410000004009B950415C8FC285963F5441AE47E18A08B95041CDCCCCEC953F5441EC51B8DE07B95041F6285CEF963F54419A99998901B95041EC51B87E9D3F5441AE47E16A00B9504152B81E059E3F5441A4703D9A02B95041295C8F329F3F5441295C8FE204B95041D7A3709DA13F5441A4703D8A05B95041AE47E17A9E3F544114AE47910DB95041E17A143EA03F54417B14AEA70CB950413D0AD723A53F544152B81EF50AB950415C8FC2D5A63F5441D7A3704D07B950417B14AE67AB3F54413D0AD77306B95041B81E853BAD3F5441B81E853B04B9504114AE4741AC3F54411F85EBD104B95041295C8FF2AA3F5441C3F528DCFFB850418FC2F598A83F54418FC2F5A8FAB8504152B81E35A83F5441666666A6FAB85041333333B3AB3F5441A4703D6AFAB8504185EB5118B03F5441CDCCCC0CFAB8504148E17A04B43F5441CDCCCCACF9B85041D7A3701DB63F5441713D0A87F8B85041F6285C7FB93F5441A4703D8A01B950419A999969B93F5441CDCCCC3C0BB95041AE47E11AB93F5441D7A370FD0BB9504100000010B93F5441000000000DB950411F85EBD1C13F54410AD7A3C00FB95041CDCCCC5CC93F544148E17A940FB950419A999919CB3F54413D0AD7830FB950417B14AEE7CD3F544185EB51C80FB9504148E17AA4CF3F5441AE47E1DA10B9504148E17A64D23F5441D7A3702D12B95041295C8F12D23F54417B14AED711B9504100000020D43F54413333337312B95041333333B3D53F5441EC51B80E15B9504148E17A74D63F54413333333314B95041EC51B8CEDA3F544185EB514814B9504114AE47E1DC3F54410000001018B950411F85EBA1DD3F5441295C8FD21BB950410AD7A350DF3F5441F6285C5F1EB95041AE47E12AE13F54411F85EBF11EB95041D7A3700DE03F5441C3F5289C1FB95041A4703DCADE3F5441CDCCCCCC20B9504114AE4781DD3F5441C3F5289C2EB9504148E17A94CE3F54419A99996931B95041EC51B8AECF3F5441AE47E14A36B9504166666666D23F544152B81E953BB95041295C8F82D43F5441F6285CAF45B950417B14AE87D83F54418FC2F5384EB950415C8FC235DA3F54410AD7A36057B95041295C8FF2DA3F5441D7A370FD5EB950417B14AEF7DA3F5441CDCCCC2C67B9504100000070DA3F54410AD7A3B06CB95041D7A3706DDB3F54419A9999E96CB95041E17A141EDB3F54410AD7A35070B95041D7A370FDD93F5441F6285CCF70B9504152B81E35D93F5441D7A3701D70B95041EC51B80ED83F5441713D0AA770B9504166666696D73F54416666667670B950411F85EBE1D53F544152B81E556EB95041E17A14EED33F5441713D0AA76EB95041D7A370EDD23F5441F6285C9F70B9504148E17AA4D13F5441333333C370B950411F85EB01D13F5441333333C371B95041D7A3702DD03F54418FC2F57872B9504166666656CE3F54416666666671B95041B81E851BCC3F54411F85EB6170B950415C8FC245C93F5441C3F528CC70B9504100000080C53F5441EC51B8AE71B95041F6285C9FC23F5441333333F372B95041295C8FE2BD3F5441F6285CDF73B95041B81E859BBA3F5441E17A14DE74B9504148E17A64B83F5441295C8F9274B9504185EB5168B73F5441B81E85EB72B950410AD7A3C0B63F5441000000A075B950418FC2F5D8AE3F5441713D0AC777B95041295C8FF2A13F5441D7A3708D74B9504185EB51589E3F5441AE47E14A69B950410AD7A3609B3F54415C8FC2E565B95041B81E85CBA53F54418FC2F5F863B950417B14AE77AB3F5441C3F5284C63B9504148E17A14AD3F5441B81E859B61B9504185EB5178AF3F54419A9999E95FB95041A4703DDAB13F54411F85EB015DB95041713D0A77B43F5441D7A370ED5AB9504152B81EE5B53F54413D0AD72358B95041D7A3707DB73F5441CDCCCC4C55B9504133333383B83F5441D7A370AD52B9504100000010B93F5441D7A3702D50B950419A999919B93F544185EB51484AB9504148E17A34B83F544148E17AE443B9504152B81E75B73F544185EB518841B95041F6285CEFB73F5441C3F5288C40B95041E17A14BEB83F54419A9999693FB950419A999979BA3F5441333333433DB9504100000040BD3F54413D0AD7E33BB9504152B81E35BE3F5441EC51B84E3AB95041E17A14CEBE3F5441713D0A4739B95041B81E85FBBE3F5441295C8FB236B9504148E17A34BE3F5441CDCCCC4C33B95041C3F5289CBC3F544148E17A442EB950410AD7A340B93F5441713D0A3723B950415C8FC225B13F544148E17A741AB95041F6285C6FAA3F54413333330315B9504185EB5168A73F5441A4703D5A12B9504152B81EF5A63F544114AE47610EB950415C8FC2B5A63F5441295C8FF20CB95041295C8F42A63F5441B81E855B0DB95041000000B0A53F54410AD7A3A00EB95041E17A140EA63F5441333333A312B95041E17A142EA63F54415C8FC29515B95041AE47E1CAA63F5441333333D31AB95041713D0A07AA3F54410AD7A38023B95041295C8FB2B03F5441CDCCCCAC2EB95041CDCCCCECB83F5441B81E85AB33B9504133333333BC3F5441713D0AE736B9504114AE47C1BD3F5441713D0A4739B95041EC51B85EBE3F5441F6285C3F3AB95041CDCCCC3CBE3F5441CDCCCCCC3BB95041333333B3BD3F5441713D0AF73CB95041E17A14BEBC3F5441EC51B8FE3EB95041000000F0B93F54411F85EB1140B9504114AE4771B83F54413333335341B95041E17A145EB73F5441E17A14BE43B950413D0AD7E3B63F5441000000504AB95041A4703DBAB73F5441295C8F3250B950419A999959B83F544185EB519852B9504100000050B83F544185EB511855B95041A4703DCAB73F5441333333D357B95041EC51B8CEB63F5441713D0A875AB95041295C8F42B53F54411F85EB915CB950415C8FC2B5B33F54411F85EB715FB95041F6285C6FB13F54419A9999195CB9504100000030AC3F5441B81E85CB5AB95041F6285CEFA43F5441666666E656B950413D0AD7A3A33F5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A370FD5EB950417B14AEF7DA3F5441D0AF35AC60B95041DD5AC9DBDA3F5441D9FF4AA761B95041289833CADA3F544158B7113667B9504107FE436FDA3F54414414D3E667B9504170A4BF8FDA3F5441A1C9BF316BB95041C504B528DB3F54412F6AF1D96BB95041C74FE646DB3F54412947390C6CB95041FCF1EC4FDB3F5441BFBED0386CB950410024EE57DB3F5441A91F6BDA6CB95041BA375A5FD93F5441E146E7076EB950410A26C4B5D53F544192D0488A6EB950417166D01ED43F544152B81E556EB95041E17A14EED33F5441A0E2725F6EB9504159CEB8CDD33F5441713D0AA76EB95041D7A370EDD23F54414B02431E6FB95041356CAC9FD23F5441055E1AE96FB95041791F26BBD03F544155A8680571B9504107C1F61ECE3F54415CCB81706FB9504169AFDBD8CA3F5441A75D8CEA6DB950418AB88EA6C73F5441DCCE67986AB950415AE3039DC83F544133A0050F66B95041831F2AF1C93F54417C804D1C64B95041B9A74E82CA3F5441BDADEEA061B95041FA9F15F3CB3F54419F345A4B5FB95041CD65F860CE3F54412D4D5FAC5CB95041DCBD9A16D13F5441D49A49AC59B95041C01ED7D9D23F54415F4C483759B95041E82618CDD53F54413E554BCE58B95041E46B2E91D83F5441392B3F8758B95041300E3070DA3F54415597007658B9504161E849F3DA3F5441D7A370FD5EB950417B14AEF7DA3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574270 - 239793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000009F000000666666E656B950413D0AD7A3A33F54410AD7A3E051B95041E17A148EA23F5441A4703D9A46B95041295C8FF29E3F5441713D0AE73FB95041C3F5284C9C3F544114AE47B13EB95041C3F528DC9B3F5441EC51B81E3DB95041713D0A47A13F5441295C8FE23EB95041B81E855BA33F54413D0AD7533FB950410AD7A350AC3F5441F6285C9F36B950418FC2F5F8A83F5441A4703D8A2DB95041713D0A37A13F544185EB51C82CB95041E17A143EA43F5441333333C323B9504185EB51E8A13F5441AE47E13A20B95041295C8F829F3F5441D7A3708D1AB950413D0AD7E39F3F544148E17AC416B95041EC51B8AE9D3F5441B81E85BB12B95041CDCCCC2C963F5441D7A370AD13B95041C3F528FC8E3F5441AE47E13A08B95041333333D38B3F5441A4703D8A09B95041F6285C2F8F3F544114AE47510AB95041EC51B88E903F544148E17A740DB95041EC51B8AE923F5441000000E00CB95041295C8F52973F5441F6285CEF0AB950410AD7A3409A3F5441333333230AB950415C8FC205983F54410000004009B950415C8FC285963F5441AE47E18A08B95041CDCCCCEC953F5441EC51B8DE07B95041F6285CEF963F54419A99998901B95041EC51B87E9D3F5441AE47E16A00B9504152B81E059E3F5441A4703D9A02B95041295C8F329F3F5441295C8FE204B95041D7A3709DA13F5441A4703D8A05B95041AE47E17A9E3F544114AE47910DB95041E17A143EA03F54417B14AEA70CB950413D0AD723A53F544152B81EF50AB950415C8FC2D5A63F5441D7A3704D07B950417B14AE67AB3F54413D0AD77306B95041B81E853BAD3F5441B81E853B04B9504114AE4741AC3F54411F85EBD104B95041295C8FF2AA3F5441C3F528DCFFB850418FC2F598A83F54418FC2F5A8FAB8504152B81E35A83F5441666666A6FAB85041333333B3AB3F5441A4703D6AFAB8504185EB5118B03F5441CDCCCC0CFAB8504148E17A04B43F5441CDCCCCACF9B85041D7A3701DB63F5441713D0A87F8B85041F6285C7FB93F5441A4703D8A01B950419A999969B93F5441CDCCCC3C0BB95041AE47E11AB93F5441D7A370FD0BB9504100000010B93F5441000000000DB950411F85EBD1C13F54410AD7A3C00FB95041CDCCCC5CC93F544148E17A940FB950419A999919CB3F54413D0AD7830FB950417B14AEE7CD3F544185EB51C80FB9504148E17AA4CF3F5441AE47E1DA10B9504148E17A64D23F5441D7A3702D12B95041295C8F12D23F54417B14AED711B9504100000020D43F54413333337312B95041333333B3D53F5441EC51B80E15B9504148E17A74D63F54413333333314B95041EC51B8CEDA3F544185EB514814B9504114AE47E1DC3F54410000001018B950411F85EBA1DD3F5441295C8FD21BB950410AD7A350DF3F5441F6285C5F1EB95041AE47E12AE13F54411F85EBF11EB95041D7A3700DE03F5441C3F5289C1FB95041A4703DCADE3F5441CDCCCCCC20B9504114AE4781DD3F5441C3F5289C2EB9504148E17A94CE3F54419A99996931B95041EC51B8AECF3F5441AE47E14A36B9504166666666D23F544152B81E953BB95041295C8F82D43F5441F6285CAF45B950417B14AE87D83F54418FC2F5384EB950415C8FC235DA3F54410AD7A36057B95041295C8FF2DA3F5441D7A370FD5EB950417B14AEF7DA3F5441CDCCCC2C67B9504100000070DA3F54410AD7A3B06CB95041D7A3706DDB3F54419A9999E96CB95041E17A141EDB3F54410AD7A35070B95041D7A370FDD93F5441F6285CCF70B9504152B81E35D93F5441D7A3701D70B95041EC51B80ED83F5441713D0AA770B9504166666696D73F54416666667670B950411F85EBE1D53F544152B81E556EB95041E17A14EED33F5441713D0AA76EB95041D7A370EDD23F5441F6285C9F70B9504148E17AA4D13F5441333333C370B950411F85EB01D13F5441333333C371B95041D7A3702DD03F54418FC2F57872B9504166666656CE3F54416666666671B95041B81E851BCC3F54411F85EB6170B950415C8FC245C93F5441C3F528CC70B9504100000080C53F5441EC51B8AE71B95041F6285C9FC23F5441333333F372B95041295C8FE2BD3F5441F6285CDF73B95041B81E859BBA3F5441E17A14DE74B9504148E17A64B83F5441295C8F9274B9504185EB5168B73F5441B81E85EB72B950410AD7A3C0B63F5441000000A075B950418FC2F5D8AE3F5441713D0AC777B95041295C8FF2A13F5441D7A3708D74B9504185EB51589E3F5441AE47E14A69B950410AD7A3609B3F54415C8FC2E565B95041B81E85CBA53F54418FC2F5F863B950417B14AE77AB3F5441C3F5284C63B9504148E17A14AD3F5441B81E859B61B9504185EB5178AF3F54419A9999E95FB95041A4703DDAB13F54411F85EB015DB95041713D0A77B43F5441D7A370ED5AB9504152B81EE5B53F54413D0AD72358B95041D7A3707DB73F5441CDCCCC4C55B9504133333383B83F5441D7A370AD52B9504100000010B93F5441D7A3702D50B950419A999919B93F544185EB51484AB9504148E17A34B83F544148E17AE443B9504152B81E75B73F544185EB518841B95041F6285CEFB73F5441C3F5288C40B95041E17A14BEB83F54419A9999693FB950419A999979BA3F5441333333433DB9504100000040BD3F54413D0AD7E33BB9504152B81E35BE3F5441EC51B84E3AB95041E17A14CEBE3F5441713D0A4739B95041B81E85FBBE3F5441295C8FB236B9504148E17A34BE3F5441CDCCCC4C33B95041C3F5289CBC3F544148E17A442EB950410AD7A340B93F5441713D0A3723B950415C8FC225B13F544148E17A741AB95041F6285C6FAA3F54413333330315B9504185EB5168A73F5441A4703D5A12B9504152B81EF5A63F544114AE47610EB950415C8FC2B5A63F5441295C8FF20CB95041295C8F42A63F5441B81E855B0DB95041000000B0A53F54410AD7A3A00EB95041E17A140EA63F5441333333A312B95041E17A142EA63F54415C8FC29515B95041AE47E1CAA63F5441333333D31AB95041713D0A07AA3F54410AD7A38023B95041295C8FB2B03F5441CDCCCCAC2EB95041CDCCCCECB83F5441B81E85AB33B9504133333333BC3F5441713D0AE736B9504114AE47C1BD3F5441713D0A4739B95041EC51B85EBE3F5441F6285C3F3AB95041CDCCCC3CBE3F5441CDCCCCCC3BB95041333333B3BD3F5441713D0AF73CB95041E17A14BEBC3F5441EC51B8FE3EB95041000000F0B93F54411F85EB1140B9504114AE4771B83F54413333335341B95041E17A145EB73F5441E17A14BE43B950413D0AD7E3B63F5441000000504AB95041A4703DBAB73F5441295C8F3250B950419A999959B83F544185EB519852B9504100000050B83F544185EB511855B95041A4703DCAB73F5441333333D357B95041EC51B8CEB63F5441713D0A875AB95041295C8F42B53F54411F85EB915CB950415C8FC2B5B33F54411F85EB715FB95041F6285C6FB13F54419A9999195CB9504100000030AC3F5441B81E85CB5AB95041F6285CEFA43F5441666666E656B950413D0AD7A3A33F5441
+</a>
+
+<b>
+01060000000100000001030000000100000024000000422F94B820B95041FB8D1D97DD3F5441CDCCCCCC20B9504114AE4781DD3F5441CE5BEB8322B9504188EDB4A6DB3F5441E85A781A23B950416231C501DB3F54410ABDD68723B950418140CD8DDA3F54414994EF5926B950415C546781D73F5441259077612AB95041BA256225D33F54410103D8122BB95041B2E1E366D23F5441B63853132BB950415EB95E66D23F544168077D072DB950414300D349D03F54413EEAAD1F2DB95041890E9E2FD03F544191ECF6F22DB95041623C374ACF3F544143B74BC22DB950412D231425CF3F5441CDF20C802DB950411304B6EECE3F54418DC0F1422BB95041A4B3E558CD3F54411B20E23126B95041E6A059B5C93F5441C707660922B950414BA1A097CD3F5441412BEE361FB950416EB98042D03F544146C806A51DB9504148E202D9CE3F54413C023C6B18B95041F43A76E0CF3F5441F5D76B3C15B95041E1221C7BD03F5441BE81B0B213B950411AA28C86D23F54417911DA9113B95041174746B3D43F54410576AD0716B950419FBB0F76D63F5441485C55F715B950418104C9A2D73F54411A8799C615B950411B7DAFB2DA3F544168454E6D16B950414BB22B9ADB3F5441AEFD93F217B95041631A3885DC3F5441CDEB429118B950410FE87348DD3F5441F4CDEE841BB95041D6074E48DE3F54415CDE41681CB95041FEA172C6DD3F5441FC69AB901CB9504134F40FCFD93F5441E694DDC51EB95041DCAE04BFDA3F54414487C48B20B95041364FDE17DD3F5441D851CF1A20B95041B227E43EDE3F5441422F94B820B95041FB8D1D97DD3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574270 - 342076
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000009F000000666666E656B950413D0AD7A3A33F54410AD7A3E051B95041E17A148EA23F5441A4703D9A46B95041295C8FF29E3F5441713D0AE73FB95041C3F5284C9C3F544114AE47B13EB95041C3F528DC9B3F5441EC51B81E3DB95041713D0A47A13F5441295C8FE23EB95041B81E855BA33F54413D0AD7533FB950410AD7A350AC3F5441F6285C9F36B950418FC2F5F8A83F5441A4703D8A2DB95041713D0A37A13F544185EB51C82CB95041E17A143EA43F5441333333C323B9504185EB51E8A13F5441AE47E13A20B95041295C8F829F3F5441D7A3708D1AB950413D0AD7E39F3F544148E17AC416B95041EC51B8AE9D3F5441B81E85BB12B95041CDCCCC2C963F5441D7A370AD13B95041C3F528FC8E3F5441AE47E13A08B95041333333D38B3F5441A4703D8A09B95041F6285C2F8F3F544114AE47510AB95041EC51B88E903F544148E17A740DB95041EC51B8AE923F5441000000E00CB95041295C8F52973F5441F6285CEF0AB950410AD7A3409A3F5441333333230AB950415C8FC205983F54410000004009B950415C8FC285963F5441AE47E18A08B95041CDCCCCEC953F5441EC51B8DE07B95041F6285CEF963F54419A99998901B95041EC51B87E9D3F5441AE47E16A00B9504152B81E059E3F5441A4703D9A02B95041295C8F329F3F5441295C8FE204B95041D7A3709DA13F5441A4703D8A05B95041AE47E17A9E3F544114AE47910DB95041E17A143EA03F54417B14AEA70CB950413D0AD723A53F544152B81EF50AB950415C8FC2D5A63F5441D7A3704D07B950417B14AE67AB3F54413D0AD77306B95041B81E853BAD3F5441B81E853B04B9504114AE4741AC3F54411F85EBD104B95041295C8FF2AA3F5441C3F528DCFFB850418FC2F598A83F54418FC2F5A8FAB8504152B81E35A83F5441666666A6FAB85041333333B3AB3F5441A4703D6AFAB8504185EB5118B03F5441CDCCCC0CFAB8504148E17A04B43F5441CDCCCCACF9B85041D7A3701DB63F5441713D0A87F8B85041F6285C7FB93F5441A4703D8A01B950419A999969B93F5441CDCCCC3C0BB95041AE47E11AB93F5441D7A370FD0BB9504100000010B93F5441000000000DB950411F85EBD1C13F54410AD7A3C00FB95041CDCCCC5CC93F544148E17A940FB950419A999919CB3F54413D0AD7830FB950417B14AEE7CD3F544185EB51C80FB9504148E17AA4CF3F5441AE47E1DA10B9504148E17A64D23F5441D7A3702D12B95041295C8F12D23F54417B14AED711B9504100000020D43F54413333337312B95041333333B3D53F5441EC51B80E15B9504148E17A74D63F54413333333314B95041EC51B8CEDA3F544185EB514814B9504114AE47E1DC3F54410000001018B950411F85EBA1DD3F5441295C8FD21BB950410AD7A350DF3F5441F6285C5F1EB95041AE47E12AE13F54411F85EBF11EB95041D7A3700DE03F5441C3F5289C1FB95041A4703DCADE3F5441CDCCCCCC20B9504114AE4781DD3F5441C3F5289C2EB9504148E17A94CE3F54419A99996931B95041EC51B8AECF3F5441AE47E14A36B9504166666666D23F544152B81E953BB95041295C8F82D43F5441F6285CAF45B950417B14AE87D83F54418FC2F5384EB950415C8FC235DA3F54410AD7A36057B95041295C8FF2DA3F5441D7A370FD5EB950417B14AEF7DA3F5441CDCCCC2C67B9504100000070DA3F54410AD7A3B06CB95041D7A3706DDB3F54419A9999E96CB95041E17A141EDB3F54410AD7A35070B95041D7A370FDD93F5441F6285CCF70B9504152B81E35D93F5441D7A3701D70B95041EC51B80ED83F5441713D0AA770B9504166666696D73F54416666667670B950411F85EBE1D53F544152B81E556EB95041E17A14EED33F5441713D0AA76EB95041D7A370EDD23F5441F6285C9F70B9504148E17AA4D13F5441333333C370B950411F85EB01D13F5441333333C371B95041D7A3702DD03F54418FC2F57872B9504166666656CE3F54416666666671B95041B81E851BCC3F54411F85EB6170B950415C8FC245C93F5441C3F528CC70B9504100000080C53F5441EC51B8AE71B95041F6285C9FC23F5441333333F372B95041295C8FE2BD3F5441F6285CDF73B95041B81E859BBA3F5441E17A14DE74B9504148E17A64B83F5441295C8F9274B9504185EB5168B73F5441B81E85EB72B950410AD7A3C0B63F5441000000A075B950418FC2F5D8AE3F5441713D0AC777B95041295C8FF2A13F5441D7A3708D74B9504185EB51589E3F5441AE47E14A69B950410AD7A3609B3F54415C8FC2E565B95041B81E85CBA53F54418FC2F5F863B950417B14AE77AB3F5441C3F5284C63B9504148E17A14AD3F5441B81E859B61B9504185EB5178AF3F54419A9999E95FB95041A4703DDAB13F54411F85EB015DB95041713D0A77B43F5441D7A370ED5AB9504152B81EE5B53F54413D0AD72358B95041D7A3707DB73F5441CDCCCC4C55B9504133333383B83F5441D7A370AD52B9504100000010B93F5441D7A3702D50B950419A999919B93F544185EB51484AB9504148E17A34B83F544148E17AE443B9504152B81E75B73F544185EB518841B95041F6285CEFB73F5441C3F5288C40B95041E17A14BEB83F54419A9999693FB950419A999979BA3F5441333333433DB9504100000040BD3F54413D0AD7E33BB9504152B81E35BE3F5441EC51B84E3AB95041E17A14CEBE3F5441713D0A4739B95041B81E85FBBE3F5441295C8FB236B9504148E17A34BE3F5441CDCCCC4C33B95041C3F5289CBC3F544148E17A442EB950410AD7A340B93F5441713D0A3723B950415C8FC225B13F544148E17A741AB95041F6285C6FAA3F54413333330315B9504185EB5168A73F5441A4703D5A12B9504152B81EF5A63F544114AE47610EB950415C8FC2B5A63F5441295C8FF20CB95041295C8F42A63F5441B81E855B0DB95041000000B0A53F54410AD7A3A00EB95041E17A140EA63F5441333333A312B95041E17A142EA63F54415C8FC29515B95041AE47E1CAA63F5441333333D31AB95041713D0A07AA3F54410AD7A38023B95041295C8FB2B03F5441CDCCCCAC2EB95041CDCCCCECB83F5441B81E85AB33B9504133333333BC3F5441713D0AE736B9504114AE47C1BD3F5441713D0A4739B95041EC51B85EBE3F5441F6285C3F3AB95041CDCCCC3CBE3F5441CDCCCCCC3BB95041333333B3BD3F5441713D0AF73CB95041E17A14BEBC3F5441EC51B8FE3EB95041000000F0B93F54411F85EB1140B9504114AE4771B83F54413333335341B95041E17A145EB73F5441E17A14BE43B950413D0AD7E3B63F5441000000504AB95041A4703DBAB73F5441295C8F3250B950419A999959B83F544185EB519852B9504100000050B83F544185EB511855B95041A4703DCAB73F5441333333D357B95041EC51B8CEB63F5441713D0A875AB95041295C8F42B53F54411F85EB915CB950415C8FC2B5B33F54411F85EB715FB95041F6285C6FB13F54419A9999195CB9504100000030AC3F5441B81E85CB5AB95041F6285CEFA43F5441666666E656B950413D0AD7A3A33F5441
+</a>
+
+<b>
+010600000001000000010300000001000000230000003D2F94B820B95041008E1D97DD3F5441CDCCCCCC20B9504114AE4781DD3F5441D15BEB8322B9504184EDB4A6DB3F544181063A3723B95041D73340E1DA3F544109417FAF23B9504132380C5FDA3F5441259077612AB95041BA256225D33F54410403D8122BB95041B2E1E366D23F54416B9846F02CB950417C42E962D03F544168077D072DB950414300D349D03F54413EEAAD1F2DB95041890E9E2FD03F544191ECF6F22DB95041623C374ACF3F544143B74BC22DB950412D231425CF3F5441CDF20C802DB950411304B6EECE3F54418DC0F1422BB95041A4B3E558CD3F54411B20E23126B95041E6A059B5C93F5441C707660922B950414BA1A097CD3F5441412BEE361FB950416EB98042D03F544146C806A51DB9504148E202D9CE3F5441C0FDE9ED18B9504140553DC3CF3F5441F5D76B3C15B95041E1221C7BD03F5441BE81B0B213B950411AA28C86D23F54417911DA9113B95041174746B3D43F54410576AD0716B950419FBB0F76D63F5441485C55F715B950418104C9A2D73F54411A8799C615B950411B7DAFB2DA3F544168454E6D16B950414BB22B9ADB3F5441AEFD93F217B95041631A3885DC3F5441CDEB429118B950410FE87348DD3F5441F4CDEE841BB95041D6074E48DE3F54415CDE41681CB95041FEA172C6DD3F5441FC69AB901CB9504134F40FCFD93F5441E694DDC51EB95041DCAE04BFDA3F54414487C48B20B95041364FDE17DD3F5441D851CF1A20B95041B227E43EDE3F54413D2F94B820B95041008E1D97DD3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574382 - 245065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000005B000000B81E850B6ABC5041F6285C5F6C2654418FC2F54866BC504114AE47516C26544185EB51E861BC504114AE47C16B26544185EB51285FBC504185EB51686A2654411F85EB115CBC5041713D0A276726544114AE470159BC50415C8FC2E55F2654410AD7A3404EBC5041713D0AE75B265441333333A34DBC5041A4703DAA5B2654411F85EB2143BC5041D7A370ED562654418FC2F54842BC5041EC51B85E532654410000004041BC50413D0AD7034F265441F6285C8F38BC5041713D0AC74F265441A4703DCA36BC50415C8FC245502654415C8FC27537BC5041B81E85EB552654413D0AD79337BC50419A9999E956265441AE47E1DA37BC5041F6285C3F592654410AD7A39039BC50415C8FC2A567265441713D0A572CBC5041B81E856B602654410000000023BC5041295C8FE261265441713D0A3724BC5041F6285CBF67265441AE47E1BA26BC50410AD7A3C068265441000000B02DBC5041666666D66A26544114AE47C134BC5041295C8FF26B2654413333332339BC5041EC51B8FE6B265441D7A370FD3CBC5041CDCCCC7C6C2654413D0AD7133FBC5041CDCCCC2C6D2654411F85EB8140BC504152B81EA56D265441EC51B8EE4CBC5041D7A370FD72265441295C8FE24EBC50411F85EB01742654413D0AD75352BC5041D7A3704D76265441D7A370DD56BC5041713D0A87782654417B14AEC760BC5041F6285C9F7C2654413333339360BC5041333333437926544185EB514862BC50411F85EB61762654413333339360BC5041C3F5283C7426544114AE476160BC5041CDCCCCAC72265441D7A3706D60BC504148E17AE46F2654413D0AD79364BC5041D7A3706D6E265441A4703D9A65BC5041AE47E1EA6E2654411F85EBD166BC50418FC2F5B870265441A4703D9A67BC50415C8FC2C572265441000000306ABC5041D7A3708D712654415C8FC2556ABC504114AE478175265441295C8FD26ABC5041EC51B86E76265441295C8FD26CBC50417B14AEF776265441000000506FBC50415C8FC2C5762654417B14AE1770BC5041A4703D9A75265441F6285CDF70BC50416666661672265441CDCCCC5C73BC50415C8FC2A56F265441B81E851B77BC5041E17A146E712654410000000072BC5041295C8F92782654410000004070BC50411F85EB717B2654410AD7A3F06EBC5041E17A148E7E265441F6285CFF6DBC50413D0AD7A381265441D7A370ED6CBC504114AE4761822654411F85EBA16FBC5041CDCCCC8C8326544185EB51C870BC504152B81E3584265441295C8F5272BC50410AD7A37085265441AE47E1DA73BC504114AE476187265441B81E851B74BC5041F6285C8F892654411F85EB1174BC5041713D0A378B26544185EB51287DBC50411F85EBE187265441CDCCCCDC7EBC50411F85EB4187265441D7A3702D99BC50411F85EBD17D2654410AD7A3109ABC5041333333837D265441295C8F329ABC50417B14AE777D265441AE47E1BAA1BC5041C3F528DC7A26544166666616B1BC5041B81E858B7526544166666646B9BC5041666666B6722654417B14AE17BDBC50413D0AD7637126544148E17A04BDBC50417B14AE177026544114AE47F1BBBC50413D0AD70370265441713D0AB7BABC50418FC2F5186E2654418FC2F568B9BC5041B81E851B682654411F85EB51C0BC5041A4703DBA65265441EC51B89EC4BC5041295C8FE2632654413D0AD763C3BC50417B14AEA7622654419A999979BFBC50411F85EB3162265441E17A149EBFBC50418FC2F5B85F26544114AE4791B1BC5041C3F5289C632654419A999919A1BC504185EB512868265441F6285C3F89BC5041C3F528BC6E265441D7A3703D7CBC50411F85EB5172265441D7A3708D7ABC50418FC2F5C87226544152B81E357ABC50411F85EB11712654419A9999297ABC50417B14AED7702654416666669679BC50415C8FC2F56D26544152B81EE578BC50413D0AD7836A2654410AD7A3B077BC50410000009064265441A4703D3A6ABC5041B81E85CB66265441B81E850B6ABC5041F6285C5F6C265441050000008FC2F598A7BC5041D7A3703D742654418FC2F538A2BC50410AD7A3507426544152B81E85A5BC5041F6285CFF6F26544166666696ACBC50411F85EBA16F2654418FC2F598A7BC5041D7A3703D742654410A000000333333E37BBC5041333333D37926544185EB51487CBC5041713D0AF77A265441AE47E1BA7CBC50418FC2F5D87C26544152B81EC57DBC5041CDCCCCFC7D2654410AD7A3507EBC5041CDCCCC6C7F26544185EB51B87DBC50413D0AD78380265441F6285CBF7ABC50413D0AD7F3812654415C8FC23579BC5041EC51B8AE7E265441AE47E16A78BC5041AE47E11A7C265441333333E37BBC5041333333D379265441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000295C8F329ABC50417B14AE777D26544187DA5FAD9EBC504142EEB0EA7B265441520548629FBC5041B3175DA97B2654412288B3C5A2BC5041EED8407E7A265441E9E543F4A2BC5041A0BBB36F7A265441CC46D12DACBC50410182673E77265441BE6A0058ADBC50410C1035D7762654414B35B792AEBC50414D8A8B2B76265441634F121BAEBC504137463CF373265441C1B77E3CACBC5041B77F2511742654411F20EB5DAABC5041ABF2F74C742654412069C9E9A7BC50419F65CA8874265441A178BE57A5BC504193D89CC47426544196346F1FA3BC504193D89CC4742654418C7D4DABA0BC5041081286E274265441BCFAE1479DBC504170311478752654411A634E699BBC5041C2C3744976265441F804A4A899BC5041AAA919C176265441566D10CA97BC5041938FBE38772654419CBB216396BC50417B7563B0772654416D876B5297BC5041B3175DA97B265441BC5DDFFE97BC5041DC776E3E7E265441D7A3702D99BC50411F85EBD17D2654410AD7A3109ABC5041333333837D265441295C8F329ABC50417B14AE777D265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574382 - 352255
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000005B000000B81E850B6ABC5041F6285C5F6C2654418FC2F54866BC504114AE47516C26544185EB51E861BC504114AE47C16B26544185EB51285FBC504185EB51686A2654411F85EB115CBC5041713D0A276726544114AE470159BC50415C8FC2E55F2654410AD7A3404EBC5041713D0AE75B265441333333A34DBC5041A4703DAA5B2654411F85EB2143BC5041D7A370ED562654418FC2F54842BC5041EC51B85E532654410000004041BC50413D0AD7034F265441F6285C8F38BC5041713D0AC74F265441A4703DCA36BC50415C8FC245502654415C8FC27537BC5041B81E85EB552654413D0AD79337BC50419A9999E956265441AE47E1DA37BC5041F6285C3F592654410AD7A39039BC50415C8FC2A567265441713D0A572CBC5041B81E856B602654410000000023BC5041295C8FE261265441713D0A3724BC5041F6285CBF67265441AE47E1BA26BC50410AD7A3C068265441000000B02DBC5041666666D66A26544114AE47C134BC5041295C8FF26B2654413333332339BC5041EC51B8FE6B265441D7A370FD3CBC5041CDCCCC7C6C2654413D0AD7133FBC5041CDCCCC2C6D2654411F85EB8140BC504152B81EA56D265441EC51B8EE4CBC5041D7A370FD72265441295C8FE24EBC50411F85EB01742654413D0AD75352BC5041D7A3704D76265441D7A370DD56BC5041713D0A87782654417B14AEC760BC5041F6285C9F7C2654413333339360BC5041333333437926544185EB514862BC50411F85EB61762654413333339360BC5041C3F5283C7426544114AE476160BC5041CDCCCCAC72265441D7A3706D60BC504148E17AE46F2654413D0AD79364BC5041D7A3706D6E265441A4703D9A65BC5041AE47E1EA6E2654411F85EBD166BC50418FC2F5B870265441A4703D9A67BC50415C8FC2C572265441000000306ABC5041D7A3708D712654415C8FC2556ABC504114AE478175265441295C8FD26ABC5041EC51B86E76265441295C8FD26CBC50417B14AEF776265441000000506FBC50415C8FC2C5762654417B14AE1770BC5041A4703D9A75265441F6285CDF70BC50416666661672265441CDCCCC5C73BC50415C8FC2A56F265441B81E851B77BC5041E17A146E712654410000000072BC5041295C8F92782654410000004070BC50411F85EB717B2654410AD7A3F06EBC5041E17A148E7E265441F6285CFF6DBC50413D0AD7A381265441D7A370ED6CBC504114AE4761822654411F85EBA16FBC5041CDCCCC8C8326544185EB51C870BC504152B81E3584265441295C8F5272BC50410AD7A37085265441AE47E1DA73BC504114AE476187265441B81E851B74BC5041F6285C8F892654411F85EB1174BC5041713D0A378B26544185EB51287DBC50411F85EBE187265441CDCCCCDC7EBC50411F85EB4187265441D7A3702D99BC50411F85EBD17D2654410AD7A3109ABC5041333333837D265441295C8F329ABC50417B14AE777D265441AE47E1BAA1BC5041C3F528DC7A26544166666616B1BC5041B81E858B7526544166666646B9BC5041666666B6722654417B14AE17BDBC50413D0AD7637126544148E17A04BDBC50417B14AE177026544114AE47F1BBBC50413D0AD70370265441713D0AB7BABC50418FC2F5186E2654418FC2F568B9BC5041B81E851B682654411F85EB51C0BC5041A4703DBA65265441EC51B89EC4BC5041295C8FE2632654413D0AD763C3BC50417B14AEA7622654419A999979BFBC50411F85EB3162265441E17A149EBFBC50418FC2F5B85F26544114AE4791B1BC5041C3F5289C632654419A999919A1BC504185EB512868265441F6285C3F89BC5041C3F528BC6E265441D7A3703D7CBC50411F85EB5172265441D7A3708D7ABC50418FC2F5C87226544152B81E357ABC50411F85EB11712654419A9999297ABC50417B14AED7702654416666669679BC50415C8FC2F56D26544152B81EE578BC50413D0AD7836A2654410AD7A3B077BC50410000009064265441A4703D3A6ABC5041B81E85CB66265441B81E850B6ABC5041F6285C5F6C265441050000008FC2F598A7BC5041D7A3703D742654418FC2F538A2BC50410AD7A3507426544152B81E85A5BC5041F6285CFF6F26544166666696ACBC50411F85EBA16F2654418FC2F598A7BC5041D7A3703D742654410A000000333333E37BBC5041333333D37926544185EB51487CBC5041713D0AF77A265441AE47E1BA7CBC50418FC2F5D87C26544152B81EC57DBC5041CDCCCCFC7D2654410AD7A3507EBC5041CDCCCC6C7F26544185EB51B87DBC50413D0AD78380265441F6285CBF7ABC50413D0AD7F3812654415C8FC23579BC5041EC51B8AE7E265441AE47E16A78BC5041AE47E11A7C265441333333E37BBC5041333333D379265441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000295C8F329ABC50417B14AE777D26544187DA5FAD9EBC504142EEB0EA7B265441520548629FBC5041B3175DA97B2654412288B3C5A2BC5041EED8407E7A265441E9E543F4A2BC5041A0BBB36F7A265441CC46D12DACBC50410182673E77265441BE6A0058ADBC50410C1035D7762654414B35B792AEBC50414D8A8B2B76265441634F121BAEBC504137463CF373265441C1B77E3CACBC5041B77F2511742654411F20EB5DAABC5041ABF2F74C742654412069C9E9A7BC50419F65CA8874265441A178BE57A5BC504193D89CC47426544196346F1FA3BC504193D89CC4742654418C7D4DABA0BC5041081286E274265441BCFAE1479DBC504170311478752654411A634E699BBC5041C2C3744976265441F804A4A899BC5041AAA919C176265441566D10CA97BC5041938FBE38772654419CBB216396BC50417B7563B0772654416D876B5297BC5041B3175DA97B265441BC5DDFFE97BC5041DC776E3E7E265441D7A3702D99BC50411F85EBD17D2654410AD7A3109ABC5041333333837D265441295C8F329ABC50417B14AE777D265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574660 - 24548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000081000000E17A14EECDB75041B81E854B223754417B14AEF7CCB750410AD7A3D0203754419A999989CBB75041333333E31F375441CDCCCC7CCCB75041EC51B8BE1337544152B81EB5CBB750413D0AD7530F37544152B81E45C9B75041F6285C4FFE365441CDCCCC1CC0B75041B81E85BB03375441A4703DFAB7B75041713D0AB705375441E17A148EB2B750417B14AE77FE365441295C8F12AFB7504114AE47F1FE365441AE47E12AAAB750415C8FC2D5FD3654418FC2F598A3B750410000009004375441EC51B83E9FB75041B81E853B093754418FC2F53896B7504166666676113754410AD7A3E094B75041333333E312375441A4703D2A94B7504133333373163754419A9999498DB7504148E17A041C37544114AE47618BB750410AD7A3901A3754416666663688B750410AD7A3001737544114AE477185B75041EC51B8CE12375441666666F684B75041E17A142E1037544114AE476184B7504148E17AB40B3754418FC2F5F883B75041CDCCCCDC073754413333338383B750419A999999FD365441CDCCCC1C82B7504152B81E85F736544152B81E0580B7504100000020F2365441C3F5289C7CB75041B81E855BEC365441B81E850B56B750410AD7A3A0E23654419A99996956B75041AE47E17AE33654411F85EB7157B75041EC51B8DEE5365441C3F528BC57B7504148E17AB4E8365441A4703D3A58B75041E17A142EEC365441EC51B8FE58B750417B14AE77EF365441E17A146E59B750415C8FC205F2365441F6285C9F59B75041C3F528FCF4365441E17A14EE59B75041713D0A87F73654413D0AD7135AB75041C3F528ACF936544185EB51D85AB75041A4703DCAFD365441CDCCCC9C5AB75041666666D6003754410000004059B7504148E17AF4053754416666665658B75041D7A3707D073754413333333357B75041CDCCCC4C09375441E17A148E55B750413D0AD7430C375441E17A142E54B750418FC2F5280E37544148E17A0453B7504185EB5128103754419A9999A952B7504185EB51181137544114AE47B152B7504185EB51E8113754418FC2F5D852B75041F6285CBF13375441CDCCCCAC52B750410AD7A31016375441CDCCCC2C52B7504185EB5108183754418FC2F5A851B75041666666961A375441EC51B8AE51B75041EC51B89E1C3754415C8FC2C551B75041000000001E3754413D0AD7C351B7504185EB51C81F375441C3F528FC51B750419A999939213754418FC2F5085BB7504100000020213754418FC2F5F860B75041295C8F121F375441B81E85DB68B7504114AE472121375441333333F36EB7504133333393203754411F85EB0175B750410AD7A3701F375441EC51B81E7AB75041E17A14AE1D3754415C8FC22582B75041C3F5288C2637544185EB51B889B75041F6285C4F2F375441713D0A878AB750415C8FC2552F375441D7A3708D8BB75041E17A149E33375441F6285C8F8CB75041EC51B82E383754415C8FC2757CB75041EC51B83E3B375441C3F5283C7EB75041C3F5286C42375441A4703DEA80B750410000002049375441A4703D4A85B7504185EB51B85237544152B81E6588B750415C8FC2A558375441E17A14FE8BB75041EC51B8DE5D3754416666669695B7504148E17A346B375441C3F5282CA0B750419A9999597C37544148E17A94A7B7504148E17AC488375441A4703DAAADB7504148E17A8492375441B81E85ABB2B75041F6285C4F8D375441295C8F42BBB750419A999939823754418FC2F528BAB75041D7A3708D81375441D7A3701DBDB75041CDCCCCEC7B375441A4703DCAC0B7504185EB51A87637544152B81E85C2B75041C3F528BC74375441B81E85BBC3B75041A4703D0A743754415C8FC2C5C6B7504114AE470173375441B81E85CBCAB750419A9999297237544166666606CEB75041CDCCCCDC70375441EC51B82EDAB750415C8FC2956237544100000040DEB75041E17A14CE5D3754415C8FC2F5E9B75041E17A14AE4E375441D7A3701DECB750413D0AD7434C37544114AE4731EAB75041EC51B87E49375441D7A370EDE8B750419A999999473754413D0AD7A3E7B7504148E17A0446375441AE47E11AE6B750419A9999E94437544100000060E6B75041000000704437544148E17A34E8B75041A4703D7A453754419A999989E9B75041295C8F424737544114AE47C1EAB7504114AE471149375441EC51B83EECB750415C8FC2654A37544152B81E05ECB750417B14AEC747375441295C8F42EAB75041713D0A4741375441F6285CDFE6B75041C3F5287C36375441B81E85DBE5B75041AE47E1CA34375441EC51B8EEE4B750419A9999893437544100000090E3B7504185EB51483437544114AE47A1DFB75041666666063437544114AE4711DDB750418FC2F598333754413D0AD703DBB750413D0AD7D332375441295C8F22D9B750415C8FC27531375441EC51B80ED6B750418FC2F5C82D37544148E17A54D0B750417B14AE0727375441B81E851BCEB750413D0AD7F323375441333333D3CCB750410000008022375441AE47E18ACBB75041CDCCCCFC21375441AE47E1EAC9B75041CDCCCCFC213754413D0AD713C3B75041B81E854B24375441AE47E1DAC0B750418FC2F5B82437544114AE4751BFB75041D7A3708D2437544114AE47B1BDB75041AE47E15A23375441666666D6BCB75041CDCCCCFC2137544100000070BDB7504114AE47D12137544166666636BEB75041295C8FE222375441F6285C9FBFB75041333333D3233754410AD7A3E0C0B7504152B81E0524375441A4703DEAC2B75041713D0A97233754417B14AEF7C9B75041F6285C1F21375441713D0AF7CBB75041F6285C1F21375441E17A142ECDB750415C8FC2B521375441E17A14EECDB75041B81E854B22375441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000041A2EB32EBB75041C68413BF443754419EE746E2EAB75041AF74219543375441A6802384E8B750417F66C0B83B3754413510EB2BE8B7504185E0AE9F3A375441B54C6A0FE7B750419C146925373754415C2047B5E6B750418287806137375441360EF5E2E5B750418287806137375441DB5EBCE1E7B7504158ECED993D375441742A1AD2E8B7504149DE4396433754414E18C8FFE7B750419502E83A4537544154A36B2BE8B750419D6617754537544148E17A34E8B75041A4703D7A453754419A999989E9B75041295C8F424737544108DA8BADE9B75041E104ED77473754410EF677C2E9B75041947FD293473754410ADF1962EBB750413EE9D4A0493754416AB822F4EBB75041A0472F234A37544141A2EB32EBB75041C68413BF44375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574660 - 68296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000081000000E17A14EECDB75041B81E854B223754417B14AEF7CCB750410AD7A3D0203754419A999989CBB75041333333E31F375441CDCCCC7CCCB75041EC51B8BE1337544152B81EB5CBB750413D0AD7530F37544152B81E45C9B75041F6285C4FFE365441CDCCCC1CC0B75041B81E85BB03375441A4703DFAB7B75041713D0AB705375441E17A148EB2B750417B14AE77FE365441295C8F12AFB7504114AE47F1FE365441AE47E12AAAB750415C8FC2D5FD3654418FC2F598A3B750410000009004375441EC51B83E9FB75041B81E853B093754418FC2F53896B7504166666676113754410AD7A3E094B75041333333E312375441A4703D2A94B7504133333373163754419A9999498DB7504148E17A041C37544114AE47618BB750410AD7A3901A3754416666663688B750410AD7A3001737544114AE477185B75041EC51B8CE12375441666666F684B75041E17A142E1037544114AE476184B7504148E17AB40B3754418FC2F5F883B75041CDCCCCDC073754413333338383B750419A999999FD365441CDCCCC1C82B7504152B81E85F736544152B81E0580B7504100000020F2365441C3F5289C7CB75041B81E855BEC365441B81E850B56B750410AD7A3A0E23654419A99996956B75041AE47E17AE33654411F85EB7157B75041EC51B8DEE5365441C3F528BC57B7504148E17AB4E8365441A4703D3A58B75041E17A142EEC365441EC51B8FE58B750417B14AE77EF365441E17A146E59B750415C8FC205F2365441F6285C9F59B75041C3F528FCF4365441E17A14EE59B75041713D0A87F73654413D0AD7135AB75041C3F528ACF936544185EB51D85AB75041A4703DCAFD365441CDCCCC9C5AB75041666666D6003754410000004059B7504148E17AF4053754416666665658B75041D7A3707D073754413333333357B75041CDCCCC4C09375441E17A148E55B750413D0AD7430C375441E17A142E54B750418FC2F5280E37544148E17A0453B7504185EB5128103754419A9999A952B7504185EB51181137544114AE47B152B7504185EB51E8113754418FC2F5D852B75041F6285CBF13375441CDCCCCAC52B750410AD7A31016375441CDCCCC2C52B7504185EB5108183754418FC2F5A851B75041666666961A375441EC51B8AE51B75041EC51B89E1C3754415C8FC2C551B75041000000001E3754413D0AD7C351B7504185EB51C81F375441C3F528FC51B750419A999939213754418FC2F5085BB7504100000020213754418FC2F5F860B75041295C8F121F375441B81E85DB68B7504114AE472121375441333333F36EB7504133333393203754411F85EB0175B750410AD7A3701F375441EC51B81E7AB75041E17A14AE1D3754415C8FC22582B75041C3F5288C2637544185EB51B889B75041F6285C4F2F375441713D0A878AB750415C8FC2552F375441D7A3708D8BB75041E17A149E33375441F6285C8F8CB75041EC51B82E383754415C8FC2757CB75041EC51B83E3B375441C3F5283C7EB75041C3F5286C42375441A4703DEA80B750410000002049375441A4703D4A85B7504185EB51B85237544152B81E6588B750415C8FC2A558375441E17A14FE8BB75041EC51B8DE5D3754416666669695B7504148E17A346B375441C3F5282CA0B750419A9999597C37544148E17A94A7B7504148E17AC488375441A4703DAAADB7504148E17A8492375441B81E85ABB2B75041F6285C4F8D375441295C8F42BBB750419A999939823754418FC2F528BAB75041D7A3708D81375441D7A3701DBDB75041CDCCCCEC7B375441A4703DCAC0B7504185EB51A87637544152B81E85C2B75041C3F528BC74375441B81E85BBC3B75041A4703D0A743754415C8FC2C5C6B7504114AE470173375441B81E85CBCAB750419A9999297237544166666606CEB75041CDCCCCDC70375441EC51B82EDAB750415C8FC2956237544100000040DEB75041E17A14CE5D3754415C8FC2F5E9B75041E17A14AE4E375441D7A3701DECB750413D0AD7434C37544114AE4731EAB75041EC51B87E49375441D7A370EDE8B750419A999999473754413D0AD7A3E7B7504148E17A0446375441AE47E11AE6B750419A9999E94437544100000060E6B75041000000704437544148E17A34E8B75041A4703D7A453754419A999989E9B75041295C8F424737544114AE47C1EAB7504114AE471149375441EC51B83EECB750415C8FC2654A37544152B81E05ECB750417B14AEC747375441295C8F42EAB75041713D0A4741375441F6285CDFE6B75041C3F5287C36375441B81E85DBE5B75041AE47E1CA34375441EC51B8EEE4B750419A9999893437544100000090E3B7504185EB51483437544114AE47A1DFB75041666666063437544114AE4711DDB750418FC2F598333754413D0AD703DBB750413D0AD7D332375441295C8F22D9B750415C8FC27531375441EC51B80ED6B750418FC2F5C82D37544148E17A54D0B750417B14AE0727375441B81E851BCEB750413D0AD7F323375441333333D3CCB750410000008022375441AE47E18ACBB75041CDCCCCFC21375441AE47E1EAC9B75041CDCCCCFC213754413D0AD713C3B75041B81E854B24375441AE47E1DAC0B750418FC2F5B82437544114AE4751BFB75041D7A3708D2437544114AE47B1BDB75041AE47E15A23375441666666D6BCB75041CDCCCCFC2137544100000070BDB7504114AE47D12137544166666636BEB75041295C8FE222375441F6285C9FBFB75041333333D3233754410AD7A3E0C0B7504152B81E0524375441A4703DEAC2B75041713D0A97233754417B14AEF7C9B75041F6285C1F21375441713D0AF7CBB75041F6285C1F21375441E17A142ECDB750415C8FC2B521375441E17A14EECDB75041B81E854B22375441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000041A2EB32EBB75041C68413BF443754419EE746E2EAB75041AF74219543375441A6802384E8B750417F66C0B83B3754413510EB2BE8B7504185E0AE9F3A375441B54C6A0FE7B750419C146925373754415C2047B5E6B750418287806137375441360EF5E2E5B750418287806137375441DB5EBCE1E7B7504158ECED993D375441742A1AD2E8B7504149DE4396433754414E18C8FFE7B750419502E83A4537544154A36B2BE8B750419D6617754537544148E17A34E8B75041A4703D7A453754419A999989E9B75041295C8F424737544108DA8BADE9B75041E104ED77473754410EF677C2E9B75041947FD293473754410ADF1962EBB750413EE9D4A0493754416AB822F4EBB75041A0472F234A37544141A2EB32EBB75041C68413BF44375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574797 - 3168369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000000000070F4B8504185EB5188713B5441CDCCCC1CF1B850410AD7A3B0723B5441295C8F92EFB850410AD7A360733B5441C3F5283CEDB8504114AE4791743B5441AE47E18AF8B850417B14AE777F3B54410AD7A30004B950419A999939893B54415C8FC2B50DB95041EC51B8BE913B5441EC51B87E1BB9504185EB51089E3B54410000003023B95041000000D0A33B5441AE47E15A25B95041F6285C5F9F3B5441EC51B85E27B950417B14AE479A3B5441E17A142E1EB95041713D0A97913B54417B14AE071BB950410AD7A3708E3B544148E17AE411B95041AE47E13A863B5441333333930CB9504152B81EB5803B54413333337305B950419A999969773B5441A4703D8A03B95041CDCCCCFC743B5441713D0AF7FDB85041B81E859B6D3B54415C8FC265FCB85041295C8F626E3B544152B81E25F9B850413D0AD7E36F3B544100000070F4B8504185EB5188713B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F0A9AEAE1BB950410CA35B2C9E3B5441EC51B87E1BB9504185EB51089E3B54417D909A5D1BB95041F21FCDEA9D3B5441A8794C261BB95041BB7C15BE9D3B54412CF7FE5316B950418C70496D993B54418E80FD0D0CB950416808CA4A903B54418F05719705B95041A063A39E8A3B5441C8C5D49B02B95041527ACC09883B5441B75A997E01B95041F3D6F016873B5441458A37AE00B95041A63837D6883B54418C64E57802B9504182BFADA2893B5441A4703DBA00B950411F85EBA18D3B544185EB512801B95041C3F528DC8D3B5441716F7562FFB85041DD2A5D3F913B544121B7569DFEB85041FAAF48B1923B5441E4AC7F59FDB85041B1CECD1C953B5441BD50F036FBB850410C5E9012943B54419AC9692BFAB85041103E750D943B5441679636F8F9B85041BE855628943B54411A02FCEBF9B850412122546C943B54419AC969ABF9B850416CCD37A3943B5441F6582C81F9B85041FB8F2DAC943B5441418C65B1F8B85041E0D23544963B5441878C478DF7B850417348EAA2983B5441AEFFD6FCF5B8504155BA021F9C3B54413AC5BCEAF5B850413391B2519C3B544198A22861F5B85041F05FB76F9D3B54413DF3D92AF5B85041ED319A2F9E3B5441D8A50603F5B85041228A7B589F3B54415BCD67FFF4B85041B17006FF9F3B5441AE0B9E73F5B85041A8BC56FDA03B544185A0383CF6B850415BBC52DAA13B544140A05660F7B85041A65907BBA23B54414AFB02F0FAB850417FA36E62A53B54412E9DA0ED03B9504110A6514CAC3B5441BE65BA2E0BB95041858F38EEB13B5441C47BC2B211B95041C9E46EAFB63B5441139AB1B413B9504100482333B83B5441E3D3ADA815B95041C7676E60B93B5441B5BB132D16B95041B1A1F9A2B93B544120ACAD2617B95041AEA2B9FDB93B5441BD3FA80F19B95041BB3F7E94B93B5441DC4E08CE1BB95041F3CB3FDBB43B5441B196522C1EB9504185A58D94AE3B544116E5CAC01FB95041F143CAE4AA3B54410000003023B95041000000D0A33B5441F0A9AEAE1BB950410CA35B2C9E3B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574797 - 3560307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000000000070F4B8504185EB5188713B5441CDCCCC1CF1B850410AD7A3B0723B5441295C8F92EFB850410AD7A360733B5441C3F5283CEDB8504114AE4791743B5441AE47E18AF8B850417B14AE777F3B54410AD7A30004B950419A999939893B54415C8FC2B50DB95041EC51B8BE913B5441EC51B87E1BB9504185EB51089E3B54410000003023B95041000000D0A33B5441AE47E15A25B95041F6285C5F9F3B5441EC51B85E27B950417B14AE479A3B5441E17A142E1EB95041713D0A97913B54417B14AE071BB950410AD7A3708E3B544148E17AE411B95041AE47E13A863B5441333333930CB9504152B81EB5803B54413333337305B950419A999969773B5441A4703D8A03B95041CDCCCCFC743B5441713D0AF7FDB85041B81E859B6D3B54415C8FC265FCB85041295C8F626E3B544152B81E25F9B850413D0AD7E36F3B544100000070F4B8504185EB5188713B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F0A9AEAE1BB950410CA35B2C9E3B5441EC51B87E1BB9504185EB51089E3B54417D909A5D1BB95041F21FCDEA9D3B5441A8794C261BB95041BB7C15BE9D3B54412CF7FE5316B950418C70496D993B54418E80FD0D0CB950416808CA4A903B54418F05719705B95041A063A39E8A3B5441C8C5D49B02B95041527ACC09883B5441B75A997E01B95041F3D6F016873B5441458A37AE00B95041A63837D6883B54418C64E57802B9504182BFADA2893B5441A4703DBA00B950411F85EBA18D3B544185EB512801B95041C3F528DC8D3B5441716F7562FFB85041DD2A5D3F913B544121B7569DFEB85041FAAF48B1923B5441E4AC7F59FDB85041B1CECD1C953B5441BD50F036FBB850410C5E9012943B54419AC9692BFAB85041103E750D943B5441679636F8F9B85041BE855628943B54411A02FCEBF9B850412122546C943B54419AC969ABF9B850416CCD37A3943B5441F6582C81F9B85041FB8F2DAC943B5441418C65B1F8B85041E0D23544963B5441878C478DF7B850417348EAA2983B5441AEFFD6FCF5B8504155BA021F9C3B54413AC5BCEAF5B850413391B2519C3B544198A22861F5B85041F05FB76F9D3B54413DF3D92AF5B85041ED319A2F9E3B5441D8A50603F5B85041228A7B589F3B54415BCD67FFF4B85041B17006FF9F3B5441AE0B9E73F5B85041A8BC56FDA03B544185A0383CF6B850415BBC52DAA13B544140A05660F7B85041A65907BBA23B54414AFB02F0FAB850417FA36E62A53B54412E9DA0ED03B9504110A6514CAC3B5441BE65BA2E0BB95041858F38EEB13B5441C47BC2B211B95041C9E46EAFB63B5441139AB1B413B9504100482333B83B5441E3D3ADA815B95041C7676E60B93B5441B5BB132D16B95041B1A1F9A2B93B544120ACAD2617B95041AEA2B9FDB93B5441BD3FA80F19B95041BB3F7E94B93B5441DC4E08CE1BB95041F3CB3FDBB43B5441B196522C1EB9504185A58D94AE3B544116E5CAC01FB95041F143CAE4AA3B54410000003023B95041000000D0A33B5441F0A9AEAE1BB950410CA35B2C9E3B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629719 - 2951025
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC4C05FE50418FC2F5F82D1555417B14AEA703FE50411F85EB3126155541295C8F12FFFD5041E17A14EE2A1555419A9999A9F8FD5041A4703DDA30155541295C8F52F6FD5041F6285C5F2E155541F6285C6FF3FD50415C8FC20531155541F6285C0FF1FD5041713D0AB73315554148E17AF4EEFD50417B14AE9735155541E17A142EECFD504185EB51C837155541A4703DFAE9FD5041E17A14FE38155541EC51B86EE8FD50413333339339155541AE47E12AE7FD50415C8FC2A539155541CDCCCC0CE6FD5041A4703D2A401555410AD7A3C0E6FD5041713D0AB74615554133333343EAFD5041B81E85CB4B15554152B81ED5EFFD50415C8FC2A54D15554152B81E55F7FD5041EC51B83E4F155541713D0AB7FBFD504114AE47F150155541AE47E14A02FE504152B81EA5531555416666663607FE5041713D0AE7551555410AD7A3F00BFE5041AE47E14A55155541F6285CAF0EFE504152B81E6554155541C3F528CC0DFE50413333335351155541713D0A170CFE50411F85EBD14A155541C3F5287C0BFE5041B81E856B47155541666666C608FE504185EB51783D15554185EB517808FE504185EB51C83C155541AE47E1DA06FE5041C3F528BC34155541CDCCCC4C05FE50418FC2F5F82D155541
+</a>
+
+<b>
+01060000000100000001030000000100000025000000FB0A4AE10DFE5041440E4A9C51155541345D39600EFE5041FE67605353155541D431B2C80EFE5041921F97D45315554127C919610FFE5041FEA9C332541555410454DB0410FE5041EB00DA5F54155541C278449D10FE5041CD386758541555413BB8D24212FE504170C4CAB253155541F7D7991513FE504172FB583A53155541F5A00B8E13FE50411587BC9452155541D567FD7E13FE50415967F5C1511555416584848613FE50414C9DC3055115554194BE52D913FE5041DEF0D894501555413FA6CBE014FE5041FF60752B501555417BAACBEF15FE50411099C3F64F155541D279BDFE17FE504193EB18424F1555419C63B68D19FE5041E6CC11B34E155541F56936241BFE5041073DAE494E1555412036E8671CFE5041691F67FE4D1555410B907D8D1DFE50411AAC8A9C4D15554104F78B521EFE5041401EF25F4D15554148E17A241DFE50419A99992949155541A1C792D81CFE50414DCC20CA461555419778D8E91AFE50416B66198A4615554164F1996F19FE50416CC7984246155541F6B2CB0D18FE504110E35F064615554112C752F715FE5041B0A7D16F45155541A9F6A0A413FE5041B4A551E8441555415A83C44213FE5041956C43D94415554172974B2C11FE50411FC2D8EF441555414D70447F0EFE50410E8A8A2445155541C830B6D90CFE5041AE6EC36045155541BD9D12A50BFE50417DFD668645155541C485480B0BFE50410F5815CD45155541C3F5287C0BFE5041B81E856B47155541713D0A170CFE50411F85EBD14A15554167E89B640DFE504158A3B4C84F155541FB0A4AE10DFE5041440E4A9C51155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629719 - 3535395
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC4C05FE50418FC2F5F82D1555417B14AEA703FE50411F85EB3126155541295C8F12FFFD5041E17A14EE2A1555419A9999A9F8FD5041A4703DDA30155541295C8F52F6FD5041F6285C5F2E155541F6285C6FF3FD50415C8FC20531155541F6285C0FF1FD5041713D0AB73315554148E17AF4EEFD50417B14AE9735155541E17A142EECFD504185EB51C837155541A4703DFAE9FD5041E17A14FE38155541EC51B86EE8FD50413333339339155541AE47E12AE7FD50415C8FC2A539155541CDCCCC0CE6FD5041A4703D2A401555410AD7A3C0E6FD5041713D0AB74615554133333343EAFD5041B81E85CB4B15554152B81ED5EFFD50415C8FC2A54D15554152B81E55F7FD5041EC51B83E4F155541713D0AB7FBFD504114AE47F150155541AE47E14A02FE504152B81EA5531555416666663607FE5041713D0AE7551555410AD7A3F00BFE5041AE47E14A55155541F6285CAF0EFE504152B81E6554155541C3F528CC0DFE50413333335351155541713D0A170CFE50411F85EBD14A155541C3F5287C0BFE5041B81E856B47155541666666C608FE504185EB51783D15554185EB517808FE504185EB51C83C155541AE47E1DA06FE5041C3F528BC34155541CDCCCC4C05FE50418FC2F5F82D155541
+</a>
+
+<b>
+01060000000100000001030000000100000025000000FB0A4AE10DFE5041440E4A9C51155541345D39600EFE5041FE67605353155541D431B2C80EFE5041921F97D45315554127C919610FFE5041FEA9C332541555410454DB0410FE5041EB00DA5F54155541C278449D10FE5041CD386758541555413BB8D24212FE504170C4CAB253155541F7D7991513FE504172FB583A53155541F5A00B8E13FE50411587BC9452155541D567FD7E13FE50415967F5C1511555416584848613FE50414C9DC3055115554194BE52D913FE5041DEF0D894501555413FA6CBE014FE5041FF60752B501555417BAACBEF15FE50411099C3F64F155541D279BDFE17FE504193EB18424F1555419C63B68D19FE5041E6CC11B34E155541F56936241BFE5041073DAE494E1555412036E8671CFE5041691F67FE4D1555410B907D8D1DFE50411AAC8A9C4D15554104F78B521EFE5041401EF25F4D15554148E17A241DFE50419A99992949155541A1C792D81CFE50414DCC20CA461555419778D8E91AFE50416B66198A4615554164F1996F19FE50416CC7984246155541F6B2CB0D18FE504110E35F064615554112C752F715FE5041B0A7D16F45155541A9F6A0A413FE5041B4A551E8441555415A83C44213FE5041956C43D94415554172974B2C11FE50411FC2D8EF441555414D70447F0EFE50410E8A8A2445155541C830B6D90CFE5041AE6EC36045155541BD9D12A50BFE50417DFD668645155541C485480B0BFE50410F5815CD45155541C3F5287C0BFE5041B81E856B47155541713D0A170CFE50411F85EBD14A15554167E89B640DFE504158A3B4C84F155541FB0A4AE10DFE5041440E4A9C51155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581644 - 1096466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000CDCCCCECCD0151410AD7A360674754419A9999E9CC01514185EB51386A475441C3F5280CCF0151419A9999096D47544114AE4741D10151413D0AD7E36E475441666666C6DA01514114AE479157475441F6285CAFDB01514148E17A2455475441C3F528ECDE0151415C8FC2554C47544185EB5138E20151418FC2F52844475441713D0AD7E001514148E17AD441475441D7A3705DDE0151417B14AE274047544114AE47F1DC0151411F85EB313F475441EC51B88ED701514148E17A644D4754415C8FC295D2015141F6285C6F5B475441CDCCCCECCD0151410AD7A36067475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581644 - 3481827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000CDCCCCECCD0151410AD7A360674754419A9999E9CC01514185EB51386A475441C3F5280CCF0151419A9999096D47544114AE4741D10151413D0AD7E36E475441666666C6DA01514114AE479157475441F6285CAFDB01514148E17A2455475441C3F528ECDE0151415C8FC2554C47544185EB5138E20151418FC2F52844475441713D0AD7E001514148E17AD441475441D7A3705DDE0151417B14AE274047544114AE47F1DC0151411F85EB313F475441EC51B88ED701514148E17A644D4754415C8FC295D2015141F6285C6F5B475441CDCCCCECCD0151410AD7A36067475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629824 - 224464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000666666C6C8FC504152B81EC5FC1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541EC51B85EADFC5041A4703D3A2F1C5541333333F3AEFC5041D7A3700D341C55411F85EB51B1FC50411F85EBF1371C55419A999969B1FC5041E17A149E391C554148E17A44B1FC50411F85EB613E1C55415C8FC205B4FC5041295C8F82441C5541D7A3704DB5FC5041AE47E15A481C5541A4703DDAB7FC5041C3F528BC4A1C5541E17A144EBAFC50415C8FC295501C5541F6285CEFBAFC5041CDCCCCAC531C5541EC51B8CEBFFC50410AD7A3404D1C55419A999939C2FC50415C8FC215481C55417B14AE07C4FC50413D0AD763411C5541AE47E1DAC3FC50410AD7A3A0361C554114AE47D1C5FC5041AE47E14A2C1C5541EC51B84EC7FC50418FC2F5D8211C5541AE47E11AC9FC504166666696141C554148E17A84CBFC504152B81E050C1C55417B14AEE7CBFC50415C8FC2D5061C55410AD7A350CCFC5041CDCCCC6C011C554133333363CDFC5041666666C6FB1B5541AE47E1DACCFC504148E17A94F81B55418FC2F578C9FC5041D7A3700DFC1B5541666666C6C8FC504152B81EC5FC1B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003900000033333363CDFC5041666666C6FB1B5541B747E1DACCFC50417FE17A94F81B5541E5C2F578C9FC504181A3700DFC1B55419C6666C6C8FC504127B81EC5FC1B5541345783F3C6FC504163B788A4FE1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541199C9A48ADFC5041B1BD5B172D1C55418E6BEA5FADFC5041E23516982E1C554141068A58ADFC504108BC66A12E1C5541EC51B85EADFC5041A4703D3A2F1C55411580449EAEFC5041B9D6120A331C554146C73CBCAEFC504166340D0F331C5541AB94C1F3AEFC5041A17C5A0E341C5541F354C559AFFC5041F120E7B5341C554185408B4DB1FC50411296BBEA371C5541999B2F51B1FC504115C166EC371C554127C75551B1FC50413795F5F0371C55411F85EB51B1FC50411F85EBF1371C55419A999969B1FC5041E17A149E391C5541BCD5AB64B1FC504129B10C403A1C55415DDA7064B1FC5041C2F59E473A1C55417DCF874EB1FC504166B3A3173D1C554130403D4DB1FC50411C9412423D1C554148E17A44B1FC50411F85EB613E1C5541383712CFB3FC5041C7A9EC08441C554160B56AEDB3FC5041D8DC6A4C441C55415C8FC205B4FC5041295C8F82441C55415D27524AB4FC5041C4B38250451C5541D2CE2351B5FC5041A54D555E481C5541A4703DDAB7FC5041C3F528BC4A1C5541E17A144EBAFC50415C8FC295501C5541E6D5BD86BAFC504111E0ABAB511C554137207EB6BAFC5041B91BE195521C55416CA0C2E5BAFC50411C2FB77D531C55417C65DAEEBAFC50412F5750AA531C5541BB7AFA2EBBFC5041C49BF158531C554143B59A90BDFC5041F77F6335501C5541EC51B8CEBFFC50410AD7A3404D1C55419A999939C2FC50415C8FC215481C55417014AE07C4FC5041660AD763411C55417C570402C4FC504113239007401C5541AE47E1DAC3FC50410AD7A3A0361C554114AE47D1C5FC5041AE47E14A2C1C5541704F8609C6FC50412CEA99C02A1C5541D651B84EC7FC504164C2F5D8211C55418F477CADC7FC50410C2AE21D1F1C5541AE47E11AC9FC504166666696141C55417B5253EACAFC5041057891280E1C554112E17A84CBFC50417DB81E050C1C55414514AEE7CBFC5041478FC2D5061C554166860D2DCCFC50412F846042031C55410AD7A350CCFC5041CDCCCC6C011C554133333363CDFC5041666666C6FB1B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629824 - 375900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000666666C6C8FC504152B81EC5FC1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541EC51B85EADFC5041A4703D3A2F1C5541333333F3AEFC5041D7A3700D341C55411F85EB51B1FC50411F85EBF1371C55419A999969B1FC5041E17A149E391C554148E17A44B1FC50411F85EB613E1C55415C8FC205B4FC5041295C8F82441C5541D7A3704DB5FC5041AE47E15A481C5541A4703DDAB7FC5041C3F528BC4A1C5541E17A144EBAFC50415C8FC295501C5541F6285CEFBAFC5041CDCCCCAC531C5541EC51B8CEBFFC50410AD7A3404D1C55419A999939C2FC50415C8FC215481C55417B14AE07C4FC50413D0AD763411C5541AE47E1DAC3FC50410AD7A3A0361C554114AE47D1C5FC5041AE47E14A2C1C5541EC51B84EC7FC50418FC2F5D8211C5541AE47E11AC9FC504166666696141C554148E17A84CBFC504152B81E050C1C55417B14AEE7CBFC50415C8FC2D5061C55410AD7A350CCFC5041CDCCCC6C011C554133333363CDFC5041666666C6FB1B5541AE47E1DACCFC504148E17A94F81B55418FC2F578C9FC5041D7A3700DFC1B5541666666C6C8FC504152B81EC5FC1B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003900000033333363CDFC5041666666C6FB1B5541B747E1DACCFC50417FE17A94F81B5541E5C2F578C9FC504181A3700DFC1B55419C6666C6C8FC504127B81EC5FC1B5541345783F3C6FC504163B788A4FE1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541199C9A48ADFC5041B1BD5B172D1C55418E6BEA5FADFC5041E23516982E1C554141068A58ADFC504108BC66A12E1C5541EC51B85EADFC5041A4703D3A2F1C55411580449EAEFC5041B9D6120A331C554146C73CBCAEFC504166340D0F331C5541AB94C1F3AEFC5041A17C5A0E341C5541F354C559AFFC5041F120E7B5341C554185408B4DB1FC50411296BBEA371C5541999B2F51B1FC504115C166EC371C554127C75551B1FC50413795F5F0371C55411F85EB51B1FC50411F85EBF1371C55419A999969B1FC5041E17A149E391C5541BCD5AB64B1FC504129B10C403A1C55415DDA7064B1FC5041C2F59E473A1C55417DCF874EB1FC504166B3A3173D1C554130403D4DB1FC50411C9412423D1C554148E17A44B1FC50411F85EB613E1C5541383712CFB3FC5041C7A9EC08441C554160B56AEDB3FC5041D8DC6A4C441C55415C8FC205B4FC5041295C8F82441C55415D27524AB4FC5041C4B38250451C5541D2CE2351B5FC5041A54D555E481C5541A4703DDAB7FC5041C3F528BC4A1C5541E17A144EBAFC50415C8FC295501C5541E6D5BD86BAFC504111E0ABAB511C554137207EB6BAFC5041B91BE195521C55416CA0C2E5BAFC50411C2FB77D531C55417C65DAEEBAFC50412F5750AA531C5541BB7AFA2EBBFC5041C49BF158531C554143B59A90BDFC5041F77F6335501C5541EC51B8CEBFFC50410AD7A3404D1C55419A999939C2FC50415C8FC215481C55417014AE07C4FC5041660AD763411C55417C570402C4FC504113239007401C5541AE47E1DAC3FC50410AD7A3A0361C554114AE47D1C5FC5041AE47E14A2C1C5541704F8609C6FC50412CEA99C02A1C5541D651B84EC7FC504164C2F5D8211C55418F477CADC7FC50410C2AE21D1F1C5541AE47E11AC9FC504166666696141C55417B5253EACAFC5041057891280E1C554112E17A84CBFC50417DB81E050C1C55414514AEE7CBFC5041478FC2D5061C554166860D2DCCFC50412F846042031C55410AD7A350CCFC5041CDCCCC6C011C554133333363CDFC5041666666C6FB1B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>576045 - 3859241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000000B000000713D0A67F82951411F85EB313F77544148E17A74F529514148E17A643E775441EC51B81EF4295141A4703D5A42775441F6285C5F002A5141666666C647775441AE47E18A032A51419A9999C94877544166666656152A51417B14AE174D7754413D0AD7131C2A514185EB51F84D775441EC51B8BE1C2A51410AD7A31049775441D7A3700D0B2A5141CDCCCC0C457754411F85EBD1002A5141A4703DCA41775441713D0A67F82951411F85EB313F77544101030000000100000037000000C3F5287CD1295141295C8F623A775441E17A149ED4295141F6285C8F3A7754418FC2F578E0295141E17A14DE3A7754418FC2F5A8E429514152B81E553B77544185EB5168F32951419A9999A93D775441B81E856BEC295141295C8F123B775441713D0A27E52951410AD7A3203A775441F6285C6FE02951410AD7A3B039775441333333D3D72951419A99995939775441B81E85ABD2295141EC51B80E39775441EC51B88ECF295141EC51B89E38775441A4703D8ACC295141295C8F22387754419A999929C82951413D0AD703377754415C8FC2D5C32951415C8FC275357754418FC2F5D8BE295141D7A3709D3277544148E17A04BB295141CDCCCCAC3077544185EB51B8AF295141333333A32B7754413D0AD703AB295141C3F528CC29775441A4703DFAA5295141713D0A9727775441A4703D9A9D295141D7A370AD24775441CDCCCC5C9429514148E17A84217754413D0AD77396295141E17A14FE1C775441B81E850B982951417B14AE371A7754413D0AD79397295141A4703DDA17775441D7A3706D95295141C3F5281C1C77544114AE47C192295141F6285CFF22775441713D0A67922951410000008024775441AE47E13A92295141CDCCCC3C25775441E17A140E9829514152B81EA52677544185EB51789B29514148E17AB427775441713D0A879A295141E17A149E2B775441295C8F12992951419A999919327754418FC2F5A89729514152B81EF53A775441D7A3707D97295141713D0A673D7754416666663697295141C3F5285C41775441A4703DFA96295141713D0AE7447754410AD7A3A096295141666666B649775441A4703D0A992951419A999909497754410AD7A3209B2951413D0AD773487754413D0AD7739C2951418FC2F5683F7754417B14AE179D2951413D0AD7233C775441D7A370DD9D295141A4703D8A3977544133333333A1295141666666563077544148E17A74A529514152B81EC531775441C3F5284CA72951415C8FC2D52C7754411F85EBD1A929514114AE47112E77544114AE47F1A729514114AE47E13277544133333343B029514114AE47D135775441333333C3B72951413D0AD7133877544185EB5168B9295141E17A147E38775441C3F5289CC2295141B81E85BB3A77544166666676C329514148E17AD4377754410AD7A360C62951417B14AEA7387754419A999969CE29514114AE47013A775441C3F5287CD1295141295C8F623A7754410103000000010000001700000014AE4771102A5141CDCCCC1C2D77544148E17A340C2A51413D0AD7032D775441CDCCCCEC072A5141AE47E18A2C77544148E17A34032A5141000000D02B7754417B14AE87FE295141666666B62A775441EC51B8BEFC295141295C8F322A775441A4703DCAFA29514152B81E553177544185EB5188F9295141AE47E1EA36775441C3F5288CF82951418FC2F5883E775441D7A370ED002A514148E17A3441775441AE47E13A0B2A51413D0AD78344775441CDCCCCDC1C2A5141C3F5287C4877544114AE47111E2A5141B81E85DB42775441E17A149E1F2A514185EB51083B775441F6285C9F2D2A514152B81EE53E775441C3F5287C302A5141000000803777544114AE47F1312A5141C3F528BC33775441E17A14AE282A514114AE47B12F775441295C8FF2242A51415C8FC2452E775441CDCCCC3C212A5141000000102D7754419A9999B91D2A514114AE47912C775441000000B01A2A5141713D0A772C77544114AE4771102A5141CDCCCC1C2D775441
+</a>
+
+<b>
+0106000000010000000103000000010000004300000048E17A74F529514148E17A643E775441EC51B81EF4295141A4703D5A42775441F6285C5F002A5141666666C647775441AE47E18A032A51419A9999C94877544166666656152A51417B14AE174D7754413D0AD7131C2A514185EB51F84D77544130F34CC41C2A5141B0B7F5BB48775441E6B604120B2A51413F167ADA44775441808E46CB002A51411D21BEB741775441F27F1791F82951413FBEA4CC3E7754417B97994DF72951416C387D343E775441B4752EADF5295141BBD611C63D775441D833654FF3295141FFBDD4093D775441B81E856BEC295141295C8F123B775441713D0A27E52951410AD7A3203A775441F6285C6FE02951410AD7A3B039775441333333D3D72951419A99995939775441B81E85ABD2295141EC51B80E39775441EC51B88ECF295141EC51B89E38775441A4703D8ACC295141295C8F22387754419A999929C82951413D0AD703377754415C8FC2D5C32951415C8FC275357754418FC2F5D8BE295141D7A3709D3277544148E17A04BB295141CDCCCCAC3077544185EB51B8AF295141333333A32B7754413D0AD703AB295141C3F528CC29775441A4703DFAA5295141713D0A9727775441A4703D9A9D295141D7A370AD24775441CDCCCC5C9429514148E17A842177544146221A7193295141BF583C3A2177544114AE47C192295141F6285CFF22775441713D0A67922951410000008024775441AE47E13A92295141CDCCCC3C25775441E17A140E9829514152B81EA52677544185EB51789B29514148E17AB427775441713D0A879A295141E17A149E2B775441295C8F12992951419A999919327754418FC2F5A89729514152B81EF53A775441D7A3707D97295141713D0A673D7754416666663697295141C3F5285C41775441A4703DFA96295141713D0AE744775441B50C40AF96295141D2142492497754418D9C81FE9829514162B94FFD487754410AD7A3209B2951413D0AD773487754413D0AD7739C2951418FC2F5683F7754417B14AE179D2951413D0AD7233C775441D7A370DD9D295141A4703D8A3977544133333333A1295141666666563077544148E17A74A529514152B81EC531775441C3F5284CA72951415C8FC2D52C7754411F85EBD1A929514114AE47112E77544114AE47F1A729514114AE47E13277544133333343B029514114AE47D135775441333333C3B72951413D0AD7133877544185EB5168B9295141E17A147E38775441C3F5289CC2295141B81E85BB3A77544166666676C329514148E17AD43777544153BF315EC62951414CE2FCA638775441B8FF6C62CE295141841A13003A7754413CB9AB75D1295141E7E6C1613A775441F317E195D429514137E0E68E3A775441342FBF77E0295141956C0CDE3A77544195D516AAE429514145644C553B775441CD833CE7F229514149A934953D775441E2FCA835F3295141DF9998A13D7754415D361767F329514177BF4BA83D77544148E17A74F529514148E17A643E775441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>576566 - 3068718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000170000003D0AD7B32B3C51410AD7A310AB6B5441295C8F32283C51410AD7A380AC6B54411F85EB71263C5141AE47E12AAD6B5441EC51B8CE263C5141A4703D2AAE6B5441E17A145E273C51417B14AE17B06B544114AE4761283C514185EB5108B06B5441295C8FC2293C5141A4703DBAAF6B54411F85EBD1293C51415C8FC2E5AE6B5441A4703D2A2A3C51418FC2F568AE6B544114AE47B12A3C514100000020AE6B5441713D0A672B3C514166666606AE6B5441E17A14FE2B3C5141AE47E12AAE6B5441B81E855B2C3C5141D7A3708DAE6B5441EC51B8AE2C3C5141AE47E1EAAE6B54419A9999692D3C5141D7A3707DAE6B5441713D0AC72D3C51417B14AEC7AD6B54418FC2F5482E3C5141D7A370FDAC6B5441C3F5286C2E3C51413D0AD713AC6B54419A9999292E3C5141AE47E10AAB6B54411F85EBB12D3C51413D0AD783AA6B5441CDCCCC2C2D3C514166666646AB6B5441CDCCCC4C2C3C514114AE4761AB6B54413D0AD7B32B3C51410AD7A310AB6B544101030000000100000074000000AE47E10A0B3C514185EB5188AC6B544166666646093C51411F85EB01AF6B5441713D0A67083C514114AE47E1AF6B5441D7A3701D063C5141295C8F12B26B5441EC51B8FE043C51418FC2F5D8B46B5441D7A3701D053C5141666666A6B76B5441333333A3043C514100000080B96B5441C3F5289C023C51410AD7A310BC6B54410AD7A3F0FC3B514100000060C16B5441B81E85CBF63B51418FC2F538C76B544152B81EB5F43B5141F6285C4FC96B54419A9999B9F13B51410AD7A3E0CB6B544166666656EF3B5141CDCCCCCCCE6B5441B81E85FBEA3B51410AD7A370D26B54418FC2F588E83B5141333333D3D46B5441000000B0E63B5141EC51B88ED66B544152B81E15E63B514185EB51A8DA6B54411F85EBA1EA3B5141E17A146ED76B5441333333A3EB3B5141A4703D6AD66B544148E17AB4EC3B5141295C8F82D56B5441A4703DAAED3B514185EB5188D56B5441666666F6EE3B514166666666D46B54418FC2F5B8EE3B51410AD7A320D46B54418FC2F5A8F03B5141B81E850BD36B54410AD7A390F13B51410AD7A350D16B5441F6285CEFF43B5141D7A3708DCF6B5441295C8F12F63B5141A4703D9ACE6B5441B81E859BF73B51413D0AD763CD6B5441EC51B84EF83B5141AE47E1BACC6B5441F6285CDFF93B5141E17A146ECB6B544152B81EB5FC3B5141D7A3704DCA6B54419A999989013C51419A999969C76B544166666626053C5141AE47E19AC56B54417B14AEC7053C5141713D0AA7C26B5441CDCCCC0C073C51418FC2F588C16B5441EC51B82E083C51417B14AEC7BF6B5441A4703DAA093C514133333303BE6B5441713D0A170D3C51415C8FC215BE6B5441D7A3701D113C51417B14AEE7BB6B5441F6285C9F123C51415C8FC2E5B66B54410AD7A310163C5141EC51B8CEB46B544100000000193C514152B81E45B36B544114AE47811B3C5141F6285C5FB26B5441A4703D3A1D3C514100000010B16B5441666666361E3C5141B81E853BB06B5441295C8F021F3C5141713D0AB7AF6B544185EB5118203C514148E17AE4AE6B544148E17A34213C5141C3F5286CAE6B54419A999939223C5141666666A6AD6B5441C3F5281C263C51410AD7A350AC6B54413D0AD7032C3C5141C3F5280CAA6B5441D7A3708D2C3C51413D0AD763A96B544185EB51982D3C5141F6285C4FA86B5441666666762C3C514114AE4761A56B5441EC51B89E293C514148E17A049E6B5441C3F5282C253C514166666696956B54415C8FC215213C5141295C8F428F6B5441AE47E14A1B3C5141EC51B8BE886B5441AE47E10A193C5141B81E85BB876B5441713D0A77163C51411F85EBB18C6B544133333373133C514185EB5118916B5441B81E854B0F3C5141EC51B8CE966B5441000000700C3C5141E17A143E9A6B5441B81E855B063C51411F85EBB19F6B5441C3F5289C033C5141CDCCCC1CA26B5441F6285C7FFD3B51410AD7A310A96B5441F6285CBFF93B51418FC2F558AF6B54413D0AD773F83B51415C8FC2A5B16B544114AE4741F73B5141000000C0B46B54413D0AD713F53B51417B14AE57B86B54419A999979F13B5141F6285CEFBC6B54419A999909F03B51410AD7A360BD6B5441CDCCCCDCEE3B51411F85EB61BD6B544100000030ED3B5141666666C6BC6B54413D0AD743EB3B5141A4703DFABB6B54411F85EB01E63B5141F6285CEFC06B544148E17A24E23B51411F85EB01C46B5441B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441A4703D0ADF3B5141AE47E13ACC6B544133333323E13B5141B81E85DBCF6B5441C3F528FCE33B5141D7A370ADD36B544185EB5178E73B5141713D0AF7D36B5441C3F5281CEE3B51415C8FC255CE6B544100000080F23B514152B81E25CA6B544185EB5108FB3B5141E17A148EC16B54419A999979013C514166666696BB6B5441D7A3707D023C51415C8FC2B5B76B5441EC51B8AE033C5141A4703DBAB46B544148E17AD4053C5141B81E85FBB16B5441A4703DFA073C5141295C8F12B06B5441EC51B8EE083C5141E17A141EAF6B5441AE47E19A0A3C5141A4703DDAAC6B54417B14AE770D3C514166666636A96B54413D0AD7130F3C51410AD7A360A86B544100000060133C5141A4703D3AA66B54419A9999D9173C514148E17AC4A26B5441C3F5283C1A3C514114AE4771A06B54419A9999791A3C5141F6285C3F9F6B5441295C8F12173C51411F85EBC19D6B54410AD7A340173C5141A4703D0A9D6B544152B81ED51A3C5141713D0AA79E6B5441C3F528DC1C3C5141A4703D0A9D6B544185EB51D81F3C5141F6285C4F9B6B544100000020233C514152B81E35986B5441295C8F42243C5141E17A14CE986B544148E17A74213C5141E17A146E9B6B54413D0AD733203C51415C8FC2159C6B544152B81E751D3C5141333333A39D6B5441A4703DBA1B3C51411F85EB119F6B54411F85EB111B3C514100000080A06B544114AE4781183C5141EC51B83EA36B54413D0AD763143C5141333333D3A66B54417B14AE17103C51418FC2F5F8A86B5441666666660D3C5141D7A3707DA96B5441AE47E10A0B3C514185EB5188AC6B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>576566 - 3316765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000170000003D0AD7B32B3C51410AD7A310AB6B5441295C8F32283C51410AD7A380AC6B54411F85EB71263C5141AE47E12AAD6B5441EC51B8CE263C5141A4703D2AAE6B5441E17A145E273C51417B14AE17B06B544114AE4761283C514185EB5108B06B5441295C8FC2293C5141A4703DBAAF6B54411F85EBD1293C51415C8FC2E5AE6B5441A4703D2A2A3C51418FC2F568AE6B544114AE47B12A3C514100000020AE6B5441713D0A672B3C514166666606AE6B5441E17A14FE2B3C5141AE47E12AAE6B5441B81E855B2C3C5141D7A3708DAE6B5441EC51B8AE2C3C5141AE47E1EAAE6B54419A9999692D3C5141D7A3707DAE6B5441713D0AC72D3C51417B14AEC7AD6B54418FC2F5482E3C5141D7A370FDAC6B5441C3F5286C2E3C51413D0AD713AC6B54419A9999292E3C5141AE47E10AAB6B54411F85EBB12D3C51413D0AD783AA6B5441CDCCCC2C2D3C514166666646AB6B5441CDCCCC4C2C3C514114AE4761AB6B54413D0AD7B32B3C51410AD7A310AB6B544101030000000100000074000000AE47E10A0B3C514185EB5188AC6B544166666646093C51411F85EB01AF6B5441713D0A67083C514114AE47E1AF6B5441D7A3701D063C5141295C8F12B26B5441EC51B8FE043C51418FC2F5D8B46B5441D7A3701D053C5141666666A6B76B5441333333A3043C514100000080B96B5441C3F5289C023C51410AD7A310BC6B54410AD7A3F0FC3B514100000060C16B5441B81E85CBF63B51418FC2F538C76B544152B81EB5F43B5141F6285C4FC96B54419A9999B9F13B51410AD7A3E0CB6B544166666656EF3B5141CDCCCCCCCE6B5441B81E85FBEA3B51410AD7A370D26B54418FC2F588E83B5141333333D3D46B5441000000B0E63B5141EC51B88ED66B544152B81E15E63B514185EB51A8DA6B54411F85EBA1EA3B5141E17A146ED76B5441333333A3EB3B5141A4703D6AD66B544148E17AB4EC3B5141295C8F82D56B5441A4703DAAED3B514185EB5188D56B5441666666F6EE3B514166666666D46B54418FC2F5B8EE3B51410AD7A320D46B54418FC2F5A8F03B5141B81E850BD36B54410AD7A390F13B51410AD7A350D16B5441F6285CEFF43B5141D7A3708DCF6B5441295C8F12F63B5141A4703D9ACE6B5441B81E859BF73B51413D0AD763CD6B5441EC51B84EF83B5141AE47E1BACC6B5441F6285CDFF93B5141E17A146ECB6B544152B81EB5FC3B5141D7A3704DCA6B54419A999989013C51419A999969C76B544166666626053C5141AE47E19AC56B54417B14AEC7053C5141713D0AA7C26B5441CDCCCC0C073C51418FC2F588C16B5441EC51B82E083C51417B14AEC7BF6B5441A4703DAA093C514133333303BE6B5441713D0A170D3C51415C8FC215BE6B5441D7A3701D113C51417B14AEE7BB6B5441F6285C9F123C51415C8FC2E5B66B54410AD7A310163C5141EC51B8CEB46B544100000000193C514152B81E45B36B544114AE47811B3C5141F6285C5FB26B5441A4703D3A1D3C514100000010B16B5441666666361E3C5141B81E853BB06B5441295C8F021F3C5141713D0AB7AF6B544185EB5118203C514148E17AE4AE6B544148E17A34213C5141C3F5286CAE6B54419A999939223C5141666666A6AD6B5441C3F5281C263C51410AD7A350AC6B54413D0AD7032C3C5141C3F5280CAA6B5441D7A3708D2C3C51413D0AD763A96B544185EB51982D3C5141F6285C4FA86B5441666666762C3C514114AE4761A56B5441EC51B89E293C514148E17A049E6B5441C3F5282C253C514166666696956B54415C8FC215213C5141295C8F428F6B5441AE47E14A1B3C5141EC51B8BE886B5441AE47E10A193C5141B81E85BB876B5441713D0A77163C51411F85EBB18C6B544133333373133C514185EB5118916B5441B81E854B0F3C5141EC51B8CE966B5441000000700C3C5141E17A143E9A6B5441B81E855B063C51411F85EBB19F6B5441C3F5289C033C5141CDCCCC1CA26B5441F6285C7FFD3B51410AD7A310A96B5441F6285CBFF93B51418FC2F558AF6B54413D0AD773F83B51415C8FC2A5B16B544114AE4741F73B5141000000C0B46B54413D0AD713F53B51417B14AE57B86B54419A999979F13B5141F6285CEFBC6B54419A999909F03B51410AD7A360BD6B5441CDCCCCDCEE3B51411F85EB61BD6B544100000030ED3B5141666666C6BC6B54413D0AD743EB3B5141A4703DFABB6B54411F85EB01E63B5141F6285CEFC06B544148E17A24E23B51411F85EB01C46B5441B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441A4703D0ADF3B5141AE47E13ACC6B544133333323E13B5141B81E85DBCF6B5441C3F528FCE33B5141D7A370ADD36B544185EB5178E73B5141713D0AF7D36B5441C3F5281CEE3B51415C8FC255CE6B544100000080F23B514152B81E25CA6B544185EB5108FB3B5141E17A148EC16B54419A999979013C514166666696BB6B5441D7A3707D023C51415C8FC2B5B76B5441EC51B8AE033C5141A4703DBAB46B544148E17AD4053C5141B81E85FBB16B5441A4703DFA073C5141295C8F12B06B5441EC51B8EE083C5141E17A141EAF6B5441AE47E19A0A3C5141A4703DDAAC6B54417B14AE770D3C514166666636A96B54413D0AD7130F3C51410AD7A360A86B544100000060133C5141A4703D3AA66B54419A9999D9173C514148E17AC4A26B5441C3F5283C1A3C514114AE4771A06B54419A9999791A3C5141F6285C3F9F6B5441295C8F12173C51411F85EBC19D6B54410AD7A340173C5141A4703D0A9D6B544152B81ED51A3C5141713D0AA79E6B5441C3F528DC1C3C5141A4703D0A9D6B544185EB51D81F3C5141F6285C4F9B6B544100000020233C514152B81E35986B5441295C8F42243C5141E17A14CE986B544148E17A74213C5141E17A146E9B6B54413D0AD733203C51415C8FC2159C6B544152B81E751D3C5141333333A39D6B5441A4703DBA1B3C51411F85EB119F6B54411F85EB111B3C514100000080A06B544114AE4781183C5141EC51B83EA36B54413D0AD763143C5141333333D3A66B54417B14AE17103C51418FC2F5F8A86B5441666666660D3C5141D7A3707DA96B5441AE47E10A0B3C514185EB5188AC6B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577113 - 3085621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000009A9999B92C2B5141C3F528BC0A6B544148E17AA41E2B51411F85EBE10E6B54413D0AD7D31F2B514185EB5168196B544148E17A34212B5141B81E852B1B6B5441F6285CBF232B5141A4703DEA1F6B54411F85EB11322B5141333333B31B6B54415C8FC2753E2B5141D7A3700D186B544185EB51284E2B5141E17A146E136B5441EC51B8EE492B5141D7A3704D126B5441F6285CFF442B514185EB51C8106B544152B81E15412B51415C8FC2950D6B54419A9999D93D2B5141A4703DBA096B544114AE47013D2B51418FC2F5C8076B54418FC2F5A83C2B5141B81E850B066B54419A9999B92C2B5141C3F528BC0A6B5441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000CCAFB82142B51413FC8F510116B5441A857CA821A2B514175A2E770146B5441010CFE9B1D2B5141F4E5F7BC166B5441A7DEEA1A1F2B51419BB8E43B186B5441CECBDCBF1F2B514185F0E1B6186B544107D003AD1E2B514123C7B92D0F6B54418749C7941E2B5141A50987980E6B5441CE6DC74D1E2B5141F375E8AB0E6B54410CCAFB82142B51413FC8F510116B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577113 - 3195543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000009A9999B92C2B5141C3F528BC0A6B544148E17AA41E2B51411F85EBE10E6B54413D0AD7D31F2B514185EB5168196B544148E17A34212B5141B81E852B1B6B5441F6285CBF232B5141A4703DEA1F6B54411F85EB11322B5141333333B31B6B54415C8FC2753E2B5141D7A3700D186B544185EB51284E2B5141E17A146E136B5441EC51B8EE492B5141D7A3704D126B5441F6285CFF442B514185EB51C8106B544152B81E15412B51415C8FC2950D6B54419A9999D93D2B5141A4703DBA096B544114AE47013D2B51418FC2F5C8076B54418FC2F5A83C2B5141B81E850B066B54419A9999B92C2B5141C3F528BC0A6B5441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000CCAFB82142B51413FC8F510116B5441A857CA821A2B514175A2E770146B5441010CFE9B1D2B5141F4E5F7BC166B5441A7DEEA1A1F2B51419BB8E43B186B5441CECBDCBF1F2B514185F0E1B6186B544107D003AD1E2B514123C7B92D0F6B54418749C7941E2B5141A50987980E6B5441CE6DC74D1E2B5141F375E8AB0E6B54410CCAFB82142B51413FC8F510116B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577639 - 5173685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000290000000000004042315141A4703DFAF7755441333333133E31514114AE4781F6755441CDCCCCEC323151411F85EB91F2755441E17A14CE2E315141B81E850BFC755441F6285C7F27315141A4703D3AF97554410AD7A3B0213151411F85EB41067654419A9999C922315141A4703DCA067654418FC2F5C821315141B81E851B097654415C8FC245213151417B14AE870A765441295C8FD21D3151417B14AEB7127654415C8FC2F51B315141713D0A7711765441295C8F8215315141C3F528AC0D7654418FC2F5C80E315141EC51B87E09765441000000700A315141E17A14BE06765441D7A370DDFB305141B81E852BFD755441A4703DAAF830514166666626FB755441F6285C3FF730514100000050FA755441A4703DEAED305141B81E85CBF47554417B14AEC7EB30514185EB5128FD755441666666C6E9305141000000000C76544152B81E95E83051417B14AEB7167654418FC2F538E73051411F85EBE1207654417B14AE17E6305141000000F02D76544148E17A34E6305141713D0AB7347654415C8FC295E93051415C8FC20534765441B81E85FBF53051417B14AEB731765441C3F528EC143151415C8FC2452C765441EC51B8DE19315141713D0A672B765441000000601F3151413D0AD7B32A7654419A9999E92E3151413333331329765441EC51B89E443151419A9999C926765441666666D6443151416666662626765441E17A14CE47315141A4703D7A1D76544100000010463151419A9999891B76544185EB51084431514185EB51F819765441F6285CCF4031514114AE473118765441CDCCCC3C3A3151417B14AE571576544185EB51B841315141333333E307765441C3F5287C4731514152B81E85FD755441713D0AC740315141CDCCCC6CFB7554410000004042315141A4703DFAF7755441
+</a>
+
+<b>
+01060000000100000001030000000100000041000000071697D9E4305141C4BA4A52EB755441D2A39068E13051414E396E88E7755441A7C611EADF3051413B61B618EA7554416A6CEF53DE30514145B4E18FEC7554417B14AEE7DC3051413D0AD703EF7554413D0AD743DC3051417B14AE77EF755441E93BAA70DC305141171F4FB8EB75544119CF7BA8DC305141DB23CAAAE97554414CE6B5B4DC3051412C430113E975544199B9A1A8DC3051419E3D3E9EE8755441E0C35F46DC30514138C02B57E4755441535CF239DC30514117C50272E27554419A2B5C31DC305141FEADECE4E075544102576428DC305141DD453346DF7554413314BD1FDC3051410CD0F4DDDE755441368F83C7DB3051417A04D059DD755441B9C23D3ADB305141BF7D7EFFDA7554411480580DDB305141B75365E5DA755441CA5ADA1ED93051410527EE49DA755441A4EE5A4DD8305141D5D2D601DA75544178610A5DD630514106C8A5F4D8755441C21B6BBFD43051419F74E26DDC7554417FFCC25AD430514171994D47DD755441B3E717B7D33051410B7197D1DE755441260B8EE0D230514114F98321E375544111BD54D6CF3051415AAF3110F17554412B845752CD305141664A4ECDFA7554413F9D1D77CB3051411EA8938000765441688BF58DC9305141652CE4530576544187AE1D65C7305141A270099F0A7654415F1D7059C730514162F4FBF30A7654414BD37B99C63051419E2C2DDE0F765441F29DD406C63051410316ED5415765441C0E0629DC5305141C1998CAC1B7654411E8C9849C5305141A15FC234217654414584FD3BC530514154514051247654412079692DC5305141A648BE952676544160BA3F63C5305141B1D1240B287654416F28E140C7305141BE2FCFCB337654418F30F156C7305141DA55880135765441C9B9C5FAC730514132C64BF43D765441A63644E1C9305141E043F0733D7654418BF381C6CD305141DFD4F22D3C76544141091A9ED8305141B5134CAC387654419634AF38DF305141E53268903676544197971720E1305141256583033676544137691C49E6305141B426D0B23476544148E17A34E6305141713D0AB7347654417B14AE17E6305141000000F02D7654419EF50029E63051410668DB272D7654418FC2F538E73051411F85EBE120765441ED885E9CE7305141E3A3E8FA1D765441C4A99CEAE8305141ECE253B713765441666666C6E9305141000000000C7654417B14AEC7EB30514185EB5128FD755441D41EC2CAEB3051413B46431CFD7554412D6C1710EE305141DBD72837F475544134B05D20EE3051411D247EEFF37554416AD78896ED30514170B0F950F375544161EB8A7CEC3051414DE3AC14F2755441BB0C9E33EB305141EA1719F5F0755441B81B6919E9305141BA571E21EF755441120BA790E6305141DFC0E418ED755441B81E852BE630514185EB51C8EC755441071697D9E4305141C4BA4A52EB755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577908 - 42280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000080000008FC2F5C8132D514148E17A243E5954419A999969182D514185EB5168435954410AD7A3A0232D5141A4703D2A5059544114AE4781312D5141EC51B84E445954411F85EB31282D514185EB51183A595441D7A3706D212D5141AE47E1AA3259544185EB51081A2D514166666606395954418FC2F5C8132D514148E17A243E595441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000057A1D1301F2D514115F0299734595441D7A3706D212D5141AE47E1AA32595441295C8F421E2D514114AE47312F59544152B81E151B2D5141666666B628595441713D0A87222D51418FC2F59824595441713D0AC7182D51415C8FC2E519595441F6285CAF092D51415C8FC25509595441D7A370ED012D5141A4703D1A1059544170AF9351FE2C51419266463C135954414B2085F71C2D5141EE6997803659544157A1D1301F2D514115F0299734595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>578965 - 3135088
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000010000000AE47E17A35525141E17A14DECF7254417B14AE473F525141B81E858BD27254413D0AD7C341525141C3F5288CD27254419A9999B941525141CDCCCC0CD27254418FC2F5D8385251410AD7A350D07254418FC2F59832525141713D0A27CE7254419A9999992E52514133333343CD725441B81E85DB2B52514114AE4751CD725441666666D62B5251415C8FC245CE7254419A9999C92A52514114AE4731CE7254413D0AD7D32A525141CDCCCC2CCD725441C3F528FC18525141AE47E10ACD725441000000B0185251410AD7A390CE725441713D0A2724525141D7A3707DCE725441C3F5283C2F5251415C8FC225CF725441AE47E17A35525141E17A14DECF7254410103000000010000001300000014AE47F12E525141D7A370CDCB7254410AD7A3F03252514114AE47B1CC7254410AD7A33039525141AE47E1DACE725441AE47E19A4152514166666686D072544148E17A7441525141F6285C9FCE7254418FC2F53841525141AE47E1AACB725441D7A3705D3B5251418FC2F5E8C972544152B81ED52C5251418FC2F538C5725441F6285C3F1D525141AE47E16AC0725441EC51B83E0F5251411F85EBD1BC725441713D0A8711525141F6285C0FC772544114AE47611552514114AE4761C7725441D7A3700D1752514114AE4791CA7254410AD7A31017525141AE47E17ACB725441000000E02A525141713D0A07CC725441713D0AE72A525141EC51B85ECB725441666666E62B52514114AE4761CB725441295C8FE22B525141E17A140ECC72544114AE47F12E525141D7A370CDCB725441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000EC51B83E0F5251411F85EBD1BC72544135A8B5F10F525141E230ECF4BF7254419E0ACBC110525141531A739AC372544176131A7F11525141A53EBFEBC672544125A6B3CF125251416FDCA82AC7725441DA39CDB51452514157580953C772544114AE47611552514114AE4761C7725441A9C2E35716525141D3AA4637C9725441ED7C3FE9165251410CE14D4CCA725441A45021FA165251419A15E8FFCA725441B5CCACCE1B52514113912FF1CA725441F96CFC1821525141A61E591DCB7254418464CFDE25525141BF303B58CB72544163BC963D2A525141BF303B58CB72544189D7E9952A52514174FA94A7CA72544195E05AB32A525141AE48A705CA725441204436F72B525141C85A8940CA725441204436F72B525141BF303B58CB7254413AEA0FB42F52514139AC8249CB7254419FC68F213452514185E228FACB725441DE87BC36385251417CB8DA11CD725441ACF7EF423B5251418DA06E64CE725441723DD5663F525141FFF1676DCF7254417D17399041525141316FEDFFCF7254418394AD6241525141FDFB49BDCD72544153CC6239415251415B3FE9B0CB725441A5D978C43C5251418C58AF54CA7254413B57631837525141BC966488C8725441C685BEDE31525141BA99EED8C6725441F059800C30525141C1468B42C67254414AA57AC02A52514103EBBD94C47254419BFD86462452514167789495C2725441F6588A7A1E52514168940DCCC07254417185B3921A5251414683FABABF72544105F9122217525141A4AFBAD8BE725441A51D4DCA1152514114BE5279BD725441EC51B83E0F5251411F85EBD1BC725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>578965 - 3522192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000010000000AE47E17A35525141E17A14DECF7254417B14AE473F525141B81E858BD27254413D0AD7C341525141C3F5288CD27254419A9999B941525141CDCCCC0CD27254418FC2F5D8385251410AD7A350D07254418FC2F59832525141713D0A27CE7254419A9999992E52514133333343CD725441B81E85DB2B52514114AE4751CD725441666666D62B5251415C8FC245CE7254419A9999C92A52514114AE4731CE7254413D0AD7D32A525141CDCCCC2CCD725441C3F528FC18525141AE47E10ACD725441000000B0185251410AD7A390CE725441713D0A2724525141D7A3707DCE725441C3F5283C2F5251415C8FC225CF725441AE47E17A35525141E17A14DECF7254410103000000010000001300000014AE47F12E525141D7A370CDCB7254410AD7A3F03252514114AE47B1CC7254410AD7A33039525141AE47E1DACE725441AE47E19A4152514166666686D072544148E17A7441525141F6285C9FCE7254418FC2F53841525141AE47E1AACB725441D7A3705D3B5251418FC2F5E8C972544152B81ED52C5251418FC2F538C5725441F6285C3F1D525141AE47E16AC0725441EC51B83E0F5251411F85EBD1BC725441713D0A8711525141F6285C0FC772544114AE47611552514114AE4761C7725441D7A3700D1752514114AE4791CA7254410AD7A31017525141AE47E17ACB725441000000E02A525141713D0A07CC725441713D0AE72A525141EC51B85ECB725441666666E62B52514114AE4761CB725441295C8FE22B525141E17A140ECC72544114AE47F12E525141D7A370CDCB725441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000EC51B83E0F5251411F85EBD1BC72544135A8B5F10F525141E230ECF4BF7254419E0ACBC110525141531A739AC372544176131A7F11525141A53EBFEBC672544125A6B3CF125251416FDCA82AC7725441DA39CDB51452514157580953C772544114AE47611552514114AE4761C7725441A9C2E35716525141D3AA4637C9725441ED7C3FE9165251410CE14D4CCA725441A45021FA165251419A15E8FFCA725441B5CCACCE1B52514113912FF1CA725441F96CFC1821525141A61E591DCB7254418464CFDE25525141BF303B58CB72544163BC963D2A525141BF303B58CB72544189D7E9952A52514174FA94A7CA72544195E05AB32A525141AE48A705CA725441204436F72B525141C85A8940CA725441204436F72B525141BF303B58CB7254413AEA0FB42F52514139AC8249CB7254419FC68F213452514185E228FACB725441DE87BC36385251417CB8DA11CD725441ACF7EF423B5251418DA06E64CE725441723DD5663F525141FFF1676DCF7254417D17399041525141316FEDFFCF7254418394AD6241525141FDFB49BDCD72544153CC6239415251415B3FE9B0CB725441A5D978C43C5251418C58AF54CA7254413B57631837525141BC966488C8725441C685BEDE31525141BA99EED8C6725441F059800C30525141C1468B42C67254414AA57AC02A52514103EBBD94C47254419BFD86462452514167789495C2725441F6588A7A1E52514168940DCCC07254417185B3921A5251414683FABABF72544105F9122217525141A4AFBAD8BE725441A51D4DCA1152514114BE5279BD725441EC51B83E0F5251411F85EBD1BC725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>579259 - 3895529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002700000033333353145251410AD7A370B05F5441B81E85BB15525141CDCCCC9CB15F544152B81EE518525141EC51B87EB15F5441B81E856B1A525141AE47E1BAB15F5441F6285C1F1B5251410AD7A320B55F5441F6285C1F1B52514152B81EB5B75F5441B81E85BB15525141CDCCCCFCBA5F5441713D0A1714525141CDCCCCBCBE5F54418FC2F5E8135251417B14AE07C45F54413D0AD7E318525141F6285C5FCD5F5441B81E856B1A52514152B81E45CD5F5441000000C01E52514148E17A24C95F544185EB5128235251410AD7A320C45F544114AE476124525141AE47E19AC25F5441B81E85BB24525141713D0A07C05F54419A9999D924525141CDCCCCCCBD5F5441713D0AE7255251410AD7A3C0BA5F5441D7A3705D28525141CDCCCC3CB75F5441333333A32D525141EC51B86EB25F544114AE478131525141713D0A27AF5F5441713D0A97395251410AD7A3B0AC5F544152B81E553A52514114AE47C1AE5F544133333373425251417B14AE37AB5F5441EC51B87E4352514114AE4741A95F5441295C8FE22D525141000000C0AB5F5441B81E857B28525141C3F528BCAC5F5441295C8F821A5251417B14AEE7AF5F54410AD7A3A0195251417B14AE97AF5F5441EC51B8BE18525141D7A3702DAF5F5441A4703D4A1752514185EB5148AB5F54417B14AE0717525141EC51B84EA95F5441CDCCCC1C175251419A9999F9A75F5441B81E85BB15525141B81E856BA35F5441CDCCCC5C14525141A4703D5A9E5F544152B81E351452514152B81E759D5F54418FC2F5C812525141295C8F42995F544148E17A140D5251417B14AE479B5F5441333333A30F525141713D0AF7A25F544133333353145251410AD7A370B05F54410500000014AE474126525141295C8F42B15F5441B81E85FB2F5251418FC2F518AE5F544152B81E5530525141713D0A27AF5F5441713D0AD726525141295C8F22B35F544114AE474126525141295C8F42B15F5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000C57748AC42525141275FDE24975F5441359E826E1552514142397838A25F544176B0A827155251411A929848A15F5441B81E85BB15525141B81E856BA35F5441CDCCCC1C175251419A9999F9A75F54417B14AE0717525141EC51B84EA95F5441A4703D4A1752514185EB5148AB5F5441EC51B8BE18525141D7A3702DAF5F54410AD7A3A0195251417B14AE97AF5F5441295C8F821A5251417B14AEE7AF5F5441B81E857B28525141C3F528BCAC5F5441295C8FE22D525141000000C0AB5F5441EC51B87E4352514114AE4741A95F54413D0AD7B34352514133333313A75F5441D7A370AD4352514152B81E15A55F54419A99994943525141295C8F02A05F5441C57748AC42525141275FDE24975F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>777252 - 955962
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000560000003A802ED795615141665C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544156D72951BD615141F075DC5D7786544114AE4711CD615141F6285C7F76865441433ED250D76151416A431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B0A32174DC615141407D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441C4570ADFD561514126F49EB395865441E17A145ECE6151415C8FC23596865441295C8F52CC61514152B81E55968654415C8FC2C5CB615141D7A3707DA286544114AE47D1C5615141713D0A97A4865441EC51B85EC76151410AD7A3B0AB86544166666646C8615141D7A3703DAF8654413D0AD793C8615141F6285C5FB08654418FC2F5C8C96151415C8FC285AC8654411F85EBB1CE6151410AD7A340A6865441E17A14BED8615141F6285CBF97865441E17A14AEE86151413D0AD76381865441E17A14AEF06151417B14AE677686544185EB51F8F8615141E17A14EE788654417B14AE7701625141D7A370ED7C8654410000002009625141295C8F428186544148E17AF40A625141333333C3828654410AD7A3F00C62514148E17A54818654419A99997905625141C3F5282C7D865441AE47E1FA04625141C3F528BC7C86544185EB51780462514152B81E657C865441A4703D1A04625141F6285CEF7B865441000000C003625141EC51B86E7B8654410000001003625141D7A3701D7B8654413D0AD75302625141713D0AB77A865441A4703DDA01625141F6285CEF7986544114AE47210162514185EB51F878865441295C8F2201625141E17A141E78865441A4703DDA00625141A4703D7A778654419A999989006251415C8FC225778654417B14AEC7FF6151417B14AEC7768654410AD7A340006251415C8FC275758654418FC2F568FE6151413D0AD7E3748654417B14AEE7FD615141295C8FE274865441295C8FA2FD615141CDCCCCFC748654415C8FC245FD6151415C8FC2C574865441F6285C7FFC615141CDCCCC8C7486544152B81EC5FB61514185EB5118748654417B14AE77FA6151418FC2F588738654413D0AD753F96151415C8FC26573865441EC51B8CEF86151415C8FC26573865441F6285C5FF8615141EC51B83E7386544185EB5198F761514185EB511872865441B81E850BF66151410AD7A3E071865441D7A370BDF4615141EC51B8DE7086544166666606F26151413D0AD73370865441751B5694EE6151417F3303937086544159126F9ED6615141B1641AB7718654412F9912DFCD6151417D85D4797286544133333383C6615141D7A3702D738654413D0AD723C3615141A4703D9A728654418FDC5FC3C1615141163DC2A5728654412C91E6AABB615141AAF6B4BC7286544145BC1B42B5615141C956F749728654416AC0F72DB16151418683CF8E72865441C810609CAF61514150E0489A72865441FDD0E4B6AE615141E4993BB172865441CDCCCCFCAC615141000000E07286544152B81E85AB615141E17A142E73865441666666E6A9615141A4703DFA73865441333333C3A661514166666666758654417B14AE57A561514185EB51B8758654417B14AE07A361514185EB510876865441A4703DDA9F6151418FC2F56876865441713D0AF797615141713D0A6776865441B81E859B92615141B81E85EB768654410AD7A3D08E6151419A99990977865441713D0A6788615141713D0A2779865441713D0AA78A615141B81E859B7A865441CF4E65B68B61514168DC5A6F7B86544185EB51288C61514152B81E557B8654413A802ED795615141665C036F7A865441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441209EE488C86151415D17F48AB08654414D1FDCACC86151413096FC66B0865441D4A2C218C9615141F2A1A7CEB1865441B52898CCC96151415AAB63EEB28654414AB34B10CB61514168B230C6B3865441479E46D9D7615141A33AF5C1B48654413C9D3CC2DB6151416EAADF9FB5865441528C142FDE615141A37820C0B5865441C614AD06E061514178AFE272B286544161B24637E3615141C7349F36AE865441A786FF4AE86151412537FF8FA88654419019388DF1615141F31B42859F86544193BF9880FA615141B1B0946A94865441E16CA5540562514168F92B3487865441BE0363CB0A625141B466BFBB82865441AFAEF94009625141DB4DA25D818654410467415705625141E96D751E7F865441D9D6F2C2FE6151414B808EA77B865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581674 - 3088192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA3B03514152B81ED5064A54415C8FC2553B0351413D0AD7F3084A544114AE47D13D035141E17A14CE084A54411F85EB414803514148E17AB4074A544152B81E554C0351410AD7A3A0054A5441333333D34E035141F6285CAF044A5441D7A3703D5703514133333343024A54419A9999A9590351417B14AEA7014A5441C3F5284C5D035141CDCCCC2C004A54415C8FC2755C0351417B14AE47F2495441C3F528EC590351413D0AD7C3F1495441EC51B8DE58035141000000B0F1495441B81E851B5803514114AE47A1F14954411F85EBC153035141295C8F12F1495441AE47E11A51035141295C8FC2F049544152B81EF54C0351418FC2F598F04954419A9999D948035141E17A146EF0495441D7A370DD480351415C8FC275ED495441D7A370DD48035141B81E859BEC4954415C8FC2E5480351419A9999C9EB49544148E17AE4480351410AD7A310EB4954415C8FC20549035141713D0A37EA495441D7A3703D49035141C3F528ECE8495441EC51B87E490351413D0AD7E3E74954410AD7A3F04D035141F6285C5FD6495441F6285CEF4A035141EC51B8EED44954413D0AD7E347035141F6285C9FD3495441B81E853B47035141B81E85EBD4495441AE47E19A46035141EC51B89ED7495441AE47E18A44035141CDCCCC8CDE495441713D0AC74203514114AE4711E449544185EB512842035141F6285C2FE6495441295C8FB240035141D7A370CDEB4954417B14AE474003514114AE47E1ED495441AE47E17A3F035141713D0A07F0495441EC51B81E3F03514185EB5198F1495441C3F528DC3E035141CDCCCCCCF2495441E17A148E3D03514114AE4751FE4954417B14AE373C035141CDCCCC9C044A5441AE47E1CA3B03514152B81ED5064A5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DA53A81B460351416E3575EE074A5441C90B55B23B0351414F412C3E094A54417B14AEA73B035141A4703D8A094A5441F68B8F363A035141AC2424E40A4A5441BBBDA84B3A0351412A1D2D450E4A544169AFA41E3B0351411FB2037C114A5441CD840DA03A0351412A87F7F4134A5441E3C42AE239035141355CEB6D164A54416536EC303C035141E34DE740174A5441FD51957143035141D18682EC164A5441D4B4DD8A49035141ABF8B843164A54417E2D21704B035141D4FF3ADA154A5441599F57C74A035141C92A4761134A5441D03B259D4A035141BE5553E8104A5441D03B259D4A0351419D40422D0F4A5441D03B259D4A035141A432B3080D4A54410B0A0C884A035141484FBB620B4A54410B0A0C884A035141995DBF8F0A4A54410B0A0C884A035141D8A45E68094A54410B0A0C884A035141B31695BF084A5441D253D9734A03514127C05E62074A54418C79705F4803514152396EA5074A54411F85EB414803514148E17AB4074A5441DA53A81B460351416E3575EE074A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581674 - 3432341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA3B03514152B81ED5064A54415C8FC2553B0351413D0AD7F3084A544114AE47D13D035141E17A14CE084A54411F85EB414803514148E17AB4074A544152B81E554C0351410AD7A3A0054A5441333333D34E035141F6285CAF044A5441D7A3703D5703514133333343024A54419A9999A9590351417B14AEA7014A5441C3F5284C5D035141CDCCCC2C004A54415C8FC2755C0351417B14AE47F2495441C3F528EC590351413D0AD7C3F1495441EC51B8DE58035141000000B0F1495441B81E851B5803514114AE47A1F14954411F85EBC153035141295C8F12F1495441AE47E11A51035141295C8FC2F049544152B81EF54C0351418FC2F598F04954419A9999D948035141E17A146EF0495441D7A370DD480351415C8FC275ED495441D7A370DD48035141B81E859BEC4954415C8FC2E5480351419A9999C9EB49544148E17AE4480351410AD7A310EB4954415C8FC20549035141713D0A37EA495441D7A3703D49035141C3F528ECE8495441EC51B87E490351413D0AD7E3E74954410AD7A3F04D035141F6285C5FD6495441F6285CEF4A035141EC51B8EED44954413D0AD7E347035141F6285C9FD3495441B81E853B47035141B81E85EBD4495441AE47E19A46035141EC51B89ED7495441AE47E18A44035141CDCCCC8CDE495441713D0AC74203514114AE4711E449544185EB512842035141F6285C2FE6495441295C8FB240035141D7A370CDEB4954417B14AE474003514114AE47E1ED495441AE47E17A3F035141713D0A07F0495441EC51B81E3F03514185EB5198F1495441C3F528DC3E035141CDCCCCCCF2495441E17A148E3D03514114AE4751FE4954417B14AE373C035141CDCCCC9C044A5441AE47E1CA3B03514152B81ED5064A5441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DA53A81B460351416E3575EE074A5441C90B55B23B0351414F412C3E094A54417B14AEA73B035141A4703D8A094A5441F68B8F363A035141AC2424E40A4A5441BBBDA84B3A0351412A1D2D450E4A544169AFA41E3B0351411FB2037C114A5441CD840DA03A0351412A87F7F4134A5441E3C42AE239035141355CEB6D164A54416536EC303C035141E34DE740174A5441FD51957143035141D18682EC164A5441D4B4DD8A49035141ABF8B843164A54417E2D21704B035141D4FF3ADA154A5441599F57C74A035141C92A4761134A5441D03B259D4A035141BE5553E8104A5441D03B259D4A0351419D40422D0F4A5441D03B259D4A035141A432B3080D4A54410B0A0C884A035141484FBB620B4A54410B0A0C884A035141995DBF8F0A4A54410B0A0C884A035141D8A45E68094A54410B0A0C884A035141B31695BF084A5441D253D9734A03514127C05E62074A54418C79705F4803514152396EA5074A54411F85EB414803514148E17AB4074A5441DA53A81B460351416E3575EE074A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967065 - 970040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967065 - 1275782
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000F5100F52265E5141F7E84DE3B39854412AD5347E2A5E5141F82A20E867985441A5123F35155E5141D149A5F3629854416FBD245C105E514141FFD4A7B3985441813AAB8E145E5141D1608DC9B398544169DEB54E1C5E5141B5B39A84B4985441EF6C53A5225E5141258BC113B698544117E1BF25265E514171838E0BB7985441F5100F52265E5141F7E84DE3B3985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581742 - 1096466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000003D0AD703D30151417B14AEC74A475441A4703DDACC015141295C8F725D475441C3F528ECC80151411F85EB01684754419A9999E9CC01514185EB51386A475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D47544114AE47F1DC0151411F85EB313F475441CDCCCCCCD90151419A9999893D475441333333B3D50151415C8FC285434754413D0AD703D30151417B14AEC74A475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581742 - 3481827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000003D0AD703D30151417B14AEC74A475441A4703DDACC015141295C8F725D475441C3F528ECC80151411F85EB01684754419A9999E9CC01514185EB51386A475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D47544114AE47F1DC0151411F85EB313F475441CDCCCCCCD90151419A9999893D475441333333B3D50151415C8FC285434754413D0AD703D30151417B14AEC74A475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>582074 - 903305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD7134FE35041B81E858B26EF5441CDCCCC8C4EE35041EC51B87E24EF5441CDCCCC7C4DE35041333333831CEF5441B81E85EB4CE35041AE47E13A1BEF5441CDCCCCEC41E35041EC51B83E23EF5441EC51B87E3AE3504114AE47A128EF5441C3F5281C37E35041CDCCCCFC23EF544185EB512832E350413D0AD72322EF5441D7A370ED28E35041295C8FB21EEF5441EC51B81E23E35041EC51B8FE27EF54410AD7A3601FE3504152B81E852DEF5441000000701BE35041E17A146E33EF544114AE47911FE35041CDCCCCBC3BEF54413D0AD7E323E35041295C8F6243EF544114AE473129E350411F85EB914BEF5441CDCCCC9C2AE35041C3F528BC4DEF54415C8FC22557E35041713D0A373AEF5441713D0A0757E35041E17A140E38EF5441C3F528DC56E350417B14AE1735EF5441F6285CBF55E350413D0AD7B32FEF5441666666A654E35041B81E85CB2DEF5441D7A3705D54E35041CDCCCC4C2DEF5441AE47E12A51E35041333333032AEF54411F85EBE14FE350413333336328EF54413D0AD7134FE35041B81E858B26EF5441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000AEB507AA31E350411D9B976958EF5441A2553F8A37E35041D4DF2DFC55EF544138C12F423BE350417285427054EF544123A4214341E3504159FD6EEB51EF5441962D5C2645E3504148C84D2750EF5441BC63944649E350418D943FEA4DEF5441CA3587424AE35041AD25935E4DEF54415C2D14024CE35041E7EF76664CEF5441C12C4F194EE350418899131B4BEF544103BA65FA4EE35041C8B0CF994AEF5441A4C7288F4FE35041DE45823D4AEF54412F97921253E35041A104730F48EF54411B616CC057E350419905842745EF54419A2E5BB757E3504159631A8344EF5441F61C522757E35041D385C93C3AEF54410DCF814650E3504158FE213A3DEF54417D607DDC4AE350413341A2993FEF544144FC2C1948E35041D28AA7CF40EF5441D25E588545E3504158DEDCF041EF5441D274B2D842E35041D1E3F21C43EF5441DB2AF7AB3DE350419D7D966145EF54413C4AB7AA37E350412C00600348EF5441E89FAB3631E35041E0617AD74AEF54413062AF9E2AE35041C4AAFCBE4DEF5441AEB507AA31E350411D9B976958EF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 2610719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B91355415C8FC2A5CC82504152B81EF5B9135541333333C3CB825041A4703DFABA1355413D0AD723CC825041A4703D4ABB135541AE47E1BAD0825041B81E852BBF13554133333353D58250417B14AE07C3135541295C8FB2D6825041EC51B82EC413554166666696D78250419A9999B9C3135541666666C6DA8250417B14AE87C6135541295C8F42DE8250419A999929CB1355419A9999C9E38250413D0AD723D01355417B14AEB7E4825041D7A370DDD0135541EC51B8CEE7825041D7A3707DCE135541AE47E15AEB825041333333C3CB135541C3F528CCED825041295C8FE2C91355419A9999A9EF82504133333373C8135541
+</a>
+
+<b>
+010600000001000000010300000001000000350000009A9999A9EF82504133333373C813554114AE4701F2825041E17A140EC6135541713D0A37F5825041666666C6C2135541666666C6F7825041EC51B81EC0135541E17A145EF282504185EB5148BA135541C3F5282CFF825041713D0AE7AB13554166666626FC825041C3F5288CAA13554133333303F78250415C8FC245A71355419A9999E9F482504148E17AE4A51355413D0AD713F48250417B14AE57A5135541C3F528DCEF8250411F85EB61A3135541C3F5288CEF825041295C8F52A3135541000000E0EE82504148E17A24A31355415C8FC2E5ED825041295C8FF2A2135541295C8FA2EB82504185EB5178A21355419A9999A9EA825041EC51B82EA2135541EC51B8AEE7825041D7A3704DA1135541295C8F22E282504148E17AB49F13554152B81EA5E08250419A9999599F135541333333D3DE825041713D0AC79E135541EC51B85EDD825041E17A144E9E1355411F85EB51DB82504148E17AA49D13554185EB5128D8825041EC51B89E9C13554166666626D6825041AE47E1FA9B13554100000090D48250419A9999799B1355411F85EB01D4825041B81E854B9B135541E17A14CED28250417B14AEE79A1355419A999939D08250418FC2F5189A135541333333D3CD825041B81E854B99135541295C8FF2CA825041B81E855B9813554114AE4711C88250415C8FC2A59B135541F6285C4FC88250415C8FC2E59B135541EC51B80ECA825041666666769D1355418FC2F5C8CC825041333333A39F13554166666616CF82504148E17A74A11355415C8FC255CF8250415C8FC2A5A11355411F85EBC1D0825041EC51B8BEA2135541713D0A67D282504133333303A413554148E17A84D482504148E17AA4A5135541F6285C0FD5825041295C8F12A6135541B81E859BD6825041B81E854BA71355418FC2F558D8825041B81E85ABA8135541A4703D4AD9825041713D0A67A91355418FC2F588DA8250417B14AE57AA1355415C8FC245D9825041F6285CFFAB1355417B14AE17D7825041C3F5288CAE1355413D0AD783DE8250413D0AD733B61355415C8FC2F5DF8250415C8FC265B8135541B44FC311E7825041783CCD21C0135541A36B3FDEEB8250413611F9D0C4135541B556848AED8250416F2B1C6BC61355416E40DF8FEE825041765F6665C71355419A9999A9EF82504133333373C8135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 2610845
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B91355415C8FC2A5CC82504152B81EF5B9135541333333C3CB825041A4703DFABA1355413D0AD723CC825041A4703D4ABB135541AE47E1BAD0825041B81E852BBF13554133333353D58250417B14AE07C3135541295C8FB2D6825041EC51B82EC413554166666696D78250419A9999B9C3135541666666C6DA8250417B14AE87C6135541295C8F42DE8250419A999929CB1355419A9999C9E38250413D0AD723D01355417B14AEB7E4825041D7A370DDD0135541EC51B8CEE7825041D7A3707DCE135541AE47E15AEB825041333333C3CB135541C3F528CCED825041295C8FE2C91355419A9999A9EF82504133333373C8135541
+</a>
+
+<b>
+01060000000100000001030000000200000029000000B44FC311E7825041783CCD21C0135541190E44BFE3825041E2838484BC13554162DBEC14E182504136352D9EB9135541D7FFC4C5DB82504137B1EE7FB4135541EAAD0EB2D582504184693152AF1355419C37A2DCCF8250417001C321B7135541AFBA2740CE8250418E638A21B913554177A0AB3ACC82504153F6895DBB135541AE47E1BAD0825041B81E852BBF135541A83CC0EDD8825041696C0872C41355411F75E554DE825041E2EEC320CB1355417B14AEB7E4825041D7A370DDD0135541CDCCCCBCE28250419A999959D21355410AD7A3C0E0825041666666D6D31355410AD7A380E18250415C8FC285D413554152B81EA5E582504100000040D813554166666656EA8250419A999979DC1355418FC2F518EF82504114AE47C1E013554114AE4771F482504100000090E51355410AD7A3E0F4825041666666F6E51355417B14AEF7F6825041CDCCCC5CE4135541D7A3706DF8825041F6285C3FE3135541A4703DAAF882504100000010E31355417B14AE27F9825041E17A14AEE2135541D7A3701DFA8250413D0AD7E3E11355415C8FC255FC82504114AE4731E013554100000080FC82504100000010E01355418FC2F538FE825041713D0AB7DE135541295C8FC2FE825041B81E854BDE135541295C8F52FF82504148E17AD4DD1355418FC2F5F8FF825041AE47E14ADD135541666666E60083504166666686DC13554185EB512802835041B81E857BDB135541F6285C5F04835041EC51B8AED9135541EFCB912FFB82504197F06E13D2135541009B6101F6825041033A6CEBCD1355419A9999A9EF82504133333373C81355416E40DF8FEE825041765F6665C7135541B556848AED8250416F2B1C6BC6135541AB6B3FDEEB8250413E11F9D0C4135541B44FC311E7825041783CCD21C013554108000000D7A3702DE88250418FC2F5E8D2135541D7A3702DE88250413D0AD773D3135541D7A3707DE782504152B81EF5D3135541000000E0E682504166666686D313554148E17A64E58250410AD7A3C0D1135541C3F5289CE5825041A4703D1AD1135541295C8F42E682504148E17AB4D0135541D7A3702DE88250418FC2F5E8D2135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 3538372
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B91355415C8FC2A5CC82504152B81EF5B9135541333333C3CB825041A4703DFABA1355413D0AD723CC825041A4703D4ABB135541AE47E1BAD0825041B81E852BBF13554133333353D58250417B14AE07C3135541295C8FB2D6825041EC51B82EC413554166666696D78250419A9999B9C3135541666666C6DA8250417B14AE87C6135541295C8F42DE8250419A999929CB1355419A9999C9E38250413D0AD723D01355417B14AEB7E4825041D7A370DDD0135541EC51B8CEE7825041D7A3707DCE135541AE47E15AEB825041333333C3CB135541C3F528CCED825041295C8FE2C91355419A9999A9EF82504133333373C8135541
+</a>
+
+<b>
+010600000001000000010300000001000000350000009A9999A9EF82504133333373C813554114AE4701F2825041E17A140EC6135541713D0A37F5825041666666C6C2135541666666C6F7825041EC51B81EC0135541E17A145EF282504185EB5148BA135541C3F5282CFF825041713D0AE7AB13554166666626FC825041C3F5288CAA13554133333303F78250415C8FC245A71355419A9999E9F482504148E17AE4A51355413D0AD713F48250417B14AE57A5135541C3F528DCEF8250411F85EB61A3135541C3F5288CEF825041295C8F52A3135541000000E0EE82504148E17A24A31355415C8FC2E5ED825041295C8FF2A2135541295C8FA2EB82504185EB5178A21355419A9999A9EA825041EC51B82EA2135541EC51B8AEE7825041D7A3704DA1135541295C8F22E282504148E17AB49F13554152B81EA5E08250419A9999599F135541333333D3DE825041713D0AC79E135541EC51B85EDD825041E17A144E9E1355411F85EB51DB82504148E17AA49D13554185EB5128D8825041EC51B89E9C13554166666626D6825041AE47E1FA9B13554100000090D48250419A9999799B1355411F85EB01D4825041B81E854B9B135541E17A14CED28250417B14AEE79A1355419A999939D08250418FC2F5189A135541333333D3CD825041B81E854B99135541295C8FF2CA825041B81E855B9813554114AE4711C88250415C8FC2A59B135541F6285C4FC88250415C8FC2E59B135541EC51B80ECA825041666666769D1355418FC2F5C8CC825041333333A39F13554166666616CF82504148E17A74A11355415C8FC255CF8250415C8FC2A5A11355411F85EBC1D0825041EC51B8BEA2135541713D0A67D282504133333303A413554148E17A84D482504148E17AA4A5135541F6285C0FD5825041295C8F12A6135541B81E859BD6825041B81E854BA71355418FC2F558D8825041B81E85ABA8135541A4703D4AD9825041713D0A67A91355418FC2F588DA8250417B14AE57AA1355415C8FC245D9825041F6285CFFAB1355417B14AE17D7825041C3F5288CAE1355413D0AD783DE8250413D0AD733B61355415C8FC2F5DF8250415C8FC265B8135541B44FC311E7825041783CCD21C0135541A36B3FDEEB8250413611F9D0C4135541B556848AED8250416F2B1C6BC61355416E40DF8FEE825041765F6665C71355419A9999A9EF82504133333373C8135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 3538878
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B91355415C8FC2A5CC82504152B81EF5B9135541333333C3CB825041A4703DFABA1355413D0AD723CC825041A4703D4ABB135541AE47E1BAD0825041B81E852BBF13554133333353D58250417B14AE07C3135541295C8FB2D6825041EC51B82EC413554166666696D78250419A9999B9C3135541666666C6DA8250417B14AE87C6135541295C8F42DE8250419A999929CB1355419A9999C9E38250413D0AD723D01355417B14AEB7E4825041D7A370DDD0135541EC51B8CEE7825041D7A3707DCE135541AE47E15AEB825041333333C3CB135541C3F528CCED825041295C8FE2C91355419A9999A9EF82504133333373C8135541
+</a>
+
+<b>
+01060000000100000001030000000200000029000000B44FC311E7825041783CCD21C0135541190E44BFE3825041E2838484BC13554162DBEC14E182504136352D9EB9135541D7FFC4C5DB82504137B1EE7FB4135541EAAD0EB2D582504184693152AF1355419C37A2DCCF8250417001C321B7135541AFBA2740CE8250418E638A21B913554177A0AB3ACC82504153F6895DBB135541AE47E1BAD0825041B81E852BBF135541A83CC0EDD8825041696C0872C41355411F75E554DE825041E2EEC320CB1355417B14AEB7E4825041D7A370DDD0135541CDCCCCBCE28250419A999959D21355410AD7A3C0E0825041666666D6D31355410AD7A380E18250415C8FC285D413554152B81EA5E582504100000040D813554166666656EA8250419A999979DC1355418FC2F518EF82504114AE47C1E013554114AE4771F482504100000090E51355410AD7A3E0F4825041666666F6E51355417B14AEF7F6825041CDCCCC5CE4135541D7A3706DF8825041F6285C3FE3135541A4703DAAF882504100000010E31355417B14AE27F9825041E17A14AEE2135541D7A3701DFA8250413D0AD7E3E11355415C8FC255FC82504114AE4731E013554100000080FC82504100000010E01355418FC2F538FE825041713D0AB7DE135541295C8FC2FE825041B81E854BDE135541295C8F52FF82504148E17AD4DD1355418FC2F5F8FF825041AE47E14ADD135541666666E60083504166666686DC13554185EB512802835041B81E857BDB135541F6285C5F04835041EC51B8AED9135541EFCB912FFB82504197F06E13D2135541009B6101F6825041033A6CEBCD1355419A9999A9EF82504133333373C81355416E40DF8FEE825041765F6665C7135541B556848AED8250416F2B1C6BC6135541AB6B3FDEEB8250413E11F9D0C4135541B44FC311E7825041783CCD21C013554108000000D7A3702DE88250418FC2F5E8D2135541D7A3702DE88250413D0AD773D3135541D7A3707DE782504152B81EF5D3135541000000E0E682504166666686D313554148E17A64E58250410AD7A3C0D1135541C3F5289CE5825041A4703D1AD1135541295C8F42E682504148E17AB4D0135541D7A3702DE88250418FC2F5E8D2135541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585170 - 146327
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005200000052B81ED588E25041AE47E17A95E9544148E17A848BE25041F6285C9F94E954419A9999E990E25041666666E692E954410AD7A3A094E25041333333C391E95441000000E096E250415C8FC21591E95441333333339BE25041000000A08FE95441000000909EE25041CDCCCC6C8EE95441F6285C8FA2E25041D7A370CD8CE95441EC51B85EA2E25041AE47E13A89E95441000000409EE25041B81E85CB87E954417B14AE079EE25041E17A14EE85E95441713D0A77A3E25041713D0AD781E954415C8FC2A5AEE25041D7A3700D76E95441F6285C0FB4E250417B14AEF765E9544148E17A94B5E250413333330363E95441C3F528BCB6E25041B81E857B5FE9544185EB5138B7E250417B14AE475BE9544100000070B7E2504148E17AF457E95441C3F5284CB7E2504152B81E0557E95441295C8FC2B6E250410000006055E954413D0AD753B4E25041A4703DAA4FE95441CDCCCC0CB2E2504185EB51984AE95441F6285CEFB0E25041CDCCCCFC47E9544185EB51D8AFE25041295C8F5244E95441A4703D3AAFE250410AD7A33042E954411F85EBE1ABE25041000000E031E954411F85EB61ABE2504148E17A0430E954419A9999D9A2E25041CDCCCCBC2DE954419A9999D9A2E250417B14AEE727E954413D0AD733A2E25041295C8FF21DE95441D7A3704DA0E250419A9999F91CE954419A9999E99EE2504152B81E8515E954411F85EB919DE25041C3F5284C0EE95441C3F5286C9FE25041F6285CAF0AE9544148E17AD49CE25041E17A144E07E95441E17A149EA2E250410AD7A3A002E95441295C8FF2A7E25041A4703D5AFDE854413D0AD7B3A9E2504100000020F6E8544114AE47E1AAE25041B81E854BF1E854413D0AD763A6E250418FC2F518F0E854410AD7A3D09FE250419A999909F7E85441CDCCCC7C96E2504114AE47E100E9544148E17AA496E250413D0AD7B301E95441A4703D3A97E250417B14AE1705E95441C3F528BC97E250413D0AD77308E954410000003098E250418FC2F5E80BE954410000005098E25041AE47E15A0FE95441D7A3706D98E250411F85EB0118E95441A4703D8A98E250417B14AE9720E9544114AE473198E250410000001024E9544148E17A9497E25041C3F5286C27E954415C8FC2C596E25041C3F528CC2AE95441D7A3700D96E25041C3F5280C2DE954416666663695E2504114AE47B12FE954413D0AD7F395E25041C3F528EC2FE9544185EB51C895E25041C3F5287C30E9544185EB516894E250413333331330E95441C3F528FC93E25041666666F62FE9544114AE47D192E25041EC51B88E33E95441AE47E11A92E250416666660637E954415C8FC2F591E25041666666C63AE95441000000B092E25041713D0A873EE95441AE47E1EA92E250417B14AE4742E95441295C8F1293E2504148E17AD449E954413D0AD71393E25041295C8FF24BE9544114AE47B192E25041E17A145E4FE954413333337391E250416666663654E954413D0AD7E38FE250410AD7A3E05AE954415C8FC2D58CE2504148E17AB467E954417B14AEC78AE2504148E17AF46DE9544185EB510889E25041F6285C4F73E95441A4703D0A88E25041666666F676E95441E17A14CE85E25041D7A3702D7FE95441D7A3705D85E2504114AE476180E954410AD7A35084E250410AD7A3F084E954411F85EB4184E250410AD7A3B088E95441F6285CFF83E25041000000708CE954410AD7A3F083E250410AD7A33090E9544185EB512884E250411F85EBF193E954410000007084E25041D7A3704D96E95441EC51B80E86E250413333332396E9544152B81ED588E25041AE47E17A95E95441
+</a>
+
+<b>
+010600000001000000010300000001000000880000005CAF7FF594E25041EE77A3A337E9544127C842F394E250411BC7C0C237E954414E76DCF294E25041035F4FC837E9544124FDE8D694E2504185DEEC4C39E95441D32943BC94E25041069155613CE95441D89668C794E25041031EE4433EE95441369DD15795E25041AE8C9B1142E95441DA1B3E1F95E250419F67FFD242E95441BC1AA41293E25041D124CCF649E954413D0AD71393E25041295C8FF24BE9544114AE47B192E25041E17A145E4FE9544139F21B9B92E25041886A88B44FE954413333337391E250416666663654E954413D0AD7E38FE250410AD7A3E05AE9544135ADF99D8EE2504162FEE53860E954415C8FC2D58CE2504148E17AB467E954417B14AEC78AE2504148E17AF46DE95441173D01FE8AE2504111C1DB4673E95441EC0ED2348AE250413D02EA0077E95441DB0ACAF187E250412A779BD97DE95441B7E9769186E25041C162E0F37FE95441F455015486E250414196C55180E954418FDB9D3D86E2504199EFF97380E9544143B304D585E25041A6AA7B4D81E95441E724A98284E250418CAEFF1B84E9544139AC577484E2504104F2571F85E954411F85EB4184E250410AD7A3B088E954411FA9B60984E250418A1CC5DA8BE954412C9645F883E25041C6A3943E8EE95441979454F783E2504155EA047C8EE95441FA96FBF383E250418DD1596A90E954416DEC33FD83E250413B7D870991E95441F5D6760284E250410D255D6491E954413CF9740684E25041D8A34BA991E9544166093C0884E250419104FCC791E95441E625052884E25041CB19BEEC93E9544171885F7784E250412751AD4295E95441D096B51786E250414442842096E954416BFD824A86E25041BD135A1196E954411C636E2688E25041308F498395E954414320E9B489E25041DECE560C95E95441E62FC0BA8AE2504194162CA594E954417943B78C8DE250418DDB628493E95441C3D5C39F90E25041A4CAAC5592E95441D7C692D493E25041079731F890E954415D82BC5B94E25041AC4644BE90E95441A1AC4CE196E25041CD0699FC8FE95441AA7EE5FC96E250410A7C49FA8FE95441CB546E5B99E25041DA6380C78FE9544180B7F01F9AE2504139340CB78FE954410609D74A9BE25041B93C90978FE954416BB43AE59EE25041940D354A8EE95441F935EF8BA2E250413193D4CE8CE954413BD0585AA2E25041D25A5B3989E95441000000409EE25041B81E85CB87E954417B14AE079EE25041E17A14EE85E95441ADDE3B76A3E250412C8AA5D781E9544135743DA3A9E2504158F64BFC78E9544111E10032ABE250411BC248C076E954412316B104ADE25041F7EFD52274E95441F6285C0FB4E250417B14AEF765E954419402A562B5E25041A081156463E95441186810A0B5E250419EBACBDF62E9544109E7EC9CB6E250418249FBDA5FE954417F807BBEB6E25041CA7165675FE9544198467CF4B6E25041E17D76935DE9544185EB5138B7E250417B14AE475BE954414BBE0454B7E2504111233EA059E95441D14ACE5FB7E250414FB80DCD58E954415A31CD66B7E2504130A8198158E9544100000070B7E2504148E17AF457E95441C3F5284CB7E2504152B81E0557E95441295C8FC2B6E250410000006055E954413D0AD753B4E25041A4703DAA4FE95441CDCCCC0CB2E2504185EB51984AE95441F6285CEFB0E25041CDCCCCFC47E9544185EB51D8AFE25041295C8F5244E95441A4703D3AAFE250410AD7A33042E95441C3FF79A7ABE250412C4A9AA633E95441CA06C83DABE2504102EFA80032E9544120083175AAE25041DF3CAC9830E9544151CFED14AAE25041BB108AED2FE9544109DB952EA9E25041F3152A872FE95441EBFBDC86A6E250417867B85C2EE954419A9999D9A2E25041CDCCCCBC2DE954419A9999D9A2E25041FA4F6B782DE954419A9999D9A2E2504199B5770C29E95441E19630D8A2E250416B52FED127E954413D0AD733A2E25041295C8FF21DE95441D7A3704DA0E250419A9999F91CE954419A9999E99EE2504152B81E8515E954411F85EB919DE25041C3F5284C0EE95441614B55A29DE250415C37272C0EE95441A3BDCD6A9FE25041CB4201B20AE9544148E17AD49CE25041E17A144E07E95441987BF1FC9CE25041C094602D07E95441948C4CF59FE25041F128DAC604E9544181A64E09A1E250417CC3C7E703E954417641CA73A2E2504189ACD1C202E9544157FE0602A3E25041814C823C02E954410C124FC6A5E25041E51EDC7DFFE854416B886028A7E250419B2B5622FEE85441EBB09DF1A7E25041789D2C5BFDE854413D0AD7B3A9E2504100000020F6E85441D70B47E1AAE2504173F3844BF1E8544145FEB4D5AAE25041D1F56E48F1E854415CDEE2C7AAE250413E54BF44F1E85441A54D5FB3AAE2504175B7463FF1E85441499126A7AAE250415D45043CF1E85441F0C3F0A3AAE25041DD17293BF1E85441746F3269A6E25041370FAF1AF0E854410AD7A3D09FE250419A999909F7E85441A4C4937E96E25041789767DF00E9544148E17AA496E250413D0AD7B301E95441A4703D3A97E250417B14AE1705E95441C3F528BC97E250413D0AD77308E954411BDFCF2298E25041602731840BE954410000003098E250418FC2F5E80BE95441660FD53E98E25041BFBCBC810DE954414BBF105098E250419C6770570FE9544110A095C59BE25041FC6EDBFD18E954419AC7CABA9AE2504167AEDBEC1FE954419C68DD5E99E25041529086E223E95441093FA74D99E25041A289C70124E9544152A38AAE97E25041559142FF26E954416B6BDFF896E2504126EB87F629E9544191C30DF296E25041A685EF0D2AE954415C8FC2C596E25041C3F528CC2AE95441C008774996E2504179FA94502CE954416338E70896E25041194C2D2E2DE954417E12BCF295E25041A69D65D42DE95441ABD1A7C095E25041F301E44B2FE95441F025E26C95E250417CDE03C031E95441EE2C72FA94E25041CDEDDA5E37E954418EB8D5F994E25041502E5A6737E954415CAF7FF594E25041EE77A3A337E95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585170 - 258049
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005200000052B81ED588E25041AE47E17A95E9544148E17A848BE25041F6285C9F94E954419A9999E990E25041666666E692E954410AD7A3A094E25041333333C391E95441000000E096E250415C8FC21591E95441333333339BE25041000000A08FE95441000000909EE25041CDCCCC6C8EE95441F6285C8FA2E25041D7A370CD8CE95441EC51B85EA2E25041AE47E13A89E95441000000409EE25041B81E85CB87E954417B14AE079EE25041E17A14EE85E95441713D0A77A3E25041713D0AD781E954415C8FC2A5AEE25041D7A3700D76E95441F6285C0FB4E250417B14AEF765E9544148E17A94B5E250413333330363E95441C3F528BCB6E25041B81E857B5FE9544185EB5138B7E250417B14AE475BE9544100000070B7E2504148E17AF457E95441C3F5284CB7E2504152B81E0557E95441295C8FC2B6E250410000006055E954413D0AD753B4E25041A4703DAA4FE95441CDCCCC0CB2E2504185EB51984AE95441F6285CEFB0E25041CDCCCCFC47E9544185EB51D8AFE25041295C8F5244E95441A4703D3AAFE250410AD7A33042E954411F85EBE1ABE25041000000E031E954411F85EB61ABE2504148E17A0430E954419A9999D9A2E25041CDCCCCBC2DE954419A9999D9A2E250417B14AEE727E954413D0AD733A2E25041295C8FF21DE95441D7A3704DA0E250419A9999F91CE954419A9999E99EE2504152B81E8515E954411F85EB919DE25041C3F5284C0EE95441C3F5286C9FE25041F6285CAF0AE9544148E17AD49CE25041E17A144E07E95441E17A149EA2E250410AD7A3A002E95441295C8FF2A7E25041A4703D5AFDE854413D0AD7B3A9E2504100000020F6E8544114AE47E1AAE25041B81E854BF1E854413D0AD763A6E250418FC2F518F0E854410AD7A3D09FE250419A999909F7E85441CDCCCC7C96E2504114AE47E100E9544148E17AA496E250413D0AD7B301E95441A4703D3A97E250417B14AE1705E95441C3F528BC97E250413D0AD77308E954410000003098E250418FC2F5E80BE954410000005098E25041AE47E15A0FE95441D7A3706D98E250411F85EB0118E95441A4703D8A98E250417B14AE9720E9544114AE473198E250410000001024E9544148E17A9497E25041C3F5286C27E954415C8FC2C596E25041C3F528CC2AE95441D7A3700D96E25041C3F5280C2DE954416666663695E2504114AE47B12FE954413D0AD7F395E25041C3F528EC2FE9544185EB51C895E25041C3F5287C30E9544185EB516894E250413333331330E95441C3F528FC93E25041666666F62FE9544114AE47D192E25041EC51B88E33E95441AE47E11A92E250416666660637E954415C8FC2F591E25041666666C63AE95441000000B092E25041713D0A873EE95441AE47E1EA92E250417B14AE4742E95441295C8F1293E2504148E17AD449E954413D0AD71393E25041295C8FF24BE9544114AE47B192E25041E17A145E4FE954413333337391E250416666663654E954413D0AD7E38FE250410AD7A3E05AE954415C8FC2D58CE2504148E17AB467E954417B14AEC78AE2504148E17AF46DE9544185EB510889E25041F6285C4F73E95441A4703D0A88E25041666666F676E95441E17A14CE85E25041D7A3702D7FE95441D7A3705D85E2504114AE476180E954410AD7A35084E250410AD7A3F084E954411F85EB4184E250410AD7A3B088E95441F6285CFF83E25041000000708CE954410AD7A3F083E250410AD7A33090E9544185EB512884E250411F85EBF193E954410000007084E25041D7A3704D96E95441EC51B80E86E250413333332396E9544152B81ED588E25041AE47E17A95E95441
+</a>
+
+<b>
+010600000001000000010300000001000000880000005CAF7FF594E25041EE77A3A337E9544127C842F394E250411BC7C0C237E954414E76DCF294E25041035F4FC837E9544124FDE8D694E2504185DEEC4C39E95441D32943BC94E25041069155613CE95441D89668C794E25041031EE4433EE95441369DD15795E25041AE8C9B1142E95441DA1B3E1F95E250419F67FFD242E95441BC1AA41293E25041D124CCF649E954413D0AD71393E25041295C8FF24BE9544114AE47B192E25041E17A145E4FE9544139F21B9B92E25041886A88B44FE954413333337391E250416666663654E954413D0AD7E38FE250410AD7A3E05AE9544135ADF99D8EE2504162FEE53860E954415C8FC2D58CE2504148E17AB467E954417B14AEC78AE2504148E17AF46DE95441173D01FE8AE2504111C1DB4673E95441EC0ED2348AE250413D02EA0077E95441DB0ACAF187E250412A779BD97DE95441B7E9769186E25041C162E0F37FE95441F455015486E250414196C55180E954418FDB9D3D86E2504199EFF97380E9544143B304D585E25041A6AA7B4D81E95441E724A98284E250418CAEFF1B84E9544139AC577484E2504104F2571F85E954411F85EB4184E250410AD7A3B088E954411FA9B60984E250418A1CC5DA8BE954412C9645F883E25041C6A3943E8EE95441979454F783E2504155EA047C8EE95441FA96FBF383E250418DD1596A90E954416DEC33FD83E250413B7D870991E95441F5D6760284E250410D255D6491E954413CF9740684E25041D8A34BA991E9544166093C0884E250419104FCC791E95441E625052884E25041CB19BEEC93E9544171885F7784E250412751AD4295E95441D096B51786E250414442842096E954416BFD824A86E25041BD135A1196E954411C636E2688E25041308F498395E954414320E9B489E25041DECE560C95E95441E62FC0BA8AE2504194162CA594E954417943B78C8DE250418DDB628493E95441C3D5C39F90E25041A4CAAC5592E95441D7C692D493E25041079731F890E954415D82BC5B94E25041AC4644BE90E95441A1AC4CE196E25041CD0699FC8FE95441AA7EE5FC96E250410A7C49FA8FE95441CB546E5B99E25041DA6380C78FE9544180B7F01F9AE2504139340CB78FE954410609D74A9BE25041B93C90978FE954416BB43AE59EE25041940D354A8EE95441F935EF8BA2E250413193D4CE8CE954413BD0585AA2E25041D25A5B3989E95441000000409EE25041B81E85CB87E954417B14AE079EE25041E17A14EE85E95441ADDE3B76A3E250412C8AA5D781E9544135743DA3A9E2504158F64BFC78E9544111E10032ABE250411BC248C076E954412316B104ADE25041F7EFD52274E95441F6285C0FB4E250417B14AEF765E954419402A562B5E25041A081156463E95441186810A0B5E250419EBACBDF62E9544109E7EC9CB6E250418249FBDA5FE954417F807BBEB6E25041CA7165675FE9544198467CF4B6E25041E17D76935DE9544185EB5138B7E250417B14AE475BE954414BBE0454B7E2504111233EA059E95441D14ACE5FB7E250414FB80DCD58E954415A31CD66B7E2504130A8198158E9544100000070B7E2504148E17AF457E95441C3F5284CB7E2504152B81E0557E95441295C8FC2B6E250410000006055E954413D0AD753B4E25041A4703DAA4FE95441CDCCCC0CB2E2504185EB51984AE95441F6285CEFB0E25041CDCCCCFC47E9544185EB51D8AFE25041295C8F5244E95441A4703D3AAFE250410AD7A33042E95441C3FF79A7ABE250412C4A9AA633E95441CA06C83DABE2504102EFA80032E9544120083175AAE25041DF3CAC9830E9544151CFED14AAE25041BB108AED2FE9544109DB952EA9E25041F3152A872FE95441EBFBDC86A6E250417867B85C2EE954419A9999D9A2E25041CDCCCCBC2DE954419A9999D9A2E25041FA4F6B782DE954419A9999D9A2E2504199B5770C29E95441E19630D8A2E250416B52FED127E954413D0AD733A2E25041295C8FF21DE95441D7A3704DA0E250419A9999F91CE954419A9999E99EE2504152B81E8515E954411F85EB919DE25041C3F5284C0EE95441614B55A29DE250415C37272C0EE95441A3BDCD6A9FE25041CB4201B20AE9544148E17AD49CE25041E17A144E07E95441987BF1FC9CE25041C094602D07E95441948C4CF59FE25041F128DAC604E9544181A64E09A1E250417CC3C7E703E954417641CA73A2E2504189ACD1C202E9544157FE0602A3E25041814C823C02E954410C124FC6A5E25041E51EDC7DFFE854416B886028A7E250419B2B5622FEE85441EBB09DF1A7E25041789D2C5BFDE854413D0AD7B3A9E2504100000020F6E85441D70B47E1AAE2504173F3844BF1E8544145FEB4D5AAE25041D1F56E48F1E854415CDEE2C7AAE250413E54BF44F1E85441A54D5FB3AAE2504175B7463FF1E85441499126A7AAE250415D45043CF1E85441F0C3F0A3AAE25041DD17293BF1E85441746F3269A6E25041370FAF1AF0E854410AD7A3D09FE250419A999909F7E85441A4C4937E96E25041789767DF00E9544148E17AA496E250413D0AD7B301E95441A4703D3A97E250417B14AE1705E95441C3F528BC97E250413D0AD77308E954411BDFCF2298E25041602731840BE954410000003098E250418FC2F5E80BE95441660FD53E98E25041BFBCBC810DE954414BBF105098E250419C6770570FE9544110A095C59BE25041FC6EDBFD18E954419AC7CABA9AE2504167AEDBEC1FE954419C68DD5E99E25041529086E223E95441093FA74D99E25041A289C70124E9544152A38AAE97E25041559142FF26E954416B6BDFF896E2504126EB87F629E9544191C30DF296E25041A685EF0D2AE954415C8FC2C596E25041C3F528CC2AE95441C008774996E2504179FA94502CE954416338E70896E25041194C2D2E2DE954417E12BCF295E25041A69D65D42DE95441ABD1A7C095E25041F301E44B2FE95441F025E26C95E250417CDE03C031E95441EE2C72FA94E25041CDEDDA5E37E954418EB8D5F994E25041502E5A6737E954415CAF7FF594E25041EE77A3A337E95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585571 - 56373
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000AE47E1DA13E050415C8FC2B55DEB54410AD7A38010E050415C8FC2D577EB544152B81EF519E05041B81E858B79EB5441E17A144E1DE05041A4703DEA60EB5441AE47E1DA13E050415C8FC2B55DEB5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A144E1DE05041A4703DEA60EB54418AFDE07F1CE05041A1614EA460EB5441E591CF0B1CE05041FDF8F07C60EB5441B9FEB9EA14E050412C2BF5115EEB5441AE47E1DA13E050415C8FC2B55DEB5441FD2008C012E050413AC6E85166EB54410AD7A38010E050415C8FC2D577EB5441169D222D15E05041347727AE78EB5441BA96F90D16E050412F64D1D678EB5441BEC4312017E050413F90690879EB544158BB2CF017E05041D8E8062E79EB5441E02217EE19E05041E0BA338979EB54416948CD3F1AE050413AE7076677EB5441A53922771AE050414F16EACE75EB5441CA3344211BE05041C2B21FEB70EB5441D8F6CC3D1BE050411E3C2D1970EB54410B64F65D1BE050417AE8892C6FEB54414E61B15F1CE05041A3573AC467EB54410D23ACE81CE050413DA05ED463EB5441B9C802061DE05041915081FC62EB5441E17A144E1DE05041A4703DEA60EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585584 - 56382
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000F6285C7F69E250418FC2F52877E85441EC51B8FE6BE250417B14AE4778E854415C8FC2356CE25041C3F528CC6BE85441295C8F326BE250411F85EBF162E85441CDCCCC2C69E25041295C8F1258E85441AE47E1AA68E25041B81E855B50E854415C8FC2E566E2504152B81EA548E8544185EB515862E25041AE47E1CA3FE8544185EB513862E25041CDCCCCDC3AE85441AE47E11A63E2504185EB510834E854418FC2F53870E2504148E17A8423E854418FC2F53866E25041B81E855B22E8544152B81E255BE250411F85EB1121E85441B81E856B59E25041EC51B8DE20E85441AE47E1CA58E25041A4703DCA20E85441EC51B85E58E250418FC2F54829E8544114AE478157E2504114AE47312EE854419A99997956E250416666660634E85441D7A3704D56E25041E17A14FE34E8544148E17AE455E25041AE47E1EA34E854418FC2F56855E25041B81E859B36E85441C3F5281C55E25041C3F5285C39E8544148E17A3455E25041A4703D1A3CE854413D0AD7A358E25041666666C649E85441F6285C2F5BE250411F85EB2153E854413D0AD7E35CE25041B81E851B5AE85441000000705FE250413D0AD74363E85441000000B060E2504152B81E2568E85441A4703D7A61E25041EC51B8CE69E85441F6285C7F69E250418FC2F52877E85441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000EC51B8FE6BE250417B14AE4778E85441FF4DE0056CE25041627534A876E85441B5DDEB0C6CE25041630A2D0F75E854414E60A8246CE250418C2A16AD6FE85441F5B3272C6CE2504106A0CDF96DE85441F81C292F6CE250419F194F4B6DE854418E1780306CE25041D36286FD6CE85441E48666336CE2504125FF25556CE8544187A1A8346CE250412E3C190C6CE854416B2985356CE2504139A015DA6BE8544121E759AA6BE25041548A470967E85441382FD57E6BE25041B5E6C98C65E8544154D1BA466BE25041DCB644A263E854411D40033C6BE250414A21914463E85441F5C39E3A6BE25041994E643863E85441688F2D386BE250418D010A2363E85441365341366BE250417D4A3A1263E8544176E1D2356BE2504123A7740E63E854419BC075356BE250418E69460B63E8544112AB51356BE25041D5EB0A0A63E85441BDBC3DD76AE25041BABC020761E85441BC897CF369E25041433FA73E5CE854419E0D148B69E25041E9FD600D5AE85441F587BD6069E25041E48FC72959E85441BB6B583569E2504113837F4058E8544151889AC464E2504178950C7558E85441CDCCCC7C5FE250413D0AD7C358E8544185EB510860E2504148E17A445AE854413D0AD7E35CE25041B81E851B5AE8544151014ED35DE2504150EE52785DE854417361CBAE5EE25041ECEA528D60E85441CDCEA3F15EE25041A9F89C7D61E85441000000705FE250413D0AD74363E85441F5F5873660E2504168C8E74A66E854418386D85860E2504129B9DED066E854414655EA6E60E250418992072767E85441735F367C60E250418EF1F05A67E8544112DA5E9F60E2504145D032E467E85441BBBFE1B860E2504196AACF3768E854419894D6EE60E2504100CF5BA968E85441D6A5E82861E250418F69902369E85441BDB6BA9261E250411A097EF769E85441AC087B2562E250417D8AD1EB6AE85441503F974669E25041F8E871CA76E85441BF73067E69E25041B8D9BC2677E8544111C812006AE25041436AAE6277E85441EC51B8FE6BE250417B14AE4778E85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585595 - 888719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441A4703DBAE7DF50418FC2F5D891ED5441A4703D8AE0DF50416666664694ED5441A4703DCADCDF50411F85EB6194ED5441000000C0D7DF50418FC2F58894ED54415C8FC295D2DF504152B81EC595ED5441F6285C3FC8DF5041E17A149E9AED544152B81EF5C5DF50417B14AE779EED5441
+</a>
+
+<b>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED544135476981E2DF5041E8C14826A6ED544160024D08DADF5041EC4FCE2BA8ED5441CDAA1E66D7DF5041D222A8CCA8ED54417E0E9DD3D3DF5041BA9DD8A6A9ED54417C23416BD0DF5041ABD0FA76AAED544144A64055CEDF50410CBD62F6AAED5441FE9EE061CDDF50418AAC7330ABED5441F02EFE67CCDF50417531126CABED54416B66A8E3CBDF504184FEA48BABED5441E4AD7455CDDF5041636F9BFAAEED544152A89964CFDF504169AF9696B3ED54416A1EB821D1DF50417C01F67AB7ED5441D964ABEDD2DF5041F0E1D3FABAED5441CBBA1D9EE0DF5041EFEA95B8B7ED5441B345FAEAE7DF5041A3D6B2FBB5ED5441391B28D9EEDF5041BCD75955B4ED54419B138234F6DF50415EFD07A6B2ED5441C415E1FAFADF5041E6E980A9B1ED544196830C1EFEDF5041F1FB610BB1ED5441A9267B1504E0504124AA1796B0ED54415CDE78F705E0504167AA1471B0ED5441977A1C8906E0504104A60058B0ED5441D0C6DEF005E05041AE36366BACED5441258E869505E05041CA5D0A84AAED5441B4CAAA5205E050411501E356A8ED54415224AB7F02E050412F4E728DA8ED5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586464 - 3142423
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5286CFA4C51418FC2F5E8E975544152B81E55F94C514152B81EB5E9755441000000F0F64C51413D0AD783EA755441E17A14FEF54C514185EB5168EB75544100000000F44C5141666666C6ED7554413D0AD773F34C51411F85EB51FB75544148E17A74F34C514114AE47A10076544148E17A04F44C51411F85EB11057654418FC2F5E8F54C5141EC51B88E0A7654413D0AD7E3F74C5141C3F528EC0D765441B81E858BFA4C5141295C8F42107654411F85EB11FD4C51413D0AD753117654419A9999C9014D51417B14AE1712765441E17A142E0B4D514114AE47411276544133333383134D5141AE47E11A1476544148E17A44174D5141E17A149E147654410AD7A3201A4D5141000000A0147654411F85EB61254D514114AE474114765441B81E854B2E4D5141713D0AB714765441F6285C0F3B4D5141A4703D5A14765441E17A14DE404D5141D7A3707D14765441CDCCCCCC4E4D5141B81E851B15765441295C8F32534D5141E17A14EE14765441666666264F4D5141666666F611765441CDCCCCAC4C4D5141F6285CEF0D765441B81E857B444D5141E17A144EFB75544133333363424D5141CDCCCCACF975544114AE47C13D4D514133333393FC75544152B81ED5384D514152B81E35FF7554410AD7A3E0324D514152B81EE5FF755441666666D62D4D514100000070FF7554419A9999092D4D514100000060FD755441C3F528EC2C4D5141C3F5280CF6755441666666862E4D5141666666F6E7755441EC51B8BE0C4D51410AD7A3E0E8755441C3F5286CFA4C51418FC2F5E8E9755441
+</a>
+
+<b>
+010600000001000000010300000001000000400000005176AC6E254D5141EF817335E87554415C8FC2F5294D5141D7A3706DE775544100000070304D514152B81E75E6755441F6285C9F304D51415C8FC285E4755441D7A3706D314D514114AE4701DF7554411F85EB91314D514166666646D7755441A4703D5A334D51418FC2F528CD755441B81E85EB324D51410AD7A380C87554419A999919344D51413D0AD703C8755441512DB85A324D514165AE946CC675544148E17AB42E4D51417B14AEE7C2755441FE65D92B2C4D5141F837033EC17554417B14AE572A4D51411F85EBA1C17554411F85EB91294D51417B14AE67C275544148E17A04294D51411F85EB71C27554418FC2F508284D514114AE4721C275544114AE4741264D51419A999989C27554410AD7A3B0254D514114AE47F1C275544185EB5138254D51418FC2F508C37554410AD7A350244D514185EB51B8C2755441B35A9253234D51412CFFA54BC37554415B6DB185204D5141FCDF4B08C375544166666676204D514166666616C3755441C3F528DC1F4D514185EB5198C4755441E17A142E1F4D514114AE4761C5755441FC5F59821E4D5141AE9A9EEDC6755441508772161D4D5141DE1C67D9C675544158DA35161A4D5141AE9A9EEDC67554417B14AE07174D5141D7A370ADC6755441EC51B88E164D51419A999929C775544185EB5168114D514148E17AB4C97554415C8FC2650E4D5141D7A370FDCC755441713D0AA70D4D5141D7A3704DCD7554418FC2F5780C4D51413D0AD743CD755441F6285C5F0B4D51411F85EB61CD75544148E17A94084D5141CDCCCC0CCE75544100000090054D5141E17A149ECE755441D7A3703D054D5141E17A14AECE7554418FC2F5C8034D5141AE47E12ACE7554415C8FC2F5024D5141AE47E12ACE755441295C8FC2004D5141295C8FB2CD75544166666676FF4C5141295C8FB2CD755441F684CAC9FC4C514101A6E5C5CF75544183C6496BFA4C514101A6E5C5CF75544185EB5138F44C514185EB5118D0755441F7C32442F14C514125F8726ED1755441BD1F0AF1ED4C5141C6F3E196D1755441E2C45A99EC4C5141386D88D3D17554411F85EBF1EB4C5141713D0A77D6755441295C8F62F54C51417B14AE97D675544114AE47A1F74C51411F85EBA1D67554411F85EB51FA4C5141000000B0D675544169FE7006FD4C51416AF5D068DF755441EDA75286FB4C51419E8B02DCE7755441EC51B87EFA4C5141EC51B84EE9755441CA15A916064D51416D8FF9C2E875544118E0C385054D5141A3C1DB67DB755441F45DE6C00B4D51418654F138DB755441F8F46E77154D51414C7A1CDBDA7554419658204E184D51419A7D527AE77554410AD7A3B01F4D5141CDCCCCDCE6755441CDCCCC8C204D514152B81E35E7755441372F2351234D5141FCAB1E44E87554415176AC6E254D5141EF817335E8755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586464 - 3456841
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5286CFA4C51418FC2F5E8E975544152B81E55F94C514152B81EB5E9755441000000F0F64C51413D0AD783EA755441E17A14FEF54C514185EB5168EB75544100000000F44C5141666666C6ED7554413D0AD773F34C51411F85EB51FB75544148E17A74F34C514114AE47A10076544148E17A04F44C51411F85EB11057654418FC2F5E8F54C5141EC51B88E0A7654413D0AD7E3F74C5141C3F528EC0D765441B81E858BFA4C5141295C8F42107654411F85EB11FD4C51413D0AD753117654419A9999C9014D51417B14AE1712765441E17A142E0B4D514114AE47411276544133333383134D5141AE47E11A1476544148E17A44174D5141E17A149E147654410AD7A3201A4D5141000000A0147654411F85EB61254D514114AE474114765441B81E854B2E4D5141713D0AB714765441F6285C0F3B4D5141A4703D5A14765441E17A14DE404D5141D7A3707D14765441CDCCCCCC4E4D5141B81E851B15765441295C8F32534D5141E17A14EE14765441666666264F4D5141666666F611765441CDCCCCAC4C4D5141F6285CEF0D765441B81E857B444D5141E17A144EFB75544133333363424D5141CDCCCCACF975544114AE47C13D4D514133333393FC75544152B81ED5384D514152B81E35FF7554410AD7A3E0324D514152B81EE5FF755441666666D62D4D514100000070FF7554419A9999092D4D514100000060FD755441C3F528EC2C4D5141C3F5280CF6755441666666862E4D5141666666F6E7755441EC51B8BE0C4D51410AD7A3E0E8755441C3F5286CFA4C51418FC2F5E8E9755441
+</a>
+
+<b>
+010600000001000000010300000001000000400000005176AC6E254D5141EF817335E87554415C8FC2F5294D5141D7A3706DE775544100000070304D514152B81E75E6755441F6285C9F304D51415C8FC285E4755441D7A3706D314D514114AE4701DF7554411F85EB91314D514166666646D7755441A4703D5A334D51418FC2F528CD755441B81E85EB324D51410AD7A380C87554419A999919344D51413D0AD703C8755441512DB85A324D514165AE946CC675544148E17AB42E4D51417B14AEE7C2755441FE65D92B2C4D5141F837033EC17554417B14AE572A4D51411F85EBA1C17554411F85EB91294D51417B14AE67C275544148E17A04294D51411F85EB71C27554418FC2F508284D514114AE4721C275544114AE4741264D51419A999989C27554410AD7A3B0254D514114AE47F1C275544185EB5138254D51418FC2F508C37554410AD7A350244D514185EB51B8C2755441B35A9253234D51412CFFA54BC37554415B6DB185204D5141FCDF4B08C375544166666676204D514166666616C3755441C3F528DC1F4D514185EB5198C4755441E17A142E1F4D514114AE4761C5755441FC5F59821E4D5141AE9A9EEDC6755441508772161D4D5141DE1C67D9C675544158DA35161A4D5141AE9A9EEDC67554417B14AE07174D5141D7A370ADC6755441EC51B88E164D51419A999929C775544185EB5168114D514148E17AB4C97554415C8FC2650E4D5141D7A370FDCC755441713D0AA70D4D5141D7A3704DCD7554418FC2F5780C4D51413D0AD743CD755441F6285C5F0B4D51411F85EB61CD75544148E17A94084D5141CDCCCC0CCE75544100000090054D5141E17A149ECE755441D7A3703D054D5141E17A14AECE7554418FC2F5C8034D5141AE47E12ACE7554415C8FC2F5024D5141AE47E12ACE755441295C8FC2004D5141295C8FB2CD75544166666676FF4C5141295C8FB2CD755441F684CAC9FC4C514101A6E5C5CF75544183C6496BFA4C514101A6E5C5CF75544185EB5138F44C514185EB5118D0755441F7C32442F14C514125F8726ED1755441BD1F0AF1ED4C5141C6F3E196D1755441E2C45A99EC4C5141386D88D3D17554411F85EBF1EB4C5141713D0A77D6755441295C8F62F54C51417B14AE97D675544114AE47A1F74C51411F85EBA1D67554411F85EB51FA4C5141000000B0D675544169FE7006FD4C51416AF5D068DF755441EDA75286FB4C51419E8B02DCE7755441EC51B87EFA4C5141EC51B84EE9755441CA15A916064D51416D8FF9C2E875544118E0C385054D5141A3C1DB67DB755441F45DE6C00B4D51418654F138DB755441F8F46E77154D51414C7A1CDBDA7554419658204E184D51419A7D527AE77554410AD7A3B01F4D5141CDCCCCDCE6755441CDCCCC8C204D514152B81E35E7755441372F2351234D5141FCAB1E44E87554415176AC6E254D5141EF817335E8755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586478 - 3027870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE4771C651514148E17A945A67544148E17AB4C251514114AE4741716754413D0AD773D6515141D7A370BD6C6754418FC2F528D651514152B81E856E67544148E17AD4D35151417B14AEA77C675441713D0A27CF5151413333330399675441C3F5285CCB51514152B81E05B06754410AD7A390D1515141295C8F42AE675441F6285CEFD3515141B81E85ABAC675441B81E853BDE515141333333839F6754418FC2F5B8E5515141B81E85FB956754415C8FC275E9515141C3F528DC91675441D7A3708DED515141295C8F328E67544100000020F25151415C8FC2C58A6754417B14AE77F7515141D7A370AD8767544114AE47C1FC515141B81E852B85675441B81E85AB135251419A9999397D675441D7A370CD165251410AD7A3D07A67544185EB5138195251410AD7A3207A67544148E17A54175251410AD7A39074675441C3F528CC145251418FC2F56873675441A4703D7AF6515141E17A14DE6F675441E17A148EE5515141E17A141E6D6754419A999929E3515141E17A144E6B67544152B81E05E25151410AD7A3106A67544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A675441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586478 - 3435937
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE4771C651514148E17A945A67544148E17AB4C251514114AE4741716754413D0AD773D6515141D7A370BD6C6754418FC2F528D651514152B81E856E67544148E17AD4D35151417B14AEA77C675441713D0A27CF5151413333330399675441C3F5285CCB51514152B81E05B06754410AD7A390D1515141295C8F42AE675441F6285CEFD3515141B81E85ABAC675441B81E853BDE515141333333839F6754418FC2F5B8E5515141B81E85FB956754415C8FC275E9515141C3F528DC91675441D7A3708DED515141295C8F328E67544100000020F25151415C8FC2C58A6754417B14AE77F7515141D7A370AD8767544114AE47C1FC515141B81E852B85675441B81E85AB135251419A9999397D675441D7A370CD165251410AD7A3D07A67544185EB5138195251410AD7A3207A67544148E17A54175251410AD7A39074675441C3F528CC145251418FC2F56873675441A4703D7AF6515141E17A14DE6F675441E17A148EE5515141E17A141E6D6754419A999929E3515141E17A144E6B67544152B81E05E25151410AD7A3106A67544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A675441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586545 - 2987573
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000150000009A9999195B515141AE47E1EA22755441AE47E19A5C515141713D0AD719755441713D0A475E5151413D0AD7131075544148E17A245D515141295C8FF20F7554413D0AD7A357515141713D0A870F755441713D0A37435151415C8FC205107554413D0AD7A34051514152B81E0519755441A4703D2A3E515141333333C328755441000000E0365151415C8FC225407554415C8FC2C53251514185EB51A84A7554418FC2F5982F5151419A9999D951755441713D0AA72D515141295C8FF2567554417B14AE0749515141000000505E755441C3F5281C4C515141EC51B87E56755441000000904E51514133333333507554413D0AD7B3505151411F85EBE149755441C3F528BC5251514148E17AC442755441EC51B8AE54515141EC51B8BE3C7554413D0AD72357515141AE47E15A347554418FC2F548595151413D0AD7932B7554419A9999195B515141AE47E1EA22755441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000243CECB74851514120438B3A5E755441AE131F234B5151417332D1F658755441859E2BDB4C515141DDC6709454755441D635B9FD4E515141AAF648EF4E755441A5E0DE2E505151414094756A4B7554416298687851515141E920CF314775544188507C57535151411CA425E44075544115B6D106545151416ADDF0C53E755441A197D29C55515141FC13D49139755441595301CC56515141D460C086357554418B93345C57515141E4CF40D83275544173F9D70458515141A5E153F52F7554418E358707565151412FD875802F755441282CDDBC535151417DE0C0F92E75544170327DFA4F515141CF17C71C2E75544118F4BFC44C5151419A1318602D755441620334B9485151415249C04E2C755441CFB42BBD4651514131DDB6BD2B7554412836B24844515141019C48E62A755441F63D2E9E4251514103CB52512A755441C579A078405151410D6564912975544189A56B223E515141389748DC28755441ADFFA2463C515141C30383D22E75544173C7277F38515141D04504F23A755441D20E72BB36515141483A68834075544128967DD93251514152EFC5754A755441CAA0C69231515141906EBF5F4D7554419C5482902F515141A190BFEF51755441713D0AA72D515141295C8FF256755441243CECB74851514120438B3A5E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586545 - 3284794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000150000009A9999195B515141AE47E1EA22755441AE47E19A5C515141713D0AD719755441713D0A475E5151413D0AD7131075544148E17A245D515141295C8FF20F7554413D0AD7A357515141713D0A870F755441713D0A37435151415C8FC205107554413D0AD7A34051514152B81E0519755441A4703D2A3E515141333333C328755441000000E0365151415C8FC225407554415C8FC2C53251514185EB51A84A7554418FC2F5982F5151419A9999D951755441713D0AA72D515141295C8FF2567554417B14AE0749515141000000505E755441C3F5281C4C515141EC51B87E56755441000000904E51514133333333507554413D0AD7B3505151411F85EBE149755441C3F528BC5251514148E17AC442755441EC51B8AE54515141EC51B8BE3C7554413D0AD72357515141AE47E15A347554418FC2F548595151413D0AD7932B7554419A9999195B515141AE47E1EA22755441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000243CECB74851514120438B3A5E755441AE131F234B5151417332D1F658755441859E2BDB4C515141DDC6709454755441D635B9FD4E515141AAF648EF4E755441A5E0DE2E505151414094756A4B7554416298687851515141E920CF314775544188507C57535151411CA425E44075544115B6D106545151416ADDF0C53E755441A197D29C55515141FC13D49139755441595301CC56515141D460C086357554418B93345C57515141E4CF40D83275544173F9D70458515141A5E153F52F7554418E358707565151412FD875802F755441282CDDBC535151417DE0C0F92E75544170327DFA4F515141CF17C71C2E75544118F4BFC44C5151419A1318602D755441620334B9485151415249C04E2C755441CFB42BBD4651514131DDB6BD2B7554412836B24844515141019C48E62A755441F63D2E9E4251514103CB52512A755441C579A078405151410D6564912975544189A56B223E515141389748DC28755441ADFFA2463C515141C30383D22E75544173C7277F38515141D04504F23A755441D20E72BB36515141483A68834075544128967DD93251514152EFC5754A755441CAA0C69231515141906EBF5F4D7554419C5482902F515141A190BFEF51755441713D0AA72D515141295C8FF256755441243CECB74851514120438B3A5E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586863 - 3027870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000048E17AD4D35151417B14AEA77C6754418FC2F528D651514152B81E856E6754413D0AD773D6515141D7A370BD6C67544148E17AB4C251514114AE474171675441EC51B82EC2515141E17A146E74675441A4703D6ABD515141CDCCCC5C91675441713D0AC7B851514100000080AD6754410AD7A300C651514148E17AC4B067544152B81EE5C851514185EB51B8B0675441C3F5285CCB51514152B81E05B0675441713D0A27CF515141333333039967544148E17AD4D35151417B14AEA77C675441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586863 - 3435937
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000048E17AD4D35151417B14AEA77C6754418FC2F528D651514152B81E856E6754413D0AD773D6515141D7A370BD6C67544148E17AB4C251514114AE474171675441EC51B82EC2515141E17A146E74675441A4703D6ABD515141CDCCCC5C91675441713D0AC7B851514100000080AD6754410AD7A300C651514148E17AC4B067544152B81EE5C851514185EB51B8B0675441C3F5285CCB51514152B81E05B0675441713D0A27CF515141333333039967544148E17AD4D35151417B14AEA77C675441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587497 - 409926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B676754413AD5EC0B763C51415493273E6A675441088E89EE753C51419D2EDE3B686754414FA0B527763C514133F1EE5468675441AE47E19A753C5141B81E851B59675441000000F0743C5141E17A14DE46675441C2DD97B2733C514113B1F3BE24675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 1089196
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441666666F64A565141295C8F022F7154410AD7A3B04A565141A4703D5A2871544185EB51E845565141AE47E13A07715441A4703DCA655651417B14AED7FF7054418FC2F5A8655651418FC2F528F77054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD97054417B14AEF75D5651415C8FC2F5BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B8705441713D0AA733565141CDCCCC2CB8705441CDCCCCCC1F565141333333A3B8705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054417B14AE571D56514185EB5148CA70544185EB51781E565141B81E85BBCA7054410AD7A3A021565141EC51B8AED27054413D0AD783215651418FC2F508D4705441AE47E1AA205651419A999979D7705441A4703DDA2156514166666656DD705441666666B623565141CDCCCC2CE570544152B81EC5235651411F85EB71E870544114AE47C1225651418FC2F5E8E9705441F6285CEF1F565141000000D0EA7054415C8FC2651D56514152B81E35EB7054413D0AD7A31C565141D7A3701DED705441F6285CCF1D565141295C8FA2EE705441295C8FD21F56514166666636F37054415C8FC2C5205651413D0AD7E3F8705441295C8FE222565141EC51B84E06715441
+</a>
+
+<b>
+01060000000100000001030000000100000038000000A75ECB1F65565141DEF27825F1705441BB5B3E9663565141BEC2E8DEEC7054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD970544136AFFA3C5E56514158C44BF7BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B870544113684D663356514154702212B87054414B8FFCD22C565141478D9205B8705441004D2AEB1F5651414A4AD000B9705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054416D11806A1D56514176B1979ECA7054417DB14D721E565141D0E686F6CA70544192CB9670215651418C998578D27054413D0AD783215651418FC2F508D4705441AE47E1AA205651419A999979D7705441A4703DDA2156514166666656DD705441807FF24D235651417E740DE4E3705441666666B623565141CDCCCC2CE570544152B81EC5235651411F85EB71E870544114AE47C1225651418FC2F5E8E9705441F6285CEF1F565141000000D0EA7054415C8FC2651D56514152B81E35EB705441D36CC1D31C56514111580A2FEC7054413D0AD7A31C565141D7A3701DED705441F6285CCF1D565141295C8FA2EE705441295C8FD21F56514166666636F37054415C8FC2C5205651413D0AD7E3F8705441295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441666666F64A565141295C8F022F715441E74BD4F64A5651418E65DEF02E7154415B47A7F54A565141230A52F02E715441699E07324A56514156C9D50F2871544185EB51E845565141AE47E13A07715441EB3AB0254D565141D8B0EA470571544187200B9264565141DCE4042000715441E925C78E6556514190F6C4CEFF7054412F6A4EA865565141036EB69BFF7054418FC2F5A8655651418FC2F528F7705441EDB1362B65565141C99B1360F1705441A75ECB1F65565141DEF27825F1705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 1089203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441666666F64A565141295C8F022F7154410AD7A3B04A565141A4703D5A2871544185EB51E845565141AE47E13A07715441A4703DCA655651417B14AED7FF7054418FC2F5A8655651418FC2F528F77054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD97054417B14AEF75D5651415C8FC2F5BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B8705441713D0AA733565141CDCCCC2CB8705441CDCCCCCC1F565141333333A3B8705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054417B14AE571D56514185EB5148CA70544185EB51781E565141B81E85BBCA7054410AD7A3A021565141EC51B8AED27054413D0AD783215651418FC2F508D4705441AE47E1AA205651419A999979D7705441A4703DDA2156514166666656DD705441666666B623565141CDCCCC2CE570544152B81EC5235651411F85EB71E870544114AE47C1225651418FC2F5E8E9705441F6285CEF1F565141000000D0EA7054415C8FC2651D56514152B81E35EB7054413D0AD7A31C565141D7A3701DED705441F6285CCF1D565141295C8FA2EE705441295C8FD21F56514166666636F37054415C8FC2C5205651413D0AD7E3F8705441295C8FE222565141EC51B84E06715441
+</a>
+
+<b>
+010600000001000000010300000001000000230000005B47A7F54A565141230A52F02E715441A4703D3A4E565141666666763071544169CEF0EF4F5651411A94C49D31715441E35F09F85156514181B001563371544141036B3553565141E3F94AE53471544138D81500555651410F057CF337715441B81E85BB5556514185EB51183971544148E17A445656514114AE47013A715441E9A1FDD456565141A0DE63743A715441FBEDCC7857565141C1784B453A7154410E5F9AF05A565141052F93EA37715441FE82DEA55C5651416B3E29E036715441D7A3705D615651419A999929347154414178C463635651411CF2CB01337154416B333D2966565141EE80F2403171544169D104876A56514193B389952E715441B4981D3B6D56514111941A542D71544148E17AE46F5651413D0AD7632C7154410AD7A360735651413D0AD7632C715441C520639574565141563C60DD2C7154416666666676565141666666462E715441713D0AA7755651410AD7A3F02B7154417B14AE1775565141713D0A372A715441713D0AF773565141333333132771544152B81E956E565141AE47E16A0D7154416666668669565141CDCCCCDC0E715441713D0A376856514148E17A140B715441E17A14FE665651415C8FC28505715441713D0A0766565141E17A14AEFF7054415287D2C9655651419FA1C9BBFF70544187200B9264565141DCE4042000715441EB3AB0254D565141D8B0EA470571544185EB51E845565141AE47E13A07715441699E07324A56514156C9D50F287154415B47A7F54A565141230A52F02E715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 3351734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441666666F64A565141295C8F022F7154410AD7A3B04A565141A4703D5A2871544185EB51E845565141AE47E13A07715441A4703DCA655651417B14AED7FF7054418FC2F5A8655651418FC2F528F77054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD97054417B14AEF75D5651415C8FC2F5BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B8705441713D0AA733565141CDCCCC2CB8705441CDCCCCCC1F565141333333A3B8705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054417B14AE571D56514185EB5148CA70544185EB51781E565141B81E85BBCA7054410AD7A3A021565141EC51B8AED27054413D0AD783215651418FC2F508D4705441AE47E1AA205651419A999979D7705441A4703DDA2156514166666656DD705441666666B623565141CDCCCC2CE570544152B81EC5235651411F85EB71E870544114AE47C1225651418FC2F5E8E9705441F6285CEF1F565141000000D0EA7054415C8FC2651D56514152B81E35EB7054413D0AD7A31C565141D7A3701DED705441F6285CCF1D565141295C8FA2EE705441295C8FD21F56514166666636F37054415C8FC2C5205651413D0AD7E3F8705441295C8FE222565141EC51B84E06715441
+</a>
+
+<b>
+010600000001000000010300000001000000230000005B47A7F54A565141230A52F02E715441A4703D3A4E565141666666763071544169CEF0EF4F5651411A94C49D31715441E35F09F85156514181B001563371544141036B3553565141E3F94AE53471544138D81500555651410F057CF337715441B81E85BB5556514185EB51183971544148E17A445656514114AE47013A715441E9A1FDD456565141A0DE63743A715441FBEDCC7857565141C1784B453A7154410E5F9AF05A565141052F93EA37715441FE82DEA55C5651416B3E29E036715441D7A3705D615651419A999929347154414178C463635651411CF2CB01337154416B333D2966565141EE80F2403171544169D104876A56514193B389952E715441B4981D3B6D56514111941A542D71544148E17AE46F5651413D0AD7632C7154410AD7A360735651413D0AD7632C715441C520639574565141563C60DD2C7154416666666676565141666666462E715441713D0AA7755651410AD7A3F02B7154417B14AE1775565141713D0A372A715441713D0AF773565141333333132771544152B81E956E565141AE47E16A0D7154416666668669565141CDCCCCDC0E715441713D0A376856514148E17A140B715441E17A14FE665651415C8FC28505715441713D0A0766565141E17A14AEFF7054415287D2C9655651419FA1C9BBFF70544187200B9264565141DCE4042000715441EB3AB0254D565141D8B0EA470571544185EB51E845565141AE47E13A07715441699E07324A56514156C9D50F287154415B47A7F54A565141230A52F02E715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 3535943
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441666666F64A565141295C8F022F7154410AD7A3B04A565141A4703D5A2871544185EB51E845565141AE47E13A07715441A4703DCA655651417B14AED7FF7054418FC2F5A8655651418FC2F528F77054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD97054417B14AEF75D5651415C8FC2F5BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B8705441713D0AA733565141CDCCCC2CB8705441CDCCCCCC1F565141333333A3B8705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054417B14AE571D56514185EB5148CA70544185EB51781E565141B81E85BBCA7054410AD7A3A021565141EC51B8AED27054413D0AD783215651418FC2F508D4705441AE47E1AA205651419A999979D7705441A4703DDA2156514166666656DD705441666666B623565141CDCCCC2CE570544152B81EC5235651411F85EB71E870544114AE47C1225651418FC2F5E8E9705441F6285CEF1F565141000000D0EA7054415C8FC2651D56514152B81E35EB7054413D0AD7A31C565141D7A3701DED705441F6285CCF1D565141295C8FA2EE705441295C8FD21F56514166666636F37054415C8FC2C5205651413D0AD7E3F8705441295C8FE222565141EC51B84E06715441
+</a>
+
+<b>
+01060000000100000001030000000100000038000000A75ECB1F65565141DEF27825F1705441BB5B3E9663565141BEC2E8DEEC7054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD970544136AFFA3C5E56514158C44BF7BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B870544113684D663356514154702212B87054414B8FFCD22C565141478D9205B8705441004D2AEB1F5651414A4AD000B9705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054416D11806A1D56514176B1979ECA7054417DB14D721E565141D0E686F6CA70544192CB9670215651418C998578D27054413D0AD783215651418FC2F508D4705441AE47E1AA205651419A999979D7705441A4703DDA2156514166666656DD705441807FF24D235651417E740DE4E3705441666666B623565141CDCCCC2CE570544152B81EC5235651411F85EB71E870544114AE47C1225651418FC2F5E8E9705441F6285CEF1F565141000000D0EA7054415C8FC2651D56514152B81E35EB705441D36CC1D31C56514111580A2FEC7054413D0AD7A31C565141D7A3701DED705441F6285CCF1D565141295C8FA2EE705441295C8FD21F56514166666636F37054415C8FC2C5205651413D0AD7E3F8705441295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441666666F64A565141295C8F022F715441E74BD4F64A5651418E65DEF02E7154415B47A7F54A565141230A52F02E715441699E07324A56514156C9D50F2871544185EB51E845565141AE47E13A07715441EB3AB0254D565141D8B0EA470571544187200B9264565141DCE4042000715441E925C78E6556514190F6C4CEFF7054412F6A4EA865565141036EB69BFF7054418FC2F5A8655651418FC2F528F7705441EDB1362B65565141C99B1360F1705441A75ECB1F65565141DEF27825F1705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587529 - 982150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441A4703D5A94435141F6285CAF1F6C5441B81E85AB9443514148E17AC4226C5441B81E853B95435141295C8FA2276C54419A99992996435141333333732E6C544152B81E55984351418FC2F5B8356C5441F6285C0F9A435141C3F5288C3B6C5441E17A149E9B435141C3F5287C406C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441E796FE8CC443514142248F630C6C5441909381F8C34351417C268DC60C6C5441996C2434BD435141A8457130126C5441AC59B5EAB94351415B56E216156C5441334B4267B7435141EC5B5D0E166C5441334B4267B7435141D464559A176C54415A7372C5B5435141175F0B99196C5441EC6FB3B3B143514124CF827B1A6C5441CCD7887DAF435141E569F59B126C544176184E63AF43514143D509A1126C5441EC51B87EAF43514148E17AF4126C5441920F814BA743514140B24632146C5441A6D9A7AEA34351413E5563E5146C5441C7A9525E9B435141EC5B5D0E166C5441B297DDC79C435141B57F3B421D6C5441713D0AF79C435141EC51B81E1E6C5441D75056029D435141BDFC6F6C1E6C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588173 - 1212468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000010000000B81E859B0C865141CDCCCC8C586F544185EB51480D8651417B14AE97576F5441A4703D8A1186514152B81EE5556F54411F85EB7112865141CDCCCC2C586F54418FC2F568148651415C8FC2D5576F5441000000501C86514114AE4741556F54411F85EB511786514114AE4751566F544152B81EA51586514185EB5128566F54418FC2F50813865141D7A3707D546F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441E17A148E07865141295C8FC2596F5441D7A3701D0B86514185EB5188586F5441B81E859B0C865141CDCCCC8C586F544105000000000000300D8651410AD7A3A0546F5441C3F5285C0A86514185EB5108576F54415C8FC20505865141AE47E1EA506F5441F6285CFF07865141A4703D5A4E6F5441000000300D8651410AD7A3A0546F5441
+</a>
+
+<b>
+010600000001000000010300000002000000170000009918A21F1386514141F7EC8B546F54418FC2F50813865141D7A3707D546F54410AF80607138651413D1B267B546F5441F04818A41186514167F767D6526F5441869999BB108651416686CDC2516F544132DCBE6510865141908F075D516F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441120CE1A707865141F78AFBD8596F5441849898440786514123865D915A6F5441906B581908865141A1E5D4025B6F544120303E170B8651419A53264B596F5441D7A3701D0B86514185EB5188586F5441B81E859B0C865141CDCCCC8C586F544185EB51480D8651417B14AE97576F5441A4703D8A1186514152B81EE5556F54411F85EB7112865141CDCCCC2C586F54418FC2F568148651415C8FC2D5576F54413D64601A17865141ED14AEF4566F5441DF9297D2158651419FF0315E576F54419918A21F1386514141F7EC8B546F544105000000000000300D8651410AD7A3A0546F5441C3F5285C0A86514185EB5108576F54415C8FC20505865141AE47E1EA506F5441F6285CFF07865141A4703D5A4E6F5441000000300D8651410AD7A3A0546F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588173 - 3490913
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000010000000B81E859B0C865141CDCCCC8C586F544185EB51480D8651417B14AE97576F5441A4703D8A1186514152B81EE5556F54411F85EB7112865141CDCCCC2C586F54418FC2F568148651415C8FC2D5576F5441000000501C86514114AE4741556F54411F85EB511786514114AE4751566F544152B81EA51586514185EB5128566F54418FC2F50813865141D7A3707D546F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441E17A148E07865141295C8FC2596F5441D7A3701D0B86514185EB5188586F5441B81E859B0C865141CDCCCC8C586F544105000000000000300D8651410AD7A3A0546F5441C3F5285C0A86514185EB5108576F54415C8FC20505865141AE47E1EA506F5441F6285CFF07865141A4703D5A4E6F5441000000300D8651410AD7A3A0546F5441
+</a>
+
+<b>
+010600000001000000010300000002000000170000009918A21F1386514141F7EC8B546F54418FC2F50813865141D7A3707D546F54410AF80607138651413D1B267B546F5441F04818A41186514167F767D6526F5441869999BB108651416686CDC2516F544132DCBE6510865141908F075D516F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441120CE1A707865141F78AFBD8596F5441849898440786514123865D915A6F5441906B581908865141A1E5D4025B6F544120303E170B8651419A53264B596F5441D7A3701D0B86514185EB5188586F5441B81E859B0C865141CDCCCC8C586F544185EB51480D8651417B14AE97576F5441A4703D8A1186514152B81EE5556F54411F85EB7112865141CDCCCC2C586F54418FC2F568148651415C8FC2D5576F54413D64601A17865141ED14AEF4566F5441DF9297D2158651419FF0315E576F54419918A21F1386514141F7EC8B546F544105000000000000300D8651410AD7A3A0546F5441C3F5285C0A86514185EB5108576F54415C8FC20505865141AE47E1EA506F5441F6285CFF07865141A4703D5A4E6F5441000000300D8651410AD7A3A0546F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588333 - 3077220
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F5D8F9345141AE47E12A164254417B14AE77F8345141E17A14DE13425441295C8FE2C0345141E17A14CE16425441666666B6C134514166666616204254411F85EB41C8345141A4703D3A1E4254417B14AE47CA345141A4703D4A1E4254411F85EB71CB3451415C8FC2351F425441B81E85BBCC345141666666562242544114AE47D1CE34514114AE47A1264254418FC2F598D0345141713D0AB7284254411F85EB11D2345141D7A3708D2A425441B81E855BD3345141E17A146E3342544114AE47E1EC34514185EB511832425441713D0A37EC3451418FC2F5C829425441666666F6F0345141B81E856B294254419A9999E9F1345141666666761E425441713D0A67FE345141333333831A4254418FC2F5D8F9345141AE47E12A16425441
+</a>
+
+<b>
+01060000000100000001030000000100000006000000750964A1D2345141D30673AD2E425441940E4756D3345141F620A66E33425441D046AFE0EC3451415E73E11032425441F6F5A280EC345141A7F0A3602D425441D1B73580EC345141FCD04E5B2D425441750964A1D2345141D30673AD2E425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588333 - 3381191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F5D8F9345141AE47E12A164254417B14AE77F8345141E17A14DE13425441295C8FE2C0345141E17A14CE16425441666666B6C134514166666616204254411F85EB41C8345141A4703D3A1E4254417B14AE47CA345141A4703D4A1E4254411F85EB71CB3451415C8FC2351F425441B81E85BBCC345141666666562242544114AE47D1CE34514114AE47A1264254418FC2F598D0345141713D0AB7284254411F85EB11D2345141D7A3708D2A425441B81E855BD3345141E17A146E3342544114AE47E1EC34514185EB511832425441713D0A37EC3451418FC2F5C829425441666666F6F0345141B81E856B294254419A9999E9F1345141666666761E425441713D0A67FE345141333333831A4254418FC2F5D8F9345141AE47E12A16425441
+</a>
+
+<b>
+01060000000100000001030000000100000006000000750964A1D2345141D30673AD2E425441940E4756D3345141F620A66E33425441D046AFE0EC3451415E73E11032425441F6F5A280EC345141A7F0A3602D425441D1B73580EC345141FCD04E5B2D425441750964A1D2345141D30673AD2E425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589179 - 3090951
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000007B14AE67134751413D0AD733A8545441E17A14CE134751417B14AE27A8545441E17A141E1447514133333303A8545441AE47E18A144751417B14AE97A7545441B81E85CB144751419A999969A7545441B81E851B15475141AE47E13AA75454415C8FC255154751415C8FC245A754544114AE4701164751418FC2F578A754544152B81EC5164751411F85EBE1A7545441713D0A9717475141333333B3A854544148E17AA418475141B81E853BAA54544185EB51681947514185EB5198AB5454411F85EBD11A475141333333A3AC5454417B14AE871C4751417B14AEB7AD545441666666761D475141EC51B80EAE54544185EB51881E47514133333323AE545441EC51B88E204751417B14AE27AE545441E17A14BE214751417B14AE57AE545441295C8F5224475141C3F5284CAE545441A4703D2A274751417B14AEB7B05454417B14AE072A47514148E17A34B2545441000000A02D4751411F85EB51B35454410000008030475141CDCCCC4CB4545441F6285CFF324751419A999929B55454419A9999D935475141AE47E13AB654544152B81E7538475141E17A142EB7545441333333A33D4751418FC2F558B954544185EB51C83E475141F6285CAFB954544114AE47D140475141B81E856BB9545441295C8FE2444751411F85EB61BA5454418FC2F5184647514148E17A74B95454413D0AD77347475141295C8FE2B8545441A4703D6A48475141713D0A87B9545441B81E85BB474751418FC2F548BC545441A4703D1A5747514185EB51C8BC545441A4703DAA58475141295C8FB2AF54544148E17A245A475141713D0A57A3545441666666865247514114AE47A1A35454411F85EBE14B475141EC51B87EA4545441CDCCCCCC474751419A9999B9A5545441C3F528BC45475141CDCCCCDCA6545441713D0A8743475141D7A3701DA75454418FC2F5183D475141CDCCCC9CA75454417B14AE2738475141B81E85DBA6545441B81E853B364751410AD7A390A6545441AE47E1BA3047514114AE47A1A6545441713D0A97284751419A9999C9A7545441713D0A3725475141000000C0A75454419A9999592247514166666616A7545441A4703DAA204751413D0AD7B3A95454418FC2F5D81F47514114AE4751AA545441EC51B85E1F475141D7A370ADAA5454411F85EBF11E475141F6285CFFAA545441CDCCCCCC1D47514100000020AA5454418FC2F5A81A47514148E17AB4A85454410AD7A30017475141B81E85FBA65454413D0AD7531547514114AE4751A65454419A99995913475141666666A6A55454413D0AD793104751419A999919A4545441B81E85EB0F475141E17A14BEA454544152B81E050F475141F6285CFFA5545441C3F528DC0E4751415C8FC255A6545441AE47E18A0F4751410AD7A390A6545441295C8FF210475141A4703DEAA6545441F6285CEF114751419A999929A754544185EB51A812475141295C8FE2A7545441CDCCCC1C1347514185EB5128A85454417B14AE67134751413D0AD733A8545441
+</a>
+
+<b>
+0106000000010000000103000000010000006D0000008FC2F5A81A47514148E17AB4A8545441CDCCCCCC1D47514100000020AA5454411F85EBF11E475141F6285CFFAA545441EC51B85E1F475141D7A370ADAA545441A4703DAA204751413D0AD7B3A95454419A9999592247514166666616A7545441713D0A3725475141000000C0A7545441713D0A97284751419A9999C9A7545441AE47E1BA3047514114AE47A1A6545441B81E853B364751410AD7A390A65454417B14AE2738475141B81E85DBA6545441D63805793A475141F71E2836A7545441F7E67D413F475141ABB70C72A7545441207111F643475141D683BD10A7545441460FF453464751411F5D2F89A65454417A9A8D49484751412F7D0394A5545441296041174B475141BCAEC7BBA4545441DF19CBF94E47514174C29917A4545441AA558A3C5247514158EDE5AAA3545441911333FF544751413AF72D63A354544135746F0B584751411D447C6BA354544148E17A245A475141713D0A57A3545441713D0A775A475141CDCCCC9CA154544121E8CF715747514141CFAEEAA1545441CB780DB9534751418E93216AA2545441E0B49DF74E475141B1AA9189A2545441E00282C6484751412A3D19BAA354544183567AD345475141B52D42C7A4545441787C92DD414751415D4348B7A55454410A02C7BD3D4751410B73EB4EA6545441ECDA69913A475141DDDFABD5A5545441C2E5C31C3A475141F489FEA0A354544152EF18C938475141043C047F9F54544159E00B3638475141297EB2089F5454413E0DD94436475141E32D0AE49F54544104341435344751410292C3E7A0545441718C619432475141758F7152A154544160CDD8E52F475141FAEE58ACA1545441BFC101752E475141E5BC78A8A1545441C9EDABC62B475141440635AFA1545441725E4C162A4751411559E2D3A154544128898F2A28475141CDBC39B8A1545441C86D077B25475141C8B09078A154544155F301232347514148CA2D25A1545441FEFF8CBC2347514183FE1AA89E545441EFFC98892347514161F53E0F9E5454411ED8F4DB224751417318D4739C5454411ED208D921475141BBC7CE299A5454410E3D2A6E20475141BD98E15898545441FE17C2061F475141FE0D7339975454419D8F74811D47514135CF8EBA9654544129BF4F441D4751411C170A1598545441B5EE2A071D47514148CA0BC1995454414AD0A2091B4751417F2FAAAC995454418C4694BA1847514148CA0BC19954544182138AB20E475141D4F9E683995454415ECF2CE506475141035F856F9954544131C35C1906475141EC589D099954544103B78C4D05475141EDB16B2998545441A7451E96044751414E8713609554544135CEC778034751416B4A036591545441F66241270347514176FC9FA48F5454419F76F56A0947514135812E578E54544141824F460A475141356BCE3E8E545441400A01DA0A4751414271E62A8E5454413C5788550B4751415A3F401A8E545441C69419160C4751418FF44B008E545441A045AE9A0E475141D4826BA98D54544154981508144751414BA26C188D5454410581182516475141D8AB22DD8C54544170C2C49F19475141A22154958C545441F48C58C11A4751417A58F7798C545441278CCB161E4751417A52C18A8C54544149500B941E4751416EBA49308954544178ED410C1F475141F7A47F0085545441FD641CB81A475141D9A4253983545441C1C1086513475141D9A4253983545441CE94E6C20947514134BDC5D084545441311C2B3905475141A5DB4DCE8654544106C2F7AC024751415B0C8EFD8954544147984D0E02475141CA52DAAD8F5454413D5A12E0014751412A471E11915454416333666403475141954B68D1945454413FFFC1DE0347514152FD0CA297545441A6E6CF2904475141A80D613B99545441996BFAE60547514151C064D1995454418B7D92ED0747514194712E9A9A545441AB8DEF4E0C4751413A1625BC9A545441F13112B010475141125A02769C545441369D9801114751418783F5D29B54544161F7CB8D13475141B74162DE9A545441468DAAA81647514171D6DB8C9A54544127181E641C475141707D0D6D9B545441B0955CE71D4751419C300F199D54544122B4E4E41F475141AF2B8C1FA054544108A3911F224751417E1451F4A15454417DCC847C21475141655CCC4EA3545441527251F01E47514106E0F237A55454416DDC72D51B47514163AA2F0FA55454418F039C591447514108928F77A3545441A4703D9A1347514114AE4711A054544114AE476112475141A4703D3AA05454417B14AE27124751411F85EB11A15454411F85EB4111475141A4703DEAA25454413D0AD793104751419A999919A45454419A99995913475141666666A6A55454413D0AD7531547514114AE4751A65454410AD7A30017475141B81E85FBA65454418FC2F5A81A47514148E17AB4A8545441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589179 - 3432857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000007B14AE67134751413D0AD733A8545441E17A14CE134751417B14AE27A8545441E17A141E1447514133333303A8545441AE47E18A144751417B14AE97A7545441B81E85CB144751419A999969A7545441B81E851B15475141AE47E13AA75454415C8FC255154751415C8FC245A754544114AE4701164751418FC2F578A754544152B81EC5164751411F85EBE1A7545441713D0A9717475141333333B3A854544148E17AA418475141B81E853BAA54544185EB51681947514185EB5198AB5454411F85EBD11A475141333333A3AC5454417B14AE871C4751417B14AEB7AD545441666666761D475141EC51B80EAE54544185EB51881E47514133333323AE545441EC51B88E204751417B14AE27AE545441E17A14BE214751417B14AE57AE545441295C8F5224475141C3F5284CAE545441A4703D2A274751417B14AEB7B05454417B14AE072A47514148E17A34B2545441000000A02D4751411F85EB51B35454410000008030475141CDCCCC4CB4545441F6285CFF324751419A999929B55454419A9999D935475141AE47E13AB654544152B81E7538475141E17A142EB7545441333333A33D4751418FC2F558B954544185EB51C83E475141F6285CAFB954544114AE47D140475141B81E856BB9545441295C8FE2444751411F85EB61BA5454418FC2F5184647514148E17A74B95454413D0AD77347475141295C8FE2B8545441A4703D6A48475141713D0A87B9545441B81E85BB474751418FC2F548BC545441A4703D1A5747514185EB51C8BC545441A4703DAA58475141295C8FB2AF54544148E17A245A475141713D0A57A3545441666666865247514114AE47A1A35454411F85EBE14B475141EC51B87EA4545441CDCCCCCC474751419A9999B9A5545441C3F528BC45475141CDCCCCDCA6545441713D0A8743475141D7A3701DA75454418FC2F5183D475141CDCCCC9CA75454417B14AE2738475141B81E85DBA6545441B81E853B364751410AD7A390A6545441AE47E1BA3047514114AE47A1A6545441713D0A97284751419A9999C9A7545441713D0A3725475141000000C0A75454419A9999592247514166666616A7545441A4703DAA204751413D0AD7B3A95454418FC2F5D81F47514114AE4751AA545441EC51B85E1F475141D7A370ADAA5454411F85EBF11E475141F6285CFFAA545441CDCCCCCC1D47514100000020AA5454418FC2F5A81A47514148E17AB4A85454410AD7A30017475141B81E85FBA65454413D0AD7531547514114AE4751A65454419A99995913475141666666A6A55454413D0AD793104751419A999919A4545441B81E85EB0F475141E17A14BEA454544152B81E050F475141F6285CFFA5545441C3F528DC0E4751415C8FC255A6545441AE47E18A0F4751410AD7A390A6545441295C8FF210475141A4703DEAA6545441F6285CEF114751419A999929A754544185EB51A812475141295C8FE2A7545441CDCCCC1C1347514185EB5128A85454417B14AE67134751413D0AD733A8545441
+</a>
+
+<b>
+0106000000010000000103000000010000006D0000008FC2F5A81A47514148E17AB4A8545441CDCCCCCC1D47514100000020AA5454411F85EBF11E475141F6285CFFAA545441EC51B85E1F475141D7A370ADAA545441A4703DAA204751413D0AD7B3A95454419A9999592247514166666616A7545441713D0A3725475141000000C0A7545441713D0A97284751419A9999C9A7545441AE47E1BA3047514114AE47A1A6545441B81E853B364751410AD7A390A65454417B14AE2738475141B81E85DBA6545441D63805793A475141F71E2836A7545441F7E67D413F475141ABB70C72A7545441207111F643475141D683BD10A7545441460FF453464751411F5D2F89A65454417A9A8D49484751412F7D0394A5545441296041174B475141BCAEC7BBA4545441DF19CBF94E47514174C29917A4545441AA558A3C5247514158EDE5AAA3545441911333FF544751413AF72D63A354544135746F0B584751411D447C6BA354544148E17A245A475141713D0A57A3545441713D0A775A475141CDCCCC9CA154544121E8CF715747514141CFAEEAA1545441CB780DB9534751418E93216AA2545441E0B49DF74E475141B1AA9189A2545441E00282C6484751412A3D19BAA354544183567AD345475141B52D42C7A4545441787C92DD414751415D4348B7A55454410A02C7BD3D4751410B73EB4EA6545441ECDA69913A475141DDDFABD5A5545441C2E5C31C3A475141F489FEA0A354544152EF18C938475141043C047F9F54544159E00B3638475141297EB2089F5454413E0DD94436475141E32D0AE49F54544104341435344751410292C3E7A0545441718C619432475141758F7152A154544160CDD8E52F475141FAEE58ACA1545441BFC101752E475141E5BC78A8A1545441C9EDABC62B475141440635AFA1545441725E4C162A4751411559E2D3A154544128898F2A28475141CDBC39B8A1545441C86D077B25475141C8B09078A154544155F301232347514148CA2D25A1545441FEFF8CBC2347514183FE1AA89E545441EFFC98892347514161F53E0F9E5454411ED8F4DB224751417318D4739C5454411ED208D921475141BBC7CE299A5454410E3D2A6E20475141BD98E15898545441FE17C2061F475141FE0D7339975454419D8F74811D47514135CF8EBA9654544129BF4F441D4751411C170A1598545441B5EE2A071D47514148CA0BC1995454414AD0A2091B4751417F2FAAAC995454418C4694BA1847514148CA0BC19954544182138AB20E475141D4F9E683995454415ECF2CE506475141035F856F9954544131C35C1906475141EC589D099954544103B78C4D05475141EDB16B2998545441A7451E96044751414E8713609554544135CEC778034751416B4A036591545441F66241270347514176FC9FA48F5454419F76F56A0947514135812E578E54544141824F460A475141356BCE3E8E545441400A01DA0A4751414271E62A8E5454413C5788550B4751415A3F401A8E545441C69419160C4751418FF44B008E545441A045AE9A0E475141D4826BA98D54544154981508144751414BA26C188D5454410581182516475141D8AB22DD8C54544170C2C49F19475141A22154958C545441F48C58C11A4751417A58F7798C545441278CCB161E4751417A52C18A8C54544149500B941E4751416EBA49308954544178ED410C1F475141F7A47F0085545441FD641CB81A475141D9A4253983545441C1C1086513475141D9A4253983545441CE94E6C20947514134BDC5D084545441311C2B3905475141A5DB4DCE8654544106C2F7AC024751415B0C8EFD8954544147984D0E02475141CA52DAAD8F5454413D5A12E0014751412A471E11915454416333666403475141954B68D1945454413FFFC1DE0347514152FD0CA297545441A6E6CF2904475141A80D613B99545441996BFAE60547514151C064D1995454418B7D92ED0747514194712E9A9A545441AB8DEF4E0C4751413A1625BC9A545441F13112B010475141125A02769C545441369D9801114751418783F5D29B54544161F7CB8D13475141B74162DE9A545441468DAAA81647514171D6DB8C9A54544127181E641C475141707D0D6D9B545441B0955CE71D4751419C300F199D54544122B4E4E41F475141AF2B8C1FA054544108A3911F224751417E1451F4A15454417DCC847C21475141655CCC4EA3545441527251F01E47514106E0F237A55454416DDC72D51B47514163AA2F0FA55454418F039C591447514108928F77A3545441A4703D9A1347514114AE4711A054544114AE476112475141A4703D3AA05454417B14AE27124751411F85EB11A15454411F85EB4111475141A4703DEAA25454413D0AD793104751419A999919A45454419A99995913475141666666A6A55454413D0AD7531547514114AE4751A65454410AD7A30017475141B81E85FBA65454418FC2F5A81A47514148E17AB4A8545441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589424 - 55001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002D0000007B14AE973FBE5041CDCCCC9CF3005541B81E858B3EBE50415C8FC2A5EF0055411F85EBB13EBE504114AE4781EC005541AE47E14A3FBE5041C3F5281CEA0055413D0AD7D33FBE5041295C8FF2E8005541AE47E1EA3ABE5041295C8F52E5005541333333A33EBE5041B81E85ABDF0055417B14AEC743BE504166666696D9005541C3F528BC49BE50411F85EB91D4005541713D0AE74FBE5041295C8FD2D0005541AE47E16A53BE50417B14AEE7CD005541713D0AA756BE5041A4703D2ACB0055419A9999F959BE504185EB5148C800554185EB514858BE5041713D0AE7C600554185EB51B858BE504152B81E75C4005541AE47E15A5BBE504114AE4711C0005541CDCCCC0C5EBE5041CDCCCCBCBA005541AE47E18A61BE5041AE47E1BABC005541333333D36ABE5041AE47E17AB1005541AE47E14A6EBE5041295C8F92AE005541AE47E1BA6DBE5041AE47E12AAD005541333333236FBE5041295C8FF2AB005541AE47E1BA70BE5041295C8F12AD00554185EB518874BE5041C3F528CCAD00554114AE47516EBE50411F85EBB19D005541E17A140E67BE504148E17AB4A2005541B81E854B5DBE504114AE47D1AA005541295C8F325BBE5041B81E853BAB0055417B14AE2757BE5041C3F528FCAF005541666666B651BE5041CDCCCCECB70055415C8FC2C54DBE5041D7A3704DC300554148E17A9449BE50410AD7A3B0C80055410AD7A3803FBE504148E17A64D0005541333333D333BE5041A4703DAADC005541EC51B83E33BE50413D0AD773DD005541F6285CAF13BE5041F6285CDFD8005541F6285C0F15BE5041C3F528DCDD005541EC51B89E15BE50410AD7A310E30055419A9999F91EBE5041713D0AE7E40055418FC2F5A827BE504148E17A24E8005541D7A3708D32BE5041C3F5282CED005541333333833DBE5041B81E852BF30055411F85EBF13FBE504148E17AD4F5005541A4703D6A40BE5041B81E851BF50055417B14AE973FBE5041CDCCCC9CF3005541
+</a>
+
+<b>
+0106000000010000000103000000010000005E00000029111BA53FBE5041E77C0ED0E8005541F515A8C83ABE5041BBA46046E5005541CCC91E173CBE5041E91F598AE3005541333333A33EBE5041B81E85ABDF005541D0C76C0342BE5041C8AF52ADDB0055417B14AEC743BE504166666696D9005541B37AB7DA43BE504138395C86D90055413180959449BE5041388DF5A0D4005541F39EAFF94FBE5041CE6215C3D0005541AE47E16A53BE50417B14AEE7CD005541713D0AA756BE5041A4703D2ACB0055410B16EDD759BE5041D9D08865C8005541A6C60D3958BE5041661D3CE9C6005541F8316DAF58BE504107E1E971C4005541EB1259E85BBE504178617EF9BE00554142F2FBEC5DBE50418AEFA094BA00554199BDCFB25EBE5041A4CB821BBB00554104A6547B61BE5041064C02B2BC005541B05E4A8567BE50413436167CB5005541333333D36ABE5041AE47E17AB1005541B937DBFD6ABE50415CD71C57B10055411462B5A46BBE504147DAE28FB00055416D4464C36CBE50411DB7D2DAAF005541AE47E14A6EBE5041295C8F92AE005541AE47E1BA6DBE5041AE47E12AAD005541333333236FBE5041295C8FF2AB005541AE47E1BA70BE5041295C8F12AD005541CE928C8674BE5041EB85D2CBAD0055413F415ED773BE504154A5B101AC00554114AE47516EBE50411F85EBB19D005541C7C9C8816ABE50412E64DC52A00055417EF81FFB65BE5041F0B80599A3005541B81E854B5DBE504114AE47D1AA005541ECDEE2675BBE50411F1BF830AB005541E3D259F457BE504179BF8A0BAF005541B3DA09D253BE50419C1587D9B4005541BC3540D751BE504179D3DFBCB7005541158775D54DBE5041181B1B20C30055415C8FC2C54DBE5041D7A3704DC3005541E579E6CE49BE504191689165C800554148E17A9449BE50410AD7A3B0C8005541FE86AE8B48BE5041B645087BC9005541BD499B4B46BE504158805733CB0055411B18FE1D44BE50411F7D8ADDCC005541C189CCA63FBE5041CD675047D0005541E0D683873FBE504179AA395FD000554119ABC4AF3EBE5041308DFE3FD10055413EA59FE033BE5041FDE5219CDC0055411F4D7C8733BE5041E5BC0A11DD005541EC51B83E33BE50413D0AD773DD005541AC1DAC2C33BE5041DA8D3871DD005541CB1592AF13BE5041DBC21FE0D8005541B813103614BE504154BBF6C7DA00554189A91D4714BE504163E6D105DB005541E17FEC8214BE5041827BC2DEDB005541A16A1DF414BE5041C6A95579DD0055417AA3B8FF14BE50418F186FA3DD005541F6285C0F15BE5041C3F528DCDD00554189AEFE1115BE50412266A6F4DD0055417352C92E15BE50413CDE4100DF005541EC51B89E15BE50410AD7A310E3005541EDF376161CBE5041EE18DC55E4005541917DC4201DBE504166AD2A8AE4005541A972B97E1DBE5041C6229F9CE40055419A9999F91EBE5041713D0AE7E400554118B241C022BE5041AD73A84FE60055418FC2F5A827BE504148E17A24E8005541C0A377A228BE50417FEBB297E80055413D6E62D928BE50414D110FB1E80055413D08BD7E2ABE50417C50A273E90055418CA4031E2DBE5041319C9EA9EA005541627DCB302DBE504107CE4AB2EA00554162E0BDD72DBE504119C762FFEA00554162EBA1EC30BE50413E2DAF6BEC005541D7A3708D32BE5041C3F5282CED00554137F5BA4538BE504191DC714DF00055413963F87D38BE5041D161386CF0005541A858ABB438BE5041930A278AF00055415B69560E3DBE5041E32392EBF20055411C4924793DBE504129150426F3005541333333833DBE5041B81E852BF3005541E4BF81F13FBE5041A63707D4F500554174EDA23340BE50417E5D756FF5005541A4703D6A40BE5041B81E851BF50055417B14AE973FBE5041CDCCCC9CF3005541C501DAEA3EBE504102029C0EF1005541DC45F2913EBE504125CC15BEEF005541B81E858B3EBE50415C8FC2A5EF0055417C1FCC973EBE5041B7A58CA4EE0055411F85EBB13EBE504114AE4781EC00554122E89EB23EBE5041BBA1787EEC0055410DB919C83EBE50412C5A5F28EC005541AE47E14A3FBE5041C3F5281CEA00554129111BA53FBE5041E77C0ED0E8005541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589532 - 180791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000009A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655419A99992901B65041C3F5289C71065541666666F6FFB55041CDCCCC8C7206554185EB5178FAB55041B81E857B8D065541713D0A07F9B550410000009099065541B81E858BF9B550418FC2F5589B065541666666B613B650419A9999599C0655419A99992914B650417B14AE478D065541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000E8A65A2606B65041543695D49B065541C96D66B613B650412EA298599C0655419A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655415B290A0408B65041597667DF71065541587F992901B650413C83299C71065541FC521B4000B650418B24105372065541DB7A67F6FFB550413EF4CB8C72065541D3035378FAB5504147E8847B8D065541713D0A07F9B550410000009099065541CB83858BF9B550416EC6F5589B065541E8A65A2606B65041543695D49B065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589532 - 388083
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000009A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655419A99992901B65041C3F5289C71065541666666F6FFB55041CDCCCC8C7206554185EB5178FAB55041B81E857B8D065541713D0A07F9B550410000009099065541B81E858BF9B550418FC2F5589B065541666666B613B650419A9999599C0655419A99992914B650417B14AE478D065541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000E8A65A2606B65041543695D49B065541C96D66B613B650412EA298599C0655419A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655415B290A0408B65041597667DF71065541587F992901B650413C83299C71065541FC521B4000B650418B24105372065541DB7A67F6FFB550413EF4CB8C72065541D3035378FAB5504147E8847B8D065541713D0A07F9B550410000009099065541CB83858BF9B550416EC6F5589B065541E8A65A2606B65041543695D49B065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589978 - 39794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589978 - 79078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589981 - 39807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001D000000F6285CBF5D9D5041D7A3707DC47A54410AD7A3105D9D5041E17A140EBA7A54411F85EBB15A9D5041AE47E16AB17A5441A4703D6A569D504114AE4741A97A54410AD7A3B0529D5041D7A3707DA27A54413D0AD7534F9D5041EC51B85E9C7A5441000000C0499D5041666666E6957A54418FC2F528449D5041CDCCCC1C917A5441EC51B8CE3F9D504152B81E158E7A5441F6285C6F3B9D5041B81E858B8B7A54418FC2F568349D5041C3F5282C887A5441C3F5287C2F9D5041C3F5281C927A5441E17A143E369D5041D7A370FD947A5441333333033A9D5041D7A370FD967A5441000000D03D9D50410AD7A3D0997A5441AE47E1FA429D5041713D0A979E7A54415C8FC2C5479D50419A9999B9A37A5441CDCCCCBC4B9D5041E17A144EA97A5441333333734F9D504152B81EE5AF7A5441000000B0519D50413D0AD703B57A5441B81E857B539D50413D0AD793BB7A5441D7A370FD549D50419A999999C67A5441D7A3700D569D5041333333E3CD7A5441EC51B89E569D5041666666E6D77A5441000000105A9D5041CDCCCC6CD87A5441B81E85DB5C9D50411F85EB01D87A54413D0AD7435F9D504148E17A14D77A54417B14AE475E9D50418FC2F508CC7A5441F6285CBF5D9D5041D7A3707DC47A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077CF24405F9D5041B039ED15D77A544186FC79BB5F9D50419ABECEE5D67A5441AD21AEED5E9D5041B03590F2CB7A5441727E14CD5E9D504154223DD5C57A5441D0CB669A5E9D504104D06299C07A54415A21A3505E9D504179086ADBB97A544186C1F6485E9D50418AEF059AB97A5441A9DD2AE05B9D5041EAD45B08B27A54418B80CE7B5B9D5041135613CDB07A54415F51FF4C589D50410A56A8BEA87A5441A544217D569D50415C147E39A97A5441D7EA9092599D50418F1DDC46AF7A5441F88D54C85A9D5041B9FC8DBCB17A544148F9A4EB5B9D504129D940E2B57A544128DF05045D9D504117D018E0B97A54411818476D5D9D504199F27396BF7A54416A0276EB5D9D5041E9AC4EEEC67A5441255E92745E9D5041C20E5700CE7A54414F5D68DB5E9D5041C1AB7581D27A544177CF24405F9D5041B039ED15D77A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589981 - 70855
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001D000000F6285CBF5D9D5041D7A3707DC47A54410AD7A3105D9D5041E17A140EBA7A54411F85EBB15A9D5041AE47E16AB17A5441A4703D6A569D504114AE4741A97A54410AD7A3B0529D5041D7A3707DA27A54413D0AD7534F9D5041EC51B85E9C7A5441000000C0499D5041666666E6957A54418FC2F528449D5041CDCCCC1C917A5441EC51B8CE3F9D504152B81E158E7A5441F6285C6F3B9D5041B81E858B8B7A54418FC2F568349D5041C3F5282C887A5441C3F5287C2F9D5041C3F5281C927A5441E17A143E369D5041D7A370FD947A5441333333033A9D5041D7A370FD967A5441000000D03D9D50410AD7A3D0997A5441AE47E1FA429D5041713D0A979E7A54415C8FC2C5479D50419A9999B9A37A5441CDCCCCBC4B9D5041E17A144EA97A5441333333734F9D504152B81EE5AF7A5441000000B0519D50413D0AD703B57A5441B81E857B539D50413D0AD793BB7A5441D7A370FD549D50419A999999C67A5441D7A3700D569D5041333333E3CD7A5441EC51B89E569D5041666666E6D77A5441000000105A9D5041CDCCCC6CD87A5441B81E85DB5C9D50411F85EB01D87A54413D0AD7435F9D504148E17A14D77A54417B14AE475E9D50418FC2F508CC7A5441F6285CBF5D9D5041D7A3707DC47A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077CF24405F9D5041B039ED15D77A544186FC79BB5F9D50419ABECEE5D67A5441AD21AEED5E9D5041B03590F2CB7A5441727E14CD5E9D504154223DD5C57A5441D0CB669A5E9D504104D06299C07A54415A21A3505E9D504179086ADBB97A544186C1F6485E9D50418AEF059AB97A5441A9DD2AE05B9D5041EAD45B08B27A54418B80CE7B5B9D5041135613CDB07A54415F51FF4C589D50410A56A8BEA87A5441A544217D569D50415C147E39A97A5441D7EA9092599D50418F1DDC46AF7A5441F88D54C85A9D5041B9FC8DBCB17A544148F9A4EB5B9D504129D940E2B57A544128DF05045D9D504117D018E0B97A54411818476D5D9D504199F27396BF7A54416A0276EB5D9D5041E9AC4EEEC67A5441255E92745E9D5041C20E5700CE7A54414F5D68DB5E9D5041C1AB7581D27A544177CF24405F9D5041B039ED15D77A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590067 - 39630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001600000014AE47B1779E5041F6285C5F087B5441CDCCCCFC849E5041000000C0117B5441F6285CDF839E5041EC51B83E137B544185EB5108889E5041EC51B83E167B5441A4703D5A9B9E50413D0AD7A3227B5441EC51B84EA69E5041AE47E1CA287B5441333333D3AD9E504152B81EF52D7B54417B14AE17B19E5041333333F3307B5441AE47E11AB39E50413D0AD7C3307B54410AD7A320B89E5041CDCCCC1C2A7B5441713D0A37B39E504100000050257B5441EC51B86EAF9E504152B81ED5227B544100000080A59E50415C8FC2051E7B5441A4703D9AA19E5041EC51B8AE1B7B5441AE47E18A9E9E504148E17A94197B54417B14AEB7979E5041CDCCCCAC147B54418FC2F5A88E9E50410AD7A3400F7B544148E17AC4879E50413D0AD7930B7B544100000020819E5041C3F528FC077B5441713D0A877D9E50418FC2F568057B5441713D0A67799E50417B14AEF7067B544114AE47B1779E5041F6285C5F087B544113000000333333037D9E5041295C8FA2097B5441E17A146E7D9E5041CDCCCC1C097B5441A4703D1A809E5041E17A142E0B7B5441C3F5283C839E5041A4703D0A0D7B54411F85EBC18B9E5041CDCCCC9C117B5441A4703D5A919E504148E17AB4147B5441295C8FF2959E504166666696177B5441A4703D2A999E5041713D0AC7187B5441713D0A679C9E5041E17A14CE1B7B54419A999979A09E5041333333131F7B5441C3F5287CA59E50411F85EBB1217B544148E17A34AA9E50418FC2F558247B544148E17A64A99E5041EC51B86E257B54413D0AD743A09E504166666616207B54419A999979989E504185EB51A81A7B54411F85EBC18C9E50418FC2F558137B544100000040899E5041CDCCCC7C117B54415C8FC285819E5041F6285CEF0C7B5441333333037D9E5041295C8FA2097B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000333333037D9E5041295C8FA2097B5441890EA06A7F9E5041E502DF640B7B54410695635D819E50412AFBD1D10C7B54419F0BDB4B839E50415899E1FA0D7B544178437951899E5041DDEF1086117B54414071784D8C9E5041542D351B137B54412F8D3A1D8F9E5041570956D1147B5441E10E5061949E5041D4B5571A187B54411169C283979E50419599F30E1A7B5441DE06311A989E50415592CC6C1A7B544137A9A8049C9E50414C4595201D7B5441196D7A8AA09E504176E7C33F207B544126D209C1A59E50411539464D237B544148E17A64A99E5041EC51B86E257B544148E17A34AA9E50418FC2F558247B5441D581E6E4A49E50417274D162217B54415A747E7EA09E5041A662C2151F7B54415948A7429E9E5041E9E1F84B1D7B54419C3DC8149C9E5041A86728811B7B544121C6D026999E5041C000C6C5187B54413ABB6DED959E504138582E93177B5441412852DE949E504116A11CE9167B544135498937929E504191474D3F157B54418F7F34608F9E50417111C89C137B5441C6CA81BB899E5041F519A986107B5441B572293E839E50418A66500B0D7B54419DEC2C2F809E5041B2CE823A0B7B5441E17A146E7D9E5041CDCCCC1C097B5441333333037D9E5041295C8FA2097B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590067 - 85032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001600000014AE47B1779E5041F6285C5F087B5441CDCCCCFC849E5041000000C0117B5441F6285CDF839E5041EC51B83E137B544185EB5108889E5041EC51B83E167B5441A4703D5A9B9E50413D0AD7A3227B5441EC51B84EA69E5041AE47E1CA287B5441333333D3AD9E504152B81EF52D7B54417B14AE17B19E5041333333F3307B5441AE47E11AB39E50413D0AD7C3307B54410AD7A320B89E5041CDCCCC1C2A7B5441713D0A37B39E504100000050257B5441EC51B86EAF9E504152B81ED5227B544100000080A59E50415C8FC2051E7B5441A4703D9AA19E5041EC51B8AE1B7B5441AE47E18A9E9E504148E17A94197B54417B14AEB7979E5041CDCCCCAC147B54418FC2F5A88E9E50410AD7A3400F7B544148E17AC4879E50413D0AD7930B7B544100000020819E5041C3F528FC077B5441713D0A877D9E50418FC2F568057B5441713D0A67799E50417B14AEF7067B544114AE47B1779E5041F6285C5F087B544113000000333333037D9E5041295C8FA2097B5441E17A146E7D9E5041CDCCCC1C097B5441A4703D1A809E5041E17A142E0B7B5441C3F5283C839E5041A4703D0A0D7B54411F85EBC18B9E5041CDCCCC9C117B5441A4703D5A919E504148E17AB4147B5441295C8FF2959E504166666696177B5441A4703D2A999E5041713D0AC7187B5441713D0A679C9E5041E17A14CE1B7B54419A999979A09E5041333333131F7B5441C3F5287CA59E50411F85EBB1217B544148E17A34AA9E50418FC2F558247B544148E17A64A99E5041EC51B86E257B54413D0AD743A09E504166666616207B54419A999979989E504185EB51A81A7B54411F85EBC18C9E50418FC2F558137B544100000040899E5041CDCCCC7C117B54415C8FC285819E5041F6285CEF0C7B5441333333037D9E5041295C8FA2097B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000333333037D9E5041295C8FA2097B5441890EA06A7F9E5041E502DF640B7B54410695635D819E50412AFBD1D10C7B54419F0BDB4B839E50415899E1FA0D7B544178437951899E5041DDEF1086117B54414071784D8C9E5041542D351B137B54412F8D3A1D8F9E5041570956D1147B5441E10E5061949E5041D4B5571A187B54411169C283979E50419599F30E1A7B5441DE06311A989E50415592CC6C1A7B544137A9A8049C9E50414C4595201D7B5441196D7A8AA09E504176E7C33F207B544126D209C1A59E50411539464D237B544148E17A64A99E5041EC51B86E257B544148E17A34AA9E50418FC2F558247B5441D581E6E4A49E50417274D162217B54415A747E7EA09E5041A662C2151F7B54415948A7429E9E5041E9E1F84B1D7B54419C3DC8149C9E5041A86728811B7B544121C6D026999E5041C000C6C5187B54413ABB6DED959E504138582E93177B5441412852DE949E504116A11CE9167B544135498937929E504191474D3F157B54418F7F34608F9E50417111C89C137B5441C6CA81BB899E5041F519A986107B5441B572293E839E50418A66500B0D7B54419DEC2C2F809E5041B2CE823A0B7B5441E17A146E7D9E5041CDCCCC1C097B5441333333037D9E5041295C8FA2097B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590126 - 151528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000047000000F6285C5F70105141C3F5281CF02F54410AD7A3607610514114AE47F1F82F5441CDCCCC8C7B105141333333D3FB2F544148E17A7491105141CDCCCC3C09305441666666D6A0105141E17A148E123054419A999929A2105141295C8FD21230544148E17A04A410514152B81EF511305441C3F5288CC0105141CDCCCCDCEE2F5441CDCCCC9CCA1051411F85EB31F12F54419A999959D1105141EC51B8BEF22F5441000000C0D21051413D0AD713F22F54415C8FC255DC105141295C8F52DE2F544114AE47B1D810514152B81E25DD2F544152B81E15D9105141E17A140EDC2F54418FC2F568D4105141B81E85BBDA2F54415C8FC2B5D310514114AE4751D82F54413D0AD723D510514133333373D42F5441E17A142ED410514100000010D42F544185EB51A8CF1051413D0AD723D22F54417B14AE37D11051418FC2F598CF2F54419A999979D3105141E17A146ECE2F54410AD7A330D5105141CDCCCC5CCF2F5441EC51B8BED61051417B14AED7D02F5441D7A3704DD8105141E17A141ECE2F5441C3F5282CDA105141C3F528DCCB2F544133333343DB10514114AE47B1CA2F5441EC51B81EDC1051417B14AE57C72F5441AE47E12AE010514133333333C82F5441D7A3702DE3105141F6285C6FC92F54415C8FC2C5E410514152B81E85C02F54413D0AD7B3E7105141295C8F82AE2F54415C8FC2C5DE1051413D0AD703AD2F5441F6285C9FDB105141EC51B87EBF2F5441295C8F82D5105141C3F528ECBD2F544114AE47B1CA1051413D0AD723BB2F5441713D0A37BB105141C3F5282CB72F54413D0AD763BB105141D7A3702DB12F5441D7A3703DA3105141000000F0AE2F5441C3F528DC8A105141D7A370ADAC2F5441D7A3703D89105141713D0A87AC2F54419A9999B988105141AE47E10AB02F5441295C8F3287105141E17A147EBA2F5441CDCCCCDC7B105141333333D3B72F544148E17A646A10514148E17AB4B32F5441666666666A105141AE47E12AB32F5441C3F528FC58105141713D0AA7B02F5441F6285CAF4710514148E17A24AE2F544114AE47E14710514185EB5138A82F54417B14AEC74110514148E17AD4A72F5441CDCCCC9C4110514148E17A449E2F54410AD7A3904110514152B81ED59B2F54417B14AEE73710514152B81E359B2F5441295C8F92371051410AD7A3309B2F5441EC51B87E371051415C8FC2559B2F5441F6285C3F33105141295C8F72A52F54417B14AEC7311051410AD7A3C0A62F54418FC2F5283210514152B81EC5A62F5441000000F038105141C3F5283CA72F5441D7A370DD39105141F6285C0FA82F5441F6285C9F35105141295C8FA2AF2F54410AD7A3D036105141000000F0AF2F544100000050381051411F85EB91C32F544114AE474139105141CDCCCC4CC92F5441333333F33B1051411F85EBF1CD2F5441EC51B83E4510514152B81EE5D32F54410AD7A3704910514148E17AD4D62F54415C8FC29551105141AE47E1BADC2F5441E17A146E5A10514148E17A74E52F5441333333A364105141000000E0EA2F54415C8FC2356D105141713D0A47ED2F5441F6285C5F70105141C3F5281CF02F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007E3FB9A27D10514128F2053EB82F5441CDCCCCDC7B105141333333D3B72F54419B468BBD79105141F3171553B72F54412CB41A536E10514186BEA6C9B42F5441ABB4058C6F1051415DA433C8B62F54413C65D6157310514170541919B92F544146AA58447710514166E9B5F6BA2F5441A06843A47B1051418204FF69BB2F544195FEB5F37F105141A2B30E49BB2F5441FD94137C851051410E041431BA2F54417E3FB9A27D10514128F2053EB82F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>651053 - 56147
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000020000000CDCCCC3C1C58514152B81E05F2EB5441E17A14BE1C58514100000020F1EB5441A4703D4A1D5851419A9999B9EFEB544148E17AA41D58514148E17A74EEEB54410AD7A3A01D5851418FC2F5C8EDEB5441295C8F521E58514133333303ECEB5441C3F528EC1E585141D7A370CDEAEB5441C3F5286C1F5851415C8FC235EAEB5441E17A147E1F585141A4703D2AEAEB5441295C8F121F58514114AE47D1E9EB544152B81E951B585141A4703DEAE6EB5441295C8F3218585141EC51B8DEE5EB54413D0AD753145851417B14AEB7E4EB5441AE47E15A0F58514133333313E3EB5441CDCCCC2C0958514185EB51D8E5EB54418FC2F53800585141CDCCCCBCE5EB54413D0AD7D3F9575141D7A370EDE3EB54415C8FC2D5F1575141295C8FB2E6EB5441C3F528ACED57514185EB51F8E9EB544185EB5188EE57514166666606ECEB5441EC51B88EF0575141C3F528CCEEEB5441A4703D8AF3575141713D0A87F2EB5441CDCCCC0CF2575141AE47E10AF6EB5441EC51B8BEEE5751418FC2F528FBEB54418FC2F5C8ED5751415C8FC295FBEB5441F6285C1FEB5751416666664600EC54410AD7A390E8575141713D0AD707EC5441F6285C1FE65751413333337310EC54419A999939125851410AD7A3700AEC5441CDCCCC1C1958514152B81E95F9EB5441F6285CEF1958514148E17AF4F7EB5441CDCCCC3C1C58514152B81E05F2EB5441
+</a>
+
+<b>
+0106000000010000000103000000010000002200000009FBD1EFFF575141485719A8E5EB5441D0F6677FFF575141FAE349A5E5EB5441D091F071FD575141FEAE8EF3E4EB5441CDB3D034FA5751411823E308E4EB5441D1C821DCF9575141B372C9EFE3EB5441FA4105D0F8575141FCA57C47E4EB54415C8FC2D5F1575141295C8FB2E6EB5441C3F528ACED57514185EB51F8E9EB544185EB5188EE57514166666606ECEB5441EC51B88EF0575141C3F528CCEEEB5441A4703D8AF3575141713D0A87F2EB5441CDCCCC0CF2575141AE47E10AF6EB5441EC51B8BEEE5751418FC2F528FBEB54418FC2F5C8ED5751415C8FC295FBEB5441F6285C1FEB5751416666664600EC54410AD7A390E8575141713D0AD707EC5441F6285C1FE65751413333337310EC54419A999939125851410AD7A3700AEC54410D69F0B116585141581CD07FFFEB5441CAD78BD613585141E37B056D00EC54411E6169FD0F58514140AA818AFEEB54410B5938D90C585141A89E2203FFEB5441CB18C3410A58514106CD9E20FDEB5441F4CCEE2208585141382669F8FCEB5441792B7E8F025851416DA0B934FDEB544145F5E3D717585141C98A7FCDE5EB54413D0AD753145851417B14AEB7E4EB5441AE47E15A0F58514133333313E3EB5441CDCCCC2C0958514185EB51D8E5EB5441856B370209585141A904CFD7E5EB5441FD0EFBEB085851412E5E9AE1E5EB5441B3DA90E505585141DF1C3ECEE5EB54418FC2F53800585141CDCCCCBCE5EB544109FBD1EFFF575141485719A8E5EB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630746 - 3111917
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE47B1BEF550419A99998999155541B81E85ABB5F55041CDCCCC1C90155541A4703D8AB4F55041713D0A779115554148E17A74B3F55041295C8F1295155541E17A141EB3F55041AE47E1BA971555413D0AD713B3F55041D7A3700D9A1555417B14AE27B3F5504185EB51789D155541AE47E13AB6F550413D0AD7B3A0155541CDCCCC2CB9F55041E17A142EA3155541AE47E11ABDF550410AD7A330A6155541A4703DEABFF55041333333E3A7155541333333A3C3F5504152B81E15A9155541B81E856BCAF550411F85EB91AA1555413D0AD7B3D1F55041B81E85ABAB155541C3F5284CDEF5504148E17AF4B0155541B81E85CBE1F550415C8FC225B2155541D7A3709DE7F55041F6285CFFB31555417B14AE07E7F550418FC2F5D8B2155541B81E85CBE9F55041C3F5287CAB155541D7A370FDE5F55041295C8FC2A9155541713D0A57E2F55041A4703D3AA7155541CDCCCCECDFF550419A999939A415554166666696DCF55041EC51B8FEA1155541000000B0D5F55041AE47E18AA015554148E17AF4D0F550417B14AE579F155541C3F5281CCCF5504185EB51C89E155541A4703D9AC9F550419A9999B99E1555415C8FC255C7F55041A4703D7A9E15554114AE4781C3F55041AE47E12A9D155541D7A3700DC1F55041AE47E1AA9B15554114AE47B1BEF550419A99998999155541
+</a>
+
+<b>
+010600000001000000010300000001000000200000007B14AE07E7F550418FC2F5D8B2155541B81E85CBE9F55041C3F5287CAB1555412A5495D1E6F550411D40BC22AA155541C40E36D3E0F550414B4B5A31A9155541711D4CBCDEF55041B334E933A71555412B5B4D27DBF55041896D3851A4155541E6984E92D7F5504121E731A0A2155541DEC90667D2F550413D4EA3B59F155541A1C9C44BCEF55041DA5400099F155541C3F5281CCCF5504185EB51C89E155541A4703D9AC9F550419A9999B99E1555415C8FC255C7F55041A4703D7A9E15554114AE4781C3F55041AE47E12A9D155541D7A3700DC1F55041AE47E1AA9B15554114AE47B1BEF550419A99998999155541B81E85ABB5F55041CDCCCC1C90155541A4703D8AB4F55041713D0A779115554148E17A74B3F55041295C8F1295155541E17A141EB3F55041AE47E1BA971555413D0AD713B3F55041D7A3700D9A1555417B14AE27B3F5504185EB51789D155541AE47E13AB6F550413D0AD7B3A0155541CDCCCC2CB9F55041E17A142EA3155541AE47E11ABDF550410AD7A330A6155541A4703DEABFF55041333333E3A7155541333333A3C3F5504152B81E15A9155541B81E856BCAF550411F85EB91AA1555413D0AD7B3D1F55041B81E85ABAB155541C3F5284CDEF5504148E17AF4B0155541B81E85CBE1F550415C8FC225B2155541D7A3709DE7F55041F6285CFFB31555417B14AE07E7F550418FC2F5D8B2155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630746 - 3488129
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE47B1BEF550419A99998999155541B81E85ABB5F55041CDCCCC1C90155541A4703D8AB4F55041713D0A779115554148E17A74B3F55041295C8F1295155541E17A141EB3F55041AE47E1BA971555413D0AD713B3F55041D7A3700D9A1555417B14AE27B3F5504185EB51789D155541AE47E13AB6F550413D0AD7B3A0155541CDCCCC2CB9F55041E17A142EA3155541AE47E11ABDF550410AD7A330A6155541A4703DEABFF55041333333E3A7155541333333A3C3F5504152B81E15A9155541B81E856BCAF550411F85EB91AA1555413D0AD7B3D1F55041B81E85ABAB155541C3F5284CDEF5504148E17AF4B0155541B81E85CBE1F550415C8FC225B2155541D7A3709DE7F55041F6285CFFB31555417B14AE07E7F550418FC2F5D8B2155541B81E85CBE9F55041C3F5287CAB155541D7A370FDE5F55041295C8FC2A9155541713D0A57E2F55041A4703D3AA7155541CDCCCCECDFF550419A999939A415554166666696DCF55041EC51B8FEA1155541000000B0D5F55041AE47E18AA015554148E17AF4D0F550417B14AE579F155541C3F5281CCCF5504185EB51C89E155541A4703D9AC9F550419A9999B99E1555415C8FC255C7F55041A4703D7A9E15554114AE4781C3F55041AE47E12A9D155541D7A3700DC1F55041AE47E1AA9B15554114AE47B1BEF550419A99998999155541
+</a>
+
+<b>
+010600000001000000010300000001000000200000007B14AE07E7F550418FC2F5D8B2155541B81E85CBE9F55041C3F5287CAB1555412A5495D1E6F550411D40BC22AA155541C40E36D3E0F550414B4B5A31A9155541711D4CBCDEF55041B334E933A71555412B5B4D27DBF55041896D3851A4155541E6984E92D7F5504121E731A0A2155541DEC90667D2F550413D4EA3B59F155541A1C9C44BCEF55041DA5400099F155541C3F5281CCCF5504185EB51C89E155541A4703D9AC9F550419A9999B99E1555415C8FC255C7F55041A4703D7A9E15554114AE4781C3F55041AE47E12A9D155541D7A3700DC1F55041AE47E1AA9B15554114AE47B1BEF550419A99998999155541B81E85ABB5F55041CDCCCC1C90155541A4703D8AB4F55041713D0A779115554148E17A74B3F55041295C8F1295155541E17A141EB3F55041AE47E1BA971555413D0AD713B3F55041D7A3700D9A1555417B14AE27B3F5504185EB51789D155541AE47E13AB6F550413D0AD7B3A0155541CDCCCC2CB9F55041E17A142EA3155541AE47E11ABDF550410AD7A330A6155541A4703DEABFF55041333333E3A7155541333333A3C3F5504152B81E15A9155541B81E856BCAF550411F85EB91AA1555413D0AD7B3D1F55041B81E85ABAB155541C3F5284CDEF5504148E17AF4B0155541B81E85CBE1F550415C8FC225B2155541D7A3709DE7F55041F6285CFFB31555417B14AE07E7F550418FC2F5D8B2155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890061 - 1537851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC25522005141A4703DBACBDE5441333333A324005141295C8FE2CADE5441333333A3250051419A999929CCDE5441C3F528EC2B0051418FC2F598C9DE54415C8FC2D5300051411F85EB11C8DE54413D0AD77333005141000000A0C7DE544148E17AF43200514185EB5188C6DE5441E17A144E35005141AE47E1CAC5DE544114AE47813E005141B81E859BC2DE544185EB51283F00514133333333C1DE5441AE47E1AA3E0051411F85EB61C0DE5441E17A147E3E005141713D0A17C0DE5441EC51B8BE3D0051417B14AED7BEDE5441A4703DAA3C005141A4703D0ABDDE5441D7A370CD3B005141A4703D9ABBDE5441666666D63A005141EC51B8FEB9DE544148E17A043A005141000000A0B8DE544114AE47913900514152B81ED5B8DE5441E17A146E1E0051410AD7A370C2DE5441333333131F005141C3F528CCC3DE5441A4703D0A20005141EC51B83EC5DE5441C3F5285C2100514152B81EF5C4DE5441295C8F422200514152B81E15C6DE544114AE47212200514152B81E25C7DE544152B81E9521005141F6285C3FC8DE54413333334321005141EC51B83ECADE54415C8FC25522005141A4703DBACBDE5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000BA7D074325005141E7F17A1CC5DE54413427408B2D0051417BE64241C2DE544134A1799733005141C5D54F2BC0DE5441A4703DAA3C005141A4703D0ABDDE5441D7A370CD3B005141A4703D9ABBDE5441666666D63A005141EC51B8FEB9DE5441276C120A3A00514130B957A9B8DE544114AE47913900514152B81ED5B8DE544155C0AFEE33005141B289D7D3BADE5441194574E12F00514130C10D43BCDE5441D20EA8BC2B005141CFBD9BBABDDE5441ACE4E5B428005141F61C40CDBEDE5441E343FB671E005141FF17C172C2DE5441A4703D0A20005141EC51B83EC5DE5441C3F5285C2100514152B81EF5C4DE544129DAFF4522005141578D5022C6DE5441BA7D074325005141E7F17A1CC5DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890061 - 3808699
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC25522005141A4703DBACBDE5441333333A324005141295C8FE2CADE5441333333A3250051419A999929CCDE5441C3F528EC2B0051418FC2F598C9DE54415C8FC2D5300051411F85EB11C8DE54413D0AD77333005141000000A0C7DE544148E17AF43200514185EB5188C6DE5441E17A144E35005141AE47E1CAC5DE544114AE47813E005141B81E859BC2DE544185EB51283F00514133333333C1DE5441AE47E1AA3E0051411F85EB61C0DE5441E17A147E3E005141713D0A17C0DE5441EC51B8BE3D0051417B14AED7BEDE5441A4703DAA3C005141A4703D0ABDDE5441D7A370CD3B005141A4703D9ABBDE5441666666D63A005141EC51B8FEB9DE544148E17A043A005141000000A0B8DE544114AE47913900514152B81ED5B8DE5441E17A146E1E0051410AD7A370C2DE5441333333131F005141C3F528CCC3DE5441A4703D0A20005141EC51B83EC5DE5441C3F5285C2100514152B81EF5C4DE5441295C8F422200514152B81E15C6DE544114AE47212200514152B81E25C7DE544152B81E9521005141F6285C3FC8DE54413333334321005141EC51B83ECADE54415C8FC25522005141A4703DBACBDE5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000BA7D074325005141E7F17A1CC5DE54413427408B2D0051417BE64241C2DE544134A1799733005141C5D54F2BC0DE5441A4703DAA3C005141A4703D0ABDDE5441D7A370CD3B005141A4703D9ABBDE5441666666D63A005141EC51B8FEB9DE5441276C120A3A00514130B957A9B8DE544114AE47913900514152B81ED5B8DE544155C0AFEE33005141B289D7D3BADE5441194574E12F00514130C10D43BCDE5441D20EA8BC2B005141CFBD9BBABDDE5441ACE4E5B428005141F61C40CDBEDE5441E343FB671E005141FF17C172C2DE5441A4703D0A20005141EC51B83EC5DE5441C3F5285C2100514152B81EF5C4DE544129DAFF4522005141578D5022C6DE5441BA7D074325005141E7F17A1CC5DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>592713 - 228128
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A370DD64AC51419A99994939965441EC51B8FE61AC5141F6285C5F3A965441D7A370FD62AC5141000000403D965441EC51B85E62AC51415C8FC2D53F965441D7A3707D5DAC5141E17A149E41965441295C8F325DAC5141EC51B8FE44965441C3F528EC5FAC5141333333A3489654418FC2F5E862AC5141CDCCCC6C51965441E17A146E63AC5141CDCCCC4C629654413333337368AC5141F6285C0F5E9654417B14AE876CAC5141A4703D1A5B965441EC51B8FE70AC5141EC51B82E5896544114AE47E175AC5141CDCCCC0C569654417B14AE777AAC514152B81E6554965441B81E857B7FAC5141F6285C1F5396544114AE473187AC51415C8FC20552965441A4703D9A84AC514114AE4791409654419A9999D981AC514152B81E052E965441000000207DAC51415C8FC2652E96544185EB51B875AC51418FC2F54832965441D7A370CD70AC5141A4703D2A359654413D0AD7936BAC514114AE475137965441D7A370DD64AC51419A99994939965441
+</a>
+
+<b>
+010600000001000000010300000001000000260000009F4B139A84AC514122B12B9040965441288C67E182AC5141F0CBBEF6349654415CD866C07FAC51415AC8AD8F36965441FEDCA7B87EAC5141B17FC5113A96544179C006467DAC5141ECD914B33C9654416040AD517BAC5141CADE33E53E9654413753A1AD79AC51414FFBD457409654414987A2C577AC514126EDDD9241965441D431E10876AC51419F89B65E42965441E1F82F7174AC514106B94B2D42965441D9863CF46FAC5141B4C2F8434596544177C459D56FAC51415D39580A489654417FF85AED6DAC5141EED5C1234A965441E76E767D6BAC514173F262964B9654416519247368AC5141D85AA9FC4C96544150067D2E66AC5141058FCCAF4D9654413D739E9064AC51414C8ACF184E96544172DBC25B63AC514131C3EF624E965441E264F4E261AC51412669C25C4E965441CB5DF6E862AC51413E00CC6C5196544136C3156E63AC514179B7CB4C6296544105015D7C63AC5141D26BBC40629654417A8C70A367AC5141FABFD6BE5E965441FABA69A467AC5141254904BE5E9654412ED1327368AC5141AC3C5C0F5E9654410FBAE31E69AC5141DFF6E7925D9654417B14AE876CAC5141A4703D1A5B965441FBC8F10370AC51418794B8D258965441477EB7FE70AC51415590B82E58965441601D47E175AC5141B5E7CB0C569654414202AD777AAC514185B31D655496544153EC857B7FAC5141462F5B1F53965441ACC5A71A84AC514187548F765296544114AE473187AC51415C8FC20552965441701AB46085AC51413F34CDCA45965441DAD2AD6085AC51411EE2A2CA459654412FAD3C9A84AC5141A94B4691409654419F4B139A84AC514122B12B9040965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>593161 - 5243158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000290000009A999979A5895141B81E85FBEE995441CDCCCCBCA98951413D0AD743F6995441E17A148EB4895141B81E856BEA995441AE47E1CAB5895141AE47E15AE8995441B81E85BBB5895141AE47E11AE799544100000030B589514148E17A64E5995441E17A14AEB5895141E17A14BEE3995441CDCCCC3CB7895141CDCCCCACE2995441E17A142EB9895141D7A3705DE2995441EC51B8CEBA8951413D0AD7A3E1995441A4703D9ABC8951410AD7A330E19954415C8FC2D5BE89514185EB5128E0995441F6285C2FC18951419A999949DF99544152B81E25C2895141000000A0DE9954417B14AE67C2895141AE47E1DADD995441333333A3C1895141295C8F12DC99544148E17A74C189514114AE4751DA9954419A999929C2895141A4703D1AD999544152B81EB5C489514100000080D699544152B81EA5C5895141A4703DEAD5995441EC51B80ECD89514133333373C8995441666666C6D1895141000000A0BF9954415C8FC275D889514185EB5178B4995441666666F6C989514133333373AE995441AE47E1CAC2895141713D0AF7A6995441E17A14FEBF895141D7A3709DA19954415C8FC265C0895141D7A3703DA5995441333333F3C0895141E17A14BEA89954415C8FC285C4895141C3F528ACB09954415C8FC2D5C7895141295C8FD2B6995441A4703DEAC8895141F6285C0FBA99544114AE4741C9895141713D0A67BC995441295C8FE2C88951415C8FC255C2995441D7A370BDC789514100000080C5995441A4703D3AC4895141AE47E19AC999544166666606BF895141C3F5287CCF9954415C8FC265B98951418FC2F5D8D5995441F6285C0FB0895141295C8FB2E0995441CDCCCC3CA68951410AD7A390EB9954415C8FC275A58951417B14AE87ED9954419A999979A5895141B81E85FBEE995441
+</a>
+
+<b>
+01060000000100000001030000000100000045000000689C8A08A7895141102C3EB2EA995441D4844B91AC8951419463872AF3995441E17A148EB4895141B81E856BEA995441AE47E1CAB5895141AE47E15AE8995441B81E85BBB5895141AE47E11AE799544100000030B589514148E17A64E5995441E17A14AEB5895141E17A14BEE3995441CDCCCC3CB7895141CDCCCCACE2995441E17A142EB9895141D7A3705DE2995441EC51B8CEBA8951413D0AD7A3E1995441A4703D9ABC8951410AD7A330E19954415C8FC2D5BE89514185EB5128E0995441F6285C2FC18951419A999949DF99544152B81E25C2895141000000A0DE9954417B14AE67C2895141AE47E1DADD995441333333A3C1895141295C8F12DC99544148E17A74C189514114AE4751DA9954419A999929C2895141A4703D1AD999544152B81EB5C489514100000080D699544152B81EA5C5895141A4703DEAD5995441EC51B80ECD89514133333373C8995441666666C6D1895141000000A0BF995441C7414FADD3895141CE133408BC995441C7414FADD38951415B61BACBB9995441D8E56586D2895141BAD4AF08B8995441C438455BD089514100DCB0EAB4995441B27067D9CD8951412324DE9CB29954416A21D8A5C989514181057005AF99544132E4FB76C2895141ABB22F91A799544181D1C28FC08951418F25B347A69954417D7736CAC0895141BE323FBAA7995441333333F3C0895141E17A14BEA89954415BFE704CC28951412B8F6CBCAB9954414EE9F2A1C38951412FD97AB2AE9954415C8FC285C4895141C3F528ACB09954413B5941E7C6895141934FC017B5995441D8D705DCC7895141867F55E5B69954417D6EB562C889514119731479B8995441A4703DEAC8895141F6285C0FBA99544114AE4741C9895141713D0A67BC9954411FEF092DC9895141DC3B95ABBD99544152E60318C9895141099CABFCBE9954419D2AFC01C989514163DFE55DC0995441C11DF3F6C8895141FD1DD60EC1995441295C8FE2C88951415C8FC255C29954418AE80874C88951415FDC4587C3995441D7A370BDC789514100000080C5995441FA4B8693C5895141D8065A07C899544113A8A254C4895141EB3B087CC9995441F1723882BF8951416B0137F0CE99544166666606BF895141C3F5287CCF9954415A6905D2BE895141F91A81B7CF995441B69DA584BD895141701B3631D1995441524B2597BC89514141CA4B3ED2995441F283D0B0B98951414C145887D5995441C9751153B5895141145F8C94DA995441847FDC4CB389514147ECB1EEDC9954416E19134BB089514117392C6DE09954416D2F2787AB895141711133B6E5995441407BAA01AB895141DC59E349E699544194D50189AA895141153162CFE6995441C78B1D2CAA8951413C6D2836E7995441E9AFE36CA98951417168BA09E8995441CBF0CC2CA989514156A4A250E8995441AD496B9FA88951411CE10EEDE899544124FB9871A88951419427C11FE9995441D733FCFEA789514191738F9EE9995441012CF63AA789514187447077EA995441689C8A08A7895141102C3EB2EA995441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>593614 - 3004331
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1FABC8A5141713D0A977096544114AE47E1B98A514148E17AC47296544185EB5198B58A5141666666C6769654415C8FC255B48A51413D0AD7037896544166666686B48A5141CDCCCC3C7A9654415C8FC2B5B38A514185EB51287D9654419A9999B9C38A514148E17A947A9654415C8FC2F5C58A51415C8FC2E58D965441CDCCCCECD88A514152B81ED58C9654410AD7A380DB8A51418FC2F5389496544114AE4751DE8A51415C8FC2059296544185EB51A8E18A5141713D0AC78E965441F6285CDFE68A5141EC51B83E8896544185EB5188EE8A5141295C8F0281965441A4703D3AF18A5141C3F5289C7E965441D7A3707DF08A5141E17A143E78965441295C8FD2EE8A5141B81E858B78965441C3F528ACEB8A514148E17A5479965441333333F3E68A5141B81E85CB7C9654411F85EB71DE8A51411F85EBE183965441B81E853BDF8A5141AE47E19A889654415C8FC205CC8A5141000000208B96544133333303C98A514152B81E25759654415C8FC235D08A5141000000E06996544100000010C68A5141333333536C96544148E17A64C38A5141E17A145E6D96544114AE47C1C08A514185EB51886E965441AE47E1FABC8A5141713D0A9770965441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000013E2FCB2BA8A514197465B087C9654419B330BC3B38A5141CBC5F12E7D965441F3EC2BD9B58A5141516CB2E088965441B6AAB112B78A5141F6E709C5909654412559874EBA8A5141EE716CDF929654415E12DBCBC38A5141A53DA76097965441B3C9BD6EC88A51419D082DCA9896544143625937CC8A514127B4071C9996544194082909D58A5141FD3C4323979654417E3214F7D98A5141C9FE50319596544151885D69DB8A5141AEC1965194965441247995EAD88A51412F943ED58C9654418592F8D2D48A5141F20313108D965441905455F3C58A5141F59108148E9654411DB8BA75C58A5141E42C2B93899654419A9999B9C38A514148E17A947A96544113E2FCB2BA8A514197465B087C965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>593614 - 3819986
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1FABC8A5141713D0A977096544114AE47E1B98A514148E17AC47296544185EB5198B58A5141666666C6769654415C8FC255B48A51413D0AD7037896544166666686B48A5141CDCCCC3C7A9654415C8FC2B5B38A514185EB51287D9654419A9999B9C38A514148E17A947A9654415C8FC2F5C58A51415C8FC2E58D965441CDCCCCECD88A514152B81ED58C9654410AD7A380DB8A51418FC2F5389496544114AE4751DE8A51415C8FC2059296544185EB51A8E18A5141713D0AC78E965441F6285CDFE68A5141EC51B83E8896544185EB5188EE8A5141295C8F0281965441A4703D3AF18A5141C3F5289C7E965441D7A3707DF08A5141E17A143E78965441295C8FD2EE8A5141B81E858B78965441C3F528ACEB8A514148E17A5479965441333333F3E68A5141B81E85CB7C9654411F85EB71DE8A51411F85EBE183965441B81E853BDF8A5141AE47E19A889654415C8FC205CC8A5141000000208B96544133333303C98A514152B81E25759654415C8FC235D08A5141000000E06996544100000010C68A5141333333536C96544148E17A64C38A5141E17A145E6D96544114AE47C1C08A514185EB51886E965441AE47E1FABC8A5141713D0A9770965441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000013E2FCB2BA8A514197465B087C9654419B330BC3B38A5141CBC5F12E7D965441F3EC2BD9B58A5141516CB2E088965441B6AAB112B78A5141F6E709C5909654412559874EBA8A5141EE716CDF929654415E12DBCBC38A5141A53DA76097965441B3C9BD6EC88A51419D082DCA9896544143625937CC8A514127B4071C9996544194082909D58A5141FD3C4323979654417E3214F7D98A5141C9FE50319596544151885D69DB8A5141AEC1965194965441247995EAD88A51412F943ED58C9654418592F8D2D48A5141F20313108D965441905455F3C58A5141F59108148E9654411DB8BA75C58A5141E42C2B93899654419A9999B9C38A514148E17A947A96544113E2FCB2BA8A514197465B087C965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>638561 - 56464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000B000000AE47E1FAABE55041000000B06A2C55411F85EB21A8E5504185EB51D8672C5541CDCCCCBC98E55041AE47E15A7C2C554152B81EF599E550413D0AD7737D2C55419A9999699CE5504148E17AC47F2C5541333333139EE55041AE47E11A812C5541EC51B8EEA6E55041C3F5283C882C55411F85EB31AEE55041B81E854B7E2C5541D7A3706DB6E550418FC2F538722C55411F85EB01ADE55041E17A146E6B2C5541AE47E1FAABE55041000000B06A2C55410B000000E17A143EAEE5504100000080752C55415C8FC265ADE550417B14AE47782C55413D0AD7D3AAE5504114AE47917B2C5541CDCCCC4CA8E550415C8FC2057F2C5541C3F5283CA6E5504185EB51B8812C5541F6285CAFA5E55041CDCCCC4C812C5541A4703D9AA5E5504185EB51E87F2C5541333333F3A6E55041000000B07E2C55417B14AE77A8E55041000000E07C2C55418FC2F578ACE55041333333A3762C5541E17A143EAEE5504100000080752C5541
+</a>
+
+<b>
+0106000000010000000103000000020000000E000000FA1D598C9FE550418C680948732C5541B2DDB1C598E55041C7B4E1627C2C554152B81EF599E550413D0AD7737D2C5541793D99C29BE550415C8900277F2C554140CB48209EE55041D13CE307812C55412696BBDBA2E55041EBD096F4842C55418B6DD5F7A6E55041BBB1AF2F882C5541B3E50B2EAEE550413654D2507E2C554147159166B6E55041340D0A43722C554143CDB4DFAFE55041575F317F6D2C55411F85EB01ADE55041E17A146E6B2C5541AE47E1FAABE55041000000B06A2C55416EFA3325A8E55041E5D7BEDA672C5541FA1D598C9FE550418C680948732C55410B000000E17A143EAEE5504100000080752C55415C8FC265ADE550417B14AE47782C55413D0AD7D3AAE5504114AE47917B2C5541CDCCCC4CA8E550415C8FC2057F2C5541C3F5283CA6E5504185EB51B8812C5541F6285CAFA5E55041CDCCCC4C812C5541A4703D9AA5E5504185EB51E87F2C5541333333F3A6E55041000000B07E2C55417B14AE77A8E55041000000E07C2C55418FC2F578ACE55041333333A3762C5541E17A143EAEE5504100000080752C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>595692 - 3121495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCC9C944F5141AE47E14AFD7B5441C3F5286C934F51417B14AEE7087C544166666656AD4F514166666646097C5441713D0A47B34F51418FC2F558E97B54418FC2F5B8B34F514114AE47D1E47B54410AD7A3B0964F5141713D0AF7E47B5441CDCCCC3C964F51418FC2F568ED7B5441CDCCCC9C944F5141AE47E14AFD7B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D4909A48964F5141BA36001EED7B544104443E8D964F51415140A68BE77B54415C7460AD964F51416F06F133E57B5441432B3494964F514146CA5F63E37B54410265DB43964F514143F65D6CE37B544128845E72944F51411A8F77A0E37B5441D698A873924F514146ECA0D9E37B544186D5A949904F51414384A217E47B5441525E99B78D4F514144553865E47B54413B7CC1B38D4F514189716320E57B5441A6CB9EA38D4F5141E5083032E87B5441A1018AA28D4F5141BA36001EED7B5441D4909A48964F5141BA36001EED7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>595692 - 3508837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCC9C944F5141AE47E14AFD7B5441C3F5286C934F51417B14AEE7087C544166666656AD4F514166666646097C5441713D0A47B34F51418FC2F558E97B54418FC2F5B8B34F514114AE47D1E47B54410AD7A3B0964F5141713D0AF7E47B5441CDCCCC3C964F51418FC2F568ED7B5441CDCCCC9C944F5141AE47E14AFD7B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D4909A48964F5141BA36001EED7B544104443E8D964F51415140A68BE77B54415C7460AD964F51416F06F133E57B5441432B3494964F514146CA5F63E37B54410265DB43964F514143F65D6CE37B544128845E72944F51411A8F77A0E37B5441D698A873924F514146ECA0D9E37B544186D5A949904F51414384A217E47B5441525E99B78D4F514144553865E47B54413B7CC1B38D4F514189716320E57B5441A6CB9EA38D4F5141E5083032E87B5441A1018AA28D4F5141BA36001EED7B5441D4909A48964F5141BA36001EED7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596208 - 3077230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000000AD7A3604B4F5141D7A370DD767C544152B81EA54E4F514148E17A14767C544152B81E75504F51418FC2F518727C544185EB5138514F51410AD7A3006F7C5441AE47E16A514F51413D0AD7436B7C544152B81EE5504F514152B81ED5667C5441E17A141E4F4F514148E17A745C7C5441CDCCCC5C4D4F5141C3F5284C517C54413D0AD7634C4F51417B14AE67487C5441CDCCCCBC4B4F51417B14AE873C7C5441EC51B8DE3A4F51413D0AD7433B7C5441D7A3706D3B4F5141666666D6437C544114AE47E13B4F514185EB5198467C5441D7A3706D3C4F51415C8FC2B54C7C5441333333D33C4F5141CDCCCCFC517C54413D0AD7C33D4F51413D0AD793577C5441295C8F323E4F514133333313597C54417B14AE873E4F5141C3F5280C5C7C5441333333B33E4F51411F85EB915D7C54418FC2F5383F4F5141B81E853B627C5441713D0A87404F5141CDCCCC2C6E7C5441E17A148E404F514166666676797C54413D0AD703464F5141713D0A27787C54410AD7A3604B4F5141D7A370DD767C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000076DD3892404F5141671E69318A7C5441AFE7F158414F514153E5D29F897C544114F91FA1424F5141A82338F6867C544187E62111474F51414EA90DD9807C5441153EF09D4A4F51411B7E8E367C7C5441A495BE2A4E4F5141C8F14DAD777C544156EDD6A24E4F51411C220715767C5441050D17634C4F51413245599F767C5441ADD482214A4F5141278A0F2A777C5441AA59665C454F514112A0364F787C5441A00E038E404F5141891A775A797C54415259A78E404F5141E2AF9BEE7A7C5441ABA59691404F5141DF584886827C544176DD3892404F5141671E69318A7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596208 - 3384068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000000AD7A3604B4F5141D7A370DD767C544152B81EA54E4F514148E17A14767C544152B81E75504F51418FC2F518727C544185EB5138514F51410AD7A3006F7C5441AE47E16A514F51413D0AD7436B7C544152B81EE5504F514152B81ED5667C5441E17A141E4F4F514148E17A745C7C5441CDCCCC5C4D4F5141C3F5284C517C54413D0AD7634C4F51417B14AE67487C5441CDCCCCBC4B4F51417B14AE873C7C5441EC51B8DE3A4F51413D0AD7433B7C5441D7A3706D3B4F5141666666D6437C544114AE47E13B4F514185EB5198467C5441D7A3706D3C4F51415C8FC2B54C7C5441333333D33C4F5141CDCCCCFC517C54413D0AD7C33D4F51413D0AD793577C5441295C8F323E4F514133333313597C54417B14AE873E4F5141C3F5280C5C7C5441333333B33E4F51411F85EB915D7C54418FC2F5383F4F5141B81E853B627C5441713D0A87404F5141CDCCCC2C6E7C5441E17A148E404F514166666676797C54413D0AD703464F5141713D0A27787C54410AD7A3604B4F5141D7A370DD767C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000076DD3892404F5141671E69318A7C5441AFE7F158414F514153E5D29F897C544114F91FA1424F5141A82338F6867C544187E62111474F51414EA90DD9807C5441153EF09D4A4F51411B7E8E367C7C5441A495BE2A4E4F5141C8F14DAD777C544156EDD6A24E4F51411C220715767C5441050D17634C4F51413245599F767C5441ADD482214A4F5141278A0F2A777C5441AA59665C454F514112A0364F787C5441A00E038E404F5141891A775A797C54415259A78E404F5141E2AF9BEE7A7C5441ABA59691404F5141DF584886827C544176DD3892404F5141671E69318A7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597055 - 1770378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000713D0A6758D05041295C8FD2027D5441000000A058D0504114AE4781027D5441D7A370DD5AD05041AE47E1DA037D54411F85EBB15BD0504148E17A14037D5441CDCCCCEC91D050417B14AE77D67C544114AE476189D05041295C8F62D17C54415C8FC21550D05041D7A3707DFD7C5441713D0A6758D05041295C8FD2027D5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002CF06AC55BD0504114F78CE6007D5441AE6EAE2359D05041363CA4D0027D54418FC2F5A861D050413D0AD713087D54419A9999199BD05041C3F528DCDB7C5441CDCCCCEC91D050417B14AE77D67C54412CF06AC55BD0504114F78CE6007D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597055 - 3544560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000713D0A6758D05041295C8FD2027D5441000000A058D0504114AE4781027D5441D7A370DD5AD05041AE47E1DA037D54411F85EBB15BD0504148E17A14037D5441CDCCCCEC91D050417B14AE77D67C544114AE476189D05041295C8F62D17C54415C8FC21550D05041D7A3707DFD7C5441713D0A6758D05041295C8FD2027D5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002CF06AC55BD0504114F78CE6007D5441AE6EAE2359D05041363CA4D0027D54418FC2F5A861D050413D0AD713087D54419A9999199BD05041C3F528DCDB7C5441CDCCCCEC91D050417B14AE77D67C54412CF06AC55BD0504114F78CE6007D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976208 - 80426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000018000000C22F8F86179050410D8EFBCE0512554152B81EF5159050413D0AD78304125541EC51B8AE1390504100000030031255418FC2F5C8119050415C8FC25502125541666666460E9050410AD7A3A00012554114AE47C10C905041E17A14DEFF115541E17A149E0B90504133333303FF115541B81E85DB0A9050417B14AEC7FD115541D7A370DDFF8F5041A4703D7AEA1155413FE92B84F68F5041DB559FA3F41155417B14AED7F68F50417B14AE47F5115541295C8F52F78F504152B81EA5F6115541F6285C2FF78F50418FC2F548F8115541AE47E12AEB8F50413333334308125541C3F5287CF08F50419A9999890B125541D7A3700DF18F5041E17A140E0D12554152B81EF5F08F504114AE47310E125541B81E854BF08F5041E17A14CE0F1255413D0AD763F08F504114AE47C110125541713D0A87F18F5041AE47E16A11125541666666D603905041F6285CCF1A12554148E17AD405905041AE47E1DA1B125541AA33D42009905041C7DF75F91C125541C22F8F86179050410D8EFBCE05125541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000F9A4C45C01905041364B5A1BED115541515907A2FF8F50412EEF39BBEA115541D31E6E5DF38F504105E48533F8115541F362C54CE88F504181F4074104125541A984C0DFE18F50411491C9A10B12554173F037D9E18F50419978728C0C12554113CACEAC06905041E258755D1E125541C99F1D9E089050419F0434C91D1255414C64112009905041C66C31F81C1255417F5A869007905041B6DE97711C125541BF2A4CFFFF8F50413B900ED71812554169F2BF36F78F5041D8F29D55141255410ED09BEAF28F504194C3462112125541D4A66C7BF08F5041591704CF1012554171035A4EF08F50411B6A65EA0F125541F8A700FEF08F50417449ECC60D1255413BCA23FDF08F5041033E7EE20C12554192798B90F08F50416BF41BC00B1255418AF834E1EF8F504108722A2A0B125541D45ECFAEEE8F50416570756D0A12554105001353ED8F5041C8994A970912554188BCC097EB8F504125FA408608125541F57C0949EB8F50417C081B1B08125541BA873C32F78F504141DFA626F8115541F9A4C45C01905041364B5A1BED115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597735 - 976502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441713D0A177D295141666666E6B333544148E17A14702951419A999919BB335441295C8FF26D295141EC51B8CEBA335441295C8F626A2951417B14AE27C3335441EC51B88E6729514114AE4731C9335441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441F6B1749359295141CEEFBB4AF8335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>598186 - 2956201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002500000048E17AE4D4715141295C8F629FB25441AE47E11AD77151413D0AD713A5B254415C8FC2E5D871514114AE4711ABB25441A4703D5ADC715141CDCCCC5CB3B2544166666686DE715141A4703D2AB9B2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B25441EC51B8FEED715141D7A3702DC2B2544166666636EC7151410AD7A3D0BEB25441295C8FC2EA715141A4703D5ABBB254411F85EB91E8715141C3F528ACB5B254417B14AE67E6715141000000B0AFB254411F85EB71E471514152B81EF5A9B2544148E17A54E27151415C8FC295A4B254418FC2F5E8DF71514152B81E159FB254410AD7A320DE7151411F85EBE19AB25441A4703D6ADD7151413333333399B254417B14AEC7DC7151411F85EB4198B25441333333E3DB7151411F85EB9197B254419A999989DA715141295C8F0297B2544148E17A54D7715141F6285C3F96B25441C3F528FCD4715141666666B695B25441B81E857BD3715141EC51B86E95B254418FC2F528D271514148E17A5495B254419A999979D071514148E17A3495B2544114AE4791CE715141E17A140E95B254418FC2F5E8CC71514148E17AF494B25441E17A144ECB715141E17A14CE94B25441295C8FB2C9715141D7A3708D94B2544166666656C7715141713D0A2794B2544114AE4721C5715141000000C093B2544166666636C5715141EC51B83E94B25441713D0A07C871514152B81EA5A2B25441C3F5281CCC715141C3F5289CA1B2544148E17AE4D4715141295C8F629FB25441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000054478CECE7715141C1F8FFE2B3B2544151FD8D20E6715141713411E0AEB25441AB1DD1B2DC7151416EF26049B4B25441A9DDD5A3DD715141FA9E1CCDB6B254417B9EE236DE715141D977DD55B8B2544196F1992ADF715141D33E46A0BAB2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B2544102FE0D70EE71514158AF1620C3B2544140BF69FEED7151419D6BDC2CC2B25441AB61116BEC7151416913FE33BFB2544162301435EC715141029B7DCDBEB254414D4D84E8EB715141B6FBFA16BEB25441C5DF3D02EB71514127B70BF2BBB2544173E1042AEA715141DDD49BCEB9B25441BC6DCCB7E8715141E2EE660EB6B2544154478CECE7715141C1F8FFE2B3B25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>598186 - 3610660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002500000048E17AE4D4715141295C8F629FB25441AE47E11AD77151413D0AD713A5B254415C8FC2E5D871514114AE4711ABB25441A4703D5ADC715141CDCCCC5CB3B2544166666686DE715141A4703D2AB9B2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B25441EC51B8FEED715141D7A3702DC2B2544166666636EC7151410AD7A3D0BEB25441295C8FC2EA715141A4703D5ABBB254411F85EB91E8715141C3F528ACB5B254417B14AE67E6715141000000B0AFB254411F85EB71E471514152B81EF5A9B2544148E17A54E27151415C8FC295A4B254418FC2F5E8DF71514152B81E159FB254410AD7A320DE7151411F85EBE19AB25441A4703D6ADD7151413333333399B254417B14AEC7DC7151411F85EB4198B25441333333E3DB7151411F85EB9197B254419A999989DA715141295C8F0297B2544148E17A54D7715141F6285C3F96B25441C3F528FCD4715141666666B695B25441B81E857BD3715141EC51B86E95B254418FC2F528D271514148E17A5495B254419A999979D071514148E17A3495B2544114AE4791CE715141E17A140E95B254418FC2F5E8CC71514148E17AF494B25441E17A144ECB715141E17A14CE94B25441295C8FB2C9715141D7A3708D94B2544166666656C7715141713D0A2794B2544114AE4721C5715141000000C093B2544166666636C5715141EC51B83E94B25441713D0A07C871514152B81EA5A2B25441C3F5281CCC715141C3F5289CA1B2544148E17AE4D4715141295C8F629FB25441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000054478CECE7715141C1F8FFE2B3B2544151FD8D20E6715141713411E0AEB25441AB1DD1B2DC7151416EF26049B4B25441A9DDD5A3DD715141FA9E1CCDB6B254417B9EE236DE715141D977DD55B8B2544196F1992ADF715141D33E46A0BAB2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B2544102FE0D70EE71514158AF1620C3B2544140BF69FEED7151419D6BDC2CC2B25441AB61116BEC7151416913FE33BFB2544162301435EC715141029B7DCDBEB254414D4D84E8EB715141B6FBFA16BEB25441C5DF3D02EB71514127B70BF2BBB2544173E1042AEA715141DDD49BCEB9B25441BC6DCCB7E8715141E2EE660EB6B2544154478CECE7715141C1F8FFE2B3B25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287655 - 3096463
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001500000094716B9D96A851411B7128CCCAA05441C3F5288C95A85141713D0AF7CBA0544114AE47119FA8514133333383CCA0544148E17A74A6A85141D7A3706DC4A05441713D0A67AAA851417B14AE17C0A054411F85EB41AFA851410AD7A360BAA05441D7A3701DB0A851410AD7A300B9A05441295C8F92A8A8514166666686B8A05441295C8F22A7A85141EC51B8BEB8A05441713D0AA79FA851419A9999E9C0A05441394C8E0F97A851414EDE514FCAA054411F85EB219DA85141AE47E1AAC3A054410AD7A33097A85141E17A14DEBEA05441C3F528DC9EA8514148E17AB4B5A0544152B81E159AA851411F85EBF1B4A0544148E17AF499A8514114AE47B1B5A0544152B81EB590A85141CDCCCC0CB3A05441EC51B80E83A85141295C8FD2C4A0544114AE472186A85141C3F5284CC7A05441295C8FE28BA85141A4703DBAC9A0544194716B9D96A851411B7128CCCAA05441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000188237DA9EA851412E34BA68B6A05441172DC02B98A85141B03FC5CEB4A054417A6394D694A851410792FB22B4A0544152B81EB590A85141CDCCCC0CB3A054413DDD6FC28FA85141CE60DD13B4A05441AE409B578EA8514130CC936FB5A05441AC95854580A85141040B79E1C3A05441361870DD7FA85141D19E24B4C6A05441BF94056F81A85141DBB5902BC7A05441AE47E1DA84A8514114AE4781C8A054411F85EB0189A851418FC2F5D8C9A05441A4703D8A8CA8514133333383CAA05441EF8256F993A85141E511B7CFCBA0544134BDA3159FA8514100A5677CCCA0544188E26321A4A85141D849B7F8C6A054416C3C1C82A4A851417128DD8EC6A05441AF9A81B1A4A85141E633FE5AC6A054419E6FD5EAA9A8514128D3C78AC0A0544181016713AFA85141A8A9E38CBAA05441A222F515B0A85141BAE5FAFBB8A0544160338A0DAEA85141827386E8B8A05441876961A3A8A85141ADAAB49AB8A0544153B60228A7A85141550112D5B8A054417B5E985EA0A85141F5CFDB4EC0A05441414F9ACD9EA851417C1593CAC1A054414925A3859DA85141941C4BCEC0A054419A9571249CA851417DAA8E6EC2A054415A53CF1D97A85141C5BFB679BFA05441CFE771F39EA85141CE923C7EB7A05441188237DA9EA851412E34BA68B6A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287655 - 3440262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001500000094716B9D96A851411B7128CCCAA05441C3F5288C95A85141713D0AF7CBA0544114AE47119FA8514133333383CCA0544148E17A74A6A85141D7A3706DC4A05441713D0A67AAA851417B14AE17C0A054411F85EB41AFA851410AD7A360BAA05441D7A3701DB0A851410AD7A300B9A05441295C8F92A8A8514166666686B8A05441295C8F22A7A85141EC51B8BEB8A05441713D0AA79FA851419A9999E9C0A05441394C8E0F97A851414EDE514FCAA054411F85EB219DA85141AE47E1AAC3A054410AD7A33097A85141E17A14DEBEA05441C3F528DC9EA8514148E17AB4B5A0544152B81E159AA851411F85EBF1B4A0544148E17AF499A8514114AE47B1B5A0544152B81EB590A85141CDCCCC0CB3A05441EC51B80E83A85141295C8FD2C4A0544114AE472186A85141C3F5284CC7A05441295C8FE28BA85141A4703DBAC9A0544194716B9D96A851411B7128CCCAA05441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000188237DA9EA851412E34BA68B6A05441172DC02B98A85141B03FC5CEB4A054417A6394D694A851410792FB22B4A0544152B81EB590A85141CDCCCC0CB3A054413DDD6FC28FA85141CE60DD13B4A05441AE409B578EA8514130CC936FB5A05441AC95854580A85141040B79E1C3A05441361870DD7FA85141D19E24B4C6A05441BF94056F81A85141DBB5902BC7A05441AE47E1DA84A8514114AE4781C8A054411F85EB0189A851418FC2F5D8C9A05441A4703D8A8CA8514133333383CAA05441EF8256F993A85141E511B7CFCBA0544134BDA3159FA8514100A5677CCCA0544188E26321A4A85141D849B7F8C6A054416C3C1C82A4A851417128DD8EC6A05441AF9A81B1A4A85141E633FE5AC6A054419E6FD5EAA9A8514128D3C78AC0A0544181016713AFA85141A8A9E38CBAA05441A222F515B0A85141BAE5FAFBB8A0544160338A0DAEA85141827386E8B8A05441876961A3A8A85141ADAAB49AB8A0544153B60228A7A85141550112D5B8A054417B5E985EA0A85141F5CFDB4EC0A05441414F9ACD9EA851417C1593CAC1A054414925A3859DA85141941C4BCEC0A054419A9571249CA851417DAA8E6EC2A054415A53CF1D97A85141C5BFB679BFA05441CFE771F39EA85141CE923C7EB7A05441188237DA9EA851412E34BA68B6A05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590735 - 590731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000FB6E9BD3E33D5141798F6319384E544112105DC4D03D5141701C93EC604E5441784DD2FFCF3D5141770B2534624E5441FB09AD74E63D5141357A83396B4E54414F2E10F2F83D51419B980A95724E544177C87B9F003E51412C6EF7C7754E5441A361ED71063E51411693C1C9784E544175AC7B500E3E51411F72DF337D4E5441E7B7A03D133E514178B14825804E5441E029E5AF293E51411ED4B52D564E5441B81E854B093E5141B81E853B484E544166666626E93D51413D0AD7633A4E5441FB6E9BD3E33D5141798F6319384E5441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000077C87B9F003E51412C6EF7C7754E54417BBA5914F73D5141B2B6F2D6714E54411226617EF43D51411AB688CF704E5441FB09AD74E63D5141357A83396B4E5441784DD2FFCF3D5141770B2534624E5441BA0D80D5D23D51418B971E2F5C4E5441FBC82870D53D5141001C6DA7564E5441FB6E9BD3E33D5141798F6319384E5441333333D3E03D5141EC51B8CE364E544185EB5198DB3D5141E17A148E344E5441D7A370EDDA3D5141E17A14BE354E54411F85EB61D43D5141B81E851B3D4E54413D0AD7E3D23D5141F6285C7F3F4E5441DB8A473BCF3D5141F55BD00B434E544147B654E3CD3D514130E1E594444E544140C7C29BCC3D5141BBC74080464E5441152E51C9C63D514134B37DB2514E5441A4703DDAC43D51411F85EB31564E5441EC51B8CEC23D5141AE47E17A5B4E544159B078C1C23D5141613D75825C4E5441A4703D8AC33D51417B14AEA75D4E54411F85EB61CC3D5141EC51B8EE624E5441713D0A27CD3D514148E17A64634E544114AE47F1D13D5141E17A14CE654E54413D0AD7D3D53D51417B14AEA7674E5441C3F5288CDC3D5141666666666A4E5441000000D0E63D51417B14AE376E4E544133333363FF3D51419A999999774E54418FC2F5D8053E5141666666C67A4E54417B14AEB7133E51411F85EB21834E5441F6285C4F1C3E51411F85EBF1874E5441333333231E3E514152B81EE5884E544185EB51381F3E5141713D0A27854E544168926FB71F3E514118645F0C844E54419C19D507243E5141D7BE14517E4E544185EB51D8263E514114AE47517A4E54415C8FC2452C3E5141A4703DEA7C4E54411B6EF2862B3E5141B59E6265794E5441295C8F722B3E51418FC2F5A8784E5441666666D62B3E51419A999959764E5441C61BCC962C3E5141D1349925744E544152B81EE52C3E514100000040734E54419A643F2E2F3E5141FAFA1D3C6F4E54413DD8EB02323E51419B7F70246A4E54412CEE281E353E5141AAF02B53634E544185EB5138373E514114AE47015C4E5441E029E5AF293E51411ED4B52D564E544148EE83DB203E514156DCDAAF664E5441E7B7A03D133E514178B14825804E54411F038C020D3E5141E9F38A787C4E5441A361ED71063E51411693C1C9784E544177C87B9F003E51412C6EF7C7754E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976502 - 597735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441F6B1749359295141CEEFBB4AF8335441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441713D0A177D295141666666E6B333544148E17A14702951419A999919BB335441295C8FF26D295141EC51B8CEBA335441295C8F626A2951417B14AE27C3335441EC51B88E6729514114AE4731C9335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976502 - 1125918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441F6B1749359295141CEEFBB4AF8335441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441713D0A177D295141666666E6B333544148E17A14702951419A999919BB335441295C8FF26D295141EC51B8CEBA335441295C8F626A2951417B14AE27C3335441EC51B88E6729514114AE4731C9335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976502 - 3924423
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441F6B1749359295141CEEFBB4AF8335441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441713D0A177D295141666666E6B333544148E17A14702951419A999919BB335441295C8FF26D295141EC51B8CEBA335441295C8F626A2951417B14AE27C3335441EC51B88E6729514114AE4731C9335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915339 - 979852
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000AE47E18A67E15041AE47E17A017254411F85EB6168E1504133333373FB71544148E17AD468E15041F6285C4FF5715441295C8F2252E15041666666E6F5715441EC51B81E40E1504185EB5158F671544152B81E7540E1504148E17A7402725441E17A144E52E150413333330302725441AE47E18A67E15041AE47E17A01725441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000074987DA242E150415A30A96602725441FF0DEE7340E1504186FDFF7F027254414B50B9DD40E15041AADED1281372544195F87B6B64E15041C508E43A12725441D7D7210465E150417981896F0E72544166335EEA65E1504179CE64550A72544100DFAF8B66E1504119FEC62007725441A08ABB7967E1504155F8808C0172544174987DA242E150415A30A96602725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915711 - 3134113
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000011000000D7A3708D71E150419A999909AC6454411F85EB8182E1504166666626A4645441EC51B80E8EE150413D0AD7739164544114AE47C18AE15041E17A14FE92645441D7A3702D88E150411F85EB31946454410000007080E15041E17A14CE97645441295C8F227DE1504185EB51589964544185EB51B87CE150419A99998999645441A4703D0A77E15041000000309C645441295C8F626CE1504185EB5128A1645441F6285C8F55E15041D7A370CDAB645441295C8F6250E15041713D0A37AE645441C3F528AC4BE150418FC2F568B0645441295C8F9247E15041295C8F52B2645441EC51B81E47E150418FC2F588B2645441E17A14EE4EE15041F6285C1FBC645441D7A3708D71E150419A999909AC645441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E15A74E150410AD7A3B0976454418BF437516FE150410C51EE069B645441725D23996CE15041F1B5DC0EA1645441295C8F227DE1504185EB5158996454419B03044180E15041BA6B092394645441981760D57FE15041041C42D792645441AA7D3A3C7EE15041AA9A205E92645441D105F5FF7CE15041842A359B926454413E7D62AC7BE1504132489B5893645441AE47E15A74E150410AD7A3B097645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915711 - 3517523
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000011000000D7A3708D71E150419A999909AC6454411F85EB8182E1504166666626A4645441EC51B80E8EE150413D0AD7739164544114AE47C18AE15041E17A14FE92645441D7A3702D88E150411F85EB31946454410000007080E15041E17A14CE97645441295C8F227DE1504185EB51589964544185EB51B87CE150419A99998999645441A4703D0A77E15041000000309C645441295C8F626CE1504185EB5128A1645441F6285C8F55E15041D7A370CDAB645441295C8F6250E15041713D0A37AE645441C3F528AC4BE150418FC2F568B0645441295C8F9247E15041295C8F52B2645441EC51B81E47E150418FC2F588B2645441E17A14EE4EE15041F6285C1FBC645441D7A3708D71E150419A999909AC645441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E15A74E150410AD7A3B0976454418BF437516FE150410C51EE069B645441725D23996CE15041F1B5DC0EA1645441295C8F227DE1504185EB5158996454419B03044180E15041BA6B092394645441981760D57FE15041041C42D792645441AA7D3A3C7EE15041AA9A205E92645441D105F5FF7CE15041842A359B926454413E7D62AC7BE1504132489B5893645441AE47E15A74E150410AD7A3B097645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956628 - 372571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000040BF2F507EB7504121235CA0D5DF5441F41882AB7CB75041AB939413F8DF54417B14AEB77CB75041713D0A17F8DF54411F85EBE196B75041F6285C7FFFDF5441AE47E19A97B750413D0AD7B3FFDF54411F85EB919FB750417B14AEB701E05441B81E85BBA0B75041EC51B89EFFDF54418D254F0FA0B750410C3CDA99FEDF544152B81E859DB75041CDCCCC7CFDDF5441C3F5285C9BB750411F85EBD1FBDF5441C34CB81297B750418195C33CF4DF544185EB516896B75041F6285C0FF3DF544114AE471196B75041CDCCCCFCEEDF54411F85EB0197B7504100000070EDDF544148E17A5499B750415C8FC2E5ECDF5441EC51B8EE9BB750418FC2F5D8E3DF5441AE47E1BA9CB75041EC51B87EDFDF54417B14AE179DB75041F6285C2FDEDF54418FC2F5587EB750413D0AD7A3D5DF544140BF2F507EB7504121235CA0D5DF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000098EB516896B750412B295C0FF3DF544125814D4796B75041C39FE183F1DF5441FDAD471196B75041EECCCCFCEEDF54413D85FC3096B75041EEA584C8EEDF54411F85EB0197B7504100000070EDDF54411DE17A5499B75041668FC2E5ECDF5441BE51B8EE9BB75041C6C2F5D8E3DF54419647E1BA9CB75041D451B87EDFDF5441649B1C179DB750418EDE6931DEDF5441D3D1B9469CB7504195FB48F5DDDF5441A9AB09C99AB7504111B6338BDDDF5441FF0A603A93B7504104A27F71DBDF54418FC2F5587EB750413D0AD7A3D5DF54419D14AEB77CB750417B3D0A17F8DF54411F85EBE196B75041F6285C7FFFDF5441842CA84D97B750410AD0ED9DFFDF54416E47E19A97B75041FC09D7B3FFDF54412285EB919FB750417614AEB701E054410930CE30A0B75041C3BB009900E05441EDCA719FA0B75041236C60D1FFDF5441AE1E85BBA0B75041FE51B89EFFDF54416F254F0FA0B75041FF3BDA99FEDF54414A9DD3109EB75041A9A70CBAFDDF544152B81E859DB75041CDCCCC7CFDDF5441AD21F05D9BB7504181E84AD3FBDF544186F5285C9BB750411C85EBD1FBDF544198EB516896B750412B295C0FF3DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956628 - 427296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001400000040BF2F507EB7504121235CA0D5DF5441F41882AB7CB75041AB939413F8DF54417B14AEB77CB75041713D0A17F8DF54411F85EBE196B75041F6285C7FFFDF5441AE47E19A97B750413D0AD7B3FFDF54411F85EB919FB750417B14AEB701E05441B81E85BBA0B75041EC51B89EFFDF54418D254F0FA0B750410C3CDA99FEDF544152B81E859DB75041CDCCCC7CFDDF5441C3F5285C9BB750411F85EBD1FBDF5441C34CB81297B750418195C33CF4DF544185EB516896B75041F6285C0FF3DF544114AE471196B75041CDCCCCFCEEDF54411F85EB0197B7504100000070EDDF544148E17A5499B750415C8FC2E5ECDF5441EC51B8EE9BB750418FC2F5D8E3DF5441AE47E1BA9CB75041EC51B87EDFDF54417B14AE179DB75041F6285C2FDEDF54418FC2F5587EB750413D0AD7A3D5DF544140BF2F507EB7504121235CA0D5DF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000008FC2F5587EB750413D0AD7A3D5DF54416A68C2587EB75041B2ABC2A3D5DF54416C3EAEB77CB7504163C90617F8DF54411F85EBE196B75041F6285C7FFFDF5441832CA84D97B750410AD0ED9DFFDF54416E47E19A97B75041FC09D7B3FFDF54412285EB919FB750417614AEB701E05441AE1E85BBA0B75041FE51B89EFFDF54416F254F0FA0B75041FF3BDA99FEDF544172B81E859DB7504103CDCC7CFDDF544186F5285C9BB750411C85EBD1FBDF544185EB516896B75041F6285C0FF3DF5441AF34DD4896B7504112399596F1DF5441FDAD471196B75041EECCCCFCEEDF54414F85FC3096B75041D0A584C8EEDF54411F85EB0197B7504100000070EDDF54411DE17A5499B75041668FC2E5ECDF5441BE51B8EE9BB75041C6C2F5D8E3DF5441D84CA3F09BB75041B0257ECEE3DF5441FA21A9F09BB75041A7505ECEE3DF5441F772E1BA9CB7504180B5B77EDFDF5441649B1C179DB750418EDE6931DEDF5441D3D1B9469CB7504195FB48F5DDDF5441286AD3378EB7504103B2090DDADF54417708273F85B750414765B88ED7DF5441A2DE1A8C7FB75041478934F9D5DF54418FC2F5587EB750413D0AD7A3D5DF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903305 - 582074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000AEB507AA31E350411D9B976958EF5441A2553F8A37E35041D4DF2DFC55EF544138C12F423BE350417285427054EF544123A4214341E3504159FD6EEB51EF5441962D5C2645E3504148C84D2750EF5441BC63944649E350418D943FEA4DEF5441CA3587424AE35041AD25935E4DEF54415C2D14024CE35041E7EF76664CEF5441C12C4F194EE350418899131B4BEF544103BA65FA4EE35041C8B0CF994AEF5441A4C7288F4FE35041DE45823D4AEF54412F97921253E35041A104730F48EF54411B616CC057E350419905842745EF54419A2E5BB757E3504159631A8344EF5441F61C522757E35041D385C93C3AEF54410DCF814650E3504158FE213A3DEF54417D607DDC4AE350413341A2993FEF544144FC2C1948E35041D28AA7CF40EF5441D25E588545E3504158DEDCF041EF5441D274B2D842E35041D1E3F21C43EF5441DB2AF7AB3DE350419D7D966145EF54413C4AB7AA37E350412C00600348EF5441E89FAB3631E35041E0617AD74AEF54413062AF9E2AE35041C4AAFCBE4DEF5441AEB507AA31E350411D9B976958EF5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000003D0AD7134FE35041B81E858B26EF5441CDCCCC8C4EE35041EC51B87E24EF5441CDCCCC7C4DE35041333333831CEF5441B81E85EB4CE35041AE47E13A1BEF5441CDCCCCEC41E35041EC51B83E23EF5441EC51B87E3AE3504114AE47A128EF5441C3F5281C37E35041CDCCCCFC23EF544185EB512832E350413D0AD72322EF5441D7A370ED28E35041295C8FB21EEF5441EC51B81E23E35041EC51B8FE27EF54410AD7A3601FE3504152B81E852DEF5441000000701BE35041E17A146E33EF544114AE47911FE35041CDCCCCBC3BEF54413D0AD7E323E35041295C8F6243EF544114AE473129E350411F85EB914BEF5441CDCCCC9C2AE35041C3F528BC4DEF54415C8FC22557E35041713D0A373AEF5441713D0A0757E35041E17A140E38EF5441C3F528DC56E350417B14AE1735EF5441F6285CBF55E350413D0AD7B32FEF5441666666A654E35041B81E85CB2DEF5441D7A3705D54E35041CDCCCC4C2DEF5441AE47E12A51E35041333333032AEF54411F85EBE14FE350413333336328EF54413D0AD7134FE35041B81E858B26EF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729732 - 197797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000550000002EABC30E94A250414DD8608C4D455541EBFA980D95A25041F29C91434D455541E12DA8D496A25041A71330D54D455541329C86E498A250413B3239E64E455541BEE1588899A250418CA017F6504555415BCD52D298A250412798577452455541C0D5125497A25041702DFF16544555419E7D7DD397A250419091DACB5545554120F65E3E9AA2504123B0E3DC56455541AA4777169DA250414FD569965445554155F1246F9FA25041CB68CE5F5445554163AFD87DA2A25041374AC54E53455541ED00F155A5A2504158A25ACF5245554124F07052A8A250412798577452455541AE41892AABA25041B3DD291853455541EFFDF95FACA2504182D326BD5245554161C46DF0ADA25041C58351BE51455541501E464AAFA2504184C7E0885045554191DAB67FB0A250410A28368B4E455541D7A3705DAEA25041000000504C455541295C8F32B0A2504148E17A544A455541F6285CEFB0A250410AD7A34049455541295C8F22B1A25041E17A14EE484555419A9999C9B1A25041B81E853B4845554185EB51B8B2A2504185EB5198464555410AD7A310B6A25041CDCCCC7C44455541B81E85BBB6A250418FC2F56844455541A4703D6AB7A2504114AE478144455541C3F528ACB8A250419A999989444555419A999919B8A2504185EB51F841455541E17A14FEB6A250417B14AEF74145554185EB5138A9A25041EC51B8EE4145554114AE47A1A8A25041E17A14EE41455541D7A3700DA8A25041CDCCCCDC42455541EC51B85EA5A25041CDCCCCDC424555419A999949A4A250419A99998943455541EC51B86EA0A250419A999909444555410AD7A3009AA250419A9999C94445554148E17AF498A250415C8FC25545455541AE47E13A98A250419A999989454555410000001097A250410AD7A3B045455541D7A3704D96A25041C3F528BC45455541000000B095A250417B14AEC7454555410AD7A30095A250418FC2F588454555417B14AEB794A25041A4703D9A4545554148E17A2493A250413D0AD7E345455541B81E854B92A250419A99993946455541F6285C8F91A25041295C8F8246455541F6285CCF90A25041E17A146E46455541A4703D1A90A250411F85EBA146455541CDCCCC3C8FA250417B14AE074745554114AE47518DA250410AD7A39047455541B81E850B8CA250418FC2F5F847455541713D0A278AA2504148E17A744845554148E17A9489A25041CDCCCC8C484555417B14AE1789A25041AE47E17A48455541A4703D7A88A25041C3F5281C484555411F85EBF187A25041D7A370BD47455541713D0A8787A25041AE47E16A47455541713D0A8786A250418FC2F56847455541295C8F6285A25041F6285C7F4745554185EB51A884A25041000000A0474555416666667684A250413333331348455541EC51B81E84A2504152B81E25484555416666662683A25041295C8F1248455541C3F528EC81A25041000000F0474555415C8FC22581A25041C3F528EC4745554185EB51D881A2504185EB51B8484555416666665682A250418FC2F578494555417B14AEA782A25041D7A3704D4A45554152B81ED582A25041CDCCCCFC4A4555419A99991983A250411F85EBE14B455541295C8F6283A250410AD7A3D04B45554102749FD883A2504113F526C44C4555415DAF6E2184A250413B3239E64E4555414330100E85A250418CA017F650455541F7B2F4D387A25041005B4552504555414FFA09518AA250416C3C3C414F455541D172EBBB8CA25041741573AE4F4555416D6A2B3A8EA25041316548AD50455541BED8094A90A2504152BDDD2D5045554159D049C891A2504111016DF84E455541BCE44F7E92A25041D044FCC24D4555411EF9553493A250419F3AF9674D4555412EABC30E94A250414DD8608C4D4555411500000001A42106ABA25041259B4E6A4B4555417D3786CFAAA25041ECB714A24A45554144544C07AAA2504158990B914945554124F07052A8A2504158990B9149455541AA50C654A6A25041917C45594A455541BCF6EDFAA4A250411DC217FD4A455541F7CDE18EA3A25041E2EA23694C45554185076EFEA1A250416657BF9F4C455541FBB555269FA250416E30F60C4D455541FDA90FF29CA25041F29C91434D455541EFEB5BE399A250414DD8608C4D455541EFEB5BE399A25041EAC35AD64C455541FF9DC9BD9AA250418F888B8D4C455541F9C19B5AA1A2504156A551C54B4555418DE0A46BA2A25041F4904B0F4B455541483CC09EA5A250419B49369248455541153E0378A7A2504152B48EEF4645554134A2DE2CA9A25041393530DC4745554195C22A17ACA250411FB6D1C84845554195C22A17ACA25041F4904B0F4B45554101A42106ABA25041259B4E6A4B455541
+</a>
+
+<b>
+010600000001000000010300000001000000380000001AEBA4028CA25041266B6F00484555415E680B208AA2504194C5797B4845554143AF7B8D89A25041A8D9CB934845554165DEAE1089A25041A759E08148455541D6992F7E88A25041506BBD2948455541DAA7046488A2504170328124484555410676E50D88A25041E6ADBCDC47455541B39AECEA87A250410BCC6FC447455541D5490B8087A250417120E07147455541FB130B8086A25041C1A3F46F47455541D72E905B85A250413A3B5B86474555418B5E9DA584A250419F313EA6474555417B8BA27D84A250410305810248455541A565667684A25041B151331348455541E6140D7284A2504189171714484555417E64676F84A25041D952321A484555410A61B91784A25041DAD21D2C48455541AC8C671F83A25041B7348E194845554167C1FECE82A25041AD7EF208484555410D90452782A250412D4780F647455541DFF5401D82A25041BD3A66F5474555416437DA3382A250411AE6FC7C48455541169437CD82A250418FA765FC49455541ED81946683A25041D5D1EDAE4B4555412110201F89A250416C85FC734B455541577450698AA250415EA707C14B4555413FA230798BA25041EA6395464C4555412DDC47C18BA25041CB44B85E4C455541AA758D398CA25041FD1214A54C45554171A9ABDC8CA25041F79D34F54C4555413282B8348DA25041F79D34F54C455541BB8587558DA25041633C94F64C4555410EF22B548DA25041B8C175F14C4555411CFDF78F8EA250417321E0404D4555417F6EE4D391A25041271DBC264D455541163F1B4A93A2504192776F164B4555419BCE29AD93A250415576722C4B455541661EF14595A25041CB4E7DC84B4555417ED34BCA97A25041FE8323B74C4555410FCA64F797A25041A3BC81C44C455541512DE29397A25041FDED1DBC4A455541C4EAF29D96A250410CC9AA114745554115B88C5796A25041E6E8B30E46455541271F714096A25041279898C34545554187FA00A995A25041BFEDACCE45455541A0F3A4F994A25041A7ADF48F454555412926AFB094A250416B7E3CA14545554135FA496093A25041FD4AA74A46455541120B864492A25041F781984046455541D44A5D8891A250416E4F8E894645554170225DC890A2504176A31375464555418E143AFB8FA25041DFBB74CA4645554120D80EE28EA250419B1EB3304745554158C0484A8DA25041FE0BA39747455541E066B2018CA25041BDF9DCFC474555411AEBA4028CA25041266B6F0048455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729732 - 334866
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000550000002EABC30E94A250414DD8608C4D455541EBFA980D95A25041F29C91434D455541E12DA8D496A25041A71330D54D455541329C86E498A250413B3239E64E455541BEE1588899A250418CA017F6504555415BCD52D298A250412798577452455541C0D5125497A25041702DFF16544555419E7D7DD397A250419091DACB5545554120F65E3E9AA2504123B0E3DC56455541AA4777169DA250414FD569965445554155F1246F9FA25041CB68CE5F5445554163AFD87DA2A25041374AC54E53455541ED00F155A5A2504158A25ACF5245554124F07052A8A250412798577452455541AE41892AABA25041B3DD291853455541EFFDF95FACA2504182D326BD5245554161C46DF0ADA25041C58351BE51455541501E464AAFA2504184C7E0885045554191DAB67FB0A250410A28368B4E455541D7A3705DAEA25041000000504C455541295C8F32B0A2504148E17A544A455541F6285CEFB0A250410AD7A34049455541295C8F22B1A25041E17A14EE484555419A9999C9B1A25041B81E853B4845554185EB51B8B2A2504185EB5198464555410AD7A310B6A25041CDCCCC7C44455541B81E85BBB6A250418FC2F56844455541A4703D6AB7A2504114AE478144455541C3F528ACB8A250419A999989444555419A999919B8A2504185EB51F841455541E17A14FEB6A250417B14AEF74145554185EB5138A9A25041EC51B8EE4145554114AE47A1A8A25041E17A14EE41455541D7A3700DA8A25041CDCCCCDC42455541EC51B85EA5A25041CDCCCCDC424555419A999949A4A250419A99998943455541EC51B86EA0A250419A999909444555410AD7A3009AA250419A9999C94445554148E17AF498A250415C8FC25545455541AE47E13A98A250419A999989454555410000001097A250410AD7A3B045455541D7A3704D96A25041C3F528BC45455541000000B095A250417B14AEC7454555410AD7A30095A250418FC2F588454555417B14AEB794A25041A4703D9A4545554148E17A2493A250413D0AD7E345455541B81E854B92A250419A99993946455541F6285C8F91A25041295C8F8246455541F6285CCF90A25041E17A146E46455541A4703D1A90A250411F85EBA146455541CDCCCC3C8FA250417B14AE074745554114AE47518DA250410AD7A39047455541B81E850B8CA250418FC2F5F847455541713D0A278AA2504148E17A744845554148E17A9489A25041CDCCCC8C484555417B14AE1789A25041AE47E17A48455541A4703D7A88A25041C3F5281C484555411F85EBF187A25041D7A370BD47455541713D0A8787A25041AE47E16A47455541713D0A8786A250418FC2F56847455541295C8F6285A25041F6285C7F4745554185EB51A884A25041000000A0474555416666667684A250413333331348455541EC51B81E84A2504152B81E25484555416666662683A25041295C8F1248455541C3F528EC81A25041000000F0474555415C8FC22581A25041C3F528EC4745554185EB51D881A2504185EB51B8484555416666665682A250418FC2F578494555417B14AEA782A25041D7A3704D4A45554152B81ED582A25041CDCCCCFC4A4555419A99991983A250411F85EBE14B455541295C8F6283A250410AD7A3D04B45554102749FD883A2504113F526C44C4555415DAF6E2184A250413B3239E64E4555414330100E85A250418CA017F650455541F7B2F4D387A25041005B4552504555414FFA09518AA250416C3C3C414F455541D172EBBB8CA25041741573AE4F4555416D6A2B3A8EA25041316548AD50455541BED8094A90A2504152BDDD2D5045554159D049C891A2504111016DF84E455541BCE44F7E92A25041D044FCC24D4555411EF9553493A250419F3AF9674D4555412EABC30E94A250414DD8608C4D4555411500000001A42106ABA25041259B4E6A4B4555417D3786CFAAA25041ECB714A24A45554144544C07AAA2504158990B914945554124F07052A8A2504158990B9149455541AA50C654A6A25041917C45594A455541BCF6EDFAA4A250411DC217FD4A455541F7CDE18EA3A25041E2EA23694C45554185076EFEA1A250416657BF9F4C455541FBB555269FA250416E30F60C4D455541FDA90FF29CA25041F29C91434D455541EFEB5BE399A250414DD8608C4D455541EFEB5BE399A25041EAC35AD64C455541FF9DC9BD9AA250418F888B8D4C455541F9C19B5AA1A2504156A551C54B4555418DE0A46BA2A25041F4904B0F4B455541483CC09EA5A250419B49369248455541153E0378A7A2504152B48EEF4645554134A2DE2CA9A25041393530DC4745554195C22A17ACA250411FB6D1C84845554195C22A17ACA25041F4904B0F4B45554101A42106ABA25041259B4E6A4B455541
+</a>
+
+<b>
+010600000001000000010300000001000000380000001AEBA4028CA25041266B6F00484555415E680B208AA2504194C5797B4845554143AF7B8D89A25041A8D9CB934845554165DEAE1089A25041A759E08148455541D6992F7E88A25041506BBD2948455541DAA7046488A2504170328124484555410676E50D88A25041E6ADBCDC47455541B39AECEA87A250410BCC6FC447455541D5490B8087A250417120E07147455541FB130B8086A25041C1A3F46F47455541D72E905B85A250413A3B5B86474555418B5E9DA584A250419F313EA6474555417B8BA27D84A250410305810248455541A565667684A25041B151331348455541E6140D7284A2504189171714484555417E64676F84A25041D952321A484555410A61B91784A25041DAD21D2C48455541AC8C671F83A25041B7348E194845554167C1FECE82A25041AD7EF208484555410D90452782A250412D4780F647455541DFF5401D82A25041BD3A66F5474555416437DA3382A250411AE6FC7C48455541169437CD82A250418FA765FC49455541ED81946683A25041D5D1EDAE4B4555412110201F89A250416C85FC734B455541577450698AA250415EA707C14B4555413FA230798BA25041EA6395464C4555412DDC47C18BA25041CB44B85E4C455541AA758D398CA25041FD1214A54C45554171A9ABDC8CA25041F79D34F54C4555413282B8348DA25041F79D34F54C455541BB8587558DA25041633C94F64C4555410EF22B548DA25041B8C175F14C4555411CFDF78F8EA250417321E0404D4555417F6EE4D391A25041271DBC264D455541163F1B4A93A2504192776F164B4555419BCE29AD93A250415576722C4B455541661EF14595A25041CB4E7DC84B4555417ED34BCA97A25041FE8323B74C4555410FCA64F797A25041A3BC81C44C455541512DE29397A25041FDED1DBC4A455541C4EAF29D96A250410CC9AA114745554115B88C5796A25041E6E8B30E46455541271F714096A25041279898C34545554187FA00A995A25041BFEDACCE45455541A0F3A4F994A25041A7ADF48F454555412926AFB094A250416B7E3CA14545554135FA496093A25041FD4AA74A46455541120B864492A25041F781984046455541D44A5D8891A250416E4F8E894645554170225DC890A2504176A31375464555418E143AFB8FA25041DFBB74CA4645554120D80EE28EA250419B1EB3304745554158C0484A8DA25041FE0BA39747455541E066B2018CA25041BDF9DCFC474555411AEBA4028CA25041266B6F0048455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916345 - 3129643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5288C2DE7504114AE47C1AF745441666666762AE75041F6285C8FAE745441A4703D7A25E75041333333A3AD7454415C8FC285FCE65041000000D0DB745441EC51B8DE00E75041F6285C1FE2745441F6285C6F18E75041EC51B88EC7745441C3F5288C2DE7504114AE47C1AF745441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000001AFC12A900E75041A586516FE27454419E31440304E750418DC2A4AEE67454417DCDFBA124E7504119A7D561C37454416BF8A4C129E75041738068D6BD7454411D8CC5E62BE75041440CC05FBB74544149C13F0C27E7504151BD3115B77454412221891625E75041C812D54AB97454416B37D3D31FE7504139832139BF745441EC51B8DE00E75041F6285C1FE27454411AFC12A900E75041A586516FE2745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791544 - 184540
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000047000000594948453CC250414DF993501E6154416C0E62FE3BC2504167C192201E61544194B839133BC25041F90B96D41C615441B6B8C8613AC25041BFA214DA1B615441F02B146F39C25041EC4766DC19615441728B089E38C25041914E869D176154416F8E2B7E37C2504163D0CB3515615441E176436D37C25041F837C315156154415B2B1D6037C25041B7F9D8FC146154411E55800D36C25041FDDFF4F51261544126BDA48934C250416B2D7ABB1161544114D5AEFC32C2504178099E7910615441812E164834C25041A52EA70E0E6154416357523435C2504178926F550C615441F7F85D8B35C250412154DCB20B615441E945BA6D37C25041811DF42D08615441F7D5D2BC38C2504185E117BC05615441DA320AD139C25041F9EE33B803615441592C13813BC2504117F8499100615441713D0A1739C250411F85EB7100615441F6285C9F31C25041A4703D7A0161544185EB51E82EC2504133333323076154411F85EBA129C250413D0AD75312615441E17A141E2CC25041AE47E10A136154413D0AD70331C25041713D0A271361544148E17A7433C250411F85EBC11161544152B81EA533C250410000006014615441713D0AE72BC2504114AE477113615441713D0A0729C2504185EB5188126154410AD7A3E02DC250411F85EBB1066154415C8FC2852EC25041666666E601615441EC51B83E2EC250418FC2F508FE605441AE47E1BA2DC25041F6285CBFFB605441C3F5289C28C25041F6285C1FFB605441CDCCCC1C28C250415C8FC22502615441EC51B85E15C2504152B81E451E615441A4703D7A0EC250413D0AD7E32A6154418FC2F5D806C25041D7A3706D24615441A4703DAAFDC1504148E17AE42F615441A4703DDAF1C15041D7A370ED3A615441F6285C9FFBC15041D7A3701D436154413D0AD763FDC1504185EB51E844615441F6285CCF00C25041F6285C7F40615441F6285CEF01C2504152B81E7541615441AE47E19AFEC150413D0AD7F3456154413D0AD7E3FAC1504185EB513849615441D7A3706DF8C150415C8FC2254D615441CDCCCC8CF7C15041C3F5280C5061544152B81E65F6C15041000000D0596154418FC2F5C8F6C15041AE47E1EA5E6154413D0AD743FEC15041333333A35C615441295C8FD201C25041C3F5287C5D615441713D0AC705C250411F85EB5158615441AE47E19A08C2504148E17A2453615441000000100CC25041F6285C8F4E6154415C8FC21510C2504148E17A644B615441CDCCCC0C15C25041CDCCCC6C48615441AE47E1CA23C25041B81E853B41615441AE47E17A29C25041666666A63D6154410AD7A37036C250410AD7A340346154415C8FC22540C250411F85EB712E615441F6285CBF3CC250411F85EB812B615441295C8F4242C2504114AE478126615441E17A143E46C25041CDCCCC5C29615441B81E851B47C250419A999979286154411F85EBE147C25041E17A147E27615441FB67C38D48C25041202D1FA42661544153CA9F3045C25041B4956D622461544190828C563FC250415FD5446420615441B216D8283DC25041AB01A8EA1E615441594948453CC250414DF993501E6154410A000000F6285CAF16C25041C3F528EC2C61544114AE47D11AC250417B14AED727615441AE47E1FA1CC25041713D0AA722615441666666461EC2504114AE47512161544114AE474121C25041000000F01F61544148E17A3423C25041F6285C7F1E615441CDCCCC4C24C25041F6285C3F1C6154413333333333C25041E17A142E2461544114AE473121C250417B14AE8735615441F6285CAF16C25041C3F528EC2C615441
+</a>
+
+<b>
+0106000000010000000103000000020000005700000041B3B37E46C25041CA437F1A296154414A1A2DA746C250419758F8F02861544198BC831B47C25041DBA69979286154413560ECE147C250410065137E27615441FF67C38D48C25041222D1FA42661544155CA9F3045C25041B0956D6224615441F5B5F64842C2504112D9CB0C23615441CDD87B153EC25041722A6298206154415C08BA9A3AC25041B96300221E615441C3CDC7433AC250410973C5B11D61544115D0BEA839C25041A78AF3C11C615441E2F4F99138C250412A20B14B1B6154410210C62838C25041A4BB04571A615441A95B2FBE37C25041B80E033E1961544178E1398936C250414C4CB40C166154414B91A03235C25041AEB5E163146154419087402E34C2504196C850241261544115D5AEFC32C2504176099E7910615441802E164834C25041A32EA70E0E61544112E4391635C25041EF35A58D0C615441EC45BA6D37C250417E1DF42D08615441582C13813BC250411CF8499100615441713D0A1739C250411F85EB7100615441F6285C9F31C25041A4703D7A016154411F85EBA129C250413D0AD75312615441E17A141E2CC25041AE47E10A136154413D0AD70331C25041713D0A271361544148E17A7433C250411F85EBC111615441EEFFCC9C33C25041FC4C64ED13615441B89F1FA533C25041A71A016014615441F881C81130C250412AF4C1F113615441713D0AE72BC2504114AE4771136154410F880A0729C2504197D9508812615441B9A0A3E02DC250415507EBB106615441211D36662EC25041E393EFD00261544110E6D5702EC25041CA66F48102615441957EC2852EC25041F9E266E6016154418F89B73E2EC2504161D6F408FE6054418CEEB7022EC2504109CB72FEFC605441AE47E1BA2DC25041F6285CBFFB605441C3F5289C28C25041F6285C1FFB60544168C6B96E28C250417181EBA0FD60544117FCCD1C28C2504130A1C2250261544100A72A2F1BC25041A154C18B15615441EC51B85E15C2504152B81E451E6154413C1231A610C250411BEEE7E9266154418C163D7A0EC25041A242D8E32A61544160F5F4D806C25041A8F0716D2461544135B73EAAFDC1504187037AE42F615441939C3EDAF1C15041875171ED3A615441EA882E44F6C150412EE55BA03E615441F6285C9FFBC15041D7A3701D436154411F880F12FDC15041514B6295446154415518D763FDC1504151D951E844615441F6285CCF00C25041F6285C7F40615441FF2A1BC101C250411F68A64D41615441F6285CEF01C2504152B81E7541615441F1C2312B00C250410CC779D743615441C2FAE09AFEC15041CCD0D7F345615441F6A6D6E3FAC150414B3E53384961544109AC12D9F9C15041080CCBE14A615441D7A3706DF8C150415C8FC2254D615441E710041FF8C15041CC7DF0284E615441B48ECD8CF7C15041FFFC290C50615441770A2065F6C15041AF64FFCF596154412E2DF6C8F6C150412D27E1EA5E61544136B5C333F7C15041771A53CA5E61544138145CCFF7C1504179AFE59A5E615441B245D643FEC150412EE432A35C615441D382697000C250417FABCA275D61544103288ED201C250415AAC287C5D615441DC6609C705C250417EA7EA51586154417662E09A08C25041AF247B2453615441EAF112C209C2504108633C9D51615441000000100CC25041F6285C8F4E6154415C8FC21510C2504148E17A644B615441CDCCCC0C15C25041CDCCCC6C48615441AE47E1CA23C25041B81E853B41615441AE47E17A29C25041666666A63D615441AD6E90C42EC250416281D2D0396154410991A37036C25041033BA340346154419CBE9EE439C2504113CCCC2F32615441E81FC22540C25041CCC7EB712E6154416CE05ABF3CC250415614EB812B61544109208E4242C250413A75468126615441CDC8143E46C25041DA7CCC5C2961544141B3B37E46C25041CA437F1A296154410E000000CB4DBE4324C250417131F8511C615441A767CD4C24C2504109D25A3F1C6154418735343333C25041AFA5132E24615441D064DE2A31C2504127A369232661544114AE473121C250417B14AE8735615441F6285CAF16C25041C3F528EC2C6154413A4947D11AC250417490AED727615441AE47E1FA1CC25041713D0AA722615441666666461EC2504114AE47512161544179D54AFB1FC25041E9F2F5862061544136AF474121C250412A6EFFEF1F6154416A538EDD21C2504177A1987C1F61544148E17A3423C25041F6285C7F1E615441CB4DBE4324C250417131F8511C615441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791544 - 422567
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000047000000594948453CC250414DF993501E6154416C0E62FE3BC2504167C192201E61544194B839133BC25041F90B96D41C615441B6B8C8613AC25041BFA214DA1B615441F02B146F39C25041EC4766DC19615441728B089E38C25041914E869D176154416F8E2B7E37C2504163D0CB3515615441E176436D37C25041F837C315156154415B2B1D6037C25041B7F9D8FC146154411E55800D36C25041FDDFF4F51261544126BDA48934C250416B2D7ABB1161544114D5AEFC32C2504178099E7910615441812E164834C25041A52EA70E0E6154416357523435C2504178926F550C615441F7F85D8B35C250412154DCB20B615441E945BA6D37C25041811DF42D08615441F7D5D2BC38C2504185E117BC05615441DA320AD139C25041F9EE33B803615441592C13813BC2504117F8499100615441713D0A1739C250411F85EB7100615441F6285C9F31C25041A4703D7A0161544185EB51E82EC2504133333323076154411F85EBA129C250413D0AD75312615441E17A141E2CC25041AE47E10A136154413D0AD70331C25041713D0A271361544148E17A7433C250411F85EBC11161544152B81EA533C250410000006014615441713D0AE72BC2504114AE477113615441713D0A0729C2504185EB5188126154410AD7A3E02DC250411F85EBB1066154415C8FC2852EC25041666666E601615441EC51B83E2EC250418FC2F508FE605441AE47E1BA2DC25041F6285CBFFB605441C3F5289C28C25041F6285C1FFB605441CDCCCC1C28C250415C8FC22502615441EC51B85E15C2504152B81E451E615441A4703D7A0EC250413D0AD7E32A6154418FC2F5D806C25041D7A3706D24615441A4703DAAFDC1504148E17AE42F615441A4703DDAF1C15041D7A370ED3A615441F6285C9FFBC15041D7A3701D436154413D0AD763FDC1504185EB51E844615441F6285CCF00C25041F6285C7F40615441F6285CEF01C2504152B81E7541615441AE47E19AFEC150413D0AD7F3456154413D0AD7E3FAC1504185EB513849615441D7A3706DF8C150415C8FC2254D615441CDCCCC8CF7C15041C3F5280C5061544152B81E65F6C15041000000D0596154418FC2F5C8F6C15041AE47E1EA5E6154413D0AD743FEC15041333333A35C615441295C8FD201C25041C3F5287C5D615441713D0AC705C250411F85EB5158615441AE47E19A08C2504148E17A2453615441000000100CC25041F6285C8F4E6154415C8FC21510C2504148E17A644B615441CDCCCC0C15C25041CDCCCC6C48615441AE47E1CA23C25041B81E853B41615441AE47E17A29C25041666666A63D6154410AD7A37036C250410AD7A340346154415C8FC22540C250411F85EB712E615441F6285CBF3CC250411F85EB812B615441295C8F4242C2504114AE478126615441E17A143E46C25041CDCCCC5C29615441B81E851B47C250419A999979286154411F85EBE147C25041E17A147E27615441FB67C38D48C25041202D1FA42661544153CA9F3045C25041B4956D622461544190828C563FC250415FD5446420615441B216D8283DC25041AB01A8EA1E615441594948453CC250414DF993501E6154410A000000F6285CAF16C25041C3F528EC2C61544114AE47D11AC250417B14AED727615441AE47E1FA1CC25041713D0AA722615441666666461EC2504114AE47512161544114AE474121C25041000000F01F61544148E17A3423C25041F6285C7F1E615441CDCCCC4C24C25041F6285C3F1C6154413333333333C25041E17A142E2461544114AE473121C250417B14AE8735615441F6285CAF16C25041C3F528EC2C615441
+</a>
+
+<b>
+0106000000010000000103000000020000005700000041B3B37E46C25041CA437F1A296154414A1A2DA746C250419758F8F02861544198BC831B47C25041DBA69979286154413560ECE147C250410065137E27615441FF67C38D48C25041222D1FA42661544155CA9F3045C25041B0956D6224615441F5B5F64842C2504112D9CB0C23615441CDD87B153EC25041722A6298206154415C08BA9A3AC25041B96300221E615441C3CDC7433AC250410973C5B11D61544115D0BEA839C25041A78AF3C11C615441E2F4F99138C250412A20B14B1B6154410210C62838C25041A4BB04571A615441A95B2FBE37C25041B80E033E1961544178E1398936C250414C4CB40C166154414B91A03235C25041AEB5E163146154419087402E34C2504196C850241261544115D5AEFC32C2504176099E7910615441802E164834C25041A32EA70E0E61544112E4391635C25041EF35A58D0C615441EC45BA6D37C250417E1DF42D08615441582C13813BC250411CF8499100615441713D0A1739C250411F85EB7100615441F6285C9F31C25041A4703D7A016154411F85EBA129C250413D0AD75312615441E17A141E2CC25041AE47E10A136154413D0AD70331C25041713D0A271361544148E17A7433C250411F85EBC111615441EEFFCC9C33C25041FC4C64ED13615441B89F1FA533C25041A71A016014615441F881C81130C250412AF4C1F113615441713D0AE72BC2504114AE4771136154410F880A0729C2504197D9508812615441B9A0A3E02DC250415507EBB106615441211D36662EC25041E393EFD00261544110E6D5702EC25041CA66F48102615441957EC2852EC25041F9E266E6016154418F89B73E2EC2504161D6F408FE6054418CEEB7022EC2504109CB72FEFC605441AE47E1BA2DC25041F6285CBFFB605441C3F5289C28C25041F6285C1FFB60544168C6B96E28C250417181EBA0FD60544117FCCD1C28C2504130A1C2250261544100A72A2F1BC25041A154C18B15615441EC51B85E15C2504152B81E451E6154413C1231A610C250411BEEE7E9266154418C163D7A0EC25041A242D8E32A61544160F5F4D806C25041A8F0716D2461544135B73EAAFDC1504187037AE42F615441939C3EDAF1C15041875171ED3A615441EA882E44F6C150412EE55BA03E615441F6285C9FFBC15041D7A3701D436154411F880F12FDC15041514B6295446154415518D763FDC1504151D951E844615441F6285CCF00C25041F6285C7F40615441FF2A1BC101C250411F68A64D41615441F6285CEF01C2504152B81E7541615441F1C2312B00C250410CC779D743615441C2FAE09AFEC15041CCD0D7F345615441F6A6D6E3FAC150414B3E53384961544109AC12D9F9C15041080CCBE14A615441D7A3706DF8C150415C8FC2254D615441E710041FF8C15041CC7DF0284E615441B48ECD8CF7C15041FFFC290C50615441770A2065F6C15041AF64FFCF596154412E2DF6C8F6C150412D27E1EA5E61544136B5C333F7C15041771A53CA5E61544138145CCFF7C1504179AFE59A5E615441B245D643FEC150412EE432A35C615441D382697000C250417FABCA275D61544103288ED201C250415AAC287C5D615441DC6609C705C250417EA7EA51586154417662E09A08C25041AF247B2453615441EAF112C209C2504108633C9D51615441000000100CC25041F6285C8F4E6154415C8FC21510C2504148E17A644B615441CDCCCC0C15C25041CDCCCC6C48615441AE47E1CA23C25041B81E853B41615441AE47E17A29C25041666666A63D615441AD6E90C42EC250416281D2D0396154410991A37036C25041033BA340346154419CBE9EE439C2504113CCCC2F32615441E81FC22540C25041CCC7EB712E6154416CE05ABF3CC250415614EB812B61544109208E4242C250413A75468126615441CDC8143E46C25041DA7CCC5C2961544141B3B37E46C25041CA437F1A296154410E000000CB4DBE4324C250417131F8511C615441A767CD4C24C2504109D25A3F1C6154418735343333C25041AFA5132E24615441D064DE2A31C2504127A369232661544114AE473121C250417B14AE8735615441F6285CAF16C25041C3F528EC2C6154413A4947D11AC250417490AED727615441AE47E1FA1CC25041713D0AA722615441666666461EC2504114AE47512161544179D54AFB1FC25041E9F2F5862061544136AF474121C250412A6EFFEF1F6154416A538EDD21C2504177A1987C1F61544148E17A3423C25041F6285C7F1E615441CB4DBE4324C250417131F8511C615441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>954146 - 1400298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000C091EAC32AD6504114FD5AA2851B55417A101F0826D65041671B9DEA871B5541687F5E9027D650416AB7889B8D1B55412DFEA65029D6504132D2BC0C951B55412EE5E1BC2AD6504197C691319A1B55417E9345252DD65041EBF71BB7A31B5541CF0F1F6632D65041EA10E14AA21B5541D547F6C73DD6504124AB5D1E9F1B5541D2AB0A1738D65041CA5AC1CA881B5541A651B2C52FD65041315196D5681B554126D18B0727D65041AD5F49416A1B55415A982C5A27D65041BF6CB11E6C1B554151EFD0D027D65041038551FA6E1B55415362F55828D6504167A1130E731B554173C925D928D6504112848C5D761B55416E52B90629D65041E37A9073771B5541D225F1F129D65041FD736F697B1B55411FBF92492AD65041848A41A67C1B554105C47FAD2BD65041A172A3FA811B5541F637B04B2CD65041E9A7CFFD841B5541C091EAC32AD6504114FD5AA2851B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000081E743FF25D650414C6307A3871B5541F637B04B2CD65041E9A7CFFD841B554105C47FAD2BD65041A172A3FA811B55411FBF92492AD65041848A41A67C1B5541AF02844829D650414BE1E404791B5541C471C78228D65041206DB34E741B554151EFD0D027D65041038551FA6E1B55415A982C5A27D65041BF6CB11E6C1B5541E1651F0027D65041CB2C65166A1B5541D7A370ED22D6504148E17AC46A1B5541713D0AB71ED650413D0AD7836B1B5541C3F528FC25D65041713D0A97871B554181E743FF25D650414C6307A3871B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>954146 - 3204561
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000C091EAC32AD6504114FD5AA2851B55417A101F0826D65041671B9DEA871B5541687F5E9027D650416AB7889B8D1B55412DFEA65029D6504132D2BC0C951B55412EE5E1BC2AD6504197C691319A1B55417E9345252DD65041EBF71BB7A31B5541CF0F1F6632D65041EA10E14AA21B5541D547F6C73DD6504124AB5D1E9F1B5541D2AB0A1738D65041CA5AC1CA881B5541A651B2C52FD65041315196D5681B554126D18B0727D65041AD5F49416A1B55415A982C5A27D65041BF6CB11E6C1B554151EFD0D027D65041038551FA6E1B55415362F55828D6504167A1130E731B554173C925D928D6504112848C5D761B55416E52B90629D65041E37A9073771B5541D225F1F129D65041FD736F697B1B55411FBF92492AD65041848A41A67C1B554105C47FAD2BD65041A172A3FA811B5541F637B04B2CD65041E9A7CFFD841B5541C091EAC32AD6504114FD5AA2851B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000081E743FF25D650414C6307A3871B5541F637B04B2CD65041E9A7CFFD841B554105C47FAD2BD65041A172A3FA811B55411FBF92492AD65041848A41A67C1B5541AF02844829D650414BE1E404791B5541C471C78228D65041206DB34E741B554151EFD0D027D65041038551FA6E1B55415A982C5A27D65041BF6CB11E6C1B5541E1651F0027D65041CB2C65166A1B5541D7A370ED22D6504148E17AC46A1B5541713D0AB71ED650413D0AD7836B1B5541C3F528FC25D65041713D0A97871B554181E743FF25D650414C6307A3871B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873795 - 1465203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002C00000048E17AD40B055141E17A145EDA2955411F85EBE110055141A4703DFAD029554152B81EA511055141B81E856BCF2955417B14AED70F05514166666676CD2955419A9999490D055141AE47E16ACB295541D7A370BD0605514114AE47C1C629554185EB5148F9045141B81E859BBF295541E17A14FEEC0451410AD7A3B0B7295541F6285CFFEB045141CDCCCC0CB72955411F85EBE1E6045141CDCCCCCCB2295541000000E0E50451413D0AD7D3B1295541713D0A07E0045141F6285C2FAC2955410AD7A3C0DC045141E17A144EB129554166666666D8045141EC51B8FEB6295541EC51B8EED40451410AD7A3C0BB295541AE47E15AD1045141F6285C9FC02955415C8FC2D5CC045141AE47E14AC7295541A4703D6AC9045141C3F5284CCC2955413D0AD773C6045141CDCCCCBCD0295541713D0A57C50451410AD7A350D229554133333363C40451419A9999F9D3295541D7A370BDC2045141C3F528DCD7295541C3F528FCC004514148E17A44DC29554148E17A44C0045141000000B0DF295541E17A14FEBF045141EC51B89EE1295541000000F0C6045141CDCCCCBCE02955417B14AEA7D0045141A4703D9ADC295541713D0A57D6045141713D0AC7D82955411F85EB51DF0451413D0AD7B3CF29554152B81EA5D5045141000000A0E22955419A9999A9D304514152B81E75E92955415C8FC2A5DD0451419A999999F42955410AD7A320DE04514152B81E15F12955418FC2F548E0045141B81E859BEA295541666666F6E3045141C3F5282CE1295541D7A370CDE504514185EB5118DD295541B81E857BE70451413D0AD793DB295541C3F5285CEA045141713D0AC7DA295541F6285CFFEE0451419A999989DA295541C3F5283CF30451411F85EB41DB295541F6285C4FFB0451419A9999F9DD295541713D0A77030551417B14AE17E1295541A4703D4A0705514185EB51E8E229554148E17AD40B055141E17A145EDA295541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C4067127EC04514119C19426B729554184EE7B21DF045141904EC091CF29554110916B6BDE045141083EC79CD02955411F85EB51DF0451413D0AD7B3CF29554152B81EA5D5045141000000A0E22955419A9999A9D304514152B81E75E92955415C8FC2A5DD0451419A999999F42955410AD7A320DE04514152B81E15F12955418FC2F548E0045141B81E859BEA295541666666F6E3045141C3F5282CE1295541D7A370CDE504514185EB5118DD295541B81E857BE70451413D0AD793DB295541C3F5285CEA045141713D0AC7DA295541F6285CFFEE0451419A999989DA295541C3F5283CF30451411F85EB41DB295541F6285C4FFB0451419A9999F9DD295541713D0A77030551417B14AE17E1295541A4703D4A0705514185EB51E8E229554148E17AD40B055141E17A145EDA2955411F85EBE110055141A4703DFAD029554152B81EA511055141B81E856BCF2955417B14AED70F05514166666676CD2955419A9999490D055141AE47E16ACB295541D7A370BD0605514114AE47C1C629554185EB5148F9045141B81E859BBF295541E17A14FEEC0451410AD7A3B0B7295541C4067127EC04514119C19426B7295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873795 - 3372336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002C00000048E17AD40B055141E17A145EDA2955411F85EBE110055141A4703DFAD029554152B81EA511055141B81E856BCF2955417B14AED70F05514166666676CD2955419A9999490D055141AE47E16ACB295541D7A370BD0605514114AE47C1C629554185EB5148F9045141B81E859BBF295541E17A14FEEC0451410AD7A3B0B7295541F6285CFFEB045141CDCCCC0CB72955411F85EBE1E6045141CDCCCCCCB2295541000000E0E50451413D0AD7D3B1295541713D0A07E0045141F6285C2FAC2955410AD7A3C0DC045141E17A144EB129554166666666D8045141EC51B8FEB6295541EC51B8EED40451410AD7A3C0BB295541AE47E15AD1045141F6285C9FC02955415C8FC2D5CC045141AE47E14AC7295541A4703D6AC9045141C3F5284CCC2955413D0AD773C6045141CDCCCCBCD0295541713D0A57C50451410AD7A350D229554133333363C40451419A9999F9D3295541D7A370BDC2045141C3F528DCD7295541C3F528FCC004514148E17A44DC29554148E17A44C0045141000000B0DF295541E17A14FEBF045141EC51B89EE1295541000000F0C6045141CDCCCCBCE02955417B14AEA7D0045141A4703D9ADC295541713D0A57D6045141713D0AC7D82955411F85EB51DF0451413D0AD7B3CF29554152B81EA5D5045141000000A0E22955419A9999A9D304514152B81E75E92955415C8FC2A5DD0451419A999999F42955410AD7A320DE04514152B81E15F12955418FC2F548E0045141B81E859BEA295541666666F6E3045141C3F5282CE1295541D7A370CDE504514185EB5118DD295541B81E857BE70451413D0AD793DB295541C3F5285CEA045141713D0AC7DA295541F6285CFFEE0451419A999989DA295541C3F5283CF30451411F85EB41DB295541F6285C4FFB0451419A9999F9DD295541713D0A77030551417B14AE17E1295541A4703D4A0705514185EB51E8E229554148E17AD40B055141E17A145EDA295541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C4067127EC04514119C19426B729554184EE7B21DF045141904EC091CF29554110916B6BDE045141083EC79CD02955411F85EB51DF0451413D0AD7B3CF29554152B81EA5D5045141000000A0E22955419A9999A9D304514152B81E75E92955415C8FC2A5DD0451419A999999F42955410AD7A320DE04514152B81E15F12955418FC2F548E0045141B81E859BEA295541666666F6E3045141C3F5282CE1295541D7A370CDE504514185EB5118DD295541B81E857BE70451413D0AD793DB295541C3F5285CEA045141713D0AC7DA295541F6285CFFEE0451419A999989DA295541C3F5283CF30451411F85EB41DB295541F6285C4FFB0451419A9999F9DD295541713D0A77030551417B14AE17E1295541A4703D4A0705514185EB51E8E229554148E17AD40B055141E17A145EDA2955411F85EBE110055141A4703DFAD029554152B81EA511055141B81E856BCF2955417B14AED70F05514166666676CD2955419A9999490D055141AE47E16ACB295541D7A370BD0605514114AE47C1C629554185EB5148F9045141B81E859BBF295541E17A14FEEC0451410AD7A3B0B7295541C4067127EC04514119C19426B7295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916837 - 987242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441EBB6A71CBDE650411B21CD0853755441D858A453B5E6504151A8BC635475544154282FEDB0E65041857ED32755755441CADAC86BABE65041A6312B1D567554413B319794A3E6504123AF58F95775544137689A389DE65041A765EAE95875544165616A6294E65041320DB93F5A755441AB35315F8BE65041B589B9245C755441669D872E83E650415E50B2EB5E7554418B828EE183E6504121BD9A6C60755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916837 - 3128655
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008F828EE183E6504125BD9A6C60755441E2902C3089E65041CEC06DE35E755441B7F4C18790E6504123164C9C5D755441194C6C4D97E650413CCF29895C755441D53562DBA1E65041B37680105B7554411BAEA12CA7E65041AB7E5F2E5A755441B0E64072ACE65041D2E1233159755441AB847CE5ACE65041FF33B5515B755441162F7B16B3E65041DA1F07A85A75544189FE9C0CB6E650411E97E5505A7554419DA1973EBCE65041B5D8563859755441E626470BC4E6504101BA92D2577554412F5860E1C4E65041824E4EBC54755441E626470BC4E65041817BFDC551755441E9B6A71CBDE650411B21CD0853755441DB58A453B5E6504152A8BC635475544157282FEDB0E65041827ED32755755441C5DAC86BABE65041A7312B1D567554413F319794A3E6504123AF58F95775544136689A389DE65041A465EAE95875544168616A6294E65041320DB93F5A755441AD35315F8BE65041B989B9245C755441639D872E83E650415F50B2EB5E7554418F828EE183E6504125BD9A6C60755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916837 - 3513745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008F828EE183E6504125BD9A6C60755441E2902C3089E65041CEC06DE35E755441B7F4C18790E6504123164C9C5D755441194C6C4D97E650413CCF29895C755441D53562DBA1E65041B37680105B7554411BAEA12CA7E65041AB7E5F2E5A755441B0E64072ACE65041D2E1233159755441AB847CE5ACE65041FF33B5515B755441162F7B16B3E65041DA1F07A85A75544189FE9C0CB6E650411E97E5505A7554419DA1973EBCE65041B5D8563859755441E626470BC4E6504101BA92D2577554412F5860E1C4E65041824E4EBC54755441E626470BC4E65041817BFDC551755441E9B6A71CBDE650411B21CD0853755441DB58A453B5E6504152A8BC635475544157282FEDB0E65041827ED32755755441C5DAC86BABE65041A7312B1D567554413F319794A3E6504123AF58F95775544136689A389DE65041A465EAE95875544168616A6294E65041320DB93F5A755441AD35315F8BE65041B989B9245C755441639D872E83E650415F50B2EB5E7554418F828EE183E6504125BD9A6C60755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942379 - 153798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D4A87F25041C3F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754411F85EB0191F25041D7A3705DBA675441333333D391F2504166666676B9675441C3F5283C94F25041295C8F52B36754417B14AE9796F25041CDCCCC6CB16754419A999929A0F25041666666B6AD675441000000D0A3F25041CDCCCC3CAC67544152B81E55A8F2504133333383AC675441E17A142EA7F25041E17A14AE9A675441E17A145EA5F25041EC51B84E9767544133333303A5F250418FC2F528A267544114AE476197F2504148E17A24A3675441C3F528AC87F250418FC2F5B8A3675441A4703D4A87F25041C3F5283CBC675441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000F9C6A7AA87F250412B106219A4675441E7703D4A87F25041B8F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754419DF14EA890F25041554A0485BA6754414D85EB0191F25041A5A3705DBA675441EE496D1F91F25041CD76DD3CBA675441EB03493D91F250411BFAE61BBA675441083333D391F2504166666676B9675441A066724693F250410B5591C4B5675441C3F5283C94F25041295C8F52B36754416AFB7F8594F25041C2C18717B36754415B14AE9796F2504177CCCC6CB167544179999929A0F250413B6666B6AD675441D5FFFFCFA3F2504182CCCC3CAC67544127B81E55A8F25041F3323383AC675441A546ECBEA7F2504102A5DB88A3675441F9C6A7AA87F250412B106219A4675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942379 - 290785
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D4A87F25041C3F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754411F85EB0191F25041D7A3705DBA675441333333D391F2504166666676B9675441C3F5283C94F25041295C8F52B36754417B14AE9796F25041CDCCCC6CB16754419A999929A0F25041666666B6AD675441000000D0A3F25041CDCCCC3CAC67544152B81E55A8F2504133333383AC675441E17A142EA7F25041E17A14AE9A675441E17A145EA5F25041EC51B84E9767544133333303A5F250418FC2F528A267544114AE476197F2504148E17A24A3675441C3F528AC87F250418FC2F5B8A3675441A4703D4A87F25041C3F5283CBC675441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000F9C6A7AA87F250412B106219A4675441E7703D4A87F25041B8F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754419DF14EA890F25041554A0485BA6754414D85EB0191F25041A5A3705DBA675441EE496D1F91F25041CD76DD3CBA675441EB03493D91F250411BFAE61BBA675441083333D391F2504166666676B9675441A066724693F250410B5591C4B5675441C3F5283C94F25041295C8F52B36754416AFB7F8594F25041C2C18717B36754415B14AE9796F2504177CCCC6CB167544179999929A0F250413B6666B6AD675441D5FFFFCFA3F2504182CCCC3CAC67544127B81E55A8F25041F3323383AC675441A546ECBEA7F2504102A5DB88A3675441F9C6A7AA87F250412B106219A4675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917502 - 1351151
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000005C8FC285B2475141EC51B80EC6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC5441A4703D1ABF47514114AE47D1D2BC544152B81E95C24751417B14AE37CFBC5441EC51B89EC1475141295C8F72CEBC544100000030BA475141AE47E19AC9BC54410AD7A360B6475141AE47E17AC7BC54415C8FC285B2475141EC51B80EC6BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000053FC4659B2475141AF528D09C6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC54413ECD0993AB4751414795BAA2C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC54413572C459BF475141A0353D14D3BC544184DD4904C3475141F0ECDF97CFBC5441C4A3601DC1475141A6174A1ECEBC54411742B56EC0475141F91CEF82CEBC5441498A5CECBA475141E0B4B8BFCABC544157370503BB4751412EBF5D24CABC54410AD7A360B6475141AE47E17AC7BC544153FC4659B2475141AF528D09C6BC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917502 - 252781
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000005C8FC285B2475141EC51B80EC6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC5441A4703D1ABF47514114AE47D1D2BC544152B81E95C24751417B14AE37CFBC5441EC51B89EC1475141295C8F72CEBC544100000030BA475141AE47E19AC9BC54410AD7A360B6475141AE47E17AC7BC54415C8FC285B2475141EC51B80EC6BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000053FC4659B2475141AF528D09C6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC54413ECD0993AB4751414795BAA2C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC54413572C459BF475141A0353D14D3BC544184DD4904C3475141F0ECDF97CFBC5441C4A3601DC1475141A6174A1ECEBC54411742B56EC0475141F91CEF82CEBC5441498A5CECBA475141E0B4B8BFCABC544157370503BB4751412EBF5D24CABC54410AD7A360B6475141AE47E17AC7BC544153FC4659B2475141AF528D09C6BC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917502 - 410625
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000005C8FC285B2475141EC51B80EC6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC5441A4703D1ABF47514114AE47D1D2BC544152B81E95C24751417B14AE37CFBC5441EC51B89EC1475141295C8F72CEBC544100000030BA475141AE47E19AC9BC54410AD7A360B6475141AE47E17AC7BC54415C8FC285B2475141EC51B80EC6BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000053FC4659B2475141AF528D09C6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC54413ECD0993AB4751414795BAA2C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC54413572C459BF475141A0353D14D3BC544184DD4904C3475141F0ECDF97CFBC5441C4A3601DC1475141A6174A1ECEBC54411742B56EC0475141F91CEF82CEBC5441FFC53BE7BA47514150A055C1CABC544157370503BB4751412EBF5D24CABC54410AD7A360B6475141AE47E17AC7BC544153FC4659B2475141AF528D09C6BC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398480 - 398477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003D000000E956F3D0391E51416D2410A522685441BE17A1F9601E5141FFCEB25B1E6854417B14AE37661E5141713D0A371D685441A4703DAA6C1E5141295C8F121B685441D7A3703D6F1E5141A4703DEAE9675441AE47E1EA701E51418FC2F5B8C2675441F6285CAF811E514166666636B9675441713D0AF77E1E5141A4703D4AB76754417B14AE87731E514133333343AD675441EC51B82E751E514148E17A94AA67544114AE47D1781E5141C3F528ACA4675441D7A3701D7C1E5141000000209F6754418FC2F5587E1E51410AD7A370A06754417B14AEF78A1E5141713D0A67AA67544166666626901E514148E17AE4AD6754411F85EB11921E5141C3F5280CAD67544114AE4791941E514133333373AC6754410AD7A350971E5141333333B3AB67544133333383991E51419A999919AB675441666666169B1E51411F85EBD1AA67544166666616931E5141E17A140EA76754411F85EB81921E514152B81EC5A6675441295C8F128E1E51419A999999A4675441B81E856B851E514133333383A0675441B81E85AB881E5141D7A370AD9867544166666696891E51417B14AE77966754410AD7A3C08D1E5141B81E856B8C6754410AD7A320901E51418FC2F5F884675441A4703D0A931E5141B81E851B78675441713D0A57951E5141CDCCCC0C69675441295C8F728A1E5141A4703D1A6B675441333333F3881E5141D7A370AD6367544133333323881E51411F85EB715F6754410AD7A340871E5141AE47E15A59675441B81E854B6C1E514148E17A245D675441713D0A47711E51410AD7A320556754417B14AE57661E51413333334365675441AE47E1FA751E514114AE47E18067544148E17AB4621E51419A9999C98C67544148E17A24661E5141EC51B8DE946754413D0AD753661E51419A9999C99D675441E17A147E651E514100000050A56754419A9999E9631E5141AE47E1FAAA67544100000020611E5141F6285CCFAF675441AE47E1EA5F1E5141295C8FF2B16754415C8FC2B55E1E514133333303B567544185EB51985D1E5141B81E859BBB675441295C8F825C1E514185EB51B8BC6754415C8FC2855C1E51415C8FC2A5BE6754410AD7A3405C1E51411F85EB41C06754418FC2F5685B1E5141AE47E1FAC1675441713D0A875A1E514133333333C36754418FC2F538581E5141EC51B8CEC567544114AE4741571E5141CDCCCCFCC667544148E17A14561E5141713D0A77C8675441B81E856B551E5141713D0A07CB6754417B14AEC7531E5141295C8F42CD67544152B81E55511E5141C3F5284CD36754413D0AD7E3401E51415C8FC27505685441A303EC73371E5141006AE9E022685441E956F3D0391E51416D2410A522685441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000048E17A04351E5141A4703D1A26685441B81E85EB341E5141000000502F6854417B14AE27301E5141713D0A57406854419A9999795D1E5141F6285C5F3C6854413D0AD7535E1E5141E17A14BE2E6854411F85EB115F1E51410AD7A3F022685441666666465F1E514185EB51E81F685441CDCCCCFC601E514152B81EC51E685441295C8F22371E51418FC2F5E8226854419A999929351E5141CDCCCC1C2468544114AE47F1341E514152B81E352568544148E17A04351E5141A4703D1A26685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398480 - 1046856
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003D000000E956F3D0391E51416D2410A522685441BE17A1F9601E5141FFCEB25B1E6854417B14AE37661E5141713D0A371D685441A4703DAA6C1E5141295C8F121B685441D7A3703D6F1E5141A4703DEAE9675441AE47E1EA701E51418FC2F5B8C2675441F6285CAF811E514166666636B9675441713D0AF77E1E5141A4703D4AB76754417B14AE87731E514133333343AD675441EC51B82E751E514148E17A94AA67544114AE47D1781E5141C3F528ACA4675441D7A3701D7C1E5141000000209F6754418FC2F5587E1E51410AD7A370A06754417B14AEF78A1E5141713D0A67AA67544166666626901E514148E17AE4AD6754411F85EB11921E5141C3F5280CAD67544114AE4791941E514133333373AC6754410AD7A350971E5141333333B3AB67544133333383991E51419A999919AB675441666666169B1E51411F85EBD1AA67544166666616931E5141E17A140EA76754411F85EB81921E514152B81EC5A6675441295C8F128E1E51419A999999A4675441B81E856B851E514133333383A0675441B81E85AB881E5141D7A370AD9867544166666696891E51417B14AE77966754410AD7A3C08D1E5141B81E856B8C6754410AD7A320901E51418FC2F5F884675441A4703D0A931E5141B81E851B78675441713D0A57951E5141CDCCCC0C69675441295C8F728A1E5141A4703D1A6B675441333333F3881E5141D7A370AD6367544133333323881E51411F85EB715F6754410AD7A340871E5141AE47E15A59675441B81E854B6C1E514148E17A245D675441713D0A47711E51410AD7A320556754417B14AE57661E51413333334365675441AE47E1FA751E514114AE47E18067544148E17AB4621E51419A9999C98C67544148E17A24661E5141EC51B8DE946754413D0AD753661E51419A9999C99D675441E17A147E651E514100000050A56754419A9999E9631E5141AE47E1FAAA67544100000020611E5141F6285CCFAF675441AE47E1EA5F1E5141295C8FF2B16754415C8FC2B55E1E514133333303B567544185EB51985D1E5141B81E859BBB675441295C8F825C1E514185EB51B8BC6754415C8FC2855C1E51415C8FC2A5BE6754410AD7A3405C1E51411F85EB41C06754418FC2F5685B1E5141AE47E1FAC1675441713D0A875A1E514133333333C36754418FC2F538581E5141EC51B8CEC567544114AE4741571E5141CDCCCCFCC667544148E17A14561E5141713D0A77C8675441B81E856B551E5141713D0A07CB6754417B14AEC7531E5141295C8F42CD67544152B81E55511E5141C3F5284CD36754413D0AD7E3401E51415C8FC27505685441A303EC73371E5141006AE9E022685441E956F3D0391E51416D2410A522685441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000048E17A04351E5141A4703D1A26685441B81E85EB341E5141000000502F6854417B14AE27301E5141713D0A57406854419A9999795D1E5141F6285C5F3C6854413D0AD7535E1E5141E17A14BE2E6854411F85EB115F1E51410AD7A3F022685441666666465F1E514185EB51E81F685441CDCCCCFC601E514152B81EC51E685441295C8F22371E51418FC2F5E8226854419A999929351E5141CDCCCC1C2468544114AE47F1341E514152B81E352568544148E17A04351E5141A4703D1A26685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398480 - 3859620
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003D000000E956F3D0391E51416D2410A522685441BE17A1F9601E5141FFCEB25B1E6854417B14AE37661E5141713D0A371D685441A4703DAA6C1E5141295C8F121B685441D7A3703D6F1E5141A4703DEAE9675441AE47E1EA701E51418FC2F5B8C2675441F6285CAF811E514166666636B9675441713D0AF77E1E5141A4703D4AB76754417B14AE87731E514133333343AD675441EC51B82E751E514148E17A94AA67544114AE47D1781E5141C3F528ACA4675441D7A3701D7C1E5141000000209F6754418FC2F5587E1E51410AD7A370A06754417B14AEF78A1E5141713D0A67AA67544166666626901E514148E17AE4AD6754411F85EB11921E5141C3F5280CAD67544114AE4791941E514133333373AC6754410AD7A350971E5141333333B3AB67544133333383991E51419A999919AB675441666666169B1E51411F85EBD1AA67544166666616931E5141E17A140EA76754411F85EB81921E514152B81EC5A6675441295C8F128E1E51419A999999A4675441B81E856B851E514133333383A0675441B81E85AB881E5141D7A370AD9867544166666696891E51417B14AE77966754410AD7A3C08D1E5141B81E856B8C6754410AD7A320901E51418FC2F5F884675441A4703D0A931E5141B81E851B78675441713D0A57951E5141CDCCCC0C69675441295C8F728A1E5141A4703D1A6B675441333333F3881E5141D7A370AD6367544133333323881E51411F85EB715F6754410AD7A340871E5141AE47E15A59675441B81E854B6C1E514148E17A245D675441713D0A47711E51410AD7A320556754417B14AE57661E51413333334365675441AE47E1FA751E514114AE47E18067544148E17AB4621E51419A9999C98C67544148E17A24661E5141EC51B8DE946754413D0AD753661E51419A9999C99D675441E17A147E651E514100000050A56754419A9999E9631E5141AE47E1FAAA67544100000020611E5141F6285CCFAF675441AE47E1EA5F1E5141295C8FF2B16754415C8FC2B55E1E514133333303B567544185EB51985D1E5141B81E859BBB675441295C8F825C1E514185EB51B8BC6754415C8FC2855C1E51415C8FC2A5BE6754410AD7A3405C1E51411F85EB41C06754418FC2F5685B1E5141AE47E1FAC1675441713D0A875A1E514133333333C36754418FC2F538581E5141EC51B8CEC567544114AE4741571E5141CDCCCCFCC667544148E17A14561E5141713D0A77C8675441B81E856B551E5141713D0A07CB6754417B14AEC7531E5141295C8F42CD67544152B81E55511E5141C3F5284CD36754413D0AD7E3401E51415C8FC27505685441A303EC73371E5141006AE9E022685441E956F3D0391E51416D2410A522685441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000048E17A04351E5141A4703D1A26685441B81E85EB341E5141000000502F6854417B14AE27301E5141713D0A57406854419A9999795D1E5141F6285C5F3C6854413D0AD7535E1E5141E17A14BE2E6854411F85EB115F1E51410AD7A3F022685441666666465F1E514185EB51E81F685441CDCCCCFC601E514152B81EC51E685441295C8F22371E51418FC2F5E8226854419A999929351E5141CDCCCC1C2468544114AE47F1341E514152B81E352568544148E17A04351E5141A4703D1A26685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569368 - 3015649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F00000096C77B4EBC5E51412AB3A548148B5441CD938A3FC65E51415D12271A168B5441095082AFE95E5141E86877951C8B54411A18EB89165F514137DFA9C9248B5441AB873C91165F51418EBC09C4248B544152B81EA51B5F5141CDCCCCDC208B54419A9999E9215F5141F6285CBF1A8B54415C8FC2B5275F5141713D0A47148B54415C8FC2652D5F51410AD7A3E00C8B54413D0AD743365F5141EC51B8EE008B54417B14AE97395F5141F6285C9FFC8A5441F6285C2F315F51415C8FC2C5F88A54415C8FC2C5295F514100000060F58A544114AE47011B5F514114AE4761EF8A5441B81E852B0E5F51413D0AD793EA8A54415C8FC2E5045F5141E17A14FEE68A544114AE4751FB5E5141C3F5284CE38A54415C8FC235F25E5141A4703DCADC8A5441F6285CFFE85E51417B14AE37D68A54417B14AE57E55E5141CDCCCC9CD38A54418FC2F558DF5E5141C3F5289CD78A5441A4703DBAD65E514148E17AB4DD8A54417B14AE97D25E5141EC51B82EE18A54412A7BAB4ACF5E5141906E9FFFE38A544148775112CC5E514178A69F28E88A5441D55741BBC95E51410B73A8A8EB8A5441930470EEC75E514177A0F809EF8A544163FD6AEEC55E5141047B4194F38A5441E17A14BEC35E51417B14AED7FA8A5441C510A3A6BB5E5141617FEF23148B544196C77B4EBC5E51412AB3A548148B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000002774A9E6AD5E5141550620FE3C8B544114B2FDB4D15E514150DC5A4D438B544172D97AA9D25E51415C0620FE3C8B54410D65EF2DE35E51419C1287BB3F8B5441BD2AFE21E85E5141F99CCC9A3C8B544145EB944DEA5E51417D2136353B8B544147386811EC5E5141C5A444503A8B5441030E2DF9EF5E51416AC15684388B5441C6A5304EF35E5141B0AB476F378B5441E8C8BA39F65E51419EC565A3368B54413C0703FAFD5E5141478638A0348B5441CEBB32C6025F5141BE7516E2328B544101658984075F51416E5AAA5F308B544106D319EC0A5F5141B92320002E8B54411A741C800E5F514120462C812B8B5441C97C36B9115F514147E09E0A298B544193AA2C70165F5141B436106E258B5441E9811609185F51414F83B006248B5441A192CB8E1B5F51411360C3EF208B5441B8DF1802225F514192A48CA81A8B5441D86988E4235F514129B19F89188B5441F6CB07BD275F5141F671433D148B544161534D432B5F5141FEC5A2A70F8B5441218349D2395F5141277F0655FC8A54417F72AEF62A5F51415EEBD519F68A5441D387A89D1F5F5141051A7740F18A5441A292CB8E1B5F5141CD83849EEF8A5441F5D4FB6F145F5141C4892FECEC8A5441BBB1D4A6095F5141D7F1A1D4E88A544192F940E8005F51418AF01574E58A54416443394AFB5E5141C03C1E47E38A54418D870A57E55E51413C052E9CD38A544187B6A0E7DC5E514167585156D98A5441BE1588ABD65E51412F9361C5DD8A5441A5826E4ED35E51412AAF6E92E08A54410DB5CE88C95E5141DE12F8A3EA8A5441645AF6F9C35E5141380DDF13FA8A5441402EBCCFB75E5141DC68EC3F218B54417014CAF6B55E5141108AE30A278B5441DCE997ACB15E51413A811525338B544182BEF640B05E51412160EFDA368B54412774A9E6AD5E5141550620FE3C8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569368 - 3412718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F00000096C77B4EBC5E51412AB3A548148B5441CD938A3FC65E51415D12271A168B5441095082AFE95E5141E86877951C8B54411A18EB89165F514137DFA9C9248B5441AB873C91165F51418EBC09C4248B544152B81EA51B5F5141CDCCCCDC208B54419A9999E9215F5141F6285CBF1A8B54415C8FC2B5275F5141713D0A47148B54415C8FC2652D5F51410AD7A3E00C8B54413D0AD743365F5141EC51B8EE008B54417B14AE97395F5141F6285C9FFC8A5441F6285C2F315F51415C8FC2C5F88A54415C8FC2C5295F514100000060F58A544114AE47011B5F514114AE4761EF8A5441B81E852B0E5F51413D0AD793EA8A54415C8FC2E5045F5141E17A14FEE68A544114AE4751FB5E5141C3F5284CE38A54415C8FC235F25E5141A4703DCADC8A5441F6285CFFE85E51417B14AE37D68A54417B14AE57E55E5141CDCCCC9CD38A54418FC2F558DF5E5141C3F5289CD78A5441A4703DBAD65E514148E17AB4DD8A54417B14AE97D25E5141EC51B82EE18A54412A7BAB4ACF5E5141906E9FFFE38A544148775112CC5E514178A69F28E88A5441D55741BBC95E51410B73A8A8EB8A5441930470EEC75E514177A0F809EF8A544163FD6AEEC55E5141047B4194F38A5441E17A14BEC35E51417B14AED7FA8A5441C510A3A6BB5E5141617FEF23148B544196C77B4EBC5E51412AB3A548148B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000002774A9E6AD5E5141550620FE3C8B544114B2FDB4D15E514150DC5A4D438B544172D97AA9D25E51415C0620FE3C8B54410D65EF2DE35E51419C1287BB3F8B5441BD2AFE21E85E5141F99CCC9A3C8B544145EB944DEA5E51417D2136353B8B544147386811EC5E5141C5A444503A8B5441030E2DF9EF5E51416AC15684388B5441C6A5304EF35E5141B0AB476F378B5441E8C8BA39F65E51419EC565A3368B54413C0703FAFD5E5141478638A0348B5441CEBB32C6025F5141BE7516E2328B544101658984075F51416E5AAA5F308B544106D319EC0A5F5141B92320002E8B54411A741C800E5F514120462C812B8B5441C97C36B9115F514147E09E0A298B544193AA2C70165F5141B436106E258B5441E9811609185F51414F83B006248B5441A192CB8E1B5F51411360C3EF208B5441B8DF1802225F514192A48CA81A8B5441D86988E4235F514129B19F89188B5441F6CB07BD275F5141F671433D148B544161534D432B5F5141FEC5A2A70F8B5441218349D2395F5141277F0655FC8A54417F72AEF62A5F51415EEBD519F68A5441D387A89D1F5F5141051A7740F18A5441A292CB8E1B5F5141CD83849EEF8A5441F5D4FB6F145F5141C4892FECEC8A5441BBB1D4A6095F5141D7F1A1D4E88A544192F940E8005F51418AF01574E58A54416443394AFB5E5141C03C1E47E38A54418D870A57E55E51413C052E9CD38A544187B6A0E7DC5E514167585156D98A5441BE1588ABD65E51412F9361C5DD8A5441A5826E4ED35E51412AAF6E92E08A54410DB5CE88C95E5141DE12F8A3EA8A5441645AF6F9C35E5141380DDF13FA8A5441402EBCCFB75E5141DC68EC3F218B54417014CAF6B55E5141108AE30A278B5441DCE997ACB15E51413A811525338B544182BEF640B05E51412160EFDA368B54412774A9E6AD5E5141550620FE3C8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187933 - 203515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000005C8FC2D508BB50410AD7A3E06440554185EB51F808BB5041E17A141E67405541549AE40714BB50415A75C8367A40554118DF40FC14BB50419CAFABDC7B4055410CCE6F7716BB50416863546B7E405541DDD751DF18BB504197F24B547C405541B4D8DC5118BB50412546A680794055417B14AE771DBB5041A4703D8A77405541AE47E17A29BB504185EB51788140554114AE47F12FBB5041295C8F328D405541C3F528CC35BB5041A4703D8A9B40554114AE47F137BB5041C3F528CCA0405541EC51B8BE53BB50417B14AEC79A4055416666664650BB504185EB51889640554152B81E0547BB50413D0AD75395405541D7A370DD40BB50419A999979944055417B14AE173DBB50413D0AD72392405541A4703D6A39BB504185EB51188E40554114AE47F138BB50411F85EB418B405541F6285C0F36BB5041EC51B8BE87405541333333D332BB5041295C8FC285405541333333A32DBB50415C8FC29582405541295C8F1222BB5041D7A370BD784055418FC2F5381ABB5041CDCCCC0C70405541666666C618BB5041333333736E4055415C8FC2651ABB504148E17A246D40554114AE47B113BB5041295C8FB2664055414B54D3CD0EBB504153A7346C60405541C3F5281C0ABB50415C8FC2655A4055418FC2F51808BB5041C3F5285C56405541CDCCCCAC05BB5041B81E857B504055418FC2F50804BB5041AE47E1AA504055418BB935D103BB5041F39FFFAC4E405541F38FF03503BB5041CE68EC2049405541F4E299FC02BB5041664395093A405541B120486902BB504112187474374055414B918F4501BB5041A8C5DB8F384055414528140B01BB50416936AAFE434055413028B85F00BB504117FD76284E405541F2DB8613FFBA50418AA7A67E544055415C8FC2D508BB50410AD7A3E064405541
+</a>
+
+<b>
+010600000001000000010300000001000000160000009CD571BC51BB504186A42C52984055419BEA54B951BB50411F2A5D4E98405541E3746F7050BB5041F773E924994055419DD19C554DBB5041098CD471994055413F411A884BBB5041AE2B283E984055417D8F1D264BBB5041D2BD33E796405541C3F528CC35BB50418E703D8A9B4055412AAE47F137BB5041B8F528CCA0405541D651B8BE53BB50416514AEC79A4055415D1761C952BB5041D10C5E9B99405541E66D537852BB5041F425273899405541A5362D6152BB50419C15D11B9940554110FC980352BB5041372445A998405541CBA0F7DC51BB504128F1FB7998405541F421E0DC51BB5041A42EDF7998405541319B1FC751BB5041E6F33E5F9840554139EDE9C451BB50416C868A5C98405541B22552C451BB5041D1BCD05B984055417E8BD0BF51BB5041AEA74C56984055411D7ED0BF51BB504153974C56984055411CD77BBC51BB5041F7E33852984055419CD571BC51BB504186A42C5298405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187933 - 417087
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000005C8FC2D508BB50410AD7A3E06440554185EB51F808BB5041E17A141E67405541549AE40714BB50415A75C8367A40554118DF40FC14BB50419CAFABDC7B4055410CCE6F7716BB50416863546B7E405541DDD751DF18BB504197F24B547C405541B4D8DC5118BB50412546A680794055417B14AE771DBB5041A4703D8A77405541AE47E17A29BB504185EB51788140554114AE47F12FBB5041295C8F328D405541C3F528CC35BB5041A4703D8A9B40554114AE47F137BB5041C3F528CCA0405541EC51B8BE53BB50417B14AEC79A4055416666664650BB504185EB51889640554152B81E0547BB50413D0AD75395405541D7A370DD40BB50419A999979944055417B14AE173DBB50413D0AD72392405541A4703D6A39BB504185EB51188E40554114AE47F138BB50411F85EB418B405541F6285C0F36BB5041EC51B8BE87405541333333D332BB5041295C8FC285405541333333A32DBB50415C8FC29582405541295C8F1222BB5041D7A370BD784055418FC2F5381ABB5041CDCCCC0C70405541666666C618BB5041333333736E4055415C8FC2651ABB504148E17A246D40554114AE47B113BB5041295C8FB2664055414B54D3CD0EBB504153A7346C60405541C3F5281C0ABB50415C8FC2655A4055418FC2F51808BB5041C3F5285C56405541CDCCCCAC05BB5041B81E857B504055418FC2F50804BB5041AE47E1AA504055418BB935D103BB5041F39FFFAC4E405541F38FF03503BB5041CE68EC2049405541F4E299FC02BB5041664395093A405541B120486902BB504112187474374055414B918F4501BB5041A8C5DB8F384055414528140B01BB50416936AAFE434055413028B85F00BB504117FD76284E405541F2DB8613FFBA50418AA7A67E544055415C8FC2D508BB50410AD7A3E064405541
+</a>
+
+<b>
+010600000001000000010300000001000000160000009CD571BC51BB504186A42C52984055419BEA54B951BB50411F2A5D4E98405541E3746F7050BB5041F773E924994055419DD19C554DBB5041098CD471994055413F411A884BBB5041AE2B283E984055417D8F1D264BBB5041D2BD33E796405541C3F528CC35BB50418E703D8A9B4055412AAE47F137BB5041B8F528CCA0405541D651B8BE53BB50416514AEC79A4055415D1761C952BB5041D10C5E9B99405541E66D537852BB5041F425273899405541A5362D6152BB50419C15D11B9940554110FC980352BB5041372445A998405541CBA0F7DC51BB504128F1FB7998405541F421E0DC51BB5041A42EDF7998405541319B1FC751BB5041E6F33E5F9840554139EDE9C451BB50416C868A5C98405541B22552C451BB5041D1BCD05B984055417E8BD0BF51BB5041AEA74C56984055411D7ED0BF51BB504153974C56984055411CD77BBC51BB5041F7E33852984055419CD571BC51BB504186A42C5298405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>377247 - 376994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A03FA7EB0C3151413472230BB4E65441E46A7E4C0D315141EAFD9BB4B4E65441EEC73CA80D31514199BA9C52B5E65441D2E177BB0E315141ADB39FCAB7E65441ED98BEA4143151414A8167F2C4E654419DE5644523315141E7933CE6E4E654418FC2F5B82831514148E17AF4D8E654415C8FC2E5243151411F85EB01D2E65441000000401F315141A4703D5AC7E65441B81E859B1B315141C3F528ECBDE6544185EB517818315141B81E852BB4E65441333333F315315141666666D6A8E6544114AE47E114315141E17A14AEA2E65441AE47E14A103151417B14AE37A6E65441D7A3703D0A315141C3F5283CAFE654416C5FD7E406315141141EEB53B4E65441BCCBCFE00631514123320D5AB4E654414AD0290307315141CAAA8296B4E65441A2D6CC1D08315141A95E3050B6E65441E15174F8083151413A0FD6A5B7E654415C2AE57909315141C0F72213B7E6544146B0F64F0A315141D9A77C1EB6E65441D798CE4E0B3151414F2B7BE2B4E65441B446339F0C31514121821E5FB3E65441A03FA7EB0C3151413472230BB4E65441
+</a>
+
+<b>
+010600000001000000010300000001000000140000006C5FD7E406315141141EEB53B4E654411F85EBE106315141E17A144EB4E6544103484F55FB305141D6A6FE92C5E65441D7A3700DF230514114AE4771D0E654411F85EB91003151411F85EBA1EEE65441295C8F220F315141C3F528EC0CE754415C8FC27511315141295C8F1208E75441E17A140E16315141CDCCCC1CFFE65441333333931B31514148E17AD4F5E65441A53FDA5023315141E33444FFE4E654410BF7AA01103151410B0659D1BAE65441817AA9C50E31514100AF97FDB7E65441F7FDA7890D3151414CBFA41FB5E6544110AE01950C31514178B38173B3E65441396C73070B315141EF216B48B5E6544149D4750409315141FD6A98B8B7E65441A2D6CC1D08315141A95E3050B6E654414AD0290307315141CAAA8296B4E65441BCCBCFE00631514123320D5AB4E654416C5FD7E406315141141EEB53B4E65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942402 - 3158009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F0000003237EE808BE95041CCB6BF3EC87D5441F1CAF84E9FE95041B90B4999C87D54413A5C3B3CB5E950417F0AE5A8C97D5441D19958BFC9E95041CE5E3C8BCA7D5441163325C7D8E95041440981B8CA7D5441DC31C1D6D9E950416B5F6E03CA7D54417BDA6F9BDBE95041CCB6BF3EC87D544194E4E0D4DEE95041FA1C6373C07D54413EC3FB2AB4E95041B6C9B9B7BF7D5441AF57B8B997E9504127FE2047BF7D54412CF5BF3C8AE95041973288D6BE7D5441AA73B3BE87E95041D47FFF99B57D5441FC10E96C86E950419973C9D4AD7D5441FED2C06A9CE950419973C9D4AD7D5441073B7561D8E95041211A1C4CAF7D5441F4AC8E74E6E95041B1E5B4BCAF7D5441A978CC64E6E95041442CA37BAC7D544121CB8DDEE8E95041F32FCF4CA97D544149C9F775EAE95041E7EFE9E8967D5441ACC8C5FDEAE9504141FFCBA5897D54419C6D48F1EFE9504118A9DE5A8A7D54417867543FF5E9504141A748F28B7D5441A165BED6F6E95041A2FE992D8A7D54417A0FD18BF7E95041C9548778897D54411B0879E9FDE95041F0AA74C3887D544145AE5FCD01EA504126B462CE807D54413F0E6D9BF8E95041395FD973807D544112188D1EF0E95041D75F0BEC7F7D5441FC1C1DE0EBE9504160B5C6BE7F7D54410E201739E9E9504174603D647F7D54419E88E099D8E95041FEB5F8367F7D5441DF4C597FC2E95041880BB4097F7D5441F072759BA1E9504111616FDC7E7D5441440587E96CE9504173B8C0177D7D54410014372E60E95041FD0D7CEA7C7D5441EBC0433C5EE95041E96205457D7D5441241A2BE05AE9504121F14DD9957D5441AE6FE6B25AE950410FEE5380987D5441A3B45BD868E95041FB42DDDA987D5441CF02BF086FE95041E8976635997D5441FCF89E8577E950415E42AB62997D5441744B60FF79E95041C14179EA997D5441B0F4403C7BE95041D73CE9289E7D54413C9AF5A77FE9504157D71921AC7D5441DB42A46C81E9504145D41FC8AE7D5441928E3FBC89E95041B80B4999C87D54413237EE808BE95041CCB6BF3EC87D5441
+</a>
+
+<b>
+010600000001000000010300000002000000280000003265F76286E950412B4F3D32BE7D5441968E3FBC89E95041B80B4999C87D54413537EE808BE95041CFB6BF3EC87D5441EDCAF84E9FE95041B80B4999C87D5441375C3B3CB5E950417C0AE5A8C97D5441D59958BFC9E95041CB5E3C8BCA7D5441153325C7D8E950413F0981B8CA7D5441D931C1D6D9E950416F5F6E03CA7D544179DA6F9BDBE95041CFB6BF3EC87D544192E4E0D4DEE95041FB1C6373C07D54413AC3FB2AB4E95041BBC9B9B7BF7D5441AB57B8B997E9504127FE2047BF7D5441BF03C99888E9504120D82D42BE7D5441FE46D88383E95041A346BACCAD7D5441F9D2C06A9CE950419C73C9D4AD7D54410B3B7561D8E950411D1A1C4CAF7D5441F7AC8E74E6E95041B0E5B4BCAF7D5441AA78CC64E6E950413F2CA37BAC7D5441A7FF726AE7E950415CD79E50A77D54414958A79CE8E950410A5B3F3E967D5441487A05B3E9E95041579D2EA1897D544170FF5B32EBE95041A3E49BA77F7D54410D201739E9E9504173603D647F7D5441A188E099D8E95041FFB5F8367F7D5441E34C597FC2E950418B0BB4097F7D5441F472759BA1E950410C616FDC7E7D5441420587E96CE9504177B8C0177D7D5441FE13372E60E95041F80D7CEA7C7D5441442FA72D5FE95041628AACDC837D5441623A82F05EE950412A694D66877D544101729B305EE95041E38F5EF6947D54415FCAA5275EE95041159F6F9D967D544191F7629C5EE95041809335B9987D5441A7B45BD868E95041FC42DDDA987D5441CA02BF086FE95041E5976635997D5441FFF89E8577E950415942AB62997D54416F4B60FF79E95041C04179EA997D5441B2F4403C7BE95041DA3CE9289E7D544175A889C480E9504136039AFDAB7D54413265F76286E950412B4F3D32BE7D544106000000C0A128F4D8E95041D653AD49997D54412AC03D90DBE950413D3F35449A7D5441BAB2577FD9E950417512FCBE9D7D544186F0BF8FD6E9504176F09DA89C7D54414F9442E3D6E95041739BB2F0997D5441C0A128F4D8E95041D653AD49997D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942402 - 3562724
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F0000003237EE808BE95041CCB6BF3EC87D5441F1CAF84E9FE95041B90B4999C87D54413A5C3B3CB5E950417F0AE5A8C97D5441D19958BFC9E95041CE5E3C8BCA7D5441163325C7D8E95041440981B8CA7D5441DC31C1D6D9E950416B5F6E03CA7D54417BDA6F9BDBE95041CCB6BF3EC87D544194E4E0D4DEE95041FA1C6373C07D54413EC3FB2AB4E95041B6C9B9B7BF7D5441AF57B8B997E9504127FE2047BF7D54412CF5BF3C8AE95041973288D6BE7D5441AA73B3BE87E95041D47FFF99B57D5441FC10E96C86E950419973C9D4AD7D5441FED2C06A9CE950419973C9D4AD7D5441073B7561D8E95041211A1C4CAF7D5441F4AC8E74E6E95041B1E5B4BCAF7D5441A978CC64E6E95041442CA37BAC7D544121CB8DDEE8E95041F32FCF4CA97D544149C9F775EAE95041E7EFE9E8967D5441ACC8C5FDEAE9504141FFCBA5897D54419C6D48F1EFE9504118A9DE5A8A7D54417867543FF5E9504141A748F28B7D5441A165BED6F6E95041A2FE992D8A7D54417A0FD18BF7E95041C9548778897D54411B0879E9FDE95041F0AA74C3887D544145AE5FCD01EA504126B462CE807D54413F0E6D9BF8E95041395FD973807D544112188D1EF0E95041D75F0BEC7F7D5441FC1C1DE0EBE9504160B5C6BE7F7D54410E201739E9E9504174603D647F7D54419E88E099D8E95041FEB5F8367F7D5441DF4C597FC2E95041880BB4097F7D5441F072759BA1E9504111616FDC7E7D5441440587E96CE9504173B8C0177D7D54410014372E60E95041FD0D7CEA7C7D5441EBC0433C5EE95041E96205457D7D5441241A2BE05AE9504121F14DD9957D5441AE6FE6B25AE950410FEE5380987D5441A3B45BD868E95041FB42DDDA987D5441CF02BF086FE95041E8976635997D5441FCF89E8577E950415E42AB62997D5441744B60FF79E95041C14179EA997D5441B0F4403C7BE95041D73CE9289E7D54413C9AF5A77FE9504157D71921AC7D5441DB42A46C81E9504145D41FC8AE7D5441928E3FBC89E95041B80B4999C87D54413237EE808BE95041CCB6BF3EC87D5441
+</a>
+
+<b>
+010600000001000000010300000002000000280000003265F76286E950412B4F3D32BE7D5441968E3FBC89E95041B80B4999C87D54413537EE808BE95041CFB6BF3EC87D5441EDCAF84E9FE95041B80B4999C87D5441375C3B3CB5E950417C0AE5A8C97D5441D59958BFC9E95041CB5E3C8BCA7D5441153325C7D8E950413F0981B8CA7D5441D931C1D6D9E950416F5F6E03CA7D544179DA6F9BDBE95041CFB6BF3EC87D544192E4E0D4DEE95041FB1C6373C07D54413AC3FB2AB4E95041BBC9B9B7BF7D5441AB57B8B997E9504127FE2047BF7D5441BF03C99888E9504120D82D42BE7D5441FE46D88383E95041A346BACCAD7D5441F9D2C06A9CE950419C73C9D4AD7D54410B3B7561D8E950411D1A1C4CAF7D5441F7AC8E74E6E95041B0E5B4BCAF7D5441AA78CC64E6E950413F2CA37BAC7D5441A7FF726AE7E950415CD79E50A77D54414958A79CE8E950410A5B3F3E967D5441487A05B3E9E95041579D2EA1897D544170FF5B32EBE95041A3E49BA77F7D54410D201739E9E9504173603D647F7D5441A188E099D8E95041FFB5F8367F7D5441E34C597FC2E950418B0BB4097F7D5441F472759BA1E950410C616FDC7E7D5441420587E96CE9504177B8C0177D7D5441FE13372E60E95041F80D7CEA7C7D5441442FA72D5FE95041628AACDC837D5441623A82F05EE950412A694D66877D544101729B305EE95041E38F5EF6947D54415FCAA5275EE95041159F6F9D967D544191F7629C5EE95041809335B9987D5441A7B45BD868E95041FC42DDDA987D5441CA02BF086FE95041E5976635997D5441FFF89E8577E950415942AB62997D54416F4B60FF79E95041C04179EA997D5441B2F4403C7BE95041DA3CE9289E7D544175A889C480E9504136039AFDAB7D54413265F76286E950412B4F3D32BE7D544106000000C0A128F4D8E95041D653AD49997D54412AC03D90DBE950413D3F35449A7D5441BAB2577FD9E950417512FCBE9D7D544186F0BF8FD6E9504176F09DA89C7D54414F9442E3D6E95041739BB2F0997D5441C0A128F4D8E95041D653AD49997D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 1082478
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411C424032A5245141E6F10368A02354413DF601929F245141E7BF8C26A0235441778A50DA95245141040AB44A9B2354412279B3F478245141665870AB8A235441694BD1EF6C245141AC5C05E87E2354418DF33ADE69245141CF5442B3752354418EC1C39C6924514101E3E4426D2354415B65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F1235441E17A141EBC2351419A999919F52354413D0AD783BE235141713D0A57F923544100000030C1235141CDCCCC3CFF2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441A4703DEAD2235141D7A370AD2C24544114AE4731D823514152B81E45202454410AD7A350C9235141295C8F020524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141AAFCBC79EC235441F473705D86245141AE6E230BD92354413AE9CC2794245141714A05E3D8235441C1099C26BF2451419F22B6E203245441F3998770F3245141A4E4950A28245441010300000001000000120000008FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441666666B6BD2351417B14AEE7F9235441CDCCCC5CBB23514100000090F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A24082454410103000000010000000E000000CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E5324544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A2454410103000000010000000700000052B81E35CD235141B81E85DB3B245441F6285C5FCC235141AE47E1CA362454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B24544101030000000100000025000000CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441EC51B8AED323514148E17A64302454413D0AD723CD235141A4703D4A32245441D7A3709DCD235141EC51B87E392454413D0AD713D0235141E17A148E49245441A4703DCAD0235141000000404F245441295C8F12D1235141295C8F6251245441E17A146ED1235141EC51B8CE52245441F6285C0FD523514100000000592454411F85EB31D7235141A4703D6A5D24544114AE47B1D723514114AE47B15F245441CDCCCC0CD823514148E17AE4632454413D0AD7C3D7235141A4703D1A65245441D7A3700DD723514148E17A7466245441A4703D6AD5235141E17A144E68245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A882454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454410103000000010000000E00000014AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441180275C4D7235141ED8E51598A24544138BE74E1D8235141E2BEAEF1892454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441903CE8AFD82351419780CE214B24544110FDCB1DD7235141B51E8B444024544170A249FCD623514173EE6B4C30245441D01CDAE6D72351417271C2DF262454418194952FD82351411EE322E520245441DE25534DD7235141B00AB6A51F245441A26119BAD2235141135D3B011824544153D48D0EC92351414B473C2F0524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141ABFCBC79EC235441F173705D86245141B06E230BD92354413DE9CC27942451416D4A05E3D8235441C1099C26BF2451419C22B6E203245441F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411A424032A5245141E8F10368A02354413AF601929F245141E2BF8C26A02354417C8A50DA95245141080AB44A9B2354411E79B3F478245141625870AB8A2354416C4BD1EF6C245141AB5C05E87E23544191F33ADE69245141CF5442B3752354418BC1C39C6924514104E3E4426D2354415C65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F12354411FD44C53BC235141DD8448F3F4235441FA7FCFA2BD235141E27D5A28F723544199A61F9AC02351418FABA9F3FC235441DF393F91BF2351418FABA9F3FC235441B9018B15BD235141D45A921FF82354410B4DA3E6BB235141F8F2B48EF62354410DB87215BB2351411E038D80F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441A7C9E7A2BF23514160493FA4FD23544199A61F9AC023514160493FA4FD2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441D7BB3E28D3235141B08503572C245441395D5CC7D723514131D6E70F22245441A93D0BA4D7235141CFFC3707252454413E723731D6235141D9EE5B7129245441DCB4505DD5235141A67716B82B2454413D8E0066D22351416FEBF5942F2454411B1ED05ECF2351410ACA3C5631245441E4FACF65CE2351413C74B0DB312454417E15D1F5CD2351416E44CD40322454412FF42BEACD235141AE7D622133245441A68D7993CC235141512EEAD1342454415B669852CC23514191F305E4332454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B2454418B60B19ACC2351419D2AA9E434245441CF33D8E6CD235141BB224D4E33245441176B2754CE235141FBD2B44E37245441DFFACF65CE23514190EB17A739245441AD838AACD02351416D2776234A24544126722628D12351411047D84F4F24544171FE5754D2235141FD0E35DD5124544144964C55D02351412EA4ADA15224544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E53245441FDE1175CD0235141C48556B65224544168341F59D22351413E5AB2EF51245441F8F3F2A3D5235141F5C8B5D458245441FDEC04D9D72351411FFA7B855D245441273A94BED82351415C63E5A85F2454413E6B4966D82351419EC5600164245441569CFE0DD823514129D0D6BA6524544164BFC616D723514125BBFB506724544130644A92D5235141C8F626B268245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A88245441031FE9D1D8235141DC56DDBD89245441B17746BFD7235141E82680258A245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 3350693
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411C424032A5245141E6F10368A02354413DF601929F245141E7BF8C26A0235441778A50DA95245141040AB44A9B2354412279B3F478245141665870AB8A235441694BD1EF6C245141AC5C05E87E2354418DF33ADE69245141CF5442B3752354418EC1C39C6924514101E3E4426D2354415B65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F1235441E17A141EBC2351419A999919F52354413D0AD783BE235141713D0A57F923544100000030C1235141CDCCCC3CFF2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441A4703DEAD2235141D7A370AD2C24544114AE4731D823514152B81E45202454410AD7A350C9235141295C8F020524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141AAFCBC79EC235441F473705D86245141AE6E230BD92354413AE9CC2794245141714A05E3D8235441C1099C26BF2451419F22B6E203245441F3998770F3245141A4E4950A28245441010300000001000000120000008FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441666666B6BD2351417B14AEE7F9235441CDCCCC5CBB23514100000090F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A24082454410103000000010000000E000000CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E5324544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A2454410103000000010000000700000052B81E35CD235141B81E85DB3B245441F6285C5FCC235141AE47E1CA362454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B24544101030000000100000025000000CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441EC51B8AED323514148E17A64302454413D0AD723CD235141A4703D4A32245441D7A3709DCD235141EC51B87E392454413D0AD713D0235141E17A148E49245441A4703DCAD0235141000000404F245441295C8F12D1235141295C8F6251245441E17A146ED1235141EC51B8CE52245441F6285C0FD523514100000000592454411F85EB31D7235141A4703D6A5D24544114AE47B1D723514114AE47B15F245441CDCCCC0CD823514148E17AE4632454413D0AD7C3D7235141A4703D1A65245441D7A3700DD723514148E17A7466245441A4703D6AD5235141E17A144E68245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A882454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454410103000000010000000E00000014AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441180275C4D7235141ED8E51598A24544138BE74E1D8235141E2BEAEF1892454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441903CE8AFD82351419780CE214B24544110FDCB1DD7235141B51E8B444024544170A249FCD623514173EE6B4C30245441D01CDAE6D72351417271C2DF262454418194952FD82351411EE322E520245441DE25534DD7235141B00AB6A51F245441A26119BAD2235141135D3B011824544153D48D0EC92351414B473C2F0524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141ABFCBC79EC235441F173705D86245141B06E230BD92354413DE9CC27942451416D4A05E3D8235441C1099C26BF2451419C22B6E203245441F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411A424032A5245141E8F10368A02354413AF601929F245141E2BF8C26A02354417C8A50DA95245141080AB44A9B2354411E79B3F478245141625870AB8A2354416C4BD1EF6C245141AB5C05E87E23544191F33ADE69245141CF5442B3752354418BC1C39C6924514104E3E4426D2354415C65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F12354411FD44C53BC235141DD8448F3F4235441FA7FCFA2BD235141E27D5A28F723544199A61F9AC02351418FABA9F3FC235441DF393F91BF2351418FABA9F3FC235441B9018B15BD235141D45A921FF82354410B4DA3E6BB235141F8F2B48EF62354410DB87215BB2351411E038D80F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441A7C9E7A2BF23514160493FA4FD23544199A61F9AC023514160493FA4FD2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441D7BB3E28D3235141B08503572C245441395D5CC7D723514131D6E70F22245441A93D0BA4D7235141CFFC3707252454413E723731D6235141D9EE5B7129245441DCB4505DD5235141A67716B82B2454413D8E0066D22351416FEBF5942F2454411B1ED05ECF2351410ACA3C5631245441E4FACF65CE2351413C74B0DB312454417E15D1F5CD2351416E44CD40322454412FF42BEACD235141AE7D622133245441A68D7993CC235141512EEAD1342454415B669852CC23514191F305E4332454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B2454418B60B19ACC2351419D2AA9E434245441CF33D8E6CD235141BB224D4E33245441176B2754CE235141FBD2B44E37245441DFFACF65CE23514190EB17A739245441AD838AACD02351416D2776234A24544126722628D12351411047D84F4F24544171FE5754D2235141FD0E35DD5124544144964C55D02351412EA4ADA15224544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E53245441FDE1175CD0235141C48556B65224544168341F59D22351413E5AB2EF51245441F8F3F2A3D5235141F5C8B5D458245441FDEC04D9D72351411FFA7B855D245441273A94BED82351415C63E5A85F2454413E6B4966D82351419EC5600164245441569CFE0DD823514129D0D6BA6524544164BFC616D723514125BBFB506724544130644A92D5235141C8F626B268245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A88245441031FE9D1D8235141DC56DDBD89245441B17746BFD7235141E82680258A245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 252459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411C424032A5245141E6F10368A02354413DF601929F245141E7BF8C26A0235441778A50DA95245141040AB44A9B2354412279B3F478245141665870AB8A235441694BD1EF6C245141AC5C05E87E2354418DF33ADE69245141CF5442B3752354418EC1C39C6924514101E3E4426D2354415B65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F1235441E17A141EBC2351419A999919F52354413D0AD783BE235141713D0A57F923544100000030C1235141CDCCCC3CFF2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441A4703DEAD2235141D7A370AD2C24544114AE4731D823514152B81E45202454410AD7A350C9235141295C8F020524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141AAFCBC79EC235441F473705D86245141AE6E230BD92354413AE9CC2794245141714A05E3D8235441C1099C26BF2451419F22B6E203245441F3998770F3245141A4E4950A28245441010300000001000000120000008FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441666666B6BD2351417B14AEE7F9235441CDCCCC5CBB23514100000090F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A24082454410103000000010000000E000000CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E5324544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A2454410103000000010000000700000052B81E35CD235141B81E85DB3B245441F6285C5FCC235141AE47E1CA362454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B24544101030000000100000025000000CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441EC51B8AED323514148E17A64302454413D0AD723CD235141A4703D4A32245441D7A3709DCD235141EC51B87E392454413D0AD713D0235141E17A148E49245441A4703DCAD0235141000000404F245441295C8F12D1235141295C8F6251245441E17A146ED1235141EC51B8CE52245441F6285C0FD523514100000000592454411F85EB31D7235141A4703D6A5D24544114AE47B1D723514114AE47B15F245441CDCCCC0CD823514148E17AE4632454413D0AD7C3D7235141A4703D1A65245441D7A3700DD723514148E17A7466245441A4703D6AD5235141E17A144E68245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A882454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454410103000000010000000E00000014AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441180275C4D7235141ED8E51598A24544138BE74E1D8235141E2BEAEF1892454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441903CE8AFD82351419780CE214B24544110FDCB1DD7235141B51E8B444024544170A249FCD623514173EE6B4C30245441D01CDAE6D72351417271C2DF262454418194952FD82351411EE322E520245441DE25534DD7235141B00AB6A51F245441A26119BAD2235141135D3B011824544153D48D0EC92351414B473C2F0524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141ABFCBC79EC235441F173705D86245141B06E230BD92354413DE9CC27942451416D4A05E3D8235441C1099C26BF2451419C22B6E203245441F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411A424032A5245141E8F10368A02354413AF601929F245141E2BF8C26A02354417C8A50DA95245141080AB44A9B2354411E79B3F478245141625870AB8A2354416C4BD1EF6C245141AB5C05E87E23544191F33ADE69245141CF5442B3752354418BC1C39C6924514104E3E4426D2354415C65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F12354411FD44C53BC235141DD8448F3F4235441FA7FCFA2BD235141E27D5A28F723544199A61F9AC02351418FABA9F3FC235441DF393F91BF2351418FABA9F3FC235441B9018B15BD235141D45A921FF82354410B4DA3E6BB235141F8F2B48EF62354410DB87215BB2351411E038D80F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441A7C9E7A2BF23514160493FA4FD23544199A61F9AC023514160493FA4FD2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441D7BB3E28D3235141B08503572C245441395D5CC7D723514131D6E70F22245441A93D0BA4D7235141CFFC3707252454413E723731D6235141D9EE5B7129245441DCB4505DD5235141A67716B82B2454413D8E0066D22351416FEBF5942F2454411B1ED05ECF2351410ACA3C5631245441E4FACF65CE2351413C74B0DB312454417E15D1F5CD2351416E44CD40322454412FF42BEACD235141AE7D622133245441A68D7993CC235141512EEAD1342454415B669852CC23514191F305E4332454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B2454418B60B19ACC2351419D2AA9E434245441CF33D8E6CD235141BB224D4E33245441176B2754CE235141FBD2B44E37245441DFFACF65CE23514190EB17A739245441AD838AACD02351416D2776234A24544126722628D12351411047D84F4F24544171FE5754D2235141FD0E35DD5124544144964C55D02351412EA4ADA15224544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E53245441FDE1175CD0235141C48556B65224544168341F59D22351413E5AB2EF51245441F8F3F2A3D5235141F5C8B5D458245441FDEC04D9D72351411FFA7B855D245441273A94BED82351415C63E5A85F2454413E6B4966D82351419EC5600164245441569CFE0DD823514129D0D6BA6524544164BFC616D723514125BBFB506724544130644A92D5235141C8F626B268245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A88245441031FE9D1D8235141DC56DDBD89245441B17746BFD7235141E82680258A245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 259366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411C424032A5245141E6F10368A02354413DF601929F245141E7BF8C26A0235441778A50DA95245141040AB44A9B2354412279B3F478245141665870AB8A235441694BD1EF6C245141AC5C05E87E2354418DF33ADE69245141CF5442B3752354418EC1C39C6924514101E3E4426D2354415B65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F1235441E17A141EBC2351419A999919F52354413D0AD783BE235141713D0A57F923544100000030C1235141CDCCCC3CFF2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441A4703DEAD2235141D7A370AD2C24544114AE4731D823514152B81E45202454410AD7A350C9235141295C8F020524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141AAFCBC79EC235441F473705D86245141AE6E230BD92354413AE9CC2794245141714A05E3D8235441C1099C26BF2451419F22B6E203245441F3998770F3245141A4E4950A28245441010300000001000000120000008FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441666666B6BD2351417B14AEE7F9235441CDCCCC5CBB23514100000090F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A24082454410103000000010000000E000000CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E5324544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A2454410103000000010000000700000052B81E35CD235141B81E85DB3B245441F6285C5FCC235141AE47E1CA362454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B24544101030000000100000025000000CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441EC51B8AED323514148E17A64302454413D0AD723CD235141A4703D4A32245441D7A3709DCD235141EC51B87E392454413D0AD713D0235141E17A148E49245441A4703DCAD0235141000000404F245441295C8F12D1235141295C8F6251245441E17A146ED1235141EC51B8CE52245441F6285C0FD523514100000000592454411F85EB31D7235141A4703D6A5D24544114AE47B1D723514114AE47B15F245441CDCCCC0CD823514148E17AE4632454413D0AD7C3D7235141A4703D1A65245441D7A3700DD723514148E17A7466245441A4703D6AD5235141E17A144E68245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A882454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454410103000000010000000E00000014AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441180275C4D7235141ED8E51598A24544138BE74E1D8235141E2BEAEF1892454418FC2F578D9235141A4703D8A8B24544185EB5178DA2351410AD7A3508E245441000000C0DB235141CDCCCC3C90245441B81E855BDD235141000000A09124544166666606DF235141295C8FF2902454419A9999A9E0235141A4703DAA90245441AE47E14AE4235141E17A14CE902454419A9999D9E723514148E17A8491245441AE47E1FAE9235141AE47E1BA91245441C3F528ECE9235141C3F528DC89245441CDCCCC7CE9235141A4703DDA832454411F85EBD1F0235141EC51B87E832454418FC2F558F12351411F85EB8180245441EC51B86EF4235141B81E854B7D245441C3F5287CDA235141F6285C8F51245441903CE8AFD82351419780CE214B24544110FDCB1DD7235141B51E8B444024544170A249FCD623514173EE6B4C30245441D01CDAE6D72351417271C2DF262454418194952FD82351411EE322E520245441DE25534DD7235141B00AB6A51F245441A26119BAD2235141135D3B011824544153D48D0EC92351414B473C2F0524544185EB51C8C6235141B81E85EB0224544100000090BE23514114AE47E1ED2354419A999939E9235141C3F5285CF4235441D7A370DDF9235141D7A3708DE52354419A999999FC2351419A999929E52354411F85EBC1FC23514114AE4711E92354411F85EBF1F92351419A999989F32354411F85EB31FB2351419A9999D9F32354411F85EBB10C245141D7A370ADE3235441D7A370CD13245141D7A370ADDE2354418FC2F5E815245141EC51B89EE02354419A9999691324514114AE4741E62354415C8FC2F50E24514114AE4781E72354419A9999B90E245141D7A370FDE32354411F85EB010324514114AE4751EF2354411F85EBF1FE2351419A999939F32354415C8FC2F5FA2351419A999959F62354419A999989F823514152B81E95F6235441D7A370ADF7235141D7A3702DF52354419A999969FA235141D7A3704DE92354415C8FC2D5F7235141D7A370EDE9235441295C8F52EB235141D7A370ADF4235441C3F528ACF7235141D7A3708DF6235441713D0AA7FB2351419A999919F8235441D7A370DD08245141713D0A17ED235441F6285CFF222451419A999909FF2354417B14AEE72B2451419A9999090A245441D7A3706D552451413D0AD783152454418FC2F5C85F245141AE47E12A25245441A4703D9A6E245141C3F5284C2B24544114AE479171245141713D0AA72C2454419A9999E97424514152B81EE528245441B81E85CB79245141B81E85EB272454419A9999C97B245141333333D3262454415C8FC2857E245141F6285C2F2524544114AE475180245141F6285CEF2324544114AE47C183245141F6285CFF22245441D7A370BD8C24514114AE470121245441D7A370BD8C245141B81E852B24245441F6285CDF88245141B81E853B2824544114AE47C1882451418FC2F5C82B245441333333138D245141B81E856B2E2454418FC2F5B88F245141C3F528CC302454413D0AD7438F245141C3F5287C34245441295C8F228C245141C3F5288C3724544152B81EB58B24514148E17AE43A2454415C8FC2A58E245141B81E85AB3E245441F6285CAF8B245141D7A3702D402454411F85EB0175245141000000203D245441CDCCCC5C74245141B81E859B48245441F6285CAF72245141666666C66424544166666656762451415C8FC2B5652454418FC2F5C87A2451416666660667245441F6285C0F7E24514148E17A4468245441A4703D0A8024514114AE472169245441F6285C9F81245141333333E369245441A4703D6A822451413D0AD7636A24544133333383832451410AD7A3006B245441666666F683245141C3F5283C6B2454413333339384245141A4703D4A6B2454411F85EB41852451417B14AE376B2454410AD7A3E086245141E17A14EE6A2454419A9999F987245141E17A14EE6A24544166666696882451419A9999096B2454410AD7A32089245141A4703D4A6B245441B81E85EB89245141000000F06B24544152B81E658A245141C3F5284C6C2454418FC2F5E88A245141666666866C24544185EB51488B245141295C8FB26C245441EC51B85E8C245141713D0AD76C2454418FC2F5689224514152B81E456D2454415C8FC2A597245141B81E85AB6D24544148E17AC499245141000000D06D2454419A9999F99D245141666666E66E245441AE47E1AAA1245141E17A149E6F245441295C8FB2A22451413333331370245441EC51B80EA32451410000002070245441D7A3707DA3245141295C8F32702454413D0AD713A42451419A99991970245441C3F528FCA5245141AE47E16A6F2454411F85EB11A9245141CDCCCC9C6E2454410AD7A310AA2451413D0AD7936E245441C3F5288CAB245141F6285C2F6E24544152B81EB5AD245141EC51B83E6D2454413D0AD703AF245141AE47E11A6D2454410AD7A3E0B1245141CDCCCCDC6B2454413D0AD7A3B324514152B81E456B245441AE47E1EAB52451411F85EB616B245441D7A3702DB824514133333333672454411F85EBB1CA2451419A9999496024544152B81EB5CD2451411F85EB916124544133333383D12451410AD7A3E05E245441666666B6D2245141AE47E1EA5D24544152B81EC5D3245141CDCCCCAC5C24544114AE47B1D4245141EC51B87E5B245441A4703DAAD5245141B81E85BB5A2454410AD7A310D72451410AD7A3505A245441000000C0D8245141295C8FC25924544166666656DA245141000000F058245441B81E85CBD824514152B81E755224544114AE47B1D4245141B81E85CB4C2454417B14AE07CF24514114AE472147245441F6285CCFCF245141F6285C1F3F2454413D0AD783CB2451418FC2F5B836245441D7A3703DC6245141D7A3704D2F2454413D0AD743C524514133333313282454419A999979C624514152B81E7525245441D7A3701DCD24514185EB51882C24544152B81EB5DB245141C3F5286C35245441713D0AC7DD245141F6285C3F3624544114AE47C1E02451413333338334245441295C8FD2E52451410000006031245441713D0A77E9245141A4703DEA2E245441CA87011AC72451410472CBC21924544164F628489F245141A9C02AFF08245441403DEAFB8E245141ABFCBC79EC235441F173705D86245141B06E230BD92354413DE9CC27942451416D4A05E3D8235441C1099C26BF2451419C22B6E203245441F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B2454417B14AEC7FF24514148E17AC41A245441E17A142E002551418FC2F5A81A2454411F85EB4101255141B81E85CB19245441333333C303255141C3F5289C17245441000000C0042551419A9999C915245441666666E60425514148E17AE414245441B81E85DB04255141713D0A67142454413D0AD7830025514166666636132454413D0AD7D3FE24514114AE4781122454417B14AE37FB2451410AD7A36010245441AE47E1BAF62451413D0AD7930D245441A4703D5AF4245141A4703D3A0C245441EC51B8BEF3245141C3F528AC0B245441295C8F52F3245141EC51B82E0B245441EC51B8BEEF245141D7A3702D05245441A4703D4AEF245141F6285C6F04245441D7A3703DEF245141CDCCCCAC032454417B14AEA7ED245141713D0AD7002454415C8FC205EB245141CDCCCC7CFC235441EC51B85EE9245141C3F5287CF92354417B14AE27E82451410AD7A330F72354418FC2F598E7245141F6285C0FF623544114AE4731E72451415C8FC255F523544114AE47C1E624514114AE47E1F4235441713D0A37E62451410AD7A3A0F4235441D7A3704DE5245141295C8F82F42354419A999909E42451413D0AD793F4235441F6285CEFDC245141EC51B82EF523544185EB5188D82451419A999989F52354413D0AD7C3D52451413D0AD7A3F5235441295C8F32D4245141A4703DCAF5235441295C8F22D3245141A4703DFAF523544166666696D0245141CDCCCC8CF62354417B14AED7CC24514133333353F7235441F6285CFFCB245141D7A3706DF723544152B81E75CB245141CDCCCC2CF72354415C8FC295C92451415C8FC2F5F52354417B14AE57C724514152B81E05F4235441A4703DCAC5245141A4703D9AF223544114AE4741C4245141666666B6F0235441C3F528DCC1245141B81E85CBED235441EC51B8AEBF245141D7A370EDEA2354417B14AE77BE24514114AE4771E923544114AE4711BD245141CDCCCCBCE7235441F6285CAFBC245141CDCCCCBCE6235441000000F0B624514114AE47D1DE23544166666606B1245141A4703D4AD82354418FC2F598A724514152B81E85CC23544133333313A22451413D0AD753C623544185EB51189924514152B81E75BD235441333333F390245141C3F5283CBD235441E17A14EE8B245141C3F5283CBD235441AE47E11A8024514148E17A04BE235441B81E854B7B24514185EB5108BE23544100000030792451418FC2F5B8BD235441E17A14BE7624514148E17A24BD235441AE47E1DA73245141713D0A47BC23544152B81ED5712451411F85EB61BB23544152B81E0570245141295C8F62BA235441C3F5288C6E24514133333363B9235441D7A3707D7124514114AE47A1B523544152B81E856F245141CDCCCC6CB3235441EC51B8DE6A245141B81E852BAE235441AE47E17A68245141D7A3707DAB235441666666966624514185EB51C8A92354413D0AD7036424514166666686A72354415C8FC27565245141F6285CFFA72354419A9999296924514166666656A9235441B81E851B6B24514114AE4741AA235441000000506D245141C3F5285CAB2354413D0AD7636E24514114AE4711AC2354413D0AD7B36F245141EC51B81EAD2354413D0AD7B370245141295C8F32AE2354415C8FC2A571245141295C8F02AF2354418FC2F538732451417B14AEE7AF235441295C8F82742451419A9999D9AF235441713D0A67762451411F85EB61AD23544148E17A747624514148E17A34A92354419A999959762451410AD7A320A8235441E17A149E73245141AE47E19AA6235441713D0AF77024514114AE47D1A4235441295C8F126F245141F6285C5FA32354413D0AD7936C245141A4703D2AA22354410AD7A36066245141D7A3701DA02354410AD7A3506524514152B81E159E235441C3F5283C6424514114AE47A19B235441A4703D7A632451419A9999D99923544166666666632451415C8FC215982354413D0AD7F363245141B81E853B98235441EC51B8CE642451411F85EB21982354413D0AD773662451413333339397235441F6285CFF67245141E17A142E97235441713D0A37692451419A9999799723544185EB51986A2451410AD7A30098235441AE47E10A6C245141F6285C2F99235441333333B36C245141F6285CCF99235441AE47E1EA6D24514152B81E859B235441713D0A876F2451415C8FC2359C2354410AD7A370702451418FC2F5889C2354417B14AE177224514152B81EF59C2354419A9999B972245141AE47E15A9D23544114AE47417824514148E17AC49D235441CDCCCC0C7C24514114AE47519E23544152B81E857F245141B81E858B9E235441295C8FB2822451411F85EB11A02354417B14AE678824514114AE4771A3235441C3F528BC8F245141EC51B86EA7235441A4703D8A9524514100000000AB235441713D0A979E245141D7A370BDB023544152B81E95A3245141CDCCCC1CB4235441E17A145EA5245141295C8FA2B5235441666666F6A72451413D0AD753B2235441F6285CAFAA245141F6285C3FAF235441F6285C5FAC245141333333A3AF2354417B14AED7AF245141F6285C3FAF2354418FC2F598B2245141AE47E1CAAE235441333333A3B324514185EB5178AE235441EC51B8BEB5245141E17A146EAD23544185EB51A8B7245141C3F5285CAC23544100000080B824514185EB5118AB23544152B81EE5B9245141B81E85FBA72354413D0AD793BA245141D7A370DDA3235441A4703D6ABA2451417B14AEB7A023544166666606BA2451413D0AD7739F235441AE47E1CAB8245141EC51B8FE9D2354417B14AEB7B624514114AE47919C235441295C8FB2B4245141333333839B235441F6285C8FB1245141000000E099235441CDCCCC3CB1245141C3F528BC972354411A424032A5245141E8F10368A02354413AF601929F245141E2BF8C26A02354417C8A50DA95245141080AB44A9B2354411E79B3F478245141625870AB8A2354416C4BD1EF6C245141AB5C05E87E23544191F33ADE69245141CF5442B3752354418BC1C39C6924514104E3E4426D2354415C65984E722451412FD5755565235441A4703DEA86245141CDCCCC7C63235441713D0A478824514185EB5128622354410AD7A35089245141A4703D7A61235441C3F5288C8A2451417B14AE376123544185EB51E88B24514166666616612354417B14AE878D24514148E17AE4602354413D0AD7F38D2451419A99998960235441295C8F62902451419A9999F95D235441713D0A0796245141B81E850B59235441B81E85FB992451415C8FC2D55523544185EB51289C245141A4703DBA53235441295C8F229E24514133333343512354410AD7A3A09F245141D7A370ED4E2354419A999989A0245141713D0A474D235441713D0AD79D24514152B81E054D2354419023C8E58C24514111DAB86954235441EEF990EA80245141E2A2C5C85E2354412B7280FB7C245141A12EF1EA60235441A24C7E8A78245141CA17557F60235441218A91BB7624514100B2088C5D235441CFF1956376245141E274D2185A2354415AD7664C772451414C6750F5532354419825CB647F245141D2CF8C3A48235441D7A3706D672451410000006040235441E17A143E732451419A99994952235441B81E85EB4B24514152B81E658A23544185EB51B84F245141E17A14AEAA235441333333B349245141F6285CBFC1235441F6285CCF26245141333333B3B52354411F85EB11232451418FC2F568B423544152B81E951C245141B81E852BB22354416C5BB7B1FB235141D9C5FAE3C62354419A999929EA23514152B81EB5D6235441A4703DBAE82351419A999999E2235441CDCCCC9CD92351419A9999C9DD23544148E17A84D22351415C8FC2C5DB23544166666636C82351417B14AED7D8235441F6285CCFB02351411F85EB61D223544152B81E85A42351411F85EBC1D52354415C8FC245A62351419A9999C9D723544148E17A24AA235141666666B6DF23544133333343AC235141CDCCCC9CE523544114AE4791AE235141713D0AD7E8235441D7A3703DB123514133333383EB2354410AD7A3C0B6235141C3F5286CEF2354419A999969B9235141295C8FD2F12354411FD44C53BC235141DD8448F3F4235441FA7FCFA2BD235141E27D5A28F723544199A61F9AC02351418FABA9F3FC235441DF393F91BF2351418FABA9F3FC235441B9018B15BD235141D45A921FF82354410B4DA3E6BB235141F8F2B48EF62354410DB87215BB2351411E038D80F5235441D7A3701DB823514148E17A04F2235441D7A3706DB623514185EB51B8F023544148E17AD4B02351413D0AD773EC235441B81E857BAD2351411F85EB51E923544148E17A34AB2351419A9999F9E52354418FC2F548A9235141EC51B8FEDF2354410AD7A370A5235141CDCCCC3CD8235441713D0A97A3235141C3F5282CD623544152B81EB59B23514133333363D8235441CDCCCC1CA2235141E17A14EEE7235441D7A370CDA2235141AE47E11AE9235441F6285C1FB323514185EB5158082454418FC2F5D8B323514148E17A240824544152B81E35C22351419A9999390424544166666646C023514152B81E75FF235441A7C9E7A2BF23514160493FA4FD23544199A61F9AC023514160493FA4FD2354410AD7A3F0C223514185EB510804245441295C8F02C4235141F6285CAF0724544133333333C8235141C3F5288C06245441713D0A57CE23514114AE479116245441D7A370CDD12351410AD7A350272454415C8FC225D223514148E17A6427245441D7BB3E28D3235141B08503572C245441395D5CC7D723514131D6E70F22245441A93D0BA4D7235141CFFC3707252454413E723731D6235141D9EE5B7129245441DCB4505DD5235141A67716B82B2454413D8E0066D22351416FEBF5942F2454411B1ED05ECF2351410ACA3C5631245441E4FACF65CE2351413C74B0DB312454417E15D1F5CD2351416E44CD40322454412FF42BEACD235141AE7D622133245441A68D7993CC235141512EEAD1342454415B669852CC23514191F305E4332454419A999909CC235141C3F5289C32245441CDCCCCDCC52351416666666634245441295C8F22C5235141B81E859B34245441295C8F62C82351413D0AD7933C24544152B81E35CD235141B81E85DB3B2454418B60B19ACC2351419D2AA9E434245441CF33D8E6CD235141BB224D4E33245441176B2754CE235141FBD2B44E37245441DFFACF65CE23514190EB17A739245441AD838AACD02351416D2776234A24544126722628D12351411047D84F4F24544171FE5754D2235141FD0E35DD5124544144964C55D02351412EA4ADA15224544185EB5198CF2351419A99992950245441295C8FB2CE2351418FC2F59849245441CDCCCC9CCB2351418FC2F5184A245441AE47E1AAD02351410AD7A320682454410AD7A3D0D223514152B81EF567245441D7A3701DD423514100000090672454419A999909D6235141AE47E1FA652454418FC2F5A8D6235141EC51B80E642454418FC2F5A8D62351417B14AEC76024544166666626D6235141CDCCCC3C5E245441666666F6D4235141F6285C2F5B245441713D0A97D2235141EC51B80E57245441CDCCCC9CD0235141E17A148E53245441FDE1175CD0235141C48556B65224544168341F59D22351413E5AB2EF51245441F8F3F2A3D5235141F5C8B5D458245441FDEC04D9D72351411FFA7B855D245441273A94BED82351415C63E5A85F2454413E6B4966D82351419EC5600164245441569CFE0DD823514129D0D6BA6524544164BFC616D723514125BBFB506724544130644A92D5235141C8F626B268245441713D0A47D4235141D7A370CD682454413D0AD7A3D22351411F85EBF16824544148E17AD4D0235141EC51B82E69245441AE47E14AD2235141E17A14EE712454410AD7A3A0D42351415C8FC2E57F24544133333363D6235141E17A149E84245441EC51B84ED8235141AE47E17A88245441031FE9D1D8235141DC56DDBD89245441B17746BFD7235141E82680258A245441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289168 - 151316
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000330000000B82234EAC0051418BA122A1B833544183CCA8E6AB00514112579D08B93354418BFE5996AA00514134C660FEB933544119E685ADA90051415ACEFC4BBA335441FFA87367A7005141302D88A6BA335441D7A370BDA6005141EC51B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB73354418A1784D09E00514110579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441B01F201E9F005141600ED4DABF33544151DD36D39F005141443F7CACC13354412F6E73DD9E005141C85B1EBCC2335441B5EAA9259D005141BA575095C2335441E224F7229C0051417EB20DC9C23354410F5F44209B005141647C8EF2C33354417B14AE379900514148E17A54C43354415C8FC2B5990051413D0AD773C6335441D7A3701D9C005141D7A3700DC83354411F85EBB19E005141713D0A77C8335441E17A148EA100514133333353C933544152B81EA5A4005141E17A14AEC933544114AE47E1AE00514114AE4761CD3354418FC2F538B3005141CDCCCCACCD3354415C8FC215B50051419A999929CF335441E17A142EB800514166666656D23354418FC2F538BA005141F6285C7FD0335441B81E85CBBA005141B81E85FBCF33544166666666B800514152B81EB5CE3354418FC2F5A8B70051415C8FC2D5CD33544100000040B700514152B81EE5CC335441000000C0B60051415C8FC2F5CB335441F6285C4FB6005141F6285C8FCA335441D7A370FDB5005141D7A3709DC83354410AD7A340B5005141AE47E10AC53354419A9999D9B40051413D0AD793C333544100000050B4005141B81E85ABC2335441499CB3A1B30051410A9A39E0C1335441723D2847B3005141BE890145C133544150CE6451B20051416075FB82C03354418FC2F5A8B0005141E17A14BEC0335441295C8F22B00051417B14AE37C0335441EC51B8BEAF005141C3F5285CBF335441F6285CAFAF005141713D0A37BD3354413D0AD7F3AF00514100000040BC33544133333323B000514185EB51B8BA3354410B82234EAC0051418BA122A1B833544105000000C3F528FCA500514185EB51E8C8335441D7A3700DA6005141EC51B80EC8335441AE47E10AA7005141295C8F22C83354419A9999F9A6005141CDCCCCFCC8335441C3F528FCA500514185EB51E8C8335441
+</a>
+
+<b>
+0106000000010000000103000000020000005600000067CE71BDA60051414B74B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB7335441871784D09E00514113579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441B01F201E9F005141600ED4DABF3354414CDD36D39F005141413F7CACC13354412C6E73DD9E005141CB5B1EBCC2335441B5EAA9259D005141BC575095C2335441388EF83A9C0051416B9D40C4C233544196E82A189C0051416F9178D5C2335441091289159C0051415E7B7FD8C233544166F68F129C0051418DC1EADBC2335441A861360B9C00514101935EE4C2335441EB6DCEE89B0051411AB8EF0BC33354410A5F44209B005141657C8EF2C3335441F588AE3799005141FE7F7B54C43354411D83425D9900514131866FF6C43354415C8FC2B5990051413D0AD773C6335441A23A701D9C005141D95D700DC8335441A05EDA769C005141CC55BC1BC83354411F85EBB19E005141713D0A77C8335441CD6A96A3A0005141BC33B00CC93354411148158EA100514171CC3253C9335441D80857D0A200514174303978C933544152B81EA5A4005141E17A14AEC933544114AE47E1AE00514114AE4761CD33544164B77B2DB3005141913505ACCD3354418FC2F538B3005141CDCCCCACCD335441B3F5C215B500514117FA9829CF335441E17A142EB800514166666656D23354418FC2F538BA005141F6285C7FD0335441B81E85CBBA005141B81E85FBCF33544166666666B800514152B81EB5CE3354418FC2F5A8B70051415C8FC2D5CD335441AD470040B7005141A65C1FE5CC335441716705C0B600514164AACCF5CB3354415045958FB6005141FEC8B45BCB335441E0B7584FB60051419D3D478FCA335441535DCD8EB500514106C68085C63354412592D243B500514142E44B1AC533544171B9D2DBB4005141E782EE9BC3335441FD8AE37DB4005141F857FFF8C2335441913A8479B40051415D869DF1C23354414053AD71B4005141F71F61E4C2335441716E6B6EB4005141AE33E1DEC23354413C4A1F6CB4005141463300DBC2335441CBD63314B40051410544C665C2335441449CB3A1B30051410A9A39E0C1335441AC0D846FB3005141DB37318AC1335441CDB6A34FB300514107C4B05FC1335441A641B112B30051414821961BC13354414BCE6451B20051416275FB82C0335441DEA052AAB00051417B1CDB5EC0335441295C8F22B00051417B14AE37C0335441EC51B8BEAF005141C3F5285CBF3354411AB58ABDAF005141814F0A32BF3354419D535FB9AF005141DD72002CBF3354419D535FB9AF0051413E72FB9CBE335441F6285CAFAF005141713D0A37BD33544105508FDDAF00514139EC1EEABC33544149EAF43BB00051411474863EBC3354411B65D678B000514184B44FB2BA335441F8A2E7C9AD0051417D4C8912B933544112A85E79AC005141D0690B80B83354418B07E16BAC0051419777867CB833544194B82645AC0051415B81636CB83354413F9623BFAB005141DB5A88E0B833544140CFC59AAB0051413DF742F7B8335441D1C17A85AA00514147DA17ADB93354412A42BE0AAA005141CA84A4E3B9335441E55EBCA6A90051416D76A515BA335441A2421867A90051412DE8BC1EBA3354417ADF2CDAA80051410DA14823BA33544121C208D5A8005141F7E58D23BA335441A84F37CDA70051419331C53ABA33544169E0E092A70051412FAF1A43BA33544152FB477BA7005141CC05FB41BA3354416719836EA70051412FAF1A43BA335441AD47DB54A7005141B99B2640BA33544103B66A33A70051414FF68E3EBA33544167CE71BDA60051414B74B82EBA33544105000000C3F528FCA500514185EB51E8C8335441D7A3700DA6005141EC51B80EC8335441AE47E10AA7005141295C8F22C83354419A9999F9A6005141CDCCCCFCC8335441C3F528FCA500514185EB51E8C8335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289168 - 396114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000330000000B82234EAC0051418BA122A1B833544183CCA8E6AB00514112579D08B93354418BFE5996AA00514134C660FEB933544119E685ADA90051415ACEFC4BBA335441FFA87367A7005141302D88A6BA335441D7A370BDA6005141EC51B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB73354418A1784D09E00514110579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441B01F201E9F005141600ED4DABF33544151DD36D39F005141443F7CACC13354412F6E73DD9E005141C85B1EBCC2335441B5EAA9259D005141BA575095C2335441E224F7229C0051417EB20DC9C23354410F5F44209B005141647C8EF2C33354417B14AE379900514148E17A54C43354415C8FC2B5990051413D0AD773C6335441D7A3701D9C005141D7A3700DC83354411F85EBB19E005141713D0A77C8335441E17A148EA100514133333353C933544152B81EA5A4005141E17A14AEC933544114AE47E1AE00514114AE4761CD3354418FC2F538B3005141CDCCCCACCD3354415C8FC215B50051419A999929CF335441E17A142EB800514166666656D23354418FC2F538BA005141F6285C7FD0335441B81E85CBBA005141B81E85FBCF33544166666666B800514152B81EB5CE3354418FC2F5A8B70051415C8FC2D5CD33544100000040B700514152B81EE5CC335441000000C0B60051415C8FC2F5CB335441F6285C4FB6005141F6285C8FCA335441D7A370FDB5005141D7A3709DC83354410AD7A340B5005141AE47E10AC53354419A9999D9B40051413D0AD793C333544100000050B4005141B81E85ABC2335441499CB3A1B30051410A9A39E0C1335441723D2847B3005141BE890145C133544150CE6451B20051416075FB82C03354418FC2F5A8B0005141E17A14BEC0335441295C8F22B00051417B14AE37C0335441EC51B8BEAF005141C3F5285CBF335441F6285CAFAF005141713D0A37BD3354413D0AD7F3AF00514100000040BC33544133333323B000514185EB51B8BA3354410B82234EAC0051418BA122A1B833544105000000C3F528FCA500514185EB51E8C8335441D7A3700DA6005141EC51B80EC8335441AE47E10AA7005141295C8F22C83354419A9999F9A6005141CDCCCCFCC8335441C3F528FCA500514185EB51E8C8335441
+</a>
+
+<b>
+0106000000010000000103000000020000005600000067CE71BDA60051414B74B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB7335441871784D09E00514113579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441B01F201E9F005141600ED4DABF3354414CDD36D39F005141413F7CACC13354412C6E73DD9E005141CB5B1EBCC2335441B5EAA9259D005141BC575095C2335441388EF83A9C0051416B9D40C4C233544196E82A189C0051416F9178D5C2335441091289159C0051415E7B7FD8C233544166F68F129C0051418DC1EADBC2335441A861360B9C00514101935EE4C2335441EB6DCEE89B0051411AB8EF0BC33354410A5F44209B005141657C8EF2C3335441F588AE3799005141FE7F7B54C43354411D83425D9900514131866FF6C43354415C8FC2B5990051413D0AD773C6335441A23A701D9C005141D95D700DC8335441A05EDA769C005141CC55BC1BC83354411F85EBB19E005141713D0A77C8335441CD6A96A3A0005141BC33B00CC93354411148158EA100514171CC3253C9335441D80857D0A200514174303978C933544152B81EA5A4005141E17A14AEC933544114AE47E1AE00514114AE4761CD33544164B77B2DB3005141913505ACCD3354418FC2F538B3005141CDCCCCACCD335441B3F5C215B500514117FA9829CF335441E17A142EB800514166666656D23354418FC2F538BA005141F6285C7FD0335441B81E85CBBA005141B81E85FBCF33544166666666B800514152B81EB5CE3354418FC2F5A8B70051415C8FC2D5CD335441AD470040B7005141A65C1FE5CC335441716705C0B600514164AACCF5CB3354415045958FB6005141FEC8B45BCB335441E0B7584FB60051419D3D478FCA335441535DCD8EB500514106C68085C63354412592D243B500514142E44B1AC533544171B9D2DBB4005141E782EE9BC3335441FD8AE37DB4005141F857FFF8C2335441913A8479B40051415D869DF1C23354414053AD71B4005141F71F61E4C2335441716E6B6EB4005141AE33E1DEC23354413C4A1F6CB4005141463300DBC2335441CBD63314B40051410544C665C2335441449CB3A1B30051410A9A39E0C1335441AC0D846FB3005141DB37318AC1335441CDB6A34FB300514107C4B05FC1335441A641B112B30051414821961BC13354414BCE6451B20051416275FB82C0335441DEA052AAB00051417B1CDB5EC0335441295C8F22B00051417B14AE37C0335441EC51B8BEAF005141C3F5285CBF3354411AB58ABDAF005141814F0A32BF3354419D535FB9AF005141DD72002CBF3354419D535FB9AF0051413E72FB9CBE335441F6285CAFAF005141713D0A37BD33544105508FDDAF00514139EC1EEABC33544149EAF43BB00051411474863EBC3354411B65D678B000514184B44FB2BA335441F8A2E7C9AD0051417D4C8912B933544112A85E79AC005141D0690B80B83354418B07E16BAC0051419777867CB833544194B82645AC0051415B81636CB83354413F9623BFAB005141DB5A88E0B833544140CFC59AAB0051413DF742F7B8335441D1C17A85AA00514147DA17ADB93354412A42BE0AAA005141CA84A4E3B9335441E55EBCA6A90051416D76A515BA335441A2421867A90051412DE8BC1EBA3354417ADF2CDAA80051410DA14823BA33544121C208D5A8005141F7E58D23BA335441A84F37CDA70051419331C53ABA33544169E0E092A70051412FAF1A43BA33544152FB477BA7005141CC05FB41BA3354416719836EA70051412FAF1A43BA335441AD47DB54A7005141B99B2640BA33544103B66A33A70051414FF68E3EBA33544167CE71BDA60051414B74B82EBA33544105000000C3F528FCA500514185EB51E8C8335441D7A3700DA6005141EC51B80EC8335441AE47E10AA7005141295C8F22C83354419A9999F9A6005141CDCCCCFCC8335441C3F528FCA500514185EB51E8C8335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 3187103
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441A0A398376EE4504152611875A02A5441E4D47BEA6DE450415FC17A7A9F2A5441800BF26E6CE450416DCDD24D9D2A544175C86EF06BE45041861CAE9F9B2A544175C86EF06BE4504150280673992A5441FD23573C6CE45041BE899AA8982A54411196FC716CE45041F09DF0A0982A54413EDD7B6F6CE45041706E6C92982A54410398A4556CE45041C4A2FF75982A54419E2903266BE4504100DF21E4952A5441004814DD69E450414803DF84932A5441BB41B3CC66E450417F70CB8D902A5441062F45C261E4504105213B158E2A5441CB6B67305FE45041B6DDB7968D2A54419ACEB5155FE45041396C0A8C8D2A544146BB60175EE450411FC2C5CC8D2A5441DDFD17E65CE4504114BD33EE8D2A54415B50C1F85AE4504138DD74568E2A5441E44CEA2F58E450417E7A7C1F8F2A5441918D087655E4504101FF4E47902A5441B993969255E45041BE60135C902A5441FF308C4655E45041ED30114C902A5441382C228E53E450418D3241E5902A5441AE47E1EA53E45041666666D6902A54413D0AD73356E4504114AE47D1922A5441295C8F025AE450411F85EB91942A5441C3F5285C5DE450410AD7A3F0952A54410103000000010000000F000000CB62FC745FE45041032C5ADC8C2A54413035F1AB60E45041EA26E7FE8C2A544126F8CE3D63E45041EFF51C648D2A5441EABBACCF65E450411B4C59C68E2A5441DE526C5669E45041A1CF1A07912A544189A3FC286AE4504125EAC4908F2A5441FBD3C6C369E450414D45F8B58B2A5441CD03C8F169E45041A3B111AF8B2A54411E66259468E450411DC59DA2892A5441385A189A66E450419469B556892A54412AB9FE9866E4504119453551892A5441D4908E1E65E450416B63096D8A2A5441D2E5155A62E450418CD1AA9C8B2A5441652ADB7E5FE45041331069908C2A5441CB62FC745FE45041032C5ADC8C2A544101030000000100000012000000E39CE6F162E4504171D756868A2A54410DA9F3EB64E450411DC59DA2892A5441A6BBACCF65E45041073F97A5882A54415C5D58D365E45041CD5F6486882A54411EF8530D66E4504179A3BC5F882A5441C034EC2E66E450411E4F6989862A5441A771845066E45041AA37AED4842A5441E4B7E20B66E45041F012F6CE842A54418F851A5E66E45041A8E8141A842A54416DA3470266E45041978711E7832A54417A0A882164E45041978711E7832A54415F10340B63E4504106941EE1852A544145BBF7A861E45041D14AEF78862A5441EB34F1AB60E4504175A02BDB872A5441244D567960E450419469B556892A54413504271161E45041420275378B2A544135A8CF4161E450410C52625E8B2A5441E39CE6F162E4504171D756868A2A544101030000000100000004000000E1D9758B5FE45041ACD76E2F8C2A544104E2FF915FE4504123D5402D8C2A5441D149A98B5FE450417317E32D8C2A5441E1D9758B5FE45041ACD76E2F8C2A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000046D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 3598400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441A0A398376EE4504152611875A02A5441E4D47BEA6DE450415FC17A7A9F2A5441800BF26E6CE450416DCDD24D9D2A544175C86EF06BE45041861CAE9F9B2A544175C86EF06BE4504150280673992A5441FD23573C6CE45041BE899AA8982A54411196FC716CE45041F09DF0A0982A54413EDD7B6F6CE45041706E6C92982A54410398A4556CE45041C4A2FF75982A54419E2903266BE4504100DF21E4952A5441004814DD69E450414803DF84932A5441BB41B3CC66E450417F70CB8D902A5441062F45C261E4504105213B158E2A5441CB6B67305FE45041B6DDB7968D2A54419ACEB5155FE45041396C0A8C8D2A544146BB60175EE450411FC2C5CC8D2A5441DDFD17E65CE4504114BD33EE8D2A54415B50C1F85AE4504138DD74568E2A5441E44CEA2F58E450417E7A7C1F8F2A5441918D087655E4504101FF4E47902A5441B993969255E45041BE60135C902A5441FF308C4655E45041ED30114C902A5441382C228E53E450418D3241E5902A5441AE47E1EA53E45041666666D6902A54413D0AD73356E4504114AE47D1922A5441295C8F025AE450411F85EB91942A5441C3F5285C5DE450410AD7A3F0952A54410103000000010000000F000000CB62FC745FE45041032C5ADC8C2A54413035F1AB60E45041EA26E7FE8C2A544126F8CE3D63E45041EFF51C648D2A5441EABBACCF65E450411B4C59C68E2A5441DE526C5669E45041A1CF1A07912A544189A3FC286AE4504125EAC4908F2A5441FBD3C6C369E450414D45F8B58B2A5441CD03C8F169E45041A3B111AF8B2A54411E66259468E450411DC59DA2892A5441385A189A66E450419469B556892A54412AB9FE9866E4504119453551892A5441D4908E1E65E450416B63096D8A2A5441D2E5155A62E450418CD1AA9C8B2A5441652ADB7E5FE45041331069908C2A5441CB62FC745FE45041032C5ADC8C2A544101030000000100000012000000E39CE6F162E4504171D756868A2A54410DA9F3EB64E450411DC59DA2892A5441A6BBACCF65E45041073F97A5882A54415C5D58D365E45041CD5F6486882A54411EF8530D66E4504179A3BC5F882A5441C034EC2E66E450411E4F6989862A5441A771845066E45041AA37AED4842A5441E4B7E20B66E45041F012F6CE842A54418F851A5E66E45041A8E8141A842A54416DA3470266E45041978711E7832A54417A0A882164E45041978711E7832A54415F10340B63E4504106941EE1852A544145BBF7A861E45041D14AEF78862A5441EB34F1AB60E4504175A02BDB872A5441244D567960E450419469B556892A54413504271161E45041420275378B2A544135A8CF4161E450410C52625E8B2A5441E39CE6F162E4504171D756868A2A544101030000000100000004000000E1D9758B5FE45041ACD76E2F8C2A544104E2FF915FE4504123D5402D8C2A5441D149A98B5FE450417317E32D8C2A5441E1D9758B5FE45041ACD76E2F8C2A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000046D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 256904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441A0A398376EE4504152611875A02A5441E4D47BEA6DE450415FC17A7A9F2A5441800BF26E6CE450416DCDD24D9D2A544175C86EF06BE45041861CAE9F9B2A544175C86EF06BE4504150280673992A5441FD23573C6CE45041BE899AA8982A54411196FC716CE45041F09DF0A0982A54413EDD7B6F6CE45041706E6C92982A54410398A4556CE45041C4A2FF75982A54419E2903266BE4504100DF21E4952A5441004814DD69E450414803DF84932A5441BB41B3CC66E450417F70CB8D902A5441062F45C261E4504105213B158E2A5441CB6B67305FE45041B6DDB7968D2A54419ACEB5155FE45041396C0A8C8D2A544146BB60175EE450411FC2C5CC8D2A5441DDFD17E65CE4504114BD33EE8D2A54415B50C1F85AE4504138DD74568E2A5441E44CEA2F58E450417E7A7C1F8F2A5441918D087655E4504101FF4E47902A5441B993969255E45041BE60135C902A5441FF308C4655E45041ED30114C902A5441382C228E53E450418D3241E5902A5441AE47E1EA53E45041666666D6902A54413D0AD73356E4504114AE47D1922A5441295C8F025AE450411F85EB91942A5441C3F5285C5DE450410AD7A3F0952A54410103000000010000000F000000CB62FC745FE45041032C5ADC8C2A54413035F1AB60E45041EA26E7FE8C2A544126F8CE3D63E45041EFF51C648D2A5441EABBACCF65E450411B4C59C68E2A5441DE526C5669E45041A1CF1A07912A544189A3FC286AE4504125EAC4908F2A5441FBD3C6C369E450414D45F8B58B2A5441CD03C8F169E45041A3B111AF8B2A54411E66259468E450411DC59DA2892A5441385A189A66E450419469B556892A54412AB9FE9866E4504119453551892A5441D4908E1E65E450416B63096D8A2A5441D2E5155A62E450418CD1AA9C8B2A5441652ADB7E5FE45041331069908C2A5441CB62FC745FE45041032C5ADC8C2A544101030000000100000012000000E39CE6F162E4504171D756868A2A54410DA9F3EB64E450411DC59DA2892A5441A6BBACCF65E45041073F97A5882A54415C5D58D365E45041CD5F6486882A54411EF8530D66E4504179A3BC5F882A5441C034EC2E66E450411E4F6989862A5441A771845066E45041AA37AED4842A5441E4B7E20B66E45041F012F6CE842A54418F851A5E66E45041A8E8141A842A54416DA3470266E45041978711E7832A54417A0A882164E45041978711E7832A54415F10340B63E4504106941EE1852A544145BBF7A861E45041D14AEF78862A5441EB34F1AB60E4504175A02BDB872A5441244D567960E450419469B556892A54413504271161E45041420275378B2A544135A8CF4161E450410C52625E8B2A5441E39CE6F162E4504171D756868A2A544101030000000100000004000000E1D9758B5FE45041ACD76E2F8C2A544104E2FF915FE4504123D5402D8C2A5441D149A98B5FE450417317E32D8C2A5441E1D9758B5FE45041ACD76E2F8C2A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 345333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441A0A398376EE4504152611875A02A5441E4D47BEA6DE450415FC17A7A9F2A5441800BF26E6CE450416DCDD24D9D2A544175C86EF06BE45041861CAE9F9B2A544175C86EF06BE4504150280673992A5441FD23573C6CE45041BE899AA8982A54411196FC716CE45041F09DF0A0982A54413EDD7B6F6CE45041706E6C92982A54410398A4556CE45041C4A2FF75982A54419E2903266BE4504100DF21E4952A5441004814DD69E450414803DF84932A5441BB41B3CC66E450417F70CB8D902A5441062F45C261E4504105213B158E2A5441CB6B67305FE45041B6DDB7968D2A54419ACEB5155FE45041396C0A8C8D2A544146BB60175EE450411FC2C5CC8D2A5441DDFD17E65CE4504114BD33EE8D2A54415B50C1F85AE4504138DD74568E2A5441E44CEA2F58E450417E7A7C1F8F2A5441918D087655E4504101FF4E47902A5441B993969255E45041BE60135C902A5441FF308C4655E45041ED30114C902A5441382C228E53E450418D3241E5902A5441AE47E1EA53E45041666666D6902A54413D0AD73356E4504114AE47D1922A5441295C8F025AE450411F85EB91942A5441C3F5285C5DE450410AD7A3F0952A54410103000000010000000F000000CB62FC745FE45041032C5ADC8C2A54413035F1AB60E45041EA26E7FE8C2A544126F8CE3D63E45041EFF51C648D2A5441EABBACCF65E450411B4C59C68E2A5441DE526C5669E45041A1CF1A07912A544189A3FC286AE4504125EAC4908F2A5441FBD3C6C369E450414D45F8B58B2A5441CD03C8F169E45041A3B111AF8B2A54411E66259468E450411DC59DA2892A5441385A189A66E450419469B556892A54412AB9FE9866E4504119453551892A5441D4908E1E65E450416B63096D8A2A5441D2E5155A62E450418CD1AA9C8B2A5441652ADB7E5FE45041331069908C2A5441CB62FC745FE45041032C5ADC8C2A544101030000000100000012000000E39CE6F162E4504171D756868A2A54410DA9F3EB64E450411DC59DA2892A5441A6BBACCF65E45041073F97A5882A54415C5D58D365E45041CD5F6486882A54411EF8530D66E4504179A3BC5F882A5441C034EC2E66E450411E4F6989862A5441A771845066E45041AA37AED4842A5441E4B7E20B66E45041F012F6CE842A54418F851A5E66E45041A8E8141A842A54416DA3470266E45041978711E7832A54417A0A882164E45041978711E7832A54415F10340B63E4504106941EE1852A544145BBF7A861E45041D14AEF78862A5441EB34F1AB60E4504175A02BDB872A5441244D567960E450419469B556892A54413504271161E45041420275378B2A544135A8CF4161E450410C52625E8B2A5441E39CE6F162E4504171D756868A2A544101030000000100000004000000E1D9758B5FE45041ACD76E2F8C2A544104E2FF915FE4504123D5402D8C2A5441D149A98B5FE450417317E32D8C2A5441E1D9758B5FE45041ACD76E2F8C2A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956065 - 3112591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285CAF6D595141CDCCCCAC288A5441713D0A7763595141E17A144E3B8A5441666666566659514152B81E253D8A5441713D0A976C5951419A999949408A5441713D0A9773595141B81E85CB318A544148E17A4480595141D7A370FD1A8A54419A99990978595141E17A14CE158A5441F6285CAF6D595141CDCCCCAC288A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000048E17A4480595141D7A370FD1A8A5441737BB2FD7B595141BFA2AD4B188A54415450990978595141700015CE158A5441CBE3E70E725951414C6326B4208A54414DE630326A5951411855F4082F8A5441000E4533655951417E954B24388A5441BE287BE2635951417ADD398A3A8A5441D6523678635951415DB3D44E3B8A54411496ED1266595141867FE6F93C8A544142DA9A986C5951415E305C46408A5441713D0A9773595141B81E85CB318A5441122C9AB57E595141CBB8F6CA1D8A544148E17A4480595141D7A370FD1A8A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956065 - 3439863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285CAF6D595141CDCCCCAC288A5441713D0A7763595141E17A144E3B8A5441666666566659514152B81E253D8A5441713D0A976C5951419A999949408A5441713D0A9773595141B81E85CB318A544148E17A4480595141D7A370FD1A8A54419A99990978595141E17A14CE158A5441F6285CAF6D595141CDCCCCAC288A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000048E17A4480595141D7A370FD1A8A5441737BB2FD7B595141BFA2AD4B188A54415450990978595141700015CE158A5441CBE3E70E725951414C6326B4208A54414DE630326A5951411855F4082F8A5441000E4533655951417E954B24388A5441BE287BE2635951417ADD398A3A8A5441D6523678635951415DB3D44E3B8A54411496ED1266595141867FE6F93C8A544142DA9A986C5951415E305C46408A5441713D0A9773595141B81E85CB318A5441122C9AB57E595141CBB8F6CA1D8A544148E17A4480595141D7A370FD1A8A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918201 - 3084673
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F00000053ACF5F3E85A5141863DB38E5985544189459AB6DC5A5141DCF8D10141855441240EA5AED85A5141492B9B9D428554411258E3C0D55A5141FA67869743855441ECEB5FE5CF5A5141E36FCA6744855441FF4A35E0C95A5141ABA471914485544153504428C55A51411B3B233E44855441ABEE39A5C55A51418F6ABB1F4985544124B7B8BBCF5A514173DEDD935F8554417CCA0444DB5A514110B3A9815E8554415F9E81CAE05A5141B54BC3FD5D855441925AD934E55A514124F35B945D855441F76E5BA7E75A51412F5A8E595B8554410890CC55E85A5141901ECCB55A85544153ACF5F3E85A5141863DB38E59855441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000014AE47A1F55A5141713D0AE798855441713D0AD7FC5A5141E17A14DE9885544100000010FC5A5141666666D6978554415C8FC245FA5A5141295C8F9294855441AE47E12AF95A5141295C8F929185544148E17A24F85A5141AE47E19A8B85544152B81E35F75A514185EB51787B8554419A999939F65A5141713D0AF775855441B81E85EBF45A5141EC51B8DE71855441F6285C2FF35A5141A4703DAA6D855441713D0AF7E85A5141333333335985544148E17A54E85A51418FC2F5B85A85544114AE4741E55A5141333333935D855441E17A145ED75A5141EC51B8DE5E8554418FC2F5B8D85A5141333333736E855441C3F528FCD95A5141D7A3708D7C855441EC51B8AEDB5A5141666666E6878554415C8FC255DC5A5141D7A370FD91855441C3F528FCDC5A5141C3F5280CA2855441000000D0DC5A51417B14AEB7A5855441B81E850BE55A514114AE4711A7855441C3F5282CF35A51419A999939A7855441A4703DFAF35A51411F85EB21A88554419A999969F65A51413D0AD7A3A6855441E17A142EF75A5141AE47E12AA6855441A4703D0AF65A5141AE47E11AA085544114AE47A1F55A5141713D0AE798855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918201 - 3413148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F00000053ACF5F3E85A5141863DB38E5985544189459AB6DC5A5141DCF8D10141855441240EA5AED85A5141492B9B9D428554411258E3C0D55A5141FA67869743855441ECEB5FE5CF5A5141E36FCA6744855441FF4A35E0C95A5141ABA471914485544153504428C55A51411B3B233E44855441ABEE39A5C55A51418F6ABB1F4985544124B7B8BBCF5A514173DEDD935F8554417CCA0444DB5A514110B3A9815E8554415F9E81CAE05A5141B54BC3FD5D855441925AD934E55A514124F35B945D855441F76E5BA7E75A51412F5A8E595B8554410890CC55E85A5141901ECCB55A85544153ACF5F3E85A5141863DB38E59855441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000014AE47A1F55A5141713D0AE798855441713D0AD7FC5A5141E17A14DE9885544100000010FC5A5141666666D6978554415C8FC245FA5A5141295C8F9294855441AE47E12AF95A5141295C8F929185544148E17A24F85A5141AE47E19A8B85544152B81E35F75A514185EB51787B8554419A999939F65A5141713D0AF775855441B81E85EBF45A5141EC51B8DE71855441F6285C2FF35A5141A4703DAA6D855441713D0AF7E85A5141333333335985544148E17A54E85A51418FC2F5B85A85544114AE4741E55A5141333333935D855441E17A145ED75A5141EC51B8DE5E8554418FC2F5B8D85A5141333333736E855441C3F528FCD95A5141D7A3708D7C855441EC51B8AEDB5A5141666666E6878554415C8FC255DC5A5141D7A370FD91855441C3F528FCDC5A5141C3F5280CA2855441000000D0DC5A51417B14AEB7A5855441B81E850BE55A514114AE4711A7855441C3F5282CF35A51419A999939A7855441A4703DFAF35A51411F85EB21A88554419A999969F65A51413D0AD7A3A6855441E17A142EF75A5141AE47E12AA6855441A4703D0AF65A5141AE47E11AA085544114AE47A1F55A5141713D0AE798855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515925 - 462878
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000FD161F38CFF55041F4BA6AB13011554185EB5108D3F5504152B81ED52D115541AE47E1FAD6F55041F6285C8F2A115541F6285CFFDCF55041713D0A9726115541A83F2E23DEF550417B49421321115541D506B046DFF55041501817F01A1155417B14AE67E0F55041CDCCCC9C15115541E6F2BBCAE0F5504170B3256B1311554132B5DE43E1F550414D059949111155415E4D3169E1F55041D7F63CA710115541A806FC74E1F550417866D61D10115541248ACB3BE0F55041A141D7530F115541713D0AA7DAF55041CDCCCC1C0C11554114AE4701D6F550416666664609115541666666C6D1F55041CDCCCCCC061155413D0AD703CFF550417B14AE0705115541AE47E19ACBF550415C8FC23502115541713D0A07C8F5504166666696FE10554133333333C8F55041D7A3709D02115541000000A0C7F550410AD7A390071155411F85EB71C6F55041295C8F320C115541C3F528CCC3F550410AD7A360151155413417A209C3F5504141D8AFEC1711554154475EA5CEF55041A97272D91A11554161EFFC58CDF550410E916AF71F115541057C3BD8CFF55041F753D4A32011554100D29CB1D2F550416A2A595721115541FD161F38CFF55041F4BA6AB130115541
+</a>
+
+<b>
+010600000001000000010300000001000000170000005C8FC275F0F550418FC2F5B81E11554114AE4741F2F550410AD7A3C01B115541EC51B8BEF0F5504152B81E851A1155415C8FC265EDF55041EC51B84E181155411F85EBA1EAF55041D7A3700D161155411F85EBA1E8F550413D0AD77314115541B81E85CBE3F55041C3F528AC101155417B14AE77E1F55041CDCCCC4C0F1155418FC2F568E1F55041CDCCCCAC101155411F85EBE1E0F550417B14AEE7121155417B14AE67E0F55041CDCCCC9C151155413D0AD723DFF5504148E17A941B1155411F85EBE1DDF550418FC2F57822115541F6285CFFDCF55041713D0A9726115541713D0A47E4F5504152B81EF5211155419A999909E7F5504114AE47612011554166666616E7F55041C3F5282C211155419A9999C9E8F550413333330327115541CDCCCC1CE9F5504185EB51182A1155419A999999E9F5504114AE47612A11554133333373EAF55041666666A629115541F6285C6FECF5504152B81E35251155415C8FC275F0F550418FC2F5B81E115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515925 - 1444620
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000FD161F38CFF55041F4BA6AB13011554185EB5108D3F5504152B81ED52D115541AE47E1FAD6F55041F6285C8F2A115541F6285CFFDCF55041713D0A9726115541A83F2E23DEF550417B49421321115541D506B046DFF55041501817F01A1155417B14AE67E0F55041CDCCCC9C15115541E6F2BBCAE0F5504170B3256B1311554132B5DE43E1F550414D059949111155415E4D3169E1F55041D7F63CA710115541A806FC74E1F550417866D61D10115541248ACB3BE0F55041A141D7530F115541713D0AA7DAF55041CDCCCC1C0C11554114AE4701D6F550416666664609115541666666C6D1F55041CDCCCCCC061155413D0AD703CFF550417B14AE0705115541AE47E19ACBF550415C8FC23502115541713D0A07C8F5504166666696FE10554133333333C8F55041D7A3709D02115541000000A0C7F550410AD7A390071155411F85EB71C6F55041295C8F320C115541C3F528CCC3F550410AD7A360151155413417A209C3F5504141D8AFEC1711554154475EA5CEF55041A97272D91A11554161EFFC58CDF550410E916AF71F115541057C3BD8CFF55041F753D4A32011554100D29CB1D2F550416A2A595721115541FD161F38CFF55041F4BA6AB130115541
+</a>
+
+<b>
+010600000001000000010300000001000000170000005C8FC275F0F550418FC2F5B81E11554114AE4741F2F550410AD7A3C01B115541EC51B8BEF0F5504152B81E851A1155415C8FC265EDF55041EC51B84E181155411F85EBA1EAF55041D7A3700D161155411F85EBA1E8F550413D0AD77314115541B81E85CBE3F55041C3F528AC101155417B14AE77E1F55041CDCCCC4C0F1155418FC2F568E1F55041CDCCCCAC101155411F85EBE1E0F550417B14AEE7121155417B14AE67E0F55041CDCCCC9C151155413D0AD723DFF5504148E17A941B1155411F85EBE1DDF550418FC2F57822115541F6285CFFDCF55041713D0A9726115541713D0A47E4F5504152B81EF5211155419A999909E7F5504114AE47612011554166666616E7F55041C3F5282C211155419A9999C9E8F550413333330327115541CDCCCC1CE9F5504185EB51182A1155419A999999E9F5504114AE47612A11554133333373EAF55041666666A629115541F6285C6FECF5504152B81E35251155415C8FC275F0F550418FC2F5B81E115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515925 - 4131281
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000FD161F38CFF55041F4BA6AB13011554185EB5108D3F5504152B81ED52D115541AE47E1FAD6F55041F6285C8F2A115541F6285CFFDCF55041713D0A9726115541A83F2E23DEF550417B49421321115541D506B046DFF55041501817F01A1155417B14AE67E0F55041CDCCCC9C15115541E6F2BBCAE0F5504170B3256B1311554132B5DE43E1F550414D059949111155415E4D3169E1F55041D7F63CA710115541A806FC74E1F550417866D61D10115541248ACB3BE0F55041A141D7530F115541713D0AA7DAF55041CDCCCC1C0C11554114AE4701D6F550416666664609115541666666C6D1F55041CDCCCCCC061155413D0AD703CFF550417B14AE0705115541AE47E19ACBF550415C8FC23502115541713D0A07C8F5504166666696FE10554133333333C8F55041D7A3709D02115541000000A0C7F550410AD7A390071155411F85EB71C6F55041295C8F320C115541C3F528CCC3F550410AD7A360151155413417A209C3F5504141D8AFEC1711554154475EA5CEF55041A97272D91A11554161EFFC58CDF550410E916AF71F115541057C3BD8CFF55041F753D4A32011554100D29CB1D2F550416A2A595721115541FD161F38CFF55041F4BA6AB130115541
+</a>
+
+<b>
+010600000001000000010300000001000000170000005C8FC275F0F550418FC2F5B81E11554114AE4741F2F550410AD7A3C01B115541EC51B8BEF0F5504152B81E851A1155415C8FC265EDF55041EC51B84E181155411F85EBA1EAF55041D7A3700D161155411F85EBA1E8F550413D0AD77314115541B81E85CBE3F55041C3F528AC101155417B14AE77E1F55041CDCCCC4C0F1155418FC2F568E1F55041CDCCCCAC101155411F85EBE1E0F550417B14AEE7121155417B14AE67E0F55041CDCCCC9C151155413D0AD723DFF5504148E17A941B1155411F85EBE1DDF550418FC2F57822115541F6285CFFDCF55041713D0A9726115541713D0A47E4F5504152B81EF5211155419A999909E7F5504114AE47612011554166666616E7F55041C3F5282C211155419A9999C9E8F550413333330327115541CDCCCC1CE9F5504185EB51182A1155419A999999E9F5504114AE47612A11554133333373EAF55041666666A629115541F6285C6FECF5504152B81E35251155415C8FC275F0F550418FC2F5B81E115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 39472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C544130168849CDFA5041D3D794234D5C54418476D9E2CCFA5041E5072B8F4D5C5441344D1A17CCFA504136DF3A5B4E5C5441B732691FCAFA50410B8A1498505C54416AA664C1C9FA50417B418B0F515C5441EDB8C55BC9FA5041E4260693515C5441A396F5FDC8FA504183736322525C5441A0DDBFA7C8FA5041A68FBCA5525C54419C971449C8FA5041D2B81B35535C5441EF2CA1FBC7FA5041811D6ECF535C5441B58060DDC7FA5041D2182776545C5441E05533E6C7FA504161DFAFF8545C5441B94B04EFC7FA5041A21D5E7A555C5441132988E8C7FA50419BEEFB08565C544162ECF8C9C7FA5041EAFDDA8B565C5441A47F4FABC7FA504183C1C602575C5441619F7DA9C7FA504195E0910A575C5441A4B9EC5DC7FA50413E7AA808585C544165422ED5C5FA5041A36ED9B6595C5441CCB49301C5FA5041C3C4EDD45A5C544101FF48E7C3FA50411A0B07835C5C5441BB006C43C3FA50412AA5CB885D5C5441005B9B20C2FA5041788F5BD75E5C544194D351DEC0FA50411E76173E605C5441A33FEE9BBFFA5041F215E098615C544173E9B8C7BEFA504136391B70625C54412C59C1EABDFA5041A8245D30635C5441F1B85794BDFA50417D84CF9B635C5441BD8C3936BDFA504100CB5207645C5441CF2A3513BCFA50417523FC3D655C5441344648ADBBFA5041980F9D9D655C544112FB0DBDB9FA5041EF65A458675C544120D740F0B8FA50418568CF0C685C5441B76A269EB7FA5041A71BE043695C5441489F52B5B5FA5041E3E2FCDA6A5C544106BE6B2FB5FA50417B29E4176B5C5441993DC990B4FA5041A6AD1A606B5C54413554CFF2B3FA5041335D43916B5C54412D345215B3FA50413344BDE26B5C5441CEEE9ADBB0FA5041763250B46C5C5441D036324EB0FA5041A57354086D5C5441AD01BFC7AFFA5041916D17696D5C5441F0B2C251AFFA5041F2A3C2E06D5C5441A944C865AEFA50417F8C3ECF6E5C544104F14DF7ADFA5041E9E2CC2F6F5C5441D5B55181ADFA5041B51978A76F5C5441C9C904FCACFA5041CCE15D2A705C5441B2E3A28DACFA50416EF00496705C5441E8E1421FACFA504179838602715C5441A0DA44A9ABFA50416F365779715C5441062E942BABFA50415E5B13F1715C544151C8FDADAAFA5041B7BAC274725C54414A835047AAFA504111DC58E0725C54414E2E3AD1A9FA5041C0D9104C735C5441CC4EEF4BA9FA50416827D1CF735C5441B94173CEA8FA5041AFBF735F745C544197CC0150A8FA5041210025E3745C5441561220DAA7FA5041D76FC366755C54419A5AE87BA7FA5041858753C6755C544109AC860DA7FA50415997FA31765C54418D51B135A5FA504114AB9A1C785C54415D2A45C8A4FA504142103394785C54415297E359A4FA50416920DAFF785C5441C64D9CEBA3FA504108677477795C5441ED2BD375A3FA5041E6852B067A5C5441E422501FA3FA504168ACAA657A5C5441A412E4B1A2FA5041F30F43DD7A5C5441193ED352A2FA5041868CAF3D7B5C544111ABC504A2FA504163AA28917B5C54410DE173A6A1FA50414B8CC5E47B5C5441E120783FA1FA5041080D822C7C5C54417F4ABAA99EFA50411209E0AD7E5C5441193536549EFA50416FE4653C7F5C544138093BC69EFA50419286ABBC7F5C54417A65837F9FFA50412E78A9837F5C5441ACAB8B43A1FA5041352918077E5C5441150138D2A1FA5041AFB2DEE27D5C544125FE9668A2FA504108CBB9BD7D5C5441EA4210FFA2FA5041331B88A47D5C5441319A729DA3FA5041E0E62BA37D5C54410C260634A4FA50414873ED957D5C5441851F0FD3A4FA5041E6FDA87C7D5C54414DCF3E71A5FA50416BF240647D5C5441AA19B807A6FA504133570F4B7D5C54418C21179EA6FA5041B58BEA257D5C5441B64E123CA7FA504154249CF57C5C544159509BE2A7FA5041AC6C60C47C5C544193973E89A8FA504123EE179F7C5C5441378A1F27A9FA5041F45ED6627C5C54415A94A8CDA9FA5041CEB49A317C5C54417935F00DAAFA5041EB9574167C5C544179684E09ABFA5041BDF149AC7B5C54411A940AA8ABFA5041C69006707B5C54416B30353EACFA5041CB7EFB327B5C5441C1328E6AADFA5041C06C9ABA7A5C54414F5104F9ADFA5041D451A07D7A5C544162DA308FAEFA504130D16F417A5C54411C1545E0B0FA50415E0BFD5A795C5441C955247EB1FA50416A2CE11D795C544139B43614B2FA5041058ABDD5785C5441BD194852B5FA50412DF39A76775C54415ACEF1DCB6FA50414F2EC3A9765C54417A998D9CB7FA50412BCA06FC755C5441F752B768B8FA5041A5885485755C5441D9FFF10DBAFA504177976F90745C544174E78D4FC3FA5041A0DAB5E96F5C5441AC50335CC5FA5041538B13E26E5C5441188ADB5ECCFA5041D3C599966B5C54412B2EB8E1CDFA50411DDDE0BD6A5C54418784D5A3CFFA50416501AAD8695C5441F0058014D2FA5041BE7F01E6685C5441BD450AF7D3FA50410DA7B0A6685C5441F7DA7187D4FA5041EA00BE93685C5441233BF2CCE0FA5041AEB7A53C635C544190517DF5E7FA50412ED7F1B65F5C5441D0B59098EAFA50414310C35B5E5C54414884391FEBFA5041BFCDE7125E5C5441A7936E9DEBFA5041790DEDD65D5C544123FACB2BECFA5041E1F8008E5D5C5441115F45BAECFA504151B1E2515D5C544198EE26D6EDFA504106FAE6C05C5C544134E9F244EEFA50410FF20D855C5C5441E9F204DBEEFA5041E014113C5C5C5441A0D5C961EFFA50410CB103005C5C5441A1CCCBE7EFFA5041D1EF10CF5B5C544135EBC46EF0FA5041D21DEAAA5B5C544185E6C6F4F0FA50416162F7795B5C544188D38B7BF1FA50419E09EA3D5B5C5441A70CA5F9F1FA5041509B21F55A5C544185E54F80F2FA5041D30021AD5A5C544178237C16F3FA5041E58117705A5C544183821AA4F3FA50413B3EFB335A5C54415968B31AF4FA50414D3B2A035A5C54419EB3B389F4FA504187DA37DF595C5441F6B753E8F4FA50414D359BAE595C5441BB276467F5FA5041D7C39E72595C5441A0A8512CF9FA504115D54CB4575C544158E65B29FBFA5041B6B4F89F565C5441E059EDD4FDFA504106304B17555C5441967F525200FB504185C04748535C5441F6DB1EC100FB50411DFE6E0C535C544126B8E86D01FB5041246E4D94525C5441DE62D4C401FB5041B2C0C163525C5441C3EBC11B02FB504190991034525C54413FE0D78202FB5041E0266EF7515C5441180BAFF002FB5041C0FEA3AF515C5441B22F2E6703FB504199F1DF72515C5441D0E524E603FB50419973F02A515C54412DDC8B5C04FB5041C1A313E3505C5441FC8EA5DA04FB504125824B9A505C54415A1171AC06FB504177551B6E4F5C5441A5DDF53907FB5041CC270C264F5C54410B0E30AA09FB5041DE82E6984D5C5441160465060AFB50413DA217664D5C5441D7A3709D0BFB50415C8FC2954C5C544159DB3AD40BFB5041B4E065694C5C54414810CBCB0DFB50419E1C55604B5C5441C66EACEE0EFB5041FFA5B8944A5C5441DA6B24CB10FB5041B4695255485C54410387628E11FB5041D9763502475C54411DF96E9C12FB50419C3A1D8C445C5441AAAE072213FB5041D820CF9B425C5441AC1643FD0AFB5041DB3B6DD1415C54414AD6DB8D0AFB5041D0846CC6415C54416F95741E0AFB5041F2CF6BBB415C544180911E5009FB5041B19E2DBD415C544118347BE908FB50413BEE00CA415C54415AF2137A08FB5041BE4100BF415C5441E314F80208FB50414D6410B4415C54415F45F68B07FB50419FDD13B5415C5441DC75F41407FB5041785917B6415C54411A0B3E9606FB504130A52BB7415C54415D2C221F06FB504107D23BAC415C5441204D06A805FB504161014CA1415C5441D7E14F2905FB5041615560A2415C5441D438A4A904FB5041F7358397415C5441ACD9EFFF01FB5041AF864586415C54412E04ABBDFEFA50411A8B398C415C544160343B30FAFA5041221D51BA415C54412B07AD56F7FA5041AF3096B4415C54413AA37FD3F4FA504187FF05A3415C5441551EAF54F4FA5041EA602798415C5441CAFD30B6F3FA5041CBF38D8D415C5441BCC08690F2FA504178520F90415C544196F3D9BAE5FA5041D533A405415C54411862F50BE1FA5041266C458D405C544182FE3C98DDFA50412650D60D405C5441D14E357DDDFA50415751BAEE405C5441CCE5F57EDCFA50412C971332495C54412CB6894BDCFA5041BA2DFFEC4B5C54416BC80922DCFA5041D85D0C214E5C5441E1CB4A07DCFA5041B609EB25505C54417FFAA6B9DCFA5041A043E21D515C5441E3FBE1AFE0FA5041F3D9EB9F565C544199F6BA56DFFA504130ED733E575C54412C3BB237D6FA50418F5CF46E5B5C5441AD487305D6FA5041FB615A6B5B5C544163714B3BD4FA50410AF95333585C5441EFAEECFAD3FA5041C56438BD575C544172A85CC2D3FA50410838FF52575C54413E540B59D3FA5041C3436F8A565C54413488AC18D3FA504108A95314565C54414BCE64D0D2FA5041EC586286555C54415E0F5C87D2FA504107306604555C5441E7FACB4ED2FA5041ABF92C9A545C54411F53832ED2FA50411F219953545C54416D69BBA9D1FA504118ECA9B4525C54410ABB5D93D3FA50414EEF6B54505C5441657B52E1D3FA5041F096FFF44F5C5441976B2230D4FA50412C5E91954F5C54417EAA0A7FD4FA504181EC3B414F5C5441A6368FD5D4FA50410CD4BCE14E5C54418932AE33D5FA50410D8F39764E5C5441EFC4328AD5FA50410A76BA164E5C5441BCC751E8D5FA50414F3037AB4D5C5441E389F03ED6FA5041D764AB574D5C5441C0F2C278D6FA504160BBB4304D5C54417E4AE3F8D6FA504189175EDA4C5C54417C0BBFBBD8FA5041F544DCC84E5C544163382D83D9FA5041CD5F250E4E5C54410E8963C3D9FA5041D23590B14D5C54415CBAE4C6D9FA5041B79D82AC4D5C5441BD417A51DAFA50412DC9DA774C5C5441520000001AD3C3BAF8FA5041A99CF71A455C54416FA24ED8F8FA50411E24F045455C5441C15B65DDF8FA5041850D308D455C5441398403CBF8FA5041FF154DD6455C544139CDA67EF8FA504167CBB548465C54419000108EF8FA5041C1269448465C5441987D7586F8FA5041DE4A9854465C5441A0D38047F8FA5041D15B1584465C54413FA749F8F7FA5041687690B4465C5441C7E25DA1F7FA504161641CE5465C5441867A8742F7FA504175FDF7FC465C5441655A33EBF6FA50412AA8B6FD465C54416D077684F6FA504149FA96FE465C54414EE7212DF6FA5041F9A755FF465C5441B3112456F5FA5041221A12F6465C5441DEA54CEFF4FA50413C22FFEA465C5441B0910668F4FA5041FE8926EC465C544102AB9BE1F3FA50415D164CED465C5441D696555AF3FA5041A58473EE465C5441B71636CCF2FA5041D8EBA9EF465C5441AF1C0A45F2FA50414FB2C4FC465C5441F34464FFF0FA50411363B1DB465C54414F12C880F0FA5041C880B9E8465C5441A834B6F9EFFA5041F1A6C701475C54418B2AE36BEFFA50418D92FD25475C5441B5AF15F5EEFA5041E434E83E475C544104ED0B5EEEFA5041DC5C197B475C54419A7BB90FEEFA5041660731A1475C5441AE47E1CAEDFA5041666666A6475C5441866629A9EDFA504189B7A9D5475C544127DCDD49EDFA504129BF040C485C54418E1C91D3ECFA50414C7AD55F485C544138F41465ECFA5041663663C0485C54418F1F72F7EBFA5041628E1420495C5441D897093AEBFA5041FF7242D3495C544104D3B8E3EAFA50413DE6A74A4A5C54414530828DEAFA5041BDA700CE4A5C5441DA56DB3FEAFA504123B146514B5C544142736901EAFA5041F06B84BC4B5C5441530D60C3E9FA5041DD5F8F574C5C5441F5FBBD94E9FA50416B1B9EF14C5C5441C252835EE9FA5041527E8B984D5C5441FEF95D20E9FA5041FA93C8264E5C54413251C2F7E7FA50412DE1C156505C5441B691D0F4E6FA5041D8F5F1BC515C5441FCA98E18E6FA5041DD363470525C54410F354016E6FA5041B9DB6F73525C54416FCF6D08E6FA50415586547D525C54412D756D99E5FA5041CB3C47A1525C54415166B1CAE4FA5041A6BE1774525C544153BE9793E4FA50418CADB550525C544135589E82E4FA50411DB50CFE515C5441E0801392E4FA50419F4B299F515C5441D5A3C498E4FA50415A017228515C5441C29454B7E4FA504109FD92A5505C5441F4B911EEE4FA5041BA23663A505C5441A8B9F01BE5FA5041341B72AB4F5C5441571CD862E5FA5041BC5F2E344F5C544122C42C99E5FA5041FB4B34994E5C5441CF59D2DEE5FA504186BAFFF24D5C5441B07EC11CE6FA50415778014C4D5C54411A85B25AE6FA50418CB7DDA54C5C54412DDD8991E6FA5041BA1DA4464C5C544142F62CC8E6FA50412FE583CF4B5C54418C41390EE7FA5041AAF941584B5C5441109D0655E7FA504103DE0AD54A5C544196AEDE9AE7FA5041B44FE2454A5C5441D3CE93E1E7FA50413E6592B7495C5441F5C40F6DE8FA5041D6995A81485C5441195001A4E8FA50416144142E485C544125FE02EBE8FA50416EBDC3C2475C5441EE7A2249E9FA50412FAE4057475C54412BE0A515EAFA50418E001780465C54419CA5E20FECFA5041647B65EF445C544139AB8718EDFA504180218684445C54417C3768A0EEFA5041A8B8D423445C5441B5D95A65F0FA50410A887547445C54419D77E4BDF2FA5041BC782D70445C54416A8BF35DF5FA50410FCE5495445C5441D0DCA9B2F6FA50417BBE2AA8445C5441E24F53A0F8FA5041BE6E82F4445C54411AD3C3BAF8FA5041A99CF71A455C5441
+</a>
+
+<b>
+010600000001000000010300000001000000780100009CCD26ED9FFA50419A6B5B277F5C544153AD54DF9FFA5041122E239F7F5C54415451F50DA0FA50416FFB81AC7F5C54412F956980A0FA5041C0C253CD7F5C54414086330DA1FA5041A12D17A37F5C544194A81F88A2FA504121F069317F5C54416857851AA4FA504147D5B1B87E5C54417556458BA5FA50418FD5114A7E5C5441940346A0A6FA50410508F8F67D5C544175E2756EA7FA5041C1DE1CB97D5C544121768CF9A7FA5041A7E5628F7D5C544129F40262A8FA50413E260C707D5C5441A67FC5FBA8FA5041CB62EB417D5C54419E543C5BA9FA504181BC47257D5C5441F7395B9DA9FA5041E6AA71117D5C5441B67BB2CCA9FA5041F9E33D037D5C5441C4E8AEFDA9FA5041D9DFF9F27C5C5441315AB58DAAFA5041623930B07C5C54410631FEEEAAFA5041DC4A13837C5C544170C06570ABFA5041FF4C11477C5C54419EA507E2ABFA504131AA5F127C5C5441369DA530ACFA504196CDEAED7B5C5441AC3947DBACFA50415FA9CA9E7B5C544138758E62ADFA504126620F607B5C54411C9A8012AEFA50411455780E7B5C54419D98AF1FAFFA5041CCC2A4917A5C54414A9EA851B1FA5041F3530B8D795C5441C5776698B2FA5041C1DF86F5785C54416597361BB4FA5041892B2742785C544144085C65B5FA50412C8A0EA9775C5441FA6B7185B6FA5041C94B7723775C5441D75958C1B7FA504188A2F990765C54416F123EE2B8FA50417DC8010B765C544113CC26D2B9FA5041DD78C19B755C54419EA1A4B1BBFA5041EE9F67BD745C5441E19FD16FBDFA5041BBCA80EE735C5441BAFC6C15BFFA5041069AFE2A735C5441A4EC2375C0FA5041A487E587725C54416A1D4088C2FA5041B72C4590715C5441159A591FC4FA504181EEFDCF705C5441CEE7F36EC6FA5041810792B86F5C54416E476840C8FA5041DDF5BADC6E5C5441F8FEDB75CAFA504114FFA8D16D5C5441940AF060CBFA50414D32A1626D5C54415CA1F9CCCCFA504137AEB0B66C5C54416C6444A0CDFA504176B6CA536C5C5441D86D8163CEFA50418E02BCFE6B5C544138510DFCCEFA50413AB146BC6B5C5441A6AD5E72CFFA5041D5D9BA886B5C54418E41779AD0FA504119A0BB076B5C544126FB8211D1FA5041C497DED36A5C54413644AF71D1FA50417289F8A96A5C5441BA068D5ED2FA50414122C7426A5C5441FB2A8D25D3FA504172D814EC695C54414CD8B50BD4FA50416581CF87695C5441D9B39694D4FA504167A12D4C695C5441E5F27AD2D4FA5041FEEF3631695C54412827DEDAD5FA5041031F08BE685C5441582EAE02D7FA5041A880283D685C54418533C085D8FA5041E4038794675C544116242861D9FA504144EEF034675C544168236AAAD9FA504112329115675C5441ECDDDCE8D9FA504192BA8AF8665C54410DCB4B9FDAFA5041378CB5A4665C5441E881213ADBFA5041D4028F5D665C5441E06F546CDCFA5041BE39DAD0655C5441D7A88BC5DDFA5041D3903732655C54418FB240CDDEFA5041A07209B9645C544124B26BA7DFFA5041C37EC854645C54418748FEE4DFFA5041902F7D38645C5441C5652CB1E0FA50418DBDA9DA635C544142B032CDE1FA5041BC832558635C5441AC9529F6E2FA50410010AFCF625C544116688841E4FA504110256937625C5441639BE39FE4FA504170370D0C625C544162E7E0E8E5FA50411E64DF74615C54415CE39A54E7FA50415A26BBCD605C5441A0116CC6E8FA50410E6BCA23605C5441BE619E40EAFA50419CF1FF755F5C54413236D072EBFA5041E4A94BE95E5C5441D393F375ECFA50412F0A37725E5C5441AB714251EDFA504161F76F0D5E5C544111DEA448EEFA50412507C29B5D5C5441EEA1EBD6EEFA504191D7605A5D5C5441385A8FB9EFFA50418C4E3BF25C5C5441FC23ED9DF0FA5041389B9D865C5C54411347905DF1FA50416B47C4255C5C5441F2F0047FF2FA5041788E7B935B5C54415E1AE462F3FA5041805852205B5C544148F1F21AF4FA50414E994DC35A5C5441A0A1439FF5FA504192CC0EFF595C5441D6A35966F7FA50419C701119595C544176960B70F8FA504131C7CA92585C5441775A0D6AF9FA5041BCCC7114585C54414B7BB622FAFA50413B141FB7575C544159DFD260FBFA5041B40D5B16575C544140444C10FCFA5041F5D7ACBD565C5441369B37A5FCFA5041A4356A72565C54417300A31BFDFA50419B869136565C54412BC80DE7FDFA5041ED29C4CF555C5441EC977529FEFA504176DC34AE555C544149AF9D50FEFA50412EEC6A9A555C544114041076FEFA504125E14C87555C544126C90587FEFA5041BB3B1A7D555C5441B818B4EFFEFA504190C7283E555C54416AF93974FFFA50414D9E79EE545C5441E88EE75F00FB504158DEC360545C544172AFA93A01FB504156903ADD535C544153F0D51D02FB50414103A254535C54415233D69102FB5041A80FE20E535C54415B84CD6303FB50414123A290525C544157E684F503FB504123210439525C54419EEBE51405FB50413418388C515C54411A332C5005FB5041A0029468515C5441551D2DBE05FB5041D03D6F26515C5441ADDA7C1D07FB5041ED1F3253505C5441884793C407FB50414974BAEE4F5C54411F761BBC08FB5041E60AE4594F5C5441474E3D4D09FB50411EF39F024F5C54411AA05A310AFB5041E67276794E5C54417C5A72F00AFB5041EA8AE8464E5C544148E17A740BFB504152B81E254E5C5441E9FA54980BFB50416CB580064E5C5441A0F33FEC0BFB5041E573D6BE4D5C5441DC7E26AD0CFB504152391A1A4D5C5441790AC32E0DFB504188596AAB4C5C54414EB0B0380EFB504181AD50C84B5C54411BD8F7290FFB5041611B44FA4A5C5441AE8E184E10FB504101AACA004A5C54417B14AEC710FB50418FC2F598495C5441396C0AF210FB5041141AE020495C544111B5732611FB504111A44C8C485C5441B8AD83A411FB5041A1B6EF26475C54412CCB8F7711FB50414798D929475C54411B15537711FB5041FD0A432A475C54414A93BF6511FB50413C26CA48475C5441976A6D4911FB504142CFFA79475C54414470292011FB50416A2DA7C1475C54412F65930011FB504139AB83F8475C5441010D53E410FB50412A639529485C5441516DCCDB10FB5041C54A8B3C485C5441E6821DC910FB5041D010C557485C54413F4E17AC10FB50411507D27A485C54416A5E04DC0FFB5041FAF01876495C54418F7C8E690FFB5041E6DC52004A5C544114D0CA2D0FFB504130417F484A5C5441C9A3D6030FFB50414E71297B4A5C54414FF636EB0EFB5041687624974A5C54418B4BA8D20EFB5041270555A84A5C544149CA1D3C0EFB5041A54DB5114B5C544138E4BB170EFB5041D2DE2C2B4B5C544105C6540A0EFB5041E2978E344B5C5441F8D899D40DFB504160CD2A5A4B5C544107F1199A0DFB50417F407D7A4B5C5441544931510DFB504174F2DDA04B5C5441B198B9170DFB5041B8E11DBF4B5C5441CBDBB0980CFB50412423FC014C5C5441BBAD10740CFB50415E9143154C5C5441F4BBB3430CFB504138A5B82E4C5C544169DADB260CFB5041CD5EE73D4C5C5441522209E60BFB5041447E06604C5C5441EF49DDC50BFB5041948307754C5C5441E5008A980BFB5041F3B344984C5C544192D508160BFB5041310C10DB4C5C5441110465060AFB50413EA217664D5C544102D18DAA09FB5041B4D8B2984D5C5441AA32297C09FB5041B8052FB64D5C54416942418D08FB5041BD4F2E4E4E5C544146D5AF2A08FB50415E5EE48C4E5C544167D498F807FB5041C0A4C2AC4E5C54416732979607FB504155371DEB4E5C5441F696B07E07FB5041FA0152FA4E5C5441E071275C07FB5041F0EF4A104F5C54415117773807FB50410F0FCF264F5C54413C66312107FB504108A1A8324F5C5441C558E70207FB504150E114424F5C5441B79A589C06FB50413DD37A784F5C5441A75EA57D04FB5041FBF4F8CF505C5441F2FC14BC03FB5041735EC542515C5441CC26F72B03FB50417E973D91515C54417051340103FB504152322BA7515C5441664D13ED02FB504120BCFFB1515C54411E59BDB702FB504193B3DBD4515C544139FFAF0E02FB5041B84D3C3B525C544128B418E401FB504101469A52525C5441B14698A901FB5041DCB6F772525C5441D5149D8F01FB504163717A81525C54413264D76401FB5041FF549B9A525C5441A9A17C4001FB5041CBD9E1B3525C5441F955B8BE00FB504108ECBA0D535C5441F048A8A300FB5041320C591C535C5441CDA7737100FB504139487737535C5441DE2EE74600FB5041DB4A9350535C5441DD75C996FEFA50419694788A545C5441C3EC5079FEFA50417C0BE19F545C54412FC9912EFEFA504134192DD6545C544123FB7F12FEFA5041BAF990EA545C5441858AC3EAFDFA5041A9636E07555C54417BE250D7FDFA5041DDF58E15555C5441C5177CC5FDFA504119262A20555C5441362A8071FDFA5041FAD86850555C5441B7ED48D1FBFA50412E87813F565C54410A0AFB8BFBFA5041FE685167565C5441A41DF55AFBFA50416DC07A83565C5441E7312EEEFAFA5041929C18C0565C544139B40B5CFAFA5041079F6C0F575C5441A6EF7DD2F9FA5041E527185A575C5441117C5C2BF9FA5041553CBEB4575C544185949B1FF7FA5041B35800A7585C54415FC8347FF5FA5041E7D09A67595C54412CFC56BAF4FA5041113C3BC6595C5441A1B3B389F4FA504182DA37DF595C5441D2A8806EF4FA5041B8C606E8595C54414C66F32CF4FA5041C8C709FB595C5441D131DD08F4FA504142C1810A5A5C54413A5F59D3F3FA5041EACF88205A5C54411F5528B8F3FA50411AAAA8265A5C5441F42A2A7FF3FA504139C658415A5C54415168EBAFF2FA50413471C7995A5C5441E0EABC8EF2FA5041ACFD43A75A5C5441A84C1A78F2FA50410EA984B15A5C54415E07524FF2FA5041A4BD52C75A5C5441524DA2E1F1FA50413174FD025B5C5441EF169FA9F1FA504101EB51235B5C5441D482356AF1FA504177B7A3455B5C544156630F2EF1FA50416B0071605B5C5441F4AC2E09F1FA5041D9B5DF705B5C544134E025B8F0FA5041FEA61C905B5C544194542E79F0FA5041CC891CA75B5C54414D5F0935F0FA5041F0B760BA5B5C544113DEC0E9EFFA5041A3BA8ACE5B5C54415A165898EFFA5041535016EC5B5C5441B6C62C4FEFFA50412CF94E085C5C5441925ABB04EFFA5041FDD87A295C5C544160D31E7CEEFA5041EEAF386A5C5C5441DB841C4DEEFA50415E9568815C5C544166B89BE9EDFA50415B9064B65C5C5441C011DE88EDFA5041BE775FE85C5C54417F13C6C8ECFA5041E18B7A4A5D5C5441AB76C417ECFA5041C06343985D5C5441F4AD8014EBFA5041B1E0B4185E5C544184166BC8E9FA50416A2BCFC65E5C54415E04D486E8FA5041BFEA326C5F5C5441E98E719DE5FA5041997B32DE605C5441BCEB4758E5FA5041F3893A00615C544184ED3D47E4FA5041CFD59386615C5441DEF38A8AE2FA5041C4406461625C54418C67DDE8E1FA50413AF9F1B0625C544193D99B85E1FA5041A6BDC8E1625C5441D2E464DBE0FA50417FCA8935635C5441FDA4E3A2E0FA50410A0AF34E635C54417A0293E1DFFA50411B2113A3635C54419C165E98DFFA50416FA9EEC2635C5441EAD32585DFFA5041DAD24BCB635C54419F5BF7F4DDFA504147B47179645C54417CFF6315DBFA5041C6E08BB9655C5441C48BF2AAD9FA5041C38C4557665C5441C0969332D8FA5041CBD40EFB665C5441D0E20CCDD6FA5041E8BAA496675C5441C6843FF9D5FA5041FF5FD0F2675C544119BECEA4D4FA504188DCF686685C5441EAC09E87D4FA50411477AA93685C5441D7554A57D4FA5041AC8A0F9A685C5441BF28A023D4FA5041E3FED6A0685C5441CAA31CB7D3FA5041BF0B14AF685C544152DEEC10D2FA50412E0065E7685C544197136074D1FA5041C2423524695C5441EC821AE9D0FA50415B454F5A695C5441F939A5A2D0FA5041430CAE75695C544169DA2874D0FA50412CE0BC87695C54418E8B7246D0FA50414BC37E99695C54410E3A2E1ED0FA5041C92323A9695C544132EB77F0CFFA5041E806E5BA695C5441318E56D1CFFA5041CDCFFCC6695C54415A6DE3ABCFFA5041DD0889D5695C5441ABB96184CFFA50416643AEE8695C54415689284ECFFA50415A0E4B046A5C5441134B7C3ACFFA50417DB04F0E6A5C544129413F0FCFFA5041926F54246A5C5441B625EEBACDFA504105BA9BD36A5C5441B303EB48CDFA5041BB877A136B5C5441325C9B94CCFA5041AD707D786B5C54410319001ACCFA5041748AF6B66B5C54415CA8A501CAFA5041338F0BB36C5C5441DC3980AFC5FA504129FEECBA6E5C5441141906F5C1FA5041C26CD797705C544179460E38C0FA5041DFF86F77715C5441CF4F0D68BEFA504140449960725C5441703973F8BCFA5041F7745119735C5441AC5F9B68BBFA504120273DE2735C5441630DCC2CBAFA504178D4EE80745C54413213D897B9FA5041EAFE18D5745C5441808C9D81B8FA504192AFDA76755C54419C791CFCB7FA5041148F78C4755C5441374C18D0B7FA50415EA70FDE755C5441B7CD3EAEB7FA5041AB99BDF1755C5441A841129FB7FA5041B9FF8FFA755C54411CF8A37EB7FA5041BA232617765C5441E010975DB7FA5041E1D51D35765C5441BF1FCA3CB7FA50414289DB52765C544141797225B7FA5041C8CB0568765C544165AE6605B7FA5041155D1485765C5441FDDEC1F1B6FA5041071AE496765C5441E5684BE1B6FA50416973D1A5765C5441238738A6B6FA504157732AC6765C5441B369405FB6FA5041914A00EB765C5441799E1104B6FA504148F5531A775C54411FF9D0F6B5FA5041F2D93421775C54412A93CEE5B5FA5041DCEC082A775C5441F44FF1A5B5FA5041FBB82E4B775C54413D37FD6DB5FA5041A2643968775C5441A4F9DA4FB5FA5041BCB2A177775C544105CDB525B5FA50414FBB7589775C5441AE75610DB5FA50415C71C093775C54416E71E9C1B4FA5041DA30ADB3775C54413983A794B4FA50419644D2C6775C5441516BBF5EB4FA5041C4FA9FDD775C544189D06E14B4FA504132C30FFD775C5441938D42DAB3FA5041987BAB15785C5441BEC8919FB3FA50419E417F2E785C54416CD179D3B2FA5041242DD584785C54418721C42DB2FA5041F462EECA785C5441D7A404FDB1FA5041B49EF5E0785C54415DC1C846B1FA50418EAF4E33795C54411A3C8F9DAFFA50414DB261D8795C54418C7816A3AEFA5041B4A0B4397A5C544162C85333AEFA5041F16A41667A5C54415F3EA0FEADFA50418ECD607B7A5C54413EDFEFD2ADFA5041AEE4EC8D7A5C544196DDD532ADFA5041A28FEFD07A5C5441AFE7ABF6AAFA504183CA28B47B5C5441F7D24444AAFA5041AC3582FF7B5C54414D7269FCA9FA5041D297DB1D7C5C544135E47BD5A9FA5041D9984C2E7C5C544159E004BEA9FA50419B533A367C5C544182C9419CA9FA5041BA7E35407C5C5441B6ED8826A9FA504171DA0F637C5C54412F3CF902A9FA50410160A2707C5C54418AC154B7A8FA5041F808818D7C5C54417A8CFD87A8FA50417BC25F9F7C5C544147FDF859A8FA50413784ABA97C5C5441AD57CE36A8FA5041C7BF89B17C5C54415DFCA312A8FA50413BC4B2B97C5C544156E2BADEA7FA5041A6DCA0C77C5C54419C3C8F91A7FA5041DF3C56DC7C5C54413F7C7283A6FA50417D567F2C7D5C54418C162F58A6FA5041791C2F377D5C5441A630B541A6FA5041F066BC3C7D5C54410F147B16A6FA5041BFE169477D5C54411BD191E4A5FA50418FEBF1507D5C5441653997BDA5FA5041E8A178577D5C5441429FD986A5FA5041CCECA2607D5C5441D91CA1A9A4FA5041E0113E837D5C54410101DB77A4FA5041BA87268B7D5C54411852D325A4FA5041E0262D977D5C5441D74D6EF3A3FA50418ADC9B9B7D5C5441AAB186C5A3FA50419979A59F7D5C5441F76A6693A3FA5041C9FD41A37D5C54419699E271A3FA504159AC8BA37D5C544144340052A3FA504136C5D1A37D5C5441363FB43CA3FA50413B9700A47D5C5441211B9D02A3FA5041234D80A47D5C54415D1633DFA2FA504180E0DDA97D5C54415EB5E4A7A2FA5041BA7020B37D5C5441E02A9F7AA2FA504103E6B4BA7D5C5441E706B255A2FA5041BC9A64C27D5C544130ED383AA2FA5041CEE52DC97D5C5441FC2FE92BA2FA504110DB8ECE7D5C5441B135DB07A2FA50416CDC9ED57D5C5441059D19BFA1FA50418B5EE9E77D5C5441407E10E4A0FA504168F57A577E5C5441AF885CE0A0FA5041820C995A7E5C54418DB9C8A3A0FA5041D420998D7E5C544144D8357FA0FA504122C563AC7E5C5441A5EE0B30A0FA5041ADB609EF7E5C54419CCD26ED9FFA50419A6B5B277F5C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 53795
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C544130168849CDFA5041D3D794234D5C54418476D9E2CCFA5041E5072B8F4D5C5441344D1A17CCFA504136DF3A5B4E5C5441B732691FCAFA50410B8A1498505C54416AA664C1C9FA50417B418B0F515C5441EDB8C55BC9FA5041E4260693515C5441A396F5FDC8FA504183736322525C5441A0DDBFA7C8FA5041A68FBCA5525C54419C971449C8FA5041D2B81B35535C5441EF2CA1FBC7FA5041811D6ECF535C5441B58060DDC7FA5041D2182776545C5441E05533E6C7FA504161DFAFF8545C5441B94B04EFC7FA5041A21D5E7A555C5441132988E8C7FA50419BEEFB08565C544162ECF8C9C7FA5041EAFDDA8B565C5441A47F4FABC7FA504183C1C602575C5441619F7DA9C7FA504195E0910A575C5441A4B9EC5DC7FA50413E7AA808585C544165422ED5C5FA5041A36ED9B6595C5441CCB49301C5FA5041C3C4EDD45A5C544101FF48E7C3FA50411A0B07835C5C5441BB006C43C3FA50412AA5CB885D5C5441005B9B20C2FA5041788F5BD75E5C544194D351DEC0FA50411E76173E605C5441A33FEE9BBFFA5041F215E098615C544173E9B8C7BEFA504136391B70625C54412C59C1EABDFA5041A8245D30635C5441F1B85794BDFA50417D84CF9B635C5441BD8C3936BDFA504100CB5207645C5441CF2A3513BCFA50417523FC3D655C5441344648ADBBFA5041980F9D9D655C544112FB0DBDB9FA5041EF65A458675C544120D740F0B8FA50418568CF0C685C5441B76A269EB7FA5041A71BE043695C5441489F52B5B5FA5041E3E2FCDA6A5C544106BE6B2FB5FA50417B29E4176B5C5441993DC990B4FA5041A6AD1A606B5C54413554CFF2B3FA5041335D43916B5C54412D345215B3FA50413344BDE26B5C5441CEEE9ADBB0FA5041763250B46C5C5441D036324EB0FA5041A57354086D5C5441AD01BFC7AFFA5041916D17696D5C5441F0B2C251AFFA5041F2A3C2E06D5C5441A944C865AEFA50417F8C3ECF6E5C544104F14DF7ADFA5041E9E2CC2F6F5C5441D5B55181ADFA5041B51978A76F5C5441C9C904FCACFA5041CCE15D2A705C5441B2E3A28DACFA50416EF00496705C5441E8E1421FACFA504179838602715C5441A0DA44A9ABFA50416F365779715C5441062E942BABFA50415E5B13F1715C544151C8FDADAAFA5041B7BAC274725C54414A835047AAFA504111DC58E0725C54414E2E3AD1A9FA5041C0D9104C735C5441CC4EEF4BA9FA50416827D1CF735C5441B94173CEA8FA5041AFBF735F745C544197CC0150A8FA5041210025E3745C5441561220DAA7FA5041D76FC366755C54419A5AE87BA7FA5041858753C6755C544109AC860DA7FA50415997FA31765C54418D51B135A5FA504114AB9A1C785C54415D2A45C8A4FA504142103394785C54415297E359A4FA50416920DAFF785C5441C64D9CEBA3FA504108677477795C5441ED2BD375A3FA5041E6852B067A5C5441E422501FA3FA504168ACAA657A5C5441A412E4B1A2FA5041F30F43DD7A5C5441193ED352A2FA5041868CAF3D7B5C544111ABC504A2FA504163AA28917B5C54410DE173A6A1FA50414B8CC5E47B5C5441E120783FA1FA5041080D822C7C5C54417F4ABAA99EFA50411209E0AD7E5C5441193536549EFA50416FE4653C7F5C544138093BC69EFA50419286ABBC7F5C54417A65837F9FFA50412E78A9837F5C5441ACAB8B43A1FA5041352918077E5C5441150138D2A1FA5041AFB2DEE27D5C544125FE9668A2FA504108CBB9BD7D5C5441EA4210FFA2FA5041331B88A47D5C5441319A729DA3FA5041E0E62BA37D5C54410C260634A4FA50414873ED957D5C5441851F0FD3A4FA5041E6FDA87C7D5C54414DCF3E71A5FA50416BF240647D5C5441AA19B807A6FA504133570F4B7D5C54418C21179EA6FA5041B58BEA257D5C5441B64E123CA7FA504154249CF57C5C544159509BE2A7FA5041AC6C60C47C5C544193973E89A8FA504123EE179F7C5C5441378A1F27A9FA5041F45ED6627C5C54415A94A8CDA9FA5041CEB49A317C5C54417935F00DAAFA5041EB9574167C5C544179684E09ABFA5041BDF149AC7B5C54411A940AA8ABFA5041C69006707B5C54416B30353EACFA5041CB7EFB327B5C5441C1328E6AADFA5041C06C9ABA7A5C54414F5104F9ADFA5041D451A07D7A5C544162DA308FAEFA504130D16F417A5C54411C1545E0B0FA50415E0BFD5A795C5441C955247EB1FA50416A2CE11D795C544139B43614B2FA5041058ABDD5785C5441BD194852B5FA50412DF39A76775C54415ACEF1DCB6FA50414F2EC3A9765C54417A998D9CB7FA50412BCA06FC755C5441F752B768B8FA5041A5885485755C5441D9FFF10DBAFA504177976F90745C544174E78D4FC3FA5041A0DAB5E96F5C5441AC50335CC5FA5041538B13E26E5C5441188ADB5ECCFA5041D3C599966B5C54412B2EB8E1CDFA50411DDDE0BD6A5C54418784D5A3CFFA50416501AAD8695C5441F0058014D2FA5041BE7F01E6685C5441BD450AF7D3FA50410DA7B0A6685C5441F7DA7187D4FA5041EA00BE93685C5441233BF2CCE0FA5041AEB7A53C635C544190517DF5E7FA50412ED7F1B65F5C5441D0B59098EAFA50414310C35B5E5C54414884391FEBFA5041BFCDE7125E5C5441A7936E9DEBFA5041790DEDD65D5C544123FACB2BECFA5041E1F8008E5D5C5441115F45BAECFA504151B1E2515D5C544198EE26D6EDFA504106FAE6C05C5C544134E9F244EEFA50410FF20D855C5C5441E9F204DBEEFA5041E014113C5C5C5441A0D5C961EFFA50410CB103005C5C5441A1CCCBE7EFFA5041D1EF10CF5B5C544135EBC46EF0FA5041D21DEAAA5B5C544185E6C6F4F0FA50416162F7795B5C544188D38B7BF1FA50419E09EA3D5B5C5441A70CA5F9F1FA5041509B21F55A5C544185E54F80F2FA5041D30021AD5A5C544178237C16F3FA5041E58117705A5C544183821AA4F3FA50413B3EFB335A5C54415968B31AF4FA50414D3B2A035A5C54419EB3B389F4FA504187DA37DF595C5441F6B753E8F4FA50414D359BAE595C5441BB276467F5FA5041D7C39E72595C5441A0A8512CF9FA504115D54CB4575C544158E65B29FBFA5041B6B4F89F565C5441E059EDD4FDFA504106304B17555C5441967F525200FB504185C04748535C5441F6DB1EC100FB50411DFE6E0C535C544126B8E86D01FB5041246E4D94525C5441DE62D4C401FB5041B2C0C163525C5441C3EBC11B02FB504190991034525C54413FE0D78202FB5041E0266EF7515C5441180BAFF002FB5041C0FEA3AF515C5441B22F2E6703FB504199F1DF72515C5441D0E524E603FB50419973F02A515C54412DDC8B5C04FB5041C1A313E3505C5441FC8EA5DA04FB504125824B9A505C54415A1171AC06FB504177551B6E4F5C5441A5DDF53907FB5041CC270C264F5C54410B0E30AA09FB5041DE82E6984D5C5441160465060AFB50413DA217664D5C5441D7A3709D0BFB50415C8FC2954C5C544159DB3AD40BFB5041B4E065694C5C54414810CBCB0DFB50419E1C55604B5C5441C66EACEE0EFB5041FFA5B8944A5C5441DA6B24CB10FB5041B4695255485C54410387628E11FB5041D9763502475C54411DF96E9C12FB50419C3A1D8C445C5441AAAE072213FB5041D820CF9B425C5441AC1643FD0AFB5041DB3B6DD1415C54414AD6DB8D0AFB5041D0846CC6415C54416F95741E0AFB5041F2CF6BBB415C544180911E5009FB5041B19E2DBD415C544118347BE908FB50413BEE00CA415C54415AF2137A08FB5041BE4100BF415C5441E314F80208FB50414D6410B4415C54415F45F68B07FB50419FDD13B5415C5441DC75F41407FB5041785917B6415C54411A0B3E9606FB504130A52BB7415C54415D2C221F06FB504107D23BAC415C5441204D06A805FB504161014CA1415C5441D7E14F2905FB5041615560A2415C5441D438A4A904FB5041F7358397415C5441ACD9EFFF01FB5041AF864586415C54412E04ABBDFEFA50411A8B398C415C544160343B30FAFA5041221D51BA415C54412B07AD56F7FA5041AF3096B4415C54413AA37FD3F4FA504187FF05A3415C5441551EAF54F4FA5041EA602798415C5441CAFD30B6F3FA5041CBF38D8D415C5441BCC08690F2FA504178520F90415C544196F3D9BAE5FA5041D533A405415C54411862F50BE1FA5041266C458D405C544182FE3C98DDFA50412650D60D405C5441D14E357DDDFA50415751BAEE405C5441CCE5F57EDCFA50412C971332495C54412CB6894BDCFA5041BA2DFFEC4B5C54416BC80922DCFA5041D85D0C214E5C5441E1CB4A07DCFA5041B609EB25505C54417FFAA6B9DCFA5041A043E21D515C5441E3FBE1AFE0FA5041F3D9EB9F565C544199F6BA56DFFA504130ED733E575C54412C3BB237D6FA50418F5CF46E5B5C5441AD487305D6FA5041FB615A6B5B5C544163714B3BD4FA50410AF95333585C5441EFAEECFAD3FA5041C56438BD575C544172A85CC2D3FA50410838FF52575C54413E540B59D3FA5041C3436F8A565C54413488AC18D3FA504108A95314565C54414BCE64D0D2FA5041EC586286555C54415E0F5C87D2FA504107306604555C5441E7FACB4ED2FA5041ABF92C9A545C54411F53832ED2FA50411F219953545C54416D69BBA9D1FA504118ECA9B4525C54410ABB5D93D3FA50414EEF6B54505C5441657B52E1D3FA5041F096FFF44F5C5441976B2230D4FA50412C5E91954F5C54417EAA0A7FD4FA504181EC3B414F5C5441A6368FD5D4FA50410CD4BCE14E5C54418932AE33D5FA50410D8F39764E5C5441EFC4328AD5FA50410A76BA164E5C5441BCC751E8D5FA50414F3037AB4D5C5441E389F03ED6FA5041D764AB574D5C5441C0F2C278D6FA504160BBB4304D5C54417E4AE3F8D6FA504189175EDA4C5C54417C0BBFBBD8FA5041F544DCC84E5C544163382D83D9FA5041CD5F250E4E5C54410E8963C3D9FA5041D23590B14D5C54415CBAE4C6D9FA5041B79D82AC4D5C5441BD417A51DAFA50412DC9DA774C5C5441520000001AD3C3BAF8FA5041A99CF71A455C54416FA24ED8F8FA50411E24F045455C5441C15B65DDF8FA5041850D308D455C5441398403CBF8FA5041FF154DD6455C544139CDA67EF8FA504167CBB548465C54419000108EF8FA5041C1269448465C5441987D7586F8FA5041DE4A9854465C5441A0D38047F8FA5041D15B1584465C54413FA749F8F7FA5041687690B4465C5441C7E25DA1F7FA504161641CE5465C5441867A8742F7FA504175FDF7FC465C5441655A33EBF6FA50412AA8B6FD465C54416D077684F6FA504149FA96FE465C54414EE7212DF6FA5041F9A755FF465C5441B3112456F5FA5041221A12F6465C5441DEA54CEFF4FA50413C22FFEA465C5441B0910668F4FA5041FE8926EC465C544102AB9BE1F3FA50415D164CED465C5441D696555AF3FA5041A58473EE465C5441B71636CCF2FA5041D8EBA9EF465C5441AF1C0A45F2FA50414FB2C4FC465C5441F34464FFF0FA50411363B1DB465C54414F12C880F0FA5041C880B9E8465C5441A834B6F9EFFA5041F1A6C701475C54418B2AE36BEFFA50418D92FD25475C5441B5AF15F5EEFA5041E434E83E475C544104ED0B5EEEFA5041DC5C197B475C54419A7BB90FEEFA5041660731A1475C5441AE47E1CAEDFA5041666666A6475C5441866629A9EDFA504189B7A9D5475C544127DCDD49EDFA504129BF040C485C54418E1C91D3ECFA50414C7AD55F485C544138F41465ECFA5041663663C0485C54418F1F72F7EBFA5041628E1420495C5441D897093AEBFA5041FF7242D3495C544104D3B8E3EAFA50413DE6A74A4A5C54414530828DEAFA5041BDA700CE4A5C5441DA56DB3FEAFA504123B146514B5C544142736901EAFA5041F06B84BC4B5C5441530D60C3E9FA5041DD5F8F574C5C5441F5FBBD94E9FA50416B1B9EF14C5C5441C252835EE9FA5041527E8B984D5C5441FEF95D20E9FA5041FA93C8264E5C54413251C2F7E7FA50412DE1C156505C5441B691D0F4E6FA5041D8F5F1BC515C5441FCA98E18E6FA5041DD363470525C54410F354016E6FA5041B9DB6F73525C54416FCF6D08E6FA50415586547D525C54412D756D99E5FA5041CB3C47A1525C54415166B1CAE4FA5041A6BE1774525C544153BE9793E4FA50418CADB550525C544135589E82E4FA50411DB50CFE515C5441E0801392E4FA50419F4B299F515C5441D5A3C498E4FA50415A017228515C5441C29454B7E4FA504109FD92A5505C5441F4B911EEE4FA5041BA23663A505C5441A8B9F01BE5FA5041341B72AB4F5C5441571CD862E5FA5041BC5F2E344F5C544122C42C99E5FA5041FB4B34994E5C5441CF59D2DEE5FA504186BAFFF24D5C5441B07EC11CE6FA50415778014C4D5C54411A85B25AE6FA50418CB7DDA54C5C54412DDD8991E6FA5041BA1DA4464C5C544142F62CC8E6FA50412FE583CF4B5C54418C41390EE7FA5041AAF941584B5C5441109D0655E7FA504103DE0AD54A5C544196AEDE9AE7FA5041B44FE2454A5C5441D3CE93E1E7FA50413E6592B7495C5441F5C40F6DE8FA5041D6995A81485C5441195001A4E8FA50416144142E485C544125FE02EBE8FA50416EBDC3C2475C5441EE7A2249E9FA50412FAE4057475C54412BE0A515EAFA50418E001780465C54419CA5E20FECFA5041647B65EF445C544139AB8718EDFA504180218684445C54417C3768A0EEFA5041A8B8D423445C5441B5D95A65F0FA50410A887547445C54419D77E4BDF2FA5041BC782D70445C54416A8BF35DF5FA50410FCE5495445C5441D0DCA9B2F6FA50417BBE2AA8445C5441E24F53A0F8FA5041BE6E82F4445C54411AD3C3BAF8FA5041A99CF71A455C5441
+</a>
+
+<b>
+010600000001000000010300000001000000780100009CCD26ED9FFA50419A6B5B277F5C544153AD54DF9FFA5041122E239F7F5C54415451F50DA0FA50416FFB81AC7F5C54412F956980A0FA5041C0C253CD7F5C54414086330DA1FA5041A12D17A37F5C544194A81F88A2FA504121F069317F5C54416857851AA4FA504147D5B1B87E5C54417556458BA5FA50418FD5114A7E5C5441940346A0A6FA50410508F8F67D5C544175E2756EA7FA5041C1DE1CB97D5C544121768CF9A7FA5041A7E5628F7D5C544129F40262A8FA50413E260C707D5C5441A67FC5FBA8FA5041CB62EB417D5C54419E543C5BA9FA504181BC47257D5C5441F7395B9DA9FA5041E6AA71117D5C5441B67BB2CCA9FA5041F9E33D037D5C5441C4E8AEFDA9FA5041D9DFF9F27C5C5441315AB58DAAFA5041623930B07C5C54410631FEEEAAFA5041DC4A13837C5C544170C06570ABFA5041FF4C11477C5C54419EA507E2ABFA504131AA5F127C5C5441369DA530ACFA504196CDEAED7B5C5441AC3947DBACFA50415FA9CA9E7B5C544138758E62ADFA504126620F607B5C54411C9A8012AEFA50411455780E7B5C54419D98AF1FAFFA5041CCC2A4917A5C54414A9EA851B1FA5041F3530B8D795C5441C5776698B2FA5041C1DF86F5785C54416597361BB4FA5041892B2742785C544144085C65B5FA50412C8A0EA9775C5441FA6B7185B6FA5041C94B7723775C5441D75958C1B7FA504188A2F990765C54416F123EE2B8FA50417DC8010B765C544113CC26D2B9FA5041DD78C19B755C54419EA1A4B1BBFA5041EE9F67BD745C5441E19FD16FBDFA5041BBCA80EE735C5441BAFC6C15BFFA5041069AFE2A735C5441A4EC2375C0FA5041A487E587725C54416A1D4088C2FA5041B72C4590715C5441159A591FC4FA504181EEFDCF705C5441CEE7F36EC6FA5041810792B86F5C54416E476840C8FA5041DDF5BADC6E5C5441F8FEDB75CAFA504114FFA8D16D5C5441940AF060CBFA50414D32A1626D5C54415CA1F9CCCCFA504137AEB0B66C5C54416C6444A0CDFA504176B6CA536C5C5441D86D8163CEFA50418E02BCFE6B5C544138510DFCCEFA50413AB146BC6B5C5441A6AD5E72CFFA5041D5D9BA886B5C54418E41779AD0FA504119A0BB076B5C544126FB8211D1FA5041C497DED36A5C54413644AF71D1FA50417289F8A96A5C5441BA068D5ED2FA50414122C7426A5C5441FB2A8D25D3FA504172D814EC695C54414CD8B50BD4FA50416581CF87695C5441D9B39694D4FA504167A12D4C695C5441E5F27AD2D4FA5041FEEF3631695C54412827DEDAD5FA5041031F08BE685C5441582EAE02D7FA5041A880283D685C54418533C085D8FA5041E4038794675C544116242861D9FA504144EEF034675C544168236AAAD9FA504112329115675C5441ECDDDCE8D9FA504192BA8AF8665C54410DCB4B9FDAFA5041378CB5A4665C5441E881213ADBFA5041D4028F5D665C5441E06F546CDCFA5041BE39DAD0655C5441D7A88BC5DDFA5041D3903732655C54418FB240CDDEFA5041A07209B9645C544124B26BA7DFFA5041C37EC854645C54418748FEE4DFFA5041902F7D38645C5441C5652CB1E0FA50418DBDA9DA635C544142B032CDE1FA5041BC832558635C5441AC9529F6E2FA50410010AFCF625C544116688841E4FA504110256937625C5441639BE39FE4FA504170370D0C625C544162E7E0E8E5FA50411E64DF74615C54415CE39A54E7FA50415A26BBCD605C5441A0116CC6E8FA50410E6BCA23605C5441BE619E40EAFA50419CF1FF755F5C54413236D072EBFA5041E4A94BE95E5C5441D393F375ECFA50412F0A37725E5C5441AB714251EDFA504161F76F0D5E5C544111DEA448EEFA50412507C29B5D5C5441EEA1EBD6EEFA504191D7605A5D5C5441385A8FB9EFFA50418C4E3BF25C5C5441FC23ED9DF0FA5041389B9D865C5C54411347905DF1FA50416B47C4255C5C5441F2F0047FF2FA5041788E7B935B5C54415E1AE462F3FA5041805852205B5C544148F1F21AF4FA50414E994DC35A5C5441A0A1439FF5FA504192CC0EFF595C5441D6A35966F7FA50419C701119595C544176960B70F8FA504131C7CA92585C5441775A0D6AF9FA5041BCCC7114585C54414B7BB622FAFA50413B141FB7575C544159DFD260FBFA5041B40D5B16575C544140444C10FCFA5041F5D7ACBD565C5441369B37A5FCFA5041A4356A72565C54417300A31BFDFA50419B869136565C54412BC80DE7FDFA5041ED29C4CF555C5441EC977529FEFA504176DC34AE555C544149AF9D50FEFA50412EEC6A9A555C544114041076FEFA504125E14C87555C544126C90587FEFA5041BB3B1A7D555C5441B818B4EFFEFA504190C7283E555C54416AF93974FFFA50414D9E79EE545C5441E88EE75F00FB504158DEC360545C544172AFA93A01FB504156903ADD535C544153F0D51D02FB50414103A254535C54415233D69102FB5041A80FE20E535C54415B84CD6303FB50414123A290525C544157E684F503FB504123210439525C54419EEBE51405FB50413418388C515C54411A332C5005FB5041A0029468515C5441551D2DBE05FB5041D03D6F26515C5441ADDA7C1D07FB5041ED1F3253505C5441884793C407FB50414974BAEE4F5C54411F761BBC08FB5041E60AE4594F5C5441474E3D4D09FB50411EF39F024F5C54411AA05A310AFB5041E67276794E5C54417C5A72F00AFB5041EA8AE8464E5C544148E17A740BFB504152B81E254E5C5441E9FA54980BFB50416CB580064E5C5441A0F33FEC0BFB5041E573D6BE4D5C5441DC7E26AD0CFB504152391A1A4D5C5441790AC32E0DFB504188596AAB4C5C54414EB0B0380EFB504181AD50C84B5C54411BD8F7290FFB5041611B44FA4A5C5441AE8E184E10FB504101AACA004A5C54417B14AEC710FB50418FC2F598495C5441396C0AF210FB5041141AE020495C544111B5732611FB504111A44C8C485C5441B8AD83A411FB5041A1B6EF26475C54412CCB8F7711FB50414798D929475C54411B15537711FB5041FD0A432A475C54414A93BF6511FB50413C26CA48475C5441976A6D4911FB504142CFFA79475C54414470292011FB50416A2DA7C1475C54412F65930011FB504139AB83F8475C5441010D53E410FB50412A639529485C5441516DCCDB10FB5041C54A8B3C485C5441E6821DC910FB5041D010C557485C54413F4E17AC10FB50411507D27A485C54416A5E04DC0FFB5041FAF01876495C54418F7C8E690FFB5041E6DC52004A5C544114D0CA2D0FFB504130417F484A5C5441C9A3D6030FFB50414E71297B4A5C54414FF636EB0EFB5041687624974A5C54418B4BA8D20EFB5041270555A84A5C544149CA1D3C0EFB5041A54DB5114B5C544138E4BB170EFB5041D2DE2C2B4B5C544105C6540A0EFB5041E2978E344B5C5441F8D899D40DFB504160CD2A5A4B5C544107F1199A0DFB50417F407D7A4B5C5441544931510DFB504174F2DDA04B5C5441B198B9170DFB5041B8E11DBF4B5C5441CBDBB0980CFB50412423FC014C5C5441BBAD10740CFB50415E9143154C5C5441F4BBB3430CFB504138A5B82E4C5C544169DADB260CFB5041CD5EE73D4C5C5441522209E60BFB5041447E06604C5C5441EF49DDC50BFB5041948307754C5C5441E5008A980BFB5041F3B344984C5C544192D508160BFB5041310C10DB4C5C5441110465060AFB50413EA217664D5C544102D18DAA09FB5041B4D8B2984D5C5441AA32297C09FB5041B8052FB64D5C54416942418D08FB5041BD4F2E4E4E5C544146D5AF2A08FB50415E5EE48C4E5C544167D498F807FB5041C0A4C2AC4E5C54416732979607FB504155371DEB4E5C5441F696B07E07FB5041FA0152FA4E5C5441E071275C07FB5041F0EF4A104F5C54415117773807FB50410F0FCF264F5C54413C66312107FB504108A1A8324F5C5441C558E70207FB504150E114424F5C5441B79A589C06FB50413DD37A784F5C5441A75EA57D04FB5041FBF4F8CF505C5441F2FC14BC03FB5041735EC542515C5441CC26F72B03FB50417E973D91515C54417051340103FB504152322BA7515C5441664D13ED02FB504120BCFFB1515C54411E59BDB702FB504193B3DBD4515C544139FFAF0E02FB5041B84D3C3B525C544128B418E401FB504101469A52525C5441B14698A901FB5041DCB6F772525C5441D5149D8F01FB504163717A81525C54413264D76401FB5041FF549B9A525C5441A9A17C4001FB5041CBD9E1B3525C5441F955B8BE00FB504108ECBA0D535C5441F048A8A300FB5041320C591C535C5441CDA7737100FB504139487737535C5441DE2EE74600FB5041DB4A9350535C5441DD75C996FEFA50419694788A545C5441C3EC5079FEFA50417C0BE19F545C54412FC9912EFEFA504134192DD6545C544123FB7F12FEFA5041BAF990EA545C5441858AC3EAFDFA5041A9636E07555C54417BE250D7FDFA5041DDF58E15555C5441C5177CC5FDFA504119262A20555C5441362A8071FDFA5041FAD86850555C5441B7ED48D1FBFA50412E87813F565C54410A0AFB8BFBFA5041FE685167565C5441A41DF55AFBFA50416DC07A83565C5441E7312EEEFAFA5041929C18C0565C544139B40B5CFAFA5041079F6C0F575C5441A6EF7DD2F9FA5041E527185A575C5441117C5C2BF9FA5041553CBEB4575C544185949B1FF7FA5041B35800A7585C54415FC8347FF5FA5041E7D09A67595C54412CFC56BAF4FA5041113C3BC6595C5441A1B3B389F4FA504182DA37DF595C5441D2A8806EF4FA5041B8C606E8595C54414C66F32CF4FA5041C8C709FB595C5441D131DD08F4FA504142C1810A5A5C54413A5F59D3F3FA5041EACF88205A5C54411F5528B8F3FA50411AAAA8265A5C5441F42A2A7FF3FA504139C658415A5C54415168EBAFF2FA50413471C7995A5C5441E0EABC8EF2FA5041ACFD43A75A5C5441A84C1A78F2FA50410EA984B15A5C54415E07524FF2FA5041A4BD52C75A5C5441524DA2E1F1FA50413174FD025B5C5441EF169FA9F1FA504101EB51235B5C5441D482356AF1FA504177B7A3455B5C544156630F2EF1FA50416B0071605B5C5441F4AC2E09F1FA5041D9B5DF705B5C544134E025B8F0FA5041FEA61C905B5C544194542E79F0FA5041CC891CA75B5C54414D5F0935F0FA5041F0B760BA5B5C544113DEC0E9EFFA5041A3BA8ACE5B5C54415A165898EFFA5041535016EC5B5C5441B6C62C4FEFFA50412CF94E085C5C5441925ABB04EFFA5041FDD87A295C5C544160D31E7CEEFA5041EEAF386A5C5C5441DB841C4DEEFA50415E9568815C5C544166B89BE9EDFA50415B9064B65C5C5441C011DE88EDFA5041BE775FE85C5C54417F13C6C8ECFA5041E18B7A4A5D5C5441AB76C417ECFA5041C06343985D5C5441F4AD8014EBFA5041B1E0B4185E5C544184166BC8E9FA50416A2BCFC65E5C54415E04D486E8FA5041BFEA326C5F5C5441E98E719DE5FA5041997B32DE605C5441BCEB4758E5FA5041F3893A00615C544184ED3D47E4FA5041CFD59386615C5441DEF38A8AE2FA5041C4406461625C54418C67DDE8E1FA50413AF9F1B0625C544193D99B85E1FA5041A6BDC8E1625C5441D2E464DBE0FA50417FCA8935635C5441FDA4E3A2E0FA50410A0AF34E635C54417A0293E1DFFA50411B2113A3635C54419C165E98DFFA50416FA9EEC2635C5441EAD32585DFFA5041DAD24BCB635C54419F5BF7F4DDFA504147B47179645C54417CFF6315DBFA5041C6E08BB9655C5441C48BF2AAD9FA5041C38C4557665C5441C0969332D8FA5041CBD40EFB665C5441D0E20CCDD6FA5041E8BAA496675C5441C6843FF9D5FA5041FF5FD0F2675C544119BECEA4D4FA504188DCF686685C5441EAC09E87D4FA50411477AA93685C5441D7554A57D4FA5041AC8A0F9A685C5441BF28A023D4FA5041E3FED6A0685C5441CAA31CB7D3FA5041BF0B14AF685C544152DEEC10D2FA50412E0065E7685C544197136074D1FA5041C2423524695C5441EC821AE9D0FA50415B454F5A695C5441F939A5A2D0FA5041430CAE75695C544169DA2874D0FA50412CE0BC87695C54418E8B7246D0FA50414BC37E99695C54410E3A2E1ED0FA5041C92323A9695C544132EB77F0CFFA5041E806E5BA695C5441318E56D1CFFA5041CDCFFCC6695C54415A6DE3ABCFFA5041DD0889D5695C5441ABB96184CFFA50416643AEE8695C54415689284ECFFA50415A0E4B046A5C5441134B7C3ACFFA50417DB04F0E6A5C544129413F0FCFFA5041926F54246A5C5441B625EEBACDFA504105BA9BD36A5C5441B303EB48CDFA5041BB877A136B5C5441325C9B94CCFA5041AD707D786B5C54410319001ACCFA5041748AF6B66B5C54415CA8A501CAFA5041338F0BB36C5C5441DC3980AFC5FA504129FEECBA6E5C5441141906F5C1FA5041C26CD797705C544179460E38C0FA5041DFF86F77715C5441CF4F0D68BEFA504140449960725C5441703973F8BCFA5041F7745119735C5441AC5F9B68BBFA504120273DE2735C5441630DCC2CBAFA504178D4EE80745C54413213D897B9FA5041EAFE18D5745C5441808C9D81B8FA504192AFDA76755C54419C791CFCB7FA5041148F78C4755C5441374C18D0B7FA50415EA70FDE755C5441B7CD3EAEB7FA5041AB99BDF1755C5441A841129FB7FA5041B9FF8FFA755C54411CF8A37EB7FA5041BA232617765C5441E010975DB7FA5041E1D51D35765C5441BF1FCA3CB7FA50414289DB52765C544141797225B7FA5041C8CB0568765C544165AE6605B7FA5041155D1485765C5441FDDEC1F1B6FA5041071AE496765C5441E5684BE1B6FA50416973D1A5765C5441238738A6B6FA504157732AC6765C5441B369405FB6FA5041914A00EB765C5441799E1104B6FA504148F5531A775C54411FF9D0F6B5FA5041F2D93421775C54412A93CEE5B5FA5041DCEC082A775C5441F44FF1A5B5FA5041FBB82E4B775C54413D37FD6DB5FA5041A2643968775C5441A4F9DA4FB5FA5041BCB2A177775C544105CDB525B5FA50414FBB7589775C5441AE75610DB5FA50415C71C093775C54416E71E9C1B4FA5041DA30ADB3775C54413983A794B4FA50419644D2C6775C5441516BBF5EB4FA5041C4FA9FDD775C544189D06E14B4FA504132C30FFD775C5441938D42DAB3FA5041987BAB15785C5441BEC8919FB3FA50419E417F2E785C54416CD179D3B2FA5041242DD584785C54418721C42DB2FA5041F462EECA785C5441D7A404FDB1FA5041B49EF5E0785C54415DC1C846B1FA50418EAF4E33795C54411A3C8F9DAFFA50414DB261D8795C54418C7816A3AEFA5041B4A0B4397A5C544162C85333AEFA5041F16A41667A5C54415F3EA0FEADFA50418ECD607B7A5C54413EDFEFD2ADFA5041AEE4EC8D7A5C544196DDD532ADFA5041A28FEFD07A5C5441AFE7ABF6AAFA504183CA28B47B5C5441F7D24444AAFA5041AC3582FF7B5C54414D7269FCA9FA5041D297DB1D7C5C544135E47BD5A9FA5041D9984C2E7C5C544159E004BEA9FA50419B533A367C5C544182C9419CA9FA5041BA7E35407C5C5441B6ED8826A9FA504171DA0F637C5C54412F3CF902A9FA50410160A2707C5C54418AC154B7A8FA5041F808818D7C5C54417A8CFD87A8FA50417BC25F9F7C5C544147FDF859A8FA50413784ABA97C5C5441AD57CE36A8FA5041C7BF89B17C5C54415DFCA312A8FA50413BC4B2B97C5C544156E2BADEA7FA5041A6DCA0C77C5C54419C3C8F91A7FA5041DF3C56DC7C5C54413F7C7283A6FA50417D567F2C7D5C54418C162F58A6FA5041791C2F377D5C5441A630B541A6FA5041F066BC3C7D5C54410F147B16A6FA5041BFE169477D5C54411BD191E4A5FA50418FEBF1507D5C5441653997BDA5FA5041E8A178577D5C5441429FD986A5FA5041CCECA2607D5C5441D91CA1A9A4FA5041E0113E837D5C54410101DB77A4FA5041BA87268B7D5C54411852D325A4FA5041E0262D977D5C5441D74D6EF3A3FA50418ADC9B9B7D5C5441AAB186C5A3FA50419979A59F7D5C5441F76A6693A3FA5041C9FD41A37D5C54419699E271A3FA504159AC8BA37D5C544144340052A3FA504136C5D1A37D5C5441363FB43CA3FA50413B9700A47D5C5441211B9D02A3FA5041234D80A47D5C54415D1633DFA2FA504180E0DDA97D5C54415EB5E4A7A2FA5041BA7020B37D5C5441E02A9F7AA2FA504103E6B4BA7D5C5441E706B255A2FA5041BC9A64C27D5C544130ED383AA2FA5041CEE52DC97D5C5441FC2FE92BA2FA504110DB8ECE7D5C5441B135DB07A2FA50416CDC9ED57D5C5441059D19BFA1FA50418B5EE9E77D5C5441407E10E4A0FA504168F57A577E5C5441AF885CE0A0FA5041820C995A7E5C54418DB9C8A3A0FA5041D420998D7E5C544144D8357FA0FA504122C563AC7E5C5441A5EE0B30A0FA5041ADB609EF7E5C54419CCD26ED9FFA50419A6B5B277F5C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 247545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C544130168849CDFA5041D3D794234D5C54418476D9E2CCFA5041E5072B8F4D5C5441344D1A17CCFA504136DF3A5B4E5C5441B732691FCAFA50410B8A1498505C54416AA664C1C9FA50417B418B0F515C5441EDB8C55BC9FA5041E4260693515C5441A396F5FDC8FA504183736322525C5441A0DDBFA7C8FA5041A68FBCA5525C54419C971449C8FA5041D2B81B35535C5441EF2CA1FBC7FA5041811D6ECF535C5441B58060DDC7FA5041D2182776545C5441E05533E6C7FA504161DFAFF8545C5441B94B04EFC7FA5041A21D5E7A555C5441132988E8C7FA50419BEEFB08565C544162ECF8C9C7FA5041EAFDDA8B565C5441A47F4FABC7FA504183C1C602575C5441619F7DA9C7FA504195E0910A575C5441A4B9EC5DC7FA50413E7AA808585C544165422ED5C5FA5041A36ED9B6595C5441CCB49301C5FA5041C3C4EDD45A5C544101FF48E7C3FA50411A0B07835C5C5441BB006C43C3FA50412AA5CB885D5C5441005B9B20C2FA5041788F5BD75E5C544194D351DEC0FA50411E76173E605C5441A33FEE9BBFFA5041F215E098615C544173E9B8C7BEFA504136391B70625C54412C59C1EABDFA5041A8245D30635C5441F1B85794BDFA50417D84CF9B635C5441BD8C3936BDFA504100CB5207645C5441CF2A3513BCFA50417523FC3D655C5441344648ADBBFA5041980F9D9D655C544112FB0DBDB9FA5041EF65A458675C544120D740F0B8FA50418568CF0C685C5441B76A269EB7FA5041A71BE043695C5441489F52B5B5FA5041E3E2FCDA6A5C544106BE6B2FB5FA50417B29E4176B5C5441993DC990B4FA5041A6AD1A606B5C54413554CFF2B3FA5041335D43916B5C54412D345215B3FA50413344BDE26B5C5441CEEE9ADBB0FA5041763250B46C5C5441D036324EB0FA5041A57354086D5C5441AD01BFC7AFFA5041916D17696D5C5441F0B2C251AFFA5041F2A3C2E06D5C5441A944C865AEFA50417F8C3ECF6E5C544104F14DF7ADFA5041E9E2CC2F6F5C5441D5B55181ADFA5041B51978A76F5C5441C9C904FCACFA5041CCE15D2A705C5441B2E3A28DACFA50416EF00496705C5441E8E1421FACFA504179838602715C5441A0DA44A9ABFA50416F365779715C5441062E942BABFA50415E5B13F1715C544151C8FDADAAFA5041B7BAC274725C54414A835047AAFA504111DC58E0725C54414E2E3AD1A9FA5041C0D9104C735C5441CC4EEF4BA9FA50416827D1CF735C5441B94173CEA8FA5041AFBF735F745C544197CC0150A8FA5041210025E3745C5441561220DAA7FA5041D76FC366755C54419A5AE87BA7FA5041858753C6755C544109AC860DA7FA50415997FA31765C54418D51B135A5FA504114AB9A1C785C54415D2A45C8A4FA504142103394785C54415297E359A4FA50416920DAFF785C5441C64D9CEBA3FA504108677477795C5441ED2BD375A3FA5041E6852B067A5C5441E422501FA3FA504168ACAA657A5C5441A412E4B1A2FA5041F30F43DD7A5C5441193ED352A2FA5041868CAF3D7B5C544111ABC504A2FA504163AA28917B5C54410DE173A6A1FA50414B8CC5E47B5C5441E120783FA1FA5041080D822C7C5C54417F4ABAA99EFA50411209E0AD7E5C5441193536549EFA50416FE4653C7F5C544138093BC69EFA50419286ABBC7F5C54417A65837F9FFA50412E78A9837F5C5441ACAB8B43A1FA5041352918077E5C5441150138D2A1FA5041AFB2DEE27D5C544125FE9668A2FA504108CBB9BD7D5C5441EA4210FFA2FA5041331B88A47D5C5441319A729DA3FA5041E0E62BA37D5C54410C260634A4FA50414873ED957D5C5441851F0FD3A4FA5041E6FDA87C7D5C54414DCF3E71A5FA50416BF240647D5C5441AA19B807A6FA504133570F4B7D5C54418C21179EA6FA5041B58BEA257D5C5441B64E123CA7FA504154249CF57C5C544159509BE2A7FA5041AC6C60C47C5C544193973E89A8FA504123EE179F7C5C5441378A1F27A9FA5041F45ED6627C5C54415A94A8CDA9FA5041CEB49A317C5C54417935F00DAAFA5041EB9574167C5C544179684E09ABFA5041BDF149AC7B5C54411A940AA8ABFA5041C69006707B5C54416B30353EACFA5041CB7EFB327B5C5441C1328E6AADFA5041C06C9ABA7A5C54414F5104F9ADFA5041D451A07D7A5C544162DA308FAEFA504130D16F417A5C54411C1545E0B0FA50415E0BFD5A795C5441C955247EB1FA50416A2CE11D795C544139B43614B2FA5041058ABDD5785C5441BD194852B5FA50412DF39A76775C54415ACEF1DCB6FA50414F2EC3A9765C54417A998D9CB7FA50412BCA06FC755C5441F752B768B8FA5041A5885485755C5441D9FFF10DBAFA504177976F90745C544174E78D4FC3FA5041A0DAB5E96F5C5441AC50335CC5FA5041538B13E26E5C5441188ADB5ECCFA5041D3C599966B5C54412B2EB8E1CDFA50411DDDE0BD6A5C54418784D5A3CFFA50416501AAD8695C5441F0058014D2FA5041BE7F01E6685C5441BD450AF7D3FA50410DA7B0A6685C5441F7DA7187D4FA5041EA00BE93685C5441233BF2CCE0FA5041AEB7A53C635C544190517DF5E7FA50412ED7F1B65F5C5441D0B59098EAFA50414310C35B5E5C54414884391FEBFA5041BFCDE7125E5C5441A7936E9DEBFA5041790DEDD65D5C544123FACB2BECFA5041E1F8008E5D5C5441115F45BAECFA504151B1E2515D5C544198EE26D6EDFA504106FAE6C05C5C544134E9F244EEFA50410FF20D855C5C5441E9F204DBEEFA5041E014113C5C5C5441A0D5C961EFFA50410CB103005C5C5441A1CCCBE7EFFA5041D1EF10CF5B5C544135EBC46EF0FA5041D21DEAAA5B5C544185E6C6F4F0FA50416162F7795B5C544188D38B7BF1FA50419E09EA3D5B5C5441A70CA5F9F1FA5041509B21F55A5C544185E54F80F2FA5041D30021AD5A5C544178237C16F3FA5041E58117705A5C544183821AA4F3FA50413B3EFB335A5C54415968B31AF4FA50414D3B2A035A5C54419EB3B389F4FA504187DA37DF595C5441F6B753E8F4FA50414D359BAE595C5441BB276467F5FA5041D7C39E72595C5441A0A8512CF9FA504115D54CB4575C544158E65B29FBFA5041B6B4F89F565C5441E059EDD4FDFA504106304B17555C5441967F525200FB504185C04748535C5441F6DB1EC100FB50411DFE6E0C535C544126B8E86D01FB5041246E4D94525C5441DE62D4C401FB5041B2C0C163525C5441C3EBC11B02FB504190991034525C54413FE0D78202FB5041E0266EF7515C5441180BAFF002FB5041C0FEA3AF515C5441B22F2E6703FB504199F1DF72515C5441D0E524E603FB50419973F02A515C54412DDC8B5C04FB5041C1A313E3505C5441FC8EA5DA04FB504125824B9A505C54415A1171AC06FB504177551B6E4F5C5441A5DDF53907FB5041CC270C264F5C54410B0E30AA09FB5041DE82E6984D5C5441160465060AFB50413DA217664D5C5441D7A3709D0BFB50415C8FC2954C5C544159DB3AD40BFB5041B4E065694C5C54414810CBCB0DFB50419E1C55604B5C5441C66EACEE0EFB5041FFA5B8944A5C5441DA6B24CB10FB5041B4695255485C54410387628E11FB5041D9763502475C54411DF96E9C12FB50419C3A1D8C445C5441AAAE072213FB5041D820CF9B425C5441AC1643FD0AFB5041DB3B6DD1415C54414AD6DB8D0AFB5041D0846CC6415C54416F95741E0AFB5041F2CF6BBB415C544180911E5009FB5041B19E2DBD415C544118347BE908FB50413BEE00CA415C54415AF2137A08FB5041BE4100BF415C5441E314F80208FB50414D6410B4415C54415F45F68B07FB50419FDD13B5415C5441DC75F41407FB5041785917B6415C54411A0B3E9606FB504130A52BB7415C54415D2C221F06FB504107D23BAC415C5441204D06A805FB504161014CA1415C5441D7E14F2905FB5041615560A2415C5441D438A4A904FB5041F7358397415C5441ACD9EFFF01FB5041AF864586415C54412E04ABBDFEFA50411A8B398C415C544160343B30FAFA5041221D51BA415C54412B07AD56F7FA5041AF3096B4415C54413AA37FD3F4FA504187FF05A3415C5441551EAF54F4FA5041EA602798415C5441CAFD30B6F3FA5041CBF38D8D415C5441BCC08690F2FA504178520F90415C544196F3D9BAE5FA5041D533A405415C54411862F50BE1FA5041266C458D405C544182FE3C98DDFA50412650D60D405C5441D14E357DDDFA50415751BAEE405C5441CCE5F57EDCFA50412C971332495C54412CB6894BDCFA5041BA2DFFEC4B5C54416BC80922DCFA5041D85D0C214E5C5441E1CB4A07DCFA5041B609EB25505C54417FFAA6B9DCFA5041A043E21D515C5441E3FBE1AFE0FA5041F3D9EB9F565C544199F6BA56DFFA504130ED733E575C54412C3BB237D6FA50418F5CF46E5B5C5441AD487305D6FA5041FB615A6B5B5C544163714B3BD4FA50410AF95333585C5441EFAEECFAD3FA5041C56438BD575C544172A85CC2D3FA50410838FF52575C54413E540B59D3FA5041C3436F8A565C54413488AC18D3FA504108A95314565C54414BCE64D0D2FA5041EC586286555C54415E0F5C87D2FA504107306604555C5441E7FACB4ED2FA5041ABF92C9A545C54411F53832ED2FA50411F219953545C54416D69BBA9D1FA504118ECA9B4525C54410ABB5D93D3FA50414EEF6B54505C5441657B52E1D3FA5041F096FFF44F5C5441976B2230D4FA50412C5E91954F5C54417EAA0A7FD4FA504181EC3B414F5C5441A6368FD5D4FA50410CD4BCE14E5C54418932AE33D5FA50410D8F39764E5C5441EFC4328AD5FA50410A76BA164E5C5441BCC751E8D5FA50414F3037AB4D5C5441E389F03ED6FA5041D764AB574D5C5441C0F2C278D6FA504160BBB4304D5C54417E4AE3F8D6FA504189175EDA4C5C54417C0BBFBBD8FA5041F544DCC84E5C544163382D83D9FA5041CD5F250E4E5C54410E8963C3D9FA5041D23590B14D5C54415CBAE4C6D9FA5041B79D82AC4D5C5441BD417A51DAFA50412DC9DA774C5C5441520000001AD3C3BAF8FA5041A99CF71A455C54416FA24ED8F8FA50411E24F045455C5441C15B65DDF8FA5041850D308D455C5441398403CBF8FA5041FF154DD6455C544139CDA67EF8FA504167CBB548465C54419000108EF8FA5041C1269448465C5441987D7586F8FA5041DE4A9854465C5441A0D38047F8FA5041D15B1584465C54413FA749F8F7FA5041687690B4465C5441C7E25DA1F7FA504161641CE5465C5441867A8742F7FA504175FDF7FC465C5441655A33EBF6FA50412AA8B6FD465C54416D077684F6FA504149FA96FE465C54414EE7212DF6FA5041F9A755FF465C5441B3112456F5FA5041221A12F6465C5441DEA54CEFF4FA50413C22FFEA465C5441B0910668F4FA5041FE8926EC465C544102AB9BE1F3FA50415D164CED465C5441D696555AF3FA5041A58473EE465C5441B71636CCF2FA5041D8EBA9EF465C5441AF1C0A45F2FA50414FB2C4FC465C5441F34464FFF0FA50411363B1DB465C54414F12C880F0FA5041C880B9E8465C5441A834B6F9EFFA5041F1A6C701475C54418B2AE36BEFFA50418D92FD25475C5441B5AF15F5EEFA5041E434E83E475C544104ED0B5EEEFA5041DC5C197B475C54419A7BB90FEEFA5041660731A1475C5441AE47E1CAEDFA5041666666A6475C5441866629A9EDFA504189B7A9D5475C544127DCDD49EDFA504129BF040C485C54418E1C91D3ECFA50414C7AD55F485C544138F41465ECFA5041663663C0485C54418F1F72F7EBFA5041628E1420495C5441D897093AEBFA5041FF7242D3495C544104D3B8E3EAFA50413DE6A74A4A5C54414530828DEAFA5041BDA700CE4A5C5441DA56DB3FEAFA504123B146514B5C544142736901EAFA5041F06B84BC4B5C5441530D60C3E9FA5041DD5F8F574C5C5441F5FBBD94E9FA50416B1B9EF14C5C5441C252835EE9FA5041527E8B984D5C5441FEF95D20E9FA5041FA93C8264E5C54413251C2F7E7FA50412DE1C156505C5441B691D0F4E6FA5041D8F5F1BC515C5441FCA98E18E6FA5041DD363470525C54410F354016E6FA5041B9DB6F73525C54416FCF6D08E6FA50415586547D525C54412D756D99E5FA5041CB3C47A1525C54415166B1CAE4FA5041A6BE1774525C544153BE9793E4FA50418CADB550525C544135589E82E4FA50411DB50CFE515C5441E0801392E4FA50419F4B299F515C5441D5A3C498E4FA50415A017228515C5441C29454B7E4FA504109FD92A5505C5441F4B911EEE4FA5041BA23663A505C5441A8B9F01BE5FA5041341B72AB4F5C5441571CD862E5FA5041BC5F2E344F5C544122C42C99E5FA5041FB4B34994E5C5441CF59D2DEE5FA504186BAFFF24D5C5441B07EC11CE6FA50415778014C4D5C54411A85B25AE6FA50418CB7DDA54C5C54412DDD8991E6FA5041BA1DA4464C5C544142F62CC8E6FA50412FE583CF4B5C54418C41390EE7FA5041AAF941584B5C5441109D0655E7FA504103DE0AD54A5C544196AEDE9AE7FA5041B44FE2454A5C5441D3CE93E1E7FA50413E6592B7495C5441F5C40F6DE8FA5041D6995A81485C5441195001A4E8FA50416144142E485C544125FE02EBE8FA50416EBDC3C2475C5441EE7A2249E9FA50412FAE4057475C54412BE0A515EAFA50418E001780465C54419CA5E20FECFA5041647B65EF445C544139AB8718EDFA504180218684445C54417C3768A0EEFA5041A8B8D423445C5441B5D95A65F0FA50410A887547445C54419D77E4BDF2FA5041BC782D70445C54416A8BF35DF5FA50410FCE5495445C5441D0DCA9B2F6FA50417BBE2AA8445C5441E24F53A0F8FA5041BE6E82F4445C54411AD3C3BAF8FA5041A99CF71A455C5441
+</a>
+
+<b>
+0106000000010000000103000000020000009A0100007B65837F9FFA50412978A9837F5C544156AD54DF9FFA50410D2E239F7F5C54419FCD26ED9FFA5041966B5B277F5C5441A1EE0B30A0FA5041ADB609EF7E5C544149D8357FA0FA504121C563AC7E5C54418DB9C8A3A0FA5041D920998D7E5C5441AD885CE0A0FA5041810C995A7E5C54413D7E10E4A0FA50416AF57A577E5C54410A9D19BFA1FA5041895EE9E77D5C5441B135DB07A2FA50416FDC9ED57D5C5441FA2FE92BA2FA50410FDB8ECE7D5C544131ED383AA2FA5041CCE52DC97D5C5441E306B255A2FA5041BF9A64C27D5C5441DE2A9F7AA2FA504106E6B4BA7D5C544161B5E4A7A2FA5041B97020B37D5C5441581633DFA2FA50417BE0DDA97D5C5441241B9D02A3FA5041224D80A47D5C5441373FB43CA3FA50413F9700A47D5C544143340052A3FA50413AC5D1A37D5C54419399E271A3FA50415CAC8BA37D5C5441F96A6693A3FA5041C7FD41A37D5C5441ABB186C5A3FA50419779A59F7D5C5441DC4D6EF3A3FA50418ADC9B9B7D5C54411752D325A4FA5041DF262D977D5C54410301DB77A4FA5041BF87268B7D5C5441DB1CA1A9A4FA5041DE113E837D5C5441439FD986A5FA5041CAECA2607D5C5441623997BDA5FA5041E8A178577D5C544119D191E4A5FA50418AEBF1507D5C544113147B16A6FA5041BBE169477D5C5441A430B541A6FA5041EE66BC3C7D5C54418E162F58A6FA5041781C2F377D5C54413F7C7283A6FA504182567F2C7D5C54419E3C8F91A7FA5041E33C56DC7C5C544154E2BADEA7FA5041A4DCA0C77C5C54415FFCA312A8FA504138C4B2B97C5C5441B257CE36A8FA5041C7BF89B17C5C544142FDF859A8FA50413284ABA97C5C54417D8CFD87A8FA50417EC25F9F7C5C54418EC154B7A8FA5041F408818D7C5C54412C3CF902A9FA5041FC5FA2707C5C5441BAED8826A9FA504173DA0F637C5C544184C9419CA9FA5041BD7E35407C5C54415AE004BEA9FA504199533A367C5C544132E47BD5A9FA5041D5984C2E7C5C54414A7269FCA9FA5041D697DB1D7C5C5441F9D24444AAFA5041B03582FF7B5C5441B0E7ABF6AAFA504184CA28B47B5C544198DDD532ADFA5041A58FEFD07A5C544141DFEFD2ADFA5041B0E4EC8D7A5C5441643EA0FEADFA50418BCD607B7A5C54415FC85333AEFA5041EF6A41667A5C5441887816A3AEFA5041B1A0B4397A5C54411E3C8F9DAFFA50414DB261D8795C54415AC1C846B1FA504190AF4E33795C5441D5A404FDB1FA5041B39EF5E0785C54418321C42DB2FA5041F562EECA785C544168D179D3B2FA5041232DD584785C5441C0C8919FB3FA50419F417F2E785C54418E8D42DAB3FA5041997BAB15785C54418DD06E14B4FA504137C30FFD775C5441506BBF5EB4FA5041C7FA9FDD775C54413C83A794B4FA50419144D2C6775C54417371E9C1B4FA5041DB30ADB3775C5441B175610DB5FA50415F71C093775C544101CDB525B5FA50414EBB7589775C5441A1F9DA4FB5FA5041B8B2A177775C54413837FD6DB5FA5041A6643968775C5441EF4FF1A5B5FA5041FBB82E4B775C54412B93CEE5B5FA5041D9EC082A775C544122F9D0F6B5FA5041F2D93421775C5441789E1104B6FA50414BF5531A775C5441B269405FB6FA5041934A00EB765C5441258738A6B6FA50415C732AC6765C5441EA684BE1B6FA50416573D1A5765C5441FDDEC1F1B6FA5041061AE496765C544160AE6605B7FA50411A5D1485765C544144797225B7FA5041C7CB0568765C5441BF1FCA3CB7FA50413E89DB52765C5441DE10975DB7FA5041DFD51D35765C544117F8A37EB7FA5041B6232617765C5441AC41129FB7FA5041BDFF8FFA755C5441BBCD3EAEB7FA5041A999BDF1755C5441324C18D0B7FA50415DA70FDE755C54419E791CFCB7FA5041138F78C4755C5441838C9D81B8FA50418EAFDA76755C54413213D897B9FA5041EAFE18D5745C54415F0DCC2CBAFA504174D4EE80745C5441AD5F9B68BBFA50411D273DE2735C5441733973F8BCFA5041F2745119735C5441CA4F0D68BEFA50413F449960725C544175460E38C0FA5041E1F86F77715C5441141906F5C1FA5041C46CD797705C5441D73980AFC5FA504125FEECBA6E5C54415BA8A501CAFA5041358F0BB36C5C54410019001ACCFA5041768AF6B66B5C5441325C9B94CCFA5041AF707D786B5C5441AF03EB48CDFA5041BB877A136B5C5441B825EEBACDFA504105BA9BD36A5C544129413F0FCFFA50418E6F54246A5C5441154B7C3ACFFA504182B04F0E6A5C54415689284ECFFA50415C0E4B046A5C5441AEB96184CFFA50416A43AEE8695C5441586DE3ABCFFA5041DD0889D5695C54412C8E56D1CFFA5041CACFFCC6695C544134EB77F0CFFA5041EB06E5BA695C5441103A2E1ED0FA5041C72323A9695C54418E8B7246D0FA50414AC37E99695C54416ADA2874D0FA504130E0BC87695C5441F639A5A2D0FA5041420CAE75695C5441EE821AE9D0FA504158454F5A695C54419C136074D1FA5041C2423524695C544150DEEC10D2FA50412A0065E7685C5441C5A31CB7D3FA5041BB0B14AF685C5441BF28A023D4FA5041E0FED6A0685C5441DA554A57D4FA5041AD8A0F9A685C5441EBC09E87D4FA50411777AA93685C54411EBECEA4D4FA50418BDCF686685C5441C5843FF9D5FA5041FF5FD0F2675C5441D2E20CCDD6FA5041EBBAA496675C5441C0969332D8FA5041CFD40EFB665C5441C38BF2AAD9FA5041C78C4557665C544179FF6315DBFA5041C9E08BB9655C5441A15BF7F4DDFA504143B47179645C5441EFD32585DFFA5041DDD24BCB635C5441A1165E98DFFA50416BA9EEC2635C54417C0293E1DFFA50411A2113A3635C544101A5E3A2E0FA50410E0AF34E635C5441D1E464DBE0FA504184CA8935635C544190D99B85E1FA5041A9BDC8E1625C54418F67DDE8E1FA504137F9F1B0625C5441DAF38A8AE2FA5041C7406461625C544181ED3D47E4FA5041CBD59386615C5441BCEB4758E5FA5041F4893A00615C5441EE8E719DE5FA50419E7B32DE605C54415904D486E8FA5041C4EA326C5F5C544184166BC8E9FA50416C2BCFC65E5C5441F0AD8014EBFA5041B2E0B4185E5C5441A776C417ECFA5041C26343985D5C54418013C6C8ECFA5041E28B7A4A5D5C5441C411DE88EDFA5041BF775FE85C5C544163B89BE9EDFA5041589064B65C5C5441DB841C4DEEFA5041609568815C5C544160D31E7CEEFA5041EAAF386A5C5C5441945ABB04EFFA5041FAD87A295C5C5441B3C62C4FEFFA50412DF94E085C5C544157165898EFFA50414E5016EC5B5C544117DEC0E9EFFA5041A4BA8ACE5B5C54414F5F0935F0FA5041F1B760BA5B5C544192542E79F0FA5041CE891CA75B5C54412FE025B8F0FA504100A71C905B5C5441F1AC2E09F1FA5041DEB5DF705B5C544155630F2EF1FA5041690071605B5C5441D982356AF1FA504175B7A3455B5C5441F2169FA9F1FA504104EB51235B5C5441524DA2E1F1FA50413574FD025B5C54415F07524FF2FA5041A8BD52C75A5C5441A84C1A78F2FA504112A984B15A5C5441E2EABC8EF2FA5041B1FD43A75A5C54414E68EBAFF2FA50413871C7995A5C5441F72A2A7FF3FA504135C658415A5C54411E5528B8F3FA504118AAA8265A5C5441375F59D3F3FA5041E8CF88205A5C5441D531DD08F4FA504140C1810A5A5C54414966F32CF4FA5041CAC709FB595C5441D2A8806EF4FA5041B9C606E8595C5441A1B3B389F4FA504182DA37DF595C544130FC56BAF4FA5041163C3BC6595C54415FC8347FF5FA5041E7D09A67595C544186949B1FF7FA5041B65800A7585C54410D7C5C2BF9FA5041513CBEB4575C5441A5EF7DD2F9FA5041EA27185A575C54413EB40B5CFAFA5041059F6C0F575C5441E2312EEEFAFA50418F9C18C0565C5441A41DF55AFBFA504170C07A83565C54410C0AFB8BFBFA5041FE685167565C5441BAED48D1FBFA50412987813F565C5441322A8071FDFA5041FDD86850555C5441C9177CC5FDFA504119262A20555C54417BE250D7FDFA5041DCF58E15555C5441848AC3EAFDFA5041AB636E07555C544122FB7F12FEFA5041B8F990EA545C54412BC9912EFEFA504133192DD6545C5441C2EC5079FEFA50417E0BE19F545C5441E075C996FEFA50419194788A545C5441E32EE74600FB5041D64A9350535C5441CDA7737100FB504136487737535C5441F448A8A300FB5041360C591C535C5441FD55B8BE00FB504104ECBA0D535C5441A7A17C4001FB5041CFD9E1B3525C54413564D76401FB5041FB549B9A525C5441D9149D8F01FB504160717A81525C5441B34698A901FB5041DBB6F772525C54412CB418E401FB5041FC459A52525C544137FFAF0E02FB5041B94D3C3B525C54411C59BDB702FB504190B3DBD4515C5441654D13ED02FB504123BCFFB1515C54416B51340103FB504153322BA7515C5441C826F72B03FB50417B973D91515C5441F2FC14BC03FB50416E5EC542515C5441AA5EA57D04FB5041FFF4F8CF505C5441B69A589C06FB50413BD37A784F5C5441CA58E70207FB50414EE114424F5C54413F66312107FB504109A1A8324F5C54414E17773807FB5041120FCF264F5C5441DF71275C07FB5041F3EF4A104F5C5441F796B07E07FB5041F60152FA4E5C54416C32979607FB504153371DEB4E5C544162D498F807FB5041C0A4C2AC4E5C544145D5AF2A08FB5041595EE48C4E5C54416B42418D08FB5041BF4F2E4E4E5C5441A932297C09FB5041BD052FB64D5C544104D18DAA09FB5041B0D8B2984D5C5441110465060AFB50413EA217664D5C544192D508160BFB5041320C10DB4C5C5441E0008A980BFB5041EFB344984C5C5441F349DDC50BFB5041978307754C5C5441532209E60BFB5041497E06604C5C544167DADB260CFB5041C95EE73D4C5C5441EFBBB3430CFB504138A5B82E4C5C5441B8AD10740CFB50415A9143154C5C5441CBDBB0980CFB50412723FC014C5C5441B398B9170DFB5041BDE11DBF4B5C5441594931510DFB50416FF2DDA04B5C544102F1199A0DFB50417D407D7A4B5C5441FAD899D40DFB50415ECD2A5A4B5C544100C6540A0EFB5041DE978E344B5C54413DE4BB170EFB5041D1DE2C2B4B5C54414BCA1D3C0EFB5041AA4DB5114B5C54418E4BA8D20EFB50412B0555A84A5C54414CF636EB0EFB50416C7624974A5C5441C6A3D6030FFB50415371297B4A5C544113D0CA2D0FFB504133417F484A5C5441907C8E690FFB5041E7DC52004A5C5441695E04DC0FFB5041FDF01876495C54413B4E17AC10FB50411407D27A485C5441E8821DC910FB5041CB10C557485C54414C6DCCDB10FB5041C24A8B3C485C5441030D53E410FB504129639529485C54412D65930011FB50413BAB83F8475C54414770292011FB50416B2DA7C1475C54419C6A6D4911FB50413FCFFA79475C54414993BF6511FB50413F26CA48475C54411B15537711FB5041020B432A475C5441B5AD83A411FB50419CB6EF26475C5441CD9F06AA11FB50411DF34F17475C544148B6251412FB504163667AEA455C5441E8FA1D2212FB5041805BE0C2455C544152EBC33412FB5041E324038E455C54417076B15812FB5041AED92928455C54415C82BE7912FB5041926278CA445C5441BE90829112FB5041F33C1987445C54410B3B569E12FB50414CABBC62445C54417B1DCAC412FB5041EA7F31F6435C5441E104C9FF12FB50417C808F4E435C5441C6D2535D13FB5041A8975045425C5441C7A5A4A713FB50417BD1A472415C5441FDAB3DF212FB5041BDED574D435C5441ABAE072213FB5041DA20CF9B425C5441AB1643FD0AFB5041D83B6DD1415C54414AD6DB8D0AFB5041CE846CC6415C54417395741E0AFB5041F2CF6BBB415C54417B911E5009FB5041B49E2DBD415C544113347BE908FB50413DEE00CA415C54415BF2137A08FB5041BA4100BF415C5441E514F80208FB5041516410B4415C54416145F68B07FB5041A3DD13B5415C5441DE75F41407FB5041785917B6415C54411E0B3E9606FB504135A52BB7415C54415A2C221F06FB504108D23BAC415C5441214D06A805FB504160014CA1415C5441D5E14F2905FB5041605560A2415C5441CF38A4A904FB5041F5358397415C5441ADD9EFFF01FB5041B2864586415C54413004ABBDFEFA50411C8B398C415C54415F343B30FAFA50411E1D51BA415C54412A07AD56F7FA5041AE3096B4415C544139A37FD3F4FA504189FF05A3415C5441511EAF54F4FA5041ED602798415C5441CFFD30B6F3FA5041C9F38D8D415C5441B9C08690F2FA504179520F90415C54411CFF7035EFFA50417152DE6B415C54418C00DDADEDFA5041FA415F5B415C544191F3D9BAE5FA5041D133A405415C54411762F50BE1FA5041266C458D405C544183FE3C98DDFA50412450D60D405C5441CC4E357DDDFA50415551BAEE405C5441CBE5F57EDCFA50412C971332495C54412CB6894BDCFA5041BD2DFFEC4B5C54416BC80922DCFA5041DC5D0C214E5C5441E1CB4A07DCFA5041B909EB25505C544180FAA6B9DCFA5041A243E21D515C5441DEFBE1AFE0FA5041EED9EB9F565C544196F6BA56DFFA50412DED733E575C5441313BB237D6FA5041935CF46E5B5C5441AD487305D6FA5041F6615A6B5B5C544163714B3BD4FA504106F95333585C5441EAAEECFAD3FA5041C16438BD575C54416DA85CC2D3FA50410438FF52575C54413C540B59D3FA5041C5436F8A565C54413488AC18D3FA50410AA95314565C54414BCE64D0D2FA5041F0586286555C5441600F5C87D2FA50410B306604555C5441EBFACB4ED2FA5041A8F92C9A545C54411C53832ED2FA504124219953545C54416D69BBA9D1FA504117ECA9B4525C544107BB5D93D3FA504152EF6B54505C5441627B52E1D3FA5041EF96FFF44F5C54419B6B2230D4FA50412C5E91954F5C54417EAA0A7FD4FA504180EC3B414F5C5441AA368FD5D4FA504111D4BCE14E5C54418E32AE33D5FA50410D8F39764E5C5441EFC4328AD5FA50410876BA164E5C5441BEC751E8D5FA50414E3037AB4D5C5441E189F03ED6FA5041D364AB574D5C5441C4F2C278D6FA50415EBBB4304D5C54417D4AE3F8D6FA50418D175EDA4C5C5441790BBFBBD8FA5041FA44DCC84E5C544168382D83D9FA5041CB5F250E4E5C5441118963C3D9FA5041CD3590B14D5C54415FBAE4C6D9FA5041B49D82AC4D5C5441BB417A51DAFA50412FC9DA774C5C544125452074DAFA50419B28B6E44A5C5441760D23AEDAFA5041B090FB25465C5441454609D3DAFA5041997FB4A1435C54415F1435DEDAFA50410CB4D827435C5441188341EDDAFA5041A3B32799425C5441BC29BEF3DAFA5041056C890A425C54419EF754FADAFA50414C75DE87415C544198721926DBFA50413C7C04A63F5C544119814641CFFA504121BD95504B5C544166E8CAD2CEFA50414C0424B14B5C5441E239DD6CCEFA50410D05C5104C5C54418C611406CEFA504143E667704C5C5441FEB926A0CDFA50419BE708D04C5C54412F168849CDFA5041D3D794234D5C54418976D9E2CCFA5041E1072B8F4D5C5441334D1A17CCFA50413ADF3A5B4E5C5441B432691FCAFA5041108A1498505C544168A664C1C9FA50417D418B0F515C5441F2B8C55BC9FA5041E1260693515C5441A596F5FDC8FA504182736322525C54419BDDBFA7C8FA5041A88FBCA5525C54419C971449C8FA5041CEB81B35535C5441EC2CA1FBC7FA50417F1D6ECF535C5441B48060DDC7FA5041D3182776545C5441E35533E6C7FA504161DFAFF8545C5441B44B04EFC7FA5041A21D5E7A555C54410F2988E8C7FA504199EEFB08565C544165ECF8C9C7FA5041E8FDDA8B565C5441A57F4FABC7FA504185C1C602575C54415D9F7DA9C7FA504193E0910A575C5441A7B9EC5DC7FA50413D7AA808585C544168422ED5C5FA5041A66ED9B6595C5441C8B49301C5FA5041BFC4EDD45A5C544102FF48E7C3FA5041170B07835C5C5441BA006C43C3FA504125A5CB885D5C5441055B9B20C2FA5041738F5BD75E5C544192D351DEC0FA50411E76173E605C5441A43FEE9BBFFA5041F515E098615C544176E9B8C7BEFA504137391B70625C54413159C1EABDFA5041A9245D30635C5441EFB85794BDFA50418284CF9B635C5441BF8C3936BDFA5041FECA5207645C5441CF2A3513BCFA50417223FC3D655C5441354648ADBBFA50419B0F9D9D655C544115FB0DBDB9FA5041F165A458675C544120D740F0B8FA50418868CF0C685C5441B86A269EB7FA5041A91BE043695C54414A9F52B5B5FA5041DFE2FCDA6A5C544109BE6B2FB5FA50418029E4176B5C5441963DC990B4FA5041ABAD1A606B5C54413154CFF2B3FA5041375D43916B5C54412A345215B3FA50412E44BDE26B5C5441CEEE9ADBB0FA5041723250B46C5C5441D436324EB0FA5041A07354086D5C5441A801BFC7AFFA5041906D17696D5C5441EDB2C251AFFA5041F4A3C2E06D5C5441A844C865AEFA5041838C3ECF6E5C544104F14DF7ADFA5041E7E2CC2F6F5C5441D5B55181ADFA5041B71978A76F5C5441C9C904FCACFA5041C8E15D2A705C5441B0E3A28DACFA50416AF00496705C5441E7E1421FACFA50417D838602715C54419BDA44A9ABFA504173365779715C54410A2E942BABFA50415C5B13F1715C54414DC8FDADAAFA5041BBBAC274725C544145835047AAFA50410FDC58E0725C54414F2E3AD1A9FA5041C2D9104C735C5441CD4EEF4BA9FA50416527D1CF735C5441B64173CEA8FA5041ABBF735F745C544194CC0150A8FA50411F0025E3745C54415A1220DAA7FA5041D76FC366755C54419D5AE87BA7FA5041878753C6755C54410CAC860DA7FA50415697FA31765C54419151B135A5FA504112AB9A1C785C5441612A45C8A4FA504143103394785C54415497E359A4FA50416820DAFF785C5441C94D9CEBA3FA504105677477795C5441EC2BD375A3FA5041EB852B067A5C5441E322501FA3FA504166ACAA657A5C5441A412E4B1A2FA5041F50F43DD7A5C5441163ED352A2FA50418B8CAF3D7B5C544110ABC504A2FA504163AA28917B5C54410EE173A6A1FA5041468CC5E47B5C5441E320783FA1FA50410B0D822C7C5C54417F4ABAA99EFA50411509E0AD7E5C54411B3536549EFA50416BE4653C7F5C544136093BC69EFA50419786ABBC7F5C54417B65837F9FFA50412978A9837F5C5441520000001ED3C3BAF8FA5041A49CF71A455C544170A24ED8F8FA50412024F045455C5441C55B65DDF8FA5041840D308D455C5441398403CBF8FA5041FE154DD6455C544134CDA67EF8FA504169CBB548465C54419400108EF8FA5041BE269448465C54419B7D7586F8FA5041DA4A9854465C5441A5D38047F8FA5041D25B1584465C54413EA749F8F7FA5041657690B4465C5441CAE25DA1F7FA504165641CE5465C5441887A8742F7FA504172FDF7FC465C5441605A33EBF6FA504128A8B6FD465C54416E077684F6FA50414DFA96FE465C544151E7212DF6FA5041FDA755FF465C5441B8112456F5FA50411E1A12F6465C5441E0A54CEFF4FA50413F22FFEA465C5441B5910668F4FA5041028A26EC465C544101AB9BE1F3FA504159164CED465C5441D696555AF3FA5041A78473EE465C5441B31636CCF2FA5041D7EBA9EF465C5441AF1C0A45F2FA50414CB2C4FC465C5441EE4464FFF0FA50410F63B1DB465C54415312C880F0FA5041CA80B9E8465C5441A534B6F9EFFA5041F3A6C701475C5441872AE36BEFFA50418892FD25475C5441B5AF15F5EEFA5041E834E83E475C544109ED0B5EEEFA5041DE5C197B475C5441977BB90FEEFA50416A0731A1475C5441AE47E1CAEDFA5041666666A6475C5441816629A9EDFA504189B7A9D5475C544129DCDD49EDFA50412CBF040C485C5441931C91D3ECFA5041507AD55F485C544139F41465ECFA5041663663C0485C54418D1F72F7EBFA5041628E1420495C5441D997093AEBFA5041027342D3495C544105D3B8E3EAFA504139E6A74A4A5C54414630828DEAFA5041BBA700CE4A5C5441DE56DB3FEAFA50411FB146514B5C544141736901EAFA5041EB6B84BC4B5C5441510D60C3E9FA5041DA5F8F574C5C5441FAFBBD94E9FA5041691B9EF14C5C5441C652835EE9FA50414E7E8B984D5C5441FCF95D20E9FA5041F893C8264E5C54413351C2F7E7FA50412CE1C156505C5441B391D0F4E6FA5041DCF5F1BC515C5441FCA98E18E6FA5041DF363470525C54410F354016E6FA5041BBDB6F73525C544171CF6D08E6FA50415586547D525C54412E756D99E5FA5041CB3C47A1525C54415466B1CAE4FA5041A3BE1774525C544158BE9793E4FA50418CADB550525C544130589E82E4FA50411AB50CFE515C5441DC801392E4FA50419E4B299F515C5441D4A3C498E4FA50415A017228515C5441C29454B7E4FA504108FD92A5505C5441F1B911EEE4FA5041B623663A505C5441A6B9F01BE5FA5041301B72AB4F5C5441561CD862E5FA5041BA5F2E344F5C544124C42C99E5FA5041F74B34994E5C5441CA59D2DEE5FA50418BBAFFF24D5C5441B07EC11CE6FA50415B78014C4D5C54411885B25AE6FA50418BB7DDA54C5C54412EDD8991E6FA5041B71DA4464C5C544143F62CC8E6FA504132E583CF4B5C54418A41390EE7FA5041AAF941584B5C5441139D0655E7FA5041FFDD0AD54A5C544197AEDE9AE7FA5041B64FE2454A5C5441D4CE93E1E7FA50413D6592B7495C5441FAC40F6DE8FA5041D4995A81485C5441175001A4E8FA50416544142E485C544122FE02EBE8FA50416FBDC3C2475C5441EA7A2249E9FA504130AE4057475C54412FE0A515EAFA50418D001780465C54419CA5E20FECFA5041657B65EF445C54413AAB8718EDFA504182218684445C5441773768A0EEFA5041A9B8D423445C5441B6D95A65F0FA50410D887547445C54419977E4BDF2FA5041BF782D70445C5441688BF35DF5FA50410ECE5495445C5441D3DCA9B2F6FA50417ABE2AA8445C5441DE4F53A0F8FA5041BA6E82F4445C54411ED3C3BAF8FA5041A49CF71A455C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 259987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C544130168849CDFA5041D3D794234D5C54418476D9E2CCFA5041E5072B8F4D5C5441344D1A17CCFA504136DF3A5B4E5C5441B732691FCAFA50410B8A1498505C54416AA664C1C9FA50417B418B0F515C5441EDB8C55BC9FA5041E4260693515C5441A396F5FDC8FA504183736322525C5441A0DDBFA7C8FA5041A68FBCA5525C54419C971449C8FA5041D2B81B35535C5441EF2CA1FBC7FA5041811D6ECF535C5441B58060DDC7FA5041D2182776545C5441E05533E6C7FA504161DFAFF8545C5441B94B04EFC7FA5041A21D5E7A555C5441132988E8C7FA50419BEEFB08565C544162ECF8C9C7FA5041EAFDDA8B565C5441A47F4FABC7FA504183C1C602575C5441619F7DA9C7FA504195E0910A575C5441A4B9EC5DC7FA50413E7AA808585C544165422ED5C5FA5041A36ED9B6595C5441CCB49301C5FA5041C3C4EDD45A5C544101FF48E7C3FA50411A0B07835C5C5441BB006C43C3FA50412AA5CB885D5C5441005B9B20C2FA5041788F5BD75E5C544194D351DEC0FA50411E76173E605C5441A33FEE9BBFFA5041F215E098615C544173E9B8C7BEFA504136391B70625C54412C59C1EABDFA5041A8245D30635C5441F1B85794BDFA50417D84CF9B635C5441BD8C3936BDFA504100CB5207645C5441CF2A3513BCFA50417523FC3D655C5441344648ADBBFA5041980F9D9D655C544112FB0DBDB9FA5041EF65A458675C544120D740F0B8FA50418568CF0C685C5441B76A269EB7FA5041A71BE043695C5441489F52B5B5FA5041E3E2FCDA6A5C544106BE6B2FB5FA50417B29E4176B5C5441993DC990B4FA5041A6AD1A606B5C54413554CFF2B3FA5041335D43916B5C54412D345215B3FA50413344BDE26B5C5441CEEE9ADBB0FA5041763250B46C5C5441D036324EB0FA5041A57354086D5C5441AD01BFC7AFFA5041916D17696D5C5441F0B2C251AFFA5041F2A3C2E06D5C5441A944C865AEFA50417F8C3ECF6E5C544104F14DF7ADFA5041E9E2CC2F6F5C5441D5B55181ADFA5041B51978A76F5C5441C9C904FCACFA5041CCE15D2A705C5441B2E3A28DACFA50416EF00496705C5441E8E1421FACFA504179838602715C5441A0DA44A9ABFA50416F365779715C5441062E942BABFA50415E5B13F1715C544151C8FDADAAFA5041B7BAC274725C54414A835047AAFA504111DC58E0725C54414E2E3AD1A9FA5041C0D9104C735C5441CC4EEF4BA9FA50416827D1CF735C5441B94173CEA8FA5041AFBF735F745C544197CC0150A8FA5041210025E3745C5441561220DAA7FA5041D76FC366755C54419A5AE87BA7FA5041858753C6755C544109AC860DA7FA50415997FA31765C54418D51B135A5FA504114AB9A1C785C54415D2A45C8A4FA504142103394785C54415297E359A4FA50416920DAFF785C5441C64D9CEBA3FA504108677477795C5441ED2BD375A3FA5041E6852B067A5C5441E422501FA3FA504168ACAA657A5C5441A412E4B1A2FA5041F30F43DD7A5C5441193ED352A2FA5041868CAF3D7B5C544111ABC504A2FA504163AA28917B5C54410DE173A6A1FA50414B8CC5E47B5C5441E120783FA1FA5041080D822C7C5C54417F4ABAA99EFA50411209E0AD7E5C5441193536549EFA50416FE4653C7F5C544138093BC69EFA50419286ABBC7F5C54417A65837F9FFA50412E78A9837F5C5441ACAB8B43A1FA5041352918077E5C5441150138D2A1FA5041AFB2DEE27D5C544125FE9668A2FA504108CBB9BD7D5C5441EA4210FFA2FA5041331B88A47D5C5441319A729DA3FA5041E0E62BA37D5C54410C260634A4FA50414873ED957D5C5441851F0FD3A4FA5041E6FDA87C7D5C54414DCF3E71A5FA50416BF240647D5C5441AA19B807A6FA504133570F4B7D5C54418C21179EA6FA5041B58BEA257D5C5441B64E123CA7FA504154249CF57C5C544159509BE2A7FA5041AC6C60C47C5C544193973E89A8FA504123EE179F7C5C5441378A1F27A9FA5041F45ED6627C5C54415A94A8CDA9FA5041CEB49A317C5C54417935F00DAAFA5041EB9574167C5C544179684E09ABFA5041BDF149AC7B5C54411A940AA8ABFA5041C69006707B5C54416B30353EACFA5041CB7EFB327B5C5441C1328E6AADFA5041C06C9ABA7A5C54414F5104F9ADFA5041D451A07D7A5C544162DA308FAEFA504130D16F417A5C54411C1545E0B0FA50415E0BFD5A795C5441C955247EB1FA50416A2CE11D795C544139B43614B2FA5041058ABDD5785C5441BD194852B5FA50412DF39A76775C54415ACEF1DCB6FA50414F2EC3A9765C54417A998D9CB7FA50412BCA06FC755C5441F752B768B8FA5041A5885485755C5441D9FFF10DBAFA504177976F90745C544174E78D4FC3FA5041A0DAB5E96F5C5441AC50335CC5FA5041538B13E26E5C5441188ADB5ECCFA5041D3C599966B5C54412B2EB8E1CDFA50411DDDE0BD6A5C54418784D5A3CFFA50416501AAD8695C5441F0058014D2FA5041BE7F01E6685C5441BD450AF7D3FA50410DA7B0A6685C5441F7DA7187D4FA5041EA00BE93685C5441233BF2CCE0FA5041AEB7A53C635C544190517DF5E7FA50412ED7F1B65F5C5441D0B59098EAFA50414310C35B5E5C54414884391FEBFA5041BFCDE7125E5C5441A7936E9DEBFA5041790DEDD65D5C544123FACB2BECFA5041E1F8008E5D5C5441115F45BAECFA504151B1E2515D5C544198EE26D6EDFA504106FAE6C05C5C544134E9F244EEFA50410FF20D855C5C5441E9F204DBEEFA5041E014113C5C5C5441A0D5C961EFFA50410CB103005C5C5441A1CCCBE7EFFA5041D1EF10CF5B5C544135EBC46EF0FA5041D21DEAAA5B5C544185E6C6F4F0FA50416162F7795B5C544188D38B7BF1FA50419E09EA3D5B5C5441A70CA5F9F1FA5041509B21F55A5C544185E54F80F2FA5041D30021AD5A5C544178237C16F3FA5041E58117705A5C544183821AA4F3FA50413B3EFB335A5C54415968B31AF4FA50414D3B2A035A5C54419EB3B389F4FA504187DA37DF595C5441F6B753E8F4FA50414D359BAE595C5441BB276467F5FA5041D7C39E72595C5441A0A8512CF9FA504115D54CB4575C544158E65B29FBFA5041B6B4F89F565C5441E059EDD4FDFA504106304B17555C5441967F525200FB504185C04748535C5441F6DB1EC100FB50411DFE6E0C535C544126B8E86D01FB5041246E4D94525C5441DE62D4C401FB5041B2C0C163525C5441C3EBC11B02FB504190991034525C54413FE0D78202FB5041E0266EF7515C5441180BAFF002FB5041C0FEA3AF515C5441B22F2E6703FB504199F1DF72515C5441D0E524E603FB50419973F02A515C54412DDC8B5C04FB5041C1A313E3505C5441FC8EA5DA04FB504125824B9A505C54415A1171AC06FB504177551B6E4F5C5441A5DDF53907FB5041CC270C264F5C54410B0E30AA09FB5041DE82E6984D5C5441160465060AFB50413DA217664D5C5441D7A3709D0BFB50415C8FC2954C5C544159DB3AD40BFB5041B4E065694C5C54414810CBCB0DFB50419E1C55604B5C5441C66EACEE0EFB5041FFA5B8944A5C5441DA6B24CB10FB5041B4695255485C54410387628E11FB5041D9763502475C54411DF96E9C12FB50419C3A1D8C445C5441AAAE072213FB5041D820CF9B425C5441AC1643FD0AFB5041DB3B6DD1415C54414AD6DB8D0AFB5041D0846CC6415C54416F95741E0AFB5041F2CF6BBB415C544180911E5009FB5041B19E2DBD415C544118347BE908FB50413BEE00CA415C54415AF2137A08FB5041BE4100BF415C5441E314F80208FB50414D6410B4415C54415F45F68B07FB50419FDD13B5415C5441DC75F41407FB5041785917B6415C54411A0B3E9606FB504130A52BB7415C54415D2C221F06FB504107D23BAC415C5441204D06A805FB504161014CA1415C5441D7E14F2905FB5041615560A2415C5441D438A4A904FB5041F7358397415C5441ACD9EFFF01FB5041AF864586415C54412E04ABBDFEFA50411A8B398C415C544160343B30FAFA5041221D51BA415C54412B07AD56F7FA5041AF3096B4415C54413AA37FD3F4FA504187FF05A3415C5441551EAF54F4FA5041EA602798415C5441CAFD30B6F3FA5041CBF38D8D415C5441BCC08690F2FA504178520F90415C544196F3D9BAE5FA5041D533A405415C54411862F50BE1FA5041266C458D405C544182FE3C98DDFA50412650D60D405C5441D14E357DDDFA50415751BAEE405C5441CCE5F57EDCFA50412C971332495C54412CB6894BDCFA5041BA2DFFEC4B5C54416BC80922DCFA5041D85D0C214E5C5441E1CB4A07DCFA5041B609EB25505C54417FFAA6B9DCFA5041A043E21D515C5441E3FBE1AFE0FA5041F3D9EB9F565C544199F6BA56DFFA504130ED733E575C54412C3BB237D6FA50418F5CF46E5B5C5441AD487305D6FA5041FB615A6B5B5C544163714B3BD4FA50410AF95333585C5441EFAEECFAD3FA5041C56438BD575C544172A85CC2D3FA50410838FF52575C54413E540B59D3FA5041C3436F8A565C54413488AC18D3FA504108A95314565C54414BCE64D0D2FA5041EC586286555C54415E0F5C87D2FA504107306604555C5441E7FACB4ED2FA5041ABF92C9A545C54411F53832ED2FA50411F219953545C54416D69BBA9D1FA504118ECA9B4525C54410ABB5D93D3FA50414EEF6B54505C5441657B52E1D3FA5041F096FFF44F5C5441976B2230D4FA50412C5E91954F5C54417EAA0A7FD4FA504181EC3B414F5C5441A6368FD5D4FA50410CD4BCE14E5C54418932AE33D5FA50410D8F39764E5C5441EFC4328AD5FA50410A76BA164E5C5441BCC751E8D5FA50414F3037AB4D5C5441E389F03ED6FA5041D764AB574D5C5441C0F2C278D6FA504160BBB4304D5C54417E4AE3F8D6FA504189175EDA4C5C54417C0BBFBBD8FA5041F544DCC84E5C544163382D83D9FA5041CD5F250E4E5C54410E8963C3D9FA5041D23590B14D5C54415CBAE4C6D9FA5041B79D82AC4D5C5441BD417A51DAFA50412DC9DA774C5C5441520000001AD3C3BAF8FA5041A99CF71A455C54416FA24ED8F8FA50411E24F045455C5441C15B65DDF8FA5041850D308D455C5441398403CBF8FA5041FF154DD6455C544139CDA67EF8FA504167CBB548465C54419000108EF8FA5041C1269448465C5441987D7586F8FA5041DE4A9854465C5441A0D38047F8FA5041D15B1584465C54413FA749F8F7FA5041687690B4465C5441C7E25DA1F7FA504161641CE5465C5441867A8742F7FA504175FDF7FC465C5441655A33EBF6FA50412AA8B6FD465C54416D077684F6FA504149FA96FE465C54414EE7212DF6FA5041F9A755FF465C5441B3112456F5FA5041221A12F6465C5441DEA54CEFF4FA50413C22FFEA465C5441B0910668F4FA5041FE8926EC465C544102AB9BE1F3FA50415D164CED465C5441D696555AF3FA5041A58473EE465C5441B71636CCF2FA5041D8EBA9EF465C5441AF1C0A45F2FA50414FB2C4FC465C5441F34464FFF0FA50411363B1DB465C54414F12C880F0FA5041C880B9E8465C5441A834B6F9EFFA5041F1A6C701475C54418B2AE36BEFFA50418D92FD25475C5441B5AF15F5EEFA5041E434E83E475C544104ED0B5EEEFA5041DC5C197B475C54419A7BB90FEEFA5041660731A1475C5441AE47E1CAEDFA5041666666A6475C5441866629A9EDFA504189B7A9D5475C544127DCDD49EDFA504129BF040C485C54418E1C91D3ECFA50414C7AD55F485C544138F41465ECFA5041663663C0485C54418F1F72F7EBFA5041628E1420495C5441D897093AEBFA5041FF7242D3495C544104D3B8E3EAFA50413DE6A74A4A5C54414530828DEAFA5041BDA700CE4A5C5441DA56DB3FEAFA504123B146514B5C544142736901EAFA5041F06B84BC4B5C5441530D60C3E9FA5041DD5F8F574C5C5441F5FBBD94E9FA50416B1B9EF14C5C5441C252835EE9FA5041527E8B984D5C5441FEF95D20E9FA5041FA93C8264E5C54413251C2F7E7FA50412DE1C156505C5441B691D0F4E6FA5041D8F5F1BC515C5441FCA98E18E6FA5041DD363470525C54410F354016E6FA5041B9DB6F73525C54416FCF6D08E6FA50415586547D525C54412D756D99E5FA5041CB3C47A1525C54415166B1CAE4FA5041A6BE1774525C544153BE9793E4FA50418CADB550525C544135589E82E4FA50411DB50CFE515C5441E0801392E4FA50419F4B299F515C5441D5A3C498E4FA50415A017228515C5441C29454B7E4FA504109FD92A5505C5441F4B911EEE4FA5041BA23663A505C5441A8B9F01BE5FA5041341B72AB4F5C5441571CD862E5FA5041BC5F2E344F5C544122C42C99E5FA5041FB4B34994E5C5441CF59D2DEE5FA504186BAFFF24D5C5441B07EC11CE6FA50415778014C4D5C54411A85B25AE6FA50418CB7DDA54C5C54412DDD8991E6FA5041BA1DA4464C5C544142F62CC8E6FA50412FE583CF4B5C54418C41390EE7FA5041AAF941584B5C5441109D0655E7FA504103DE0AD54A5C544196AEDE9AE7FA5041B44FE2454A5C5441D3CE93E1E7FA50413E6592B7495C5441F5C40F6DE8FA5041D6995A81485C5441195001A4E8FA50416144142E485C544125FE02EBE8FA50416EBDC3C2475C5441EE7A2249E9FA50412FAE4057475C54412BE0A515EAFA50418E001780465C54419CA5E20FECFA5041647B65EF445C544139AB8718EDFA504180218684445C54417C3768A0EEFA5041A8B8D423445C5441B5D95A65F0FA50410A887547445C54419D77E4BDF2FA5041BC782D70445C54416A8BF35DF5FA50410FCE5495445C5441D0DCA9B2F6FA50417BBE2AA8445C5441E24F53A0F8FA5041BE6E82F4445C54411AD3C3BAF8FA5041A99CF71A455C5441
+</a>
+
+<b>
+0106000000010000000103000000020000009A0100007B65837F9FFA50412978A9837F5C544156AD54DF9FFA50410D2E239F7F5C54419FCD26ED9FFA5041966B5B277F5C5441A1EE0B30A0FA5041ADB609EF7E5C544149D8357FA0FA504121C563AC7E5C54418DB9C8A3A0FA5041D920998D7E5C5441AD885CE0A0FA5041810C995A7E5C54413D7E10E4A0FA50416AF57A577E5C54410A9D19BFA1FA5041895EE9E77D5C5441B135DB07A2FA50416FDC9ED57D5C5441FA2FE92BA2FA50410FDB8ECE7D5C544131ED383AA2FA5041CCE52DC97D5C5441E306B255A2FA5041BF9A64C27D5C5441DE2A9F7AA2FA504106E6B4BA7D5C544161B5E4A7A2FA5041B97020B37D5C5441581633DFA2FA50417BE0DDA97D5C5441241B9D02A3FA5041224D80A47D5C5441373FB43CA3FA50413F9700A47D5C544143340052A3FA50413AC5D1A37D5C54419399E271A3FA50415CAC8BA37D5C5441F96A6693A3FA5041C7FD41A37D5C5441ABB186C5A3FA50419779A59F7D5C5441DC4D6EF3A3FA50418ADC9B9B7D5C54411752D325A4FA5041DF262D977D5C54410301DB77A4FA5041BF87268B7D5C5441DB1CA1A9A4FA5041DE113E837D5C5441439FD986A5FA5041CAECA2607D5C5441623997BDA5FA5041E8A178577D5C544119D191E4A5FA50418AEBF1507D5C544113147B16A6FA5041BBE169477D5C5441A430B541A6FA5041EE66BC3C7D5C54418E162F58A6FA5041781C2F377D5C54413F7C7283A6FA504182567F2C7D5C54419E3C8F91A7FA5041E33C56DC7C5C544154E2BADEA7FA5041A4DCA0C77C5C54415FFCA312A8FA504138C4B2B97C5C5441B257CE36A8FA5041C7BF89B17C5C544142FDF859A8FA50413284ABA97C5C54417D8CFD87A8FA50417EC25F9F7C5C54418EC154B7A8FA5041F408818D7C5C54412C3CF902A9FA5041FC5FA2707C5C5441BAED8826A9FA504173DA0F637C5C544184C9419CA9FA5041BD7E35407C5C54415AE004BEA9FA504199533A367C5C544132E47BD5A9FA5041D5984C2E7C5C54414A7269FCA9FA5041D697DB1D7C5C5441F9D24444AAFA5041B03582FF7B5C5441B0E7ABF6AAFA504184CA28B47B5C544198DDD532ADFA5041A58FEFD07A5C544141DFEFD2ADFA5041B0E4EC8D7A5C5441643EA0FEADFA50418BCD607B7A5C54415FC85333AEFA5041EF6A41667A5C5441887816A3AEFA5041B1A0B4397A5C54411E3C8F9DAFFA50414DB261D8795C54415AC1C846B1FA504190AF4E33795C5441D5A404FDB1FA5041B39EF5E0785C54418321C42DB2FA5041F562EECA785C544168D179D3B2FA5041232DD584785C5441C0C8919FB3FA50419F417F2E785C54418E8D42DAB3FA5041997BAB15785C54418DD06E14B4FA504137C30FFD775C5441506BBF5EB4FA5041C7FA9FDD775C54413C83A794B4FA50419144D2C6775C54417371E9C1B4FA5041DB30ADB3775C5441B175610DB5FA50415F71C093775C544101CDB525B5FA50414EBB7589775C5441A1F9DA4FB5FA5041B8B2A177775C54413837FD6DB5FA5041A6643968775C5441EF4FF1A5B5FA5041FBB82E4B775C54412B93CEE5B5FA5041D9EC082A775C544122F9D0F6B5FA5041F2D93421775C5441789E1104B6FA50414BF5531A775C5441B269405FB6FA5041934A00EB765C5441258738A6B6FA50415C732AC6765C5441EA684BE1B6FA50416573D1A5765C5441FDDEC1F1B6FA5041061AE496765C544160AE6605B7FA50411A5D1485765C544144797225B7FA5041C7CB0568765C5441BF1FCA3CB7FA50413E89DB52765C5441DE10975DB7FA5041DFD51D35765C544117F8A37EB7FA5041B6232617765C5441AC41129FB7FA5041BDFF8FFA755C5441BBCD3EAEB7FA5041A999BDF1755C5441324C18D0B7FA50415DA70FDE755C54419E791CFCB7FA5041138F78C4755C5441838C9D81B8FA50418EAFDA76755C54413213D897B9FA5041EAFE18D5745C54415F0DCC2CBAFA504174D4EE80745C5441AD5F9B68BBFA50411D273DE2735C5441733973F8BCFA5041F2745119735C5441CA4F0D68BEFA50413F449960725C544175460E38C0FA5041E1F86F77715C5441141906F5C1FA5041C46CD797705C5441D73980AFC5FA504125FEECBA6E5C54415BA8A501CAFA5041358F0BB36C5C54410019001ACCFA5041768AF6B66B5C5441325C9B94CCFA5041AF707D786B5C5441AF03EB48CDFA5041BB877A136B5C5441B825EEBACDFA504105BA9BD36A5C544129413F0FCFFA50418E6F54246A5C5441154B7C3ACFFA504182B04F0E6A5C54415689284ECFFA50415C0E4B046A5C5441AEB96184CFFA50416A43AEE8695C5441586DE3ABCFFA5041DD0889D5695C54412C8E56D1CFFA5041CACFFCC6695C544134EB77F0CFFA5041EB06E5BA695C5441103A2E1ED0FA5041C72323A9695C54418E8B7246D0FA50414AC37E99695C54416ADA2874D0FA504130E0BC87695C5441F639A5A2D0FA5041420CAE75695C5441EE821AE9D0FA504158454F5A695C54419C136074D1FA5041C2423524695C544150DEEC10D2FA50412A0065E7685C5441C5A31CB7D3FA5041BB0B14AF685C5441BF28A023D4FA5041E0FED6A0685C5441DA554A57D4FA5041AD8A0F9A685C5441EBC09E87D4FA50411777AA93685C54411EBECEA4D4FA50418BDCF686685C5441C5843FF9D5FA5041FF5FD0F2675C5441D2E20CCDD6FA5041EBBAA496675C5441C0969332D8FA5041CFD40EFB665C5441C38BF2AAD9FA5041C78C4557665C544179FF6315DBFA5041C9E08BB9655C5441A15BF7F4DDFA504143B47179645C5441EFD32585DFFA5041DDD24BCB635C5441A1165E98DFFA50416BA9EEC2635C54417C0293E1DFFA50411A2113A3635C544101A5E3A2E0FA50410E0AF34E635C5441D1E464DBE0FA504184CA8935635C544190D99B85E1FA5041A9BDC8E1625C54418F67DDE8E1FA504137F9F1B0625C5441DAF38A8AE2FA5041C7406461625C544181ED3D47E4FA5041CBD59386615C5441BCEB4758E5FA5041F4893A00615C5441EE8E719DE5FA50419E7B32DE605C54415904D486E8FA5041C4EA326C5F5C544184166BC8E9FA50416C2BCFC65E5C5441F0AD8014EBFA5041B2E0B4185E5C5441A776C417ECFA5041C26343985D5C54418013C6C8ECFA5041E28B7A4A5D5C5441C411DE88EDFA5041BF775FE85C5C544163B89BE9EDFA5041589064B65C5C5441DB841C4DEEFA5041609568815C5C544160D31E7CEEFA5041EAAF386A5C5C5441945ABB04EFFA5041FAD87A295C5C5441B3C62C4FEFFA50412DF94E085C5C544157165898EFFA50414E5016EC5B5C544117DEC0E9EFFA5041A4BA8ACE5B5C54414F5F0935F0FA5041F1B760BA5B5C544192542E79F0FA5041CE891CA75B5C54412FE025B8F0FA504100A71C905B5C5441F1AC2E09F1FA5041DEB5DF705B5C544155630F2EF1FA5041690071605B5C5441D982356AF1FA504175B7A3455B5C5441F2169FA9F1FA504104EB51235B5C5441524DA2E1F1FA50413574FD025B5C54415F07524FF2FA5041A8BD52C75A5C5441A84C1A78F2FA504112A984B15A5C5441E2EABC8EF2FA5041B1FD43A75A5C54414E68EBAFF2FA50413871C7995A5C5441F72A2A7FF3FA504135C658415A5C54411E5528B8F3FA504118AAA8265A5C5441375F59D3F3FA5041E8CF88205A5C5441D531DD08F4FA504140C1810A5A5C54414966F32CF4FA5041CAC709FB595C5441D2A8806EF4FA5041B9C606E8595C5441A1B3B389F4FA504182DA37DF595C544130FC56BAF4FA5041163C3BC6595C54415FC8347FF5FA5041E7D09A67595C544186949B1FF7FA5041B65800A7585C54410D7C5C2BF9FA5041513CBEB4575C5441A5EF7DD2F9FA5041EA27185A575C54413EB40B5CFAFA5041059F6C0F575C5441E2312EEEFAFA50418F9C18C0565C5441A41DF55AFBFA504170C07A83565C54410C0AFB8BFBFA5041FE685167565C5441BAED48D1FBFA50412987813F565C5441322A8071FDFA5041FDD86850555C5441C9177CC5FDFA504119262A20555C54417BE250D7FDFA5041DCF58E15555C5441848AC3EAFDFA5041AB636E07555C544122FB7F12FEFA5041B8F990EA545C54412BC9912EFEFA504133192DD6545C5441C2EC5079FEFA50417E0BE19F545C5441E075C996FEFA50419194788A545C5441E32EE74600FB5041D64A9350535C5441CDA7737100FB504136487737535C5441F448A8A300FB5041360C591C535C5441FD55B8BE00FB504104ECBA0D535C5441A7A17C4001FB5041CFD9E1B3525C54413564D76401FB5041FB549B9A525C5441D9149D8F01FB504160717A81525C5441B34698A901FB5041DBB6F772525C54412CB418E401FB5041FC459A52525C544137FFAF0E02FB5041B94D3C3B525C54411C59BDB702FB504190B3DBD4515C5441654D13ED02FB504123BCFFB1515C54416B51340103FB504153322BA7515C5441C826F72B03FB50417B973D91515C5441F2FC14BC03FB50416E5EC542515C5441AA5EA57D04FB5041FFF4F8CF505C5441B69A589C06FB50413BD37A784F5C5441CA58E70207FB50414EE114424F5C54413F66312107FB504109A1A8324F5C54414E17773807FB5041120FCF264F5C5441DF71275C07FB5041F3EF4A104F5C5441F796B07E07FB5041F60152FA4E5C54416C32979607FB504153371DEB4E5C544162D498F807FB5041C0A4C2AC4E5C544145D5AF2A08FB5041595EE48C4E5C54416B42418D08FB5041BF4F2E4E4E5C5441A932297C09FB5041BD052FB64D5C544104D18DAA09FB5041B0D8B2984D5C5441110465060AFB50413EA217664D5C544192D508160BFB5041320C10DB4C5C5441E0008A980BFB5041EFB344984C5C5441F349DDC50BFB5041978307754C5C5441532209E60BFB5041497E06604C5C544167DADB260CFB5041C95EE73D4C5C5441EFBBB3430CFB504138A5B82E4C5C5441B8AD10740CFB50415A9143154C5C5441CBDBB0980CFB50412723FC014C5C5441B398B9170DFB5041BDE11DBF4B5C5441594931510DFB50416FF2DDA04B5C544102F1199A0DFB50417D407D7A4B5C5441FAD899D40DFB50415ECD2A5A4B5C544100C6540A0EFB5041DE978E344B5C54413DE4BB170EFB5041D1DE2C2B4B5C54414BCA1D3C0EFB5041AA4DB5114B5C54418E4BA8D20EFB50412B0555A84A5C54414CF636EB0EFB50416C7624974A5C5441C6A3D6030FFB50415371297B4A5C544113D0CA2D0FFB504133417F484A5C5441907C8E690FFB5041E7DC52004A5C5441695E04DC0FFB5041FDF01876495C54413B4E17AC10FB50411407D27A485C5441E8821DC910FB5041CB10C557485C54414C6DCCDB10FB5041C24A8B3C485C5441030D53E410FB504129639529485C54412D65930011FB50413BAB83F8475C54414770292011FB50416B2DA7C1475C54419C6A6D4911FB50413FCFFA79475C54414993BF6511FB50413F26CA48475C54411B15537711FB5041020B432A475C5441B5AD83A411FB50419CB6EF26475C5441CD9F06AA11FB50411DF34F17475C544148B6251412FB504163667AEA455C5441E8FA1D2212FB5041805BE0C2455C544152EBC33412FB5041E324038E455C54417076B15812FB5041AED92928455C54415C82BE7912FB5041926278CA445C5441BE90829112FB5041F33C1987445C54410B3B569E12FB50414CABBC62445C54417B1DCAC412FB5041EA7F31F6435C5441E104C9FF12FB50417C808F4E435C5441C6D2535D13FB5041A8975045425C5441C7A5A4A713FB50417BD1A472415C5441FDAB3DF212FB5041BDED574D435C5441ABAE072213FB5041DA20CF9B425C5441AB1643FD0AFB5041D83B6DD1415C54414AD6DB8D0AFB5041CE846CC6415C54417395741E0AFB5041F2CF6BBB415C54417B911E5009FB5041B49E2DBD415C544113347BE908FB50413DEE00CA415C54415BF2137A08FB5041BA4100BF415C5441E514F80208FB5041516410B4415C54416145F68B07FB5041A3DD13B5415C5441DE75F41407FB5041785917B6415C54411E0B3E9606FB504135A52BB7415C54415A2C221F06FB504108D23BAC415C5441214D06A805FB504160014CA1415C5441D5E14F2905FB5041605560A2415C5441CF38A4A904FB5041F5358397415C5441ADD9EFFF01FB5041B2864586415C54413004ABBDFEFA50411C8B398C415C54415F343B30FAFA50411E1D51BA415C54412A07AD56F7FA5041AE3096B4415C544139A37FD3F4FA504189FF05A3415C5441511EAF54F4FA5041ED602798415C5441CFFD30B6F3FA5041C9F38D8D415C5441B9C08690F2FA504179520F90415C54411CFF7035EFFA50417152DE6B415C54418C00DDADEDFA5041FA415F5B415C544191F3D9BAE5FA5041D133A405415C54411762F50BE1FA5041266C458D405C544183FE3C98DDFA50412450D60D405C5441CC4E357DDDFA50415551BAEE405C5441CBE5F57EDCFA50412C971332495C54412CB6894BDCFA5041BD2DFFEC4B5C54416BC80922DCFA5041DC5D0C214E5C5441E1CB4A07DCFA5041B909EB25505C544180FAA6B9DCFA5041A243E21D515C5441DEFBE1AFE0FA5041EED9EB9F565C544196F6BA56DFFA50412DED733E575C5441313BB237D6FA5041935CF46E5B5C5441AD487305D6FA5041F6615A6B5B5C544163714B3BD4FA504106F95333585C5441EAAEECFAD3FA5041C16438BD575C54416DA85CC2D3FA50410438FF52575C54413C540B59D3FA5041C5436F8A565C54413488AC18D3FA50410AA95314565C54414BCE64D0D2FA5041F0586286555C5441600F5C87D2FA50410B306604555C5441EBFACB4ED2FA5041A8F92C9A545C54411C53832ED2FA504124219953545C54416D69BBA9D1FA504117ECA9B4525C544107BB5D93D3FA504152EF6B54505C5441627B52E1D3FA5041EF96FFF44F5C54419B6B2230D4FA50412C5E91954F5C54417EAA0A7FD4FA504180EC3B414F5C5441AA368FD5D4FA504111D4BCE14E5C54418E32AE33D5FA50410D8F39764E5C5441EFC4328AD5FA50410876BA164E5C5441BEC751E8D5FA50414E3037AB4D5C5441E189F03ED6FA5041D364AB574D5C5441C4F2C278D6FA50415EBBB4304D5C54417D4AE3F8D6FA50418D175EDA4C5C5441790BBFBBD8FA5041FA44DCC84E5C544168382D83D9FA5041CB5F250E4E5C5441118963C3D9FA5041CD3590B14D5C54415FBAE4C6D9FA5041B49D82AC4D5C5441BB417A51DAFA50412FC9DA774C5C544125452074DAFA50419B28B6E44A5C5441760D23AEDAFA5041B090FB25465C5441454609D3DAFA5041997FB4A1435C54415F1435DEDAFA50410CB4D827435C5441188341EDDAFA5041A3B32799425C5441BC29BEF3DAFA5041056C890A425C54419EF754FADAFA50414C75DE87415C544198721926DBFA50413C7C04A63F5C544119814641CFFA504121BD95504B5C544166E8CAD2CEFA50414C0424B14B5C5441E239DD6CCEFA50410D05C5104C5C54418C611406CEFA504143E667704C5C5441FEB926A0CDFA50419BE708D04C5C54412F168849CDFA5041D3D794234D5C54418976D9E2CCFA5041E1072B8F4D5C5441334D1A17CCFA50413ADF3A5B4E5C5441B432691FCAFA5041108A1498505C544168A664C1C9FA50417D418B0F515C5441F2B8C55BC9FA5041E1260693515C5441A596F5FDC8FA504182736322525C54419BDDBFA7C8FA5041A88FBCA5525C54419C971449C8FA5041CEB81B35535C5441EC2CA1FBC7FA50417F1D6ECF535C5441B48060DDC7FA5041D3182776545C5441E35533E6C7FA504161DFAFF8545C5441B44B04EFC7FA5041A21D5E7A555C54410F2988E8C7FA504199EEFB08565C544165ECF8C9C7FA5041E8FDDA8B565C5441A57F4FABC7FA504185C1C602575C54415D9F7DA9C7FA504193E0910A575C5441A7B9EC5DC7FA50413D7AA808585C544168422ED5C5FA5041A66ED9B6595C5441C8B49301C5FA5041BFC4EDD45A5C544102FF48E7C3FA5041170B07835C5C5441BA006C43C3FA504125A5CB885D5C5441055B9B20C2FA5041738F5BD75E5C544192D351DEC0FA50411E76173E605C5441A43FEE9BBFFA5041F515E098615C544176E9B8C7BEFA504137391B70625C54413159C1EABDFA5041A9245D30635C5441EFB85794BDFA50418284CF9B635C5441BF8C3936BDFA5041FECA5207645C5441CF2A3513BCFA50417223FC3D655C5441354648ADBBFA50419B0F9D9D655C544115FB0DBDB9FA5041F165A458675C544120D740F0B8FA50418868CF0C685C5441B86A269EB7FA5041A91BE043695C54414A9F52B5B5FA5041DFE2FCDA6A5C544109BE6B2FB5FA50418029E4176B5C5441963DC990B4FA5041ABAD1A606B5C54413154CFF2B3FA5041375D43916B5C54412A345215B3FA50412E44BDE26B5C5441CEEE9ADBB0FA5041723250B46C5C5441D436324EB0FA5041A07354086D5C5441A801BFC7AFFA5041906D17696D5C5441EDB2C251AFFA5041F4A3C2E06D5C5441A844C865AEFA5041838C3ECF6E5C544104F14DF7ADFA5041E7E2CC2F6F5C5441D5B55181ADFA5041B71978A76F5C5441C9C904FCACFA5041C8E15D2A705C5441B0E3A28DACFA50416AF00496705C5441E7E1421FACFA50417D838602715C54419BDA44A9ABFA504173365779715C54410A2E942BABFA50415C5B13F1715C54414DC8FDADAAFA5041BBBAC274725C544145835047AAFA50410FDC58E0725C54414F2E3AD1A9FA5041C2D9104C735C5441CD4EEF4BA9FA50416527D1CF735C5441B64173CEA8FA5041ABBF735F745C544194CC0150A8FA50411F0025E3745C54415A1220DAA7FA5041D76FC366755C54419D5AE87BA7FA5041878753C6755C54410CAC860DA7FA50415697FA31765C54419151B135A5FA504112AB9A1C785C5441612A45C8A4FA504143103394785C54415497E359A4FA50416820DAFF785C5441C94D9CEBA3FA504105677477795C5441EC2BD375A3FA5041EB852B067A5C5441E322501FA3FA504166ACAA657A5C5441A412E4B1A2FA5041F50F43DD7A5C5441163ED352A2FA50418B8CAF3D7B5C544110ABC504A2FA504163AA28917B5C54410EE173A6A1FA5041468CC5E47B5C5441E320783FA1FA50410B0D822C7C5C54417F4ABAA99EFA50411509E0AD7E5C54411B3536549EFA50416BE4653C7F5C544136093BC69EFA50419786ABBC7F5C54417B65837F9FFA50412978A9837F5C5441520000001ED3C3BAF8FA5041A49CF71A455C544170A24ED8F8FA50412024F045455C5441C55B65DDF8FA5041840D308D455C5441398403CBF8FA5041FE154DD6455C544134CDA67EF8FA504169CBB548465C54419400108EF8FA5041BE269448465C54419B7D7586F8FA5041DA4A9854465C5441A5D38047F8FA5041D25B1584465C54413EA749F8F7FA5041657690B4465C5441CAE25DA1F7FA504165641CE5465C5441887A8742F7FA504172FDF7FC465C5441605A33EBF6FA504128A8B6FD465C54416E077684F6FA50414DFA96FE465C544151E7212DF6FA5041FDA755FF465C5441B8112456F5FA50411E1A12F6465C5441E0A54CEFF4FA50413F22FFEA465C5441B5910668F4FA5041028A26EC465C544101AB9BE1F3FA504159164CED465C5441D696555AF3FA5041A78473EE465C5441B31636CCF2FA5041D7EBA9EF465C5441AF1C0A45F2FA50414CB2C4FC465C5441EE4464FFF0FA50410F63B1DB465C54415312C880F0FA5041CA80B9E8465C5441A534B6F9EFFA5041F3A6C701475C5441872AE36BEFFA50418892FD25475C5441B5AF15F5EEFA5041E834E83E475C544109ED0B5EEEFA5041DE5C197B475C5441977BB90FEEFA50416A0731A1475C5441AE47E1CAEDFA5041666666A6475C5441816629A9EDFA504189B7A9D5475C544129DCDD49EDFA50412CBF040C485C5441931C91D3ECFA5041507AD55F485C544139F41465ECFA5041663663C0485C54418D1F72F7EBFA5041628E1420495C5441D997093AEBFA5041027342D3495C544105D3B8E3EAFA504139E6A74A4A5C54414630828DEAFA5041BBA700CE4A5C5441DE56DB3FEAFA50411FB146514B5C544141736901EAFA5041EB6B84BC4B5C5441510D60C3E9FA5041DA5F8F574C5C5441FAFBBD94E9FA5041691B9EF14C5C5441C652835EE9FA50414E7E8B984D5C5441FCF95D20E9FA5041F893C8264E5C54413351C2F7E7FA50412CE1C156505C5441B391D0F4E6FA5041DCF5F1BC515C5441FCA98E18E6FA5041DF363470525C54410F354016E6FA5041BBDB6F73525C544171CF6D08E6FA50415586547D525C54412E756D99E5FA5041CB3C47A1525C54415466B1CAE4FA5041A3BE1774525C544158BE9793E4FA50418CADB550525C544130589E82E4FA50411AB50CFE515C5441DC801392E4FA50419E4B299F515C5441D4A3C498E4FA50415A017228515C5441C29454B7E4FA504108FD92A5505C5441F1B911EEE4FA5041B623663A505C5441A6B9F01BE5FA5041301B72AB4F5C5441561CD862E5FA5041BA5F2E344F5C544124C42C99E5FA5041F74B34994E5C5441CA59D2DEE5FA50418BBAFFF24D5C5441B07EC11CE6FA50415B78014C4D5C54411885B25AE6FA50418BB7DDA54C5C54412EDD8991E6FA5041B71DA4464C5C544143F62CC8E6FA504132E583CF4B5C54418A41390EE7FA5041AAF941584B5C5441139D0655E7FA5041FFDD0AD54A5C544197AEDE9AE7FA5041B64FE2454A5C5441D4CE93E1E7FA50413D6592B7495C5441FAC40F6DE8FA5041D4995A81485C5441175001A4E8FA50416544142E485C544122FE02EBE8FA50416FBDC3C2475C5441EA7A2249E9FA504130AE4057475C54412FE0A515EAFA50418D001780465C54419CA5E20FECFA5041657B65EF445C54413AAB8718EDFA504182218684445C5441773768A0EEFA5041A9B8D423445C5441B6D95A65F0FA50410D887547445C54419977E4BDF2FA5041BF782D70445C5441688BF35DF5FA50410ECE5495445C5441D3DCA9B2F6FA50417ABE2AA8445C5441DE4F53A0F8FA5041BA6E82F4445C54411ED3C3BAF8FA5041A49CF71A455C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942530 - 3821931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000028000000D7A3709D5D3E514148E17AA4A1FE54410AD7A390693E5141E17A146EA8FE54417B14AEE7713E514185EB51F8AAFE5441F6285C7F7A3E5141A4703D9AADFE5441C3F5283C803E51411F85EB01B1FE544100000080853E51415C8FC275B4FE544152B81EA5873E51418FC2F518B7FE5441E17A147E883E5141D7A370FDB6FE5441B81E854B923E51413333333397FE54410AD7A3B0953E5141EC51B85E86FE5441295C8F62663E5141295C8F2289FE54413D0AD753663E5141295C8F2288FE544152B81EE5953E5141AE47E15A85FE544161765451973E5141299EC4AB7AFE544181B83A2C953E514163ABF23D7AFE54412EE0C4E2933E514100B209077AFE54414678D6F38E3E514100B209077AFE5441CAB3A5058D3E514100B209077AFE54415566133B873E514163ABF23D7AFE544185C96C03843E514163ABF23D7AFE54417BEC61937A3E514100B209077AFE544159774512763E514100B209077AFE544160EEE335723E514100B209077AFE54411C04AB33693E5141C6A4DB747AFE54417B97271E5C3E51418D97ADE27AFE5441F4F5EBBF503E514143690C637CFE5441469B2B634B3E5141324899757DFE544112D2654E413E5141AF0CCA637FFE5441CF1A63F23E3E5141D8F8840880FE5441535632043D3E514165DE28E480FE5441A480DD9C3C3E51417D3A393A81FE5441EC51B85E473E51413D0AD7837EFE54418FC2F568553E51417B14AE277CFE5441CDCCCC6C603E5141F6285C4F7BFE5441C3F528AC683E514152B81E957AFE5441E17A147E683E5141B81E850B7DFE54411F85EB41663E51413333336387FE54415C8FC225613E5141A4703DDA98FE5441666666A65E3E5141AE47E13AA2FE5441D7A3709D5D3E514148E17AA4A1FE5441
+</a>
+
+<b>
+010600000001000000010300000001000000290000000DF28459683E51419B110EA97DFE5441E001145C683E51419D36DDA87DFE54412A147149683E5141FCC31AFF7DFE54412E201344673E51418239FA7583FE54412F89B34B663E5141CCAF8D6C87FE5441C9DDEF40643E514121EDFBC38FFE54410FB2F27C613E51415DDA953B99FE544111214BC95F3E51411760A10B9FFE544145ECD9005F3E51412B8245B8A1FE5441CAC14FA25E3E5141C6EE0A66A2FE54410CA3AC5A673E5141571B6DC9A7FE5441297A5C86693E5141A94CD0BAA8FE5441FEBF83096D3E5141A476B9F6A9FE5441CFBF5BE26F3E5141CD9C07E5AAFE5441EB613DCD743E51413F072F3DACFE5441903368EB7A3E5141B30C0C88AEFE5441875538EA7D3E51418D902822B0FE54412B2559F77F3E5141A3846C5CB1FE5441D3B4B60C823E5141A911FEAAB2FE5441B07AB8A4843E5141F80F6F73B4FE544178263870873E51412F515EC7B7FE54416C0B2E42883E5141D1217098B8FE54417A025B19893E5141B4910864B6FE5441DA4E42AF893E5141F2F145BEB4FE5441583395C98A3E5141FE89E124B1FE544152531E1F8D3E5141471DBEA3A9FE54414C7B1620913E51412C3CDA2A9DFE54413FF12F5B923E51411048FCF698FE54417C1233F4923E51414DAD4CC796FE5441B08E25B0933E514115662BE593FE5441A8E7BAF9933E5141813DA8A092FE5441FBBAE1D7943E51415D8FFC5D8EFE5441982869E0953E51413B55FEF588FE5441F87EB882963E5141CAB2D86C85FE54415AA56E71973E5141683A015580FE5441BC99ECFD873E5141E393E9E37EFE544115F99C7A7B3E5141D8FE63D07DFE5441D5620DFA723E51416821C3337DFE5441DF739A556F3E51417666E7347DFE544102F093A8693E5141E8E5C57F7DFE54410DF28459683E51419B110EA97DFE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570873 - 1271990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002C0000001EF625A562585141402F7359928D544162DE250F5D585141A4B926D98F8D5441CDCCCC4C5C585141A4703D9A908D544114AE47F14D585141EC51B8EEA18D5441666666B6515851415C8FC285A58D544152B81E4554585141D7A370CDA88D54411F85EB5156585141A4703D1AAC8D5441A4703DFA5658514148E17A14AD8D544148E17A1458585141666666B6AE8D54413D0AD7D358585141295C8FA2AF8D54417B14AE975C585141CDCCCC3CB48D54410AD7A3506058514185EB51D8B88D54413D0AD7F361585141000000B0BA8D54418FC2F5186958514185EB51B8C28D5441C3F5288C70585141E17A14FECA8D5441EC51B8EE715851417B14AE87CC8D5441F6285C2F755851417B14AED7CF8D54418FC2F5087758514100000010D18D54415B2334C778585141109C0F55D28D5441B385905A7A5851419CA93D39CF8D54414645E0A67A58514121A152C1CE8D54416EC47F3F7B585141242C5F6FCD8D544109E8ECED7B58514180A4D45ECC8D54414B1EF15A7C5851411F534EBBCB8D5441201445147D5851417DCBC3AACA8D5441D5896CA97A585141757719A3C78D54410B36F1F37E5851410027D026C48D5441FA30AE878258514126586BB9C18D54415C8FC2E581585141EC51B80EC08D5441EC51B8AE81585141CDCCCC5CBD8D54417B14AE178258514185EB5158B98D5441295C8FB282585141D7A3709DB68D544148E17AD47C585141B81E852BAC8D54410BCC5D607358514148BC033C9C8D544149F173E872585141197D2A6A9B8D5441EC83083A72585141E334D5439A8D5441D52FFC0672585141329FACCF998D54416E12E966715851415E45495A998D54417106A5E56C585141B1C2A8C1968D5441A782DD706B58514190D09124968D5441598C48B968585141BF3CDF7F948D5441228985C5655851410F6A9999938D5441447D85FA625851410A11CB6E928D54411EF625A562585141402F7359928D5441
+</a>
+
+<b>
+010600000001000000010300000001000000300000001EF625A562585141422F7359928D544161DE250F5D585141A8B926D98F8D5441CDCCCC4C5C585141A4703D9A908D54411064F4B04F585141F87941D89F8D54419B4DD145525851411FB9D2ACA18D54414ABCD3E6545851415E3440D0A68D5441D3D9F95D5858514120275079AB8D54412B117BAE595851411449C662AD8D544156993A165B585141BCB46C74AF8D54413C89984D5E58514155780696B38D54414F8023DA61585141F86EFF1AB88D544126D763E763585141ED15E5E7BA8D54415F1CDC876A5851418DBED96AC28D544198A804A070585141BA6C786CCA8D5441EC51B8EE715851417B14AE87CC8D5441F6285C2F755851417B14AED7CF8D54418FC2F5087758514100000010D18D54415E2334C778585141159C0F55D28D5441B485905A7A58514199A93D39CF8D54414545E0A67A58514122A152C1CE8D544171C47F3F7B585141202C5F6FCD8D54410BE8ECED7B5851417DA4D45ECC8D5441501EF15A7C5851411F534EBBCB8D5441247B585B7D58514118CD7959CA8D544146F1B8EA7A5851411DF33429C78D54410E36F1F37E585141FF26D026C48D5441F630AE878258514128586BB9C18D544105E78D60815851411AD9EC01C08D54410B6BB692805851417E73C042BE8D5441ABA5D45280585141A76D4904BB8D5441A0EE4CBD805851414D7D59C5B88D54414C8F29448158514158D673F8B58D5441BC3EF27C815851411E362979B48D544148E17AD47C585141B81E852BAC8D54414D75E11C7A585141F2A9A206A78D544136FA2D5E77585141424DEBBAA18D544168271683745851419CF0336F9C8D54410ECC5D60735851414DBC033C9C8D544149F173E872585141177D2A6A9B8D5441E883083A72585141E634D5439A8D5441D12FFC0672585141309FACCF998D54417312E966715851415945495A998D5441E7731E2A6D5851413CF39F9C968D5441283A24796B5851411EA3FADC958D5441568C48B968585141BC3CDF7F948D5441218985C565585141146A9999938D5441427D85FA625851410B11CB6E928D54411EF625A562585141422F7359928D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570873 - 3407946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002C0000001EF625A562585141402F7359928D544162DE250F5D585141A4B926D98F8D5441CDCCCC4C5C585141A4703D9A908D544114AE47F14D585141EC51B8EEA18D5441666666B6515851415C8FC285A58D544152B81E4554585141D7A370CDA88D54411F85EB5156585141A4703D1AAC8D5441A4703DFA5658514148E17A14AD8D544148E17A1458585141666666B6AE8D54413D0AD7D358585141295C8FA2AF8D54417B14AE975C585141CDCCCC3CB48D54410AD7A3506058514185EB51D8B88D54413D0AD7F361585141000000B0BA8D54418FC2F5186958514185EB51B8C28D5441C3F5288C70585141E17A14FECA8D5441EC51B8EE715851417B14AE87CC8D5441F6285C2F755851417B14AED7CF8D54418FC2F5087758514100000010D18D54415B2334C778585141109C0F55D28D5441B385905A7A5851419CA93D39CF8D54414645E0A67A58514121A152C1CE8D54416EC47F3F7B585141242C5F6FCD8D544109E8ECED7B58514180A4D45ECC8D54414B1EF15A7C5851411F534EBBCB8D5441201445147D5851417DCBC3AACA8D5441D5896CA97A585141757719A3C78D54410B36F1F37E5851410027D026C48D5441FA30AE878258514126586BB9C18D54415C8FC2E581585141EC51B80EC08D5441EC51B8AE81585141CDCCCC5CBD8D54417B14AE178258514185EB5158B98D5441295C8FB282585141D7A3709DB68D544148E17AD47C585141B81E852BAC8D54410BCC5D607358514148BC033C9C8D544149F173E872585141197D2A6A9B8D5441EC83083A72585141E334D5439A8D5441D52FFC0672585141329FACCF998D54416E12E966715851415E45495A998D54417106A5E56C585141B1C2A8C1968D5441A782DD706B58514190D09124968D5441598C48B968585141BF3CDF7F948D5441228985C5655851410F6A9999938D5441447D85FA625851410A11CB6E928D54411EF625A562585141402F7359928D5441
+</a>
+
+<b>
+010600000001000000010300000001000000300000001EF625A562585141422F7359928D544161DE250F5D585141A8B926D98F8D5441CDCCCC4C5C585141A4703D9A908D54411064F4B04F585141F87941D89F8D54419B4DD145525851411FB9D2ACA18D54414ABCD3E6545851415E3440D0A68D5441D3D9F95D5858514120275079AB8D54412B117BAE595851411449C662AD8D544156993A165B585141BCB46C74AF8D54413C89984D5E58514155780696B38D54414F8023DA61585141F86EFF1AB88D544126D763E763585141ED15E5E7BA8D54415F1CDC876A5851418DBED96AC28D544198A804A070585141BA6C786CCA8D5441EC51B8EE715851417B14AE87CC8D5441F6285C2F755851417B14AED7CF8D54418FC2F5087758514100000010D18D54415E2334C778585141159C0F55D28D5441B485905A7A58514199A93D39CF8D54414545E0A67A58514122A152C1CE8D544171C47F3F7B585141202C5F6FCD8D54410BE8ECED7B5851417DA4D45ECC8D5441501EF15A7C5851411F534EBBCB8D5441247B585B7D58514118CD7959CA8D544146F1B8EA7A5851411DF33429C78D54410E36F1F37E585141FF26D026C48D5441F630AE878258514128586BB9C18D544105E78D60815851411AD9EC01C08D54410B6BB692805851417E73C042BE8D5441ABA5D45280585141A76D4904BB8D5441A0EE4CBD805851414D7D59C5B88D54414C8F29448158514158D673F8B58D5441BC3EF27C815851411E362979B48D544148E17AD47C585141B81E852BAC8D54414D75E11C7A585141F2A9A206A78D544136FA2D5E77585141424DEBBAA18D544168271683745851419CF0336F9C8D54410ECC5D60735851414DBC033C9C8D544149F173E872585141177D2A6A9B8D5441E883083A72585141E634D5439A8D5441D12FFC0672585141309FACCF998D54417312E966715851415945495A998D5441E7731E2A6D5851413CF39F9C968D5441283A24796B5851411EA3FADC958D5441568C48B968585141BC3CDF7F948D5441218985C565585141146A9999938D5441427D85FA625851410B11CB6E928D54411EF625A562585141422F7359928D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>690814 - 3566902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002900000066666606105A514152B81EF591865441C3F5282C115A5141AE47E16A89865441333333B3115A5141A4703D2A8386544185EB51A8115A5141B81E859B7986544185EB5148115A5141295C8F626D8654410AD7A300115A5141295C8F826B865441AE47E13A105A5141295C8F526886544148E17A04115A5141333333735D865441713D0AF70C5A5141713D0A975E86544148E17A84025A5141AE47E1AA618654415C8FC215F959514114AE475164865441713D0AA7F259514114AE47A16686544185EB5188EE59514152B81EB568865441C3F528ECEA595141666666166B8654417B14AE47E7595141666666466E86544166666636E0595141B81E85BB75865441AE47E17ADF595141D7A370BD77865441F6285CBFE25951418FC2F5187E865441C3F528CCE35951410AD7A380808654414D6D67E5E6595141C9EE9921868654417776260AE85951416D4E0E3E88865441D9E4F888E95951413411175E8F8654412B18537EED5951410748913A9686544107B5BE7AE8595141134FD1089C865441713D0AB7E659514148E17AD49D86544114AE4711E75951413D0AD7739E86544166666656E959514148E17A34A08654411F85EBD1EA595141F6285C2FA1865441E17A14FEEF5951419A999999A2865441EC51B82EF7595141A4703DAAA486544166666656FE595141AE47E14AA7865441CDCCCC7C045A514166666686AA865441F6285C2F065A51410AD7A3E0A6865441B81E856B075A5141295C8F62A586544136E3D9630F5A51418DBCA860A7865441A24E8E510F5A5141C7E42424A7865441831F8D440F5A51414280C6F7A6865441016C5F2E0F5A514158C1D24CA68654415E44DD190F5A51415B040AC0A48654413F92ADD70E5A51416BEFB6409E86544166666606105A514152B81EF5918654410103000000010000000400000074B000E8115A514142A83BDD898654418590792C115A5141F17268BE8F8654419E6189DC115A514169D29C578B86544174B000E8115A514142A83BDD89865441
+</a>
+
+<b>
+010600000001000000010300000001000000510000000D62DEA7115A5141C524E6D1A3865441D32ACC08105A51416044331DA08654419266EA42115A5141B5E281529F86544180E901AC155A5141AD9341C89C865441453B422A185A5141465D4F3B9F865441E991719D195A5141A72705629E8654410139B8F01B5A5141AB9E42C99C865441A469B7251D5A5141FDB419F59B865441461522521D5A5141E1CDF2A99B865441BE608B341C5A5141CEB896F299865441DA9CDD2B1D5A5141A1D6962198865441EBA27F331E5A51419A26FA669786544132425920205A51419759C72E96865441514AA439225A5141C92F0B2B9686544162C31CF3225A51417017B212998654414EA1AB63245A5141234CD15F988654416B7F0ACE2B5A5141AFBACAE694865441667E5E17515A51419CE6B8798B865441FD6EB477585A51415386BF2E878654413AEFDA04615A514179C1B3A181865441EEDF48A4685A514100D9544F7686544148C3E59E6B5A514174DB724271865441E3659E2D635A5141A2F0BFE1708654411F63F66C595A5141604EB5497086544141256C01505A51412EBC76946F86544155A32CFC4A5A51413010ACE56E865441D8042351475A514120AF35696E8654416F3B57E7425A5141CFBF59D96D865441878DCDDB425A5141174AE49169865441BB722827435A5141CB5BDEF75C8654411A62C4713F5A5141F4891FA95B8654417804E0AB3D5A5141F924DE335B86544125D50E143B5A5141770DFC835A8654410A1902EF375A51412CC32E12598654410EB5D68F375A51413B05B3E758865441C02F22DB325A5141B333989258865441C055832E305A5141B69034655886544178869F3A2B5A5141A4B11E14588654411A9D5797295A5141784A80CE58865441F38D214E2A5A5141A6558EFA59865441DAAF6F0C2B5A5141C43BDC935B865441CD0F64B32B5A51417FE657675D8654415DB592142C5A5141CD726E1F6186544121204D7B2B5A5141E76DD1AE648654411695C09E2A5A514151098A4567865441336221D9285A514103691D3C6C86544105473785285A5141D2B543296D865441109AC5291F5A5141D36B4E0F6D865441015362991E5A51419DB918426C8654416FDDD5241A5A5141F751C7026C865441D28EC4F2185A51411CA65ABF6B865441971DE51B165A51415763BB866B865441532000D7145A51410825E8836B8654410A854C87135A5141FFD7FC806B865441D331068D125A5141A133E3046D865441526081A1125A5141ADC8E256728654419654B5D4125A514121F396197C865441254975C6125A5141B755E0857D8654412BA66BEF125A5141E2E09CA47E865441DD544193125A5141E9A5EB8580865441A4BA0614125A5141CAA81EF387865441D387F930115A514126A0719E918654415779340A115A514156F8814993865441D023B306105A51413934AF3B938654413EC0EAB80E5A5141990439D89986544125E482830D5A5141B1712B169C865441D8635CBE0B5A51415C33260D9E8654415EECB2FC0A5A5141562285D59E86544143277A050A5A51418E59E7F79F8654418123E7360A5A51416CC9416CA186544196546E58095A51419B264ABEA2865441E81C347C085A514135AE4209A48654411D11C20A085A5141548870AAA48654412E20CB79075A514105E42066A58654411204CF5B0A5A51417C60A31EA6865441ED01D0EE0C5A5141F5F964C3A68654414C6D03200F5A514174FBB24FA78654411898B7A70F5A5141B0388E6FA7865441AA4E5A62105A514148455F27A6865441FCD1C54B115A514122838174A48654410D62DEA7115A5141C524E6D1A3865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>752130 - 1715906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000002CA7A87514AB5041817BFBF04B1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B5541CDCCCCAC23AB5041E17A14AE751B5541C3F528BC2DAB504152B81E85761B554185EB51E82FAB5041333333D3771B55411F85EBC12FAB5041EC51B86E751B5541B81E854B2FAB504166666606721B5541AE47E10A2FAB5041AE47E19A6C1B55417B14AE172FAB5041D7A370DD681B5541295C8FC22FAB504148E17A64611B5541D7A370CD32AB50417B14AEA7511B5541ECF1C1DE32AB50415F98114D511B55412CA7A87514AB5041817BFBF04B1B5541
+</a>
+
+<b>
+01060000000100000001030000000200000019000000F73CA2E513AB5041DA674C704D1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B554183FE73C809AB5041B05D2F30741B5541376DBBAD1CAB50412AA59FFD751B5541CB317B791CAB504111D38B4E731B5541E5D1012A1DAB5041532EEE1F721B5541A3769F581EAB5041532EEE1F721B5541EF56336A20AB5041E169E402731B55413860616621AB5041431399AF741B554177C1D06621AB5041E4F0F570761B5541B0465BFF23AB50418D4C5AB0761B5541D2185EFD2CAB50410453F28B771B554185EB51E82FAB5041333333D3771B55411F85EBC12FAB5041EC51B86E751B5541841EC45B2FAB504183961D06721B55413A2546402FAB50418A360015711B55412F64B4232FAB5041FE500DE66E1B5541AE47E10A2FAB5041AE47E19A6C1B55417B14AE172FAB5041D7A370DD681B5541295C8FC22FAB504148E17A64611B5541D7A370CD32AB50417B14AEA7511B5541F73CA2E513AB5041DA674C704D1B55410B00000006DF112019AB5041070D1829691B5541F015F18419AB5041BB2C8417671B55412356FEE51AAB5041F9B080D3641B5541116443601CAB50412543C209641B5541B93FC0F31DAB50410F7AA16E641B554177E45D221FAB5041A18CFD66661B55410249EEEF1EAB504179D12146681B5541E8A8673F1EAB50413A4D258A6A1B5541FB9A22C51CAB5041248404EF6A1B554153BFA5311BAB5041AFE894BC6A1B554106DF112019AB5041070D1829691B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>752130 - 3767451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000002CA7A87514AB5041817BFBF04B1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B5541CDCCCCAC23AB5041E17A14AE751B5541C3F528BC2DAB504152B81E85761B554185EB51E82FAB5041333333D3771B55411F85EBC12FAB5041EC51B86E751B5541B81E854B2FAB504166666606721B5541AE47E10A2FAB5041AE47E19A6C1B55417B14AE172FAB5041D7A370DD681B5541295C8FC22FAB504148E17A64611B5541D7A370CD32AB50417B14AEA7511B5541ECF1C1DE32AB50415F98114D511B55412CA7A87514AB5041817BFBF04B1B5541
+</a>
+
+<b>
+01060000000100000001030000000200000019000000F73CA2E513AB5041DA674C704D1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B554183FE73C809AB5041B05D2F30741B5541376DBBAD1CAB50412AA59FFD751B5541CB317B791CAB504111D38B4E731B5541E5D1012A1DAB5041532EEE1F721B5541A3769F581EAB5041532EEE1F721B5541EF56336A20AB5041E169E402731B55413860616621AB5041431399AF741B554177C1D06621AB5041E4F0F570761B5541B0465BFF23AB50418D4C5AB0761B5541D2185EFD2CAB50410453F28B771B554185EB51E82FAB5041333333D3771B55411F85EBC12FAB5041EC51B86E751B5541841EC45B2FAB504183961D06721B55413A2546402FAB50418A360015711B55412F64B4232FAB5041FE500DE66E1B5541AE47E10A2FAB5041AE47E19A6C1B55417B14AE172FAB5041D7A370DD681B5541295C8FC22FAB504148E17A64611B5541D7A370CD32AB50417B14AEA7511B5541F73CA2E513AB5041DA674C704D1B55410B00000006DF112019AB5041070D1829691B5541F015F18419AB5041BB2C8417671B55412356FEE51AAB5041F9B080D3641B5541116443601CAB50412543C209641B5541B93FC0F31DAB50410F7AA16E641B554177E45D221FAB5041A18CFD66661B55410249EEEF1EAB504179D12146681B5541E8A8673F1EAB50413A4D258A6A1B5541FB9A22C51CAB5041248404EF6A1B554153BFA5311BAB5041AFE894BC6A1B554106DF112019AB5041070D1829691B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918747 - 317614
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000066666676B6A0504100000080501B544185EB5148BBA050418FC2F548571B54415C8FC215BCA050419A999969581B544114AE4741BCA05041B81E858B581B54410AD7A3C0BDA050419A9999195A1B544100000070BEA0504185EB51385B1B54419A999999C2A0504185EB5108621B5441333333E3C2A0504185EB5188611B5441B81E850BCDA05041333333B34F1B5441CDCCCC7CC8A0504152B81E85471B544152B81E95C6A05041B81E857B431B5441B81E855BC5A05041000000A0401B5441F6285C2FC2A05041F6285C4F391B544114AE4761BEA050411F85EBE12D1B544114AE4721BEA050411F85EB212E1B54415C8FC2C5ABA0504185EB5158401B544148E17A84A8A05041713D0A97431B54410AD7A340AEA05041B81E855B491B54415C8FC285AFA0504133333323461B54411F85EB91B1A05041AE47E13A521B5441D7A370ADB1A05041AE47E1DA521B5441295C8FC2B1A05041666666E6521B54419A999949B2A0504114AE47A1521B544166666676B6A0504100000080501B5441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000C26CFF6FBEA05041C6FA50385B1B544100000070BEA0504185EB51385B1B5441E8619999C2A050415E905108621B5441C44634E3C2A050414C6E5288611B5441D52E7B0BCDA050415D5D21B34F1B54412DCC6756C8A05041AD5C5CBF471B5441866BFF6FBEA05041C1F850385B1B5441C26CFF6FBEA05041C6FA50385B1B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>450750 - 1482543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000AAC5DD8A84365141EBF9A441D1285541F9D86A389636514118B541D6CC285541EB3B80809E3651419C1D6A63CA2855417B14AE379B365141713D0AF7C528554148E17A3496365141E17A14CEBC285541295C8F2295365141B81E85ABBB285541E17A149E9336514166666656BB285541897FB33A90365141954A9938BC285541FFA2CE958B3651410144CE6DBD28554152B81E25893651410AD7A320BE2855413333339380365141295C8FE2C02855417B14AE676E365141D7A3702DC32855418BA73FFC6C3651413D7A87F7C4285541E7EE0A266C365141E01D114FD128554149C064F26C3651415BA9F14DD32855416CF460026F365141A6F8F0ADD32855412F27F0567136514177E6F575D3285541C40BA0117E36514180D7C806D22855410702127D7E365141B3C8B6EDD1285541AAC5DD8A84365141EBF9A441D1285541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3C1563C85365141E5BA4615D1285541AEC5DD8A84365141EAF9A441D12855410B02127D7E365141B4C8B6EDD1285541C40BA0117E36514180D7C806D22855412F27F0567136514177E6F575D3285541F6285CEF7E365141F6285C2FD2285541B81E852B7F365141F6285C6FD3285541F6285CCF7B365141F6285C0FD4285541AE47E19A763651413D0AD7E3D4285541F6285CEF6F365141F6285CEFD5285541CDCCCCEC6836514133333373D62855410AD7A3406536514114AE47D1D6285541295C8F8263365141F6285C2FD72855418FC2F5D8603651413D0AD7D3D72855418FC2F5585C36514114AE47D1D6285541295C8F2259365141F6285C2FD72855418FC2F57856365141B81E85EBD7285541295C8FB25136514185EB5178D82855410AD7A3304C365141CDCCCC1CD92855419A99990946365141295C8F92D9285541D7A3706D3F365141295C8F92D928554185EB51783F365141EC51B8EEDE28554185EB51F84436514152B81E25DF2855410AD7A32054365141C3F5285CDF2855419A9999895A36514148E17A34DF285541A4703D4A5D3651413D0AD723DF2855418FC2F5C8653651411F85EBB1DE2855417B14AE476A3651415C8FC275DE2855419A99991974365141CDCCCCECDD2855413333330386365141A4703DEADD285541B81E855B993651413D0AD7E3DD285541EC51B84EA1365141EC51B80EDE285541CDCCCCFCA53651419A999959DE28554152B81EC5A936514166666686DE285541CDCCCCBCA5365141A4703D2AD6285541C3F528DCA2365141EC51B81ED1285541295C8FD2A0365141F6285C0FCE285541666666D69E365141A4703D4ACB285541F03B80809E365141A01D6A63CA2855411106B730973651419BC6D78CCC285541FCD86A389636514117B541D6CC285541C3C1563C85365141E5BA4615D1285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>450750 - 4162907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000AAC5DD8A84365141EBF9A441D1285541F9D86A389636514118B541D6CC285541EB3B80809E3651419C1D6A63CA2855417B14AE379B365141713D0AF7C528554148E17A3496365141E17A14CEBC285541295C8F2295365141B81E85ABBB285541E17A149E9336514166666656BB285541897FB33A90365141954A9938BC285541FFA2CE958B3651410144CE6DBD28554152B81E25893651410AD7A320BE2855413333339380365141295C8FE2C02855417B14AE676E365141D7A3702DC32855418BA73FFC6C3651413D7A87F7C4285541E7EE0A266C365141E01D114FD128554149C064F26C3651415BA9F14DD32855416CF460026F365141A6F8F0ADD32855412F27F0567136514177E6F575D3285541C40BA0117E36514180D7C806D22855410702127D7E365141B3C8B6EDD1285541AAC5DD8A84365141EBF9A441D1285541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3C1563C85365141E5BA4615D1285541AEC5DD8A84365141EAF9A441D12855410B02127D7E365141B4C8B6EDD1285541C40BA0117E36514180D7C806D22855412F27F0567136514177E6F575D3285541F6285CEF7E365141F6285C2FD2285541B81E852B7F365141F6285C6FD3285541F6285CCF7B365141F6285C0FD4285541AE47E19A763651413D0AD7E3D4285541F6285CEF6F365141F6285CEFD5285541CDCCCCEC6836514133333373D62855410AD7A3406536514114AE47D1D6285541295C8F8263365141F6285C2FD72855418FC2F5D8603651413D0AD7D3D72855418FC2F5585C36514114AE47D1D6285541295C8F2259365141F6285C2FD72855418FC2F57856365141B81E85EBD7285541295C8FB25136514185EB5178D82855410AD7A3304C365141CDCCCC1CD92855419A99990946365141295C8F92D9285541D7A3706D3F365141295C8F92D928554185EB51783F365141EC51B8EEDE28554185EB51F84436514152B81E25DF2855410AD7A32054365141C3F5285CDF2855419A9999895A36514148E17A34DF285541A4703D4A5D3651413D0AD723DF2855418FC2F5C8653651411F85EBB1DE2855417B14AE476A3651415C8FC275DE2855419A99991974365141CDCCCCECDD2855413333330386365141A4703DEADD285541B81E855B993651413D0AD7E3DD285541EC51B84EA1365141EC51B80EDE285541CDCCCCFCA53651419A999959DE28554152B81EC5A936514166666686DE285541CDCCCCBCA5365141A4703D2AD6285541C3F528DCA2365141EC51B81ED1285541295C8FD2A0365141F6285C0FCE285541666666D69E365141A4703D4ACB285541F03B80809E365141A01D6A63CA2855411106B730973651419BC6D78CCC285541FCD86A389636514117B541D6CC285541C3C1563C85365141E5BA4615D1285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>869229 - 98972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000031000000B81E856B4E745141C3F5288C537954415C8FC2455074514148E17AC45A795441CDCCCC1C65745141B81E85DB567954419A999959657451411F85EBB15179544152B81EB5787451419A9999B94B7954418FC2F59878745141B81E859B4A7954411F85EB617D745141A4703D8A45795441666666268074514152B81EE542795441666666C68174514114AE47C1417954416666669681745141A4703DCA4079544148E17A44837451415C8FC2D53F795441CDCCCC6C8374514114AE47013E7954419A99998989745141666666C63C7954419A9999898E7451415C8FC2353C79544114AE47A195745141C3F5280C3B7954418FC2F5F8947451418FC2F5383A795441295C8F229574514100000010397954413333332394745141A4703D1A36795441000000E093745141666666A634795441B81E85DB93745141C3F528BC32795441000000C094745141333333A32D795441CDCCCC2C927451411F85EB212F7954411F85EB5190745141713D0A173079544185EB51588E7451413D0AD76330795441B81E853B8B74514185EB51F82F795441295C8FC2877451417B14AE77317954417B14AED785745141E17A14EE30795441EC51B8FE8074514152B81E8534795441E17A149E7F7451415C8FC2153379544133333373837451417B14AE0730795441D7A370AD7F745141A4703D2A2A795441A4703DFA8D745141AE47E14A1F79544114AE47C18B74514114AE4731197954417B14AEC78674514148E17A1418795441713D0AC7817451415C8FC2F51A7954417B14AE6784745141B81E857B1F7954415C8FC2C57C745141AE47E1CA22795441AE47E17A717451413333337327795441C3F528BC6D745141713D0A2729795441EC51B88E6F7451413D0AD7832D795441713D0AD772745141A4703D1A35795441295C8FF26B7451416666661638795441666666D663745141AE47E13A3C795441EC51B80E637451417B14AE2731795441BF56387C627451418058765C2A7954419A9999F9587451417B14AEE72E79544152B81E154E745141333333B334795441A4703D6A4774514185EB512838795441B81E856B4E745141C3F5288C537954410A00000014AE476190745141E17A142E35795441F6285C1F8F745141E17A142E3579544185EB51588E745141713D0A5734795441A4703D2A8E74514148E17A3433795441295C8FD28E74514100000020327954411F85EB519074514148E17AC4317954417B14AE3791745141B81E858B3279544148E17A84917451410AD7A380337954418FC2F51891745141295C8FC23479544114AE476190745141E17A142E35795441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000026AF488C4B745141FDF6565148795441B81E856B4E745141C3F5288C53795441FA47DB714E745141993ADBA453795441B5DE4E1265745141806542224E795441F578CA4E65745141066F80AD51795441589B128F77745141305349144C795441A640C9E07774514113DB15FB4B79544182309EF5777451412F23A9F44B7954411005735778745141251F7DD64B7954411A13249078745141752F01C54B7954411A13249078745141BBC1885A4A795441B2753E2577745141A70FF2414179544149D858BA75745141D9350C6A3C79544126AF488C4B745141FDF6565148795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>869229 - 300686
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000031000000B81E856B4E745141C3F5288C537954415C8FC2455074514148E17AC45A795441CDCCCC1C65745141B81E85DB567954419A999959657451411F85EBB15179544152B81EB5787451419A9999B94B7954418FC2F59878745141B81E859B4A7954411F85EB617D745141A4703D8A45795441666666268074514152B81EE542795441666666C68174514114AE47C1417954416666669681745141A4703DCA4079544148E17A44837451415C8FC2D53F795441CDCCCC6C8374514114AE47013E7954419A99998989745141666666C63C7954419A9999898E7451415C8FC2353C79544114AE47A195745141C3F5280C3B7954418FC2F5F8947451418FC2F5383A795441295C8F229574514100000010397954413333332394745141A4703D1A36795441000000E093745141666666A634795441B81E85DB93745141C3F528BC32795441000000C094745141333333A32D795441CDCCCC2C927451411F85EB212F7954411F85EB5190745141713D0A173079544185EB51588E7451413D0AD76330795441B81E853B8B74514185EB51F82F795441295C8FC2877451417B14AE77317954417B14AED785745141E17A14EE30795441EC51B8FE8074514152B81E8534795441E17A149E7F7451415C8FC2153379544133333373837451417B14AE0730795441D7A370AD7F745141A4703D2A2A795441A4703DFA8D745141AE47E14A1F79544114AE47C18B74514114AE4731197954417B14AEC78674514148E17A1418795441713D0AC7817451415C8FC2F51A7954417B14AE6784745141B81E857B1F7954415C8FC2C57C745141AE47E1CA22795441AE47E17A717451413333337327795441C3F528BC6D745141713D0A2729795441EC51B88E6F7451413D0AD7832D795441713D0AD772745141A4703D1A35795441295C8FF26B7451416666661638795441666666D663745141AE47E13A3C795441EC51B80E637451417B14AE2731795441BF56387C627451418058765C2A7954419A9999F9587451417B14AEE72E79544152B81E154E745141333333B334795441A4703D6A4774514185EB512838795441B81E856B4E745141C3F5288C537954410A00000014AE476190745141E17A142E35795441F6285C1F8F745141E17A142E3579544185EB51588E745141713D0A5734795441A4703D2A8E74514148E17A3433795441295C8FD28E74514100000020327954411F85EB519074514148E17AC4317954417B14AE3791745141B81E858B3279544148E17A84917451410AD7A380337954418FC2F51891745141295C8FC23479544114AE476190745141E17A142E35795441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000026AF488C4B745141FDF6565148795441B81E856B4E745141C3F5288C53795441FA47DB714E745141993ADBA453795441B5DE4E1265745141806542224E795441F578CA4E65745141066F80AD51795441589B128F77745141305349144C795441A640C9E07774514113DB15FB4B79544182309EF5777451412F23A9F44B7954411005735778745141251F7DD64B7954411A13249078745141752F01C54B7954411A13249078745141BBC1885A4A795441B2753E2577745141A70FF2414179544149D858BA75745141D9350C6A3C79544126AF488C4B745141FDF6565148795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342979 - 1035908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000BC0B4D382EEB50417018862036AF5441E5BCBBE539EB504161CB2EE410AF54418BD997F422EB5041E3736F6800AF54418FA0F128F7EA50412ECA676D0DAF5441BC0B4D382EEB50417018862036AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F1732E539EB50412FB4E5E510AF544113658EE739EB50411A259AE710AF544132EB5E4D41EB50416D1CEF02F9AE544119DAA9DB40EB50412E008B81F8AE54417E7F77F53EEB5041F02C47C0F8AE544109A1E87A38EB5041EC9DD7C5FAAE5441060425EE22EB50410A1DE86000AF54419ABC77B337EB50418E7234500FAF5441E5BCBBE539EB504165CB2EE410AF54417F1732E539EB50412FB4E5E510AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342979 - 3850514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000BC0B4D382EEB50417018862036AF5441E5BCBBE539EB504161CB2EE410AF54418BD997F422EB5041E3736F6800AF54418FA0F128F7EA50412ECA676D0DAF5441BC0B4D382EEB50417018862036AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F1732E539EB50412FB4E5E510AF544113658EE739EB50411A259AE710AF544132EB5E4D41EB50416D1CEF02F9AE544119DAA9DB40EB50412E008B81F8AE54417E7F77F53EEB5041F02C47C0F8AE544109A1E87A38EB5041EC9DD7C5FAAE5441060425EE22EB50410A1DE86000AF54419ABC77B337EB50418E7234500FAF5441E5BCBBE539EB504165CB2EE410AF54417F1732E539EB50412FB4E5E510AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>632138 - 225779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AE4766B450419A9999890E2755410AD7A31068B45041AE47E1CA0F2755419A9999E969B450410AD7A3D00F2755417B14AE076BB45041E17A148E10275541C3F528BC6CB45041E17A14AE1127554185EB51086FB4504185EB51F812275541CDCCCC7C71B45041A4703D5A1427554114AE47F172B45041295C8F1215275541A4703DDA75B450413333338316275541AE47E13A7AB45041E17A14AE182755419A9999F97DB45041EC51B8CE19275541F6285C9F83B450418FC2F5E80B2755413D0AD76387B450415C8FC2A5022755419A9999298DB4504114AE4771F42655413D0AD7738BB4504148E17A64F42655410AD7A30084B4504152B81EB5F32655413D0AD7D381B450411F85EB81F3265541713D0AE77AB45041666666D60427554148E17A346EB450413D0AD7E300275541333333336DB450411F85EB910027554148E17A846CB450415C8FC2B50127554152B81EC566B45041A4703D9A0D2755417B14AE4766B450419A9999890E275541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000007B14AE076BB45041E17A148E10275541D7A370AD70B4504185EB51A802275541F63AB90971B45041303B4FC5012755419CB1ABD370B45041BC4E81B401275541389A74466FB450419E0304390127554126DB41136DB45041566146C70027554148E17A846CB450415C8FC2B50127554152B81EC566B45041A4703D9A0D2755417B14AE4766B450419A9999890E2755410AD7A31068B45041AE47E1CA0F2755419A9999E969B450410AD7A3D00F2755417B14AE076BB45041E17A148E10275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600127 - 2921066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A14CE96225141B81E854BB5675441EC51B84E9622514100000050BE67544185EB5128C0225141F6285CCFC16754419A999949C2225141AE47E18ABB6754411F85EB11C422514114AE47A1B767544100000080C6225141B81E857BB6675441CDCCCC4CC72251413D0AD7F3A46754410AD7A3F09722514114AE47D1A0675441E17A14CE96225141B81E854BB5675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F2B694EDBA225141489C3027C067544120C8F353962251419A6D9318BD6754415498136096225141F9475152BC675441D486363E96225141EF21EC54BC675441CE15F24C96225141F2EA0F70BE6754412AD76206A4225141DF5A7A75BF675441A7F93246BB2251417475EA61C1675441B7D7BC25C022514155A889D1C1675441687C7A50C2225141AEEA136FBB67544106500826C4225141ED259388B7675441A71407DEC6225141DE20F953B667544140EA4026C722514123C25CFDA4675441BAEA2AFDBD2251415205671EA46754414120C2FABD2251417BBC3139A4675441C5EA2AFDBD22514123F66839A46754419A81A5C7BD22514165B58E71A6675441DF5CB6C4BD225141183D3B73A6675441BBEDEF3DBB225141A43C57F3BF675441A35DE6F3BA2251410B2902EEBF675441F2B694EDBA225141489C3027C0675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600127 - 3805258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A14CE96225141B81E854BB5675441EC51B84E9622514100000050BE67544185EB5128C0225141F6285CCFC16754419A999949C2225141AE47E18ABB6754411F85EB11C422514114AE47A1B767544100000080C6225141B81E857BB6675441CDCCCC4CC72251413D0AD7F3A46754410AD7A3F09722514114AE47D1A0675441E17A14CE96225141B81E854BB5675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F2B694EDBA225141489C3027C067544120C8F353962251419A6D9318BD6754415498136096225141F9475152BC675441D486363E96225141EF21EC54BC675441CE15F24C96225141F2EA0F70BE6754412AD76206A4225141DF5A7A75BF675441A7F93246BB2251417475EA61C1675441B7D7BC25C022514155A889D1C1675441687C7A50C2225141AEEA136FBB67544106500826C4225141ED259388B7675441A71407DEC6225141DE20F953B667544140EA4026C722514123C25CFDA4675441BAEA2AFDBD2251415205671EA46754414120C2FABD2251417BBC3139A4675441C5EA2AFDBD22514123F66839A46754419A81A5C7BD22514165B58E71A6675441DF5CB6C4BD225141183D3B73A6675441BBEDEF3DBB225141A43C57F3BF675441A35DE6F3BA2251410B2902EEBF675441F2B694EDBA225141489C3027C0675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600322 - 1040786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441713D0AC75C235141295C8FE2416C5441E17A148E5A235141E17A14BE406C544152B81EE55923514166666616466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C54417B14AEA750235141E17A146E4C6C544152B81E55532351410AD7A3104D6C5441A4703D0A5C235141713D0A274E6C5441F6285C0F5C235141666666764E6C544152B81E1568235141CDCCCC5C4F6C5441AE47E11A74235141295C8F42506C54411F85EBA173235141EC51B88E4D6C5441D7A370CD73235141713D0A574C6C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C54417B14AEA750235141E17A146E4C6C544152B81E55532351410AD7A3104D6C5441A4703D0A5C235141713D0A274E6C5441F6285C0F5C235141666666764E6C544152B81E1568235141CDCCCC5C4F6C5441AE47E11A74235141295C8F42506C54411F85EBA173235141EC51B88E4D6C5441D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600322 - 3561284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441713D0AC75C235141295C8FE2416C5441E17A148E5A235141E17A14BE406C544152B81EE55923514166666616466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C54417B14AEA750235141E17A146E4C6C544152B81E55532351410AD7A3104D6C5441A4703D0A5C235141713D0A274E6C5441F6285C0F5C235141666666764E6C544152B81E1568235141CDCCCC5C4F6C5441AE47E11A74235141295C8F42506C54411F85EBA173235141EC51B88E4D6C5441D7A370CD73235141713D0A574C6C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C54417B14AEA750235141E17A146E4C6C544152B81E55532351410AD7A3104D6C5441A4703D0A5C235141713D0A274E6C5441F6285C0F5C235141666666764E6C544152B81E1568235141CDCCCC5C4F6C5441AE47E11A74235141295C8F42506C54411F85EBA173235141EC51B88E4D6C5441D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335205 - 1485919
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002D0000008FC2F588BE3451415C8FC2158E39554148E17A64BF345141A4703D8A9439554166666626C0345141A4703DBA98395541AE47E13AC13451413D0AD7D39C3955418FC2F5D8C234514166666686A1395541EC51B86EC63451419A999949AA3955410AD7A3A0C8345141295C8F32AF39554185EB5108CB345141A4703DCAB339554152B81E25CE345141E17A14CEB8395541295C8F72D03451415C8FC2B5BB39554148E17A54DB3451415C8FC265B439554185EB5118D9345141713D0AC7B13955410AD7A320D734514185EB5198AE3955419A9999A9D43451413D0AD7B3AA39554100000020D23451415C8FC2F5A5395541666666F6CF345141CDCCCC1CA23955419A999989CE345141E17A143E9F39554133333353CC345141295C8FB298395541C3F5282CCB3451417B14AE37933955417B14AE47CA3451417B14AE478F39554133333393C9345141F6285CEF8A395541AE47E19AC7345141A4703DFA7F3955415C8FC2E5C6345141333333837B395541B81E85CBC634514148E17AE47739554152B81EE5C73451410AD7A380703955419A999979C834514148E17AB469395541000000D0C8345141C3F5280C643955410AD7A3F0C83451419A9999696039554100000050C8345141CDCCCC5C5B3955413D0AD753C73451413D0AD74357395541E17A14DEC5345141295C8F22523955419A999939C43451419A9999F94C3955417B14AE27C3345141B81E852B4A395541F6285C6FC134514114AE472146395541000000C0BE345141000000C043395541C3F5289CBD345141EC51B8EE423955410AD7A310C03451418FC2F5284F395541C3F528DCC1345141EC51B89E58395541713D0A37C2345141CDCCCC7C5D39554185EB5138C23451418FC2F5A8623955411F85EB51C1345141B81E857B6C3955411F85EBE1BF3451413D0AD7B3763955415C8FC2D5BE345141666666D67D3955417B14AE57BE345141666666F6853955418FC2F588BE3451415C8FC2158E395541
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A3F0C83451419A999969603955413AB8DCA7CD345141497DDE245F395541E612EAC0D0345141F77B1C805E395541DB545768D33451419A2BBD1F5E395541BE9FEFF6D6345141FBBD07265E395541AE47E14ADB345141CDCCCC9C5E39554130D140C9DA34514126158A0B5C395541C4CF2042DA345141DD3E27F8593955411F85EB11D93451415C8FC2B5543955410AD7A330D734514185EB51584F39554185EB51C8D43451418FC2F5D8493955410AD7A3E0CF345141000000903F3955414A8294F7CA3451414D446E9F4039554134D34577C73451416BF8799E4139554171874604C4345141EED2D1944239554169639FC4C134514123B5FB3243395541000000C0BE345141000000C043395541F6285C6FC134514114AE4721463955417460EC57C3345141815DFDA94A395541027FA40BC53451419AB1758D4F395541EC6B79A6C63451417B68AFE2543955418BB7F655C8345141B186CB8C5B3955410AD7A3F0C83451419A99996960395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335205 - 3298693
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002D0000008FC2F588BE3451415C8FC2158E39554148E17A64BF345141A4703D8A9439554166666626C0345141A4703DBA98395541AE47E13AC13451413D0AD7D39C3955418FC2F5D8C234514166666686A1395541EC51B86EC63451419A999949AA3955410AD7A3A0C8345141295C8F32AF39554185EB5108CB345141A4703DCAB339554152B81E25CE345141E17A14CEB8395541295C8F72D03451415C8FC2B5BB39554148E17A54DB3451415C8FC265B439554185EB5118D9345141713D0AC7B13955410AD7A320D734514185EB5198AE3955419A9999A9D43451413D0AD7B3AA39554100000020D23451415C8FC2F5A5395541666666F6CF345141CDCCCC1CA23955419A999989CE345141E17A143E9F39554133333353CC345141295C8FB298395541C3F5282CCB3451417B14AE37933955417B14AE47CA3451417B14AE478F39554133333393C9345141F6285CEF8A395541AE47E19AC7345141A4703DFA7F3955415C8FC2E5C6345141333333837B395541B81E85CBC634514148E17AE47739554152B81EE5C73451410AD7A380703955419A999979C834514148E17AB469395541000000D0C8345141C3F5280C643955410AD7A3F0C83451419A9999696039554100000050C8345141CDCCCC5C5B3955413D0AD753C73451413D0AD74357395541E17A14DEC5345141295C8F22523955419A999939C43451419A9999F94C3955417B14AE27C3345141B81E852B4A395541F6285C6FC134514114AE472146395541000000C0BE345141000000C043395541C3F5289CBD345141EC51B8EE423955410AD7A310C03451418FC2F5284F395541C3F528DCC1345141EC51B89E58395541713D0A37C2345141CDCCCC7C5D39554185EB5138C23451418FC2F5A8623955411F85EB51C1345141B81E857B6C3955411F85EBE1BF3451413D0AD7B3763955415C8FC2D5BE345141666666D67D3955417B14AE57BE345141666666F6853955418FC2F588BE3451415C8FC2158E395541
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A3F0C83451419A999969603955413AB8DCA7CD345141497DDE245F395541E612EAC0D0345141F77B1C805E395541DB545768D33451419A2BBD1F5E395541BE9FEFF6D6345141FBBD07265E395541AE47E14ADB345141CDCCCC9C5E39554130D140C9DA34514126158A0B5C395541C4CF2042DA345141DD3E27F8593955411F85EB11D93451415C8FC2B5543955410AD7A330D734514185EB51584F39554185EB51C8D43451418FC2F5D8493955410AD7A3E0CF345141000000903F3955414A8294F7CA3451414D446E9F4039554134D34577C73451416BF8799E4139554171874604C4345141EED2D1944239554169639FC4C134514123B5FB3243395541000000C0BE345141000000C043395541F6285C6FC134514114AE4721463955417460EC57C3345141815DFDA94A395541027FA40BC53451419AB1758D4F395541EC6B79A6C63451417B68AFE2543955418BB7F655C8345141B186CB8C5B3955410AD7A3F0C83451419A99996960395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942679 - 3058678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E1520A35041D7A3708D39165541EC51B86E22A35041295C8F923B1655418FC2F5582AA35041A4703D4AFE155541F6285C0F30A3504133333313D215554148E17AA40CA350411F85EBB1D21555419A9999D906A3504152B81E85FF155541295C8FB201A35041713D0A6727165541295C8F920AA350415C8FC2852B1655419A9999E915A350410AD7A3A03116554152B81E1520A35041D7A3708D39165541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B86E22A35041295C8F923B1655419C54E4AA23A35041AF1093023216554158FD3F4826A350413A9D04C41D1655413148F0F627A35041230D82BD101655414D233BAB2AA3504131C8D1CDFB155541DC2B5CA32DA35041C7DB06D2E4155541F6285C0F30A3504133333313D21555418CC8E71A24A350419452C648D215554146A5751B1BA350415EFC1871D215554148E17AA40CA350411F85EBB1D21555419542239907A35041F7F3E9BAF91555412D8CEA0105A35041884026C80D165541295C8FB201A35041713D0A6727165541760C18960BA350411A8E7B112C165541C4EFA4A20FA350417908853F2E16554130F22AAD14A350416B1D49F630165541980E84261BA350418B638DB535165541D270384C1DA35041D03EE96137165541EC51B86E22A35041295C8F923B165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942679 - 3338158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E1520A35041D7A3708D39165541EC51B86E22A35041295C8F923B1655418FC2F5582AA35041A4703D4AFE155541F6285C0F30A3504133333313D215554148E17AA40CA350411F85EBB1D21555419A9999D906A3504152B81E85FF155541295C8FB201A35041713D0A6727165541295C8F920AA350415C8FC2852B1655419A9999E915A350410AD7A3A03116554152B81E1520A35041D7A3708D39165541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B86E22A35041295C8F923B1655419C54E4AA23A35041AF1093023216554158FD3F4826A350413A9D04C41D1655413148F0F627A35041230D82BD101655414D233BAB2AA3504131C8D1CDFB155541DC2B5CA32DA35041C7DB06D2E4155541F6285C0F30A3504133333313D21555418CC8E71A24A350419452C648D215554146A5751B1BA350415EFC1871D215554148E17AA40CA350411F85EBB1D21555419542239907A35041F7F3E9BAF91555412D8CEA0105A35041884026C80D165541295C8FB201A35041713D0A6727165541760C18960BA350411A8E7B112C165541C4EFA4A20FA350417908853F2E16554130F22AAD14A350416B1D49F630165541980E84261BA350418B638DB535165541D270384C1DA35041D03EE96137165541EC51B86E22A35041295C8F923B165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472558 - 1021105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000A4703D2A86EB5041E17A14AEBF5754419A99993968EB50419A9999B9C1575441057C5B3968EB5041BB3BD1B7C157544114AE47F166EB5041E17A14CEC1575441295C8F8252EB504152B81E35C3575441333333D310EB50411F85EBB1C7575441AE47E19A10EB5041E17A142ECB575441666666B60EEB504114AE4781E6575441C3F528BC0EEB5041F6285C6FEA5754415C8FC2250FEB504133333333EE57544114AE476110EB5041A4703DDAF157544114AE471112EB504185EB5158F5575441B81E854B14EB504185EB5148F85754415C8FC2B516EB50411F85EBB1FA5754419A9999891EEB5041CDCCCCDC00585441CDCCCCDC21EB5041666666E6035854411F85EB4124EB504148E17A1407585441F6285CEF2EEB504185EB51781B5854413DC5D36730EB5041C250283F1E585441B411576032EB5041120D21CA215854419ADAD8D634EB5041FAEC960725585441920EC06737EB5041A807B5FC27585441BDC1E6EB39EB50419C2B4DCC2A585441AAA79C3C3DEB504152C469802E58544127B8EDC041EB5041466A288C33585441CA2220A846EB5041F31E5D0639585441FF81AC524CEB5041CE3D48513F58544194A8835351EB50417C3220C24458544186D8F70C57EB5041DF4C63084B585441F99BC3FA5BEB50410F984588505854410FFB0FB361EB5041A3CFECE0565854414EE924B166EB50418E104A655C58544129A80E8C69EB5041FC38A1375F585441D1B6ECF86BEB504159D23FFB5F585441DCC7399D6FEB5041BB8867146058544110D21AE173EB50413E81DD3160585441DA2444F177EB5041A43EEE4D605854411638D9047BEB5041F2E48BD75E585441D7E4B8897CEB5041D1159EA65B5854413B554BD57DEB5041C0AFD0385858544196239A267CEB50419B438A8E5758544122D0AA017FEB50415AD9DD0B4F585441C405DD9A7FEB5041F71BF80D4D585441ED1830757FEB5041BE69D9AF4C585441674C7A7E7DEB50412B4C55944B585441A4A45C2E7CEB5041364CBC444B585441492028677BEB504139B89D8D4A585441E3E119CA7AEB504101A25997495854419196F7E37AEB5041674F763E47585441CECEA5AF7BEB5041A8010792455854418C19BEE77CEB5041F718109C4458544120A4A75A7EEB5041D14A4EB3435854412BE84D507FEB5041BF5AD9EB4258544166C4223980EB504192A0BEEA3F5854418E8A336C81EB504176B0949E3C585441214C7A9681EB5041927F5B2A3C5854413E61222E82EB50410F1A151B3A5854415994E9D180EB5041F341691838585441D1643E2C7FEB504194E3E6C635585441AF4099807EEB504120727170345854419931D6FE7DEB5041F0D0C00931585441E786F7BD7DEB50411C1DFE2C2F58544114739BA37DEB50419304FE952D5854419536B8FF7DEB50411B5374F629585441EB7B2A357EEB504175D844DC27585441469B168B7EEB504152E90F7B24585441AE3416D77EEB5041BF1EC97D215854412B56881E7FEB5041C52B5AAE1E5854415EE2914A7FEB5041FDA7E9F21C585441C126EE907FEB50416CB1682E1A5854413B35EBE77FEB50410E94D7C6185854418BAE85B980EB5041E5AC50BC15585441F22503C781EB5041DD429E0B1358544101DA4D3D83EB504158638B110F585441F98FB57784EB5041A587B29F0A5854413E8A5E2B85EB50412F5CEA1B08585441FCC40ED085EB5041483AB36C045854419982EA1A86EB5041644DD5150258544113C3F10B86EB5041321CB64500585441828407DF85EB50419DA872C0FE5754415788416785EB504175C1EBB5FB575441AF4B74FE84EB5041E89740F6F8575441A3CC82E084EB504107E0BBF7F75754416AD9250585EB5041E652ADD5F6575441320B6D0D85EB50414570B2FAF55754419222508885EB5041423E8328F457544133B8BD4486EB504185B7439FF25754410F466DE386EB5041639F1654F1575441297D0E0588EB504136CA097AEF575441C806748A89EB504140359421ED575441F49A90F58AEB50413447DA55EB575441F8CFE94D8CEB504171D7D058E95754414FD794968DEB5041A2F59B68E7575441CC29D9DC8EEB5041B20712B1E5575441F4CB625690EB5041640076B4E3575441DE56EF2992EB50410E7EB139E157544149B3F0D492EB50416314316EE057544129E3B85F93EB50410BC3C179E0575441E94B3F8D93EB5041D3299031DF575441D96AC40A9CEB504171044330BE575441A4703D2A86EB5041E17A14AEBF575441
+</a>
+
+<b>
+0106000000010000000103000000010000006C00000066DA1F6D2FEB50411926C9651C5854413C5B766B2FEB50415989FB651C5854410AD7A31032EB504114AE476121585441B511576032EB5041160D21CA2158544197DAD8D634EB5041F7EC9607255854418E0EC06737EB5041A907B5FC27585441C0C1E6EB39EB5041972B4DCC2A585441ACA79C3C3DEB504154C469802E5854412AB8EDC041EB5041426A288C33585441CB2220A846EB5041F51E5D0639585441FF81AC524CEB5041D23D48513F58544197A8835351EB50417A3220C24458544189D8F70C57EB5041E14C63084B585441F79BC3FA5BEB504110984588505854410AFB0FB361EB5041A2CFECE0565854414EE924B166EB504190104A655C58544124A80E8C69EB50410039A1375F585441CDB6ECF86BEB50415ED23FFB5F5854415C6A99B16DEB504174A557DC5F585441BEF617666EEB50415BFFED385F58544137EB9D506FEB50410D486D455F585441C18A13F573EB504167DF276B5F585441319E29B777EB504167DF276B5F58544158F0B80A79EB5041533660C15E585441D9D902847AEB5041857B8B935D585441471A85537BEB5041FDAEA9E15B585441229B89F27CEB5041DA6C1ED45758544198239A267CEB50419B438A8E5758544123D0AA017FEB50415AD9DD0B4F585441C005DD9A7FEB5041FB1BF80D4D585441ED1830757FEB5041BE69D9AF4C585441624C7A7E7DEB50412D4C55944B585441A6A45C2E7CEB5041374CBC444B585441452028677BEB504137B89D8D4A585441DEE119CA7AEB5041FDA15997495854418F96F7E37AEB5041684F763E47585441D1CEA5AF7BEB5041A7010792455854418B19BEE77CEB5041F218109C445854411EA4A75A7EEB5041D14A4EB3435854412BE84D507FEB5041BA5AD9EB4258544166C4223980EB50418FA0BEEA3F585441918A336C81EB504171B0949E3C585441214C7A9681EB50418D7F5B2A3C5854413E61222E82EB50410E1A151B3A5854415994E9D180EB5041EE41691838585441D5643E2C7FEB50418FE3E6C635585441AE4099807EEB50411E727170345854419B31D6FE7DEB5041EBD0C00931585441EA86F7BD7DEB50411C1DFE2C2F58544118739BA37DEB50419304FE952D5854419336B8FF7DEB5041195374F629585441EA7B2A357EEB504177D844DC27585441429B168B7EEB504157E90F7B24585441AB3416D77EEB5041C21EC97D215854413056881E7FEB5041C62B5AAE1E58544160E2914A7FEB5041FAA7E9F21C585441C426EE907FEB50416FB1682E1A5854413835EBE77FEB50411194D7C618585441843CEB5A80EB504190ABCB2317585441745AB95880EB504124E5D923175854418BAE85B980EB5041E1AC50BC15585441EF2503C781EB5041E1429E0B13585441FED94D3D83EB504156638B110F585441FA8FB57784EB5041A787B29F0A585441398A5E2B85EB50412A5CEA1B08585441FFC40ED085EB50414A3AB36C045854419582EA1A86EB5041644DD5150258544111C3F10B86EB5041311CB64500585441848407DF85EB50419FA872C0FE5754415688416785EB50417AC1EBB5FB575441AC4B74FE84EB5041EB9740F6F8575441A4CC82E084EB50410BE0BBF7F75754416ED9250585EB5041EA52ADD5F6575441310B6D0D85EB50414070B2FAF55754418D22508885EB5041433E8328F457544132B8BD4486EB504185B7439FF257544114466DE386EB50415E9F1654F1575441267D0E0588EB504139CA097AEF575441C306748A89EB504141359421ED575441F89A90F58AEB50413447DA55EB575441FDCFE94D8CEB504173D7D058E957544153D794968DEB50419FF59B68E7575441C829D9DC8EEB5041B50712B1E5575441F2CB625690EB5041620076B4E3575441DB56EF2992EB5041127EB139E157544146B3F0D492EB50416014316EE05754412BE3B85F93EB50410EC3C179E0575441E64B3F8D93EB5041CF299031DF575441DE6AC40A9CEB50416C044330BE575441A4703D2A86EB5041E17A14AEBF5754419A99993968EB50419A9999B9C1575441077C5B3968EB5041BD3BD1B7C157544114AE47F166EB5041E17A14CEC1575441295C8F8252EB504152B81E35C3575441333333D310EB50411F85EBB1C7575441AE47E19A10EB5041E17A142ECB575441666666B60EEB504114AE4781E6575441C3F528BC0EEB5041F6285C6FEA5754415C8FC2250FEB504133333333EE57544114AE476110EB5041A4703DDAF157544114AE471112EB504185EB5158F5575441B81E854B14EB504185EB5148F85754415C8FC2B516EB50411F85EBB1FA5754419A9999891EEB5041CDCCCCDC00585441CDCCCCDC21EB5041666666E6035854411F85EB4124EB504148E17A1407585441F6285CEF2EEB504185EB51781B58544166DA1F6D2FEB50411926C9651C585441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472558 - 3828086
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000A4703D2A86EB5041E17A14AEBF5754419A99993968EB50419A9999B9C1575441057C5B3968EB5041BB3BD1B7C157544114AE47F166EB5041E17A14CEC1575441295C8F8252EB504152B81E35C3575441333333D310EB50411F85EBB1C7575441AE47E19A10EB5041E17A142ECB575441666666B60EEB504114AE4781E6575441C3F528BC0EEB5041F6285C6FEA5754415C8FC2250FEB504133333333EE57544114AE476110EB5041A4703DDAF157544114AE471112EB504185EB5158F5575441B81E854B14EB504185EB5148F85754415C8FC2B516EB50411F85EBB1FA5754419A9999891EEB5041CDCCCCDC00585441CDCCCCDC21EB5041666666E6035854411F85EB4124EB504148E17A1407585441F6285CEF2EEB504185EB51781B5854413DC5D36730EB5041C250283F1E585441B411576032EB5041120D21CA215854419ADAD8D634EB5041FAEC960725585441920EC06737EB5041A807B5FC27585441BDC1E6EB39EB50419C2B4DCC2A585441AAA79C3C3DEB504152C469802E58544127B8EDC041EB5041466A288C33585441CA2220A846EB5041F31E5D0639585441FF81AC524CEB5041CE3D48513F58544194A8835351EB50417C3220C24458544186D8F70C57EB5041DF4C63084B585441F99BC3FA5BEB50410F984588505854410FFB0FB361EB5041A3CFECE0565854414EE924B166EB50418E104A655C58544129A80E8C69EB5041FC38A1375F585441D1B6ECF86BEB504159D23FFB5F585441DCC7399D6FEB5041BB8867146058544110D21AE173EB50413E81DD3160585441DA2444F177EB5041A43EEE4D605854411638D9047BEB5041F2E48BD75E585441D7E4B8897CEB5041D1159EA65B5854413B554BD57DEB5041C0AFD0385858544196239A267CEB50419B438A8E5758544122D0AA017FEB50415AD9DD0B4F585441C405DD9A7FEB5041F71BF80D4D585441ED1830757FEB5041BE69D9AF4C585441674C7A7E7DEB50412B4C55944B585441A4A45C2E7CEB5041364CBC444B585441492028677BEB504139B89D8D4A585441E3E119CA7AEB504101A25997495854419196F7E37AEB5041674F763E47585441CECEA5AF7BEB5041A8010792455854418C19BEE77CEB5041F718109C4458544120A4A75A7EEB5041D14A4EB3435854412BE84D507FEB5041BF5AD9EB4258544166C4223980EB504192A0BEEA3F5854418E8A336C81EB504176B0949E3C585441214C7A9681EB5041927F5B2A3C5854413E61222E82EB50410F1A151B3A5854415994E9D180EB5041F341691838585441D1643E2C7FEB504194E3E6C635585441AF4099807EEB504120727170345854419931D6FE7DEB5041F0D0C00931585441E786F7BD7DEB50411C1DFE2C2F58544114739BA37DEB50419304FE952D5854419536B8FF7DEB50411B5374F629585441EB7B2A357EEB504175D844DC27585441469B168B7EEB504152E90F7B24585441AE3416D77EEB5041BF1EC97D215854412B56881E7FEB5041C52B5AAE1E5854415EE2914A7FEB5041FDA7E9F21C585441C126EE907FEB50416CB1682E1A5854413B35EBE77FEB50410E94D7C6185854418BAE85B980EB5041E5AC50BC15585441F22503C781EB5041DD429E0B1358544101DA4D3D83EB504158638B110F585441F98FB57784EB5041A587B29F0A5854413E8A5E2B85EB50412F5CEA1B08585441FCC40ED085EB5041483AB36C045854419982EA1A86EB5041644DD5150258544113C3F10B86EB5041321CB64500585441828407DF85EB50419DA872C0FE5754415788416785EB504175C1EBB5FB575441AF4B74FE84EB5041E89740F6F8575441A3CC82E084EB504107E0BBF7F75754416AD9250585EB5041E652ADD5F6575441320B6D0D85EB50414570B2FAF55754419222508885EB5041423E8328F457544133B8BD4486EB504185B7439FF25754410F466DE386EB5041639F1654F1575441297D0E0588EB504136CA097AEF575441C806748A89EB504140359421ED575441F49A90F58AEB50413447DA55EB575441F8CFE94D8CEB504171D7D058E95754414FD794968DEB5041A2F59B68E7575441CC29D9DC8EEB5041B20712B1E5575441F4CB625690EB5041640076B4E3575441DE56EF2992EB50410E7EB139E157544149B3F0D492EB50416314316EE057544129E3B85F93EB50410BC3C179E0575441E94B3F8D93EB5041D3299031DF575441D96AC40A9CEB504171044330BE575441A4703D2A86EB5041E17A14AEBF575441
+</a>
+
+<b>
+0106000000010000000103000000010000006C00000066DA1F6D2FEB50411926C9651C5854413C5B766B2FEB50415989FB651C5854410AD7A31032EB504114AE476121585441B511576032EB5041160D21CA2158544197DAD8D634EB5041F7EC9607255854418E0EC06737EB5041A907B5FC27585441C0C1E6EB39EB5041972B4DCC2A585441ACA79C3C3DEB504154C469802E5854412AB8EDC041EB5041426A288C33585441CB2220A846EB5041F51E5D0639585441FF81AC524CEB5041D23D48513F58544197A8835351EB50417A3220C24458544189D8F70C57EB5041E14C63084B585441F79BC3FA5BEB504110984588505854410AFB0FB361EB5041A2CFECE0565854414EE924B166EB504190104A655C58544124A80E8C69EB50410039A1375F585441CDB6ECF86BEB50415ED23FFB5F5854415C6A99B16DEB504174A557DC5F585441BEF617666EEB50415BFFED385F58544137EB9D506FEB50410D486D455F585441C18A13F573EB504167DF276B5F585441319E29B777EB504167DF276B5F58544158F0B80A79EB5041533660C15E585441D9D902847AEB5041857B8B935D585441471A85537BEB5041FDAEA9E15B585441229B89F27CEB5041DA6C1ED45758544198239A267CEB50419B438A8E5758544123D0AA017FEB50415AD9DD0B4F585441C005DD9A7FEB5041FB1BF80D4D585441ED1830757FEB5041BE69D9AF4C585441624C7A7E7DEB50412D4C55944B585441A6A45C2E7CEB5041374CBC444B585441452028677BEB504137B89D8D4A585441DEE119CA7AEB5041FDA15997495854418F96F7E37AEB5041684F763E47585441D1CEA5AF7BEB5041A7010792455854418B19BEE77CEB5041F218109C445854411EA4A75A7EEB5041D14A4EB3435854412BE84D507FEB5041BA5AD9EB4258544166C4223980EB50418FA0BEEA3F585441918A336C81EB504171B0949E3C585441214C7A9681EB50418D7F5B2A3C5854413E61222E82EB50410E1A151B3A5854415994E9D180EB5041EE41691838585441D5643E2C7FEB50418FE3E6C635585441AE4099807EEB50411E727170345854419B31D6FE7DEB5041EBD0C00931585441EA86F7BD7DEB50411C1DFE2C2F58544118739BA37DEB50419304FE952D5854419336B8FF7DEB5041195374F629585441EA7B2A357EEB504177D844DC27585441429B168B7EEB504157E90F7B24585441AB3416D77EEB5041C21EC97D215854413056881E7FEB5041C62B5AAE1E58544160E2914A7FEB5041FAA7E9F21C585441C426EE907FEB50416FB1682E1A5854413835EBE77FEB50411194D7C618585441843CEB5A80EB504190ABCB2317585441745AB95880EB504124E5D923175854418BAE85B980EB5041E1AC50BC15585441EF2503C781EB5041E1429E0B13585441FED94D3D83EB504156638B110F585441FA8FB57784EB5041A787B29F0A585441398A5E2B85EB50412A5CEA1B08585441FFC40ED085EB50414A3AB36C045854419582EA1A86EB5041644DD5150258544111C3F10B86EB5041311CB64500585441848407DF85EB50419FA872C0FE5754415688416785EB50417AC1EBB5FB575441AC4B74FE84EB5041EB9740F6F8575441A4CC82E084EB50410BE0BBF7F75754416ED9250585EB5041EA52ADD5F6575441310B6D0D85EB50414070B2FAF55754418D22508885EB5041433E8328F457544132B8BD4486EB504185B7439FF257544114466DE386EB50415E9F1654F1575441267D0E0588EB504139CA097AEF575441C306748A89EB504141359421ED575441F89A90F58AEB50413447DA55EB575441FDCFE94D8CEB504173D7D058E957544153D794968DEB50419FF59B68E7575441C829D9DC8EEB5041B50712B1E5575441F2CB625690EB5041620076B4E3575441DB56EF2992EB5041127EB139E157544146B3F0D492EB50416014316EE05754412BE3B85F93EB50410EC3C179E0575441E64B3F8D93EB5041CF299031DF575441DE6AC40A9CEB50416C044330BE575441A4703D2A86EB5041E17A14AEBF5754419A99993968EB50419A9999B9C1575441077C5B3968EB5041BD3BD1B7C157544114AE47F166EB5041E17A14CEC1575441295C8F8252EB504152B81E35C3575441333333D310EB50411F85EBB1C7575441AE47E19A10EB5041E17A142ECB575441666666B60EEB504114AE4781E6575441C3F528BC0EEB5041F6285C6FEA5754415C8FC2250FEB504133333333EE57544114AE476110EB5041A4703DDAF157544114AE471112EB504185EB5158F5575441B81E854B14EB504185EB5148F85754415C8FC2B516EB50411F85EBB1FA5754419A9999891EEB5041CDCCCCDC00585441CDCCCCDC21EB5041666666E6035854411F85EB4124EB504148E17A1407585441F6285CEF2EEB504185EB51781B58544166DA1F6D2FEB50411926C9651C585441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942753 - 2964745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000AA4B05D2F02F5141341BB34F026E5441FF2C7576F82F5141D56AED9C026E54413621BF1D02305141EC9F69D0026E5441C6E9F9920C3051414A502F83026E5441A016D2421C305141098D8FCD006E544115CEBB9F27305141B49473E4FE6D5441231D36803530514134325F94FC6D5441E52B3E413F305141DF3943ABFA6D5441AB161BE747305141B6AB1F29F96D5441861FC87B56305141AB2E4DBFF66D5441A6C7E9AA65305141877CFE21F46D5441718E9B356D3051415FEEDA9FF26D54410FEB5459743051413660B71DF16D5441A3A610F8773051410ED2939BEF6D5441BADB8C2B78305141E471C8A2E26D54418895BFDF7830514115E6ED77D66D5441450DF789723051414D0890A8D46D5441207254316A305141257A6C26D36D5441B2A3BE8F643051412C56410BD26D544122C4D7D55F305141CEA57B58D26D54411823DA505C305141277A6C26D36D54419A9C9AE55830514154E4648DD36D5441B1E8C25D533051416B19E1C0D36D5441F49EE33C4E3051413EAFE859D36D54410EC7E09947305141862A32D9D26D5441BFC145DA3E305141B870FF24D26D5441AD7F4AD03730514175D18A8AD16D544173AF2B442F3051411BFD99BCD06D54416A25DA032630514179AD5F6FD06D544121C13CC92030514105C81D89D06D544144A1E3EF173051412A56410BD26D54416C5D5FFB0D305141F4339FDAD36D544113DBF1D10230514130F73E90D56D5441908F89C6FA2F51416FBADE45D76D544155BF6A3AF22F51410C2E44AED86D54419499B634EE2F5141F21CF395D96D54414C1E6DB5EE2F514198315683DE6D54411BD89F69EF2F5141B807D03BE26D54412D3147B8F02F51412DD665DDE76D5441295572D3F12F5141D3EAC8CAEC6D54416AF4E66DF22F5141D0D31C86F26D54413D8AEE06F22F514106DF1272F66D54414266C3EBF02F5141F56EBFDEFA6D5441D15C56EAEF2F514122C20B01016E5441AA4B05D2F02F5141341BB34F026E5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AF4B05D2F02F5141351BB34F026E5441FE2C7576F82F5141D26AED9C026E54413321BF1D02305141EC9F69D0026E5441C6E9F9920C30514145502F83026E5441A316D2421C305141068D8FCD006E544117CEBB9F27305141B89473E4FE6D5441281D36803530514135325F94FC6D5441E02B3E413F305141DC3943ABFA6D5441A7161BE747305141B7AB1F29F96D5441891FC87B56305141A72E4DBFF66D5441A5C7E9AA65305141887CFE21F46D5441718E9B356D30514163EEDA9FF26D544114EB5459743051413460B71DF16D5441A1A610F8773051410FD2939BEF6D5441BBDB8C2B78305141DF71C8A2E26D54414814BC197830514170E83B9FDD6D54414A3B3BB87130514154D0BBE9DC6D54412BFD2D636E305141B5FE6EC5DC6D5441596E7AB16B305141A7F2AE6ADC6D54410426FA9069305141684F1522DC6D5441713AE027673051418ADA2EB5DB6D544144F01278633051419E5988EDDA6D5441F88DC5125F30514182410838DA6D5441488A2BF45B305141E36FBB13DA6D5441627C1E0A5A305141B3D8E125DA6D54419CD39D13553051412113555CDA6D5441AC06DD0C4F3051419F5988EDDA6D544139804F9749305141DDFC2136DB6D54415932E8C842305141ED08E290DB6D544144DA0D2F3D3051415C4355C7DB6D544199490DEE38305141CC7DC8FDDB6D54414A7426AB35305141CC7DC8FDDB6D54413942D9B032305141FD14A2EBDB6D5441B5627FA2303051418DDA2EB5DB6D54410DF80B012F305141ED08E290DB6D54419624724D2D305141AF654848DB6D544194FEE4AD2A305141402BD511DB6D54410386642227305141DFFC2136DB6D54418319A4F123305141BD7108A3DB6D54418AD9490D1F305141FA14A2EBDB6D54412F6B3C4D1A305141765BD57CDC6D544102216F9D16305141E59548B3DC6D5441A8B261DD11305141F3A1080EDD6D54412FB93A8A0D30514101AEC868DD6D544170A9E0100A3051419F7F158DDD6D544174F6EC4E063051410EBA88C3DD6D54411C88DF8E01305141BC979542DE6D5441B19A7896FD2F51410947EFE5DE6D544146AD119EF92F5141F5C795ADDF6D5441F164917DF72F5141720EC93EE06D5441800491A7F42F51412DF89518E16D54411DB0502CF22F51414A1016CEE16D5441AC4F5056EF2F514105FAE2A7E26D54412C3147B8F02F514128D665DDE76D5441275572D3F12F5141D5EAC8CAEC6D54416BF4E66DF22F5141CBD31C86F26D5441428AEE06F22F51410BDF1272F66D54414766C3EBF02F5141F66EBFDEFA6D5441CE5C56EAEF2F514120C20B01016E5441AF4B05D2F02F5141351BB34F026E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942753 - 3625676
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000AA4B05D2F02F5141341BB34F026E5441FF2C7576F82F5141D56AED9C026E54413621BF1D02305141EC9F69D0026E5441C6E9F9920C3051414A502F83026E5441A016D2421C305141098D8FCD006E544115CEBB9F27305141B49473E4FE6D5441231D36803530514134325F94FC6D5441E52B3E413F305141DF3943ABFA6D5441AB161BE747305141B6AB1F29F96D5441861FC87B56305141AB2E4DBFF66D5441A6C7E9AA65305141877CFE21F46D5441718E9B356D3051415FEEDA9FF26D54410FEB5459743051413660B71DF16D5441A3A610F8773051410ED2939BEF6D5441BADB8C2B78305141E471C8A2E26D54418895BFDF7830514115E6ED77D66D5441450DF789723051414D0890A8D46D5441207254316A305141257A6C26D36D5441B2A3BE8F643051412C56410BD26D544122C4D7D55F305141CEA57B58D26D54411823DA505C305141277A6C26D36D54419A9C9AE55830514154E4648DD36D5441B1E8C25D533051416B19E1C0D36D5441F49EE33C4E3051413EAFE859D36D54410EC7E09947305141862A32D9D26D5441BFC145DA3E305141B870FF24D26D5441AD7F4AD03730514175D18A8AD16D544173AF2B442F3051411BFD99BCD06D54416A25DA032630514179AD5F6FD06D544121C13CC92030514105C81D89D06D544144A1E3EF173051412A56410BD26D54416C5D5FFB0D305141F4339FDAD36D544113DBF1D10230514130F73E90D56D5441908F89C6FA2F51416FBADE45D76D544155BF6A3AF22F51410C2E44AED86D54419499B634EE2F5141F21CF395D96D54414C1E6DB5EE2F514198315683DE6D54411BD89F69EF2F5141B807D03BE26D54412D3147B8F02F51412DD665DDE76D5441295572D3F12F5141D3EAC8CAEC6D54416AF4E66DF22F5141D0D31C86F26D54413D8AEE06F22F514106DF1272F66D54414266C3EBF02F5141F56EBFDEFA6D5441D15C56EAEF2F514122C20B01016E5441AA4B05D2F02F5141341BB34F026E5441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AF4B05D2F02F5141351BB34F026E5441FE2C7576F82F5141D26AED9C026E54413321BF1D02305141EC9F69D0026E5441C6E9F9920C30514145502F83026E5441A316D2421C305141068D8FCD006E544117CEBB9F27305141B89473E4FE6D5441281D36803530514135325F94FC6D5441E02B3E413F305141DC3943ABFA6D5441A7161BE747305141B7AB1F29F96D5441891FC87B56305141A72E4DBFF66D5441A5C7E9AA65305141887CFE21F46D5441718E9B356D30514163EEDA9FF26D544114EB5459743051413460B71DF16D5441A1A610F8773051410FD2939BEF6D5441BBDB8C2B78305141DF71C8A2E26D54414814BC197830514170E83B9FDD6D54414A3B3BB87130514154D0BBE9DC6D54412BFD2D636E305141B5FE6EC5DC6D5441596E7AB16B305141A7F2AE6ADC6D54410426FA9069305141684F1522DC6D5441713AE027673051418ADA2EB5DB6D544144F01278633051419E5988EDDA6D5441F88DC5125F30514182410838DA6D5441488A2BF45B305141E36FBB13DA6D5441627C1E0A5A305141B3D8E125DA6D54419CD39D13553051412113555CDA6D5441AC06DD0C4F3051419F5988EDDA6D544139804F9749305141DDFC2136DB6D54415932E8C842305141ED08E290DB6D544144DA0D2F3D3051415C4355C7DB6D544199490DEE38305141CC7DC8FDDB6D54414A7426AB35305141CC7DC8FDDB6D54413942D9B032305141FD14A2EBDB6D5441B5627FA2303051418DDA2EB5DB6D54410DF80B012F305141ED08E290DB6D54419624724D2D305141AF654848DB6D544194FEE4AD2A305141402BD511DB6D54410386642227305141DFFC2136DB6D54418319A4F123305141BD7108A3DB6D54418AD9490D1F305141FA14A2EBDB6D54412F6B3C4D1A305141765BD57CDC6D544102216F9D16305141E59548B3DC6D5441A8B261DD11305141F3A1080EDD6D54412FB93A8A0D30514101AEC868DD6D544170A9E0100A3051419F7F158DDD6D544174F6EC4E063051410EBA88C3DD6D54411C88DF8E01305141BC979542DE6D5441B19A7896FD2F51410947EFE5DE6D544146AD119EF92F5141F5C795ADDF6D5441F164917DF72F5141720EC93EE06D5441800491A7F42F51412DF89518E16D54411DB0502CF22F51414A1016CEE16D5441AC4F5056EF2F514105FAE2A7E26D54412C3147B8F02F514128D665DDE76D5441275572D3F12F5141D5EAC8CAEC6D54416BF4E66DF22F5141CBD31C86F26D5441428AEE06F22F51410BDF1272F66D54414766C3EBF02F5141F66EBFDEFA6D5441CE5C56EAEF2F514120C20B01016E5441AF4B05D2F02F5141351BB34F026E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893417 - 1683799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002E000000666666B6446D50410AD7A370A61755410AD7A380436D50411F85EB21AC17554148E17A44486D50413D0AD7C3AC175541EC51B8BE4D6D5041713D0AB7A317554133333303556D50419A9999899B175541000000E0586D5041000000209717554114AE4741636D5041713D0A578B17554114AE47C1666D50417B14AE57871755419B380D57686D5041E331377E8517554184754950656D504136D6DDC18417554108039AA8616D5041EA7C7B39831755419A1DE6B45C6D50417030EA928117554197D1A9B2586D50417EBDE54680175541C0789CCE546D50414EA498277E1755410986C254526D50416CE4AD907D17554143E0CE254F6D504199D7DCAE7D17554102EE49504A6D504121B169097E1755416715673E456D5041316483BE7E17554152F0F2853E6D5041ABB0146580175541037172FC3A6D5041ADD63266821755411F85EB51376D5041A4703DBA831755411F85EB21376D50415C8FC2E583175541A4703DEA346D50417B14AEE785175541CBE81C80336D5041697DD5CC84175541B5DADB38326D5041963E13D5831755415151F10E306D5041D4D9B631821755414763E45D2E6D50412FD8DBE9801755413E75D7AC2C6D50418BD600A27F1755419D9D2C54296D5041EC23CCCD7C175541E01A2362236D5041188461D578175541A6517C06216D50418BE73F0A7B1755418FC2F5B81E6D5041666666F67C175541CDCCCC2C1D6D504114AE47417E175541D7A3703D1C6D50419A9999097F175541B81E857B1D6D5041CDCCCC1C8017554166666686266D5041B81E855B8717554148E17A942C6D5041F6285CCF8B1755415C8FC2C52D6D5041F6285CCF8C1755417B14AE972A6D50413D0AD703901755415C8FC2F52B6D5041B81E855B901755415C8FC285376D504185EB516890175541A4703D4A416D504148E17AF490175541713D0A17436D50411F85EBD19117554114AE4721436D5041D7A3708D9417554148E17AA4426D50410AD7A36096175541666666B6446D50410AD7A370A6175541
+</a>
+
+<b>
+01060000000100000001030000000100000035000000A4703DEA346D50417B14AEE785175541FDE81C80336D50418F7DD5CC84175541C76CA472336D5041CCB2A2C284175541684647FF326D504190A14B6B84175541B2DADB38326D5041963E13D583175541FB739833316D5041D3E8460F8317554185EB51782C6D5041A4703D7A7F17554120A32C54296D50419D28CCCD7C1755417B14AE07256D504152B81E257917554114AE47E1236D50413D0AD753781755415C8FC2C5236D50410000007078175541E31A2362236D5041158461D578175541295C8F12226D5041AE47E12A7A17554100000070216D50411F85EBB17A175541D4517C06216D504165E73F0A7B175541B81E85AB206D5041666666567B1755418FC2F5B81E6D5041666666F67C175541CDCCCC2C1D6D504114AE47417E175541D7A3703D1C6D50419A9999097F175541B81E857B1D6D5041CDCCCC1C8017554166666686266D5041B81E855B8717554148E17A942C6D5041F6285CCF8B1755415C8FC2C52D6D5041F6285CCF8C1755417B14AE972A6D50413D0AD703901755415C8FC2F52B6D5041B81E855B901755415C8FC285376D504185EB516890175541A4703D4A416D504148E17AF490175541713D0A17436D50411F85EBD19117554114AE4721436D5041D7A3708D9417554148E17AA4426D50410AD7A36096175541666666B6446D50410AD7A370A61755410AD7A380436D50411F85EB21AC17554148E17A44486D50413D0AD7C3AC175541EC51B8BE4D6D5041713D0AB7A317554133333303556D50419A9999899B175541000000E0586D5041000000209717554114AE4741636D5041713D0A578B17554114AE47C1666D50417B14AE578717554198380D57686D5041E631377E851755417F754950656D504134D6DDC1841755410B039AA8616D5041EE7C7B3983175541961DE6B45C6D50416B30EA928117554195D1A9B2586D50417FBDE54680175541BC789CCE546D504151A498277E1755410C86C254526D50416AE4AD907D17554143E0CE254F6D50419CD7DCAE7D175541AE4E44564D6D504109C3C7D07D1755415C8FC2754A6D5041CDCCCC6C7E1755419284BAFC3D6D504192CBD6B280175541CA379FA43A6D50412EE1B32C821755411F85EB51376D5041A4703DBA831755411F85EB21376D50415C8FC2E583175541A4703DEA346D50417B14AEE785175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893417 - 3522280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002E000000666666B6446D50410AD7A370A61755410AD7A380436D50411F85EB21AC17554148E17A44486D50413D0AD7C3AC175541EC51B8BE4D6D5041713D0AB7A317554133333303556D50419A9999899B175541000000E0586D5041000000209717554114AE4741636D5041713D0A578B17554114AE47C1666D50417B14AE57871755419B380D57686D5041E331377E8517554184754950656D504136D6DDC18417554108039AA8616D5041EA7C7B39831755419A1DE6B45C6D50417030EA928117554197D1A9B2586D50417EBDE54680175541C0789CCE546D50414EA498277E1755410986C254526D50416CE4AD907D17554143E0CE254F6D504199D7DCAE7D17554102EE49504A6D504121B169097E1755416715673E456D5041316483BE7E17554152F0F2853E6D5041ABB0146580175541037172FC3A6D5041ADD63266821755411F85EB51376D5041A4703DBA831755411F85EB21376D50415C8FC2E583175541A4703DEA346D50417B14AEE785175541CBE81C80336D5041697DD5CC84175541B5DADB38326D5041963E13D5831755415151F10E306D5041D4D9B631821755414763E45D2E6D50412FD8DBE9801755413E75D7AC2C6D50418BD600A27F1755419D9D2C54296D5041EC23CCCD7C175541E01A2362236D5041188461D578175541A6517C06216D50418BE73F0A7B1755418FC2F5B81E6D5041666666F67C175541CDCCCC2C1D6D504114AE47417E175541D7A3703D1C6D50419A9999097F175541B81E857B1D6D5041CDCCCC1C8017554166666686266D5041B81E855B8717554148E17A942C6D5041F6285CCF8B1755415C8FC2C52D6D5041F6285CCF8C1755417B14AE972A6D50413D0AD703901755415C8FC2F52B6D5041B81E855B901755415C8FC285376D504185EB516890175541A4703D4A416D504148E17AF490175541713D0A17436D50411F85EBD19117554114AE4721436D5041D7A3708D9417554148E17AA4426D50410AD7A36096175541666666B6446D50410AD7A370A6175541
+</a>
+
+<b>
+01060000000100000001030000000100000035000000A4703DEA346D50417B14AEE785175541FDE81C80336D50418F7DD5CC84175541C76CA472336D5041CCB2A2C284175541684647FF326D504190A14B6B84175541B2DADB38326D5041963E13D583175541FB739833316D5041D3E8460F8317554185EB51782C6D5041A4703D7A7F17554120A32C54296D50419D28CCCD7C1755417B14AE07256D504152B81E257917554114AE47E1236D50413D0AD753781755415C8FC2C5236D50410000007078175541E31A2362236D5041158461D578175541295C8F12226D5041AE47E12A7A17554100000070216D50411F85EBB17A175541D4517C06216D504165E73F0A7B175541B81E85AB206D5041666666567B1755418FC2F5B81E6D5041666666F67C175541CDCCCC2C1D6D504114AE47417E175541D7A3703D1C6D50419A9999097F175541B81E857B1D6D5041CDCCCC1C8017554166666686266D5041B81E855B8717554148E17A942C6D5041F6285CCF8B1755415C8FC2C52D6D5041F6285CCF8C1755417B14AE972A6D50413D0AD703901755415C8FC2F52B6D5041B81E855B901755415C8FC285376D504185EB516890175541A4703D4A416D504148E17AF490175541713D0A17436D50411F85EBD19117554114AE4721436D5041D7A3708D9417554148E17AA4426D50410AD7A36096175541666666B6446D50410AD7A370A61755410AD7A380436D50411F85EB21AC17554148E17A44486D50413D0AD7C3AC175541EC51B8BE4D6D5041713D0AB7A317554133333303556D50419A9999899B175541000000E0586D5041000000209717554114AE4741636D5041713D0A578B17554114AE47C1666D50417B14AE578717554198380D57686D5041E631377E851755417F754950656D504134D6DDC1841755410B039AA8616D5041EE7C7B3983175541961DE6B45C6D50416B30EA928117554195D1A9B2586D50417FBDE54680175541BC789CCE546D504151A498277E1755410C86C254526D50416AE4AD907D17554143E0CE254F6D50419CD7DCAE7D175541AE4E44564D6D504109C3C7D07D1755415C8FC2754A6D5041CDCCCC6C7E1755419284BAFC3D6D504192CBD6B280175541CA379FA43A6D50412EE1B32C821755411F85EB51376D5041A4703DBA831755411F85EB21376D50415C8FC2E583175541A4703DEA346D50417B14AEE785175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>412123 - 1339967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F578903151417B14AEC705F35441D7A3705D8331514152B81E55FCF25441D243FCB77A31514149B3405409F35441000000B07631514152B81EF50FF35441F924EF3269315141A6C548F224F35441713D0A2763315141333333332EF35441AE47E12A6831514185EB51182FF35441B4D7AD9D763151410800AF502EF354417FD960938B3151411FB7C6D50EF3544102C02BEC8D315141911B0F770AF354418FC2F578903151417B14AEC705F35441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000002C02BEC8D315141911B0F770AF35441B2D525A98B315141C16E3DAD0EF354417FD960938B3151411FB7C6D50EF354419817FF52893151414F34763712F35441B4D7AD9D763151410800AF502EF35441295C8F22903151410AD7A3002DF354413333336391315141000000B02BF3544152B81E65913151419A9999F929F35441D7A370BD90315141CDCCCC1C25F354411F85EBB18F315141D7A370ED1FF35441000000408F315141AE47E1FA17F3544114AE47318F315141C3F5283C13F35441839E13618F315141FA5CB3910CF35441AEE860DD8F3151417F6E055509F35441F4D7D49790315141A6F39F0306F35441271358B08F315141654F463807F354413EAAE7358E315141821C96EF09F3544102C02BEC8D315141911B0F770AF35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>412123 - 4063776
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F578903151417B14AEC705F35441D7A3705D8331514152B81E55FCF25441D243FCB77A31514149B3405409F35441000000B07631514152B81EF50FF35441F924EF3269315141A6C548F224F35441713D0A2763315141333333332EF35441AE47E12A6831514185EB51182FF35441B4D7AD9D763151410800AF502EF354417FD960938B3151411FB7C6D50EF3544102C02BEC8D315141911B0F770AF354418FC2F578903151417B14AEC705F35441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000002C02BEC8D315141911B0F770AF35441B2D525A98B315141C16E3DAD0EF354417FD960938B3151411FB7C6D50EF354419817FF52893151414F34763712F35441B4D7AD9D763151410800AF502EF35441295C8F22903151410AD7A3002DF354413333336391315141000000B02BF3544152B81E65913151419A9999F929F35441D7A370BD90315141CDCCCC1C25F354411F85EBB18F315141D7A370ED1FF35441000000408F315141AE47E1FA17F3544114AE47318F315141C3F5283C13F35441839E13618F315141FA5CB3910CF35441AEE860DD8F3151417F6E055509F35441F4D7D49790315141A6F39F0306F35441271358B08F315141654F463807F354413EAAE7358E315141821C96EF09F3544102C02BEC8D315141911B0F770AF35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963555 - 963539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000060000000508D97BECA865041D34D62E0692E55418195435BC98650410C022BF7632E5541E17A148EC9865041A69BC418622E5541D122DB19C386504146B6F3E5602E55419318046EC1865041560E2D02612E5541508D97B6B9865041A245B64B622E55414260E5F0B7865041C74B3779622E5541E7FBA9C9B586504183C0CAD1622E5541C74B37B1AD8650413F355E7A632E55411058395CA68650412DB29DEF632E554179E926099D8650410AD7A3D0642E55414C37896996865041DBF97E92652E554148E17A949186504160E5D03A662E55416ABC749B8986504179E926D9662E55418D976E3A818650415C8FC21D672E55415C8FC2257B86504152B81EA5672E5541DF4F8D7F7A865041FCA9F142672E5541B07268597B865041B6F3FD9C662E55411F85EBE182865041A01A2FA5652E5541A69BC4388E865041CFF7530B642E554191ED7C77958650417D3F3596632E55419A9999F99B8650410E2DB24D632E554104560EAD9D8650411F85EB01632E55416F1283589F8650415EBA4974622E55412B871649A4865041AC1C5A1C622E554137894138A686504196438B44622E5541C976BEEFAF865041FCA9F1EA602E5541FA7E6A64B5865041AAF1D2D5602E55416F128378B886504177BE9F42602E5541C1CAA15DB8865041FA7E6A145F2E554119045696B68650414E6210305F2E5541986E12EBB4865041A01A2FA55F2E554152B81E15B08650417D3F35265B2E55411283C052B586504117D9CE07552E5541190456BEB38650412B871601542E554196438BFCB18650411058396C532E55410681955BB0865041A4703D92532E5541A245B603AA865041DBF97E3A552E55418D976E8AA88650416891ED9C552E554121B072D09F865041643BDFBF572E5541D9CEF7E39F865041AAF1D27D582E5541F4FDD4409C865041E7FBA961592E554114AE47319C86504191ED7C87582E5541F6285C5794865041EC51B8C65A2E554139B4C8DE8A865041643BDF375D2E55418FC2F5507D865041EC51B85E602E554177BE9F9A788650413BDF4F85612E5541AAF1D23D7286504121B07238632E554146B6F3C56686504196438B24662E5541EC51B8FE668650417D3F352E672E5541736891855F865041F2D24DAA682E55418B6CE75B5F86504177BE9F0A682E55417F6ABC5C5986504160E5D0AA692E554148E17AF4548650410AD7A3D86A2E5541B29DEF27558650412DB29D9F6B2E55415C8FC2FD4E865041FA7E6A246D2E55418B6CE7E34A865041E5D022FB6D2E554117D9CE3745865041B4C8769E6F2E5541000000903C865041C3F528BC712E55410AD7A3B03586504185EB51A8732E5541F6285C3F2B8650410C022B2F762E55410681952B228650413F355E32782E5541AE47E1CA1A865041D122DB217A2E55416666664E19865041A245B6DB7A2E5541D9CEF79312865041068195537C2E55417B14AEDF0D8650419A9999E17C2E5541AC1C5AB40C865041CBA14536822E5541C1CAA1950E86504175931864812E554104560E551886504185EB5180802E5541378941A01D86504160E5D0AA7F2E5541CFF7535B21865041713D0A378A2E5541BC7493602286504139B4C8C68A2E554191ED7C47248650415C8FC2F58A2E554139B4C836278650418716D93E8A2E5541FED478312A8650412DB29D17892E5541CFF7531330865041560E2DBA862E55412B87169136865041F4FDD4B8842E55416666660E4086504191ED7C07822E5541E92631A04E865041295C8F327D2E5541B6F3FDD459865041022B87FE792E5541D9CEF7FB5F86504191ED7C0F782E55415839B4B063865041D9CEF78B772E55410681953367865041B07268E1762E554117D9CE8F6E865041A245B613752E55416666664678865041D578E926732E5541931804267C865041F4FDD4C8712E5541D578E93E7E865041D9CEF743712E5541DF4F8DE78586504160E5D09A702E5541AC1C5A6C8F865041AC1C5ACC6F2E55411904567698865041BA490CCA6E2E5541B6F3FDECB1865041F853E3BD6B2E55415A643B87BA865041A8C64BAF6A2E5541B0726809C0865041B6F3FDE4692E5541986E1213C48650415A643BAF692E554185EB5170C4865041F4FDD4906A2E5541508D97BECA865041D34D62E0692E5541
+</a>
+
+<b>
+0106000000010000000103000000010000003E000000D3EF2C4E83865041E37132FA5E2E5541FCA9F16A83865041333333F35E2E55415EBA49749186504108AC1C825B2E554179948EE6978650418A4BF0C1592E554114AE47319C86504191ED7C87582E5541DB2E11339C86504152268FA0582E5541FA7E6AD4A68650415839B4E8552E554189416095A8865041CFF75393552E5541D7A37045B08650412506818D532E55414260E5C8AF865041CFF75363522E5541A69BC420AD86504175931884502E5541E3A59BBCAB865041666666C64F2E5541560E2D9AA78650419A9999214E2E554179E92659A2865041736891DD4C2E5541105839F49C8650412731080C4C2E5541B29DEF0F97865041190456DE4B2E554160E5D08A918650410681959B4B2E5541759318BC85865041448B6C0F4B2E5541713D0A3F7886504146B6F3054B2E5541B0726851728650411904561E4B2E55415A643B5F6F865041E3A59B3C4C2E554146B6F3FD6D865041250681FD4B2E55418FC2F5206B865041190456A64D2E5541FCA9F17A64865041819543F34F2E5541C976BEEF60865041448B6C37502E55410681952357865041B29DEF87522E5541F4FDD4B84C86504179E92629552E554121B072E8478650419EEFA7C6572E55410AD7A3284686504162105851572E554191ED7C6F448650419EEFA7FE572E55413F355E1A4186504166666656582E55413108AC5C3A865041EC51B86E5A2E554119045616348650413D0AD7BB5C2E554179E9268130865041894160655D2E5541FA7E6A142A86504139B4C8EE5E2E5541BA490CBA208650419A999981612E5541E17A14BE13865041A8C64B5F642E55415C8FC2DD0B865041CDCCCC44652E554154E3A5530D86504189416065712E554123DBF9160D865041A01A2FDD7B2E55417B14AEDF0D8650419A9999E17C2E5541D9CEF79312865041068195537C2E55416666664E19865041A245B6DB7A2E5541AE47E1CA1A865041D122DB217A2E55410681952B228650413F355E32782E5541F6285C3F2B8650410C022B2F762E55410AD7A3B03586504185EB51A8732E5541000000903C865041C3F528BC712E554117D9CE3745865041B4C8769E6F2E55418B6CE7E34A865041E5D022FB6D2E55415C8FC2FD4E865041FA7E6A246D2E5541B29DEF27558650412DB29D9F6B2E554148E17AF4548650410AD7A3D86A2E55417F6ABC5C5986504160E5D0AA692E5541F9B8CE3F5A865041FA77416D692E55418B6CE75B5F86504177BE9F0A682E5541BB20FC5D5F865041C85D9912682E5541713D0A6F658650417B14AE77662E5541739229D5758650419877D842622E554177BE9F9A788650413BDF4F85612E55418FC2F5507D865041EC51B85E602E5541D3EF2C4E83865041E37132FA5E2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468418 - 2352426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999F974A65041D7A3705D251C5541E17A143E75A65041C3F5284C271C55411F85EB9175A6504152B81E45291C5541B80EB179A2A65041B33A452C1F1C5541AB205663A3A650417B3C3AFA131C5541512CB03B74A650415200D0CE1E1C55419A9999F974A65041D7A3705D251C5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000E04B8BBF8BA65041AA013068191C5541A9205663A3A650417C3C3AFA131C55419A999969A4A650418FC2F5B8091C5541E17A146E8BA6504148E17A540F1C55419A99999972A650417B14AEE7141C554152B81E5573A65041F6285C9F191C55414D2CB03B74A650415300D0CE1E1C5541E04B8BBF8BA65041AA013068191C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468418 - 3361519
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999F974A65041D7A3705D251C5541E17A143E75A65041C3F5284C271C55411F85EB9175A6504152B81E45291C5541B80EB179A2A65041B33A452C1F1C5541AB205663A3A650417B3C3AFA131C5541512CB03B74A650415200D0CE1E1C55419A9999F974A65041D7A3705D251C5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000E04B8BBF8BA65041AA013068191C5541A9205663A3A650417C3C3AFA131C55419A999969A4A650418FC2F5B8091C5541E17A146E8BA6504148E17A540F1C55419A99999972A650417B14AEE7141C554152B81E5573A65041F6285C9F191C55414D2CB03B74A650415300D0CE1E1C5541E04B8BBF8BA65041AA013068191C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605796 - 3433963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666E6292651411F85EB0180515441666666862D26514114AE47B182515441EC51B86E31265141D7A370FD8151544100000080322651413D0AD72380515441B81E859B33265141CDCCCC9C7D5154417B14AE3734265141E17A14FE7B515441295C8FC234265141295C8F627951544114AE47813526514152B81E15775154419A99995934265141713D0A87765154418FC2F5D83426514148E17A84755154413D0AD7F330265141AE47E19A735154411F85EBB12F265141E17A14FE72515441E17A141E1F26514148E17AB482515441295C8FE21E26514114AE472183515441AE47E17A222651417B14AE07855154419A99993923265141AE47E17A85515441666666E6292651411F85EB0180515441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000435AB0432F265141EC318F66735154419636E5012F2651413979EBA473515441E0EA43072F2651411FF15CA8735154416CC766012F2651417E4F63A573515441E17A141E1F26514148E17AB482515441295C8FE21E26514114AE472183515441AE47E17A222651417B14AE07855154419A99993923265141AE47E17A85515441666666E6292651411F85EB0180515441666666862D26514114AE47B182515441EC51B86E31265141D7A370FD8151544100000080322651413D0AD72380515441B81E859B33265141CDCCCC9C7D5154417B14AE3734265141E17A14FE7B515441295C8FC234265141295C8F627951544114AE47813526514152B81E15775154419A99995934265141713D0A87765154418FC2F5D83426514148E17A84755154413D0AD7F330265141AE47E19A735154411F85EBB12F265141E17A14FE725154418E4BB45D2F2651413DC3E64D73515441435AB0432F265141EC318F6673515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605802 - 3433963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000D00000048E17A24072651419A99999975515441E17A141E1F26514148E17AB4825154411F85EBB12F265141E17A14FE72515441E17A14EE2D2651411F85EB2172515441E17A148E2A265141CDCCCC7C70515441EC51B8EE25265141D7A3703D6E515441000000301D265141666666F6695154410AD7A31016265141AE47E17A66515441B81E850B0826514114AE47A15F515441A4703D9A04265141F6285C1F6651544148E17AF401265141D7A3701D6B515441EC51B87EFE255141713D0A077151544148E17A24072651419A99999975515441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000435AB0432F265141EC318F66735154419636E5012F2651413979EBA473515441E0EA43072F2651411FF15CA8735154416CC766012F2651417E4F63A573515441E17A141E1F26514148E17AB482515441295C8FE21E26514114AE472183515441AE47E17A222651417B14AE07855154419A99993923265141AE47E17A85515441666666E6292651411F85EB0180515441666666862D26514114AE47B182515441EC51B86E31265141D7A370FD8151544100000080322651413D0AD72380515441B81E859B33265141CDCCCC9C7D5154417B14AE3734265141E17A14FE7B515441295C8FC234265141295C8F627951544114AE47813526514152B81E15775154419A99995934265141713D0A87765154418FC2F5D83426514148E17A84755154413D0AD7F330265141AE47E19A735154411F85EBB12F265141E17A14FE725154418E4BB45D2F2651413DC3E64D73515441435AB0432F265141EC318F6673515441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605934 - 2165626
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541EC51B8EE29955041AE47E18A733355411F85EB112F9550410AD7A3507B335541CDCCCCEC36955041A4703D2A6933554185EB51F834955041E17A143E66335541333333832C955041F6285CDF5B335541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCC669CF35955041E73B839667335541F6285C6F38955041B81E853B663355419A9999C93C955041A4703D0A6333554114AE471141955041295C8F026133554114AE479144955041AE47E10A603355418FC2F5D8439550411F85EBD15E335541D7A3703D3D9550418FC2F5A8533355410AD7A3B0349550418FC2F588563355413D0AD7132F9550419A9999D958335541333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541E59DC3232A955041AA0627DB73335541B2541F192F9550419E79FF3F7B33554181CBDD503195504152337FAD6F3355414645F1F031955041CB6D2C056D335541605A130933955041D0B2EAE86A335541BCC669CF35955041E73B839667335541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605934 - 4663406
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541EC51B8EE29955041AE47E18A733355411F85EB112F9550410AD7A3507B335541CDCCCCEC36955041A4703D2A6933554185EB51F834955041E17A143E66335541333333832C955041F6285CDF5B335541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCC669CF35955041E73B839667335541F6285C6F38955041B81E853B663355419A9999C93C955041A4703D0A6333554114AE471141955041295C8F026133554114AE479144955041AE47E10A603355418FC2F5D8439550411F85EBD15E335541D7A3703D3D9550418FC2F5A8533355410AD7A3B0349550418FC2F588563355413D0AD7132F9550419A9999D958335541333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541E59DC3232A955041AA0627DB73335541B2541F192F9550419E79FF3F7B33554181CBDD503195504152337FAD6F3355414645F1F031955041CB6D2C056D335541605A130933955041D0B2EAE86A335541BCC669CF35955041E73B839667335541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76238 - 1083120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003800000023C810EFE71551419F030E807430544116D00D7EE81551415710D66475305441FCDF079CE9155141781B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA7430544166666666FC155141B81E856B743054413D0AD7C3FE1551413333330374305441E17A146EFF155141A4703DDA73305441C3F5287C001651419A9999897330544152B81EC501165141A4703D0A73305441F6285C0F031651415C8FC27572305441B81E853B041651417B14AE0772305441333333E304165141E17A14DE713054413D0AD72306165141713D0A87713054411F85EB310816514166666626713054410AD7A3300A1651415C8FC2B57030544114AE47B10B1651410000007070305441B81E857B0D16514148E17AC46F305441F6285CDF0F165141A4703D9A6E30544114AE470113165141C3F528CC6C305441B81E852B161651415C8FC2D56A305441666666061B16514152B81E055B3054417B14AEF71B165141333333F357305441333333631F1651410AD7A3804C305441070C542A1816514183F24B3649305441DD8D284416165141C84E8733473054411D0EBA07FF1551411DED5FAC373054414FECC91EFB15514171499BA93530544114AE4791F21551410AD7A3403A3054418FC2F5F8E7155141C3F5289C4030544114AE4751DC155141EC51B81E4630544148E17A64CF155141666666E64C30544152B81E35C9155141C3F5288C4E305441333333A3C8155141A4703DDA50305441AE47E1EAC71551411F85EBE15630544152B81E25C9155141A4703D4A5F3054419A999929CA1551419A99990962305441EB4F586BCB155141D89ADA2365305441E4964F7CD21551414720968664305441C3F5288CD8155141C3F5284C6430544148E17A64DE155141F6285C6F66305441E17A14BEE3155141C3F5284C68305441FBA1B840E5155141966C46E3693054416BBB480AE71551413B058A9E6B305441294492A7E71551418AB292CD6E305441C0452BC4E7155141C6EB16D37230544123C810EFE71551419F030E8074305441
+</a>
+
+<b>
+0106000000010000000103000000010000003800000024C810EFE7155141A4030E807430544118D00D7EE81551415810D66475305441FEDF079CE9155141731B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA7430544166666666FC155141B81E856B743054413D0AD7C3FE1551413333330374305441E17A146EFF155141A4703DDA73305441C3F5287C001651419A9999897330544152B81EC501165141A4703D0A73305441F6285C0F031651415C8FC27572305441B81E853B041651417B14AE0772305441333333E304165141E17A14DE713054413D0AD72306165141713D0A87713054411F85EB310816514166666626713054410AD7A3300A1651415C8FC2B57030544114AE47B10B1651410000007070305441B81E857B0D16514148E17AC46F305441F6285CDF0F165141A4703D9A6E30544114AE470113165141C3F528CC6C305441B81E852B161651415C8FC2D56A305441666666061B16514152B81E055B3054417B14AEF71B165141333333F357305441333333631F1651410AD7A3804C305441060C542A1816514187F24B3649305441DE8D284416165141C94E873347305441B4A2722F071651411FF42A813A30544101F4E29AF715514165D3F8D13830544114AE4791F21551410AD7A3403A3054418FC2F5F8E7155141C3F5289C4030544114AE4751DC155141EC51B81E4630544148E17A64CF155141666666E64C30544152B81E35C9155141C3F5288C4E305441333333A3C8155141A4703DDA50305441AE47E1EAC71551411F85EBE15630544152B81E25C9155141A4703D4A5F3054419A999929CA1551419A99990962305441ED4F586BCB155141D69ADA2365305441E1964F7CD21551414820968664305441C3F5288CD8155141C3F5284C6430544148E17A64DE155141F6285C6F66305441E17A14BEE3155141C3F5284C68305441FDA1B840E5155141966C46E36930544170BB480AE71551413C058A9E6B305441254492A7E71551418AB292CD6E305441BE452BC4E7155141CAEB16D37230544124C810EFE7155141A4030E8074305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76238 - 3446319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003800000023C810EFE71551419F030E807430544116D00D7EE81551415710D66475305441FCDF079CE9155141781B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA7430544166666666FC155141B81E856B743054413D0AD7C3FE1551413333330374305441E17A146EFF155141A4703DDA73305441C3F5287C001651419A9999897330544152B81EC501165141A4703D0A73305441F6285C0F031651415C8FC27572305441B81E853B041651417B14AE0772305441333333E304165141E17A14DE713054413D0AD72306165141713D0A87713054411F85EB310816514166666626713054410AD7A3300A1651415C8FC2B57030544114AE47B10B1651410000007070305441B81E857B0D16514148E17AC46F305441F6285CDF0F165141A4703D9A6E30544114AE470113165141C3F528CC6C305441B81E852B161651415C8FC2D56A305441666666061B16514152B81E055B3054417B14AEF71B165141333333F357305441333333631F1651410AD7A3804C305441070C542A1816514183F24B3649305441DD8D284416165141C84E8733473054411D0EBA07FF1551411DED5FAC373054414FECC91EFB15514171499BA93530544114AE4791F21551410AD7A3403A3054418FC2F5F8E7155141C3F5289C4030544114AE4751DC155141EC51B81E4630544148E17A64CF155141666666E64C30544152B81E35C9155141C3F5288C4E305441333333A3C8155141A4703DDA50305441AE47E1EAC71551411F85EBE15630544152B81E25C9155141A4703D4A5F3054419A999929CA1551419A99990962305441EB4F586BCB155141D89ADA2365305441E4964F7CD21551414720968664305441C3F5288CD8155141C3F5284C6430544148E17A64DE155141F6285C6F66305441E17A14BEE3155141C3F5284C68305441FBA1B840E5155141966C46E3693054416BBB480AE71551413B058A9E6B305441294492A7E71551418AB292CD6E305441C0452BC4E7155141C6EB16D37230544123C810EFE71551419F030E8074305441
+</a>
+
+<b>
+0106000000010000000103000000010000003800000024C810EFE7155141A4030E807430544118D00D7EE81551415810D66475305441FEDF079CE9155141731B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA7430544166666666FC155141B81E856B743054413D0AD7C3FE1551413333330374305441E17A146EFF155141A4703DDA73305441C3F5287C001651419A9999897330544152B81EC501165141A4703D0A73305441F6285C0F031651415C8FC27572305441B81E853B041651417B14AE0772305441333333E304165141E17A14DE713054413D0AD72306165141713D0A87713054411F85EB310816514166666626713054410AD7A3300A1651415C8FC2B57030544114AE47B10B1651410000007070305441B81E857B0D16514148E17AC46F305441F6285CDF0F165141A4703D9A6E30544114AE470113165141C3F528CC6C305441B81E852B161651415C8FC2D56A305441666666061B16514152B81E055B3054417B14AEF71B165141333333F357305441333333631F1651410AD7A3804C305441060C542A1816514187F24B3649305441DE8D284416165141C94E873347305441B4A2722F071651411FF42A813A30544101F4E29AF715514165D3F8D13830544114AE4791F21551410AD7A3403A3054418FC2F5F8E7155141C3F5289C4030544114AE4751DC155141EC51B81E4630544148E17A64CF155141666666E64C30544152B81E35C9155141C3F5288C4E305441333333A3C8155141A4703DDA50305441AE47E1EAC71551411F85EBE15630544152B81E25C9155141A4703D4A5F3054419A999929CA1551419A99990962305441ED4F586BCB155141D69ADA2365305441E1964F7CD21551414820968664305441C3F5288CD8155141C3F5284C6430544148E17A64DE155141F6285C6F66305441E17A14BEE3155141C3F5284C68305441FDA1B840E5155141966C46E36930544170BB480AE71551413C058A9E6B305441254492A7E71551418AB292CD6E305441BE452BC4E7155141CAEB16D37230544124C810EFE7155141A4030E8074305441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>671968 - 1396084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541
+</a>
+
+<b>
+01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>671968 - 3522121
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541
+</a>
+
+<b>
+01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607631 - 379591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000006666661663A45041AE47E18ADB5655417B14AE9764A450411F85EB41DB565541E17A140E67A45041AE47E1CADA56554185EB515864A4504133333383D0565541E17A147E62A45041F6285CCFC9565541EC51B85E60A45041295C8FA2C25655418FC2F5785DA45041713D0AA7BA565541000000D05AA4504152B81E35B3565541333333F357A4504148E17AD4AB5655413333333357A45041EC51B81EAA5655419A99994956A45041F6285CFFAA5655415C8FC22554A4504133333303AD565541333333D358A45041F6285CEFB8565541EC51B85E5AA45041E17A14BEBC565541EC51B85E5BA45041F6285CCFBD565541713D0A675CA45041A4703D2ABF5655419A9999895CA450411F85EB01C1565541000000005DA4504166666646C25655413D0AD7035EA4504152B81EA5C2565541EC51B86E5DA45041C3F5288CC356554114AE47B15DA450410AD7A330C65655415C8FC2455EA45041D7A370CDC7565541E17A145E5FA450418FC2F558C9565541D7A3707D5FA45041713D0AE7CB565541295C8F2260A4504166666616CE5655416666661663A45041AE47E18ADB565541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000009612C4FA58A45041B436C47BAE565541000000D05AA4504152B81E35B3565541B29CE3745BA450416FA09F02B5565541BAC2F5785DA450419C3D0AA7BA565541ED672FDC5DA45041C3C966B8BB565541EC51B85E60A45041295C8FA2C2565541E17A147E62A45041F6285CCFC956554185EB515864A4504133333383D0565541BF07162B65A45041E809B6A2D3565541167B140E67A45041A947E1CADA5655419A9999F969A4504148E17A84DA565541330AD7D36CA45041666666A6DA565541FB4871F56BA45041D1B781D7D8565541AE47E16A69A45041D7A3708DD3565541EC51B81E68A45041EC51B84ED0565541E8F7E0FA67A450419D2917F4CF5655413166660666A450413E5C8F02CB5655419A99992964A45041C31E85CBC5565541B5FFFF2F61A45041AF703DCABC56554144C2C75660A450414C060768BA5655419A99991960A45041C3F528BCB9565541FC4BF5D85EA45041B7764D77B65655415C6666D65DA4504168E17AD4B3565541A53196E35BA4504166F766E3AF565541D7A3701D5BA45041295C8F52AE56554152B81E9558A45041AE47E1CAA85655413333333357A45041EC51B81EAA565541195CF1DA57A45041B8712C9DAB565541533333F357A4504188E17AD4AB5655419612C4FA58A45041B436C47BAE565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607639 - 201074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000085EB51A8DFA05041A4703DBAB9555541B81E85EBD6A0504185EB51E8C0555541A4703D8ACBA05041AE47E1FAC55555418FC2F528B0A05041D7A370DDCD5555417B14AEC7B4A0504100000030DD5555418FC2F528B8A050419A999949DC5555413D0AD773B5A0504148E17AD4D0555541D7A3709DD0A05041EC51B82ECA555541AE47E1CAD5A050417B14AE37C7555541AE47E15AD6A050419A9999B9CB555541295C8F72D9A05041295C8FE2CC55554133333333DEA05041713D0AB7CB55554166666616E0A050418FC2F5C8C855554152B81E45E0A050413D0AD713C55555415C8FC275DEA050410AD7A340C255554100000050E3A0504114AE47C1BD555541F6285C2FEAA0504148E17AA4B5555541EC51B8BEEAA05041E17A14AEB0555541295C8F22E3A0504148E17AF4B655554185EB51A8DFA05041A4703DBAB9555541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C83BEF6AB6A05041752320EAD45555419464ABFBB5A0504106424713D355554147CBDE7CB5A0504157ADB1FAD05555413D0AD773B5A0504148E17AD4D05555417C4F7A00B7A0504127186973D055554122CB4D4DBEA050412D1E0DAACE555541AF3A7731CFA0504179B3CB87CA5555413C91ECF3D0A05041787131FDC9555541AE47E1CAD5A050417B14AE37C75555417EA577FCD5A05041FD440AC5C85555414D40BC9FDDA0504109B1693EC5555541F906AE5CDFA050416B4FA2D6C35555415C8FC275DEA050410AD7A340C255554100000050E3A0504114AE47C1BD555541F6285C2FEAA0504148E17AA4B5555541D6CC163AEAA0504124A2711BB1555541295C8F22E3A0504148E17AF4B655554185EB51A8DFA05041A4703DBAB9555541B81E85EBD6A0504185EB51E8C0555541A4703D8ACBA05041AE47E1FAC555554104CB8CADBFA050419ADE6565C955554148B0E729B0A050419C0293E0CD55554111F9C02BB0A0504179AFB4E6CD55554103A3AFBDB1A05041F7D9BC1BD3555541470FF20FB2A0504166578E2CD4555541238AC349B2A05041AD0443E3D4555541D8CFA55EB2A05041148A9331D555554173143970B2A05041E59FDD6BD555554174FA30A4B2A05041FDC73818D6555541A59080B2B2A05041DB47AF47D6555541D445D4C1B2A050419B7C847AD6555541A938276DB6A050418ABA83F3D4555541C83BEF6AB6A05041752320EAD4555541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607639 - 419342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000085EB51A8DFA05041A4703DBAB9555541B81E85EBD6A0504185EB51E8C0555541A4703D8ACBA05041AE47E1FAC55555418FC2F528B0A05041D7A370DDCD5555417B14AEC7B4A0504100000030DD5555418FC2F528B8A050419A999949DC5555413D0AD773B5A0504148E17AD4D0555541D7A3709DD0A05041EC51B82ECA555541AE47E1CAD5A050417B14AE37C7555541AE47E15AD6A050419A9999B9CB555541295C8F72D9A05041295C8FE2CC55554133333333DEA05041713D0AB7CB55554166666616E0A050418FC2F5C8C855554152B81E45E0A050413D0AD713C55555415C8FC275DEA050410AD7A340C255554100000050E3A0504114AE47C1BD555541F6285C2FEAA0504148E17AA4B5555541EC51B8BEEAA05041E17A14AEB0555541295C8F22E3A0504148E17AF4B655554185EB51A8DFA05041A4703DBAB9555541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C83BEF6AB6A05041752320EAD45555419464ABFBB5A0504106424713D355554147CBDE7CB5A0504157ADB1FAD05555413D0AD773B5A0504148E17AD4D05555417C4F7A00B7A0504127186973D055554122CB4D4DBEA050412D1E0DAACE555541AF3A7731CFA0504179B3CB87CA5555413C91ECF3D0A05041787131FDC9555541AE47E1CAD5A050417B14AE37C75555417EA577FCD5A05041FD440AC5C85555414D40BC9FDDA0504109B1693EC5555541F906AE5CDFA050416B4FA2D6C35555415C8FC275DEA050410AD7A340C255554100000050E3A0504114AE47C1BD555541F6285C2FEAA0504148E17AA4B5555541D6CC163AEAA0504124A2711BB1555541295C8F22E3A0504148E17AF4B655554185EB51A8DFA05041A4703DBAB9555541B81E85EBD6A0504185EB51E8C0555541A4703D8ACBA05041AE47E1FAC555554104CB8CADBFA050419ADE6565C955554148B0E729B0A050419C0293E0CD55554111F9C02BB0A0504179AFB4E6CD55554103A3AFBDB1A05041F7D9BC1BD3555541470FF20FB2A0504166578E2CD4555541238AC349B2A05041AD0443E3D4555541D8CFA55EB2A05041148A9331D555554173143970B2A05041E59FDD6BD555554174FA30A4B2A05041FDC73818D6555541A59080B2B2A05041DB47AF47D6555541D445D4C1B2A050419B7C847AD6555541A938276DB6A050418ABA83F3D4555541C83BEF6AB6A05041752320EAD4555541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607824 - 255193
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCCFCEEA25041C3F528FCD65655417B14AEC7F2A25041713D0A37DC565541CDCCCC7CF6A25041B81E854BE15655411F85EB51F9A250413D0AD763E55655413D0AD773FCA2504152B81E75E9565541A4703DBAFDA2504114AE4721EB565541713D0A17FEA2504148E17AC4EB56554100000080FEA250410AD7A3E0EC56554100000010FFA25041CDCCCC7CEE565541666666A6FFA250415C8FC2B5F05655410000000000A35041713D0A07F2565541E17A14EE01A350417B14AEB7F15655417B14AEF700A35041C3F528CCEC5655419A9999A9FEA25041EC51B8CEE7565541CDCCCCACFCA25041333333A3E45655417B14AEB7F5A25041D7A3708DD9565541C3F5285CF0A25041C3F5289CD156554152B81E75ECA25041A4703D7AD3565541CDCCCCFCEEA25041C3F528FCD6565541
+</a>
+
+<b>
+010600000001000000010300000001000000150000007B14AEB7F5A25041D7A3708DD956554103D30413F5A25041A3635499D856554193A0470CF2A2504113BFFB7CD45655413FE304E9F0A2504169D8FB6CD2565541C3F5285CF0A25041C3F5289CD156554164F8B5A0EDA25041BABDDFEAD25655412D243F8CECA25041D3E7DB71D3565541837A440DF1A25041B855D285D95655418FCDA738F6A25041ED274493E056554185462ABCFAA25041BF8919E7E65655416C46E13EFEA25041691FC6A4EB565541CCC20A89FEA250413C3385FAEC56554100000010FFA25041CDCCCC7CEE5655419A80E48CFFA250419D184455F05655410132FB8101A3504127238A94EF565541283CCBE200A3504160CBF19EEC565541487F9DB5FFA250413E67EF12EA5655414614091CFEA2504159D4EDECE6565541C0215F36FDA25041F0549F7EE5565541CDCCCCACFCA25041333333A3E45655417B14AEB7F5A25041D7A3708DD9565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 401474
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541D7A370CD98AE5041D7A3703DB44F554114AE47119BAE50418FC2F528B04F5541E17A142E9CAE5041EC51B84EAE4F55413D0AD7139EAE504148E17AC4AA4F5541713D0AE7A7AE5041B81E851BB04F55410AD7A3F0B4AE50419A9999D9B74F5541AE47E12AB4AE50411F85EBD1B84F5541C3F528ACB2AE50419A999959BA4F5541713D0A57AAAE5041B81E85FBC24F5541A4703D2AAEAE504152B81EE5C34F554100000020B9AE5041D7A3705DB94F5541A4703DBABEAE504152B81EA5B24F5541CDCCCC1CC2AE5041EC51B81EAD4F5541EC51B8BEC3AE504148E17A74AB4F5541CDCCCC7CCAAE504148E17AD4A24F554152B81E95D1AE5041B81E858BA44F5541E17A143ED4AE5041AE47E1CAA24F554100000040DCAE504114AE47D1A44F554166666636E2AE5041713D0A57A64F5541295C8F02E4AE50419A9999B9A64F5541B81E85CBE2AE5041B81E855B9F4F5541F6285C0FE1AE504114AE47A1934F554148E17A24E3AE504114AE4781924F55418FC2F558E5AE50411F85EB51914F554185EB5128EBAE5041666666868F4F554152B81E05F1AE5041B81E85CB8F4F5541666666D6F7AE5041AE47E12A8F4F5541295C8FD2F6AE5041C3F5282C874F554185EB5178EFAE5041333333F3824F5541295C8F22F3AE50415C8FC205794F554148E17A44F9AE5041AE47E1FA794F554133333323FAAE5041E17A143E7A4F55413D0AD7D3FBAE50410AD7A3C07A4F5541713D0A77FFAE50419A9999D97B4F554152B81E2501AF5041A4703D5A7C4F55418FC2F5A803AF5041CDCCCC1C7D4F5541F6285C8F06AF5041C3F528FC7D4F5541000000C006AF5041000000807A4F5541000000B006AF5041B81E852B7A4F55413333333306AF5041CDCCCC1C794F55418FC2F5C805AF50417B14AE37784F55411F85EB5105AF50410AD7A310774F55415C8FC26504AF5041C3F528AC744F5541C3F528AC03AF50419A9999E9724F5541000000000BAF5041A4703DAA6E4F5541EC51B8CE08AF50413D0AD7536B4F55419A99996901AF5041D7A370FD6C4F554166666666FCAE5041666666066F4F5541333333E3F7AE5041F6285C5F714F554166666686F5AE5041666666F6734F5541333333C3F1AE50415C8FC2B5744F5541C3F528BCEDAE5041E17A148E734F5541AE47E1DAE6AE504185EB5118714F55415C8FC275E6AE5041CDCCCC5C6E4F554152B81E05E6AE5041C3F5285C6B4F55415C8FC265E5AE50411F85EB01674F5541CDCCCCCCECAE50410AD7A390664F5541F6285CFFFAAE5041A4703DCA634F554152B81E0505AF5041EC51B8BE604F5541000000D006AF504152B81E75604F5541F6285C7F02AF5041AE47E11A554F5541B81E857BF2AE5041A4703D6A5B4F5541295C8F12DCAE50415C8FC295644F5541EC51B84EDBAE5041D7A3704D634F5541295C8FA2D7AE50419A9999D95C4F5541AE47E1EAD4AE5041EC51B82E584F5541E17A140ED2AE504152B81E05534F5541B81E85BBD1AE5041000000E0524F55410AD7A3C0CDAE504148E17A94554F5541EC51B8CEC4AE504148E17A24514F5541295C8F82BDAE50410AD7A3204C4F554148E17A94BEAE5041F6285CBF4A4F55419A9999A9BDAE50413D0AD7434A4F554185EB5148AEAE5041D7A3702D424F554114AE47D1A8AE50417B14AE273F4F5541AE47E15A9CAE504148E17A34384F5541E17A140E9AAE5041333333E3274F55418FC2F5C892AE5041B81E85AB1E4F5541AE47E1BA96AE504114AE47511B4F5541AE47E1FA9DAE50417B14AE27154F554148E17A6496AE50415C8FC2650C4F554114AE479190AE5041C3F528AC054F554152B81ED58BAE5041A4703DCA124F5541F6285C7F83AE5041D7A3701D1E4F55411F85EB517DAE5041295C8FA2274F5541EC51B81E7FAE5041295C8FB2284F5541B81E853B89AE50415C8FC235304F554114AE476188AE50410AD7A340324F5541713D0AB787AE5041713D0AD7334F554114AE47E184AE50411F85EB013B4F55415C8FC27584AE50417B14AE473C4F5541CDCCCCFC83AE5041EC51B86E3D4F55410000004083AE5041333333433F4F554185EB517882AE50415C8FC255414F554148E17A647FAE504133333383494F5541EC51B81E7FAE5041C3F5283C4A4F5541F6285C5F7EAE50417B14AE374C4F5541333333137EAE5041EC51B8EE4C4F55410AD7A3F07DAE5041A4703D2A4D4F5541A4703D4A7DAE5041B81E854B4E4F5541C3F5286C7CAE5041D7A370CD4F4F5541AE47E1AA7AAE50419A9999D9524F5541B81E85FB79AE5041AE47E10A544F55413333339377AE5041A4703D3A584F5541EC51B80E77AE50410AD7A320594F5541E17A145E76AE50413D0AD7535A4F55413333339375AE50413D0AD7B35B4F55410000006074AE5041AE47E1CA5D4F5541713D0AB773AE5041000000F05E4F55413333334372AE504166666676614F5541CDCCCC5C71AE50419A999909634F55419A9999E970AE5041F6285CCF634F554114AE47D16EAE50413D0AD773674F55411F85EB616DAE5041295C8FF2694F5541A4703D1A6DAE5041C3F5281C6B4F554148E17A646CAE50418FC2F5086E4F5541A4703D6A6AAE50411F85EB31764F554148E17A2464AE504148E17A84754F554152B81E3563AE5041713D0A87794F55418FC2F59862AE5041000000A07B4F5541D7A3704D62AE50417B14AEF77C4F5541666666A661AE504185EB51587F4F5541EC51B83E61AE50415C8FC265814F554148E17A0461AE5041A4703DAA824F55417B14AE175FAE504166666646824F55415C8FC20557AE5041333333C3804F5541E17A140E50AE5041B81E859B7E4F554185EB51F847AE50418FC2F5C8794F55418FC2F52847AE504148E17A047B4F55410000005045AE50411F85EB417E4F5541D7A3706D44AE5041666666E6804F55413333334344AE5041B81E85AB834F5541D7A3706D45AE5041000000C0884F5541AE47E1DA45AE5041A4703D3A8C4F5541AE47E16A46AE5041CDCCCCDC8F4F5541000000D045AE5041A4703D5A924F55413333331344AE5041E17A145E944F55417B14AE0742AE5041295C8FA2954F55413333330341AE5041C3F528FC954F55419A99998947AE5041F6285C6F984F55418FC2F5584AAE50415C8FC275964F55417B14AE074CAE50419A999979954F5541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F271EB937EAE50411E925ABF254F554157AEDA5F8FAE5041ECB75DBD1F4F55411392B3D190AE5041C8BAF2F8214F554144D3C0A094AE5041EE68128A284F5541E6BB6B5699AE5041258757FA264F554198A116DC92AE5041FDC5C5C31E4F554180ABC6D792AE50411FDEED9E1E4F554172BB00C69DAE50414425A054154F554146A49CD997AE50412CDF6D140E4F5541A7BD989690AE50418B9C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E74BD4B78AAE5041F75FDF4D144F5541D12CC19A86AE50417703B7E4194F554105E0DBDF82AE504168503E131F4F55413994BEBC7EAE504134766B73254F5541F271EB937EAE50411E925ABF254F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 419798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541D7A370CD98AE5041D7A3703DB44F554114AE47119BAE50418FC2F528B04F5541E17A142E9CAE5041EC51B84EAE4F55413D0AD7139EAE504148E17AC4AA4F5541713D0AE7A7AE5041B81E851BB04F55410AD7A3F0B4AE50419A9999D9B74F5541AE47E12AB4AE50411F85EBD1B84F5541C3F528ACB2AE50419A999959BA4F5541713D0A57AAAE5041B81E85FBC24F5541A4703D2AAEAE504152B81EE5C34F554100000020B9AE5041D7A3705DB94F5541A4703DBABEAE504152B81EA5B24F5541CDCCCC1CC2AE5041EC51B81EAD4F5541EC51B8BEC3AE504148E17A74AB4F5541CDCCCC7CCAAE504148E17AD4A24F554152B81E95D1AE5041B81E858BA44F5541E17A143ED4AE5041AE47E1CAA24F554100000040DCAE504114AE47D1A44F554166666636E2AE5041713D0A57A64F5541295C8F02E4AE50419A9999B9A64F5541B81E85CBE2AE5041B81E855B9F4F5541F6285C0FE1AE504114AE47A1934F554148E17A24E3AE504114AE4781924F55418FC2F558E5AE50411F85EB51914F554185EB5128EBAE5041666666868F4F554152B81E05F1AE5041B81E85CB8F4F5541666666D6F7AE5041AE47E12A8F4F5541295C8FD2F6AE5041C3F5282C874F554185EB5178EFAE5041333333F3824F5541295C8F22F3AE50415C8FC205794F554148E17A44F9AE5041AE47E1FA794F554133333323FAAE5041E17A143E7A4F55413D0AD7D3FBAE50410AD7A3C07A4F5541713D0A77FFAE50419A9999D97B4F554152B81E2501AF5041A4703D5A7C4F55418FC2F5A803AF5041CDCCCC1C7D4F5541F6285C8F06AF5041C3F528FC7D4F5541000000C006AF5041000000807A4F5541000000B006AF5041B81E852B7A4F55413333333306AF5041CDCCCC1C794F55418FC2F5C805AF50417B14AE37784F55411F85EB5105AF50410AD7A310774F55415C8FC26504AF5041C3F528AC744F5541C3F528AC03AF50419A9999E9724F5541000000000BAF5041A4703DAA6E4F5541EC51B8CE08AF50413D0AD7536B4F55419A99996901AF5041D7A370FD6C4F554166666666FCAE5041666666066F4F5541333333E3F7AE5041F6285C5F714F554166666686F5AE5041666666F6734F5541333333C3F1AE50415C8FC2B5744F5541C3F528BCEDAE5041E17A148E734F5541AE47E1DAE6AE504185EB5118714F55415C8FC275E6AE5041CDCCCC5C6E4F554152B81E05E6AE5041C3F5285C6B4F55415C8FC265E5AE50411F85EB01674F5541CDCCCCCCECAE50410AD7A390664F5541F6285CFFFAAE5041A4703DCA634F554152B81E0505AF5041EC51B8BE604F5541000000D006AF504152B81E75604F5541F6285C7F02AF5041AE47E11A554F5541B81E857BF2AE5041A4703D6A5B4F5541295C8F12DCAE50415C8FC295644F5541EC51B84EDBAE5041D7A3704D634F5541295C8FA2D7AE50419A9999D95C4F5541AE47E1EAD4AE5041EC51B82E584F5541E17A140ED2AE504152B81E05534F5541B81E85BBD1AE5041000000E0524F55410AD7A3C0CDAE504148E17A94554F5541EC51B8CEC4AE504148E17A24514F5541295C8F82BDAE50410AD7A3204C4F554148E17A94BEAE5041F6285CBF4A4F55419A9999A9BDAE50413D0AD7434A4F554185EB5148AEAE5041D7A3702D424F554114AE47D1A8AE50417B14AE273F4F5541AE47E15A9CAE504148E17A34384F5541E17A140E9AAE5041333333E3274F55418FC2F5C892AE5041B81E85AB1E4F5541AE47E1BA96AE504114AE47511B4F5541AE47E1FA9DAE50417B14AE27154F554148E17A6496AE50415C8FC2650C4F554114AE479190AE5041C3F528AC054F554152B81ED58BAE5041A4703DCA124F5541F6285C7F83AE5041D7A3701D1E4F55411F85EB517DAE5041295C8FA2274F5541EC51B81E7FAE5041295C8FB2284F5541B81E853B89AE50415C8FC235304F554114AE476188AE50410AD7A340324F5541713D0AB787AE5041713D0AD7334F554114AE47E184AE50411F85EB013B4F55415C8FC27584AE50417B14AE473C4F5541CDCCCCFC83AE5041EC51B86E3D4F55410000004083AE5041333333433F4F554185EB517882AE50415C8FC255414F554148E17A647FAE504133333383494F5541EC51B81E7FAE5041C3F5283C4A4F5541F6285C5F7EAE50417B14AE374C4F5541333333137EAE5041EC51B8EE4C4F55410AD7A3F07DAE5041A4703D2A4D4F5541A4703D4A7DAE5041B81E854B4E4F5541C3F5286C7CAE5041D7A370CD4F4F5541AE47E1AA7AAE50419A9999D9524F5541B81E85FB79AE5041AE47E10A544F55413333339377AE5041A4703D3A584F5541EC51B80E77AE50410AD7A320594F5541E17A145E76AE50413D0AD7535A4F55413333339375AE50413D0AD7B35B4F55410000006074AE5041AE47E1CA5D4F5541713D0AB773AE5041000000F05E4F55413333334372AE504166666676614F5541CDCCCC5C71AE50419A999909634F55419A9999E970AE5041F6285CCF634F554114AE47D16EAE50413D0AD773674F55411F85EB616DAE5041295C8FF2694F5541A4703D1A6DAE5041C3F5281C6B4F554148E17A646CAE50418FC2F5086E4F5541A4703D6A6AAE50411F85EB31764F554148E17A2464AE504148E17A84754F554152B81E3563AE5041713D0A87794F55418FC2F59862AE5041000000A07B4F5541D7A3704D62AE50417B14AEF77C4F5541666666A661AE504185EB51587F4F5541EC51B83E61AE50415C8FC265814F554148E17A0461AE5041A4703DAA824F55417B14AE175FAE504166666646824F55415C8FC20557AE5041333333C3804F5541E17A140E50AE5041B81E859B7E4F554185EB51F847AE50418FC2F5C8794F55418FC2F52847AE504148E17A047B4F55410000005045AE50411F85EB417E4F5541D7A3706D44AE5041666666E6804F55413333334344AE5041B81E85AB834F5541D7A3706D45AE5041000000C0884F5541AE47E1DA45AE5041A4703D3A8C4F5541AE47E16A46AE5041CDCCCCDC8F4F5541000000D045AE5041A4703D5A924F55413333331344AE5041E17A145E944F55417B14AE0742AE5041295C8FA2954F55413333330341AE5041C3F528FC954F55419A99998947AE5041F6285C6F984F55418FC2F5584AAE50415C8FC275964F55417B14AE074CAE50419A999979954F5541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F271EB937EAE50411E925ABF254F554157AEDA5F8FAE5041ECB75DBD1F4F55411392B3D190AE5041C8BAF2F8214F554144D3C0A094AE5041EE68128A284F5541E6BB6B5699AE5041258757FA264F554198A116DC92AE5041FDC5C5C31E4F554180ABC6D792AE50411FDEED9E1E4F554172BB00C69DAE50414425A054154F554146A49CD997AE50412CDF6D140E4F5541A7BD989690AE50418B9C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E74BD4B78AAE5041F75FDF4D144F5541D12CC19A86AE50417703B7E4194F554105E0DBDF82AE504168503E131F4F55413994BEBC7EAE504134766B73254F5541F271EB937EAE50411E925ABF254F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608020 - 201007
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000020000002D000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF65655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541AE47E19A99A15041295C8F8232575541CDCCCC7C99A15041AE47E1CA35575541295C8FB29FA15041EC51B89E43575541713D0AB7A0A150413333331343575541295C8F92A1A1504152B81E45435755415C8FC265A9A15041C3F528CC3E57554152B81EE5A9A15041000000703C5755411F85EB01ACA15041EC51B82E3D575541D7A3707DAEA150410AD7A3D03B575541E17A143EAEA150413D0AD7D339575541A4703DBAB0A15041713D0AD737575541713D0AB7B2A150415C8FC2B538575541333333D3B4A150417B14AE77375755413D0AD793B4A15041AE47E1BA3557554114AE4731B6A15041C3F528DC34575541B81E85ABB7A15041AE47E11A36575541CDCCCCECB8A150419A99993936575541295C8F52C9A150418FC2F5E82C575541333333F3C8A15041D7A3700D2A575541000000F0CAA15041E17A148E29575541E17A142ECCA15041C3F528AC2A5755419A999949CDA15041A4703DDA295755410AD7A3C0B7A15041C3F5283C125755418FC2F518B2A15041295C8F5208575541713D0A77AEA15041CDCCCC9C09575541713D0AD7A8A150418FC2F588FF56554148E17A84A0A150410AD7A3B004575541713D0A979DA1504148E17AC4FF56554148E17AE49AA15041AE47E15A0057554148E17A0499A15041666666B6FE565541EC51B8BE93A150410AD7A3E001575541295C8FC28FA15041EC51B88EF9565541295C8FF28CA1504148E17A44F856554110000000CDCCCC1CAFA150417B14AED70F57554166666616B3A15041CDCCCC4C16575541E17A144EB8A15041333333431C57554166666626BDA15041CDCCCC3C20575541333333E3BEA15041A4703DDA21575541B81E859BC3A150419A99997922575541B81E85BBC3A150415C8FC2B524575541333333E3BEA15041713D0AF7235755417B14AE27BCA15041A4703DFA21575541CDCCCC0CB9A15041E17A14BE1F57554148E17A54B4A15041713D0A271A575541B81E85DBAFA15041EC51B80E15575541E17A143EAEA1504114AE47B1135755410AD7A380ACA1504114AE47911357554114AE4741ACA150418FC2F5B80E575541CDCCCC1CAFA150417B14AED70F575541
+</a>
+
+<b>
+01060000000100000001030000000100000040000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF6565541C4A68F8B85A15041A7BF48D5F55655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541C9D6C67C98A150411A3FE4303157554154B237D898A15041D4B6C46231575541AE92BAE098A1504124B9DBA631575541AE47E19A99A15041295C8F823257554119E9648299A15041A398992E35575541EEB1FFEE99A15041EF2C29C936575541C3AC44B09EA15041B234985F41575541A27902C69EA1504186657D7A41575541A27902C69EA15041514C0190415755418D25AFF29EA15041F3C47AF3415755414AAF4E6E9FA150411AC7BE06435755416F15DFADA0A150416B22BBBF42575541B1BB865FA2A150418D431C1D42575541D0155D77A9A15041BF45A7783E57554152B81EE5A9A15041000000703C575541215E93DEABA15041BC5F41223D5755417DC6C977AEA150411C1441A33B575541190B02ADADA15041473875D639575541A4703DBAB0A15041713D0AD737575541713D0AB7B2A150415C8FC2B538575541333333D3B4A150417B14AE77375755413D0AD793B4A15041AE47E1BA3557554114AE4731B6A15041C3F528DC34575541B81E85ABB7A15041AE47E11A36575541B03AF404B8A1504127746E23365755414355C63BC9A15041C8C92B3A2C575541333333F3C8A15041D7A3700D2A575541000000F0CAA15041E17A148E295755419E607B15CCA15041635E09962A5755418CBD760ACDA15041F885FC082A575541E86BB21FCDA1504128E943F9295755413B5B1723CDA15041C08BC0F629575541FF409A55CBA15041F82AE4B52757554149E6E6A4BEA15041FF0C08CB195755410AF8D452BEA1504110A56475195755412AA04448BEA15041D0887065195755410AD7A3C0B7A15041C3F5283C12575541806A3420B2A150416756425F085755415473B912B2A15041CC40C65408575541F63454E6B1A150419B5C8A6408575541CBB8CCFBB0A150410B0D42F108575541413DB04BAFA150410A61485109575541713D0A77AEA15041CDCCCC9C09575541713D0AD7A8A150418FC2F588FF56554148E17A84A0A150410AD7A3B004575541713D0A979DA1504148E17AC4FF56554148E17AE49AA15041AE47E15A0057554148E17A0499A15041666666B6FE565541EC51B8BE93A150410AD7A3E001575541295C8FC28FA15041EC51B88EF9565541295C8FF28CA1504148E17A44F8565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608020 - 419170
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000020000002D000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF65655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541AE47E19A99A15041295C8F8232575541CDCCCC7C99A15041AE47E1CA35575541295C8FB29FA15041EC51B89E43575541713D0AB7A0A150413333331343575541295C8F92A1A1504152B81E45435755415C8FC265A9A15041C3F528CC3E57554152B81EE5A9A15041000000703C5755411F85EB01ACA15041EC51B82E3D575541D7A3707DAEA150410AD7A3D03B575541E17A143EAEA150413D0AD7D339575541A4703DBAB0A15041713D0AD737575541713D0AB7B2A150415C8FC2B538575541333333D3B4A150417B14AE77375755413D0AD793B4A15041AE47E1BA3557554114AE4731B6A15041C3F528DC34575541B81E85ABB7A15041AE47E11A36575541CDCCCCECB8A150419A99993936575541295C8F52C9A150418FC2F5E82C575541333333F3C8A15041D7A3700D2A575541000000F0CAA15041E17A148E29575541E17A142ECCA15041C3F528AC2A5755419A999949CDA15041A4703DDA295755410AD7A3C0B7A15041C3F5283C125755418FC2F518B2A15041295C8F5208575541713D0A77AEA15041CDCCCC9C09575541713D0AD7A8A150418FC2F588FF56554148E17A84A0A150410AD7A3B004575541713D0A979DA1504148E17AC4FF56554148E17AE49AA15041AE47E15A0057554148E17A0499A15041666666B6FE565541EC51B8BE93A150410AD7A3E001575541295C8FC28FA15041EC51B88EF9565541295C8FF28CA1504148E17A44F856554110000000CDCCCC1CAFA150417B14AED70F57554166666616B3A15041CDCCCC4C16575541E17A144EB8A15041333333431C57554166666626BDA15041CDCCCC3C20575541333333E3BEA15041A4703DDA21575541B81E859BC3A150419A99997922575541B81E85BBC3A150415C8FC2B524575541333333E3BEA15041713D0AF7235755417B14AE27BCA15041A4703DFA21575541CDCCCC0CB9A15041E17A14BE1F57554148E17A54B4A15041713D0A271A575541B81E85DBAFA15041EC51B80E15575541E17A143EAEA1504114AE47B1135755410AD7A380ACA1504114AE47911357554114AE4741ACA150418FC2F5B80E575541CDCCCC1CAFA150417B14AED70F575541
+</a>
+
+<b>
+01060000000100000001030000000100000040000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF6565541C4A68F8B85A15041A7BF48D5F55655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541C9D6C67C98A150411A3FE4303157554154B237D898A15041D4B6C46231575541AE92BAE098A1504124B9DBA631575541AE47E19A99A15041295C8F823257554119E9648299A15041A398992E35575541EEB1FFEE99A15041EF2C29C936575541C3AC44B09EA15041B234985F41575541A27902C69EA1504186657D7A41575541A27902C69EA15041514C0190415755418D25AFF29EA15041F3C47AF3415755414AAF4E6E9FA150411AC7BE06435755416F15DFADA0A150416B22BBBF42575541B1BB865FA2A150418D431C1D42575541D0155D77A9A15041BF45A7783E57554152B81EE5A9A15041000000703C575541215E93DEABA15041BC5F41223D5755417DC6C977AEA150411C1441A33B575541190B02ADADA15041473875D639575541A4703DBAB0A15041713D0AD737575541713D0AB7B2A150415C8FC2B538575541333333D3B4A150417B14AE77375755413D0AD793B4A15041AE47E1BA3557554114AE4731B6A15041C3F528DC34575541B81E85ABB7A15041AE47E11A36575541B03AF404B8A1504127746E23365755414355C63BC9A15041C8C92B3A2C575541333333F3C8A15041D7A3700D2A575541000000F0CAA15041E17A148E295755419E607B15CCA15041635E09962A5755418CBD760ACDA15041F885FC082A575541E86BB21FCDA1504128E943F9295755413B5B1723CDA15041C08BC0F629575541FF409A55CBA15041F82AE4B52757554149E6E6A4BEA15041FF0C08CB195755410AF8D452BEA1504110A56475195755412AA04448BEA15041D0887065195755410AD7A3C0B7A15041C3F5283C12575541806A3420B2A150416756425F085755415473B912B2A15041CC40C65408575541F63454E6B1A150419B5C8A6408575541CBB8CCFBB0A150410B0D42F108575541413DB04BAFA150410A61485109575541713D0A77AEA15041CDCCCC9C09575541713D0AD7A8A150418FC2F588FF56554148E17A84A0A150410AD7A3B004575541713D0A979DA1504148E17AC4FF56554148E17AE49AA15041AE47E15A0057554148E17A0499A15041666666B6FE565541EC51B8BE93A150410AD7A3E001575541295C8FC28FA15041EC51B88EF9565541295C8FF28CA1504148E17A44F8565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608026 - 201002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000020000000EC51B83E46A350417B14AE177C5755411F85EBE145A350413D0AD7637D5755417B14AE9745A35041CDCCCC6C7E57554114AE479147A35041C3F528BC81575541713D0A574BA35041295C8F4288575541D7A3709D4EA35041D7A3703D885755413333333350A35041713D0A178B57554148E17AF44DA350417B14AEC78C575541333333034FA35041B81E859B8E575541F6285CAF53A35041666666E6965755410AD7A31051A35041EC51B88E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A25755410AD7A3305BA35041713D0A17A5575541333333D35DA350415C8FC2E5A7575541C3F5283C62A350413D0AD753AC575541B81E858B69A3504185EB51A8B35755415C8FC2A56EA3504166666616B9575541F6285C4F73A35041EC51B88EB6575541AE47E11A70A350418FC2F508B35755415C8FC2F56AA3504152B81EA5AD575541295C8F5268A35041F6285C4FAA575541F6285C1F62A3504133333313A2575541CDCCCC1C5BA35041AE47E11A985755419A9999D958A35041000000C094575541F6285CEF51A350410000008089575541713D0AE74CA35041EC51B80E8157554148E17A9448A350419A9999A979575541B81E853B49A350418FC2F5C87A575541666666A647A350418FC2F5C87A575541EC51B83E46A350417B14AE177C575541
+</a>
+
+<b>
+0106000000010000000103000000010000002500000018FECE3946A35041F3BAAEF47B575541B6E871FA44A3504110ACA82D7D575541B534F52545A350415C2FFA857D5755415EAA489147A35041E6BB27BC81575541D2105FFA4EA35041FF4E438C8E575541333333034FA35041B81E859B8E5755411971058953A35041F8C45BA296575541A1F35CAF53A350419DBC67E6965755410966A41051A35041E91BB98E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A25755410AD7A3305BA35041713D0A17A5575541411514CA5DA3504121930ADCA7575541DB9633D35DA350416CCEC1E5A7575541AE09AD905FA35041269841A5A9575541C3F5283C62A350413D0AD753AC575541B81E858B69A3504185EB51A8B35755415C8FC2A56EA3504166666616B9575541EE5DA05372A35041C8485117B757554155EB5B4F73A35041300EB88EB6575541A1487E4A72A3504134C40270B55755419CD7817171A35041F2798781B4575541B9FBE01A70A350416755F608B3575541FBA4C1F56AA35041180E1FA5AD5755412240C0BF68A35041E2546DD9AA575541295C8F5268A35041F6285C4FAA575541F6285C1F62A3504133333313A2575541CDCCCC1C5BA35041AE47E11A98575541999C79D359A35041CF6E883296575541852B98D958A35041C6D0FFBF94575541F3FA5BEF51A350414C20008089575541B1B0F53D4FA35041E51177FB84575541713D0AE74CA35041EC51B80E815755418E471F2449A35041597F2DBD7A575541DF74B8AB47A350412A3728CA7A57554118FECE3946A35041F3BAAEF47B575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608026 - 419174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000020000000EC51B83E46A350417B14AE177C5755411F85EBE145A350413D0AD7637D5755417B14AE9745A35041CDCCCC6C7E57554114AE479147A35041C3F528BC81575541713D0A574BA35041295C8F4288575541D7A3709D4EA35041D7A3703D885755413333333350A35041713D0A178B57554148E17AF44DA350417B14AEC78C575541333333034FA35041B81E859B8E575541F6285CAF53A35041666666E6965755410AD7A31051A35041EC51B88E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A25755410AD7A3305BA35041713D0A17A5575541333333D35DA350415C8FC2E5A7575541C3F5283C62A350413D0AD753AC575541B81E858B69A3504185EB51A8B35755415C8FC2A56EA3504166666616B9575541F6285C4F73A35041EC51B88EB6575541AE47E11A70A350418FC2F508B35755415C8FC2F56AA3504152B81EA5AD575541295C8F5268A35041F6285C4FAA575541F6285C1F62A3504133333313A2575541CDCCCC1C5BA35041AE47E11A985755419A9999D958A35041000000C094575541F6285CEF51A350410000008089575541713D0AE74CA35041EC51B80E8157554148E17A9448A350419A9999A979575541B81E853B49A350418FC2F5C87A575541666666A647A350418FC2F5C87A575541EC51B83E46A350417B14AE177C575541
+</a>
+
+<b>
+0106000000010000000103000000010000002500000018FECE3946A35041F3BAAEF47B575541B6E871FA44A3504110ACA82D7D575541B534F52545A350415C2FFA857D5755415EAA489147A35041E6BB27BC81575541D2105FFA4EA35041FF4E438C8E575541333333034FA35041B81E859B8E5755411971058953A35041F8C45BA296575541A1F35CAF53A350419DBC67E6965755410966A41051A35041E91BB98E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A25755410AD7A3305BA35041713D0A17A5575541411514CA5DA3504121930ADCA7575541DB9633D35DA350416CCEC1E5A7575541AE09AD905FA35041269841A5A9575541C3F5283C62A350413D0AD753AC575541B81E858B69A3504185EB51A8B35755415C8FC2A56EA3504166666616B9575541EE5DA05372A35041C8485117B757554155EB5B4F73A35041300EB88EB6575541A1487E4A72A3504134C40270B55755419CD7817171A35041F2798781B4575541B9FBE01A70A350416755F608B3575541FBA4C1F56AA35041180E1FA5AD5755412240C0BF68A35041E2546DD9AA575541295C8F5268A35041F6285C4FAA575541F6285C1F62A3504133333313A2575541CDCCCC1C5BA35041AE47E11A98575541999C79D359A35041CF6E883296575541852B98D958A35041C6D0FFBF94575541F3FA5BEF51A350414C20008089575541B1B0F53D4FA35041E51177FB84575541713D0AE74CA35041EC51B80E815755418E471F2449A35041597F2DBD7A575541DF74B8AB47A350412A3728CA7A57554118FECE3946A35041F3BAAEF47B575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 201119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000065F48415C4A250411510A73F05575541AE47E1BAC2A250419A999959095755418998C328C2A25041A23CF8A30B575541B81E85CBC2A250418FC2F5F80B57554180D0C9DEC2A25041F2FA936B0D575541F00AA2F0C2A25041825BBC7A0D5755415DE17AB4C3A25041A347E11A0E57554152E17A74C5A250412F48E13A095755414CF528ECC7A25041EC51B84E02575541345C8FF2C8A25041EEF52834FF5655415AC2F5F8C9A25041AF999919FC56554108333373CAA250411CB81E65F9565541C71570E5CBA25041B24514EDEE5655413F6EE01EC8A250417969F31FEF565541F47597D9C7A25041853383BFF1565541AE47E19AC7A25041F6285C1FF4565541C5862C6BC7A250419760FBA6F5565541693333E3C6A2504113333303FA565541651C3C57C6A2504168FB6EEEFC565541CDCCCC1CC6A2504166666626FE56554111359FFDC5A25041FA6009B5FE5655415752B87EC5A25041649999F9005755416630C662C4A25041DD24A7550457554165F48415C4A250411510A73F05575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000EC51B8CE5DA35041CDCCCC4C625755413CE17AC466A350411D0AD7236157554108E590BE66A35041626D6E1361575541D18D25B866A35041BAE99E01615755411E33332365A35041EC7A149E5C5755416C8A0BD063A35041D005B3E45C57554152B81ED55BA35041E17A148E5E57554129A84A8757A35041E31453695F5755417EC2F56857A35041FB285C6F5F5755418ABE3DFA55A35041F43411D65F575541DF55249954A35041D1C1F53860575541981E852B53A3504100295C9F605755411AD7A30053A350418DB81EA560575541E4ADA0B153A3504110DF9724635755417014AED753A35041B97A14AE63575541D6F654025BA350419E40FEAD62575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B556575541360AD79379A350415B3D0A175A575541FEB7A5497DA35041E49EFF355A575541A34DC74D7DA35041961722365A575541909999697DA35041713D0A375A57554115DB3D8B7DA35041E31B98345A5755419CF5283C7FA3504155B81E155A575541C0784D937DA350414271E0A9545755411F85EBF17BA35041713D0A574F5755416AC722FD7AA350417F50B41F4C57554184703D0A7AA350410152B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000666666A689A3504148E17A9458575541B97FF09E8AA35041336F6B6B58575541B5668BD385A3504108356F4E49575541589CC5C981A3504116380BF63C575541100473627EA350416952FD4433575541B633DFC77DA35041CDF0D00D335755412B4087657CA35041F943B1DF325755416F88A6DE7CA350417345CD6B34575541CE9698F17CA35041968CC2A9345755413CA2F4D97EA350411431DBE63A575541CCB4ADF981A35041AB8E361E45575541DB5AF6C383A35041F39B63784A575541097AB1C084A350414C0C37644D575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A9458575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253850
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000DA874215A3A35041CD6FFB49895755414FC2F5C8A2A350411D0AD7A38857554129AAD0F0A1A3504197ACE101875755412D33FA1EA1A350412C831E6C85575541922211A29FA3504189F4D711855755412B8DF3D49EA35041BC4134F884575541C52C47A19DA3504109720A9285575541F931E2A09CA350414BEAA112875755412B2DC87A9CA35041B29CC452885755415485EB61A0A350413E3333538E575541176DAB54A4A35041AC806FEC935755417B14AE77A4A35041E17A141E94575541AE1E85CBA7A35041300AD79398575541F3D6A3D0AAA350410185EB2195575541EE8A994BAAA3504151B53A71945755414B658B56A9A35041E982C52B93575541295C8F32A6A350410B0000008F57554148E17A84A4A35041A49999698C575541B039AD75A4A3504102AB5D498C57554105C5A8ABA3A3504134A579918A575541DA874215A3A35041CD6FFB4989575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000065F48415C4A250411510A73F05575541AE47E1BAC2A250419A999959095755418998C328C2A25041A23CF8A30B575541B81E85CBC2A250418FC2F5F80B57554180D0C9DEC2A25041F2FA936B0D575541F00AA2F0C2A25041825BBC7A0D5755415DE17AB4C3A25041A347E11A0E57554152E17A74C5A250412F48E13A095755414CF528ECC7A25041EC51B84E02575541345C8FF2C8A25041EEF52834FF5655415AC2F5F8C9A25041AF999919FC56554108333373CAA250411CB81E65F9565541C71570E5CBA25041B24514EDEE5655413F6EE01EC8A250417969F31FEF565541F47597D9C7A25041853383BFF1565541AE47E19AC7A25041F6285C1FF4565541C5862C6BC7A250419760FBA6F5565541693333E3C6A2504113333303FA565541651C3C57C6A2504168FB6EEEFC565541CDCCCC1CC6A2504166666626FE56554111359FFDC5A25041FA6009B5FE5655415752B87EC5A25041649999F9005755416630C662C4A25041DD24A7550457554165F48415C4A250411510A73F05575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419409
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B556575541360AD79379A350415B3D0A175A575541FEB7A5497DA35041E49EFF355A575541A34DC74D7DA35041961722365A575541909999697DA35041713D0A375A57554115DB3D8B7DA35041E31B98345A5755419CF5283C7FA3504155B81E155A575541C0784D937DA350414271E0A9545755411F85EBF17BA35041713D0A574F5755416AC722FD7AA350417F50B41F4C57554184703D0A7AA350410152B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000EC51B8CE5DA35041CDCCCC4C625755413CE17AC466A350411D0AD7236157554108E590BE66A35041626D6E1361575541D18D25B866A35041BAE99E01615755411E33332365A35041EC7A149E5C5755416C8A0BD063A35041D005B3E45C57554152B81ED55BA35041E17A148E5E57554129A84A8757A35041E31453695F5755417EC2F56857A35041FB285C6F5F5755418ABE3DFA55A35041F43411D65F575541DF55249954A35041D1C1F53860575541981E852B53A3504100295C9F605755411AD7A30053A350418DB81EA560575541E4ADA0B153A3504110DF9724635755417014AED753A35041B97A14AE63575541D6F654025BA350419E40FEAD62575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000666666A689A3504148E17A9458575541B97FF09E8AA35041336F6B6B58575541B5668BD385A3504108356F4E49575541589CC5C981A3504116380BF63C575541100473627EA350416952FD4433575541B633DFC77DA35041CDF0D00D335755412B4087657CA35041F943B1DF325755416F88A6DE7CA350417345CD6B34575541CE9698F17CA35041968CC2A9345755413CA2F4D97EA350411431DBE63A575541CCB4ADF981A35041AB8E361E45575541DB5AF6C383A35041F39B63784A575541097AB1C084A350414C0C37644D575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A9458575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D5755415C8FC275B7A250418FC2F5587F5755410103000000010000002F0000005C8FC275B3A35041B81E850B7C575541F6285C3FB1A350418FC2F5587D575541E17A148EB5A35041A4703DAA855755418FC2F5D8B9A35041295C8F728D575541B81E854BBEA3504185EB5178965755410AD7A320C3A35041EC51B87E9F575541A4703D0AC8A350411F85EB01A95755413D0AD753CCA350415C8FC235B0575541E17A145ED0A35041666666C6AF575541E17A14AED1A3504166666686B05755415C8FC2C5D1A3504166666636B25755415C8FC285CFA35041666666F6B2575541CDCCCCACD0A35041B81E851BB5575541E17A142ED3A35041E17A14DEB55755411F85EB11D6A350410AD7A370BC5755417B14AE87D7A35041D7A3705DBB575541D7A3708DD8A35041CDCCCC9CBA575541CDCCCC5CD3A350411F85EB41AE57554152B81E45D1A3504185EB5178AB57554166666696CDA3504114AE4781A35755418FC2F548CEA35041F6285CCFA25755415C8FC245CDA35041E17A14FE9E575541E17A14AECEA35041666666469F5755415C8FC2B5CFA3504166666626A1575541E17A14AED7A3504166666636A3575541CDCCCCECDAA3504148E17A64A557554114AE47E1D6A35041295C8F929C5755419A999949D3A35041B81E852B94575541713D0A87D1A35041B81E85EB945755413D0AD733CFA35041EC51B8DE8E5755418FC2F5E8CAA35041CDCCCCFC83575541B81E854BC6A350419A9999B97F575541000000B0C4A35041D7A3703D7E5755415C8FC2B5C3A35041666666567D575541E17A14BEC1A35041E17A144E7F575541E17A143EC0A350416666665680575541E17A149EBDA35041E17A14DE7F575541E17A143EBDA35041E17A144E7F5755415C8FC2E5BDA35041666666167E5755415C8FC235BFA35041E17A14CE7D575541E17A141EBFA35041E17A144E7C575541E17A146EBDA35041666666D67B575541E17A147EBCA35041666666667C575541C3F5283CBAA3504114AE478181575541B81E856BB6A35041E17A145E7A5755419A999909B5A35041E17A141E7B5755415C8FC275B3A35041B81E850B7C5755410103000000010000002B000000EC51B8DEC2A25041B81E856B0D5755415C8FC265C4A250417B14AEB70E5755417B14AED7CAA250418FC2F5380E5755410AD7A380CEA25041CDCCCCDC0F575541E17A149ECEA2504148E17AE41057554100000000CFA2504185EB51D811575541D7A370FDCFA250413D0AD7431257554185EB51E8D0A2504148E17A74125755415C8FC285D5A2504148E17AE410575541295C8FE2D7A250417B14AE670F5755418FC2F5C8DAA25041A4703D4A0F5755418FC2F5E8DBA25041E17A14BE0F575541EC51B80EDDA25041A4703D3A0B575541E17A14FEDEA25041D7A3705D03575541713D0A27E0A250410AD7A3A0FE565541EC51B82EE1A2504185EB5178FA565541295C8F22E2A2504166666696F6565541CDCCCC1CE1A25041AE47E1DAF6565541333333B3DDA2504148E17AE4F45655415C8FC295D9A2504100000050F5565541EC51B89ED7A2504152B81EC5F3565541D7A370EDD3A2504166666686F1565541AE47E18AD1A25041295C8F62F15655417B14AE47D0A25041EC51B80EF156554185EB5188CFA25041C3F5283CEF5655419A999939D1A250418FC2F528EE5655418FC2F558CFA2504114AE4731ED5655417B14AE67CEA25041CDCCCC5CEB565541000000A0CCA25041000000A0EB56554166666656CCA2504166666626E95655411F85EB81CBA2504100000030E85655415C8FC225CBA25041713D0AC7E6565541B81E851BCAA250419A9999B9E65655419A999919C9A25041295C8F22E756554100000080C8A25041295C8F72EB565541AE47E19AC7A25041F6285C1FF4565541333333E3C6A2504133333303FA565541CDCCCC1CC6A2504166666626FE565541EC51B87EC5A250419A9999F900575541AE47E1BAC2A250419A999959095755417B14AE27C2A2504185EB51A80B575541B81E85CBC2A250418FC2F5F80B575541EC51B8DEC2A25041B81E856B0D57554101030000000100000014000000AE47E14AF6A2504133333353125755411F85EB41F7A2504114AE4711125755418FC2F548F8A250410AD7A30012575541CDCCCCDCF8A25041333333531257554114AE4781F9A250410AD7A3F011575541295C8FB2F9A250413333331310575541E17A14FEF8A25041D7A3703D0F575541E17A140EF9A2504148E17AE40D575541F6285C2FF9A25041AE47E12A0A57554185EB5128F8A25041E17A14BE035755418FC2F548F8A25041EC51B88E0157554148E17AA4F7A250418FC2F558FE565541666666A6F5A25041A4703D3AFC5655413D0AD7B3F3A25041EC51B8CEFA565541E17A14EEF3A250410AD7A360FC5655410AD7A3C0F4A25041EC51B84E03575541EC51B82EF5A250418FC2F5C8085755413D0AD773F5A2504114AE47F10D575541666666A6F5A250413333332312575541AE47E14AF6A2504133333353125755410103000000010000000E0000000AD7A38074A35041EC51B8EE345755410000000074A350413D0AD70335575541000000B073A35041CDCCCC8C35575541E17A146E73A35041B81E856B3657554148E17A4473A350413D0AD7D3375755419A99992973A35041AE47E1BA38575541295C8F0273A3504148E17AF438575541E17A146E72A35041E17A142E39575541295C8F9270A350411F85EBA1395755415C8FC2656FA3504185EB51D83957554152B81E3572A350417B14AEA743575541CDCCCCFC72A350413D0AD7F345575541713D0AC775A35041A4703D8A395755410AD7A38074A35041EC51B8EE3457554101030000000100000009000000C3F528DCE4A25041F6285C8F3F575541A4703D6AEBA25041713D0A574557554152B81EF5F2A2504148E17AA44A5755413D0AD713F8A25041A4703D7A3E57554148E17AF4F2A25041E17A14CE3D575541F6285CFFF1A250417B14AEC73D5755419A9999E9EEA25041295C8FB23D575541D7A3705DE2A2504148E17AA43C575541C3F528DCE4A25041F6285C8F3F5755410103000000010000001C0000009A9999C9C1A250417B14AEE7E0565541C3F528FCC1A250417B14AE67E05655415C8FC245C2A2504100000010E05655417B14AE37C2A25041295C8FA2DF565541EC51B80EC2A2504166666646DF5655417B14AE17C2A25041AE47E1AADE5655410AD7A340C2A25041CDCCCCFCDD5655417B14AE77C2A25041C3F528FCDC565541F6285CAFC2A25041C3F528BCDB565541B81E85DBBEA25041F6285C3FDB565541AE47E1AABDA2504185EB5118DB565541D7A3709DBDA25041AE47E1EADD5655413D0AD733BCA250415C8FC295EE56554114AE47E1BBA25041A4703DEAF15655419A999949BBA2504185EB5108FD565541295C8FD2BAA250419A999959025755418FC2F5C8BAA250410AD7A32005575541B81E85BBBAA25041713D0AE708575541713D0A57BAA25041295C8FC20F575541F6285C4FBCA250418FC2F5180F575541B81E850BBDA25041666666760A5755419A9999F9BDA25041666666960457554185EB51C8BFA2504148E17AE4F6565541295C8FF2C0A2504185EB5178EC565541333333F3C1A250418FC2F5C8E2565541EC51B8EEC1A25041F6285CBFE15655410AD7A3E0C1A250417B14AE47E15655419A9999C9C1A250417B14AEE7E056554101030000000100000018000000713D0A67A3A35041C3F528FC56575541000000709EA35041EC51B8DE5257554148E17AE49CA3504114AE47B1535755418FC2F5D897A35041E17A144E56575541F6285CEF97A35041E17A148E565755419A9999199CA350415C8FC2055E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541AE47E1AAADA35041333333436C575541000000E0A9A3504148E17A54665755413D0AD7D3A6A35041CDCCCCAC6157554152B81E75A4A3504152B81EC55D57554148E17A24A6A35041000000405E575541D7A370CDACA350413333333368575541713D0A37B1A350418FC2F578655755415C8FC2B5A8A350415C8FC2855B575541713D0AE7A5A3504185EB51485B575541295C8FB2A4A35041D7A3701D595755410AD7A3B0A6A350410AD7A3C059575541713D0A67A3A35041C3F528FC565755410103000000010000000A000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B5565755413D0AD79379A35041713D0A175A5755419A9999697DA35041713D0A375A575541C3F5283C7FA3504152B81E155A5755411F85EBF17BA35041713D0A574F575541A4703D0A7AA35041EC51B8EE485755418FC2F51876A35041295C8FB23A575541AE47E16A73A35041713D0A3747575541010300000001000000370000009A9999D9CFA3504166666676235755410AD7A380D2A3504148E17AF423575541EC51B8DED2A35041EC51B8CE2657554185EB5148D1A3504114AE47D127575541295C8FF2D2A350417B14AEB72C575541B81E852BD5A35041AE47E16A2C575541F6285C4FD9A350413D0AD7932A575541AE47E1BADAA35041666666662A575541C3F5287CDBA35041AE47E11A2A57554152B81EC5DDA35041AE47E11A2A575541AE47E1EADFA350419A9999092A575541E17A149EE2A35041C3F528DC285755413D0AD733E2A350419A999979275755419A9999B9E3A3504148E17AA42657554185EB5198E5A35041CDCCCCAC2557554114AE4771EAA35041C3F528BC23575541713D0A97ECA350411F85EB51235755419A999959EDA35041CDCCCC1C23575541E17A14CEEEA3504148E17A2422575541E17A14CEEEA35041333333E31E57554100000040EEA35041AE47E1FA1B575541AE47E1AAEEA35041B81E85BB1A575541CDCCCCACF0A350417B14AEA7185755413D0AD7F3F9A35041B81E853B165755417B14AE47FCA35041CDCCCCFC15575541713D0A07FDA35041AE47E16A15575541D7A370ADFCA35041A4703DCA1357554152B81E45FBA35041333333C310575541000000F0F5A350419A9999890C575541C3F528DCF3A35041666666660C5755418FC2F518F3A35041CDCCCC4C0D5755417B14AE77F0A35041CDCCCC4C0D575541B81E85FBEFA35041295C8F420C57554100000040EEA35041000000700D575541F6285CFFEAA35041713D0AB70D575541713D0A27E8A35041333333A30E5755413D0AD7B3E6A3504114AE47C10E575541E17A14FEE4A35041B81E857B0E575541B81E85CBE3A35041333333330E5755419A999969E2A350413D0AD7030F575541A4703D8AE0A35041713D0A471057554100000020E0A35041C3F528FC14575541713D0A47DBA35041D7A370AD155755415C8FC205D8A3504114AE47D11557554185EB5158D5A35041D7A3705D16575541295C8FB2D3A35041D7A3709D16575541EC51B88ECFA35041B81E85BB1857554166666616CEA35041E17A14DE14575541295C8FE2CAA35041666666861457554166666636CDA35041F6285C7F1B5755415C8FC265D1A35041333333B31D575541AE47E10AD2A35041D7A370CD1E5755417B14AE77CFA35041EC51B89E1E575541666666B6CEA3504114AE4701205755419A9999D9CFA3504166666676235755410103000000010000000C0000003333332365A35041E17A149E5C57554152B81ED55BA35041E17A148E5E5755418FC2F56857A35041F6285C6F5F575541B81E852B53A35041F6285C9F605755410AD7A30053A3504152B81EA5605755417B14AED753A35041E17A14AE63575541E17A143E5CA350411F85EB8162575541EC51B8CE5DA35041CDCCCC4C62575541295C8FA25EA3504114AE47816557554148E17AF467A350410AD7A3306457554148E17AC466A350413D0AD723615755413333332365A35041E17A149E5C5755410103000000010000001F000000295C8F6234A35041C3F5289C9D57554185EB510836A35041C3F528BC9C57554114AE47E131A3504185EB518894575541D7A3701D2EA350415C8FC2A58D5755413D0AD7B32BA350411F85EBC18957554148E17A2429A350413333331386575541A4703D9A27A350419A99997983575541AE47E1EA25A35041AE47E1CA7F575541B81E851B24A35041CDCCCC2C7B575541CDCCCCBC21A350410000009071575541295C8FD220A350417B14AE776B575541D7A3706D20A350413333332369575541CDCCCC1C20A3504185EB519867575541F6285CBF1FA350413333339366575541EC51B8CE1CA35041666666F6685755411F85EB411DA350413333339369575541C3F5280C1EA35041295C8FD26A575541E17A142E1EA35041B81E85EB6B575541CDCCCCDC1FA350410AD7A3A07357554148E17A3421A35041D7A370FD7A5755413D0AD7E321A350411F85EBC17D57554152B81ED522A350419A999919805755413D0AD78324A350411F85EB6183575541333333D327A350413333334388575541D7A3705D2BA3504114AE47F18D5755410AD7A3E02DA35041C3F5281C92575541EC51B81E2FA35041CDCCCC3C945755419A9999C931A350417B14AEE7965755419A99992933A3504133333393995755418FC2F5F832A350419A9999299B575541295C8F6234A35041C3F5289C9D5755410103000000010000000C000000AE47E1AA80A35041A4703DEA325755417B14AE677EA35041EC51B89E32575541666666367CA35041F6285C1F32575541F6285C5F7CA35041B81E85CB32575541713D0A2782A35041295C8FB245575541E17A146E88A350415C8FC2455857554148E17A8488A3504148E17A9458575541666666A689A3504148E17A94585755415C8FC2A58BA3504100000040585755411F85EB018DA35041C3F528CC575755410AD7A3D080A350411F85EB5133575541AE47E1AA80A35041A4703DEA32575541010300000001000000210000009A9999392AA35041CDCCCC7C57575541666666B62AA350410000000058575541B81E85DB2AA3504114AE47C1585755419A9999A92AA35041AE47E1DA595755410AD7A39029A35041AE47E14A595755410AD7A32029A3504185EB51A859575541A4703D1A29A350419A9999F95957554114AE477128A35041000000905A575541CDCCCC2C28A35041666666765A575541295C8F3228A35041713D0A775B575541EC51B85E28A3504148E17A6463575541E17A14EE27A35041E17A140E69575541E17A145E27A35041E17A14FE6D575541E17A143E28A35041E17A142E75575541E17A149E2AA35041E17A14FE7C575541E17A14FE2CA35041E17A14CE82575541E17A14FE30A35041E17A145E8B575541E17A14BE35A35041E17A146E93575541E17A149E39A35041E17A147E99575541E17A147E3CA35041E17A14FE97575541E17A145E3FA35041E17A147E96575541E17A143E36A35041E17A14DE87575541E17A149E31A35041E17A148E7E575541E17A148E2EA35041E17A146E75575541E17A14AE2CA35041E17A14EE695755413D0AD7A32DA35041CDCCCC9C5F5755411F85EB812FA35041E17A14EE58575541A4703DAA2FA35041D7A3705D5857554148E17A842CA350413D0AD76354575541333333332CA3504185EB51A854575541B81E856B2BA35041E17A14CE54575541AE47E18A2AA35041F6285C1F575755419A9999392AA35041CDCCCC7C5757554101030000000100000035000000333333834BA35041E17A144E545755415C8FC24556A35041A4703D5A525755410AD7A3905AA35041AE47E19A51575541C3F528BC5FA35041F6285C9F50575541000000505EA350411F85EB31485755413D0AD7335DA35041A4703DCA42575541CDCCCCFC5BA35041E17A14AE41575541D7A3705D5BA350413333339341575541295C8FA259A350413333339341575541A4703D4A58A35041295C8FE2415755415C8FC20557A350418FC2F5384257554152B81E6555A35041CDCCCC4C42575541AE47E15A54A3504133333353425755413333337352A350415C8FC2954257554148E17A7451A3504100000010435755417B14AED74FA35041AE47E1CA445755415C8FC2C54EA35041C3F5289C4657554148E17A144EA350415C8FC21547575541333333634DA35041C3F5282C4757554148E17AF44CA3504185EB51C846575541B81E852B4DA350419A99995946575541A4703D0A4DA350419A99993945575541713D0AA74CA350413333332345575541B81E857B4BA3504148E17AD445575541713D0A674AA3504148E17A84475755410AD7A33049A35041000000B048575541A4703D8A48A35041000000B0485755417B14AEB747A35041295C8FD2475755419A99995947A35041000000D0465755418FC2F52847A350413333331346575541A4703D9A46A3504148E17AE445575541E17A14AE46A35041EC51B84E4657554148E17A3446A35041713D0AC7475755411F85EB8146A35041295C8F6248575541CDCCCC8C46A3504185EB51084957554152B81E5546A350415C8FC2E549575541B81E85DB45A350419A9999494A575541A4703DBA45A3504152B81EE54A5755411F85EBF145A3504185EB51484B575541F6285CAF45A350419A9999F94B575541E17A14FE44A35041666666B64C575541B81E852B44A350413D0AD7734C575541333333F344A3504114AE47E14D5755417B14AEE73BA3504152B81EE553575541E17A14EE3BA350419A99999954575541666666563CA35041D7A370ED5F5755419A9999693CA350419A999999635755416666666643A35041C3F528BC62575541D7A370DD46A35041E17A144E62575541333333934BA350415C8FC2A561575541CDCCCC8C4BA350415C8FC2955B57554152B81E854BA350419A9999D954575541333333834BA35041E17A144E545755410103000000010000000D00000048E17AB4E3A35041333333E33D5755413D0AD753E4A35041713D0A4734575541AE47E1BAE2A350411F85EB613457554166666686DDA35041AE47E1BA345755411F85EB01DCA3504152B81ED53457554185EB5178D8A35041CDCCCCFC34575541CDCCCC6CD8A3504148E17A6438575541713D0AF7D8A35041E17A140E48575541C3F528ACDAA350413D0AD7C347575541E17A145EE0A35041CDCCCCAC465755413D0AD743E1A3504114AE4771465755419A999909E3A35041C3F528FC4557554148E17AB4E3A35041333333E33D57554101030000000100000009000000EC51B82E95A350419A9999B90E575541CDCCCCDC91A350417B14AE970D575541C3F5281C90A350411F85EBF113575541A4703DCA8FA350416666661615575541EC51B83E92A3504166666696175755415C8FC28594A3504148E17A64195755410AD7A3B094A3504185EB51D8185755410AD7A33097A350413D0AD73310575541EC51B82E95A350419A9999B90E57554101030000000100000011000000295C8F32A6A35041000000008F57554148E17A84A4A350419A9999698C5755418FC2F5C8A2A350413D0AD7A388575541C3F5287CA0A3504114AE4731845755415C8FC2759DA35041B81E859B7E5755415C8FC2F59BA35041333333137C5755419A9999299AA35041333333137A5755411F85EBD197A35041000000307B57554148E17AF496A350418FC2F5987B575541EC51B87E9BA35041EC51B8BE825755419A99998999A3504148E17AB483575541333333039CA35041AE47E19A875755411F85EB61A0A35041333333538E5755417B14AE77A4A35041E17A141E94575541B81E85CBA7A350413D0AD793985755410AD7A3D0AAA350411F85EB2195575541295C8F32A6A35041000000008F5755410103000000010000000A0000001F85EBA1B6A350418FC2F5F812575541AE47E17AB7A3504114AE47811257554152B81E25B8A35041F6285CBF11575541000000D0B8A350411F85EBF10F575541713D0AD7B9A35041A4703D8A0C5755411F85EB91B7A350418FC2F5080E57554148E17AB4B6A3504114AE47910F57554133333313B6A3504185EB51B8105755417B14AE37B6A3504133333373125755411F85EBA1B6A350418FC2F5F812575541010300000001000000120000005C8FC255C2A350410AD7A3903357554114AE4701C5A35041F6285CDF345755410AD7A3A0C7A35041F6285C2F3457554148E17AD4C9A35041333333C333575541F6285C1FCDA3504114AE47A13357554148E17AB4D0A350413D0AD773335755417B14AE07D1A3504148E17AD432575541EC51B87EC9A35041333333F32D575541B81E85BBC6A350418FC2F5A824575541D7A370CDC3A35041333333F31C5755418FC2F568C0A3504114AE47E11C575541D7A3704DBFA350415C8FC235195755417B14AE27BDA350413D0AD7231957554148E17A74BAA35041D7A370CD1A5755419A999989B8A350415C8FC2B51C575541D7A3704DBDA35041F6285C9F275755413D0AD7C3C0A35041666666A62F5755415C8FC255C2A350410AD7A39033575541010300000001000000330000001F85EB917AA3504185EB5158275755416666667678A350418FC2F5782D575541CDCCCC5C77A35041295C8FD2305755416666667678A35041B81E854B305755411F85EB2179A35041CDCCCC7C30575541D7A3707D79A350410AD7A300315755417B14AE477AA35041AE47E16A31575541A4703DCA7DA35041EC51B8CE31575541333333737FA35041D7A3703D32575541295C8F0281A35041EC51B8CE31575541C3F528AC82A35041AE47E11A3057554114AE47D182A35041EC51B82E2F575541CDCCCCAC84A35041CDCCCCAC2A575541666666C684A350418FC2F51829575541295C8F9284A3504185EB51D828575541713D0A9785A35041A4703DBA27575541CDCCCC4C86A35041C3F5286C275755413333330387A35041C3F5286C2757554114AE475187A35041EC51B85E2757554185EB514888A350418FC2F57827575541333333B388A350410000001028575541B81E850B89A350417B14AED728575541713D0A6789A3504114AE47E1285755417B14AE278AA350410AD7A3D028575541666666668AA3504185EB517828575541000000908AA35041E17A143E285755415C8FC2658BA35041000000D027575541B81E853B8CA35041E17A146E27575541EC51B8BE8CA3504114AE472127575541666666E68CA35041E17A14DE26575541C3F5283C8DA350417B14AE97255755410AD7A3608DA350417B14AEC724575541E17A149E8DA350418FC2F5682457554185EB51288FA35041A4703DCA23575541A4703D0A90A350410AD7A34023575541C3F5287C91A350413333338322575541000000E091A35041F6285C4F225755413D0AD76392A35041EC51B84E20575541B81E852B94A350418FC2F5881A575541D7A3702D92A350418FC2F5D818575541E17A147E8FA350416666662616575541D7A3701D8EA3504114AE47111B575541A4703DDA8AA35041F6285C9F1A5755413D0AD7B388A350418FC2F5A822575541E17A145E84A350417B14AEB72257554152B81EF580A35041295C8FB2225755411F85EB917CA35041E17A14DE22575541EC51B87E7CA35041333333232357554185EB51187CA35041A4703D9A245755411F85EB217BA35041A4703D2A275755411F85EB917AA3504185EB515827575541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000DA874215A3A35041CD6FFB49895755414FC2F5C8A2A350411D0AD7A38857554129AAD0F0A1A3504197ACE101875755412D33FA1EA1A350412C831E6C85575541922211A29FA3504189F4D711855755412B8DF3D49EA35041BC4134F884575541C52C47A19DA3504109720A9285575541F931E2A09CA350414BEAA112875755412B2DC87A9CA35041B29CC452885755415485EB61A0A350413E3333538E575541176DAB54A4A35041AC806FEC935755417B14AE77A4A35041E17A141E94575541AE1E85CBA7A35041300AD79398575541F3D6A3D0AAA350410185EB2195575541EE8A994BAAA3504151B53A71945755414B658B56A9A35041E982C52B93575541295C8F32A6A350410B0000008F57554148E17A84A4A35041A49999698C575541B039AD75A4A3504102AB5D498C57554105C5A8ABA3A3504134A579918A575541DA874215A3A35041CD6FFB4989575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608179 - 407664
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000050000001500000085EB518800A4504114AE47B11C56554166666676FEA35041C3F528EC1F565541EC51B80EF3A35041AE47E1DA21565541E17A146EECA35041D7A3709D2F56554152B81EE5E9A35041CDCCCC1C3856554148E17A44E9A350419A9999193B56554185EB5138EFA35041B81E85DB3A5655410AD7A3D0F8A35041B81E85CB395655417B14AE97FFA35041295C8F2239565541A4703D2A05A45041EC51B83E38565541EC51B8CE0CA4504152B81E9537565541A4703DCA0EA45041F6285C3F335655416666660610A4504114AE470131565541A4703D7A10A450418FC2F5483056554152B81EE516A45041D7A370FD24565541713D0A9714A45041D7A3707D245655413333330311A450413D0AD753235655410AD7A3A010A450415C8FC275235655413D0AD7F30CA450418FC2F5B8245655413333334306A45041713D0A572056554185EB518800A4504114AE47B11C5655410800000052B81EF50AA450418FC2F518285655415C8FC25508A45041A4703D7A2A5655411F85EB5106A45041CDCCCCFC295655419A9999A907A45041D7A3705D27565541F6285CAF06A450410AD7A330245655411F85EBE108A4504166666646235655413D0AD7430BA45041CDCCCCDC2456554152B81EF50AA450418FC2F518285655410900000066666636FBA35041EC51B8AE29565541F6285C4FFCA35041713D0AF72A565541D7A370ADFCA350418FC2F5382D565541CDCCCCEC01A450418FC2F5482D565541F6285C8F01A45041E17A140E2F5655410AD7A3B0FEA35041AE47E18A2F565541333333B3FBA350411F85EB612E565541AE47E16AFAA350417B14AEE72A56554166666636FBA35041EC51B8AE2956554109000000A4703DFAF7A35041E17A143E345655415C8FC2B5F8A35041D7A3704D3456554152B81E05FEA35041D7A3705D3456554148E17A7408A45041F6285C6F3156554114AE471109A45041333333633356554148E17AB400A450411F85EB313656554148E17AE4F8A350410AD7A37036565541E17A144EF7A35041713D0A6735565541A4703DFAF7A35041E17A143E3456554106000000000000A0ECA3504185EB5128355655415C8FC2D5F0A35041D7A3705D345655410AD7A3B0F1A350416666668635565541F6285C4FEFA35041C3F5281C3756554114AE4771ECA35041D7A370FD36565541000000A0ECA3504185EB512835565541
+</a>
+
+<b>
+0106000000010000000103000000010000006F010000EF94229BF5A35041872744F9A8565541C5FF82ABF5A3504102585A98A9565541A4446FBAF5A3504168C4A81EAA565541D331BACEF5A35041D31B4BD5AA565541CE05D7DBF5A3504189453B52AB565541CF6154EBF5A350417FE45C04AC565541EDE250F9F5A3504185AE34A5AC5655419658400AF6A350413074F667AD56554113639A16F6A350417159D0FBAD565541285B0D29F6A350418C0B2CCAAE56554151E401F1F6A35041E0A2307AAE56554193BA7B03F7A35041A6513ED1AC56554139AB1C0FF7A35041D3A7C8C5AB56554109527018F7A3504173C1DA09AB56554130380309F7A3504129C0FC2FAA565541115633FAF6A35041A8CA036DA956554102D5A2E8F6A350414FF31198A8565541EFE088E4F6A35041E8457598A856554189B4CEDAF6A350414A5B2307A856554191EF75CDF6A3504149499B4EA756554122A1ECBDF6A350415BFE3F92A656554199F5719FF6A350416A80BB20A556554178D0708EF6A3504184B09352A4565541438D766DF6A35041E407C5C2A2565541199C0D56F6A350418DF7F4A6A15655414F7C1C37F6A350415962D42FA05655417131D924F6A35041E5FB6A529F565541ACE06402F6A35041D3F5B4B09D565541406A32D8F5A35041F92A20B19B5655412E9824C8F5A35041D18D19EF9A565541F15421C8F5A350411D2CFDEE9A5655418C1BB99DF5A35041E36AB1B3995655411D665E6AF5A3504107EE953598565541F7A0432BF5A3504109A40C6096565541C7AE19EBF4A3504167A3A18294565541D10C2DC1F4A350414357B04A935655415292138CF4A35041749D98BF91565541A64C456CF4A35041D12BF1D290565541DDF2792BF4A350414E38D5F08E5655415D21DBE4F3A3504147D85FE38C565541353835A0F3A35041D44997E48A5655419FE9676DF3A350415EEA976A89565541D6A33659F3A350414A6459D4885655410F0E0927F3A350411C48C9D787565541A647F6E1F2A350418AFB1D7C86565541867A24A8F2A350419C9517598556554114320551F2A35041ABBA93A283565541D3643C01F2A3504150E5FE108256554146B310B3F1A35041AE5F8987805655412A812251F1A350417DB99E9A7E56554134C8F7D6F0A3504148E0C42E7C5655411B357B90F0A35041F350C3C37A565541D4CBF844F0A3504192B2E33E795655414F93DE12F0A35041F7A8DC3C7856554192BA14C7EFA350412E268DB6765655414870C476EFA350415FA7EF1875565541962A4823EFA350416F73FC6A735655417EE652EFEEA3504136EE665F7256554102FB7ACDEEA3504130BE1BB171565541CB08F96DEEA35041F1843EC56F565541FE3BC731EEA35041730C3E8F6E565541B6EA86E1EDA350410CD0F2F16C5655412D6C459DEDA35041758D20D46B5655418EBB3D09EDA3504148584068695655411B944CCAECA350416A82AE606856554131D15441ECA35041C100212366565541C8EE9EBAEBA350413A5B07EF6356554148A2E320EBA350414009476B61565541DAD80FBAEAA35041AB2CB0BC5F565541F3588B4FEAA35041F153A5FE5D565541CF9FFA04EAA35041E24B67C65C56554130A7E88CE9A350417E099CCF5A5655411252D0E1E8A35041402326035856554140FD158FE8A3504127425FAB55565541C6A0EB37E8A35041DF296C33535655412B33E9F2E7A350411F941A3F5156554164F9F5B3E7A350415AF507B24F56554148E17A94E7A3504114AE47F14E565541F9CDF589E7A3504151F6E6FC4C5655410B04417FE7A35041DBCAAB044B565541B87C2175E7A350411D8BF52A49565541FFC0BB6BE7A350417A18FB73475655413D0AD763E7A3504185EB510846565541AE47E1AAE7A350418FC2F54844565541784BF5B0E7A35041FFD5E422445655415AAD96F8E7A350412C00EE5A42565541E9C8DB19E8A3504127DD7348415655415BBFCD43E8A350411FE33C8B40565541E17A144EE8A35041AE47E14A405655412D1BC762E8A35041C5FC54C93F565541A0F217A2E8A350410E43093D3E56554185EB51B8E8A350411F85EBB13D5655417CD6EA0DE9A35041044B361C3C565541CC063B5BE9A35041F21749AD3A565541CD4E46A1E9A350419E0CCF5F3956554152B81EE5E9A35041CDCCCC1C38565541DA40F650EAA3504153634EB336565541E6987E03EBA350418E2EDA5C345655412DF29870EBA350416FAB21EF32565541F1D124B5EBA35041D94339BF31565541A9EB8BF9EBA3504156D59098305655418827A029ECA35041F0BF74C92F565541C68B8F0BEDA35041F86E73002E5655419DA141C3EDA35041AA7CE28C2C56554166F3649CEEA35041987FACD52A5655415F589243EFA35041560A8583295655411667090FF0A350419720F7E7275655411254DFE2F0A35041B2C67A3B2656554164BF8375F1A35041D1BEDC1225565541676BE307F2A350418BC5C9EA23565541845DFFAAF2A350415AE1DCA022565541EC51B80EF3A35041AE47E1DA215655418AA5E0ABF3A350414C2F40C021565541C8FFD04EF4A350419BFAF1A2215655418C9A8595F5A35041454E6B632156554171916DF2F6A35041E988931F21565541690D5B72F7A350415A94B3062156554132C25360F8A35041F7E26DD820565541EC476F29F9A350419E3353B12056554150A51633FAA350411C8CAB7D2056554178A78315FBA35041CA92A45120565541DA3F0282FCA35041B1D8C40A205655410E5D02DBFDA35041A97DAFC71F56554117169648FEA350413BFD60B21F56554108BA7036FFA350412346C9421E5655416CBB6BDAFFA3504165A15C451D565541487716A900A4504101AEF7051C565541475DB26C01A4504106A8A9D71A565541F3E03D4802A4504167AE5D8419565541BA1928FC02A450415CCB506E18565541A0182DB803A450415470BD4B17565541617F2CB404A450418E004AC615565541072C312805A45041F5F5FC1215565541C7F3AB3604A45041DCD3A106145655418A12312203A45041A9A06ED3125655414FDADAE502A450414829649012565541F9429E5001A4504165D620CE105655415688911500A45041A2B112700F56554164BD8388FFA35041ABB358D30E56554114546A4500A4504169616F6C0D56554168CD6C1801A45041D74684DB0B56554102BA050E02A4504155BBCFF80A5655412648FF0203A45041F24BAE160A5655418E5FD53304A45041CD224BFD0856554100009FD104A4504129B6A46B085655413559C35205A450418A98DAF207565541566762F305A45041CE5F465A07565541C57EEFCC06A45041DA0F728806565541E278679F07A450415A8272BD05565541F3F6ED3D08A4504141758C2405565541DF88051009A45041F1E3E95904565541E7BCFA8D09A4504111346DE00356554192A1337D0AA450410201B2F9025655414C02BC1A0BA450413C0CC161025655417A2DF20B0CA4504131A61A790156554140DB7DAB0CA45041A9AE38DF0056554185EB51F80CA4504152B81E950056554137FA01470CA450419054C5C3FF555541A05E3EED0BA450415AC0C959FF5555413269D5200BA45041FBD4FE99FE55554121E3DCF90AA4504147FCBC78FE555541AF4484A70AA4504119BA20C4FE5555415047C83209A4504129B25F19005655414C536D7D08A45041808768BF00565541B311CB0808A45041FA60302A0156554149908D8506A4504123929AAE025655411ED86E2006A45041A64AB91303565541BA1579B705A45041660DAF7C035655415B7CDF3D05A4504130A748F6035655412D9B64F904A450419A88C33A04565541D853833E04A4504192D0A4F504565541067DDFBD03A45041D5A748760556554113B14C4803A450412F74DBEB05565541E65788B402A45041A7A6D08906565541C852FA4302A45041B6D72102075655414C13C18401A450414C2C8BCE075655410EC57EF600A4504150159D66085655417710D3A900A450410D6C92B808565541CDE973CDFFA35041DC4424A40956554113DC944EFFA350414341C32B0A56554146348FC0FEA350410C5594C30A565541674B70D1FDA35041704E52720B5655416921A365FCA35041E1282D7C0C5655417815CBEFFBA35041710A4BD20C565541ACECAAC7FAA35041168157F40D56554101613D38FAA3504118C805810E565541DCFB5DF7F9A35041EB13DCC30E565541E3DE29D8F9A3504130B9D9E80E56554109213E25F9A35041343B4ADB0F5655411404F3A1F8A350414F82D18F10565541BFD0BF6EF8A350419CE837D610565541A5F70E2CF8A350412605763111565541191D1FABF7A350419655A9D6115655412F933A45F7A350419F26365912565541519E3EF9F6A350419BF890BA12565541559B8AB8F6A35041A49C770D13565541418740C1F5A350412D874E4A14565541531EBA22F5A3504123BE6A15155655412641E7C7F4A35041D1E9C889155655413DAC9A5DF4A35041F408FB11165655419D4C4995F3A35041224CA312175655412FC1F731F3A350411AC7E39117565541197EACFFF2A3504133EE2ADD17565541B2E7DEBFF2A35041E84FDF3C1856554176FF5821F2A35041832CA82A19565541DB9DA4C1F1A3504112BF36BA19565541B093CD5DF1A350417C4EF94F1A56554184E6F8D2F0A35041785238201B5655413232197EF0A3504115E1879F1B5655413D80922CF0A3504126ECD1191C565541A0E32C79EFA350415B57EA261D565541FEC4A70DEFA350417B0532C81D5655412AF1CFB6EEA350415BC3754A1E5655411C0C16F2EDA35041429B8C711F565541A6E7C286EDA35041C532561220565541A8CF51C0ECA350417313533821565541DEB75145ECA35041F0198CEE2156554147FF7DBEEBA3504166804AB622565541AA9719F2EAA35041DE2218E523565541DE236191EAA350417149627424565541237CA89EE9A35041A896F8DB2556554158947E50E9A35041110E9850265655410219FB62E8A350412F988CC5275655411DAE36E7E7A350410CFCE48728565541A6DCB81EE7A35041273EB7C2295655413C5ED2B0E6A35041605F496F2A565541F7416F1FE6A350413E9A94532B565541FA5232A5E5A35041034486132C565541461CF5BCE4A35041AF8C32802D56554166CF0EA0E4A350410CB793AD2D5655419DAEF66BE4A35041313AF47D2E565541E6F63E34E4A350410B19D35C2F5655415969B106E4A35041414F09133056554158CD7BB7E3A3504146BFDF4F315655413C4B9388E3A35041B6C7810B32565541D5022074E3A3504152E94E5D32565541376E3069E3A35041988F2A7534565541B59C8B63E3A3504128C4B68935565541672A2160E3A3504164B5163136565541AE956994E3A35041E19A999737565541179EBDB6E3A35041B46AFE8238565541F92019ECE3A3504108A9DFF0395655413EAA9CF4E3A35041C2CEAA0C3B565541EBA999FBE3A35041B20C9CF53B565541DA04DB04E4A35041F67D1E2A3D5655414A6A170AE4A350417E54A6D83D5655415381953AE4A350410892B6683F565541B2A2B74FE4A350411B251017405655417D470B5EE4A350418134428D40565541E65C5984E4A35041BF6446C941565541D41476A1E4A35041DD5173B942565541F13D0EAAE4A35041F2A45A0043565541732B85BEE4A35041576F405C44565541D91F57CAE4A35041DBAC312545565541A43C4DD6E4A35041189989F045565541EF02B2EBE4A3504109C93A5C4756554120061BF5E4A35041780134FC4756554111B7BC00E5A350411AB3A787485655415B565E13E5A35041608F4B22495655411FA33A46E5A3504151B4A7984A5655416EC9E165E5A3504107299B774B5655416E1D5979E5A350416ACCB7004C565541A414E3AAE5A350416FAAA65D4D5655418ADBF0CBE5A35041602778464E565541F5357AEDE5A35041B710B0324F565541C802DF10E6A350414FD7FC2B50565541E8324B23E6A35041F1D8BFAD50565541EDDE1945E6A35041A0E1375B51565541799B018AE6A350412DCBE0B35256554199A3679FE6A35041C46D16505356554119BE81CFE6A350415D643BAF54565541DD0D9BF3E6A35041F0F8C0B65556554111D54611E7A350414FA12C545656554198411436E7A3504198194D0C575655416773CF73E7A350419C2E663E5856554182AC7DA6E7A35041274DA22359565541C0CA3FE8E7A35041FA3B114D5A56554158754A23E8A3504149DC1E585B56554191960465E8A3504137A969815C5655410CECBFA0E8A35041B460968F5D5655415C8FC2D5E8A35041F6285C7F5E5655419CC26323E9A350417009BA485F565541B5E8AE97E9A35041B397627660565541227B24F8E9A35041C13898706156554198933A99EAA35041A057711263565541B0A022F8EAA3504195D39F0864565541BADA693AEBA35041C5C88BB464565541F6285C4FEBA35041AE47E1EA64565541CAF78786EBA35041CA17631666565541CB85F5ADEBA350414FE66DEC66565541E8DB57CCEBA35041FE1860916756554155BB1E02ECA35041223850B56856554152ADAF34ECA350416159D2C76956554151500555ECA3504156185B776A565541F0043393ECA350414D6DE7C86B565541D6A57DB8ECA35041B62359936C565541FFB1FDEAECA350415F897FA56D565541D384F204EDA350411C903D176E565541DB639219EDA350415405DD6D6E565541A4287C41EDA35041AFC7BB426F565541B5144A71EDA3504186B0B041705655419D331191EDA3504194FE2BEB70565541CACF0FB5EDA35041379324AB715655418218C0E3EDA35041EB1426A47256554142EF3102EEA35041883785467356554187A28409EEA35041F79D936D7356554153B8050DEEA35041D1DDAFC8735655411668C725EEA35041609962527456554114AE4741EEA350417B14AEE774565541930B1A44EEA3504137080BFB74565541FFA07061EEA350414B825DC47556554196D16388EEA35041B7F1A4CF765655412C9A7EA8EEA35041352BF3AB775655412C3A8AE3EEA350413B4D204179565541A62EFEFCEEA350411586C9EF7956554161E4A225EFA35041A6D2AF067B565541E1448F42EFA350414B7F29CD7B565541C994FF66EFA35041D36E35C77C565541356CF081EFA35041615714807D5655413A76D296EFA35041DB77610F7E565541EEBFFEBBEFA35041A050770E7F565541C28673DEEFA35041197CE8FA7F565541E6AD8012F0A35041EB3117608156554146522440F0A35041E93004928256554185B1BD7EF0A350418F36A41F8456554144F50AA8F0A3504149D6FC2585565541D14AADDCF0A3504120D95074865655412D1B0607F1A3504114ED4C818756554124575136F1A350413837B5AD885655411EE6B65AF1A3504107AFE594895655416297EB98F1A350412E3206208B565541F8E45DB7F1A35041D70D6BE18B565541E1A008C4F1A3504170ABE0318C56554152DCEDFFF1A35041BB8E0F5E8D565541215E8F2AF2A35041CDA1A92F8E56554147D2165CF2A35041FF462E238F56554183674469F2A35041400FF9638F56554116A00D7FF2A35041EEFBFB1490565541195BBBA8F2A35041518D9F6791565541615934C3F2A3504197A0B63E92565541FCAD4CDCF2A350412C519C0A935655417AAF56E5F2A35041B79D0D5493565541BEB17D0CF3A3504112053758945655412C5FC82AF3A35041C72DA0189556554147501F5EF3A350419135BB5E96565541956D737BF3A35041B737061997565541857166A7F3A35041B6DD2F30985655410E9309C7F3A350412CF824F998565541AF20B0F2F3A350418BEF680E9A565541EE79330AF4A35041D168C3A39A565541771B1A34F4A35041A534EAAD9B565541F126354AF4A35041300E543A9C565541CE734366F4A35041D98389EC9C56554185EB5168F4A350419A9999F99C565541DBBF6E78F4A35041832B777A9D565541012076A5F4A35041F9D698E29E565541798B14B9F4A35041E928817F9F565541701F92DBF4A35041C8605A93A056554111B34A01F5A35041AAC409C1A1565541CEE3892AF5A350419415EC0AA356554166A39E40F5A35041DDA585BBA3565541CDD44F64F5A350412E1CFBD8A4565541CF9C697AF5A35041F5ECBC89A5565541B81E858BF5A35041295C8F12A656554173576C91F5A35041FB2A562BA75655415EEEEA95F5A3504135181C01A8565541EF94229BF5A35041872744F9A8565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608285 - 200822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCC3C51A15041666666F6A85455418FC2F5485CA15041EC51B89EA85455410AD7A33065A15041EC51B81EA95455411F85EB21A5A1504114AE47B1B5545541C3F528ECA7A150413D0AD773B35455416666660666A1504148E17A94A7545541333333035FA150418FC2F508A7545541295C8F125CA15041CDCCCCDCA65455413D0AD7A342A15041F6285C3FA95455418FC2F5482FA15041713D0A97AD545541295C8F522EA15041A4703D4AAF5455411F85EB5144A150413D0AD7A3AA545541CDCCCC3C51A15041666666F6A8545541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000016B4E95144A150418A6CD7A3AA545541F844889A4CA15041D7A87390A954554182CCCC3C51A15041316666F6A854554185C2F5485CA150416B51B89EA854554120D7A33065A15041B651B81EA9545541D184EB21A5A1504153AE47B1B554554155F528ECA7A15041950AD773B35455418766660666A15041D3E17A94A75455411E3333035FA15041A5C2F508A754554108145CBF5CA150415D52F0E6A6545541725C8F125CA15041D1CCCCDCA6545541E6AD691459A1504149C1A524A75455413D0AD7A342A15041F6285C3FA95455419792C2472FA1504102CE2899AD54554109620C562EA1504118271444AF54554116B4E95144A150418A6CD7A3AA545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608285 - 322967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCC3C51A15041666666F6A85455418FC2F5485CA15041EC51B89EA85455410AD7A33065A15041EC51B81EA95455411F85EB21A5A1504114AE47B1B5545541C3F528ECA7A150413D0AD773B35455416666660666A1504148E17A94A7545541333333035FA150418FC2F508A7545541295C8F125CA15041CDCCCCDCA65455413D0AD7A342A15041F6285C3FA95455418FC2F5482FA15041713D0A97AD545541295C8F522EA15041A4703D4AAF5455411F85EB5144A150413D0AD7A3AA545541CDCCCC3C51A15041666666F6A8545541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000016B4E95144A150418A6CD7A3AA545541F844889A4CA15041D7A87390A954554182CCCC3C51A15041316666F6A854554185C2F5485CA150416B51B89EA854554120D7A33065A15041B651B81EA9545541D184EB21A5A1504153AE47B1B554554155F528ECA7A15041950AD773B35455418766660666A15041D3E17A94A75455411E3333035FA15041A5C2F508A754554108145CBF5CA150415D52F0E6A6545541725C8F125CA15041D1CCCCDCA6545541E6AD691459A1504149C1A524A75455413D0AD7A342A15041F6285C3FA95455419792C2472FA1504102CE2899AD54554109620C562EA1504118271444AF54554116B4E95144A150418A6CD7A3AA545541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608347 - 200893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000666666C6AAAF5041333333635F495541000000A0A3AF504114AE47216B49554152B81E75A1AF50419A9999A971495541D7A3702D9DAF5041713D0AF783495541333333B3ABAF5041A4703D5A8649554185EB51D8C2AF5041000000908B495541E17A146EC8AF5041F6285CAF7D4955411F85EB81D2AF50410000009086495541F6285C0FD8AF5041AE47E16A8949554152B81EA5DFAF5041E17A14BE8649554185EB51C8D7AF50413333339381495541333333F3D2AF504148E17AB47D495541F6285CDFCFAF5041295C8FF27949554133333323CCAF504114AE4761744955419A999999C7AF50413D0AD75370495541EC51B83EBAAF50413D0AD7D368495541AE47E1EAB3AF5041000000F064495541B81E854BABAF5041333333835E495541666666C6AAAF5041333333635F495541
+</a>
+
+<b>
+0106000000010000000103000000010000002600000004AF94C1CDAF5041DAD5F7CA76495541408853D8CDAF50411A8BDFEC76495541C4995B90CEAF504193EF86DC7749554151A0F21AD0AF504190ED255A774955419D0ACEE7D1AF5041274C57047949554189CE4464D3AF5041643546C97A495541777661AAD4AF50410D4882ED7A495541B9279C02D6AF50416719EC927A495541FAEE79B4D6AF50411AA6363579495541C16AD154D8AF5041B190944677495541CE789522DAAF5041A7D508D875495541BE243BD0DBAF5041F6F2FF657649554158C33904DDAF5041A8B12DE7754955414DDF6717DEAF5041B40A131975495541AE1F2C50DFAF5041AA0FC1E173495541CCE31754E1AF50411C331C7E72495541E5C9E0F5E2AF504165B20F0D71495541D413EF99E5AF5041F690F8A86F4955411E37786DE7AF5041E568A77E6E4955414EE2DE6DE9AF50415A1C42526D495541F5B83BA9E9AF50418291ED356D4955417ABB8D3EE9AF5041D787D43D6D4955414F67ADAAE7AF5041BD38BF5B6D495541AFF021BAE6AF5041D2A9906D6D495541521C11C3E5AF504108C3DD7F6D4955418FC08418DFAF504139F946FE6D495541C5200DCCDEAF5041BEE9A90C6E495541E1185302DDAF50410F9E28A56E49554194693685DAAF5041C585CBA46F4955414C86863BD8AF50410C93480A704955413277AD00D6AF5041E331877570495541CE66FAF1D3AF50413B087039714955412B48B7B1D1AF5041230DD1B87149554119CDC488CFAF5041BE7875A3714955418C854001CEAF5041592E9D8D724955416E714998CCAF5041A822ACE6734955413035CB32CCAF5041854886787449554104AF94C1CDAF5041DAD5F7CA76495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608407 - 201058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB2194A2504152B81EF5975255418FC2F5F889A250410AD7A3C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E99525541EC51B8FE85A250415C8FC2B59B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA152554185EB51E88BA25041CDCCCCACA2525541E17A14DE8FA250419A9999D9A6525541C3F5289C93A250418FC2F5C8A8525541EC51B8DE94A25041B81E859BA75255417B14AEE796A25041F6285C2FA45255418FC2F5B897A25041295C8F12A35255416666660692A25041E17A142E9B525541F6285C3F93A2504133333373995255411F85EB2194A2504152B81EF597525541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000F54AF5F889A250419D91A6C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E995255412E971D3785A25041570627369A525541D5E2B8FE85A250419E0BC2B59B5255411AC1140186A250414DFEB0B99B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA15255419C1553E88BA25041B189CCACA25255416666660692A25041E17A142E9B5255411E8531D592A250419C9670099A525541F7F05B3F93A250416E72327399525541954BEB2194A25041848F1EF59752554131474F0A8EA250419DE71DA3935255416B6AF6F889A250411B1DA5C090525541F54AF5F889A250419D91A6C090525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608407 - 419296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB2194A2504152B81EF5975255418FC2F5F889A250410AD7A3C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E99525541EC51B8FE85A250415C8FC2B59B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA152554185EB51E88BA25041CDCCCCACA2525541E17A14DE8FA250419A9999D9A6525541C3F5289C93A250418FC2F5C8A8525541EC51B8DE94A25041B81E859BA75255417B14AEE796A25041F6285C2FA45255418FC2F5B897A25041295C8F12A35255416666660692A25041E17A142E9B525541F6285C3F93A2504133333373995255411F85EB2194A2504152B81EF597525541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000F54AF5F889A250419D91A6C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E995255412E971D3785A25041570627369A525541D5E2B8FE85A250419E0BC2B59B5255411AC1140186A250414DFEB0B99B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA15255419C1553E88BA25041B189CCACA25255416666660692A25041E17A142E9B5255411E8531D592A250419C9670099A525541F7F05B3F93A250416E72327399525541954BEB2194A25041848F1EF59752554131474F0A8EA250419DE71DA3935255416B6AF6F889A250411B1DA5C090525541F54AF5F889A250419D91A6C090525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100085 - 389877
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003400000052B81E55B08550410AD7A310011F54413D0AD7C3B485504148E17A54071F5441CDCCCCBCB7855041AE47E1BA0A1F5441CDCCCC4CBC8550411F85EB010F1F54415C8FC2E5BE855041AE47E10A111F544185EB5198C185504185EB51B8121F544148E17A84C485504114AE4731141F544133333393C7855041D7A3703D151F54418FC2F5C8C7855041000000C0141F544114AE47A1CB855041E17A141E051F5441F6285CAFCF8550419A999979031F5441666666C6D585504148E17AB4081F54419A999999D7855041B81E855B0C1F54413D0AD773DE855041295C8F12141F5441A4703D0AE28550419A9999F9181F5441A4703D4AE78550411F85EB511F1F5441D7A370DDE9855041F6285CEF221F5441B81E859BEB85504185EB5128271F544152B81E05EC855041B81E852B291F54418FC2F5D8F38550415C8FC265311F5441333333A3F6855041A4703DFA361F5441CDCCCC7CF985504114AE47B13C1F54413D0AD7E3F685504148E17AD43D1F5441333333F3F8855041666666E6421F5441E17A14AE0286504148E17A143E1F5441C3F5283C09865041E17A148E3A1F54411F85EB5117865041AE47E13A331F5441893199521D865041DD345816301F54415A4E033B2286504112208EB02D1F5441B9BE55BD168650414623E3E8211F5441EA9706AD1486504131599EE61F1F544104CF288E12865041632E20A11D1F544129EBC27E11865041687E631A1E1F5441465964AF0E865041BBA7C0411E1F5441DCD9D3280D8650411762395B1E1F5441039CB7640A8650412A1E95801E1F5441A62E762E028650412BD1C22B161F5441ABC80D34FB85504191427C140F1F5441D8B77497F5855041BF533565091F5441E99C40C0F1855041DD11067D051F54410CC071A0EE855041477CA14F021F54418FC2F598EB8550419A999999051F5441713D0A47E3855041A4703D2AFF1E5441D7A370FDCF855041EC51B83EF01E5441AE47E14AC88550418FC2F5B8F61E54419A9999D9C2855041F6285C4FFB1E54415C8FC2D5BD8550417B14AEF7F51E54418FC2F548BD8550419A999959F51E5441EC51B87EB7855041666666D6EE1E54417B14AE37B1855041AE47E16AF31E5441B81E852BAB85504152B81ED5F71E544152B81E55B08550410AD7A310011F5441
+</a>
+
+<b>
+010600000001000000010300000001000000120000004061D673DE855041E79D8E12141F54416995F498EB855041B1B09899051F5441713D0A47E3855041A4703D2AFF1E54410064D51BD0855041952E3B56F01E54413F7670FDCF8550414C78B83EF01E5441419D91A2CE85504100529D62F11E5441BE83E14AC88550417979F6B8F61E544188E8E3ECC28550410DA5193FFB1E5441865390FAC785504146DB69A6021F5441F1719CD3CB855041646FB109051F5441DDFB310FD0855041019E79F4021F5441A8ED5596D4855041A3A85AAF071F5441979967C6D58550411E247AB4081F54412FB99999D7855041B5BD845B0C1F5441599E8D55DB855041F7AFCB8F101F5441E834AAF8DD855041A399E187131F54412798FA0ADE8550414319809C131F54414061D673DE855041E79D8E12141F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3067940
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441AE47E1AA98A85041A4703D3A19E15441AE47E13AB5A850415C8FC23519E15441713D0AB7B7A85041CDCCCC0C22E15441333333F3B3A85041333333F322E1544148E17A04ACA85041AE47E13A23E15441D7A370ADA4A85041CDCCCCAC22E154415C8FC2B59CA8504152B81EE521E15441295C8FB297A850410AD7A38022E1544114AE47E192A85041EC51B8FE23E15441713D0A578BA8504152B81E3526E154415C8FC2C586A8504152B81E2528E15441C3F528DC82A85041666666C62AE154417B14AE377FA8504148E17AD42EE15441AE47E11A81A8504148E17A442FE154415C8FC22582A85041E17A146E2DE154411F85EB2184A8504148E17A742BE15441295C8FC287A850419A99994929E15441295C8F328CA850411F85EBF127E15441A4703D4A9AA85041AE47E15A26E15441A4703D5AA4A85041CDCCCC1C26E154411F85EBE1A9A850416666661626E15441D7A3708DB8A850413D0AD7F324E154415C8FC255C0A85041AE47E11A23E15441333333E3C4A850415C8FC20522E154417B14AE17C2A850415C8FC2151EE15441B81E85DBCBA850417B14AE1717E154419A999919CFA8504152B81E5512E1544185EB51D8D2A85041000000D010E15441F6285C8FD7A850415C8FC2A50CE15441713D0AA7D7A85041CDCCCC8C0CE1544152B81E25DDA85041D7A370BD07E154417B14AE87DEA850417B14AE1706E15441713D0A97E1A85041EC51B8BEFFE054415C8FC255DCA850418FC2F558FFE05441E17A145ED9A850416666661600E154419A9999E9D6A850417B14AE5701E15441713D0A77D0A85041B81E857B06E1544133333353CEA85041EC51B8FE08E154410AD7A3C0CAA85041666666260CE1544114AE4761C5A850419A99990910E15441B81E85FBC1A850417B14AE3711E1544100000030BFA850410AD7A3A011E1544133333373BCA850410AD7A35011E15441D7A3709DB7A850415C8FC2150FE15441295C8F82B1A850415C8FC2F50BE15441F6285C9FACA850415C8FC27509E15441C3F5287CA9A850413333339307E15441B81E857BA6A85041F6285C8F05E15441295C8F02A3A850411F85EBF102E15441E17A142E9DA85041EC51B88EFEE0544152B81EA598A8504185EB51D8FBE054410AD7A3B093A850415C8FC205FAE0544148E17A448FA850413D0AD753F9E05441295C8F828BA85041CDCCCC5CF9E054419A99998986A85041B81E854BFAE05441EC51B8DE82A8504185EB5178FBE05441000000407DA85041E17A141EFEE054411F85EB017BA850410AD7A3B0FFE05441333333537EA8504148E17AF402E1544114AE47B181A85041713D0A3702E15441AE47E16A84A85041E17A14BE04E1544148E17AB48DA85041D7A370ED02E15441713D0A978EA85041F6285CDF02E1544114AE47518FA850419A99993905E15441000000908EA85041333333330AE154413D0AD73386A8504185EB51180DE15441AE47E1CA85A85041B81E853B0CE15441F6285CEF82A8504185EB51D80CE15441010300000001000000050000007B14AE975BA85041F6285CFF57E1544114AE47715FA8504152B81E455CE154413D0AD7F362A850413D0AD77359E15441295C8F1260A850411F85EB4155E154417B14AE975BA85041F6285CFF57E154410103000000010000000F000000B81E851B8BA85041000000C0A9E15441EC51B8CE87A85041E17A14CEA8E154417B14AEC782A85041AE47E1BAAAE15441A4703D1A7FA8504185EB5198A9E15441E17A146E7DA850417B14AE87ACE15441D7A3700D79A850419A999909B8E15441B81E85AB76A85041EC51B8AEBEE154415C8FC27576A850419A999919C1E1544148E17A547CA850418FC2F538C2E15441CDCCCCFC80A85041C3F528FCC5E15441713D0A4781A85041C3F5282CC5E154416666661684A850417B14AEE7BCE15441CDCCCC1C89A85041EC51B88EB1E1544185EB51588AA85041A4703D7AADE15441B81E851B8BA85041000000C0A9E1544101030000000100000014000000666666C65AA85041C3F528EC3FE1544152B81E3555A85041C3F528BC3DE15441E17A142E52A85041333333233DE154411F85EBF150A850417B14AEC73DE154417B14AE2757A85041CDCCCC4C42E15441D7A3704D5CA850417B14AEE746E154410AD7A39063A8504114AE47D14DE15441EC51B88E64A85041C3F528EC4DE1544185EB517860A85041A4703D9A53E154410000007064A850417B14AEB758E15441EC51B8BE67A850416666668656E154410AD7A3B06EA85041D7A370BD52E15441CDCCCCFC6DA850413D0AD7734FE1544114AE47916EA85041C3F528BC4BE15441333333A36FA8504114AE475149E1544148E17AF470A85041EC51B88E47E15441C3F5286C70A85041713D0A7746E15441E17A141E63A8504114AE478142E15441E17A14AE60A85041E17A14CE42E15441666666C65AA85041C3F528EC3FE154410103000000010000000B000000EC51B8AE74A85041AE47E13ABEE15441713D0A2777A8504152B81E75B7E15441AE47E1EA7BA8504152B81EF5ABE15441EC51B88E7CA8504100000010AAE154410AD7A34079A8504152B81EB5ABE15441A4703DDA76A850418FC2F598B2E15441C3F5284C71A85041CDCCCC1CBAE15441295C8F226EA85041B81E85DBB9E154413D0AD7F36CA850418FC2F5C8BCE15441713D0AE773A850419A999919C1E15441EC51B8AE74A85041AE47E13ABEE15441010300000001000000080000009A9999B973A850410AD7A31065E15441EC51B8AE6CA85041D7A370BD68E154417B14AE876BA850419A9999F96AE154411F85EB216CA85041666666166CE15441B81E85FB6FA850411F85EB216AE1544148E17A0476A850410AD7A3906AE15441A4703DDA74A85041295C8F1268E154419A9999B973A850410AD7A31065E1544101030000000100000017000000295C8FF25BA850413D0AD71383E154413D0AD7635AA850410AD7A3D07DE154419A99999959A85041713D0A177BE15441AE47E16A59A85041666666767AE15441CDCCCC6C5CA850418FC2F5A876E154419A9999395CA85041EC51B8CE74E15441666666765FA850415C8FC2E572E15441CDCCCCFC5AA85041F6285C3F6AE15441666666E656A85041CDCCCC0C68E15441A4703D3A50A8504114AE474169E15441713D0AE74EA8504185EB51B869E15441D7A3709D46A85041A4703DEA5CE154419A99996945A8504148E17AE457E15441666666D63DA85041E17A14DE50E15441A4703D2A3DA85041B81E859B51E15441C3F5288C37A85041E17A147E4CE154418FC2F5A82FA850410AD7A3704AE154411F85EBF143A85041000000C065E15441295C8FC24AA8504148E17A146FE154415C8FC28555A8504152B81EB57DE1544148E17AB45BA85041F6285C0F86E15441D7A3709D5CA850410AD7A37085E15441295C8FF25BA850413D0AD71383E154410103000000020000002D0000000AD7A3604AA85041A4703D7A27E15441333333C34CA85041A4703DBA2BE15441AE47E1BA4FA850416666668633E154413D0AD7E350A850410AD7A3D035E154417B14AEC752A85041F6285CCF37E15441B81E854B5EA85041666666C63CE15441713D0A0763A85041C3F528EC3FE154410000009064A85041EC51B89E40E15441295C8F0266A85041AE47E14A40E154419A9999B96BA850411F85EB913BE15441713D0AB76EA85041F6285CBF3EE15441F6285C2F75A850419A99999942E15441F6285C7F78A850413D0AD7B340E15441333333937CA85041295C8FD23EE154419A9999F980A85041B81E853B3EE1544114AE47A181A85041AE47E13A3DE15441333333A37EA85041713D0AD732E154410AD7A3207EA85041333333D32EE15441AE47E1AA7DA85041AE47E16A26E1544185EB51087BA850410000009020E154410000002079A85041CDCCCC7C1CE154418FC2F55877A85041E17A148E1CE15441713D0A9774A850413333334318E1544152B81E1573A85041F6285CEF18E15441000000D070A850418FC2F53817E1544114AE47816DA8504148E17A3412E15441CDCCCC2C67A85041D7A3703D16E15441AE47E1BA67A85041AE47E19A17E154417B14AE2760A85041B81E85FB1DE15441AE47E15A60A850413D0AD7D31EE15441B81E850B5CA850413D0AD7A321E154413D0AD7235AA850410AD7A34021E154415C8FC2A556A8504152B81EF51EE154415C8FC24556A850413D0AD7431DE154416666668655A85041A4703D9A1CE154411F85EBE152A85041C3F5281C1CE154413D0AD7E350A85041B81E85FB1BE15441F6285C8F4EA85041713D0AE71BE15441B81E850B4CA85041D7A3707D1CE154410AD7A35048A85041333333D31DE15441C3F5282C47A850417B14AEA71EE1544185EB513845A85041333333F322E154413D0AD77347A85041F6285CFF23E15441295C8FD248A85041713D0AD724E154410AD7A3604AA85041A4703D7A27E15441050000003D0AD7E364A85041713D0A372CE154411F85EBF157A85041A4703DFA26E15441295C8FF25AA8504114AE47C122E15441C3F5283C66A85041A4703D3A29E154413D0AD7E364A85041713D0A372CE1544101030000000100000011000000CDCCCCAC38A8504185EB51782FE154413333334333A85041D7A3704D39E15441B81E853B2EA85041C3F528BC3CE1544152B81EB52EA850418FC2F52849E15441C3F5287C39A85041333333A342E154410AD7A3F03BA8504185EB512842E15441CDCCCC1C3DA85041CDCCCC1C43E154419A99999940A85041000000B040E154417B14AED746A8504152B81EE53DE154413D0AD7E34BA850419A9999293CE15441E17A14AE49A850411F85EB2139E1544152B81ED547A85041333333932FE15441713D0A6746A85041E17A146E2BE154413D0AD79344A850410000006027E154410AD7A3E03EA850417B14AE4727E154419A9999993EA8504185EB51382AE15441CDCCCCAC38A8504185EB51782FE1544101030000000100000005000000295C8F025EA850419A9999195DE15441295C8F425BA8504185EB51B858E15441CDCCCC3C56A850410AD7A3405DE15441E17A14CE58A850419A99991961E15441295C8F025EA850419A9999195DE15441
+</a>
+
+<b>
+010600000001000000010300000001000000280000003895C46787A85041B582908D1DE1544138957E2288A85041D1BBD83D1DE15441357726DE8AA85041D73079431CE15441996219898EA85041A10E4A8D1BE1544122CBE12694A850418EE7455A1AE15441A6FED22E97A85041784A38A519E15441C86FE64397A850411EC668A419E1544149CDAE399CA850415E4C927319E15441CB12DE37B0A85041F76E2E8719E15441485EFB41B5A8504184AC804D19E1544184D5CC88B5A850416B4B658C19E1544188308AF3B1A85041BD72972F0CE1544135982A2DA9A8504110A8FD5D07E154410238CA62A3A850414053323A03E15441386DF8D5A0A85041E2D53FD502E1544189515FD591A850413A617DAC02E15441422B89DC8DA850412379FAEA02E154411C3706C68DA8504198CD086904E15441BE2476C68DA85041BE5C83B704E1544158D922948AA850416EBCBFD905E15441A8A451CC88A850414AF3697B06E15441E18124B688A85041D23F8B5B08E154416C19530386A850414C83DF5E09E15441EE9629E783A8504178A266DF09E1544135B5B3C480A850410C93AF8108E154415601356880A85041D04DE15509E15441F1B4D14980A8504136C861DA0AE15441D5CA18A97BA85041A646012F0BE154416F93ABD779A8504119F3CA500FE1544156A9F23675A85041FE1D34C713E15441842110DE76A85041024C5E9417E154418A0CCC3779A85041DE44A3AF1CE154417B14AE077AA85041000000101CE15441FCFB03CD7EA85041C38828CB25E154416AB97BB97EA8504183AC4DF424E1544150F80EAE7DA8504122F30B9122E154415E2BF2D37DA85041F78F1EE321E154416F27C35A7EA85041C465BF6A21E15441857DB8717EA850411F3AF26021E154413895C46787A85041B582908D1DE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3154733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441AE47E1AA98A85041A4703D3A19E15441AE47E13AB5A850415C8FC23519E15441713D0AB7B7A85041CDCCCC0C22E15441333333F3B3A85041333333F322E1544148E17A04ACA85041AE47E13A23E15441D7A370ADA4A85041CDCCCCAC22E154415C8FC2B59CA8504152B81EE521E15441295C8FB297A850410AD7A38022E1544114AE47E192A85041EC51B8FE23E15441713D0A578BA8504152B81E3526E154415C8FC2C586A8504152B81E2528E15441C3F528DC82A85041666666C62AE154417B14AE377FA8504148E17AD42EE15441AE47E11A81A8504148E17A442FE154415C8FC22582A85041E17A146E2DE154411F85EB2184A8504148E17A742BE15441295C8FC287A850419A99994929E15441295C8F328CA850411F85EBF127E15441A4703D4A9AA85041AE47E15A26E15441A4703D5AA4A85041CDCCCC1C26E154411F85EBE1A9A850416666661626E15441D7A3708DB8A850413D0AD7F324E154415C8FC255C0A85041AE47E11A23E15441333333E3C4A850415C8FC20522E154417B14AE17C2A850415C8FC2151EE15441B81E85DBCBA850417B14AE1717E154419A999919CFA8504152B81E5512E1544185EB51D8D2A85041000000D010E15441F6285C8FD7A850415C8FC2A50CE15441713D0AA7D7A85041CDCCCC8C0CE1544152B81E25DDA85041D7A370BD07E154417B14AE87DEA850417B14AE1706E15441713D0A97E1A85041EC51B8BEFFE054415C8FC255DCA850418FC2F558FFE05441E17A145ED9A850416666661600E154419A9999E9D6A850417B14AE5701E15441713D0A77D0A85041B81E857B06E1544133333353CEA85041EC51B8FE08E154410AD7A3C0CAA85041666666260CE1544114AE4761C5A850419A99990910E15441B81E85FBC1A850417B14AE3711E1544100000030BFA850410AD7A3A011E1544133333373BCA850410AD7A35011E15441D7A3709DB7A850415C8FC2150FE15441295C8F82B1A850415C8FC2F50BE15441F6285C9FACA850415C8FC27509E15441C3F5287CA9A850413333339307E15441B81E857BA6A85041F6285C8F05E15441295C8F02A3A850411F85EBF102E15441E17A142E9DA85041EC51B88EFEE0544152B81EA598A8504185EB51D8FBE054410AD7A3B093A850415C8FC205FAE0544148E17A448FA850413D0AD753F9E05441295C8F828BA85041CDCCCC5CF9E054419A99998986A85041B81E854BFAE05441EC51B8DE82A8504185EB5178FBE05441000000407DA85041E17A141EFEE054411F85EB017BA850410AD7A3B0FFE05441333333537EA8504148E17AF402E1544114AE47B181A85041713D0A3702E15441AE47E16A84A85041E17A14BE04E1544148E17AB48DA85041D7A370ED02E15441713D0A978EA85041F6285CDF02E1544114AE47518FA850419A99993905E15441000000908EA85041333333330AE154413D0AD73386A8504185EB51180DE15441AE47E1CA85A85041B81E853B0CE15441F6285CEF82A8504185EB51D80CE15441010300000001000000050000007B14AE975BA85041F6285CFF57E1544114AE47715FA8504152B81E455CE154413D0AD7F362A850413D0AD77359E15441295C8F1260A850411F85EB4155E154417B14AE975BA85041F6285CFF57E154410103000000010000000F000000B81E851B8BA85041000000C0A9E15441EC51B8CE87A85041E17A14CEA8E154417B14AEC782A85041AE47E1BAAAE15441A4703D1A7FA8504185EB5198A9E15441E17A146E7DA850417B14AE87ACE15441D7A3700D79A850419A999909B8E15441B81E85AB76A85041EC51B8AEBEE154415C8FC27576A850419A999919C1E1544148E17A547CA850418FC2F538C2E15441CDCCCCFC80A85041C3F528FCC5E15441713D0A4781A85041C3F5282CC5E154416666661684A850417B14AEE7BCE15441CDCCCC1C89A85041EC51B88EB1E1544185EB51588AA85041A4703D7AADE15441B81E851B8BA85041000000C0A9E1544101030000000100000014000000666666C65AA85041C3F528EC3FE1544152B81E3555A85041C3F528BC3DE15441E17A142E52A85041333333233DE154411F85EBF150A850417B14AEC73DE154417B14AE2757A85041CDCCCC4C42E15441D7A3704D5CA850417B14AEE746E154410AD7A39063A8504114AE47D14DE15441EC51B88E64A85041C3F528EC4DE1544185EB517860A85041A4703D9A53E154410000007064A850417B14AEB758E15441EC51B8BE67A850416666668656E154410AD7A3B06EA85041D7A370BD52E15441CDCCCCFC6DA850413D0AD7734FE1544114AE47916EA85041C3F528BC4BE15441333333A36FA8504114AE475149E1544148E17AF470A85041EC51B88E47E15441C3F5286C70A85041713D0A7746E15441E17A141E63A8504114AE478142E15441E17A14AE60A85041E17A14CE42E15441666666C65AA85041C3F528EC3FE154410103000000010000000B000000EC51B8AE74A85041AE47E13ABEE15441713D0A2777A8504152B81E75B7E15441AE47E1EA7BA8504152B81EF5ABE15441EC51B88E7CA8504100000010AAE154410AD7A34079A8504152B81EB5ABE15441A4703DDA76A850418FC2F598B2E15441C3F5284C71A85041CDCCCC1CBAE15441295C8F226EA85041B81E85DBB9E154413D0AD7F36CA850418FC2F5C8BCE15441713D0AE773A850419A999919C1E15441EC51B8AE74A85041AE47E13ABEE15441010300000001000000080000009A9999B973A850410AD7A31065E15441EC51B8AE6CA85041D7A370BD68E154417B14AE876BA850419A9999F96AE154411F85EB216CA85041666666166CE15441B81E85FB6FA850411F85EB216AE1544148E17A0476A850410AD7A3906AE15441A4703DDA74A85041295C8F1268E154419A9999B973A850410AD7A31065E1544101030000000100000017000000295C8FF25BA850413D0AD71383E154413D0AD7635AA850410AD7A3D07DE154419A99999959A85041713D0A177BE15441AE47E16A59A85041666666767AE15441CDCCCC6C5CA850418FC2F5A876E154419A9999395CA85041EC51B8CE74E15441666666765FA850415C8FC2E572E15441CDCCCCFC5AA85041F6285C3F6AE15441666666E656A85041CDCCCC0C68E15441A4703D3A50A8504114AE474169E15441713D0AE74EA8504185EB51B869E15441D7A3709D46A85041A4703DEA5CE154419A99996945A8504148E17AE457E15441666666D63DA85041E17A14DE50E15441A4703D2A3DA85041B81E859B51E15441C3F5288C37A85041E17A147E4CE154418FC2F5A82FA850410AD7A3704AE154411F85EBF143A85041000000C065E15441295C8FC24AA8504148E17A146FE154415C8FC28555A8504152B81EB57DE1544148E17AB45BA85041F6285C0F86E15441D7A3709D5CA850410AD7A37085E15441295C8FF25BA850413D0AD71383E154410103000000020000002D0000000AD7A3604AA85041A4703D7A27E15441333333C34CA85041A4703DBA2BE15441AE47E1BA4FA850416666668633E154413D0AD7E350A850410AD7A3D035E154417B14AEC752A85041F6285CCF37E15441B81E854B5EA85041666666C63CE15441713D0A0763A85041C3F528EC3FE154410000009064A85041EC51B89E40E15441295C8F0266A85041AE47E14A40E154419A9999B96BA850411F85EB913BE15441713D0AB76EA85041F6285CBF3EE15441F6285C2F75A850419A99999942E15441F6285C7F78A850413D0AD7B340E15441333333937CA85041295C8FD23EE154419A9999F980A85041B81E853B3EE1544114AE47A181A85041AE47E13A3DE15441333333A37EA85041713D0AD732E154410AD7A3207EA85041333333D32EE15441AE47E1AA7DA85041AE47E16A26E1544185EB51087BA850410000009020E154410000002079A85041CDCCCC7C1CE154418FC2F55877A85041E17A148E1CE15441713D0A9774A850413333334318E1544152B81E1573A85041F6285CEF18E15441000000D070A850418FC2F53817E1544114AE47816DA8504148E17A3412E15441CDCCCC2C67A85041D7A3703D16E15441AE47E1BA67A85041AE47E19A17E154417B14AE2760A85041B81E85FB1DE15441AE47E15A60A850413D0AD7D31EE15441B81E850B5CA850413D0AD7A321E154413D0AD7235AA850410AD7A34021E154415C8FC2A556A8504152B81EF51EE154415C8FC24556A850413D0AD7431DE154416666668655A85041A4703D9A1CE154411F85EBE152A85041C3F5281C1CE154413D0AD7E350A85041B81E85FB1BE15441F6285C8F4EA85041713D0AE71BE15441B81E850B4CA85041D7A3707D1CE154410AD7A35048A85041333333D31DE15441C3F5282C47A850417B14AEA71EE1544185EB513845A85041333333F322E154413D0AD77347A85041F6285CFF23E15441295C8FD248A85041713D0AD724E154410AD7A3604AA85041A4703D7A27E15441050000003D0AD7E364A85041713D0A372CE154411F85EBF157A85041A4703DFA26E15441295C8FF25AA8504114AE47C122E15441C3F5283C66A85041A4703D3A29E154413D0AD7E364A85041713D0A372CE1544101030000000100000011000000CDCCCCAC38A8504185EB51782FE154413333334333A85041D7A3704D39E15441B81E853B2EA85041C3F528BC3CE1544152B81EB52EA850418FC2F52849E15441C3F5287C39A85041333333A342E154410AD7A3F03BA8504185EB512842E15441CDCCCC1C3DA85041CDCCCC1C43E154419A99999940A85041000000B040E154417B14AED746A8504152B81EE53DE154413D0AD7E34BA850419A9999293CE15441E17A14AE49A850411F85EB2139E1544152B81ED547A85041333333932FE15441713D0A6746A85041E17A146E2BE154413D0AD79344A850410000006027E154410AD7A3E03EA850417B14AE4727E154419A9999993EA8504185EB51382AE15441CDCCCCAC38A8504185EB51782FE1544101030000000100000005000000295C8F025EA850419A9999195DE15441295C8F425BA8504185EB51B858E15441CDCCCC3C56A850410AD7A3405DE15441E17A14CE58A850419A99991961E15441295C8F025EA850419A9999195DE15441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008466B753B9A850416456C5C424E15441069E0FD6C4A850416B1F79A821E154410533E040C5A85041EFA405231FE1544156BE36C9C7A8504145DB7C041DE15441BEBE4B27CEA8504100552AD516E15441B14AA0D0D5A850418CFF61300EE15441E20B5CBDDAA85041B592AFD809E15441C1B82806DFA850419E8F511105E154417DAF1488E1A8504104789DF3FDE054415C8FC255DCA850418FC2F558FFE054416FF3445CD6A85041439759C801E15441C6428A69D3A85041C2BD062204E154416BAC4849CEA85041872E7A0709E15441CB8BDFDEC5A850414DC1B8AE0FE1544122BEA5D7C0A8504148B47E6211E1544133333373BCA850410AD7A35011E1544162E46302B7A850417AD064C60EE154411DD81C81B4A8504101B9237E0DE15441B730923FB2A85041763A393D0DE154418466B753B9A850416456C5C424E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3281774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441AE47E1AA98A85041A4703D3A19E15441AE47E13AB5A850415C8FC23519E15441713D0AB7B7A85041CDCCCC0C22E15441333333F3B3A85041333333F322E1544148E17A04ACA85041AE47E13A23E15441D7A370ADA4A85041CDCCCCAC22E154415C8FC2B59CA8504152B81EE521E15441295C8FB297A850410AD7A38022E1544114AE47E192A85041EC51B8FE23E15441713D0A578BA8504152B81E3526E154415C8FC2C586A8504152B81E2528E15441C3F528DC82A85041666666C62AE154417B14AE377FA8504148E17AD42EE15441AE47E11A81A8504148E17A442FE154415C8FC22582A85041E17A146E2DE154411F85EB2184A8504148E17A742BE15441295C8FC287A850419A99994929E15441295C8F328CA850411F85EBF127E15441A4703D4A9AA85041AE47E15A26E15441A4703D5AA4A85041CDCCCC1C26E154411F85EBE1A9A850416666661626E15441D7A3708DB8A850413D0AD7F324E154415C8FC255C0A85041AE47E11A23E15441333333E3C4A850415C8FC20522E154417B14AE17C2A850415C8FC2151EE15441B81E85DBCBA850417B14AE1717E154419A999919CFA8504152B81E5512E1544185EB51D8D2A85041000000D010E15441F6285C8FD7A850415C8FC2A50CE15441713D0AA7D7A85041CDCCCC8C0CE1544152B81E25DDA85041D7A370BD07E154417B14AE87DEA850417B14AE1706E15441713D0A97E1A85041EC51B8BEFFE054415C8FC255DCA850418FC2F558FFE05441E17A145ED9A850416666661600E154419A9999E9D6A850417B14AE5701E15441713D0A77D0A85041B81E857B06E1544133333353CEA85041EC51B8FE08E154410AD7A3C0CAA85041666666260CE1544114AE4761C5A850419A99990910E15441B81E85FBC1A850417B14AE3711E1544100000030BFA850410AD7A3A011E1544133333373BCA850410AD7A35011E15441D7A3709DB7A850415C8FC2150FE15441295C8F82B1A850415C8FC2F50BE15441F6285C9FACA850415C8FC27509E15441C3F5287CA9A850413333339307E15441B81E857BA6A85041F6285C8F05E15441295C8F02A3A850411F85EBF102E15441E17A142E9DA85041EC51B88EFEE0544152B81EA598A8504185EB51D8FBE054410AD7A3B093A850415C8FC205FAE0544148E17A448FA850413D0AD753F9E05441295C8F828BA85041CDCCCC5CF9E054419A99998986A85041B81E854BFAE05441EC51B8DE82A8504185EB5178FBE05441000000407DA85041E17A141EFEE054411F85EB017BA850410AD7A3B0FFE05441333333537EA8504148E17AF402E1544114AE47B181A85041713D0A3702E15441AE47E16A84A85041E17A14BE04E1544148E17AB48DA85041D7A370ED02E15441713D0A978EA85041F6285CDF02E1544114AE47518FA850419A99993905E15441000000908EA85041333333330AE154413D0AD73386A8504185EB51180DE15441AE47E1CA85A85041B81E853B0CE15441F6285CEF82A8504185EB51D80CE15441010300000001000000050000007B14AE975BA85041F6285CFF57E1544114AE47715FA8504152B81E455CE154413D0AD7F362A850413D0AD77359E15441295C8F1260A850411F85EB4155E154417B14AE975BA85041F6285CFF57E154410103000000010000000F000000B81E851B8BA85041000000C0A9E15441EC51B8CE87A85041E17A14CEA8E154417B14AEC782A85041AE47E1BAAAE15441A4703D1A7FA8504185EB5198A9E15441E17A146E7DA850417B14AE87ACE15441D7A3700D79A850419A999909B8E15441B81E85AB76A85041EC51B8AEBEE154415C8FC27576A850419A999919C1E1544148E17A547CA850418FC2F538C2E15441CDCCCCFC80A85041C3F528FCC5E15441713D0A4781A85041C3F5282CC5E154416666661684A850417B14AEE7BCE15441CDCCCC1C89A85041EC51B88EB1E1544185EB51588AA85041A4703D7AADE15441B81E851B8BA85041000000C0A9E1544101030000000100000014000000666666C65AA85041C3F528EC3FE1544152B81E3555A85041C3F528BC3DE15441E17A142E52A85041333333233DE154411F85EBF150A850417B14AEC73DE154417B14AE2757A85041CDCCCC4C42E15441D7A3704D5CA850417B14AEE746E154410AD7A39063A8504114AE47D14DE15441EC51B88E64A85041C3F528EC4DE1544185EB517860A85041A4703D9A53E154410000007064A850417B14AEB758E15441EC51B8BE67A850416666668656E154410AD7A3B06EA85041D7A370BD52E15441CDCCCCFC6DA850413D0AD7734FE1544114AE47916EA85041C3F528BC4BE15441333333A36FA8504114AE475149E1544148E17AF470A85041EC51B88E47E15441C3F5286C70A85041713D0A7746E15441E17A141E63A8504114AE478142E15441E17A14AE60A85041E17A14CE42E15441666666C65AA85041C3F528EC3FE154410103000000010000000B000000EC51B8AE74A85041AE47E13ABEE15441713D0A2777A8504152B81E75B7E15441AE47E1EA7BA8504152B81EF5ABE15441EC51B88E7CA8504100000010AAE154410AD7A34079A8504152B81EB5ABE15441A4703DDA76A850418FC2F598B2E15441C3F5284C71A85041CDCCCC1CBAE15441295C8F226EA85041B81E85DBB9E154413D0AD7F36CA850418FC2F5C8BCE15441713D0AE773A850419A999919C1E15441EC51B8AE74A85041AE47E13ABEE15441010300000001000000080000009A9999B973A850410AD7A31065E15441EC51B8AE6CA85041D7A370BD68E154417B14AE876BA850419A9999F96AE154411F85EB216CA85041666666166CE15441B81E85FB6FA850411F85EB216AE1544148E17A0476A850410AD7A3906AE15441A4703DDA74A85041295C8F1268E154419A9999B973A850410AD7A31065E1544101030000000100000017000000295C8FF25BA850413D0AD71383E154413D0AD7635AA850410AD7A3D07DE154419A99999959A85041713D0A177BE15441AE47E16A59A85041666666767AE15441CDCCCC6C5CA850418FC2F5A876E154419A9999395CA85041EC51B8CE74E15441666666765FA850415C8FC2E572E15441CDCCCCFC5AA85041F6285C3F6AE15441666666E656A85041CDCCCC0C68E15441A4703D3A50A8504114AE474169E15441713D0AE74EA8504185EB51B869E15441D7A3709D46A85041A4703DEA5CE154419A99996945A8504148E17AE457E15441666666D63DA85041E17A14DE50E15441A4703D2A3DA85041B81E859B51E15441C3F5288C37A85041E17A147E4CE154418FC2F5A82FA850410AD7A3704AE154411F85EBF143A85041000000C065E15441295C8FC24AA8504148E17A146FE154415C8FC28555A8504152B81EB57DE1544148E17AB45BA85041F6285C0F86E15441D7A3709D5CA850410AD7A37085E15441295C8FF25BA850413D0AD71383E154410103000000020000002D0000000AD7A3604AA85041A4703D7A27E15441333333C34CA85041A4703DBA2BE15441AE47E1BA4FA850416666668633E154413D0AD7E350A850410AD7A3D035E154417B14AEC752A85041F6285CCF37E15441B81E854B5EA85041666666C63CE15441713D0A0763A85041C3F528EC3FE154410000009064A85041EC51B89E40E15441295C8F0266A85041AE47E14A40E154419A9999B96BA850411F85EB913BE15441713D0AB76EA85041F6285CBF3EE15441F6285C2F75A850419A99999942E15441F6285C7F78A850413D0AD7B340E15441333333937CA85041295C8FD23EE154419A9999F980A85041B81E853B3EE1544114AE47A181A85041AE47E13A3DE15441333333A37EA85041713D0AD732E154410AD7A3207EA85041333333D32EE15441AE47E1AA7DA85041AE47E16A26E1544185EB51087BA850410000009020E154410000002079A85041CDCCCC7C1CE154418FC2F55877A85041E17A148E1CE15441713D0A9774A850413333334318E1544152B81E1573A85041F6285CEF18E15441000000D070A850418FC2F53817E1544114AE47816DA8504148E17A3412E15441CDCCCC2C67A85041D7A3703D16E15441AE47E1BA67A85041AE47E19A17E154417B14AE2760A85041B81E85FB1DE15441AE47E15A60A850413D0AD7D31EE15441B81E850B5CA850413D0AD7A321E154413D0AD7235AA850410AD7A34021E154415C8FC2A556A8504152B81EF51EE154415C8FC24556A850413D0AD7431DE154416666668655A85041A4703D9A1CE154411F85EBE152A85041C3F5281C1CE154413D0AD7E350A85041B81E85FB1BE15441F6285C8F4EA85041713D0AE71BE15441B81E850B4CA85041D7A3707D1CE154410AD7A35048A85041333333D31DE15441C3F5282C47A850417B14AEA71EE1544185EB513845A85041333333F322E154413D0AD77347A85041F6285CFF23E15441295C8FD248A85041713D0AD724E154410AD7A3604AA85041A4703D7A27E15441050000003D0AD7E364A85041713D0A372CE154411F85EBF157A85041A4703DFA26E15441295C8FF25AA8504114AE47C122E15441C3F5283C66A85041A4703D3A29E154413D0AD7E364A85041713D0A372CE1544101030000000100000011000000CDCCCCAC38A8504185EB51782FE154413333334333A85041D7A3704D39E15441B81E853B2EA85041C3F528BC3CE1544152B81EB52EA850418FC2F52849E15441C3F5287C39A85041333333A342E154410AD7A3F03BA8504185EB512842E15441CDCCCC1C3DA85041CDCCCC1C43E154419A99999940A85041000000B040E154417B14AED746A8504152B81EE53DE154413D0AD7E34BA850419A9999293CE15441E17A14AE49A850411F85EB2139E1544152B81ED547A85041333333932FE15441713D0A6746A85041E17A146E2BE154413D0AD79344A850410000006027E154410AD7A3E03EA850417B14AE4727E154419A9999993EA8504185EB51382AE15441CDCCCCAC38A8504185EB51782FE1544101030000000100000005000000295C8F025EA850419A9999195DE15441295C8F425BA8504185EB51B858E15441CDCCCC3C56A850410AD7A3405DE15441E17A14CE58A850419A99991961E15441295C8F025EA850419A9999195DE15441
+</a>
+
+<b>
+010600000001000000010300000001000000140000008466B753B9A850416456C5C424E15441069E0FD6C4A850416B1F79A821E154410533E040C5A85041EFA405231FE1544156BE36C9C7A8504145DB7C041DE15441BEBE4B27CEA8504100552AD516E15441B14AA0D0D5A850418CFF61300EE15441E20B5CBDDAA85041B592AFD809E15441C1B82806DFA850419E8F511105E154417DAF1488E1A8504104789DF3FDE054415C8FC255DCA850418FC2F558FFE054416FF3445CD6A85041439759C801E15441C6428A69D3A85041C2BD062204E154416BAC4849CEA85041872E7A0709E15441CB8BDFDEC5A850414DC1B8AE0FE1544122BEA5D7C0A8504148B47E6211E1544133333373BCA850410AD7A35011E1544162E46302B7A850417AD064C60EE154411DD81C81B4A8504101B9237E0DE15441B730923FB2A85041763A393D0DE154418466B753B9A850416456C5C424E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3360849
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441AE47E1AA98A85041A4703D3A19E15441AE47E13AB5A850415C8FC23519E15441713D0AB7B7A85041CDCCCC0C22E15441333333F3B3A85041333333F322E1544148E17A04ACA85041AE47E13A23E15441D7A370ADA4A85041CDCCCCAC22E154415C8FC2B59CA8504152B81EE521E15441295C8FB297A850410AD7A38022E1544114AE47E192A85041EC51B8FE23E15441713D0A578BA8504152B81E3526E154415C8FC2C586A8504152B81E2528E15441C3F528DC82A85041666666C62AE154417B14AE377FA8504148E17AD42EE15441AE47E11A81A8504148E17A442FE154415C8FC22582A85041E17A146E2DE154411F85EB2184A8504148E17A742BE15441295C8FC287A850419A99994929E15441295C8F328CA850411F85EBF127E15441A4703D4A9AA85041AE47E15A26E15441A4703D5AA4A85041CDCCCC1C26E154411F85EBE1A9A850416666661626E15441D7A3708DB8A850413D0AD7F324E154415C8FC255C0A85041AE47E11A23E15441333333E3C4A850415C8FC20522E154417B14AE17C2A850415C8FC2151EE15441B81E85DBCBA850417B14AE1717E154419A999919CFA8504152B81E5512E1544185EB51D8D2A85041000000D010E15441F6285C8FD7A850415C8FC2A50CE15441713D0AA7D7A85041CDCCCC8C0CE1544152B81E25DDA85041D7A370BD07E154417B14AE87DEA850417B14AE1706E15441713D0A97E1A85041EC51B8BEFFE054415C8FC255DCA850418FC2F558FFE05441E17A145ED9A850416666661600E154419A9999E9D6A850417B14AE5701E15441713D0A77D0A85041B81E857B06E1544133333353CEA85041EC51B8FE08E154410AD7A3C0CAA85041666666260CE1544114AE4761C5A850419A99990910E15441B81E85FBC1A850417B14AE3711E1544100000030BFA850410AD7A3A011E1544133333373BCA850410AD7A35011E15441D7A3709DB7A850415C8FC2150FE15441295C8F82B1A850415C8FC2F50BE15441F6285C9FACA850415C8FC27509E15441C3F5287CA9A850413333339307E15441B81E857BA6A85041F6285C8F05E15441295C8F02A3A850411F85EBF102E15441E17A142E9DA85041EC51B88EFEE0544152B81EA598A8504185EB51D8FBE054410AD7A3B093A850415C8FC205FAE0544148E17A448FA850413D0AD753F9E05441295C8F828BA85041CDCCCC5CF9E054419A99998986A85041B81E854BFAE05441EC51B8DE82A8504185EB5178FBE05441000000407DA85041E17A141EFEE054411F85EB017BA850410AD7A3B0FFE05441333333537EA8504148E17AF402E1544114AE47B181A85041713D0A3702E15441AE47E16A84A85041E17A14BE04E1544148E17AB48DA85041D7A370ED02E15441713D0A978EA85041F6285CDF02E1544114AE47518FA850419A99993905E15441000000908EA85041333333330AE154413D0AD73386A8504185EB51180DE15441AE47E1CA85A85041B81E853B0CE15441F6285CEF82A8504185EB51D80CE15441010300000001000000050000007B14AE975BA85041F6285CFF57E1544114AE47715FA8504152B81E455CE154413D0AD7F362A850413D0AD77359E15441295C8F1260A850411F85EB4155E154417B14AE975BA85041F6285CFF57E154410103000000010000000F000000B81E851B8BA85041000000C0A9E15441EC51B8CE87A85041E17A14CEA8E154417B14AEC782A85041AE47E1BAAAE15441A4703D1A7FA8504185EB5198A9E15441E17A146E7DA850417B14AE87ACE15441D7A3700D79A850419A999909B8E15441B81E85AB76A85041EC51B8AEBEE154415C8FC27576A850419A999919C1E1544148E17A547CA850418FC2F538C2E15441CDCCCCFC80A85041C3F528FCC5E15441713D0A4781A85041C3F5282CC5E154416666661684A850417B14AEE7BCE15441CDCCCC1C89A85041EC51B88EB1E1544185EB51588AA85041A4703D7AADE15441B81E851B8BA85041000000C0A9E1544101030000000100000014000000666666C65AA85041C3F528EC3FE1544152B81E3555A85041C3F528BC3DE15441E17A142E52A85041333333233DE154411F85EBF150A850417B14AEC73DE154417B14AE2757A85041CDCCCC4C42E15441D7A3704D5CA850417B14AEE746E154410AD7A39063A8504114AE47D14DE15441EC51B88E64A85041C3F528EC4DE1544185EB517860A85041A4703D9A53E154410000007064A850417B14AEB758E15441EC51B8BE67A850416666668656E154410AD7A3B06EA85041D7A370BD52E15441CDCCCCFC6DA850413D0AD7734FE1544114AE47916EA85041C3F528BC4BE15441333333A36FA8504114AE475149E1544148E17AF470A85041EC51B88E47E15441C3F5286C70A85041713D0A7746E15441E17A141E63A8504114AE478142E15441E17A14AE60A85041E17A14CE42E15441666666C65AA85041C3F528EC3FE154410103000000010000000B000000EC51B8AE74A85041AE47E13ABEE15441713D0A2777A8504152B81E75B7E15441AE47E1EA7BA8504152B81EF5ABE15441EC51B88E7CA8504100000010AAE154410AD7A34079A8504152B81EB5ABE15441A4703DDA76A850418FC2F598B2E15441C3F5284C71A85041CDCCCC1CBAE15441295C8F226EA85041B81E85DBB9E154413D0AD7F36CA850418FC2F5C8BCE15441713D0AE773A850419A999919C1E15441EC51B8AE74A85041AE47E13ABEE15441010300000001000000080000009A9999B973A850410AD7A31065E15441EC51B8AE6CA85041D7A370BD68E154417B14AE876BA850419A9999F96AE154411F85EB216CA85041666666166CE15441B81E85FB6FA850411F85EB216AE1544148E17A0476A850410AD7A3906AE15441A4703DDA74A85041295C8F1268E154419A9999B973A850410AD7A31065E1544101030000000100000017000000295C8FF25BA850413D0AD71383E154413D0AD7635AA850410AD7A3D07DE154419A99999959A85041713D0A177BE15441AE47E16A59A85041666666767AE15441CDCCCC6C5CA850418FC2F5A876E154419A9999395CA85041EC51B8CE74E15441666666765FA850415C8FC2E572E15441CDCCCCFC5AA85041F6285C3F6AE15441666666E656A85041CDCCCC0C68E15441A4703D3A50A8504114AE474169E15441713D0AE74EA8504185EB51B869E15441D7A3709D46A85041A4703DEA5CE154419A99996945A8504148E17AE457E15441666666D63DA85041E17A14DE50E15441A4703D2A3DA85041B81E859B51E15441C3F5288C37A85041E17A147E4CE154418FC2F5A82FA850410AD7A3704AE154411F85EBF143A85041000000C065E15441295C8FC24AA8504148E17A146FE154415C8FC28555A8504152B81EB57DE1544148E17AB45BA85041F6285C0F86E15441D7A3709D5CA850410AD7A37085E15441295C8FF25BA850413D0AD71383E154410103000000020000002D0000000AD7A3604AA85041A4703D7A27E15441333333C34CA85041A4703DBA2BE15441AE47E1BA4FA850416666668633E154413D0AD7E350A850410AD7A3D035E154417B14AEC752A85041F6285CCF37E15441B81E854B5EA85041666666C63CE15441713D0A0763A85041C3F528EC3FE154410000009064A85041EC51B89E40E15441295C8F0266A85041AE47E14A40E154419A9999B96BA850411F85EB913BE15441713D0AB76EA85041F6285CBF3EE15441F6285C2F75A850419A99999942E15441F6285C7F78A850413D0AD7B340E15441333333937CA85041295C8FD23EE154419A9999F980A85041B81E853B3EE1544114AE47A181A85041AE47E13A3DE15441333333A37EA85041713D0AD732E154410AD7A3207EA85041333333D32EE15441AE47E1AA7DA85041AE47E16A26E1544185EB51087BA850410000009020E154410000002079A85041CDCCCC7C1CE154418FC2F55877A85041E17A148E1CE15441713D0A9774A850413333334318E1544152B81E1573A85041F6285CEF18E15441000000D070A850418FC2F53817E1544114AE47816DA8504148E17A3412E15441CDCCCC2C67A85041D7A3703D16E15441AE47E1BA67A85041AE47E19A17E154417B14AE2760A85041B81E85FB1DE15441AE47E15A60A850413D0AD7D31EE15441B81E850B5CA850413D0AD7A321E154413D0AD7235AA850410AD7A34021E154415C8FC2A556A8504152B81EF51EE154415C8FC24556A850413D0AD7431DE154416666668655A85041A4703D9A1CE154411F85EBE152A85041C3F5281C1CE154413D0AD7E350A85041B81E85FB1BE15441F6285C8F4EA85041713D0AE71BE15441B81E850B4CA85041D7A3707D1CE154410AD7A35048A85041333333D31DE15441C3F5282C47A850417B14AEA71EE1544185EB513845A85041333333F322E154413D0AD77347A85041F6285CFF23E15441295C8FD248A85041713D0AD724E154410AD7A3604AA85041A4703D7A27E15441050000003D0AD7E364A85041713D0A372CE154411F85EBF157A85041A4703DFA26E15441295C8FF25AA8504114AE47C122E15441C3F5283C66A85041A4703D3A29E154413D0AD7E364A85041713D0A372CE1544101030000000100000011000000CDCCCCAC38A8504185EB51782FE154413333334333A85041D7A3704D39E15441B81E853B2EA85041C3F528BC3CE1544152B81EB52EA850418FC2F52849E15441C3F5287C39A85041333333A342E154410AD7A3F03BA8504185EB512842E15441CDCCCC1C3DA85041CDCCCC1C43E154419A99999940A85041000000B040E154417B14AED746A8504152B81EE53DE154413D0AD7E34BA850419A9999293CE15441E17A14AE49A850411F85EB2139E1544152B81ED547A85041333333932FE15441713D0A6746A85041E17A146E2BE154413D0AD79344A850410000006027E154410AD7A3E03EA850417B14AE4727E154419A9999993EA8504185EB51382AE15441CDCCCCAC38A8504185EB51782FE1544101030000000100000005000000295C8F025EA850419A9999195DE15441295C8F425BA8504185EB51B858E15441CDCCCC3C56A850410AD7A3405DE15441E17A14CE58A850419A99991961E15441295C8F025EA850419A9999195DE15441
+</a>
+
+<b>
+010600000001000000010300000001000000280000003895C46787A85041B582908D1DE1544138957E2288A85041D1BBD83D1DE15441357726DE8AA85041D73079431CE15441996219898EA85041A10E4A8D1BE1544122CBE12694A850418EE7455A1AE15441A6FED22E97A85041784A38A519E15441C86FE64397A850411EC668A419E1544149CDAE399CA850415E4C927319E15441CB12DE37B0A85041F76E2E8719E15441485EFB41B5A8504184AC804D19E1544184D5CC88B5A850416B4B658C19E1544188308AF3B1A85041BD72972F0CE1544135982A2DA9A8504110A8FD5D07E154410238CA62A3A850414053323A03E15441386DF8D5A0A85041E2D53FD502E1544189515FD591A850413A617DAC02E15441422B89DC8DA850412379FAEA02E154411C3706C68DA8504198CD086904E15441BE2476C68DA85041BE5C83B704E1544158D922948AA850416EBCBFD905E15441A8A451CC88A850414AF3697B06E15441E18124B688A85041D23F8B5B08E154416C19530386A850414C83DF5E09E15441EE9629E783A8504178A266DF09E1544135B5B3C480A850410C93AF8108E154415601356880A85041D04DE15509E15441F1B4D14980A8504136C861DA0AE15441D5CA18A97BA85041A646012F0BE154416F93ABD779A8504119F3CA500FE1544156A9F23675A85041FE1D34C713E15441842110DE76A85041024C5E9417E154418A0CCC3779A85041DE44A3AF1CE154417B14AE077AA85041000000101CE15441FCFB03CD7EA85041C38828CB25E154416AB97BB97EA8504183AC4DF424E1544150F80EAE7DA8504122F30B9122E154415E2BF2D37DA85041F78F1EE321E154416F27C35A7EA85041C465BF6A21E15441857DB8717EA850411F3AF26021E154413895C46787A85041B582908D1DE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633209 - 3014300
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F000000713D0A8792EC504185EB51B896DA5441B81E859B8BEC5041D7A3703D98DA54415C8FC2558FEC5041CDCCCCFCA0DA5441C3F528FC90EC50410AD7A300A4DA5441AE47E10A94EC504166666696A9DA54415C8FC28595EC5041CDCCCCECAADA5441A4703DBA96EC5041A4703D6AADDA5441D7A370BD9AEC5041AE47E13AB3DA5441C3F528CC9BEC504152B81ED5B6DA544100000040A2EC504114AE4741B5DA544166666686AAEC504133333303ACDA5441C3F5288CB1EC50415C8FC245A3DA5441D7A3703D9DEC504152B81E6595DA54417B14AE8796EC50417B14AE3796DA5441713D0A8792EC504185EB51B896DA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002000000037720A2E83EC5041BECEEABB8BDA54410623BEED7EEC504181C65ED18ADA5441F7E8A9E17FEC504121BA26DC86DA5441333333C37DEC5041A4703D0A86DA54410AD7A3007CEC5041713D0A9785DA544114AE47F178EC50410AD7A39085DA5441D9F8E36979EC5041B05847D48CDA54417CDB570C7BEC504194B94ACEA3DA54416448E4537CEC50417BB3CB91B1DA5441DD193B467DEC5041CCDB0BDAB7DA5441D5CF994E7EEC5041A3FB045CBDDA5441C8A9370780EC504120722CCABDDA544106023A6683EC504193AA2745BEDA5441C3F528CC9BEC504152B81ED5B6DA544199F6CB6E9AEC50411294E8C8B2DA5441971EB2B197EC5041103FC7BAAEDA54413512D0C096EC5041D6F1C373ADDA544163DB5EA695EC504143A32F30ABDA5441AF33866C94EC5041B42715FFA9DA544188F84A0894EC5041D196AC91A9DA544162C5A43493EC5041FCD06D0DA8DA54413EFA042892EC50417C2D5637A6DA5441EB42A9B690EC5041DB4D588AA3DA5441B102E34990EC50410DDCE2BAA2DA544197F9EA2290EC5041D6500177A2DA54415C8FC2558FEC5041CDCCCCFCA0DA5441B81E859B8BEC5041D7A3703D98DA5441A4703DCA8AEC50410000001094DA54410EE79D9287EC504122448CF88BDA54413333336386EC5041D7A370FD88DA5441B3BA58C583EC50411DAA541888DA544137720A2E83EC5041BECEEABB8BDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633209 - 3375397
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F000000713D0A8792EC504185EB51B896DA5441B81E859B8BEC5041D7A3703D98DA54415C8FC2558FEC5041CDCCCCFCA0DA5441C3F528FC90EC50410AD7A300A4DA5441AE47E10A94EC504166666696A9DA54415C8FC28595EC5041CDCCCCECAADA5441A4703DBA96EC5041A4703D6AADDA5441D7A370BD9AEC5041AE47E13AB3DA5441C3F528CC9BEC504152B81ED5B6DA544100000040A2EC504114AE4741B5DA544166666686AAEC504133333303ACDA5441C3F5288CB1EC50415C8FC245A3DA5441D7A3703D9DEC504152B81E6595DA54417B14AE8796EC50417B14AE3796DA5441713D0A8792EC504185EB51B896DA5441
+</a>
+
+<b>
+0106000000010000000103000000010000002000000037720A2E83EC5041BECEEABB8BDA54410623BEED7EEC504181C65ED18ADA5441F7E8A9E17FEC504121BA26DC86DA5441333333C37DEC5041A4703D0A86DA54410AD7A3007CEC5041713D0A9785DA544114AE47F178EC50410AD7A39085DA5441D9F8E36979EC5041B05847D48CDA54417CDB570C7BEC504194B94ACEA3DA54416448E4537CEC50417BB3CB91B1DA5441DD193B467DEC5041CCDB0BDAB7DA5441D5CF994E7EEC5041A3FB045CBDDA5441C8A9370780EC504120722CCABDDA544106023A6683EC504193AA2745BEDA5441C3F528CC9BEC504152B81ED5B6DA544199F6CB6E9AEC50411294E8C8B2DA5441971EB2B197EC5041103FC7BAAEDA54413512D0C096EC5041D6F1C373ADDA544163DB5EA695EC504143A32F30ABDA5441AF33866C94EC5041B42715FFA9DA544188F84A0894EC5041D196AC91A9DA544162C5A43493EC5041FCD06D0DA8DA54413EFA042892EC50417C2D5637A6DA5441EB42A9B690EC5041DB4D588AA3DA5441B102E34990EC50410DDCE2BAA2DA544197F9EA2290EC5041D6500177A2DA54415C8FC2558FEC5041CDCCCCFCA0DA5441B81E859B8BEC5041D7A3703D98DA5441A4703DCA8AEC50410000001094DA54410EE79D9287EC504122448CF88BDA54413333336386EC5041D7A370FD88DA5441B3BA58C583EC50411DAA541888DA544137720A2E83EC5041BECEEABB8BDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>634102 - 961995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000713D0AB77DE75041D7A370BD03D654417B14AE0783E750413D0AD7E304D6544185EB51D88AE75041C3F5286C07D65441A4703DEA8FE750418FC2F5F808D65441CDCCCCAC91E75041B81E859B09D6544152B81EA593E75041F6285C4F0AD65441A4703D7A95E750415C8FC2150BD65441CDCCCC5C98E75041666666360CD65441666666769BE75041A4703DDA0DD654411F85EB619FE75041EC51B8AE0FD65441EC51B83EA5E75041000000B012D65441AE47E1FAA8E75041CDCCCCBC14D6544114AE4721ADE75041C3F5286C17D6544114AE47C1ADE75041713D0AA716D6544114AE4761B0E75041C3F528FC12D65441F6285C0FB1E7504185EB510812D65441AE47E15AB3E75041666666860ED654413D0AD703ABE75041EC51B85E0AD65441B81E859BA5E750410AD7A3C007D65441F6285CEFA1E75041EC51B8BE05D65441CDCCCCBC9EE750419A99995904D65441EC51B81E9CE75041AE47E13A03D65441EC51B86E99E7504185EB515802D654417B14AEC796E750418FC2F59801D654413333334394E750418FC2F53801D65441EC51B88E92E75041000000D000D65441713D0AE792E75041B81E856BFFD5544148E17AC488E7504100000050FDD55441E17A142E7AE750417B14AE57FAD5544148E17A8477E75041295C8FD2F9D55441E17A141E75E75041666666A6F9D55441E17A141E75E750419A9999C9F9D5544148E17A5474E750419A999969FED55441C3F528AC73E750416666663601D65441295C8F9276E75041333333D301D65441713D0AB77DE75041D7A370BD03D65441
+</a>
+
+<b>
+01060000000200000001030000000100000029000000CDCCCC2C72E750416666661605D65441336C2BBB75E750412EBA365E06D65441C3F5282C79E750415C8FC2A507D65441D7A370DD7CE750410000000009D65441AE47E1AA7FE750413D0AD7E309D65441524AAF5782E75041B3CE03CF0AD6544195D4159084E75041139AA39B0BD654410D1B478486E7504184F986510CD654412D7D26EA88E75041AF085C620DD65441666666E68BE75041A4703D8A0ED6544135851AFA8DE75041CE6A3BC80FD65441722833F48EE750413FCA1E7E10D654418AA3C41B90E75041B129023411D65441B4B2992C91E75041341D29D311D65441CD2D2B5492E75041A67C0C8912D65441E17A143E94E750411F85EB5113D654416666661696E750413333330314D654417D51CDD597E75041A1B6641C15D6544119C0859C99E75041EFEDC0FF15D6544174C57DFC9CE750419DF0BCAF17D6544105874018A0E75041395F757619D654418F61B5F5A1E7504175028E701AD65441C2787E16A8E75041ADDFFEFD1DD65441295C8F02AAE750415C8FC2451BD6544114AE4721ADE75041C3F5286C17D65441AE47E1FAA8E75041CDCCCCBC14D65441EC51B83EA5E75041000000B012D654411F85EB619FE75041EC51B8AE0FD65441666666769BE75041A4703DDA0DD65441C4A1DB7A97E75041EF711CC90BD65441CBA433D193E750413FC600620AD654414516FB8292E75041708BE5E709D654410C4BA83091E750418BDBBA6E09D65441F896553690E75041061C6A1409D65441DC8729388BE7504127FC758907D65441D1789BFA82E7504144F002E104D65441713D0AB77DE75041D7A370BD03D65441295C8F9276E75041333333D301D65441C3F528AC73E750416666663601D654415C8FC2A573E75041295C8F5201D65441CDCCCC2C72E750416666661605D6544101030000000100000004000000FC8EBA2D72E75041F1161E6405D654411AB91B3972E75041FD00994405D65441C3F5281C72E75041B81E853B05D65441FC8EBA2D72E75041F1161E6405D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>634330 - 1581513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B81E18E25041000000D02AC854416666662612E2504152B81E0532C85441713D0A770CE2504152B81E6537C85441713D0AA7FEE150415C8FC27544C8544185EB5108FCE1504114AE473147C85441AE47E1BAF6E15041A4703DBA4CC854411F85EB41F3E150418FC2F51851C85441EC51B81EF2E1504148E17AF452C854413D0AD7C3FFE15041B81E85EB64C85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441000000802DE25041A4703DCA38C854413D0AD70331E2504114AE475135C85441D7A3709D31E250413D0AD74334C8544185EB51C831E25041F6285C6F33C85441AE47E10A31E25041F6285CCF2FC85441713D0A8730E25041A4703D7A2AC854410AD7A35023E250419A9999A92AC85441EC51B81E18E25041000000D02AC85441
+</a>
+
+<b>
+010600000001000000010300000001000000150000004BE471BE0CE25041AE17A0515CC85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441000000802DE25041A4703DCA38C854413D0AD70331E2504114AE475135C85441D7A3709D31E250413D0AD74334C8544185EB51C831E25041F6285C6F33C85441AE47E10A31E25041F6285CCF2FC85441713D0A8730E25041A4703D7A2AC854410AD7A35023E250419A9999A92AC85441EC51B81E18E25041000000D02AC854416666662612E2504152B81E0532C85441713D0A770CE2504152B81E6537C85441713D0AA7FEE150415C8FC27544C8544109F80A95FDE150414DB5859345C85441D45D4A5CFCE15041F432B4D946C8544123749FD70BE25041596797EA5CC854414BE471BE0CE25041AE17A0515CC85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>634330 - 4247184
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B81E18E25041000000D02AC854416666662612E2504152B81E0532C85441713D0A770CE2504152B81E6537C85441713D0AA7FEE150415C8FC27544C8544185EB5108FCE1504114AE473147C85441AE47E1BAF6E15041A4703DBA4CC854411F85EB41F3E150418FC2F51851C85441EC51B81EF2E1504148E17AF452C854413D0AD7C3FFE15041B81E85EB64C85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441000000802DE25041A4703DCA38C854413D0AD70331E2504114AE475135C85441D7A3709D31E250413D0AD74334C8544185EB51C831E25041F6285C6F33C85441AE47E10A31E25041F6285CCF2FC85441713D0A8730E25041A4703D7A2AC854410AD7A35023E250419A9999A92AC85441EC51B81E18E25041000000D02AC85441
+</a>
+
+<b>
+010600000001000000010300000001000000150000004BE471BE0CE25041AE17A0515CC85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441000000802DE25041A4703DCA38C854413D0AD70331E2504114AE475135C85441D7A3709D31E250413D0AD74334C8544185EB51C831E25041F6285C6F33C85441AE47E10A31E25041F6285CCF2FC85441713D0A8730E25041A4703D7A2AC854410AD7A35023E250419A9999A92AC85441EC51B81E18E25041000000D02AC854416666662612E2504152B81E0532C85441713D0A770CE2504152B81E6537C85441713D0AA7FEE150415C8FC27544C8544109F80A95FDE150414DB5859345C85441D45D4A5CFCE15041F432B4D946C8544123749FD70BE25041596797EA5CC854414BE471BE0CE25041AE17A0515CC85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653594 - 5221664
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003E0000000AD7A3F050A65041CDCCCCACA8DD5441333333734AA650413D0AD733A6DD544185EB51B841A6504185EB5108A2DD5441D7A370FD38A650418FC2F5789DDD54419A9999C92DA65041295C8FC298DD54418FC2F5E820A65041A4703D8A93DD544185EB51B81EA65041F6285C7F91DD54419A9999791BA650418FC2F5C88CDD54410AD7A30019A65041A4703D8A89DD5441A4703DFA12A650417B14AE4783DD544152B81E550CA65041C3F5287C7DDD54413D0AD7B30BA65041F6285C9F7DDD54419A9999C90AA65041000000C083DD5441F6285C0F09A6504114AE475191DD54417B14AE6707A65041CDCCCCEC9BDD5441713D0A2705A6504152B81E75A8DD54418FC2F50805A650411F85EB91ABDD54417B14AE671EA65041D7A370EDB8DD5441A4703D9A30A6504148E17A94C2DD544148E17AA43CA65041A4703DFAC8DD54418FC2F5D84FA6504152B81E45D3DD54417B14AE575DA6504148E17A44DADD5441713D0A7768A6504148E17AF4DFDD54410AD7A33073A650417B14AEC7E5DD5441E17A14DE7AA65041A4703DDAE9DD5441333333837EA65041C3F528BCECDD54419A9999F981A650419A999949F0DD544148E17AA48AA6504100000000F9DD54410AD7A3A09CA650419A9999F90ADE5441B81E858BA9A65041333333A31ADE5441C3F528ACADA650417B14AE371FDE54415C8FC275B4A65041C3F5288C27DE54411F85EB51B8A6504152B81E652BDE54410AD7A320B9A65041666666162BDE54411F85EB01BCA65041713D0A4728DE54417B14AE77C0A65041D7A370AD22DE54413D0AD7D3C2A650419A99990920DE544148E17A74C4A650411F85EB811DDE54418FC2F558C5A650413D0AD7D319DE544114AE47B1C7A65041D7A3706D08DE544114AE4721CCA65041A4703DEAF0DD5441713D0AD7CEA650411F85EBF1E2DD54418FC2F578D2A65041EC51B82ED0DD54413D0AD713D2A6504166666676CFDD5441A4703D9ACFA6504114AE4741CEDD54419A999929CCA6504166666616CDDD5441AE47E1AAC6A650415C8FC265CBDD5441C3F528ECBFA65041333333A3C8DD544185EB5118BBA65041CDCCCC9CC6DD5441B81E852BACA65041A4703D3ABEDD5441B81E854BA8A65041CDCCCC4CBCDD5441A4703DBAA0A650413D0AD713B9DD5441666666A694A6504133333383B4DD54417B14AE5790A65041F6285C2FB3DD544114AE47B181A6504152B81EB5AFDD544148E17A9479A650411F85EB01AEDD54413D0AD7A375A650411F85EB01AEDD544148E17A746EA650415C8FC215AEDD5441E17A14CE66A65041AE47E18AADDD5441000000A060A65041A4703D8AACDD5441EC51B8BE58A65041713D0AD7AADD54410AD7A3F050A65041CDCCCCACA8DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000003200000052B81E4515A65041D7A3708D89DD54410AD7A3601CA650417B14AEC78FDD54419A9999091EA650415C8FC2D592DD5441000000501FA650413333331394DD54415C8FC26520A65041713D0A5794DD544152B81EB52AA65041713D0AE79ADD5441EC51B84E2EA65041CDCCCC4C9DDD5441A4703D2A34A65041CDCCCC0CA1DD54410000000039A65041295C8FC2A3DD5441B81E85BB3BA6504152B81EF5A4DD5441CDCCCC4C3EA65041295C8F32A6DD5441A4703DBA41A6504166666666A7DD54410AD7A3004BA65041666666C6A9DD544114AE47814EA65041C3F528ACAADD544185EB51E850A65041E17A141EABDD544152B81E5553A65041713D0A67ABDD5441CC7B38765BA65041C4D70E82ABDD5441F3F1DE875BA65041DAF09585ABDD54415F7176AF5BA6504189742986ABDD5441B12995D45BA6504160189A83ABDD5441EE336C985BA650417F9D8575ABDD5441EC51B8BE58A65041713D0AD7AADD5441E39B969557A6504196A79E84AADD54410AD7A3F050A65041CDCCCCACA8DD5441333333734AA650413D0AD733A6DD544185EB51B841A6504185EB5108A2DD5441D7A370FD38A650418FC2F5789DDD54410C44DBCA30A65041A7C828069ADD544168AF4FA42CA650419C4AAC4B98DD5441EE886CE828A65041E33E32C896DD5441181B587521A65041B35725C393DD54418FC2F5E820A65041A4703D8A93DD5441B619C52F1FA65041A5C8C3EE91DD544185EB51B81EA65041F6285C7F91DD544114AE47211DA65041D7A3702D8FDD5441D95082301BA65041C76108698CDD54410AD7A30019A65041A4703D8A89DD5441AB53E8C218A650413586194A89DD5441CFF3503A16A65041DCEC35A886DD5441A4703DFA12A650417B14AE4783DD54417A0080DC0DA6504109F279D17EDD5441533DF7400DA65041CD987F0F7EDD54414107835D0CA65041223AF4EC7CDD5441CBABC3920BA6504150226E647DDD54410D9749B70BA65041C1689AA37DDD544175A007C80DA6504120C20E4680DD5441EAEB42F511A65041D005A49985DD54417B14AEF712A65041333333E386DD54416DBF92B213A65041776A84BB87DD544152B81E4515A65041D7A3708D89DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613438 - 1325679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE2061A5141C3F5286C6CCC5441D7A3709D2E1A5141D7A3709D5DCC5441E17A14FE201A51415C8FC22549CC5441713D0AD7FD195141E17A143E5CCC5441D7A3709DDA1951410AD7A3606FCC5441EC51B84EDF195141666666367ACC5441295C8FE2061A5141C3F5286C6CCC5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A3709D2E1A5141D7A3709D5DCC54415BF84E582C1A5141399407765ECC5441E1A782BA271A514124567D2E60CC5441EA4819171F1A51410E9CB06663CC5441C35C6B4A171A51416AD8DB4E66CC5441C9DD0AA6141A5141C457F24A67CC5441019A9FCF121A5141B6F945FA67CC54415D304B2D111A514154AA2F9668CC5441F12D6E370F1A5141C4763B5169CC544139E6B5B30A1A5141B30AF9FF6ACC5441FC12CFDD071A514130CB840E6CCC544119A2CC0F071A5141F6944C5B6CCC5441678CC84F061A5141A5294D9F6CCC5441AAF19967041A5141D91966496DCC5441C41BD6CB011A5141788111326ECC544129D175F7EE1951418B2AA2C174CC54417648ECCEE7195141AC1B254077CC5441EC51B84EDF195141666666367ACC54413D0AD713E2195141B81E859B80CC544148E17A54E7195141CDCCCC3C8DCC544185EB5158EB195141333333638ECC5441EC51B8DE161A51415C8FC2F57CCC544100000080161A514185EB51087CCC54413D0AD733181A5141CDCCCC1C7BCC5441F6285C5F131A5141713D0AA776CC5441CDCCCC7C151A5141F6285C1F74CC5441EC51B86E181A5141295C8FD271CC544114AE47511A1A5141C3F5288C71CC54419A9999591D1A514148E17AB472CC544148E17A84251A51413333330372CC544100000080361A51416666667669CC5441D7A3709D2E1A5141D7A3709D5DCC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613438 - 3540338
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE2061A5141C3F5286C6CCC5441D7A3709D2E1A5141D7A3709D5DCC5441E17A14FE201A51415C8FC22549CC5441713D0AD7FD195141E17A143E5CCC5441D7A3709DDA1951410AD7A3606FCC5441EC51B84EDF195141666666367ACC5441295C8FE2061A5141C3F5286C6CCC5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A3709D2E1A5141D7A3709D5DCC54415BF84E582C1A5141399407765ECC5441E1A782BA271A514124567D2E60CC5441EA4819171F1A51410E9CB06663CC5441C35C6B4A171A51416AD8DB4E66CC5441C9DD0AA6141A5141C457F24A67CC5441019A9FCF121A5141B6F945FA67CC54415D304B2D111A514154AA2F9668CC5441F12D6E370F1A5141C4763B5169CC544139E6B5B30A1A5141B30AF9FF6ACC5441FC12CFDD071A514130CB840E6CCC544119A2CC0F071A5141F6944C5B6CCC5441678CC84F061A5141A5294D9F6CCC5441AAF19967041A5141D91966496DCC5441C41BD6CB011A5141788111326ECC544129D175F7EE1951418B2AA2C174CC54417648ECCEE7195141AC1B254077CC5441EC51B84EDF195141666666367ACC54413D0AD713E2195141B81E859B80CC544148E17A54E7195141CDCCCC3C8DCC544185EB5158EB195141333333638ECC5441EC51B8DE161A51415C8FC2F57CCC544100000080161A514185EB51087CCC54413D0AD733181A5141CDCCCC1C7BCC5441F6285C5F131A5141713D0AA776CC5441CDCCCC7C151A5141F6285C1F74CC5441EC51B86E181A5141295C8FD271CC544114AE47511A1A5141C3F5288C71CC54419A9999591D1A514148E17AB472CC544148E17A84251A51413333330372CC544100000080361A51416666667669CC5441D7A3709D2E1A5141D7A3709D5DCC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613443 - 1325764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000700000066666636BD195141F6285C9F9CCC5441A4703D9AC61951419A9999D98ECC544148E17AE4DC195141EC51B81E7DCC544133333353DA19514152B81E0577CC54410AD7A330C919514185EB515883CC5441333333B3B619514152B81EA590CC544166666636BD195141F6285C9F9CCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074A463E5C419514123374E728DCC5441418A1D3BC41951413CD03B4A8ECC5441216DD188BB1951418AC34A8999CC5441C3F5282CC2195141F6285CBFA5CC5441D7A3707DC21951415C8FC285A5CC544185EB5198C6195141A4703D4AA2CC5441CDCCCCECC219514152B81E959DCC54415563B8B1C21951418B2279989CCC54412D07679DC3195141FC7218F799CC544199BCA019C7195141CE29830895CC54417B14AE97CC1951419A9999998BCC54415C8FC2F5D3195141CDCCCC5C87CC54419A9999F9DE195141295C8F1282CC544170F2DC77DC195141E389A91C7CCC54415E3468BED419514164E9BD7981CC54416389D5C3D11951418341659283CC544174A463E5C419514123374E728DCC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613443 - 3343798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000700000066666636BD195141F6285C9F9CCC5441A4703D9AC61951419A9999D98ECC544148E17AE4DC195141EC51B81E7DCC544133333353DA19514152B81E0577CC54410AD7A330C919514185EB515883CC5441333333B3B619514152B81EA590CC544166666636BD195141F6285C9F9CCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074A463E5C419514123374E728DCC5441418A1D3BC41951413CD03B4A8ECC5441216DD188BB1951418AC34A8999CC5441C3F5282CC2195141F6285CBFA5CC5441D7A3707DC21951415C8FC285A5CC544185EB5198C6195141A4703D4AA2CC5441CDCCCCECC219514152B81E959DCC54415563B8B1C21951418B2279989CCC54412D07679DC3195141FC7218F799CC544199BCA019C7195141CE29830895CC54417B14AE97CC1951419A9999998BCC54415C8FC2F5D3195141CDCCCC5C87CC54419A9999F9DE195141295C8F1282CC544170F2DC77DC195141E389A91C7CCC54415E3468BED419514164E9BD7981CC54416389D5C3D11951418341659283CC544174A463E5C419514123374E728DCC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613965 - 356151
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703D7A1DDB5041713D0AA78529544185EB51E816DB5041CDCCCC5C9A2954410000009021DB50410AD7A3B0A22954418FC2F5682ADB5041295C8F82AC2954417B14AE372FDB50411F85EBE1B129544185EB515836DB5041EC51B82E97295441B81E85AB36DB50415C8FC2F5952954418FC2F51837DB5041C3F5285C94295441713D0A1734DB50413D0AD7F3912954413333339330DB5041666666668F295441713D0AB72DDB5041C3F528DC8C2954413D0AD7632ADB5041EC51B8DE892954419A99992927DB50410AD7A320862954415C8FC2A525DB5041C3F5282C84295441E17A142E20DB5041295C8F227D29544148E17AB41DDB5041F6285CEF84295441A4703D7A1DDB5041713D0AA785295441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000DB98AD372FDB5041F8FAEAE1B1295441C686515836DB50416278B82E97295441B81E85AB36DB50415C8FC2F595295441B39BF41837DB50410975285C94295441D8E5081734DB5041EC2BD7F391295441A10B329330DB504106AF67668F295441F4E30AB72DDB5041D59E29DC8C29544182B4D6632ADB5041312CB9DE8929544173033C6A27DB50419380966B86295441B4C5982927DB50415EC6A220862954410ACDC1A525DB5041103A2A2C84295441EE4A6CBC22DB50416A6ACC6C802954410E71152E20DB5041069990227D295441775DD7ED1DDB504162C8953A8429544148E17AB41DDB5041F6285CEF84295441A4703D7A1DDB5041713D0AA785295441990A52E816DB5041D66ACC5C9A29544116B46D2A1CDB5041C1A0DC789E2954410000009021DB50410AD7A3B0A22954418FC2F5682ADB5041295C8F82AC295441DB98AD372FDB5041F8FAEAE1B1295441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 3075874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD28727544166666616D9DC5041AE47E1BA862754411F85EBF1D3DC504152B81E558627544166666616D0DC50419A999909862754417B14AE47CCDC50410AD7A3B08527544148E17AF4C9DC5041E17A147E85275441E17A14DEC8DC5041B81E854B85275441F6285C2FC7DC5041666666E684275441AE47E1DAC6DC50418FC2F5E8852754419A999929C6DC5041EC51B8FE882754415C8FC275C7DC5041E17A148E9C27544101030000000100000028000000D7A3704DD1DC50413D0AD7730D285441713D0A07D5DC50415C8FC2351028544185EB5148D9DC504114AE47A112285441AE47E1CADADC50417B14AEE711285441A4703D0ADEDC5041B81E859B11285441713D0A07E0DC50411F85EB310E285441F6285CBFE1DC5041F6285CCF0828544185EB5188E2DC50413333337304285441AE47E1DAE4DC50413D0AD733EF2754419A9999A9E5DC5041AE47E18AE82754410AD7A310E6DC504114AE4781E4275441AE47E12AE6DC50417B14AE07E22754411F85EB91E6DC50410AD7A3D0DA275441AE47E12AE7DC5041E17A145ECF27544114AE47A1E7DC5041AE47E17ACD27544166666646E8DC5041B81E853BCB275441E17A140EE9DC5041E17A143ECB275441AE47E1AAEDDC5041E17A149EB92754417B14AE97F1DC5041EC51B83EA8275441E17A14AEF1DC5041D7A370ADA7275441D7A3705DE8DC50415C8FC295A6275441F6285C4FE4DC504133333383A62754417B14AEF7DFDC504166666666A62754410AD7A3B0DBDC5041F6285C4FA627544152B81E25D8DC50418FC2F538A62754418FC2F5C8D4DC50417B14AEA7A6275441CDCCCCBCD4DC5041D7A3702DA7275441E17A148ECCDC5041AE47E1DAFF275441295C8FE2B3DC504148E17A54FC275441D7A370DDB1DC504185EB5108072854411F85EBA1B3DC5041CDCCCC5C07285441295C8F52B8DC504148E17A14082854418FC2F5F8BBDC50418FC2F5D80928544185EB5168BDDC5041AE47E13A0B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E2854418FC2F5C8C8DC50419A99997910285441B81E859BCADC50410AD7A3600E2854410AD7A340CEDC50419A9999C90A285441D7A3704DD1DC50413D0AD7730D2854410103000000010000002A0000009A9999E9C3DC5041AE47E13A83275441295C8F72C9DC5041CDCCCC9C84275441F6285CFFCADC5041295C8FD284275441C3F5283CD6DC50413D0AD7B385275441AE47E15AE3DC50415C8FC2F5862754419A999979E3DC5041713D0A8786275441CDCCCC6CE4DC504148E17A247F275441E17A148EE4DC5041295C8F227E275441713D0A07E8DC5041E17A14AE64275441CDCCCC5CD0DC504185EB51E8662754410AD7A320D1DC5041D7A370ED6D27544114AE4721CEDC5041B81E85AB702754417B14AE57CFDC504114AE47C17127544148E17AD4D1DC5041A4703DCA79275441C3F5284CD0DC5041F6285CCF7A275441F6285CAFCDDC504114AE47C1712754415C8FC2B5C8DC5041EC51B85E7427544185EB5148C9DC5041C3F5289C6D275441D7A3701DC7DC50417B14AEC76C27544100000090C7DC5041D7A370BD67275441E17A14EEC2DC5041CDCCCC2C6827544114AE472190DC504152B81EF56C275441B81E856B89DC5041A4703D2A6F2754411F85EBF186DC50413D0AD713702754411F85EB7185DC5041A4703DAA702754419A9999A984DC50413D0AD7937127544185EB518884DC5041AE47E13A722754410AD7A36088DC504152B81E3573275441EC51B85E8DDC50419A999919752754418FC2F5689ADC5041B81E85CB7927544133333363A4DC50410AD7A3F07C27544114AE47E1A9DC5041333333B37E275441A4703D5AACDC504148E17A547F275441AE47E1BAAFDC5041295C8F228027544166666686B3DC5041295C8FC2802754411F85EBB1B6DC5041B81E854B8127544166666676B9DC50419A9999C9812754411F85EB01BCDC5041000000308227544185EB5148BEDC504152B81E7582275441AE47E19AC0DC5041E17A14AE82275441CDCCCC4CC2DC5041B81E85DB822754419A9999E9C3DC5041AE47E13A83275441
+</a>
+
+<b>
+010600000001000000010300000001000000380000003ACAF8D5C7DC5041C502BF358427544112FAF23ED0DC5041CE82C63B8527544138A03C3ED7DC5041295D93CC852754417198D52BDDDC50418406085E86275441E6F0C95EE3DC5041CD02ACE786275441435D466EE4DC50415062B6197F275441FD4A060CE6DC504191A4BB327327544172091DACE7DC5041BDEF9C4867275441713D0A07E8DC5041E17A14AE642754413EC6A13FDDDC5041D920D0B165275441B1F9F749D3DC50419DB1CDA166275441CDCCCC5CD0DC504185EB51E8662754410BF662EFD0DC50413AA277296C275441D8820C1ED1DC5041369FA9D56D2754419F75594BD0DC504182F295B06E2754410D85EA00CEDC50411831AAC870275441D37FBB00CFDC50413DB1797371275441A03B9674CFDC50416CFD35CE712754418B0634EFCFDC5041470DB9AA732754413A41C524D1DC50416902AC9277275441FF4796D3D1DC504111085BC779275441C3F5284CD0DC5041F6285CCF7A27544166CDB78ECFDC5041899EBF3E782754419BE21067CEDC50417097023E74275441006194B4CDDC5041970D5FD37127544143580EB5CADC50411FEAF751732754415C8FC2B5C8DC5041EC51B85E742754416AA943FBC8DC504154DC052A7127544154748B45C9DC504140D4BA8E6D2754419274BF1FC7DC504112FBAFAD6C275441F52BA95BC7DC50411DE1E90A6A27544100000090C7DC5041D7A370BD6727544174CA4183BFDC504127B9287F68275441314B4DD8BBDC50419A478ED768275441AAC059A69CDC50411C126EC76B275441B698279694DC50410DAAD5896C27544114ABEFF38FDC5041A49909046D2754418C2C343A8EDC5041928D5C956D275441F07C6ED786DC5041B6F1361E7027544118F7F7AB85DC5041551981937027544197BE7D2785DC5041F1B20801712754416A02A9A884DC50410A0B6289712754412205E59A84DC5041AFE7553C7227544148F5E06485DC50414B26526C722754416B23701189DC5041DBAB2D6B73275441B7D280A08FDC50412BE8A0E975275441A37C641797DC504178F9A29978275441CC244C499DDC5041F3394CBB7A2754418BF3FD1CA5DC504113B42C2C7D27544154B361A7A9DC504170732FA87E275441EE993329AEDC50415FBBD2C27F275441C65ABACDB3DC50415D1699CE80275441E272084FB4DC5041E8B76BE480275441CBF81987BCDC5041C8B7025E8227544196241C76C2DC50412F1B10E5822754413ACAF8D5C7DC5041C502BF3584275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 5260910
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD28727544166666616D9DC5041AE47E1BA862754411F85EBF1D3DC504152B81E558627544166666616D0DC50419A999909862754417B14AE47CCDC50410AD7A3B08527544148E17AF4C9DC5041E17A147E85275441E17A14DEC8DC5041B81E854B85275441F6285C2FC7DC5041666666E684275441AE47E1DAC6DC50418FC2F5E8852754419A999929C6DC5041EC51B8FE882754415C8FC275C7DC5041E17A148E9C27544101030000000100000028000000D7A3704DD1DC50413D0AD7730D285441713D0A07D5DC50415C8FC2351028544185EB5148D9DC504114AE47A112285441AE47E1CADADC50417B14AEE711285441A4703D0ADEDC5041B81E859B11285441713D0A07E0DC50411F85EB310E285441F6285CBFE1DC5041F6285CCF0828544185EB5188E2DC50413333337304285441AE47E1DAE4DC50413D0AD733EF2754419A9999A9E5DC5041AE47E18AE82754410AD7A310E6DC504114AE4781E4275441AE47E12AE6DC50417B14AE07E22754411F85EB91E6DC50410AD7A3D0DA275441AE47E12AE7DC5041E17A145ECF27544114AE47A1E7DC5041AE47E17ACD27544166666646E8DC5041B81E853BCB275441E17A140EE9DC5041E17A143ECB275441AE47E1AAEDDC5041E17A149EB92754417B14AE97F1DC5041EC51B83EA8275441E17A14AEF1DC5041D7A370ADA7275441D7A3705DE8DC50415C8FC295A6275441F6285C4FE4DC504133333383A62754417B14AEF7DFDC504166666666A62754410AD7A3B0DBDC5041F6285C4FA627544152B81E25D8DC50418FC2F538A62754418FC2F5C8D4DC50417B14AEA7A6275441CDCCCCBCD4DC5041D7A3702DA7275441E17A148ECCDC5041AE47E1DAFF275441295C8FE2B3DC504148E17A54FC275441D7A370DDB1DC504185EB5108072854411F85EBA1B3DC5041CDCCCC5C07285441295C8F52B8DC504148E17A14082854418FC2F5F8BBDC50418FC2F5D80928544185EB5168BDDC5041AE47E13A0B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E2854418FC2F5C8C8DC50419A99997910285441B81E859BCADC50410AD7A3600E2854410AD7A340CEDC50419A9999C90A285441D7A3704DD1DC50413D0AD7730D2854410103000000010000002A0000009A9999E9C3DC5041AE47E13A83275441295C8F72C9DC5041CDCCCC9C84275441F6285CFFCADC5041295C8FD284275441C3F5283CD6DC50413D0AD7B385275441AE47E15AE3DC50415C8FC2F5862754419A999979E3DC5041713D0A8786275441CDCCCC6CE4DC504148E17A247F275441E17A148EE4DC5041295C8F227E275441713D0A07E8DC5041E17A14AE64275441CDCCCC5CD0DC504185EB51E8662754410AD7A320D1DC5041D7A370ED6D27544114AE4721CEDC5041B81E85AB702754417B14AE57CFDC504114AE47C17127544148E17AD4D1DC5041A4703DCA79275441C3F5284CD0DC5041F6285CCF7A275441F6285CAFCDDC504114AE47C1712754415C8FC2B5C8DC5041EC51B85E7427544185EB5148C9DC5041C3F5289C6D275441D7A3701DC7DC50417B14AEC76C27544100000090C7DC5041D7A370BD67275441E17A14EEC2DC5041CDCCCC2C6827544114AE472190DC504152B81EF56C275441B81E856B89DC5041A4703D2A6F2754411F85EBF186DC50413D0AD713702754411F85EB7185DC5041A4703DAA702754419A9999A984DC50413D0AD7937127544185EB518884DC5041AE47E13A722754410AD7A36088DC504152B81E3573275441EC51B85E8DDC50419A999919752754418FC2F5689ADC5041B81E85CB7927544133333363A4DC50410AD7A3F07C27544114AE47E1A9DC5041333333B37E275441A4703D5AACDC504148E17A547F275441AE47E1BAAFDC5041295C8F228027544166666686B3DC5041295C8FC2802754411F85EBB1B6DC5041B81E854B8127544166666676B9DC50419A9999C9812754411F85EB01BCDC5041000000308227544185EB5148BEDC504152B81E7582275441AE47E19AC0DC5041E17A14AE82275441CDCCCC4CC2DC5041B81E85DB822754419A9999E9C3DC5041AE47E13A83275441
+</a>
+
+<b>
+010600000001000000010300000001000000380000003ACAF8D5C7DC5041C502BF358427544112FAF23ED0DC5041CE82C63B8527544138A03C3ED7DC5041295D93CC852754417198D52BDDDC50418406085E86275441E6F0C95EE3DC5041CD02ACE786275441435D466EE4DC50415062B6197F275441FD4A060CE6DC504191A4BB327327544172091DACE7DC5041BDEF9C4867275441713D0A07E8DC5041E17A14AE642754413EC6A13FDDDC5041D920D0B165275441B1F9F749D3DC50419DB1CDA166275441CDCCCC5CD0DC504185EB51E8662754410BF662EFD0DC50413AA277296C275441D8820C1ED1DC5041369FA9D56D2754419F75594BD0DC504182F295B06E2754410D85EA00CEDC50411831AAC870275441D37FBB00CFDC50413DB1797371275441A03B9674CFDC50416CFD35CE712754418B0634EFCFDC5041470DB9AA732754413A41C524D1DC50416902AC9277275441FF4796D3D1DC504111085BC779275441C3F5284CD0DC5041F6285CCF7A27544166CDB78ECFDC5041899EBF3E782754419BE21067CEDC50417097023E74275441006194B4CDDC5041970D5FD37127544143580EB5CADC50411FEAF751732754415C8FC2B5C8DC5041EC51B85E742754416AA943FBC8DC504154DC052A7127544154748B45C9DC504140D4BA8E6D2754419274BF1FC7DC504112FBAFAD6C275441F52BA95BC7DC50411DE1E90A6A27544100000090C7DC5041D7A370BD6727544174CA4183BFDC504127B9287F68275441314B4DD8BBDC50419A478ED768275441AAC059A69CDC50411C126EC76B275441B698279694DC50410DAAD5896C27544114ABEFF38FDC5041A49909046D2754418C2C343A8EDC5041928D5C956D275441F07C6ED786DC5041B6F1361E7027544118F7F7AB85DC5041551981937027544197BE7D2785DC5041F1B20801712754416A02A9A884DC50410A0B6289712754412205E59A84DC5041AFE7553C7227544148F5E06485DC50414B26526C722754416B23701189DC5041DBAB2D6B73275441B7D280A08FDC50412BE8A0E975275441A37C641797DC504178F9A29978275441CC244C499DDC5041F3394CBB7A2754418BF3FD1CA5DC504113B42C2C7D27544154B361A7A9DC504170732FA87E275441EE993329AEDC50415FBBD2C27F275441C65ABACDB3DC50415D1699CE80275441E272084FB4DC5041E8B76BE480275441CBF81987BCDC5041C8B7025E8227544196241C76C2DC50412F1B10E5822754413ACAF8D5C7DC5041C502BF3584275441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546419 - 1464990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000060000000AA648D40C5FE50411D055C5119385541066986D5C3FE5041076C111A1A3855418000816BC3FE5041BC1842D41D385541008BC1D6C3FE5041AC28B07121385541F97EDC9FC0FE50419DF0FE7C223855412591C92CBFFE504171DE11F023385541288414A7BAFE5041F968AB82283855410B4CB600B8FE504198DA570A2938554177B25AAFB6FE5041647183A22C3855411D5C42D2B4FE50417B13994A2E385541F308DB79BAFE504148A9A6932F385541BE8DA14CBAFE50413166CB0C3238554196ED23C4B6FE504159064995353855413EB6C3ECB4FE5041DACD2DAE393855411F0DAB2AACFE5041A94644A63C385541365086B1A9FE5041133DB7003D38554101D54C84A9FE50414545546B41385541AE21B5B0A6FE50415915932F43385541936B3D67ADFE504103EF5E9944385541CFDBF9B3B2FE5041E1436430463855417FAA483DB9FE5041DED0C76D4A385541F0953EB7BEFE5041638CFCAB51385541B1B2E5A7BDFE5041638CFCAB513855412CF7B069B6FE5041DED0C76D4A385541A15265C3AFFE5041CE4E074048385541BB3A5955A9FE5041A3AE4A134B38554198458D41ACFE5041BAAF1C5E4B385541919A9C28ACFE504172639DCD4D385541C3E5496EA9FE5041E713A85C4F3855415B8B2011A8FE5041FD147AA74F385541C1836205A6FE504114164CF24F385541A3D79FA1A5FE504189C65681513855411826C3C7A3FE5041BD73EB2F523855418C74E6EDA1FE5041DA1FAE9352385541BF217B9CA2FE50411BC13C0B503855417937E374A8FE50419C035AFA4A3855417C2862E0AFFE50412B8FDC21483855416BCBBFDEA9FE5041ACC82A0346385541FDDFC964A4FE5041D6DB444E45385541BEFC7055A3FE5041F8863FB74338554136CE9F54A0FE50418D90CC5C4338554157799ABD9EFE50416CE5D1F3443855415AEC36809AFE5041A1600B214538554111A1BE8E98FE50418328AD7A42385541F36860E895FE5041F8863FB74338554122EF16F690FE5041B5304AE546385541160511B786FE5041AEC82A0346385541836E20D482FE504136F7FB0349385541205EE6FE79FE5041B4BDAD224B38554162B4DBD076FE5041D568A88B49385541FBE76FB273FE50410E607FBA49385541FACED05071FE5041679DF8354938554183508C9F67FE504168FF986E4D385541E780AA9464FE5041D89526BB4C385541E7517CDA62FE504133845F414D385541FB21BB9E64FE504104FEA83352385541F1B99BBC63FE504157B1400755385541204052CA5EFE5041A0FCB8F856385541C0C2ACF35AFE504176EB1EF2553855417024008957FE5041297FB04A57385541C90AD49952FE5041C89C36815A385541D7E58F3E4FFE5041659B46465F385541ABE1BF8D5DFE50414763E89F5C385541E7517CDA62FE50415EA6C3265A385541F8AE1EDC68FE50411FC36A1759385541C3422F4976FE5041018B0C7156385541A5191B3D81FE5041A0FCB8F85638554194CBC2D588FE50418C2C7A3455385541984DA93292FE50412D9E26BC5538554128D2E2E699FE504113252F305738554167E1B99F9FFE50410DF32B53573855410788EE66AEFE5041DC4137CF5738554119D61423BBFE504149EF872F543855410E667D7BC0FE50419C0736D95138554129F2FC1BC3FE50417FB9E02E51385541D577A78BC4FE5041B34A11604F38554182C40FB8C1FE50419BF8EB3E44385541F02D1FD5BDFE504170E5D1F3443855418537AC7ABDFE5041B33BC7C541385541B73F49E5C1FE504174586EB640385541F622A2F4C2FE5041AC4644A63C3855416119154FC3FE504184A6C61D393855416119154FC3FE5041529E29B334385541B22B0D5AC4FE504133A72AA32F3855410C822537C6FE50415DA078CE2B385541078044F6C8FE5041DE304DDC25385541A37E54BBCDFE504124FADE701E385541D2135563D6FE50414B8B125F143855419230FC53D5FE5041CDC460401238554157C03F07D0FE504138BBD39A123855415A521065CEFE50417300C31814385541D3D06B99CBFE5041304CC0E31338554111E863D8C9FE50414123F37C133855417761B45AC7FE50417300C31814385541E947E64FC6FE50413EB056BA17385541AA648D40C5FE50411D055C5119385541
+</a>
+
+<b>
+010600000001000000010300000001000000360000000C2A5B1AA6FE504115271B6757385541FDA0BB35A4FE504125D6388051385541AE92EFA49FFE50411E88C98052385541415FA5309BFE5041C6184FD65238554149C0534A96FE504158D2C54752385541A01C8FDA99FE504108B1BA9C51385541404C66169FFE50419A6A310E513855419FF610A6A1FE5041E4500CD44E3855417D37E374A8FE504197035AFA4A385541710F368FABFE5041A3CBDF274C38554109F19DCBB1FE50418E07105E47385541638696AAA9FE504187CCDF7844385541FEDFC964A4FE5041D2DB444E45385541C2FC7055A3FE5041F4863FB74338554131CE9F54A0FE50419290CC5C4338554153799ABD9EFE504170E5D1F3443855419115EFC49CFE50414274612A453855415BEC36809AFE50419C600B214538554110A1BE8E98FE50418228AD7A42385541F66860E895FE5041F4863FB743385541D620F93D93FE50418D3B70B24538554125EF16F690FE5041B0304AE546385541160511B786FE5041ABC82A0346385541806E20D482FE504132F7FB0349385541235EE6FE79FE5041B3BDAD224B38554166B4DBD076FE5041D568A88B49385541FAE76FB273FE504112607FBA493855416FD6C05871FE5041A10E4A3F4938554126D7A9BE68FE5041E6187B074D38554186508C9F67FE50416BFF986E4D385541E880AA9464FE5041D69526BB4C385541EB517CDA62FE504135845F414D3855410022BB9E64FE504106FEA83352385541082A482E64FE5041F8DAFDFE53385541F0B99BBC63FE504156B14007553855411E4052CA5EFE5041A1FCB8F856385541C1C2ACF35AFE504173EB1EF2553855417324008957FE5041247FB04A57385541C40AD49952FE5041CA9C36815A385541DCE58F3E4FFE5041659B46465F385541ADE1BF8D5DFE50414B63E89F5C385541EB517CDA62FE50415DA6C3265A385541F7AE1EDC68FE504122C36A17593855414DA2F3F26DFE504119007B03583855411F35D56774FE5041D3B6567056385541FC22723776FE5041194906485638554156880F8C7FFE504194E433DF5638554179085C3381FE504125C91FD55638554197CBC2D588FE50418C2C7A3455385541D29257BA8FFE50412FD2376055385541974DA93292FE50412F9E26BC5538554127D2E2E699FE504111252F305738554163E1B99F9FFE50410DF32B53573855410C2A5B1AA6FE504115271B6757385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546419 - 3412314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000060000000AA648D40C5FE50411D055C5119385541066986D5C3FE5041076C111A1A3855418000816BC3FE5041BC1842D41D385541008BC1D6C3FE5041AC28B07121385541F97EDC9FC0FE50419DF0FE7C223855412591C92CBFFE504171DE11F023385541288414A7BAFE5041F968AB82283855410B4CB600B8FE504198DA570A2938554177B25AAFB6FE5041647183A22C3855411D5C42D2B4FE50417B13994A2E385541F308DB79BAFE504148A9A6932F385541BE8DA14CBAFE50413166CB0C3238554196ED23C4B6FE504159064995353855413EB6C3ECB4FE5041DACD2DAE393855411F0DAB2AACFE5041A94644A63C385541365086B1A9FE5041133DB7003D38554101D54C84A9FE50414545546B41385541AE21B5B0A6FE50415915932F43385541936B3D67ADFE504103EF5E9944385541CFDBF9B3B2FE5041E1436430463855417FAA483DB9FE5041DED0C76D4A385541F0953EB7BEFE5041638CFCAB51385541B1B2E5A7BDFE5041638CFCAB513855412CF7B069B6FE5041DED0C76D4A385541A15265C3AFFE5041CE4E074048385541BB3A5955A9FE5041A3AE4A134B38554198458D41ACFE5041BAAF1C5E4B385541919A9C28ACFE504172639DCD4D385541C3E5496EA9FE5041E713A85C4F3855415B8B2011A8FE5041FD147AA74F385541C1836205A6FE504114164CF24F385541A3D79FA1A5FE504189C65681513855411826C3C7A3FE5041BD73EB2F523855418C74E6EDA1FE5041DA1FAE9352385541BF217B9CA2FE50411BC13C0B503855417937E374A8FE50419C035AFA4A3855417C2862E0AFFE50412B8FDC21483855416BCBBFDEA9FE5041ACC82A0346385541FDDFC964A4FE5041D6DB444E45385541BEFC7055A3FE5041F8863FB74338554136CE9F54A0FE50418D90CC5C4338554157799ABD9EFE50416CE5D1F3443855415AEC36809AFE5041A1600B214538554111A1BE8E98FE50418328AD7A42385541F36860E895FE5041F8863FB74338554122EF16F690FE5041B5304AE546385541160511B786FE5041AEC82A0346385541836E20D482FE504136F7FB0349385541205EE6FE79FE5041B4BDAD224B38554162B4DBD076FE5041D568A88B49385541FBE76FB273FE50410E607FBA49385541FACED05071FE5041679DF8354938554183508C9F67FE504168FF986E4D385541E780AA9464FE5041D89526BB4C385541E7517CDA62FE504133845F414D385541FB21BB9E64FE504104FEA83352385541F1B99BBC63FE504157B1400755385541204052CA5EFE5041A0FCB8F856385541C0C2ACF35AFE504176EB1EF2553855417024008957FE5041297FB04A57385541C90AD49952FE5041C89C36815A385541D7E58F3E4FFE5041659B46465F385541ABE1BF8D5DFE50414763E89F5C385541E7517CDA62FE50415EA6C3265A385541F8AE1EDC68FE50411FC36A1759385541C3422F4976FE5041018B0C7156385541A5191B3D81FE5041A0FCB8F85638554194CBC2D588FE50418C2C7A3455385541984DA93292FE50412D9E26BC5538554128D2E2E699FE504113252F305738554167E1B99F9FFE50410DF32B53573855410788EE66AEFE5041DC4137CF5738554119D61423BBFE504149EF872F543855410E667D7BC0FE50419C0736D95138554129F2FC1BC3FE50417FB9E02E51385541D577A78BC4FE5041B34A11604F38554182C40FB8C1FE50419BF8EB3E44385541F02D1FD5BDFE504170E5D1F3443855418537AC7ABDFE5041B33BC7C541385541B73F49E5C1FE504174586EB640385541F622A2F4C2FE5041AC4644A63C3855416119154FC3FE504184A6C61D393855416119154FC3FE5041529E29B334385541B22B0D5AC4FE504133A72AA32F3855410C822537C6FE50415DA078CE2B385541078044F6C8FE5041DE304DDC25385541A37E54BBCDFE504124FADE701E385541D2135563D6FE50414B8B125F143855419230FC53D5FE5041CDC460401238554157C03F07D0FE504138BBD39A123855415A521065CEFE50417300C31814385541D3D06B99CBFE5041304CC0E31338554111E863D8C9FE50414123F37C133855417761B45AC7FE50417300C31814385541E947E64FC6FE50413EB056BA17385541AA648D40C5FE50411D055C5119385541
+</a>
+
+<b>
+010600000001000000010300000001000000360000000C2A5B1AA6FE504115271B6757385541FDA0BB35A4FE504125D6388051385541AE92EFA49FFE50411E88C98052385541415FA5309BFE5041C6184FD65238554149C0534A96FE504158D2C54752385541A01C8FDA99FE504108B1BA9C51385541404C66169FFE50419A6A310E513855419FF610A6A1FE5041E4500CD44E3855417D37E374A8FE504197035AFA4A385541710F368FABFE5041A3CBDF274C38554109F19DCBB1FE50418E07105E47385541638696AAA9FE504187CCDF7844385541FEDFC964A4FE5041D2DB444E45385541C2FC7055A3FE5041F4863FB74338554131CE9F54A0FE50419290CC5C4338554153799ABD9EFE504170E5D1F3443855419115EFC49CFE50414274612A453855415BEC36809AFE50419C600B214538554110A1BE8E98FE50418228AD7A42385541F66860E895FE5041F4863FB743385541D620F93D93FE50418D3B70B24538554125EF16F690FE5041B0304AE546385541160511B786FE5041ABC82A0346385541806E20D482FE504132F7FB0349385541235EE6FE79FE5041B3BDAD224B38554166B4DBD076FE5041D568A88B49385541FAE76FB273FE504112607FBA493855416FD6C05871FE5041A10E4A3F4938554126D7A9BE68FE5041E6187B074D38554186508C9F67FE50416BFF986E4D385541E880AA9464FE5041D69526BB4C385541EB517CDA62FE504135845F414D3855410022BB9E64FE504106FEA83352385541082A482E64FE5041F8DAFDFE53385541F0B99BBC63FE504156B14007553855411E4052CA5EFE5041A1FCB8F856385541C1C2ACF35AFE504173EB1EF2553855417324008957FE5041247FB04A57385541C40AD49952FE5041CA9C36815A385541DCE58F3E4FFE5041659B46465F385541ADE1BF8D5DFE50414B63E89F5C385541EB517CDA62FE50415DA6C3265A385541F7AE1EDC68FE504122C36A17593855414DA2F3F26DFE504119007B03583855411F35D56774FE5041D3B6567056385541FC22723776FE5041194906485638554156880F8C7FFE504194E433DF5638554179085C3381FE504125C91FD55638554197CBC2D588FE50418C2C7A3455385541D29257BA8FFE50412FD2376055385541974DA93292FE50412F9E26BC5538554127D2E2E699FE504111252F305738554163E1B99F9FFE50410DF32B53573855410C2A5B1AA6FE504115271B6757385541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978931 - 1124616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333D34F445141D7A370FDCC4354415C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF34354418FC2F5183F4451418FC2F5D8F4435441EC51B82E3D445141C3F528CCFD4354417B14AEB73D44514148E17AF4FD4354414FF0A1A844445141148C4BF6FF435441E2895A9D46445141BC5AC075004454419DD033EE47445141B23355DFFB43544144E250B44A445141AD69849EFC4354417F4A7E284D445141F9F9F415FC435441FF6BD24B4E44514117C35222F9435441DACB2A7750445141F459B279F443544142AB49885144514150550E3BF3435441B52B83A252445141E5AB1EE9F2435441A1F6C6175444514145B4F331F3435441B46E2BE9544451414D4895B3F1435441A8CD10E05444514136C3B75AEF4354416CA88BB254445141BC288C31EB43544153A9FEE656445141D46AC143EB435441EFD6585D57445141F80A6918E9435441034FBD2E5844514121B88974E84354419F7C17A5584451416E0552A5E5435441E9BC664E54445141DE781238E543544161C4C86252445141A2538D0AE54354415AAAD6534F4451415DF62844F34354412FF03C704E4451418B00E4F5F743544173A9631F4D445141EFD2897FF743544159170D3F49445141D483DBE5F5435441F6BE162845445141F92383BAF3435441072A027244445141747B069DF54354416FC6783C4344514177887F24F74354415534225C3F445141468A658DFB435441BDD098263E445141A6923AD6FB43544148E17A943F44514185EB51F8F4435441CDCCCC3C42445141A4703D8AE74354418FC2F5984344514185EB5198DF435441666666C644445141713D0A67D9435441AE47E1BA49445141666666F6DA435441B81E858B4D4451410AD7A3D0DD435441666666964F445141713D0A37E04354410AD7A340514451413D0AD793E24354418A71E9BE51445141E70CB4B9E34354418A71E9BE514451411384A556E243544148E17AB44B445141A4703D0AD8435441713D0A974D445141713D0A57D2435441333333D34F445141D7A370FDCC435441
+</a>
+
+<b>
+010600000001000000010300000001000000420000005C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF34354418FC2F5183F4451418FC2F5D8F4435441EC51B82E3D445141C3F528CCFD4354417B14AEB73D44514148E17AF4FD4354414BF0A1A844445141108C4BF6FF435441E4895A9D46445141B95AC075004454419DD033EE47445141AE3355DFFB43544146E250B44A445141B269849EFC4354417E4A7E284D445141FDF9F415FC435441FE6BD24B4E4451411BC35222F9435441DCCB2A7750445141EF59B279F443544145AB4988514451414E550E3BF3435441B92B83A252445141E8AB1EE9F24354419FF6C6175444514142B4F331F3435441B96E2BE954445141514895B3F1435441A3CD10E0544451413BC3B75AEF4354416AA88BB254445141B8288C31EB43544153A9FEE656445141CF6AC143EB435441F1D6585D57445141FC0A6918E9435441004FBD2E5844514125B88974E84354419B0B7B325844514178A0CD5DE84354417B14AE8758445141AE47E1AAE54354410739199656445141C1287C71E5435441EEBC664E54445141DE781238E54354415FC4C86252445141A6538D0AE5435441ECD909E94F44514172EF348EF04354418EEFE4044F445141C755FCE4F44354412BF03C704E4451419000E4F5F7435441ABDF86644E445141D2A0C6F1F74354413D0AD7634E44514152B81EF5F7435441260FE3124E4451413A7317D5F743544173A9631F4D445141F2D2897FF7435441DB3F77AC4A445141147DB77CF64354416FD21A3C49445141ED4FFAEAF5435441D7A3700D484451418FC2F5F8F7435441A4703DEA46445141B81E85DBF94354413D0AD73344445141295C8F92FE43544131696E553F4451419B41F98EFB43544189373BCF3E445141D0D48CAEFB435441713D0A173E4451410AD7A3F0FB43544148E17A943F44514185EB51F8F4435441CDCCCC3C42445141A4703D8AE74354418FC2F5984344514185EB5198DF435441666666C644445141713D0A67D9435441AE47E1BA49445141666666F6DA435441B81E858B4D4451410AD7A3D0DD435441666666964F445141713D0A37E04354410AD7A340514451413D0AD793E24354418971E9BE51445141E20CB4B9E34354418971E9BE5144514194B0056BE243544148E17AB44B445141A4703D0AD8435441713D0A974D445141713D0A57D2435441333333D34F445141D7A370FDCC4354415C8FC22550445141713D0A37CC435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978931 - 3826747
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333D34F445141D7A370FDCC4354415C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF34354418FC2F5183F4451418FC2F5D8F4435441EC51B82E3D445141C3F528CCFD4354417B14AEB73D44514148E17AF4FD4354414FF0A1A844445141148C4BF6FF435441E2895A9D46445141BC5AC075004454419DD033EE47445141B23355DFFB43544144E250B44A445141AD69849EFC4354417F4A7E284D445141F9F9F415FC435441FF6BD24B4E44514117C35222F9435441DACB2A7750445141F459B279F443544142AB49885144514150550E3BF3435441B52B83A252445141E5AB1EE9F2435441A1F6C6175444514145B4F331F3435441B46E2BE9544451414D4895B3F1435441A8CD10E05444514136C3B75AEF4354416CA88BB254445141BC288C31EB43544153A9FEE656445141D46AC143EB435441EFD6585D57445141F80A6918E9435441034FBD2E5844514121B88974E84354419F7C17A5584451416E0552A5E5435441E9BC664E54445141DE781238E543544161C4C86252445141A2538D0AE54354415AAAD6534F4451415DF62844F34354412FF03C704E4451418B00E4F5F743544173A9631F4D445141EFD2897FF743544159170D3F49445141D483DBE5F5435441F6BE162845445141F92383BAF3435441072A027244445141747B069DF54354416FC6783C4344514177887F24F74354415534225C3F445141468A658DFB435441BDD098263E445141A6923AD6FB43544148E17A943F44514185EB51F8F4435441CDCCCC3C42445141A4703D8AE74354418FC2F5984344514185EB5198DF435441666666C644445141713D0A67D9435441AE47E1BA49445141666666F6DA435441B81E858B4D4451410AD7A3D0DD435441666666964F445141713D0A37E04354410AD7A340514451413D0AD793E24354418A71E9BE51445141E70CB4B9E34354418A71E9BE514451411384A556E243544148E17AB44B445141A4703D0AD8435441713D0A974D445141713D0A57D2435441333333D34F445141D7A370FDCC435441
+</a>
+
+<b>
+010600000001000000010300000001000000420000005C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF34354418FC2F5183F4451418FC2F5D8F4435441EC51B82E3D445141C3F528CCFD4354417B14AEB73D44514148E17AF4FD4354414BF0A1A844445141108C4BF6FF435441E4895A9D46445141B95AC075004454419DD033EE47445141AE3355DFFB43544146E250B44A445141B269849EFC4354417E4A7E284D445141FDF9F415FC435441FE6BD24B4E4451411BC35222F9435441DCCB2A7750445141EF59B279F443544145AB4988514451414E550E3BF3435441B92B83A252445141E8AB1EE9F24354419FF6C6175444514142B4F331F3435441B96E2BE954445141514895B3F1435441A3CD10E0544451413BC3B75AEF4354416AA88BB254445141B8288C31EB43544153A9FEE656445141CF6AC143EB435441F1D6585D57445141FC0A6918E9435441004FBD2E5844514125B88974E84354419B0B7B325844514178A0CD5DE84354417B14AE8758445141AE47E1AAE54354410739199656445141C1287C71E5435441EEBC664E54445141DE781238E54354415FC4C86252445141A6538D0AE5435441ECD909E94F44514172EF348EF04354418EEFE4044F445141C755FCE4F44354412BF03C704E4451419000E4F5F7435441ABDF86644E445141D2A0C6F1F74354413D0AD7634E44514152B81EF5F7435441260FE3124E4451413A7317D5F743544173A9631F4D445141F2D2897FF7435441DB3F77AC4A445141147DB77CF64354416FD21A3C49445141ED4FFAEAF5435441D7A3700D484451418FC2F5F8F7435441A4703DEA46445141B81E85DBF94354413D0AD73344445141295C8F92FE43544131696E553F4451419B41F98EFB43544189373BCF3E445141D0D48CAEFB435441713D0A173E4451410AD7A3F0FB43544148E17A943F44514185EB51F8F4435441CDCCCC3C42445141A4703D8AE74354418FC2F5984344514185EB5198DF435441666666C644445141713D0A67D9435441AE47E1BA49445141666666F6DA435441B81E858B4D4451410AD7A3D0DD435441666666964F445141713D0A37E04354410AD7A340514451413D0AD793E24354418971E9BE51445141E20CB4B9E34354418971E9BE5144514194B0056BE243544148E17AB44B445141A4703D0AD8435441713D0A974D445141713D0A57D2435441333333D34F445141D7A370FDCC4354415C8FC22550445141713D0A37CC435441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538333 - 41001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000005D31CC661C5751411858392C1C6754413DE307EA1B5751411C2028391A67544156ABF6F61957514161C6B8DC14675441B0E94CF4175751412A32B6220F6754411F17F43C1457514172087079046754414BF595D31057514129B54527FB66544143C147800C575141988B617EFC66544146F17033075751414AB18287FD665441890C289202575141B8603CA0FE6654415B55E8390657514179155C8E0867544110FD1B130C575141F623EBD817675441858573ED0C5751415F48CBAC196754412CAB94F60D575141351C65991C675441D1E527540E575141FF8F4A1F1E67544114AE47D10F575141E17A141E1E675441A4703D0A1157514114AE47911D6754415006458812575141836B6A4B1C675441B92A255C14575141E0825E0A1A6754412428A3F115575141B222AAA3186754417A36D03B19575141E90D384F1967544168201DB21A575141550BB6E41A675441FC453EBB1B5751416A2E55831D6754415D31CC661C5751411858392C1C675441
+</a>
+
+<b>
+0106000000010000000103000000010000003100000068201DB21A575141550BB6E41A6754411ABE10121B5751413E8B69D71B67544138CFC8B61B575141CA09BE0F1D67544130C49D201C575141443296B81C675441DD884A641C5751411AB632221C675441C964A5601C575141CF259E131C67544192AD965A1C575141FA4863FB1B6754412914CD591C57514156E33CF81B675441DB5A65C51A5751410F2969141767544150CC55B61A5751411161FEEA166754417C4D1D991A5751414904A39A166754419ED7361C1A5751412740294315675441A5636A001A5751413B01B7F61467544110358F061A575141D8004C3A156754410BDADE74155751417DEEF94F086754415E6B675514575141E81F95BF046754411F17F43C145751417208707904675441A4BA6AFA115751413407CB4CFE6654414CF595D310575141E83EDE36FB66544133558BE00F575141E5B79472FB66544143C147800C575141988B617EFC665441E0466E3108575141D45FE155FD66544167A8501A055751412D7FB906FE665441890C289202575141B8603CA0FE6654418E69AD0005575141C0F26A3B056754412AB70AA20757514189FAF53B0C67544153A9962E08575141AF8B6EAB0D67544160229EAE095751418315829711675441464C21C50B57514143FEC9CF16675441B8FBDADD0C575141A397D05E19675441858573ED0C5751415F48CBAC1967544128CF8D050D5751417845D9F019675441B2499F5A0D575141D1F784C51A675441EA342D060E575141B82F96B81C675441656FC0630E5751412706B20F1E67544114AE47D10F575141E17A141E1E675441A4703D0A1157514114AE47911D6754415D755EB5115751411C634FFF1C675441808A17B1135751416AB755DD1A675441B92A255C14575141E0825E0A1A6754419B72D7E91457514170B9058D19675441C78AD9C215575141AC22AAA318675441209760E915575141ABB6F8AA186754412428A3F115575141B222AAA31867544161E80BBF18575141A6706E20196754419BAC372C1957514124849F3F1967544163B8633A195751414DCEED4E196754417A36D03B19575141E90D384F1967544168201DB21A575141550BB6E41A675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903230 - 60213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002A0000000AD7A330E8FD50418FC2F52838465441C3F528BCEFFD5041E17A14EE38465441EC51B8FEEFFD504152B81E5536465441333333F3EFFD504148E17A2434465441E17A14CEEFFD50411F85EB712F465441A4703D8AEAFD5041AE47E14A2F4654413D0AD7E3E0FD5041B81E850B2E465441E17A14BED4FD50411F85EBA12B465441EC51B8AEC6FD5041295C8FE228465441295C8FB2BDFD50418FC2F578274654411F85EB31BEFD5041F6285C8F23465441C3F5281CC0FD5041333333931A4654410AD7A370C1FD5041AE47E16A15465441F6285C6FD4FD504152B81E4519465441AE47E18AD5FD50418FC2F5081046544114AE47E1D6FD50413333331307465441F6285CAFBBFD5041AE47E11A01465441E17A14BEBBFD50417B14AE07034654413D0AD713BBFD5041AE47E13A08465441EC51B8DEBAFD5041B81E859B09465441666666C6BAFD5041A4703D3A0A465441AE47E19ABAFD5041EC51B83E0B465441A4703DEAB9FD5041EC51B82E0E46544166666696B9FD504148E17A940F4654410AD7A3D0B8FD5041000000B012465441A4703D7AB8FD5041B81E850B14465441A4703DAAB7FD5041D7A370ED174654410AD7A3A0B7FD50413333338318465441295C8F92B7FD504148E17A7419465441A4703D9AB7FD5041AE47E12A1B46544185EB51A8B7FD50418FC2F5681E465441B81E856BBAFD5041B81E850B1F4654413D0AD7B3B9FD50413D0AD7F32A465441B81E853BB9FD50413D0AD73330465441CDCCCC6CBEFD504185EB518830465441D7A3709DC4FD5041F6285CBF3146544152B81E95CAFD5041713D0AF7324654417B14AE87D0FD504114AE47713446544114AE47F1D9FD50415C8FC24536465441E17A144EDDFD5041000000E036465441713D0A27E1FD5041D7A3707D374654410AD7A330E8FD50418FC2F52838465441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000011E3116EBFD5041687AA37438465441C3F528BCEFFD5041E17A14EE38465441690925F4EFFD50415B85C5BE36465441BE11E7F9EFFD5041F584AC6A35465441E17A14CEEFFD50411F85EB712F465441A4703D8AEAFD5041AE47E14A2F4654413D0AD7E3E0FD5041B81E850B2E465441E17A14BED4FD50411F85EBA12B4654418E047E74C6FD50413AFE67D928465441295C8FB2BDFD50418FC2F578274654411F85EB31BEFD5041F6285C8F23465441C3F5281CC0FD5041333333931A4654410AD7A370C1FD5041AE47E16A15465441F6285C6FD4FD504152B81E4519465441AE47E18AD5FD50418FC2F5081046544114AE47E1D6FD50413333331307465441F6285CAFBBFD5041AE47E11A01465441E17A14BEBBFD50417B14AE07034654413D0AD713BBFD5041AE47E13A08465441EC51B8DEBAFD5041B81E859B09465441666666C6BAFD5041A4703D3A0A465441AE47E19ABAFD5041EC51B83E0B465441A4703DEAB9FD5041EC51B82E0E46544166666696B9FD504148E17A940F4654410AD7A3D0B8FD5041000000B012465441A4703DAAB7FD5041D7A370ED17465441295C8F92B7FD504148E17A7419465441A4703D9AB7FD5041AE47E12A1B46544185EB51A8B7FD50418FC2F5681E465441B81E856BBAFD5041B81E850B1F4654413D0AD7B3B9FD50413D0AD7F32A465441B81E853BB9FD50413D0AD73330465441CDCCCC6CBEFD504185EB518830465441D7A3709DC4FD5041F6285CBF3146544152B81E95CAFD5041713D0AF7324654417B14AE87D0FD504114AE47713446544114AE47F1D9FD50415C8FC24536465441C06A15F3E0FD50412095227537465441D641F5FBE4FD504130DCD3DA374654410AD7A330E8FD50418FC2F52838465441011E3116EBFD5041687AA37438465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>696791 - 1371802
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004500000052B81E35B92F51417B14AED755EA5441CFF8BD2EB92F514131E1DEBE50EA544179AD4F88B92F51418DB478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F51411C970D7C29EA54412BC3EFBAC22F51411FAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441F3868316B72F51415F9464DE26EA544111CF8AA6B32F51411363FAF52AEA54418BE957E7AE2F51419F60DA8F2EEA54415C8FC225AA2F5141333333F330EA54410AD7A310A62F51415C8FC2B533EA5441AE47E10AA02F51418FC2F5C837EA54414D82D66C9B2F51419F60DA8F2EEA5441F60EB5F3992F514136D50B3C2EEA5441E56D592B972F51412A9354AB28EA5441F64EF48C952F514197BDEB982AEA54416389B6EE902F5141A77CD57330EA5441811E7B8A8E2F5141A2C04AC033EA544197F00C0E8B2F5141ED24DA7C36EA5441C39F03F1872F51416C04D02238EA5441C2B371A2852F5141ADC3A9E73CEA544190521BA5842F51411235390F3EEA544147188BBF822F514127B0AD9D40EA544115B734C2812F5141F241AF1942EA5441FDDDFAD9802F5141D5ACEA7D44EA54419B4DCF0D822F5141A74FFAC447EA5441C9BFE053852F51411505D3CE4EEA54417B14AE07862F51418FC2F55850EA54411A1B55F2872F51418A07F3344BEA54410274A92A8E2F5141A2AE9EFC44EA54415F11D559962F5141E83EAD1C3EEA5441F6285CEF992F51418FC2F5483DEA5441B0F5F7E59C2F514151CA7B703EEA5441F60EB5F3992F514140B2CE953FEA5441C89CA3AD962F51410BB1BE6241EA5441F7FC5718922F514121F375F346EA544115FA9FE68E2F514164E907D14AEA5441EBF66E9E8D2F5141633D42364FEA5441EA200CD18F2F514137F9FC3951EA5441E809954F952F514137F9FC3951EA544131287201972F51417701A33554EA544152B81E15992F5141CDCCCCCC56EA5441B41E3F439C2F51419AD0536D60EA5441FC37DA859A2F5141DA50F4CC61EA5441BCB73926992F5141408441E662EA5441B76A7BF5972F5141A7B78EFF63EA5441A1A9D64F982F51414EA222F865EA5441C394FD70982F514160FB590167EA54410A3293A49A2F51413C49EBEE64EA54411E52129F9D2F5141C32E3F8263EA5441170650AAA12F51418DEA9A5962EA54415CD3AE3AA42F51410004A18661EA54413EBA7EE2A62F5141113718CB60EA54416E07A8FDA82F5141C083002760EA5441AE87485DAA2F5141AA03CBB15FEA5441C8543C03AC2F5141339D06545FEA54413822067EAF2F5141A6B60C815EEA5441DED5F3F6B12F5141F31C66F45DEA54411270DB42B52F5141C81CFB095DEA5441E0D67575B72F51419D1C901F5CEA5441D3F0BC61B92F514198CFD1EE5AEA544152B81E35B92F51417B14AED755EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000064E1EF37B92F514178B1F42956EA544152B81E35B92F51417B14AED755EA5441D4F8BD2EB92F51412CE1DEBE50EA54417DAD4F88B92F514192B478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F514117970D7C29EA544127C3EFBAC22F51411AAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441F3868316B72F51415F9464DE26EA544111CF8AA6B32F51411363FAF52AEA54418BE957E7AE2F51419F60DA8F2EEA54415C8FC225AA2F5141333333F330EA54410AD7A310A62F51415C8FC2B533EA5441AE47E10AA02F51418FC2F5C837EA54414D82D66C9B2F51419F60DA8F2EEA5441F60EB5F3992F514136D50B3C2EEA5441E56D592B972F51412A9354AB28EA5441F24EF48C952F514193BDEB982AEA54415F89B6EE902F5141A97CD57330EA5441841E7B8A8E2F5141A3C04AC033EA544194F00C0E8B2F5141EF24DA7C36EA5441C89F03F1872F51416F04D02238EA5441C2B371A2852F5141A9C3A9E73CEA54418C521BA5842F51411535390F3EEA544142188BBF822F514127B0AD9D40EA544117B734C2812F5141ED41AF1942EA544102DEFAD9802F5141D2ACEA7D44EA54419B4DCF0D822F5141A74FFAC447EA5441C9BFE053852F51411505D3CE4EEA54417B14AE07862F51418FC2F55850EA54411A1B55F2872F51418A07F3344BEA54410274A92A8E2F5141A2AE9EFC44EA54415F11D559962F5141E83EAD1C3EEA5441F6285CEF992F51418FC2F5483DEA5441B0F5F7E59C2F514151CA7B703EEA5441F60EB5F3992F514140B2CE953FEA5441C89CA3AD962F51410BB1BE6241EA5441F7FC5718922F514121F375F346EA544111FA9FE68E2F514163E907D14AEA5441EEF66E9E8D2F5141673D42364FEA5441EB200CD18F2F51413AF9FC3951EA5441E809954F952F51413AF9FC3951EA544131287201972F51417701A33554EA544152B81E15992F5141CDCCCCCC56EA5441070C2F179C2F5141C99895925FEA5441579BBB339D2F514108A27A9A5FEA54419B11B3E4A02F51412CA2433A5EEA54413428BAB8A72F5141CB03CCFF5BEA5441FFF41EF5AD2F5141C2E83E635AEA54414CA3F4B3B32F5141CD6E026D58EA5441AFB99D0BB82F51419BFB0E8A56EA544164E1EF37B92F514178B1F42956EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>696791 - 5171163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004500000052B81E35B92F51417B14AED755EA5441CFF8BD2EB92F514131E1DEBE50EA544179AD4F88B92F51418DB478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F51411C970D7C29EA54412BC3EFBAC22F51411FAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441F3868316B72F51415F9464DE26EA544111CF8AA6B32F51411363FAF52AEA54418BE957E7AE2F51419F60DA8F2EEA54415C8FC225AA2F5141333333F330EA54410AD7A310A62F51415C8FC2B533EA5441AE47E10AA02F51418FC2F5C837EA54414D82D66C9B2F51419F60DA8F2EEA5441F60EB5F3992F514136D50B3C2EEA5441E56D592B972F51412A9354AB28EA5441F64EF48C952F514197BDEB982AEA54416389B6EE902F5141A77CD57330EA5441811E7B8A8E2F5141A2C04AC033EA544197F00C0E8B2F5141ED24DA7C36EA5441C39F03F1872F51416C04D02238EA5441C2B371A2852F5141ADC3A9E73CEA544190521BA5842F51411235390F3EEA544147188BBF822F514127B0AD9D40EA544115B734C2812F5141F241AF1942EA5441FDDDFAD9802F5141D5ACEA7D44EA54419B4DCF0D822F5141A74FFAC447EA5441C9BFE053852F51411505D3CE4EEA54417B14AE07862F51418FC2F55850EA54411A1B55F2872F51418A07F3344BEA54410274A92A8E2F5141A2AE9EFC44EA54415F11D559962F5141E83EAD1C3EEA5441F6285CEF992F51418FC2F5483DEA5441B0F5F7E59C2F514151CA7B703EEA5441F60EB5F3992F514140B2CE953FEA5441C89CA3AD962F51410BB1BE6241EA5441F7FC5718922F514121F375F346EA544115FA9FE68E2F514164E907D14AEA5441EBF66E9E8D2F5141633D42364FEA5441EA200CD18F2F514137F9FC3951EA5441E809954F952F514137F9FC3951EA544131287201972F51417701A33554EA544152B81E15992F5141CDCCCCCC56EA5441B41E3F439C2F51419AD0536D60EA5441FC37DA859A2F5141DA50F4CC61EA5441BCB73926992F5141408441E662EA5441B76A7BF5972F5141A7B78EFF63EA5441A1A9D64F982F51414EA222F865EA5441C394FD70982F514160FB590167EA54410A3293A49A2F51413C49EBEE64EA54411E52129F9D2F5141C32E3F8263EA5441170650AAA12F51418DEA9A5962EA54415CD3AE3AA42F51410004A18661EA54413EBA7EE2A62F5141113718CB60EA54416E07A8FDA82F5141C083002760EA5441AE87485DAA2F5141AA03CBB15FEA5441C8543C03AC2F5141339D06545FEA54413822067EAF2F5141A6B60C815EEA5441DED5F3F6B12F5141F31C66F45DEA54411270DB42B52F5141C81CFB095DEA5441E0D67575B72F51419D1C901F5CEA5441D3F0BC61B92F514198CFD1EE5AEA544152B81E35B92F51417B14AED755EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000064E1EF37B92F514178B1F42956EA544152B81E35B92F51417B14AED755EA5441D4F8BD2EB92F51412CE1DEBE50EA54417DAD4F88B92F514192B478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F514117970D7C29EA544127C3EFBAC22F51411AAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441F3868316B72F51415F9464DE26EA544111CF8AA6B32F51411363FAF52AEA54418BE957E7AE2F51419F60DA8F2EEA54415C8FC225AA2F5141333333F330EA54410AD7A310A62F51415C8FC2B533EA5441AE47E10AA02F51418FC2F5C837EA54414D82D66C9B2F51419F60DA8F2EEA5441F60EB5F3992F514136D50B3C2EEA5441E56D592B972F51412A9354AB28EA5441F24EF48C952F514193BDEB982AEA54415F89B6EE902F5141A97CD57330EA5441841E7B8A8E2F5141A3C04AC033EA544194F00C0E8B2F5141EF24DA7C36EA5441C89F03F1872F51416F04D02238EA5441C2B371A2852F5141A9C3A9E73CEA54418C521BA5842F51411535390F3EEA544142188BBF822F514127B0AD9D40EA544117B734C2812F5141ED41AF1942EA544102DEFAD9802F5141D2ACEA7D44EA54419B4DCF0D822F5141A74FFAC447EA5441C9BFE053852F51411505D3CE4EEA54417B14AE07862F51418FC2F55850EA54411A1B55F2872F51418A07F3344BEA54410274A92A8E2F5141A2AE9EFC44EA54415F11D559962F5141E83EAD1C3EEA5441F6285CEF992F51418FC2F5483DEA5441B0F5F7E59C2F514151CA7B703EEA5441F60EB5F3992F514140B2CE953FEA5441C89CA3AD962F51410BB1BE6241EA5441F7FC5718922F514121F375F346EA544111FA9FE68E2F514163E907D14AEA5441EEF66E9E8D2F5141673D42364FEA5441EB200CD18F2F51413AF9FC3951EA5441E809954F952F51413AF9FC3951EA544131287201972F51417701A33554EA544152B81E15992F5141CDCCCCCC56EA5441070C2F179C2F5141C99895925FEA5441579BBB339D2F514108A27A9A5FEA54419B11B3E4A02F51412CA2433A5EEA54413428BAB8A72F5141CB03CCFF5BEA5441FFF41EF5AD2F5141C2E83E635AEA54414CA3F4B3B32F5141CD6E026D58EA5441AFB99D0BB82F51419BFB0E8A56EA544164E1EF37B92F514178B1F42956EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4316 - 394187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000031000000EC51B89E93685041E17A144EA51B5541C3F5280C9368504114AE4771A51B55418FC2F56894685041295C8F12A71B5541CDCCCC9C95685041AE47E14AA81B55410AD7A33096685041CDCCCC9CA91B55413D0AD7D3966850418FC2F5F8AA1B55410AD7A37097685041713D0A57AC1B5541EC51B8FE9768504166666686AD1B554148E17A949868504152B81EA5AE1B55417B14AE4799685041A4703DEAAF1B55415C8FC2E599685041F6285CEFB01B55413D0AD7839A6850419A999909B21B55413D0AD7A39B685041EC51B8EEB31B5541B81E856B9C6850415C8FC285B51B55419A9999599D68504152B81EF5B61B5541B81E85AB9D685041A4703D4AB71B554148E17AE49E685041CDCCCC1CB91B5541D7A370CD9F6850410AD7A3A0BA1B5541CDCCCCFC9F685041333333F3BA1B55418FC2F5C8A0685041A4703DDABC1B5541E17A14DEA06850415C8FC215BD1B554100000070A16850413D0AD783BE1B5541B81E859BA1685041E17A14FEBE1B554185EB51E8A2685041B81E855BBE1B5541666666E6B1685041C3F528ECB61B5541295C8FA2B568504152B81E05B51B554148E17A24B56850415C8FC2C5B31B5541666666A6B468504152B81E85B21B55410AD7A3C0B3685041B81E853BB01B55411F85EBF1B2685041C3F5282CAE1B554166666616B2685041E17A14FEAB1B55417B14AE27B1685041E17A149EA91B5541C3F5288CAF6850415C8FC285A51B554114AE47B1AE68504148E17A24A41B5541F6285CBFAD685041EC51B89EA21B554114AE47C1AC68504152B81E05A11B5541A4703D8AAB685041F6285C0F9F1B5541713D0A17AA6850418FC2F5B89C1B554152B81EC5A868504185EB51989A1B554133333323A8685041295C8F92991B5541713D0A17A7685041C3F528DC971B5541B81E857BA5685041AE47E13A951B5541E17A14FEA3685041B81E85CB921B554166666666A268504114AE4731901B55410AD7A300A168504185EB51E88D1B55413D0AD753A0685041666666D68C1B55413D0AD7D39E6850419A9999C98F1B554152B81E45946850410AD7A390A31B5541EC51B89E93685041E17A144EA51B5541
+</a>
+
+<b>
+0106000000010000000103000000010000003400000066666666A268504114AE4731901B5541000000E0A068504148E17AB4921B554145EDFE22A0685041F7EAC3E4931B5541713D0AE794685041AE47E1FAA51B554128CA0E6A946850418BF51F10A71B5541536828699468504189021F12A71B5541CDCCCC9C95685041AE47E14AA81B55410AD7A33096685041CDCCCC9CA91B55413D0AD7D3966850418FC2F5F8AA1B55410AD7A37097685041713D0A57AC1B5541EC51B8FE9768504166666686AD1B554148E17A949868504152B81EA5AE1B55417B14AE4799685041A4703DEAAF1B55415C8FC2E599685041EC51B8EEB01B55413D0AD7839A6850419A999909B21B55413D0AD7A39B685041E17A14EEB31B5541B81E856B9C6850415C8FC285B51B55419A9999599D68504152B81EF5B61B5541B81E85AB9D685041A4703D4AB71B554152B81EE59E685041CDCCCC1CB91B5541D7A370CD9F6850410AD7A3A0BA1B5541D7A370FD9F685041333333F3BA1B55419A9999C9A0685041A4703DDABC1B5541EC51B8DEA06850415C8FC215BD1B55412A545EF9A06850411776385ABD1B554100000070A16850413D0AD783BE1B5541D49ECE8DA16850412F1B90D7BE1B55413973989CA1685041E9FD8DFDBE1B554191BD46C4A1685041C40E2CEABE1B5541452CE8DDA1685041E00CA7DDBE1B55411A8BF5E1A86850414C17F364BB1B5541C3824A3CB0685041834179BFB71B5541295C8FA2B568504152B81E05B51B554148E17A24B56850415C8FC2C5B31B5541666666A6B468504152B81E85B21B55410AD7A3C0B3685041B81E853BB01B55411F85EBF1B2685041C3F5282CAE1B554166666616B2685041E17A14FEAB1B55417B14AE27B1685041E17A149EA91B5541C3F5288CAF6850415C8FC285A51B554114AE47B1AE68504148E17A24A41B5541EC51B8BEAD685041EC51B89EA21B55410AD7A3C0AC68504152B81E05A11B5541A4703D8AAB685041F6285C0F9F1B5541713D0A17AA6850418FC2F5B89C1B554152B81EC5A868504185EB51989A1B554133333323A8685041295C8F92991B55418DDBD46FA76850415CFE516D981B554166666616A7685041C3F528DC971B5541AE47E17AA5685041AE47E13A951B5541E17A14FEA3685041B81E85CB921B554166666666A268504114AE4731901B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614949 - 86767
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F00000033333383852B5141AE47E15A68745441CDCCCC0C892B5141000000706B74544152B81EB58B2B51410AD7A3506D7454413D0AD7438C2B51418FC2F5986D7454410AD7A3008C2B5141E17A143E6E7454413D0AD7538B2B5141AE47E13A6E74544148E17AA4882B5141333333636D745441EC51B86E842B51410AD7A3E0697454413D0AD7C3822B5141AE47E14A69745441713D0A17812B5141295C8F026874544152B81E857D2B51418FC2F568667454418FC2F598762B51415C8FC2456F745441000000207D2B51411F85EB81727454413D0AD7D3812B5141CDCCCC2C74745441713D0AC78A2B514114AE479176745441A4703D4A932B5141CDCCCCCC78745441AE47E1FA972B51413333331379745441AE47E1FA992B51417B14AE8775745441EC51B8EE972B5141295C8F8274745441CDCCCC7C8C2B5141D7A3705D6E74544152B81EE58C2B5141A4703DEA6D7454418FC2F528952B51410000002072745441AE47E12A982B5141EC51B8BE6D7454419A9999699E2B514152B81E455D7454411F85EB21922B5141295C8FC257745441295C8FD28D2B514148E17A645F74544185EB5178852B514114AE47015A745441EC51B87E822B51416666664657745441713D0A477B2B51419A9999F94C745441A4703DAA752B51411F85EB71467454419A9999D97D2B51413D0AD7233E745441000000E0842B514152B81E5536745441E17A149E872B5141B81E850B327454419A999989732B514152B81EC52D74544185EB51F86F2B5141C3F5287C357454413D0AD7336A2B51417B14AEF741745441E17A147E6C2B514152B81E4547745441295C8F626E2B5141E17A14BE4974544152B81E756F2B5141EC51B87E4A7454415C8FC2D5742B5141E17A144E56745441D7A3708D752B51413D0AD7E358745441F6285C8F762B51413D0AD7035B7454413D0AD7D3772B5141AE47E10A5D745441CDCCCC8C7C2B5141B81E85AB62745441D7A3702D7F2B51417B14AED76474544152B81EB5822B51418FC2F5186774544133333383852B5141AE47E15A68745441
+</a>
+
+<b>
+010600000001000000010300000001000000090000009B105A3D782B51417D9BC77049745441EA47C881772B5141A0B91DAB48745441A00B38D6772B5141DCB4DB7E4B745441EB3CB7F7782B51418CD259224E74544106ED25CE7A2B51413CF0D7C55074544132BD33DE7D2B5141CBB7F5E153745441C27DFA82802B51419107CF7154745441684769287B2B5141B6D7F6D54C7454419B105A3D782B51417D9BC77049745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>615881 - 3077322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000001F85EB71BF3A5141713D0AF735375441B81E856BBF3A5141713D0AF73637544100000030873A5141C3F5288C35375441E17A149E853A51418FC2F5B8363754410AD7A330833A51411F85EBD13F375441D7A370ED803A51415C8FC22548375441D7A370BDA63A5141713D0A17493754418FC2F578B23A51411F85EB61493754418FC2F598C63A5141295C8FE249375441AE47E11ADA3A5141F6285C5F4A3754418FC2F518F13A51411F85EBF14A375441EC51B80EF93A5141A4703D1A393754411F85EB71BF3A5141713D0AF735375441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D6AA63A51413D0AD7735D3754413001ECCEAA3A51419F2E373D5D375441CEC306E0AA3A51415527A2175A37544116F079D9AA3A51413DB44ECC53375441FBD666D4AA3A51418194F4EB4E375441087200CFAA3A514148938FBB493754412B6F40E3AA3A5141B86477A649375441FE82961AAB3A5141DF8783A24937544136871752AC3A5141221CA39749375441E837CE62B23A51411D625AD04937544145AE9733BA3A51411974CDFF493754410085FB9BBD3A51415ADC7D144A37544190AE79D3C13A51419A9E172E4A3754417B81C5ADC63A5141A921B14A4A375441681918A5CB3A5141B276B65E4A375441E19CF374CF3A514114A1146E4A375441A8C6E08FD33A5141586FA17E4A375441F8521641D73A5141BF0A848D4A37544105B803EFDD3A514149A654AD4A3754416CBD9770E33A51412198CCCA4A37544145472BC1E93A5141266098EC4A3754410618FB9FEE3A51413E35A9064B3754413D35DA96F03A5141CF882C114B3754411E7847F4F03A514109B501F14A375441DA7EA373EE3A51414D1A0EE14A3754416BC6B272EB3A5141DCAEE8CD4A37544101BC6CCAE73A514185A398B64A375441186F215DE43A51415E8BC0A04A37544151913708E13A5141B0DB838B4A375441FF06C89BDD3A5141573CB1754A3754411F4CCF76D73A514156F9764E4A375441EC6FC625D03A51414729A81F4A375441CBD524B8CA3A5141C5F0EDFC49375441EBA8A562C53A514118D3CFDA49375441EE3B3D9CBF3A51418BC4E5B549375441843F66D0BA3A5141D45A3D9749375441D7A370BDA63A5141713D0A1749375441094ACF92A63A514164AB717A5337544189392B7BA63A5141814B5D4A593754415BF36E67A63A5141C9C0ACBE5B375441A4703D6AA63A51413D0AD7735D375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>615881 - 3385826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000001F85EB71BF3A5141713D0AF735375441B81E856BBF3A5141713D0AF73637544100000030873A5141C3F5288C35375441E17A149E853A51418FC2F5B8363754410AD7A330833A51411F85EBD13F375441D7A370ED803A51415C8FC22548375441D7A370BDA63A5141713D0A17493754418FC2F578B23A51411F85EB61493754418FC2F598C63A5141295C8FE249375441AE47E11ADA3A5141F6285C5F4A3754418FC2F518F13A51411F85EBF14A375441EC51B80EF93A5141A4703D1A393754411F85EB71BF3A5141713D0AF735375441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D6AA63A51413D0AD7735D3754413001ECCEAA3A51419F2E373D5D375441CEC306E0AA3A51415527A2175A37544116F079D9AA3A51413DB44ECC53375441FBD666D4AA3A51418194F4EB4E375441087200CFAA3A514148938FBB493754412B6F40E3AA3A5141B86477A649375441FE82961AAB3A5141DF8783A24937544136871752AC3A5141221CA39749375441E837CE62B23A51411D625AD04937544145AE9733BA3A51411974CDFF493754410085FB9BBD3A51415ADC7D144A37544190AE79D3C13A51419A9E172E4A3754417B81C5ADC63A5141A921B14A4A375441681918A5CB3A5141B276B65E4A375441E19CF374CF3A514114A1146E4A375441A8C6E08FD33A5141586FA17E4A375441F8521641D73A5141BF0A848D4A37544105B803EFDD3A514149A654AD4A3754416CBD9770E33A51412198CCCA4A37544145472BC1E93A5141266098EC4A3754410618FB9FEE3A51413E35A9064B3754413D35DA96F03A5141CF882C114B3754411E7847F4F03A514109B501F14A375441DA7EA373EE3A51414D1A0EE14A3754416BC6B272EB3A5141DCAEE8CD4A37544101BC6CCAE73A514185A398B64A375441186F215DE43A51415E8BC0A04A37544151913708E13A5141B0DB838B4A375441FF06C89BDD3A5141573CB1754A3754411F4CCF76D73A514156F9764E4A375441EC6FC625D03A51414729A81F4A375441CBD524B8CA3A5141C5F0EDFC49375441EBA8A562C53A514118D3CFDA49375441EE3B3D9CBF3A51418BC4E5B549375441843F66D0BA3A5141D45A3D9749375441D7A370BDA63A5141713D0A1749375441094ACF92A63A514164AB717A5337544189392B7BA63A5141814B5D4A593754415BF36E67A63A5141C9C0ACBE5B375441A4703D6AA63A51413D0AD7735D375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335087 - 1486284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000051000000F6285CAFF6345141713D0AC7C8365541713D0A27F8345141B81E85DBC53655411F85EBB1F834514166666646C5365541713D0A67FF345141666666E6BE3655417B14AE27003551415C8FC235BE3655418FC2F518F534514100000090B736554152B81EC5E7345141B81E85ABAF3655417B14AE27E33451411F85EB81AC365541F6285CAFE234514148E17A74AA3655417B14AEF7E0345141713D0A77AB365541E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB63655417B14AEA7CC345141B81E85DBBB36554114AE4731CC345141A4703D3ABC365541B81E851BCD3451417B14AE37BD3655411F85EB01D2345141295C8F52C236554114AE4791D5345141A4703D0AC63655413D0AD7C3D63451411F85EB41C73655410AD7A340D73451413D0AD7D3C73655419A999999D7345141C3F5286CC8365541A4703DDAD734514152B81EF5C836554114AE4701D834514114AE4781C9365541D7A3700DD8345141F6285C2FCA3655417B14AE17D8345141D7A370FDCA3655417B14AE87D83451418FC2F578DE3655415C8FC285D8345141EC51B85EDF3655413D0AD773D834514148E17A54E0365541B81E854BD8345141CDCCCC1CE13655413D0AD723D834514152B81EC5E136554152B81ED5D73451415C8FC2A5E23655413D0AD753D534514185EB5198E93655417B14AEF7D1345141D7A370ADF23655413D0AD7C3D1345141295C8F52F3365541B81E85ABD134514114AE47F1F3365541295C8FA2D1345141295C8F92F4365541AE47E1AAD1345141A4703D4AF53655418FC2F5B8D1345141666666E6F5365541D7A370DDD13451418FC2F588F6365541AE47E11AD234514133333353F7365541C3F528DCD434514133333373FE3655411F85EB61D6345141F6285C6F023755411F85EB01D7345141F6285C6F02375541666666B6DB345141EC51B86E0237554114AE4751E03451413333335302375541A4703D6AE43451419A99994902375541D7A3704DE7345141295C8F720237554152B81EC5EC345141713D0AA7023755411F85EB61EE3451411F85EBD1023755410AD7A3D0F53451415C8FC29503375541AE47E10AFA3451413333335304375541AE47E13A013551419A9999B908375541713D0A2701355141713D0A370737554152B81E75FA3451410AD7A32003375541713D0A07F6345141CDCCCC5C02375541333333A3EE34514152B81E95013755415C8FC2F5F23451411F85EBC1F1365541D59BA983F634514128F24523F3365541F032ECBCFB34514101DDE2FCF43655419A2B65B2FD345141E42F0BA4F5365541A3082670FF34514157E46907F33655416046EBF001355141E2BAD5B3F236554185D083070335514168B480A2F03655418F380FD501355141556F3417F03655412777064F003551415FD7BFE4EE36554145AFA8B7FC3451415FD7BFE4EE36554117484FE3F9345141C823937AED365541C3565DF8F534514156FAFE26ED3655411AE9AE12F1345141AC018631EB365541B81E850BEE345141295C8F22E736554148E17A74EE345141000000E0E3365541E17A14CEEE3451410AD7A320E136554114AE4751EA345141E17A14EED836554114AE47A1EC345141F6285C6FD43655413D0AD763EF345141D7A3705DD13655418FC2F558F134514152B81E35D0365541333333F3F23451413D0AD7D3CE365541000000C0F3345141000000A0CD3655415C8FC215F534514148E17A94CB365541F6285CAFF6345141713D0AC7C8365541
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB63655416AAC56ADCC3451419E12FBD6BB36554114AE4731CC345141A4703D3ABC3655411F85EB01D2345141295C8F52C236554114AE4791D5345141A4703D0AC63655413D0AD7C3D63451411F85EB41C73655410AD7A340D73451413D0AD7D3C73655419A999999D7345141C3F5286CC8365541A4703DDAD734514152B81EF5C836554114AE4701D834514114AE4781C9365541D7A3700DD8345141F6285C2FCA3655417B14AE17D8345141D7A370FDCA36554131F5A436D8345141CAD45360D03655412A550B4BD834514166A5C3ECD336554191118462D8345141F13DFD01D83655419F8BCF79D8345141D161570FDC365541B82E0582D8345141BF48EC7CDD365541DFE98C86D834514143582100DF365541B5920D79D834514150B6FC0CE0365541A7C21758D8345141FBC655DEE036554194853F2BD834514171F7B1A5E1365541398C88F0D734514171138857E23655413D0AD753D534514185EB5198E9365541901FE117D4345141E1A966EEEC36554168536B15D3345141E1C1A7C0EF3655417B14AEF7D1345141D7A370ADF23655413D0AD7C3D1345141295C8F52F3365541B81E85ABD134514114AE47F1F3365541295C8FA2D1345141295C8F92F4365541AE47E1AAD1345141A4703D4AF53655418FC2F5B8D1345141666666E6F5365541D7A370DDD13451418FC2F588F6365541AE47E11AD234514133333353F7365541B3D05593D434514173241BAFFD3655411F85EB61D6345141F6285C6F02375541DBF2A1B1DC345141F1ECDA680237554161EBAC18E03451419F79855402375541115BCD2EE43451413EDB244A02375541951DDCD4E5345141DB76B15D023755413F900FE1E7345141BB4D1878023755415A2792F7EB3451410045559F02375541E3B54CFEEC345141585AEFAC023755417C46DFCBEE345141B66585DC023755417388F5B7F53451418E2B3793033755412BEB13FBF934514114156F50043755411BE41FAAFC3451419F501EEE053755411D01203D013551419E7BF9BA08375541676193AD033551411B944D390A3755410588B841023551415F32ADC106375541AB322336FB34514177C865B0033755412DB29D8FFA3451410000006803375541804D5AF0F7345141E33043F001375541E7FBA9B1EF34514162105851FD36554197095FFCF23451414A34BED3F1365541FCA9F11AF3345141DD240669F13655416537C1C0F6345141186D4AD7F2365541C3F52894FD3451413108AC84F5365541C74B3789FF345141295C8FAAF2365541560E2D5201355141B4C876B6F3365541B24F3E3D033551414EBA8ACEF03655418D380FD501355141536F3417F036554168E7113500355141ED4712D5EE3655410681950BFE345141CDCCCCB4EC3655419CC420A0FD345141560E2DFAED365541F853E35DF83451414E6210B0EC36554121B072A8F7345141A69BC410ED36554152B81E05F63451416ABC7433EE3655413333332BF334514160E5D092EC36554153B40E31F1345141CDA11B25EB365541986E12ABEF345141CFF7530BEA365541EE7C3F45EC3451418716D9A6E43655414E6210D8EA345141C976BE8FE0365541E1D3443AE9345141CB56E93CDC3655412C059C2AE8345141B9F11FE7D8365541E1D3443AE934514112D3400DD4365541BA490C72EE345141AE47E172D13655412CF8B24FF034514174F1C87ECF3655414F269679F2345141F70FDF3ACD365541ADBCB6BFF4345141B130B903C73655412B871609F8345141AAF1D295C43655412FDD242EFB3451410681956BC2365541B4C87686FF345141F4FDD460BE3655410C022B47F93451415EBA49DCBA3655412DB29D97ED345141DD240691B336554152B81EC5E7345141B81E85ABAF3655417B14AE27E33451411F85EB81AC365541C5400958E13451416A8E253FAB3655417B14AEF7E0345141713D0A77AB365541E17A143EDE34514114AE4711AD365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335087 - 3826796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000051000000F6285CAFF6345141713D0AC7C8365541713D0A27F8345141B81E85DBC53655411F85EBB1F834514166666646C5365541713D0A67FF345141666666E6BE3655417B14AE27003551415C8FC235BE3655418FC2F518F534514100000090B736554152B81EC5E7345141B81E85ABAF3655417B14AE27E33451411F85EB81AC365541F6285CAFE234514148E17A74AA3655417B14AEF7E0345141713D0A77AB365541E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB63655417B14AEA7CC345141B81E85DBBB36554114AE4731CC345141A4703D3ABC365541B81E851BCD3451417B14AE37BD3655411F85EB01D2345141295C8F52C236554114AE4791D5345141A4703D0AC63655413D0AD7C3D63451411F85EB41C73655410AD7A340D73451413D0AD7D3C73655419A999999D7345141C3F5286CC8365541A4703DDAD734514152B81EF5C836554114AE4701D834514114AE4781C9365541D7A3700DD8345141F6285C2FCA3655417B14AE17D8345141D7A370FDCA3655417B14AE87D83451418FC2F578DE3655415C8FC285D8345141EC51B85EDF3655413D0AD773D834514148E17A54E0365541B81E854BD8345141CDCCCC1CE13655413D0AD723D834514152B81EC5E136554152B81ED5D73451415C8FC2A5E23655413D0AD753D534514185EB5198E93655417B14AEF7D1345141D7A370ADF23655413D0AD7C3D1345141295C8F52F3365541B81E85ABD134514114AE47F1F3365541295C8FA2D1345141295C8F92F4365541AE47E1AAD1345141A4703D4AF53655418FC2F5B8D1345141666666E6F5365541D7A370DDD13451418FC2F588F6365541AE47E11AD234514133333353F7365541C3F528DCD434514133333373FE3655411F85EB61D6345141F6285C6F023755411F85EB01D7345141F6285C6F02375541666666B6DB345141EC51B86E0237554114AE4751E03451413333335302375541A4703D6AE43451419A99994902375541D7A3704DE7345141295C8F720237554152B81EC5EC345141713D0AA7023755411F85EB61EE3451411F85EBD1023755410AD7A3D0F53451415C8FC29503375541AE47E10AFA3451413333335304375541AE47E13A013551419A9999B908375541713D0A2701355141713D0A370737554152B81E75FA3451410AD7A32003375541713D0A07F6345141CDCCCC5C02375541333333A3EE34514152B81E95013755415C8FC2F5F23451411F85EBC1F1365541D59BA983F634514128F24523F3365541F032ECBCFB34514101DDE2FCF43655419A2B65B2FD345141E42F0BA4F5365541A3082670FF34514157E46907F33655416046EBF001355141E2BAD5B3F236554185D083070335514168B480A2F03655418F380FD501355141556F3417F03655412777064F003551415FD7BFE4EE36554145AFA8B7FC3451415FD7BFE4EE36554117484FE3F9345141C823937AED365541C3565DF8F534514156FAFE26ED3655411AE9AE12F1345141AC018631EB365541B81E850BEE345141295C8F22E736554148E17A74EE345141000000E0E3365541E17A14CEEE3451410AD7A320E136554114AE4751EA345141E17A14EED836554114AE47A1EC345141F6285C6FD43655413D0AD763EF345141D7A3705DD13655418FC2F558F134514152B81E35D0365541333333F3F23451413D0AD7D3CE365541000000C0F3345141000000A0CD3655415C8FC215F534514148E17A94CB365541F6285CAFF6345141713D0AC7C8365541
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB63655416AAC56ADCC3451419E12FBD6BB36554114AE4731CC345141A4703D3ABC3655411F85EB01D2345141295C8F52C236554114AE4791D5345141A4703D0AC63655413D0AD7C3D63451411F85EB41C73655410AD7A340D73451413D0AD7D3C73655419A999999D7345141C3F5286CC8365541A4703DDAD734514152B81EF5C836554114AE4701D834514114AE4781C9365541D7A3700DD8345141F6285C2FCA3655417B14AE17D8345141D7A370FDCA36554131F5A436D8345141CAD45360D03655412A550B4BD834514166A5C3ECD336554191118462D8345141F13DFD01D83655419F8BCF79D8345141D161570FDC365541B82E0582D8345141BF48EC7CDD365541DFE98C86D834514143582100DF365541B5920D79D834514150B6FC0CE0365541A7C21758D8345141FBC655DEE036554194853F2BD834514171F7B1A5E1365541398C88F0D734514171138857E23655413D0AD753D534514185EB5198E9365541901FE117D4345141E1A966EEEC36554168536B15D3345141E1C1A7C0EF3655417B14AEF7D1345141D7A370ADF23655413D0AD7C3D1345141295C8F52F3365541B81E85ABD134514114AE47F1F3365541295C8FA2D1345141295C8F92F4365541AE47E1AAD1345141A4703D4AF53655418FC2F5B8D1345141666666E6F5365541D7A370DDD13451418FC2F588F6365541AE47E11AD234514133333353F7365541B3D05593D434514173241BAFFD3655411F85EB61D6345141F6285C6F02375541DBF2A1B1DC345141F1ECDA680237554161EBAC18E03451419F79855402375541115BCD2EE43451413EDB244A02375541951DDCD4E5345141DB76B15D023755413F900FE1E7345141BB4D1878023755415A2792F7EB3451410045559F02375541E3B54CFEEC345141585AEFAC023755417C46DFCBEE345141B66585DC023755417388F5B7F53451418E2B3793033755412BEB13FBF934514114156F50043755411BE41FAAFC3451419F501EEE053755411D01203D013551419E7BF9BA08375541676193AD033551411B944D390A3755410588B841023551415F32ADC106375541AB322336FB34514177C865B0033755412DB29D8FFA3451410000006803375541804D5AF0F7345141E33043F001375541E7FBA9B1EF34514162105851FD36554197095FFCF23451414A34BED3F1365541FCA9F11AF3345141DD240669F13655416537C1C0F6345141186D4AD7F2365541C3F52894FD3451413108AC84F5365541C74B3789FF345141295C8FAAF2365541560E2D5201355141B4C876B6F3365541B24F3E3D033551414EBA8ACEF03655418D380FD501355141536F3417F036554168E7113500355141ED4712D5EE3655410681950BFE345141CDCCCCB4EC3655419CC420A0FD345141560E2DFAED365541F853E35DF83451414E6210B0EC36554121B072A8F7345141A69BC410ED36554152B81E05F63451416ABC7433EE3655413333332BF334514160E5D092EC36554153B40E31F1345141CDA11B25EB365541986E12ABEF345141CFF7530BEA365541EE7C3F45EC3451418716D9A6E43655414E6210D8EA345141C976BE8FE0365541E1D3443AE9345141CB56E93CDC3655412C059C2AE8345141B9F11FE7D8365541E1D3443AE934514112D3400DD4365541BA490C72EE345141AE47E172D13655412CF8B24FF034514174F1C87ECF3655414F269679F2345141F70FDF3ACD365541ADBCB6BFF4345141B130B903C73655412B871609F8345141AAF1D295C43655412FDD242EFB3451410681956BC2365541B4C87686FF345141F4FDD460BE3655410C022B47F93451415EBA49DCBA3655412DB29D97ED345141DD240691B336554152B81EC5E7345141B81E85ABAF3655417B14AE27E33451411F85EB81AC365541C5400958E13451416A8E253FAB3655417B14AEF7E0345141713D0A77AB365541E17A143EDE34514114AE4711AD365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618288 - 1099729
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000008D3362538CF05041B39931E21D89544101864EC093F050419F3900441D895441E0E3D74799F05041D1269B7F1C8954413F3FAD40A0F050416B0D37BE1A89544189973C14A9F0504173271EE81889544178D8022BB1F05041AC8FCDF617895441B93332B8B8F0504139BF79A917895441ED8CFC34B9F050416779477A17895441A646D9D3BCF0504139BF79A9178954419930718EC0F0504194AC977F188954419F29CE93C7F05041989A199D1889544162992834E1F05041AB32B53D17895441F680C516E6F050419377F5D0168954418181B30FEDF050413746F774168954418F917A090BF150418B5929E214895441F05D57A901F15041A0DD2DDF0C8954419A6F3F22FCF05041751312C407895441FABC1FADF5F05041904BDEEA00895441FB4375BDF2F050410653943FFC8854410F61395EF0F050417424EF15F988544128F72BE4EAF05041BAF0BCF9ED8854411F3396E1E8F05041B12C27F7EB885441FCD10133DFF0504129798535EC885441065163E2CBF05041D8B5C339ED88544132020D43B9F050410B9E2E8DEE8854414259C324ADF0504169907953EF8854412CEF4C1EA8F05041DAF1C18BEF8854415AF9CA3A9DF05041BE2B5E00F0885441479958B69BF050415BF9EAC7F288544104CC89159BF05041D3AD2382F48854417D4FA1D298F05041C647B6F3FB8854418D758ADD94F0504125030D1A07895441F54EA71091F05041ECEA70F50F8954416B61194D8EF0504171B62F3415895441A08807EA8BF05041F49FA37119895441654EAD4E89F0504118F07EFF1D8954418D3362538CF05041B39931E21D895441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E8954418FC2F5581CF15041C3F528FC4D895441CDCCCCEC24F15041713D0AE74D895441295C8FF223F150411F85EB2138895441AE47E1AA1EF1504152B81EF532895441E17A141E18F150410AD7A3F02D895441D7A3705D17F150410AD7A3B024895441AE47E1FA16F15041AE47E12A2289544148E17A2415F15041CDCCCCFC1E895441E17A140E0BF150411F85EBE1148954418281B30FEDF050413346F77416895441F380C516E6F050419177F5D016895441E248D45CDCF050413EBF79A91789544173E87E95D5F050414AF4CDE2178954418045C05FCFF050412260214418895441D9B4AF7CC8F05041465AECA0188954419A30718EC0F050418FAC977F18895441A346D9D3BCF0504134BF79A917895441EE8CFC34B9F050416679477A17895441BA3332B8B8F0504134BF79A91789544177D8022BB1F05041AB8FCDF6178954418B973C14A9F0504173271EE8188954413E3FAD40A0F05041680D37BE1A89544128A27CF398F050414979D8941C8954419883813191F050417CAC289A1D895441A609DD2C89F050415C02D1101E895441713D0A3782F0504114AE47312889544148E17A947CF0504114AE471130895441D7A370DD74F050410AD7A3603A895441713D0AD771F05041CDCCCCFC3E8954410AD7A3D07DF0504133333333438954411F85EB4189F050410AD7A390458954411F85EBC197F05041713D0A5747895441AE47E1CA9AF050415C8FC29547895441000000509DF05041295C8F3246895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618288 - 3902479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000008D3362538CF05041B39931E21D89544101864EC093F050419F3900441D895441E0E3D74799F05041D1269B7F1C8954413F3FAD40A0F050416B0D37BE1A89544189973C14A9F0504173271EE81889544178D8022BB1F05041AC8FCDF617895441B93332B8B8F0504139BF79A917895441ED8CFC34B9F050416779477A17895441A646D9D3BCF0504139BF79A9178954419930718EC0F0504194AC977F188954419F29CE93C7F05041989A199D1889544162992834E1F05041AB32B53D17895441F680C516E6F050419377F5D0168954418181B30FEDF050413746F774168954418F917A090BF150418B5929E214895441F05D57A901F15041A0DD2DDF0C8954419A6F3F22FCF05041751312C407895441FABC1FADF5F05041904BDEEA00895441FB4375BDF2F050410653943FFC8854410F61395EF0F050417424EF15F988544128F72BE4EAF05041BAF0BCF9ED8854411F3396E1E8F05041B12C27F7EB885441FCD10133DFF0504129798535EC885441065163E2CBF05041D8B5C339ED88544132020D43B9F050410B9E2E8DEE8854414259C324ADF0504169907953EF8854412CEF4C1EA8F05041DAF1C18BEF8854415AF9CA3A9DF05041BE2B5E00F0885441479958B69BF050415BF9EAC7F288544104CC89159BF05041D3AD2382F48854417D4FA1D298F05041C647B6F3FB8854418D758ADD94F0504125030D1A07895441F54EA71091F05041ECEA70F50F8954416B61194D8EF0504171B62F3415895441A08807EA8BF05041F49FA37119895441654EAD4E89F0504118F07EFF1D8954418D3362538CF05041B39931E21D895441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E8954418FC2F5581CF15041C3F528FC4D895441CDCCCCEC24F15041713D0AE74D895441295C8FF223F150411F85EB2138895441AE47E1AA1EF1504152B81EF532895441E17A141E18F150410AD7A3F02D895441D7A3705D17F150410AD7A3B024895441AE47E1FA16F15041AE47E12A2289544148E17A2415F15041CDCCCCFC1E895441E17A140E0BF150411F85EBE1148954418281B30FEDF050413346F77416895441F380C516E6F050419177F5D016895441E248D45CDCF050413EBF79A91789544173E87E95D5F050414AF4CDE2178954418045C05FCFF050412260214418895441D9B4AF7CC8F05041465AECA0188954419A30718EC0F050418FAC977F18895441A346D9D3BCF0504134BF79A917895441EE8CFC34B9F050416679477A17895441BA3332B8B8F0504134BF79A91789544177D8022BB1F05041AB8FCDF6178954418B973C14A9F0504173271EE8188954413E3FAD40A0F05041680D37BE1A89544128A27CF398F050414979D8941C8954419883813191F050417CAC289A1D895441A609DD2C89F050415C02D1101E895441713D0A3782F0504114AE47312889544148E17A947CF0504114AE471130895441D7A370DD74F050410AD7A3603A895441713D0AD771F05041CDCCCCFC3E8954410AD7A3D07DF0504133333333438954411F85EB4189F050410AD7A390458954411F85EBC197F05041713D0A5747895441AE47E1CA9AF050415C8FC29547895441000000509DF05041295C8F3246895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637422 - 196653
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000001C000000B81E851BADEA5041AE47E18A83275541B81E85EBADEA5041C3F528FC7F275541CDCCCC3CB5EA5041EC51B8DE72275541E17A148EB8EA5041C3F5285C6E2755411F85EBB1C2EA50417B14AE77622755411F85EB01C8EA50410AD7A3C05B275541666666E6C8EA5041333333A359275541EC51B80EC8EA50416666663657275541C3F5281CC5EA5041AE47E18A52275541713D0A17C3EA504148E17AE44F2755418FC2F5F8BDEA5041666666064E275541713D0A27BEEA5041E17A140E5327554114AE4781BCEA504185EB51385B27554166666676B9EA50411F85EB2162275541F6285C9FB9EA5041E17A143E652755415C8FC245B3EA504114AE47B16E275541B81E85BBB1EA5041A4703DFA6D2755413D0AD743B3EA5041A4703D1A68275541E17A140EAFEA50416666665667275541713D0AE7AEEA5041333333136D275541F6285CAFACEA5041333333D370275541E17A14FEA8EA5041713D0AB7762755415C8FC265A8EA5041295C8FB27A275541C3F5288CA9EA504152B81E757C27554185EB5178A9EA5041D7A3700D80275541E17A14EEA9EA5041A4703D6A8427554148E17A74ACEA5041B81E85DB87275541B81E851BADEA5041AE47E18A8327554107000000F6285C6FBFEA504152B81E555F2755415C8FC215C0EA50417B14AEC75F275541AE47E1CABEEA50410AD7A350622755415C8FC225BDEA5041E17A142E64275541F6285C5FBCEA5041E17A149E6327554114AE47F1BCEA5041B81E854B62275541F6285C6FBFEA504152B81E555F275541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003C31694FB2EA504176FEEDEF6727554163A0234FB2EA5041C6F3E1EF67275541E17A140EAFEA50416666665667275541713D0AE7AEEA5041333333136D27554129CA3EBAACEA5041021E1DEF70275541B5474215ACEA50415B4614917227554189B34373ABEA50419614CC6574275541D6BAB5C9AAEA50414298B55A75275541338F38A1A9EA5041629EF8067727554110F457C3A8EA504157E6F6B47A2755415A0CE00BA9EA5041349DFE997B275541E20D5F37A9EA5041A2804AE47B2755415E89064BA9EA504165DCDC057C275541C3F5288CA9EA504152B81E757C27554159F5A083A9EA50410E37DC007E275541F4320C82A9EA50416CD3334A7E275541AE83FF81A9EA5041843B804C7E2755411CAA7381A9EA50414976D7657E275541D78CA180A9EA5041ED0DEA8B7E275541A9646B80A9EA5041ED3CBA957E275541C3B06880A9EA50410E9C37967E27554185EB5178A9EA5041D7A3700D80275541201C119DA9EA5041F91BEB5C8127554197446E87AAEA50416D6ED2567F275541D92248D7AFEA5041180AF59D7327554166ECF633B2EA50416E2229326E275541B81E85BBB1EA5041A4703DFA6D2755413D0AD743B3EA5041A4703D1A682755413C31694FB2EA504176FEEDEF67275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637422 - 325313
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000001C000000B81E851BADEA5041AE47E18A83275541B81E85EBADEA5041C3F528FC7F275541CDCCCC3CB5EA5041EC51B8DE72275541E17A148EB8EA5041C3F5285C6E2755411F85EBB1C2EA50417B14AE77622755411F85EB01C8EA50410AD7A3C05B275541666666E6C8EA5041333333A359275541EC51B80EC8EA50416666663657275541C3F5281CC5EA5041AE47E18A52275541713D0A17C3EA504148E17AE44F2755418FC2F5F8BDEA5041666666064E275541713D0A27BEEA5041E17A140E5327554114AE4781BCEA504185EB51385B27554166666676B9EA50411F85EB2162275541F6285C9FB9EA5041E17A143E652755415C8FC245B3EA504114AE47B16E275541B81E85BBB1EA5041A4703DFA6D2755413D0AD743B3EA5041A4703D1A68275541E17A140EAFEA50416666665667275541713D0AE7AEEA5041333333136D275541F6285CAFACEA5041333333D370275541E17A14FEA8EA5041713D0AB7762755415C8FC265A8EA5041295C8FB27A275541C3F5288CA9EA504152B81E757C27554185EB5178A9EA5041D7A3700D80275541E17A14EEA9EA5041A4703D6A8427554148E17A74ACEA5041B81E85DB87275541B81E851BADEA5041AE47E18A8327554107000000F6285C6FBFEA504152B81E555F2755415C8FC215C0EA50417B14AEC75F275541AE47E1CABEEA50410AD7A350622755415C8FC225BDEA5041E17A142E64275541F6285C5FBCEA5041E17A149E6327554114AE47F1BCEA5041B81E854B62275541F6285C6FBFEA504152B81E555F275541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003C31694FB2EA504176FEEDEF6727554163A0234FB2EA5041C6F3E1EF67275541E17A140EAFEA50416666665667275541713D0AE7AEEA5041333333136D27554129CA3EBAACEA5041021E1DEF70275541B5474215ACEA50415B4614917227554189B34373ABEA50419614CC6574275541D6BAB5C9AAEA50414298B55A75275541338F38A1A9EA5041629EF8067727554110F457C3A8EA504157E6F6B47A2755415A0CE00BA9EA5041349DFE997B275541E20D5F37A9EA5041A2804AE47B2755415E89064BA9EA504165DCDC057C275541C3F5288CA9EA504152B81E757C27554159F5A083A9EA50410E37DC007E275541F4320C82A9EA50416CD3334A7E275541AE83FF81A9EA5041843B804C7E2755411CAA7381A9EA50414976D7657E275541D78CA180A9EA5041ED0DEA8B7E275541A9646B80A9EA5041ED3CBA957E275541C3B06880A9EA50410E9C37967E27554185EB5178A9EA5041D7A3700D80275541201C119DA9EA5041F91BEB5C8127554197446E87AAEA50416D6ED2567F275541D92248D7AFEA5041180AF59D7327554166ECF633B2EA50416E2229326E275541B81E85BBB1EA5041A4703DFA6D2755413D0AD743B3EA5041A4703D1A682755413C31694FB2EA504176FEEDEF67275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616340 - 3672307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000002000000010300000001000000060000008FC2F5D8FA015141D7A370DDA845544148E17A84FB0151415C8FC295A84554410AD7A3F0F9015141666666A69E455441000000D0F70151417B14AEC79F455441713D0A87F90151417B14AE879F4554418FC2F5D8FA015141D7A370DDA84554410103000000010000001F000000A4703D8AEE0151411F85EBF1AD455441EC51B8CEF7015141E17A14CEA9455441F6285C5FF5015141D7A3706DA1455441F6285CEFF001514114AE47B1A3455441C3F5286CEC01514148E17AD4A545544185EB51C8E50151418FC2F508A94554415C8FC255DF0151411F85EBE1AB4554411F85EBB1D60151419A999979AF455441B81E85ABD001514100000010B2455441713D0AD7CC01514185EB51A8B345544100000080CA015141295C8F92B4455441C3F5285CC40151413D0AD783B64554413D0AD7F3BE015141295C8F02B8455441E17A14FEBA0151411F85EB01B9455441E17A14AEB7015141666666A6B94554418FC2F578B30151418FC2F558BA455441333333B3B301514185EB51D8BC4554413D0AD7B3B3015141713D0A97BF455441CDCCCC8CB30151413D0AD743C2455441D7A3707DB3015141B81E85BBC2455441A4703D1AB90151411F85EBB1C1455441713D0AA7BC0151410AD7A3F0C04554415C8FC255C1015141E17A14EEBF455441EC51B89EC5015141295C8F22BF4554419A999929C80151417B14AE67BE455441713D0A37CD0151410AD7A3A0BC455441E17A146ED201514185EB51A8BA4554411F85EBB1D70151419A999959B845544114AE47D1DE015141E17A143EB5455441C3F5285CE60151410AD7A3E0B1455441A4703D8AEE0151411F85EBF1AD455441
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000003FE26578F5015141DCE10F78A14554418F1E9F16F30151415F57E797A2455441F900EACEF20151410D3A81BCA2455441E3AC9A9BF0015141332AEED5A34554418AE6F71CED0151412D8ABA80A5455441CD399FD7EB0151413C2B2D1CA645544101B6CDADE901514126046B27A7455441ECFE0739E60151412E748ED2A845544136A29819E5015141E02E2056A9455441A9DF0BE0E0015141FD27C933AB455441AE1D77E5DE015141D5AA9C10AC455441CA5AE0B8DB015141173E7C62AD4554413BBDA1D5D60151412A47C06AAF455441B81E85ABD001514100000010B2455441713D0AD7CC01514185EB51A8B345544100000080CA015141295C8F92B4455441C3F5285CC40151413D0AD783B64554413D0AD7F3BE015141295C8F02B84554414C82AB1FBB0151410A7A75F9B8455441E4C111A7BA015141C4F9CB12B9455441403BF7AFB90151411DBEB942B9455441379EEF39B80151413BF1458BB94554419AB68D49B70151415D9710B7B94554418FC2F578B30151418FC2F558BA4554412DD87571B3015141374F5BC4BC455441652509AAB30151419CFAE5C9BE455441EB7A4C87B30151415D029259C0455441D7A3707DB3015141B81E85BBC245544182EB38FFB5015141BE17E244C24554414C54C760B701514116C58603C24554412822A7A7B8015141BF1E1AC7C145544177DD67BEB90151417281018FC1455441E7A11292BB015141F3568B2BC145544105E33421BD01514123004AD6C045544162551DF3C0015141C9845B03C0455441BE3E3425C20151415752DBC6BF45544136853968C50151412BAAAB2CBF4554413D5D5178C701514160C1949ABE4554414914402DC801514117536566BE4554418D08BB0FCA015141A104A8BCBD45544111534E52CB015141FF1F2C4BBD4554417ED62AD2CC01514134AB20C4BC455441C62113DFCD01514141EE2961BC4554413E71FC44D2015141ABEED7B7BA45544180BFFBDAD20151417B3A9778BA455441E3D717D3D40151410D5CA79BB94554410E290806D8015141E40CE734B84554412FF6964ADE015141EB30D878B54554419971D6B2DF0151410B3573D9B44554419CD7B1B2E1015141C301A903B445544159554275E301514114A4132CB345544162879C67E6015141AB876EDBB145544148C0F0F7E8015141767F9B9FB04554415C18B859EC015141E25463FFAE455441C9EC2F8CEE015141EAD50CF1AD455441D73F9E33F10151414A7988C1AC455441EC51B8CEF7015141E17A14CEA94554413FE26578F5015141DCE10F78A1455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616457 - 3011624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC215BF0E51417B14AE67F43E5441F6285C1FC40E514152B81EF5F63E5441EC51B8AECB0E514148E17AE4FC3E5441EC51B85ECE0E5141CDCCCC5CFE3E5441A4703DFAD10E5141D7A3707DFF3E5441333333C3E20E51418FC2F5E8D93E544185EB5118F40E5141AE47E11AB33E54419A999959DE0E5141333333C3AB3E54417B14AE47DD0E5141713D0A67AB3E5441C3F5281CBE0E5141E17A142EF43E54415C8FC215BF0E51417B14AE67F43E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000065AF9135D20E51410C37C24BFF3E5441E1449BDFD30E514190557CD7FF3E5441CF40AD6BDA0E514186547F46023F54411B28613FDD0E5141817F1CC4033F5441B64BC9B3E00E5141C18E7A91053F5441E2AF3838E50E51415EC34B1C073F54415C583CAFE70E5141054199F3073F5441278AD2B5EA0E514180DEBB8A083F54413F2D84B2F60E51414250B1B4ED3E5441666666A6FA0E514152B81EF5E03E5441F0214A2DFC0E51415819E8C8E03E5441929B8371FE0E5141A86C0695D83E5441EA3D0343000F5141D8E4D961D93E54413BE6CA7A060F5141D2487D26C73E54413D45F5EC0B0F5141C73AD446B53E5441A0C437A4090F5141A78F01B0B43E5441F3C2715AF40E5141A7456E1FB33E54416E075776F20E514159B9F59FB73E54414986B30EF10E5141238EDBE7B93E544138FB3497ED0E5141B9BFD4AAC13E54412ACC1177E20E51412EA86893DA3E544165AF9135D20E51410C37C24BFF3E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616457 - 3324484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC215BF0E51417B14AE67F43E5441F6285C1FC40E514152B81EF5F63E5441EC51B8AECB0E514148E17AE4FC3E5441EC51B85ECE0E5141CDCCCC5CFE3E5441A4703DFAD10E5141D7A3707DFF3E5441333333C3E20E51418FC2F5E8D93E544185EB5118F40E5141AE47E11AB33E54419A999959DE0E5141333333C3AB3E54417B14AE47DD0E5141713D0A67AB3E5441C3F5281CBE0E5141E17A142EF43E54415C8FC215BF0E51417B14AE67F43E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000065AF9135D20E51410C37C24BFF3E5441E1449BDFD30E514190557CD7FF3E5441CF40AD6BDA0E514186547F46023F54411B28613FDD0E5141817F1CC4033F5441B64BC9B3E00E5141C18E7A91053F5441E2AF3838E50E51415EC34B1C073F54415C583CAFE70E5141054199F3073F5441278AD2B5EA0E514180DEBB8A083F54413F2D84B2F60E51414250B1B4ED3E5441666666A6FA0E514152B81EF5E03E5441F0214A2DFC0E51415819E8C8E03E5441929B8371FE0E5141A86C0695D83E5441EA3D0343000F5141D8E4D961D93E54413BE6CA7A060F5141D2487D26C73E54413D45F5EC0B0F5141C73AD446B53E5441A0C437A4090F5141A78F01B0B43E5441F3C2715AF40E5141A7456E1FB33E54416E075776F20E514159B9F59FB73E54414986B30EF10E5141238EDBE7B93E544138FB3497ED0E5141B9BFD4AAC13E54412ACC1177E20E51412EA86893DA3E544165AF9135D20E51410C37C24BFF3E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617017 - 150587
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E351F0A514152B81E151435544114AE47A1180A51418FC2F5F80E3554415C8FC2850B0A51419A9999290935544152B81E95FC0951415C8FC2B51F355441295C8F62FA095141333333E323355441295C8FF2040A5141713D0A772B3554411F85EBD1FF095141D7A370CD31355441E17A14FE0B0A5141F6285CFF3C355441F6285C4F110A5141295C8F62423554410AD7A3F0070A51418FC2F5A841355441A4703D4A010A5141AE47E18A413554411F85EBD1F9095141CDCCCCAC413554418FC2F5B8EF0951419A9999294A3554415C8FC225EF095141D7A370AD4A3554410AD7A320F00951419A9999B94B355441713D0A27F70951417B14AEB75235544114AE47B1FD095141AE47E14A5935544185EB5158060A5141C3F5284C5E3554413D0AD7A30F0A5141000000506335544114AE47E1110A51413D0AD7F35A3554419A9999A90A0A51417B14AE6757355441666666A6030A5141AE47E10A53355441F6285CAF080A5141A4703D5A4D355441A4703D4A0F0A5141713D0A275135544114AE4761150A5141713D0AB753355441713D0A971A0A5141666666C64A355441B81E852B1F0A5141D7A3705D4235544148E17A24250A5141000000503C355441333333C31D0A5141F6285CDF353554413D0AD743190A514185EB51C8313554413D0AD7C3150A51419A9999892F3554418FC2F518100A5141F6285C8F2B355441C3F5285C150A51415C8FC285243554419A999959140A514148E17AB42335544152B81E351F0A514152B81E1514355441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000758E4B06F5095141D58AAFB4453554411F85EBD1F9095141CDCCCCAC41355441C2A7153A000A51416917B58F4135544163C9878E010A5141B573567E41355441B3911296080A5141E8C6CF9941355441CCEDDE800C0A5141D7167FDE41355441D072EA08110A5141AA5D3A5B4235544178E1B9BA0B0A5141FC432B0F3D35544178976E8B060A5141DBCC991C38355441DD857F23040A51412AE40AE0353554411EB5B8B2030A5141C9B2DE8436355441C7AEDF4E040A51413C29196F373554419C564694040A514184C6C0B83835544108DE18DE030A5141F811A8AB39355441F043F188020A5141EB7B0788393554412B6C0446020A51415C74B4FB3B355441D6F3FD4F010A5141399957853D35544181CC9209000A5141A8CA12D33E355441E39CA4A9FE095141870C77E43F355441CD00FA75FA0951415E0FE6F0403554417B3B9921FA0951414558814741355441DAE941FFF9095141E1221C5C413554413668DCE4F9095141E6E2B36641355441690FE64CF70951419F9A053C433554416BF10802F409514111A62A0B45355441D2EEC46BF2095141128AA935463554416E8BCD80F009514106FCB3A84835544133C51CD1EF095141346BA7784935544125D35562F009514131193B9B4935544145FBBB70F0095141B4AE208F493554410AE938EDF00951419F1B7D2649355441E42B4773F20951417126A0DE4735544122EF4B65F2095141F33B6C4A4735544185E60200F30951410ADE8E6F46355441A6B91584F3095141D4B32455463554410BEFF72FF40951414BC6D668463554412D49AFABF40951412D46D9004635544150E000B9F4095141384933F045355441758E4B06F5095141D58AAFB445355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617017 - 379232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E351F0A514152B81E151435544114AE47A1180A51418FC2F5F80E3554415C8FC2850B0A51419A9999290935544152B81E95FC0951415C8FC2B51F355441295C8F62FA095141333333E323355441295C8FF2040A5141713D0A772B3554411F85EBD1FF095141D7A370CD31355441E17A14FE0B0A5141F6285CFF3C355441F6285C4F110A5141295C8F62423554410AD7A3F0070A51418FC2F5A841355441A4703D4A010A5141AE47E18A413554411F85EBD1F9095141CDCCCCAC413554418FC2F5B8EF0951419A9999294A3554415C8FC225EF095141D7A370AD4A3554410AD7A320F00951419A9999B94B355441713D0A27F70951417B14AEB75235544114AE47B1FD095141AE47E14A5935544185EB5158060A5141C3F5284C5E3554413D0AD7A30F0A5141000000506335544114AE47E1110A51413D0AD7F35A3554419A9999A90A0A51417B14AE6757355441666666A6030A5141AE47E10A53355441F6285CAF080A5141A4703D5A4D355441A4703D4A0F0A5141713D0A275135544114AE4761150A5141713D0AB753355441713D0A971A0A5141666666C64A355441B81E852B1F0A5141D7A3705D4235544148E17A24250A5141000000503C355441333333C31D0A5141F6285CDF353554413D0AD743190A514185EB51C8313554413D0AD7C3150A51419A9999892F3554418FC2F518100A5141F6285C8F2B355441C3F5285C150A51415C8FC285243554419A999959140A514148E17AB42335544152B81E351F0A514152B81E1514355441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000758E4B06F5095141D58AAFB4453554411F85EBD1F9095141CDCCCCAC41355441C2A7153A000A51416917B58F4135544163C9878E010A5141B573567E41355441B3911296080A5141E8C6CF9941355441CCEDDE800C0A5141D7167FDE41355441D072EA08110A5141AA5D3A5B4235544178E1B9BA0B0A5141FC432B0F3D35544178976E8B060A5141DBCC991C38355441DD857F23040A51412AE40AE0353554411EB5B8B2030A5141C9B2DE8436355441C7AEDF4E040A51413C29196F373554419C564694040A514184C6C0B83835544108DE18DE030A5141F811A8AB39355441F043F188020A5141EB7B0788393554412B6C0446020A51415C74B4FB3B355441D6F3FD4F010A5141399957853D35544181CC9209000A5141A8CA12D33E355441E39CA4A9FE095141870C77E43F355441CD00FA75FA0951415E0FE6F0403554417B3B9921FA0951414558814741355441DAE941FFF9095141E1221C5C413554413668DCE4F9095141E6E2B36641355441690FE64CF70951419F9A053C433554416BF10802F409514111A62A0B45355441D2EEC46BF2095141128AA935463554416E8BCD80F009514106FCB3A84835544133C51CD1EF095141346BA7784935544125D35562F009514131193B9B4935544145FBBB70F0095141B4AE208F493554410AE938EDF00951419F1B7D2649355441E42B4773F20951417126A0DE4735544122EF4B65F2095141F33B6C4A4735544185E60200F30951410ADE8E6F46355441A6B91584F3095141D4B32455463554410BEFF72FF40951414BC6D668463554412D49AFABF40951412D46D9004635544150E000B9F4095141384933F045355441758E4B06F5095141D58AAFB445355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617163 - 1095861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000010000000666666869E105141AE47E1FAD8475441A4703DEAA81051410AD7A310C3475441E17A14AE861051418FC2F5E8A9475441F6285C6F64105141D7A370BD90475441666666365810514185EB51989A4754419A999949571051415C8FC2659D475441CDCCCC4C57105141F6285CAFA147544148E17A645F105141AE47E13AAA4754411F85EBE1671051415C8FC235B1475441713D0A27701051415C8FC255B7475441F6285CBF7A105141B81E850BBF47544152B81E8582105141EC51B80EC6475441AE47E13A8D105141A4703D3ACC475441000000D09410514185EB5198D0475441333333539B105141295C8FE2D5475441666666869E105141AE47E1FAD8475441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000007F6ABCCC9E105141C1CAA18DD7475441F4FDD428A110514173689195D3475441CDCCCCE4A3105141D9CEF703CE4754417F916A06A9105141AC2E4B53C3475441A333ED6EA7105141D522EEF9C1475441AC005BCEA6105141B17B3F8EC14754413CC8BFEBA5105141BB3271DDC047544129CDD320A41051416DFB3C8CBF475441CE1BD402A2105141F7CBFDFDBD475441140521C59E1051415774599CBB47544182AB0AAB941051415EA72830B4475441CD016879911051418C9B61D7B1475441590FAB668D105141E83E34D9AE4754419EA7B7B38B1051412D079D99AD4754413031C93A8A105141225FA784AC4754417E4671977D105141F5F2E23AA347544166CA14DB70105141643387DE994754414D13C474651051419AA1927D91475441FD676D5064105141617A32AC904754412B8716F963105141A8C64BE790475441819543E35E105141736891CD94475441C976BE9F58105141643BDF179A4754413BDF4FC556105141CBA145CE9C4754419CC42030571051418D976E9A9F475441538D981D581051411ED08612A1475441467710275B10514154B72D7DA44754412AABF4945E105141DF69A91BA8475441BDB185336110514104F06CCAAA4754419CFE16B864105141EDC1D29CAD47544102BE0C9166105141831D141BAF4754417EBAF4936A105141CEA1A10AB2475441FF30A7B96C105141FE17107DB34754411EFB185770105141506822ECB547544127A87ED8721051414581C3D1B7475441432668DC79105141EFAA2F30BD47544114C4E50B7D105141B2B4E8C3BF475441B2527BE980105141F482C597C2475441E839F9A285105141F1BF847EC647544177C18A5D891051410394E918C947544192A9CCA78C1051419051A932CB4754410F77D72890105141B48F4479CD475441B7A066EE941051412A1058ADD0475441223C6B3598105141E1FCA055D347544177D80A5C9B105141FC08D431D5475441E2730FA39E105141B9DC6FC3D74754417F6ABCCC9E105141C1CAA18DD7475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617163 - 3584597
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000010000000666666869E105141AE47E1FAD8475441A4703DEAA81051410AD7A310C3475441E17A14AE861051418FC2F5E8A9475441F6285C6F64105141D7A370BD90475441666666365810514185EB51989A4754419A999949571051415C8FC2659D475441CDCCCC4C57105141F6285CAFA147544148E17A645F105141AE47E13AAA4754411F85EBE1671051415C8FC235B1475441713D0A27701051415C8FC255B7475441F6285CBF7A105141B81E850BBF47544152B81E8582105141EC51B80EC6475441AE47E13A8D105141A4703D3ACC475441000000D09410514185EB5198D0475441333333539B105141295C8FE2D5475441666666869E105141AE47E1FAD8475441
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000007F6ABCCC9E105141C1CAA18DD7475441F4FDD428A110514173689195D3475441CDCCCCE4A3105141D9CEF703CE4754417F916A06A9105141AC2E4B53C3475441A333ED6EA7105141D522EEF9C1475441AC005BCEA6105141B17B3F8EC14754413CC8BFEBA5105141BB3271DDC047544129CDD320A41051416DFB3C8CBF475441CE1BD402A2105141F7CBFDFDBD475441140521C59E1051415774599CBB47544182AB0AAB941051415EA72830B4475441CD016879911051418C9B61D7B1475441590FAB668D105141E83E34D9AE4754419EA7B7B38B1051412D079D99AD4754413031C93A8A105141225FA784AC4754417E4671977D105141F5F2E23AA347544166CA14DB70105141643387DE994754414D13C474651051419AA1927D91475441FD676D5064105141617A32AC904754412B8716F963105141A8C64BE790475441819543E35E105141736891CD94475441C976BE9F58105141643BDF179A4754413BDF4FC556105141CBA145CE9C4754419CC42030571051418D976E9A9F475441538D981D581051411ED08612A1475441467710275B10514154B72D7DA44754412AABF4945E105141DF69A91BA8475441BDB185336110514104F06CCAAA4754419CFE16B864105141EDC1D29CAD47544102BE0C9166105141831D141BAF4754417EBAF4936A105141CEA1A10AB2475441FF30A7B96C105141FE17107DB34754411EFB185770105141506822ECB547544127A87ED8721051414581C3D1B7475441432668DC79105141EFAA2F30BD47544114C4E50B7D105141B2B4E8C3BF475441B2527BE980105141F482C597C2475441E839F9A285105141F1BF847EC647544177C18A5D891051410394E918C947544192A9CCA78C1051419051A932CB4754410F77D72890105141B48F4479CD475441B7A066EE941051412A1058ADD0475441223C6B3598105141E1FCA055D347544177D80A5C9B105141FC08D431D5475441E2730FA39E105141B9DC6FC3D74754417F6ABCCC9E105141C1CAA18DD7475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617772 - 233274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8F62AF0D51415C8FC205ED3954411F85EBA1B10D5141AE47E10AFE39544114AE4751B30D514152B81EF50C3A5441A4703DBAB30D51413D0AD773113A5441F6285C7FB30D514100000080173A5441666666D6B50D5141713D0A27183A5441713D0AF7B80D514100000080183A5441C3F528ECBB0D514185EB51A8183A5441000000F0BF0D51411F85EBA1183A5441D7A370BDC30D51417B14AE47193A5441B81E85FBC30D51419A999979183A544100000000C40D51413D0AD7C3173A5441AE47E12AC40D5141C3F528CC163A5441AE47E1DAC30D514114AE4771143A544152B81EF5C30D51419A999929123A5441295C8FD2C30D5141B81E85FB103A544152B81E35C30D5141AE47E1BA0E3A54418FC2F598C20D5141000000900C3A544114AE4741C20D51419A9999D90A3A54417B14AE17C20D5141F6285C1F093A54419A999949C20D5141A4703D0A083A5441A4703D3AC20D51411F85EBC1063A5441D7A3707DC20D514100000060053A5441EC51B81EC30D51410AD7A360033A5441A4703D0AC40D514166666686013A5441713D0AD7C40D5141CDCCCCFCFE395441D7A3708DC00D514185EB5108F039544185EB5158BF0D514148E17A84E9395441A4703D2ABE0D5141A4703D0AE239544148E17A74B20D514166666626E139544185EB51E8AD0D514114AE47A1E03954419A999909AF0D5141295C8F62EA395441295C8F62AF0D51415C8FC205ED395441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000ADEF1170BA0D51411C880193163A544175BF169FBA0D5141ED04634D173A544120BCB1ACBA0D5141E5F68E5B173A544164A1FDB1BA0D51417A4A1361173A54415BB3DAE6BC0D5141A00B002E173A5441516F5FF2BF0D51418EA5764D173A54412CD75B7BC20D5141CD7E579B173A544135DE33FFC30D514186F730E4173A5441C355C125C40D514132E9C2E9163A54412AC03DDCC30D514135C1897B143A5441F6F762CDC30D5141E36692E8103A54418772C251C30D5141667BDE24083A5441436C18AFC30D51413BE82DCA043A5441B9C0ECEAC30D5141FDB274C5013A5441B673F6D9C40D5141D11F70F0FE39544197E277D7C30D5141499F5A81FB395441E3416592C20D5141AD2A7C13F739544182D737D5C00D5141297BAF02F139544134D8B61EC00D514144BB688FED39544111FC2F0AC00D514183B1B28CED395441B8A1D424BD0D51414BF58F42ED39544101DCCDE2B90D5141F889E4E5EC3954418C529BFEB10D514167B38D2CEC3954415EC51AB6AF0D5141025427F6EB3954414F7BC63EAF0D5141E62628F6EB39544176C3D73AAE0D514146557C07EC3954419281D524AD0D5141B01E3989EC395441AE47E14AAC0D5141F6285CBFED395441713D0A17AA0D514185EB5128F0395441B81E850BA90D5141EC51B8FEF0395441CDCCCC3CA70D5141E17A144EF2395441AE47E1EAA40D51415C8FC2D5F33954417B14AE27A30D514133333303F5395441A4703DCAA10D5141333333B3F53954418FC2F548A00D51410AD7A300F6395441AE47E13A9E0D514185EB51E8F5395441C701EA5F9F0D514157616FFCF73954410BA24950A40D51414C1253F3F63954411DFBDF17A90D514140741AE1F4395441E5C70A6CB00D5141AC647420F3395441CC0BCF70B50D51418C9EBE66F43954419C623E5AB70D5141A81FD2D5F53954411540EDB4B80D5141CFEF014EF8395441D9F8238CB80D51415FBA05C4FC3954412523C811B80D5141474DE6D1023A5441B9326ED2B90D51414E576090063A5441ADEF1170BA0D51411C880193163A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617772 - 315055
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8F62AF0D51415C8FC205ED3954411F85EBA1B10D5141AE47E10AFE39544114AE4751B30D514152B81EF50C3A5441A4703DBAB30D51413D0AD773113A5441F6285C7FB30D514100000080173A5441666666D6B50D5141713D0A27183A5441713D0AF7B80D514100000080183A5441C3F528ECBB0D514185EB51A8183A5441000000F0BF0D51411F85EBA1183A5441D7A370BDC30D51417B14AE47193A5441B81E85FBC30D51419A999979183A544100000000C40D51413D0AD7C3173A5441AE47E12AC40D5141C3F528CC163A5441AE47E1DAC30D514114AE4771143A544152B81EF5C30D51419A999929123A5441295C8FD2C30D5141B81E85FB103A544152B81E35C30D5141AE47E1BA0E3A54418FC2F598C20D5141000000900C3A544114AE4741C20D51419A9999D90A3A54417B14AE17C20D5141F6285C1F093A54419A999949C20D5141A4703D0A083A5441A4703D3AC20D51411F85EBC1063A5441D7A3707DC20D514100000060053A5441EC51B81EC30D51410AD7A360033A5441A4703D0AC40D514166666686013A5441713D0AD7C40D5141CDCCCCFCFE395441D7A3708DC00D514185EB5108F039544185EB5158BF0D514148E17A84E9395441A4703D2ABE0D5141A4703D0AE239544148E17A74B20D514166666626E139544185EB51E8AD0D514114AE47A1E03954419A999909AF0D5141295C8F62EA395441295C8F62AF0D51415C8FC205ED395441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000ADEF1170BA0D51411C880193163A544175BF169FBA0D5141ED04634D173A544120BCB1ACBA0D5141E5F68E5B173A544164A1FDB1BA0D51417A4A1361173A54415BB3DAE6BC0D5141A00B002E173A5441516F5FF2BF0D51418EA5764D173A54412CD75B7BC20D5141CD7E579B173A544135DE33FFC30D514186F730E4173A5441C355C125C40D514132E9C2E9163A54412AC03DDCC30D514135C1897B143A5441F6F762CDC30D5141E36692E8103A54418772C251C30D5141667BDE24083A5441436C18AFC30D51413BE82DCA043A5441B9C0ECEAC30D5141FDB274C5013A5441B673F6D9C40D5141D11F70F0FE39544197E277D7C30D5141499F5A81FB395441E3416592C20D5141AD2A7C13F739544182D737D5C00D5141297BAF02F139544134D8B61EC00D514144BB688FED39544111FC2F0AC00D514183B1B28CED395441B8A1D424BD0D51414BF58F42ED39544101DCCDE2B90D5141F889E4E5EC3954418C529BFEB10D514167B38D2CEC3954415EC51AB6AF0D5141025427F6EB3954414F7BC63EAF0D5141E62628F6EB39544176C3D73AAE0D514146557C07EC3954419281D524AD0D5141B01E3989EC395441AE47E14AAC0D5141F6285CBFED395441713D0A17AA0D514185EB5128F0395441B81E850BA90D5141EC51B8FEF0395441CDCCCC3CA70D5141E17A144EF2395441AE47E1EAA40D51415C8FC2D5F33954417B14AE27A30D514133333303F5395441A4703DCAA10D5141333333B3F53954418FC2F548A00D51410AD7A300F6395441AE47E13A9E0D514185EB51E8F5395441C701EA5F9F0D514157616FFCF73954410BA24950A40D51414C1253F3F63954411DFBDF17A90D514140741AE1F4395441E5C70A6CB00D5141AC647420F3395441CC0BCF70B50D51418C9EBE66F43954419C623E5AB70D5141A81FD2D5F53954411540EDB4B80D5141CFEF014EF8395441D9F8238CB80D51415FBA05C4FC3954412523C811B80D5141474DE6D1023A5441B9326ED2B90D51414E576090063A5441ADEF1170BA0D51411C880193163A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617773 - 51582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000026000000F6285C9F88FF5041D7A370CDCB4854418FC2F50879FF5041EC51B8FEC74854413D0AD7036FFF5041EC51B82EC5485441000000906AFF50415C8FC2D5C3485441B81E851B69FF5041F6285C5FCA48544114AE479169FF50419A9999E9CD48544114AE47A169FF50418FC2F5E8D1485441A4703D2A6CFF50415C8FC295D748544148E17A046FFF5041666666A6DC4854415C8FC2E572FF50415C8FC275E148544185EB51A879FF504100000020E7485441AE47E18A7FFF50418FC2F578EB485441B81E854B7FFF5041295C8F12EC48544152B81E1587FF5041D7A3700DF2485441B81E855B8FFF5041AE47E14AF74854417B14AE6797FF5041EC51B88EFC48544100000010A4FF504148E17A24024954418FC2F5A8A6FF504152B81E25034954419A999939A8FF50410000007003495441D7A370FDADFF5041713D0A77054954413D0AD793BAFF50418FC2F5E8034954415C8FC2C5C5FF50416666668603495441713D0A17DAFF5041000000E002495441D7A370FDE2FF50415C8FC2D5024954418FC2F5E8E9FF50411F85EBB1024954411F85EBE1EEFF50411F85EB1103495441E17A14AEF1FF504133333353FA48544152B81EA5EBFF5041D7A370FDF548544166666676DEFF50415C8FC225EC485441AE47E1CAD4FF50410AD7A3F0E448544133333313C9FF50415C8FC225DD485441AE47E14ABEFF5041F6285C0FD548544114AE4721BBFF504148E17AE4D248544100000060B8FF5041F6285C4FD148544114AE47A1B3FF504133333323D0485441333333039DFF5041B81E85BBCE4854413D0AD79393FF5041CDCCCCBCCD485441F6285C9F88FF5041D7A370CDCB485441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000000000906AFF50415C8FC2D5C3485441FA7C000B71FF5041025E71C0C54854417BC7D38877FF5041B6F7E592C7485441048C6C457CFF504138F615C9C84854410F0A526983FF50412B459487CA4854411B73D8E087FF5041955BE79ECB4854415B64826B8AFF5041FE89B71ECC485441E1D45CAB91FF5041E4F88466CD485441D3C76FEF93FF5041AAAA75C6CD4854417177CE549AFF504184502273CE485441E8223E109EFF504140A23BCCCE4854419812A5E8A3FF504136833029CF4854419B0A0AF1AAFF5041F6B20799CF4854418756C484B1FF504115919F01D04854418D793521B3FF504106853E1BD0485441558F730AB4FF50417A26303DD0485441C9D44B7FB6FF504150B893D8D048544129F8AB63B8FF504185167851D14854417141B05CB9FF504162C081E0D14854411DA6D4EFBAFF5041656713C8D2485441FD655A75BCFF5041CACA8ECDD3485441E8A8AABAC2FF5041720C4463D8485441F7B22085C8FF50417C9332BBDC485441CF0E2DECCCFF50411FADCCB4DF4854413CF8D2B2D5FF504105CA849DE548544100ED2CD5DCFF5041DD7FC8EEEA485441C7C0C1B1E4FF50414347E8CCF0485441CC1ABFBCE9FF50419DC8CD90F4485441E17A14AEF1FF504133333353FA4854414E3616CAF1FF5041184B1386F948544176C9424BEDFF5041807E098CF548544132272CA0E8FF50418C2E47F9F1485441C06C2814DEFF50412AA7F413EA485441F1AF9202D6FF50412B7D4624E4485441B56641A1D1FF504112F1CF33E14854414055C5F1CAFF50419B607A97DC48544169691886C8FF50413D5C9BEBDA485441525C7B82C3FF5041DDD6952CD74854417AEFA703BFFF504152BC16C6D3485441F0D4289DBBFF504118F4EB77D148544103DE2B54B8FF504156138FE9CF485441025D0541B6FF504148610456CF48544173E9C090B2FF5041A3E4BCEECE4854413A76C13FA8FF5041C820714CCE485441148DEBB89CFF50411B4B649BCD485441B28472C092FF50419C0AD191CC485441193742B38CFF5041B7EDBFA5CB4854410FDC2F4388FF504137AD2C9CCA48544153524BD882FF50417D259557C9485441B902CEA478FF5041A539E8EBC648544101D0615D6FFF5041322AB962C448544129638EDE6AFF5041D425DAB6C2485441000000906AFF50415C8FC2D5C3485441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617773 - 85466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000026000000F6285C9F88FF5041D7A370CDCB4854418FC2F50879FF5041EC51B8FEC74854413D0AD7036FFF5041EC51B82EC5485441000000906AFF50415C8FC2D5C3485441B81E851B69FF5041F6285C5FCA48544114AE479169FF50419A9999E9CD48544114AE47A169FF50418FC2F5E8D1485441A4703D2A6CFF50415C8FC295D748544148E17A046FFF5041666666A6DC4854415C8FC2E572FF50415C8FC275E148544185EB51A879FF504100000020E7485441AE47E18A7FFF50418FC2F578EB485441B81E854B7FFF5041295C8F12EC48544152B81E1587FF5041D7A3700DF2485441B81E855B8FFF5041AE47E14AF74854417B14AE6797FF5041EC51B88EFC48544100000010A4FF504148E17A24024954418FC2F5A8A6FF504152B81E25034954419A999939A8FF50410000007003495441D7A370FDADFF5041713D0A77054954413D0AD793BAFF50418FC2F5E8034954415C8FC2C5C5FF50416666668603495441713D0A17DAFF5041000000E002495441D7A370FDE2FF50415C8FC2D5024954418FC2F5E8E9FF50411F85EBB1024954411F85EBE1EEFF50411F85EB1103495441E17A14AEF1FF504133333353FA48544152B81EA5EBFF5041D7A370FDF548544166666676DEFF50415C8FC225EC485441AE47E1CAD4FF50410AD7A3F0E448544133333313C9FF50415C8FC225DD485441AE47E14ABEFF5041F6285C0FD548544114AE4721BBFF504148E17AE4D248544100000060B8FF5041F6285C4FD148544114AE47A1B3FF504133333323D0485441333333039DFF5041B81E85BBCE4854413D0AD79393FF5041CDCCCCBCCD485441F6285C9F88FF5041D7A370CDCB485441
+</a>
+
+<b>
+01060000000100000001030000000100000035000000000000906AFF50415C8FC2D5C3485441FA7C000B71FF5041025E71C0C54854417BC7D38877FF5041B6F7E592C7485441048C6C457CFF504138F615C9C84854410F0A526983FF50412B459487CA4854411B73D8E087FF5041955BE79ECB4854415B64826B8AFF5041FE89B71ECC485441E1D45CAB91FF5041E4F88466CD485441D3C76FEF93FF5041AAAA75C6CD4854417177CE549AFF504184502273CE485441E8223E109EFF504140A23BCCCE4854419812A5E8A3FF504136833029CF4854419B0A0AF1AAFF5041F6B20799CF4854418756C484B1FF504115919F01D04854418D793521B3FF504106853E1BD0485441558F730AB4FF50417A26303DD0485441C9D44B7FB6FF504150B893D8D048544129F8AB63B8FF504185167851D14854417141B05CB9FF504162C081E0D14854411DA6D4EFBAFF5041656713C8D2485441FD655A75BCFF5041CACA8ECDD3485441E8A8AABAC2FF5041720C4463D8485441F7B22085C8FF50417C9332BBDC485441CF0E2DECCCFF50411FADCCB4DF4854413CF8D2B2D5FF504105CA849DE548544100ED2CD5DCFF5041DD7FC8EEEA485441C7C0C1B1E4FF50414347E8CCF0485441CC1ABFBCE9FF50419DC8CD90F4485441E17A14AEF1FF504133333353FA4854414E3616CAF1FF5041184B1386F948544176C9424BEDFF5041807E098CF548544132272CA0E8FF50418C2E47F9F1485441C06C2814DEFF50412AA7F413EA485441F1AF9202D6FF50412B7D4624E4485441B56641A1D1FF504112F1CF33E14854414055C5F1CAFF50419B607A97DC48544169691886C8FF50413D5C9BEBDA485441525C7B82C3FF5041DDD6952CD74854417AEFA703BFFF504152BC16C6D3485441F0D4289DBBFF504118F4EB77D148544103DE2B54B8FF504156138FE9CF485441025D0541B6FF504148610456CF48544173E9C090B2FF5041A3E4BCEECE4854413A76C13FA8FF5041C820714CCE485441148DEBB89CFF50411B4B649BCD485441B28472C092FF50419C0AD191CC485441193742B38CFF5041B7EDBFA5CB4854410FDC2F4388FF504137AD2C9CCA48544153524BD882FF50417D259557C9485441B902CEA478FF5041A539E8EBC648544101D0615D6FFF5041322AB962C448544129638EDE6AFF5041D425DAB6C2485441000000906AFF50415C8FC2D5C3485441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617836 - 1096628
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006200000085EB51B8F3FF5041AE47E11AA149544185EB5178F5FF5041D7A3705DA0495441AE47E15AF7FF50415C8FC2959B49544100000060000051411F85EBE19E495441F6285CFF0A005141333333E3A3495441AE47E13A160051410000002094495441C3F5283C20005141EC51B8AE85495441333333F32800514166666666784954417B14AE2731005141AE47E1CA6B4954411F85EB61380051415C8FC2B560495441713D0AE7390051419A9999995D4954417B14AE273C0051417B14AE275949544185EB51D83C005141713D0A57554954417B14AED73B00514148E17A044D4954417B14AEE73A005141295C8FF2474954413D0AD7833A0051415C8FC2B5454954413D0AD7333A005141E17A144E424954419A9999B93A005141A4703DEA3C4954417B14AE373B00514148E17A6436495441333333733B005141713D0A473349544185EB51A83B0051419A99998930495441E17A14FE3B005141CDCCCCBC2A495441333333B33C0051419A9999C926495441D7A3701D3D005141F6285C8F2549544148E17AE43D0051413333334323495441D7A3703D3E005141D7A370FD1F495441C3F5283C3E005141333333431E4954415C8FC2353E005141CDCCCC1C16495441CDCCCC0C3700514148E17AC41749544114AE470135005141713D0AE70E495441AE47E1DA33005141A4703DFA0949544148E17AC42A00514185EB51180C495441EC51B84E2000514114AE47C10F4954413333334318005141295C8F02104954413D0AD7930F00514185EB5108114954415C8FC2D504005141333333A3114954413D0AD76303005141F6285CDF124954415C8FC2F5020051413D0AD743134954410AD7A380000051411F85EB71154954413D0AD743FEFF5041EC51B84E1749544152B81EE5FBFF504185EB5148194954415C8FC265FAFF504185EB51881A495441D7A3707DF7FF5041713D0AE71C495441713D0A77F3FF504148E17AF41F49544185EB51E8F0FF5041D7A370FD214954413D0AD773EFFF5041713D0A272349544133333363EDFF50416666661625495441295C8FC2EBFF50411F85EBC12649544100000070EAFF504100000020284954417B14AE67E9FF5041E17A143E2949544166666606E8FF5041CDCCCCCC2A495441F6285C7FE6FF5041295C8F922C495441A4703D8AE5FF504185EB51B82D4954415C8FC2E5E3FF5041AE47E1AA2F49544148E17AB4E2FF504114AE470131495441295C8FF2E1FF5041333333C331495441F6285CAFE0FF504148E17AF4324954418FC2F5E8DEFF5041000000A034495441B81E855BDEFF50419A99992935495441A4703DCADDFF5041000000E0354954418FC2F508DDFF504185EB51E836495441713D0A17DCFF504152B81E553849544148E17AC4DAFF504148E17A743A495441A4703D0ADAFF5041CDCCCC7C3B4954417B14AE27D9FF5041666666D63C495441AE47E1EAD7FF50417B14AEA73E4954413D0AD7D3D6FF50410AD7A31040495441C3F5285CD5FF50419A9999E9414954413D0AD7C3D4FF5041C3F5289C4249544114AE4741D4FF5041F6285C0F43495441333333C3D3FF5041C3F5286C43495441AE47E1BAD2FF50413D0AD71344495441CDCCCCCCD1FF5041000000B044495441333333D3D0FF5041000000504549544133333393CFFF50411F85EB41464954417B14AE47CEFF50418FC2F558474954417B14AEC7CBFF5041AE47E18A494954410AD7A3A0C8FF5041295C8F424C495441A4703D3AC6FF5041C3F5287C4E49544148E17A94C4FF504114AE47E14F495441713D0A37C6FF5041F6285CEF50495441333333C3C7FF5041CDCCCCCC57495441F6285CCFC7FF50419A9999F95F4954418FC2F5C8D7FF50411F85EB7163495441D7A370CDD9FF5041713D0A7765495441EC51B83ED0FF5041C3F5284C74495441AE47E1EAD0FF5041AE47E12A7749544133333363DCFF5041666666A67E49544166666636D7FF50418FC2F59887495441C3F5281CD7FF50413D0AD7038A49544100000010D9FF50417B14AEF78B495441EC51B89EDBFF5041666666868E495441CDCCCC7CDBFF5041B81E858B90495441A4703DDAD7FF5041713D0A8795495441A4703DBAD8FF50415C8FC235974954410AD7A3F0E0FF5041F6285C5F9A4954411F85EB61ECFF50410AD7A3D09E49544185EB51B8F3FF5041AE47E11AA1495441
+</a>
+
+<b>
+01060000000100000001030000000100000046000000257A0F731E005141D3EC0A9E904954410AD7A300220051413D0AD7A391495441A4703DFA22005141295C8F02964954419A99993929005141AE47E1EA8949544152B81EF52F0051413D0AD7E37C4954413D0AD7E33500514185EB51687149544154F48C22350051415BE4E6B5704954414017593D2F005141C8574EBC6E4954414FF928AE2E0051419C9353986F495441C33B9DF52D005141F7C046B4704954417E256A8D2D00514111B8FF53714954419CE963262D00514195644DF271495441402151302C00514180D9686C73495441FBEB820F2B005141676C2D2875495441761BCA6F2A00514177AA991D764954412020092C290051419485110F78495441DE58E1452800514116558E6E794954416EB6335B2700514121703AD47A495441781209B626005141ED41F5CF7B4954414ED1ADC625005141C8A6C23C7D4954419A87CD702500514142D3A4BF7D4954410B2FBA0323005141AA0E397281495441A8F787112100514185978569844954417A33BA4B20005141B26DFE9685495441DBE6DF1120005141E398C2EB8549544154D6EAC61F005141C18DF65786495441C11642AB1F0051415AD0E37F864954418638CBCD1E005141F07494BF87495441E624B2341E00514105C5949C8849544177F8E5E41D0051413B6AC50F8949544104275DE81C00514135CF4F7C8A4954414CECA95E1C0051414FF415438B495441A61745C61A005141B7249D908D49544189315E9F190051415F29503A8F495441A78C8E2419005141F22C98EB8F495441ECBD86B9170051414BA3A3F7914954416A27D01417005141524C68E592495441651589B3160051415A95D47193495441BB6B81901600514165A865A493495441E11D455C16005141D4F4CCEF93495441AA62ABFA150051417B59267A94495441791EEE1C15005141CF3677B195495441C74AA97D14005141C622139196495441F9BCDF3713005141969C785A984954413A3E097512005141C8A3046C994954412DD59BFC11005141904718159A4954414E35592A10005141AE1AB6A39C4954417B319EC60C005141B823FB65A1495441543DD3000B0051415AF217E3A349544110668C6306005141EA2614B7A149544182D1DBB0040051418D8679EAA0495441B81E85DB0400514114AE4771A14954418FC2F56803005141CDCCCC8CA4495441D7A3700D01005141EC51B85EA349544148E17A84FDFF5041CDCCCC6CA94954411F85EBE1FAFF5041713D0A47AB4954410AD7A31000005141EC51B89EAE495441666666B602005141F6285C1FB04954413333330307005141A4703DDAAB4954417B14AEB70A005141EC51B87EA9495441E17A142E0B0051413D0AD703A7495441B81E851B0D00514114AE4731A5495441C3F5284C0F00514148E17A54A649544185EB510815005141D7A3705DA2495441D7A3703D160051410AD7A3409E49544166666656190051415C8FC2659C495441C3F5286C1A00514148E17A94994954413D0AD7531C0051418FC2F568964954419A9999C91C0051411F85EBE191495441257A0F731E005141D3EC0A9E90495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617836 - 3471319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006200000085EB51B8F3FF5041AE47E11AA149544185EB5178F5FF5041D7A3705DA0495441AE47E15AF7FF50415C8FC2959B49544100000060000051411F85EBE19E495441F6285CFF0A005141333333E3A3495441AE47E13A160051410000002094495441C3F5283C20005141EC51B8AE85495441333333F32800514166666666784954417B14AE2731005141AE47E1CA6B4954411F85EB61380051415C8FC2B560495441713D0AE7390051419A9999995D4954417B14AE273C0051417B14AE275949544185EB51D83C005141713D0A57554954417B14AED73B00514148E17A044D4954417B14AEE73A005141295C8FF2474954413D0AD7833A0051415C8FC2B5454954413D0AD7333A005141E17A144E424954419A9999B93A005141A4703DEA3C4954417B14AE373B00514148E17A6436495441333333733B005141713D0A473349544185EB51A83B0051419A99998930495441E17A14FE3B005141CDCCCCBC2A495441333333B33C0051419A9999C926495441D7A3701D3D005141F6285C8F2549544148E17AE43D0051413333334323495441D7A3703D3E005141D7A370FD1F495441C3F5283C3E005141333333431E4954415C8FC2353E005141CDCCCC1C16495441CDCCCC0C3700514148E17AC41749544114AE470135005141713D0AE70E495441AE47E1DA33005141A4703DFA0949544148E17AC42A00514185EB51180C495441EC51B84E2000514114AE47C10F4954413333334318005141295C8F02104954413D0AD7930F00514185EB5108114954415C8FC2D504005141333333A3114954413D0AD76303005141F6285CDF124954415C8FC2F5020051413D0AD743134954410AD7A380000051411F85EB71154954413D0AD743FEFF5041EC51B84E1749544152B81EE5FBFF504185EB5148194954415C8FC265FAFF504185EB51881A495441D7A3707DF7FF5041713D0AE71C495441713D0A77F3FF504148E17AF41F49544185EB51E8F0FF5041D7A370FD214954413D0AD773EFFF5041713D0A272349544133333363EDFF50416666661625495441295C8FC2EBFF50411F85EBC12649544100000070EAFF504100000020284954417B14AE67E9FF5041E17A143E2949544166666606E8FF5041CDCCCCCC2A495441F6285C7FE6FF5041295C8F922C495441A4703D8AE5FF504185EB51B82D4954415C8FC2E5E3FF5041AE47E1AA2F49544148E17AB4E2FF504114AE470131495441295C8FF2E1FF5041333333C331495441F6285CAFE0FF504148E17AF4324954418FC2F5E8DEFF5041000000A034495441B81E855BDEFF50419A99992935495441A4703DCADDFF5041000000E0354954418FC2F508DDFF504185EB51E836495441713D0A17DCFF504152B81E553849544148E17AC4DAFF504148E17A743A495441A4703D0ADAFF5041CDCCCC7C3B4954417B14AE27D9FF5041666666D63C495441AE47E1EAD7FF50417B14AEA73E4954413D0AD7D3D6FF50410AD7A31040495441C3F5285CD5FF50419A9999E9414954413D0AD7C3D4FF5041C3F5289C4249544114AE4741D4FF5041F6285C0F43495441333333C3D3FF5041C3F5286C43495441AE47E1BAD2FF50413D0AD71344495441CDCCCCCCD1FF5041000000B044495441333333D3D0FF5041000000504549544133333393CFFF50411F85EB41464954417B14AE47CEFF50418FC2F558474954417B14AEC7CBFF5041AE47E18A494954410AD7A3A0C8FF5041295C8F424C495441A4703D3AC6FF5041C3F5287C4E49544148E17A94C4FF504114AE47E14F495441713D0A37C6FF5041F6285CEF50495441333333C3C7FF5041CDCCCCCC57495441F6285CCFC7FF50419A9999F95F4954418FC2F5C8D7FF50411F85EB7163495441D7A370CDD9FF5041713D0A7765495441EC51B83ED0FF5041C3F5284C74495441AE47E1EAD0FF5041AE47E12A7749544133333363DCFF5041666666A67E49544166666636D7FF50418FC2F59887495441C3F5281CD7FF50413D0AD7038A49544100000010D9FF50417B14AEF78B495441EC51B89EDBFF5041666666868E495441CDCCCC7CDBFF5041B81E858B90495441A4703DDAD7FF5041713D0A8795495441A4703DBAD8FF50415C8FC235974954410AD7A3F0E0FF5041F6285C5F9A4954411F85EB61ECFF50410AD7A3D09E49544185EB51B8F3FF5041AE47E11AA1495441
+</a>
+
+<b>
+01060000000100000001030000000100000046000000257A0F731E005141D3EC0A9E904954410AD7A300220051413D0AD7A391495441A4703DFA22005141295C8F02964954419A99993929005141AE47E1EA8949544152B81EF52F0051413D0AD7E37C4954413D0AD7E33500514185EB51687149544154F48C22350051415BE4E6B5704954414017593D2F005141C8574EBC6E4954414FF928AE2E0051419C9353986F495441C33B9DF52D005141F7C046B4704954417E256A8D2D00514111B8FF53714954419CE963262D00514195644DF271495441402151302C00514180D9686C73495441FBEB820F2B005141676C2D2875495441761BCA6F2A00514177AA991D764954412020092C290051419485110F78495441DE58E1452800514116558E6E794954416EB6335B2700514121703AD47A495441781209B626005141ED41F5CF7B4954414ED1ADC625005141C8A6C23C7D4954419A87CD702500514142D3A4BF7D4954410B2FBA0323005141AA0E397281495441A8F787112100514185978569844954417A33BA4B20005141B26DFE9685495441DBE6DF1120005141E398C2EB8549544154D6EAC61F005141C18DF65786495441C11642AB1F0051415AD0E37F864954418638CBCD1E005141F07494BF87495441E624B2341E00514105C5949C8849544177F8E5E41D0051413B6AC50F8949544104275DE81C00514135CF4F7C8A4954414CECA95E1C0051414FF415438B495441A61745C61A005141B7249D908D49544189315E9F190051415F29503A8F495441A78C8E2419005141F22C98EB8F495441ECBD86B9170051414BA3A3F7914954416A27D01417005141524C68E592495441651589B3160051415A95D47193495441BB6B81901600514165A865A493495441E11D455C16005141D4F4CCEF93495441AA62ABFA150051417B59267A94495441791EEE1C15005141CF3677B195495441C74AA97D14005141C622139196495441F9BCDF3713005141969C785A984954413A3E097512005141C8A3046C994954412DD59BFC11005141904718159A4954414E35592A10005141AE1AB6A39C4954417B319EC60C005141B823FB65A1495441543DD3000B0051415AF217E3A349544110668C6306005141EA2614B7A149544182D1DBB0040051418D8679EAA0495441B81E85DB0400514114AE4771A14954418FC2F56803005141CDCCCC8CA4495441D7A3700D01005141EC51B85EA349544148E17A84FDFF5041CDCCCC6CA94954411F85EBE1FAFF5041713D0A47AB4954410AD7A31000005141EC51B89EAE495441666666B602005141F6285C1FB04954413333330307005141A4703DDAAB4954417B14AEB70A005141EC51B87EA9495441E17A142E0B0051413D0AD703A7495441B81E851B0D00514114AE4731A5495441C3F5284C0F00514148E17A54A649544185EB510815005141D7A3705DA2495441D7A3703D160051410AD7A3409E49544166666656190051415C8FC2659C495441C3F5286C1A00514148E17A94994954413D0AD7531C0051418FC2F568964954419A9999C91C0051411F85EBE191495441257A0F731E005141D3EC0A9E90495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617968 - 353332
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002800000052B81E4516FF5041A4703D6ACF345441CDCCCCFC14FF5041F6285C8FCE345441E17A147E1DFF504185EB51F8CA34544152B81E4520FF5041A4703D6ACA345441713D0AB724FF504148E17AB4C83454415C8FC26525FF504100000080C5345441A4703D6A24FF5041CDCCCC5CBE34544114AE470123FF5041713D0A37BD345441E17A14EE1DFF504133333383BF34544152B81E7517FF50410AD7A370C2345441333333B310FF504152B81E85C534544185EB51380AFF504166666666C8345441713D0A67FDFE504114AE4791CD345441E17A14BEF0FE5041295C8F02D3345441E17A141EECFE5041F6285CFFD434544166666686EBFE504185EB5138D53454413D0AD713EAFE50413D0AD7C3D534544185EB5168DEFE5041D7A3702DDB3454413D0AD703DCFE50419A999949DC345441E17A149EDEFE5041B81E858BE4345441B81E85CBE2FE5041E17A14DEEC345441B81E85ABE9FE5041D7A3702DEA3454419A999909F0FE5041EC51B80EE8345441295C8FA2F0FE5041B81E85DBE734544114AE4741F1FE5041713D0AA7E734544100000090F0FE50418FC2F5C8E6345441F6285CEFF0FE5041C3F528FCE53454418FC2F598F1FE50411F85EBC1E63454417B14AEF7F1FE5041A4703D6AE7345441713D0A3701FF5041713D0A57E23454410AD7A3600DFF50417B14AE37DE3454413D0AD7C319FF5041C3F528ECD934544185EB51E826FF504114AE4791D53454418FC2F5B826FF504152B81EE5D134544114AE476126FF504148E17AB4CD3454410000008024FF5041AE47E12ACC3454418FC2F58822FF504166666656CC3454415C8FC23521FF50418FC2F5B8CC345441D7A370ED15FF504148E17AF4D034544152B81E4516FF5041A4703D6ACF345441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000FF659E52F5FE5041431E7D0AD13454415F650161F7FE504106744CA0D23454416031C579F7FE5041FF07A74DD3345441007ADB63F7FE504159F94636D43454418E949B30F7FE50417545FF76D5345441AD65141EF7FE504100F118AAD6345441C45F9C14F7FE50419319387DD7345441F35E32B9F6FE5041763A4DF1D8345441B144D493F5FE50417FCF3856DB34544129B831AAF7FE5041D6543571DA345441DEBB2A12F8FE504127C1B323D93454412188AFA5F8FE5041443DA8C1D73454411059A696F9FE5041A171A26FD63454410D2C18ADFBFE5041435D0A5ED534544121C4DCA0FEFE50415AEA15CBD43454413B43954501FF504142DF5F82D43454415F2F669C03FF504106EECCA7D434544195CC704B05FF5041292E0337D53454412FDE495809FF5041ACA40FC4D334544181C3EBE70EFF50410971D88AD1345441F8A9DC4A13FF504173DFFFCECF3454418D37FB8515FF5041D382CD03CF3454413848DD8E15FF50413E7BBCF0CE345441CDCCCCFC14FF5041F6285C8FCE345441282618EB15FF5041F15CC62ACE345441CF74C47A15FF5041636A457CCD345441E39E07A509FF5041B6535250CF345441CF5ABD6E03FF5041B38D6345D1345441726ABD42FFFE504139A82744D2345441FD44387DFCFE5041489F71B2D23454410EC90F26FBFE5041F5D186C5D2345441E8917FE3F9FE5041237FA118D234544115AAEDCEF8FE504103BF3ACAD0345441C4B38189F8FE5041D03FBBA8CF3454410C606133F6FE50414244DDA9D03454413045A6A2F5FE5041E86F15E8D0345441D8917865F5FE5041325C6202D1345441FF659E52F5FE5041431E7D0AD1345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617974 - 150772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001200000085EB518855015141CDCCCC0C68355441E17A143E540151418FC2F53865355441C3F5282C50015141E17A14BE62355441666666264F015141AE47E17A633554417B14AE274C01514185EB51F86A355441295C8FA249015141A4703D7A6F355441B81E853B44015141B81E856B7B355441295C8FE240015141E17A14EE823554410AD7A3E03D015141666666A6893554415C8FC2A53E015141EC51B8FE89355441D7A3707D4A015141E17A144E8F35544152B81EB558015141F6285CEF753554410AD7A3105A015141D7A3703D7335544114AE47F1570151415C8FC22570355441000000605701514148E17A446E355441D7A3705D570151413D0AD7736C3554410AD7A39056015141B81E85DB6A35544185EB518855015141CDCCCC0C68355441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000007B14AE274C01514185EB51F86A3554416CB3111D4C01514176AE4C0B6B3554412F41E9654A015141C137D11C6E35544131DA1BF94A015141E218F2766E355441ABA0DAEE57015141F92A9CE676355441B65DAD2D58015141F8B744E97635544103421C67580151413DDD8F7A763554412AB6EAB0580151412B36DCF6753554411624240E5A015141DE97CC39733554413EECF7D859015141AB7A53EC72355441097A466759015141AD9AAC46723554414CF5344C59015141153D3C1F72355441D64D32A6580151415F595B2D71355441C8B3BF96580151413376D916713554417FD2A03558015141610A58897035544114AE47F1570151415C8FC22570355441000000605701514148E17A446E3554416EB1945D57015141C2AC668D6C35544130673414570151417AEDE90B6C3554419873A512570151414055B8DE6B3554410AD7A39056015141B81E85DB6A35544185EB518855015141CDCCCC0C68355441B34CEEF8540151416FD182D266355441C28F913954015141A206363665355441545F55C053015141258A56EC64355441C3F5282C50015141E17A14BE62355441666666264F015141AE47E17A633554417B14AE274C01514185EB51F86A355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 1096927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD4554418FC2F50886065141A4703D5ACD455441295C8FD280065141A4703D5ACD4554413D0AD7A377065141295C8F32CD45544148E17AD4760651417B14AE47D2455441D7A370AD800651417B14AE07D2455441C3F5280C8C065141E17A14AED14554416666667698065141333333A3D04554413D0AD773AC06514152B81E55CE4554419A9999B9A9065141AE47E1EAC5455441
+</a>
+
+<b>
+01060000000100000001030000000100000041000000BBB8069A82065141A4703D5ACD455441F5C2DDBD85065141A4703D5ACD4554418BD4D25A8606514187977157CD45544194B8374A8806514146AA8546CD45544179E9E4FB8A0651412E9DD12ECD4554416FEC744B8D0651413982221ACD4554410394C5D08D065141F7327915CD4554418FCB26318E065141CD8BA60ECD455441F0EEAE0492065141887B27C5CC455441E9F14BE292065141FB14CFB7CC4554418BBEE07A94065141E0F40AA1CC45544129CD352897065141FC2BDB7ACC455441083E0DD29C0651417E08FBECCB4554417B3FB5639F065141F7355DAECB45544163CDD8CF9F065141FFBE4BA3CB4554414B7BC383A00651416A180F72CB45544154DA91F2A5065141DCA571F5C945544139EEDBD9A7065141A8011770C9455441A45AF208A8065141C9D32863C9455441CDDFBF7AA70651412C7419B2C7455441513B8BAEA6065141B17B3144C545544141AD46C1A50651415EC19871C24554410383A77FA4065141CFAFB29DBE45544107137F30A40651419A150DADBE4554419420B5B1A10651413848462FBF455441E00093A8A1065141283494F4BE4554419F544771A106514128033891BD45544148FEE72AA1065141FD7AF7CCBB455441DB6F51D4A0065141DDC05198B9455441544ED6CBA00651417DA60361B9455441D5DB7A97A0065141B93FFD8AB7455441DB38BD43A006514101BD399BB4455441286DB8DA9F065141559871ECB0455441BDA00FB69F065141FEB89BA0AF455441AE47E1DA9B065141A4703DCAAF455441E17A145E9B06514133333353A6455441666666069B0651410AD7A3509F4554415C8FC2759A065141C3F5287C9A4554415C8FC2059206514133333343994554413333330391065141AE47E10A94455441D7A3704D8F0651416666668693455441D7A3707D8C0651418FC2F5A894455441713D0A6788065141F6285CCF95455441E17A14DE860651416666661696455441CDCCCC3C81065141AE47E1DA96455441E17A14AE7A065141CDCCCC7C97455441AE47E1CA7A0651417B14AE679A455441666666E67A065141E17A14AE9D4554417B14AE077B06514114AE47A1A1455441C3F5280C7B0651413D0AD763A4455441B81E85FB7A06514148E17A94A8455441E17A14AE7A065141D7A370BDAB4554417B14AE277A065141295C8FE2AF4554415C8FC205790651418FC2F518B745544148E17AC47806514148E17A24B9455441295C8F92780651419A999969BB455441B81E856B78065141EC51B84EBF455441E17A144E780651415C8FC2A5C2455441000000E077065141AE47E16AC74554413D0AD7A377065141295C8F32CD4554415D9C5F4E7A06514151C4143ECD4554419965D40B7D0651419AF1EB49CD455441AFDC5B6E80065141C4718C58CD455441B2E1622982065141A4703D5ACD455441BBB8069A82065141A4703D5ACD455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 3044453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD4554418FC2F50886065141A4703D5ACD455441295C8FD280065141A4703D5ACD4554413D0AD7A377065141295C8F32CD45544148E17AD4760651417B14AE47D2455441D7A370AD800651417B14AE07D2455441C3F5280C8C065141E17A14AED14554416666667698065141333333A3D04554413D0AD773AC06514152B81E55CE4554419A9999B9A9065141AE47E1EAC5455441
+</a>
+
+<b>
+01060000000100000001030000000100000041000000FB318110A5065141A9090557C0455441A6675F3FA606514175609FF1C3455441DFCCF63FA7065141DFA711FFC6455441CDDFBF7AA70651412C7419B2C7455441A45AF208A8065141C9D32863C945544139EEDBD9A7065141A8011770C94554410C9CF581A6065141930434CEC94554412020FE16A60651419DEB79EBC945544154DA91F2A5065141DCA571F5C9455441B3F1A86EA406514139EE995FCA455441FAE5A5A5A30651410B799C96CA455441CA36E6B6A206514151CBF2D7CA4554414B7BC383A00651416A180F72CB45544163CDD8CF9F065141FFBE4BA3CB455441DD3CAACE9F065141238C9EA3CB4554413D2231C69F0651414FBFFCA4CB455441237F3FDE9C06514127C2D1EBCB45544145CF02199B065141CF972318CC4554411EE3C2DE970651413B25126ACC4554411D283339970651417AD3E879CC45544129CD352897065141FC2BDB7ACC455441C4E9676D940651410A20CBA1CC4554413F06483092065141AC5F87C2CC455441264F78529006514101F3BBE5CC4554418FCB26318E065141CD8BA60ECD4554410394C5D08D065141F7327915CD4554415C4A5C088B065141FF06622ECD45544179E9E4FB8A0651412E9DD12ECD45544194B8374A8806514146AA8546CD4554418BD4D25A8606514187977157CD455441B775C35186065141ACE99A57CD4554410D52A00386065141A4703D5ACD455441F5C2DDBD85065141A4703D5ACD455441BBB8069A82065141A4703D5ACD4554412400E88482065141A4703D5ACD455441B2E1622982065141A4703D5ACD455441AFDC5B6E80065141C4718C58CD4554419965D40B7D0651419AF1EB49CD455441999696677B06514149F8D342CD455441BFA68FA577065141DEB72A35CD45544148E17AD4760651417B14AE47D2455441D7A370AD800651417B14AE07D2455441C3F5280C8C065141E17A14AED14554416666667698065141333333A3D04554413D0AD773AC06514152B81E55CE455441B81E856BAE0651419A9999E9CD4554419A999959AD0651418FC2F578CA4554418FC2F5A8AB06514152B81E65C54554411F85EBD1A60651418FC2F5F8B2455441713D0AC7A50651411F85EB01AF45544150B2C4B7A30651414471CC37AF45544188FE202BA3065141B46F2B46AF4554410318AE4AA1065141BA844377AF4554419B6141B69F06514153155EA2AF4554415B365E20A00651413572B05DB3455441DB38BD43A006514101BD399BB4455441D5DB7A97A0065141B93FFD8AB745544166D034CBA0065141B4E4595BB9455441221C8DB1A1065141D1C6A81EBF455441F1F811B4A10651417BFACA2EBF4554415D41D128A2065141FC28FE16BF455441A84A885EA206514113E00A0CBF4554410369517FA4065141E203CF9CBE455441C5D69C7FA4065141BEC1B49DBE455441FB318110A5065141A9090557C0455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 5292666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD4554418FC2F50886065141A4703D5ACD455441295C8FD280065141A4703D5ACD4554413D0AD7A377065141295C8F32CD45544148E17AD4760651417B14AE47D2455441D7A370AD800651417B14AE07D2455441C3F5280C8C065141E17A14AED14554416666667698065141333333A3D04554413D0AD773AC06514152B81E55CE4554419A9999B9A9065141AE47E1EAC5455441
+</a>
+
+<b>
+01060000000100000001030000000100000041000000FB318110A5065141A9090557C0455441A6675F3FA606514175609FF1C3455441DFCCF63FA7065141DFA711FFC6455441CDDFBF7AA70651412C7419B2C7455441A45AF208A8065141C9D32863C945544139EEDBD9A7065141A8011770C94554410C9CF581A6065141930434CEC94554412020FE16A60651419DEB79EBC945544154DA91F2A5065141DCA571F5C9455441B3F1A86EA406514139EE995FCA455441FAE5A5A5A30651410B799C96CA455441CA36E6B6A206514151CBF2D7CA4554414B7BC383A00651416A180F72CB45544163CDD8CF9F065141FFBE4BA3CB455441DD3CAACE9F065141238C9EA3CB4554413D2231C69F0651414FBFFCA4CB455441237F3FDE9C06514127C2D1EBCB45544145CF02199B065141CF972318CC4554411EE3C2DE970651413B25126ACC4554411D283339970651417AD3E879CC45544129CD352897065141FC2BDB7ACC455441C4E9676D940651410A20CBA1CC4554413F06483092065141AC5F87C2CC455441264F78529006514101F3BBE5CC4554418FCB26318E065141CD8BA60ECD4554410394C5D08D065141F7327915CD4554415C4A5C088B065141FF06622ECD45544179E9E4FB8A0651412E9DD12ECD45544194B8374A8806514146AA8546CD4554418BD4D25A8606514187977157CD455441B775C35186065141ACE99A57CD4554410D52A00386065141A4703D5ACD455441F5C2DDBD85065141A4703D5ACD455441BBB8069A82065141A4703D5ACD4554412400E88482065141A4703D5ACD455441B2E1622982065141A4703D5ACD455441AFDC5B6E80065141C4718C58CD4554419965D40B7D0651419AF1EB49CD455441999696677B06514149F8D342CD455441BFA68FA577065141DEB72A35CD45544148E17AD4760651417B14AE47D2455441D7A370AD800651417B14AE07D2455441C3F5280C8C065141E17A14AED14554416666667698065141333333A3D04554413D0AD773AC06514152B81E55CE455441B81E856BAE0651419A9999E9CD4554419A999959AD0651418FC2F578CA4554418FC2F5A8AB06514152B81E65C54554411F85EBD1A60651418FC2F5F8B2455441713D0AC7A50651411F85EB01AF45544150B2C4B7A30651414471CC37AF45544188FE202BA3065141B46F2B46AF4554410318AE4AA1065141BA844377AF4554419B6141B69F06514153155EA2AF4554415B365E20A00651413572B05DB3455441DB38BD43A006514101BD399BB4455441D5DB7A97A0065141B93FFD8AB745544166D034CBA0065141B4E4595BB9455441221C8DB1A1065141D1C6A81EBF455441F1F811B4A10651417BFACA2EBF4554415D41D128A2065141FC28FE16BF455441A84A885EA206514113E00A0CBF4554410369517FA4065141E203CF9CBE455441C5D69C7FA4065141BEC1B49DBE455441FB318110A5065141A9090557C0455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 5292668
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD4554418FC2F50886065141A4703D5ACD455441295C8FD280065141A4703D5ACD4554413D0AD7A377065141295C8F32CD45544148E17AD4760651417B14AE47D2455441D7A370AD800651417B14AE07D2455441C3F5280C8C065141E17A14AED14554416666667698065141333333A3D04554413D0AD773AC06514152B81E55CE4554419A9999B9A9065141AE47E1EAC5455441
+</a>
+
+<b>
+01060000000100000001030000000100000041000000BBB8069A82065141A4703D5ACD455441F5C2DDBD85065141A4703D5ACD4554418BD4D25A8606514187977157CD45544194B8374A8806514146AA8546CD45544179E9E4FB8A0651412E9DD12ECD4554416FEC744B8D0651413982221ACD4554410394C5D08D065141F7327915CD4554418FCB26318E065141CD8BA60ECD455441F0EEAE0492065141887B27C5CC455441E9F14BE292065141FB14CFB7CC4554418BBEE07A94065141E0F40AA1CC45544129CD352897065141FC2BDB7ACC455441083E0DD29C0651417E08FBECCB4554417B3FB5639F065141F7355DAECB45544163CDD8CF9F065141FFBE4BA3CB4554414B7BC383A00651416A180F72CB45544154DA91F2A5065141DCA571F5C945544139EEDBD9A7065141A8011770C9455441A45AF208A8065141C9D32863C9455441CDDFBF7AA70651412C7419B2C7455441513B8BAEA6065141B17B3144C545544141AD46C1A50651415EC19871C24554410383A77FA4065141CFAFB29DBE45544107137F30A40651419A150DADBE4554419420B5B1A10651413848462FBF455441E00093A8A1065141283494F4BE4554419F544771A106514128033891BD45544148FEE72AA1065141FD7AF7CCBB455441DB6F51D4A0065141DDC05198B9455441544ED6CBA00651417DA60361B9455441D5DB7A97A0065141B93FFD8AB7455441DB38BD43A006514101BD399BB4455441286DB8DA9F065141559871ECB0455441BDA00FB69F065141FEB89BA0AF455441AE47E1DA9B065141A4703DCAAF455441E17A145E9B06514133333353A6455441666666069B0651410AD7A3509F4554415C8FC2759A065141C3F5287C9A4554415C8FC2059206514133333343994554413333330391065141AE47E10A94455441D7A3704D8F0651416666668693455441D7A3707D8C0651418FC2F5A894455441713D0A6788065141F6285CCF95455441E17A14DE860651416666661696455441CDCCCC3C81065141AE47E1DA96455441E17A14AE7A065141CDCCCC7C97455441AE47E1CA7A0651417B14AE679A455441666666E67A065141E17A14AE9D4554417B14AE077B06514114AE47A1A1455441C3F5280C7B0651413D0AD763A4455441B81E85FB7A06514148E17A94A8455441E17A14AE7A065141D7A370BDAB4554417B14AE277A065141295C8FE2AF4554415C8FC205790651418FC2F518B745544148E17AC47806514148E17A24B9455441295C8F92780651419A999969BB455441B81E856B78065141EC51B84EBF455441E17A144E780651415C8FC2A5C2455441000000E077065141AE47E16AC74554413D0AD7A377065141295C8F32CD4554415D9C5F4E7A06514151C4143ECD4554419965D40B7D0651419AF1EB49CD455441AFDC5B6E80065141C4718C58CD455441B2E1622982065141A4703D5ACD455441BBB8069A82065141A4703D5ACD455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618038 - 1096930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000DE372D80080751412C9C63D199455441896D9EE602075141AB27CBBE9A45544174B5A325000751414B6AE4319B45544163847F39FD06514197849A969B4554415A6108F7F90651413340DD349C45544122EA82BAF806514183E1696E9C4554411F85EB91FE065141EC51B82EA1455441713D0A07FD06514133333303A3455441E17A14AEFD0651415C8FC275A3455441C3F5283C0D075141713D0A27AE45544185EB51C80E0751413D0AD7E3AD455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441969CC5811F07514111DE945C96455441B042A4681F075141B63F4B6096455441143793C70B0751415C51504C99455441DE372D80080751412C9C63D199455441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000BDD6BBE122075141F1ED6FFCAA455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441979CC5811F07514113DE945C96455441EC51B82E1F07514152B81EC594455441AA8B2B60190751413DADAC9895455441CF3AB82710075141A48F98E8964554415FA272EC07075141CCE7831B98455441F0E18E1605075141F76E9C89984554417554F9390007514152B1B94F99455441F9384BCAFA0651413527AD639A45544185EB5128F7065141C3F5283C9B4554411F85EB91FE065141EC51B82EA1455441713D0A07FD06514133333303A3455441E17A14AEFD0651415C8FC275A3455441E4C59B320D0751416B631A22AE455441060B8E3B0D0751414B972427AE455441E6C5559E0D07514114006316AE4554416EA958B40E075141DB643AE7AD455441495C3DF00F075141BDFD15B9AD455441CCD6A53D11075141E45FEA88AD4554412E4205BF1207514123C43C51AD45544185C34E1B1407514188D3EA1EAD4554414B3822111607514159036AD6AC455441B8526A5C180751416E7D9081AC4554410A9A896719075141C68FF85AAC4554417C8C60D01A0751410959D626AC4554417D47A04D1C0751419343C1EFAB455441EFB1451F1E075141539E7AACAB45544176299E7C1F075141C887017AAB455441176818402107514115EFC638AB455441BDD6BBE122075141F1ED6FFCAA455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618038 - 5292669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000DE372D80080751412C9C63D199455441896D9EE602075141AB27CBBE9A45544174B5A325000751414B6AE4319B45544163847F39FD06514197849A969B4554415A6108F7F90651413340DD349C45544122EA82BAF806514183E1696E9C4554411F85EB91FE065141EC51B82EA1455441713D0A07FD06514133333303A3455441E17A14AEFD0651415C8FC275A3455441C3F5283C0D075141713D0A27AE45544185EB51C80E0751413D0AD7E3AD455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441969CC5811F07514111DE945C96455441B042A4681F075141B63F4B6096455441143793C70B0751415C51504C99455441DE372D80080751412C9C63D199455441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000BDD6BBE122075141F1ED6FFCAA455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441979CC5811F07514113DE945C96455441EC51B82E1F07514152B81EC594455441AA8B2B60190751413DADAC9895455441CF3AB82710075141A48F98E8964554415FA272EC07075141CCE7831B98455441F0E18E1605075141F76E9C89984554417554F9390007514152B1B94F99455441F9384BCAFA0651413527AD639A45544185EB5128F7065141C3F5283C9B4554411F85EB91FE065141EC51B82EA1455441713D0A07FD06514133333303A3455441E17A14AEFD0651415C8FC275A3455441E4C59B320D0751416B631A22AE455441060B8E3B0D0751414B972427AE455441E6C5559E0D07514114006316AE4554416EA958B40E075141DB643AE7AD455441495C3DF00F075141BDFD15B9AD455441CCD6A53D11075141E45FEA88AD4554412E4205BF1207514123C43C51AD45544185C34E1B1407514188D3EA1EAD4554414B3822111607514159036AD6AC455441B8526A5C180751416E7D9081AC4554410A9A896719075141C68FF85AAC4554417C8C60D01A0751410959D626AC4554417D47A04D1C0751419343C1EFAB455441EFB1451F1E075141539E7AACAB45544176299E7C1F075141C887017AAB455441176818402107514115EFC638AB455441BDD6BBE122075141F1ED6FFCAA455441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637880 - 56931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F000000C3F5281CE0F150415C8FC295D8325541B81E858BDBF150415C8FC225D63255415C8FC245D4F1504114AE4761D1325541295C8F92C5F15041F6285CBFC632554166666626BDF1504133333373C0325541EC51B86EAFF1504148E17AD4B53255417B14AE27AAF15041295C8F12B1325541F6285CEFA8F1504148E17A44B1325541F6285CAFA6F150418FC2F518B332554152B81E35B7F15041B81E850BC23255415C8FC215CAF1504148E17AF4CF325541713D0A67D1F150418FC2F558D5325541000000D0E3F15041E17A14FEE13255417B14AE97E6F150413D0AD7A3DB325541C3F5281CE0F150415C8FC295D8325541
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000008C552C8D8F15041B6A69F6ADA325541000000D0E3F15041E17A14FEE13255417806C2BBE4F15041B4305BE3DF325541FB952D6AE6F15041E7AFD00BDC3255412AA93D88E6F150415D63909CDB325541C3F5281CE0F150415C8FC295D8325541B81E858BDBF150415C8FC225D63255415C8FC245D4F1504114AE4761D1325541295C8F92C5F15041F6285CBFC632554166666626BDF1504133333373C03255417882A259B4F1504107AC1FA3B9325541EC51B86EAFF1504148E17AD4B53255417ACFFF27AAF150419509D912B1325541F6285CEFA8F1504148E17A44B13255415FA323B3A6F15041B4E0E215B3325541330E4665A9F150413805BA8CB5325541797D25FAABF15041781E9AE2B7325541569CB709ACF15041B043B0F0B7325541151C6C2DAFF15041FAE0C7C7BA32554157CE3B6CAFF1504102C99A00BB325541E124AEABAFF150415DD4003ABB325541D8EE8AE5B6F15041640872C3C1325541E7E778A1BCF15041B128890AC6325541A205A1C5BDF15041902ED0E1C6325541CFE249CDC7F15041CD08CF45CE3255415C8FC215CAF1504148E17AF4CF3255415A9F668DCCF1504119D5F4C5D13255417045E709D2F1504162D3D2C8D532554108C552C8D8F15041B6A69F6ADA325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>922782 - 4394472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000030000001D000000B81E850BD0E45041A4703D9A5B7C5441C3F528CCD2E4504100000090537C54418FC2F588D1E4504166666636537C5441295C8F92CEE450418FC2F518517C54413D0AD753CCE45041B81E85FB4E7C5441D7A3708DC9E45041A4703D5A4F7C5441A4703DBAC6E45041333333F34E7C54410AD7A330C1E45041A4703DAA4D7C544114AE47B1B3E4504166666666497C544114AE47B1B3E45041B81E852B477C5441B81E85FBC0E45041CDCCCCFC457C54413D0AD773C4E45041D7A3704D447C544148E17A84C8E450411F85EBD1447C544133333373CBE450419A9999B9467C54417B14AE37CBE4504133333393427C544133333313CAE4504148E17A04417C54410AD7A320C2E4504100000030407C5441F6285CBFB6E450419A999909407C5441C3F5280CA8E45041AE47E1BA407C5441B81E85DB97E45041666666E6437C54417B14AEB795E45041713D0A77447C5441B81E859B94E4504100000000467C5441295C8F4295E4504185EB51184C7C5441AE47E12A97E450413D0AD703607C5441EC51B81E97E45041B81E853B627C54410AD7A3A096E450415C8FC2C5647C5441E17A144EBAE45041B81E85EB5E7C5441AE47E1AACCE45041F6285C9F5C7C5441B81E850BD0E45041A4703D9A5B7C544105000000CDCCCCFCCCE450410AD7A350567C5441C3F528ACCCE450419A999949557C5441B81E850BCFE4504133333393547C5441C3F5285CCFE4504166666686557C5441CDCCCCFCCCE450410AD7A350567C5441060000005C8FC2A5C4E45041C3F5288C527C54417B14AEA7C6E450411F85EB51517C5441C3F528FCC5E450419A9999E95A7C5441713D0A17C4E4504152B81E055A7C544114AE47C1C3E4504133333373567C54415C8FC2A5C4E45041C3F5288C527C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000024A7E0C5BEE4504150B7685C5E7C54418E0223D5C3E4504145EB8B8D5D7C5441E54415C8C3E45041D21045334E7C544114AE47B1B3E4504166666666497C544114AE47B1B3E45041B81E852B477C5441B81E85FBC0E45041CDCCCCFC457C54413D0AD773C4E45041D7A3704D447C544148E17A84C8E450411F85EBD1447C544133333373CBE450419A9999B9467C54417B14AE37CBE4504133333393427C544133333313CAE4504148E17A04417C54410AD7A320C2E4504100000030407C5441F6285CBFB6E450419A999909407C5441C3F5280CA8E45041AE47E1BA407C5441B81E85DB97E45041666666E6437C54417B14AEB795E45041713D0A77447C5441B81E859B94E4504100000000467C5441295C8F4295E4504185EB51184C7C5441AE47E12A97E450413D0AD703607C5441EC51B81E97E45041B81E853B627C54410AD7A3A096E450415C8FC2C5647C5441E17A144EBAE45041B81E85EB5E7C544124A7E0C5BEE4504150B7685C5E7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>922965 - 234673
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000713D0A77D5A95041B81E850B7B395441E17A14DED4A9504185EB51787139544114AE47D1D4A950415C8FC2156E3954410AD7A3C0D4A95041F6285C9F69395441B81E857BD4A950413333336362395441A4703DDAD0A95041AE47E15A5E3954415C8FC2D5CBA95041AE47E17A58395441D7A3705DC8A9504114AE47B153395441A4703DCAC5A950418FC2F5484F3954418FC2F548C4A95041CDCCCC1C4639544152B81E15BFA9504152B81EF546395441333333D3C1A950410000008057395441F6285C9FBAA95041EC51B87E533954410AD7A3F0B9A95041713D0A77553954419A9999E9B7A950410AD7A35064395441CDCCCCBCACA95041666666B6653954411F85EB91A4A95041D7A3702D73395441E17A143EABA95041295C8FB2743954415C8FC2A5B2A95041295C8F62763954410AD7A370D3A95041D7A370ED82395441000000A0D4A95041C3F528AC8139544133333363D5A9504148E17AE481395441B81E85CBEBA9504114AE4771883954419A9999C90EAA5041C3F528AC923954411F85EB6116AA5041F6285CFF8D395441F6285C5FEDA950416666660682395441713D0A77D5A95041B81E850B7B395441
+</a>
+
+<b>
+01060000000100000001030000000100000018000000E019A323CEA950418975912D5B395441DB8EC2D5CBA950418347E17A5839544153A0A21ACBA950418209B578573954414BD99632CAA95041CEA78E3856395441C16D8EE0C9A9504158171C1956395441DD962BF8C8A9504136DBE69D56395441AFF4D090C8A95041CB08B5275739544182527629C8A95041613683B15739544183EE5EB4C7A95041B361C91059395441201D2643D1A95041893693AB643954414471C142D2A950413FF25C897A395441C2476D77D5A95041B5FAAC197B395441713D0A77D5A95041B81E850B7B395441E17A14DED4A9504185EB5178713954415533CAD8D4A9504176342D12703954417EAD47D1D4A95041D28FC2156E395441A1FBD2CED4A950418916286D6D3954419FDA8CCED4A950417777595A6D39544133C89BBFD4A95041F81F95E66C3954414D7D68A1D4A950415E69765A66395441A31E857BD4A9504149333363623954414534099ED3A950415F4F286D61395441A4703DDAD0A95041AE47E15A5E395441E019A323CEA950418975912D5B395441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440347 - 2316125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000295C8FD265F5504148E17A94F92955411F85EBF164F55041A4703D6AFC2955410AD7A3C064F55041C3F5283CFF295541333333B364F5504148E17AA4012A5541F6285C2F6BF55041CDCCCCDC032A5541000000E070F550418FC2F5F8052A5541AE47E17A73F55041AE47E1DA062A554148E17AF479F55041D7A3707D0A2A5541830A559F7CF55041F5CE2581062A55414D2CCE637DF55041FF66E382052A55414B09FCAB7FF55041E9DBDA8D002A5541EB4635A781F55041A688A373FC29554189FD212B83F55041CB13590BFA29554171E9FD8886F5504114BA6B77F7295541CDCCCC7C86F550418FC2F548F72955413D0AD7A384F5504133333313EF29554185EB518882F5504152B81E45E92955417B14AEB782F550413D0AD763E529554148E17A4484F550417B14AE57D82955418FC2F5B884F55041EC51B8AED5295541713D0AC785F55041295C8F02D2295541C3F5287C86F55041CDCCCC8CCF295541CDCCCCBC84F55041295C8F92CE295541B81E85CB83F550410AD7A340CF2955417B14AE4779F55041B81E85DBD529554152B81E656BF550411F85EBE1DE295541713D0A776EF5504152B81E45E32955416666664671F55041F6285C9FE82955413D0AD7136EF550419A9999C9EB2955410AD7A3E069F55041CDCCCC5CF1295541AE47E19A68F550411F85EB71F3295541295C8FD265F5504148E17A94F9295541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3B051F55041000000A0D429554148E17AC452F55041B81E854BD7295541D7A3708D55F5504185EB5188DA295541000000F05CF550415C8FC285DC2955417B14AE3763F55041EC51B84EE62955418FC2F5B869F55041EC51B8FEEA29554152B81EC567F55041E17A148EEC295541D7A370AD64F550410AD7A3B0EF29554114AE47F162F55041C3F5286CF2295541B81E858B61F5504100000020F5295541D7A370DD5FF5504133333323F9295541000000505FF5504152B81E65FE2955419B79DAE864F550415468D833FF29554122D046F064F550412B865082FC2955416E53CB2868F55041AF51766DF4295541EBD0E2A969F55041704068B6F12955413F0C40C76BF550414B0BACB0EE2955413D0AD7136EF550419A9999C9EB2955416666664671F55041F6285C9FE8295541713D0A776EF5504152B81E45E329554152B81E656BF550411F85EBE1DE29554152B81E6567F5504114AE47B1DA29554185EB515862F55041000000E0D52955418FC2F5685EF55041AE47E10AD32955410AD7A3305DF55041A4703D1AD5295541713D0AE756F550411F85EB31D4295541F6285CEF54F550419A999929D42955410AD7A3B051F55041000000A0D4295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440347 - 3301198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000295C8FD265F5504148E17A94F92955411F85EBF164F55041A4703D6AFC2955410AD7A3C064F55041C3F5283CFF295541333333B364F5504148E17AA4012A5541F6285C2F6BF55041CDCCCCDC032A5541000000E070F550418FC2F5F8052A5541AE47E17A73F55041AE47E1DA062A554148E17AF479F55041D7A3707D0A2A5541830A559F7CF55041F5CE2581062A55414D2CCE637DF55041FF66E382052A55414B09FCAB7FF55041E9DBDA8D002A5541EB4635A781F55041A688A373FC29554189FD212B83F55041CB13590BFA29554171E9FD8886F5504114BA6B77F7295541CDCCCC7C86F550418FC2F548F72955413D0AD7A384F5504133333313EF29554185EB518882F5504152B81E45E92955417B14AEB782F550413D0AD763E529554148E17A4484F550417B14AE57D82955418FC2F5B884F55041EC51B8AED5295541713D0AC785F55041295C8F02D2295541C3F5287C86F55041CDCCCC8CCF295541CDCCCCBC84F55041295C8F92CE295541B81E85CB83F550410AD7A340CF2955417B14AE4779F55041B81E85DBD529554152B81E656BF550411F85EBE1DE295541713D0A776EF5504152B81E45E32955416666664671F55041F6285C9FE82955413D0AD7136EF550419A9999C9EB2955410AD7A3E069F55041CDCCCC5CF1295541AE47E19A68F550411F85EB71F3295541295C8FD265F5504148E17A94F9295541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3B051F55041000000A0D429554148E17AC452F55041B81E854BD7295541D7A3708D55F5504185EB5188DA295541000000F05CF550415C8FC285DC2955417B14AE3763F55041EC51B84EE62955418FC2F5B869F55041EC51B8FEEA29554152B81EC567F55041E17A148EEC295541D7A370AD64F550410AD7A3B0EF29554114AE47F162F55041C3F5286CF2295541B81E858B61F5504100000020F5295541D7A370DD5FF5504133333323F9295541000000505FF5504152B81E65FE2955419B79DAE864F550415468D833FF29554122D046F064F550412B865082FC2955416E53CB2868F55041AF51766DF4295541EBD0E2A969F55041704068B6F12955413F0C40C76BF550414B0BACB0EE2955413D0AD7136EF550419A9999C9EB2955416666664671F55041F6285C9FE8295541713D0A776EF5504152B81E45E329554152B81E656BF550411F85EBE1DE29554152B81E6567F5504114AE47B1DA29554185EB515862F55041000000E0D52955418FC2F5685EF55041AE47E10AD32955410AD7A3305DF55041A4703D1AD5295541713D0AE756F550411F85EB31D4295541F6285CEF54F550419A999929D42955410AD7A3B051F55041000000A0D4295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>32946 - 29236
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E8954418FC2F5581CF15041C3F528FC4D895441CDCCCCEC24F15041713D0AE74D895441295C8FF223F150411F85EB2138895441AE47E1AA1EF1504152B81EF532895441E17A141E18F150410AD7A3F02D895441D7A3705D17F150410AD7A3B024895441AE47E1FA16F15041AE47E12A2289544148E17A2415F15041CDCCCCFC1E895441E17A140E0BF150411F85EBE1148954418181B30FEDF050413746F77416895441F680C516E6F050419377F5D016895441DD48D45CDCF050413CBF79A91789544171E87E95D5F0504146F4CDE2178954417F45C05FCFF050412160214418895441D4B4AF7CC8F05041455AECA0188954419930718EC0F0504194AC977F18895441A646D9D3BCF0504139BF79A917895441ED8CFC34B9F050416779477A17895441B93332B8B8F0504139BF79A91789544178D8022BB1F05041AC8FCDF61789544189973C14A9F0504173271EE8188954413F3FAD40A0F050416B0D37BE1A89544124A27CF398F050414979D8941C8954419983813191F0504177AC289A1D895441A509DD2C89F050416002D1101E895441713D0A3782F0504114AE47312889544148E17A947CF0504114AE471130895441D7A370DD74F050410AD7A3603A895441713D0AD771F05041CDCCCCFC3E8954410AD7A3D07DF0504133333333438954411F85EB4189F050410AD7A390458954411F85EBC197F05041713D0A5747895441AE47E1CA9AF050415C8FC29547895441000000509DF05041295C8F3246895441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028A27CF398F050414979D8941C895441A080302A98F05041700455AF1C895441E584F64497F050416C0904E41C8954419A9B65DF99F0504111CE28F41C8954418687D379A2F05041DA31029E1B895441AB1BE4EFADF05041E98021AA19895441049C75EFBFF05041AE5F978F188954413EC65011BEF05041A73C300D18895441F5173F9BBDF05041CC6833D617895441DAD6560FBCF05041F21C789F17895441526FDB53B9F05041D1E4D97B17895441093B5020B9F05041850E198217895441BA3332B8B8F0504134BF79A91789544183EE9D6EB7F0504141A3A8B6178954417DEED21EB6F05041612817C417895441F45C289EB3F050419B94B7DD1789544107C472D1B0F05041FD733D0118895441D1B29C75B0F05041822AF10B1889544137BC2066ABF0504170D5E8A2188954418339B198A8F05041552BD20119895441DDD2387FA6F050416A03A4711989544122A3D534A5F050416D8E60B619895441E7633ED8A4F0504114F9A3C91989544119423F10A4F0504186DB3FF319895441865F82789CF05041FBBAFBB11B89544128A27CF398F050414979D8941C895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>32946 - 70799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E8954418FC2F5581CF15041C3F528FC4D895441CDCCCCEC24F15041713D0AE74D895441295C8FF223F150411F85EB2138895441AE47E1AA1EF1504152B81EF532895441E17A141E18F150410AD7A3F02D895441D7A3705D17F150410AD7A3B024895441AE47E1FA16F15041AE47E12A2289544148E17A2415F15041CDCCCCFC1E895441E17A140E0BF150411F85EBE1148954418181B30FEDF050413746F77416895441F680C516E6F050419377F5D016895441DD48D45CDCF050413CBF79A91789544171E87E95D5F0504146F4CDE2178954417F45C05FCFF050412160214418895441D4B4AF7CC8F05041455AECA0188954419930718EC0F0504194AC977F18895441A646D9D3BCF0504139BF79A917895441ED8CFC34B9F050416779477A17895441B93332B8B8F0504139BF79A91789544178D8022BB1F05041AC8FCDF61789544189973C14A9F0504173271EE8188954413F3FAD40A0F050416B0D37BE1A89544124A27CF398F050414979D8941C8954419983813191F0504177AC289A1D895441A509DD2C89F050416002D1101E895441713D0A3782F0504114AE47312889544148E17A947CF0504114AE471130895441D7A370DD74F050410AD7A3603A895441713D0AD771F05041CDCCCCFC3E8954410AD7A3D07DF0504133333333438954411F85EB4189F050410AD7A390458954411F85EBC197F05041713D0A5747895441AE47E1CA9AF050415C8FC29547895441000000509DF05041295C8F3246895441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028A27CF398F050414979D8941C895441A080302A98F05041700455AF1C895441E584F64497F050416C0904E41C8954419A9B65DF99F0504111CE28F41C8954418687D379A2F05041DA31029E1B895441AB1BE4EFADF05041E98021AA19895441049C75EFBFF05041AE5F978F188954413EC65011BEF05041A73C300D18895441F5173F9BBDF05041CC6833D617895441DAD6560FBCF05041F21C789F17895441526FDB53B9F05041D1E4D97B17895441093B5020B9F05041850E198217895441BA3332B8B8F0504134BF79A91789544183EE9D6EB7F0504141A3A8B6178954417DEED21EB6F05041612817C417895441F45C289EB3F050419B94B7DD1789544107C472D1B0F05041FD733D0118895441D1B29C75B0F05041822AF10B1889544137BC2066ABF0504170D5E8A2188954418339B198A8F05041552BD20119895441DDD2387FA6F050416A03A4711989544122A3D534A5F050416D8E60B619895441E7633ED8A4F0504114F9A3C91989544119423F10A4F0504186DB3FF319895441865F82789CF05041FBBAFBB11B89544128A27CF398F050414979D8941C895441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>619557 - 44706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E18A91C95041333333835AF454417B14AE779BC950418FC2F59867F454410AD7A370A9C9504152B81E0579F45441666666D6A9C950415C8FC2A578F45441B81E859BACC95041000000B075F45441CDCCCCCCB1C9504114AE47A170F45441B81E85CBACC9504148E17A346AF4544114AE47E1A8C95041CDCCCCEC65F45441CDCCCC2CA4C95041A4703DAA5FF45441EC51B8AE9DC950411F85EBF158F45441000000809EC95041EC51B82E58F4544166666606A5C95041333333F35EF4544148E17AB4A9C950410AD7A33065F45441D7A370ADADC9504185EB517869F45441CDCCCC9CB2C95041F6285CCF6FF454413D0AD753B9C950418FC2F5A86AF45441CDCCCC9CB4C95041B81E852B66F45441E17A140EB0C950417B14AE7760F45441F6285CAFABC950418FC2F54859F45441B81E85FBA5C95041295C8F2252F454417B14AE47A1C95041295C8FA24CF454413333335399C9504148E17A5442F454411F85EB4192C950411F85EB113BF45441295C8FC288C95041713D0AF729F4544152B81E7581C95041AE47E1CA2DF45441A4703D0A81C950417B14AE372DF45441E17A14DE7EC95041295C8F222EF454413D0AD7A37FC950411F85EB412FF454417B14AEB778C9504185EB516832F454417B14AE7782C9504148E17AE441F454418FC2F5888BC95041C3F5287C51F45441C3F528FC91C950411F85EB115AF45441AE47E18A91C95041333333835AF45441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000064F20E9F7CC95041D690BC8B39F4544160D57CB87EC9504193AC55EA3CF454410F8530FA7FC95041FAB0BAE43EF4544182A6CE3280C95041D8A1D13D3FF45441C790C6C780C95041C59D392840F4544169B0BAE481C950415EA29BE841F454418BA213E881C95041A2058CEE41F45441B575292582C95041CC8CEC5A42F454413E3B715A82C95041122574B942F454410AD722F182C95041004AD0C443F45441F4006E8F84C950419C0AB27746F45441E1A8704385C9504138AC9A9B47F45441E383A1BB85C95041D89F657A48F45441B0781F7A87C95041CA57FDAC4BF45441E65CDED887C95041AF692E4A4CF454418929F77189C950410303E9F04EF45441C8F79A9C8AC950415297750951F45441308370468BC9504186DEAA3052F45441BA6AB3788BC950417E0F276F52F454418398E0A98CC95041A5683DE553F45441C91BC2CD8DC950411E93E17255F45441EBEDA2EF8EC95041F7645BFD56F454415276F94591C95041F4A4EA175AF45441AF3A1C8191C95041FDC5F2635AF45441A8D8BF9291C9504139A2547B5AF45441C3F528FC91C950411F85EB115AF454416657073E90C95041DFA11DC057F45441269707C38DC95041F657ED7254F45441774888F88AC950414D42CD8350F4544144C75C2189C950417D9993594DF4544191AC0FFD86C950412859B7AA49F454419493EFDA85C95041FBD3D0B747F454415A6BE74483C95041C33E624543F454410DC293697EC95041C380C2733BF45441791AEB577CC95041B88D8D2A38F454417D6386977AC950413287696235F454417B14AEB778C9504185EB516832F454413D0AD7A37FC950411F85EB412FF4544148E17A747BC950416666661630F45441F903369C79C9504177C6F04831F45441F8C3907578C950414D6B300832F45441407C11E477C9504190E5A06632F4544167D93A4278C950416F95E0AA32F45441E16A969378C95041BF78C8D732F4544125D105CF78C950415F1CE13633F45441BD19315279C95041ECF6BF0834F45441E612967C79C95041C7B8944C34F454413392DB9F79C95041DCEA038534F45441D80112FF79C95041E5035B1D35F45441766DB4877AC95041E27CF8F735F4544176A930FA7AC95041ADA925AF36F45441F6CDD4147BC950413D8260DE36F4544164F20E9F7CC95041D690BC8B39F45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>619557 - 59667
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E18A91C95041333333835AF454417B14AE779BC950418FC2F59867F454410AD7A370A9C9504152B81E0579F45441666666D6A9C950415C8FC2A578F45441B81E859BACC95041000000B075F45441CDCCCCCCB1C9504114AE47A170F45441B81E85CBACC9504148E17A346AF4544114AE47E1A8C95041CDCCCCEC65F45441CDCCCC2CA4C95041A4703DAA5FF45441EC51B8AE9DC950411F85EBF158F45441000000809EC95041EC51B82E58F4544166666606A5C95041333333F35EF4544148E17AB4A9C950410AD7A33065F45441D7A370ADADC9504185EB517869F45441CDCCCC9CB2C95041F6285CCF6FF454413D0AD753B9C950418FC2F5A86AF45441CDCCCC9CB4C95041B81E852B66F45441E17A140EB0C950417B14AE7760F45441F6285CAFABC950418FC2F54859F45441B81E85FBA5C95041295C8F2252F454417B14AE47A1C95041295C8FA24CF454413333335399C9504148E17A5442F454411F85EB4192C950411F85EB113BF45441295C8FC288C95041713D0AF729F4544152B81E7581C95041AE47E1CA2DF45441A4703D0A81C950417B14AE372DF45441E17A14DE7EC95041295C8F222EF454413D0AD7A37FC950411F85EB412FF454417B14AEB778C9504185EB516832F454417B14AE7782C9504148E17AE441F454418FC2F5888BC95041C3F5287C51F45441C3F528FC91C950411F85EB115AF45441AE47E18A91C95041333333835AF45441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000064F20E9F7CC95041D690BC8B39F4544160D57CB87EC9504193AC55EA3CF454410F8530FA7FC95041FAB0BAE43EF4544182A6CE3280C95041D8A1D13D3FF45441C790C6C780C95041C59D392840F4544169B0BAE481C950415EA29BE841F454418BA213E881C95041A2058CEE41F45441B575292582C95041CC8CEC5A42F454413E3B715A82C95041122574B942F454410AD722F182C95041004AD0C443F45441F4006E8F84C950419C0AB27746F45441E1A8704385C9504138AC9A9B47F45441E383A1BB85C95041D89F657A48F45441B0781F7A87C95041CA57FDAC4BF45441E65CDED887C95041AF692E4A4CF454418929F77189C950410303E9F04EF45441C8F79A9C8AC950415297750951F45441308370468BC9504186DEAA3052F45441BA6AB3788BC950417E0F276F52F454418398E0A98CC95041A5683DE553F45441C91BC2CD8DC950411E93E17255F45441EBEDA2EF8EC95041F7645BFD56F454415276F94591C95041F4A4EA175AF45441AF3A1C8191C95041FDC5F2635AF45441A8D8BF9291C9504139A2547B5AF45441C3F528FC91C950411F85EB115AF454416657073E90C95041DFA11DC057F45441269707C38DC95041F657ED7254F45441774888F88AC950414D42CD8350F4544144C75C2189C950417D9993594DF4544191AC0FFD86C950412859B7AA49F454419493EFDA85C95041FBD3D0B747F454415A6BE74483C95041C33E624543F454410DC293697EC95041C380C2733BF45441791AEB577CC95041B88D8D2A38F454417D6386977AC950413287696235F454417B14AEB778C9504185EB516832F454413D0AD7A37FC950411F85EB412FF4544148E17A747BC950416666661630F45441F903369C79C9504177C6F04831F45441F8C3907578C950414D6B300832F45441407C11E477C9504190E5A06632F4544167D93A4278C950416F95E0AA32F45441E16A969378C95041BF78C8D732F4544125D105CF78C950415F1CE13633F45441BD19315279C95041ECF6BF0834F45441E612967C79C95041C7B8944C34F454413392DB9F79C95041DCEA038534F45441D80112FF79C95041E5035B1D35F45441766DB4877AC95041E27CF8F735F4544176A930FA7AC95041ADA925AF36F45441F6CDD4147BC950413D8260DE36F4544164F20E9F7CC95041D690BC8B39F45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>620986 - 180906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285C7FC0D050417B14AE570FFF54417B14AEE7C0D0504148E17A140FFF54413D0AD773C1D050415C8FC2C50EFF54415C8FC215C2D050418FC2F5880EFF5441295C8FB2C2D0504148E17A840EFF54415C8FC275C1D05041333333F30CFF5441CDCCCC9CA6D05041C3F528ECEAFE5441E17A14DEA5D05041AE47E19AEBFE5441EC51B85E90D050410AD7A3C0FFFE5441333333838FD05041C3F5288C00FF5441F6285CDF8ED0504152B81E2501FF54410AD7A3208FD050419A9999D901FF54415C8FC2B58FD050411F85EB4103FF5441F6285CEF8FD05041295C8FE205FF54417B14AE6790D050419A99997909FF5441713D0AF790D050410AD7A3200CFF5441713D0A5791D05041000000800EFF5441EC51B83E92D0504185EB51680FFF54413D0AD78392D05041295C8F9210FF5441713D0A1792D05041713D0A5713FF5441713D0A4792D050416666663615FF5441CDCCCCAC92D05041EC51B8FE16FF54413333339393D05041AE47E16A17FF5441E17A146E95D05041A4703D9A18FF54413333330397D05041A4703DFA19FF5441AE47E16A97D050415C8FC2451AFF54415C8FC2F597D05041F6285C7F1AFF5441A4703D3A99D0504148E17AB41AFF5441F6285CBF99D05041F6285C9F1AFF54419A9999799BD050417B14AEE719FF5441C3F5281C9DD05041666666D618FF5441000000909DD0504185EB514818FF5441CDCCCCEC9ED05041C3F528FC16FF54411F85EBE1A0D05041CDCCCC0C16FF544152B81E15A3D05041F6285CEF15FF54415C8FC255A5D050413D0AD76316FF54410AD7A380A7D0504152B81E5517FF544133333373A9D0504185EB519818FF54418FC2F548ABD050410AD7A3C019FF5441E17A14AEACD05041333333B31BFF544114AE4761ADD050413D0AD7F31DFF54419A999929AED050418FC2F5A81FFF5441EC51B88EAED05041AE47E11A20FF5441713D0A67B0D05041713D0A9720FF5441C3F528ACB2D050410AD7A3F020FF54410AD7A3E0B4D050417B14AE4721FF5441713D0A17B7D050417B14AEA721FF54410AD7A340B9D05041EC51B8FE21FF544100000080BBD050417B14AED721FF544133333393BCD05041CDCCCC7C21FF5441D7A370DDBCD0504152B81E2521FF5441A4703D2ABDD05041A4703DAA20FF544148E17AF4BDD050413D0AD7C31EFF5441D7A3703DBED05041F6285CFF1DFF5441CDCCCC8CBED0504185EB51E81CFF544185EB5178BED050410AD7A3901CFF544100000050BED050417B14AE471CFF5441EC51B8BEBDD05041D7A370CD1BFF54411F85EBE1BCD05041B81E851B1BFF54418FC2F558BBD0504185EB51B819FF544100000000BBD050416666665619FF5441295C8FC2BAD05041C3F5280C19FF5441E17A148EBAD05041CDCCCCAC18FF54418FC2F588BAD050410000004018FF54415C8FC295BAD05041295C8FD217FF54413D0AD7B3BAD050418FC2F53817FF544152B81EE5BAD0504114AE47C116FF54418FC2F588BBD050417B14AEA715FF5441A4703DDABBD05041EC51B81E15FF54417B14AE47BDD050413333337313FF544166666686BED05041D7A370AD11FF54417B14AEC7BFD05041CDCCCCCC0FFF5441F6285C7FC0D050417B14AE570FFF5441
+</a>
+
+<b>
+0106000000010000000103000000010000006A00000032DD148EBAD05041B533CEAC18FF54418FC2F588BAD050410000004018FF5441474FEC8ABAD050414133372F18FF54411E8DC195BAD05041BC838ED217FF5441208DD6B3BAD050413FF5F63817FF544152B81EE5BAD0504114AE47C116FF54413A8D1BF7BAD0504125205DA216FF54417A9FF488BBD05041EE32AEA715FF544110193DDABBD050418CFCB61E15FF54417FC45FAABCD050415C873A2B14FF54417B14AE47BDD050413333337313FF54418C8617D3BDD050419952B8AC12FF54411E126586BED0504159AB70AD11FF544125191B36BFD0504173CC94A610FF54417B14AEC7BFD05041CDCCCCCC0FFF54418D4A4F06C0D050416E88DDA40FFF5441E5BF5B7FC0D05041FE0CAD570FFF54417627ADE7C0D0504135D979140FFF54418DCAD573C1D050416E2EC2C50EFF54419341C315C2D0504144B2F4880EFF54411CF05458C2D05041BDD50E870EFF54416B038EB2C2D0504122EB7A840EFF54418F71D9ABC1D05041FC95B6370DFF54415C8FC275C1D05041333333F30CFF5441CD560896BCD05041B3E7C8C506FF5441C30ECC9CA6D05041DCA329ECEAFE54419C5629FDA5D050417FF1677EEBFE5441F55013DEA5D050410F65E29AEBFE5441ED1D68E1A4D050413098AF87ECFE5441EC51B85E90D050410AD7A3C0FFFE5441333333838FD05041C3F5288C00FF5441ADDBBE068FD050417A93590001FF5441A7165DDF8ED05041C2E41D2501FF5441806FB6098FD05041486C369A01FF54410AD7A3208FD050419A9999D901FF54415C8FC2B58FD050411F85EB4103FF5441C6BBE5D08FD050417211D37E04FF54411A8C7C1A90D050416920F92B07FF54417B14AE6790D050419A99997909FF5441713D0AF790D050410AD7A3200CFF5441713D0A5791D05041000000800EFF5441EC51B83E92D0504185EB51680FFF54413D0AD78392D05041295C8F9210FF5441713D0A1792D05041713D0A5713FF5441713D0A4792D050416666663615FF5441CDCCCCAC92D05041EC51B8FE16FF5441647F349393D050415198E06A17FF544196FA04B494D05041FBC4612318FF5441E17A146E95D05041A4703D9A18FF544195C53B8096D05041EB2E728819FF544154D8330397D05041E0673DFA19FF5441BF325E2D97D05041A176F4181AFF5441AE47E16A97D050415C8FC2451AFF54415C8FC2F597D05041F6285C7F1AFF5441F4713C3A99D0504196B77AB41AFF5441AB4752B199D05041C85796A11AFF54414AB15BBF99D05041F33B5C9F1AFF5441C1489A799BD05041DBDEACE719FF5441CAFE53F79BD050414B6A979519FF5441C3F5281C9DD05041666666D618FF5441674B87749DD0504153AB036A18FF5441229CFF8F9DD05041FEB4514818FF5441C27006EE9DD050414CCBC7EE17FF5441CDCCCCEC9ED05041C3F528FC16FF54411F85EBE1A0D05041CDCCCC0C16FF544152B81E15A3D05041F6285CEF15FF5441EC341813A4D05041498CA92216FF5441FA74C255A5D05041A404D66316FF5441F42179E5A6D0504154FCA51117FF54410AD7A380A7D0504152B81E5517FF544133333373A9D0504185EB519818FF54418FC2F548ABD050410AD7A3C019FF5441E17A14AEACD05041333333B31BFF544114AE4761ADD050413D0AD7F31DFF54419A3DF125AED05041AA85FAA01FFF54413A159929AED05041EF92F4A81FFF54411710B98EAED050410BFDDF1A20FF54410CEF0967B0D05041EDE5089720FF54415B14982DB2D050410A1C20DD20FF5441C3F528ACB2D050410AD7A3F020FF54410AD7A3E0B4D050417B14AE4721FF5441F1AD7557B6D050415071358721FF544145720917B7D050412F7CADA721FF5441654D2618B9D0504107985AF821FF544100F5A240B9D05041622EB8FE21FF54414CF70080BBD05041CEAAACD721FF5441D2D1EC50BCD05041B5A6AF9221FF544133333393BCD05041CDCCCC7C21FF5441DF1F56B4BCD05041752CAA5521FF5441ACE56FDDBCD05041AEDB1E2521FF54410A1C3D2ABDD0504118EB3CAA20FF54418D337AF4BDD0504156C6D6C31EFF5441DBA26F3DBED050414CEA5BFF1DFF54415945B16BBED0504157F9BA5C1DFF5441CDCCCC8CBED0504185EB51E81CFF544185EB5178BED050410AD7A3901CFF544100000050BED050417B14AE471CFF5441EC51B8BEBDD05041D7A370CD1BFF5441B2266C0EBDD05041E744613F1BFF5441E328EBE1BCD050417D34851B1BFF5441A3C43228BCD050412900A5731AFF54418FC2F558BBD0504185EB51B819FF544100000000BBD050416666665619FF54417BA568CABAD0504106D9A41519FF5441134F8FC2BAD05041D714290C19FF544132DD148EBAD05041B533CEAC18FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>620986 - 382959
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285C7FC0D050417B14AE570FFF54417B14AEE7C0D0504148E17A140FFF54413D0AD773C1D050415C8FC2C50EFF54415C8FC215C2D050418FC2F5880EFF5441295C8FB2C2D0504148E17A840EFF54415C8FC275C1D05041333333F30CFF5441CDCCCC9CA6D05041C3F528ECEAFE5441E17A14DEA5D05041AE47E19AEBFE5441EC51B85E90D050410AD7A3C0FFFE5441333333838FD05041C3F5288C00FF5441F6285CDF8ED0504152B81E2501FF54410AD7A3208FD050419A9999D901FF54415C8FC2B58FD050411F85EB4103FF5441F6285CEF8FD05041295C8FE205FF54417B14AE6790D050419A99997909FF5441713D0AF790D050410AD7A3200CFF5441713D0A5791D05041000000800EFF5441EC51B83E92D0504185EB51680FFF54413D0AD78392D05041295C8F9210FF5441713D0A1792D05041713D0A5713FF5441713D0A4792D050416666663615FF5441CDCCCCAC92D05041EC51B8FE16FF54413333339393D05041AE47E16A17FF5441E17A146E95D05041A4703D9A18FF54413333330397D05041A4703DFA19FF5441AE47E16A97D050415C8FC2451AFF54415C8FC2F597D05041F6285C7F1AFF5441A4703D3A99D0504148E17AB41AFF5441F6285CBF99D05041F6285C9F1AFF54419A9999799BD050417B14AEE719FF5441C3F5281C9DD05041666666D618FF5441000000909DD0504185EB514818FF5441CDCCCCEC9ED05041C3F528FC16FF54411F85EBE1A0D05041CDCCCC0C16FF544152B81E15A3D05041F6285CEF15FF54415C8FC255A5D050413D0AD76316FF54410AD7A380A7D0504152B81E5517FF544133333373A9D0504185EB519818FF54418FC2F548ABD050410AD7A3C019FF5441E17A14AEACD05041333333B31BFF544114AE4761ADD050413D0AD7F31DFF54419A999929AED050418FC2F5A81FFF5441EC51B88EAED05041AE47E11A20FF5441713D0A67B0D05041713D0A9720FF5441C3F528ACB2D050410AD7A3F020FF54410AD7A3E0B4D050417B14AE4721FF5441713D0A17B7D050417B14AEA721FF54410AD7A340B9D05041EC51B8FE21FF544100000080BBD050417B14AED721FF544133333393BCD05041CDCCCC7C21FF5441D7A370DDBCD0504152B81E2521FF5441A4703D2ABDD05041A4703DAA20FF544148E17AF4BDD050413D0AD7C31EFF5441D7A3703DBED05041F6285CFF1DFF5441CDCCCC8CBED0504185EB51E81CFF544185EB5178BED050410AD7A3901CFF544100000050BED050417B14AE471CFF5441EC51B8BEBDD05041D7A370CD1BFF54411F85EBE1BCD05041B81E851B1BFF54418FC2F558BBD0504185EB51B819FF544100000000BBD050416666665619FF5441295C8FC2BAD05041C3F5280C19FF5441E17A148EBAD05041CDCCCCAC18FF54418FC2F588BAD050410000004018FF54415C8FC295BAD05041295C8FD217FF54413D0AD7B3BAD050418FC2F53817FF544152B81EE5BAD0504114AE47C116FF54418FC2F588BBD050417B14AEA715FF5441A4703DDABBD05041EC51B81E15FF54417B14AE47BDD050413333337313FF544166666686BED05041D7A370AD11FF54417B14AEC7BFD05041CDCCCCCC0FFF5441F6285C7FC0D050417B14AE570FFF5441
+</a>
+
+<b>
+0106000000010000000103000000010000006A00000032DD148EBAD05041B533CEAC18FF54418FC2F588BAD050410000004018FF5441474FEC8ABAD050414133372F18FF54411E8DC195BAD05041BC838ED217FF5441208DD6B3BAD050413FF5F63817FF544152B81EE5BAD0504114AE47C116FF54413A8D1BF7BAD0504125205DA216FF54417A9FF488BBD05041EE32AEA715FF544110193DDABBD050418CFCB61E15FF54417FC45FAABCD050415C873A2B14FF54417B14AE47BDD050413333337313FF54418C8617D3BDD050419952B8AC12FF54411E126586BED0504159AB70AD11FF544125191B36BFD0504173CC94A610FF54417B14AEC7BFD05041CDCCCCCC0FFF54418D4A4F06C0D050416E88DDA40FFF5441E5BF5B7FC0D05041FE0CAD570FFF54417627ADE7C0D0504135D979140FFF54418DCAD573C1D050416E2EC2C50EFF54419341C315C2D0504144B2F4880EFF54411CF05458C2D05041BDD50E870EFF54416B038EB2C2D0504122EB7A840EFF54418F71D9ABC1D05041FC95B6370DFF54415C8FC275C1D05041333333F30CFF5441CD560896BCD05041B3E7C8C506FF5441C30ECC9CA6D05041DCA329ECEAFE54419C5629FDA5D050417FF1677EEBFE5441F55013DEA5D050410F65E29AEBFE5441ED1D68E1A4D050413098AF87ECFE5441EC51B85E90D050410AD7A3C0FFFE5441333333838FD05041C3F5288C00FF5441ADDBBE068FD050417A93590001FF5441A7165DDF8ED05041C2E41D2501FF5441806FB6098FD05041486C369A01FF54410AD7A3208FD050419A9999D901FF54415C8FC2B58FD050411F85EB4103FF5441C6BBE5D08FD050417211D37E04FF54411A8C7C1A90D050416920F92B07FF54417B14AE6790D050419A99997909FF5441713D0AF790D050410AD7A3200CFF5441713D0A5791D05041000000800EFF5441EC51B83E92D0504185EB51680FFF54413D0AD78392D05041295C8F9210FF5441713D0A1792D05041713D0A5713FF5441713D0A4792D050416666663615FF5441CDCCCCAC92D05041EC51B8FE16FF5441647F349393D050415198E06A17FF544196FA04B494D05041FBC4612318FF5441E17A146E95D05041A4703D9A18FF544195C53B8096D05041EB2E728819FF544154D8330397D05041E0673DFA19FF5441BF325E2D97D05041A176F4181AFF5441AE47E16A97D050415C8FC2451AFF54415C8FC2F597D05041F6285C7F1AFF5441F4713C3A99D0504196B77AB41AFF5441AB4752B199D05041C85796A11AFF54414AB15BBF99D05041F33B5C9F1AFF5441C1489A799BD05041DBDEACE719FF5441CAFE53F79BD050414B6A979519FF5441C3F5281C9DD05041666666D618FF5441674B87749DD0504153AB036A18FF5441229CFF8F9DD05041FEB4514818FF5441C27006EE9DD050414CCBC7EE17FF5441CDCCCCEC9ED05041C3F528FC16FF54411F85EBE1A0D05041CDCCCC0C16FF544152B81E15A3D05041F6285CEF15FF5441EC341813A4D05041498CA92216FF5441FA74C255A5D05041A404D66316FF5441F42179E5A6D0504154FCA51117FF54410AD7A380A7D0504152B81E5517FF544133333373A9D0504185EB519818FF54418FC2F548ABD050410AD7A3C019FF5441E17A14AEACD05041333333B31BFF544114AE4761ADD050413D0AD7F31DFF54419A3DF125AED05041AA85FAA01FFF54413A159929AED05041EF92F4A81FFF54411710B98EAED050410BFDDF1A20FF54410CEF0967B0D05041EDE5089720FF54415B14982DB2D050410A1C20DD20FF5441C3F528ACB2D050410AD7A3F020FF54410AD7A3E0B4D050417B14AE4721FF5441F1AD7557B6D050415071358721FF544145720917B7D050412F7CADA721FF5441654D2618B9D0504107985AF821FF544100F5A240B9D05041622EB8FE21FF54414CF70080BBD05041CEAAACD721FF5441D2D1EC50BCD05041B5A6AF9221FF544133333393BCD05041CDCCCC7C21FF5441DF1F56B4BCD05041752CAA5521FF5441ACE56FDDBCD05041AEDB1E2521FF54410A1C3D2ABDD0504118EB3CAA20FF54418D337AF4BDD0504156C6D6C31EFF5441DBA26F3DBED050414CEA5BFF1DFF54415945B16BBED0504157F9BA5C1DFF5441CDCCCC8CBED0504185EB51E81CFF544185EB5178BED050410AD7A3901CFF544100000050BED050417B14AE471CFF5441EC51B8BEBDD05041D7A370CD1BFF5441B2266C0EBDD05041E744613F1BFF5441E328EBE1BCD050417D34851B1BFF5441A3C43228BCD050412900A5731AFF54418FC2F558BBD0504185EB51B819FF544100000000BBD050416666665619FF54417BA568CABAD0504106D9A41519FF5441134F8FC2BAD05041D714290C19FF544132DD148EBAD05041B533CEAC18FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621085 - 87394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A14AE03D65041295C8F42ECF354411F85EBA1FFD55041E17A149EE6F3544185EB5118FBD5504133333343EBF35441295C8F52F6D55041295C8F22F0F3544114AE47B1F3D550410AD7A320F2F354411F85EB21EFD5504114AE47A1F5F35441295C8F72EAD5504152B81E85F6F354410AD7A3F0E5D55041F6285C0FF8F3544133333343E6D550411F85EB81F4F35441F6285CBFE5D55041333333C3F0F3544166666656E5D55041F6285CEFEBF35441EC51B83ED4D550418FC2F5B8F8F35441C3F528DCD1D550410AD7A3C0FBF35441D7A370CDD0D550418FC2F5A8FEF35441A4703D4ACFD55041B81E85DB04F45441A4703D7AE6D55041F6285C1F0BF45441B81E85EBE8D55041AE47E16A1AF45441295C8F02EAD5504148E17A241AF45441AE47E10AF0D550413D0AD7A318F4544152B81EE5F3D55041AE47E12A18F45441666666A6F4D55041EC51B82E18F454411F85EBE1F8D55041295C8F62F2F3544148E17AB4FAD55041E17A142EF4F35441713D0AB7FCD55041E17A145EF3F35441C3F528DC06D6504114AE4771F2F35441E17A14AE03D65041295C8F42ECF35441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005213D137D0D5504135680B0E01F45441B24132EDCFD550419A98CD3F02F454412D5BCAD2CFD55041116F00AC02F45441A4703D4ACFD55041B81E85DB04F4544100ACED09D0D55041D7118B0405F454414C14E754D1D55041F5C7490BFEF354417FE5B9B6DBD550415F2D3143FBF354410AD7A3F0E5D55041F6285C0FF8F354412763A336E6D550410E5F70F4F4F35441AA3A943CE6D55041557ADACAF4F35441C616213FE6D55041D9E5C2AEF4F35441C4F84016DBD5504193212085F8F354411A45204DD1D55041C318E649FDF354415213D137D0D5504135680B0E01F45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621180 - 21080
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D7A49D050411F85EB41A6FB54415C8FC2B53ED05041000000D092FB54419A99998925D05041713D0A37AAFB54418FC2F5880FD050415C8FC2E5C0FB5441A4703DCA1ED0504100000010CEFB544148E17A3423D05041D7A3708DD1FB5441F6285C5F28D05041713D0A17CBFB544148E17AD42AD0504166666636C8FB5441C3F528AC2ED050410AD7A3A0C3FB544114AE471133D05041B81E856BBEFB5441CDCCCC6C39D05041D7A370EDB7FB5441C3F528EC41D05041CDCCCC4CAEFB5441A4703D7A49D050411F85EB41A6FB5441
+</a>
+
+<b>
+010600000001000000010300000001000000220000000CC7570D24D050411D4A4408D2FB5441A934ADBD26D05041F1766AC0CEFB54418294B05229D05041191F729DCBFB544114742B282DD05041275ABDF8C6FB544185DD146A30D05041682FA0DCC2FB5441E49E977931D05041DA69C895C1FB5441D39F875A34D05041E1A3FF5BBEFB54418A23E4B636D05041FD758917BCFB54419D130E2839D0504176977186B9FB544118DC29143DD05041C421DF36B5FB54412A74C61140D05041E9C76BEDB1FB5441878EAC7F42D050411743EB41AFFB54416443E08D45D05041D6E54EF8ABFB54410DC3C6E347D050411B7DC775A9FB5441728D26D449D050411BEAA563A7FB5441E0F2D13B49D05041E51D5E84A6FB5441E96CD4FD44D05041CBF66E08ABFB5441B4F4636F43D05041A63295B0ACFB544176ED075241D0504109D76CFBAEFB5441994C6A2A3ED05041F217708EB2FB5441E7240B733CD0504152C23C80B4FB5441B9493A093BD0504133E52A1AB6FB54414B19FAA438D05041609981B9B8FB54411C6470CD37D050410BFE9E95B9FB54412E6B274F36D05041A91A061CBBFB5441736C3CF934D050418ECC3379BCFB5441E31AC95133D050414B09A529BEFB54410C8AFA3131D0504132EB6DA3C0FB5441085309D32ED050411F979372C3FB54415B6A3ABB2CD05041618198F1C5FB5441698194EA29D05041C14F4648C9FB5441569FB24527D0504167C44977CCFB54410450034823D05041CFF77875D1FB54410CC7570D24D050411D4A4408D2FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621180 - 67102
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D7A49D050411F85EB41A6FB54415C8FC2B53ED05041000000D092FB54419A99998925D05041713D0A37AAFB54418FC2F5880FD050415C8FC2E5C0FB5441A4703DCA1ED0504100000010CEFB544148E17A3423D05041D7A3708DD1FB5441F6285C5F28D05041713D0A17CBFB544148E17AD42AD0504166666636C8FB5441C3F528AC2ED050410AD7A3A0C3FB544114AE471133D05041B81E856BBEFB5441CDCCCC6C39D05041D7A370EDB7FB5441C3F528EC41D05041CDCCCC4CAEFB5441A4703D7A49D050411F85EB41A6FB5441
+</a>
+
+<b>
+010600000001000000010300000001000000220000000CC7570D24D050411D4A4408D2FB5441A934ADBD26D05041F1766AC0CEFB54418294B05229D05041191F729DCBFB544114742B282DD05041275ABDF8C6FB544185DD146A30D05041682FA0DCC2FB5441E49E977931D05041DA69C895C1FB5441D39F875A34D05041E1A3FF5BBEFB54418A23E4B636D05041FD758917BCFB54419D130E2839D0504176977186B9FB544118DC29143DD05041C421DF36B5FB54412A74C61140D05041E9C76BEDB1FB5441878EAC7F42D050411743EB41AFFB54416443E08D45D05041D6E54EF8ABFB54410DC3C6E347D050411B7DC775A9FB5441728D26D449D050411BEAA563A7FB5441E0F2D13B49D05041E51D5E84A6FB5441E96CD4FD44D05041CBF66E08ABFB5441B4F4636F43D05041A63295B0ACFB544176ED075241D0504109D76CFBAEFB5441994C6A2A3ED05041F217708EB2FB5441E7240B733CD0504152C23C80B4FB5441B9493A093BD0504133E52A1AB6FB54414B19FAA438D05041609981B9B8FB54411C6470CD37D050410BFE9E95B9FB54412E6B274F36D05041A91A061CBBFB5441736C3CF934D050418ECC3379BCFB5441E31AC95133D050414B09A529BEFB54410C8AFA3131D0504132EB6DA3C0FB5441085309D32ED050411F979372C3FB54415B6A3ABB2CD05041618198F1C5FB5441698194EA29D05041C14F4648C9FB5441569FB24527D0504167C44977CCFB54410450034823D05041CFF77875D1FB54410CC7570D24D050411D4A4408D2FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621353 - 180903
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000E17A140E8CD050413333330307FF54415C8FC2F58BD050417B14AE5706FF5441666666A68BD05041713D0AD704FF54416666661689D050417B14AE7705FF5441666666C684D050410AD7A34005FF54418FC2F5987FD0504185EB518804FF5441CDCCCCEC7AD050418FC2F59803FF5441333333A36FD05041C3F528BC2EFF54410000005077D05041E17A14EE2FFF5441A4703D3A84D05041333333D32FFF54419A9999C985D05041000000D02FFF5441000000C085D05041F6285C1F2FFF5441295C8FE285D0504152B81E352EFF5441D7A3706D86D050410AD7A3502CFF5441D7A3702D87D05041E17A141E2AFF54415C8FC22588D05041295C8F2228FF54410AD7A34089D05041295C8F1226FF544114AE47518AD05041AE47E11A24FF544152B81E558BD050417B14AE2722FF5441F6285C2F8CD050411F85EBE11FFF54411F85EB718CD05041295C8FC21DFF54413D0AD7838CD050416666663610FF54410AD7A3408CD05041CDCCCCAC0DFF5441A4703D0A8CD05041713D0A570BFF5441295C8F028CD05041E17A148E09FF54415C8FC2158CD050417B14AE2709FF5441E17A140E8CD050413333330307FF5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000636DB86576D0504188439AC92FFF544134081C9F77D050414ED46FED2FFF5441A4703D3A84D05041333333D32FFF54419A9999C985D05041000000D02FFF5441000000C085D05041F6285C1F2FFF5441295C8FE285D0504152B81E352EFF5441339D63F785D05041234375EC2DFF5441D7A3706D86D050410AD7A3502CFF5441D7A3702D87D05041E17A141E2AFF54415C8FC22588D05041295C8F2228FF54410AD7A34089D05041295C8F1226FF544114AE47518AD05041AE47E11A24FF5441F5AA47CA8AD05041F5C26A3223FF5441EB0A8B2C8CD05041976F20C21FFF54413DC711738CD05041A3DE19E41CFF5441E7580A758CD050417BC0A5661BFF54416E2E1A788CD05041ECDC111619FF5441EA45C67D8CD0504115404ACC14FF5441431EA0718CD05041767D53860FFF54410AD7A3408CD05041CDCCCCAC0DFF5441A4703D0A8CD05041713D0A570BFF5441295C8F028CD05041E17A148E09FF54415C8FC2158CD050417B14AE2709FF54418ECA6F138CD0504172ADC18108FF54412EB0C1F68BD05041C167B55E06FF5441666666A68BD05041713D0AD704FF54416666661689D050417B14AE7705FF5441666666C684D050410AD7A34005FF54418FC2F5987FD0504185EB518804FF5441C66E98617BD05041BB944CF403FF54418CDB608E70D050412100C7E02EFF5441636DB86576D0504188439AC92FFF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641519 - 3156566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DCA3C31514152B81E655F55544152B81E153E315141E17A147E5F5554410AD7A34041315141A4703DDA5E555441CDCCCCBC4331514114AE47915C55544152B81E45453151413333332357555441B81E854B4531514152B81EC553555441A4703DFA443151410AD7A3F0525554410AD7A30043315141AE47E1BA53555441666666463F315141295C8F724C555441713D0A9741315141E17A146E4B555441CDCCCCCC403151419A9999D9495554410AD7A31040315141F6285CDF4755544152B81E553F3151410AD7A38045555441000000F03E315141713D0A87435554418FC2F5983E3151416666663641555441C3F5287C3E315141713D0AD73E5554418FC2F5983E3151419A9999A93A5554415C8FC2B53E31514152B81EE5375554417B14AEA73E315141333333A3355554411F85EBB13D31514185EB51883255544185EB51483C3151413D0AD7C32F55544148E17AD439315141C3F5289C2C55544148E17A7435315141666666C62F5554417B14AEC7353151411F85EB3137555441F6285C5F36315141295C8FB23D555441F6285C6F37315141AE47E1DA455554417B14AEF738315141C3F528AC4B555441F6285CDF37315141295C8F524B555441E17A14CE34315141AE47E1DA5B555441000000003B315141CDCCCCFC5B555441666666263B31514114AE47815E5554410AD7A3503B315141713D0A4761555441D7A370AD3C3151410AD7A3F060555441A4703DCA3C31514152B81E655F555441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000A43CFEF9383151411604FD8D4C555441534D3B7E3A315141B19926774C5554413FD227E3383151418BEFD05E3E555441BD53CDD8373151414832403235555441F42BC17537315141CD52C5DC325554419897D6623731514122AE561132555441F05E36503731514118F4BDF3305554414926963D373151413D4C3B1430555441B341613937315141CF9E76DD2F555441A5A50E7635315141FD23B3C32F5554415A6E5B783531514105E4050E3055544108CCDE8135315141B4611CF830555441B997478F353151415DBF412A32555441B1712A963531514131BD9BF33255544147989ABD35315141ADE3DF4B36555441FAD6304736315141717A4FA93C55544176C3BE34373151414D24DB18445554414287AD2C38315141F3ED8BA9485554418675DA9F383151414D3AC35E4A555441A43CFEF9383151411604FD8D4C555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641519 - 3556181
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DCA3C31514152B81E655F55544152B81E153E315141E17A147E5F5554410AD7A34041315141A4703DDA5E555441CDCCCCBC4331514114AE47915C55544152B81E45453151413333332357555441B81E854B4531514152B81EC553555441A4703DFA443151410AD7A3F0525554410AD7A30043315141AE47E1BA53555441666666463F315141295C8F724C555441713D0A9741315141E17A146E4B555441CDCCCCCC403151419A9999D9495554410AD7A31040315141F6285CDF4755544152B81E553F3151410AD7A38045555441000000F03E315141713D0A87435554418FC2F5983E3151416666663641555441C3F5287C3E315141713D0AD73E5554418FC2F5983E3151419A9999A93A5554415C8FC2B53E31514152B81EE5375554417B14AEA73E315141333333A3355554411F85EBB13D31514185EB51883255544185EB51483C3151413D0AD7C32F55544148E17AD439315141C3F5289C2C55544148E17A7435315141666666C62F5554417B14AEC7353151411F85EB3137555441F6285C5F36315141295C8FB23D555441F6285C6F37315141AE47E1DA455554417B14AEF738315141C3F528AC4B555441F6285CDF37315141295C8F524B555441E17A14CE34315141AE47E1DA5B555441000000003B315141CDCCCCFC5B555441666666263B31514114AE47815E5554410AD7A3503B315141713D0A4761555441D7A370AD3C3151410AD7A3F060555441A4703DCA3C31514152B81E655F555441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000A43CFEF9383151411604FD8D4C555441534D3B7E3A315141B19926774C5554413FD227E3383151418BEFD05E3E555441BD53CDD8373151414832403235555441F42BC17537315141CD52C5DC325554419897D6623731514122AE561132555441F05E36503731514118F4BDF3305554414926963D373151413D4C3B1430555441B341613937315141CF9E76DD2F555441A5A50E7635315141FD23B3C32F5554415A6E5B783531514105E4050E3055544108CCDE8135315141B4611CF830555441B997478F353151415DBF412A32555441B1712A963531514131BD9BF33255544147989ABD35315141ADE3DF4B36555441FAD6304736315141717A4FA93C55544176C3BE34373151414D24DB18445554414287AD2C38315141F3ED8BA9485554418675DA9F383151414D3AC35E4A555441A43CFEF9383151411604FD8D4C555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641896 - 3104769
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F588CD31514133333313AD5554410AD7A340CC315141295C8FE2AC55544185EB51E8C93151410AD7A380AC5554418FC2F538C7315141295C8FE2AB555441D7A370FDD3315141EC51B80EC1555441295C8FB2DC3151410AD7A3A0BC555441713D0A47D7315141EC51B8DEAB555441EC51B8CED3315141AE47E13AAC555441AE47E17AD0315141D7A370CDAC555441E17A14AECE315141C3F5280CAD5554418FC2F588CD31514133333313AD555441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000567F244CDD31514154D0E4A9AB555441710ED2DADC315141682E5408AC555441F1F29413D7315141F254D0DAAB5554413EE0F300D731514191C6FDE5AB555441713D0A47D7315141EC51B8DEAB555441295C8FB2DC3151410AD7A3A0BC5554419A999929E9315141295C8F82B6555441EC51B88EE8315141F6285CFFB5555441567F244CDD31514154D0E4A9AB555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641896 - 3412079
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F588CD31514133333313AD5554410AD7A340CC315141295C8FE2AC55544185EB51E8C93151410AD7A380AC5554418FC2F538C7315141295C8FE2AB555441D7A370FDD3315141EC51B80EC1555441295C8FB2DC3151410AD7A3A0BC555441713D0A47D7315141EC51B8DEAB555441EC51B8CED3315141AE47E13AAC555441AE47E17AD0315141D7A370CDAC555441E17A14AECE315141C3F5280CAD5554418FC2F588CD31514133333313AD555441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000567F244CDD31514154D0E4A9AB555441710ED2DADC315141682E5408AC555441F1F29413D7315141F254D0DAAB5554413EE0F300D731514191C6FDE5AB555441713D0A47D7315141EC51B8DEAB555441295C8FB2DC3151410AD7A3A0BC5554419A999929E9315141295C8F82B6555441EC51B88EE8315141F6285CFFB5555441567F244CDD31514154D0E4A9AB555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968289 - 101115
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F00000041007F245F68514189E799E341D85441430BC38B98685141559D7BE845D854410F6651A498685141368A87C145D8544127915A759A685141E1A26F1144D85441515087FD9B6851416EA8079B41D8544114AE47519C685141A4703D0A3FD85441772F5B0C9D6851412F0BCA913DD854411DEBA7459E68514156C3B3F53BD854414542B9BF9D6851413CB1C0FE38D854412B30C6C89A68514158133A5535D854411346968194685141FC9742ED2FD85441049C7FB87368514190D72C022ED854417FC976D66E685141D2186EC333D854419C53B3DC6768514123C790B732D8544141007F245F68514189E799E341D85441
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000001735EDD3676851418206D5C632D85441AAF453DC67685141DF2565D532D854415AFA88B9656851417448C37536D8544197DE402E5F685141099D9FD241D85441BA5EA23C5F6851412FF76AE441D85441E5C042786C685141256479D242D854414744EB756F68514143D4140843D85441B17754217A68514112DA51C743D8544154A4C6B07C68514182E035F543D854414DB89DE681685141603E995244D85441DF1B20E78A685141DD9AF2F344D854410D731F8E976851412376B9D645D8544151CF6B519868514187EE65E445D854418C8DD28298685141B53204E245D85441CC8262A298685141389598C445D854410F6651A498685141388A87C145D85441938EF0539A68514167B17B3044D85441EB4DF3559A685141DC689D2E44D854415DDAB2769A685141A435460F44D85441565087FD9B6851416BA8079B41D8544114AE47519C685141A4703D0A3FD8544175C213559C685141F96769023FD85441518FA3559C6851417FF877013FD854417C2F5B0C9D685141310BCA913DD85441337CD5B39D685141F8F180B53CD8544107B51F459E68514168EC66F63BD85441B4D76F3E9E6851414955CBCC3BD85441C93379C69D6851414B5F002539D854414142B9BF9D68514140B1C0FE38D854411F52C8759C685141ACA62D6737D854412A1BF5AE9A685141E4EBFE3E35D854418B93563999685141C6A144FD33D85441AE00F29F96685141B5784AC031D85441E54BA09C96685141A9C76EBD31D8544170FAE77E946851412E701AED2FD854414DD7F86C806851416DBE7AC02ED85441EDEFCD2E7A685141C63BF8622ED854413B478DB07368514155728A0B2ED8544180C976D66E685141CD186EC333D8544177439EA06E6851411B6B5ABB33D85441F3F8E8DA676851417550AEBA32D8544104879FD567685141FA4EE1C332D85441BC5F7FD46768514109B2D6C532D854411735EDD3676851418206D5C632D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>642970 - 1560112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE544185EB518852BA5041C3F528CC1BFE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE54410AD7A3201ABA5041A4703D6A4DFE5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000884728112BA50410947F12048FE54410AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE54411D263E0D25BA50418B16DFDF44FE54411A6DA77433BA5041B36C80DD37FE5441CAD9117A46BA504148D793AF26FE544185EB518852BA5041C3F528CC1BFE544106B73DAE48BA5041D9A868F914FE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE54410884728112BA50410947F12048FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>642970 - 3364224
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE544185EB518852BA5041C3F528CC1BFE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE54410AD7A3201ABA5041A4703D6A4DFE5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000884728112BA50410947F12048FE54410AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE54411D263E0D25BA50418B16DFDF44FE54411A6DA77433BA5041B36C80DD37FE5441CAD9117A46BA504148D793AF26FE544185EB518852BA5041C3F528CC1BFE544106B73DAE48BA5041D9A868F914FE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE54410884728112BA50410947F12048FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>643163 - 4228514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000001A000000666666A675BB5041B81E85AB85FE5441C3F5285C71BB50417B14AE0790FE5441000000707ABB5041CDCCCC1C90FE54411F85EBB184BB5041F6285CDF8FFE54413D0AD7038BBB50410AD7A3609FFE544185EB513893BB50418FC2F508B4FE544133333333B2BB5041B81E85CBAEFE5441666666C6B2BB504152B81EE5A1FE54413D0AD7D3B2BB504114AE47B1A0FE544166666686B4BB5041F6285CCF94FE5441D7A3700DB4BB50413D0AD7138AFE5441B81E857BB3BB5041AE47E16A83FE5441CDCCCC3CB2BB5041EC51B82E7BFE5441A4703D9AB0BB5041EC51B85E70FE544100000060AFBB5041EC51B82E64FE5441EC51B8AEAEBB5041B81E854B5DFE5441F6285C9FADBB50419A9999695DFE54419A999989ACBB50418FC2F5C854FE54410AD7A36092BB50410000005059FE54417B14AEE77FBB5041295C8F825CFE54419A9999E97DBB5041333333D35FFE544152B81E157CBB5041666666D667FE54417B14AE277BBB504185EB51386DFE544185EB511879BB50411F85EB3179FE5441CDCCCC2C76BB50417B14AE6784FE5441666666A675BB5041B81E85AB85FE544107000000E17A146E8FBB5041666666266AFE54419A999979A1BB5041C3F5289C66FE54411F85EBF1A1BB504152B81EC576FE54411F85EB7195BB5041D7A3705D79FE544152B81E4596BB504185EB514870FE5441A4703D9A8EBB504114AE47C170FE5441E17A146E8FBB5041666666266AFE5441
+</a>
+
+<b>
+01060000000100000001030000000200000026000000BA0D513893BB504172AAF308B4FE544133333333B2BB5041B81E85CBAEFE5441666666C6B2BB504152B81EE5A1FE54413D0AD7D3B2BB504114AE47B1A0FE544166666686B4BB5041F6285CCF94FE5441D7A3700DB4BB50413D0AD7138AFE5441B81E857BB3BB5041AE47E16A83FE5441CDCCCC3CB2BB5041EC51B82E7BFE5441A4703D9AB0BB5041EC51B85E70FE544100000060AFBB5041EC51B82E64FE5441EC51B8AEAEBB5041B81E854B5DFE5441F6285C9FADBB50419A9999695DFE54419A999989ACBB50418FC2F5C854FE54410AD7A36092BB50410000005059FE54417B14AEE77FBB5041295C8F825CFE54419A9999E97DBB5041333333D35FFE544152B81E157CBB5041666666D667FE54417B14AE277BBB504185EB51386DFE544185EB511879BB50411F85EB3179FE5441CDCCCC2C76BB50417B14AE6784FE5441666666A675BB5041B81E85AB85FE54415CF56B4D72BB50413B68DF0990FE544185EB512072BB50417368919590FE5441B4BBD52476BB5041408A958B90FE5441313D274D78BB5041CC0F777190FE5441643224977ABB50418F127F5090FE544177A3EA3782BB5041D2B031EE8FFE5441B250C4F983BB50419D31ABE38FFE5441177A887284BB5041786BF05691FE5441973BD29E85BB504103961CF294FE5441E376203287BB50415C5FFDC999FE5441BEB983CB87BB50415FF7CC669BFE5441C6A58BC689BB50416ED6C9C49FFE5441B4A63FF28ABB5041273EE90FA2FE5441F25A8FB18CBB50412BAB2574A5FE5441CA45A7AC8EBB504144D8133FA9FE5441F2FDDC2690BB504159FA6F4FACFE5441BA0D513893BB504172AAF308B4FE54410F0000009A999979A1BB5041C3F5289C66FE54414D875AC9A1BB504169C7535271FE54411F85EBF1A1BB504152B81EC576FE544197937AC09EBB50414D1FD26E77FE5441ECD93BF39BBB504130AFE50378FE544127640E9695BB5041BD28F05579FE5441C866241F95BB5041A38AFE2675FE54410CCEFCF194BB50412A2EB71F73FE54412C5D981094BB5041D307DD8371FE54419531F99692BB504123F6826971FE544101B0B29F90BB50415405DC0171FE5441378941708EBB50410AD7A39070FE54418D2F9BA38EBB50417382EF4A6EFE54413588400B8FBB5041D7E5D0B469FE54419A999979A1BB5041C3F5289C66FE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943121 - 137863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000320000005C8FC235866A51415C8FC245D26B5441E5DF9F0C856A51416324F88FD26B5441F826C956806A51415EA27EE8D36B5441220BF81D7F6A51410489400BD46B54411F85EBC1796A51411F85EB61D56B54417B14AE07566A51418FC2F598D36B5441067B52D93A6A5141D72CD029D46B54417E7C3658346A514158F0A74FD56B54413E7464CA326A514178F49016D66B5441EF022060316A5141761081EED66B5441944491BB2E6A5141EEB89474DA6B5441F317F7642C6A514181293AD0F56B54414A3BCE7B566A51418482A51CF56B5441F472AAB7566A51411A4B9241FA6B544174733C79616A51417013B605FA6B5441711AD12C626A51413013EDA4F46B5441C7E2F4F0616A5141B91D9DC8E76B544126B65A9A5F6A5141CFE5F72BE26B5441D0ED36D65F6A514198F070B0DA6B5441F6CC39876B6A51414581B838DA6B5441F925A5D36A6A51416B60BBE9E56B5441524734E4696A514181293AD0F56B54415A5276C9676A514154998409016C544160044D62666A5141CEE73F320D6C5441B11A9A8D676A514196F3DC391B6C5441FC7E10206A6A5141939A71ED1B6C5441C13142DB786A51418DE89A541D6C544197FAF760836A5141939A71ED1B6C54418B964A2F866A5141002BF014166C5441D148EA288A6A514197F2B8B6056C5441C38BD1AA8D6A5141CC8DB062F86B54415E069568916A5141F36B8F90EE6B54411CAD60BB8C6A51414FE689EDEC6B5441995363AD826A5141F91D6629ED6B544157FA2E007E6A51419A4A0080EF6B5441B374295D7C6A5141DA4AC9E0F46B5441CFEE5A59756A51418935A038096C544187E34F13726A51419CA48F4F046C5441848AE4C6726A514162569D87FD6B5441225E13D1756A5141B1125BE3E96B544165B7477E7A6A514126AE1BF0E16B5441BA808FC58F6A514142284DECDA6B5441038C9A0B936A514161FBE934D36B5441A15FC915966A5141C8D991C3CE6B5441D6FBE4449E6A514188D9C862C96B544119BE5C139E6A5141E6ADFEA4C76B5441405B7BCB9D6A5141A66FFC68C76B5441E0435B96926A51412C059368CD6B5441EC51B8DE8C6A5141B81E859BD06B54415C8FC235866A51415C8FC245D26B5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000713D0A172C6A5141A4703DEAD86B54413D0AD7132E6A51415C8FC2E5D86B544185EB51D8356A514148E17A44D46B54417B14AE07566A51418FC2F598D36B54411F85EBC1796A51411F85EB61D56B54415C8FC235866A51415C8FC245D26B5441EC51B85E866A5141666666D6D16B544114AE47C1876A5141CDCCCC0CCE6B54413D0AD7B3816A5141D7A370FDCE6B5441A4703D7A7B6A51410AD7A3C0CF6B5441AE47E1BA776A514133333353D06B5441AE47E1DA736A514148E17AB4D06B544148E17A946E6A514148E17AA4D06B544148E17AA46A6A514133333353D06B5441AE47E16A646A5141000000A0CF6B544114AE4721626A5141EC51B84ECF6B544185EB5148586A5141EC51B83ECF6B54419A9999E94C6A51410AD7A3B0CF6B5441713D0A87486A5141295C8F32D06B5441A4703DBA3D6A51417B14AE77D16B5441666666F6346A5141C3F5287CD26B5441C3F528AC2E6A51410AD7A3A0D36B54415C8FC255296A5141EC51B82ED36B544148E17A24256A5141D7A370CDD26B5441AE47E1CA226A5141B81E854BD26B54411F85EB81246A5141713D0A67CD6B54415C8FC275256A514185EB51D8C96B5441666666A6256A514166666676C56B5441666666A6256A51411F85EB91C06B544133333323256A514100000070C06B54411F85EBD1236A5141713D0A77C76B544152B81EB5206A514152B81E15D86B54410AD7A3A0206A514152B81EB5D86B5441713D0A172C6A5141A4703DEAD86B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943121 - 1250112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000320000005C8FC235866A51415C8FC245D26B5441E5DF9F0C856A51416324F88FD26B5441F826C956806A51415EA27EE8D36B5441220BF81D7F6A51410489400BD46B54411F85EBC1796A51411F85EB61D56B54417B14AE07566A51418FC2F598D36B5441067B52D93A6A5141D72CD029D46B54417E7C3658346A514158F0A74FD56B54413E7464CA326A514178F49016D66B5441EF022060316A5141761081EED66B5441944491BB2E6A5141EEB89474DA6B5441F317F7642C6A514181293AD0F56B54414A3BCE7B566A51418482A51CF56B5441F472AAB7566A51411A4B9241FA6B544174733C79616A51417013B605FA6B5441711AD12C626A51413013EDA4F46B5441C7E2F4F0616A5141B91D9DC8E76B544126B65A9A5F6A5141CFE5F72BE26B5441D0ED36D65F6A514198F070B0DA6B5441F6CC39876B6A51414581B838DA6B5441F925A5D36A6A51416B60BBE9E56B5441524734E4696A514181293AD0F56B54415A5276C9676A514154998409016C544160044D62666A5141CEE73F320D6C5441B11A9A8D676A514196F3DC391B6C5441FC7E10206A6A5141939A71ED1B6C5441C13142DB786A51418DE89A541D6C544197FAF760836A5141939A71ED1B6C54418B964A2F866A5141002BF014166C5441D148EA288A6A514197F2B8B6056C5441C38BD1AA8D6A5141CC8DB062F86B54415E069568916A5141F36B8F90EE6B54411CAD60BB8C6A51414FE689EDEC6B5441995363AD826A5141F91D6629ED6B544157FA2E007E6A51419A4A0080EF6B5441B374295D7C6A5141DA4AC9E0F46B5441CFEE5A59756A51418935A038096C544187E34F13726A51419CA48F4F046C5441848AE4C6726A514162569D87FD6B5441225E13D1756A5141B1125BE3E96B544165B7477E7A6A514126AE1BF0E16B5441BA808FC58F6A514142284DECDA6B5441038C9A0B936A514161FBE934D36B5441A15FC915966A5141C8D991C3CE6B5441D6FBE4449E6A514188D9C862C96B544119BE5C139E6A5141E6ADFEA4C76B5441405B7BCB9D6A5141A66FFC68C76B5441E0435B96926A51412C059368CD6B5441EC51B8DE8C6A5141B81E859BD06B54415C8FC235866A51415C8FC245D26B5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000713D0A172C6A5141A4703DEAD86B54413D0AD7132E6A51415C8FC2E5D86B544185EB51D8356A514148E17A44D46B54417B14AE07566A51418FC2F598D36B54411F85EBC1796A51411F85EB61D56B54415C8FC235866A51415C8FC245D26B5441EC51B85E866A5141666666D6D16B544114AE47C1876A5141CDCCCC0CCE6B54413D0AD7B3816A5141D7A370FDCE6B5441A4703D7A7B6A51410AD7A3C0CF6B5441AE47E1BA776A514133333353D06B5441AE47E1DA736A514148E17AB4D06B544148E17A946E6A514148E17AA4D06B544148E17AA46A6A514133333353D06B5441AE47E16A646A5141000000A0CF6B544114AE4721626A5141EC51B84ECF6B544185EB5148586A5141EC51B83ECF6B54419A9999E94C6A51410AD7A3B0CF6B5441713D0A87486A5141295C8F32D06B5441A4703DBA3D6A51417B14AE77D16B5441666666F6346A5141C3F5287CD26B5441C3F528AC2E6A51410AD7A3A0D36B54415C8FC255296A5141EC51B82ED36B544148E17A24256A5141D7A370CDD26B5441AE47E1CA226A5141B81E854BD26B54411F85EB81246A5141713D0A67CD6B54415C8FC275256A514185EB51D8C96B5441666666A6256A514166666676C56B5441666666A6256A51411F85EB91C06B544133333323256A514100000070C06B54411F85EBD1236A5141713D0A77C76B544152B81EB5206A514152B81E15D86B54410AD7A3A0206A514152B81EB5D86B5441713D0A172C6A5141A4703DEAD86B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943121 - 4007196
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000320000005C8FC235866A51415C8FC245D26B5441E5DF9F0C856A51416324F88FD26B5441F826C956806A51415EA27EE8D36B5441220BF81D7F6A51410489400BD46B54411F85EBC1796A51411F85EB61D56B54417B14AE07566A51418FC2F598D36B5441067B52D93A6A5141D72CD029D46B54417E7C3658346A514158F0A74FD56B54413E7464CA326A514178F49016D66B5441EF022060316A5141761081EED66B5441944491BB2E6A5141EEB89474DA6B5441F317F7642C6A514181293AD0F56B54414A3BCE7B566A51418482A51CF56B5441F472AAB7566A51411A4B9241FA6B544174733C79616A51417013B605FA6B5441711AD12C626A51413013EDA4F46B5441C7E2F4F0616A5141B91D9DC8E76B544126B65A9A5F6A5141CFE5F72BE26B5441D0ED36D65F6A514198F070B0DA6B5441F6CC39876B6A51414581B838DA6B5441F925A5D36A6A51416B60BBE9E56B5441524734E4696A514181293AD0F56B54415A5276C9676A514154998409016C544160044D62666A5141CEE73F320D6C5441B11A9A8D676A514196F3DC391B6C5441FC7E10206A6A5141939A71ED1B6C5441C13142DB786A51418DE89A541D6C544197FAF760836A5141939A71ED1B6C54418B964A2F866A5141002BF014166C5441D148EA288A6A514197F2B8B6056C5441C38BD1AA8D6A5141CC8DB062F86B54415E069568916A5141F36B8F90EE6B54411CAD60BB8C6A51414FE689EDEC6B5441995363AD826A5141F91D6629ED6B544157FA2E007E6A51419A4A0080EF6B5441B374295D7C6A5141DA4AC9E0F46B5441CFEE5A59756A51418935A038096C544187E34F13726A51419CA48F4F046C5441848AE4C6726A514162569D87FD6B5441225E13D1756A5141B1125BE3E96B544165B7477E7A6A514126AE1BF0E16B5441BA808FC58F6A514142284DECDA6B5441038C9A0B936A514161FBE934D36B5441A15FC915966A5141C8D991C3CE6B5441D6FBE4449E6A514188D9C862C96B544119BE5C139E6A5141E6ADFEA4C76B5441405B7BCB9D6A5141A66FFC68C76B5441E0435B96926A51412C059368CD6B5441EC51B8DE8C6A5141B81E859BD06B54415C8FC235866A51415C8FC245D26B5441
+</a>
+
+<b>
+01060000000100000001030000000100000022000000713D0A172C6A5141A4703DEAD86B54413D0AD7132E6A51415C8FC2E5D86B544185EB51D8356A514148E17A44D46B54417B14AE07566A51418FC2F598D36B54411F85EBC1796A51411F85EB61D56B54415C8FC235866A51415C8FC245D26B5441EC51B85E866A5141666666D6D16B544114AE47C1876A5141CDCCCC0CCE6B54413D0AD7B3816A5141D7A370FDCE6B5441A4703D7A7B6A51410AD7A3C0CF6B5441AE47E1BA776A514133333353D06B5441AE47E1DA736A514148E17AB4D06B544148E17A946E6A514148E17AA4D06B544148E17AA46A6A514133333353D06B5441AE47E16A646A5141000000A0CF6B544114AE4721626A5141EC51B84ECF6B544185EB5148586A5141EC51B83ECF6B54419A9999E94C6A51410AD7A3B0CF6B5441713D0A87486A5141295C8F32D06B5441A4703DBA3D6A51417B14AE77D16B5441666666F6346A5141C3F5287CD26B5441C3F528AC2E6A51410AD7A3A0D36B54415C8FC255296A5141EC51B82ED36B544148E17A24256A5141D7A370CDD26B5441AE47E1CA226A5141B81E854BD26B54411F85EB81246A5141713D0A67CD6B54415C8FC275256A514185EB51D8C96B5441666666A6256A514166666676C56B5441666666A6256A51411F85EB91C06B544133333323256A514100000070C06B54411F85EBD1236A5141713D0A77C76B544152B81EB5206A514152B81E15D86B54410AD7A3A0206A514152B81EB5D86B5441713D0A172C6A5141A4703DEAD86B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965540 - 3100465
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A1D90F43FA5D514178E18C9E029F544162D9D6A8FB5D5141E68B434D139F544159F9C5A1FD5D514178B0B863179F54417757128CFF5D5141EB495D221B9F544197108C37065E51413013E9C7249F54416B28EC3C0F5E5141A104EB0E319F5441EC0E6101155E51412A62453F389F54414C8554AE2D5E51413D38B546329F5441415980323F5E51414B1BA3092E9F5441E3E6D77B505E5141128470D1299F5441BC18E688515E5141573E8A220B9F5441559A6155525E514135DB89D4F39E5441A1D90F43FA5D514178E18C9E029F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006ABE0A34525E5141CBAE6A42F49E5441EBF8D47D525E514185945FC8ED9E5441A0DF39FBF95D51419798DFEEFB9E54419A9999C9F95D5141CDCCCCDCFC9E54413D0AD7A3FB5D51417B14AE67139F5441295C8FB2FD5D514100000070179F54418FC2F538FF5D5141D7A3709D1A9F5441A4703D3A045E5141CDCCCCFC219F544185EB51780A5E51410AD7A3C02A9F54419A9999B9145E51410AD7A350389F5441B81E857B505E5141AE47E1DA299F54417B71D67F515E51419CCDED8A0A9F54416ABE0A34525E5141CBAE6A42F49E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965540 - 3276917
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A1D90F43FA5D514178E18C9E029F544162D9D6A8FB5D5141E68B434D139F544159F9C5A1FD5D514178B0B863179F54417757128CFF5D5141EB495D221B9F544197108C37065E51413013E9C7249F54416B28EC3C0F5E5141A104EB0E319F5441EC0E6101155E51412A62453F389F54414C8554AE2D5E51413D38B546329F5441415980323F5E51414B1BA3092E9F5441E3E6D77B505E5141128470D1299F5441BC18E688515E5141573E8A220B9F5441559A6155525E514135DB89D4F39E5441A1D90F43FA5D514178E18C9E029F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006ABE0A34525E5141CBAE6A42F49E5441EBF8D47D525E514185945FC8ED9E5441A0DF39FBF95D51419798DFEEFB9E54419A9999C9F95D5141CDCCCCDCFC9E54413D0AD7A3FB5D51417B14AE67139F5441295C8FB2FD5D514100000070179F54418FC2F538FF5D5141D7A3709D1A9F5441A4703D3A045E5141CDCCCCFC219F544185EB51780A5E51410AD7A3C02A9F54419A9999B9145E51410AD7A350389F5441B81E857B505E5141AE47E1DA299F54417B71D67F515E51419CCDED8A0A9F54416ABE0A34525E5141CBAE6A42F49E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644529 - 236336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000E17A14FEA43F514185EB51587A3854419A999929A33F51418FC2F5287838544133333363A03F5141AE47E1EA753854411F85EB719F3F5141A4703DFA75385441B81E85CB9E3F5141F6285CCF78385441295C8F429D3F51418FC2F5787D38544152B81EE5993F51418FC2F508873854415C8FC2A5953F51411F85EB119238544185EB5128943F5141333333C395385441AE47E1FA953F51418FC2F588963854413D0AD7E3973F514185EB51E895385441F6285C6F9C3F51413D0AD7E3903854415C8FC2259F3F5141333333938A385441E17A14FEA43F514185EB51587A38544101030000000100000035000000A4703D0A393F514185EB51C84E385441F6285CDF403F514152B81E45523854413D0AD7F3453F5141CDCCCCCC53385441B81E858B463F5141E17A145E54385441C3F5286C473F5141333333A355385441EC51B89E483F5141D7A370BD573854415C8FC235493F5141C3F5284C593854413D0AD7A3493F5141AE47E11A5B385441CDCCCCCC493F51415C8FC2D55C385441C3F528FC4C3F5141713D0A275D3854417B14AE07513F5141666666065C3854413D0AD7E3523F5141EC51B87E5A38544114AE47615B3F5141CDCCCCFC56385441000000B05B3F5141B81E85FB56385441AE47E12A603F514185EB51D856385441E17A147E603F514152B81EF556385441E17A14CE603F51415C8FC2F556385441CDCCCC7C633F5141713D0A3756385441295C8F42673F5141EC51B8CE5438544148E17A94673F5141295C8F9254385441A4703DEA673F51413D0AD77354385441E17A145E6C3F5141EC51B89E53385441AE47E14A703F5141E17A140E5238544152B81EE57B3F514185EB51E85138544185EB51587F3F514166666676493854419A9999498A3F514114AE47C149385441713D0A278D3F514148E17A9448385441295C8FF28A3F5141D7A370ED423854411F85EB818A3F5141D7A3700D3D3854410AD7A360883F51417B14AE07373854411F85EBF1823F51410AD7A3C034385441CDCCCC0C793F514114AE47712F3854413D0AD7F3703F5141AE47E10A2D385441EC51B89E6C3F5141EC51B89E2A3854417B14AEF76B3F514152B81E652A3854419A999959693F5141D7A3702D28385441EC51B87E643F514148E17AB4253854419A9999B9623F5141E17A14CE2438544185EB5118613F514185EB51B82438544114AE47615F3F51419A9999F924385441F6285C0F5E3F5141E17A145E253854413D0AD7F35B3F514152B81E8526385441AE47E17A593F5141EC51B81E283854410AD7A380563F51419A9999892A385441CDCCCCDC533F5141EC51B84E2C38544148E17AE44F3F514185EB51782F385441A4703D7A493F5141333333633338544114AE47413D3F5141D7A3707D393854413D0AD793383F5141B81E85FB3D385441713D0A17393F5141D7A370BD433854417B14AE77393F51416666661649385441713D0A27393F51411F85EB714E385441A4703D0A393F514185EB51C84E385441010300000001000000120000000AD7A3609D3F5141333333B37A385441D7A370AD9E3F51410AD7A39075385441713D0A179F3F5141F6285C7F733854417B14AED79B3F5141295C8F4272385441295C8F129A3F51415C8FC215733854419A999989983F5141AE47E1EA753854418FC2F598983F514114AE47B1783854413D0AD7039A3F51411F85EBD17B385441713D0AD7993F5141AE47E13A7E385441AE47E17A983F51418FC2F5B881385441295C8FE2963F5141D7A370BD863854418FC2F548933F5141A4703D5A8E385441CDCCCC8C903F514148E17A44943854410AD7A340933F514114AE4761953854410AD7A390933F51413333338395385441666666A6963F5141A4703D4A8D385441713D0AE79B3F5141000000207F3854410AD7A3609D3F5141333333B37A385441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000713D0AD7993F5141AE47E13A7E385441A4299EC0993F51410FE275747E38544109691181993F51414747A8177F385441AE47E17A983F51418FC2F5B881385441295C8FE2963F5141D7A370BD86385441F8C98C8E933F5141A31316C78D385441A9784B7F923F514137E8610E9038544196E060E5913F5141DE1E425B913854410F679943913F5141399A23B992385441CDCCCC8C903F514148E17A44943854410AD7A340933F514114AE4761953854418F7F9990933F5141ABD02E8395385441944C02DC933F5141545E51BA943854410C21B63A943F514144E6E7BD93385441BFF55C90943F514123F79DD992385441BE4038BF943F5141F6B7BA5C92385441B7CD8B00953F5141B02B9DAE913854411990E37C953F5141C978336390385441DAA1802B963F514193FECC918E385441971414C1973F5141B9DFE84F8A385441E5108EEB973F514121CA5BDD89385441616CE9B0993F514112A2BD1685385441207439C0993F5141590D72ED84385441D7CA19299B3F514187F23A2081385441387D2B4B9B3F5141DD2D5AC480385441F581B1E89B3F514175320A1B7F385441C4B0890D9C3F514108A681AC7E3854410EA11C159C3F514128D5C8957E385441FEF5236B9C3F514158D6B2937D385441C2C992339D3F51410B5B663A7B3854415E946C649D3F5141C2AD40A47A38544109ABED709D3F51410461DC727A38544106B010819D3F51411BDA1E337A385441D0AA298F9D3F5141E4616FFB79385441FFC97DBD9D3F5141B6E66F4479385441D4A98A109E3F5141947263FC773854419B8018879E3F51416995192876385441F9BEB3AF9E3F5141634A4D8575385441310C60DC9E3F51411C2965A57438544167E6F1159F3F51413E55F17E733854411901B5029F3F514100A49C7773385441CFA413019F3F5141AA99FD7673385441C441A8EF9E3F5141B84B5A707338544192881BC89E3F5141132548617338544105EAE4C29E3F514156924B5F733854416B3164F69C3F51412C9ED0AF723854418447C4899C3F51416FBF8EF7723854416DC2D8B79A3F5141BB77AD3C73385441BF7AF71C9A3F514173963208743854410085CE209A3F51410530CCE1743854411F0ABA92993F51410530CC817538544196A7BA89983F5141780EDAF0753854414B09BD89983F51417A3548F1753854419A2DC689983F5141A404EFF2753854414EC7248A983F51415E4906047638544108349C8D983F5141A6AD59A4763854418FC2F598983F514114AE47B1783854413D0AD7039A3F51411F85EBD17B385441713D0AD7993F5141AE47E13A7E385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644529 - 289998
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000E17A14FEA43F514185EB51587A3854419A999929A33F51418FC2F5287838544133333363A03F5141AE47E1EA753854411F85EB719F3F5141A4703DFA75385441B81E85CB9E3F5141F6285CCF78385441295C8F429D3F51418FC2F5787D38544152B81EE5993F51418FC2F508873854415C8FC2A5953F51411F85EB119238544185EB5128943F5141333333C395385441AE47E1FA953F51418FC2F588963854413D0AD7E3973F514185EB51E895385441F6285C6F9C3F51413D0AD7E3903854415C8FC2259F3F5141333333938A385441E17A14FEA43F514185EB51587A38544101030000000100000035000000A4703D0A393F514185EB51C84E385441F6285CDF403F514152B81E45523854413D0AD7F3453F5141CDCCCCCC53385441B81E858B463F5141E17A145E54385441C3F5286C473F5141333333A355385441EC51B89E483F5141D7A370BD573854415C8FC235493F5141C3F5284C593854413D0AD7A3493F5141AE47E11A5B385441CDCCCCCC493F51415C8FC2D55C385441C3F528FC4C3F5141713D0A275D3854417B14AE07513F5141666666065C3854413D0AD7E3523F5141EC51B87E5A38544114AE47615B3F5141CDCCCCFC56385441000000B05B3F5141B81E85FB56385441AE47E12A603F514185EB51D856385441E17A147E603F514152B81EF556385441E17A14CE603F51415C8FC2F556385441CDCCCC7C633F5141713D0A3756385441295C8F42673F5141EC51B8CE5438544148E17A94673F5141295C8F9254385441A4703DEA673F51413D0AD77354385441E17A145E6C3F5141EC51B89E53385441AE47E14A703F5141E17A140E5238544152B81EE57B3F514185EB51E85138544185EB51587F3F514166666676493854419A9999498A3F514114AE47C149385441713D0A278D3F514148E17A9448385441295C8FF28A3F5141D7A370ED423854411F85EB818A3F5141D7A3700D3D3854410AD7A360883F51417B14AE07373854411F85EBF1823F51410AD7A3C034385441CDCCCC0C793F514114AE47712F3854413D0AD7F3703F5141AE47E10A2D385441EC51B89E6C3F5141EC51B89E2A3854417B14AEF76B3F514152B81E652A3854419A999959693F5141D7A3702D28385441EC51B87E643F514148E17AB4253854419A9999B9623F5141E17A14CE2438544185EB5118613F514185EB51B82438544114AE47615F3F51419A9999F924385441F6285C0F5E3F5141E17A145E253854413D0AD7F35B3F514152B81E8526385441AE47E17A593F5141EC51B81E283854410AD7A380563F51419A9999892A385441CDCCCCDC533F5141EC51B84E2C38544148E17AE44F3F514185EB51782F385441A4703D7A493F5141333333633338544114AE47413D3F5141D7A3707D393854413D0AD793383F5141B81E85FB3D385441713D0A17393F5141D7A370BD433854417B14AE77393F51416666661649385441713D0A27393F51411F85EB714E385441A4703D0A393F514185EB51C84E385441010300000001000000120000000AD7A3609D3F5141333333B37A385441D7A370AD9E3F51410AD7A39075385441713D0A179F3F5141F6285C7F733854417B14AED79B3F5141295C8F4272385441295C8F129A3F51415C8FC215733854419A999989983F5141AE47E1EA753854418FC2F598983F514114AE47B1783854413D0AD7039A3F51411F85EBD17B385441713D0AD7993F5141AE47E13A7E385441AE47E17A983F51418FC2F5B881385441295C8FE2963F5141D7A370BD863854418FC2F548933F5141A4703D5A8E385441CDCCCC8C903F514148E17A44943854410AD7A340933F514114AE4761953854410AD7A390933F51413333338395385441666666A6963F5141A4703D4A8D385441713D0AE79B3F5141000000207F3854410AD7A3609D3F5141333333B37A385441
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000713D0AD7993F5141AE47E13A7E385441A4299EC0993F51410FE275747E38544109691181993F51414747A8177F385441AE47E17A983F51418FC2F5B881385441295C8FE2963F5141D7A370BD86385441F8C98C8E933F5141A31316C78D385441A9784B7F923F514137E8610E9038544196E060E5913F5141DE1E425B913854410F679943913F5141399A23B992385441CDCCCC8C903F514148E17A44943854410AD7A340933F514114AE4761953854418F7F9990933F5141ABD02E8395385441944C02DC933F5141545E51BA943854410C21B63A943F514144E6E7BD93385441BFF55C90943F514123F79DD992385441BE4038BF943F5141F6B7BA5C92385441B7CD8B00953F5141B02B9DAE913854411990E37C953F5141C978336390385441DAA1802B963F514193FECC918E385441971414C1973F5141B9DFE84F8A385441E5108EEB973F514121CA5BDD89385441616CE9B0993F514112A2BD1685385441207439C0993F5141590D72ED84385441D7CA19299B3F514187F23A2081385441387D2B4B9B3F5141DD2D5AC480385441F581B1E89B3F514175320A1B7F385441C4B0890D9C3F514108A681AC7E3854410EA11C159C3F514128D5C8957E385441FEF5236B9C3F514158D6B2937D385441C2C992339D3F51410B5B663A7B3854415E946C649D3F5141C2AD40A47A38544109ABED709D3F51410461DC727A38544106B010819D3F51411BDA1E337A385441D0AA298F9D3F5141E4616FFB79385441FFC97DBD9D3F5141B6E66F4479385441D4A98A109E3F5141947263FC773854419B8018879E3F51416995192876385441F9BEB3AF9E3F5141634A4D8575385441310C60DC9E3F51411C2965A57438544167E6F1159F3F51413E55F17E733854411901B5029F3F514100A49C7773385441CFA413019F3F5141AA99FD7673385441C441A8EF9E3F5141B84B5A707338544192881BC89E3F5141132548617338544105EAE4C29E3F514156924B5F733854416B3164F69C3F51412C9ED0AF723854418447C4899C3F51416FBF8EF7723854416DC2D8B79A3F5141BB77AD3C73385441BF7AF71C9A3F514173963208743854410085CE209A3F51410530CCE1743854411F0ABA92993F51410530CC817538544196A7BA89983F5141780EDAF0753854414B09BD89983F51417A3548F1753854419A2DC689983F5141A404EFF2753854414EC7248A983F51415E4906047638544108349C8D983F5141A6AD59A4763854418FC2F598983F514114AE47B1783854413D0AD7039A3F51411F85EBD17B385441713D0AD7993F5141AE47E13A7E385441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>957689 - 57144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003F000000F9FA9A645D2B5141D2B8C3C8DDD854418388AFAD5C2B5141612A9752DDD8544151244687572B51410D0F06EBDBD85441387211F4542B5141612A9752DDD854415D80DF194F2B5141612A9752DDD8544128CEAA864C2B5141E9AE848EDDD8544172EA46D2402B5141933C4D42DED85441D16171CC392B5141AF4528BADED854416A015FE4362B514168A03221DED854410F227485362B514105B85F06DED8544184ED9996322B514168A03221DED85441583535592A2B5141612A9752DDD85441EA39C50A212B514175E4EFCFDBD8544122E6F970172B514172AC7079DCD85441453C3ECF092B51417FDCCBE5DFD85441F11A9004F42A51413D38BB69E5D854414BBF3D75E42A51412884FF0DE9D8544191AF2F8AD82A514113D043B2ECD85441D79F219FCC2A5141E3930DF9F4D8544120C8920AC02A5141B68F5696FCD854415CAC46C7B52A5141AF1F58E9FDD8544175988179B12A5141A1DB9A3A00D9544152A0086FB72A51417EE3213006D954412264D2B5BF2A514150432B220ED95441EEEF1CA6C82A51410A53390D1AD95441D503E2F3CC2A5141B71E8A4928D95441B643E83FD22A514151D25ED539D95441B20B69E9D22A5141536E9E8039D954417CFB732EDC2A5141536E9E8039D95441D926ABF9F42A5141EE91999831D95441E9D3ECDEFD2A5141F1E83F7D2FD95441A20EF777072B5141485B77C92ED954419FB75093092B5141F1E83F7D2FD95441B2BB385D102B5141B77FE3A830D95441EA39C50A212B51417666178B33D954411F3DAECD432B51415F161C8437D9544158D785FE4C2B5141B3234A1639D95441BB8CC204552B514152D25ED539D95441BB9F584B572B5141EB3500063AD9544149244687572B5141D283CB7237D954411F85EB71582B51410AD7A3B035D9544111129097562B51419DC8BB6734D95441F508B51F562B5141690DAC5C31D95441F85F5B04542B5141E7E457B328D95441C498005D532B5141C99AC64E25D954415D44A08E532B5141F115434925D9544114AE4751532B5141295C8FB224D95441CA551198542B5141ACBEC42B25D95441B31CC457562B5141CB3606FA24D95441B848B266592B5141BB2E3B561FD954412AC4C42A592B51414F61755B1BD954419C3FD7EE582B51413906E7AC16D954418036FC76582B514148B926240CD954410EBBE9B2582B5141DF42070E06D9544146CD9FA2592B5141EB9EA0A0FDD85441146443CE5A2B51413D16CB9AF6D854418388AFAD5C2B5141D7F65169EED85441F503C2715C2B5141AB40350CE5D854419F918A255D2B51410861B921E0D854418388AFAD5C2B5141D04E0332DFD85441C862124D5D2B514192B33DF7DDD85441AE47E14A5D2B514185EB51E8DDD85441F9FA9A645D2B5141D2B8C3C8DDD85441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000F103C2715C2B5141AA40350CE5D854415AA977235D2B5141E1BA3D30E0D85441D2F079245D2B51417C1F981FE0D854414EE978FD5C2B5141681096D1DFD85441D3BB967F5B2B5141809770CADFD8544126485529592B5141D0AC4EDCF0D85441645FF7CE552B5141E2AA8A4805D95441F14A0B85562B5141408BC68F10D95441F9AC16ED562B5141C45C824417D9544177D413D3562B5141D61952AF1ED9544141D46DA3522B5141D00577F023D95441148B85BE512B5141C0ECE81124D9544172059863532B5141CDB08CDF24D9544114AE4751532B5141295C8FB224D9544115A5671D542B5141869245FE24D954410D367B4D552B51414D899C1725D954413EFE8F73552B51419C56611325D95441A974CE7F552B51419010051225D954413E5617CA552B5141EC13C40925D95441F5CBF3F2572B51415CA2C20322D95441BD48B266592B5141C02E3B561FD954412AC4C42A592B51414B61755B1BD95441A36F520F592B5141EC46BB4C19D95441973FD7EE582B51413406E7AC16D954417D36FC76582B514148B926240CD95441EE0F2F82582B5141AAA3FC000BD954412405BB63582B5141201DC59508D95441AD48FEAA582B5141BBE0F0DB06D954410FBBE9B2582B5141E042070E06D9544145CD9FA2592B5141E79EA0A0FDD85441186443CE5A2B51413E16CB9AF6D854418488AFAD5C2B5141D8F65169EED85441F103C2715C2B5141AA40350CE5D85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>645068 - 215579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E14AA83B51413D0AD743591955411F85EB41A83B51413D0AD703561955413D0AD753A83B5141AE47E1DA541955410AD7A3A0A83B51415C8FC2E553195541C3F528ECA63B5141D7A3701D53195541B81E855B813B5141295C8FB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B5141E17A14EE47195541A4703DEA863B514114AE475149195541AE47E14AA83B51413D0AD74359195541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000A4703DEA863B514114AE4751491955414945E14AA83B51410D2CD643591955411F85EB41A83B51413D0AD70356195541F1ACFA44A83B51419C0825D15519554165F2D553A83B51412211E2DA541955416D00A3A0A83B5141DD2CC2E55319554140F7D901A83B51415F88E29C531955414A8529ECA63B514143E7711D531955419292B95B813B514107D4BAB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B514118F918AB47195541A4703D7A873B5141E17A14EE47195541A4703DEA863B514114AE475149195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>645068 - 361538
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E14AA83B51413D0AD743591955411F85EB41A83B51413D0AD703561955413D0AD753A83B5141AE47E1DA541955410AD7A3A0A83B51415C8FC2E553195541C3F528ECA63B5141D7A3701D53195541B81E855B813B5141295C8FB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B5141E17A14EE47195541A4703DEA863B514114AE475149195541AE47E14AA83B51413D0AD74359195541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000A4703DEA863B514114AE4751491955414945E14AA83B51410D2CD643591955411F85EB41A83B51413D0AD70356195541F1ACFA44A83B51419C0825D15519554165F2D553A83B51412211E2DA541955416D00A3A0A83B5141DD2CC2E55319554140F7D901A83B51415F88E29C531955414A8529ECA63B514143E7711D531955419292B95B813B514107D4BAB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B514118F918AB47195541A4703D7A873B5141E17A14EE47195541A4703DEA863B514114AE475149195541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652626 - 409244
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000140000009A999929E52B5141D7A3702D1530554133333313E72B5141CDCCCCFC15305541D7A3700DE92B5141A4703D6A13305541295C8F02EA2B51410AD7A320123055418FC2F568E42B51417B14AE770F3055417B14AE97E52B51418FC2F5480D30554152B81EE5D12B514114AE47A104305541AE47E11ABD2B514152B81EB5F82F55413D0AD733B92B5141AE47E1AAF52F5541295C8F92AD2B5141000000C0E82F554114AE47B1A92B5141EC51B80EE52F5541B81E857BA22B5141CDCCCC4CEC2F5541713D0A47A32B5141295C8F92ED2F5541B81E85EBAA2B5141000000D0F92F5541D7A3701DAD2B5141295C8F32FC2F5541713D0A77BF2B5141666666960D3055410AD7A360C32B51411F85EB1110305541B81E853BC62B5141C3F528EC103055419A999959C92B51419A999959113055419A999929E52B5141D7A3702D153055410103000000010000002300000014AE4711D62B5141000000B01D3055411F85EB11DB2B5141666666361E30554152B81E75E62B5141B81E857B213055410AD7A310E72B514185EB51982230554114AE47A1EB2B5141C3F5280C1F305541C3F5288CEC2B5141E17A14CE1E3055413D0AD753E72B514152B81E45183055413D0AD7C3E42B5141713D0A7716305541A4703D3AC92B5141A4703DEA1230554152B81ED5C52B51411F85EBE11230554152B81EB5C22B5141AE47E15A1130554114AE47A1BE2B5141EC51B8DE0E305541AE47E1FAAB2B514100000060FD2F55417B14AE87A92B51411F85EBD1FA2F55415C8FC245A12B5141F6285CDFEC2F55413D0AD7539F2B514152B81EA5E82F5541A4703DBA942B5141CDCCCCDCD62F5541D7A3703D942B514133333323D72F5541000000B0922B5141B81E850BD82F554100000060952B514133333393DE2F55411F85EB21972B514152B81ED5E12F554166666666992B5141C3F528FCE42F5541D7A370CD9C2B514148E17A04EB2F5541CDCCCCDCA12B514100000090F42F55410AD7A3D0A22B5141EC51B82EF82F5541C3F5283CA92B51419A9999D90430554133333323AA2B514100000010073055415C8FC265AD2B5141295C8F720A305541E17A144EB22B51410AD7A3800D305541CDCCCC0CB72B51419A9999B90F30554133333383BB2B514114AE47211230554185EB51E8C22B514100000060183055417B14AEC7C52B514185EB515819305541295C8FC2CA2B514114AE47211A30554114AE4711D62B5141000000B01D305541
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000001F85EB21972B514152B81ED5E12F554166666666992B5141C3F528FCE42F5541D7A370CD9C2B514148E17A04EB2F5541CDCCCCDCA12B514100000090F42F55410AD7A3D0A22B5141EC51B82EF82F5541C3F5283CA92B51419A9999D90430554133333323AA2B514100000010073055415C8FC265AD2B5141295C8F720A305541E17A144EB22B51410AD7A3800D305541CDCCCC0CB72B51419A9999B90F30554133333383BB2B514114AE47211230554185EB51E8C22B514100000060183055417B14AEC7C52B514185EB515819305541295C8FC2CA2B514114AE47211A3055416B4B0AF1D12B5141FE24B1631C30554114AE4711D62B5141000000B01D305541A9B719C5DA2B5141CD85562E1E3055411F85EB11DB2B5141666666361E30554152B81E75E62B5141B81E857B213055410AD7A310E72B514185EB51982230554114AE47A1EB2B5141C3F5280C1F305541C3F5288CEC2B5141E17A14CE1E3055413D0AD753E72B514152B81E45183055413D0AD7C3E42B5141713D0A7716305541A4703D3AC92B5141A4703DEA1230554152B81ED5C52B51411F85EBE11230554152B81EB5C22B5141AE47E15A1130554114AE47A1BE2B5141EC51B8DE0E305541AE47E1FAAB2B514100000060FD2F55417B14AE87A92B51411F85EBD1FA2F55415C8FC245A12B5141F6285CDFEC2F55413D0AD7539F2B514152B81EA5E82F55411EA316829C2B5141164B50EAE32F55412320A3A49A2B5141921C58C9E02F55412197D7AB982B5141E5BA807ADD2F5541BB8B5708972B5141AD71C0BADA2F55418D3A12EF942B5141B3E86D35D72F5541A4703DBA942B5141CDCCCCDCD62F5541000000B0922B5141B81E850BD82F5541F641EE15952B514168933ADFDD2F554100000060952B514133333393DE2F55411F85EB21972B514152B81ED5E12F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423022 - 923030
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000021000000C6D7CFF0A2105141D5F034A3EFF45441EA47479AA010514130FD3B19F1F454419A9999F99E1051417B14AE07F2F45441E17A147E96105141295C8FC2F7F4544152B81EA590105141AE47E11AF8F4544152B81E558C1051417B14AE97FCF45441D7A370ED8D10514166666616FFF45441E17A145E8F10514152B81EB501F554413D0AD7938F105141AE47E12A02F554418FC2F568971051415C8FC2E503F55441333333D39D105141CDCCCCFC04F55441B81E85BBA31051416666668605F55441A4703DBAAC105141E17A14CE05F554418FC2F5F8B01051413D0AD7D304F55441713D0A47B7105141C3F5287C04F55441A4703D5ABD1051413D0AD7D304F55441AE47E1CAC0105141C3F5287C04F55441AE47E1EAC41051413D0AD77303F55441E17A149EC910514114AE478101F55441713D0A87D11051410AD7A3C0FEF4544152B81E25D7105141AE47E13AFCF45441713D0A07DC1051411F85EBE1F9F454411F85EB31D51051417B14AE27F6F45441713D0AC7CE105141A4703D5AF5F45441B81E85ABC7105141D7A3704DF7F45441D7A3700DC2105141A4703D5AF5F45441F6285C6FBC1051417B14AEB7F2F45441206A1D14BC1051416B723966EEF454415B07B198B9105141ED6D5749EEF45441923F6793B4105141F364930FEEF454417C225769AD1051417560B1F2EDF45441F8E51875A5105141B4622201EEF45441C6D7CFF0A2105141D5F034A3EFF45441
+</a>
+
+<b>
+0106000000020000000103000000010000001A00000004613577A5105141688D1E01EEF454417C225769AD1051417560B1F2EDF45441923F6793B4105141F364930FEEF454415B07B198B9105141ED6D5749EEF45441F7643E13BC105141464F2F66EEF45441E693953EBC1051410372DD99EDF454416106191FBF10514199766C48E7F45441B94957D0C01051412A84BF30E1F454419E762BF1C1105141310D5A33DEF4544133333333C41051418FC2F5D8D7F45441593E8385C4105141F5BEAD84D3F4544171C6727AC41051416C26BA80D3F45441CAD91E3CC3105141674CFD69D3F454417D0077BFC0105141674CFD69D3F454418F14381BBD1051414698833CD3F4544120CADB7CB810514156724053D3F45441C3593CF5B3105141BA422709D4F45441228A6AD9B01051417DBDB18BD5F45441AE228C18AE1051415B12F924D7F45441F4F6086FAB1051417D210047D8F454417CE96218AB105141D5643EF8D9F45441E6A3B358A91051411F9647A4E1F4544163A89575A9105141B4499827E6F45441AE47E19AA8105141EC51B86EE9F45441DC479A08A7105141915B7309EDF4544104613577A5105141688D1E01EEF4544101030000000100000005000000C6D7CFF0A2105141D5F034A3EFF4544126D4B14CA510514137EF591BEEF45441DA741BBBA1105141C3DD0D4FF0F454418737DDA4A110514147A6A472F0F45441C6D7CFF0A2105141D5F034A3EFF45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923030 - 423022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000001A00000004613577A5105141688D1E01EEF454417C225769AD1051417560B1F2EDF45441923F6793B4105141F364930FEEF454415B07B198B9105141ED6D5749EEF45441F7643E13BC105141464F2F66EEF45441E693953EBC1051410372DD99EDF454416106191FBF10514199766C48E7F45441B94957D0C01051412A84BF30E1F454419E762BF1C1105141310D5A33DEF4544133333333C41051418FC2F5D8D7F45441593E8385C4105141F5BEAD84D3F4544171C6727AC41051416C26BA80D3F45441CAD91E3CC3105141674CFD69D3F454417D0077BFC0105141674CFD69D3F454418F14381BBD1051414698833CD3F4544120CADB7CB810514156724053D3F45441C3593CF5B3105141BA422709D4F45441228A6AD9B01051417DBDB18BD5F45441AE228C18AE1051415B12F924D7F45441F4F6086FAB1051417D210047D8F454417CE96218AB105141D5643EF8D9F45441E6A3B358A91051411F9647A4E1F4544163A89575A9105141B4499827E6F45441AE47E19AA8105141EC51B86EE9F45441DC479A08A7105141915B7309EDF4544104613577A5105141688D1E01EEF4544101030000000100000005000000C6D7CFF0A2105141D5F034A3EFF4544126D4B14CA510514137EF591BEEF45441DA741BBBA1105141C3DD0D4FF0F454418737DDA4A110514147A6A472F0F45441C6D7CFF0A2105141D5F034A3EFF45441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C6D7CFF0A2105141D5F034A3EFF45441EA47479AA010514130FD3B19F1F454419A9999F99E1051417B14AE07F2F45441E17A147E96105141295C8FC2F7F4544152B81EA590105141AE47E11AF8F4544152B81E558C1051417B14AE97FCF45441D7A370ED8D10514166666616FFF45441E17A145E8F10514152B81EB501F554413D0AD7938F105141AE47E12A02F554418FC2F568971051415C8FC2E503F55441333333D39D105141CDCCCCFC04F55441B81E85BBA31051416666668605F55441A4703DBAAC105141E17A14CE05F554418FC2F5F8B01051413D0AD7D304F55441713D0A47B7105141C3F5287C04F55441A4703D5ABD1051413D0AD7D304F55441AE47E1CAC0105141C3F5287C04F55441AE47E1EAC41051413D0AD77303F55441E17A149EC910514114AE478101F55441713D0A87D11051410AD7A3C0FEF4544152B81E25D7105141AE47E13AFCF45441713D0A07DC1051411F85EBE1F9F454411F85EB31D51051417B14AE27F6F45441713D0AC7CE105141A4703D5AF5F45441B81E85ABC7105141D7A3704DF7F45441D7A3700DC2105141A4703D5AF5F45441F6285C6FBC1051417B14AEB7F2F45441206A1D14BC1051416B723966EEF454415B07B198B9105141ED6D5749EEF45441923F6793B4105141F364930FEEF454417C225769AD1051417560B1F2EDF45441F8E51875A5105141B4622201EEF45441C6D7CFF0A2105141D5F034A3EFF45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>680321 - 2947030
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000050FCCC997CCA50414DFC20146D8C5441E5726E54B8CA5041B38F0364588C5441225C9D99B8CA50410CFCDB40558C5441356AA167B8CA5041D46A0ACC528C5441A65E6E3DB8CA504126FCCEFC508C54413B87D466B7CA504170B3D0E34D8C54411FC31A18B7CA504192780FCA4C8C5441AE47E16AB5CA5041EC51B81E488C5441C3F528FCB3CA504114AE4721448C544114AE47E1B1CA5041EC51B81E3D8C54419A999999B1CA5041333333033B8C5441AE47E1DA70CA5041A4703D6A518C544150FCCC997CCA50414DFC20146D8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E1BA78CA5041EC51B8EE638C5441E17A149E7CCA504152B81E156D8C54413D0AD753B8CA5041AE47E16A588C5441A4703D9AB8CA50419A999939558C54413D0AD743B8CA504148E17A14518C5441D7A3707DB7CA50417B14AE374E8C544133333323B7CA50418FC2F5E84C8C5441AE47E16AB5CA5041EC51B81E488C54413D0AD73376CA5041D7A370FD5D8C5441AE47E1BA78CA5041EC51B8EE638C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>680321 - 3204243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000050FCCC997CCA50414DFC20146D8C5441E5726E54B8CA5041B38F0364588C5441225C9D99B8CA50410CFCDB40558C5441356AA167B8CA5041D46A0ACC528C5441A65E6E3DB8CA504126FCCEFC508C54413B87D466B7CA504170B3D0E34D8C54411FC31A18B7CA504192780FCA4C8C5441AE47E16AB5CA5041EC51B81E488C5441C3F528FCB3CA504114AE4721448C544114AE47E1B1CA5041EC51B81E3D8C54419A999999B1CA5041333333033B8C5441AE47E1DA70CA5041A4703D6A518C544150FCCC997CCA50414DFC20146D8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E1BA78CA5041EC51B8EE638C5441E17A149E7CCA504152B81E156D8C54413D0AD753B8CA5041AE47E16A588C5441A4703D9AB8CA50419A999939558C54413D0AD743B8CA504148E17A14518C5441D7A3707DB7CA50417B14AE374E8C544133333323B7CA50418FC2F5E84C8C5441AE47E16AB5CA5041EC51B81E488C54413D0AD73376CA5041D7A370FD5D8C5441AE47E1BA78CA5041EC51B8EE638C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>906430 - 31733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000CDCCCC4CD5C05041D7A370CDE50F554148E17A44DEC0504152B81EB5E50F554100000020DEC05041C3F528CCE40F554185EB51F8DCC05041F6285C1FDF0F5541AE47E19ACFC050415C8FC255E10F5541EC51B82EC9C05041295C8F92E20F5541F6285C0FC1C0504100000030E30F5541C3F528BCC0C05041A4703DDAE70F554133333383C8C05041B81E85FBE60F5541EC51B84ECEC0504152B81E55E60F5541CDCCCC4CD5C05041D7A370CDE50F5541
+</a>
+
+<b>
+010600000001000000010300000001000000080000007C480F08CCC0504156777996E60F5541EC51B84ECEC0504152B81E55E60F554118C30F7BD2C050415FFF2404E60F5541FC2096E6D4C05041002563CCE50F5541380F12CAD7C05041FE48A2B5E50F55411F75E696D6C05041E8F897A4E40F55416FAC153CCEC05041F7D89E5AE50F55417C480F08CCC0504156777996E60F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>928250 - 928272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002B0000001037A4941CDB5041D85AA7EC5CF2544109ED2FC41EDB5041ED42CFA557F2544158003D6021DB50418C9C035951F25441F1D345D123DB5041128311744BF254419C8676B224DB50418B2E6B5449F254419979793823DB5041A6BC4FE948F25441689FC03D20DB50419EED306A48F25441BB2C97821DDB5041DC39694A48F254419BF01B861BDB50411A86A12A48F254413599492A19DB504112B782AB47F254416247440C18DB5041C4CC0CCD46F254411C2CEDAC17DB504138965E0E46F25441DEDFB4CC17DB504155A61BF243F25441A8629B6B18DB504190C695B93FF254413599492A19DB5041DC844D7F3CF254417BB4A08919DB5041A3DB750539F25441D90C837519DB50412FD85FEA33F254414DE2BB2918DB5041260ED3E233F254415557DD4B17DB504199B285E633F254410478C7AD15DB504152766CED33F254416A2EBD9311DB504137A2ECFE33F2544182E1D0C60EDB5041FE06A83A34F25441E0D91A530ADB5041A71CE3B934F25441EC17119903DB5041B996508635F25441B46D87B3FEDA50418023201B36F25441ADC257F7F6DA5041BAD8320637F25441066C1564F0DA504146D005CE37F254419ECC8542ECDA5041AEBCB15F38F25441FB1F4A55E7DA50412BFF3D0E3AF25441A855BB61E5DA50414AD633953BF254418A24ED23E4DA5041672A203A3DF25441732C1513E3DA5041100E09133FF2544195A4E340E2DA5041687701D640F2544129025D8EE1DA5041097F9DAB43F25441D511D27CE0DA5041A52DF17E48F25441943C9B98DFDA50410F3B10D64CF25441A8E0D9FBDDDA5041F70BACAF54F25441D003FE5003DB50412D05B90C59F25441BBC25FEC05DB50417320106C59F25441904023230BDB50410057BE2A5AF254417D2B43D711DB50414E4134095BF25441420BC90F16DB5041DA77E2C75BF254411037A4941CDB5041D85AA7EC5CF25441
+</a>
+
+<b>
+010600000001000000010300000001000000210000009FC8237E19DB5041FBA8F9615CF25441410BC90F16DB5041DA77E2C75BF254412B7D697B14DB5041B94F86805BF254412728248810DB5041A832C3DD5AF2544128E7214710DB504161DE55D55AF2544186DE8CFC0CDB5041A09F1C685AF254418C4023230BDB5041FE56BE2A5AF2544128F255370ADB504182B90E095AF254414275E09F07DB5041621547AA59F254413C495DD004DB5041D07C7D4359F25441B7E1BD7A04DB5041E124423759F2544199CE4DF400DB5041FCC60BC658F2544142695DE6F0DA504131D1ABE556F2544185457763E8DA50414CABFFE655F254414AAEB897E2DA50412FA8933955F25441CD0DEBF0DDDA50419CDCE6E454F2544115A738A2DDDA50412CF50E6456F25441B236B446DADA5041FEA0CCBC66F254411564B429D8DA50413CCABC0671F25441E8BEAD21D7DA5041738351B876F2544193D2DFD8ECDA5041FAA497B178F2544189E9EE5AFEDA5041BF32F7487AF25441BDAD6A690DDB504100774CA77BF25441E6A6B01416DB5041FC35AE417CF254410534187A16DB50413DD286507AF2544175A3EDD516DB504150914B8E78F2544137C6467917DB50414F81736D75F25441E207EBAC18DB504125CC1F896FF25441A51CDBD719DB5041D2555DCF69F254413981E93A1BDB5041399A710263F2544116D5FC051CDB504104FFB71E5FF254416DC471641CDB504109CF32E45CF254419FC8237E19DB5041FBA8F9615CF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 1233869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB5544114AE47D16C7F51415C8FC245D0B55441333333C36B7F5141000000C0D1B55441A4703D5A6B7F514133333353D2B5544185EB5128667F5141A4703DDADBB55441D7A370DD627F514148E17A94DFB5544185EB51C85E7F5141AE47E15AE5B55441000000105E7F5141AE47E16AE6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB554411F85EBF15F7F5141713D0A57EEB5544104AD6ACAA67F5141B2774844C4B55441333333A3A57F5141C3F528BCC3B55441713D0A87A37F5141C3F528ACC2B55441CDCCCC8CA27F5141B81E852BC2B55441EC51B8BE9F7F5141AE47E1BAC0B55441D7A3705D9D7F514152B81EE5BEB55441000000109B7F514185EB51D8BCB554411F85EBE1987F5141713D0A67BAB55441AE47E1EA967F514114AE47B1B7B554415FC3804F967F514114599BE7B6B55441426AC409957F5141CF6E401AB6B5544154621ABF917F51413C62A83DB6B554417B14AE978F7F51419A9999F9B5B55441
+</a>
+
+<b>
+0106000000010000000103000000010000003900000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B5544131C64F719D7F51416FF170F4BEB5544155E2F6109B7F5141D9BA2DD9BCB554416689A90A997F51412A2AB094BAB55441890FC75C987F5141892C6BAFB9B55441714DECE9967F5141784CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B554415FDD6532947F5141B2024D23B6B55441E426727C937F51413524F22AB6B55441D20AE17E927F5141A675E52FB6B55441515F1CA3917F5141A8F0333AB6B55441914DACA4907F5141FDB6CC1AB6B554417B14AE978F7F51419A9999F9B5B554414276C1078B7F51412A0046AFB8B55441A427D74E887F5141EBCAE34CBAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554415EADE6797A7F51410006FA91C3B55441B6F65FEF787F51413133E0C5C4B55441A4703D9A777F5141333333C3C5B55441B74B7651777F5141EAEB162FC7B554417387E6DE767F5141B73FFA0DC9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554417E18A50D737F5141F1074DBFCDB55441F6C4275F717F51415D56BE3DCEB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441028B91D76C7F5141B35A8143D0B55441A4703D5A6B7F514133333353D2B554411ED78C47697F5141E7CD7820D6B5544185EB5128667F5141A4703DDADBB55441F0B465D6627F5141D22CFBA6DFB55441D4E7110A5F7F51411A2FDFFDE4B55441EEFF8A125E7F5141759A2067E6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB55441C17732F05F7F5141AE128253EEB55441BD773270637F5141BDE92504ECB554414C96B73B677F51412BA24489E9B5544141BF13CB687F51419BDF4E80E8B55441230B3D746A7F51417AD4CA6FE7B554414FDC5A916A7F5141E287315AE7B5544129E5FBBE6E7F51413E7B4DA0E4B5544109C8D3846F7F51410FD0BF1EE4B55441611A67C9757F5141709F4B08E0B55441F685692D807F514152421537D9B5544167A38A94837F51417FA82EF6D6B5544111E2ED348B7F51416D8C80E5D1B5544177DB030F8C7F5141BC04A954D1B55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 3597022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB5544114AE47D16C7F51415C8FC245D0B55441333333C36B7F5141000000C0D1B55441A4703D5A6B7F514133333353D2B5544185EB5128667F5141A4703DDADBB55441D7A370DD627F514148E17A94DFB5544185EB51C85E7F5141AE47E15AE5B55441000000105E7F5141AE47E16AE6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB554411F85EBF15F7F5141713D0A57EEB5544104AD6ACAA67F5141B2774844C4B55441333333A3A57F5141C3F528BCC3B55441713D0A87A37F5141C3F528ACC2B55441CDCCCC8CA27F5141B81E852BC2B55441EC51B8BE9F7F5141AE47E1BAC0B55441D7A3705D9D7F514152B81EE5BEB55441000000109B7F514185EB51D8BCB554411F85EBE1987F5141713D0A67BAB55441AE47E1EA967F514114AE47B1B7B554415FC3804F967F514114599BE7B6B55441426AC409957F5141CF6E401AB6B5544154621ABF917F51413C62A83DB6B554417B14AE978F7F51419A9999F9B5B55441
+</a>
+
+<b>
+0106000000010000000103000000010000003700000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B554412CC64F719D7F514172F170F4BEB5544151E2F6109B7F5141DBBA2DD9BCB554416789A90A997F51412B2AB094BAB55441870FC75C987F5141862C6BAFB9B55441724DECE9967F51417A4CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B5544160DD6532947F5141B7024D23B6B55441E526727C937F51413324F22AB6B55441CE0AE17E927F5141A975E52FB6B55441565F1CA3917F5141ACF0333AB6B554418F4DACA4907F5141FBB6CC1AB6B554417B14AE978F7F51419A9999F9B5B554413D76C1078B7F51412D0046AFB8B55441A027D74E887F5141EECAE34CBAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B5544163ADE6797A7F51410006FA91C3B55441B2F65FEF787F51413433E0C5C4B55441A4703D9A777F5141333333C3C5B55441B24B7651777F5141EEEB162FC7B554417887E6DE767F5141B33FFA0DC9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418318A50D737F5141EE074DBFCDB55441F6C4275F717F51415D56BE3DCEB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441FD8A91D76C7F5141AF5A8143D0B55441A4703D5A6B7F514133333353D2B554411BD78C47697F5141E3CD7820D6B5544185EB5128667F5141A4703DDADBB55441F1B465D6627F5141D12CFBA6DFB55441D6E7110A5F7F51411A2FDFFDE4B55441EDFF8A125E7F5141759A2067E6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB554411F85EBF15F7F5141713D0A57EEB55441B34D603D677F5141E833A08AE9B554411E0B3D746A7F514177D4CA6FE7B554414FDC5A916A7F5141E287315AE7B5544126E5FBBE6E7F5141397B4DA0E4B5544109C8D3846F7F51410FD0BF1EE4B55441611A67C9757F5141709F4B08E0B55441F785692D807F514150421537D9B5544167A38A94837F51417FA82EF6D6B5544111E2ED348B7F51416D8C80E5D1B5544177DB030F8C7F5141BC04A954D1B55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 256681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB5544114AE47D16C7F51415C8FC245D0B55441333333C36B7F5141000000C0D1B55441A4703D5A6B7F514133333353D2B5544185EB5128667F5141A4703DDADBB55441D7A370DD627F514148E17A94DFB5544185EB51C85E7F5141AE47E15AE5B55441000000105E7F5141AE47E16AE6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB554411F85EBF15F7F5141713D0A57EEB5544104AD6ACAA67F5141B2774844C4B55441333333A3A57F5141C3F528BCC3B55441713D0A87A37F5141C3F528ACC2B55441CDCCCC8CA27F5141B81E852BC2B55441EC51B8BE9F7F5141AE47E1BAC0B55441D7A3705D9D7F514152B81EE5BEB55441000000109B7F514185EB51D8BCB554411F85EBE1987F5141713D0A67BAB55441AE47E1EA967F514114AE47B1B7B554415FC3804F967F514114599BE7B6B55441426AC409957F5141CF6E401AB6B5544154621ABF917F51413C62A83DB6B554417B14AE978F7F51419A9999F9B5B55441
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B5544131C64F719D7F51416FF170F4BEB5544155E2F6109B7F5141D9BA2DD9BCB554416689A90A997F51412A2AB094BAB55441890FC75C987F5141892C6BAFB9B55441714DECE9967F5141784CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B554415FDD6532947F5141B2024D23B6B55441E426727C937F51413524F22AB6B55441D20AE17E927F5141A675E52FB6B55441515F1CA3917F5141A8F0333AB6B55441914DACA4907F5141FDB6CC1AB6B554417B14AE978F7F51419A9999F9B5B554414276C1078B7F51412A0046AFB8B55441A427D74E887F5141EBCAE34CBAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554415EADE6797A7F51410006FA91C3B55441B6F65FEF787F51413133E0C5C4B55441A4703D9A777F5141333333C3C5B55441B74B7651777F5141EAEB162FC7B554417387E6DE767F5141B73FFA0DC9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554417E18A50D737F5141F1074DBFCDB55441F6C4275F717F51415D56BE3DCEB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441028B91D76C7F5141B35A8143D0B55441A4703D5A6B7F514133333353D2B554411ED78C47697F5141E7CD7820D6B5544185EB5128667F5141A4703DDADBB55441F0B465D6627F5141D22CFBA6DFB55441D4E7110A5F7F51411A2FDFFDE4B55441EEFF8A125E7F5141759A2067E6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB55441C27732F05F7F5141AA128253EEB55441827932F05F7F514186118253EEB55441BD773270637F5141BDE92504ECB554414C96B73B677F51412BA24489E9B5544141BF13CB687F51419BDF4E80E8B55441230B3D746A7F51417AD4CA6FE7B554414FDC5A916A7F5141E287315AE7B5544129E5FBBE6E7F51413E7B4DA0E4B5544109C8D3846F7F51410FD0BF1EE4B55441611A67C9757F5141709F4B08E0B55441F685692D807F514152421537D9B5544167A38A94837F51417FA82EF6D6B5544111E2ED348B7F51416D8C80E5D1B5544177DB030F8C7F5141BC04A954D1B55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 398677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB5544114AE47D16C7F51415C8FC245D0B55441333333C36B7F5141000000C0D1B55441A4703D5A6B7F514133333353D2B5544185EB5128667F5141A4703DDADBB55441D7A370DD627F514148E17A94DFB5544185EB51C85E7F5141AE47E15AE5B55441000000105E7F5141AE47E16AE6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB554411F85EBF15F7F5141713D0A57EEB5544104AD6ACAA67F5141B2774844C4B55441333333A3A57F5141C3F528BCC3B55441713D0A87A37F5141C3F528ACC2B55441CDCCCC8CA27F5141B81E852BC2B55441EC51B8BE9F7F5141AE47E1BAC0B55441D7A3705D9D7F514152B81EE5BEB55441000000109B7F514185EB51D8BCB554411F85EBE1987F5141713D0A67BAB55441AE47E1EA967F514114AE47B1B7B554415FC3804F967F514114599BE7B6B55441426AC409957F5141CF6E401AB6B5544154621ABF917F51413C62A83DB6B554417B14AE978F7F51419A9999F9B5B55441
+</a>
+
+<b>
+0106000000010000000103000000010000003700000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B5544131C64F719D7F51416FF170F4BEB5544155E2F6109B7F5141D9BA2DD9BCB554416689A90A997F51412A2AB094BAB55441890FC75C987F5141892C6BAFB9B55441714DECE9967F5141784CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B554415FDD6532947F5141B2024D23B6B55441E426727C937F51413524F22AB6B55441D20AE17E927F5141A675E52FB6B55441515F1CA3917F5141A8F0333AB6B55441914DACA4907F5141FDB6CC1AB6B554417B14AE978F7F51419A9999F9B5B554414276C1078B7F51412A0046AFB8B55441A427D74E887F5141EBCAE34CBAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554415EADE6797A7F51410006FA91C3B55441B6F65FEF787F51413133E0C5C4B55441A4703D9A777F5141333333C3C5B55441B74B7651777F5141EAEB162FC7B554417387E6DE767F5141B73FFA0DC9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554417E18A50D737F5141F1074DBFCDB55441F6C4275F717F51415D56BE3DCEB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441028B91D76C7F5141B35A8143D0B55441A4703D5A6B7F514133333353D2B554411ED78C47697F5141E7CD7820D6B5544185EB5128667F5141A4703DDADBB55441F0B465D6627F5141D22CFBA6DFB55441D4E7110A5F7F51411A2FDFFDE4B55441EEFF8A125E7F5141759A2067E6B55441F6285C6F5C7F51410AD7A3D0E8B55441333333635E7F5141295C8F92E8B55441E17A14AE5E7F5141666666C6EBB554411F85EBF15F7F5141713D0A57EEB55441B34D603D677F5141E833A08AE9B55441230B3D746A7F51417AD4CA6FE7B554414FDC5A916A7F5141E287315AE7B5544129E5FBBE6E7F51413E7B4DA0E4B5544109C8D3846F7F51410FD0BF1EE4B55441611A67C9757F5141709F4B08E0B55441F685692D807F514152421537D9B5544167A38A94837F51417FA82EF6D6B5544111E2ED348B7F51416D8C80E5D1B5544177DB030F8C7F5141BC04A954D1B55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>433171 - 329130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F0000000AD7A3A013D850410AD7A3E0009254419A99997924D85041295C8FB200925441E17A142E33D85041295C8F62EC915441CDCCCC8C35D85041A4703D5AE79154410AD7A32038D8504152B81E35DD9154417B14AEE73BD85041C3F5289CC89154411F85EBF13CD8504166666696C2915441C3F5281C00D85041D7A3701DBC915441333333A300D85041000000D0BD915441D7A370BD0DD85041EC51B8EEE1915441000000400FD850418FC2F588E2915441000000F010D85041AE47E11AE79154410000007011D85041333333A3EA9154419A99995912D850415C8FC245F49154410AD7A3A013D850410AD7A3E000925441
+</a>
+
+<b>
+01060000000100000001030000000200000021000000E17A142E33D85041295C8F62EC9154414F0DE58533D850410DB717A8EB9154418CCCCC8C35D85041A4703D5AE7915441BFAB70BF37D85041CA7CB2B3DE9154410AD7A32038D8504152B81E35DD915441490C977738D85041C85F025BDB915441DB7DF56733D85041A1F01D20DB915441BAB7075031D85041971251ECDC9154418A8957892ED85041FBC1CC2EDC915441D1E84E0E2DD8504167E4A025DA91544165C67A172FD8504112F313EDD79154410AF42ADE31D8504112F313EDD79154410181D22933D85041BC6B5A09D99154415A9A21C135D85041BC6B5A09D99154412029FFD538D85041D4603D58D99154415B14AEE73BD8504198F5289CC8915441EB7E2B633CD85041C8EC0BD1C59154411F85EBF13CD8504166666696C2915441C3F5281C00D85041D7A3701DBC915441333333A300D85041000000D0BD915441D7A370BD0DD85041EC51B8EEE1915441242CE29D0ED8504186414648E29154410B0000400FD850416FC2F588E2915441000000F010D850418E47E11AE79154412000007011D85041333333A3EA915441AF0A5E3A12D85041163AFAFBF29154419A99995912D850415C8FC245F4915441CD07078212D850411AA4A7D4F59154412AD7A3A013D850410AD7A3E00092544126DCB5BE13D85041009851E000925441C599997924D85041E95B8FB200925441DC25CEE427D8504171359CF9FB915441E17A142E33D85041295C8F62EC91544108000000F345EF2222D850415E714871DB9154410204DE2C1FD85041A862D5A9DD91544181990AD81BD850415826B21BDD91544187E4A02D1AD85041B3F80155DA91544181990AD81BD85041C2B6F05ED7915441B2C7BA9E1ED8504175A28F2FD7915441651D2DC421D85041AB1BD64BD8915441F345EF2222D850415E714871DB915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918056 - 3408548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000026000000333333035C97504166666676191A54410AD7A3E0599750411F85EBF1171A5441333333D3569750411F85EBE1151A54419A9999C95597504185EB51E8141A5441A4703D1A56975041CDCCCC2C171A5441EC51B86E559750413D0AD7B3191A5441666666F6549750419A9999791B1A5441AE47E13A50975041D7A3704D1C1A5441B81E85DB4B9750410AD7A3101D1A5441AE47E10A4B97504152B81E351D1A5441AE47E12A4B975041000000901D1A5441EC51B85E4C97504148E17AF4201A54418FC2F50850975041713D0A17241A54417B14AED756975041E17A14CE271A5441D7A3703D62975041E17A14DE2D1A5441AE47E17A5F975041713D0A172C1A54413D0AD7035E97504152B81E252B1A54413D0AD7835C9750411F85EB112A1A5441B81E85DB579750413D0AD733271A54410000000056975041F6285CFF251A5441D7A370FD549750417B14AE47251A5441B81E850B54975041CDCCCC3C241A54419A9999D95397504185EB5108231A5441B81E854B5397504133333353231A54417B14AEE752975041C3F5286C231A5441295C8F725297504133333353231A5441D7A370ED51975041713D0AE7221A5441AE47E1BA51975041B81E858B221A5441295C8FB251975041EC51B81E221A5441295C8FB25197504114AE4791211A5441CDCCCCDC5197504148E17A24211A54411F85EB615297504185EB51B8201A54411F85EB2153975041CDCCCC6C201A5441EC51B89E53975041713D0A97201A54413D0AD71354975041A4703DEA201A54410AD7A3D056975041EC51B87E1D1A54418FC2F5A857975041CDCCCC1C1E1A5441333333035C97504166666676191A5441
+</a>
+
+<b>
+0106000000010000000103000000010000006800000038754A065F9750410283D5CB2B1A54413D0AD7035E97504152B81E252B1A54413D0AD7835C9750411F85EB112A1A5441B81E85DB579750413D0AD733271A54410000000056975041F6285CFF251A5441D7A370FD549750417B14AE47251A5441B81E850B54975041CDCCCC3C241A54419A9999D95397504185EB5108231A5441B81E854B5397504133333353231A54417B14AEE752975041C3F5286C231A5441295C8F725297504133333353231A5441D7A370ED51975041713D0AE7221A5441AE47E1BA51975041B81E858B221A5441295C8FB251975041EC51B81E221A5441295C8FB25197504114AE4791211A5441CDCCCCDC5197504148E17A24211A54411F85EB615297504185EB51B8201A54411F85EB2153975041CDCCCC6C201A5441EC51B89E53975041713D0A97201A54413D0AD71354975041A4703DEA201A54410AD7A3D056975041EC51B87E1D1A54418FC2F5A857975041CDCCCC1C1E1A5441333333035C97504166666676191A54416E4C4F035C975041731C8B84181A5441819A35C75797504191C82561151A5441E19DFA18579750419EFFE697181A54410023A213569750414A4F49BA191A54410023A213569750411645FAC41B1A5441B599F71755975041F6B4C5251C1A5441342DF10854975041208D94941B1A5441AE47E13A50975041D7A3704D1C1A5441B81E85DB4B9750410AD7A3101D1A5441AE47E10A4B97504152B81E351D1A5441AE47E12A4B975041000000901D1A5441EC51B85E4C97504148E17AF4201A54418FC2F50850975041713D0A17241A54417B14AED756975041E17A14CE271A5441D7A3703D62975041E17A14DE2D1A5441D00598B860975041AA7097E32C1A5441FFBA0D1D60975041B36AC47F2C1A5441D54BC2C65F975041FF5462482C1A5441CB4BBEB05F9750419B32413A2C1A5441AE47E17A5F975041713D0A172C1A5441811115175F975041E855AAD62B1A5441B6F49D955F975041893009402B1A544100DEA5DD60975041C7AD95332C1A54417B14AEF76297504152B81E652D1A54410AD7A32066975041000000402F1A544148E17A44689750415C8FC295301A5441EC51B86E689750419A999929311A5441D7A3706D6697504185EB5118301A54410000004066975041666666D63B1A54419A99992966975041B81E852B481A544114AE4741659750411F85EB514B1A54413D0AD78363975041CDCCCCAC501A54417B14AEE762975041E17A143E531A5441D7A370CD629750411F85EBF1551A54411F85EBD16297504185EB5198571A5441A4703DAA62975041AE47E12A581A5441EC51B88E629750418FC2F518591A54415C8FC2D562975041C3F528DC5B1A5441F6285C0F63975041EC51B86E5D1A5441A4703D5A63975041CDCCCCAC5E1A5441C3F528FC6397504166666656601A5441B81E85BB649750419A9999D9611A5441AE47E16A659750418FC2F5F8621A5441D7A3702D66975041D7A3701D631A544114AE4761679750419A9999F9631A5441295C8F1269975041EC51B8EE641A5441000000C06E975041F6285C4F661A5441713D0A37729750410AD7A360681A5441CDCCCC6C739750410AD7A360691A544148E17AD474975041C3F528CC6A1A5441AE47E1AA75975041713D0A876B1A54419A9999997B975041D7A370AD6E1A544185EB51487E9750419A9999796F1A54419A9999298397504185EB5198701A5441F6285C4F89975041F6285CDF721A5441E17A140E8E97504166666646751A54419A9999D990975041EC51B85E741A5441C3F5287C9397504148E17A84731A5441A4703D0A97975041A4703DAA711A5441E17A142E979750417B14AE97711A5441AE47E10A9B97504148E17AA46F1A54410AD7A3509F975041D7A3702D6C1A54413D0AD733A197504185EB5158661A54419A999999A29750417B14AEB7611A544166666696A5975041AE47E12A561A5441CDCCCCFCA6975041CDCCCC4C501A54413D0AD753A99750413D0AD763471A54419A9999B998975041666666963E1A544114AE47118F975041A4703D5A391A5441295C8FA284975041AE47E1CA331A544152B81E257A975041A4703D0A2E1A5441000000206C975041E17A140E261A5441713D0A276B975041D7A3707D251A544158A818EC679750412AB5CBBA221A54410333B2E7649750416AAB0AFF271A54416E4B26A0619750410C193437261A544148E17AD45E9750410AD7A3B02A1A5441990B27455F9750413C634B042B1A5441E8DC328E5F975041ED31873A2B1A5441CE891F0E5F9750412AE4E2D02B1A544138754A065F9750410283D5CB2B1A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960708 - 217524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000200000001030000000100000084000000F9605FBBBFF55041F4879E6542BA54413FF68E8CD0F550410C9A517749BA5441DB7AE442D2F5504127A28D3444BA5441F6285C1FD7F55041EC51B8CE34BA5441E17A14BEDDF55041713D0A5727BA5441CDCCCCACECF55041CDCCCC0C02BA5441A8623A80EEF5504171738906FBB954416587DCBDEFF55041AAB4874FF6B95441ECD3595DF3F55041BC226493EDB95441434B6648F4F550413308D2FCEBB9544142E4DB4CF5F55041CA8D8CEDE9B954416F86FCBDF9F55041904FBD53E3B9544123AB9EFBFAF5504122042A29E2B95441664EA9E101F65041176ACAAFDEB9544191566AD902F65041353FB629DBB95441FB373AE403F650414311697FD6B95441FDD617BCFAF55041240BF736D4B954414AB77817F3F55041BC2CDB15CEB95441C69A1C0CF9F55041AE2C56DBC7B95441F76F8DC0FBF55041F407B49DC6B95441671B599E03F6504191283342C4B9544176ED0BF4FEF55041394D5045BFB954419B281D2FFEF5504113E05301BEB95441F90803C5FCF55041BF022255BAB95441FBA3C778FCF55041D9A18467B7B95441AA60F545FCF5504146ED9257B2B95441E9390459FCF5504134B86E2AAFB95441BFCAB865FCF5504134868321ADB95441F70803C5FCF55041B2D4CA35A9B9544124AC8870FDF55041021902A3A5B95441AD2DA502FEF55041999EBC93A3B9544119F18BF3D6F550410575A66CBBB954418407FBF0D4F550414FE814F9BEB954418B8D0F19D4F55041BCD8953EC2B95441A003A23FD1F55041F71FF459CFB95441C9EFC68CCBF550416EAEB090E9B954413BD01ED7C9F55041DF73AF82FDB95441F2DBEBD9C5F550419364232D0FBA5441EC122E95BFF55041760A7A6921BA544187DFAA2CB8F55041243230CF2CBA5441F4F64432B0F5504166424C2F40BA5441600EDF37A8F55041431FE5264CBA5441BF78A45BA9F55041EB7DDD4751BA5441082C7FCFB0F55041610922A54FBA544152D48C4EB1F55041840CE00357BA5441CB0A20E5B5F5504127C53B635EBA5441A5DF0BA5B9F550411122F43B65BA5441E5497050B9F550414E9607586EBA5441EC122E95BFF55041103450E476BA544106527E00C3F5504145B2F0BA7DBA54411A5971B4C5F5504131E4420184BA5441C7AF79C0C2F550410BD868E58BBA544182D41BFEC3F55041EBD091628DBA5441B81E85FBCAF550410000005092BA5441E6C1228C00F6504156F2D030A6BA5441EC51B8DE04F650419A999969A7BA5441A85F6B1809F65041B45C9654A7BA54410F4CB5B31FF65041C1566A6DA2BA544191CE7F9921F650413BB380C5A2BA54414539301420F65041A9877D58A2BA5441F96BE3EF24F650411FC4C22CA1BA5441754A112E18F65041103B1393A0BA5441B13928CD11F6504118A3990CA0BA5441B3FF75EC0CF65041200B20869FBA5441D9B6F91E08F650417ABD989F9EBA5441E635EAE404F65041AE7EDBA59DBA5441DF93B18A00F650419C5DB2859CBA5441F37A28CAFCF550411E69E72B9BBA54411F69CBF7F3F550415E0BFC0297BA54417170C054EDF55041F8ECE20A94BA5441D9B89380E6F55041BFF1ED2390BA54413DEAFC5FE2F5504152CD2FBD8DBA54412A279BE5DCF550412BD23AD689BA5441C530B117D5F55041BF73CA8E82BA5441041C9604CEF55041BD6BC7667ABA5441FF7D8F5CCAF55041823464F375BA544185EB51D8C5F5504152B81E4570BA54417345534EC0F550415B2D91C467BA54410A38FF33BBF5504176F1BF6F5CBA54414B10AC86B7F550416745C84154BA5441D58367A6B5F550410189905451BA54417B0D4FDAB1F55041C3B71C324CBA54417B418992B2F55041CB20F6DC49BA54410DDD2333B5F550413D04433241BA5441B8B2A86FB7F55041033422413ABA544186A898C8B7F55041B257DA0939BA544109AF4F9ABAF550410C95E98933BA54419D7DE6BABEF5504188ADC9A82BBA54419B667C6EC1F55041FBAE3F7B26BA54410DDC5602C6F55041F38138131BBA54410386D4E9C7F550417F2C2D5F16BA544105B8BFF2C9F550411880FC4612BA5441BCCB1643CBF55041EB5431AB0FBA5441A4703D8ACCF55041E17A143E0DBA544114BA93DCCEF550415792C37006BA5441D7A3706DD3F550417B14AE37F9B95441F6285C5FD2F5504114AE4711F1B95441AB0B994FD2F550413B9C3AF3E6B95441FA4E6B82D2F550418D14AC18E4B9544145F77801D3F5504132D3A35ADCB9544158303B8DD3F550419DEBDCCCD2B95441CE146E95D4F5504118B37DD3D2B954415C8FC295D4F55041E17A14CED2B9544109E1C72AD7F55041F3874CF6D2B95441D2DCF0DFDDF55041256DF95ED3B9544140B04A7FDDF55041DC672F5BCCB95441B4764140E4F550416F09BF13C5B9544188573794E9F55041AF49F2DFC0B954416B083ADBEDF55041D0AF59E5B9B954418F3B7405F0F55041B0461AB5B5B954412326CEB4EDF55041822AE833C6B954412FA5BE7AEAF5504141246748CFB95441AA486DA7E9F55041D2395BC2D1B954411B0F6468F0F5504180EE9BF1E2B954418191E974EEF55041BCA2337FE8B95441E0ABE807EDF550413580948CECB9544175FC239AECF550416001DCAEF2B9544172872AA1EAF55041A52F2101F6B95441AEB0F320E9F550410BEC58EEF8B95441C10C9C52DEF55041D72A16E8F9B95441A4703D7AD4F5504185EB5148F9B95441A51C3370CDF55041F203157E0DBA54419401EB7FCDF55041F500FF840DBA5441713D0A17CEF55041E17A14CE0BBA5441333333E3D5F550411F85EBC10EBA544152B81ED5D4F55041EC51B8BE10BA54411BBB4EACD4F550412F6A920B11BA544185EB5168D0F550413D0AD71319BA5441713D0A07C9F55041AE47E1BA29BA5441666666E6C6F550418FC2F5982EBA5441A4703D4AC3F550417B14AE073BBA5441F9605FBBBFF55041F4879E6542BA5441010300000001000000040000001F69CBF7F3F550415E0BFC0297BA54417A9DC7BCF8F5504161FA362599BA5441ED9E3D8FF3F5504117C7AED196BA54411F69CBF7F3F550415E0BFC0297BA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F9A3C778FCF55041DBA18467B7B95441AA60F545FCF5504143ED9257B2B95441EC390459FCF550412FB86E2AAFB95441C2CAB865FCF5504132868321ADB95441E36A4782FCF55041B644B6F4ABB9544115841D94FCF55041501EF3B9A9B9544180DAA45DFDF5504107C38A65A5B954413720A0B5EDF5504118D184F8AFB954419C3D52A6EFF550411BEF0543B0B95441AF1A6A55F3F55041FAC22F07B1B95441CD422AE8F5F5504186663B13B3B9544115841D94FCF5504158E0D0A6BAB954419E246187FCF55041A7BD14F7B7B95441F9A3C778FCF55041DBA18467B7B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960708 - 395574
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000100000084000000F9605FBBBFF55041F4879E6542BA54413FF68E8CD0F550410C9A517749BA5441DB7AE442D2F5504127A28D3444BA5441F6285C1FD7F55041EC51B8CE34BA5441E17A14BEDDF55041713D0A5727BA5441CDCCCCACECF55041CDCCCC0C02BA5441A8623A80EEF5504171738906FBB954416587DCBDEFF55041AAB4874FF6B95441ECD3595DF3F55041BC226493EDB95441434B6648F4F550413308D2FCEBB9544142E4DB4CF5F55041CA8D8CEDE9B954416F86FCBDF9F55041904FBD53E3B9544123AB9EFBFAF5504122042A29E2B95441664EA9E101F65041176ACAAFDEB9544191566AD902F65041353FB629DBB95441FB373AE403F650414311697FD6B95441FDD617BCFAF55041240BF736D4B954414AB77817F3F55041BC2CDB15CEB95441C69A1C0CF9F55041AE2C56DBC7B95441F76F8DC0FBF55041F407B49DC6B95441671B599E03F6504191283342C4B9544176ED0BF4FEF55041394D5045BFB954419B281D2FFEF5504113E05301BEB95441F90803C5FCF55041BF022255BAB95441FBA3C778FCF55041D9A18467B7B95441AA60F545FCF5504146ED9257B2B95441E9390459FCF5504134B86E2AAFB95441BFCAB865FCF5504134868321ADB95441F70803C5FCF55041B2D4CA35A9B9544124AC8870FDF55041021902A3A5B95441AD2DA502FEF55041999EBC93A3B9544119F18BF3D6F550410575A66CBBB954418407FBF0D4F550414FE814F9BEB954418B8D0F19D4F55041BCD8953EC2B95441A003A23FD1F55041F71FF459CFB95441C9EFC68CCBF550416EAEB090E9B954413BD01ED7C9F55041DF73AF82FDB95441F2DBEBD9C5F550419364232D0FBA5441EC122E95BFF55041760A7A6921BA544187DFAA2CB8F55041243230CF2CBA5441F4F64432B0F5504166424C2F40BA5441600EDF37A8F55041431FE5264CBA5441BF78A45BA9F55041EB7DDD4751BA5441082C7FCFB0F55041610922A54FBA544152D48C4EB1F55041840CE00357BA5441CB0A20E5B5F5504127C53B635EBA5441A5DF0BA5B9F550411122F43B65BA5441E5497050B9F550414E9607586EBA5441EC122E95BFF55041103450E476BA544106527E00C3F5504145B2F0BA7DBA54411A5971B4C5F5504131E4420184BA5441C7AF79C0C2F550410BD868E58BBA544182D41BFEC3F55041EBD091628DBA5441B81E85FBCAF550410000005092BA5441E6C1228C00F6504156F2D030A6BA5441EC51B8DE04F650419A999969A7BA5441A85F6B1809F65041B45C9654A7BA54410F4CB5B31FF65041C1566A6DA2BA544191CE7F9921F650413BB380C5A2BA54414539301420F65041A9877D58A2BA5441F96BE3EF24F650411FC4C22CA1BA5441754A112E18F65041103B1393A0BA5441B13928CD11F6504118A3990CA0BA5441B3FF75EC0CF65041200B20869FBA5441D9B6F91E08F650417ABD989F9EBA5441E635EAE404F65041AE7EDBA59DBA5441DF93B18A00F650419C5DB2859CBA5441F37A28CAFCF550411E69E72B9BBA54411F69CBF7F3F550415E0BFC0297BA54417170C054EDF55041F8ECE20A94BA5441D9B89380E6F55041BFF1ED2390BA54413DEAFC5FE2F5504152CD2FBD8DBA54412A279BE5DCF550412BD23AD689BA5441C530B117D5F55041BF73CA8E82BA5441041C9604CEF55041BD6BC7667ABA5441FF7D8F5CCAF55041823464F375BA544185EB51D8C5F5504152B81E4570BA54417345534EC0F550415B2D91C467BA54410A38FF33BBF5504176F1BF6F5CBA54414B10AC86B7F550416745C84154BA5441D58367A6B5F550410189905451BA54417B0D4FDAB1F55041C3B71C324CBA54417B418992B2F55041CB20F6DC49BA54410DDD2333B5F550413D04433241BA5441B8B2A86FB7F55041033422413ABA544186A898C8B7F55041B257DA0939BA544109AF4F9ABAF550410C95E98933BA54419D7DE6BABEF5504188ADC9A82BBA54419B667C6EC1F55041FBAE3F7B26BA54410DDC5602C6F55041F38138131BBA54410386D4E9C7F550417F2C2D5F16BA544105B8BFF2C9F550411880FC4612BA5441BCCB1643CBF55041EB5431AB0FBA5441A4703D8ACCF55041E17A143E0DBA544114BA93DCCEF550415792C37006BA5441D7A3706DD3F550417B14AE37F9B95441F6285C5FD2F5504114AE4711F1B95441AB0B994FD2F550413B9C3AF3E6B95441FA4E6B82D2F550418D14AC18E4B9544145F77801D3F5504132D3A35ADCB9544158303B8DD3F550419DEBDCCCD2B95441CE146E95D4F5504118B37DD3D2B954415C8FC295D4F55041E17A14CED2B9544109E1C72AD7F55041F3874CF6D2B95441D2DCF0DFDDF55041256DF95ED3B9544140B04A7FDDF55041DC672F5BCCB95441B4764140E4F550416F09BF13C5B9544188573794E9F55041AF49F2DFC0B954416B083ADBEDF55041D0AF59E5B9B954418F3B7405F0F55041B0461AB5B5B954412326CEB4EDF55041822AE833C6B954412FA5BE7AEAF5504141246748CFB95441AA486DA7E9F55041D2395BC2D1B954411B0F6468F0F5504180EE9BF1E2B954418191E974EEF55041BCA2337FE8B95441E0ABE807EDF550413580948CECB9544175FC239AECF550416001DCAEF2B9544172872AA1EAF55041A52F2101F6B95441AEB0F320E9F550410BEC58EEF8B95441C10C9C52DEF55041D72A16E8F9B95441A4703D7AD4F5504185EB5148F9B95441A51C3370CDF55041F203157E0DBA54419401EB7FCDF55041F500FF840DBA5441713D0A17CEF55041E17A14CE0BBA5441333333E3D5F550411F85EBC10EBA544152B81ED5D4F55041EC51B8BE10BA54411BBB4EACD4F550412F6A920B11BA544185EB5168D0F550413D0AD71319BA5441713D0A07C9F55041AE47E1BA29BA5441666666E6C6F550418FC2F5982EBA5441A4703D4AC3F550417B14AE073BBA5441F9605FBBBFF55041F4879E6542BA5441010300000001000000040000001F69CBF7F3F550415E0BFC0297BA54417A9DC7BCF8F5504161FA362599BA5441ED9E3D8FF3F5504117C7AED196BA54411F69CBF7F3F550415E0BFC0297BA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000F9A3C778FCF55041DBA18467B7B95441AA60F545FCF5504143ED9257B2B95441EC390459FCF550412FB86E2AAFB95441C2CAB865FCF5504132868321ADB95441E36A4782FCF55041B644B6F4ABB9544115841D94FCF55041501EF3B9A9B9544180DAA45DFDF5504107C38A65A5B95441C34746C9EFF5504148A78F38B0B95441AB4C2754F3F55041B3FD1602B1B95441ED4FBDB0F5F55041278087C7B2B9544115841D94FCF5504158E0D0A6BAB954419E246187FCF55041A7BD14F7B7B95441F9A3C778FCF55041DBA18467B7B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 302806
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541BDDFBBCF47DF50414C4E79F8E43555410AD7A32055DF50415C8FC2C5F7355541F4B790B560DF5041359431530836554101030000000100000004000000966D01CA5ADF5041C0933AC40E36554185D655F050DF504149BAFBAF00365541F7331D9F5ADF5041C9D4E5F20E365541966D01CA5ADF5041C0933AC40E3655410103000000010000000400000024965FDA4CDF5041238CB5E8FA355541892A5F4C43DF504189E79675ED3555413C6DA0FD42DF5041C463B309EE35554124965FDA4CDF5041238CB5E8FA355541
+</a>
+
+<b>
+010600000001000000010300000001000000090000006666667647DF50419A999999E5355541A4703D0A45DF5041AE47E1FAE93555415C8FC23543DF50415C8FC255ED3555410AD7A3B04FDF5041713D0AE7FE35554148E17AD45ADF5041333333D30E3655419A9999B960DF50418FC2F558083655410AD7A32055DF50415C8FC2C5F73555413D0AD7C347DF50417B14AEE7E43555416666667647DF50419A999999E5355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 302886
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541BDDFBBCF47DF50414C4E79F8E43555410AD7A32055DF50415C8FC2C5F7355541F4B790B560DF5041359431530836554101030000000100000004000000966D01CA5ADF5041C0933AC40E36554185D655F050DF504149BAFBAF00365541F7331D9F5ADF5041C9D4E5F20E365541966D01CA5ADF5041C0933AC40E3655410103000000010000000400000024965FDA4CDF5041238CB5E8FA355541892A5F4C43DF504189E79675ED3555413C6DA0FD42DF5041C463B309EE35554124965FDA4CDF5041238CB5E8FA355541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C3F528EC54DF504114AE475115365541CDCCCCDC57DF50415C8FC2151236554148E17AD45ADF5041333333D30E3655410AD7A3B04FDF5041713D0AE7FE3555415C8FC23543DF50415C8FC255ED3555417B14AEA740DF50418FC2F5E8F1355541713D0A473EDF5041AE47E12AF6355541713D0A773ADF50417B14AEA7FE3555419A9999393ADF5041F6285CAFFF3555411F85EBC14EDF50417B14AE171C365541C3F528EC54DF504114AE475115365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 1423621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541BDDFBBCF47DF50414C4E79F8E43555410AD7A32055DF50415C8FC2C5F7355541F4B790B560DF5041359431530836554101030000000100000004000000966D01CA5ADF5041C0933AC40E36554185D655F050DF504149BAFBAF00365541F7331D9F5ADF5041C9D4E5F20E365541966D01CA5ADF5041C0933AC40E3655410103000000010000000400000024965FDA4CDF5041238CB5E8FA355541892A5F4C43DF504189E79675ED3555413C6DA0FD42DF5041C463B309EE35554124965FDA4CDF5041238CB5E8FA355541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C3F528EC54DF504114AE475115365541CDCCCCDC57DF50415C8FC2151236554148E17AD45ADF5041333333D30E3655410AD7A3B04FDF5041713D0AE7FE3555415C8FC23543DF50415C8FC255ED3555417B14AEA740DF50418FC2F5E8F1355541713D0A473EDF5041AE47E12AF6355541713D0A773ADF50417B14AEA7FE3555419A9999393ADF5041F6285CAFFF3555411F85EBC14EDF50417B14AE171C365541C3F528EC54DF504114AE475115365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 1423691
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541BDDFBBCF47DF50414C4E79F8E43555410AD7A32055DF50415C8FC2C5F7355541F4B790B560DF5041359431530836554101030000000100000004000000966D01CA5ADF5041C0933AC40E36554185D655F050DF504149BAFBAF00365541F7331D9F5ADF5041C9D4E5F20E365541966D01CA5ADF5041C0933AC40E3655410103000000010000000400000024965FDA4CDF5041238CB5E8FA355541892A5F4C43DF504189E79675ED3555413C6DA0FD42DF5041C463B309EE35554124965FDA4CDF5041238CB5E8FA355541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000C0DFBBCF47DF50414B4E79F8E43555413D0AD7C347DF50417B14AEE7E43555416666667647DF50419A999999E5355541A4703D0A45DF5041AE47E1FAE93555415C8FC23543DF50415C8FC255ED3555410AD7A3B04FDF5041713D0AE7FE35554148E17AD45ADF5041333333D30E3655419A9999B960DF50418FC2F55808365541F5B790B560DF5041369431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541C0DFBBCF47DF50414B4E79F8E4355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>957765 - 222068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000028000000FCCC30BF5D6F5041446F0C3221165541C40B9E105E6F5041FA1FAA421B1655412A1C20835E6F504157927E9814165541D36C3D515F6F5041B626C441101655417E0DF3A85F6F5041FF801E150E165541BCEE295C606F5041FA18C18508165541213E91D6606F50412CD2A55C01165541D8FDD924616F50417F8BC82BFE155541A8E52681606F5041C0B916F8FD15554108AC1C82606F5041C1CAA14DFE1555416ABC74835E6F5041C1CAA1650E16554156FCB4DE596F5041C13CA09C0D16554160E5D0DA596F5041D9CEF79B0D165541133331745A6F50415DE526260716554129A488C15A6F50410D9832E403165541295C8FD25A6F5041E3A59B2C031655419EEFA7EE5B6F50413108ACB4FC1555413EAE11F95B6F5041CB87FD70FC155541F278DE9A596F504171C11DA5FB15554151CDD743546F504154ED28DCF91555419680711D546F504112E36F3DFB155541ABAEE871536F5041E8DF4B6801165541D04E9FE0526F5041DDBF05A006165541410F3383526F5041CC40088709165541CB2AEE71516F50411FF8B30E0E16554151968A22506F5041F84727DC141655414CF0574F4F6F5041B9375E9F19165541839B33334F6F5041F7623D1A1B165541333333B3406F5041D7A370AD1A165541713D0AE73F6F5041D3FDB77E29165541000000204E6F504185EB51C829165541A13B94BC4D6F5041BE47A4292F165541745740544D6F5041742BC0E534165541A95697A24D6F504122DA71743B165541353E19BF4D6F5041F154F4D13F165541A883A3D24D6F50411EE904CC421655419CCB0321546F5041F4EFC4654316554138840D885B6F50415DD4196A43165541B7ED39A85C6F50419DE8A59231165541FCCC30BF5D6F5041446F0C322116554108000000DAF30ABD546F5041BB2EB689121655413239B537536F50416C5E32870D16554197CDD8EA546F5041618909EF0A165541B9B51A6C576F50416C035A8F0B16554160F61F51586F5041FD24E7CB0D16554128EF6527576F5041FD7FBFC30F165541330EDECF556F50416214E37611165541DAF30ABD546F5041BB2EB68912165541
+</a>
+
+<b>
+010600000001000000010300000002000000260000003A0593925F6F50415C621FA30E165541E034EF78606F5041384DE3D6061655418FD6709C606F504188A725C304165541E72BD0B2606F5041D388197403165541213E91D6606F50412CD2A55C01165541AC59A1FD606F5041C6A80AC5FF15554148E17A24616F5041E17A142EFE155541A8E52681606F5041C0B916F8FD15554108AC1C82606F5041C1CAA14DFE1555416ABC74835E6F5041C1CAA1650E16554156FCB4DE596F5041C13CA09C0D16554160E5D0DA596F5041D9CEF79B0D165541133331745A6F50415DE526260716554129A488C15A6F50410D9832E403165541730C6DCC5A6F50417AE9BF6E0316554183262ACE5A6F5041767E005C03165541295C8FD25A6F5041E3A59B2C0316554100DBEA665B6F50416A22DDCBFF155541BC174A815B6F50419D962532FF155541257796935B6F5041C25C7DC7FE1555419EEFA7EE5B6F50413108ACB4FC155541E3C4D743546F50410D3B29DCF91555414B342A40546F504152A5FFFDF9155541CA396C3D546F5041DBDC3917FA1555411F85EB71536F504185EB5168011655410AD7A3E0526F5041000000A00616554133333383526F5041713D0A8709165541CB2AEE71516F50411FF8B30E0E165541295C8F22506F5041C3F528DC14165541F6285C4F4F6F5041F6285C9F19165541FEB7BD354F6F50417A010DF81A165541839B33334F6F5041F7623D1A1B165541D96FD1EC526F50417D6D6F8D1C165541FCCC30BF5D6F5041446F0C3221165541C40B9E105E6F5041FA1FAA421B1655412A1C20835E6F504157927E9814165541DB3DE2E15E6F50411432DA99121655413A0593925F6F50415C621FA30E16554108000000DAF30ABD546F5041BB2EB689121655413239B537536F50416C5E32870D16554197CDD8EA546F5041618909EF0A165541B9B51A6C576F50416C035A8F0B16554160F61F51586F5041FD24E7CB0D16554128EF6527576F5041FD7FBFC30F165541330EDECF556F50416214E37611165541DAF30ABD546F5041BB2EB68912165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652745 - 4189910
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000016000000A4703D4A12AB5041333333A394E054417B14AE270EAB50413333338394E054413D0AD7530EAB504152B81EE5A5E054411F85EBC12EAB50413D0AD753A9E05441E17A14EE32AB50415C8FC285A9E054413D0AD75334AB504166666616A8E05441295C8F6237AB5041B81E85DB89E05441C3F528CC38AB5041A4703D7A78E05441333333D339AB5041666666D660E05441AE47E10A35AB5041666666D660E05441AE47E11A2CAB5041B81E857B61E05441A4703DEA24AB50417B14AE6762E0544185EB518823AB504148E17A2463E054418FC2F5C822AB50416666668664E05441EC51B8EE22AB504114AE47616DE054419A99999923AB50411F85EB716FE05441D7A370BD23AB50410AD7A33072E0544114AE477123AB50410000006074E05441EC51B83E22AB5041C3F5281C75E05441713D0A971AAB5041D7A3703D75E05441000000C013AB5041AE47E15A75E05441A4703D4A12AB5041333333A394E054410103000000010000000C000000295C8F3222AB504148E17A346CE05441A4703DFA21AB50413D0AD7E363E05441B81E859B20AB5041AE47E1AA62E05441D7A370AD1EAB504152B81E8562E0544185EB51981BAB5041E17A142E63E05441B81E856B1AAB5041F6285C9F64E054413D0AD7131AAB5041AE47E19A66E054419A9999391AAB5041C3F528BC69E05441EC51B8DE1AAB5041B81E855B6CE05441A4703DEA1CAB50417B14AEB76CE05441A4703D4A20AB5041B81E85AB6CE05441295C8F3222AB504148E17A346CE05441
+</a>
+
+<b>
+0106000000010000000103000000010000001900000084AB5C8F13AB50410715046D79E0544158655CA413AB5041DFCFC14579E05441A4703D4A12AB5041333333A394E0544192A9AF4511AB5041F282E3A494E054417CFE492711AB50417EB7ED9AA3E05441FC7D9C8B11AB5041D1B91E37A6E054411F85EBC12EAB50413D0AD753A9E05441E17A14EE32AB50415C8FC285A9E054413D0AD75334AB504166666616A8E05441295C8F6237AB5041B81E85DB89E05441C3F528CC38AB5041A4703D7A78E05441333333D339AB5041666666D660E05441AE47E10A35AB5041666666D660E05441AE47E11A2CAB5041B81E857B61E05441A4703DEA24AB50417B14AE6762E0544185EB518823AB504148E17A2463E054418FC2F5C822AB50416666668664E05441EC51B8EE22AB504114AE47616DE054419A99999923AB50411F85EB716FE05441D7A370BD23AB50410AD7A33072E0544114AE477123AB50410000006074E05441EC51B83E22AB5041C3F5281C75E05441713D0A971AAB5041D7A3703D75E05441000000C013AB5041AE47E15A75E0544184AB5C8F13AB50410715046D79E05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652745 - 5275312
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000016000000A4703D4A12AB5041333333A394E054417B14AE270EAB50413333338394E054413D0AD7530EAB504152B81EE5A5E054411F85EBC12EAB50413D0AD753A9E05441E17A14EE32AB50415C8FC285A9E054413D0AD75334AB504166666616A8E05441295C8F6237AB5041B81E85DB89E05441C3F528CC38AB5041A4703D7A78E05441333333D339AB5041666666D660E05441AE47E10A35AB5041666666D660E05441AE47E11A2CAB5041B81E857B61E05441A4703DEA24AB50417B14AE6762E0544185EB518823AB504148E17A2463E054418FC2F5C822AB50416666668664E05441EC51B8EE22AB504114AE47616DE054419A99999923AB50411F85EB716FE05441D7A370BD23AB50410AD7A33072E0544114AE477123AB50410000006074E05441EC51B83E22AB5041C3F5281C75E05441713D0A971AAB5041D7A3703D75E05441000000C013AB5041AE47E15A75E05441A4703D4A12AB5041333333A394E054410103000000010000000C000000295C8F3222AB504148E17A346CE05441A4703DFA21AB50413D0AD7E363E05441B81E859B20AB5041AE47E1AA62E05441D7A370AD1EAB504152B81E8562E0544185EB51981BAB5041E17A142E63E05441B81E856B1AAB5041F6285C9F64E054413D0AD7131AAB5041AE47E19A66E054419A9999391AAB5041C3F528BC69E05441EC51B8DE1AAB5041B81E855B6CE05441A4703DEA1CAB50417B14AEB76CE05441A4703D4A20AB5041B81E85AB6CE05441295C8F3222AB504148E17A346CE05441
+</a>
+
+<b>
+010600000001000000010300000001000000090000001C8ADDC113AB5041F6C8193D75E0544131D08BF811AB504141AFD8937BE0544180CF479111AB504166B370FF7DE05441CFCE032A11AB50417E6C11A594E0544192A9AF4511AB5041F282E3A494E05441A4703D4A12AB5041333333A394E054419F7B569B13AB50415058A05679E0544184AB5C8F13AB50410715046D79E054411C8ADDC113AB5041F6C8193D75E05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>646239 - 207445
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7D3BC6151418FC2F5B8143A5441A4703D5ACE615141F6285C8F0C3A5441EC51B87ECC61514185EB5158093A5441B81E85EBCB615141C3F5288C063A5441C3F5284CCA615141295C8F42033A5441CDCCCC8CC96151417B14AEA7003A5441AE47E1CAB8615141333333B3033A54410AD7A3E0B7615141E17A14DE033A5441B81E852BB7615141AE47E13A053A54419A9999E9B5615141AE47E17A063A5441F6285C3FB36151411F85EB31093A544152B81E35AF6151413D0AD7130D3A54411F85EB81AD615141000000400E3A54418FC2F5C8AE6151419A9999891B3A54413D0AD7D3BC6151418FC2F5B8143A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C8A25DE1C6615141A8DADD23013A54416510AF7AC961514131CDF8AA003A54417A40AC74C9615141D3DAD465003A54418429A2D1C8615141E3F9DBA8FE395441136F50D9C7615141E1FC8B81FB3954415888155EC7615141E89A86ACF9395441D07412B9C56151412B208C85F23954417BD4475CC561514110C96EF7F0395441474A57F5C3615141ED560671F139544116DE7ACCC0615141B813E78FF239544123841F73BF6151412DCF0DE6F23954413D0AD733BE6151411F85EB31F3395441C7AEB6B0BC61514125B5F920F239544138FFB0D7BA615141F5C96C11F43954412A1E787BBA61514159FAFA4AF5395441C6E4E98DBA61514120641772F6395441E3A65B46BB615141E7BB3331FA39544155C12290BB615141A03B1748FC3954418D4E06B5BB6151411244DE29FF39544146E0E933BB6151413DDE888A013A54417F7FCDC0B86151418443A557033A544123DDC7D1B86151415362B0B1033A5441F1D0A9EBB96151414FABB97E033A5441F0C54FB3BA615141C17E725A033A54415856DD31C26151412ADDD3FD013A5441C8A25DE1C6615141A8DADD23013A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668414 - 7569
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A00000066666636D7D150413D0AD7E3CA16554166666686E1D150418FC2F508CB165541E17A147EEED15041C3F5287CCB165541295C8F72FBD150413D0AD753CB1655413D0AD703FCD1504185EB5148CB165541D7A3706D05D25041CDCCCC8CCA16554148E17A1410D2504152B81E75CB16554148E17A0411D2504152B81EE5C01655416666666618D250411F85EBD1C016554148E17AF420D25041C3F5284CBF16554148E17A4423D250417B14AE37BD165541F6285CFF24D2504148E17A34BC165541A4703D7A27D2504185EB5158B81655419A99990928D25041CDCCCCACB5165541B81E850B24D2504185EB51C8A81655419A99993920D25041295C8F72A0165541333333031CD25041D7A3703D9A1655411F85EB3117D2504114AE47A19A165541E17A141E11D2504185EB51489B165541F6285CFF09D2504148E17A749B1655418FC2F51802D25041AE47E1FA991655418FC2F5F8E8D150410AD7A36093165541A4703D1AC6D15041B81E859B8B16554152B81E45C4D15041333333338B165541A4703D6AC2D1504185EB51588E16554133333393BFD15041000000E090165541F6285C2FABD150417B14AE17A31655418FC2F5B8A5D150417B14AE17A91655410AD7A3709FD15041A4703DFAAF16554185EB51189FD150418FC2F5C8B11655411F85EB919FD15041D7A370FDB2165541F6285C2FA3D150418FC2F558B616554133333303AAD1504114AE4771BB165541F6285C4FB0D1504148E17AF4BE16554152B81EF5B4D150419A999939C2165541666666D6B9D150419A9999E9C3165541333333E3BED1504100000010C51655413D0AD7E3C5D15041000000D0C61655417B14AEA7C6D150410AD7A300C716554152B81EC5CAD15041CDCCCC2CC9165541295C8FE2CAD15041A4703D7ACA16554166666636D7D150413D0AD7E3CA165541
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B692AAE204D2504135C9BFA399165541C277B6C5EBD1504196C2700194165541A310026BEBD1504116A8FBF593165541F433C53EF3D1504153AFB71396165541825412D0F8D150419E4F448A97165541BA399343FED150411858FCF898165541F0C6C18F04D25041E1C6A7709A1655414C179B4C08D2504126BB4E239B165541922C2EF909D250415C8253739B165541C193DAB20BD25041F7D6ED699B165541F175CC690DD250412B654B5F9B165541CBAF18EB0ED25041EAAEF5559B165541739FA17611D250417416D03E9B165541FB52A72B13D250417289E40F9B1655416A09013E18D25041A1C9938B9A165541EFEF8F1F1BD25041274EDE4F9A165541333333031CD25041D7A3703D9A1655418B9ACFFD1CD2504143E8BCAE9B1655411267B46D1ED2504199D6DCCC9D165541D300330820D250417F74C329A01655416D242BE720D25041C08E46EDA116554100C6130522D25041C3471C5DA4165541E3920A7623D2504168B82A82A7165541516B971724D250412F0D4DEFA8165541EA2D0ECF24D250411729BD3FAB1655415A5A956E25D25041F830E242AD1655417AD0D80E26D25041C53C6748AF16554171B4F3B126D2504159481957B116554197AD27F826D250419303CC39B216554109C0E36B27D25041136286AFB3165541AD5D54B327D25041359C3796B416554131BB88F727D250418183EF02B61655413E1B66A927D25041D62B7977B71655417D82F12027D250419D4B4EE3B81655410717B62A25D250413323A51ABC165541E74A467F26D250413724FEAEBA16554175FB28F126D250415D2E0236BA165541C127F0582AD25041946F7B63B6165541295C8FF229D25041E17A14CEB5165541AF647F3529D250417C64CC7CB4165541695FE74B28D25041585A94BBB2165541B44C571125D25041D51C5019A8165541303527FF20D25041FFECFFD09F165541991B1F931CD250413DC7E74999165541ECF9B6BF16D250417ACB93069A16554104E466F512D25041ECCE4F9F9A165541FAB6DE2A0BD250411DCF4BA89A165541C8A8F6B508D25041ADCC7B3C9A165541B692AAE204D2504135C9BFA399165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668414 - 58352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A00000066666636D7D150413D0AD7E3CA16554166666686E1D150418FC2F508CB165541E17A147EEED15041C3F5287CCB165541295C8F72FBD150413D0AD753CB1655413D0AD703FCD1504185EB5148CB165541D7A3706D05D25041CDCCCC8CCA16554148E17A1410D2504152B81E75CB16554148E17A0411D2504152B81EE5C01655416666666618D250411F85EBD1C016554148E17AF420D25041C3F5284CBF16554148E17A4423D250417B14AE37BD165541F6285CFF24D2504148E17A34BC165541A4703D7A27D2504185EB5158B81655419A99990928D25041CDCCCCACB5165541B81E850B24D2504185EB51C8A81655419A99993920D25041295C8F72A0165541333333031CD25041D7A3703D9A1655411F85EB3117D2504114AE47A19A165541E17A141E11D2504185EB51489B165541F6285CFF09D2504148E17A749B1655418FC2F51802D25041AE47E1FA991655418FC2F5F8E8D150410AD7A36093165541A4703D1AC6D15041B81E859B8B16554152B81E45C4D15041333333338B165541A4703D6AC2D1504185EB51588E16554133333393BFD15041000000E090165541F6285C2FABD150417B14AE17A31655418FC2F5B8A5D150417B14AE17A91655410AD7A3709FD15041A4703DFAAF16554185EB51189FD150418FC2F5C8B11655411F85EB919FD15041D7A370FDB2165541F6285C2FA3D150418FC2F558B616554133333303AAD1504114AE4771BB165541F6285C4FB0D1504148E17AF4BE16554152B81EF5B4D150419A999939C2165541666666D6B9D150419A9999E9C3165541333333E3BED1504100000010C51655413D0AD7E3C5D15041000000D0C61655417B14AEA7C6D150410AD7A300C716554152B81EC5CAD15041CDCCCC2CC9165541295C8FE2CAD15041A4703D7ACA16554166666636D7D150413D0AD7E3CA165541
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B692AAE204D2504135C9BFA399165541C277B6C5EBD1504196C2700194165541A310026BEBD1504116A8FBF593165541F433C53EF3D1504153AFB71396165541825412D0F8D150419E4F448A97165541BA399343FED150411858FCF898165541F0C6C18F04D25041E1C6A7709A1655414C179B4C08D2504126BB4E239B165541922C2EF909D250415C8253739B165541C193DAB20BD25041F7D6ED699B165541F175CC690DD250412B654B5F9B165541CBAF18EB0ED25041EAAEF5559B165541739FA17611D250417416D03E9B165541FB52A72B13D250417289E40F9B1655416A09013E18D25041A1C9938B9A165541EFEF8F1F1BD25041274EDE4F9A165541333333031CD25041D7A3703D9A1655418B9ACFFD1CD2504143E8BCAE9B1655411267B46D1ED2504199D6DCCC9D165541D300330820D250417F74C329A01655416D242BE720D25041C08E46EDA116554100C6130522D25041C3471C5DA4165541E3920A7623D2504168B82A82A7165541516B971724D250412F0D4DEFA8165541EA2D0ECF24D250411729BD3FAB1655415A5A956E25D25041F830E242AD1655417AD0D80E26D25041C53C6748AF16554171B4F3B126D2504159481957B116554197AD27F826D250419303CC39B216554109C0E36B27D25041136286AFB3165541AD5D54B327D25041359C3796B416554131BB88F727D250418183EF02B61655413E1B66A927D25041D62B7977B71655417D82F12027D250419D4B4EE3B81655410717B62A25D250413323A51ABC165541E74A467F26D250413724FEAEBA16554175FB28F126D250415D2E0236BA165541C127F0582AD25041946F7B63B6165541295C8FF229D25041E17A14CEB5165541AF647F3529D250417C64CC7CB4165541695FE74B28D25041585A94BBB2165541B44C571125D25041D51C5019A8165541303527FF20D25041FFECFFD09F165541991B1F931CD250413DC7E74999165541ECF9B6BF16D250417ACB93069A16554104E466F512D25041ECCE4F9F9A165541FAB6DE2A0BD250411DCF4BA89A165541C8A8F6B508D25041ADCC7B3C9A165541B692AAE204D2504135C9BFA399165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668462 - 2391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000350000008FC2F51827D15041C3F5282C26175541D7A370AD2AD15041CDCCCCAC271755413D0AD74330D15041B81E85EB291755419A99990931D150415C8FC2C5291755410000008031D15041C3F5282C29175541CDCCCC1C33D150413D0AD7F32317554185EB51B833D15041B81E854B20175541CDCCCC3C34D150418FC2F5181F175541CDCCCC7C34D150415C8FC2851E1755413D0AD7E338D150419A99994918175541713D0AA739D15041713D0A7717175541CDCCCC4C3CD15041C3F5289C141755415C8FC2553ED15041333333A311175541D7A3701D40D150415C8FC2650F175541D7A370AD3BD15041713D0A570C175541CDCCCCCC38D15041F6285C6F0A175541CDCCCC0C39D15041E17A14CE091755419A9999893CD150411F85EB0104175541E17A143E3DD150413D0AD7E302175541AE47E17A39D15041EC51B89E001755418FC2F52835D15041B81E851BFE1655410000004031D150415C8FC2D5FB16554185EB51782DD15041B81E854BF91655416666661632D15041EC51B87EF6165541E17A141E29D1504152B81E25F1165541D7A3701D20D15041713D0AC7EB16554148E17A841FD150415C8FC295EC1655411F85EBF114D15041295C8F02E7165541CDCCCC4C0BD15041D7A3706DE1165541EC51B8FE05D1504185EB5168E5165541B81E852B05D1504152B81E05E6165541333333F3F9D05041F6285C3FE0165541A4703D7AECD05041C3F528ECD8165541C3F528ACECD050415C8FC235DE16554133333313EFD05041713D0A37E5165541CDCCCC6CF0D05041000000E0E816554148E17A14F2D05041C3F528DCED1655410AD7A340F3D0504114AE47E1F116554166666676F3D05041D7A370DDF2165541EC51B89EF3D050411F85EB31F416554148E17AC4F3D0504114AE4731F7165541713D0AB7F3D050411F85EBA1F8165541EC51B87EF3D05041713D0A77FA165541E17A140EF3D050415C8FC2D5FC1655418FC2F518F2D0504152B81E1501175541B81E856BF2D050418FC2F518031755413D0AD723F3D0504100000080041755419A9999C9F3D05041AE47E14A05175541A4703DAAF6D050417B14AE5707175541AE47E17A05D150411F85EB01101755410000002015D150415C8FC2E519175541B81E856B21D1504185EB51C8211755418FC2F51827D15041C3F5282C261755410900000014AE470109D150418FC2F5B8E6165541295C8F0214D150411F85EB61EE165541D7A3704D1FD15041713D0A37F5165541333333332FD15041000000B0001755410AD7A3F02DD150413333337302175541E17A145E1ED150419A999979F616554148E17A3411D15041EC51B8CEED165541666666F607D150418FC2F528E816554114AE470109D150418FC2F5B8E6165541
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000666666F607D150418FC2F528E8165541EDC7982E10D15041822FB32EED165541E13A4C6215D150417DCA318FF01655414FACD3831BD150419288BA98F41655415D041F8020D15041292E7F1DF8165541204B5BAB25D15041C91C0B17FC1655419C9B216027D15041D481EA66FD1655414B632A2D29D1504136A671C9FE1655419B6D559A2BD150417AB61CA7001755418309CEC42CD15041B6B1A18C011755410AD7A3F02DD150413333337302175541333333332FD15041000000B000175541EF8725582ED150416D4EEB1100175541AE0CEC4C2BD15041B6A096DFFD16554114745EBE28D15041D22F3A07FC165541E80B6B0126D150416F12620DFA165541828C23BF21D15041C60B94FAF6165541CCACAD8B1FD150414862F463F516554151DCCE711DD1504160914217F41655410CBDCFFE1BD150412919CA36F3165541DAD25BD31AD1504178339B81F2165541ACF09BAE1AD15041CEFB5E6BF21655418CAAB6221AD15041973FBA16F2165541D97486F918D15041A419EA62F11655410C01254B18D150418DE567F9F01655412E91073D17D150412632F955F0165541C0227D0016D1504103827396EF165541C86EB21915D150410BA9CF0AEF16554167B226AE13D1504190DE2A27EE16554180C9F67112D150416015164BED165541CB07CE1B11D15041CF62ED5CEC165541ACA66F0110D150417EA66298EB16554135A378870ED1504114CE4D91EA16554150943EE30DD15041C18BFE1EEA16554191AC0B250DD150410E609B9AE916554182F9D2030CD15041C68C4BD1E816554181A548700BD15041E19D996AE8165541DDBFC53E0BD150411D4A2348E816554182F4BFDB0AD1504189A23603E81655413129BA780AD15041EBFA49BEE716554122F0155309D15041AC8FE6F1E616554114AE470109D150418FC2F5B8E61655412EED6FC308D150419D1D3C0EE7165541ABBEA56B08D15041EC1A2B7CE7165541666666F607D150418FC2F528E8165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668462 - 57099
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000350000008FC2F51827D15041C3F5282C26175541D7A370AD2AD15041CDCCCCAC271755413D0AD74330D15041B81E85EB291755419A99990931D150415C8FC2C5291755410000008031D15041C3F5282C29175541CDCCCC1C33D150413D0AD7F32317554185EB51B833D15041B81E854B20175541CDCCCC3C34D150418FC2F5181F175541CDCCCC7C34D150415C8FC2851E1755413D0AD7E338D150419A99994918175541713D0AA739D15041713D0A7717175541CDCCCC4C3CD15041C3F5289C141755415C8FC2553ED15041333333A311175541D7A3701D40D150415C8FC2650F175541D7A370AD3BD15041713D0A570C175541CDCCCCCC38D15041F6285C6F0A175541CDCCCC0C39D15041E17A14CE091755419A9999893CD150411F85EB0104175541E17A143E3DD150413D0AD7E302175541AE47E17A39D15041EC51B89E001755418FC2F52835D15041B81E851BFE1655410000004031D150415C8FC2D5FB16554185EB51782DD15041B81E854BF91655416666661632D15041EC51B87EF6165541E17A141E29D1504152B81E25F1165541D7A3701D20D15041713D0AC7EB16554148E17A841FD150415C8FC295EC1655411F85EBF114D15041295C8F02E7165541CDCCCC4C0BD15041D7A3706DE1165541EC51B8FE05D1504185EB5168E5165541B81E852B05D1504152B81E05E6165541333333F3F9D05041F6285C3FE0165541A4703D7AECD05041C3F528ECD8165541C3F528ACECD050415C8FC235DE16554133333313EFD05041713D0A37E5165541CDCCCC6CF0D05041000000E0E816554148E17A14F2D05041C3F528DCED1655410AD7A340F3D0504114AE47E1F116554166666676F3D05041D7A370DDF2165541EC51B89EF3D050411F85EB31F416554148E17AC4F3D0504114AE4731F7165541713D0AB7F3D050411F85EBA1F8165541EC51B87EF3D05041713D0A77FA165541E17A140EF3D050415C8FC2D5FC1655418FC2F518F2D0504152B81E1501175541B81E856BF2D050418FC2F518031755413D0AD723F3D0504100000080041755419A9999C9F3D05041AE47E14A05175541A4703DAAF6D050417B14AE5707175541AE47E17A05D150411F85EB01101755410000002015D150415C8FC2E519175541B81E856B21D1504185EB51C8211755418FC2F51827D15041C3F5282C261755410900000014AE470109D150418FC2F5B8E6165541295C8F0214D150411F85EB61EE165541D7A3704D1FD15041713D0A37F5165541333333332FD15041000000B0001755410AD7A3F02DD150413333337302175541E17A145E1ED150419A999979F616554148E17A3411D15041EC51B8CEED165541666666F607D150418FC2F528E816554114AE470109D150418FC2F5B8E6165541
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000666666F607D150418FC2F528E8165541EDC7982E10D15041822FB32EED165541E13A4C6215D150417DCA318FF01655414FACD3831BD150419288BA98F41655415D041F8020D15041292E7F1DF8165541204B5BAB25D15041C91C0B17FC1655419C9B216027D15041D481EA66FD1655414B632A2D29D1504136A671C9FE1655419B6D559A2BD150417AB61CA7001755418309CEC42CD15041B6B1A18C011755410AD7A3F02DD150413333337302175541333333332FD15041000000B000175541EF8725582ED150416D4EEB1100175541AE0CEC4C2BD15041B6A096DFFD16554114745EBE28D15041D22F3A07FC165541E80B6B0126D150416F12620DFA165541828C23BF21D15041C60B94FAF6165541CCACAD8B1FD150414862F463F516554151DCCE711DD1504160914217F41655410CBDCFFE1BD150412919CA36F3165541DAD25BD31AD1504178339B81F2165541ACF09BAE1AD15041CEFB5E6BF21655418CAAB6221AD15041973FBA16F2165541D97486F918D15041A419EA62F11655410C01254B18D150418DE567F9F01655412E91073D17D150412632F955F0165541C0227D0016D1504103827396EF165541C86EB21915D150410BA9CF0AEF16554167B226AE13D1504190DE2A27EE16554180C9F67112D150416015164BED165541CB07CE1B11D15041CF62ED5CEC165541ACA66F0110D150417EA66298EB16554135A378870ED1504114CE4D91EA16554150943EE30DD15041C18BFE1EEA16554191AC0B250DD150410E609B9AE916554182F9D2030CD15041C68C4BD1E816554181A548700BD15041E19D996AE8165541DDBFC53E0BD150411D4A2348E816554182F4BFDB0AD1504189A23603E81655413129BA780AD15041EBFA49BEE716554122F0155309D15041AC8FE6F1E616554114AE470109D150418FC2F5B8E61655412EED6FC308D150419D1D3C0EE7165541ABBEA56B08D15041EC1A2B7CE7165541666666F607D150418FC2F528E8165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652850 - 943452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000005C8FC2E5C7A95041E17A141E62E254415C8FC2E5C7A95041295C8FB262E25441A4703D5AC7A95041F6285C2F69E254418FC2F51820AA5041D7A3707D53E254419A9999B91FAA5041CDCCCC6C4FE2544185EB51481FAA504114AE47C14CE254419A9999691EAA5041713D0A8747E2544185EB51681CAA5041AE47E1BA40E25441666666661AAA5041295C8FC23AE25441F6285CAF12AA50411F85EB2126E25441D7A3708D10AA50417B14AEF71FE2544185EB51B803AA504185EB519824E254418FC2F5B8F9A950413333333328E25441C3F528BCF8A95041EC51B88E28E25441333333D3BFA95041CDCCCC5C36E2544148E17A24C0A9504148E17A1437E25441A4703D8AC2A95041713D0AF73CE254417B14AEB7C4A95041AE47E14A43E2544114AE47F1C5A95041713D0A5748E25441295C8F92C6A950419A9999294CE25441D7A3705DC7A950410AD7A35053E254415C8FC2E5C7A95041B81E850B5CE254415C8FC2E5C7A95041E17A141E62E25441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F5DDF81AFEA95041E60C9D9E26E254419406F57710AA50413F0EDCAF1FE254416BB961D40EAA5041C42622C51AE25441C80E09C10DAA5041FAED4F2F17E25441F6285CDF06AA5041666666A619E254411F85EB3106AA504152B81EE519E25441C3F5284CFFA950411F85EB611CE25441613E4748FFA95041EF8512541CE25441E56C889AF6A95041300A4D6E1FE254416B0FC32AF7A950414B5351D020E254415317448408AA504102914E6B1AE254417674E2790AAA50411E888AEA20E25441BF680393F9A9504186ED815127E2544168DB2CA8F9A95041A3C9463928E254418FC2F5B8F9A950413333333328E25441F5DDF81AFEA95041E60C9D9E26E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652894 - 3154715
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C6F1FA85041D7A370CD54E15441C3F528CC29A850410000002069E15441E17A14EE2BA8504148E17AF46DE154417B14AEC72DA85041C3F528FC72E1544148E17A742FA85041B81E851B78E154410AD7A3E031A85041295C8F8283E15441713D0A3733A85041666666E688E15441E17A14BE34A85041333333138AE154413D0AD72337A850415C8FC2058AE15441000000B039A850410AD7A3208AE154419A9999B93EA85041C3F528BC8AE154413D0AD7C348A850417B14AE378CE154413D0AD76349A850417B14AE378CE154411F85EB3145A85041A4703D3A84E15441000000F03DA8504185EB510877E15441F6285CDF49A85041EC51B88E6FE154410AD7A32043A850413D0AD75366E154417B14AEB72DA85041A4703D7A49E154410AD7A3302DA8504152B81E953BE1544148E17AC42CA85041E17A14AE38E15441EC51B83E22A85041295C8FF23FE15441666666E621A8504152B81E5540E15441713D0A671AA85041713D0AB748E15441A4703DFA19A850413D0AD7734AE154417B14AEC71AA85041C3F5285C4DE15441CDCCCC0C1DA85041EC51B8BE50E15441F6285C6F1FA85041D7A370CD54E15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000FDC5B8A50A85041A4A9CF3269E15441501E6C3944A8504149EC95DD5AE15441501E6C3944A850417F9C513A57E154411A2A239441A850413B6BB6EB53E15441AD4191493CA85041CF8224A14EE15441F0EA110733A85041629A925649E1544191835FAE34A850414720EE0348E15441A1C89C683CA850417C67B29943E15441126746E63EA850413CF689DE41E15441828E67D143A85041155F7B3F3FE15441FF3799D24CA85041385B81C93AE15441F2FA46294CA850411DE1DC7639E154415062F9814AA85041E7EC93D136E154411A6EB0DC47A85041608A5D3430E154418612B5DE46A8504188FDC6E72BE15441C9FFC2E443A85041378FD9EF27E154411A2A239441A85041378FD9EF27E15441F1722C983FA850417BC0743E2BE15441774D48A439A85041F5E5583231E154419FC0B15735A85041E8EC93D136E1544148E17AC42CA85041E17A14AE38E15441E3A6E8D42CA85041E662F11E39E15441A85FC3452DA85041E8D187C13DE15441710A73682EA8504186DB6F684AE1544120B5A86232A85041FFC179C44FE1544172AA151038A85041BFE4F76A57E15441BB9D537F40A8504136A88CC862E15441A3CBBE9D49A85041E673EE346FE154410FDC5B8A50A85041A4A9CF3269E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652894 - 3280822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C6F1FA85041D7A370CD54E15441C3F528CC29A850410000002069E15441E17A14EE2BA8504148E17AF46DE154417B14AEC72DA85041C3F528FC72E1544148E17A742FA85041B81E851B78E154410AD7A3E031A85041295C8F8283E15441713D0A3733A85041666666E688E15441E17A14BE34A85041333333138AE154413D0AD72337A850415C8FC2058AE15441000000B039A850410AD7A3208AE154419A9999B93EA85041C3F528BC8AE154413D0AD7C348A850417B14AE378CE154413D0AD76349A850417B14AE378CE154411F85EB3145A85041A4703D3A84E15441000000F03DA8504185EB510877E15441F6285CDF49A85041EC51B88E6FE154410AD7A32043A850413D0AD75366E154417B14AEB72DA85041A4703D7A49E154410AD7A3302DA8504152B81E953BE1544148E17AC42CA85041E17A14AE38E15441EC51B83E22A85041295C8FF23FE15441666666E621A8504152B81E5540E15441713D0A671AA85041713D0AB748E15441A4703DFA19A850413D0AD7734AE154417B14AEC71AA85041C3F5285C4DE15441CDCCCC0C1DA85041EC51B8BE50E15441F6285C6F1FA85041D7A370CD54E15441
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000FDC5B8A50A85041A4A9CF3269E15441501E6C3944A8504149EC95DD5AE15441501E6C3944A850417F9C513A57E154411A2A239441A850413B6BB6EB53E15441AD4191493CA85041CF8224A14EE15441F0EA110733A85041629A925649E1544191835FAE34A850414720EE0348E15441A1C89C683CA850417C67B29943E15441126746E63EA850413CF689DE41E15441828E67D143A85041155F7B3F3FE15441FF3799D24CA85041385B81C93AE15441F2FA46294CA850411DE1DC7639E154415062F9814AA85041E7EC93D136E154411A6EB0DC47A85041608A5D3430E154418612B5DE46A8504188FDC6E72BE15441C9FFC2E443A85041378FD9EF27E154411A2A239441A85041378FD9EF27E15441F1722C983FA850417BC0743E2BE15441774D48A439A85041F5E5583231E154419FC0B15735A85041E8EC93D136E1544148E17AC42CA85041E17A14AE38E15441E3A6E8D42CA85041E662F11E39E15441A85FC3452DA85041E8D187C13DE15441710A73682EA8504186DB6F684AE1544120B5A86232A85041FFC179C44FE1544172AA151038A85041BFE4F76A57E15441BB9D537F40A8504136A88CC862E15441A3CBBE9D49A85041E673EE346FE154410FDC5B8A50A85041A4A9CF3269E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647490 - 2986535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E3554410AD7A34041305141CDCCCCCC0E355441666666F63F30514152B81E750F355441713D0AD73C305141713D0A0713355441A4703D1A40305141F6285CAF1F35544152B81ED541305141C3F5288C2735544148E17A8441305141A4703DDA29355441D7A370AD4030514152B81E952B3554411F85EB713F3051413D0AD7632C355441F6285C7F453051410AD7A3F03A355441CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441F6285C2F64305141295C8FB23E35544148E17AE44E3051413D0AD7830B355441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441F6285C2F64305141295C8FB23E35544148E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E35544140A0BBA045305141E839AE6F15355441CB7AFBE146305141F9F9AD8318355441F44FCE62493051417B7B91A71E355441699570014A305141A436AF2C20355441897B64674C3051412383D3ED273554411F85EB713F3051413D0AD7632C3554417AE2E33E4430514171D632F137355441E1F68C304630514141D486823C355441C376316F463051414D29A71B3D3554416D36AE2047305141842845BD3E355441868A68744830514121CBF00C4235544140FA079A48305141CF4C6767423554412E35DEBC493051412D90930845355441CDCCCC6C4B30514114AE473149355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647490 - 3816247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E3554410AD7A34041305141CDCCCCCC0E355441666666F63F30514152B81E750F355441713D0AD73C305141713D0A0713355441A4703D1A40305141F6285CAF1F35544152B81ED541305141C3F5288C2735544148E17A8441305141A4703DDA29355441D7A370AD4030514152B81E952B3554411F85EB713F3051413D0AD7632C355441F6285C7F453051410AD7A3F03A355441CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441F6285C2F64305141295C8FB23E35544148E17AE44E3051413D0AD7830B355441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441F6285C2F64305141295C8FB23E35544148E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E35544140A0BBA045305141E839AE6F15355441CB7AFBE146305141F9F9AD8318355441F44FCE62493051417B7B91A71E355441699570014A305141A436AF2C20355441897B64674C3051412383D3ED273554411F85EB713F3051413D0AD7632C3554417AE2E33E4430514171D632F137355441E1F68C304630514141D486823C355441C376316F463051414D29A71B3D3554416D36AE2047305141842845BD3E355441868A68744830514121CBF00C4235544140FA079A48305141CF4C6767423554412E35DEBC493051412D90930845355441CDCCCC6C4B30514114AE473149355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963580 - 889841
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000B8B1377226A51416D22DE1F31365441CCCA5395236A5141998099531C365441615EA4D7246A51418D85C90AEE35544197404745216A514137F7BB47EE35544123ED7CF9206A51415FAC3A95F535544116D5A448206A5141D6877B4904365441559F53CA1F6A51414266647A1B36544143B660341F6A51418790D44A2C36544114AE47F11E6A5141C3F528EC2B3654410B8B1377226A51416D22DE1F31365441
+</a>
+
+<b>
+010600000001000000010300000001000000450000007735AD63206A5141CA5F120A023654415AED14BA206A5141AE5EE0DAFA35544197404745216A514137F7BB47EE355441615EA4D7246A51418D85C90AEE355441D155DE92246A5141DDBE4D3EF835544170869581246A514198D1B6E5FA35544161956749246A514180985E1C04365441CCCA5395236A5141998099531C3654410B8B1377226A51416D22DE1F31365441CDCCCC7C226A514185EB512831365441F3DE50C4246A514182ECBE8634365441290C4931276A5141BA2C397C2B365441A89C5A2A296A5141E394C09D18365441507940402A6A5141BB57CBE702365441DAA673142A6A5141F7F2043CF8355441F62BE2122A6A5141433CB91FF8355441A0C4DAD6296A51416D6AF3ECEC35544137E868B02D6A5141FAA5C171EC355441E77DCFC42D6A5141235E8D5C02365441D02FEB68316A5141235E8D5C0236544175173D3C306A5141A7E3927C2136544197C45AB52E6A514134ED8ED22B36544187D9A0032D6A5141E38CD5BD343654416A3A0AE72A6A5141AF7B6DF43C365441E17A146E2B6A5141333333933D365441CDCCCC9C316A5141666666D64436544148E17AF4326A51411F85EB91453654410AD7A380346A5141AE47E18A4536544185EB5198366A5141CDCCCC9C4436544114AE4761396A51415C8FC28535365441E17A143E356A5141666666063536544114AE4781366A514148E17A543236544100000010396A51418FC2F5982F3654418FC2F5B83A6A5141000000E0203654413D0AD7D33E6A5141EC51B8CE20365441295C8F023C6A51419A9999A914365441F6285CBF3A6A5141000000D00F365441EC51B86E396A51415C8FC20501365441D7A370BD376A51415C8FC2A5F0355441713D0AE7366A51413D0AD7F3ED355441A4703D1A356A5141EC51B81EEA3554417B14AEA7346A514114AE4731DD3554415C8FC265356A5141EC51B81ED0355441295C8F32356A51410AD7A3A0CA355441A4703D5A356A51410AD7A310C3355441D7A370ED356A5141B81E85FBBB3554419A9999A92D6A5141C3F5284CBF355441CDCCCC7C2C6A5141295C8F32C3355441CDCCCC3C266A5141EC51B80EC735544133333323256A5141A4703D4ACC355441B81E85DB216A5141E17A14FECB355441F18F7813206A5141A64C8C2AED355441CB238AF71F6A51415D86283EEF355441D01978CF1F6A5141669C024FF2355441AA0CC1AB1F6A51415ED2490BF535544103F3DD831F6A51419C22D6F7F735544108A100541F6A51413F99BCDDFA3554416E4C101A1F6A51419045CF45FE355441D75550F81E6A51415C8A96E400365441516A4EC31E6A51412E1D1F0D04365441A668D0B41E6A5141E2D74CF9063654412E6C28A81E6A514143DEAB770A365441F6285C6F1E6A5141CDCCCCDC1B365441C3F5283C1E6A51410AD7A3E02A36544143B660341F6A51418790D44A2C3654414EABA1C61F6A514112009AD41B365441F4BE00ED1F6A51410A989B1C1536544116D5A448206A5141D6877B49043654417735AD63206A5141CA5F120A02365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647719 - 990843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E1FAC13351413D0AD7732A37544133333343C03351413D0AD77330375441295C8F92F33351418FC2F52830375441F6285CFFF333514114AE47612A3754411F85EB01F4335141AE47E12A2A375441AE47E1FAC13351413D0AD7732A375441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000DC2894EBF3335141D7154E6E2B375441F47D9AAAC1335141932F488C2B3754410F3E1643C0335141BDF33B743037544196E29220C5335141E695BD6C303754415BEEFF5BC8335141C1110668303754414638A647CC335141F0604D6230375441D137D892F333514102E4162530375441DC2894EBF3335141D7154E6E2B375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647719 - 3275851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E1FAC13351413D0AD7732A37544133333343C03351413D0AD77330375441295C8F92F33351418FC2F52830375441F6285CFFF333514114AE47612A3754411F85EB01F4335141AE47E12A2A375441AE47E1FAC13351413D0AD7732A375441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000DC2894EBF3335141D7154E6E2B375441F47D9AAAC1335141932F488C2B3754410F3E1643C0335141BDF33B743037544196E29220C5335141E695BD6C303754415BEEFF5BC8335141C1110668303754414638A647CC335141F0604D6230375441D137D892F333514102E4162530375441DC2894EBF3335141D7154E6E2B375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647913 - 20608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000005000000E17A145E782D5141295C8F92F93654411F85EB318D2D514114AE47F1F9365441CDCCCCDC8F2D5141A4703D5ABD3654415C8FC2157A2D514148E17A64C0365441E17A145E782D5141295C8F92F9365441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000446C822E782D5141B0A097E9F9365441F233C3097A2D5141A27F45EAF93654414445856B7B2D5141AEEBC6EAF936544113D3C7ED892D514177C715F0F93654415986EB318D2D51413B9247F1F93654417A16213D8D2D51419AE1ABF2F83654411B59B1C68C2D5141727C4091F9365441B8124FEA8B2D5141263F8D9DF936544122C5D1328B2D51414896FFB1F93654415D46321D8A2D5141F71449B5F936544177339F40862D51412D52D4C7F936544156D18EFA7B2D51413CBBFBA2F9365441C443EEF7772D51414E678AACF9365441F4BA7E2B722D51419D0DB74EF93654414CA9354A682D5141D87D61E3F8365441DB63AC4F682D5141683645D8F93654410A52374F682D514126F909E7F9365441D946D40F6F2D514180DA1FE8F936544118093C2C782D51419FCB96E9F9365441446C822E782D5141B0A097E9F9365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647913 - 61238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000005000000E17A145E782D5141295C8F92F93654411F85EB318D2D514114AE47F1F9365441CDCCCCDC8F2D5141A4703D5ABD3654415C8FC2157A2D514148E17A64C0365441E17A145E782D5141295C8F92F9365441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000446C822E782D5141B0A097E9F9365441F233C3097A2D5141A27F45EAF93654414445856B7B2D5141AEEBC6EAF936544113D3C7ED892D514177C715F0F93654415986EB318D2D51413B9247F1F93654417A16213D8D2D51419AE1ABF2F83654411B59B1C68C2D5141727C4091F9365441B8124FEA8B2D5141263F8D9DF936544122C5D1328B2D51414896FFB1F93654415D46321D8A2D5141F71449B5F936544177339F40862D51412D52D4C7F936544156D18EFA7B2D51413CBBFBA2F9365441C443EEF7772D51414E678AACF9365441F4BA7E2B722D51419D0DB74EF93654414CA9354A682D5141D87D61E3F8365441DB63AC4F682D5141683645D8F93654410A52374F682D514126F909E7F9365441D946D40F6F2D514180DA1FE8F936544118093C2C782D51419FCB96E9F9365441446C822E782D5141B0A097E9F9365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>648599 - 960012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000CA000000EC51B88E8FA950419A9999C9653354410AD7A38094A9504148E17A846A335441B81E85AB97A95041EC51B84E6E335441E17A141E98A950417B14AE076F335441E17A145E98A95041D7A3703D703354417B14AE7798A950419A9999C971335441713D0AE798A950415C8FC20573335441295C8F829CA950411F85EB81793354413D0AD753A0A9504185EB51F87C335441D7A3709DA3A95041C3F5287C7F335441713D0AB7A6A95041D7A370DD82335441B81E852BA8A95041B81E856B82335441713D0A17AAA95041333333738133544148E17A34AAA950410AD7A3407F33544100000070AAA9504148E17A847D335441AE47E15AABA950415C8FC2357D335441666666D6ADA9504148E17AB480335441EC51B86EB0A950411F85EBD1833354413D0AD7D3B5A95041AE47E10A8833544133333303B8A950413D0AD75389335441F6285C5FBDA95041D7A370ED8B335441295C8F02C0A9504152B81E258D3354410AD7A300C3A95041F6285C4F8F33544114AE47F1C4A95041B81E85DB9033544133333323C7A950416666667693335441F6285C3FC8A9504185EB51389C33544152B81ED5C8A950410AD7A3E09C33544166666616C9A9504152B81EB59D335441A4703DCAC9A950415C8FC2C59D335441EC51B87ECAA95041295C8F329D33544185EB5138CCA950411F85EB219D335441EC51B84ECDA950415C8FC2C59D3354410AD7A3A0CDA95041F6285C5F9F3354410AD7A3A0CDA950419A999929A1335441CDCCCCECCCA950417B14AE97A3335441CDCCCCFCCCA950410AD7A320A5335441E17A142ECDA9504185EB5168A6335441C3F528CCCCA9504185EB5128A9335441AE47E19ACCA950411F85EBE1AA335441C3F528DCCCA95041AE47E16AAC335441E17A141ECDA9504166666656AE3354410AD7A390CDA95041EC51B8BEAF33544148E17A34CEA95041713D0A37B13354418FC2F5F8CEA95041295C8F32B333544100000030D0A950411F85EBD1B5335441333333D3D0A9504185EB51E8B6335441AE47E12AD1A950415C8FC285B83354415C8FC2F5DBA9504152B81E35B43354411F85EB61EFA950419A9999C9AB33544166666636EAA95041713D0AD7A0335441295C8F42E2A95041F6285CFF8F3354418FC2F578DFA95041E17A146E91335441A4703DFADCA95041666666E6923354411F85EB81DBA95041CDCCCCFC9333544148E17A34D9A950417B14AEE79533544133333343D6A950413D0AD7F3973354413D0AD7A3D3A95041E17A14AE993354419A9999D9D1A9504152B81EE59A335441CDCCCCACCFA95041A4703DCA9B3354410AD7A390CDA950417B14AE679B33544185EB5138CCA9504114AE47419A3354410AD7A3D0CAA950418FC2F5C898335441000000A0C9A9504185EB517896335441E17A14CEC9A95041EC51B86E94335441D7A3704DCBA950413333331394335441D7A3704DCBA9504114AE47818E3354413D0AD723CCA9504185EB51D88D33544148E17A84CDA9504114AE47118D3354410AD7A3E0CDA95041CDCCCC9C8A3354410AD7A3E0CDA950413D0AD7838833544133333313CFA95041295C8F3287335441B81E853BD1A95041333333238733544166666686D4A9504148E17A0487335441F6285C9FD6A95041000000708733544133333323D9A95041B81E85DB87335441C3F5282CDBA9504185EB511888335441CDCCCCFCDDA950417B14AE2788335441713D0AE7E0A95041000000E08733544114AE4711E9A950410AD7A3F0853354418FC2F588EFA95041CDCCCC6C83335441F6285CDFF1A95041295C8FE2823354413D0AD753F4A95041C3F5287C83335441295C8F22F5A95041F6285C7F833354415C8FC2E5F9A950410000002083335441295C8F02FDA950417B14AE77823354411F85EB81FEA95041CDCCCCFC813354418FC2F558FFA9504114AE47918133544185EB51F807AA5041AE47E1DA7D335441B81E858B0AAA5041F6285CFF7B335441EC51B8BE0BAA50411F85EB617A3354418FC2F5C80CAA5041713D0A177933544152B81E6504AA5041666666366C33544166666606FBA95041666666B65D33544114AE4761F8A950418FC2F5B858335441A4703D3AF5A95041D7A370DD5833544166666676F2A95041B81E85BB51335441713D0A77F1A95041A4703DFA4D33544114AE47A1F1A95041B81E858B4B335441C3F528CCF2A950415C8FC2D53D3354417B14AEC7F3A95041000000B0353354415C8FC245E7A95041666666263B335441D7A3704DE2A95041C3F5287C3D335441AE47E12ADDA95041666666E63F33544114AE47D1D9A950419A99997941335441B81E857BD4A95041E17A14CE4233544133333363D2A95041A4703D6A4333544152B81E95D1A95041333333634533544133333383D3A95041B81E851B463354411F85EBA1D0A95041666666F64C335441F6285C9FCFA95041713D0A974C335441713D0AE7CEA9504185EB51584E335441295C8F22CFA950413D0AD7934E3354411F85EB81CFA95041713D0AC74E335441B81E854BD1A950419A9999694F33544185EB51E8D2A95041F6285CDF4F3354415C8FC2C5D3A95041713D0AE74F3354417B14AE27D5A9504148E17A045033544100000040D6A9504185EB51D84F335441666666C6D7A95041713D0A874F335441EC51B83ED9A95041D7A3703D4F335441B81E85DBDAA95041AE47E1FA4E3354410AD7A330DDA95041C3F528EC4E335441B81E85EBDEA950411F85EB014F335441AE47E16AE0A95041C3F5284C4F335441666666B6E1A9504185EB51D84F335441713D0A27E3A950416666660651335441F6285CDFE3A95041EC51B81E52335441F6285C3FE4A95041AE47E10A533354418FC2F588E4A95041EC51B84E54335441F6285CFFE4A9504152B81EB5573354417B14AE57E5A950417B14AEE75A335441B81E858BE5A95041B81E85AB5D335441EC51B8BEE5A950411F85EBF15F335441295C8F52E6A950417B14AED764335441F6285C2FE7A95041A4703D6A68335441713D0AF7E7A95041A4703D5A6B3354419A999919E7A950413D0AD7A36B335441295C8F52E6A9504166666696683354413D0AD783E5A95041CDCCCCFC643354417B14AEF7E4A950419A9999F95F33544148E17AC4E4A95041333333B35D3354417B14AE97E4A95041666666F65A33544185EB5138E4A95041CDCCCCBC573354411F85EBC1E3A95041CDCCCC6C54335441713D0A87E3A95041713D0A375333544100000020E3A9504100000070523354413D0AD793E2A9504185EB51A851335441CDCCCC6CE1A950417B14AE9750335441EC51B83EE0A95041B81E850B50335441E17A14CEDEA9504148E17AA44F3354419A999929DDA95041E17A148E4F335441A4703DEADAA95041CDCCCC9C4F335441D7A3704DD9A95041713D0AE74F335441CDCCCCDCD7A950418FC2F52850335441EC51B84ED6A950411F85EB815033544166666636D5A95041666666A650335441CDCCCCCCD3A95041F6285C9F5033544100000090D2A950418FC2F588503354411F85EB01D1A950411F85EB2150335441AE47E11ACFA95041CDCCCC9C4F335441EC51B82ECEA95041A4703D3A51335441AE47E18ACCA95041A4703D3A513354417B14AE77CAA950418FC2F5285033544185EB51A8C3A95041713D0A774D33544100000090C4A9504152B81ED54A3354417B14AE47C6A95041333333D3493354413D0AD7B3C6A95041333333A348335441EC51B88EC7A95041E17A14EE4833544148E17AE4C9A950410AD7A32043335441F6285CFFC6A95041CDCCCCEC41335441CDCCCC2CC7A95041CDCCCC4C41335441295C8FD2C8A95041CDCCCC9C41335441295C8F72C9A950410000003040335441D7A3700DCBA950411F85EBF1403354413D0AD773CBA950418FC2F5B840335441AE47E18ACBA950418FC2F51840335441EC51B88ECBA95041A4703DFA3E335441295C8F92BFA950417B14AE5734335441713D0AE7BFA95041666666362F3354415C8FC2B5BDA9504148E17A942C3354418FC2F598BAA950411F85EB0129335441295C8FB2B9A9504114AE47812833544148E17AF4B7A950411F85EBA12733544100000070B5A950415C8FC29527335441295C8F82B4A950418FC2F52828335441000000C0B1A95041AE47E11A2A3354413D0AD763B0A95041F6285C2F2B3354413D0AD7A3ADA95041B81E85AB2D335441D7A3704DAAA950413D0AD77331335441666666C6A7A950416666666634335441A4703D2AA3A95041E17A14DE37335441CDCCCCDC95A9504114AE479143335441AE47E17A93A95041B81E852B46335441F6285C8F90A95041EC51B80E4A335441713D0A278FA95041333333C34C335441EC51B8FE8DA95041D7A3705D4F3354417B14AEF791A95041EC51B86E53335441A4703D3A95A9504152B81EC55633544148E17A6494A950418FC2F5E85733544114AE47318DA95041C3F5283C613354415C8FC2258DA95041C3F528AC61335441EC51B88E8FA950419A9999C965335441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000C5538E516DA95041F4480A8D7F3354417013A6366EA95041B1307B1C8033544145A8953183A950412A0611BD893354411154488999A950413E3310608933544187BDC8B799A9504117D9111A8A3354417646567783A9504103AC12778A335441F42F95517FA9504102D30234893354415ECE90CA80A950411A21352F8A335441F2EA394983A95041C770BABF8B335441C2EE02F485A9504138B5EB6B8D3354410AD7A3708BA95041CDCCCCDC90335441C3F528EC90A95041AE47E18A9333544104DC96BE98A950412A2134C090335441C244C6A098A9504153161ABC8D33544170EB4E719CA95041FA675077893354412C7B14E59EA95041DB9B0978863354419CA0D2139EA950411F0C440484335441D48255599FA950415A38BC9080335441ACCDD1B69DA95041EDB778057F335441B9B60E5A9CA95041A69133C07C3354417E00D1349EA95041A22FCB0B7B335441D27A6F4D9CA9504197C76B2279335441174A50FB9AA95041203099C276335441E7A9CE099AA9504140BC741075335441BBDDD3FC98A950411F25ED2C733354417B14AE7798A950419A9999C971335441C57C744598A95041D45041C66F335441B81E85AB97A95041EC51B84E6E3354412B64C76496A950418EEDC3C76C3354412DC9F14D95A95041B2E4217A6B33544144968B6894A95041D9CF6E6D6A3354412832D90693A9504170381D1B6933544155B244D790A950413717DD0367335441EC51B88E8FA950419A9999C9653354413166FE008EA9504138AB7E22633354415C8FC2258DA95041C3F528AC6133544114AE47318DA95041C3F5283C6133544164F4686890A950417AA417125D335441BBBE341293A950414F5F129F59335441A4703D3A95A9504152B81EC556335441EC51B8FE8DA95041D7A3705D4F33544148E17A148CA950410000003053335441666666A689A950419A99996956335441E9AFD6A583A95041B0C4E7535B335441C044484A7DA9504180DC31C75F335441F08783337BA9504164C6F58061335441AE47E11A77A9504133333363653354416666665673A95041713D0AF76A335441CDCCCC3C72A95041713D0A876D33544100EEE7076FA950415F5A5E6573335441445E22946CA95041C44CEAA97833544130D69D946AA95041B1D5F5BF7D335441B083E0C26BA95041774EF8D67E335441C5538E516DA95041F4480A8D7F335441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 1415581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F1655413AB15E54BB0B5141F0890A3593165541E753046EBA0B5141EB6BE926941655413ADF54B2B90B5141D1F750C3941655414DD09052B80B5141965974E89516554149742B45B80B514144269EF3951655418B1BDDF0B40B514126EC61A0961655412AFE3DE4B40B5141B0323A9E961655416412D4D9B40B5141FFEB61A096165541C3F5286CB40B5141A4703D6A9C16554100000050AE0B5141EC51B84EA616554185EB5168A70B5141713D0A47AF165541A4703D8AA70B5141C3F528CCB1165541AE47E16AA80B514185EB5198B316554148E17AE4A90B51415C8FC2B5B4165541C3F528DCAA0B5141E17A145EB51655419A999929B30B514148E17AE4B11655410AD7A330B70B5141AE47E1FAB1165541CDCCCC0CBB0B5141E17A14CEAE1655418FC2F558BD0B51415C8FC215AD165541713D0A97BF0B5141295C8FA2AC1655414A18B344C10B5141FE1E4A9BAE165541FC8C1CDEC40B5141BF6B981CAE165541CC3BC2CAC70B5141B9F9253FAE16554191653B9CCA0B5141D6D23156AD1655416D50A2A0C80B5141976CC035AA165541D03D54F5C50B5141C63F43EEA61655411499585BC40B5141BBF3006AA41655414DB81D98C30B5141E585AE58A3165541868BA050C00B51411395703A9F165541DDA2BFEFBE0B514180EE6A229D1655418C444AF1C00B514161C146CD9A165541EAB64935C40B5141A3209F4197165541A7F91C3FC90B514137DE6CB491165541460FCCF3CB0B5141D83C832F8F165541A7FDBFA4CF0B514151A3F1A293165541340B78AFD30B51417177B5D49716554154DF3BE1D70B5141339F9C7B9C165541E2B0B4C2DC0B51417C515020A2165541462CBFDEE10B51412FB0E04FA71655419F1F484DE50B51415E4DFBF8AA165541BE29748EE20B514169993D7DAD16554107C64DBEDE0B5141C28CC6EBB0165541F1F1898CDA0B51415F9F1497B31655417AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B002881655418C0FD42AF00B51414669484681165541C42D7ADFF30B51417AD2173278165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655416B61BAF5DD0B51413B99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B514169963FC36E165541F8D520A2DD0B5141B8380CBE6F1655416703E673DF0B5141487E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541BF5D5D85D80B5141167B7B8573165541E7DB13E2D30B514196EC5A197A1655415AB014FCCE0B5141448EE51A7C16554115D09B29C90B5141AF30F1BE78165541F44D9C73C90B5141369498D176165541A587BE3ECA0B5141D420543B751655415E6E476BCD0B51414AA01AF16F16554110FC7569D60B5141CC4EB5BB60165541854C680ADB0B5141EDDD1723581655411B2CBD12D70B5141CD7D89D0561655418FC2F5D8DC0B5141C3F5286C421655410AD7A310D30B5141CDCCCC8C3F1655419A999939CE0B5141EC51B81E3E16554166666606CD0B5141000000703F165541D7A370FDC90B5141713D0A97451655419A999989C60B5141000000904E165541A145DB59C50B5141B8E77994511655415AA6B606C80B514128F8FF36531655415C9714DDCE0B51413DC751105616554177757B8FD40B514147A4F5575716554188A53DFBD40B5141364D298157165541AC05518BD60B5141B6CA61DF5716554150BC920ED90B51419E173AEE581655413F901901D90B51412654EE0A5916554150BC920ED90B51413A21151059165541523F7356D70B5141622E0AC45C165541DC71FBB8D60B514128045BE75D16554133DFE403D60B5141ACEE26695F1655415B6C855BD50B514187C1DB6D60165541137F56B1D40B51411992B2A8611655419FFB6B57D30B5141B2E3FA8C63165541C51D92AFCD0B514164302B056C16554115028677C80B51413639160276165541
+</a>
+
+<b>
+010600000001000000010300000002000000700000007AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B002881655418C0FD42AF00B51414669484681165541C42D7ADFF30B51417AD2173278165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655417061BAF5DD0B51413C99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B51416E963FC36E165541F9D520A2DD0B5141B3380CBE6F1655416A03E673DF0B5141497E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541BF5D5D85D80B5141167B7B8573165541EADB13E2D30B514195EC5A197A1655415BB014FCCE0B5141448EE51A7C16554115D09B29C90B5141AF30F1BE78165541F44D9C73C90B5141369498D176165541A587BE3ECA0B5141D420543B751655415E6E476BCD0B51414AA01AF16F16554110FC7569D60B5141CC4EB5BB60165541854C680ADB0B5141EDDD1723581655411B2CBD12D70B5141CD7D89D0561655418FC2F5D8DC0B5141C3F5286C421655410AD7A310D30B5141CDCCCC8C3F1655419A999939CE0B5141EC51B81E3E16554166666606CD0B5141000000703F165541D7A370FDC90B5141713D0A97451655419A999989C60B5141000000904E165541A145DB59C50B5141B8E77994511655415AA6B606C80B514128F8FF36531655415C9714DDCE0B51413DC751105616554177757B8FD40B514147A4F5575716554188A53DFBD40B5141364D298157165541AC05518BD60B5141B6CA61DF5716554150BC920ED90B51419E173AEE581655413F901901D90B51412654EE0A5916554150BC920ED90B51413A21151059165541523F7356D70B5141622E0AC45C165541DC71FBB8D60B514128045BE75D16554133DFE403D60B5141ACEE26695F1655415B6C855BD50B514187C1DB6D60165541137F56B1D40B51411992B2A8611655419CFB6B57D30B5141B6E3FA8C63165541C51D92AFCD0B514165302B056C16554116028677C80B5141313916027616554110560A37B90B5141AE39341C6C165541A8BCA5E7B80B51416786E6436C1655414FD154E6B80B51419AB809526C165541AA0A8F8EC80B51416C1CF5F37616554116860A83C80B51416B05D733791655417F57DD0FC80B514120AD79D27A16554136E77F08C20B51410B9E4046881655419BC86D07BE0B514161A32EBE8F1655412946EFC4BC0B51416DC64C5191165541E253046EBA0B5141EA6BE926941655414D742B45B80B514146269EF395165541ABDE35F6B40B51417B784C9F96165541C3F5286CB40B5141A4703D6A9C16554100000050AE0B5141EC51B84EA616554185EB5168A70B5141713D0A47AF165541A4703D8AA70B5141C3F528CCB1165541AE47E16AA80B514185EB5198B316554148E17AE4A90B51415C8FC2B5B4165541C3F528DCAA0B5141E17A145EB51655419A999929B30B514148E17AE4B11655410AD7A330B70B5141AE47E1FAB1165541CDCCCC0CBB0B5141E17A14CEAE1655418FC2F558BD0B51415C8FC215AD165541713D0A97BF0B5141295C8FA2AC1655414618B344C10B5141FD1E4A9BAE165541FF8C1CDEC40B5141BC6B981CAE165541CF3BC2CAC70B5141BAF9253FAE16554191653B9CCA0B5141D6D23156AD165541B7E6968BCA0B51418959F33BAD16554187DDB9EEC80B51416D165270AA1655416204601CC60B5141825CBDDAA61655414DB81D98C30B5141E585AE58A3165541868BA050C00B51411395703A9F16554147073FF4BE0B51411DE53F299D165541134B08E9C20B5141512F5BAA98165541EEB64935C40B5141A2209F4197165541268E5914C50B5141A427D74B96165541ABF91C3FC90B51413ADE6CB4911655412931DD63C90B5141BE5464CE91165541420FCCF3CB0B5141D63C832F8F165541A7FDBFA4CF0B514151A3F1A293165541340B78AFD30B51417177B5D49716554154DF3BE1D70B5141339F9C7B9C165541E2B0B4C2DC0B51417C515020A2165541462CBFDEE10B51412FB0E04FA71655419F1F484DE50B51415E4DFBF8AA165541BE29748EE20B514169993D7DAD16554107C64DBEDE0B5141C28CC6EBB0165541F1F1898CDA0B51415F9F1497B31655417AF9804AD80B5141DC13411DB51655410B0000003D0AD753D00B5141713D0AE78A1655413D0AD7F3D50B5141EC51B80E81165541B81E85CBDA0B5141333333A383165541B81E856BE00B5141713D0A77871655417B14AEF7EA0B5141713D0A478F1655417B14AE17F30B5141333333D3941655413D0AD7C3F60B5141EC51B83E971655417B14AE07EF0B5141713D0AF7A2165541B81E85CBDF0B5141AE47E11A981655417B14AE17DA0B514133333343931655413D0AD753D00B5141713D0AE78A165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 1415616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F1655413AB15E54BB0B5141F0890A3593165541E753046EBA0B5141EB6BE926941655413ADF54B2B90B5141D1F750C3941655414DD09052B80B5141965974E89516554149742B45B80B514144269EF3951655418B1BDDF0B40B514126EC61A0961655412AFE3DE4B40B5141B0323A9E961655416412D4D9B40B5141FFEB61A096165541C3F5286CB40B5141A4703D6A9C16554100000050AE0B5141EC51B84EA616554185EB5168A70B5141713D0A47AF165541A4703D8AA70B5141C3F528CCB1165541AE47E16AA80B514185EB5198B316554148E17AE4A90B51415C8FC2B5B4165541C3F528DCAA0B5141E17A145EB51655419A999929B30B514148E17AE4B11655410AD7A330B70B5141AE47E1FAB1165541CDCCCC0CBB0B5141E17A14CEAE1655418FC2F558BD0B51415C8FC215AD165541713D0A97BF0B5141295C8FA2AC1655414A18B344C10B5141FE1E4A9BAE165541FC8C1CDEC40B5141BF6B981CAE165541CC3BC2CAC70B5141B9F9253FAE16554191653B9CCA0B5141D6D23156AD1655416D50A2A0C80B5141976CC035AA165541D03D54F5C50B5141C63F43EEA61655411499585BC40B5141BBF3006AA41655414DB81D98C30B5141E585AE58A3165541868BA050C00B51411395703A9F165541DDA2BFEFBE0B514180EE6A229D1655418C444AF1C00B514161C146CD9A165541EAB64935C40B5141A3209F4197165541A7F91C3FC90B514137DE6CB491165541460FCCF3CB0B5141D83C832F8F165541A7FDBFA4CF0B514151A3F1A293165541340B78AFD30B51417177B5D49716554154DF3BE1D70B5141339F9C7B9C165541E2B0B4C2DC0B51417C515020A2165541462CBFDEE10B51412FB0E04FA71655419F1F484DE50B51415E4DFBF8AA165541BE29748EE20B514169993D7DAD16554107C64DBEDE0B5141C28CC6EBB0165541F1F1898CDA0B51415F9F1497B31655417AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B002881655418C0FD42AF00B51414669484681165541C42D7ADFF30B51417AD2173278165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655416B61BAF5DD0B51413B99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B514169963FC36E165541F8D520A2DD0B5141B8380CBE6F1655416703E673DF0B5141487E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541BF5D5D85D80B5141167B7B8573165541E7DB13E2D30B514196EC5A197A1655415AB014FCCE0B5141448EE51A7C16554115D09B29C90B5141AF30F1BE78165541F44D9C73C90B5141369498D176165541A587BE3ECA0B5141D420543B751655415E6E476BCD0B51414AA01AF16F16554110FC7569D60B5141CC4EB5BB60165541854C680ADB0B5141EDDD1723581655411B2CBD12D70B5141CD7D89D0561655418FC2F5D8DC0B5141C3F5286C421655410AD7A310D30B5141CDCCCC8C3F1655419A999939CE0B5141EC51B81E3E16554166666606CD0B5141000000703F165541D7A370FDC90B5141713D0A97451655419A999989C60B5141000000904E165541A145DB59C50B5141B8E77994511655415AA6B606C80B514128F8FF36531655415C9714DDCE0B51413DC751105616554177757B8FD40B514147A4F5575716554188A53DFBD40B5141364D298157165541AC05518BD60B5141B6CA61DF5716554150BC920ED90B51419E173AEE581655413F901901D90B51412654EE0A5916554150BC920ED90B51413A21151059165541523F7356D70B5141622E0AC45C165541DC71FBB8D60B514128045BE75D16554133DFE403D60B5141ACEE26695F1655415B6C855BD50B514187C1DB6D60165541137F56B1D40B51411992B2A8611655419FFB6B57D30B5141B2E3FA8C63165541C51D92AFCD0B514164302B056C16554115028677C80B51413639160276165541
+</a>
+
+<b>
+010600000001000000010300000001000000210000009CFB6B57D30B5141B6E3FA8C6316554133DFE403D60B5141ACEE26695F16554150BC920ED90B51419E173AEE58165541AC05518BD60B5141B6CA61DF571655415C9714DDCE0B51413DC75110561655415AA6B606C80B514128F8FF3653165541A145DB59C50B5141B8E7799451165541C3F5283CC50B5141000000E051165541295C8FA2C40B51417B14AE6753165541AE47E11AC20B51410000003058165541F6285C9FBF0B51410AD7A3B05C1655419A999939BC0B5141CDCCCC3C62165541F6285C5FB70B5141E17A141E6B165541713D0AE7B00B514114AE4791741655417B14AE77AD0B5141666666867A165541CDCCCCECA90B51413D0AD733811655415C8FC2F5A30B51411F85EB618F165541EC51B88EA10B5141B81E850B9516554152B81E35AF0B51415C8FC2A5951655418F1BDDF0B40B514123EC61A0961655414D742B45B80B514146269EF395165541E253046EBA0B5141EA6BE926941655412946EFC4BC0B51416DC64C51911655419BC86D07BE0B514161A32EBE8F16554136E77F08C20B51410B9E4046881655417F57DD0FC80B514120AD79D27A16554116860A83C80B51416B05D73379165541AA0A8F8EC80B51416C1CF5F376165541CC30E6DAB80B5141554C464A6C16554110560A37B90B5141AE39341C6C16554157018677C80B51419F3A160276165541C51D92AFCD0B514165302B056C1655419CFB6B57D30B5141B6E3FA8C63165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 3616437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F1655413AB15E54BB0B5141F0890A3593165541E753046EBA0B5141EB6BE926941655413ADF54B2B90B5141D1F750C3941655414DD09052B80B5141965974E89516554149742B45B80B514144269EF3951655418B1BDDF0B40B514126EC61A0961655412AFE3DE4B40B5141B0323A9E961655416412D4D9B40B5141FFEB61A096165541C3F5286CB40B5141A4703D6A9C16554100000050AE0B5141EC51B84EA616554185EB5168A70B5141713D0A47AF165541A4703D8AA70B5141C3F528CCB1165541AE47E16AA80B514185EB5198B316554148E17AE4A90B51415C8FC2B5B4165541C3F528DCAA0B5141E17A145EB51655419A999929B30B514148E17AE4B11655410AD7A330B70B5141AE47E1FAB1165541CDCCCC0CBB0B5141E17A14CEAE1655418FC2F558BD0B51415C8FC215AD165541713D0A97BF0B5141295C8FA2AC1655414A18B344C10B5141FE1E4A9BAE165541FC8C1CDEC40B5141BF6B981CAE165541CC3BC2CAC70B5141B9F9253FAE16554191653B9CCA0B5141D6D23156AD1655416D50A2A0C80B5141976CC035AA165541D03D54F5C50B5141C63F43EEA61655411499585BC40B5141BBF3006AA41655414DB81D98C30B5141E585AE58A3165541868BA050C00B51411395703A9F165541DDA2BFEFBE0B514180EE6A229D1655418C444AF1C00B514161C146CD9A165541EAB64935C40B5141A3209F4197165541A7F91C3FC90B514137DE6CB491165541460FCCF3CB0B5141D83C832F8F165541A7FDBFA4CF0B514151A3F1A293165541340B78AFD30B51417177B5D49716554154DF3BE1D70B5141339F9C7B9C165541E2B0B4C2DC0B51417C515020A2165541462CBFDEE10B51412FB0E04FA71655419F1F484DE50B51415E4DFBF8AA165541BE29748EE20B514169993D7DAD16554107C64DBEDE0B5141C28CC6EBB0165541F1F1898CDA0B51415F9F1497B31655417AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B002881655418C0FD42AF00B51414669484681165541C42D7ADFF30B51417AD2173278165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655416B61BAF5DD0B51413B99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B514169963FC36E165541F8D520A2DD0B5141B8380CBE6F1655416703E673DF0B5141487E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541BF5D5D85D80B5141167B7B8573165541E7DB13E2D30B514196EC5A197A1655415AB014FCCE0B5141448EE51A7C16554115D09B29C90B5141AF30F1BE78165541F44D9C73C90B5141369498D176165541A587BE3ECA0B5141D420543B751655415E6E476BCD0B51414AA01AF16F16554110FC7569D60B5141CC4EB5BB60165541854C680ADB0B5141EDDD1723581655411B2CBD12D70B5141CD7D89D0561655418FC2F5D8DC0B5141C3F5286C421655410AD7A310D30B5141CDCCCC8C3F1655419A999939CE0B5141EC51B81E3E16554166666606CD0B5141000000703F165541D7A370FDC90B5141713D0A97451655419A999989C60B5141000000904E165541A145DB59C50B5141B8E77994511655415AA6B606C80B514128F8FF36531655415C9714DDCE0B51413DC751105616554177757B8FD40B514147A4F5575716554188A53DFBD40B5141364D298157165541AC05518BD60B5141B6CA61DF5716554150BC920ED90B51419E173AEE581655413F901901D90B51412654EE0A5916554150BC920ED90B51413A21151059165541523F7356D70B5141622E0AC45C165541DC71FBB8D60B514128045BE75D16554133DFE403D60B5141ACEE26695F1655415B6C855BD50B514187C1DB6D60165541137F56B1D40B51411992B2A8611655419FFB6B57D30B5141B2E3FA8C63165541C51D92AFCD0B514164302B056C16554115028677C80B51413639160276165541
+</a>
+
+<b>
+0106000000010000000103000000020000006A00000040207CB6F30B51416340869678165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655417061BAF5DD0B51413C99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B51416E963FC36E165541F9D520A2DD0B5141B3380CBE6F1655416A03E673DF0B5141497E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541BF5D5D85D80B5141167B7B8573165541EADB13E2D30B514195EC5A197A1655414B0FBDDCD30B5141F02E811B7A165541713D0AD7D30B51415C8FC2257A1655419A9999F9CE0B5141333333137C165541B81E850BC90B5141AE47E19A78165541295C8F52C90B5141EC51B8FE761655413D0AD723CF0B5141B81E85CB6C1655418FC2F518D70B5141333333E35F1655417B14AEF7DA0B514152B81E3558165541EC51B8FED60B5141713D0A67571655418FC2F5D8DC0B5141C3F5286C421655410AD7A310D30B5141CDCCCC8C3F1655419A999939CE0B5141EC51B81E3E16554166666606CD0B5141000000703F165541D7A370FDC90B5141713D0A97451655419A999989C60B5141000000904E165541A145DB59C50B5141B8E77994511655415AA6B606C80B514128F8FF36531655415C9714DDCE0B51413DC7511056165541AC05518BD60B5141B6CA61DF5716554150BC920ED90B51419E173AEE5816554133DFE403D60B5141ACEE26695F1655415B6C855BD50B514187C1DB6D601655419CFB6B57D30B5141B6E3FA8C63165541C51D92AFCD0B514165302B056C16554116028677C80B5141313916027616554110560A37B90B5141AE39341C6C165541A8BCA5E7B80B51416786E6436C16554153D154E6B80B51419BB809526C165541AA0A8F8EC80B51416C1CF5F37616554116860A83C80B51416B05D733791655417F57DD0FC80B514120AD79D27A165541E69CA2CDC20B51419A47F2BE861655419BC86D07BE0B514161A32EBE8F1655412946EFC4BC0B51416DC64C5191165541E253046EBA0B5141EA6BE926941655414D742B45B80B514146269EF395165541B8DE35F6B40B514178784C9F96165541C3F5286CB40B5141A4703D6A9C16554100000050AE0B5141EC51B84EA616554185EB5168A70B5141713D0A47AF165541A4703D8AA70B5141C3F528CCB1165541AE47E16AA80B514185EB5198B316554148E17AE4A90B51415C8FC2B5B4165541C3F528DCAA0B5141E17A145EB51655419A999929B30B514148E17AE4B11655410AD7A330B70B5141AE47E1FAB1165541CDCCCC0CBB0B5141E17A14CEAE1655418FC2F558BD0B51415C8FC215AD165541713D0A97BF0B5141295C8FA2AC16554134A1964FC10B51411C4D4275AE165541F6285C9FC40B5141C3F5281CAE165541CF3BC2CAC70B5141BAF9253FAE16554191653B9CCA0B5141D6D23156AD165541B7E6968BCA0B51418959F33BAD16554187DDB9EEC80B51416D165270AA1655416204601CC60B5141825CBDDAA61655414DB81D98C30B5141E585AE58A3165541868BA050C00B51411395703A9F16554147073FF4BE0B51411DE53F299D165541134B08E9C20B5141512F5BAA98165541EEB64935C40B5141A2209F4197165541268E5914C50B5141A427D74B96165541ABF91C3FC90B51413ADE6CB4911655412931DD63C90B5141BE5464CE91165541420FCCF3CB0B5141D63C832F8F165541A7FDBFA4CF0B514151A3F1A293165541340B78AFD30B51417177B5D49716554154DF3BE1D70B5141339F9C7B9C165541E2B0B4C2DC0B51417C515020A2165541462CBFDEE10B51412FB0E04FA71655419F1F484DE50B51415E4DFBF8AA165541BE29748EE20B514169993D7DAD16554107C64DBEDE0B5141C28CC6EBB0165541F1F1898CDA0B51415F9F1497B31655417AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B002881655418C0FD42AF00B5141466948468116554140207CB6F30B514163408696781655410B0000003D0AD753D00B5141713D0AE78A1655413D0AD7F3D50B5141EC51B80E81165541B81E85CBDA0B5141333333A383165541B81E856BE00B5141713D0A77871655417B14AEF7EA0B5141713D0A478F1655417B14AE17F30B5141333333D3941655413D0AD7C3F60B5141EC51B83E971655417B14AE07EF0B5141713D0AF7A2165541B81E85CBDF0B5141AE47E11A981655417B14AE17DA0B514133333343931655413D0AD753D00B5141713D0AE78A165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 4107428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F1655413AB15E54BB0B5141F0890A3593165541E753046EBA0B5141EB6BE926941655413ADF54B2B90B5141D1F750C3941655414DD09052B80B5141965974E89516554149742B45B80B514144269EF3951655418B1BDDF0B40B514126EC61A0961655412AFE3DE4B40B5141B0323A9E961655416412D4D9B40B5141FFEB61A096165541C3F5286CB40B5141A4703D6A9C16554100000050AE0B5141EC51B84EA616554185EB5168A70B5141713D0A47AF165541A4703D8AA70B5141C3F528CCB1165541AE47E16AA80B514185EB5198B316554148E17AE4A90B51415C8FC2B5B4165541C3F528DCAA0B5141E17A145EB51655419A999929B30B514148E17AE4B11655410AD7A330B70B5141AE47E1FAB1165541CDCCCC0CBB0B5141E17A14CEAE1655418FC2F558BD0B51415C8FC215AD165541713D0A97BF0B5141295C8FA2AC1655414A18B344C10B5141FE1E4A9BAE165541FC8C1CDEC40B5141BF6B981CAE165541CC3BC2CAC70B5141B9F9253FAE16554191653B9CCA0B5141D6D23156AD1655416D50A2A0C80B5141976CC035AA165541D03D54F5C50B5141C63F43EEA61655411499585BC40B5141BBF3006AA41655414DB81D98C30B5141E585AE58A3165541868BA050C00B51411395703A9F165541DDA2BFEFBE0B514180EE6A229D1655418C444AF1C00B514161C146CD9A165541EAB64935C40B5141A3209F4197165541A7F91C3FC90B514137DE6CB491165541460FCCF3CB0B5141D83C832F8F165541A7FDBFA4CF0B514151A3F1A293165541340B78AFD30B51417177B5D49716554154DF3BE1D70B5141339F9C7B9C165541E2B0B4C2DC0B51417C515020A2165541462CBFDEE10B51412FB0E04FA71655419F1F484DE50B51415E4DFBF8AA165541BE29748EE20B514169993D7DAD16554107C64DBEDE0B5141C28CC6EBB0165541F1F1898CDA0B51415F9F1497B31655417AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B002881655418C0FD42AF00B51414669484681165541C42D7ADFF30B51417AD2173278165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655416B61BAF5DD0B51413B99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B514169963FC36E165541F8D520A2DD0B5141B8380CBE6F1655416703E673DF0B5141487E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541BF5D5D85D80B5141167B7B8573165541E7DB13E2D30B514196EC5A197A1655415AB014FCCE0B5141448EE51A7C16554115D09B29C90B5141AF30F1BE78165541F44D9C73C90B5141369498D176165541A587BE3ECA0B5141D420543B751655415E6E476BCD0B51414AA01AF16F16554110FC7569D60B5141CC4EB5BB60165541854C680ADB0B5141EDDD1723581655411B2CBD12D70B5141CD7D89D0561655418FC2F5D8DC0B5141C3F5286C421655410AD7A310D30B5141CDCCCC8C3F1655419A999939CE0B5141EC51B81E3E16554166666606CD0B5141000000703F165541D7A370FDC90B5141713D0A97451655419A999989C60B5141000000904E165541A145DB59C50B5141B8E77994511655415AA6B606C80B514128F8FF36531655415C9714DDCE0B51413DC751105616554177757B8FD40B514147A4F5575716554188A53DFBD40B5141364D298157165541AC05518BD60B5141B6CA61DF5716554150BC920ED90B51419E173AEE581655413F901901D90B51412654EE0A5916554150BC920ED90B51413A21151059165541523F7356D70B5141622E0AC45C165541DC71FBB8D60B514128045BE75D16554133DFE403D60B5141ACEE26695F1655415B6C855BD50B514187C1DB6D60165541137F56B1D40B51411992B2A8611655419FFB6B57D30B5141B2E3FA8C63165541C51D92AFCD0B514164302B056C16554115028677C80B51413639160276165541
+</a>
+
+<b>
+010600000001000000010300000001000000230000009CFB6B57D30B5141B6E3FA8C631655415B6C855BD50B514187C1DB6D6016554133DFE403D60B5141ACEE26695F16554150BC920ED90B51419E173AEE58165541AC05518BD60B5141B6CA61DF571655415C9714DDCE0B51413DC75110561655415AA6B606C80B514128F8FF3653165541A145DB59C50B5141B8E7799451165541C3F5283CC50B5141000000E051165541295C8FA2C40B51417B14AE6753165541AE47E11AC20B51410000003058165541F6285C9FBF0B51410AD7A3B05C1655419A999939BC0B5141CDCCCC3C62165541F6285C5FB70B5141E17A141E6B165541713D0AE7B00B514114AE4791741655417B14AE77AD0B5141666666867A165541CDCCCCECA90B51413D0AD733811655415C8FC2F5A30B51411F85EB618F165541EC51B88EA10B5141B81E850B9516554152B81E35AF0B51415C8FC2A5951655418F1BDDF0B40B514123EC61A0961655414D742B45B80B514146269EF395165541E253046EBA0B5141EA6BE926941655412946EFC4BC0B51416DC64C51911655419BC86D07BE0B514161A32EBE8F165541E69CA2CDC20B51419A47F2BE861655417F57DD0FC80B514120AD79D27A16554116860A83C80B51416B05D73379165541AA0A8F8EC80B51416C1CF5F37616554153D154E6B80B51419BB809526C165541A8BCA5E7B80B51416786E6436C16554110560A37B90B5141AE39341C6C16554116028677C80B51413139160276165541C51D92AFCD0B514165302B056C1655419CFB6B57D30B5141B6E3FA8C63165541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649156 - 359193
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000295C8FA29B28514185EB51A8153654415C8FC2459C285141C3F5287C17365441D7A3708D9D285141333333F31836544148E17A749F28514114AE47F119365441A4703D9AA62851419A9999391D365441AE47E11AA8285141295C8F121736544148E17A14AA285141D7A370FD0E365441F6285C1FB0285141EC51B85E0F3654413D0AD723B7285141F6285CCF0F365441B81E857BB62851415C8FC285083654417B14AEA7AB285141EC51B85E083654415C8FC2E59B285141C3F528CC08365441AE47E1EA9B2851419A9999B90936544152B81EB59B2851411F85EBB10E3654418FC2F5789B285141E17A14BE13365441295C8FA29B28514185EB51A815365441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000D66C88D6AC2851416398D7290F36544122925D1FB0285141E00EB75E0F3654410EFBD623B7285141AF805BCF0F365441BABDD023B72851416E5816CF0F36544118498B23B7285141268614CC0F36544185E3837BB6285141EC8AC28508365441288981E5B2285141A689D478083654411D3589C6AF2851418EBE936D08365441274BADA7AB28514194E8B85E0836544143B3C2E59B285141830F29CC08365441A172E1EA9B28514166E699B9093654417E0820B59B285141397BEBB10E3654417B08F6789B285141529114BE133654417A7A8FA29B2851416E4252A815365441D64A42A89B2851415231A8B815365441CDEEC3459C285141E318287C173654414FFF9D7C9D285141DE1CF2DF18365441D7A3708D9D285141333333F31836544148E17A749F28514114AE47F11936544147ACE285A62851419D3ECF001D365441BF7D4E08A82851419E6E1A101736544148E17A14AA285141D7A370FD0E365441D66C88D6AC2851416398D7290F365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633576 - 1581683
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441EC51B8BE3FE350417B14AE270DC7544162BD53B83FE35041DD5D1FA50EC75441E3162BBA3FE3504176F4F6550EC754419EA461DF44E35041EDDE0CCB0EC75441DF0DFB1248E3504165C922400FC75441AA8C7ED14AE35041C74EDD220FC7544127EBA23F4EE35041146F3C730EC75441EE2F9F814FE3504176F4F6550EC7544153EFE0E050E35041628F9BC30DC754418FC2F5C853E350415C8FC2850CC754411F85EB9156E350413D0AD7530BC754411F85EB115AE350413D0AD7730AC75441C3F5284C58E35041A4703DFA00C75441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441EC51B8BE3FE350417B14AE270DC7544162BD53B83FE35041DF5D1FA50EC75441E5162BBA3FE3504173F4F6550EC75441A0A461DF44E35041EBDE0CCB0EC75441DE0DFB1248E3504163C922400FC75441AE8C7ED14AE35041C54EDD220FC7544127EBA23F4EE35041116F3C730EC75441F12F9F814FE3504173F4F6550EC754414EEFE0E050E350415D8F9BC30DC754418FC2F5C853E350415C8FC2850CC754411F85EB9156E350413D0AD7530BC754411F85EB115AE350413D0AD7730AC75441C3F5284C58E35041A4703DFA00C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633576 - 4247338
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441EC51B8BE3FE350417B14AE270DC7544162BD53B83FE35041DD5D1FA50EC75441E3162BBA3FE3504176F4F6550EC754419EA461DF44E35041EDDE0CCB0EC75441DF0DFB1248E3504165C922400FC75441AA8C7ED14AE35041C74EDD220FC7544127EBA23F4EE35041146F3C730EC75441EE2F9F814FE3504176F4F6550EC7544153EFE0E050E35041628F9BC30DC754418FC2F5C853E350415C8FC2850CC754411F85EB9156E350413D0AD7530BC754411F85EB115AE350413D0AD7730AC75441C3F5284C58E35041A4703DFA00C75441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441EC51B8BE3FE350417B14AE270DC7544162BD53B83FE35041DF5D1FA50EC75441E5162BBA3FE3504173F4F6550EC75441A0A461DF44E35041EBDE0CCB0EC75441DE0DFB1248E3504163C922400FC75441AE8C7ED14AE35041C54EDD220FC7544127EBA23F4EE35041116F3C730EC75441F12F9F814FE3504173F4F6550EC754414EEFE0E050E350415D8F9BC30DC754418FC2F5C853E350415C8FC2850CC754411F85EB9156E350413D0AD7530BC754411F85EB115AE350413D0AD7730AC75441C3F5284C58E35041A4703DFA00C75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>654639 - 171689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000EC51B80EC7DA50419A99992936345541B81E85EBC5DA50411F85EB1137345541333333A3C2DA5041AE47E12A393455419A999939BFDA50419A9999593B3455410AD7A330B8DA5041295C8F623E345541EC51B8BEADDA5041D7A3707D413455418FC2F568AFDA50418FC2F5784634554133333373B6DA5041666666865B3455418FC2F5A8C3DA5041C3F5280C58345541CDCCCC5CCADA504185EB511856345541713D0A97CCDA5041CDCCCCCC543455419A999909CFDA504148E17A24523455417B14AEE7D2DA5041AE47E1EA4D34554100000020D9DA5041A4703DBA46345541D7A3702DCBDA50410AD7A3F039345541EC51B80EC7DA50419A99992936345541
+</a>
+
+<b>
+010600000001000000010300000001000000130000003A627860D7DA5041D6B58FBF483455419D9FFF1FD9DA50414F183DBA46345541D7A3702DCBDA50410AD7A3F039345541D1B52D1FCBDA504173A9C0F9393455412BB15FC2BEDA50416BF5F4DF4134554134DEF568AFDA50413B15F67846345541E1E03C87AFDA50410BCC80D34634554126FD7FD6AFDA50415D9387C0473455411E44DD09B0DA5041CF54215A48345541AC2A66B8B0DA504128A10F644A345541B21C3473B6DA50415D4465865B345541471D3673B6DA5041FFA165865B345541FD2FF6A8C3DA5041BB6C280C58345541477ACD5CCADA5041527E5018563455412E090A97CCDA504190BECBCC54345541FDD09809CFDA50419E8C7B2452345541CC90D15FCFDA50410CA64AC6513455417B14AEE7D2DA5041AE47E1EA4D3455413A627860D7DA5041D6B58FBF48345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>656640 - 172033
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000007B14AE278CD550418FC2F57833395541E17A14DE8CD55041295C8FC23639554152B81E058DD550415C8FC275373955411F85EBC191D55041713D0AA738395541AE47E13A93D550410AD7A37034395541000000B095D550417B14AEF72E395541F6285C5F9BD55041EC51B8CE2B395541000000D0A2D550418FC2F5282C3955418FC2F5F8A9D5504185EB51B82C3955413D0AD783AFD550411F85EBA12D395541E17A144EB3D5504152B81E0530395541295C8FE2B6D55041713D0A873339554166666606BDD55041295C8F323B39554148E17A64D1D550418FC2F5F82839554114AE47E1D5D550415C8FC2A52E39554114AE4711D8D5504148E17AC4253955413D0AD7A3DBD550411F85EB411739554185EB5198D6D55041F6285C6F1239554133333353D6D55041D7A3702D1239554185EB5118D5D55041D7A3705D13395541F6285C5FD0D550415C8FC2D514395541CDCCCC7CCDD55041AE47E1FA1439554166666676C9D550417B14AE8715395541000000D0C6D55041295C8F62163955411F85EBA1C6D550417B14AE6716395541C3F5288CC5D550413333339316395541E17A14DEC3D550418FC2F5D816395541666666D6C1D55041B81E858B1639554133333353BFD550413D0AD7831739554148E17A24BDD55041CDCCCC5C183955417B14AE57BBD550413333335319395541F6285C0FBAD550416666664619395541B81E857BB8D5504114AE47E117395541C3F5288CB6D5504152B81EF51739554114AE47D1B4D55041C3F5284C18395541D7A3701DB2D55041CDCCCC8C193955419A999919AAD5504152B81E551D395541CDCCCC9C9ED5504185EB5168233955416666663696D550418FC2F5F82639554152B81E358AD55041E17A147E2A3955417B14AE278CD550418FC2F57833395541
+</a>
+
+<b>
+0106000000010000000103000000010000003E0000008C32548CC5D55041EB6C2C9316395541E17A14DEC3D550418FC2F5D8163955416E6666D6C1D55041B91E858B163955413E333353BFD55041BE0AD783173955415DE17A24BDD550410DCDCC5C18395541C614AE57BBD55041493333531939554195285C0FBAD5504187666646193955418D1E857BB8D550414AAE47E117395541A2F5288CB6D55041A8B81EF517395541C73ED2D7B5D550417CF28F181839554114AE47D1B4D55041C3F5284C18395541D7A3701DB2D55041CDCCCC8C193955411EBD27B9AFD55041FB0CC1AD1A395541AF999919AAD55041B3B81E551D39554138CDCC9C9ED5504190EB51682339554131D4FEEF97D55041EE778B3D263955416666663696D550418FC2F5F8263955415DB81E358AD55041E17A147E2A3955411216556C8BD5504169B51719303955417B14AE278CD550418FC2F578333955410A2A4B458CD550410126990134395541017B14DE8CD550411E5C8FC23639554166B81E058DD55041618FC27537395541F7340ECD90D55041E5F2BC713839554181F69BFA8FD550412186A5B93539554181F69BFA8FD5504156C885AE34395541AD40212790D55041C254EBCF33395541156A36D990D550412DD9ABB9313955410C72DB1092D55041005D6CA32F3955419D8ACAB795D55041AA230D822C39554153F5E3C29AD55041DF65ED762B3955414AAA82FA9FD55041A81B684A2B3955410EFDAC5EA1D55041DF65ED762B3955419978EC74A3D55041DF65ED762B395541FF149C05A5D550417CD1E21D2B3955410B91DB1BA7D55041881B684A2B3955411CA9CAC2AAD5504114A8CD6B2A395541B01C65A1ABD550417AC93DE6293955411156C4C2AED550417AC93DE629395541A0660E32B1D550414BF252982A395541997658A1B3D55041DF65ED762B39554133C98205B5D550413D4D22342D395541BBF297B7B5D55041D412E7762F395541CB236666BDD55041DDD0543F3A395541443330E7C0D55041C1110FA236395541ACCF2C29D1D55041FA9DC1E22839554148E17A64D1D550418FC2F5F828395541462C0F0BD3D5504194055D0F2B39554114AE4711D8D5504148E17AC4253955413D0AD7A3DBD550411F85EB411739554185EB5198D6D55041F6285C6F12395541112F3453D6D550410C94712D12395541DECA5218D5D55041B5FE715D133955418C99ABE6D1D55041815EF45B14395541F6285C5FD0D550415C8FC2D514395541F0506041CFD550414B2F22E4143955412BE5CC7CCDD550412AB4E2FA14395541726A6776C9D5504168D3AE8715395541B43F0CC7C7D55041E323DA1216395541000000D0C6D55041295C8F621639554130F9ECA1C6D5504124EBAD67163955418C32548CC5D55041EB6C2C9316395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>656640 - 387808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000007B14AE278CD550418FC2F57833395541E17A14DE8CD55041295C8FC23639554152B81E058DD550415C8FC275373955411F85EBC191D55041713D0AA738395541AE47E13A93D550410AD7A37034395541000000B095D550417B14AEF72E395541F6285C5F9BD55041EC51B8CE2B395541000000D0A2D550418FC2F5282C3955418FC2F5F8A9D5504185EB51B82C3955413D0AD783AFD550411F85EBA12D395541E17A144EB3D5504152B81E0530395541295C8FE2B6D55041713D0A873339554166666606BDD55041295C8F323B39554148E17A64D1D550418FC2F5F82839554114AE47E1D5D550415C8FC2A52E39554114AE4711D8D5504148E17AC4253955413D0AD7A3DBD550411F85EB411739554185EB5198D6D55041F6285C6F1239554133333353D6D55041D7A3702D1239554185EB5118D5D55041D7A3705D13395541F6285C5FD0D550415C8FC2D514395541CDCCCC7CCDD55041AE47E1FA1439554166666676C9D550417B14AE8715395541000000D0C6D55041295C8F62163955411F85EBA1C6D550417B14AE6716395541C3F5288CC5D550413333339316395541E17A14DEC3D550418FC2F5D816395541666666D6C1D55041B81E858B1639554133333353BFD550413D0AD7831739554148E17A24BDD55041CDCCCC5C183955417B14AE57BBD550413333335319395541F6285C0FBAD550416666664619395541B81E857BB8D5504114AE47E117395541C3F5288CB6D5504152B81EF51739554114AE47D1B4D55041C3F5284C18395541D7A3701DB2D55041CDCCCC8C193955419A999919AAD5504152B81E551D395541CDCCCC9C9ED5504185EB5168233955416666663696D550418FC2F5F82639554152B81E358AD55041E17A147E2A3955417B14AE278CD550418FC2F57833395541
+</a>
+
+<b>
+0106000000010000000103000000010000003E0000008C32548CC5D55041EB6C2C9316395541E17A14DEC3D550418FC2F5D8163955416E6666D6C1D55041B91E858B163955413E333353BFD55041BE0AD783173955415DE17A24BDD550410DCDCC5C18395541C614AE57BBD55041493333531939554195285C0FBAD5504187666646193955418D1E857BB8D550414AAE47E117395541A2F5288CB6D55041A8B81EF517395541C73ED2D7B5D550417CF28F181839554114AE47D1B4D55041C3F5284C18395541D7A3701DB2D55041CDCCCC8C193955411EBD27B9AFD55041FB0CC1AD1A395541AF999919AAD55041B3B81E551D39554138CDCC9C9ED5504190EB51682339554131D4FEEF97D55041EE778B3D263955416666663696D550418FC2F5F8263955415DB81E358AD55041E17A147E2A3955411216556C8BD5504169B51719303955417B14AE278CD550418FC2F578333955410A2A4B458CD550410126990134395541017B14DE8CD550411E5C8FC23639554166B81E058DD55041618FC27537395541F7340ECD90D55041E5F2BC713839554181F69BFA8FD550412186A5B93539554181F69BFA8FD5504156C885AE34395541AD40212790D55041C254EBCF33395541156A36D990D550412DD9ABB9313955410C72DB1092D55041005D6CA32F3955419D8ACAB795D55041AA230D822C39554153F5E3C29AD55041DF65ED762B3955414AAA82FA9FD55041A81B684A2B3955410EFDAC5EA1D55041DF65ED762B3955419978EC74A3D55041DF65ED762B395541FF149C05A5D550417CD1E21D2B3955410B91DB1BA7D55041881B684A2B3955411CA9CAC2AAD5504114A8CD6B2A395541B01C65A1ABD550417AC93DE6293955411156C4C2AED550417AC93DE629395541A0660E32B1D550414BF252982A395541997658A1B3D55041DF65ED762B39554133C98205B5D550413D4D22342D395541BBF297B7B5D55041D412E7762F395541CB236666BDD55041DDD0543F3A395541443330E7C0D55041C1110FA236395541ACCF2C29D1D55041FA9DC1E22839554148E17A64D1D550418FC2F5F828395541462C0F0BD3D5504194055D0F2B39554114AE4711D8D5504148E17AC4253955413D0AD7A3DBD550411F85EB411739554185EB5198D6D55041F6285C6F12395541112F3453D6D550410C94712D12395541DECA5218D5D55041B5FE715D133955418C99ABE6D1D55041815EF45B14395541F6285C5FD0D550415C8FC2D514395541F0506041CFD550414B2F22E4143955412BE5CC7CCDD550412AB4E2FA14395541726A6776C9D5504168D3AE8715395541B43F0CC7C7D55041E323DA1216395541000000D0C6D55041295C8F621639554130F9ECA1C6D5504124EBAD67163955418C32548CC5D55041EB6C2C9316395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>657980 - 3828135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B00000052B81ED5AB0D5141B81E85AB707F5441D7A370EDB50D5141F6285CAF737F5441AE47E19AB60D514133333303737F5441295C8F72B50D51411F85EB116F7F5441B81E852BB50D5141CDCCCC7C607F544152B81E35B10D51411F85EBD1617F5441295C8F02AE0D5141AE47E1BA617F5441333333B3AB0D5141D7A370DD5F7F544148E17A74AA0D5141F6285C9F5A7F54419A999989A80D5141EC51B8BE5A7F544148E17A04A50D514185EB51685B7F5441E17A142EA20D5141E17A14BE4C7F5441EC51B86E9B0D5141C3F5289C4D7F5441AE47E13A9B0D5141000000504C7F54413D0AD7D3920D5141295C8FE24C7F54413D0AD7238C0D514114AE47A14D7F54418FC2F5188B0D514148E17A344F7F544100000050840D5141C3F5285C517F5441A4703DBA7B0D5141D7A3704D537F5441CDCCCC7C700D514185EB51F8537F54418FC2F5386A0D51419A9999B9547F544114AE4741680D5141000000105F7F54410AD7A3E0640D5141713D0AF7757F5441666666E6620D5141CDCCCC5C7E7F54410AD7A3E06F0D5141B81E85DB7B7F5441AE47E1BA940D5141EC51B85E747F544152B81ED5AB0D5141B81E85AB707F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000295C8F12900D514148E17AB4317F5441B81E85FB8C0D5141EC51B8DE2D7F5441D7A3700D880D514185EB51C8257F54415C8FC245840D5141E17A14FE197F5441295C8FE27E0D5141295C8FA20C7F5441295C8F42790D514148E17AE4027F5441333333D3770D51419A9999E9FF7E5441F6285CAF730D5141A4703DBAF27E5441D7A370DD700D5141A4703DBAE77E5441295C8FD2670D514133333313E97E5441713D0AD7690D51413D0AD7B3F57E544114AE47516B0D5141F6285C2F097F544114AE47B16B0D5141295C8F721D7F54411F85EBF16C0D514148E17A242D7F5441B81E85DB6D0D51413D0AD7833C7F5441F6285C4F6B0D5141B81E851B4F7F54418FC2F5386A0D51419A9999B9547F5441CDCCCC7C700D514185EB51F8537F5441B4FBC7197F0D5141C9F81AC1517F54412F8418B4850D51412AADBBB0507F54413F806EE1980D514134B8FA784C7F5441EEF005E2980D5141662BA3114B7F5441C3F5280C970D514166666686467F5441C3F528EC950D5141CDCCCC3C3F7F544148E17AF4950D5141CDCCCC9C3D7F544158F2F507950D5141BC027783387F5441295C8F12900D514148E17AB4317F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>658692 - 3916930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003C000000B81E85EB430F5141333333E37D8554418FC2F568410F5141E17A149E7B855441CDCCCCBC3F0F5141F6285CEF79855441A4703DFA3C0F5141AE47E1CA77855441E17A14AE390F51418FC2F5B875855441F6285CBF350F514148E17AB47285544100000010340F5141713D0A777185544100000040320F5141A4703D2A70855441A4703D6A300F5141333333936E855441AE47E1AA2E0F51415C8FC2356D855441EC51B84E2D0F51418FC2F5F86B855441F6285C8F2B0F51418FC2F5786A855441CDCCCCCC280F51411F85EBD168855441333333F3270F514185EB5168688554413D0AD7F3250F51411F85EBF16685544148E17A64240F514152B81EE56585544114AE47A1230F514152B81E7565855441EC51B89E220F51411F85EB11658554411F85EB71210F514114AE47B164855441333333231D0F514148E17A84638554410AD7A3101B0F51410AD7A310638554413D0AD793190F51410AD7A3D0628554410AD7A390180F51410AD7A3D0628554417B14AE47160F514166666626628554418FC2F508140F51410000003061855441666666E6110F51415C8FC235608554417B14AEA70F0F5141F6285CDF5E855441B81E85AB0B0F5141F6285CFF5A855441A4703D3A040F5141000000D0618554418FC2F558060F51410AD7A3A063855441666666360C0F5141EC51B81E678554411F85EB910F0F5141F6285CEF68855441EC51B80E110F5141666666066A855441E17A14AE120F51410AD7A3106B8554410AD7A370130F51413D0AD7A36B855441CDCCCCEC140F514185EB51E86D855441000000E0150F514152B81ED56D85544133333323180F514152B81E956D855441333333031A0F51415C8FC2856D8554419A9999E9240F5141666666E67485544185EB51482C0F5141C3F528CC79855441AE47E12A2F0F5141D7A370BD7B855441A4703D6A310F5141E17A141E7D8554419A999949330F51411F85EB217E8554418FC2F5D8340F5141C3F528CC7E85544185EB5168370F5141000000507F85544148E17A64360F5141295C8F4283855441666666B63A0F51410AD7A3B0848554419A9999E93B0F514148E17A84858554415C8FC2F53C0F514185EB5148868554411F85EB313E0F5141666666368785544152B81E253F0F5141A4703D1A888554413D0AD7E3400F5141C3F5280C8A85544185EB5138470F5141000000708E855441C3F5281C550F51417B14AE57968554419A9999D9550F5141AE47E12A9585544148E17A94590F514152B81E658E85544100000050520F5141000000E089855441EC51B88E490F51413D0AD7F383855441B81E85EB430F5141333333E37D855441
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000105839EC130F5141EE7C3FB56A855441BA490C22160F5141E17A14666A855441666666D6170F5141DBF97EEA69855441295C8F721B0F51417368917D6C855441508D9766210F51413F355EBA708554411E1A1BDA250F5141CF5914F173855441AE47E1BA2D0F5141643BDF9F798554418CE8EBD6300F5141C89A5EA77B855441169411C5330F514150716E7D7D8554412E51D243360F5141745428157F8554416F1283A8380F5141AE47E1AA80855441B4C8768E370F5141C976BE3782855441D78028283A0F5141752A8E8184855441666666B63A0F51410AD7A3B0848554419A9999E93B0F514148E17A84858554415C8FC2F53C0F514185EB5148868554411F85EB313E0F5141666666368785544152B81E253F0F5141A4703D1A888554413D0AD7E3400F5141C3F5280C8A85544185EB5138470F5141000000708E855441996D1C07530F5141A66A5028958554415F440371540F5141D3DC7DCD93855441AD25869D570F51418111F5558F855441F432FD33580F5141DB3302238E855441D77BBA7D580F51417A55C0B78D85544100000050520F5141000000E089855441EC51B88E490F51413D0AD7F383855441B81E85EB430F5141333333E37D8554418FC2F568410F5141E17A149E7B855441CDCCCCBC3F0F5141F6285CEF79855441A4703DFA3C0F5141AE47E1CA77855441E17A14AE390F51418FC2F5B875855441F6285CBF350F514148E17AB47285544100000010340F5141713D0A777185544100000040320F5141A4703D2A70855441A4703D6A300F5141333333936E855441AE47E1AA2E0F51415C8FC2356D855441EC51B84E2D0F51418FC2F5F86B855441F6285C8F2B0F51418FC2F5786A855441CDCCCCCC280F51411F85EBD168855441333333F3270F514185EB5168688554413D0AD7F3250F51411F85EBF16685544148E17A64240F514152B81EE56585544114AE47A1230F514152B81E7565855441EC51B89E220F51411F85EB11658554411F85EB71210F514114AE47B164855441333333231D0F514148E17A84638554410AD7A3101B0F51410AD7A310638554413D0AD793190F51410AD7A3D0628554410AD7A390180F51410AD7A3D0628554417B14AE47160F514166666626628554418FC2F508140F51410000003061855441666666E6110F51415C8FC235608554417B14AEA70F0F5141F6285CDF5E855441B81E85AB0B0F5141F6285CFF5A8554413B8EFC8B040F51414F50258561855441CDCCCCB4050F51411D5A64FB61855441B81E857B0A0F51415A643BEF64855441E92631C8110F51411B2FDD7469855441105839EC130F5141EE7C3FB56A855441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>659629 - 3040408
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C8FBCB75041AE47E17A46E15441C3F5284CC0B75041EC51B88E46E15441AE47E1FAC3B75041713D0A0747E154415C8FC235D2B75041C3F5288C49E15441295C8F52E2B75041666666664CE154417B14AEC7E3B750419A9999B94DE15441E17A14BE27B85041AE47E1BA62E154411F85EBE129B850413D0AD7D35FE15441666666162AB85041A4703DAA5DE15441713D0AE729B8504152B81E255CE15441E17A14CE0EB850413D0AD7F345E1544148E17AB4FEB750413D0AD79333E15441F6285CFFE8B75041CDCCCCAC22E15441B81E85FBECB75041F6285C4F0DE15441CDCCCC2CECB750410AD7A3200CE154415C8FC235DEB750413333333309E154411F85EBF1D3B75041C3F5280C07E154417B14AE57D0B75041F6285CCF13E1544166666686CFB750413333336317E15441CDCCCC0CCFB75041713D0AF71AE15441AE47E1CACEB75041B81E85FB1DE1544148E17A14CEB7504185EB512825E154410AD7A3A0CDB75041000000702AE154415C8FC255BFB750417B14AE7724E1544185EB5128B9B750410AD7A39045E1544185EB51F8B9B75041A4703D8A46E15441F6285C8FBCB75041AE47E17A46E15441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000D4D86B21D2B7504159E68E8849E1544169C6FAACE2B750412C8199B84CE154413DE66E53E4B75041590DCBE44DE1544116DD8031FCB7504136A0374555E15441987C66DF10B85041D08763A95BE15441097008E427B85041E771678762E1544168F8C6E729B8504191CC89CA5FE15441E4563BE929B8504186D520375CE15441E8A8F8FF27B850416A9337965AE154418C996E841FB850413E31C1A353E1544158434E8F17B85041B2EC5F1F4DE154414A52CF9310B850411958706747E15441DD9944B20EB85041571719D445E154411F4FB0B809B850411F748E2640E15441E3217613FEB750410E97761633E154418D9019F6F5B750411310EEC42CE15441F6285CFFE8B75041CDCCCCAC22E15441B81E85FBECB75041F6285C4F0DE1544115F2EBD1EBB75041D8CC960D0CE15441306AA52EDEB750415635B53109E154411FE16B3AD9B75041BE01F0E923E154415A5D0E2BD6B750419A19925234E15441D4D86B21D2B7504159E68E8849E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>659629 - 3272042
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C8FBCB75041AE47E17A46E15441C3F5284CC0B75041EC51B88E46E15441AE47E1FAC3B75041713D0A0747E154415C8FC235D2B75041C3F5288C49E15441295C8F52E2B75041666666664CE154417B14AEC7E3B750419A9999B94DE15441E17A14BE27B85041AE47E1BA62E154411F85EBE129B850413D0AD7D35FE15441666666162AB85041A4703DAA5DE15441713D0AE729B8504152B81E255CE15441E17A14CE0EB850413D0AD7F345E1544148E17AB4FEB750413D0AD79333E15441F6285CFFE8B75041CDCCCCAC22E15441B81E85FBECB75041F6285C4F0DE15441CDCCCC2CECB750410AD7A3200CE154415C8FC235DEB750413333333309E154411F85EBF1D3B75041C3F5280C07E154417B14AE57D0B75041F6285CCF13E1544166666686CFB750413333336317E15441CDCCCC0CCFB75041713D0AF71AE15441AE47E1CACEB75041B81E85FB1DE1544148E17A14CEB7504185EB512825E154410AD7A3A0CDB75041000000702AE154415C8FC255BFB750417B14AE7724E1544185EB5128B9B750410AD7A39045E1544185EB51F8B9B75041A4703D8A46E15441F6285C8FBCB75041AE47E17A46E15441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000D4D86B21D2B7504159E68E8849E1544169C6FAACE2B750412C8199B84CE154413DE66E53E4B75041590DCBE44DE1544116DD8031FCB7504136A0374555E15441987C66DF10B85041D08763A95BE15441097008E427B85041E771678762E1544168F8C6E729B8504191CC89CA5FE15441E4563BE929B8504186D520375CE15441E8A8F8FF27B850416A9337965AE154418C996E841FB850413E31C1A353E1544158434E8F17B85041B2EC5F1F4DE154414A52CF9310B850411958706747E15441DD9944B20EB85041571719D445E154411F4FB0B809B850411F748E2640E15441E3217613FEB750410E97761633E154418D9019F6F5B750411310EEC42CE15441F6285CFFE8B75041CDCCCCAC22E15441B81E85FBECB75041F6285C4F0DE1544115F2EBD1EBB75041D8CC960D0CE15441306AA52EDEB750415635B53109E154411FE16B3AD9B75041BE01F0E923E154415A5D0E2BD6B750419A19925234E15441D4D86B21D2B7504159E68E8849E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660021 - 59101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000000000010C8B55041C3F5282C4BD1544114AE4791DBB5504152B81EB54BD154417B14AE47E3B55041AE47E13A4CD15441713D0A07E5B55041666666363BD15441AE47E19AD1B550417B14AE4739D1544100000070D2B55041C3F5286C37D1544114AE4701CBB550411F85EB6136D1544152B81E55C0B550418FC2F5484BD15441713D0AE7C1B55041333333434BD1544100000010C8B55041C3F5282C4BD15441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000040836E31CBB550414A5DA86836D154411D576278D2B55041F322E26737D15441BBFD48A3D1B55041C1977B4639D15441AB5E2376E1B55041416E91DB3AD15441C55B0004E5B55041990019363BD15441F89BE72AE5B550410CB28FDA39D154415C8FC235E5B5504114AE477139D15441B81E853BE5B55041F6285CEF37D154411DBDFF8ADEB550419DA0253737D154414DBC8B4CBBB550411426CA7233D15441AB7D0CEAB9B5504110638FDF40D154415C8FC2F5B8B55041713D0A274AD1544106BBE439B8B5504126B1E1D24AD15441E5B94EA4B7B550417DD5C0654BD15441713D0A17BBB55041CDCCCC5C4BD1544152B81E55C0B550418FC2F5484BD15441D5E2A146C6B55041B00E05A53FD15441CD83FCFDCAB55041C058E06136D1544119DB1701CBB55041782F496236D1544114AE4701CBB550411F85EB6136D1544140836E31CBB550414A5DA86836D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660088 - 1497705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000130000001F85EB510ABB504166666686EFDB544185EB51C80FBB5041333333E3EEDB54418FC2F5C80ABB50415C8FC2C5E9DB54413D0AD76303BB50415C8FC2D5E2DB544114AE47E1FCBA5041295C8F12DBDB5441A4703D2AF6BA50410AD7A370D2DB54410AD7A360F1BA5041C3F5281CCADB544185EB51F8EEBA5041F6285CEFC5DB5441EC51B8AEE8BA5041295C8FC2C5DB54411F85EBE1E6BA5041B81E85BBC8DB54413D0AD7D3E2BA5041666666B6CEDB544133333373E0BA5041B81E853BD3DB5441CDCCCCACDDBA5041713D0AD7DADB5441AE47E1DAE4BA5041B81E850BDFDB5441F6285C8FE6BA50419A9999A9DCDB544185EB5108F3BA50415C8FC225E2DB5441D7A3700DFEBA50413D0AD703E8DB54410000009005BB5041EC51B83EEFDB54411F85EB510ABB504166666686EFDB5441010300000001000000320000000AD7A360D2BA50418FC2F58811DC54415C8FC205D7BA5041F6285C5F10DC544166666616DBBA50418FC2F58811DC54418FC2F538DEBA50415C8FC22514DC54417B14AEA7E1BA5041CDCCCCDC14DC5441C3F5281CE6BA504114AE47F10EDC54417B14AE37ECBA50411F85EBD10DDC5441D7A3708DEDBA5041333333D30BDC54419A9999D9F0BA5041666666360ADC5441E17A14CEF3BA50413D0AD74309DC54418FC2F548F6BA5041CDCCCCDC08DC544152B81E25F8BA504152B81EA508DC544152B81EC5FABA5041CDCCCCDC08DC5441713D0A17FEBA5041666666C609DC54410000005000BB5041295C8FE20ADC54410AD7A39004BB5041295C8F3206DC5441B81E854B08BB50417B14AE3704DC5441666666D60DBB5041E17A140E05DC5441713D0A5717BB50413D0AD7A30ADC54419A9999E917BB504185EB51880CDC5441CDCCCCBC1BBB5041295C8F820EDC544114AE47D11EBB50410AD7A35010DC544114AE476122BB5041295C8FA211DC54419A99999927BB50418FC2F52815DC5441B81E856B28BB5041D7A3701D16DC5441295C8F0229BB5041E17A143E08DC5441AE47E1CA29BB50418FC2F5C8FBDB5441B81E85AB28BB50417B14AE37FADB54410AD7A37022BB5041295C8F92F7DB54413D0AD7B31ABB504185EB51A8F3DB5441666666A613BB5041C3F5286CF0DB544148E17A740ABB504133333383F1DB5441CDCCCC5C03BB50417B14AE67F1DB5441D7A3705DF2BA5041F6285C5FF3DB54415C8FC2B5E6BA50417B14AE77F3DB5441CDCCCC2CDABA5041D7A370DDF3DB54419A999959D6BA5041666666B6F2DB54410AD7A3B0D4BA504148E17A84F3DB5441E17A143ED1BA50419A999909FCDB5441B81E859BCFBA5041C3F528DCFDDB5441295C8F72CABA5041295C8F6204DC5441D7A370BDC7BA50417B14AE2708DC5441713D0A47C3BA50411F85EB910EDC544185EB5138C1BA50410000006011DC54417B14AE67BFBA5041EC51B82E14DC5441C3F528DCBCBA5041713D0AB719DC54417B14AE47BFBA5041D7A3708D19DC5441713D0A47C7BA50419A99993918DC54415C8FC2D5CFBA5041E17A140E16DC54410AD7A360D2BA50418FC2F58811DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C34FA3E105BB5041B5267471F1DB5441CDCCCC5C03BB50417B14AE67F1DB5441D7A3705DF2BA5041F6285C5FF3DB54415C8FC2B5E6BA50417B14AE77F3DB5441CDCCCC2CDABA5041D7A370DDF3DB54419A999959D6BA5041666666B6F2DB54410AD7A3B0D4BA504148E17A84F3DB5441E17A143ED1BA50419A999909FCDB5441B81E859BCFBA5041C3F528DCFDDB5441295C8F72CABA5041295C8F6204DC5441D7A370BDC7BA50417B14AE2708DC5441713D0A47C3BA50411F85EB910EDC544185EB5138C1BA50410000006011DC54417B14AE67BFBA5041EC51B82E14DC5441C3F528DCBCBA5041713D0AB719DC54417B14AE47BFBA5041D7A3708D19DC5441713D0A47C7BA50419A99993918DC54415C8FC2D5CFBA5041E17A140E16DC54410AD7A360D2BA50418FC2F58811DC54415C8FC205D7BA5041F6285C5F10DC544166666616DBBA50418FC2F58811DC54418FC2F538DEBA50415C8FC22514DC54417B14AEA7E1BA5041CDCCCCDC14DC5441C3F5281CE6BA504114AE47F10EDC54417B14AE37ECBA50411F85EBD10DDC5441D7A3708DEDBA5041333333D30BDC54419A9999D9F0BA5041666666360ADC5441E17A14CEF3BA50413D0AD74309DC54418FC2F548F6BA5041CDCCCCDC08DC544152B81E25F8BA504152B81EA508DC544152B81EC5FABA5041CDCCCCDC08DC5441713D0A17FEBA5041666666C609DC54410000005000BB5041295C8FE20ADC54410AD7A39004BB5041295C8F3206DC5441B81E854B08BB50417B14AE3704DC5441666666D60DBB5041E17A140E05DC5441713D0A5717BB50413D0AD7A30ADC54419A9999E917BB504185EB51880CDC5441CDCCCCBC1BBB5041295C8F820EDC544114AE47D11EBB50410AD7A35010DC544114AE476122BB5041295C8FA211DC54419A99999927BB50418FC2F52815DC5441B81E856B28BB5041D7A3701D16DC5441295C8F0229BB5041E17A143E08DC5441AE47E1CA29BB50418FC2F5C8FBDB5441B81E85AB28BB50417B14AE37FADB54410AD7A37022BB5041295C8F92F7DB54413D0AD7B31ABB504185EB51A8F3DB5441666666A613BB5041C3F5286CF0DB54412954D9AB11BB5041773A35A8F0DB54413195C4BB11BB5041B18C99A3F0DB544185EB51C80FBB5041333333E3EEDB54418FC2F5C80ABB50415C8FC2C5E9DB54413D0AD76303BB50415C8FC2D5E2DB544114AE47E1FCBA5041295C8F12DBDB5441A4703D2AF6BA50410AD7A370D2DB54410AD7A360F1BA5041C3F5281CCADB544185EB51F8EEBA5041F6285CEFC5DB5441EC51B8AEE8BA5041295C8FC2C5DB54411F85EBE1E6BA5041B81E85BBC8DB54413D0AD7D3E2BA5041666666B6CEDB544133333373E0BA5041B81E853BD3DB5441CDCCCCACDDBA5041713D0AD7DADB54418C234031DBBA5041CCA53CF8E2DB5441ACD53B19DEBA5041079AB1B4E2DB544163EC36B0E2BA5041EDDFD60CE2DB5441AE47E1DAE4BA5041B81E850BDFDB5441F6285C8FE6BA50419A9999A9DCDB544185EB5108F3BA50415C8FC225E2DB5441D7A3700DFEBA50413D0AD703E8DB54410000009005BB5041EC51B83EEFDB5441C34FA3E105BB5041B5267471F1DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660088 - 3283524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000130000001F85EB510ABB504166666686EFDB544185EB51C80FBB5041333333E3EEDB54418FC2F5C80ABB50415C8FC2C5E9DB54413D0AD76303BB50415C8FC2D5E2DB544114AE47E1FCBA5041295C8F12DBDB5441A4703D2AF6BA50410AD7A370D2DB54410AD7A360F1BA5041C3F5281CCADB544185EB51F8EEBA5041F6285CEFC5DB5441EC51B8AEE8BA5041295C8FC2C5DB54411F85EBE1E6BA5041B81E85BBC8DB54413D0AD7D3E2BA5041666666B6CEDB544133333373E0BA5041B81E853BD3DB5441CDCCCCACDDBA5041713D0AD7DADB5441AE47E1DAE4BA5041B81E850BDFDB5441F6285C8FE6BA50419A9999A9DCDB544185EB5108F3BA50415C8FC225E2DB5441D7A3700DFEBA50413D0AD703E8DB54410000009005BB5041EC51B83EEFDB54411F85EB510ABB504166666686EFDB5441010300000001000000320000000AD7A360D2BA50418FC2F58811DC54415C8FC205D7BA5041F6285C5F10DC544166666616DBBA50418FC2F58811DC54418FC2F538DEBA50415C8FC22514DC54417B14AEA7E1BA5041CDCCCCDC14DC5441C3F5281CE6BA504114AE47F10EDC54417B14AE37ECBA50411F85EBD10DDC5441D7A3708DEDBA5041333333D30BDC54419A9999D9F0BA5041666666360ADC5441E17A14CEF3BA50413D0AD74309DC54418FC2F548F6BA5041CDCCCCDC08DC544152B81E25F8BA504152B81EA508DC544152B81EC5FABA5041CDCCCCDC08DC5441713D0A17FEBA5041666666C609DC54410000005000BB5041295C8FE20ADC54410AD7A39004BB5041295C8F3206DC5441B81E854B08BB50417B14AE3704DC5441666666D60DBB5041E17A140E05DC5441713D0A5717BB50413D0AD7A30ADC54419A9999E917BB504185EB51880CDC5441CDCCCCBC1BBB5041295C8F820EDC544114AE47D11EBB50410AD7A35010DC544114AE476122BB5041295C8FA211DC54419A99999927BB50418FC2F52815DC5441B81E856B28BB5041D7A3701D16DC5441295C8F0229BB5041E17A143E08DC5441AE47E1CA29BB50418FC2F5C8FBDB5441B81E85AB28BB50417B14AE37FADB54410AD7A37022BB5041295C8F92F7DB54413D0AD7B31ABB504185EB51A8F3DB5441666666A613BB5041C3F5286CF0DB544148E17A740ABB504133333383F1DB5441CDCCCC5C03BB50417B14AE67F1DB5441D7A3705DF2BA5041F6285C5FF3DB54415C8FC2B5E6BA50417B14AE77F3DB5441CDCCCC2CDABA5041D7A370DDF3DB54419A999959D6BA5041666666B6F2DB54410AD7A3B0D4BA504148E17A84F3DB5441E17A143ED1BA50419A999909FCDB5441B81E859BCFBA5041C3F528DCFDDB5441295C8F72CABA5041295C8F6204DC5441D7A370BDC7BA50417B14AE2708DC5441713D0A47C3BA50411F85EB910EDC544185EB5138C1BA50410000006011DC54417B14AE67BFBA5041EC51B82E14DC5441C3F528DCBCBA5041713D0AB719DC54417B14AE47BFBA5041D7A3708D19DC5441713D0A47C7BA50419A99993918DC54415C8FC2D5CFBA5041E17A140E16DC54410AD7A360D2BA50418FC2F58811DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C34FA3E105BB5041B5267471F1DB5441CDCCCC5C03BB50417B14AE67F1DB5441D7A3705DF2BA5041F6285C5FF3DB54415C8FC2B5E6BA50417B14AE77F3DB5441CDCCCC2CDABA5041D7A370DDF3DB54419A999959D6BA5041666666B6F2DB54410AD7A3B0D4BA504148E17A84F3DB5441E17A143ED1BA50419A999909FCDB5441B81E859BCFBA5041C3F528DCFDDB5441295C8F72CABA5041295C8F6204DC5441D7A370BDC7BA50417B14AE2708DC5441713D0A47C3BA50411F85EB910EDC544185EB5138C1BA50410000006011DC54417B14AE67BFBA5041EC51B82E14DC5441C3F528DCBCBA5041713D0AB719DC54417B14AE47BFBA5041D7A3708D19DC5441713D0A47C7BA50419A99993918DC54415C8FC2D5CFBA5041E17A140E16DC54410AD7A360D2BA50418FC2F58811DC54415C8FC205D7BA5041F6285C5F10DC544166666616DBBA50418FC2F58811DC54418FC2F538DEBA50415C8FC22514DC54417B14AEA7E1BA5041CDCCCCDC14DC5441C3F5281CE6BA504114AE47F10EDC54417B14AE37ECBA50411F85EBD10DDC5441D7A3708DEDBA5041333333D30BDC54419A9999D9F0BA5041666666360ADC5441E17A14CEF3BA50413D0AD74309DC54418FC2F548F6BA5041CDCCCCDC08DC544152B81E25F8BA504152B81EA508DC544152B81EC5FABA5041CDCCCCDC08DC5441713D0A17FEBA5041666666C609DC54410000005000BB5041295C8FE20ADC54410AD7A39004BB5041295C8F3206DC5441B81E854B08BB50417B14AE3704DC5441666666D60DBB5041E17A140E05DC5441713D0A5717BB50413D0AD7A30ADC54419A9999E917BB504185EB51880CDC5441CDCCCCBC1BBB5041295C8F820EDC544114AE47D11EBB50410AD7A35010DC544114AE476122BB5041295C8FA211DC54419A99999927BB50418FC2F52815DC5441B81E856B28BB5041D7A3701D16DC5441295C8F0229BB5041E17A143E08DC5441AE47E1CA29BB50418FC2F5C8FBDB5441B81E85AB28BB50417B14AE37FADB54410AD7A37022BB5041295C8F92F7DB54413D0AD7B31ABB504185EB51A8F3DB5441666666A613BB5041C3F5286CF0DB54412954D9AB11BB5041773A35A8F0DB54413195C4BB11BB5041B18C99A3F0DB544185EB51C80FBB5041333333E3EEDB54418FC2F5C80ABB50415C8FC2C5E9DB54413D0AD76303BB50415C8FC2D5E2DB544114AE47E1FCBA5041295C8F12DBDB5441A4703D2AF6BA50410AD7A370D2DB54410AD7A360F1BA5041C3F5281CCADB544185EB51F8EEBA5041F6285CEFC5DB5441EC51B8AEE8BA5041295C8FC2C5DB54411F85EBE1E6BA5041B81E85BBC8DB54413D0AD7D3E2BA5041666666B6CEDB544133333373E0BA5041B81E853BD3DB5441CDCCCCACDDBA5041713D0AD7DADB54418C234031DBBA5041CCA53CF8E2DB5441ACD53B19DEBA5041079AB1B4E2DB544163EC36B0E2BA5041EDDFD60CE2DB5441AE47E1DAE4BA5041B81E850BDFDB5441F6285C8FE6BA50419A9999A9DCDB544185EB5108F3BA50415C8FC225E2DB5441D7A3700DFEBA50413D0AD703E8DB54410000009005BB5041EC51B83EEFDB5441C34FA3E105BB5041B5267471F1DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660106 - 312925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000440000008FC2F598FBBE5041B81E851BCDDA5441666666C6F6BE50419A999959DDDA54410AD7A3D0F8BE5041EC51B80EDEDA544148E17A44FABE504148E17AF4DEDA5441CDCCCC3CFBBE50419A999939DEDA544133333323FEBE504148E17AD4DCDA54417B14AEF7FEBE50413D0AD793DBDA54413D0AD793FFBE504114AE4731DADA54415C8FC285FEBE50411F85EB11CDDA5441713D0A47FFBE504148E17A04CADA54417B14AE87FFBE504133333313C8DA544152B81E1502BF50415C8FC2B5BDDA544114AE47C101BF5041A4703DEAB3DA54418FC2F50802BF50410AD7A330B0DA54415C8FC28503BF50415C8FC2C5ACDA54417B14AEA705BF5041F6285CAFA9DA5441E17A144E08BF5041E17A140EA7DA5441CDCCCC6C0BBF50417B14AEF7A4DA54415C8FC2E50EBF5041A4703D8AA3DA544148E17A7412BF5041F6285C6FA2DA54411F85EBD113BF504133333323A2DA54418FC2F55813BF5041E17A142EA0DA54417B14AE6713BF5041C3F5288C9DDA54413333331321BF5041AE47E19A9BDA5441F6285CBF2EBF50417B14AE5798DA544148E17A8438BF504114AE47B197DA5441713D0A2740BF5041B81E857B96DA544114AE476146BF5041CDCCCC4C96DA544148E17A644CBF5041295C8FE296DA5441F6285CBF52BF5041EC51B82E99DA5441C3F528CC61BF5041333333C393DA5441A4703DEA5BBF5041E17A14CE93DA54411F85EBD150BF504152B81EE591DA54413D0AD7634EBF5041713D0A1792DA54411F85EBD14DBF5041E17A140E94DA5441CDCCCC6C4CBF50413D0AD7F393DA54419A9999794CBF504148E17A2492DA5441F6285C1F3DBF50413D0AD77392DA5441CDCCCCDC36BF504185EB510892DA5441C3F5281C35BF5041EC51B87E90DA5441AE47E1EA2ABF50418FC2F5A88EDA54418FC2F55820BF50411F85EB8190DA544185EB51380CBF504114AE479191DA544114AE47E107BF50417B14AEC791DA544148E17A0407BF5041B81E85DB90DA544148E17A7407BF50411F85EBD18DDA544114AE470106BF50418FC2F5088DDA5441713D0A3705BF5041E17A141E8CDA5441666666B603BF5041F6285C5F8ADA5441E17A14CE01BF50411F85EB7188DA54415C8FC23500BF5041AE47E10A8ADA54411F85EB5101BF5041666666868CDA5441E17A147E02BF50419A9999C993DA5441D7A3708DFDBE5041CDCCCC8C96DA544148E17A34FABE504114AE47F199DA54417B14AE07FABE50419A9999199EDA54415C8FC215F8BE5041295C8F42A0DA5441C3F5283CEDBE5041C3F5289CA2DA544133333343ECBE5041AE47E1AAA7DA5441A4703D5AEABE504148E17A84AADA5441C3F5283CEBBE5041EC51B84EACDA54411F85EB71FCBE504133333373A4DA54415C8FC2A5FEBE504133333343A5DA5441295C8F12FEBE5041713D0AA7AFDA54410AD7A3F0FDBE504148E17AD4BFDA54411F85EB81FDBE5041295C8FB2C6DA544100000080FCBE50413D0AD713CADA54418FC2F598FBBE5041B81E851BCDDA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003100000048E17A644CBF5041295C8FE296DA5441F6285CBF52BF5041EC51B82E99DA5441EB05F88556BF5041E6C39CD297DA544131B224CC61BF5041163B33C393DA544144AF1ACC61BF50419A4D33C393DA54412140FCF55EBF50418E4C72C893DA5441FA903DEA5BBF5041A0CF15CE93DA5441C82DC19151BF5041D6ED240692DA544166EC939151BF504167231D0692DA5441E0AD7F9151BF50413BA7190692DA54416E4CD3D150BF5041E4A920E591DA5441056AD4664EBF50413FBCBA1092DA5441075E2F794CBF50410F81803392DA544198A9C3053CBF50414E87275C93DA5441B5F279E42ABF50414296E2EA90DA544171233E9A20BF5041AA31B8BE92DA5441138128FC06BF5041393F0B1794DA544164C6C2A505BF50410345661695DA5441D7EB0A77FFBE5041006DAF07A5DA5441A840FFAFFEBE5041B872B89EAFDA54416DFBA3F0FDBE5041778669D4BFDA54410AD7A3F0FDBE504148E17AD4BFDA544146B798D9FEBE5041A8ED138EC5DA544102241E55FFBE5041E6649899C5DA5441619E1D1502BF5041586AC3B5BDDA5441523447C101BF504185743EEAB3DA5441E9ABF50802BF5041DF51A330B0DA54412D14E16702BF50415DAA9056AFDA54415C8FC28503BF50415C8FC2C5ACDA5441E8A38C9C04BF50416CBB1E32ABDA5441223BADA705BF504178045CAFA9DA54410607039006BF50415D18C8C8A8DA5441E17A144E08BF5041E17A140EA7DA54415EAA4AF209BF5041B3C3EDF4A5DA5441F1B5CC6C0BBF5041CAD4ACF7A4DA5441364112A00DBF5041585D2010A4DA54415C8FC2E50EBF5041A4703D8AA3DA54413B0AA7A811BF5041F2CFABAEA2DA54417F6A7A7412BF50412D175C6FA2DA54414A5350B812BF504128629360A2DA54411F85EBD113BF504133333323A2DA5441DF60B9FE1DBF504112BF83EB9FDA5441FB0DEE5B21BF504187B8C3C29EDA5441F6E67BB42FBF50417BE146D199DA5441E97DA5B42FBF50411BDA3CD199DA54417BC07A8438BF50419A8B47B197DA5441E9D9092740BF504110C1847B96DA5441D409496146BF5041C88ACC4C96DA544148E17A644CBF5041295C8FE296DA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660110 - 2963342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000003A000000295C8F52E5BE5041333333D355DB54411F85EBF1E3BE50413D0AD7D34EDB5441A4703D0AE5BE50418FC2F5F84EDB5441F6285C4FFDBE504185EB518852DB544100000030FFBE5041D7A3708D50DB544152B81E95FEBE504185EB51484EDB544114AE478101BF504148E17AA44FDB544185EB518804BF5041713D0AA750DB5441C3F5288C06BF5041000000D051DB54411F85EB8107BF50413D0AD79353DB5441333333D307BF50413333331354DB5441295C8F820ABF50417B14AE7754DB544185EB51C80BBF5041AE47E1AA53DB5441295C8FC20DBF50413D0AD7834DDB5441295C8FE20FBF50413D0AD75346DB54413333336310BF50416666665645DB5441B81E850B0DBF50416666665643DB54415C8FC26508BF5041B81E85FB40DB54417B14AE7706BF5041CDCCCC1C3FDB5441E17A14BE05BF5041295C8FC23CDB54411F85EB9103BF5041B81E85BB3BDB5441333333F3FFBE5041A4703DEA3BDB5441E17A143EFBBE50410AD7A3F03CDB544185EB5158F8BE50419A9999B93DDB5441D7A3700DF6BE5041B81E857B3DDB544148E17A84F3BE5041295C8FC23CDB544152B81EB5F1BE5041713D0A373CDB5441D7A3700DEFBE5041C3F528AC3BDB5441AE47E1DAEBBE504148E17A443EDB544166666696EABE5041CDCCCCDC40DB544114AE47E1E5BE5041EC51B82E44DB5441B81E85BBDDBE504185EB515848DB5441713D0A37D7BE50419A9999B94BDB544166666646D0BE5041AE47E11A4FDB544152B81E75C9BE50413D0AD7A351DB54410AD7A330C1BE50411F85EB9153DB5441C3F5285CBCBE5041295C8F8253DB544114AE4791B6BE5041CDCCCC9C50DB5441C3F5281CB0BE5041D7A3700D4DDB54413D0AD7C3ABBE50410AD7A3F04ADB54417B14AED7A7BE5041EC51B86E49DB5441A4703D1AA4BE504114AE472149DB5441C3F5289C9EBE5041713D0A474ADB544152B81E5598BE50415C8FC2254CDB544148E17AF494BE50418FC2F5884DDB5441A4703D4A94BE50410AD7A33050DB5441333333439ABE5041AE47E15A4FDB54413D0AD713A0BE5041295C8FC24DDB5441295C8F52A4BE504114AE47C14DDB544152B81E25ABBE5041D7A3708D4FDB54410AD7A390B1BE50411F85EB5154DB544114AE4791BFBE504185EB511859DB5441EC51B8FECEBE5041333333B35CDB54410AD7A360E5BE5041295C8FA264DB5441F6285C8FE9BE5041E17A14CE64DB544148E17A64EEBE50415C8FC28563DB54413D0AD7C3EFBE5041A4703D5A61DB5441295C8F52E5BE5041333333D355DB54411100000000000010EDBE5041EC51B8EE61DB54417B14AE27ECBE50419A99997962DB54413D0AD7D3EABE50418FC2F59862DB54413D0AD713E9BE5041E17A14FE61DB54410AD7A3B0E7BE5041A4703DAA60DB5441CDCCCC5CE6BE5041713D0A475FDB5441A4703DEAE4BE50411F85EB115EDB54418FC2F548E3BE5041A4703D2A5DDB5441D7A370CDE2BE5041C3F5283C5BDB544148E17AC4E3BE50417B14AEF759DB5441333333B3E5BE5041C3F5287C59DB544152B81E35E7BE504185EB51E859DB544133333373E7BE5041C3F5283C5BDB5441D7A3700DE8BE50419A9999395DDB5441E17A14BEE9BE5041F6285C5F5EDB5441C3F528ACEBBE50410000001060DB544100000010EDBE5041EC51B8EE61DB544101030000000100000010000000D7A370CDCEBE5041A4703DAA5DDB5441EC51B8AECDBE504114AE478164DB54419A9999A9CDBE5041AE47E11A68DB5441F6285C8FCFBE504185EB51486BDB544133333343D0BE50419A9999F96CDB544133333373D1BE50417B14AE776DDB5441CDCCCCDCD2BE50410AD7A3406EDB544114AE4761D5BE5041A4703D9A6CDB5441B81E85BBD7BE504185EB51486BDB544133333303D9BE50411F85EB916BDB5441295C8F82DDBE5041713D0A9769DB5441333333A3E1BE50415C8FC2E567DB54419A999999E5BE5041EC51B87E66DB54411F85EB81E4BE50418FC2F58865DB5441C3F528BCE3BE50410000002065DB5441D7A370CDCEBE5041A4703DAA5DDB5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000250681B5CEBE50418716D97E5DDB54417B4A4F89CEBE5041664FFCCA61DB5441C83985C0CDBE5041E663E36363DB54410C022B47CEBE50413D0AD7A367DB5441A8C64B27CDBE50419A99990169DB5441234DE343CEBE5041903B23BC69DB544139263A30D0BE5041AC83F4F76BDB54414F0B80A5D1BE50416EA49A2E6DDB544160BECC18D4BE5041638C8C6B6CDB544123DBF98ED4BE5041E7FBA9296DDB5441AE47E182D5BE5041AE47E1CA6CDB544183C43E01D6BE504100EF2F866BDB544137894168D7BE5041000000C86ADB544146FD37DBD8BE50417515B10E6BDB54410F0C4765DDBE5041B1E3CB2869DB54410A365187E1BE5041BC82E75A67DB5441A67418C5E4BE5041264FEFE265DB5441B71ABEF3E3BE50410C163F7B65DB5441A0E83524E3BE5041F39A701D65DB54416F967A41E1BE5041D65ECF3D64DB544134E2AA5CDFBE504119692F8863DB54416F5E1F8CD9BE504152C8EC6D61DB5441250681B5CEBE50418716D97E5DDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660110 - 3621831
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000003A000000295C8F52E5BE5041333333D355DB54411F85EBF1E3BE50413D0AD7D34EDB5441A4703D0AE5BE50418FC2F5F84EDB5441F6285C4FFDBE504185EB518852DB544100000030FFBE5041D7A3708D50DB544152B81E95FEBE504185EB51484EDB544114AE478101BF504148E17AA44FDB544185EB518804BF5041713D0AA750DB5441C3F5288C06BF5041000000D051DB54411F85EB8107BF50413D0AD79353DB5441333333D307BF50413333331354DB5441295C8F820ABF50417B14AE7754DB544185EB51C80BBF5041AE47E1AA53DB5441295C8FC20DBF50413D0AD7834DDB5441295C8FE20FBF50413D0AD75346DB54413333336310BF50416666665645DB5441B81E850B0DBF50416666665643DB54415C8FC26508BF5041B81E85FB40DB54417B14AE7706BF5041CDCCCC1C3FDB5441E17A14BE05BF5041295C8FC23CDB54411F85EB9103BF5041B81E85BB3BDB5441333333F3FFBE5041A4703DEA3BDB5441E17A143EFBBE50410AD7A3F03CDB544185EB5158F8BE50419A9999B93DDB5441D7A3700DF6BE5041B81E857B3DDB544148E17A84F3BE5041295C8FC23CDB544152B81EB5F1BE5041713D0A373CDB5441D7A3700DEFBE5041C3F528AC3BDB5441AE47E1DAEBBE504148E17A443EDB544166666696EABE5041CDCCCCDC40DB544114AE47E1E5BE5041EC51B82E44DB5441B81E85BBDDBE504185EB515848DB5441713D0A37D7BE50419A9999B94BDB544166666646D0BE5041AE47E11A4FDB544152B81E75C9BE50413D0AD7A351DB54410AD7A330C1BE50411F85EB9153DB5441C3F5285CBCBE5041295C8F8253DB544114AE4791B6BE5041CDCCCC9C50DB5441C3F5281CB0BE5041D7A3700D4DDB54413D0AD7C3ABBE50410AD7A3F04ADB54417B14AED7A7BE5041EC51B86E49DB5441A4703D1AA4BE504114AE472149DB5441C3F5289C9EBE5041713D0A474ADB544152B81E5598BE50415C8FC2254CDB544148E17AF494BE50418FC2F5884DDB5441A4703D4A94BE50410AD7A33050DB5441333333439ABE5041AE47E15A4FDB54413D0AD713A0BE5041295C8FC24DDB5441295C8F52A4BE504114AE47C14DDB544152B81E25ABBE5041D7A3708D4FDB54410AD7A390B1BE50411F85EB5154DB544114AE4791BFBE504185EB511859DB5441EC51B8FECEBE5041333333B35CDB54410AD7A360E5BE5041295C8FA264DB5441F6285C8FE9BE5041E17A14CE64DB544148E17A64EEBE50415C8FC28563DB54413D0AD7C3EFBE5041A4703D5A61DB5441295C8F52E5BE5041333333D355DB54411100000000000010EDBE5041EC51B8EE61DB54417B14AE27ECBE50419A99997962DB54413D0AD7D3EABE50418FC2F59862DB54413D0AD713E9BE5041E17A14FE61DB54410AD7A3B0E7BE5041A4703DAA60DB5441CDCCCC5CE6BE5041713D0A475FDB5441A4703DEAE4BE50411F85EB115EDB54418FC2F548E3BE5041A4703D2A5DDB5441D7A370CDE2BE5041C3F5283C5BDB544148E17AC4E3BE50417B14AEF759DB5441333333B3E5BE5041C3F5287C59DB544152B81E35E7BE504185EB51E859DB544133333373E7BE5041C3F5283C5BDB5441D7A3700DE8BE50419A9999395DDB5441E17A14BEE9BE5041F6285C5F5EDB5441C3F528ACEBBE50410000001060DB544100000010EDBE5041EC51B8EE61DB544101030000000100000010000000D7A370CDCEBE5041A4703DAA5DDB5441EC51B8AECDBE504114AE478164DB54419A9999A9CDBE5041AE47E11A68DB5441F6285C8FCFBE504185EB51486BDB544133333343D0BE50419A9999F96CDB544133333373D1BE50417B14AE776DDB5441CDCCCCDCD2BE50410AD7A3406EDB544114AE4761D5BE5041A4703D9A6CDB5441B81E85BBD7BE504185EB51486BDB544133333303D9BE50411F85EB916BDB5441295C8F82DDBE5041713D0A9769DB5441333333A3E1BE50415C8FC2E567DB54419A999999E5BE5041EC51B87E66DB54411F85EB81E4BE50418FC2F58865DB5441C3F528BCE3BE50410000002065DB5441D7A370CDCEBE5041A4703DAA5DDB5441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000250681B5CEBE50418716D97E5DDB54417B4A4F89CEBE5041664FFCCA61DB5441C83985C0CDBE5041E663E36363DB54410C022B47CEBE50413D0AD7A367DB5441A8C64B27CDBE50419A99990169DB5441234DE343CEBE5041903B23BC69DB544139263A30D0BE5041AC83F4F76BDB54414F0B80A5D1BE50416EA49A2E6DDB544160BECC18D4BE5041638C8C6B6CDB544123DBF98ED4BE5041E7FBA9296DDB5441AE47E182D5BE5041AE47E1CA6CDB544183C43E01D6BE504100EF2F866BDB544137894168D7BE5041000000C86ADB544146FD37DBD8BE50417515B10E6BDB54410F0C4765DDBE5041B1E3CB2869DB54410A365187E1BE5041BC82E75A67DB5441A67418C5E4BE5041264FEFE265DB5441B71ABEF3E3BE50410C163F7B65DB5441A0E83524E3BE5041F39A701D65DB54416F967A41E1BE5041D65ECF3D64DB544134E2AA5CDFBE504119692F8863DB54416F5E1F8CD9BE504152C8EC6D61DB5441250681B5CEBE50418716D97E5DDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660542 - 176322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000003D0AD753B0D75041AE47E10A3BDB5441C3F5280CB0D75041333333733CDB54419A999949ACD75041EC51B84E4FDB54418FC2F5B8BED7504148E17A5450DB5441F6285C1FD5D75041D7A370FD4DDB544148E17AA4E2D750419A99990948DB5441A4703DDAEBD75041AE47E19A47DB5441D7A370CDF1D75041E17A147E48DB544100000030FBD750417B14AEE74BDB54417B14AE57FED750410AD7A3A04BDB544133333393F8D7504114AE47213BDB54411F85EB31F7D75041E17A146E3CDB544148E17A44F3D750419A9999793BDB54417B14AE97EED75041D7A370CD3DDB54411F85EBC1EBD75041EC51B8BE3EDB544148E17AE4E5D7504114AE47913FDB54411F85EBF1DDD75041F6285C4F3EDB5441F6285C5FD1D75041000000B03FDB54411F85EBE1C6D750418FC2F51840DB54411F85EB91BDD75041B81E854B40DB54413D0AD713B8D750411F85EB813CDB54413D0AD753B0D75041AE47E10A3BDB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000004B4C4D02B1D7504132E3DB2B3BDB5441C01BD853B0D75041657BE10A3BDB544111D5290CB0D75041E44F33733CDB54419A999949ACD75041EC51B84E4FDB54417B93F4B8BED7504124A3795450DB54416EB385E4C9D75041C603C2294FDB5441F6285C1FD5D75041D7A370FD4DDB544148E17AA4E2D750419A99990948DB544139BF9BE9E5D7504174E149E247DB54413AA03CDAEBD75041CA3BE09A47DB544196D570CDF1D75041FC93137E48DB5441BCE70030FBD750414235ADE74BDB544139336C65FCD75041DEEB76CC4BDB5441BFDEAD57FED75041C4DBA3A04BDB5441874E3293F8D7504181D848213BDB54411699EB31F7D750418690146E3CDB5441C0807944F3D75041DD859A793BDB54410A2AAE97EED750418FD170CD3DDB5441FDB9ECC1EBD75041836FB9BE3EDB544114B51183E8D750411FC93C333FDB544148E17AE4E5D7504114AE47913FDB54411F85EBF1DDD75041F6285C4F3EDB5441F6285C5FD1D75041000000B03FDB5441E53F0B37CDD750418C3F99D93FDB5441C8F2ECE1C6D750412EF1F61840DB5441DD2552F3C1D75041B5BDBC3340DB54411F85EB91BDD75041B81E854B40DB5441AEA41F45BCD75041630708663FDB5441240BD613B8D75041CC11EC813CDB544187E401C2B4D75041813346E13BDB54414B4C4D02B1D7504132E3DB2B3BDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660688 - 409551
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000003D0AD703E6B650416666666606DB5441B81E859BEDB650418FC2F5A809DB5441713D0A87F1B650417B14AEB70ADB5441D7A3705DF6B6504114AE47B10CDB54413D0AD793FAB6504185EB51F80FDB5441333333B3FAB650413333332311DB54413D0AD753FDB650410000005011DB54417B14AE97FEB650415C8FC2B50FDB54411F85EB0105B75041AE47E1CA0FDB5441666666560BB75041666666A611DB5441D7A370CD0FB75041EC51B87E11DB5441F6285CEF12B75041F6285C6F14DB54418FC2F5D815B750413D0AD7B314DB5441CDCCCC0C19B750410000008012DB5441000000301FB75041AE47E1CA11DB54413D0AD76320B75041333333530EDB5441B81E85CB1CB750416666667607DB54415C8FC2551EB75041295C8F4204DB5441B81E85CB1BB750417B14AE0704DB5441C3F5281C0DB75041333333A302DB5441000000B004B75041295C8F7202DB54415C8FC235FEB6504114AE47F101DB5441AE47E1EAF5B65041C3F5284C00DB54418FC2F588F0B650413333333300DB544148E17A04EDB65041A4703DBA00DB5441713D0A87EAB65041E17A14CE02DB544166666606E6B65041295C8F3205DB54413D0AD703E6B650416666666606DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000026000000786580F1F4B65041C7FFB11C0CDB5441AC1C715DF6B65041330C48B10CDB5441310AD793FAB650419FEB51F80FDB54415394F293FAB6504136CE5AF90FDB5441D38D8BABFAB65041F542BC0B10DB5441CA3BB2ED08B75041EB70BF3711DB54414D6814A310B750413C4CDAD511DB54417C1F40A610B75041164F34DA11DB5441917E4A8B11B75041F3098B1413DB5441B2F9329B11B75041F12C602A13DB54412EA22DCC14B750419B59076B13DB54413B7C077417B75041A493DB9513DB544156C169FE18B750410783C78912DB5441CDCCCC0C19B750410000008012DB5441000000301FB75041AE47E1CA11DB5441320AD76320B75041523333530EDB5441861E85CB1CB750413066667607DB54413C8FC2551EB75041265C8F4204DB5441C424E4051DB75041F78C252404DB5441B41E85CB1BB750419814AE0704DB5441F473AC780DB750419CFAF8AB02DB5441EBF5281C0DB75041373333A302DB5441ECFFFFAF04B750415B5C8F7202DB5441228FC235FEB6504134AE47F101DB5441C647E1EAF5B65041FAF5284C00DB5441C6D35698F0B650415E847A3300DB5441ADC2F588F0B650413433333300DB54413EE17A04EDB65041C3703DBA00DB544177309F8AECB650417E2BE91F01DB5441713D0A87EAB65041E17A14CE02DB54410163D205E7B65041CD0CD6AA04DB544166666606E6B65041405C8F3205DB54413D0AD703E6B650416166666606DB5441EBE1AEE6E6B6504132C5CCC706DB5441B81E859BEDB650418FC2F5A809DB54419B4A1F94EFB65041413516310ADB5441603D0A87F1B650414E14AEB70ADB5441786580F1F4B65041C7FFB11C0CDB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660881 - 1505926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000005000000AE47E12A8BD35041D7A370DD6EDD54410AD7A39088D35041333333736CDD5441000000B079D350410AD7A3107EDD5441713D0AD77ED350419A9999E983DD5441AE47E12A8BD35041D7A370DD6EDD54410103000000010000000D0000003D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD5441A4703D2A95D35041A4703D3A65DD54413D0AD7F398D35041EC51B8FE5DDD54410AD7A3709DD35041B81E856B56DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C3F8CD350415C8FC2856EDD5441C3F528BC8BD3504148E17A646FDD5441A4703D5A7FD35041E17A147E84DD5441A4703D1A88D3504185EB51F877DD54413D0AD7238DD35041EC51B80E72DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000067895D8A86D3504160A0824578DD5441A4703D5A7FD35041E17A147E84DD5441A4703D1A88D3504185EB51F877DD54413D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD54414296E80B95D35041F994B28565DD54410241F0F198D3504131AE08315EDD5441FF49497D9DD350417EB8577756DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C3F8CD350415C8FC2856EDD5441C3F528BC8BD3504148E17A646FDD54419889D86587D350412F9C79C876DD5441D2612AAD86D350417A05827576DD5441AE47E12A8BD35041D7A370DD6EDD54410AD7A39088D35041333333736CDD5441000000B079D350410AD7A3107EDD5441713D0AD77ED350419A9999E983DD5441D8B1C3D085D3504111524FF477DD544167895D8A86D3504160A0824578DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660881 - 3583925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000005000000AE47E12A8BD35041D7A370DD6EDD54410AD7A39088D35041333333736CDD5441000000B079D350410AD7A3107EDD5441713D0AD77ED350419A9999E983DD5441AE47E12A8BD35041D7A370DD6EDD54410103000000010000000D0000003D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD5441A4703D2A95D35041A4703D3A65DD54413D0AD7F398D35041EC51B8FE5DDD54410AD7A3709DD35041B81E856B56DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C3F8CD350415C8FC2856EDD5441C3F528BC8BD3504148E17A646FDD5441A4703D5A7FD35041E17A147E84DD5441A4703D1A88D3504185EB51F877DD54413D0AD7238DD35041EC51B80E72DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000067895D8A86D3504160A0824578DD5441A4703D5A7FD35041E17A147E84DD5441A4703D1A88D3504185EB51F877DD54413D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD54414296E80B95D35041F994B28565DD54410241F0F198D3504131AE08315EDD5441FF49497D9DD350417EB8577756DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C3F8CD350415C8FC2856EDD5441C3F528BC8BD3504148E17A646FDD54419889D86587D350412F9C79C876DD5441D2612AAD86D350417A05827576DD5441AE47E12A8BD35041D7A370DD6EDD54410AD7A39088D35041333333736CDD5441000000B079D350410AD7A3107EDD5441713D0AD77ED350419A9999E983DD5441D8B1C3D085D3504111524FF477DD544167895D8A86D3504160A0824578DD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661050 - 242871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001700000014AE47D131C250417B14AE0703CA5441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C9544148E17AC409C25041666666F6F5C95441EC51B87E06C2504100000020FEC95441EC51B81E04C250413333333302CA5441D7A3702D01C2504185EB510807CA5441713D0A97FDC1504148E17A940CCA54411F85EB21FAC150419A99993911CA544133333383F5C15041D7A370ED16CA5441295C8F62F0C15041D7A3703D1CCA54410AD7A300ECC15041B81E850B20CA54411F85EB31E2C15041295C8FD227CA54410AD7A360DAC1504185EB51982DCA5441295C8F82D3C150410AD7A32033CA54418FC2F5A8D6C15041666666C635CA54410AD7A340DBC150419A99994938CA544185EB5148E0C15041B81E85EB38CA544148E17A840EC25041295C8FF239CA54415C8FC2351AC250415C8FC23539CA54415C8FC2D52AC250411F85EBB137CA5441AE47E1AA2CC25041AE47E14A36CA544114AE47D131C250417B14AE0703CA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000002B462F7408C2504171F98856F9C95441E966C4C60FC25041CE8CF0A4F9C9544122282AF21CC25041223D11ACF9C95441E7AD82D121C25041EE87E532F9C95441DCA7488728C250417911379DF8C9544139ACAD1433C25041D1FD0AD5F6C95441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C954415E16DDE521C25041974EC668F5C954415E3CDFAD21C250417A8EA870F5C954417E911FD115C25041641DAEAFF5C95441A4CBB57614C250417B459FB7F5C9544155E4956E13C250417A76ADBDF5C9544184CAB49D12C25041026977C2F5C9544148E17AC409C25041666666F6F5C954412B462F7408C2504171F98856F9C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661050 - 345431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001700000014AE47D131C250417B14AE0703CA5441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C9544148E17AC409C25041666666F6F5C95441EC51B87E06C2504100000020FEC95441EC51B81E04C250413333333302CA5441D7A3702D01C2504185EB510807CA5441713D0A97FDC1504148E17A940CCA54411F85EB21FAC150419A99993911CA544133333383F5C15041D7A370ED16CA5441295C8F62F0C15041D7A3703D1CCA54410AD7A300ECC15041B81E850B20CA54411F85EB31E2C15041295C8FD227CA54410AD7A360DAC1504185EB51982DCA5441295C8F82D3C150410AD7A32033CA54418FC2F5A8D6C15041666666C635CA54410AD7A340DBC150419A99994938CA544185EB5148E0C15041B81E85EB38CA544148E17A840EC25041295C8FF239CA54415C8FC2351AC250415C8FC23539CA54415C8FC2D52AC250411F85EBB137CA5441AE47E1AA2CC25041AE47E14A36CA544114AE47D131C250417B14AE0703CA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000002B462F7408C2504171F98856F9C95441E966C4C60FC25041CE8CF0A4F9C9544122282AF21CC25041223D11ACF9C95441E7AD82D121C25041EE87E532F9C95441DCA7488728C250417911379DF8C9544139ACAD1433C25041D1FD0AD5F6C95441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C954415E16DDE521C25041974EC668F5C954415E3CDFAD21C250417A8EA870F5C954417E911FD115C25041641DAEAFF5C95441A4CBB57614C250417B459FB7F5C9544155E4956E13C250417A76ADBDF5C9544184CAB49D12C25041026977C2F5C9544148E17AC409C25041666666F6F5C954412B462F7408C2504171F98856F9C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962508 - 407032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009D0000008E422D0C9FA250418826142C1358554164F463119FA250410D4DEA3013585541CD5E240C9FA250416127DD27135855416EC1501C9FA25041EBD3603A13585541D42525B19FA250410BDD3A0712585541BB58E28FA0A25041EDBC0BCB0E58554136246AB5A0A250410DF43B230E585541F039E898A1A250411AB698AE0B585541C8C8DFFFA2A25041F4DCE589085855413CB20500A4A25041D001555F05585541938278E5A7A25041C847E83CF85755412191387AA8A25041F4DB5B74F55755412621CBF0AAA250411FE382D8EE5755414799C373ABA250412D9EB452ED57554180CF725DACA25041140DEB6BE9575541C3CDD09AAEA25041D0511EAFE4575541A04C8A69AFA25041A05E9F80E2575541DF927314B1A2504197DC0D43DF575541E2F40321B3A250416968AA05DD575541CF5675A8B5A25041E1C7C382DE5755417F023F85B7A250410BC5C62AE1575541C5F64365B9A25041D7CF4D8CE3575541F0FFDFACBBA2504136C334CFE5575541ECED43A3BDA25041A8FA9BD8E7575541B2E24A80BFA2504142352F0FEA575541A53E5A77C0A25041B26306EFEA575541F8056E0DC1A250413DA2BEA7E9575541BBF12E4DC3A25041CA56B09EE757554199439802C6A25041BF6B0669E55755411104371AC3A25041963F42C1DA575541D57B67F6C1A25041E8BC63D8D8575541DE9C4E04C0A25041764A942BD6575541FD809EBCBEA25041E1A2F729D4575541CFFFA8E2BAA2504138828942CE575541ED617E8AB2A25041ECA5A48FC1575541873D4EB1B0A25041667762D9BE575541872337F6AFA250418713E3C6BD5755411ADB8637AFA25041DAD7E1A9BC575541D7CD5DB7ADA25041ECD2674CBA5755415C39B89BACA25041D283648DB8575541960DA204ABA25041D4DFFE03B65755412758200EA7A250416B1418AAAF5755415A4CC445A4A250415D95C253AB575541320D7417A0A25041F26576E6A457554155A4423E9EA250415B212C0FA2575541B3B6D3B59AA25041B36D72509C5755416C76696298A2504103A8449898575541ECB5E3EE94A250418BCFC1A494575541ADF895ED91A25041DF3AE67A91575541A9DC652190A25041ED6686A39057554195920C378EA2504135928C989157554184FF00F98CA2504179E9E68293575541575A06848BA25041B0014FA3955755413A021B328BA25041A5F00399975755413750C19289A25041646ABB139957554114F78E9587A25041F63FC2FC99575541CBC0BF8885A25041DA1FC50F9B57554184C2771A84A25041744CEDE59C575541C365552E82A25041AC07A7279E5755418EFE9BB180A25041CB3E1B46A0575541F2D911887FA25041DF1EBE8FA2575541559F0E497EA25041D241CDFDA457554167D285327CA25041DD6F00C8A6575541F1E2B1C579A2504167985ED0A6575541B672E37879A25041D74B55C7A85755412FE16BA977A250416C934CD9AA5755412C938A6675A2504102EB9FC6AB575541EA6E479E72A2504109BA85F3AC575541BBD3BCD871A25041D65C28E5AE57554100F1A55170A25041DF688900B15755419C3534D06EA250415E891955B25755413D26F5F76DA25041E02D121DB4575541557564476DA250418E34DF93B657554182E2EA436BA25041869822FDB757554115E6FDB46AA25041168DD2B3B9575541F2E1847A69A25041A55BC250BB57554138A2779967A250415562E473BB5755416A7587D665A25041394034ADBC575541DFD6252365A250416F347A83BE5755414E9F38E564A25041C84BEFFEC057554101CBC05263A25041739F5E5AC357554188F9AE4062A25041AEB982B5C557554123B8D77261A25041EBFAC726C857554168320C7061A25041120951F0CA575541C829D5B160A25041F0BA062DCD57554119ABAC565EA25041399F1750CC575541EFD5FBAA5BA2504107451298CB575541067903E559A25041F2EAFDBFCC575541692D96105BA25041F8C32E4DCF5755419CFCD2F55CA25041E44184EDD0575541A84F36A35FA2504144DA6B27D25755411523059661A25041A7F18365D45755419167B27164A25041AD0F9047D5575541EDA1966466A250411D4C7540D7575541C0170FF665A25041A7040806DA575541CB1BB73064A25041725E1216DC5755414DE4F8D962A25041F6EAE78CDD5755418F01F81061A25041CB012F4DDD575541BDCF4AAE60A250412A96D5E6DF575541B466F52A5FA25041E2F6740FE1575541997C390260A250418FCA2810E35755415672DFB95EA2504140F2D2C0E45755418CC181B95DA25041A934DC41E6575541948E0D915CA2504140D1C801E85755419146664A5BA25041BBEF39B6E9575541CAFF7F7C59A25041AF67A1A8EB5755412E166DF457A2504186C61538ED57554127B1945158A25041E1C97649EE57554195C851D759A25041062C58FFEF575541587257895BA25041C9D6E9FEF057554198742F3B5DA250418407B21CEF57554152776BF45EA25041FE2F8FB5EC575541F273E8CD60A250416D2D5B43EA575541322E68E062A25041ED38D5A2E85755415305424B63A250413336F2CCE85755412507494964A25041C9AACC6CE9575541C11ECFC066A25041AC272B3CEB575541EBE5B39A67A25041BBD0606FED5755412E204F6467A25041FB2751DDED575541CDB0309365A25041E8F75E99EF57554145619D1764A25041387E706AF1575541F1C8CC3165A250414E5FD13CF3575541E1BD1BD866A250417B40ACB5F4575541D668431D68A25041E88902ECF657554172E248A869A25041C53DB1FAF85755414AF9E04C6BA250410E0F062BFA575541E115F5636DA25041284402B3FB57554192F82AE76FA25041D6CDA2B7FC575541455CCA2072A25041413BB334FE575541540AD3D972A25041E723823BFF5755415E74C7CC71A250416207C037015855414DC2E22E71A250415AF3045A025855411EE8B80C72A2504196D9F7B50258554168C0AC2C74A250417E1CCF9304585541894E245B76A250413F5E9FDD05585541CBD4E8EF78A25041BFD60413065855416FFED7817AA25041DA0AB3E7045855412DFA96277DA250412D8CDD5904585541453CC67C7FA250415AD6A00F03585541195D566881A2504191EA9E970158554137358E1884A250411FC531BF02585541DA5652C585A250416F5544F60458554166F03BE587A25041C09FD0DD06585541039533B389A25041CF6337F7085855418EE500D98BA250415D1973FD0A585541FBF450E98DA25041108524F70C585541F281990790A2504136D88AA10E585541FAC3036E92A25041C53EBD19105855417505BAC894A25041E7DDFD0D11585541FBA1656296A25041477F7D4112585541CF56731297A25041DC4BDA771258554172DE9EC199A25041D0DCB906135855411910CA8A9CA250412D1C5255135855410C48B65F9DA25041FC0D9959135855419558DB769DA250411F7DA7CA125855414631E9929EA25041265FB20A135855418E422D0C9FA250418826142C13585541
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000057BB7C5D62A25041AF98836BEA57554152B2034262A2504143466F9CEA575541B159E04162A25041DAD28EA1EB575541A79CA3FD62A250414F2C450AEC57554123B63F1F64A250410D39139BEC575541B38AFD2F64A2504102121EB5EC575541B1B77BFC65A2504126937081EF575541BCCDAD1366A250410EFD2ED8EF575541FE3A9E5567A25041D7129A70F4575541BE44EFAB68A25041184A7E6AF8575541000015FB6AA25041FA843FDAFA5755414CDE19FC6FA2504168F6706CFF5755411C1DC24472A25041F5A1B4410158554108FA1A0875A25041DBD9717903585541ACD5FA1177A250412F8B337C0458554180534C9279A25041D1A3169A055855416FFED7817AA25041DA0AB3E70458554194BB3D327BA25041E0BEC8C204585541AA1A18417DA250415A01C34B045855414F657B977FA25041DEF032FB02585541195D566881A2504191EA9E97015855413694846F81A250410B63B49A0158554137358E1884A250411FC531BF0258554112E7AC4084A25041317741F4025855415D3CE51085A25041A016A407045855414FFC027D86A250419AEAEB9A0558554166F03BE587A25041C09FD0DD0658554125442B6588A25041C707F983075855417CDA3E7888A250418CAEBF9C075855418E20B45088A250411FBE634308585541893B41FC8AA250411C82CBBC0A585541C9661A158BA250418DCAD8D10A58554106FDB40D8EA25041141065AF0C58554130728AF893A2504165B2D262105855417D3B903F9CA25041047E277812585541EF3991789EA25041D2416CEB125855410B8CD46D9EA25041761FFE00135855411F6CE60F9FA2504178D3B72813585541CFA0701B9FA25041694F572B135855416FACBE03A0A25041D4F91BD410585541BB58E28FA0A25041EDBC0BCB0E58554136246AB5A0A250410DF43B230E585541F039E898A1A250411AB698AE0B5855411A12C380A2A25041015D439009585541B59BD5BFA6A25041BA426CABFB5755414276C59E93A25041F91D30C3F75755413BC863E77FA2504170ABDB8CF35755411C80A2B27BA25041C86A6277F257554153F41C2472A25041741DB03FEF575541C6A3E5CE66A250413E419560EB575541EBE5B39A67A25041BBD0606FED57554124A2929267A250410868CF7FED57554182AB7ECC66A25041AA679E99EB5755410F477B5966A250412CCE7838EB5755415FBD42EC62A25041405CCC0CEA575541B28157E162A2504121402515EA575541EC2EF1A062A25041F6B4C130EA57554157BB7C5D62A25041AF98836BEA575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962508 - 419780
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009D0000008E422D0C9FA250418826142C1358554164F463119FA250410D4DEA3013585541CD5E240C9FA250416127DD27135855416EC1501C9FA25041EBD3603A13585541D42525B19FA250410BDD3A0712585541BB58E28FA0A25041EDBC0BCB0E58554136246AB5A0A250410DF43B230E585541F039E898A1A250411AB698AE0B585541C8C8DFFFA2A25041F4DCE589085855413CB20500A4A25041D001555F05585541938278E5A7A25041C847E83CF85755412191387AA8A25041F4DB5B74F55755412621CBF0AAA250411FE382D8EE5755414799C373ABA250412D9EB452ED57554180CF725DACA25041140DEB6BE9575541C3CDD09AAEA25041D0511EAFE4575541A04C8A69AFA25041A05E9F80E2575541DF927314B1A2504197DC0D43DF575541E2F40321B3A250416968AA05DD575541CF5675A8B5A25041E1C7C382DE5755417F023F85B7A250410BC5C62AE1575541C5F64365B9A25041D7CF4D8CE3575541F0FFDFACBBA2504136C334CFE5575541ECED43A3BDA25041A8FA9BD8E7575541B2E24A80BFA2504142352F0FEA575541A53E5A77C0A25041B26306EFEA575541F8056E0DC1A250413DA2BEA7E9575541BBF12E4DC3A25041CA56B09EE757554199439802C6A25041BF6B0669E55755411104371AC3A25041963F42C1DA575541D57B67F6C1A25041E8BC63D8D8575541DE9C4E04C0A25041764A942BD6575541FD809EBCBEA25041E1A2F729D4575541CFFFA8E2BAA2504138828942CE575541ED617E8AB2A25041ECA5A48FC1575541873D4EB1B0A25041667762D9BE575541872337F6AFA250418713E3C6BD5755411ADB8637AFA25041DAD7E1A9BC575541D7CD5DB7ADA25041ECD2674CBA5755415C39B89BACA25041D283648DB8575541960DA204ABA25041D4DFFE03B65755412758200EA7A250416B1418AAAF5755415A4CC445A4A250415D95C253AB575541320D7417A0A25041F26576E6A457554155A4423E9EA250415B212C0FA2575541B3B6D3B59AA25041B36D72509C5755416C76696298A2504103A8449898575541ECB5E3EE94A250418BCFC1A494575541ADF895ED91A25041DF3AE67A91575541A9DC652190A25041ED6686A39057554195920C378EA2504135928C989157554184FF00F98CA2504179E9E68293575541575A06848BA25041B0014FA3955755413A021B328BA25041A5F00399975755413750C19289A25041646ABB139957554114F78E9587A25041F63FC2FC99575541CBC0BF8885A25041DA1FC50F9B57554184C2771A84A25041744CEDE59C575541C365552E82A25041AC07A7279E5755418EFE9BB180A25041CB3E1B46A0575541F2D911887FA25041DF1EBE8FA2575541559F0E497EA25041D241CDFDA457554167D285327CA25041DD6F00C8A6575541F1E2B1C579A2504167985ED0A6575541B672E37879A25041D74B55C7A85755412FE16BA977A250416C934CD9AA5755412C938A6675A2504102EB9FC6AB575541EA6E479E72A2504109BA85F3AC575541BBD3BCD871A25041D65C28E5AE57554100F1A55170A25041DF688900B15755419C3534D06EA250415E891955B25755413D26F5F76DA25041E02D121DB4575541557564476DA250418E34DF93B657554182E2EA436BA25041869822FDB757554115E6FDB46AA25041168DD2B3B9575541F2E1847A69A25041A55BC250BB57554138A2779967A250415562E473BB5755416A7587D665A25041394034ADBC575541DFD6252365A250416F347A83BE5755414E9F38E564A25041C84BEFFEC057554101CBC05263A25041739F5E5AC357554188F9AE4062A25041AEB982B5C557554123B8D77261A25041EBFAC726C857554168320C7061A25041120951F0CA575541C829D5B160A25041F0BA062DCD57554119ABAC565EA25041399F1750CC575541EFD5FBAA5BA2504107451298CB575541067903E559A25041F2EAFDBFCC575541692D96105BA25041F8C32E4DCF5755419CFCD2F55CA25041E44184EDD0575541A84F36A35FA2504144DA6B27D25755411523059661A25041A7F18365D45755419167B27164A25041AD0F9047D5575541EDA1966466A250411D4C7540D7575541C0170FF665A25041A7040806DA575541CB1BB73064A25041725E1216DC5755414DE4F8D962A25041F6EAE78CDD5755418F01F81061A25041CB012F4DDD575541BDCF4AAE60A250412A96D5E6DF575541B466F52A5FA25041E2F6740FE1575541997C390260A250418FCA2810E35755415672DFB95EA2504140F2D2C0E45755418CC181B95DA25041A934DC41E6575541948E0D915CA2504140D1C801E85755419146664A5BA25041BBEF39B6E9575541CAFF7F7C59A25041AF67A1A8EB5755412E166DF457A2504186C61538ED57554127B1945158A25041E1C97649EE57554195C851D759A25041062C58FFEF575541587257895BA25041C9D6E9FEF057554198742F3B5DA250418407B21CEF57554152776BF45EA25041FE2F8FB5EC575541F273E8CD60A250416D2D5B43EA575541322E68E062A25041ED38D5A2E85755415305424B63A250413336F2CCE85755412507494964A25041C9AACC6CE9575541C11ECFC066A25041AC272B3CEB575541EBE5B39A67A25041BBD0606FED5755412E204F6467A25041FB2751DDED575541CDB0309365A25041E8F75E99EF57554145619D1764A25041387E706AF1575541F1C8CC3165A250414E5FD13CF3575541E1BD1BD866A250417B40ACB5F4575541D668431D68A25041E88902ECF657554172E248A869A25041C53DB1FAF85755414AF9E04C6BA250410E0F062BFA575541E115F5636DA25041284402B3FB57554192F82AE76FA25041D6CDA2B7FC575541455CCA2072A25041413BB334FE575541540AD3D972A25041E723823BFF5755415E74C7CC71A250416207C037015855414DC2E22E71A250415AF3045A025855411EE8B80C72A2504196D9F7B50258554168C0AC2C74A250417E1CCF9304585541894E245B76A250413F5E9FDD05585541CBD4E8EF78A25041BFD60413065855416FFED7817AA25041DA0AB3E7045855412DFA96277DA250412D8CDD5904585541453CC67C7FA250415AD6A00F03585541195D566881A2504191EA9E970158554137358E1884A250411FC531BF02585541DA5652C585A250416F5544F60458554166F03BE587A25041C09FD0DD06585541039533B389A25041CF6337F7085855418EE500D98BA250415D1973FD0A585541FBF450E98DA25041108524F70C585541F281990790A2504136D88AA10E585541FAC3036E92A25041C53EBD19105855417505BAC894A25041E7DDFD0D11585541FBA1656296A25041477F7D4112585541CF56731297A25041DC4BDA771258554172DE9EC199A25041D0DCB906135855411910CA8A9CA250412D1C5255135855410C48B65F9DA25041FC0D9959135855419558DB769DA250411F7DA7CA125855414631E9929EA25041265FB20A135855418E422D0C9FA250418826142C13585541
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000057BB7C5D62A25041AF98836BEA57554152B2034262A2504143466F9CEA575541B159E04162A25041DAD28EA1EB575541A79CA3FD62A250414F2C450AEC57554123B63F1F64A250410D39139BEC575541B38AFD2F64A2504102121EB5EC575541B1B77BFC65A2504126937081EF575541BCCDAD1366A250410EFD2ED8EF575541FE3A9E5567A25041D7129A70F4575541BE44EFAB68A25041184A7E6AF8575541000015FB6AA25041FA843FDAFA5755414CDE19FC6FA2504168F6706CFF5755411C1DC24472A25041F5A1B4410158554108FA1A0875A25041DBD9717903585541ACD5FA1177A250412F8B337C0458554180534C9279A25041D1A3169A055855416FFED7817AA25041DA0AB3E70458554194BB3D327BA25041E0BEC8C204585541AA1A18417DA250415A01C34B045855414F657B977FA25041DEF032FB02585541195D566881A2504191EA9E97015855413694846F81A250410B63B49A0158554137358E1884A250411FC531BF0258554112E7AC4084A25041317741F4025855415D3CE51085A25041A016A407045855414FFC027D86A250419AEAEB9A0558554166F03BE587A25041C09FD0DD0658554125442B6588A25041C707F983075855417CDA3E7888A250418CAEBF9C075855418E20B45088A250411FBE634308585541893B41FC8AA250411C82CBBC0A585541C9661A158BA250418DCAD8D10A58554106FDB40D8EA25041141065AF0C58554130728AF893A2504165B2D262105855417D3B903F9CA25041047E277812585541EF3991789EA25041D2416CEB125855410B8CD46D9EA25041761FFE00135855411F6CE60F9FA2504178D3B72813585541CFA0701B9FA25041694F572B135855416FACBE03A0A25041D4F91BD410585541BB58E28FA0A25041EDBC0BCB0E58554136246AB5A0A250410DF43B230E585541F039E898A1A250411AB698AE0B5855411A12C380A2A25041015D439009585541B59BD5BFA6A25041BA426CABFB5755414276C59E93A25041F91D30C3F75755413BC863E77FA2504170ABDB8CF35755411C80A2B27BA25041C86A6277F257554153F41C2472A25041741DB03FEF575541C6A3E5CE66A250413E419560EB575541EBE5B39A67A25041BBD0606FED57554124A2929267A250410868CF7FED57554182AB7ECC66A25041AA679E99EB5755410F477B5966A250412CCE7838EB5755415FBD42EC62A25041405CCC0CEA575541B28157E162A2504121402515EA575541EC2EF1A062A25041F6B4C130EA57554157BB7C5D62A25041AF98836BEA575541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661825 - 344203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E0000001F85EBA146C15041E17A145ED0CA544185EB51183CC1504152B81E85D2CA544114AE47912BC150413D0AD7F3D8CA544185EB512829C1504133333303DBCA5441000000C01BC15041295C8F12EFCA5441E17A143E16C15041713D0AE7F4CA5441333333B308C15041F6285C1FFFCA5441666666D603C15041AE47E12A01CB5441713D0A1701C150418FC2F57803CB5441C3F5280CFEC0504148E17AC405CB5441EC51B86EF3C05041333333230DCB54418FC2F598EFC05041B81E856B0FCB54415C8FC2E5E0C05041000000102CCB54418FC2F588DBC050410AD7A30034CB544166666676E0C050410000008036CB5441B81E852BECC05041713D0AB728CB544100000090F4C05041295C8FE216CB544185EB510802C1504148E17A540BCB544152B81EC500C15041C3F5282C09CB5441A4703D5AFFC050413D0AD79308CB54415C8FC2C501C1504148E17A1407CB54413D0AD78318C15041C3F5280CF7CA54417B14AEC71DC150418FC2F5D8F2CA54419A9999D921C15041D7A3706DEDCA5441EC51B85E24C15041D7A3704DE7CA544185EB51B828C15041333333E3E0CA5441CDCCCC1C2CC15041B81E85ABDDCA54418FC2F5082EC15041F6285C1FDCCA544152B81E7547C15041E17A14DED3CA54411F85EBA146C15041E17A145ED0CA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000085EB510802C1504148E17A540BCB54416019235C01C15041631A3C2E0ACB5441F4B21EC500C150417CCF292C09CB54412DDBFD1400C150412EC53AE208CB5441A4703D5AFFC050413D0AD79308CB5441E4A3280CFEC05041201A7BC405CB5441746DDB67F9C0504155F084FD08CB544123AFB96EF3C05041270C33230DCB54412FDFF698EFC05041D0E0846B0FCB5441DA8AC3E5E0C05041009EFE0F2CCB5441E501F688DBC0504120F7A30034CB5441D1B04993DCC050418ACAA08734CB54410F7CDD09DEC05041337B7B4535CB5441CD70E649DEC05041603DF06535CB54414C116676E0C0504173FBFE7F36CB5441310616B5E6C05041C866A0252FCB5441B81E852BECC05041713D0AB728CB5441FE82199CEFC0504178073C6821CB54417F9DFE8FF4C05041D60E90E216CB5441D14BC5CAF6C05041493CEFF814CB544185EB510802C1504148E17A540BCB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662034 - 986562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C000000333333C3BAD65041A4703D2A8FD9544114AE47F1B6D65041A4703D5A8ED95441EC51B8AEB4D650417B14AEC78DD954418FC2F598B2D65041F6285C2F8DD9544185EB51B8B0D65041EC51B88E8CD9544166666676AFD650417B14AE478CD9544152B81E85ADD65041295C8FE28BD9544152B81E85ABD650410AD7A3A08BD9544100000060A9D650411F85EB818BD95441A4703D4AA6D650419A9999698BD9544133333303A4D65041EC51B85E8BD9544114AE47E1A1D65041A4703D6A8BD95441295C8FB29DD650413D0AD7B38BD9544185EB51689BD650417B14AE878CD95441CDCCCCEC9AD65041C3F5288C94D95441E17A14BE9AD650413D0AD78396D954410AD7A3609AD65041D7A3704D98D9544152B81EF599D6504114AE47219AD954415C8FC2E598D6504148E17AB49DD954410AD7A35093D65041295C8F92ADD95441CDCCCCCC98D650418FC2F5E8ACD9544152B81E25A0D65041C3F5289CABD954415C8FC295A6D65041CDCCCC6CAAD954418FC2F5B8ADD6504114AE4731A9D954411F85EBC1AED65041CDCCCCFCA6D95441EC51B86EB2D6504166666646A0D9544185EB5108B6D650418FC2F5F898D95441333333C3BAD65041A4703D2A8FD95441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000A4E01AD4BED65041DC3F99E790D95441FB8C3264BFD65041DCA71DEA8ED9544125A63B65BFD65041096771EA8ED9544144375612C0D65041BFAD238B8CD95441F6285C3FC0D65041333333E38BD954414BA3AF6AC0D65041CB802E558BD9544187B4B9B1C2D65041AA6258C983D954415C4FF051BBD65041F3387E1A82D954417CA87F62B8D65041BD6612708AD95441F6285CAFB7D65041AE47E17A8CD95441E20DB054B7D65041B08D8B5F8DD95441A9C402FAB6D65041C7D5185C8ED95441055A36C2BAD65041FBA8072A8FD95441A4E01AD4BED65041DC3F99E790D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>669221 - 87319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003E000000F6285C1F23C850417B14AEA716105541666666F61CC85041E17A149E141055411F85EBC11BC8504114AE4751151055410AD7A30018C8504148E17A4414105541295C8F3213C850413D0AD7831210554148E17A4413C850413D0AD7C3131055410AD7A3F01AC85041666666961E10554114AE47E11CC850418FC2F5E822105541A4703DAA22C8504152B81E45261055415C8FC2F528C85041F6285C8F271055413D0AD70337C8504114AE4731251055413D0AD7733BC85041B81E85EB23105541713D0A774BC850410AD7A3401F1055419A9999F94CC850419A9999592D105541713D0A673CC850417B14AE77301055418FC2F5A82CC8504114AE47B1301055410AD7A3F023C8504114AE47B130105541713D0AE71FC85041C3F5288C3B105541D7A370DD22C850419A9999E93B1055415C8FC2D524C85041E17A141E3C105541F6285CBF27C85041713D0A773C105541A4703D8A29C85041666666A63C105541713D0A372CC85041000000003D10554185EB51982EC85041A4703D4A3D105541A4703D7A30C850410AD7A3703D1055413333330332C85041EC51B87E3D1055410000004034C85041000000603D1055417B14AE1737C85041E17A144E3D105541713D0AD73AC85041000000503D1055411F85EB913CC850419A9999B939105541A4703D7A3FC85041CDCCCC9C38105541B81E85AB45C8504152B81E2537105541F6285CBF4AC850415C8FC22536105541CDCCCC9C4CC85041666666C63510554152B81E754CC85041666666063A1055419A9999894DC85041EC51B8BE391055419A99997959C85041B81E85BB37105541B81E856B58C85041EC51B8BE2D1055415C8FC22563C85041D7A3707D29105541B81E85DB6EC850410AD7A300251055411F85EB7171C85041666666161E105541AE47E1DA70C85041713D0AF71810554148E17A046BC8504114AE47F119105541CDCCCC7C69C8504114AE47E119105541A4703DBA68C85041333333C3191055417B14AEF767C8504185EB5178191055413333333367C85041C3F528BC181055411F85EB8166C850416666668617105541EC51B8CE65C85041E17A14DE1510554148E17A6465C850415C8FC2D513105541713D0AC764C850417B14AE170F1055417B14AE5764C85041B81E850B0E105541666666A662C8504114AE47C108105541CDCCCC3C5CC85041000000E00A1055413D0AD79355C85041EC51B8CE0C105541333333C34AC85041713D0A170F105541295C8FF23AC85041CDCCCCCC1310554148E17AD432C850413333335316105541C3F5287C2EC850418FC2F548171055413D0AD77328C850418FC2F5B81710554148E17A3426C85041A4703D6A17105541F6285C1F23C850417B14AEA716105541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000A5A27E8958C850414FEEEEDE2E105541CD3BB49658C85041CCDE153A2F1055414FD7DC9059C850415035F9782E1055413C7854DB5BC850414FF9A36C2D10554155C2692D5EC850417186FE712C10554131312F515FC8504139BB43342C105541DD5AC25061C850414D9AAECD2B1055416D368FD762C85041B24A767D2B105541A680E23863C850418337CD6B2B105541E67B498063C85041185E85562B1055417701926165C85041A9E284B42A10554112E09BB767C850416A8737EB29105541DEDF315468C85041FD5CCBB72910554132FB721C6AC850419ECF7C2A2910554144E743596AC85041FC576B23291055414439777B6CC850415430F0E3281055417335E1366DC85041D532E5DA28105541483A59FA6DC8504185B676D128105541D34D62F86DC85041A69BC4C0281055418BEA04016EC85041A98A88E326105541A5905B086EC850419CF77E58251055413BCEC7B46CC85041365784D925105541D77837436BC85041CD65EE6526105541E1677C3268C8504147084E9727105541E1321B9765C85041E095A79B2810554127FA0FF662C850410D5DC7A229105541D1370E2762C850419816B5F3291055416BB2411360C850411DE10FBB2A1055419AF663E15EC8504160EDE52E2B105541E2960AD75DC85041118C73992B1055414179C3AC5BC85041B5D030772C105541A9D4D37F5BC85041A1DB2A892C1055410F8D77485AC850411EC735032D105541FCB99F6159C85041F351B15D2D105541E45500E458C850419EB3EE8E2D1055411DAB309F58C85041C5B039AA2D105541705B2B9F58C8504113CC3BAA2D105541FEDBA58258C85041D1EBAA992E105541A5A27E8958C850414FEEEEDE2E105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662642 - 232738
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000330000000AD7A3A022B75041295C8FF24CE0544114AE475122B75041B81E85CB4EE05441C3F528EC22B750413D0AD7B34FE054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054419A9999595BB750415C8FC27563E05441CDCCCC6C5EB75041A4703D5A64E05441AE47E10A60B750417B14AED765E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441AE47E1AA64B750418FC2F55866E05441CDCCCCDC66B75041C3F528DC63E05441B81E850B69B750418FC2F59862E05441D7A3706D68B75041A4703D9A5FE054417B14AED769B75041000000505DE05441000000B06BB75041D7A370CD5CE05441713D0A476DB75041D7A370DD5DE054415C8FC27570B7504152B81E6563E05441AE47E12A70B7504148E17AB466E0544152B81EC572B75041713D0AF766E054419A99998974B75041B81E859B64E054410AD7A3E078B75041295C8F2261E0544148E17A547AB75041B81E85BB60E054411F85EB817BB7504185EB516861E05441B81E853B7DB750413D0AD78369E05441CDCCCC6C7FB750419A99991966E054418FC2F57882B75041C3F5288C62E05441EC51B8FE83B7504185EB51785EE054418FC2F5C882B75041000000F05BE05441AE47E13A82B750416666666659E054415C8FC2D57EB75041F6285CBF56E054419A9999097BB750415C8FC21556E0544185EB51087AB750417B14AE1754E0544152B81E357BB7504148E17A5451E054410AD7A3307DB750416666662650E05441A4703DBA7FB7504152B81E6550E0544152B81EB582B75041D7A370FD4FE0544148E17AA484B75041F6285CDF51E05441F6285C7F88B75041295C8F8252E054410000008089B750417B14AE474EE05441C3F528DC85B750413D0AD7F34BE05441F6285C3F84B750410AD7A3B048E054415C8FC28583B75041E17A147E48E05441E17A14CE2BB75041E17A14AE30E05441AE47E14A28B7504148E17A143BE05441713D0A4724B75041D7A370BD47E054410AD7A3A022B75041295C8FF24CE05441
+</a>
+
+<b>
+01060000000100000001030000000100000042000000BCA86D8F23B750412FF2ED004AE05441C840F45122B75041E8A380C74EE05441F893580D23B750416E1FD9BC4FE054411D244FE42CB7504139E49A6852E054418E18E21D35B75041AD6926A454E0544172BDF1C53CB75041094C32B856E054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE0544153C0925D54B750415F7BA6365DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054410D4A12E559B750419815E16F61E05441711832925BB75041E9C12F8663E05441CDCCCC6C5EB75041A4703D5A64E0544151A76A0C60B750416F79A5D365E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441AE47E1AA64B750418FC2F55866E05441CDCCCCDC66B75041C3F528DC63E05441B81E850B69B750418FC2F59862E05441D7A3706D68B75041A4703D9A5FE054417B14AED769B75041000000505DE05441000000B06BB75041D7A370CD5CE054417EEA653B6DB750413F12A9D55DE05441713D0A476DB75041D7A370DD5DE054415C8FC27570B7504152B81E6563E05441303C3B2B70B750412DED80B066E0544152B81EC572B75041713D0AF766E054419A99998974B75041B81E859B64E054410AD7A3E078B75041295C8F2261E0544148E17A547AB75041B81E85BB60E054411F85EB817BB7504185EB516861E05441B81E853B7DB750413D0AD78369E05441CDCCCC6C7FB750419A99991966E05441ADE3E67382B7504134670E9262E05441569FFBF783B75041B22B386A5EE054415865559383B75041EF1890975DE054418FC2F5C882B75041000000F05BE054412481883B82B7504157F6626959E054415F22F1E77EB75041A8C290CD56E054410F70400D7BB750411CA6651656E054419A9999097BB750415C8FC21556E0544185EB51087AB750417B14AE1754E0544152B81E357BB7504148E17A5451E05441B310FA357BB75041EE52F85351E054410AD7A3307DB750416666662650E05441A4703DBA7FB7504152B81E6550E0544152B81EB582B75041D7A370FD4FE0544148E17AA484B75041F6285CDF51E0544177B12F8088B750414ECE127F52E05441509FB68988B75041F9DCDF5652E05441EDCF4BAD88B750415014BCC051E054415E56BE7E89B75041DE51FB4C4EE05441C3F528DC85B750413D0AD7F34BE0544142A3DB4784B750415063D5C148E054416B46590082B75041D0055E1448E05441B35CED1474B75041C11A034D44E054412BDE228B5CB7504149CA33E93DE054413730E3F454B750419A9CF1D93BE05441C0E555072FB750414A4B1C8E31E05441A35207482EB75041D6422D5A31E05441F46222CE2BB75041534118AE30E05441F41CB34527B750415E08074C3EE05441BCA86D8F23B750412FF2ED004AE05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662642 - 255533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000330000000AD7A3A022B75041295C8FF24CE0544114AE475122B75041B81E85CB4EE05441C3F528EC22B750413D0AD7B34FE054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054419A9999595BB750415C8FC27563E05441CDCCCC6C5EB75041A4703D5A64E05441AE47E10A60B750417B14AED765E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441AE47E1AA64B750418FC2F55866E05441CDCCCCDC66B75041C3F528DC63E05441B81E850B69B750418FC2F59862E05441D7A3706D68B75041A4703D9A5FE054417B14AED769B75041000000505DE05441000000B06BB75041D7A370CD5CE05441713D0A476DB75041D7A370DD5DE054415C8FC27570B7504152B81E6563E05441AE47E12A70B7504148E17AB466E0544152B81EC572B75041713D0AF766E054419A99998974B75041B81E859B64E054410AD7A3E078B75041295C8F2261E0544148E17A547AB75041B81E85BB60E054411F85EB817BB7504185EB516861E05441B81E853B7DB750413D0AD78369E05441CDCCCC6C7FB750419A99991966E054418FC2F57882B75041C3F5288C62E05441EC51B8FE83B7504185EB51785EE054418FC2F5C882B75041000000F05BE05441AE47E13A82B750416666666659E054415C8FC2D57EB75041F6285CBF56E054419A9999097BB750415C8FC21556E0544185EB51087AB750417B14AE1754E0544152B81E357BB7504148E17A5451E054410AD7A3307DB750416666662650E05441A4703DBA7FB7504152B81E6550E0544152B81EB582B75041D7A370FD4FE0544148E17AA484B75041F6285CDF51E05441F6285C7F88B75041295C8F8252E054410000008089B750417B14AE474EE05441C3F528DC85B750413D0AD7F34BE05441F6285C3F84B750410AD7A3B048E054415C8FC28583B75041E17A147E48E05441E17A14CE2BB75041E17A14AE30E05441AE47E14A28B7504148E17A143BE05441713D0A4724B75041D7A370BD47E054410AD7A3A022B75041295C8FF24CE05441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000E7D5744489B7504102DFEB424FE05441DDF15E7489B75041E26BB6674EE0544158F528DC85B75041380AD7F34BE05441AB285C3F84B7504154D7A3B048E054416B8FC28583B75041287B147E48E05441D1DCF60663B750416E49D8B93FE054414F7D932752B7504184D6667E5CE054413D0AD7D353B7504114AE47015DE0544116F1193055B75041B75A3A885DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E0544195B3BBE95AB7504152CD3EDA62E05441AA9999595BB75041458FC27563E05441883169355CB75041010C8FB563E05441CDCCCC6C5EB75041A4703D5A64E054414044A6B95FB75041A33DDA8C65E05441B247E10A60B750417014AED765E05441C051986060B750410C9AADF664E054419F1E85FB60B75041B6FFFF5F63E05441800F213162B750418472E4C762E054411648E16A62B75041951E85AB62E054414AF944FA62B7504136F8F4F162E054417B14AED763B75041EC51B85E63E05441AA252AA164B75041A978E53566E05441B147E1AA64B750418BC2F55866E05441CF4DA2CF65B75041BDC1310D65E0544178CCCCDC66B75041DBF528DC63E05441AB1E850B69B750414EC2F59862E05441F8A3706D68B7504152703D9A5FE05441C0C34ABC68B75041BDBAA01A5FE054417B14AED769B75041000000505DE05441290000B06BB75041EAA370CD5CE05441BBD623EC6BB7504165BDA0F55CE05441713D0A476DB75041D7A370DD5DE05441504C052F70B75041D79033EA62E05441978FC27570B75041ADB81E6563E054415E332E5170B75041230D100365E05441AE47E12A70B7504148E17AB466E0544152B81EC572B75041713D0AF766E05441A14C445574B750410B8152E164E054418799998974B75041C41E859B64E05441A712BEAB74B7504118BC338064E054410AD7A3E078B75041295C8F2261E054418473AA9B79B7504104CBBBEE60E054411EE17A547AB75041651E85BB60E05441A792B5F57AB750419FC5F11761E054413785EB817BB75041C6EB516861E054416BD48BBB7BB750419CC6297762E05441B41E853B7DB750412A0AD78369E0544184CCCC6C7FB75041E399991966E05441A9C2F57882B750417CF5288C62E054418951B8FE83B750418CEB51785EE0544125C2F5C882B75041260000F05BE05441CDB6737482B7504130959F6D5AE05441AE47E13A82B750416666666659E054415C8FC2D57EB75041F6285CBF56E054419A9999097BB750415C8FC21556E0544183EB51087AB750413714AE1754E0544110B81E357BB7504159E17A5451E054410AD7A3307DB750416666662650E054415EBF4B027EB75041E583A43A50E054415D703DBA7FB75041E7B71E6550E0544111CAC83D82B75041638FA80D50E0544152B81EB582B75041D7A370FD4FE0544148E17AA484B75041F6285CDF51E05441A05F4C5285B75041E7B11AFC51E054417E3B858E88B750411F5D974252E05441E7D5744489B7504102DFEB424FE05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662642 - 304182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000330000000AD7A3A022B75041295C8FF24CE0544114AE475122B75041B81E85CB4EE05441C3F528EC22B750413D0AD7B34FE054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054419A9999595BB750415C8FC27563E05441CDCCCC6C5EB75041A4703D5A64E05441AE47E10A60B750417B14AED765E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441AE47E1AA64B750418FC2F55866E05441CDCCCCDC66B75041C3F528DC63E05441B81E850B69B750418FC2F59862E05441D7A3706D68B75041A4703D9A5FE054417B14AED769B75041000000505DE05441000000B06BB75041D7A370CD5CE05441713D0A476DB75041D7A370DD5DE054415C8FC27570B7504152B81E6563E05441AE47E12A70B7504148E17AB466E0544152B81EC572B75041713D0AF766E054419A99998974B75041B81E859B64E054410AD7A3E078B75041295C8F2261E0544148E17A547AB75041B81E85BB60E054411F85EB817BB7504185EB516861E05441B81E853B7DB750413D0AD78369E05441CDCCCC6C7FB750419A99991966E054418FC2F57882B75041C3F5288C62E05441EC51B8FE83B7504185EB51785EE054418FC2F5C882B75041000000F05BE05441AE47E13A82B750416666666659E054415C8FC2D57EB75041F6285CBF56E054419A9999097BB750415C8FC21556E0544185EB51087AB750417B14AE1754E0544152B81E357BB7504148E17A5451E054410AD7A3307DB750416666662650E05441A4703DBA7FB7504152B81E6550E0544152B81EB582B75041D7A370FD4FE0544148E17AA484B75041F6285CDF51E05441F6285C7F88B75041295C8F8252E054410000008089B750417B14AE474EE05441C3F528DC85B750413D0AD7F34BE05441F6285C3F84B750410AD7A3B048E054415C8FC28583B75041E17A147E48E05441E17A14CE2BB75041E17A14AE30E05441AE47E14A28B7504148E17A143BE05441713D0A4724B75041D7A370BD47E054410AD7A3A022B75041295C8FF24CE05441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000E7D5744489B7504102DFEB424FE05441DDF15E7489B75041E26BB6674EE0544158F528DC85B75041380AD7F34BE05441AB285C3F84B7504154D7A3B048E054416B8FC28583B75041287B147E48E05441D1DCF60663B750416E49D8B93FE054414F7D932752B7504184D6667E5CE054413D0AD7D353B7504114AE47015DE0544116F1193055B75041B75A3A885DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E0544195B3BBE95AB7504152CD3EDA62E05441AA9999595BB75041458FC27563E05441883169355CB75041010C8FB563E05441CDCCCC6C5EB75041A4703D5A64E054414044A6B95FB75041A33DDA8C65E05441B247E10A60B750417014AED765E05441C051986060B750410C9AADF664E054419F1E85FB60B75041B6FFFF5F63E05441800F213162B750418472E4C762E054411648E16A62B75041951E85AB62E054414AF944FA62B7504136F8F4F162E054417B14AED763B75041EC51B85E63E05441AA252AA164B75041A978E53566E05441B147E1AA64B750418BC2F55866E05441CF4DA2CF65B75041BDC1310D65E0544178CCCCDC66B75041DBF528DC63E05441AB1E850B69B750414EC2F59862E05441F8A3706D68B7504152703D9A5FE05441C0C34ABC68B75041BDBAA01A5FE054417B14AED769B75041000000505DE05441290000B06BB75041EAA370CD5CE05441BBD623EC6BB7504165BDA0F55CE05441713D0A476DB75041D7A370DD5DE05441504C052F70B75041D79033EA62E05441978FC27570B75041ADB81E6563E054415E332E5170B75041230D100365E05441AE47E12A70B7504148E17AB466E0544152B81EC572B75041713D0AF766E05441A14C445574B750410B8152E164E054418799998974B75041C41E859B64E05441A712BEAB74B7504118BC338064E054410AD7A3E078B75041295C8F2261E054418473AA9B79B7504104CBBBEE60E054411EE17A547AB75041651E85BB60E05441A792B5F57AB750419FC5F11761E054413785EB817BB75041C6EB516861E054416BD48BBB7BB750419CC6297762E05441B41E853B7DB750412A0AD78369E0544184CCCC6C7FB75041E399991966E05441A9C2F57882B750417CF5288C62E054418951B8FE83B750418CEB51785EE0544125C2F5C882B75041260000F05BE05441CDB6737482B7504130959F6D5AE05441AE47E13A82B750416666666659E054415C8FC2D57EB75041F6285CBF56E054419A9999097BB750415C8FC21556E0544183EB51087AB750413714AE1754E0544110B81E357BB7504159E17A5451E054410AD7A3307DB750416666662650E054415EBF4B027EB75041E583A43A50E054415D703DBA7FB75041E7B71E6550E0544111CAC83D82B75041638FA80D50E0544152B81EB582B75041D7A370FD4FE0544148E17AA484B75041F6285CDF51E05441A05F4C5285B75041E7B11AFC51E054417E3B858E88B750411F5D974252E05441E7D5744489B7504102DFEB424FE05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428747 - 1263905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001000000029F1EBADDC625141C5E09BD515C3544114AE47D1DE625141D7A3708D19C354414F282E8EE362514158989DCA21C3544199FA7C89E66251417D2E668224C3544154AA926FE862514131F48FD823C35441201EACDAE962514178EF1D6524C354416BB40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DB433C76E562514196BED3321BC3544181D906F2E2625141B4438F9A1AC35441A32A84F4E06251415C4CE09819C3544136B307FFDF6251414A28F5FB18C3544133855B4BDF625141E1D42F7E18C3544149C04E70DE625141515BC9DB17C3544129F1EBADDC625141C5E09BD515C35441
+</a>
+
+<b>
+010600000001000000010300000001000000100000002AF1EBADDC625141C7E09BD515C3544114AE47D1DE625141D7A3708D19C3544152282E8EE362514157989DCA21C354419DFA7C89E66251417D2E668224C3544152AA926FE862514134F48FD823C35441211EACDAE962514174EF1D6524C3544169B40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DE433C76E562514199BED3321BC3544183D906F2E2625141B5438F9A1AC35441A72A84F4E06251415B4CE09819C3544132B307FFDF6251414B28F5FB18C3544137855B4BDF625141E5D42F7E18C354414DC04E70DE625141535BC9DB17C354412AF1EBADDC625141C7E09BD515C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428747 - 4018361
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001000000029F1EBADDC625141C5E09BD515C3544114AE47D1DE625141D7A3708D19C354414F282E8EE362514158989DCA21C3544199FA7C89E66251417D2E668224C3544154AA926FE862514131F48FD823C35441201EACDAE962514178EF1D6524C354416BB40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DB433C76E562514196BED3321BC3544181D906F2E2625141B4438F9A1AC35441A32A84F4E06251415C4CE09819C3544136B307FFDF6251414A28F5FB18C3544133855B4BDF625141E1D42F7E18C3544149C04E70DE625141515BC9DB17C3544129F1EBADDC625141C5E09BD515C35441
+</a>
+
+<b>
+010600000001000000010300000001000000100000002AF1EBADDC625141C7E09BD515C3544114AE47D1DE625141D7A3708D19C3544152282E8EE362514157989DCA21C354419DFA7C89E66251417D2E668224C3544152AA926FE862514134F48FD823C35441211EACDAE962514174EF1D6524C3544169B40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DE433C76E562514199BED3321BC3544183D906F2E2625141B5438F9A1AC35441A72A84F4E06251415B4CE09819C3544132B307FFDF6251414B28F5FB18C3544137855B4BDF625141E5D42F7E18C354414DC04E70DE625141535BC9DB17C354412AF1EBADDC625141C7E09BD515C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924164 - 236530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC5CA7AA5041B81E850B4B0E5441713D0AA7A5AA5041EC51B82E4A0E544133333323A3AA50413D0AD7E3470E5441CDCCCCACA2AA504166666686470E5441AE47E14A9FAA504185EB51B8460E54415C8FC255A0AA504133333343480E54411F85EBC1A6AA5041B81E856B520E544114AE4771A7AA50410AD7A350570E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E5441713D0A27A3AA504152B81EB55E0E54415C8FC225A4AA5041000000C0600E5441E17A149EA5AA50413D0AD753660E54410AD7A3A0A7AA5041AE47E19A680E5441F6285C2FA8AA5041AE47E15A6B0E5441E17A141EA9AA50410AD7A3D06A0E5441D7A3705DABAA50417B14AE97690E5441F6285CAFB1AA504185EB5188660E54413D0AD7C3B5AA5041295C8FC2640E5441A4703D8AB2AA5041713D0A675D0E544114AE4701B2AA5041E17A143E5C0E544185EB51A8B4AA5041666666B65A0E5441D7A3702DAFAA5041A4703D0A500E5441C3F528DCABAA5041B81E851B4A0E5441CDCCCC5CA7AA5041B81E850B4B0E5441
+</a>
+
+<b>
+010600000001000000010300000001000000200000005C8FC255A0AA504133333343480E5441958AAE46A5AA50411772BC13500E5441FC79AAADA6AA50414EE62742520E54416832A1AFA6AA5041A1CB974E520E54411F85EBC1A6AA5041B81E856B520E54411B42DE2CA7AA5041042FC567550E544161BE5F7CA7AA50415D974E5F570E544170F23E0BA6AA5041B7CEA9D9580E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E544148556187A2AA5041CEE49F4D5D0E5441245C2A3CB2AA5041D45CA0FE550E54416CC18CB1B1AA50415EDAAAF0540E5441E6540488AFAA5041D350A4BA500E544158339DCCABAA50418AB2C21E4A0E54413DE92DB2ABAA5041455545244A0E5441F1300DAEABAA5041FE9A21254A0E54419554277AABAA50411C08F32F4A0E5441A1F131E1AAAA5041EC5AD54F4A0E54411E16C2B2AAAA50416A5E83594A0E54419BAB2608AAAA5041E44A9CF44A0E5441AE806103A8AA5041D703DEA04B0E5441EFF7F665A6AA50411434B5AF4A0E5441AD9E9B34A6AA50419DF61F764A0E5441713D0AA7A5AA5041EC51B82E4A0E544133333323A3AA50413D0AD7E3470E5441CDCCCCACA2AA504166666686470E5441580B2020A0AA504100F511EB460E5441B6F52D6D9FAA504100F511EB460E54415C8FC255A0AA504133333343480E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924164 - 372190
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC5CA7AA5041B81E850B4B0E5441713D0AA7A5AA5041EC51B82E4A0E544133333323A3AA50413D0AD7E3470E5441CDCCCCACA2AA504166666686470E5441AE47E14A9FAA504185EB51B8460E54415C8FC255A0AA504133333343480E54411F85EBC1A6AA5041B81E856B520E544114AE4771A7AA50410AD7A350570E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E5441713D0A27A3AA504152B81EB55E0E54415C8FC225A4AA5041000000C0600E5441E17A149EA5AA50413D0AD753660E54410AD7A3A0A7AA5041AE47E19A680E5441F6285C2FA8AA5041AE47E15A6B0E5441E17A141EA9AA50410AD7A3D06A0E5441D7A3705DABAA50417B14AE97690E5441F6285CAFB1AA504185EB5188660E54413D0AD7C3B5AA5041295C8FC2640E5441A4703D8AB2AA5041713D0A675D0E544114AE4701B2AA5041E17A143E5C0E544185EB51A8B4AA5041666666B65A0E5441D7A3702DAFAA5041A4703D0A500E5441C3F528DCABAA5041B81E851B4A0E5441CDCCCC5CA7AA5041B81E850B4B0E5441
+</a>
+
+<b>
+010600000001000000010300000001000000200000005C8FC255A0AA504133333343480E5441958AAE46A5AA50411772BC13500E5441FC79AAADA6AA50414EE62742520E54416832A1AFA6AA5041A1CB974E520E54411F85EBC1A6AA5041B81E856B520E54411B42DE2CA7AA5041042FC567550E544161BE5F7CA7AA50415D974E5F570E544170F23E0BA6AA5041B7CEA9D9580E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E544148556187A2AA5041CEE49F4D5D0E5441245C2A3CB2AA5041D45CA0FE550E54416CC18CB1B1AA50415EDAAAF0540E5441E6540488AFAA5041D350A4BA500E544158339DCCABAA50418AB2C21E4A0E54413DE92DB2ABAA5041455545244A0E5441F1300DAEABAA5041FE9A21254A0E54419554277AABAA50411C08F32F4A0E5441A1F131E1AAAA5041EC5AD54F4A0E54411E16C2B2AAAA50416A5E83594A0E54419BAB2608AAAA5041E44A9CF44A0E5441AE806103A8AA5041D703DEA04B0E5441EFF7F665A6AA50411434B5AF4A0E5441AD9E9B34A6AA50419DF61F764A0E5441713D0AA7A5AA5041EC51B82E4A0E544133333323A3AA50413D0AD7E3470E5441CDCCCCACA2AA504166666686470E5441580B2020A0AA504100F511EB460E5441B6F52D6D9FAA504100F511EB460E54415C8FC255A0AA504133333343480E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436705 - 436736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCCBCBA115141E17A141EBBF95441A4703D4ABA1151419A999929BBF95441EC51B8EEB9115141A4703D2ABDF954411F85EBA1B9115141295C8FC2C3F9544166666666B91151411F85EB41C7F95441AE47E1BAB7115141A4703D1AD0F95441B81E854BB71151415C8FC265D2F9544148E17A24B7115141666666C6D3F95441B54E3F20B61151410B93215AD9F95441F1909714D2115141B024EF40CBF9544185EB51B8D311514133333303C6F95441F6285C4FD41151415C8FC2E5BFF95441EC51B8CED41151417B14AE27BEF954417B14AE77C7115141C3F5289CBCF95441CDCCCCBCBA115141E17A141EBBF95441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000A6574D1BB111514121AEB590BDF95441C0687C5D9D1151411C968790BAF9544182972CB79C1151413C89D24CBEF95441E17A140E9C11514185EB5108C2F95441C3F5289C9A1151410AD7A3A0C5F954415C8FC2559911514185EB51D8CBF95441713D0A7798115141713D0A17D0F95441AE47E12A99115141AE47E17ADEF9544186AAEB0F9B11514106E8011AE0F9544164A950A29D11514193551078E0F95441FFB83EB2A311514125D6DD2EDFF95441BEC9C72FA71151417D8DB214DEF95441AE47E1EAAF115141CDCCCC6CDBF954419A1E1011B6115141DD6A05ACD9F9544148E17A24B7115141666666C6D3F95441B81E854BB71151415C8FC265D2F95441AE47E1BAB7115141A4703D1AD0F9544166666666B91151411F85EB41C7F954411F85EBA1B9115141295C8FC2C3F95441ACD3AE1BBA11514103C0D97BBEF95441F520A4DFB9115141BC4FB975BEF95441F53090D7B91151418D784D27BFF95441A6574D1BB111514121AEB590BDF95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>361497 - 360585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>361497 - 1857902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>361497 - 4481334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943320 - 3001687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003D0000003D0AD7833D6350413D0AD7E33A1B55411F85EB2143635041666666A6371B55417B14AE5745635041A4703D6A3B1B554114AE479145635041E17A144E3A1B5541AE47E16A5363504152B81E75401B554185EB510853635041713D0A073F1B554185EB5138516350419A9999993B1B55410AD7A3A04F6350415C8FC295381B55415C8FC2054F63504166666646351B5541EC51B81E476350419A9999D9311B55417B14AE2741635041333333C32F1B5541D7A370FD40635041F6285C6F331B55413D0AD7E33F63504185EB51B8311B5541EC51B8BE3E635041F6285CEF2F1B554148E17AC43D6350418FC2F5682E1B5541295C8FD23C63504185EB51882C1B5541295C8F523C635041000000802B1B55410FBCAD203A635041A58E0C732C1B5541F95316EC38635041B3EF12372D1B55418F9E931037635041ED4B21652E1B5541F6285C5F3563504185EB51782F1B55418FC2F528346350415C8FC2B52D1B5541CDCCCCFC2C6350413D0AD713331B5541E0C814832C635041A2A151EC331B5541E9E15F502D6350414448B79D351B5541FFB1B3B02C635041C6057E21371B5541FFB1B3B02C63504140AAF9D7371B5541EF5CED57306350411B85DF1E3C1B554190035309326350410B3019C63F1B55419E972BDE35635041D03AABAC441B55414857DC5C386350418C2CF2C5481B55414ED269643B63504129359AB14C1B5541D9A87BB53D63504144807B194F1B5541C4D827553E635041EE3F2C98511B5541901F35C73E63504106ED4F3A561B5541EBDA11503F6350416AC17790571B5541AB6A162F4163504155F12330581B554189E3B93B43635041326AC73C5A1B55413CBCB5874663504137E554445D1B55410D7E50014A635041F77459235F1B55417B6BC3244C635041981BBFD4601B5541AB86F8EC4D63504146792D19611B55411C1229D64D6350417119D5D95F1B5541576032AD4D635041AB9587455F1B554152B81E2540635041B81E856B541B55416E98D8D340635041ADCF3077531B55418C8177014163504121F91E26511B5541FD0CA8EA40635041896B0442501B5541993880943F635041F1DDE95D4F1B55411F9404DE3E635041471E39DF4C1B55414A34AC9E3D635041AF901EFB4B1B55419CD63D5A3D6350410DEAB8494A1B5541BBBFDC873D635041C8FE2F21491B5541411B61D13C63504197E3FA58471B554175D4535F3C63504185B164BE451B5541FB2FD8A83B635041E40AFF0C441B5541D42DEEAD3A635041313203C1401B554163A2BDC43A6350412819B8F33F1B55415A8972F73963504134D0C0863E1B5541FB2FD8A83B6350412F55337F3B1B55413D0AD7833D6350413D0AD7E33A1B5541
+</a>
+
+<b>
+01060000000100000001030000000100000020000000C79B00D94263504168D3E516371B5541506A2BDF436350413C4A91B8371B5541B74EE24646635041F799BB7C391B5541FA7B5B9B48635041717A12D73A1B554142A87CAC4A6350413AC734D13B1B554185D5F5004D6350414A82D2F13C1B554155DF65A24F635041C961D1083E1B55416B57516A526350411F8BEA4F3F1B5541A5B0B8325363504110F587A43F1B55413382D11A53635041B191BF4B3F1B554182F288CE52635041E837C4993E1B554168D23FE2516350415232F1DA3C1B554185EB5138516350419A9999993B1B5541A1A035DA506350415EE06CE73A1B554163115C385063504172CE00B5391B5541B2FEA49B4F63504139E76D7A381B5541DA32E66C4F635041CFABAE7A371B55413EC10F404F63504162405F85361B55415C8FC2054F63504166666646351B55416070D1E54D635041379B9AC9341B5541F1A41E1C4C6350413FF23B03341B5541AEA5D7854963504191CC32E4321B55416D2B493047635041169136E1311B5541DA390F8F456350411A4EBC4D311B554144ADE11D436350411112F372301B55417B14AE2741635041333333C32F1B55410CCA5311416350419385B7B4311B5541D7A370FD40635041F6285C6F331B55411F85EB71416350413D0AD753341B5541C7D73D11426350419066AC8D351B55419F6CD4B242635041721EC6CB361B5541C79B00D94263504168D3E516371B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943320 - 3600453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003D0000003D0AD7833D6350413D0AD7E33A1B55411F85EB2143635041666666A6371B55417B14AE5745635041A4703D6A3B1B554114AE479145635041E17A144E3A1B5541AE47E16A5363504152B81E75401B554185EB510853635041713D0A073F1B554185EB5138516350419A9999993B1B55410AD7A3A04F6350415C8FC295381B55415C8FC2054F63504166666646351B5541EC51B81E476350419A9999D9311B55417B14AE2741635041333333C32F1B5541D7A370FD40635041F6285C6F331B55413D0AD7E33F63504185EB51B8311B5541EC51B8BE3E635041F6285CEF2F1B554148E17AC43D6350418FC2F5682E1B5541295C8FD23C63504185EB51882C1B5541295C8F523C635041000000802B1B55410FBCAD203A635041A58E0C732C1B5541F95316EC38635041B3EF12372D1B55418F9E931037635041ED4B21652E1B5541F6285C5F3563504185EB51782F1B55418FC2F528346350415C8FC2B52D1B5541CDCCCCFC2C6350413D0AD713331B5541E0C814832C635041A2A151EC331B5541E9E15F502D6350414448B79D351B5541FFB1B3B02C635041C6057E21371B5541FFB1B3B02C63504140AAF9D7371B5541EF5CED57306350411B85DF1E3C1B554190035309326350410B3019C63F1B55419E972BDE35635041D03AABAC441B55414857DC5C386350418C2CF2C5481B55414ED269643B63504129359AB14C1B5541D9A87BB53D63504144807B194F1B5541C4D827553E635041EE3F2C98511B5541901F35C73E63504106ED4F3A561B5541EBDA11503F6350416AC17790571B5541AB6A162F4163504155F12330581B554189E3B93B43635041326AC73C5A1B55413CBCB5874663504137E554445D1B55410D7E50014A635041F77459235F1B55417B6BC3244C635041981BBFD4601B5541AB86F8EC4D63504146792D19611B55411C1229D64D6350417119D5D95F1B5541576032AD4D635041AB9587455F1B554152B81E2540635041B81E856B541B55416E98D8D340635041ADCF3077531B55418C8177014163504121F91E26511B5541FD0CA8EA40635041896B0442501B5541993880943F635041F1DDE95D4F1B55411F9404DE3E635041471E39DF4C1B55414A34AC9E3D635041AF901EFB4B1B55419CD63D5A3D6350410DEAB8494A1B5541BBBFDC873D635041C8FE2F21491B5541411B61D13C63504197E3FA58471B554175D4535F3C63504185B164BE451B5541FB2FD8A83B635041E40AFF0C441B5541D42DEEAD3A635041313203C1401B554163A2BDC43A6350412819B8F33F1B55415A8972F73963504134D0C0863E1B5541FB2FD8A83B6350412F55337F3B1B55413D0AD7833D6350413D0AD7E33A1B5541
+</a>
+
+<b>
+01060000000100000001030000000100000020000000C79B00D94263504168D3E516371B5541506A2BDF436350413C4A91B8371B5541B74EE24646635041F799BB7C391B5541FA7B5B9B48635041717A12D73A1B554142A87CAC4A6350413AC734D13B1B554185D5F5004D6350414A82D2F13C1B554155DF65A24F635041C961D1083E1B55416B57516A526350411F8BEA4F3F1B5541A5B0B8325363504110F587A43F1B55413382D11A53635041B191BF4B3F1B554182F288CE52635041E837C4993E1B554168D23FE2516350415232F1DA3C1B554185EB5138516350419A9999993B1B5541A1A035DA506350415EE06CE73A1B554163115C385063504172CE00B5391B5541B2FEA49B4F63504139E76D7A381B5541DA32E66C4F635041CFABAE7A371B55413EC10F404F63504162405F85361B55415C8FC2054F63504166666646351B55416070D1E54D635041379B9AC9341B5541F1A41E1C4C6350413FF23B03341B5541AEA5D7854963504191CC32E4321B55416D2B493047635041169136E1311B5541DA390F8F456350411A4EBC4D311B554144ADE11D436350411112F372301B55417B14AE2741635041333333C32F1B55410CCA5311416350419385B7B4311B5541D7A370FD40635041F6285C6F331B55411F85EB71416350413D0AD753341B5541C7D73D11426350419066AC8D351B55419F6CD4B242635041721EC6CB361B5541C79B00D94263504168D3E516371B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924798 - 160293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000009BF16CCF953B5141C4379CB4AE225541DB7652F3983B5141C69AD9B8B22255414A4E9A03A13B51414A8C8E94BE22554199DA6D4AA93B5141CFE688CDC72255413331E171AD3B51417B924B20CB225541FD1A0120B13B514187FDFB47CF22554170B423C2B23B51418722F2A0D02255418FC2F5D8B33B5141CDCCCC9CCD22554133333393B43B51413D0AD783CB22554100000090B43B514185EB5178C8225541F6285C8FB43B5141713D0A87C7225541A4703DFAAD3B514114AE4721C2225541713D0AA7A93B51418FC2F598BD225541CDCCCC5CA53B51411F85EB51B82255417B14AEB7A03B514185EB51F8B1225541EC51B8DE9A3B5141EC51B83EA9225541D7A3704D9A3B514133333393A82255419BF16CCF953B5141C4379CB4AE225541
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000001EC3D4DA953B514119940BA5AE2255419A9999C9883B5141A4703D7AC02255411F85EB01883B5141C3F5288CC0225541B81E852B873B514148E17A84C4225541AE47E19A833B5141295C8F42CD225541EC51B83E8F3B514100000060D52255411F85EB01933B51410AD7A310D822554148E17AF4953B5141CDCCCC2CDA225541D7A3703DA93B5141C3F528ECE722554152B81E15AA3B51417B14AEA7E822554197D2ACC6B23B51412B446576D0225541FD1A0120B13B514187FDFB47CF225541B145C151B03B514184461F5FCE225541C6DA1A66AF3B5141CECD1055CD2255410E24EE67AE3B51418B201836CC22554175988BD8AC3B5141E3B1A0A5CA2255414DE11266AB3B51415E1F407DC922554182BA5879A93B5141EF9911F3C7225541ADBAB412A83B5141FBA52F72C62255417FD7FC21A53B5141B15F712BC32255419E9130E9A23B5141BEB2A3B1C022554107C43197A03B514133FD21F5BD225541CA65A3EC9D3B5141DAAE5F09BA225541C82209C89A3B51417C79226AB52255415653B33A983B5141B0C0B4CCB12255411EC3D4DA953B514119940BA5AE225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924798 - 1384575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000009BF16CCF953B5141C4379CB4AE225541DB7652F3983B5141C69AD9B8B22255414A4E9A03A13B51414A8C8E94BE22554199DA6D4AA93B5141CFE688CDC72255413331E171AD3B51417B924B20CB225541FD1A0120B13B514187FDFB47CF22554170B423C2B23B51418722F2A0D02255418FC2F5D8B33B5141CDCCCC9CCD22554133333393B43B51413D0AD783CB22554100000090B43B514185EB5178C8225541F6285C8FB43B5141713D0A87C7225541A4703DFAAD3B514114AE4721C2225541713D0AA7A93B51418FC2F598BD225541CDCCCC5CA53B51411F85EB51B82255417B14AEB7A03B514185EB51F8B1225541EC51B8DE9A3B5141EC51B83EA9225541D7A3704D9A3B514133333393A82255419BF16CCF953B5141C4379CB4AE225541
+</a>
+
+<b>
+010600000001000000010300000001000000150000001F85EB01883B5141C3F5288CC0225541B81E852B873B514148E17A84C42255416B17529C833B514178E68041CD225541EC51B83E8F3B514100000060D52255411F85EB01933B51410AD7A310D822554148E17AF4953B5141CDCCCC2CDA225541D7A3703DA93B5141C3F528ECE722554152B81E15AA3B51417B14AEA7E822554194677FC4B23B51412D4B6A9AD02255414DEBBEFDB33B5141F89BBD32CD225541E192A78BB43B5141F53A9899CB225541447F328DB43B5141C03F4485C72255411C34AA75B13B5141C8623AFCC422554153D00856AD3B514181443275C1225541BB5010E2A83B51412578A4A6BC225541EC3AAF09A53B5141D3C64BE0B722554115F8127DA03B51412DEBDFA0B122554166BD775E9C3B514146704E7BAB225541719BC0399A3B5141263BB083A82255419A9999C9883B5141A4703D7AC02255411F85EB01883B5141C3F5288CC0225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924798 - 3809554
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000009BF16CCF953B5141C4379CB4AE225541DB7652F3983B5141C69AD9B8B22255414A4E9A03A13B51414A8C8E94BE22554199DA6D4AA93B5141CFE688CDC72255413331E171AD3B51417B924B20CB225541FD1A0120B13B514187FDFB47CF22554170B423C2B23B51418722F2A0D02255418FC2F5D8B33B5141CDCCCC9CCD22554133333393B43B51413D0AD783CB22554100000090B43B514185EB5178C8225541F6285C8FB43B5141713D0A87C7225541A4703DFAAD3B514114AE4721C2225541713D0AA7A93B51418FC2F598BD225541CDCCCC5CA53B51411F85EB51B82255417B14AEB7A03B514185EB51F8B1225541EC51B8DE9A3B5141EC51B83EA9225541D7A3704D9A3B514133333393A82255419BF16CCF953B5141C4379CB4AE225541
+</a>
+
+<b>
+010600000001000000010300000001000000150000001F85EB01883B5141C3F5288CC0225541B81E852B873B514148E17A84C42255416B17529C833B514178E68041CD225541EC51B83E8F3B514100000060D52255411F85EB01933B51410AD7A310D822554148E17AF4953B5141CDCCCC2CDA225541D7A3703DA93B5141C3F528ECE722554152B81E15AA3B51417B14AEA7E822554194677FC4B23B51412D4B6A9AD02255414DEBBEFDB33B5141F89BBD32CD225541E192A78BB43B5141F53A9899CB225541447F328DB43B5141C03F4485C72255411C34AA75B13B5141C8623AFCC422554153D00856AD3B514181443275C1225541BB5010E2A83B51412578A4A6BC225541EC3AAF09A53B5141D3C64BE0B722554115F8127DA03B51412DEBDFA0B122554166BD775E9C3B514146704E7BAB225541719BC0399A3B5141263BB083A82255419A9999C9883B5141A4703D7AC02255411F85EB01883B5141C3F5288CC0225541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540694 - 3071168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000E7DF1E52336051417FD2314359535441FE37BE6537605141818E8EAB59535441BE667B74426051415AC9C47A5B53544103E43C6542605141FD4587185B535441F6285CEF60605141333333A360535441B81E85BB60605141713D0AB75B53544114AE475160605141CDCCCC8C49535441A4703D4A6060514100000010455354419A999999606051417B14AE973F535441E17A142E4D60514152B81E653A535441EC51B85E4060514148E17AA43653544152B81ED53F60514148E17A543A535441E17A140E3D6051410000006041535441295C8FA23B605141713D0AC744535441D7A370ED39605141713D0AC748535441713D0A073760514185EB51B84F5354411F85EBA13360514152B81E7558535441E7DF1E52336051417FD2314359535441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C2ED1C433D605141A1E0B9C15A535441DA91EA673360514187C5E80A595354416BCC5B7133605141058086F2585354411E69DC6D336051419682E1F158535441C3F5285C2A605141F6285C2F7053544185EB5118346051411F85EBA17253544148E17A94416051410AD7A350765354417B14AEA7446051410AD7A300775354410BD029A644605141A593CF18775354413A98C63D486051411DE3DEDD7753544185EB513848605141CDCCCCCC77535441C3F528CC43605141A4703DDA655354419AAB76DC43605141569784DD655354410E53E54D41605141DA48CD845B5354411CDCA84B3D6051413FADC2D05A535441C2ED1C433D605141A1E0B9C15A535441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540694 - 3366587
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000E7DF1E52336051417FD2314359535441FE37BE6537605141818E8EAB59535441BE667B74426051415AC9C47A5B53544103E43C6542605141FD4587185B535441F6285CEF60605141333333A360535441B81E85BB60605141713D0AB75B53544114AE475160605141CDCCCC8C49535441A4703D4A6060514100000010455354419A999999606051417B14AE973F535441E17A142E4D60514152B81E653A535441EC51B85E4060514148E17AA43653544152B81ED53F60514148E17A543A535441E17A140E3D6051410000006041535441295C8FA23B605141713D0AC744535441D7A370ED39605141713D0AC748535441713D0A073760514185EB51B84F5354411F85EBA13360514152B81E7558535441E7DF1E52336051417FD2314359535441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C2ED1C433D605141A1E0B9C15A535441DA91EA673360514187C5E80A595354416BCC5B7133605141058086F2585354411E69DC6D336051419682E1F158535441C3F5285C2A605141F6285C2F7053544185EB5118346051411F85EBA17253544148E17A94416051410AD7A350765354417B14AEA7446051410AD7A300775354410BD029A644605141A593CF18775354413A98C63D486051411DE3DEDD7753544185EB513848605141CDCCCCCC77535441C3F528CC43605141A4703DDA655354419AAB76DC43605141569784DD655354410E53E54D41605141DA48CD845B5354411CDCA84B3D6051413FADC2D05A535441C2ED1C433D605141A1E0B9C15A535441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952761 - 2976752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC8C68F350417B14AEF7DD4B5441EC51B82E69F350417B14AEF7E14B5441AE47E1BA69F35041CDCCCC6CE54B54419A9999D96DF35041F6285C6FE44B5441713D0AA774F350415C8FC255E24B5441000000C076F350411F85EBD1E14B5441C3F5284C7EF35041EC51B80EE04B54418FC2F55884F35041C3F528DCDE4B5441587632E58CF3504111194324DD4B5441DE3120B598F35041E134FBF0DA4B5441EC51B8DEA1F35041AE47E13ADA4B544185EB51C8A8F35041713D0A27D94B5441713D0A67A9F35041E17A140ED94B5441C3F5283CA8F35041B81E858BD74B5441666666E6A5F3504148E17A84D34B5441D7A3707DA3F350417B14AE67D04B5441AE47E1FAA0F3504148E17AC4CD4B5441CDCCCC7C9EF35041F6285CEFCA4B544148E17AE49CF35041CDCCCC7CC94B544152B81E759BF3504100000090C74B5441C3F528BC99F3504185EB5178C54B54410000002097F3504152B81E35C24B5441F6285C0F79F3504148E17A14CB4B5441E17A146E69F35041EC51B8DECF4B544114AE47F165F3504166666656D14B544185EB51C866F3504152B81EC5D44B54418FC2F53868F3504152B81E35DA4B54418FC2F56868F3504133333313DD4B5441CDCCCC8C68F350417B14AEF7DD4B5441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000C3F528FCB1F350415C8FC295024C5441D7A3700DB2F35041C3F5288C024C5441B599FE39B0F35041A72D7AB6FA4B5441911F9BECAFF350414A0F0478F84B54416E30DA4EAFF35041AB28515DF44B544112F4BEDDAEF35041308B4E78EB4B54414FCCBB60AEF350412B13A3E9E14B5441F611D0ADADF35041809FFFC2DF4B5441ADB11EB4ACF35041FCB05F16DE4B54413B53BCA4AAF3504170E774C8DA4B544119CCE766A9F35041DCEEE70DD94B5441E9DC86DBA6F350418AEADA73D94B544121B1672EA2F35041857C752EDA4B54416B43217AA0F3504164649056DA4B54418AD4BFE39DF3504102FEFC89DA4B54412770CB9398F350410C5256FBDA4B5441B0B2D43190F350416CA9ED86DC4B5441B83A510883F350413D392F1FDF4B54419883021D81F35041CC150A80DF4B5441EEBF0A4F7DF35041A610D449E04B544129DDA72679F35041D58C6242E14B5441FD8EF74D75F35041433BC62CE24B5441B94A41B071F35041D78DB441E34B54415A9ACD7E6EF35041C3315C3CE44B5441A59795926DF3504130A86C80E44B544169B06BBA69F35041F2189A6EE54B54416BD73BA167F350410BD0EEA9ED4B544148E17A7466F350415C8FC245F24B5441007A523564F350414936B217FB4B5441EF67A65B61F35041F93F4248064C5441F803EA9C60F350416A9F0E35094C5441B81E853B5EF35041D7A3708D124C54413D0AD7F35CF35041666666F6144C544185EB512860F35041333333B3144C54413333337365F35041F6285CBF134C54417B14AEF76DF3504166666686124C544152B81EF571F35041A4703DEA114C54419698018075F35041F15BB53E114C5441295C8F4279F3504100000090104C54413D0AD7137EF35041713D0A770F4C544152B81E1585F350410AD7A3D00D4C5441AC7B187587F35041A9DA1E2D0D4C5441B789B9B189F35041BB05F5970C4C54418B28F45D8CF3504131DEB4E30B4C54414CC8E37D8DF35041D3570A980B4C54415FB3635F90F35041E5ED13EF0A4C5441444EBC0992F35041D9128F8D0A4C54414B154A6A96F35041F1F41D77094C5441B81E85AB98F350417B14AEE7084C5441C3F528FC9FF35041A4703D1A074C544130C1F798A5F35041A6DBBCBE054C54419A999939A8F35041C3F5281C054C5441295C8FD2ADF350413D0AD7C3034C5441C3F528FCB1F350415C8FC295024C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952761 - 5248540
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC8C68F350417B14AEF7DD4B5441EC51B82E69F350417B14AEF7E14B5441AE47E1BA69F35041CDCCCC6CE54B54419A9999D96DF35041F6285C6FE44B5441713D0AA774F350415C8FC255E24B5441000000C076F350411F85EBD1E14B5441C3F5284C7EF35041EC51B80EE04B54418FC2F55884F35041C3F528DCDE4B5441587632E58CF3504111194324DD4B5441DE3120B598F35041E134FBF0DA4B5441EC51B8DEA1F35041AE47E13ADA4B544185EB51C8A8F35041713D0A27D94B5441713D0A67A9F35041E17A140ED94B5441C3F5283CA8F35041B81E858BD74B5441666666E6A5F3504148E17A84D34B5441D7A3707DA3F350417B14AE67D04B5441AE47E1FAA0F3504148E17AC4CD4B5441CDCCCC7C9EF35041F6285CEFCA4B544148E17AE49CF35041CDCCCC7CC94B544152B81E759BF3504100000090C74B5441C3F528BC99F3504185EB5178C54B54410000002097F3504152B81E35C24B5441F6285C0F79F3504148E17A14CB4B5441E17A146E69F35041EC51B8DECF4B544114AE47F165F3504166666656D14B544185EB51C866F3504152B81EC5D44B54418FC2F53868F3504152B81E35DA4B54418FC2F56868F3504133333313DD4B5441CDCCCC8C68F350417B14AEF7DD4B5441
+</a>
+
+<b>
+01060000000100000001030000000100000036000000C3F528FCB1F350415C8FC295024C5441D7A3700DB2F35041C3F5288C024C5441B599FE39B0F35041A72D7AB6FA4B5441911F9BECAFF350414A0F0478F84B54416E30DA4EAFF35041AB28515DF44B544112F4BEDDAEF35041308B4E78EB4B54414FCCBB60AEF350412B13A3E9E14B5441F611D0ADADF35041809FFFC2DF4B5441ADB11EB4ACF35041FCB05F16DE4B54413B53BCA4AAF3504170E774C8DA4B544119CCE766A9F35041DCEEE70DD94B5441E9DC86DBA6F350418AEADA73D94B544121B1672EA2F35041857C752EDA4B54416B43217AA0F3504164649056DA4B54418AD4BFE39DF3504102FEFC89DA4B54412770CB9398F350410C5256FBDA4B5441B0B2D43190F350416CA9ED86DC4B5441B83A510883F350413D392F1FDF4B54419883021D81F35041CC150A80DF4B5441EEBF0A4F7DF35041A610D449E04B544129DDA72679F35041D58C6242E14B5441FD8EF74D75F35041433BC62CE24B5441B94A41B071F35041D78DB441E34B54415A9ACD7E6EF35041C3315C3CE44B5441A59795926DF3504130A86C80E44B544169B06BBA69F35041F2189A6EE54B54416BD73BA167F350410BD0EEA9ED4B544148E17A7466F350415C8FC245F24B5441007A523564F350414936B217FB4B5441EF67A65B61F35041F93F4248064C5441F803EA9C60F350416A9F0E35094C5441B81E853B5EF35041D7A3708D124C54413D0AD7F35CF35041666666F6144C544185EB512860F35041333333B3144C54413333337365F35041F6285CBF134C54417B14AEF76DF3504166666686124C544152B81EF571F35041A4703DEA114C54419698018075F35041F15BB53E114C5441295C8F4279F3504100000090104C54413D0AD7137EF35041713D0A770F4C544152B81E1585F350410AD7A3D00D4C5441AC7B187587F35041A9DA1E2D0D4C5441B789B9B189F35041BB05F5970C4C54418B28F45D8CF3504131DEB4E30B4C54414CC8E37D8DF35041D3570A980B4C54415FB3635F90F35041E5ED13EF0A4C5441444EBC0992F35041D9128F8D0A4C54414B154A6A96F35041F1F41D77094C5441B81E85AB98F350417B14AEE7084C5441C3F528FC9FF35041A4703D1A074C544130C1F798A5F35041A6DBBCBE054C54419A999939A8F35041C3F5281C054C5441295C8FD2ADF350413D0AD7C3034C5441C3F528FCB1F350415C8FC295024C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663590 - 1232725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000003F0000005C8FC2B5C373514100000090C4B75441333333E3C17351413D0AD7D3C8B7544148E17AF4BE7351411F85EBA1CCB754417B14AE37BB735141AE47E1BAD2B7544185EB51F8B973514114AE4791D4B754415C8FC215B6735141AE47E1FAD9B7544114AE4781AE735141333333D3E4B75441EC51B82EA97351410AD7A3C0ECB754415C8FC235A8735141E17A140EEEB754418FC2F5C8A173514152B81EA5F6B754413D0AD7F3A573514185EB5198F8B7544185EB5178A6735141713D0AB7F7B75441713D0A47A973514114AE4731F4B75441F6285C7FAB7351418FC2F548F2B75441EC51B8CEAD7351419A999929F1B754415C8FC2C5B1735141EC51B80EEEB7544185EB5178B5735141A4703D6AEBB754413D0AD773B773514114AE4791E9B75441C3F5288CBB7351410AD7A390E2B754413D0AD783C0735141CDCCCC4CDAB75441F6285C6FC073514114AE4721DFB75441295C8FD2C1735141AE47E17AE4B754413D0AD743C473514148E17AA4E8B7544166666676C97351417B14AEC7EEB75441B81E853BCC7351411F85EB71EEB75441000000B0CF735141F6285C4FEDB7544148E17A24D073514114AE4711ECB754419A999979D07351411F85EB51E9B754411F85EBF1D0735141D7A3706DE5B75441D7A3706DD1735141AE47E13AE4B7544152B81E25D2735141B81E856BE4B7544100000000D373514133333353E2B75441B81E856BCF735141333333F3DEB754415C8FC2E5CC735141D7A3701DDCB7544100000030CA735141666666F6D8B7544148E17A94C8735141F6285C7FD6B75441F6285C2FC9735141CDCCCCECD4B754410AD7A310C773514114AE47E1D3B75441C3F5282CC673514148E17A04D3B75441713D0AA7C5735141F6285CCFD1B75441D7A370BDCA735141D7A370DDCAB75441F6285C2FCD735141E17A14DEC7B754410AD7A3E0D07351415C8FC205C3B75441B81E85CBDB7351411F85EB21B6B75441CDCCCC6CE0735141EC51B85EB0B75441000000C0E17351411F85EBA1AEB75441C3F5287CE2735141E17A147EADB75441F6285C1FE3735141A4703DEAABB754413D0AD793E3735141AE47E1DAA9B75441B81E85FBE073514114AE47D1AAB75441A4703D5ADD73514166666656ACB75441713D0A47D973514185EB51C8ADB75441713D0A47D67351410AD7A330AFB7544152B81EC5D3735141C3F5283CB0B75441C3F528BCD273514148E17A14B2B75441E17A140ED173514133333363B4B75441295C8F82CF7351417B14AE67B6B7544100000060CB73514114AE4701BBB7544185EB5178C8735141295C8F42BEB75441E17A146EC773514114AE47D1BFB75441C3F528ECC5735141EC51B8DEC1B75441B81E857BC4735141F6285C6FC3B754415C8FC2B5C373514100000090C4B754410B000000EC51B86EC37351410AD7A390CDB75441B81E857BC173514185EB5168D0B75441713D0AE7BE7351417B14AE17D3B75441713D0AE7BE735141713D0AC7D1B7544100000010C073514133333383CFB75441AE47E12AC1735141B81E85ABCDB75441713D0A97C2735141D7A3709DCCB75441295C8F02C4735141A4703D5ACAB754410AD7A310C7735141E17A14EEC7B754411F85EBB1C4735141A4703D5ACBB75441EC51B86EC37351410AD7A390CDB75441070000007B14AE37BC735141295C8FE2D7B75441666666E6BB735141AE47E1BAD9B754413D0AD7F3BA7351413D0AD733DBB754411F85EB51B9735141AE47E1BADBB75441713D0A37B973514185EB51C8D9B7544114AE4701BB7351417B14AEC7D7B754417B14AE37BC735141295C8FE2D7B75441
+</a>
+
+<b>
+01060000000100000001030000000100000053000000713D0AA7C5735141F6285CCFD1B75441264BE049C8735141DE502236CEB75441043AEC7FCA7351412AF76A31CBB75441671E8AFACB7351410960AF58C9B75441564CC62DD073514129E573F0C3B75441CD7FEC2FDB7351413ED4A0D9B6B75441E9A16A2FDD735141D994F866B4B75441C9174EE6DA735141C9468C30B7B754417E421354E173514119A9712FAFB754414124C9B4E27351415789F5F1ACB75441F81A1510E373514114620B10ACB7544192F04184E37351415905D6A4ABB7544106270782E4735141373677D3AAB7544147369946E57351410BD77E8BAAB75441C04C067EE5735141C0922F22AAB754413D0AD793E3735141AE47E1DAA9B75441B81E85FBE073514114AE47D1AAB75441A4703D5ADD73514166666656ACB75441713D0A47D973514185EB51C8ADB754416DEDF3C8D7735141220A9A3CAEB75441B97514F0D7735141A0DE8C94B0B7544132128E1AD6735141C2FF0E31B1B75441A6014DCCD5735141B91ADB8AAEB75441826F5EADD47351413A5311CCAEB7544152B81EC5D3735141C3F5283CB0B75441C3F528BCD273514148E17A14B2B75441E17A140ED173514133333363B4B75441295C8F82CF7351417B14AE67B6B7544100000060CB73514114AE4701BBB7544185EB5178C8735141295C8F42BEB75441E17A146EC773514114AE47D1BFB75441C3F528ECC5735141EC51B8DEC1B75441B81E857BC4735141F6285C6FC3B754415C8FC2B5C373514100000090C4B75441333333E3C17351413D0AD7D3C8B7544148E17AF4BE7351411F85EBA1CCB754417B14AE37BB735141AE47E1BAD2B7544185EB51F8B973514114AE4791D4B754415C8FC215B6735141AE47E1FAD9B7544114AE4781AE735141333333D3E4B75441EC51B82EA97351410AD7A3C0ECB754415C8FC235A8735141E17A140EEEB754418FC2F5C8A173514152B81EA5F6B754413D0AD7F3A573514185EB5198F8B7544185EB5178A6735141713D0AB7F7B75441B06BC164A9735141F353A0E7F4B7544139C66197AB7351416AF9FFB4F2B75441EC51B8CEAD7351419A999929F1B754415C8FC2C5B1735141EC51B80EEEB7544185EB5178B5735141A4703D6AEBB754414EB8D3ADB773514175F2DA10EAB75441C11F7C6BBB7351417355914FE7B75441038428D5BC7351417A08B80FE4B75441EFD902EEC07351418AB2D410EAB75441263EAF57C27351419AEDAB9EEBB75441EB368971C37351415D40BFA0EAB75441AE565865C27351418F180175E9B75441CB617B88C1735141E0BD61FAE7B754414C25118CC0735141B3265883E5B7544147A11970BF735141BA298C6EE2B754410C83E4F1BE735141E67DD626E0B7544132D4FABEBF735141C4EEBBE7DFB7544103BEB478C1735141B0645CF5E4B75441D1E572A4C27351414F76D4DAE7B754417C7E1691C37351413F2DAD45E9B75441134A9BCCC4735141949CF890EAB75441A9FF64A9C8735141CD4084A9EDB75441C9EAB11BCC7351411E675E76EDB754416C95418ECE735141C67690B6ECB754414A4CC89ACF7351418749409DEBB754419A999979D07351411F85EB51E9B754411F85EBF1D0735141D7A3706DE5B75441D7A3706DD1735141AE47E13AE4B7544152B81E25D2735141B81E856BE4B7544100000000D373514133333353E2B7544115B3B83CCF7351416DAC1162DFB754418E9A60B5CC735141A6AEDF81DCB75441AC06E0E1C9735141D7F7702FD9B7544148E17A94C8735141F6285C7FD6B75441F6285C2FC9735141CDCCCCECD4B754410AD7A310C773514114AE47E1D3B75441C3F5282CC673514148E17A04D3B75441713D0AA7C5735141F6285CCFD1B75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663590 - 3566215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000003F0000005C8FC2B5C373514100000090C4B75441333333E3C17351413D0AD7D3C8B7544148E17AF4BE7351411F85EBA1CCB754417B14AE37BB735141AE47E1BAD2B7544185EB51F8B973514114AE4791D4B754415C8FC215B6735141AE47E1FAD9B7544114AE4781AE735141333333D3E4B75441EC51B82EA97351410AD7A3C0ECB754415C8FC235A8735141E17A140EEEB754418FC2F5C8A173514152B81EA5F6B754413D0AD7F3A573514185EB5198F8B7544185EB5178A6735141713D0AB7F7B75441713D0A47A973514114AE4731F4B75441F6285C7FAB7351418FC2F548F2B75441EC51B8CEAD7351419A999929F1B754415C8FC2C5B1735141EC51B80EEEB7544185EB5178B5735141A4703D6AEBB754413D0AD773B773514114AE4791E9B75441C3F5288CBB7351410AD7A390E2B754413D0AD783C0735141CDCCCC4CDAB75441F6285C6FC073514114AE4721DFB75441295C8FD2C1735141AE47E17AE4B754413D0AD743C473514148E17AA4E8B7544166666676C97351417B14AEC7EEB75441B81E853BCC7351411F85EB71EEB75441000000B0CF735141F6285C4FEDB7544148E17A24D073514114AE4711ECB754419A999979D07351411F85EB51E9B754411F85EBF1D0735141D7A3706DE5B75441D7A3706DD1735141AE47E13AE4B7544152B81E25D2735141B81E856BE4B7544100000000D373514133333353E2B75441B81E856BCF735141333333F3DEB754415C8FC2E5CC735141D7A3701DDCB7544100000030CA735141666666F6D8B7544148E17A94C8735141F6285C7FD6B75441F6285C2FC9735141CDCCCCECD4B754410AD7A310C773514114AE47E1D3B75441C3F5282CC673514148E17A04D3B75441713D0AA7C5735141F6285CCFD1B75441D7A370BDCA735141D7A370DDCAB75441F6285C2FCD735141E17A14DEC7B754410AD7A3E0D07351415C8FC205C3B75441B81E85CBDB7351411F85EB21B6B75441CDCCCC6CE0735141EC51B85EB0B75441000000C0E17351411F85EBA1AEB75441C3F5287CE2735141E17A147EADB75441F6285C1FE3735141A4703DEAABB754413D0AD793E3735141AE47E1DAA9B75441B81E85FBE073514114AE47D1AAB75441A4703D5ADD73514166666656ACB75441713D0A47D973514185EB51C8ADB75441713D0A47D67351410AD7A330AFB7544152B81EC5D3735141C3F5283CB0B75441C3F528BCD273514148E17A14B2B75441E17A140ED173514133333363B4B75441295C8F82CF7351417B14AE67B6B7544100000060CB73514114AE4701BBB7544185EB5178C8735141295C8F42BEB75441E17A146EC773514114AE47D1BFB75441C3F528ECC5735141EC51B8DEC1B75441B81E857BC4735141F6285C6FC3B754415C8FC2B5C373514100000090C4B754410B000000EC51B86EC37351410AD7A390CDB75441B81E857BC173514185EB5168D0B75441713D0AE7BE7351417B14AE17D3B75441713D0AE7BE735141713D0AC7D1B7544100000010C073514133333383CFB75441AE47E12AC1735141B81E85ABCDB75441713D0A97C2735141D7A3709DCCB75441295C8F02C4735141A4703D5ACAB754410AD7A310C7735141E17A14EEC7B754411F85EBB1C4735141A4703D5ACBB75441EC51B86EC37351410AD7A390CDB75441070000007B14AE37BC735141295C8FE2D7B75441666666E6BB735141AE47E1BAD9B754413D0AD7F3BA7351413D0AD733DBB754411F85EB51B9735141AE47E1BADBB75441713D0A37B973514185EB51C8D9B7544114AE4701BB7351417B14AEC7D7B754417B14AE37BC735141295C8FE2D7B75441
+</a>
+
+<b>
+01060000000100000001030000000100000053000000713D0AA7C5735141F6285CCFD1B75441264BE049C8735141DE502236CEB75441043AEC7FCA7351412AF76A31CBB75441671E8AFACB7351410960AF58C9B75441564CC62DD073514129E573F0C3B75441CD7FEC2FDB7351413ED4A0D9B6B75441E9A16A2FDD735141D994F866B4B75441C9174EE6DA735141C9468C30B7B754417E421354E173514119A9712FAFB754414124C9B4E27351415789F5F1ACB75441F81A1510E373514114620B10ACB7544192F04184E37351415905D6A4ABB7544106270782E4735141373677D3AAB7544147369946E57351410BD77E8BAAB75441C04C067EE5735141C0922F22AAB754413D0AD793E3735141AE47E1DAA9B75441B81E85FBE073514114AE47D1AAB75441A4703D5ADD73514166666656ACB75441713D0A47D973514185EB51C8ADB754416DEDF3C8D7735141220A9A3CAEB75441B97514F0D7735141A0DE8C94B0B7544132128E1AD6735141C2FF0E31B1B75441A6014DCCD5735141B91ADB8AAEB75441826F5EADD47351413A5311CCAEB7544152B81EC5D3735141C3F5283CB0B75441C3F528BCD273514148E17A14B2B75441E17A140ED173514133333363B4B75441295C8F82CF7351417B14AE67B6B7544100000060CB73514114AE4701BBB7544185EB5178C8735141295C8F42BEB75441E17A146EC773514114AE47D1BFB75441C3F528ECC5735141EC51B8DEC1B75441B81E857BC4735141F6285C6FC3B754415C8FC2B5C373514100000090C4B75441333333E3C17351413D0AD7D3C8B7544148E17AF4BE7351411F85EBA1CCB754417B14AE37BB735141AE47E1BAD2B7544185EB51F8B973514114AE4791D4B754415C8FC215B6735141AE47E1FAD9B7544114AE4781AE735141333333D3E4B75441EC51B82EA97351410AD7A3C0ECB754415C8FC235A8735141E17A140EEEB754418FC2F5C8A173514152B81EA5F6B754413D0AD7F3A573514185EB5198F8B7544185EB5178A6735141713D0AB7F7B75441B06BC164A9735141F353A0E7F4B7544139C66197AB7351416AF9FFB4F2B75441EC51B8CEAD7351419A999929F1B754415C8FC2C5B1735141EC51B80EEEB7544185EB5178B5735141A4703D6AEBB754414EB8D3ADB773514175F2DA10EAB75441C11F7C6BBB7351417355914FE7B75441038428D5BC7351417A08B80FE4B75441EFD902EEC07351418AB2D410EAB75441263EAF57C27351419AEDAB9EEBB75441EB368971C37351415D40BFA0EAB75441AE565865C27351418F180175E9B75441CB617B88C1735141E0BD61FAE7B754414C25118CC0735141B3265883E5B7544147A11970BF735141BA298C6EE2B754410C83E4F1BE735141E67DD626E0B7544132D4FABEBF735141C4EEBBE7DFB7544103BEB478C1735141B0645CF5E4B75441D1E572A4C27351414F76D4DAE7B754417C7E1691C37351413F2DAD45E9B75441134A9BCCC4735141949CF890EAB75441A9FF64A9C8735141CD4084A9EDB75441C9EAB11BCC7351411E675E76EDB754416C95418ECE735141C67690B6ECB754414A4CC89ACF7351418749409DEBB754419A999979D07351411F85EB51E9B754411F85EBF1D0735141D7A3706DE5B75441D7A3706DD1735141AE47E13AE4B7544152B81E25D2735141B81E856BE4B7544100000000D373514133333353E2B7544115B3B83CCF7351416DAC1162DFB754418E9A60B5CC735141A6AEDF81DCB75441AC06E0E1C9735141D7F7702FD9B7544148E17A94C8735141F6285C7FD6B75441F6285C2FC9735141CDCCCCECD4B754410AD7A310C773514114AE47E1D3B75441C3F5282CC673514148E17A04D3B75441713D0AA7C5735141F6285CCFD1B75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664029 - 58966
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000300000001030000000100000021000000713D0A079C2A5141AE47E1CABE2E544152B81E35A22A5141000000C0C42E5441295C8F52A72A5141B81E855BC52E5441713D0A37A82A5141F6285CDFC12E5441F6285C8FA22A5141C3F5284CC12E5441713D0A179D2A5141E17A14CEBD2E544100000030A02A5141E17A14EEBA2E5441A4703DCA992A5141C3F5281CB42E5441C3F5287C962A5141A4703D3AB12E54411F85EB91952A514185EB5158AE2E54415C8FC205942A514185EB51F8A12E54417B14AE07862A5141666666269B2E54417B14AE17832A5141B81E85DB9A2E5441CDCCCC3C852A5141F6285CFF9C2E544148E17A64892A514114AE4761A02E544152B81E558C2A5141A4703DFAA32E5441C3F528BC8D2A514152B81E55A72E5441666666C68D2A514100000070A82E5441D7A3702D8E2A51410AD7A360AB2E544148E17A148D2A514185EB51B8AB2E5441333333037B2A5141F6285C1FB02E5441333333737A2A514148E17A44B02E5441C3F528BC7D2A5141A4703D3AB12E5441A4703D2A822A5141A4703DEAB22E54411F85EBB1842A514100000060B52E54411F85EB61862A514166666686B92E544100000070872A5141C3F528FCBB2E54413D0AD7D3892A5141000000F0BE2E5441E17A146E8C2A514100000050C22E54413D0AD7E38E2A5141A4703D7AC52E54411F85EBC1922A514148E17AB4C42E54411F85EB61982A5141C3F5282CC22E5441713D0A079C2A5141AE47E1CABE2E5441010300000002000000530000009A9999B98D2A5141B81E854BC52E5441AE47E1BA8B2A5141CDCCCCCCC22E5441C3F528BC882A5141D7A370DDBE2E5441EC51B86E862A51413D0AD7E3BB2E5441E17A14FE842A5141D7A3700DB82E5441D7A3708D832A5141F6285CBFB52E5441666666F6802A514185EB5128B32E54415C8FC2257A2A5141B81E850BB12E54415C8FC205762A514100000060B02E5441AE47E1DA722A5141333333F3B02E54411F85EBA16E2A51418FC2F5E8B12E5441B81E85EB6E2A5141AE47E18AB32E5441713D0A17662A5141EC51B80EB42E544100000070602A5141EC51B8CEB22E5441713D0A975C2A5141C3F528DCB72E5441713D0A975C2A5141E17A14EEBA2E54411F85EB01582A5141CDCCCCECBC2E5441CDCCCC2C582A5141713D0A27BF2E5441B81E85BB582A5141E17A147EC82E544166666626672A51410AD7A3C0CD2E5441713D0A27662A51415C8FC205CF2E54411F85EBE14B2A514114AE4721CE2E5441CDCCCC8C4A2A51417B14AE07D12E544148E17A24482A5141D7A370FDD12E5441713D0AB74D2A51411F85EB21D72E5441AE47E1DA502A5141AE47E13ADB2E544166666606512A5141713D0AF7E62E544100000080512A5141000000F0E62E544148E17AA4522A51415C8FC265E92E5441A4703D9A542A5141D7A3700DEA2E5441295C8FF2592A514185EB5108E82E54417B14AE27632A51411F85EB81E82E544152B81EB5652A5141B81E85FBE82E5441F6285C8F682A514114AE4791E82E5441295C8F826F2A5141C3F5285CEB2E5441000000E0702A51411F85EBB1EF2E54415C8FC2D5722A51418FC2F558F02E54413D0AD733742A51411F85EB81EE2E5441A4703DBA732A5141C3F5288CEC2E544185EB5178712A5141C3F528ECE82E54415C8FC2E56F2A5141AE47E16AE82E54410AD7A3106E2A514114AE4751E82E5441CDCCCCBC682A5141E17A141EE72E54417B14AE27572A514100000040E72E5441B81E85AB512A5141AE47E14AE72E54411F85EB81512A5141F6285CEFE62E5441666666D6682A51417B14AEB7E62E5441EC51B80E6E2A5141F6285CBFE72E5441AE47E12A702A5141EC51B88EE72E544185EB5108712A51413D0AD713E72E5441F6285CEF702A51413D0AD763E42E54410AD7A320712A51415C8FC2A5E02E54417B14AE47722A5141A4703DBADE2E5441C3F528BC752A51411F85EBF1DB2E5441A4703D2A7C2A5141A4703D5AD92E5441713D0A377E2A5141E17A148ED82E54419A9999097E2A5141295C8FD2D92E54411F85EBA1792A5141E17A144EDB2E5441333333F3762A5141A4703D3ADC2E544185EB5198732A5141A4703D9ADE2E544148E17A34722A5141E17A144EE02E54410AD7A3C0712A5141EC51B82EE22E54415C8FC2F5712A5141C3F5286CE62E54410AD7A360722A51418FC2F528E82E5441D7A3702D732A5141CDCCCCDCE92E544114AE4731752A5141EC51B80EED2E5441AE47E13A7A2A514185EB51E8E62E5441D7A3701D7D2A51418FC2F5D8DE2E5441D7A3704D7E2A51419A999989D82E544114AE47A1812A514114AE47C1D62E54411F85EB51842A5141B81E852BD42E5441F6285CFF8B2A5141713D0A47CF2E5441A4703D1A8D2A5141CDCCCCECCE2E5441AE47E18A8D2A51419A999959CE2E54411F85EBE18D2A5141B81E855BCD2E54417B14AE978E2A5141D7A3709DC92E5441CDCCCCBC8E2A51418FC2F598C72E54417B14AED78E2A5141F6285CEFC62E54413D0AD7E38E2A5141A4703D7AC52E54411F85EBD18E2A514133333363C52E5441F6285CCF8E2A5141B81E850BC72E5441666666B68E2A5141A4703D8AC72E54419A9999B98D2A5141B81E854BC52E544106000000713D0A276F2A5141C3F5288CE02E54415C8FC2E5602A5141A4703DBAE02E5441333333B3582A514185EB5178DE2E54411F85EB315B2A514185EB5118D62E5441D7A3704D6C2A5141B81E850BD72E5441713D0A276F2A5141C3F5288CE02E54410103000000010000003A00000033333303972A5141A4703DDA3F2F544166666656932A51411F85EB313C2F5441666666E6922A5141333333A33B2F5441A4703D9A922A5141333333433B2F5441000000908E2A514100000080342F5441A4703D7A8A2A5141B81E85AB342F544152B81E95872A51415C8FC295342F5441F6285C2F862A5141F6285C5F342F544133333373842A5141B81E855B342F544100000020822A514185EB5108352F5441AE47E1AA7E2A514185EB51A8352F5441F6285C9F892A51411F85EBC1492F5441C3F5284C7E2A514152B81EB5502F544133333303802A5141295C8FD2552F54417B14AEB7722A51419A9999C9582F5441F6285C8F6B2A514114AE47214D2F544133333383682A51418FC2F5D84D2F544148E17A746B2A5141A4703DCA542F544185EB51A86B2A514114AE4741552F544114AE47216F2A51419A9999495D2F5441295C8FF2732A5141E17A14DE642F5441B81E85DB752A5141EC51B87E672F54415C8FC235762A51417B14AEB7672F5441295C8F12772A51410AD7A3C0672F5441666666A6782A5141CDCCCCFC672F54413D0AD7037B2A514152B81E25682F544152B81E057D2A514114AE4761682F5441A4703D8A7E2A514185EB51C8682F54413D0AD713802A5141E17A148E692F5441D7A3700D812A5141B81E854B6A2F54415C8FC2E5812A5141713D0A476B2F54418FC2F568822A51410AD7A3E06B2F5441B81E858B822A5141EC51B85E6C2F54415C8FC275822A51415C8FC2B56E2F5441AE47E17A872A51415C8FC2F5842F5441B81E85BB8B2A51418FC2F518862F5441B81E853B902A5141F6285CEF802F54411F85EB41942A514114AE47517C2F5441333333539B2A5141C3F5285C772F5441000000E0A12A51413D0AD7C3722F5441333333B3A02A5141CDCCCC2C6B2F544148E17AF49E2A5141333333A3632F54418FC2F538972A514166666646612F5441F6285CDF942A5141E17A14DE572F54418FC2F5289C2A514185EB5158572F54417B14AEE79B2A5141CDCCCCBC562F54413D0AD7D39B2A51410AD7A300562F5441333333939B2A51413D0AD703552F54417B14AE379B2A514114AE4701532F5441666666569B2A5141333333E3512F54418FC2F5A89B2A51415C8FC2C5502F54417B14AEB79B2A5141EC51B80E502F5441AE47E10A9C2A514185EB51384F2F5441F6285C5F9C2A51410AD7A3604D2F5441CDCCCC5C9C2A51411F85EB114A2F5441E17A144E9C2A514185EB5188482F544148E17AF49B2A5141CDCCCCAC452F544133333303972A5141A4703DDA3F2F5441
+</a>
+
+<b>
+0106000000030000000103000000010000003B000000243FDC376E2A514125D4A82D5B2F5441BFE624326F2A51414C7222645D2F5441D6A09CA3752A5141ED46CF31672F5441B81E85DB752A5141EC51B87E672F54415C8FC235762A51417B14AEB7672F5441295C8F12772A51410AD7A3C0672F5441666666A6782A5141CDCCCCFC672F54413D0AD7037B2A514152B81E25682F544152B81E057D2A514114AE4761682F5441A4703D8A7E2A514185EB51C8682F54413D0AD713802A5141E17A148E692F5441D7A3700D812A5141B81E854B6A2F54415C8FC2E5812A5141713D0A476B2F54418FC2F568822A51410AD7A3E06B2F5441B81E858B822A5141EC51B85E6C2F54415C8FC275822A51415C8FC2B56E2F5441AE47E17A872A51415C8FC2F5842F5441B81E85BB8B2A51418FC2F518862F5441B81E853B902A5141F6285CEF802F54411F85EB41942A514114AE47517C2F5441333333539B2A5141C3F5285C772F5441000000E0A12A51413D0AD7C3722F5441333333B3A02A5141CDCCCC2C6B2F544148E17AF49E2A5141333333A3632F54418FC2F538972A514166666646612F5441F6285CDF942A5141E17A14DE572F54418FC2F5289C2A514185EB5158572F54417B14AEE79B2A5141CDCCCCBC562F54413D0AD7D39B2A51410AD7A300562F5441333333939B2A51413D0AD703552F54417B14AE379B2A514114AE4701532F5441666666569B2A5141333333E3512F54418FC2F5A89B2A51415C8FC2C5502F54417B14AEB79B2A5141EC51B80E502F5441AE47E10A9C2A514185EB51384F2F5441F6285C5F9C2A51410AD7A3604D2F5441CDCCCC5C9C2A51411F85EB114A2F5441E17A144E9C2A514185EB5188482F544148E17AF49B2A5141CDCCCCAC452F544133333303972A5141A4703DDA3F2F544166666656932A51411F85EB313C2F5441666666E6922A5141333333A33B2F5441A4703D9A922A5141333333433B2F5441000000908E2A514100000080342F5441A4703D7A8A2A5141B81E85AB342F544152B81E95872A51415C8FC295342F5441F6285C2F862A5141F6285C5F342F544133333373842A5141B81E855B342F544100000020822A514185EB5108352F5441AE47E1AA7E2A514185EB51A8352F5441F6285C9F892A51411F85EBC1492F5441C3F5284C7E2A514152B81EB5502F544133333303802A5141295C8FD2552F54417B14AEB7722A51419A9999C9582F54419BBCA0BE6B2A51412F06446E4D2F54416D725483682A5141D93344D94D2F544148E17A746B2A5141A4703DCA542F544185EB51A86B2A514114AE4741552F5441243FDC376E2A514125D4A82D5B2F5441010300000002000000530000009A9999B98D2A5141B81E854BC52E5441AE47E1BA8B2A5141CDCCCCCCC22E5441C3F528BC882A5141D7A370DDBE2E5441EC51B86E862A51413D0AD7E3BB2E5441E17A14FE842A5141D7A3700DB82E5441D7A3708D832A5141F6285CBFB52E5441666666F6802A514185EB5128B32E54415C8FC2257A2A5141B81E850BB12E54415C8FC205762A514100000060B02E5441AE47E1DA722A5141333333F3B02E54411F85EBA16E2A51418FC2F5E8B12E5441B81E85EB6E2A5141AE47E18AB32E5441713D0A17662A5141EC51B80EB42E544100000070602A5141EC51B8CEB22E5441713D0A975C2A5141C3F528DCB72E5441713D0A975C2A5141E17A14EEBA2E54411F85EB01582A5141CDCCCCECBC2E5441CDCCCC2C582A5141713D0A27BF2E5441B81E85BB582A5141E17A147EC82E544166666626672A51410AD7A3C0CD2E5441713D0A27662A51415C8FC205CF2E54411F85EBE14B2A514114AE4721CE2E5441CDCCCC8C4A2A51417B14AE07D12E544148E17A24482A5141D7A370FDD12E5441713D0AB74D2A51411F85EB21D72E5441AE47E1DA502A5141AE47E13ADB2E544166666606512A5141713D0AF7E62E544100000080512A5141000000F0E62E544148E17AA4522A51415C8FC265E92E5441A4703D9A542A5141D7A3700DEA2E5441295C8FF2592A514185EB5108E82E54417B14AE27632A51411F85EB81E82E544152B81EB5652A5141B81E85FBE82E5441F6285C8F682A514114AE4791E82E5441295C8F826F2A5141C3F5285CEB2E5441000000E0702A51411F85EBB1EF2E54415C8FC2D5722A51418FC2F558F02E54413D0AD733742A51411F85EB81EE2E5441A4703DBA732A5141C3F5288CEC2E544185EB5178712A5141C3F528ECE82E54415C8FC2E56F2A5141AE47E16AE82E54410AD7A3106E2A514114AE4751E82E5441CDCCCCBC682A5141E17A141EE72E54417B14AE27572A514100000040E72E5441B81E85AB512A5141AE47E14AE72E54411F85EB81512A5141F6285CEFE62E5441666666D6682A51417B14AEB7E62E5441EC51B80E6E2A5141F6285CBFE72E5441AE47E12A702A5141EC51B88EE72E544185EB5108712A51413D0AD713E72E5441F6285CEF702A51413D0AD763E42E54410AD7A320712A51415C8FC2A5E02E54417B14AE47722A5141A4703DBADE2E5441C3F528BC752A51411F85EBF1DB2E5441A4703D2A7C2A5141A4703D5AD92E5441713D0A377E2A5141E17A148ED82E54419A9999097E2A5141295C8FD2D92E54411F85EBA1792A5141E17A144EDB2E5441333333F3762A5141A4703D3ADC2E544185EB5198732A5141A4703D9ADE2E544148E17A34722A5141E17A144EE02E54410AD7A3C0712A5141EC51B82EE22E54415C8FC2F5712A5141C3F5286CE62E54410AD7A360722A51418FC2F528E82E5441D7A3702D732A5141CDCCCCDCE92E544114AE4731752A5141EC51B80EED2E5441AE47E13A7A2A514185EB51E8E62E5441D7A3701D7D2A51418FC2F5D8DE2E5441D7A3704D7E2A51419A999989D82E544114AE47A1812A514114AE47C1D62E54411F85EB51842A5141B81E852BD42E5441F6285CFF8B2A5141713D0A47CF2E5441A4703D1A8D2A5141CDCCCCECCE2E5441AE47E18A8D2A51419A999959CE2E54411F85EBE18D2A5141B81E855BCD2E54417B14AE978E2A5141D7A3709DC92E5441CDCCCCBC8E2A51418FC2F598C72E54417B14AED78E2A5141F6285CEFC62E54413D0AD7E38E2A5141A4703D7AC52E54411F85EBD18E2A514133333363C52E5441F6285CCF8E2A5141B81E850BC72E5441666666B68E2A5141A4703D8AC72E54419A9999B98D2A5141B81E854BC52E544106000000713D0A276F2A5141C3F5288CE02E54415C8FC2E5602A5141A4703DBAE02E5441333333B3582A514185EB5178DE2E54411F85EB315B2A514185EB5118D62E5441D7A3704D6C2A5141B81E850BD72E5441713D0A276F2A5141C3F5288CE02E5441010300000001000000240000004AA58FA5832A514111D2A5E99A2E54417C95B437842A5141A5BFDFFA9B2E5441CDCCCC3C852A5141F6285CFF9C2E544148E17A64892A514114AE4761A02E544152B81E558C2A5141A4703DFAA32E5441C3F528BC8D2A514152B81E55A72E5441666666C68D2A514100000070A82E5441D7A3702D8E2A51410AD7A360AB2E544148E17A148D2A514185EB51B8AB2E5441333333037B2A5141F6285C1FB02E5441333333737A2A514148E17A44B02E5441C3F528BC7D2A5141A4703D3AB12E5441A4703D2A822A5141A4703DEAB22E54411F85EBB1842A514100000060B52E54411F85EB61862A514166666686B92E544100000070872A5141C3F528FCBB2E54413D0AD7D3892A5141000000F0BE2E5441E17A146E8C2A514100000050C22E54413D0AD7E38E2A5141A4703D7AC52E54411F85EBC1922A514148E17AB4C42E54411F85EB61982A5141C3F5282CC22E5441713D0A079C2A5141AE47E1CABE2E544152B81E35A22A5141000000C0C42E5441295C8F52A72A5141B81E855BC52E5441713D0A37A82A5141F6285CDFC12E5441F6285C8FA22A5141C3F5284CC12E5441713D0A179D2A5141E17A14CEBD2E544100000030A02A5141E17A14EEBA2E5441A4703DCA992A5141C3F5281CB42E5441C3F5287C962A5141A4703D3AB12E54411F85EB91952A514185EB5158AE2E5441F07556FA942A514148D3269CA92E544106C11BF7932A514125C32DF1A12E544189D6B138872A5141BEBB10BB9B2E54417B14AE07862A5141666666269B2E54414AA58FA5832A514111D2A5E99A2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>669909 - 3451874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B00000066666686BBE65041295C8F32260D5541666666D6BBE6504114AE47E12A0D55415C8FC205BDE650410AD7A3502E0D5541295C8F02C9E65041F6285C2F330D5541CDCCCCCCE0E65041CDCCCC7C3C0D5541C3F528DCE2E65041CDCCCC5C3C0D5541A4703D1AEAE65041E17A141E370D5541B81E858BF0E65041333333F32E0D55410AD7A3A0D0E6504148E17AF41E0D55415C8FC2C5BDE650415C8FC2051A0D554166666686BBE65041295C8F32260D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001300000075280F88BBE65041F3639229260D5541B52DB186BBE650417BD7EF36260D5541666666D6BBE6504114AE47E12A0D55413B6A7292BCE6504163C960022D0D554177BE9FBABDE65041F4FDD4782E0D554167F4BD5FBEE65041DD8B32DD2E0D5541C3BF2B71C4E65041F7BD4954310D5541D578E92EC8E65041B07268A1320D554196438B8CD3E6504137894148370D55413B03FDF2D4E650410F7980DA370D5541CDCCCCCCE0E65041CDCCCC7C3C0D5541C3042D89E2E65041C6DFD5613C0D55418D976EA2E7E650417D3F35CE380D5541EB4CB3AAEBE650415B226522350D55417B8E3A68F0E65041F5CBF01F2F0D554180442D7EF0E65041EF6483EC2E0D55410AD7A3A0D0E6504148E17AF41E0D55415C8FC2C5BDE650415C8FC2051A0D554175280F88BBE65041F3639229260D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>143943 - 1584057
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000073271A2DDF35041CAA63FC473BF5441AE47E19ADDF3504152B81EC573BF544119980AE2D9F35041E113BA9B74BF5441299A5A46DAF3504140BBF7367ABF54416BB8597FDDF35041E90BC2B39BBF544146A738DBE0F350411919A6409CBF5441713D0AF7E9F35041EC51B8BE9DBF54418FC2F598F4F35041D7A3706D9FBF54411F85EB41FEF3504114AE4791A0BF54417B14AEC703F450413D0AD703A1BF5441CDCCCC4C11F45041000000E09EBF5441AE47E19A0DF45041F6285C1F73BF54415C8FC27508F45041333333F373BF5441A4703D5A00F45041C3F5288C74BF54419A999979F8F35041C3F5282C74BF544100000090E9F35041D7A3700D73BF5441E17A14AEE3F350411F85EB1173BF5441073271A2DDF35041CAA63FC473BF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000731312B2DDF35041A58188F573BF5441AE47E19ADDF3504152B81EC573BF54417D3F3506DBF3504179E9265974BF54418F013286DBF3504146170D177ABF54411A576D8BDBF3504111F922537ABF5441ACF9EB93DBF35041FE0DB2B47ABF5441B0726869DEF350415839B4409BBF54413A35648AE1F350411A1C4AD19BBF5441A122CBC7E9F35041704F705D9DBF544149141081F4F35041C8384A229FBF5441395E33E0FDF3504102A62424A0BF5441705F25AE03F4504128DCFF3FA0BF54419EEFA7FE08F450410E2DB23DA0BF54415EBA490C11F45041508D97469FBF54415DB52DD110F450415CF941F19BBF5441D7A607AC10F45041B2EDF5D899BF5441E0FBBA540EF45041D791BE897CBF5441BA490C320DF4504123DBF9EE72BF5441BC719E6108F45041D10A649973BF5441BEF9F55305F450412A0A77F973BF5441B99BAC4900F450412EDF342F74BF544155F59AD0FBF35041F392DC5474BF54419A999979F8F35041C3F5282C74BF5441ABD8678BECF350415D33DE6473BF5441159F80EDEBF350413087EA3A73BF544134B3D5A4E9F3504106F13B3273BF544119C0857BE8F3504176F5053073BF54413D44988BE3F35041DFCFCC5373BF5441B6AB4311E1F350416F89CA7773BF5441731312B2DDF35041A58188F573BF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>143943 - 3354273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000073271A2DDF35041CAA63FC473BF5441AE47E19ADDF3504152B81EC573BF544119980AE2D9F35041E113BA9B74BF5441299A5A46DAF3504140BBF7367ABF54416BB8597FDDF35041E90BC2B39BBF544146A738DBE0F350411919A6409CBF5441713D0AF7E9F35041EC51B8BE9DBF54418FC2F598F4F35041D7A3706D9FBF54411F85EB41FEF3504114AE4791A0BF54417B14AEC703F450413D0AD703A1BF5441CDCCCC4C11F45041000000E09EBF5441AE47E19A0DF45041F6285C1F73BF54415C8FC27508F45041333333F373BF5441A4703D5A00F45041C3F5288C74BF54419A999979F8F35041C3F5282C74BF544100000090E9F35041D7A3700D73BF5441E17A14AEE3F350411F85EB1173BF5441073271A2DDF35041CAA63FC473BF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000731312B2DDF35041A58188F573BF5441AE47E19ADDF3504152B81EC573BF54417D3F3506DBF3504179E9265974BF54418F013286DBF3504146170D177ABF54411A576D8BDBF3504111F922537ABF5441ACF9EB93DBF35041FE0DB2B47ABF5441B0726869DEF350415839B4409BBF54413A35648AE1F350411A1C4AD19BBF5441A122CBC7E9F35041704F705D9DBF544149141081F4F35041C8384A229FBF5441395E33E0FDF3504102A62424A0BF5441705F25AE03F4504128DCFF3FA0BF54419EEFA7FE08F450410E2DB23DA0BF54415EBA490C11F45041508D97469FBF54415DB52DD110F450415CF941F19BBF5441D7A607AC10F45041B2EDF5D899BF5441E0FBBA540EF45041D791BE897CBF5441BA490C320DF4504123DBF9EE72BF5441BC719E6108F45041D10A649973BF5441BEF9F55305F450412A0A77F973BF5441B99BAC4900F450412EDF342F74BF544155F59AD0FBF35041F392DC5474BF54419A999979F8F35041C3F5282C74BF5441ABD8678BECF350415D33DE6473BF5441159F80EDEBF350413087EA3A73BF544134B3D5A4E9F3504106F13B3273BF544119C0857BE8F3504176F5053073BF54413D44988BE3F35041DFCFCC5373BF5441B6AB4311E1F350416F89CA7773BF5441731312B2DDF35041A58188F573BF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533018 - 3899164
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001B000000821C2D5169255141BC936321744C5441C1F7444268255141A85D24D76C4C5441AA4C27CA65255141BFCCBD335D4C5441666666F666255141A4703DDA5C4C5441F6285CAF6C25514114AE47E1594C5441295C8FC27E255141E17A140E534C5441EC51B88E7F255141000000B0514C54415C8FC2F57E25514152B81E754C4C5441F6285C6F722551415C8FC205514C5441F6285CFF632551411F85EB11574C54415C8FC2C5542551417B14AEA75D4C5441D7A3709D42255141CDCCCCBC654C544152B81EB541255141AE47E19A694C54419A99990940255141A4703D7A714C5441CDCCCC5C3F255141A4703D3A754C544152B81ED53E255141F6285CBF784C5441000000803E255141AE47E14A7C4C5441B81E857B3F255141D7A3708D7D4C544133333363422551415C8FC215804C5441713D0A07472551419A999999834C5441713D0A474C2551415C8FC205874C5441F6285C2F5225514114AE47718A4C5441B81E858B5925514114AE47B18F4C5441A4703D0A6C25514152B81ED5864C5441D7A3706D6C25514152B81EB5864C54410366FD6E6B2551418D79AC4C814C5441821C2D5169255141BC936321744C5441
+</a>
+
+<b>
+010600000001000000010300000001000000260000004C21DD307E255141560AE2BC4C4C54418F68E7F47E2551412AF2F9744C4C5441AC7A50377E255141B89369EF454C5441C05CA8787D2551411D53DC713F4C54410627076B7D255141ED399FFB3E4C544133F7311A7D255141AD74F14F3D4C544152FD39877C255141439F7A463A4C544192A66C047C25514147D19E80374C5441F3F50AD472255141809DD91C3B4C5441F0C59149722551410142987E3A4C5441CD2040406A2551411EB9FFE43D4C5441DA34FC7B5A2551416EC25A6E444C5441761E77F1492551418404B0164B4C5441A5A362C343255141F5185E3E654C5441AECB880F442551419E05FC1E654C5441D3BFE40F44255141E872391D654C5441B631E4744725514164B75299634C544192135C29512551412873BD3F5F4C54414E4E98BE5225514198796C8F5E4C54415C8FC2C5542551417B14AEA75D4C5441C4F58BA05D255141D74E44D3594C544132FABA015E255141118BFBA8594C5441084B5FAF5E25514110A7215E594C5441F6285CFF632551411F85EB11574C5441F253833465255141E7776C90564C544178DE7E7765255141C75EB373564C5441F9CE3BE267255141192C0971554C5441E7BF173C682551410D9B8D4B554C54412DFC2E2A6B25514111FA5B11544C54419ED89EC96B25514124D72CCE534C5441B04E703A6D2551412F311634534C5441FB27B12C6E2551410BEB9CCE524C544178E010D170255141AE9B54B1514C54411AF87472722551410251E803514C54416F4FC8BD762551418CDCAE724F4C5441849E4BF87725514103290C004F4C54415C763CDE7A2551415580E9F24D4C54414C21DD307E255141560AE2BC4C4C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665965 - 3133680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3709D7A655141E17A148EC6625441A4703D5A7465514185EB51D8C9625441E17A14AE6A6551417B14AEE7CE6254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA625441295C8F624A6551418FC2F5E8DF625441E17A146E39655141295C8FE2E86254415C8FC2D526655141A4703DBAF2625441E17A146E0F655141E17A141EFF625441C3F5283C0C6551419A9999C905635441EC51B83E0A655141EC51B87E0C635441295C8F5208655141F6285CCF14635441C3F5288C1A655141713D0A270B635441B81E85FB2D655141CDCCCCDC00635441E17A14BE406551419A9999E9F6625441B81E859B54655141295C8F62EC6254410AD7A3807565514148E17AF4DA625441E17A140E85655141713D0AB7D2625441C3F528FC8D655141B81E85FBCD6254413D0AD7F388655141E17A144EC76254418FC2F57884655141C3F5285CC1625441D7A3709D7A655141E17A148EC6625441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000050D56DFF086551411AA35494116354418CC22AA208655141C7BF8BC813635441B0A0C78F08655141EE5CEBAE146354416114BCE9136551412AD60AAB0E635441489A12B61B6551415CD94E890A635441F8FB67FE20655141382A4EBD07635441EE3091032E655141F12B88D80063544145CF10F933655141B3A66EAFFD62544124D203294165514180FAEDB0F6625441A6D9593C476551413E06AD78F3625441B62E56854D655141E88BFD23F06254412818BD8F54655141B3DABC66EC625441DA8B0DAD526551417F30EE55EA625441D7985C7D3B655141F60ED90CF7625441020E020A2B655141FEFB4076FF62544168663DC0256551412E9E6E2D02635441E7D143CD24655141031B61AE0263544150D56DFF086551411AA3549411635441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666340 - 3088417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000F6285C9F014E5141C3F5285C85C5544114AE4751FB4D5141D7A370DD7FC55441C3F528FCF84D514185EB51F881C554417B14AE67F64D5141D7A370AD84C554413D0AD763F44D51410AD7A35086C55441EC51B8CEF14D514148E17A5488C554419A999929EF4D51417B14AE078AC554410AD7A330EB4D5141000000408CC554418FC2F5F8EF4D51416666660694C55441EC51B86EF64D5141666666869EC55441CDCCCC7C064E5141AE47E1DA8DC5544148E17A04094E5141000000D08BC55441F6285C9F014E5141C3F5285C85C55441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028DE19D0FF4D51410C8ED36988C554412BB165C2FF4D51416352D87688C554417FC9CC83FB4D5141484767278CC55441C4201DD0F74D51419F84355F8FC554416DCB833EF44D5141CB20627992C5544169E03E4BF34D5141C445DA4C93C55441273DAC56F14D5141EC25483294C5544177CE1986F04D5141CDEBB58594C554411E45EF4AF04D51419EF9A38B94C55441420CBFB2F24D51417E15707498C554415E814982F54D5141325C12069DC55441EC51B86EF64D5141666666869EC55441850AA672FB4D5141041A4A5199C55441A19995A4FE4D51415FA0050096C554410141943D024E5141296EBF4392C554416EFE1C14044E5141E77E305B90C55441D7CF0E33074E514100B2BD478DC554416020140D084E51412DECBA978CC5544148E17A04094E5141000000D08BC554415D138F87064E5141D74E41A489C554419796AE39044E514116008FA187C55441CAF035DE024E51416F745F7286C554414D51AE1C024E5141143782C985C5544165250075014E5141C0BF4CCF86C554418C8E8A63014E51417AE68EEA86C5544128DE19D0FF4D51410C8ED36988C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666340 - 3434060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000F6285C9F014E5141C3F5285C85C5544114AE4751FB4D5141D7A370DD7FC55441C3F528FCF84D514185EB51F881C554417B14AE67F64D5141D7A370AD84C554413D0AD763F44D51410AD7A35086C55441EC51B8CEF14D514148E17A5488C554419A999929EF4D51417B14AE078AC554410AD7A330EB4D5141000000408CC554418FC2F5F8EF4D51416666660694C55441EC51B86EF64D5141666666869EC55441CDCCCC7C064E5141AE47E1DA8DC5544148E17A04094E5141000000D08BC55441F6285C9F014E5141C3F5285C85C55441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028DE19D0FF4D51410C8ED36988C554412BB165C2FF4D51416352D87688C554417FC9CC83FB4D5141484767278CC55441C4201DD0F74D51419F84355F8FC554416DCB833EF44D5141CB20627992C5544169E03E4BF34D5141C445DA4C93C55441273DAC56F14D5141EC25483294C5544177CE1986F04D5141CDEBB58594C554411E45EF4AF04D51419EF9A38B94C55441420CBFB2F24D51417E15707498C554415E814982F54D5141325C12069DC55441EC51B86EF64D5141666666869EC55441850AA672FB4D5141041A4A5199C55441A19995A4FE4D51415FA0050096C554410141943D024E5141296EBF4392C554416EFE1C14044E5141E77E305B90C55441D7CF0E33074E514100B2BD478DC554416020140D084E51412DECBA978CC5544148E17A04094E5141000000D08BC554415D138F87064E5141D74E41A489C554419796AE39044E514116008FA187C55441CAF035DE024E51416F745F7286C554414D51AE1C024E5141143782C985C5544165250075014E5141C0BF4CCF86C554418C8E8A63014E51417AE68EEA86C5544128DE19D0FF4D51410C8ED36988C55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666566 - 3086560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EB710F51514185EB51C835C354410AD7A3A01A5151416666664638C354415C8FC2751B515141A4703DFA37C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441AE47E14A44515141F6285CAF15C35441295C8F024C515141EC51B87E0DC354415C8FC2E5525151411F85EB7105C3544166666606515151419A9999D903C354411F85EBB14F51514114AE47B102C35441333333134E5151418FC2F58801C3544148E17A744C515141E17A14BEFFC254410AD7A3104B515141F6285C1FFEC25441AE47E1CA49515141E17A149EFCC25441AE47E13A48515141EC51B83EFAC254411F85EB713651514152B81EA5FFC254418FC2F5B80E5151410AD7A3E00DC354418FC2F5180D51514148E17A2412C35441666666A60B515141C3F528FC17C35441000000300B51514148E17A441CC35441D7A3704D0B515141000000F021C35441A4703D7A0B515141295C8F8226C35441333333D30B5151413333339329C354418FC2F5180D51514114AE47912DC354411F85EB710F51514185EB51C835C35441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ACBE09F00E5151416669CD0134C354413DC254E31A51514196DB00C936C354410B41FB271D515141EFAB216037C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441810BDFD43F515141F37D3E501BC3544192E155773B515141912DE4A21CC354412556F10E2C51514187178A2B22C3544194D758E616515141016B11332AC35441A4E96A2C0D515141DC0F5FD52DC35441ACBE09F00E5151416669CD0134C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666566 - 3409015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EB710F51514185EB51C835C354410AD7A3A01A5151416666664638C354415C8FC2751B515141A4703DFA37C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441AE47E14A44515141F6285CAF15C35441295C8F024C515141EC51B87E0DC354415C8FC2E5525151411F85EB7105C3544166666606515151419A9999D903C354411F85EBB14F51514114AE47B102C35441333333134E5151418FC2F58801C3544148E17A744C515141E17A14BEFFC254410AD7A3104B515141F6285C1FFEC25441AE47E1CA49515141E17A149EFCC25441AE47E13A48515141EC51B83EFAC254411F85EB713651514152B81EA5FFC254418FC2F5B80E5151410AD7A3E00DC354418FC2F5180D51514148E17A2412C35441666666A60B515141C3F528FC17C35441000000300B51514148E17A441CC35441D7A3704D0B515141000000F021C35441A4703D7A0B515141295C8F8226C35441333333D30B5151413333339329C354418FC2F5180D51514114AE47912DC354411F85EB710F51514185EB51C835C35441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ACBE09F00E5151416669CD0134C354413DC254E31A51514196DB00C936C354410B41FB271D515141EFAB216037C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441810BDFD43F515141F37D3E501BC3544192E155773B515141912DE4A21CC354412556F10E2C51514187178A2B22C3544194D758E616515141016B11332AC35441A4E96A2C0D515141DC0F5FD52DC35441ACBE09F00E5151416669CD0134C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668082 - 35103
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17AD42533514100000040E02955410AD7A34023335141000000C0DD2955418FC2F5781D33514100000050D5295541B81E85DB1A335141295C8F72D129554152B81E0517335141CDCCCC7CD5295541E17A146E0C33514133333363E32955418FC2F5C81D3351413D0AD783F62955418FC2F5082E33514185EB5168082A5541D7A370CD3D3351415C8FC265172A55415C8FC2854333514152B81EB50B2A55413D0AD7E33D33514133333363072A5541D7A3703D3E335141B81E85AB062A5541E17A14EE423351418FC2F578FE29554133333313423351415C8FC225FE295541B81E856B3E335141713D0AA7F92955419A999919323351419A9999C9EE2955418FC2F5E830335141F6285C1FEE2955410AD7A30027335141EC51B80EE629554185EB519828335141EC51B89EE429554148E17AD42533514100000040E0295541
+</a>
+
+<b>
+010600000001000000010300000001000000390000000B44FA1032335141F716C8C4EE29554117E02A24313351410D507240EE2955418FC2F5E830335141F6285C1FEE29554110871291303351416A1DD1D7ED295541FEF5911C303351419307FB78ED29554192DB94BF2D335141BF74808CEB295541B4A0B9FE2B335141A98C1E1FEA2955414A95F5802B335141B002BEB8E92955417D88A8052A33514155DDFA83E82955415B99DBB5283351413CD9A072E7295541CCC67B4527335141A8BAC246E6295541A8660B43273351410578C644E6295541255A084027335141E5CF5242E629554185AA1FB926335141451871E7E62955411ABFA59526335141882A3420E729554199ECE2B02833514150BA8942E9295541E6FDA63932335141A912ECEFF0295541F1A12D5337335141FFBF7E98F429554152F1D8563D3351414D1F2A31FB2955410E8F5810423351411C9785FCFF295541F39262CE4233514185CB5BB0FE295541B1ADDBEB42335141848C1D78FE2955417376ABDD42335141D0E1B872FE29554181A5EBB842335141C5CFC064FE295541001450784233514156D7314CFE29554133333313423351415C8FC225FE295541466131E64133514139C568EEFD295541A4EBEFD2413351416F69BAD6FD295541FECA37AA41335141BC96A6A4FD295541A2346C4F41335141281CFD34FD2955418B671AE240335141328D8BAEFC2955418CB0BAB0403351413CF3D271FC2955413644D4963F33514166152317FB2955412AC0B73D3F33514100BF8BA9FA2955415AA105273F335141D154A28DFA29554132F4AAE23E33514140129239FA295541D57CE9663E33514148ECF9A2F92955417E60D8963E335141D9F89483F9295541A92953123F335141C22E861EF92955411000ED5C3F335141663278E1F8295541E41033BE3F33514150EFDB91F829554196AF55C2403351412ACCF5BCF7295541D9CD6CD640335141A89584ACF72955417AEF5951413351413EBAE947F7295541817D860B413351418685711EF72955418BB4539A4033514181AE56DFF6295541B30AA3C43F3351415D673668F6295541B938B66E3D3351415DEFE21AF5295541D1F50C023D335141759C4FDEF42955416A3A78CD3C335141CDA3FFC0F4295541CABFDD3C3C335141CCE66270F42955411A0DCD2D3A3351419907904AF32955414641B2D53933514101617219F3295541E582B47F36335141000A5F3DF129554159920F833233514183316404EF2955419A999919323351419A9999C9EE2955410B44FA1032335141F716C8C4EE295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668082 - 74637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17AD42533514100000040E02955410AD7A34023335141000000C0DD2955418FC2F5781D33514100000050D5295541B81E85DB1A335141295C8F72D129554152B81E0517335141CDCCCC7CD5295541E17A146E0C33514133333363E32955418FC2F5C81D3351413D0AD783F62955418FC2F5082E33514185EB5168082A5541D7A370CD3D3351415C8FC265172A55415C8FC2854333514152B81EB50B2A55413D0AD7E33D33514133333363072A5541D7A3703D3E335141B81E85AB062A5541E17A14EE423351418FC2F578FE29554133333313423351415C8FC225FE295541B81E856B3E335141713D0AA7F92955419A999919323351419A9999C9EE2955418FC2F5E830335141F6285C1FEE2955410AD7A30027335141EC51B80EE629554185EB519828335141EC51B89EE429554148E17AD42533514100000040E0295541
+</a>
+
+<b>
+010600000001000000010300000001000000390000000B44FA1032335141F716C8C4EE29554117E02A24313351410D507240EE2955418FC2F5E830335141F6285C1FEE29554110871291303351416A1DD1D7ED295541FEF5911C303351419307FB78ED29554192DB94BF2D335141BF74808CEB295541B4A0B9FE2B335141A98C1E1FEA2955414A95F5802B335141B002BEB8E92955417D88A8052A33514155DDFA83E82955415B99DBB5283351413CD9A072E7295541CCC67B4527335141A8BAC246E6295541A8660B43273351410578C644E6295541255A084027335141E5CF5242E629554185AA1FB926335141451871E7E62955411ABFA59526335141882A3420E729554199ECE2B02833514150BA8942E9295541E6FDA63932335141A912ECEFF0295541F1A12D5337335141FFBF7E98F429554152F1D8563D3351414D1F2A31FB2955410E8F5810423351411C9785FCFF295541F39262CE4233514185CB5BB0FE295541B1ADDBEB42335141848C1D78FE2955417376ABDD42335141D0E1B872FE29554181A5EBB842335141C5CFC064FE295541001450784233514156D7314CFE29554133333313423351415C8FC225FE295541466131E64133514139C568EEFD295541A4EBEFD2413351416F69BAD6FD295541FECA37AA41335141BC96A6A4FD295541A2346C4F41335141281CFD34FD2955418B671AE240335141328D8BAEFC2955418CB0BAB0403351413CF3D271FC2955413644D4963F33514166152317FB2955412AC0B73D3F33514100BF8BA9FA2955415AA105273F335141D154A28DFA29554132F4AAE23E33514140129239FA295541D57CE9663E33514148ECF9A2F92955417E60D8963E335141D9F89483F9295541A92953123F335141C22E861EF92955411000ED5C3F335141663278E1F8295541E41033BE3F33514150EFDB91F829554196AF55C2403351412ACCF5BCF7295541D9CD6CD640335141A89584ACF72955417AEF5951413351413EBAE947F7295541817D860B413351418685711EF72955418BB4539A4033514181AE56DFF6295541B30AA3C43F3351415D673668F6295541B938B66E3D3351415DEFE21AF5295541D1F50C023D335141759C4FDEF42955416A3A78CD3C335141CDA3FFC0F4295541CABFDD3C3C335141CCE66270F42955411A0DCD2D3A3351419907904AF32955414641B2D53933514101617219F3295541E582B47F36335141000A5F3DF129554159920F833233514183316404EF2955419A999919323351419A9999C9EE2955410B44FA1032335141F716C8C4EE295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974054 - 690719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000214421E40B8050411BA82D6C8B1D544128FF1BE60F805041CF8EA0B38E1D5441DE9677C31480504145CD2D3B921D5441AE8B0B1018805041D45DAF6D941D5441CEBE8534188050412323A227941D544192DEBBC8188050413E5AFF0A931D544121618FA31B805041D60E2D9E941D5441773156311C805041ACFF63EC941D5441A0021D821C805041BF377396941D5441D357ADEB1F8050412070DA918F1D5441E38CE0F824805041A25E2B19911D5441CF0B6BE42C8050411502E003861D5441AF4B6FA131805041EBE23DF77C1D5441ABCADCB02D80504174CD6DEC7A1D5441486227412A8050410CACD87D791D5441A1156391258050412D1BEB03781D5441BAE744532680504189BE18FB731D544184244EAD268050416CD5010E701D5441101F04F2258050419563B4716E1D5441BED5946E24805041F0FEB5C56D1D54419F260F5A21805041C5B01ECC6B1D54417B5E8CF119805041688357FE751D54411C6FAC490F805041FD4767AE851D5441A4D49DC80B8050414877A3E18A1D54410947009D0B805041E1AFA7238B1D5441214421E40B8050411BA82D6C8B1D5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0AE713805041EC51B80E9B1D5441333333831680504114AE47C1971D5441295C8F1218805041F6285C6F941D5441A4703DEA1280504100000000911D54415C8FC2950F805041666666768E1D5441F6285CAF0D805041666666E68C1D544152B81ED509805041C3F5286C921D54418FC2F5F80E80504148E17AD4961D5441713D0AE713805041EC51B80E9B1D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974054 - 1818647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000214421E40B8050411BA82D6C8B1D544128FF1BE60F805041CF8EA0B38E1D5441DE9677C31480504145CD2D3B921D5441AE8B0B1018805041D45DAF6D941D5441CEBE8534188050412323A227941D544192DEBBC8188050413E5AFF0A931D544121618FA31B805041D60E2D9E941D5441773156311C805041ACFF63EC941D5441A0021D821C805041BF377396941D5441D357ADEB1F8050412070DA918F1D5441E38CE0F824805041A25E2B19911D5441CF0B6BE42C8050411502E003861D5441AF4B6FA131805041EBE23DF77C1D5441ABCADCB02D80504174CD6DEC7A1D5441486227412A8050410CACD87D791D5441A1156391258050412D1BEB03781D5441BAE744532680504189BE18FB731D544184244EAD268050416CD5010E701D5441101F04F2258050419563B4716E1D5441BED5946E24805041F0FEB5C56D1D54419F260F5A21805041C5B01ECC6B1D54417B5E8CF119805041688357FE751D54411C6FAC490F805041FD4767AE851D5441A4D49DC80B8050414877A3E18A1D54410947009D0B805041E1AFA7238B1D5441214421E40B8050411BA82D6C8B1D5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0AE713805041EC51B80E9B1D5441333333831680504114AE47C1971D5441295C8F1218805041F6285C6F941D5441A4703DEA1280504100000000911D54415C8FC2950F805041666666768E1D5441F6285CAF0D805041666666E68C1D544152B81ED509805041C3F5286C921D54418FC2F5F80E80504148E17AD4961D5441713D0AE713805041EC51B80E9B1D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974054 - 4449580
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000214421E40B8050411BA82D6C8B1D544128FF1BE60F805041CF8EA0B38E1D5441DE9677C31480504145CD2D3B921D5441AE8B0B1018805041D45DAF6D941D5441CEBE8534188050412323A227941D544192DEBBC8188050413E5AFF0A931D544121618FA31B805041D60E2D9E941D5441773156311C805041ACFF63EC941D5441A0021D821C805041BF377396941D5441D357ADEB1F8050412070DA918F1D5441E38CE0F824805041A25E2B19911D5441CF0B6BE42C8050411502E003861D5441AF4B6FA131805041EBE23DF77C1D5441ABCADCB02D80504174CD6DEC7A1D5441486227412A8050410CACD87D791D5441A1156391258050412D1BEB03781D5441BAE744532680504189BE18FB731D544184244EAD268050416CD5010E701D5441101F04F2258050419563B4716E1D5441BED5946E24805041F0FEB5C56D1D54419F260F5A21805041C5B01ECC6B1D54417B5E8CF119805041688357FE751D54411C6FAC490F805041FD4767AE851D5441A4D49DC80B8050414877A3E18A1D54410947009D0B805041E1AFA7238B1D5441214421E40B8050411BA82D6C8B1D5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0AE713805041EC51B80E9B1D5441333333831680504114AE47C1971D5441295C8F1218805041F6285C6F941D5441A4703DEA1280504100000000911D54415C8FC2950F805041666666768E1D5441F6285CAF0D805041666666E68C1D544152B81ED509805041C3F5286C921D54418FC2F5F80E80504148E17AD4961D5441713D0AE713805041EC51B80E9B1D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>670277 - 978753
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541CDCCCC0C90D25041C3F5285C611B55410000003090D25041295C8F825F1B5541EC51B85E8ED25041295C8F025F1B55410AD7A35088D250417B14AE575D1B5541E17A14DE86D250410AD7A3105D1B55419A9999A980D25041F6285CDF5B1B5541EC51B83E7FD25041D7A370AD5B1B5541CDCCCC3C79D25041CDCCCCDC5A1B5541E17A14DE77D2504148E17AC45A1B5541713D0A8777D25041E17A14BE5A1B5541D7A370CD71D2504152B81E555A1B55419A99992968D25041333333435C1B5541B81E85BB63D25041F6285CDF5A1B5541D7A3705D63D2504133333353591B5541713D0A975FD25041E17A145E661B5541B6AD03EE5ED25041DBDB79836A1B5541C9D388525FD25041CF29027F6A1B554101B984525FD250415F8B577E6A1B5541C51755515FD2504127640A4D6A1B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672356 - 5219058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000D7A370CD12CC5041F6285C1F74155541A4703DAA0DCC50417B14AED764155541713D0AD7F4CB50417B14AEC7671555410AD7A3B0DBCB504114AE47C16A155541A4703D1AE1CB5041D7A370FD79155541666666C6E4CB504148E17A5484155541A4703D1AE6CB50417B14AE2785155541F6285C9FFFCB5041E17A141E821555415C8FC2750DCC50419A9999897F1555419A99999912CC504185EB51187D1555415C8FC21515CC5041A4703DFA7A155541D7A370CD12CC5041F6285C1F74155541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000C9E91CEBE4CB50416B9F14118515554189684376F0CB5041015906EC83155541CA47953A01CC50412A5268D1811555419A9487A10DCC504184799F7C7F155541F405C48912CC5041437B052B7D155541B32EFE1C15CC50418DDCB8F27A1555418C41D18313CC5041E3D8A00574155541C7CAC60BE1CB50419E7FBAD4791555414788F212E1CB50415BB4E9E879155541C9E91CEBE4CB50416B9F141185155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672539 - 3182172
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000001A0000008FC2F5B8E1C65041AE47E18ACA0A5541CDCCCC6CDEC6504152B81EE5CD0A55410AD7A3E0DFC65041713D0A47CF0A5541C3F5281CDEC65041B81E858BD10A55413D0AD7F3E0C65041295C8FE2D30A5541666666A6E1C650418FC2F5F8D40A5541F6285C1FE4C650415C8FC265D20A5541CDCCCCACEBC650410AD7A340CE0A5541D7A3700DF1C6504152B81E25CA0A554100000040F7C6504114AE47D1C60A5541D7A3703DFCC65041EC51B84EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541A4703D8A04C750411F85EBD1C80A554185EB51080DC7504114AE4741C40A55417B14AEA710C750419A999979C30A55410AD7A36013C7504148E17AD4BF0A5541F6285CAF16C75041EC51B8AEBC0A55419A9999191AC75041333333C3BA0A5541AE47E15A11C75041295C8FC2AC0A5541713D0A970CC7504152B81E45AE0A5541A4703DAAF9C6504100000020B90A554185EB5158F3C650410AD7A300BD0A5541A4703D2AEEC65041A4703D1AC00A5541C3F5282CE7C65041B81E857BC50A55418FC2F5B8E1C65041AE47E18ACA0A554101030000000100000006000000B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000174DE8B4DAC650413D2B8220D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554163613E7BDBC650415B9754DDD40A5541174DE8B4DAC650413D2B8220D40A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672539 - 3276826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000001A0000008FC2F5B8E1C65041AE47E18ACA0A5541CDCCCC6CDEC6504152B81EE5CD0A55410AD7A3E0DFC65041713D0A47CF0A5541C3F5281CDEC65041B81E858BD10A55413D0AD7F3E0C65041295C8FE2D30A5541666666A6E1C650418FC2F5F8D40A5541F6285C1FE4C650415C8FC265D20A5541CDCCCCACEBC650410AD7A340CE0A5541D7A3700DF1C6504152B81E25CA0A554100000040F7C6504114AE47D1C60A5541D7A3703DFCC65041EC51B84EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541A4703D8A04C750411F85EBD1C80A554185EB51080DC7504114AE4741C40A55417B14AEA710C750419A999979C30A55410AD7A36013C7504148E17AD4BF0A5541F6285CAF16C75041EC51B8AEBC0A55419A9999191AC75041333333C3BA0A5541AE47E15A11C75041295C8FC2AC0A5541713D0A970CC7504152B81E45AE0A5541A4703DAAF9C6504100000020B90A554185EB5158F3C650410AD7A300BD0A5541A4703D2AEEC65041A4703D1AC00A5541C3F5282CE7C65041B81E857BC50A55418FC2F5B8E1C65041AE47E18ACA0A554101030000000100000006000000B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000174DE8B4DAC650413D2B8220D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554163613E7BDBC650415B9754DDD40A5541174DE8B4DAC650413D2B8220D40A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672539 - 52912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000001A0000008FC2F5B8E1C65041AE47E18ACA0A5541CDCCCC6CDEC6504152B81EE5CD0A55410AD7A3E0DFC65041713D0A47CF0A5541C3F5281CDEC65041B81E858BD10A55413D0AD7F3E0C65041295C8FE2D30A5541666666A6E1C650418FC2F5F8D40A5541F6285C1FE4C650415C8FC265D20A5541CDCCCCACEBC650410AD7A340CE0A5541D7A3700DF1C6504152B81E25CA0A554100000040F7C6504114AE47D1C60A5541D7A3703DFCC65041EC51B84EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541A4703D8A04C750411F85EBD1C80A554185EB51080DC7504114AE4741C40A55417B14AEA710C750419A999979C30A55410AD7A36013C7504148E17AD4BF0A5541F6285CAF16C75041EC51B8AEBC0A55419A9999191AC75041333333C3BA0A5541AE47E15A11C75041295C8FC2AC0A5541713D0A970CC7504152B81E45AE0A5541A4703DAAF9C6504100000020B90A554185EB5158F3C650410AD7A300BD0A5541A4703D2AEEC65041A4703D1AC00A5541C3F5282CE7C65041B81E857BC50A55418FC2F5B8E1C65041AE47E18ACA0A554101030000000100000006000000B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A5541
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000F6285CAF16C75041EC51B8AEBC0A55410A74BB0E1AC75041CD644FC9BA0A55417EE36D5617C75041DCB1E056B60A55413CAF083117C75041EB12001BB60A5541AE0821E316C750416649429EB50A55412C6F5E9816C75041458C8D26B50A554190BFB48916C75041B524130FB50A55412ACF2D4316C75041FE8F259EB40A55417BF83A2B16C7504107DCCC77B40A5541F525220216C7504159E9FE35B40A5541DD07225C11C750419079AED5AC0A55411BBB256E10C750412343940DAD0A5541A44EFE870FC75041A7798356AD0A55411B256BF50CC7504113463627AE0A55413AEAE6A203C75041BC25D867B30A5541CE2B269703C7504107E7956EB30A55417421D270FFC65041346DEACFB50A5541242F8854FCC65041ADA9A698B70A5541B6550E33FBC65041394AB03EB80A5541D56EC414FAC65041F2E7E5E2B80A55411D91D487F9C650419C7E1C35B90A554185EB5158F3C650410AD7A300BD0A5541AE143338F3C650416A979F15BD0A5541A3B9E6F6F7C65041E47084FBC60A5541860011A8F7C65041C49B5AF0C60A5541435635B3F7C65041BD4EAEF3C60A554109956EEDF7C65041D6F81005C70A55415C947639FCC65041F63B1842C80A5541A4068A4AFCC65041A582095EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541999D2F6703C75041A9CB7C83C80A55410B188F9704C7504197D3B5C4C80A5541850D49A70CC750414A886A61C40A5541BD3DE0E90CC750415C0AA551C40A554185EB51080DC7504114AE4741C40A55416D12AEB10EC7504131ECB0E5C30A5541843247A510C75041AA2D3369C30A5541BE1F6D9212C75041D2621BCFC00A55419F2DA3F112C75041F9531869C00A55410AD7A36013C7504148E17AD4BF0A5541F02BBBDA14C75041E0D1AD6CBE0A5541AB4EFB5816C7504130AF6DEEBC0A554177A7F68516C750412A2C1DD6BC0A5541F6285CAF16C75041EC51B8AEBC0A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>673557 - 110567
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000052B81E5555E9504148E17A44EB0D5541000000F054E95041EC51B86EED0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D55416666667642E95041AE47E16AE70D55411F85EB7129E9504185EB5178EC0D5541666666A615E950411F85EBF1EF0D5541B81E859B06E9504152B81E75F10D55413D0AD763FAE85041333333E3F30D554100000050FCE8504148E17AF4F50D55410AD7A32000E950417B14AE27F70D554114AE47E107E95041F6285C6FF70D5541666666760CE9504166666656F70D5541A4703D3A15E950418FC2F538F60D554152B81E5555E9504148E17A44EB0D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AAA11E3357E950417C7D9877EC0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D55416666667642E95041AE47E16AE70D55411F85EB7129E9504185EB5178EC0D5541666666A615E950411F85EBF1EF0D5541B81E859B06E9504152B81E75F10D55413D0AD763FAE85041333333E3F30D554100000050FCE8504148E17AF4F50D55410AD7A32000E950417B14AE27F70D554114AE47E107E95041F6285C6FF70D5541666666760CE9504166666656F70D5541A4703D3A15E950418FC2F538F60D554152B81E5555E9504148E17A44EB0D55412C073EFC54E9504161F47E69ED0D5541AAA11E3357E950417C7D9877EC0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>673557 - 295643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000052B81E5555E9504148E17A44EB0D5541000000F054E95041EC51B86EED0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D55416666667642E95041AE47E16AE70D55411F85EB7129E9504185EB5178EC0D5541666666A615E950411F85EBF1EF0D5541B81E859B06E9504152B81E75F10D55413D0AD763FAE85041333333E3F30D554100000050FCE8504148E17AF4F50D55410AD7A32000E950417B14AE27F70D554114AE47E107E95041F6285C6FF70D5541666666760CE9504166666656F70D5541A4703D3A15E950418FC2F538F60D554152B81E5555E9504148E17A44EB0D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AAA11E3357E950417C7D9877EC0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D55416666667642E95041AE47E16AE70D55411F85EB7129E9504185EB5178EC0D5541666666A615E950411F85EBF1EF0D5541B81E859B06E9504152B81E75F10D55413D0AD763FAE85041333333E3F30D554100000050FCE8504148E17AF4F50D55410AD7A32000E950417B14AE27F70D554114AE47E107E95041F6285C6FF70D5541666666760CE9504166666656F70D5541A4703D3A15E950418FC2F538F60D554152B81E5555E9504148E17A44EB0D55412C073EFC54E9504161F47E69ED0D5541AAA11E3357E950417C7D9877EC0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>676058 - 244388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000130000009A999929CBEA504114AE47810F1155411F85EB11C5EA5041000000700B1155410AD7A3A0C0EA5041EC51B88E08115541A4703D0ABDEA5041295C8F9206115541B81E854BBAEA5041CDCCCC8C0D115541CDCCCCDCC3EA5041A4703D8A14115541333333D3CBEA5041CDCCCC8C19115541A4703D2AD2EA50415C8FC2651C11554133333373D4EA5041EC51B81E17115541333333E3D3EA504185EB51481511554185EB51E8CCEA50418FC2F5A810115541E17A14FECBEA5041C3F5280C1211554148E17A14CDEA5041F6285CCF12115541295C8FC2CBEA50419A9999B914115541A4703D2AC7EA504185EB51B811115541295C8F92C8EA5041333333C30F115541EC51B8EECAEA50415C8FC25511115541C3F528DCCBEA50417B14AEF70F1155419A999929CBEA504114AE47810F115541010300000001000000120000009A9999A9E2EA5041000000A0241155417B14AE07ECEA504148E17A542511554185EB5138F0EA50411F85EBD1241155413D0AD7A3F3EA5041A4703D1A23115541CDCCCC2CFBEA504152B81E5524115541A4703DFAFBEA50411F85EB411E11554133333393F6EA504152B81E751D1155413D0AD703E1EA50413D0AD7A31A11554185EB51B8DDEA5041B81E850B1A1155415C8FC235DAEA50413D0AD713191155415C8FC2B5D7EA5041295C8FD217115541D7A3707DD5EA5041333333D31711554148E17A74D2EA5041CDCCCCBC1E115541295C8F32D2EA5041F6285C7F2111554133333363D7EA504185EB514822115541A4703D2ADDEA5041B81E852B23115541B81E850BDDEA504133333303241155419A9999A9E2EA5041000000A024115541
+</a>
+
+<b>
+01060000000100000001030000000100000039000000A4703D2ADDEA5041B81E852B23115541B8CB1B23DDEA5041FBA9965D231155416ED8380DDDEA5041668DF400241155416F35C4DCDEEA50419E84ED3524115541E32935B4DFEA504181146B4D241155419A9999A9E2EA5041000000A0241155414E488A24E8EA5041D4E79509251155417B14AE07ECEA504148E17A542511554185EB5138F0EA50411F85EBD1241155413D0AD7A3F3EA5041A4703D1A231155413D222AA6F3EA5041DA192A1A23115541C987897CF7EA5041F6EFFABA231155418ADAA661F9EA5041B8612B0A24115541919E44D4F9EA50415214E11C24115541DB059A85FAEA5041B8ABD33924115541C0C060A5FAEA5041D091033F2411554153B078DAFAEA5041084BAE47241155417AD4D000FBEA50419BA9F04D2411554143075911FBEA5041E084A35024115541FBEF9A1EFBEA5041DF88CD5224115541F037F71FFBEA5041316306532411554165836C2AFBEA5041A36CBB54241155418E34DF2BFBEA50417BEFF75424115541A568A5F9FBEA5041C295A2441E11554100E2309DFBEA50417D2E24341E11554177DAA18DFBEA50415060D6311E115541B18EDF87FBEA50412710FC301E115541A0B39CD6F6EA50414058FE801D115541491A3735F3EA5041A60AA7041D115541F1A14586E7EA5041E2C39C7D1B1155413D0AD703E1EA50413D0AD7A31A115541A9CAEDD9DFEA504182510B6E1A115541240AAD31DEEA5041EB6BC4231A11554193DCA7F6DDEA504159C0C6161A11554185EB51B8DDEA5041B81E850B1A1155412EA9FDCBDBEA5041375BD083191155415C8FC235DAEA50413D0AD7131911554150327F2FDAEA5041CE26B210191155417932072BDAEA5041F7E2720F191155418A23B885D8EA5041E49FF43A181155415C8FC2B5D7EA5041295C8FD217115541D7A3707DD5EA5041333333D317115541A5047150D5EA5041E63AB0391811554145D3BA4BD5EA5041D4726B4418115541EF479444D5EA5041C1AFB4541811554170196041D5EA50415ABA005C18115541D90CCDADD4EA504158171EAC191155410AC95505D4EA5041B485D02B1B115541925A287AD2EA504169CAABB01E115541775D0459D2EA5041A3FF28E31F11554121504158D2EA504172A753EB1F1155413E782D57D2EA50414344E0F61F115541BBDB8C56D2EA50414EC599FD1F115541ED3BCE50D2EA5041E7932C3B20115541BDB83F33D2EA5041CAD5767F2111554133333363D7EA504185EB514822115541A4703D2ADDEA5041B81E852B23115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>676058 - 392024
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000130000009A999929CBEA504114AE47810F1155411F85EB11C5EA5041000000700B1155410AD7A3A0C0EA5041EC51B88E08115541A4703D0ABDEA5041295C8F9206115541B81E854BBAEA5041CDCCCC8C0D115541CDCCCCDCC3EA5041A4703D8A14115541333333D3CBEA5041CDCCCC8C19115541A4703D2AD2EA50415C8FC2651C11554133333373D4EA5041EC51B81E17115541333333E3D3EA504185EB51481511554185EB51E8CCEA50418FC2F5A810115541E17A14FECBEA5041C3F5280C1211554148E17A14CDEA5041F6285CCF12115541295C8FC2CBEA50419A9999B914115541A4703D2AC7EA504185EB51B811115541295C8F92C8EA5041333333C30F115541EC51B8EECAEA50415C8FC25511115541C3F528DCCBEA50417B14AEF70F1155419A999929CBEA504114AE47810F115541010300000001000000120000009A9999A9E2EA5041000000A0241155417B14AE07ECEA504148E17A542511554185EB5138F0EA50411F85EBD1241155413D0AD7A3F3EA5041A4703D1A23115541CDCCCC2CFBEA504152B81E5524115541A4703DFAFBEA50411F85EB411E11554133333393F6EA504152B81E751D1155413D0AD703E1EA50413D0AD7A31A11554185EB51B8DDEA5041B81E850B1A1155415C8FC235DAEA50413D0AD713191155415C8FC2B5D7EA5041295C8FD217115541D7A3707DD5EA5041333333D31711554148E17A74D2EA5041CDCCCCBC1E115541295C8F32D2EA5041F6285C7F2111554133333363D7EA504185EB514822115541A4703D2ADDEA5041B81E852B23115541B81E850BDDEA504133333303241155419A9999A9E2EA5041000000A024115541
+</a>
+
+<b>
+01060000000100000001030000000100000039000000A4703D2ADDEA5041B81E852B23115541B8CB1B23DDEA5041FBA9965D231155416ED8380DDDEA5041668DF400241155416F35C4DCDEEA50419E84ED3524115541E32935B4DFEA504181146B4D241155419A9999A9E2EA5041000000A0241155414E488A24E8EA5041D4E79509251155417B14AE07ECEA504148E17A542511554185EB5138F0EA50411F85EBD1241155413D0AD7A3F3EA5041A4703D1A231155413D222AA6F3EA5041DA192A1A23115541C987897CF7EA5041F6EFFABA231155418ADAA661F9EA5041B8612B0A24115541919E44D4F9EA50415214E11C24115541DB059A85FAEA5041B8ABD33924115541C0C060A5FAEA5041D091033F2411554153B078DAFAEA5041084BAE47241155417AD4D000FBEA50419BA9F04D2411554143075911FBEA5041E084A35024115541FBEF9A1EFBEA5041DF88CD5224115541F037F71FFBEA5041316306532411554165836C2AFBEA5041A36CBB54241155418E34DF2BFBEA50417BEFF75424115541A568A5F9FBEA5041C295A2441E11554100E2309DFBEA50417D2E24341E11554177DAA18DFBEA50415060D6311E115541B18EDF87FBEA50412710FC301E115541A0B39CD6F6EA50414058FE801D115541491A3735F3EA5041A60AA7041D115541F1A14586E7EA5041E2C39C7D1B1155413D0AD703E1EA50413D0AD7A31A115541A9CAEDD9DFEA504182510B6E1A115541240AAD31DEEA5041EB6BC4231A11554193DCA7F6DDEA504159C0C6161A11554185EB51B8DDEA5041B81E850B1A1155412EA9FDCBDBEA5041375BD083191155415C8FC235DAEA50413D0AD7131911554150327F2FDAEA5041CE26B210191155417932072BDAEA5041F7E2720F191155418A23B885D8EA5041E49FF43A181155415C8FC2B5D7EA5041295C8FD217115541D7A3707DD5EA5041333333D317115541A5047150D5EA5041E63AB0391811554145D3BA4BD5EA5041D4726B4418115541EF479444D5EA5041C1AFB4541811554170196041D5EA50415ABA005C18115541D90CCDADD4EA504158171EAC191155410AC95505D4EA5041B485D02B1B115541925A287AD2EA504169CAABB01E115541775D0459D2EA5041A3FF28E31F11554121504158D2EA504172A753EB1F1155413E782D57D2EA50414344E0F61F115541BBDB8C56D2EA50414EC599FD1F115541ED3BCE50D2EA5041E7932C3B20115541BDB83F33D2EA5041CAD5767F2111554133333363D7EA504185EB514822115541A4703D2ADDEA5041B81E852B23115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>690199 - 236460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE4781D57E5041000000A0021F5441666666E6C57E5041AE47E19AED1E5441D7A370FDC47E504152B81E05EE1E5441713D0A77C07E50413D0AD7A3F01E54417B14AEC7BE7E5041AE47E1DAF11E5441D7A3706DD37E5041A4703DCA0A1F544114AE4781D57E5041000000A0021F5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000D7A370FDC47E504152B81E05EE1E54419E057377C07E5041E55E9AA3F01E544135E10977C07E50414B5BD8A3F01E544119FDAEC7BE7E5041971DE2DAF11E5441602B9732C17E5041F6044FC6F41E5441BE8E706DD37E504123573DCA0A1F54413A7F4781D57E5041E4C0FF9F021F5441AF435780D57E5041C028BC9E021F5441D7B50580D57E5041374E4E9E021F544148E19B67D57E50410FC26B7D021F5441470D5754D57E5041CE377763021F54415B5A114ED57E5041BB55045B021F5441FAAA4744D57E5041AA2AD54D021F5441466155E1D27E50412CA2E216FF1E5441494925DACD7E5041D0B10951F81E5441E5D3107FC67E504111798568EE1E54415B3F4AE2C57E50415AAE4D9EED1E544159FBE6A9C57E5041343978B6ED1E5441D7A370FDC47E504152B81E05EE1E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>690199 - 397565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE4781D57E5041000000A0021F5441666666E6C57E5041AE47E19AED1E5441D7A370FDC47E504152B81E05EE1E5441713D0A77C07E50413D0AD7A3F01E54417B14AEC7BE7E5041AE47E1DAF11E5441D7A3706DD37E5041A4703DCA0A1F544114AE4781D57E5041000000A0021F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004519DD99C57E5041C7AFC8BDED1E5441EABDF578C57E50418D1BCACCED1E5441BB993270C57E50412614C9D0ED1E54411DE5DE66C57E504135FA09D5ED1E54410CA81C57C57E50417DC439DCED1E544141D71D4BC57E5041C131B2E1ED1E54419550E849C57E5041125A3FE2ED1E5441994ADA42C57E504156FA76E5ED1E54418F88743FC57E504131A003E7ED1E54419D4D8332C57E5041BE9AEAECED1E5441D70B70FDC47E5041A34D1F05EE1E544135E10977C07E50414B5BD8A3F01E544119FDAEC7BE7E5041971DE2DAF11E5441602B9732C17E5041F6044FC6F41E5441BE8E706DD37E504123573DCA0A1F54413A7F4781D57E5041E4C0FF9F021F5441DCB50580D57E50413B4E4E9E021F54415A818857D57E5041C754C467021F54415B5A114ED57E5041BB55045B021F5441FAAA4744D57E5041AA2AD54D021F5441466155E1D27E50412CA2E216FF1E5441DB4F25DACD7E5041B4BA0951F81E5441CD3566E6C57E5041D75DE19AED1E5441E56A0AC8C57E504147A5B9A8ED1E5441E960BFC6C57E50412C9D50A9ED1E54417A549DBDC57E5041EDDD7AADED1E54418992B5A0C57E50414E7BA9BAED1E54414519DD99C57E5041C7AFC8BDED1E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>677291 - 3181618
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5284CA0305141A4703D8A0A9A5441E17A149E7C305141CDCCCC9C159A54413D0AD79383305141CDCCCC5C289A5441CDCCCCBC88305141295C8F42369A5441C3F5282C8D30514152B81E35429A54418FC2F59890305141295C8F923F9A5441CDCCCC9C96305141D7A3704D3B9A54415C8FC2D59E305141295C8F92369A544148E17A04A43051411F85EB11359A5441B81E85BBA830514148E17AD4329A544114AE4711AE30514114AE47A12F9A5441000000A0AF305141C3F5284C2E9A5441CDCCCC1CB3305141A4703DFA2A9A54417B14AED7B6305141D7A370CD259A5441F6285C8FBA30514152B81E35229A544148E17AE4BF305141666666C61E9A544148E17AD4C13051415C8FC2151E9A54413D0AD7D3C3305141D7A3707D189A5441295C8FF2A8305141C3F528BC219A5441C3F5284CA0305141A4703D8A0A9A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000024364CD1A63051418CE45FBD339A5441843583BBA8305141B1C97BD4329A544113EED544AA30514107C08FE7319A54417C8F84DF9B3051413E01BBE90B9A544153AC5C3898305141FF78EF0B0D9A544124364CD1A63051418CE45FBD339A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>677360 - 251141
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002B000000C3F528BC862A514148E17A24D79854415C8FC2A5822A5141713D0A47D598544185EB5158822A5141E17A141ED198544152B81E858C2A5141295C8F92D1985441A4703D6A912A51410AD7A3C0D19854411F85EB21992A51411F85EBD1CF985441E17A146E9A2A5141CDCCCCFCCF985441CDCCCC2C9A2A514166666616D1985441000000909D2A5141A4703D0AD2985441A4703D5A9E2A51411F85EBE1D298544152B81E75A12A5141666666A6D2985441333333B3A02A5141B81E856BD098544152B81EB59E2A51410AD7A330CE9854415C8FC2459D2A51411F85EBE1CC985441B81E85EB962A51419A999969CB985441666666468F2A5141295C8FE2C998544114AE47B1892A5141AE47E16AC7985441A4703DDA842A51410AD7A350C5985441B81E855B802A51413D0AD7B3C498544148E17A347A2A51417B14AEF7C2985441333333637A2A5141D7A370CDC198544152B81E95692A5141B81E855BBF985441D7A370DD5C2A5141EC51B83EBC985441A4703DAA5C2A5141EC51B85EBE9854413D0AD7935B2A514100000000C29854415C8FC2755B2A5141EC51B8AEC29854411F85EB21622A514185EB5128C39854410AD7A3606A2A5141CDCCCCACC3985441D7A3703D6E2A5141B81E853BC4985441713D0AA7742A51410AD7A3A0C5985441713D0A37742A5141000000F0C79854410AD7A360732A514148E17A14CC985441AE47E19A722A5141D7A370DDCE9854415C8FC2A57A2A51419A9999B9D298544114AE4751852A5141B81E859BD8985441AE47E1FA8B2A51411F85EBB1DB985441C3F528FC922A5141C3F5283CDE98544185EB5148962A514114AE4711DF985441333333C3992A51418FC2F548D298544148E17A94942A5141D7A3701DDB985441666666868E2A5141C3F5289CD99854418FC2F5588D2A5141AE47E1FAD5985441C3F528BC862A514148E17A24D798544105000000CDCCCCFC5E2A5141C3F5280CC1985441CDCCCCFC5E2A5141CDCCCC9CBF9854417B14AE87622A5141295C8F92BF9854411F85EB91622A5141C3F5280CC1985441CDCCCCFC5E2A5141C3F5280CC1985441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000AE47E19A722A5141D7A370DDCE985441576663B47A2A51419EF6EDB9D298544114AE4751852A5141B81E859BD89854414BB7FC81912A5141F47360A9DD98544185468B14962A51410D5C3504DF98544185EB5148962A514114AE4711DF985441A585AAB2962A5141371EA88ADD985441D8BEFC3C982A5141D61C2296D7985441333333C3992A51418FC2F548D298544148E17A94942A5141D7A3701DDB985441666666868E2A5141C3F5289CD99854418FC2F5588D2A5141AE47E1FAD5985441C3F528BC862A514148E17A24D79854415C8FC2A5822A5141713D0A47D598544185EB5158822A5141E17A141ED198544152B81E858C2A5141295C8F92D1985441A4703D6A912A51410AD7A3C0D19854411F85EB21992A51411F85EBD1CF985441E17A146E9A2A5141CDCCCCFCCF985441CDCCCC2C9A2A514166666616D1985441000000909D2A5141A4703D0AD29854415DAE993B9E2A5141A27F3EC1D29854414FCFF942A02A514127E752BDD29854413B9F4B6FA12A5141E0C34095D2985441333333B3A02A5141B81E856BD09854418665C18D9E2A5141B7820177CD9854414507C9549C2A5141F2DCD2BCCC985441666666468F2A5141295C8FE2C9985441F82BACE4842A5141C2CBE55FC5985441BF7A1E49842A5141868EDD3CC5985441B81E855B802A51413D0AD7B3C498544148E17A347A2A51417B14AEF7C2985441333333637A2A5141D7A370CDC1985441F4C9BC1D702A5141BE86DF4EC0985441DA92807C6F2A51418816EE80C4985441713D0AA7742A51410AD7A3A0C5985441713D0A37742A5141000000F0C79854410AD7A360732A514148E17A14CC985441AE47E19A722A5141D7A370DDCE985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956719 - 418534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000D4035606B6335141445D89A4971F55414E7081BEB43351415255C4549E1F55418F515EF1B3335141055E2E84A21F5541B81E85DBB2335141F6285C2FA81F554151DDEA47B13351412D3BD169B01F5541641819C0B03351412871AD2EB31F55415080C1F4AF33514168C0F253B71F554139F14C6FAF3351416149780CBA1F554161A2C0F3AE335141D4BE8B75BD1F55416C250CB6AE3351414417B697C01F5541728D7168B633514138C11BA3C21F5541A7E1A716BF335141E3AB2609C51F55414EC98028C5335141D41C87B6C61F554109630662D13351416D5B7B17CA1F5541342C1E7DDE3351411FC027B7CD1F55412C41B56CED335141F99605D8D11F55412EAC61A7F83351411B6174F2D41F5541D5FC14310234514197953B95D71F5541D2C5F1080D34514145C75B94DA1F5541E72485B30E345141B705B788D91F55411365ED61083451418CF84850D51F5541AD9776E70034514148C55B39D11F5541C8AB7242F5335141DF3739B8CB1F55410320066AF03351417793BBF1C81F554178BAF8BFEC335141B151F27CC61F5541E2012E95E93351417DE2765DC41F5541051623CFE43351419D0B512AC11F55411D6659C1E133514117B0461EBF1F55412F615525DE335141DF1BE6B2BC1F55417E1BE797D933514180D7B2A5B91F554170FCBD6DD43351419AD0702FB61F5541326F926BD1335141BB4486DAB21F5541F9A5E114CD33514107A05F9FAB1F5541C1DC30BEC8335141AC139576A21F554120C2E92AC63351410F2440DE9A1F5541E1FB2A97C33351417EC6C339931F5541CA2545F5C2335141B3E83A97911F554119E5893EB7335141AFB1ED45911F5541D4035606B6335141445D89A4971F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D7A370BDA433514152B81E35BF1F554148E17A44A1335141F6285CDFD21F5541AE47E15AA63351411F85EBD1D31F554148E17A54A93351418FC2F538D41F554152B81E65AA335141E17A145ED41F5541000000A0AE33514166666646BE1F5541B81E85DBB2335141F6285C2FA81F55413D0AD743B7335141A4703D2A911F5541000000C0B6335141000000708D1F5541C3F528DCB33351411F85EBF18A1F5541CDCCCCACAA335141713D0A37911F55417B14AE67A933514185EB51C8A41F5541D7A370BDA433514152B81E35BF1F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956719 - 1390064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000D4035606B6335141445D89A4971F55414E7081BEB43351415255C4549E1F55418F515EF1B3335141055E2E84A21F5541B81E85DBB2335141F6285C2FA81F554151DDEA47B13351412D3BD169B01F5541641819C0B03351412871AD2EB31F55415080C1F4AF33514168C0F253B71F554139F14C6FAF3351416149780CBA1F554161A2C0F3AE335141D4BE8B75BD1F55416C250CB6AE3351414417B697C01F5541728D7168B633514138C11BA3C21F5541A7E1A716BF335141E3AB2609C51F55414EC98028C5335141D41C87B6C61F554109630662D13351416D5B7B17CA1F5541342C1E7DDE3351411FC027B7CD1F55412C41B56CED335141F99605D8D11F55412EAC61A7F83351411B6174F2D41F5541D5FC14310234514197953B95D71F5541D2C5F1080D34514145C75B94DA1F5541E72485B30E345141B705B788D91F55411365ED61083451418CF84850D51F5541AD9776E70034514148C55B39D11F5541C8AB7242F5335141DF3739B8CB1F55410320066AF03351417793BBF1C81F554178BAF8BFEC335141B151F27CC61F5541E2012E95E93351417DE2765DC41F5541051623CFE43351419D0B512AC11F55411D6659C1E133514117B0461EBF1F55412F615525DE335141DF1BE6B2BC1F55417E1BE797D933514180D7B2A5B91F554170FCBD6DD43351419AD0702FB61F5541326F926BD1335141BB4486DAB21F5541F9A5E114CD33514107A05F9FAB1F5541C1DC30BEC8335141AC139576A21F554120C2E92AC63351410F2440DE9A1F5541E1FB2A97C33351417EC6C339931F5541CA2545F5C2335141B3E83A97911F554119E5893EB7335141AFB1ED45911F5541D4035606B6335141445D89A4971F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D7A370BDA433514152B81E35BF1F554148E17A44A1335141F6285CDFD21F5541AE47E15AA63351411F85EBD1D31F554148E17A54A93351418FC2F538D41F554152B81E65AA335141E17A145ED41F5541000000A0AE33514166666646BE1F5541B81E85DBB2335141F6285C2FA81F55413D0AD743B7335141A4703D2A911F5541000000C0B6335141000000708D1F5541C3F528DCB33351411F85EBF18A1F5541CDCCCCACAA335141713D0A37911F55417B14AE67A933514185EB51C8A41F5541D7A370BDA433514152B81E35BF1F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956719 - 4106005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000D4035606B6335141445D89A4971F55414E7081BEB43351415255C4549E1F55418F515EF1B3335141055E2E84A21F5541B81E85DBB2335141F6285C2FA81F554151DDEA47B13351412D3BD169B01F5541641819C0B03351412871AD2EB31F55415080C1F4AF33514168C0F253B71F554139F14C6FAF3351416149780CBA1F554161A2C0F3AE335141D4BE8B75BD1F55416C250CB6AE3351414417B697C01F5541728D7168B633514138C11BA3C21F5541A7E1A716BF335141E3AB2609C51F55414EC98028C5335141D41C87B6C61F554109630662D13351416D5B7B17CA1F5541342C1E7DDE3351411FC027B7CD1F55412C41B56CED335141F99605D8D11F55412EAC61A7F83351411B6174F2D41F5541D5FC14310234514197953B95D71F5541D2C5F1080D34514145C75B94DA1F5541E72485B30E345141B705B788D91F55411365ED61083451418CF84850D51F5541AD9776E70034514148C55B39D11F5541C8AB7242F5335141DF3739B8CB1F55410320066AF03351417793BBF1C81F554178BAF8BFEC335141B151F27CC61F5541E2012E95E93351417DE2765DC41F5541051623CFE43351419D0B512AC11F55411D6659C1E133514117B0461EBF1F55412F615525DE335141DF1BE6B2BC1F55417E1BE797D933514180D7B2A5B91F554170FCBD6DD43351419AD0702FB61F5541326F926BD1335141BB4486DAB21F5541F9A5E114CD33514107A05F9FAB1F5541C1DC30BEC8335141AC139576A21F554120C2E92AC63351410F2440DE9A1F5541E1FB2A97C33351417EC6C339931F5541CA2545F5C2335141B3E83A97911F554119E5893EB7335141AFB1ED45911F5541D4035606B6335141445D89A4971F5541
+</a>
+
+<b>
+0106000000010000000103000000010000001200000048E17A44A1335141F6285CDFD21F5541AE47E15AA63351411F85EBD1D31F554148E17A54A93351418FC2F538D41F554152B81E65AA335141E17A145ED41F5541000000A0AE33514166666646BE1F5541B81E85DBB2335141F6285C2FA81F55413D0AD743B7335141A4703D2A911F5541000000C0B6335141000000708D1F5541C3F528DCB33351411F85EBF18A1F5541CDCCCCACAA335141713D0A37911F55417B14AE67A933514185EB51C8A41F5541295C8FA29B335141000000F0A41F5541D7A370ED9833514114AE4701AA1F55417B14AE4798335141B81E856BA91F5541333333838F3351410AD7A380A11F5541333333838D335141D7A370FDBA1F5541333333F38B335141666666E6CE1F554148E17A44A1335141F6285CDFD21F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>678877 - 96666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002600000014AE4751E84351418FC2F5F89C865441F6285C7FE74351413D0AD7C39B8654419A999989E643514114AE4701A7865441EC51B86EE64351410AD7A340A88654418FC2F5E8E2435141AE47E18AD186544185EB5198E043514114AE47B1EC865441295C8F82E04351410AD7A3B0ED86544114AE47F1C74351411F85EB41EB865441AE47E10AC5435141A4703D2AEC865441333333D3C3435141AE47E1FAED865441EC51B8DEC2435141C3F528BC04875441CDCCCCACC84351410AD7A39004875441666666B6C94351413D0AD7C308875441713D0A07D243514152B81E250687544152B81EB5DF435141B81E857B0287544114AE4721E3435141CDCCCCEC01875441E17A141EE84351413D0AD7330287544133333373F6435141E17A14CE03875441295C8FC229445141F6285CFF07875441713D0A472B445141CDCCCCDC06875441A4703D9A2D445141713D0A87FD865441CDCCCC0C30445141000000C0F4865441000000D026445141713D0A47F3865441666666861E44514100000070F2865441295C8F32184451419A999999F1865441A4703D0A1244514133333343F18654413D0AD7E30C4451413D0AD7B3F0865441CDCCCC3C0D4451413D0AD763EC8654417B14AE6715445141B81E858BD3865441B81E85FB164451410AD7A380CE865441333333731744514114AE4701CD8654410AD7A3D01644514133333313CB86544148E17A140F445141AE47E16AC58654415C8FC265094451418FC2F5E8BF8654418FC2F50803445141713D0A07BD86544185EB5198FD435141AE47E1CAB886544185EB5158F64351413D0AD7C3AE86544114AE4751E84351418FC2F5F89C865441
+</a>
+
+<b>
+010600000001000000010300000001000000290000006A1B62D9164451415F36C2EDCE865441940733DA164451418C6326EBCE86544176E9D99F164451416345CDB0CE865441333333731744514114AE4701CD865441A68E3ED21644514199851318CB8654412D51AA9016445141706C68E4CA865441A73FDA6C14445141CCA4BA53C9865441E875191A12445141A9A5B7A0C78654410B84B89E10445141D4684BAFC6865441611BEF790F4451414E3C4EBBC58654410B45AB5F0F44514174DADFA1C586544148E17A140F445141AE47E16AC58654415C8FC265094451418FC2F5E8BF865441EF1737DE0844514173558DABBF865441DF213FC10544514121329764BE8654415AD813160344514177C9CD3FBD865441442757A7FD435141FE6274DDB8865441CABE8E9CFD435141FBCE2DCEB886544185EB5198FD435141AE47E1CAB886544185EB5158F64351413D0AD7C3AE865441DB12BB42F14351415F06E750A8865441024FB52AEF4351412BE8ACCDA58654410F1559BCEB4351419B63ED52A1865441EA1EFE5DEB435141F58C37D7A086544114AE4751E84351418FC2F5F89C8654414F4EC082E74351411470D5C89B865441F864517FE7435141531655C49B865441C4BAB262E7435141D4146C139D865441729EDAF8E6435141D76AAEEAA1865441A22428F9EA4351415C60452FA68654413EC74D8CEF435141D4E3CC48AC86544160967013F5435141C3578525B3865441FC3896A6F94351410B81DAF5B88654415045BDBFFD4351416BAB6727BD865441D4E6AAF103445141D5D5F458C186544102999FC10744514137E353D3C38654416FE1920B0C445141291DB041C7865441F247EC6D10445141F7FCD966CA8654410ADC7A25144451419482D142CD865441554EB9D8164451418AC9DDEFCE8654416A1B62D9164451415F36C2EDCE865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>678877 - 296906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002600000014AE4751E84351418FC2F5F89C865441F6285C7FE74351413D0AD7C39B8654419A999989E643514114AE4701A7865441EC51B86EE64351410AD7A340A88654418FC2F5E8E2435141AE47E18AD186544185EB5198E043514114AE47B1EC865441295C8F82E04351410AD7A3B0ED86544114AE47F1C74351411F85EB41EB865441AE47E10AC5435141A4703D2AEC865441333333D3C3435141AE47E1FAED865441EC51B8DEC2435141C3F528BC04875441CDCCCCACC84351410AD7A39004875441666666B6C94351413D0AD7C308875441713D0A07D243514152B81E250687544152B81EB5DF435141B81E857B0287544114AE4721E3435141CDCCCCEC01875441E17A141EE84351413D0AD7330287544133333373F6435141E17A14CE03875441295C8FC229445141F6285CFF07875441713D0A472B445141CDCCCCDC06875441A4703D9A2D445141713D0A87FD865441CDCCCC0C30445141000000C0F4865441000000D026445141713D0A47F3865441666666861E44514100000070F2865441295C8F32184451419A999999F1865441A4703D0A1244514133333343F18654413D0AD7E30C4451413D0AD7B3F0865441CDCCCC3C0D4451413D0AD763EC8654417B14AE6715445141B81E858BD3865441B81E85FB164451410AD7A380CE865441333333731744514114AE4701CD8654410AD7A3D01644514133333313CB86544148E17A140F445141AE47E16AC58654415C8FC265094451418FC2F5E8BF8654418FC2F50803445141713D0A07BD86544185EB5198FD435141AE47E1CAB886544185EB5158F64351413D0AD7C3AE86544114AE4751E84351418FC2F5F89C865441
+</a>
+
+<b>
+010600000001000000010300000001000000290000006A1B62D9164451415F36C2EDCE865441940733DA164451418C6326EBCE86544176E9D99F164451416345CDB0CE865441333333731744514114AE4701CD865441A68E3ED21644514199851318CB8654412D51AA9016445141706C68E4CA865441A73FDA6C14445141CCA4BA53C9865441E875191A12445141A9A5B7A0C78654410B84B89E10445141D4684BAFC6865441611BEF790F4451414E3C4EBBC58654410B45AB5F0F44514174DADFA1C586544148E17A140F445141AE47E16AC58654415C8FC265094451418FC2F5E8BF865441EF1737DE0844514173558DABBF865441DF213FC10544514121329764BE8654415AD813160344514177C9CD3FBD865441442757A7FD435141FE6274DDB8865441CABE8E9CFD435141FBCE2DCEB886544185EB5198FD435141AE47E1CAB886544185EB5158F64351413D0AD7C3AE865441DB12BB42F14351415F06E750A8865441024FB52AEF4351412BE8ACCDA58654410F1559BCEB4351419B63ED52A1865441EA1EFE5DEB435141F58C37D7A086544114AE4751E84351418FC2F5F89C8654414F4EC082E74351411470D5C89B865441F864517FE7435141531655C49B865441C4BAB262E7435141D4146C139D865441729EDAF8E6435141D76AAEEAA1865441A22428F9EA4351415C60452FA68654413EC74D8CEF435141D4E3CC48AC86544160967013F5435141C3578525B3865441FC3896A6F94351410B81DAF5B88654415045BDBFFD4351416BAB6727BD865441D4E6AAF103445141D5D5F458C186544102999FC10744514137E353D3C38654416FE1920B0C445141291DB041C7865441F247EC6D10445141F7FCD966CA8654410ADC7A25144451419482D142CD865441554EB9D8164451418AC9DDEFCE8654416A1B62D9164451415F36C2EDCE865441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ </run>
+

Added: packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061020_int.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061020_int.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/stmlf/stmlf-cases-20061020_int.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,341 @@
+  <!--
+ The test cases have been taken from the robustness improvement project
+ funded by the Bavarian State Ministry of Agriculture and Forestry
+ (StMLF) and the State Survey of Bavaria (LVG). Written permission
+ to use the data for tests has been given by email on the 22 Nov 2006.
+ -->
+<!-- 
+ These tests do not have valid result values provided.  
+ To avoid reporting failures, 
+ they should be run with -geomop com.vividsolutions.jtstest.testrunner.geomop.OverlayValidatedGeometryOperation
+ -->
+<run>
+ 	<desc>Overlay Robustness cases from StMLF (all handled by snapping)</desc>
+ 	<precisionModel type="FLOATING"/>
+
+ <case><desc>966094 - 2025063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99455 - 3082006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275046 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984559 - 984543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD820655411578213AB9A55041AAC14B0E82065541AA83191AB8A550410BB6532E8306554197883DA0B7A550417F9D9F8F850655419F4586A9B7A55041D11DA9AD85065541ACD69341BAA550414D1315128E0655417915A591C8A55041E010AC5D8F065541E656C3E3C9A55041FFFA78848F0655411B560F21CDA5504138A7ACAD8F06554168947DA7C9A5504177CD06F1AF065541E1849B42CDA55041E7CD7CE78F06554185EC5B65CDA550410CB479EB8F06554128F43A6CC9A55041B31E8409B2065541BEA3C40FA1A550419D76610AAE065541E223DE3BA1A550419C41D30AAC065541A8ABFFB1A4A55041740C03188A06554152EADBB8A4A5504112DAEE118A065541C6D01C2AA4A550410139FC0B8A0655411A3C862AA4A55041ED5B35078A065541DB6C0960AAA55041F034990F85065541044C9B65AAA550416A8FC70F85065541C79BE1C3B5A55041D69E636E85065541955A96C2B5A550419B7F4764850655412102AF3DB5A55041B717E45581065541F8DC4F578BA5504119C4682C760655410F37753389A55041B532A59977065541F3712F4F88A550419AE21A4EB50655410F37753389A55041F5A5D2FFB60655415A80D7DBACA55041E30B07E8B80655414EDFA328AEA5504100EF3261BA065541AA3CB11DAEA5504154153F57BA065541F79AE02CB1A550416679D4D4BD065541DC600B79A9A550414230DC400E075541BF6A7E10AEA550410BDA1C74110755413756C137B4A55041FC92284907075541E4EFA437B4A5504106BA974507075541BDC6AEEDB3A5504155B441FCFD065541AD85B2EBB3A550419FF670BCFD0655419F3CCD23B3A550418F5D39A3E4065541E247A97DB3A55041DAD2D922CD065541FB24D4EAB8A55041615C8329CC0655416D81503FB7A55041589E91C0E70655410AE44A8BBDA55041AE2015D1E30655410CD2E5A5BDA550417622F7DFC60655414DA59D7BBEA55041FE2EA8DDC1065541F4F4BA38B8A550415592ABC9C40655418CAE7DF1B7A55041D885FACBC90655414A8EE6C4B3A550413FCC3713CA065541EBC84FFDB3A5504112E22710B806554167F8C7FFB3A55041BB3FA65AB70655415B5FE60AB4A550416DFC595BB706554112DA570FC0A55041D2589D1DB80655410400000059BA0671B1A5504148F8A219BE065541E9E4F983B1A550414EF51C2FBE06554143FAF580AFA550413A35404AD006554159BA0671B1A5504148F8A219BE065541
+</a>
+
+<b>
+01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541E63773E88BA550416EC6A504110755417CFBABD7A5A55041BF94266713075541737C3C55A7A550410AFA459D11075541B60343AAAFA550419FCF5BAEBE065541B35CD980ACA55041842EFC4EBB065541B0B56F57A9A55041FD5D4C9FB906554182233B258AA55041CB6F6AFDB80655411F4777E188A55041FD5D4C9FB9065541FA528B7588A5504178340619BB0655417F7CD1FB86A55041842EFC4EBB065541299A03EE85A55041D8696033B906554140E7853083A55041D8696033B906554158E17B6683A55041389FBA4DB706554104A6178285A550411EABCEE1B60655418C76C73187A550418CDA1E32B5065541C964A9D387A55041849E8DA5770655418C76C73187A55041B3E5051E75065541D1C50FFD5FA55041241A0F286A065541FC2DCBFC41A55041C6C1254964065541DBF7ACEC3EA55041C826B9417C0655413D1392533DA550417352D275B00655414D29D2CB3AA5504106BA1565AF0655417DF207FE3DA550418359369C6B065541DF8AC40E3FA5504176CC6F26660655418B02F7C940A55041B72E0E2764065541EFFBF91B3CA5504103E6C805630655417B14AE173CA550418FC2F5F8640655419A9999A939A55041E17A14EE6A065541B81E853B39A550410AD7A37075065541AE47E1AA36A55041CDCCCC0CB406554152B81E9536A55041CDCCCC2CB6065541E17A141E33A55041EC51B82E0A0755410000005034A5504148E17A840B0755416666666644A550410AD7A3A00C0755418FC2F5385AA550411F85EB210E075541713D0A375DA5504148E17A340F075541E7608D2561A55041ADC66F500F0755410103000000010000000400000008C55C1D3CA550417844C5646206554183150A483CA55041E5AA66CF61065541EC51B81E3CA55041713D0AC76106554108C55C1D3CA550417844C56462065541010300000001000000040000005D8D8B6A85A55041BED241F372065541E47D41AC6AA55041DE43FAAE6B0655417EDE984D71A55041C74E34966D0655415D8D8B6A85A55041BED241F37206554101030000000100000005000000EAFF24B4A9A5504124CF7BA07C0655410B3AAB5FB4A55041A2DEE3787F0655418FAA4712B6A55041AB55FF007F06554100000090B4A550410AD7A3407F065541EAFF24B4A9A5504124CF7BA07C0655410103000000010000000500000001DF2966B8A55041789F9D5C7E0655410B412FB2B8A5504130F7A4477E065541CC7EBC1FB9A55041E4B857F480065541713D0AD7B8A55041CDCCCC2C7E06554101DF2966B8A55041789F9D5C7E06554101030000000100000005000000CFD9570FC0A55041CB589D1DB806554109100BF6C5A550419C44AFB4B8065541F863EE9CCAA55041D51735C8B8065541FA1C3BAEC4A55041ADFA4E68B8065541CFD9570FC0A55041CB589D1DB806554101030000000100000005000000BCC6AEEDB3A5504156B441FCFD065541DFEFA437B4A5504105BA974507075541E17A147EB4A550411F85EBD106075541E897B6E7B3A55041F089613CFD065541BCC6AEEDB3A5504156B441FCFD065541010300000001000000040000005980D7DBACA55041E50B07E8B8065541FECA9E84ACA5504183DC5CE3B806554152DFA328AEA55041FFEE3261BA0655415980D7DBACA55041E50B07E8B806554101030000000100000006000000B84DF564B4A55041D525FB62850655410E6C91F0B5A550417DA1368285065541AEC766EAB5A5504167A26F6585065541935A96C2B5A550419C7F476485065541C59BE1C3B5A55041DB9E636E85065541B84DF564B4A55041D525FB6285065541010300000001000000070000009A4586A9B7A55041D31DA9AD850655418D3618A7B7A55041CB1D6EBB8506554164E2BD2FBAA55041057226148E06554170930B7BCBA5504199BA35B38F0655417715A591C8A55041DD10AC5D8F065541B0D69341BAA550414A1315128E0655419A4586A9B7A55041D31DA9AD8506554101030000000100000004000000BFA3C40FA1A550419B76610AAE0655419BB2CE27A1A55041D8D8C20CAE065541E723DE3BA1A550419D41D30AAC065541BFA3C40FA1A550419B76610AAE0655410103000000010000000400000065F8C7FFB3A55041B63FA65AB7065541E8C84FFDB3A5504115E22710B80655415F5FE60AB4A5504169FC595BB706554165F8C7FFB3A55041B63FA65AB7065541010300000001000000060000001BAC79F6C3A550418B0BF252830655416A1791F2C3A550412E6FF07D830655418DEB2500C4A55041BC721A7F83065541ECD70406C4A55041F471C832830655417871A807BFA550410D4AC6BD820655411BAC79F6C3A550418B0BF25283065541010300000001000000040000005BBA0671B1A550414DF8A219BE0655413FFAF580AFA550413935404AD0065541E7E4F983B1A5504152F51C2FBE0655415BBA0671B1A550414DF8A219BE065541010300000001000000050000002CF43A6CC9A55041B21E8409B206554180EC5B65CDA5504107B479EB8F065541DF849B42CDA55041E8CD7CE78F065541BA6B1E6BC9A55041EEF16709B20655412CF43A6CC9A55041B21E8409B20655410103000000010000000B000000E6FB5D2BD4A55041BFD4E67B87065541F43CDF21D4A550411CF16BD687065541D4F53E49D4A55041DE0AE1DA87065541AA4D8A52D2A5504109968417990655412EB6A1FDCEA55041555C94DAB8065541E5B48A0DCFA550418F21D7DAB8065541FCDEE639D3A550414C050BCE9106554179C6256BD4A550410C9C245F87065541A3302AF0C3A55041919C022585065541321AD0ECC3A550411D50D33F85065541E6FB5D2BD4A55041BFD4E67B8706554101030000000100000006000000699DAFEAA7A55041C178B99214075541A8DF075984A55041C20F520812075541865B5BADABA550414AC4253E1507554195DE56C4ABA5504112C02019150755415C593BE4A7A5504135DDCFCC14075541699DAFEAA7A55041C178B9921407554101030000000100000006000000C8D01C2AA4A550410339FC0B8A065541B94ABDB7A9A550411F3E38478A06554129D4688AAAA55041D8D7F91085065541DA6C0960AAA55041F034990F850655411E3C862AA4A55041ED5B35078A065541C8D01C2AA4A550410339FC0B8A065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982104 - 1320680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>720830 - 32827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11503 - 422581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35309 - 21138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541
+</a>
+
+<b>
+01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189022 - 7822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 2916437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256271 - 367713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441B81E855BF9BF50413D0AD783522A54410AD7A350FCBF5041B81E858B602A5441E17A14CEFDBF5041D7A3709D672A5441CDCCCC5CFEBF50413D0AD7436A2A54410AD7A3A000C0504133333303752A5441295C8FD202C05041CDCCCC6C7F2A54419A9999990BC0504185EB51C8812A54419A99997911C05041E17A144E852A5441000000901AC05041A4703D7A702A5441666666E645C05041713D0A676B2A544152B81ED566C0504185EB5148712A54416666662665C050413D0AD7A3672A5441B81E850B67C05041AE47E16A602A544148E17A0473C050418FC2F588622A5441000000D071C05041B81E850B562A54413333331371C050410AD7A340502A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275129 - 384120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F38637544133333333A32B514152B81EF586375441F6285C7F9D2B5141713D0A578A3754413D0AD7439E2B51413D0AD7538A3754418FC2F558A62B51410AD7A3308A375441C3F5283CB92B51419A9999D989375441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275562 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466188 - 3072591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 3180189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3148390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 164648
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464026 - 6704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>469351 - 5219716
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975328 - 1755529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441
+</a>
+
+<b>
+0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525923 - 45230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532351 - 3180577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587497 - 409926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B676754413AD5EC0B763C51415493273E6A675441088E89EE753C51419D2EDE3B686754414FA0B527763C514133F1EE5468675441AE47E19A753C5141B81E851B59675441000000F0743C5141E17A14DE46675441C2DD97B2733C514113B1F3BE24675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589978 - 39794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>671968 - 1396084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541
+</a>
+
+<b>
+01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelateAA-big.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelateAA-big.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelateAA-big.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,34 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 100, 100 200, 200 200, 200 100, 100 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000000000000 110, 1000000000000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 100, 120 200, 200 200, 200 100, 120 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000000000000 110, 1000000000000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelateAA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelateAA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelateAA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1793 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 100, 120 100, 140 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 20 100, 120 100, 140 20, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FFF1FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 100, 120 100, 140 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 140 20, 120 100, 20 100, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FFF1FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 100, 120 100, 140 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (120 100, 140 20, 20 20, 20 100, 120 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FFF1FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 100, 120 100, 140 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FFF1FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}]</desc>
+  <a>
+    POLYGON(
+      (0 0, 80 0, 80 80, 0 80, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 200, 100 140, 180 140, 180 200, 100 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2FF1212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (140 120, 140 200, 240 200, 240 120, 140 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (80 180, 140 260, 260 200, 200 60, 80 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (240 80, 140 120, 180 240, 280 200, 240 80))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160))
+  </a>
+  <b>
+    POLYGON(
+      (140 40, 180 80, 120 100, 140 40))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160))
+  </a>
+  <b>
+    POLYGON(
+      (120 100, 180 80, 130 40, 120 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 180 20, 140 140, 20 140, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (180 100, 80 200, 180 280, 260 200, 180 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (140 140, 20 120, 0 220, 120 240, 140 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}]</desc>
+  <a>
+    POLYGON(
+      (160 200, 210 70, 120 70, 160 200))
+  </a>
+  <b>
+    POLYGON(
+      (160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}]</desc>
+  <a>
+    POLYGON(
+      (110 140, 200 70, 200 160, 110 140))
+  </a>
+  <b>
+    POLYGON(
+      (110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120))
+  </a>
+  <b>
+    POLYGON(
+      (20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120))
+  </a>
+  <b>
+    POLYGON(
+      (20 120, 300 120, 140 240, 20 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, 
+      20 20))
+  </a>
+  <b>
+    POLYGON(
+      (100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, 
+      20 20))
+  </a>
+  <b>
+    POLYGON(
+      (260 200, 180 80, 120 160, 200 160, 180 220, 260 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (0 140, 300 140, 140 240, 0 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 240, 20 140, 320 140, 180 240, 20 240))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}]</desc>
+  <a>
+    POLYGON(
+      (120 120, 180 60, 20 20, 20 120, 120 120))
+  </a>
+  <b>
+    POLYGON(
+      (120 120, 220 20, 280 20, 240 160, 120 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (140 120, 160 20, 260 120, 220 200, 140 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}]</desc>
+  <a>
+    POLYGON(
+      (20 140, 120 40, 20 40, 20 140))
+  </a>
+  <b>
+    POLYGON(
+      (190 140, 190 20, 140 20, 20 140, 190 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}]</desc>
+  <a>
+    POLYGON(
+      (120 120, 180 60, 20 20, 20 120, 120 120))
+  </a>
+  <b>
+    POLYGON(
+      (300 20, 220 20, 120 120, 260 160, 300 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (140 120, 240 160, 280 60, 160 20, 140 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (120 120, 180 60, 20 20, 20 120, 120 120))
+  </a>
+  <b>
+    POLYGON(
+      (280 60, 180 60, 120 120, 260 180, 280 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (120 200, 120 120, 40 120, 40 200, 120 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (160 220, 140 120, 60 120, 40 220, 160 220))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}]</desc>
+  <a>
+    POLYGON(
+      (140 120, 160 20, 20 20, 20 120, 140 120))
+  </a>
+  <b>
+    POLYGON(
+      (140 120, 20 120, 20 220, 140 220, 140 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}]</desc>
+  <a>
+    POLYGON(
+      (120 120, 180 60, 20 20, 20 120, 120 120))
+  </a>
+  <b>
+    POLYGON(
+      (320 20, 220 20, 80 160, 240 140, 320 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (60 40, 60 140, 180 140, 180 40, 60 40))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212FF1FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 80 140, 160 60, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (160 60, 20 20, 100 140, 160 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 100, 140 160, 160 40, 20 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (160 40, 20 100, 160 160, 160 40))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 180, 180 120, 80 40, 20 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (180 120, 100 40, 20 180, 180 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 140 40, 140 120, 20 160, 80 80, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 140 40, 140 140, 20 180, 80 100, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (40 180, 60 100, 180 100, 200 180, 120 120, 40 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 180, 60 80, 180 80, 220 180, 120 120, 20 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (60 100, 180 100, 220 180, 120 140, 20 180, 60 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F01FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 20 140, 120 120, 120 40, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 20 180, 140 140, 140 60, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 120 40, 120 120, 20 140, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (120 40, 20 20, 20 140, 120 120, 120 40))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 140 60, 140 140, 20 180, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (140 60, 20 20, 20 180, 140 140, 140 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 60 120, 140 120, 180 20, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 40, 120 40, 120 120, 20 140, 20 40))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V},  dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 20 180, 220 180, 220 20, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212F11FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (150 150, 330 150, 250 70, 70 70, 150 150))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 270 150, 140 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-3: spiky polygons overlapping; boundary &lt;-&gt; boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, 
+      80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, 
+      100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, 
+      190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, 
+      290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, 
+      240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, 
+      240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, 
+      250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, 
+      160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, 
+      70 40, 20 20))
+  </a>
+  <b>
+    POLYGON(
+      (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, 
+      120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, 
+      120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, 
+      200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, 
+      380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, 
+      440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, 
+      440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, 
+      390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, 
+      370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, 
+      280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, 
+      200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, 
+      180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, 
+      200 120, 120 120, 190 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-4: spiky polygons overlapping; boundary &lt;-&gt; boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, 
+      20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, 
+      200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, 
+      270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, 
+      350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, 
+      360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, 
+      410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, 
+      240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, 
+      170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, 
+      410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, 
+      420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, 
+      460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, 
+      140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, 
+      90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, 
+      50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, 
+      40 90, 60 130, 20 90, 60 140, 20 130, 70 150))
+  </a>
+  <b>
+    POLYGON(
+      (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, 
+      120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, 
+      120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, 
+      200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, 
+      380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, 
+      440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, 
+      440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, 
+      390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, 
+      370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, 
+      280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, 
+      200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, 
+      180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, 
+      200 120, 120 120, 190 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (60 160, 220 160, 220 20, 60 20, 60 160))
+  </a>
+  <b>
+    POLYGON(
+      (60 160, 20 200, 260 200, 220 160, 140 80, 60 160))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (60 160, 220 160, 220 20, 60 20, 60 160))
+  </a>
+  <b>
+    POLYGON(
+      (60 160, 20 200, 260 200, 140 80, 60 160))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (60 160, 220 160, 220 20, 60 20, 60 160))
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 140 80, 260 200, 20 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
+  <a>
+    POLYGON(
+      (60 160, 220 160, 220 20, 60 20, 60 160))
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 60 160, 140 80, 220 160, 260 200, 20 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (60 160, 220 160, 220 20, 60 20, 60 160))
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 60 160, 140 80, 260 200, 20 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (0 0, 0 200, 200 200, 200 0, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 10000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 0, 100 200, 200 200, 200 0, 100 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 10000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int},  dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 0, 120 200, 200 200, 200 0, 120 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 10000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (0 0, 0 200, 110 200, 110 0, 0 0))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 10000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 100, 100 200, 200 200, 200 100, 100 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 2100 110, 2100 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 100, 100 200, 200 200, 200 100, 100 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 2101 110, 2101 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 100, 200 200, 200 100, 100 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 2101 110, 2101 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 100, 100 200, 200 200, 200 100, 100 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 1000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 100, 120 200, 200 200, 200 100, 120 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 500 110, 500 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 100, 120 200, 200 200, 200 100, 120 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 501 110, 501 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 100, 130 200, 200 200, 200 100, 120 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 501 110, 501 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 100, 17 200, 200 200, 200 100, 120 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 501 110, 501 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (120 100, 120 200, 200 200, 200 100, 120 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 1000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (101 99, 101 1000000, 102 1000000, 101 99))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 1000000 110, 1000000 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (100 100, 200 101, 200 100, 100 100))
+  </a>
+  <b>
+    POLYGON(
+      (100 100, 2101 110, 2101 100, 100 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319))
+  </a>
+  <b>
+    POLYGON(
+      (10 307, 22 307, 153 34, 22 34, 10 307))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212101212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (160 200, 210 70, 120 70, 160 200))
+  </a>
+  <b>
+    POLYGON(
+      (160 200, 310 20, 20 20, 160 200), 
+      (160 200, 260 40, 70 40, 160 200))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}]</desc>
+  <a>
+    POLYGON(
+      (170 120, 240 100, 260 50, 190 70, 170 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}]</desc>
+  <a>
+    POLYGON(
+      (270 90, 200 50, 150 80, 210 120, 270 90))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}]</desc>
+  <a>
+    POLYGON(
+      (170 120, 260 100, 240 60, 150 80, 170 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (220 120, 270 80, 200 60, 160 100, 220 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}]</desc>
+  <a>
+    POLYGON(
+      (260 50, 180 70, 180 110, 260 90, 260 50))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (230 110, 290 80, 190 60, 140 90, 230 110))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}]</desc>
+  <a>
+    POLYGON(
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F1F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}]</desc>
+  <a>
+    POLYGON(
+      (170 120, 330 120, 280 70, 120 70, 170 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}]</desc>
+  <a>
+    POLYGON(
+      (170 120, 300 120, 250 70, 120 70, 170 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}]</desc>
+  <a>
+    POLYGON(
+      (190 100, 310 100, 260 50, 140 50, 190 100))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (280 130, 360 130, 270 40, 190 40, 280 130))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 250 120, 180 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FF1FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}]</desc>
+  <a>
+    POLYGON(
+      (220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, 
+      390 140, 150 140, 40 30, 230 30, 280 80, 220 80))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 250 120, 180 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FF1FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (260 130, 360 130, 280 40, 170 40, 260 130))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 250 120, 180 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FF11F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}]</desc>
+  <a>
+    POLYGON(
+      (240 110, 340 110, 290 60, 190 60, 240 110))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 250 120, 180 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FF11F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}]</desc>
+  <a>
+    POLYGON(
+      (250 120, 350 120, 280 50, 180 50, 250 120))
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 250 120, 180 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FF11F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}]</desc>
+  <a>
+    POLYGON(
+      (230 210, 230 20, 20 20, 20 210, 230 210), 
+      (120 180, 50 50, 200 50, 120 180))
+  </a>
+  <b>
+    POLYGON(
+      (230 210, 230 20, 20 20, 20 210, 230 210), 
+      (120 180, 50 50, 200 50, 120 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FFF1FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}]</desc>
+  <a>
+    POLYGON(
+      (230 210, 230 20, 20 20, 20 210, 230 210), 
+      (140 40, 40 40, 40 170, 140 40), 
+      (110 190, 210 190, 210 50, 110 190))
+  </a>
+  <b>
+    POLYGON(
+      (230 210, 230 20, 20 20, 20 210, 230 210), 
+      (140 40, 40 40, 40 170, 140 40), 
+      (110 190, 210 190, 210 50, 110 190))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="2FFF1FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (280 190, 330 150, 200 110, 150 150, 280 190))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}]</desc>
+  <a>
+    POLYGON(
+      (80 190, 220 190, 140 110, 0 110, 80 190))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (330 150, 200 110, 150 150, 280 190, 330 150))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}]</desc>
+  <a>
+    POLYGON(
+      (290 190, 340 150, 220 120, 170 170, 290 190))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}]</desc>
+  <a>
+    POLYGON(
+      (220 190, 340 190, 260 110, 140 110, 220 190))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}]</desc>
+  <a>
+    POLYGON(
+      (140 190, 220 190, 100 70, 20 70, 140 190))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}]</desc>
+  <a>
+    POLYGON(
+      (140 220, 60 140, 140 60, 220 140, 140 220))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (100 20, 180 20, 180 100, 100 100, 100 20)), 
+      (
+        (20 100, 100 100, 100 180, 20 180, 20 100)), 
+      (
+        (100 180, 180 180, 180 260, 100 260, 100 180)), 
+      (
+        (180 100, 260 100, 260 180, 180 180, 180 100)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="21210F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}]</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (110 110, 70 200, 150 200, 110 110)), 
+      (
+        (110 110, 150 20, 70 20, 110 110)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 160 160, 210 110, 160 60, 110 110)), 
+      (
+        (110 110, 60 60, 10 110, 60 160, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}]</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (110 110, 70 200, 150 200, 110 110), 
+        (110 110, 100 180, 120 180, 110 110)), 
+      (
+        (110 110, 150 20, 70 20, 110 110), 
+        (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 160 160, 210 110, 160 60, 110 110), 
+        (110 110, 160 130, 160 90, 110 110)), 
+      (
+        (110 110, 60 60, 10 110, 60 160, 110 110), 
+        (110 110, 60 90, 60 130, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}]</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (110 110, 70 200, 200 200, 110 110), 
+        (110 110, 100 180, 120 180, 110 110)), 
+      (
+        (110 110, 200 20, 70 20, 110 110), 
+        (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 160 160, 210 110, 160 60, 110 110), 
+        (110 110, 160 130, 160 90, 110 110)), 
+      (
+        (110 110, 60 60, 10 110, 60 160, 110 110), 
+        (110 110, 60 90, 60 130, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP},   dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}]</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (110 110, 20 200, 200 200, 110 110), 
+        (110 110, 100 180, 120 180, 110 110)), 
+      (
+        (110 110, 200 20, 20 20, 110 110), 
+        (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 160 160, 210 110, 160 60, 110 110), 
+        (110 110, 160 130, 160 90, 110 110)), 
+      (
+        (110 110, 60 60, 10 110, 60 160, 110 110), 
+        (110 110, 60 90, 60 130, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}]</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (110 110, 70 200, 200 200, 110 110), 
+        (110 110, 100 180, 120 180, 110 110)), 
+      (
+        (110 110, 200 20, 70 20, 110 110), 
+        (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 160 160, 210 110, 160 60, 110 110), 
+        (110 110, 160 130, 160 90, 110 110)), 
+      (
+        (110 110, 60 60, 10 110, 60 160, 110 110), 
+        (110 110, 60 90, 60 130, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF2F11212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}]</desc>
+  <a>
+    MULTIPOLYGON(
+      (
+        (110 110, 70 200, 200 200, 110 110), 
+        (110 110, 100 180, 120 180, 110 110)), 
+      (
+        (110 110, 200 20, 70 20, 110 110), 
+        (110 110, 120 40, 100 40, 110 110)))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 70 200, 210 110, 70 20, 110 110), 
+        (110 110, 110 140, 150 110, 110 80, 110 110)), 
+      (
+        (110 110, 60 60, 10 110, 60 160, 110 110), 
+        (110 110, 60 90, 60 130, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="212111212">true</op>
+  </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelateAC.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelateAC.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelateAC.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,26 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>AC A-shells overlapping B-shell at A-vertex</desc>
+  <a>
+    POLYGON(
+      (100 60, 140 100, 100 140, 60 100, 100 60))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (80 40, 120 40, 120 80, 80 80, 80 40)), 
+      (
+        (120 80, 160 80, 160 120, 120 120, 120 80)), 
+      (
+        (80 120, 120 120, 120 160, 80 160, 80 120)), 
+      (
+        (40 80, 80 80, 80 120, 40 120, 40 80)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="21210F212">true</op>
+  </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelateLA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelateLA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelateLA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1162 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}]</desc>
+  <a>
+    LINESTRING(150 150, 40 230)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}]</desc>
+  <a>
+    LINESTRING(40 40, 50 130, 130 130)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F0F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}]</desc>
+  <a>
+    LINESTRING(40 230, 150 150)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}]</desc>
+  <a>
+    LINESTRING(210 150, 330 150)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F1FF0F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}]</desc>
+  <a>
+    LINESTRING(200 150, 310 150, 360 220)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F11F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}]</desc>
+  <a>
+    LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F11F0F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}]</desc>
+  <a>
+    LINESTRING(210 210, 220 150, 320 150, 370 210)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F11FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(20 60, 150 60)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}]</desc>
+  <a>
+    LINESTRING(60 90, 310 180)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(90 210, 210 90)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}]</desc>
+  <a>
+    LINESTRING(290 10, 130 170)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(30 100, 100 100, 180 100)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}]</desc>
+  <a>
+    LINESTRING(20 100, 100 100, 360 100, 410 100)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(90 210, 150 150, 210 90)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(180 90, 280 120)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}]</desc>
+  <a>
+    LINESTRING(70 70, 80 20)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}]</desc>
+  <a>
+    LINESTRING(130 20, 150 60)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF00F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}]</desc>
+  <a>
+    LINESTRING(70 70, 80 20, 140 20, 150 60)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="11F00F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(170 50, 170 20, 240 20, 260 60)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="11F0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}]</desc>
+  <a>
+    LINESTRING(50 100, 140 190, 280 190)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}]</desc>
+  <a>
+    LINESTRING(140 60, 180 100, 290 100)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}]</desc>
+  <a>
+    LINESTRING(170 120, 210 80, 270 80)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}]</desc>
+  <a>
+    LINESTRING(170 120, 260 50)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F0F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(190 90, 190 270)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (190 190, 280 50, 100 50, 190 190))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(60 160, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (110 110, 250 100, 140 30, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(60 160, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 20 20, 360 20, 190 190), 
+      (250 100, 110 110, 140 30, 250 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(60 160, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 20 20, 360 20, 190 190), 
+      (250 100, 110 110, 140 30, 250 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(190 90, 190 190, 190 270)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (190 190, 280 50, 100 50, 190 190))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(60 160, 110 110, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (110 110, 250 100, 140 30, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(60 160, 110 110, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 20 20, 360 20, 190 190), 
+      (250 100, 110 110, 140 30, 250 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}]</desc>
+  <a>
+    LINESTRING(60 160, 110 110, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 110 110, 20 20, 360 20, 190 190), 
+      (250 100, 110 110, 140 30, 250 100))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}]</desc>
+  <a>
+    LINESTRING(130 110, 180 110, 190 60)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 240 200, 240 20, 20 20, 20 200), 
+      (130 110, 60 180, 60 40, 130 110), 
+      (130 110, 200 40, 200 180, 130 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 180 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 240 200, 240 20, 20 20, 20 200), 
+      (130 110, 60 180, 60 40, 130 110), 
+      (130 110, 200 40, 200 180, 130 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 180 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (60 180, 130 110, 60 40, 60 180), 
+      (130 110, 200 40, 200 180, 130 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 170 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (130 110, 60 40, 60 180, 130 110), 
+      (130 180, 130 40, 200 110, 130 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 130 110, 170 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (130 110, 60 40, 60 180, 130 110), 
+      (130 180, 130 40, 200 110, 130 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 130 110, 180 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 240 200, 240 20, 20 20, 20 200), 
+      (130 110, 60 180, 60 40, 130 110), 
+      (130 110, 200 40, 200 180, 130 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 130 110, 180 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (60 180, 130 110, 60 40, 60 180), 
+      (130 110, 200 40, 200 180, 130 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}]</desc>
+  <a>
+    LINESTRING(80 110, 130 110, 170 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 200, 20 20, 240 20, 240 200, 20 200), 
+      (130 110, 60 40, 60 180, 130 110), 
+      (130 180, 130 40, 200 110, 130 180))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}]</desc>
+  <a>
+    LINESTRING(160 70, 320 230)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}]</desc>
+  <a>
+    LINESTRING(160 70, 200 110, 280 190, 320 230)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (140 110, 260 110, 170 20, 50 20, 140 110)), 
+      (
+        (300 270, 420 270, 340 190, 220 190, 300 270)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP]</desc>
+  <a>
+    LINESTRING(70 50, 70 150)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (0 0, 0 100, 140 100, 140 0, 0 0)), 
+      (
+        (20 170, 70 100, 130 170, 20 170)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="10F0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 20 200, 200 200, 110 110)
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 200 20, 110 110, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}]</desc>
+  <a>
+    LINESTRING(150 70, 160 110, 200 60, 150 70)
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 200 20, 110 110, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}]</desc>
+  <a>
+    LINESTRING(80 60, 120 40, 120 70, 80 60)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 50 30, 170 30, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}]</desc>
+  <a>
+    LINESTRING(20 20, 200 20, 110 110, 20 20)
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 200 20, 110 110, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F1FFFF2F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}]</desc>
+  <a>
+    LINESTRING(110 90, 170 30, 50 30, 110 90)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 50 30, 170 30, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F1FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}]</desc>
+  <a>
+    LINESTRING(110 110, 170 50, 170 110, 110 110)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 50 30, 170 30, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F11FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}]</desc>
+  <a>
+    LINESTRING(110 90, 70 50, 130 50, 110 90)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 50 30, 170 30, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F11FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}]</desc>
+  <a>
+    LINESTRING(110 60, 20 150, 200 150, 110 60)
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 200 20, 110 110, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}]</desc>
+  <a>
+    LINESTRING(110 130, 110 70, 200 100, 110 130)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 50 30, 170 30, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(110 90, 160 40, 60 40, 110 90)
+  </a>
+  <b>
+    POLYGON(
+      (20 20, 200 20, 110 110, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(110 100, 40 30, 180 30, 110 100)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 60 40, 160 40, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 180 30, 40 30, 110 110)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 60 40, 160 40, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="10FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}]</desc>
+  <a>
+    LINESTRING(110 90, 180 30, 40 30, 110 90)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 60 40, 160 40, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="10FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}]</desc>
+  <a>
+    LINESTRING(110 90, 50 30, 180 30, 110 90)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110), 
+      (110 90, 60 40, 160 40, 110 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="11FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 200 200, 200 110, 110 200)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}]</desc>
+  <a>
+    LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F11F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}]</desc>
+  <a>
+    LINESTRING(110 110, 180 40, 110 40, 110 180)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="111F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}]</desc>
+  <a>
+    LINESTRING(110 60, 50 30, 170 30, 90 70)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}]</desc>
+  <a>
+    LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40)
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="11F00F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}]</desc>
+  <a>
+    LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90)
+  </a>
+  <b>
+    POLYGON(
+      (150 150, 410 150, 280 20, 20 20, 150 150), 
+      (170 120, 330 120, 260 50, 100 50, 170 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (200 200, 110 110, 20 210, 110 110))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (60 180, 60 110, 160 110, 110 110))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (200 200, 110 110, 20 200, 110 200, 110 110))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (110 50, 110 170, 110 70, 110 150, 200 150))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (50 110, 170 110, 110 170, 110 50, 110 170, 110 50))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (110 60, 110 160, 200 160))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (110 60, 110 160, 200 160))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}]</desc>
+  <a>
+    MULTILINESTRING(
+      (110 100, 40 30, 180 30), 
+      (170 30, 110 90, 50 30))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}]</desc>
+  <a>
+    MULTILINESTRING(
+      (110 110, 60 40, 70 20, 150 20, 170 40), 
+      (180 30, 40 30, 110 80))
+  </a>
+  <b>
+    POLYGON(
+      (110 110, 200 20, 20 20, 110 110))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="11F00F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110, 200 160), 
+      (110 110, 200 110, 200 70, 20 150))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 20 20, 200 20, 110 110)), 
+      (
+        (110 110, 20 200, 200 200, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 160, 70 110, 150 110, 200 160), 
+      (110 110, 20 110, 50 80, 70 110, 200 110))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 20 20, 200 20, 110 110)), 
+      (
+        (110 110, 20 200, 200 200, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 110, 200 110), 
+      (110 110, 20 170, 20 130, 200 90))
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 20 20, 200 20, 110 110)), 
+      (
+        (110 110, 20 200, 200 200, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00212">true</op>
+  </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelateLC.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelateLC.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelateLC.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,71 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>LC - topographically equal with no boundary</desc>
+  <a>
+    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 0 50), 
+      (0 50, 50 50), 
+      (50 50, 50 0), 
+      (50 0, 0 0))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LC - intersection (containment) along mod-2 A-Int line segment</desc>
+  <a>
+    LINESTRING(40 180, 140 180)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 320, 180 320, 180 180, 20 180, 20 320)), 
+      (
+        (20 180, 20 80, 180 80, 180 180, 20 180)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LC - intersection (overlap) along mod-2 A-Int line segment</desc>
+  <a>
+    LINESTRING(40 180, 140 180)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 320, 180 320, 180 180, 20 180, 20 320)), 
+      (
+        (60 180, 60 80, 180 80, 180 180, 60 180)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="11F00F212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LC - equal with boundary intersection</desc>
+  <a>
+    LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 60 0), 
+      (60 0, 120 0), 
+      (60 0, 60 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="10FF0FFF2">true</op>
+  </test>
+</case>
+
+</run>

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelateLL.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelateLL.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelateLL.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1948 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}]</desc>
+  <a>
+    LINESTRING(40 40, 120 120)
+  </a>
+  <b>
+    LINESTRING(40 40, 60 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(40 40, 120 120)
+  </a>
+  <b>
+    LINESTRING(60 240, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(40 40, 180 180)
+  </a>
+  <b>
+    LINESTRING(120 120, 20 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(40 40, 120 120)
+  </a>
+  <b>
+    LINESTRING(60 240, 120 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(40 40, 180 180)
+  </a>
+  <b>
+    LINESTRING(20 180, 140 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(40 40, 120 120)
+  </a>
+  <b>
+    LINESTRING(40 120, 120 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100)
+  </a>
+  <b>
+    LINESTRING(40 40, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100)
+  </a>
+  <b>
+    LINESTRING(100 100, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext}</desc>
+  <a>
+    LINESTRING(40 40, 120 120)
+  </a>
+  <b>
+    LINESTRING(40 120, 120 160)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(20 20, 180 180)
+  </a>
+  <b>
+    LINESTRING(20 20, 180 180)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(20 20, 180 180)
+  </a>
+  <b>
+    LINESTRING(20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101F00FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(20 20, 180 180)
+  </a>
+  <b>
+    LINESTRING(50 50, 140 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV]</desc>
+  <a>
+    LINESTRING(180 180, 40 40)
+  </a>
+  <b>
+    LINESTRING(120 120, 260 260)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP]</desc>
+  <a>
+    LINESTRING(40 40, 180 180)
+  </a>
+  <b>
+    LINESTRING(260 260, 120 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV]</desc>
+  <a>
+    LINESTRING(40 40, 180 180)
+  </a>
+  <b>
+    LINESTRING(120 120, 260 260)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(40 40, 20 100, 40 160, 20 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(20 200, 40 160, 20 100, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(80 240, 200 120, 100 100, 40 40)
+  </a>
+  <b>
+    LINESTRING(20 200, 40 160, 20 100, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices  [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(60 60, 60 230, 140 230, 250 160)
+  </a>
+  <b>
+    LINESTRING(20 20, 60 60, 250 160, 310 230)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10FF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices  [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(60 60, 60 230, 140 230, 250 160)
+  </a>
+  <b>
+    LINESTRING(20 20, 110 110, 200 110, 320 230)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10FF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(60 110, 60 250, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F0F1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}]</desc>
+  <a>
+    LINESTRING(60 110, 60 250, 360 210)
+  </a>
+  <b>
+    LINESTRING(360 210, 310 160, 110 160, 60 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F0F1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(160 160, 240 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(240 240, 160 160)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices  [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(60 60, 60 230, 140 230, 250 160)
+  </a>
+  <b>
+    LINESTRING(60 150, 110 100, 170 100, 110 230)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex  [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(60 60, 60 230, 140 230, 250 160)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(200 120, 200 190, 150 240, 200 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(200 240, 150 240, 200 200, 200 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices  [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(60 60, 60 230, 140 230, 250 160)
+  </a>
+  <b>
+    LINESTRING(60 230, 80 140, 120 140, 140 230)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(60 110, 200 110, 250 160, 300 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}]</desc>
+  <a>
+    LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1F0F1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(60 110, 220 110, 250 160, 280 110)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}]</desc>
+  <a>
+    LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1F0F1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(130 160, 160 110, 190 110, 230 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F100F102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}]</desc>
+  <a>
+    LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(110 160, 180 110, 250 160, 320 110)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(140 160, 180 80, 220 160, 250 80)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 130 190)
+  </a>
+  <b>
+    LINESTRING(20 130, 70 130, 160 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 130 190)
+  </a>
+  <b>
+    LINESTRING(40 160, 40 100, 110 40, 170 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-16: two LineStrings crossing at vertices for both LineString  [dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 130 190)
+  </a>
+  <b>
+    LINESTRING(30 140, 80 140, 100 100, 200 30)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}]</desc>
+  <a>
+    LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140)
+  </a>
+  <b>
+    LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, 
+    240 80, 300 80, 270 110, 200 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}]</desc>
+  <a>
+    LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, 
+    230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, 
+    80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, 
+    70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, 
+    40 190, 230 190, 20 200, 230 200)
+  </a>
+  <b>
+    LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, 
+    70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, 
+    120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, 
+    150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, 
+    190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="001FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(80 240, 200 120, 100 100, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(260 210, 240 130, 280 120, 260 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}]</desc>
+  <a>
+    LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150)
+  </a>
+  <b>
+    LINESTRING(140 130, 100 110, 120 60, 170 60)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(60 110, 110 160, 310 160, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </a>
+  <b>
+    LINESTRING(60 110, 110 160, 250 160)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101F00FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </a>
+  <b>
+    LINESTRING(110 160, 310 160, 340 190)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </a>
+  <b>
+    LINESTRING(140 160, 250 160, 310 160, 340 190)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}]</desc>
+  <a>
+    LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210)
+  </a>
+  <b>
+    LINESTRING(110 160, 250 160, 310 160)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0FF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(80 190, 140 140, 40 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(240 200, 200 260, 80 240, 140 180)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(140 180, 80 240, 200 260, 240 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1010F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(280 240, 240 140, 200 120, 80 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}]</desc>
+  <a>
+    LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140)
+  </a>
+  <b>
+    LINESTRING(20 80, 120 80, 200 80, 260 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(100 100, 200 120, 240 140, 280 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}]</desc>
+  <a>
+    LINESTRING(40 40, 100 100, 200 120, 80 240)
+  </a>
+  <b>
+    LINESTRING(280 240, 240 140, 200 120, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}]</desc>
+  <a>
+    LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140)
+  </a>
+  <b>
+    LINESTRING(80 20, 80 80, 240 80, 300 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}]</desc>
+  <a>
+    LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140)
+  </a>
+  <b>
+    LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, 
+    300 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(100 100, 20 180, 180 180)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(20 100, 180 100, 100 180)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(100 40, 100 160, 180 160)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(20 100, 100 100, 180 100, 100 180)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}]</desc>
+  <a>
+    LINESTRING(100 100, 160 40)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}]</desc>
+  <a>
+    LINESTRING(100 100, 180 20)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}]</desc>
+  <a>
+    LINESTRING(60 60, 100 100, 140 60)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}]</desc>
+  <a>
+    LINESTRING(100 100, 190 10, 190 100)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F10F01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}]</desc>
+  <a>
+    LINESTRING(100 100, 160 40, 160 100)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F10F01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}]</desc>
+  <a>
+    LINESTRING(60 140, 160 40, 160 140)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(80 80, 20 80, 140 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(80 80, 140 80, 80 20, 80 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(80 80, 20 80, 140 80, 80 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(20 140, 140 20, 100 20, 100 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 20 80, 140 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 20 80, 80 140, 80 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 20 80, 80 80, 140 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF01F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}]</desc>
+  <a>
+    LINESTRING(20 20, 140 140)
+  </a>
+  <b>
+    LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(130 150, 220 150, 220 240)
+  </a>
+  <b>
+    LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(30 150, 130 150, 250 150)
+  </a>
+  <b>
+    LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(30 150, 250 150)
+  </a>
+  <b>
+    LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(30 150, 130 150, 250 150)
+  </a>
+  <b>
+    LINESTRING(130 240, 130 20, 30 20, 130 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}]</desc>
+  <a>
+    LINESTRING(30 150, 250 150)
+  </a>
+  <b>
+    LINESTRING(120 240, 120 20, 20 20, 120 170)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}]</desc>
+  <a>
+    LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(110 110, 200 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    LINESTRING(20 110, 200 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV}</desc>
+  <a>
+    LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </a>
+  <b>
+    LINESTRING(20 110, 200 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}]</desc>
+  <a>
+    LINESTRING(90 200, 90 130, 110 110, 150 200)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}]</desc>
+  <a>
+    LINESTRING(200 110, 110 110, 90 130, 90 200)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx]</desc>
+  <a>
+    LINESTRING(80 80, 150 80, 210 80)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (20 20, 140 140), 
+      (20 140, 140 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(40 80, 160 200, 260 20, 40 80)
+  </a>
+  <b>
+    LINESTRING(40 80, 160 200, 260 20, 40 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(40 80, 160 200, 260 20, 40 80)
+  </a>
+  <b>
+    LINESTRING(40 80, 260 20, 160 200, 40 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(40 80, 160 200, 260 20, 40 80)
+  </a>
+  <b>
+    LINESTRING(260 20, 40 80, 160 200, 260 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(40 80, 160 200, 260 20, 40 80)
+  </a>
+  <b>
+    LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}]</desc>
+  <a>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </a>
+  <b>
+    LINESTRING(100 100, 180 180, 20 180, 100 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},]</desc>
+  <a>
+    LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150)
+  </a>
+  <b>
+    LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}]</desc>
+  <a>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </a>
+  <b>
+    LINESTRING(180 100, 20 100, 100 180, 180 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}]</desc>
+  <a>
+    LINESTRING(100 100, 180 20, 20 20, 100 100)
+  </a>
+  <b>
+    LINESTRING(180 180, 100 100, 20 180, 180 180)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}]</desc>
+  <a>
+    LINESTRING(20 180, 100 100, 20 20, 20 180)
+  </a>
+  <b>
+    LINESTRING(100 20, 100 180, 180 100, 100 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},]</desc>
+  <a>
+    LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150)
+  </a>
+  <b>
+    LINESTRING(170 20, 20 170, 170 170, 170 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}]</desc>
+  <a>
+    LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150)
+  </a>
+  <b>
+    LINESTRING(40 150, 150 150, 90 210, 40 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}]</desc>
+  <a>
+    LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150)
+  </a>
+  <b>
+    LINESTRING(20 150, 170 150, 90 230, 20 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}]</desc>
+  <a>
+    LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150)
+  </a>
+  <b>
+    LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}]</desc>
+  <a>
+    LINESTRING(110 110, 200 20, 20 20, 110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}]</desc>
+  <a>
+    LINESTRING(110 110, 200 20, 20 20, 110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    LINESTRING(110 110, 200 20, 20 20, 110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F01FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}]</desc>
+  <a>
+    LINESTRING(110 110, 200 20, 20 20, 110 110)
+  </a>
+  <b>
+    LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}]</desc>
+  <a>
+    LINESTRING(110 110, 200 20, 20 20, 110 110)
+  </a>
+  <b>
+    LINESTRING(200 20, 20 200, 200 200, 20 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="101FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}]</desc>
+  <a>
+    LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}]</desc>
+  <a>
+    LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120)
+  </a>
+  <b>
+    LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}]</desc>
+  <a>
+    LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110)
+  </a>
+  <b>
+    LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}]</desc>
+  <a>
+    LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200)
+  </a>
+  <b>
+    LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}]</desc>
+  <a>
+    LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}]</desc>
+  <a>
+    LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120)
+  </a>
+  <b>
+    LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (70 20, 20 90, 70 170), 
+      (70 170, 120 90, 70 20))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (70 20, 20 90, 70 170), 
+      (70 170, 120 90, 70 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-1-1: non-simple MultiLineString  [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 140, 90 60, 90 20), 
+      (170 20, 130 20, 20 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFF0FFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (170 60, 90 20, 20 60), 
+      (130 100, 130 60, 90 20, 50 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (170 60, 90 20, 20 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1F00102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (170 60, 90 20, 20 60), 
+      (130 100, 90 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (170 60, 90 20, 20 60), 
+      (120 100, 170 100, 90 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (170 60, 90 20, 20 60), 
+      (120 100, 170 100, 90 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (130 140, 130 60, 90 20, 20 90, 90 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 20, 170 20), 
+      (90 20, 90 80, 90 140))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (90 20, 170 100, 170 140), 
+      (170 60, 90 20, 20 60, 20 140, 90 20))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF10F0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 90, 20 160), 
+      (90 160, 90 20))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (160 160, 90 90, 160 20), 
+      (160 120, 120 120, 90 90, 160 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 90, 20 160), 
+      (90 160, 90 20))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (160 160, 90 90, 160 20), 
+      (160 120, 120 120, 90 90, 120 60, 160 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}]</desc>
+  <a>
+    MULTILINESTRING(
+      (20 20, 90 90, 20 160), 
+      (90 160, 90 20))
+  </a>
+  <b>
+    MULTILINESTRING(
+      (160 160, 90 90, 160 20), 
+      (160 120, 90 90, 160 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F1FF0102">true</op>
+  </test>
+</case>
+
+</run>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelatePA.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelatePA.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelatePA.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,622 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}]</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}]</desc>
+  <a>
+    POINT(70 170)
+  </a>
+  <b>
+    POLYGON(
+      (110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}]</desc>
+  <a>
+    POINT(110 130)
+  </a>
+  <b>
+    POLYGON(
+      (20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-2-4: dim(0){A.P.Int = B.A.Ext}</desc>
+  <a>
+    POINT(100 70)
+  </a>
+  <b>
+    POLYGON(
+      (20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}]</desc>
+  <a>
+    POINT(100 70)
+  </a>
+  <b>
+    POLYGON(
+      (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}]</desc>
+  <a>
+    POINT(60 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}]</desc>
+  <a>
+    POINT(110 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V]</desc>
+  <a>
+    POINT(160 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}]</desc>
+  <a>
+    POINT(100 150)
+  </a>
+  <b>
+    POLYGON(
+      (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}]</desc>
+  <a>
+    POINT(100 80)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}]</desc>
+  <a>
+    POINT(60 160)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}]</desc>
+  <a>
+    POINT(190 90)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}]</desc>
+  <a>
+    POINT(190 190)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}]</desc>
+  <a>
+    POINT(360 20)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}]</desc>
+  <a>
+    POINT(130 130)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}]</desc>
+  <a>
+    POINT(280 50)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}]</desc>
+  <a>
+    POINT(150 100)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}]</desc>
+  <a>
+    POINT(100 50)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}]</desc>
+  <a>
+    POINT(140 120)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}]</desc>
+  <a>
+    POINT(190 50)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (90 50, 150 110, 190 50, 90 50), 
+      (190 50, 230 110, 290 50, 190 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}]</desc>
+  <a>
+    POINT(180 90)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (180 140, 180 40, 80 40, 180 140), 
+      (180 90, 210 140, 310 40, 230 40, 180 90))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}]</desc>
+  <a>
+    MULTIPOINT(20 80, 110 160, 20 160)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}]</desc>
+  <a>
+    MULTIPOINT(20 80, 60 120, 20 160)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F00FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}]</desc>
+  <a>
+    MULTIPOINT(10 80, 110 170, 110 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F00FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}]</desc>
+  <a>
+    MULTIPOINT(10 80, 110 170, 160 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F00FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}]</desc>
+  <a>
+    MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F00FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}]</desc>
+  <a>
+    MULTIPOINT(60 120, 110 120, 160 120)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}]</desc>
+  <a>
+    MULTIPOINT(60 120, 160 120, 160 40, 60 40)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}]</desc>
+  <a>
+    MULTIPOINT(20 150, 60 120, 110 80)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="000FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}]</desc>
+  <a>
+    MULTIPOINT(110 80, 160 120, 200 160)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="000FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}]</desc>
+  <a>
+    MULTIPOINT(110 80, 110 120, 110 160)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="000FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}]</desc>
+  <a>
+    MULTIPOINT(110 170, 110 80)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}]</desc>
+  <a>
+    MULTIPOINT(60 120, 160 120, 110 80, 110 170)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="000FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int]</desc>
+  <a>
+    MULTIPOINT(90 80, 130 80)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}]</desc>
+  <a>
+    MULTIPOINT(60 120, 160 120, 110 80)
+  </a>
+  <b>
+    POLYGON(
+      (60 120, 60 40, 160 40, 160 120, 60 120))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="00FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}]</desc>
+  <a>
+    MULTIPOINT(40 170, 40 90, 130 170)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}]</desc>
+  <a>
+    MULTIPOINT(90 170, 280 170, 190 90)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}]</desc>
+  <a>
+    MULTIPOINT(190 110, 150 70, 230 70)
+  </a>
+  <b>
+    POLYGON(
+      (190 190, 360 20, 20 20, 190 190), 
+      (280 50, 100 50, 190 140, 280 50))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}]</desc>
+  <a>
+    POINT(100 100)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 100, 20 20, 100 20, 100 100, 20 100)), 
+      (
+        (100 180, 100 100, 180 100, 180 180, 100 180)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}]</desc>
+  <a>
+    POINT(20 100)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 100, 20 20, 100 20, 100 100, 20 100)), 
+      (
+        (100 180, 100 100, 180 100, 180 180, 100 180)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}]</desc>
+  <a>
+    POINT(60 100)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (20 100, 20 20, 100 20, 100 100, 20 100)), 
+      (
+        (100 180, 100 100, 180 100, 180 180, 100 180)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    MULTIPOLYGON(
+      (
+        (110 110, 20 200, 200 200, 110 110), 
+        (110 110, 80 180, 140 180, 110 110)), 
+      (
+        (110 110, 20 20, 200 20, 110 110), 
+        (110 110, 80 40, 140 40, 110 110)))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
+  </test>
+</case>
+
+</run>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelatePL.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelatePL.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelatePL.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,1283 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}]</desc>
+  <a>
+    POINT(110 200)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/L-3-1: a point touching the start point of a line  [dim(0){A.P.Int = B.L.Bdy.SP}]</desc>
+  <a>
+    POINT(90 80)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}]</desc>
+  <a>
+    POINT(340 240)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}]</desc>
+  <a>
+    POINT(230 150)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}]</desc>
+  <a>
+    POINT(160 150)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}]</desc>
+  <a>
+    POINT(90 150)
+  </a>
+  <b>
+    LINESTRING(150 150, 20 20, 280 20, 150 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/LR-2-2: a point inside a LinearRing  [dim(0){A.P.Int = B.LR.Ext}]</desc>
+  <a>
+    POINT(150 80)
+  </a>
+  <b>
+    LINESTRING(150 150, 20 20, 280 20, 150 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}]</desc>
+  <a>
+    POINT(150 150)
+  </a>
+  <b>
+    LINESTRING(150 150, 20 20, 280 20, 150 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}]</desc>
+  <a>
+    POINT(100 20)
+  </a>
+  <b>
+    LINESTRING(150 150, 20 20, 280 20, 150 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}]</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    LINESTRING(150 150, 20 20, 280 20, 150 150)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}]</desc>
+  <a>
+    POINT(220 220)
+  </a>
+  <b>
+    LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 220 20, 20 20, 220 220)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}]</desc>
+  <a>
+    POINT(110 20)
+  </a>
+  <b>
+    LINESTRING(110 110, 220 20, 20 20, 220 220)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}]</desc>
+  <a>
+    POINT(220 20)
+  </a>
+  <b>
+    LINESTRING(110 110, 220 20, 20 20, 220 220)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}]</desc>
+  <a>
+    POINT(110 20)
+  </a>
+  <b>
+    LINESTRING(220 220, 20 20, 220 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}]</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    LINESTRING(220 220, 20 20, 220 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}]</desc>
+  <a>
+    POINT(20 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}]</desc>
+  <a>
+    POINT(20 200)
+  </a>
+  <b>
+    LINESTRING(20 200, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}]</desc>
+  <a>
+    POINT(80 140)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 
+    20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 160)
+  </a>
+  <b>
+    LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(110 160)
+  </a>
+  <b>
+    LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}]</desc>
+  <a>
+    POINT(140 200)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}]</desc>
+  <a>
+    POINT(110 200)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}]</desc>
+  <a>
+    POINT(140 200)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}]</desc>
+  <a>
+    POINT(110 200)
+  </a>
+  <b>
+    LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, 
+    110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, 
+    110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 
+    90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 
+    90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}]</desc>
+  <a>
+    POINT(90 130)
+  </a>
+  <b>
+    LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}]</desc>
+  <a>
+    POINT(110 200)
+  </a>
+  <b>
+    LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}]</desc>
+  <a>
+    POINT(110 150)
+  </a>
+  <b>
+    LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}]</desc>
+  <a>
+    POINT(110 200)
+  </a>
+  <b>
+    LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}]</desc>
+  <a>
+    POINT(110 150)
+  </a>
+  <b>
+    LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}]</desc>
+  <a>
+    POINT(110 150)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}]</desc>
+  <a>
+    POINT(110 110)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}]</desc>
+  <a>
+    POINT(110 200)
+  </a>
+  <b>
+    LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}]</desc>
+  <a>
+    MULTIPOINT(50 250, 90 220, 130 190)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}]</desc>
+  <a>
+    MULTIPOINT(180 180, 230 130, 280 80)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}]</desc>
+  <a>
+    MULTIPOINT(50 120, 90 80, 130 40)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F00FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}]</desc>
+  <a>
+    MULTIPOINT(300 280, 340 240, 380 200)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="F00FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV]</desc>
+  <a>
+    MULTIPOINT(230 150, 260 120, 290 90)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV]</desc>
+  <a>
+    MULTIPOINT(200 190, 240 150, 270 110)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V]</desc>
+  <a>
+    MULTIPOINT(160 150, 190 120, 220 90)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V]</desc>
+  <a>
+    MULTIPOINT(120 190, 160 150, 200 110)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}]</desc>
+  <a>
+    MULTIPOINT(90 80, 160 150, 340 240)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="00FFFF1F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}]</desc>
+  <a>
+    MULTIPOINT(90 80, 160 150, 300 150)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="00FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
+  <a>
+    MULTIPOINT(90 80, 160 150, 240 150)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="00FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
+  <a>
+    MULTIPOINT(90 80, 130 120, 210 150)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="00FFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
+  <a>
+    MULTIPOINT(130 120, 210 150, 340 200)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
+  <a>
+    MULTIPOINT(160 150, 240 150, 340 210)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}]</desc>
+  <a>
+    MULTIPOINT(160 150, 300 150, 340 150)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF102">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}]</desc>
+  <a>
+    MULTIPOINT(160 150, 240 150, 340 240)
+  </a>
+  <b>
+    LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="00FFFF102">true</op>
+  </test>
+</case>
+
+</run>
\ No newline at end of file

Added: packages/jts/branches/upstream/current/testxml/validate/TestRelatePP.xml
===================================================================
--- packages/jts/branches/upstream/current/testxml/validate/TestRelatePP.xml	                        (rev 0)
+++ packages/jts/branches/upstream/current/testxml/validate/TestRelatePP.xml	2009-09-22 12:40:02 UTC (rev 2489)
@@ -0,0 +1,173 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>P/P: same point [dim(0){A.P.Int = B.P.Int}]</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    POINT(20 20)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/P: different point [dim(0){A.P.Int = B.P.Ext}]</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    POINT(40 60)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF0F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/mP: different points [dim(0){A.P.Int = B.3P.Ext}]</desc>
+  <a>
+    POINT(40 40)
+  </a>
+  <b>
+    MULTIPOINT(20 20, 80 80, 20 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF0F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}]</desc>
+  <a>
+    POINT(20 20)
+  </a>
+  <b>
+    MULTIPOINT(20 20, 80 80, 20 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFF0F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}]</desc>
+  <a>
+    MULTIPOINT(40 40, 80 60, 120 100)
+  </a>
+  <b>
+    MULTIPOINT(40 40, 80 60, 120 100)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}]</desc>
+  <a>
+    MULTIPOINT(40 40, 80 60, 120 100)
+  </a>
+  <b>
+    MULTIPOINT(40 40, 120 100, 80 60)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}]</desc>
+  <a>
+    MULTIPOINT(40 40, 60 100, 100 60, 120 120)
+  </a>
+  <b>
+    MULTIPOINT(20 120, 60 60, 100 100, 140 40)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF0FFF0F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}]</desc>
+  <a>
+    MULTIPOINT(20 20, 80 70, 140 120, 200 170)
+  </a>
+  <b>
+    MULTIPOINT(20 20, 80 70, 140 120, 200 170)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}]</desc>
+  <a>
+    MULTIPOINT(20 20, 140 120, 80 70, 200 170)
+  </a>
+  <b>
+    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}]</desc>
+  <a>
+    MULTIPOINT(20 20, 80 70, 140 120, 200 170)
+  </a>
+  <b>
+    MULTIPOINT(80 70, 140 120)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}]</desc>
+  <a>
+    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+  </a>
+  <b>
+    MULTIPOINT(140 120, 80 70)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}]</desc>
+  <a>
+    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+  </a>
+  <b>
+    MULTIPOINT(80 170, 140 120, 200 80)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF0F2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int}</desc>
+  <a>
+    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+  </a>
+  <b>
+    MULTIPOINT(80 170, 140 120, 200 80, 80 70)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="0F0FFF0F2">true</op>
+  </test>
+</case>
+
+</run>
\ No newline at end of file




More information about the Pkg-grass-devel mailing list